diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..1fb2bc7
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/**|com/ibm/icu/dev/eclipse/|com/ibm/icu/dev/tool/docs/" kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/Java5"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>
diff --git a/.externalToolBuilders/icu4j_Resources.launch b/.externalToolBuilders/icu4j_Resources.launch
new file mode 100644
index 0000000..4e3cd7a
--- /dev/null
+++ b/.externalToolBuilders/icu4j_Resources.launch
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="resources,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="resources,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/icu4j}"/>
+</launchConfiguration>
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..2919578
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,249 @@
+* text=auto !eol
+
+*.c text !eol
+*.cc text !eol
+*.classpath text !eol
+*.cpp text !eol
+*.css text !eol
+*.dsp text !eol
+*.dsw text !eol
+*.filters text !eol
+*.h text !eol
+*.htm text !eol
+*.html text !eol
+*.in text !eol
+*.java text !eol
+*.launch text !eol
+*.mak text !eol
+*.md text !eol
+*.MF text !eol
+*.mk text !eol
+*.pl text !eol
+*.pm text !eol
+*.project text !eol
+*.properties text !eol
+*.py text !eol
+*.rc text !eol
+*.sh text eol=lf
+*.sln text !eol
+*.stub text !eol
+*.txt text !eol
+*.ucm text !eol
+*.vcproj text !eol
+*.vcxproj text !eol
+*.xml text !eol
+*.xsl text !eol
+*.xslt text !eol
+Makefile text !eol
+configure text !eol
+LICENSE text !eol
+README text !eol
+
+*.bin -text
+*.brk -text
+*.cnv -text
+*.icu -text
+*.res -text
+*.nrm -text
+*.spp -text
+*.tri2 -text
+
+/.classpath -text
+/.project -text
+/eclipseFragment.txt -text
+eclipseProjectMisc/initSrc.launch -text
+eclipseProjectMisc/normSrc.launch -text
+/ee.foundation.jar -text
+localespi/.classpath -text
+localespi/.externalToolBuilders/localespi_jar.launch -text
+localespi/.project -text
+localespi/.settings/org.eclipse.core.resources.prefs -text
+localespi/.settings/org.eclipse.jdt.core.prefs -text
+localespi/.settings/org.eclipse.jdt.ui.prefs -text
+localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider -text
+localespi/src/META-INF/services/java.text.spi.CollatorProvider -text
+localespi/src/META-INF/services/java.text.spi.DateFormatProvider -text
+localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider -text
+localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider -text
+localespi/src/META-INF/services/java.text.spi.NumberFormatProvider -text
+localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider -text
+localespi/src/META-INF/services/java.util.spi.LocaleNameProvider -text
+localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider -text
+localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties -text
+/preprocessor.txt -text
+src/com/ibm/icu/dev/data/rbbi/english.dict -text
+src/com/ibm/icu/dev/data/testdata.jar -text
+src/com/ibm/icu/dev/data/thai6.ucs -text
+src/com/ibm/icu/dev/eclipse/misc/ICUConfig.properties -text
+src/com/ibm/icu/dev/test/duration/RegressionTest.java -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSH.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSR.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt -text
+src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt -text
+src/com/ibm/icu/dev/test/rbbi/rbbitst.txt -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat -text
+src/com/ibm/icu/dev/tool/docs/icu4j28.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j30.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j32.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j34.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j341.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j342.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j343.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j36.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j38.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j381.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j400.api.gz -text
+src/com/ibm/icu/dev/tool/docs/icu4j401.api.gz -text
+src/com/ibm/icu/dev/tool/tzu/icu.gif -text
+src/com/ibm/icu/impl/data/icudata.jar -text
+src/com/ibm/icu/text/CurrencyPluralInfo.java -text
+src/com/ibm/richtext/textapps/resources/unicode.arabic.red -text
+src/com/ibm/richtext/textapps/resources/unicode.hebrew.red -text
+
+# The following file types are stored in Git-LFS.
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.dat filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b8d1806
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+/*.jar
+/.clover
+/classes
+/classes.wrapper
+/doc
diff --git a/.project b/.project
new file mode 100644
index 0000000..1a303d7
--- /dev/null
+++ b/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>LaunchConfigHandle</key>
+					<value>&lt;project&gt;/.externalToolBuilders/icu4j_Resources.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..c961391
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,4 @@
+#Mon Dec 17 14:42:45 PST 2007
+eclipse.preferences.version=1
+encoding//src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt=UTF-8
+encoding/<project>=US-ASCII
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2ca9d5c
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,329 @@
+#Thu Jul 17 14:46:50 EDT 2008
+eclipse.preferences.version=1
+instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.3
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=1
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=80
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..691a0c0
--- /dev/null
+++ b/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,11 @@
+#Thu Jul 17 14:46:50 EDT 2008
+eclipse.preferences.version=1
+formatter_profile=_ICU4J standard
+formatter_settings_version=11
+instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=false
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n *******************************************************************************\r\n * Copyright (C) ${year}, International Business Machines Corporation and         *\r\n * others. All Rights Reserved.                                                *\r\n *******************************************************************************\r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/APIChangeReport.html b/APIChangeReport.html
new file mode 100644
index 0000000..3c810b5
--- /dev/null
+++ b/APIChangeReport.html
@@ -0,0 +1,577 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>ICU4J API Comparison: ICU4J 3.8.1 with ICU4J 4.0</title>
+<!-- Copyright 2008, IBM, All Rights Reserved. -->
+</head>
+<body>
+<h1>ICU4J API Comparison: ICU4J 3.8.1 with ICU4J 4.0</h1>
+
+<hr/>
+<h2>Removed from ICU4J 3.8.1</h2>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+DateTimePatternGenerator.FormatParser
+<ul>
+<li><span style='color:red'>*internal*  </span>public java.util.List <i>getAutoPatterns</i>(java.lang.String, java.util.List)</li>
+<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getVariableFieldString</i>()</li>
+</ul>
+PluralFormat
+<ul>
+<li>(draft)      public final java.lang.String <i>format</i>(long)</li>
+</ul>
+PluralRules
+<ul>
+<li>(draft)      public java.lang.String <i>select</i>(long)</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+CopticCalendar
+<ul>
+<li><span style='color:red'>*internal*  </span>public static java.lang.Integer[] <i>getDateFromJD</i>(int)</li>
+</ul>
+EthiopicCalendar
+<ul>
+<li><span style='color:red'>*internal*  </span>public static java.lang.Integer[] <i>getDateFromJD</i>(int)</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Withdrawn, Deprecated, or Obsoleted in ICU4J 4.0</h2>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+DateFormatSymbols
+<ul>
+<li>(deprecated) public static java.util.ResourceBundle <i>getDateFormatBundle</i>(Calendar, ULocale)</li>
+<li>(deprecated) public static java.util.ResourceBundle <i>getDateFormatBundle</i>(Calendar, java.util.Locale)</li>
+<li>(deprecated) public static java.util.ResourceBundle <i>getDateFormatBundle</i>(java.lang.Class, ULocale)</li>
+<li>(deprecated) public static java.util.ResourceBundle <i>getDateFormatBundle</i>(java.lang.Class, java.util.Locale)</li>
+<li><span style='color:red'>*internal*  </span>protected void <i>initializeData</i>(ULocale, CalendarData)</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Changed in ICU4J 4.0 (old, new)</h2>
+<p>(no API changed)</p>
+
+<hr/>
+<h2>Promoted to stable in ICU4J 4.0</h2>
+
+<h3>Package com.ibm.icu.lang</h3>
+<ul>
+UCharacter
+<ul>
+<li>(stable)     public static final int TITLECASE_NO_BREAK_ADJUSTMENT</li>
+<li>(stable)     public static final int TITLECASE_NO_LOWERCASE</li>
+<li>(stable)     public static java.lang.String <i>getName</i>(java.lang.String, java.lang.String)</li>
+<li>(stable)     public static java.lang.String <i>toTitleCase</i>(ULocale, java.lang.String, BreakIterator, int)</li>
+</ul>
+UCharacter.UnicodeBlock
+<ul>
+<li>(stable)     public static final UCharacter.UnicodeBlock BALINESE</li>
+<li>(stable)     public static final int BALINESE_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock COUNTING_ROD_NUMERALS</li>
+<li>(stable)     public static final int COUNTING_ROD_NUMERALS_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock CUNEIFORM</li>
+<li>(stable)     public static final int CUNEIFORM_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION</li>
+<li>(stable)     public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock LATIN_EXTENDED_C</li>
+<li>(stable)     public static final int LATIN_EXTENDED_C_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock LATIN_EXTENDED_D</li>
+<li>(stable)     public static final int LATIN_EXTENDED_D_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock NKO</li>
+<li>(stable)     public static final int NKO_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock PHAGS_PA</li>
+<li>(stable)     public static final int PHAGS_PA_ID</li>
+<li>(stable)     public static final UCharacter.UnicodeBlock PHOENICIAN</li>
+<li>(stable)     public static final int PHOENICIAN_ID</li>
+</ul>
+UScript
+<ul>
+<li>(stable)     public static final int BALINESE</li>
+<li>(stable)     public static final int BATAK</li>
+<li>(stable)     public static final int BLISSYMBOLS</li>
+<li>(stable)     public static final int BRAHMI</li>
+<li>(stable)     public static final int CARIAN</li>
+<li>(stable)     public static final int CHAM</li>
+<li>(stable)     public static final int CIRTH</li>
+<li>(stable)     public static final int CUNEIFORM</li>
+<li>(stable)     public static final int DEMOTIC_EGYPTIAN</li>
+<li>(stable)     public static final int EASTERN_SYRIAC</li>
+<li>(stable)     public static final int EGYPTIAN_HIEROGLYPHS</li>
+<li>(stable)     public static final int ESTRANGELO_SYRIAC</li>
+<li>(stable)     public static final int HARAPPAN_INDUS</li>
+<li>(stable)     public static final int HIERATIC_EGYPTIAN</li>
+<li>(stable)     public static final int JAPANESE</li>
+<li>(stable)     public static final int JAVANESE</li>
+<li>(stable)     public static final int KAYAH_LI</li>
+<li>(stable)     public static final int KHUTSURI</li>
+<li>(stable)     public static final int LANNA</li>
+<li>(stable)     public static final int LATIN_FRAKTUR</li>
+<li>(stable)     public static final int LATIN_GAELIC</li>
+<li>(stable)     public static final int LEPCHA</li>
+<li>(stable)     public static final int LINEAR_A</li>
+<li>(stable)     public static final int LYCIAN</li>
+<li>(stable)     public static final int LYDIAN</li>
+<li>(stable)     public static final int MANDAEAN</li>
+<li>(stable)     public static final int MAYAN_HIEROGLYPHS</li>
+<li>(stable)     public static final int MEITEI_MAYEK</li>
+<li>(stable)     public static final int MEROITIC</li>
+<li>(stable)     public static final int MOON</li>
+<li>(stable)     public static final int NKO</li>
+<li>(stable)     public static final int OLD_CHURCH_SLAVONIC_CYRILLIC</li>
+<li>(stable)     public static final int OLD_HUNGARIAN</li>
+<li>(stable)     public static final int OLD_PERMIC</li>
+<li>(stable)     public static final int OL_CHIKI</li>
+<li>(stable)     public static final int ORKHON</li>
+<li>(stable)     public static final int PAHAWH_HMONG</li>
+<li>(stable)     public static final int PHAGS_PA</li>
+<li>(stable)     public static final int PHOENICIAN</li>
+<li>(stable)     public static final int PHONETIC_POLLARD</li>
+<li>(stable)     public static final int REJANG</li>
+<li>(stable)     public static final int RONGORONGO</li>
+<li>(stable)     public static final int SARATI</li>
+<li>(stable)     public static final int SAURASHTRA</li>
+<li>(stable)     public static final int SIGN_WRITING</li>
+<li>(stable)     public static final int SIMPLIFIED_HAN</li>
+<li>(stable)     public static final int SUNDANESE</li>
+<li>(stable)     public static final int TENGWAR</li>
+<li>(stable)     public static final int TRADITIONAL_HAN</li>
+<li>(stable)     public static final int UNKNOWN</li>
+<li>(stable)     public static final int UNWRITTEN_LANGUAGES</li>
+<li>(stable)     public static final int VAI</li>
+<li>(stable)     public static final int VISIBLE_SPEECH</li>
+<li>(stable)     public static final int WESTERN_SYRIAC</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+<li>(stable)     public class <i>DateTimePatternGenerator</i></li>
+<li>(stable)     public static final class <i>DateTimePatternGenerator.PatternInfo</i></li>
+<li>(stable)     public interface <i>StringTransform</i></li>
+ArabicShapingException
+<ul>
+<li>(stable)     public <i>ArabicShapingException</i>(java.lang.String)</li>
+</ul>
+DateFormat
+<ul>
+<li>(stable)     public static final int NONE</li>
+<li>(stable)     public static final int QUARTER_FIELD</li>
+<li>(stable)     public static final int STANDALONE_QUARTER_FIELD</li>
+<li>(stable)     public static final DateFormat <i>getDateTimeInstance</i>(int, int, ULocale)</li>
+<li>(stable)     public static final DateFormat <i>getInstance</i>(Calendar, ULocale)</li>
+</ul>
+DateFormat.Field
+<ul>
+<li>(stable)     public static final DateFormat.Field QUARTER</li>
+</ul>
+DateFormatSymbols
+<ul>
+<li>(stable)     public static final int ABBREVIATED</li>
+<li>(stable)     public static final int FORMAT</li>
+<li>(stable)     public static final int NARROW</li>
+<li>(stable)     public static final int STANDALONE</li>
+<li>(stable)     public static final int WIDE</li>
+<li>(stable)     public java.lang.String[] <i>getQuarters</i>(int, int)</li>
+<li>(stable)     public void <i>setQuarters</i>(java.lang.String[], int, int)</li>
+</ul>
+DecimalFormatSymbols
+<ul>
+<li>(stable)     public char <i>getMonetaryGroupingSeparator</i>()</li>
+<li>(stable)     public void <i>setMonetaryGroupingSeparator</i>(char)</li>
+</ul>
+MessageFormat
+<ul>
+<li>(stable)     public static java.lang.String <i>format</i>(java.lang.String, java.util.Map)</li>
+<li>(stable)     public final java.lang.StringBuffer <i>format</i>(java.util.Map, java.lang.StringBuffer, java.text.FieldPosition)</li>
+<li>(stable)     public java.util.Map <i>parseToMap</i>(java.lang.String)</li>
+<li>(stable)     public java.util.Map <i>parseToMap</i>(java.lang.String, java.text.ParsePosition)</li>
+<li>(stable)     public void <i>setFormatByArgumentName</i>(java.lang.String, java.text.Format)</li>
+<li>(stable)     public void <i>setFormatsByArgumentName</i>(java.util.Map)</li>
+<li>(stable)     public boolean <i>usesNamedArguments</i>()</li>
+</ul>
+Normalizer
+<ul>
+<li>(stable)     public static int <i>getFC_NFKC_Closure</i>(int, char[])</li>
+<li>(stable)     public static java.lang.String <i>getFC_NFKC_Closure</i>(int)</li>
+</ul>
+NumberFormat
+<ul>
+<li>(stable)     public boolean <i>isParseStrict</i>()</li>
+<li>(stable)     public void <i>setParseStrict</i>(boolean)</li>
+</ul>
+StringPrepParseException
+<ul>
+<li>(stable)     public static final int DOMAIN_NAME_TOO_LONG_ERROR</li>
+<li>(stable)     public int <i>getError</i>()</li>
+</ul>
+Transliterator
+<ul>
+<li>(stable)     public java.lang.String <i>transform</i>(java.lang.String)</li>
+</ul>
+UnicodeSet
+<ul>
+<li>(stable)     public static final int CASE</li>
+<li>(stable)     public static final int IGNORE_SPACE</li>
+<li>(stable)     public <i>UnicodeSet</i>(java.lang.String, int)</li>
+<li>(stable)     public java.lang.StringBuffer <i>_generatePattern</i>(java.lang.StringBuffer, boolean, boolean)</li>
+<li>(stable)     public UnicodeSet <i>applyPattern</i>(java.lang.String, int)</li>
+<li>(stable)     public java.lang.Object <i>cloneAsThawed</i>()</li>
+<li>(stable)     public UnicodeSet <i>closeOver</i>(int)</li>
+<li>(stable)     public java.lang.Object <i>freeze</i>()</li>
+<li>(stable)     public boolean <i>isFrozen</i>()</li>
+</ul>
+UnicodeSetIterator
+<ul>
+<li>(draft)      public java.lang.String <i>getString</i>()</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+<li>(stable)     public class <i>AnnualTimeZoneRule</i></li>
+<li>(stable)     public abstract class <i>BasicTimeZone</i></li>
+<li>(stable)     public class <i>DateTimeRule</i></li>
+<li>(stable)     public class <i>IndianCalendar</i></li>
+<li>(stable)     public class <i>InitialTimeZoneRule</i></li>
+<li>(stable)     public class <i>RuleBasedTimeZone</i></li>
+<li>(stable)     public class <i>TaiwanCalendar</i></li>
+<li>(stable)     public class <i>TimeArrayTimeZoneRule</i></li>
+<li>(stable)     public abstract class <i>TimeZoneRule</i></li>
+<li>(stable)     public class <i>TimeZoneTransition</i></li>
+<li>(stable)     public class <i>UResourceBundleIterator</i></li>
+<li>(stable)     public class <i>VTimeZone</i></li>
+BuddhistCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+ByteArrayWrapper
+<ul>
+<li>(stable)     public <i>ByteArrayWrapper</i>(byte[], int)</li>
+<li>(stable)     public <i>ByteArrayWrapper</i>(java.nio.ByteBuffer)</li>
+<li>(stable)     public final ByteArrayWrapper <i>append</i>(byte[], int, int)</li>
+<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
+<li>(stable)     public ByteArrayWrapper <i>ensureCapacity</i>(int)</li>
+<li>(stable)     public boolean <i>equals</i>(java.lang.Object)</li>
+<li>(stable)     public int <i>hashCode</i>()</li>
+<li>(stable)     public final ByteArrayWrapper <i>set</i>(byte[], int, int)</li>
+<li>(stable)     public java.lang.String <i>toString</i>()</li>
+</ul>
+Calendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+ChineseCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+CopticCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+EthiopicCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+GregorianCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+HebrewCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+IslamicCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+JapaneseCalendar
+<ul>
+<li>(stable)     public java.lang.String <i>getType</i>()</li>
+</ul>
+SimpleTimeZone
+<ul>
+<li>(stable)     public TimeZoneTransition <i>getNextTransition</i>(long, boolean)</li>
+<li>(stable)     public TimeZoneTransition <i>getPreviousTransition</i>(long, boolean)</li>
+<li>(stable)     public TimeZoneRule[] <i>getTimeZoneRules</i>()</li>
+</ul>
+TimeZone
+<ul>
+<li>(stable)     public static synchronized java.lang.String <i>getTZDataVersion</i>()</li>
+</ul>
+UResourceBundle
+<ul>
+<li>(stable)     public static final int ARRAY</li>
+<li>(stable)     public static final int BINARY</li>
+<li>(stable)     public static final int INT</li>
+<li>(stable)     public static final int INT_VECTOR</li>
+<li>(stable)     public static final int NONE</li>
+<li>(stable)     public static final int STRING</li>
+<li>(stable)     public static final int TABLE</li>
+<li>(stable)     public UResourceBundle <i>get</i>(int)</li>
+<li>(stable)     public UResourceBundle <i>get</i>(java.lang.String)</li>
+<li>(stable)     public byte[] <i>getBinary</i>(byte[])</li>
+<li>(stable)     public java.nio.ByteBuffer <i>getBinary</i>()</li>
+<li>(stable)     public static UResourceBundle <i>getBundleInstance</i>(java.lang.String, ULocale, java.lang.ClassLoader)</li>
+<li>(stable)     public static UResourceBundle <i>getBundleInstance</i>(java.lang.String, java.util.Locale, java.lang.ClassLoader)</li>
+<li>(stable)     public int <i>getInt</i>()</li>
+<li>(stable)     public int[] <i>getIntVector</i>()</li>
+<li>(stable)     public UResourceBundleIterator <i>getIterator</i>()</li>
+<li>(stable)     public java.lang.String <i>getKey</i>()</li>
+<li>(stable)     public java.util.Enumeration <i>getKeys</i>()</li>
+<li>(stable)     public int <i>getSize</i>()</li>
+<li>(stable)     public java.lang.String <i>getString</i>()</li>
+<li>(stable)     public java.lang.String <i>getString</i>(int)</li>
+<li>(stable)     public java.lang.String[] <i>getStringArray</i>()</li>
+<li>(stable)     public int <i>getType</i>()</li>
+<li>(stable)     public int <i>getUInt</i>()</li>
+<li>(stable)     public VersionInfo <i>getVersion</i>()</li>
+<li>(stable)     protected UResourceBundle <i>handleGet</i>(int, java.util.HashMap, UResourceBundle)</li>
+<li>(stable)     protected UResourceBundle <i>handleGet</i>(java.lang.String, java.util.HashMap, UResourceBundle)</li>
+<li>(stable)     protected java.util.Enumeration <i>handleGetKeys</i>()</li>
+<li>(stable)     protected java.lang.Object <i>handleGetObject</i>(java.lang.String)</li>
+<li>(stable)     protected java.lang.String[] <i>handleGetStringArray</i>()</li>
+</ul>
+UniversalTimeScale
+<ul>
+<li>(stable)     public static final int UNIX_MICROSECONDS_TIME</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Added in ICU4J 4.0</h2>
+
+<h3>Package com.ibm.icu.lang</h3>
+<ul>
+UCharacter.GraphemeClusterBreak
+<ul>
+<li>(stable)     public static final int PREPEND</li>
+<li>(stable)     public static final int SPACING_MARK</li>
+</ul>
+UCharacter.JoiningGroup
+<ul>
+<li>(stable)     public static final int BURUSHASKI_YEH_BARREE</li>
+</ul>
+UCharacter.SentenceBreak
+<ul>
+<li>(stable)     public static final int CR</li>
+<li>(stable)     public static final int EXTEND</li>
+<li>(stable)     public static final int LF</li>
+<li>(stable)     public static final int SCONTINUE</li>
+</ul>
+UCharacter.UnicodeBlock
+<ul>
+<li>(draft)      public static final UCharacter.UnicodeBlock ANCIENT_SYMBOLS</li>
+<li>(draft)      public static final int ANCIENT_SYMBOLS_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock CARIAN</li>
+<li>(draft)      public static final int CARIAN_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock CHAM</li>
+<li>(draft)      public static final int CHAM_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock CYRILLIC_EXTENDED_A</li>
+<li>(draft)      public static final int CYRILLIC_EXTENDED_A_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock CYRILLIC_EXTENDED_B</li>
+<li>(draft)      public static final int CYRILLIC_EXTENDED_B_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock DOMINO_TILES</li>
+<li>(draft)      public static final int DOMINO_TILES_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock KAYAH_LI</li>
+<li>(draft)      public static final int KAYAH_LI_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock LEPCHA</li>
+<li>(draft)      public static final int LEPCHA_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock LYCIAN</li>
+<li>(draft)      public static final int LYCIAN_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock LYDIAN</li>
+<li>(draft)      public static final int LYDIAN_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock MAHJONG_TILES</li>
+<li>(draft)      public static final int MAHJONG_TILES_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock OL_CHIKI</li>
+<li>(draft)      public static final int OL_CHIKI_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock PHAISTOS_DISC</li>
+<li>(draft)      public static final int PHAISTOS_DISC_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock REJANG</li>
+<li>(draft)      public static final int REJANG_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock SAURASHTRA</li>
+<li>(draft)      public static final int SAURASHTRA_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock SUNDANESE</li>
+<li>(draft)      public static final int SUNDANESE_ID</li>
+<li>(draft)      public static final UCharacter.UnicodeBlock VAI</li>
+<li>(draft)      public static final int VAI_ID</li>
+</ul>
+UCharacter.WordBreak
+<ul>
+<li>(stable)     public static final int CR</li>
+<li>(stable)     public static final int EXTEND</li>
+<li>(stable)     public static final int LF</li>
+<li>(stable)     public static final int MIDNUMLET</li>
+<li>(stable)     public static final int NEWLINE</li>
+</ul>
+UScript
+<ul>
+<li>(draft)      public static final int AVESTAN</li>
+<li>(draft)      public static final int BOOK_PAHLAVI</li>
+<li>(draft)      public static final int CHAKMA</li>
+<li>(draft)      public static final int IMPERIAL_ARAMAIC</li>
+<li>(draft)      public static final int INSCRIPTIONAL_PAHLAVI</li>
+<li>(draft)      public static final int INSCRIPTIONAL_PARTHIAN</li>
+<li>(draft)      public static final int KAITHI</li>
+<li>(draft)      public static final int KOREAN</li>
+<li>(draft)      public static final int MANICHAEAN</li>
+<li>(draft)      public static final int MATHEMATICAL_NOTATION</li>
+<li>(draft)      public static final int PSALTER_PAHLAVI</li>
+<li>(draft)      public static final int SAMARITAN</li>
+<li>(draft)      public static final int SYMBOLS</li>
+<li>(draft)      public static final int TAI_VIET</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+<li>(draft)      public class <i>DateIntervalFormat</i></li>
+<li>(draft)      public class <i>DateIntervalInfo</i></li>
+<li>(draft)      public static final class <i>DateIntervalInfo.PatternInfo</i></li>
+<li>(draft)      public class <i>TimeUnitFormat</i></li>
+DateFormat
+<ul>
+<li>(draft)      public static final java.lang.String ABBR_MONTH</li>
+<li>(draft)      public static final java.lang.String ABBR_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String ABBR_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String ABBR_STANDALONE_MONTH</li>
+<li>(draft)      public static final java.lang.String DAY</li>
+<li>(draft)      public static final java.lang.String HOUR</li>
+<li>(draft)      public static final java.lang.String HOUR24_MINUTE</li>
+<li>(draft)      public static final java.lang.String HOUR24_MINUTE_SECOND</li>
+<li>(draft)      public static final java.lang.String HOUR_GENERIC_TZ</li>
+<li>(draft)      public static final java.lang.String HOUR_MINUTE</li>
+<li>(draft)      public static final java.lang.String HOUR_MINUTE_GENERIC_TZ</li>
+<li>(draft)      public static final java.lang.String HOUR_MINUTE_SECOND</li>
+<li>(draft)      public static final java.lang.String HOUR_MINUTE_TZ</li>
+<li>(draft)      public static final java.lang.String HOUR_TZ</li>
+<li>(draft)      public static final java.lang.String MINUTE_SECOND</li>
+<li>(draft)      public static final java.lang.String MONTH</li>
+<li>(draft)      public static final java.lang.String MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String NUM_MONTH</li>
+<li>(draft)      public static final java.lang.String NUM_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String NUM_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String STANDALONE_MONTH</li>
+<li>(draft)      public static final java.lang.String YEAR</li>
+<li>(draft)      public static final java.lang.String YEAR_ABBR_MONTH</li>
+<li>(draft)      public static final java.lang.String YEAR_ABBR_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_ABBR_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_ABBR_QUARTER</li>
+<li>(draft)      public static final java.lang.String YEAR_MONTH</li>
+<li>(draft)      public static final java.lang.String YEAR_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_NUM_MONTH</li>
+<li>(draft)      public static final java.lang.String YEAR_NUM_MONTH_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_NUM_MONTH_WEEKDAY_DAY</li>
+<li>(draft)      public static final java.lang.String YEAR_QUARTER</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(Calendar, java.lang.String, ULocale)</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(Calendar, java.lang.String, java.util.Locale)</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(java.lang.String)</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(java.lang.String, ULocale)</li>
+<li>(draft)      public static final DateFormat <i>getPatternInstance</i>(java.lang.String, java.util.Locale)</li>
+</ul>
+DateTimePatternGenerator.FormatParser
+<ul>
+<li><span style='color:red'>*internal*  </span>public DateTimePatternGenerator.FormatParser <i>set</i>(java.lang.String, boolean)</li>
+</ul>
+DateTimePatternGenerator.VariableField
+<ul>
+<li><span style='color:red'>*internal*  </span>public <i>DateTimePatternGenerator.VariableField</i>(java.lang.String, boolean)</li>
+<li><span style='color:red'>*internal*  </span>public int <i>getType</i>()</li>
+</ul>
+DictionaryBasedBreakIterator
+<ul>
+<li><span style='color:red'>*internal*  </span>protected <i>DictionaryBasedBreakIterator</i>(java.io.InputStream)</li>
+</ul>
+NumberFormat
+<ul>
+<li>(draft)      public int <i>getRoundingMode</i>()</li>
+<li>(draft)      public void <i>setRoundingMode</i>(int)</li>
+</ul>
+PluralFormat
+<ul>
+<li>(draft)      public final java.lang.String <i>format</i>(double)</li>
+</ul>
+PluralRules
+<ul>
+<li>(draft)      public java.lang.String <i>select</i>(double)</li>
+</ul>
+SimpleDateFormat
+<ul>
+<li><span style='color:red'>*internal*  </span>public final java.lang.StringBuffer <i>intervalFormatByAlgorithm</i>(Calendar, Calendar, java.lang.StringBuffer, java.text.FieldPosition)</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+<li>(draft)      public final class <i>DateInterval</i></li>
+<li>(draft)      public class <i>TimeUnit</i></li>
+<li>(draft)      public class <i>TimeUnitAmount</i></li>
+ChineseCalendar
+<ul>
+<li>(draft)      public <i>ChineseCalendar</i>(TimeZone)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(ULocale)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(int, int, int, int)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(int, int, int, int, int, int, int)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(java.util.Date)</li>
+<li>(draft)      public <i>ChineseCalendar</i>(java.util.Locale)</li>
+</ul>
+CopticCalendar
+<ul>
+<li><span style='color:red'>*internal*  </span>protected int <i>getJDEpochOffset</i>()</li>
+<li><span style='color:red'>*internal*  </span>protected void <i>handleComputeFields</i>(int)</li>
+<li><span style='color:red'>*internal*  </span>protected int <i>handleGetExtendedYear</i>()</li>
+</ul>
+Currency
+<ul>
+<li>(draft)      public static java.lang.String[] <i>getAvailableCurrencyCodes</i>(ULocale, java.util.Date)</li>
+</ul>
+EthiopicCalendar
+<ul>
+<li><span style='color:red'>*internal*  </span>protected int <i>getJDEpochOffset</i>()</li>
+<li><span style='color:red'>*internal*  </span>protected void <i>handleComputeFields</i>(int)</li>
+<li><span style='color:red'>*internal*  </span>protected int <i>handleGetExtendedYear</i>()</li>
+<li><span style='color:red'>*internal*  </span>protected int <i>handleGetLimit</i>(int, int)</li>
+</ul>
+JapaneseCalendar
+<ul>
+<li>(draft)      public int <i>getActualMaximum</i>(int)</li>
+</ul>
+Measure
+<ul>
+<li>(draft)      public static boolean <i>numbersEqual</i>(java.lang.Number, java.lang.Number)</li>
+</ul>
+TimeZone
+<ul>
+<li>(draft)      public static final int TIMEZONE_ICU</li>
+<li>(draft)      public static final int TIMEZONE_JDK</li>
+<li>(draft)      public static java.lang.String <i>getCanonicalID</i>(java.lang.String)</li>
+<li>(draft)      public static java.lang.String <i>getCanonicalID</i>(java.lang.String, boolean[])</li>
+<li>(draft)      public static int <i>getDefaultTimeZoneType</i>()</li>
+<li>(draft)      public static synchronized TimeZone <i>getTimeZone</i>(java.lang.String, int)</li>
+<li>(draft)      public static synchronized void <i>setDefaultTimeZoneType</i>(int)</li>
+</ul>
+ULocale
+<ul>
+<li>(draft)      public static ULocale <i>addLikelySubtags</i>(ULocale)</li>
+<li>(draft)      public java.lang.String <i>getCharacterOrientation</i>()</li>
+<li>(draft)      public java.lang.String <i>getLineOrientation</i>()</li>
+<li>(draft)      public static ULocale <i>minimizeSubtags</i>(ULocale)</li>
+</ul>
+</ul>
+
+<hr/>
+<p><i><font size="-1">Contents generated by ReportAPI tool on Thu Jun 26 01:29:42 EDT 2008<br/>Copyright (C) 2008, International Business Machines Corporation, All Rights Reserved.</font></i></p>
+</body>
+</html>
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000..e39f28a
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,30 @@
+#*
+#*******************************************************************************
+#* Copyright (C) 2006-2009, International Business Machines Corporation and    *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#* This is the properties file for ICU4J builds. 
+#*
+
+# spec version won't be changed in a feature stream
+icu4j.spec.version.string=4.1
+
+# impl version will be updated for maintenance releases.
+# It must be <icu4j.spec.version.string>[.<maint-version>]
+icu4j.impl.version.string=4.1.2
+
+# data version number won't be changed in a feature stream
+icu4j.data.version.number=41
+
+# these version numbers are used by API change report
+icu4j.version.number=412
+icu4j.previous.version.number=401
+
+current.year=2009
+api.report.out=${api.dir}/icu4j_compare_${icu4j.previous.version.number}_${icu4j.version.number}.html
+copyright=Copyright (c) 2000-2009, International Business Machines Corporation and others.  All Rights Reserved.
+corp=IBM Corporation
+default.target.rt.version=J2SE15
+
+icu4j.plugin.impl.version.string=4.1.2
+copyright.eclipse=Licensed Materials - Property of IBM \n (C) Copyright IBM Corp. 2000, 2009. All Rights Reserved. \n IBM is a registered trademark of IBM Corp.
\ No newline at end of file
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..ba7ef39
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,2231 @@
+<!--
+/*
+*******************************************************************************
+* Copyright (C) 1997-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+* This is the ant build file for ICU4J.  See readme.html for more information.
+*/
+-->
+
+<project name="icu4j" default="core" basedir=".">
+
+  <!-- ### Begin Clover 2.x setup ### -->
+  <taskdef resource="cloverlib.xml" onerror="ignore" />
+
+  <target name="with.clover">
+    <mkdir dir="tmp/" />
+    <clover-setup initString="tmp/icu4j.db">
+      <files>
+        <exclude name="**/dev/**/*.java" />
+      </files>
+      <methodContext name="API" regexp="(.* )?public .*" />
+    </clover-setup>
+  </target>
+
+  <target name="clover.summary" depends="with.clover">
+    <clover-report>
+      <current outfile="icu4j_html" summary="true">
+        <format type="html" srcLevel="false" />
+      </current>
+    </clover-report>
+  </target>
+  <target name="clover.report" depends="with.clover">
+    <clover-report>
+      <current outfile="icu4j_html">
+        <format type="html" />
+      </current>
+    </clover-report>
+  </target>
+  <target name="clover.log" depends="with.clover">
+    <clover-log level="method" filter="private">
+      <package name="com.ibm.icu.text" />
+      <package name="com.ibm.icu.lang" />
+      <package name="com.ibm.icu.math" />
+      <package name="com.ibm.icu.util" />
+      <package name="com.ibm.icu.charset" />
+    </clover-log>
+  </target>
+
+  <!-- ### End Clover 2.x setup ### -->
+
+  <target name="checkAntVersion">
+    <condition property="supported.ant.version">
+      <or>
+        <contains string="${ant.version}" substring="1.6." />
+        <contains string="${ant.version}" substring="1.7." />
+        <contains string="${ant.version}" substring="1.8." /> <!-- just in case -->
+      </or>
+    </condition>
+    <antcall target="warnAntVersion" />
+  </target>
+
+  <target name="warnAntVersion" unless="supported.ant.version">
+    <echo message="####################### WARNING #######################" />
+    <echo message="The version of ant used by the current configuration" />
+    <echo message="may not work well with this build script file.  Please" />
+    <echo message="use ant 1.6 or later version." />
+    <echo message="#######################################################" />
+  </target>
+
+  <target name="init" depends="initBase,initSrc"/>
+
+  <target name="initBase"
+          depends="checkAntVersion"
+          description="Initialized ICU4J build environment">
+    <tstamp />
+    <property name="src.dir" value="src" />
+    <property name="build.dir" value="classes" />
+    <property name="api.dir" value="${src.dir}/com/ibm/icu/dev/tool/docs" />
+    <property name="doc.dir" value="doc" />
+    <property name="icudatajar.file" value="${src.dir}/com/ibm/icu/impl/data/icudata.jar" />
+    <property name="testjar.file" value="icu4jtests.jar" />
+    <property name="jar.file" value="icu4j.jar" />
+    <property name="demos-jar.file" value="icu4jdemos.jar" />
+    <property name="charsets.jar.file" value="icu4j-charsets.jar" />
+    <property name="jarSrc.file" value="icu4jsrc.jar" />
+    <property name="zipTestSrc.file" value="icu4jtsrc.zip" />
+    <property name="jdk.wrapper.jar.file" value="icu4jwrapper.jar" />
+    <property name="fragment.jar.file" value="icu4jfragment.jar" />
+    <property name="eclipse.dir" value="${src.dir}/com/ibm/icu/dev/eclipse" />
+    <property name="eclipse.projects.dir" value="eclipseProjects" />
+    <property name="wrapper.build.dir" value="classes.wrapper" />
+    <property name="jarDocs.file" value="icu4jdocs.jar" />
+    <property name="ime.translit.jar.file" value="icutransime.jar" />
+    <property name="ime.indic.jar.file" value="icuindicime.jar" />
+    <property name="ime.translit.manifest" value="${src.dir}/com/ibm/icu/dev/tool/ime/translit/manifest.stub" />
+    <property name="ime.indic.manifest" value="${src.dir}/com/ibm/icu/dev/tool/ime/indic/manifest.stub" />
+    <property name="zip.file" value="../icu4j${DSTAMP}.zip" />
+    <property name="zipSrc.file" value="../icu4jSrc${DSTAMP}.zip" />
+    <property name="tzu.src.path" value="com/ibm/icu/dev/tool/tzu" />
+    <property name="tzu.bin.dir" value="${basedir}/icu4jtzu" />
+    <property name="tzu.jar.file" value="icutzu.jar" />
+    <property name="tzu.test.dir" value="${basedir}/icu4jtzu/test" />
+    <property name="tzu.temp.dir" value="${basedir}/icu4jtzu/Temp" />
+    <property name="tzu.src.zip.file" value="icutzu-src.zip" />
+    <property name="tzu.bin.zip.file" value="icutzu-bin.zip" />
+    <property file="build.properties" />
+    <!-- fix the data folder every time there is a version update-->
+
+    <property name="icu4j.data.path" value="com/ibm/icu/impl/data/icudt${icu4j.data.version.number}b" />
+    <property name="icu4j.testdata.path" value="com/ibm/icu/dev/data/testdata" />
+    <property name="icu4j.javac.source" value="1.3" />
+    <property name="icu4j.javac.target" value="1.3" />
+
+    <path id="build.classpath">
+      <pathelement path="${build.dir}" />
+    </path>
+
+    <property name="richedit.dir" value="richedit" />
+    <property name="richedit.doc.dir" value="${richedit.dir}/doc" />
+    <property name="richedit.jar.file" value="${richedit.dir}/richedit.jar" />
+    <property name="richedit.zip.file" value="${richedit.dir}/richedit.zip" />
+    <property name="richedit.manifest" value="${src.dir}/com/ibm/richtext/manifest.stub" />
+
+    <!-- Load environment variables -->
+    <property environment="env" />
+
+    <!-- Capture the computer name in a cross-platform manner -->
+    <property name="env.COMPUTERNAME" value="${env.HOSTNAME}" />
+
+    <!-- JavaDoc params -->
+    <property name="doc.params" value="-breakiterator -use -tagletpath ./classes -taglet com.ibm.icu.dev.tool.docs.ICUTaglet -group 'ICU Core' 'com.ibm.icu.lang*:com.ibm.icu.math*:com.ibm.icu.text*:com.ibm.icu.util*:com.ibm.icu.charset' -group 'ICU Tests' 'com.ibm.icu.dev.test*' -group 'Demos' 'com.ibm.icu.dev.demo*' -group 'ICU Tools' 'com.ibm.icu.dev*'" />
+    <property name="richeditdoc.params" value="-breakiterator -use -tagletpath ./classes -taglet com.ibm.icu.dev.tool.docs.ICUTaglet -group 'Rich Text Editing' 'com.ibm.richtext*'" />
+
+    <mkdir dir="${build.dir}" />
+
+    <echo message="java home: ${java.home}" />
+    <echo message="java version: ${java.version}" />
+    <echo message="ant java version: ${ant.java.version}" />
+    <echo message="${ant.version}" />
+    <echo message="${env.COMPUTERNAME} with ${os.name} ${os.version} on ${os.arch}" />
+    <echo message="clover initstring = '${clover.initstring}'" />
+
+    <!-- ## Java version dependent build configuration ##-->
+ 
+    <!-- JRE lib version used for building ICU4J -->
+    <condition property="target.rt.version" value="J2SE13">
+      <contains string="${java.version}" substring="1.3." />
+    </condition>
+    <condition property="target.rt.version" value="J2SE14">
+      <contains string="${java.version}" substring="1.4." />
+    </condition>
+    <condition property="target.rt.version" value="J2SE15">
+      <contains string="${java.version}" substring="1.5." />
+    </condition>
+    <condition property="target.rt.version" value="JAVASE6">
+      <contains string="${java.version}" substring="1.6." />
+    </condition>
+
+    <fail message="Failed to detect Java runtime library version used for building ICU4J"
+          unless="target.rt.version" />
+    <echo message="target runtime environment: ${target.rt.version}" />
+
+    <condition property="default.java.build.target">
+      <equals arg1="${target.rt.version}" arg2="${default.target.rt.version}" />
+    </condition>
+
+    <!-- Specification title in manifest file -->
+    <condition property="manifest.specification.title" value="ICU4J Compatible Build for ${target.rt.version}">
+      <not>
+        <isset property="default.java.build.target" />
+      </not>
+    </condition>
+    <property name="manifest.specification.title" value="ICU4J" />
+
+    <condition property="before.java14">
+      <or>
+        <equals arg1="${target.rt.version}" arg2="FOUNDATION10"/>
+        <equals arg1="${target.rt.version}" arg2="J2SE13"/>
+      </or>
+    </condition>
+
+    <condition property="before.java15">
+      <or>
+        <equals arg1="${target.rt.version}" arg2="FOUNDATION10"/>
+        <equals arg1="${target.rt.version}" arg2="J2SE13"/>
+        <equals arg1="${target.rt.version}" arg2="J2SE14"/>
+      </or>
+    </condition>
+
+    <!-- JVM arguments for running test cases -->
+    <condition property="test.jvm.args" value="-Xms224m -Xmx256m">
+        <isset property="before.java14" />
+    </condition>
+    <condition property="test.jvm.args" value="-ea -Xms224m -Xmx256m -Xdisableexcessivegc">
+      <and>
+        <not>
+          <isset property="before.java15" />
+        </not>
+        <equals arg1="${java.vm.vendor}" arg2="IBM Corporation"/>
+      </and>
+    </condition>
+    <condition property="test.jvm.args" value="-ea -Xms224m -Xmx256m -Djava.awt.headless=true">
+      <and>
+        <equals arg1="${os.name}" arg2="Mac OS X"/>
+      </and>
+    </condition>
+    <condition property="test.jvm.args" value="-ea -Xms224m -Xmx256m">
+      <not>
+        <isset property="test.jvm.args" />
+      </not>
+    </condition>
+
+    <uptodate property="icu4j.resources" targetfile="${src.dir}/com/ibm/icu/impl/data">
+      <!-- note must not have '/' before 'com' in srcfiles includes arg! -->
+      <srcfiles dir="${build.dir}" includes="${icu4j.data.path}/res_index.res" />
+    </uptodate>
+
+    <uptodate property="icu4j.testdata.resources" targetfile="${src.dir}/com/ibm/icu/dev/data">
+      <!-- note must not have '/' before 'com' in srcfiles includes arg! -->
+      <srcfiles dir="${build.dir}" includes="${icu4j.testdatadata.path}/root.res" />
+    </uptodate>
+
+    <uptodate property="icu4j.module.resources" targetfile="${icudatajar.file}">
+      <srcfiles dir="${build.dir}" includes="${icu4j.data.path}/*.icu" />
+    </uptodate>
+    <!-- <echo message="icu4j.module.resources result: ${icu4j.module.resources}" /> -->
+    <tstamp>
+      <format property="date.time" pattern="yyyy-MM-dd 'at' hh:mm:ss z" locale="en,US" />
+    </tstamp>
+
+    <echo message="Initialized at ${date.time}" />
+  </target>
+
+  <target name="displayBuildEnvWarning" unless="default.java.build.target">
+    <echo message="####################### WARNING #######################" />
+    <echo message="The JDK version used by the current build environment" />
+    <echo message="does not match the reference JDK version for this" />
+    <echo message="ICU4J release.  The build outputs may not be identical" />
+    <echo message="to the official ICU4J binary distribution." />
+    <echo message="#######################################################" />
+  </target>
+
+  <target name="initSrc"
+          depends="buildMangle"
+          description="Run the preprocessor tool to modify Java sources for the Java runtime lib currently used.">
+    <antcall target="displayBuildEnvWarning" />
+    <!-- Build CodeMangler -->
+    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}">
+      <include name="com/ibm/icu/dev/tool/docs/CodeMangler.java" />
+    </javac>
+    <!-- Run CodeMangler -->
+    <antcall target="doMangle">
+      <param name="target.defs" value="${target.rt.version}" />
+      <param name="input.file" value="@preprocessor.txt" />
+    </antcall>
+  </target>
+
+  <target name="normSrc"
+          depends="buildMangle"
+          description="Run the preprocessor to normalize Java sources to the ICU source repository target JDK version">
+    <antcall target="doMangle">
+      <param name="target.defs" value="${default.target.rt.version}" />
+      <param name="input.file" value="@preprocessor.txt" />
+    </antcall>
+  </target>
+
+  <target name="buildMangle" depends="initBase">
+    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}">
+      <include name="com/ibm/icu/dev/tool/docs/CodeMangler.java" />
+    </javac>
+  </target>
+
+  <target name="doMangle" unless="dontMangle">
+    <echo message="Running source code preprocessor for [${target.defs}]"/>
+    <java classname="com.ibm.icu.dev.tool.docs.CodeMangler" classpath="${build.dir}" logError="true" fork="true" dir="${basedir}">
+      <arg value="-d${target.defs}" />
+      <arg value="${input.file}" />
+    </java>
+  </target>
+
+  <!-- build everything but dist-related stuff -->
+  <target name="all" depends="core,tests,tools,richedit,demos,jar,docs" description="build all primary targets" />
+
+  <target name="resources" depends="icudata,coreData,durationdata,testdata" description="builds all the resources" />
+
+  <target name="icudata" depends="initBase" if="icu4j.resources">
+    <!-- use this target to force resources to be rebuilt -->
+    <unjar src="${icudatajar.file}" dest="${build.dir}" />
+    <touch file="${build.dir}/${icu4j.data.path}/res_index.res" />
+    <copy todir="${build.dir}/META-INF">
+      <fileset dir="${src.dir}/META-INF" includes="**/*" />
+    </copy>
+  </target>
+
+  <target name="durationdata" depends="initBase">
+    <copy todir="${build.dir}/com/ibm/icu/impl/duration/impl/data">
+      <fileset dir="${src.dir}/com/ibm/icu/impl/duration/impl/data" includes="index.txt, pfd*.xml"/>
+    </copy>
+  </target>
+
+  <!--
+    use this target to conditionally build resources only if icu4j.resources is set
+    <target name="icu" depends="init" if="icu4j.resources">
+        <unjar src="${src.dir}/com/ibm/icu/impl/data/ICULocaleData.jar" dest="${build.dir}"/>
+        <touch file="${build.dir}/com/ibm/icu/impl/data/LocaleElements_index.class"/>
+    </target>
+ -->
+
+  <!-- core does not build richedit or tests -->
+  <target name="core" depends="init,coreData,icudata,durationdata" description="build core classes and data">
+    <javac  sourcepath=""
+            srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off"
+            encoding="ascii">
+      <include name="com/ibm/icu/charset/**/*.java" unless="before.java14" />
+      <include name="com/ibm/icu/impl/**/*.java" />
+      <include name="com/ibm/icu/lang/**/*.java" />
+      <include name="com/ibm/icu/math/**/*.java" />
+      <include name="com/ibm/icu/text/**/*.java" />
+      <include name="com/ibm/icu/util/**/*.java" />
+    </javac>
+  </target>
+
+  <target name="tests" depends="core,testdata" description="build tests">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <exclude name="com/ibm/icu/dev/test/charset/**/*.java" if="before.java14" />
+      <exclude name="com/ibm/icu/dev/test/perf/**/*.java" if="before.java14" />
+      <include name="com/ibm/icu/dev/test/**/*.java" />
+    </javac>
+
+  </target>
+
+  <target name="demos" depends="core,testdata" unless="before.java14" description="build demos">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <include name="com/ibm/icu/dev/demo/**/*.java" />
+      <include name="com/ibm/icu/dev/demo/*.java" />
+    </javac>
+  </target>
+
+  <target name="indices" depends="icudata,build_indexgenerator">
+    <java classname="com.ibm.icu.dev.tool.index.IndexGenerator" classpath="${build.dir}" logError="true">
+      <arg value="${build.dir}/${icu4j.data.path}" />
+    </java>
+    <java classname="com.ibm.icu.dev.tool.index.IndexGenerator" classpath="${build.dir}" logError="true">
+      <arg value="${build.dir}/${icu4j.data.path}/rbnf" />
+    </java>
+    <java classname="com.ibm.icu.dev.tool.index.IndexGenerator" classpath="${build.dir}" logError="true">
+      <arg value="${build.dir}/${icu4j.data.path}/coll" />
+    </java>
+    <java classname="com.ibm.icu.dev.tool.index.IndexGenerator" classpath="${build.dir}" logError="true">
+      <arg value="${build.dir}/${icu4j.data.path}/translit" />
+    </java>
+  </target>
+
+  <target name="tools"
+          depends="core"
+          unless="before.java14"
+          description="build tools">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <exclude name="com/ibm/icu/dev/tool/cldr/*" />
+      <exclude name="com/ibm/icu/dev/tool/localeconverter/*" if="before.java15" />
+      <include name="com/ibm/icu/dev/tool/**/*.java" />
+    </javac>
+  </target>
+
+  <target name="build_indexgenerator" depends="initBase">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <include name="com/ibm/icu/dev/tool/index/IndexGenerator.java" />
+    </javac>
+  </target>
+
+  <target name="docs" depends="init,docs13,docs14plus" description="build user javadoc" />
+
+  <target name="docs13" if="before.java14">
+    <mkdir dir="${doc.dir}" />
+    <javadoc  packagenames="com.ibm.icu.lang,com.ibm.icu.text,com.ibm.icu.util,com.ibm.icu.math"
+              sourcepath="${src.dir}"
+              destdir="${doc.dir}"
+              nodeprecatedlist="true"
+              windowtitle="icu4j"
+              doctitle="icu4j"
+              encoding="iso-8859-1"
+              docencoding="iso-8859-1"
+              bottom="&lt;font size=-1>Copyright (c) ${current.year} IBM Corporation and others.&lt;/font>"
+              link="http://java.sun.com/j2se/1.3/docs/api"
+              source="1.4" />
+  </target>
+
+  <target name="docs14plus" depends="tools" unless="before.java14">
+    <echo message="doc params: ${doc.params}" />
+    <mkdir dir="${doc.dir}" />
+    <javadoc  packagenames="com.ibm.icu.lang,com.ibm.icu.text,com.ibm.icu.util,com.ibm.icu.charset,com.ibm.icu.math,com.ibm.icu.dev"
+              sourcepath="${src.dir}"
+              destdir="${doc.dir}"
+              nodeprecatedlist="true"
+              windowtitle="icu4j"
+              doctitle="icu4j"
+              encoding="iso-8859-1"
+              docencoding="iso-8859-1"
+              bottom="&lt;font size=-1>Copyright (c) ${current.year} IBM Corporation and others.&lt;/font>"
+              additionalparam="${doc.params}"
+              link="http://java.sun.com/j2se/1.5/docs/api"
+              source="1.4" />
+  </target>
+
+  <target name="fulldocs" depends="tools" unless="before.java14" description="build all javadoc">
+    <echo message="doc params: ${doc.params}" />
+    <mkdir dir="${doc.dir}" />
+    <javadoc  packagenames="com.ibm.icu.*"
+              sourcepath="${src.dir}"
+              destdir="${doc.dir}"
+              nodeprecatedlist="true"
+              windowtitle="icu4j"
+              doctitle="icu4j"
+              encoding="iso-8859-1"
+              docencoding="iso-8859-1"
+              bottom="&lt;font size=-1>Copyright (c) ${current.year} IBM Corporation and others.&lt;/font>"
+              additionalparam="${doc.params}"
+              link="http://java.sun.com/j2se/1.5/docs/api"
+              source="1.4" />
+  </target>
+
+  <target name="coreData" depends="initBase">
+    <copy todir="${build.dir}/com/ibm/icu/impl/data">
+      <fileset dir="${src.dir}/com/ibm/icu/impl/data" includes="*.icu,*.spp,*.brk" excludes="Transliterator_Han_Latin_*.txt" />
+    </copy>
+    <copy file="${src.dir}/com/ibm/icu/ICUConfig.properties" todir="${build.dir}/com/ibm/icu"/>
+  </target>
+
+  <target name="testdata" depends="initBase">
+    <copy file="${src.dir}/com/ibm/icu/dev/data/rbbi/english.dict" todir="${build.dir}/com/ibm/icu/dev/data/rbbi" />
+    <copy file="${src.dir}/com/ibm/icu/dev/test/rbbi/rbbitst.txt" todir="${build.dir}/com/ibm/icu/dev/test/rbbi" />
+    <copy file="${src.dir}/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml" todir="${build.dir}/com/ibm/icu/dev/test/charsetdet" />
+    <copy todir="${build.dir}/com/ibm/icu/dev/test/serializable/data">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/test/serializable/data">
+        <include name="**/*.dat" />
+      </fileset>
+    </copy>
+    <copy file="${src.dir}/com/ibm/icu/dev/data/riwords.txt" todir="${build.dir}/com/ibm/icu/dev/data" />
+    <copy file="${src.dir}/com/ibm/icu/dev/data/IDNATestInput.txt" todir="${build.dir}/com/ibm/icu/dev/data" />
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <include name="com/ibm/icu/dev/data/*.java" />
+      <include name="com/ibm/icu/dev/data/resources/*.java" />
+    </javac>
+    <copy todir="${build.dir}/com/ibm/icu/dev/data">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/data" includes="*.spp,*.txt" />
+    </copy>
+    <copy todir="${build.dir}/com/ibm/icu/dev/data/unicode/">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/data/unicode/" includes="*.txt" />
+    </copy>
+    <copy file="${src.dir}/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt" todir="${build.dir}/com/ibm/icu/dev/test/format" />
+    <copy todir="${build.dir}/com/ibm/icu/dev/data/resources/">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/data/resources/" includes="*.properties" />
+    </copy>
+    <copy todir="${build.dir}/com/ibm/icu/dev/test/duration/testdata">
+      <fileset dir="${src.dir}/com/ibm/icu/dev/test/duration/testdata/" includes="testdata*.txt" />
+    </copy>
+    <!-- use this target to force resources to be rebuilt -->
+    <unjar src="${src.dir}/com/ibm/icu/dev/data/testdata.jar" dest="${build.dir}" />
+    <touch file="${build.dir}/${icu4j.testdata.path}/root.res" />
+  </target>
+
+  <!-- builds richedit and richedit tests -->
+  <target name="richedit" depends="init" description="build richedit classes and tests">
+    <javac  srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on"
+            deprecation="off">
+      <include name="com/ibm/richtext/**/*.java" />
+    </javac>
+    <copy todir="${build.dir}/com/ibm/richtext/textapps/resources" overwrite="yes" includeEmptyDirs="no">
+      <fileset dir="${src.dir}/com/ibm/richtext/textapps/resources" includes="*.red" />
+    </copy>
+  </target>
+
+  <!-- Creates the 3 release jar archives for distribution -->
+  <target name="jarRelease" depends="jar,jarSrc,jarDocs" />
+
+  <target name="jar"
+          depends="core,indices,charsetsJar"
+          description="build 'icu4j.jar' jar file">
+    <jar jarfile="${jar.file}" compress="true">
+      <fileset dir="${basedir}" includes="license.html,unicode-license.txt" />
+      <fileset dir="${src.dir}" includes="com/ibm/icu/ICUConfig.properties" />
+      <fileset dir="${build.dir}" includes="com/ibm/icu/util/**/*,com/ibm/icu/text/**/*,com/ibm/icu/math/**/*,com/ibm/icu/impl/**/*,com/ibm/icu/lang/**/*" excludes="META-INF/services/**/*,com/ibm/icu/charset/**/*,${icu4j.data.path}/*.cnv,${icu4j.data.path}/cnvalias.icu" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="${manifest.specification.title}" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="charsetsJar"
+          depends="core,indices"
+          unless="before.java14"
+          description="build  'icu4j-charstes.jar' jar file">
+    <echo message="${icu4j.data.path}/cnvalias.icu"/>
+    <jar jarfile="${charsets.jar.file}" compress="true">
+      <fileset dir="${basedir}" includes="license.html, unicode-license.txt" />
+      <fileset dir="${build.dir}"
+        includes="META-INF/services/**/*,com/ibm/icu/charset/**/*,${icu4j.data.path}/*.cnv,${icu4j.data.path}/cnvalias.icu" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Charsets" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java Charsets" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="jarTests" depends="tests,jar" description="build runtime 'icu4jtests.jar' jar file">
+    <jar jarfile="${testjar.file}" compress="true">
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/test/**/*" />
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/data/**/*" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Tests" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java Tests" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="jarSrc" depends="init,normSrc" description="build source 'icu4jsrc.jar' jar file">
+    <!--Create a jar archive of just the source for distribution.  The
+        jar file will be created in the directory above the root ICU4J
+        directory. The exclude pattern ${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt
+        and ${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt
+        eliminates old archive copies like SpecialCasing-2.txt and
+        UnicodeData-2.1.8.txt -->
+    <jar  jarfile="${jarSrc.file}"
+          compress="true">
+      <fileset dir=".">
+        <exclude name="${richedit.dir}/**/*" />
+        <exclude name="test_*" />
+        <exclude name="${src.dir}/com/ibm/icu/dev/data/unicode/UnicodeData-*.txt" />
+        <exclude name="${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing-*.txt" />
+        <exclude name="${src.dir}/com/ibm/icu/dev/data/unicode/CompositionExclusions-*.txt" />
+        <exclude name="${obsolete.dir}/**" />
+        <exclude name="**/*~" />
+        <exclude name="${src.dir}/**/*.class" />
+        <exclude name="${build.dir}/**" />
+        <exclude name="${doc.dir}/**" />
+        <exclude name="*.jar" />
+        <exclude name="*.zip" />
+        <exclude name="*.gz" />
+      </fileset>
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Sources" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java source files" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="jarDocs" depends="docs" description="build documentation 'icu4jdocs.jar' jar file">
+    <jar jarfile="${jarDocs.file}" compress="true" basedir="${doc.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Documents" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java documents" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="jarDemos" depends="demos" description="build demos to 'icu4jdemos.jar' jar file">
+    <jar jarfile="${demos-jar.file}" compress="true">
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/demo/**" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <attribute name="Main-Class" value="com.ibm.icu.dev.demo.Launcher" />
+        <attribute name="Class-Path" value="icu4j.jar" />
+        <section name="common">
+          <attribute name="Specification-Title" value="${manifest.specification.title}" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java Demos" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="translitIMEJar" depends="collator, transliterator" description="build transliterator IME 'icutransime.jar' jar file">
+    <javac includes="com/ibm/icu/dev/tool/ime/translit/*.java" excludes="**/CVS/**/*" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off" />
+    <copy file="${src.dir}/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties" todir="${build.dir}/com/ibm/icu/dev/tool/ime/translit" />
+    <jar jarfile="${ime.translit.jar.file}" compress="true" basedir="${build.dir}" includes="com/ibm/icu/dev/tool/ime/translit/**/*" manifest="${ime.translit.manifest}">
+      <metainf dir="${src.dir}/com/ibm/icu/dev/tool/ime/translit" includes="services/*" />
+    </jar>
+  </target>
+
+  <target name="indicIMEJar" depends="init" description="build indic IME 'icuindicime.jar' jar file">
+    <javac includes="com/ibm/icu/dev/tool/ime/indic/*.java" excludes="**/CVS/**/*" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off" />
+    <copy file="${src.dir}/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties" todir="${build.dir}/com/ibm/icu/dev/tool/ime/indic" />
+    <jar jarfile="${ime.indic.jar.file}" compress="true" basedir="${build.dir}" includes="com/ibm/icu/dev/tool/ime/indic/**/*" manifest="${ime.indic.manifest}">
+      <metainf dir="${src.dir}/com/ibm/icu/dev/tool/ime/indic" includes="services/*" />
+    </jar>
+  </target>
+
+  <!--
+    <target name="translitimeStandaloneJar" depends="collator, transliterator">
+        <javac includes="com/ibm/icu/dev/tool/ime/translit/*.java"
+            excludes="**/CVS/**/*"
+            srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            source="${icu4j.javac.source}"
+            target="${icu4j.javac.target}"
+            debug="on" deprecation="off"/>
+        <copy toDir="${build.dir}/com/ibm/icu/dev/tool/ime/translit">
+            <fileset dir="${src.dir}/com/ibm/icu/dev/tool/ime/translit" includes="*.properties"/>
+        </copy>
+        <jar jarfile="${ime.jar.file}"
+            compress="true"
+            basedir="${build.dir}"
+            includes="com/ibm/icu/util/**/*,com/ibm/icu/text/**/*,com/ibm/icu/math/**/*,com/ibm/icu/impl/**/*,com/ibm/icu/lang/**/*,com/ibm/icu/dev/tool/ime/translit/**/*"
+            manifest="${ime.translit.manifest}">
+            <metainf dir="${src.dir}/com/ibm/icu/dev/tool/ime/translit" includes="services/*"/>
+        </jar>
+    </target>
+-->
+
+  <!-- jars up richedit but without tests -->
+  <target name="richeditJar" depends="richedit" description="build richedit runtime 'richedit.jar' jar file">
+    <mkdir dir="${richedit.dir}" />
+    <jar jarfile="${richedit.jar.file}" compress="true" includes="com/ibm/richtext/**/*" excludes="com/ibm/richtext/test/**/*" basedir="${build.dir}" manifest="${richedit.manifest}" />
+  </target>
+
+  <!--
+        Note:  I used to use -linkoffline http://java.sun.com/products/jdk/1.2/docs/api/ C:\jdk1.2.2\docs\api
+        This links to core docs on Sun's site - a very nice feature.  But it requires the 1.2 docs to be
+        on the build machine at a known location.
+    -->
+
+  <!-- the 'public' docs for richedit -->
+  <target name="richeditDocs" depends="init" description="build richedit javadoc">
+    <mkdir dir="${richedit.doc.dir}" />
+    <javadoc  packagenames="com.ibm.richtext.demo,com.ibm.richtext.awtui,com.ibm.richtext.swingui,com.ibm.richtext.textpanel,com.ibm.richtext.styledtext,com.ibm.richtext.textlayout.attributes,com.ibm.richtext.print"
+              sourcepath="${src.dir}"
+              destdir="${richedit.doc.dir}"
+              nodeprecatedlist="true"
+              windowtitle="RichEdit Control"
+              doctitle="RichEdit Control"
+              encoding="iso-8859-1"
+              docencoding="iso-8859-1"
+              bottom="&lt;font size=-1>Copyright (c) 1998-2004 IBM Corporation and others.&lt;/font>" />
+  </target>
+
+  <!-- richedit alphaworks distribution - jar and docs, but no source -->
+  <target name="richeditZip" depends="richeditJar,richeditDocs" description="build richedit zip file">
+    <!--Create a zip archive of the richedit jar and readme -->
+    <copy file="license.html" todir="${richedit.dir}" />
+    <zip zipfile="${richedit.zip.file}" basedir="${richedit.dir}" includes="doc/**/*,richedit.jar,license.html" />
+  </target>
+  <target name="deleteCore" depends="initBase">
+    <delete failonerror="no">
+      <fileset dir="${build.dir}/com/ibm/icu/text" />
+      <fileset dir="${build.dir}/com/ibm/icu/impl" />
+      <fileset dir="${build.dir}/com/ibm/icu/math" />
+      <fileset dir="${build.dir}/com/ibm/icu/lang" />
+      <fileset dir="${build.dir}/com/ibm/icu/util" />
+      <fileset dir="${build.dir}/com/ibm/icu/charset" />
+    </delete>
+  </target>
+
+  <target name="check" depends="tests, jar, deleteCore" description="run standard icu4j test suite">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="jdktzCheck" depends="tests, jar, deleteCore" description="run icu4j test suite with JDK timezone">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args} -Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=JDK"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="exhaustiveCheck" depends="tests, jar, deleteCore" description="run standard icu4j test suite in exhaustive mode">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <arg value="-e10" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="secure" depends="jarTests" description="builds icu4j.jar and icu4jtests.jar" />
+
+  <target name="secureCheck" depends="secure" description="run secure (applet-like) icu4j test suite">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <!-- jvmarg value="-verbose"/ -->
+      <!-- (use for debugging, LOTS of output) <jvmarg value="-Djava.security.debug=access:trace"/ -->
+      <!-- <jvmarg value="-Djava.security.debug=access:failure,domain"/> -->
+      <jvmarg value="-Djava.security.manager" />
+      <jvmarg value="-Djava.security.policy=${src.dir}/com/ibm/icu/dev/test/security.policy" />
+      <!--<jvmarg value="-Djava.security.debug=access:failure"/>-->
+      <arg value="-w" />
+      <arg value="-nothrow" />
+      <classpath>
+        <pathelement location="clover.jar" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="${testjar.file}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="noData" depends="core, tests" description="builds ICU4J without any data">
+    <delete failonerror="no">
+      <fileset dir="${build.dir}/${icu4j.data.path}/../" includes="Holiday*.class" />
+      <fileset dir="${build.dir}/${icu4j.data.path}/../" includes="BreakIterator*.class" />
+      <fileset dir="${build.dir}/${icu4j.data.path}" />
+      <fileset dir="${build.dir}/${icu4j.testdata.path}" />
+      <fileset dir="${build.dir}/${icu4j.testdata.path}/../" />
+    </delete>
+  </target>
+  <target name="noDataCheck" depends="noData" description="runs the tests when no data is present">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <arg value="-nothrow" />
+      <arg value="-nodata" />
+      <classpath>
+        <pathelement location="clover.jar" />
+        <pathelement location="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="_requires14" if="before.java14">
+    <echo message="One of your targets requires JAVA_HOME to be set to JDK version 1.4 or newer" />
+  </target>
+
+  <target name="_checktags" depends="tools" unless="before.java14">
+    <echo message="doc params: ${doc.params}" />
+    <javadoc sourcepath="${src.dir}" packagenames="com.ibm.icu.*" excludepackagenames="com.ibm.icu.dev.*,com.ibm.icu.impl.*" classpath="${build.dir}" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.CheckTags" path="${build.dir}">
+        <!-- <param name="-short"/> -->
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="checktags" depends="_requires14,_checktags" description="check API tags before release" />
+
+  <target name="gatherapi" depends="tools" unless="before.java14" description="run API database generator tool">
+    <javadoc classpath="${build.dir}" sourcepath="${src.dir}" packagenames="com.ibm.icu.lang,com.ibm.icu.math,com.ibm.icu.text,com.ibm.icu.util" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${build.dir}">
+        <param name="-name" value="ICU4J ${icu4j.impl.version.string}" />
+        <param name="-output" value="${api.dir}/icu4j${icu4j.version.number}.api" />
+        <param name="-internal" />
+        <param name="-gzip" />
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="gatherapi.with.version" depends="tools" unless="before.java14" description="run API database generator tool">
+    <javadoc classpath="${build.dir}" sourcepath="${src.dir}" packagenames="com.ibm.icu.lang,com.ibm.icu.math,com.ibm.icu.text,com.ibm.icu.util" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${build.dir}">
+        <param name="-name" value="ICU4J ${icu4j.impl.version.string}" />
+        <param name="-output" value="${api.dir}/icu4j${icu4j.version.number}.stver.api" />
+        <param name="-internal" />
+        <param name="-version" />
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="apireport" depends="tools, gatherapi" unless="beofre.java14" description="run API report generator tool">
+    <java classname="com.ibm.icu.dev.tool.docs.ReportAPI" classpath="${build.dir}" failonerror="true">
+      <arg value="-old:" />
+      <arg value="${api.dir}/icu4j${icu4j.previous.version.number}.api.gz" />
+      <arg value="-new:" />
+      <arg value="${api.dir}/icu4j${icu4j.version.number}.api.gz" />
+      <arg value="-html" />
+      <arg value="-internal" />
+      <arg value="-out:" />
+      <arg value="${api.report.out}" />
+    </java>
+  </target>
+
+  <target name="clean" depends="initBase" description="remove all build targets">
+    <delete dir="${build.dir}" />
+    <delete dir="${doc.dir}" />
+    <delete file="${jar.file}" />
+    <delete file="${charsets.jar.file}" />
+    <delete dir="${richedit.dir}" />
+    <delete file="${testjar.file}" />
+    <delete file="${jarSrc.file}" />
+
+    <delete dir="${eclipse.projects.dir}" />
+    <delete dir="${wrapper.build.dir}" />
+    <delete file="${zipTestSrc.file}" />
+    <delete file="${jdk.wrapper.jar.file}" />
+    <delete file="${fragment.jar.file}"/>
+
+    <delete dir="${tzu.bin.dir}" />
+    <delete file="${tzu.bin.zip.file}" />
+    <delete file="${tzu.src.zip.file}" />
+  </target>
+
+  <target name="moduleJar" depends="initBase" description="modular build of 'icu4j.jar' jar file">
+    <jar jarfile="${jar.file}" compress="true" includes="com/ibm/icu/util/**/*,com/ibm/icu/text/**/*,com/ibm/icu/math/**/*,com/ibm/icu/impl/**/*,com/ibm/icu/lang/**/*" basedir="${build.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Modularized Build" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU for Java Module" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <patternset id="common.test.sources">
+    <include name="com/ibm/icu/dev/test/TestFmwk.java" />
+    <include name="com/ibm/icu/dev/test/TestLog.java" />
+    <include name="com/ibm/icu/dev/test/TestUtil.java" />
+    <include name="com/ibm/icu/dev/test/UTF16Util.java" />
+    <include name="com/ibm/icu/dev/test/TestAll.java" />
+  </patternset>
+
+  <!-- Module: BreakIterator -->
+  <target name="breakIterator" depends="init,copyFullPropsData" description="modular build of break iterator services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/UCharacterName.java"/>
+      <include name="com/ibm/icu/impl/data/*Break*.java"/>
+      <include name="com/ibm/icu/lang/**/*.java"/>
+      <include name="com/ibm/icu/text/*BreakIterator*.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+    </javac>
+  </target>
+
+  <target name="breakIteratorTests" depends="breakIterator" description="test breakIterator modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on" deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/rbbi/**/*.java"/>
+    </javac>
+    <copy file="${src.dir}/com/ibm/icu/dev/test/rbbi/rbbitst.txt"
+          todir="${build.dir}/com/ibm/icu/dev/test/rbbi"/>
+  </target>
+
+  <!-- Module: Calendar -->
+  <target name="copyCalendarData" depends="initBase">
+    <!-- Calendar does not require Collation data, BreakIterator data -->
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/pnames.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/unames.icu" />
+        <include name="**/*.res" />
+        <exclude name="**/coll/*.res" />
+        <exclude name="**/translit/*.res" />
+        <exclude name="**/rbnf/*.res" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="calendar" depends="init,copyCalendarData" description="modular build of calendar services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/data/*Holiday*.java"/>
+      <include name="com/ibm/icu/lang/UCharacter.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+      <include name="com/ibm/icu/text/NumberFormatServiceShim.java"/>
+      <include name="com/ibm/icu/util/*Calendar*.java"/>
+    </javac>
+  </target>
+
+  <target name="calendarTests" depends="calendar,testdata" description="test calendar modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/calendar/**/*.java" />
+    </javac>
+  </target>
+
+  <!-- Module: Collator -->
+  <target name="copyCollatorData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/*.icu" />
+        <include name="**/coll/*.res" />
+        <include name="**/*.brk" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="collator" depends="init,copyCollatorData" description="modular build of collator services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/data/*Break*.java"/>
+      <include name="com/ibm/icu/text/*BreakIterator*.java"/>
+      <include name="com/ibm/icu/text/*Collation*.java"/>
+      <include name="com/ibm/icu/text/*Collator*.java"/>
+      <include name="com/ibm/icu/text/Normalizer.java"/>
+      <include name="com/ibm/icu/text/Replaceable.java"/>
+      <include name="com/ibm/icu/text/ReplaceableString.java"/>
+      <include name="com/ibm/icu/text/UnicodeFilter.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+      <include name="com/ibm/icu/text/UTF16.java"/>
+    </javac>
+  </target>
+
+  <target name="collatorTests" depends="collator,testdata" description="test collator modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/collator/**/*.java"/>
+      <include name="java,com/ibm/icu/dev/test/search/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/collator/RandomCollator.java"/>
+    </javac>
+  </target>
+
+  <!-- Module: Compression -->
+  <target name="compression" depends="init" description="modular build of compression services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/text/SCSU.java"/>
+      <include name="com/ibm/icu/text/UnicodeCompressor.java"/>
+      <include name="com/ibm/icu/text/UnicodeDecompressor.java"/>
+    </javac>
+  </target>
+
+  <target name="compressionTests" depends="compression" description="test compression modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/compression/**/*.java"/>
+    </javac>
+  </target>
+
+  <!-- Module: Format -->
+  <target name="copyFormatData" depends="initBase" if="icu4j.module.resources">
+    <!-- Format does not require BreakIterator data -->
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/*.icu" />
+        <include name="**/*.res" />
+        <exclude name="**/translit/*.res" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="format" depends="init,copyFormatData" description="modular build of formatting services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/lang/UCharacter.java"/>
+      <include name="com/ibm/icu/text/*Collator*.java"/>
+      <include name="com/ibm/icu/text/*Format*.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+      <include name="com/ibm/icu/util/CalendarServiceShim.java"/>    </javac>
+  </target>
+
+  <target name="formatTests" depends="format,testdata" description="test format modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/format/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java"/>
+    </javac>
+    <copy file="${src.dir}/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt"
+          todir="${build.dir}/com/ibm/icu/dev/test/format"/>
+  </target>
+
+  <!-- Module: Normalizer -->
+  <target name="normalizerData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/ucase.icu" />
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/unames.icu" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="normalizer" depends="init,normalizerData" description="modular build of normalizer services">
+    <javac includes="com/ibm/icu/text/Normalizer.java,com/ibm/icu/text/CanonicalIterator.java,com/ibm/icu/text/UTF16.java,com/ibm/icu/text/UCharacterIterator.java,com/ibm/icu/text/UForwardCharacterIterator.java,com/ibm/icu/text/Replaceable.java,com/ibm/icu/text/ReplaceableString.java,com/ibm/icu/text/UnicodeFilter.java,com/ibm/icu/text/UnicodeSetIterator.java,com/ibm/icu/lang/**/*"
+           excludes="**/CVS/**/*,com/ibm/icu/lang/UScriptRun.java,com/ibm/icu/impl/UtilityExtensions.java,com/ibm/icu/impl/TrieBuilder.java,com/ibm/icu/impl/IntTrieBuilder.java,com/ibm/icu/impl/BOCU.java,com/ibm/icu/impl/UnicodeCharacterIterator.java"
+           srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/lang/**/*"/>
+      <include name="com/ibm/icu/text/CanonicalIterator.java"/>
+      <include name="com/ibm/icu/text/Normalizer.java"/>
+      <include name="com/ibm/icu/text/Replaceable.java"/>
+      <include name="com/ibm/icu/text/ReplaceableString.java"/>
+      <include name="com/ibm/icu/text/UCharacterIterator.java"/>
+      <include name="com/ibm/icu/text/UForwardCharacterIterator.java"/>
+      <include name="com/ibm/icu/text/UnicodeFilter.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+      <include name="com/ibm/icu/text/UTF16.java"/>
+    </javac>
+  </target>
+
+  <target name="normalizerTests" depends="normalizer">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/normalizer/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java"/>
+    </javac>
+  </target>
+
+  <!-- Module: Basic Properties / Full Properties -->
+  <target name="copyBasicPropsData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/ubidi.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/unames.icu" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="copyFullPropsData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/ubidi.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/unames.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/*.res" />
+        <include name="**/*.brk" />
+        <include name="**/*.ctd" />
+        <exclude name="**/coll/*.res" />
+        <exclude name="**/translit/*.res" />
+        <exclude name="**/rbnf/*.res" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="propertiesBasic" depends="init,propertiesClasses,copyBasicPropsData" description="modular build of basic character properties">
+  </target>
+
+  <target name="propertiesFull" depends="init,propertiesClasses,copyFullPropsData" description="modular build of full character properties">
+  </target>
+
+  <target name="propertiesBasicTests" depends="propertiesBasic,propertiesTests" description="modular build of basic character properties">
+  </target>
+
+  <target name="propertiesFullTests" depends="propertiesFull,propertiesTests" description="modular build of full character properties">
+  </target>
+
+  <target name="propertiesClasses">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/data/*Break*.java"/>
+      <include name="com/ibm/icu/lang/**/*"/>
+      <include name="com/ibm/icu/text/*BreakDictionary*.java"/>
+      <include name="com/ibm/icu/text/*BreakIterator*.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+    </javac>
+  </target>
+
+  <target name="propertiesTests">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/lang/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/lang/TestUScriptRun.java"/>
+    </javac>
+    <copy file="${src.dir}/com/ibm/icu/dev/data/unicode/SpecialCasing.txt"
+          todir="${build.dir}/com/ibm/icu/dev/data/unicode/" />
+  </target>
+
+  <!-- Module: Transliterator -->
+  <target name="copyTranslitData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/ubidi.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/unames.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/*.brk" />
+        <include name="**/*.ctd" />
+        <include name="**/brkitr/*.res" />
+        <include name="**/translit/*.res" />
+      </patternset>
+    </unjar>
+    <touch file="${build.dir}/${icu4j.data.path}/uprops.icu" />
+  </target>
+
+  <target name="transliterator" depends="init,propertiesClasses,copyTranslitData" description="modular build of unicode transform services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/*Iterator*.java"/>
+      <include name="com/ibm/icu/impl/*Property*.java"/>
+      <include name="com/ibm/icu/impl/data/ResourceReader.java"/>
+      <include name="com/ibm/icu/impl/UtilityExtensions.java"/>
+      <include name="com/ibm/icu/text/*Transliterator*.java"/>
+      <include name="com/ibm/icu/text/UnicodeSetIterator.java"/>
+    </javac>
+  </target>
+
+  <target name="transliteratorTests" depends="transliterator" description = "test transliterator modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/translit/**/*.java"/>
+      <exclude name="com/ibm/icu/dev/test/translit/UnicodeFilterLogic*.java"/>
+    </javac>
+  </target>
+
+  <!-- Module: StringPrep, IDNA -->
+  <target name="copyStringPrepData" depends="initBase">
+    <unjar src="${icudatajar.file}" dest="${build.dir}">
+      <patternset>
+        <include name="**/*.spp" />
+        <include name="**/ubidi.icu" />
+        <include name="**/ucase.icu" />
+        <include name="**/unorm.icu" />
+        <include name="**/uprops.icu" />
+        <include name="**/pnames.icu" />
+        <include name="**/unames.icu" />
+      </patternset>
+    </unjar>
+  </target>
+
+  <target name="stringPrep" depends="init,normalizer,copyStringPrepData" description="modular build of stringprep services">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off">
+      <include name="com/ibm/icu/impl/*StringPrep*.java"/>
+      <include name="com/ibm/icu/text/*IDNA*.java"/>
+      <include name="com/ibm/icu/text/*StringPrep*.java"/>
+    </javac>
+  </target>
+
+  <target name="stringPrepTests" depends="stringPrep" description="test stringPrep modular build target">
+    <javac srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="${icu4j.javac.source}"
+           target="${icu4j.javac.target}"
+           debug="on"
+           deprecation="off">
+      <patternset refid="common.test.sources" />
+      <include name="com/ibm/icu/dev/test/stringprep/**/*.java"/>
+    </javac>
+    <unjar src="${src.dir}/com/ibm/icu/dev/data/testdata.jar" dest="${build.dir}">
+      <patternset>
+        <include name="**/*.spp"/>
+        <include name="**/idna_rules.res"/>
+      </patternset>
+    </unjar>
+  </target>
+
+
+
+  <target name="excludeCharset" depends="core" description="excludes charset module from ICU4J">
+    <delete failonerror="yes">
+      <fileset dir="${build.dir}/com/ibm/icu/impl/data/icudt${icu4j.data.version.number}b/">
+        <include name="*.cnv" />
+        <include name="cnvalias.icu" />
+      </fileset>
+      <fileset dir="${build.dir}/com/ibm/icu/charset" />
+      <fileset dir="${build.dir}/META-INF/" />
+    </delete>
+  </target>
+  <target name="excludeCharsetTests" depends="tests" description="excludes charset  test from ICU4J">
+    <delete failonerror="yes">
+      <fileset dir="${build.dir}/com/ibm/icu/dev/test/charset" />
+    </delete>
+  </target>
+
+  <target name="moduleCheck" depends="initBase" description="run tests for module jar">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-nothrow" />
+      <arg value="-nodata" />
+      <classpath>
+        <pathelement location="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <!-- build the extra Transliterator data pertaining to Han-Latin transliteration -->
+  <target name="extraTransliteratorData" depends="initBase" description="build han-to-latin transliterator data (normally omitted)">
+    <copy todir="${build.dir}/com/ibm/icu/impl/data">
+      <fileset dir="${src.dir}/com/ibm/icu/impl/data" includes="Transliterator_Han_Latin_*.txt" />
+    </copy>
+  </target>
+
+  <!-- Target for builing XLIFF2ICUConverter Jar -->
+
+  <target name="xliff" depends="init" description="build xliff converter tool">
+    <javac sourcepath="" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off">
+
+      <include name="com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java" />
+      <include name="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java" />
+      <include name="com/ibm/icu/dev/tool/UOption.java" />
+      <include name="com/ibm/icu/dev/tool/xmlcomparator/XMLValidator.java" />
+    </javac>
+    <jar jarfile="xliff.jar" compress="true" includes="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter*.class,com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.class,com/ibm/icu/dev/tool/UOption.class" basedir="${build.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="XLIFF To ICU Converter" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="XLIFF2ICUConverter" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+
+    <jar jarfile="xliff-src.jar" compress="true" includes="com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java,com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java,com/ibm/icu/dev/tool/UOption.java" basedir="${src.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="XLIFF To ICU Converter Sources" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="XLIFF2ICUConverter Sources" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <!-- Target for builing Utilities Jar for CLDR -->
+
+  <target name="cldrUtil" depends="init" description="build Utilities for CLDR">
+    <javac srcdir="${src.dir}" destdir="${build.dir}" source="${icu4j.javac.source}" target="${icu4j.javac.target}" classpathref="build.classpath" debug="on" deprecation="off">
+
+      <include name="com/ibm/icu/dev/test/TestFmwk.java" />
+      <include name="com/ibm/icu/dev/test/util/*.java" />
+      <include name="com/ibm/icu/dev/tool/UOption.java" />
+    </javac>
+    <jar jarfile="utilities.jar" compress="true" includes="com/ibm/icu/dev/test/util/*.class,com/ibm/icu/dev/test/TestFmwk*.class,com/ibm/icu/dev/test/AbstractTest*.class,com/ibm/icu/dev/test/TestLog*.class,com/ibm/icu/dev/tool/UOption*.class" basedir="${build.dir}">
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="Utilities for CLDR Tools" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="CLDR Utilities" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <!--Target for building jars -->
+  <target name="distJars" depends="jarSrc, jar, jarDocs" />
+
+  <!-- Target for checking the loading of bundles from the default package.
+          This is hack to get around Eclipse's build problems. 
+     -->
+  <target name="defaultPackage" depends="tests" description="Tests for loading resources in the default package">
+    <copy file="${src.dir}/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp" tofile="${src.dir}/TestDefaultPackageLoading.java" />
+    <copy file="${src.dir}/com/ibm/icu/dev/test/util/TestData_en.jpp" tofile="${src.dir}/TestData_en.java" />
+    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off">
+
+      <exclude name="**/CVS/**/*" />
+      <include name="TestData_en.java" />
+      <include name="TestDefaultPackageLoading.java" />
+    </javac>
+    <!-- copy the file to default package and test if we can load it -->
+    <copy file="${build.dir}/com/ibm/icu/dev/data/testdata/te.res" todir="${build.dir}/" />
+    <!-- copy the file up one level and test if java style base name loading works -->
+    <copy file="${build.dir}/com/ibm/icu/dev/data/testdata/te.res" tofile="${build.dir}/com/ibm/icu/dev/data/TestData_bge.res" />
+  </target>
+
+  <target name="defaultPackageCheck" depends="tests, defaultPackage" description="Run Tests for loading resources in the default package">
+    <!--run the tests -->
+    <java classname="TestDefaultPackageLoading" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <!-- convert @deprecated @draft tags to @provisional -->
+  <target name="swatDeprecated" depends="initBase, tools" unless="before.java14">
+    <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated" classpath="${build.dir}" failonerror="true">
+      <arg value="-src" />
+      <arg value="${src.dir}" />
+      <arg value="-dst" />
+      <arg value="${src.dir}" />
+      <arg value="-overwrite" />
+      <arg value="-verbose" />
+    </java>
+  </target>
+
+  <!-- convert @provisional tags to @deprecated -->
+  <target name="restoreDeprecated" depends="initBase, tools" unless="before.java14">
+    <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated" classpath="${build.dir}" failonerror="true">
+      <arg value="-prov" />
+      <arg value="-src" />
+      <arg value="${src.dir}" />
+      <arg value="-dst" />
+      <arg value="${src.dir}" />
+      <arg value="-overwrite" />
+      <arg value="-verbose" />
+    </java>
+  </target>
+
+<!-- Eclipse plug-in build targets --> 
+  <!-- for building eclipse distribution -->
+  <target name="initIcuEclipseVersion" depends="initBase">
+    <tstamp>
+      <format property="build.date" pattern="yyyyMMdd"/>
+    </tstamp>
+    <property name="icu4j.eclipse.build.version.string" value="${icu4j.plugin.impl.version.string}.v${build.date}"/>
+  </target>
+
+  <target name="eclipseProjects" 
+          depends="eclipseCoreProject,eclipseTestProject,eclipseWrapperProject,eclipseFragmentProject"
+          description="create all eclipse icu projects"/>
+
+  <target name="eclipsePDEBuild"
+          depends="initEclipsePDEBuildEnv, eclipseProjects"
+          description="build icu4j plugin files">
+
+    <!-- copy OSGi jar file to baseLocation -->
+    <mkdir dir="${eclipse.projects.dir}/baseLocation/features"/>
+    <mkdir dir="${eclipse.projects.dir}/baseLocation/plugins"/>
+    <copy toDir="${eclipse.projects.dir}/baseLocation/plugins" file="${eclipse.osgi.jar}"/>
+
+    <!-- copy PDE build script files and run the build -->
+    <pathconvert property="eclipse.projects.dir.full" dirsep="/">
+      <path location="${basedir}/${eclipse.projects.dir}"/>
+    </pathconvert>
+    <antcall target="runEclipsePDEBuild">
+      <param name="icu.plugin.id" value="com.ibm.icu"/>
+    </antcall>
+    <antcall target="runEclipsePDEBuild">
+      <param name="icu.plugin.id" value="com.ibm.icu.base"/>
+    </antcall>
+    <antcall target="runEclipsePDEBuild">
+      <param name="icu.plugin.id" value="com.ibm.icu.jse4"/>
+    </antcall>
+  </target>
+
+  <target name="initEclipsePDEBuildEnv"
+          depends="initBase,initEclipseHome,initEclipseLauncher,initEclipseOSGiJar,initEclipsePDE"
+          description="Initialize eclipse PDE build environment">
+    <echo message="[PDE build configuration properties]"/>
+    <echo message="    Eclipse home:    ${eclipse.home}"/>
+    <echo message="    Launcher jar:    ${eclipse.launcher}"/>
+    <echo message="    OSGi bundle jar: ${eclipse.osgi.jar}"/>
+    <echo message="    Base OS:         ${eclipse.baseos}"/>
+    <echo message="    Base WS:         ${eclipse.basews}"/>
+    <echo message="    Base ARCH:       ${eclipse.basearch}"/>
+  </target>
+
+  <target name="initEclipseHome"
+          if="env.ECLIPSE_HOME"
+          unless="eclipse.home"
+          description="Initialize the property eclipse.home from the environment variable ECLIPSE_HOME">
+    <property name="eclipse.home" value="${env.ECLIPSE_HOME}"/>
+  </target>
+
+  <target name="initEclipseLauncher"
+          if="eclipse.home"
+          description="Locate org.eclipse.equinox.launcher jar file for eclipse 3.3 and beyond">
+    <first id="equinox.launcher">
+      <fileset dir="${eclipse.home}/plugins">
+        <include name="org.eclipse.equinox.launcher_*.jar"/>
+      </fileset>
+    </first>
+    <pathconvert property="eclipse.launcher" dirsep="/" refid="equinox.launcher"/>
+  </target>
+
+  <target name="initEclipseOSGiJar"
+          if="eclipse.home"
+          description="Locate org.eclipse.osgi plugin jar file">
+    <first id="osgi.bundle">
+      <fileset dir="${eclipse.home}/plugins">
+        <include name="org.eclipse.osgi_*.jar"/>
+      </fileset>
+    </first>
+    <pathconvert property="eclipse.osgi.jar" dirsep="/" refid="osgi.bundle"/>
+  </target>
+
+  <target name="initEclipsePDE"
+          depends="locateEclipsePDE"
+          if="eclipse.pde.dir"
+          description="Set up PDE runtime arguments">
+    <property file="${eclipse.pde.dir}/templates/headless-build/build.properties" prefix="pde.template"/>
+    <property name="eclipse.baseos" value="${pde.template.baseos}"/>
+    <property name="eclipse.basews" value="${pde.template.basews}"/>
+    <property name="eclipse.basearch" value="${pde.template.basearch}"/>
+  </target>
+
+  <target name="locateEclipsePDE"
+          if="eclipse.home"
+          description="Locate org.eclipse.pde.build plug-in and set the property 'eclipse.pde.dir'">
+    <first id="eclipse.pde.plugin.dir">
+      <dirset dir="${eclipse.home}/plugins">
+        <include name="org.eclipse.pde.build_*"/>
+      </dirset>
+    </first>
+    <pathconvert property="eclipse.pde.dir" dirsep="/" refid="eclipse.pde.plugin.dir"/>
+  </target>
+
+  <target name="runEclipsePDEBuild">
+    <mkdir dir="${eclipse.projects.dir}/buildScripts/${icu.plugin.id}"/>
+      <copy toDir="${eclipse.projects.dir}/buildScripts/${icu.plugin.id}">
+        <fileset dir="${eclipse.dir}/pdebuild" includes="**/*"/>
+          <filterset>
+            <filter token="PLUGIN_ID" value="${icu.plugin.id}"/>
+            <filter token="BUILD_DIR" value="${eclipse.projects.dir.full}"/>
+            <filter token="BUILD_TYPE" value="ICU4J"/>
+            <filter token="BUILD_ID" value="${icu.plugin.id}"/>
+            <filter token="BASE_LOCATION" value="${eclipse.projects.dir.full}/baseLocation"/>
+            <filter token="BASE_OS" value="${eclipse.baseos}"/>
+            <filter token="BASE_WS" value="${eclipse.basews}"/>
+            <filter token="BASE_ARCH" value="${eclipse.basearch}"/>
+          </filterset>
+      </copy>
+
+      <java jar="${eclipse.launcher}" fork="true" failonerror="true">
+        <arg value="-application"/>
+        <arg value="org.eclipse.ant.core.antRunner"/>
+        <arg value="-buildfile"/>
+        <arg value="${eclipse.pde.dir}/scripts/build.xml"/>
+        <arg value="-Dbuilder=${eclipse.projects.dir.full}/buildScripts/${icu.plugin.id}"/>
+      </java>
+  </target>
+
+  <target name="eclipseMangle" depends="buildMangle">
+    <antcall target="doMangle">
+      <param name="target.defs" value="FOUNDATION10" />
+      <param name="input.file" value="@preprocessor.txt" />
+    </antcall>
+  </target>
+
+  <target name="eclipseCore" depends="coreData,icudata,durationdata,eclipseMangle">
+    <javac  includes="com/ibm/icu/util/**/*.java,com/ibm/icu/text/**/*.java,com/ibm/icu/math/**/*.java,com/ibm/icu/impl/**/*.java,com/ibm/icu/lang/*.java"
+            compiler="javac1.3"
+            srcdir="${src.dir}"
+            destdir="${build.dir}"
+            classpathref="build.classpath"
+            bootclasspath="ee.foundation.jar"
+            source="1.3"
+            target="1.1"
+            debug="on"
+            deprecation="off"
+            encoding="ascii" />
+    <antcall target="indices" />
+    <jar jarfile="${jar.file}" compress="true">
+      <fileset dir="${basedir}" includes="license.html, unicode-license.txt" />
+      <fileset dir="${build.dir}">
+        <exclude name="META-INF/services/**/*" />
+        <exclude name="com/ibm/icu/charset/**/*" />
+        <exclude name="${icu4j.data.path}/*.cnv" />
+        <exclude name="${icu4j.data.path}/cnvalias.icu" />
+        <include name="com/ibm/icu/util/**/*" />
+        <include name="com/ibm/icu/text/**/*" />
+        <include name="com/ibm/icu/math/**/*" />
+        <include name="com/ibm/icu/impl/**/*" />
+        <include name="com/ibm/icu/lang/**/*" />
+      </fileset>
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Eclipse Build" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="ICU for Java Eclipse plug-in" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="eclipseCoreProject"
+          depends="eclipseCore,initIcuEclipseVersion"
+          description="gather eclipse icu core project files">
+    <delete failonerror="no">
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu" />
+      <fileset dir="${eclipse.projects.dir}/features/com.ibm.icu" />
+    </delete>
+
+    <!-- PLUGIN FILES -->
+    <!-- icu source -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu/src/com/ibm/icu">
+      <fileset dir="src/com/ibm/icu"
+               includes="impl/**/*,lang/**/*,math/**/*,text/**/*,util/**/*"
+               excludes="**/.svn/**/*,**/*.jar,**/Transliterator_Han_Latin*.txt" />
+    </copy>
+    <!-- overwriting the ICU runtime configuration file for forcing ICU4J plugin to use JDK time zone rules -->
+    <copy file="${eclipse.dir}/misc/ICUConfig.properties"
+      toDir="${eclipse.projects.dir}/plugins/com.ibm.icu/src/com/ibm/icu"
+      overwrite="true"/>
+    <!-- icu data -->
+    <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu/src/com/ibm/icu/impl/data">
+      <fileset dir="${build.dir}/com/ibm/icu/impl/data"
+               includes="**/*.brk,**/*.icu,**/*.res,**/*.spp,**/*.txt,**/*.ctd"
+               excludes="**/Transliterator_Han_Latin*.txt" />
+    </copy>
+    <!-- plugin project -->
+    <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu">
+      <fileset dir="${eclipse.dir}/plugins/com.ibm.icu" excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="IMPL_VERSION" value="${icu4j.impl.version.string}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+    <!-- license -->
+    <copy file="license.html"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu/about_files" />
+    <!-- ucd terms -->
+    <copy file="src/com/ibm/icu/dev/data/unicode/ucdterms.txt"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu/about_files" />
+    <!-- about -->
+    <copy file="${eclipse.dir}/misc/about_icu.html"
+          tofile="${eclipse.projects.dir}/plugins/com.ibm.icu/about.html" />
+
+    <!-- FEATURE FILES -->
+    <copy todir="${eclipse.projects.dir}/features/com.ibm.icu">
+      <fileset dir="${eclipse.dir}/features/com.ibm.icu" excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+  </target>
+
+  <!-- ensure eclipse wrapper code builds with foundation1.0/java1.3 -->
+  <target name="eclipseWrapper" depends="initBase">
+    <mkdir dir="${wrapper.build.dir}" />
+    <javac includes="com/ibm/icu/util/**/*.java,com/ibm/icu/text/**/*.java"
+           compiler="javac1.3"
+           srcdir="${eclipse.dir}/plugins/com.ibm.icu.base/src"
+           destdir="${wrapper.build.dir}"
+           classpathref="build.classpath"
+           bootclasspath="ee.foundation.jar"
+           source="1.3"
+           target="1.1"
+           debug="on" 
+           deprecation="off"
+           encoding="ascii" />
+    <jar jarfile="${jdk.wrapper.jar.file}"
+         compress="true"
+         basedir="${wrapper.build.dir}" />
+  </target>
+
+  <target name="eclipseWrapperTest" depends="eclipseWrapper">
+    <!-- TODO: build the wrapper test code this ant target -->
+  </target>
+
+  <target name="eclipseWrapperProject"
+          depends="eclipseWrapper,eclipseWrapperTest,initIcuEclipseVersion"
+          description="gather eclipse icu core project files">
+    <delete failonerror="no">
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.base" />
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.base.tests" />
+      <fileset dir="${eclipse.projects.dir}/features/com.ibm.icu.base" />
+    </delete>
+    <!-- PLUGIN FILES -->
+    <!-- source and project files -->
+    <copy todir="${eclipse.projects.dir}/plugins">
+      <fileset dir="${eclipse.dir}/plugins"
+               includes="com.ibm.icu.base/**/*,com.ibm.icu.base.tests/**/*"
+               excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="IMPL_VERSION" value="${icu4j.impl.version.string}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+    <!-- license -->
+    <copy file="license.html"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu.base/about_files" />
+    <!-- about -->
+    <copy file="${eclipse.dir}/misc/about_icu_base.html"
+          tofile="${eclipse.projects.dir}/plugins/com.ibm.icu.base/about.html" />
+
+    <!-- FEATURE FILES -->
+    <!-- project files -->
+    <copy todir="${eclipse.projects.dir}/features/com.ibm.icu.base">
+      <fileset dir="${eclipse.dir}/features/com.ibm.icu.base"
+               excludes="**/.svn/**/*"/>
+      <filterset>
+      <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+  </target>
+
+  <target name="eclipseTests"
+          depends="eclipseCore,testdata,eclipseMangle"
+          description="build tests trimmed for eclipse API">
+    <!-- TODO: we should actually use ee.foundation.jar for eclipse env -->
+    <javac includes="com/ibm/icu/dev/test/**/*.java"
+           excludes="com/ibm/icu/dev/test/charset/**/*.*,com/ibm/icu/dev/test/perf/**/*.*"
+           srcdir="${src.dir}"
+           destdir="${build.dir}"
+           source="1.3"
+           target="1.3"
+           classpathref="build.classpath"
+           debug="on"
+           deprecation="off" />
+    <antcall target="indices"/>
+    <jar jarfile="${testjar.file}" compress="true">
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/test/**/*" />
+      <fileset dir="${build.dir}" includes="com/ibm/icu/dev/data/**/*" />
+      <manifest>
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Eclipse Tests"/>
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}"/>
+          <attribute name="Specification-Vendor" value="ICU"/>
+          <attribute name="Implementation-Title" value="ICU for Java Eclipse plug-in Tests"/>
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}"/> 
+          <attribute name="Implementation-Vendor" value="${corp}"/>
+          <attribute name="Implementation-Vendor-Id" value="com.ibm"/>
+          <attribute name="Copyright-Info" value="${copyright}"/>
+          <attribute name="Sealed" value="false"/>
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="eclipseTestProject" depends="eclipseTests,eclipseZipTestSrc" description="gather eclipse icu test project files">
+    <delete failonerror="no">
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests"/>
+    </delete>
+    <!-- copy eclipse test source and project files -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests">
+      <fileset  dir="${eclipse.dir}/plugins/com.ibm.icu.tests"
+                excludes="**/.svn/**/"/>
+      <filterset>
+        <filter token="COPYRIGHT" value="${copyright.eclipse}"/>
+      </filterset>
+    </copy>
+    <!-- copy icu test jar -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests" file="${testjar.file}"/>
+    <!-- copy icu test source zip -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.tests" file="${zipTestSrc.file}"/>
+  </target>
+
+  <target name="eclipseFragmentMangle" depends="buildMangle">
+    <antcall target="initSrc"/>
+    <antcall target="doMangle">
+      <param name="target.defs" value="ECLIPSE_FRAGMENT" />
+      <param name="input.file" value="@eclipseFragment.txt" />
+    </antcall>
+  </target>
+
+  <target name="eclipseFragment" depends="eclipseCore,eclipseFragmentMangle">
+    <javac compiler="javac1.4"
+           srcdir="${src.dir}"
+           destdir="${build.dir}"
+           classpathref="build.classpath"
+           source="1.3"
+           target="1.2"
+           debug="on"
+           deprecation="off"
+           encoding="ascii"
+           listfiles="true">
+      <include name="com/ibm/icu/impl/DateNumberFormat.java" />
+      <include name="com/ibm/icu/impl/duration/BasicDurationFormat.java" />
+      <include name="com/ibm/icu/impl/ICUResourceBundleReader.java" />
+      <include name="com/ibm/icu/impl/PatternTokenizer.java" />
+      <include name="com/ibm/icu/impl/Utility.java" />
+      <include name="com/ibm/icu/lang/UCharacter.java" />
+      <include name="com/ibm/icu/math/BigDecimal.java" />
+      <include name="com/ibm/icu/text/Bidi.java" />
+      <include name="com/ibm/icu/text/ChineseDateFormat.java" />
+      <include name="com/ibm/icu/text/DateFormat.java" />
+      <include name="com/ibm/icu/text/DateTimePatternGenerator.java" />
+      <include name="com/ibm/icu/text/DecimalFormat.java" />
+      <include name="com/ibm/icu/text/DigitList.java" />
+      <include name="com/ibm/icu/text/MessageFormat.java" />
+      <include name="com/ibm/icu/text/NumberFormat.java" />
+      <include name="com/ibm/icu/text/RuleBasedBreakIterator.java" />
+      <include name="com/ibm/icu/text/RuleBasedNumberFormat.java" />
+      <include name="com/ibm/icu/text/SimpleDateFormat.java" />
+      <include name="com/ibm/icu/text/UnicodeSet.java" />
+      <include name="com/ibm/icu/text/UTF16.java" />
+    </javac>
+
+    <!-- collect fragment specific files -->
+    <jar jarfile="${fragment.jar.file}" compress="true">
+      <fileset dir="${build.dir}">
+        <include name="com/ibm/icu/impl/DateNumberFormat.class" />
+        <include name="com/ibm/icu/impl/duration/BasicDurationFormat.class" />
+        <include name="com/ibm/icu/impl/ICUResourceBundleReader.class" />
+        <include name="com/ibm/icu/impl/PatternTokenizer.class" />
+        <include name="com/ibm/icu/impl/Utility.class" />
+        <include name="com/ibm/icu/lang/UCharacter.class" />
+        <include name="com/ibm/icu/math/BigDecimal.class" />
+        <include name="com/ibm/icu/text/Bidi.class" />
+        <include name="com/ibm/icu/text/ChineseDateFormat.class" />
+        <include name="com/ibm/icu/text/DateFormat.class" />
+        <include name="com/ibm/icu/text/DateTimePatternGenerator.class" />
+        <include name="com/ibm/icu/text/DecimalFormat.class" />
+        <include name="com/ibm/icu/text/DigitList.class" />
+        <include name="com/ibm/icu/text/MessageFormat.class" />
+        <include name="com/ibm/icu/text/NumberFormat.class" />
+        <include name="com/ibm/icu/text/RuleBasedBreakIterator.class" />
+        <include name="com/ibm/icu/text/RuleBasedNumberFormat.class" />
+        <include name="com/ibm/icu/text/SimpleDateFormat.class" />
+        <include name="com/ibm/icu/text/UnicodeSet.class" />
+        <include name="com/ibm/icu/text/UTF16.class" />
+
+        <include name="com/ibm/icu/lang/UCharacter$*.class" />
+        <include name="com/ibm/icu/text/Bidi$*.class" />
+        <include name="com/ibm/icu/text/ChineseDateFormat$*.class" />
+        <include name="com/ibm/icu/text/DateFormat$*.class" />
+        <include name="com/ibm/icu/text/DateTimePatternGenerator$*.class" />
+        <include name="com/ibm/icu/text/MessageFormat$*.class" />
+        <include name="com/ibm/icu/text/NumberFormat$*.class" />
+        <include name="com/ibm/icu/text/SimpleDateFormat$*.class" />
+        <include name="com/ibm/icu/text/UnicodeSet$*.class" />
+        <include name="com/ibm/icu/text/UTF16$*.class" />
+      </fileset>
+    </jar>
+  </target>
+
+  <target name="eclipseFragmentProject"
+          depends="eclipseFragment,initIcuEclipseVersion"
+          description="gather eclipse icu fragment project files">
+    <delete failonerror="no">
+      <fileset dir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4" />
+      <fileset dir="${eclipse.projects.dir}/features/com.ibm.icu.jse4" />
+    </delete>
+
+    <!-- PLUGIN FILES -->
+    <!-- source -->
+    <copy toDir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4/src">
+      <!-- TODO: Better way to collect files? -->
+      <fileset dir="${src.dir}">
+        <include name="com/ibm/icu/impl/DateNumberFormat.java" />
+        <include name="com/ibm/icu/impl/duration/BasicDurationFormat.java" />
+        <include name="com/ibm/icu/impl/ICUResourceBundleReader.java" />
+        <include name="com/ibm/icu/impl/PatternTokenizer.java" />
+        <include name="com/ibm/icu/impl/Utility.java" />
+        <include name="com/ibm/icu/lang/UCharacter.java" />
+        <include name="com/ibm/icu/math/BigDecimal.java" />
+        <include name="com/ibm/icu/text/Bidi.java" />
+        <include name="com/ibm/icu/text/ChineseDateFormat.java" />
+        <include name="com/ibm/icu/text/DateFormat.java" />
+        <include name="com/ibm/icu/text/DateTimePatternGenerator.java" />
+        <include name="com/ibm/icu/text/DecimalFormat.java" />
+        <include name="com/ibm/icu/text/DigitList.java" />
+        <include name="com/ibm/icu/text/MessageFormat.java" />
+        <include name="com/ibm/icu/text/NumberFormat.java" />
+        <include name="com/ibm/icu/text/RuleBasedBreakIterator.java" />
+        <include name="com/ibm/icu/text/RuleBasedNumberFormat.java" />
+        <include name="com/ibm/icu/text/SimpleDateFormat.java" />
+        <include name="com/ibm/icu/text/UnicodeSet.java" />
+        <include name="com/ibm/icu/text/UTF16.java" />
+      </fileset>
+    </copy>
+    <!-- project files -->
+    <copy todir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4">
+      <fileset  dir="${eclipse.dir}/plugins/com.ibm.icu.jse4"
+                excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="IMPL_VERSION" value="${icu4j.impl.version.string}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+    <!-- license -->
+    <copy file="license.html"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4/about_files" />
+    <!-- ucd terms -->
+    <copy file="src/com/ibm/icu/dev/data/unicode/ucdterms.txt"
+          todir="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4/about_files" />
+    <!-- about -->
+    <copy file="${eclipse.dir}/misc/about_icu.html"
+          tofile="${eclipse.projects.dir}/plugins/com.ibm.icu.jse4/about.html" />
+
+    <!-- FEATURE FILES -->
+    <!-- project files -->
+    <copy todir="${eclipse.projects.dir}/features/com.ibm.icu.jse4">
+      <fileset  dir="${eclipse.dir}/features/com.ibm.icu.jse4"
+                excludes="**/.svn/**/*" />
+      <filterset>
+        <filter token="BUILD_VERSION" value="${icu4j.eclipse.build.version.string}" />
+        <filter token="COPYRIGHT" value="${copyright.eclipse}" />
+        <filter token="DATA_VERSION_NUMBER" value="${icu4j.data.version.number}" />
+      </filterset>
+    </copy>
+  </target>
+
+  <target name="eclipseZipTestSrc" depends="eclipseMangle" description="build zip of test sources for debugging">
+    <!-- for eclipse -->
+    <zip destfile="${zipTestSrc.file}" compress="true" basedir="${src.dir}" includes="com/ibm/icu/dev/test/**/*" excludes="com/ibm/icu/dev/test/cldr/**/*, com/ibm/icu/dev/test/perf/**/*" />
+  </target>
+
+  <target name="gatherICU4JWrapperAPI" depends="tools" unless="before.java14">
+    <javadoc classpath="${build.dir}" sourcepath="${src.dir}" packagenames="com.ibm.icu.text,com.ibm.icu.util" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${build.dir}">
+        <param name="-name" value="ICU4J 3.6" />
+        <param name="-base" value="com.ibm.icu" />
+        <param name="-output" value="${api.dir}/icu4j36w_i.api" />
+        <param name="-filter" value="BreakIterator|CollationKey|Collator|DateFormat|DecimalFormat|MessageFormat|NumberFormat|SimpleDateFormat|StringTokenizer|Calendar|TimeZone|ULocale|DateFormatSymbols|DecimalFormatSymbols|Calendar|TimeZone" />
+        <!-- param name="-gzip"/ -->
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="gatherEclipseWrapperAPI" depends="tools" unless="before.java14">
+    <javadoc classpath="${build.dir}" sourcepath="${src.dir}/com/ibm/icu/dev/eclipse/com.ibm.icu.base/src" packagenames="com.ibm.icu.text,com.ibm.icu.util" source="1.4">
+      <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${build.dir}">
+        <param name="-name" value="ICU4J 3.6 Wrapper" />
+        <param name="-base" value="com.ibm.icu" />
+        <param name="-output" value="${api.dir}/icu4j36w_e.api" />
+        <!-- param name="-gzip"/ -->
+      </doclet>
+    </javadoc>
+  </target>
+
+  <target name="reportWrapperAPI" depends="tools" unless="before.java14">
+    <java classname="com.ibm.icu.dev.tool.docs.ReportAPI" classpath="${build.dir}" failonerror="true">
+      <arg value="-old:" />
+      <arg value="${api.dir}/icu4j${icu4j.previous.version.number}w_i.api" />
+      <arg value="-new:" />
+      <arg value="${api.dir}/icu4j${icu4j.version.number}w_e.api" />
+      <arg value="-html" />
+      <arg value="-out:" />
+      <arg value="${api.dir}/icu4j_compare_${icu4j.previous.version.number}_wrapper_java.html" />
+    </java>
+  </target>
+
+<!-- Test suite launcher targets -->
+  <target name="runCheck" depends="tests">
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="${jar.file}" />
+        <pathelement location="${charsets.jar.file}" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="eclipseRunCheck" depends="eclipseTests">
+    <delete dir="${build.dir}/META-INF"/>
+    <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="${test.jvm.args}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${java.class.path}/" />
+        <pathelement location="icu4j.jar" />
+        <pathelement location="clover.jar" />
+        <pathelement path="${build.dir}" />
+      </classpath>
+    </java>
+  </target>
+
+  <target name="eclipseCompat" depends="initBase, eclipseCore" />
+  <target name="eclipseCompatTests" depends="initBase, eclipseTests" />
+  <target name="eclipseCompatCheck" depends="initBase, eclipseCompat, eclipseCompatTests, deleteCore, eclipseRunCheck" />
+
+<!-- ICU TimeZone Update Utility targets -->
+  <target name="icutzu" depends="init" description="build ICU4J TimeZone Update Utility Classes">
+    <javac includes="${tzu.src.path}/**/*.java" excludes="**/.svn/**/*" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" source="${icu4j.javac.source}" target="${icu4j.javac.target}" debug="on" deprecation="off" encoding="ascii" />
+  </target>
+
+  <target name="icutzudata" depends="initBase, jar">
+    <mkdir dir="${tzu.bin.dir}" />
+    <copy todir="${tzu.bin.dir}">
+      <fileset dir="${src.dir}/${tzu.src.path}">
+        <include name="*.cmd" />
+        <include name="*.bat" />
+        <include name="*.sh" />
+        <include name="*.gif" />
+        <include name="*.txt" />
+        <include name="*.html" />
+        <include name="*.css" />
+      </fileset>
+      <fileset file="${basedir}/${jar.file}" />
+      <fileset file="${build.dir}/${icu4j.data.path}/zoneinfo.res" />
+      <fileset file="${build.dir}/${icu4j.data.path}/metazoneInfo.res" />
+    </copy>
+  </target>
+
+  <target name="icutzujar" depends="initBase, icutzu, icutzudata" description="build ICU4J TimeZone Update Utility classes">
+    <jar jarfile="${tzu.bin.dir}/${tzu.jar.file}" compress="true">
+      <fileset dir="${basedir}" includes="license.html" />
+      <fileset dir="${build.dir}" includes="${tzu.src.path}/**/*.class" />
+      <manifest>
+        <attribute name="Main-Class" value="com.ibm.icu.dev.tool.tzu.ICUTZUMain" />
+        <attribute name="Built-By" value="${corp}" />
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J TimeZone Update Utility" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value="ICUTZU" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+    <echo message="Please see ${tzu.bin.dir} directory for the files." />
+  </target>
+
+  <target name="icutzucheck" depends="icutzujar" description="check ICU4J TimeZone Update Utility">
+    <echo>Testing ICUTZU ...</echo>
+
+    <mkdir dir="${tzu.temp.dir}" />
+    <move todir="${tzu.temp.dir}">
+      <fileset file="${tzu.bin.dir}/DirectorySearch.txt" />
+      <fileset file="${tzu.bin.dir}/zoneinfo.res" />
+      <fileset file="${tzu.bin.dir}/metazoneInfo.res" />
+    </move>
+
+    <echo file="${tzu.bin.dir}/DirectorySearch.txt">+${tzu.test.dir}</echo>
+    <get dest="${tzu.bin.dir}/zoneinfo.res" src="http://icu-project.org/tzdata/2008d/be/zoneinfo.res" />
+    <get dest="${tzu.bin.dir}/metazoneInfo.res" src="http://icu-project.org/tzdata/2008d/be/metazoneInfo.res" />
+    <copy todir="${tzu.test.dir}" file="${tzu.bin.dir}/icu4j.jar" />
+
+    <echo>Running ICUTZU in Discovery Mode ...</echo>
+    <exec dir="${tzu.bin.dir}" executable="${java.home}/bin/java">
+      <arg value="-cp" />
+      <arg path="${tzu.bin.dir}/${jar.file};${tzu.bin.dir}/${tzu.jar.file}" />
+      <arg value="-Dnogui=true" />
+      <arg value="-Ddiscoveronly=true" />
+      <arg value="-Dsilentpatch=true" />
+      <arg value="-Doffline=true" />
+      <arg value="com.ibm.icu.dev.tool.tzu.ICUTZUMain" />
+      <arg file="${tzu.bin.dir}" />
+      <arg value="DirectorySearch.txt" />
+      <arg value="ICUList.txt" />
+      <arg value="zoneinfo.res" />
+      <arg value="Temp" />
+      <arg value="icu.gif" />
+    </exec>
+
+    <echo>Running ICUTZU in Patch Mode ...</echo>
+    <exec dir="${tzu.bin.dir}" executable="${java.home}/bin/java">
+      <arg value="-cp" />
+      <arg path="${tzu.bin.dir}/${jar.file};${tzu.bin.dir}/${tzu.jar.file}" />
+      <arg value="-Dnogui=true" />
+      <arg value="-Ddiscoveronly=false" />
+      <arg value="-Dsilentpatch=true" />
+      <arg value="-Doffline=true" />
+      <arg value="com.ibm.icu.dev.tool.tzu.ICUTZUMain" />
+      <arg file="${tzu.bin.dir}" />
+      <arg value="DirectorySearch.txt" />
+      <arg value="ICUList.txt" />
+      <arg value="zoneinfo.res" />
+      <arg value="Temp" />
+      <arg value="icu.gif" />
+    </exec>
+
+    <echo>Comparing results ...</echo>
+    <unjar src="${tzu.test.dir}/${jar.file}" dest="${tzu.test.dir}">
+      <patternset>
+        <include name="**/zoneinfo.res" />
+        <include name="**/metazoneInfo.res" />
+      </patternset>
+    </unjar>
+    <copy todir="${tzu.test.dir}" file="${tzu.test.dir}/${icu4j.data.path}/zoneinfo.res" />
+    <copy todir="${tzu.test.dir}" file="${tzu.test.dir}/${icu4j.data.path}/metazoneInfo.res" />
+
+    <condition property="tzu.zoneinfo.match">
+      <filesmatch file1="${tzu.bin.dir}/zoneinfo.res" file2="${tzu.test.dir}/zoneinfo.res" />
+    </condition>
+    <fail unless="tzu.zoneinfo.match">ICUTZU test failed. ${tzu.bin.dir}/zoneinfo.res does not match ${tzu.test.dir}/zoneinfo.res</fail>
+
+    <condition property="tzu.metazoneinfo.match">
+      <filesmatch file1="${tzu.bin.dir}/metazoneInfo.res" file2="${tzu.test.dir}/metazoneInfo.res" />
+    </condition>
+    <fail unless="tzu.metazoneinfo.match">ICUTZU test failed. ${tzu.bin.dir}/metazoneInfo.res does not match ${tzu.test.dir}/metazoneInfo.res</fail>
+
+    <echo>Cleaning up ...</echo>
+    <move todir="${tzu.bin.dir}">
+      <fileset file="${tzu.temp.dir}/DirectorySearch.txt" />
+      <fileset file="${tzu.temp.dir}/zoneinfo.res" />
+      <fileset file="${tzu.temp.dir}/metazoneInfo.res" />
+    </move>
+    <delete includeEmptyDirs="true">
+        <fileset file="${tzu.temp.dir}" />
+        <fileset dir="${tzu.test.dir}" />
+    </delete>
+    <echo>ICUTZU test successful.</echo>
+  </target>
+
+  <target name="icutzusrc-dist" depends="init" description="ICUTZU source distributable zip">
+    <zip zipfile="${basedir}/${tzu.src.zip.file}" basedir="${basedir}" includes="${src.dir}/${tzu.src.path}/**/*" />
+  </target>
+
+  <target name="icutzubin-dist" depends="icutzujar" description="ICUTZU binaries distributable zip">
+    <zip zipfile="${basedir}/${tzu.bin.zip.file}" basedir="${tzu.bin.dir}" includes="*" />
+  </target>
+</project>
diff --git a/eclipseFragment.txt b/eclipseFragment.txt
new file mode 100644
index 0000000..fd80d93
--- /dev/null
+++ b/eclipseFragment.txt
@@ -0,0 +1,10 @@
+# Copyright (C) 2006-2007, International Business Machines Corporation and
+# others. All Rights Reserved.
+
+# These files contains special code blocks for the ICU Eclipse fragment
+src/com/ibm/icu/impl/ByteBuffer.java
+src/com/ibm/icu/impl/ICUResourceBundleImpl.java
+src/com/ibm/icu/lang/UCharacter.java
+src/com/ibm/icu/text/DecimalFormat.java
+src/com/ibm/icu/text/RuleBasedCollator.java
+src/com/ibm/icu/util/UResourceBundle.java
diff --git a/eclipseProjectMisc/initSrc.launch b/eclipseProjectMisc/initSrc.launch
new file mode 100644
index 0000000..9a1b84e
--- /dev/null
+++ b/eclipseProjectMisc/initSrc.launch
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_BUILD_SCOPE" value="${none}"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/icu4j/src&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_NAME" value="jre1.6.0"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID" value="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_TARGETS" value="initSrc,"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/icu4j}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/eclipseProjectMisc/normSrc.launch b/eclipseProjectMisc/normSrc.launch
new file mode 100644
index 0000000..179d952
--- /dev/null
+++ b/eclipseProjectMisc/normSrc.launch
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_BUILD_SCOPE" value="${none}"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/icu4j/src&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.ui.externaltools.launchGroup"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.ant.internal.ui.antsupport.InternalAntRunner"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_NAME" value="jre1.6.0"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID" value="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_TARGETS" value="normSrc,"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/icu4j}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/ee.foundation.jar b/ee.foundation.jar
new file mode 100644
index 0000000..60168e8
--- /dev/null
+++ b/ee.foundation.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7f730fd4a8ca71fcddc61a4f62490cea7805efffc7eb2b8669942f6d123f7249
+size 1059077
diff --git a/license.html b/license.html
new file mode 100644
index 0000000..ba2871a
--- /dev/null
+++ b/license.html
@@ -0,0 +1,51 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></meta>
+<title>ICU License - ICU 1.8.1 and later</title>
+</head>
+
+<body BGCOLOR="#ffffff">
+<h2>ICU License - ICU 1.8.1 and later</h2>
+
+<p>COPYRIGHT AND PERMISSION NOTICE</p>
+
+<p>
+Copyright (c) 1995-2009 International Business Machines Corporation and others
+</p>
+<p>
+All rights reserved.
+</p>
+<p>
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies
+of the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+</p>
+<p>
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL
+THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM,
+OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.
+</p>
+<p>
+Except as contained in this notice, the name of a copyright holder shall not be
+used in advertising or otherwise to promote the sale, use or other dealings in
+this Software without prior written authorization of the copyright holder.
+</p>
+
+<hr>
+<p><small>
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+</small></p>
+</body>
+</html>
diff --git a/localespi/.classpath b/localespi/.classpath
new file mode 100644
index 0000000..78c99a3
--- /dev/null
+++ b/localespi/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/**" kind="src" path="src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/Java6"/>
+	<classpathentry kind="output" path="classes"/>
+</classpath>
diff --git a/localespi/.externalToolBuilders/localespi_jar.launch b/localespi/.externalToolBuilders/localespi_jar.launch
new file mode 100644
index 0000000..05caed4
--- /dev/null
+++ b/localespi/.externalToolBuilders/localespi_jar.launch
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="jar,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AUTO_TARGETS" value="jar,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="jar,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${project}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j/localespi/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-localespi"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-localespi/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/icu4j-localespi}"/>
+</launchConfiguration>
diff --git a/localespi/.project b/localespi/.project
new file mode 100644
index 0000000..f754268
--- /dev/null
+++ b/localespi/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-localespi</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+			<triggers>auto,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>LaunchConfigHandle</key>
+					<value>&lt;project&gt;/.externalToolBuilders/localespi_jar.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/localespi/.settings/org.eclipse.core.resources.prefs b/localespi/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..5dcfaac
--- /dev/null
+++ b/localespi/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Jun 03 11:37:05 EDT 2008
+eclipse.preferences.version=1
+encoding/<project>=US-ASCII
diff --git a/localespi/.settings/org.eclipse.jdt.core.prefs b/localespi/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f814717
--- /dev/null
+++ b/localespi/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,274 @@
+#Tue May 20 15:13:23 EDT 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.codeComplete.argumentPrefixes=
+org.eclipse.jdt.core.codeComplete.argumentSuffixes=
+org.eclipse.jdt.core.codeComplete.fieldPrefixes=
+org.eclipse.jdt.core.codeComplete.fieldSuffixes=
+org.eclipse.jdt.core.codeComplete.localPrefixes=
+org.eclipse.jdt.core.codeComplete.localSuffixes=
+org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
+org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=80
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
diff --git a/localespi/.settings/org.eclipse.jdt.ui.prefs b/localespi/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..2499b0e
--- /dev/null
+++ b/localespi/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Tue Jun 03 11:18:15 EDT 2008
+eclipse.preferences.version=1
+formatter_profile=_ICU4J standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n *******************************************************************************\r\n * Copyright (C) ${year}, International Business Machines Corporation and         *\r\n * others. All Rights Reserved.                                                *\r\n *******************************************************************************\r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/localespi/build.xml b/localespi/build.xml
new file mode 100644
index 0000000..d1a8f4f
--- /dev/null
+++ b/localespi/build.xml
@@ -0,0 +1,119 @@
+<!--
+/*
+*******************************************************************************
+* Copyright (C) 2008, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+* This is the ant build file for ICU4J Locale SPI implementation.
+*/
+-->
+<project name="icu4j-localespi" default="build-jar" basedir=".">
+  <property file="../build.properties"/>
+  <property name="build.dir" value="classes"/>
+  <property name="src.dir" value="src"/>
+  <property name="javac.src.ver" value="1.6"/>
+  <property name="javac.bin.ver" value="1.6"/>
+  <property name="jar.file" value="icu4j-localespi.jar"/>
+  <property name="icu4j.jar.file" value="../icu4j.jar"/>
+  <property name="icu4j.build.dir" value="../classes"/>
+  <property name="icu4j.core.build.file" value="../build.xml"/>
+  <property name="ext.dir" value="ext"/>
+  <condition property="is.java6">
+    <contains string="${java.version}" substring="1.6."/>
+  </condition>
+  <available file="${icu4j.jar.file}" property="is.icu4j.jar.available"/>
+
+  <target name="check-env-java6" unless="is.java6">
+    <echo message="######################## ERROR ########################"/>
+    <echo message="Java SE 6 SDK is required for building the ICU4J Locale"/>
+    <echo message="Service Provider module.  Terminating the build task."/>
+    <echo message="#######################################################"/>
+    <fail message="Java SE 6 SDK is required"/>
+  </target>
+
+  <target name="icu4j-jar" unless="is.icu4j.jar.available">
+    <!-- Building icu4j.jar if missing.  We do not want to build
+         icu4j.jar here, because Java 6 is not the standard JDK
+         for icu4j core library. -->
+    <echo message="WARNING: Building icu4j.jar with Java 6"/>
+    <ant antfile="${icu4j.core.build.file}" target="jar" inheritAll="false"/>
+  </target>
+
+  <target name="compile" depends="check-env-java6,icu4j-jar">
+    <mkdir dir="${build.dir}"/>
+    <javac  srcdir="${src.dir}"
+            includes="com/ibm/icu/impl/**/*.java"
+            destdir="${build.dir}"
+            classpath="${icu4j.jar.file}"
+            source="${javac.src.ver}"
+            target="${javac.bin.ver}"
+            debug="on"
+            encoding="ascii">
+    </javac>
+  </target>
+
+  <target name="jar">
+    <jar jarfile="${jar.file}" compress="true">
+      <fileset dir="${src.dir}">
+        <include name="META-INF/services/java.*Provider"/>
+        <include name="com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties"/>
+      </fileset>
+      <fileset dir="${build.dir}">
+        <include name="com/ibm/icu/impl/**/*"/>
+      </fileset>
+        <fileset dir="../" includes="license.html"/>
+      <manifest>
+        <attribute name="Built-By" value="${corp}"/>
+        <section name="common">
+          <attribute name="Specification-Title" value="ICU4J Locale Service Provider" />
+          <attribute name="Specification-Version" value="${icu4j.spec.version.string}" />
+          <attribute name="Specification-Vendor" value="ICU" />
+          <attribute name="Implementation-Title" value=" ICU4J Locale Service Providers for Java 6" />
+          <attribute name="Implementation-Version" value="${icu4j.impl.version.string}" />
+          <attribute name="Implementation-Vendor" value="${corp}" />
+          <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+          <attribute name="Copyright-Info" value="${copyright}" />
+          <attribute name="Sealed" value="false" />
+        </section>
+      </manifest>
+    </jar>
+  </target>
+
+  <target name="tests" depends="check-env-java6">
+    <ant antfile="${icu4j.core.build.file}" target="tests" inheritAll="false"/>
+    <javac  srcdir="${src.dir}"
+            includes="com/ibm/icu/dev/test/**/*.java"
+            destdir="${build.dir}"
+            classpath="${icu4j.build.dir}"
+            source="${javac.src.ver}"
+            target="${javac.bin.ver}"
+            debug="on"
+            encoding="ascii">
+    </javac>
+  </target>
+
+  <target name="run-check">
+    <mkdir dir="${ext.dir}"/>
+    <copy file="${icu4j.jar.file}" todir="${ext.dir}"/>
+    <copy file="${jar.file}" todir="${ext.dir}"/>
+	
+    <java classname="com.ibm.icu.dev.test.localespi.TestAll" fork="yes" failonerror="true">
+      <jvmarg line="-Djava.ext.dirs=${java.ext.dirs}${path.separator}${ext.dir}"/>
+      <arg value="-n" />
+      <classpath>
+        <pathelement path="${build.dir}" />
+        <pathelement path="${icu4j.build.dir}/"/>
+      </classpath>
+    </java>
+  </target>
+
+  <target name="clean">
+    <delete dir="${build.dir}"/>
+    <delete file="${jar.file}"/>
+    <delete dir="${ext.dir}"/>
+  </target>
+
+  <target name="build-jar" depends="compile,jar"/>
+  <target name="check" depends="build-jar,tests,run-check"/>
+
+</project>
\ No newline at end of file
diff --git a/localespi/readme.html b/localespi/readme.html
new file mode 100644
index 0000000..e2790f2
--- /dev/null
+++ b/localespi/readme.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <meta http-equiv="Content-Style-Type" content="text/css2">
+  <title>ReadMe for ICU4J Locale Service Provider</title>
+  <meta name="COPYRIGHT" content="Copyright 2008, International Business Machines Corporation and others. All Rights Reserved.">
+  <style type="text/css">
+h3.doc { background: #CCCCFF }
+  </style>
+</head>
+<body style="background-color: rgb(255, 255, 255);" lang="EN-US"
+ link="#0000ff" vlink="#800080">
+<h2>ICU4J Locale Service Provider</h2>
+<h3>Read Me for ICU4J Locale Service Provider</h3>
+<hr size="2" width="100%">
+<p><b>Note:</b> This is a technical preview for ICU4J Locale Service Provider.
+This component may be changed or removed in future release of ICU4J.
+</p>
+<h3 class="doc">Contents</h3>
+<ul type="disc">
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#usage">Using ICU4J Locale Service Provider</a></li>
+  <li><a href="#config">Optional Configuration</a></li>
+  <li><a href="#build">Building and Testing ICU4J Locale Service Provider</a></li>
+</ul>
+
+<h3 class="doc"><a name="intro"></a>Introduction</h3>
+
+<p>Java SE 6 introduced a new feature which allows Java user code to extend locale support
+in Java runtime environment.  JREs shipped by Sun or IBM come with decent locale coverage,
+but some users may want more locale support.  Java SE 6 includes abstract classes extending
+<a href="http://java.sun.com/javase/6/docs/api/java/util/spi/LocaleServiceProvider.html">
+java.util.spi.LocaleServiceProvider</a>.  Java SE 6 users can create a subclass of these
+abstract class to supply their own locale support for text break, collation, date/number
+formatting or providing translations for currency, locale and time zone names.</p>
+
+<p>ICU4J has been providing more comprehensive locale coverage than standard JREs.  However,
+Java programmers have to use ICU4J's own internationalization service APIs (com.ibm.icu.*)
+to utilize the rich locale support.  Sometimes, the migration is not an option for various
+reasons.  For example, your code may depend on existing Java libraries utilizing JDK
+internationalization service APIs, but you have no access to the source code.  In this case,
+it is not possible to modify the libraries to use ICU4J APIs.</p>
+
+<p>ICU4J Locale Service Provider is a component consists of classes implementing the Java
+SE 6 locale sensitive service provider interfaces.  Available service providers are -
+<ul>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/BreakIteratorProvider.html">BreakIteratorProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/CollatorProvider.html">CollatorProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/DateFormatProvider.html">DateFormatProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/DateFormatSymbolsProvider.html">DateFormatSymbolsProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/DecimalFormatSymbolsProvider.html">DecimalFormatSymbolsProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/text/spi/NumberFormatProvider.html">NumberFormatProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/util/spi/CurrencyNameProvider.html">CurrencyNameProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/util/spi/LocaleNameProvider.html">LocaleNameProvider</a></li>
+  <li><a href="http://java.sun.com/javase/6/docs/api/java/util/spi/TimeZoneNameProvider.html">TimeZoneNameProvider</a></li>
+</ul>
+ICU4J Locale Service Provider is designed to work as installed extensions in a JRE.
+Once the component is configured properly, Java application running on the JRE automatically
+picks the ICU4J's internationalization service implementation when a requested locale is not
+available in the JRE.</p>
+
+<h3 class="doc"><a name="usage"></a>Using ICU4J Locale Service Provider</h3>
+
+<p>Java SE 6 locale sensitive service providers are using the
+<a href="http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html">Java Extension Mechanism</a>.
+An implementation of a locale sensitive service provider is installed as an optional package
+to extend the functionality of the Java core platform.  To install an optional package, its JAR
+files must be placed in the Java extension directory.  The standard location is 
+&lt;<i>java-home</i>&gt;/lib/ext.  You can alternatively use the system property <i>java.ext.dirs</i>
+to specify one or more locations where optional packages are installed.  For example,
+if the JRE root directry is JAVA_HOME and you put ICU4J Locale Service Provider files
+in ICU_SPI_DIR, the ICU4J Locale Service Provider is enabled by the following command.
+<pre>
+  java -Djava.ext.dirs=%JAVA_HOME%\lib\ext;%ICU_SPI_DIR% &lt;your_java_app&gt;  [Microsoft Windows]
+  java -Djava.ext.dirs=$JAVA_HOME/lib/ext:$ICU_SPI_DIR &lt;your_java_app&gt;    [Linux, Solaris and other unix like platforms]
+</pre>
+</p>
+
+<p>The ICU4J's implementations of Java SE 6 locale sensitive service provider interfaces
+and configuration files are packaged in a single JAR file (icu4j-localespi-&lt;<i>version</i>&gt;.jar).
+But the actual implementation of the service classes and data are in the ICU4J core JAR
+file (icu4j-&lt;<i>version</i>&gt;.jar).  So you need to put the localespi JAR file along
+with the core JAR file in the Java extension directory.</p>
+
+<p>Once the ICU4J Locale Service Provider is installed properly, factory methods in
+JDK internationalization classes look for the implementation provided by ICU4J when
+a requested locale is not supported by the JDK service class.  For example, locale
+af_ZA (Afrikaans - South Africa) is not supported by JDK DateFormat in Sun Java SE 6.
+The following code snippet returns an instance of DateFormat from ICU4J Locale Service
+Provider and prints out the current date localized for af_ZA.
+<pre>
+  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, new Locale("af", "ZA"));
+  System.out.println(df.format(new Date()));
+</pre>
+Sample output:
+<pre>
+  2008 Junie 19     [With ICU4J Locale Service Provider enabled]
+  June 19, 2008     [Without ICU4J Locale Service Provider]
+</pre>
+</p>
+
+<h3 class="doc"><a name="config"></a>Optional Configuration</h3>
+
+<h4>Enabling or disabling individual service</h4>
+<p>By default, all Java 6 SE locale sensitive service providers are enabled in the
+ICU4J Locale Service Provider JAR file.  If you want to disable specific providers
+supported by ICU4J, you can remove the corresponding provider configuration files
+from META-INF/services in the localespi JAR file.  For example, if you do not want
+to use ICU's time zone name service at all, you can remove the file: 
+META-INF/services/java.util.spi.TimeZoneNameProvider from the JAR file.</p>
+
+<p><b>Note:</b> Disabling DateFormatSymbolsProvider/DecimalFormatSymbolsProvider
+won't affect the localized symbols actually used by DateFormatProvider/NumberFormatProvider
+by the current implementation.  These services are implemented independently.</p>
+
+<h4>Configuring the behavior of ICU4J Locale Service Provider</h4>
+<p>com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties in the localespi
+JAR file is used for configuring the behavior of the ICU4J Locale Service Provider
+implementation.  There are some configuration properties available.  See the table below
+for each configuration in detail.</p>
+<table border="1">
+<tr>
+  <th>Property</th>
+  <th>Value</th>
+  <th>Default</th>
+  <th>Description</th>
+</tr>
+<tr>
+  <td>com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIcuVariants</td>
+  <td>"true" or "false"</td>
+  <td>"true"</td>
+  <td>
+    Whether if Locales with ICU's variant suffix will be included in getAvailableLocales.
+    The current Java SE 6 locale sensitive service does not allow user provided provider
+    implementations to override locales supported by JRE itself.  When this property is
+    "true"(default), ICU4J Locale Service Provider includes Locales with
+    the suffix(com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix)
+    in the variant field.  For example, the ICU4J provider includes locales fr_FR and
+    fr_FR_ICU in the available locale list.  So JDK API user can still access the
+    internationalization service object created by the ICU4J provider by the special locale
+    fr_FR_ICU.
+  </td>
+</tr>
+<tr>
+  <td>com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix</td>
+  <td><i>Any String</i></td>
+  <td>"ICU"</td>
+  <td>
+    Suffix string used in Locale's variant field to specify the ICU implementation.
+  </td>
+</tr>
+<tr>
+  <td>com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIso3Languages</td>
+  <td>"true" or "false"</td>
+  <td>"true"</td>
+  <td>
+    Whether if 3-letter language Locales are included in getAvailabeLocales.  Use of
+    3-letter language codes in java.util.Locale is not supported by the API reference
+    document.  However, the implementation does not check the length of language code,
+    so there is no practical problem with it.
+  </td>
+</tr>
+<tr>
+  <td>com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.useDecimalFormat</td>
+  <td>"true" or "false"</td>
+  <td>"false"</td>
+  <td>
+    Whether if java.text.DecimalFormat subclass is used for NumberFormat#getXXXInstance.
+    DecimalFormat#format(Object,StringBuffer,FieldPosition) is declared as final, so
+    ICU cannot override the implementation.  As a result, some number types such as
+    BigInteger/BigDecimal are not handled by the ICU implementation.  If a client expects
+    NumberFormat#getXXXInstance returns a DecimalFormat (for example, need to manipulate
+    decimal format patterns), he/she can set true to this setting.  However, in this case,
+    BigInteger/BigDecimal support is not done by ICU's implementation.
+  </td>
+</tr>
+</table>
+
+<h3 class="doc"><a name="build"></a>Building and Testing ICU4J Locale Service Provider</h3>
+
+<p>ICU4J Locale Service Provider classes depend on the ICU4J core files.  To build the
+component, you should build the ICU4J core JAR file first.  Please refer <a href="../readme.html">
+ReadMe for ICU4J</a> to set up the build environment.  The actual steps building the
+ICU4J Locale Service Provider JAR file are described below.  The examples used in these steps
+assume the ICU4J source package is extracted to C:\icu4j on Microsoft Windows.</p>
+<p>1. Build the ICU4J core JAR file (icu4j.jar).  The preferred JDK version for building
+the ICU4J core classes/JAR files is JDK 5.0.
+<pre>
+  C:\icu4j>ant jar
+</pre>
+</p>
+<p>2. Set JAVA_HOME to JDK 6.0.  The ICU4J Locale Service Provider requires JDK 6.0.
+If you used JDK 6.0 for building the ICU4J core JAR file, this step is not necessary.
+<pre>
+  C:\icu4j>set JAVA_HOME=C:\jdk1.6.0
+</pre>
+</p>
+<p>3. Change directory to a subdirectory named "localespi"</p>
+<p>4. Run <b>ant</b> with the default target ("jar").
+<pre>
+  C:\icu4j\localespi>ant
+  Buildfile: build.xml
+
+  check-env-java6:
+
+  icu4j-jar:
+
+  compile:
+      [mkdir] Created dir: C:\icu4j\localespi\classes
+      [javac] Compiling 22 source files to C:\icu4j\localespi\classes
+
+  jar:
+        [jar] Building jar: C:\icu4j\localespi\icu4j-localespi.jar
+
+  build-jar:
+
+  BUILD SUCCESSFUL
+  Total time: 5 seconds
+</pre>
+</p>
+<p>With above steps, icu4j-localespi.jar is created in localespi subdirectory.  To
+verify the ICU4J Locale Service Provider component, you can run <b>ant</b> with the
+target "check". (Note: The target "check" actually creates icu4j-localespi.jar, so
+you can simply run this target to build and test the component.)
+<pre>
+  C:\icu4j\localespi\ant check
+</pre>
+After compiling classes used for testing, the test cases for ICU4J Locale Service
+Provider are executed.  The test output looks like below.
+<pre>
+     [java] TestAll {
+     [java]   BreakIteratorTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]   } Passed
+     [java]   CollatorTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]   } Passed
+     [java]   CurrencyNameTest {
+     [java]     TestCurrencySymbols Passe
+     [java]   } Passed
+     [java]   DateFormatSymbolsTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]     TestNynorsk Passed
+     [java]     TestSetSymbols Passed
+     [java]   } Passed
+     [java]   DateFormatTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]     TestThaiDigit Passed
+     [java]   } Passed
+     [java]   DecimalFormatSymbolsTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]     TestSetSymbols Passed
+     [java]   } Passed
+     [java]   LocaleNameTest {
+     [java]     TestCountryNames Passed
+     [java]     TestLanguageNames Passed
+     [java]     TestVariantNames Passed
+     [java]   } Passed
+     [java]   NumberFormatTest {
+     [java]     TestGetInstance Passed
+     [java]     TestICUEquivalent Passed
+     [java]   } Passed
+     [java]   TimeZoneNameTest {
+     [java]     TestTimeZoneNames Passed
+     [java]   } Passed
+     [java] } Passed
+</pre>
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider b/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider
new file mode 100644
index 0000000..1c84a78
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j break iterator
+com.ibm.icu.impl.javaspi.text.BreakIteratorProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.CollatorProvider b/localespi/src/META-INF/services/java.text.spi.CollatorProvider
new file mode 100644
index 0000000..df5c518
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.CollatorProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j collator
+com.ibm.icu.impl.javaspi.text.CollatorProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.DateFormatProvider b/localespi/src/META-INF/services/java.text.spi.DateFormatProvider
new file mode 100644
index 0000000..410eda0
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.DateFormatProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j date formatter
+com.ibm.icu.impl.javaspi.text.DateFormatProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider b/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider
new file mode 100644
index 0000000..91f0279
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j date format symbpols
+com.ibm.icu.impl.javaspi.text.DateFormatSymbolsProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider b/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider
new file mode 100644
index 0000000..7b060b3
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j decimal format symbols
+com.ibm.icu.impl.javaspi.text.DecimalFormatSymbolsProviderICU
diff --git a/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider b/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider
new file mode 100644
index 0000000..1287b13
--- /dev/null
+++ b/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j number formatter
+com.ibm.icu.impl.javaspi.text.NumberFormatProviderICU
diff --git a/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider b/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider
new file mode 100644
index 0000000..5b61edb
--- /dev/null
+++ b/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j currency name
+com.ibm.icu.impl.javaspi.util.CurrencyNameProviderICU
diff --git a/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider b/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider
new file mode 100644
index 0000000..31cbcc7
--- /dev/null
+++ b/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j locale name
+com.ibm.icu.impl.javaspi.util.LocaleNameProviderICU
diff --git a/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider b/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider
new file mode 100644
index 0000000..57ce8f6
--- /dev/null
+++ b/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2008, International Business Machines Corporation and others. All Rights Reserved.
+# icu4j time zone name
+com.ibm.icu.impl.javaspi.util.TimeZoneNameProviderICU
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java
new file mode 100644
index 0000000..afbd308
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java
@@ -0,0 +1,224 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.BreakIterator;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class BreakIteratorTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorTest().run(args);
+    }
+
+    private static final int CHARACTER_BRK = 0;
+    private static final int WORD_BRK = 1;
+    private static final int LINE_BRK = 2;
+    private static final int SENTENCE_BRK = 3;
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : BreakIterator.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+            checkGetInstance(CHARACTER_BRK, loc);
+            checkGetInstance(WORD_BRK, loc);
+            checkGetInstance(LINE_BRK, loc);
+            checkGetInstance(SENTENCE_BRK, loc);
+        }
+    }
+
+    private void checkGetInstance(int type, Locale loc) {
+        BreakIterator brkitr = null;
+        String method = null;
+        switch (type) {
+        case CHARACTER_BRK:
+            brkitr = BreakIterator.getCharacterInstance(loc);
+            method = "getCharacterInstance";
+            break;
+        case WORD_BRK:
+            brkitr = BreakIterator.getWordInstance(loc);
+            method = "getWordInstance";
+            break;
+        case LINE_BRK:
+            brkitr = BreakIterator.getLineInstance(loc);
+            method = "getLineInstance";
+            break;
+        case SENTENCE_BRK:
+            brkitr = BreakIterator.getSentenceInstance(loc);
+            method = "getSentenceInstance";
+            break;
+        default:
+            errln("FAIL: Unknown break iterator type");
+            return;
+        }
+
+        boolean isIcuImpl = (brkitr instanceof com.ibm.icu.impl.jdkadapter.BreakIteratorICU);
+
+        if (TestUtil.isICUExtendedLocale(loc)) {
+            if (!isIcuImpl) {
+                errln("FAIL: " + method + " returned JDK BreakIterator for locale " + loc);
+            }
+        } else {
+            if (isIcuImpl) {
+                logln("INFO: " + method + " returned ICU BreakIterator for locale " + loc);
+            } 
+            BreakIterator brkitrIcu = null;
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            switch (type) {
+            case CHARACTER_BRK:
+                brkitrIcu = BreakIterator.getCharacterInstance(iculoc);
+                break;
+            case WORD_BRK:
+                brkitrIcu = BreakIterator.getWordInstance(iculoc);
+                break;
+            case LINE_BRK:
+                brkitrIcu = BreakIterator.getLineInstance(iculoc);
+                break;
+            case SENTENCE_BRK:
+                brkitrIcu = BreakIterator.getSentenceInstance(iculoc);
+                break;
+            }
+            if (isIcuImpl) {
+                if (!brkitr.equals(brkitrIcu)) {
+                    // BreakIterator.getXXXInstance returns a cached BreakIterator instance.
+                    // BreakIterator does not override Object#equals, so the result may not be
+                    // consistent.
+//                        logln("INFO: " + method + " returned ICU BreakIterator for locale " + loc
+//                                + ", but different from the one for locale " + iculoc);
+                }
+            } else {
+                if (!(brkitrIcu instanceof com.ibm.icu.impl.jdkadapter.BreakIteratorICU)) {
+                    errln("FAIL: " + method + " returned JDK BreakIterator for locale " + iculoc);
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing the behavior of text break between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("fr", "FR"),
+                new Locale("th", "TH"),
+                new Locale("zh", "CN"),
+        };
+
+        String[] TEST_DATA = {
+                "International Components for Unicode (ICU) is an open source project of mature "
+                + "C/C++ and Java libraries for Unicode support, software internationalization and "
+                + "software globalization. ICU is widely portable to many operating systems and "
+                + "environments. It gives applications the same results on all platforms and between "
+                + "C/C++ and Java software. The ICU project is an open source development project "
+                + "that is sponsored, supported and used by IBM and many other companies.",
+
+                "L'International Components for Unicode (ICU) est un projet open source qui fourni "
+                + "des biblioth\u00e8ques pour les langages informatique C/C++ et Java pour supporter "
+                + "Unicode, l'internationalisation et la mondialisation des logiciels. ICU est largement "
+                + "portable vers beaucoup de syst\u00e8mes d'exploitations et d'environnements. Il "
+                + "donne aux applications les m\u00eames comportements et r\u00e9sultats sur toutes "
+                + "les plateformes et entre les logiciels C/C++ et Java. Le projet ICU est un projet "
+                + "dont les code sources sont disponibles qui est sponsoris\u00e9, support\u00e9 et "
+                + "utilis\u00e9 par IBM et beaucoup d'autres entreprises.",
+
+                "\u5728IBM\u7b49\u4f01\u696d\u4e2d\uff0c\u56fd\u9645\u5316\u7ecf\u5e38\u7b80\u5199"
+                + "\u4e3aI18N (\u6216i18n\u6216I18n)\uff0c\u5176\u4e2d18\u4ee3\u8868\u4e86\u4e2d\u95f4"
+                + "\u7701\u7565\u768418\u4e2a\u5b57\u6bcd\uff1b\u800c\u201c\u672c\u5730\u5316\u201d"
+                + "\u540c\u53ef\u7b80\u5199\u4e3al10n\u3002\u9019\u4e24\u4e2a\u6982\u5ff5\u6709\u65f6"
+                + "\u5408\u79f0\u5168\u7403\u5316\uff08g11n\uff09\uff0c\u4f46\u662f\u5168\u7403\u5316"
+                + "\u7684\u6db5\u4e49\u66f4\u4e3a\u4e00\u822c\u5316\u3002\u53e6\u5916\u5076\u5c14\u4f1a"
+                + "\u51fa\u73b0\u201cp13n\u201d\uff0c\u4ee3\u8868\u4e2a\u4eba\u5316\uff08personalization"
+                + "\uff09\u3002",
+
+                "\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e\u0e21\u0e2b\u0e32\u0e19\u0e04\u0e23"
+                + "\u0e43\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e40\u0e1b\u0e47"
+                + "\u0e19\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e01\u0e25\u0e32\u0e07\u0e01\u0e32\u0e23"
+                + "\u0e1b\u0e01\u0e04\u0e23\u0e2d\u0e07 \u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29"
+                + "\u0e32 \u0e01\u0e32\u0e23\u0e04\u0e21\u0e19\u0e32\u0e04\u0e21\u0e02\u0e19\u0e2a"
+                + "\u0e48\u0e07 \u0e01\u0e32\u0e23\u0e40\u0e07\u0e34\u0e19\u0e01\u0e32\u0e23\u0e18"
+                + "\u0e19\u0e32\u0e04\u0e32\u0e23 \u0e01\u0e32\u0e23\u0e1e\u0e32\u0e13\u0e34\u0e0a"
+                + "\u0e22\u0e4c \u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 \u0e2f"
+                + "\u0e25\u0e2f \u0e42\u0e14\u0e22\u0e21\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35"
+                + "\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 1,562.2 \u0e15\u0e32\u0e23\u0e32"
+                + "\u0e07\u0e01\u0e34\u0e42\u0e25\u0e40\u0e21\u0e15\u0e23 \u0e1e\u0e34\u0e01\u0e31"
+                + "\u0e14\u0e17\u0e32\u0e07\u0e20\u0e39\u0e21\u0e34\u0e28\u0e32\u0e2a\u0e15\u0e23"
+                + "\u0e4c\u0e04\u0e37\u0e2d \u0e25\u0e30\u0e15\u0e34\u0e08\u0e39\u0e14 13\u00b0 45"
+                + "\u2019 \u0e40\u0e2b\u0e19\u0e37\u0e2d \u0e25\u0e2d\u0e07\u0e08\u0e34\u0e08\u0e39"
+                + "\u0e14 100\u00b0 31\u2019 \u0e15\u0e30\u0e27\u0e31\u0e19\u0e2d\u0e2d\u0e01"
+        };
+
+        BreakIterator[] jdkBrkItrs = new BreakIterator[4];
+        com.ibm.icu.text.BreakIterator[] icuBrkItrs = new com.ibm.icu.text.BreakIterator[4];
+
+        for (Locale loc : TEST_LOCALES) {
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+
+            jdkBrkItrs[0] = BreakIterator.getCharacterInstance(iculoc);
+            jdkBrkItrs[1] = BreakIterator.getWordInstance(iculoc);
+            jdkBrkItrs[2] = BreakIterator.getLineInstance(iculoc);
+            jdkBrkItrs[3] = BreakIterator.getSentenceInstance(iculoc);
+ 
+            icuBrkItrs[0] = com.ibm.icu.text.BreakIterator.getCharacterInstance(iculoc);
+            icuBrkItrs[1] = com.ibm.icu.text.BreakIterator.getWordInstance(iculoc);
+            icuBrkItrs[2] = com.ibm.icu.text.BreakIterator.getLineInstance(iculoc);
+            icuBrkItrs[3] = com.ibm.icu.text.BreakIterator.getSentenceInstance(iculoc);
+
+            for (String text : TEST_DATA) {
+                for (int i = 0; i < 4; i++) {
+                    compareBreaks(text, jdkBrkItrs[i], icuBrkItrs[i]);
+                }
+            }
+        }
+    }
+
+    private void compareBreaks(String text, BreakIterator jdkBrk, com.ibm.icu.text.BreakIterator icuBrk) {
+        jdkBrk.setText(text);
+        icuBrk.setText(text);
+
+        // Forward
+        int jidx = jdkBrk.first();
+        int iidx = icuBrk.first();
+        if (jidx != iidx) {
+            errln("FAIL: Different first boundaries (jdk=" + jidx + ",icu=" + iidx + ") for text:\n" + text);
+        }
+        while (true) {
+            jidx = jdkBrk.next();
+            iidx = icuBrk.next();
+            if (jidx != iidx) {
+                errln("FAIL: Different boundaries (jdk=" + jidx + ",icu=" + iidx + "direction=forward) for text:\n" + text);
+            }
+            if (jidx == BreakIterator.DONE) {
+                break;
+            }
+        }
+
+        // Backward
+        jidx = jdkBrk.last();
+        iidx = jdkBrk.last();
+        if (jidx != iidx) {
+            errln("FAIL: Different last boundaries (jdk=" + jidx + ",icu=" + iidx + ") for text:\n" + text);
+        }
+        while (true) {
+            jidx = jdkBrk.previous();
+            iidx = icuBrk.previous();
+            if (jidx != iidx) {
+                errln("FAIL: Different boundaries (jdk=" + jidx + ",icu=" + iidx + "direction=backward) for text:\n" + text);
+            }
+            if (jidx == BreakIterator.DONE) {
+                break;
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java
new file mode 100644
index 0000000..9ef9457
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java
@@ -0,0 +1,132 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.CollationKey;
+import java.text.Collator;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class CollatorTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollatorTest().run(args);
+    }
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : Collator.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+
+            Collator coll = Collator.getInstance(loc);
+
+            boolean isIcuImpl = (coll instanceof com.ibm.icu.impl.jdkadapter.CollatorICU);
+
+            if (TestUtil.isICUExtendedLocale(loc)) {
+                if (!isIcuImpl) {
+                    errln("FAIL: getInstance returned JDK Collator for locale " + loc);
+                }
+            } else {
+                if (isIcuImpl) {
+                    logln("INFO: getInstance returned ICU Collator for locale " + loc);
+                }
+                Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                Collator collIcu = Collator.getInstance(iculoc);
+                if (isIcuImpl) {
+                    if (!coll.equals(collIcu)) {
+                        errln("FAIL: getInstance returned ICU Collator for locale " + loc
+                                + ", but different from the one for locale " + iculoc);
+                    }
+                } else {
+                    if (!(collIcu instanceof com.ibm.icu.impl.jdkadapter.CollatorICU)) {
+                        errln("FAIL: getInstance returned JDK Collator for locale " + iculoc);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing the behavior of text collation between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("de", "DE"),
+                new Locale("ja", "JP"),
+        };
+
+        String[] TEST_DATA = {
+                "Cafe",
+                "cafe",
+                "CAFE",
+                "caf\u00e9",
+                "cafe\u0301",
+                "\u304b\u3075\u3047",
+                "\u304c\u3075\u3047",
+                "\u304b\u3075\u3048",
+                "\u30ab\u30d5\u30a7",
+                "\uff76\uff8c\uff6a",
+        };
+
+        for (Locale loc : TEST_LOCALES) {
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            Collator jdkColl = Collator.getInstance(iculoc);
+            com.ibm.icu.text.Collator icuColl = com.ibm.icu.text.Collator.getInstance(loc);
+
+            // Default strength = TERITIARY
+            checkCollation(jdkColl, icuColl, TEST_DATA, "TERITIARY", loc);
+
+            // PRIMARY
+            jdkColl.setStrength(Collator.PRIMARY);
+            icuColl.setStrength(com.ibm.icu.text.Collator.PRIMARY);
+            checkCollation(jdkColl, icuColl, TEST_DATA, "PRIMARY", loc);
+
+            // SECONDARY
+            jdkColl.setStrength(Collator.SECONDARY);
+            icuColl.setStrength(com.ibm.icu.text.Collator.SECONDARY);
+            checkCollation(jdkColl, icuColl, TEST_DATA, "SECONDARY", loc);
+        }
+    }
+
+    private void checkCollation(Collator jdkColl, com.ibm.icu.text.Collator icuColl,
+            String[] data, String strength, Locale loc) {
+        for (String text1 : data) {
+            for (String text2 : data) {
+                int jdkRes = jdkColl.compare(text1, text2);
+                int icuRes = icuColl.compare(text1, text2);
+
+                if (jdkRes != icuRes) {
+                    errln("FAIL: Different results for [text1=" + text1 + ",text2=" + text2 + ") for locale "
+                            + loc + " with strength " + strength + " - Result (jdk=" + jdkRes + ",icu=" + icuRes + ")");
+                }
+
+                // Evaluate collationKey
+                CollationKey jdkKey1 = jdkColl.getCollationKey(text1);
+                CollationKey jdkKey2 = jdkColl.getCollationKey(text2);
+
+                com.ibm.icu.text.CollationKey icuKey1 = icuColl.getCollationKey(text1);
+                com.ibm.icu.text.CollationKey icuKey2 = icuColl.getCollationKey(text2);
+
+                int jdkKeyRes = jdkKey1.compareTo(jdkKey2);
+                int icuKeyRes = icuKey1.compareTo(icuKey2);
+
+                if (jdkKeyRes != icuKeyRes) {
+                    errln("FAIL: Different collationKey comparison results for [text1=" + text1 + ",text2=" + text2
+                            + ") for locale " + loc + " with strength " + strength
+                            + " - Result (jdk=" + jdkRes + ",icu=" + icuRes + ")");
+                }
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java
new file mode 100644
index 0000000..dd62fa7
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java
@@ -0,0 +1,82 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.util.Currency;
+import java.util.HashSet;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class CurrencyNameTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CurrencyNameTest().run(args);
+    }
+
+    public void TestCurrencySymbols() {
+        // Make a set of unique currencies
+        HashSet<Currency> currencies = new HashSet<Currency>();
+        for (Locale l : Locale.getAvailableLocales()) {
+            if (l.getCountry().length() == 0) {
+                continue;
+            }
+            Currency currency = Currency.getInstance(l);
+            if (currency == null) {
+                continue;
+            }
+            currencies.add(currency);
+        }
+
+        for (Currency currency : currencies) {
+            String currencyCode = currency.getCurrencyCode();
+            com.ibm.icu.util.Currency currencyIcu = com.ibm.icu.util.Currency.getInstance(currencyCode);
+            if (currencyIcu == null) {
+                logln("INFO: Currency code " + currencyCode + " is not supported by ICU");
+                continue;
+            }
+            for (Locale loc : Locale.getAvailableLocales()) {
+                if (TestUtil.isProblematicIBMLocale(loc)) {
+                    logln("Skipped " + loc);
+                    continue;
+                }
+
+                String curSymbol = currency.getSymbol(loc);
+                String curSymbolIcu = currencyIcu.getSymbol(loc);
+
+                if (curSymbolIcu.equals(currencyCode)) {
+                    // No data in ICU
+                    if (!curSymbol.equals(currencyCode)) {
+                        logln("INFO: JDK has currency symbol " + curSymbol + " for locale " +
+                                loc + ", but ICU does not");
+                    }
+                    continue;
+                }
+
+                if (TestUtil.isICUExtendedLocale(loc)) {
+                    if (!curSymbol.equals(curSymbolIcu)) {
+                        if (!curSymbol.equals(curSymbolIcu)) {
+                            errln("FAIL: Currency symbol for " + currencyCode + " by ICU is " + curSymbolIcu
+                                    + ", but got " + curSymbol + " in locale " + loc);
+                        }
+                    }
+                } else {
+                    if (!curSymbol.equals(curSymbolIcu)) {
+                        logln("INFO: Currency symbol for " + currencyCode +  " by ICU is " + curSymbolIcu
+                                + ", but " + curSymbol + " by JDK in locale " + loc);
+                    }
+                    // Try explicit ICU locale (xx_yy_ICU)
+                    Locale locIcu = TestUtil.toICUExtendedLocale(loc);
+                    curSymbol = currency.getSymbol(locIcu);
+                    if (!curSymbol.equals(curSymbolIcu)) {
+                        errln("FAIL: Currency symbol for " + currencyCode + " by ICU is " + curSymbolIcu
+                                + ", but got " + curSymbol + " in locale " + locIcu);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java
new file mode 100644
index 0000000..d9357dd
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java
@@ -0,0 +1,183 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.DateFormatSymbols;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DateFormatSymbolsTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new DateFormatSymbolsTest().run(args);
+    }
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : DateFormatSymbols.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+
+            DateFormatSymbols dfs = DateFormatSymbols.getInstance(loc);
+
+            boolean isIcuImpl = (dfs instanceof com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU);
+
+            if (TestUtil.isICUExtendedLocale(loc)) {
+                if (!isIcuImpl) {
+                    errln("FAIL: getInstance returned JDK DateFormatSymbols for locale " + loc);
+                }
+            } else {
+                if (isIcuImpl) {
+                    logln("INFO: getInstance returned ICU DateFormatSymbols for locale " + loc);
+                }
+                Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                DateFormatSymbols dfsIcu = DateFormatSymbols.getInstance(iculoc);
+                if (isIcuImpl) {
+                    if (!dfs.equals(dfsIcu)) {
+                        errln("FAIL: getInstance returned ICU DateFormatSymbols for locale " + loc
+                                + ", but different from the one for locale " + iculoc);
+                    }
+                } else {
+                    if (!(dfsIcu instanceof com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU)) {
+                        errln("FAIL: getInstance returned JDK DateFormatSymbols for locale " + iculoc);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing the contents of DateFormatSymbols between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("es", "ES"),
+                new Locale("ja", "JP", "JP"),
+                new Locale("th", "TH"),
+        };
+
+        for (Locale loc : TEST_LOCALES) {
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            DateFormatSymbols jdkDfs = DateFormatSymbols.getInstance(iculoc);
+            com.ibm.icu.text.DateFormatSymbols icuDfs = com.ibm.icu.text.DateFormatSymbols.getInstance(loc);
+
+            compareArrays(jdkDfs.getAmPmStrings(), icuDfs.getAmPmStrings(), loc, "getAmPmStrings");
+            compareArrays(jdkDfs.getEras(), icuDfs.getEras(), loc, "getEras");
+            compareArrays(jdkDfs.getMonths(), icuDfs.getMonths(), loc, "getMonths");
+            compareArrays(jdkDfs.getShortMonths(), icuDfs.getShortMonths(), loc, "getShortMonths");
+            compareArrays(jdkDfs.getShortWeekdays(), icuDfs.getShortWeekdays(), loc, "getShortWeekdays");
+            compareArrays(jdkDfs.getWeekdays(), icuDfs.getWeekdays(), loc, "getWeekdays");
+            compareArrays(jdkDfs.getZoneStrings(), icuDfs.getZoneStrings(), loc, "getZoneStrings");
+        }
+    }
+
+    /*
+     * Testing setters
+     */
+    public void TestSetSymbols() {
+        // ICU's JDK DateFormatSymbols implementation for ja_JP locale
+        DateFormatSymbols dfs = DateFormatSymbols.getInstance(new Locale("ja", "JP", "ICU"));
+
+        // en_US is supported by JDK, so this is the JDK's own DateFormatSymbols
+        Locale loc = new Locale("en", "US");
+        DateFormatSymbols dfsEnUS = DateFormatSymbols.getInstance(loc);
+
+        // Copying over all symbols
+        dfs.setAmPmStrings(dfsEnUS.getAmPmStrings());
+        dfs.setEras(dfsEnUS.getEras());
+        dfs.setMonths(dfsEnUS.getMonths());
+        dfs.setShortMonths(dfsEnUS.getShortMonths());
+        dfs.setShortWeekdays(dfsEnUS.getShortWeekdays());
+        dfs.setWeekdays(dfsEnUS.getWeekdays());
+        dfs.setZoneStrings(dfsEnUS.getZoneStrings());
+
+        compareArrays(dfs.getAmPmStrings(), dfsEnUS.getAmPmStrings(), loc, "getAmPmStrings");
+        compareArrays(dfs.getEras(), dfsEnUS.getEras(), loc, "getEras");
+        compareArrays(dfs.getMonths(), dfsEnUS.getMonths(), loc, "getMonths");
+        compareArrays(dfs.getShortMonths(), dfsEnUS.getShortMonths(), loc, "getShortMonths");
+        compareArrays(dfs.getShortWeekdays(), dfsEnUS.getShortWeekdays(), loc, "getShortWeekdays");
+        compareArrays(dfs.getWeekdays(), dfsEnUS.getWeekdays(), loc, "getWeekdays");
+        compareArrays(dfs.getZoneStrings(), dfsEnUS.getZoneStrings(), loc, "getZoneStrings");
+    }
+
+    private void compareArrays(Object jarray, Object iarray, Locale loc, String method) {
+        if (jarray instanceof String[][]) {
+            String[][] jaa = (String[][])jarray;
+            String[][] iaa = (String[][])iarray;
+
+            if (jaa.length != iaa.length || jaa[0].length != iaa[0].length) {
+                errln("FAIL: Different array size returned by " + method + "for locale "
+                        + loc + "(jdksize=" + jaa.length + "x" + jaa[0].length
+                        + ",icusize=" + iaa.length + "x" + iaa[0].length + ")");
+            }
+
+            for (int i = 0; i < jaa.length; i++) {
+                for (int j = 0; j < jaa[i].length; j++) {
+                    if (!TestUtil.equals(jaa[i][j], iaa[i][j])) {
+                        errln("FAIL: Different symbols returned by " + method + "for locale "
+                                + loc + " at index " + i + "," + j
+                                + " (jdk=" + jaa[i][j] + ",icu=" + iaa[i][j] + ")");
+                    }
+                }
+            }
+
+        } else {
+            String[] ja = (String[])jarray;
+            String[] ia = (String[])iarray;
+
+            if (ja.length != ia.length) {
+                errln("FAIL: Different array size returned by " + method + "for locale "
+                        + loc + "(jdksize=" + ja.length
+                        + ",icusize=" + ia.length + ")");
+            } else {
+                for (int i = 0; i < ja.length; i++) {
+                    if (!TestUtil.equals(ja[i], ia[i])) {
+                        errln("FAIL: Different symbols returned by " + method + "for locale "
+                                + loc + " at index " + i + " (jdk=" + ja[i] + ",icu=" + ia[i] + ")");
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing Nynorsk locales
+     */
+    public void TestNynorsk() {
+        Locale nnNO = new Locale("nn", "NO");
+        Locale noNONY = new Locale("no", "NO", "NY");
+
+        DateFormatSymbols dfs_nnNO = DateFormatSymbols.getInstance(nnNO);
+        DateFormatSymbols dfs_nnNO_ICU = DateFormatSymbols.getInstance(TestUtil.toICUExtendedLocale(nnNO));
+        DateFormatSymbols dfs_noNONY_ICU = DateFormatSymbols.getInstance(TestUtil.toICUExtendedLocale(noNONY));
+
+        // Weekday names should be identical for these three.
+        // If data is taken from no/nb, then this check will fail.
+        String[] dow_nnNO = dfs_nnNO.getWeekdays();
+        String[] dow_nnNO_ICU = dfs_nnNO_ICU.getWeekdays();
+        String[] dow_noNONY_ICU = dfs_noNONY_ICU.getWeekdays();
+
+        for (int i = 1; i < dow_nnNO.length; i++) {
+            if (!dow_nnNO[i].equals(dow_nnNO_ICU[i])) {
+                errln("FAIL: Different weekday name - index=" + i
+                        + ", nn_NO:" + dow_nnNO[i] + ", nn_NO_ICU:" + dow_nnNO_ICU[i]);
+            }
+        }
+        for (int i = 1; i < dow_nnNO.length; i++) {
+            if (!dow_nnNO[i].equals(dow_noNONY_ICU[i])) {
+                errln("FAIL: Different weekday name - index=" + i
+                        + ", nn_NO:" + dow_nnNO[i] + ", no_NO_NY_ICU:" + dow_nnNO_ICU[i]);
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java
new file mode 100644
index 0000000..8bef67f
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java
@@ -0,0 +1,196 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DateFormatTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new DateFormatTest().run(args);
+    }
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : DateFormat.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+            checkGetInstance(DateFormat.FULL, DateFormat.LONG, loc);
+            checkGetInstance(DateFormat.MEDIUM, -1, loc);
+            checkGetInstance(1, DateFormat.SHORT, loc);
+        }
+    }
+
+    private void checkGetInstance(int dstyle, int tstyle, Locale loc) {
+        String method[] = new String[1];
+        DateFormat df = getJDKInstance(dstyle, tstyle, loc, method);
+
+        boolean isIcuImpl = (df instanceof com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU);
+
+        if (TestUtil.isICUExtendedLocale(loc)) {
+            if (!isIcuImpl) {
+                errln("FAIL: " + method[0] + " returned JDK DateFormat for locale " + loc);
+            }
+        } else {
+            if (isIcuImpl) {
+                logln("INFO: " + method[0] + " returned ICU DateFormat for locale " + loc);
+            }
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            DateFormat dfIcu = getJDKInstance(dstyle, tstyle, iculoc, null);
+            if (isIcuImpl) {
+                if (!df.equals(dfIcu)) {
+                    errln("FAIL: " + method[0] + " returned ICU DateFormat for locale " + loc
+                            + ", but different from the one for locale " + iculoc);
+                }
+            } else {
+                if (!(dfIcu instanceof com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU)) {
+                    errln("FAIL: " + method[0] + " returned JDK DateFormat for locale " + iculoc);
+                }
+            }
+        }
+    }
+
+    private DateFormat getJDKInstance(int dstyle, int tstyle, Locale loc, String[] methodName) {
+        DateFormat df;
+        String method;
+        if (dstyle < 0) {
+            df = DateFormat.getTimeInstance(tstyle, loc);
+            method = "getTimeInstance";
+        } else if (tstyle < 0) {
+            df = DateFormat.getDateInstance(dstyle, loc);
+            method = "getDateInstance";
+        } else {
+            df = DateFormat.getDateTimeInstance(dstyle, tstyle, loc);
+            method = "getDateTimeInstance";
+        }
+        if (methodName != null) {
+            methodName[0] = method;
+        }
+        return df;
+    }
+
+    private com.ibm.icu.text.DateFormat getICUInstance(int dstyle, int tstyle, Locale loc, String[] methodName) {
+        com.ibm.icu.text.DateFormat icudf;
+        String method;
+        if (dstyle < 0) {
+            icudf = com.ibm.icu.text.DateFormat.getTimeInstance(tstyle, loc);
+            method = "getTimeInstance";
+        } else if (tstyle < 0) {
+            icudf = com.ibm.icu.text.DateFormat.getDateInstance(dstyle, loc);
+            method = "getDateInstance";
+        } else {
+            icudf = com.ibm.icu.text.DateFormat.getDateTimeInstance(dstyle, tstyle, loc);
+            method = "getDateTimeInstance";
+        }
+        if (methodName != null) {
+            methodName[0] = method;
+        }
+        return icudf;
+    }
+
+    /*
+     * Testing the behavior of date format between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("it", "IT"),
+                new Locale("iw", "IL"),
+                new Locale("ja", "JP", "JP"),
+                new Locale("th", "TH"),
+                new Locale("zh", "TW"),
+        };
+
+        long[] TEST_DATES = {
+                1199499330543L, // 2008-01-05T02:15:30.543Z
+                1217001308085L, // 2008-07-25T15:55:08.085Z
+        };
+
+        for (Locale loc : TEST_LOCALES) {
+            for (int dstyle = -1; dstyle <= 3; dstyle++) {
+                for (int tstyle = -1; tstyle <= 3; tstyle++) {
+                    if (tstyle == -1 && dstyle == -1) {
+                        continue;
+                    }
+                    Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                    DateFormat df = getJDKInstance(dstyle, tstyle, iculoc, null);
+                    com.ibm.icu.text.DateFormat icudf = getICUInstance(dstyle, tstyle, loc, null);
+
+                    for (long t : TEST_DATES) {
+                        // Format
+                        Date d = new Date(t);
+                        String dstr1 = df.format(d);
+                        String dstr2 = icudf.format(d);
+
+                        if (!dstr1.equals(dstr2)) {
+                            errln("FAIL: Different format results for locale " + loc + " (dstyle=" + dstyle
+                                    + ",tstyle=" + tstyle + ") at time " + t + " - JDK:" + dstr1
+                                    + " ICU:" + dstr2);
+                            continue;
+                        }
+
+                        // Parse
+                        Date d1, d2;
+                        try {
+                            d1 = df.parse(dstr1);
+                        } catch (ParseException e) {
+                            errln("FAIL: ParseException thrown for JDK DateFormat for string "
+                                    + dstr1 + "(locale=" + iculoc + ",dstyle=" + dstyle + ",tstyle=" + tstyle + ")");
+                            continue;
+                        }
+                        try {
+                            d2 = icudf.parse(dstr1);
+                        } catch (ParseException e) {
+                            errln("FAIL: ParseException thrown for ICU DateFormat for string "
+                                    + dstr1 + "(locale=" + loc + ",dstyle=" + dstyle + ",tstyle=" + tstyle + ")");
+                            continue;
+                        }
+                        if (!d1.equals(d2)) {
+                            errln("FAIL: Different parse results for locale " + loc
+                                    + " for date string " + dstr1 + " (dstyle=" + dstyle
+                                    + ",tstyle=" + tstyle + ") at time " + t + " - JDK:" + dstr1
+                                    + " ICU:" + dstr2);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Check if ICU DateFormatProvider uses Thai native digit for Locale
+     * th_TH_TH.
+     */
+    public void TestThaiDigit() {
+        Locale thTHTH = new Locale("th", "TH", "TH");
+        String pattern = "yyyy-MM-dd";
+
+        DateFormat dfmt = DateFormat.getDateInstance(DateFormat.FULL, thTHTH);
+        DateFormat dfmtIcu = DateFormat.getDateInstance(DateFormat.FULL, TestUtil.toICUExtendedLocale(thTHTH));
+
+        ((java.text.SimpleDateFormat)dfmt).applyPattern(pattern);
+        ((java.text.SimpleDateFormat)dfmtIcu).applyPattern(pattern);
+
+        Date d = new Date();
+        String str1 = dfmt.format(d);
+        String str2 = dfmtIcu.format(d);
+
+        if (!str1.equals(str2)) {
+            errln("FAIL: ICU DateFormat returned a result different from JDK for th_TH_TH");
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java
new file mode 100644
index 0000000..cbb51c3
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java
@@ -0,0 +1,159 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.text.DecimalFormatSymbols;
+import java.util.Currency;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DecimalFormatSymbolsTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new DecimalFormatSymbolsTest().run(args);
+    }
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : DecimalFormatSymbols.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+
+            DecimalFormatSymbols decfs = DecimalFormatSymbols.getInstance(loc);
+
+            boolean isIcuImpl = (decfs instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU);
+
+            if (TestUtil.isICUExtendedLocale(loc)) {
+                if (!isIcuImpl) {
+                    errln("FAIL: getInstance returned JDK DecimalFormatSymbols for locale " + loc);
+                }
+            } else {
+                if (isIcuImpl) {
+                    logln("INFO: getInstance returned ICU DecimalFormatSymbols for locale " + loc);
+                }
+                Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                DecimalFormatSymbols decfsIcu = DecimalFormatSymbols.getInstance(iculoc);
+                if (isIcuImpl) {
+                    if (!decfs.equals(decfsIcu)) {
+                        errln("FAIL: getInstance returned ICU DecimalFormatSymbols for locale " + loc
+                                + ", but different from the one for locale " + iculoc);
+                    }
+                } else {
+                    if (!(decfsIcu instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU)) {
+                        errln("FAIL: getInstance returned JDK DecimalFormatSymbols for locale " + iculoc);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Testing the contents of DecimalFormatSymbols between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("pt", "BR"),
+                new Locale("ko", "KR"),
+        };
+
+        for (Locale loc : TEST_LOCALES) {
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            DecimalFormatSymbols jdkDecfs = DecimalFormatSymbols.getInstance(iculoc);
+            com.ibm.icu.text.DecimalFormatSymbols icuDecfs = com.ibm.icu.text.DecimalFormatSymbols.getInstance(loc);
+
+            Currency jdkCur = jdkDecfs.getCurrency();
+            com.ibm.icu.util.Currency icuCur = icuDecfs.getCurrency();
+            if ((jdkCur != null && icuCur == null)
+                    || (jdkCur == null && icuCur != null)
+                    || !jdkCur.getCurrencyCode().equals(icuCur.getCurrencyCode())) {
+                errln("FAIL: Different results returned by getCurrency for locale " + loc);
+            }
+
+            checkEquivalence(jdkDecfs.getCurrencySymbol(), icuDecfs.getCurrencySymbol(), loc, "getCurrencySymbol");
+            checkEquivalence(jdkDecfs.getDecimalSeparator(), icuDecfs.getDecimalSeparator(), loc, "getDecimalSeparator");
+            checkEquivalence(jdkDecfs.getDigit(), icuDecfs.getDigit(), loc, "getDigit");
+            checkEquivalence(jdkDecfs.getExponentSeparator(), icuDecfs.getExponentSeparator(), loc, "getExponentSeparator");
+            checkEquivalence(jdkDecfs.getGroupingSeparator(), icuDecfs.getGroupingSeparator(), loc, "getGroupingSeparator");
+            checkEquivalence(jdkDecfs.getInfinity(), icuDecfs.getInfinity(), loc, "getInfinity");
+            checkEquivalence(jdkDecfs.getInternationalCurrencySymbol(), icuDecfs.getInternationalCurrencySymbol(), loc, "getInternationalCurrencySymbol");
+            checkEquivalence(jdkDecfs.getMinusSign(), icuDecfs.getMinusSign(), loc, "getMinusSign");
+            checkEquivalence(jdkDecfs.getMonetaryDecimalSeparator(), icuDecfs.getMonetaryDecimalSeparator(), loc, "getMonetaryDecimalSeparator");
+            checkEquivalence(jdkDecfs.getNaN(), icuDecfs.getNaN(), loc, "getNaN");
+            checkEquivalence(jdkDecfs.getPatternSeparator(), icuDecfs.getPatternSeparator(), loc, "getPatternSeparator");
+            checkEquivalence(jdkDecfs.getPercent(), icuDecfs.getPercent(), loc, "getPercent");
+            checkEquivalence(jdkDecfs.getPerMill(), icuDecfs.getPerMill(), loc, "getPerMill");
+            checkEquivalence(jdkDecfs.getZeroDigit(), icuDecfs.getZeroDigit(), loc, "getZeroDigit");
+        }
+    }
+
+    private void checkEquivalence(Object jo, Object io, Locale loc, String method) {
+        if (!jo.equals(io)) {
+            errln("FAIL: Different results returned by " + method + " for locale "
+                    + loc + " (jdk=" + jo + ",icu=" + io + ")");
+        }
+    }
+
+    /*
+     * Testing setters
+     */
+    public void TestSetSymbols() {
+        // ICU's JDK DecimalFormatSymbols implementation for de_DE locale
+        DecimalFormatSymbols decfs = DecimalFormatSymbols.getInstance(new Locale("de", "DE", "ICU"));
+
+        // en_US is supported by JDK, so this is the JDK's own DecimalFormatSymbols
+        Locale loc = new Locale("en", "US");
+        DecimalFormatSymbols decfsEnUS = DecimalFormatSymbols.getInstance(loc);
+
+        // Copying over all symbols
+        decfs.setCurrency(decfsEnUS.getCurrency());
+
+        decfs.setCurrencySymbol(decfsEnUS.getCurrencySymbol());
+        decfs.setDecimalSeparator(decfsEnUS.getDecimalSeparator());
+        decfs.setDigit(decfsEnUS.getDigit());
+        decfs.setExponentSeparator(decfsEnUS.getExponentSeparator());
+        decfs.setGroupingSeparator(decfsEnUS.getGroupingSeparator());
+        decfs.setInfinity(decfsEnUS.getInfinity());
+        decfs.setInternationalCurrencySymbol(decfsEnUS.getInternationalCurrencySymbol());
+        decfs.setMinusSign(decfsEnUS.getMinusSign());
+        decfs.setMonetaryDecimalSeparator(decfsEnUS.getMonetaryDecimalSeparator());
+        decfs.setNaN(decfsEnUS.getNaN());
+        decfs.setPatternSeparator(decfsEnUS.getPatternSeparator());
+        decfs.setPercent(decfsEnUS.getPercent());
+        decfs.setPerMill(decfsEnUS.getPerMill());
+        decfs.setZeroDigit(decfsEnUS.getZeroDigit());
+
+        // Check
+        Currency cur = decfs.getCurrency();
+        Currency curEnUS = decfsEnUS.getCurrency();
+        if ((cur != null && curEnUS == null)
+                || (cur == null && curEnUS != null)
+                || !cur.equals(curEnUS)) {
+            errln("FAIL: Different results returned by getCurrency");
+        }
+
+        checkEquivalence(decfs.getCurrencySymbol(), decfsEnUS.getCurrencySymbol(), loc, "getCurrencySymbol");
+        checkEquivalence(decfs.getDecimalSeparator(), decfsEnUS.getDecimalSeparator(), loc, "getDecimalSeparator");
+        checkEquivalence(decfs.getDigit(), decfsEnUS.getDigit(), loc, "getDigit");
+        checkEquivalence(decfs.getExponentSeparator(), decfsEnUS.getExponentSeparator(), loc, "getExponentSeparator");
+        checkEquivalence(decfs.getGroupingSeparator(), decfsEnUS.getGroupingSeparator(), loc, "getGroupingSeparator");
+        checkEquivalence(decfs.getInfinity(), decfsEnUS.getInfinity(), loc, "getInfinity");
+        checkEquivalence(decfs.getInternationalCurrencySymbol(), decfsEnUS.getInternationalCurrencySymbol(), loc, "getInternationalCurrencySymbol");
+        checkEquivalence(decfs.getMinusSign(), decfsEnUS.getMinusSign(), loc, "getMinusSign");
+        checkEquivalence(decfs.getMonetaryDecimalSeparator(), decfsEnUS.getMonetaryDecimalSeparator(), loc, "getMonetaryDecimalSeparator");
+        checkEquivalence(decfs.getNaN(), decfsEnUS.getNaN(), loc, "getNaN");
+        checkEquivalence(decfs.getPatternSeparator(), decfsEnUS.getPatternSeparator(), loc, "getPatternSeparator");
+        checkEquivalence(decfs.getPercent(), decfsEnUS.getPercent(), loc, "getPercent");
+        checkEquivalence(decfs.getPerMill(), decfsEnUS.getPerMill(), loc, "getPerMill");
+        checkEquivalence(decfs.getZeroDigit(), decfsEnUS.getZeroDigit(), loc, "getZeroDigit");
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
new file mode 100644
index 0000000..7142439
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
@@ -0,0 +1,181 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.ULocale;
+
+public class LocaleNameTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new LocaleNameTest().run(args);
+    }
+
+    public void TestLanguageNames() {
+        Locale[] locales = Locale.getAvailableLocales();
+        StringBuffer icuid = new StringBuffer();
+        for (Locale inLocale : locales) {
+            if (TestUtil.isProblematicIBMLocale(inLocale)) {
+                logln("Skipped " + inLocale);
+                continue;
+            }
+
+            ULocale inULocale = ULocale.forLocale(inLocale);
+            Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
+            for (Locale forLocale : locales) {
+                if (forLocale.getLanguage().length() == 0) {
+                    continue;
+                }
+                icuid.setLength(0);
+                icuid.append(forLocale.getLanguage());
+                String country = forLocale.getCountry();
+                String variant = forLocale.getVariant();
+                if (country.length() != 0) {
+                    icuid.append("_");
+                    icuid.append(country);
+                }
+                if (variant.length() != 0) {
+                    if (country.length() == 0) {
+                        icuid.append("_");
+                    }
+                    icuid.append("_");
+                    icuid.append(variant);
+                }
+                ULocale forULocale = new ULocale(icuid.toString());
+                String icuname = ULocale.getDisplayLanguage(forULocale.getLanguage(), inULocale);
+                if (icuname.equals(forULocale.getLanguage()) || icuname.length() == 0) {
+                    continue;
+                }
+
+                String name = forLocale.getDisplayLanguage(inLocale);
+                if (TestUtil.isICUExtendedLocale(inLocale)) {
+                    // The name should be taken from ICU
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Language name by ICU is " + icuname + ", but got " + name
+                                + " for locale " + forLocale + " in locale " + inLocale);
+                    }
+                } else {
+                    if (!name.equals(icuname)) {
+                        logln("INFO: Language name by JDK is " + name + ", but " + icuname + 
+                              " by ICU, for locale " + forLocale + " in locale " + inLocale);
+                    }
+                    // Try explicit ICU locale (xx_yy_ICU)
+                    name = forLocale.getDisplayLanguage(inLocaleICU);
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Language name by ICU is " + icuname + ", but got " + name
+                              + " for locale " + forLocale + " in locale " + inLocaleICU);
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestCountryNames() {
+        Locale[] locales = Locale.getAvailableLocales();
+        for (Locale inLocale : locales) {
+            if (TestUtil.isProblematicIBMLocale(inLocale)) {
+                logln("Skipped " + inLocale);
+                continue;
+            }
+
+            ULocale inULocale = ULocale.forLocale(inLocale);
+            Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
+            for (Locale forLocale : locales) {
+                if (forLocale.getCountry().length() == 0) {
+                    continue;
+                }
+                // ULocale#forLocale preserves country always
+                ULocale forULocale = ULocale.forLocale(forLocale);
+                String icuname = ULocale.getDisplayCountry(forULocale.getCountry(), inULocale);
+                if (icuname.equals(forULocale.getCountry()) || icuname.length() == 0) {
+                    continue;
+                }
+
+                String name = forLocale.getDisplayCountry(inLocale);
+                if (TestUtil.isICUExtendedLocale(inLocale)) {
+                    // The name should be taken from ICU
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Country name by ICU is " + icuname + ", but got " + name
+                                + " for locale " + forLocale + " in locale " + inLocale);
+                    }
+                } else {
+                    // The name might be taken from JDK
+                    if (!name.equals(icuname)) {
+                        logln("INFO: Country name by JDK is " + name + ", but " + icuname + 
+                              " in ICU, for locale " + forLocale + " in locale " + inLocale);
+                    }
+                    // Try explicit ICU locale (xx_yy_ICU)
+                    name = forLocale.getDisplayCountry(inLocaleICU);
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Country name by ICU is " + icuname + ", but got " + name
+                              + " for locale " + forLocale + " in locale " + inLocaleICU);
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestVariantNames() {
+        Locale[] locales = Locale.getAvailableLocales();
+        StringBuffer icuid = new StringBuffer();
+        for (Locale inLocale : locales) {
+            if (TestUtil.isProblematicIBMLocale(inLocale)) {
+                logln("Skipped " + inLocale);
+                continue;
+            }
+
+            ULocale inULocale = ULocale.forLocale(inLocale);
+            Locale inLocaleICU = TestUtil.toICUExtendedLocale(inLocale);
+            for (Locale forLocale : locales) {
+                if (forLocale.getVariant().length() == 0) {
+                    continue;
+                }
+                icuid.setLength(0);
+                icuid.append(forLocale.getLanguage());
+                String country = forLocale.getCountry();
+                String variant = forLocale.getVariant();
+                if (country.length() != 0) {
+                    icuid.append("_");
+                    icuid.append(country);
+                }
+                if (variant.length() != 0) {
+                    if (country.length() == 0) {
+                        icuid.append("_");
+                    }
+                    icuid.append("_");
+                    icuid.append(variant);
+                }
+                ULocale forULocale = new ULocale(icuid.toString());
+                String icuname = ULocale.getDisplayVariant(forULocale.getVariant(), inULocale);
+                if (icuname.equals(forULocale.getVariant()) || icuname.length() == 0) {
+                    continue;
+                }
+
+                String name = forLocale.getDisplayVariant(inLocale);
+                if (TestUtil.isICUExtendedLocale(inLocale)) {
+                    // The name should be taken from ICU
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Variant name by ICU is " + icuname + ", but got " + name
+                                + " for locale " + forLocale + " in locale " + inLocale);
+                    }
+                } else {
+                    if (!name.equals(icuname)) {
+                        logln("INFO: Variant name by JDK is " + name + ", but " + icuname + 
+                              " in ICU, for locale " + forLocale + " in locale " + inLocale);
+                    }
+                    // Try explicit ICU locale (xx_yy_ICU)
+                    name = forLocale.getDisplayVariant(inLocaleICU);
+                    if (!name.equals(icuname)) {
+                        errln("FAIL: Variant name by ICU is " + icuname + ", but got " + name
+                              + " for locale " + forLocale + " in locale " + inLocaleICU);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
new file mode 100644
index 0000000..b881182
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
@@ -0,0 +1,291 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class NumberFormatTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new NumberFormatTest().run(args);
+    }
+
+    private static final int DEFAULT_TYPE = 0;
+    private static final int NUMBER_TYPE = 1;
+    private static final int INTEGER_TYPE  = 2;
+    private static final int PERCENT_TYPE = 3;
+    private static final int CURRENCY_TYPE = 4;
+
+    /*
+     * Check if getInstance returns the ICU implementation.
+     */
+    public void TestGetInstance() {
+        for (Locale loc : NumberFormat.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+            checkGetInstance(DEFAULT_TYPE, loc);
+            checkGetInstance(NUMBER_TYPE, loc);
+            checkGetInstance(INTEGER_TYPE, loc);
+            checkGetInstance(PERCENT_TYPE, loc);
+            checkGetInstance(CURRENCY_TYPE, loc);
+        }
+    }
+
+    private void checkGetInstance(int type, Locale loc) {
+        NumberFormat nf;
+        String[] method = new String[1];
+        nf = getJDKInstance(type, loc, method);
+
+        boolean isIcuImpl = (nf instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatICU)
+                            || (nf instanceof com.ibm.icu.impl.jdkadapter.NumberFormatICU);
+        if (TestUtil.isICUExtendedLocale(loc)) {
+            if (!isIcuImpl) {
+                errln("FAIL: " + method[0] + " returned JDK NumberFormat for locale " + loc);
+            }
+        } else {
+            if (isIcuImpl) {
+                logln("INFO: " + method[0] + " returned ICU NumberFormat for locale " + loc);
+            }
+            Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+            NumberFormat nfIcu = null;
+            nfIcu = getJDKInstance(type, iculoc, null);
+            if (isIcuImpl) {
+                if (!nf.equals(nfIcu)) {
+                    errln("FAIL: " + method[0] + " returned ICU NumberFormat for locale " + loc
+                            + ", but different from the one for locale " + iculoc);
+                }
+            } else {
+                if (!(nfIcu instanceof com.ibm.icu.impl.jdkadapter.DecimalFormatICU)
+                        && !(nfIcu instanceof com.ibm.icu.impl.jdkadapter.NumberFormatICU)) {
+                    errln("FAIL: " + method[0] + " returned JDK NumberFormat for locale " + iculoc);
+                }
+            }
+        }
+    }
+
+    private NumberFormat getJDKInstance(int type, Locale loc, String[] methodName) {
+        NumberFormat nf = null;
+        String method = null;
+
+        switch (type) {
+        case DEFAULT_TYPE:
+            nf = NumberFormat.getInstance(loc);
+            method = "getInstance";
+            break;
+        case NUMBER_TYPE:
+            nf = NumberFormat.getNumberInstance(loc);
+            method = "getNumberInstance";
+            break;
+        case INTEGER_TYPE:
+            nf = NumberFormat.getIntegerInstance(loc);
+            method = "getIntegerInstance";
+            break;
+        case PERCENT_TYPE:
+            nf = NumberFormat.getPercentInstance(loc);
+            method = "getPercentInstance";
+            break;
+        case CURRENCY_TYPE:
+            nf = NumberFormat.getCurrencyInstance(loc);
+            method = "getCurrencyInstance";
+            break;
+        }
+        if (methodName != null) {
+            methodName[0] = method;
+        }
+        return nf;
+    }
+
+    private com.ibm.icu.text.NumberFormat getICUInstance(int type, Locale loc, String[] methodName) {
+        com.ibm.icu.text.NumberFormat icunf = null;
+        String method = null;
+
+        switch (type) {
+        case DEFAULT_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getInstance(loc);
+            method = "getInstance";
+            break;
+        case NUMBER_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getNumberInstance(loc);
+            method = "getNumberInstance";
+            break;
+        case INTEGER_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getIntegerInstance(loc);
+            method = "getIntegerInstance";
+            break;
+        case PERCENT_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getPercentInstance(loc);
+            method = "getPercentInstance";
+            break;
+        case CURRENCY_TYPE:
+            icunf = com.ibm.icu.text.NumberFormat.getCurrencyInstance(loc);
+            method = "getCurrencyInstance";
+            break;
+        }
+        if (methodName != null) {
+            methodName[0] = method;
+        }
+        return icunf;
+    }
+
+    /*
+     * Testing the behavior of number format between ICU instance and its
+     * equivalent created via the Locale SPI framework.
+     */
+    public void TestICUEquivalent() {
+        Locale[] TEST_LOCALES = {
+                new Locale("en", "US"),
+                new Locale("de", "DE"),
+                new Locale("zh"),
+        };
+
+        long[] TEST_LONGS = {
+                40L,
+                -1578L,
+                112233445566778899L,
+        };
+
+        double[] TEST_DOUBLES = {
+                0.0451D,
+                -1.679D,
+                124578.369D,
+        };
+
+        Object[] TEST_NUMBERS = {
+                Byte.valueOf((byte)13),
+                Integer.valueOf(3961),
+                Long.valueOf(-3451237890000L),
+                Float.valueOf(1.754F),
+                Double.valueOf(-129.942362353D),
+                new BigInteger("-15253545556575859505"),
+                new BigDecimal("3.14159265358979323846264338"),
+        };
+
+        String[] methodName = new String[1];
+        for (Locale loc : TEST_LOCALES) {
+            for (int type = 0; type <= 4; type++) {
+                Locale iculoc = TestUtil.toICUExtendedLocale(loc);
+                NumberFormat nf = getJDKInstance(type, iculoc, methodName);
+                com.ibm.icu.text.NumberFormat icunf = getICUInstance(type, loc, null);
+
+                String s1, s2;
+                Number n1, n2;
+                boolean pe1, pe2;
+                for (long l : TEST_LONGS) {
+                    s1 = nf.format(l);
+                    s2 = icunf.format(l);
+
+                    if (!s1.equals(s2)) {
+                        errln("FAIL: Different results for formatting long " + l + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + s1 + " ICU:" + s2);
+                    }
+
+                    pe1 = false;
+                    n1 = n2 = null;
+                    try {
+                        n1 = nf.parse(s1);
+                    } catch (ParseException e) {
+                        pe1 = true;
+                    }
+                    pe2 = false;
+                    try {
+                        n2 = icunf.parse(s2);
+                    } catch (ParseException e) {
+                        pe2 = true;
+                    }
+                    if ((pe1 && !pe2) || (!pe1 && pe2)) {
+                        errln("FAIL: ParseException thrown by " + (pe1 ? "JDK" : "ICU")
+                                + " NumberFormat(" + methodName[0] + ") for parsing long" + l
+                                + " in locale " + loc);
+                    } else if (!pe1 && !pe2 && !n1.equals(n2)) {
+                        errln("FAIL: Different results for parsing long " + l + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + n1 + " ICU:" + n2);
+                    } else if (pe1 && pe2) {
+                        logln("INFO: ParseException thrown by both JDK and ICU NumberFormat("
+                                + methodName[0] + ") for parsing long " + l + " in locale " + loc);
+                    }
+                }
+
+                for (double d : TEST_DOUBLES) {
+                    s1 = nf.format(d);
+                    s2 = icunf.format(d);
+
+                    if (!s1.equals(s2)) {
+                        errln("FAIL: Different results for formatting double " + d + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + s1 + " ICU:" + s2);
+                    }
+
+                    pe1 = false;
+                    n1 = n2 = null;
+                    try {
+                        n1 = nf.parse(s1);
+                    } catch (ParseException e) {
+                        pe1 = true;
+                    }
+                    pe2 = false;
+                    try {
+                        n2 = icunf.parse(s2);
+                    } catch (ParseException e) {
+                        pe2 = true;
+                    }
+                    if ((pe1 && !pe2) || (!pe1 && pe2)) {
+                        errln("FAIL: ParseException thrown by " + (pe1 ? "JDK" : "ICU")
+                                + " NumberFormat(" + methodName[0] + ") for parsing double" + d
+                                + " in locale " + loc);
+                    } else if (!pe1 && !pe2 && !n1.equals(n2)) {
+                        errln("FAIL: Different results for parsing double " + d + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + n1 + " ICU:" + n2);
+                    } else if (pe1 && pe2) {
+                        logln("INFO: ParseException thrown by both JDK and ICU NumberFormat("
+                                + methodName[0] + ") for parsing double " + d + " in locale " + loc);
+                    }
+                }
+
+                for (Object o : TEST_NUMBERS) {
+                    s1 = nf.format(o);
+                    s2 = icunf.format(o);
+
+                    if (!s1.equals(s2)) {
+                        errln("FAIL: Different results for formatting " + o.getClass().getName() + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + s1 + " ICU:" + s2);
+                    }
+
+                    pe1 = false;
+                    n1 = n2 = null;
+                    try {
+                        n1 = nf.parse(s1);
+                    } catch (ParseException e) {
+                        pe1 = true;
+                    }
+                    pe2 = false;
+                    try {
+                        n2 = icunf.parse(s2);
+                    } catch (ParseException e) {
+                        pe2 = true;
+                    }
+                    if ((pe1 && !pe2) || (!pe1 && pe2)) {
+                        errln("FAIL: ParseException thrown by " + (pe1 ? "JDK" : "ICU")
+                                + " NumberFormat(" + methodName[0] + ") for parsing " + o.getClass().getName()
+                                + " in locale " + loc);
+                    } else if (!pe1 && !pe2 && !n1.equals(n2)) {
+                        errln("FAIL: Different results for parsing " + o.getClass().getName() + " by NumberFormat("
+                                + methodName[0] + ") in locale " + loc + " - JDK:" + n1 + " ICU:" + n2);
+                    } else if (pe1 && pe2) {
+                        logln("INFO: ParseException thrown by both JDK and ICU NumberFormat("
+                                + methodName[0] + ") for parsing " + o.getClass().getName() + " in locale " + loc);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java b/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java
new file mode 100644
index 0000000..d3775fa
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "BreakIteratorTest",
+            "CollatorTest",
+            "DateFormatSymbolsTest",
+            "DateFormatTest",
+            "DecimalFormatSymbolsTest",
+            "NumberFormatTest",
+            "CurrencyNameTest",
+            "LocaleNameTest",
+            "TimeZoneNameTest",
+        });
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java b/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
new file mode 100644
index 0000000..ded4dfd
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
@@ -0,0 +1,83 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.util.Locale;
+
+public class TestUtil {
+
+    private static final String ICU_VARIANT = "ICU";
+    private static final String ICU_VARIANT_SUFFIX = "_ICU";
+
+    public static Locale toICUExtendedLocale(Locale locale) {
+        if (isICUExtendedLocale(locale)) {
+            return locale;
+        }
+        String variant = locale.getVariant();
+        variant = variant.length() == 0 ? ICU_VARIANT : variant + ICU_VARIANT_SUFFIX;
+        return new Locale(locale.getLanguage(), locale.getCountry(), variant);
+    }
+
+    public static boolean isICUExtendedLocale(Locale locale) {
+        String variant = locale.getVariant();
+        if (variant.equals(ICU_VARIANT) || variant.endsWith(ICU_VARIANT_SUFFIX)) {
+            return true;
+        }
+        return false;
+    }
+
+    public static boolean equals(Object o1, Object o2) {
+        if (o1 == null && o2 == null) {
+            return true;
+        }
+        if (o1 == null || o2 == null) {
+            return false;
+        }
+        return o1.equals(o2);
+    }
+
+    /*
+     * Ticket#6368
+     * 
+     * The ICU4J locale spi test cases reports many errors on IBM Java 6. There are two kinds
+     * of problems observed and both of them look like implementation problems in IBM Java 6.
+     * 
+     * - When a locale has variant field (for example, sr_RS_Cyrl, de_DE_PREEURO), adding ICU
+     *   suffix in the variant field (for example, sr_RS_Cyrl_ICU, de_DE_PREEURO_ICU) has no effects.
+     *   For these locales, IBM JRE 6 ignores installed Locale providers.
+     *   
+     * - For "sh" sublocales with "ICU" variant (for example, sh__ICU, sh_CS_ICU), IBM JRE 6 also
+     *   ignores installed ICU locale providers. Probably, "sh" is internally mapped to "sr_RS_Cyrl"
+     *   internally before locale look up.
+     * 
+     * For now, we exclude these problematic locales from locale spi test cases on IBM Java 6.
+     */
+    private static final boolean IBMJRE;
+    static {
+        String javaVendor = System.getProperty("java.vendor");
+        if (javaVendor != null && javaVendor.indexOf("IBM") >= 0) {
+            IBMJRE = true;
+        } else {
+            IBMJRE = false;
+        }
+    }
+
+    public static boolean isProblematicIBMLocale(Locale loc) {
+        if (!IBMJRE) {
+            return false;
+        }
+        if (loc.getLanguage().equals("sh")) {
+            return true;
+        }
+        String variant = loc.getVariant();
+        if (variant.startsWith("EURO") || variant.startsWith("PREEURO")
+                || variant.startsWith("Cyrl") || variant.startsWith("Latn")) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java b/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
new file mode 100644
index 0000000..d831a76
--- /dev/null
+++ b/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
@@ -0,0 +1,104 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.localespi;
+
+import java.util.Locale;
+import java.util.TimeZone;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.ULocale;
+
+public class TimeZoneNameTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TimeZoneNameTest().run(args);
+    }
+
+    public void TestTimeZoneNames() {
+        String[] tzids = TimeZone.getAvailableIDs();
+        for (Locale loc : Locale.getAvailableLocales()) {
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                logln("Skipped " + loc);
+                continue;
+            }
+            for (String tzid : tzids) {
+                TimeZone tz = TimeZone.getTimeZone(tzid);
+                com.ibm.icu.util.TimeZone tzIcu = com.ibm.icu.util.TimeZone.getTimeZone(tzid);
+                checkDisplayNamePair(TimeZone.SHORT, tz, tzIcu, loc);
+                checkDisplayNamePair(TimeZone.LONG, tz, tzIcu, loc);
+            }
+        }
+    }
+
+    private void checkDisplayNamePair(int style, TimeZone tz, com.ibm.icu.util.TimeZone icuTz, Locale loc) {
+        /* Note: There are two problems here.
+         * 
+         * It looks Java 6 requires a TimeZoneNameProvider to return both standard name and daylight name
+         * for a zone.  If the provider implementation only returns either of them, Java 6 also ignore
+         * the other.  In ICU, there are zones which do not have daylight names, especially zones which
+         * do not use daylight time.  This test case does not check a standard name if its daylight name
+         * is not available because of the Java 6 implementation problem.
+         * 
+         * Another problem is that ICU always use a standard name for a zone which does not use daylight
+         * saving time even daylight name is requested.
+         */
+
+        String icuStdName = getIcuDisplayName(icuTz, false, style, loc);
+        String icuDstName = getIcuDisplayName(icuTz, true, style, loc);
+        if (icuStdName != null && icuDstName != null && !icuStdName.equals(icuDstName)) {
+            checkDisplayName(false, style, tz, loc, icuStdName);
+            checkDisplayName(true, style, tz, loc, icuDstName);
+        }
+    }
+
+    private String getIcuDisplayName(com.ibm.icu.util.TimeZone icuTz, boolean daylight, int style, Locale loc) {
+        ULocale uloc = ULocale.forLocale(loc);
+        boolean shortStyle = (style == TimeZone.SHORT);
+        String icuname = icuTz.getDisplayName(daylight,
+                (shortStyle ? com.ibm.icu.util.TimeZone.SHORT : com.ibm.icu.util.TimeZone.LONG),
+                uloc);
+        int numDigits = 0;
+        for (int i = 0; i < icuname.length(); i++) {
+            if (UCharacter.isDigit(icuname.charAt(i))) {
+                numDigits++;
+            }
+        }
+        if (numDigits >= 3) {
+            // ICU does not have the localized name
+            return null;
+        }
+        return icuname;
+    }
+
+    private void checkDisplayName(boolean daylight, int style, TimeZone tz, Locale loc, String icuname) {
+        String styleStr = (style == TimeZone.SHORT) ? "SHORT" : "LONG";
+
+        String name = tz.getDisplayName(daylight, style, loc);
+        if (TestUtil.isICUExtendedLocale(loc)) {
+            // The name should be taken from ICU
+            if (!name.equals(icuname)) {
+                errln("FAIL: TimeZone name by ICU is " + icuname + ", but got " + name
+                        + " for time zone " + tz.getID() + " in locale " + loc
+                        + " (daylight=" + daylight + ", style=" + styleStr + ")");
+            }
+        } else {
+            if (!name.equals(icuname)) {
+                logln("INFO: TimeZone name by ICU is " + icuname + ", but got " + name
+                        + " for time zone " + tz.getID() + " in locale " + loc
+                        + " (daylight=" + daylight + ", style=" + styleStr + ")");
+            }
+            // Try explicit ICU locale (xx_yy_ICU)
+            Locale icuLoc = TestUtil.toICUExtendedLocale(loc);
+            name = tz.getDisplayName(daylight, style, icuLoc);
+            if (!name.equals(icuname)) {
+                errln("FAIL: TimeZone name by ICU is " + icuname + ", but got " + name
+                        + " for time zone " + tz.getID() + " in locale " + icuLoc
+                        + " (daylight=" + daylight + ", style=" + styleStr + ")");
+            }
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java b/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java
new file mode 100644
index 0000000..8332e24
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java
@@ -0,0 +1,283 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.icuadapter;
+
+import java.math.RoundingMode;
+import java.text.FieldPosition;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.text.ParsePosition;
+
+import com.ibm.icu.impl.jdkadapter.NumberFormatICU;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.CurrencyAmount;
+
+/**
+ * NumberFormatJDK is an adapter class which wraps java.text.NumberFormat and
+ * implements ICU4J NumberFormat APIs.
+ */
+public class NumberFormatJDK extends com.ibm.icu.text.NumberFormat {
+
+    private static final long serialVersionUID = -1739846528146803964L;
+
+    private NumberFormat fJdkNfmt;
+
+    private NumberFormatJDK(NumberFormat jdkNfmt) {
+        fJdkNfmt = jdkNfmt;
+    }
+
+    public static com.ibm.icu.text.NumberFormat wrap(NumberFormat jdkNfmt) {
+        if (jdkNfmt instanceof NumberFormatICU) {
+            return ((NumberFormatICU)jdkNfmt).unwrap();
+        }
+        return new NumberFormatJDK(jdkNfmt);
+    }
+
+    public NumberFormat unwrap() {
+        return fJdkNfmt;
+    }
+
+    @Override
+    public Object clone() {
+        NumberFormatJDK other = (NumberFormatJDK)super.clone();
+        other.fJdkNfmt = (NumberFormat)fJdkNfmt.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof NumberFormatJDK) {
+            return ((NumberFormatJDK)obj).fJdkNfmt.equals(fJdkNfmt);
+        }
+        return false;
+    }
+
+    //public String format(java.math.BigDecimal number)
+    //public String format(BigDecimal number)
+
+    @Override
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public StringBuffer format(BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number.toBigDecimal(), toAppendTo, pos);
+    }
+
+    @Override
+    public StringBuffer format(java.math.BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    //public String format(java.math.BigInteger number) 
+
+    //String format(CurrencyAmount currAmt)
+
+    @Override
+    public StringBuffer format(CurrencyAmount currAmt, StringBuffer toAppendTo, FieldPosition pos) {
+        java.util.Currency save = fJdkNfmt.getCurrency();
+        String currCode = currAmt.getCurrency().getCurrencyCode();
+        boolean same = save.getCurrencyCode().equals(currCode);
+        if (!same) {
+            fJdkNfmt.setCurrency(java.util.Currency.getInstance(currCode));
+        }
+        fJdkNfmt.format(currAmt.getNumber(), toAppendTo, pos);
+        if (!same) {
+            fJdkNfmt.setCurrency(save);
+        }
+        return toAppendTo;
+    }
+
+    //public String format(double number)
+
+    @Override
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    //public String format(long number)
+
+    @Override
+    public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fJdkNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public Currency getCurrency() {
+        java.util.Currency jdkCurrency = fJdkNfmt.getCurrency();
+        if (jdkCurrency == null) {
+            return null;
+        }
+        return Currency.getInstance(jdkCurrency.getCurrencyCode());
+    }
+
+    //protected Currency getEffectiveCurrency()
+
+    @Override
+    public int getMaximumFractionDigits() {
+        return fJdkNfmt.getMaximumFractionDigits();
+    }
+
+    @Override
+    public int getMaximumIntegerDigits() {
+        return fJdkNfmt.getMaximumIntegerDigits();
+    }
+
+    @Override
+    public int getMinimumFractionDigits() {
+        return fJdkNfmt.getMinimumFractionDigits();
+    }
+
+    public int getMinumumIntegerDigits() {
+        return fJdkNfmt.getMinimumIntegerDigits();
+    }
+
+    @Override
+    public int getRoundingMode() {
+        RoundingMode jdkMode = fJdkNfmt.getRoundingMode();
+        int icuMode = BigDecimal.ROUND_UP;
+
+        if (jdkMode.equals(RoundingMode.CEILING)) {
+            icuMode = BigDecimal.ROUND_CEILING;
+        } else if (jdkMode.equals(RoundingMode.DOWN)) {
+            icuMode = BigDecimal.ROUND_DOWN;
+        } else if (jdkMode.equals(RoundingMode.FLOOR)) {
+            icuMode = BigDecimal.ROUND_FLOOR;
+        } else if (jdkMode.equals(RoundingMode.HALF_DOWN)) {
+            icuMode = BigDecimal.ROUND_HALF_DOWN;
+        } else if (jdkMode.equals(RoundingMode.HALF_EVEN)) {
+            icuMode = BigDecimal.ROUND_HALF_EVEN;
+        } else if (jdkMode.equals(RoundingMode.HALF_UP)) {
+            icuMode = BigDecimal.ROUND_HALF_UP;
+        } else if (jdkMode.equals(RoundingMode.UNNECESSARY)) {
+            icuMode = BigDecimal.ROUND_UNNECESSARY;
+        } else if (jdkMode.equals(RoundingMode.UP)) {
+            icuMode = BigDecimal.ROUND_UP;
+        }
+        return icuMode;
+    }
+
+    @Override
+    public int hashCode() {
+        return fJdkNfmt.hashCode();
+    }
+
+    @Override
+    public boolean isGroupingUsed() {
+        return fJdkNfmt.isGroupingUsed();
+    }
+
+    @Override
+    public boolean isParseIntegerOnly() {
+        return fJdkNfmt.isParseIntegerOnly();
+    }
+
+    @Override
+    public boolean isParseStrict() {
+        // JDK NumberFormat does not support strict parsing
+        return false;
+    }
+
+    @Override
+    public Number parse(String text) throws ParseException {
+        return fJdkNfmt.parse(text);
+    }
+
+    @Override
+    public Number parse(String text, ParsePosition parsePosition) {
+        return fJdkNfmt.parse(text, parsePosition);
+    }
+
+    //public Object parseObject(String source, ParsePosition parsePosition)
+
+    @Override
+    public void setCurrency(Currency theCurrency) {
+        if (theCurrency == null) {
+            fJdkNfmt.setCurrency(null);
+            return;
+        } else {
+            fJdkNfmt.setCurrency(java.util.Currency.getInstance(theCurrency.getCurrencyCode()));
+        }
+    }
+
+    @Override
+    public void setGroupingUsed(boolean newValue) {
+        fJdkNfmt.setGroupingUsed(newValue);
+    }
+
+    @Override
+    public void setMaximumFractionDigits(int newValue) {
+        fJdkNfmt.setMaximumFractionDigits(newValue);
+    }
+
+    @Override
+    public void setMaximumIntegerDigits(int newValue) {
+        fJdkNfmt.setMaximumIntegerDigits(newValue);
+    }
+
+    @Override
+    public void setMinimumFractionDigits(int newValue) {
+        fJdkNfmt.setMinimumFractionDigits(newValue);
+    }
+
+    @Override
+    public void setMinimumIntegerDigits(int newValue) {
+        fJdkNfmt.setMinimumIntegerDigits(newValue);
+    }
+
+    @Override
+    public void setParseIntegerOnly(boolean value) {
+        fJdkNfmt.setParseIntegerOnly(value);
+    }
+
+    @Override
+    public void setParseStrict(boolean value) {
+        // JDK NumberFormat does not support strict parsing - ignore this operation
+    }
+
+    @Override
+    public void setRoundingMode(int roundingMode) {
+        RoundingMode mode = null;
+        switch (roundingMode) {
+        case BigDecimal.ROUND_CEILING:
+            mode = RoundingMode.CEILING;
+            break;
+        case BigDecimal.ROUND_DOWN:
+            mode = RoundingMode.DOWN;
+            break;
+        case BigDecimal.ROUND_FLOOR:
+            mode = RoundingMode.FLOOR;
+            break;
+        case BigDecimal.ROUND_HALF_DOWN:
+            mode = RoundingMode.HALF_DOWN;
+            break;
+        case BigDecimal.ROUND_HALF_EVEN:
+            mode = RoundingMode.HALF_EVEN;
+            break;
+        case BigDecimal.ROUND_HALF_UP:
+            mode = RoundingMode.HALF_UP;
+            break;
+        case BigDecimal.ROUND_UNNECESSARY:
+            mode = RoundingMode.UNNECESSARY;
+            break;
+        case BigDecimal.ROUND_UP:
+            mode = RoundingMode.UP;
+            break;
+        }
+        if (mode == null) {
+            throw new IllegalArgumentException("Invalid rounding mode: " + roundingMode);
+        }
+        fJdkNfmt.setRoundingMode(mode);
+    }
+}
\ No newline at end of file
diff --git a/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java b/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java
new file mode 100644
index 0000000..24025a0
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java
@@ -0,0 +1,174 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.icuadapter;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+import com.ibm.icu.impl.Grego;
+import com.ibm.icu.impl.jdkadapter.TimeZoneICU;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * TimeZoneJDK is an adapter class which wraps java.util.TimeZone and
+ * implements ICU4J TimeZone APIs.
+ */
+public class TimeZoneJDK extends com.ibm.icu.util.TimeZone {
+
+    private static final long serialVersionUID = -1137052823551791933L;
+
+    private TimeZone fJdkTz;
+    private transient Calendar fJdkCal;
+
+    private TimeZoneJDK(TimeZone jdkTz) {
+        fJdkTz = jdkTz;
+    }
+    
+    public static com.ibm.icu.util.TimeZone wrap(TimeZone jdkTz) {
+        if (jdkTz instanceof TimeZoneICU) {
+            return ((TimeZoneICU)jdkTz).unwrap();
+        }
+        return new TimeZoneJDK(jdkTz);
+    }
+    
+    public TimeZone unwrap() {
+        return fJdkTz;
+    }
+
+    @Override
+    public Object clone() {
+        TimeZoneJDK other = (TimeZoneJDK)super.clone();
+        other.fJdkTz = (TimeZone)fJdkTz.clone();
+        return other;
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof TimeZoneJDK) {
+            return (((TimeZoneJDK)obj).fJdkTz).equals(fJdkTz);
+        }
+        return false;
+    }
+
+    //public String getDisplayName()
+    //public String getDisplayName(boolean daylight, int style)
+    //public String getDisplayName(Locale locale)
+    //public String getDisplayName(ULocale locale)
+    @Override
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        return fJdkTz.getDisplayName(daylight, style, locale);
+    }
+    
+    @Override
+    public String getDisplayName(boolean daylight, int style, ULocale locale) {
+        return fJdkTz.getDisplayName(daylight, style, locale.toLocale());
+    }
+
+    @Override
+    public int getDSTSavings() {
+        return fJdkTz.getDSTSavings();
+    }
+
+    @Override
+    public String getID() {
+        return fJdkTz.getID();
+    }
+
+    @Override
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+        return fJdkTz.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    @Override
+    public int getOffset(long date) {
+        return fJdkTz.getOffset(date);
+    }
+
+    @Override
+    public void getOffset(long date, boolean local, int[] offsets) {
+        synchronized(this) {
+            if (fJdkCal == null) {
+                fJdkCal = new GregorianCalendar(fJdkTz);
+            }
+            if (local) {
+                int fields[] = new int[6];
+                Grego.timeToFields(date, fields);
+                int hour, min, sec, mil;
+                int tmp = fields[5];
+                mil = tmp % 1000;
+                tmp /= 1000;
+                sec = tmp % 60;
+                tmp /= 60;
+                min = tmp % 60;
+                hour = tmp / 60;
+                fJdkCal.clear();
+                fJdkCal.set(fields[0], fields[1], fields[2], hour, min, sec);
+                fJdkCal.set(java.util.Calendar.MILLISECOND, mil);
+
+                int doy1, hour1, min1, sec1, mil1;
+                doy1 = fJdkCal.get(java.util.Calendar.DAY_OF_YEAR);
+                hour1 = fJdkCal.get(java.util.Calendar.HOUR_OF_DAY);
+                min1 = fJdkCal.get(java.util.Calendar.MINUTE);
+                sec1 = fJdkCal.get(java.util.Calendar.SECOND);
+                mil1 = fJdkCal.get(java.util.Calendar.MILLISECOND);
+
+                if (fields[4] != doy1 || hour != hour1 || min != min1 || sec != sec1 || mil != mil1) {
+                    // Calendar field(s) were changed due to the adjustment for non-existing time
+                    // Note: This code does not support non-existing local time at year boundary properly.
+                    // But, it should work fine for real timezones.
+                    int dayDelta = Math.abs(doy1 - fields[4]) > 1 ? 1 : doy1 - fields[4];
+                    int delta = ((((dayDelta * 24) + hour1 - hour) * 60 + min1 - min) * 60 + sec1 - sec) * 1000 + mil1 - mil;
+
+                    // In this case, we use the offsets before the transition
+                    fJdkCal.setTimeInMillis(fJdkCal.getTimeInMillis() - delta - 1);
+                }
+            } else {
+                fJdkCal.setTimeInMillis(date);
+            }
+            offsets[0] = fJdkCal.get(java.util.Calendar.ZONE_OFFSET);
+            offsets[1] = fJdkCal.get(java.util.Calendar.DST_OFFSET);
+        }
+    }
+
+    @Override
+    public int getRawOffset() {
+        return fJdkTz.getRawOffset();
+    }
+
+    @Override
+    public int hashCode() {
+        return fJdkTz.hashCode();
+    }
+
+    @Override
+    public boolean hasSameRules(com.ibm.icu.util.TimeZone other) {
+        return other.hasSameRules(TimeZoneJDK.wrap(fJdkTz));
+    }
+
+    @Override
+    public boolean inDaylightTime(Date date) {
+        return fJdkTz.inDaylightTime(date);
+    }
+
+    @Override
+    public void setID(String ID) {
+        fJdkTz.setID(ID);
+    }
+
+    @Override
+    public void setRawOffset(int offsetMillis) {
+        fJdkTz.setRawOffset(offsetMillis);
+    }
+
+    @Override
+    public boolean useDaylightTime() {
+        return fJdkTz.useDaylightTime();
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java b/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java
new file mode 100644
index 0000000..8b06446
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java
@@ -0,0 +1,183 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.ULocale;
+
+public class ICULocaleServiceProvider {
+    private static final String SPI_PROP_FILE = "com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties";
+
+    private static final String SUFFIX_KEY = "com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix";
+    private static final String ENABLE_VARIANTS_KEY = "com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIcuVariants";
+    private static final String ENABLE_ISO3_LANG_KEY = "com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIso3Languages";
+    private static final String USE_DECIMALFORMAT_KEY = "com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.useDecimalFormat";
+
+    private static boolean configLoaded = false;
+
+    private static String suffix = "ICU";
+    private static boolean enableVariants = true;
+    private static boolean enableIso3Lang = true;
+    private static boolean useDecimalFormat = false;
+
+    private static final Locale[] SPECIAL_LOCALES = {
+        new Locale("ja", "JP", "JP"),
+        new Locale("no"),
+        new Locale("no", "NO"),
+        new Locale("no", "NO", "NY"),
+        new Locale("sr", "CS"),
+        new Locale("th", "TH", "TH"),
+    };
+
+    private static Locale[] LOCALES = null;
+
+    public static Locale[] getAvailableLocales() {
+        Locale[] all = getLocales();
+        return Arrays.copyOf(all, all.length);
+    }
+
+    public static Locale canonicalize(Locale locale) {
+        Locale result = locale;
+        String variant = locale.getVariant();
+        String suffix = getIcuSuffix();
+        if (variant.equals(suffix)) {
+            result = new Locale(locale.getLanguage(), locale.getCountry());
+        } else if (variant.endsWith(suffix)
+                && variant.charAt(variant.length() - suffix.length() - 1) == '_') {
+            variant = variant.substring(0, variant.length() - suffix.length() - 1);
+            result = new Locale(locale.getLanguage(), locale.getCountry(), variant);
+        }
+        return result;
+    }
+
+    public static boolean useDecimalFormat() {
+        loadConfiguration();
+        return useDecimalFormat;
+    }
+
+    private static final Locale THAI_NATIVE_DIGIT_LOCALE = new Locale("th", "TH", "TH");
+    private static final char THAI_NATIVE_ZERO = '\u0E50';
+    private static DecimalFormatSymbols THAI_NATIVE_DECIMAL_SYMBOLS = null;
+
+    /*
+     * Returns a DecimalFormatSymbols if the given locale requires
+     * non-standard symbols, more specifically, native digits used
+     * by JDK Locale th_TH_TH.  If the locale does not requre a special
+     * symbols, null is returned.
+     */
+    public static synchronized DecimalFormatSymbols getDecimalFormatSymbolsForLocale(Locale loc) {
+        if (loc.equals(THAI_NATIVE_DIGIT_LOCALE)) {
+            if (THAI_NATIVE_DECIMAL_SYMBOLS == null) {
+                THAI_NATIVE_DECIMAL_SYMBOLS = new DecimalFormatSymbols(new ULocale("th_TH"));
+                THAI_NATIVE_DECIMAL_SYMBOLS.setDigit(THAI_NATIVE_ZERO);
+            }
+            return (DecimalFormatSymbols)THAI_NATIVE_DECIMAL_SYMBOLS.clone();
+        }
+        return null;
+    }
+
+    private static synchronized Locale[] getLocales() {
+        if (LOCALES != null) {
+            return LOCALES;
+        }
+
+        Set<Locale> localeSet = new HashSet<Locale>();
+        ULocale[] icuLocales = ICUResourceBundle.getAvailableULocales();
+
+        for (ULocale uloc : icuLocales) {
+            String language = uloc.getLanguage();
+            String country = uloc.getCountry();
+            String variant = uloc.getVariant();
+            if (language.length() >= 3 && !enableIso3Languages()) {
+                continue;
+            }
+            addLocale(new Locale(language, country, variant), localeSet);
+        }
+
+        for (Locale l : SPECIAL_LOCALES) {
+            addLocale(l, localeSet);
+        }
+
+        LOCALES = localeSet.toArray(new Locale[0]);
+        return LOCALES;
+    }
+
+    private static void addLocale(Locale loc, Set<Locale> locales) {
+        locales.add(loc);
+
+        if (enableIcuVariants()) {
+            // Add ICU variant
+            String language = loc.getLanguage();
+            String country = loc.getCountry();
+            String variant = loc.getVariant();
+
+            StringBuffer var = new StringBuffer(variant);
+            if (var.length() != 0) {
+                var.append("_");
+            }
+            var.append(getIcuSuffix());
+            locales.add(new Locale(language, country, var.toString()));
+        }
+    }
+
+    private static boolean enableIso3Languages() {
+        return enableIso3Lang;
+    }
+
+    private static boolean enableIcuVariants() {
+        loadConfiguration();
+        return enableVariants;
+    }
+
+    private static String getIcuSuffix() {
+        loadConfiguration();
+        return suffix;
+    }
+
+    private static synchronized void loadConfiguration() {
+        if (configLoaded) {
+            return;
+        }
+        Properties spiConfigProps = new Properties();
+        try {
+            InputStream is = ClassLoader.getSystemResourceAsStream(SPI_PROP_FILE);
+            spiConfigProps.load(is);
+
+            String val = (String)spiConfigProps.get(SUFFIX_KEY);
+            if (val != null && val.length() > 0) {
+                suffix = val;
+            }
+            enableVariants = parseBooleanString((String)spiConfigProps.get(ENABLE_VARIANTS_KEY), enableVariants);
+            enableIso3Lang = parseBooleanString((String)spiConfigProps.get(ENABLE_ISO3_LANG_KEY), enableIso3Lang);
+            useDecimalFormat = parseBooleanString((String)spiConfigProps.get(USE_DECIMALFORMAT_KEY), useDecimalFormat);
+        } catch (IOException ioe) {
+            // Any IO errors, ignore
+        }
+        configLoaded = true;
+    }
+
+    private static boolean parseBooleanString(String str, boolean defaultVal) {
+        if (str == null) {
+            return defaultVal;
+        }
+        if (str.equalsIgnoreCase("true")) {
+            return true;
+        } else if (str.equalsIgnoreCase("false")) {
+            return false;
+        }
+        return defaultVal;
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties b/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties
new file mode 100644
index 0000000..5103af2
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties
@@ -0,0 +1,30 @@
+#*
+#*******************************************************************************
+#* Copyright (C) 2008, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#* This is the properties is used for configuring ICU locale service provider
+#* implementation.
+#*
+
+# Whether if Locales with ICU's variant suffix will be included in getAvailableLocales.
+# [default: true]
+com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIcuVariants = true
+
+# Suffix string used in Locale's variant field to specify the ICU implementation.
+# [default: ICU]
+com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix = ICU
+
+# Whether if 3-letter language Locales are included in getAvailabeLocales.
+# [default: true]
+com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIso3Languages = true
+
+# Whether if java.text.DecimalFormat subclass is used for NumberFormat#getXXXInstance.
+# DecimalFormat#format(Object,StringBuffer,FieldPosition) is declared as final, so
+# ICU cannot override the implementation.  As a result, some number types such as
+# BigInteger/BigDecimal are not handled by the ICU implementation.  If a client expects
+# NumberFormat#getXXXInstance returns a DecimalFormat (for example, need to manipulate
+# decimal format patterns), he/she can set true to this setting.  However, in this case,
+# BigInteger/BigDecimal support is not done by ICU's implementation.
+# [default: false]
+com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.useDecimalFormat = false
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java
new file mode 100644
index 0000000..15b8709
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java
@@ -0,0 +1,51 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.BreakIterator;
+import java.text.spi.BreakIteratorProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.BreakIteratorICU;
+
+public class BreakIteratorProviderICU extends BreakIteratorProvider {
+
+    @Override
+    public BreakIterator getCharacterInstance(Locale locale) {
+        com.ibm.icu.text.BreakIterator icuBrkItr = com.ibm.icu.text.BreakIterator.getCharacterInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return BreakIteratorICU.wrap(icuBrkItr);
+    }
+
+    @Override
+    public BreakIterator getLineInstance(Locale locale) {
+        com.ibm.icu.text.BreakIterator icuBrkItr = com.ibm.icu.text.BreakIterator.getLineInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return BreakIteratorICU.wrap(icuBrkItr);
+    }
+
+    @Override
+    public BreakIterator getSentenceInstance(Locale locale) {
+        com.ibm.icu.text.BreakIterator icuBrkItr = com.ibm.icu.text.BreakIterator.getSentenceInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return BreakIteratorICU.wrap(icuBrkItr);
+    }
+
+    @Override
+    public BreakIterator getWordInstance(Locale locale) {
+        com.ibm.icu.text.BreakIterator icuBrkItr = com.ibm.icu.text.BreakIterator.getWordInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return BreakIteratorICU.wrap(icuBrkItr);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java
new file mode 100644
index 0000000..0f5195a
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.Collator;
+import java.text.spi.CollatorProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.CollatorICU;
+
+public class CollatorProviderICU extends CollatorProvider {
+
+    @Override
+    public Collator getInstance(Locale locale) {
+        com.ibm.icu.text.Collator icuCollator = com.ibm.icu.text.Collator.getInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return CollatorICU.wrap(icuCollator);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
new file mode 100644
index 0000000..8971c57
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
@@ -0,0 +1,68 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.DateFormat;
+import java.text.spi.DateFormatProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.SimpleDateFormatICU;
+
+public class DateFormatProviderICU extends DateFormatProvider {
+
+    private static final int NONE = -1;
+
+    @Override
+    public DateFormat getDateInstance(int style, Locale locale) {
+        return getInstance(style, NONE, locale);
+    }
+
+    @Override
+    public DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale locale) {
+        return getInstance(dateStyle, timeStyle, locale);
+    }
+
+    @Override
+    public DateFormat getTimeInstance(int style, Locale locale) {
+        return getInstance(NONE, style, locale);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+    private DateFormat getInstance(int dstyle, int tstyle, Locale locale) {
+        com.ibm.icu.text.DateFormat icuDfmt;
+        Locale actual = ICULocaleServiceProvider.canonicalize(locale);
+        if (dstyle == NONE) {
+            icuDfmt = com.ibm.icu.text.DateFormat.getTimeInstance(tstyle, actual);
+        } else if (tstyle == NONE) {
+            icuDfmt = com.ibm.icu.text.DateFormat.getDateInstance(dstyle, actual);
+        } else {
+            icuDfmt = com.ibm.icu.text.DateFormat.getDateTimeInstance(dstyle, tstyle, actual);
+        }
+        if (!(icuDfmt instanceof com.ibm.icu.text.SimpleDateFormat)) {
+            // icuDfmt must be always SimpleDateFormat
+            return null;
+        }
+
+        com.ibm.icu.text.DecimalFormatSymbols decfs = ICULocaleServiceProvider.getDecimalFormatSymbolsForLocale(actual);
+        if (decfs != null) {
+            com.ibm.icu.text.NumberFormat icuNfmt = icuDfmt.getNumberFormat();
+            if (icuNfmt instanceof com.ibm.icu.text.DecimalFormat) {
+                ((com.ibm.icu.text.DecimalFormat)icuNfmt).setDecimalFormatSymbols(decfs);
+            } else if (icuNfmt instanceof com.ibm.icu.impl.DateNumberFormat) {
+                ((com.ibm.icu.impl.DateNumberFormat)icuNfmt).setZeroDigit(decfs.getDigit());
+            }
+            icuDfmt.setNumberFormat(icuNfmt);
+        }
+
+        return SimpleDateFormatICU.wrap((com.ibm.icu.text.SimpleDateFormat)icuDfmt);
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java
new file mode 100644
index 0000000..c1e1b79
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.DateFormatSymbols;
+import java.text.spi.DateFormatSymbolsProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.DateFormatSymbolsICU;
+
+public class DateFormatSymbolsProviderICU extends DateFormatSymbolsProvider {
+
+    @Override
+    public DateFormatSymbols getInstance(Locale locale) {
+        com.ibm.icu.text.DateFormatSymbols icuDfs = com.ibm.icu.text.DateFormatSymbols.getInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return DateFormatSymbolsICU.wrap(icuDfs);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java
new file mode 100644
index 0000000..96c483d
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java
@@ -0,0 +1,31 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.DecimalFormatSymbols;
+import java.text.spi.DecimalFormatSymbolsProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.DecimalFormatSymbolsICU;
+
+public class DecimalFormatSymbolsProviderICU extends
+        DecimalFormatSymbolsProvider {
+
+    @Override
+    public DecimalFormatSymbols getInstance(Locale locale) {
+        com.ibm.icu.text.DecimalFormatSymbols icuDecfs = com.ibm.icu.text.DecimalFormatSymbols.getInstance(
+                ICULocaleServiceProvider.canonicalize(locale));
+        return DecimalFormatSymbolsICU.wrap(icuDecfs);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
new file mode 100644
index 0000000..a786d72
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
@@ -0,0 +1,88 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.text;
+
+import java.text.NumberFormat;
+import java.text.spi.NumberFormatProvider;
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.impl.jdkadapter.DecimalFormatICU;
+import com.ibm.icu.impl.jdkadapter.NumberFormatICU;
+
+public class NumberFormatProviderICU extends NumberFormatProvider {
+
+    private final int NUMBER = 0;
+    private final int INTEGER = 1;
+    private final int CURRENCY = 2;
+    private final int PERCENT = 3;
+
+    @Override
+    public NumberFormat getCurrencyInstance(Locale locale) {
+        return getInstance(CURRENCY, locale);
+    }
+
+    @Override
+    public NumberFormat getIntegerInstance(Locale locale) {
+        return getInstance(INTEGER, locale);
+    }
+
+    @Override
+    public NumberFormat getNumberInstance(Locale locale) {
+        return getInstance(NUMBER, locale);
+    }
+
+    @Override
+    public NumberFormat getPercentInstance(Locale locale) {
+        return getInstance(PERCENT, locale);
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+    private NumberFormat getInstance(int type, Locale locale) {
+        com.ibm.icu.text.NumberFormat icuNfmt;
+        Locale actual = ICULocaleServiceProvider.canonicalize(locale);
+        switch (type) {
+        case NUMBER:
+            icuNfmt = com.ibm.icu.text.NumberFormat.getNumberInstance(actual);
+            break;
+        case INTEGER:
+            icuNfmt = com.ibm.icu.text.NumberFormat.getIntegerInstance(actual);
+            break;
+        case CURRENCY:
+            icuNfmt = com.ibm.icu.text.NumberFormat.getCurrencyInstance(actual);
+            break;
+        case PERCENT:
+            icuNfmt = com.ibm.icu.text.NumberFormat.getPercentInstance(actual);
+            break;
+        default:
+            return null;
+        }
+
+        if (!(icuNfmt instanceof com.ibm.icu.text.DecimalFormat)) {
+            // icuNfmt must be always DecimalFormat
+            return null;
+        }
+
+        NumberFormat nf = null;
+        if (ICULocaleServiceProvider.useDecimalFormat()) {
+            nf = DecimalFormatICU.wrap((com.ibm.icu.text.DecimalFormat)icuNfmt);
+        } else {
+            nf = NumberFormatICU.wrap(icuNfmt);
+        }
+
+        com.ibm.icu.text.DecimalFormatSymbols decfs = ICULocaleServiceProvider.getDecimalFormatSymbolsForLocale(actual);
+        if (decfs != null) {
+            ((com.ibm.icu.text.DecimalFormat)icuNfmt).setDecimalFormatSymbols(decfs);
+        }
+
+        return nf;
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java
new file mode 100644
index 0000000..423f3b8
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java
@@ -0,0 +1,32 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.util;
+
+import java.util.Locale;
+import java.util.spi.CurrencyNameProvider;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.util.Currency;
+
+public class CurrencyNameProviderICU extends CurrencyNameProvider {
+
+    @Override
+    public String getSymbol(String currencyCode, Locale locale) {
+        Currency cur = Currency.getInstance(currencyCode);
+        String sym = cur.getSymbol(ICULocaleServiceProvider.canonicalize(locale));
+        if (sym.length() == 0 || sym.equals(currencyCode)) {
+            return null;
+        }
+        return sym;
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java
new file mode 100644
index 0000000..8ab8b58
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.util;
+
+import java.util.Locale;
+import java.util.spi.LocaleNameProvider;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.util.ULocale;
+
+public class LocaleNameProviderICU extends LocaleNameProvider {
+
+    @Override
+    public String getDisplayCountry(String countryCode, Locale locale) {
+        String id = "und_" + countryCode;
+        String disp = ULocale.getDisplayCountry(id, ULocale.forLocale(ICULocaleServiceProvider.canonicalize(locale)));
+        if (disp.length() == 0 || disp.equals(countryCode)) {
+            return null;
+        }
+        return disp;
+    }
+
+    @Override
+    public String getDisplayLanguage(String languageCode, Locale locale) {
+        String disp = ULocale.getDisplayLanguage(languageCode, ULocale.forLocale(ICULocaleServiceProvider.canonicalize(locale)));
+        if (disp.length() == 0 || disp.equals(languageCode)) {
+            return null;
+        }
+        return disp;
+    }
+
+    @Override
+    public String getDisplayVariant(String variant, Locale locale) {
+        // ICU does not support JDK Locale variant names
+        return null;
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java b/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java
new file mode 100644
index 0000000..cfbd2db
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java
@@ -0,0 +1,57 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.javaspi.util;
+
+import java.util.Locale;
+
+import com.ibm.icu.impl.javaspi.ICULocaleServiceProvider;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.TimeZone;
+
+public class TimeZoneNameProviderICU extends java.util.spi.TimeZoneNameProvider {
+
+    @Override
+    public String getDisplayName(String ID, boolean daylight, int style, Locale locale) {
+        TimeZone tz = TimeZone.getTimeZone(ID);
+        Locale actualLocale = ICULocaleServiceProvider.canonicalize(locale);
+        String disp = tz.getDisplayName(daylight, style, actualLocale);
+        if (disp.length() == 0) {
+            return null;
+        }
+        // This is ugly hack, but no simple solution to check if
+        // the localized name was picked up.
+        int numDigits = 0;
+        for (int i = 0; i < disp.length(); i++) {
+            char c = disp.charAt(i);
+            if (UCharacter.isDigit(c)) {
+                numDigits++;
+            }
+        }
+        // If there are more than 3 numbers, this code assume GMT format was used.
+        if (numDigits >= 3) {
+            return null;
+        }
+
+        if (daylight) {
+            // ICU uses standard name for daylight name when the zone does not use
+            // daylight saving time.
+
+            // This is yet another ugly hack to support the JDK's behavior
+            String stdDisp = tz.getDisplayName(false, style, actualLocale);
+            if (disp.equals(stdDisp)) {
+                return null;
+            }
+        }
+        return disp;
+    }
+
+    @Override
+    public Locale[] getAvailableLocales() {
+        return ICULocaleServiceProvider.getAvailableLocales();
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java
new file mode 100644
index 0000000..6f9a479
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java
@@ -0,0 +1,100 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.text.CharacterIterator;
+
+import com.ibm.icu.text.BreakIterator;
+
+/**
+ * BreakIteratorICU is an adapter class which wraps ICU4J BreakIterator and
+ * implements java.text.BreakIterator APIs.
+ */
+public class BreakIteratorICU extends java.text.BreakIterator {
+
+    private BreakIterator fIcuBrkItr;
+
+    private BreakIteratorICU(BreakIterator icuBrkItr) {
+        fIcuBrkItr = icuBrkItr;
+    }
+
+    public static java.text.BreakIterator wrap(BreakIterator icuBrkItr) {
+        return new BreakIteratorICU(icuBrkItr);
+    }
+
+    public BreakIterator unwrap() {
+        return fIcuBrkItr;
+    }
+
+    @Override
+    public Object clone() {
+        BreakIteratorICU other = (BreakIteratorICU)super.clone();
+        other.fIcuBrkItr = (BreakIterator)fIcuBrkItr.clone();
+        return other;
+    }
+
+    @Override
+    public int current() {
+        return fIcuBrkItr.current();
+    }
+
+    @Override
+    public int first() {
+        return fIcuBrkItr.first();
+    }
+
+    @Override
+    public int following(int offset) {
+        return fIcuBrkItr.following(offset);
+    }
+
+    @Override
+    public CharacterIterator getText() {
+        return fIcuBrkItr.getText();
+    }
+
+    @Override
+    public boolean isBoundary(int offset) {
+        return fIcuBrkItr.isBoundary(offset);
+    }
+
+    @Override
+    public int last() {
+        return fIcuBrkItr.last();
+    }
+
+    @Override
+    public int next() {
+        return fIcuBrkItr.next();
+    }
+
+    @Override
+    public int next(int n) {
+        return fIcuBrkItr.next(n);
+    }
+
+    @Override
+    public int preceding(int offset) {
+        return fIcuBrkItr.preceding(offset);
+    }
+
+    @Override
+    public int previous() {
+        return fIcuBrkItr.previous();
+    }
+
+    @Override
+    public void setText(CharacterIterator newText) {
+        fIcuBrkItr.setText(newText);
+    }
+
+    @Override
+    public void setText(String newText) {
+        fIcuBrkItr.setText(newText);
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java
new file mode 100644
index 0000000..f111b4b
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java
@@ -0,0 +1,329 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+
+import com.ibm.icu.impl.icuadapter.TimeZoneJDK;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.util.Calendar;
+
+/**
+ * CalendarICU is an adapter class which wraps ICU4J Calendar and
+ * implements java.util.Calendar APIs.
+ */
+public class CalendarICU extends java.util.Calendar {
+
+    private static final long serialVersionUID = -8641226371713600671L;
+
+    private Calendar fIcuCal;
+    
+    private CalendarICU(Calendar icuCal) {
+        fIcuCal = icuCal;
+        init();
+    }
+
+    public static java.util.Calendar wrap(Calendar icuCal) {
+        return new CalendarICU(icuCal);
+    }
+
+    public Calendar unwrap() {
+        sync();
+        return fIcuCal;
+    }
+
+    @Override
+    public void add(int field, int amount) {
+        sync();
+        fIcuCal.add(field, amount);
+    }
+
+    // Note:    We do not need to override followings.  These methods
+    //          call int compareTo(Calendar anotherCalendar) and we
+    //          override the method.
+    //public boolean after(Object when)
+    //public boolean before(Object when)
+
+    // Note:    Jeez!  These methods are final and we cannot override them.
+    //          We do not want to rewrite ICU Calendar implementation classes
+    //          as subclasses of java.util.Calendar.  This adapter class
+    //          wraps an ICU Calendar instance and the calendar calculation
+    //          is actually done independently from java.util.Calendar
+    //          implementation.  Thus, we need to monitor the status of
+    //          superclass fields in some methods and call ICU Calendar's
+    //          clear if superclass clear update the status of superclass's
+    //          calendar fields.  See private void sync().
+    //public void clear()
+    //public void clear(int field)
+    
+    @Override
+    public Object clone() {
+        sync();
+        CalendarICU other = (CalendarICU)super.clone();
+        other.fIcuCal = (Calendar)fIcuCal.clone();
+        return other;
+    }
+
+    public int compareTo(Calendar anotherCalendar)  {
+        sync();
+        long thisMillis = getTimeInMillis();
+        long otherMillis = anotherCalendar.getTimeInMillis();
+        return thisMillis > otherMillis ? 1 : (thisMillis == otherMillis ? 0 : -1);
+    }
+
+    // Note:    These methods are supposed to be implemented by java.util.Calendar
+    //          subclasses.  But we actually use a instance of ICU Calendar
+    //          for all calendar calculation, we do nothing here.
+    @Override
+    protected void complete() {}
+    @Override
+    protected void computeFields() {}
+    @Override
+    protected void computeTime() {}
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof CalendarICU) {
+            sync();
+            return ((CalendarICU)obj).fIcuCal.equals(fIcuCal);
+        }
+        return false;
+    }
+
+    @Override
+    public int get(int field) {
+        sync();
+        return fIcuCal.get(field);
+    }
+
+    @Override
+    public int getActualMaximum(int field) {
+        return fIcuCal.getActualMaximum(field);
+    }
+
+    @Override
+    public int getActualMinimum(int field) {
+        return fIcuCal.getActualMinimum(field);
+    }
+
+    @Override
+    public String getDisplayName(int field, int style, Locale locale) {
+        if (field < 0 || field >= FIELD_COUNT || (style != SHORT && style != LONG && style != ALL_STYLES)) {
+            throw new IllegalArgumentException("Bad field or style.");
+        }
+        DateFormatSymbols dfs = DateFormatSymbols.getInstance(locale);
+        String[] array = getFieldStrings(field, style, dfs);
+        if (array != null) {
+            int fieldVal = get(field);
+            if (fieldVal < array.length) {
+                return array[fieldVal];
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public Map<String,Integer> getDisplayNames(int field, int style, Locale locale) {
+        if (field < 0 || field >= FIELD_COUNT || (style != SHORT && style != LONG && style != ALL_STYLES)) {
+            throw new IllegalArgumentException("Bad field or style.");
+        }
+        DateFormatSymbols dfs = DateFormatSymbols.getInstance(locale);
+        if (style != ALL_STYLES) {
+            return getFieldStringsMap(field, style, dfs);
+        }
+
+        Map<String,Integer> result = getFieldStringsMap(field, SHORT, dfs);
+        if (result == null) {
+            return null;
+        }
+        if (field == MONTH || field == DAY_OF_WEEK) {
+            Map<String,Integer> longMap = getFieldStringsMap(field, LONG, dfs);
+            if (longMap != null) {
+                result.putAll(longMap);
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public int getGreatestMinimum(int field) {
+        return fIcuCal.getGreatestMinimum(field);
+    }
+
+    @Override
+    public int getLeastMaximum(int field) {
+        return fIcuCal.getLeastMaximum(field);
+    }
+
+    @Override
+    public int getMaximum(int field) {
+        return fIcuCal.getMaximum(field);
+    }
+
+    @Override
+    public int getMinimalDaysInFirstWeek() {
+        return fIcuCal.getMinimalDaysInFirstWeek();
+    }
+
+    @Override
+    public int getMinimum(int field) {
+        return fIcuCal.getMinimum(field);
+    }
+
+    // Note:    getTime() calls getTimeInMillis()
+    //public Date getTime()
+
+    @Override
+    public long getTimeInMillis() {
+        sync();
+        return fIcuCal.getTimeInMillis();
+    }
+
+    @Override
+    public TimeZone getTimeZone() {
+        return TimeZoneICU.wrap(fIcuCal.getTimeZone());
+    }
+
+    @Override
+    public int hashCode() {
+        sync();
+        return fIcuCal.hashCode();
+    }
+
+    //protected int internalGet(int field)
+
+    @Override
+    public boolean isLenient() {
+        return fIcuCal.isLenient();
+    }
+
+    //public boolean isSet(int field)
+
+    @Override
+    public void roll(int field, boolean up) {
+        sync();
+        fIcuCal.roll(field, up);
+    }
+
+    @Override
+    public void roll(int field, int amount) {
+        sync();
+        fIcuCal.roll(field, amount);
+    }
+
+    @Override
+    public void set(int field, int value) {
+        sync();
+        fIcuCal.set(field, value);
+    }
+
+    // Note:    These set methods call set(int field, int value) for each field.
+    //          These are final, so we cannot override them, but we override
+    //          set(int field, int value), so the superclass implementations
+    //          still work as we want.
+    //public void set(int year, int month, int date)
+    //public void set(int year, int month, int date, int hourOfDay, int minute)
+    //public void set(int year, int month, int date, int hourOfDay, int minute, int second)
+
+    @Override
+    public void setFirstDayOfWeek(int value) {
+        fIcuCal.setFirstDayOfWeek(value);
+    }
+
+    @Override
+    public void setLenient(boolean lenient) {
+        fIcuCal.setLenient(lenient);
+    }
+
+    @Override
+    public void setMinimalDaysInFirstWeek(int value) {
+        fIcuCal.setMinimalDaysInFirstWeek(value);
+    }
+
+    // Note:    This method calls setTimeInMillis(long millis).
+    //          This method is final, so we cannot override it, but we
+    //          override setTimeInMillis(long millis), so the superclass
+    //          implementation still works as we want.
+    //public void setTime(Date date)
+
+    @Override
+    public void setTimeInMillis(long millis) {
+        fIcuCal.setTimeInMillis(millis);
+    }
+
+    @Override
+    public void setTimeZone(TimeZone value) {
+        fIcuCal.setTimeZone(TimeZoneJDK.wrap(value));
+    }
+
+    @Override
+    public String toString() {
+        sync();
+        return "CalendarICU: " + fIcuCal.toString();
+    }
+
+    private void sync() {
+        // Check if clear is called for each JDK Calendar field.
+        // If it was, then call clear for the field in the wrapped
+        // ICU Calendar.
+        for (int i = 0; i < isSet.length; i++) {
+            if (!isSet[i]) {
+                isSet[i] = true;
+                try {
+                    fIcuCal.clear(i);
+                } catch (ArrayIndexOutOfBoundsException e) {
+                    // More fields in JDK calendar, which is unlikely
+                }
+            }
+        }
+    }
+
+    private void init() {
+        // Mark "set" for all fields, so we can detect the invocation of
+        // clear() later.
+        for (int i = 0; i < isSet.length; i++) {
+            isSet[i] = true;
+        }
+    }
+
+    private static String[] getFieldStrings(int field, int style, DateFormatSymbols dfs) {
+        String[] result = null;
+        switch (field) {
+        case AM_PM:
+            result = dfs.getAmPmStrings();
+            break;
+        case DAY_OF_WEEK:
+            result = (style == LONG) ? dfs.getWeekdays() : dfs.getShortWeekdays();
+            break;
+        case ERA:
+            //result = (style == LONG) ? dfs.getEraNames() : dfs.getEras();
+            result = dfs.getEras();
+            break;
+        case MONTH:
+            result = (style == LONG) ? dfs.getMonths() : dfs.getShortMonths();
+            break;
+        }
+        return result;
+    }
+
+    private static Map<String,Integer> getFieldStringsMap(int field, int style, DateFormatSymbols dfs) {
+        String[] strings = getFieldStrings(field, style, dfs);
+        if (strings == null) {
+            return null;
+        }
+        Map<String,Integer> res = new HashMap<String,Integer>();
+        for (int i = 0; i < strings.length; i++) {
+            if (strings[i].length() != 0) {
+                res.put(strings[i], Integer.valueOf(i));
+            }
+        }
+        return res;
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java
new file mode 100644
index 0000000..546992b
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java
@@ -0,0 +1,62 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import com.ibm.icu.text.CollationKey;
+
+/**
+ * CollationKeyICU is an adapter class which wraps ICU4J CollationKey and
+ * implements java.text.CollationKey APIs.
+ */
+public class CollationKeyICU extends java.text.CollationKey {
+
+    private CollationKey fIcuCollKey;
+
+    private CollationKeyICU(CollationKey icuCollKey) {
+        super(icuCollKey.getSourceString());
+        fIcuCollKey = icuCollKey;
+    }
+
+    public static java.text.CollationKey wrap(CollationKey icuCollKey) {
+        return new CollationKeyICU(icuCollKey);
+    }
+
+    public CollationKey unwrap() {
+        return fIcuCollKey;
+    }
+
+    @Override
+    public int compareTo(java.text.CollationKey target) {
+        if (target instanceof CollationKeyICU) {
+            return fIcuCollKey.compareTo(((CollationKeyICU)target).fIcuCollKey);
+        }
+        return 0;
+    }
+
+    @Override
+    public String getSourceString() {
+        return fIcuCollKey.getSourceString();
+    }
+
+    @Override
+    public byte[] toByteArray() {
+        return fIcuCollKey.toByteArray();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof CollationKeyICU) {
+            return ((CollationKeyICU)obj).fIcuCollKey.equals(fIcuCollKey);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuCollKey.hashCode();
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java
new file mode 100644
index 0000000..a89c0a6
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java
@@ -0,0 +1,158 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.text.CollationKey;
+
+import com.ibm.icu.text.Collator;
+
+/**
+ * CollatorICU is an adapter class which wraps ICU4J Collator and
+ * implements java.text.Collator APIs.
+ */
+public class CollatorICU extends java.text.Collator {
+
+    private Collator fIcuCollator;
+
+    private CollatorICU(Collator icuCollator) {
+        fIcuCollator = icuCollator;
+    }
+
+    public static java.text.Collator wrap(Collator icuCollator) {
+        return new CollatorICU(icuCollator);
+    }
+
+    public Collator unwrap() {
+        return fIcuCollator;
+    }
+
+    public Object clone() {
+        CollatorICU other = (CollatorICU)super.clone();
+        try {
+            other.fIcuCollator = (Collator)fIcuCollator.clone();
+        } catch (CloneNotSupportedException e) {
+            // ICU Collator clone() may throw CloneNotSupportedException,
+            // but JDK does not.  We use UnsupportedOperationException instead
+            // as workwround.
+            throw new UnsupportedOperationException("clone() is not supported by this ICU Collator.");
+        }
+        return other;
+    }
+
+    public int compare(Object o1, Object o2) {
+        return fIcuCollator.compare(o1, o2);
+    }
+
+    public int compare(String source, String target) {
+        return fIcuCollator.compare(source, target);
+    }
+
+    public boolean equals(Object that) {
+        if (that instanceof CollatorICU) {
+            return ((CollatorICU)that).fIcuCollator.equals(fIcuCollator);
+        }
+        return false;
+    }
+
+    public boolean equals(String source, String target) {
+        return fIcuCollator.equals(source, target);
+    }
+
+    public CollationKey getCollationKey(String source) {
+        com.ibm.icu.text.CollationKey icuCollKey = fIcuCollator.getCollationKey(source);
+        return CollationKeyICU.wrap(icuCollKey);
+    }
+
+    public int getDecomposition() {
+        int mode = java.text.Collator.NO_DECOMPOSITION;
+
+        if (fIcuCollator.getStrength() == Collator.IDENTICAL) {
+            return java.text.Collator.FULL_DECOMPOSITION;
+        }
+        int icuMode = fIcuCollator.getDecomposition();
+        if (icuMode == Collator.CANONICAL_DECOMPOSITION) {
+            mode = java.text.Collator.CANONICAL_DECOMPOSITION;
+        }
+//        else if (icuMode == Collator.NO_DECOMPOSITION) {
+//            mode = java.text.Collator.NO_DECOMPOSITION;
+//        }
+//        else {
+//            throw new IllegalStateException("Unknown decomposition mode is used by the ICU Collator.");
+//        }
+
+        return mode;
+    }
+
+    public int getStrength() {
+        int strength;
+        int icuStrength = fIcuCollator.getStrength();
+        switch (icuStrength) {
+        case Collator.IDENTICAL:
+            strength = java.text.Collator.IDENTICAL;
+            break;
+        case Collator.PRIMARY:
+            strength = java.text.Collator.PRIMARY;
+            break;
+        case Collator.SECONDARY:
+            strength = java.text.Collator.SECONDARY;
+            break;
+        case Collator.TERTIARY:
+            strength = java.text.Collator.TERTIARY;
+            break;
+        case Collator.QUATERNARY:
+            // Note: No quaternary support in Java..
+            // Return tertiary instead for now.
+            strength = java.text.Collator.TERTIARY;
+            break;
+        default:
+            throw new IllegalStateException("Unknown strength is used by the ICU Collator.");
+        }
+        return strength;
+    }
+
+    public int hashCode() {
+        return fIcuCollator.hashCode();
+    }
+
+    public void setDecomposition(int decompositionMode) {
+        switch (decompositionMode) {
+        case java.text.Collator.CANONICAL_DECOMPOSITION:
+            fIcuCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            break;
+        case java.text.Collator.NO_DECOMPOSITION:
+            fIcuCollator.setDecomposition(Collator.NO_DECOMPOSITION);
+            break;
+        case java.text.Collator.FULL_DECOMPOSITION:
+            // Not supported by ICU.
+            // This option is interpreted as IDENTICAL strength.
+            fIcuCollator.setStrength(Collator.IDENTICAL);
+            break;
+        default:
+            throw new IllegalArgumentException("Invalid decomposition mode.");
+        }
+    }
+
+    public void setStrength(int newStrength) {
+        switch (newStrength) {
+        case java.text.Collator.IDENTICAL:
+            fIcuCollator.setStrength(Collator.IDENTICAL);
+            break;
+        case java.text.Collator.PRIMARY:
+            fIcuCollator.setStrength(Collator.PRIMARY);
+            break;
+        case java.text.Collator.SECONDARY:
+            fIcuCollator.setStrength(Collator.SECONDARY);
+            break;
+        case java.text.Collator.TERTIARY:
+            fIcuCollator.setStrength(Collator.TERTIARY);
+            break;
+        default:
+            throw new IllegalArgumentException("Invalid strength.");
+        }
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java
new file mode 100644
index 0000000..e4d36bc
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java
@@ -0,0 +1,131 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import com.ibm.icu.text.DateFormatSymbols;
+
+/**
+ * DateFormatSymbolsICU is an adapter class which wraps ICU4J DateFormatSymbols and
+ * implements java.text.DateFormatSymbols APIs.
+ */
+public class DateFormatSymbolsICU extends java.text.DateFormatSymbols {
+
+    private static final long serialVersionUID = -7313618555550964943L;
+
+    private DateFormatSymbols fIcuDfs;
+
+    private DateFormatSymbolsICU(DateFormatSymbols icuDfs) {
+        fIcuDfs = icuDfs;
+    }
+
+    public static java.text.DateFormatSymbols wrap(DateFormatSymbols icuDfs) {
+        return new DateFormatSymbolsICU(icuDfs);
+    }
+
+    public DateFormatSymbols unwrap() {
+        return fIcuDfs;
+    }
+
+    @Override
+    public Object clone() {
+        DateFormatSymbolsICU other = (DateFormatSymbolsICU)super.clone();
+        other.fIcuDfs = (DateFormatSymbols)this.fIcuDfs.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof DateFormatSymbolsICU) {
+            return ((DateFormatSymbolsICU)obj).fIcuDfs.equals(this.fIcuDfs);
+        }
+        return false;
+    }
+
+    @Override
+    public String[] getAmPmStrings() {
+        return fIcuDfs.getAmPmStrings();
+    }
+
+    @Override
+    public String[] getEras() {
+        return fIcuDfs.getEras();
+    }
+
+    public String getLocalePatternChars() {
+        return fIcuDfs.getLocalPatternChars();
+    }
+
+    @Override
+    public String[] getMonths() {
+        return fIcuDfs.getMonths();
+    }
+
+    @Override
+    public String[] getShortMonths() {
+        return fIcuDfs.getShortMonths();
+    }
+
+    @Override
+    public String[] getShortWeekdays() {
+        return fIcuDfs.getShortWeekdays();
+    }
+
+    @Override
+    public String[] getWeekdays() {
+        return fIcuDfs.getWeekdays();
+    }
+
+    @Override
+    public String[][] getZoneStrings() {
+        return fIcuDfs.getZoneStrings();
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuDfs.hashCode();
+    }
+
+    @Override
+    public void setAmPmStrings(String[] newAmpms) {
+        fIcuDfs.setAmPmStrings(newAmpms);
+    }
+
+    @Override
+    public void setEras(String[] newEras) {
+        fIcuDfs.setEras(newEras);
+    }
+
+    @Override
+    public void setLocalPatternChars(String newLocalPatternChars) {
+        fIcuDfs.setLocalPatternChars(newLocalPatternChars);
+    }
+
+    @Override
+    public void setMonths(String[] newMonths) {
+        fIcuDfs.setMonths(newMonths);
+    }
+
+    @Override
+    public void setShortMonths(String[] newShortMonths) {
+        fIcuDfs.setShortMonths(newShortMonths);
+    }
+
+    @Override
+    public void setShortWeekdays(String[] newShortWeekdays) {
+        fIcuDfs.setShortWeekdays(newShortWeekdays);
+    }
+
+    @Override
+    public void setWeekdays(String[] newWeekdays) {
+        fIcuDfs.setWeekdays(newWeekdays);
+    }
+
+    @Override
+    public void setZoneStrings(String[][] newZoneStrings) {
+        fIcuDfs.setZoneStrings(newZoneStrings);
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java
new file mode 100644
index 0000000..e5bda5c
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java
@@ -0,0 +1,449 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.math.RoundingMode;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.CharacterIterator;
+import java.text.DecimalFormatSymbols;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Currency;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.NumberFormat;
+
+/**
+ * DecimalFormatICU is an adapter class which wraps ICU4J DecimalFormat and
+ * implements java.text.DecimalFormat APIs.
+ */
+public class DecimalFormatICU extends java.text.DecimalFormat {
+
+    private static final long serialVersionUID = 6441573352964019403L;
+
+    private DecimalFormat fIcuDecfmt;
+
+    private DecimalFormatICU(DecimalFormat icuDecfmt) {
+        fIcuDecfmt = icuDecfmt;
+    }
+
+    public static java.text.DecimalFormat wrap(DecimalFormat icuDecfmt) {
+        return new DecimalFormatICU(icuDecfmt);
+    }
+
+    public DecimalFormat unwrap() {
+        return fIcuDecfmt;
+    }
+
+    // Methods overriding java.text.DecimalFormat
+    @Override
+    public void applyLocalizedPattern(String pattern) {
+        fIcuDecfmt.applyLocalizedPattern(pattern);
+    }
+
+    @Override
+    public void applyPattern(String pattern) {
+        fIcuDecfmt.applyPattern(pattern);
+    }
+
+    @Override
+    public Object clone() {
+        DecimalFormatICU other = (DecimalFormatICU)super.clone();
+        other.fIcuDecfmt = (DecimalFormat)fIcuDecfmt.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof DecimalFormatICU) {
+            return ((DecimalFormatICU)obj).fIcuDecfmt.equals(fIcuDecfmt);
+        }
+        return false;
+    }
+
+    @Override
+    public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) {
+        return fIcuDecfmt.format(number, result, fieldPosition);
+    }
+
+    @Override
+    public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition) {
+        return fIcuDecfmt.format(number, result, fieldPosition);
+    }
+
+    @Override
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        AttributedCharacterIterator aci = fIcuDecfmt.formatToCharacterIterator(obj);
+
+        // Create a new AttributedString
+        StringBuilder sb = new StringBuilder(aci.getEndIndex() - aci.getBeginIndex());
+        char c = aci.first();
+        while (true) {
+            sb.append(c);
+            c = aci.next();
+            if (c == CharacterIterator.DONE) {
+                break;
+            }
+        }
+        AttributedString resstr = new AttributedString(sb.toString());
+
+        // Mapping attributes
+        Map<AttributedCharacterIterator.Attribute,Object> attributes = null;
+        int index = aci.getBeginIndex();
+        int residx = 0;
+        while (true) {
+            if (aci.setIndex(index) == CharacterIterator.DONE) {
+                break;
+            }
+            attributes = aci.getAttributes();
+            if (attributes != null) {
+                int end = aci.getRunLimit();
+                Map<AttributedCharacterIterator.Attribute,Object> jdkAttributes = 
+                    new HashMap<AttributedCharacterIterator.Attribute,Object>();
+                Set<AttributedCharacterIterator.Attribute> keys = attributes.keySet();
+                for (AttributedCharacterIterator.Attribute key : keys) {
+                    AttributedCharacterIterator.Attribute jdkKey = mapAttribute(key);
+                    Object jdkVal = attributes.get(key);
+                    if (jdkVal instanceof AttributedCharacterIterator.Attribute) {
+                        jdkVal = mapAttribute((AttributedCharacterIterator.Attribute)jdkVal);
+                    }
+                    jdkAttributes.put(jdkKey, jdkVal);
+                }
+                int resend = residx + (end - index);
+                resstr.addAttributes(jdkAttributes, residx, resend);
+
+                index = end;
+                residx = resend;
+            }
+        }
+        return resstr.getIterator();
+    }
+
+    @Override
+    public Currency getCurrency() {
+        com.ibm.icu.util.Currency icuCurrency = fIcuDecfmt.getCurrency();
+        if (icuCurrency == null) {
+            return null;
+        }
+        return Currency.getInstance(icuCurrency.getCurrencyCode());
+    }
+
+    @Override
+    public DecimalFormatSymbols getDecimalFormatSymbols() {
+        return DecimalFormatSymbolsICU.wrap(fIcuDecfmt.getDecimalFormatSymbols());
+    }
+
+    @Override
+    public int getGroupingSize() {
+        return fIcuDecfmt.getGroupingSize();
+    }
+
+    @Override
+    public int getMaximumFractionDigits() {
+        return fIcuDecfmt.getMaximumFractionDigits();
+    }
+
+    @Override
+    public int getMaximumIntegerDigits() {
+        return fIcuDecfmt.getMaximumIntegerDigits();
+    }
+
+    @Override
+    public int getMinimumFractionDigits() {
+        return fIcuDecfmt.getMinimumFractionDigits();
+    }
+
+    @Override
+    public int getMinimumIntegerDigits() {
+        return fIcuDecfmt.getMinimumIntegerDigits();
+    }
+
+    @Override
+    public int getMultiplier() {
+        return fIcuDecfmt.getMultiplier();
+    }
+
+    @Override
+    public String getNegativePrefix() {
+        return fIcuDecfmt.getNegativePrefix();
+    }
+
+    @Override
+    public String getNegativeSuffix() {
+        return fIcuDecfmt.getNegativeSuffix();
+    }
+
+    @Override
+    public String getPositivePrefix() {
+        return fIcuDecfmt.getPositivePrefix();
+    }
+
+    @Override
+    public String getPositiveSuffix() {
+        return fIcuDecfmt.getPositiveSuffix();
+    }
+
+    @Override
+    public RoundingMode getRoundingMode() {
+        int icuMode = fIcuDecfmt.getRoundingMode();
+        RoundingMode mode = RoundingMode.UP;
+        switch (icuMode) {
+        case com.ibm.icu.math.BigDecimal.ROUND_CEILING:
+            mode = RoundingMode.CEILING;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_DOWN:
+            mode = RoundingMode.DOWN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_FLOOR:
+            mode = RoundingMode.FLOOR;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN:
+            mode = RoundingMode.HALF_DOWN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN:
+            mode = RoundingMode.HALF_EVEN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_UP:
+            mode = RoundingMode.HALF_UP;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY:
+            mode = RoundingMode.UNNECESSARY;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_UP:
+            mode = RoundingMode.UP;
+            break;
+        }
+        return mode;
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuDecfmt.hashCode();
+    }
+
+    @Override
+    public boolean isDecimalSeparatorAlwaysShown() {
+        return fIcuDecfmt.isDecimalSeparatorAlwaysShown();
+    }
+
+    @Override
+    public boolean isParseBigDecimal() {
+        return fIcuDecfmt.isParseBigDecimal();
+    }
+
+    @Override
+    public Number parse(String text, ParsePosition pos) {
+        return fIcuDecfmt.parse(text, pos);
+    }
+
+    @Override
+    public void setCurrency(Currency currency) {
+        if (currency == null) {
+            fIcuDecfmt.setCurrency(null);
+        } else {
+            fIcuDecfmt.setCurrency(com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode()));
+        }
+    }
+
+    @Override
+    public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) {
+        com.ibm.icu.text.DecimalFormatSymbols icuDecfs = null;
+        if (newSymbols instanceof DecimalFormatSymbolsICU) {
+            icuDecfs = ((DecimalFormatSymbolsICU)newSymbols).unwrap();
+        } else {
+            icuDecfs = fIcuDecfmt.getDecimalFormatSymbols();
+
+            Currency currency = newSymbols.getCurrency();
+            if (currency == null) {
+                icuDecfs.setCurrency(null);
+            } else {
+                icuDecfs.setCurrency(com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode()));
+            }
+
+            // Copy symbols
+            icuDecfs.setCurrencySymbol(newSymbols.getCurrencySymbol());
+            icuDecfs.setDecimalSeparator(newSymbols.getDecimalSeparator());
+            icuDecfs.setDigit(newSymbols.getDigit());
+            icuDecfs.setExponentSeparator(newSymbols.getExponentSeparator());
+            icuDecfs.setGroupingSeparator(newSymbols.getGroupingSeparator());
+            icuDecfs.setInfinity(newSymbols.getInfinity());
+            icuDecfs.setInternationalCurrencySymbol(newSymbols.getInternationalCurrencySymbol());
+            icuDecfs.setMinusSign(newSymbols.getMinusSign());
+            icuDecfs.setMonetaryDecimalSeparator(newSymbols.getMonetaryDecimalSeparator());
+            icuDecfs.setNaN(newSymbols.getNaN());
+            icuDecfs.setPatternSeparator(newSymbols.getPatternSeparator());
+            icuDecfs.setPercent(newSymbols.getPercent());
+            icuDecfs.setPerMill(newSymbols.getPerMill());
+            icuDecfs.setZeroDigit(newSymbols.getZeroDigit());
+        }
+        fIcuDecfmt.setDecimalFormatSymbols(icuDecfs);
+    }
+
+    @Override
+    public void setDecimalSeparatorAlwaysShown(boolean newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setDecimalSeparatorAlwaysShown(newValue);
+        }
+    }
+
+    @Override
+    public void setGroupingSize(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setGroupingSize(newValue);
+        }
+    }
+
+    @Override
+    public void setMaximumFractionDigits(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setMaximumFractionDigits(newValue);
+        }
+    }
+
+    @Override
+    public void setMaximumIntegerDigits(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setMaximumIntegerDigits(newValue);
+        }
+    }
+
+    @Override
+    public void setMinimumFractionDigits(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setMinimumFractionDigits(newValue);
+        }
+    }
+
+    @Override
+    public void setMinimumIntegerDigits(int newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setMinimumIntegerDigits(newValue);
+        }
+    }
+
+    @Override
+    public void setMultiplier(int newValue) {
+        fIcuDecfmt.setMultiplier(newValue);
+    }
+
+    @Override
+    public void setNegativePrefix(String newValue) {
+        fIcuDecfmt.setNegativePrefix(newValue);
+    }
+
+    @Override
+    public void setNegativeSuffix(String newValue) {
+        fIcuDecfmt.setNegativeSuffix(newValue);
+    }
+
+    @Override
+    public void setParseBigDecimal(boolean newValue) {
+        fIcuDecfmt.setParseBigDecimal(newValue);
+    }
+
+    @Override
+    public void setPositivePrefix(String newValue) {
+        fIcuDecfmt.setPositivePrefix(newValue);
+    }
+
+    @Override
+    public void setPositiveSuffix(String newValue) {
+        fIcuDecfmt.setPositiveSuffix(newValue);
+    }
+
+    @Override
+    public void setRoundingMode(RoundingMode roundingMode) {
+        if (roundingMode.equals(RoundingMode.CEILING)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_CEILING);
+        } else if (roundingMode.equals(RoundingMode.DOWN)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_DOWN);
+        } else if (roundingMode.equals(RoundingMode.FLOOR)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_FLOOR);
+        } else if (roundingMode.equals(RoundingMode.HALF_DOWN)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN);
+        } else if (roundingMode.equals(RoundingMode.HALF_EVEN)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN);
+        } else if (roundingMode.equals(RoundingMode.HALF_UP)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_UP);
+        } else if (roundingMode.equals(RoundingMode.UNNECESSARY)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY);
+        } else if (roundingMode.equals(RoundingMode.UP)) {
+            fIcuDecfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UP);
+        } else {
+            throw new IllegalArgumentException("Invalid rounding mode was specified.");
+        }
+    }
+
+    @Override
+    public String toLocalizedPattern() {
+        return fIcuDecfmt.toLocalizedPattern();
+    }
+
+    @Override
+    public String toPattern() {
+        return fIcuDecfmt.toPattern();
+    }
+
+    // Methods overriding java.text.NumberFormat
+
+    @Override
+    public boolean isGroupingUsed() {
+        return fIcuDecfmt.isGroupingUsed();
+    }
+
+    @Override
+    public boolean isParseIntegerOnly() {
+        return fIcuDecfmt.isParseIntegerOnly();
+    }
+
+    @Override
+    public void setGroupingUsed(boolean newValue) {
+        if (fIcuDecfmt != null) {
+            fIcuDecfmt.setGroupingUsed(newValue);
+        }
+    }
+
+    @Override
+    public void setParseIntegerOnly(boolean value) {
+        fIcuDecfmt.setParseIntegerOnly(value);
+    }
+
+    private static AttributedCharacterIterator.Attribute mapAttribute(AttributedCharacterIterator.Attribute icuAttribute) {
+        AttributedCharacterIterator.Attribute jdkAttribute = icuAttribute;
+
+        if (icuAttribute == NumberFormat.Field.CURRENCY) {
+            jdkAttribute = java.text.NumberFormat.Field.CURRENCY;
+        } else if (icuAttribute == NumberFormat.Field.DECIMAL_SEPARATOR) {
+            jdkAttribute = java.text.NumberFormat.Field.DECIMAL_SEPARATOR;
+        } else if (icuAttribute == NumberFormat.Field.EXPONENT) {
+            jdkAttribute = java.text.NumberFormat.Field.EXPONENT;
+        } else if (icuAttribute == NumberFormat.Field.EXPONENT_SIGN) {
+            jdkAttribute = java.text.NumberFormat.Field.EXPONENT_SIGN;
+        } else if (icuAttribute == NumberFormat.Field.EXPONENT_SYMBOL) {
+            jdkAttribute = java.text.NumberFormat.Field.EXPONENT_SYMBOL;
+        } else if (icuAttribute == NumberFormat.Field.FRACTION) {
+            jdkAttribute = java.text.NumberFormat.Field.FRACTION;
+        } else if (icuAttribute == NumberFormat.Field.GROUPING_SEPARATOR) {
+            jdkAttribute = java.text.NumberFormat.Field.GROUPING_SEPARATOR;
+        } else if (icuAttribute == NumberFormat.Field.INTEGER) {
+            jdkAttribute = java.text.NumberFormat.Field.INTEGER;
+        } else if (icuAttribute == NumberFormat.Field.PERCENT) {
+            jdkAttribute = java.text.NumberFormat.Field.PERCENT;
+        } else if (icuAttribute == NumberFormat.Field.PERMILLE) {
+            jdkAttribute = java.text.NumberFormat.Field.PERMILLE;
+        } else if (icuAttribute == NumberFormat.Field.SIGN) {
+            jdkAttribute = java.text.NumberFormat.Field.SIGN;
+        }
+
+        return jdkAttribute;
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java
new file mode 100644
index 0000000..a7d0a2e
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java
@@ -0,0 +1,212 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.util.Currency;
+
+import com.ibm.icu.text.DecimalFormatSymbols;
+
+/**
+ * DecimalFormatSymbolsICU is an adapter class which wraps ICU4J DecimalFormatSymbols and
+ * implements java.text.DecimalFormatSymbols APIs.
+ */
+public class DecimalFormatSymbolsICU extends java.text.DecimalFormatSymbols {
+
+    private static final long serialVersionUID = -8226875908479009580L;
+
+    private DecimalFormatSymbols fIcuDecfs;
+
+    private DecimalFormatSymbolsICU(DecimalFormatSymbols icuDecfs) {
+        fIcuDecfs = icuDecfs;
+    }
+
+    public static java.text.DecimalFormatSymbols wrap(DecimalFormatSymbols icuDecfs) {
+        return new DecimalFormatSymbolsICU(icuDecfs);
+    }
+
+    public DecimalFormatSymbols unwrap() {
+        return fIcuDecfs;
+    }
+
+    @Override
+    public Object clone() {
+        DecimalFormatSymbolsICU other = (DecimalFormatSymbolsICU)super.clone();
+        other.fIcuDecfs = (DecimalFormatSymbols)fIcuDecfs.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof DecimalFormatSymbolsICU) {
+            return ((DecimalFormatSymbolsICU)obj).fIcuDecfs.equals(fIcuDecfs);
+        }
+        return false;
+    }
+
+    @Override
+    public Currency getCurrency() {
+        com.ibm.icu.util.Currency icuCurrency = fIcuDecfs.getCurrency();
+        if (icuCurrency == null) {
+            return null;
+        }
+        return Currency.getInstance(icuCurrency.getCurrencyCode());
+    }
+
+    @Override
+    public String getCurrencySymbol() {
+        return fIcuDecfs.getCurrencySymbol();
+    }
+
+    @Override
+    public char getDecimalSeparator() {
+        return fIcuDecfs.getDecimalSeparator();
+    }
+
+    @Override
+    public char getDigit() {
+        return fIcuDecfs.getDigit();
+    }
+
+    @Override
+    public String getExponentSeparator() {
+        return fIcuDecfs.getExponentSeparator();
+    }
+
+    @Override
+    public char getGroupingSeparator() {
+        return fIcuDecfs.getGroupingSeparator();
+    }
+
+    @Override
+    public String getInfinity() {
+        return fIcuDecfs.getInfinity();
+    }
+
+    @Override
+    public String getInternationalCurrencySymbol() {
+        return fIcuDecfs.getInternationalCurrencySymbol();
+    }
+
+    @Override
+    public char getMinusSign() {
+        return fIcuDecfs.getMinusSign();
+    }
+
+    @Override
+    public char getMonetaryDecimalSeparator() {
+        return fIcuDecfs.getMonetaryDecimalSeparator();
+    }
+
+    @Override
+    public String getNaN() {
+        return fIcuDecfs.getNaN();
+    }
+
+    @Override
+    public char getPatternSeparator() {
+        return fIcuDecfs.getPatternSeparator();
+    }
+
+    @Override
+    public char getPercent() {
+        return fIcuDecfs.getPercent();
+    }
+
+    @Override
+    public char getPerMill() {
+        return fIcuDecfs.getPerMill();
+    }
+
+    @Override
+    public char getZeroDigit() {
+        return fIcuDecfs.getZeroDigit();
+    }
+
+    @Override
+    public void setCurrency(Currency currency) {
+        com.ibm.icu.util.Currency icuCurrency = null;
+        if (currency != null) {
+            icuCurrency = com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode());
+        }
+        fIcuDecfs.setCurrency(icuCurrency);
+    }
+
+    @Override
+    public void setCurrencySymbol(String currency) {
+        fIcuDecfs.setCurrencySymbol(currency);
+    }
+
+    @Override
+    public void setDecimalSeparator(char decimalSeparator) {
+        fIcuDecfs.setDecimalSeparator(decimalSeparator);
+    }
+
+    @Override
+    public void setDigit(char digit) {
+        fIcuDecfs.setDigit(digit);
+    }
+
+    @Override
+    public void setExponentSeparator(String exp) {
+        fIcuDecfs.setExponentSeparator(exp);
+    }
+
+    @Override
+    public void setGroupingSeparator(char groupingSeparator) {
+        fIcuDecfs.setGroupingSeparator(groupingSeparator);
+    }
+
+    @Override
+    public void setInfinity(String infinity) {
+        fIcuDecfs.setInfinity(infinity);
+    }
+
+    @Override
+    public void setInternationalCurrencySymbol(String currencyCode) {
+        fIcuDecfs.setInternationalCurrencySymbol(currencyCode);
+    }
+
+    @Override
+    public void setMinusSign(char minusSign) {
+        fIcuDecfs.setMinusSign(minusSign);
+    }
+
+    @Override
+    public void setMonetaryDecimalSeparator(char sep) {
+        fIcuDecfs.setMonetaryDecimalSeparator(sep);
+    }
+
+    @Override
+    public void setNaN(String NaN) {
+        fIcuDecfs.setNaN(NaN);
+    }
+
+    @Override
+    public void setPatternSeparator(char patternSeparator) {
+        fIcuDecfs.setPatternSeparator(patternSeparator);
+    }
+
+    @Override
+    public void setPercent(char percent) {
+        fIcuDecfs.setPercent(percent);
+    }
+
+    @Override
+    public void setPerMill(char perMill) {
+        fIcuDecfs.setPerMill(perMill);
+    }
+
+    @Override
+    public void setZeroDigit(char zeroDigit) {
+        fIcuDecfs.setZeroDigit(zeroDigit);
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuDecfs.hashCode();
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java
new file mode 100644
index 0000000..32b408f
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java
@@ -0,0 +1,227 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.math.RoundingMode;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Currency;
+
+import com.ibm.icu.impl.icuadapter.NumberFormatJDK;
+import com.ibm.icu.text.NumberFormat;
+
+/**
+ * NumberFormatICU is an adapter class which wraps ICU4J NumberFormat and
+ * implements java.text.NumberFormat APIs.
+ */
+public class NumberFormatICU extends java.text.NumberFormat {
+
+    private static final long serialVersionUID = 4892903815641574060L;
+
+    private NumberFormat fIcuNfmt;
+
+    private NumberFormatICU(NumberFormat icuNfmt) {
+        fIcuNfmt = icuNfmt;
+    }
+
+    public static java.text.NumberFormat wrap(NumberFormat icuNfmt) {
+        if (icuNfmt instanceof NumberFormatJDK) {
+            return ((NumberFormatJDK)icuNfmt).unwrap();
+        }
+        return new NumberFormatICU(icuNfmt);
+    }
+
+    public NumberFormat unwrap() {
+        return fIcuNfmt;
+    }
+
+    @Override
+    public Object clone() {
+        NumberFormatICU other = (NumberFormatICU)super.clone();
+        other.fIcuNfmt = (NumberFormat)fIcuNfmt.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof NumberFormatICU) {
+            return ((NumberFormatICU)obj).fIcuNfmt.equals(fIcuNfmt);
+        }
+        return false;
+    }
+
+    //public String format(double number)
+
+    @Override
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fIcuNfmt.format(number, toAppendTo, pos);
+    }
+
+    //public String format(long number);
+
+    @Override
+    public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fIcuNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) {
+        return fIcuNfmt.format(number, toAppendTo, pos);
+    }
+
+    @Override
+    public Currency getCurrency() {
+        com.ibm.icu.util.Currency icuCurrency = fIcuNfmt.getCurrency();
+        if (icuCurrency == null) {
+            return null;
+        }
+        return Currency.getInstance(icuCurrency.getCurrencyCode());
+    }
+
+    @Override
+    public int getMaximumFractionDigits() {
+        return fIcuNfmt.getMaximumFractionDigits();
+    }
+
+    @Override
+    public int getMaximumIntegerDigits() {
+        return fIcuNfmt.getMaximumIntegerDigits();
+    }
+
+    @Override
+    public int getMinimumFractionDigits() {
+        return fIcuNfmt.getMinimumFractionDigits();
+    }
+
+    @Override
+    public int getMinimumIntegerDigits() {
+        return fIcuNfmt.getMinimumIntegerDigits();
+    }
+
+    @Override
+    public RoundingMode getRoundingMode() {
+        int icuMode = fIcuNfmt.getRoundingMode();
+        RoundingMode mode = RoundingMode.UP;
+        switch (icuMode) {
+        case com.ibm.icu.math.BigDecimal.ROUND_CEILING:
+            mode = RoundingMode.CEILING;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_DOWN:
+            mode = RoundingMode.DOWN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_FLOOR:
+            mode = RoundingMode.FLOOR;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN:
+            mode = RoundingMode.HALF_DOWN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN:
+            mode = RoundingMode.HALF_EVEN;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_HALF_UP:
+            mode = RoundingMode.HALF_UP;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY:
+            mode = RoundingMode.UNNECESSARY;
+            break;
+        case com.ibm.icu.math.BigDecimal.ROUND_UP:
+            mode = RoundingMode.UP;
+            break;
+        }
+        return mode;
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuNfmt.hashCode();
+    }
+
+    @Override
+    public boolean isGroupingUsed() {
+        return fIcuNfmt.isGroupingUsed();
+    }
+
+    @Override
+    public boolean isParseIntegerOnly() {
+        return fIcuNfmt.isParseIntegerOnly();
+    }
+
+    @Override
+    public Number parse(String source) throws ParseException {
+        return fIcuNfmt.parse(source);
+    }
+
+    @Override
+    public Number parse(String source, ParsePosition parsePosition) {
+        return fIcuNfmt.parse(source, parsePosition);
+    }
+
+    //public Object parseObject(String source, ParsePosition pos)
+
+    @Override
+    public void setCurrency(Currency currency) {
+        if (currency == null) {
+            fIcuNfmt.setCurrency(null);
+        } else {
+            fIcuNfmt.setCurrency(com.ibm.icu.util.Currency.getInstance(currency.getCurrencyCode()));
+        }
+    }
+
+    @Override
+    public void setGroupingUsed(boolean newValue) {
+        fIcuNfmt.setGroupingUsed(newValue);
+    }
+
+    @Override
+    public void setMaximumFractionDigits(int newValue) {
+        fIcuNfmt.setMaximumFractionDigits(newValue);
+    }
+
+    @Override
+    public void setMaximumIntegerDigits(int newValue) {
+        fIcuNfmt.setMaximumIntegerDigits(newValue);
+    }
+
+    @Override
+    public void setMinimumFractionDigits(int newValue) {
+        fIcuNfmt.setMinimumFractionDigits(newValue);
+    }
+
+    @Override
+    public void setMinimumIntegerDigits(int newValue) {
+        fIcuNfmt.setMinimumIntegerDigits(newValue);
+    }
+
+    @Override
+    public void setParseIntegerOnly(boolean value) {
+        fIcuNfmt.setParseIntegerOnly(value);
+    }
+
+    @Override
+    public void setRoundingMode(RoundingMode roundingMode) {
+        if (roundingMode.equals(RoundingMode.CEILING)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_CEILING);
+        } else if (roundingMode.equals(RoundingMode.DOWN)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_DOWN);
+        } else if (roundingMode.equals(RoundingMode.FLOOR)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_FLOOR);
+        } else if (roundingMode.equals(RoundingMode.HALF_DOWN)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN);
+        } else if (roundingMode.equals(RoundingMode.HALF_EVEN)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN);
+        } else if (roundingMode.equals(RoundingMode.HALF_UP)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_HALF_UP);
+        } else if (roundingMode.equals(RoundingMode.UNNECESSARY)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY);
+        } else if (roundingMode.equals(RoundingMode.UP)) {
+            fIcuNfmt.setRoundingMode(com.ibm.icu.math.BigDecimal.ROUND_UP);
+        } else {
+            throw new IllegalArgumentException("Invalid rounding mode was specified.");
+        }
+    }
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java
new file mode 100644
index 0000000..3a5ca02
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java
@@ -0,0 +1,373 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.CharacterIterator;
+import java.text.DateFormatSymbols;
+import java.text.FieldPosition;
+import java.text.NumberFormat;
+import java.text.ParsePosition;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
+import com.ibm.icu.impl.icuadapter.NumberFormatJDK;
+import com.ibm.icu.impl.icuadapter.TimeZoneJDK;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+
+/**
+ * SimpleDateFormatICU is an adapter class which wraps ICU4J SimpleDateFormat and
+ * implements java.text.SimpleDateFormat APIs.
+ */
+public class SimpleDateFormatICU extends java.text.SimpleDateFormat {
+
+    private static final long serialVersionUID = -2060890659010258983L;
+
+    private SimpleDateFormat fIcuSdf;
+
+    private SimpleDateFormatICU(SimpleDateFormat icuSdf) {
+        fIcuSdf = icuSdf;
+    }
+
+    public static java.text.SimpleDateFormat wrap(SimpleDateFormat icuSdf) {
+        return new SimpleDateFormatICU(icuSdf);
+    }
+
+    // Methods overriding java.text.SimpleDateFormat
+
+    @Override
+    public void applyLocalizedPattern(String pattern) {
+        fIcuSdf.applyLocalizedPattern(pattern);
+    }
+
+    @Override
+    public void applyPattern(String pattern) {
+        fIcuSdf.applyPattern(pattern);
+    }
+
+    @Override
+    public Object clone() {
+        SimpleDateFormatICU other = (SimpleDateFormatICU)super.clone();
+        other.fIcuSdf = (SimpleDateFormat)this.fIcuSdf.clone();
+        return other;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof SimpleDateFormatICU) {
+            return ((SimpleDateFormatICU)obj).fIcuSdf.equals(this.fIcuSdf);
+        }
+        return false;
+    }
+
+    @Override
+    public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos) {
+        return fIcuSdf.format(date, toAppendTo, pos);
+    }
+
+    @Override
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        AttributedCharacterIterator aci = fIcuSdf.formatToCharacterIterator(obj);
+
+        // Create a new AttributedString
+        StringBuilder sb = new StringBuilder(aci.getEndIndex() - aci.getBeginIndex());
+        char c = aci.first();
+        while (true) {
+            sb.append(c);
+            c = aci.next();
+            if (c == CharacterIterator.DONE) {
+                break;
+            }
+        }
+        AttributedString resstr = new AttributedString(sb.toString());
+
+        // Mapping attributes
+        Map<AttributedCharacterIterator.Attribute,Object> attributes = null;
+        int index = aci.getBeginIndex();
+        int residx = 0;
+        while (true) {
+            if (aci.setIndex(index) == CharacterIterator.DONE) {
+                break;
+            }
+            attributes = aci.getAttributes();
+            if (attributes != null) {
+                int end = aci.getRunLimit();
+                Map<AttributedCharacterIterator.Attribute,Object> jdkAttributes = 
+                    new HashMap<AttributedCharacterIterator.Attribute,Object>();
+                Set<AttributedCharacterIterator.Attribute> keys = attributes.keySet();
+                for (AttributedCharacterIterator.Attribute key : keys) {
+                    AttributedCharacterIterator.Attribute jdkKey = mapAttribute(key);
+                    Object jdkVal = attributes.get(key);
+                    if (jdkVal instanceof AttributedCharacterIterator.Attribute) {
+                        jdkVal = mapAttribute((AttributedCharacterIterator.Attribute)jdkVal);
+                    }
+                    jdkAttributes.put(jdkKey, jdkVal);
+                }
+                int resend = residx + (end - index);
+                resstr.addAttributes(jdkAttributes, residx, resend);
+
+                index = end;
+                residx = resend;
+            }
+        }
+        return resstr.getIterator();
+    }
+
+    @Override
+    public Date get2DigitYearStart() {
+        return fIcuSdf.get2DigitYearStart();
+    }
+
+    @Override
+    public DateFormatSymbols getDateFormatSymbols() {
+        return DateFormatSymbolsICU.wrap(fIcuSdf.getDateFormatSymbols());
+    }
+
+    @Override
+    public int hashCode() {
+        return fIcuSdf.hashCode();
+    }
+
+    @Override
+    public Date parse(String text, ParsePosition pos) {
+        return fIcuSdf.parse(text, pos);
+    }
+
+    @Override
+    public void set2DigitYearStart(Date startDate) {
+        fIcuSdf.set2DigitYearStart(startDate);
+    }
+
+    @Override
+    public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) {
+        com.ibm.icu.text.DateFormatSymbols icuDfs = null;
+        if (newFormatSymbols instanceof DateFormatSymbolsICU) {
+            icuDfs = ((DateFormatSymbolsICU)newFormatSymbols).unwrap();
+        } else if (fIcuSdf.getCalendar() instanceof com.ibm.icu.util.GregorianCalendar) {
+            // Java 6 uses DateFormatSymbols exclusively for Gregorian
+            // calendar.
+
+            String[] newJDK, curICU, newICU;
+            icuDfs = fIcuSdf.getDateFormatSymbols();
+
+            // Eras
+            newJDK = newFormatSymbols.getEras();
+            curICU = icuDfs.getEras();
+            newICU = copySymbols(newJDK, curICU, true);
+
+            // Months
+            newJDK = newFormatSymbols.getMonths();
+            curICU = icuDfs.getMonths();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setMonths(newICU);
+
+            // ShortMonths
+            newJDK = newFormatSymbols.getShortMonths();
+            curICU = icuDfs.getShortMonths();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setShortMonths(newICU);
+
+            // Weekdays
+            newJDK = newFormatSymbols.getWeekdays();
+            curICU = icuDfs.getWeekdays();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setWeekdays(newICU);
+
+            // ShortWeekdays
+            newJDK = newFormatSymbols.getShortWeekdays();
+            curICU = icuDfs.getShortWeekdays();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setShortWeekdays(newICU);
+
+            // AmPm
+            newJDK = newFormatSymbols.getAmPmStrings();
+            curICU = icuDfs.getAmPmStrings();
+            newICU = copySymbols(newJDK, curICU, false);
+            icuDfs.setAmPmStrings(newICU);
+        } else {
+            // For other calendars, JDK's standard DateFormatSymbols
+            // cannot be used.
+            throw new UnsupportedOperationException("JDK DateFormatSymbols cannot be used for the calendar type.");
+        }
+        fIcuSdf.setDateFormatSymbols(icuDfs);
+    }
+
+    @Override
+    public String toLocalizedPattern() {
+        return fIcuSdf.toLocalizedPattern();
+    }
+
+    @Override
+    public String toPattern() {
+        return fIcuSdf.toLocalizedPattern();
+    }
+
+    // Methods overriding java.text.DateFormat
+
+    @Override
+    public Calendar getCalendar() {
+        return CalendarICU.wrap(fIcuSdf.getCalendar());
+    }
+
+    @Override
+    public NumberFormat getNumberFormat() {
+        com.ibm.icu.text.NumberFormat nfmt = fIcuSdf.getNumberFormat();
+        if (nfmt instanceof NumberFormatJDK) {
+            return ((NumberFormatJDK)nfmt).unwrap();
+        }
+        if (nfmt instanceof com.ibm.icu.text.DecimalFormat) {
+            return DecimalFormatICU.wrap((com.ibm.icu.text.DecimalFormat)nfmt);
+        }
+        return NumberFormatICU.wrap(nfmt);
+    }
+
+    @Override
+    public TimeZone getTimeZone() {
+        return getCalendar().getTimeZone();
+    }
+
+    @Override
+    public boolean isLenient() {
+        return fIcuSdf.isLenient();
+    }
+
+    private static final long SAMPLE_TIME = 962409600000L; //2000-07-01T00:00:00Z
+    private static final int JAPANESE_YEAR = 12; // Japanese calendar year @ SAMPLE_TIME
+    private static final int THAI_YEAR = 2543; // Thai Buddhist calendar year @ SAMPLE_TIME
+
+    @Override
+    public void setCalendar(Calendar newCalendar) {
+        com.ibm.icu.util.Calendar icuCal = null;
+        if (newCalendar instanceof CalendarICU) {
+            icuCal = ((CalendarICU)newCalendar).unwrap();
+        } else {
+            // Note:    There is no easy way to implement ICU Calendar with
+            //          JDK Calendar implementation.  For now, this code assumes
+            //          the given calendar is either Gregorian, Buddhist or
+            //          JapaneseImperial.  Once the type is detected, this code
+            //          creates an instance of ICU Calendar with the same type.
+            com.ibm.icu.util.TimeZone icuTz = TimeZoneJDK.wrap(newCalendar.getTimeZone());
+            if (newCalendar instanceof GregorianCalendar) {
+                icuCal = new com.ibm.icu.util.GregorianCalendar(icuTz);
+            } else {
+                newCalendar.setTimeInMillis(SAMPLE_TIME);
+                int year = newCalendar.get(Calendar.YEAR);
+                if (year == JAPANESE_YEAR) {
+                    icuCal = new com.ibm.icu.util.JapaneseCalendar(icuTz);
+                } else if (year == THAI_YEAR) {
+                    icuCal = new com.ibm.icu.util.BuddhistCalendar(icuTz);
+                } else {
+                    // We cannot support the case
+                    throw new UnsupportedOperationException("Unsupported calendar type by ICU Calendar adapter.");
+                }
+            }
+            // Copy the original calendar settings
+            icuCal.setFirstDayOfWeek(newCalendar.getFirstDayOfWeek());
+            icuCal.setLenient(newCalendar.isLenient());
+            icuCal.setMinimalDaysInFirstWeek(newCalendar.getMinimalDaysInFirstWeek());
+        }
+        fIcuSdf.setCalendar(icuCal);
+    }
+
+    @Override
+    public void setLenient(boolean lenient) {
+        fIcuSdf.setLenient(lenient);
+    }
+
+    @Override
+    public void setNumberFormat(NumberFormat newNumberFormat) {
+        if (newNumberFormat instanceof DecimalFormatICU) {
+            fIcuSdf.setNumberFormat(((DecimalFormatICU)newNumberFormat).unwrap());
+        } else if (newNumberFormat instanceof NumberFormatICU) {
+            fIcuSdf.setNumberFormat(((NumberFormatICU)newNumberFormat).unwrap());
+        } else {
+            fIcuSdf.setNumberFormat(NumberFormatJDK.wrap(newNumberFormat));
+        }
+    }
+
+    @Override
+    public void setTimeZone(TimeZone zone) {
+        fIcuSdf.setTimeZone(TimeZoneJDK.wrap(zone));
+    }
+
+    private String[] copySymbols(String[] newData, String[] curData, boolean alignEnd) {
+        if (newData.length >= curData.length) {
+            return newData;
+        }
+        int startOffset = alignEnd ? curData.length - newData.length : 0;
+        System.arraycopy(newData, 0, curData, startOffset, newData.length);
+        return curData;
+    }
+
+    private static AttributedCharacterIterator.Attribute mapAttribute(AttributedCharacterIterator.Attribute icuAttribute) {
+        AttributedCharacterIterator.Attribute jdkAttribute = icuAttribute;
+
+        if (icuAttribute == DateFormat.Field.AM_PM) {
+            jdkAttribute = java.text.DateFormat.Field.AM_PM;
+        } else if (icuAttribute == DateFormat.Field.DAY_OF_MONTH) {
+            jdkAttribute = java.text.DateFormat.Field.DAY_OF_MONTH;
+        } else if (icuAttribute == DateFormat.Field.DAY_OF_WEEK) {
+            jdkAttribute = java.text.DateFormat.Field.DAY_OF_WEEK;
+        } else if (icuAttribute == DateFormat.Field.DAY_OF_WEEK_IN_MONTH) {
+            jdkAttribute = java.text.DateFormat.Field.DAY_OF_WEEK_IN_MONTH;
+        } else if (icuAttribute == DateFormat.Field.DAY_OF_YEAR) {
+            jdkAttribute = java.text.DateFormat.Field.DAY_OF_YEAR;
+        } else if (icuAttribute == DateFormat.Field.ERA) {
+            jdkAttribute = java.text.DateFormat.Field.ERA;
+        } else if (icuAttribute == DateFormat.Field.HOUR_OF_DAY0) {
+            jdkAttribute = java.text.DateFormat.Field.HOUR_OF_DAY0;
+        } else if (icuAttribute == DateFormat.Field.HOUR_OF_DAY1) {
+            jdkAttribute = java.text.DateFormat.Field.HOUR_OF_DAY1;
+        } else if (icuAttribute == DateFormat.Field.HOUR0) {
+            jdkAttribute = java.text.DateFormat.Field.HOUR0;
+        } else if (icuAttribute == DateFormat.Field.HOUR1) {
+            jdkAttribute = java.text.DateFormat.Field.HOUR1;
+        } else if (icuAttribute == DateFormat.Field.MILLISECOND) {
+            jdkAttribute = java.text.DateFormat.Field.MILLISECOND;
+        } else if (icuAttribute == DateFormat.Field.MINUTE) {
+            jdkAttribute = java.text.DateFormat.Field.MINUTE;
+        } else if (icuAttribute == DateFormat.Field.MONTH) {
+            jdkAttribute = java.text.DateFormat.Field.MONTH;
+        } else if (icuAttribute == DateFormat.Field.SECOND) {
+            jdkAttribute = java.text.DateFormat.Field.SECOND;
+        } else if (icuAttribute == DateFormat.Field.TIME_ZONE) {
+            jdkAttribute = java.text.DateFormat.Field.TIME_ZONE;
+        } else if (icuAttribute == DateFormat.Field.WEEK_OF_MONTH) {
+            jdkAttribute = java.text.DateFormat.Field.WEEK_OF_MONTH;
+        } else if (icuAttribute == DateFormat.Field.WEEK_OF_YEAR) {
+            jdkAttribute = java.text.DateFormat.Field.WEEK_OF_YEAR;
+        } else if (icuAttribute == DateFormat.Field.YEAR) {
+            jdkAttribute = java.text.DateFormat.Field.YEAR;
+        }
+        // There are other DateFormat.Field constants defined in
+        // ICU4J DateFormat below.
+        //
+        //   DOW_LOCAL
+        //   EXTENDED_YEAR
+        //   JULIAN_DAY
+        //   MILLISECONDS_IN_DAY
+        //   QUARTER
+        //   YEAR_WOY
+        //
+        // However, the corresponding pattern characters are not used by
+        // the default factory method - getXXXInstance.  So these constants
+        // are only used when user intentionally set a pattern including
+        // these ICU4J specific pattern letters.  Even it happens,
+        // ICU4J's DateFormat.Field extends java.text.Format.Field, so
+        // it does not break the contract of formatToCharacterIterator.
+
+        return jdkAttribute;
+    }
+
+}
diff --git a/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java b/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java
new file mode 100644
index 0000000..014c959
--- /dev/null
+++ b/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java
@@ -0,0 +1,105 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.jdkadapter;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.icuadapter.TimeZoneJDK;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * TimeZoneICU is an adapter class which wraps ICU4J TimeZone and
+ * implements java.util.TimeZone APIs.
+ */
+public class TimeZoneICU extends java.util.TimeZone {
+
+    private static final long serialVersionUID = 6019030618408620277L;
+
+    private TimeZone fIcuTz;
+
+    private TimeZoneICU(TimeZone icuTz) {
+        fIcuTz = icuTz;
+    }
+
+    public static java.util.TimeZone wrap(TimeZone icuTz) {
+        if (icuTz instanceof TimeZoneJDK) {
+            return ((TimeZoneJDK)icuTz).unwrap();
+        }
+        return new TimeZoneICU(icuTz);
+    }
+
+    public TimeZone unwrap() {
+        return fIcuTz;
+    }
+
+    @Override
+    public Object clone() {
+        TimeZoneICU other = (TimeZoneICU)super.clone();
+        other.fIcuTz = (TimeZone)fIcuTz.clone();
+        return other;
+    }
+
+    //public String getDisplayName()
+    //public String getDisplayName(boolean daylight, int style)
+    //public String getDisplayName(Locale locale)
+
+    @Override
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        return fIcuTz.getDisplayName(daylight, style, locale);
+    }
+
+    @Override
+    public int getDSTSavings() {
+        return fIcuTz.getDSTSavings();
+    }
+
+    @Override
+    public String getID() {
+        return fIcuTz.getID();
+    }
+
+    @Override
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+        return fIcuTz.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    @Override
+    public int getOffset(long date) {
+        return fIcuTz.getOffset(date);
+    }
+
+    @Override
+    public int getRawOffset() {
+        return fIcuTz.getRawOffset();
+    }
+
+    @Override
+    public boolean hasSameRules(java.util.TimeZone other) {
+        return other.hasSameRules(TimeZoneICU.wrap(fIcuTz));
+    }
+
+    @Override
+    public boolean inDaylightTime(Date date) {
+        return fIcuTz.inDaylightTime(date);
+    }
+
+    @Override
+    public void setID(String ID) {
+        fIcuTz.setID(ID);
+    }
+
+    @Override
+    public void setRawOffset(int offsetMillis) {
+        fIcuTz.setRawOffset(offsetMillis);
+    }
+
+    @Override
+    public boolean useDaylightTime() {
+        return fIcuTz.useDaylightTime();
+    }
+}
diff --git a/preprocessor.txt b/preprocessor.txt
new file mode 100644
index 0000000..847b2de
--- /dev/null
+++ b/preprocessor.txt
@@ -0,0 +1,81 @@
+# Copyright (C) 2007-2009, International Business Machines Corporation and
+# others. All Rights Reserved.
+
+## core sources
+src/com/ibm/icu/impl/ByteBuffer.java
+src/com/ibm/icu/impl/DateNumberFormat.java
+src/com/ibm/icu/impl/duration/BasicDurationFormat.java
+src/com/ibm/icu/impl/ICUResourceBundleImpl.java
+src/com/ibm/icu/impl/JavaTimeZone.java
+src/com/ibm/icu/impl/PatternTokenizer.java
+src/com/ibm/icu/impl/Utility.java
+src/com/ibm/icu/lang/UCharacter.java
+src/com/ibm/icu/math/BigDecimal.java
+src/com/ibm/icu/text/Bidi.java
+src/com/ibm/icu/text/ChineseDateFormat.java
+src/com/ibm/icu/text/DateFormat.java
+src/com/ibm/icu/text/DateTimePatternGenerator.java
+src/com/ibm/icu/text/DecimalFormat.java
+src/com/ibm/icu/text/DigitList.java
+src/com/ibm/icu/text/IndexCharacters.java
+src/com/ibm/icu/text/MessageFormat.java
+src/com/ibm/icu/text/NumberFormat.java
+src/com/ibm/icu/text/RuleBasedCollator.java
+src/com/ibm/icu/text/RuleBasedNumberFormat.java
+src/com/ibm/icu/text/SimpleDateFormat.java
+src/com/ibm/icu/text/UnicodeSet.java
+src/com/ibm/icu/text/UTF16.java
+src/com/ibm/icu/util/ByteArrayWrapper.java
+src/com/ibm/icu/util/UResourceBundle.java
+
+## test sources
+src/com/ibm/icu/dev/test/bidi/TestAll.java
+src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
+src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
+src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
+src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
+src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
+src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
+src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
+src/com/ibm/icu/dev/test/collator/RandomCollator.java
+src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
+src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
+src/com/ibm/icu/dev/test/format/DateFormatTest.java
+src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
+src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
+src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
+src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
+src/com/ibm/icu/dev/test/format/NumberFormatTest.java
+src/com/ibm/icu/dev/test/format/NumberRegression.java
+src/com/ibm/icu/dev/test/format/RbnfTest.java
+src/com/ibm/icu/dev/test/format/TestMessageFormat.java
+src/com/ibm/icu/dev/test/ResourceModule.java
+src/com/ibm/icu/dev/test/serializable/FormatTests.java
+src/com/ibm/icu/dev/test/serializable/SerializableTest.java
+src/com/ibm/icu/dev/test/TestAll.java
+src/com/ibm/icu/dev/test/TestDataModule.java
+src/com/ibm/icu/dev/test/TestFmwk.java
+src/com/ibm/icu/dev/test/TestUtil.java
+src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
+src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
+src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
+src/com/ibm/icu/dev/test/util/BagFormatter.java
+src/com/ibm/icu/dev/test/util/BNF.java
+src/com/ibm/icu/dev/test/util/CollectionUtilities.java
+src/com/ibm/icu/dev/test/util/DataInputCompressor.java
+src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
+src/com/ibm/icu/dev/test/util/FileUtilities.java
+src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
+src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
+src/com/ibm/icu/dev/test/util/TestBagFormatter.java
+src/com/ibm/icu/dev/test/util/TestBNF.java
+src/com/ibm/icu/dev/test/util/TestUtilities.java
+src/com/ibm/icu/dev/test/util/Tokenizer.java
+src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
+src/com/ibm/icu/dev/test/util/UnicodeMap.java
+src/com/ibm/icu/dev/test/util/UnicodeProperty.java
+src/com/ibm/icu/dev/test/util/UtilityTest.java
+src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
+
+## tool sources
+src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
\ No newline at end of file
diff --git a/readme.html b/readme.html
new file mode 100644
index 0000000..acbe599
--- /dev/null
+++ b/readme.html
@@ -0,0 +1,1023 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <meta http-equiv="Content-Style-Type" content="text/css2">
+  <title>ReadMe for ICU4J</title>
+  <meta name="COPYRIGHT" content="Copyright 2000-2008, International Business Machines Corporation and others. All Rights Reserved.">
+  <style type="text/css">
+h3.doc { background: #CCCCFF }
+  </style>
+</head>
+<body style="background-color: rgb(255, 255, 255);" lang="EN-US"
+ link="#0000ff" vlink="#800080">
+<h2>International Components for Unicode for Java (ICU4J)</h2>
+<h3>Read Me for ICU4J 4.0</h3>
+<hr size="2" width="100%">
+<p><b>Release Date</b><br>
+July 2, 2008<br>
+</p>
+<!-- <p><b>Note:</b> This is major release of ICU4J.  It contains bug fixes
+and adds implementations of inherited API and introduces new API
+or functionality. -->
+
+<p><b>Note:</b> This is major release of ICU4J. It contains bug fixes and adds
+implementations of inherited API and introduces new API or functionality. 
+</p>
+
+<p>For the most recent release, see the <a
+ href="http://www.icu-project.org/download/"> ICU4J
+download site</a>. </p>
+<h3 class="doc">Contents</h3>
+<ul type="disc">
+  <li><a href="#introduction">Introduction to ICU4J</a></li>
+  <li><a href="#news">What Is New In This Release?</a></li>
+  <li><a href="#license">License Information</a></li>
+  <li><a href="#PlatformDependencies">Platform Dependencies</a></li>
+  <li><a href="#download">How to Download ICU4J</a></li>
+  <li><a href="#WhatContain">The Structure and Contents of ICU4J</a></li>
+  <li><a href="#API">Where to Get Documentation</a></li>
+  <li><a href="#HowToInstallJavac">How to Install and Build</a></li>
+  <li><a href="#HowToModularize">How to modularize ICU4J</a></li>
+  <li><a href="#tryingout">Trying Out ICU4J</a></li>
+  <li><a href="#resources">ICU4J Resource Information</a></li>
+  <li><a href="#timezone">About ICU4J Time Zone</a></li>
+  <li><a href="#WhereToFindMore">Where to Find More Information</a></li>
+  <li><a href="#SubmittingComments">Submitting Comments, Requesting
+Features and Reporting Bugs</a></li>
+</ul>
+<h3 class="doc"><a name="introduction"></a>Introduction to ICU4J</h3>
+<p>The International Components for Unicode (ICU) library provides
+robust and
+full-featured Unicode services on a wide variety of platforms. ICU
+supports the
+most current version of the Unicode standard, including support for
+supplementary characters (needed for GB 18030 repertoire support).</p>
+<p>Java provides a strong foundation for global programs, and IBM and
+the
+ICU team played a key role in providing globalization technology to
+Java. But because of its long release schedule, Java cannot always keep
+up with evolving standards. The ICU team continues to extend Java's
+Unicode and internationalization support, focusing on improving
+performance,
+keeping current with the Unicode standard, and providing richer APIs,
+while
+remaining as compatible as possible with the original Java text and
+internationalization API design.</p>
+<p>ICU4J is an add-on to the regular JRE that provides:
+</p>
+<ul>
+  <li><a
+ href="http://www.icu-project.org/userguide/Collate_Intro.html"><b>Collation</b></a>
+&#8211; rule-based, up-to-date Unicode Collation Algorithm (UCA) sorting order<br>
+&nbsp;&nbsp;&nbsp;&nbsp;For fast multilingual string comparison; faster
+and more complete than
+the J2SE implementation</li>
+  <li><a href="http://www.icu-project.org/userguide/strings.html"><b>Supplementary
+Characters</b></a> &#8211; String manipulation and character properties<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Required for proper GB 18030 and JIS X 0213
+repertoire support</li>
+  <li><a href="http://www.icu-project.org/userguide/charsetDetection.html"><b>Charset
+Detection</b></a> &#8211; Recognition of various single and multibyte charsets<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Useful for recognizing untagged text data</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/unicodeSet.html"><b>UnicodeSet</b></a>
+&#8211; standard set operations optimized for sets of Unicode characters<br>
+&nbsp;&nbsp;&nbsp;&nbsp;UnicodeSets can be built from string patterns
+using any Unicode properties.</li>
+  <li><a href="http://www.icu-project.org/userguide/Transform.html"><b>Transforms</b></a>
+&#8211; a flexible mechanism for Unicode text conversions<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Including Full/Halfwidth conversions,
+Normalization, Case conversions, Hex
+conversions, and transliterations between scripts (50+ pairs)</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/normalization.html"><b>Unicode
+Normalization</b></a> &#8211; NFC, NFD, NFKD, NFKC<br>
+&nbsp;&nbsp;&nbsp;&nbsp;For canonical text representations, needed for
+XML and the net</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/dateCalendar.html"><b>International
+Calendars</b></a> &#8211; Arabic, Buddhist, Chinese, Hebrew, Japanese, Ethiopic, Islamic, Coptic and other calendars<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Required for correct presentation of dates in
+certain countries</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/formatNumbers.html"><b>Number
+Format
+Enhancements</b></a> &#8211; Scientific Notation, Spelled-out, etc.<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Enhancements to the normal Java number
+formatting. The spell-out format is
+used for checks and similar documents</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/boundaryAnalysis.html"><b>Enhanced
+Word-Break Detection</b></a> &#8211; Rule-based, supports Thai<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Required for correct support of Thai</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/compression.html"><b>Unicode
+Text
+Compression</b></a> &#8211; Standard compression of Unicode text<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Suitable for large numbers of small fields,
+where LZW and similar schemes
+do not apply</li>
+  <li><a
+ href="http://www.icu-project.org/userguide/conversion.html"><b>Charset Conversion</b></a> &#8211; Conversion to and from different charsets.<br>
+&nbsp;&nbsp;&nbsp;&nbsp;Plugs into Java CharsetProvider Service Provider Interface (SPI)</li>
+
+</ul>
+<blockquote>
+  <p><b>Note:</b> We continue to provide assistance to Sun, and in some
+cases, ICU4J support has been rolled into a later release of Java. For
+example, the Thai word-break is now in Java 1.4. However, the most
+current and complete version is always found in ICU4J.</p>
+</blockquote>
+
+<h3 class="doc"><a name="news"></a>What Is New In This Release?</h3>
+
+<p><b>Status of ICU4J charset converter</b></p>
+<p>The ICU4J implementation of java.nio.charset.Charset was included in ICU4J 3.8 as
+a Technology Preview.  In this release, all functionality from the java.nio.Charset
+interfaces is operational and promoted to the draft status.
+</p>
+
+<p><b>ICU4J Locale Service Provider</b></p>
+<p>The ICU4J implementation of Java SE 6 locale sensitive service provider
+insterfaces (java.util.spi.LocaleServiceProvider subclasses) is newly added
+in this release as a Technology Preview.  Please refer to the
+<a href="localespi/readme.html">Read Me for ICU4J Locale Service Provider</a>
+for more details.
+</p>
+
+<p><b>New features</b></p>
+<p>
+See the <a href="http://www.icu-project.org/download/">ICU 4.0 download page</a> about other
+new features in this release.
+</p>
+<h3 class="doc"><a name="license"></a>License Information</h3>
+<p>
+The ICU projects (ICU4C and ICU4J) use the X license. The X
+license is <b>suitable for commercial use</b> and is a recommended free software license
+that is compatible with the GNU GPL license. This became
+effective with release 1.8.1 of ICU4C and release 1.3.1 of ICU4J in
+mid-2001. All new ICU releases will adopt the X license; previous ICU
+releases continue to utilize the IPL (IBM Public License). Users
+of previous releases of ICU who want to adopt new ICU releases will
+need to accept the terms and conditions of the X license.
+</p>
+<p>
+The main effect of the change is to provide GPL compatibility.
+The X license is listed as GPL compatible, see the GNU page at 
+<a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">
+http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses</a>.
+This means that GPL projects can now use ICU code, it does <b>not</b>
+mean that projects using ICU become subject to GPL.
+</p>
+<p>
+ The IBM version contains the essential text of the license, omitting the
+X-specific trademarks and copyright notices. The full copy of <a
+ href="license.html">ICU's license</a> is included in the download
+package.
+</p>
+<h3 class="doc"><a name="PlatformDependencies"></a>Platform Dependencies</h3>
+<p> By default ICU4J depends on functionality available
+in J2SE 1.4 or later releases.  Some new ICU4J features support types
+introduced in J2SE 5, you can still use the same ICU4J binaries on JRE
+1.4.  We provide the ability to build a variant of ICU4J that will run
+on JRE 1.3, but not all build targets work on that platform. Currently
+1.1.x and 1.2.x JREs are unsupported and untested, and you use the
+components on these JREs at your own risk.
+<p>The table below shows operating systems and JRE/JDK versions currently
+used by the ICU development team.
+</p>
+<table bgcolor="#CCCCFF">
+<tr>
+  <th rowspan="2" bgcolor="#FFFFFF">Operating System</th>
+  <th colspan="3" bgcolor="#FFFFFF">Sun Java SE</th>
+  <th colspan="3" bgcolor="#FFFFFF">IBM Java SE</th>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">1.6.0</th>
+  <th bgcolor="#FFFFFF">1.5.0</th>
+  <th bgcolor="#FFFFFF">1.4.2</th>
+  <th bgcolor="#FFFFFF">1.6.0</th>
+  <th bgcolor="#FFFFFF">1.5.0</th>
+  <th bgcolor="#FFFFFF">1.4.2</th>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">AIX 5.2</th>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">AIX 5.3</th>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">AIX 6.1</th>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">HP-UX 11 (PA-RISC)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">HP-UX 11 (IA64)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Redhat Enterprise Linux 4 (x86)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr bgcolor="#FFFFFF">
+  <th>Redhat Enterprise Linux 5 (x86)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr bgcolor="#FFFFFF">
+  <th>Solaris 9 (SPARC)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr bgcolor="#FFFFFF">
+  <th>Solaris 10 (SPARC)</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Windows XP</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Windows Vista</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Windows 2003 Server</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Rarely tested</td>
+</tr>
+</table>
+
+<h3 class="doc"><a name="download"></a>How to Download ICU4J</h3>
+<p>There are two ways to download the ICU4J releases.
+</p>
+<ul type="disc">
+  <li><b>Official Release:</b><br>
+If you want to use ICU4J (as opposed to developing it), your best bet
+is to download an official, packaged version of the ICU4J library files.
+These versions are tested more thoroughly than day-to-day development
+builds, and they are packaged in jar files for convenient download.
+These packaged files can be found at the
+<a href="http://www.icu-project.org/download/">ICU Downloads page</a>.
+</li></ul>
+<ul type="disc">
+  <li><b>Subversion Source Repository:</b><br>
+If you are interested in developing features, patches, or bug fixes for
+ICU4J, you should probably be working with the latest version of the
+ICU4J source code. You will need to check the code out of our Subversion
+repository to ensure that you have the most recent version of all of
+the files. There are several ways to do this. Please follow the
+directions that are contained on the <a
+ href="http://www.icu-project.org/repository/">Source
+ Repository page</a> for details.
+  </li>
+</ul>
+<p>For more details on how to download ICU4J directly from the web
+site, please see the ICU downloads page at <a
+ href="http://www.icu-project.org/download/">http://www.icu-project.org/download/</a>
+</p>
+<h3 class="doc"><a name="WhatContain"></a>The Structure and Contents of
+ICU4J</h3>
+<p>Below, <b>$icu4j_root</b> is the placement of the icu directory in your
+file system, like
+"drive:\...\icu4j" in your environment. "drive:\..." stands for any
+drive and any directory on that drive that you chose to install icu4j
+into. </p>
+<p><b>Information and build files:</b></p>
+<table bgcolor="#ccccff" cellpadding="3" frame="void" width="623">
+  <tbody>
+    <tr>
+      <td align="right" bgcolor="#ffffff" valign="baseline"><b>readme.html</b><br>
+(this file)</td>
+      <td bgcolor="#ffffff" valign="baseline">A description of ICU4J
+(International Components for Unicode for Java)</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">license.html</th>
+      <td bgcolor="#ffffff" valign="baseline">The X license, used by
+ICU4J</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">build.xml</th>
+      <td bgcolor="#ffffff" valign="baseline">Ant build file. See <a
+ href="#HowToInstallJavac">How to Install and Build</a> for more
+information</td>
+    </tr>
+  </tbody>
+</table>
+<p><b>The source directories mirror the package structure of the code.</b><br>
+<font color="red">Core</font> packages become part of the ICU4J jar
+file.<br>
+<font color="red">Charset</font> packages become part of the ICU4J charset jar
+file.<br>
+<font color="red">LocaleSPI</font> packages become part of the ICU4J Locale
+service provider jar file.<br>
+<font color="red">RichText</font> classes are Core and API, but can be
+removed from icu4j.jar, and can be built into their own jar.<br>
+<font color="red">API</font> packages contain classes with supported
+API.<br>
+</p>
+<table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"
+ width="623">
+  <tbody>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/charset<br>
+      <font color="red">Charset, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Packages that provide Charset conversion
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/dev<br>
+      <font color="red">Non-Core, Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Packages used for
+internal development:
+      <ul>
+        <li>Data: data used by tests and in building ICU</li>
+        <li>Demos: Calendar, Holiday, Break Iterator, Rule-based Number
+Format, Transformations<br>
+(See <a href="#tryingout">below</a> for more information about the
+demos.)</li>
+        <li>Tests: API and coverage tests of all functionality.<br>
+For information about running the tests, see
+$icu4j_root/src/com/ibm/icu/dev/test/TestAll.java.</li>
+        <li>Tools: tools used to build data tables, etc.</li>
+      </ul>
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/impl<br>
+      <font color="red">Core, Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">These are utility classes
+used from different ICU4J core packages.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/lang<br>
+      <font color="red">Core, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Character properties
+package.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/math<br>
+      <font color="red">Core, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Additional math classes.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/text<br>
+      <font color="red">Core, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Additional text classes.
+These add to, and in some cases replace, related core Java classes:
+      <ul>
+        <li>Arabic shaping </li>
+        <li>Break iteration </li>
+        <li>Date formatting </li>
+        <li>Number formatting </li>
+        <li>Transliteration </li>
+        <li>Normalization </li>
+        <li>String manipulation </li>
+        <li>Collation </li>
+        <li>String search </li>
+        <li>Unicode compression </li>
+        <li>Unicode sets </li>
+      </ul>
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/util<br>
+      <font color="red">Core, API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Additional utility
+classes:
+      <ul>
+        <li>Calendars - Gregorian, Buddhist, Coptic, Ethiopic, Hebrew, Islamic, Japanese, Chinese and others</li>
+        <li>Holiday</li>
+        <li>TimeZone</li>
+        <li>VersionInfo</li>
+        <li>Iteration</li>
+      </ul>
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/richtext<br>
+      <font color="red">RichText,Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">Styled text editing
+package. This includes demos, tests, and GUIs for editing and
+displaying styled text. The richtext package provides a scrollable
+display, typing, arrow-key support, tabs, alignment and justification,
+word- and sentence-selection (by double-clicking and triple-clicking,
+respectively), text styles, clipboard operations (cut, copy and paste)
+and a log of changes for undo-redo. Richtext uses Java's TextLayout and
+complex text support (provided to Sun by the ICU4J team).</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/localespi/src/com/ibm/icu/impl<br>
+      <font color="red">LocaleSPI,Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">
+        Packages for ICU4J Locale Service Provider runtime
+        code implementing the Java SE 6 locale sensitive service provider interfaces.
+      </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/localespi/src/com/ibm/icu/dev<br>
+      <font color="red">LocaleSPI,Non-API</font></th>
+      <td bgcolor="#ffffff" valign="baseline">
+        Packages used for internal development for ICU4J Locale Service Provider, including
+        test cases. 
+      </td>
+    </tr>
+  </tbody>
+</table>
+<p><b>Building ICU4J creates and populates the following directories:</b></p>
+<table bgcolor="#ccccff" cellpadding="3" frame="void" width="623">
+  <tbody>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/classes</th>
+      <td bgcolor="#ffffff" valign="baseline">contains all class files</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/doc</th>
+      <td bgcolor="#ffffff" valign="baseline">contains JavaDoc for all
+packages</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<p><b>ICU4J data is stored in the following locations:</b></p>
+<table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"
+ width="623">
+  <tbody>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline"><code>com.ibm.icu.impl.data</code></th>
+      <td bgcolor="#ffffff" valign="baseline">Holds data used by the
+ICU4J core and charset packages (<code>com.ibm.icu.lang</code>, <code>com.ibm.icu.text</code>,
+      <code>com.ibm.icu.util</code>, <code>com.ibm.icu.math</code>,
+      <code>com.ibm.icu.text</code> and <code>com.ibm.icu.charset</code>). In particular, all resource
+information is stored here.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline"><code>com.ibm.icu.dev.data</code></th>
+      <td bgcolor="#ffffff" valign="baseline">Holds data that is not
+part of ICU4J core, but rather part of a test, sample, or demo.</td>
+    </tr>
+  </tbody>
+</table>
+<br>
+<h3 class="doc"><a name="API"></a>Where to get Documentation</h3>
+<p>The <a href="http://www.icu-project.org/userguide/">ICU user's
+guide</a> contains lots of general information about ICU, in its C,
+C++, and Java incarnations.</p>
+<p>The complete API documentation for ICU4J (javadoc) is available on
+the ICU4J web site, and can be built from the sources:
+</p>
+<ul>
+  <li><a href="http://www.icu-project.org/apiref/icu4j/">Index
+to all ICU4J API</a></li>
+  <li><a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/CharsetDetector.html">Charset Detector</a> &#8211; Detection of charset from a byte stream</li>
+  <li>International Calendars &#8211; 
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/BuddhistCalendar.html">Buddhist</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/ChineseCalendar.html">Chinese</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/CopticCalendar.html">Coptic</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/EthiopicCalendar.html">Ethiopic</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/GregorianCalendar.html">Gregorian</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/HebrewCalendar.html">Hebrew</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/IslamicCalendar.html">Islamic</a>,
+    <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/JapaneseCalendar.html">Japanese</a>.</li>
+  <li><a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/Normalizer.html">Unicode
+Normalization</a> &#8211; Canonical text representation for W3C.</li>
+  <li><a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/NumberFormat.html">Number
+Format Enhancements</a> &#8211; Scientific Notation, Spelled out.</li>
+  <li><a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/BreakIterator.html">Enhanced
+word-break detection</a> &#8211; Rule-based, supports Thai</li>
+  <li><a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/Transliterator.html">Transliteration</a>
+&#8211; A general framework for converting text from one format to another,
+e.g. Cyrillic to Latin, or Hex to Unicode. </li>
+  <li>Unicode Text <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/UnicodeCompressor.html">Compression</a>
+&amp; <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/UnicodeDecompressor.html">Decompression</a>
+&#8211; 2:1 compression on English Unicode text.</li>
+  <li>Collation - <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/RuleBasedCollator.html">Rule-based
+sorting</a>, <a
+ href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/StringSearch.html">Efficient
+multi-lingual searching</a> </li>
+</ul>
+<h3 class="doc"><a name="HowToInstallJavac"></a>How to Install and Build</h3>
+<p>To install ICU4J, simply place the prebuilt jar file <strong>icu4j.jar</strong>
+on your Java CLASSPATH. If you need Charset API support please place
+<strong>icu4j-charsets.jar</strong> on your class path. No other files are needed.</p>
+<p>To build ICU4J, you will need a J2SE SDK and the Ant build system.
+We strongly recommend using the Ant build system to build ICU4J.
+It's recommended to install both the J2SE SDK and Ant somewhere <em>outside</em>
+the ICU4J directory. For example, on Linux you might install these in
+/usr/local.</p>
+<ul>
+  <li>Install J2SE SDK 5.0.  (You can use any version of J2SE SDK 1.4 or newer,
+  but for J2SE SDK 5.0 is required to enable the all available ICU4J features.)</li>
+  <li>Install the <a href="http://ant.apache.org/"><strong>Ant</strong></a>
+build system. Ant is a portable, Java-based build system similar to
+make. ICU4J uses Ant because it introduces no other dependencies, it's
+portable, and it's easier to manage than a collection of makefiles. We
+currently build ICU4J using a single makefile on all platforms Ant.
+The build system requires Ant 1.6 or later.
+    <p>Installing Ant is straightforward. Download it (see <a
+ href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>),
+extract it onto your system, set some environment variables, and add
+its bin directory to your path. For example: </p>
+    <pre>
+        set JAVA_HOME=C:\jdk1.5.0
+        set ANT_HOME=C:\ant
+        set PATH=%PATH%;%ANT_HOME%\bin</pre>
+    <p>See the current Ant documentation for details.</p>
+  </li>
+</ul>
+<p>Once the J2SE SDK and Ant are installed, building is just a matter of
+typing <strong>ant</strong> in the ICU4J root directory. This causes
+the Ant build system to perform a build as specified by the file
+<strong>build.xml</strong>, located in the ICU4J root directory. You
+can give Ant options like -verbose, and you can specify targets. Ant
+will only build what's been changed and will resolve dependencies
+properly. For example:</p>
+<blockquote>
+<pre>C:\icu4j&gt;ant
+Buildfile: build.xml
+
+checkAntVersion:
+
+warnAntVersion:
+
+initBase:
+    [mkdir] Created dir: C:\icu4j\classes
+     [echo] java home: C:\jdk1.5.0
+     [echo] java version: 1.5.0
+     [echo] ant java version: 1.5
+     [echo] Apache Ant version 1.7.0 compiled on December 13 2006
+     [echo] ICU4JDEV with Windows XP 5.1 build 2600 Service Pack 2 on x86
+     [echo] clover initstring = '${clover.initstring}'
+     [echo] target runtime environment: J2SE15
+     [echo] Initialized at 2007-08-30 at 04:14:09 EDT
+
+buildMangle:
+    [javac] Compiling 1 source file to C:\icu4j\classes
+
+initSrc:
+
+displayBuildEnvWarning:
+
+doMangle:
+     [echo] Running source code preprocessor for [J2SE15]
+
+init:
+
+coreData:
+     [copy] Copying 1 file to C:\icu4j\classes\com\ibm\icu\impl\data
+
+icudata:
+    [unjar] Expanding: C:\icu4j\src\com\ibm\icu\impl\data\icudata.jar into C:\ic
+u4j\classes
+     [copy] Copying 1 file to C:\icu4j\classes\META-INF
+
+durationdata:
+     [copy] Copying 16 files to C:\icu4j\classes\com\ibm\icu\impl\duration\impl\
+data
+
+core:
+    [javac] Compiling 317 source files to C:\icu4j\classes
+    [javac] Note: * uses or overrides a deprecated API.
+    [javac] Note: Recompile with -Xlint:deprecation for details.
+
+BUILD SUCCESSFUL
+Total time: 10 seconds</pre>
+</blockquote>
+<I>Note: The above output is an example. The numbers are likely to be different with the current version ICU4J.</I>
+<p>The following are some targets that you can provide to <b>ant</b>.
+For more targets run <code>ant -projecthelp</code> or see the build.xml file.</p>
+<table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"
+ width="623">
+  <tbody>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">all</th>
+      <td bgcolor="#ffffff" valign="baseline">Build all targets.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">core</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the main class
+files in the subdirectory <strong>classes</strong>. If no target is
+specified, core is assumed.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">tests</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the test class
+files.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">demos</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the demos.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">tools</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the tools.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">docs</th>
+      <td bgcolor="#ffffff" valign="baseline">Run javadoc over the main
+class files, generating an HTML documentation tree in the subdirectory <strong>doc</strong>.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">jar</th>
+      <td bgcolor="#ffffff" valign="baseline">Create a jar archive <strong>icu4j.jar</strong>
+in the root ICU4J directory containing the main class files.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">jarSrc</th>
+      <td bgcolor="#ffffff" valign="baseline">Like the <strong>jar</strong>
+target, but containing only the source files. </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">jarDocs</th>
+      <td bgcolor="#ffffff" valign="baseline">Like the <strong>jar</strong>
+target, but containing only the docs. </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">richedit</th>
+      <td bgcolor="#ffffff" valign="baseline">Build the richedit core
+class files and tests. </td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">richeditJar</th>
+      <td bgcolor="#ffffff" valign="baseline">Create the richedit jar
+file (which contains only the richedit core class files). The file <strong>richedit.jar</strong>
+will be created in the <strong>./richedit</strong> subdirectory. Any
+existing file of that name will be overwritten.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">richeditZip</th>
+      <td bgcolor="#ffffff" valign="baseline">Create a zip archive of
+the richedit docs and jar file for distribution. The zip file <strong>richedit.zip</strong>
+will be created in the <strong>./richedit</strong> subdirectory. Any
+existing file of that name will be overwritten.</td>
+    </tr>
+    <tr>
+      <th align="right" bgcolor="#ffffff" valign="baseline">clean</th>
+      <td bgcolor="#ffffff" valign="baseline">Remove all built targets,
+leaving the source.</td>
+    </tr>
+  </tbody>
+</table>
+<p>For more information, read the Ant documentation and the <strong>build.xml</strong>
+file.</p>
+<p>After doing a build it is a good idea to run all the icu4j tests by
+typing<br>
+<tt>"ant check"</tt> or
+"java -classpath classes com.ibm.icu.dev.test.TestAll -nothrow".</p>
+
+<p><b>Eclipse users:</b> See the ICU4J site for information on<a
+ href="http://www.icu-project.org/docs/eclipse_howto/eclipse_howto.html">
+how to configure Eclipse</a> to build and develop ICU4J on Eclipse IDE.</p>
+
+<p><b>Note: </b>To install/build ICU4J Locale Service Provider, please refer
+<a href="localespi/readme.html">Read Me for ICU4J Locale Service Provider</a>.</p>
+
+<h3 class="doc"><a name="HowToModularize"></a>How to modularize ICU4J</h3>
+<p>Some clients may not wish to ship all of ICU4J with their
+application, since the application might only use a small part of ICU4J.
+ICU4J release 2.6 and later provide build options to build individual
+ICU4J 'modules' for a more compact distribution.  For more details, please
+refer to the section <em>Modularization of ICU4J</em> in the ICU user's
+guide article <a href="http://www.icu-project.org/userguide/packaging.html">Packaging ICU</a>.
+
+<h3 class="doc"><a name="tryingout"></a>Trying Out ICU4J</h3>
+<p><strong>Note:</strong> the demos provided with ICU4J are for the
+most part undocumented. This list can show you where to look, but
+you'll
+have to experiment a bit. The demos (with the
+exception of richedit) are <strong>unsupported</strong> and may change
+or disappear without notice.</p>
+<p>The icu4j.jar file contains only the core ICU4J classes, not the
+demo classes, so unless you build ICU4J there is little to try out.
+</p>
+<h4>Charset</h4>
+To try out the <strong>Charset</strong> package, build <strong>icu4j.jar</strong> and <strong>icu4j-charsets.jar</strong> using 'jar' target.
+You can use the charsets by placing these files on your classpath.
+<blockquote><tt>java -cp $icu4j_root/icu4j.jar:$icu4j_root/icu4j-charsets.jar &lt;your program&gt;</tt></blockquote>
+<h4>Rich Edit</h4>
+To try out the <strong>richedit</strong> package, first build the
+richeditJar target.
+This is a 'runnable' jar file. To run the richedit demo, type:
+<blockquote><tt>java -jar $icu4j_root/richedit/richedit.jar</tt></blockquote>
+This will present an empty edit pane with an awt interface.
+<p>With a fuller command line you can try out other options, for
+example:</p>
+<blockquote><tt>java -classpath $icu4j_root/richedit/richedit.jar
+com.ibm.richtext.demo.EditDemo [-swing][file]</tt></blockquote>
+<p>This will use an awt GUI, or a swing GUI if
+<tt>-swing</tt> is passed on the command line. It will open a text
+file if one is provided, otherwise it will open a blank page. Click
+to type.</p>
+<p>
+You can add tabs to the tab ruler by clicking in the ruler while
+holding down the control key.
+Clicking on an existing tab changes between left, right, center, and
+decimal tabs. Dragging
+a tab moves it, dragging it off the ruler removes it.</p>
+<p>
+You can experiment with complex text by using the keymap functions.
+Please note that these are mainly for demo purposes, for real work
+with Arabic or Hebrew you will want to use an input method. You will
+need to use a font that supports Arabic or Hebrew, 'Lucida Sans'
+(provided
+with Java) supports these languages.</p>
+<h4>Other demos</h4>
+<p>The other demo programs are <strong>not supported</strong> and
+exist only to let you
+experiment with the ICU4J classes. First, build ICU4J using <tt>ant&nbsp;all</tt>.
+Then try
+one of the following:
+</p>
+<ul>
+  <li><tt>java -classpath classes com.ibm.icu.dev.demo.calendar.CalendarApp</tt></li>
+  <li><tt>java -classpath classes com.ibm.icu.dev.demo.holiday.HolidayCalendarDemo</tt></li>
+  <li><tt>java -classpath classes com.ibm.icu.dev.demo.rbnf.RbnfDemo</tt></li>
+  <li><tt>java -classpath classes com.ibm.icu.dev.demo.translit.Demo</tt></li>
+</ul>
+
+<h3 class="doc"><a name="resources">ICU4J Resource Information</a></h3>
+Starting with release 2.1, ICU4J includes its own
+resource information
+which is completely independent of the JRE resource information. (Note,
+ICU4J 2.8 to 3.4, time zone information depends on the underlying JRE).
+The ICU4J resource information is equivalent to the information in ICU4C and
+many resources are, in fact, the same binary files that ICU4C uses.
+<p>
+By default the ICU4J distribution includes all of the standard resource
+information. It is located under the directory com/ibm/icu/impl/data.
+Depending on the service, the data is in different locations and in
+different formats. <strong>Note:</strong> This will continue to change
+from release to release, so clients should not depend on the exact
+organization
+of the data in ICU4J.</p>
+<ul>
+  <li>The primary <b>locale data</b> is under the directory <tt>icudt40b</tt>,
+as a set of <tt>".res"</tt> files whose names are the locale identifiers. 
+Locale naming is documented the <code>com.ibm.icu.util.ULocale</code>
+class, and the use of these names in searching for resources is documented 
+in <code>com.ibm.icu.util.UResourceBundle</code>.
+  </li>
+  <li>The <b>collation data</b> is under the directory <tt>icudt40b/coll</tt>,
+as a set of <tt>".res"</tt> files.</li>
+  <li>The <b>rule-based transliterator data</b> is under the directory
+<tt>icudt40b/translit</tt> as a set of <tt>".res"</tt> files.  (<b>Note:</b> the
+Han transliterator test data is no longer included in the core icu4j.jar 
+file by default.)</li>
+  <li>The <b>rule-based number format data</b> is under the directory
+<tt>icudt40b/rbnf</tt> as a set of <tt>".res"</tt> files.
+  <li>The <b>break iterator data</b> is directly under the data
+directory, as a set of <tt>".brk"</tt> files, named according to the
+type of break and the locale where there are locale-specific versions.</li>
+  <li>The <b>holiday data</b> is under the <tt>data</tt> directory,
+as a set of <tt>".class"</tt> files, named <tt>"HolidayBundle_"</tt>
+followed by the locale ID.</li>
+  <li>The <b>character property data</b> as well as assorted <b>normalization
+data</b> and default <b>unicode collation algorithm (UCA) data</b>
+is found under the <tt>data</tt> directory as a set of <tt>".icu"</tt>
+files. </li>
+  <li>The <b>character set converter data</b> is under the directory
+  <tt>icudt40b</tt>, as a set of <tt>".cnv"</tt> files.  These files are
+  currently included only in icu-charset.jar.</li>
+  <li>The <b>time zone data</b> is named <tt>zoneinfo.res</tt> under
+  the directory <tt>icudt40b</tt>.</li>
+</ul>
+<p>
+Some of the data files alias or otherwise reference data from other
+data files. One reason for this is because some locale names have
+changed. For example, <tt>he_IL</tt> used to be <tt>iw_IL</tt>. In
+order to support both names but not duplicate the data, one of the
+resource files refers to the other file's data. In other cases, a
+file may alias a portion of another file's data in order to save
+space. Currently ICU4J provides no tool for revealing these
+dependencies.</p>
+<blockquote><strong>Note:</strong>  Java's <code>Locale</code> class
+silently converts the language code <tt>"he"</tt> to <tt>"iw"</tt>
+when you construct the Locale (for versions of Java through Java 5). Thus
+Java cannot be used to locate resources that use the <tt>"he"</tt>
+language code. ICU, on the other hand, does not perform this
+conversion in ULocale, and instead uses aliasing in the locale data to
+represent the same set of data under different locale
+ids.</blockquote>
+<p>
+Resource files that use locale ids form a hierarchy, with up to four
+levels: a root, language, region (country), and variant. Searches for
+locale data attempt to match as far down the hierarchy as possible,
+for example, <tt>"he_IL"</tt> will match <tt>he_IL</tt>, but
+<tt>"he_US"</tt> will match <tt>he</tt> (since there is no <tt>US</tt>
+variant for he, and <tt>"xx_YY</tt> will match root (the
+default fallback locale) since there is no <tt>xx</tt> language code
+in the locale hierarchy. Again, see
+<code>java.util.ResourceBundle</code> for more information.
+</p>
+<p>
+<strong>Currently ICU4J provides no tool for revealing these
+dependencies</strong> between data files, so trimming the data
+directly in the ICU4J project is a hit-or-miss affair. The key point
+when you remove data is to make sure to remove all dependencies on
+that data as well. For example, if you remove <tt>he.res</tt>, you
+need to remove <tt>he_IL.res</tt>, since it is lower in the hierarchy,
+and you must remove iw.res, since it references <tt>he.res</tt>, and
+<tt>iw_IL.res</tt>, since it depends on it (and also references
+<tt>he_IL.res</tt>).
+</p>
+<p>
+Unfortunately, the jar tool in the JDK provides no way to remove items
+from a jar file. Thus you have to extract the resources, remove the
+ones you don't want, and then create a new jar file with the remining
+resources. See the jar tool information for how to do this. Before
+'rejaring' the files, be sure to thoroughly test your application with
+the remaining resources, making sure each required resource is
+present.
+</p>
+<h4>Using additional resource files with ICU4J</h4>
+<blockquote>
+  <table cellpadding="3" frame="border" rules="none" width="50%">
+    <tbody>
+      <tr>
+        <td><b><font color="red" size="+1">Warning:</font> Resource
+file formats can change across releases of ICU4J!</b></td>
+      </tr>
+      <tr>
+        <td>The format of ICU4J resources is not part of the API.
+Clients who develop their own resources for use with ICU4J should be
+prepared to
+regenerate them when they move to new releases of ICU4J.</td>
+      </tr>
+    </tbody>
+  </table>
+</blockquote>
+<p>
+We are still developing ICU4J's resource mechanism. Currently it 
+is not possible to mix icu's new binary <tt>.res</tt>
+resources
+with traditional java-style <tt>.class</tt> or <tt>.txt</tt>
+resources. We might
+allow for this in a future release, but since the resource data and
+format is not formally
+supported, you run the risk of incompatibilities with future releases
+of ICU4J.
+</p>
+<p>
+Resource data in ICU4J is checked in to the repository as a jar file
+containing the resource binaries, <tt>icudata.jar</tt>. This
+means that inspecting the contents of these resources is difficult.
+They currently are compiled from ICU4C <tt>.txt</tt> file data. You
+can view the contents of the ICU4C text resource files to understand
+the contents of the ICU4J resources.
+</p>
+<p>
+The files in <tt>icudata.jar</tt> get extracted to <tt>com/ibm/icu/impl/data</tt>
+in
+the build directory when the 'core' target is built.
+Building the <tt>'resources'</tt> target will force the
+resources to once again be extracted. Extraction will
+overwrite any corresponding resource files already in that directory.
+</p>
+<h4><a name="resourcesICU4C">Building ICU4J Resources from ICU4C</a></h4>
+ICU4J data is built by ICU4C tools. Please see "icu4j-readme.txt" in <I>$icu4c_root</I>/source/data for the procedures.
+<h5> Generating Data from CLDR </h5>
+<I> Note: This procedure assumes that all 3 sources are in sibling directories</I>
+<ol>
+    <li>Checkout CLDR.  $cldr_root in the following steps is the root directory where
+    the CLDR source files checked out.</li>
+    <li>Update <I>$cldr_root</I>/common to 'release-1-6-0' tag</li>
+    <li>Update <I>$cldr_root</I>/tools to 'release-1-6-0' tag</li>
+    <li>Checkout ICU4C with tag 'release-4-0'</li>
+    <li>Checkout ICU4J with tag 'release-4-0'</li>
+    <li>Build ICU4J</li>
+    <li>Build ICU4C</li>
+    <li>Change to <I>$cldr_root</I>/tools/java directory</li>
+    <li>Build CLDR using ant after pointing ICU4J_CLASSES env var to the newly build ICU4J</li>
+    <li>cd to <I>$icu4c_root</I>/source/data directory</li>
+    <li>Follow the instructions in the cldr-icu-readme.txt</li>
+    <li>Build ICU4C data from CLDR</li>
+    <li>Build ICU4J data from ICU4C data by following the procedures in <I>$icu4c_root</I>/source/data/icu4j-readme.txt</li>
+    <li>cd to <I>$icu4j_root</I> dir</li>
+    <li>Build and test icu4j</li>
+</ol>
+
+<h3 class="doc"><a name="timezone"></a>About ICU4J Time Zone</h3>
+<p>ICU4J 4.0 includes time zone data version 2008c, which is the latest one as of
+the release date.  However, time zone data is frequently updated in response
+to changes made by local governments around the world.  If you need to update
+the time zone data, please refer the ICU user guide topic
+<a href="http://www.icu-project.org/userguide/dateTimezone.html#tzupdate">Updating the Time Zone Data</a>.</p>
+<p>Starting with ICU4J 4.0, you can optionally configure ICU4J date and time
+service classes to use underlying JDK TimeZone implementation (see the ICU4J API reference
+<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/TimeZone.html">TimeZone</a>
+for the details).  When this configuration is enabled, ICU's own time zone data
+won't be used and you have to get time zone data patches from the JRE vendor.</p>
+
+<h3 class="doc"><a name="WhereToFindMore"></a>Where to Find More
+Information</h3>
+<p><a href="http://www.ibm.com/software/globalization/icu/">http://www.ibm.com/software/globalization/icu/</a>
+is a
+pointer to general information about the International Components for
+Unicode in Java </p>
+<p><a href="http://www.ibm.com/software/globalization/">http://www.ibm.com/software/globalization/</a>
+is a pointer to
+information on how to make applications global. </p>
+<h3 class="doc"><a name="SubmittingComments"></a>Submitting Comments,
+Requesting Features and
+Reporting Bugs</h3>
+<p>Your comments are important to making ICU4J successful. We are
+committed
+to fixing any bugs, and will use your feedback to help plan future
+releases.</p>
+<p>To submit comments, request features and report bugs, contact us
+through the <a
+ href="http://www.icu-project.org/contacts.html">ICU Support
+mailing list</a>.<br>
+While we are not able to respond individually to each comment, we do
+review all comments.</p>
+<br>
+<br>
+<h2>Thank you for your interest in ICU4J!</h2>
+<br>
+<hr align="center" size="2" width="100%">
+<p><I><font size="-1">Copyright &copy; 2002-2008 International Business
+Machines Corporation and others. All Rights
+Reserved.<br>
+4400 North First Street, San Jos&eacute;, CA 95193, USA
+</font></I></p>
+</body>
+</html>
diff --git a/src/META-INF/services/java.nio.charset.spi.CharsetProvider b/src/META-INF/services/java.nio.charset.spi.CharsetProvider
new file mode 100644
index 0000000..ca798e7
--- /dev/null
+++ b/src/META-INF/services/java.nio.charset.spi.CharsetProvider
@@ -0,0 +1,3 @@
+# Copyright (C) 2006, International Business Machines Corporation and others. All Rights Reserved.   
+# icu4j converters
+com.ibm.icu.charset.CharsetProviderICU
diff --git a/src/com/ibm/icu/ICUConfig.properties b/src/com/ibm/icu/ICUConfig.properties
new file mode 100644
index 0000000..fa00e2d
--- /dev/null
+++ b/src/com/ibm/icu/ICUConfig.properties
@@ -0,0 +1,13 @@
+#*
+#*******************************************************************************
+#* Copyright (C) 2008, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#* This is the properties contains ICU runtime configuration 
+#*
+
+#
+# The default TimeZone implementation type used by the ICU TimeZone
+# factory method. [ ICU | JDK ]
+#
+com.ibm.icu.util.TimeZone.DefaultTimeZoneType = ICU
diff --git a/src/com/ibm/icu/charset/Charset88591.java b/src/com/ibm/icu/charset/Charset88591.java
new file mode 100644
index 0000000..a74a1f7
--- /dev/null
+++ b/src/com/ibm/icu/charset/Charset88591.java
@@ -0,0 +1,128 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.charset;
+
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UnicodeSet;
+
+class Charset88591 extends CharsetASCII {
+    public Charset88591(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+
+    class CharsetDecoder88591 extends CharsetDecoderASCII {
+        public CharsetDecoder88591(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected CoderResult decodeLoopCoreOptimized(ByteBuffer source, CharBuffer target,
+                byte[] sourceArray, char[] targetArray, int oldSource, int offset, int limit) {
+
+            /*
+             * perform 88591 conversion from the source array to the target array. no range check is
+             * necessary.
+             */
+            for (int i = oldSource; i < limit; i++)
+                targetArray[i + offset] = (char) (sourceArray[i] & 0xff);
+
+            return null;
+        }
+
+        protected CoderResult decodeLoopCoreUnoptimized(ByteBuffer source, CharBuffer target)
+                throws BufferUnderflowException, BufferOverflowException {
+
+            /*
+             * perform 88591 conversion from the source buffer to the target buffer. no range check
+             * is necessary (an exception will be generated to end the loop).
+             */
+            while (true)
+                target.put((char) (source.get() & 0xff));
+        }
+    }
+
+    class CharsetEncoder88591 extends CharsetEncoderASCII {
+        public CharsetEncoder88591(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected final CoderResult encodeLoopCoreOptimized(CharBuffer source, ByteBuffer target,
+                char[] sourceArray, byte[] targetArray, int oldSource, int offset, int limit,
+                boolean flush) {
+            int i, ch = 0;
+
+            /*
+             * perform 88591 conversion from the source array to the target array, making sure each
+             * char in the source is within the correct range
+             */
+            for (i = oldSource; i < limit; i++) {
+                ch = (int) sourceArray[i];
+                if ((ch & 0xff00) == 0) {
+                    targetArray[i + offset] = (byte) ch;
+                } else {
+                    break;
+                }
+            }
+
+            /*
+             * if some byte was not in the correct range, we need to deal with this byte by calling
+             * encodeMalformedOrUnmappable and move the source and target positions to reflect the
+             * early termination of the loop
+             */
+            if ((ch & 0xff00) != 0) {
+                source.position(i + 1);
+                target.position(i + offset);
+                return encodeMalformedOrUnmappable(source, ch, flush);
+            } else
+                return null;
+        }
+
+        protected final CoderResult encodeLoopCoreUnoptimized(CharBuffer source, ByteBuffer target,
+                boolean flush) throws BufferUnderflowException, BufferOverflowException {
+            int ch;
+
+            /*
+             * perform 88591 conversion from the source buffer to the target buffer, making sure
+             * each char in the source is within the correct range
+             */
+            
+            while (true) {
+                ch = (int) source.get();
+                if ((ch & 0xff00) == 0) {
+                    target.put((byte) ch);
+                } else {
+                    break;
+                }
+            }
+            /*
+             * if we reach here, it's because a character was not in the correct range, and we need
+             * to deak with this by calling encodeMalformedOrUnmappable.
+             */
+            return encodeMalformedOrUnmappable(source, ch, flush);
+        }
+
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoder88591(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoder88591(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        setFillIn.add(0,0xff);
+     }
+}
diff --git a/src/com/ibm/icu/charset/CharsetASCII.java b/src/com/ibm/icu/charset/CharsetASCII.java
new file mode 100644
index 0000000..419a460
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetASCII.java
@@ -0,0 +1,357 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+class CharsetASCII extends CharsetICU {
+    protected byte[] fromUSubstitution = new byte[] { (byte) 0x1a };
+
+    public CharsetASCII(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = 1;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+    }
+
+    class CharsetDecoderASCII extends CharsetDecoderICU {
+
+        public CharsetDecoderASCII(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush) {
+            if (!source.hasRemaining()) {
+                /* no input, nothing to do */
+                return CoderResult.UNDERFLOW;
+            }
+            if (!target.hasRemaining()) {
+                /* no output available, can't do anything */
+                return CoderResult.OVERFLOW;
+            }
+
+            CoderResult cr;
+            int oldSource = source.position();
+            int oldTarget = target.position();
+
+            if (source.hasArray() && target.hasArray()) {
+                /* optimized loop */
+
+                /*
+                 * extract arrays from the buffers and obtain various constant values that will be
+                 * necessary in the core loop
+                 */
+                byte[] sourceArray = source.array();
+                int sourceOffset = source.arrayOffset();
+                int sourceIndex = oldSource + sourceOffset;
+                int sourceLength = source.limit() - oldSource;
+                
+                char[] targetArray = target.array();
+                int targetOffset = target.arrayOffset();
+                int targetIndex = oldTarget + targetOffset;
+                int targetLength = target.limit() - oldTarget;
+
+                int limit = ((sourceLength < targetLength) ? sourceLength : targetLength)
+                        + sourceIndex;
+                int offset = targetIndex - sourceIndex;
+
+                /*
+                 * perform the core loop... if it returns null, it must be due to an overflow or
+                 * underflow
+                 */
+                cr = decodeLoopCoreOptimized(source, target, sourceArray, targetArray, sourceIndex, offset, limit);
+                if (cr == null) {
+                    if (sourceLength <= targetLength) {
+                        source.position(oldSource + sourceLength);
+                        target.position(oldTarget + sourceLength);
+                        cr = CoderResult.UNDERFLOW;
+                    } else {
+                        source.position(oldSource + targetLength);
+                        target.position(oldTarget + targetLength);
+                        cr = CoderResult.OVERFLOW;
+                    }
+                }
+            } else {
+                /* unoptimized loop */
+
+                try {
+                    /*
+                     * perform the core loop... if it throws an exception, it must be due to an
+                     * overflow or underflow
+                     */
+                    cr = decodeLoopCoreUnoptimized(source, target);
+
+                } catch (BufferUnderflowException ex) {
+                    /* all of the source has been read */
+                    cr = CoderResult.UNDERFLOW;
+                } catch (BufferOverflowException ex) {
+                    /* the target is full */
+                    source.position(source.position() - 1); /* rewind by 1 */
+                    cr = CoderResult.OVERFLOW;
+                }
+            }
+
+            /* set offsets since the start */
+            if (offsets != null) {
+                int count = target.position() - oldTarget;
+                int sourceIndex = -1;
+                while (--count >= 0) offsets.put(++sourceIndex);
+            }
+
+            return cr;
+        }
+
+        protected CoderResult decodeLoopCoreOptimized(ByteBuffer source, CharBuffer target,
+                byte[] sourceArray, char[] targetArray, int oldSource, int offset, int limit) {
+            int i, ch = 0;
+
+            /*
+             * perform ascii conversion from the source array to the target array, making sure each
+             * byte in the source is within the correct range
+             */
+            for (i = oldSource; i < limit && (((ch = (sourceArray[i] & 0xff)) & 0x80) == 0); i++)
+                targetArray[i + offset] = (char) ch;
+
+            /*
+             * if some byte was not in the correct range, we need to deal with this byte by calling
+             * decodeMalformedOrUnmappable and move the source and target positions to reflect the
+             * early termination of the loop
+             */
+            if ((ch & 0x80) != 0) {
+                source.position(i + 1);
+                target.position(i + offset);
+                return decodeMalformedOrUnmappable(ch);
+            } else
+                return null;
+        }
+
+        protected CoderResult decodeLoopCoreUnoptimized(ByteBuffer source, CharBuffer target)
+                throws BufferUnderflowException, BufferOverflowException {
+            int ch = 0;
+
+            /*
+             * perform ascii conversion from the source buffer to the target buffer, making sure
+             * each byte in the source is within the correct range
+             */
+            while (((ch = (source.get() & 0xff)) & 0x80) == 0)
+                target.put((char) ch);
+
+            /*
+             * if we reach here, it's because a character was not in the correct range, and we need
+             * to deak with this by calling decodeMalformedOrUnmappable
+             */
+            return decodeMalformedOrUnmappable(ch);
+        }
+
+        protected CoderResult decodeMalformedOrUnmappable(int ch) {
+            /*
+             * put the guilty character into toUBytesArray and return a message saying that the
+             * character was malformed and of length 1.
+             */
+            toUBytesArray[0] = (byte) ch;
+            toULength = 1;
+            return CoderResult.malformedForLength(1);
+        }
+    }
+
+    class CharsetEncoderASCII extends CharsetEncoderICU {
+
+        public CharsetEncoderASCII(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+
+        private final static int NEED_TO_WRITE_BOM = 1;
+
+        protected void implReset() {
+            super.implReset();
+            fromUnicodeStatus = NEED_TO_WRITE_BOM;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                boolean flush) {
+            if (!source.hasRemaining()) {
+                /* no input, nothing to do */
+                return CoderResult.UNDERFLOW;
+            }
+            if (!target.hasRemaining()) {
+                /* no output available, can't do anything */
+                return CoderResult.OVERFLOW;
+            }
+
+            CoderResult cr;
+            int oldSource = source.position();
+            int oldTarget = target.position();
+
+            if (fromUChar32 != 0) {
+                /*
+                 * if we have a leading character in fromUChar32 that needs to be dealt with, we
+                 * need to check for a matching trail character and taking the appropriate action as
+                 * dictated by encodeTrail.
+                 */
+                cr = encodeTrail(source, (char) fromUChar32, flush);
+            } else {
+                if (source.hasArray() && target.hasArray()) {
+                    /* optimized loop */
+
+                    /*
+                     * extract arrays from the buffers and obtain various constant values that will
+                     * be necessary in the core loop
+                     */
+                    char[] sourceArray = source.array();
+                    int sourceOffset = source.arrayOffset();
+                    int sourceIndex = oldSource + sourceOffset;
+                    int sourceLength = source.limit() - oldSource;
+
+                    byte[] targetArray = target.array();
+                    int targetOffset = target.arrayOffset();
+                    int targetIndex = oldTarget + targetOffset;
+                    int targetLength = target.limit() - oldTarget;
+
+                    int limit = ((sourceLength < targetLength) ? sourceLength : targetLength)
+                            + sourceIndex;
+                    int offset = targetIndex - sourceIndex;
+
+                    /*
+                     * perform the core loop... if it returns null, it must be due to an overflow or
+                     * underflow
+                     */
+                    cr = encodeLoopCoreOptimized(source, target, sourceArray, targetArray, sourceIndex, offset, limit, flush);
+                    if (cr == null) {
+                        if (sourceLength <= targetLength) {
+                            source.position(oldSource + sourceLength);
+                            target.position(oldTarget + sourceLength);
+                            cr = CoderResult.UNDERFLOW;
+                        } else {
+                            source.position(oldSource + targetLength);
+                            target.position(oldTarget + targetLength);
+                            cr = CoderResult.OVERFLOW;
+                        }
+                    }
+                } else {
+                    /* unoptimized loop */
+
+                    try {
+                        /*
+                         * perform the core loop... if it throws an exception, it must be due to an
+                         * overflow or underflow
+                         */
+                        cr = encodeLoopCoreUnoptimized(source, target, flush);
+
+                    } catch (BufferUnderflowException ex) {
+                        cr = CoderResult.UNDERFLOW;
+                    } catch (BufferOverflowException ex) {
+                        source.position(source.position() - 1); /* rewind by 1 */
+                        cr = CoderResult.OVERFLOW;
+                    }
+                }
+            }
+
+            /* set offsets since the start */
+            if (offsets != null) {
+                int count = target.position() - oldTarget;
+                int sourceIndex = -1;
+                while (--count >= 0) offsets.put(++sourceIndex);
+            }
+
+            return cr;
+        }
+
+        protected CoderResult encodeLoopCoreOptimized(CharBuffer source, ByteBuffer target,
+                char[] sourceArray, byte[] targetArray, int oldSource, int offset, int limit,
+                boolean flush) {
+            int i, ch = 0;
+
+            /*
+             * perform ascii conversion from the source array to the target array, making sure each
+             * char in the source is within the correct range
+             */
+            for (i = oldSource; i < limit && (((ch = (int) sourceArray[i]) & 0xff80) == 0); i++)
+                targetArray[i + offset] = (byte) ch;
+
+            /*
+             * if some byte was not in the correct range, we need to deal with this byte by calling
+             * encodeMalformedOrUnmappable and move the source and target positions to reflect the
+             * early termination of the loop
+             */
+            if ((ch & 0xff80) != 0) {
+                source.position(i + 1);
+                target.position(i + offset);
+                return encodeMalformedOrUnmappable(source, ch, flush);
+            } else
+                return null;
+        }
+
+        protected CoderResult encodeLoopCoreUnoptimized(CharBuffer source, ByteBuffer target,
+                boolean flush) throws BufferUnderflowException, BufferOverflowException {
+            int ch;
+
+            /*
+             * perform ascii conversion from the source buffer to the target buffer, making sure
+             * each char in the source is within the correct range
+             */
+            while (((ch = (int) source.get()) & 0xff80) == 0)
+                target.put((byte) ch);
+
+            /*
+             * if we reach here, it's because a character was not in the correct range, and we need
+             * to deak with this by calling encodeMalformedOrUnmappable.
+             */
+            return encodeMalformedOrUnmappable(source, ch, flush);
+        }
+
+        protected final CoderResult encodeMalformedOrUnmappable(CharBuffer source, int ch, boolean flush) {
+            /*
+             * if the character is a lead surrogate, we need to call encodeTrail to attempt to match
+             * it up with a trail surrogate. if not, the character is unmappable.
+             */
+            return (UTF16.isSurrogate((char) ch))
+                    ? encodeTrail(source, (char) ch, flush)
+                    : CoderResult.unmappableForLength(1);
+        }
+
+        private final CoderResult encodeTrail(CharBuffer source, char lead, boolean flush) {
+            /*
+             * ASCII doesn't support characters in the BMP, so if handleSurrogates returns null,
+             * we leave fromUChar32 alone (it should store a new codepoint) and call it unmappable. 
+             */
+            CoderResult cr = handleSurrogates(source, lead);
+            if (cr != null) {
+                return cr;
+            } else {
+                //source.position(source.position() - 2);
+                return CoderResult.unmappableForLength(2);
+            }
+        }
+
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderASCII(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderASCII(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        setFillIn.add(0,0x7f);
+     }
+}
diff --git a/src/com/ibm/icu/charset/CharsetBOCU1.java b/src/com/ibm/icu/charset/CharsetBOCU1.java
new file mode 100644
index 0000000..ace38c8
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetBOCU1.java
@@ -0,0 +1,1064 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * @author krajwade
+ *
+ */
+class CharsetBOCU1 extends CharsetICU {   
+    /* BOCU constants and macros */
+    
+    /* initial value for "prev": middle of the ASCII range */
+    private static final byte BOCU1_ASCII_PREV = 0x40;
+    
+    /* bounding byte values for differences */
+    private static final int BOCU1_MIN = 0x21;
+    private static final int BOCU1_MIDDLE = 0x90;
+    //private static final int BOCU1_MAX_LEAD = 0xfe;
+    private static final int BOCU1_MAX_TRAIL = 0xff;
+    private static final int BOCU1_RESET = 0xff;
+
+    /* number of lead bytes */
+    //private static final int BOCU1_COUNT = (BOCU1_MAX_LEAD-BOCU1_MIN+1);
+
+    /* adjust trail byte counts for the use of some C0 control byte values */
+    private static final int BOCU1_TRAIL_CONTROLS_COUNT =  20;
+    private static final int BOCU1_TRAIL_BYTE_OFFSET = (BOCU1_MIN-BOCU1_TRAIL_CONTROLS_COUNT);
+
+    /* number of trail bytes */
+    private static final int BOCU1_TRAIL_COUNT =((BOCU1_MAX_TRAIL-BOCU1_MIN+1)+BOCU1_TRAIL_CONTROLS_COUNT);
+    
+    /*
+     * number of positive and negative single-byte codes
+     * (counting 0==BOCU1_MIDDLE among the positive ones)
+     */
+    private static final int BOCU1_SINGLE = 64;
+
+    /* number of lead bytes for positive and negative 2/3/4-byte sequences */
+    private static final int BOCU1_LEAD_2 = 43;
+    private static final int BOCU1_LEAD_3 = 3;
+    //private static final int BOCU1_LEAD_4 = 1;
+
+    /* The difference value range for single-byters. */
+    private static final int BOCU1_REACH_POS_1 = (BOCU1_SINGLE-1);
+    private static final int BOCU1_REACH_NEG_1 = (-BOCU1_SINGLE);
+
+    /* The difference value range for double-byters. */
+    private static final int BOCU1_REACH_POS_2 = (BOCU1_REACH_POS_1+BOCU1_LEAD_2*BOCU1_TRAIL_COUNT);
+    private static final int BOCU1_REACH_NEG_2 = (BOCU1_REACH_NEG_1-BOCU1_LEAD_2*BOCU1_TRAIL_COUNT);
+
+    /* The difference value range for 3-byters. */
+    private static final int BOCU1_REACH_POS_3  =
+        (BOCU1_REACH_POS_2+BOCU1_LEAD_3*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT);
+
+    private static final int BOCU1_REACH_NEG_3 = (BOCU1_REACH_NEG_2-BOCU1_LEAD_3*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT);
+
+    /* The lead byte start values. */
+    private static final int BOCU1_START_POS_2 =  (BOCU1_MIDDLE+BOCU1_REACH_POS_1+1);
+    private static final int BOCU1_START_POS_3  = (BOCU1_START_POS_2+BOCU1_LEAD_2);
+    private static final int BOCU1_START_POS_4  = (BOCU1_START_POS_3+BOCU1_LEAD_3);
+         /* ==BOCU1_MAX_LEAD */
+
+    private static final int BOCU1_START_NEG_2 = (BOCU1_MIDDLE+BOCU1_REACH_NEG_1);
+    private static final int BOCU1_START_NEG_3 = (BOCU1_START_NEG_2-BOCU1_LEAD_2);
+    //private static final int BOCU1_START_NEG_4 = (BOCU1_START_NEG_3-BOCU1_LEAD_3);
+         /* ==BOCU1_MIN+1 */
+
+    /* The length of a byte sequence, according to the lead byte (!=BOCU1_RESET). */
+   /* private static int BOCU1_LENGTH_FROM_LEAD(int lead) {
+       return ((BOCU1_START_NEG_2<=(lead) && (lead)<BOCU1_START_POS_2) ? 1 : 
+         (BOCU1_START_NEG_3<=(lead) && (lead)<BOCU1_START_POS_3) ? 2 : 
+         (BOCU1_START_NEG_4<=(lead) && (lead)<BOCU1_START_POS_4) ? 3 : 4);
+    }*/
+
+    /* The length of a byte sequence, according to its packed form. */
+    private static int BOCU1_LENGTH_FROM_PACKED(int packed) {
+        return (((packed)&UConverterConstants.UNSIGNED_INT_MASK)<0x04000000 ? (packed)>>24 : 4);
+    }
+    
+    /*
+     * Byte value map for control codes,
+     * from external byte values 0x00..0x20
+     * to trail byte values 0..19 (0..0x13) as used in the difference calculation.
+     * External byte values that are illegal as trail bytes are mapped to -1.
+     */
+    private static final int[]
+    bocu1ByteToTrail={
+    /*  0     1     2     3     4     5     6     7    */
+        -1,   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, -1,
+
+    /*  8     9     a     b     c     d     e     f    */
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+
+    /*  10    11    12    13    14    15    16    17   */
+        0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+
+    /*  18    19    1a    1b    1c    1d    1e    1f   */
+        0x0e, 0x0f, -1,   -1,   0x10, 0x11, 0x12, 0x13,
+
+    /*  20   */
+        -1
+    };
+
+    /*
+     * Byte value map for control codes,
+     * from trail byte values 0..19 (0..0x13) as used in the difference calculation
+     * to external byte values 0x00..0x20.
+     */
+    private static final int[] 
+    bocu1TrailToByte = {
+    /*  0     1     2     3     4     5     6     7    */
+        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x10, 0x11,
+
+    /*  8     9     a     b     c     d     e     f    */
+        0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
+
+    /*  10    11    12    13   */
+        0x1c, 0x1d, 0x1e, 0x1f
+    };
+    
+    
+    /*
+     * 12 commonly used C0 control codes (and space) are only used to encode
+     * themselves directly,
+     * which makes BOCU-1 MIME-usable and reasonably safe for
+     * ASCII-oriented software.
+     *
+     * These controls are
+     *  0   NUL
+     *
+     *  7   BEL
+     *  8   BS
+     *
+     *  9   TAB
+     *  a   LF
+     *  b   VT
+     *  c   FF
+     *  d   CR
+     *
+     *  e   SO
+     *  f   SI
+     *
+     * 1a   SUB
+     * 1b   ESC
+     *
+     * The other 20 C0 controls are also encoded directly (to preserve order)
+     * but are also used as trail bytes in difference encoding
+     * (for better compression).
+     */
+    private static int BOCU1_TRAIL_TO_BYTE(int trail) {
+        return ((trail)>=BOCU1_TRAIL_CONTROLS_COUNT ? (trail)+BOCU1_TRAIL_BYTE_OFFSET : bocu1TrailToByte[trail]);
+    }    
+    
+    /* BOCU-1 implementation functions ------------------------------------------ */
+    private static int BOCU1_SIMPLE_PREV(int c){
+        return (((c)&~0x7f)+BOCU1_ASCII_PREV);
+    }
+
+    /**
+     * Compute the next "previous" value for differencing
+     * from the current code point.
+     *
+     * @param c current code point, 0x3040..0xd7a3 (rest handled by macro below)
+     * @return "previous code point" state value
+     */
+    private static  int bocu1Prev(int c) {
+        /* compute new prev */
+        if(/* 0x3040<=c && */ c<=0x309f) {
+            /* Hiragana is not 128-aligned */
+            return 0x3070;
+        } else if(0x4e00<=c && c<=0x9fa5) {
+            /* CJK Unihan */
+            return 0x4e00-BOCU1_REACH_NEG_2;
+        } else if(0xac00<=c /* && c<=0xd7a3 */) {
+            /* Korean Hangul */
+            return (0xd7a3+0xac00)/2;
+        } else {
+            /* mostly small scripts */
+            return BOCU1_SIMPLE_PREV(c);
+        }
+    }
+
+    /** Fast version of bocu1Prev() for most scripts. */
+    private static int BOCU1_PREV(int c) {
+        return ((c)<0x3040 || (c)>0xd7a3 ? BOCU1_SIMPLE_PREV(c) : bocu1Prev(c));
+    }
+    
+    protected byte[] fromUSubstitution = new byte[]{(byte)0x1A};
+
+    /* Faster versions of packDiff() for single-byte-encoded diff values. */
+
+    /** Is a diff value encodable in a single byte? */
+    private static boolean DIFF_IS_SINGLE(int diff){
+        return (BOCU1_REACH_NEG_1<=(diff) && (diff)<=BOCU1_REACH_POS_1);
+    }
+
+    /** Encode a diff value in a single byte. */
+    private static int PACK_SINGLE_DIFF(int diff){
+        return (BOCU1_MIDDLE+(diff));
+    }
+
+    /** Is a diff value encodable in two bytes? */
+    private static boolean DIFF_IS_DOUBLE(int diff){
+        return (BOCU1_REACH_NEG_2<=(diff) && (diff)<=BOCU1_REACH_POS_2);
+    }   
+      
+    public CharsetBOCU1(String icuCanonicalName, String javaCanonicalName, String[] aliases){
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = 4; 
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+     }
+    
+    class CharsetEncoderBOCU extends CharsetEncoderICU {
+        public CharsetEncoderBOCU(CharsetICU cs) {
+            super(cs,fromUSubstitution);
+        }
+        
+        int sourceIndex, nextSourceIndex;
+        int prev, c , diff;
+        boolean checkNegative;
+        boolean LoopAfterTrail;
+        int targetCapacity;
+        CoderResult cr;        
+        
+        /* label values for supporting behavior similar to goto in C */
+        private static final int fastSingle=0;
+        private static final int getTrail=1;
+        private static final int regularLoop=2;
+        
+        private boolean LabelLoop; //used to break the while loop
+        private int labelType = fastSingle; //labeType is set to fastSingle to start the code from fastSingle:
+        
+        /**
+         * Integer division and modulo with negative numerators
+         * yields negative modulo results and quotients that are one more than
+         * what we need here.
+         * This macro adjust the results so that the modulo-value m is always >=0.
+         *
+         * For positive n, the if() condition is always FALSE.
+         *
+         * @param n Number to be split into quotient and rest.
+         *          Will be modified to contain the quotient.
+         * @param d Divisor.
+         * @param m Output variable for the rest (modulo result).
+         */
+        private int NEGDIVMOD(int n, int d, int m) {
+            diff = n;
+            (m)=(diff)%(d); 
+            (diff)/=(d); 
+            if((m)<0) { 
+                --(diff);
+                (m)+=(d);
+            }
+            return m;
+        }
+        
+        /**
+         * Encode a difference -0x10ffff..0x10ffff in 1..4 bytes
+         * and return a packed integer with them.
+         *
+         * The encoding favors small absolute differences with short encodings
+         * to compress runs of same-script characters.
+         *
+         * Optimized version with unrolled loops and fewer floating-point operations
+         * than the standard packDiff().
+         *
+         * @param diff difference value -0x10ffff..0x10ffff
+         * @return
+         *      0x010000zz for 1-byte sequence zz
+         *      0x0200yyzz for 2-byte sequence yy zz
+         *      0x03xxyyzz for 3-byte sequence xx yy zz
+         *      0xwwxxyyzz for 4-byte sequence ww xx yy zz (ww>0x03)
+         */
+        private int packDiff(int n) {
+            int result, m = 0;
+            diff = n;
+
+            if(diff>=BOCU1_REACH_NEG_1) {
+                /* mostly positive differences, and single-byte negative ones */
+                if(diff<=BOCU1_REACH_POS_2) {
+                    /* two bytes */
+                    diff-=BOCU1_REACH_POS_1+1;
+                    result=0x02000000;
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m);
+
+                    result|=(BOCU1_START_POS_2+diff)<<8;
+                } else if(diff<=BOCU1_REACH_POS_3) {
+                    /* three bytes */
+                    diff-=BOCU1_REACH_POS_2+1;
+                    result=0x03000000;
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m);
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<8;
+
+                    result|=(BOCU1_START_POS_3+diff)<<16;
+                } else {
+                    /* four bytes */
+                    diff-=BOCU1_REACH_POS_3+1;
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result=BOCU1_TRAIL_TO_BYTE(m);
+
+                    m=diff%BOCU1_TRAIL_COUNT;
+                    diff/=BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<8;
+
+                    /*
+                     * We know that / and % would deliver quotient 0 and rest=diff.
+                     * Avoid division and modulo for performance.
+                     */
+                    result|=BOCU1_TRAIL_TO_BYTE(diff)<<16;
+
+                    result|=((BOCU1_START_POS_4&UConverterConstants.UNSIGNED_INT_MASK))<<24;
+                }
+            } else {
+                /* two- to four-byte negative differences */
+                if(diff>=BOCU1_REACH_NEG_2) {
+                    /* two bytes */
+                    diff-=BOCU1_REACH_NEG_1;
+                    result=0x02000000;
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result|=BOCU1_TRAIL_TO_BYTE(m);
+
+                    result|=(BOCU1_START_NEG_2+diff)<<8;
+                } else if(diff>=BOCU1_REACH_NEG_3) {
+                    /* three bytes */
+                    diff-=BOCU1_REACH_NEG_2;
+                    result=0x03000000;
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result|=BOCU1_TRAIL_TO_BYTE(m);
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<8;
+
+                    result|=(BOCU1_START_NEG_3+diff)<<16;
+                } else {
+                    /* four bytes */
+                    diff-=BOCU1_REACH_NEG_3;
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result=BOCU1_TRAIL_TO_BYTE(m);
+
+                    m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<8;
+
+                    /*
+                     * We know that NEGDIVMOD would deliver
+                     * quotient -1 and rest=diff+BOCU1_TRAIL_COUNT.
+                     * Avoid division and modulo for performance.
+                     */
+                    m=diff+BOCU1_TRAIL_COUNT;
+                    result|=BOCU1_TRAIL_TO_BYTE(m)<<16;
+
+                    result|=BOCU1_MIN<<24;
+                }
+            }
+            return result;
+        }
+           
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush){
+            cr = CoderResult.UNDERFLOW;
+            
+            LabelLoop = true; //used to break the while loop
+            checkNegative = false; // its value is set to true to get out of while loop when c = -c
+            LoopAfterTrail = false; // its value is set to true to ignore code before getTrail:
+            
+            /*set up the local pointers*/
+            targetCapacity = target.limit() - target.position();
+            c = fromUChar32;
+            prev = fromUnicodeStatus;
+            
+            if(prev==0){
+                prev = BOCU1_ASCII_PREV;
+            }
+            
+            /*sourceIndex ==-1 if the current characte began in the previous buffer*/
+            sourceIndex = c == 0 ? 0: -1;
+            nextSourceIndex = 0;
+            
+            /*conversion loop*/
+            if(c!=0 && targetCapacity>0){
+                labelType = getTrail;
+            }
+            
+            while(LabelLoop){
+                switch(labelType){
+                    case fastSingle:
+                        labelType = fastSingle(source, target, offsets);
+                        break;
+                    case getTrail:
+                        labelType = getTrail(source, target, offsets);
+                        break;
+                    case regularLoop:
+                        labelType = regularLoop(source, target, offsets);
+                        break;
+                }
+            }
+                    
+            return cr;
+        }
+        
+        private int fastSingle(CharBuffer source, ByteBuffer target, IntBuffer offsets){                     
+//fastSingle:        
+            /*fast loop for single-byte differences*/
+            /*use only one loop counter variable , targetCapacity, not also source*/
+            diff = source.limit() - source.position();
+            if(targetCapacity>diff){
+                targetCapacity = diff;
+            }
+            while(targetCapacity>0 && (c=source.get(source.position()))<0x3000){
+                if(c<=0x20){
+                    if(c!=0x20){
+                        prev = BOCU1_ASCII_PREV;
+                    }
+                    target.put((byte)c);
+                    if(offsets!=null){
+                        offsets.put(nextSourceIndex++);
+                    }
+                    source.position(source.position()+1);
+                    --targetCapacity;
+                }else {
+                    diff = c-prev;
+                    if(DIFF_IS_SINGLE(diff)){
+                        prev = BOCU1_SIMPLE_PREV(c);
+                        target.put((byte)PACK_SINGLE_DIFF(diff));
+                        if(offsets!=null){
+                            offsets.put(nextSourceIndex++);
+                        }
+                        source.position(source.position()+1);
+                        --targetCapacity;
+                    }else {
+                        break;
+                    }
+                }
+            }
+            return regularLoop;
+        }
+        
+        private int getTrail(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            if(source.hasRemaining()){
+                /*test the following code unit*/
+                char trail = source.get(source.position());
+                if(UTF16.isTrailSurrogate(trail)){
+                    source.position(source.position()+1);
+                    ++nextSourceIndex;
+                    c=UCharacter.getCodePoint((char)c, trail);
+                }
+            } else {
+                /*no more input*/
+                c = -c; /*negative lead surrogate as "incomplete" indicator to avoid c=0 everywhere else*/
+                checkNegative = true;
+            }
+            LoopAfterTrail = true;
+            return regularLoop;
+        }
+        
+        private int regularLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            if(!LoopAfterTrail){
+                /*restore real values*/
+                targetCapacity = target.limit()-target.position();
+                sourceIndex = nextSourceIndex; /*wrong if offsets==null but does not matter*/
+            }
+            /*regular loop for all classes*/
+            while(LoopAfterTrail || source.hasRemaining()){
+                if(LoopAfterTrail || targetCapacity>0){
+                    
+                    if(!LoopAfterTrail){
+                        c = source.get();
+                        ++nextSourceIndex;
+                        
+                        if(c<=0x20){
+                            /*
+                             * ISO C0 control & space:
+                             * Encode directly for MIME compatibility,
+                             * and reset state except for space, to not disrupt compression.
+                             */
+                            if(c!=0x20) {
+                                prev=BOCU1_ASCII_PREV;
+                            }
+                            target.put((byte)c);
+                            if(offsets != null){
+                                offsets.put(sourceIndex++);
+                            }
+                            --targetCapacity;
+                         
+                            sourceIndex=nextSourceIndex;
+                            continue;
+                        }
+                        
+                        if(UTF16.isLeadSurrogate((char)c)){
+                            getTrail(source, target, offsets);
+                            if(checkNegative){
+                                break;
+                            }
+                        }
+                    }
+                        
+                    if(LoopAfterTrail){
+                        LoopAfterTrail = false; 
+                    }
+                    
+                    /*
+                     * all other Unicode code points c==U+0021..U+10ffff
+                     * are encoded with the difference c-prev
+                     *
+                     * a new prev is computed from c,
+                     * placed in the middle of a 0x80-block (for most small scripts) or
+                     * in the middle of the Unihan and Hangul blocks
+                     * to statistically minimize the following difference
+                     */
+                    diff = c- prev;
+                    prev = BOCU1_PREV(c);
+                    if(DIFF_IS_SINGLE(diff)){
+                        target.put((byte)PACK_SINGLE_DIFF(diff));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex++);
+                        }
+                        --targetCapacity;
+                        sourceIndex=nextSourceIndex;
+                        if(c<0x3000){
+                            labelType = fastSingle;
+                            return labelType;
+                        }
+                    } else if(DIFF_IS_DOUBLE(diff) && 2<=targetCapacity){
+                        /*optimize 2 byte case*/
+                        int m = 0;
+                        if(diff>=0){
+                            diff -= BOCU1_REACH_POS_1 +1;
+                            m = diff%BOCU1_TRAIL_COUNT;
+                            diff/=BOCU1_TRAIL_COUNT;
+                            diff+=BOCU1_START_POS_2;
+                        } else {
+                            diff -= BOCU1_REACH_NEG_1;
+                            m = NEGDIVMOD(diff, BOCU1_TRAIL_COUNT, m);
+                            diff+=BOCU1_START_NEG_2;
+                        }
+                        target.put((byte)diff);
+                        target.put((byte)BOCU1_TRAIL_TO_BYTE(m));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                            offsets.put(sourceIndex);
+                        }
+                        targetCapacity -= 2;
+                        sourceIndex = nextSourceIndex;
+                    } else {
+                        int length; /*will be 2..4*/
+                        diff = packDiff(diff);
+                        length = BOCU1_LENGTH_FROM_PACKED(diff);
+                        
+                        /*write the output character bytes from diff and length*/
+                        /*from the first if in the loop we know that targetCapacity>0*/
+                        if(length<=targetCapacity){
+                            switch(length){
+                                /*each branch falls through the next one*/
+                                case 4:
+                                    target.put((byte)(diff>>24));
+                                    if(offsets!= null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 3:
+                                    target.put((byte)(diff>>16));
+                                    if(offsets!= null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 2:
+                                    target.put((byte)(diff>>8));
+                                    if(offsets!= null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                    /*case 1 handled above*/
+                                    target.put((byte)diff);
+                                    if(offsets!= null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                default:
+                                    /*will never occur*/
+                                    break;
+                            }
+                            targetCapacity -= length;
+                            sourceIndex = nextSourceIndex;
+                        } else {
+                            ByteBuffer error = ByteBuffer.wrap(errorBuffer);
+                            /*
+                             * We actually do this backwards here:
+                             * In order to save an intermediate variable, we output
+                             * first to the overflow buffer what does not fit into the
+                             * regular target.
+                             */
+                            /* we know that 1<=targetCapacity<length<=4 */
+                            length-=targetCapacity;
+                            switch(length) {
+                                /* each branch falls through to the next one */
+                            case 3:
+                                error.put((byte)(diff>>16));
+                            case 2:
+                                error.put((byte)(diff>>8));
+                            case 1:
+                                error.put((byte)diff);
+                            default:
+                                /* will never occur */
+                                break;
+                            }
+                            errorBufferLength = length;
+                            
+                            /* now output what fits into the regular target */
+                            diff>>=8*length; /* length was reduced by targetCapacity */
+                            switch(targetCapacity) {
+                                /* each branch falls through to the next one */
+                            case 3:
+                                target.put((byte)(diff>>16));
+                                if(offsets!= null){
+                                    offsets.put(sourceIndex);
+                                }
+                            case 2:
+                                target.put((byte)(diff>>8));
+                                if(offsets!= null){
+                                    offsets.put(sourceIndex);
+                                }
+                            case 1:
+                                target.put((byte)diff);
+                                if(offsets!= null){
+                                    offsets.put(sourceIndex);
+                                }
+                            default:
+                                /* will never occur */
+                                break;
+                            }
+
+                            /* target overflow */
+                            targetCapacity=0;
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                    }
+                } else{
+                    /*target is full*/
+                    cr = CoderResult.OVERFLOW;
+                    break;
+                }
+                   
+            }
+            /*set the converter state back into UConverter*/
+            fromUChar32 = c<0 ? -c :0;
+            fromUnicodeStatus = prev;
+            LabelLoop = false;
+            labelType = fastSingle;
+            return labelType;
+        }
+       
+    }
+    
+    class CharsetDecoderBOCU extends CharsetDecoderICU{
+        public CharsetDecoderBOCU(CharsetICU cs) {
+            super(cs);
+        }
+        
+        int byteIndex;
+        int sourceIndex, nextSourceIndex;
+        int prev, c , diff, count;
+        byte[] bytes;
+        int targetCapacity;
+        CoderResult cr;
+        
+        /* label values for supporting behavior similar to goto in C */
+        private static final int fastSingle=0;
+        private static final int getTrail=1;
+        private static final int regularLoop=2;
+        private static final int endLoop=3;
+        
+        private boolean LabelLoop;//used to break the while loop
+        private boolean afterTrail; // its value is set to true to ignore code after getTrail:
+        private int labelType;
+        /*
+         * The BOCU-1 converter uses the standard setup code in ucnv.c/ucnv_bld.c.
+         * The UConverter fields are used as follows:
+         *
+         * fromUnicodeStatus    encoder's prev (0 will be interpreted as BOCU1_ASCII_PREV)
+         *
+         * toUnicodeStatus      decoder's prev (0 will be interpreted as BOCU1_ASCII_PREV)
+         * mode                 decoder's incomplete (diff<<2)|count (ignored when toULength==0)
+         */
+
+        /* BOCU-1-from-Unicode conversion functions --------------------------------- */
+
+        
+        
+        /**
+         * Function for BOCU-1 decoder; handles multi-byte lead bytes.
+         *
+         * @param b lead byte;
+         *          BOCU1_MIN<=b<BOCU1_START_NEG_2 or BOCU1_START_POS_2<=b<BOCU1_MAX_LEAD
+         * @return (diff<<2)|count
+         */
+        private int decodeBocu1LeadByte(int b) {
+            int diffValue, countValue;
+
+            if(b >= BOCU1_START_NEG_2) {
+                /* positive difference */
+                if(b < BOCU1_START_POS_3) {
+                    /* two bytes */
+                    diffValue = (b - BOCU1_START_POS_2)*BOCU1_TRAIL_COUNT + BOCU1_REACH_POS_1+1;
+                    countValue = 1;
+                } else if(b < BOCU1_START_POS_4) {
+                    /* three bytes */
+                    diffValue = (b-BOCU1_START_POS_3)*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT+BOCU1_REACH_POS_2+1;
+                    countValue = 2;
+                } else {
+                    /* four bytes */
+                    diffValue = BOCU1_REACH_POS_3+1;
+                    countValue = 3;
+                }
+            } else {
+                /* negative difference */
+                if(b >= BOCU1_START_NEG_3) {
+                    /* two bytes */
+                    diffValue=(b -BOCU1_START_NEG_2)*BOCU1_TRAIL_COUNT + BOCU1_REACH_NEG_1;
+                    countValue=1;
+                } else if(b>BOCU1_MIN) {
+                    /* three bytes */
+                    diffValue=(b - BOCU1_START_NEG_3)*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT + BOCU1_REACH_NEG_2;
+                    countValue = 2;
+                } else {
+                    /* four bytes */
+                    diffValue=-BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT+BOCU1_REACH_NEG_3;
+                    countValue=3;
+                }
+            }
+
+            /* return the state for decoding the trail byte(s) */
+            return (diffValue<<2)|countValue;
+        }
+        
+        /**
+         * Function for BOCU-1 decoder; handles multi-byte trail bytes.
+         *
+         * @param count number of remaining trail bytes including this one
+         * @param b trail byte
+         * @return new delta for diff including b - <0 indicates an error
+         *
+         * @see decodeBocu1
+         */
+        private int decodeBocu1TrailByte(int countValue, int b) {
+            b = b&UConverterConstants.UNSIGNED_BYTE_MASK;
+            if((b)<=0x20) {
+                /* skip some C0 controls and make the trail byte range contiguous */
+                b = bocu1ByteToTrail[b];
+                /* b<0 for an illegal trail byte value will result in return<0 below */
+            } else {
+                //b-= BOCU1_TRAIL_BYTE_OFFSET;
+                b = b - BOCU1_TRAIL_BYTE_OFFSET;
+            }
+
+            /* add trail byte into difference and decrement count */
+            if(countValue==1) {
+                return b;
+            } else if(countValue==2) {
+                return b*BOCU1_TRAIL_COUNT;
+            } else /* count==3 */ {
+                return b*(BOCU1_TRAIL_COUNT*BOCU1_TRAIL_COUNT);
+            }
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush){
+            cr = CoderResult.UNDERFLOW;
+            
+            LabelLoop = true; 
+            afterTrail = false; 
+            labelType = fastSingle; // labelType is set to fastSingle so t
+            
+            /*get the converter state*/
+            prev = toUnicodeStatus;
+            
+            if(prev==0){
+                prev = BOCU1_ASCII_PREV;
+            }
+            diff = mode;
+            count = diff&3;
+            diff>>=2;
+            
+            byteIndex = toULength;
+            bytes = toUBytesArray;
+            
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex=byteIndex==0 ? 0 : -1;
+            nextSourceIndex=0;
+            
+            /* conversion "loop" similar to _SCSUToUnicodeWithOffsets() */
+            if(count>0 && byteIndex>0 && target.position()<target.limit()) {
+                //labelType = getTrail;
+                labelType = getTrail(source, target, offsets);
+            }
+            
+            while(LabelLoop){
+                switch(labelType){
+                    case fastSingle:
+                        labelType = fastSingle(source, target, offsets);
+                        break;
+                    case getTrail:
+                        labelType = getTrail(source, target, offsets);
+                        break;
+                    case regularLoop:
+                        labelType = afterGetTrail(source, target, offsets);
+                        break;
+                    case endLoop:
+                        endLoop(source, target, offsets);
+                        break;
+                }
+            }
+            
+            return cr;
+        }
+        
+        private int fastSingle(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            labelType = regularLoop;
+            /* fast loop for single-byte differences */
+            /* use count as the only loop counter variable */
+            diff = source.limit() - source.position();
+            count = target.limit()-target.position();
+            if(count>diff) {
+                count = diff;
+            }
+            while(count>0) {
+                if(BOCU1_START_NEG_2 <=(c=source.get(source.position())) && c< BOCU1_START_POS_2) {
+                    c = prev + (c-BOCU1_MIDDLE);
+                    if(c<0x3000) {
+                        target.put((char)c);
+                        if(offsets!=null){
+                            offsets.put(nextSourceIndex++);
+                        } 
+                        prev = BOCU1_SIMPLE_PREV(c);
+                    } else {
+                        break;
+                    }
+                } else if((c&UConverterConstants.UNSIGNED_BYTE_MASK) <= 0x20) {
+                    if((c&UConverterConstants.UNSIGNED_BYTE_MASK) != 0x20) {
+                        prev = BOCU1_ASCII_PREV;
+                    }
+                    target.put((char)c);
+                    if(offsets!=null){
+                        offsets.put(nextSourceIndex++);
+                    } 
+                } else {
+                    break;
+                }
+                source.position(source.position()+1);
+                --count;
+            }
+            sourceIndex=nextSourceIndex; /* wrong if offsets==NULL but does not matter */
+            return labelType;
+        }
+        
+        private int getTrail(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            labelType = regularLoop;
+            for(;;) {
+                if(source.position() >= source.limit()) {
+                    labelType = endLoop;
+                    return labelType;
+                }
+                ++nextSourceIndex;
+                c = bytes[byteIndex++] = source.get();
+
+                /* trail byte in any position */
+                c = decodeBocu1TrailByte(count, c);
+                if(c<0) {
+                    cr = CoderResult.malformedForLength(1);
+                    labelType = endLoop;
+                    return labelType;
+                }
+
+                diff+=c;
+                if(--count==0) {
+                    /* final trail byte, deliver a code point */
+                    byteIndex=0;
+                    c = prev + diff;
+                    if(c > 0x10ffff) {
+                        cr = CoderResult.malformedForLength(1);
+                        labelType = endLoop;
+                        return labelType;
+                    }
+                    break;
+                }
+            }
+            afterTrail = true;
+            return labelType;
+            
+        }
+        
+        private int afterGetTrail(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            /* decode a sequence of single and lead bytes */
+            while(afterTrail || source.hasRemaining()) {
+                if(!afterTrail){
+                    if(target.position() >= target.limit()) {
+                        /* target is full */
+                        cr = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    ++nextSourceIndex;
+                    c = source.get()&UConverterConstants.UNSIGNED_BYTE_MASK;
+                    if(BOCU1_START_NEG_2 <= c && c < BOCU1_START_POS_2) {
+                        /* Write a code point directly from a single-byte difference. */
+                        c = prev + (c-BOCU1_MIDDLE);
+                        if(c<0x3000) {
+                            target.put((char)c);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                            prev = BOCU1_SIMPLE_PREV(c);
+                            sourceIndex = nextSourceIndex;
+                            labelType = fastSingle;
+                            return labelType;
+                        }
+                    } else if(c <= 0x20) {
+                        /*
+                         * Direct-encoded C0 control code or space.
+                         * Reset prev for C0 control codes but not for space.
+                         */
+                        if(c != 0x20) {
+                            prev=BOCU1_ASCII_PREV;
+                        }
+                        target.put((char)c);
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                        sourceIndex=nextSourceIndex;
+                        continue;
+                    } else if(BOCU1_START_NEG_3 <= c && c < BOCU1_START_POS_3 && source.hasRemaining()) {
+                        /* Optimize two-byte case. */
+                        if(c >= BOCU1_MIDDLE) {
+                            diff=(c - BOCU1_START_POS_2)*BOCU1_TRAIL_COUNT + BOCU1_REACH_POS_1 + 1;
+                        } else {
+                            diff=(c-BOCU1_START_NEG_2)*BOCU1_TRAIL_COUNT + BOCU1_REACH_NEG_1;
+                        }
+
+                        /* trail byte */
+                        ++nextSourceIndex;
+                        c = decodeBocu1TrailByte(1, source.get());
+                        if(c<0 || ((c = prev + diff + c)&UConverterConstants.UNSIGNED_INT_MASK)>0x10ffff) {
+                            bytes[0]= source.get(-2);
+                            bytes[1]= source.get(-1);
+                            byteIndex = 2;
+                            cr = CoderResult.malformedForLength(1);
+                            break;
+                        }
+                    } else if(c == BOCU1_RESET) {
+                        /* only reset the state, no code point */
+                        prev=BOCU1_ASCII_PREV;
+                        sourceIndex=nextSourceIndex;
+                        continue;
+                    } else {
+                        /*
+                         * For multi-byte difference lead bytes, set the decoder state
+                         * with the partial difference value from the lead byte and
+                         * with the number of trail bytes.
+                         */
+                        bytes[0]= (byte)c;
+                        byteIndex = 1;
+
+                        diff = decodeBocu1LeadByte(c);
+                        count = diff&3;
+                        diff>>=2;
+                        getTrail(source, target, offsets);
+                        if(labelType != regularLoop){
+                            return labelType;
+                        }
+                    }
+                }
+                
+                if(afterTrail){
+                    afterTrail = false;
+                }
+                
+                /* calculate the next prev and output c */
+                prev = BOCU1_PREV(c);
+                if(c<=0xffff) {
+                    target.put((char)c);
+                    if(offsets!=null){
+                        offsets.put(sourceIndex);
+                    }
+                } else {
+                    /* output surrogate pair */
+                    target.put((char)UTF16.getLeadSurrogate(c));
+                    if(target.hasRemaining()) {
+                        target.put((char)UTF16.getTrailSurrogate(c));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        /* target overflow */
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                        charErrorBufferArray[0] = UTF16.getTrailSurrogate(c);
+                        charErrorBufferLength = 1;
+                        cr = CoderResult.OVERFLOW;
+                        break;
+                }
+            }
+            sourceIndex=nextSourceIndex;
+          }
+          labelType = endLoop;
+          return labelType;
+        }
+        
+        private void endLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            if(cr.isMalformed()) {
+                /* set the converter state in UConverter to deal with the next character */
+                toUnicodeStatus = BOCU1_ASCII_PREV;
+                mode = 0;
+            } else {
+                /* set the converter state back into UConverter */
+                toUnicodeStatus=prev;
+                mode=(diff<<2)|count;
+            }
+            toULength=byteIndex;
+            LabelLoop = false;
+        }
+    
+    }
+    
+    
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderBOCU(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderBOCU(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        CharsetICU.getCompleteUnicodeSet(setFillIn);
+    }
+
+}
diff --git a/src/com/ibm/icu/charset/CharsetCESU8.java b/src/com/ibm/icu/charset/CharsetCESU8.java
new file mode 100644
index 0000000..bf2c204
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetCESU8.java
@@ -0,0 +1,26 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * The purpose of this class is to set isCESU8 to true in the super class, and to allow the Charset framework to open
+ * the variant UTF-8 converter without extra setup work. CESU-8 encodes/decodes supplementary characters as 6 bytes
+ * instead of the proper 4 bytes.
+ */
+class CharsetCESU8 extends CharsetUTF8 {
+    public CharsetCESU8(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+    
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getCompleteUnicodeSet(setFillIn);
+            
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetCallback.java b/src/com/ibm/icu/charset/CharsetCallback.java
new file mode 100644
index 0000000..5d9d50e
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetCallback.java
@@ -0,0 +1,430 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CoderResult;
+
+/**
+ * <h2> Callback API for CharsetICU API </h2>
+ * 
+ *  CharsetCallback class defines some error behaviour functions called 
+ *  by CharsetDecoderICU and CharsetEncoderICU. The class also provides
+ *  the facility by which clients can write their own callbacks.
+ *
+ *  These functions, although public, should NEVER be called directly.
+ *  They should be used as parameters to the onUmappableCharacter() and 
+ *  onMalformedInput() methods, to set the behaviour of a converter
+ *  when it encounters UNMAPPED/INVALID sequences.
+ *  Currently the only way to set callbacks is by using CodingErrorAction.
+ *  In the future we will provide set methods on CharsetEncoder and CharsetDecoder
+ *  that will accept CharsetCallback fields.
+ *
+ * @draft ICU 3.6
+ * @provisional This API might change or be removed in a future release.
+ */
+
+public class CharsetCallback {
+   /**
+     * FROM_U, TO_U context options for sub callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String SUB_STOP_ON_ILLEGAL = "i";
+
+    /**
+     * FROM_U, TO_U context options for skip callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String SKIP_STOP_ON_ILLEGAL = "i";
+
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to ICU (%UXXXX) 
+     * @draft ICU 3.6
+     */
+    /*public*/ static final String ESCAPE_ICU  = null;
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to JAVA (\\uXXXX)
+     * @draft ICU 3.6
+     */
+    /*public*/ static final String ESCAPE_JAVA     =  "J";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to C (\\uXXXX \\UXXXXXXXX)
+     * TO_U_CALLBACK_ESCAPE option to escape the character value accoding to C (\\xXXXX)
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_C        = "C";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to XML Decimal escape \htmlonly(&amp;#DDDD;)\endhtmlonly
+     * TO_U_CALLBACK_ESCAPE context option to escape the character value accoding to XML Decimal escape \htmlonly(&amp;#DDDD;)\endhtmlonly
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_XML_DEC  = "D";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to XML Hex escape \htmlonly(&amp;#xXXXX;)\endhtmlonly
+     * TO_U_CALLBACK_ESCAPE context option to escape the character value according to XML Hex escape \htmlonly(&amp;#xXXXX;)\endhtmlonly
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_XML_HEX  = "X";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to Unicode (U+XXXXX)
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_UNICODE  = "U";
+    /**
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to Unicode (U+XXXXX)
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    /*public*/ static final String ESCAPE_CSS2  = "S";
+
+    /**
+     * Decoder Callback interface
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public interface Decoder {
+        /**
+         * This function is called when the bytes in the source cannot be handled,
+         * and this function is meant to handle or fix the error if possible.
+         * 
+         * @return Result of decoding action. This returned object is set to an error
+         *  if this function could not handle the conversion.
+         * @draft ICU 3.6
+         * @provisional This API might change or be removed in a future release.
+         */
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                                char[] buffer, int length, CoderResult cr);
+    }
+    /**
+     * Encoder Callback interface
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public interface Encoder {
+        /**
+         * This function is called when the Unicode characters in the source cannot be handled,
+         * and this function is meant to handle or fix the error if possible.
+         * @return Result of decoding action. This returned object is set to an error
+         *  if this function could not handle the conversion.
+         * @draft ICU 3.6
+         * @provisional This API might change or be removed in a future release.
+         */
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                                char[] buffer, int length, int cp, CoderResult cr);
+    }    
+    /**
+     * Skip callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Encoder FROM_U_CALLBACK_SKIP = new Encoder() {
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                char[] buffer, int length, int cp, CoderResult cr){
+            if(context==null){
+                return CoderResult.UNDERFLOW;
+            }else if(((String)context).equals(SUB_STOP_ON_ILLEGAL)){
+                if(!cr.isUnmappable()){
+                    return cr;
+                }else{
+                    return CoderResult.UNDERFLOW;
+                }
+            }
+            return cr;
+        }
+    };
+    /**
+     * Skip callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Decoder TO_U_CALLBACK_SKIP = new Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                char[] buffer, int length, CoderResult cr){
+            if(context==null){
+                return CoderResult.UNDERFLOW;
+            }else if(((String)context).equals(SUB_STOP_ON_ILLEGAL)){
+                if(!cr.isUnmappable()){
+                    return cr;
+                }else{
+                    return CoderResult.UNDERFLOW;
+                }
+            }
+            return cr;
+        }
+    };
+    /**
+     * Write substitute callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Encoder FROM_U_CALLBACK_SUBSTITUTE = new Encoder(){        
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                char[] buffer, int length, int cp, CoderResult cr){
+            if(context==null){
+                return encoder.cbFromUWriteSub(encoder, source, target, offsets);
+            }else if(((String)context).equals(SUB_STOP_ON_ILLEGAL)){
+                if(!cr.isUnmappable()){
+                    return cr;
+                }else{
+                   return encoder.cbFromUWriteSub(encoder, source, target, offsets);
+                }
+            }
+            return cr;
+        }
+    };
+    private static final char[] kSubstituteChar1 = new char[]{0x1A};
+    private static final char[] kSubstituteChar = new char[] {0xFFFD};
+    /**
+     * Write substitute callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Decoder TO_U_CALLBACK_SUBSTITUTE  = new Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                char[] buffer, int length, CoderResult cr){
+
+            CharsetICU cs = (CharsetICU) decoder.charset();
+            /* could optimize this case, just one uchar */
+            if(decoder.invalidCharLength == 1 && cs.subChar1 != 0) {
+                return CharsetDecoderICU.toUWriteUChars(decoder, kSubstituteChar1, 0, 1, target, offsets, source.position());
+            } else {
+                return CharsetDecoderICU.toUWriteUChars(decoder, kSubstituteChar, 0, 1, target, offsets, source.position());
+            }
+        }
+    };
+    /**
+     * Stop callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Encoder FROM_U_CALLBACK_STOP = new Encoder() {
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                char[] buffer, int length, int cp, CoderResult cr){
+            return cr;
+        }
+    };
+    /**
+     * Stop callback
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Decoder TO_U_CALLBACK_STOP = new Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                char[] buffer, int length, CoderResult cr){
+            return cr;
+        }
+    };  
+    private static final int VALUE_STRING_LENGTH = 32;
+    private static final char UNICODE_PERCENT_SIGN_CODEPOINT    = 0x0025;
+    private static final char UNICODE_U_CODEPOINT               = 0x0055;
+    private static final char UNICODE_X_CODEPOINT               = 0x0058;
+    private static final char UNICODE_RS_CODEPOINT              = 0x005C;
+    private static final char UNICODE_U_LOW_CODEPOINT           = 0x0075;
+    private static final char UNICODE_X_LOW_CODEPOINT           = 0x0078;
+    private static final char UNICODE_AMP_CODEPOINT             = 0x0026;
+    private static final char UNICODE_HASH_CODEPOINT            = 0x0023;
+    private static final char UNICODE_SEMICOLON_CODEPOINT       = 0x003B;
+    private static final char UNICODE_PLUS_CODEPOINT            = 0x002B;
+    private static final char UNICODE_LEFT_CURLY_CODEPOINT      = 0x007B;
+    private static final char UNICODE_RIGHT_CURLY_CODEPOINT     = 0x007D;
+    private static final char UNICODE_SPACE_CODEPOINT           = 0x0020;
+    /**
+     * Write escape callback
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Encoder FROM_U_CALLBACK_ESCAPE = new Encoder() {
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                char[] buffer, int length, int cp, CoderResult cr){
+            char[] valueString = new char[VALUE_STRING_LENGTH];
+            int valueStringLength = 0;
+            int i = 0;
+            
+            cr = CoderResult.UNDERFLOW;
+            
+            if (context == null || !(context instanceof String)) {
+                while (i < length) {
+                    valueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT; /* adding % */
+                    valueString[valueStringLength++] = UNICODE_U_CODEPOINT; /* adding U */
+                    valueStringLength += itou(valueString, valueStringLength, (int)buffer[i++] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                }
+            } else {
+                if (((String)context).equals(ESCAPE_JAVA)) {
+                    while (i < length) {
+                        valueString[valueStringLength++] = UNICODE_RS_CODEPOINT;    /* adding \ */
+                        valueString[valueStringLength++] = UNICODE_U_LOW_CODEPOINT; /* adding u */
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[i++] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                    }
+                } else if (((String)context).equals(ESCAPE_C)) {
+                    valueString[valueStringLength++] = UNICODE_RS_CODEPOINT;    /* adding \ */
+                    
+                    if (length == 2) {
+                        valueString[valueStringLength++] = UNICODE_U_CODEPOINT; /* adding U */
+                        valueStringLength = itou(valueString, valueStringLength, cp, 16, 8);
+                    } else {
+                        valueString[valueStringLength++] = UNICODE_U_LOW_CODEPOINT; /* adding u */
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[0] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                    }
+                } else if (((String)context).equals(ESCAPE_XML_DEC)) {
+                    valueString[valueStringLength++] = UNICODE_AMP_CODEPOINT;   /* adding & */
+                    valueString[valueStringLength++] = UNICODE_HASH_CODEPOINT;  /* adding # */
+                    if (length == 2) {
+                        valueStringLength += itou(valueString, valueStringLength, cp, 10, 0);
+                    } else {
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[0] & UConverterConstants.UNSIGNED_SHORT_MASK, 10, 0);
+                    }
+                    valueString[valueStringLength++] = UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+                } else if (((String)context).equals(ESCAPE_XML_HEX)) {
+                    valueString[valueStringLength++] = UNICODE_AMP_CODEPOINT;   /* adding & */
+                    valueString[valueStringLength++] = UNICODE_HASH_CODEPOINT;  /* adding # */
+                    valueString[valueStringLength++] = UNICODE_X_LOW_CODEPOINT; /* adding x */
+                    if (length == 2) {
+                        valueStringLength += itou(valueString, valueStringLength, cp, 16, 0);
+                    } else {
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[0] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 0);
+                    }
+                    valueString[valueStringLength++] = UNICODE_SEMICOLON_CODEPOINT; /* adding ; */
+                } else if (((String)context).equals(ESCAPE_UNICODE)) {
+                    valueString[valueStringLength++] = UNICODE_LEFT_CURLY_CODEPOINT;    /* adding { */
+                    valueString[valueStringLength++] = UNICODE_U_CODEPOINT;             /* adding U */
+                    valueString[valueStringLength++] = UNICODE_PLUS_CODEPOINT;          /* adding + */
+                    if (length == 2) {
+                        valueStringLength += itou(valueString, valueStringLength,cp, 16, 4);
+                    } else {
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[0] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                    }
+                    valueString[valueStringLength++] = UNICODE_RIGHT_CURLY_CODEPOINT;   /* adding } */
+                } else if (((String)context).equals(ESCAPE_CSS2)) {
+                    valueString[valueStringLength++] = UNICODE_RS_CODEPOINT;    /* adding \ */
+                    valueStringLength += itou(valueString, valueStringLength, cp, 16, 0);
+                    /* Always add space character, because the next character might be whitespace,
+                       which would erroneously be considered the termination of the escape sequence. */
+                    valueString[valueStringLength++] = UNICODE_SPACE_CODEPOINT;
+                } else {
+                    while (i < length) {
+                        valueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT;  /* adding % */
+                        valueString[valueStringLength++] = UNICODE_U_CODEPOINT;             /* adding U */
+                        valueStringLength += itou(valueString, valueStringLength, (int)buffer[i++] & UConverterConstants.UNSIGNED_SHORT_MASK, 16, 4);
+                    }
+                }
+            }
+            
+            /* reset the error */
+            cr = CoderResult.UNDERFLOW;
+            
+            cr = encoder.cbFromUWriteUChars(encoder, CharBuffer.wrap(valueString, 0, valueStringLength), target, offsets);
+            return cr;
+        }
+    };
+    /**
+     * Write escape callback
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final Decoder TO_U_CALLBACK_ESCAPE = new Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                char[] buffer, int length, CoderResult cr){
+            char[] uniValueString = new char[VALUE_STRING_LENGTH];
+            int valueStringLength = 0;
+            int i = 0;
+            
+            if (context == null || !(context instanceof String)) {
+                while (i < length) {
+                    uniValueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT;   /* adding % */
+                    uniValueString[valueStringLength++] = UNICODE_X_CODEPOINT;              /* adding X */
+                    valueStringLength += itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 16, 2);
+                }
+            } else {
+                if (((String)context).equals(ESCAPE_XML_DEC)) {
+                    while (i < length) {
+                        uniValueString[valueStringLength++] = UNICODE_AMP_CODEPOINT;    /* adding & */
+                        uniValueString[valueStringLength++] = UNICODE_HASH_CODEPOINT;   /* adding # */
+                        valueStringLength += itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 10, 0);
+                        uniValueString[valueStringLength++] = UNICODE_SEMICOLON_CODEPOINT;  /* adding ; */
+                    }
+                } else if (((String)context).equals(ESCAPE_XML_HEX)) {
+                    while (i < length) {
+                        uniValueString[valueStringLength++] = UNICODE_AMP_CODEPOINT;    /* adding & */
+                        uniValueString[valueStringLength++] = UNICODE_HASH_CODEPOINT;   /* adding # */
+                        uniValueString[valueStringLength++] = UNICODE_X_LOW_CODEPOINT;  /* adding x */
+                        valueStringLength += itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 16, 0);
+                        uniValueString[valueStringLength++] = UNICODE_SEMICOLON_CODEPOINT;  /* adding ; */
+                    }
+                } else if (((String)context).equals(ESCAPE_C)) {
+                    uniValueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT;   /* adding % */
+                    uniValueString[valueStringLength++] = UNICODE_X_CODEPOINT;              /* adding X */
+                    valueStringLength += itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 16, 2);
+                } else {
+                    while (i < length) {
+                        uniValueString[valueStringLength++] = UNICODE_PERCENT_SIGN_CODEPOINT;   /* adding % */
+                        uniValueString[valueStringLength++] = UNICODE_X_CODEPOINT;              /* adding X */
+                        itou(uniValueString, valueStringLength, buffer[i++] & UConverterConstants.UNSIGNED_BYTE_MASK, 16, 2);
+                        valueStringLength += 2;
+                    }
+                }
+            }
+            /* reset the error */
+            cr = CoderResult.UNDERFLOW;
+            
+            CharsetDecoderICU.toUWriteUChars(decoder, uniValueString, 0, valueStringLength, target, offsets, 0);
+            
+            return cr;
+        }
+    };  
+    /***
+     * Java port of uprv_itou() in ICU4C used by TO_U_CALLBACK_ESCAPE and FROM_U_CALLBACK_ESCAPE.
+     * Fills in a char string with the radix-based representation of a number padded with zeroes
+     * to minwidth.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    private static final int itou(char[] buffer, int sourceIndex, int i, int radix, int minwidth) {
+        int length = 0;
+        int digit;
+        int j;
+        char temp;
+        
+        do {
+            digit = (int)(i % radix);
+            buffer[sourceIndex + length++] = (char)(digit <= 9 ? (0x0030+digit) : (0x0030+digit+7));
+            i = i/radix;
+        } while (i != 0 && (sourceIndex + length) < buffer.length);
+        
+        while (length < minwidth) {
+            buffer[sourceIndex + length++] = (char)0x0030; /* zero padding */
+        }
+        /* reverses the string */
+        for (j = 0; j < (length / 2); j++) {
+            temp = buffer[(sourceIndex + length - 1) - j];
+            buffer[(sourceIndex + length-1) -j] = buffer[sourceIndex + j];
+            buffer[sourceIndex + j] = temp;
+        }
+        
+        return length;
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetDecoderICU.java b/src/com/ibm/icu/charset/CharsetDecoderICU.java
new file mode 100644
index 0000000..af26085
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetDecoderICU.java
@@ -0,0 +1,720 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+
+import com.ibm.icu.impl.Assert;
+
+/**
+ * An abstract class that provides framework methods of decoding operations for concrete
+ * subclasses. 
+ * In the future this class will contain API that will implement converter sematics of ICU4C.
+ * @stable ICU 3.6
+ */
+public abstract class CharsetDecoderICU extends CharsetDecoder{ 
+
+    int    toUnicodeStatus;
+    byte[] toUBytesArray = new byte[128];
+    int    toUBytesBegin = 0;
+    int    toULength;
+    char[] charErrorBufferArray = new char[128];
+    int    charErrorBufferLength;
+    int    charErrorBufferBegin;
+    char[] invalidCharBuffer = new char[128];
+    int    invalidCharLength;
+    
+    /* maximum number of indexed bytes */
+    private static final int EXT_MAX_BYTES = 0x1f;
+
+    /* store previous UChars/chars to continue partial matches */
+    byte[] preToUArray = new byte[EXT_MAX_BYTES];
+    int    preToUBegin;
+    int    preToULength;       /* negative: replay */
+    int    preToUFirstLength;  /* length of first character */
+    int mode;
+    
+    Object toUContext = null;
+    private CharsetCallback.Decoder onUnmappableCharacter = CharsetCallback.TO_U_CALLBACK_STOP;
+    private CharsetCallback.Decoder onMalformedInput = CharsetCallback.TO_U_CALLBACK_STOP;
+    CharsetCallback.Decoder toCharErrorBehaviour = new CharsetCallback.Decoder() {
+        public CoderResult call(CharsetDecoderICU decoder, Object context, ByteBuffer source,
+                CharBuffer target, IntBuffer offsets, char[] buffer, int length, CoderResult cr) {
+            if (cr.isUnmappable()) {
+                return onUnmappableCharacter.call(decoder, context, source, target, offsets, buffer,
+                        length, cr);
+            } else /* if (cr.isMalformed()) */ {
+                return onMalformedInput.call(decoder, context, source, target, offsets, buffer,
+                        length, cr);
+            }
+            // return CharsetCallback.TO_U_CALLBACK_STOP.call(decoder, context, source, target, offsets, buffer, length, cr);
+        }
+    };
+                                              
+    // exist to keep implOnMalformedInput and implOnUnmappableInput from being too recursive
+    private boolean malformedInputCalled = false;
+    private boolean unmappableCharacterCalled = false;
+    
+    /*
+     * Construct a CharsetDecorderICU based on the information provided from a CharsetICU object.
+     * 
+     * @param cs The CharsetICU object containing information about how to charset to decode.
+     */
+    CharsetDecoderICU(CharsetICU cs) {
+        super(cs, (float) (1/(float)cs.maxCharsPerByte), cs.maxCharsPerByte);
+    }
+
+    /*
+     * Is this Decoder allowed to use fallbacks? A fallback mapping is a mapping
+     * that will convert a byte sequence to a Unicode codepoint sequence, but
+     * the encoded Unicode codepoint sequence will round trip convert to a different
+     * byte sequence. In ICU, this is can be called a reverse fallback.
+     * @return A boolean
+     */
+    final boolean isFallbackUsed() {
+        return true;
+    }
+    
+    /**
+     * Fallback is currently always used by icu4j decoders.
+     */
+    static final boolean isToUUseFallback() {
+        return isToUUseFallback(true);
+    }
+    
+    /**
+     * Fallback is currently always used by icu4j decoders.
+     */
+    static final boolean isToUUseFallback(boolean iUseFallback) {
+        return true;
+    }
+    
+    /**
+     * Sets the action to be taken if an illegal sequence is encountered
+     * 
+     * @param newAction action to be taken
+     * @exception IllegalArgumentException
+     * @stable ICU 3.6
+     */
+    protected final void implOnMalformedInput(CodingErrorAction newAction) {
+        // don't run infinitely
+        if (malformedInputCalled)
+            return;
+        
+        // if we get a replace, do not let the nio replace
+        if (newAction == CodingErrorAction.REPLACE) {
+            malformedInputCalled = true;
+            super.onMalformedInput(CodingErrorAction.IGNORE);
+            malformedInputCalled = false;
+        }
+        
+        onMalformedInput = getCallback(newAction);
+    }
+    
+    /**
+     * Sets the action to be taken if an illegal sequence is encountered
+     * 
+     * @param newAction action to be taken
+     * @exception IllegalArgumentException
+     * @stable ICU 3.6
+     */
+    protected final void implOnUnmappableCharacter(CodingErrorAction newAction) {
+        // dont run infinitely
+        if (unmappableCharacterCalled)
+            return;
+        
+        // if we get a replace, do not let the nio replace
+        if (newAction == CodingErrorAction.REPLACE) {
+            unmappableCharacterCalled = true;
+            super.onUnmappableCharacter(CodingErrorAction.IGNORE);
+            unmappableCharacterCalled = false;
+        }
+        
+        onUnmappableCharacter = getCallback(newAction);
+    }
+    
+    /**
+     * Sets the callback encoder method and context to be used if an illegal sequence is encounterd.
+     * You would normally call this twice to set both the malform and unmappable error. In this case,
+     * newContext should remain the same since using a different newContext each time will negate the last
+     * one used.
+     * @param err CoderResult
+     * @param newCallback CharsetCallback.Encoder
+     * @param newContext Object
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final void setToUCallback(CoderResult err, CharsetCallback.Decoder newCallback, Object newContext) {
+        if (err.isMalformed()) {
+            onMalformedInput = newCallback;
+        } else if (err.isUnmappable()) {
+            onUnmappableCharacter = newCallback;
+        } else {
+            /* Error: Only malformed and unmappable are handled. */
+        }
+        
+        if (toUContext == null || !toUContext.equals(newContext)) {
+            toUContext = newContext;
+        }
+    }
+    
+    private static CharsetCallback.Decoder getCallback(CodingErrorAction action){
+        if(action==CodingErrorAction.REPLACE){
+            return CharsetCallback.TO_U_CALLBACK_SUBSTITUTE;
+        }else if(action==CodingErrorAction.IGNORE){
+            return CharsetCallback.TO_U_CALLBACK_SKIP;
+        }else /* if(action==CodingErrorAction.REPORT) */ {
+            return CharsetCallback.TO_U_CALLBACK_STOP;
+        }
+    }
+    private final ByteBuffer EMPTY = ByteBuffer.allocate(0);
+    /**
+     * Flushes any characters saved in the converter's internal buffer and
+     * resets the converter.
+     * @param out action to be taken
+     * @return result of flushing action and completes the decoding all input. 
+     *         Returns CoderResult.UNDERFLOW if the action succeeds.
+     * @stable ICU 3.6
+     */
+    protected final CoderResult implFlush(CharBuffer out) {
+        return decode(EMPTY, out, null, true);
+    }
+    
+    /**
+     * Resets the to Unicode mode of converter
+     * @stable ICU 3.6
+     */
+    protected void implReset() {
+        toUnicodeStatus = 0 ;
+        toULength = 0;
+        charErrorBufferLength = 0;
+        charErrorBufferBegin = 0;
+        
+        /* store previous UChars/chars to continue partial matches */
+        preToUBegin = 0;
+        preToULength = 0;       /* negative: replay */
+        preToUFirstLength = 0; 
+
+        mode = 0;
+    }
+      
+    /**
+     * Decodes one or more bytes. The default behaviour of the converter
+     * is stop and report if an error in input stream is encountered. 
+     * To set different behaviour use @see CharsetDecoder.onMalformedInput()
+     * This  method allows a buffer by buffer conversion of a data stream.  
+     * The state of the conversion is saved between calls to convert.  
+     * Among other things, this means multibyte input sequences can be 
+     * split between calls. If a call to convert results in an Error, the 
+     * conversion may be continued by calling convert again with suitably 
+     * modified parameters.All conversions should be finished with a call to 
+     * the flush method.
+     * @param in buffer to decode
+     * @param out buffer to populate with decoded result
+     * @return Result of decoding action. Returns CoderResult.UNDERFLOW if the decoding
+     *         action succeeds or more input is needed for completing the decoding action.
+     * @stable ICU 3.6
+     */
+    protected CoderResult decodeLoop(ByteBuffer in,CharBuffer out){
+        if(in.remaining() < toUCountPending()){
+            return CoderResult.UNDERFLOW;
+        }
+//        if (!in.hasRemaining()) {
+//            toULength = 0;
+//            return CoderResult.UNDERFLOW;
+//        }
+        
+        in.position(in.position() + toUCountPending());
+        
+        /* do the conversion */
+        CoderResult ret = decode(in, out, null, false);
+
+        // ok was there input held in the previous invocation of decodeLoop 
+        // that resulted in output in this invocation?
+        in.position(in.position() - toUCountPending());
+        
+        return ret;
+    }
+
+    /*
+     * Implements the ICU semantic for decode operation
+     * @param in The input byte buffer
+     * @param out The output character buffer
+     * @return Result of decoding action. Returns CoderResult.UNDERFLOW if the decoding
+     *         action succeeds or more input is needed for completing the decoding action.
+     */
+    abstract CoderResult decodeLoop(ByteBuffer in, CharBuffer out, IntBuffer offsets, boolean flush);
+    
+    /*
+     * Implements the ICU semantic for decode operation
+     * @param source The input byte buffer
+     * @param target The output character buffer
+     * @param offsets
+     * @param flush true if, and only if, the invoker can provide no
+     *  additional input bytes beyond those in the given buffer.
+     * @return Result of decoding action. Returns CoderResult.UNDERFLOW if the decoding
+     *         action succeeds or more input is needed for completing the decoding action.
+     */
+    final CoderResult decode(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+    
+        /* check parameters */
+        if (target == null || source == null) {
+            throw new IllegalArgumentException();
+        }
+        
+        /*
+         * Make sure that the buffer sizes do not exceed the number range for
+         * int32_t because some functions use the size (in units or bytes)
+         * rather than comparing pointers, and because offsets are int32_t values.
+         *
+         * size_t is guaranteed to be unsigned and large enough for the job.
+         *
+         * Return with an error instead of adjusting the limits because we would
+         * not be able to maintain the semantics that either the source must be
+         * consumed or the target filled (unless an error occurs).
+         * An adjustment would be sourceLimit=t+0x7fffffff; for example.
+         */
+            /*agljport:fix
+        if(
+            ((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s) ||
+            ((size_t)(targetLimit-t)>(size_t)0x3fffffff && targetLimit>t)
+        ) {
+            *err=U_ILLEGAL_ARGUMENT_ERROR;
+            return;
+        }
+            */
+        
+        /* flush the target overflow buffer */
+        if (charErrorBufferLength > 0) {
+            int i = 0;
+            do {
+                if (!target.hasRemaining()) {
+                    /* the overflow buffer contains too much, keep the rest */
+                    int j = 0;
+
+                    do {
+                        charErrorBufferArray[j++] = charErrorBufferArray[i++];
+                    } while (i < charErrorBufferLength);
+
+                    charErrorBufferLength = (byte) j;
+                    return CoderResult.OVERFLOW;
+                }
+
+                /* copy the overflow contents to the target */
+                target.put(charErrorBufferArray[i++]);
+                if (offsets != null) {
+                    offsets.put(-1); /* no source index available for old output */
+                }
+            } while (i < charErrorBufferLength);
+
+            /* the overflow buffer is completely copied to the target */
+            charErrorBufferLength = 0;
+        }
+    
+        if (!flush && !source.hasRemaining() && preToULength >= 0) {
+            /* the overflow buffer is emptied and there is no new input: we are done */
+            return CoderResult.UNDERFLOW;
+        }
+    
+        /*
+         * Do not simply return with a buffer overflow error if
+         * !flush && t==targetLimit
+         * because it is possible that the source will not generate any output.
+         * For example, the skip callback may be called;
+         * it does not output anything.
+         */
+        
+        return toUnicodeWithCallback(source, target, offsets, flush);
+    }
+
+    /* Currently, we are not using offsets in ICU4J. */
+    /* private void updateOffsets(IntBuffer offsets,int length, int sourceIndex, int errorInputLength) {
+        int limit;
+        int delta, offset;
+
+        if(sourceIndex>=0) {
+            /*
+             * adjust each offset by adding the previous sourceIndex
+             * minus the length of the input sequence that caused an
+             * error, if any
+             */
+       /*     delta=sourceIndex-errorInputLength;
+        } else {
+            /*
+             * set each offset to -1 because this conversion function
+             * does not handle offsets
+             */
+        /*    delta=-1;
+        }
+        limit=offsets.position()+length;
+        if(delta==0) {
+            /* most common case, nothing to do */
+        /* } else if(delta>0) {
+            /* add the delta to each offset (but not if the offset is <0) */
+        /*    while(offsets.position()<limit) {
+                offset=offsets.get(offsets.position());
+                if(offset>=0) {
+                    offsets.put(offset+delta);
+                }
+                //FIXME: ++offsets;
+            }
+        } else /* delta<0 */ /* {
+            /*
+             * set each offset to -1 because this conversion function
+             * does not handle offsets
+             * or the error input sequence started in a previous buffer
+             */
+        /*    while(offsets.position()<limit) {
+                offsets.put(-1);
+            }
+        }
+    } */
+    final CoderResult toUnicodeWithCallback(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush){
+        
+        int sourceIndex;
+        int errorInputLength;
+        boolean converterSawEndOfInput, calledCallback;
+        //int t=target.position();
+        int s=source.position();
+        /* variables for m:n conversion */
+        ByteBuffer replayArray = ByteBuffer.allocate(EXT_MAX_BYTES);
+        int replayArrayIndex = 0;
+            
+        ByteBuffer realSource=null;
+        boolean realFlush=false;
+        int realSourceIndex=0;
+    
+
+        CoderResult cr = CoderResult.UNDERFLOW;
+        
+        /* get the converter implementation function */
+        sourceIndex=0;
+
+        if(preToULength>=0) {
+            /* normal mode */
+        } else {
+            /*
+             * Previous m:n conversion stored source units from a partial match
+             * and failed to consume all of them.
+             * We need to "replay" them from a temporary buffer and convert them first.
+             */
+            realSource=source;
+            realFlush=flush;
+            realSourceIndex=sourceIndex;
+            //UConverterUtility.uprv_memcpy(replayArray, replayBegin, preToUArray, preToUBegin, -preToULength);
+            replayArray.put(preToUArray,0, -preToULength);
+            source=replayArray;
+            source.position(0);
+            source.limit(replayArrayIndex-preToULength);
+            flush=false;
+            sourceIndex=-1;
+            preToULength=0;
+        }
+    
+        /*
+         * loop for conversion and error handling
+         *
+         * loop {
+         *   convert
+         *   loop {
+         *     update offsets
+         *     handle end of input
+         *     handle errors/call callback
+         *   }
+         * }
+         */
+        for(;;) {
+
+            /* convert */
+            cr = decodeLoop(source, target, offsets, flush);
+
+            /*
+             * set a flag for whether the converter
+             * successfully processed the end of the input
+             *
+             * need not check cnv->preToULength==0 because a replay (<0) will cause
+             * s<sourceLimit before converterSawEndOfInput is checked
+             */
+            converterSawEndOfInput= (cr.isUnderflow() && flush && source.remaining()==0 && toULength == 0);
+            
+            /* no callback called yet for this iteration */
+            calledCallback=false;
+    
+            /* no sourceIndex adjustment for conversion, only for callback output */
+            errorInputLength=0;
+    
+            /*
+             * loop for offsets and error handling
+             *
+             * iterates at most 3 times:
+             * 1. to clean up after the conversion function
+             * 2. after the callback
+             * 3. after the callback again if there was truncated input
+             */
+            for(;;) {
+                /* update offsets if we write any */
+                /* Currently offsets are not being used in ICU4J */
+                /* if(offsets!=null) {
+
+                    int length=(target.position()-t);
+                    if(length>0) {
+                        updateOffsets(offsets, length, sourceIndex, errorInputLength);
+    
+                                            
+                        /*
+                         * if a converter handles offsets and updates the offsets
+                         * pointer at the end, then pArgs->offset should not change
+                         * here;
+                         * however, some converters do not handle offsets at all
+                         * (sourceIndex<0) or may not update the offsets pointer
+                         */
+                        //TODO: pArgs->offsets=offsets+=length;
+                  /*  }
+    
+                    if(sourceIndex>=0) {
+                        sourceIndex+=(source.position()-s);
+                    }
+                                    
+                } */
+    
+                if(preToULength<0) {
+                    /*
+                     * switch the source to new replay units (cannot occur while replaying)
+                     * after offset handling and before end-of-input and callback handling
+                     */
+                    if(realSource==null)
+                                    {
+                        realSource=source;
+                        realFlush=flush;
+                        realSourceIndex=sourceIndex;
+    
+                        //UConverterUtility.uprv_memcpy(replayArray, replayBegin, preToUArray, preToUBegin, -preToULength);
+                        replayArray.put(preToUArray,0, -preToULength);
+
+                        source=replayArray;
+                        source.limit(replayArrayIndex-preToULength);
+                        flush=false;
+                        if((sourceIndex+=preToULength)<0) {
+                            sourceIndex=-1;
+                        }
+    
+                        preToULength=0;
+                    } else {
+                        /* see implementation note before _fromUnicodeWithCallback() */
+                        //agljport:todo U_ASSERT(realSource==NULL);
+                       Assert.assrt(realSource==null);
+                    }
+                }
+    
+                /* update pointers */
+                s=source.position();
+                //t=target.position();
+    
+                if(cr.isUnderflow()) {
+                    if(s<source.limit())
+                                    {
+                        /*
+                         * continue with the conversion loop while there is still input left
+                         * (continue converting by breaking out of only the inner loop)
+                         */
+                        break;
+                    } else if(realSource!=null) {
+                        /* switch back from replaying to the real source and continue */
+                        source = realSource;
+                        flush=realFlush;
+                        sourceIndex=realSourceIndex;
+                        realSource=null;
+                        break;
+                    } else if(flush && toULength>0) {
+                        /*
+                         * the entire input stream is consumed
+                         * and there is a partial, truncated input sequence left
+                         */
+    
+                        /* inject an error and continue with callback handling */
+                        cr = CoderResult.malformedForLength(toULength);
+                        calledCallback=false; /* new error condition */
+                    } else {
+                        /* input consumed */
+                        if(flush) {
+                            /*
+                             * return to the conversion loop once more if the flush
+                             * flag is set and the conversion function has not
+                             * successfully processed the end of the input yet
+                             *
+                             * (continue converting by breaking out of only the inner loop)
+                             */
+                            if(!converterSawEndOfInput) {
+                                break;
+                            }
+    
+                            /* reset the converter without calling the callback function */
+                            implReset();
+                        }
+    
+                        /* done successfully */
+                        return cr;
+                    }
+                }
+    
+                /* U_FAILURE(*err) */
+                {
+    
+                    if( calledCallback || cr.isOverflow() ||
+                        (cr.isMalformed() && cr.isUnmappable())
+                      ) {
+                        /*
+                         * the callback did not or cannot resolve the error:
+                         * set output pointers and return
+                         *
+                         * the check for buffer overflow is redundant but it is
+                         * a high-runner case and hopefully documents the intent
+                         * well
+                         *
+                         * if we were replaying, then the replay buffer must be
+                         * copied back into the UConverter
+                         * and the real arguments must be restored
+                         */
+                        if(realSource!=null) {
+                            int length;
+                            Assert.assrt(preToULength==0);
+                            length=(int)(source.limit()-source.position());
+                            if(length>0) {
+                                //UConverterUtility.uprv_memcpy(preToUArray, preToUBegin, pArgs.sourceArray, pArgs.sourceBegin, length);
+                                source.get(preToUArray, preToUBegin, length);
+                                preToULength=(byte)-length;
+                            }
+    
+                            source=realSource;
+                            flush=realFlush;
+                        }
+                        return cr;
+                    }
+                }
+    
+                /* copy toUBytes[] to invalidCharBuffer[] */
+                errorInputLength=invalidCharLength=toULength;
+                if(errorInputLength>0) {
+                    copy(toUBytesArray, 0, invalidCharBuffer, 0, errorInputLength);
+                }
+    
+                /* set the converter state to deal with the next character */
+                toULength=0;
+    
+                /* call the callback function */
+                cr = toCharErrorBehaviour.call(this, toUContext, source, target, offsets, invalidCharBuffer, errorInputLength, cr);
+                /*
+                 * loop back to the offset handling
+                 *
+                 * this flag will indicate after offset handling
+                 * that a callback was called;
+                 * if the callback did not resolve the error, then we return
+                 */
+                calledCallback=true;
+            }
+        }
+    }
+
+    /*
+     * Returns the number of chars held in the converter's internal state
+     * because more input is needed for completing the conversion. This function is 
+     * useful for mapping semantics of ICU's converter interface to those of iconv,
+     * and this information is not needed for normal conversion.
+     * @return The number of chars in the state. -1 if an error is encountered.
+     */
+    /*public*/ int toUCountPending()    {
+        if(preToULength > 0){
+            return preToULength ;
+        } else if(preToULength < 0){
+            return -preToULength;
+        } else if(toULength > 0){
+            return toULength;
+        } else {
+            return 0;
+        }
+    }
+    
+
+    private void copy(byte[] src, int srcOffset, char[] dst, int dstOffset, int length) {
+        for(int i=srcOffset; i<length; i++){
+            dst[dstOffset++]=(char)src[srcOffset++];
+        }
+    }
+    /*
+     * ONLY used by ToU callback functions.
+     * This function will write out the specified characters to the target
+     * character buffer.
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    static final CoderResult toUWriteUChars( CharsetDecoderICU cnv,
+                                                char[] ucharsArray, int ucharsBegin, int length,  
+                                                CharBuffer target, IntBuffer offsets, int sourceIndex) {
+        
+        CoderResult cr = CoderResult.UNDERFLOW;
+        
+        /* write UChars */
+        if(offsets==null) {
+            while(length>0 && target.hasRemaining()) {
+                target.put(ucharsArray[ucharsBegin++]);
+                --length;
+            }
+
+        } else {
+            /* output with offsets */
+            while(length>0 && target.hasRemaining()) {
+                target.put(ucharsArray[ucharsBegin++]);
+                offsets.put(sourceIndex);
+                --length;
+            }
+        }
+        /* write overflow */
+        if(length>0) {        
+            cnv.charErrorBufferLength= 0;
+            cr = CoderResult.OVERFLOW;
+            do {
+                cnv.charErrorBufferArray[cnv.charErrorBufferLength++]=ucharsArray[ucharsBegin++];
+            } while(--length>0);
+        }
+        return cr;
+    }
+    /*
+     * This function will write out the Unicode substitution character to the
+     * target character buffer.
+     * Sub classes to override this method if required
+     * @param decoder
+     * @param source
+     * @param target
+     * @param offsets
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    /* Note: Currently, this method is not being used because the callback method calls toUWriteUChars with
+     * the substitution characters. Will leave in here for the time being. To be removed later. (4.0)
+     */
+     /*CoderResult cbToUWriteSub(CharsetDecoderICU decoder, 
+                                        ByteBuffer source, CharBuffer target, 
+                                        IntBuffer offsets){
+        String sub = decoder.replacement();
+        CharsetICU cs = (CharsetICU) decoder.charset();
+        if (decoder.invalidCharLength==1 && cs.subChar1 != 0x00) {
+            char[] subArr = new char[] { 0x1a };
+            return CharsetDecoderICU.toUWriteUChars(decoder, subArr, 0, sub
+                    .length(), target, offsets, source.position());
+        } else {
+            return CharsetDecoderICU.toUWriteUChars(decoder, sub.toCharArray(),
+                    0, sub.length(), target, offsets, source.position());
+            
+        }
+    }*/
+}
diff --git a/src/com/ibm/icu/charset/CharsetEncoderICU.java b/src/com/ibm/icu/charset/CharsetEncoderICU.java
new file mode 100644
index 0000000..73ce459
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetEncoderICU.java
@@ -0,0 +1,922 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.charset;
+
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * An abstract class that provides framework methods of decoding operations for concrete
+ * subclasses. 
+ * In the future this class will contain API that will implement converter semantics of ICU4C.
+ * @stable ICU 3.6
+ */
+public abstract class CharsetEncoderICU extends CharsetEncoder {
+
+    /* this is used in fromUnicode DBCS tables as an "unassigned" marker */
+    static final char MISSING_CHAR_MARKER = '\uFFFF';
+
+    byte[] errorBuffer = new byte[30];
+
+    int errorBufferLength = 0;
+
+    /** these are for encodeLoopICU */
+    int fromUnicodeStatus;
+
+    int fromUChar32;
+
+    boolean useSubChar1;
+
+    boolean useFallback;
+
+    /* maximum number of indexed UChars */
+    static final int EXT_MAX_UCHARS = 19;
+
+    /* store previous UChars/chars to continue partial matches */
+    int preFromUFirstCP; /* >=0: partial match */
+
+    char[] preFromUArray = new char[EXT_MAX_UCHARS];
+
+    int preFromUBegin;
+
+    int preFromULength; /* negative: replay */
+
+    char[] invalidUCharBuffer = new char[2];
+
+    int invalidUCharLength;
+
+    Object fromUContext;
+
+    private CharsetCallback.Encoder onUnmappableInput = CharsetCallback.FROM_U_CALLBACK_STOP;
+
+    private CharsetCallback.Encoder onMalformedInput = CharsetCallback.FROM_U_CALLBACK_STOP;
+
+    CharsetCallback.Encoder fromCharErrorBehaviour = new CharsetCallback.Encoder() {
+        public CoderResult call(CharsetEncoderICU encoder, Object context,
+                CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                char[] buffer, int length, int cp, CoderResult cr) {
+            if (cr.isUnmappable()) {
+                return onUnmappableInput.call(encoder, context, source, target,
+                        offsets, buffer, length, cp, cr);
+            } else /* if (cr.isMalformed()) */ {
+                return onMalformedInput.call(encoder, context, source, target,
+                        offsets, buffer, length, cp, cr);
+            }
+            // return CharsetCallback.FROM_U_CALLBACK_STOP.call(encoder, context, source, target, offsets, buffer, length, cp, cr);
+
+        }
+    };
+
+    /*
+     * Construcs a new encoder for the given charset
+     * 
+     * @param cs
+     *            for which the decoder is created
+     * @param replacement
+     *            the substitution bytes
+     */
+    CharsetEncoderICU(CharsetICU cs, byte[] replacement) {
+        super(cs, (cs.minBytesPerChar + cs.maxBytesPerChar) / 2,
+                cs.maxBytesPerChar, replacement);
+    }
+
+    /**
+     * Is this Encoder allowed to use fallbacks? A fallback mapping is a mapping
+     * that will convert a Unicode codepoint sequence to a byte sequence, but
+     * the encoded byte sequence will round trip convert to a different
+     * Unicode codepoint sequence.
+     * @return true if the converter uses fallback, false otherwise.
+     * @stable ICU 3.8
+     */
+    public boolean isFallbackUsed() {
+        return useFallback;
+    }
+
+    /**
+     * Sets whether this Encoder can use fallbacks?
+     * @param usesFallback true if the user wants the converter to take
+     *  advantage of the fallback mapping, false otherwise.
+     * @stable ICU 3.8
+     */
+    public void setFallbackUsed(boolean usesFallback) {
+        useFallback = usesFallback;
+    }
+
+    /*
+     * Use fallbacks from Unicode to codepage when useFallback or for private-use code points
+     * @param c A codepoint
+     */
+    final boolean isFromUUseFallback(int c) {
+        return (useFallback)
+                || (UCharacter.getType(c) == UCharacter.PRIVATE_USE);
+    }
+
+    /**
+     * Use fallbacks from Unicode to codepage when useFallback or for private-use code points
+     */
+    static final boolean isFromUUseFallback(boolean iUseFallback, int c) {
+        return (iUseFallback)
+                || (UCharacter.getType(c) == UCharacter.PRIVATE_USE);
+    }
+
+    /**
+     * Sets the action to be taken if an illegal sequence is encountered
+     * 
+     * @param newAction
+     *            action to be taken
+     * @exception IllegalArgumentException
+     * @stable ICU 3.6
+     */
+    protected void implOnMalformedInput(CodingErrorAction newAction) {
+        onMalformedInput = getCallback(newAction);
+    }
+    
+    /**
+     * Sets the action to be taken if an illegal sequence is encountered
+     * 
+     * @param newAction
+     *            action to be taken
+     * @exception IllegalArgumentException
+     * @stable ICU 3.6
+     */
+    protected void implOnUnmappableCharacter(CodingErrorAction newAction) {
+        onUnmappableInput = getCallback(newAction);
+    }
+    
+    /**
+     * Sets the callback encoder method and context to be used if an illegal sequence is encounterd.
+     * You would normally call this twice to set both the malform and unmappable error. In this case,
+     * newContext should remain the same since using a different newContext each time will negate the last
+     * one used.
+     * @param err CoderResult
+     * @param newCallback CharsetCallback.Encoder
+     * @param newContext Object
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final void setFromUCallback(CoderResult err, CharsetCallback.Encoder newCallback, Object newContext) {
+        if (err.isMalformed()) {
+            onMalformedInput = newCallback;
+        } else if (err.isUnmappable()) {
+            onUnmappableInput = newCallback;
+        } else {
+            /* Error: Only malformed and unmappable are handled. */
+        }
+        
+        if (fromUContext == null || !fromUContext.equals(newContext)) {
+            setFromUContext(newContext);
+        }
+    }
+
+    /**
+     * Sets fromUContext used in callbacks.
+     * 
+     * @param newContext Object
+     * @exception IllegalArgumentException
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final void setFromUContext(Object newContext) {
+        fromUContext = newContext;
+    }
+    
+    private static CharsetCallback.Encoder getCallback(CodingErrorAction action) {
+        if (action == CodingErrorAction.REPLACE) {
+            return CharsetCallback.FROM_U_CALLBACK_SUBSTITUTE;
+        } else if (action == CodingErrorAction.IGNORE) {
+            return CharsetCallback.FROM_U_CALLBACK_SKIP;
+        } else /* if (action == CodingErrorAction.REPORT) */ {
+            return CharsetCallback.FROM_U_CALLBACK_STOP;
+        }
+    }
+
+    private static final CharBuffer EMPTY = CharBuffer.allocate(0);
+
+    /**
+     * Flushes any characters saved in the converter's internal buffer and
+     * resets the converter.
+     * @param out action to be taken
+     * @return result of flushing action and completes the decoding all input. 
+     *         Returns CoderResult.UNDERFLOW if the action succeeds.
+     * @stable ICU 3.6
+     */
+    protected CoderResult implFlush(ByteBuffer out) {
+        return encode(EMPTY, out, null, true);
+    }
+
+    /**
+     * Resets the from Unicode mode of converter
+     * @stable ICU 3.6
+     */
+    protected void implReset() {
+        errorBufferLength = 0;
+        fromUnicodeStatus = 0;
+        fromUChar32 = 0;
+        fromUnicodeReset();
+    }
+
+    private void fromUnicodeReset() {
+        preFromUBegin = 0;
+        preFromUFirstCP = UConverterConstants.U_SENTINEL;
+        preFromULength = 0;
+    }
+
+    /**
+     * Encodes one or more chars. The default behaviour of the
+     * converter is stop and report if an error in input stream is encountered.
+     * To set different behaviour use @see CharsetEncoder.onMalformedInput()
+     * @param in buffer to decode
+     * @param out buffer to populate with decoded result
+     * @return result of decoding action. Returns CoderResult.UNDERFLOW if the decoding
+     *         action succeeds or more input is needed for completing the decoding action.
+     * @stable ICU 3.6
+     */
+    protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) {
+        if (!in.hasRemaining() && this.errorBufferLength == 0) { // make sure the errorBuffer is empty
+            // The Java framework should have already substituted what was left.
+            fromUChar32 = 0;
+            //fromUnicodeReset();
+            return CoderResult.UNDERFLOW;
+        }
+        in.position(in.position() + fromUCountPending());
+        /* do the conversion */
+        CoderResult ret = encode(in, out, null, false);
+        setSourcePosition(in);
+        /* No need to reset to keep the proper state of the encoder.
+         if (ret.isUnderflow() && in.hasRemaining()) {
+            // The Java framework is going to substitute what is left.
+            //fromUnicodeReset();
+        } */
+        return ret;
+    }
+
+    /*
+     * Implements ICU semantics of buffer management
+     * @param source
+     * @param target
+     * @param offsets
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    abstract CoderResult encodeLoop(CharBuffer source, ByteBuffer target,
+            IntBuffer offsets, boolean flush);
+
+    /*
+     * Implements ICU semantics for encoding the buffer
+     * @param source The input character buffer
+     * @param target The output byte buffer
+     * @param offsets
+     * @param flush true if, and only if, the invoker can provide no
+     *  additional input bytes beyond those in the given buffer.
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    final CoderResult encode(CharBuffer source, ByteBuffer target,
+            IntBuffer offsets, boolean flush) {
+
+        /* check parameters */
+        if (target == null || source == null) {
+            throw new IllegalArgumentException();
+        }
+
+        /*
+         * Make sure that the buffer sizes do not exceed the number range for
+         * int32_t because some functions use the size (in units or bytes)
+         * rather than comparing pointers, and because offsets are int32_t values.
+         *
+         * size_t is guaranteed to be unsigned and large enough for the job.
+         *
+         * Return with an error instead of adjusting the limits because we would
+         * not be able to maintain the semantics that either the source must be
+         * consumed or the target filled (unless an error occurs).
+         * An adjustment would be targetLimit=t+0x7fffffff; for example.
+         */
+
+        /* flush the target overflow buffer */
+        if (errorBufferLength > 0) {
+            byte[] overflowArray;
+            int i, length;
+
+            overflowArray = errorBuffer;
+            length = errorBufferLength;
+            i = 0;
+            do {
+                if (target.remaining() == 0) {
+                    /* the overflow buffer contains too much, keep the rest */
+                    int j = 0;
+
+                    do {
+                        overflowArray[j++] = overflowArray[i++];
+                    } while (i < length);
+
+                    errorBufferLength = (byte) j;
+                    return CoderResult.OVERFLOW;
+                }
+
+                /* copy the overflow contents to the target */
+                target.put(overflowArray[i++]);
+                if (offsets != null) {
+                    offsets.put(-1); /* no source index available for old output */
+                }
+            } while (i < length);
+
+            /* the overflow buffer is completely copied to the target */
+            errorBufferLength = 0;
+        }
+
+        if (!flush && source.remaining() == 0 && preFromULength >= 0) {
+            /* the overflow buffer is emptied and there is no new input: we are done */
+            return CoderResult.UNDERFLOW;
+        }
+
+        /*
+         * Do not simply return with a buffer overflow error if
+         * !flush && t==targetLimit
+         * because it is possible that the source will not generate any output.
+         * For example, the skip callback may be called;
+         * it does not output anything.
+         */
+
+        return fromUnicodeWithCallback(source, target, offsets, flush);
+
+    }
+
+    /*
+     * Implementation note for m:n conversions
+     *
+     * While collecting source units to find the longest match for m:n conversion,
+     * some source units may need to be stored for a partial match.
+     * When a second buffer does not yield a match on all of the previously stored
+     * source units, then they must be "replayed", i.e., fed back into the converter.
+     *
+     * The code relies on the fact that replaying will not nest -
+     * converting a replay buffer will not result in a replay.
+     * This is because a replay is necessary only after the _continuation_ of a
+     * partial match failed, but a replay buffer is converted as a whole.
+     * It may result in some of its units being stored again for a partial match,
+     * but there will not be a continuation _during_ the replay which could fail.
+     *
+     * It is conceivable that a callback function could call the converter
+     * recursively in a way that causes another replay to be stored, but that
+     * would be an error in the callback function.
+     * Such violations will cause assertion failures in a debug build,
+     * and wrong output, but they will not cause a crash.
+     */
+    final CoderResult fromUnicodeWithCallback(CharBuffer source,
+            ByteBuffer target, IntBuffer offsets, boolean flush) {
+        int sBufferIndex;
+        int sourceIndex;
+        int errorInputLength;
+        boolean converterSawEndOfInput, calledCallback;
+
+        /* variables for m:n conversion */
+        CharBuffer replayArray = CharBuffer.allocate(EXT_MAX_UCHARS);
+        int replayArrayIndex = 0;
+        CharBuffer realSource;
+        boolean realFlush;
+
+        CoderResult cr = CoderResult.UNDERFLOW;
+
+        /* get the converter implementation function */
+        sourceIndex = 0;
+
+        if (preFromULength >= 0) {
+            /* normal mode */
+            realSource = null;
+            realFlush = false;
+        } else {
+            /*
+             * Previous m:n conversion stored source units from a partial match
+             * and failed to consume all of them.
+             * We need to "replay" them from a temporary buffer and convert them first.
+             */
+            realSource = source;
+            realFlush = flush;
+
+            //UConverterUtility.uprv_memcpy(replayArray, replayArrayIndex, preFromUArray, 0, -preFromULength*UMachine.U_SIZEOF_UCHAR);
+            replayArray.put(preFromUArray, 0, -preFromULength);
+            source = replayArray;
+            source.position(replayArrayIndex);
+            source.limit(replayArrayIndex - preFromULength); //preFromULength is negative, see declaration
+            flush = false;
+
+            preFromULength = 0;
+        }
+
+        /*
+         * loop for conversion and error handling
+         *
+         * loop {
+         *   convert
+         *   loop {
+         *     update offsets
+         *     handle end of input
+         *     handle errors/call callback
+         *   }
+         * }
+         */
+        for (;;) {
+            /* convert */
+            cr = encodeLoop(source, target, offsets, flush);
+            /*
+             * set a flag for whether the converter
+             * successfully processed the end of the input
+             *
+             * need not check cnv.preFromULength==0 because a replay (<0) will cause
+             * s<sourceLimit before converterSawEndOfInput is checked
+             */
+            converterSawEndOfInput = (boolean) (cr.isUnderflow() && flush
+                    && source.remaining() == 0 && fromUChar32 == 0);
+
+            /* no callback called yet for this iteration */
+            calledCallback = false;
+
+            /* no sourceIndex adjustment for conversion, only for callback output */
+            errorInputLength = 0;
+
+            /*
+             * loop for offsets and error handling
+             *
+             * iterates at most 3 times:
+             * 1. to clean up after the conversion function
+             * 2. after the callback
+             * 3. after the callback again if there was truncated input
+             */
+            for (;;) {
+                /* update offsets if we write any */
+                /* Currently offsets are not being used in ICU4J */
+                /* if (offsets != null) {
+                    int length = target.remaining();
+                    if (length > 0) {
+
+                        /*
+                         * if a converter handles offsets and updates the offsets
+                         * pointer at the end, then offset should not change
+                         * here;
+                         * however, some converters do not handle offsets at all
+                         * (sourceIndex<0) or may not update the offsets pointer
+                         */
+                 /*       offsets.position(offsets.position() + length);
+                    }
+
+                    if (sourceIndex >= 0) {
+                        sourceIndex += (int) (source.position());
+                    }
+                } */
+
+                if (preFromULength < 0) {
+                    /*
+                     * switch the source to new replay units (cannot occur while replaying)
+                     * after offset handling and before end-of-input and callback handling
+                     */
+                    if (realSource == null) {
+                        realSource = source;
+                        realFlush = flush;
+
+                        //UConverterUtility.uprv_memcpy(replayArray, replayArrayIndex, preFromUArray, 0, -preFromULength*UMachine.U_SIZEOF_UCHAR);
+                        replayArray.put(preFromUArray, 0, -preFromULength);
+
+                        source = replayArray;
+                        source.position(replayArrayIndex);
+                        source.limit(replayArrayIndex - preFromULength);
+                        flush = false;
+                        if ((sourceIndex += preFromULength) < 0) {
+                            sourceIndex = -1;
+                        }
+
+                        preFromULength = 0;
+                    } else {
+                        /* see implementation note before _fromUnicodeWithCallback() */
+                        //agljport:todo U_ASSERT(realSource==NULL);
+                        Assert.assrt(realSource == null);
+                    }
+                }
+
+                /* update pointers */
+                sBufferIndex = source.position();
+                if (cr.isUnderflow()) {
+                    if (sBufferIndex < source.limit()) {
+                        /*
+                         * continue with the conversion loop while there is still input left
+                         * (continue converting by breaking out of only the inner loop)
+                         */
+                        break;
+                    } else if (realSource != null) {
+                        /* switch back from replaying to the real source and continue */
+                        source = realSource;
+                        flush = realFlush;
+                        sourceIndex = source.position();
+                        realSource = null;
+                        break;
+                    } else if (flush && fromUChar32 != 0) {
+                        /*
+                         * the entire input stream is consumed
+                         * and there is a partial, truncated input sequence left
+                         */
+
+                        /* inject an error and continue with callback handling */
+                        //err[0]=ErrorCode.U_TRUNCATED_CHAR_FOUND;
+                        cr = CoderResult.malformedForLength(1);
+                        calledCallback = false; /* new error condition */
+                    } else {
+                        /* input consumed */
+                        if (flush) {
+                            /*
+                             * return to the conversion loop once more if the flush
+                             * flag is set and the conversion function has not
+                             * successfully processed the end of the input yet
+                             *
+                             * (continue converting by breaking out of only the inner loop)
+                             */
+                            if (!converterSawEndOfInput) {
+                                break;
+                            }
+
+                            /* reset the converter without calling the callback function */
+                            implReset();
+                        }
+
+                        /* done successfully */
+                        return cr;
+                    }
+                }
+
+                /*U_FAILURE(*err) */
+                {
+
+                    if (calledCallback || cr.isOverflow()
+                            || (!cr.isMalformed() && !cr.isUnmappable())) {
+                        /*
+                         * the callback did not or cannot resolve the error:
+                         * set output pointers and return
+                         *
+                         * the check for buffer overflow is redundant but it is
+                         * a high-runner case and hopefully documents the intent
+                         * well
+                         *
+                         * if we were replaying, then the replay buffer must be
+                         * copied back into the UConverter
+                         * and the real arguments must be restored
+                         */
+                        if (realSource != null) {
+                            int length;
+
+                            //agljport:todo U_ASSERT(cnv.preFromULength==0);
+
+                            length = source.remaining();
+                            if (length > 0) {
+                                //UConverterUtility.uprv_memcpy(preFromUArray, 0, sourceArray, pArgs.sourceBegin, length*UMachine.U_SIZEOF_UCHAR);
+                                source.get(preFromUArray, 0, length);
+                                preFromULength = (byte) -length;
+                            }
+                            source = realSource;
+                            flush = realFlush;
+                        }
+                        return cr;
+                    }
+                }
+
+                /* callback handling */
+                {
+                    int codePoint;
+                    
+                    /* get and write the code point */
+                    codePoint = fromUChar32;
+                    errorInputLength = UTF16.append(invalidUCharBuffer, 0,
+                            fromUChar32);
+                    invalidUCharLength = errorInputLength;
+
+                    /* set the converter state to deal with the next character */
+                    fromUChar32 = 0;
+
+                    /* call the callback function */
+                    cr = fromCharErrorBehaviour.call(this, fromUContext,
+                            source, target, offsets, invalidUCharBuffer,
+                            invalidUCharLength, codePoint, cr);
+                }
+
+                /*
+                 * loop back to the offset handling
+                 *
+                 * this flag will indicate after offset handling
+                 * that a callback was called;
+                 * if the callback did not resolve the error, then we return
+                 */
+                calledCallback = true;
+            }
+        }
+    }
+
+    /*
+     * Ascertains if a given Unicode code point (32bit value for handling surrogates)
+     * can be converted to the target encoding. If the caller wants to test if a
+     * surrogate pair can be converted to target encoding then the
+     * responsibility of assembling the int value lies with the caller.
+     * For assembling a code point the caller can use UTF16 class of ICU4J and do something like:
+     * <pre>
+     *  while(i<mySource.length){
+     *      if(UTF16.isLeadSurrogate(mySource[i])&& i+1< mySource.length){
+     *          if(UTF16.isTrailSurrogate(mySource[i+1])){
+     *              int temp = UTF16.charAt(mySource,i,i+1,0);
+     *              if(!((CharsetEncoderICU) myConv).canEncode(temp)){
+     *                  passed=false;
+     *              }
+     *              i++;
+     *              i++;
+     *          }
+     *      }
+     *  }
+     * </pre>
+     * or
+     * <pre>
+     *  String src = new String(mySource);
+     *  int i,codepoint;
+     *  boolean passed = false;
+     *  while(i<src.length()){
+     *      codepoint = UTF16.charAt(src,i);
+     *      i+= (codepoint>0xfff)? 2:1;
+     *      if(!(CharsetEncoderICU) myConv).canEncode(codepoint)){
+     *          passed = false;
+     *      }
+     *  }
+     * </pre>
+     *
+     * @param codepoint Unicode code point as int value
+     * @return true if a character can be converted
+     */
+    /* TODO This is different from Java's canEncode(char) API.
+     * ICU's API should implement getUnicodeSet,
+     * and override canEncode(char) which queries getUnicodeSet.
+     * The getUnicodeSet should return a frozen UnicodeSet or use a fillin parameter, like ICU4C.
+     */
+    /*public boolean canEncode(int codepoint) {
+        return true;
+    }*/
+    /**
+     * Overrides super class method
+     * @stable ICU 3.6 
+     */
+    public boolean isLegalReplacement(byte[] repl) {
+        return true;
+    }
+
+    /*
+     * Writes out the specified output bytes to the target byte buffer or to converter internal buffers.
+     * @param cnv
+     * @param bytesArray
+     * @param bytesBegin
+     * @param bytesLength
+     * @param out
+     * @param offsets
+     * @param sourceIndex
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    static final CoderResult fromUWriteBytes(CharsetEncoderICU cnv,
+            byte[] bytesArray, int bytesBegin, int bytesLength, ByteBuffer out,
+            IntBuffer offsets, int sourceIndex) {
+
+        //write bytes
+        int obl = bytesLength;
+        CoderResult cr = CoderResult.UNDERFLOW;
+        int bytesLimit = bytesBegin + bytesLength;
+        try {
+            for (; bytesBegin < bytesLimit;) {
+                out.put(bytesArray[bytesBegin]);
+                bytesBegin++;
+            }
+            // success 
+            bytesLength = 0;
+        } catch (BufferOverflowException ex) {
+            cr = CoderResult.OVERFLOW;
+        }
+
+        if (offsets != null) {
+            while (obl > bytesLength) {
+                offsets.put(sourceIndex);
+                --obl;
+            }
+        }
+        //write overflow 
+        cnv.errorBufferLength = bytesLimit - bytesBegin;
+        if (cnv.errorBufferLength > 0) {
+            int index = 0;
+            while (bytesBegin < bytesLimit) {
+                cnv.errorBuffer[index++] = bytesArray[bytesBegin++];
+            }
+            cr = CoderResult.OVERFLOW;
+        }
+        return cr;
+    }
+
+    /*
+     * Returns the number of chars held in the converter's internal state
+     * because more input is needed for completing the conversion. This function is 
+     * useful for mapping semantics of ICU's converter interface to those of iconv,
+     * and this information is not needed for normal conversion.
+     * @return The number of chars in the state. -1 if an error is encountered.
+     */
+    /*public*/int fromUCountPending() {
+        if (preFromULength > 0) {
+            return UTF16.getCharCount(preFromUFirstCP) + preFromULength;
+        } else if (preFromULength < 0) {
+            return -preFromULength;
+        } else if (fromUChar32 > 0) {
+            return 1;
+        } else if (preFromUFirstCP > 0) {
+            return UTF16.getCharCount(preFromUFirstCP);
+        }
+        return 0;
+    }
+
+    /**
+     * 
+     * @param source
+     */
+    private final void setSourcePosition(CharBuffer source) {
+
+        // ok was there input held in the previous invocation of encodeLoop 
+        // that resulted in output in this invocation?
+        source.position(source.position() - fromUCountPending());
+    }
+
+    /*
+     * Write the codepage substitution character.
+     * Subclasses to override this method.
+     * For stateful converters, it is typically necessary to handle this
+     * specificially for the converter in order to properly maintain the state.
+     * @param source The input character buffer
+     * @param target The output byte buffer
+     * @param offsets
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    CoderResult cbFromUWriteSub(CharsetEncoderICU encoder, CharBuffer source,
+            ByteBuffer target, IntBuffer offsets) {
+        CharsetICU cs = (CharsetICU) encoder.charset();
+        byte[] sub = encoder.replacement();
+        if (cs.subChar1 != 0 && encoder.invalidUCharBuffer[0] <= 0xff) {
+            return CharsetEncoderICU.fromUWriteBytes(encoder,
+                    new byte[] { cs.subChar1 }, 0, 1, target, offsets, source
+                            .position());
+        } else {
+            return CharsetEncoderICU.fromUWriteBytes(encoder, sub, 0,
+                    sub.length, target, offsets, source.position());
+        }
+    }
+
+    /*
+     * Write the characters to target.
+     * @param source The input character buffer
+     * @param target The output byte buffer
+     * @param offsets
+     * @return A CoderResult object that contains the error result when an error occurs.
+     */
+    CoderResult cbFromUWriteUChars(CharsetEncoderICU encoder,
+            CharBuffer source, ByteBuffer target, IntBuffer offsets) {
+        CoderResult cr = CoderResult.UNDERFLOW;
+
+        /* This is a fun one.  Recursion can occur - we're basically going to
+         * just retry shoving data through the same converter. Note, if you got
+         * here through some kind of invalid sequence, you maybe should emit a
+         * reset sequence of some kind. Since this IS an actual conversion,
+         * take care that you've changed the callback or the data, or you'll
+         * get an infinite loop.
+         */
+
+        int oldTargetPosition = target.position();
+        int offsetIndex = source.position();
+
+        cr = encoder.encode(source, target, null, false); /* no offsets and no flush */
+
+        if (offsets != null) {
+            while (target.position() != oldTargetPosition) {
+                offsets.put(offsetIndex);
+                oldTargetPosition++;
+            }
+        }
+
+        /* Note, if you did something like used a stop subcallback, things would get interesting.
+         * In fact, here's where we want to return the partially consumed in-source!
+         */
+        if (cr.isOverflow()) {
+            /* Overflowed target. Now, we'll write into the charErrorBuffer.
+             * It's a fixed size. If we overflow it...Hm 
+             */
+
+            /* start the new target at the first free slot in the error buffer */
+            int errBuffLen = encoder.errorBufferLength;
+            ByteBuffer newTarget = ByteBuffer.wrap(encoder.errorBuffer);
+            newTarget.position(errBuffLen); /* set the position at the end of the error buffer */
+            encoder.errorBufferLength = 0;
+
+            encoder.encode(source, newTarget, null, false);
+
+            encoder.errorBuffer = newTarget.array();
+            encoder.errorBufferLength = newTarget.position();
+        }
+
+        return cr;
+    }
+
+    /**
+     * <p>
+     * Handles a common situation where a character has been read and it may be
+     * a lead surrogate followed by a trail surrogate. This method can change
+     * the source position and will modify fromUChar32.
+     * </p>
+     * 
+     * <p>
+     * If <code>null</code> is returned, then there was success in reading a
+     * surrogate pair, the codepoint is stored in <code>fromUChar32</code> and
+     * <code>fromUChar32</code> should be reset (to 0) after being read.
+     * </p>
+     * 
+     * @param source
+     *            The encoding source.
+     * @param lead
+     *            A character that may be the first in a surrogate pair.
+     * @return <code>CoderResult.malformedForLength(1)</code> or
+     *         <code>CoderResult.UNDERFLOW</code> if there is a problem, or
+     *         <code>null</code> if there isn't.
+     * @see handleSurrogates(CharBuffer, char)
+     * @see handleSurrogates(CharBuffer, int, char)
+     * @see handleSurrogates(char[], int, int, char)
+     */
+    final CoderResult handleSurrogates(CharBuffer source, char lead) {
+        if (!UTF16.isLeadSurrogate(lead)) {
+            fromUChar32 = lead;
+            return CoderResult.malformedForLength(1);
+        }
+
+        if (!source.hasRemaining()) {
+            fromUChar32 = lead;
+            return CoderResult.UNDERFLOW;
+        }
+
+        char trail = source.get();
+
+        if (!UTF16.isTrailSurrogate(trail)) {
+            fromUChar32 = lead;
+            source.position(source.position() - 1);
+            return CoderResult.malformedForLength(1);
+        }
+
+        fromUChar32 = UCharacter.getCodePoint(lead, trail);
+        return null;
+    }
+
+    /**
+     * <p>
+     * Same as <code>handleSurrogates(CharBuffer, char)</code>, but with arrays. As an added
+     * requirement, the calling method must also increment the index if this method returns
+     * <code>null</code>.
+     * </p>
+     * 
+     * 
+     * @param source
+     *            The encoding source.
+     * @param lead
+     *            A character that may be the first in a surrogate pair.
+     * @return <code>CoderResult.malformedForLength(1)</code> or
+     *         <code>CoderResult.UNDERFLOW</code> if there is a problem, or <code>null</code> if
+     *         there isn't.
+     * @see handleSurrogates(CharBuffer, char)
+     * @see handleSurrogates(CharBuffer, int, char)
+     * @see handleSurrogates(char[], int, int, char)
+     */
+    final CoderResult handleSurrogates(char[] sourceArray, int sourceIndex,
+            int sourceLimit, char lead) {
+        if (!UTF16.isLeadSurrogate(lead)) {
+            fromUChar32 = lead;
+            return CoderResult.malformedForLength(1);
+        }
+
+        if (sourceIndex >= sourceLimit) {
+            fromUChar32 = lead;
+            return CoderResult.UNDERFLOW;
+        }
+
+        char trail = sourceArray[sourceIndex];
+
+        if (!UTF16.isTrailSurrogate(trail)) {
+            fromUChar32 = lead;
+            return CoderResult.malformedForLength(1);
+        }
+
+        fromUChar32 = UCharacter.getCodePoint(lead, trail);
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetHZ.java b/src/com/ibm/icu/charset/CharsetHZ.java
new file mode 100644
index 0000000..3b0e02c
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetHZ.java
@@ -0,0 +1,352 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+class CharsetHZ extends CharsetICU {
+
+    private static final int UCNV_TILDE = 0x7E; /* ~ */
+    private static final int UCNV_OPEN_BRACE = 0x7B; /* { */
+    private static final int UCNV_CLOSE_BRACE = 0x7D; /* } */
+    private static final byte[] SB_ESCAPE = new byte[] { 0x7E, 0x7D };
+    private static final byte[] DB_ESCAPE = new byte[] { 0x7E, 0x7B };
+    private static final byte[] TILDE_ESCAPE = new byte[] { 0x7E, 0x7E };
+    private static final byte[] fromUSubstitution = new byte[] { (byte) 0x1A };
+
+    private CharsetMBCS gbCharset;
+    private boolean isEmptySegment;
+
+    public CharsetHZ(String icuCanonicalName, String canonicalName, String[] aliases) {
+        super(icuCanonicalName, canonicalName, aliases);
+        gbCharset = (CharsetMBCS) new CharsetProviderICU().charsetForName("GBK");
+
+        maxBytesPerChar = 4;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        
+        isEmptySegment = false;
+    }
+
+    class CharsetDecoderHZ extends CharsetDecoderICU {
+        CharsetMBCS.CharsetDecoderMBCS gbDecoder;
+        boolean isStateDBCS = false;
+
+        public CharsetDecoderHZ(CharsetICU cs) {
+            super(cs);
+            gbDecoder = (CharsetMBCS.CharsetDecoderMBCS) gbCharset.newDecoder();
+        }
+
+        protected void implReset() {
+            super.implReset();
+            gbDecoder.implReset();
+
+            isStateDBCS = false;
+            isEmptySegment = false;
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            byte[] tempBuf = new byte[2];
+            int targetUniChar = 0;
+            int mySourceChar = 0;
+
+            if (!source.hasRemaining())
+                return CoderResult.UNDERFLOW;
+            else if (!target.hasRemaining())
+                return CoderResult.OVERFLOW;
+
+            while (source.hasRemaining()) {
+
+                if (target.hasRemaining()) {
+
+                    // get the byte as unsigned
+                    mySourceChar = source.get() & 0xff;
+
+                    if (mode == UCNV_TILDE) {
+                        /* second byte after ~ */
+                        mode = 0;
+                        switch (mySourceChar) {
+                        case 0x0A:
+                            /* no output for ~\n (line-continuation marker) */
+                            continue;
+                        case UCNV_TILDE:
+                            if (offsets != null) {
+                                offsets.put(source.position() - 2);
+                            }
+                            target.put((char) mySourceChar);
+                            continue;
+                        case UCNV_OPEN_BRACE:
+                        case UCNV_CLOSE_BRACE:
+                            isStateDBCS = (mySourceChar == UCNV_OPEN_BRACE);
+                            if (isEmptySegment) {
+                                isEmptySegment = false; /* we are handling it, reset to avoid future spurious errors */
+                                this.toUBytesArray[0] = UCNV_TILDE;
+                                this.toUBytesArray[1] = (byte)mySourceChar;
+                                this.toULength = 2;
+                                return CoderResult.malformedForLength(1);
+                            }
+                            isEmptySegment = true;
+                            continue;
+                        default:
+                            /*
+                             * if the first byte is equal to TILDE and the trail byte is not a valid byte then it is an
+                             * error condition
+                             */
+                            mySourceChar |= 0x7e00;
+                            targetUniChar = 0xffff;
+                            isEmptySegment = false; /* different error here, reset this to avoid spurious future error */ 
+                            break;
+                        }
+                    } else if (isStateDBCS) {
+                        if (toUnicodeStatus == 0) {
+                            /* lead byte */
+                            if (mySourceChar == UCNV_TILDE) {
+                                mode = UCNV_TILDE;
+                            } else {
+                                /*
+                                 * add another bit to distinguish a 0 byte from not having seen a lead byte
+                                 */
+                                toUnicodeStatus = mySourceChar | 0x100;
+                                isEmptySegment = false; /* the segment has something, either valid or will produce a different error, so reset this */ 
+                            }
+                            continue;
+                        } else {
+                            /* trail byte */
+                            int leadByte = toUnicodeStatus & 0xff;
+                            if (0x21 <= leadByte && leadByte <= 0x7d && 0x21 <= mySourceChar && mySourceChar <= 0x7e) {
+                                tempBuf[0] = (byte) (leadByte + 0x80);
+                                tempBuf[1] = (byte) (mySourceChar + 0x80);
+                                targetUniChar = gbDecoder.simpleGetNextUChar(ByteBuffer.wrap(tempBuf), super.isFallbackUsed());
+                            } else {
+                                targetUniChar = 0xffff;
+                            }
+                            /*
+                             * add another bit so that the code below writes 2 bytes in case of error
+                             */
+                            mySourceChar |= 0x10000 | (leadByte << 8);
+                            toUnicodeStatus = 0;
+                        }
+                    } else {
+                        if (mySourceChar == UCNV_TILDE) {
+                            mode = UCNV_TILDE;
+                            continue;
+                        } else if (mySourceChar <= 0x7f) {
+                            targetUniChar = mySourceChar; /* ASCII */
+                            isEmptySegment = false; /* the segment has something valid */
+                        } else {
+                            targetUniChar = 0xffff;
+                            isEmptySegment = false; /* different error here, reset this to avoid spurious future error */
+                        }
+                    }
+
+                    if (targetUniChar < 0xfffe) {
+                        if (offsets != null) {
+                            offsets.put(source.position() - 1 - (isStateDBCS ? 1 : 0));
+                        }
+
+                        target.put((char) targetUniChar);
+                    } else /* targetUniChar >= 0xfffe */{
+                        if (mySourceChar > 0xff) {
+                            toUBytesArray[toUBytesBegin + 0] = (byte) (mySourceChar >> 8);
+                            toUBytesArray[toUBytesBegin + 1] = (byte) mySourceChar;
+                            toULength = 2;
+                        } else {
+                            toUBytesArray[toUBytesBegin + 0] = (byte) mySourceChar;
+                            toULength = 1;
+                        }
+                        if (targetUniChar == 0xfffe) {
+                            return CoderResult.unmappableForLength(toULength);
+                        } else {
+                            return CoderResult.malformedForLength(toULength);
+                        }
+                    }
+                } else {
+                    return CoderResult.OVERFLOW;
+                }
+            }
+
+            return CoderResult.UNDERFLOW;
+        }
+    }
+
+    class CharsetEncoderHZ extends CharsetEncoderICU {
+        CharsetMBCS.CharsetEncoderMBCS gbEncoder;
+        boolean isEscapeAppended = false;
+        boolean isTargetUCharDBCS = false;
+
+        public CharsetEncoderHZ(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            gbEncoder = (CharsetMBCS.CharsetEncoderMBCS) gbCharset.newEncoder();
+        }
+
+        protected void implReset() {
+            super.implReset();
+            gbEncoder.implReset();
+
+            isEscapeAppended = false;
+            isTargetUCharDBCS = false;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            int length = 0;
+            int[] targetUniChar = new int[] { 0 };
+            int mySourceChar = 0;
+            boolean oldIsTargetUCharDBCS = isTargetUCharDBCS;
+
+            if (!source.hasRemaining())
+                return CoderResult.UNDERFLOW;
+            else if (!target.hasRemaining())
+                return CoderResult.OVERFLOW;
+
+            if (fromUChar32 != 0 && target.hasRemaining()) {
+                CoderResult cr = handleSurrogates(source, (char) fromUChar32);
+                return (cr != null) ? cr : CoderResult.unmappableForLength(2);
+            }
+            /* writing the char to the output stream */
+            while (source.hasRemaining()) {
+                targetUniChar[0] = MISSING_CHAR_MARKER;
+                if (target.hasRemaining()) {
+
+                    mySourceChar = source.get();
+
+                    oldIsTargetUCharDBCS = isTargetUCharDBCS;
+                    if (mySourceChar == UCNV_TILDE) {
+                        /*
+                         * concatEscape(args, &myTargetIndex, &targetLength,"\x7E\x7E",err,2,&mySourceIndex);
+                         */
+                        concatEscape(source, target, offsets, TILDE_ESCAPE);
+                        continue;
+                    } else if (mySourceChar <= 0x7f) {
+                        length = 1;
+                        targetUniChar[0] = mySourceChar;
+                    } else {
+                        length = gbEncoder.fromUChar32(mySourceChar, targetUniChar, super.isFallbackUsed());
+
+                        /*
+                         * we can only use lead bytes 21..7D and trail bytes 21..7E
+                         */
+                        if (length == 2 && 0xa1a1 <= targetUniChar[0] && targetUniChar[0] <= 0xfdfe
+                                && 0xa1 <= (targetUniChar[0] & 0xff) && (targetUniChar[0] & 0xff) <= 0xfe) {
+                            targetUniChar[0] -= 0x8080;
+                        } else {
+                            targetUniChar[0] = MISSING_CHAR_MARKER;
+                        }
+                    }
+                    if (targetUniChar[0] != MISSING_CHAR_MARKER) {
+                        isTargetUCharDBCS = (targetUniChar[0] > 0x00FF);
+                        if (oldIsTargetUCharDBCS != isTargetUCharDBCS || !isEscapeAppended) {
+                            /* Shifting from a double byte to single byte mode */
+                            if (!isTargetUCharDBCS) {
+                                concatEscape(source, target, offsets, SB_ESCAPE);
+                                isEscapeAppended = true;
+                            } else { /*
+                                         * Shifting from a single byte to double byte mode
+                                         */
+                                concatEscape(source, target, offsets, DB_ESCAPE);
+                                isEscapeAppended = true;
+
+                            }
+                        }
+
+                        if (isTargetUCharDBCS) {
+                            if (target.hasRemaining()) {
+                                target.put((byte) (targetUniChar[0] >> 8));
+                                if (offsets != null) {
+                                    offsets.put(source.position() - 1);
+                                }
+                                if (target.hasRemaining()) {
+                                    target.put((byte) targetUniChar[0]);
+                                    if (offsets != null) {
+                                        offsets.put(source.position() - 1);
+                                    }
+                                } else {
+                                    errorBuffer[errorBufferLength++] = (byte) targetUniChar[0];
+                                    // *err = U_BUFFER_OVERFLOW_ERROR;
+                                }
+                            } else {
+                                errorBuffer[errorBufferLength++] = (byte) (targetUniChar[0] >> 8);
+                                errorBuffer[errorBufferLength++] = (byte) targetUniChar[0];
+                                // *err = U_BUFFER_OVERFLOW_ERROR;
+                            }
+
+                        } else {
+                            if (target.hasRemaining()) {
+                                target.put((byte) targetUniChar[0]);
+                                if (offsets != null) {
+                                    offsets.put(source.position() - 1);
+                                }
+
+                            } else {
+                                errorBuffer[errorBufferLength++] = (byte) targetUniChar[0];
+                                // *err = U_BUFFER_OVERFLOW_ERROR;
+                            }
+                        }
+
+                    } else {
+                        /* oops.. the code point is unassigned */
+                        /* Handle surrogates */
+                        /* check if the char is a First surrogate */
+
+                        if (UTF16.isSurrogate((char) mySourceChar)) {
+                            // use that handy handleSurrogates method everyone's been talking about!
+                            CoderResult cr = handleSurrogates(source, (char) mySourceChar);
+                            return (cr != null) ? cr : CoderResult.unmappableForLength(2);
+                        } else {
+                            /* callback(unassigned) for a BMP code point */
+                            // *err = U_INVALID_CHAR_FOUND;
+                            fromUChar32 = mySourceChar;
+                            return CoderResult.unmappableForLength(1);
+                        }
+                    }
+                } else {
+                    // *err = U_BUFFER_OVERFLOW_ERROR;
+                    return CoderResult.OVERFLOW;
+                }
+            }
+
+            return CoderResult.UNDERFLOW;
+        }
+
+        private CoderResult concatEscape(CharBuffer source, ByteBuffer target, IntBuffer offsets, byte[] strToAppend) {
+            CoderResult cr = null;
+            for (int i=0; i<strToAppend.length; i++) {
+                byte b = strToAppend[i];
+                if (target.hasRemaining()) {
+                    target.put(b);
+                    if (offsets != null)
+                        offsets.put(source.position() - 1);
+                } else {
+                    errorBuffer[errorBufferLength++] = b;
+                    cr = CoderResult.OVERFLOW;
+                }
+            }
+            return cr;
+        }
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderHZ(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderHZ(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        setFillIn.add(0,0x7f);
+       // CharsetMBCS mbcshz = (CharsetMBCS)CharsetICU.forNameICU("icu-internal-25546");
+        gbCharset.MBCSGetFilteredUnicodeSetForUnicode(gbCharset.sharedData, setFillIn, which, CharsetMBCS.UCNV_SET_FILTER_HZ);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetICU.java b/src/com/ibm/icu/charset/CharsetICU.java
new file mode 100644
index 0000000..86454ec
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetICU.java
@@ -0,0 +1,372 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+
+//import java.io.ByteArrayInputStream;
+//import java.io.InputStreamReader;
+import java.lang.reflect.Constructor;
+
+import java.lang.reflect.InvocationTargetException;
+import java.nio.charset.*;
+import java.util.HashMap;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * <p>A subclass of java.nio.Charset for providing implementation of ICU's charset converters.
+ * This API is used to convert codepage or character encoded data to and
+ * from UTF-16. You can open a converter with {@link Charset#forName } and {@link #forNameICU }. With that
+ * converter, you can get its properties, set options, convert your data.</p>
+ *
+ * <p>Since many software programs recogize different converter names for
+ * different types of converters, there are other functions in this API to
+ * iterate over the converter aliases. 
+ * 
+ * @stable ICU 3.6
+ */
+public abstract class CharsetICU extends Charset{
+
+     String icuCanonicalName;
+     String javaCanonicalName;
+     int options;
+
+     float  maxCharsPerByte;
+    
+     String name; /* +4: 60  internal name of the converter- invariant chars */
+
+     int codepage;               /* +64: 4 codepage # (now IBM-$codepage) */
+
+     byte platform;                /* +68: 1 platform of the converter (only IBM now) */
+     byte conversionType;          /* +69: 1 conversion type */
+
+     int minBytesPerChar;         /* +70: 1 Minimum # bytes per char in this codepage */
+     int maxBytesPerChar;         /* +71: 1 Maximum # bytes output per UChar in this codepage */
+
+     byte subChar[/*UCNV_MAX_SUBCHAR_LEN*/]; /* +72: 4  [note:  4 and 8 byte boundary] */
+     byte subCharLen;              /* +76: 1 */
+    
+     byte hasToUnicodeFallback;   /* +77: 1 UBool needs to be changed to UBool to be consistent across platform */
+     byte hasFromUnicodeFallback; /* +78: 1 */
+     short unicodeMask;            /* +79: 1  bit 0: has supplementary  bit 1: has single surrogates */
+     byte subChar1;               /* +80: 1  single-byte substitution character for IBM MBCS (0 if none) */
+     //byte reserved[/*19*/];           /* +81: 19 to round out the structure */
+     
+     
+    // typedef enum UConverterUnicodeSet {
+     /** 
+      * Parameter that select the set of roundtrippable Unicode code points. 
+      * @draft ICU 4.0
+      * @provisional This API might change or be removed in a future release.
+      */
+      public static final int ROUNDTRIP_SET=0; 
+      /**
+       * Select the set of Unicode code points with roundtrip or fallback mappings.
+       * Not supported at this point.
+       * @internal
+       * @deprecated This API is ICU internal only.
+       */
+      public static final int ROUNDTRIP_AND_FALLBACK_SET =1;
+      
+    //} UConverterUnicodeSet;
+     
+    /**
+     * 
+     * @param icuCanonicalName
+     * @param canonicalName
+     * @param aliases
+     * @stable ICU 3.6
+     */
+    protected CharsetICU(String icuCanonicalName, String canonicalName, String[] aliases) {
+        super(canonicalName,aliases);
+        if(canonicalName.length() == 0){
+            throw new IllegalCharsetNameException(canonicalName);
+        }
+        this.javaCanonicalName = canonicalName;
+        this.icuCanonicalName  = icuCanonicalName;
+    }
+    
+    /**
+     * Ascertains if a charset is a sub set of this charset
+     * Implements the abstract method of super class.
+     * @param cs charset to test
+     * @return true if the given charset is a subset of this charset
+     * @stable ICU 3.6
+     */
+    public boolean contains(Charset cs){
+        if (null == cs) {
+            return false;
+        } else if (this.equals(cs)) {
+            return true;
+        }
+        return false;
+    }
+    private static final HashMap algorithmicCharsets = new HashMap();
+    static{
+        algorithmicCharsets.put("LMBCS-1",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("BOCU-1",                "com.ibm.icu.charset.CharsetBOCU1" );
+        algorithmicCharsets.put("SCSU",                  "com.ibm.icu.charset.CharsetSCSU" ); 
+        algorithmicCharsets.put("US-ASCII",              "com.ibm.icu.charset.CharsetASCII" );
+        algorithmicCharsets.put("ISO-8859-1",            "com.ibm.icu.charset.Charset88591" );
+        algorithmicCharsets.put("UTF-16",                "com.ibm.icu.charset.CharsetUTF16" );
+        algorithmicCharsets.put("UTF-16BE",              "com.ibm.icu.charset.CharsetUTF16BE" );
+        algorithmicCharsets.put("UTF-16LE",              "com.ibm.icu.charset.CharsetUTF16LE" );
+        algorithmicCharsets.put("UTF16_OppositeEndian",  "com.ibm.icu.charset.CharsetUTF16LE" );
+        algorithmicCharsets.put("UTF16_PlatformEndian",  "com.ibm.icu.charset.CharsetUTF16" );
+        algorithmicCharsets.put("UTF-32",                "com.ibm.icu.charset.CharsetUTF32" );
+        algorithmicCharsets.put("UTF-32BE",              "com.ibm.icu.charset.CharsetUTF32BE" );
+        algorithmicCharsets.put("UTF-32LE",              "com.ibm.icu.charset.CharsetUTF32LE" );
+        algorithmicCharsets.put("UTF32_OppositeEndian",  "com.ibm.icu.charset.CharsetUTF32LE" );
+        algorithmicCharsets.put("UTF32_PlatformEndian",  "com.ibm.icu.charset.CharsetUTF32" );
+        algorithmicCharsets.put("UTF-8",                 "com.ibm.icu.charset.CharsetUTF8" );
+        algorithmicCharsets.put("CESU-8",                "com.ibm.icu.charset.CharsetCESU8" );
+        algorithmicCharsets.put("UTF-7",                 "com.ibm.icu.charset.CharsetUTF7" );
+        algorithmicCharsets.put("ISCII,version=0",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=1",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=2",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=3",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=4",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=5",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=6",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=7",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("ISCII,version=8",       "com.ibm.icu.charset.CharsetISCII" );
+        algorithmicCharsets.put("IMAP-mailbox-name",     "com.ibm.icu.charset.CharsetUTF7" );
+        algorithmicCharsets.put("HZ",                    "com.ibm.icu.charset.CharsetHZ" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=0",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=1",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=2",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=3",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ja,version=4",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=zh,version=0",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=zh,version=1",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ko,version=0",               "com.ibm.icu.charset.CharsetISO2022" );
+        algorithmicCharsets.put("ISO_2022,locale=ko,version=1",               "com.ibm.icu.charset.CharsetISO2022" );
+        }
+
+    /*public*/ static final Charset getCharset(String icuCanonicalName, String javaCanonicalName, String[] aliases){
+       String className = (String) algorithmicCharsets.get(icuCanonicalName);
+       if(className==null){
+           //all the cnv files are loaded as MBCS
+           className = "com.ibm.icu.charset.CharsetMBCS";
+       }
+       try{
+           CharsetICU conv = null;
+           Class cs = Class.forName(className);
+           Class[] paramTypes = new Class[]{ String.class, String.class,  String[].class};
+           final Constructor c = cs.getConstructor(paramTypes);
+           Object[] params = new Object[]{ icuCanonicalName, javaCanonicalName, aliases};
+           
+           // Run constructor
+           try {
+               Object obj = c.newInstance(params);
+               if(obj!=null && obj instanceof CharsetICU){
+                   conv = (CharsetICU)obj;
+                   return conv;
+               }
+           }catch (InvocationTargetException e) {
+               throw new UnsupportedCharsetException( icuCanonicalName+": "+"Could not load " + className+ ". Exception:" + e.getTargetException());    
+           }
+       }catch(ClassNotFoundException ex){
+       }catch(NoSuchMethodException ex){
+       }catch (IllegalAccessException ex){ 
+       }catch (InstantiationException ex){ 
+       }
+       throw new UnsupportedCharsetException( icuCanonicalName+": "+"Could not load " + className);    
+    }
+    
+    static final boolean isSurrogate(int c){
+        return (((c)&0xfffff800)==0xd800);
+    }
+    
+    /*
+     * Returns the default charset name 
+     */
+//    static final String getDefaultCharsetName(){
+//        String defaultEncoding = new InputStreamReader(new ByteArrayInputStream(new byte[0])).getEncoding();
+//        return defaultEncoding;
+//    }
+
+    /**
+     * Returns a charset object for the named charset.
+     * This method gurantee that ICU charset is returned when
+     * available.  If the ICU charset provider does not support
+     * the specified charset, then try other charset providers
+     * including the standard Java charset provider.
+     * 
+     * @param charsetName The name of the requested charset,
+     * may be either a canonical name or an alias
+     * @return A charset object for the named charset
+     * @throws IllegalCharsetNameException If the given charset name
+     * is illegal
+     * @throws UnsupportedCharsetException If no support for the
+     * named charset is available in this instance of th Java
+     * virtual machine
+     * @stable ICU 3.6
+     */
+    public static Charset forNameICU(String charsetName) throws IllegalCharsetNameException, UnsupportedCharsetException {
+        CharsetProviderICU icuProvider = new CharsetProviderICU();
+        CharsetICU cs = (CharsetICU) icuProvider.charsetForName(charsetName);
+        if (cs != null) {
+            return cs;
+        }
+        return Charset.forName(charsetName);
+    }
+
+//    /**
+//     * @see java.lang.Comparable#compareTo(java.lang.Object)
+//     * @stable 3.8
+//     */
+//    public int compareTo(Object otherObj) {
+//        if (!(otherObj instanceof CharsetICU)) {
+//            return -1;
+//        }
+//        return icuCanonicalName.compareTo(((CharsetICU)otherObj).icuCanonicalName);
+//    }
+
+    /**
+     * This follows ucnv.c method ucnv_detectUnicodeSignature() to detect the
+     * start of the stream for example U+FEFF (the Unicode BOM/signature
+     * character) that can be ignored.
+     * 
+     * Detects Unicode signature byte sequences at the start of the byte stream
+     * and returns number of bytes of the BOM of the indicated Unicode charset.
+     * 0 is returned when no Unicode signature is recognized.
+     * 
+     */
+    // TODO This should be proposed as CharsetDecoderICU API.
+//    static String detectUnicodeSignature(ByteBuffer source) {
+//        int signatureLength = 0; // number of bytes of the signature
+//        final int SIG_MAX_LEN = 5;
+//        String sigUniCharset = null; // states what unicode charset is the BOM
+//        int i = 0;
+//
+//        /*
+//         * initial 0xa5 bytes: make sure that if we read <SIG_MAX_LEN bytes we
+//         * don't misdetect something
+//         */
+//        byte start[] = { (byte) 0xa5, (byte) 0xa5, (byte) 0xa5, (byte) 0xa5,
+//                (byte) 0xa5 };
+//
+//        while (i < source.remaining() && i < SIG_MAX_LEN) {
+//            start[i] = source.get(i);
+//            i++;
+//        }
+//
+//        if (start[0] == (byte) 0xFE && start[1] == (byte) 0xFF) {
+//            signatureLength = 2;
+//            sigUniCharset = "UTF-16BE";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0xFF && start[1] == (byte) 0xFE) {
+//            if (start[2] == (byte) 0x00 && start[3] == (byte) 0x00) {
+//                signatureLength = 4;
+//                sigUniCharset = "UTF-32LE";
+//                source.position(signatureLength);
+//                return sigUniCharset;
+//            } else {
+//                signatureLength = 2;
+//                sigUniCharset = "UTF-16LE";
+//                source.position(signatureLength);
+//                return sigUniCharset;
+//            }
+//        } else if (start[0] == (byte) 0xEF && start[1] == (byte) 0xBB
+//                && start[2] == (byte) 0xBF) {
+//            signatureLength = 3;
+//            sigUniCharset = "UTF-8";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0x00 && start[1] == (byte) 0x00
+//                && start[2] == (byte) 0xFE && start[3] == (byte) 0xFF) {
+//            signatureLength = 4;
+//            sigUniCharset = "UTF-32BE";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0x0E && start[1] == (byte) 0xFE
+//                && start[2] == (byte) 0xFF) {
+//            signatureLength = 3;
+//            sigUniCharset = "SCSU";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0xFB && start[1] == (byte) 0xEE
+//                && start[2] == (byte) 0x28) {
+//            signatureLength = 3;
+//            sigUniCharset = "BOCU-1";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        } else if (start[0] == (byte) 0x2B && start[1] == (byte) 0x2F
+//                && start[2] == (byte) 0x76) {
+//
+//            if (start[3] == (byte) 0x38 && start[4] == (byte) 0x2D) {
+//                signatureLength = 5;
+//                sigUniCharset = "UTF-7";
+//                source.position(signatureLength);
+//                return sigUniCharset;
+//            } else if (start[3] == (byte) 0x38 || start[3] == (byte) 0x39
+//                    || start[3] == (byte) 0x2B || start[3] == (byte) 0x2F) {
+//                signatureLength = 4;
+//                sigUniCharset = "UTF-7";
+//                source.position(signatureLength);
+//                return sigUniCharset;
+//            }
+//        } else if (start[0] == (byte) 0xDD && start[2] == (byte) 0x73
+//                && start[2] == (byte) 0x66 && start[3] == (byte) 0x73) {
+//            signatureLength = 4;
+//            sigUniCharset = "UTF-EBCDIC";
+//            source.position(signatureLength);
+//            return sigUniCharset;
+//        }
+//
+//        /* no known Unicode signature byte sequence recognized */
+//        return null;
+//    }
+    
+    
+    abstract void getUnicodeSetImpl(UnicodeSet setFillIn, int which);
+    
+    /**
+    * <p>Returns the set of Unicode code points that can be converted by an ICU Converter. 
+    * <p>
+    * The current implementation returns only one kind of set (UCNV_ROUNDTRIP_SET): The set of all Unicode code points that can be 
+    * roundtrip-converted (converted without any data loss) with the converter This set will not include code points that have fallback 
+    * mappings or are only the result of reverse fallback mappings.  See UTR #22 "Character Mapping Markup Language" at  <a href="http://www.unicode.org/reports/tr22/">http://www.unicode.org/reports/tr22/</a>
+    * <p>* In the future, there may be more UConverterUnicodeSet choices to select sets with different properties.
+    * <p>
+    * <p>This is useful for example for
+    * <ul><li>checking that a string or document can be roundtrip-converted with a converter,
+    *   without/before actually performing the conversion</li>
+    * <li>testing if a converter can be used for text for typical text for a certain locale,
+    *   by comparing its roundtrip set with the set of ExemplarCharacters from
+    *   ICU's locale data or other sources</li></ul>
+    *
+    * @param setFillIn A valid UnicodeSet. It will be cleared by this function before 
+    *                   the converter's specific set is filled in.
+    * @param which A selector; currently ROUNDTRIP_SET is the only supported value.
+    * @throws IllegalArgumentException if the parameters does not match.              
+    * @draft ICU 4.0
+    * @provisional This API might change or be removed in a future release.
+    */
+       public void getUnicodeSet(UnicodeSet setFillIn, int which){
+           if( setFillIn == null || which != ROUNDTRIP_SET ){
+               throw new IllegalArgumentException();
+           }
+           setFillIn.clear();
+           getUnicodeSetImpl(setFillIn, which);
+       }
+      
+       static void getNonSurrogateUnicodeSet(UnicodeSet setFillIn){
+           setFillIn.add(0, 0xd7ff);
+           setFillIn.add(0xe000, 0x10ffff);
+       }
+       
+       static void getCompleteUnicodeSet(UnicodeSet setFillIn){
+           setFillIn.add(0, 0x10ffff);
+       }
+
+}
+
diff --git a/src/com/ibm/icu/charset/CharsetISCII.java b/src/com/ibm/icu/charset/CharsetISCII.java
new file mode 100644
index 0000000..e671a6b
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetISCII.java
@@ -0,0 +1,1456 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Michael Ow
+ *
+ */
+class CharsetISCII extends CharsetICU {
+    private static final short UCNV_OPTIONS_VERSION_MASK = 0X0f;
+    //private static final short NUKTA = 0x093c;
+    //private static final short HALANT = 0x094d;
+    private static final short ZWNJ = 0x200c; /* Zero Width Non Joiner */
+    private static final short ZWJ = 0x200d; /* Zero Width Joiner */
+    //private static final int   INVALID_CHAR = 0xffff;
+    private static final short ATR = 0xef; /* Attribute code */
+    private static final short EXT = 0xf0; /* Extension code */
+    private static final short DANDA = 0x0964;
+    private static final short DOUBLE_DANDA = 0x0965;
+    private static final short ISCII_NUKTA = 0xe9;
+    private static final short ISCII_HALANT = 0xe8;
+    private static final short ISCII_DANDA = 0xea;
+    private static final short ISCII_VOWEL_SIGN_E = 0xe0;
+    private static final short ISCII_INV = 0xd9;
+    private static final short INDIC_BLOCK_BEGIN = 0x0900;
+    private static final short INDIC_BLOCK_END = 0x0d7f;
+    private static final short INDIC_RANGE = (INDIC_BLOCK_END - INDIC_BLOCK_BEGIN);
+    private static final short VOCALLIC_RR = 0x0931;
+    private static final short LF = 0x0a;
+    private static final short ASCII_END = 0xa0;
+    private static final short TELUGU_DELTA = (UniLang.DELTA * UniLang.TELUGU);
+    private static final short DEV_ABBR_SIGN = 0x0970;
+    private static final short DEV_ANUDATTA = 0x0952;
+    private static final short EXT_RANGE_BEGIN = 0xa1;
+    private static final short EXT_RANGE_END = 0xee;
+    private static final short PNJ_DELTA = 0x100;
+    private static final int   NO_CHAR_MARKER = 0xfffe;
+    
+    /* Used for proper conversion to and from Gurmukhi */
+    private static UnicodeSet  PNJ_BINDI_TIPPI_SET;
+    private static UnicodeSet  PNJ_CONSONANT_SET;
+    private static final short PNJ_BINDI        = 0x0a02;
+    private static final short PNJ_TIPPI        = 0x0a70;
+    private static final short PNJ_SIGN_VIRAMA  = 0x0a4d;
+    private static final short PNJ_ADHAK        = 0x0a71;
+    private static final short PNJ_HA           = 0x0a39;
+    private static final short PNJ_RRA          = 0x0a5c;
+    
+    private static final class UniLang {
+        static final short DEVALANGARI = 0;
+        static final short BENGALI = DEVALANGARI + 1;
+        static final short GURMUKHI = BENGALI + 1;
+        static final short GUJARATI = GURMUKHI + 1;
+        static final short ORIYA = GUJARATI + 1;
+        static final short TAMIL = ORIYA + 1;
+        static final short TELUGU = TAMIL + 1;
+        static final short KANNADA = TELUGU + 1;
+        static final short MALAYALAM = KANNADA + 1;
+        static final short DELTA = 0x80;
+    }
+    
+    private static final class ISCIILang {
+        static final short DEF = 0x40;
+        static final short RMN = 0x41;
+        static final short DEV = 0x42;
+        static final short BNG = 0x43;
+        static final short TML = 0x44;
+        static final short TLG = 0x45;
+        static final short ASM = 0x46;
+        static final short ORI = 0x47;
+        static final short KND = 0x48;
+        static final short MLM = 0x49;
+        static final short GJR = 0x4a;
+        static final short PNJ = 0x4b;
+        static final short ARB = 0x71;
+        static final short PES = 0x72;
+        static final short URD = 0x73;
+        static final short SND = 0x74;
+        static final short KSM = 0x75;
+        static final short PST = 0x76;
+    }
+    
+    private static final class MaskEnum {
+        static final short DEV_MASK = 0x80;
+        static final short PNJ_MASK = 0x40;
+        static final short GJR_MASK = 0x20;
+        static final short ORI_MASK = 0x10;
+        static final short BNG_MASK = 0x08;
+        static final short KND_MASK = 0x04;
+        static final short MLM_MASK = 0x02;
+        static final short TML_MASK = 0x01;
+        static final short ZERO = 0x00;
+    }
+    
+    private final String ISCII_CNV_PREFIX = "ISCII,version=";
+    
+    private final class UConverterDataISCII {
+        int option;
+        int contextCharToUnicode;      /* previous Unicode codepoint for contextual analysis */
+        int contextCharFromUnicode;    /* previous Unicode codepoint for contextual analysis */
+        short defDeltaToUnicode;             /* delta for switching to default state when DEF is encountered */
+        short currentDeltaFromUnicode;   /* current delta in Indic block */
+        short currentDeltaToUnicode;         /* current delta in Indic block */
+        short currentMaskFromUnicode;    /* mask for current state in fromUnicode */
+        short currentMaskToUnicode;          /* mask for current state in toUnicode */
+        short defMaskToUnicode;           /* mask for default state in toUnicode */
+        boolean isFirstBuffer;          /* boolean for fromUnicode to see if we need to announce the first script */
+        boolean resetToDefaultToUnicode;    /* boolean for reseting to default delta and mask when a newline is encountered */
+        String name;
+        int prevToUnicodeStatus;        /* Hold the previous toUnicodeStatus. This is necessary because we may need to know the last two code points. */
+        
+        UConverterDataISCII(int option, String name) {
+            this.option = option;
+            this.name = name;
+            
+            initialize();
+        }
+        
+        void initialize() {          
+            this.contextCharToUnicode = NO_CHAR_MARKER; /* contextCharToUnicode */
+            this.currentDeltaFromUnicode = 0x0000; /* contextCharFromUnicode */
+            this.defDeltaToUnicode = (short)(lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].uniLang * UniLang.DELTA); /* defDeltaToUnicode */ 
+            this.currentDeltaFromUnicode = (short)(lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].uniLang * UniLang.DELTA); /* currentDeltaFromUnicode */ 
+            this.currentDeltaToUnicode = (short)(lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].uniLang * UniLang.DELTA); /* currentDeltaToUnicode */ 
+            this.currentMaskToUnicode = (short)lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].maskEnum; /* currentMaskToUnicode */
+            this.currentMaskFromUnicode = (short)lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].maskEnum; /* currentMaskFromUnicode */
+            this.defMaskToUnicode = (short)lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].maskEnum; /* defMaskToUnicode */
+            this.isFirstBuffer = true; /* isFirstBuffer */
+            this.resetToDefaultToUnicode = false; /* resetToDefaultToUnicode */   
+            this.prevToUnicodeStatus = 0x0000;
+        }
+    }
+    
+    private static final class LookupDataStruct {
+        short uniLang;
+        short maskEnum;
+        short isciiLang;
+        
+        LookupDataStruct(short uniLang, short maskEnum, short isciiLang) {
+            this.uniLang = uniLang;
+            this.maskEnum = maskEnum;
+            this.isciiLang = isciiLang;
+        }
+    }
+    
+    private static final LookupDataStruct [] lookupInitialData = {
+        new LookupDataStruct(UniLang.DEVALANGARI, MaskEnum.DEV_MASK, ISCIILang.DEV),
+        new LookupDataStruct(UniLang.BENGALI, MaskEnum.BNG_MASK, ISCIILang.BNG),
+        new LookupDataStruct(UniLang.GURMUKHI, MaskEnum.PNJ_MASK, ISCIILang.PNJ),
+        new LookupDataStruct(UniLang.GUJARATI, MaskEnum.GJR_MASK, ISCIILang.GJR),
+        new LookupDataStruct(UniLang.ORIYA, MaskEnum.ORI_MASK, ISCIILang.ORI),
+        new LookupDataStruct(UniLang.TAMIL, MaskEnum.TML_MASK, ISCIILang.TML),
+        new LookupDataStruct(UniLang.TELUGU, MaskEnum.KND_MASK, ISCIILang.TLG),
+        new LookupDataStruct(UniLang.KANNADA, MaskEnum.KND_MASK, ISCIILang.KND),
+        new LookupDataStruct(UniLang.MALAYALAM, MaskEnum.MLM_MASK, ISCIILang.MLM)
+    };
+    
+    /*
+     * The values in validity table are indexed by the lower bits of Unicode
+     * range 0x0900 - 0x09ff. The values have a structure like:
+     * -----------------------------------------------------------------
+     * |DEV | PNJ | GJR | ORI | BNG | TLG | MLM | TML |
+     * |    |    |    |    | ASM | KND |    |    |
+     * -----------------------------------------------------------------
+     * If a code point is valid in a particular script
+     * then that bit is turned on
+     * 
+     * Unicode does not distinguish between Bengali and Assamese aso we use 1 bit for
+     * to represent these languages
+     * 
+     * Telugu and Kannda have same codepoints except for Vocallic_RR which we special case
+     * and combine and use 1 bit to represent these languages
+     */
+    private static final short validityTable[] = {
+        /* This state table is tool generated so please do not edit unless you know exactly what you are doing */
+        /* Note:  This table was edited to mirror the Windows XP implementation */
+        /* ISCII: Valid: Unicode */
+        /* 0xa0: 0x00: 0x900 */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xa1: 0xb8: 0x901 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xa2: 0xfe: 0x902 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK, 
+        /* 0xa3: 0xbf: 0x903 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0x00: 0x00: 0x904 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xa4: 0xff: 0x905 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa5: 0xff: 0x906 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa6: 0xff: 0x907 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa7: 0xff: 0x908 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa8: 0xff: 0x909 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xa9: 0xff: 0x90a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xaa: 0xfe: 0x90b */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x90c */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xae: 0x80: 0x90d */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xab: 0x87: 0x90e */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xac: 0xff: 0x90f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xad: 0xff: 0x910 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb2: 0x80: 0x911 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xaf: 0x87: 0x912 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb0: 0xff: 0x913 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb1: 0xff: 0x914 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb3: 0xff: 0x915 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb4: 0xfe: 0x916 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xb5: 0xfe: 0x917 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xb6: 0xfe: 0x918 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xb7: 0xff: 0x919 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb8: 0xff: 0x91a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xb9: 0xfe: 0x91b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xba: 0xff: 0x91c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xbb: 0xfe: 0x91d */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xbc: 0xff: 0x91e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xbd: 0xff: 0x91f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xbe: 0xfe: 0x920 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xbf: 0xfe: 0x921 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc0: 0xfe: 0x922 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc1: 0xff: 0x923 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xc2: 0xff: 0x924 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xc3: 0xfe: 0x925 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc4: 0xfe: 0x926 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc5: 0xfe: 0x927 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xc6: 0xff: 0x928 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xc7: 0x81: 0x929 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.TML_MASK,
+        /* 0xc8: 0xff: 0x92a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xc9: 0xfe: 0x92b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xca: 0xfe: 0x92c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xcb: 0xfe: 0x92d */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xcc: 0xfe: 0x92e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xcd: 0xff: 0x92f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xcf: 0xff: 0x930 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd0: 0x87: 0x931 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd1: 0xff: 0x932 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd2: 0xb7: 0x933 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd3: 0x83: 0x934 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd4: 0xff: 0x935 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd5: 0xfe: 0x936 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0xd6: 0xbf: 0x937 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd7: 0xff: 0x938 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xd8: 0xff: 0x939 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0x00: 0x00: 0x93a */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x93b */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xe9: 0xda: 0x93c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x93d */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xda: 0xff: 0x93e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xdb: 0xff: 0x93f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xdc: 0xff: 0x940 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xdd: 0xff: 0x941 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xde: 0xff: 0x942 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xdf: 0xbe: 0x943 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x944 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xe3: 0x80: 0x945 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xe0: 0x87: 0x946 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe1: 0xff: 0x947 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe2: 0xff: 0x948 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe7: 0x80: 0x949 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xe4: 0x87: 0x94a */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe5: 0xff: 0x94b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe6: 0xff: 0x94c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xe8: 0xff: 0x94d */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xec: 0x00: 0x94e */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xed: 0x00: 0x94f */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x950 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x951 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x952 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x953 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x954 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x955 */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x956 */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.ZERO + MaskEnum.KND_MASK + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x957 */ MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x958 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x959 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95d */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x95e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xce: 0x98: 0x95f */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x960 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x961 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x962 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x963 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.BNG_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xea: 0xf8: 0x964 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xeaea: 0x00: 0x965 */ MaskEnum.DEV_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        /* 0xf1: 0xff: 0x966 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf2: 0xff: 0x967 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf3: 0xff: 0x968 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf4: 0xff: 0x969 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf5: 0xff: 0x96a */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf6: 0xff: 0x96b */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf7: 0xff: 0x96c */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf8: 0xff: 0x96d */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xf9: 0xff: 0x96e */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0xfa: 0xff: 0x96f */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.GJR_MASK + MaskEnum.ORI_MASK + MaskEnum.BNG_MASK + MaskEnum.KND_MASK + MaskEnum.MLM_MASK + MaskEnum.TML_MASK,
+        /* 0x00: 0x80: 0x970 */ MaskEnum.DEV_MASK + MaskEnum.PNJ_MASK + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO + MaskEnum.ZERO,
+        
+        /*
+         * The length of the array is 128 to provide values for 0x900..0x97f.
+         * The last 15 entries for 0x971..0x97f of the table are all zero
+         * because no Indic script uses such Unicode code points.
+         */
+        
+        /* 0x00: 0x00: 0x971 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x972 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x973 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x974 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x975 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x976 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x977 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x978 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x979 */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97A */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97B */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97C */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97D */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97E */ MaskEnum.ZERO,
+        /* 0x00: 0x00: 0x97F */ MaskEnum.ZERO,
+    };
+    
+    private static final char fromUnicodeTable[] = {
+      0x00a0, /* 0x0900 */ 
+      0x00a1, /* 0x0901 */
+      0x00a2, /* 0x0902 */
+      0x00a3, /* 0x0903 */
+      0xa4e0, /* 0x0904 */
+      0x00a4, /* 0x0905 */
+      0x00a5, /* 0x0906 */
+      0x00a6, /* 0x0907 */
+      0x00a7, /* 0x0908 */ 
+      0x00a8, /* 0x0909 */
+      0x00a9, /* 0x090a */
+      0x00aa, /* 0x090b */
+      0xA6E9, /* 0x090c */
+      0x00ae, /* 0x090d */
+      0x00ab, /* 0x090e */
+      0x00ac, /* 0x090f */
+      0x00ad, /* 0x0910 */ 
+      0x00b2, /* 0x0911 */
+      0x00af, /* 0x0912 */
+      0x00b0, /* 0x0913 */
+      0x00b1, /* 0x0914 */
+      0x00b3, /* 0x0915 */
+      0x00b4, /* 0x0916 */
+      0x00b5, /* 0x0917 */
+      0x00b6, /* 0x0918 */ 
+      0x00b7, /* 0x0919 */
+      0x00b8, /* 0x091a */
+      0x00b9, /* 0x091b */
+      0x00ba, /* 0x091c */
+      0x00bb, /* 0x091d */
+      0x00bc, /* 0x091e */
+      0x00bd, /* 0x091f */
+      0x00be, /* 0x0920 */ 
+      0x00bf, /* 0x0921 */
+      0x00c0, /* 0x0922 */
+      0x00c1, /* 0x0923 */
+      0x00c2, /* 0x0924 */
+      0x00c3, /* 0x0925 */
+      0x00c4, /* 0x0926 */
+      0x00c5, /* 0x0927 */
+      0x00c6, /* 0x0928 */ 
+      0x00c7, /* 0x0929 */
+      0x00c8, /* 0x092a */
+      0x00c9, /* 0x092b */
+      0x00ca, /* 0x092c */
+      0x00cb, /* 0x092d */
+      0x00cc, /* 0x092e */
+      0x00cd, /* 0x092f */
+      0x00cf, /* 0x0930 */ 
+      0x00d0, /* 0x0931 */
+      0x00d1, /* 0x0932 */
+      0x00d2, /* 0x0933 */
+      0x00d3, /* 0x0934 */
+      0x00d4, /* 0x0935 */
+      0x00d5, /* 0x0936 */
+      0x00d6, /* 0x0937 */
+      0x00d7, /* 0x0938 */ 
+      0x00d8, /* 0x0939 */
+      0xFFFF, /* 0x093a */
+      0xFFFF, /* 0x093b */
+      0x00e9, /* 0x093c */
+      0xEAE9, /* 0x093d */
+      0x00da, /* 0x093e */
+      0x00db, /* 0x093f */
+      0x00dc, /* 0x0940 */ 
+      0x00dd, /* 0x0941 */
+      0x00de, /* 0x0942 */
+      0x00df, /* 0x0943 */
+      0xDFE9, /* 0x0944 */
+      0x00e3, /* 0x0945 */
+      0x00e0, /* 0x0946 */
+      0x00e1, /* 0x0947 */
+      0x00e2, /* 0x0948 */ 
+      0x00e7, /* 0x0949 */
+      0x00e4, /* 0x094a */
+      0x00e5, /* 0x094b */
+      0x00e6, /* 0x094c */
+      0x00e8, /* 0x094d */
+      0x00ec, /* 0x094e */
+      0x00ed, /* 0x094f */
+      0xA1E9, /* 0x0950 */ /* OM Symbol */ 
+      0xFFFF, /* 0x0951 */
+      0xF0B8, /* 0x0952 */
+      0xFFFF, /* 0x0953 */
+      0xFFFF, /* 0x0954 */
+      0xFFFF, /* 0x0955 */
+      0xFFFF, /* 0x0956 */
+      0xFFFF, /* 0x0957 */
+      0xb3e9, /* 0x0958 */ 
+      0xb4e9, /* 0x0959 */
+      0xb5e9, /* 0x095a */
+      0xbae9, /* 0x095b */
+      0xbfe9, /* 0x095c */
+      0xC0E9, /* 0x095d */
+      0xc9e9, /* 0x095e */
+      0x00ce, /* 0x095f */
+      0xAAe9, /* 0x0960 */ 
+      0xA7E9, /* 0x0961 */
+      0xDBE9, /* 0x0962 */
+      0xDCE9, /* 0x0963 */
+      0x00ea, /* 0x0964 */
+      0xeaea, /* 0x0965 */
+      0x00f1, /* 0x0966 */
+      0x00f2, /* 0x0967 */
+      0x00f3, /* 0x0968 */ 
+      0x00f4, /* 0x0969 */
+      0x00f5, /* 0x096a */
+      0x00f6, /* 0x096b */
+      0x00f7, /* 0x096c */
+      0x00f8, /* 0x096d */
+      0x00f9, /* 0x096e */
+      0x00fa, /* 0x096f */
+      0xF0BF, /* 0x0970 */ 
+      0xFFFF, /* 0x0971 */
+      0xFFFF, /* 0x0972 */
+      0xFFFF, /* 0x0973 */
+      0xFFFF, /* 0x0974 */
+      0xFFFF, /* 0x0975 */
+      0xFFFF, /* 0x0976 */
+      0xFFFF, /* 0x0977 */
+      0xFFFF, /* 0x0978 */ 
+      0xFFFF, /* 0x0979 */
+      0xFFFF, /* 0x097a */
+      0xFFFF, /* 0x097b */
+      0xFFFF, /* 0x097c */
+      0xFFFF, /* 0x097d */
+      0xFFFF, /* 0x097e */
+      0xFFFF, /* 0x097f */
+    };
+    private static final char toUnicodeTable[] = {
+        0x0000, /* 0x00 */
+        0x0001, /* 0x01 */
+        0x0002, /* 0x02 */
+        0x0003, /* 0x03 */
+        0x0004, /* 0x04 */
+        0x0005, /* 0x05 */
+        0x0006, /* 0x06 */
+        0x0007, /* 0x07 */
+        0x0008, /* 0x08 */
+        0x0009, /* 0x09 */
+        0x000a, /* 0x0a */
+        0x000b, /* 0x0b */
+        0x000c, /* 0x0c */
+        0x000d, /* 0x0d */
+        0x000e, /* 0x0e */
+        0x000f, /* 0x0f */
+        0x0010, /* 0x10 */
+        0x0011, /* 0x11 */
+        0x0012, /* 0x12 */
+        0x0013, /* 0x13 */
+        0x0014, /* 0x14 */
+        0x0015, /* 0x15 */
+        0x0016, /* 0x16 */
+        0x0017, /* 0x17 */
+        0x0018, /* 0x18 */
+        0x0019, /* 0x19 */
+        0x001a, /* 0x1a */
+        0x001b, /* 0x1b */
+        0x001c, /* 0x1c */
+        0x001d, /* 0x1d */
+        0x001e, /* 0x1e */
+        0x001f, /* 0x1f */
+        0x0020, /* 0x20 */
+        0x0021, /* 0x21 */
+        0x0022, /* 0x22 */
+        0x0023, /* 0x23 */
+        0x0024, /* 0x24 */
+        0x0025, /* 0x25 */
+        0x0026, /* 0x26 */
+        0x0027, /* 0x27 */
+        0x0028, /* 0x28 */
+        0x0029, /* 0x29 */
+        0x002a, /* 0x2a */
+        0x002b, /* 0x2b */
+        0x002c, /* 0x2c */
+        0x002d, /* 0x2d */
+        0x002e, /* 0x2e */
+        0x002f, /* 0x2f */
+        0x0030, /* 0x30 */
+        0x0031, /* 0x31 */
+        0x0032, /* 0x32 */
+        0x0033, /* 0x33 */
+        0x0034, /* 0x34 */
+        0x0035, /* 0x35 */
+        0x0036, /* 0x36 */
+        0x0037, /* 0x37 */
+        0x0038, /* 0x38 */
+        0x0039, /* 0x39 */
+        0x003A, /* 0x3A */
+        0x003B, /* 0x3B */
+        0x003c, /* 0x3c */
+        0x003d, /* 0x3d */
+        0x003e, /* 0x3e */
+        0x003f, /* 0x3f */
+        0x0040, /* 0x40 */
+        0x0041, /* 0x41 */
+        0x0042, /* 0x42 */
+        0x0043, /* 0x43 */
+        0x0044, /* 0x44 */
+        0x0045, /* 0x45 */
+        0x0046, /* 0x46 */
+        0x0047, /* 0x47 */
+        0x0048, /* 0x48 */
+        0x0049, /* 0x49 */
+        0x004a, /* 0x4a */
+        0x004b, /* 0x4b */
+        0x004c, /* 0x4c */
+        0x004d, /* 0x4d */
+        0x004e, /* 0x4e */
+        0x004f, /* 0x4f */
+        0x0050, /* 0x50 */
+        0x0051, /* 0x51 */
+        0x0052, /* 0x52 */
+        0x0053, /* 0x53 */
+        0x0054, /* 0x54 */
+        0x0055, /* 0x55 */
+        0x0056, /* 0x56 */
+        0x0057, /* 0x57 */
+        0x0058, /* 0x58 */
+        0x0059, /* 0x59 */
+        0x005a, /* 0x5a */
+        0x005b, /* 0x5b */
+        0x005c, /* 0x5c */
+        0x005d, /* 0x5d */
+        0x005e, /* 0x5e */
+        0x005f, /* 0x5f */
+        0x0060, /* 0x60 */
+        0x0061, /* 0x61 */
+        0x0062, /* 0x62 */
+        0x0063, /* 0x63 */
+        0x0064, /* 0x64 */
+        0x0065, /* 0x65 */
+        0x0066, /* 0x66 */
+        0x0067, /* 0x67 */
+        0x0068, /* 0x68 */
+        0x0069, /* 0x69 */
+        0x006a, /* 0x6a */
+        0x006b, /* 0x6b */
+        0x006c, /* 0x6c */
+        0x006d, /* 0x6d */
+        0x006e, /* 0x6e */
+        0x006f, /* 0x6f */
+        0x0070, /* 0x70 */
+        0x0071, /* 0x71 */
+        0x0072, /* 0x72 */
+        0x0073, /* 0x73 */
+        0x0074, /* 0x74 */
+        0x0075, /* 0x75 */
+        0x0076, /* 0x76 */
+        0x0077, /* 0x77 */
+        0x0078, /* 0x78 */
+        0x0079, /* 0x79 */
+        0x007a, /* 0x7a */
+        0x007b, /* 0x7b */
+        0x007c, /* 0x7c */
+        0x007d, /* 0x7d */
+        0x007e, /* 0x7e */
+        0x007f, /* 0x7f */
+        0x0080, /* 0x80 */
+        0x0081, /* 0x81 */
+        0x0082, /* 0x82 */
+        0x0083, /* 0x83 */
+        0x0084, /* 0x84 */
+        0x0085, /* 0x85 */
+        0x0086, /* 0x86 */
+        0x0087, /* 0x87 */
+        0x0088, /* 0x88 */
+        0x0089, /* 0x89 */
+        0x008a, /* 0x8a */
+        0x008b, /* 0x8b */
+        0x008c, /* 0x8c */
+        0x008d, /* 0x8d */
+        0x008e, /* 0x8e */
+        0x008f, /* 0x8f */
+        0x0090, /* 0x90 */
+        0x0091, /* 0x91 */
+        0x0092, /* 0x92 */
+        0x0093, /* 0x93 */
+        0x0094, /* 0x94 */
+        0x0095, /* 0x95 */
+        0x0096, /* 0x96 */
+        0x0097, /* 0x97 */
+        0x0098, /* 0x98 */
+        0x0099, /* 0x99 */
+        0x009a, /* 0x9a */
+        0x009b, /* 0x9b */
+        0x009c, /* 0x9c */
+        0x009d, /* 0x9d */
+        0x009e, /* 0x9e */
+        0x009f, /* 0x9f */
+        0x00A0, /* 0xa0 */
+        0x0901, /* 0xa1 */
+        0x0902, /* 0xa2 */
+        0x0903, /* 0xa3 */
+        0x0905, /* 0xa4 */
+        0x0906, /* 0xa5 */
+        0x0907, /* 0xa6 */
+        0x0908, /* 0xa7 */
+        0x0909, /* 0xa8 */
+        0x090a, /* 0xa9 */
+        0x090b, /* 0xaa */
+        0x090e, /* 0xab */
+        0x090f, /* 0xac */
+        0x0910, /* 0xad */
+        0x090d, /* 0xae */
+        0x0912, /* 0xaf */
+        0x0913, /* 0xb0 */
+        0x0914, /* 0xb1 */
+        0x0911, /* 0xb2 */
+        0x0915, /* 0xb3 */
+        0x0916, /* 0xb4 */
+        0x0917, /* 0xb5 */
+        0x0918, /* 0xb6 */
+        0x0919, /* 0xb7 */
+        0x091a, /* 0xb8 */
+        0x091b, /* 0xb9 */
+        0x091c, /* 0xba */
+        0x091d, /* 0xbb */
+        0x091e, /* 0xbc */
+        0x091f, /* 0xbd */
+        0x0920, /* 0xbe */
+        0x0921, /* 0xbf */
+        0x0922, /* 0xc0 */
+        0x0923, /* 0xc1 */
+        0x0924, /* 0xc2 */
+        0x0925, /* 0xc3 */
+        0x0926, /* 0xc4 */
+        0x0927, /* 0xc5 */
+        0x0928, /* 0xc6 */
+        0x0929, /* 0xc7 */
+        0x092a, /* 0xc8 */
+        0x092b, /* 0xc9 */
+        0x092c, /* 0xca */
+        0x092d, /* 0xcb */
+        0x092e, /* 0xcc */
+        0x092f, /* 0xcd */
+        0x095f, /* 0xce */
+        0x0930, /* 0xcf */
+        0x0931, /* 0xd0 */
+        0x0932, /* 0xd1 */
+        0x0933, /* 0xd2 */
+        0x0934, /* 0xd3 */
+        0x0935, /* 0xd4 */
+        0x0936, /* 0xd5 */
+        0x0937, /* 0xd6 */
+        0x0938, /* 0xd7 */
+        0x0939, /* 0xd8 */
+        0x200D, /* 0xd9 */
+        0x093e, /* 0xda */
+        0x093f, /* 0xdb */
+        0x0940, /* 0xdc */
+        0x0941, /* 0xdd */
+        0x0942, /* 0xde */
+        0x0943, /* 0xdf */
+        0x0946, /* 0xe0 */
+        0x0947, /* 0xe1 */
+        0x0948, /* 0xe2 */
+        0x0945, /* 0xe3 */
+        0x094a, /* 0xe4 */
+        0x094b, /* 0xe5 */
+        0x094c, /* 0xe6 */
+        0x0949, /* 0xe7 */
+        0x094d, /* 0xe8 */
+        0x093c, /* 0xe9 */
+        0x0964, /* 0xea */
+        0xFFFF, /* 0xeb */
+        0xFFFF, /* 0xec */
+        0xFFFF, /* 0xed */
+        0xFFFF, /* 0xee */
+        0xFFFF, /* 0xef */
+        0xFFFF, /* 0xf0 */
+        0x0966, /* 0xf1 */
+        0x0967, /* 0xf2 */
+        0x0968, /* 0xf3 */
+        0x0969, /* 0xf4 */
+        0x096a, /* 0xf5 */
+        0x096b, /* 0xf6 */
+        0x096c, /* 0xf7 */
+        0x096d, /* 0xf8 */
+        0x096e, /* 0xf9 */
+        0x096f, /* 0xfa */
+        0xFFFF, /* 0xfb */
+        0xFFFF, /* 0xfc */
+        0xFFFF, /* 0xfd */
+        0xFFFF, /* 0xfe */
+        0xFFFF, /* 0xff */
+    };
+    private static final char nuktaSpecialCases[][] = {
+        { 16 /* length of array */ , 0 },
+        { 0xa6, 0x090c },
+        { 0xea, 0x093d },
+        { 0xdf, 0x0944 },
+        { 0xa1, 0x0950 },
+        { 0xb3, 0x0958 },
+        { 0xb4, 0x0959 },
+        { 0xb5, 0x095a },
+        { 0xba, 0x095b },
+        { 0xbf, 0x095c },
+        { 0xc0, 0x095d },
+        { 0xc9, 0x095e },
+        { 0xaa, 0x0960 },
+        { 0xa7, 0x0961 },
+        { 0xdb, 0x0962 },
+        { 0xdc, 0x0963 }
+    };
+    private static final char vowelSignESpecialCases[][] = {
+        { 2 /* length of array */ , 0 },
+        { 0xA4, 0x0904 }
+    };
+    
+    private static final short lookupTable[][] = {
+        { MaskEnum.ZERO, MaskEnum.ZERO }, /* DEFAULT */
+        { MaskEnum.ZERO, MaskEnum.ZERO }, /* ROMAN */
+        { UniLang.DEVALANGARI, MaskEnum.DEV_MASK },
+        { UniLang.BENGALI, MaskEnum.BNG_MASK },
+        { UniLang.TAMIL, MaskEnum.TML_MASK },
+        { UniLang.TELUGU, MaskEnum.KND_MASK },
+        { UniLang.BENGALI, MaskEnum.BNG_MASK },
+        { UniLang.ORIYA, MaskEnum.ORI_MASK },
+        { UniLang.KANNADA, MaskEnum.KND_MASK },
+        { UniLang.MALAYALAM, MaskEnum.MLM_MASK },
+        { UniLang.GUJARATI, MaskEnum.GJR_MASK },
+        { UniLang.GURMUKHI, MaskEnum.PNJ_MASK }
+    };
+    
+    private UConverterDataISCII extraInfo = null;
+    protected byte[] fromUSubstitution = new byte[]{(byte)0x1A};
+    
+    public CharsetISCII(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = 4; 
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        //get the version number of the ISCII converter
+        int option = Integer.parseInt(icuCanonicalName.substring(14));
+        
+        extraInfo = new UConverterDataISCII( 
+                            option,
+                            new String(ISCII_CNV_PREFIX + (option & UCNV_OPTIONS_VERSION_MASK))  /* name */
+                        );
+        
+        initializePNJSets();
+    }
+    
+    /* Initialize the two UnicodeSets use for proper Gurmukhi conversion if they have not already been created. */
+    private void initializePNJSets() {
+        if (PNJ_BINDI_TIPPI_SET != null && PNJ_CONSONANT_SET != null) {
+            return;
+        }
+        PNJ_BINDI_TIPPI_SET = new UnicodeSet();
+        PNJ_CONSONANT_SET = new UnicodeSet();
+        
+        PNJ_CONSONANT_SET.add(0x0a15, 0x0a28);
+        PNJ_CONSONANT_SET.add(0x0a2a, 0x0a30);
+        PNJ_CONSONANT_SET.add(0x0a35, 0x0a36);
+        PNJ_CONSONANT_SET.add(0x0a38, 0x0a39);
+        
+        PNJ_BINDI_TIPPI_SET.addAll(PNJ_CONSONANT_SET);
+        PNJ_BINDI_TIPPI_SET.add(0x0a05);
+        PNJ_BINDI_TIPPI_SET.add(0x0a07);
+        
+        PNJ_BINDI_TIPPI_SET.add(0x0a41, 0x0a42);
+        PNJ_BINDI_TIPPI_SET.add(0x0a3f);
+        
+        PNJ_CONSONANT_SET.compact();
+        PNJ_BINDI_TIPPI_SET.compact();
+    }
+    
+    /*
+     * Rules for ISCII to Unicode converter
+     * ISCII is a stateful encoding. To convert ISCII bytes to Unicode,
+     * which is both precomposed and decomposed from characters
+     * pre-context and post-context need to be considered.
+     * 
+     * Post context
+     * i) ATR : Attribute code is used to declare the font and script switching.
+     *    Currently we only switch scripts and font codes consumed without generating an error
+     * ii) EXT : Extention code is used to declare switching to Sanskrit and for obscure,
+     *     obsolete characters
+     * Pre context
+     * i) Halant: if preceeded by a halant then it is a explicit halant
+     * ii) Nukta:
+     *     a) if preceeded by a halant then it is a soft halant
+     *     b) if preceeded by specific consonants and the ligatures have pre-composed
+     *        characters in Unicode then convert to pre-composed characters
+     * iii) Danda: If Danda is preceeded by a Danda then convert to Double Danda 
+     */
+    class CharsetDecoderISCII extends CharsetDecoderICU {
+        public CharsetDecoderISCII(CharsetICU cs) {
+            super(cs);
+            implReset();
+        }
+    
+        protected void implReset() {
+            super.implReset();
+            this.toUnicodeStatus = 0xFFFF;
+            extraInfo.initialize();
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) { 
+            CoderResult cr = CoderResult.UNDERFLOW;
+            int targetUniChar = 0x0000;
+            short sourceChar = 0x0000;
+            UConverterDataISCII data;
+            boolean gotoCallBack = false;
+            int offset = 0;
+            
+            data = extraInfo;
+            //data.contextCharToUnicode; /* contains previous ISCII codepoint visited */
+            //this.toUnicodeStatus; /* contains the mapping to Unicode of the above codepoint */
+            
+            while (source.hasRemaining()) {
+                targetUniChar = UConverterConstants.missingCharMarker;
+                
+                if (target.hasRemaining()) {
+                    sourceChar = (short)((short)source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                    
+                    /* look at the post-context perform special processing */
+                    if (data.contextCharToUnicode == ATR) {
+                        /* If we have ATR in data.contextCharToUnicode then we need to change our
+                         * state to Indic Script specified by sourceChar
+                         */
+                        /* check if the sourceChar is supported script range */
+                        if (((short)(ISCIILang.PNJ - sourceChar) & UConverterConstants.UNSIGNED_BYTE_MASK) <= (ISCIILang.PNJ - ISCIILang.DEV)) {
+                            data.currentDeltaToUnicode = (short)(lookupTable[sourceChar & 0x0F][0] * UniLang.DELTA);
+                            data.currentMaskToUnicode = lookupTable[sourceChar & 0x0F][1];
+                        } else if (sourceChar == ISCIILang.DEF) {
+                            /* switch back to default */
+                            data.currentDeltaToUnicode = data.defDeltaToUnicode;
+                            data.currentMaskToUnicode = data.defMaskToUnicode;
+                        } else {
+                            if ((sourceChar >= 0x21 && sourceChar <= 0x3F)) {
+                                /* these are display codes consume and continue */
+                            } else {
+                                cr = CoderResult.malformedForLength(1);
+                                /* reset */
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                                gotoCallBack = true;
+                            }
+                        }
+                        /* reset */
+                        if (!gotoCallBack) {
+                            data.contextCharToUnicode = NO_CHAR_MARKER;
+                            continue;
+                        }
+                    } else if (data.contextCharToUnicode == EXT) {
+                        /* check if sourceChar is in 0xA1 - 0xEE range */
+                        if (((short)(EXT_RANGE_END - sourceChar) & UConverterConstants.UNSIGNED_BYTE_MASK) <= (EXT_RANGE_END - EXT_RANGE_BEGIN)) {
+                            /* We currently support only Anudatta and Devanagari abbreviation sign */
+                            if (sourceChar == 0xBF || sourceChar == 0xB8) {
+                                targetUniChar = (sourceChar == 0xBF) ? DEV_ABBR_SIGN : DEV_ANUDATTA;
+                                
+                                /* find out if the mappling is valid in this state */
+                                if ((validityTable[((short)targetUniChar) & UConverterConstants.UNSIGNED_BYTE_MASK] & data.currentMaskToUnicode) > 0) {
+                                    data.contextCharToUnicode = NO_CHAR_MARKER;
+                                    
+                                    /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                                    if (data.prevToUnicodeStatus != 0) {
+                                        cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                                        data.prevToUnicodeStatus = 0x0000;
+                                    }
+                                    /* write to target */
+                                    cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, targetUniChar, data.currentDeltaToUnicode);
+                                    
+                                    continue;
+                                }
+                            }
+                            /* byte unit is unassigned */
+                            targetUniChar = UConverterConstants.missingCharMarker;
+                            cr = CoderResult.unmappableForLength(1);
+                        } else {
+                            /* only 0xA1 - 0xEE are legal after EXT char */
+                            data.contextCharToUnicode = NO_CHAR_MARKER;
+                            cr = CoderResult.malformedForLength(1); 
+                        }
+                        gotoCallBack = true;
+                    } else if (data.contextCharToUnicode == ISCII_INV) {
+                        if (sourceChar == ISCII_HALANT) {
+                            targetUniChar = 0x0020; /* replace with space according to Indic FAQ */
+                        } else {
+                            targetUniChar = ZWJ;
+                        }
+                        
+                        /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                        if (data.prevToUnicodeStatus != 0) {
+                            cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                            data.prevToUnicodeStatus = 0x0000;
+                        }
+                        
+                        /* write to target */
+                        cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, targetUniChar, data.currentDeltaToUnicode);
+                        /* reset */
+                        data.contextCharToUnicode = NO_CHAR_MARKER;
+                    }
+                    
+                    /* look at the pre-context and perform special processing */
+                    if (!gotoCallBack) {
+                        switch (sourceChar) {
+                        case ISCII_INV:
+                        case EXT: /* falls through */
+                        case ATR:
+                            data.contextCharToUnicode = (char)sourceChar;
+                            
+                            if (this.toUnicodeStatus != UConverterConstants.missingCharMarker) {
+                                /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                                if (data.prevToUnicodeStatus != 0) {
+                                    cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                                    data.prevToUnicodeStatus = 0x0000;
+                                }
+                                cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, this.toUnicodeStatus, data.currentDeltaToUnicode); 
+                                this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                            }
+                            continue;
+                        case ISCII_DANDA:
+                            /* handle double danda */
+                            if (data.contextCharToUnicode == ISCII_DANDA) {
+                                targetUniChar = DOUBLE_DANDA;
+                                /* clear the context */
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                                this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                            } else {
+                                targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                                data.contextCharToUnicode = (char)sourceChar;
+                            }
+                            break;
+                        case ISCII_HALANT:
+                            /* handle explicit halant */
+                            if (data.contextCharToUnicode == ISCII_HALANT) {
+                                targetUniChar = ZWNJ;
+                                /* clear context */
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                            } else {
+                                targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                                data.contextCharToUnicode = (char)sourceChar;
+                            }
+                            break;
+                        case 0x0A:
+                            /* fall through */
+                        case 0x0D:
+                            data.resetToDefaultToUnicode = true;
+                            targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                            data.contextCharToUnicode = (char)sourceChar;
+                            break;
+                        case ISCII_VOWEL_SIGN_E:
+                            /* find <CHAR> + SIGN_VOWEL_E special mapping */
+                            int n = 1;
+                            boolean find = false;
+                            for (; n < vowelSignESpecialCases[0][0]; n++) {
+                                if (vowelSignESpecialCases[n][0] == ((short)data.contextCharToUnicode & UConverterConstants.UNSIGNED_BYTE_MASK)) {
+                                    targetUniChar = vowelSignESpecialCases[n][1];
+                                    find = true;
+                                    break;
+                                }
+                            }
+                            if (find) {
+                                /* find out if the mapping is valid in this state */
+                                if ((validityTable[(byte)targetUniChar] & data.currentMaskFromUnicode) > 0) {
+                                    data.contextCharToUnicode = NO_CHAR_MARKER;
+                                    this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                                    break;
+                                }
+                            }
+                            targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                            data.contextCharToUnicode = (char)sourceChar;
+                            break;                         
+                        case ISCII_NUKTA:
+                            /* handle soft halant */
+                            if (data.contextCharToUnicode == ISCII_HALANT) {
+                                targetUniChar = ZWJ;
+                                /* clear the context */
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                                break;
+                            } else if (data.currentDeltaToUnicode == PNJ_DELTA && data.contextCharToUnicode == 0xc0) {
+                                /* We got here because ISCII_NUKTA was preceded by 0xc0 and we are converting Gurmukhi.
+                                 * In that case we must convert (0xc0 0xe9) to (\u0a5c\u0a4d\u0a39).
+                                 * WriteToTargetToU is given 0x095c instead of 0xa5c because that method will automatically
+                                 * convert the code point given based on the delta provided.
+                                 */
+                                cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, PNJ_RRA, (short)0);
+                                if (!cr.isOverflow()) {
+                                    cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, PNJ_SIGN_VIRAMA, (short)0);
+                                    if (!cr.isOverflow()) {
+                                        cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, PNJ_HA, (short)0);
+                                    } else {
+                                        this.charErrorBufferArray[this.charErrorBufferLength++] = PNJ_HA;
+                                    }
+                                } else {
+                                    this.charErrorBufferArray[this.charErrorBufferLength++] = PNJ_SIGN_VIRAMA;
+                                    this.charErrorBufferArray[this.charErrorBufferLength++] = PNJ_HA;
+                                }
+                                this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                                data.contextCharToUnicode = NO_CHAR_MARKER;
+                                if (!cr.isError()) {
+                                    continue;
+                                }
+                                break;
+                            } else {
+                                /* try to handle <CHAR> + ISCII_NUKTA special mappings */
+                                int i = 1;
+                                boolean found = false;
+                                for (; i < nuktaSpecialCases[0][0]; i++) {
+                                    if (nuktaSpecialCases[i][0] == ((short)data.contextCharToUnicode & UConverterConstants.UNSIGNED_BYTE_MASK)) {
+                                        targetUniChar  = nuktaSpecialCases[i][1];
+                                        found = true;
+                                        break;
+                                    }
+                                }
+                                if (found) {
+                                    /* find out if the mapping is valid in this state */
+                                    if ((validityTable[(byte)targetUniChar] & data.currentMaskToUnicode) > 0) {
+                                        data.contextCharToUnicode = NO_CHAR_MARKER;
+                                        this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                                        if (data.currentDeltaToUnicode == PNJ_DELTA) {
+                                            /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                                            if (data.prevToUnicodeStatus != 0) {
+                                                cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                                                data.prevToUnicodeStatus = 0x0000;
+                                            }
+                                            cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, targetUniChar, data.currentDeltaToUnicode);
+                                            continue;
+                                        }
+                                        break;
+                                    }
+                                    /* else fall through to default */
+                                }
+                                /* else fall through to default */
+                            }
+                        
+                        default:
+                            targetUniChar = GetMapping(sourceChar, targetUniChar, data);
+                            data.contextCharToUnicode = (char)sourceChar;
+                            break;
+                        } //end of switch
+                    }//end of CallBack if statement
+                    
+                    if (!gotoCallBack && this.toUnicodeStatus != UConverterConstants.missingCharMarker) {
+                        /* Check to make sure that consonant clusters are handled correctly for Gurmukhi script. */
+                        if (data.currentDeltaToUnicode == PNJ_DELTA && data.prevToUnicodeStatus != 0 && PNJ_CONSONANT_SET.contains(data.prevToUnicodeStatus) &&
+                                (this.toUnicodeStatus + PNJ_DELTA) == PNJ_SIGN_VIRAMA && (targetUniChar + PNJ_DELTA) == data.prevToUnicodeStatus) {
+                            if (offsets != null) {
+                                offset = source.position() - 3;
+                            }
+                            cr = WriteToTargetToU(offsets, offset, source, target, PNJ_ADHAK, (short)0);
+                            cr = WriteToTargetToU(offsets, offset, source, target, data.prevToUnicodeStatus, (short)0);
+                            data.prevToUnicodeStatus = 0x0000; /* reset the previous unicode code point */
+                            toUnicodeStatus = UConverterConstants.missingCharMarker;
+                            continue;
+                        } else {
+                            /* Write the previous toUnicodeStatus, this was delayed to handle consonant clustering for Gurmukhi script. */
+                            if (data.prevToUnicodeStatus != 0) {
+                                cr = WriteToTargetToU(offsets, (source.position() - 1), source, target, data.prevToUnicodeStatus, (short)0);
+                                data.prevToUnicodeStatus = 0x0000;
+                            }
+                            /* Check to make sure that Bindi and Tippi are handled correctly for Gurmukhi script. 
+                             * If 0xA2 is preceded by a codepoint in the PNJ_BINDI_TIPPI_SET then the target codepoint should be Tippi instead of Bindi.
+                             */
+                            if (data.currentDeltaToUnicode == PNJ_DELTA  && (targetUniChar + PNJ_DELTA) == PNJ_BINDI && PNJ_BINDI_TIPPI_SET.contains(this.toUnicodeStatus + PNJ_DELTA)) {
+                                targetUniChar = PNJ_TIPPI - PNJ_DELTA;
+                                cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, this.toUnicodeStatus, PNJ_DELTA);
+                            } else if (data.currentDeltaToUnicode == PNJ_DELTA && (targetUniChar + PNJ_DELTA) == PNJ_SIGN_VIRAMA && PNJ_CONSONANT_SET.contains(this.toUnicodeStatus + PNJ_DELTA)) {
+                                /* Store the current toUnicodeStatus code point for later handling of consonant cluster in Gurmukhi. */
+                                data.prevToUnicodeStatus = this.toUnicodeStatus + PNJ_DELTA;
+                            } else {
+                                /* write the previously mapped codepoint */
+                                cr = WriteToTargetToU(offsets, (source.position() - 2), source, target, this.toUnicodeStatus, data.currentDeltaToUnicode);
+                            }
+                        }
+                        this.toUnicodeStatus = UConverterConstants.missingCharMarker;
+                    }
+                    
+                    if (!gotoCallBack && targetUniChar != UConverterConstants.missingCharMarker) {
+                        /* now save the targetUniChar for delayed write */
+                        this.toUnicodeStatus = (char)targetUniChar;
+                        if (data.resetToDefaultToUnicode) {
+                            data.currentDeltaToUnicode = data.defDeltaToUnicode;
+                            data.currentMaskToUnicode = data.defMaskToUnicode;
+                            data.resetToDefaultToUnicode = false;
+                        }
+                    } else {
+                        /* we reach here only if targetUniChar == missingCharMarker
+                         * so assign codes to reason and err
+                         */
+                        if (!gotoCallBack) {
+                            cr = CoderResult.unmappableForLength(1);
+                        }
+//CallBack :
+                        toUBytesArray[0] = (byte)sourceChar;
+                        toULength = 1;
+                        gotoCallBack = false;
+                        break;
+                    }
+                } else {
+                    cr = CoderResult.OVERFLOW;
+                    break;
+                }
+                
+            } //end of while
+            
+            if (cr.isUnderflow() && flush && !source.hasRemaining()) {
+                /*end of the input stream */
+                if (data.contextCharToUnicode == ATR || data.contextCharToUnicode == EXT || data.contextCharToUnicode == ISCII_INV) {
+                    /* set toUBytes[] */
+                    toUBytesArray[0] = (byte)data.contextCharToUnicode;
+                    toULength = 1;
+                    
+                    /* avoid looping on truncated sequences */
+                    data.contextCharToUnicode = NO_CHAR_MARKER;
+                } else {
+                    toULength = 0;
+                }
+                
+                if (this.toUnicodeStatus != UConverterConstants.missingCharMarker) {
+                    /* output a remaining target character */
+                    WriteToTargetToU(offsets, (source.position() - 2), source, target, this.toUnicodeStatus, data.currentDeltaToUnicode);
+                    this.toUnicodeStatus = UConverterConstants.missingCharMarker;    
+                }
+            }
+            return cr;
+        }
+        
+        private CoderResult WriteToTargetToU(IntBuffer offsets, int offset, ByteBuffer source, CharBuffer target, int targetUniChar, short delta) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+            /* add offset to current Indic Block */
+            if (targetUniChar > ASCII_END &&
+                    targetUniChar != ZWJ &&
+                    targetUniChar != ZWNJ &&
+                    targetUniChar != DANDA &&
+                    targetUniChar != DOUBLE_DANDA) {
+                targetUniChar += delta;
+            }
+            
+            /* now write the targetUniChar */
+            if (target.hasRemaining()) {
+                target.put((char)targetUniChar);
+                if (offsets != null) {
+                    offsets.put(offset);
+                }
+            } else {
+                charErrorBufferArray[charErrorBufferLength++] = (char)targetUniChar;
+                cr = CoderResult.OVERFLOW;
+            }
+            return cr;
+        }
+        
+        private int GetMapping(short sourceChar, int targetUniChar, UConverterDataISCII data) {
+            targetUniChar = toUnicodeTable[sourceChar];
+            /* is the code point valid in current script? */
+            if (sourceChar > ASCII_END &&
+                    (validityTable[(short)targetUniChar & UConverterConstants.UNSIGNED_BYTE_MASK] & data.currentMaskToUnicode) == 0) {
+                /* Vocallic RR is assigne in ISCII Telugu and Unicode */
+                if (data.currentDeltaToUnicode != (TELUGU_DELTA) || targetUniChar != VOCALLIC_RR) {
+                    targetUniChar = UConverterConstants.missingCharMarker;
+                }
+            }
+            return targetUniChar;
+        }
+    }
+    
+    /*
+     * Rules:
+     *   Explicit Halant :
+     *     <HALANT> + <ZWNJ>
+     *   Soft Halant :
+     *     <HALANT> + <ZWJ>
+     */
+    class CharsetEncoderISCII extends CharsetEncoderICU {
+        public CharsetEncoderISCII(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            extraInfo.initialize();
+        }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            int targetByteUnit = 0x0000;
+            int sourceChar = 0x0000;
+            UConverterDataISCII converterData;
+            short newDelta = 0;
+            short range = 0;
+            boolean deltaChanged = false;
+            int tempContextFromUnicode = 0x0000;    /* For special handling of the Gurmukhi script. */
+            CoderResult cr = CoderResult.UNDERFLOW;
+            
+            /* initialize data */
+            converterData = extraInfo;
+            newDelta = converterData.currentDeltaFromUnicode;
+            range = (short)(newDelta / UniLang.DELTA);
+            
+            if ((sourceChar = fromUChar32) != 0) {
+                cr = handleSurrogates(source, (char) sourceChar);
+                return (cr != null) ? cr : CoderResult.unmappableForLength(2);
+            }
+            
+            /* writing the char to the output stream */
+            while (source.hasRemaining()) {
+                if (!target.hasRemaining()) {
+                    return CoderResult.OVERFLOW;
+                }
+                
+                /* Write the language code following LF only if LF is not the last character. */
+                if (fromUnicodeStatus == LF) {
+                    targetByteUnit = ATR << 8;
+                    targetByteUnit += (byte)lookupInitialData[range].isciiLang;
+                    fromUnicodeStatus = 0x0000;
+                    /* now append ATR and language code */
+                    cr = WriteToTargetFromU(offsets, source, target, targetByteUnit);
+                    if (cr.isOverflow()) {
+                        break;
+                    }
+                }
+                
+                sourceChar = source.get();
+                tempContextFromUnicode = converterData.contextCharFromUnicode;
+                
+                targetByteUnit = UConverterConstants.missingCharMarker;
+                
+                /* check if input is in ASCII and C0 control codes range */
+                if (sourceChar <= ASCII_END) {
+                    fromUnicodeStatus = sourceChar;
+                    cr = WriteToTargetFromU(offsets, source, target, sourceChar);
+                    if (cr.isOverflow()) {
+                        break;
+                    }
+                    continue;
+                }
+                
+                switch (sourceChar) {
+                case ZWNJ:
+                    /* contextChar has HALANT */
+                    if (converterData.contextCharFromUnicode != 0) {
+                        converterData.contextCharFromUnicode = 0x00;
+                        targetByteUnit = ISCII_HALANT;
+                    } else {
+                        /* consume ZWNJ and continue */
+                        converterData.contextCharFromUnicode = 0x00;
+                        continue;
+                    }
+                    break;
+                case ZWJ:
+                    /* contextChar has HALANT */
+                    if (converterData.contextCharFromUnicode != 0) {
+                        targetByteUnit = ISCII_NUKTA;
+                    } else {
+                        targetByteUnit = ISCII_INV;
+                    }
+                    converterData.contextCharFromUnicode = 0x00;
+                    break;
+                default:
+                    /* is the sourceChar in the INDIC_RANGE? */
+                    if((char)(INDIC_BLOCK_END - sourceChar) <= INDIC_RANGE) {
+                        /* Danda and Doube Danda are valid in Northern scripts.. since Unicode
+                         * does not include these codepoints in all Northern scripts we need to
+                         * filter them out
+                         */
+                        if (sourceChar != DANDA && sourceChar != DOUBLE_DANDA) {
+                            /* find out to which block the sourceChar belongs */
+                            range = (short)((sourceChar - INDIC_BLOCK_BEGIN) / UniLang.DELTA);
+                            newDelta = (short)(range * UniLang.DELTA);
+                        
+                            /* Now are we in the same block as previous? */
+                            if (newDelta != converterData.currentDeltaFromUnicode || converterData.isFirstBuffer) {
+                                converterData.currentDeltaFromUnicode = newDelta;
+                                converterData.currentMaskFromUnicode = lookupInitialData[range].maskEnum;
+                                deltaChanged = true;
+                                converterData.isFirstBuffer = false;
+                            }
+                            if (converterData.currentDeltaFromUnicode == PNJ_DELTA) {
+                                if (sourceChar == PNJ_TIPPI) {
+                                    /* Make sure Tippi is converterd to Bindi. */
+                                    sourceChar = PNJ_BINDI;
+                                } else if (sourceChar == PNJ_ADHAK) {
+                                    /* This is for consonant cluster handling. */
+                                    converterData.contextCharFromUnicode = PNJ_ADHAK;
+                                }
+                            }
+                            /* Normalize all Indic codepoints to Devanagari and map them to ISCII */
+                            /* now subtract the new delta from sourceChar */
+                            sourceChar -= converterData.currentDeltaFromUnicode;
+                        }
+                        /* get the target byte unit */
+                        targetByteUnit = fromUnicodeTable[(short)sourceChar & UConverterConstants.UNSIGNED_BYTE_MASK];
+                        
+                        /* is the code point valid in current script? */
+                        if ((validityTable[(short)sourceChar & UConverterConstants.UNSIGNED_BYTE_MASK] & converterData.currentMaskFromUnicode) == 0) {
+                            /* Vocallic RR is assigned in ISCII Telugu and Unicode */
+                            if (converterData.currentDeltaFromUnicode != (TELUGU_DELTA) || sourceChar != VOCALLIC_RR) {
+                                targetByteUnit = UConverterConstants.missingCharMarker;
+                            }
+                        }
+                        
+                        if (deltaChanged) {
+                            /* we are in a script block which is different than
+                             * previous sourceChar's script block write ATR and language codes
+                             */
+                            char temp = 0;
+                            temp = (char)(ATR << 8);
+                            temp += (char)((short)lookupInitialData[range].isciiLang & UConverterConstants.UNSIGNED_BYTE_MASK);
+                            /* reset */
+                            deltaChanged = false;
+                            /* now append ATR and language code */
+                            cr = WriteToTargetFromU(offsets, source, target, temp);
+                            if (cr.isOverflow()) {
+                                break;
+                            }
+                        }
+                        if (converterData.currentDeltaFromUnicode == PNJ_DELTA && (sourceChar + PNJ_DELTA) == PNJ_ADHAK) {
+                            continue;
+                        }
+                    }
+                    /* reset context char */
+                    converterData.contextCharFromUnicode = 0x00;
+                    break;
+                } //end of switch
+                if (converterData.currentDeltaFromUnicode == PNJ_DELTA && tempContextFromUnicode == PNJ_ADHAK && PNJ_CONSONANT_SET.contains(sourceChar + PNJ_DELTA)) {
+                    /* If the previous codepoint is Adhak and the current codepoint is a consonant, the targetByteUnit should be C + Halant + C. */
+                    /* reset context char */
+                    converterData.contextCharFromUnicode = 0x0000;
+                    targetByteUnit = targetByteUnit << 16 | ISCII_HALANT << 8 | targetByteUnit;
+                    /*write targetByteUnit to target */
+                    cr = WriteToTargetFromU(offsets, source, target, targetByteUnit);
+                    if (cr.isOverflow()) {
+                        break;
+                    }
+                } else if (targetByteUnit != UConverterConstants.missingCharMarker) {
+                    if (targetByteUnit == ISCII_HALANT) {
+                        converterData.contextCharFromUnicode = (char)targetByteUnit;
+                    }
+                    /*write targetByteUnit to target */
+                    cr = WriteToTargetFromU(offsets, source, target, targetByteUnit);
+                    if (cr.isOverflow()) {
+                        break;
+                    }
+                } else if (UTF16.isSurrogate((char)sourceChar)) {
+                    cr = handleSurrogates(source, (char) sourceChar);
+                    return (cr != null) ? cr : CoderResult.unmappableForLength(2);
+                } else {
+                    return CoderResult.unmappableForLength(1);
+                }
+            } /* end of while */
+            
+            /* save the state and return */
+            return cr;
+        }
+        
+        private CoderResult WriteToTargetFromU(IntBuffer offsets, CharBuffer source, ByteBuffer target, int targetByteUnit) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+            int offset = source.position() - 1;
+            /* write the targetUniChar to target */
+            if (target.hasRemaining()) {
+                if (targetByteUnit <= 0xFF) {
+                    target.put((byte)targetByteUnit);
+                    if (offsets != null) {
+                        offsets.put(offset);
+                    }
+                } else {
+                    if (targetByteUnit > 0xFFFF) {
+                        target.put((byte)(targetByteUnit >> 16));
+                        if (offsets != null) {
+                            --offset;
+                            offsets.put(offset);
+                        }
+                    } 
+                    if (!target.hasRemaining()) {
+                        errorBuffer[errorBufferLength++] = (byte)(targetByteUnit >> 8);
+                        errorBuffer[errorBufferLength++] = (byte)targetByteUnit;
+                        cr = CoderResult.OVERFLOW;
+                        return cr;
+                    }
+                    target.put((byte)(targetByteUnit >> 8));
+                    if (offsets != null) {
+                        offsets.put(offset);
+                    }
+                    if (target.hasRemaining()) {
+                        target.put((byte)targetByteUnit);
+                        if (offsets != null) {
+                            offsets.put(offset);
+                        }
+                    } else {
+                        errorBuffer[errorBufferLength++] = (byte)targetByteUnit;
+                        cr = CoderResult.OVERFLOW;
+                    }
+                }
+            } else {
+                if ((targetByteUnit > 0xFFFF)) {
+                    errorBuffer[errorBufferLength++] = (byte)(targetByteUnit >> 16);
+                } else if ((targetByteUnit & 0xFF00) > 0) {
+                    errorBuffer[errorBufferLength++] = (byte)(targetByteUnit >> 8);
+                }
+                errorBuffer[errorBufferLength++] = (byte)(targetByteUnit);
+                cr = CoderResult.OVERFLOW;
+            }
+            return cr;
+        }
+    }
+    
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderISCII(this);
+    }
+    
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderISCII(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        int idx,script;
+        char mask;
+        
+        setFillIn.add(0,ASCII_END );
+        for(script = UniLang.DEVALANGARI ; script<= UniLang.MALAYALAM ;script++){
+            mask = (char)lookupInitialData[script].maskEnum;
+            for(idx=0; idx < UniLang.DELTA ; idx++){
+                // Special check for telugu character
+                if((validityTable[idx] & mask)!=0 || (script == UniLang.TELUGU && idx==0x31)){ 
+                   setFillIn.add(idx+(script*UniLang.DELTA)+INDIC_BLOCK_BEGIN );
+                }
+            }
+        }
+        setFillIn.add(DANDA);
+        setFillIn.add(DOUBLE_DANDA);
+        setFillIn.add(ZWNJ);
+        setFillIn.add(ZWJ);
+             
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetISO2022.java b/src/com/ibm/icu/charset/CharsetISO2022.java
new file mode 100644
index 0000000..54c81b7
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetISO2022.java
@@ -0,0 +1,2882 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.util.Arrays;
+
+import com.ibm.icu.charset.CharsetMBCS.CharsetDecoderMBCS;
+import com.ibm.icu.charset.CharsetMBCS.CharsetEncoderMBCS;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+class CharsetISO2022 extends CharsetICU {
+    private UConverterDataISO2022 myConverterData;
+    private int variant;           // one of enum {ISO_2022_JP, ISO_2022_KR, or ISO_2022_CN}
+    
+    private static final byte[] SHIFT_IN_STR    = { 0x0f };
+//    private static final byte[] SHIFT_OUT_STR   = { 0x0e };
+
+    private static final byte CR    = 0x0D;
+    private static final byte LF    = 0x0A;
+/*
+    private static final byte H_TAB = 0x09;
+    private static final byte SPACE = 0x20;
+*/
+    private static final char HWKANA_START  = 0xff61;
+    private static final char HWKANA_END    = 0xff9f;
+    
+    /*
+     * 94-character sets with native byte values A1..FE are encoded in ISO 2022
+     * as bytes 21..7E. (Subtract 0x80.)
+     * 96-character  sets with native bit values A0..FF are encoded in ISO 2022
+     * as bytes 20..7F. (Subtract 0x80.)
+     * Do not encode C1 control codes with native bytes 80..9F
+     * as bytes 00..1F (C0 control codes).
+     */
+/*
+    private static final char GR94_START    = 0xa1;
+    private static final char GR94_END      = 0xfe;
+*/
+    private static final char GR96_START    = 0xa0;
+    private static final char GR96_END      = 0xff;
+    
+    /* for ISO-2022-JP and -CN implementations */
+    // typedef enum {
+        /* shared values */
+        private static final byte INVALID_STATE = -1;
+        private static final byte ASCII         = 0;
+        
+        private static final byte SS2_STATE = 0x10;
+        private static final byte SS3_STATE = 0x11;
+        
+        /* JP */
+        private static final byte ISO8859_1 = 1;
+        private static final byte ISO8859_7 = 2;
+        private static final byte JISX201   = 3;
+        private static final byte JISX208   = 4;
+        private static final byte JISX212   = 5;
+        private static final byte GB2312    = 6;
+        private static final byte KSC5601   = 7;
+        private static final byte HWKANA_7BIT  = 8; /* Halfwidth Katakana 7 bit */
+        
+        /* CN */
+        /* the first few enum constants must keep their values because they corresponds to myConverterArray[] */
+        private static final byte GB2312_1  = 1;
+        private static final byte ISO_IR_165= 2;
+        private static final byte CNS_11643 = 3;
+        
+        /*
+         * these are used in StateEnum and ISO2022State variables,
+         * but CNS_11643 must be used to index into myConverterArray[]
+         */
+        private static final byte CNS_11643_0 = 0x20;
+        private static final byte CNS_11643_1 = 0x21;
+        private static final byte CNS_11643_2 = 0x22;
+        private static final byte CNS_11643_3 = 0x23;
+        private static final byte CNS_11643_4 = 0x24;
+        private static final byte CNS_11643_5 = 0x25;
+        private static final byte CNS_11643_6 = 0x26;
+        private static final byte CNS_11643_7 = 0x27;
+    // } StateEnum;
+    
+
+    public CharsetISO2022(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        
+        myConverterData = new UConverterDataISO2022();
+        
+        int versionIndex = icuCanonicalName.indexOf("version=");
+        int version = Integer.decode(icuCanonicalName.substring(versionIndex+8, versionIndex+9)).intValue();
+        
+        myConverterData.version = version;
+        
+        if (icuCanonicalName.indexOf("locale=ja") > 0) {
+            ISO2022InitJP(version);
+        } else if (icuCanonicalName.indexOf("locale=zh") > 0) {
+            ISO2022InitCN(version);
+        } else /* if (icuCanonicalName.indexOf("locale=ko") > 0) */ {
+            ISO2022InitKR(version);
+        }
+        
+        myConverterData.currentEncoder = (CharsetEncoderMBCS)myConverterData.currentConverter.newEncoder();
+        myConverterData.currentDecoder = (CharsetDecoderMBCS)myConverterData.currentConverter.newDecoder();
+    }
+    
+    private void ISO2022InitJP(int version) {
+        variant = ISO_2022_JP;
+        
+        maxBytesPerChar = 6;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        // open the required converters and cache them 
+        if((jpCharsetMasks[version]&CSM(ISO8859_7)) != 0) {
+            myConverterData.myConverterArray[ISO8859_7] = ((CharsetMBCS)CharsetICU.forNameICU("ISO8859_7")).sharedData;
+        }
+        // myConverterData.myConverterArray[JISX201] = ((CharsetMBCS)CharsetICU.forNameICU("jisx-201")).sharedData;
+        myConverterData.myConverterArray[JISX208] = ((CharsetMBCS)CharsetICU.forNameICU("Shift-JIS")).sharedData;
+        if ((jpCharsetMasks[version]&CSM(JISX212)) != 0) {
+            myConverterData.myConverterArray[JISX212] = ((CharsetMBCS)CharsetICU.forNameICU("jisx-212")).sharedData;
+        }
+        if ((jpCharsetMasks[version]&CSM(GB2312)) != 0) {
+            myConverterData.myConverterArray[GB2312] = ((CharsetMBCS)CharsetICU.forNameICU("ibm-5478")).sharedData;
+        }
+        if ((jpCharsetMasks[version]&CSM(KSC5601)) != 0) {
+            myConverterData.myConverterArray[KSC5601] = ((CharsetMBCS)CharsetICU.forNameICU("ksc_5601")).sharedData;
+        }
+        
+        // create a generic CharsetMBCS object
+        myConverterData.currentConverter = (CharsetMBCS)CharsetICU.forNameICU("icu-internal-25546");
+    }
+    
+    private void ISO2022InitCN(int version) {
+        variant = ISO_2022_CN;
+        
+        maxBytesPerChar = 8;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        // open the required coverters and cache them.
+        myConverterData.myConverterArray[GB2312_1] = ((CharsetMBCS)CharsetICU.forNameICU("ibm-5478")).sharedData;
+        if (version == 1) {
+            myConverterData.myConverterArray[ISO_IR_165] = ((CharsetMBCS)CharsetICU.forNameICU("iso-ir-165")).sharedData;
+        } 
+        myConverterData.myConverterArray[CNS_11643] = ((CharsetMBCS)CharsetICU.forNameICU("cns-11643-1992")).sharedData;
+        
+        // create a generic CharsetMBCS object
+        myConverterData.currentConverter = (CharsetMBCS)CharsetICU.forNameICU("icu-internal-25546");
+    }
+    
+    private void ISO2022InitKR(int version) {
+        variant = ISO_2022_KR;
+        
+        maxBytesPerChar = 3;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        
+        if (version == 1) {
+            myConverterData.currentConverter = (CharsetMBCS)CharsetICU.forNameICU("icu-internal-25546");
+            myConverterData.currentConverter.subChar1 = fromUSubstitutionChar[0][0];
+        } else {
+            myConverterData.currentConverter = (CharsetMBCS)CharsetICU.forNameICU("ibm-949");
+        }
+        
+        myConverterData.currentEncoder = (CharsetEncoderMBCS)myConverterData.currentConverter.newEncoder();
+        myConverterData.currentDecoder = (CharsetDecoderMBCS)myConverterData.currentConverter.newDecoder();
+    }
+    
+    /*
+     * ISO 2022 control codes must not be converted from Unicode
+     * because they would mess up the byte stream.
+     * The bit mask 0x0800c000 has bits set at bit positions 0xe, 0xf, 0x1b
+     * corresponding to SO, SI, and ESC.
+     */
+    private static boolean IS_2022_CONTROL(int c) { 
+        return (((c)<0x20) && ((((int)1<<c) & 0x0800c000) != 0));
+    }
+    
+    /*
+     * Check that the result is a 2-byte value with each byte in the range A1..FE
+     * (strict EUC DBCS) before accepting it and subtracting 0x80 from each byte
+     * to move it to the ISO 2022 range 21..7E.
+     * return 0 if out of range.
+     */
+    private static int _2022FromGR94DBCS(int value) {
+        if ((value <= 0xfefe && value >= 0xa1a1) && 
+                ((short)(value&UConverterConstants.UNSIGNED_BYTE_MASK) <= 0xfe && ((short)(value&UConverterConstants.UNSIGNED_BYTE_MASK) >= 0xa1))) {
+            return (value - 0x8080); /* shift down to 21..7e byte range */
+        } else {
+            return 0; /* not valid for ISO 2022 */
+        }
+    }
+    
+    /*
+     * This method does the reverse of _2022FromGR94DBCS(). Given the 2022 code point, it returns the
+     * 2 byte value that is in the range A1..FE for each byte. Otherwise it returns the 2022 code point
+     * unchanged. 
+     */
+    private static int _2022ToGR94DBCS(int value) {
+        int returnValue = value + 0x8080;
+        
+        if ((returnValue <= 0xfefe && returnValue >= 0xa1a1) && 
+                ((short)(returnValue&UConverterConstants.UNSIGNED_BYTE_MASK) <= 0xfe && ((short)(returnValue&UConverterConstants.UNSIGNED_BYTE_MASK) >= 0xa1))) {
+            return returnValue;
+        } else {
+            return value;
+        }
+    }
+    
+    /* is the StateEnum charset value for a DBCS charset? */
+    private static boolean IS_JP_DBCS(byte cs) {
+        return ((JISX208 <= cs) && (cs <= KSC5601));
+    }
+    
+    private static short CSM(short cs) {
+        return (short)(1<<cs);
+    }
+    
+    /* This gets the valid index of the end of buffer when decoding. */
+    private static int getEndOfBuffer_2022(ByteBuffer source) {
+        int sourceIndex = source.position();
+        byte mySource = 0;
+        mySource = source.get(sourceIndex);
+        
+        while (source.hasRemaining() && mySource != ESC_2022) {
+            mySource = source.get();
+            if (mySource == ESC_2022) {
+                break;
+            }
+            sourceIndex++;
+        }
+        return sourceIndex;
+    }
+    
+    /*
+     * This is a simple version of _MBCSGetNextUChar() calls the method in CharsetDecoderMBCS and returns
+     * the value given.
+     *
+     * Return value:
+     * U+fffe   unassigned
+     * U+ffff   illegal
+     * otherwise the Unicode code point
+     */
+     private int MBCSSimpleGetNextUChar(UConverterSharedData sharedData,
+                               ByteBuffer   source, 
+                               boolean      useFallback) {
+         int returnValue;
+         UConverterSharedData tempSharedData = myConverterData.currentConverter.sharedData;
+         myConverterData.currentConverter.sharedData = sharedData;
+         returnValue = ((CharsetDecoderMBCS)myConverterData.currentDecoder).simpleGetNextUChar(source, useFallback);
+         myConverterData.currentConverter.sharedData = tempSharedData;
+         
+         return returnValue;
+    }
+
+    /*
+     * @param is the the output byte
+     * @return 1 roundtrip byte  0 no mapping  -1 fallback byte
+     */
+    static int MBCSSingleFromUChar32(UConverterSharedData sharedData, int c, int[] retval, boolean useFallback) {
+        char[] table;
+        int value;
+        /* BMP-only codepages are stored without stage 1 entries for supplementary code points */
+        if (c >= 0x10000 && (sharedData.mbcs.unicodeMask&UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+            return 0;
+        }
+        /* convert the Unicode code point in c into codepage bytes */
+        table = sharedData.mbcs.fromUnicodeTable;
+        /* get the byte for the output */
+        value = CharsetMBCS.MBCS_SINGLE_RESULT_FROM_U(table, sharedData.mbcs.fromUnicodeBytes, c);
+        /* get the byte for the output */
+        retval[0] = value & 0xff;
+        if (value >= 0xf00) {
+            return 1; /* roundtrip */
+        } else if (useFallback ? value>=0x800 : value>=0xc00) {
+            return -1; /* fallback taken */
+        } else {
+            return 0; /* no mapping */
+        }
+    }
+    
+    /*
+     * Each of these charset masks (with index x) contains a bit for a charset in exact correspondence
+     * to whether that charset is used in the corresponding version x of ISO_2022, locale=ja,version=x
+     * 
+     * Note: The converter uses some leniency:
+     * - The escape sequence ESC ( I for half-width 7-bit Katakana is recognized in
+     *   all versions, not just JIS7 and JIS8.
+     * - ICU does not distinguish between different version so of JIS X 0208.
+     */
+    private static final short jpCharsetMasks[] = {
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)),
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)|CSM(JISX212)),
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)|CSM(JISX212)|CSM(GB2312)|CSM(KSC5601)|CSM(ISO8859_1)|CSM(ISO8859_7)),
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)|CSM(JISX212)|CSM(GB2312)|CSM(KSC5601)|CSM(ISO8859_1)|CSM(ISO8859_7)),
+        (short)(CSM(ASCII)|CSM(JISX201)|CSM(JISX208)|CSM(HWKANA_7BIT)|CSM(JISX212)|CSM(GB2312)|CSM(KSC5601)|CSM(ISO8859_1)|CSM(ISO8859_7))
+    };
+
+/*
+    // typedef enum {
+        private static final byte ASCII1 = 0;
+        private static final byte LATIN1 = 1;
+        private static final byte SBCS   = 2;
+        private static final byte DBCS   = 3;
+        private static final byte MBCS   = 4;
+        private static final byte HWKANA = 5;
+    // } Cnv2002Type;
+*/
+
+    private class ISO2022State {
+        private byte []cs;  /* Charset number for SI (G0)/SO (G1)/SS2 (G2)/SS3 (G3) */
+        private byte g;     /* 0..3 for G0..G3 (SI/SO/SS2/SS3) */
+        private byte prevG; /* g before single shift (SS2 or SS3) */
+        
+        ISO2022State() {
+            cs = new byte[4];
+        }
+        
+        void reset() {
+            Arrays.fill(cs, (byte)0);
+            g = 0;
+            prevG = 0;
+        }
+    }
+    
+//    private static final byte UCNV_OPTIONS_VERSION_MASK = 0xf;
+    private static final byte UCNV_2022_MAX_CONVERTERS  = 10;
+    
+    private class UConverterDataISO2022 {
+        UConverterSharedData []myConverterArray;
+        CharsetEncoderMBCS currentEncoder;
+        CharsetDecoderMBCS currentDecoder;
+        CharsetMBCS currentConverter;
+        int currentType; // Cnv2022Type;
+        ISO2022State toU2022State;
+        ISO2022State fromU2022State;
+        int key;
+        int version;
+        boolean isEmptySegment;
+        
+        UConverterDataISO2022() {
+            myConverterArray = new UConverterSharedData[UCNV_2022_MAX_CONVERTERS];
+            toU2022State = new ISO2022State();
+            fromU2022State = new ISO2022State();
+            currentType = 0;
+            key = 0;
+            version = 0;
+            isEmptySegment = false;
+        }
+        
+        void reset() {
+            toU2022State.reset();
+            fromU2022State.reset();
+            isEmptySegment = false;
+        }
+    }
+    
+    private static final byte ESC_2022 = 0x1B; /* ESC */
+    
+    // typedef enum {
+        private static final byte INVALID_2022              = -1; /* Doesn't correspond to a valid iso 2022 escape sequence */
+        private static final byte VALID_NON_TERMINAL_2022   =  0;  /* so far corresponds to a valid iso 2022 escape sequence */
+        private static final byte VALID_TERMINAL_2022       =  1;  /* corresponds to a valid iso 2022 escape sequence */
+        private static final byte VALID_MAYBE_TERMINAL_2022 =  2;  /* so far matches one iso 2022 escape sequence, but by adding
+                                                                     more characters might match another escape sequence */
+    // } UCNV_TableStates_2022;
+        
+    /*
+     * The way these state transition arrays work is:
+     * ex : ESC$B is the sequence for JISX208
+     *      a) First Iteration: char is ESC
+     *          i) Get the value of ESC from normalize_esq_chars_2022[] with int value of ESC as index
+     *             int x = normalize_esq_chars_2022[27] which is equal to 1
+     *         ii) Search for this value in escSeqStateTable_Key_2022[]
+     *             value of x is stored at escSeqStateTable_Key_2022[0]
+     *        iii) Save this index as offset
+     *         iv) Get state of this sequence from escSeqStateTable_Value_2022[]
+     *             escSeqStateTable_value_2022[offset], which is VALID_NON_TERMINAL_2022
+     *      b) Switch on this state and continue to next char
+     *          i) Get the value of $ from normalize_esq_chars_2022[] with int value of $ as index
+     *             which is normalize_esq_chars_2022[36] == 4
+     *         ii) x is currently 1(from above)
+     *             x<<=5 -- x is now 32
+     *             x+=normalize_esq_chars_2022[36]
+     *             now x is 36
+     *        iii) Search for this value in escSeqStateTable_Key_2022[]
+     *             value of x is stored at escSeqStateTable_Key_2022[2], so offset is 2
+     *         iv) Get state of this sequence from escSeqStateTable_Value_2022[]
+     *             escSeqStateTable_Value_2022[offset], which is VALID_NON_TERMINAL_2022
+     *      c) Switch on this state and continue to next char
+     *          i) Get the value of B from normalize_esq_chars_2022[] with int value of B as index
+     *         ii) x is currently 36 (from above)
+     *             x<<=5 -- x is now 1152
+     *             x+= normalize_esq_chars_2022[66]
+     *             now x is 1161
+     *        iii) Search for this value in escSeqStateTable_Key_2022[]
+     *             value of x is stored at escSeqStateTable_Key_2022[21], so offset is 21
+     *         iv) Get state of this sequence from escSeqStateTable_Value_2022[1]
+     *             escSeqStateTable_Value_2022[offset], which is VALID_TERMINAL_2022
+     *          v) Get the converter name from escSeqStateTable_Result_2022[21] which is JISX208
+     */
+     /* Below are the 3 arrays depicting a state transition table */
+     private static final byte normalize_esq_chars_2022[] = {
+         /* 0       1       2       3       4       5       6       7       8       9 */
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      1,      0,      0,
+            0,      0,      0,      0,      0,      0,      4,      7,     29,      0,
+            2,     24,     26,     27,      0,      3,     23,      6,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      5,      8,      9,     10,     11,     12,
+           13,     14,     15,     16,     17,     18,     19,     20,     25,     28,
+            0,      0,     21,      0,      0,      0,      0,      0,      0,      0,
+           22,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0,      0,      0,      0,      0,
+            0,      0,      0,      0,      0,      0
+     };
+     
+     private static final short MAX_STATES_2022 = 74;
+     private static final int escSeqStateTable_Key_2022[/* MAX_STATES_2022 */] = {
+         /* 0        1          2         3        4          5         6         7         8         9 */
+            1,      34,        36,       39,      55,        57,       60,       61,     1093,     1096,
+         1097,    1098,      1099,     1100,     1101,     1102,     1103,     1104,     1105,     1106,
+         1109,    1154,      1157,     1160,     1161,     1176,     1178,     1179,     1254,     1257,
+         1768,    1773,      1957,    35105,    36933,    36936,    36937,    36938,    36939,    36940,
+        36942,   36943,     36944,    36945,    36946,    36947,    36948,    37640,    37642,    37644,
+        37646,   37711,     37744,    37745,    37746,    37747,    37748,    40133,    40136,    40138,
+        40139,   40140,     40141,  1123363, 35947624, 35947625, 35947626, 35947627, 35947629, 35947630,
+     35947631, 35947635, 35947636, 35947638
+     };
+     
+     private static final byte escSeqStateTable_Value_2022[/* MAX_STATES_2022 */] = {
+         /*         0                           1                           2                           3                       4               */
+         VALID_NON_TERMINAL_2022,   VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,    
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,    VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+       VALID_MAYBE_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,   VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+         VALID_NON_TERMINAL_2022,   VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,    VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,    VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,    VALID_NON_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022,
+             VALID_TERMINAL_2022,       VALID_TERMINAL_2022,        VALID_TERMINAL_2022,        VALID_TERMINAL_2022
+     };
+     
+     /* Type def for refactoring changeState_2022 code */
+     // typedef enum {
+         private static final byte ISO_2022_JP = 1;
+         private static final byte ISO_2022_KR = 2;
+         private static final byte ISO_2022_CN = 3;
+     // } Variant2022;
+         
+    /* const UConverterSharedData _ISO2022Data; */
+    //private UConverterSharedData _ISO2022JPData;
+    //private UConverterSharedData _ISO2022KRData;
+    //private UConverterSharedData _ISO2022CNData;
+    
+    /******************** to unicode ********************/
+    /****************************************************
+     * Recognized escape sequenes are
+     * <ESC>(B  ASCII
+     * <ESC>.A  ISO-8859-1
+     * <ESC>.F  ISO-8859-7
+     * <ESC>(J  JISX-201
+     * <ESC>(I  JISX-201
+     * <ESC>$B  JISX-208
+     * <ESC>$@  JISX-208
+     * <ESC>$(D JISX-212
+     * <ESC>$A  GB2312
+     * <ESC>$(C KSC5601
+     */
+    private final static byte nextStateToUnicodeJP[/* MAX_STATES_2022 */] = {
+        /*     0               1               2               3               4               5               6               7               8               9    */
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,      SS2_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+                ASCII,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,        JISX201,    HWKANA_7BIT,        JISX201,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,        JISX208,         GB2312,        JISX208,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+            ISO8859_1,      ISO8859_7,        JISX208,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,        KSC5601,        JISX212,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE
+    };
+    
+    private final static byte nextStateToUnicodeCN[/* MAX_STATES_2022 */] = {
+        /*     0               1               2               3               4               5               6               7               8               9    */
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,      SS2_STATE,      SS3_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,       GB2312_1,  INVALID_STATE,     ISO_IR_165,
+          CNS_11643_1,    CNS_11643_2,    CNS_11643_3,    CNS_11643_4,    CNS_11643_5,    CNS_11643_6,    CNS_11643_7,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE,
+        INVALID_STATE,  INVALID_STATE,  INVALID_STATE,  INVALID_STATE
+    };
+    
+    /* runs through a state machine to determine the escape sequence - codepage correspondence */
+    private CoderResult changeState_2022(CharsetDecoderICU decoder, ByteBuffer source, int var) {
+        CoderResult err = CoderResult.UNDERFLOW;
+        boolean DONE = false;
+        byte value;
+        int key[] = {myConverterData.key};
+        int offset[] = {0};
+        byte c;
+        int malformLength = 0;
+        
+        value = VALID_NON_TERMINAL_2022;
+        while (source.hasRemaining()) {
+            c = source.get();
+            malformLength++;
+            decoder.toUBytesArray[decoder.toULength++] = c;
+            value = getKey_2022(c, key, offset);
+            
+            switch(value) {
+            
+            case VALID_NON_TERMINAL_2022:
+                /* continue with the loop */
+                break;
+                
+            case VALID_TERMINAL_2022:
+                key[0] = 0;
+                DONE = true;
+                break;
+                
+            case INVALID_2022:
+                DONE = true;
+                break;
+                
+            case VALID_MAYBE_TERMINAL_2022:
+                /* not ISO_2022 itself, finish here */
+                value = VALID_TERMINAL_2022;
+                key[0] = 0;
+                DONE = true;
+                break;
+            }
+            if (DONE) {
+                break;
+            }
+        }
+// DONE:
+        myConverterData.key = key[0];
+        
+        if (value == VALID_NON_TERMINAL_2022) {
+            /* indicate that the escape sequence is incomplete: key !=0 */
+            return err;
+        } else if (value == INVALID_2022) {
+            return CoderResult.malformedForLength(malformLength);
+        } else /* value == VALID_TERMINAL_2022 */ {
+            switch (var) {
+            case ISO_2022_JP: {
+                byte tempState = nextStateToUnicodeJP[offset[0]];
+                switch (tempState) {
+                case INVALID_STATE:
+                    err = CoderResult.malformedForLength(malformLength);
+                    break;
+                case SS2_STATE:
+                    if (myConverterData.toU2022State.cs[2] != 0) {
+                        if (myConverterData.toU2022State.g < 2) {
+                            myConverterData.toU2022State.prevG = myConverterData.toU2022State.g;
+                        }
+                        myConverterData.toU2022State.g = 2;
+                    } else { 
+                        /* illegal to have SS2 before a matching designator */
+                        err = CoderResult.malformedForLength(malformLength);
+                    }
+                    break;
+                /* case SS3_STATE: not used in ISO-2022-JP-x */
+                case ISO8859_1:
+                case ISO8859_7:
+                    if ((jpCharsetMasks[myConverterData.version] & CSM(tempState)) == 0) {
+                        err = CoderResult.unmappableForLength(malformLength);
+                    } else {
+                        /* G2 charset for SS2 */
+                        myConverterData.toU2022State.cs[2] = tempState;
+                    }
+                    break;
+                default:
+                    if ((jpCharsetMasks[myConverterData.version] & CSM(tempState)) == 0) {
+                        err = CoderResult.unmappableForLength(source.position() - 1);
+                    } else {
+                        /* G0 charset */
+                        myConverterData.toU2022State.cs[0] = tempState;
+                    }
+                    break;
+                } // end of switch
+                break;
+            }
+            case ISO_2022_CN: {
+                byte tempState = nextStateToUnicodeCN[offset[0]];
+                switch (tempState) {
+                case INVALID_STATE:
+                    err = CoderResult.unmappableForLength(malformLength);
+                    break;
+                case SS2_STATE:
+                    if (myConverterData.toU2022State.cs[2] != 0) {
+                        if (myConverterData.toU2022State.g < 2) {
+                            myConverterData.toU2022State.prevG = myConverterData.toU2022State.g;
+                        }
+                        myConverterData.toU2022State.g = 2;
+                    } else {
+                        /* illegal to have SS2 before a matching designator */
+                        err = CoderResult.malformedForLength(malformLength);
+                    }
+                    break;
+                case SS3_STATE:
+                    if (myConverterData.toU2022State.cs[3] != 0) {
+                        if (myConverterData.toU2022State.g < 2) {
+                            myConverterData.toU2022State.prevG = myConverterData.toU2022State.g;
+                        }
+                        myConverterData.toU2022State.g = 3;
+                    } else {
+                        /* illegal to have SS3 before a matching designator */
+                        err = CoderResult.malformedForLength(malformLength);
+                    }
+                    break;
+                case ISO_IR_165:
+                    if (myConverterData.version == 0) {
+                        err = CoderResult.unmappableForLength(malformLength);
+                        break;
+                    }
+                    /* fall through */
+                case GB2312_1:
+                    /* fall through */
+                case CNS_11643_1:
+                    myConverterData.toU2022State.cs[1] = tempState;
+                    break;
+                case CNS_11643_2:
+                    myConverterData.toU2022State.cs[2] = tempState;
+                    break;
+                default:
+                    /* other CNS 11643 planes */
+                    if (myConverterData.version == 0) {
+                        err = CoderResult.unmappableForLength(source.position() - 1);
+                    } else {
+                        myConverterData.toU2022State.cs[3] = tempState;
+                    }
+                    break;
+                } //end of switch
+            }
+            break;
+            case ISO_2022_KR:
+                if (offset[0] == 0x30) {
+                    /* nothing to be done, just accept this one escape sequence */
+                } else {
+                    err = CoderResult.unmappableForLength(malformLength);
+                }
+                break;
+            default:
+                err = CoderResult.malformedForLength(malformLength);
+                break;
+            } // end of switch
+        }
+        if (!err.isError()) {
+            decoder.toULength = 0;
+        }
+        return err;
+    }
+    
+    private static byte getKey_2022(byte c, int[]key, int[]offset) {
+        int togo;
+        int low = 0;
+        int hi = MAX_STATES_2022;
+        int oldmid = 0;
+        
+        togo = normalize_esq_chars_2022[(short)c&UConverterConstants.UNSIGNED_BYTE_MASK];
+        
+        if (togo == 0) {
+            /* not a valid character anywhere in an escape sequence */
+            key[0] = 0;
+            offset[0] = 0;
+            return INVALID_2022;
+        }
+        togo = (key[0] << 5) + togo;
+        
+        while (hi != low) { /* binary search */
+            int mid = (hi+low) >> 1; /* Finds median */
+        
+            if (mid == oldmid) {
+                break;
+            }
+            
+            if (escSeqStateTable_Key_2022[mid] > togo) {
+                hi = mid;
+            } else if (escSeqStateTable_Key_2022[mid] < togo) {
+                low = mid;
+            } else /* we found it */ {
+                key[0] = togo;
+                offset[0] = mid;
+                return escSeqStateTable_Value_2022[mid];
+            }
+            oldmid = mid;
+        }
+        return INVALID_2022;
+    }
+    
+    /*
+     * To Unicode Callback helper function
+     */
+    private static CoderResult toUnicodeCallback(CharsetDecoderICU cnv, int sourceChar, int targetUniChar) {
+        CoderResult err = CoderResult.UNDERFLOW;
+        if (sourceChar > 0xff) {
+            cnv.toUBytesArray[0] = (byte)(sourceChar>>8);
+            cnv.toUBytesArray[1] = (byte)sourceChar;
+            cnv.toULength = 2;
+        } else {
+            cnv.toUBytesArray[0] = (byte)sourceChar;
+            cnv.toULength = 1;
+        }
+        
+        if (targetUniChar == (UConverterConstants.missingCharMarker-1/* 0xfffe */)) {
+            err = CoderResult.unmappableForLength(1);
+        } else {
+            err = CoderResult.malformedForLength(1);
+        }
+        
+        return err;
+    }
+    
+    /****************************ISO-2022-JP************************************/
+    private class CharsetDecoderISO2022JP extends CharsetDecoderICU {
+        public CharsetDecoderISO2022JP(CharsetICU cs) {
+            super(cs);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+        }
+        /* 
+         * Map 00..7F to Unicode according to JIS X 0201. 
+         * */
+        private int jisx201ToU(int value) {
+            if (value < 0x5c) {
+                return value;
+            } else if (value == 0x5c) {
+                return 0xa5;
+            } else if (value == 0x7e) {
+                return 0x203e;
+            } else { /* value <= 0x7f */
+                return value;
+            }
+        }
+        /*
+         * Convert a pair of JIS X 208 21..7E bytes to Shift-JIS.
+         * If either byte is outside 21..7E make sure that the result is not valid
+         * for Shift-JIS so that the converter catches it.
+         * Some invalid byte values already turn into equally invalid Shift-JIS
+         * byte values and need not be tested explicitly.
+         */
+        private void _2022ToSJIS(char c1, char c2, byte []bytes) {
+            if ((c1&1) > 0) {
+                ++c1;
+                if (c2 <= 0x5f) {
+                    c2 += 0x1f;
+                } else if (c2 <= 0x7e) {
+                    c2 += 0x20;
+                } else {
+                    c2 = 0; /* invalid */
+                }
+            } else {
+                if ((c2 >= 0x21) && (c2 <= 0x7e)) {
+                    c2 += 0x7e;
+                } else {
+                    c2 = 0; /* invalid */
+                }
+            }
+            
+            c1 >>=1;
+            if (c1 <= 0x2f) {
+                c1 += 0x70;
+            } else if (c1 <= 0x3f) {
+                c1 += 0xb0;
+            } else {
+                c1 = 0; /* invalid */
+            }
+            bytes[0] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & c1);
+            bytes[1] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & c2);
+        }
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            boolean gotoGetTrail = false;
+            boolean gotoEscape = false;
+            CoderResult err = CoderResult.UNDERFLOW;
+            byte []tempBuf = new byte[2];
+            int targetUniChar = 0x0000;
+            int mySourceChar = 0x0000;
+            int mySourceCharTemp = 0x0000; // use for getTrail label call.
+            byte cs; /* StateEnum */
+            byte csTemp= 0; // use for getTrail label call.
+            
+            if (myConverterData.key != 0) {
+                /* continue with a partial escape sequence */
+                // goto escape;
+                gotoEscape = true;
+            } else if (toULength == 1 && source.hasRemaining() && target.hasRemaining()) {
+                /* continue with a partial double-byte character */
+                mySourceChar = toUBytesArray[0];
+                toULength = 0;
+                cs = myConverterData.toU2022State.cs[myConverterData.toU2022State.g];
+                // goto getTrailByte;
+                mySourceCharTemp = 0x99;
+                gotoGetTrail = true;
+            }
+            
+            while (source.hasRemaining() || gotoEscape || gotoGetTrail) {
+                // This code is here for the goto escape label call above.
+                if (gotoEscape) {
+                    mySourceCharTemp = ESC_2022;
+                }
+                
+                targetUniChar = UConverterConstants.missingCharMarker;
+                
+                if (gotoEscape || gotoGetTrail || target.hasRemaining()) {
+                    if (!gotoEscape && !gotoGetTrail) {
+                        mySourceChar = UConverterConstants.UNSIGNED_BYTE_MASK & source.get();
+                        mySourceCharTemp = mySourceChar;
+                    }
+                    
+                    switch (mySourceCharTemp) {
+                    case UConverterConstants.SI:
+                        if (myConverterData.version == 3) {
+                            myConverterData.toU2022State.g = 0;
+                            continue;
+                        } else {
+                            /* only JIS7 uses SI/SO, not ISO-2022-JP-x */
+                            myConverterData.isEmptySegment = false;
+                            break;
+                        }
+                        
+                    case UConverterConstants.SO:
+                        if (myConverterData.version == 3) {
+                            /* JIS7: switch to G1 half-width Katakana */
+                            myConverterData.toU2022State.cs[1] = HWKANA_7BIT;
+                            myConverterData.toU2022State.g = 1;
+                            continue; 
+                        } else {
+                            /* only JIS7 uses SI/SO, not ISO-2022-JP-x */
+                            myConverterData.isEmptySegment = false; /* reset this, we have a different error */
+                            break;
+                        }
+                        
+                    case ESC_2022:
+                        if (!gotoEscape) {
+                            source.position(source.position() - 1);
+                        } else {
+                            gotoEscape = false;
+                        }
+// escape:
+                        {
+                            int mySourceBefore = source.position();
+                            int toULengthBefore = this.toULength;
+                            
+                            err = changeState_2022(this, source, variant);
+
+                            /* If in ISO-2022-JP only and we successully completed an escape sequence, but previous segment was empty, create an error */
+                            if(myConverterData.version == 0 && myConverterData.key == 0 && !err.isError() && myConverterData.isEmptySegment) {
+                                err = CoderResult.malformedForLength(source.position() - mySourceBefore);
+                                this.toULength = toULengthBefore + (source.position() - mySourceBefore);
+                            }
+                        }
+
+                        /* invalid or illegal escape sequence */
+                        if(err.isError()){
+                            myConverterData.isEmptySegment = false; /* Reset to avoid future spurious errors */
+                            return err;
+                        }
+                        /* If we successfully completed an escape sequence, we begin a new segment, empty so far */
+                        if(myConverterData.key == 0) {
+                            myConverterData.isEmptySegment = true;
+                        }
+
+                        continue;
+                    /* ISO-2022-JP does not use single-byte (C1) SS2 and SS3 */
+                    case CR:
+                        /* falls through */
+                    case LF:
+                        /* automatically reset to single-byte mode */
+                        if (myConverterData.toU2022State.cs[0] != ASCII && myConverterData.toU2022State.cs[0] != JISX201) {
+                            myConverterData.toU2022State.cs[0] = ASCII;
+                        }
+                        myConverterData.toU2022State.cs[2] = 0;
+                        myConverterData.toU2022State.g = 0;
+                        /* falls through */
+                    default :
+                        /* convert one or two bytes */
+                        myConverterData.isEmptySegment = false;
+                        cs = myConverterData.toU2022State.cs[myConverterData.toU2022State.g];
+                        csTemp = cs;
+                        if (gotoGetTrail) {
+                            csTemp = (byte)0x99;
+                        }
+                        if (!gotoGetTrail && ((mySourceChar >= 0xa1) && (mySourceChar <= 0xdf) && myConverterData.version == 4 && !IS_JP_DBCS(cs))) {
+                            /* 8-bit halfwidth katakana in any single-byte mode for JIS8 */
+                            targetUniChar = mySourceChar + (HWKANA_START - 0xa1);
+                            
+                            /* return from a single-shift state to the previous one */
+                            if (myConverterData.toU2022State.g >= 2) {
+                                myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                            }
+                        } else {
+                            switch(csTemp) {
+                            case ASCII:
+                                if (mySourceChar <= 0x7f) {
+                                    targetUniChar = mySourceChar;
+                                }
+                                break;
+                            case ISO8859_1:
+                                if (mySourceChar <= 0x7f) {
+                                    targetUniChar = mySourceChar + 0x80;
+                                }
+                                /* return from a single-shift state to the prevous one */
+                                myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                                break;
+                            case ISO8859_7:
+                                if (mySourceChar <= 0x7f) {
+                                    /* convert mySourceChar+0x80 to use a normal 8-bit table */
+                                    targetUniChar = CharsetMBCS.MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(myConverterData.myConverterArray[cs].mbcs,
+                                            mySourceChar+0x80);
+                                }
+                                /* return from a single-shift state to the previous one */
+                                myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                                break;
+                            case JISX201:
+                                if (mySourceChar <= 0x7f) {
+                                    targetUniChar = jisx201ToU(mySourceChar);
+                                }
+                                break;
+                            case HWKANA_7BIT:
+                                if ((mySourceChar >= 0x21) && (mySourceChar <= 0x5f)) {
+                                    /* 7-bit halfwidth Katakana */
+                                    targetUniChar = mySourceChar + (HWKANA_START - 0x21);
+                                    break;
+                                }
+                            default :
+                                /* G0 DBCS */
+                                if (gotoGetTrail || source.hasRemaining()) {
+// getTrailByte:
+                                    int tmpSourceChar;
+                                    gotoGetTrail = false;
+                                    byte trailByte;
+                                    trailByte = source.get();
+                                    tmpSourceChar = (mySourceChar << 8) | (short)(UConverterConstants.UNSIGNED_BYTE_MASK & trailByte);
+                                    if (cs == JISX208) {
+                                        _2022ToSJIS((char)(UConverterConstants.UNSIGNED_BYTE_MASK & mySourceChar), 
+                                                (char)(UConverterConstants.UNSIGNED_BYTE_MASK & trailByte), tempBuf);
+                                    } else {
+                                        if (cs == KSC5601) {
+                                            tmpSourceChar = _2022ToGR94DBCS(tmpSourceChar);
+                                        }
+                                        tempBuf[0] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (tmpSourceChar >> 8));
+                                        tempBuf[1] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & tmpSourceChar);
+                                    }
+                                    ByteBuffer tempByteBuf = ByteBuffer.wrap(tempBuf);
+                                    targetUniChar = MBCSSimpleGetNextUChar(myConverterData.myConverterArray[cs], tempByteBuf, false);
+                                    mySourceChar = tmpSourceChar;
+                                } else {
+                                    toUBytesArray[0] = (byte)mySourceChar;
+                                    toULength = 1;
+                                    // goto endloop;
+                                    return err;
+                                }
+                            } /* end of inner switch */
+                        }
+                        break;
+                    } /* end of outer switch */
+                    
+                    if (targetUniChar < (UConverterConstants.missingCharMarker-1/*0xfffe*/)) {
+                        if (offsets != null) {
+                            offsets.put(target.remaining(), source.remaining() - (mySourceChar <= 0xff ? 1 : 2));
+                        }
+                        target.put((char)targetUniChar);
+                    } else if (targetUniChar > UConverterConstants.missingCharMarker) {
+                        /* disassemble the surrogate pair and write to output */
+                        targetUniChar -= 0x0010000;
+                        target.put((char)(0xd800 + (char)(targetUniChar>>10)));
+                        target.position(target.position()-1);
+                        if (offsets != null) {
+                            offsets.put(target.remaining(), source.remaining() - (mySourceChar <= 0xff ? 1 : 2));
+                        }
+                        target.get();
+                        if (target.hasRemaining()) {
+                            target.put((char)(0xdc00+(char)(targetUniChar&0x3ff)));
+                            target.position(target.position()-1);
+                            if (offsets != null) {
+                                offsets.put(target.remaining(), source.remaining() - (mySourceChar <= 0xff ? 1 : 2));
+                            }
+                            target.get();
+                        } else {
+                            charErrorBufferArray[charErrorBufferLength++] = 
+                                (char)(0xdc00+(char)(targetUniChar&0x3ff));
+                        }
+                    } else {
+                        /* Call the callback function */
+                        err = toUnicodeCallback(this, mySourceChar, targetUniChar);
+                        break;
+                    }
+                } else { /* goes with "if (target.hasRemaining())" way up near the top of the function */
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+//endloop:
+            return err;
+        }
+    } // end of class CharsetDecoderISO2022JP
+    
+    /****************************ISO-2022-CN************************************/
+    private class CharsetDecoderISO2022CN extends CharsetDecoderICU {
+        public CharsetDecoderISO2022CN(CharsetICU cs) {
+            super(cs);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            byte[] tempBuf = new byte[3];
+            int targetUniChar = 0x0000;
+            int mySourceChar = 0x0000;
+            int mySourceCharTemp = 0x0000;
+            boolean gotoEscape = false;
+            boolean gotoGetTrailByte = false;
+            
+            if (myConverterData.key != 0) {
+                /* continue with a partial escape sequence */
+                // goto escape;
+                gotoEscape = true;
+            } else if (toULength == 1 && source.hasRemaining() && target.hasRemaining()) {
+                /* continue with a partial double-byte character */
+                mySourceChar = toUBytesArray[0];
+                toULength = 0;
+                // goto getTrailByte
+                gotoGetTrailByte = true;
+            }
+            
+            while (source.hasRemaining() || gotoGetTrailByte || gotoEscape) {
+                targetUniChar = UConverterConstants.missingCharMarker;
+                
+                if (target.hasRemaining() || gotoEscape) {
+                    if (gotoEscape) {
+                        mySourceChar = ESC_2022; // goto escape label
+                        mySourceCharTemp = mySourceChar;
+                    } else if (gotoGetTrailByte) {
+                        mySourceCharTemp = 0xff; // goto getTrailByte; set mySourceCharTemp to go to default
+                    } else {
+                        mySourceChar = UConverterConstants.UNSIGNED_BYTE_MASK & source.get();
+                        mySourceCharTemp = mySourceChar;
+                    }
+                    
+                    switch (mySourceCharTemp) {
+                    case UConverterConstants.SI:
+                        myConverterData.toU2022State.g = 0;
+                        if (myConverterData.isEmptySegment) {
+                            myConverterData.isEmptySegment = false; /* we are handling it, reset to avoid future spurious errors */
+                            err = CoderResult.malformedForLength(1);
+                            this.toUBytesArray[0] = (byte)mySourceChar;
+                            this.toULength = 1;
+                            return err;
+                        }
+                        continue;
+                        
+                    case UConverterConstants.SO:
+                        if (myConverterData.toU2022State.cs[1] != 0) {
+                            myConverterData.toU2022State.g = 1;
+                            myConverterData.isEmptySegment = true;  /* Begin a new segment, empty so far */
+                            continue;
+                        } else {
+                            /* illegal to have SO before a matching designator */
+                            myConverterData.isEmptySegment = false; /* Handling a different error, reset this to avoid future spurious errs */
+                            break;
+                        }
+                        
+                    case ESC_2022:
+                        if (!gotoEscape) {
+                            source.position(source.position()-1);
+                        }
+// escape label
+                        gotoEscape = false;
+                        {
+                            int mySourceBefore = source.position();
+                            int toULengthBefore = this.toULength;
+
+                            err = changeState_2022(this, source, ISO_2022_CN);
+
+                            /* After SO there must be at least one character before a designator (designator error handled separately) */
+                            if(myConverterData.key == 0 && !err.isError() && myConverterData.isEmptySegment) {
+                                err = CoderResult.malformedForLength(source.position() - mySourceBefore);
+                                this.toULength = toULengthBefore + (source.position() - mySourceBefore);
+                            }
+                        }
+
+                        /* invalid or illegal escape sequence */
+                        if(err.isError()){
+                            myConverterData.isEmptySegment = false; /* Reset to avoid future spurious errors */
+                            return err;
+                        }
+                        continue;
+                        
+                    /*ISO-2022-CN does not use single-byte (C1) SS2 and SS3 */
+                    case CR:
+                        /* falls through */
+                    case LF:
+                        myConverterData.toU2022State.reset();
+                        /* falls through */
+                    default:
+                        /* converter one or two bytes */
+                        myConverterData.isEmptySegment = false;
+                        if (myConverterData.toU2022State.g != 0 || gotoGetTrailByte) {
+                            if (source.hasRemaining() || gotoGetTrailByte) {
+                                UConverterSharedData cnv;
+                                byte tempState;
+                                int tempBufLen;
+                                byte trailByte;
+// getTrailByte: label
+                                gotoGetTrailByte = false; // reset gotoGetTrailByte
+                                
+                                trailByte = source.get();
+                                tempState = myConverterData.toU2022State.cs[myConverterData.toU2022State.g];
+                                if (tempState > CNS_11643_0) {
+                                    cnv = myConverterData.myConverterArray[CNS_11643];
+                                    tempBuf[0] = (byte)(0x80 + (tempState - CNS_11643_0));
+                                    tempBuf[1] = (byte)(mySourceChar);
+                                    tempBuf[2] = trailByte;
+                                    tempBufLen = 3;
+                                } else {
+                                    cnv = myConverterData.myConverterArray[tempState];
+                                    tempBuf[0] = (byte)(mySourceChar);
+                                    tempBuf[1] = trailByte;
+                                    tempBufLen = 2;
+                                }
+                                mySourceChar = (mySourceChar << 8) | (UConverterConstants.UNSIGNED_BYTE_MASK & trailByte);
+                                if (myConverterData.toU2022State.g >= 2) {
+                                    /* return from a single-shift state to the previous one */
+                                    myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                                }
+                                ByteBuffer tempBuffer = ByteBuffer.wrap(tempBuf);
+                                tempBuffer.limit(tempBufLen);
+                                tempBuffer.position(0);
+                                targetUniChar = MBCSSimpleGetNextUChar(cnv, tempBuffer, false);
+                            } else {
+                                toUBytesArray[0] = (byte)mySourceChar;
+                                toULength = 1;
+                                return err;
+                            }
+                        } else {
+                            if (mySourceChar <= 0x7f) {
+                                targetUniChar = (char)mySourceChar;
+                            }
+                        }
+                        break;
+                    }
+                    if ((UConverterConstants.UNSIGNED_INT_MASK&targetUniChar) < (UConverterConstants.UNSIGNED_INT_MASK&(UConverterConstants.missingCharMarker-1))) {
+                        if (offsets != null) {
+                            offsets.array()[target.position()] = source.remaining() - (mySourceChar <= 0xff ? 1 : 2);
+                        }
+                        target.put((char)targetUniChar);
+                    } else if ((UConverterConstants.UNSIGNED_INT_MASK&targetUniChar) > (UConverterConstants.UNSIGNED_INT_MASK&(UConverterConstants.missingCharMarker))) {
+                        /* disassemble the surrogate pair and write to output */
+                        targetUniChar -= 0x0010000;
+                        target.put((char)(0xd800+(char)(targetUniChar>>10)));
+                        if (offsets != null) {
+                            offsets.array()[target.position()-1] = (int)(source.position() - (mySourceChar <= 0xff ? 1 : 2));
+                        }
+                        if (target.hasRemaining()) {
+                            target.put((char)(0xdc00+(char)(targetUniChar&0x3ff)));
+                            if (offsets != null) {
+                                offsets.array()[target.position()-1] = (int)(source.position() - (mySourceChar <= 0xff ? 1 : 2));
+                            }
+                        } else {
+                            charErrorBufferArray[charErrorBufferLength++] = (char)(0xdc00+(char)(targetUniChar&0x3ff));
+                        }
+                    } else {
+                        /* Call the callback function */ 
+                        err = toUnicodeCallback(this, mySourceChar, targetUniChar);
+                        break;
+                    }
+                    
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            
+            return err;
+        }
+        
+    }
+    /************************ ISO-2022-KR ********************/
+    private class CharsetDecoderISO2022KR extends CharsetDecoderICU {
+        public CharsetDecoderISO2022KR(CharsetICU cs) {
+            super(cs);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            setInitialStateToUnicodeKR();
+            myConverterData.reset();
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            char mySourceChar = 0x0000;
+            int targetUniChar = 0x0000;
+            byte[] tempBuf = new byte[2];
+            boolean usingFallback;
+            boolean gotoGetTrailByte = false;
+            boolean gotoEscape = false;
+            
+            if (myConverterData.version == 1) {
+                return decodeLoopIBM(myConverterData.currentDecoder, source, target, offsets, flush);
+            }
+            
+            /* initialize state */
+            usingFallback = isFallbackUsed();
+            
+            if (myConverterData.key != 0) {
+                /* continue with a partial escape sequence */
+                gotoEscape = true;
+            } else if (toULength == 1 && source.hasRemaining() && target.hasRemaining()) {
+                /* continue with a partial double-byte character */
+                mySourceChar = (char)toUBytesArray[0];
+                toULength = 0;
+                gotoGetTrailByte = true;
+            }
+            
+            while (source.hasRemaining() || gotoGetTrailByte || gotoEscape) {
+                if (target.hasRemaining() || gotoGetTrailByte || gotoEscape) {
+                    if (!gotoGetTrailByte && !gotoEscape) {
+                        mySourceChar = (char)(source.get()&UConverterConstants.UNSIGNED_BYTE_MASK);
+                    }
+                    
+                    if (!gotoGetTrailByte && !gotoEscape && mySourceChar == UConverterConstants.SI) {
+                        myConverterData.toU2022State.g = 0;
+                        if (myConverterData.isEmptySegment) {
+                            myConverterData.isEmptySegment = false; /* we are handling it, reset to avoid future spurious errors */
+                            err = CoderResult.malformedForLength(1);
+                            this.toUBytesArray[0] = (byte)mySourceChar;
+                            this.toULength = 1;
+                            return err;
+                        }
+                        /* consume the source */
+                        continue;
+                    } else if (!gotoGetTrailByte && !gotoEscape && mySourceChar == UConverterConstants.SO) {
+                        myConverterData.toU2022State.g = 1;
+                        myConverterData.isEmptySegment = true;
+                        /* consume the source */
+                        continue;
+                    } else if (!gotoGetTrailByte && (gotoEscape || mySourceChar == ESC_2022)) {
+                        if (!gotoEscape) {
+                            source.position(source.position()-1);
+                        }
+// escape label
+                        gotoEscape = false; // reset gotoEscape flag
+                        myConverterData.isEmptySegment = false; /* Any invalid ESC sequences will be detected separately, so just reset this */ 
+                        err = changeState_2022(this, source, ISO_2022_KR);
+                        if (err.isError()) {
+                            return err;
+                        }
+                        continue;
+                    }
+                    myConverterData.isEmptySegment = false; /* Any invalid char errors will be detected separately, so just reset this */
+                    if (myConverterData.toU2022State.g == 1 || gotoGetTrailByte) {
+                        if (source.hasRemaining() || gotoGetTrailByte) {
+// getTrailByte label
+                            gotoGetTrailByte = false; // reset gotoGetTrailByte flag
+                            
+                            byte trailByte;
+                            trailByte = source.get();
+                            tempBuf[0] = (byte)(mySourceChar + 0x80);
+                            tempBuf[1] = (byte)(trailByte + 0x80);
+                            mySourceChar = (char)((mySourceChar << 8) | (short)(trailByte&UConverterConstants.UNSIGNED_BYTE_MASK));
+                            if ((mySourceChar & 0x8080) == 0) {
+                                targetUniChar = MBCSSimpleGetNextUChar(myConverterData.currentConverter.sharedData, ByteBuffer.wrap(tempBuf), usingFallback);
+                            } else {
+                                /* illegal bytes > 0x7f */
+                                targetUniChar = UConverterConstants.missingCharMarker;
+                            }
+                        } else {
+                            toUBytesArray[0] = (byte)mySourceChar;
+                            toULength = 1;
+                            break;
+                        }
+                    } else {
+                        int oldSourceLimit = source.limit();
+                        source.limit(source.position());
+                        source.position(source.position()-1); 
+                        targetUniChar = MBCSSimpleGetNextUChar(myConverterData.currentConverter.sharedData, source, usingFallback);
+                        source.limit(oldSourceLimit);
+                    }
+                    if (targetUniChar < 0xfffe) {
+                        target.put((char)targetUniChar);
+                        if (offsets != null) {
+                            offsets.array()[target.position()] = source.position() - (mySourceChar <= 0xff ? 1 : 2);
+                        }
+                    } else {
+                        /* Call the callback function */
+                        err = toUnicodeCallback(this, mySourceChar, targetUniChar);
+                        break;
+                    }
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            
+            return err;
+        }
+        
+        protected CoderResult decodeLoopIBM(CharsetDecoderMBCS cnv, ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            int sourceStart;
+            int sourceLimit;
+            int argSource;
+            int argTarget;
+            boolean gotoEscape = false;
+            int oldSourceLimit;
+            
+            /* remember the original start of the input for offsets */
+            sourceStart = argSource = source.position();
+            
+            if (myConverterData.key != 0) {
+                /* continue with a partial escape sequence */
+                gotoEscape = true;
+            }
+            
+            while (gotoEscape || (!err.isError() && source.hasRemaining())) {
+                if (!gotoEscape) {
+                    /* Find the end of the buffer e.g : Next Escape Seq | end of Buffer */
+                    int oldSourcePos = source.position();
+                    sourceLimit = getEndOfBuffer_2022(source);
+                    source.position(oldSourcePos);
+                    if (source.position() != sourceLimit) {
+                        /*
+                         * get the current partial byte sequence
+                         * 
+                         * it needs to be moved between the public and the subconverter
+                         * so that the conversion frameword, which only sees the public
+                         * converter, can handle truncated and illegal input etc.
+                         */
+                        if (toULength > 0) {
+                            cnv.toUBytesArray = (byte[])(toUBytesArray.clone());
+                        }
+                        cnv.toULength = toULength;
+                        
+                        /*
+                         * Convert up to the end of the input, or to before the next escape character.
+                         * Does not handle conversion extensions because the preToU[] state etc.
+                         * is not copied.
+                         */
+                        argTarget = target.position();
+                        oldSourceLimit = source.limit(); // save the old source limit change to new one
+                        source.limit(sourceLimit);
+                        err = myConverterData.currentDecoder.cnvMBCSToUnicodeWithOffsets(source, target, offsets, flush);
+                        source.limit(oldSourceLimit); // restore source limit;
+                        if (offsets != null && sourceStart != argSource) {
+                            /* update offsets to base them on the actual start of the input */
+                            int delta = argSource - sourceStart;
+                            while (argTarget < target.position()) {
+                                int currentOffset = offsets.get();
+                                offsets.position(offsets.position()-1);
+                                if (currentOffset >= 0) {
+                                    offsets.put(currentOffset + delta);
+                                    offsets.position(offsets.position()-1);
+                                }
+                                offsets.get();
+                                target.get();
+                            }
+                        }
+                        argSource = source.position();
+                        
+                        /* copy input/error/overflow buffers */
+                        if (cnv.toULength > 0) {
+                            toUBytesArray = (byte[])(cnv.toUBytesArray.clone());
+                        }
+                        toULength = cnv.toULength;
+                        
+                        if (err.isOverflow()) {
+                            if (cnv.charErrorBufferLength > 0) {
+                                charErrorBufferArray = (char[])(cnv.charErrorBufferArray.clone());
+                            }
+                            charErrorBufferLength = cnv.charErrorBufferLength;
+                            cnv.charErrorBufferLength = 0;
+                        }
+                    }
+                    
+                    if (err.isError() || (source.position() == source.limit())) {
+                        return err;
+                    }
+                }
+// escape label
+                gotoEscape = false;
+                err = changeState_2022(this, source, ISO_2022_KR);
+            }
+            return err;
+        }
+    }
+    
+    /******************** from unicode **********************/
+    /* preference order of JP charsets */
+    private final static byte []jpCharsetPref = {
+        ASCII,
+        JISX201,
+        ISO8859_1,
+        ISO8859_7,
+        JISX208,
+        JISX212,
+        GB2312,
+        KSC5601,
+        HWKANA_7BIT
+    };
+    /*
+     * The escape sequences must be in order of the enum constants like JISX201 = 3,
+     * not in order of jpCharsetPref[]!
+     */
+    private final static byte [][]escSeqChars = {
+            { 0x1B, 0x28, 0x42},        /* <ESC>(B  ASCII       */
+            { 0x1B, 0x2E, 0x41},        /* <ESC>.A  ISO-8859-1  */
+            { 0x1B, 0x2E, 0x46},        /* <ESC>.F  ISO-8859-7  */
+            { 0x1B, 0x28, 0x4A},        /* <ESC>(J  JISX-201    */
+            { 0x1B, 0x24, 0x42},        /* <ESC>$B  JISX-208    */
+            { 0x1B, 0x24, 0x28, 0x44},  /* <ESC>$(D JISX-212    */
+            { 0x1B, 0x24, 0x41},        /* <ESC>$A  GB2312      */
+            { 0x1B, 0x24, 0x28, 0x43},  /* <ESC>$(C KSC5601     */
+            { 0x1B, 0x28, 0x49}         /* <ESC>(I  HWKANA_7BIT */
+    };
+    /*
+     * JIS X 0208 has fallbacks from Unicode half-width Katakana to full-width (DBCS)
+     * Katakana.
+     * Now that we use a Shift-JIS table for JIS X 0208 we need to hardcode these fallbacks
+     * because Shift-JIS roundtrips half-width Katakana to single bytes.
+     * These were the only fallbacks in ICU's jisx-208.ucm file.
+     */
+    private final static char []hwkana_fb = {
+        0x2123,  /* U+FF61 */
+        0x2156,
+        0x2157,
+        0x2122,
+        0x2126,
+        0x2572,
+        0x2521,
+        0x2523,
+        0x2525,
+        0x2527,
+        0x2529,
+        0x2563,
+        0x2565,
+        0x2567,
+        0x2543,
+        0x213C,  /* U+FF70 */
+        0x2522,
+        0x2524,
+        0x2526,
+        0x2528,
+        0x252A,
+        0x252B,
+        0x252D,
+        0x252F,
+        0x2531,
+        0x2533,
+        0x2535,
+        0x2537,
+        0x2539,
+        0x253B,
+        0x253D,
+        0x253F,  /* U+FF80 */
+        0x2541,
+        0x2544,
+        0x2546,
+        0x2548,
+        0x254A,
+        0x254B,
+        0x254C,
+        0x254D,
+        0x254E,
+        0x254F,
+        0x2552,
+        0x2555,
+        0x2558,
+        0x255B,
+        0x255E,
+        0x255F,  /* U+FF90 */
+        0x2560,
+        0x2561,
+        0x2562,
+        0x2564,
+        0x2566,
+        0x2568,
+        0x2569,
+        0x256A,
+        0x256B,
+        0x256C,
+        0x256D,
+        0x256F,
+        0x2573,
+        0x212B,
+        0x212C   /* U+FF9F */
+    };
+    
+    protected byte [][]fromUSubstitutionChar = new byte[][]{ { (byte)0x1A }, { (byte)0x2F, (byte)0x7E} };
+    /****************************ISO-2022-JP************************************/
+    private class CharsetEncoderISO2022JP extends CharsetEncoderICU {
+        public CharsetEncoderISO2022JP(CharsetICU cs) {
+            super(cs, fromUSubstitutionChar[0]);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+        }
+        /* Map Unicode to 00..7F according to JIS X 0201. Return U+FFFE if unmappable. */
+        private int jisx201FromU(int value) {
+            if (value <= 0x7f) {
+                if (value != 0x5c && value != 0x7e) {
+                    return value;
+                }
+            } else if (value == 0xa5) {
+                return 0x5c;
+            } else if (value == 0x203e) {
+                return 0x7e;
+            }
+            return (int)(UConverterConstants.UNSIGNED_INT_MASK & 0xfffe);
+        }
+        
+        /*
+         * Take a valid Shift-JIS byte pair, check that it is in the range corresponding
+         * to JIS X 0208, and convert it to a pair of 21..7E bytes.
+         * Return 0 if the byte pair is out of range.
+         */
+        private int _2022FromSJIS(int value) {
+            short trail;
+            
+            if (value > 0xEFFC) {
+                return 0; /* beyond JIS X 0208 */
+            }
+            
+            trail = (short)(value & UConverterConstants.UNSIGNED_BYTE_MASK);
+            
+            value &= 0xff00; /* lead byte */
+            if (value <= 0x9f00) {
+                value -= 0x7000;
+            } else { /* 0xe000 <= value <= 0xef00 */
+                value -= 0xb000;
+            }
+            
+            value <<= 1;
+            
+            if (trail <= 0x9e) {
+                value -= 0x100;
+                if (trail <= 0x7e) {
+                    value |= ((trail - 0x1f) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                } else {
+                    value |= ((trail - 0x20) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                }
+            } else { /* trail <= 0xfc */
+                value |= ((trail - 0x7e) & UConverterConstants.UNSIGNED_BYTE_MASK);
+            }
+            
+            return value;
+        }
+        /* This overrides the cbFromUWriteSub method in CharsetEncoderICU */
+        CoderResult cbFromUWriteSub (CharsetEncoderICU encoder, 
+                CharBuffer source, ByteBuffer target, IntBuffer offsets){
+                CoderResult err = CoderResult.UNDERFLOW;
+                byte[] buffer = new byte[8];
+                int i = 0;
+                byte[] subchar;
+                subchar = encoder.replacement();
+                
+                byte cs;
+                if (myConverterData.fromU2022State.g == 1) {
+                    /* JIS7: switch from G1 to G0 */
+                    myConverterData.fromU2022State.g = 0;
+                    buffer[i++] = UConverterConstants.SI;
+                }
+                cs = myConverterData.fromU2022State.cs[0];
+                
+                if (cs != ASCII && cs != JISX201) {
+                    /* not in ASCII or JIS X 0201: switch to ASCII */
+                    myConverterData.fromU2022State.cs[0] = ASCII;
+                    buffer[i++] = 0x1B;
+                    buffer[i++] = 0x28;
+                    buffer[i++] = 0x42;
+                }
+                
+                buffer[i++] = subchar[0];
+                
+                err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, i, target, offsets, source.position() - 1);
+
+                return err;
+            }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            int sourceChar;
+            byte cs, g;
+            int choiceCount;
+            int len, outLen;
+            byte[] choices = new byte[10];
+            int targetValue = 0;
+            boolean usingFallback;
+            byte[] buffer = new byte[8];
+            boolean getTrail = false; // use for getTrail label
+            int oldSourcePos; // for proper error handling
+            
+            choiceCount = 0;
+            
+            /* check if the last codepoint of previous buffer was a lead surrogate */
+            if ((sourceChar = fromUChar32) != 0 && target.hasRemaining()) {
+                getTrail = true;
+            }
+            
+            while (getTrail || source.hasRemaining()) {
+                if (getTrail || target.hasRemaining()) {
+                    oldSourcePos = source.position();
+                    if (!getTrail) { /* skip if going to getTrail label */
+                        sourceChar = source.get();
+                    }
+                    /* check if the char is a First surrogate */
+                    if (getTrail || UTF16.isSurrogate((char)sourceChar)) {
+                        if (getTrail || UTF16.isLeadSurrogate((char)sourceChar)) {
+// getTrail:                 
+                            if (getTrail) {
+                                getTrail = false;
+                            }
+                            /* look ahead to find the trail surrogate */
+                            if (source.hasRemaining()) {
+                                /* test the following code unit */
+                                char trail = source.get();
+                                /* go back to the previous position */
+                                source.position(source.position()-1);
+                                if (UTF16.isTrailSurrogate(trail)) {
+                                    source.get();
+                                    sourceChar = UCharacter.getCodePoint((char)sourceChar, trail);
+                                    fromUChar32 = 0x00;
+                                    /* convert this supplementary code point */
+                                    /* exit this condition tree */
+                                } else {
+                                    /* this is an unmatched lead code unit (1st surrogate) */
+                                    /* callback(illegal) */
+                                    err = CoderResult.malformedForLength(1);
+                                    fromUChar32 = sourceChar;
+                                    break;
+                                }
+                            } else {
+                                /* no more input */
+                                fromUChar32 = sourceChar;
+                                break;
+                            }
+                        } else {
+                            /* this is an unmatched trail code unit (2nd surrogate) */
+                            /* callback(illegal) */
+                            err = CoderResult.malformedForLength(1);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                    }
+                    
+                    /* do not convert SO/SI/ESC */
+                    if (IS_2022_CONTROL(sourceChar)) {
+                        /* callback(illegal) */
+                        err = CoderResult.malformedForLength(1);
+                        fromUChar32 = sourceChar;
+                        break;
+                    }
+                    
+                    /* do the conversion */
+                    
+                    if (choiceCount == 0) {
+                        char csm;
+                        /*
+                         * The csm variable keeps track of which charsets are allowed
+                         * and not used yet while building the choices[].
+                         */
+                        csm = (char)jpCharsetMasks[myConverterData.version];
+                        choiceCount = 0;
+                        
+                        /* JIS7/8: try single-byte half-width Katakana before JISX208 */
+                        if (myConverterData.version == 3 || myConverterData.version == 4) {
+                            choices[choiceCount++] = HWKANA_7BIT;
+                        }
+                        /* Do not try single-bit half-width Katakana for other versions. */
+                        csm &= ~CSM(HWKANA_7BIT);
+                        
+                        /* try the current G0 charset */
+                        choices[choiceCount++] = cs = myConverterData.fromU2022State.cs[0];
+                        csm &= ~CSM(cs);
+                        
+                        /* try the current G2 charset */
+                        if ((cs = myConverterData.fromU2022State.cs[2]) != 0) {
+                            choices[choiceCount++] = cs;
+                            csm &= ~CSM(cs);
+                        }
+                        
+                        /* try all the other charsets */
+                        for (int i = 0; i < jpCharsetPref.length; i++) {
+                            cs = jpCharsetPref[i];
+                            if ((CSM(cs) & csm) != 0) {
+                                choices[choiceCount++] = cs;
+                                csm &= ~CSM(cs);
+                            }
+                        }
+                    }
+                    
+                    cs = g = 0;
+                    /* 
+                     * len==0:  no mapping found yet
+                     * len<0:   found a fallback result:  continue looking for a roundtrip but no further fallbacks
+                     * len>0:   found a roundtrip result, done
+                     */
+                    len = 0;
+                    /*
+                     * We will turn off usingFallBack after finding a fallback,
+                     * but we still get fallbacks from PUA code points as usual.
+                     * Therefore, we will also need to check that we don't overwrite
+                     * an early fallback with a later one.
+                     */
+                    usingFallback = useFallback;
+                    
+                    for (int i = 0; i < choiceCount && len <= 0; i++) {
+                        int[] value = new int[1];
+                        int len2;
+                        byte cs0 = choices[i];
+                        switch (cs0) {
+                        case ASCII:
+                            if (sourceChar <= 0x7f) {
+                                targetValue = sourceChar;
+                                len = 1;
+                                cs = cs0;
+                                g = 0;
+                            }
+                            break;
+                        case ISO8859_1:
+                            if (GR96_START <= sourceChar && sourceChar <= GR96_END) {
+                                targetValue = sourceChar - 0x80;
+                                len = 1;
+                                cs = cs0;
+                                g = 2;
+                            }
+                            break;
+                        case HWKANA_7BIT:
+                            if (sourceChar <= HWKANA_END && sourceChar >= HWKANA_START) {
+                                if (myConverterData.version == 3) {
+                                    /* JIS7: use G1 (SO) */
+                                    /* Shift U+FF61..U+FF9F to bytes 21..5F. */
+                                    targetValue = (int)(UConverterConstants.UNSIGNED_INT_MASK & (sourceChar - (HWKANA_START - 0x21)));
+                                    len = 1;
+                                    myConverterData.fromU2022State.cs[1] = cs = cs0; /* do not output an escape sequence */
+                                    g = 1;
+                                } else if (myConverterData.version == 4) {
+                                    /* JIS8: use 8-bit bytes with any single-byte charset, see escape sequence output below */
+                                    /* Shift U+FF61..U+FF9F to bytes A1..DF. */
+                                    targetValue = (int)(UConverterConstants.UNSIGNED_INT_MASK & (sourceChar - (HWKANA_START - 0xa1)));
+                                    len = 1;
+                                    
+                                    cs = myConverterData.fromU2022State.cs[0];
+                                    if (IS_JP_DBCS(cs)) {
+                                        /* switch from a DBCS charset to JISX201 */
+                                        cs = JISX201;
+                                    }
+                                    /* else stay in the current G0 charset */
+                                    g = 0;
+                                }
+                                /* else do not use HWKANA_7BIT with other versions */
+                            }
+                            break;
+                        case JISX201:
+                            /* G0 SBCS */
+                            value[0] = jisx201FromU(sourceChar);
+                            if (value[0] <= 0x7f) {
+                                targetValue = value[0];
+                                len = 1;
+                                cs = cs0;
+                                g = 0;
+                                usingFallback = false;
+                            }
+                            break;
+                        case JISX208:
+                            /* G0 DBCS from JIS table */
+                            myConverterData.currentConverter.sharedData = myConverterData.myConverterArray[cs0];
+                            myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_2;
+                            len2 = myConverterData.currentEncoder.fromUChar32(sourceChar, value, usingFallback);
+                            //len2 = MBCSFromUChar32_ISO2022(myConverterData.myConverterArray[cs0], sourceChar, value, usingFallback, CharsetMBCS.MBCS_OUTPUT_2);
+                            if (len2 == 2 || (len2 == -2 && len == 0)) { /* only accept DBCS: abs(len) == 2 */
+                                value[0] = _2022FromSJIS(value[0]);
+                                if (value[0] != 0) {
+                                    targetValue = value[0];
+                                    len = len2;
+                                    cs = cs0;
+                                    g = 0;
+                                    usingFallback = false;
+                                }
+                            } else if (len == 0 && usingFallback  && sourceChar <= HWKANA_END && sourceChar >= HWKANA_START) {
+                                targetValue = hwkana_fb[sourceChar - HWKANA_START];
+                                len = -2;
+                                cs = cs0;
+                                g = 0;
+                                usingFallback = false;
+                            }
+                            break;
+                        case ISO8859_7:
+                            /* G0 SBCS forced to 7-bit output */
+                            len2 = MBCSSingleFromUChar32(myConverterData.myConverterArray[cs0], sourceChar, value, usingFallback);
+                            if (len2 != 0 && !(len2 < 0 && len != 0) && GR96_START <= value[0] && value[0] <= GR96_END) {
+                                targetValue = value[0] - 0x80;
+                                len = len2;
+                                cs = cs0;
+                                g = 2;
+                                usingFallback = false;
+                            }
+                            break;
+                        default :
+                            /* G0 DBCS */
+                            myConverterData.currentConverter.sharedData = myConverterData.myConverterArray[cs0];
+                            myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_2;
+                            len2 = myConverterData.currentEncoder.fromUChar32(sourceChar, value, usingFallback);
+                            //len2 = MBCSFromUChar32_ISO2022(myConverterData.myConverterArray[cs0], sourceChar, value, usingFallback, CharsetMBCS.MBCS_OUTPUT_2);
+                            if (len2 == 2 || (len2 == -2 && len == 0)) { /* only accept DBCS: abs(len)==2 */
+                                if (cs0 == KSC5601) {
+                                    /*
+                                     * Check for valid bytes for the encoding scheme.
+                                     * This is necessary because the sub-converter (windows-949)
+                                     * has a broader encoding scheme than is valid for 2022.
+                                     */
+                                    value[0] = _2022FromGR94DBCS(value[0]);
+                                    if (value[0] == 0) {
+                                        break;
+                                    }
+                                }
+                                targetValue = value[0];
+                                len = len2;
+                                cs = cs0;
+                                g = 0;
+                                usingFallback = false;
+                            }
+                            break;
+                        }
+                    }
+                    
+                    if (len != 0) {
+                        if (len < 0) {
+                            len = -len; /* fallback */
+                        }
+                        outLen = 0;
+                        
+                        /* write SI if necessary (only for JIS7 */
+                        if (myConverterData.fromU2022State.g == 1 && g == 0) {
+                            buffer[outLen++] = UConverterConstants.SI;
+                            myConverterData.fromU2022State.g = 0;
+                        }
+                        
+                        /* write the designation sequence if necessary */
+                        if (cs != myConverterData.fromU2022State.cs[g]) {
+                            for (int i = 0; i < escSeqChars[cs].length; i++) {
+                                buffer[outLen++] = escSeqChars[cs][i];
+                            }
+                            myConverterData.fromU2022State.cs[g] = cs;
+                            
+                            /* invalidate the choices[] */
+                            choiceCount = 0;
+                        }
+                        
+                        /* write the shift sequence if necessary */
+                        if (g != myConverterData.fromU2022State.g) {
+                            switch (g) {
+                            /* case 0 handled before writing escapes */
+                            case 1:
+                                buffer[outLen++] = UConverterConstants.SO;
+                                myConverterData.fromU2022State.g = 1;
+                                break;
+                            default : /* case 2 */
+                                buffer[outLen++] = 0x1b;
+                                buffer[outLen++] = 0x4e;
+                                break;
+                            /* case 3: no SS3 in ISO-2022-JP-x */
+                            }
+                        }
+                        
+                        /* write the output bytes */
+                        if (len == 1) {
+                            buffer[outLen++] = (byte)targetValue;
+                        } else { /* len == 2 */
+                            buffer[outLen++] = (byte)(targetValue >> 8);
+                            buffer[outLen++] = (byte)targetValue;
+                        }
+                    }else {
+                        /*
+                         * if we cannot find the character after checking all codepages
+                         * then this is an error.
+                         */
+                        err = CoderResult.unmappableForLength(source.position()-oldSourcePos);
+                        fromUChar32 = sourceChar;
+                        break;
+                    }
+                    
+                    if (sourceChar == CR || sourceChar == LF) {
+                        /* reset the G2 state at the end of a line (conversion got use into ASCII or JISX201 already) */
+                        myConverterData.fromU2022State.cs[2] = 0;
+                        choiceCount = 0;
+                    }
+                    
+                    /* output outLen>0 bytes in buffer[] */
+                    if (outLen == 1) {
+                        target.put(buffer[0]);
+                        if (offsets != null) {
+                            offsets.put(source.remaining() - 1); /* -1 known to be ASCII */
+                        }
+                    } else if (outLen == 2 && (target.position() + 2) <= target.limit()) {
+                        target.put(buffer[0]);
+                        target.put(buffer[1]);
+                        if (offsets != null) {
+                            int sourceIndex = source.position() - 1;
+                            offsets.put(sourceIndex);
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, outLen, target, offsets, source.position()-1);
+                    }
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            
+            /*
+             * the end of the input stream and detection of truncated input
+             * are handled by the framework, but for ISO-2022-JP conversion
+             * we need to be in ASCII mode at the very end
+             * 
+             * conditions:
+             *  successful
+             *  in SO mode or not in ASCII mode
+             *  end of input and no truncated input
+             */
+            if (!err.isError() &&
+                    (myConverterData.fromU2022State.g != 0 || myConverterData.fromU2022State.cs[0] != ASCII) &&
+                    flush && !source.hasRemaining() && fromUChar32 == 0) {
+                int sourceIndex;
+                
+                outLen = 0;
+                
+                if (myConverterData.fromU2022State.g != 0) {
+                    buffer[outLen++] = UConverterConstants.SI;
+                    myConverterData.fromU2022State.g = 0;
+                }
+                
+                if (myConverterData.fromU2022State.cs[0] != ASCII) {
+                    for (int i = 0; i < escSeqChars[ASCII].length; i++) {
+                        buffer[outLen++] = escSeqChars[ASCII][i];
+                    }
+                    myConverterData.fromU2022State.cs[0] = ASCII;
+                }
+                
+                /* get the source index of the last input character */
+                sourceIndex = source.position();
+                if (sourceIndex > 0) {
+                    --sourceIndex;
+                    if (UTF16.isTrailSurrogate(source.get(sourceIndex)) &&
+                            (sourceIndex == 0 || UTF16.isLeadSurrogate(source.get(sourceIndex-1)))) {
+                        --sourceIndex;
+                    }
+                } else {
+                    sourceIndex = -1;
+                }
+                
+                err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, outLen, target, offsets, sourceIndex);
+            }
+            return err;
+        }
+    }
+    /****************************ISO-2022-CN************************************/
+    /*
+     * Rules for ISO-2022-CN Encoding:
+     * i)   The designator sequence must appear once on a line before any instance
+     *      of chracter set it designates.
+     * ii)  If two lines contain characters from the same character set, both lines
+     *      must include the designator sequence.
+     * iii) Once the designator sequence is known, a shifting sequence has to be found
+     *      to invoke the shifting
+     * iv)  All lines start in ASCII and end in ASCII.
+     * v)   Four shifting sequences are employed for this purpose:
+     *      Sequence    ASCII Eq    Charsets
+     *      ---------   ---------   --------
+     *      SI          <SI>        US-ASCII
+     *      SO          <SO>        CNS-11643-1992 Plane 1, GB2312, ISO-IR-165
+     *      SS2         <ESC>N      CNS-11643-1992 Plane 2
+     *      SS3         <ESC>O      CNS-11643-1992 Planes 3-7
+     * vi)  
+     *      SOdesignator    : ESC "$" ")" finalchar_for_SO
+     *      SS2designator   : ESC "$" "*" finalchar_for_SS2
+     *      SS3designator   : ESC "$" "+" finalchar_for_SS3
+     *      
+     *      ESC $ ) A       Indicates the bytes following SO are Chinese
+     *       characters as defined in GB 2312-80, until
+     *       another SOdesignation appears
+     *      
+     *      ESC $ ) E       Indicates the bytes following SO are as defined
+     *       in ISO-IR-165 (for details, see section 2.1),
+     *       until another SOdesignation appears
+     *       
+     *      ESC $ ) G       Indicates the bytes following SO are as defined
+     *       in CNS 11643-plane-1, until another SOdesignation appears
+     *       
+     *      ESC $ * H       Indicates teh two bytes immediately following
+     *       SS2 is a Chinese character as defined in CNS
+     *       11643-plane-2, until another SS2designation
+     *       appears
+     *       (Meaning <ESC>N must preceed ever 2 byte sequence.)
+     *      
+     *      ESC $ + I       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-3, until another SS3designation
+     *       appears
+     *       (Meaning <ESC>O must preceed every 2 byte sequence.)
+     *      
+     *      ESC $ + J       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-4, until another SS3designation
+     *       appears
+     *       (In English: <ESC>O must preceed every 2 byte sequence.)
+     *      
+     *      ESC $ + K       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-5, until another SS3designation
+     *       appears
+     *       
+     *      ESC $ + L       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-6, until another SS3designation
+     *       appears
+     *       
+     *      ESC $ + M       Indicates the immediate two bytes following SS3
+     *       is a Chinese character as defined in CNS
+     *       11643-plane-7, until another SS3designation
+     *       appears
+     *       
+     *      As in ISO-2022-CN, each line starts in ASCII, and ends in ASCII, and
+     *      has its own designation information before any Chinese chracters
+     *      appears
+     */
+    
+    /* The following are defined this way to make strings truely readonly */
+    private final static byte[] GB_2312_80_STR = { 0x1B, 0x24, 0x29, 0x41 };
+    private final static byte[] ISO_IR_165_STR = { 0x1B, 0x24, 0x29, 0x45 };
+    private final static byte[] CNS_11643_1992_Plane_1_STR = { 0x1B, 0x24, 0x29, 0x47 };
+    private final static byte[] CNS_11643_1992_Plane_2_STR = { 0x1B, 0x24, 0x2A, 0x48 };
+    private final static byte[] CNS_11643_1992_Plane_3_STR = { 0x1B, 0x24, 0x2B, 0x49 };
+    private final static byte[] CNS_11643_1992_Plane_4_STR = { 0x1B, 0x24, 0x2B, 0x4A };
+    private final static byte[] CNS_11643_1992_Plane_5_STR = { 0x1B, 0x24, 0x2B, 0x4B };
+    private final static byte[] CNS_11643_1992_Plane_6_STR = { 0x1B, 0x24, 0x2B, 0x4C };
+    private final static byte[] CNS_11643_1992_Plane_7_STR = { 0x1B, 0x24, 0x2B, 0x4D };
+    
+    /************************ ISO2022-CN Data *****************************/
+    private final static byte[][] escSeqCharsCN = {
+        SHIFT_IN_STR,
+        GB_2312_80_STR,
+        ISO_IR_165_STR,
+        CNS_11643_1992_Plane_1_STR,
+        CNS_11643_1992_Plane_2_STR,
+        CNS_11643_1992_Plane_3_STR,
+        CNS_11643_1992_Plane_4_STR,
+        CNS_11643_1992_Plane_5_STR,
+        CNS_11643_1992_Plane_6_STR,
+        CNS_11643_1992_Plane_7_STR,
+    };
+    
+    private class CharsetEncoderISO2022CN extends CharsetEncoderICU {
+        public CharsetEncoderISO2022CN(CharsetICU cs) {
+            super(cs, fromUSubstitutionChar[0]);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+        }
+        
+        /* This overrides the cbFromUWriteSub method in CharsetEncoderICU */
+        CoderResult cbFromUWriteSub (CharsetEncoderICU encoder, 
+            CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            CoderResult err = CoderResult.UNDERFLOW;
+            byte[] buffer = new byte[8];
+            int i = 0;
+            byte[] subchar;
+            subchar = encoder.replacement();
+            
+            if (myConverterData.fromU2022State.g != 0) {
+                /* not in ASCII mode: switch to ASCII */
+                myConverterData.fromU2022State.g = 0;
+                buffer[i++] = UConverterConstants.SI;
+            }
+            buffer[i++] = subchar[0];
+            
+            err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, i, target, offsets, source.position() - 1);
+
+            return err;
+        }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            int sourceChar;
+            byte[] buffer = new byte[8];
+            int len;
+            byte[] choices = new byte[3];
+            int choiceCount;
+            int targetValue = 0;
+            boolean usingFallback;
+            boolean gotoGetTrail = false;
+            int oldSourcePos; // For proper error handling
+            
+            choiceCount = 0;
+            
+            /* check if the last codepoint of previous buffer was a lead surrogate */
+            if ((sourceChar = fromUChar32) != 0 && target.hasRemaining()) {
+                // goto getTrail label
+                gotoGetTrail = true; 
+            }
+            
+            while (source.hasRemaining() || gotoGetTrail) {
+                if (target.hasRemaining() || gotoGetTrail) {
+                    oldSourcePos = source.position();
+                    if (!gotoGetTrail) {
+                        sourceChar = source.get();
+                    }
+                    /* check if the char is a First surrogate */
+                    if (UTF16.isSurrogate((char)sourceChar) || gotoGetTrail) {
+                        if (UTF16.isLeadSurrogate((char)sourceChar) || gotoGetTrail) {
+// getTrail label
+                            /* reset gotoGetTrail flag*/
+                             gotoGetTrail = false;
+                            
+                            /* look ahead to find the trail surrogate */
+                            if (source.hasRemaining()) {
+                                /* test the following code unit */
+                                char trail = source.get();
+                                source.position(source.position()-1);
+                                if (UTF16.isTrailSurrogate(trail)) {
+                                    source.get();
+                                    sourceChar = UCharacter.getCodePoint((char)sourceChar, trail);
+                                    fromUChar32 = 0x00;
+                                    /* convert this supplementary code point */
+                                    /* exit this condition tree */
+                                } else {
+                                    /* this is an unmatched lead code unit (1st surrogate) */
+                                    /* callback(illegal) */
+                                    err = CoderResult.malformedForLength(1);
+                                    fromUChar32 = sourceChar;
+                                    break;
+                                }
+                            } else {
+                                /* no more input */
+                                fromUChar32 = sourceChar;
+                                break;
+                            }
+                        } else {
+                            /* this is an unmatched trail code unit (2nd surrogate) */
+                            /* callback(illegal) */
+                            err = CoderResult.malformedForLength(1);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                    }
+                    
+                    /* do the conversion */
+                    if (sourceChar <= 0x007f) {
+                        /* do not converter SO/SI/ESC */
+                        if (IS_2022_CONTROL(sourceChar)) {
+                            /* callback(illegal) */
+                            err = CoderResult.malformedForLength(1);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                        
+                        /* US-ASCII */
+                        if (myConverterData.fromU2022State.g == 0) {
+                            buffer[0] = (byte)sourceChar;
+                            len = 1;
+                        } else {
+                            buffer[0] = UConverterConstants.SI;
+                            buffer[1] = (byte)sourceChar;
+                            len = 2;
+                            myConverterData.fromU2022State.g = 0;
+                            choiceCount = 0;
+                        }
+                        
+                        if (sourceChar == CR || sourceChar == LF) {
+                            /* reset the state at the end of a line */
+                            myConverterData.fromU2022State.reset();
+                            choiceCount = 0;
+                        }
+                    } else {
+                        /* convert U+0080..U+10ffff */
+                        int i;
+                        byte cs, g;
+                        
+                        if (choiceCount == 0) {
+                            /* try the current SO/G1 converter first */
+                            choices[0] = myConverterData.fromU2022State.cs[1];
+                            
+                            /* default to GB2312_1 if none is designated yet */
+                            if (choices[0] == 0) {
+                                choices[0] = GB2312_1;
+                            }
+                            if (myConverterData.version == 0) {
+                                /* ISO-2022-CN */
+                                /* try other SO/G1 converter; a CNS_11643_1 lookup may result in any plane */
+                                if (choices[0] == GB2312_1) {
+                                    choices[1] = CNS_11643_1;
+                                } else {
+                                    choices[1] = GB2312_1;
+                                }
+                                
+                                choiceCount = 2;
+                            } else {
+                                /* ISO-2022-CN-EXT */
+                                
+                                /* try one of the other converters */
+                                switch (choices[0]) {
+                                case GB2312_1:
+                                    choices[1] = CNS_11643_1;
+                                    choices[2] = ISO_IR_165;
+                                    break;
+                                case ISO_IR_165:
+                                    choices[1] = GB2312_1;
+                                    choices[2] = CNS_11643_1;
+                                    break;
+                                default :
+                                    choices[1] = GB2312_1;
+                                    choices[2] = ISO_IR_165;
+                                    break;
+                                }
+                                
+                                choiceCount = 3;
+                            }
+                        }
+                        
+                        cs = g = 0;
+                        /*
+                         * len==0:  no mapping found yet
+                         * len<0:   found a fallback result: continue looking for a roundtrip but no further fallbacks
+                         * len>0:   found a roundtrip result, done
+                         */
+                        len = 0;
+                        /*
+                         * We will turn off usingFallback after finding a fallback,
+                         * but we still get fallbacks from PUA code points as usual.
+                         * Therefore, we will also need to check that we don't overwrite
+                         * an early fallback with a later one.
+                         */
+                        usingFallback = useFallback;
+                        
+                        for (i = 0; i < choiceCount && len <= 0; ++i) {
+                            byte cs0 = choices[i];
+                            if (cs0 > 0) {
+                                int[] value = new int[1];
+                                int len2;
+                                if (cs0 > CNS_11643_0) {
+                                    myConverterData.currentConverter.sharedData = myConverterData.myConverterArray[CNS_11643];
+                                    myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_3;
+                                    len2 = myConverterData.currentEncoder.fromUChar32(sourceChar, value, usingFallback);
+                                    //len2 = MBCSFromUChar32_ISO2022(myConverterData.myConverterArray[CNS_11643],
+                                    //        sourceChar, value, usingFallback, CharsetMBCS.MBCS_OUTPUT_3);
+                                    if (len2 == 3 || (len2 == -3 && len == 0)) {
+                                        targetValue = value[0];
+                                        cs = (byte)(CNS_11643_0 + (value[0] >> 16) - 0x80);
+                                        if (len2 >= 0) {
+                                            len = 2;
+                                        } else {
+                                            len = -2;
+                                            usingFallback = false;
+                                        }
+                                        if (cs == CNS_11643_1) {
+                                            g = 1;
+                                        } else if (cs == CNS_11643_2) {
+                                            g = 2;
+                                        } else if (myConverterData.version == 1) { /* plane 3..7 */
+                                            g = 3;
+                                        } else {
+                                            /* ISO-2022-CN (without -EXT) does not support plane 3..7 */
+                                            len = 0;
+                                        }
+                                    }
+                                } else {
+                                    /* GB2312_1 or ISO-IR-165 */
+                                    myConverterData.currentConverter.sharedData = myConverterData.myConverterArray[cs0];
+                                    myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_2;
+                                    len2 = myConverterData.currentEncoder.fromUChar32(sourceChar, value, usingFallback);
+                                    //len2 = MBCSFromUChar32_ISO2022(myConverterData.myConverterArray[cs0],
+                                    //        sourceChar, value, usingFallback, CharsetMBCS.MBCS_OUTPUT_2);
+                                    if (len2 == 2 || (len2 == -2 && len == 0)) {
+                                        targetValue = value[0];
+                                        len = len2;
+                                        cs = cs0;
+                                        g = 1;
+                                        usingFallback = false;
+                                    }
+                                }
+                            }
+                        }
+                        
+                        if (len != 0) {
+                            len = 0; /* count output bytes; it must have ben abs(len) == 2 */
+                            
+                            /* write the designation sequence if necessary */
+                            if (cs != myConverterData.fromU2022State.cs[g]) {
+                                if (cs < CNS_11643) {
+                                    for (int n = 0; n < escSeqCharsCN[cs].length; n++) {
+                                        buffer[n] = escSeqCharsCN[cs][n];
+                                    }
+                                } else {
+                                    for (int n = 0; n < escSeqCharsCN[CNS_11643 + (cs - CNS_11643_1)].length; n++) {
+                                        buffer[n] = escSeqCharsCN[CNS_11643 + (cs - CNS_11643_1)][n];
+                                    }
+                                }
+                                len = 4;
+                                myConverterData.fromU2022State.cs[g] = cs;
+                                if (g == 1) {
+                                    /* changing the SO/G1 charset invalidates the choices[] */
+                                    choiceCount = 0;
+                                }
+                            }
+                            
+                            /* write the shift sequence if necessary */
+                            if (g != myConverterData.fromU2022State.g) {
+                                switch (g) {
+                                case 1:
+                                    buffer[len++] = UConverterConstants.SO;
+                                    
+                                    /* set the new state only if it is the locking shift SO/G1, not for SS2 or SS3 */
+                                    myConverterData.fromU2022State.g = 1;
+                                    break;
+                                case 2:
+                                    buffer[len++] = 0x1b;
+                                    buffer[len++] = 0x4e;
+                                    break;
+                                default: /* case 3 */
+                                    buffer[len++] = 0x1b;
+                                    buffer[len++] = 0x4f;
+                                    break;
+                                }
+                            }
+                            
+                            /* write the two output bytes */
+                            buffer[len++] = (byte)(targetValue >> 8);
+                            buffer[len++] = (byte)targetValue;
+                        } else {
+                            /* if we cannot find the character after checking all codepages
+                             * then this is an error
+                             */
+                            err = CoderResult.unmappableForLength(source.position()-oldSourcePos);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                    }
+                    /* output len>0 bytes in buffer[] */
+                    if (len == 1) {
+                        target.put(buffer[0]);
+                        if (offsets != null) {
+                            offsets.put(source.position()-1);
+                        }
+                    } else if (len == 2 && (target.remaining() >= 2)) {
+                        target.put(buffer[0]);
+                        target.put(buffer[1]);
+                        if (offsets != null) {
+                            int sourceIndex = source.position();
+                            offsets.put(sourceIndex);
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, len, target, offsets, source.position()-1);
+                        if (err.isError()) {
+                            break;
+                        }
+                    }
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            } /* end while (source.hasRemaining() */
+            
+            /*
+             * the end of the input stream and detection of truncated input
+             * are handled by the framework, but for ISO-2022-CN conversion
+             * we need to be in ASCII mode at the very end
+             * 
+             * condtions:
+             *   succesful
+             *   not in ASCII mode
+             *   end of input and no truncated input
+             */
+            if (!err.isError() && myConverterData.fromU2022State.g != 0 && flush && !source.hasRemaining() && fromUChar32 == 0) {
+                int sourceIndex;
+                
+                /* we are switching to ASCII */
+                myConverterData.fromU2022State.g = 0;
+                
+                /* get the source index of the last input character */
+                sourceIndex = source.position();
+                if (sourceIndex > 0) {
+                    --sourceIndex;
+                    if (UTF16.isTrailSurrogate(source.get(sourceIndex)) && 
+                            (sourceIndex == 0 || UTF16.isLeadSurrogate(source.get(sourceIndex-1)))) {
+                        --sourceIndex;
+                    }
+                } else {
+                    sourceIndex = -1;
+                }
+                
+                err = CharsetEncoderICU.fromUWriteBytes(this, SHIFT_IN_STR, 0, 1, target, offsets, sourceIndex);
+            }
+            
+            return err;
+        }
+    }
+    /******************************** ISO-2022-KR *****************************/
+    /*
+     *   Rules for ISO-2022-KR encoding
+     *   i) The KSC5601 designator sequence should appear only once in a file,
+     *      at the begining of a line before any KSC5601 characters. This usually
+     *      means that it appears by itself on the first line of the file
+     *  ii) There are only 2 shifting sequences SO to shift into double byte mode
+     *      and SI to shift into single byte mode
+     */
+    private class CharsetEncoderISO2022KR extends CharsetEncoderICU {
+        public CharsetEncoderISO2022KR(CharsetICU cs) {
+            super(cs, fromUSubstitutionChar[myConverterData.version]);
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            myConverterData.reset();
+            setInitialStateFromUnicodeKR(this);
+        }
+        
+        /* This overrides the cbFromUWriteSub method in CharsetEncoderICU */
+        CoderResult cbFromUWriteSub (CharsetEncoderICU encoder, 
+            CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            CoderResult err = CoderResult.UNDERFLOW;
+            byte[] buffer = new byte[8];
+            int length, i = 0;
+            byte[] subchar;
+            
+            subchar = encoder.replacement();
+            length = subchar.length;
+            
+            if (myConverterData.version == 0) {
+                if (length == 1) {
+                    if (encoder.fromUnicodeStatus != 0) {
+                        /* in DBCS mode: switch to SBCS */
+                        encoder.fromUnicodeStatus = 0;
+                        buffer[i++] = UConverterConstants.SI;
+                    }
+                    buffer[i++] = subchar[0];
+                } else { /* length == 2 */
+                    if (encoder.fromUnicodeStatus == 0) {
+                        /* in SBCS mode: switch to DBCS */
+                        encoder.fromUnicodeStatus = 1;
+                        buffer[i++] = UConverterConstants.SO;
+                    }
+                    buffer[i++] = subchar[0];
+                    buffer[i++] = subchar[1];
+                }
+                err = CharsetEncoderICU.fromUWriteBytes(this, buffer, 0, i, target, offsets, source.position() - 1);
+            } else { 
+                /* save the subvonverter's substitution string */
+                byte[] currentSubChars = myConverterData.currentEncoder.replacement();
+                
+                /* set our substitution string into the subconverter */
+                myConverterData.currentEncoder.replaceWith(subchar);
+                myConverterData.currentConverter.subChar1 = fromUSubstitutionChar[0][0];
+                /* let the subconverter write the subchar, set/retrieve fromUChar32 state */
+                myConverterData.currentEncoder.fromUChar32 = encoder.fromUChar32;
+                err = myConverterData.currentEncoder.cbFromUWriteSub(myConverterData.currentEncoder, source, target, offsets);
+                encoder.fromUChar32 = myConverterData.currentEncoder.fromUChar32;
+                
+                /* restore the subconverter's substitution string */
+                myConverterData.currentEncoder.replaceWith(currentSubChars);
+                
+                if (err.isOverflow()) {
+                    if (myConverterData.currentEncoder.errorBufferLength > 0) {
+                        encoder.errorBuffer = (byte[])(myConverterData.currentEncoder.errorBuffer.clone());
+                    }
+                    encoder.errorBufferLength = myConverterData.currentEncoder.errorBufferLength;
+                    myConverterData.currentEncoder.errorBufferLength = 0;
+                }
+            }
+            
+            return err;
+        }
+        
+        private CoderResult encodeLoopIBM(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+
+            myConverterData.currentEncoder.fromUChar32 = fromUChar32;
+            err = myConverterData.currentEncoder.cnvMBCSFromUnicodeWithOffsets(source, target, offsets, flush);
+            fromUChar32 = myConverterData.currentEncoder.fromUChar32;
+            
+            if (err.isOverflow()) {
+                if (myConverterData.currentEncoder.errorBufferLength > 0) {
+                    errorBuffer = (byte[])(myConverterData.currentEncoder.errorBuffer.clone());
+                }
+                errorBufferLength = myConverterData.currentEncoder.errorBufferLength;
+                myConverterData.currentEncoder.errorBufferLength = 0;
+            }
+            
+            return err;
+        }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            int[] targetByteUnit = { 0x0000 };
+            int sourceChar = 0x0000;
+            boolean isTargetByteDBCS;
+            boolean oldIsTargetByteDBCS;
+            boolean usingFallback;
+            int length = 0;
+            boolean gotoGetTrail = false; // for goto getTrail label call
+            
+            /*
+             * if the version is 1 then the user is requesting
+             * conversion with ibm-25546 pass the argument to
+             * MBCS converter and return
+             */
+            if (myConverterData.version == 1) {
+                return encodeLoopIBM(source, target, offsets, flush);
+            }
+            
+            usingFallback = useFallback;
+            isTargetByteDBCS = fromUnicodeStatus == 0 ? false : true;
+            if ((sourceChar = fromUChar32) != 0 && target.hasRemaining()) {
+                gotoGetTrail = true;
+            }
+            
+            while (source.hasRemaining() || gotoGetTrail) {
+                targetByteUnit[0] = UConverterConstants.missingCharMarker;
+                
+                if (target.hasRemaining() || gotoGetTrail) {
+                    if (!gotoGetTrail) {
+                        sourceChar = source.get();
+                    
+                        /* do not convert SO/SI/ESC */
+                        if (IS_2022_CONTROL(sourceChar)) {
+                            /* callback(illegal) */
+                            err = CoderResult.malformedForLength(1);
+                            fromUChar32 = sourceChar;
+                            break;
+                        }
+                        myConverterData.currentConverter.sharedData.mbcs.outputType = CharsetMBCS.MBCS_OUTPUT_2;
+                        length = myConverterData.currentEncoder.fromUChar32(sourceChar, targetByteUnit, usingFallback);
+                        //length = MBCSFromUChar32_ISO2022(myConverterData.currentConverter.sharedData, sourceChar, targetByteUnit, usingFallback, CharsetMBCS.MBCS_OUTPUT_2); 
+                        if (length < 0) {
+                            length = -length; /* fallback */
+                        }
+                        /* only DBCS or SBCS characters are expected */
+                        /* DB characters with high bit set to 1 are expected */
+                        if (length > 2 || length == 0 || (((targetByteUnit[0] & 0x8080) != 0x8080) && length == 2)) {
+                            targetByteUnit[0] = UConverterConstants.missingCharMarker;
+                        }
+                    }
+                    if (!gotoGetTrail && targetByteUnit[0] != UConverterConstants.missingCharMarker) {
+                        oldIsTargetByteDBCS = isTargetByteDBCS;
+                        isTargetByteDBCS = (targetByteUnit[0] > 0x00FF);
+                        /* append the shift sequence */
+                        if (oldIsTargetByteDBCS != isTargetByteDBCS) {
+                            if (isTargetByteDBCS) {
+                                target.put((byte)UConverterConstants.SO);
+                            } else {
+                                target.put((byte)UConverterConstants.SI);
+                            }
+                            if (offsets != null) {
+                                offsets.put(source.position()-1);
+                            }
+                        }
+                        /* write the targetUniChar to target */
+                        if (targetByteUnit[0] <= 0x00FF) {
+                            if (target.hasRemaining()) {
+                                target.put((byte)targetByteUnit[0]);
+                                if (offsets != null) {
+                                    offsets.put(source.position()-1);
+                                }
+                            } else {
+                                errorBuffer[errorBufferLength++] = (byte)targetByteUnit[0];
+                                err = CoderResult.OVERFLOW;
+                            }
+                        } else {
+                            if (target.hasRemaining()) {
+                                target.put((byte)(UConverterConstants.UNSIGNED_BYTE_MASK & ((targetByteUnit[0]>>8) - 0x80)));
+                                if (offsets != null) {
+                                    offsets.put(source.position()-1);
+                                }
+                                if (target.hasRemaining()) {
+                                    target.put((byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (targetByteUnit[0]- 0x80)));
+                                    if (offsets != null) {
+                                        offsets.put(source.position()-1);
+                                    }
+                                } else {
+                                    errorBuffer[errorBufferLength++] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (targetByteUnit[0] - 0x80));
+                                    err = CoderResult.OVERFLOW;
+                                }
+                                
+                            } else {
+                                errorBuffer[errorBufferLength++] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & ((targetByteUnit[0]>>8) - 0x80));
+                                errorBuffer[errorBufferLength++] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (targetByteUnit[0]- 0x80));
+                                err = CoderResult.OVERFLOW;
+                            }
+                        }
+                    } else {
+                        /* oops.. the code point is unassigned
+                         * set the error and reason
+                         */
+                        
+                        /* check if the char is a First surrogate */
+                        if (gotoGetTrail || UTF16.isSurrogate((char)sourceChar)) {
+                            if (gotoGetTrail || UTF16.isLeadSurrogate((char)sourceChar)) {
+// getTrail label
+                                // reset gotoGetTrail flag
+                                gotoGetTrail = false;
+                                
+                                /* look ahead to find the trail surrogate */
+                                if (source.hasRemaining()) {
+                                    /* test the following code unit */
+                                    char trail = source.get();
+                                    source.position(source.position()-1);
+                                    if (UTF16.isTrailSurrogate(trail)) {
+                                        source.get();
+                                         sourceChar = UCharacter.getCodePoint((char)sourceChar, trail);
+                                         err = CoderResult.unmappableForLength(2);
+                                         /* convert this surrogate code point */
+                                         /* exit this condition tree */
+                                    } else {
+                                        /* this is an unmatched lead code unit (1st surrogate) */
+                                        /* callback(illegal) */
+                                        err = CoderResult.malformedForLength(1);
+                                    }
+                                } else {
+                                    /* no more input */
+                                    err = CoderResult.UNDERFLOW;
+                                }
+                            } else {
+                                /* this is an unmatched trail code unit (2nd surrogate ) */
+                                /* callback(illegal) */
+                                err = CoderResult.malformedForLength(1);
+                            }
+                        } else {
+                            /* callback(unassigned) for a BMP code point */
+                            err = CoderResult.unmappableForLength(1);
+                        }
+                        
+                        fromUChar32 = sourceChar;
+                        break;
+                    }
+                } else {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            /*
+             * the end of the input stream and detection of truncated input
+             * are handled by the framework, but for ISO-2022-KR conversion
+             * we need to be inASCII mode at the very end
+             * 
+             * conditions:
+             *  successful
+             *  not in ASCII mode
+             *  end of  input and no truncated input
+             */
+            if (!err.isError() && isTargetByteDBCS && flush && !source.hasRemaining() && fromUChar32 == 0) {
+                int sourceIndex;
+                
+                /* we are switching to ASCII */
+                isTargetByteDBCS = false;
+                
+                /* get the source index of the last input character */
+                sourceIndex = source.position();
+                if (sourceIndex > 0) {
+                    --sourceIndex;
+                    if (UTF16.isTrailSurrogate(source.get(sourceIndex)) && UTF16.isLeadSurrogate(source.get(sourceIndex-1))) {
+                        --sourceIndex;
+                    }
+                } else {
+                    sourceIndex = -1;
+                }
+                
+                CharsetEncoderICU.fromUWriteBytes(this, SHIFT_IN_STR, 0, 1, target, offsets, sourceIndex);
+            }
+            /*save the state and return */
+            fromUnicodeStatus = isTargetByteDBCS ? 1 : 0;
+            
+            return err;
+        }
+    }
+    
+    public CharsetDecoder newDecoder() {
+        switch (variant) {
+        case ISO_2022_JP:
+            return new CharsetDecoderISO2022JP(this);
+        
+        case ISO_2022_CN:
+            return new CharsetDecoderISO2022CN(this);
+            
+        case ISO_2022_KR:
+            setInitialStateToUnicodeKR();
+            return new CharsetDecoderISO2022KR(this);
+            
+        default: /* should not happen */
+            return null;
+        }
+    }
+    
+    public CharsetEncoder newEncoder() {
+        CharsetEncoderICU cnv;
+        
+        switch (variant) {
+        case ISO_2022_JP:
+            return new CharsetEncoderISO2022JP(this);
+            
+        case ISO_2022_CN:
+            return new CharsetEncoderISO2022CN(this);
+            
+        case ISO_2022_KR:
+            cnv = new CharsetEncoderISO2022KR(this);
+            setInitialStateFromUnicodeKR(cnv);
+            return cnv;
+            
+        default: /* should not happen */
+            return null;
+        }
+    }
+    
+    private void setInitialStateToUnicodeKR() {
+        if (myConverterData.version == 1) {
+            myConverterData.currentDecoder.toUnicodeStatus = 0;     /* offset */
+            myConverterData.currentDecoder.mode = 0;                /* state */
+            myConverterData.currentDecoder.toULength = 0;           /* byteIndex */
+        }
+    }
+    private void setInitialStateFromUnicodeKR(CharsetEncoderICU cnv) {
+        /* ISO-2022-KR the designator sequence appears only once
+         * in a file so we append it only once
+         */
+        if (cnv.errorBufferLength == 0) {
+            cnv.errorBufferLength = 4;
+            cnv.errorBuffer[0] = 0x1b;
+            cnv.errorBuffer[1] = 0x24;
+            cnv.errorBuffer[2] = 0x29;
+            cnv.errorBuffer[3] = 0x43;
+        }
+        if (myConverterData.version == 1) {
+            ((CharsetMBCS)myConverterData.currentEncoder.charset()).subChar1 = 0x1A;
+            myConverterData.currentEncoder.fromUChar32 = 0;
+            myConverterData.currentEncoder.fromUnicodeStatus = 1; /* prevLength */
+        }
+    }
+    
+    void getUnicodeSetImpl(UnicodeSet setFillIn, int which) {
+        int i;
+        /*open a set and initialize it with code points that are algorithmically round-tripped */
+        
+        switch(variant){
+        case ISO_2022_JP:
+           /*include JIS X 0201 which is hardcoded */
+            setFillIn.add(0xa5);
+            setFillIn.add(0x203e);
+            if((jpCharsetMasks[myConverterData.version]&CSM(ISO8859_1))!=0){
+                /*include Latin-1 some variants of JP */
+                setFillIn.add(0, 0xff);
+            
+            }
+            else {
+                /* include ASCII for JP */
+                setFillIn.add(0, 0x7f);
+             }
+            if(myConverterData.version==3 || myConverterData.version==4 ||which == ROUNDTRIP_AND_FALLBACK_SET){
+            /*
+             * Do not test(jpCharsetMasks[myConverterData.version]&CSM(HWKANA_7BIT))!=0 because the bit
+             * is on for all JP versions although version 3 & 4 (JIS7 and JIS8) use half-width Katakana.
+             * This is because all ISO_2022_JP variant are lenient in that they accept (in toUnicode) half-width
+             * Katakana via ESC.
+             * However, we only emit (fromUnicode) half-width Katakana according to the
+             * definition of each variant.
+             *
+             * When including fallbacks,
+             * we need to include half-width Katakana Unicode code points for all JP variants because
+             * JIS X 0208 has hardcoded fallbacks for them (which map to full-width Katakana).
+             */
+            /* include half-width Katakana for JP */
+                setFillIn.add(HWKANA_START, HWKANA_END);
+             }
+            break;
+        case ISO_2022_CN:
+            /* Include ASCII for CN */
+            setFillIn.add(0, 0x7f);
+            break;
+        case ISO_2022_KR:
+            /* there is only one converter for KR */
+          myConverterData.currentConverter.getUnicodeSetImpl(setFillIn, which);
+          break;
+        default:
+            break;
+        }
+        
+        //TODO Replaced by ucnv_MBCSGetFilteredUnicodeSetForUnicode() until
+        for(i=0; i<UCNV_2022_MAX_CONVERTERS;i++){
+            int filter;
+            if(myConverterData.myConverterArray[i]!=null){
+                if(variant==ISO_2022_CN && myConverterData.version==0 && i==CNS_11643){
+                    /*
+                     * 
+                     * version -specific for CN:
+                     * CN version 0 does not map CNS planes 3..7 although
+                     * they are all available in the CNS conversion table;
+                     * CN version 1 (-EXT) does map them all.
+                     * The two versions create different Unicode sets.
+                     */
+                    filter=CharsetMBCS.UCNV_SET_FILTER_2022_CN;
+                } else if(variant==ISO_2022_JP && i == JISX208){
+                    /* 
+                     * Only add code points that map to Shift-JIS codes
+                     * corrosponding to JIS X 208
+                     */
+                    filter=CharsetMBCS.UCNV_SET_FILTER_SJIS;
+                } else if(i==KSC5601){
+                    /*
+                     * Some of the KSC 5601 tables (Convrtrs.txt has this aliases on multiple tables)
+                     * are broader than GR94.
+                     */
+                    filter=CharsetMBCS.UCNV_SET_FILTER_GR94DBCS;
+                } else {
+                    filter=CharsetMBCS.UCNV_SET_FILTER_NONE;
+                }
+                
+                myConverterData.currentConverter.MBCSGetFilteredUnicodeSetForUnicode(myConverterData.myConverterArray[i],setFillIn, which, filter);
+           }
+        }
+        /*
+         * ISO Converter must not convert SO/SI/ESC despite what sub-converters do by themselves
+         * Remove these characters from the set.
+         */
+        setFillIn.remove(0x0e);
+        setFillIn.remove(0x0f);
+        setFillIn.remove(0x1b);
+        
+        /* ISO 2022 converter do not convert C! controls either */
+        setFillIn.remove(0x80, 0x9f);
+    }
+}
+
+
+
+
+
+
+
+
+
diff --git a/src/com/ibm/icu/charset/CharsetLMBCS.java b/src/com/ibm/icu/charset/CharsetLMBCS.java
new file mode 100644
index 0000000..61e3860
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetLMBCS.java
@@ -0,0 +1,1023 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.charset.CharsetMBCS.CharsetDecoderMBCS;
+import com.ibm.icu.charset.CharsetMBCS.CharsetEncoderMBCS;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.text.UnicodeSet;
+/**
+ * @author Michael Ow
+ *
+ */
+
+/*
+ * LMBCS
+ * 
+ * (Lotus Multi-Byte Character Set)
+ * 
+ * LMBS was invented in the alte 1980's and is primarily used in Lotus Notes
+ * databases and in Lotus 1-2-3 files. Programmers who work with the APIs
+ * into these products will sometimes need to deal with strings in this format.
+ * 
+ * The code in this file provides an implementation for an ICU converter of
+ * LMBCS to and from Unicode.
+ * 
+ * Since the LMBCS character set is only sparsely documented in existing
+ * printed or online material, we have added extensive annotation to this
+ * file to serve as a guide to understanding LMBCS.
+ * 
+ * LMBCS was originally designed with these four sometimes-competing design goals:
+ * -Provide encodings for characters in 12 existing national standards
+ *  (plus a few other characters)
+ * -Minimal memory footprint
+ * -Maximal speed of conversion into the existing national character sets
+ * -No need to track a changing state as you interpret a string.
+ * 
+ * All of the national character sets LMBCS was trying to encode are 'ANSI'
+ * based, in that the bytes from 0x20 - 0x7F are almost exactly the
+ * same common Latin unaccented characters and symbols in all character sets.
+ * 
+ * So, in order to help meet the speed & memory design goals, the common ANSI
+ * bytes from 0x20-0x7F are represented by the same single-byte values in LMBCS.
+ */
+class CharsetLMBCS extends CharsetICU {
+    /*
+     * The general LMBCS code unit is from 1-3 bytes. We can describe the 3 bytes as
+     * follows:
+     * [G] D1 [D2]
+     * That is, a sometimes-optional 'group' byte, followed by 1 and sometimes 2
+     * data bytes. The maximum size of a LMBCS character is 3 bytes:
+     */
+    private static final short ULMBCS_CHARSIZE_MAX = 3;
+    /*
+     * The single-byte values from 0x20 to 0x7F are examples of single D1 bytes.
+     * We often have to figure out if byte values are below or above this, so we
+     * use the ANSI nomenclature 'C0' and 'C1' to refer to the range of control
+     * characters just above & below the common lower-ANSI range.
+     */
+    private static final short ULMBCS_C0END    = 0x1F;
+    private static final short ULMBCS_C1START  = 0x80;
+    /*
+     * Most of the values less than 0x20 are reserved in LMBCS to announce
+     * which national character standard is being used for the 'D' bytes.
+     * In the comments we show that common name and the IBM character-set ID
+     * for these character-set announcers:
+     */
+    private static final short ULMBCS_GRP_L1   = 0x01; /* Latin-1      :ibm-850    */
+    private static final short ULMBCS_GRP_GR   = 0x02; /* Greek        :ibm-851    */
+    private static final short ULMBCS_GRP_HE   = 0x03; /* Hebrew       :ibm-1255   */
+    private static final short ULMBCS_GRP_AR   = 0x04; /* Arabic       :ibm-1256   */
+    private static final short ULMBCS_GRP_RU   = 0x05; /* Cyrillic     :ibm-1251   */
+    private static final short ULMBCS_GRP_L2   = 0x06; /* Latin-2      :ibm-852    */
+    private static final short ULMBCS_GRP_TR   = 0x08; /* Turkish      :ibm-1254   */
+    private static final short ULMBCS_GRP_TH   = 0x0B; /* Thai         :ibm-874    */
+    private static final short ULMBCS_GRP_JA   = 0x10; /* Japanese     :ibm-943    */
+    private static final short ULMBCS_GRP_KO   = 0x11; /* Korean       :ibm-1261   */
+    private static final short ULMBCS_GRP_TW   = 0x12; /* Chinese SC   :ibm-950    */
+    private static final short ULMBCS_GRP_CN   = 0x13; /* Chinese TC   :ibm-1386   */
+    /* 
+     * So, the beginnning of understanding LMBCS is that IF the first byte of a LMBCS
+     * character is one of those 12 values, you can interpret the remaining bytes of 
+     * that character as coming from one of those character sets. Since the lower
+     * ANSI bytes already are represented in singl bytes, using one of the chracter
+     * set announcers is used to announce a character that starts with a byte of
+     * 0x80 or greater.
+     * 
+     * The character sets are arranged so that the single byte sets all appear
+     * before the multi-byte character sets. When we need to tell whether a
+     * group byte is for a single byte char set or not we use this definition:
+     */
+    private static final short ULMBCS_DOUBLEOPTGROUP_START = 0x10;
+    /*
+     * However, to fully understand LMBCS, you must also understand a series of
+     * exceptions & optimizations made in service of the design goals.
+     * 
+     * First, those of you who are character set mavens may have noticed that
+     * the 'double-byte' character sets are actually multi-byte chracter sets
+     * that can have 1 or two bytes, even in upper-ascii range. To force
+     * each group byte to introduce a fixed-width encoding (to make it faster to
+     * count characters), we use a convention of doubling up on the group byte
+     * to introduce any single-byte character > 0x80 in an otherwise double-byte
+     * character set. So, for example, the LMBCS sequence x10 x10 xAE is the
+     * same as '0xAE' in the Japanese code page 943.
+     * 
+     * Next, you will notice that the list of group bytes has some gaps.
+     * These are used in various ways.
+     * 
+     * We reserve a few special single byte values for common control
+     * characters. These are in the same place as their ANSI equivalents for speed.
+     */
+    private static final short ULMBCS_HT   = 0x09; /* Fixed control-char - Horizontal Tab */
+    private static final short ULMBCS_LF   = 0x0A; /* Fixed control-char - Line Feed */
+    private static final short ULMBCS_CR   = 0x0D; /* Fixed control-char - Carriage Return */
+    /*
+     * Then, 1-2-3 reserved a special single-byte character to put at the
+     * beginning of internal 'system' range names:
+     */
+    private static final short ULMBCS_123SYSTEMRANGE   = 0x19;
+    /*
+     * Then we needed a place to put all the other ansi control characters
+     * that must be moved to different values because LMBCS reserves those
+     * values for other purposes. To represent the control characters, we start
+     * with a first byte of 0x0F & add the control character value as the
+     * second byte.
+     */
+    private static final short ULMBCS_GRP_CTRL = 0x0F;
+    /*
+     * For the C0 controls (less than 0x20), we add 0x20 to preserve the
+     * useful doctrine that any byte less than 0x20 in a LMBCS char must be
+     * the first byte of a character:
+     */
+    private static final short ULMBCS_CTRLOFFSET   = 0x20;
+    /*
+     * Where to put the characters that aren't part of any of the 12 national
+     * character sets? The first thing that was done, in the earlier years of
+     * LMBCS, was to use up the spaces of the form
+     *  [G] D1,
+     * where 'G' was one of the single-byte character groups, and
+     * D1 was less than 0x80. These sequences are gathered together
+     * into a Lotus-invented doublebyte character set to represent a
+     * lot of stray values. Internally, in this implementation, we track this
+     * as group '0', as a place to tuck this exceptions list.
+     */
+    private static final short ULMBCS_GRP_EXCEPT   = 0x00;
+    /*
+     * Finally, as the durability and usefulness of UNICODE became clear,
+     * LOTUS added a new group 0x14 to hold Unicode values not otherwise
+     * represented in LMBCS:
+     */
+    private static final short ULMBCS_GRP_UNICODE  = 0x14;
+    /*
+     * The two bytes appearing after a 0x14 are interpreted as UTF-16 BE
+     * (Big Endian) characters. The exception comes when UTF16 
+     * representation would have a zero as the second byte. In that case,
+     * 'F6' is used in its place, and the bytes are swapped. (This prevents
+     * LMBCS from encoding any Unicode values of the form U+F6xx, but that's OK:
+     * 0xF6xx is in the middle of the Private Use Area.)
+     */
+    private static char ULMBCS_UNICOMPATZERO    = 0x00F6;
+    /*
+     * It is also useful in our code to have a constant for the size of
+     * a LMBCS char that holds a literal Unicode value.
+     */
+    private static final short ULMBCS_UNICODE_SIZE = 3;
+    /*
+     * To squish the LMBCS representation down even further, and to make
+     * translations even faster, sometimes the optimization group byte can be dropped
+     * from a LMBCS character. This is decided on a process-by-process basis. The
+     * group byte that is dropped is called the 'optimization group.'
+     * 
+     * For Notes, the optimization group is always 0x1.
+     */
+    //private static final short ULMBCS_DEFAULTOPTGROUP  = 0x01;
+    /* For 1-2-3 files, the optimization group is stored in the header of the 1-2-3
+     * file.
+     * In any case, when using ICU, you either pass in the
+     * optimization group as part of the name of the converter (LMBCS-1, LMBCS-2,
+     * etc.). Using plain 'LMBCS' as the name of the converter will give you
+     * LMBCS-1.
+     */
+    
+    /* Implementation strategy */
+    /* 
+     * Because of the extensive use of other character sets, the LMBCS converter
+     * keeps a mapping between optimization groups and IBM character sets, so that
+     * ICU converters can be created and used as needed.
+     * 
+     * As you can see, even though any byte below 0x20 could be an optimization
+     * byte, only those at 0x13 or below can map to an actual converter. To limit
+     * some loops and searches, we define a value for that last group converter:
+     */
+    private static final short ULMBCS_GRP_LAST = 0x13; /* last LMBCS group that has a converter */
+    
+    private static final String[] OptGroupByteToCPName = {
+        /* 0x0000 */ "lmb-excp", /* internal home for the LOTUS exceptions list */
+        /* 0x0001 */ "ibm-850",
+        /* 0x0002 */ "ibm-851",
+        /* 0x0003 */ "windows-1255",
+        /* 0x0004 */ "windows-1256",
+        /* 0x0005 */ "windows-1251",
+        /* 0x0006 */ "ibm-852",
+        /* 0x0007 */ null,      /* Unused */
+        /* 0x0008 */ "windows-1254",
+        /* 0x0009 */ null,      /* Control char HT */
+        /* 0x000A */ null,      /* Control char LF */
+        /* 0x000B */ "windows-874",
+        /* 0x000C */ null,      /* Unused */
+        /* 0x000D */ null,      /* Control char CR */
+        /* 0x000E */ null,      /* Unused */
+        /* 0x000F */ null,      /* Control chars: 0x0F20 + C0/C1 character: algorithmic */
+        /* 0x0010 */ "windows-932",
+        /* 0x0011 */ "windows-949",
+        /* 0x0012 */ "windows-950",
+        /* 0x0013 */ "windows-936",
+        /* The rest are null, including the 0x0014 Unicode compatibility region
+         * and 0x0019, the 1-2-3 system range control char */
+        /* 0x0014 */ null 
+    };
+    
+    /* That's approximately all the data that's needed for translating
+     * LMBCS to Unicode.
+     * 
+     * However, to translate Unicode to LMBCS, we need some more support.
+     * 
+     * That's because there are often more than one possible mappings from a Unicode
+     * code point back into LMBCS. The first thing we do is look up into a table
+     * to figure out if there are more than one possible mapplings. This table,
+     * arranged by Unicode values (including ranges) either lists which group
+     * to use, or says that it could go into one or more of the SBCS sets, or
+     * into one or more of the DBCS sets. (If the character exists in both DBCS &
+     * SBCS, the table will place it in the SBCS sets, to make the LMBCS code point
+     * length as small as possible. Here's the two special markers we use to indicate
+     * ambiguous mappings:
+     */
+    private static final short ULMBCS_AMBIGUOUS_SBCS   = 0x80; /* could fit in more than one
+                                                           LMBCS sbcs native encoding
+                                                           (example: most accented latin) */
+    private static final short ULMBCS_AMBIGUOUS_MBCS   = 0x81; /* could fit in more than one
+                                                           LMBCS mbcs native encoding
+                                                           (example: Unihan) */
+    
+    /* And here's a simple way to see if a group falls in an appropriate range */
+    private boolean ULMBCS_AMBIGUOUS_MATCH(short agroup, short xgroup) {
+        return (((agroup == ULMBCS_AMBIGUOUS_SBCS) &&
+                 (xgroup < ULMBCS_DOUBLEOPTGROUP_START)) ||
+                ((agroup == ULMBCS_AMBIGUOUS_MBCS) &&
+                 (xgroup >= ULMBCS_DOUBLEOPTGROUP_START)));
+    }
+    
+    /* The table & some code to use it: */
+    private static class _UniLMBCSGrpMap {
+        int uniStartRange;
+        int uniEndRange;
+        short GrpType;
+        _UniLMBCSGrpMap(int uniStartRange, int uniEndRange, short GrpType) {
+            this.uniStartRange  = uniStartRange;
+            this.uniEndRange    = uniEndRange;
+            this.GrpType        = GrpType;
+        }
+    }
+    
+    private static final _UniLMBCSGrpMap[] UniLMBCSGrpMap = {
+        new _UniLMBCSGrpMap(0x0001, 0x001F, ULMBCS_GRP_CTRL),
+        new _UniLMBCSGrpMap(0x0080, 0x009F, ULMBCS_GRP_CTRL),
+        new _UniLMBCSGrpMap(0x00A0, 0x01CD, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x01CE, 0x01CE, ULMBCS_GRP_TW),
+        new _UniLMBCSGrpMap(0x01CF, 0x02B9, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x02BA, 0x02BA, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x02BC, 0x02C8, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x02C9, 0x02D0, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x02D8, 0x02DD, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x0384, 0x03CE, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x0400, 0x044E, ULMBCS_GRP_RU),
+        new _UniLMBCSGrpMap(0x044F, 0x044F, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x0450, 0x0491, ULMBCS_GRP_RU),
+        new _UniLMBCSGrpMap(0x05B0, 0x05F2, ULMBCS_GRP_HE),
+        new _UniLMBCSGrpMap(0x060C, 0x06AF, ULMBCS_GRP_AR),
+        new _UniLMBCSGrpMap(0x0E01, 0x0E5B, ULMBCS_GRP_TH),
+        new _UniLMBCSGrpMap(0x200C, 0x200F, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2010, 0x2010, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2013, 0x2015, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2016, 0x2016, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2017, 0x2024, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2025, 0x2025, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2026, 0x2026, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2027, 0x2027, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x2030, 0x2033, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2035, 0x2035, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2039, 0x203A, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x203B, 0x203B, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2074, 0x2074, ULMBCS_GRP_KO),
+        new _UniLMBCSGrpMap(0x207F, 0x207F, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2081, 0x2084, ULMBCS_GRP_KO),
+        new _UniLMBCSGrpMap(0x20A4, 0x20AC, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2103, 0x2109, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2111, 0x2126, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x212B, 0x212B, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2135, 0x2135, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2153, 0x2154, ULMBCS_GRP_KO),
+        new _UniLMBCSGrpMap(0x215B, 0x215E, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2160, 0x2179, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2190, 0x2195, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2196, 0x2199, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x21A8, 0x21A8, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x21B8, 0x21B9, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x21D0, 0x21D5, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x21E7, 0x21E7, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x2200, 0x220B, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x220F, 0x2215, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2219, 0x2220, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2223, 0x2228, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2229, 0x222B, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x222C, 0x223D, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2245, 0x2248, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x224C, 0x224C, ULMBCS_GRP_TW),
+        new _UniLMBCSGrpMap(0x2252, 0x2252, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2260, 0x2265, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2266, 0x226F, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2282, 0x2297, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2299, 0x22BF, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x22C0, 0x22C0, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2310, 0x2310, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2312, 0x2312, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2318, 0x2321, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2318, 0x2321, ULMBCS_GRP_CN),
+        new _UniLMBCSGrpMap(0x2460, 0x24E9, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2500, 0x2500, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2501, 0x2501, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2502, 0x2502, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2503, 0x2503, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2504, 0x2505, ULMBCS_GRP_TW),
+        new _UniLMBCSGrpMap(0x2506, 0x2665, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0x2666, 0x2666, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2666, 0x2666, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0x2667, 0x2E7F, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0x2E80, 0xF861, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0xF862, 0xF8FF, ULMBCS_GRP_EXCEPT),
+        new _UniLMBCSGrpMap(0xF900, 0xFA2D, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0xFB00, 0xFEFF, ULMBCS_AMBIGUOUS_SBCS),
+        new _UniLMBCSGrpMap(0xFF01, 0xFFEE, ULMBCS_AMBIGUOUS_MBCS),
+        new _UniLMBCSGrpMap(0xFFFF, 0xFFFF, ULMBCS_GRP_UNICODE)
+    };
+    
+    static short FindLMBCSUniRange(char uniChar) {
+        int index = 0;
+        
+        while (uniChar > UniLMBCSGrpMap[index].uniEndRange) {
+            index++;
+        }
+        
+        if (uniChar >= UniLMBCSGrpMap[index].uniStartRange) {
+            return UniLMBCSGrpMap[index].GrpType;
+        }
+        return ULMBCS_GRP_UNICODE;
+    }
+    
+    /*
+     * We also ask the creator of a converter to send in a preferred locale
+     * that we can use in resolving ambiguous mappings. They send the locale
+     * in as a string, and we map it, if possible, to one of the
+     * LMBCS groups. We use this table, and the associated code, to
+     * do the lookup:
+     * 
+     *     This table maps locale ID's to LMBCS opt groups.
+     *     The default return is group 0x01. Note that for
+     *     performance reasons, the table is sorted in
+     *     increasing alphabetic order, with the notable
+     *     exception of zhTW. This is to force the check
+     *     for Traditional Chinese before dropping back to
+     *     Simplified.
+     *     Note too that the Latin-1 groups have been
+     *     commented out because it's the default, and
+     *     this shortens the table, allowing a serial
+     *     search to go quickly.
+     */
+    private static class _LocaleLMBCSGrpMap {
+        String LocaleID;
+        short OptGroup;
+        _LocaleLMBCSGrpMap(String LocaleID, short OptGroup) {
+            this.LocaleID = LocaleID;
+            this.OptGroup = OptGroup;
+        }
+    }
+    private static final _LocaleLMBCSGrpMap[] LocaleLMBCSGrpMap = {
+        new _LocaleLMBCSGrpMap("ar", ULMBCS_GRP_AR),
+        new _LocaleLMBCSGrpMap("be", ULMBCS_GRP_RU),
+        new _LocaleLMBCSGrpMap("bg", ULMBCS_GRP_L2),
+        // new _LocaleLMBCSGrpMap("ca", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("cs", ULMBCS_GRP_L2),
+        // new _LocaleLMBCSGrpMap("da", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("de", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("el", ULMBCS_GRP_GR),
+        // new _LocaleLMBCSGrpMap("en", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("es", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("et", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("fi", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("fr", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("he", ULMBCS_GRP_HE),
+        new _LocaleLMBCSGrpMap("hu", ULMBCS_GRP_L2),
+        // new _LocaleLMBCSGrpMap("is", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("it", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("iw", ULMBCS_GRP_HE),
+        new _LocaleLMBCSGrpMap("ja", ULMBCS_GRP_JA),
+        new _LocaleLMBCSGrpMap("ko", ULMBCS_GRP_KO),
+        // new _LocaleLMBCSGrpMap("lt", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("lv", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("mk", ULMBCS_GRP_RU),
+        // new _LocaleLMBCSGrpMap("nl", ULMBCS_GRP_L1),
+        // new _LocaleLMBCSGrpMap("no", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("pl", ULMBCS_GRP_L2),
+        // new _LocaleLMBCSGrpMap("pt", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("ro", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("ru", ULMBCS_GRP_RU),
+        new _LocaleLMBCSGrpMap("sh", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("sk", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("sl", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("sq", ULMBCS_GRP_L2),
+        new _LocaleLMBCSGrpMap("sr", ULMBCS_GRP_RU),
+        // new _LocaleLMBCSGrpMap("sv", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("th", ULMBCS_GRP_TH),
+        new _LocaleLMBCSGrpMap("tr", ULMBCS_GRP_TR),
+        new _LocaleLMBCSGrpMap("uk", ULMBCS_GRP_RU),
+        // new _LocaleLMBCSGrpMap("vi", ULMBCS_GRP_L1),
+        new _LocaleLMBCSGrpMap("zhTW", ULMBCS_GRP_TW),
+        new _LocaleLMBCSGrpMap("zh", ULMBCS_GRP_CN),
+        new _LocaleLMBCSGrpMap(null, ULMBCS_GRP_L1)
+    };
+    static short FindLMBCSLocale(String LocaleID) {
+        int index = 0;
+        
+        if (LocaleID == null) {
+            return 0;
+        }
+        
+        while (LocaleLMBCSGrpMap[index].LocaleID != null) {
+            if (LocaleLMBCSGrpMap[index].LocaleID == LocaleID) {
+                return LocaleLMBCSGrpMap[index].OptGroup;
+            } else if (LocaleLMBCSGrpMap[index].LocaleID.compareTo(LocaleID) > 0){
+               break;
+            }
+            index++;
+        }
+        return ULMBCS_GRP_L1;
+    }
+    
+    /*
+     * Before we get to the main body of code, here's how we hook up the rest
+     * of ICU. ICU converters are required to define a structure that includes
+     * some function pointers, and some common data, in the style of a C++
+     * vtable. There is also room in there for converter-specific data. LMBCS
+     * uses that converter-specific data to keep track of the 12 subconverters
+     * we use, the optimization group, and the group (if any) that matches the
+     * locale. We have one structure instantiated for each of the 12 possible
+     * optimization groups.
+     */
+    private class UConverterDataLMBCS {
+        UConverterSharedData[] OptGrpConverter; /* Converter per Opt. grp. */
+        short OptGroup;                         /* default Opt. grp. for this LMBCS session */
+        short localeConverterIndex;             /* reasonable locale match for index */
+        CharsetDecoderMBCS decoder;
+        CharsetEncoderMBCS encoder;
+        CharsetMBCS charset;
+        UConverterDataLMBCS() {
+            OptGrpConverter = new UConverterSharedData[ULMBCS_GRP_LAST + 1];
+            charset = (CharsetMBCS)CharsetICU.forNameICU("ibm-850");
+            encoder = (CharsetEncoderMBCS)charset.newEncoder();
+            decoder = (CharsetDecoderMBCS)charset.newDecoder();
+        }
+    }
+    
+    private UConverterDataLMBCS extraInfo; /* extraInfo in ICU4C implementation */
+    
+    public CharsetLMBCS(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = ULMBCS_CHARSIZE_MAX; 
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        
+        extraInfo = new UConverterDataLMBCS();
+        
+        for (int i = 0; i <= ULMBCS_GRP_LAST; i++) {
+            if (OptGroupByteToCPName[i] != null) {
+                extraInfo.OptGrpConverter[i] = ((CharsetMBCS)CharsetICU.forNameICU(OptGroupByteToCPName[i])).sharedData;
+            }
+        }
+        
+      //get the Opt Group number for the LMBCS converter
+        int option = Integer.parseInt(icuCanonicalName.substring(6));
+        extraInfo.OptGroup = (short)option;
+        extraInfo.localeConverterIndex = FindLMBCSLocale(ULocale.getDefault().getBaseName());
+    }
+    
+    class CharsetDecoderLMBCS extends CharsetDecoderICU {
+        public CharsetDecoderLMBCS(CharsetICU cs) {
+            super(cs);
+            implReset();
+        }
+    
+        protected void implReset() {
+            super.implReset();
+        }
+        
+        /* A function to call when we are looking at the Unicode group byte in LMBCS */
+        private char GetUniFromLMBCSUni(ByteBuffer ppLMBCSin) {
+            short HighCh = (short)(ppLMBCSin.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+            short LowCh  = (short)(ppLMBCSin.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+            
+            if (HighCh == ULMBCS_UNICOMPATZERO) {
+                HighCh = LowCh;
+                LowCh = 0; /* zero-byte in LSB special character */
+            }
+            
+            return (char)((HighCh << 8) | LowCh);
+        }
+        
+        private int LMBCS_SimpleGetNextUChar(UConverterSharedData cnv, ByteBuffer source, int positionOffset, int length) {
+            int uniChar;
+            int oldSourceLimit;
+            int oldSourcePos;
+            
+            extraInfo.charset.sharedData = cnv;
+            
+            oldSourceLimit = source.limit();
+            oldSourcePos = source.position();
+            
+            source.position(oldSourcePos + positionOffset);
+            source.limit(source.position() + length);
+            
+            uniChar = extraInfo.decoder.simpleGetNextUChar(source, false);
+            
+            source.limit(oldSourceLimit);
+            source.position(oldSourcePos);
+
+            return uniChar;
+        }
+        /* Return the Unicode representation for the current LMBCS character. */
+        /*
+         * Note: Because there is no U_TRUNCATED_CHAR_FOUND error code in ICU4J, we
+         *       are going to use BufferOverFlow. The error will be handled correctly
+         *       by the calling function.
+         */
+        private int LMBCSGetNextUCharWorker(ByteBuffer source, CoderResult[] err) {
+            int uniChar = 0;  /* an output Unicode char */
+            short CurByte;   /* A byte from the input stream */
+            
+            /* error check */
+            if (!source.hasRemaining()) {
+                err[0] = CoderResult.malformedForLength(0);
+                return 0xffff;
+            }
+            /* Grab first byte & save address for error recovery */
+            CurByte = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+            
+            /*
+             * at entry of each if clause:
+             * 1. 'CurByte' points at the first byte of a LMBCS character
+             * 2. 'source' points to the next byte of the source stream after 'CurByte'
+             * 
+             * the job of each if clause is:
+             * 1. set 'source' to the point at the beginning of the next char (not if LMBCS char is only 1 byte)
+             * 2. set 'uniChar' up with the right Unicode value, or set 'err' appropriately
+             */
+            /* First lets check the simple fixed values. */
+            if ((CurByte > ULMBCS_C0END && CurByte < ULMBCS_C1START) /* ascii range */ ||
+                CurByte == 0 || CurByte == ULMBCS_HT || CurByte == ULMBCS_CR || CurByte == ULMBCS_LF ||
+                CurByte == ULMBCS_123SYSTEMRANGE) {
+                
+                uniChar = CurByte;
+            } else {
+                short group;
+                UConverterSharedData cnv;
+                
+                if (CurByte == ULMBCS_GRP_CTRL) {  /* Control character group - no opt group update */
+                    short C0C1byte;
+                    /* CHECK_SOURCE_LIMIT(1) */
+                    if (source.position() + 1 > source.limit()) {
+                        err[0] = CoderResult.OVERFLOW;
+                        source.position(source.limit());
+                        return 0xFFFF;
+                    }
+                    C0C1byte = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                    uniChar = (C0C1byte < ULMBCS_C1START) ? C0C1byte - ULMBCS_CTRLOFFSET : C0C1byte;
+                } else if (CurByte == ULMBCS_GRP_UNICODE) { /* Unicode Compatibility group: Big Endian UTF16 */
+                    /* CHECK_SOURCE_LIMIT(2) */
+                    if (source.position() + 2 > source.limit()) {
+                        err[0] = CoderResult.OVERFLOW;
+                        source.position(source.limit());
+                        return 0xFFFF;
+                    }
+                    
+                    /* don't check for error indicators fffe/ffff below */
+                    return GetUniFromLMBCSUni(source);
+                } else if (CurByte <= ULMBCS_CTRLOFFSET) {
+                    group = CurByte;
+                    if (group > ULMBCS_GRP_LAST || (cnv = extraInfo.OptGrpConverter[group]) == null) {
+                        /* this is not a valid group byte - no converter */
+                        err[0] = CoderResult.unmappableForLength(1);
+                    } else if (group >= ULMBCS_DOUBLEOPTGROUP_START) {
+                        /* CHECK_SOURCE_LIMIT(2) */
+                        if (source.position() + 2 > source.limit()) {
+                            err[0] = CoderResult.OVERFLOW;
+                            source.position(source.limit());
+                            return 0xFFFF;
+                        }
+                        
+                        /* check for LMBCS doubled-group-byte case */
+                        if (source.get(source.position()) == group) {
+                            /* single byte */
+                            source.get();
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, source, 0, 1);
+                            source.get();
+                        } else {
+                            /* double byte */
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, source, 0, 2);
+                            source.get();
+                            source.get();
+                        }
+                    } else { /* single byte conversion */
+                        /* CHECK_SOURCE_LIMIT(1) */
+                        if (source.position() + 1 > source.limit()) {
+                            err[0] = CoderResult.OVERFLOW;
+                            source.position(source.limit());
+                            return 0xFFFF;
+                        }
+                        CurByte = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                        
+                        if (CurByte >= ULMBCS_C1START) {
+                            uniChar = CharsetMBCS.MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv.mbcs, CurByte);
+                        } else {
+                            /*
+                             * The non-optimizable oddballs where there is an explicit byte
+                             * AND the second byte is not in the upper ascii range
+                             */
+                            byte[] bytes = new byte[2];
+                            
+                            cnv = extraInfo.OptGrpConverter[ULMBCS_GRP_EXCEPT];
+                            
+                            /* Lookup value must include opt group */
+                            bytes[0] = (byte)group;
+                            bytes[1] = (byte)CurByte;
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, ByteBuffer.wrap(bytes), 0, 2);
+                        }
+                    }
+                    
+                } else if (CurByte >= ULMBCS_C1START) { /* group byte is implicit */
+                    group = extraInfo.OptGroup;
+                    cnv = extraInfo.OptGrpConverter[group];
+                    if (group >= ULMBCS_DOUBLEOPTGROUP_START) { /* double byte conversion */
+                        if (CharsetMBCS.MBCS_ENTRY_IS_TRANSITION(cnv.mbcs.stateTable[0][CurByte]) /* isLeadByte */) {
+                            /* CHECK_SOURCE_LIMIT(0) */
+                            if (source.position() + 0 > source.limit()) {
+                                err[0] = CoderResult.OVERFLOW;
+                                source.position(source.limit());
+                                return 0xFFFF;
+                            }
+                            
+                            /* let the MBCS conversion consume CurByte again */
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, source, -1, 1);
+                        } else {
+                            /* CHECK_SOURCE_LIMIT(1) */
+                            if (source.position() + 1 > source.limit()) {
+                                err[0] = CoderResult.OVERFLOW;
+                                source.position(source.limit());
+                                return 0xFFFF;
+                            }
+                            
+                            /* let the MBCS conversion consume CurByte again */
+                            uniChar = LMBCS_SimpleGetNextUChar(cnv, source, -1, 2);
+                            source.get();
+                        }
+                    } else {
+                        uniChar = CharsetMBCS.MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(cnv.mbcs, CurByte);
+                    }
+                }
+            }
+            
+            return uniChar;
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) { 
+            CoderResult[] err = new CoderResult[1];
+            err[0] = CoderResult.UNDERFLOW;
+            byte[] LMBCS = new byte[ULMBCS_CHARSIZE_MAX * 2]; /* Increase the size for proper handling in subsequent calls to MBCS functions */
+            char uniChar;   /* one output Unicode char */
+            int saveSource; /* beginning of current code point */
+            int errSource = 0; /* index to actual input in case an error occurs */
+            byte savebytes = 0;
+            
+            /* Process from source to limit, or until error */
+            while (err[0].isUnderflow() && source.hasRemaining() && target.hasRemaining()) {
+                saveSource = source.position(); /* beginning of current code point */
+                if (toULength > 0) { /* reassemble char from previous call */
+                    int size_old = toULength;
+                    ByteBuffer tmpSourceBuffer;
+                    
+                    /* limit from source is either remainder of temp buffer, or user limit on source */
+                    int size_new_maybe_1 = ULMBCS_CHARSIZE_MAX - size_old;
+                    int size_new_maybe_2 = source.remaining();
+                    int size_new = (size_new_maybe_1 < size_new_maybe_2) ? size_new_maybe_1 : size_new_maybe_2;
+                    savebytes = (byte)(size_old + size_new);
+                    for (int i = 0; i < savebytes; i++) {
+                        if (i < size_old) {
+                            LMBCS[i] = toUBytesArray[i];
+                        } else {
+                            LMBCS[i] = source.get();
+                        }
+                    }
+                    tmpSourceBuffer = ByteBuffer.wrap(LMBCS);
+                    tmpSourceBuffer.limit(savebytes);
+                    uniChar = (char)LMBCSGetNextUCharWorker(tmpSourceBuffer, err);
+                    source.position(saveSource + tmpSourceBuffer.position() - size_old);
+                    errSource = saveSource - size_old;
+                    
+                    if (err[0].isOverflow()) { /* err == U_TRUNCATED_CHAR_FOUND */ 
+                        /* evil special case: source buffers so small a char spans more than 2 buffers */
+                        toULength = savebytes;
+                        for (int i = 0; i < savebytes; i++) {
+                            toUBytesArray[i] = LMBCS[i];
+                        }
+                        source.position(source.limit());
+                        err[0] = CoderResult.UNDERFLOW;
+                        return err[0];
+                    } else {
+                        /* clear the partial-char marker */
+                        toULength = 0;
+                    }
+                } else {
+                    errSource = saveSource;
+                    uniChar = (char)LMBCSGetNextUCharWorker(source, err);
+                    savebytes = (byte)(source.position() - saveSource);
+                }
+                
+                if (err[0].isUnderflow()) {
+                    if (uniChar < 0x0fffe) {
+                        target.put(uniChar);
+                        if (offsets != null) {
+                            offsets.put(saveSource);
+                        }
+                    } else if (uniChar == 0xfffe) {
+                        err[0] = CoderResult.unmappableForLength(source.position() - saveSource);
+                    } else /* if (uniChar == 0xffff) */ {
+                        err[0] = CoderResult.malformedForLength(source.position() - saveSource);
+                    }
+                }
+            }
+            /* If target ran out before source, return over flow buffer error. */
+            if (err[0].isUnderflow() && source.hasRemaining() && !target.hasRemaining()) {
+                err[0] = CoderResult.OVERFLOW;
+            } else if (!err[0].isUnderflow()) {
+                /* If character incomplete or unmappable/illegal, store it in toUBytesArray[] */
+                toULength = savebytes;
+                if (savebytes > 0) {
+                    for (int i = 0; i < savebytes; i++) {
+                        toUBytesArray[i] = source.get(errSource + i);
+                    }
+                }
+                if (err[0].isOverflow()) { /* err == U_TRUNCATED_CHAR_FOUND */
+                    err[0] = CoderResult.UNDERFLOW;
+                }
+            }
+            return err[0];
+        }
+    }
+    
+    class CharsetEncoderLMBCS extends CharsetEncoderICU {
+        public CharsetEncoderLMBCS(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+        
+        protected void implReset() {
+            super.implReset();
+        }
+        /*
+         * Here's the basic helper function that we use when converting from
+         * Unicode to LMBCS, and we suspect that a Unicode character will fit into
+         * one of the 12 groups. The return value is the number of bytes written
+         * starting at pStartLMBCS (if any).
+         */
+        private int LMBCSConversionWorker(short group, byte[] LMBCS, char pUniChar, short[] lastConverterIndex, boolean[] groups_tried) {
+            byte pLMBCS = 0;
+            UConverterSharedData xcnv = extraInfo.OptGrpConverter[group];
+            
+            int bytesConverted;
+            int[] value = new int[1];
+            short firstByte;
+            
+            extraInfo.charset.sharedData = xcnv;
+            bytesConverted = extraInfo.encoder.fromUChar32(pUniChar, value, false);
+            
+            /* get the first result byte */
+            if (bytesConverted > 0) {
+                firstByte = (short)((value[0] >> ((bytesConverted - 1) * 8)) & UConverterConstants.UNSIGNED_BYTE_MASK);
+            } else {
+                /* most common failure mode is an unassigned character */
+                groups_tried[group] = true;
+                return 0;
+            }
+            
+            lastConverterIndex[0] = group;
+            
+            /* 
+             * All initial byte values in lower ascii range should have been caught by now,
+             * except with the exception group.
+             */
+            
+            /* use converted data: first write 0, 1 or two group bytes */
+            if (group != ULMBCS_GRP_EXCEPT && extraInfo.OptGroup != group) {
+                LMBCS[pLMBCS++] = (byte)group;
+                if (bytesConverted == 1 && group >= ULMBCS_DOUBLEOPTGROUP_START) {
+                    LMBCS[pLMBCS++] = (byte)group;
+                }
+            }
+            
+            /* don't emit control chars */
+            if (bytesConverted == 1 && firstByte < 0x20) {
+                return 0;
+            }
+            
+            /* then move over the converted data */
+            switch (bytesConverted) {
+            case 4:
+                LMBCS[pLMBCS++] = (byte)(value[0] >> 24);
+            case 3:
+                LMBCS[pLMBCS++] = (byte)(value[0] >> 16);
+            case 2:
+                LMBCS[pLMBCS++] = (byte)(value[0] >> 8);
+            case 1:
+                LMBCS[pLMBCS++] = (byte)value[0];
+            default:
+                /* will never occur */
+                break;
+            }
+            
+            return pLMBCS;
+        }
+        /*
+         * This is a much simpler version of above, when we
+         * know we are writing LMBCS using the Unicode group.
+         */
+        private int LMBCSConvertUni(byte[] LMBCS, char uniChar) {
+            int index = 0;
+            short LowCh  = (short)(uniChar & UConverterConstants.UNSIGNED_BYTE_MASK);
+            short HighCh = (short)((uniChar >> 8) & UConverterConstants.UNSIGNED_BYTE_MASK);
+            
+            LMBCS[index++] = (byte)ULMBCS_GRP_UNICODE;
+            
+            if (LowCh == 0) {
+                LMBCS[index++] = (byte)ULMBCS_UNICOMPATZERO;
+                LMBCS[index++] = (byte)HighCh;
+            } else {
+                LMBCS[index++] = (byte)HighCh;
+                LMBCS[index++] = (byte)LowCh;
+            }
+            return ULMBCS_UNICODE_SIZE;
+        }
+        /* The main Unicode to LMBCS conversion function */
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            short[] lastConverterIndex = new short[1];
+            char uniChar;
+            byte[] LMBCS = new byte[ULMBCS_CHARSIZE_MAX];
+            byte pLMBCS;
+            int bytes_written;
+            boolean[] groups_tried = new boolean[ULMBCS_GRP_LAST+1];
+            int sourceIndex = 0;
+            
+            /*
+             * Basic strategy: attempt to fill in local LMBCS 1-char buffer.(LMBCS)
+             * If that succeeds, see if it will all fit into the target & copy it over
+             * if it does.
+             * 
+             * We try conversions in the following order:
+             * 1. Single-byte ascii & special fixed control chars (&null)
+             * 2. Look up group in table & try that (could b
+             *     A) Unicode group
+             *     B) control group
+             *     C) national encodeing
+             *        or ambiguous SBCS or MBCS group (on to step 4...)
+             * 3. If its ambiguous, try this order:
+             *     A) The optimization group
+             *     B) The locale group
+             *     C) The last group that succeeded with this string.
+             *     D) every other group that's relevant
+             *     E) If its single-byte ambiguous, try the exceptions group
+             * 4. And as a grand fallback: Unicode
+             */
+            while (source.hasRemaining() && err.isUnderflow()) {
+                if (!target.hasRemaining()) {
+                    err = CoderResult.OVERFLOW;
+                    break;
+                }
+                uniChar = source.get(source.position());
+                bytes_written = 0;
+                pLMBCS = 0;
+                
+                /* check cases in rough order of how common they are, for speed */
+                
+                /* single-byte matches: strategy 1 */
+                if (((uniChar > ULMBCS_C0END) && (uniChar < ULMBCS_C1START)) ||
+                    uniChar == 0 || uniChar == ULMBCS_HT || uniChar == ULMBCS_CR ||
+                    uniChar == ULMBCS_LF || uniChar == ULMBCS_123SYSTEMRANGE) {
+                    LMBCS[pLMBCS++] = (byte)uniChar;
+                    bytes_written = 1;
+                }
+                
+                if (bytes_written == 0) {
+                    /* Check by Unicode rage (Strategy 2) */
+                    short group = FindLMBCSUniRange(uniChar);
+                    if (group == ULMBCS_GRP_UNICODE) { /* (Strategy 2A) */
+                        bytes_written = LMBCSConvertUni(LMBCS, uniChar);
+                    } else if (group == ULMBCS_GRP_CTRL) { /* Strategy 2B) */
+                        /* Handle control characters here */
+                        if (uniChar <= ULMBCS_C0END) {
+                            LMBCS[pLMBCS++] = ULMBCS_GRP_CTRL;
+                            LMBCS[pLMBCS++] = (byte)(ULMBCS_CTRLOFFSET + uniChar);
+                        } else if (uniChar >= ULMBCS_C1START && uniChar <= (ULMBCS_C1START + ULMBCS_CTRLOFFSET)) {
+                            LMBCS[pLMBCS++] = ULMBCS_GRP_CTRL;
+                            LMBCS[pLMBCS++] = (byte)uniChar;
+                        }
+                        bytes_written = pLMBCS;
+                    } else if (group < ULMBCS_GRP_UNICODE) { /* (Strategy 2C) */
+                        /* a specific converter has been identified - use it */
+                        bytes_written = LMBCSConversionWorker(group, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                    }
+                    if (bytes_written == 0) { /* the ambiguous group cases (Strategy 3) */
+                        groups_tried = new boolean[ULMBCS_GRP_LAST+1];
+                        
+                        /* check for non-default optimization group (Strategy 3A) */
+                        if (extraInfo.OptGroup != 1 && ULMBCS_AMBIGUOUS_MATCH(group, extraInfo.OptGroup)) {
+                            bytes_written = LMBCSConversionWorker(extraInfo.OptGroup, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                        }
+                        /* check for locale optimization group (Strategy 3B) */
+                        if (bytes_written == 0 && extraInfo.localeConverterIndex > 0 &&
+                            ULMBCS_AMBIGUOUS_MATCH(group, extraInfo.localeConverterIndex)) {
+                            
+                            bytes_written = LMBCSConversionWorker(extraInfo.localeConverterIndex, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                        }
+                        /* check for last optimization group used for this string (Strategy 3C) */
+                        if (bytes_written == 0 && lastConverterIndex[0] > 0 &&
+                            ULMBCS_AMBIGUOUS_MATCH(group, lastConverterIndex[0])) {
+                            
+                            bytes_written = LMBCSConversionWorker(lastConverterIndex[0], LMBCS, uniChar, lastConverterIndex, groups_tried);
+                        }
+                        if (bytes_written == 0) {
+                            /* just check every possible matching converter (Strategy 3D) */
+                            short grp_start;
+                            short grp_end;
+                            short grp_ix;
+                            
+                            grp_start = (group == ULMBCS_AMBIGUOUS_MBCS) ? ULMBCS_DOUBLEOPTGROUP_START : ULMBCS_GRP_L1;
+                            grp_end   = (group == ULMBCS_AMBIGUOUS_MBCS) ? ULMBCS_GRP_LAST : ULMBCS_GRP_TH;
+                            for (grp_ix = grp_start; grp_ix <= grp_end && bytes_written == 0; grp_ix++) {
+                                if (extraInfo.OptGrpConverter[grp_ix] != null && !groups_tried[grp_ix]) {
+                                    bytes_written = LMBCSConversionWorker(grp_ix, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                                }
+                            }
+                            /* 
+                             * a final conversion fallback to the exceptions group if its likely
+                             * to be single byte (Strategy 3E) 
+                             */
+                            if (bytes_written == 0 && grp_start == ULMBCS_GRP_L1) {
+                                bytes_written = LMBCSConversionWorker(ULMBCS_GRP_EXCEPT, LMBCS, uniChar, lastConverterIndex, groups_tried);
+                            }
+                        }
+                        /* all of our other strategies failed. Fallback to Unicode. (Strategy 4) */
+                        if (bytes_written == 0) {
+                            bytes_written = LMBCSConvertUni(LMBCS, uniChar);
+                        }
+                    }
+                }
+                /* we have a translation. increment source and write as much as possible to target */
+                source.get();
+                pLMBCS = 0;
+                while (target.hasRemaining() && bytes_written > 0) {
+                    bytes_written--;
+                    target.put(LMBCS[pLMBCS++]);
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                }
+                sourceIndex++;
+                if (bytes_written > 0) {
+                    /*
+                     * write any bytes that didn't fit in target to the error buffer,
+                     * common code will move this to target if we get called back with
+                     * enough target room
+                     */
+                    err = CoderResult.OVERFLOW;
+                    errorBufferLength = bytes_written;
+                    for (int i = 0; bytes_written > 0; i++, bytes_written--) {
+                        errorBuffer[i] = LMBCS[pLMBCS++];
+                    }
+                }
+            }
+            
+            return err;
+        }
+    }
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderLMBCS(this);
+    }
+    
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderLMBCS(this);
+    }
+    
+    void getUnicodeSetImpl(UnicodeSet setFillIn, int which){
+        getCompleteUnicodeSet(setFillIn);
+    }
+    private byte[] fromUSubstitution = new byte[]{ 0x3F };
+}
diff --git a/src/com/ibm/icu/charset/CharsetMBCS.java b/src/com/ibm/icu/charset/CharsetMBCS.java
new file mode 100644
index 0000000..446ff1b
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetMBCS.java
@@ -0,0 +1,5703 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.Buffer;
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.charset.UConverterSharedData.UConverterType;
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.InvalidFormatException;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.charset.UConverterConstants;
+
+class CharsetMBCS extends CharsetICU {
+
+    private byte[] fromUSubstitution = null;
+    UConverterSharedData sharedData = null;
+    private static final int MAX_VERSION_LENGTH = 4;
+    
+    // these variables are used in getUnicodeSet() and may be changed in future
+    // typedef enum UConverterSetFilter {
+      static final int UCNV_SET_FILTER_NONE = 1;
+      static final int UCNV_SET_FILTER_DBCS_ONLY = 2;
+      static final int UCNV_SET_FILTER_2022_CN = 3;
+      static final int UCNV_SET_FILTER_SJIS= 4 ;
+      static final int UCNV_SET_FILTER_GR94DBCS = 5;
+      static final int UCNV_SET_FILTER_HZ = 6;
+      static final int UCNV_SET_FILTER_COUNT = 7;
+   //  } UConverterSetFilter;
+
+    /**
+     * Fallbacks to Unicode are stored outside the normal state table and code point structures in a vector of items of
+     * this type. They are sorted by offset.
+     */
+    final class MBCSToUFallback {
+        int offset;
+        int codePoint;
+    }
+
+    /**
+     * This is the MBCS part of the UConverterTable union (a runtime data structure). It keeps all the per-converter
+     * data and points into the loaded mapping tables.
+     */
+    static final class UConverterMBCSTable {
+        /* toUnicode */
+        short countStates;
+        byte dbcsOnlyState;
+        boolean stateTableOwned;
+        int countToUFallbacks;
+
+        int stateTable[/* countStates */][/* 256 */];
+        int swapLFNLStateTable[/* countStates */][/* 256 */]; /* for swaplfnl */
+        char unicodeCodeUnits[/* countUnicodeResults */];
+        MBCSToUFallback toUFallbacks[/* countToUFallbacks */];
+
+        /* fromUnicode */
+        char fromUnicodeTable[];
+        byte fromUnicodeBytes[];
+        byte swapLFNLFromUnicodeBytes[]; /* for swaplfnl */
+        int fromUBytesLength;
+        short outputType, unicodeMask;
+
+        /* converter name for swaplfnl */
+        String swapLFNLName;
+
+        /* extension data */
+        UConverterSharedData baseSharedData;
+        // int extIndexes[];
+        ByteBuffer extIndexes; // create int[] view etc. as needed
+        
+        CharBuffer mbcsIndex;                     /* for fast conversion from most of BMP to MBCS (utf8Friendly data) */
+        char sbcsIndex[/* SBCS_FAST_LIMIT>>6 */]; /* for fast conversion from low BMP to SBCS (utf8Friendly data) */
+        boolean utf8Friendly;                     /* for utf8Friendly data */
+        char maxFastUChar;                        /* for utf8Friendly data */
+
+        /* roundtrips */
+        long asciiRoundtrips;
+
+        UConverterMBCSTable() {
+            utf8Friendly = false;
+            mbcsIndex = null;
+            sbcsIndex = new char[SBCS_FAST_LIMIT>>6];
+        }
+
+        /*
+         * UConverterMBCSTable(UConverterMBCSTable t) { countStates = t.countStates; dbcsOnlyState = t.dbcsOnlyState;
+         * stateTableOwned = t.stateTableOwned; countToUFallbacks = t.countToUFallbacks; stateTable = t.stateTable;
+         * swapLFNLStateTable = t.swapLFNLStateTable; unicodeCodeUnits = t.unicodeCodeUnits; toUFallbacks =
+         * t.toUFallbacks; fromUnicodeTable = t.fromUnicodeTable; fromUnicodeBytes = t.fromUnicodeBytes;
+         * swapLFNLFromUnicodeBytes = t.swapLFNLFromUnicodeBytes; fromUBytesLength = t.fromUBytesLength; outputType =
+         * t.outputType; unicodeMask = t.unicodeMask; swapLFNLName = t.swapLFNLName; baseSharedData = t.baseSharedData;
+         * extIndexes = t.extIndexes; }
+         */
+    }
+
+    /* Constants used in MBCS data header */
+    // enum {
+        static final int MBCS_OPT_LENGTH_MASK=0x3f;
+        static final int MBCS_OPT_NO_FROM_U=0x40;
+        /*
+         * If any of the following options bits are set,
+         * then the file must be rejected.
+         */
+        static final int MBCS_OPT_INCOMPATIBLE_MASK=0xffc0;
+        /*
+         * Remove bits from this mask as more options are recognized
+         * by all implementations that use this constant.
+         */
+        static final int MBCS_OPT_UNKNOWN_INCOMPATIBLE_MASK=0xff80;
+    // };
+    /* Constants for fast and UTF-8-friendly conversion. */
+    // enum {
+        static final int SBCS_FAST_MAX=0x0fff;               /* maximum code point with UTF-8-friendly SBCS runtime code, see makeconv SBCS_UTF8_MAX */
+        static final int SBCS_FAST_LIMIT=SBCS_FAST_MAX+1;    /* =0x1000 */
+        static final int MBCS_FAST_MAX=0xd7ff;               /* maximum code point with UTF-8-friendly MBCS runtime code, see makeconv MBCS_UTF8_MAX */
+        static final int MBCS_FAST_LIMIT=MBCS_FAST_MAX+1;    /* =0xd800 */
+    // };
+    /**
+     * MBCS data header. See data format description above.
+     */
+    final class MBCSHeader {
+        byte version[/* U_MAX_VERSION_LENGTH */];
+        int countStates, countToUFallbacks, offsetToUCodeUnits, offsetFromUTable, offsetFromUBytes;
+        int flags;
+        int fromUBytesLength;
+        
+        /* new and required in version 5 */
+        int options;
+
+        /* new and optional in version 5; used if options&MBCS_OPT_NO_FROM_U */
+        int fullStage2Length;  /* number of 32-bit units */
+
+        MBCSHeader() {
+            version = new byte[MAX_VERSION_LENGTH];
+        }
+    }
+
+    public CharsetMBCS(String icuCanonicalName, String javaCanonicalName, String[] aliases, String classPath,
+            ClassLoader loader) throws InvalidFormatException {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        
+        /* See if the icuCanonicalName contains certain option information. */
+        if (icuCanonicalName.indexOf(UConverterConstants.OPTION_SWAP_LFNL_STRING) > -1) {
+            options = UConverterConstants.OPTION_SWAP_LFNL;
+            icuCanonicalName = icuCanonicalName.substring(0, icuCanonicalName.indexOf(UConverterConstants.OPTION_SWAP_LFNL_STRING));
+            super.icuCanonicalName = icuCanonicalName;
+        }
+        
+        // now try to load the data
+        sharedData = loadConverter(1, icuCanonicalName, classPath, loader);
+
+        maxBytesPerChar = sharedData.staticData.maxBytesPerChar;
+        minBytesPerChar = sharedData.staticData.minBytesPerChar;
+        maxCharsPerByte = 1;
+        fromUSubstitution = sharedData.staticData.subChar;
+        subChar = sharedData.staticData.subChar;
+        subCharLen = sharedData.staticData.subCharLen;
+        subChar1 = sharedData.staticData.subChar1;
+        fromUSubstitution = new byte[sharedData.staticData.subCharLen];
+        System.arraycopy(sharedData.staticData.subChar, 0, fromUSubstitution, 0, sharedData.staticData.subCharLen);
+        
+        initializeConverter(options);
+    }
+
+    public CharsetMBCS(String icuCanonicalName, String javaCanonicalName, String[] aliases)
+            throws InvalidFormatException {
+        this(icuCanonicalName, javaCanonicalName, aliases, ICUResourceBundle.ICU_BUNDLE, null);
+    }
+
+    private UConverterSharedData loadConverter(int nestedLoads, String myName, String classPath, ClassLoader loader)
+            throws InvalidFormatException {
+        boolean noFromU = false;
+        // Read converter data from file
+        UConverterStaticData staticData = new UConverterStaticData();
+        UConverterDataReader reader = null;
+        try {
+            String resourceName = classPath + "/" + myName + "." + UConverterSharedData.DATA_TYPE;
+            InputStream i;
+
+            if (loader != null) {
+                i = ICUData.getRequiredStream(loader, resourceName);
+            } else {
+                i = ICUData.getRequiredStream(resourceName);
+            }
+            BufferedInputStream b = new BufferedInputStream(i, UConverterConstants.CNV_DATA_BUFFER_SIZE);
+            reader = new UConverterDataReader(b);
+            reader.readStaticData(staticData);
+        } catch (IOException e) {
+            throw new InvalidFormatException();
+        } catch (Exception e) {
+            throw new InvalidFormatException();
+        }
+
+        UConverterSharedData data = null;
+        int type = staticData.conversionType;
+
+        if (type != UConverterSharedData.UConverterType.MBCS
+                || staticData.structSize != UConverterStaticData.SIZE_OF_UCONVERTER_STATIC_DATA) {
+            throw new InvalidFormatException();
+        }
+
+        data = new UConverterSharedData(1, null, false, 0);
+        data.dataReader = reader;
+        data.staticData = staticData;
+        data.sharedDataCached = false;
+
+        // Load data
+        UConverterMBCSTable mbcsTable = data.mbcs;
+        MBCSHeader header = new MBCSHeader();
+        try {
+            reader.readMBCSHeader(header);
+        } catch (IOException e) {
+            throw new InvalidFormatException();
+        }
+
+        int offset;
+        // int[] extIndexesArray = null;
+        String baseNameString = null;
+        int[][] stateTableArray = null;
+        MBCSToUFallback[] toUFallbacksArray = null;
+        char[] unicodeCodeUnitsArray = null;
+        char[] fromUnicodeTableArray = null;
+        byte[] fromUnicodeBytesArray = null;
+
+        if (header.version[0] == 5 && header.version[1] >= 3 && (header.options & MBCS_OPT_UNKNOWN_INCOMPATIBLE_MASK) == 0) {
+            noFromU = ((header.options & MBCS_OPT_NO_FROM_U) != 0);
+        } else if (header.version[0] != 4) {
+            throw new InvalidFormatException();
+        }
+
+        mbcsTable.outputType = (byte) header.flags;
+
+        /* extension data, header version 4.2 and higher */
+        offset = header.flags >>> 8;
+        // if(offset!=0 && mbcsTable.outputType == MBCS_OUTPUT_EXT_ONLY) {
+        if (mbcsTable.outputType == MBCS_OUTPUT_EXT_ONLY) {
+            try {
+                baseNameString = reader.readBaseTableName();
+                if (offset != 0) {
+                    // agljport:commment subtract 32 for sizeof(_MBCSHeader) and length of baseNameString and 1 null
+                    // terminator byte all already read;
+                    mbcsTable.extIndexes = reader.readExtIndexes(offset
+                            - (reader.bytesRead - reader.staticDataBytesRead));
+                }
+            } catch (IOException e) {
+                throw new InvalidFormatException();
+            }
+        }
+
+        // agljport:add this would be unnecessary if extIndexes were memory mapped
+        /*
+         * if(mbcsTable.extIndexes != null) {
+         * 
+         * try { //int nbytes = mbcsTable.extIndexes[UConverterExt.UCNV_EXT_TO_U_LENGTH]*4 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_TO_U_UCHARS_LENGTH]*2 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_LENGTH]*6 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_BYTES_LENGTH] +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_STAGE_12_LENGTH]*2 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_STAGE_3_LENGTH]*2 +
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_FROM_U_STAGE_3B_LENGTH]*4; //int nbytes =
+         * mbcsTable.extIndexes[UConverterExt.UCNV_EXT_SIZE] //byte[] extTables = dataReader.readExtTables(nbytes);
+         * //mbcsTable.extTables = ByteBuffer.wrap(extTables); } catch(IOException e) { System.err.println("Caught
+         * IOException: " + e.getMessage()); pErrorCode[0] = UErrorCode.U_INVALID_FORMAT_ERROR; return; } }
+         */
+        if (mbcsTable.outputType == MBCS_OUTPUT_EXT_ONLY) {
+            UConverterSharedData baseSharedData = null;
+            ByteBuffer extIndexes;
+            String baseName;
+
+            /* extension-only file, load the base table and set values appropriately */
+            extIndexes = mbcsTable.extIndexes;
+            if (extIndexes == null) {
+                /* extension-only file without extension */
+                throw new InvalidFormatException();
+            }
+
+            if (nestedLoads != 1) {
+                /* an extension table must not be loaded as a base table */
+                throw new InvalidFormatException();
+            }
+
+            /* load the base table */
+            baseName = baseNameString;
+            if (baseName.equals(staticData.name)) {
+                /* forbid loading this same extension-only file */
+                throw new InvalidFormatException();
+            }
+
+            // agljport:fix args.size=sizeof(UConverterLoadArgs);
+            baseSharedData = loadConverter(2, baseName, classPath, loader);
+
+            if (baseSharedData.staticData.conversionType != UConverterType.MBCS
+                    || baseSharedData.mbcs.baseSharedData != null) {
+                // agljport:fix ucnv_unload(baseSharedData);
+                throw new InvalidFormatException();
+            }
+
+            /* copy the base table data */
+            // agljport:comment deep copy in C changes mbcs through local reference mbcsTable; in java we probably don't
+            // need the deep copy so can just make sure mbcs and its local reference both refer to the same new object
+            mbcsTable = data.mbcs = baseSharedData.mbcs;
+
+            /* overwrite values with relevant ones for the extension converter */
+            mbcsTable.baseSharedData = baseSharedData;
+            mbcsTable.extIndexes = extIndexes;
+
+            /*
+             * It would be possible to share the swapLFNL data with a base converter, but the generated name would have
+             * to be different, and the memory would have to be free'd only once. It is easier to just create the data
+             * for the extension converter separately when it is requested.
+             */
+            mbcsTable.swapLFNLStateTable = null;
+            mbcsTable.swapLFNLFromUnicodeBytes = null;
+            mbcsTable.swapLFNLName = null;
+
+            /*
+             * Set a special, runtime-only outputType if the extension converter is a DBCS version of a base converter
+             * that also maps single bytes.
+             */
+            if (staticData.conversionType == UConverterType.DBCS
+                    || (staticData.conversionType == UConverterType.MBCS && staticData.minBytesPerChar >= 2)) {
+
+                if (baseSharedData.mbcs.outputType == MBCS_OUTPUT_2_SISO) {
+                    /* the base converter is SI/SO-stateful */
+                    int entry;
+
+                    /* get the dbcs state from the state table entry for SO=0x0e */
+                    entry = mbcsTable.stateTable[0][0xe];
+                    if (MBCS_ENTRY_IS_FINAL(entry) && MBCS_ENTRY_FINAL_ACTION(entry) == MBCS_STATE_CHANGE_ONLY
+                            && MBCS_ENTRY_FINAL_STATE(entry) != 0) {
+                        mbcsTable.dbcsOnlyState = (byte) MBCS_ENTRY_FINAL_STATE(entry);
+
+                        mbcsTable.outputType = MBCS_OUTPUT_DBCS_ONLY;
+                    }
+                } else if (baseSharedData.staticData.conversionType == UConverterType.MBCS
+                        && baseSharedData.staticData.minBytesPerChar == 1
+                        && baseSharedData.staticData.maxBytesPerChar == 2 && mbcsTable.countStates <= 127) {
+
+                    /* non-stateful base converter, need to modify the state table */
+                    int newStateTable[][/* 256 */];
+                    int state[]; // this works because java 2-D array is array of references and we can have state =
+                    // newStateTable[i];
+                    int i, count;
+
+                    /* allocate a new state table and copy the base state table contents */
+                    count = mbcsTable.countStates;
+                    newStateTable = new int[(count + 1) * 1024][256];
+
+                    for (i = 0; i < mbcsTable.stateTable.length; ++i)
+                        System.arraycopy(mbcsTable.stateTable[i], 0, newStateTable[i], 0,
+                                mbcsTable.stateTable[i].length);
+
+                    /* change all final single-byte entries to go to a new all-illegal state */
+                    state = newStateTable[0];
+                    for (i = 0; i < 256; ++i) {
+                        if (MBCS_ENTRY_IS_FINAL(state[i])) {
+                            state[i] = MBCS_ENTRY_TRANSITION(count, 0);
+                        }
+                    }
+
+                    /* build the new all-illegal state */
+                    state = newStateTable[count];
+                    for (i = 0; i < 256; ++i) {
+                        state[i] = MBCS_ENTRY_FINAL(0, MBCS_STATE_ILLEGAL, 0);
+                    }
+                    mbcsTable.stateTable = newStateTable;
+                    mbcsTable.countStates = (byte) (count + 1);
+                    mbcsTable.stateTableOwned = true;
+
+                    mbcsTable.outputType = MBCS_OUTPUT_DBCS_ONLY;
+                }
+            }
+
+            /*
+             * unlike below for files with base tables, do not get the unicodeMask from the sharedData; instead, use the
+             * base table's unicodeMask, which we copied in the memcpy above; this is necessary because the static data
+             * unicodeMask, especially the UCNV_HAS_SUPPLEMENTARY flag, is part of the base table data
+             */
+        } else {
+            /* conversion file with a base table; an additional extension table is optional */
+            /* make sure that the output type is known */
+            switch (mbcsTable.outputType) {
+            case MBCS_OUTPUT_1:
+            case MBCS_OUTPUT_2:
+            case MBCS_OUTPUT_3:
+            case MBCS_OUTPUT_4:
+            case MBCS_OUTPUT_3_EUC:
+            case MBCS_OUTPUT_4_EUC:
+            case MBCS_OUTPUT_2_SISO:
+                /* OK */
+                break;
+            default:
+                throw new InvalidFormatException();
+            }
+
+            stateTableArray = new int[header.countStates][256];
+            toUFallbacksArray = new MBCSToUFallback[header.countToUFallbacks];
+            for (int i = 0; i < toUFallbacksArray.length; ++i)
+                toUFallbacksArray[i] = new MBCSToUFallback();
+            unicodeCodeUnitsArray = new char[(header.offsetFromUTable - header.offsetToUCodeUnits) / 2];
+            fromUnicodeTableArray = new char[(header.offsetFromUBytes - header.offsetFromUTable) / 2];
+            fromUnicodeBytesArray = new byte[header.fromUBytesLength];
+            try {
+                reader.readMBCSTable(stateTableArray, toUFallbacksArray, unicodeCodeUnitsArray, fromUnicodeTableArray,
+                        fromUnicodeBytesArray);
+            } catch (IOException e) {
+                throw new InvalidFormatException();
+            }
+
+            mbcsTable.countStates = (byte) header.countStates;
+            mbcsTable.countToUFallbacks = header.countToUFallbacks;
+            mbcsTable.stateTable = stateTableArray;
+            mbcsTable.toUFallbacks = toUFallbacksArray;
+            mbcsTable.unicodeCodeUnits = unicodeCodeUnitsArray;
+
+            mbcsTable.fromUnicodeTable = fromUnicodeTableArray;
+            mbcsTable.fromUnicodeBytes = fromUnicodeBytesArray;
+            mbcsTable.fromUBytesLength = header.fromUBytesLength;
+
+            /*
+             * converter versions 6.1 and up contain a unicodeMask that is used here to select the most efficient
+             * function implementations
+             */
+            // agljport:fix info.size=sizeof(UDataInfo);
+            // agljport:fix udata_getInfo((UDataMemory *)sharedData->dataMemory, &info);
+            // agljport:fix if(info.formatVersion[0]>6 || (info.formatVersion[0]==6 && info.formatVersion[1]>=1)) {
+            /* mask off possible future extensions to be safe */
+            mbcsTable.unicodeMask = (short) (staticData.unicodeMask & 3);
+            // agljport:fix } else {
+            /* for older versions, assume worst case: contains anything possible (prevent over-optimizations) */
+            // agljport:fix mbcsTable->unicodeMask=UCNV_HAS_SUPPLEMENTARY|UCNV_HAS_SURROGATES;
+            // agljport:fix }
+            if (offset != 0) {
+                try {
+                    // agljport:commment subtract 32 for sizeof(_MBCSHeader) and length of baseNameString and 1 null
+                    // terminator byte all already read;
+                    // int namelen = baseNameString != null? baseNameString.length() + 1: 0;
+                    mbcsTable.extIndexes = reader.readExtIndexes(offset
+                            - (reader.bytesRead - reader.staticDataBytesRead));
+                } catch (IOException e) {
+                    throw new InvalidFormatException();
+                }
+            }
+            
+            if (header.version[1] >= 3 && (mbcsTable.unicodeMask & UConverterConstants.HAS_SURROGATES) == 0 &&
+                    (mbcsTable.countStates == 1 ? ((char)header.version[2] >= (SBCS_FAST_MAX>>8)) : ((char)header.version[2] >= (MBCS_FAST_MAX>>8)))) {
+                mbcsTable.utf8Friendly = true;
+                
+                if (mbcsTable.countStates == 1) {
+                    /*
+                     * SBCS: Stage 3 is allocated in 64-entry blocks for U+0000..SBCS_FAST_MAX or higher.
+                     * Build a table with indexes to each block, to be used instaed of
+                     * the regular stage 1/2 table.
+                     */
+                    for (int i = 0; i < (SBCS_FAST_LIMIT>>6); ++i) {
+                        mbcsTable.sbcsIndex[i] = mbcsTable.fromUnicodeTable[mbcsTable.fromUnicodeTable[i>>4]+((i<<2)&0x3c)];
+                    }
+                    /* set SBCS_FAST_MAX to reflect the reach of sbcsIndex[] even if header.version[2]>(SBCS_FAST_MAX>>8) */
+                    mbcsTable.maxFastUChar = SBCS_FAST_MAX;
+                } else {
+                    /*
+                     * MBCS: Stage 3 is allocated in 64-entry blocks for U+0000..MBCS_FAST_MAX or higher.
+                     * The .cnv file is prebuilt with an additional stage table with indexes to each block.
+                     */
+                    if (noFromU) {
+                        mbcsTable.mbcsIndex = ByteBuffer.wrap(mbcsTable.fromUnicodeBytes).asCharBuffer();
+                    }
+                    mbcsTable.maxFastUChar = (char)((header.version[2]<<8) | 0xff);
+                }
+            }
+            /* calculate a bit set of 4 ASCII characters per bit that round-trip to ASCII bytes */
+            {
+                long asciiRoundtrips = 0xffffffff;
+                for (int i = 0; i < 0x80; ++i) {
+                    if (mbcsTable.stateTable[0][i] != MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, i)) {
+                        asciiRoundtrips&=~((long)1<<(i>>2))&UConverterConstants.UNSIGNED_INT_MASK;
+                    }
+                }
+                mbcsTable.asciiRoundtrips = asciiRoundtrips&UConverterConstants.UNSIGNED_INT_MASK;
+            }
+            
+            if (noFromU) {
+                int stage1Length = (mbcsTable.unicodeMask&UConverterConstants.HAS_SUPPLEMENTARY) != 0 ? 0x440 : 0x40;
+                int stage2Length = (header.offsetFromUBytes - header.offsetFromUTable)/4 - stage1Length/2;
+                reconstituteData(mbcsTable, stage1Length, stage2Length, header.fullStage2Length);
+            }
+            if (mbcsTable.outputType == MBCS_OUTPUT_DBCS_ONLY || mbcsTable.outputType == MBCS_OUTPUT_2_SISO) {
+                /*
+                 * MBCS_OUTPUT_DBCS_ONLY: No SBCS mappings, therefore ASCII does not roundtrip.
+                 * MBCS_OUTPUT_2_SISO: Bypass the ASCII fastpath to handle prevLength correctly.
+                 */
+                mbcsTable.asciiRoundtrips = 0;
+            }
+        }
+        return data;
+    }
+    
+    private static boolean writeStage3Roundtrip(UConverterMBCSTable mbcsTable, long value, int codePoints[]) {
+        char[] table;
+        byte[] bytes;
+        int stage2;
+        int p;
+        int c;
+        int i, st3;
+        long temp;
+
+        table = mbcsTable.fromUnicodeTable;
+        bytes = mbcsTable.fromUnicodeBytes;
+
+        /* for EUC outputTypes, modify the value like genmbcs.c's transformEUC() */
+        switch(mbcsTable.outputType) {
+        case MBCS_OUTPUT_3_EUC:
+            if(value<=0xffff) {
+                /* short sequences are stored directly */
+                /* code set 0 or 1 */
+            } else if(value<=0x8effff) {
+                /* code set 2 */
+                value&=0x7fff;
+            } else /* first byte is 0x8f */ {
+                /* code set 3 */
+                value&=0xff7f;
+            }
+            break;
+        case MBCS_OUTPUT_4_EUC:
+            if(value<=0xffffff) {
+                /* short sequences are stored directly */
+                /* code set 0 or 1 */
+            } else if(value<=0x8effffff) {
+                /* code set 2 */
+                value&=0x7fffff;
+            } else /* first byte is 0x8f */ {
+                /* code set 3 */
+                value&=0xff7fff;
+            }
+            break;
+        default:
+            break;
+        }
+
+        for(i=0; i<=0x1f; ++value, ++i) {
+            c=codePoints[i];
+            if(c<0) {
+                continue;
+            }
+
+            /* locate the stage 2 & 3 data */
+            stage2 = table[c>>10] + ((c>>4)&0x3f);
+            st3 = table[stage2*2]<<16|table[stage2*2 + 1];
+            st3 = (int)(char)(st3 * 16 + (c&0xf));
+
+            /* write the codepage bytes into stage 3 */
+            switch(mbcsTable.outputType) {
+            case MBCS_OUTPUT_3:
+            case MBCS_OUTPUT_4_EUC:
+                p = st3*3;
+                bytes[p] = (byte)(value>>16);
+                bytes[p+1] = (byte)(value>>8);
+                bytes[p+2] = (byte)value;
+                break;
+            case MBCS_OUTPUT_4:
+                bytes[st3*4] = (byte)(value >> 24);
+                bytes[st3*4 + 1] = (byte)(value >> 16);
+                bytes[st3*4 + 2] = (byte)(value >> 8);
+                bytes[st3*4 + 3] = (byte)value;
+                break;
+            default:
+                /* 2 bytes per character */
+                bytes[st3*2] = (byte)(value >> 8);
+                bytes[st3*2 + 1] = (byte)value;
+                break;
+            }
+
+            /* set the roundtrip flag */
+            temp = (1L<<(16+(c&0xf)));
+            table[stage2*2] |= (char)(temp>>16);
+            table[stage2*2 + 1] |= (char)temp;
+        }
+        return true;
+     }
+    
+    private static void reconstituteData(UConverterMBCSTable mbcsTable, int stage1Length, int stage2Length, int fullStage2Length) {
+        int datalength = stage1Length*2+fullStage2Length*4+mbcsTable.fromUBytesLength;
+        int offset = 0;
+        byte[] stage = new byte[datalength];
+        
+        for (int i = 0; i < stage1Length; ++i) {
+            stage[i*2]   = (byte)(mbcsTable.fromUnicodeTable[i]>>8);
+            stage[i*2+1] = (byte)(mbcsTable.fromUnicodeTable[i]);
+        }
+        
+        offset = ((fullStage2Length - stage2Length) * 4) + (stage1Length * 2);
+        for (int i = 0; i < stage2Length; ++i) {
+            stage[offset + i*4]   = (byte)(mbcsTable.fromUnicodeTable[stage1Length + i*2]>>8);
+            stage[offset + i*4+1] = (byte)(mbcsTable.fromUnicodeTable[stage1Length + i*2]);
+            stage[offset + i*4+2] = (byte)(mbcsTable.fromUnicodeTable[stage1Length + i*2+1]>>8);
+            stage[offset + i*4+3] = (byte)(mbcsTable.fromUnicodeTable[stage1Length + i*2+1]);
+        }
+        
+        /* indexes into stage 2 count from the bottom of the fromUnicodeTable */
+        
+        /* reconsitute the initial part of stage 2 from the mbcsIndex */
+        {
+            int stageUTF8Length=((int)(mbcsTable.maxFastUChar+1))>>6;
+            int stageUTF8Index=0;
+            int st1, st2, st3, i;
+            
+            for (st1 = 0; stageUTF8Index < stageUTF8Length; ++st1) {
+                st2 = ((char)stage[2*st1]<<8) | stage[2*st1+1];
+                if (st2 != stage1Length/2) {
+                    /* each stage 2 block has 64 entries corresponding to 16 entries in the mbcsIndex */
+                    for (i = 0; i < 16; ++i) {
+                        st3 = mbcsTable.mbcsIndex.get(stageUTF8Index++);
+                        if (st3 != 0) {
+                            /* a stage 2 entry's index is per stage 3 16-block, not per stage 3 entry */
+                            st3>>=4;
+                            /*
+                             * 4 stage 2 entries point to 4 consecutive stage 3 16-blocks which are
+                             * allocated together as a single 64-block for access from the mbcsIndex
+                             */
+                            stage[4*st2] = (byte)(st3>>24); stage[4*st2+1] = (byte)(st3>>16); stage[4*st2+2] = (byte)(st3>>8); stage[4*st2+3] = (byte)(st3); st2++; st3++;
+                            stage[4*st2] = (byte)(st3>>24); stage[4*st2+1] = (byte)(st3>>16); stage[4*st2+2] = (byte)(st3>>8); stage[4*st2+3] = (byte)(st3); st2++; st3++;
+                            stage[4*st2] = (byte)(st3>>24); stage[4*st2+1] = (byte)(st3>>16); stage[4*st2+2] = (byte)(st3>>8); stage[4*st2+3] = (byte)(st3); st2++; st3++;
+                            stage[4*st2] = (byte)(st3>>24); stage[4*st2+1] = (byte)(st3>>16); stage[4*st2+2] = (byte)(st3>>8); stage[4*st2+3] = (byte)(st3);
+                        } else {
+                            /* no stage 3 block, skip */
+                            st2+=4;
+                        }
+                    }
+                } else {
+                    /* no stage 2 block, skip */
+                    stageUTF8Index+=16;
+                }
+            }
+        }
+        
+        char[] stage1 = new char[stage.length/2];
+        for (int i = 0; i < stage1.length; ++i) {
+            stage1[i] = (char)(((stage[i*2])<<8)|(stage[i*2+1] & UConverterConstants.UNSIGNED_BYTE_MASK));
+        }
+        byte[] stage2 = new byte[stage.length - ((stage1Length * 2) + (fullStage2Length * 4))];
+        System.arraycopy(stage, ((stage1Length * 2) + (fullStage2Length * 4)), stage2, 0, stage2.length);
+        
+        mbcsTable.fromUnicodeTable = stage1;
+        mbcsTable.fromUnicodeBytes = stage2;
+        
+        /* reconstitute fromUnicodeBytes with roundtrips from toUnicode data */
+        MBCSEnumToUnicode(mbcsTable);
+    }
+    
+    /*
+     * Internal function enumerating the toUnicode data of an MBCS converter.
+     * Currently only used for reconstituting data for a MBCS_OPT_NO_FROM_U
+     * table, but could also be used for a future getUnicodeSet() option
+     * that includes reverse fallbacks (after updating this function's implementation).
+     * Currently only handles roundtrip mappings.
+     * Does not currently handle extensions.
+     */
+    private static void MBCSEnumToUnicode(UConverterMBCSTable mbcsTable) {
+        /*
+         * Properties for each state, to speed up the enumeration.
+         * Ignorable actions are unassigned/illegal/state-change-only:
+         * They do not lead to mappings.
+         * 
+         * Bits 7..6
+         * 1 direct/initial state (stateful converters have mulitple)
+         * 0 non-initial state with transitions or with nonignorable result actions
+         * -1 final state with only ignorable actions
+         * 
+         * Bits 5..3
+         * The lowest byte value with non-ignorable actions is
+         * value<<5 (rounded down).
+         * 
+         * Bits 2..0:
+         * The highest byte value with non-ignorable actions is
+         * (value<<5)&0x1f (rounded up).
+         */
+        byte stateProps[] = new byte[MBCS_MAX_STATE_COUNT];
+        int state;
+        
+        /* recurse from state 0 and set all stateProps */
+        getStateProp(mbcsTable.stateTable, stateProps, 0);
+        
+        for (state = 0; state < mbcsTable.countStates; ++state) {
+            if (stateProps[state] >= 0x40) {
+                /* start from each direct state */
+                enumToU(mbcsTable, stateProps, state, 0, 0);
+            }
+        }
+        
+        
+    }
+    
+    private static boolean enumToU(UConverterMBCSTable mbcsTable, byte stateProps[], int state, int offset, int value) {
+        int[] codePoints = new int[32];
+        int[] row;
+        char[] unicodeCodeUnits;
+        int anyCodePoints;
+        int b, limit;
+        
+        row = mbcsTable.stateTable[state];
+        unicodeCodeUnits = mbcsTable.unicodeCodeUnits;
+        
+        value<<=8;
+        anyCodePoints = -1; /* becomes non-negative if there is a mapping */
+        
+        b = (stateProps[state]&0x38)<<2;
+        if (b == 0 && stateProps[state] >= 0x40) {
+            /* skip byte sequences with leading zeros because they are note stored in the fromUnicode table */
+            codePoints[0] = UConverterConstants.U_SENTINEL;
+            b = 1;
+        }
+        limit = ((stateProps[state]&7)+1)<<5;
+        while (b < limit) {
+            int entry = row[b];
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                int nextState = MBCS_ENTRY_TRANSITION_STATE(entry);
+                if (stateProps[nextState] >= 0) {
+                    /* recurse to a state with non-ignorable actions */
+                    if (!enumToU(mbcsTable, stateProps, nextState, offset+MBCS_ENTRY_TRANSITION_OFFSET(entry), value|b)) {
+                        return false;
+                    }
+                }
+                codePoints[b&0x1f] = UConverterConstants.U_SENTINEL;
+            } else {
+                int c;
+                int action;
+                
+                /*
+                 * An if-else-if chain provides more reliable performance for
+                 * the most common cases compared to a switch.
+                 */
+                action = MBCS_ENTRY_FINAL_ACTION(entry);
+                if (action == MBCS_STATE_VALID_DIRECT_16) {
+                    /* output BMP code point */
+                    c = (char)MBCS_ENTRY_FINAL_VALUE_16(entry);
+                } else if (action == MBCS_STATE_VALID_16) {
+                    int finalOffset = offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[finalOffset];
+                    if (c < 0xfffe) {
+                        /* output BMP code point */
+                    } else {
+                        c = UConverterConstants.U_SENTINEL;
+                    }
+                } else if (action == MBCS_STATE_VALID_16_PAIR) {
+                    int finalOffset = offset+MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[finalOffset++];
+                    if (c < 0xd800) {
+                        /* output BMP code point below 0xd800 */
+                    } else if (c <= 0xdbff) {
+                        /* output roundtrip or fallback supplementary code point */
+                        c = ((c&0x3ff)<<10)+unicodeCodeUnits[finalOffset]+(0x10000-0xdc00);
+                    } else if (c == 0xe000) {
+                        /* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
+                        c = unicodeCodeUnits[finalOffset];
+                    } else {
+                        c = UConverterConstants.U_SENTINEL;
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_20) {
+                    /* output supplementary code point */
+                    c = (int)(MBCS_ENTRY_FINAL_VALUE(entry)+0x10000);
+                } else {
+                    c = UConverterConstants.U_SENTINEL;
+                }
+                
+                codePoints[b&0x1f] = c;
+                anyCodePoints&=c;
+            }
+            if (((++b)&0x1f) == 0) {
+                if(anyCodePoints>=0) {
+                    if(!writeStage3Roundtrip(mbcsTable, value|(b-0x20)&UConverterConstants.UNSIGNED_INT_MASK, codePoints)) {
+                        return false;
+                    }
+                    anyCodePoints=-1;
+                }
+            }
+        }
+        
+        return true;
+    }
+    
+    /*
+     * Only called if stateProps[state]==-1.
+     * A recursive call may do stateProps[state]|=0x40 if this state is the target of an
+     * MBCS_STATE_CHANGE_ONLY.
+     */
+    private static byte getStateProp(int stateTable[][], byte stateProps[], int state) {
+        int[] row;
+        int min, max, entry, nextState;
+        
+        row = stateTable[state];
+        stateProps[state] = 0;
+        
+        /* find first non-ignorable state */
+        for (min = 0;;++min) {
+            entry = row[min];
+            nextState = MBCS_ENTRY_STATE(entry);
+            if (stateProps[nextState] == -1) {
+                getStateProp(stateTable, stateProps, nextState);
+            }
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                if (stateProps[nextState] >- 0) {
+                    break;
+                }
+            } else if (MBCS_ENTRY_FINAL_ACTION(entry) < MBCS_STATE_UNASSIGNED) {
+                break;
+            }
+            if (min == 0xff) {
+                stateProps[state] = -0x40;  /* (byte)0xc0 */
+                return stateProps[state];
+            }
+        }
+        stateProps[state]|=(byte)((min>>5)<<3);
+        
+        /* find last non-ignorable state */
+        for (max = 0xff; min < max; --max) {
+            entry = row[max];
+            nextState = MBCS_ENTRY_STATE(entry);
+            if (stateProps[nextState] == -1) {
+                getStateProp(stateTable, stateProps, nextState);
+            }
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                if (stateProps[nextState] >- 0) {
+                    break;
+                }
+            } else if (MBCS_ENTRY_FINAL_ACTION(entry) < MBCS_STATE_UNASSIGNED) {
+                break;
+            }
+        }
+        stateProps[state]|=(byte)(max>>5);
+        
+        /* recurse further and collect direct-state information */
+        while (min <= max) {
+            entry = row[min];
+            nextState = MBCS_ENTRY_STATE(entry);
+            if (stateProps[nextState] == -1) {
+                getStateProp(stateTable, stateProps, nextState);
+            }
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                stateProps[nextState]|=0x40;
+                if (MBCS_ENTRY_FINAL_ACTION(entry) <= MBCS_STATE_FALLBACK_DIRECT_20) {
+                    stateProps[state]|=0x40;
+                }
+            }
+            ++min;
+        }
+        return stateProps[state];
+    }
+
+    protected void initializeConverter(int myOptions) {
+        UConverterMBCSTable mbcsTable;
+        ByteBuffer extIndexes;
+        short outputType;
+        byte maxBytesPerUChar;
+
+        mbcsTable = sharedData.mbcs;
+        outputType = mbcsTable.outputType;
+
+        if (outputType == MBCS_OUTPUT_DBCS_ONLY) {
+            /* the swaplfnl option does not apply, remove it */
+            this.options = myOptions &= ~UConverterConstants.OPTION_SWAP_LFNL;
+        }
+
+        if ((myOptions & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+            /* do this because double-checked locking is broken */
+            boolean isCached;
+
+            // agljport:todo umtx_lock(NULL);
+            isCached = mbcsTable.swapLFNLStateTable != null;
+            // agljport:todo umtx_unlock(NULL);
+
+            if (!isCached) {
+                try {
+                    if (!EBCDICSwapLFNL()) {
+                        /* this option does not apply, remove it */
+                        this.options = myOptions &= ~UConverterConstants.OPTION_SWAP_LFNL;
+                    }
+                } catch (Exception e) {
+                    /* something went wrong. */
+                    return;
+                }
+            }
+        }
+
+        if (icuCanonicalName.toLowerCase().indexOf("gb18030") >= 0) {
+            /* set a flag for GB 18030 mode, which changes the callback behavior */
+            this.options |= MBCS_OPTION_GB18030;
+        }
+
+        /* fix maxBytesPerUChar depending on outputType and options etc. */
+        if (outputType == MBCS_OUTPUT_2_SISO) {
+            maxBytesPerChar = 3; /* SO+DBCS */
+        }
+
+        extIndexes = mbcsTable.extIndexes;
+        if (extIndexes != null) {
+            maxBytesPerUChar = (byte) GET_MAX_BYTES_PER_UCHAR(extIndexes);
+            if (outputType == MBCS_OUTPUT_2_SISO) {
+                ++maxBytesPerUChar; /* SO + multiple DBCS */
+            }
+
+            if (maxBytesPerUChar > maxBytesPerChar) {
+                maxBytesPerChar = maxBytesPerUChar;
+            }
+        }
+    }
+     /* EBCDIC swap LF<->NL--------------------------------------------------------------------------------*/
+     /*
+      * This code modifies a standard EBCDIC<->Unicode mappling table for
+      * OS/390 (z/OS) Unix System Services (Open Edition).
+      * The difference is in the mapping of Line Feed and New Line control codes:
+      * Standard EBDIC maps
+      * 
+      * <U000A> \x25 |0
+      * <U0085> \x15 |0
+      * 
+      * but OS/390 USS EBCDIC swaps the control codes for LF and NL,
+      * mapping
+      * 
+      * <U000A> \x15 |0
+      * <U0085> \x25 |0
+      * 
+      * This code modifies a loaded standard EBCDIC<->Unicode mapping table
+      * by copying it into allocated memory and swapping the LF and NL values.
+      * It allows to support the same EBCDIC charset in both version without
+      * duplicating the entire installed table.
+      */
+    /* standard EBCDIC codes */
+    private static final short EBCDIC_LF = 0x0025;
+    private static final short EBCDIC_NL = 0x0015;
+    
+    /* standard EBCDIC codes with roundtrip flag as stored in Unicode-to-single-byte tables */
+    private static final short EBCDIC_RT_LF = 0x0f25;
+    private static final short EBCDIC_RT_NL = 0x0f15;
+    
+    /* Unicode code points */
+    private static final short U_LF = 0x000A;
+    private static final short U_NL = 0x0085;
+    
+    private boolean EBCDICSwapLFNL() throws Exception {
+        UConverterMBCSTable mbcsTable;
+        
+        char[] table;
+        byte[] results;
+        byte[] bytes;
+        
+        int[][] newStateTable;
+        byte[] newResults;
+        String newName;
+        
+        int stage2Entry;
+//        int size;
+        int sizeofFromUBytes;
+        
+        mbcsTable = sharedData.mbcs;
+        
+        table = mbcsTable.fromUnicodeTable;
+        bytes = mbcsTable.fromUnicodeBytes;
+        results = bytes;
+        
+        /*
+         * Check that this is an EBCDIC table with SBCS portion -
+         * SBCS or EBCDIC with standard EBCDIC LF and NL mappings.
+         * 
+         * If not, ignore the option Options are always ignored if they do not apply.
+         */
+        if (!((mbcsTable.outputType == MBCS_OUTPUT_1 || mbcsTable.outputType == MBCS_OUTPUT_2_SISO) &&
+              mbcsTable.stateTable[0][EBCDIC_LF] == MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, U_LF) &&
+              mbcsTable.stateTable[0][EBCDIC_NL] == MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, U_NL))) {
+            return false;
+        }
+        
+        if (mbcsTable.outputType == MBCS_OUTPUT_1) {
+            if (!(EBCDIC_RT_LF == MBCS_SINGLE_RESULT_FROM_U(table, results, U_LF) &&
+                  EBCDIC_RT_NL == MBCS_SINGLE_RESULT_FROM_U(table, results, U_NL))) {
+                return false;
+            }
+        } else /* MBCS_OUTPUT_2_SISO */ {
+            stage2Entry = MBCS_STAGE_2_FROM_U(table, U_LF);
+            if (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, U_LF) &&
+                  EBCDIC_LF == MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, U_LF))) {
+                return false;
+            }
+            
+            stage2Entry = MBCS_STAGE_2_FROM_U(table, U_NL);
+            if (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, U_NL) &&
+                  EBCDIC_NL == MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, U_NL))) {
+                return false;
+            }
+        }
+        
+        if (mbcsTable.fromUBytesLength > 0) {
+            /*
+             * We _know_ the number of bytes in the fromUnicodeBytes array
+             * starting with header.version 4.1.
+             */
+            sizeofFromUBytes = mbcsTable.fromUBytesLength;
+        } else {
+            /*
+             * Otherwise:
+             * There used to be code to enumerate the fromUnicode
+             * trie and find the highest entry, but it was removed in ICU 3.2
+             * because it was not tested and caused a low code coverage number.
+             */
+            throw new Exception("U_INVALID_FORMAT_ERROR");
+        }
+        
+        /*
+         * The table has an appropriate format.
+         * Allocate and build
+         * - a modified to-Unicode state table
+         * - a modified from-Unicode output array
+         * - a converter name string with the swap option appended
+         */
+//        size = mbcsTable.countStates * 1024 + sizeofFromUBytes + UConverterConstants.MAX_CONVERTER_NAME_LENGTH + 20;
+        
+        /* copy and modify the to-Unicode state table */
+        newStateTable = new int[mbcsTable.stateTable.length][mbcsTable.stateTable[0].length];
+        for (int i = 0; i < newStateTable.length; i++) {
+            System.arraycopy(mbcsTable.stateTable[i], 0, newStateTable[i], 0, newStateTable[i].length);
+        }
+        
+        newStateTable[0][EBCDIC_LF] = MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, U_NL);
+        newStateTable[0][EBCDIC_NL] = MBCS_ENTRY_FINAL(0, MBCS_STATE_VALID_DIRECT_16, U_LF);
+        
+        /* copy and modify the from-Unicode result table */
+        newResults = new byte[sizeofFromUBytes];
+        System.arraycopy(bytes, 0, newResults, 0, sizeofFromUBytes);
+        /* conveniently, the table access macros work on the left side of expressions */
+        if (mbcsTable.outputType == MBCS_OUTPUT_1) {
+            MBCS_SINGLE_RESULT_FROM_U_SET(table, newResults, U_LF, EBCDIC_RT_NL);
+            MBCS_SINGLE_RESULT_FROM_U_SET(table, newResults, U_NL, EBCDIC_RT_LF);
+        } else /* MBCS_OUTPUT_2_SISO */ {
+            stage2Entry = MBCS_STAGE_2_FROM_U(table, U_LF);
+            MBCS_VALUE_2_FROM_STAGE_2_SET(newResults, stage2Entry, U_LF, EBCDIC_NL);
+            
+            stage2Entry = MBCS_STAGE_2_FROM_U(table, U_NL);
+            MBCS_VALUE_2_FROM_STAGE_2_SET(newResults, stage2Entry, U_NL, EBCDIC_LF);
+        }
+        
+        /* set the canonical converter name */
+        newName = new String(icuCanonicalName);
+        newName.concat(UConverterConstants.OPTION_SWAP_LFNL_STRING);
+        
+        if (mbcsTable.swapLFNLStateTable == null) {
+            mbcsTable.swapLFNLStateTable = newStateTable;
+            mbcsTable.swapLFNLFromUnicodeBytes = newResults;
+            mbcsTable.swapLFNLName = newName;
+        }
+        return true;
+    }
+
+    /**
+     * MBCS output types for conversions from Unicode. These per-converter types determine the storage method in stage 3
+     * of the lookup table, mostly how many bytes are stored per entry.
+     */
+    static final int MBCS_OUTPUT_1 = 0; /* 0 */
+    static final int MBCS_OUTPUT_2 = MBCS_OUTPUT_1 + 1; /* 1 */
+    static final int MBCS_OUTPUT_3 = MBCS_OUTPUT_2 + 1; /* 2 */
+    static final int MBCS_OUTPUT_4 = MBCS_OUTPUT_3 + 1; /* 3 */
+    static final int MBCS_OUTPUT_3_EUC = 8; /* 8 */
+    static final int MBCS_OUTPUT_4_EUC = MBCS_OUTPUT_3_EUC + 1; /* 9 */
+    static final int MBCS_OUTPUT_2_SISO = 12; /* c */
+    static final int MBCS_OUTPUT_2_HZ = MBCS_OUTPUT_2_SISO + 1; /* d */
+    static final int MBCS_OUTPUT_EXT_ONLY = MBCS_OUTPUT_2_HZ + 1; /* e */
+    // static final int MBCS_OUTPUT_COUNT = MBCS_OUTPUT_EXT_ONLY + 1;
+    static final int MBCS_OUTPUT_DBCS_ONLY = 0xdb; /* runtime-only type for DBCS-only handling of SISO tables */
+
+    /* GB 18030 data ------------------------------------------------------------ */
+
+    /* helper macros for linear values for GB 18030 four-byte sequences */
+    private static long LINEAR_18030(long a, long b, long c, long d) {
+        return ((((a & 0xff) * 10 + (b & 0xff)) * 126L + (c & 0xff)) * 10L + (d & 0xff));
+    }
+
+    private static long LINEAR_18030_BASE = LINEAR_18030(0x81, 0x30, 0x81, 0x30);
+
+    private static long LINEAR(long x) {
+        return LINEAR_18030(x >>> 24, (x >>> 16) & 0xff, (x >>> 8) & 0xff, x & 0xff);
+    }
+
+    /*
+     * Some ranges of GB 18030 where both the Unicode code points and the GB four-byte sequences are contiguous and are
+     * handled algorithmically by the special callback functions below. The values are start & end of Unicode & GB
+     * codes.
+     * 
+     * Note that single surrogates are not mapped by GB 18030 as of the re-released mapping tables from 2000-nov-30.
+     */
+    private static final long gb18030Ranges[][] = new long[/* 13 */][/* 4 */] {
+            { 0x10000L, 0x10FFFFL, LINEAR(0x90308130L), LINEAR(0xE3329A35L) },
+            { 0x9FA6L, 0xD7FFL, LINEAR(0x82358F33L), LINEAR(0x8336C738L) },
+            { 0x0452L, 0x200FL, LINEAR(0x8130D330L), LINEAR(0x8136A531L) },
+            { 0xE865L, 0xF92BL, LINEAR(0x8336D030L), LINEAR(0x84308534L) },
+            { 0x2643L, 0x2E80L, LINEAR(0x8137A839L), LINEAR(0x8138FD38L) },
+            { 0xFA2AL, 0xFE2FL, LINEAR(0x84309C38L), LINEAR(0x84318537L) },
+            { 0x3CE1L, 0x4055L, LINEAR(0x8231D438L), LINEAR(0x8232AF32L) },
+            { 0x361BL, 0x3917L, LINEAR(0x8230A633L), LINEAR(0x8230F237L) },
+            { 0x49B8L, 0x4C76L, LINEAR(0x8234A131L), LINEAR(0x8234E733L) },
+            { 0x4160L, 0x4336L, LINEAR(0x8232C937L), LINEAR(0x8232F837L) },
+            { 0x478EL, 0x4946L, LINEAR(0x8233E838L), LINEAR(0x82349638L) },
+            { 0x44D7L, 0x464BL, LINEAR(0x8233A339L), LINEAR(0x8233C931L) },
+            { 0xFFE6L, 0xFFFFL, LINEAR(0x8431A234L), LINEAR(0x8431A439L) } };
+
+    /* bit flag for UConverter.options indicating GB 18030 special handling */
+    private static final int MBCS_OPTION_GB18030 = 0x8000;
+
+    // enum {
+        static final int MBCS_MAX_STATE_COUNT = 128;
+    // };
+    /**
+     * MBCS action codes for conversions to Unicode. These values are in bits 23..20 of the state table entries.
+     */
+    static final int MBCS_STATE_VALID_DIRECT_16 = 0;
+    static final int MBCS_STATE_VALID_DIRECT_20 = MBCS_STATE_VALID_DIRECT_16 + 1;
+    static final int MBCS_STATE_FALLBACK_DIRECT_16 = MBCS_STATE_VALID_DIRECT_20 + 1;
+    static final int MBCS_STATE_FALLBACK_DIRECT_20 = MBCS_STATE_FALLBACK_DIRECT_16 + 1;
+    static final int MBCS_STATE_VALID_16 = MBCS_STATE_FALLBACK_DIRECT_20 + 1;
+    static final int MBCS_STATE_VALID_16_PAIR = MBCS_STATE_VALID_16 + 1;
+    static final int MBCS_STATE_UNASSIGNED = MBCS_STATE_VALID_16_PAIR + 1;
+    static final int MBCS_STATE_ILLEGAL = MBCS_STATE_UNASSIGNED + 1;
+    static final int MBCS_STATE_CHANGE_ONLY = MBCS_STATE_ILLEGAL + 1;
+    
+    static int MBCS_ENTRY_SET_STATE(int entry, int state) { 
+        return (int)(((entry)&0x80ffffff)|((int)(state)<<24L));
+    }
+
+    static int MBCS_ENTRY_STATE(int entry) {
+        return (((entry)>>24)&0x7f);
+    }
+
+    /* Methods for state table entries */
+    static int MBCS_ENTRY_TRANSITION(int state, int offset) {
+        return (state << 24L) | offset;
+    }
+
+    static int MBCS_ENTRY_FINAL(int state, int action, int value) {
+        return (int) (0x80000000 | ((int) (state) << 24L) | ((action) << 20L) | (value));
+    }
+
+    static boolean MBCS_ENTRY_IS_TRANSITION(int entry) {
+        return (entry) >= 0;
+    }
+
+    static boolean MBCS_ENTRY_IS_FINAL(int entry) {
+        return (entry) < 0;
+    }
+
+    static int MBCS_ENTRY_TRANSITION_STATE(int entry) {
+        return ((entry) >>> 24);
+    }
+
+    static int MBCS_ENTRY_TRANSITION_OFFSET(int entry) {
+        return ((entry) & 0xffffff);
+    }
+
+    static int MBCS_ENTRY_FINAL_STATE(int entry) {
+        return ((entry) >>> 24) & 0x7f;
+    }
+
+    static boolean MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(int entry) {
+        return ((entry) < 0x80100000);
+    }
+
+    static int MBCS_ENTRY_FINAL_ACTION(int entry) {
+        return ((entry) >>> 20) & 0xf;
+    }
+
+    static int MBCS_ENTRY_FINAL_VALUE(int entry) {
+        return ((entry) & 0xfffff);
+    }
+
+    static char MBCS_ENTRY_FINAL_VALUE_16(int entry) {
+        return (char) (entry);
+    }
+    
+    static boolean MBCS_IS_ASCII_ROUNDTRIP(int b, long asciiRoundtrips) {
+        return (((asciiRoundtrips) & (1<<((b)>>2)))!=0);
+    }
+    
+    /**
+     * This macro version of _MBCSSingleSimpleGetNextUChar() gets a code point from a byte. It works for single-byte,
+     * single-state codepages that only map to and from BMP code points, and it always returns fallback values.
+     */
+    static char MBCS_SINGLE_SIMPLE_GET_NEXT_BMP(UConverterMBCSTable mbcs, final int b) {
+        return MBCS_ENTRY_FINAL_VALUE_16(mbcs.stateTable[0][b & UConverterConstants.UNSIGNED_BYTE_MASK]);
+    }
+
+    /* single-byte fromUnicode: get the 16-bit result word */
+    static char MBCS_SINGLE_RESULT_FROM_U(char[] table, byte[] results, int c) {
+        int i1 = table[c >>> 10] + ((c >>> 4) & 0x3f);
+        int i = 2 * (table[i1] + (c & 0xf)); // used as index into byte[] array treated as char[] array
+        return (char) (((results[i] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | (results[i + 1] & UConverterConstants.UNSIGNED_BYTE_MASK));
+    }
+    
+    /* single-byte fromUnicode: set the 16-bit result word with newValue*/
+    static void MBCS_SINGLE_RESULT_FROM_U_SET(char[] table, byte[] results, int c, int newValue) {
+        int i1 = table[c >>> 10] + ((c >>> 4) & 0x3f);
+        int i = 2 * (table[i1] + (c & 0xf)); // used as index into byte[] array treated as char[] array
+        results[i] = (byte)((newValue >> 8) & UConverterConstants.UNSIGNED_BYTE_MASK);
+        results[i + 1] =  (byte)(newValue & UConverterConstants.UNSIGNED_BYTE_MASK);
+    }
+
+    /* multi-byte fromUnicode: get the 32-bit stage 2 entry */
+    static int MBCS_STAGE_2_FROM_U(char[] table, int c) {
+        int i = 2 * (table[(c) >>> 10] + ((c >>> 4) & 0x3f)); // 2x because used as index into char[] array treated as
+        // int[] array
+        return ((table[i] & UConverterConstants.UNSIGNED_SHORT_MASK) << 16)
+                | (table[i + 1] & UConverterConstants.UNSIGNED_SHORT_MASK);
+    }
+
+    private static boolean MBCS_FROM_U_IS_ROUNDTRIP(int stage2Entry, int c) {
+        return (((stage2Entry) & (1 << (16 + ((c) & 0xf)))) != 0);
+    }
+
+    static char MBCS_VALUE_2_FROM_STAGE_2(byte[] bytes, int stage2Entry, int c) {
+        int i = 2 * (16 * ((char) stage2Entry & UConverterConstants.UNSIGNED_SHORT_MASK) + (c & 0xf));
+        return (char) (((bytes[i] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | (bytes[i + 1] & UConverterConstants.UNSIGNED_BYTE_MASK));
+    }
+    
+    static void MBCS_VALUE_2_FROM_STAGE_2_SET(byte[] bytes, int stage2Entry, int c, int newValue) {
+        int i = 2 * (16 * ((char) stage2Entry & UConverterConstants.UNSIGNED_SHORT_MASK) + (c & 0xf));
+        bytes[i] = (byte)((newValue >> 8) & UConverterConstants.UNSIGNED_BYTE_MASK);
+        bytes[i + 1] = (byte)(newValue & UConverterConstants.UNSIGNED_BYTE_MASK);
+    }
+
+    private static int MBCS_VALUE_4_FROM_STAGE_2(byte[] bytes, int stage2Entry, int c) {
+        int i = 4 * (16 * ((char) stage2Entry & UConverterConstants.UNSIGNED_SHORT_MASK) + (c & 0xf));
+        return ((bytes[i] & UConverterConstants.UNSIGNED_BYTE_MASK) << 24)
+                | ((bytes[i + 1] & UConverterConstants.UNSIGNED_BYTE_MASK) << 16)
+                | ((bytes[i + 2] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8)
+                | (bytes[i + 3] & UConverterConstants.UNSIGNED_BYTE_MASK);
+    }
+
+    static int MBCS_POINTER_3_FROM_STAGE_2(byte[] bytes, int stage2Entry, int c) {
+        return ((16 * ((char) (stage2Entry) & UConverterConstants.UNSIGNED_SHORT_MASK) + ((c) & 0xf)) * 3);
+    }
+
+    // ------------UConverterExt-------------------------------------------------------
+
+    static final int EXT_INDEXES_LENGTH = 0; /* 0 */
+
+    static final int EXT_TO_U_INDEX = EXT_INDEXES_LENGTH + 1; /* 1 */
+    static final int EXT_TO_U_LENGTH = EXT_TO_U_INDEX + 1;
+    static final int EXT_TO_U_UCHARS_INDEX = EXT_TO_U_LENGTH + 1;
+    static final int EXT_TO_U_UCHARS_LENGTH = EXT_TO_U_UCHARS_INDEX + 1;
+
+    static final int EXT_FROM_U_UCHARS_INDEX = EXT_TO_U_UCHARS_LENGTH + 1; /* 5 */
+    static final int EXT_FROM_U_VALUES_INDEX = EXT_FROM_U_UCHARS_INDEX + 1;
+    static final int EXT_FROM_U_LENGTH = EXT_FROM_U_VALUES_INDEX + 1;
+    static final int EXT_FROM_U_BYTES_INDEX = EXT_FROM_U_LENGTH + 1;
+    static final int EXT_FROM_U_BYTES_LENGTH = EXT_FROM_U_BYTES_INDEX + 1;
+
+    static final int EXT_FROM_U_STAGE_12_INDEX = EXT_FROM_U_BYTES_LENGTH + 1; /* 10 */
+    static final int EXT_FROM_U_STAGE_1_LENGTH = EXT_FROM_U_STAGE_12_INDEX + 1;
+    static final int EXT_FROM_U_STAGE_12_LENGTH = EXT_FROM_U_STAGE_1_LENGTH + 1;
+    static final int EXT_FROM_U_STAGE_3_INDEX = EXT_FROM_U_STAGE_12_LENGTH + 1;
+    static final int EXT_FROM_U_STAGE_3_LENGTH = EXT_FROM_U_STAGE_3_INDEX + 1;
+    static final int EXT_FROM_U_STAGE_3B_INDEX = EXT_FROM_U_STAGE_3_LENGTH + 1;
+    static final int EXT_FROM_U_STAGE_3B_LENGTH = EXT_FROM_U_STAGE_3B_INDEX + 1;
+
+    private static final int EXT_COUNT_BYTES = EXT_FROM_U_STAGE_3B_LENGTH + 1; /* 17 */
+    // private static final int EXT_COUNT_UCHARS = EXT_COUNT_BYTES + 1;
+    // private static final int EXT_FLAGS = EXT_COUNT_UCHARS + 1;
+    //
+    // private static final int EXT_RESERVED_INDEX = EXT_FLAGS + 1; /* 20, moves with additional indexes */
+    //
+    // private static final int EXT_SIZE=31;
+    // private static final int EXT_INDEXES_MIN_LENGTH=32;
+
+    static final int EXT_FROM_U_MAX_DIRECT_LENGTH = 3;
+
+    /* toUnicode helpers -------------------------------------------------------- */
+
+    private static final int TO_U_BYTE_SHIFT = 24;
+    private static final int TO_U_VALUE_MASK = 0xffffff;
+    private static final int TO_U_MIN_CODE_POINT = 0x1f0000;
+    private static final int TO_U_MAX_CODE_POINT = 0x2fffff;
+    private static final int TO_U_ROUNDTRIP_FLAG = (1 << 23);
+    private static final int TO_U_INDEX_MASK = 0x3ffff;
+    private static final int TO_U_LENGTH_SHIFT = 18;
+    private static final int TO_U_LENGTH_OFFSET = 12;
+
+    /* maximum number of indexed UChars */
+    static final int MAX_UCHARS = 19;
+
+    static int TO_U_GET_BYTE(int word) {
+        return word >>> TO_U_BYTE_SHIFT;
+    }
+
+    static int TO_U_GET_VALUE(int word) {
+        return word & TO_U_VALUE_MASK;
+    }
+
+    static boolean TO_U_IS_ROUNDTRIP(int value) {
+        return (value & TO_U_ROUNDTRIP_FLAG) != 0;
+    }
+
+    static boolean TO_U_IS_PARTIAL(int value) {
+        return (value & UConverterConstants.UNSIGNED_INT_MASK) < TO_U_MIN_CODE_POINT;
+    }
+
+    static int TO_U_GET_PARTIAL_INDEX(int value) {
+        return value;
+    }
+
+    static int TO_U_MASK_ROUNDTRIP(int value) {
+        return value & ~TO_U_ROUNDTRIP_FLAG;
+    }
+
+    private static int TO_U_MAKE_WORD(byte b, int value) {
+        return ((b & UConverterConstants.UNSIGNED_BYTE_MASK) << TO_U_BYTE_SHIFT) | value;
+    }
+
+    /* use after masking off the roundtrip flag */
+    static boolean TO_U_IS_CODE_POINT(int value) {
+        return (value & UConverterConstants.UNSIGNED_INT_MASK) <= TO_U_MAX_CODE_POINT;
+    }
+
+    static int TO_U_GET_CODE_POINT(int value) {
+        return (int) ((value & UConverterConstants.UNSIGNED_INT_MASK) - TO_U_MIN_CODE_POINT);
+    }
+
+    private static int TO_U_GET_INDEX(int value) {
+        return value & TO_U_INDEX_MASK;
+    }
+
+    private static int TO_U_GET_LENGTH(int value) {
+        return (value >>> TO_U_LENGTH_SHIFT) - TO_U_LENGTH_OFFSET;
+    }
+
+    /* fromUnicode helpers ------------------------------------------------------ */
+
+    /* most trie constants are shared with ucnvmbcs.h */
+    private static final int STAGE_2_LEFT_SHIFT = 2;
+
+    // private static final int STAGE_3_GRANULARITY = 4;
+
+    /* trie access, returns the stage 3 value=index to stage 3b; s1Index=c>>10 */
+    static int FROM_U(CharBuffer stage12, CharBuffer stage3, int s1Index, int c) {
+        return stage3.get(((int) stage12.get((stage12.get(s1Index) + ((c >>> 4) & 0x3f))) << STAGE_2_LEFT_SHIFT)
+                + (c & 0xf));
+    }
+
+    private static final int FROM_U_LENGTH_SHIFT = 24;
+    private static final int FROM_U_ROUNDTRIP_FLAG = 1 << 31;
+    static final int FROM_U_RESERVED_MASK = 0x60000000;
+    private static final int FROM_U_DATA_MASK = 0xffffff;
+
+    /* special value for "no mapping" to <subchar1> (impossible roundtrip to 0 bytes, value 01) */
+    static final int FROM_U_SUBCHAR1 = 0x80000001;
+
+    /* at most 3 bytes in the lower part of the value */
+    private static final int FROM_U_MAX_DIRECT_LENGTH = 3;
+
+    /* maximum number of indexed bytes */
+    static final int MAX_BYTES = 0x1f;
+
+    static boolean FROM_U_IS_PARTIAL(int value) {
+        return (value >>> FROM_U_LENGTH_SHIFT) == 0;
+    }
+
+    static int FROM_U_GET_PARTIAL_INDEX(int value) {
+        return value;
+    }
+
+    static boolean FROM_U_IS_ROUNDTRIP(int value) {
+        return (value & FROM_U_ROUNDTRIP_FLAG) != 0;
+    }
+
+    private static int FROM_U_MASK_ROUNDTRIP(int value) {
+        return value & ~FROM_U_ROUNDTRIP_FLAG;
+    }
+
+    /* use after masking off the roundtrip flag */
+    static int FROM_U_GET_LENGTH(int value) {
+        return (value >>> FROM_U_LENGTH_SHIFT) & MAX_BYTES;
+    }
+
+    /* get bytes or bytes index */
+    static int FROM_U_GET_DATA(int value) {
+        return value & FROM_U_DATA_MASK;
+    }
+
+    /* get the pointer to an extension array from indexes[index] */
+    static Buffer ARRAY(ByteBuffer indexes, int index, Class itemType) {
+        int oldpos = indexes.position();
+        Buffer b;
+
+        indexes.position(indexes.getInt(index << 2));
+        if (itemType == int.class)
+            b = indexes.asIntBuffer();
+        else if (itemType == char.class)
+            b = indexes.asCharBuffer();
+        else if (itemType == short.class)
+            b = indexes.asShortBuffer();
+        else
+            // default or (itemType == byte.class)
+            b = indexes.slice();
+        indexes.position(oldpos);
+        return b;
+    }
+
+    private static int GET_MAX_BYTES_PER_UCHAR(ByteBuffer indexes) {
+        indexes.position(0);
+        return indexes.getInt(EXT_COUNT_BYTES) & 0xff;
+    }
+
+    /*
+     * @return index of the UChar, if found; else <0
+     */
+    static int findFromU(CharBuffer fromUSection, int length, char u) {
+        int i, start, limit;
+
+        /* binary search */
+        start = 0;
+        limit = length;
+        for (;;) {
+            i = limit - start;
+            if (i <= 1) {
+                break; /* done */
+            }
+            /* start<limit-1 */
+
+            if (i <= 4) {
+                /* linear search for the last part */
+                if (u <= fromUSection.get(fromUSection.position() + start)) {
+                    break;
+                }
+                if (++start < limit && u <= fromUSection.get(fromUSection.position() + start)) {
+                    break;
+                }
+                if (++start < limit && u <= fromUSection.get(fromUSection.position() + start)) {
+                    break;
+                }
+                /* always break at start==limit-1 */
+                ++start;
+                break;
+            }
+
+            i = (start + limit) / 2;
+            if (u < fromUSection.get(fromUSection.position() + i)) {
+                limit = i;
+            } else {
+                start = i;
+            }
+        }
+
+        /* did we really find it? */
+        if (start < limit && u == fromUSection.get(fromUSection.position() + start)) {
+            return start;
+        } else {
+            return -1; /* not found */
+        }
+    }
+
+    /*
+     * @return lookup value for the byte, if found; else 0
+     */
+    static int findToU(IntBuffer toUSection, int length, short byt) {
+        long word0, word;
+        int i, start, limit;
+
+        /* check the input byte against the lowest and highest section bytes */
+        // agljport:comment instead of receiving a start position parameter for toUSection we'll rely on its position
+        // property
+        start = TO_U_GET_BYTE(toUSection.get(toUSection.position()));
+        limit = TO_U_GET_BYTE(toUSection.get(toUSection.position() + length - 1));
+        if (byt < start || limit < byt) {
+            return 0; /* the byte is out of range */
+        }
+
+        if (length == ((limit - start) + 1)) {
+            /* direct access on a linear array */
+            return TO_U_GET_VALUE(toUSection.get(toUSection.position() + byt - start)); /* could be 0 */
+        }
+
+        /* word0 is suitable for <=toUSection[] comparison, word for <toUSection[] */
+        word0 = TO_U_MAKE_WORD((byte) byt, 0) & UConverterConstants.UNSIGNED_INT_MASK;
+
+        /*
+         * Shift byte once instead of each section word and add 0xffffff. We will compare the shifted/added byte
+         * (bbffffff) against section words which have byte values in the same bit position. If and only if byte bb <
+         * section byte ss then bbffffff<ssvvvvvv for all v=0..f so we need not mask off the lower 24 bits of each
+         * section word.
+         */
+        word = word0 | TO_U_VALUE_MASK;
+
+        /* binary search */
+        start = 0;
+        limit = length;
+        for (;;) {
+            i = limit - start;
+            if (i <= 1) {
+                break; /* done */
+            }
+            /* start<limit-1 */
+
+            if (i <= 4) {
+                /* linear search for the last part */
+                if (word0 <= (toUSection.get(toUSection.position() + start) & UConverterConstants.UNSIGNED_INT_MASK)) {
+                    break;
+                }
+                if (++start < limit
+                        && word0 <= (toUSection.get(toUSection.position() + start) & UConverterConstants.UNSIGNED_INT_MASK)) {
+                    break;
+                }
+                if (++start < limit
+                        && word0 <= (toUSection.get(toUSection.position() + start) & UConverterConstants.UNSIGNED_INT_MASK)) {
+                    break;
+                }
+                /* always break at start==limit-1 */
+                ++start;
+                break;
+            }
+
+            i = (start + limit) / 2;
+            if (word < (toUSection.get(toUSection.position() + i) & UConverterConstants.UNSIGNED_INT_MASK)) {
+                limit = i;
+            } else {
+                start = i;
+            }
+        }
+
+        /* did we really find it? */
+        if (start < limit) {
+            word = (toUSection.get(toUSection.position() + start) & UConverterConstants.UNSIGNED_INT_MASK);
+            if (byt == TO_U_GET_BYTE((int)word)) {
+                return TO_U_GET_VALUE((int) word); /* never 0 */
+            }
+        } 
+        return 0; /* not found */
+    }
+
+    /*
+     * TRUE if not an SI/SO stateful converter, or if the match length fits with the current converter state
+     */
+    static boolean TO_U_VERIFY_SISO_MATCH(byte sisoState, int match) {
+        return sisoState < 0 || (sisoState == 0) == (match == 1);
+    }
+
+    /*
+     * get the SI/SO toU state (state 0 is for SBCS, 1 for DBCS), or 1 for DBCS-only, or -1 if the converter is not
+     * SI/SO stateful
+     * 
+     * Note: For SI/SO stateful converters getting here, cnv->mode==0 is equivalent to firstLength==1.
+     */
+    private static int SISO_STATE(UConverterSharedData sharedData, int mode) {
+        return sharedData.mbcs.outputType == MBCS_OUTPUT_2_SISO ? (byte) mode
+                : sharedData.mbcs.outputType == MBCS_OUTPUT_DBCS_ONLY ? 1 : -1;
+    }
+
+    class CharsetDecoderMBCS extends CharsetDecoderICU {
+
+        CharsetDecoderMBCS(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex;
+            int stateTable[][/* 256 */];
+            char[] unicodeCodeUnits;
+
+            int offset;
+            byte state;
+            int byteIndex;
+            byte[] bytes;
+
+            int sourceIndex, nextSourceIndex;
+
+            int entry = 0;
+            char c;
+            byte action;
+
+            if (preToULength > 0) {
+                /*
+                 * pass sourceIndex=-1 because we continue from an earlier buffer in the future, this may change with
+                 * continuous offsets
+                 */
+                cr[0] = continueMatchToU(source, target, offsets, -1, flush);
+
+                if (cr[0].isError() || preToULength < 0) {
+                    return cr[0];
+                }
+            }
+
+            if (sharedData.mbcs.countStates == 1) {
+                if ((sharedData.mbcs.unicodeMask & UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                    cr[0] = cnvMBCSSingleToBMPWithOffsets(source, target, offsets, flush);
+                } else {
+                    cr[0] = cnvMBCSSingleToUnicodeWithOffsets(source, target, offsets, flush);
+                }
+                return cr[0];
+            }
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                stateTable = sharedData.mbcs.swapLFNLStateTable;
+            } else {
+                stateTable = sharedData.mbcs.stateTable;
+            }
+            unicodeCodeUnits = sharedData.mbcs.unicodeCodeUnits;
+
+            /* get the converter state from UConverter */
+            offset = (int) toUnicodeStatus;
+            byteIndex = toULength;
+            bytes = toUBytesArray;
+
+            /*
+             * if we are in the SBCS state for a DBCS-only converter, then load the DBCS state from the MBCS data
+             * (dbcsOnlyState==0 if it is not a DBCS-only converter)
+             */
+            state = (byte)mode;
+            if (state == 0) {
+                state = sharedData.mbcs.dbcsOnlyState;
+            }
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = byteIndex == 0 ? 0 : -1;
+            nextSourceIndex = 0;
+
+            /* conversion loop */
+            while (sourceArrayIndex < source.limit()) {
+                /*
+                 * This following test is to see if available input would overflow the output. It does not catch output
+                 * of more than one code unit that overflows as a result of a surrogate pair or callback output from the
+                 * last source byte. Therefore, those situations also test for overflows and will then break the loop,
+                 * too.
+                 */
+                if (!target.hasRemaining()) {
+                    /* target is full */
+                    cr[0] = CoderResult.OVERFLOW;
+                    break;
+                }
+
+                if (byteIndex == 0) {
+                    /* optimized loop for 1/2-byte input and BMP output */
+                    // agljport:todo see ucnvmbcs.c for deleted block
+                    do {
+                        entry = stateTable[state][source.get(sourceArrayIndex)&UConverterConstants.UNSIGNED_BYTE_MASK];
+                        if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                            state = (byte) MBCS_ENTRY_TRANSITION_STATE(entry);
+                            offset = MBCS_ENTRY_TRANSITION_OFFSET(entry);
+                            ++sourceArrayIndex;
+                            if (sourceArrayIndex < source.limit()
+                                    && MBCS_ENTRY_IS_FINAL(entry = stateTable[state][source.get(sourceArrayIndex)&UConverterConstants.UNSIGNED_BYTE_MASK])
+                                    && MBCS_ENTRY_FINAL_ACTION(entry) == MBCS_STATE_VALID_16
+                                    && (c = unicodeCodeUnits[offset + MBCS_ENTRY_FINAL_VALUE_16(entry)]) < 0xfffe) {
+                                ++sourceArrayIndex;
+                                target.put(c);
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    sourceIndex = (nextSourceIndex += 2);
+                                }
+                                state = (byte) MBCS_ENTRY_FINAL_STATE(entry); /* typically 0 */
+                                offset = 0;
+                            } else {
+                                /* set the state and leave the optimized loop */
+                                ++nextSourceIndex;
+                                bytes[0] = source.get(sourceArrayIndex - 1);
+                                byteIndex = 1;
+                                break;
+                            }
+                        } else {
+                            if (MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
+                                /* output BMP code point */
+                                ++sourceArrayIndex;
+                                target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    sourceIndex = ++nextSourceIndex;
+                                }
+                                state = (byte) MBCS_ENTRY_FINAL_STATE(entry); /* typically 0 */
+                            } else {
+                                /* leave the optimized loop */
+                                break;
+                            }
+                        }
+                    } while (sourceArrayIndex < source.limit() && target.hasRemaining());
+                    /*
+                     * these tests and break statements could be put inside the loop if C had "break outerLoop" like
+                     * Java
+                     */
+                    if (sourceArrayIndex >= source.limit()) {
+                        break;
+                    }
+                    if (!target.hasRemaining()) {
+                        /* target is full */
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    ++nextSourceIndex;
+                    bytes[byteIndex++] = source.get(sourceArrayIndex++);
+                } else /* byteIndex>0 */{
+                    ++nextSourceIndex;
+                    entry = stateTable[state][(bytes[byteIndex++] = source.get(sourceArrayIndex++))
+                            & UConverterConstants.UNSIGNED_BYTE_MASK];
+                }
+
+                if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                    state = (byte) MBCS_ENTRY_TRANSITION_STATE(entry);
+                    offset += MBCS_ENTRY_TRANSITION_OFFSET(entry);
+                    continue;
+                }
+
+                /* save the previous state for proper extension mapping with SI/SO-stateful converters */
+                mode = state;
+
+                /* set the next state early so that we can reuse the entry variable */
+                state = (byte) MBCS_ENTRY_FINAL_STATE(entry); /* typically 0 */
+
+                /*
+                 * An if-else-if chain provides more reliable performance for the most common cases compared to a
+                 * switch.
+                 */
+                action = (byte) (MBCS_ENTRY_FINAL_ACTION(entry));
+                if (action == MBCS_STATE_VALID_16) {
+                    offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[offset];
+                    if (c < 0xfffe) {
+                        /* output BMP code point */
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (c == 0xfffe) {
+                        if (isFallbackUsed() && (entry = (int) getFallback(sharedData.mbcs, offset)) != 0xfffe) {
+                            /* output fallback BMP code point */
+                            target.put((char) entry);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                            byteIndex = 0;
+                        }
+                    } else {
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(byteIndex);
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_16) {
+                    /* output BMP code point */
+                    target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    byteIndex = 0;
+                } else if (action == MBCS_STATE_VALID_16_PAIR) {
+                    offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[offset++];
+                    if (c < 0xd800) {
+                        /* output BMP code point below 0xd800 */
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (isFallbackUsed() ? c <= 0xdfff : c <= 0xdbff) {
+                        /* output roundtrip or fallback surrogate pair */
+                        target.put((char) (c & 0xdbff));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                        if (target.hasRemaining()) {
+                            target.put(unicodeCodeUnits[offset]);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                        } else {
+                            /* target overflow */
+                            charErrorBufferArray[0] = unicodeCodeUnits[offset];
+                            charErrorBufferLength = 1;
+                            cr[0] = CoderResult.OVERFLOW;
+
+                            offset = 0;
+                            break;
+                        }
+                    } else if (isFallbackUsed() ? (c & 0xfffe) == 0xe000 : c == 0xe000) {
+                        /* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
+                        target.put(unicodeCodeUnits[offset]);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (c == 0xffff) {
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(byteIndex);
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_20
+                        || (action == MBCS_STATE_FALLBACK_DIRECT_20 && isFallbackUsed())) {
+                    entry = MBCS_ENTRY_FINAL_VALUE(entry);
+                    /* output surrogate pair */
+                    target.put((char) (0xd800 | (char) (entry >> 10)));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    byteIndex = 0;
+                    c = (char) (0xdc00 | (char) (entry & 0x3ff));
+                    if (target.hasRemaining()) {
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        /* target overflow */
+                        charErrorBufferArray[0] = c;
+                        charErrorBufferLength = 1;
+                        cr[0] = CoderResult.OVERFLOW;
+
+                        offset = 0;
+                        break;
+                    }
+                } else if (action == MBCS_STATE_CHANGE_ONLY) {
+                    /*
+                     * This serves as a state change without any output. It is useful for reading simple stateful
+                     * encodings, for example using just Shift-In/Shift-Out codes. The 21 unused bits may later be used
+                     * for more sophisticated state transitions.
+                     */
+                    if (sharedData.mbcs.dbcsOnlyState == 0) {
+                        byteIndex = 0;
+                    } else {
+                        /* SI/SO are illegal for DBCS-only conversion */
+                        state = (byte) (mode); /* restore the previous state */
+
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(byteIndex);
+                    }
+                } else if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                    if (isFallbackUsed()) {
+                        /* output BMP code point */
+                        target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    }
+                } else if (action == MBCS_STATE_UNASSIGNED) {
+                    /* just fall through */
+                } else if (action == MBCS_STATE_ILLEGAL) {
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(byteIndex);
+                } else {
+                    /* reserved, must never occur */
+                    byteIndex = 0;
+                }
+
+                /* end of action codes: prepare for a new character */
+                offset = 0;
+
+                if (byteIndex == 0) {
+                    sourceIndex = nextSourceIndex;
+                } else if (cr[0].isError()) {
+                    /* callback(illegal) */
+                    break;
+                } else /* unassigned sequences indicated with byteIndex>0 */{
+                    /* try an extension mapping */
+                    int sourceBeginIndex = sourceArrayIndex;
+                    source.position(sourceArrayIndex);
+                    byteIndex = toU(byteIndex, source, target, offsets, sourceIndex, flush, cr);
+                    sourceArrayIndex = source.position();
+                    sourceIndex = nextSourceIndex + (int) (sourceArrayIndex - sourceBeginIndex);
+
+                    if (cr[0].isError() || cr[0].isOverflow()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    }
+                }
+            }
+
+            /* set the converter state back into UConverter */
+            toUnicodeStatus = offset;
+            mode = state;
+            toULength = byteIndex;
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        /*
+         * continue partial match with new input never called for simple, single-character conversion
+         */
+        private CoderResult continueMatchToU(ByteBuffer source, CharBuffer target, IntBuffer offsets, int srcIndex,
+                boolean flush) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+
+            int[] value = new int[1];
+            int match, length;
+
+            match = matchToU((byte) SISO_STATE(sharedData, mode), preToUArray, preToUBegin, preToULength, source,
+                    value, isToUUseFallback(), flush);
+
+            if (match > 0) {
+                if (match >= preToULength) {
+                    /* advance src pointer for the consumed input */
+                    source.position(source.position() + match - preToULength);
+                    preToULength = 0;
+                } else {
+                    /* the match did not use all of preToU[] - keep the rest for replay */
+                    length = preToULength - match;
+                    System.arraycopy(preToUArray, preToUBegin + match, preToUArray, preToUBegin, length);
+                    preToULength = (byte) -length;
+                }
+
+                /* write result */
+                cr = writeToU(value[0], target, offsets, srcIndex);
+            } else if (match < 0) {
+                /* save state for partial match */
+                int j, sArrayIndex;
+
+                /* just _append_ the newly consumed input to preToU[] */
+                sArrayIndex = source.position();
+                match = -match;
+                for (j = preToULength; j < match; ++j) {
+                    preToUArray[j] = source.get(sArrayIndex++);
+                }
+                source.position(sArrayIndex); /* same as *src=srcLimit; because we reached the end of input */
+                preToULength = (byte) match;
+            } else /* match==0 */{
+                /*
+                 * no match
+                 * 
+                 * We need to split the previous input into two parts:
+                 * 
+                 * 1. The first codepage character is unmappable - that's how we got into trying the extension data in
+                 * the first place. We need to move it from the preToU buffer to the error buffer, set an error code,
+                 * and prepare the rest of the previous input for 2.
+                 * 
+                 * 2. The rest of the previous input must be converted once we come back from the callback for the first
+                 * character. At that time, we have to try again from scratch to convert these input characters. The
+                 * replay will be handled by the ucnv.c conversion code.
+                 */
+
+                /* move the first codepage character to the error field */
+                System.arraycopy(preToUArray, preToUBegin, toUBytesArray, toUBytesBegin, preToUFirstLength);
+                toULength = preToUFirstLength;
+
+                /* move the rest up inside the buffer */
+                length = preToULength - preToUFirstLength;
+                if (length > 0) {
+                    System.arraycopy(preToUArray, preToUBegin + preToUFirstLength, preToUArray, preToUBegin, length);
+                }
+
+                /* mark preToU for replay */
+                preToULength = (byte) -length;
+
+                /* set the error code for unassigned */
+                cr = CoderResult.unmappableForLength(preToUFirstLength);
+            }
+            return cr;
+        }
+
+        /*
+         * this works like natchFromU() except - the first character is in pre - no trie is used - the returned
+         * matchLength is not offset by 2
+         */
+        private int matchToU(byte sisoState, byte[] preArray, int preArrayBegin, int preLength, ByteBuffer source,
+                int[] pMatchValue, boolean isUseFallback, boolean flush) {
+            ByteBuffer cx = sharedData.mbcs.extIndexes;
+            IntBuffer toUTable, toUSection;
+
+            int value, matchValue, srcLength = 0;
+            int i, j, index, length, matchLength;
+            short b;
+
+            if (cx == null || cx.asIntBuffer().get(EXT_TO_U_LENGTH) <= 0) {
+                return 0; /* no extension data, no match */
+            }
+
+            /* initialize */
+            toUTable = (IntBuffer) ARRAY(cx, EXT_TO_U_INDEX, int.class);
+            index = 0;
+
+            matchValue = 0;
+            i = j = matchLength = 0;
+            if (source != null) { 
+                srcLength = source.remaining();
+            }
+
+            if (sisoState == 0) {
+                /* SBCS state of an SI/SO stateful converter, look at only exactly 1 byte */
+                if (preLength > 1) {
+                    return 0; /* no match of a DBCS sequence in SBCS mode */
+                } else if (preLength == 1) {
+                    srcLength = 0;
+                } else /* preLength==0 */{
+                    if (srcLength > 1) {
+                        srcLength = 1;
+                    }
+                }
+                flush = true;
+            }
+
+            /* we must not remember fallback matches when not using fallbacks */
+
+            /* match input units until there is a full match or the input is consumed */
+            for (;;) {
+                /* go to the next section */
+                int oldpos = toUTable.position();
+                toUSection = ((IntBuffer) toUTable.position(index)).slice();
+                toUTable.position(oldpos);
+
+                /* read first pair of the section */
+                value = toUSection.get();
+                length = TO_U_GET_BYTE(value);
+                value = TO_U_GET_VALUE(value);
+                if (value != 0 && (TO_U_IS_ROUNDTRIP(value) || isToUUseFallback(isUseFallback))
+                        && TO_U_VERIFY_SISO_MATCH(sisoState, i + j)) {
+                    /* remember longest match so far */
+                    matchValue = value;
+                    matchLength = i + j;
+                }
+
+                /* match pre[] then src[] */
+                if (i < preLength) {
+                    b = (short) (preArray[preArrayBegin + i++] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                } else if (j < srcLength) {
+                    b = (short) (source.get(source.position() + j++) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                } else {
+                    /* all input consumed, partial match */
+                    if (flush || (length = (i + j)) > MAX_BYTES) {
+                        /*
+                         * end of the entire input stream, stop with the longest match so far or: partial match must not
+                         * be longer than UCNV_EXT_MAX_BYTES because it must fit into state buffers
+                         */
+                        break;
+                    } else {
+                        /* continue with more input next time */
+                        return -length;
+                    }
+                }
+
+                /* search for the current UChar */
+                value = findToU(toUSection, length, b);
+                if (value == 0) {
+                    /* no match here, stop with the longest match so far */
+                    break;
+                } else {
+                    if (TO_U_IS_PARTIAL(value)) {
+                        /* partial match, continue */
+                        index = TO_U_GET_PARTIAL_INDEX(value);
+                    } else {
+                        if ((TO_U_IS_ROUNDTRIP(value) || isToUUseFallback(isUseFallback)) && TO_U_VERIFY_SISO_MATCH(sisoState, i + j)) {
+                            /* full match, stop with result */
+                            matchValue = value;
+                            matchLength = i + j;
+                        } else {
+                            /* full match on fallback not taken, stop with the longest match so far */
+                        }
+                        break;
+                    }
+                }
+            }
+
+            if (matchLength == 0) {
+                /* no match at all */
+                return 0;
+            }
+
+            /* return result */
+            pMatchValue[0] = TO_U_MASK_ROUNDTRIP(matchValue);
+            return matchLength;
+        }
+
+        private CoderResult writeToU(int value, CharBuffer target, IntBuffer offsets, int srcIndex) {
+            ByteBuffer cx = sharedData.mbcs.extIndexes;
+            /* output the result */
+            if (TO_U_IS_CODE_POINT(value)) {
+                /* output a single code point */
+                return toUWriteCodePoint(TO_U_GET_CODE_POINT(value), target, offsets, srcIndex);
+            } else {
+                /* output a string - with correct data we have resultLength>0 */
+
+                char[] a = new char[TO_U_GET_LENGTH(value)];
+                CharBuffer cb = ((CharBuffer) ARRAY(cx, EXT_TO_U_UCHARS_INDEX, char.class));
+                cb.position(TO_U_GET_INDEX(value));
+                cb.get(a, 0, a.length);
+                return toUWriteUChars(this, a, 0, a.length, target, offsets, srcIndex);
+            }
+        }
+
+        private CoderResult toUWriteCodePoint(int c, CharBuffer target, IntBuffer offsets, int sourceIndex) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+            int tBeginIndex = target.position();
+
+            if (target.hasRemaining()) {
+                if (c <= 0xffff) {
+                    target.put((char) c);
+                    c = UConverterConstants.U_SENTINEL;
+                } else /* c is a supplementary code point */{
+                    target.put(UTF16.getLeadSurrogate(c));
+                    c = UTF16.getTrailSurrogate(c);
+                    if (target.hasRemaining()) {
+                        target.put((char) c);
+                        c = UConverterConstants.U_SENTINEL;
+                    }
+                }
+
+                /* write offsets */
+                if (offsets != null) {
+                    offsets.put(sourceIndex);
+                    if ((tBeginIndex + 1) < target.position()) {
+                        offsets.put(sourceIndex);
+                    }
+                }
+            }
+
+            /* write overflow from c */
+            if (c >= 0) {
+                charErrorBufferLength = UTF16.append(charErrorBufferArray, 0, c);
+                cr = CoderResult.OVERFLOW;
+            }
+
+            return cr;
+        }
+
+        /*
+         * Input sequence: cnv->toUBytes[0..length[ @return if(U_FAILURE) return the length (toULength, byteIndex) for
+         * the input else return 0 after output has been written to the target
+         */
+        private int toU(int length, ByteBuffer source, CharBuffer target, IntBuffer offsets, int sourceIndex,
+                boolean flush, CoderResult[] cr) {
+            // ByteBuffer cx;
+
+            if (sharedData.mbcs.extIndexes != null
+                    && initialMatchToU(length, source, target, offsets, sourceIndex, flush, cr)) {
+                return 0; /* an extension mapping handled the input */
+            }
+
+            /* GB 18030 */
+            if (length == 4 && (options & MBCS_OPTION_GB18030) != 0) {
+                long[] range;
+                long linear;
+                int i;
+
+                linear = LINEAR_18030(toUBytesArray[0], toUBytesArray[1], toUBytesArray[2], toUBytesArray[3]);
+                for (i = 0; i < gb18030Ranges.length; ++i) {
+                    range = gb18030Ranges[i];
+                    if (range[2] <= linear && linear <= range[3]) {
+                        /* found the sequence, output the Unicode code point for it */
+                        cr[0] = CoderResult.UNDERFLOW;
+
+                        /* add the linear difference between the input and start sequences to the start code point */
+                        linear = range[0] + (linear - range[2]);
+
+                        /* output this code point */
+                        cr[0] = toUWriteCodePoint((int) linear, target, offsets, sourceIndex);
+
+                        return 0;
+                    }
+                }
+            }
+
+            /* no mapping */
+            cr[0] = CoderResult.unmappableForLength(length);
+            return length;
+        }
+
+        /*
+         * target<targetLimit; set error code for overflow
+         */
+        private boolean initialMatchToU(int firstLength, ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                int srcIndex, boolean flush, CoderResult[] cr) {
+            int[] value = new int[1];
+            int match = 0;
+
+            /* try to match */
+            match = matchToU((byte) SISO_STATE(sharedData, mode), toUBytesArray, toUBytesBegin, firstLength, source,
+                    value, isToUUseFallback(), flush);
+            if (match > 0) {
+                /* advance src pointer for the consumed input */
+                source.position(source.position() + match - firstLength);
+
+                /* write result to target */
+                cr[0] = writeToU(value[0], target, offsets, srcIndex);
+                return true;
+            } else if (match < 0) {
+                /* save state for partial match */
+                byte[] sArray;
+                int sArrayIndex;
+                int j;
+
+                /* copy the first code point */
+                sArray = toUBytesArray;
+                sArrayIndex = toUBytesBegin;
+                preToUFirstLength = (byte) firstLength;
+                for (j = 0; j < firstLength; ++j) {
+                    preToUArray[j] = sArray[sArrayIndex++];
+                }
+
+                /* now copy the newly consumed input */
+                sArrayIndex = source.position();
+                match = -match;
+                for (; j < match; ++j) {
+                    preToUArray[j] = source.get(sArrayIndex++);
+                }
+                source.position(sArrayIndex);
+                preToULength = (byte) match;
+                return true;
+            } else /* match==0 no match */{
+                return false;
+            }
+        }
+
+        private int simpleMatchToU(ByteBuffer source, boolean useFallback) {
+            int[] value = new int[1];
+            int match;
+
+            if (source.remaining() <= 0) {
+                return 0xffff;
+            }
+
+            /* try to match */
+            match = matchToU((byte) -1, source.array(), source.position(), source.limit(), null, value, useFallback, true);
+
+            if (match == source.limit()) {
+                /* write result for simple, single-character conversion */
+                if (TO_U_IS_CODE_POINT(value[0])) {
+                    return TO_U_GET_CODE_POINT(value[0]);
+                }
+            }
+
+            /*
+             * return no match because - match>0 && value points to string: simple conversion cannot handle multiple
+             * code points - match>0 && match!=length: not all input consumed, forbidden for this function - match==0:
+             * no match found in the first place - match<0: partial match, not supported for simple conversion (and
+             * flush==TRUE)
+             */
+            return 0xfffe;
+        }
+
+        CoderResult cnvMBCSToUnicodeWithOffsets(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+            
+            int[][] stateTable;
+            char[] unicodeCodeUnits;
+            
+            int sourceIndex, nextSourceIndex;
+            
+            int offset;
+            short state;
+            int byteIndex;
+            byte[] bytes;
+            
+            int entry;
+            char c;
+            short action;
+            
+            if (this.preToULength > 0) {
+                /*
+                 * pass sourceIndex-1 because we continue from an earlier buffer
+                 * in the future, this may change with continuous offsets
+                 */
+                cr[0] = continueMatchToU(source, target, offsets, -1, flush);
+                if (cr[0].isError() || this.preToULength < 0) {
+                    return cr[0];
+                }
+            }
+            
+            if (sharedData.mbcs.countStates == 1) {
+                if ((sharedData.mbcs.unicodeMask&UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                    cr[0] = cnvMBCSSingleToBMPWithOffsets(source, target, offsets, flush);
+                } else {
+                    cr[0] = cnvMBCSSingleToUnicodeWithOffsets(source, target, offsets, flush);
+                }
+                return cr[0];
+            }
+            
+            if ((options&UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                stateTable = sharedData.mbcs.swapLFNLStateTable;
+            } else {
+                stateTable = sharedData.mbcs.stateTable;
+            }
+            unicodeCodeUnits = sharedData.mbcs.unicodeCodeUnits;
+            
+            /* get the converter state from UConverter */
+            offset = this.toUnicodeStatus;
+            byteIndex = this.toULength;
+            bytes = this.toUBytesArray;
+            
+            /*
+             * if we are in the SBCS state for a DBCS-only converter,
+             * then load the DBCS state from the MBCS data
+             * (dbcsOnlyState==0 if it is not a DBCS-only converter)
+             */
+            state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&this.mode);
+            if (state == 0) {
+                state = sharedData.mbcs.dbcsOnlyState;
+            }
+            
+            /* sourceIndex=-1 if the current character begain in the previous buffer */
+            sourceIndex = byteIndex == 0 ? 0 : -1;
+            nextSourceIndex = 0;
+            
+            /* conversion loop */
+            while (source.hasRemaining()) {
+                /*
+                 * This following test is to see if available input would overflow the output.
+                 * It does not catch output of more than one code unit that
+                 * overflows as a result of a surrogate pair or callback output
+                 * from the last source byte.
+                 * Therefore, those situations also test for overflows and will
+                 * then break the loop, too.
+                 */
+                if (!target.hasRemaining()) {
+                    /* target is full */
+                    cr[0] = CoderResult.OVERFLOW;
+                    break;
+                }
+                
+                if (byteIndex == 0) {
+                    /* optimized loop for 1/2-byte input and BMP output */
+                    do {
+                        entry = stateTable[state][(short)source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK];
+                        if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                            state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_TRANSITION_STATE(entry));
+                            offset = MBCS_ENTRY_TRANSITION_OFFSET(entry);
+                            
+                            source.get();
+                            if (source.hasRemaining() &&
+                                    MBCS_ENTRY_IS_FINAL(entry=stateTable[state][(short)source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK]) &&
+                                    MBCS_ENTRY_FINAL_ACTION(entry) == MBCS_STATE_VALID_16 &&
+                                    (c = unicodeCodeUnits[offset+MBCS_ENTRY_FINAL_VALUE_16(entry)]) < 0xfffe) {
+                                source.get();
+                                target.put(c);
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    sourceIndex = (nextSourceIndex + 2);
+                                }
+                                state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_FINAL_STATE(entry)); /* typically 0 */
+                                offset = 0;
+                            } else {
+                                /* set the state and leave the optimized loop */
+                                ++nextSourceIndex;
+                                bytes[0] = source.get(source.position()-1);
+                                byteIndex = 1;
+                                break;
+                            }
+                        } else {
+                            if (MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
+                                /* output BMP code point */
+                                source.get();
+                                target.put((char)MBCS_ENTRY_FINAL_VALUE_16(entry));
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    sourceIndex = ++nextSourceIndex;
+                                }
+                                state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_FINAL_STATE(entry)); /* typically 0 */
+                            } else {
+                                /* leave the optimized loop */
+                                break;
+                            }
+                        }
+                    } while (source.hasRemaining() && target.hasRemaining());
+                    
+                    /* these tests and break statements could be put inside the loop
+                     * if C had "break outerLoop" like Java
+                     */
+                    if (!source.hasRemaining()) {
+                        break;
+                    }
+                    if (!target.hasRemaining()) {
+                        /* target is full */
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+                    
+                    ++nextSourceIndex;
+                    bytes[byteIndex++] = source.get();
+                } else { /* byteIndex>0 */
+                    ++nextSourceIndex;
+                    entry = stateTable[state][(short)(bytes[byteIndex++]=source.get()) & UConverterConstants.UNSIGNED_BYTE_MASK];
+                }
+                
+                if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                    state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_TRANSITION_STATE(entry));
+                    offset+=MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    continue;
+                }
+                
+                /* save the previous state for proper extension mapping with SI/SO-stateful converters */
+                mode = state;
+                
+                /* set the next state early so that we can reuse the entry variable */
+                state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_FINAL_STATE(entry)); /* typically 0 */
+                
+                /*
+                 * An if-else-if chain provides more reliable performance for
+                 * the most common cases compared to a switch.
+                 */
+                action = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&MBCS_ENTRY_FINAL_ACTION(entry));
+                if (action == MBCS_STATE_VALID_16) {
+                    offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[offset];
+                    if (c < 0xfffe) {
+                        /* output BMP code point */
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (c == 0xfffe) {
+                        if (CharsetDecoderICU.isToUUseFallback() && (entry = (int)getFallback(sharedData.mbcs, offset)) != 0xfffe) {
+                            /* output fallback BMP code point */
+                            target.put((char)entry);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                            byteIndex = 0;
+                        }
+                    } else {
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(1);
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_16) {
+                    /* output BMP code point */
+                    target.put((char)MBCS_ENTRY_FINAL_VALUE_16(entry));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    byteIndex = 0;
+                } else if (action == MBCS_STATE_VALID_16_PAIR) {
+                    offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    c = unicodeCodeUnits[offset++];
+                    if (c < 0xd800) {
+                        /* output BMP code point below 0xd800 */
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (CharsetDecoderICU.isToUUseFallback() ? c<=0xdfff : c<=0xdbff) {
+                        /* output roundtrip or fallback surrogate pair */
+                        target.put((char)(c&0xdbff));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                        if (target.hasRemaining()) {
+                            target.put(unicodeCodeUnits[offset]);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                        } else {
+                            /* target overflow */
+                            charErrorBufferArray[0] = unicodeCodeUnits[offset];
+                            charErrorBufferLength = 1;
+                            cr[0] = CoderResult.OVERFLOW;
+                            
+                            offset = 0;
+                            break;
+                        }
+                    } else if (CharsetDecoderICU.isToUUseFallback() ? (c&0xfffe)==0xe000 : c==0xe000) {
+                        /* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
+                        target.put(unicodeCodeUnits[offset]);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    } else if (c == 0xffff) {
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(1);
+                    }
+                } else if (action == MBCS_STATE_VALID_DIRECT_20 ||
+                        action == MBCS_STATE_FALLBACK_DIRECT_20 && CharsetDecoderICU.isToUUseFallback()) {
+                    entry = MBCS_ENTRY_FINAL_VALUE(entry);
+                    /* output surrogate pair */
+                    target.put((char)(0xd800 | (char)(entry&0x3ff)));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    byteIndex = 0;
+                    c = (char)(0xdc00 | (char)(entry>>10));
+                    if (target.hasRemaining()) {
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        /* target overflow */
+                        charErrorBufferArray[0] = c;
+                        charErrorBufferLength = 1;
+                        cr[0] = CoderResult.OVERFLOW;
+                        
+                        offset = 0;
+                        break;
+                    }
+                    
+                } else if (action == MBCS_STATE_CHANGE_ONLY) {
+                    /*
+                     * This serves as a state change without any output.
+                     * It is useful for reading simple stateful encodings,
+                     * for example using just Shift-In/Shift-Out codes.
+                     * The 21 unused bits may later be used for more sophisticated
+                     * state transistions.
+                     */
+                    if (sharedData.mbcs.dbcsOnlyState == 0) {
+                        byteIndex = 0;
+                    } else {
+                        /* SI/SO are illegal for DBCS-only conversion */
+                        state = (short)(UConverterConstants.UNSIGNED_BYTE_MASK&mode); /* restore the previous state */
+                        
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(1);
+                    }
+                } else if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                    if (CharsetDecoderICU.isToUUseFallback()) {
+                        /* output BMP code point */
+                        target.put((char)MBCS_ENTRY_FINAL_VALUE_16(entry));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        byteIndex = 0;
+                    }
+                } else if (action == MBCS_STATE_UNASSIGNED) {
+                    /* just fall through */
+                } else if (action == MBCS_STATE_ILLEGAL) {
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                } else {
+                    /* reserved, must never occur */
+                    byteIndex = 0;
+                }
+                
+                /* end of action codes: prepare for new character */
+                offset = 0;
+                
+                if (byteIndex == 0) {
+                    sourceIndex = nextSourceIndex;
+                } else if (cr[0].isError()) {
+                    /* callback(illegal) */
+                    break;
+                } else { /* unassigned sequences indicated with byteIndex>0 */
+                    /* try an extension mapping */
+                    byteIndex = toU(byteIndex, source, target, offsets, sourceIndex, flush, cr);
+                    sourceIndex = nextSourceIndex + source.position();
+                    
+                    if (cr[0].isError()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    }
+                }
+            }
+            
+            /* set the converter state back into UConverter */
+            toUnicodeStatus = offset;
+            mode = state;
+            toULength = byteIndex;
+            
+            return cr[0];
+        }
+        /*
+         * This version of cnvMBCSSingleToUnicodeWithOffsets() is optimized for single-byte, single-state codepages that
+         * only map to and from the BMP. In addition to single-byte optimizations, the offset calculations become much
+         * easier.
+         */
+        private CoderResult cnvMBCSSingleToBMPWithOffsets(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex, lastSource;
+            int targetCapacity, length;
+            int[][] stateTable;
+
+            int sourceIndex;
+
+            int entry;
+            byte action;
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+            targetCapacity = target.remaining();
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                stateTable = sharedData.mbcs.swapLFNLStateTable;
+            } else {
+                stateTable = sharedData.mbcs.stateTable;
+            }
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = 0;
+            lastSource = sourceArrayIndex;
+
+            /*
+             * since the conversion here is 1:1 UChar:uint8_t, we need only one counter for the minimum of the
+             * sourceLength and targetCapacity
+             */
+            length = source.remaining();
+            if (length < targetCapacity) {
+                targetCapacity = length;
+            }
+
+            /* conversion loop */
+            while (targetCapacity > 0) {
+                entry = stateTable[0][source.get(sourceArrayIndex++) & UConverterConstants.UNSIGNED_BYTE_MASK];
+                /* MBCS_ENTRY_IS_FINAL(entry) */
+
+                /* test the most common case first */
+                if (MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
+                    /* output BMP code point */
+                    target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                    --targetCapacity;
+                    continue;
+                }
+
+                /*
+                 * An if-else-if chain provides more reliable performance for the most common cases compared to a
+                 * switch.
+                 */
+                action = (byte) (MBCS_ENTRY_FINAL_ACTION(entry));
+                if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                    if (isFallbackUsed()) {
+                        /* output BMP code point */
+                        target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                        --targetCapacity;
+                        continue;
+                    }
+                } else if (action == MBCS_STATE_UNASSIGNED) {
+                    /* just fall through */
+                } else if (action == MBCS_STATE_ILLEGAL) {
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(sourceArrayIndex - lastSource);
+                } else {
+                    /* reserved, must never occur */
+                    continue;
+                }
+
+                /* set offsets since the start or the last extension */
+                if (offsets != null) {
+                    int count = sourceArrayIndex - lastSource;
+
+                    /* predecrement: do not set the offset for the callback-causing character */
+                    while (--count > 0) {
+                        offsets.put(sourceIndex++);
+                    }
+                    /* offset and sourceIndex are now set for the current character */
+                }
+
+                if (cr[0].isError()) {
+                    /* callback(illegal) */
+                    break;
+                } else /* unassigned sequences indicated with byteIndex>0 */{
+                    /* try an extension mapping */
+                    lastSource = sourceArrayIndex;
+                    toUBytesArray[0] = source.get(sourceArrayIndex - 1);
+                    source.position(sourceArrayIndex);
+                    toULength = toU((byte) 1, source, target, offsets, sourceIndex, flush, cr);
+                    sourceArrayIndex = source.position();
+                    sourceIndex += 1 + (int) (sourceArrayIndex - lastSource);
+
+                    if (cr[0].isError()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    }
+
+                    /* recalculate the targetCapacity after an extension mapping */
+                    targetCapacity = target.remaining();
+                    length = source.remaining();
+                    if (length < targetCapacity) {
+                        targetCapacity = length;
+                    }
+                }
+            }
+
+            if (!cr[0].isError() && sourceArrayIndex < source.limit() && !target.hasRemaining()) {
+                /* target is full */
+                cr[0] = CoderResult.OVERFLOW;
+            }
+
+            /* set offsets since the start or the last callback */
+            if (offsets != null) {
+                int count = sourceArrayIndex - lastSource;
+                while (count > 0) {
+                    offsets.put(sourceIndex++);
+                    --count;
+                }
+            }
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        /* This version of cnvMBCSToUnicodeWithOffsets() is optimized for single-byte, single-state codepages. */
+        private CoderResult cnvMBCSSingleToUnicodeWithOffsets(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex;
+            int[][] stateTable;
+
+            int sourceIndex;
+
+            int entry;
+            char c;
+            byte action;
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                stateTable = sharedData.mbcs.swapLFNLStateTable;
+            } else {
+                stateTable = sharedData.mbcs.stateTable;
+            }
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = 0;
+
+            /* conversion loop */
+            while (sourceArrayIndex < source.limit()) {
+                /*
+                 * This following test is to see if available input would overflow the output. It does not catch output
+                 * of more than one code unit that overflows as a result of a surrogate pair or callback output from the
+                 * last source byte. Therefore, those situations also test for overflows and will then break the loop,
+                 * too.
+                 */
+                if (!target.hasRemaining()) {
+                    /* target is full */
+                    cr[0] = CoderResult.OVERFLOW;
+                    break;
+                }
+
+                entry = stateTable[0][source.get(sourceArrayIndex++) & UConverterConstants.UNSIGNED_BYTE_MASK];
+                /* MBCS_ENTRY_IS_FINAL(entry) */
+
+                /* test the most common case first */
+                if (MBCS_ENTRY_FINAL_IS_VALID_DIRECT_16(entry)) {
+                    /* output BMP code point */
+                    target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+
+                    /* normal end of action codes: prepare for a new character */
+                    ++sourceIndex;
+                    continue;
+                }
+
+                /*
+                 * An if-else-if chain provides more reliable performance for the most common cases compared to a
+                 * switch.
+                 */
+                action = (byte) (MBCS_ENTRY_FINAL_ACTION(entry));
+                if (action == MBCS_STATE_VALID_DIRECT_20
+                        || (action == MBCS_STATE_FALLBACK_DIRECT_20 && isFallbackUsed())) {
+
+                    entry = MBCS_ENTRY_FINAL_VALUE(entry);
+                    /* output surrogate pair */
+                    target.put((char) (0xd800 | (char) (entry >>> 10)));
+                    if (offsets != null) {
+                        offsets.put(sourceIndex);
+                    }
+                    c = (char) (0xdc00 | (char) (entry & 0x3ff));
+                    if (target.hasRemaining()) {
+                        target.put(c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                    } else {
+                        /* target overflow */
+                        charErrorBufferArray[0] = c;
+                        charErrorBufferLength = 1;
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    ++sourceIndex;
+                    continue;
+                } else if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                    if (isFallbackUsed()) {
+                        /* output BMP code point */
+                        target.put((char) MBCS_ENTRY_FINAL_VALUE_16(entry));
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+
+                        ++sourceIndex;
+                        continue;
+                    }
+                } else if (action == MBCS_STATE_UNASSIGNED) {
+                    /* just fall through */
+                } else if (action == MBCS_STATE_ILLEGAL) {
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                } else {
+                    /* reserved, must never occur */
+                    ++sourceIndex;
+                    continue;
+                }
+
+                if (cr[0].isError()) {
+                    /* callback(illegal) */
+                    break;
+                } else /* unassigned sequences indicated with byteIndex>0 */{
+                    /* try an extension mapping */
+                    int sourceBeginIndex = sourceArrayIndex;
+                    toUBytesArray[0] = source.get(sourceArrayIndex - 1);
+                    source.position(sourceArrayIndex);
+                    toULength = toU((byte) 1, source, target, offsets, sourceIndex, flush, cr);
+                    sourceArrayIndex = source.position();
+                    sourceIndex += 1 + (int) (sourceArrayIndex - sourceBeginIndex);
+
+                    if (cr[0].isError()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    }
+                }
+            }
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        private int getFallback(UConverterMBCSTable mbcsTable, int offset) {
+            MBCSToUFallback[] toUFallbacks;
+            int i, start, limit;
+
+            limit = mbcsTable.countToUFallbacks;
+            if (limit > 0) {
+                /* do a binary search for the fallback mapping */
+                toUFallbacks = mbcsTable.toUFallbacks;
+                start = 0;
+                while (start < limit - 1) {
+                    i = (start + limit) / 2;
+                    if (offset < toUFallbacks[i].offset) {
+                        limit = i;
+                    } else {
+                        start = i;
+                    }
+                }
+
+                /* did we really find it? */
+                if (offset == toUFallbacks[start].offset) {
+                    return toUFallbacks[start].codePoint;
+                }
+            }
+
+            return 0xfffe;
+        }
+
+        /**
+         * This is a simple version of _MBCSGetNextUChar() that is used by other converter implementations. It only
+         * returns an "assigned" result if it consumes the entire input. It does not use state from the converter, nor
+         * error codes. It does not handle the EBCDIC swaplfnl option (set in UConverter). It handles conversion
+         * extensions but not GB 18030.
+         * 
+         * @return U+fffe unassigned U+ffff illegal otherwise the Unicode code point
+         */
+        int simpleGetNextUChar(ByteBuffer source, boolean useFallback) {
+
+            // #if 0
+            // /*
+            // * Code disabled 2002dec09 (ICU 2.4) because it is not currently used in ICU. markus
+            // * TODO In future releases, verify that this function is never called for SBCS
+            // * conversions, i.e., that sharedData->mbcs.countStates==1 is still true.
+            // * Removal improves code coverage.
+            // */
+            // /* use optimized function if possible */
+            // if(sharedData->mbcs.countStates==1) {
+            // if(length==1) {
+            // return ucnv_MBCSSingleSimpleGetNextUChar(sharedData, (uint8_t)*source, useFallback);
+            // } else {
+            // return 0xffff; /* illegal: more than a single byte for an SBCS converter */
+            // }
+            // }
+            // #endif
+
+            /* set up the local pointers */
+            int[][] stateTable = sharedData.mbcs.stateTable;
+            char[] unicodeCodeUnits = sharedData.mbcs.unicodeCodeUnits;
+
+            /* converter state */
+            int offset = 0;
+            int state = sharedData.mbcs.dbcsOnlyState;
+
+            int action;
+            int entry;
+            int c;
+            int i = source.position();
+            int length = source.limit() - i;
+
+            /* conversion loop */
+            while (true) {
+                // entry=stateTable[state][(uint8_t)source[i++]];
+                entry = stateTable[state][source.get() & UConverterConstants.UNSIGNED_BYTE_MASK];
+                i = source.position();
+
+                if (MBCS_ENTRY_IS_TRANSITION(entry)) {
+                    state = MBCS_ENTRY_TRANSITION_STATE(entry);
+                    offset += MBCS_ENTRY_TRANSITION_OFFSET(entry);
+
+                    if (i == source.limit()) {
+                        return 0xffff; /* truncated character */
+                    }
+                } else {
+                    /*
+                     * An if-else-if chain provides more reliable performance for the most common cases compared to a
+                     * switch.
+                     */
+                    action = MBCS_ENTRY_FINAL_ACTION(entry);
+                    if (action == MBCS_STATE_VALID_16) {
+                        offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                        c = unicodeCodeUnits[offset];
+                        if (c != 0xfffe) {
+                            /* done */
+                        } else if (isToUUseFallback()) {
+                            c = getFallback(sharedData.mbcs, offset);
+                        }
+                        /* else done with 0xfffe */
+                    } else if (action == MBCS_STATE_VALID_DIRECT_16) {
+                        // /* output BMP code point */
+                        c = MBCS_ENTRY_FINAL_VALUE_16(entry);
+                    } else if (action == MBCS_STATE_VALID_16_PAIR) {
+                        offset += MBCS_ENTRY_FINAL_VALUE_16(entry);
+                        c = unicodeCodeUnits[offset++];
+                        if (c < 0xd800) {
+                            /* output BMP code point below 0xd800 */
+                        } else if (isToUUseFallback() ? c <= 0xdfff : c <= 0xdbff) {
+                            /* output roundtrip or fallback supplementary code point */
+                            c = (((c & 0x3ff) << 10) + unicodeCodeUnits[offset] + (0x10000 - 0xdc00));
+                        } else if (isToUUseFallback() ? (c & 0xfffe) == 0xe000 : c == 0xe000) {
+                            /* output roundtrip BMP code point above 0xd800 or fallback BMP code point */
+                            c = unicodeCodeUnits[offset];
+                        } else if (c == 0xffff) {
+                            return 0xffff;
+                        } else {
+                            c = 0xfffe;
+                        }
+                    } else if (action == MBCS_STATE_VALID_DIRECT_20) {
+                        /* output supplementary code point */
+                        c = 0x10000 + MBCS_ENTRY_FINAL_VALUE(entry);
+                    } else if (action == MBCS_STATE_FALLBACK_DIRECT_16) {
+                        if (!isToUUseFallback(useFallback)) {
+                            c = 0xfffe;
+                        } else {
+                            /* output BMP code point */
+                            c = MBCS_ENTRY_FINAL_VALUE_16(entry);
+                        }
+                    } else if (action == MBCS_STATE_FALLBACK_DIRECT_20) {
+                        if (!isToUUseFallback(useFallback)) {
+                            c = 0xfffe;
+                        } else {
+                            /* output supplementary code point */
+                            c = 0x10000 + MBCS_ENTRY_FINAL_VALUE(entry);
+                        }
+                    } else if (action == MBCS_STATE_UNASSIGNED) {
+                        c = 0xfffe;
+                    } else {
+                        /*
+                         * forbid MBCS_STATE_CHANGE_ONLY for this function, and MBCS_STATE_ILLEGAL and reserved action
+                         * codes
+                         */
+                        return 0xffff;
+                    }
+                    break;
+                }
+            }
+
+            if (i != source.limit()) {
+                /* illegal for this function: not all input consumed */
+                return 0xffff;
+            }
+
+            if (c == 0xfffe) {
+                /* try an extension mapping */
+                if (sharedData.mbcs.extIndexes != null) {
+                    /* Increase the limit for proper handling. Used in LMBCS. */
+                    if (source.limit() >= source.position() + length) {
+                        source.limit(source.position() + length);
+                    }
+                    return simpleMatchToU(source, useFallback);
+                }
+            }
+
+            return c;
+        }
+
+    }
+
+    class CharsetEncoderMBCS extends CharsetEncoderICU {
+        private boolean allowReplacementChanges = false;
+
+        CharsetEncoderMBCS(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            allowReplacementChanges = true; // allow changes in implReplaceWith
+            implReset();
+        }
+
+        protected void implReset() {
+            super.implReset();
+            preFromUFirstCP = UConverterConstants.U_SENTINEL;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+            // if (!source.hasRemaining() && fromUChar32 == 0)
+            // return cr[0];
+
+            int sourceArrayIndex;
+            char[] table;
+            byte[] pArray, bytes;
+            int pArrayIndex, outputType, c;
+            int prevSourceIndex, sourceIndex, nextSourceIndex;
+            int stage2Entry = 0, value = 0, length = 0, prevLength;
+            short uniMask;
+            // long asciiRoundtrips;
+            
+            boolean gotoUnassigned = false;
+
+            try {
+
+                if (!flush && preFromUFirstCP >= 0) {
+                    /*
+                     * pass sourceIndex=-1 because we continue from an earlier buffer in the future, this may change
+                     * with continuous offsets
+                     */
+                    cr[0] = continueMatchFromU(source, target, offsets, flush, -1);
+
+                    if (cr[0].isError() || preFromULength < 0) {
+                        return cr[0];
+                    }
+                }
+
+                /* use optimized function if possible */
+                outputType = sharedData.mbcs.outputType;
+                uniMask = sharedData.mbcs.unicodeMask;
+                if (outputType == MBCS_OUTPUT_1 && (uniMask & UConverterConstants.HAS_SURROGATES) == 0) {
+                    if ((uniMask & UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                        cr[0] = cnvMBCSSingleFromBMPWithOffsets(source, target, offsets, flush);
+                    } else {
+                        cr[0] = cnvMBCSSingleFromUnicodeWithOffsets(source, target, offsets, flush);
+                    }
+                    return cr[0];
+                } else if (outputType == MBCS_OUTPUT_2) {
+                    cr[0] = cnvMBCSDoubleFromUnicodeWithOffsets(source, target, offsets, flush);
+                    return cr[0];
+                }
+
+                table = sharedData.mbcs.fromUnicodeTable;
+                sourceArrayIndex = source.position();
+
+                if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                    bytes = sharedData.mbcs.swapLFNLFromUnicodeBytes;
+                } else {
+                    bytes = sharedData.mbcs.fromUnicodeBytes;
+                }
+
+                // asciiRoundtrips = sharedData.mbcs.asciiRoundtrips;
+
+                /* get the converter state from UConverter */
+                c = fromUChar32;
+
+                if (outputType == MBCS_OUTPUT_2_SISO) {
+                    prevLength = (int) fromUnicodeStatus;
+                    if (prevLength == 0) {
+                        /* set the real value */
+                        prevLength = 1;
+                    }
+                } else {
+                    /* prevent fromUnicodeStatus from being set to something non-0 */
+                    prevLength = 0;
+                }
+
+                /* sourceIndex=-1 if the current character began in the previous buffer */
+                prevSourceIndex = -1;
+                sourceIndex = c == 0 ? 0 : -1;
+                nextSourceIndex = 0;
+
+                /* conversion loop */
+                /*
+                 * This is another piece of ugly code: A goto into the loop if the converter state contains a first
+                 * surrogate from the previous function call. It saves me to check in each loop iteration a check of
+                 * if(c==0) and duplicating the trail-surrogate-handling code in the else branch of that check. I could
+                 * not find any other way to get around this other than using a function call for the conversion and
+                 * callback, which would be even more inefficient.
+                 * 
+                 * Markus Scherer 2000-jul-19
+                 */
+                boolean doloop = true;
+                boolean doread = true;
+                if (c != 0 && target.hasRemaining()) {
+                    if (UTF16.isLeadSurrogate((char) c) && (uniMask & UConverterConstants.HAS_SURROGATES) == 0) {
+                        // c is a lead surrogate, read another input
+                        SideEffects x = new SideEffects(c, sourceArrayIndex, sourceIndex, nextSourceIndex,
+                                prevSourceIndex, prevLength);
+                        doloop = getTrail(source, target, uniMask, x, flush, cr);
+                        doread = x.doread;
+                        c = x.c;
+                        sourceArrayIndex = x.sourceArrayIndex;
+                        sourceIndex = x.sourceIndex;
+                        nextSourceIndex = x.nextSourceIndex;
+                        prevSourceIndex = x.prevSourceIndex;
+                        prevLength = x.prevLength;
+                    } else {
+                        // c is not a lead surrogate, do not read another input
+                        doread = false;
+                    }
+                }
+
+                if (doloop) {
+                    while (!doread || sourceArrayIndex < source.limit()) {
+                        /*
+                         * This following test is to see if available input would overflow the output. It does not catch
+                         * output of more than one byte that overflows as a result of a multi-byte character or callback
+                         * output from the last source character. Therefore, those situations also test for overflows
+                         * and will then break the loop, too.
+                         */
+                        if (target.hasRemaining()) {
+                            /*
+                             * Get a correct Unicode code point: a single UChar for a BMP code point or a matched
+                             * surrogate pair for a "supplementary code point".
+                             */
+
+                            if (doread) {
+                                // doread might be false only on the first looping
+
+                                c = source.get(sourceArrayIndex++);
+                                ++nextSourceIndex;
+
+                                /*
+                                 * This also tests if the codepage maps single surrogates. If it does, then surrogates
+                                 * are not paired but mapped separately. Note that in this case unmatched surrogates are
+                                 * not detected.
+                                 */
+                                if (UTF16.isSurrogate((char) c)
+                                        && (uniMask & UConverterConstants.HAS_SURROGATES) == 0) {
+                                    if (UTF16.isLeadSurrogate((char) c)) {
+                                        // getTrail:
+                                        SideEffects x = new SideEffects(c, sourceArrayIndex, sourceIndex,
+                                                nextSourceIndex, prevSourceIndex, prevLength);
+                                        doloop = getTrail(source, target, uniMask, x, flush, cr);
+                                        c = x.c;
+                                        sourceArrayIndex = x.sourceArrayIndex;
+                                        sourceIndex = x.sourceIndex;
+                                        nextSourceIndex = x.nextSourceIndex;
+                                        prevSourceIndex = x.prevSourceIndex;
+
+                                        if (x.doread) {
+                                            if (doloop)
+                                                continue;
+                                            else
+                                                break;
+                                        }
+                                    } else {
+                                        /* this is an unmatched trail code unit (2nd surrogate) */
+                                        /* callback(illegal) */
+                                        cr[0] = CoderResult.malformedForLength(1);
+                                        break;
+                                    }
+                                }
+                            } else {
+                                doread = true;
+                            }
+                            /* convert the Unicode code point in c into codepage bytes */
+
+                            /*
+                             * The basic lookup is a triple-stage compact array (trie) lookup. For details see the
+                             * beginning of this file.
+                             * 
+                             * Single-byte codepages are handled with a different data structure by _MBCSSingle...
+                             * functions.
+                             * 
+                             * The result consists of a 32-bit value from stage 2 and a pointer to as many bytes as are
+                             * stored per character. The pointer points to the character's bytes in stage 3. Bits 15..0
+                             * of the stage 2 entry contain the stage 3 index for that pointer, while bits 31..16 are
+                             * flags for which of the 16 characters in the block are roundtrip-assigned.
+                             * 
+                             * For 2-byte and 4-byte codepages, the bytes are stored as uint16_t respectively as
+                             * uint32_t, in the platform encoding. For 3-byte codepages, the bytes are always stored in
+                             * big-endian order.
+                             * 
+                             * For EUC encodings that use only either 0x8e or 0x8f as the first byte of their longest
+                             * byte sequences, the first two bytes in this third stage indicate with their 7th bits
+                             * whether these bytes are to be written directly or actually need to be preceeded by one of
+                             * the two Single-Shift codes. With this, the third stage stores one byte fewer per
+                             * character than the actual maximum length of EUC byte sequences.
+                             * 
+                             * Other than that, leading zero bytes are removed and the other bytes output. A single zero
+                             * byte may be output if the "assigned" bit in stage 2 was on. The data structure does not
+                             * support zero byte output as a fallback, and also does not allow output of leading zeros.
+                             */
+                            stage2Entry = MBCS_STAGE_2_FROM_U(table, c);
+
+                            /* get the bytes and the length for the output */
+                            switch (outputType) {
+                            /* This is handled above with the method cnvMBCSDoubleFromUnicodeWithOffsets() */
+                            /* case MBCS_OUTPUT_2:
+                                value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else {
+                                    length = 2;
+                                }
+                                break; */
+                            case MBCS_OUTPUT_2_SISO:
+                                /* 1/2-byte stateful with Shift-In/Shift-Out */
+                                /*
+                                 * Save the old state in the converter object right here, then change the local
+                                 * prevLength state variable if necessary. Then, if this character turns out to be
+                                 * unassigned or a fallback that is not taken, the callback code must not save the new
+                                 * state in the converter because the new state is for a character that is not output.
+                                 * However, the callback must still restore the state from the converter in case the
+                                 * callback function changed it for its output.
+                                 */
+                                fromUnicodeStatus = prevLength; /* save the old state */
+                                value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    if (value == 0 && MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, c) == false) {
+                                        /* no mapping, leave value==0 */
+                                        length = 0;
+                                    } else if (prevLength <= 1) {
+                                        length = 1;
+                                    } else {
+                                        /* change from double-byte mode to single-byte */
+                                        value |= UConverterConstants.SI << 8;
+                                        length = 2;
+                                        prevLength = 1;
+                                    }
+                                } else {
+                                    if (prevLength == 2) {
+                                        length = 2;
+                                    } else {
+                                        /* change from single-byte mode to double-byte */
+                                        value |= UConverterConstants.SO << 16;
+                                        length = 3;
+                                        prevLength = 2;
+                                    }
+                                }
+                                break;
+                            case MBCS_OUTPUT_DBCS_ONLY:
+                                /* table with single-byte results, but only DBCS mappings used */
+                                value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    /* no mapping or SBCS result, not taken for DBCS-only */
+                                    value = stage2Entry = 0; /* stage2Entry=0 to reset roundtrip flags */
+                                    length = 0;
+                                } else {
+                                    length = 2;
+                                }
+                                break;
+                            case MBCS_OUTPUT_3:
+                                pArray = bytes;
+                                pArrayIndex = MBCS_POINTER_3_FROM_STAGE_2(bytes, stage2Entry, c);
+                                value = ((pArray[pArrayIndex] & UConverterConstants.UNSIGNED_BYTE_MASK) << 16)
+                                        | ((pArray[pArrayIndex + 1] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8)
+                                        | (pArray[pArrayIndex + 2] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xffff) {
+                                    length = 2;
+                                } else {
+                                    length = 3;
+                                }
+                                break;
+                            case MBCS_OUTPUT_4:
+                                value = MBCS_VALUE_4_FROM_STAGE_2(bytes, stage2Entry, c);
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xffff) {
+                                    length = 2;
+                                } else if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xffffff) {
+                                    length = 3;
+                                } else {
+                                    length = 4;
+                                }
+                                break;
+                            case MBCS_OUTPUT_3_EUC:
+                                value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                                /* EUC 16-bit fixed-length representation */
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else if ((value & 0x8000) == 0) {
+                                    value |= 0x8e8000;
+                                    length = 3;
+                                } else if ((value & 0x80) == 0) {
+                                    value |= 0x8f0080;
+                                    length = 3;
+                                } else {
+                                    length = 2;
+                                }
+                                break;
+                            case MBCS_OUTPUT_4_EUC:
+                                pArray = bytes;
+                                pArrayIndex = MBCS_POINTER_3_FROM_STAGE_2(bytes, stage2Entry, c);
+                                value = ((pArray[pArrayIndex] & UConverterConstants.UNSIGNED_BYTE_MASK) << 16)
+                                        | ((pArray[pArrayIndex + 1] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8)
+                                        | (pArray[pArrayIndex + 2] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                                /* EUC 16-bit fixed-length representation applied to the first two bytes */
+                                if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                                    length = 1;
+                                } else if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xffff) {
+                                    length = 2;
+                                } else if ((value & 0x800000) == 0) {
+                                    value |= 0x8e800000;
+                                    length = 4;
+                                } else if ((value & 0x8000) == 0) {
+                                    value |= 0x8f008000;
+                                    length = 4;
+                                } else {
+                                    length = 3;
+                                }
+                                break;
+                            default:
+                                /* must not occur */
+                                /*
+                                 * To avoid compiler warnings that value & length may be used without having been
+                                 * initialized, we set them here. In reality, this is unreachable code. Not having a
+                                 * default branch also causes warnings with some compilers.
+                                 */
+                                value = stage2Entry = 0; /* stage2Entry=0 to reset roundtrip flags */
+                                length = 0;
+                                break;
+                            }
+                            
+                            /* is this code point assigned, or do we use fallbacks? */
+                            if (gotoUnassigned || (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, c) || (isFromUUseFallback(c) && value != 0)))) {
+                                gotoUnassigned = false;
+                                /*
+                                 * We allow a 0 byte output if the "assigned" bit is set for this entry. There is no way
+                                 * with this data structure for fallback output to be a zero byte.
+                                 */
+
+                                // unassigned:
+                                SideEffects x = new SideEffects(c, sourceArrayIndex, sourceIndex, nextSourceIndex,
+                                        prevSourceIndex, prevLength);
+                                doloop = unassigned(source, target, offsets, x, flush, cr);
+                                c = x.c;
+                                sourceArrayIndex = x.sourceArrayIndex;
+                                sourceIndex = x.sourceIndex;
+                                nextSourceIndex = x.nextSourceIndex;
+                                prevSourceIndex = x.prevSourceIndex;
+                                prevLength = x.prevLength;
+                                if (doloop)
+                                    continue;
+                                else
+                                    break;
+                            }
+
+                            /* write the output character bytes from value and length */
+                            /* from the first if in the loop we know that targetCapacity>0 */
+                            if (length <= target.remaining()) {
+                                switch (length) {
+                                /* each branch falls through to the next one */
+                                case 4:
+                                    target.put((byte) (value >>> 24));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 3:
+                                    target.put((byte) (value >>> 16));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 2:
+                                    target.put((byte) (value >>> 8));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 1:
+                                    target.put((byte) value);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                default:
+                                    /* will never occur */
+                                    break;
+                                }
+                            } else {
+                                int errorBufferArrayIndex;
+
+                                /*
+                                 * We actually do this backwards here: In order to save an intermediate variable, we
+                                 * output first to the overflow buffer what does not fit into the regular target.
+                                 */
+                                /* we know that 1<=targetCapacity<length<=4 */
+                                length -= target.remaining();
+
+                                errorBufferArrayIndex = 0;
+                                switch (length) {
+                                /* each branch falls through to the next one */
+                                case 3:
+                                    errorBuffer[errorBufferArrayIndex++] = (byte) (value >>> 16);
+                                case 2:
+                                    errorBuffer[errorBufferArrayIndex++] = (byte) (value >>> 8);
+                                case 1:
+                                    errorBuffer[errorBufferArrayIndex] = (byte) value;
+                                default:
+                                    /* will never occur */
+                                    break;
+                                }
+                                errorBufferLength = (byte) length;
+
+                                /* now output what fits into the regular target */
+                                value >>>= 8 * length; /* length was reduced by targetCapacity */
+                                switch (target.remaining()) {
+                                /* each branch falls through to the next one */
+                                case 3:
+                                    target.put((byte) (value >>> 16));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 2:
+                                    target.put((byte) (value >>> 8));
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                case 1:
+                                    target.put((byte) value);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                    }
+                                default:
+                                    /* will never occur */
+                                    break;
+                                }
+
+                                /* target overflow */
+                                cr[0] = CoderResult.OVERFLOW;
+                                c = 0;
+                                break;
+                            }
+
+                            /* normal end of conversion: prepare for a new character */
+                            c = 0;
+                            if (offsets != null) {
+                                prevSourceIndex = sourceIndex;
+                                sourceIndex = nextSourceIndex;
+                            }
+                            continue;
+                        } else {
+                            /* target is full */
+                            cr[0] = CoderResult.OVERFLOW;
+                            break;
+                        }
+                    }
+                }
+
+                /*
+                 * the end of the input stream and detection of truncated input are handled by the framework, but for
+                 * EBCDIC_STATEFUL conversion we need to emit an SI at the very end
+                 * 
+                 * conditions: successful EBCDIC_STATEFUL in DBCS mode end of input and no truncated input
+                 */
+                if (outputType == MBCS_OUTPUT_2_SISO && prevLength == 2 && flush && sourceArrayIndex >= source.limit()
+                        && c == 0) {
+
+                    /* EBCDIC_STATEFUL ending with DBCS: emit an SI to return the output stream to SBCS */
+                    if (target.hasRemaining()) {
+                        target.put((byte) UConverterConstants.SI);
+                        if (offsets != null) {
+                            /* set the last source character's index (sourceIndex points at sourceLimit now) */
+                            offsets.put(prevSourceIndex);
+                        }
+                    } else {
+                        /* target is full */
+                        errorBuffer[0] = (byte) UConverterConstants.SI;
+                        errorBufferLength = 1;
+                        cr[0] = CoderResult.OVERFLOW;
+                    }
+                    prevLength = 1; /* we switched into SBCS */
+                }
+
+                /* set the converter state back into UConverter */
+                fromUChar32 = c;
+                fromUnicodeStatus = prevLength;
+
+                source.position(sourceArrayIndex);
+            } catch (BufferOverflowException ex) {
+                cr[0] = CoderResult.OVERFLOW;
+            }
+
+            return cr[0];
+        }
+
+        /*
+         * This is another simple conversion function for internal use by other conversion implementations. It does not
+         * use the converter state nor call callbacks. It does not handle the EBCDIC swaplfnl option (set in
+         * UConverter). It handles conversion extensions but not GB 18030.
+         * 
+         * It converts one single Unicode code point into codepage bytes, encoded as one 32-bit value. The function
+         * returns the number of bytes in *pValue: 1..4 the number of bytes in *pValue 0 unassigned (*pValue undefined)
+         * -1 illegal (currently not used, *pValue undefined)
+         * 
+         * *pValue will contain the resulting bytes with the last byte in bits 7..0, the second to last byte in bits
+         * 15..8, etc. Currently, the function assumes but does not check that 0<=c<=0x10ffff.
+         */
+        int fromUChar32(int c, int[] pValue, boolean isUseFallback) {
+            // #if 0
+            // /* #if 0 because this is not currently used in ICU - reduce code, increase code coverage */
+            // const uint8_t *p;
+            // #endif
+
+            char[] table;
+            int stage2Entry;
+            int value;
+            int length;
+            int p;
+
+            /* BMP-only codepages are stored without stage 1 entries for supplementary code points */
+            if (c <= 0xffff || ((sharedData.mbcs.unicodeMask & UConverterConstants.HAS_SUPPLEMENTARY) != 0)) {
+                table = sharedData.mbcs.fromUnicodeTable;
+
+                /* convert the Unicode code point in c into codepage bytes (same as in _MBCSFromUnicodeWithOffsets) */
+                if (sharedData.mbcs.outputType == MBCS_OUTPUT_1) {
+                    value = MBCS_SINGLE_RESULT_FROM_U(table, sharedData.mbcs.fromUnicodeBytes, c);
+                    /* is this code point assigned, or do we use fallbacks? */
+                    if (isUseFallback ? value >= 0x800 : value >= 0xc00) {
+                        pValue[0] = value & 0xff;
+                        return 1;
+                    }
+                } else /* outputType!=MBCS_OUTPUT_1 */{
+                    stage2Entry = MBCS_STAGE_2_FROM_U(table, c);
+
+                    /* get the bytes and the length for the output */
+                    switch (sharedData.mbcs.outputType) {
+                    case MBCS_OUTPUT_2:
+                        value = MBCS_VALUE_2_FROM_STAGE_2(sharedData.mbcs.fromUnicodeBytes, stage2Entry, c);
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else {
+                            length = 2;
+                        }
+                        break;
+                    // #if 0
+                    // /* #if 0 because this is not currently used in ICU - reduce code, increase code coverage */
+                    // case MBCS_OUTPUT_DBCS_ONLY:
+                    // /* table with single-byte results, but only DBCS mappings used */
+                    // value=MBCS_VALUE_2_FROM_STAGE_2(sharedData->mbcs.fromUnicodeBytes, stage2Entry, c);
+                    // if(value<=0xff) {
+                    // /* no mapping or SBCS result, not taken for DBCS-only */
+                    // value=stage2Entry=0; /* stage2Entry=0 to reset roundtrip flags */
+                    // length=0;
+                    // } else {
+                    // length=2;
+                    // }
+                    // break;
+                    case MBCS_OUTPUT_3:
+                        byte[] bytes = sharedData.mbcs.fromUnicodeBytes;
+                        p = CharsetMBCS.MBCS_POINTER_3_FROM_STAGE_2(bytes, stage2Entry, c);
+                        value = ((bytes[p] & UConverterConstants.UNSIGNED_BYTE_MASK)<<16) |
+                            ((bytes[p+1] & UConverterConstants.UNSIGNED_BYTE_MASK)<<8) |
+                            (bytes[p+2] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if (value <= 0xffff) {
+                            length = 2;
+                        } else {
+                            length = 3;
+                        }
+                        break;
+                    // case MBCS_OUTPUT_4:
+                    // value=MBCS_VALUE_4_FROM_STAGE_2(sharedData->mbcs.fromUnicodeBytes, stage2Entry, c);
+                    // if(value<=0xff) {
+                    // length=1;
+                    // } else if(value<=0xffff) {
+                    // length=2;
+                    // } else if(value<=0xffffff) {
+                    // length=3;
+                    // } else {
+                    // length=4;
+                    // }
+                    // break;
+                    // case MBCS_OUTPUT_3_EUC:
+                    // value=MBCS_VALUE_2_FROM_STAGE_2(sharedData->mbcs.fromUnicodeBytes, stage2Entry, c);
+                    // /* EUC 16-bit fixed-length representation */
+                    // if(value<=0xff) {
+                    // length=1;
+                    // } else if((value&0x8000)==0) {
+                    // value|=0x8e8000;
+                    // length=3;
+                    // } else if((value&0x80)==0) {
+                    // value|=0x8f0080;
+                    // length=3;
+                    // } else {
+                    // length=2;
+                    // }
+                    // break;
+                    // case MBCS_OUTPUT_4_EUC:
+                    // p=MBCS_POINTER_3_FROM_STAGE_2(sharedData->mbcs.fromUnicodeBytes, stage2Entry, c);
+                    // value=((uint32_t)*p<<16)|((uint32_t)p[1]<<8)|p[2];
+                    // /* EUC 16-bit fixed-length representation applied to the first two bytes */
+                    // if(value<=0xff) {
+                    // length=1;
+                    // } else if(value<=0xffff) {
+                    // length=2;
+                    // } else if((value&0x800000)==0) {
+                    // value|=0x8e800000;
+                    // length=4;
+                    // } else if((value&0x8000)==0) {
+                    // value|=0x8f008000;
+                    // length=4;
+                    // } else {
+                    // length=3;
+                    // }
+                    // break;
+                    // #endif
+                    default:
+                        /* must not occur */
+                        return -1;
+                    }
+
+                    /* is this code point assigned, or do we use fallbacks? */
+                    if (MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, c)
+                            || (CharsetEncoderICU.isFromUUseFallback(isUseFallback, c) && value != 0)) {
+                        /*
+                         * We allow a 0 byte output if the "assigned" bit is set for this entry. There is no way with
+                         * this data structure for fallback output to be a zero byte.
+                         */
+                        /* assigned */
+                        pValue[0] = value;
+                        return length;
+                    }
+                }
+            }
+
+            if (sharedData.mbcs.extIndexes != null) {
+                length = simpleMatchFromU(c, pValue, isUseFallback);
+                return length >= 0 ? length : -length; /* return abs(length); */
+            }
+
+            /* unassigned */
+            return 0;
+        }
+
+        /*
+         * continue partial match with new input, requires cnv->preFromUFirstCP>=0 never called for simple,
+         * single-character conversion
+         */
+        private CoderResult continueMatchFromU(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush,
+                int srcIndex) {
+            CoderResult cr = CoderResult.UNDERFLOW;
+            int[] value = new int[1];
+            int match;
+
+            match = matchFromU(preFromUFirstCP, preFromUArray, preFromUBegin, preFromULength, source, value, useFallback, flush);
+            if (match >= 2) {
+                match -= 2; /* remove 2 for the initial code point */
+
+                if (match >= preFromULength) {
+                    /* advance src pointer for the consumed input */
+                    source.position(source.position() + match - preFromULength);
+                    preFromULength = 0;
+                } else {
+                    /* the match did not use all of preFromU[] - keep the rest for replay */
+                    int length = preFromULength - match;
+                    System.arraycopy(preFromUArray, preFromUBegin + match, preFromUArray, preFromUBegin, length);
+                    preFromULength = (byte) -length;
+                }
+
+                /* finish the partial match */
+                preFromUFirstCP = UConverterConstants.U_SENTINEL;
+
+                /* write result */
+                writeFromU(value[0], target, offsets, srcIndex);
+            } else if (match < 0) {
+                /* save state for partial match */
+                int sArrayIndex;
+                int j;
+
+                /* just _append_ the newly consumed input to preFromU[] */
+                sArrayIndex = source.position();
+                match = -match - 2; /* remove 2 for the initial code point */
+                for (j = preFromULength; j < match; ++j) {
+                    preFromUArray[j] = source.get(sArrayIndex++);
+                }
+                source.position(sArrayIndex); /* same as *src=srcLimit; because we reached the end of input */
+                preFromULength = (byte) match;
+            } else { /* match==0 or 1 */
+                /*
+                 * no match
+                 * 
+                 * We need to split the previous input into two parts:
+                 * 
+                 * 1. The first code point is unmappable - that's how we got into trying the extension data in the first
+                 * place. We need to move it from the preFromU buffer to the error buffer, set an error code, and
+                 * prepare the rest of the previous input for 2.
+                 * 
+                 * 2. The rest of the previous input must be converted once we come back from the callback for the first
+                 * code point. At that time, we have to try again from scratch to convert these input characters. The
+                 * replay will be handled by the ucnv.c conversion code.
+                 */
+
+                if (match == 1) {
+                    /* matched, no mapping but request for <subchar1> */
+                    useSubChar1 = true;
+                }
+
+                /* move the first code point to the error field */
+                fromUChar32 = preFromUFirstCP;
+                preFromUFirstCP = UConverterConstants.U_SENTINEL;
+
+                /* mark preFromU for replay */
+                preFromULength = (byte) -preFromULength;
+
+                /* set the error code for unassigned */
+                // TODO: figure out what the unmappable length really should be
+                cr = CoderResult.unmappableForLength(1);
+            }
+            return cr;
+        }
+
+        /**
+         * @param cx
+         *            pointer to extension data; if NULL, returns 0
+         * @param firstCP
+         *            the first code point before all the other UChars
+         * @param pre
+         *            UChars that must match; !initialMatch: partial match with them
+         * @param preLength
+         *            length of pre, >=0
+         * @param src
+         *            UChars that can be used to complete a match
+         * @param srcLength
+         *            length of src, >=0
+         * @param pMatchValue
+         *            [out] output result value for the match from the data structure
+         * @param useFallback
+         *            "use fallback" flag, usually from cnv->useFallback
+         * @param flush
+         *            TRUE if the end of the input stream is reached
+         * @return >1: matched, return value=total match length (number of input units matched) 1: matched, no mapping
+         *         but request for <subchar1> (only for the first code point) 0: no match <0: partial match, return
+         *         value=negative total match length (partial matches are never returned for flush==TRUE) (partial
+         *         matches are never returned as being longer than UCNV_EXT_MAX_UCHARS) the matchLength is 2 if only
+         *         firstCP matched, and >2 if firstCP and further code units matched
+         */
+        // static int32_t ucnv_extMatchFromU(const int32_t *cx, UChar32 firstCP, const UChar *pre, int32_t preLength,
+        // const UChar *src, int32_t srcLength, uint32_t *pMatchValue, UBool useFallback, UBool flush)
+        private int matchFromU(int firstCP, char[] preArray, int preArrayBegin, int preLength, CharBuffer source,
+                int[] pMatchValue, boolean isUseFallback, boolean flush) {
+            ByteBuffer cx = sharedData.mbcs.extIndexes;
+
+            CharBuffer stage12, stage3;
+            IntBuffer stage3b;
+
+            CharBuffer fromUTableUChars, fromUSectionUChars;
+            IntBuffer fromUTableValues, fromUSectionValues;
+
+            int value, matchValue;
+            int i, j, index, length, matchLength;
+            char c;
+
+            if (cx == null) {
+                return 0; /* no extension data, no match */
+            }
+
+            /* trie lookup of firstCP */
+            index = firstCP >>> 10; /* stage 1 index */
+            if (index >= cx.asIntBuffer().get(EXT_FROM_U_STAGE_1_LENGTH)) {
+                return 0; /* the first code point is outside the trie */
+            }
+
+            stage12 = (CharBuffer) ARRAY(cx, EXT_FROM_U_STAGE_12_INDEX, char.class);
+            stage3 = (CharBuffer) ARRAY(cx, EXT_FROM_U_STAGE_3_INDEX, char.class);
+            index = FROM_U(stage12, stage3, index, firstCP);
+
+            stage3b = (IntBuffer) ARRAY(cx, EXT_FROM_U_STAGE_3B_INDEX, int.class);
+            value = stage3b.get(stage3b.position() + index);
+            if (value == 0) {
+                return 0;
+            }
+
+            if (TO_U_IS_PARTIAL(value)) {
+                /* partial match, enter the loop below */
+                index = FROM_U_GET_PARTIAL_INDEX(value);
+
+                /* initialize */
+                fromUTableUChars = (CharBuffer) ARRAY(cx, EXT_FROM_U_UCHARS_INDEX, char.class);
+                fromUTableValues = (IntBuffer) ARRAY(cx, EXT_FROM_U_VALUES_INDEX, int.class);
+
+                matchValue = 0;
+                i = j = matchLength = 0;
+
+                /* we must not remember fallback matches when not using fallbacks */
+
+                /* match input units until there is a full match or the input is consumed */
+                for (;;) {
+                    /* go to the next section */
+                    int oldpos = fromUTableUChars.position();
+                    fromUSectionUChars = ((CharBuffer) fromUTableUChars.position(index)).slice();
+                    fromUTableUChars.position(oldpos);
+                    oldpos = fromUTableValues.position();
+                    fromUSectionValues = ((IntBuffer) fromUTableValues.position(index)).slice();
+                    fromUTableValues.position(oldpos);
+
+                    /* read first pair of the section */
+                    length = fromUSectionUChars.get();
+                    value = fromUSectionValues.get();
+                    if (value != 0 && (FROM_U_IS_ROUNDTRIP(value) || isFromUUseFallback(isUseFallback, firstCP))) {
+                        /* remember longest match so far */
+                        matchValue = value;
+                        matchLength = 2 + i + j;
+                    }
+
+                    /* match pre[] then src[] */
+                    if (i < preLength) {
+                        c = preArray[preArrayBegin + i++];
+                    } else if (source != null && j < source.remaining()) {
+                        c = source.get(source.position() + j++);
+                    } else {
+                        /* all input consumed, partial match */
+                        if (flush || (length = (i + j)) > MAX_UCHARS) {
+                            /*
+                             * end of the entire input stream, stop with the longest match so far or: partial match must
+                             * not be longer than UCNV_EXT_MAX_UCHARS because it must fit into state buffers
+                             */
+                            break;
+                        } else {
+                            /* continue with more input next time */
+                            return -(2 + length);
+                        }
+                    }
+
+                    /* search for the current UChar */
+                    index = findFromU(fromUSectionUChars, length, c);
+                    if (index < 0) {
+                        /* no match here, stop with the longest match so far */
+                        break;
+                    } else {
+                        value = fromUSectionValues.get(fromUSectionValues.position() + index);
+                        if (FROM_U_IS_PARTIAL(value)) {
+                            /* partial match, continue */
+                            index = FROM_U_GET_PARTIAL_INDEX(value);
+                        } else {
+                            if (FROM_U_IS_ROUNDTRIP(value) || isFromUUseFallback(isUseFallback, firstCP)) {
+                                /* full match, stop with result */
+                                matchValue = value;
+                                matchLength = 2 + i + j;
+                            } else {
+                                /* full match on fallback not taken, stop with the longest match so far */
+                            }
+                            break;
+                        }
+                    }
+                }
+
+                if (matchLength == 0) {
+                    /* no match at all */
+                    return 0;
+                }
+            } else /* result from firstCP trie lookup */{
+                if (FROM_U_IS_ROUNDTRIP(value) || isFromUUseFallback(isUseFallback, firstCP)) {
+                    /* full match, stop with result */
+                    matchValue = value;
+                    matchLength = 2;
+                } else {
+                    /* fallback not taken */
+                    return 0;
+                }
+            }
+
+            if ((matchValue & FROM_U_RESERVED_MASK) != 0) {
+                /* do not interpret values with reserved bits used, for forward compatibility */
+                return 0;
+            }
+
+            /* return result */
+            if (matchValue == FROM_U_SUBCHAR1) {
+                return 1; /* assert matchLength==2 */
+            }
+
+            pMatchValue[0] = FROM_U_MASK_ROUNDTRIP(matchValue);
+            return matchLength;
+        }
+
+        private int simpleMatchFromU(int cp, int[] pValue, boolean isUseFallback) {
+            int[] value = new int[1];
+            int match; // signed
+
+            /* try to match */
+            match = matchFromU(cp, null, 0, 0, null, value, isUseFallback, true);
+            if (match >= 2) {
+                /* write result for simple, single-character conversion */
+                int length;
+                boolean isRoundtrip;
+
+                isRoundtrip = FROM_U_IS_ROUNDTRIP(value[0]);
+                length = FROM_U_GET_LENGTH(value[0]);
+                value[0] = FROM_U_GET_DATA(value[0]);
+
+                if (length <= EXT_FROM_U_MAX_DIRECT_LENGTH) {
+                    pValue[0] = value[0];
+                    return isRoundtrip ? length : -length;
+                    // #if 0 /* not currently used */
+                    // } else if(length==4) {
+                    // /* de-serialize a 4-byte result */
+                    // const uint8_t *result=UCNV_EXT_ARRAY(cx, UCNV_EXT_FROM_U_BYTES_INDEX, uint8_t)+value;
+                    // *pValue=
+                    // ((uint32_t)result[0]<<24)|
+                    // ((uint32_t)result[1]<<16)|
+                    // ((uint32_t)result[2]<<8)|
+                    // result[3];
+                    // return isRoundtrip ? 4 : -4;
+                    // #endif
+                }
+            }
+
+            /*
+             * return no match because - match>1 && resultLength>4: result too long for simple conversion - match==1: no
+             * match found, <subchar1> preferred - match==0: no match found in the first place - match<0: partial
+             * match, not supported for simple conversion (and flush==TRUE)
+             */
+            return 0;
+        }
+
+        private CoderResult writeFromU(int value, ByteBuffer target, IntBuffer offsets, int srcIndex) {
+            ByteBuffer cx = sharedData.mbcs.extIndexes;
+
+            byte bufferArray[] = new byte[1 + MAX_BYTES];
+            int bufferArrayIndex = 0;
+            byte[] resultArray;
+            int resultArrayIndex;
+            int length, prevLength;
+
+            length = FROM_U_GET_LENGTH(value);
+            value = FROM_U_GET_DATA(value);
+
+            /* output the result */
+            if (length <= FROM_U_MAX_DIRECT_LENGTH) {
+                /*
+                 * Generate a byte array and then write it below. This is not the fastest possible way, but it should be
+                 * ok for extension mappings, and it is much simpler. Offset and overflow handling are only done once
+                 * this way.
+                 */
+                int p = bufferArrayIndex + 1; /* reserve buffer[0] for shiftByte below */
+                switch (length) {
+                case 3:
+                    bufferArray[p++] = (byte) (value >>> 16);
+                case 2:
+                    bufferArray[p++] = (byte) (value >>> 8);
+                case 1:
+                    bufferArray[p++] = (byte) value;
+                default:
+                    break; /* will never occur */
+                }
+                resultArray = bufferArray;
+                resultArrayIndex = bufferArrayIndex + 1;
+            } else {
+                byte[] slice = new byte[length];
+
+                ByteBuffer bb = ((ByteBuffer) ARRAY(cx, EXT_FROM_U_BYTES_INDEX, byte.class));
+                bb.position(value);
+                bb.get(slice, 0, slice.length);
+
+                resultArray = slice;
+                resultArrayIndex = 0;
+            }
+
+            /* with correct data we have length>0 */
+
+            if ((prevLength = (int) fromUnicodeStatus) != 0) {
+                /* handle SI/SO stateful output */
+                byte shiftByte;
+
+                if (prevLength > 1 && length == 1) {
+                    /* change from double-byte mode to single-byte */
+                    shiftByte = (byte) UConverterConstants.SI;
+                    fromUnicodeStatus = 1;
+                } else if (prevLength == 1 && length > 1) {
+                    /* change from single-byte mode to double-byte */
+                    shiftByte = (byte) UConverterConstants.SO;
+                    fromUnicodeStatus = 2;
+                } else {
+                    shiftByte = 0;
+                }
+
+                if (shiftByte != 0) {
+                    /* prepend the shift byte to the result bytes */
+                    bufferArray[0] = shiftByte;
+                    if (resultArray != bufferArray || resultArrayIndex != bufferArrayIndex + 1) {
+                        System.arraycopy(resultArray, resultArrayIndex, bufferArray, bufferArrayIndex + 1, length);
+                    }
+                    resultArray = bufferArray;
+                    resultArrayIndex = bufferArrayIndex;
+                    ++length;
+                }
+            }
+
+            return fromUWriteBytes(this, resultArray, resultArrayIndex, length, target, offsets, srcIndex);
+        }
+
+        /*
+         * @return if(U_FAILURE) return the code point for cnv->fromUChar32 else return 0 after output has been written
+         * to the target
+         */
+        private int fromU(int cp_, CharBuffer source, ByteBuffer target, IntBuffer offsets, int sourceIndex,
+                int length, boolean flush, CoderResult[] cr) {
+            // ByteBuffer cx;
+            long cp = cp_ & UConverterConstants.UNSIGNED_INT_MASK;
+
+            useSubChar1 = false;
+
+            if (sharedData.mbcs.extIndexes != null
+                    && initialMatchFromU((int) cp, source, target, offsets, sourceIndex, flush, cr)) {
+                return 0; /* an extension mapping handled the input */
+            }
+
+            /* GB 18030 */
+            if ((options & MBCS_OPTION_GB18030) != 0) {
+                long[] range;
+                int i;
+
+                for (i = 0; i < gb18030Ranges.length; ++i) {
+                    range = gb18030Ranges[i];
+                    if (range[0] <= cp && cp <= range[1]) {
+                        /* found the Unicode code point, output the four-byte sequence for it */
+                        long linear;
+                        byte bytes[] = new byte[4];
+
+                        /* get the linear value of the first GB 18030 code in this range */
+                        linear = range[2] - LINEAR_18030_BASE;
+
+                        /* add the offset from the beginning of the range */
+                        linear += (cp - range[0]);
+
+                        bytes[3] = (byte) (0x30 + linear % 10);
+                        linear /= 10;
+                        bytes[2] = (byte) (0x81 + linear % 126);
+                        linear /= 126;
+                        bytes[1] = (byte) (0x30 + linear % 10);
+                        linear /= 10;
+                        bytes[0] = (byte) (0x81 + linear);
+
+                        /* output this sequence */
+                        cr[0] = fromUWriteBytes(this, bytes, 0, 4, target, offsets, sourceIndex);
+                        return 0;
+                    }
+                }
+            }
+
+            /* no mapping */
+            cr[0] = CoderResult.unmappableForLength(length);
+            return (int) cp;
+        }
+
+        /*
+         * target<targetLimit; set error code for overflow
+         */
+        private boolean initialMatchFromU(int cp, CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                int srcIndex, boolean flush, CoderResult[] cr) {
+            int[] value = new int[1];
+            int match;
+
+            /* try to match */
+            match = matchFromU(cp, null, 0, 0, source, value, useFallback, flush);
+
+            /* reject a match if the result is a single byte for DBCS-only */
+            if (match >= 2
+                    && !(FROM_U_GET_LENGTH(value[0]) == 1 && sharedData.mbcs.outputType == MBCS_OUTPUT_DBCS_ONLY)) {
+                /* advance src pointer for the consumed input */
+                source.position(source.position() + match - 2); /* remove 2 for the initial code point */
+
+                /* write result to target */
+                cr[0] = writeFromU(value[0], target, offsets, srcIndex);
+                return true;
+            } else if (match < 0) {
+                /* save state for partial match */
+                int sArrayIndex;
+                int j;
+
+                /* copy the first code point */
+                preFromUFirstCP = cp;
+
+                /* now copy the newly consumed input */
+                sArrayIndex = source.position();
+                match = -match - 2; /* remove 2 for the initial code point */
+                for (j = 0; j < match; ++j) {
+                    preFromUArray[j] = source.get(sArrayIndex++);
+                }
+                source.position(sArrayIndex); /* same as *src=srcLimit; because we reached the end of input */
+                preFromULength = (byte) match;
+                return true;
+            } else if (match == 1) {
+                /* matched, no mapping but request for <subchar1> */
+                useSubChar1 = true;
+                return false;
+            } else /* match==0 no match */{
+                return false;
+            }
+        }
+        
+        CoderResult cnvMBCSFromUnicodeWithOffsets(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+            
+            char[] table;
+            int p;
+            ByteBuffer bytes;
+            short outputType;
+            
+            SideEffects x = new SideEffects(0, 0, 0, 0, 0, 0);
+            
+            int targetCapacity = target.limit() - target.position();
+            
+            int stage2Entry = 0;
+            //int asciiRoundtrips;
+            long value;
+            int length = 0;
+            int uniMask;
+            
+            boolean doLoop = true;
+            boolean gotoGetTrail = false;
+            
+            if (preFromUFirstCP >= 0) {
+                /*
+                 * pass sourceIndex=-1 because we continue from an earlier buffer
+                 * in the future, this may change with continuous offsets.
+                 */
+                cr[0] = continueMatchFromU(source, target, offsets, flush, -1);
+                if (cr[0].isError() || preFromULength < 0) {
+                    return cr[0];
+                }
+            }
+            
+            /* use optimized function if possible */
+            outputType = sharedData.mbcs.outputType;
+            uniMask = sharedData.mbcs.unicodeMask;
+            if (outputType == MBCS_OUTPUT_1 && ((uniMask&UConverterConstants.HAS_SURROGATES) == 0)) {
+                if ((uniMask&UConverterConstants.HAS_SURROGATES) == 0) {
+                    cr[0] = cnvMBCSSingleFromBMPWithOffsets(source, target, offsets, flush);
+                } else {
+                    cr[0] = cnvMBCSSingleFromUnicodeWithOffsets(source, target, offsets, flush);
+                }
+                return cr[0];
+            }/* else if (outputType == MBCS_OUTPUT_2 && mbcs.sharedData.mbcs.utf8Friendly) {
+                cr[0] = cnvMBCSDoubleFromUnicodeWithOffsets(source, target, offsets, flush);
+                return cr[0];
+            }*/
+            
+            table = sharedData.mbcs.fromUnicodeTable;
+            /* if (mbcs.sharedData.mbcs.utf8Friendly) {
+                mbcsIndex = mbcs.sharedData.mbcs.mbcsIndex;
+            } else {
+                mbcsIndex = null;
+            } */
+            
+            if ((options&UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                bytes = ByteBuffer.wrap(sharedData.mbcs.swapLFNLFromUnicodeBytes);
+            } else {
+                bytes = ByteBuffer.wrap(sharedData.mbcs.fromUnicodeBytes);
+            }
+            //asciiRoundtrips = mbcs.sharedData.mbcs.asciiRoundtrips;
+            
+            /* get the converter state from UConverter */
+            x.c = fromUChar32;
+            if (outputType == MBCS_OUTPUT_2_SISO) {
+                x.prevLength = fromUnicodeStatus;
+                if (x.prevLength == 0) {
+                    /* set the real value */
+                    x.prevLength = 1;
+                }
+            } else {
+                /* prevent fromUnicodeStatus from being set to something non-0 */
+                x.prevLength = 0;
+            }
+            
+            /* sourceIndex = -1 if the current character began in the previous buffer */
+            x.prevSourceIndex = -1;
+            x.sourceIndex = x.c==0 ? 0 : -1;
+            x.nextSourceIndex = 0;
+            
+            /* conversion loop */
+            if (x.c != 0 && targetCapacity > 0) {
+                gotoGetTrail = true; // set gotoGetTrail flag and go to gotoGetTrail label
+            }
+            
+            while (gotoGetTrail || source.hasRemaining()) {
+                /*
+                 * This following test is to see if available input would overflow the output.
+                 * It does not catch output of more than one byte that
+                 * overflows as a result of a multi-byte character or callback output
+                 * from the last source character.
+                 * Therefore, those situations also test for overflows and will
+                 * then break the loop, too.
+                 */
+                if (gotoGetTrail || targetCapacity > 0) {
+                    /*
+                     * Get a correct Unicode code point:
+                     * a single UChar for a BMP code point or 
+                     * a matched surrogate pair for a "supplementary code point."
+                     */
+                    if (!gotoGetTrail) {
+                        x.c = source.get();
+                        ++x.nextSourceIndex;
+                        /* This is commented out because of the fact that IS_ASCII_ROUNDTRIP is not
+                         * being used in ICU4J.
+                         */
+                        /*if (x.c <= 0x7f && IS_ASCII_ROUNDTRIP(c, asciiRoundtrips)) {
+                            target.put((byte)x.c);
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                                x.prevSourceIndex = x.sourceIndex;
+                                x.sourceIndex = x.nextSourceIndex;
+                            }
+                            targetCapacity--;
+                            x.c = 0;
+                            continue;
+                        }*/
+                    }
+                  /* Code to use utf8friendly code was removed since it is not needed in Java. */
+                    /* This also tests if the codepage maps single surrogates.
+                     * If it does, then surrogates are not paired but mapped separately.
+                     * Note that in this case unmatched surrogates are not detected.
+                     */
+                    if (gotoGetTrail || (UTF16.isSurrogate((char)x.c) && (uniMask&UConverterConstants.HAS_SURROGATES) == 0)) {
+                        if (gotoGetTrail || (UTF16.isLeadSurrogate((char)x.c))) {
+// getTrail label
+                            gotoGetTrail = false; // reset gotoGetTrail flag
+                            
+                            x.sourceArrayIndex = source.position();
+                            
+                            doLoop = getTrail(source, target, uniMask, x, flush, cr);
+                            if (x.doread && doLoop) {
+                                continue;
+                            } else if (!x.doread && !doLoop) {
+                                break;
+                            } else if (!doLoop) {
+                                break;
+                            }
+                        } else {
+                            /* this is an unmatched trail code unit (2nd surrogate) */
+                            /* callback(illegal) */
+                            cr[0] = CoderResult.malformedForLength(1);
+                            break;
+                        }
+                    }
+                    
+                    /* convert the Unicode point in c into codepage bytes */
+                    /*
+                     * The basic lookup is a triple-stage compact array (trie) lookup.
+                     * 
+                     * Single-byte codepages are handled with a different data structure
+                     * by _MBCSSingle... functions.
+                     * 
+                     * The result consists of a 32-bit value from stage 2 and
+                     * a pointer to as many bytes as are stored per character.
+                     * The pointer points to the character's bytes in stage 3.
+                     * Bits 15..0 of the stage 2 entry contain the stage 3 index
+                     * for that pointer, while bits 31..16 are flags for which of
+                     * the 16 characters in the block are roundtrip-assigned.
+                     * 
+                     * For 2-byte and 4 byte codepages, the bytes are stored as uint16_t
+                     * respectively as uint32_t, in the platform encoding.
+                     * For 3-byte codepages, the bytes are always stored in big-endian order.
+                     * 
+                     * For EUC encodings that use only either 0x8e or 0x8f as the first
+                     * byte of their longest byte sequences, the first two bytes in 
+                     * this third stage indicate with their 7th bits whether these bytes
+                     * are to be writeen directly or actually need to be preceeded by
+                     * one of the two Single-Shift codes. With this, the third stage
+                     * stores one byte fewer per character than the actual maximum length of
+                     * EUC byte sequences.
+                     * 
+                     * Other than that, leading zero bytes are removed and the other
+                     * bytes output. A single zero byte may be ouput if the "assigned"
+                     * bit in stage 2 was on.
+                     * The data structure does not support zero byte output as a fallback,
+                     * and also does not allow output of leading zeros.
+                     */
+                    stage2Entry = MBCS_STAGE_2_FROM_U(table, x.c);
+                    
+                    /* get the bytes and the length for the output */
+                    switch (outputType) {
+                    case MBCS_OUTPUT_2:
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else {
+                            length = 2;
+                        }
+                        break;
+                    case MBCS_OUTPUT_2_SISO:
+                        /* 1/2-byte stateful with Shift-In/Shift-Out */
+                        /*
+                         * Save the old state in the converter object
+                         * right here, then change the local pervLength state variable if necessary.
+                         * Then, if this character turns out to be unassigned or a fallback that
+                         * is not taken, the callback code must not save the new state in the converter
+                         * because the new state is for a character that is not output.
+                         * However, the callback must still restore the state from the converter
+                         * in case the callback function changed it for its output.
+                         */
+                        fromUnicodeStatus = x.prevLength; /* save the old state */
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        if (value <= 0xff) {
+                            if (value == 0 && MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, x.c)) {
+                                /* no mapping, leave value == 0 */
+                                length = 0;
+                            } else if (x.prevLength <= 1) {
+                                length = 1;
+                            } else {
+                                /* change from double-byte mode to single-byte */
+                                value |= UConverterConstants.UNSIGNED_INT_MASK & (UConverterConstants.SI<<8);
+                                length = 2;
+                                x.prevLength = 1;
+                            }
+                        } else {
+                            if (x.prevLength == 2) {
+                                length = 2;
+                            } else {
+                                /* change from single-byte mode to double-byte */
+                                value |= UConverterConstants.UNSIGNED_INT_MASK & (UConverterConstants.SO<<16);
+                                length = 3;
+                                x.prevLength = 2;
+                            }
+                        }
+                        break;
+                    case MBCS_OUTPUT_DBCS_ONLY:
+                        /* table with single-byte results, but only DBCS mappings used */
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        if (value <= 0xff) {
+                            /* no mapping or SBCS result, not taken for DBCS-only */
+                            value = stage2Entry = 0; /* stage2Entry=0 to reset roundtrip flags */
+                            length = 0;
+                        } else {
+                            length = 2;
+                        }
+                        break;
+                    case MBCS_OUTPUT_3:
+                        p = MBCS_POINTER_3_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        value = UConverterConstants.UNSIGNED_INT_MASK&((int)bytes.get(p)<<16 | (int)bytes.get(p+1)<<8 | bytes.get(p+2));
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if (value <= 0xffff) {
+                            length = 2;
+                        } else {
+                            length = 3;
+                        }
+                        break;
+                    case MBCS_OUTPUT_4:
+                        value = MBCS_VALUE_4_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if (value <= 0xffff) {
+                            length = 2;
+                        } else if (value <= 0xffffff) {
+                            length = 3;
+                        } else {
+                            length = 4;
+                        }
+                        break;
+                    case MBCS_OUTPUT_3_EUC:
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        /* EUC 16-bit fixed-length representation */
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if ((value&0x8000) == 0) {
+                            value |= 0x8e8000;
+                            length = 3;
+                        } else if ((value&0x80) == 0) {
+                            value |= 0x8f0080;
+                            length = 3;
+                        } else {
+                            length = 2;
+                        }
+                        break;
+                    case MBCS_OUTPUT_4_EUC:
+                        p = MBCS_POINTER_3_FROM_STAGE_2(bytes.array(), stage2Entry, x.c);
+                        value = UConverterConstants.UNSIGNED_INT_MASK&((int)bytes.get(p)<<16 | (int)bytes.get(p+1)<<8 | bytes.get(p+2));
+                        /* EUC 16-bit fixed-length representation applied to the first two bytes */
+                        if (value <= 0xff) {
+                            length = 1;
+                        } else if (value <= 0xffff) {
+                            length = 2;
+                        } else if ((value&0x800000) == 0) {
+                            value |= 0x08e800000;
+                            length = 4;
+                        } else if ((value&0x8000) == 0) {
+                            value |= 0x08f008000;
+                            length = 4;
+                        } else {
+                            length = 3;
+                        }
+                        break;
+                    default :
+                        /* must not occur */
+                        value = stage2Entry = 0;
+                        length = 0;
+                        break;
+                    }
+                    /* is this code point assigned, or do we use fallbacks? */
+                    if (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, x.c)) || 
+                            (CharsetEncoderICU.isFromUUseFallback(useFallback, x.c) && value != 0)) {
+                        /*
+                         * We allow a 0 byte output if the "assigned" bit is set for this entry.
+                         * There is no way with this data structure for fallback output
+                         * to be a zero byte.
+                         */
+// unassigned label 
+                        int currentSourcePos = source.position();
+                        doLoop = unassigned(source, target, offsets, x, flush, cr);
+                        if (doLoop) {
+                            continue;
+                        } else {
+                            if (source.position() < currentSourcePos) {
+                                source.position(currentSourcePos);
+                            }
+                            break;
+                        }
+                    }
+                    
+                    /* write the output character bytes from value and length */
+                    /* from the first if in the loop we know that targetCapacity>0 */
+                    if (length <= targetCapacity) {
+                        switch (length) {
+                        /* each branch falls through to the next one */
+                        case 4:
+                            target.put((byte)(value>>24));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 3:
+                            target.put((byte)(value>>16));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 2:
+                            target.put((byte)(value>>8));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 1:
+                            target.put((byte)value);
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        default :
+                            /* will never occur */
+                            break;
+                        }
+                        
+                        targetCapacity -= length;
+                    } else {
+                        /*
+                         * We actually do this backwards here:
+                         * In order to save an intermediate variable, we output
+                         * first to the overflow buffer what does not fit into the
+                         * regular target.
+                         */
+                        /* we know that 1<=targetCapacity<length<=4 */
+                        length -= targetCapacity;
+                        int i = 0; // index for errorBuffer
+                        switch (length) {
+                            /* each branch falls through to the next one */
+                        case 3:
+                            errorBuffer[i++] = (byte)(value>>16);
+                        case 2:
+                            errorBuffer[i++] = (byte)(value>>8);
+                        case 1:
+                            errorBuffer[i++] = (byte)value;
+                        default :
+                            /* will never occur */
+                            break;
+                        }
+                        errorBufferLength = length;
+                        
+                        /* now output what fits into the regular target */
+                        value>>=8*length; /* length was reduced by targetCapacity */
+                        switch (targetCapacity) {
+                            /* each branch falls through to the next one */
+                        case 3:
+                            target.put((byte)(value>>16));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 2:
+                            target.put((byte)(value>>8));
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        case 1:
+                            target.put((byte)value);
+                            if (offsets != null) {
+                                offsets.put(x.sourceIndex);
+                            }
+                        default :
+                            /* will never occur */
+                            break;
+                        }
+                        
+                        /* target overflow */
+                        targetCapacity = 0;
+                        cr[0] = CoderResult.OVERFLOW;
+                        x.c = 0;
+                        break;
+                    }
+                    
+                    /* normal end of conversion: prepare for a new character */
+                    x.c = 0;
+                    if (offsets != null) {
+                        x.prevSourceIndex = x.sourceIndex;
+                        x.sourceIndex = x.nextSourceIndex;
+                    }
+                    continue;
+                } else {
+                    /* target is full */
+                    cr[0] = CoderResult.OVERFLOW;
+                    break;
+                }
+            }
+            
+            /*
+             * the end of the input stream and detection of truncated input
+             * are handled by the framework, but for EBCDIC_STATEFUL conversion
+             * we need to emit an SI at the very end
+             * 
+             * conditions:
+             *  successful
+             *  EBCDIC_STATEFUL in DBCS mode
+             *  end of input and no truncated input
+             */
+            if (!cr[0].isError() && outputType == MBCS_OUTPUT_2_SISO && x.prevLength == 2 && flush && !source.hasRemaining() && x.c == 0) {
+                /* EBCDIC_STATEFUL ending with DBCS: emit an SI to return the output stream to SBCS */
+                if (targetCapacity > 0) {
+                    target.put((byte)UConverterConstants.SI);
+                    if (offsets != null) {
+                        /* set the last source character's index (sourceIndex points at sourceLimit now) */
+                        offsets.put(x.prevSourceIndex);
+                    }
+                } else {
+                    /* target is full */
+                    errorBuffer[0] = UConverterConstants.SI;
+                    errorBufferLength = 1;
+                    cr[0] = CoderResult.OVERFLOW;
+                }
+                x.prevLength = 1; /* we switched into SBCS */
+            }
+            /* set the converter state back into UConverter */
+            fromUChar32 = x.c;
+            fromUnicodeStatus = x.prevLength;
+            
+            return cr[0];
+        }
+
+        /*
+         * This version of ucnv_MBCSFromUnicode() is optimized for single-byte codepages that map only to and from the
+         * BMP. In addition to single-byte/state optimizations, the offset calculations become much easier.
+         */
+        private CoderResult cnvMBCSSingleFromBMPWithOffsets(CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                boolean flush) {
+
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex, lastSource;
+            int targetCapacity, length;
+            char[] table;
+            byte[] results;
+
+            int c, sourceIndex;
+            char value, minValue;
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+            targetCapacity = target.remaining();
+            table = sharedData.mbcs.fromUnicodeTable;
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                results = sharedData.mbcs.swapLFNLFromUnicodeBytes; // agljport:comment should swapLFNLFromUnicodeBytes
+                // be a ByteBuffer so results can be a 16-bit view
+                // of it?
+            } else {
+                results = sharedData.mbcs.fromUnicodeBytes; // agljport:comment should swapLFNLFromUnicodeBytes be a
+                // ByteBuffer so results can be a 16-bit view of it?
+            }
+
+            if (useFallback) {
+                /* use all roundtrip and fallback results */
+                minValue = 0x800;
+            } else {
+                /* use only roundtrips and fallbacks from private-use characters */
+                minValue = 0xc00;
+            }
+
+            /* get the converter state from UConverter */
+            c = fromUChar32;
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = c == 0 ? 0 : -1;
+            lastSource = sourceArrayIndex;
+
+            /*
+             * since the conversion here is 1:1 UChar:uint8_t, we need only one counter for the minimum of the
+             * sourceLength and targetCapacity
+             */
+            length = source.limit() - sourceArrayIndex;
+            if (length < targetCapacity) {
+                targetCapacity = length;
+            }
+
+            boolean doloop = true;
+            if (c != 0 && targetCapacity > 0) {
+                SideEffectsSingleBMP x = new SideEffectsSingleBMP(c, sourceArrayIndex);
+                doloop = getTrailSingleBMP(source, x, cr);
+                c = x.c;
+                sourceArrayIndex = x.sourceArrayIndex;
+            }
+
+            if (doloop) {
+                while (targetCapacity > 0) {
+                    /*
+                     * Get a correct Unicode code point: a single UChar for a BMP code point or a matched surrogate pair
+                     * for a "supplementary code point".
+                     */
+                    c = source.get(sourceArrayIndex++);
+                    /*
+                     * Do not immediately check for single surrogates: Assume that they are unassigned and check for
+                     * them in that case. This speeds up the conversion of assigned characters.
+                     */
+                    /* convert the Unicode code point in c into codepage bytes */
+                    value = MBCS_SINGLE_RESULT_FROM_U(table, results, c);
+
+                    /* is this code point assigned, or do we use fallbacks? */
+                    if (value >= minValue) {
+                        /* assigned, write the output character bytes from value and length */
+                        /* length==1 */
+                        /* this is easy because we know that there is enough space */
+                        target.put((byte) value);
+                        --targetCapacity;
+
+                        /* normal end of conversion: prepare for a new character */
+                        c = 0;
+                        continue;
+                    } else if (!UTF16.isSurrogate((char) c)) {
+                        /* normal, unassigned BMP character */
+                    } else if (UTF16.isLeadSurrogate((char) c)) {
+                        // getTrail:
+                        SideEffectsSingleBMP x = new SideEffectsSingleBMP(c, sourceArrayIndex);
+                        doloop = getTrailSingleBMP(source, x, cr);
+                        c = x.c;
+                        sourceArrayIndex = x.sourceArrayIndex;
+                        if (!doloop)
+                            break;
+                    } else {
+                        /* this is an unmatched trail code unit (2nd surrogate) */
+                        /* callback(illegal) */
+                        cr[0] = CoderResult.malformedForLength(1);
+                        break;
+                    }
+
+                    /* c does not have a mapping */
+
+                    /* get the number of code units for c to correctly advance sourceIndex */
+                    length = UTF16.getCharCount(c);
+
+                    /* set offsets since the start or the last extension */
+                    if (offsets != null) {
+                        int count = sourceArrayIndex - lastSource;
+
+                        /* do not set the offset for this character */
+                        count -= length;
+
+                        while (count > 0) {
+                            offsets.put(sourceIndex++);
+                            --count;
+                        }
+                        /* offsets and sourceIndex are now set for the current character */
+                    }
+
+                    /* try an extension mapping */
+                    lastSource = sourceArrayIndex;
+                    source.position(sourceArrayIndex);
+                    c = fromU(c, source, target, offsets, sourceIndex, length, flush, cr);
+                    sourceArrayIndex = source.position();
+                    sourceIndex += length + (sourceArrayIndex - lastSource);
+                    lastSource = sourceArrayIndex;
+
+                    if (cr[0].isError()) {
+                        /* not mappable or buffer overflow */
+                        break;
+                    } else {
+                        /* a mapping was written to the target, continue */
+
+                        /* recalculate the targetCapacity after an extension mapping */
+                        targetCapacity = target.remaining();
+                        length = source.limit() - sourceArrayIndex;
+                        if (length < targetCapacity) {
+                            targetCapacity = length;
+                        }
+                    }
+                }
+            }
+
+            if (sourceArrayIndex < source.limit() && !target.hasRemaining()) {
+                /* target is full */
+                cr[0] = CoderResult.OVERFLOW;
+            }
+
+            /* set offsets since the start or the last callback */
+            if (offsets != null) {
+                int count = sourceArrayIndex - lastSource;
+                while (count > 0) {
+                    offsets.put(sourceIndex++);
+                    --count;
+                }
+            }
+
+            /* set the converter state back into UConverter */
+            fromUChar32 = c;
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        /* This version of ucnv_MBCSFromUnicodeWithOffsets() is optimized for single-byte codepages. */
+        private CoderResult cnvMBCSSingleFromUnicodeWithOffsets(CharBuffer source, ByteBuffer target,
+                IntBuffer offsets, boolean flush) {
+
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex;
+
+            char[] table;
+            byte[] results; // agljport:comment results is used to to get 16-bit values out of byte[] array
+
+            int c;
+            int sourceIndex, nextSourceIndex;
+
+            char value, minValue;
+
+            /* set up the local pointers */
+            short uniMask;
+            sourceArrayIndex = source.position();
+
+            table = sharedData.mbcs.fromUnicodeTable;
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                results = sharedData.mbcs.swapLFNLFromUnicodeBytes; // agljport:comment should swapLFNLFromUnicodeBytes
+                // be a ByteBuffer so results can be a 16-bit view
+                // of it?
+            } else {
+                results = sharedData.mbcs.fromUnicodeBytes; // agljport:comment should swapLFNLFromUnicodeBytes be a
+                // ByteBuffer so results can be a 16-bit view of it?
+            }
+
+            if (useFallback) {
+                /* use all roundtrip and fallback results */
+                minValue = 0x800;
+            } else {
+                /* use only roundtrips and fallbacks from private-use characters */
+                minValue = 0xc00;
+            }
+            // agljport:comment hasSupplementary only used in getTrail block which now simply repeats the mask operation
+            uniMask = sharedData.mbcs.unicodeMask;
+
+            /* get the converter state from UConverter */
+            c = fromUChar32;
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = c == 0 ? 0 : -1;
+            nextSourceIndex = 0;
+
+            boolean doloop = true;
+            boolean doread = true;
+            if (c != 0 && target.hasRemaining()) {
+                if (UTF16.isLeadSurrogate((char) c)) {
+                    SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex, nextSourceIndex);
+                    doloop = getTrailDouble(source, target, uniMask, x, flush, cr);
+                    doread = x.doread;
+                    c = x.c;
+                    sourceArrayIndex = x.sourceArrayIndex;
+                    sourceIndex = x.sourceIndex;
+                    nextSourceIndex = x.nextSourceIndex;
+                } else {
+                    doread = false;
+                }
+            }
+
+            if (doloop) {
+                while (!doread || sourceArrayIndex < source.limit()) {
+                    /*
+                     * This following test is to see if available input would overflow the output. It does not catch
+                     * output of more than one byte that overflows as a result of a multi-byte character or callback
+                     * output from the last source character. Therefore, those situations also test for overflows and
+                     * will then break the loop, too.
+                     */
+                    if (target.hasRemaining()) {
+                        /*
+                         * Get a correct Unicode code point: a single UChar for a BMP code point or a matched surrogate
+                         * pair for a "supplementary code point".
+                         */
+
+                        if (doread) {
+                            c = source.get(sourceArrayIndex++);
+                            ++nextSourceIndex;
+                            if (UTF16.isSurrogate((char) c)) {
+                                if (UTF16.isLeadSurrogate((char) c)) {
+                                    // getTrail:
+                                    SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex,
+                                            nextSourceIndex);
+                                    doloop = getTrailDouble(source, target, uniMask, x, flush, cr);
+                                    c = x.c;
+                                    sourceArrayIndex = x.sourceArrayIndex;
+                                    sourceIndex = x.sourceIndex;
+                                    nextSourceIndex = x.nextSourceIndex;
+                                    if (x.doread) {
+                                        if (doloop)
+                                            continue;
+                                        else
+                                            break;
+                                    }
+                                } else {
+                                    /* this is an unmatched trail code unit (2nd surrogate) */
+                                    /* callback(illegal) */
+                                    cr[0] = CoderResult.malformedForLength(1);
+                                    break;
+                                }
+                            }
+                        } else {
+                            doread = true;
+                        }
+
+                        /* convert the Unicode code point in c into codepage bytes */
+                        value = MBCS_SINGLE_RESULT_FROM_U(table, results, c);
+
+                        /* is this code point assigned, or do we use fallbacks? */
+                        if (value >= minValue) {
+                            /* assigned, write the output character bytes from value and length */
+                            /* length==1 */
+                            /* this is easy because we know that there is enough space */
+                            target.put((byte) value);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+
+                            /* normal end of conversion: prepare for a new character */
+                            c = 0;
+                            sourceIndex = nextSourceIndex;
+                        } else { /* unassigned */
+                            /* try an extension mapping */
+                            SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex,
+                                    nextSourceIndex);
+                            doloop = unassignedDouble(source, target, x, flush, cr);
+                            c = x.c;
+                            sourceArrayIndex = x.sourceArrayIndex;
+                            sourceIndex = x.sourceIndex;
+                            nextSourceIndex = x.nextSourceIndex;
+                            if (!doloop)
+                                break;
+                        }
+                    } else {
+                        /* target is full */
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+                }
+            }
+
+            /* set the converter state back into UConverter */
+            fromUChar32 = c;
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        /* This version of ucnv_MBCSFromUnicodeWithOffsets() is optimized for double-byte codepages. */
+        private CoderResult cnvMBCSDoubleFromUnicodeWithOffsets(CharBuffer source, ByteBuffer target,
+                IntBuffer offsets, boolean flush) {
+            CoderResult[] cr = { CoderResult.UNDERFLOW };
+
+            int sourceArrayIndex;
+
+            char[] table;
+            byte[] bytes;
+
+            int c, sourceIndex, nextSourceIndex;
+
+            int stage2Entry;
+            int value;
+            int length;
+            short uniMask;
+
+            /* use optimized function if possible */
+            uniMask = sharedData.mbcs.unicodeMask;
+
+            /* set up the local pointers */
+            sourceArrayIndex = source.position();
+
+            table = sharedData.mbcs.fromUnicodeTable;
+
+            if ((options & UConverterConstants.OPTION_SWAP_LFNL) != 0) {
+                bytes = sharedData.mbcs.swapLFNLFromUnicodeBytes;
+            } else {
+                bytes = sharedData.mbcs.fromUnicodeBytes;
+            }
+
+            /* get the converter state from UConverter */
+            c = fromUChar32;
+
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex = c == 0 ? 0 : -1;
+            nextSourceIndex = 0;
+
+            /* conversion loop */
+            boolean doloop = true;
+            boolean doread = true;
+            if (c != 0 && target.hasRemaining()) {
+                if (UTF16.isLeadSurrogate((char) c)) {
+                    SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex, nextSourceIndex);
+                    doloop = getTrailDouble(source, target, uniMask, x, flush, cr);
+                    doread = x.doread;
+                    c = x.c;
+                    sourceArrayIndex = x.sourceArrayIndex;
+                    sourceIndex = x.sourceIndex;
+                    nextSourceIndex = x.nextSourceIndex;
+                } else {
+                    doread = false;
+                }
+            }
+
+            if (doloop) {
+                while (!doread || sourceArrayIndex < source.limit()) {
+                    /*
+                     * This following test is to see if available input would overflow the output. It does not catch
+                     * output of more than one byte that overflows as a result of a multi-byte character or callback
+                     * output from the last source character. Therefore, those situations also test for overflows and
+                     * will then break the loop, too.
+                     */
+                    if (target.hasRemaining()) {
+                        if (doread) {
+                            /*
+                             * Get a correct Unicode code point: a single UChar for a BMP code point or a matched
+                             * surrogate pair for a "supplementary code point".
+                             */
+                            c = source.get(sourceArrayIndex++);
+                            ++nextSourceIndex;
+                            /*
+                             * This also tests if the codepage maps single surrogates. If it does, then surrogates are
+                             * not paired but mapped separately. Note that in this case unmatched surrogates are not
+                             * detected.
+                             */
+                            if (UTF16.isSurrogate((char) c) && (uniMask & UConverterConstants.HAS_SURROGATES) == 0) {
+                                if (UTF16.isLeadSurrogate((char) c)) {
+                                    // getTrail:
+                                    SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex,
+                                            nextSourceIndex);
+                                    doloop = getTrailDouble(source, target, uniMask, x, flush, cr);
+                                    c = x.c;
+                                    sourceArrayIndex = x.sourceArrayIndex;
+                                    sourceIndex = x.sourceIndex;
+                                    nextSourceIndex = x.nextSourceIndex;
+
+                                    if (x.doread) {
+                                        if (doloop)
+                                            continue;
+                                        else
+                                            break;
+                                    }
+                                } else {
+                                    /* this is an unmatched trail code unit (2nd surrogate) */
+                                    /* callback(illegal) */
+                                    cr[0] = CoderResult.malformedForLength(1);
+                                    break;
+                                }
+                            }
+                        } else {
+                            doread = true;
+                        }
+
+                        /* convert the Unicode code point in c into codepage bytes */
+                        stage2Entry = MBCS_STAGE_2_FROM_U(table, c);
+
+                        /* get the bytes and the length for the output */
+                        /* MBCS_OUTPUT_2 */
+                        value = MBCS_VALUE_2_FROM_STAGE_2(bytes, stage2Entry, c);
+                        if ((value & UConverterConstants.UNSIGNED_INT_MASK) <= 0xff) {
+                            length = 1;
+                        } else {
+                            length = 2;
+                        }
+
+                        /* is this code point assigned, or do we use fallbacks? */
+                        if (!(MBCS_FROM_U_IS_ROUNDTRIP(stage2Entry, c) || (isFromUUseFallback(c) && value != 0))) {
+                            /*
+                             * We allow a 0 byte output if the "assigned" bit is set for this entry. There is no way
+                             * with this data structure for fallback output to be a zero byte.
+                             */
+
+                            // unassigned:
+                            SideEffectsDouble x = new SideEffectsDouble(c, sourceArrayIndex, sourceIndex,
+                                    nextSourceIndex);
+
+                            doloop = unassignedDouble(source, target, x, flush, cr);
+                            c = x.c;
+                            sourceArrayIndex = x.sourceArrayIndex;
+                            sourceIndex = x.sourceIndex;
+                            nextSourceIndex = x.nextSourceIndex;
+                            if (doloop)
+                                continue;
+                            else
+                                break;
+                        }
+
+                        /* write the output character bytes from value and length */
+                        /* from the first if in the loop we know that targetCapacity>0 */
+                        if (length == 1) {
+                            /* this is easy because we know that there is enough space */
+                            target.put((byte) value);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                            }
+                        } else /* length==2 */{
+                            target.put((byte) (value >>> 8));
+                            if (2 <= target.remaining()) {
+                                target.put((byte) value);
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                    offsets.put(sourceIndex);
+                                }
+                            } else {
+                                if (offsets != null) {
+                                    offsets.put(sourceIndex);
+                                }
+                                errorBuffer[0] = (byte) value;
+                                errorBufferLength = 1;
+
+                                /* target overflow */
+                                cr[0] = CoderResult.OVERFLOW;
+                                c = 0;
+                                break;
+                            }
+                        }
+
+                        /* normal end of conversion: prepare for a new character */
+                        c = 0;
+                        sourceIndex = nextSourceIndex;
+                        continue;
+                    } else {
+                        /* target is full */
+                        cr[0] = CoderResult.OVERFLOW;
+                        break;
+                    }
+                }
+            }
+
+            /* set the converter state back into UConverter */
+            fromUChar32 = c;
+
+            /* write back the updated pointers */
+            source.position(sourceArrayIndex);
+
+            return cr[0];
+        }
+
+        private final class SideEffectsSingleBMP {
+            int c, sourceArrayIndex;
+
+            SideEffectsSingleBMP(int c_, int sourceArrayIndex_) {
+                c = c_;
+                sourceArrayIndex = sourceArrayIndex_;
+            }
+        }
+
+        // function made out of block labeled getTrail in ucnv_MBCSSingleFromUnicodeWithOffsets
+        // assumes input c is lead surrogate
+        private final boolean getTrailSingleBMP(CharBuffer source, SideEffectsSingleBMP x, CoderResult[] cr) {
+            if (x.sourceArrayIndex < source.limit()) {
+                /* test the following code unit */
+                char trail = source.get(x.sourceArrayIndex);
+                if (UTF16.isTrailSurrogate(trail)) {
+                    ++x.sourceArrayIndex;
+                    x.c = UCharacter.getCodePoint((char) x.c, trail);
+                    /* this codepage does not map supplementary code points */
+                    /* callback(unassigned) */
+                    cr[0] = CoderResult.unmappableForLength(2);
+                    return false;
+                } else {
+                    /* this is an unmatched lead code unit (1st surrogate) */
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                    return false;
+                }
+            } else {
+                /* no more input */
+                return false;
+            }
+            // return true;
+        }
+
+        private final class SideEffects {
+            int c, sourceArrayIndex, sourceIndex, nextSourceIndex, prevSourceIndex, prevLength;
+            boolean doread = true;
+
+            SideEffects(int c_, int sourceArrayIndex_, int sourceIndex_, int nextSourceIndex_, int prevSourceIndex_,
+                    int prevLength_) {
+                c = c_;
+                sourceArrayIndex = sourceArrayIndex_;
+                sourceIndex = sourceIndex_;
+                nextSourceIndex = nextSourceIndex_;
+                prevSourceIndex = prevSourceIndex_;
+                prevLength = prevLength_;
+            }
+        }
+
+        // function made out of block labeled getTrail in ucnv_MBCSFromUnicodeWithOffsets
+        // assumes input c is lead surrogate
+        private final boolean getTrail(CharBuffer source, ByteBuffer target, int uniMask, SideEffects x,
+                boolean flush, CoderResult[] cr) {
+            if (x.sourceArrayIndex < source.limit()) {
+                /* test the following code unit */
+                char trail = source.get(x.sourceArrayIndex);
+                if (UTF16.isTrailSurrogate(trail)) {
+                    ++x.sourceArrayIndex;
+                    ++x.nextSourceIndex;
+                    /* convert this supplementary code point */
+                    x.c = UCharacter.getCodePoint((char) x.c, trail);
+                    if ((uniMask & UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                        /* BMP-only codepages are stored without stage 1 entries for supplementary code points */
+                        fromUnicodeStatus = x.prevLength; /* save the old state */
+                        /* callback(unassigned) */
+                        x.doread = true;
+                        return unassigned(source, target, null, x, flush, cr);
+                    } else {
+                        x.doread = false;
+                        return true;
+                    }
+                } else {
+                    /* this is an unmatched lead code unit (1st surrogate) */
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                    return false;
+                }
+            } else {
+                /* no more input */
+                return false;
+            }
+        }
+
+        // function made out of block labeled unassigned in ucnv_MBCSFromUnicodeWithOffsets
+        private final boolean unassigned(CharBuffer source, ByteBuffer target, IntBuffer offsets, SideEffects x,
+                boolean flush, CoderResult[] cr) {
+            /* try an extension mapping */
+            int sourceBegin = x.sourceArrayIndex;
+            source.position(x.sourceArrayIndex);
+            x.c = fromU(x.c, source, target, null, x.sourceIndex, x.nextSourceIndex, flush, cr);
+            x.sourceArrayIndex = source.position();
+            x.nextSourceIndex += x.sourceArrayIndex - sourceBegin;
+            x.prevLength = (int) fromUnicodeStatus;
+
+            if (cr[0].isError()) {
+                /* not mappable or buffer overflow */
+                return false;
+            } else {
+                /* a mapping was written to the target, continue */
+
+                /* recalculate the targetCapacity after an extension mapping */
+                // x.targetCapacity=pArgs.targetLimit-x.targetArrayIndex;
+                /* normal end of conversion: prepare for a new character */
+                if (offsets != null) {
+                    x.prevSourceIndex = x.sourceIndex;
+                    x.sourceIndex = x.nextSourceIndex;
+                }
+                return true;
+            }
+        }
+
+        private final class SideEffectsDouble {
+            int c, sourceArrayIndex, sourceIndex, nextSourceIndex;
+            boolean doread = true;
+
+            SideEffectsDouble(int c_, int sourceArrayIndex_, int sourceIndex_, int nextSourceIndex_) {
+                c = c_;
+                sourceArrayIndex = sourceArrayIndex_;
+                sourceIndex = sourceIndex_;
+                nextSourceIndex = nextSourceIndex_;
+            }
+        }
+
+        // function made out of block labeled getTrail in ucnv_MBCSDoubleFromUnicodeWithOffsets
+        // assumes input c is lead surrogate
+        private final boolean getTrailDouble(CharBuffer source, ByteBuffer target, int uniMask,
+                SideEffectsDouble x, boolean flush, CoderResult[] cr) {
+            if (x.sourceArrayIndex < source.limit()) {
+                /* test the following code unit */
+                char trail = source.get(x.sourceArrayIndex);
+                if (UTF16.isTrailSurrogate(trail)) {
+                    ++x.sourceArrayIndex;
+                    ++x.nextSourceIndex;
+                    /* convert this supplementary code point */
+                    x.c = UCharacter.getCodePoint((char) x.c, trail);
+                    if ((uniMask & UConverterConstants.HAS_SUPPLEMENTARY) == 0) {
+                        /* BMP-only codepages are stored without stage 1 entries for supplementary code points */
+                        /* callback(unassigned) */
+                        x.doread = true;
+                        return unassignedDouble(source, target, x, flush, cr);
+                    } else {
+                        x.doread = false;
+                        return true;
+                    }
+                } else {
+                    /* this is an unmatched lead code unit (1st surrogate) */
+                    /* callback(illegal) */
+                    cr[0] = CoderResult.malformedForLength(1);
+                    return false;
+                }
+            } else {
+                /* no more input */
+                return false;
+            }
+        }
+
+        // function made out of block labeled unassigned in ucnv_MBCSDoubleFromUnicodeWithOffsets
+        private final boolean unassignedDouble(CharBuffer source, ByteBuffer target, SideEffectsDouble x,
+                boolean flush, CoderResult[] cr) {
+            /* try an extension mapping */
+            int sourceBegin = x.sourceArrayIndex;
+            source.position(x.sourceArrayIndex);
+            x.c = fromU(x.c, source, target, null, x.sourceIndex, x.nextSourceIndex, flush, cr);
+            x.sourceArrayIndex = source.position();
+            x.nextSourceIndex += x.sourceArrayIndex - sourceBegin;
+
+            if (cr[0].isError()) {
+                /* not mappable or buffer overflow */
+                return false;
+            } else {
+                /* a mapping was written to the target, continue */
+
+                /* recalculate the targetCapacity after an extension mapping */
+                // x.targetCapacity=pArgs.targetLimit-x.targetArrayIndex;
+                /* normal end of conversion: prepare for a new character */
+                x.sourceIndex = x.nextSourceIndex;
+                return true;
+            }
+        }
+
+        /**
+         * Overrides super class method
+         * 
+         * @param encoder
+         * @param source
+         * @param target
+         * @param offsets
+         * @return
+         */
+        protected CoderResult cbFromUWriteSub(CharsetEncoderICU encoder, CharBuffer source, ByteBuffer target,
+                IntBuffer offsets) {
+            CharsetMBCS cs = (CharsetMBCS) encoder.charset();
+            byte[] subchar;
+            int length;
+
+            if (cs.subChar1 != 0
+                    && (cs.sharedData.mbcs.extIndexes != null ? encoder.useSubChar1
+                            : (encoder.invalidUCharBuffer[0] <= 0xff))) {
+                /*
+                 * select subChar1 if it is set (not 0) and the unmappable Unicode code point is up to U+00ff (IBM MBCS
+                 * behavior)
+                 */
+                subchar = new byte[] { cs.subChar1 };
+                length = 1;
+            } else {
+                /* select subChar in all other cases */
+                subchar = cs.subChar;
+                length = cs.subCharLen;
+            }
+
+            /* reset the selector for the next code point */
+            encoder.useSubChar1 = false;
+
+            if (cs.sharedData.mbcs.outputType == MBCS_OUTPUT_2_SISO) {
+                byte[] buffer = new byte[4];
+                int i = 0;
+
+                /* fromUnicodeStatus contains prevLength */
+                switch (length) {
+                case 1:
+                    if (encoder.fromUnicodeStatus == 2) {
+                        /* DBCS mode and SBCS sub char: change to SBCS */
+                        encoder.fromUnicodeStatus = 1;
+                        buffer[i++] = UConverterConstants.SI;
+                    }
+                    buffer[i++] = subchar[0];
+                    break;
+                case 2:
+                    if (encoder.fromUnicodeStatus <= 1) {
+                        /* SBCS mode and DBCS sub char: change to DBCS */
+                        encoder.fromUnicodeStatus = 2;
+                        buffer[i++] = UConverterConstants.SO;
+                    }
+                    buffer[i++] = subchar[0];
+                    buffer[i++] = subchar[1];
+                    break;
+                default:
+                    throw new IllegalArgumentException();
+                }
+
+                subchar = buffer;
+                length = i;
+            }
+            return CharsetEncoderICU.fromUWriteBytes(encoder, subchar, 0, length, target, offsets, source.position());
+        }
+
+        /**
+         * Gets called whenever CharsetEncoder.replaceWith gets called. allowReplacementChanges only allows subChar and
+         * subChar1 to be modified outside construction (since replaceWith is called once during construction).
+         * 
+         * @param replacement
+         *            The replacement for subchar.
+         */
+        protected void implReplaceWith(byte[] replacement) {
+            if (allowReplacementChanges) {
+                CharsetMBCS cs = (CharsetMBCS) this.charset();
+
+                System.arraycopy(replacement, 0, cs.subChar, 0, replacement.length);
+                cs.subCharLen = (byte) replacement.length;
+                cs.subChar1 = 0;
+            }
+        }
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderMBCS(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderMBCS(this);
+    }
+    
+    void MBCSGetFilteredUnicodeSetForUnicode(UConverterSharedData data, UnicodeSet setFillIn, int which, int filter){
+        UConverterMBCSTable mbcsTable;
+        char[] table;
+        char st1,maxStage1, st2;
+        int st3;
+        int c ;
+        
+        mbcsTable = data.mbcs;
+        table = mbcsTable.fromUnicodeTable; 
+        if((mbcsTable.unicodeMask & UConverterConstants.HAS_SUPPLEMENTARY)!=0){
+            maxStage1 = 0x440;
+        }
+        else{
+            maxStage1 = 0x40;
+        }
+        c=0; /* keep track of current code point while enumerating */
+        
+        if(mbcsTable.outputType==MBCS_OUTPUT_1){
+            char stage2, stage3;
+            char minValue;
+            CharBuffer results;
+            results = ByteBuffer.wrap(mbcsTable.fromUnicodeBytes).asCharBuffer();
+                                   
+            if(which==ROUNDTRIP_SET) {
+                /* use only roundtrips */
+                minValue=0xf00;
+            } else {
+                /* use all roundtrip and fallback results */
+                minValue=0x800;
+            }
+            for(st1=0;st1<maxStage1;++st1){
+                st2 = table[st1];
+                if(st2>maxStage1){
+                    stage2 = st2;
+                    for(st2=0; st2<64; ++st2){
+                        st3 = table[stage2 + st2];
+                        if(st3!=0){
+                            /*read the stage 3 block */
+                            stage3 = (char)st3;
+                            do {
+                                if(results.get(stage3++)>=minValue){
+                                     setFillIn.add(c);
+                                }
+                               
+                            }while((++c&0xf) !=0);
+                          } else {
+                            c+= 16; /*empty stage 2 block */
+                        }
+                    }
+                } else {
+                    c+=1024; /* empty stage 2 block */
+                }
+            }
+        } else {
+            int stage2,stage3;
+            byte[] bytes;
+            int st3Multiplier;
+            int value;
+            boolean useFallBack;
+            bytes = mbcsTable.fromUnicodeBytes;
+            useFallBack = (which == ROUNDTRIP_AND_FALLBACK_SET);
+            switch(mbcsTable.outputType) {
+            case MBCS_OUTPUT_3:
+            case MBCS_OUTPUT_4_EUC:
+                st3Multiplier = 3;
+                break;
+            case MBCS_OUTPUT_4:
+                st3Multiplier =4;
+                break;
+            default:
+                st3Multiplier =2;
+                break;
+            }
+            //ByteBuffer buffer = (ByteBuffer)charTobyte(table);
+            
+            for(st1=0;st1<maxStage1;++st1){
+                st2 = table[st1]; 
+                if(st2>(maxStage1>>1)){
+                    stage2 =  st2 ;
+                    for(st2=0;st2<128;++st2){
+                        /*read the stage 3 block */
+                        st3 = table[stage2*2 + st2]<<16;
+                        st3+=table[stage2*2 + ++st2];
+                        if(st3!=0){
+                        //if((st3=table[stage2+st2])!=0){
+                            stage3 = st3Multiplier*16*(int)(st3&UConverterConstants.UNSIGNED_SHORT_MASK);
+                            
+                            /* get the roundtrip flags for the stage 3 block */
+                            st3>>=16;
+                            st3 &= UConverterConstants.UNSIGNED_SHORT_MASK;
+                            switch(filter) {
+                            case UCNV_SET_FILTER_NONE:
+                                do {
+                                    
+                                   if((st3&1)!=0){
+                                        setFillIn.add(c);
+                                        stage3+=st3Multiplier;
+                                   }else if (useFallBack) {
+                                        
+                                        char b =0;
+                                        switch(st3Multiplier) {
+                                        case 4 :
+                                           
+                                            b|= ByteBuffer.wrap(bytes).getChar(stage3++);
+                                           
+                                        case 3 :
+                                            
+                                            b|= ByteBuffer.wrap(bytes).getChar(stage3++);
+                                           
+                                        case 2 :
+                                           
+                                            b|= ByteBuffer.wrap(bytes).getChar(stage3) | ByteBuffer.wrap(bytes).getChar(stage3+1);
+                                            stage3+=2;
+                                        default:
+                                            break;
+                                        }
+                                        if(b!=0) {
+                                            setFillIn.add(c);
+                                        }
+                                    }
+                                    st3>>=1;
+                                }while((++c&0xf)!=0);
+                                break;
+                            case UCNV_SET_FILTER_DBCS_ONLY:
+                                /* Ignore single bytes results (<0x100). */
+                                do {
+                                    if(((st3&1) != 0 || useFallBack) && 
+                                            (UConverterConstants.UNSIGNED_SHORT_MASK & (ByteBuffer.wrap(bytes).getChar(stage3))) >= 0x100){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=2;
+                                }while((++c&0xf) != 0);
+                               break;
+                            case UCNV_SET_FILTER_2022_CN :
+                                /* only add code points that map to CNS 11643 planes 1&2 for non-EXT ISO-2202-CN. */
+                                do {
+                                    if(((st3&1) != 0 || useFallBack) && 
+                                            ((value= (UConverterConstants.UNSIGNED_BYTE_MASK & (ByteBuffer.wrap(bytes).get(stage3))))==0x81 || value==0x82) ){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=3;
+                                }while((++c&0xf)!=0);
+                                break;
+                            case UCNV_SET_FILTER_SJIS:
+                                /* only add code points that map tp Shift-JIS codes corrosponding to JIS X 0280. */
+                                do{
+                                    
+                                    if(((st3&1) != 0 || useFallBack) && (value=(UConverterConstants.UNSIGNED_SHORT_MASK & (ByteBuffer.wrap(bytes).getChar(stage3))))>=0x8140 && value<=0xeffc){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=2;
+                                }while((++c&0xf)!=0);
+                                break;
+                            case UCNV_SET_FILTER_GR94DBCS:
+                                /* only add code points that maps to ISO 2022 GR 94 DBCS codes*/
+                                do {
+                                    if(((st3&1) != 0 || useFallBack) && 
+                                            (UConverterConstants.UNSIGNED_SHORT_MASK & ((value=(UConverterConstants.UNSIGNED_SHORT_MASK & (ByteBuffer.wrap(bytes).getChar(stage3))))- 0xa1a1))<=(0xfefe - 0xa1a1) && 
+                                            (UConverterConstants.UNSIGNED_BYTE_MASK & (value - 0xa1)) <= (0xfe - 0xa1)){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=2;
+                                }while((++c&0xf)!=0);
+                                break;
+                            case UCNV_SET_FILTER_HZ:
+                                /*Only add code points that are suitable for HZ DBCS*/
+                                do {
+                                    if( ((st3&1) != 0 || useFallBack) && 
+                                            (UConverterConstants.UNSIGNED_SHORT_MASK & ((value=(UConverterConstants.UNSIGNED_SHORT_MASK & (ByteBuffer.wrap(bytes).getChar(stage3))))-0xa1a1))<=(0xfdfe - 0xa1a1) &&
+                                            (UConverterConstants.UNSIGNED_BYTE_MASK & (value - 0xa1)) <= (0xfe - 0xa1)){
+                                        setFillIn.add(c);
+                                    }
+                                    st3>>=1;
+                                    stage3+=2;
+                                }while((++c&0xf) != 0);
+                                break;
+                            default:
+                                return;
+                            }
+                        } else {
+                            c+=16; /* empty stage 3 block */
+                        }
+                    }
+                } else {
+                    c+=1024; /*empty stage2 block */
+                }
+            }
+        }
+        extGetUnicodeSet(setFillIn, which, filter, data);
+    }
+   
+    static void extGetUnicodeSetString(ByteBuffer cx,UnicodeSet setFillIn, boolean useFallback, 
+        int minLength, int c, char s[],int length,int sectionIndex){
+        CharBuffer fromUSectionUChar;
+        IntBuffer fromUSectionValues;
+        fromUSectionUChar = (CharBuffer)ARRAY(cx, EXT_FROM_U_UCHARS_INDEX,char.class );
+        fromUSectionValues = (IntBuffer)ARRAY(cx, EXT_FROM_U_VALUES_INDEX,int.class );
+        int fromUSectionUCharIndex = fromUSectionUChar.position()+sectionIndex;
+        int fromUSectionValuesIndex = fromUSectionValues.position()+sectionIndex;
+        int value, i, count;
+        
+        /* read first pair of the section */
+       count = fromUSectionUChar.get(fromUSectionUCharIndex++);
+       value = fromUSectionValues.get(fromUSectionValuesIndex++);
+       if(value!=0 && (FROM_U_IS_ROUNDTRIP(value) || useFallback) && FROM_U_GET_LENGTH(value)>=minLength) {
+           if(c>=0){
+               setFillIn.add(c);
+           } else {
+               String normalizedString=""; // String for composite characters 
+               for(int j=0; j<length;j++){
+                   normalizedString+=s[j];
+               }
+               for(int j=0;j<length;j++){
+                   setFillIn.add(normalizedString);
+               }
+             
+             }
+       }
+       
+       for(i=0; i<count; ++i){
+           s[length] = fromUSectionUChar.get(fromUSectionUCharIndex + i);
+           value = fromUSectionValues.get(fromUSectionValuesIndex + i);
+           
+           if(value==0) {
+               /* no mapping, do nothing */
+           } else if (FROM_U_IS_PARTIAL(value)) {
+               extGetUnicodeSetString( cx, setFillIn, useFallback, minLength, UConverterConstants.U_SENTINEL, s, length+1,
+                       FROM_U_GET_PARTIAL_INDEX(value));
+           } else if ((useFallback ? (value&FROM_U_RESERVED_MASK)==0:((value&(FROM_U_ROUNDTRIP_FLAG|FROM_U_RESERVED_MASK))==FROM_U_ROUNDTRIP_FLAG)) 
+                   && FROM_U_GET_LENGTH(value)>=minLength) {
+               String normalizedString=""; // String for composite characters 
+               for(int j=0; j<(length+1);j++){
+                   normalizedString+=s[j];
+               }
+             setFillIn.add(normalizedString);
+           }
+       }
+        
+    }
+    
+    
+    static void extGetUnicodeSet(UnicodeSet setFillIn, int which, int filter, UConverterSharedData Data){
+        int st1, stage1Length, st2, st3, minLength;
+        int ps2, ps3;
+        
+        CharBuffer stage12, stage3;
+        int value, length;
+        IntBuffer stage3b;
+        boolean useFallback;
+        char s[] = new char[MAX_UCHARS];
+        int c;
+        ByteBuffer cx = Data.mbcs.extIndexes;
+        if(cx == null){
+            return;
+        }
+        stage12 = (CharBuffer)ARRAY(cx, EXT_FROM_U_STAGE_12_INDEX,char.class );
+        stage3 = (CharBuffer)ARRAY(cx, EXT_FROM_U_STAGE_3_INDEX,char.class );
+        stage3b = (IntBuffer)ARRAY(cx, EXT_FROM_U_STAGE_3B_INDEX,int.class );
+        
+        stage1Length = cx.asIntBuffer().get(EXT_FROM_U_STAGE_1_LENGTH);
+        useFallback =(boolean)(which==ROUNDTRIP_AND_FALLBACK_SET);
+        
+        c = 0;
+        if(filter == UCNV_SET_FILTER_2022_CN) {
+            minLength = 3;
+        } else if (Data.mbcs.outputType == MBCS_OUTPUT_DBCS_ONLY || filter != UCNV_SET_FILTER_NONE) {
+            /* DBCS-only, ignore single-byte results */
+            minLength = 2;
+        } else {
+            minLength = 1;
+        }
+        
+        for(st1=0; st1< stage1Length; ++st1){
+            st2 = stage12.get(st1);
+            if(st2>stage1Length) {
+                ps2 = st2;
+                for(st2=0;st2<64;++st2){
+                    st3=((int) stage12.get(ps2+st2))<<STAGE_2_LEFT_SHIFT;
+                    if(st3!= 0){
+                        ps3 = st3;
+                        do {
+                            value = stage3b.get((int)(UConverterConstants.UNSIGNED_SHORT_MASK&stage3.get(ps3++)));
+                            if(value==0){
+                                /* no mapping do nothing */
+                            }else if (FROM_U_IS_PARTIAL(value)){
+                                length = 0;
+                                length=UTF16.append(s, length, c);
+                                extGetUnicodeSetString(cx,setFillIn,useFallback,minLength,c,s,length,(int)FROM_U_GET_PARTIAL_INDEX(value));
+                            } else if ((useFallback ?  (value&FROM_U_RESERVED_MASK)==0 :((value&(FROM_U_ROUNDTRIP_FLAG|FROM_U_RESERVED_MASK))== FROM_U_ROUNDTRIP_FLAG)) && 
+                                    FROM_U_GET_LENGTH(value)>=minLength){
+                                
+                                switch(filter) {
+                                case UCNV_SET_FILTER_2022_CN:
+                                    if(!(FROM_U_GET_LENGTH(value)==3 && FROM_U_GET_DATA(value)<=0x82ffff)){
+                                        continue;
+                                    }
+                                    break;
+                                case UCNV_SET_FILTER_SJIS:
+                                    if(!(FROM_U_GET_LENGTH(value)==2 && (value=FROM_U_GET_DATA(value))>=0x8140 && value<=0xeffc)){
+                                        continue;
+                                    }
+                                    break;
+                                case UCNV_SET_FILTER_GR94DBCS:
+                                    if(!(FROM_U_GET_LENGTH(value)==2 && (UConverterConstants.UNSIGNED_SHORT_MASK & ((value=FROM_U_GET_DATA(value)) - 0xa1a1))<=(0xfefe - 0xa1a1) 
+                                            && (UConverterConstants.UNSIGNED_BYTE_MASK & (value - 0xa1))<= (0xfe - 0xa1))){
+                                        
+                                        continue;
+                                    }
+                                    break;
+                                case UCNV_SET_FILTER_HZ:
+                                    if(!(FROM_U_GET_LENGTH(value)==2 && (UConverterConstants.UNSIGNED_SHORT_MASK & ((value=FROM_U_GET_DATA(value)) - 0xa1a1))<=(0xfdfe - 0xa1a1) 
+                                            && (UConverterConstants.UNSIGNED_BYTE_MASK & (value - 0xa1))<= (0xfe - 0xa1))){
+                                        continue;
+                                    }
+                                    break;
+                                default:
+                                    /*
+                                     * UCNV_SET_FILTER_NONE,
+                                     * or UCNV_SET_FILTER_DBCS_ONLY which is handled via minLength
+                                     */
+                                    break;
+                                }
+                                setFillIn.add(c);
+                              
+                            }
+                        }while((++c&0xf) != 0);
+                      
+                    } else {
+                        c+=16;   /* emplty stage3 block */
+                    }
+                }
+            } else {
+                c+=1024;  /* empty stage 2 block*/
+            }
+        }
+    }
+    
+    void MBCSGetUnicodeSetForUnicode(UConverterSharedData data, UnicodeSet setFillIn, int which){
+        MBCSGetFilteredUnicodeSetForUnicode(data, setFillIn, which, 
+                this.sharedData.mbcs.outputType==MBCS_OUTPUT_DBCS_ONLY ? UCNV_SET_FILTER_DBCS_ONLY : UCNV_SET_FILTER_NONE );
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        if((options & MBCS_OPTION_GB18030)!=0){
+            setFillIn.add(0, 0xd7ff);
+            setFillIn.add(0xe000, 0x10ffff);
+        }
+        else {
+            this.MBCSGetUnicodeSetForUnicode(sharedData, setFillIn, which);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/charset/CharsetProviderICU.java b/src/com/ibm/icu/charset/CharsetProviderICU.java
new file mode 100644
index 0000000..aaed578
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetProviderICU.java
@@ -0,0 +1,332 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.charset;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+import java.nio.charset.spi.CharsetProvider;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import com.ibm.icu.impl.InvalidFormatException;
+
+
+/**
+ * A concrete subclass of CharsetProvider for loading and providing charset converters
+ * in ICU.
+ * @stable ICU 3.6
+ */
+public final class CharsetProviderICU extends CharsetProvider{
+    private static String optionsString = null;
+    private static boolean gettingJavaCanonicalName = false;
+    
+    /**
+     * Default constructor 
+     * @stable ICU 3.6
+     */
+    public CharsetProviderICU() {
+    }
+
+    /**
+     * Constructs a charset for the given charset name. 
+     * Implements the abstract method of super class.
+     * @param charsetName charset name
+     * @return charset objet for the given charset name, null if unsupported
+     * @stable ICU 3.6
+     */
+    public final Charset charsetForName(String charsetName){
+        try{
+            // extract the options from the charset name
+            charsetName = processOptions(charsetName);
+            // get the canonical name
+            String icuCanonicalName = getICUCanonicalName(charsetName);      
+    
+                // create the converter object and return it
+            if(icuCanonicalName==null || icuCanonicalName.length()==0){
+                // Try the original name, may be something added and not in the alias table. 
+                // Will get an unsupported encoding exception if it doesn't work.
+                return getCharset(charsetName);
+            }
+            return getCharset(icuCanonicalName);
+        }catch(UnsupportedCharsetException ex){
+        }catch(IOException ex){
+        }
+        return null;
+    }
+    
+    /**
+     * Constructs a charset for the given ICU conversion table from the specified class path.
+     * Example use: <code>cnv = CharsetProviderICU.charsetForName("myConverter", "com/myCompany/myDataPackage");</code>.
+     * In this example myConverter.cnv would exist in the com/myCompany/myDataPackage Java package.
+     * Conversion tables can be made with ICU4C's makeconv tool.
+     * This function allows you to allows you to load user defined conversion
+     * tables that are outside of ICU's core data.
+     * @param charsetName The name of the charset conversion table.
+     * @param classPath The class path that contain the conversion table.
+     * @return charset object for the given charset name, null if unsupported
+     * @stable ICU 3.8
+     */
+    public final Charset charsetForName(String charsetName, String classPath) {
+        return charsetForName(charsetName, classPath, null);
+    }
+    
+    /**
+     * Constructs a charset for the given ICU conversion table from the specified class path.
+     * This function is similar to {@link #charsetForName(String, String)}.
+     * @param charsetName The name of the charset conversion table.
+     * @param classPath The class path that contain the conversion table.
+     * @param loader the class object from which to load the charset conversion table
+     * @return charset object for the given charset name, null if unsupported
+     * @stable ICU 3.8
+     */
+    public Charset charsetForName(String charsetName, String classPath, ClassLoader loader) {
+        CharsetMBCS cs = null;
+        try {
+             cs = new CharsetMBCS(charsetName, charsetName, new String[0], classPath, loader);
+        } catch (InvalidFormatException e) {
+            // return null;
+        }
+        return cs;
+    }
+    
+    /**
+     * Gets the canonical name of the converter as defined by Java
+     * @param enc converter name
+     * @return canonical name of the converter
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+     public static final String getICUCanonicalName(String enc)
+                                throws UnsupportedCharsetException{
+        String canonicalName = null;
+        String ret = null;
+        try{
+            if(enc!=null){
+                 if((canonicalName = UConverterAlias.getCanonicalName(enc, "MIME"))!=null){
+                    ret = canonicalName;
+                } else if((canonicalName = UConverterAlias.getCanonicalName(enc, "IANA"))!=null){
+                    ret = canonicalName;
+                } else if((canonicalName = UConverterAlias.getAlias(enc, 0))!=null){
+                    /* we have some aliases in the form x-blah .. match those */
+                    ret = canonicalName;
+                }/*else if((canonicalName = UConverterAlias.getCanonicalName(enc, ""))!=null){
+                    ret = canonicalName;
+                }*/else if(enc.indexOf("x-")==0){
+                    /* TODO: Match with getJavaCanonicalName method */
+                    /*
+                    char temp[ UCNV_MAX_CONVERTER_NAME_LENGTH] = {0};
+                    strcpy(temp, encName+2);
+                    */
+                    // Remove the 'x-' and get the ICU canonical name
+                    if ((canonicalName = UConverterAlias.getAlias(enc.substring(2), 0))!=null) {
+                        ret = canonicalName;
+                    } else {
+                        ret = "";
+                    }
+                    
+                }else{
+                    /* unsupported encoding */
+                   ret = "";
+                }
+            }
+            return ret;
+        }catch(IOException ex){
+            throw new UnsupportedCharsetException(enc);
+        } 
+    }
+    private static final Charset getCharset(String icuCanonicalName) throws IOException{
+       String[] aliases = (String[])getAliases(icuCanonicalName);    
+       String canonicalName = getJavaCanonicalName(icuCanonicalName);
+       
+       /* Concat the option string to the icuCanonicalName so that the options can be handled properly
+        * by the actual charset.
+        * Note: getJavaCanonicalName() may eventually call this method so skip the concatenation part
+        * during getJavaCanonicalName() call.
+        */
+       if (gettingJavaCanonicalName) {
+           gettingJavaCanonicalName = false;
+       } else if (optionsString != null) {
+           icuCanonicalName = icuCanonicalName.concat(optionsString);
+           optionsString = null;
+       }
+       
+       return (CharsetICU.getCharset(icuCanonicalName,canonicalName, aliases));
+    }
+    /**
+     * Gets the canonical name of the converter as defined by Java
+     * @param charsetName converter name
+     * @return canonical name of the converter
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    public static String getJavaCanonicalName(String charsetName){
+        /*
+        If a charset listed in the IANA Charset Registry is supported by an implementation 
+        of the Java platform then its canonical name must be the name listed in the registry. 
+        Many charsets are given more than one name in the registry, in which case the registry 
+        identifies one of the names as MIME-preferred. If a charset has more than one registry 
+        name then its canonical name must be the MIME-preferred name and the other names in 
+        the registry must be valid aliases. If a supported charset is not listed in the IANA 
+        registry then its canonical name must begin with one of the strings "X-" or "x-".
+        */
+        if(charsetName==null ){
+            return null;
+        }  
+        try{
+            String cName = null;
+            /* find out the alias with MIME tag */
+            if((cName=UConverterAlias.getStandardName(charsetName, "MIME"))!=null){
+            /* find out the alias with IANA tag */
+            }else if((cName=UConverterAlias.getStandardName(charsetName, "IANA"))!=null){
+            }else {
+                /*  
+                    check to see if an alias already exists with x- prefix, if yes then 
+                    make that the canonical name
+                */
+                int aliasNum = UConverterAlias.countAliases(charsetName);
+                String name;
+                for(int i=0;i<aliasNum;i++){
+                    name = UConverterAlias.getAlias(charsetName, i);
+                    if(name!=null && name.indexOf("x-")==0){
+                        cName = name;
+                        break;
+                    }
+                }
+                /* last resort just append x- to any of the alias and 
+                make it the canonical name */
+                if((cName==null || cName.length()==0)){
+                    name = UConverterAlias.getStandardName(charsetName, "UTR22");
+                    if(name==null && charsetName.indexOf(",")!=-1){
+                        name = UConverterAlias.getAlias(charsetName, 1);
+                    }
+                    /* if there is no UTR22 canonical name .. then just return itself*/
+                    if(name==null){
+                        name = charsetName;
+                    }
+                    cName = "x-"+ name;
+                }
+            }
+            /* After getting the java canonical name from ICU alias table, get the
+             * java canonical name from the current JDK. This is neccessary because
+             * different versions of the JVM (Sun and IBM) may have a different
+             * canonical name then the one given by ICU. So the java canonical name
+             * will depend on the current JVM.  Since java cannot use the ICU canonical 
+             * we have to try to use a java compatible name.
+             */
+            if (cName != null) {
+                gettingJavaCanonicalName = true;
+                if (Charset.isSupported(cName)) {
+                    cName = Charset.forName(cName).name();
+                }
+            }
+            return cName;
+        }catch (IOException ex){
+            
+        }
+        return null;
+     }
+
+    /** 
+     * Gets the aliases associated with the converter name
+     * @param encName converter name
+     * @return converter names as elements in an object array
+     * @internal ICU 3.6
+     */
+    private static final String[] getAliases(String encName)throws IOException{
+        String[] ret = null;
+        int aliasNum = 0;
+        int i=0;
+        int j=0;
+        String aliasArray[/*50*/] = new String[50];
+    
+        if(encName != null){
+            aliasNum = UConverterAlias.countAliases(encName);
+            for(i=0,j=0;i<aliasNum;i++){
+                String name = UConverterAlias.getAlias(encName,i);
+                if(name.indexOf('+')==-1 && name.indexOf(',')==-1){
+                    aliasArray[j++]= name;
+                }
+            }
+            ret = new String[j];
+            for(;--j>=0;) {
+                ret[j] = aliasArray[j];
+            }
+                        
+        }
+        return (ret);
+    
+    }
+
+    private static final void putCharsets(Map map){
+        int num = UConverterAlias.countAvailable();
+        for(int i=0;i<num;i++) {
+            String name = UConverterAlias.getAvailableName(i);
+            try {
+                Charset cs =  getCharset(name);
+                map.put(cs, getJavaCanonicalName(name));
+            }catch(UnsupportedCharsetException ex){
+            }catch (IOException e) {
+            }
+            // add only charsets that can be created!
+        }
+    }
+
+    /**
+     * Returns an iterator for the available charsets.
+     * Implements the abstract method of super class.
+     * @return Iterator the charset name iterator
+     * @stable ICU 3.6
+     */
+    public final Iterator charsets(){
+        HashMap map = new HashMap();
+        putCharsets(map);
+        return map.keySet().iterator();
+    }
+    
+    /**
+     * Gets the canonical names of available converters 
+     * @return Object[] names as an object array
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+     public static final Object[] getAvailableNames(){
+        HashMap map = new HashMap();
+        putCharsets(map);
+        return map.values().toArray();
+    }
+     
+    /**
+     * Return all names available
+     * @return String[] an arrya of all available names
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+     public static final String[] getAllNames(){
+        int num = UConverterAlias.countAvailable();
+        String[] names = new String[num];
+        for(int i=0;i<num;i++) {
+            names[i] = UConverterAlias.getAvailableName(i);
+        }
+        return names;
+    }
+    
+    private static final String processOptions(String charsetName) {
+        if (charsetName.indexOf(UConverterConstants.OPTION_SWAP_LFNL_STRING) > -1) {
+            /* Remove and save the swap lfnl option string portion of the charset name. */
+            optionsString = UConverterConstants.OPTION_SWAP_LFNL_STRING;
+            
+            charsetName = charsetName.substring(0, charsetName.indexOf(UConverterConstants.OPTION_SWAP_LFNL_STRING));
+        }
+        
+        return charsetName;
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetSCSU.java b/src/com/ibm/icu/charset/CharsetSCSU.java
new file mode 100644
index 0000000..aeb4bd4
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetSCSU.java
@@ -0,0 +1,1281 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * @author krajwade
+ *
+ */
+class CharsetSCSU extends CharsetICU{
+    /* SCSU definitions --------------------------------------------------------- */
+
+    /* SCSU command byte values */
+    //enum {
+    private static final short SQ0=0x01; /* Quote from window pair 0 */
+    private static final short SQ7=0x08; /* Quote from window pair 7 */
+    private static final short SDX=0x0B; /* Define a window as extended */
+    //private static final short Srs=0x0C; /* reserved */
+    private static final short SQU=0x0E; /* Quote a single Unicode character */
+    private static final short SCU=0x0F; /* Change to Unicode mode */
+    private static final short SC0=0x10; /* Select window 0 */
+    private static final short SC7=0x17; /* Select window 7 */
+    private static final short SD0=0x18; /* Define and select window 0 */
+    //private static final short SD7=0x1F; /* Define and select window 7 */
+    
+    private static final short UC0=0xE0; /* Select window 0 */
+    private static final short UC7=0xE7; /* Select window 7 */
+    private static final short UD0=0xE8; /* Define and select window 0 */
+    private static final short UD7=0xEF; /* Define and select window 7 */
+    private static final short UQU=0xF0; /* Quote a single Unicode character */
+    private static final short UDX=0xF1; /* Define a Window as extended */
+    private static final short Urs=0xF2;  /* reserved */
+   // };
+   
+  //  enum {
+        /*
+         * Unicode code points from 3400 to E000 are not adressible by
+         * dynamic window, since in these areas no short run alphabets are
+         * found. Therefore add gapOffset to all values from gapThreshold.
+         */
+    private static final int gapThreshold=0x68;
+    private static final int gapOffset = 0xAC00 ;
+    /* values between reservedStart and fixedThreshold are reserved */
+    private static final int reservedStart=0xA8;
+    /* use table of predefined fixed offsets for values from fixedThreshold */
+    private static final int fixedThreshold=0xF;
+    //};
+    
+    protected byte[] fromUSubstitution = new byte[]{(byte)0x0E,(byte)0xFF, (byte)0xFD};
+    
+    /* constant offsets for the 8 static windows */
+    private static final int staticOffsets[]={
+        0x0000, /* ASCII for quoted tags */
+        0x0080, /* Latin - 1 Supplement (for access to punctuation) */
+        0x0100, /* Latin Extended-A */
+        0x0300, /* Combining Diacritical Marks */
+        0x2000, /* General Punctuation */
+        0x2080, /* Currency Symbols */
+        0x2100, /* Letterlike Symbols and Number Forms */
+        0x3000  /* CJK Symbols and punctuation */
+    };
+
+    /* initial offsets for the 8 dynamic (sliding) windows */
+   private static final int initialDynamicOffsets[]={
+        0x0080, /* Latin-1 */
+        0x00C0, /* Latin Extended A */
+        0x0400, /* Cyrillic */
+        0x0600, /* Arabic */
+        0x0900, /* Devanagari */
+        0x3040, /* Hiragana */
+        0x30A0, /* Katakana */
+        0xFF00  /* Fullwidth ASCII */
+    };
+
+    /* Table of fixed predefined Offsets */
+    private static final int fixedOffsets[]={
+        /* 0xF9 */ 0x00C0, /* Latin-1 Letters + half of Latin Extended A */
+        /* 0xFA */ 0x0250, /* IPA extensions */
+        /* 0xFB */ 0x0370, /* Greek */
+        /* 0xFC */ 0x0530, /* Armenian */
+        /* 0xFD */ 0x3040, /* Hiragana */
+        /* 0xFE */ 0x30A0, /* Katakana */
+        /* 0xFF */ 0xFF60  /* Halfwidth Katakana */
+    };
+
+    /* state values */
+    //enum {
+    private static final int readCommand=0;
+    private static final int quotePairOne=1;
+    private static final int quotePairTwo=2;
+    private static final int quoteOne=3;
+    private static final int definePairOne=4;
+    private static final int definePairTwo=5;
+    private static final int defineOne=6;
+  //  };
+       
+    private final class SCSUData{   
+        /* dynamic window offsets, intitialize to default values from initialDynamicOffsets */
+        int toUDynamicOffsets[] = new int[8] ;
+        int fromUDynamicOffsets[] = new int[8] ; 
+
+        /* state machine state - toUnicode */
+        boolean toUIsSingleByteMode;
+        short toUState;
+        byte toUQuoteWindow, toUDynamicWindow;
+        short toUByteOne;
+        short toUPadding[];
+
+        /* state machine state - fromUnicode */
+        boolean fromUIsSingleByteMode;
+        byte fromUDynamicWindow;
+
+        /*
+         * windowUse[] keeps track of the use of the dynamic windows:
+         * At nextWindowUseIndex there is the least recently used window,
+         * and the following windows (in a wrapping manner) are more and more
+         * recently used.
+         * At nextWindowUseIndex-1 there is the most recently used window.
+         */
+        byte locale;
+        byte nextWindowUseIndex;
+        byte windowUse[] = new byte[8];
+        
+        SCSUData(){
+            initialize();
+        }
+        
+        void initialize(){
+            for(int i=0;i<8;i++){
+                this.toUDynamicOffsets[i] = initialDynamicOffsets[i];
+            }
+            this.toUIsSingleByteMode = true;
+            this.toUState = readCommand;
+            this.toUQuoteWindow = 0;
+            this.toUDynamicWindow = 0;
+            this.toUByteOne = 0;
+            this.fromUIsSingleByteMode = true;
+            this.fromUDynamicWindow = 0;
+            for(int i=0;i<8;i++){
+                this.fromUDynamicOffsets[i] = initialDynamicOffsets[i];
+            }
+            this.nextWindowUseIndex = 0; 
+            switch(this.locale){
+                case l_ja:
+                    for(int i=0;i<8;i++){
+                        this.windowUse[i] = initialWindowUse_ja[i];
+                    }
+                    break;
+                default:
+                    for(int i=0;i<8;i++){
+                        this.windowUse[i] = initialWindowUse[i];
+                    }
+                    
+            }
+        }
+    }
+    
+    static final byte initialWindowUse[]={ 7, 0, 3, 2, 4, 5, 6, 1 };
+    static final byte initialWindowUse_ja[]={ 3, 2, 4, 1, 0, 7, 5, 6 };
+
+    //enum {
+    //private static final int lGeneric = 0;
+    private static final int l_ja = 1;
+    //};
+    
+    private SCSUData extraInfo = null; 
+    
+    public CharsetSCSU(String icuCanonicalName, String javaCanonicalName, String[] aliases){
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar = 3; 
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+        extraInfo = new SCSUData();
+    }
+    
+    class CharsetDecoderSCSU extends CharsetDecoderICU {       
+        /* label values for supporting behavior similar to goto in C */
+        private static final int FastSingle=0;
+        private static final int SingleByteMode=1;
+        private static final int EndLoop=2;
+        
+        /* Mode Type */
+        private static final int ByteMode = 0;
+        private static final int UnicodeMode =1;       
+        
+        public CharsetDecoderSCSU(CharsetICU cs) {
+            super(cs);
+            implReset();
+        }
+        
+        //private SCSUData data ;
+        protected void implReset(){
+            super.implReset();
+            toULength = 0;
+            extraInfo.initialize();
+        }
+        
+        short b;
+        
+        //Get the state machine state 
+        private boolean isSingleByteMode ;
+        private short state ;
+        private byte quoteWindow ;
+        private byte dynamicWindow ;
+        private short byteOne;
+        
+        
+        //sourceIndex=-1 if the current character began in the previous buffer
+        private int sourceIndex  ;
+        private int nextSourceIndex ;
+        
+        CoderResult cr;
+        SCSUData data ;
+        private boolean LabelLoop;// used to break the while loop
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush){
+            data = extraInfo;
+            
+            //Get the state machine state 
+            isSingleByteMode = data.toUIsSingleByteMode;
+            state = data.toUState;
+            quoteWindow = data.toUQuoteWindow;
+            dynamicWindow = data.toUDynamicWindow;
+            byteOne = data.toUByteOne;
+            
+            LabelLoop = true;
+            
+            //sourceIndex=-1 if the current character began in the previous buffer
+            sourceIndex = data.toUState == readCommand ? 0: -1 ;
+            nextSourceIndex = 0;
+            
+            cr = CoderResult.UNDERFLOW;
+            int labelType = 0;
+            while(LabelLoop){
+                if(isSingleByteMode){
+                    switch(labelType){
+                        case FastSingle:
+                            /*fast path for single-byte mode*/
+                            labelType = fastSingle(source, target, offsets, ByteMode);
+                            break;
+                        case SingleByteMode:
+                            /* normal state machine for single-byte mode, minus handling for what fastSingleCovers */
+                            labelType = singleByteMode(source, target, offsets, ByteMode);
+                            break;
+                        case EndLoop:
+                            endLoop(source, target, offsets);
+                            break;
+                    }
+                }else{
+                    switch(labelType){
+                        case FastSingle:
+                            /*fast path for single-byte mode*/
+                            labelType = fastSingle(source, target, offsets, UnicodeMode);
+                            break;
+                        case SingleByteMode:
+                            /* normal state machine for single-byte mode, minus handling for what fastSingleCovers */
+                            labelType = singleByteMode(source, target, offsets, UnicodeMode);
+                            break;
+                        case EndLoop:
+                            endLoop(source, target, offsets);
+                            break;
+                    }
+                    //LabelLoop = false;
+                }
+            }
+            return cr;
+        }
+        
+        private int fastSingle(ByteBuffer source, CharBuffer target, IntBuffer offsets, int modeType){
+            int label = 0;
+            if(modeType==ByteMode){
+                
+                if(state==readCommand){
+                    while(source.hasRemaining() && target.hasRemaining() && (b=(short)(source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK)) >= 0x20){
+                        source.position(source.position()+1);
+                        ++nextSourceIndex;
+                        if(b <= 0x7f){
+                            /*Write US graphic character or DEL*/
+                            target.put((char)b);
+                            if(offsets != null){
+                                offsets.put(sourceIndex);
+                            }
+                        }else{
+                            /*Write from dynamic window*/
+                            int c = data.toUDynamicOffsets[dynamicWindow] + (b&0x7f);
+                            if(c <= 0xffff){
+                                target.put((char)c);
+                                if(offsets != null){
+                                    offsets.put(sourceIndex);
+                                }
+                            }else{
+                                /*Output surrogate pair */
+                                target.put((char)(0xd7c0 + (c>>10)));
+                                if(target.hasRemaining()){
+                                    target.put((char)(0xdc00 | (c&0x3ff)));
+                                    if(offsets != null){
+                                        offsets.put(sourceIndex);
+                                        offsets.put(sourceIndex);
+                                    }
+                                }else{
+                                    /* target overflow */
+                                    if(offsets != null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                    charErrorBufferArray[0] = (char)(0xdc00 | (c&0x3ff));
+                                    charErrorBufferLength = 1;
+                                    label = EndLoop;
+                                    cr = CoderResult.OVERFLOW;
+                                    LabelLoop = false;
+                                    return label;
+                                }
+                            }
+                        }
+                        sourceIndex = nextSourceIndex;
+                    }
+                   // label = SingleByteMode;
+                }
+            }else if(modeType==UnicodeMode){
+                /* fast path for unicode mode */
+                if(state == readCommand){
+                    while((source.position()+1)<source.limit() && target.hasRemaining() && (((b=source.get(source.position()))-UC0)&UConverterConstants.UNSIGNED_BYTE_MASK)>(Urs-UC0)){
+                        target.put((char)((b<<8)|(source.get(source.position()+1)&UConverterConstants.UNSIGNED_BYTE_MASK)));
+                        if(offsets != null){
+                            offsets.put(sourceIndex);
+                        }
+                        sourceIndex = nextSourceIndex;
+                        nextSourceIndex+=2;
+                        source.position(source.position()+2);
+                    }
+                }
+            }
+            label = SingleByteMode;
+            return label;
+        }
+        
+        private int singleByteMode(ByteBuffer source, CharBuffer target, IntBuffer offsets, int modeType){
+            int label = SingleByteMode;
+            if(modeType == ByteMode){
+                while(source.hasRemaining()){
+                    if(!target.hasRemaining()){
+                        cr = CoderResult.OVERFLOW;
+                        LabelLoop = false;
+                        return label;
+                     }
+                    b = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                    ++nextSourceIndex;
+                    switch(state){
+                    case readCommand:
+                        /*redundant conditions are commented out */
+                        if(((1L<<b)&0x2601)!=0){
+                            target.put((char)b);
+                            if(offsets != null){
+                                offsets.put(sourceIndex);
+                            }
+                            sourceIndex = nextSourceIndex;
+                            label = FastSingle;
+                            return label;
+                        }else if(SC0 <= b){
+                            if(b<=SC7){
+                                dynamicWindow = (byte)(b-SC0);
+                                sourceIndex = nextSourceIndex;
+                                label = FastSingle;
+                                return label;
+                            }else /* if(SD0<=b && b<=SQ7)*/{
+                                dynamicWindow = (byte)(b - SD0);
+                                state = defineOne;
+                            }
+                        }else if(/* SQ0<=b &&*/b <= SQ7){
+                            quoteWindow = (byte)(b - SQ0);
+                            state = quoteOne;
+                        }else if(b==SDX){
+                            state = definePairOne;
+                        }else if(b==SQU){
+                            state = quotePairOne;
+                        }else if(b==SCU){
+                            sourceIndex = nextSourceIndex;
+                            isSingleByteMode = false;
+                            label = FastSingle;
+                            return label;
+                        }else{
+                            /*callback (illegal)*/
+                            cr = CoderResult.malformedForLength(1);
+                            toUBytesArray[0] = (byte)b;
+                            toULength =1;
+                            label = EndLoop;
+                            return label;
+                        }
+                        
+                        /* Store the first byte of a multibyte sequence in toUByte[] */
+                        toUBytesArray[0] = (byte)b;
+                        toULength = 1;
+                        break;
+                    case quotePairOne:
+                        byteOne = b;
+                        toUBytesArray[1] = (byte)b;
+                        toULength = 2;
+                        state = quotePairTwo;
+                        break;
+                    case quotePairTwo:
+                        target.put((char)((byteOne<< 8) | b));
+                        if(offsets != null){
+                            offsets.put(sourceIndex);
+                        }
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    case quoteOne:
+                        if(b<0x80){
+                            /* all static offsets are in the BMP */
+                            target.put((char)(staticOffsets[quoteWindow] + b));
+                            if(offsets != null){
+                                offsets.put(sourceIndex);
+                            }
+                        }else {
+                            /*write from dynamic window */
+                            int c = data.toUDynamicOffsets[quoteWindow] + (b&0x7f);
+                            if(c<=0xffff){
+                                target.put((char)c);
+                                if(offsets != null){
+                                    offsets.put(sourceIndex);
+                                }
+                            }else {
+                                /* output surrogate pair */
+                                target.put((char)(0xd7c0+(c>>10)));
+                                if(target.hasRemaining()){
+                                    target.put((char)(0xdc00 | (c&0x3ff)));
+                                    if(offsets != null){
+                                        offsets.put(sourceIndex);
+                                        offsets.put(sourceIndex);
+                                    }
+                                }else {
+                                    /* target overflow */
+                                    if(offsets != null){
+                                        offsets.put(sourceIndex);
+                                    }
+                                    charErrorBufferArray[0] = (char)(0xdc00 | (c&0x3ff));
+                                    charErrorBufferLength = 1;
+                                    label = EndLoop;
+                                    cr = CoderResult.OVERFLOW;
+                                    LabelLoop = false;
+                                    return label;
+                                }
+                            }
+                        }
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    case definePairOne:
+                        dynamicWindow = (byte)((b>>5)&7);
+                        byteOne = (byte)(b&0x1f);
+                        toUBytesArray[1] = (byte)b;
+                        toULength = 2;
+                        state = definePairTwo;
+                        break;
+                    case definePairTwo:
+                        data.toUDynamicOffsets[dynamicWindow] = 0x10000 + (byteOne<<15L | b<<7L);
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    case defineOne:
+                        if(b==0){
+                            /*callback (illegal)*/
+                            toUBytesArray[1] = (byte)b;
+                            toULength =2;
+                            label = EndLoop;
+                            return label;
+                        }else if(b<gapThreshold){
+                            data.toUDynamicOffsets[dynamicWindow] = b<<7L;
+                        }else if((byte)(b - gapThreshold)<(reservedStart - gapThreshold)){
+                            data.toUDynamicOffsets[dynamicWindow] = (b<<7L) + gapOffset;
+                        }else if(b>=fixedThreshold){
+                            data.toUDynamicOffsets[dynamicWindow] = fixedOffsets[b-fixedThreshold];
+                        }else{
+                            /*callback (illegal)*/
+                            toUBytesArray[1] = (byte)b;
+                            toULength =2;
+                            label = EndLoop;
+                            return label;
+                        }
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    }
+                }
+                
+            }else if(modeType==UnicodeMode){
+                while(source.hasRemaining()){
+                    if(!target.hasRemaining()){
+                        cr = CoderResult.OVERFLOW;
+                        LabelLoop = false;
+                        return label;
+                    }
+                    b = source.get();
+                    ++nextSourceIndex;
+                    switch(state){
+                    case readCommand:
+                        if((byte)(b -UC0)>(Urs - UC0)){
+                            byteOne = b;
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = quotePairOne;
+                        }else if((b&UConverterConstants.UNSIGNED_BYTE_MASK) <= UC7){
+                            dynamicWindow = (byte)(b - UC0);
+                            sourceIndex = nextSourceIndex;
+                            isSingleByteMode = true;
+                            label = FastSingle;
+                            return label;
+                        }else if((b&UConverterConstants.UNSIGNED_BYTE_MASK) <= UD7){
+                            dynamicWindow = (byte)(b - UD0);
+                            isSingleByteMode = true;
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = defineOne;
+                            label = SingleByteMode;
+                            return label;
+                        }else if((b&UConverterConstants.UNSIGNED_BYTE_MASK) == UDX){
+                            isSingleByteMode = true;
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = definePairOne;
+                            label = SingleByteMode;
+                            return label;
+                        }else if((b&UConverterConstants.UNSIGNED_BYTE_MASK) == UQU){
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = quotePairOne;
+                        }else {
+                            /* callback (illegal)*/
+                            cr = CoderResult.malformedForLength(1);
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            label = EndLoop;
+                            return label;
+                        }
+                        break;
+                    case quotePairOne:
+                        byteOne = b;
+                        toUBytesArray[1] = (byte)b;
+                        toULength = 2;
+                        state = quotePairTwo;
+                        break;
+                    case quotePairTwo:
+                        target.put((char)((byteOne<<8) | b));
+                        if(offsets != null){
+                            offsets.put(sourceIndex);
+                        }
+                        sourceIndex = nextSourceIndex;
+                        state = readCommand;
+                        label = FastSingle;
+                        return label;
+                    }
+                }
+            }
+            label = EndLoop;
+            return label;
+        }
+        
+        private void endLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets){
+            if(cr==CoderResult.OVERFLOW){
+                state = readCommand;
+            }else if(state == readCommand){
+                toULength = 0;
+            }
+            data.toUIsSingleByteMode = isSingleByteMode;
+            data.toUState = state;
+            data.toUQuoteWindow = quoteWindow;
+            data.toUDynamicWindow = dynamicWindow;
+            data.toUByteOne = byteOne;
+            LabelLoop = false;
+        }
+    }
+    
+    class CharsetEncoderSCSU extends CharsetEncoderICU{
+        public CharsetEncoderSCSU(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+        
+        //private SCSUData data;
+        protected void implReset() {
+            super.implReset();
+            extraInfo.initialize();
+        }
+        
+        /* label values for supporting behavior similar to goto in C */
+        private static final int Loop=0; 
+        private static final int GetTrailUnicode=1;
+        private static final int OutputBytes=2;
+        private static final int EndLoop =3;
+        
+        private int delta;
+        private int length;
+        
+        ///variables of compression heuristics
+        private int offset;
+        private char lead, trail;
+        private int code;
+        private byte window;
+        
+        //Get the state machine state 
+        private boolean isSingleByteMode;
+        private byte dynamicWindow ;
+        private int currentOffset;
+        int c;
+        
+        SCSUData data ;
+        
+        //sourceIndex=-1 if the current character began in the previous buffer
+        private int sourceIndex ;
+        private int nextSourceIndex;
+        private int targetCapacity;
+        
+        private boolean LabelLoop;//used to break the while loop
+        private boolean AfterGetTrail;// its value is set to true in order to ignore the code before getTrailSingle:
+        private boolean AfterGetTrailUnicode;// is value is set to true in order to ignore the code before getTrailUnicode:
+        
+        CoderResult cr;
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            data = extraInfo;
+            cr = CoderResult.UNDERFLOW;
+            
+            //Get the state machine state 
+            isSingleByteMode = data.fromUIsSingleByteMode;
+            dynamicWindow = data.fromUDynamicWindow;
+            currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+            c = fromUChar32;
+            
+            sourceIndex = c== 0 ? 0: -1 ;
+            nextSourceIndex = 0;
+                        
+            
+            targetCapacity = target.limit()-target.position();
+            
+            //sourceIndex=-1 if the current character began in the previous buffer
+            sourceIndex = c== 0 ? 0: -1 ;
+            nextSourceIndex = 0;
+            
+            int labelType = Loop; // set to Loop so that the code starts from loop:
+            LabelLoop = true; 
+            AfterGetTrail = false; 
+            AfterGetTrailUnicode = false; 
+            
+            while(LabelLoop){
+                switch(labelType){
+                case Loop:
+                    labelType = loop(source, target, offsets);
+                    break;
+                case GetTrailUnicode:
+                    labelType = getTrailUnicode(source, target, offsets);
+                    break;
+                case OutputBytes:
+                    labelType = outputBytes(source, target, offsets);
+                    break;
+                case EndLoop:
+                    endLoop(source, target, offsets);
+                    break;
+                }
+            }
+            return cr;
+        }
+        
+        private byte getWindow(int[] offsets){
+            int i;
+            for (i=0;i<8;i++){
+                if(((c-offsets[i]) & UConverterConstants.UNSIGNED_INT_MASK) <= 0x7f){
+                    return (byte)i;
+                }
+            }
+            return -1;
+        }
+        
+        private boolean isInOffsetWindowOrDirect(int offsetValue, int a){
+            return (boolean)((a & UConverterConstants.UNSIGNED_INT_MASK)<=(offsetValue & UConverterConstants.UNSIGNED_INT_MASK)+0x7f & 
+                    ((a & UConverterConstants.UNSIGNED_INT_MASK)>=(offsetValue & UConverterConstants.UNSIGNED_INT_MASK) || 
+                            ((a & UConverterConstants.UNSIGNED_INT_MASK)<=0x7f && ((a & UConverterConstants.UNSIGNED_INT_MASK)>=0x20 
+                                    || ((1L<<(a & UConverterConstants.UNSIGNED_INT_MASK))&0x2601)!=0))));
+        }
+        
+        private byte getNextDynamicWindow(){
+            byte windowValue = data.windowUse[data.nextWindowUseIndex];
+            if(++data.nextWindowUseIndex==8){
+                data.nextWindowUseIndex=0;
+            }
+            return windowValue;
+        }
+        
+        private void useDynamicWindow(byte windowValue){
+            /*first find the index of the window*/
+            int i,j;
+            i = data.nextWindowUseIndex;
+            do{
+                if(--i<0){
+                    i=7;
+                }
+            }while(data.windowUse[i]!=windowValue);
+            
+            /*now copy each window[i+1] to [i]*/
+            j= i+1;
+            if(j==8){
+                j=0;
+            }
+            while(j!=data.nextWindowUseIndex){
+                data.windowUse[i] = data.windowUse[j];
+                i=j;
+                if(++j==8){
+                    j=0;
+                }
+            }
+            
+            /*finally, set the window into the most recently used index*/
+            data.windowUse[i]= windowValue;
+        }
+        
+        
+       private int getDynamicOffset(){
+            int i;
+            for(i=0;i<7;++i){
+                if(((c-fixedOffsets[i])&UConverterConstants.UNSIGNED_INT_MASK)<=0x7f){
+                    offset = fixedOffsets[i];
+                    return 0xf9+i;
+                }
+            }
+            if((c&UConverterConstants.UNSIGNED_INT_MASK)<0x80){
+                /*No dynamic window for US-ASCII*/
+                return -1;
+            }else if((c&UConverterConstants.UNSIGNED_INT_MASK)<0x3400 || ((c-0x10000)&UConverterConstants.UNSIGNED_INT_MASK)<(0x14000-0x10000) || 
+                    ((c-0x1d000)&UConverterConstants.UNSIGNED_INT_MASK)<=(0x1ffff-0x1d000)){
+                /*This character is in the code range for a "small", i.e, reasonably windowable, script*/
+                offset = c&0x7fffff80;
+                return (int)(c>>7);
+            }else if(0xe000<=(c&UConverterConstants.UNSIGNED_INT_MASK) && (c&UConverterConstants.UNSIGNED_INT_MASK)!=0xfeff && (c&UConverterConstants.UNSIGNED_INT_MASK) < 0xfff0){
+                /*for these characters we need to take the gapOffset into account*/
+                offset=(c)&0x7fffff80;
+                return (int)((c-gapOffset)>>7);
+            }else{
+                return -1;
+            }
+        }
+        
+        private int loop(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            int label = 0;
+            if(isSingleByteMode){
+                if(c!=0 && targetCapacity>0 && !AfterGetTrail){
+                    label = getTrail(source, target, offsets);
+                    return label;
+                }
+                /*state machine for single byte mode*/
+                while(AfterGetTrail || source.hasRemaining()){
+                    if(targetCapacity<=0 && !AfterGetTrail){
+                        /*target is full*/
+                        cr = CoderResult.OVERFLOW;
+                        label = EndLoop;
+                        return label;
+                    }
+                    if(!AfterGetTrail){
+                        c = source.get();
+                        ++nextSourceIndex;
+                        
+                    }
+                    if(((c -0x20)&UConverterConstants.UNSIGNED_INT_MASK)<=0x5f && !AfterGetTrail){
+                        /*pass US-ASCII graphic character through*/
+                        target.put((byte)c);
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                        --targetCapacity;
+                    }else if((c & UConverterConstants.UNSIGNED_INT_MASK)<0x20 && !AfterGetTrail){
+                        if(((1L<<(c & UConverterConstants.UNSIGNED_INT_MASK))&0x2601)!=0){
+                            /*CR/LF/TAB/NUL*/
+                            target.put((byte)c);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                            --targetCapacity;
+                        } else {
+                            /*quote c0 control character*/
+                            c|=SQ0<<8;
+                            length = 2;
+                            label = OutputBytes;
+                            return label;
+                        }
+                    } else if(((delta=(c-currentOffset))&UConverterConstants.UNSIGNED_INT_MASK)<=0x7f && !AfterGetTrail){
+                        /*use the current dynamic window*/
+                        target.put((byte)(delta|0x80));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                        --targetCapacity;
+                    } else if(AfterGetTrail || UTF16.isSurrogate((char)c)){
+                        if(!AfterGetTrail){
+                            if(UTF16.isLeadSurrogate((char)c)){
+                                label = getTrail(source, target, offsets);
+                                if(label==EndLoop){
+                                    return label;
+                                }
+                            } else {
+                                /*this is unmatched lead code unit (2nd Surrogate)*/
+                                /*callback(illegal)*/
+                                cr = CoderResult.malformedForLength(1);
+                                label = EndLoop;
+                                return label;
+                            }
+                        }
+                                                
+                        
+                        if(AfterGetTrail){
+                            AfterGetTrail = false;
+                        }
+                        
+                        /*Compress supplementary character U+10000...U+10ffff */
+                        if(((delta=(c-currentOffset))&UConverterConstants.UNSIGNED_INT_MASK)<=0x7f){
+                            /*use the current dynamic window*/
+                            target.put((byte)(delta|0x80));
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                            --targetCapacity;
+                        } else if((window=getWindow(data.fromUDynamicOffsets))>=0){
+                            /*there is a dynamic window that contains this character, change to it*/
+                            dynamicWindow = window;
+                            currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+                            useDynamicWindow(dynamicWindow);
+                            c = (((int)(SC0+dynamicWindow))<<8 | (c-currentOffset)|0x80);
+                            length = 2;
+                            label  = OutputBytes;
+                            return label;
+                        } else if((code=getDynamicOffset())>=0){
+                            /*might check if there are come character in this window to come */
+                            /*define an extended window with this character*/
+                            code-=0x200;
+                            dynamicWindow=getNextDynamicWindow();
+                            currentOffset = data.fromUDynamicOffsets[dynamicWindow]=offset;
+                            useDynamicWindow(dynamicWindow);
+                            c = ((int)(SDX<<24) | (int)(dynamicWindow<<21)|
+                                 (int)(code<<8)| (c- currentOffset) |0x80  );
+                           // c = (((SDX)<<25) | (dynamicWindow<<21)|
+                             //           (code<<8)| (c- currentOffset) |0x80  );
+                            length = 4;
+                            label = OutputBytes;
+                            return label;
+                        } else {
+                            /*change to unicode mode and output this (lead, trail) pair*/
+                            isSingleByteMode = false;
+                            target.put((byte)SCU);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                            --targetCapacity;
+                            c = ((int)(lead<<16))|trail;
+                            length = 4;
+                            label = OutputBytes;
+                            return label;
+                        }
+                    } else if((c&UConverterConstants.UNSIGNED_INT_MASK)<0xa0){
+                        /*quote C1 control character*/
+                        c = (c&0x7f) | (SQ0+1)<<8; /*SQ0+1 == SQ1*/
+                        length = 2;
+                        label = OutputBytes;
+                        return label;
+                    } else if((c&UConverterConstants.UNSIGNED_INT_MASK)==0xfeff || (c&UConverterConstants.UNSIGNED_INT_MASK)>= 0xfff0){
+                        /*quote signature character = byte order mark and specials*/
+                        c |= SQU<<16;
+                        length = 3;
+                        label = OutputBytes;
+                        return label;
+                    } else {
+                        /*compress all other BMP characters*/
+                        if((window=getWindow(data.fromUDynamicOffsets))>=0){
+                            /*there is a window defined that contains this character - switch to it or quote from it*/
+                            if(source.position()>=source.limit() || isInOffsetWindowOrDirect(data.fromUDynamicOffsets[window], source.get(source.position()))){
+                                /*change to dynamic window*/
+                                dynamicWindow = window;
+                                currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+                                useDynamicWindow(dynamicWindow);
+                                c = ((int)((SC0+window)<<8)) | (c- currentOffset) | 0x80;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            } else {
+                                /*quote from dynamic window*/
+                                c = ((int)((SQ0+window)<<8)) | (c - data.fromUDynamicOffsets[window]) |
+                                    0x80;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            }
+                        } else if((window = getWindow(staticOffsets))>=0){
+                            /*quote from static window*/
+                            c = ((int)((SQ0+window)<<8)) | (c - staticOffsets[window]);
+                            length = 2;
+                            label = OutputBytes;
+                            return label;
+                        }else if((code=getDynamicOffset())>=0){
+                            /*define a dynamic window with this character*/
+                            dynamicWindow = getNextDynamicWindow();
+                            currentOffset = data.fromUDynamicOffsets[dynamicWindow]=offset;
+                            useDynamicWindow(dynamicWindow);
+                            c = ((int)((SD0+dynamicWindow)<<16)) | (int)(code<<8)|
+                                (c- currentOffset) | 0x80;
+                            length = 3;
+                            label = OutputBytes;
+                            return label;
+                        } else if(((int)((c-0x3400)&UConverterConstants.UNSIGNED_INT_MASK))<(0xd800-0x3400) && (source.position()>=source.limit() || 
+                                ((int)((source.get(source.position())-0x3400)&UConverterConstants.UNSIGNED_INT_MASK))< (0xd800 - 0x3400))){
+                            
+                            /*
+                             * this character is not compressible (a BMP ideograph of similar)
+                             * switch to Unicode mode if this is the last character in the block
+                             * or there is at least one more ideograph following immediately
+                             */
+                             isSingleByteMode = false;
+                             c|=SCU<<16;
+                             length =3;
+                             label = OutputBytes;
+                             return label;
+                        } else {
+                            /*quote Unicode*/
+                            c|=SQU<<16;
+                            length = 3;
+                            label = OutputBytes;
+                            return label;
+                        }
+                    }
+                    /*normal end of conversion : prepare for new character */
+                    c = 0;
+                    sourceIndex = nextSourceIndex;
+                }
+            } else {
+                if(c!=0 && targetCapacity>0 && !AfterGetTrailUnicode){
+                    label = GetTrailUnicode;
+                    return label;
+                }
+            
+                /*state machine for Unicode*/
+                /*unicodeByteMode*/
+                while(AfterGetTrailUnicode || source.hasRemaining()){
+                    if(targetCapacity<=0 && !AfterGetTrailUnicode){
+                        /*target is full*/
+                        cr = CoderResult.OVERFLOW;
+                        LabelLoop = false;
+                        break;
+                    }
+                    if(!AfterGetTrailUnicode){
+                        c = source.get();
+                        ++nextSourceIndex;
+                    }
+                    
+                    if((((c-0x3400)& UConverterConstants.UNSIGNED_INT_MASK))<(0xd800-0x3400) && !AfterGetTrailUnicode){
+                        /*not compressible, write character directly */
+                        if(targetCapacity>=2){
+                            target.put((byte)(c>>8));
+                            target.put((byte)c);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                                offsets.put(sourceIndex);
+                            }
+                            targetCapacity-=2;
+                        } else {
+                            length =2;
+                            label = OutputBytes;
+                            return label;
+                        }
+                    } else if((((c-0x3400)& UConverterConstants.UNSIGNED_INT_MASK))>=(0xf300-0x3400) /* c<0x3400 || c>=0xf300*/&& !AfterGetTrailUnicode){
+                        /*compress BMP character if the following one is not an uncompressible ideograph*/
+                        if(!(source.hasRemaining() && (((source.get(source.position())-0x3400)& UConverterConstants.UNSIGNED_INT_MASK))<(0xd800-0x3400))){
+                            if(((((c-0x30)&UConverterConstants.UNSIGNED_INT_MASK))<10 || (((c-0x61)&UConverterConstants.UNSIGNED_INT_MASK))<26 
+                                    || (((c-0x41)&UConverterConstants.UNSIGNED_INT_MASK))<26)){
+                                /*ASCII digit or letter*/
+                                isSingleByteMode = true;
+                                c |=((int)((UC0+dynamicWindow)<<8))|c;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            } else if((window=getWindow(data.fromUDynamicOffsets))>=0){
+                                /*there is a dynamic window that contains this character, change to it*/
+                                isSingleByteMode = true;
+                                dynamicWindow = window;
+                                currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+                                useDynamicWindow(dynamicWindow);
+                                c = ((int)((UC0+dynamicWindow)<<8)) | (c- currentOffset) | 0x80;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            } else if((code=getDynamicOffset())>=0){
+                                /*define a dynamic window with this character*/
+                                isSingleByteMode = true;
+                                dynamicWindow = getNextDynamicWindow();
+                                currentOffset = data.fromUDynamicOffsets[dynamicWindow]=offset;
+                                useDynamicWindow(dynamicWindow);
+                                c = ((int)((UD0+dynamicWindow)<<16)) | (int)(code<<8) 
+                                    |(c- currentOffset) | 0x80;
+                                length = 3;
+                                label = OutputBytes;
+                                return label;
+                            }
+                        }
+                        
+                        /*don't know how to compress these character, just write it directly*/
+                        length = 2;
+                        label = OutputBytes;
+                        return label;
+                    } else if(c<0xe000 && !AfterGetTrailUnicode){
+                        label = GetTrailUnicode;
+                        return label;
+                    } else {
+                        /*quote to avoid SCSU tags*/
+                        c|=UQU<<16;
+                        length = 3;
+                        label = OutputBytes;
+                        return label;
+                    }
+                    
+                    if(AfterGetTrailUnicode){
+                        AfterGetTrailUnicode = false;
+                    }
+                    /*normal end of conversion, prepare for a new character*/
+                    c = 0;
+                    sourceIndex = nextSourceIndex;
+                }
+            }
+            label = EndLoop;
+            return label;
+        }
+        
+        private int getTrail(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            lead = (char)c;
+            int label = Loop;
+            if(source.hasRemaining()){
+                /*test the following code unit*/
+                trail = source.get(source.position());
+                if(UTF16.isTrailSurrogate((char)trail)){
+                    source.position(source.position()+1);
+                    ++nextSourceIndex;
+                    c = UCharacter.getCodePoint((char)c, trail);
+                    label = Loop;
+                } else {
+                    /*this is unmatched lead code unit (1st Surrogate)*/
+                    /*callback(illegal)*/
+                    cr = CoderResult.malformedForLength(1);
+                    label = EndLoop;
+                }
+            }else {
+                /*no more input*/
+                label = EndLoop;
+            }
+            AfterGetTrail = true;
+            return label;
+        }
+        
+        private int getTrailUnicode(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            int label = EndLoop;
+            AfterGetTrailUnicode = true;
+            /*c is surrogate*/
+            if(UTF16.isLeadSurrogate((char)c)){
+      // getTrailUnicode:   
+                lead = (char)c;
+                if(source.hasRemaining()){
+                    /*test the following code unit*/
+                    trail = source.get(source.position());
+                    if(UTF16.isTrailSurrogate(trail)){
+                        source.get();
+                        ++nextSourceIndex;
+                        c = UCharacter.getCodePoint((char)c, trail);
+                        /*convert this surrogate code point*/
+                        /*exit this condition tree*/
+                    } else {
+                        /*this is unmatched lead code unit(1st surrogate)*/
+                        /*callback(illegal)*/
+                        cr = CoderResult.malformedForLength(1);
+                        label = EndLoop;
+                        return label;
+                    }
+                } else {
+                    /*no more input*/
+                    label = EndLoop;
+                    return label;
+                }
+            } else {
+                /*this is an unmatched trail code point (2nd surrogate)*/
+                /*callback (illegal)*/
+                cr = CoderResult.malformedForLength(1);
+                label = EndLoop;
+                return label;
+            }
+            
+            /*compress supplementary character*/
+            if((window=getWindow(data.fromUDynamicOffsets))>=0 && 
+                    !(source.hasRemaining() && ((source.get(source.position())-0x3400)&UConverterConstants.UNSIGNED_INT_MASK) < 
+                            (0xd800 - 0x3400))){
+                /*
+                 * this is the dynamic window that contains this character and the following
+                 * character is not uncompressible,
+                 * change to the window
+                 */
+                isSingleByteMode = true;
+                dynamicWindow = window;
+                currentOffset = data.fromUDynamicOffsets[dynamicWindow];
+                useDynamicWindow(dynamicWindow);
+                c = ((UC0+dynamicWindow)<<8 | (c-currentOffset) | 0x80);
+                length = 2;
+                label = OutputBytes;
+                return label;
+            } else if(source.hasRemaining() && lead == source.get(source.position()) && (code=getDynamicOffset())>=0){
+                /*two supplementary characters in (probably) the same window - define an extended one*/
+                isSingleByteMode = true;
+                dynamicWindow = getNextDynamicWindow();
+                currentOffset = data.fromUDynamicOffsets[dynamicWindow] = offset;
+                useDynamicWindow(dynamicWindow);
+                c = (UDX<<24) | (dynamicWindow<<21) |(code<<8) |(c - currentOffset) | 0x80;
+                length = 4;
+                label = OutputBytes;
+                return label;
+            } else {
+                /*don't know how to compress this character, just write it directly*/
+                c = (lead<<16)|trail;
+                length = 4;
+                label = OutputBytes;
+                return label;
+            }
+            
+        }
+        
+        private void endLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            /*set the converter state back to UConverter*/
+            data.fromUIsSingleByteMode = isSingleByteMode;
+            data.fromUDynamicWindow = dynamicWindow;
+            fromUChar32 = c;
+            LabelLoop = false;
+        }
+        
+        private int outputBytes(CharBuffer source, ByteBuffer target, IntBuffer offsets){
+            int label;
+            //int targetCapacity = target.limit()-target.position();
+            /*write the output character byte from c and length*/
+            /*from the first if in the loop we know that targetCapacity>0*/
+            if(length<=targetCapacity){
+                if(offsets==null){
+                    switch(length){
+                    /*each branch falls through the next one*/
+                        case 4:
+                            target.put((byte)(c>>24));
+                        case 3:
+                            target.put((byte)(c>>16));
+                        case 2:
+                            target.put((byte)(c>>8));
+                        case 1:
+                            target.put((byte)c);
+                        default:
+                            /*will never occur*/
+                            break;
+                    }
+                }else {
+                    switch(length){
+                        /*each branch falls through to the next one*/
+                        case 4:
+                            target.put((byte)(c>>24));
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                        case 3:
+                            target.put((byte)(c>>16));
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                        case 2:
+                            target.put((byte)(c>>8));
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                        case 1:
+                            target.put((byte)c);
+                            if(offsets!=null){
+                                offsets.put(sourceIndex);
+                            }
+                        default:
+                            /*will never occur*/
+                            break;
+                    }
+                }
+                targetCapacity-=length;
+                
+                /*normal end of conversion: prepare for a new character*/
+                c = 0;
+                sourceIndex = nextSourceIndex;
+                label = Loop;
+                return label;
+            } else {
+                ByteBuffer p = ByteBuffer.wrap(errorBuffer);
+                /*
+                 * We actually do this backwards here:
+                 * In order to save an intermediate variable, we output
+                 * first to the overflow buffer what does not fit into the 
+                 * regular target
+                 */
+                /* we know that 0<=targetCapacity<length<=4 */
+                /* targetCapacity==0 when SCU+supplementary where SCU used up targetCapacity==1 */
+                length -= targetCapacity;
+                switch(length){
+                    /*each branch falls through the next one*/
+                    case 4:
+                        p.put((byte)(c>>24));
+                    case 3:
+                        p.put((byte)(c>>16));
+                    case 2:
+                        p.put((byte)(c>>8));
+                    case 1:
+                        p.put((byte)c);
+                    default:
+                        /*will never occur*/
+                        break;
+                }
+                errorBufferLength = length;
+                
+                /*now output what fits into the regular target*/
+                c>>=8*length; //length was reduced by targetCapacity
+                switch(targetCapacity){
+                    /*each branch falls through the next one*/
+                    case 3:
+                        target.put((byte)(c>>16));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                    case 2:
+                        target.put((byte)(c>>8));
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                    case 1:
+                        target.put((byte)c);
+                        if(offsets!=null){
+                            offsets.put(sourceIndex);
+                        }
+                    default:
+                        break;
+                }
+                
+                /*target overflow*/
+                targetCapacity = 0;
+                cr = CoderResult.OVERFLOW;
+                c = 0;
+                label = EndLoop;
+                return label;
+            }
+        }
+        
+    }
+    
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderSCSU(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderSCSU(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        CharsetICU.getCompleteUnicodeSet(setFillIn);
+    }
+    
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF16.java b/src/com/ibm/icu/charset/CharsetUTF16.java
new file mode 100644
index 0000000..43c13ce
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF16.java
@@ -0,0 +1,288 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Niti Hantaweepant
+ */
+class CharsetUTF16 extends CharsetICU {
+
+    private static final int SIGNATURE_LENGTH = 2;
+    private static final byte[] fromUSubstitution_BE = { (byte) 0xff, (byte) 0xfd };
+    private static final byte[] fromUSubstitution_LE = { (byte) 0xfd, (byte) 0xff };
+    private static final byte[] BOM_BE = { (byte) 0xfe, (byte) 0xff };
+    private static final byte[] BOM_LE = { (byte) 0xff, (byte) 0xfe };
+    private static final int ENDIAN_XOR_BE = 0;
+    private static final int ENDIAN_XOR_LE = 1;
+    private static final int NEED_TO_WRITE_BOM = 1;
+
+    private boolean isEndianSpecified;
+    private boolean isBigEndian;
+    private int endianXOR;
+    private byte[] bom;
+    private byte[] fromUSubstitution;
+
+    public CharsetUTF16(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+
+        this.isEndianSpecified = (this instanceof CharsetUTF16BE || this instanceof CharsetUTF16LE);
+        this.isBigEndian = !(this instanceof CharsetUTF16LE);
+
+        if (isBigEndian) {
+            this.bom = BOM_BE;
+            this.fromUSubstitution = fromUSubstitution_BE;
+            this.endianXOR = ENDIAN_XOR_BE;
+        } else {
+            this.bom = BOM_LE;
+            this.fromUSubstitution = fromUSubstitution_LE;
+            this.endianXOR = ENDIAN_XOR_LE;
+        }
+
+        maxBytesPerChar = 4;
+        minBytesPerChar = 2;
+        maxCharsPerByte = 1;
+    }
+
+    class CharsetDecoderUTF16 extends CharsetDecoderICU {
+        
+        private boolean isBOMReadYet;
+        private int actualEndianXOR;
+        private byte[] actualBOM;
+
+        public CharsetDecoderUTF16(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected void implReset() {
+            super.implReset();
+            isBOMReadYet = false;
+            actualBOM = null;
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            /*
+             * If we detect a BOM in this buffer, then we must add the BOM size to the offsets because the actual
+             * converter function will not see and count the BOM. offsetDelta will have the number of the BOM bytes that
+             * are in the current buffer.
+             */
+            if (!isBOMReadYet) {
+                while (true) {
+                    if (!source.hasRemaining())
+                        return CoderResult.UNDERFLOW;
+
+                    toUBytesArray[toULength++] = source.get();
+
+                    if (toULength == 1) {
+                        // on the first byte, we haven't decided whether or not it's bigEndian yet
+                        if ((!isEndianSpecified || isBigEndian)
+                                && toUBytesArray[toULength - 1] == BOM_BE[toULength - 1]) {
+                            actualBOM = BOM_BE;
+                            actualEndianXOR = ENDIAN_XOR_BE;
+                        } else if ((!isEndianSpecified || !isBigEndian)
+                                && toUBytesArray[toULength - 1] == BOM_LE[toULength - 1]) {
+                            actualBOM = BOM_LE;
+                            actualEndianXOR = ENDIAN_XOR_LE;
+                        } else {
+                            // we do not have a BOM (and we have toULength==1 bytes)
+                            actualBOM = null;
+                            actualEndianXOR = endianXOR;
+                            break;
+                        }
+                    } else if (toUBytesArray[toULength - 1] != actualBOM[toULength - 1]) {
+                        // we do not have a BOM (and we have toULength bytes)
+                        actualBOM = null;
+                        actualEndianXOR = endianXOR;
+                        break;
+                    } else if (toULength == SIGNATURE_LENGTH) {
+                        // we found a BOM! at last!
+                        // too bad we have to get ignore it now (like it was unwanted or something)
+                        toULength = 0;
+                        break;
+                    }
+                }
+
+                isBOMReadYet = true;
+            }
+
+            // now that we no longer need to look for a BOM, let's do some work
+
+            // if we have unfinished business
+            if (toUnicodeStatus != 0) {
+                CoderResult cr = decodeTrail(source, target, offsets, (char) toUnicodeStatus);
+                if (cr != null)
+                    return cr;
+            }
+
+            char char16;
+
+            while (true) {
+                while (toULength < 2) {
+                    if (!source.hasRemaining())
+                        return CoderResult.UNDERFLOW;
+                    toUBytesArray[toULength++] = source.get();
+                }
+
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                char16 = (char) (((toUBytesArray[0 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | ((toUBytesArray[1 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK)));
+
+                if (!UTF16.isSurrogate(char16)) {
+                    toULength = 0;
+                    target.put(char16);
+                } else {
+                    CoderResult cr = decodeTrail(source, target, offsets, char16);
+                    if (cr != null)
+                        return cr;
+                }
+            }
+        }
+
+        private final CoderResult decodeTrail(ByteBuffer source, CharBuffer target, IntBuffer offsets, char lead) {
+            if (!UTF16.isLeadSurrogate(lead)) {
+                // 2 bytes, lead malformed
+                toUnicodeStatus = 0;
+                return CoderResult.malformedForLength(2);
+            }
+
+            while (toULength < 4) {
+                if (!source.hasRemaining()) {
+                    // let this be unfinished business
+                    toUnicodeStatus = lead;
+                    return CoderResult.UNDERFLOW;
+                }
+                toUBytesArray[toULength++] = source.get();
+            }
+
+            char trail = (char) (((toUBytesArray[2 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK) << 8) | ((toUBytesArray[3 ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK)));
+
+            if (!UTF16.isTrailSurrogate(trail)) {
+                // pretend like we didnt read the last 2 bytes
+                toULength = 2;
+                source.position(source.position() - 2);
+
+                // 2 bytes, lead malformed
+                toUnicodeStatus = 0;
+                return CoderResult.malformedForLength(2);
+            }
+
+            toUnicodeStatus = 0;
+            toULength = 0;
+
+            target.put(lead);
+
+            if (target.hasRemaining()) {
+                target.put(trail);
+                return null;
+            } else {
+                /* Put in overflow buffer (not handled here) */
+                charErrorBufferArray[0] = trail;
+                charErrorBufferLength = 1;
+                return CoderResult.OVERFLOW;
+            }
+        }
+    }
+
+    class CharsetEncoderUTF16 extends CharsetEncoderICU {
+        private final byte[] temp = new byte[4];
+
+        public CharsetEncoderUTF16(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            fromUnicodeStatus = isEndianSpecified ? 0 : NEED_TO_WRITE_BOM;
+        }
+
+        protected void implReset() {
+            super.implReset();
+            fromUnicodeStatus = isEndianSpecified ? 0 : NEED_TO_WRITE_BOM;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult cr;
+
+            /* write the BOM if necessary */
+            if (fromUnicodeStatus == NEED_TO_WRITE_BOM) {
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                fromUnicodeStatus = 0;
+                cr = fromUWriteBytes(this, bom, 0, bom.length, target, offsets, -1);
+                if (cr.isOverflow())
+                    return cr;
+            }
+
+            if (fromUChar32 != 0) {
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                // a note: fromUChar32 will either be 0 or a lead surrogate
+                cr = encodeChar(source, target, offsets, (char) fromUChar32);
+                if (cr != null)
+                    return cr;
+            }
+
+            while (true) {
+                if (!source.hasRemaining())
+                    return CoderResult.UNDERFLOW;
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                cr = encodeChar(source, target, offsets, source.get());
+                if (cr != null)
+                    return cr;
+            }
+        }
+
+        private final CoderResult encodeChar(CharBuffer source, ByteBuffer target, IntBuffer offsets, char ch) {
+            int sourceIndex = source.position() - 1;
+            CoderResult cr;
+
+            if (UTF16.isSurrogate(ch)) {
+                cr = handleSurrogates(source, ch);
+                if (cr != null)
+                    return cr;
+
+                char trail = UTF16.getTrailSurrogate(fromUChar32);
+                fromUChar32 = 0;
+
+                // 4 bytes
+                temp[0 ^ endianXOR] = (byte) (ch >>> 8);
+                temp[1 ^ endianXOR] = (byte) (ch);
+                temp[2 ^ endianXOR] = (byte) (trail >>> 8);
+                temp[3 ^ endianXOR] = (byte) (trail);
+                cr = fromUWriteBytes(this, temp, 0, 4, target, offsets, sourceIndex);
+            } else {
+                // 2 bytes
+                temp[0 ^ endianXOR] = (byte) (ch >>> 8);
+                temp[1 ^ endianXOR] = (byte) (ch);
+                cr = fromUWriteBytes(this, temp, 0, 2, target, offsets, sourceIndex);
+            }
+            return (cr.isUnderflow() ? null : cr);
+        }
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderUTF16(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderUTF16(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getNonSurrogateUnicodeSet(setFillIn);            
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF16BE.java b/src/com/ibm/icu/charset/CharsetUTF16BE.java
new file mode 100644
index 0000000..b1bb374
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF16BE.java
@@ -0,0 +1,17 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * The purpose of this class is to set isBigEndian to true and isEndianSpecified to true in the super class, and to
+ * allow the Charset framework to open the variant UTF-16 converter without extra setup work.
+ */
+class CharsetUTF16BE extends CharsetUTF16 {
+    public CharsetUTF16BE(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF16LE.java b/src/com/ibm/icu/charset/CharsetUTF16LE.java
new file mode 100644
index 0000000..07607a0
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF16LE.java
@@ -0,0 +1,17 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * The purpose of this class is to set isBigEndian to false and isEndianSpecified to true in the super class, and to
+ * allow the Charset framework to open the variant UTF-16 converter without extra setup work.
+ */
+class CharsetUTF16LE extends CharsetUTF16 {
+    public CharsetUTF16LE(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF32.java b/src/com/ibm/icu/charset/CharsetUTF32.java
new file mode 100644
index 0000000..d2a8a5f
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF32.java
@@ -0,0 +1,251 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Niti Hantaweepant
+ */
+class CharsetUTF32 extends CharsetICU {
+
+    private static final int SIGNATURE_LENGTH = 4;
+    private static final byte[] fromUSubstitution_BE = { (byte) 0, (byte) 0, (byte) 0xff, (byte) 0xfd };
+    private static final byte[] fromUSubstitution_LE = { (byte) 0xfd, (byte) 0xff, (byte) 0, (byte) 0 };
+    private static final byte[] BOM_BE = { 0, 0, (byte) 0xfe, (byte) 0xff };
+    private static final byte[] BOM_LE = { (byte) 0xff, (byte) 0xfe, 0, 0 };
+    private static final int ENDIAN_XOR_BE = 0;
+    private static final int ENDIAN_XOR_LE = 3;
+    private static final int NEED_TO_WRITE_BOM = 1;
+
+    private boolean isEndianSpecified;
+    private boolean isBigEndian;
+    private int endianXOR;
+    private byte[] bom;
+    private byte[] fromUSubstitution;
+
+    public CharsetUTF32(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+
+        this.isEndianSpecified = (this instanceof CharsetUTF32BE || this instanceof CharsetUTF32LE);
+        this.isBigEndian = !(this instanceof CharsetUTF32LE);
+
+        if (isBigEndian) {
+            this.bom = BOM_BE;
+            this.fromUSubstitution = fromUSubstitution_BE;
+            this.endianXOR = ENDIAN_XOR_BE;
+        } else {
+            this.bom = BOM_LE;
+            this.fromUSubstitution = fromUSubstitution_LE;
+            this.endianXOR = ENDIAN_XOR_LE;
+        }
+
+        maxBytesPerChar = 4;
+        minBytesPerChar = 4;
+        maxCharsPerByte = 1;
+    }
+
+    class CharsetDecoderUTF32 extends CharsetDecoderICU {
+
+        private boolean isBOMReadYet;
+        private int actualEndianXOR;
+        private byte[] actualBOM;
+
+        public CharsetDecoderUTF32(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected void implReset() {
+            super.implReset();
+            isBOMReadYet = false;
+            actualBOM = null;
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) {
+            /*
+             * If we detect a BOM in this buffer, then we must add the BOM size to the offsets because the actual
+             * converter function will not see and count the BOM. offsetDelta will have the number of the BOM bytes that
+             * are in the current buffer.
+             */
+            if (!isBOMReadYet) {
+                while (true) {
+                    if (!source.hasRemaining())
+                        return CoderResult.UNDERFLOW;
+
+                    toUBytesArray[toULength++] = source.get();
+
+                    if (toULength == 1) {
+                        // on the first byte, we haven't decided whether or not it's bigEndian yet
+                        if ((!isEndianSpecified || isBigEndian)
+                                && toUBytesArray[toULength - 1] == BOM_BE[toULength - 1]) {
+                            actualBOM = BOM_BE;
+                            actualEndianXOR = ENDIAN_XOR_BE;
+                        } else if ((!isEndianSpecified || !isBigEndian)
+                                && toUBytesArray[toULength - 1] == BOM_LE[toULength - 1]) {
+                            actualBOM = BOM_LE;
+                            actualEndianXOR = ENDIAN_XOR_LE;
+                        } else {
+                            // we do not have a BOM (and we have toULength==1 bytes)
+                            actualBOM = null;
+                            actualEndianXOR = endianXOR;
+                            break;
+                        }
+                    } else if (toUBytesArray[toULength - 1] != actualBOM[toULength - 1]) {
+                        // we do not have a BOM (and we have toULength bytes)
+                        actualBOM = null;
+                        actualEndianXOR = endianXOR;
+                        break;
+                    } else if (toULength == SIGNATURE_LENGTH) {
+                        // we found a BOM! at last!
+                        // too bad we have to get ignore it now (like it was unwanted or something)
+                        toULength = 0;
+                        break;
+                    }
+                }
+
+                isBOMReadYet = true;
+            }
+
+            // now that we no longer need to look for a BOM, let's do some work
+            int char32;
+
+            while (true) {
+                while (toULength < 4) {
+                    if (!source.hasRemaining())
+                        return CoderResult.UNDERFLOW;
+                    toUBytesArray[toULength++] = source.get();
+                }
+
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                char32 = 0;
+                for (int i = 0; i < 4; i++)
+                    char32 = (char32 << 8)
+                            | (toUBytesArray[i ^ actualEndianXOR] & UConverterConstants.UNSIGNED_BYTE_MASK);
+
+                if (0 <= char32 && char32 <= UConverterConstants.MAXIMUM_UTF && !isSurrogate(char32)) {
+                    toULength = 0;
+                    if (char32 <= UConverterConstants.MAXIMUM_UCS2) {
+                        /* fits in 16 bits */
+                        target.put((char) char32);
+                    } else {
+                        /* write out the surrogates */
+                        target.put(UTF16.getLeadSurrogate(char32));
+                        char32 = UTF16.getTrailSurrogate(char32);
+                        if (target.hasRemaining()) {
+                            target.put((char) char32);
+                        } else {
+                            /* Put in overflow buffer (not handled here) */
+                            charErrorBufferArray[0] = (char) char32;
+                            charErrorBufferLength = 1;
+                            return CoderResult.OVERFLOW;
+                        }
+                    }
+                } else {
+                    return CoderResult.malformedForLength(toULength);
+                }
+            }
+        }
+    }
+
+    class CharsetEncoderUTF32 extends CharsetEncoderICU {
+        private final byte[] temp = new byte[4];
+
+        public CharsetEncoderUTF32(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            fromUnicodeStatus = isEndianSpecified ? 0 : NEED_TO_WRITE_BOM;
+        }
+
+        protected void implReset() {
+            super.implReset();
+            fromUnicodeStatus = isEndianSpecified ? 0 : NEED_TO_WRITE_BOM;
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult cr;
+
+            /* write the BOM if necessary */
+            if (fromUnicodeStatus == NEED_TO_WRITE_BOM) {
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                fromUnicodeStatus = 0;
+                cr = fromUWriteBytes(this, bom, 0, bom.length, target, offsets, -1);
+                if (cr.isOverflow())
+                    return cr;
+            }
+
+            if (fromUChar32 != 0) {
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                // a note: fromUChar32 will either be 0 or a lead surrogate
+                cr = encodeChar(source, target, offsets, (char) fromUChar32);
+                if (cr != null)
+                    return cr;
+            }
+
+            while (true) {
+                if (!source.hasRemaining())
+                    return CoderResult.UNDERFLOW;
+                if (!target.hasRemaining())
+                    return CoderResult.OVERFLOW;
+
+                cr = encodeChar(source, target, offsets, source.get());
+                if (cr != null)
+                    return cr;
+            }
+        }
+
+        private final CoderResult encodeChar(CharBuffer source, ByteBuffer target, IntBuffer offsets, char ch) {
+            int sourceIndex = source.position() - 1;
+            CoderResult cr;
+            int char32;
+
+            if (UTF16.isSurrogate(ch)) {
+                cr = handleSurrogates(source, ch);
+                if (cr != null)
+                    return cr;
+
+                char32 = fromUChar32;
+                fromUChar32 = 0;
+            } else {
+                char32 = ch;
+            }
+
+            /* We cannot get any larger than 10FFFF because we are coming from UTF-16 */
+            // temp[0 ^ endianXOR] = (byte) (char32 >>> 24); // (always 0)
+            temp[1 ^ endianXOR] = (byte) (char32 >>> 16); // same as (byte)((char32 >>> 16) & 0x1f)
+            temp[2 ^ endianXOR] = (byte) (char32 >>> 8);
+            temp[3 ^ endianXOR] = (byte) (char32);
+            cr = fromUWriteBytes(this, temp, 0, 4, target, offsets, sourceIndex);
+            return (cr.isUnderflow() ? null : cr);
+        }
+    }
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderUTF32(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderUTF32(this);
+    }
+    
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getNonSurrogateUnicodeSet(setFillIn);                    
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF32BE.java b/src/com/ibm/icu/charset/CharsetUTF32BE.java
new file mode 100644
index 0000000..177b1f7
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF32BE.java
@@ -0,0 +1,17 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * The purpose of this class is to set isBigEndian to true and isEndianSpecified to true in the super class, and to
+ * allow the Charset framework to open the variant UTF-32 converter without extra setup work.
+ */
+class CharsetUTF32BE extends CharsetUTF32 {
+    public CharsetUTF32BE(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF32LE.java b/src/com/ibm/icu/charset/CharsetUTF32LE.java
new file mode 100644
index 0000000..beb8303
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF32LE.java
@@ -0,0 +1,17 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * The purpose of this class is to set isBigEndian to false and isEndianSpecified to true in the super class, and to
+ * allow the Charset framework to open the variant UTF-32 converter without extra setup work.
+ */
+class CharsetUTF32LE extends CharsetUTF32 {
+    public CharsetUTF32LE(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF7.java b/src/com/ibm/icu/charset/CharsetUTF7.java
new file mode 100644
index 0000000..29be66a
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF7.java
@@ -0,0 +1,756 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Michael Ow
+ *
+ */
+class CharsetUTF7 extends CharsetICU {
+    private final String IMAP_NAME="IMAP-mailbox-name";
+    private boolean useIMAP;
+    protected byte[] fromUSubstitution=new byte[]{0x3F};
+   
+    public CharsetUTF7(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        maxBytesPerChar=4; /* max 3 bytes per code unit from UTF-7 (base64) */
+        minBytesPerChar=1;
+        maxCharsPerByte=1;
+        
+        useIMAP=false;
+        
+        if (icuCanonicalName.equals(IMAP_NAME)) {
+            useIMAP=true;
+        }
+    }
+    
+    //private static boolean inSetD(char c) {
+    //    return (
+    //            (char)(c - 97) < 26 || (char)(c - 65) < 26 || /* letters */
+    //            (char)(c - 48) < 10 ||                        /* digits */
+    //            (char)(c - 39) < 3 ||                          /* ' () */
+    //            (char)(c - 44) < 4 ||                          /* ,-./ */
+    //            (c==58) || (c==63)            /* :? */
+    //            );
+    //}
+    
+    //private static boolean inSetO(char c) {
+    //    return (
+    //            (char)(c - 33) < 6 ||                           /* !"#$%& */
+    //            (char)(c - 59) < 4 ||                           /* ;<=> */
+    //            (char)(c - 93) < 4 ||                           /* ]^_` */
+    //            (char)(c - 123) < 3 ||                         /* {|} */
+    //            (c==58) || (c==63)             /* *@[ */
+    //            );
+    //}
+    
+    private static boolean isCRLFTAB(char c) {
+        return (
+                (c==13) || (c==10) || (c==9)
+                );
+    }
+    
+    //private static boolean isCRLFSPTAB(char c) {
+    //   return (
+    //            (c==32) || (c==13) || (c==10) || (c==9)
+    //            );
+    //}
+    
+    private static final byte PLUS=43;
+    private static final byte MINUS=45;
+    private static final byte BACKSLASH=92;
+    //private static final byte TILDE=126;
+    private static final byte AMPERSAND=0x26;
+    private static final byte COMMA=0x2c;
+    private static final byte SLASH=0x2f;
+    
+    // legal byte values: all US-ASCII graphic characters 0x20..0x7e
+    private static boolean isLegal(char c, boolean useIMAP) {
+        if (useIMAP) {
+            return (
+                    (0x20 <= c) && (c <= 0x7e)
+                    );
+        } else {
+            return (
+                    ((char)(c - 32) < 94 && (c != BACKSLASH)) || isCRLFTAB(c)
+                    );
+        }
+    }
+    
+    // directly encode all of printable ASCII 0x20..0x7e except '&' 0x26
+    private static boolean inSetDIMAP(char c) {
+        return (
+                (isLegal(c, true) && c != AMPERSAND)
+                );
+    }
+    
+    private static byte TO_BASE64_IMAP(int n) {
+        return (n < 63 ? TO_BASE_64[n] : COMMA);
+    }
+    
+    private static byte FROM_BASE64_IMAP(char c) {
+        return (c==COMMA ? 63 : c==SLASH ? -1 : FROM_BASE_64[c]);
+    }
+    
+    /* encode directly sets D and O and CR LF SP TAB */
+    private static final byte ENCODE_DIRECTLY_MAXIMUM[] =
+    {
+     /*0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f*/
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
+        
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0
+    };
+    
+    /* encode directly set D and CR LF SP TAB but not set O */
+    private static final byte ENCODE_DIRECTLY_RESTRICTED[] =
+    {
+     /*0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f*/
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        
+        1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
+        
+        0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 
+        
+        0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
+    };
+    
+    private static final byte TO_BASE_64[] =
+    {
+       /* A-Z */
+       65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+       78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+       /* a-z */
+       97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+       110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+       /* 0-9 */
+       48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+       /* +/ */
+       43, 47
+    };
+    
+    private static final byte FROM_BASE_64[] =
+    {
+       /* C0 controls, -1 for legal ones (CR LF TAB), -3 for illegal ones */
+       -3, -3, -3, -3, -3, -3, -3, -3, -3, -1, -1, -3, -3, -1, -3, -3,
+       -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
+       /* general punctuation with + and / and a special value (-2) for - */
+       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -2, -1, 63,
+       /* digits */
+       52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
+       /* A-Z */
+       -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+       15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -3, -1, -1, -1,       
+       /* a-z*/
+       -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+       41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -3, -3
+    };
+    
+    class CharsetDecoderUTF7 extends CharsetDecoderICU {
+        public CharsetDecoderUTF7(CharsetICU cs) {
+            super(cs);
+            implReset();
+        }
+    
+        protected void implReset() {
+            super.implReset();
+            toUnicodeStatus=(toUnicodeStatus & 0xf0000000) | 0x1000000;
+        }
+        
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets, boolean flush) { 
+            CoderResult cr=CoderResult.UNDERFLOW;
+            byte base64Value;
+            byte base64Counter;
+            byte inDirectMode;
+            char bits;
+            int byteIndex;
+            int sourceIndex, nextSourceIndex;
+            
+            int length;
+            
+            char b;
+            char c;
+            
+            int sourceArrayIndex=source.position();
+            
+            //get the state of the machine state
+            {
+            int status=toUnicodeStatus;
+            inDirectMode=(byte)((status >> 24) & 1);
+            base64Counter=(byte)(status >> 16);
+            bits=(char)status;
+            }
+            byteIndex=toULength;
+            /* sourceIndex=-1 if the current character began in the previous buffer */
+            sourceIndex=byteIndex==0 ? 0 : -1;
+            nextSourceIndex=0;            
+            
+            directMode:  while (true) {
+                if (inDirectMode==1) {
+                    /* 
+                     * In Direct Mode, most US-ASCII characters are encoded directly, i.e.,
+                     * with their US-ASCII byte values.
+                     * Backslash and Tilde and most control characters are not alled in UTF-7.
+                     * A plus sign starts Unicode (or "escape") Mode.
+                     * An ampersand starts Unicode Mode for IMAP.
+                     * 
+                     * In Direct Mode, only the sourceIndex is used.
+                     */
+                    byteIndex=0;
+                    length=source.remaining();
+                    //targetCapacity=target.remaining();
+                    //Commented out because length of source may be larger than target when it comes to bytes 
+                    /*if (useIMAP && length > targetCapacity) {
+                        length=targetCapacity;
+                    }*/
+                    while (length > 0) {
+                        b=(char)(source.get());
+                        sourceArrayIndex++;
+                        if (!isLegal(b, useIMAP)) {
+                            toUBytesArray[0]=(byte)b;
+                            byteIndex=1;
+                            cr=CoderResult.malformedForLength(sourceArrayIndex);
+                            break;
+                        } else if ((!useIMAP && b!=PLUS) || (useIMAP && b!=AMPERSAND)) {
+                            // write directly encoded character
+                            if (target.hasRemaining()) { // Check to make sure that there is room in target.
+                                target.put(b);
+                                if (offsets!= null) {
+                                    offsets.put(sourceIndex++);
+                                }
+                            } else {  // Get out and set the CoderResult.
+                                break;
+                            }
+                        } else { /* PLUS or (AMPERSAND in IMAP)*/
+                            /* switch to Unicode mode */
+                            nextSourceIndex=++sourceIndex;
+                            inDirectMode=0;
+                            byteIndex=0;
+                            bits=0;
+                            base64Counter=-1;
+                            continue directMode;
+                        }
+                        --length;
+                    }//end of while
+                    if (source.hasRemaining() && target.position() >= target.limit()) {
+                        /* target is full */
+                        cr=CoderResult.OVERFLOW;
+                    }
+                    break directMode;
+                } else { /* Unicode Mode*/
+                    /* 
+                     * In Unicode Mode, UTF-16BE is base64-encoded.
+                     * The base64 sequence ends with any character that is not in the base64 alphabet.
+                     * A terminating minus sign is consumed.
+                     * 
+                     * In Unicode Mode, the sourceIndex has the index to the start of the current
+                     * base64 bytes, while nextSourceIndex is precisely parallel to source,
+                     * keeping the index to the following byte.
+                     */
+                    while(source.hasRemaining()) {
+                        if (target.hasRemaining()) {
+                            b=(char)source.get();
+                            sourceArrayIndex++;
+                            toUBytesArray[byteIndex++]=(byte)b;
+                            if ((!useIMAP && b>=126) || (useIMAP && b>0x7e)) {
+                                /* illegal - test other illegal US-ASCII values by base64Value==-3 */
+                                inDirectMode=1;
+                                cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                break directMode;
+                            } else if (((base64Value=FROM_BASE_64[b])>=0 && !useIMAP) || ((base64Value=FROM_BASE64_IMAP(b))>=0) && useIMAP) {
+                                /* collect base64 bytes */
+                                switch (base64Counter) {
+                                case -1: /* -1 is immediately after the + */
+                                case 0:
+                                    bits=(char)base64Value;
+                                    base64Counter=1;
+                                    break;
+                                case 1:
+                                case 3:
+                                case 4:
+                                case 6:
+                                    bits=(char)((bits<<6) | base64Value);
+                                    ++base64Counter;
+                                    break;
+                                case 2:
+                                    c=(char)((bits<<4) | (base64Value>>2));
+                                    if (useIMAP && isLegal(c, useIMAP)) {
+                                        // illegal
+                                        inDirectMode=1;
+                                        cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                        // goto endloop;
+                                        break directMode;
+                                    }
+                                    target.put(c);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                        sourceIndex=nextSourceIndex - 1;
+                                    }
+                                    toUBytesArray[0]=(byte)b; /* keep this byte in case an error occurs */
+                                    byteIndex=1;
+                                    bits=(char)(base64Value&3);
+                                    base64Counter=3;
+                                    break;
+                                case 5:
+                                    c=(char)((bits<<2) | (base64Value>>4));
+                                    if(useIMAP && isLegal(c, useIMAP)) {
+                                        // illegal
+                                        inDirectMode=1;
+                                        cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                        // goto endloop;
+                                        break directMode;
+                                    }
+                                    target.put(c);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                        sourceIndex=nextSourceIndex - 1;
+                                    }
+                                    toUBytesArray[0]=(byte)b; /* keep this byte in case an error occurs */
+                                    byteIndex=1;
+                                    bits=(char)(base64Value&15);
+                                    base64Counter=6;
+                                    break;
+                                case 7:
+                                    c=(char)((bits<<6) | base64Value);
+                                    if (useIMAP && isLegal(c, useIMAP)) {
+                                        // illegal
+                                        inDirectMode=1;
+                                        cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                        // goto endloop;
+                                        break directMode;
+                                    }
+                                    target.put(c);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex);
+                                        sourceIndex=nextSourceIndex;
+                                    }
+                                    byteIndex=0;
+                                    bits=0;
+                                    base64Counter=0;
+                                    break;
+                                //default:                  
+                                    /* will never occur */
+                                    //break;                                                           
+                                }//end of switch
+                            } else if (base64Value==-2) {
+                                /* minus sign terminates the base64 sequence */
+                                inDirectMode=1;
+                                if (base64Counter==-1) {
+                                    /* +- i.e. a minus immediately following a plus */
+                                    target.put(useIMAP ? (char)AMPERSAND : (char)PLUS);
+                                    if (offsets != null) {
+                                        offsets.put(sourceIndex - 1);
+                                    }
+                                } else {
+                                    /* absorb the minus and leave the Unicode Mode */
+                                    if (bits!=0 || (useIMAP && base64Counter!=0 && base64Counter!=3 && base64Counter!=6)) {
+                                        /*bits are illegally left over, a unicode character is incomplete */
+                                        cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                        break;
+                                    }
+                                }
+                                sourceIndex=nextSourceIndex;
+                                continue directMode;
+                            } else if (!useIMAP && base64Value==-1) { /* for any legal character except base64 and minus sign */
+                                /* leave the Unicode Mode */
+                                inDirectMode=1;
+                                if (base64Counter==-1) {
+                                    /* illegal:  + immediately followed by something other than base64 minus sign */
+                                    /* include the plus sign in the reported sequence */
+                                    --sourceIndex;
+                                    toUBytesArray[0]=(byte)PLUS;
+                                    toUBytesArray[1]=(byte)b;
+                                    byteIndex=2;
+                                    cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                    break;
+                                } else if (bits==0) {
+                                    /* un-read the character in case it is a plus sign */
+                                    source.position(--sourceArrayIndex);
+                                    sourceIndex=nextSourceIndex - 1;
+                                    continue directMode;
+                                } else {
+                                    /* bits are illegally left over, a unicode character is incomplete */
+                                    cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                    break;
+                                }
+                            } else { 
+                                if (useIMAP && base64Counter==-1) {
+                                    // illegal: & immediately followed by something other than base64 or minus sign
+                                    // include the ampersand in the reported sequence
+                                    --sourceIndex;
+                                    toUBytesArray[0]=(byte)AMPERSAND;
+                                    toUBytesArray[1]=(byte)b;
+                                    byteIndex=2;
+                                }
+                                /* base64Value==-3 for illegal characters */
+                                /* illegal */
+                                inDirectMode=1;
+                                cr=CoderResult.malformedForLength(sourceArrayIndex);
+                                break;
+                            }
+                        } else {
+                            /* target is full */
+                            cr=CoderResult.OVERFLOW;
+                            break;
+                        }
+                    } //end of while
+                    break directMode;
+                }
+            }//end of direct mode label
+            if (useIMAP) {
+                if (!cr.isError() && inDirectMode==0 && flush && byteIndex==0 && !source.hasRemaining()) {
+                    if (base64Counter==-1) {
+                        /* & at the very end of the input */
+                        /* make the ampersand the reported sequence */
+                        toUBytesArray[0]=(byte)AMPERSAND;
+                        byteIndex=1;
+                    }
+                    /* else if (base64Counter!=-1) byteIndex remains 0 because ther is no particular byte sequence */
+                    inDirectMode=1;
+                    cr=CoderResult.malformedForLength(sourceIndex);
+                }
+                
+            } else {
+                if (!cr.isError() && flush && !source.hasRemaining() && bits  ==0) {
+                    /*
+                     * if we are in Unicode Mode, then the byteIndex might not be 0,
+                     * but that is ok if bits -- 0
+                     * -> we set byteIndex=0 at the end of the stream to avoid a truncated error 
+                     * (not true for IMAP-mailbox-name where we must end in direct mode)
+                     */
+                    if (!cr.isOverflow()) {
+                        byteIndex=0;
+                    }
+                }
+            }
+            /* set the converter state */
+            toUnicodeStatus=((int)inDirectMode<<24 | (int)(((short)base64Counter & UConverterConstants.UNSIGNED_BYTE_MASK)<<16) | (int)bits);
+            toULength=byteIndex;
+   
+            return cr;
+        }
+    }
+    
+    class CharsetEncoderUTF7 extends CharsetEncoderICU {
+        public CharsetEncoderUTF7(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+        
+        protected void implReset() {
+            super.implReset();
+            fromUnicodeStatus=(fromUnicodeStatus & 0xf0000000) | 0x1000000;
+        }
+        
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets, boolean flush) {
+            CoderResult cr=CoderResult.UNDERFLOW;
+            byte inDirectMode;
+            byte encodeDirectly[];
+            int status;
+            
+            int length, targetCapacity, sourceIndex;
+            
+            byte base64Counter;
+            char bits;
+            char c;
+            char b;
+            /* get the state machine state */
+            {
+                status=fromUnicodeStatus;
+                encodeDirectly=(((long)status) < 0x10000000) ? ENCODE_DIRECTLY_MAXIMUM : ENCODE_DIRECTLY_RESTRICTED;
+                inDirectMode=(byte)((status >> 24) & 1);
+                base64Counter=(byte)(status >> 16);
+                bits=(char)((byte)status);
+            }
+            /* UTF-7 always encodes UTF-16 code units, therefore we need only a simple sourceIndex */
+            sourceIndex=0;
+            
+            directMode: while(true) {
+            if(inDirectMode==1) {
+                length=source.remaining();
+                targetCapacity=target.remaining();
+                if(length > targetCapacity) {
+                    length=targetCapacity;
+                }
+                while (length > 0) {
+                    c=source.get();
+                    /* UTF7: currently always encode CR LF SP TAB directly */
+                    /* IMAP: encode 0x20..0x7e except '&' directly */
+                    if ((!useIMAP && c<=127 && encodeDirectly[c]==1) || (useIMAP && inSetDIMAP(c))) {
+                        /* encode directly */
+                        target.put((byte)c);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex++);
+                        }
+                    } else if ((!useIMAP && c==PLUS) || (useIMAP && c==AMPERSAND)) {
+                        /* IMAP: output &- for & */
+                        /* UTF-7: output +- for + */
+                        target.put(useIMAP ? (byte)AMPERSAND : (byte)PLUS);
+                        if (target.hasRemaining()) {
+                            target.put((byte)MINUS);
+                            if (offsets != null) {
+                                offsets.put(sourceIndex);
+                                offsets.put(sourceIndex++);
+                            }
+                            /* realign length and targetCapacity */
+                            continue directMode;
+                        } else {
+                            if (offsets != null) {
+                                offsets.put(sourceIndex++);
+                            }
+                            errorBuffer[0]=MINUS;
+                            errorBufferLength=1;
+                            cr=CoderResult.OVERFLOW;
+                            break;
+                        }
+                    } else {
+                        /* un-read this character and switch to unicode mode */
+                        source.position(source.position() - 1);
+                        target.put(useIMAP ? (byte)AMPERSAND : (byte)PLUS);
+                        if (offsets != null) {
+                            offsets.put(sourceIndex);
+                        }
+                        inDirectMode=0;
+                        base64Counter=0;
+                        continue directMode;
+                    }
+                    --length;
+                } //end of while
+                if (source.hasRemaining() && !target.hasRemaining()) {
+                    /* target is full */
+                    cr=CoderResult.OVERFLOW;
+                }
+                break directMode;
+            } else { 
+                /* Unicode Mode */
+                while (source.hasRemaining()) {
+                    if (target.hasRemaining()) {
+                        c=source.get();
+                        if ((!useIMAP && c<=127 && encodeDirectly[c]==1) || (useIMAP && isLegal(c, useIMAP))) {
+                            /* encode directly */
+                            inDirectMode=1;
+                            
+                            /* trick: back out this character to make this easier */
+                            source.position(source.position() - 1);
+                            
+                            /* terminate the base64 sequence */
+                            if (base64Counter!=0) {
+                                /* write remaining bits for the previous character */
+                                target.put(useIMAP ? TO_BASE64_IMAP(bits) : TO_BASE_64[bits]);
+                                if (offsets!=null) {
+                                    offsets.put(sourceIndex-1);
+                                }
+                            }
+                            if (FROM_BASE_64[c]!=-1 || useIMAP) {
+                                /* need to terminate with a minus */
+                                if (target.hasRemaining()) {
+                                    target.put((byte)MINUS);
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex-1);
+                                    }
+                                } else {
+                                    errorBuffer[0]=MINUS;
+                                    errorBufferLength=1;
+                                    cr=CoderResult.OVERFLOW;
+                                    break;
+                                }
+                            }
+                            continue directMode;
+                        } else {
+                            /*
+                             * base64 this character:
+                             * Output 2 or 3 base64 bytres for the remaining bits of the previous character
+                             * and the bits of this character, each implicitly in UTF-16BE.
+                             * 
+                             * Here, bits is an 8-bit variable because only 6 bits need to be kept from one
+                             * character to the next.  The actual 2 or 4 bits are shifted to the left edge
+                             * of the 6-bits filed 5..0 to make the termination of the base64 sequence easier.
+                             */
+                            switch (base64Counter) {
+                            case 0:
+                                b=(char)(c>>10);
+                                target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                if (target.hasRemaining()) {
+                                    b=(char)((c>>4)&0x3f);
+                                    target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex);
+                                        offsets.put(sourceIndex++);
+                                    }
+                                } else {
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex++);
+                                    }
+                                    b=(char)((c>>4)&0x3f);
+                                    errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    errorBufferLength=1;
+                                    cr=CoderResult.OVERFLOW;
+                                }
+                                bits=(char)((c&15)<<2);
+                                base64Counter=1;
+                                break;
+                            case 1:
+                                b=(char)(bits|(c>>14));
+                                target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                if (target.hasRemaining()) {
+                                    b=(char)((c>>8)&0x3f);
+                                    target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                    if (target.hasRemaining()) {
+                                        b=(char)((c>>2)&0x3f);
+                                        target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                        if (offsets!=null) {
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex++);
+                                        }
+                                    } else {
+                                        if (offsets!=null) {
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex++);
+                                        }
+                                        b=(char)((c>>2)&0x3f);
+                                        errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                        errorBufferLength=1;
+                                        cr=CoderResult.OVERFLOW;
+                                    }
+                                } else {
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex++);
+                                    }
+                                    b=(char)((c>>8)&0x3f);
+                                    errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    b=(char)((c>>2)&0x3f);
+                                    errorBuffer[1]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    errorBufferLength=2;
+                                    cr=CoderResult.OVERFLOW;
+                                }
+                                bits=(char)((c&3)<<4);
+                                base64Counter=2;
+                                break;
+                            case 2:
+                                b=(char)(bits|(c>>12));
+                                target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                if (target.hasRemaining()) {
+                                    b=(char)((c>>6)&0x3f);
+                                    target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                    if (target.hasRemaining()) {
+                                        b=(char)(c&0x3f);
+                                        target.put(useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b]);
+                                        if (offsets!=null) {
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex++);
+                                        }
+                                    } else {
+                                        if (offsets!=null) {
+                                            offsets.put(sourceIndex);
+                                            offsets.put(sourceIndex++);
+                                        }
+                                        b=(char)(c&0x3f);
+                                        errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                        errorBufferLength=1;
+                                        cr=CoderResult.OVERFLOW;
+                                    }
+                                } else {
+                                    if (offsets!=null) {
+                                        offsets.put(sourceIndex++);
+                                    }
+                                    b=(char)((c>>6)&0x3f);
+                                    errorBuffer[0]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    b=(char)(c&0x3f);
+                                    errorBuffer[1]=useIMAP ? TO_BASE64_IMAP(b) : TO_BASE_64[b];
+                                    errorBufferLength=2;
+                                    cr=CoderResult.OVERFLOW;
+                                }
+                                bits=0;
+                                base64Counter=0;
+                                break;
+                           //default:
+                               /* will never occur */
+                               //break;
+                           } //end of switch 
+                        }                      
+                    } else {
+                        /* target is full */
+                        cr=CoderResult.OVERFLOW;
+                        break;
+                    }
+                } //end of while
+                break directMode;
+            }
+            } //end of directMode label
+            
+            if (flush && !source.hasRemaining()) {
+                /* flush remaining bits to the target */
+                if (inDirectMode==0) {
+                    if (base64Counter!=0) {
+                        if (target.hasRemaining()) {
+                            target.put(useIMAP ? TO_BASE64_IMAP(bits) : TO_BASE_64[bits]);
+                            if (offsets!=null) {
+                                offsets.put(sourceIndex - 1);
+                            }
+                        } else {
+                            errorBuffer[errorBufferLength++]=useIMAP ? TO_BASE64_IMAP(bits) : TO_BASE_64[bits];
+                            cr=CoderResult.OVERFLOW;
+                        }
+                    }
+                    if (useIMAP) {
+                        /* IMAP: need to terminate with a minus */
+                        if (target.hasRemaining()) {
+                            target.put((byte)MINUS);
+                            if (offsets!=null) {
+                                offsets.put(sourceIndex - 1);
+                            }
+                        } else {
+                            errorBuffer[errorBufferLength++]=MINUS;
+                            cr=CoderResult.OVERFLOW;
+                        }
+                    }
+                }
+                /*reset the state for the next conversion */
+                fromUnicodeStatus=((status&0xf0000000) | 0x1000000); /* keep version, inDirectMode=TRUE */
+            } else {
+                /* set the converter state back */
+                fromUnicodeStatus=((status&0xf0000000) | ((int)inDirectMode<<24) | (int)(((short)base64Counter & UConverterConstants.UNSIGNED_BYTE_MASK)<<16) | ((int)bits));
+            }
+            
+            return cr;
+        }
+    }
+    
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderUTF7(this);
+    }
+    
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderUTF7(this);
+    }
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getCompleteUnicodeSet(setFillIn);
+    }
+}
diff --git a/src/com/ibm/icu/charset/CharsetUTF8.java b/src/com/ibm/icu/charset/CharsetUTF8.java
new file mode 100644
index 0000000..60f33a7
--- /dev/null
+++ b/src/com/ibm/icu/charset/CharsetUTF8.java
@@ -0,0 +1,694 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.IntBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author Niti Hantaweepant
+ */
+class CharsetUTF8 extends CharsetICU {
+
+    private static final byte[] fromUSubstitution = new byte[] { (byte) 0xef, (byte) 0xbf, (byte) 0xbd };
+
+    public CharsetUTF8(String icuCanonicalName, String javaCanonicalName, String[] aliases) {
+        super(icuCanonicalName, javaCanonicalName, aliases);
+        /* max 3 bytes per code unit from UTF-8 (4 bytes from surrogate _pair_) */
+        maxBytesPerChar = 3;
+        minBytesPerChar = 1;
+        maxCharsPerByte = 1;
+    }
+
+    private static final int BITMASK_FROM_UTF8[] = { -1, 0x7f, 0x1f, 0xf, 0x7, 0x3, 0x1 };
+
+    private static final byte BYTES_FROM_UTF8[] = {
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+        3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0
+    };
+
+    /*
+     * Starting with Unicode 3.0.1: UTF-8 byte sequences of length N _must_ encode code points of or
+     * above utf8_minChar32[N]; byte sequences with more than 4 bytes are illegal in UTF-8, which is
+     * tested with impossible values for them
+     */
+    private static final int UTF8_MIN_CHAR32[] = { 0, 0, 0x80, 0x800, 0x10000,
+            Integer.MAX_VALUE, Integer.MAX_VALUE };
+
+    private final boolean isCESU8 = this instanceof CharsetCESU8;
+
+    class CharsetDecoderUTF8 extends CharsetDecoderICU {
+
+        public CharsetDecoderUTF8(CharsetICU cs) {
+            super(cs);
+        }
+
+        protected CoderResult decodeLoop(ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                boolean flush) {
+            if (!source.hasRemaining()) {
+                /* no input, nothing to do */
+                return CoderResult.UNDERFLOW;
+            }
+            if (!target.hasRemaining()) {
+                /* no output available, can't do anything */
+                return CoderResult.OVERFLOW;
+            }
+
+            if (source.hasArray() && target.hasArray()) {
+                /* source and target are backed by arrays, so use the arrays for optimal performance */
+                byte[] sourceArray = source.array();
+                int sourceIndex = source.arrayOffset() + source.position();
+                int sourceLimit = source.arrayOffset() + source.limit();
+                char[] targetArray = target.array();
+                int targetIndex = target.arrayOffset() + target.position();
+                int targetLimit = target.arrayOffset() + target.limit();
+
+                byte ch;
+                int char32, bytesExpected, bytesSoFar;
+                CoderResult cr;
+
+                if (mode == 0) {
+                    /* nothing is stored in toUnicodeStatus, read a byte as input */
+                    char32 = (toUBytesArray[0] = sourceArray[sourceIndex++]) & 0xff;
+                    bytesExpected = BYTES_FROM_UTF8[char32];
+                    char32 &= BITMASK_FROM_UTF8[bytesExpected];
+                    bytesSoFar = 1;
+                } else {
+                    /* a partially or fully built code point is stored in toUnicodeStatus */
+                    char32 = toUnicodeStatus;
+                    bytesExpected = mode;
+                    bytesSoFar = toULength;
+
+                    toUnicodeStatus = 0;
+                    mode = 0;
+                    toULength = 0;
+                }
+
+                outer: while (true) {
+                    if (bytesSoFar < bytesExpected) {
+                        /* read a trail byte and insert its relevant bits into char32 */
+                        if (sourceIndex >= sourceLimit) {
+                            /* no source left, save the state for later and break out of the loop */
+                            toUnicodeStatus = char32;
+                            mode = bytesExpected;
+                            toULength = bytesSoFar;
+                            cr = CoderResult.UNDERFLOW;
+                            break;
+                        }
+                        if (((ch = toUBytesArray[bytesSoFar] = sourceArray[sourceIndex++]) & 0xc0) != 0x80) {
+                            /* not a trail byte (is not of the form 10xxxxxx) */
+                            sourceIndex--;
+                            toULength = bytesSoFar;
+                            cr = CoderResult.malformedForLength(bytesSoFar);
+                            break;
+                        }
+                        char32 = (char32 << 6) | (ch & 0x3f);
+                        bytesSoFar++;
+                    } else if (bytesSoFar == bytesExpected && UTF8_MIN_CHAR32[bytesExpected] <= char32 && char32 <= 0x10ffff
+                            && (isCESU8 ? bytesExpected <= 3 : !UTF16.isSurrogate((char) char32))) {
+                        /*
+                         * char32 is a valid code point and is composed of the correct number of
+                         * bytes ... we now need to output it in UTF-16
+                         */
+
+                        if (char32 <= UConverterConstants.MAXIMUM_UCS2) {
+                            /* fits in 16 bits */
+                            targetArray[targetIndex++] = (char) char32;
+                        } else {
+                            /* fit char32 into 20 bits */
+                            char32 -= UConverterConstants.HALF_BASE;
+
+                            /* write out the surrogates */
+                            targetArray[targetIndex++] = (char) ((char32 >>> UConverterConstants.HALF_SHIFT) + UConverterConstants.SURROGATE_HIGH_START);
+
+                            if (targetIndex >= targetLimit) {
+                                /* put in overflow buffer (not handled here) */
+                                charErrorBufferArray[charErrorBufferBegin++] = (char) char32;
+                                cr = CoderResult.OVERFLOW;
+                                break;
+                            }
+                            targetArray[targetIndex++] = (char) ((char32 & UConverterConstants.HALF_MASK) + UConverterConstants.SURROGATE_LOW_START);
+                        }
+
+                        /*
+                         * we're finished outputing, so now we need to read in the first byte of the
+                         * next byte sequence that could form a code point
+                         */
+
+                        if (sourceIndex >= sourceLimit) {
+                            cr = CoderResult.UNDERFLOW;
+                            break;
+                        }
+                        if (targetIndex >= targetLimit) {
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+
+                        /* keep reading the next input (and writing it) while bytes == 1 */
+                        while ((bytesExpected = BYTES_FROM_UTF8[char32 = (toUBytesArray[0] = sourceArray[sourceIndex++]) & 0xff]) == 1) {
+                            targetArray[targetIndex++] = (char) char32;
+                            if (sourceIndex >= sourceLimit) {
+                                cr = CoderResult.UNDERFLOW;
+                                break outer;
+                            }
+                            if (targetIndex >= targetLimit) {
+                                cr = CoderResult.OVERFLOW;
+                                break outer;
+                            }
+                        }
+
+                        /* remove the bits that indicate the number of bytes */
+                        char32 &= BITMASK_FROM_UTF8[bytesExpected];
+                        bytesSoFar = 1;
+                    } else {
+                        /*
+                         * either the lead byte in the code sequence is invalid (bytes == 0) or the
+                         * lead byte combined with all the trail chars does not form a valid code
+                         * point
+                         */
+                        toULength = bytesSoFar;
+                        cr = CoderResult.malformedForLength(bytesSoFar);
+                        break;
+                    }
+                }
+
+                source.position(sourceIndex - source.arrayOffset());
+                target.position(targetIndex - target.arrayOffset());
+                return cr;
+
+            } else {
+
+                int sourceIndex = source.position();
+                int sourceLimit = source.limit();
+                int targetIndex = target.position();
+                int targetLimit = target.limit();
+
+                byte ch;
+                int char32, bytesExpected, bytesSoFar;
+                CoderResult cr;
+
+                if (mode == 0) {
+                    /* nothing is stored in toUnicodeStatus, read a byte as input */
+                    char32 = (toUBytesArray[0] = source.get(sourceIndex++)) & 0xff;
+                    bytesExpected = BYTES_FROM_UTF8[char32];
+                    char32 &= BITMASK_FROM_UTF8[bytesExpected];
+                    bytesSoFar = 1;
+                } else {
+                    /* a partially or fully built code point is stored in toUnicodeStatus */
+                    char32 = toUnicodeStatus;
+                    bytesExpected = mode;
+                    bytesSoFar = toULength;
+
+                    toUnicodeStatus = 0;
+                    mode = 0;
+                    toULength = 0;
+                }
+
+                outer: while (true) {
+                    if (bytesSoFar < bytesExpected) {
+                        /* read a trail byte and insert its relevant bits into char32 */
+                        if (sourceIndex >= sourceLimit) {
+                            /* no source left, save the state for later and break out of the loop */
+                            toUnicodeStatus = char32;
+                            mode = bytesExpected;
+                            toULength = bytesSoFar;
+                            cr = CoderResult.UNDERFLOW;
+                            break;
+                        }
+                        if (((ch = toUBytesArray[bytesSoFar] = source.get(sourceIndex++)) & 0xc0) != 0x80) {
+                            /* not a trail byte (is not of the form 10xxxxxx) */
+                            sourceIndex--;
+                            toULength = bytesSoFar;
+                            cr = CoderResult.malformedForLength(bytesSoFar);
+                            break;
+                        }
+                        char32 = (char32 << 6) | (ch & 0x3f);
+                        bytesSoFar++;
+                    }
+                    /*
+                     * Legal UTF-8 byte sequences in Unicode 3.0.1 and up:
+                     * - use only trail bytes after a lead byte (checked above)
+                     * - use the right number of trail bytes for a given lead byte
+                     * - encode a code point <= U+10ffff
+                     * - use the fewest possible number of bytes for their code points
+                     * - use at most 4 bytes (for i>=5 it is 0x10ffff<utf8_minChar32[])
+                     *
+                     * Starting with Unicode 3.2, surrogate code points must not be encoded in UTF-8.
+                     * There are no irregular sequences any more.
+                     * In CESU-8, only surrogates, not supplementary code points, are encoded directly.
+                     */
+                    else if (bytesSoFar == bytesExpected && UTF8_MIN_CHAR32[bytesExpected] <= char32 && char32 <= 0x10ffff
+                            && (isCESU8 ? bytesExpected <= 3 : !UTF16.isSurrogate((char) char32))) {
+                        /*
+                         * char32 is a valid code point and is composed of the correct number of
+                         * bytes ... we now need to output it in UTF-16
+                         */
+
+                        if (char32 <= UConverterConstants.MAXIMUM_UCS2) {
+                            /* fits in 16 bits */
+                            target.put(targetIndex++, (char) char32);
+                        } else {
+                            /* fit char32 into 20 bits */
+                            char32 -= UConverterConstants.HALF_BASE;
+
+                            /* write out the surrogates */
+                            target.put(
+                                    targetIndex++,
+                                    (char) ((char32 >>> UConverterConstants.HALF_SHIFT) + UConverterConstants.SURROGATE_HIGH_START));
+
+                            if (targetIndex >= targetLimit) {
+                                /* put in overflow buffer (not handled here) */
+                                charErrorBufferArray[charErrorBufferBegin++] = (char) char32;
+                                cr = CoderResult.OVERFLOW;
+                                break;
+                            }
+                            target.put(
+                                    targetIndex++,
+                                    (char) ((char32 & UConverterConstants.HALF_MASK) + UConverterConstants.SURROGATE_LOW_START));
+                        }
+
+                        /*
+                         * we're finished outputing, so now we need to read in the first byte of the
+                         * next byte sequence that could form a code point
+                         */
+
+                        if (sourceIndex >= sourceLimit) {
+                            cr = CoderResult.UNDERFLOW;
+                            break;
+                        }
+                        if (targetIndex >= targetLimit) {
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+
+                        /* keep reading the next input (and writing it) while bytes == 1 */
+                        while ((bytesExpected = BYTES_FROM_UTF8[char32 = (toUBytesArray[0] = source.get(sourceIndex++)) & 0xff]) == 1) {
+                            target.put(targetIndex++, (char) char32);
+                            if (sourceIndex >= sourceLimit) {
+                                cr = CoderResult.UNDERFLOW;
+                                break outer;
+                            }
+                            if (targetIndex >= targetLimit) {
+                                cr = CoderResult.OVERFLOW;
+                                break outer;
+                            }
+                        }
+
+                        /* remove the bits that indicate the number of bytes */
+                        char32 &= BITMASK_FROM_UTF8[bytesExpected];
+                        bytesSoFar = 1;
+                    } else {
+                        /*
+                         * either the lead byte in the code sequence is invalid (bytes == 0) or the
+                         * lead byte combined with all the trail chars does not form a valid code
+                         * point
+                         */
+                        toULength = bytesSoFar;
+                        cr = CoderResult.malformedForLength(bytesSoFar);
+                        break;
+                    }
+                }
+
+                source.position(sourceIndex);
+                target.position(targetIndex);
+                return cr;
+            }
+        }
+
+    }
+
+    class CharsetEncoderUTF8 extends CharsetEncoderICU {
+
+        public CharsetEncoderUTF8(CharsetICU cs) {
+            super(cs, fromUSubstitution);
+            implReset();
+        }
+
+        protected void implReset() {
+            super.implReset();
+        }
+
+        protected CoderResult encodeLoop(CharBuffer source, ByteBuffer target, IntBuffer offsets,
+                boolean flush) {
+            if (!source.hasRemaining()) {
+                /* no input, nothing to do */
+                return CoderResult.UNDERFLOW;
+            }
+            if (!target.hasRemaining()) {
+                /* no output available, can't do anything */
+                return CoderResult.OVERFLOW;
+            }
+
+            if (source.hasArray() && target.hasArray()) {
+                /* source and target are backed by arrays, so use the arrays for optimal performance */
+                char[] sourceArray = source.array();
+                int srcIdx = source.arrayOffset() + source.position();
+                int sourceLimit = source.arrayOffset() + source.limit();
+                byte[] targetArray = target.array();
+                int tgtIdx = target.arrayOffset() + target.position();
+                int targetLimit = target.arrayOffset() + target.limit();
+
+                int char32;
+                CoderResult cr;
+
+                /* take care of the special condition of fromUChar32 not being 0 (it is a surrogate) */
+                if (fromUChar32 != 0) {
+                    /* 4 bytes to encode from char32 and a following char in source */
+
+                    sourceIndex = srcIdx;
+                    targetIndex = tgtIdx;
+                    cr = encodeFourBytes(sourceArray, targetArray, sourceLimit, targetLimit,
+                            fromUChar32);
+                    srcIdx = sourceIndex;
+                    tgtIdx = targetIndex;
+                    if (cr != null) {
+                        source.position(srcIdx - source.arrayOffset());
+                        target.position(tgtIdx - target.arrayOffset());
+                        return cr;
+                    }
+                }
+
+                while (true) {
+                    if (srcIdx >= sourceLimit) {
+                        /* nothing left to read */
+                        cr = CoderResult.UNDERFLOW;
+                        break;
+                    }
+                    if (tgtIdx >= targetLimit) {
+                        /* no space left to write */
+                        cr = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    /* reach the next char into char32 */
+                    char32 = sourceArray[srcIdx++];
+
+                    if (char32 <= 0x7f) {
+                        /* 1 byte to encode from char32 */
+
+                        targetArray[tgtIdx++] = encodeHeadOf1(char32);
+
+                    } else if (char32 <= 0x7ff) {
+                        /* 2 bytes to encode from char32 */
+
+                        targetArray[tgtIdx++] = encodeHeadOf2(char32);
+
+                        if (tgtIdx >= targetLimit) {
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        targetArray[tgtIdx++] = encodeLastTail(char32);
+
+                    } else if (!UTF16.isSurrogate((char) char32) || isCESU8) {
+                        /* 3 bytes to encode from char32 */
+
+                        targetArray[tgtIdx++] = encodeHeadOf3(char32);
+
+                        if (tgtIdx >= targetLimit) {
+                            errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        targetArray[tgtIdx++] = encodeSecondToLastTail(char32);
+
+                        if (tgtIdx >= targetLimit) {
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        targetArray[tgtIdx++] = encodeLastTail(char32);
+
+                    } else {
+                        /* 4 bytes to encode from char32 and a following char in source */
+
+                        sourceIndex = srcIdx;
+                        targetIndex = tgtIdx;
+                        cr = encodeFourBytes(sourceArray, targetArray, sourceLimit, targetLimit,
+                                char32);
+                        srcIdx = sourceIndex;
+                        tgtIdx = targetIndex;
+                        if (cr != null)
+                            break;
+                    }
+                }
+
+                /* set the new source and target positions and return the CoderResult stored in cr */
+                source.position(srcIdx - source.arrayOffset());
+                target.position(tgtIdx - target.arrayOffset());
+                return cr;
+
+            } else {
+                int char32;
+                CoderResult cr;
+
+                /* take care of the special condition of fromUChar32 not being 0 (it is a surrogate) */
+                if (fromUChar32 != 0) {
+                    /* 4 bytes to encode from char32 and a following char in source */
+
+                    cr = encodeFourBytes(source, target, fromUChar32);
+                    if (cr != null)
+                        return cr;
+                }
+
+                while (true) {
+                    if (!source.hasRemaining()) {
+                        /* nothing left to read */
+                        cr = CoderResult.UNDERFLOW;
+                        break;
+                    }
+                    if (!target.hasRemaining()) {
+                        /* no space left to write */
+                        cr = CoderResult.OVERFLOW;
+                        break;
+                    }
+
+                    /* reach the next char into char32 */
+                    char32 = source.get();
+
+                    if (char32 <= 0x7f) {
+                        /* 1 byte to encode from char32 */
+
+                        target.put(encodeHeadOf1(char32));
+
+                    } else if (char32 <= 0x7ff) {
+                        /* 2 bytes to encode from char32 */
+
+                        target.put(encodeHeadOf2(char32));
+
+                        if (!target.hasRemaining()) {
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        target.put(encodeLastTail(char32));
+
+                    } else if (!UTF16.isSurrogate((char) char32) || isCESU8) {
+                        /* 3 bytes to encode from char32 */
+
+                        target.put(encodeHeadOf3(char32));
+
+                        if (!target.hasRemaining()) {
+                            errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        target.put(encodeSecondToLastTail(char32));
+
+                        if (!target.hasRemaining()) {
+                            errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                            cr = CoderResult.OVERFLOW;
+                            break;
+                        }
+                        target.put(encodeLastTail(char32));
+
+                    } else {
+                        /* 4 bytes to encode from char32 and a following char in source */
+
+                        cr = encodeFourBytes(source, target, char32);
+                        if (cr != null)
+                            break;
+                    }
+                }
+
+                /* set the new source and target positions and return the CoderResult stored in cr */
+                return cr;
+            }
+        }
+
+        private final CoderResult encodeFourBytes(char[] sourceArray, byte[] targetArray,
+                int sourceLimit, int targetLimit, int char32) {
+
+            /* we need to read another char to match up the surrogate stored in char32 */
+            /* handle the surrogate stuff, returning on a non-null CoderResult */
+            CoderResult cr = handleSurrogates(sourceArray, sourceIndex, sourceLimit, (char)char32);
+            if (cr != null)
+                return cr;
+            
+            sourceIndex++;
+            char32 = fromUChar32;
+            fromUChar32 = 0;
+
+            /* the rest is routine -- encode four bytes, stopping on overflow */
+
+            targetArray[targetIndex++] = encodeHeadOf4(char32);
+
+            if (targetIndex >= targetLimit) {
+                errorBuffer[errorBufferLength++] = encodeThirdToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            targetArray[targetIndex++] = encodeThirdToLastTail(char32);
+
+            if (targetIndex >= targetLimit) {
+                errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            targetArray[targetIndex++] = encodeSecondToLastTail(char32);
+
+            if (targetIndex >= targetLimit) {
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            targetArray[targetIndex++] = encodeLastTail(char32);
+
+            /* return null for success */
+            return null;
+        }
+
+        private final CoderResult encodeFourBytes(CharBuffer source, ByteBuffer target, int char32) {
+
+            /* handle the surrogate stuff, returning on a non-null CoderResult */
+            CoderResult cr = handleSurrogates(source, (char)char32);
+            if (cr != null)
+                return cr;
+            
+            char32 = fromUChar32;
+            fromUChar32 = 0;
+            
+            /* the rest is routine -- encode four bytes, stopping on overflow */
+
+            target.put(encodeHeadOf4(char32));
+
+            if (!target.hasRemaining()) {
+                errorBuffer[errorBufferLength++] = encodeThirdToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            target.put(encodeThirdToLastTail(char32));
+
+            if (!target.hasRemaining()) {
+                errorBuffer[errorBufferLength++] = encodeSecondToLastTail(char32);
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            target.put(encodeSecondToLastTail(char32));
+
+            if (!target.hasRemaining()) {
+                errorBuffer[errorBufferLength++] = encodeLastTail(char32);
+                return CoderResult.OVERFLOW;
+            }
+            target.put(encodeLastTail(char32));
+
+            /* return null for success */
+            return null;
+        }
+
+        private int sourceIndex;
+
+        private int targetIndex;
+
+    }
+
+    private static final byte encodeHeadOf1(int char32) {
+        return (byte) char32;
+    }
+
+    private static final byte encodeHeadOf2(int char32) {
+        return (byte) (0xc0 | (char32 >>> 6));
+    }
+
+    private static final byte encodeHeadOf3(int char32) {
+        return (byte) (0xe0 | ((char32 >>> 12)));
+    }
+
+    private static final byte encodeHeadOf4(int char32) {
+        return (byte) (0xf0 | ((char32 >>> 18)));
+    }
+
+    private static final byte encodeThirdToLastTail(int char32) {
+        return (byte) (0x80 | ((char32 >>> 12) & 0x3f));
+    }
+
+    private static final byte encodeSecondToLastTail(int char32) {
+        return (byte) (0x80 | ((char32 >>> 6) & 0x3f));
+    }
+
+    private static final byte encodeLastTail(int char32) {
+        return (byte) (0x80 | (char32 & 0x3f));
+    }
+
+    /* single-code point definitions -------------------------------------------- */
+
+    /*
+     * Does this code unit (byte) encode a code point by itself (US-ASCII 0..0x7f)?
+     * @param c 8-bit code unit (byte)
+     * @return TRUE or FALSE
+     */
+    // static final boolean isSingle(byte c) {return (((c)&0x80)==0);}
+    /*
+     * Is this code unit (byte) a UTF-8 lead byte?
+     * @param c 8-bit code unit (byte)
+     * @return TRUE or FALSE
+     */
+    // static final boolean isLead(byte c) {return ((((c)-0xc0) &
+    // UConverterConstants.UNSIGNED_BYTE_MASK)<0x3e);}
+    /*
+     * Is this code unit (byte) a UTF-8 trail byte?
+     * 
+     * @param c
+     *            8-bit code unit (byte)
+     * @return TRUE or FALSE
+     */
+    /*private static final boolean isTrail(byte c) {
+        return (((c) & 0xc0) == 0x80);
+    }*/
+
+    public CharsetDecoder newDecoder() {
+        return new CharsetDecoderUTF8(this);
+    }
+
+    public CharsetEncoder newEncoder() {
+        return new CharsetEncoderUTF8(this);
+    }
+    
+    
+    void getUnicodeSetImpl( UnicodeSet setFillIn, int which){
+        getNonSurrogateUnicodeSet(setFillIn);
+    }
+}
diff --git a/src/com/ibm/icu/charset/UConverterAlias.java b/src/com/ibm/icu/charset/UConverterAlias.java
new file mode 100644
index 0000000..12c9b24
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterAlias.java
@@ -0,0 +1,831 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+package com.ibm.icu.charset;
+
+import java.io.IOException;
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+
+final class UConverterAlias {
+    static final int UNNORMALIZED = 0;
+
+    static final int STD_NORMALIZED = 1;
+
+    static final int AMBIGUOUS_ALIAS_MAP_BIT = 0x8000;
+    
+    static final int CONTAINS_OPTION_BIT = 0x4000;
+
+    static final int CONVERTER_INDEX_MASK = 0xFFF;
+
+    static final int NUM_RESERVED_TAGS = 2;
+
+    static final int NUM_HIDDEN_TAGS = 1;
+
+    static int[] gConverterList = null;
+
+    static int[] gTagList = null;
+
+    static int[] gAliasList = null;
+
+    static int[] gUntaggedConvArray = null;
+
+    static int[] gTaggedAliasArray = null;
+
+    static int[] gTaggedAliasLists = null;
+
+    static int[] gOptionTable = null;
+
+    static byte[] gStringTable = null;
+
+    static byte[] gNormalizedStringTable = null;
+
+    static final String GET_STRING(int idx) {
+        return new String(gStringTable, 2 * idx, (int) strlen(gStringTable, 2 * idx));
+    }
+
+    private static final String GET_NORMALIZED_STRING(int idx) {
+        return new String(gNormalizedStringTable, 2 * idx, (int) strlen(gNormalizedStringTable, 2 * idx));
+    }
+
+    public static final int strlen(byte[] sArray, int sBegin)
+    {
+        int i = sBegin;
+        while(i < sArray.length && sArray[i++] != 0) {}
+        return i - sBegin - 1;
+    }
+
+    /*private*/ static final int tocLengthIndex = 0;
+
+    private static final int converterListIndex = 1;
+
+    private static final int tagListIndex = 2;
+
+    private static final int aliasListIndex = 3;
+
+    private static final int untaggedConvArrayIndex = 4;
+
+    private static final int taggedAliasArrayIndex = 5;
+
+    private static final int taggedAliasListsIndex = 6;
+
+    private static final int optionTableIndex = 7;
+
+    private static final int stringTableIndex = 8;
+
+    private static final int normalizedStringTableIndex = 9;
+
+    private static final int minTocLength = 9; /*
+                                                 * min. tocLength in the file,
+                                                 * does not count the
+                                                 * tocLengthIndex!
+                                                 */
+
+    private static final int offsetsCount = minTocLength + 1; /*
+                                                                 * length of the
+                                                                 * swapper's
+                                                                 * temporary
+                                                                 * offsets[]
+                                                                 */
+
+    static ByteBuffer gAliasData = null;
+
+    private static final boolean isAlias(String alias) {
+        if (alias == null) {
+            throw new IllegalArgumentException("Alias param is null!");
+        }
+        return (alias.length() != 0);
+    }
+
+    private static final String CNVALIAS_DATA_FILE_NAME = ICUResourceBundle.ICU_BUNDLE + "/cnvalias.icu";
+
+    /**
+     * Default buffer size of datafile
+     */
+    private static final int CNVALIAS_DATA_BUFFER_SIZE = 25000;
+
+    private static final synchronized boolean haveAliasData() 
+                                               throws IOException{
+        boolean needInit;
+
+        // agljport:todo umtx_lock(NULL);
+        needInit = gAliasData == null;
+
+        /* load converter alias data from file if necessary */
+        if (needInit) {
+            ByteBuffer data = null;
+            int[] tableArray = null;
+            int tableStart;
+            //byte[] reservedBytes = null;
+
+            InputStream i = ICUData.getRequiredStream(CNVALIAS_DATA_FILE_NAME);
+            BufferedInputStream b = new BufferedInputStream(i, CNVALIAS_DATA_BUFFER_SIZE);
+            UConverterAliasDataReader reader = new UConverterAliasDataReader(b);
+            tableArray = reader.readToc(offsetsCount);
+
+            tableStart = tableArray[0];
+            if (tableStart < minTocLength) {
+                throw new IOException("Invalid data format.");
+            }
+            gConverterList = new int[(int)tableArray[converterListIndex]];
+            gTagList= new int[(int)tableArray[tagListIndex]];
+            gAliasList = new int[(int)tableArray[aliasListIndex]];
+            gUntaggedConvArray = new int[(int)tableArray[untaggedConvArrayIndex]];
+            gTaggedAliasArray = new int[(int)tableArray[taggedAliasArrayIndex]];
+            gTaggedAliasLists = new int[(int)tableArray[taggedAliasListsIndex]];
+            gOptionTable = new int[(int)tableArray[optionTableIndex]];
+            gStringTable = new byte[(int)tableArray[stringTableIndex]*2];
+            gNormalizedStringTable = new byte[(int)tableArray[normalizedStringTableIndex]*2];
+
+            reader.read(gConverterList, gTagList,
+                    gAliasList, gUntaggedConvArray,
+                    gTaggedAliasArray, gTaggedAliasLists,
+                    gOptionTable, gStringTable, gNormalizedStringTable);
+            data =  ByteBuffer.allocate(0); // dummy UDataMemory object in absence
+                                        // of memory mapping
+
+            if (gOptionTable[0] != STD_NORMALIZED) {
+                throw new IOException("Unsupported alias normalization");
+            }
+            
+            // agljport:todo umtx_lock(NULL);
+            if (gAliasData == null) {
+                gAliasData = data;
+                data = null;
+
+                // agljport:fix ucln_common_registerCleanup(UCLN_COMMON_IO,
+                // io_cleanup);
+            }
+            // agljport:todo umtx_unlock(NULL);
+
+            /* if a different thread set it first, then close the extra data */
+            if (data != null) {
+                // agljport:fix udata_close(data); /* NULL if it was set
+                // correctly */
+            }
+        }
+
+        return true;
+    }
+
+    // U_CFUNC const char * io_getConverterName(const char *alias, UErrorCode
+    // *pErrorCode)
+//    public static final String io_getConverterName(String alias)
+//                                    throws IOException{
+//        if (haveAliasData() && isAlias(alias)) {
+//            boolean[] isAmbigous = new boolean[1];
+//            int convNum = findConverter(alias, isAmbigous);
+//            if (convNum < gConverterList.length) {
+//                return GET_STRING(gConverterList[(int) convNum]);
+//            }
+//            /* else converter not found */
+//        }
+//        return null;
+//    }
+
+    /*
+     * search for an alias return the converter number index for gConverterList
+     */
+    // static U_INLINE uint32_t findConverter(const char *alias, UErrorCode
+    // *pErrorCode)
+    private static final int findConverter(String alias, boolean[] isAmbigous) {
+        int mid, start, limit;
+        int lastMid;
+        int result;
+        StringBuffer strippedName = new StringBuffer();
+        String aliasToCompare;
+
+        stripForCompare(strippedName, alias);
+        alias = strippedName.toString();
+
+        /* do a binary search for the alias */
+        start = 0;
+        limit = gUntaggedConvArray.length;
+        mid = limit;
+        lastMid = Integer.MAX_VALUE;
+
+        for (;;) {
+            mid = (start + limit) / 2;
+            if (lastMid == mid) { /* Have we moved? */
+                break; /* We haven't moved, and it wasn't found. */
+            }
+            lastMid = mid;
+            aliasToCompare = GET_NORMALIZED_STRING(gAliasList[(int) mid]);
+            result = alias.compareTo(aliasToCompare);
+
+            if (result < 0) {
+                limit = mid;
+            } else if (result > 0) {
+                start = mid;
+            } else {
+                /*
+                 * Since the gencnval tool folds duplicates into one entry, this
+                 * alias in gAliasList is unique, but different standards may
+                 * map an alias to different converters.
+                 */
+                if ((gUntaggedConvArray[(int) mid] & AMBIGUOUS_ALIAS_MAP_BIT) != 0) {
+                    isAmbigous[0]=true;
+                }
+                /* State whether the canonical converter name contains an option.
+                This information is contained in this list in order to maintain backward & forward compatibility. */
+                /*if (containsOption) {
+                    UBool containsCnvOptionInfo = (UBool)gMainTable.optionTable->containsCnvOptionInfo;
+                    *containsOption = (UBool)((containsCnvOptionInfo
+                        && ((gMainTable.untaggedConvArray[mid] & UCNV_CONTAINS_OPTION_BIT) != 0))
+                        || !containsCnvOptionInfo);
+                }*/
+                return gUntaggedConvArray[(int) mid] & CONVERTER_INDEX_MASK;
+            }
+        }
+        return Integer.MAX_VALUE;
+    }
+
+    /**
+     * stripForCompare Remove the underscores, dashes and spaces from
+     * the name, and convert the name to lower case.
+     * 
+     * @param dst The destination buffer, which is <= the buffer of name.
+     * @param name The alias to strip
+     * @return the destination buffer.
+     */
+    public static final StringBuffer stripForCompare(StringBuffer dst, String name) {
+        return io_stripASCIIForCompare(dst, name);
+    }
+
+    // enum {
+    private static final byte IGNORE = 0;
+    private static final byte ZERO = 1;
+    private static final byte NONZERO = 2;
+    static final byte MINLETTER = 3; /* any values from here on are lowercase letter mappings */
+    // }
+    
+    /* character types for ASCII 00..7F */
+    static final byte asciiTypes[] = new byte[] {
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        ZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, NONZERO, 0, 0, 0, 0, 0, 0,
+        0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0, 0, 0, 0, 0,
+        0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0, 0, 0, 0, 0
+    };
+
+    private static final char GET_CHAR_TYPE(char c) {
+        return (char)((c < asciiTypes.length) ? asciiTypes[c] : (char)IGNORE);
+    }
+    
+    /** @see UConverterAlias#compareNames */
+    private static final StringBuffer io_stripASCIIForCompare(StringBuffer dst, String name) {
+        int nameIndex = 0;
+        char type, nextType;
+        char c1;
+        boolean afterDigit = false;
+
+        while (nameIndex < name.length()) {
+            c1 = name.charAt(nameIndex++);
+            type = GET_CHAR_TYPE(c1);
+            switch (type) {
+            case IGNORE:
+                afterDigit = false;
+                continue; /* ignore all but letters and digits */
+            case ZERO:
+                if (!afterDigit && nameIndex < name.length()) {
+                    nextType = GET_CHAR_TYPE(name.charAt(nameIndex));
+                    if (nextType == ZERO || nextType == NONZERO) {
+                        continue; /* ignore leading zero before another digit */
+                    }
+                }
+                break;
+            case NONZERO:
+                afterDigit = true;
+                break;
+            default:
+                c1 = (char)type; /* lowercased letter */
+                afterDigit = false;
+                break;
+            }
+            dst.append(c1);
+        }
+        return dst;
+    }
+
+    /**
+     * Do a fuzzy compare of a two converter/alias names. The comparison is
+     * case-insensitive. It also ignores the characters '-', '_', and ' ' (dash,
+     * underscore, and space). Thus the strings "UTF-8", "utf_8", and "Utf 8"
+     * are exactly equivalent.
+     * 
+     * This is a symmetrical (commutative) operation; order of arguments is
+     * insignificant. This is an important property for sorting the list (when
+     * the list is preprocessed into binary form) and for performing binary
+     * searches on it at run time.
+     * 
+     * @param name1
+     *            a converter name or alias, zero-terminated
+     * @param name2
+     *            a converter name or alias, zero-terminated
+     * @return 0 if the names match, or a negative value if the name1 lexically
+     *         precedes name2, or a positive value if the name1 lexically
+     *         follows name2.
+     * 
+     * @see UConverterAlias#stripForCompare
+     */
+    static int compareNames(String name1, String name2){
+        int rc, name1Index = 0, name2Index = 0;
+        char type, nextType;
+        char c1 = 0, c2 = 0;
+        boolean afterDigit1 = false, afterDigit2 = false;
+
+        for (;;) {
+            while (name1Index < name1.length()) {
+                c1 = name1.charAt(name1Index++);
+                type = GET_CHAR_TYPE(c1);
+                switch (type) {
+                case IGNORE:
+                    afterDigit1 = false;
+                    continue; /* ignore all but letters and digits */
+                case ZERO:
+                    if (!afterDigit1 && name1Index < name1.length()) {
+                        nextType = GET_CHAR_TYPE(name1.charAt(name1Index));
+                        if (nextType == ZERO || nextType == NONZERO) {
+                            continue; /* ignore leading zero before another digit */
+                        }
+                    }
+                    break;
+                case NONZERO:
+                    afterDigit1 = true;
+                    break;
+                default:
+                    c1 = (char)type; /* lowercased letter */
+                    afterDigit1 = false;
+                    break;
+                }
+                break; /* deliver c1 */
+            }
+            while (name2Index < name2.length()) {
+                c2 = name2.charAt(name2Index++);
+                type = GET_CHAR_TYPE(c2);
+                switch (type) {
+                case IGNORE:
+                    afterDigit2 = false;
+                    continue; /* ignore all but letters and digits */
+                case ZERO:
+                    if (!afterDigit2 && name1Index < name1.length()) {
+                        nextType = GET_CHAR_TYPE(name2.charAt(name2Index));
+                        if (nextType == ZERO || nextType == NONZERO) {
+                            continue; /* ignore leading zero before another digit */
+                        }
+                    }
+                    break;
+                case NONZERO:
+                    afterDigit2 = true;
+                    break;
+                default:
+                    c2 = (char)type; /* lowercased letter */
+                    afterDigit2 = false;
+                    break;
+                }
+                break; /* deliver c2 */
+            }
+
+            /* If we reach the ends of both strings then they match */
+            if (name1Index >= name1.length() && name2Index >= name2.length()) {
+                return 0;
+            }
+
+            /* Case-insensitive comparison */
+            rc = (int)c1 - (int)c2;
+            if (rc != 0) {
+                return rc;
+            }
+        }
+    }
+
+    static int io_countAliases(String alias) 
+                        throws IOException{
+        if (haveAliasData() && isAlias(alias)) {
+            boolean[] isAmbigous = new boolean[1];
+            int convNum = findConverter(alias, isAmbigous);
+            if (convNum < gConverterList.length) {
+                /* tagListNum - 1 is the ALL tag */
+                int listOffset = gTaggedAliasArray[(int) ((gTagList.length - 1)
+                        * gConverterList.length + convNum)];
+
+                if (listOffset != 0) {
+                    return gTaggedAliasLists[listOffset];
+                }
+                /* else this shouldn't happen. internal program error */
+            }
+            /* else converter not found */
+        }
+        return 0;
+    }
+
+    /**
+     * Return the number of all aliases (and converter names).
+     * 
+     * @return the number of all aliases
+     */
+    // U_CFUNC uint16_t io_countTotalAliases(UErrorCode *pErrorCode);
+//    static int io_countTotalAliases() throws IOException{
+//        if (haveAliasData()) {
+//            return (int) gAliasList.length;
+//        }
+//        return 0;
+//    }
+
+    // U_CFUNC const char * io_getAlias(const char *alias, uint16_t n,
+    // UErrorCode *pErrorCode)
+    static String io_getAlias(String alias, int n) throws IOException{
+        if (haveAliasData() && isAlias(alias)) {
+            boolean[] isAmbigous = new boolean[1];
+            int convNum = findConverter(alias,isAmbigous);
+            if (convNum < gConverterList.length) {
+                /* tagListNum - 1 is the ALL tag */
+                int listOffset = gTaggedAliasArray[(int) ((gTagList.length - 1)
+                        * gConverterList.length + convNum)];
+
+                if (listOffset != 0) {
+                    //int listCount = gTaggedAliasListsArray[listOffset];
+                    /* +1 to skip listCount */
+                    int[] currListArray = gTaggedAliasLists;
+                    int currListArrayIndex = listOffset + 1;
+
+                    return GET_STRING(currListArray[currListArrayIndex + n]);
+                    
+                }
+                /* else this shouldn't happen. internal program error */
+            }
+            /* else converter not found */
+        }
+        return null;
+    }
+
+    // U_CFUNC uint16_t io_countStandards(UErrorCode *pErrorCode) {
+//    static int io_countStandards() throws IOException{
+//        if (haveAliasData()) {
+//            return (int) (gTagList.length - NUM_HIDDEN_TAGS);
+//        }
+//        return 0;
+//    }
+
+    // U_CAPI const char * U_EXPORT2getStandard(uint16_t n, UErrorCode
+    // *pErrorCode)
+//    static String getStandard(int n) throws IOException{
+//        if (haveAliasData()) {
+//            return GET_STRING(gTagList[n]);
+//        }
+//        return null;
+//    }
+
+    // U_CAPI const char * U_EXPORT2 getStandardName(const char *alias, const
+    // char *standard, UErrorCode *pErrorCode)
+    static final String getStandardName(String alias, String standard)throws IOException {
+        if (haveAliasData() && isAlias(alias)) {
+            int listOffset = findTaggedAliasListsOffset(alias, standard);
+
+            if (0 < listOffset && listOffset < gTaggedAliasLists.length) {
+                int[] currListArray = gTaggedAliasLists;
+                int currListArrayIndex = listOffset + 1;
+                if (currListArray[0] != 0) {
+                    return GET_STRING(currListArray[(int) currListArrayIndex]);
+                }
+            }
+        }
+        return null;
+    }
+
+    // U_CAPI uint16_t U_EXPORT2 countAliases(const char *alias, UErrorCode
+    // *pErrorCode)
+    static int countAliases(String alias) throws IOException{
+        return io_countAliases(alias);
+    }
+
+    // U_CAPI const char* U_EXPORT2 getAlias(const char *alias, uint16_t n,
+    // UErrorCode *pErrorCode)
+    static String getAlias(String alias, int n) throws IOException{
+        return io_getAlias(alias, n);
+    }
+
+    // U_CFUNC uint16_t countStandards(void)
+//    static int countStandards()throws IOException{
+//        return io_countStandards();
+//    }
+    
+    /*returns a single Name from the list, will return NULL if out of bounds
+     */
+    static String getAvailableName (int n){
+        try{
+          if (0 <= n && n <= 0xffff) {
+            String name = bld_getAvailableConverter(n);
+            return name;
+          }
+        }catch(IOException ex){
+            //throw away exception
+        }
+        return null;
+    }
+    // U_CAPI const char * U_EXPORT2 getCanonicalName(const char *alias, const
+    // char *standard, UErrorCode *pErrorCode) {
+    static String getCanonicalName(String alias, String standard) throws IOException{
+        if (haveAliasData() && isAlias(alias)) {
+            int convNum = findTaggedConverterNum(alias, standard);
+
+            if (convNum < gConverterList.length) {
+                return GET_STRING(gConverterList[(int) convNum]);
+            }
+        }
+
+        return null;
+    }
+    static int countAvailable (){
+        try{
+            return bld_countAvailableConverters();
+        }catch(IOException ex){
+            //throw away exception
+        }
+        return -1;
+    }
+        
+    // U_CAPI UEnumeration * U_EXPORT2 openStandardNames(const char *convName,
+    // const char *standard, UErrorCode *pErrorCode)
+/*    static final UConverterAliasesEnumeration openStandardNames(String convName, String standard)throws IOException {
+        UConverterAliasesEnumeration aliasEnum = null;
+        if (haveAliasData() && isAlias(convName)) {
+            int listOffset = findTaggedAliasListsOffset(convName, standard);
+
+            
+             * When listOffset == 0, we want to acknowledge that the converter
+             * name and standard are okay, but there is nothing to enumerate.
+             
+            if (listOffset < gTaggedAliasLists.length) {
+
+                UConverterAliasesEnumeration.UAliasContext context = new UConverterAliasesEnumeration.UAliasContext(listOffset, 0);
+                aliasEnum = new UConverterAliasesEnumeration();
+                aliasEnum.setContext(context);
+            }
+             else converter or tag not found 
+        }
+        return aliasEnum;
+    }*/
+
+    // static uint32_t getTagNumber(const char *tagname)
+    private static int getTagNumber(String tagName) {
+        if (gTagList != null) {
+            int tagNum;
+            for (tagNum = 0; tagNum < gTagList.length; tagNum++) {
+                if (tagName.equals(GET_STRING(gTagList[(int) tagNum]))) {
+                    return tagNum;
+                }
+            }
+        }
+
+        return Integer.MAX_VALUE;
+    }
+
+    // static uint32_t findTaggedAliasListsOffset(const char *alias, const char
+    // *standard, UErrorCode *pErrorCode)
+    private static int findTaggedAliasListsOffset(String alias, String standard) {
+        int idx;
+        int listOffset;
+        int convNum;
+        int tagNum = getTagNumber(standard);
+        boolean[] isAmbigous = new boolean[1];
+        /* Make a quick guess. Hopefully they used a TR22 canonical alias. */
+        convNum = findConverter(alias, isAmbigous);
+
+        if (tagNum < (gTagList.length - NUM_HIDDEN_TAGS)
+                && convNum < gConverterList.length) {
+            listOffset = gTaggedAliasArray[(int) (tagNum
+                    * gConverterList.length + convNum)];
+            if (listOffset != 0
+                    && gTaggedAliasLists[(int) listOffset + 1] != 0) {
+                return listOffset;
+            }
+            if (isAmbigous[0]==true) {
+                /*
+                 * Uh Oh! They used an ambiguous alias. We have to search the
+                 * whole swiss cheese starting at the highest standard affinity.
+                 * This may take a while.
+                 */
+
+                for (idx = 0; idx < gTaggedAliasArray.length; idx++) {
+                    listOffset = gTaggedAliasArray[(int) idx];
+                    if (listOffset != 0 && isAliasInList(alias, listOffset)) {
+                        int currTagNum = idx / gConverterList.length;
+                        int currConvNum = (idx - currTagNum
+                                * gConverterList.length);
+                        int tempListOffset = gTaggedAliasArray[(int) (tagNum
+                                * gConverterList.length + currConvNum)];
+                        if (tempListOffset != 0
+                                && gTaggedAliasLists[(int) tempListOffset + 1] != 0) {
+                            return tempListOffset;
+                        }
+                        /*
+                         * else keep on looking We could speed this up by
+                         * starting on the next row because an alias is unique
+                         * per row, right now. This would change if alias
+                         * versioning appears.
+                         */
+                    }
+                }
+                /* The standard doesn't know about the alias */
+            }
+            /* else no default name */
+            return 0;
+        }
+        /* else converter or tag not found */
+
+        return Integer.MAX_VALUE;
+    }
+
+    /* Return the canonical name */
+    // static uint32_t findTaggedConverterNum(const char *alias, const char
+    // *standard, UErrorCode *pErrorCode)
+    private static int findTaggedConverterNum(String alias, String standard) {
+        int idx;
+        int listOffset;
+        int convNum;
+        int tagNum = getTagNumber(standard);
+        boolean[] isAmbigous = new boolean[1];
+        
+        /* Make a quick guess. Hopefully they used a TR22 canonical alias. */
+        convNum = findConverter(alias, isAmbigous);        
+
+        if (tagNum < (gTagList.length - NUM_HIDDEN_TAGS)
+                && convNum < gConverterList.length) {
+            listOffset = gTaggedAliasArray[(int) (tagNum
+                    * gConverterList.length + convNum)];
+            if (listOffset != 0 && isAliasInList(alias, listOffset)) {
+                return convNum;
+            }
+            if (isAmbigous[0] == true) {
+                /*
+                 * Uh Oh! They used an ambiguous alias. We have to search one
+                 * slice of the swiss cheese. We search only in the requested
+                 * tag, not the whole thing. This may take a while.
+                 */
+                int convStart = (tagNum) * gConverterList.length;
+                int convLimit = (tagNum + 1) * gConverterList.length;
+                for (idx = convStart; idx < convLimit; idx++) {
+                    listOffset = gTaggedAliasArray[(int) idx];
+                    if (listOffset != 0 && isAliasInList(alias, listOffset)) {
+                        return idx - convStart;
+                    }
+                }
+                /* The standard doesn't know about the alias */
+            }
+            /* else no canonical name */
+        }
+        /* else converter or tag not found */
+
+        return Integer.MAX_VALUE;
+    }
+
+    // static U_INLINE UBool isAliasInList(const char *alias, uint32_t
+    // listOffset)
+    private static boolean isAliasInList(String alias, int listOffset) {
+        if (listOffset != 0) {
+            int currAlias;
+            int listCount = gTaggedAliasLists[(int) listOffset];
+            /* +1 to skip listCount */
+            int[] currList = gTaggedAliasLists;
+            int currListArrayIndex = listOffset + 1;
+            for (currAlias = 0; currAlias < listCount; currAlias++) {
+                if (currList[(int) (currAlias + currListArrayIndex)] != 0
+                        && compareNames(
+                                alias,
+                                GET_STRING(currList[(int) (currAlias + currListArrayIndex)])) == 0) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    // begin bld.c
+    static String[] gAvailableConverters = null;
+
+    static int gAvailableConverterCount = 0;
+
+    static byte[] gDefaultConverterNameBuffer; // [MAX_CONVERTER_NAME_LENGTH +
+                                                // 1]; /* +1 for NULL */
+
+    static String gDefaultConverterName = null;
+
+    // static UBool haveAvailableConverterList(UErrorCode *pErrorCode)
+    static boolean haveAvailableConverterList() throws IOException{
+        if (gAvailableConverters == null) {
+            int idx;
+            int localConverterCount;
+            String converterName;
+            String[] localConverterList;
+
+            if (!haveAliasData()) {
+                return false;
+            }
+
+            /* We can't have more than "*converterTable" converters to open */
+            localConverterList = new String[(int) gConverterList.length];
+
+            localConverterCount = 0;
+
+            for (idx = 0; idx < gConverterList.length; idx++) {
+                converterName = GET_STRING(gConverterList[idx]);
+                //UConverter cnv = UConverter.open(converterName);
+                //TODO: Fix me
+                localConverterList[localConverterCount++] = converterName;
+                
+            }
+
+            // agljport:todo umtx_lock(NULL);
+            if (gAvailableConverters == null) {
+                gAvailableConverters = localConverterList;
+                gAvailableConverterCount = localConverterCount;
+                /* haveData should have already registered the cleanup function */
+            } else {
+                // agljport:todo free((char **)localConverterList);
+            }
+            // agljport:todo umtx_unlock(NULL);
+        }
+        return true;
+    }
+
+    // U_CFUNC uint16_t bld_countAvailableConverters(UErrorCode *pErrorCode)
+    static int bld_countAvailableConverters() throws IOException{
+        if (haveAvailableConverterList()) {
+            return gAvailableConverterCount;
+        }
+        return 0;
+    }
+
+    // U_CFUNC const char * bld_getAvailableConverter(uint16_t n, UErrorCode
+    // *pErrorCode)
+    static String bld_getAvailableConverter(int n) throws IOException{
+        if (haveAvailableConverterList()) {
+            if (n < gAvailableConverterCount) {
+                return gAvailableConverters[n];
+            }
+        }
+        return null;
+    }
+
+    /* default converter name --------------------------------------------------- */
+
+    /*
+     * In order to be really thread-safe, the get function would have to take
+     * a buffer parameter and copy the current string inside a mutex block.
+     * This implementation only tries to be really thread-safe while
+     * setting the name.
+     * It assumes that setting a pointer is atomic.
+     */
+
+    // U_CFUNC const char * getDefaultName()
+//    static final synchronized String getDefaultName() {
+//        /* local variable to be thread-safe */
+//        String name;
+//
+//        //agljport:todo umtx_lock(null);
+//        name = gDefaultConverterName;
+//        //agljport:todo umtx_unlock(null);
+//
+//        if (name == null) {
+//            //UConverter cnv = null;
+//            int length = 0;
+//
+//            name = CharsetICU.getDefaultCharsetName();
+//
+//            /* if the name is there, test it out and get the canonical name with options */
+//            if (name != null) {
+//               // cnv = UConverter.open(name); 
+//               // name = cnv.getName(cnv);
+//                // TODO: fix me
+//            }
+//
+//            if (name == null || name.length() == 0 ||/* cnv == null ||*/
+//                     length >= gDefaultConverterNameBuffer.length) {
+//                /* Panic time, let's use a fallback. */
+//                name = new String("US-ASCII");
+//            }
+//
+//            //length=(int32_t)(strlen(name));
+//
+//            /* Copy the name before we close the converter. */
+//            name = gDefaultConverterName;
+//        }
+//
+//        return name;
+//    }
+
+    //end bld.c
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/charset/UConverterAliasDataReader.java b/src/com/ibm/icu/charset/UConverterAliasDataReader.java
new file mode 100644
index 0000000..fa1b21e
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterAliasDataReader.java
@@ -0,0 +1,219 @@
+/*
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+import java.io.*;
+
+import com.ibm.icu.impl.ICUBinary;
+
+
+/* Format of cnvalias.icu -----------------------------------------------------
+ *
+ * cnvalias.icu is a binary, memory-mappable form of convrtrs.txt.
+ * This binary form contains several tables. All indexes are to uint16_t
+ * units, and not to the bytes (uint8_t units). Addressing everything on
+ * 16-bit boundaries allows us to store more information with small index
+ * numbers, which are also 16-bit in size. The majority of the table (except
+ * the string table) are 16-bit numbers.
+ *
+ * First there is the size of the Table of Contents (TOC). The TOC
+ * entries contain the size of each section. In order to find the offset
+ * you just need to sum up the previous offsets.
+ * The TOC length and entries are an array of uint32_t values.
+ * The first section after the TOC starts immediately after the TOC.
+ *
+ * 1) This section contains a list of converters. This list contains indexes
+ * into the string table for the converter name. The index of this list is
+ * also used by other sections, which are mentioned later on.
+ * This list is not sorted.
+ *
+ * 2) This section contains a list of tags. This list contains indexes
+ * into the string table for the tag name. The index of this list is
+ * also used by other sections, which are mentioned later on.
+ * This list is in priority order of standards.
+ *
+ * 3) This section contains a list of sorted unique aliases. This
+ * list contains indexes into the string table for the alias name. The
+ * index of this list is also used by other sections, like the 4th section.
+ * The index for the 3rd and 4th section is used to get the
+ * alias -> converter name mapping. Section 3 and 4 form a two column table.
+ *
+ * 4) This section contains a list of mapped converter names. Consider this
+ * as a table that maps the 3rd section to the 1st section. This list contains
+ * indexes into the 1st section. The index of this list is the same index in
+ * the 3rd section. There is also some extra information in the high bits of
+ * each converter index in this table. Currently it's only used to say that
+ * an alias mapped to this converter is ambiguous. See UCNV_CONVERTER_INDEX_MASK
+ * and UCNV_AMBIGUOUS_ALIAS_MAP_BIT for more information. This section is
+ * the predigested form of the 5th section so that an alias lookup can be fast.
+ *
+ * 5) This section contains a 2D array with indexes to the 6th section. This
+ * section is the full form of all alias mappings. The column index is the
+ * index into the converter list (column header). The row index is the index
+ * to tag list (row header). This 2D array is the top part a 3D array. The
+ * third dimension is in the 6th section.
+ *
+ * 6) This is blob of variable length arrays. Each array starts with a size,
+ * and is followed by indexes to alias names in the string table. This is
+ * the third dimension to the section 5. No other section should be referencing
+ * this section.
+ *
+ * 7) Reserved at this time (There is no information). This _usually_ has a
+ * size of 0. Future versions may add more information here.
+ *
+ * 8) This is the string table. All strings are indexed on an even address.
+ * There are two reasons for this. First many chip architectures locate strings
+ * faster on even address boundaries. Second, since all indexes are 16-bit
+ * numbers, this string table can be 128KB in size instead of 64KB when we
+ * only have strings starting on an even address.
+ *
+ *
+ * Here is the concept of section 5 and 6. It's a 3D cube. Each tag
+ * has a unique alias among all converters. That same alias can
+ * be mentioned in other standards on different converters,
+ * but only one alias per tag can be unique.
+ *
+ *
+ *              Converter Names (Usually in TR22 form)
+ *           -------------------------------------------.
+ *     T    /                                          /|
+ *     a   /                                          / |
+ *     g  /                                          /  |
+ *     s /                                          /   |
+ *      /                                          /    |
+ *      ------------------------------------------/     |
+ *    A |                                         |     |
+ *    l |                                         |     |
+ *    i |                                         |    /
+ *    a |                                         |   /
+ *    s |                                         |  /
+ *    e |                                         | /
+ *    s |                                         |/
+ *      -------------------------------------------
+ *
+ *
+ *
+ * Here is what it really looks like. It's like swiss cheese.
+ * There are holes. Some converters aren't recognized by
+ * a standard, or they are really old converters that the
+ * standard doesn't recognize anymore.
+ *
+ *              Converter Names (Usually in TR22 form)
+ *           -------------------------------------------.
+ *     T    /##########################################/|
+ *     a   /     #            #                       /#
+ *     g  /  #      ##     ##     ### # ### ### ### #/
+ *     s / #             #####  ####        ##  ## #/#
+ *      / ### # # ##  #  #   #          ### # #   #/##
+ *      ------------------------------------------/# #
+ *    A |### # # ##  #  #   #          ### # #   #|# #
+ *    l |# # #    #     #               ## #     #|# #
+ *    i |# # #    #     #                #       #|#
+ *    a |#                                       #|#
+ *    s |                                        #|#
+ *    e
+ *    s
+ *
+ */
+
+final class UConverterAliasDataReader implements ICUBinary.Authenticate {
+//    private final static boolean debug = ICUDebug.enabled("UConverterAliasDataReader");
+    
+   /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected UConverterAliasDataReader(InputStream inputStream) 
+                                        throws IOException{
+        //if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        /*unicodeVersion = */ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
+        
+        //if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        //if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    // protected methods -------------------------------------------------
+    
+    protected int[] readToc(int n)throws IOException
+    {
+        int[] toc = new int[n];
+        //Read the toc
+        for (int i = 0; i < n ; ++i) {
+            toc[i] = dataInputStream.readInt() & UNSIGNED_INT_MASK;
+        }
+        return toc;
+    } 
+        
+    protected void read(int[] convList, int[] tagList, int[] aliasList, int[]untaggedConvArray, int[] taggedAliasArray, int[] taggedAliasLists, int[] optionTable, byte[] stringTable, byte[] normalizedStringTable) throws IOException{
+        int i;
+        //int listnum = 1;
+        //long listsize;
+
+        for(i = 0; i < convList.length; ++i)
+            convList[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < tagList.length; ++i)
+            tagList[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < aliasList.length; ++i)
+            aliasList[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < untaggedConvArray.length; ++i)
+            untaggedConvArray[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < taggedAliasArray.length; ++i)
+            taggedAliasArray[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < taggedAliasLists.length; ++i)
+            taggedAliasLists[i] = dataInputStream.readUnsignedShort();
+
+        for(i = 0; i < optionTable.length; ++i)
+            optionTable[i] = dataInputStream.readUnsignedShort();
+
+        dataInputStream.readFully(stringTable);
+        dataInputStream.readFully(normalizedStringTable);
+    }
+
+    public boolean isDataVersionAcceptable(byte version[])
+    {
+        return version.length >= DATA_FORMAT_VERSION.length
+            && version[0] == DATA_FORMAT_VERSION[0]
+            && version[1] == DATA_FORMAT_VERSION[1]
+            && version[2] == DATA_FORMAT_VERSION[2];
+    }
+    
+    /*byte[] getUnicodeVersion(){
+        return unicodeVersion;    
+    }*/
+    // private data members -------------------------------------------------
+      
+
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream dataInputStream;
+    
+//    private byte[] unicodeVersion;
+                                       
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+        // DATA_FORMAT_ID_ values taken from icu4c isAcceptable (ucnv_io.c)
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x43, (byte)0x76, (byte)0x41, (byte)0x6c}; // dataFormat="CvAl"
+    private static final byte DATA_FORMAT_VERSION[] = {3, 0, 1};
+
+    //private static final int UNSIGNED_SHORT_MASK = 0xffff;
+    private static final int UNSIGNED_INT_MASK = 0xffffffff;
+    
+}
diff --git a/src/com/ibm/icu/charset/UConverterConstants.java b/src/com/ibm/icu/charset/UConverterConstants.java
new file mode 100644
index 0000000..2fdf507
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterConstants.java
@@ -0,0 +1,169 @@
+/*
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/ 
+package com.ibm.icu.charset;
+
+interface UConverterConstants {
+
+    static final short UNSIGNED_BYTE_MASK = 0xff;
+    static final int UNSIGNED_SHORT_MASK = 0xffff;
+    static final long UNSIGNED_INT_MASK = 0xffffffffL;
+    
+    static final int U_IS_BIG_ENDIAN = 0;
+
+    /**
+     * Useful constant for the maximum size of the whole locale ID
+     * (including the terminating NULL).
+     */
+    static final int ULOC_FULLNAME_CAPACITY = 56;
+
+    /**
+     * This value is intended for sentinel values for APIs that
+     * (take or) return single code points (UChar32).
+     * It is outside of the Unicode code point range 0..0x10ffff.
+     * 
+     * For example, a "done" or "error" value in a new API
+     * could be indicated with U_SENTINEL.
+     *
+     * ICU APIs designed before ICU 2.4 usually define service-specific "done"
+     * values, mostly 0xffff.
+     * Those may need to be distinguished from
+     * actual U+ffff text contents by calling functions like
+     * CharacterIterator::hasNext() or UnicodeString::length().
+     */
+    static final int U_SENTINEL = -1;
+
+    //end utf.h
+
+    //begin ucnv.h
+    /**
+     * Character that separates converter names from options and options from each other.
+     * @see CharsetICU#forNameICU(String)
+     */
+    static final byte OPTION_SEP_CHAR  = ',';
+
+    /** Maximum length of a converter name including the terminating NULL */
+    static final int MAX_CONVERTER_NAME_LENGTH  = 60;
+    /** Maximum length of a converter name including path and terminating NULL */
+    static final int MAX_FULL_FILE_NAME_LENGTH = (600+MAX_CONVERTER_NAME_LENGTH);
+
+    /** Shift in for EBDCDIC_STATEFUL and iso2022 states */
+    static final int SI = 0x0F;
+    /** Shift out for EBDCDIC_STATEFUL and iso2022 states */
+    static final int SO = 0x0E;
+
+    //end ucnv.h
+
+    // begin bld.h
+    /* size of the overflow buffers in UConverter, enough for escaping callbacks */
+    //#define ERROR_BUFFER_LENGTH 32
+    static final int ERROR_BUFFER_LENGTH = 32;
+
+    /* at most 4 bytes per substitution character (part of .cnv file format! see UConverterStaticData) */
+    static final int MAX_SUBCHAR_LEN = 4;
+
+    /* at most 8 bytes per character in toUBytes[] (UTF-8 uses up to 6) */
+    static final int MAX_CHAR_LEN = 8;
+
+    /* converter options bits */
+    static final int OPTION_VERSION     = 0xf;
+    static final int OPTION_SWAP_LFNL   = 0x10;
+    static final int OPTION_MAC   = 0x20; //agljport:comment added for Mac ISCII encodings
+
+    static final String OPTION_SWAP_LFNL_STRING = ",swaplfnl";
+
+    /** values for the unicodeMask */
+    static final int HAS_SUPPLEMENTARY = 1;
+    static final int HAS_SURROGATES =   2;
+    // end bld.h
+
+    // begin cnv.h
+    /* this is used in fromUnicode DBCS tables as an "unassigned" marker */
+    static final int missingCharMarker = 0xFFFF;
+     /**
+      * 
+      * @author ram
+      */
+    static interface UConverterResetChoice {
+        static final int RESET_BOTH = 0;
+        static final int RESET_TO_UNICODE = RESET_BOTH + 1;
+        static final int RESET_FROM_UNICODE = RESET_TO_UNICODE + 1;
+    }
+
+    // begin utf16.h
+    /**
+     * The maximum number of 16-bit code units per Unicode code point (U+0000..U+10ffff).
+     */
+    static final int U16_MAX_LENGTH = 2;
+    // end utf16.h
+
+    // begin err.h
+    /**
+     * FROM_U, TO_U context options for sub callback
+     */
+    static byte[] SUB_STOP_ON_ILLEGAL = {'i'};
+
+    /**
+     * FROM_U, TO_U context options for skip callback
+     */
+    static byte[] SKIP_STOP_ON_ILLEGAL = {'i'};
+
+    /** 
+     * The process condition code to be used with the callbacks.  
+     * Codes which are greater than IRREGULAR should be 
+     * passed on to any chained callbacks.
+     */
+    static interface UConverterCallbackReason {
+         static final int UNASSIGNED = 0;  /**< The code point is unassigned.
+                                 The error code U_INVALID_CHAR_FOUND will be set. */
+         static final int ILLEGAL = 1;     /**< The code point is illegal. For example, 
+                                 \\x81\\x2E is illegal in SJIS because \\x2E
+                                 is not a valid trail byte for the \\x81 
+                                 lead byte.
+                                 Also, starting with Unicode 3.0.1, non-shortest byte sequences
+                                 in UTF-8 (like \\xC1\\xA1 instead of \\x61 for U+0061)
+                                 are also illegal, not just irregular.
+                                 The error code U_ILLEGAL_CHAR_FOUND will be set. */
+         static final int IRREGULAR = 2;   /**< The codepoint is not a regular sequence in 
+                                 the encoding. For example, \\xED\\xA0\\x80..\\xED\\xBF\\xBF
+                                 are irregular UTF-8 byte sequences for single surrogate
+                                 code points.
+                                 The error code U_INVALID_CHAR_FOUND will be set. */
+         static final int RESET = 3;       /**< The callback is called with this reason when a
+                                 'reset' has occured. Callback should reset all
+                                 state. */
+         static final int CLOSE = 4;        /**< Called when the converter is closed. The
+                                 callback should release any allocated memory.*/
+         static final int CLONE = 5;         /**< Called when safeClone() is called on the
+                                  converter. the pointer available as the
+                                  'context' is an alias to the original converters'
+                                  context pointer. If the context must be owned
+                                  by the new converter, the callback must clone 
+                                  the data and call setFromUCallback 
+                                  (or setToUCallback) with the correct pointer.
+                               */
+    }
+    //end err.h
+
+
+    static final String DATA_TYPE = "cnv";
+    static final int CNV_DATA_BUFFER_SIZE = 25000;
+    static final int SIZE_OF_UCONVERTER_SHARED_DATA = 100;
+
+    static final int MAXIMUM_UCS2 =            0x0000FFFF;
+    static final int MAXIMUM_UTF =             0x0010FFFF;
+    //static final int MAXIMUM_UCS4 =            0x7FFFFFFF;
+    static final int HALF_SHIFT =              10;
+    static final int HALF_BASE =               0x0010000;
+    static final int HALF_MASK =               0x3FF;
+    static final int SURROGATE_HIGH_START =    0xD800;
+    static final int SURROGATE_HIGH_END =      0xDBFF;
+    static final int SURROGATE_LOW_START =     0xDC00;
+    static final int SURROGATE_LOW_END =       0xDFFF;
+    
+    /* -SURROGATE_LOW_START + HALF_BASE */
+    static final int SURROGATE_LOW_BASE =      9216;
+}
diff --git a/src/com/ibm/icu/charset/UConverterDataReader.java b/src/com/ibm/icu/charset/UConverterDataReader.java
new file mode 100644
index 0000000..4b7d866
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterDataReader.java
@@ -0,0 +1,612 @@
+/*
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/ 
+ 
+package com.ibm.icu.charset;
+
+import com.ibm.icu.impl.ICUBinary;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.nio.ByteBuffer;
+
+/**
+ * ucnvmbcs.h
+ *
+ * ICU conversion (.cnv) data file structure, following the usual UDataInfo
+ * header.
+ *
+ * Format version: 6.2
+ *
+ * struct UConverterStaticData -- struct containing the converter name, IBM CCSID,
+ *                                min/max bytes per character, etc.
+ *                                see ucnv_bld.h
+ *
+ * --------------------
+ *
+ * The static data is followed by conversionType-specific data structures.
+ * At the moment, there are only variations of MBCS converters. They all have
+ * the same toUnicode structures, while the fromUnicode structures for SBCS
+ * differ from those for other MBCS-style converters.
+ *
+ * _MBCSHeader.version 4.2 adds an optional conversion extension data structure.
+ * If it is present, then an ICU version reading header versions 4.0 or 4.1
+ * will be able to use the base table and ignore the extension.
+ *
+ * The unicodeMask in the static data is part of the base table data structure.
+ * Especially, the UCNV_HAS_SUPPLEMENTARY flag determines the length of the
+ * fromUnicode stage 1 array.
+ * The static data unicodeMask refers only to the base table's properties if
+ * a base table is included.
+ * In an extension-only file, the static data unicodeMask is 0.
+ * The extension data indexes have a separate field with the unicodeMask flags.
+ *
+ * MBCS-style data structure following the static data.
+ * Offsets are counted in bytes from the beginning of the MBCS header structure.
+ * Details about usage in comments in ucnvmbcs.c.
+ *
+ * struct _MBCSHeader (see the definition in this header file below)
+ * contains 32-bit fields as follows:
+ * 8 values:
+ *  0   uint8_t[4]  MBCS version in UVersionInfo format (currently 4.2.0.0)
+ *  1   uint32_t    countStates
+ *  2   uint32_t    countToUFallbacks
+ *  3   uint32_t    offsetToUCodeUnits
+ *  4   uint32_t    offsetFromUTable
+ *  5   uint32_t    offsetFromUBytes
+ *  6   uint32_t    flags, bits:
+ *                      31.. 8 offsetExtension -- _MBCSHeader.version 4.2 (ICU 2.8) and higher
+ *                                                0 for older versions and if
+ *                                                there is not extension structure
+ *                       7.. 0 outputType
+ *  7   uint32_t    fromUBytesLength -- _MBCSHeader.version 4.1 (ICU 2.4) and higher
+ *                  counts bytes in fromUBytes[]
+ *
+ * if(outputType==MBCS_OUTPUT_EXT_ONLY) {
+ *     -- base table name for extension-only table
+ *     char baseTableName[variable]; -- with NUL plus padding for 4-alignment
+ *
+ *     -- all _MBCSHeader fields except for version and flags are 0
+ * } else {
+ *     -- normal base table with optional extension
+ *
+ *     int32_t stateTable[countStates][256];
+ *    
+ *     struct _MBCSToUFallback { (fallbacks are sorted by offset)
+ *         uint32_t offset;
+ *         UChar32 codePoint;
+ *     } toUFallbacks[countToUFallbacks];
+ *    
+ *     uint16_t unicodeCodeUnits[(offsetFromUTable-offsetToUCodeUnits)/2];
+ *                  (padded to an even number of units)
+ *    
+ *     -- stage 1 tables
+ *     if(staticData.unicodeMask&UCNV_HAS_SUPPLEMENTARY) {
+ *         -- stage 1 table for all of Unicode
+ *         uint16_t fromUTable[0x440]; (32-bit-aligned)
+ *     } else {
+ *         -- BMP-only tables have a smaller stage 1 table
+ *         uint16_t fromUTable[0x40]; (32-bit-aligned)
+ *     }
+ *    
+ *     -- stage 2 tables
+ *        length determined by top of stage 1 and bottom of stage 3 tables
+ *     if(outputType==MBCS_OUTPUT_1) {
+ *         -- SBCS: pure indexes
+ *         uint16_t stage 2 indexes[?];
+ *     } else {
+ *         -- DBCS, MBCS, EBCDIC_STATEFUL, ...: roundtrip flags and indexes
+ *         uint32_t stage 2 flags and indexes[?];
+ *     }
+ *    
+ *     -- stage 3 tables with byte results
+ *     if(outputType==MBCS_OUTPUT_1) {
+ *         -- SBCS: each 16-bit result contains flags and the result byte, see ucnvmbcs.c
+ *         uint16_t fromUBytes[fromUBytesLength/2];
+ *     } else {
+ *         -- DBCS, MBCS, EBCDIC_STATEFUL, ... 2/3/4 bytes result, see ucnvmbcs.c
+ *         uint8_t fromUBytes[fromUBytesLength]; or
+ *         uint16_t fromUBytes[fromUBytesLength/2]; or
+ *         uint32_t fromUBytes[fromUBytesLength/4];
+ *     }
+ * }
+ *
+ * -- extension table, details see ucnv_ext.h
+ * int32_t indexes[>=32]; ...
+ */
+/*
+ * ucnv_ext.h
+ *
+ * See icuhtml/design/conversion/conversion_extensions.html
+ *
+ * Conversion extensions serve two purposes:
+ * 1. They support m:n mappings.
+ * 2. They support extension-only conversion files that are used together
+ *    with the regular conversion data in base files.
+ *
+ * A base file may contain an extension table (explicitly requested or
+ * implicitly generated for m:n mappings), but its extension table is not
+ * used when an extension-only file is used.
+ *
+ * It is an error if a base file contains any regular (not extension) mapping
+ * from the same sequence as a mapping in the extension file
+ * because the base mapping would hide the extension mapping.
+ *
+ *
+ * Data for conversion extensions:
+ *
+ * One set of data structures per conversion direction (to/from Unicode).
+ * The data structures are sorted by input units to allow for binary search.
+ * Input sequences of more than one unit are handled like contraction tables
+ * in collation:
+ * The lookup value of a unit points to another table that is to be searched
+ * for the next unit, recursively.
+ *
+ * For conversion from Unicode, the initial code point is looked up in
+ * a 3-stage trie for speed,
+ * with an additional table of unique results to save space.
+ *
+ * Long output strings are stored in separate arrays, with length and index
+ * in the lookup tables.
+ * Output results also include a flag distinguishing roundtrip from
+ * (reverse) fallback mappings.
+ *
+ * Input Unicode strings must not begin or end with unpaired surrogates
+ * to avoid problems with matches on parts of surrogate pairs.
+ *
+ * Mappings from multiple characters (code points or codepage state
+ * table sequences) must be searched preferring the longest match.
+ * For this to work and be efficient, the variable-width table must contain
+ * all mappings that contain prefixes of the multiple characters.
+ * If an extension table is built on top of a base table in another file
+ * and a base table entry is a prefix of a multi-character mapping, then
+ * this is an error.
+ *
+ *
+ * Implementation note:
+ *
+ * Currently, the parser and several checks in the code limit the number
+ * of UChars or bytes in a mapping to
+ * UCNV_EXT_MAX_UCHARS and UCNV_EXT_MAX_BYTES, respectively,
+ * which are output value limits in the data structure.
+ *
+ * For input, this is not strictly necessary - it is a hard limit only for the
+ * buffers in UConverter that are used to store partial matches.
+ *
+ * Input sequences could otherwise be arbitrarily long if partial matches
+ * need not be stored (i.e., if a sequence does not span several buffers with too
+ * many units before the last buffer), although then results would differ
+ * depending on whether partial matches exceed the limits or not,
+ * which depends on the pattern of buffer sizes.
+ *
+ *
+ * Data structure:
+ *
+ * int32_t indexes[>=32];
+ *
+ *   Array of indexes and lengths etc. The length of the array is at least 32.
+ *   The actual length is stored in indexes[0] to be forward compatible.
+ *
+ *   Each index to another array is the number of bytes from indexes[].
+ *   Each length of an array is the number of array base units in that array.
+ *
+ *   Some of the structures may not be present, in which case their indexes
+ *   and lengths are 0.
+ *
+ *   Usage of indexes[i]:
+ *   [0]  length of indexes[]
+ *
+ *   // to Unicode table
+ *   [1]  index of toUTable[] (array of uint32_t)
+ *   [2]  length of toUTable[]
+ *   [3]  index of toUUChars[] (array of UChar)
+ *   [4]  length of toUUChars[]
+ *
+ *   // from Unicode table, not for the initial code point
+ *   [5]  index of fromUTableUChars[] (array of UChar)
+ *   [6]  index of fromUTableValues[] (array of uint32_t)
+ *   [7]  length of fromUTableUChars[] and fromUTableValues[]
+ *   [8]  index of fromUBytes[] (array of char)
+ *   [9]  length of fromUBytes[]
+ *
+ *   // from Unicode trie for initial-code point lookup
+ *   [10] index of fromUStage12[] (combined array of uint16_t for stages 1 & 2)
+ *   [11] length of stage 1 portion of fromUStage12[]
+ *   [12] length of fromUStage12[]
+ *   [13] index of fromUStage3[] (array of uint16_t indexes into fromUStage3b[])
+ *   [14] length of fromUStage3[]
+ *   [15] index of fromUStage3b[] (array of uint32_t like fromUTableValues[])
+ *   [16] length of fromUStage3b[]
+ *
+ *   [17] Bit field containing numbers of bytes:
+ *        31..24 reserved, 0
+ *        23..16 maximum input bytes
+ *        15.. 8 maximum output bytes
+ *         7.. 0 maximum bytes per UChar
+ *
+ *   [18] Bit field containing numbers of UChars:
+ *        31..24 reserved, 0
+ *        23..16 maximum input UChars
+ *        15.. 8 maximum output UChars
+ *         7.. 0 maximum UChars per byte
+ *
+ *   [19] Bit field containing flags:
+ *               (extension table unicodeMask)
+ *         1     UCNV_HAS_SURROGATES flag for the extension table
+ *         0     UCNV_HAS_SUPPLEMENTARY flag for the extension table
+ *
+ *   [20]..[30] reserved, 0
+ *   [31] number of bytes for the entire extension structure
+ *   [>31] reserved; there are indexes[0] indexes
+ *
+ *
+ * uint32_t toUTable[];
+ *
+ *   Array of byte/value pairs for lookups for toUnicode conversion.
+ *   The array is partitioned into sections like collation contraction tables.
+ *   Each section contains one word with the number of following words and
+ *   a default value for when the lookup in this section yields no match.
+ *
+ *   A section is sorted in ascending order of input bytes,
+ *   allowing for fast linear or binary searches.
+ *   The builder may store entries for a contiguous range of byte values
+ *   (compare difference between the first and last one with count),
+ *   which then allows for direct array access.
+ *   The builder should always do this for the initial table section.
+ *
+ *   Entries may have 0 values, see below.
+ *   No two entries in a section have the same byte values.
+ *
+ *   Each uint32_t contains an input byte value in bits 31..24 and the
+ *   corresponding lookup value in bits 23..0.
+ *   Interpret the value as follows:
+ *     if(value==0) {
+ *       no match, see below
+ *     } else if(value<0x1f0000) {
+ *       partial match - use value as index to the next toUTable section
+ *       and match the next unit; (value indexes toUTable[value])
+ *     } else {
+ *       if(bit 23 set) {
+ *         roundtrip;
+ *       } else {
+ *         fallback;
+ *       }
+ *       unset value bit 23;
+ *       if(value<=0x2fffff) {
+ *         (value-0x1f0000) is a code point; (BMP: value<=0x1fffff)
+ *       } else {
+ *         bits 17..0 (value&0x3ffff) is an index to
+ *           the result UChars in toUUChars[]; (0 indexes toUUChars[0])
+ *         length of the result=((value>>18)-12); (length=0..19)
+ *       }
+ *     }
+ *
+ *   The first word in a section contains the number of following words in the
+ *   input byte position (bits 31..24, number=1..0xff).
+ *   The value of the initial word is used when the current byte is not found
+ *   in this section.
+ *   If the value is not 0, then it represents a result as above.
+ *   If the value is 0, then the search has to return a shorter match with an
+ *   earlier default value as the result, or result in "unmappable" even for the
+ *   initial bytes.
+ *   If the value is 0 for the initial toUTable entry, then the initial byte
+ *   does not start any mapping input.
+ *
+ *
+ * UChar toUUChars[];
+ *
+ *   Contains toUnicode mapping results, stored as sequences of UChars.
+ *   Indexes and lengths stored in the toUTable[].
+ *
+ *
+ * UChar fromUTableUChars[];
+ * uint32_t fromUTableValues[];
+ *
+ *   The fromUTable is split into two arrays, but works otherwise much like
+ *   the toUTable. The array is partitioned into sections like collation
+ *   contraction tables and toUTable.
+ *   A row in the table consists of same-index entries in fromUTableUChars[]
+ *   and fromUTableValues[].
+ *
+ *   Interpret a value as follows:
+ *     if(value==0) {
+ *       no match, see below
+ *     } else if(value<=0xffffff) { (bits 31..24 are 0)
+ *       partial match - use value as index to the next fromUTable section
+ *       and match the next unit; (value indexes fromUTable[value])
+ *     } else {
+ *       if(value==0x80000001) {
+ *         return no mapping, but request for <subchar1>;
+ *       }
+ *       if(bit 31 set) {
+ *         roundtrip;
+ *       } else {
+ *         fallback;
+ *       }
+ *       // bits 30..29 reserved, 0
+ *       length=(value>>24)&0x1f; (bits 28..24)
+ *       if(length==1..3) {
+ *         bits 23..0 contain 1..3 bytes, padded with 00s on the left;
+ *       } else {
+ *         bits 23..0 (value&0xffffff) is an index to
+ *           the result bytes in fromUBytes[]; (0 indexes fromUBytes[0])
+ *       }
+ *     }
+ *       
+ *   The first pair in a section contains the number of following pairs in the
+ *   UChar position (16 bits, number=1..0xffff).
+ *   The value of the initial pair is used when the current UChar is not found
+ *   in this section.
+ *   If the value is not 0, then it represents a result as above.
+ *   If the value is 0, then the search has to return a shorter match with an
+ *   earlier default value as the result, or result in "unmappable" even for the
+ *   initial UChars.
+ *
+ *   If the from Unicode trie is present, then the from Unicode search tables
+ *   are not used for initial code points.
+ *   In this case, the first entries (index 0) in the tables are not used
+ *   (reserved, set to 0) because a value of 0 is used in trie results
+ *   to indicate no mapping.
+ *
+ *
+ * uint16_t fromUStage12[];
+ *
+ *   Stages 1 & 2 of a trie that maps an initial code point.
+ *   Indexes in stage 1 are all offset by the length of stage 1 so that the
+ *   same array pointer can be used for both stages.
+ *   If (c>>10)>=(length of stage 1) then c does not start any mapping.
+ *   Same bit distribution as for regular conversion tries.
+ *
+ *
+ * uint16_t fromUStage3[];
+ * uint32_t fromUStage3b[];
+ *
+ *   Stage 3 of the trie. The first array simply contains indexes to the second,
+ *   which contains words in the same format as fromUTableValues[].
+ *   Use a stage 3 granularity of 4, which allows for 256k stage 3 entries,
+ *   and 16-bit entries in stage 3 allow for 64k stage 3b entries.
+ *   The stage 3 granularity means that the stage 2 entry needs to be left-shifted.
+ *
+ *   Two arrays are used because it is expected that more than half of the stage 3
+ *   entries will be zero. The 16-bit index stage 3 array saves space even
+ *   considering storing a total of 6 bytes per non-zero entry in both arrays
+ *   together.
+ *   Using a stage 3 granularity of >1 diminishes the compactability in that stage
+ *   but provides a larger effective addressing space in stage 2.
+ *   All but the final result stage use 16-bit entries to save space.
+ *
+ *   fromUStage3b[] contains a zero for "no mapping" at its index 0,
+ *   and may contain UCNV_EXT_FROM_U_SUBCHAR1 at index 1 for "<subchar1> SUB mapping"
+ *   (i.e., "no mapping" with preference for <subchar1> rather than <subchar>),
+ *   and all other items are unique non-zero results.
+ *
+ *   The default value of a fromUTableValues[] section that is referenced
+ *   _directly_ from a fromUStage3b[] item may also be UCNV_EXT_FROM_U_SUBCHAR1,
+ *   but this value must not occur anywhere else in fromUTableValues[]
+ *   because "no mapping" is always a property of a single code point,
+ *   never of multiple.
+ *
+ *
+ * char fromUBytes[];
+ *
+ *   Contains fromUnicode mapping results, stored as sequences of chars.
+ *   Indexes and lengths stored in the fromUTableValues[].
+ */
+
+final class UConverterDataReader implements ICUBinary.Authenticate {
+    //private final static boolean debug = ICUDebug.enabled("UConverterDataReader");
+
+    /*
+     *  UConverterDataReader(UConverterDataReader r)
+        {
+            dataInputStream = new DataInputStream(r.dataInputStream);
+            unicodeVersion = r.unicodeVersion;
+        }
+        */
+   /* the number bytes read from the stream */ 
+   int bytesRead = 0;
+   /* the number of bytes read for static data */
+   int staticDataBytesRead = 0;
+   /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected UConverterDataReader(InputStream inputStream) 
+                                        throws IOException{
+        //if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        /*unicodeVersion = */ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
+        
+        //if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        //if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    // protected methods -------------------------------------------------
+    
+    protected void readStaticData(UConverterStaticData sd) throws IOException
+    {
+        int bRead = 0;
+        sd.structSize = dataInputStream.readInt();
+        bRead +=4;
+        byte[] name = new byte[UConverterConstants.MAX_CONVERTER_NAME_LENGTH];
+        dataInputStream.readFully(name);
+        bRead +=name.length;
+        sd.name = new String(name, 0, name.length);
+        sd.codepage = dataInputStream.readInt();
+        bRead +=4;
+        sd.platform = dataInputStream.readByte();
+        bRead++;
+        sd.conversionType = dataInputStream.readByte();
+        bRead++;
+        sd.minBytesPerChar = dataInputStream.readByte();
+        bRead++;
+        sd.maxBytesPerChar = dataInputStream.readByte();
+        bRead++;
+        dataInputStream.readFully(sd.subChar);
+        bRead += sd.subChar.length;
+        sd.subCharLen = dataInputStream.readByte();
+        bRead++;
+        sd.hasToUnicodeFallback = dataInputStream.readByte();
+        bRead++;
+        sd.hasFromUnicodeFallback = dataInputStream.readByte();
+        bRead++;
+        sd.unicodeMask = (short)dataInputStream.readUnsignedByte();
+        bRead++;
+        sd.subChar1 = dataInputStream.readByte();
+        bRead++;
+        dataInputStream.readFully(sd.reserved);
+        bRead += sd.reserved.length;
+        staticDataBytesRead = bRead;
+        bytesRead += bRead;
+    }
+
+    protected void readMBCSHeader(CharsetMBCS.MBCSHeader h) throws IOException
+    {
+        dataInputStream.readFully(h.version);
+        bytesRead += h.version.length;
+        h.countStates = dataInputStream.readInt();
+        bytesRead+=4;
+        h.countToUFallbacks = dataInputStream.readInt();
+        bytesRead+=4;
+        h.offsetToUCodeUnits = dataInputStream.readInt();
+        bytesRead+=4;
+        h.offsetFromUTable = dataInputStream.readInt();
+        bytesRead+=4;
+        h.offsetFromUBytes = dataInputStream.readInt();
+        bytesRead+=4;
+        h.flags = dataInputStream.readInt();
+        bytesRead+=4;
+        h.fromUBytesLength = dataInputStream.readInt();
+        bytesRead+=4;
+        if (h.version[0] == 5 && h.version[1] >= 3) {
+            h.options = dataInputStream.readInt();
+            bytesRead+=4;
+            if ((h.options & CharsetMBCS.MBCS_OPT_NO_FROM_U) != 0) {
+                h.fullStage2Length = dataInputStream.readInt();
+                bytesRead+=4;
+            }
+        }
+    }
+    
+    protected void readMBCSTable(int[][] stateTableArray, CharsetMBCS.MBCSToUFallback[] toUFallbacksArray, char[] unicodeCodeUnitsArray, char[] fromUnicodeTableArray, byte[] fromUnicodeBytesArray) throws IOException
+    {
+        int i, j;
+        for(i = 0; i < stateTableArray.length; ++i){
+            for(j = 0; j < stateTableArray[i].length; ++j){
+                stateTableArray[i][j] = dataInputStream.readInt();
+                bytesRead+=4;
+            }
+        }
+        for(i = 0; i < toUFallbacksArray.length; ++i) {
+            toUFallbacksArray[i].offset = dataInputStream.readInt();
+            bytesRead+=4;
+            toUFallbacksArray[i].codePoint = dataInputStream.readInt();
+            bytesRead+=4;
+        }
+        for(i = 0; i < unicodeCodeUnitsArray.length; ++i){
+            unicodeCodeUnitsArray[i] = dataInputStream.readChar();
+            bytesRead+=2;
+        }
+        for(i = 0; i < fromUnicodeTableArray.length; ++i){
+            fromUnicodeTableArray[i] = dataInputStream.readChar();
+            bytesRead+=2;
+        }
+        for(i = 0; i < fromUnicodeBytesArray.length; ++i){
+            fromUnicodeBytesArray[i] = dataInputStream.readByte();
+            bytesRead++;
+        }
+    }
+
+    protected String readBaseTableName() throws IOException
+    {
+        char c;
+        StringBuffer name = new StringBuffer();
+        while((c = (char)dataInputStream.readByte()) !=  0){
+            name.append(c);
+            bytesRead++;
+        }
+        bytesRead++/*for null terminator*/;
+        return name.toString();
+    }
+
+    //protected int[] readExtIndexes(int skip) throws IOException
+    protected ByteBuffer readExtIndexes(int skip) throws IOException
+    {
+        int skipped = dataInputStream.skipBytes(skip);
+        if(skipped != skip){
+            throw new IOException("could not skip "+ skip +" bytes");
+        }
+        int n = dataInputStream.readInt();
+        bytesRead+=4;
+        int[] indexes = new int[n];
+        indexes[0] = n;
+        for(int i = 1; i < n; ++i) {
+            indexes[i] = dataInputStream.readInt();
+            bytesRead+=4;
+        }
+        //return indexes;
+
+        ByteBuffer b = ByteBuffer.allocate(indexes[31]);
+        for(int i = 0; i < n; ++i) {
+            b.putInt(indexes[i]);
+        }
+        int len = dataInputStream.read(b.array(), b.position(), b.remaining());
+        if(len==-1){
+            throw new IOException("Read failed");
+        }
+        bytesRead += len;
+        return b;
+    }
+
+    /*protected byte[] readExtTables(int n) throws IOException
+    {
+        byte[] tables = new byte[n];
+        int len =dataInputStream.read(tables);
+        if(len==-1){
+            throw new IOException("Read failed");
+        }
+        bytesRead += len;
+        return tables;
+    }*/
+
+    byte[] getDataFormatVersion(){
+        return DATA_FORMAT_VERSION;
+    }
+    /**
+     * Inherited method
+     */
+    public boolean isDataVersionAcceptable(byte version[]){
+        return version[0] == DATA_FORMAT_VERSION[0];
+    }
+    
+/*    byte[] getUnicodeVersion(){
+        return unicodeVersion;    
+    }*/
+    // private data members -------------------------------------------------
+      
+    /**
+    * ICU data file input stream
+    */
+    DataInputStream dataInputStream;
+    
+//    private byte[] unicodeVersion;
+                                       
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+    // DATA_FORMAT_ID_ values taken from icu4c isCnvAcceptable (ucnv_bld.c)
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x63, (byte)0x6e, (byte)0x76, (byte)0x74}; // dataFormat="cnvt"
+    private static final byte DATA_FORMAT_VERSION[] = {(byte)0x6};
+
+}
+
diff --git a/src/com/ibm/icu/charset/UConverterSharedData.java b/src/com/ibm/icu/charset/UConverterSharedData.java
new file mode 100644
index 0000000..e69f40a
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterSharedData.java
@@ -0,0 +1,448 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.charset;
+
+/**
+ * Defines the UConverterSharedData struct, the immutable, shared part of
+ * UConverter.
+ */
+final class UConverterSharedData {
+    // uint32_t structSize; /* Size of this structure */
+    // int structSize; /* Size of this structure */
+    /**
+     * used to count number of clients, 0xffffffff for static SharedData
+     */
+    int referenceCounter;
+
+    // agljport:todo const void *dataMemory; /* from udata_openChoice() - for cleanup */
+    // agljport:todo void *table; /* Unused. This used to be a UConverterTable - Pointer to conversion data - see mbcs below */
+
+    // const UConverterStaticData *staticData; /* pointer to the static (non changing) data. */
+    /**
+     * pointer to the static (non changing)
+     * data.
+     */
+    UConverterStaticData staticData;
+
+    // UBool sharedDataCached; /* TRUE: shared data is in cache, don't destroy
+    // on close() if 0 ref. FALSE: shared data isn't in the cache, do attempt to
+    // clean it up if the ref is 0 */
+    
+    /**
+     * TRUE: shared data is in cache, don't destroy
+     * on close() if 0 ref. FALSE: shared data isn't
+     * in the cache, do attempt to clean it up if
+     * the ref is 0
+     */
+    boolean sharedDataCached; 
+
+    /*
+     * UBool staticDataOwned; TRUE if static data owned by shared data & should
+     * be freed with it, NEVER true for udata() loaded statics. This ignored
+     * variable was removed to make space for sharedDataCached.
+     */
+
+    // const UConverterImpl *impl; /* vtable-style struct of mostly function pointers */
+    // UConverterImpl impl; /* vtable-style struct of mostly function pointers */
+    /** initial values of some members of the mutable part of object */
+    long toUnicodeStatus;
+
+    /**
+     * Shared data structures currently come in two flavors:
+     * - readonly for built-in algorithmic converters
+     * - allocated for MBCS, with a pointer to an allocated UConverterTable
+     *   which always has a UConverterMBCSTable
+     *   
+     * To eliminate one allocation, I am making the UConverterMBCSTable a member
+     * of the shared data. It is the last member so that static definitions of
+     * UConverterSharedData work as before. The table field above also remains
+     * to avoid updating all static definitions, but is now unused.
+     * 
+     */
+    CharsetMBCS.UConverterMBCSTable mbcs;
+
+    UConverterSharedData() {
+        mbcs = new CharsetMBCS.UConverterMBCSTable();
+    }
+
+    UConverterSharedData(int referenceCounter_, UConverterStaticData staticData_, boolean sharedDataCached_, long toUnicodeStatus_)
+    {
+        this();
+        referenceCounter = referenceCounter_;
+        staticData = staticData_;
+        sharedDataCached = sharedDataCached_;
+        // impl = impl_;
+        toUnicodeStatus = toUnicodeStatus_;
+    }
+
+    /**
+     * UConverterImpl contains all the data and functions for a converter type.
+     * Its function pointers work much like a C++ vtable. Many converter types
+     * need to define only a subset of the functions; when a function pointer is
+     * NULL, then a default action will be performed.
+     * 
+     * Every converter type must implement toUnicode, fromUnicode, and
+     * getNextUChar, otherwise the converter may crash. Every converter type
+     * that has variable-length codepage sequences should also implement
+     * toUnicodeWithOffsets and fromUnicodeWithOffsets for correct offset
+     * handling. All other functions may or may not be implemented - it depends
+     * only on whether the converter type needs them.
+     * 
+     * When open() fails, then close() will be called, if present.
+     */
+/* class UConverterImpl {
+    UConverterType type;
+    UConverterToUnicode toUnicode;
+    protected void doToUnicode(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+    }
+    
+     final void toUnicode(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+        doToUnicode(args, pErrorCode);
+    }
+    
+    //UConverterFromUnicode fromUnicode;
+    protected void doFromUnicode(UConverterFromUnicodeArgs args, int[] pErrorCode)
+    {
+    }
+    
+     final void fromUnicode(UConverterFromUnicodeArgs args, int[] pErrorCode)
+    {
+        doFromUnicode(args, pErrorCode);
+    }
+    
+    protected int doGetNextUChar(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+        return 0;
+    }
+    
+    //UConverterGetNextUChar getNextUChar;
+     final int getNextUChar(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+        return doGetNextUChar(args, pErrorCode);
+    }
+    
+    // interface UConverterImplLoadable extends UConverterImpl
+    protected void doLoad(UConverterLoadArgs pArgs, short[] raw, int[] pErrorCode)
+    {
+    }
+    
+    protected void doUnload()
+    {
+    }
+
+    // interface UConverterImplOpenable extends UConverterImpl
+    protected void doOpen(UConverter cnv, String name, String locale, long options, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterOpen open;
+     final void open(UConverter cnv, String name, String locale, long options, int[] pErrorCode)
+    {
+        doOpen(cnv, name, locale, options, pErrorCode);
+    }
+    
+    protected void doClose(UConverter cnv)
+    {
+    }
+    
+    //UConverterClose close;
+     final void close(UConverter cnv)
+    {
+        doClose(cnv);
+    }
+    
+    protected void doReset(UConverter cnv, int choice)
+    {
+    }
+    
+    //typedef void (*UConverterReset) (UConverter *cnv, UConverterResetChoice choice);
+    //UConverterReset reset;
+     final void reset(UConverter cnv, int choice)
+    {
+        doReset(cnv, choice);
+    }
+
+    // interface UConverterImplVariableLength extends UConverterImpl
+    protected void doToUnicodeWithOffsets(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterToUnicode toUnicodeWithOffsets;
+     final void toUnicodeWithOffsets(UConverterToUnicodeArgs args, int[] pErrorCode)
+    {
+        doToUnicodeWithOffsets(args, pErrorCode);
+    }
+    
+    protected void doFromUnicodeWithOffsets(UConverterFromUnicodeArgs args, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterFromUnicode fromUnicodeWithOffsets;
+     final void fromUnicodeWithOffsets(UConverterFromUnicodeArgs args, int[] pErrorCode)
+    {
+        doFromUnicodeWithOffsets(args, pErrorCode);
+    }
+
+    // interface UConverterImplMisc extends UConverterImpl
+    protected void doGetStarters(UConverter converter, boolean starters[], int[] pErrorCode)
+    {
+    }
+    
+    //UConverterGetStarters getStarters;
+     final void getStarters(UConverter converter, boolean starters[], int[] pErrorCode)
+    {
+        doGetStarters(converter, starters, pErrorCode);
+    }
+    
+    protected String doGetName(UConverter cnv)
+    {
+        return "";
+    }
+    
+    //UConverterGetName getName;
+     final String getName(UConverter cnv)
+    {
+        return doGetName(cnv);
+    }
+    
+    protected void doWriteSub(UConverterFromUnicodeArgs pArgs, long offsetIndex, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterWriteSub writeSub;
+     final void writeSub(UConverterFromUnicodeArgs pArgs, long offsetIndex, int[] pErrorCode)
+    {
+        doWriteSub(pArgs, offsetIndex, pErrorCode);
+    }
+    
+    protected UConverter doSafeClone(UConverter cnv, byte[] stackBuffer, int[] pBufferSize, int[] status)
+    {
+        return new UConverter();
+    }
+
+    //UConverterSafeClone safeClone;
+     final UConverter  safeClone(UConverter cnv, byte[] stackBuffer, int[] pBufferSize, int[] status)
+    {
+        return doSafeClone(cnv, stackBuffer, pBufferSize, status);
+    }
+    
+    protected void doGetUnicodeSet(UConverter cnv, UnicodeSet /*USetAdder* / sa, int /*UConverterUnicodeSet* / which, int[] pErrorCode)
+    {
+    }
+    
+    //UConverterGetUnicodeSet getUnicodeSet;
+    // final void getUnicodeSet(UConverter cnv, UnicodeSet /*USetAdder* / sa, int /*UConverterUnicodeSet* / which, int[] pErrorCode)
+    //{
+    //  doGetUnicodeSet(cnv, sa, which, pErrorCode);
+    //}
+
+    //}
+
+    static final String DATA_TYPE = "cnv";
+    private static final int CNV_DATA_BUFFER_SIZE = 25000;
+     static final int sizeofUConverterSharedData = 100;
+    
+    //static UDataMemoryIsAcceptable isCnvAcceptable;
+
+    /**
+     * Load a non-algorithmic converter.
+     * If pkg==NULL, then this function must be called inside umtx_lock(&cnvCacheMutex).
+     
+    // UConverterSharedData * load(UConverterLoadArgs *pArgs, UErrorCode *err)
+     static final UConverterSharedData load(UConverterLoadArgs pArgs, int[] err)
+    {
+        UConverterSharedData mySharedConverterData = null;
+    
+        if(err == null || ErrorCode.isFailure(err[0])) {
+            return null;
+        }
+    
+        if(pArgs.pkg != null && pArgs.pkg.length() != 0) {
+             application-provided converters are not currently cached 
+            return UConverterSharedData.createConverterFromFile(pArgs, err);
+        }
+    
+        //agljport:fix mySharedConverterData = getSharedConverterData(pArgs.name);
+        if (mySharedConverterData == null)
+        {
+            Not cached, we need to stream it in from file 
+            mySharedConverterData = UConverterSharedData.createConverterFromFile(pArgs, err);
+            if (ErrorCode.isFailure(err[0]) || (mySharedConverterData == null))
+            {
+                return null;
+            }
+            else
+            {
+                 share it with other library clients 
+                //agljport:fix shareConverterData(mySharedConverterData);
+            }
+        }
+        else
+        {
+             The data for this converter was already in the cache.            
+             Update the reference counter on the shared data: one more client 
+            mySharedConverterData.referenceCounter++;
+        }
+    
+        return mySharedConverterData;
+    }
+    
+    Takes an alias name gets an actual converter file name
+     *goes to disk and opens it.
+     *allocates the memory and returns a new UConverter object
+     
+    //static UConverterSharedData *createConverterFromFile(UConverterLoadArgs *pArgs, UErrorCode * err)
+     static final UConverterSharedData createConverterFromFile(UConverterLoadArgs pArgs, int[] err)
+    {
+        UDataMemory data = null;
+        UConverterSharedData sharedData = null;
+    
+        //agljport:todo UTRACE_ENTRY_OC(UTRACE_LOAD);
+    
+        if (err == null || ErrorCode.isFailure(err[0])) {
+            //agljport:todo UTRACE_EXIT_STATUS(*err);
+            return null;
+        }
+    
+        //agljport:todo UTRACE_DATA2(UTRACE_OPEN_CLOSE, "load converter %s from package %s", pArgs->name, pArgs->pkg);
+    
+        //agljport:fix data = udata_openChoice(pArgs.pkgArray, DATA_TYPE.getBytes(), pArgs.name, isCnvAcceptable, null, err);
+        if(ErrorCode.isFailure(err[0]))
+        {
+            //agljport:todo UTRACE_EXIT_STATUS(*err);
+            return null;
+        }
+    
+        sharedData = data_unFlattenClone(pArgs, data, err);
+        if(ErrorCode.isFailure(err[0]))
+        {
+            //agljport:fix udata_close(data);
+            //agljport:todo UTRACE_EXIT_STATUS(*err);
+            return null;
+        }
+    
+        
+         * TODO Store pkg in a field in the shared data so that delta-only converters
+         * can load base converters from the same package.
+         * If the pkg name is longer than the field, then either do not load the converter
+         * in the first place, or just set the pkg field to "".
+         
+    
+        return sharedData;
+    }
+*/
+    UConverterDataReader dataReader = null;
+
+    /*
+     * returns a converter type from a string
+     */
+    /*   static final UConverterSharedData getAlgorithmicTypeFromName(String realName)
+    {
+        long mid, start, limit;
+        long lastMid;
+        int result;
+        StringBuffer strippedName = new StringBuffer(UConverterConstants.MAX_CONVERTER_NAME_LENGTH);
+    
+        // Lower case and remove ignoreable characters.
+        UConverterAlias.stripForCompare(strippedName, realName);
+    
+        // do a binary search for the alias
+        start = 0;
+        limit = cnvNameType.length;
+        mid = limit;
+        lastMid = -1;
+    
+        for (;;) {
+            mid = (long)((start + limit) / 2);
+            if (lastMid == mid) {   // Have we moved?
+                break;  // We haven't moved, and it wasn't found.
+            }
+            lastMid = mid;
+            result = strippedName.substring(0).compareTo(cnvNameType[(int)mid].name);
+    
+            if (result < 0) {
+                limit = mid;
+            } else if (result > 0) {
+                start = mid;
+            } else {
+                return converterData[cnvNameType[(int)mid].type];
+            }
+        }
+    
+        return null;
+    }*/
+    
+    /*
+     * Enum for specifying basic types of converters
+     */
+    static final class UConverterType {
+        static final int UNSUPPORTED_CONVERTER = -1;
+        static final int SBCS = 0;
+        static final int DBCS = 1;
+        static final int MBCS = 2;
+        static final int LATIN_1 = 3;
+        static final int UTF8 = 4;
+        static final int UTF16_BigEndian = 5;
+        static final int UTF16_LittleEndian = 6;
+        static final int UTF32_BigEndian = 7;
+        static final int UTF32_LittleEndian = 8;
+        static final int EBCDIC_STATEFUL = 9;
+        static final int ISO_2022 = 10;
+        static final int LMBCS_1 = 11;
+        static final int LMBCS_2 = LMBCS_1 + 1; // 12
+        static final int LMBCS_3 = LMBCS_2 + 1; // 13
+        static final int LMBCS_4 = LMBCS_3 + 1; // 14
+        static final int LMBCS_5 = LMBCS_4 + 1; // 15
+        static final int LMBCS_6 = LMBCS_5 + 1; // 16
+        static final int LMBCS_8 = LMBCS_6 + 1; // 17
+        static final int LMBCS_11 = LMBCS_8 + 1; // 18
+        static final int LMBCS_16 = LMBCS_11 + 1; // 19
+        static final int LMBCS_17 = LMBCS_16 + 1; // 20
+        static final int LMBCS_18 = LMBCS_17 + 1; // 21
+        static final int LMBCS_19 = LMBCS_18 + 1; // 22
+        static final int LMBCS_LAST = LMBCS_19; // 22
+        static final int HZ = LMBCS_LAST + 1; // 23
+        static final int SCSU = HZ + 1; // 24
+        static final int ISCII = SCSU + 1; // 25
+        static final int US_ASCII = ISCII + 1; // 26
+        static final int UTF7 = US_ASCII + 1; // 27
+        static final int BOCU1 = UTF7 + 1; // 28
+        static final int UTF16 = BOCU1 + 1; // 29
+        static final int UTF32 = UTF16 + 1; // 30
+        static final int CESU8 = UTF32 + 1; // 31
+        static final int IMAP_MAILBOX = CESU8 + 1; // 32
+
+        // Number of converter types for which we have conversion routines.
+        static final int NUMBER_OF_SUPPORTED_CONVERTER_TYPES = IMAP_MAILBOX + 1;
+    }
+
+    /**
+     * Enum for specifying which platform a converter ID refers to. The use of
+     * platform/CCSID is not recommended. See openCCSID().
+     */
+    static final class UConverterPlatform {
+        static final int UNKNOWN = -1;
+        static final int IBM = 0;
+    }
+
+    // static UConverterSharedData[] converterData;
+    /*  static class cnvNameTypeClass {
+      String name;
+        int type;
+        cnvNameTypeClass(String name_, int type_) { name = name_; type = type_; }
+    } 
+    
+    static cnvNameTypeClass cnvNameType[];*/
+
+
+    static final String DATA_TYPE = "cnv";
+    //static final int CNV_DATA_BUFFER_SIZE = 25000;
+    //static final int SIZE_OF_UCONVERTER_SHARED_DATA = 228;
+
+}
diff --git a/src/com/ibm/icu/charset/UConverterStaticData.java b/src/com/ibm/icu/charset/UConverterStaticData.java
new file mode 100644
index 0000000..0ccd49b
--- /dev/null
+++ b/src/com/ibm/icu/charset/UConverterStaticData.java
@@ -0,0 +1,61 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+package com.ibm.icu.charset;
+
+final class UConverterStaticData {   /* +offset: size */
+    int structSize;                /* +0: 4 Size of this structure */
+    
+    String name; /* +4: 60  internal name of the converter- invariant chars */
+
+    int codepage;               /* +64: 4 codepage # (now IBM-$codepage) */
+
+    byte platform;                /* +68: 1 platform of the converter (only IBM now) */
+    byte conversionType;          /* +69: 1 conversion type */
+
+    byte minBytesPerChar;         /* +70: 1 Minimum # bytes per char in this codepage */
+    byte maxBytesPerChar;         /* +71: 1 Maximum # bytes output per UChar in this codepage */
+
+    byte subChar[/*UCNV_MAX_SUBCHAR_LEN*/]; /* +72: 4  [note:  4 and 8 byte boundary] */
+    byte subCharLen;              /* +76: 1 */
+    
+    byte hasToUnicodeFallback;   /* +77: 1 UBool needs to be changed to UBool to be consistent across platform */
+    byte hasFromUnicodeFallback; /* +78: 1 */
+    short unicodeMask;            /* +79: 1  bit 0: has supplementary  bit 1: has single surrogates */
+    byte subChar1;               /* +80: 1  single-byte substitution character for IBM MBCS (0 if none) */
+    byte reserved[/*19*/];           /* +81: 19 to round out the structure */
+                                    /* total size: 100 */
+    public UConverterStaticData()
+    {
+        subChar = new byte[UConverterConstants.MAX_SUBCHAR_LEN];
+        reserved = new byte[19];
+    }
+
+/*    public UConverterStaticData(int structSize_, String name_, int codepage_, byte platform_, byte conversionType_, byte minBytesPerChar_, byte maxBytesPerChar_, byte[] subChar_, byte subCharLen_, byte hasToUnicodeFallback_, byte hasFromUnicodeFallback_, short unicodeMask_, byte subChar1_, byte[] reserved_)
+    {
+        structSize = structSize_;
+        name = name_;
+        codepage = codepage_;
+        platform = platform_;
+        conversionType = conversionType_;
+        minBytesPerChar = minBytesPerChar_;
+        maxBytesPerChar = maxBytesPerChar_;
+        subChar = new byte[UConverterConstants.MAX_SUBCHAR_LEN];
+        System.arraycopy(subChar_, 0, subChar, 0, (subChar.length < subChar_.length? subChar.length : subChar_.length));
+        subCharLen = subCharLen_;
+        hasToUnicodeFallback = hasToUnicodeFallback_;
+        hasFromUnicodeFallback = hasFromUnicodeFallback_;
+        unicodeMask = unicodeMask_;
+        subChar1 = subChar1_;
+        reserved = new byte[19];
+        System.arraycopy(reserved_, 0, reserved, 0, (reserved.length < reserved_.length? reserved.length : reserved_.length));
+    }*/
+
+    public static final int SIZE_OF_UCONVERTER_STATIC_DATA = 100;
+}
+
diff --git a/src/com/ibm/icu/charset/package.html b/src/com/ibm/icu/charset/package.html
new file mode 100644
index 0000000..a9e87ef
--- /dev/null
+++ b/src/com/ibm/icu/charset/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2006, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .charset Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Enhanced charset conversion support.</p>
+CharsetICU, CharsetProviderICU, CharsetEncoderICU and CharsetDecoderICU  provide conversion services for many charsets.
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/data/CollationTest_NON_IGNORABLE_STUB.txt b/src/com/ibm/icu/dev/data/CollationTest_NON_IGNORABLE_STUB.txt
new file mode 100644
index 0000000..3c70444
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/CollationTest_NON_IGNORABLE_STUB.txt
@@ -0,0 +1,13830 @@
+0338 0334;
+0334 059A;
+0334 05A4;
+0334 05AE;
+0334 0615;
+0334 06E1;
+0334 0F18;
+0334 1B6C;
+0334 1D165;
+0334 1D17D;
+0334 1D189;
+0591 0334;
+059B 0334;
+05A5 0334;
+05AF 0334;
+0616 0334;
+06DB 0334;
+06EA 0334;
+0F86 0334;
+1B72 0334;
+1D168 0334;
+1D17D 0334;
+1D189 0334;
+0332 0334;
+0334 0341;
+030C 0334;
+0334 0308 0301;
+0328 0334;
+030E 0334;
+0315 0334;
+031A 0334;
+031F 0334;
+0324 0334;
+032B 0334;
+0330 0334;
+033A 0334;
+033F 0334;
+0349 0334;
+034E 0334;
+0354 0334;
+0359 0334;
+035E 0334;
+FE20 0334;
+1DC3 0334;
+1DC8 0334;
+0334 1DFE;
+0334 0486;
+0334 05B2;
+0334 05B7;
+0334 05BB;
+0334 FB1E;
+0334 064F;
+0334 0654;
+0334 0659;
+0334 065E;
+0334 0732;
+0334 0737;
+0334 073C;
+0334 0741;
+0334 0746;
+0334 07EB;
+0334 07F0;
+0334 0951;
+0334 0A3C;
+0334 10A0D;
+0334 0E49;
+0334 0ECA;
+0334 1037;
+193A 0334;
+302D 0334;
+20D0 0334;
+20D7 0334;
+20E8 0334;
+20EF 0334;
+20D9 0334;
+0009 0062;
+000B 0062;
+000D 0062;
+2028 0062;
+2002 0021;
+2007 0021;
+2006 003F;
+3000 0061;
+2009 0061;
+2008 0041;
+0020 0062;
+2009 0062;
+1680 0062;
+07FA 0062;
+1FEF 0041;
+0384 003F;
+1FFD 0062;
+005E 0061;
+00AF 0061;
+FE4C 0021;
+FE4B 0061;
+FE4C 0062;
+02D9 0062;
+00A8 0342 0334;
+1FED 003F;
+1FC1 0061;
+02DA 0041;
+1FCE 0334;
+1FCE 0021;
+1FBD 0041;
+1FCE 0062;
+1FFE 0334 0340;
+1FDD 003F;
+1FFE 0062;
+02DB 003F;
+FE34 0021;
+FF3F 0061;
+FE33 0041;
+2017 003F;
+309B 003F;
+00AD 003F;
+002D 0061;
+058A 003F;
+1806 003F;
+2011 0021;
+2012 003F;
+FE32 0061;
+2014 0061;
+2015 003F;
+2E17 003F;
+3030 003F;
+FF65 0021;
+FF0C 0021;
+FF0C 0041;
+055D 003F;
+060D 003F;
+066C 003F;
+1802 003F;
+A60D 003F;
+FF64 003F;
+3001 0062;
+FE46 003F;
+037E 003F;
+FE54 0061;
+061B 003F;
+2A74 003F;
+FE55 003F;
+003A 0062;
+061E 003F;
+0704 003F;
+0706 003F;
+0708 003F;
+1363 003F;
+1365 003F;
+1804 003F;
+0F14 003F;
+1B5D 003F;
+16EC 003F;
+0001 0021;
+0010 0021;
+001A 0021;
+0083 0021;
+008E 0021;
+0098 0021;
+0489 0021;
+059A 0021;
+05A4 0021;
+05AE 0021;
+0611 0021;
+06D6 0021;
+06E0 0021;
+06ED 0021;
+0FC6 0021;
+1B70 0021;
+202B 0021;
+206B 0021;
+D802 0021;
+FDD5 0021;
+FE09 0021;
+FE25 0021;
+1D166 0021;
+1D173 0021;
+1D17D 0021;
+1D189 0021;
+1FFFE 0021;
+6FFFE 0021;
+BFFFE 0021;
+E0023 0021;
+E002D 0021;
+E0037 0021;
+E0041 0021;
+E004B 0021;
+E0055 0021;
+E005F 0021;
+E0069 0021;
+E0073 0021;
+E007D 0021;
+E0107 0021;
+E0111 0021;
+E011B 0021;
+E0125 0021;
+E012F 0021;
+E0139 0021;
+E0143 0021;
+E014D 0021;
+E0157 0021;
+E0161 0021;
+E016B 0021;
+E0175 0021;
+E017F 0021;
+E0189 0021;
+E0193 0021;
+E019D 0021;
+E01A7 0021;
+E01B1 0021;
+E01BB 0021;
+E01C5 0021;
+E01CF 0021;
+E01D9 0021;
+E01E3 0021;
+E01ED 0021;
+0314 0021;
+0308 0021;
+0309 0021;
+0318 0021;
+0322 0021;
+032E 0021;
+033A 0021;
+0349 0021;
+0354 0021;
+035E 0021;
+1DC3 0021;
+1DCE 0021;
+0487 0021;
+05B6 0021;
+05BF 0021;
+FC5F 0021;
+FC61 0021;
+0652 0021;
+065A 0021;
+0733 0021;
+073D 0021;
+0747 0021;
+07F1 0021;
+0954 0021;
+0A71 0021;
+0C01 0021;
+1B34 0021;
+A880 0021;
+0E48 0021;
+0ECC 0021;
+1037 0021;
+17CC 0021;
+193B 0021;
+FF9F 0021;
+20D9 0021;
+20E3 0021;
+20ED 0021;
+203C 003F;
+2049 0061;
+FE15 0041;
+055C 0021;
+1944 0021;
+0005 003F;
+0014 003F;
+001E 003F;
+0088 003F;
+0092 003F;
+009C 003F;
+0594 003F;
+059E 003F;
+05A8 003F;
+05C5 003F;
+0615 003F;
+06DA 003F;
+06E4 003F;
+0F35 003F;
+180E 003F;
+200B 003F;
+2060 003F;
+206F 003F;
+DFFF 003F;
+FE03 003F;
+FE0D 003F;
+FFF9 003F;
+1D16D 003F;
+1D177 003F;
+1D181 003F;
+1D1AB 003F;
+3FFFE 003F;
+8FFFE 003F;
+DFFFE 003F;
+E0027 003F;
+E0031 003F;
+E003B 003F;
+E0045 003F;
+E004F 003F;
+E0059 003F;
+E0063 003F;
+E006D 003F;
+E0077 003F;
+E0101 003F;
+E010B 003F;
+E0115 003F;
+E011F 003F;
+E0129 003F;
+E0133 003F;
+E013D 003F;
+E0147 003F;
+E0151 003F;
+E015B 003F;
+E0165 003F;
+E016F 003F;
+E0179 003F;
+E0183 003F;
+E018D 003F;
+E0197 003F;
+E01A1 003F;
+E01AB 003F;
+E01B5 003F;
+E01BF 003F;
+E01C9 003F;
+E01D3 003F;
+E01DD 003F;
+E01E7 003F;
+EFFFF 003F;
+0340 003F;
+0307 003F;
+0310 003F;
+031C 003F;
+0326 003F;
+0333 003F;
+033E 003F;
+034D 003F;
+0358 003F;
+0361 003F;
+1DC7 003F;
+1DFE 003F;
+05B0 003F;
+05B9 003F;
+FE70 003F;
+FCF2 003F;
+FCF4 003F;
+0654 003F;
+065E 003F;
+0737 003F;
+0741 003F;
+07EB 003F;
+0901 003F;
+0983 003F;
+0A83 003F;
+0C82 003F;
+1B03 003F;
+10A0F 003F;
+0E4C 003F;
+0F7F 003F;
+17C6 003F;
+17D0 003F;
+302D 003F;
+20D3 003F;
+20DD 003F;
+20E7 003F;
+101FD 003F;
+003F 003F;
+003F 0041;
+FE16 0062;
+2E2E 0062;
+061F 0062;
+1367 0062;
+2CFA 0062;
+A60F 0062;
+2E18 0062;
+FE30 0021;
+FE19 0041;
+002E 0041;
+FE52 0062;
+06D4 0062;
+0702 0062;
+1803 0062;
+166E 0062;
+2CF9 0062;
+2E30 0062;
+FF61 003F;
+FE12 0062;
+0387 0062;
+0965 0062;
+A8CF 0062;
+1C3C 0062;
+A877 0062;
+1736 0062;
+104A 0062;
+17D4 0062;
+1B5E 0062;
+AA5D 0062;
+AA5F 0062;
+10A57 0062;
+1C7F 0062;
+07F7 0062;
+1360 0062;
+1A1E 0062;
+1B5A 0062;
+A95F 0062;
+2056 0062;
+2059 0062;
+205B 0062;
+205D 0062;
+2E2A 0062;
+2E2C 0062;
+2CFC 0062;
+2E19 0062;
+10100 0062;
+10102 0062;
+103D0 0062;
+12470 0062;
+12472 0062;
+0027 0061;
+2018 0062;
+201A 0062;
+2039 0062;
+0022 0061;
+201C 0062;
+201E 0062;
+301D 0062;
+301F 0062;
+00BB 0062;
+207D 003F;
+247D 0061;
+247F 0061;
+2481 0061;
+2483 0061;
+2485 0061;
+2475 0061;
+2476 0061;
+2478 0061;
+247A 0061;
+247C 0061;
+207D 0041;
+0028 0062;
+249D 0062;
+249F 0062;
+24A1 0062;
+24A3 0062;
+24A5 0062;
+24A7 0062;
+24A9 0062;
+24AB 0062;
+24AD 0062;
+24AF 0062;
+24B1 0062;
+24B3 0062;
+24B5 0062;
+320E 0062;
+320F 0062;
+3210 0062;
+3211 0062;
+3212 0062;
+3213 0062;
+3214 0062;
+3215 0062;
+321E 0062;
+3216 0062;
+3209 0062;
+320A 0062;
+320B 0062;
+320C 0062;
+320D 0062;
+3220 0062;
+3222 0062;
+3221 0062;
+3239 0062;
+3241 0062;
+3225 0062;
+3229 0062;
+3234 0062;
+3223 0062;
+323B 0062;
+322A 0062;
+322D 0062;
+322C 0062;
+3235 0062;
+3233 0062;
+3240 0062;
+3243 0062;
+323E 0062;
+208E 0021;
+FF09 0061;
+0029 0062;
+FF3B 003F;
+FE47 0062;
+FF3D 0041;
+007B 003F;
+FE37 0061;
+007D 003F;
+FE38 0061;
+0F3A 0062;
+0F3C 0062;
+169B 0062;
+2045 0062;
+29FC 0062;
+2983 0062;
+2985 0061;
+2986 0061;
+2987 0062;
+2989 0062;
+298B 0062;
+298D 0062;
+298F 0062;
+2991 0062;
+2993 0062;
+2995 0062;
+2997 0062;
+27EC 0062;
+27EE 0062;
+2E02 0062;
+2E04 0062;
+2E09 0062;
+2E0C 0062;
+2E1C 0062;
+2E20 0062;
+2E22 0062;
+2E24 0062;
+2E26 0062;
+2E28 0062;
+3008 003F;
+FE3F 0062;
+3009 0041;
+300A 0061;
+300B 0061;
+FF62 003F;
+FE41 0062;
+FF63 0041;
+300E 0061;
+300F 0061;
+3010 0061;
+3011 0061;
+FE5D 003F;
+FE39 0062;
+FE5E 0041;
+3016 0061;
+3017 0061;
+3018 0062;
+301A 0062;
+FD3E 0062;
+00A7 0062;
+204B 0062;
+00AE 0062;
+FF20 0041;
+FF0A 003F;
+FE61 0062;
+2051 0062;
+A673 0062;
+FF0F 0062;
+FF3C 003F;
+FE68 0062;
+FF06 0041;
+214B 0062;
+FF03 003F;
+FE5F 0062;
+FF05 0041;
+066A 0062;
+0609 0062;
+060A 0062;
+2020 0062;
+2022 0062;
+2027 0062;
+204C 0062;
+2034 0021;
+2033 0061;
+2037 0021;
+2035 0062;
+303D 0062;
+203B 0062;
+2054 0062;
+2050 0062;
+2042 0062;
+2E01 0062;
+2E07 0062;
+2E0B 0062;
+2E0F 0062;
+2E11 0062;
+2E13 0062;
+2E15 0062;
+2E1A 0062;
+2E1E 0062;
+A67E 0062;
+055B 0062;
+05BE 0062;
+05C3 0062;
+05F3 0062;
+070A 0062;
+070C 0062;
+1800 0062;
+0970 0062;
+0E5A 0062;
+0F04 0062;
+0F06 0062;
+0F08 0062;
+0F0A 0062;
+0FD1 0062;
+0F0C 0062;
+0F0E 0062;
+0F10 0062;
+0F12 0062;
+0FD2 0062;
+0FD4 0062;
+1C3E 0062;
+1940 0062;
+104D 0062;
+104F 0062;
+109F 0062;
+17D8 0062;
+17DA 0062;
+A874 0062;
+A92E 0062;
+10A50 0062;
+10A52 0062;
+10A54 0062;
+10A58 0062;
+0374 0062;
+02BA 0062;
+02C3 0062;
+02C5 0062;
+02C7 0062;
+02C9 0062;
+02CB 0062;
+02CD 0062;
+02CF 0062;
+02D3 0062;
+02D5 0062;
+02D7 0062;
+02DF 0062;
+02E6 0062;
+02E8 0062;
+02EA 0062;
+02EC 0062;
+02EF 0062;
+02F1 0062;
+02F3 0062;
+02F5 0062;
+02F7 0062;
+02F9 0062;
+02FB 0062;
+02FD 0062;
+02FF 0062;
+1391 0062;
+1393 0062;
+1395 0062;
+1397 0062;
+1399 0062;
+A701 0062;
+A703 0062;
+A705 0062;
+A707 0062;
+A709 0062;
+A70B 0062;
+A70D 0062;
+A70F 0062;
+A711 0062;
+A713 0062;
+A715 0062;
+A717 0062;
+A719 0062;
+A71B 0062;
+A71D 0062;
+A71F 0062;
+A721 0062;
+A789 0062;
+00B0 0062;
+2109 0062;
+0608 0062;
+060F 0062;
+FDFD 0062;
+09FA 0062;
+0BF3 0062;
+0BF5 0062;
+0BF7 0062;
+0BFA 0062;
+0CF1 0062;
+0D79 0062;
+A829 0062;
+A82B 0062;
+0F01 0062;
+0F03 0062;
+0F15 0062;
+0F17 0062;
+0F1B 0062;
+0F1D 0062;
+0F1F 0062;
+0F36 0062;
+0F3E 0062;
+0FBE 0062;
+0FC0 0062;
+0FC2 0062;
+0FC4 0062;
+0FC7 0062;
+0FC9 0062;
+0FCB 0062;
+0FCE 0062;
+19E0 0062;
+19E2 0062;
+19E4 0062;
+19E6 0062;
+19E8 0062;
+19EA 0062;
+19EC 0062;
+19EE 0062;
+19F0 0062;
+19F2 0062;
+19F4 0062;
+19F6 0062;
+19F8 0062;
+19FA 0062;
+19FC 0062;
+19FE 0062;
+1B61 0062;
+1B63 0062;
+1B65 0062;
+1B67 0062;
+1B69 0062;
+1B74 0062;
+1B76 0062;
+1B78 0062;
+1B7A 0062;
+1B7C 0062;
+2108 0062;
+2117 0062;
+211E 0062;
+2123 0062;
+2127 0062;
+212E 0062;
+2141 0062;
+2143 0062;
+214A 0062;
+214D 0062;
+219A 0021;
+2190 0062;
+219B 003F;
+2191 0021;
+2193 0021;
+2194 0338 0334;
+2194 0062;
+2196 0041;
+2198 0041;
+219C 0041;
+219E 0041;
+21A0 0041;
+21A2 0041;
+21A4 0041;
+21A6 0041;
+21A8 0041;
+21AA 0041;
+21AC 0041;
+21AF 0041;
+21B1 0041;
+21B3 0041;
+21B5 0041;
+21B7 0041;
+21B9 0041;
+21BB 0041;
+21BD 0041;
+21BF 0041;
+21C1 0041;
+21C3 0041;
+21C5 0041;
+21C7 0041;
+21C9 0041;
+21CB 0041;
+21CD 0021;
+21D1 003F;
+21D2 0061;
+21D3 0062;
+21CE 0041;
+21D6 0061;
+21D8 0061;
+21DA 0061;
+21DC 0061;
+21DE 0061;
+21E0 0061;
+21E2 0061;
+21E4 0061;
+21E6 0061;
+21E8 0061;
+21EA 0061;
+21EC 0061;
+21EE 0061;
+21F0 0061;
+21F2 0061;
+21F4 0061;
+21F6 0061;
+21F8 0061;
+21FA 0061;
+21FC 0061;
+21FE 0061;
+2200 0061;
+1D715 0021;
+2202 0061;
+1D789 0041;
+2203 0021;
+2205 0021;
+2207 0021;
+1D76F 003F;
+1D6FB 0041;
+2208 0338 0334;
+2208 0062;
+220C 0021;
+220D 003F;
+220E 003F;
+2210 003F;
+2140 0061;
+002B 003F;
+FB29 0061;
+FB29 0062;
+00F7 003F;
+226E 0334;
+003C 0041;
+226E 0062;
+FF1D 003F;
+2A76 0041;
+FE66 0041;
+207C 0062;
+FF1E 003F;
+226F 0041;
+00AC 0041;
+007C 0041;
+00A6 0041;
+007E 0021;
+2212 0021;
+208B 0061;
+2214 0021;
+2216 0021;
+2218 0021;
+221A 0021;
+0606 0021;
+0607 0021;
+221E 0021;
+2220 0021;
+2222 0021;
+2224 003F;
+2226 0021;
+2227 003F;
+2229 003F;
+222B 003F;
+222D 0061;
+222E 003F;
+222F 0062;
+2232 003F;
+2234 003F;
+2236 003F;
+2238 003F;
+223A 003F;
+2241 0334;
+2241 0062;
+223E 0062;
+2240 0062;
+2243 003F;
+2245 0021;
+2246 0021;
+2249 003F;
+224A 0041;
+224C 0041;
+226D 0061;
+224F 003F;
+2251 003F;
+2253 003F;
+2255 003F;
+2257 003F;
+2259 003F;
+225B 003F;
+225D 003F;
+225F 003F;
+2261 0061;
+2263 0062;
+2270 0041;
+2265 0041;
+2267 0021;
+2269 0021;
+226B 0021;
+2272 0338 0334;
+2272 0062;
+2275 0061;
+2276 0061;
+2277 003F;
+227A 0021;
+227B 0338 0334;
+227B 0062;
+22E0 0061;
+227D 0061;
+227E 0062;
+2282 003F;
+2283 0021;
+2286 0338 0334;
+2286 0062;
+2289 0061;
+228B 003F;
+228D 003F;
+228F 003F;
+22E2 0334;
+22E2 0062;
+22E3 0041;
+2294 0061;
+2296 0061;
+2298 0061;
+229A 0061;
+229C 0061;
+229E 0061;
+22A0 0061;
+22A2 0021;
+22A3 0021;
+22A5 0021;
+22A7 0021;
+22AD 003F;
+22AE 0021;
+22AA 003F;
+22AB 0061;
+22B0 0062;
+22B2 003F;
+22B3 0021;
+22B4 0338 0334;
+22B4 0062;
+22ED 0061;
+22B7 003F;
+22B9 003F;
+22BB 003F;
+22BD 003F;
+22BF 003F;
+22C1 003F;
+22C3 003F;
+22C5 003F;
+22C7 003F;
+22C9 003F;
+22CB 003F;
+22CD 003F;
+22CF 003F;
+22D1 003F;
+22D3 003F;
+22D5 003F;
+22D7 003F;
+22D9 003F;
+22DB 003F;
+22DD 003F;
+22DF 003F;
+22E5 003F;
+22E7 003F;
+22E9 003F;
+22EF 003F;
+22F1 003F;
+22F3 003F;
+22F5 003F;
+22F7 003F;
+22F9 003F;
+22FB 003F;
+22FD 003F;
+22FF 003F;
+2301 003F;
+2303 003F;
+2305 003F;
+2307 003F;
+2309 003F;
+230B 003F;
+230D 003F;
+230F 003F;
+2311 003F;
+2313 003F;
+2315 003F;
+2317 003F;
+2319 003F;
+231B 003F;
+231D 003F;
+231F 003F;
+2321 003F;
+2323 003F;
+2325 003F;
+2327 003F;
+232B 003F;
+232D 003F;
+232F 003F;
+2331 003F;
+2333 003F;
+2335 003F;
+2337 003F;
+2339 003F;
+233B 003F;
+233D 003F;
+233F 003F;
+2341 003F;
+2343 003F;
+2345 003F;
+2347 003F;
+2349 003F;
+234B 003F;
+234D 003F;
+234F 003F;
+2351 003F;
+2353 003F;
+2355 003F;
+2357 003F;
+2359 003F;
+235B 003F;
+235D 003F;
+235F 003F;
+2361 003F;
+2363 003F;
+2365 003F;
+2367 003F;
+2369 003F;
+236B 003F;
+236D 003F;
+236F 003F;
+2371 003F;
+2373 003F;
+2375 003F;
+2377 003F;
+2379 003F;
+237B 003F;
+237D 003F;
+237F 003F;
+2381 003F;
+2383 003F;
+2385 003F;
+2387 003F;
+2389 003F;
+238B 003F;
+238D 003F;
+238F 003F;
+2391 003F;
+2393 003F;
+2395 003F;
+2397 003F;
+2399 003F;
+239B 003F;
+239D 003F;
+239F 003F;
+23A1 003F;
+23A3 003F;
+23A5 003F;
+23A7 003F;
+23A9 003F;
+23AB 003F;
+23AD 003F;
+23AF 003F;
+23B1 003F;
+23B3 003F;
+23B5 003F;
+23B7 003F;
+23B9 003F;
+23BB 003F;
+23BD 003F;
+23BF 003F;
+23C1 003F;
+23C3 003F;
+23C5 003F;
+23C7 003F;
+23C9 003F;
+23CB 003F;
+23CD 003F;
+23CF 003F;
+23D1 003F;
+23D3 003F;
+23D5 003F;
+23D7 003F;
+23D9 003F;
+23DB 003F;
+23DD 003F;
+23DF 003F;
+23E1 003F;
+23E3 003F;
+23E5 003F;
+23E7 003F;
+2401 003F;
+2403 003F;
+2405 003F;
+2407 003F;
+2409 003F;
+240B 003F;
+240D 003F;
+240F 003F;
+2411 003F;
+2413 003F;
+2415 003F;
+2417 003F;
+2419 003F;
+241B 003F;
+241D 003F;
+241F 003F;
+2421 003F;
+2423 003F;
+2425 003F;
+2440 003F;
+2442 003F;
+2444 003F;
+2446 003F;
+2448 003F;
+244A 003F;
+2501 003F;
+FFE8 0061;
+2504 003F;
+2506 003F;
+2508 003F;
+250A 003F;
+250C 003F;
+250E 003F;
+2510 003F;
+2512 003F;
+2514 003F;
+2516 003F;
+2518 003F;
+251A 003F;
+251C 003F;
+251E 003F;
+2520 003F;
+2522 003F;
+2524 003F;
+2526 003F;
+2528 003F;
+252A 003F;
+252C 003F;
+252E 003F;
+2530 003F;
+2532 003F;
+2534 003F;
+2536 003F;
+2538 003F;
+253A 003F;
+253C 003F;
+253E 003F;
+2540 003F;
+2542 003F;
+2544 003F;
+2546 003F;
+2548 003F;
+254A 003F;
+254C 003F;
+254E 003F;
+2550 003F;
+2552 003F;
+2554 003F;
+2556 003F;
+2558 003F;
+255A 003F;
+255C 003F;
+255E 003F;
+2560 003F;
+2562 003F;
+2564 003F;
+2566 003F;
+2568 003F;
+256A 003F;
+256C 003F;
+256E 003F;
+2570 003F;
+2572 003F;
+2574 003F;
+2576 003F;
+2578 003F;
+257A 003F;
+257C 003F;
+257E 003F;
+2580 003F;
+2582 003F;
+2584 003F;
+2586 003F;
+2588 003F;
+258A 003F;
+258C 003F;
+258E 003F;
+2590 003F;
+2592 003F;
+2594 003F;
+2596 003F;
+2598 003F;
+259A 003F;
+259C 003F;
+259E 003F;
+FFED 0021;
+25A1 003F;
+25A3 003F;
+25A5 003F;
+25A7 003F;
+25A9 003F;
+25AB 003F;
+25AD 003F;
+25AF 003F;
+25B1 003F;
+25B3 003F;
+25B5 003F;
+25B7 003F;
+25B9 003F;
+25BB 003F;
+25BD 003F;
+25BF 003F;
+25C1 003F;
+25C3 003F;
+25C5 003F;
+25C7 003F;
+25C9 003F;
+FFEE 0021;
+25CC 003F;
+25CE 003F;
+25D0 003F;
+25D2 003F;
+25D4 003F;
+25D6 003F;
+25D8 003F;
+25DA 003F;
+25DC 003F;
+25DE 003F;
+25E0 003F;
+25E2 003F;
+25E4 003F;
+25E6 003F;
+25E8 003F;
+25EA 003F;
+25EC 003F;
+25EE 003F;
+25F0 003F;
+25F2 003F;
+25F4 003F;
+25F6 003F;
+25F8 003F;
+25FA 003F;
+25FC 003F;
+25FE 003F;
+2600 003F;
+2602 003F;
+2604 003F;
+2606 003F;
+2608 003F;
+260A 003F;
+260C 003F;
+260E 003F;
+2610 003F;
+2612 003F;
+2614 003F;
+2616 003F;
+2618 003F;
+261A 003F;
+261C 003F;
+261E 003F;
+2620 003F;
+2622 003F;
+2624 003F;
+2626 003F;
+2628 003F;
+262A 003F;
+262C 003F;
+262E 003F;
+2638 003F;
+263A 003F;
+263C 003F;
+263E 003F;
+2640 003F;
+2642 003F;
+2644 003F;
+2646 003F;
+2648 003F;
+264A 003F;
+264C 003F;
+264E 003F;
+2650 003F;
+2652 003F;
+2654 003F;
+2656 003F;
+2658 003F;
+265A 003F;
+265C 003F;
+265E 003F;
+2660 003F;
+2662 003F;
+2664 003F;
+2666 003F;
+2668 003F;
+266A 003F;
+266C 003F;
+2671 003F;
+2673 003F;
+2675 003F;
+2677 003F;
+2679 003F;
+267B 003F;
+267D 003F;
+267F 003F;
+2681 003F;
+2683 003F;
+2685 003F;
+2687 003F;
+2689 003F;
+2691 003F;
+2693 003F;
+2695 003F;
+2697 003F;
+2699 003F;
+269B 003F;
+269D 003F;
+26A1 003F;
+26A3 003F;
+26A5 003F;
+26A7 003F;
+26A9 003F;
+26AB 003F;
+26AD 003F;
+26AF 003F;
+26B1 003F;
+26B3 003F;
+26B5 003F;
+26B7 003F;
+26B9 003F;
+26BB 003F;
+26C0 003F;
+26C2 003F;
+2701 003F;
+2703 003F;
+2706 003F;
+2708 003F;
+270C 003F;
+270E 003F;
+2710 003F;
+2712 003F;
+2714 003F;
+2716 003F;
+2718 003F;
+271A 003F;
+271C 003F;
+271E 003F;
+2720 003F;
+2722 003F;
+2724 003F;
+2726 003F;
+2729 003F;
+272B 003F;
+272D 003F;
+272F 003F;
+2731 003F;
+2733 003F;
+2735 003F;
+2737 003F;
+2739 003F;
+273B 003F;
+273D 003F;
+273F 003F;
+2741 003F;
+2743 003F;
+2745 003F;
+2747 003F;
+2749 003F;
+274B 003F;
+274F 003F;
+2751 003F;
+2756 003F;
+2759 003F;
+275B 003F;
+275D 003F;
+2761 003F;
+2763 003F;
+2765 003F;
+2767 003F;
+2769 003F;
+276B 003F;
+276D 003F;
+276F 003F;
+2771 003F;
+2773 003F;
+2775 003F;
+2798 003F;
+279A 003F;
+279C 003F;
+279E 003F;
+27A0 003F;
+27A2 003F;
+27A4 003F;
+27A6 003F;
+27A8 003F;
+27AA 003F;
+27AC 003F;
+27AE 003F;
+27B1 003F;
+27B3 003F;
+27B5 003F;
+27B7 003F;
+27B9 003F;
+27BB 003F;
+27BD 003F;
+27C0 003F;
+27C2 003F;
+27C4 003F;
+27C6 003F;
+27C8 003F;
+27CA 003F;
+27D0 003F;
+27D2 003F;
+27D4 003F;
+27D6 003F;
+27D8 003F;
+27DA 003F;
+27DC 003F;
+27DE 003F;
+27E0 003F;
+27E2 003F;
+27E4 003F;
+27E6 003F;
+27E8 003F;
+27EA 003F;
+27F0 003F;
+27F2 003F;
+27F4 003F;
+27F6 003F;
+27F8 003F;
+27FA 003F;
+27FC 003F;
+27FE 003F;
+2900 003F;
+2902 003F;
+2904 003F;
+2906 003F;
+2908 003F;
+290A 003F;
+290C 003F;
+290E 003F;
+2910 003F;
+2912 003F;
+2914 003F;
+2916 003F;
+2918 003F;
+291A 003F;
+291C 003F;
+291E 003F;
+2920 003F;
+2922 003F;
+2924 003F;
+2926 003F;
+2928 003F;
+292A 003F;
+292C 003F;
+292E 003F;
+2930 003F;
+2932 003F;
+2934 003F;
+2936 003F;
+2938 003F;
+293A 003F;
+293C 003F;
+293E 003F;
+2940 003F;
+2942 003F;
+2944 003F;
+2946 003F;
+2948 003F;
+294A 003F;
+294C 003F;
+294E 003F;
+2950 003F;
+2952 003F;
+2954 003F;
+2956 003F;
+2958 003F;
+295A 003F;
+295C 003F;
+295E 003F;
+2960 003F;
+2962 003F;
+2964 003F;
+2966 003F;
+2968 003F;
+296A 003F;
+296C 003F;
+296E 003F;
+2970 003F;
+2972 003F;
+2974 003F;
+2976 003F;
+2978 003F;
+297A 003F;
+297C 003F;
+297E 003F;
+2980 003F;
+2982 003F;
+299A 003F;
+299C 003F;
+299E 003F;
+29A0 003F;
+29A2 003F;
+29A4 003F;
+29A6 003F;
+29A8 003F;
+29AA 003F;
+29AC 003F;
+29AE 003F;
+29B0 003F;
+29B2 003F;
+29B4 003F;
+29B6 003F;
+29B8 003F;
+29BA 003F;
+29BC 003F;
+29BE 003F;
+29C0 003F;
+29C2 003F;
+29C4 003F;
+29C6 003F;
+29C8 003F;
+29CA 003F;
+29CC 003F;
+29CE 003F;
+29D0 003F;
+29D2 003F;
+29D4 003F;
+29D6 003F;
+29D8 003F;
+29DA 003F;
+29DC 003F;
+29DE 003F;
+29E0 003F;
+29E2 003F;
+29E4 003F;
+29E6 003F;
+29E8 003F;
+29EA 003F;
+29EC 003F;
+29EE 003F;
+29F0 003F;
+29F2 003F;
+29F4 003F;
+29F6 003F;
+29F8 003F;
+29FA 003F;
+29FE 003F;
+2A00 003F;
+2A02 003F;
+2A04 003F;
+2A06 003F;
+2A08 003F;
+2A0A 003F;
+2A0D 003F;
+2A0F 003F;
+2A11 003F;
+2A13 003F;
+2A15 003F;
+2A17 003F;
+2A19 003F;
+2A1B 003F;
+2A1D 003F;
+2A1F 003F;
+2A21 003F;
+2A23 003F;
+2A25 003F;
+2A27 003F;
+2A29 003F;
+2A2B 003F;
+2A2D 003F;
+2A2F 003F;
+2A31 003F;
+2A33 003F;
+2A35 003F;
+2A37 003F;
+2A39 003F;
+2A3B 003F;
+2A3D 003F;
+2A3F 003F;
+2A41 003F;
+2A43 003F;
+2A45 003F;
+2A47 003F;
+2A49 003F;
+2A4B 003F;
+2A4D 003F;
+2A4F 003F;
+2A51 003F;
+2A53 003F;
+2A55 003F;
+2A57 003F;
+2A59 003F;
+2A5B 003F;
+2A5D 003F;
+2A5F 003F;
+2A61 003F;
+2A63 003F;
+2A65 003F;
+2A67 003F;
+2A69 003F;
+2A6B 003F;
+2A6D 003F;
+2A6F 003F;
+2A71 003F;
+2A73 003F;
+2A78 003F;
+2A7A 003F;
+2A7C 003F;
+2A7E 003F;
+2A80 003F;
+2A82 003F;
+2A84 003F;
+2A86 003F;
+2A88 003F;
+2A8A 003F;
+2A8C 003F;
+2A8E 003F;
+2A90 003F;
+2A92 003F;
+2A94 003F;
+2A96 003F;
+2A98 003F;
+2A9A 003F;
+2A9C 003F;
+2A9E 003F;
+2AA0 003F;
+2AA2 003F;
+2AA4 003F;
+2AA6 003F;
+2AA8 003F;
+2AAA 003F;
+2AAC 003F;
+2AAE 003F;
+2AB0 003F;
+2AB2 003F;
+2AB4 003F;
+2AB6 003F;
+2AB8 003F;
+2ABA 003F;
+2ABC 003F;
+2ABE 003F;
+2AC0 003F;
+2AC2 003F;
+2AC4 003F;
+2AC6 003F;
+2AC8 003F;
+2ACA 003F;
+2ACC 003F;
+2ACE 003F;
+2AD0 003F;
+2AD2 003F;
+2AD4 003F;
+2AD6 003F;
+2AD8 003F;
+2ADA 003F;
+2ADD 0338 0334;
+2ADC 0062;
+2ADF 0062;
+2AE1 0062;
+2AE3 0062;
+2AE5 0062;
+2AE7 0062;
+2AE9 0062;
+2AEB 0062;
+2AED 0062;
+2AEF 0062;
+2AF1 0062;
+2AF3 0062;
+2AF5 0062;
+2AF7 0062;
+2AF9 0062;
+2AFB 0062;
+2AFD 0062;
+2AFF 0062;
+2B01 0062;
+2B03 0062;
+2B05 0062;
+2B07 0062;
+2B09 0062;
+2B0B 0062;
+2B0D 0062;
+2B0F 0062;
+2B11 0062;
+2B13 0062;
+2B15 0062;
+2B17 0062;
+2B19 0062;
+2B1B 0062;
+2B1D 0062;
+2B1F 0062;
+2B21 0062;
+2B23 0062;
+2B25 0062;
+2B27 0062;
+2B29 0062;
+2B2B 0062;
+2B2D 0062;
+2B2F 0062;
+2B31 0062;
+2B33 0062;
+2B35 0062;
+2B37 0062;
+2B39 0062;
+2B3B 0062;
+2B3D 0062;
+2B3F 0062;
+2B41 0062;
+2B43 0062;
+2B45 0062;
+2B47 0062;
+2B49 0062;
+2B4B 0062;
+2B50 0062;
+2B52 0062;
+2B54 0062;
+2CE6 0062;
+2CE8 0062;
+2CEA 0062;
+2801 0062;
+2803 0062;
+2805 0062;
+2807 0062;
+2809 0062;
+280B 0062;
+280D 0062;
+280F 0062;
+2811 0062;
+2813 0062;
+2815 0062;
+2817 0062;
+2819 0062;
+281B 0062;
+281D 0062;
+281F 0062;
+2821 0062;
+2823 0062;
+2825 0062;
+2827 0062;
+2829 0062;
+282B 0062;
+282D 0062;
+282F 0062;
+2831 0062;
+2833 0062;
+2835 0062;
+2837 0062;
+2839 0062;
+283B 0062;
+283D 0062;
+283F 0062;
+2841 0062;
+2843 0062;
+2845 0062;
+2847 0062;
+2849 0062;
+284B 0062;
+284D 0062;
+284F 0062;
+2851 0062;
+2853 0062;
+2855 0062;
+2857 0062;
+2859 0062;
+285B 0062;
+285D 0062;
+285F 0062;
+2861 0062;
+2863 0062;
+2865 0062;
+2867 0062;
+2869 0062;
+286B 0062;
+286D 0062;
+286F 0062;
+2871 0062;
+2873 0062;
+2875 0062;
+2877 0062;
+2879 0062;
+287B 0062;
+287D 0062;
+287F 0062;
+2881 0062;
+2883 0062;
+2885 0062;
+2887 0062;
+2889 0062;
+288B 0062;
+288D 0062;
+288F 0062;
+2891 0062;
+2893 0062;
+2895 0062;
+2897 0062;
+2899 0062;
+289B 0062;
+289D 0062;
+289F 0062;
+28A1 0062;
+28A3 0062;
+28A5 0062;
+28A7 0062;
+28A9 0062;
+28AB 0062;
+28AD 0062;
+28AF 0062;
+28B1 0062;
+28B3 0062;
+28B5 0062;
+28B7 0062;
+28B9 0062;
+28BB 0062;
+28BD 0062;
+28BF 0062;
+28C1 0062;
+28C3 0062;
+28C5 0062;
+28C7 0062;
+28C9 0062;
+28CB 0062;
+28CD 0062;
+28CF 0062;
+28D1 0062;
+28D3 0062;
+28D5 0062;
+28D7 0062;
+28D9 0062;
+28DB 0062;
+28DD 0062;
+28DF 0062;
+28E1 0062;
+28E3 0062;
+28E5 0062;
+28E7 0062;
+28E9 0062;
+28EB 0062;
+28ED 0062;
+28EF 0062;
+28F1 0062;
+28F3 0062;
+28F5 0062;
+28F7 0062;
+28F9 0062;
+28FB 0062;
+28FD 0062;
+28FF 0062;
+268B 0062;
+268D 0062;
+268F 0062;
+2631 0062;
+2633 0062;
+2635 0062;
+2637 0062;
+4DC1 0062;
+4DC3 0062;
+4DC5 0062;
+4DC7 0062;
+4DC9 0062;
+4DCB 0062;
+4DCD 0062;
+4DCF 0062;
+4DD1 0062;
+4DD3 0062;
+4DD5 0062;
+4DD7 0062;
+4DD9 0062;
+4DDB 0062;
+4DDD 0062;
+4DDF 0062;
+4DE1 0062;
+4DE3 0062;
+4DE5 0062;
+4DE7 0062;
+4DE9 0062;
+4DEB 0062;
+4DED 0062;
+4DEF 0062;
+4DF1 0062;
+4DF3 0062;
+4DF5 0062;
+4DF7 0062;
+4DF9 0062;
+4DFB 0062;
+4DFD 0062;
+4DFF 0062;
+1D301 0062;
+1D303 0062;
+1D305 0062;
+1D307 0062;
+1D309 0062;
+1D30B 0062;
+1D30D 0062;
+1D30F 0062;
+1D311 0062;
+1D313 0062;
+1D315 0062;
+1D317 0062;
+1D319 0062;
+1D31B 0062;
+1D31D 0062;
+1D31F 0062;
+1D321 0062;
+1D323 0062;
+1D325 0062;
+1D327 0062;
+1D329 0062;
+1D32B 0062;
+1D32D 0062;
+1D32F 0062;
+1D331 0062;
+1D333 0062;
+1D335 0062;
+1D337 0062;
+1D339 0062;
+1D33B 0062;
+1D33D 0062;
+1D33F 0062;
+1D341 0062;
+1D343 0062;
+1D345 0062;
+1D347 0062;
+1D349 0062;
+1D34B 0062;
+1D34D 0062;
+1D34F 0062;
+1D351 0062;
+1D353 0062;
+1D355 0062;
+A490 0062;
+A492 0062;
+A494 0062;
+A496 0062;
+A498 0062;
+A49A 0062;
+A49C 0062;
+A49E 0062;
+A4A0 0062;
+A4A2 0062;
+A4A4 0062;
+A4A6 0062;
+A4A8 0062;
+A4AA 0062;
+A4AC 0062;
+A4AE 0062;
+A4B0 0062;
+A4B2 0062;
+A4B4 0062;
+A4B6 0062;
+A4B8 0062;
+A4BA 0062;
+A4BC 0062;
+A4BE 0062;
+A4C0 0062;
+A4C2 0062;
+A4C4 0062;
+A4C6 0062;
+10138 0062;
+1013A 0062;
+1013C 0062;
+1013E 0062;
+10179 0062;
+1017B 0062;
+1017D 0062;
+1017F 0062;
+10181 0062;
+10183 0062;
+10185 0062;
+10187 0062;
+10189 0062;
+10191 0062;
+10193 0062;
+10195 0062;
+10197 0062;
+10199 0062;
+1019B 0062;
+101D1 0062;
+101D3 0062;
+101D5 0062;
+101D7 0062;
+101D9 0062;
+101DB 0062;
+101DD 0062;
+101DF 0062;
+101E1 0062;
+101E3 0062;
+101E5 0062;
+101E7 0062;
+101E9 0062;
+101EB 0062;
+101ED 0062;
+101EF 0062;
+101F1 0062;
+101F3 0062;
+101F5 0062;
+101F7 0062;
+101F9 0062;
+101FB 0062;
+1D000 0062;
+1D002 0062;
+1D004 0062;
+1D006 0062;
+1D008 0062;
+1D00A 0062;
+1D00C 0062;
+1D00E 0062;
+1D010 0062;
+1D012 0062;
+1D014 0062;
+1D016 0062;
+1D018 0062;
+1D01A 0062;
+1D01C 0062;
+1D01E 0062;
+1D020 0062;
+1D022 0062;
+1D024 0062;
+1D026 0062;
+1D028 0062;
+1D02A 0062;
+1D02C 0062;
+1D02E 0062;
+1D030 0062;
+1D032 0062;
+1D034 0062;
+1D036 0062;
+1D038 0062;
+1D03A 0062;
+1D03C 0062;
+1D03E 0062;
+1D040 0062;
+1D042 0062;
+1D044 0062;
+1D046 0062;
+1D048 0062;
+1D04A 0062;
+1D04C 0062;
+1D04E 0062;
+1D050 0062;
+1D052 0062;
+1D054 0062;
+1D056 0062;
+1D058 0062;
+1D05A 0062;
+1D05C 0062;
+1D05E 0062;
+1D060 0062;
+1D062 0062;
+1D064 0062;
+1D066 0062;
+1D068 0062;
+1D06A 0062;
+1D06C 0062;
+1D06E 0062;
+1D070 0062;
+1D072 0062;
+1D074 0062;
+1D076 0062;
+1D078 0062;
+1D07A 0062;
+1D07C 0062;
+1D07E 0062;
+1D080 0062;
+1D082 0062;
+1D084 0062;
+1D086 0062;
+1D088 0062;
+1D08A 0062;
+1D08C 0062;
+1D08E 0062;
+1D090 0062;
+1D092 0062;
+1D094 0062;
+1D096 0062;
+1D098 0062;
+1D09A 0062;
+1D09C 0062;
+1D09E 0062;
+1D0A0 0062;
+1D0A2 0062;
+1D0A4 0062;
+1D0A6 0062;
+1D0A8 0062;
+1D0AA 0062;
+1D0AC 0062;
+1D0AE 0062;
+1D0B0 0062;
+1D0B2 0062;
+1D0B4 0062;
+1D0B6 0062;
+1D0B8 0062;
+1D0BA 0062;
+1D0BC 0062;
+1D0BE 0062;
+1D0C0 0062;
+1D0C2 0062;
+1D0C4 0062;
+1D0C6 0062;
+1D0C8 0062;
+1D0CA 0062;
+1D0CC 0062;
+1D0CE 0062;
+1D0D0 0062;
+1D0D2 0062;
+1D0D4 0062;
+1D0D6 0062;
+1D0D8 0062;
+1D0DA 0062;
+1D0DC 0062;
+1D0DE 0062;
+1D0E0 0062;
+1D0E2 0062;
+1D0E4 0062;
+1D0E6 0062;
+1D0E8 0062;
+1D0EA 0062;
+1D0EC 0062;
+1D0EE 0062;
+1D0F0 0062;
+1D0F2 0062;
+1D0F4 0062;
+1D100 0062;
+1D102 0062;
+1D104 0062;
+1D106 0062;
+1D108 0062;
+1D10A 0062;
+1D10C 0062;
+1D10E 0062;
+1D110 0062;
+1D112 0062;
+1D114 0062;
+1D116 0062;
+1D118 0062;
+1D11A 0062;
+1D11C 0062;
+1D11E 0062;
+1D120 0062;
+1D122 0062;
+1D124 0062;
+1D126 0062;
+266E 0062;
+1D12A 0062;
+1D12C 0062;
+1D12E 0062;
+1D130 0062;
+1D132 0062;
+1D134 0062;
+1D136 0062;
+1D138 0062;
+1D129 0062;
+1D13B 0062;
+1D13D 0062;
+1D13F 0062;
+1D141 0062;
+1D143 0062;
+1D145 0062;
+1D147 0062;
+1D149 0062;
+1D14B 0062;
+1D14D 0062;
+1D14F 0062;
+1D151 0062;
+1D153 0062;
+1D155 0062;
+1D15E 0021;
+1D158 0334 1D165 1D16E;
+1D158 1D165 1D170 0334;
+1D15F 1D171 0334;
+1D15F 003F;
+1D162 0061;
+1D158 0062;
+1D159 0041;
+1D15B 0041;
+1D15D 0041;
+1D16B 0041;
+1D183 0041;
+1D18C 0041;
+1D18E 0041;
+1D190 0041;
+1D192 0041;
+1D194 0041;
+1D196 0041;
+1D198 0041;
+1D19A 0041;
+1D19C 0041;
+1D19E 0041;
+1D1A0 0041;
+1D1A2 0041;
+1D1A4 0041;
+1D1A6 0041;
+1D1A8 0041;
+1D1AE 0041;
+1D1B0 0041;
+1D1B2 0041;
+1D1B4 0041;
+1D1B6 0041;
+1D1B8 0041;
+1D1BB 0334 1D16E;
+1D1BF 003F;
+1D1BB 0062;
+1D1BC 1D16E 0334;
+1D1BE 003F;
+1D1BA 0062;
+1D1C2 003F;
+1D1C4 003F;
+1D1C6 003F;
+1D1C8 003F;
+1D1CA 003F;
+1D1CC 003F;
+1D1CE 003F;
+1D1D0 003F;
+1D1D2 003F;
+1D1D4 003F;
+1D1D6 003F;
+1D1D8 003F;
+1D1DA 003F;
+1D1DC 003F;
+1D200 003F;
+1D202 003F;
+1D204 003F;
+1D206 003F;
+1D208 003F;
+1D20A 003F;
+1D20C 003F;
+1D20E 003F;
+1D210 003F;
+1D212 003F;
+1D214 003F;
+1D216 003F;
+1D218 003F;
+1D21A 003F;
+1D21C 003F;
+1D21E 003F;
+1D220 003F;
+1D222 003F;
+1D224 003F;
+1D226 003F;
+1D228 003F;
+1D22A 003F;
+1D22C 003F;
+1D22E 003F;
+1D230 003F;
+1D232 003F;
+1D234 003F;
+1D236 003F;
+1D238 003F;
+1D23A 003F;
+1D23C 003F;
+1D23E 003F;
+1D240 003F;
+1D245 003F;
+1F001 003F;
+1F003 003F;
+1F005 003F;
+1F007 003F;
+1F009 003F;
+1F00B 003F;
+1F00D 003F;
+1F00F 003F;
+1F011 003F;
+1F013 003F;
+1F015 003F;
+1F017 003F;
+1F019 003F;
+1F01B 003F;
+1F01D 003F;
+1F01F 003F;
+1F021 003F;
+1F023 003F;
+1F025 003F;
+1F027 003F;
+1F029 003F;
+1F02B 003F;
+1F031 003F;
+1F033 003F;
+1F035 003F;
+1F037 003F;
+1F039 003F;
+1F03B 003F;
+1F03D 003F;
+1F03F 003F;
+1F041 003F;
+1F043 003F;
+1F045 003F;
+1F047 003F;
+1F049 003F;
+1F04B 003F;
+1F04D 003F;
+1F04F 003F;
+1F051 003F;
+1F053 003F;
+1F055 003F;
+1F057 003F;
+1F059 003F;
+1F05B 003F;
+1F05D 003F;
+1F05F 003F;
+1F061 003F;
+1F063 003F;
+1F065 003F;
+1F067 003F;
+1F069 003F;
+1F06B 003F;
+1F06D 003F;
+1F06F 003F;
+1F071 003F;
+1F073 003F;
+1F075 003F;
+1F077 003F;
+1F079 003F;
+1F07B 003F;
+1F07D 003F;
+1F07F 003F;
+1F081 003F;
+1F083 003F;
+1F085 003F;
+1F087 003F;
+1F089 003F;
+1F08B 003F;
+1F08D 003F;
+1F08F 003F;
+1F091 003F;
+1F093 003F;
+2FF1 003F;
+2FF3 003F;
+2FF5 003F;
+2FF7 003F;
+2FF9 003F;
+2FFB 003F;
+31C1 003F;
+31C3 003F;
+31C5 003F;
+31C7 003F;
+31C9 003F;
+31CB 003F;
+31CD 003F;
+31CF 003F;
+31D1 003F;
+31D3 003F;
+31D5 003F;
+31D7 003F;
+31D9 003F;
+31DB 003F;
+31DD 003F;
+31DF 003F;
+31E1 003F;
+31E3 003F;
+3036 0021;
+3013 003F;
+3037 003F;
+303F 003F;
+3191 003F;
+FFFC 003F;
+09F8 003F;
+0BF0 003F;
+0BF2 003F;
+0D71 003F;
+0D73 003F;
+0D75 003F;
+1373 003F;
+1375 003F;
+1377 003F;
+1379 003F;
+137B 003F;
+2180 003F;
+2182 003F;
+2187 003F;
+2CFD 003F;
+10323 003F;
+10111 003F;
+10113 003F;
+10115 003F;
+10117 003F;
+10119 003F;
+1011B 003F;
+1011D 003F;
+1011F 003F;
+10121 003F;
+10123 003F;
+10125 003F;
+10127 003F;
+10129 003F;
+1012B 003F;
+1012D 003F;
+1012F 003F;
+10131 003F;
+10133 003F;
+10141 003F;
+10145 003F;
+10147 003F;
+1014A 003F;
+1014C 003F;
+1014E 003F;
+10151 003F;
+10153 003F;
+10155 003F;
+10157 003F;
+10161 003F;
+10163 003F;
+10165 003F;
+10167 003F;
+10169 003F;
+1016B 003F;
+1016D 003F;
+1016F 003F;
+10171 003F;
+10174 003F;
+10176 003F;
+10178 003F;
+103D4 003F;
+10917 003F;
+10919 003F;
+10A45 003F;
+10A47 003F;
+12433 003F;
+12457 003F;
+1245B 003F;
+1245D 003F;
+1245F 003F;
+12461 003F;
+1D369 003F;
+1D36B 003F;
+1D36D 003F;
+1D36F 003F;
+1D371 003F;
+02D1 003F;
+0E46 003F;
+3005 003F;
+3032 0021;
+3034 0021;
+3035 003F;
+309E 003F;
+FF70 003F;
+30FD 0021;
+00A4 0021;
+00A2 0041;
+FE69 003F;
+00A3 0021;
+00A5 0021;
+060B 0021;
+09F3 0021;
+0BF9 0021;
+17DB 0021;
+20A1 0021;
+20A3 0021;
+20A5 0021;
+20A7 0021;
+20A9 0041;
+20AB 0021;
+20AD 0021;
+20AF 0021;
+20B1 0021;
+20B3 0021;
+20B5 0021;
+1D7EC 0021;
+0966 0021;
+A8D0 0021;
+1090 0021;
+1018A 0021;
+2070 003F;
+0B66 003F;
+0ED0 003F;
+1B50 003F;
+FF10 0041;
+1D7F6 0041;
+0660 0041;
+09E6 0041;
+0C78 0061;
+1946 0041;
+0F33 0041;
+17E0 0041;
+1810 0041;
+FF10 0062;
+0660 0062;
+0C66 0062;
+0F33 0062;
+1810 0062;
+0031 0021;
+2780 0021;
+09E7 0021;
+0D67 0021;
+1041 0021;
+3021 0021;
+1242C 0021;
+1D7D9 003F;
+2081 003F;
+0AE7 003F;
+19D1 003F;
+17F1 003F;
+10158 003F;
+12458 003F;
+215F 003F;
+2153 0062;
+2155 0062;
+215B 0062;
+24FE 003F;
+24FE 0061;
+24FE 0062;
+32C9 003F;
+24EB 0021;
+246A 0041;
+32CA 003F;
+24EC 0021;
+246B 0041;
+32CB 003F;
+24ED 0021;
+246C 0041;
+3365 003F;
+2495 0061;
+33ED 003F;
+24EF 0021;
+246E 0041;
+3367 003F;
+2497 0061;
+33EF 003F;
+24F1 0021;
+2470 0041;
+3369 003F;
+2499 0061;
+33F1 003F;
+24F3 0021;
+2472 0041;
+336B 003F;
+1D7E3 0061;
+2776 0061;
+2081 0061;
+104A1 0061;
+0AE7 0061;
+0C79 0041;
+19D1 0061;
+1C41 0061;
+17F1 0061;
+1C51 0061;
+10159 0061;
+12415 0061;
+1244F 0041;
+1D7CF 0062;
+00B9 0062;
+0A67 0062;
+1947 0062;
+17E1 0062;
+10142 0062;
+1244F 0062;
+32C0 0021;
+0032 0021;
+2781 0021;
+09E8 0021;
+0D68 0021;
+1042 0021;
+3022 0021;
+12423 0021;
+1D7D0 003F;
+00B2 003F;
+0A68 003F;
+1948 003F;
+17E2 003F;
+1015B 003F;
+12435 003F;
+2489 0062;
+2156 0062;
+2473 0061;
+33F3 0062;
+3251 0062;
+336D 0062;
+33F5 0062;
+3253 0062;
+336F 0062;
+33F7 0062;
+3255 0062;
+3256 0062;
+3257 0062;
+3258 0062;
+3259 0062;
+1D7D0 0061;
+2461 0061;
+00B2 0061;
+136A 0061;
+0A68 0061;
+0C7D 0061;
+1948 0061;
+0F2B 0061;
+17E2 0061;
+1812 0061;
+1015B 0061;
+12400 0061;
+12416 0041;
+1D361 0061;
+24F6 0062;
+104A2 0062;
+0C7D 0062;
+1C42 0062;
+1C52 0062;
+12416 0062;
+33E1 0021;
+335A 0021;
+1D7EF 0021;
+06F3 0021;
+0BE9 0021;
+0ED3 0021;
+1B53 0021;
+12420 0021;
+12451 0021;
+2462 003F;
+136B 003F;
+0C7B 003F;
+0F2C 003F;
+1813 003F;
+12425 003F;
+1D362 003F;
+00BE 0062;
+215C 0062;
+33FD 0062;
+33FE 0062;
+325D 0062;
+325F 0062;
+32B2 0062;
+32B4 0062;
+1D7D1 0041;
+2462 0041;
+0663 0041;
+0969 0041;
+0B69 0041;
+0CE9 0041;
+0E53 0041;
+A903 0041;
+AA53 0041;
+A623 0041;
+12425 0061;
+12408 0041;
+1243B 0041;
+1D7DB 0062;
+2083 0062;
+0AE9 0062;
+19D3 0062;
+17F3 0062;
+12408 0062;
+1243B 0062;
+32C2 0021;
+0034 0021;
+2783 0021;
+09EA 0021;
+194A 0021;
+17E4 0021;
+12402 0021;
+1243E 0021;
+1D7DC 003F;
+2084 003F;
+0AEA 003F;
+0ED4 003F;
+1B54 003F;
+12418 003F;
+12452 003F;
+2158 003F;
+32B6 003F;
+32B8 003F;
+32BA 003F;
+32BC 003F;
+32BE 003F;
+1D7E6 0061;
+2779 0061;
+2084 0061;
+104A4 0061;
+0AEA 0061;
+0D6A 0061;
+0ED4 0061;
+1044 0061;
+1B54 0061;
+3024 0061;
+12430 0061;
+12409 0041;
+1243F 0041;
+1D7D2 0062;
+2074 0062;
+0A6A 0062;
+0E54 0062;
+AA54 0062;
+1240F 0062;
+1244C 0062;
+32C3 0021;
+0035 0021;
+2784 0021;
+09EB 0021;
+19D5 0021;
+17F5 0021;
+10148 0021;
+12427 0021;
+1D7DD 003F;
+2085 003F;
+0B6B 003F;
+0F25 003F;
+1BB5 003F;
+10173 003F;
+1244D 003F;
+215A 003F;
+32BF 003F;
+1D7E7 0061;
+277A 0061;
+2085 0061;
+104A5 0061;
+0B6B 0061;
+A8D5 0061;
+0F25 0061;
+1095 0061;
+1BB5 0061;
+1010B 0061;
+1015F 0041;
+12431 0061;
+12427 0041;
+1D7D3 0062;
+2075 0062;
+0AEB 0062;
+0ED5 0062;
+1B55 0062;
+1015F 0062;
+12439 0062;
+32C4 0021;
+0036 0021;
+2785 0021;
+09EC 0021;
+19D6 0021;
+17F6 0021;
+12404 0021;
+1D7D4 003F;
+2076 003F;
+0AEC 003F;
+0ED6 003F;
+1B56 003F;
+12411 003F;
+248D 0062;
+1D7D4 0041;
+2465 0041;
+0666 0041;
+096C 0041;
+0BEC 0041;
+194C 0041;
+0F2F 0041;
+17E6 0041;
+1816 0041;
+2185 0041;
+12411 0041;
+1D7DE 0062;
+2086 0062;
+0B6C 0062;
+0F26 0062;
+1BB6 0062;
+1241A 0062;
+32C5 0021;
+0037 0021;
+2786 0021;
+09ED 0021;
+19D7 0021;
+17F7 0021;
+1240C 0021;
+1D7D5 003F;
+2077 003F;
+0AED 003F;
+0ED7 003F;
+1B57 003F;
+1241B 003F;
+248E 0062;
+1D7D5 0061;
+2466 0061;
+2077 0061;
+136F 0061;
+0AED 0061;
+0D6D 0061;
+0ED7 0061;
+1047 0061;
+1B57 0061;
+3027 0061;
+12442 0061;
+1D366 0061;
+24FB 0062;
+104A7 0062;
+A8D7 0062;
+1097 0062;
+1010D 0062;
+33E6 0021;
+335F 0021;
+1D7F4 0021;
+06F8 0021;
+0C6E 0021;
+1C48 0021;
+1C58 0021;
+12445 0021;
+24FC 003F;
+104A8 003F;
+A8D8 003F;
+1098 003F;
+1010E 003F;
+248F 003F;
+1D7EA 0061;
+277D 0061;
+2088 0061;
+104A8 0061;
+0B6E 0061;
+A8D8 0061;
+0F28 0061;
+1098 0061;
+1BB8 0061;
+1010E 0061;
+1240D 0041;
+1D7D6 0062;
+2078 0062;
+0AEE 0062;
+0ED8 0062;
+1B58 0062;
+1241C 0062;
+32C7 0021;
+0039 0021;
+2788 0021;
+09EF 0021;
+19D9 0021;
+17F9 0021;
+1240E 0021;
+FF19 003F;
+2792 003F;
+0A6F 003F;
+0E59 003F;
+AA59 003F;
+12414 003F;
+2490 0061;
+1D7F5 0061;
+2788 0061;
+2089 0041;
+104A9 0041;
+0B6F 0041;
+A8D9 0041;
+0F29 0041;
+1099 0041;
+1BB9 0041;
+1010F 0041;
+12407 0041;
+1D368 0041;
+277E 0062;
+096F 0062;
+194F 0062;
+17E9 0062;
+12407 0062;
+33E8 0021;
+3361 0021;
+0005 0061;
+0014 0061;
+001E 0061;
+0088 0061;
+0092 0061;
+009C 0061;
+0594 0061;
+059E 0061;
+05A8 0061;
+05C5 0061;
+0615 0061;
+06DA 0061;
+06E4 0061;
+0F35 0061;
+180E 0061;
+200B 0061;
+2060 0061;
+206F 0061;
+DFFF 0061;
+FE03 0061;
+FE0D 0061;
+FFF9 0061;
+1D16D 0061;
+1D177 0061;
+1D181 0061;
+1D1AB 0061;
+3FFFE 0061;
+8FFFE 0061;
+DFFFE 0061;
+E0027 0061;
+E0031 0061;
+E003B 0061;
+E0045 0061;
+E004F 0061;
+E0059 0061;
+E0063 0061;
+E006D 0061;
+E0077 0061;
+E0101 0061;
+E010B 0061;
+E0115 0061;
+E011F 0061;
+E0129 0061;
+E0133 0061;
+E013D 0061;
+E0147 0061;
+E0151 0061;
+E015B 0061;
+E0165 0061;
+E016F 0061;
+E0179 0061;
+E0183 0061;
+E018D 0061;
+E0197 0061;
+E01A1 0061;
+E01AB 0061;
+E01B5 0061;
+E01BF 0061;
+E01C9 0061;
+E01D3 0061;
+E01DD 0061;
+E01E7 0061;
+EFFFF 0061;
+0007 0041;
+0016 0041;
+007F 0041;
+008A 0041;
+0094 0041;
+009E 0041;
+0596 0041;
+05A0 0041;
+05AA 0041;
+0601 0041;
+0617 0041;
+06DC 0041;
+06E8 0041;
+0F82 0041;
+1B6C 0041;
+200D 0041;
+2062 0041;
+A671 0041;
+FDD1 0041;
+FE05 0041;
+FE0F 0041;
+FFFB 0041;
+1D16F 0041;
+1D179 0041;
+1D185 0041;
+1D1AD 0041;
+4FFFE 0041;
+9FFFE 0041;
+E0001 0041;
+E0029 0041;
+E0033 0041;
+E003D 0041;
+E0047 0041;
+E0051 0041;
+E005B 0041;
+E0065 0041;
+E006F 0041;
+E0079 0041;
+E0103 0041;
+E010D 0041;
+E0117 0041;
+E0121 0041;
+E012B 0041;
+E0135 0041;
+E013F 0041;
+E0149 0041;
+E0153 0041;
+E015D 0041;
+E0167 0041;
+E0171 0041;
+E017B 0041;
+E0185 0041;
+E018F 0041;
+E0199 0041;
+E01A3 0041;
+E01AD 0041;
+E01B7 0041;
+E01C1 0041;
+E01CB 0041;
+E01D5 0041;
+E01DF 0041;
+E01E9 0041;
+10FFFF 0041;
+0061 0334 0340;
+0041 0306 0334;
+1EAE 0334;
+0103 0303 0334;
+0103 0309 0334;
+00C2 0334;
+0061 0302 0334 0340;
+1EAB 0334;
+0041 0334 0302 0309;
+0061 0334 030A;
+0041 030A 0334 0341;
+0061 0308 0304 0334;
+00E3 0334;
+0061 0307 0334 0304;
+0105 0334;
+0061 0309 0334;
+0041 0334 030F;
+1EA1 0334;
+0102 0323 0334;
+0061 0325 0334;
+0313 0041;
+0300 0041;
+0342 0061;
+0307 0061;
+0305 0061;
+0310 0061;
+0317 0061;
+031C 0061;
+0321 0061;
+0326 0061;
+032D 0061;
+0333 0061;
+0336 0041;
+033C 0041;
+0346 0041;
+034B 0041;
+0351 0041;
+0356 0041;
+035B 0041;
+FE22 0061;
+1DC0 0041;
+1DC5 0041;
+1DCB 0041;
+1DD0 0041;
+0484 0041;
+A67C 0041;
+05B3 0041;
+05B8 0041;
+05C2 0041;
+064B 0041;
+FC5E 0041;
+FE77 0041;
+FE79 0041;
+FE7B 0041;
+FE7D 0041;
+FE7E 0041;
+0657 0041;
+065C 0041;
+0730 0041;
+0735 0041;
+073A 0041;
+073F 0041;
+0744 0041;
+0749 0041;
+07EE 0041;
+07F3 0041;
+0951 0041;
+0981 0041;
+0A02 0041;
+0A81 0041;
+0B02 0041;
+0C03 0041;
+0D03 0041;
+1B01 0041;
+1B81 0041;
+10A0D 0041;
+10A3A 0041;
+0E4A 0041;
+0EC9 0041;
+0F39 0041;
+A92C 0041;
+108D 0041;
+17C9 0041;
+17CE 0041;
+17DD 0041;
+302B 0041;
+3099 0041;
+20D1 0041;
+20D6 0041;
+20DB 0041;
+20E0 0041;
+20E5 0041;
+20EA 0041;
+20EF 0041;
+1D482 0021;
+1D68A 0021;
+1D538 0021;
+2090 0021;
+1EB1 0021;
+1EA7 0021;
+212B 0021;
+0226 0021;
+0200 0021;
+1E00 0021;
+1D51E 003F;
+FF21 003F;
+1D5D4 003F;
+00C1 003F;
+1EB4 003F;
+1EAA 003F;
+00E4 003F;
+0105 003F;
+1EA1 003F;
+33C2 003F;
+2101 003F;
+0061 0041;
+1D51E 0061;
+1D482 0041;
+1D68A 0041;
+1D49C 0061;
+1D400 0041;
+1D608 0041;
+2090 0041;
+00C0 0041;
+1EB1 0041;
+1EB2 0041;
+1EA7 0041;
+1EA8 0041;
+212B 0041;
+01DF 0041;
+0226 0041;
+0101 0041;
+0200 0041;
+1EB7 0041;
+1E00 0041;
+A732 0041;
+1D4EA 0062;
+0041 0062;
+1D5A0 0062;
+00E1 0062;
+1EB5 0062;
+1EAB 0062;
+01FA 0062;
+01E0 0062;
+0202 0062;
+00E6 0334 0301;
+01E3 0334;
+01FC 0021;
+01E2 003F;
+01FD 0041;
+1D2D 0062;
+A735 003F;
+A734 0062;
+A736 0041;
+A73B 0021;
+A739 0041;
+A73B 0062;
+A73D 0062;
+1D00 0041;
+2C65 0062;
+1D01 0041;
+1D02 0062;
+2C6F 0061;
+0251 003F;
+2C6D 0062;
+1D9B 003F;
+0003 0062;
+0012 0062;
+001C 0062;
+0086 0062;
+0090 0062;
+009A 0062;
+0592 0062;
+059C 0062;
+05A6 0062;
+05BD 0062;
+0613 0062;
+06D8 0062;
+06E2 0062;
+0F18 0062;
+180C 0062;
+1B72 0062;
+202D 0062;
+206D 0062;
+D804 0062;
+FE01 0062;
+FE0B 0062;
+FE73 0062;
+1D168 0062;
+1D175 0062;
+1D17F 0062;
+1D18B 0062;
+2FFFE 0062;
+7FFFE 0062;
+CFFFE 0062;
+E0025 0062;
+E002F 0062;
+E0039 0062;
+E0043 0062;
+E004D 0062;
+E0057 0062;
+E0061 0062;
+E006B 0062;
+E0075 0062;
+E007F 0062;
+E0109 0062;
+E0113 0062;
+E011D 0062;
+E0127 0062;
+E0131 0062;
+E013B 0062;
+E0145 0062;
+E014F 0062;
+E0159 0062;
+E0163 0062;
+E016D 0062;
+E0177 0062;
+E0181 0062;
+E018B 0062;
+E0195 0062;
+E019F 0062;
+E01A9 0062;
+E01B3 0062;
+E01BD 0062;
+E01C7 0062;
+E01D1 0062;
+E01DB 0062;
+E01E5 0062;
+E01EF 0062;
+1E02 0334;
+0042 0331 0334;
+0340 0062;
+0307 0062;
+0310 0062;
+031C 0062;
+0326 0062;
+0333 0062;
+033E 0062;
+034D 0062;
+0358 0062;
+0361 0062;
+1DC7 0062;
+1DFE 0062;
+05B0 0062;
+05B9 0062;
+FE70 0062;
+FCF2 0062;
+FCF4 0062;
+0654 0062;
+065E 0062;
+0737 0062;
+0741 0062;
+07EB 0062;
+0901 0062;
+0983 0062;
+0A83 0062;
+0C82 0062;
+1B03 0062;
+10A0F 0062;
+0E4C 0062;
+0F7F 0062;
+17C6 0062;
+17D0 0062;
+302D 0062;
+20D3 0062;
+20DD 0062;
+20E7 0062;
+101FD 0062;
+1D587 0021;
+1D401 0021;
+1D63D 0021;
+1E06 0021;
+1D587 003F;
+1D401 003F;
+1D63D 003F;
+1E06 003F;
+1D51F 0061;
+1D483 0041;
+1D68B 0041;
+1D469 0061;
+212C 0041;
+1D609 0041;
+1E03 0041;
+1E06 0041;
+1D483 0062;
+1D68B 0062;
+1D539 0062;
+1E03 0062;
+33C3 0062;
+0180 0061;
+1D2F 0062;
+1D6C 0062;
+0253 0061;
+0183 0061;
+0043 0334 0301;
+0063 030C 0334;
+0043 0334 0307;
+0063 0341 0327 0334;
+FF43 0021;
+1D588 0021;
+2102 0021;
+1D60A 0021;
+010C 0021;
+0368 003F;
+1D5BC 003F;
+212D 003F;
+1D63E 003F;
+010B 003F;
+2105 0041;
+33C6 0041;
+1D41C 0061;
+1D624 0061;
+1D588 0041;
+FF23 0061;
+1D4D2 0061;
+1D436 0041;
+24B8 0061;
+0108 0061;
+00E7 0061;
+3388 0021;
+1D450 0062;
+1D658 0062;
+1D46A 0062;
+1D9C 0062;
+1DD7 0062;
+33C5 003F;
+33A0 0062;
+33C7 003F;
+023B 0021;
+0187 0021;
+1D9D 0021;
+2183 0021;
+A73E 0021;
+0064 0334 030C;
+1E0A 0334;
+0044 0323 0334;
+0064 0334 0331;
+FF44 0021;
+1D555 0021;
+216E 0021;
+1D5A3 0021;
+1E0B 0021;
+0111 0021;
+FF44 003F;
+1D555 003F;
+216E 003F;
+1D5A3 003F;
+1E0B 003F;
+0111 003F;
+0064 0041;
+1D485 0061;
+1D68D 0061;
+1D5BD 0041;
+FF24 0041;
+1D53B 0061;
+1D46B 0041;
+1D673 0041;
+010E 0041;
+1E0D 0041;
+1E0E 0041;
+00D0 0041;
+3372 003F;
+1D451 0062;
+1D659 0062;
+1D49F 0062;
+24B9 0062;
+1E0C 0062;
+1D9E 0062;
+33C8 0061;
+3377 003F;
+3379 0062;
+01C4 0021;
+01F3 0041;
+01C4 0061;
+02A5 003F;
+1D05 003F;
+1D6D 003F;
+0189 0021;
+018A 0021;
+1D91 003F;
+018B 0061;
+A771 003F;
+0065 0334 0301;
+0065 0340 0334;
+0114 0334;
+00EA 0334 0301;
+00CA 0300 0334;
+00CA 0303 0334;
+0065 0334 030C;
+00CB 0334;
+0045 0307 0334;
+0065 0334 0327 0306;
+0045 0328 0334;
+0065 0304 0341 0334;
+1E15 0334;
+1EBA 0334;
+0045 0311 0334;
+00EA 0334 0323;
+0045 032D 0334;
+0364 0334;
+1D522 0021;
+FF25 0021;
+1D5D8 0021;
+00E8 0021;
+1EC5 0021;
+0117 0021;
+1E17 0021;
+1EB9 0021;
+0364 003F;
+1D5BE 003F;
+1D438 003F;
+1D674 003F;
+0114 003F;
+1EC2 003F;
+0228 003F;
+1E14 003F;
+1EC6 003F;
+0364 0041;
+1D5BE 0061;
+1D4EE 0041;
+24D4 0041;
+1D508 0061;
+1D438 0041;
+1D674 0041;
+00E9 0041;
+0114 0041;
+1EC1 0041;
+1EC2 0041;
+1EBD 0041;
+0228 0041;
+0113 0041;
+1E14 0041;
+0207 0041;
+1EC6 0041;
+FF45 0062;
+1D58A 0062;
+1D404 0062;
+1D640 0062;
+0115 0062;
+1EC3 0062;
+0229 0062;
+1E15 0062;
+1EC7 0062;
+32CD 0062;
+1D07 0062;
+0246 0062;
+2C78 0062;
+018E 0041;
+2C7B 0062;
+0259 0041;
+2094 0062;
+025B 003F;
+1D4B 0061;
+1D93 0062;
+025A 0062;
+1D9F 0062;
+1D08 0061;
+025D 0062;
+029A 0062;
+0046 0334 0307;
+1D557 0021;
+2131 0021;
+1D60D 0021;
+FF46 003F;
+1D5F3 003F;
+1D46D 003F;
+24BB 003F;
+1D41F 0061;
+1D627 0061;
+1D58B 0041;
+FF26 0061;
+1D5A5 0061;
+1D509 0041;
+1DA0 0061;
+213B 0021;
+1D4BB 0062;
+24D5 0062;
+1D571 0062;
+A77C 0062;
+FB03 0041;
+FB01 0041;
+3399 0041;
+A730 0041;
+1D82 0041;
+0192 0062;
+214E 0062;
+01F5 0334;
+011E 0334;
+0047 030C 0334;
+0067 0334 0327;
+1E20 0334;
+1D524 0021;
+FF27 0021;
+1D5DA 0021;
+011E 0021;
+1E20 0021;
+1D4F0 003F;
+0047 003F;
+1D5A6 003F;
+011F 003F;
+1E21 003F;
+210A 0061;
+1D628 0061;
+1D58C 0041;
+FF27 0061;
+1D5A6 0061;
+1D50A 0041;
+1D4D 0061;
+011E 0061;
+0121 0061;
+1E20 0061;
+33FF 0062;
+1D558 0062;
+1D406 0062;
+1D60E 0062;
+011D 0062;
+1D79 0062;
+3393 0041;
+33C9 0041;
+0261 0062;
+1DDB 0041;
+01E4 0041;
+0260 003F;
+029B 0061;
+A77F 003F;
+02E0 0021;
+0263 0062;
+01A2 0041;
+0068 0334 030C;
+1E26 0334;
+0048 0327 0334;
+0068 0334 032E;
+0068 0021;
+1D58D 0021;
+210C 0021;
+1D643 0021;
+1E26 0021;
+0127 0021;
+1D4F1 003F;
+0048 003F;
+1D5A7 003F;
+021F 003F;
+1E2B 003F;
+036A 0061;
+1D5C1 0061;
+1D525 0041;
+0048 0061;
+1D4D7 0061;
+1D407 0041;
+24BD 0061;
+021F 0061;
+1E22 0061;
+1E2B 0061;
+0126 0061;
+210E 0062;
+1D629 0062;
+1D43B 0062;
+02B0 0062;
+1E29 0062;
+32CC 0021;
+3371 003F;
+029C 0021;
+0195 0041;
+0266 0041;
+2C68 0041;
+2C76 0041;
+A727 0041;
+02BB 0021;
+0069 0301 0334;
+0069 0340 0334;
+0049 0334 0306;
+01D0 0334;
+0069 0308 0334 0301;
+0129 0334;
+0049 0328 0334;
+0069 0334 0309;
+0208 0334;
+0049 0323 0334;
+0365 0334;
+1D4BE 0021;
+24D8 0021;
+1D540 0021;
+1D35 0021;
+01CF 0021;
+012B 0021;
+1E2D 0021;
+1D48A 003F;
+1D692 003F;
+1D4D8 003F;
+1D62 003F;
+01D0 003F;
+012E 003F;
+1ECA 003F;
+2170 0041;
+1D58E 0061;
+1D48A 0041;
+1D692 0041;
+2111 0061;
+1D644 0061;
+1D5A8 0041;
+1D62 0041;
+00CC 0041;
+01D0 0041;
+1E2E 0041;
+012E 0041;
+0209 0041;
+1ECA 0041;
+2148 0062;
+1D5F6 0062;
+1D408 0062;
+1D678 0062;
+012C 0062;
+0128 0062;
+020B 0062;
+2171 0061;
+2172 0061;
+0133 0061;
+33CC 0062;
+2173 0061;
+2178 0061;
+0131 0061;
+026A 0061;
+A7FE 0062;
+1D4E 0062;
+0197 0041;
+1D7B 0061;
+1D96 0062;
+0196 0041;
+1D7C 0062;
+006A 0021;
+1D58F 0021;
+1D43D 0021;
+1D645 0021;
+FF4A 003F;
+1D5C3 003F;
+1D471 003F;
+1D679 003F;
+FF4A 0061;
+1D58F 0061;
+1D4BF 0041;
+24D9 0061;
+1D4D9 0061;
+1D43D 0041;
+1D645 0041;
+0135 0061;
+1D457 0062;
+1D65F 0062;
+1D50D 0062;
+2C7C 0062;
+0237 0041;
+0249 0021;
+029D 0021;
+025F 0021;
+0284 0021;
+004B 0334 0341;
+006B 0327 0334;
+004B 0323 0334;
+212A 0334 0331;
+1D528 0021;
+212A 0021;
+1D5AA 0021;
+01E9 0021;
+1DDC 003F;
+1D5F8 003F;
+1D472 003F;
+1D67A 003F;
+1E33 003F;
+1D424 0061;
+1D62C 0061;
+1D590 0041;
+004B 0041;
+1D542 0061;
+1D4A6 0041;
+24C0 0061;
+01E9 0061;
+1E32 0061;
+3384 0062;
+1D55C 0062;
+FF2B 0062;
+1D5DE 0062;
+01E8 0062;
+3385 0041;
+338F 0041;
+33CD 0041;
+33CE 003F;
+33A6 0062;
+33AA 0041;
+33B8 0041;
+33C0 0041;
+1D84 0041;
+0199 0062;
+2C6A 0062;
+A741 0062;
+A743 0062;
+A745 0062;
+013A 0334;
+013D 0334;
+004C 0323 0334;
+004C 0334 0323 0304;
+004C 0331 0334;
+1D459 0021;
+1D661 0021;
+1D4DB 0021;
+02E1 0021;
+1E39 0021;
+0140 0021;
+1D459 003F;
+1D661 003F;
+1D4DB 003F;
+02E1 003F;
+1E39 003F;
+0140 003F;
+004C 0001 00B7 0061;
+1DDD 0061;
+1D529 0061;
+1D459 0041;
+1D661 0041;
+2112 0061;
+1D613 0061;
+1D577 0041;
+1D38 0061;
+013C 0061;
+1E38 0061;
+0142 0061;
+004C 00B7 0061;
+2113 0062;
+1D5F9 0062;
+1D43F 0062;
+1D67B 0062;
+1E37 0062;
+006C 00B7 0062;
+01C8 003F;
+01C7 0062;
+1EFB 0062;
+33D1 0062;
+02AA 0062;
+33D3 0062;
+029F 003F;
+1DDE 0062;
+A747 0062;
+A748 003F;
+023D 003F;
+2C60 003F;
+2C62 003F;
+026C 0041;
+1D85 0062;
+026D 0062;
+A772 0041;
+A780 003F;
+019B 0041;
+1E3F 0334;
+1E40 0334;
+FF4D 0021;
+1D592 0021;
+2133 0021;
+1D614 0021;
+1E43 0021;
+1D4F6 003F;
+004D 003F;
+1D578 003F;
+1E3E 003F;
+33A8 0041;
+33A5 0021;
+217F 0061;
+1D592 0061;
+1D4F6 0041;
+24DC 0041;
+1D474 0061;
+2133 0041;
+1D614 0041;
+1E3F 0041;
+1E42 0041;
+1D426 0062;
+1D62E 0062;
+1D474 0062;
+24C2 0062;
+3386 0021;
+338E 003F;
+33D5 003F;
+339C 003F;
+33A3 0062;
+33AB 003F;
+33B9 0021;
+33BF 0021;
+33C1 003F;
+1D0D 0041;
+1D86 0021;
+1DAC 003F;
+A7FD 0021;
+A773 0021;
+004E 0334 0341;
+004E 0340 0334;
+004E 0303 0334;
+006E 0334 0327;
+1E46 0334;
+004E 0331 0334;
+1D4C3 0021;
+24DD 0021;
+1D579 0021;
+0143 0021;
+0145 0021;
+1D427 003F;
+1D62F 003F;
+1D4A9 003F;
+207F 003F;
+1E45 003F;
+006E 0061;
+1D4F7 0061;
+1D45B 0041;
+1D663 0041;
+1D441 0061;
+1D67D 0061;
+1D5E1 0041;
+0144 0061;
+0147 0061;
+0146 0061;
+1E4A 0061;
+3381 0062;
+1D55F 0062;
+2115 0062;
+1D615 0062;
+0148 0062;
+1E4B 0062;
+01CB 0021;
+01CA 0041;
+2116 003F;
+33B5 003F;
+0274 0021;
+1DB0 0061;
+1D0E 0021;
+0272 0021;
+1DAE 0061;
+019E 0041;
+0273 0021;
+0235 0021;
+014B 0021;
+1D51 0061;
+00D8 0334 0301;
+00D3 0334;
+006F 0334 0306;
+00D4 0334;
+006F 0302 0334 0300;
+1ED7 0334;
+004F 0302 0334 0309;
+006F 0334 0308;
+004F 0308 0334 0304;
+006F 0334 0303;
+00D5 0334 0301;
+1E4E 0334;
+006F 0334 0307;
+004F 0307 0334 0304;
+006F 0334 0328 0304;
+004F 0304 0334;
+1E52 0334;
+006F 0334 0309;
+020C 0334;
+004F 031B 0334;
+004F 0334 031B 0341;
+00F5 031B 0334;
+01A1 0309 0334;
+004F 0323 0334 031B;
+006F 0334 0323 0302;
+FF4F 0021;
+1D5C8 0021;
+1D476 0021;
+1D67E 0021;
+014F 0021;
+1ED5 0021;
+00F5 0021;
+0231 0021;
+014D 0021;
+020F 0021;
+1EDF 0021;
+0366 003F;
+1D5FC 003F;
+1D4AA 003F;
+24C4 003F;
+014E 003F;
+1ED4 003F;
+00D5 003F;
+0230 003F;
+014C 003F;
+020E 003F;
+1EDE 003F;
+FF4F 0041;
+1D594 0061;
+1D4F8 0041;
+24DE 0041;
+1D512 0061;
+1D476 0041;
+1D67E 0041;
+1D3C 0041;
+014F 0041;
+1ED0 0041;
+1ED5 0041;
+00D6 0041;
+00F5 0041;
+1E4E 0041;
+0231 0041;
+01FE 0041;
+014D 0041;
+1E50 0041;
+020F 0041;
+1EDA 0041;
+1EDF 0041;
+1ECC 0041;
+1D45C 0062;
+1D698 0062;
+1D546 0062;
+2092 0062;
+1ED1 0062;
+00F6 0062;
+1E4F 0062;
+01FF 0062;
+1E51 0062;
+1EDB 0062;
+1ECD 0062;
+0152 0061;
+A74E 0061;
+1D0F 003F;
+0276 003F;
+1D13 003F;
+0254 0061;
+1D10 003F;
+1D97 003F;
+A74C 0061;
+1D54 0061;
+1D55 0061;
+019F 0021;
+1DB1 0041;
+A74A 0061;
+0222 0021;
+1D3D 0041;
+0070 0334 0301;
+0050 0307 0334;
+1D52D 0021;
+FF30 0021;
+1D5E3 0021;
+1E56 0021;
+1D595 003F;
+1D40F 003F;
+1D64B 003F;
+33D8 003F;
+1D491 0061;
+1D699 0061;
+1D5FD 0041;
+2119 0061;
+1D617 0061;
+1D57B 0041;
+1D3E 0061;
+3380 0021;
+0070 0062;
+1D5C9 0062;
+1D443 0062;
+1D67F 0062;
+3376 0061;
+33D7 0061;
+33DA 0061;
+3250 0061;
+33BA 0061;
+1D7D 003F;
+A751 003F;
+1D71 0061;
+01A5 003F;
+A753 003F;
+A755 003F;
+A7FC 0061;
+1DB2 0041;
+1D42A 0021;
+1D632 0021;
+1D4AC 0021;
+0071 003F;
+1D5CA 003F;
+1D444 003F;
+1D680 003F;
+1D4FA 0061;
+1D45E 0041;
+1D666 0041;
+1D444 0061;
+1D680 0061;
+1D5E4 0041;
+1D492 0062;
+1D69A 0062;
+1D514 0062;
+0239 0061;
+A756 0041;
+A758 0041;
+024B 003F;
+0138 0061;
+0154 0334;
+0052 0307 0334;
+0072 0334 030F;
+0212 0334;
+1E5B 0334 0304;
+1E5E 0334;
+1D45F 0021;
+1D667 0021;
+1D479 0021;
+1D63 0021;
+0211 0021;
+A783 0021;
+1D4FB 003F;
+0052 003F;
+1D5B1 003F;
+0154 003F;
+0212 003F;
+0072 0041;
+1D4C7 0061;
+1D42B 0041;
+1D633 0041;
+211C 0061;
+1D64D 0061;
+1D5B1 0041;
+1D63 0041;
+0158 0041;
+0211 0041;
+1E5A 0041;
+A783 0041;
+33AF 0041;
+036C 0062;
+1D5CB 0062;
+211D 0062;
+1D681 0062;
+1E58 0062;
+1E5C 0062;
+1DE2 0334;
+1DE2 0041;
+A75B 003F;
+1DE3 0062;
+024C 003F;
+1D72 0041;
+0279 0062;
+027A 0041;
+02B5 003F;
+2C79 0041;
+2C64 003F;
+027E 0041;
+027F 0041;
+0281 0062;
+A776 0041;
+A75D 0062;
+0073 0301 0307 0334;
+015D 0334;
+0073 0334 030C 0307;
+1E61 0334;
+0073 0323 0334;
+0053 0307 0323 0334;
+017F 0307 0334;
+1D494 0021;
+1D69C 0021;
+1D54A 0021;
+015A 0021;
+1E60 0021;
+1DE5 0021;
+1D4C8 003F;
+24E2 003F;
+1D57E 003F;
+1E65 003F;
+015F 003F;
+A785 003F;
+1D460 0061;
+1D668 0061;
+1D5CC 0041;
+FF33 0041;
+1D5E6 0061;
+1D54A 0041;
+02E2 0041;
+015D 0041;
+1E66 0041;
+1E63 0041;
+0218 0041;
+1E9B 0041;
+1D564 0062;
+1D412 0062;
+1D61A 0062;
+015C 0062;
+1E62 0062;
+2120 0021;
+00DF 0021;
+FB06 0021;
+33DC 0021;
+1D74 0021;
+0282 0021;
+023F 0021;
+1E9D 0021;
+1DB4 003F;
+1D8B 0021;
+0285 0021;
+0286 0021;
+0164 0334;
+0074 0327 0334;
+0054 0334 0323;
+1E71 0334;
+0334 036D;
+1D531 0021;
+FF34 0021;
+1D5E7 0021;
+1E6B 0021;
+1E6F 0021;
+1D4C9 003F;
+24E3 003F;
+1D57F 003F;
+0164 003F;
+1E71 003F;
+036D 0061;
+1D5CD 0061;
+1D531 0041;
+0054 0061;
+1D54B 0061;
+1D4AF 0041;
+24C9 0061;
+1E97 0061;
+1E6D 0061;
+1E70 0061;
+0074 0062;
+1D599 0062;
+1D447 0062;
+1D64F 0062;
+0163 0062;
+A787 0062;
+2121 0041;
+3394 0041;
+02A6 003F;
+02A7 0041;
+A729 0062;
+0166 003F;
+023E 003F;
+1D75 0041;
+01AB 0062;
+01AD 0062;
+0288 0062;
+A777 0041;
+00FA 0334;
+0055 0334 0340;
+0075 0334 0302;
+01D3 0334;
+0055 0308 0334;
+0055 0344 0334;
+0075 0308 0334 030C;
+01D6 0334;
+0170 0334;
+0169 0334 0341;
+0172 0334;
+1E7B 0334;
+1EE6 0334;
+0055 0311 0334;
+0075 0334 0301 031B;
+0075 0334 0340 031B;
+0168 0334 031B;
+1EE6 0334 031B;
+0075 0334 0323;
+1E72 0334;
+0055 0330 0334;
+1D496 0021;
+1D69E 0021;
+1D54C 0021;
+1D41 0021;
+01D3 0021;
+01D9 0021;
+0172 0021;
+0216 0021;
+1EEC 0021;
+1E74 0021;
+1D566 003F;
+1D414 003F;
+1D61C 003F;
+00D9 003F;
+00DC 003F;
+0170 003F;
+1E7A 003F;
+1EE8 003F;
+1EE4 003F;
+FF55 0041;
+1D59A 0061;
+1D4FE 0041;
+24E4 0041;
+1D518 0061;
+1D47C 0041;
+1D684 0041;
+00FA 0041;
+016C 0041;
+016F 0041;
+01D7 0041;
+01D6 0041;
+0168 0041;
+016B 0041;
+1EE6 0041;
+01B0 0041;
+1EEA 0041;
+1EF1 0041;
+1E72 0041;
+FF55 0062;
+1D5CE 0062;
+1D47C 0062;
+1D684 0062;
+016C 0062;
+01D7 0062;
+0168 0062;
+1EE6 0062;
+1EEA 0062;
+1E72 0062;
+1D1C 0041;
+1D1D 0041;
+1D6B 0021;
+1DB6 003F;
+1D7E 0021;
+0265 0021;
+02AE 0021;
+026F 0021;
+1D5A 0061;
+0270 0021;
+028A 0021;
+1DB7 0061;
+0076 0303 0334;
+0056 0334 0323;
+1D497 0021;
+1D69F 0021;
+1D519 0021;
+1D65 0021;
+1D42F 003F;
+1D637 003F;
+1D4B1 003F;
+24CB 003F;
+33DE 0061;
+2174 0041;
+1D603 0061;
+1D567 0041;
+0056 0041;
+1D519 0061;
+1D47D 0041;
+1D685 0041;
+1E7D 0041;
+2174 0062;
+1D603 0062;
+1D47D 0062;
+1D685 0062;
+2165 0021;
+2166 0021;
+2167 0021;
+A760 0021;
+1D20 003F;
+A75E 0061;
+01B2 0021;
+1DB9 0041;
+2C74 003F;
+1EFC 0061;
+028C 0061;
+0077 0334 0341;
+1E81 0334;
+0174 0334;
+0077 0307 0334;
+0057 0334 0323;
+1D568 0021;
+1D416 0021;
+1D61E 0021;
+0175 0021;
+FF57 003F;
+1D604 003F;
+1D4B2 003F;
+24CC 003F;
+1E85 003F;
+1D430 0061;
+1D638 0061;
+1D59C 0041;
+FF37 0061;
+1D5B6 0061;
+1D51A 0041;
+02B7 0061;
+1E80 0061;
+1E84 0061;
+0077 0062;
+1D5D0 0062;
+1D47E 0062;
+1D686 0062;
+1E98 0062;
+33DD 0041;
+2C72 003F;
+028D 0041;
+1E8B 0334;
+1D431 0021;
+1D639 0021;
+1D4B3 0021;
+24CD 0021;
+2179 003F;
+1D605 003F;
+1D47F 003F;
+1D687 003F;
+FF58 0061;
+1D501 0061;
+1D465 0041;
+1D66D 0041;
+1D417 0061;
+1D61F 0061;
+1D583 0041;
+2093 0061;
+0078 0062;
+1D569 0062;
+2169 0062;
+1D5EB 0062;
+1E8A 0062;
+216A 0062;
+216B 0062;
+0059 0301 0334;
+0059 0340 0334;
+1E99 0334;
+0059 0303 0334;
+0079 0334 0304;
+1EF6 0334;
+1D466 0021;
+1D66E 0021;
+1D51C 0021;
+00FD 0021;
+1EF8 0021;
+FF59 003F;
+1D606 003F;
+1D4B4 003F;
+24CE 003F;
+0178 003F;
+1EF4 003F;
+1D536 0061;
+1D49A 0041;
+1D6A2 0041;
+1D4B4 0061;
+1D418 0041;
+1D620 0041;
+00DD 0041;
+1E99 0041;
+1E8F 0041;
+1EF6 0041;
+1D4CE 0062;
+24E8 0062;
+1D584 0062;
+1EF3 0062;
+1E8E 0062;
+028F 0041;
+024F 0062;
+01B4 0062;
+1EFF 0062;
+007A 0302 0334;
+005A 0334 030C;
+1E93 0334;
+1DE6 0334;
+1D56B 0021;
+2124 0021;
+1D621 0021;
+017D 0021;
+1D433 003F;
+1D63B 003F;
+1D481 003F;
+1DBB 003F;
+1E92 003F;
+1D467 0061;
+1D66F 0061;
+1D5D3 0041;
+FF3A 0041;
+1D5ED 0061;
+1D4E9 0041;
+1DBB 0041;
+017E 0041;
+1E92 0041;
+1D49B 0062;
+1D6A3 0062;
+1D4E9 0062;
+0179 0062;
+1E94 0062;
+1D22 0062;
+01B5 0062;
+1D8E 0062;
+0224 0062;
+1DBC 0062;
+1DBD 0062;
+2C6C 0061;
+A763 0061;
+01B7 0334 030C;
+01EF 003F;
+01EE 0061;
+1D23 0041;
+01B9 0062;
+01BA 0041;
+021C 003F;
+00DE 003F;
+A764 003F;
+A766 003F;
+01F7 003F;
+A768 003F;
+A76A 003F;
+A76C 003F;
+A76E 0021;
+A76E 0061;
+A778 0061;
+A72B 003F;
+A72D 003F;
+A72F 003F;
+01A8 003F;
+01BD 003F;
+0185 003F;
+0294 0061;
+0241 0041;
+02BC 0061;
+02EE 0061;
+A723 003F;
+A78C 003F;
+0295 003F;
+02BF 0061;
+1D24 0061;
+1D5C 0041;
+A724 0041;
+02A2 0061;
+01C0 0061;
+01C2 0061;
+0297 0061;
+02AC 0061;
+03B1 0343 0334;
+0391 0313 0301 0334;
+1F0C 0345 0334;
+03B1 0343 0300 0334 0345;
+03B1 0343 0334 0342;
+0391 0334 0313 0345 0342;
+0391 0345 0334 0313;
+1F01 0301 0334;
+0391 0345 0314 0341 0334;
+1F09 0300 0334;
+03B1 0314 0334 0342;
+03B1 0345 0334 0314 0342;
+0391 0314 0345 0334;
+0391 0334 0301;
+0391 0300 0334;
+1FB0 0334;
+1FB3 0334 0342;
+0391 0334 0345;
+1D6A8 0021;
+1F8C 0021;
+1F88 0021;
+1F8B 0021;
+1FBB 0021;
+1FB9 0021;
+1D6A8 003F;
+1F8C 003F;
+1F88 003F;
+1F8B 003F;
+1FBB 003F;
+1FB9 003F;
+1D6C2 0041;
+1D756 0061;
+1F08 0041;
+1F02 0041;
+1F0E 0041;
+1F01 0041;
+1F8D 0041;
+1F07 0041;
+1F89 0041;
+1FB4 0041;
+1FB8 0041;
+1FB3 0041;
+1D6A8 0062;
+1F8C 0062;
+1F88 0062;
+1F8B 0062;
+1FBB 0062;
+1FB9 0062;
+0392 0021;
+1D6C3 003F;
+1D791 003F;
+1D771 0061;
+1D6E3 0061;
+1D5D 0041;
+0392 0062;
+1D6C4 0021;
+1D758 0021;
+1D7AC 003F;
+03B3 0061;
+1D6FE 0041;
+1D758 0061;
+1D67 0061;
+213E 0062;
+1D26 0061;
+1D6AB 0021;
+1D773 003F;
+03B4 0041;
+1D7AD 0041;
+1D71F 0041;
+1D7AD 0062;
+03B5 0343 0334;
+0395 0334 0313 0301;
+1F18 0334 0300;
+1F11 0301 0334;
+0395 0314 0300 0334;
+0395 0334 0341;
+03B5 0021;
+1D7AE 0021;
+1F14 0021;
+03AD 0021;
+1D700 003F;
+1D6E6 003F;
+1F11 003F;
+1F72 003F;
+1D73A 0061;
+1D73A 0041;
+1D720 0061;
+1F18 0061;
+1F11 0061;
+1F1B 0061;
+1F72 0061;
+1D73A 0062;
+1D75A 0062;
+1F15 0062;
+03DD 0021;
+1D7CB 0061;
+0377 0021;
+03DB 0021;
+03B6 0021;
+1D75B 0021;
+1D6E7 003F;
+1D7AF 0061;
+1D721 0061;
+1D701 0062;
+0371 0021;
+03B7 0334 0313;
+03B7 0343 0301 0334;
+0397 0313 0301 0334 0345;
+1F28 0334 0340;
+03B7 0313 0334 0342;
+1F20 0345 0334 0342;
+0397 0334 0343 0345;
+03B7 0334 0314 0301;
+1F21 0345 0334 0341;
+0397 0314 0334 0300;
+1F29 0334 0300 0345;
+03B7 0345 0314 0334 0342;
+03B7 0334 0314 0345;
+0389 0334;
+03B7 0340 0334;
+03B7 0334 0342;
+0397 0334 0345;
+1D6AE 0021;
+1F9C 0021;
+1F98 0021;
+1F9B 0021;
+1FCB 0021;
+1D6C8 003F;
+1D796 003F;
+1F9A 003F;
+1F2D 003F;
+1F9F 003F;
+1FC2 003F;
+1D776 0061;
+1D6E8 0061;
+1F20 0041;
+1F9C 0041;
+1F26 0041;
+1F98 0041;
+1F95 0041;
+1F9B 0041;
+1F91 0041;
+1FCB 0041;
+1FC6 0041;
+1D73C 0062;
+1F28 0062;
+1F2E 0062;
+1F9D 0062;
+1F99 0062;
+1FC7 0062;
+1D751 0021;
+1D6F3 0021;
+1D6C9 003F;
+0398 003F;
+1D797 003F;
+1D717 0061;
+1D717 0041;
+03F4 0041;
+1D7A1 0061;
+1D7A1 0041;
+1D751 0062;
+1D6F3 0062;
+1FBE 0334 0313;
+0399 0313 0334 0341;
+0399 0334 0343 0340;
+03B9 0314 0334;
+1FBE 0334 0314 0341;
+0399 0334 0314 0340;
+1F3F 0334;
+1F76 0334;
+1FD0 0334;
+1FBE 0308 0334;
+03CA 0300 0334;
+1FD1 0334;
+1D778 0021;
+1F34 0021;
+1F33 0021;
+1FD0 0021;
+1FD9 0021;
+1D6B0 003F;
+1F3A 003F;
+1F3F 003F;
+03CA 003F;
+03B9 0041;
+1D704 0041;
+1D798 0061;
+1F34 0061;
+1F3E 0061;
+1F33 0061;
+03AF 0041;
+1FD0 0061;
+0390 0061;
+1FD9 0061;
+0399 0062;
+1F32 0062;
+1F37 0062;
+1FD6 0062;
+03F3 003F;
+1D73F 0021;
+1D75F 0021;
+1D779 003F;
+03BA 0061;
+1D779 0061;
+1D779 0041;
+1D799 0061;
+1D705 0062;
+1D6EB 0062;
+03CF 0061;
+039B 0021;
+1D77A 003F;
+1D6CC 0061;
+039B 0061;
+1D760 0041;
+1D6EC 0062;
+00B5 0021;
+1D761 0021;
+1D6B3 003F;
+1D707 0061;
+039C 0041;
+1D79B 0041;
+1D741 0062;
+338C 003F;
+3395 003F;
+33B2 003F;
+33BC 003F;
+039D 0021;
+1D77C 003F;
+1D6CE 0061;
+039D 0061;
+1D762 0041;
+1D6EE 0062;
+039E 0021;
+1D77D 003F;
+1D6CF 0061;
+039E 0061;
+1D763 0041;
+1D6EF 0062;
+039F 0334 0343;
+03BF 0343 0300 0334;
+1F41 0334;
+1F49 0301 0334;
+03BF 0301 0334;
+03BF 0340 0334;
+1D77E 0021;
+1F44 0021;
+03CC 0021;
+1D77E 003F;
+1F44 003F;
+03CC 003F;
+1D744 0061;
+1D6B6 0061;
+1F40 0061;
+1F4A 0061;
+1F43 0061;
+038C 0041;
+1D77E 0062;
+1F44 0062;
+03CC 0062;
+1D6E1 0021;
+213F 0021;
+1D6E1 003F;
+213F 003F;
+213C 0061;
+1D7C9 0061;
+1D7B9 0041;
+213F 0041;
+1D6E1 0062;
+213F 0062;
+1D28 0062;
+03FA 0062;
+03DE 0062;
+03D8 0062;
+1FEC 0334;
+1D78E 0021;
+1FE4 0021;
+1D754 003F;
+1D7A0 003F;
+1D6E0 0061;
+1D6E0 0041;
+03A1 0041;
+1D7A0 0041;
+03F1 0062;
+1D7C8 0062;
+1FEC 0062;
+03FC 0062;
+1D782 0021;
+03C2 0021;
+1D782 003F;
+03C2 003F;
+1D748 0061;
+1D748 0041;
+1D6F4 0061;
+03C2 0041;
+1D782 0062;
+03C2 0062;
+03FE 0062;
+03FD 0062;
+03FF 0062;
+1D72F 0021;
+1D6BB 003F;
+1D783 0061;
+1D6F5 0061;
+1D6D5 0062;
+1D7A3 0062;
+03C5 0313 0334 0300;
+03A5 0314 0334;
+1F59 0341 0334;
+03C5 0314 0342 0334;
+1F7B 0334;
+03C5 0334 0300;
+03A5 0306 0334;
+03A5 0334 0308;
+03C5 0334 0308 0340;
+03A5 0304 0334;
+03D2 0021;
+1F51 0021;
+038E 0021;
+03D4 0021;
+1D74A 003F;
+1F50 003F;
+1F57 003F;
+1FE8 003F;
+1FE9 003F;
+1D74A 0041;
+1D76A 0061;
+1F54 0041;
+1F55 0041;
+1F5F 0041;
+03D3 0041;
+1FE6 0041;
+1FE3 0041;
+1D6D6 0062;
+1D76A 0062;
+1F53 0062;
+1FEA 0062;
+1FE7 0062;
+1D753 0021;
+1D7A5 0021;
+1D753 003F;
+1D7A5 003F;
+1D719 0061;
+1D719 0041;
+1D6F7 0061;
+1D60 0041;
+1D753 0062;
+1D7A5 0062;
+1D6BE 0021;
+1D74C 003F;
+1D6A 003F;
+1D74C 0041;
+1D6BE 0041;
+1D6D8 0062;
+1D7A6 0062;
+1D6BF 0021;
+1D7C1 003F;
+1D713 0061;
+03A8 0041;
+1D7A7 0041;
+1D733 0062;
+03C9 0334 0343;
+03A9 0334 0343 0341;
+2126 0343 0334 0345 0301;
+03C9 0313 0345 0300 0334;
+1F60 0342 0334;
+03A9 0313 0342 0334 0345;
+2126 0345 0334 0313;
+1F61 0301 0334;
+1FA1 0301 0334;
+03A9 0334 0314 0340;
+2126 0314 0345 0334 0300;
+03C9 0314 0345 0342 0334;
+1F61 0345 0334;
+03A9 0334 0341;
+1F7C 0334;
+03C9 0342 0334;
+03A9 0345 0334;
+2126 0021;
+1FA4 0021;
+1FA0 0021;
+1FA3 0021;
+038F 0021;
+03C9 003F;
+1D734 003F;
+1F6A 003F;
+1F69 003F;
+1F6F 003F;
+1F7C 003F;
+1D714 0061;
+2126 0061;
+1D734 0041;
+1F6C 0041;
+1FA2 0041;
+1FAE 0041;
+1F65 0041;
+1F6B 0041;
+1FA7 0041;
+1F7D 0041;
+1FFA 0041;
+1FFC 0041;
+1D6FA 0062;
+1F62 0062;
+1F61 0062;
+1F67 0062;
+1FF4 0062;
+03E1 003F;
+0373 003F;
+03F8 003F;
+2C81 003F;
+2C83 003F;
+2C85 003F;
+2C87 003F;
+2C89 003F;
+2CB7 003F;
+2C8B 003F;
+2C8D 003F;
+2C8F 003F;
+2C91 003F;
+2C93 003F;
+2C95 003F;
+2CE4 0061;
+2CB8 0041;
+2C96 0041;
+2C98 0041;
+2C9A 0041;
+2CBA 0041;
+2CBC 0041;
+2C9C 0041;
+2C9E 0041;
+2CA0 0041;
+2CA2 0041;
+2CA4 0041;
+2CA6 0041;
+2CA8 0041;
+2CAA 0041;
+2CAC 0041;
+2CAE 0041;
+2CB0 0041;
+2CBE 0041;
+2CC0 0041;
+03E2 0041;
+2CC2 0041;
+2CC4 0041;
+2CC6 0041;
+03E4 0041;
+03E6 0041;
+2CC8 0041;
+03E8 0041;
+2CCA 0041;
+2CCC 0041;
+2CCE 0041;
+2CD0 0041;
+2CD2 0041;
+2CD4 0041;
+03EA 0041;
+2CD6 0041;
+03EC 0041;
+2CD8 0041;
+2CDA 0041;
+2CDC 0041;
+03EE 0041;
+2CB2 0041;
+2CB4 0041;
+2CDE 0041;
+2CE0 0041;
+2CE2 0041;
+0430 0061;
+0430 0062;
+04D1 0021;
+04D1 0061;
+04D1 0062;
+04D3 0021;
+04D3 0061;
+04D3 0062;
+04D8 0041;
+04DA 0334;
+04D9 0591 0308 0061;
+04DA 0041;
+04D5 0041;
+2DE0 003F;
+0411 0062;
+2DE1 0061;
+0413 0021;
+2DE2 0061;
+0490 0061;
+0492 003F;
+04FA 003F;
+0494 003F;
+04F6 003F;
+0414 0021;
+0434 0062;
+0500 0041;
+A680 0041;
+0402 0041;
+A662 0041;
+0502 0041;
+0413 0334 0341;
+0403 003F;
+0433 0301 0041;
+0403 0041;
+0498 0021;
+0435 0334 0300;
+0401 0334;
+0401 0021;
+2DF7 0061;
+0451 0061;
+0401 0062;
+04D6 0021;
+04D7 0041;
+04D6 0062;
+0404 0062;
+0416 0021;
+2DE4 0061;
+0436 0062;
+A685 0041;
+04DC 0334;
+0436 0591 0308 0061;
+04DC 0041;
+0497 0041;
+2DE5 003F;
+0437 0062;
+A640 0041;
+0504 0041;
+0510 0041;
+04DF 0021;
+04DF 0061;
+04DF 0062;
+A642 0041;
+0405 0041;
+A644 0041;
+04E0 0041;
+A688 0041;
+0506 0041;
+A682 0041;
+0418 0340 0334;
+040D 0021;
+0438 0041;
+0418 0001 0308 0061;
+04E2 0062;
+048A 0062;
+04E4 0021;
+04E5 0041;
+04E4 0062;
+0406 0001 0308 0061;
+A646 0041;
+0457 0021;
+0457 0061;
+0457 0062;
+0439 0021;
+0439 0061;
+0439 0062;
+0408 0041;
+A649 0061;
+043A 0021;
+041A 0061;
+049A 0021;
+04C3 0021;
+04A0 0021;
+049E 0021;
+049C 0021;
+051E 0021;
+051A 0021;
+043B 0021;
+041B 0061;
+04C6 0021;
+0513 0021;
+0521 0021;
+0459 0021;
+A665 0021;
+0509 0021;
+0515 0021;
+2DE8 0334;
+2DE8 0041;
+04CE 0061;
+A667 0061;
+1D78 0021;
+041D 0041;
+04C9 003F;
+04A2 003F;
+04C7 003F;
+0522 003F;
+04A4 003F;
+040A 003F;
+050A 003F;
+A669 0021;
+A669 003F;
+2DEA 0061;
+041E 0061;
+043E 0062;
+043E 0308 0334;
+043E 0308 003F;
+041E 0308 0061;
+04E9 0021;
+04E9 0062;
+04E8 0308 0021;
+04E9 0308 0041;
+04E8 0308 0062;
+043F 0041;
+04A7 003F;
+0481 003F;
+2DEC 0021;
+0420 0041;
+048E 0061;
+0516 0061;
+0421 003F;
+2DF5 0334;
+050D 0061;
+04AB 0061;
+0442 003F;
+2DEE 0062;
+A68D 0062;
+050F 0062;
+04AD 0062;
+A68B 0062;
+045B 0062;
+043A 0301 0021;
+041A 0301 003F;
+043A 0341 0041;
+041A 0301 0041;
+04EF 0334;
+04EF 003F;
+0443 0001 030B 0061;
+0443 0306 0334;
+0443 0306 003F;
+040E 0061;
+0443 0308 0334;
+0443 0308 003F;
+0423 0308 0061;
+0443 030B 0334;
+0443 030B 003F;
+0423 030B 0061;
+04AF 0021;
+04B1 0021;
+2DF9 0334;
+2DF9 0041;
+0479 0061;
+0444 0061;
+0445 003F;
+2DEF 0062;
+04FD 0062;
+04FF 0062;
+04B3 0062;
+04BB 0062;
+A695 0062;
+0461 0062;
+047F 0062;
+A64D 0062;
+047D 0062;
+047B 0062;
+0446 0041;
+A68F 003F;
+04B5 003F;
+A691 003F;
+2DF1 0021;
+0427 0041;
+A693 0061;
+0427 0334 0308;
+0447 0308 0061;
+0427 0308 0041;
+04B7 0061;
+04CC 0061;
+04B9 0061;
+A687 0061;
+04BD 0061;
+04BF 0061;
+045F 0061;
+0448 003F;
+2DF2 0062;
+A697 0062;
+0449 0041;
+A64F 003F;
+2E2F 0061;
+044A 003F;
+A651 003F;
+044B 003F;
+044B 0308 0334;
+044B 0308 003F;
+042B 0308 0061;
+044C 0021;
+048D 0021;
+2DFA 0334;
+2DFA 0041;
+A653 0061;
+044D 0061;
+04ED 0334;
+042D 0308 003F;
+042D 1D165 0308 0061;
+2DFB 0021;
+042E 0041;
+A654 0061;
+A656 003F;
+044F 0021;
+0519 0021;
+0465 0021;
+2DFD 0334;
+2DFD 0041;
+A659 0061;
+046B 003F;
+2DFE 0062;
+A65B 0062;
+0469 0062;
+A65D 0062;
+046D 0041;
+046F 003F;
+0471 003F;
+2DF4 0021;
+0472 0041;
+0474 0061;
+0474 0334 030F;
+0475 030F 0061;
+0474 030F 0041;
+A65F 0061;
+04A9 0061;
+051D 0061;
+04CF 0061;
+2C30 0061;
+2C31 0061;
+2C32 0061;
+2C33 0061;
+2C34 0061;
+2C35 0061;
+2C36 0061;
+2C37 0061;
+2C38 0061;
+2C39 0061;
+2C3A 0061;
+2C3B 0061;
+2C3C 0061;
+2C3D 0061;
+2C3E 0061;
+2C3F 0061;
+2C40 0061;
+2C41 0061;
+2C42 0061;
+2C43 0061;
+2C44 0061;
+2C45 0061;
+2C46 0061;
+2C47 0061;
+2C48 0061;
+2C49 0061;
+2C4A 0061;
+2C4B 0061;
+2C4C 0061;
+2C4D 0061;
+2C4E 0061;
+2C4F 0061;
+2C50 0061;
+2C51 0061;
+2C52 0061;
+2C53 0061;
+2C54 0061;
+2C55 0061;
+2C56 0061;
+2C57 0061;
+2C58 0061;
+2C59 0061;
+2C5A 0061;
+2C5B 0061;
+2C5C 0061;
+2C5D 0061;
+2C5E 0061;
+10D0 0062;
+10A0 0062;
+2D01 0061;
+10D2 0062;
+10A2 0062;
+2D03 0061;
+10D4 0062;
+10A4 0062;
+2D05 0061;
+10D6 0062;
+10A6 0062;
+2D21 0061;
+10D7 0062;
+10A7 0062;
+2D08 0061;
+10D9 0062;
+10A9 0062;
+2D0A 0061;
+10DB 0062;
+10AB 0062;
+10FC 0062;
+10AC 0062;
+2D22 0061;
+10DD 0062;
+10AD 0062;
+2D0E 0061;
+10DF 0062;
+10AF 0062;
+2D10 0061;
+10E1 0062;
+10B1 0062;
+2D12 0061;
+10F3 0062;
+10C3 0062;
+2D13 0061;
+10E4 0062;
+10B4 0062;
+2D15 0061;
+10E6 0062;
+10B6 0062;
+2D17 0061;
+10E8 0062;
+10B8 0062;
+2D19 0061;
+10EA 0062;
+10BA 0062;
+2D1B 0061;
+10EC 0062;
+10BC 0062;
+2D1D 0061;
+10EE 0062;
+10BE 0062;
+2D24 0061;
+10EF 0062;
+10BF 0062;
+2D20 0061;
+10F5 0062;
+10C5 0062;
+10F7 0062;
+10F9 0062;
+0561 0061;
+0562 0061;
+0563 0061;
+0564 0061;
+0565 0061;
+0587 0062;
+0536 0062;
+0537 0062;
+0538 0062;
+0539 0062;
+053A 0062;
+053B 0062;
+053C 0062;
+053D 0062;
+053E 0062;
+053F 0062;
+0540 0062;
+0541 0062;
+0542 0062;
+0543 0062;
+0544 0062;
+FB15 0062;
+FB13 0062;
+0545 0062;
+0546 0062;
+0547 0062;
+0548 0062;
+0549 0062;
+054A 0062;
+054B 0062;
+054C 0062;
+054D 0062;
+054E 0062;
+057F 0061;
+0580 0061;
+0581 0061;
+0582 0061;
+0583 0061;
+0584 0061;
+0585 0061;
+0586 0061;
+0559 0062;
+05D0 0021;
+FB2F 003F;
+FB2F 0061;
+FB4F 0021;
+FB4C 0334;
+05D1 0041;
+FB4C 0062;
+05D2 0061;
+05D3 05BC 0334;
+05D3 0061;
+FB22 0062;
+FB34 003F;
+05D5 0334 05B9;
+FB4B 003F;
+FB35 0062;
+05F1 0062;
+FB36 0061;
+05D8 05BC 0334;
+05D8 0062;
+FB39 0021;
+05D9 0062;
+05F2 0061;
+05DA 05BC 0334;
+FB4D 0021;
+FB24 0041;
+FB24 0062;
+FB3C 0021;
+05DC 0062;
+05DE 003F;
+FB3E 0061;
+05DF 0021;
+FB40 0041;
+FB41 003F;
+FB20 003F;
+05E3 0334 05BC;
+FB4E 0021;
+FB44 0061;
+FB4E 0062;
+05E6 0061;
+05E7 05BC 0334;
+05E7 0062;
+FB48 003F;
+05E9 0334 05C2;
+05E9 05BC 0334 05C2;
+FB49 0021;
+05E9 0041;
+FB2C 0041;
+05EA 0021;
+FB4A 0061;
+10901 0021;
+10903 0021;
+10905 0021;
+10907 0021;
+10909 0021;
+1090B 0021;
+1090D 0021;
+1090F 0021;
+10911 0021;
+10913 0021;
+10915 0021;
+0674 003F;
+06FD 0041;
+FE82 0021;
+0622 0041;
+0623 0334;
+FE83 003F;
+FE83 0041;
+0671 0021;
+FB50 0061;
+FE86 0021;
+0624 0041;
+0625 0334;
+FE87 003F;
+0625 0062;
+0773 003F;
+064A 0334 0654;
+FE8B 003F;
+FE8B 0061;
+FE8B 0062;
+FBEA 0061;
+FC00 0061;
+FC01 0061;
+FC64 003F;
+FCDF 0021;
+FCDF 0041;
+FC67 003F;
+FCE0 0061;
+FBEC 0061;
+FBEE 0061;
+FBF2 0061;
+FBF0 0061;
+FBF4 0061;
+FBFA 003F;
+FBF9 0061;
+FC04 0021;
+FBF7 0021;
+FBF6 0041;
+FE8E 003F;
+FD3C 0061;
+FE8D 0062;
+FDF3 0061;
+066E 0061;
+FE92 003F;
+FE90 0041;
+FC9C 003F;
+FC9D 003F;
+FDC2 0061;
+FC07 0041;
+FC6A 0061;
+FC6C 0021;
+FC6C 0061;
+FC6D 0061;
+FCE2 0041;
+FC09 0041;
+FC0A 0041;
+FB55 003F;
+FB53 0041;
+FB59 0021;
+FB58 0061;
+FB59 0062;
+FB5D 003F;
+FB5B 0041;
+0750 0061;
+0752 0061;
+0754 0061;
+0756 0061;
+0629 0041;
+FE98 0021;
+FE97 0061;
+FE98 0062;
+FC0B 0041;
+FDA0 0061;
+FCA2 003F;
+FD52 003F;
+FD53 0061;
+FC0D 0041;
+FDA2 0061;
+FC70 0061;
+FC72 0021;
+FC72 0061;
+FD55 0061;
+FD57 0061;
+FDA3 0061;
+FCA5 003F;
+FC74 003F;
+FC75 003F;
+FE9C 0021;
+FE9B 0061;
+FE9C 0062;
+FC76 0061;
+FC78 0021;
+FC78 0061;
+FC79 0061;
+FC7A 003F;
+FC7B 003F;
+FB69 0021;
+FB68 0061;
+FB69 0062;
+FB61 003F;
+FB5F 0041;
+067C 0061;
+FB65 0021;
+FB64 0061;
+FB65 0062;
+FEA0 003F;
+FE9E 0041;
+FCA7 003F;
+FDA6 0061;
+FDFB 0061;
+FC16 0041;
+FD58 0041;
+FDA5 0061;
+FD01 0041;
+FD02 0041;
+FB79 003F;
+FB77 0041;
+FB75 0021;
+FB74 0061;
+FB75 0062;
+FB7D 003F;
+FB7B 0041;
+06BF 0061;
+FB81 003F;
+FB7F 0041;
+FEA4 0021;
+FEA3 0061;
+FEA4 0062;
+FC17 0041;
+FCAA 003F;
+FD5B 0061;
+FD1B 003F;
+FD1C 003F;
+FEA8 0021;
+FEA7 0061;
+FEA8 0062;
+FC19 0041;
+FCAC 003F;
+FD1F 003F;
+FD20 003F;
+0681 0061;
+0685 0061;
+0758 0061;
+076F 0061;
+077C 0061;
+062F 0041;
+FEAB 0021;
+FEAB 0061;
+FB88 0021;
+0688 0062;
+068A 0061;
+FB84 0021;
+068C 0062;
+068D 0041;
+FB86 0021;
+068E 0062;
+0690 0061;
+0759 0061;
+FEAD 0021;
+FEAD 0061;
+FDF6 0061;
+FEAF 0021;
+0632 0062;
+0691 0041;
+0692 0061;
+0694 0061;
+0696 0061;
+FB8A 0021;
+0698 0062;
+06EF 0061;
+076B 0061;
+0771 0061;
+FEB4 003F;
+FEB2 0041;
+FC1C 0021;
+FCAD 0062;
+FD5E 0061;
+FCAE 0041;
+FD5C 0061;
+FCAF 0041;
+FDA8 0061;
+FD2A 003F;
+FC1F 0021;
+FCB0 0062;
+FD60 003F;
+FD63 003F;
+FD31 003F;
+FD17 003F;
+FD18 003F;
+FEB8 0021;
+FEB7 0061;
+FEB8 0062;
+FD09 003F;
+FD37 0062;
+FD26 0021;
+FD26 0061;
+FD68 003F;
+FDAA 0061;
+FD0B 003F;
+FD39 0062;
+FD0D 0041;
+FD0C 003F;
+FCE9 0062;
+FD6A 0041;
+FD6C 0041;
+FCEA 0041;
+FCFD 0041;
+FCFE 0041;
+069B 0061;
+06FA 0061;
+076D 0061;
+077D 0061;
+FEBC 0021;
+FEBB 0061;
+FEBC 0062;
+FC20 0041;
+FD64 0041;
+FCB2 0061;
+FD0F 0041;
+FDFA 0061;
+FDF0 0061;
+FC21 0041;
+FD66 0041;
+FD05 0041;
+FD06 0041;
+FEC0 003F;
+FEBE 0041;
+FCB4 003F;
+FCB5 003F;
+FD6E 0061;
+FCB6 003F;
+FD70 003F;
+FD2C 003F;
+FCB7 003F;
+FD23 003F;
+FD24 003F;
+069D 0061;
+06FB 0061;
+FEC4 003F;
+FEC2 0041;
+FCB8 003F;
+FC27 0021;
+FD33 0062;
+FD71 0041;
+FD74 0061;
+FCF5 0041;
+FCF6 0041;
+FEC8 003F;
+FEC6 0041;
+FC28 0021;
+FCB9 0062;
+FECC 0021;
+FECB 0061;
+FECC 0062;
+FC29 0041;
+FD75 0041;
+FCBB 003F;
+FD77 003F;
+FD78 0061;
+FD13 003F;
+FD14 003F;
+FED0 0021;
+FECF 0061;
+FED0 0062;
+FC2B 0041;
+FC2C 0041;
+FD7B 0061;
+FD15 003F;
+FD16 003F;
+06A0 0061;
+075D 0061;
+075F 0061;
+FED4 003F;
+FED2 0041;
+FCBE 003F;
+FCBF 003F;
+FCC0 003F;
+FD7D 003F;
+FCC1 003F;
+FDC1 0061;
+FC31 0041;
+FC32 0041;
+06A2 0061;
+FB6D 0021;
+FB6C 0061;
+FB6D 0062;
+FB71 0021;
+FB70 0061;
+FB71 0062;
+0761 0061;
+FED8 0021;
+FED7 0061;
+FED8 0062;
+FC33 0041;
+FCC3 003F;
+FDB4 003F;
+FD7F 0061;
+FC7E 003F;
+FC7F 003F;
+06A7 0061;
+FEDC 0021;
+FEDB 0061;
+FEDC 0062;
+FC37 0041;
+FC38 0041;
+FC39 0041;
+FC3A 0041;
+FC3B 003F;
+FCEB 0062;
+FC3C 003F;
+FCEC 0062;
+FDBB 0041;
+FC83 003F;
+FC84 003F;
+FB91 0021;
+FB90 0061;
+FB91 0062;
+06AB 0061;
+077F 0061;
+FBD6 003F;
+FBD4 0041;
+06AE 0061;
+FB95 003F;
+FB93 0041;
+06B0 0061;
+FB9D 003F;
+FB9B 0041;
+06B2 0061;
+FB99 003F;
+FB97 0041;
+06B4 0061;
+063B 0061;
+0763 0061;
+FEE0 0021;
+FEDF 0061;
+FEE0 0062;
+FEF5 0041;
+FEF7 0041;
+FEF9 0041;
+FEFB 0041;
+FC3F 0041;
+FD84 0041;
+FDBC 0041;
+FCCA 003F;
+FDB5 003F;
+FD82 0061;
+FCCB 003F;
+FD86 003F;
+FC85 0021;
+FC85 0061;
+FD88 003F;
+FDAD 0061;
+FC86 003F;
+FC87 003F;
+06B5 0061;
+06B7 0061;
+076A 0061;
+FEE3 003F;
+FEE4 0041;
+FEE2 0062;
+FCCE 003F;
+FD8C 0061;
+FD8D 0061;
+FCCF 003F;
+FD89 0061;
+FDF4 0061;
+FCD0 003F;
+FD8E 0061;
+FDB9 0061;
+FCD1 0041;
+FDB1 0061;
+FC4A 0061;
+0766 0061;
+FEE8 003F;
+FEE6 0041;
+FCD2 003F;
+FDB8 003F;
+FD98 003F;
+FD99 0061;
+FCD3 003F;
+FD95 0061;
+FDB3 0061;
+FC4D 0041;
+FC8B 0061;
+FC4E 003F;
+FCEE 0062;
+FD9A 0061;
+FCD6 003F;
+FC8E 003F;
+FC8F 003F;
+FB9E 0021;
+06BA 0062;
+FBA3 003F;
+FBA1 0041;
+06BC 0061;
+06B9 0061;
+0768 0061;
+FEEC 0021;
+0647 0061;
+FCD9 0061;
+FCD7 003F;
+FCD8 003F;
+FD93 0061;
+FC53 0061;
+FBAD 0021;
+FBAC 0061;
+FBAD 0062;
+FBA6 0021;
+FBA8 0061;
+06C1 0062;
+06C3 0062;
+06C0 0021;
+06C0 0041;
+06E5 0021;
+06E5 0041;
+0676 0021;
+06C4 0021;
+FBE0 003F;
+06C6 0021;
+FBD9 0061;
+FBD7 003F;
+0677 0021;
+06C8 0021;
+FBDB 0061;
+FBE2 003F;
+06CA 0021;
+FBDE 003F;
+06CF 0021;
+0779 0021;
+FC90 0021;
+0649 0041;
+FC90 0041;
+064A 0021;
+FEF2 003F;
+FEF2 0061;
+FEF1 0062;
+FCDA 0061;
+FDAF 0062;
+FC56 0062;
+FCDC 0061;
+FC91 0062;
+FCDD 003F;
+FC58 0061;
+FD9D 0061;
+FDB0 0062;
+FCDE 0061;
+FC95 0061;
+FC96 0061;
+FBFC 0021;
+FBFF 0061;
+FBFC 0062;
+06CE 0062;
+FBE4 003F;
+FBE4 0041;
+06D1 0062;
+063E 0062;
+0775 0062;
+0777 0062;
+06D2 003F;
+FBAE 0061;
+FBAE 0062;
+077B 003F;
+072D 0021;
+0714 0021;
+072E 0041;
+072F 0021;
+0717 003F;
+0719 003F;
+071A 003F;
+071C 0061;
+071E 003F;
+074E 003F;
+0721 003F;
+0724 0021;
+0725 003F;
+0727 0061;
+0728 003F;
+072A 003F;
+072C 003F;
+0799 003F;
+0781 003F;
+0783 003F;
+0784 003F;
+0786 003F;
+07A2 003F;
+0788 003F;
+0789 003F;
+078B 003F;
+078C 003F;
+07A0 003F;
+078D 003F;
+07A4 003F;
+0790 003F;
+079E 003F;
+0791 003F;
+0793 003F;
+0795 003F;
+0797 003F;
+07A6 003F;
+07A8 003F;
+07AA 003F;
+07AC 003F;
+07AE 003F;
+07B0 003F;
+07CB 003F;
+07CD 003F;
+07CF 003F;
+07D1 003F;
+07D3 003F;
+07D5 003F;
+07E8 0061;
+07E9 0061;
+07EA 0021;
+07DA 003F;
+07DC 003F;
+07DE 003F;
+07E0 003F;
+07E2 003F;
+07E4 003F;
+07E6 003F;
+07F4 003F;
+2D30 003F;
+2D32 003F;
+2D34 003F;
+2D36 003F;
+2D38 003F;
+2D3A 003F;
+2D3C 003F;
+2D3E 003F;
+2D40 003F;
+2D42 003F;
+2D44 003F;
+2D46 003F;
+2D48 003F;
+2D4A 003F;
+2D4C 003F;
+2D4E 003F;
+2D50 003F;
+2D52 003F;
+2D54 003F;
+2D56 003F;
+2D58 003F;
+2D5A 003F;
+2D5C 003F;
+2D5E 003F;
+2D60 003F;
+2D62 003F;
+2D64 003F;
+2D6F 003F;
+1201 003F;
+1203 003F;
+1205 003F;
+1207 003F;
+1209 003F;
+120B 003F;
+120D 003F;
+120F 003F;
+1210 003F;
+1212 003F;
+1214 003F;
+1216 003F;
+1218 003F;
+121A 003F;
+121C 003F;
+121E 003F;
+1380 003F;
+1382 003F;
+2D81 003F;
+1221 003F;
+1223 003F;
+1225 003F;
+1227 003F;
+1229 003F;
+122B 003F;
+122D 003F;
+122F 003F;
+1230 003F;
+1232 003F;
+1234 003F;
+1236 003F;
+2D83 003F;
+1239 003F;
+123B 003F;
+123D 003F;
+123F 003F;
+1240 003F;
+1242 003F;
+1244 003F;
+1246 003F;
+1248 003F;
+124B 003F;
+124D 003F;
+1251 003F;
+1253 003F;
+1255 003F;
+1258 003F;
+125B 003F;
+125D 003F;
+1261 003F;
+1263 003F;
+1265 003F;
+1267 003F;
+1385 003F;
+1387 003F;
+1268 003F;
+126A 003F;
+126C 003F;
+126E 003F;
+1270 003F;
+1272 003F;
+1274 003F;
+1276 003F;
+2D86 003F;
+1279 003F;
+127B 003F;
+127D 003F;
+127F 003F;
+1280 003F;
+1282 003F;
+1284 003F;
+1286 003F;
+1288 003F;
+128B 003F;
+128D 003F;
+1291 003F;
+1293 003F;
+1295 003F;
+1297 003F;
+1298 003F;
+129A 003F;
+129C 003F;
+129E 003F;
+2D89 003F;
+12A1 003F;
+12A3 003F;
+12A5 003F;
+12A7 003F;
+12A8 003F;
+12AA 003F;
+12AC 003F;
+12AE 003F;
+12B0 003F;
+12B3 003F;
+12B5 003F;
+12B9 003F;
+12BB 003F;
+12BD 003F;
+12C0 003F;
+12C3 003F;
+12C5 003F;
+12C9 003F;
+12CB 003F;
+12CD 003F;
+12CF 003F;
+12D1 003F;
+12D3 003F;
+12D5 003F;
+12D8 003F;
+12DA 003F;
+12DC 003F;
+12DE 003F;
+2D8B 003F;
+12E1 003F;
+12E3 003F;
+12E5 003F;
+12E7 003F;
+12E9 003F;
+12EB 003F;
+12ED 003F;
+12EF 003F;
+12F1 003F;
+12F3 003F;
+12F5 003F;
+12F7 003F;
+12F8 003F;
+12FA 003F;
+12FC 003F;
+12FE 003F;
+2D8D 003F;
+1301 003F;
+1303 003F;
+1305 003F;
+1307 003F;
+1308 003F;
+130A 003F;
+130C 003F;
+130E 003F;
+1310 003F;
+1313 003F;
+1315 003F;
+1319 003F;
+131B 003F;
+131D 003F;
+131F 003F;
+2D94 003F;
+2D96 003F;
+1321 003F;
+1323 003F;
+1325 003F;
+1327 003F;
+1328 003F;
+132A 003F;
+132C 003F;
+132E 003F;
+2D90 003F;
+1331 003F;
+1333 003F;
+1335 003F;
+1337 003F;
+1338 003F;
+133A 003F;
+133C 003F;
+133E 003F;
+1340 003F;
+1342 003F;
+1344 003F;
+1346 003F;
+1348 003F;
+134A 003F;
+134C 003F;
+134E 003F;
+1388 003F;
+138A 003F;
+1350 003F;
+1352 003F;
+1354 003F;
+1356 003F;
+138C 003F;
+138E 003F;
+2D92 003F;
+1359 003F;
+2DA0 003F;
+2DA2 003F;
+2DA4 003F;
+2DA6 003F;
+2DA9 003F;
+2DAB 003F;
+2DAD 003F;
+2DB0 003F;
+2DB2 003F;
+2DB4 003F;
+2DB6 003F;
+2DB9 003F;
+2DBB 003F;
+2DBD 003F;
+2DC0 003F;
+2DC2 003F;
+2DC4 003F;
+2DC6 003F;
+2DC9 003F;
+2DCB 003F;
+2DCD 003F;
+2DD0 003F;
+2DD2 003F;
+2DD4 003F;
+2DD6 003F;
+2DD9 003F;
+2DDB 003F;
+2DDD 003F;
+0950 003F;
+0904 003F;
+0906 003F;
+0908 003F;
+090A 003F;
+0960 003F;
+0961 003F;
+090E 003F;
+0910 003F;
+0912 003F;
+0914 003F;
+0958 003F;
+0916 0021;
+0917 0334 093C;
+095A 0041;
+0918 0061;
+091A 0061;
+095B 0334;
+095B 0062;
+091D 0062;
+091F 0062;
+095C 0021;
+097E 003F;
+095D 003F;
+0923 0041;
+0925 0041;
+0927 0041;
+0928 0041;
+092B 0334 093C;
+095E 0041;
+097F 0061;
+092E 0061;
+092F 0061;
+0931 0021;
+0932 003F;
+0934 003F;
+0935 0041;
+0937 0041;
+0939 0041;
+097D 0041;
+093F 0041;
+0941 0041;
+0943 0041;
+0962 0041;
+0945 0041;
+0947 0041;
+0949 0041;
+094B 0041;
+094D 003F;
+0986 003F;
+0988 003F;
+098A 003F;
+09E0 003F;
+09E1 003F;
+0990 003F;
+0994 003F;
+0996 003F;
+0998 003F;
+099A 003F;
+099C 003F;
+099E 003F;
+09A0 003F;
+09DC 003F;
+09A2 0021;
+09A3 0021;
+09CE 0021;
+09A6 0021;
+09A8 0021;
+09AB 0021;
+09AD 0021;
+09AF 0334 09BC;
+09DF 0041;
+09F0 0061;
+09F1 0061;
+09B7 0061;
+09B9 0061;
+09BE 0061;
+09C0 0061;
+09C2 0061;
+09C4 0061;
+09E3 0061;
+09C7 1D165 09BE 0061;
+09CB 0021;
+09CC 0021;
+09CD 0334;
+09D7 0062;
+0A73 0062;
+0A0A 0062;
+0A05 0062;
+0A10 0062;
+0A72 0062;
+0A08 0062;
+0A36 0021;
+0A39 003F;
+0A15 003F;
+0A59 003F;
+0A17 0021;
+0A18 0021;
+0A1A 0021;
+0A1C 0334 0A3C;
+0A5B 0041;
+0A1E 0061;
+0A20 0061;
+0A22 0061;
+0A24 0061;
+0A26 0061;
+0A28 0061;
+0A5E 0334;
+0A5E 0062;
+0A2D 0062;
+0A2F 0062;
+0A30 0062;
+0A33 0061;
+0A5C 003F;
+0A3F 003F;
+0A41 003F;
+0A47 003F;
+0A4B 003F;
+0A4D 0334;
+0AD0 0062;
+0A86 0062;
+0A88 0062;
+0A8A 0062;
+0AE0 0062;
+0AE1 0062;
+0A8F 0062;
+0A91 0062;
+0A94 0062;
+0A96 0062;
+0A98 0062;
+0A9A 0062;
+0A9C 0062;
+0A9E 0062;
+0AA0 0062;
+0AA2 0062;
+0AA4 0062;
+0AA6 0062;
+0AA8 0062;
+0AAB 0062;
+0AAD 0062;
+0AAF 0062;
+0AB2 0062;
+0AB5 0062;
+0AB7 0062;
+0AB9 0062;
+0ABE 0062;
+0AC0 0062;
+0AC2 0062;
+0AC4 0062;
+0AE3 0062;
+0AC7 0062;
+0AC9 0062;
+0ACC 0062;
+0B05 0061;
+0B07 0061;
+0B09 0061;
+0B0B 0061;
+0B0C 0061;
+0B0F 0061;
+0B13 0061;
+0B15 0061;
+0B17 0061;
+0B19 0061;
+0B1B 0061;
+0B1D 0061;
+0B1F 0061;
+0B5C 0334;
+0B5C 0062;
+0B5D 0061;
+0B24 003F;
+0B26 003F;
+0B28 003F;
+0B2B 003F;
+0B2D 003F;
+0B2F 003F;
+0B30 003F;
+0B33 003F;
+0B71 003F;
+0B37 003F;
+0B39 003F;
+0B3E 003F;
+0B40 003F;
+0B42 003F;
+0B44 003F;
+0B63 003F;
+0B47 0591 0B3E 0061;
+0B47 0B56 003F;
+0B47 0B3E 003F;
+0B47 0B57 003F;
+0B4D 0021;
+0B57 0021;
+0B83 0021;
+0B86 0021;
+0B88 0021;
+0B8A 0021;
+0B8F 0021;
+0B92 0021;
+0B93 0061;
+0B94 0041;
+0B99 0061;
+0B9C 0061;
+0B9F 0061;
+0BA4 0061;
+0BA9 0061;
+0BAE 0061;
+0BB0 0061;
+0BB2 0061;
+0BB4 0061;
+0BB6 0061;
+0BB8 0061;
+0BBE 0061;
+0BC0 0061;
+0BC2 0061;
+0BC6 1D165 0BBE 0061;
+0BC7 0591 0BBE 0061;
+0BCA 003F;
+0BCB 003F;
+0BCC 003F;
+0BCD 003F;
+0C05 003F;
+0C07 003F;
+0C09 003F;
+0C0B 003F;
+0C0C 003F;
+0C0E 003F;
+0C10 003F;
+0C13 003F;
+0C15 003F;
+0C17 003F;
+0C19 003F;
+0C58 003F;
+0C1C 003F;
+0C1D 003F;
+0C1F 003F;
+0C21 003F;
+0C23 003F;
+0C25 003F;
+0C27 003F;
+0C2A 003F;
+0C2C 003F;
+0C2E 003F;
+0C30 003F;
+0C32 003F;
+0C35 003F;
+0C37 003F;
+0C39 003F;
+0C3E 003F;
+0C40 003F;
+0C42 003F;
+0C44 003F;
+0C63 003F;
+0C47 0021;
+0C46 0C56 003F;
+0C4A 0021;
+0C4C 0021;
+0C4D 0041;
+0C56 0334;
+0C85 0062;
+0C87 0062;
+0C89 0062;
+0C8B 0062;
+0C8C 0062;
+0C8E 0062;
+0C90 0062;
+0C93 0062;
+0C95 0062;
+0C97 0062;
+0C99 0062;
+0C9B 0062;
+0C9D 0062;
+0C9F 0062;
+0CA1 0062;
+0CA3 0062;
+0CA5 0062;
+0CA7 0062;
+0CAA 0062;
+0CAC 0062;
+0CAE 0062;
+0CB0 0062;
+0CB2 0062;
+0CB6 0062;
+0CB8 0062;
+0CB3 0062;
+0CBD 0062;
+0CBF 0062;
+0CBF 0CD5 0041;
+0CC2 003F;
+0CC4 003F;
+0CE3 003F;
+0CC6 0591 0CC2 0061;
+0CC6 1D165 0CD6 0061;
+0CC7 0062;
+0CC8 0062;
+0CCA 0062;
+0CC6 0CC2 0CD5 003F;
+0CCA 0CD5 0062;
+0CCD 003F;
+0CD6 003F;
+0D06 003F;
+0D08 003F;
+0D0A 003F;
+0D60 003F;
+0D61 003F;
+0D0F 003F;
+0D12 003F;
+0D14 003F;
+0D15 003F;
+0D17 003F;
+0D19 003F;
+0D1B 003F;
+0D1D 003F;
+0D1F 003F;
+0D21 003F;
+0D7A 003F;
+0D24 003F;
+0D26 003F;
+0D7B 003F;
+0D2A 003F;
+0D2C 003F;
+0D2E 003F;
+0D30 003F;
+0D31 003F;
+0D32 003F;
+0D33 003F;
+0D35 003F;
+0D37 003F;
+0D39 003F;
+0D3E 003F;
+0D40 003F;
+0D42 003F;
+0D44 003F;
+0D63 003F;
+0D46 0591 0D3E 0061;
+0D47 0001 0D3E 0061;
+0D46 0D3E 003F;
+0D47 0D3E 003F;
+0D46 0D57 003F;
+0D57 0061;
+0D85 0021;
+0D87 0021;
+0D89 0021;
+0D8B 0021;
+0D8D 0021;
+0D8F 0021;
+0D91 0021;
+0D93 0021;
+0D95 0021;
+0D9A 0021;
+0D9C 0021;
+0D9E 0021;
+0DA0 0021;
+0DA2 0021;
+0DA4 0021;
+0DA6 0021;
+0DA8 0021;
+0DAA 0021;
+0DAC 0021;
+0DAE 0021;
+0DB0 0021;
+0DB3 0021;
+0DB5 0021;
+0DB7 0021;
+0DB9 0021;
+0DBB 0021;
+0DC0 0021;
+0DC2 0021;
+0DC4 0021;
+0DC6 0021;
+0DCA 0041;
+0DD0 0041;
+0DD2 0041;
+0DD4 0041;
+0DD8 0041;
+0DD9 1D165 0DCF 0061;
+0DD9 0DCA 0021;
+0DD9 0DCA 0062;
+0DDC 003F;
+0DD9 0DCF 0DCA 0334;
+0DD9 0DCF 0DCA 0061;
+0DDC 0DCA 0062;
+0DD9 0DDF 0062;
+0DF2 0041;
+A800 0041;
+A802 0041;
+A804 0041;
+A806 003F;
+A808 003F;
+A80A 003F;
+A80D 003F;
+A80F 003F;
+A811 003F;
+A813 003F;
+A815 003F;
+A817 003F;
+A819 003F;
+A81B 003F;
+A81D 003F;
+A81F 003F;
+A821 003F;
+A823 003F;
+A825 003F;
+A827 003F;
+A883 003F;
+A885 003F;
+A887 003F;
+A889 003F;
+A88B 003F;
+A88D 003F;
+A88F 003F;
+A891 003F;
+A893 003F;
+A895 003F;
+A897 003F;
+A899 003F;
+A89B 003F;
+A89D 003F;
+A89F 003F;
+A8A1 003F;
+A8A3 003F;
+A8A5 003F;
+A8A7 003F;
+A8A9 003F;
+A8AB 003F;
+A8AD 003F;
+A8AF 003F;
+A8B1 003F;
+A8B3 003F;
+A8B5 003F;
+A8B7 003F;
+A8B9 003F;
+A8BB 003F;
+A8BD 003F;
+A8BF 003F;
+A8C1 003F;
+A8C3 003F;
+1B83 0021;
+1B85 0021;
+1B87 0021;
+1B89 0021;
+1BAE 0021;
+1B8C 0021;
+1B8E 0021;
+1B90 0021;
+1B92 0021;
+1B94 0021;
+1B96 0021;
+1B98 0021;
+1B9A 0021;
+1B9B 0021;
+1B9C 0021;
+1B9D 0021;
+1B9F 0021;
+1BA0 0021;
+1BA5 0021;
+1BA7 0021;
+1BA9 0021;
+1BAA 0062;
+10A01 0062;
+10A03 0062;
+10A06 0062;
+10A10 0062;
+10A12 0062;
+10A15 0062;
+10A17 0062;
+10A1A 0062;
+10A1C 0062;
+10A1E 0062;
+10A20 0062;
+10A22 0062;
+10A24 0062;
+10A26 0062;
+10A28 0062;
+10A2A 0062;
+10A2C 0062;
+10A2E 0062;
+10A30 0062;
+10A32 0062;
+10A3F 0061;
+0E40 0E01 0061;
+0E42 0E01 0061;
+0E44 0E01 0061;
+0E40 0E02 0061;
+0E42 0E02 0061;
+0E44 0E02 0061;
+0E40 0E03 0061;
+0E42 0E03 0061;
+0E44 0E03 0061;
+0E40 0E04 0061;
+0E42 0E04 0061;
+0E44 0E04 0061;
+0E40 0E05 0061;
+0E42 0E05 0061;
+0E44 0E05 0061;
+0E40 0E06 0061;
+0E42 0E06 0061;
+0E44 0E06 0061;
+0E40 0E07 0061;
+0E42 0E07 0061;
+0E44 0E07 0061;
+0E40 0E08 0061;
+0E42 0E08 0061;
+0E44 0E08 0061;
+0E40 0E09 0061;
+0E42 0E09 0061;
+0E44 0E09 0061;
+0E40 0E0A 0061;
+0E42 0E0A 0061;
+0E44 0E0A 0061;
+0E40 0E0B 0061;
+0E42 0E0B 0061;
+0E44 0E0B 0061;
+0E40 0E0C 0061;
+0E42 0E0C 0061;
+0E44 0E0C 0061;
+0E40 0E0D 0061;
+0E42 0E0D 0061;
+0E44 0E0D 0061;
+0E40 0E0E 0061;
+0E42 0E0E 0061;
+0E44 0E0E 0061;
+0E40 0E0F 0061;
+0E42 0E0F 0061;
+0E44 0E0F 0061;
+0E40 0E10 0061;
+0E42 0E10 0061;
+0E44 0E10 0061;
+0E40 0E11 0061;
+0E42 0E11 0061;
+0E44 0E11 0061;
+0E40 0E12 0061;
+0E42 0E12 0061;
+0E44 0E12 0061;
+0E40 0E13 0061;
+0E42 0E13 0061;
+0E44 0E13 0061;
+0E40 0E14 0061;
+0E42 0E14 0061;
+0E44 0E14 0061;
+0E40 0E15 0061;
+0E42 0E15 0061;
+0E44 0E15 0061;
+0E40 0E16 0061;
+0E42 0E16 0061;
+0E44 0E16 0061;
+0E40 0E17 0061;
+0E42 0E17 0061;
+0E44 0E17 0061;
+0E40 0E18 0061;
+0E42 0E18 0061;
+0E44 0E18 0061;
+0E40 0E19 0061;
+0E42 0E19 0061;
+0E44 0E19 0061;
+0E40 0E1A 0061;
+0E42 0E1A 0061;
+0E44 0E1A 0061;
+0E40 0E1B 0061;
+0E42 0E1B 0061;
+0E44 0E1B 0061;
+0E40 0E1C 0061;
+0E42 0E1C 0061;
+0E44 0E1C 0061;
+0E40 0E1D 0061;
+0E42 0E1D 0061;
+0E44 0E1D 0061;
+0E40 0E1E 0061;
+0E42 0E1E 0061;
+0E44 0E1E 0061;
+0E40 0E1F 0061;
+0E42 0E1F 0061;
+0E44 0E1F 0061;
+0E40 0E20 0061;
+0E42 0E20 0061;
+0E44 0E20 0061;
+0E40 0E21 0061;
+0E42 0E21 0061;
+0E44 0E21 0061;
+0E40 0E22 0061;
+0E42 0E22 0061;
+0E44 0E22 0061;
+0E40 0E23 0061;
+0E42 0E23 0061;
+0E44 0E23 0061;
+0E40 0E24 0061;
+0E42 0E24 0061;
+0E44 0E24 0061;
+0E40 0E25 0061;
+0E42 0E25 0061;
+0E44 0E25 0061;
+0E40 0E26 0061;
+0E42 0E26 0061;
+0E44 0E26 0061;
+0E40 0E27 0061;
+0E42 0E27 0061;
+0E44 0E27 0061;
+0E40 0E28 0061;
+0E42 0E28 0061;
+0E44 0E28 0061;
+0E40 0E29 0061;
+0E42 0E29 0061;
+0E44 0E29 0061;
+0E40 0E2A 0061;
+0E42 0E2A 0061;
+0E44 0E2A 0061;
+0E40 0E2B 0061;
+0E42 0E2B 0061;
+0E44 0E2B 0061;
+0E40 0E2C 0061;
+0E42 0E2C 0061;
+0E44 0E2C 0061;
+0E40 0E2D 0061;
+0E42 0E2D 0061;
+0E44 0E2D 0061;
+0E40 0E2E 0061;
+0E42 0E2E 0061;
+0E44 0E2E 0061;
+0E30 0061;
+0E32 0061;
+0E33 0061;
+0E34 0062;
+0E36 0062;
+0E38 0061;
+0334 0E3A;
+0E40 0041;
+0E40 1D165 0E03 0061;
+0E40 0001 0E07 0061;
+0E40 0591 0E0A 0061;
+0E40 1D165 0E0D 0061;
+0E40 0001 0E11 0061;
+0E40 0591 0E14 0061;
+0E40 1D165 0E17 0061;
+0E40 0001 0E1B 0061;
+0E40 0591 0E1E 0061;
+0E40 1D165 0E21 0061;
+0E40 0001 0E25 0061;
+0E40 0591 0E28 0061;
+0E40 1D165 0E2B 0061;
+0E41 0021;
+0E41 1D165 0E02 0061;
+0E41 0001 0E06 0061;
+0E41 0591 0E09 0061;
+0E41 1D165 0E0C 0061;
+0E41 0001 0E10 0061;
+0E41 0591 0E13 0061;
+0E41 1D165 0E16 0061;
+0E41 0001 0E1A 0061;
+0E41 0591 0E1D 0061;
+0E41 1D165 0E20 0061;
+0E41 0001 0E24 0061;
+0E41 0591 0E27 0061;
+0E41 1D165 0E2A 0061;
+0E41 0001 0E2E 0061;
+0E42 1D165 0E01 0061;
+0E42 0001 0E05 0061;
+0E42 0591 0E08 0061;
+0E42 1D165 0E0B 0061;
+0E42 0001 0E0F 0061;
+0E42 0591 0E12 0061;
+0E42 1D165 0E15 0061;
+0E42 0001 0E19 0061;
+0E42 0591 0E1C 0061;
+0E42 1D165 0E1F 0061;
+0E42 0001 0E23 0061;
+0E42 0591 0E26 0061;
+0E42 1D165 0E29 0061;
+0E42 0001 0E2D 0061;
+0E43 0062;
+0E43 0001 0E04 0061;
+0E43 0591 0E07 0061;
+0E43 1D165 0E0A 0061;
+0E43 0001 0E0E 0061;
+0E43 0591 0E11 0061;
+0E43 1D165 0E14 0061;
+0E43 0001 0E18 0061;
+0E43 0591 0E1B 0061;
+0E43 1D165 0E1E 0061;
+0E43 0001 0E22 0061;
+0E43 0591 0E25 0061;
+0E43 1D165 0E28 0061;
+0E43 0001 0E2C 0061;
+0E44 003F;
+0E44 0001 0E03 0061;
+0E44 0591 0E06 0061;
+0E44 1D165 0E09 0061;
+0E44 0001 0E0D 0061;
+0E44 0591 0E10 0061;
+0E44 1D165 0E13 0061;
+0E44 0001 0E17 0061;
+0E44 0591 0E1A 0061;
+0E44 1D165 0E1D 0061;
+0E44 0001 0E21 0061;
+0E44 0591 0E24 0061;
+0E44 1D165 0E27 0061;
+0E44 0001 0E2B 0061;
+0E44 0591 0E2E 0061;
+0E81 0041;
+0EC1 0E81 0041;
+0EC3 0E81 0041;
+0E82 0041;
+0EC1 0E82 0041;
+0EC3 0E82 0041;
+0E84 0041;
+0EC1 0E84 0041;
+0EC3 0E84 0041;
+0E87 0041;
+0EC1 0E87 0041;
+0EC3 0E87 0041;
+0E88 0041;
+0EC1 0E88 0041;
+0EC3 0E88 0041;
+0E8A 0041;
+0EC1 0E8A 0041;
+0EC3 0E8A 0041;
+0E8D 0041;
+0EC1 0E8D 0041;
+0EC3 0E8D 0041;
+0E94 0041;
+0EC1 0E94 0041;
+0EC3 0E94 0041;
+0E95 0041;
+0EC1 0E95 0041;
+0EC3 0E95 0041;
+0E96 0041;
+0EC1 0E96 0041;
+0EC3 0E96 0041;
+0E97 0041;
+0EC1 0E97 0041;
+0EC3 0E97 0041;
+0E99 0041;
+0EC1 0E99 0041;
+0EC3 0E99 0041;
+0E9A 0041;
+0EC1 0E9A 0041;
+0EC3 0E9A 0041;
+0E9B 0041;
+0EC1 0E9B 0041;
+0EC3 0E9B 0041;
+0E9C 0041;
+0EC1 0E9C 0041;
+0EC3 0E9C 0041;
+0E9D 0041;
+0EC1 0E9D 0041;
+0EC3 0E9D 0041;
+0E9E 0041;
+0EC1 0E9E 0041;
+0EC3 0E9E 0041;
+0E9F 0041;
+0EC1 0E9F 0041;
+0EC3 0E9F 0041;
+0EA1 0041;
+0EC1 0EA1 0041;
+0EC3 0EA1 0041;
+0EA2 0041;
+0EC1 0EA2 0041;
+0EC3 0EA2 0041;
+0EA3 0041;
+0EC1 0EA3 0041;
+0EC3 0EA3 0041;
+0EA5 0041;
+0EC1 0EA5 0041;
+0EC3 0EA5 0041;
+0EA7 0041;
+0EC1 0EA7 0041;
+0EC3 0EA7 0041;
+0EAA 0041;
+0EC1 0EAA 0041;
+0EC3 0EAA 0041;
+0EAB 0041;
+0EC0 0EDC 0041;
+0EC2 0EDC 0041;
+0EC4 0EDC 0041;
+0EC0 0EDD 0041;
+0EC2 0EDD 0041;
+0EC4 0EDD 0041;
+0EC1 0EAB 0041;
+0EC3 0EAB 0041;
+0EAD 0041;
+0EC1 0EAD 0041;
+0EC3 0EAD 0041;
+0EAE 0041;
+0EC1 0EAE 0041;
+0EC3 0EAE 0041;
+0EAF 0041;
+0EB1 0041;
+0EB3 0021;
+0EB4 0021;
+0EB6 0021;
+0334 0EB8;
+0EB9 003F;
+0EBC 003F;
+0EC0 003F;
+0EC0 0001 0E84 0061;
+0EC0 0591 0E8A 0061;
+0EC0 1D165 0E95 0061;
+0EC0 0001 0E9A 0061;
+0EC0 0591 0E9D 0061;
+0EC0 1D165 0EA1 0061;
+0EC0 0001 0EA7 0061;
+0EC0 0591 0EDC 0061;
+0EC0 1D165 0EAE 0061;
+0EC1 0591 0E82 0061;
+0EC1 1D165 0E88 0061;
+0EC1 0001 0E95 0061;
+0EC1 0591 0E99 0061;
+0EC1 1D165 0E9C 0061;
+0EC1 0001 0EA1 0061;
+0EC1 0591 0EA5 0061;
+0EC1 1D165 0EAB 0061;
+0EC1 0001 0EAE 0061;
+0EC2 1D165 0E81 0061;
+0EC2 0001 0E88 0061;
+0EC2 0591 0E94 0061;
+0EC2 1D165 0E97 0061;
+0EC2 0001 0E9C 0061;
+0EC2 0591 0E9F 0061;
+0EC2 1D165 0EA3 0061;
+0EC2 0001 0EAB 0061;
+0EC2 0591 0EAD 0061;
+0EC3 0001 0E81 0061;
+0EC3 0591 0E87 0061;
+0EC3 1D165 0E8D 0061;
+0EC3 0001 0E97 0061;
+0EC3 0591 0E9B 0061;
+0EC3 1D165 0E9E 0061;
+0EC3 0001 0EA3 0061;
+0EC3 0591 0EAA 0061;
+0EC3 1D165 0EDD 0061;
+0EC4 0041;
+0EC4 1D165 0E84 0061;
+0EC4 0001 0E8D 0061;
+0EC4 0591 0E96 0061;
+0EC4 1D165 0E9A 0061;
+0EC4 0001 0E9E 0061;
+0EC4 0591 0EA2 0061;
+0EC4 1D165 0EA7 0061;
+0EC4 0001 0EDD 0061;
+0F40 003F;
+0F90 003F;
+0F6B 003F;
+0F91 003F;
+0F43 003F;
+0F93 003F;
+0F94 003F;
+0F95 003F;
+0F96 003F;
+0F97 003F;
+0F99 003F;
+0F9A 003F;
+0F9B 003F;
+0F4D 003F;
+0F9D 003F;
+0F9E 003F;
+0F9F 003F;
+0FA0 003F;
+0F52 003F;
+0FA2 003F;
+0FA3 003F;
+0FA4 003F;
+0FA5 003F;
+0F57 003F;
+0FA7 003F;
+0FA8 003F;
+0FA9 003F;
+0FAA 003F;
+0F5C 003F;
+0FAC 003F;
+0FBA 0021;
+0F5E 003F;
+0F5F 003F;
+0F60 003F;
+0F61 003F;
+0FBB 0061;
+0F6A 0061;
+0FBC 0061;
+0FB2 0F71 0041;
+0F6C 0062;
+0FB3 0062;
+0FB3 0001 0F80 0061;
+0FB4 0061;
+0FB5 0061;
+0FB6 0061;
+0FB7 0061;
+0F00 0061;
+0F88 0061;
+0F8A 0061;
+0F71 0021;
+0F72 0021;
+0F73 0021;
+0F73 0062;
+0F71 0334 0F80;
+0F71 0F80 0041;
+0F74 0062;
+0F71 0F74 0061;
+0F76 0021;
+0F76 0062;
+0FB2 0591 0F81 0061;
+0F77 0062;
+0F78 0061;
+0FB3 0F81 0021;
+0FB3 0F81 0061;
+0F7A 0334;
+0F7B 0061;
+0334 0F7D;
+0F84 003F;
+1C01 003F;
+1C03 003F;
+1C05 003F;
+1C07 003F;
+1C09 003F;
+1C4E 003F;
+1C0A 003F;
+1C0C 003F;
+1C0E 003F;
+1C10 003F;
+1C12 003F;
+1C14 003F;
+1C16 003F;
+1C18 003F;
+1C1A 003F;
+1C1B 003F;
+1C1C 003F;
+1C1E 003F;
+1C20 003F;
+1C22 003F;
+1C36 003F;
+1C27 003F;
+1C29 003F;
+1C2B 003F;
+1C2D 003F;
+1C2F 003F;
+1C31 003F;
+1C33 003F;
+1C35 003F;
+A841 003F;
+A843 003F;
+A845 003F;
+A847 003F;
+A86A 003F;
+A86C 003F;
+A849 003F;
+A84B 003F;
+A84D 003F;
+A84F 003F;
+A851 003F;
+A853 003F;
+A854 003F;
+A856 003F;
+A868 003F;
+A858 003F;
+A872 003F;
+A85A 003F;
+A85B 003F;
+A86F 003F;
+A85D 003F;
+A863 003F;
+A865 003F;
+A85F 003F;
+A861 003F;
+A873 003F;
+1901 003F;
+1903 003F;
+1905 003F;
+1907 003F;
+1909 003F;
+190B 003F;
+190D 003F;
+190F 003F;
+1911 003F;
+1913 003F;
+1915 003F;
+1917 003F;
+1919 003F;
+191B 003F;
+1920 003F;
+1922 003F;
+1924 003F;
+1926 003F;
+1928 003F;
+192A 003F;
+1930 003F;
+1932 003F;
+1934 003F;
+1936 003F;
+1938 003F;
+1701 003F;
+1703 003F;
+1705 003F;
+1707 003F;
+1709 003F;
+170B 003F;
+170E 003F;
+1710 003F;
+1712 003F;
+1714 0334;
+1720 0062;
+1722 0062;
+1724 0062;
+1726 0062;
+1728 0062;
+172A 0062;
+172C 0062;
+172E 0062;
+1730 0062;
+1732 0062;
+1734 0061;
+1741 0061;
+1743 0061;
+1745 0061;
+1747 0061;
+1749 0061;
+174B 0061;
+174D 0061;
+174F 0061;
+1751 0061;
+1753 0061;
+1761 0061;
+1763 0061;
+1765 0061;
+1767 0061;
+1769 0061;
+176B 0061;
+176E 0061;
+1770 0061;
+1773 0061;
+1A01 0061;
+1A03 0061;
+1A05 0061;
+1A07 0061;
+1A09 0061;
+1A0B 0061;
+1A0D 0061;
+1A0F 0061;
+1A11 0061;
+1A13 0061;
+1A15 0061;
+1A17 0021;
+1A18 0041;
+1A1A 0041;
+A930 0041;
+A932 0041;
+A934 0041;
+A936 0041;
+A938 0041;
+A93A 0041;
+A93C 0041;
+A93E 0041;
+A940 0041;
+A942 0041;
+A944 0041;
+A946 0041;
+A948 0041;
+A94A 0041;
+A94C 0041;
+A94E 0041;
+A950 0041;
+A952 0041;
+A90A 0061;
+A90C 0061;
+A90E 0061;
+A910 0061;
+A912 0061;
+A914 0061;
+A916 0061;
+A918 0061;
+A91A 0061;
+A91C 0061;
+A91E 0061;
+A920 0061;
+A922 0061;
+A924 0061;
+A926 0061;
+A928 0061;
+A92A 0061;
+1075 0061;
+1076 0061;
+1077 0061;
+1004 0061;
+1005 0061;
+1006 0061;
+1079 0061;
+105B 0061;
+1009 0061;
+100A 0061;
+100C 0061;
+100E 0061;
+106E 0061;
+1011 0061;
+107B 0061;
+1014 0061;
+105E 0061;
+1016 0061;
+107E 0061;
+1017 0061;
+1018 0061;
+105F 0061;
+103B 0061;
+103C 0061;
+1060 0061;
+103D 0061;
+1080 0061;
+1051 0061;
+101E 0061;
+101F 0061;
+103E 0061;
+105C 0061;
+106F 0061;
+1066 0061;
+1022 0061;
+1024 0061;
+1025 1D165 102E 0061;
+1026 0062;
+1053 0062;
+1055 0062;
+1028 0062;
+102A 0062;
+102B 0062;
+1072 0062;
+1071 0062;
+1033 0062;
+1073 0062;
+1030 0062;
+1057 0062;
+1059 0062;
+1084 0062;
+1085 0062;
+1034 0062;
+1067 0062;
+1086 0062;
+103A 003F;
+1064 003F;
+106A 003F;
+106C 003F;
+1087 003F;
+1088 003F;
+1089 003F;
+108F 003F;
+1781 003F;
+1783 003F;
+1785 003F;
+1787 003F;
+1789 003F;
+178B 003F;
+178D 003F;
+178F 003F;
+1791 003F;
+1793 003F;
+1795 003F;
+1797 003F;
+1799 003F;
+179B 003F;
+179D 003F;
+179F 003F;
+17A1 003F;
+17DC 003F;
+17A4 003F;
+17A6 003F;
+17A8 003F;
+17AA 003F;
+17AC 003F;
+17AE 003F;
+17B0 003F;
+17B2 003F;
+17B4 003F;
+17B6 003F;
+17B8 003F;
+17BA 003F;
+17BC 003F;
+17BE 003F;
+17C0 003F;
+17C2 003F;
+17C4 003F;
+17D2 0334;
+1950 0062;
+1952 0062;
+1954 0062;
+1956 0062;
+1958 0062;
+195A 0062;
+195C 0062;
+195E 0062;
+1960 0062;
+1962 0062;
+1964 0062;
+1966 0062;
+1968 0062;
+196A 0062;
+196C 0062;
+1970 0062;
+1972 0062;
+1974 0062;
+1981 0062;
+1983 0062;
+1985 0062;
+1987 0062;
+1989 0062;
+198B 0062;
+198D 0062;
+198F 0062;
+1991 0062;
+1993 0062;
+1995 0062;
+1997 0062;
+1999 0062;
+199B 0062;
+19DE 0062;
+199D 0062;
+199F 0062;
+19A1 0062;
+19A3 0062;
+19A5 0062;
+19A7 0062;
+19A9 0062;
+19B1 0062;
+19B3 0062;
+19B5 0062;
+19B7 0062;
+19B9 0062;
+19BB 0062;
+19BD 0062;
+19BF 0062;
+19C1 0062;
+19C3 0062;
+19C5 0062;
+19C7 0062;
+19C9 0062;
+AA01 0062;
+AA03 0062;
+AA05 0062;
+AA07 0062;
+AA09 0062;
+AA0B 0062;
+AA0D 0062;
+AA0F 0062;
+AA11 0062;
+AA13 0062;
+AA15 0062;
+AA17 0062;
+AA19 0062;
+AA1B 0062;
+AA1D 0062;
+AA1F 0062;
+AA21 0062;
+AA23 0062;
+AA25 0062;
+AA27 0062;
+AA33 0062;
+AA35 0062;
+AA29 0062;
+AA2B 0062;
+AA2D 0062;
+AA2F 0062;
+AA31 0062;
+AA40 0062;
+AA42 0062;
+AA44 0062;
+AA46 0062;
+AA48 0062;
+AA4A 0062;
+AA4C 0062;
+1B05 0062;
+1B05 1B35 0041;
+1B07 0591 1B35 0061;
+1B07 1B35 0062;
+1B09 1B35 0021;
+1B0B 0021;
+1B0B 1B35 003F;
+1B0D 0061;
+1B0D 1B35 0061;
+1B0F 0062;
+1B11 0062;
+1B11 1B35 0041;
+1B45 003F;
+1B14 003F;
+1B16 003F;
+1B18 003F;
+1B1A 003F;
+1B1C 003F;
+1B1E 003F;
+1B20 003F;
+1B22 003F;
+1B23 003F;
+1B25 003F;
+1B27 003F;
+1B28 003F;
+1B2A 003F;
+1B2C 003F;
+1B2E 003F;
+1B49 003F;
+1B31 003F;
+1B4A 003F;
+1B33 003F;
+1B36 003F;
+1B38 003F;
+1B3A 003F;
+1B3B 003F;
+1B3C 0041;
+1B3D 0061;
+1B3E 0001 1B35 0061;
+1B3F 1D165 1B35 0061;
+1B40 0062;
+1B41 0062;
+1B43 0021;
+1B44 0334;
+1880 0062;
+1882 0062;
+1884 0062;
+1886 0062;
+1820 0062;
+1821 0062;
+185D 0062;
+1845 0062;
+1873 0062;
+185F 0062;
+1846 0062;
+1847 0062;
+1825 0062;
+1826 0062;
+1860 0062;
+1828 0062;
+184A 0062;
+188A 0062;
+182A 0062;
+182B 0062;
+1866 0062;
+184D 0062;
+184E 0062;
+189A 0062;
+182E 0062;
+182F 0062;
+1831 0062;
+189C 0062;
+18A2 0062;
+18A5 0062;
+1850 0062;
+1833 0062;
+1869 0062;
+1852 0062;
+185C 0062;
+1835 0062;
+186A 0062;
+1836 0062;
+1872 0062;
+1875 0062;
+1856 0062;
+186B 0062;
+183A 0062;
+1863 0062;
+1889 0062;
+183C 0062;
+186E 0062;
+186F 0062;
+186C 0062;
+1859 0062;
+183F 0062;
+1841 0062;
+185A 0062;
+1870 0062;
+189E 0062;
+188E 0062;
+188F 0062;
+1898 0062;
+1891 0062;
+1892 0062;
+18A8 0062;
+18A3 0062;
+1899 0062;
+1897 0062;
+18A7 0062;
+18A9 0061;
+1C5B 0061;
+1C5D 0061;
+1C5F 0061;
+1C61 0061;
+1C63 0061;
+1C65 0061;
+1C67 0061;
+1C69 0061;
+1C6B 0061;
+1C6D 0061;
+1C6F 0061;
+1C71 0061;
+1C73 0061;
+1C75 0061;
+1C77 0061;
+1C79 0061;
+1C7B 0061;
+1C7D 0061;
+13A1 0061;
+13A3 0061;
+13A5 0061;
+13A7 0061;
+13A9 0061;
+13AB 0061;
+13AD 0061;
+13AF 0061;
+13B1 0061;
+13B3 0061;
+13B5 0061;
+13B7 0061;
+13B9 0061;
+13BB 0061;
+13BD 0061;
+13BF 0061;
+13C1 0061;
+13C3 0061;
+13C5 0061;
+13C7 0061;
+13C9 0061;
+13CB 0061;
+13CD 0061;
+13CF 0061;
+13D1 0061;
+13D3 0061;
+13D5 0061;
+13D7 0061;
+13D9 0061;
+13DB 0061;
+13DD 0061;
+13DF 0061;
+13E1 0061;
+13E3 0061;
+13E5 0061;
+13E7 0061;
+13E9 0061;
+13EB 0061;
+13ED 0061;
+13EF 0061;
+13F1 0061;
+13F3 0061;
+1401 0061;
+1403 0061;
+1405 0061;
+1407 0061;
+1409 0061;
+140B 0061;
+140D 0061;
+140F 0061;
+1411 0061;
+1413 0061;
+1415 0061;
+1417 0061;
+1419 0061;
+141B 0061;
+141D 0061;
+141F 0061;
+1421 0061;
+1423 0061;
+1425 0061;
+1427 0061;
+1429 0061;
+142B 0061;
+142D 0061;
+142F 0061;
+1431 0061;
+1433 0061;
+1435 0061;
+1437 0061;
+1439 0061;
+143B 0061;
+143D 0061;
+143F 0061;
+1441 0061;
+1443 0061;
+1445 0061;
+1447 0061;
+1449 0061;
+144B 0061;
+144D 0061;
+144F 0061;
+1451 0061;
+1453 0061;
+1455 0061;
+1457 0061;
+1459 0061;
+145B 0061;
+145D 0061;
+145F 0061;
+1461 0061;
+1463 0061;
+1465 0061;
+1467 0061;
+1469 0061;
+146B 0061;
+146D 0061;
+146F 0061;
+1471 0061;
+1473 0061;
+1475 0061;
+1477 0061;
+1479 0061;
+147B 0061;
+147D 0061;
+147F 0061;
+1481 0061;
+1483 0061;
+1485 0061;
+1487 0061;
+1489 0061;
+148B 0061;
+148D 0061;
+148F 0061;
+1491 0061;
+1493 0061;
+1495 0061;
+1497 0061;
+1499 0061;
+149B 0061;
+149D 0061;
+149F 0061;
+14A1 0061;
+14A3 0061;
+14A5 0061;
+14A7 0061;
+14A9 0061;
+14AB 0061;
+14AD 0061;
+14AF 0061;
+14B1 0061;
+14B3 0061;
+14B5 0061;
+14B7 0061;
+14B9 0061;
+14BB 0061;
+14BD 0061;
+14BF 0061;
+14C1 0061;
+14C3 0061;
+14C5 0061;
+14C7 0061;
+14C9 0061;
+14CB 0061;
+14CD 0061;
+14CF 0061;
+14D1 0061;
+14D3 0061;
+14D5 0061;
+14D7 0061;
+14D9 0061;
+14DB 0061;
+14DD 0061;
+14DF 0061;
+14E1 0061;
+14E3 0061;
+14E5 0061;
+14E7 0061;
+14E9 0061;
+14EB 0061;
+14ED 0061;
+14EF 0061;
+14F1 0061;
+14F3 0061;
+14F5 0061;
+14F7 0061;
+14F9 0061;
+14FB 0061;
+14FD 0061;
+14FF 0061;
+1501 0061;
+1503 0061;
+1505 0061;
+1507 0061;
+1509 0061;
+150B 0061;
+150D 0061;
+150F 0061;
+1511 0061;
+1513 0061;
+1515 0061;
+1517 0061;
+1519 0061;
+151B 0061;
+151D 0061;
+151F 0061;
+1521 0061;
+1523 0061;
+1525 0061;
+1527 0061;
+1529 0061;
+152B 0061;
+152D 0061;
+152F 0061;
+1531 0061;
+1533 0061;
+1535 0061;
+1537 0061;
+1539 0061;
+153B 0061;
+153D 0061;
+153F 0061;
+1541 0061;
+1543 0061;
+1545 0061;
+1547 0061;
+1549 0061;
+154B 0061;
+154D 0061;
+154F 0061;
+1551 0061;
+1553 0061;
+1555 0061;
+1557 0061;
+1559 0061;
+155B 0061;
+155D 0061;
+155F 0061;
+1561 0061;
+1563 0061;
+1565 0061;
+1567 0061;
+1569 0061;
+156B 0061;
+156D 0061;
+156F 0061;
+1571 0061;
+1573 0061;
+1575 0061;
+1577 0061;
+1579 0061;
+157B 0061;
+166F 0061;
+157F 0061;
+1581 0061;
+1583 0061;
+1585 0061;
+1587 0061;
+1589 0061;
+158B 0061;
+158D 0061;
+158E 0061;
+1590 0061;
+1592 0061;
+1594 0061;
+1671 0061;
+1673 0061;
+1675 0061;
+1596 0061;
+1598 0061;
+159A 0061;
+159C 0061;
+159E 0061;
+15A0 0061;
+15A2 0061;
+15A4 0061;
+15A6 0061;
+15A7 0061;
+15A9 0061;
+15AB 0061;
+15AD 0061;
+15AF 0061;
+15B1 0061;
+15B3 0061;
+15B5 0061;
+15B7 0061;
+15B9 0061;
+15BB 0061;
+15BD 0061;
+15BF 0061;
+15C1 0061;
+15C3 0061;
+15C5 0061;
+15C7 0061;
+15C9 0061;
+15CB 0061;
+15CD 0061;
+15CF 0061;
+15D1 0061;
+15D3 0061;
+15D5 0061;
+15D7 0061;
+15D9 0061;
+15DB 0061;
+15DD 0061;
+15DF 0061;
+15E1 0061;
+15E3 0061;
+15E5 0061;
+15E7 0061;
+15E9 0061;
+15EB 0061;
+15ED 0061;
+15EF 0061;
+15F1 0061;
+15F3 0061;
+15F5 0061;
+15F7 0061;
+15F9 0061;
+15FB 0061;
+15FD 0061;
+15FF 0061;
+1601 0061;
+1603 0061;
+1605 0061;
+1607 0061;
+1609 0061;
+160B 0061;
+160D 0061;
+160F 0061;
+1611 0061;
+1613 0061;
+1615 0061;
+1617 0061;
+1619 0061;
+161B 0061;
+161D 0061;
+161F 0061;
+1621 0061;
+1623 0061;
+1625 0061;
+1627 0061;
+1629 0061;
+162B 0061;
+162D 0061;
+162F 0061;
+1631 0061;
+1633 0061;
+1635 0061;
+1637 0061;
+1639 0061;
+163B 0061;
+163D 0061;
+163F 0061;
+1641 0061;
+1643 0061;
+1645 0061;
+1647 0061;
+1649 0061;
+164B 0061;
+164D 0061;
+164F 0061;
+1651 0061;
+1653 0061;
+1655 0061;
+1657 0061;
+1659 0061;
+165B 0061;
+165D 0061;
+165F 0061;
+1661 0061;
+1663 0061;
+1665 0061;
+1667 0061;
+1669 0061;
+166B 0061;
+1681 0061;
+1683 0061;
+1685 0061;
+1687 0061;
+1689 0061;
+168B 0061;
+168D 0061;
+168F 0061;
+1691 0061;
+1693 0061;
+1695 0061;
+1697 0061;
+1699 0061;
+16A0 003F;
+16A5 0021;
+16A2 0062;
+16A7 0041;
+16AC 0021;
+16A9 0061;
+16AC 0062;
+16B0 0061;
+16B4 0021;
+16B3 0061;
+16B4 0062;
+16B9 003F;
+16BC 0021;
+16BC 0061;
+16C0 0021;
+16BE 0062;
+16C2 0041;
+16C4 0041;
+16C6 0041;
+16C7 0061;
+16D5 0041;
+16EA 0021;
+16CA 0061;
+16CE 0061;
+16D1 0021;
+16CF 0062;
+16D2 0041;
+16D6 0061;
+16D7 0041;
+16EF 0061;
+16DB 0041;
+16DD 0041;
+16DF 0061;
+16AB 0061;
+16E0 0061;
+16B8 0061;
+16E1 0061;
+16E5 0061;
+16E6 0041;
+A500 0061;
+A502 0061;
+A504 0061;
+A506 0061;
+A508 0061;
+A50A 0061;
+A50C 0061;
+A50D 0061;
+A50F 0061;
+A511 0061;
+A513 0061;
+A515 0061;
+A517 0061;
+A519 0061;
+A51B 0061;
+A51D 0061;
+A614 0061;
+A520 0061;
+A522 0061;
+A524 0061;
+A526 0061;
+A528 0061;
+A52A 0061;
+A52C 0061;
+A52E 0061;
+A530 0061;
+A532 0061;
+A615 0061;
+A535 0061;
+A537 0061;
+A539 0061;
+A53B 0061;
+A53D 0061;
+A53F 0061;
+A541 0061;
+A543 0061;
+A545 0061;
+A547 0061;
+A548 0061;
+A54A 0061;
+A54C 0061;
+A54E 0061;
+A550 0061;
+A552 0061;
+A553 0061;
+A555 0061;
+A557 0061;
+A610 0041;
+A559 0061;
+A619 0061;
+A55C 0061;
+A55E 0061;
+A560 0061;
+A561 0061;
+A563 0061;
+A565 0061;
+A567 0061;
+A569 0061;
+A611 0041;
+A56C 0061;
+A56E 003F;
+A56F 0061;
+A571 0061;
+A573 0061;
+A575 0061;
+A577 0061;
+A579 0061;
+A57B 0061;
+A57D 0061;
+A57F 0061;
+A581 0061;
+A583 0061;
+A585 0061;
+A586 0061;
+A612 0041;
+A589 0061;
+A58B 0061;
+A58D 0061;
+A58F 0061;
+A591 0061;
+A593 0061;
+A595 0061;
+A597 0061;
+A599 0061;
+A59B 0061;
+A59D 0061;
+A59F 0061;
+A5A1 0061;
+A5A3 0061;
+A5A5 0061;
+A5A7 0061;
+A5A9 0061;
+A5AB 0061;
+A5AD 0061;
+A5AF 0061;
+A5B1 0061;
+A5B3 0061;
+A61C 0061;
+A5B6 0061;
+A5B8 0061;
+A5BA 0061;
+A5BC 0061;
+A5BE 0061;
+A5C0 0061;
+A5C2 0061;
+A5C4 0061;
+A5C6 0061;
+A5C8 0061;
+A5CA 0061;
+A61D 0061;
+A5CD 0061;
+A5CF 0061;
+A5D1 003F;
+A61E 0061;
+A5D3 0061;
+A5D5 0061;
+A5D7 0061;
+A61F 0061;
+A5DA 0061;
+A5DC 0061;
+A5DE 0061;
+A5E0 0061;
+A5E2 0061;
+A5E4 0061;
+A5E6 0061;
+A5E8 0061;
+A5EA 0061;
+A5EC 0061;
+A5EE 0061;
+A5F0 0061;
+A5F2 0061;
+A5F4 0061;
+A5F6 0061;
+A5F8 0061;
+A5FA 0061;
+A5FC 0061;
+A5FE 0061;
+A600 0061;
+A602 0061;
+A604 0061;
+A606 0061;
+A608 0061;
+A60A 0061;
+A60C 0061;
+FFA1 003F;
+3131 0062;
+1100 0591 1161 0061;
+326E 0062;
+AC00 1175 003F;
+AC01 0041;
+AC03 0041;
+AC05 0041;
+1101 0021;
+FFA2 0061;
+3134 003F;
+FFA4 0041;
+1103 0021;
+3137 0061;
+3270 0021;
+FFA8 003F;
+1105 0021;
+3139 0061;
+3271 0021;
+3141 003F;
+FFB1 0041;
+1107 0021;
+3142 0061;
+3273 0021;
+FFB3 003F;
+1109 0021;
+3145 0061;
+3274 0021;
+FFB6 003F;
+110B 0021;
+3147 0061;
+3275 0021;
+110C 0021;
+3148 0061;
+3276 0021;
+110D 0021;
+FFB9 0061;
+314A 003F;
+FFBA 0041;
+327C 0021;
+314B 003F;
+FFBB 0041;
+1110 0021;
+314C 0061;
+3279 0021;
+314D 003F;
+FFBD 0041;
+1112 0021;
+314E 0061;
+1112 1161 0021;
+327B 0041;
+1112 1175 0062;
+D788 1175 003F;
+D79E 0041;
+D7A0 0041;
+D7A2 0041;
+1113 0041;
+1114 0062;
+1115 0062;
+1117 0041;
+1119 0041;
+3140 0061;
+111B 0041;
+111C 0062;
+111D 0062;
+111E 0062;
+3173 003F;
+1121 003F;
+3144 0062;
+1122 0062;
+1123 0062;
+1125 0041;
+3176 003F;
+1128 0041;
+1129 0062;
+3178 003F;
+3179 003F;
+317A 003F;
+317B 003F;
+317C 003F;
+1130 0041;
+317D 003F;
+1133 0041;
+1135 0041;
+1136 0062;
+1138 0041;
+113A 0041;
+113C 0041;
+113E 0041;
+317F 003F;
+1141 0041;
+1143 0041;
+1145 0041;
+3180 003F;
+1148 0041;
+114A 0041;
+3181 003F;
+114D 0041;
+114F 0041;
+1151 0041;
+1153 0041;
+1155 0041;
+3184 003F;
+3185 003F;
+3186 003F;
+115F 0041;
+3164 0061;
+1161 003F;
+314F 0062;
+3150 0061;
+1163 003F;
+3151 0062;
+3152 0061;
+1165 003F;
+3153 0062;
+3154 0061;
+1167 003F;
+3155 0062;
+3156 0061;
+1169 003F;
+3157 0062;
+3158 0061;
+116B 003F;
+3159 0062;
+315A 0061;
+116D 003F;
+315B 0062;
+315C 0061;
+116F 003F;
+315D 0062;
+315E 0061;
+1171 003F;
+315F 0062;
+3160 0061;
+1173 003F;
+3161 0062;
+3162 0061;
+1175 003F;
+3163 0062;
+1177 0041;
+1179 0041;
+117B 0041;
+117D 0041;
+117F 0041;
+1181 0041;
+1183 0041;
+1184 0062;
+1185 0062;
+1187 0041;
+1188 0062;
+118A 0041;
+118C 0041;
+118E 0041;
+1190 0041;
+1191 0062;
+1192 0062;
+318C 003F;
+1195 0041;
+1197 0041;
+1199 0041;
+119B 0041;
+119D 0041;
+119E 0062;
+11A0 0041;
+11A1 0062;
+11A8 0041;
+11AA 003F;
+3133 0062;
+11AC 003F;
+3135 0062;
+3136 0061;
+11AE 0041;
+11B0 003F;
+313A 0062;
+313B 0061;
+11B2 003F;
+313C 0062;
+313D 0061;
+11B4 003F;
+313E 0062;
+313F 0061;
+11B6 0041;
+11B8 0041;
+11BA 0041;
+11BC 0041;
+11BE 0041;
+11C0 0041;
+11C2 0041;
+11C4 0041;
+11C6 0041;
+11C7 0062;
+11C8 0062;
+11CA 0041;
+3169 003F;
+11CD 0041;
+11CE 0062;
+11D0 0041;
+11D2 0041;
+11D3 0062;
+11D5 0041;
+316C 003F;
+11D8 0041;
+11D9 0062;
+11DB 0041;
+316F 003F;
+11DE 0041;
+11DF 0062;
+11E1 0041;
+11E3 0041;
+11E5 0041;
+11E7 0041;
+11E9 0041;
+11EB 0041;
+11ED 0041;
+11EF 0041;
+3182 003F;
+3183 003F;
+11F3 0041;
+11F5 0041;
+11F7 0041;
+11F9 0041;
+3042 003F;
+3303 0062;
+30A2 0041;
+FF71 0062;
+3301 0041;
+FF68 0021;
+32D1 003F;
+30A4 0041;
+FF72 0062;
+3305 0041;
+30A5 0021;
+FF69 003F;
+30A5 0061;
+3094 0061;
+32D2 0062;
+30A7 0021;
+FF74 003F;
+3048 0041;
+32D3 0041;
+3307 0061;
+3049 003F;
+330A 0041;
+30AA 0061;
+30AA 0062;
+304C 0334;
+304C 0021;
+3095 0061;
+32D5 0061;
+FF76 0062;
+330C 003F;
+330E 003F;
+304D 3099 0334;
+30AE 0021;
+30AD 0041;
+30AD 0062;
+3311 0021;
+3313 0021;
+3315 0021;
+3317 0021;
+30B0 0334;
+30AF 003F;
+30AF 0041;
+31F0 0062;
+3318 0062;
+331A 0062;
+30B1 3099 0334;
+3096 003F;
+331C 0061;
+30B1 0041;
+3051 0062;
+30B3 0334 3099;
+30B3 003F;
+3053 0061;
+30B4 0061;
+30FF 0061;
+3056 0334;
+3055 003F;
+FF7B 0061;
+FF7B 0062;
+3320 003F;
+3057 0021;
+FF7C 003F;
+FF7C 0061;
+30B7 0062;
+3321 0021;
+30BA 0334;
+30B9 003F;
+30B9 0041;
+31F2 0062;
+30BB 3099 0334;
+FF7E 003F;
+32DD 0061;
+305C 0062;
+3323 0041;
+FF7F 0021;
+305D 0061;
+30BE 0061;
+3060 0334;
+305F 003F;
+3324 0062;
+3060 0041;
+3061 3099 0334;
+30C2 0021;
+30C1 0041;
+30C1 0062;
+30C5 0334;
+3063 003F;
+3063 0041;
+FF82 0041;
+FF6F 0062;
+30C6 3099 0334;
+FF83 003F;
+32E2 0061;
+3067 0062;
+30C8 0334 3099;
+3068 003F;
+31F3 0041;
+30C9 0041;
+3326 0061;
+FF85 0021;
+FF85 0061;
+3328 0061;
+32E5 003F;
+30CB 0062;
+30CC 003F;
+FF87 0041;
+FF88 0021;
+FF88 0061;
+FF89 0021;
+FF89 0061;
+3329 0061;
+306F 309A 0334;
+3070 0021;
+30D0 003F;
+332C 0061;
+31F5 0061;
+30D0 0061;
+32E9 0062;
+3072 0334 3099;
+30D2 309A 0334;
+30D4 0021;
+3072 0061;
+3073 0061;
+30D2 0062;
+332E 0041;
+3330 0041;
+30D5 0334 3099;
+31F7 0021;
+30D5 003F;
+31F7 0041;
+30D6 0041;
+3076 0062;
+3333 003F;
+3335 003F;
+3078 0334 309A;
+32EC 0021;
+3079 003F;
+333C 003F;
+FF8D 0061;
+30DA 0061;
+30DA 0062;
+3337 0062;
+3339 0062;
+30DB 3099 0334;
+30DB 0021;
+FF8E 003F;
+3341 0062;
+30DB 0061;
+307D 0061;
+30DC 0062;
+333E 0061;
+3340 0061;
+32EE 003F;
+30DE 0062;
+3344 0061;
+3345 0061;
+3347 0061;
+32EF 003F;
+30DF 0062;
+3349 0061;
+30E0 0021;
+31FA 0061;
+30E0 0062;
+32F1 003F;
+FF92 0061;
+334B 0061;
+FF93 0021;
+FF93 0061;
+30E3 0021;
+FF94 003F;
+334F 0041;
+30E4 0061;
+30E4 0062;
+3085 003F;
+3086 0041;
+32F4 0041;
+3350 0061;
+3087 003F;
+3088 0041;
+32F5 0041;
+309F 0061;
+30E9 003F;
+FF97 0041;
+30EA 0021;
+31FC 0061;
+30EA 0062;
+3352 0061;
+30EB 003F;
+31FD 0061;
+30EB 0062;
+30EC 0021;
+31FE 0061;
+30EC 0062;
+3356 0061;
+30ED 003F;
+FF9B 0041;
+30F7 0334;
+30EE 003F;
+30EE 0041;
+308F 0062;
+3357 0062;
+32FC 003F;
+3090 0062;
+30F9 0021;
+32FD 0041;
+3092 0021;
+3092 0061;
+3092 0062;
+FF9D 003F;
+3105 0021;
+3106 0021;
+3107 0021;
+312A 0021;
+310A 0021;
+310B 0021;
+310D 0021;
+310E 0021;
+312B 0021;
+310F 0021;
+3110 0021;
+3111 0021;
+312C 0021;
+3114 0021;
+3116 0021;
+3117 0041;
+3119 0021;
+311A 0041;
+311B 0041;
+311C 0021;
+31A4 0021;
+311E 0021;
+311F 0021;
+3120 0041;
+3122 0021;
+3124 0021;
+3125 0021;
+31B1 0021;
+3126 0021;
+31B3 003F;
+3128 0021;
+31A8 0061;
+312D 0021;
+A001 0021;
+A003 0021;
+A005 0021;
+A007 0021;
+A009 0021;
+A00B 0021;
+A00D 0021;
+A00F 0021;
+A011 0021;
+A013 0021;
+A015 0021;
+A017 0021;
+A019 0021;
+A01B 0021;
+A01D 0021;
+A01F 0021;
+A021 0021;
+A023 0021;
+A025 0021;
+A027 0021;
+A029 0021;
+A02B 0021;
+A02D 0021;
+A02F 0021;
+A031 0021;
+A033 0021;
+A035 0021;
+A037 0021;
+A039 0021;
+A03B 0021;
+A03D 0021;
+A03F 0021;
+A041 0021;
+A043 0021;
+A045 0021;
+A047 0021;
+A049 0021;
+A04B 0021;
+A04D 0021;
+A04F 0021;
+A051 0021;
+A053 0021;
+A055 0021;
+A057 0021;
+A059 0021;
+A05B 0021;
+A05D 0021;
+A05F 0021;
+A061 0021;
+A063 0021;
+A065 0021;
+A067 0021;
+A069 0021;
+A06B 0021;
+A06D 0021;
+A06F 0021;
+A071 0021;
+A073 0021;
+A075 0021;
+A077 0021;
+A079 0021;
+A07B 0021;
+A07D 0021;
+A07F 0021;
+A081 0021;
+A083 0021;
+A085 0021;
+A087 0021;
+A089 0021;
+A08B 0021;
+A08D 0021;
+A08F 0021;
+A091 0021;
+A093 0021;
+A095 0021;
+A097 0021;
+A099 0021;
+A09B 0021;
+A09D 0021;
+A09F 0021;
+A0A1 0021;
+A0A3 0021;
+A0A5 0021;
+A0A7 0021;
+A0A9 0021;
+A0AB 0021;
+A0AD 0021;
+A0AF 0021;
+A0B1 0021;
+A0B3 0021;
+A0B5 0021;
+A0B7 0021;
+A0B9 0021;
+A0BB 0021;
+A0BD 0021;
+A0BF 0021;
+A0C1 0021;
+A0C3 0021;
+A0C5 0021;
+A0C7 0021;
+A0C9 0021;
+A0CB 0021;
+A0CD 0021;
+A0CF 0021;
+A0D1 0021;
+A0D3 0021;
+A0D5 0021;
+A0D7 0021;
+A0D9 0021;
+A0DB 0021;
+A0DD 0021;
+A0DF 0021;
+A0E1 0021;
+A0E3 0021;
+A0E5 0021;
+A0E7 0021;
+A0E9 0021;
+A0EB 0021;
+A0ED 0021;
+A0EF 0021;
+A0F1 0021;
+A0F3 0021;
+A0F5 0021;
+A0F7 0021;
+A0F9 0021;
+A0FB 0021;
+A0FD 0021;
+A0FF 0021;
+A101 0021;
+A103 0021;
+A105 0021;
+A107 0021;
+A109 0021;
+A10B 0021;
+A10D 0021;
+A10F 0021;
+A111 0021;
+A113 0021;
+A115 0021;
+A117 0021;
+A119 0021;
+A11B 0021;
+A11D 0021;
+A11F 0021;
+A121 0021;
+A123 0021;
+A125 0021;
+A127 0021;
+A129 0021;
+A12B 0021;
+A12D 0021;
+A12F 0021;
+A131 0021;
+A133 0021;
+A135 0021;
+A137 0021;
+A139 0021;
+A13B 0021;
+A13D 0021;
+A13F 0021;
+A141 0021;
+A143 0021;
+A145 0021;
+A147 0021;
+A149 0021;
+A14B 0021;
+A14D 0021;
+A14F 0021;
+A151 0021;
+A153 0021;
+A155 0021;
+A157 0021;
+A159 0021;
+A15B 0021;
+A15D 0021;
+A15F 0021;
+A161 0021;
+A163 0021;
+A165 0021;
+A167 0021;
+A169 0021;
+A16B 0021;
+A16D 0021;
+A16F 0021;
+A171 0021;
+A173 0021;
+A175 0021;
+A177 0021;
+A179 0021;
+A17B 0021;
+A17D 0021;
+A17F 0021;
+A181 0021;
+A183 0021;
+A185 0021;
+A187 0021;
+A189 0021;
+A18B 0021;
+A18D 0021;
+A18F 0021;
+A191 0021;
+A193 0021;
+A195 0021;
+A197 0021;
+A199 0021;
+A19B 0021;
+A19D 0021;
+A19F 0021;
+A1A1 0021;
+A1A3 0021;
+A1A5 0021;
+A1A7 0021;
+A1A9 0021;
+A1AB 0021;
+A1AD 0021;
+A1AF 0021;
+A1B1 0021;
+A1B3 0021;
+A1B5 0021;
+A1B7 0021;
+A1B9 0021;
+A1BB 0021;
+A1BD 0021;
+A1BF 0021;
+A1C1 0021;
+A1C3 0021;
+A1C5 0021;
+A1C7 0021;
+A1C9 0021;
+A1CB 0021;
+A1CD 0021;
+A1CF 0021;
+A1D1 0021;
+A1D3 0021;
+A1D5 0021;
+A1D7 0021;
+A1D9 0021;
+A1DB 0021;
+A1DD 0021;
+A1DF 0021;
+A1E1 0021;
+A1E3 0021;
+A1E5 0021;
+A1E7 0021;
+A1E9 0021;
+A1EB 0021;
+A1ED 0021;
+A1EF 0021;
+A1F1 0021;
+A1F3 0021;
+A1F5 0021;
+A1F7 0021;
+A1F9 0021;
+A1FB 0021;
+A1FD 0021;
+A1FF 0021;
+A201 0021;
+A203 0021;
+A205 0021;
+A207 0021;
+A209 0021;
+A20B 0021;
+A20D 0021;
+A20F 0021;
+A211 0021;
+A213 0021;
+A215 0021;
+A217 0021;
+A219 0021;
+A21B 0021;
+A21D 0021;
+A21F 0021;
+A221 0021;
+A223 0021;
+A225 0021;
+A227 0021;
+A229 0021;
+A22B 0021;
+A22D 0021;
+A22F 0021;
+A231 0021;
+A233 0021;
+A235 0021;
+A237 0021;
+A239 0021;
+A23B 0021;
+A23D 0021;
+A23F 0021;
+A241 0021;
+A243 0021;
+A245 0021;
+A247 0021;
+A249 0021;
+A24B 0021;
+A24D 0021;
+A24F 0021;
+A251 0021;
+A253 0021;
+A255 0021;
+A257 0021;
+A259 0021;
+A25B 0021;
+A25D 0021;
+A25F 0021;
+A261 0021;
+A263 0021;
+A265 0021;
+A267 0021;
+A269 0021;
+A26B 0021;
+A26D 0021;
+A26F 0021;
+A271 0021;
+A273 0021;
+A275 0021;
+A277 0021;
+A279 0021;
+A27B 0021;
+A27D 0021;
+A27F 0021;
+A281 0021;
+A283 0021;
+A285 0021;
+A287 0021;
+A289 0021;
+A28B 0021;
+A28D 0021;
+A28F 0021;
+A291 0021;
+A293 0021;
+A295 0021;
+A297 0021;
+A299 0021;
+A29B 0021;
+A29D 0021;
+A29F 0021;
+A2A1 0021;
+A2A3 0021;
+A2A5 0021;
+A2A7 0021;
+A2A9 0021;
+A2AB 0021;
+A2AD 0021;
+A2AF 0021;
+A2B1 0021;
+A2B3 0021;
+A2B5 0021;
+A2B7 0021;
+A2B9 0021;
+A2BB 0021;
+A2BD 0021;
+A2BF 0021;
+A2C1 0021;
+A2C3 0021;
+A2C5 0021;
+A2C7 0021;
+A2C9 0021;
+A2CB 0021;
+A2CD 0021;
+A2CF 0021;
+A2D1 0021;
+A2D3 0021;
+A2D5 0021;
+A2D7 0021;
+A2D9 0021;
+A2DB 0021;
+A2DD 0021;
+A2DF 0021;
+A2E1 0021;
+A2E3 0021;
+A2E5 0021;
+A2E7 0021;
+A2E9 0021;
+A2EB 0021;
+A2ED 0021;
+A2EF 0021;
+A2F1 0021;
+A2F3 0021;
+A2F5 0021;
+A2F7 0021;
+A2F9 0021;
+A2FB 0021;
+A2FD 0021;
+A2FF 0021;
+A301 0021;
+A303 0021;
+A305 0021;
+A307 0021;
+A309 0021;
+A30B 0021;
+A30D 0021;
+A30F 0021;
+A311 0021;
+A313 0021;
+A315 0021;
+A317 0021;
+A319 0021;
+A31B 0021;
+A31D 0021;
+A31F 0021;
+A321 0021;
+A323 0021;
+A325 0021;
+A327 0021;
+A329 0021;
+A32B 0021;
+A32D 0021;
+A32F 0021;
+A331 0021;
+A333 0021;
+A335 0021;
+A337 0021;
+A339 0021;
+A33B 0021;
+A33D 0021;
+A33F 0021;
+A341 0021;
+A343 0021;
+A345 0021;
+A347 0021;
+A349 0021;
+A34B 0021;
+A34D 0021;
+A34F 0021;
+A351 0021;
+A353 0021;
+A355 0021;
+A357 0021;
+A359 0021;
+A35B 0021;
+A35D 0021;
+A35F 0021;
+A361 0021;
+A363 0021;
+A365 0021;
+A367 0021;
+A369 0021;
+A36B 0021;
+A36D 0021;
+A36F 0021;
+A371 0021;
+A373 0021;
+A375 0021;
+A377 0021;
+A379 0021;
+A37B 0021;
+A37D 0021;
+A37F 0021;
+A381 0021;
+A383 0021;
+A385 0021;
+A387 0021;
+A389 0021;
+A38B 0021;
+A38D 0021;
+A38F 0021;
+A391 0021;
+A393 0021;
+A395 0021;
+A397 0021;
+A399 0021;
+A39B 0021;
+A39D 0021;
+A39F 0021;
+A3A1 0021;
+A3A3 0021;
+A3A5 0021;
+A3A7 0021;
+A3A9 0021;
+A3AB 0021;
+A3AD 0021;
+A3AF 0021;
+A3B1 0021;
+A3B3 0021;
+A3B5 0021;
+A3B7 0021;
+A3B9 0021;
+A3BB 0021;
+A3BD 0021;
+A3BF 0021;
+A3C1 0021;
+A3C3 0021;
+A3C5 0021;
+A3C7 0021;
+A3C9 0021;
+A3CB 0021;
+A3CD 0021;
+A3CF 0021;
+A3D1 0021;
+A3D3 0021;
+A3D5 0021;
+A3D7 0021;
+A3D9 0021;
+A3DB 0021;
+A3DD 0021;
+A3DF 0021;
+A3E1 0021;
+A3E3 0021;
+A3E5 0021;
+A3E7 0021;
+A3E9 0021;
+A3EB 0021;
+A3ED 0021;
+A3EF 0021;
+A3F1 0021;
+A3F3 0021;
+A3F5 0021;
+A3F7 0021;
+A3F9 0021;
+A3FB 0021;
+A3FD 0021;
+A3FF 0021;
+A401 0021;
+A403 0021;
+A405 0021;
+A407 0021;
+A409 0021;
+A40B 0021;
+A40D 0021;
+A40F 0021;
+A411 0021;
+A413 0021;
+A415 0021;
+A417 0021;
+A419 0021;
+A41B 0021;
+A41D 0021;
+A41F 0021;
+A421 0021;
+A423 0021;
+A425 0021;
+A427 0021;
+A429 0021;
+A42B 0021;
+A42D 0021;
+A42F 0021;
+A431 0021;
+A433 0021;
+A435 0021;
+A437 0021;
+A439 0021;
+A43B 0021;
+A43D 0021;
+A43F 0021;
+A441 0021;
+A443 0021;
+A445 0021;
+A447 0021;
+A449 0021;
+A44B 0021;
+A44D 0021;
+A44F 0021;
+A451 0021;
+A453 0021;
+A455 0021;
+A457 0021;
+A459 0021;
+A45B 0021;
+A45D 0021;
+A45F 0021;
+A461 0021;
+A463 0021;
+A465 0021;
+A467 0021;
+A469 0021;
+A46B 0021;
+A46D 0021;
+A46F 0021;
+A471 0021;
+A473 0021;
+A475 0021;
+A477 0021;
+A479 0021;
+A47B 0021;
+A47D 0021;
+A47F 0021;
+A481 0021;
+A483 0021;
+A485 0021;
+A487 0021;
+A489 0021;
+A48B 0021;
+10280 0021;
+10282 0021;
+10284 0021;
+10286 0021;
+10288 0021;
+1028A 0021;
+1028C 0021;
+1028E 0021;
+10290 0021;
+10292 0021;
+10294 0021;
+10296 0021;
+10298 0021;
+1029A 0021;
+1029C 0021;
+102A1 0021;
+102A3 0021;
+102A5 0021;
+102A7 0021;
+102A9 0021;
+102AB 0021;
+102AD 0021;
+102AF 0021;
+102B1 0021;
+102B3 0021;
+102B5 0021;
+102B7 0021;
+102B9 0021;
+102BB 0021;
+102BD 0021;
+102BF 0021;
+102C1 0021;
+102C3 0021;
+102C5 0021;
+102C7 0021;
+102C9 0021;
+102CB 0021;
+102CD 0021;
+102CF 0021;
+10920 0021;
+10922 0021;
+10924 0021;
+10926 0021;
+10928 0021;
+1092A 0021;
+1092C 0021;
+1092E 0021;
+10930 0021;
+10932 0021;
+10934 0021;
+10936 0021;
+10938 0021;
+10300 0021;
+10302 0021;
+10304 0021;
+10306 0021;
+10308 0021;
+1030A 0021;
+1030C 0021;
+1030E 0021;
+10310 0021;
+10312 0021;
+10314 0021;
+10316 0021;
+10318 0021;
+1031A 0021;
+1031C 0021;
+1031E 0021;
+10331 0021;
+10333 0021;
+10335 0021;
+10337 0021;
+10339 0021;
+1033B 0021;
+1033D 0021;
+1033F 0021;
+10341 0021;
+10343 0021;
+10345 0021;
+10347 0021;
+10349 0021;
+10428 0021;
+10429 0021;
+1042A 0021;
+1042B 0021;
+1042C 0021;
+1042D 0021;
+1042E 0021;
+1042F 0021;
+10430 0021;
+10431 0021;
+10432 0021;
+10433 0021;
+10434 0021;
+10435 0021;
+10436 0021;
+10437 0021;
+10438 0021;
+10439 0021;
+1043A 0021;
+1043B 0021;
+1043C 0021;
+1043D 0021;
+1043E 0021;
+1043F 0021;
+10440 0021;
+10441 0021;
+10442 0021;
+10443 0021;
+10444 0021;
+10445 0021;
+10446 0021;
+10447 0021;
+10448 0021;
+10449 0021;
+1044A 0021;
+1044B 0021;
+1044C 0021;
+1044D 0021;
+1044E 0021;
+1044F 0021;
+10450 0021;
+10452 0021;
+10454 0021;
+10456 0021;
+10458 0021;
+1045A 0021;
+1045C 0021;
+1045E 0021;
+10460 0021;
+10462 0021;
+10464 0021;
+10466 0021;
+10468 0021;
+1046A 0021;
+1046C 0021;
+1046E 0021;
+10470 0021;
+10472 0021;
+10474 0021;
+10476 0021;
+10478 0021;
+1047A 0021;
+1047C 0021;
+1047E 0021;
+10480 0021;
+10482 0021;
+10484 0021;
+10486 0021;
+10488 0021;
+1048A 0021;
+1048C 0021;
+1048E 0021;
+10490 0021;
+10492 0021;
+10494 0021;
+10496 0021;
+10498 0021;
+1049A 0021;
+1049C 0021;
+10000 0021;
+10002 0021;
+10004 0021;
+10006 0021;
+10008 0021;
+1000A 0021;
+1000D 0021;
+1000F 0021;
+10011 0021;
+10013 0021;
+10015 0021;
+10017 0021;
+10019 0021;
+1001B 0021;
+1001D 0021;
+1001F 0021;
+10021 0021;
+10023 0021;
+10025 0021;
+10028 0021;
+1002A 0021;
+1002C 0021;
+1002E 0021;
+10030 0021;
+10032 0021;
+10034 0021;
+10036 0021;
+10038 0021;
+1003A 0021;
+1003D 0021;
+10040 0021;
+10042 0021;
+10044 0021;
+10046 0021;
+10048 0021;
+1004A 0021;
+1004C 0021;
+10050 0021;
+10052 0021;
+10054 0021;
+10056 0021;
+10058 0021;
+1005A 0021;
+1005C 0021;
+10080 0021;
+10082 0021;
+10084 0021;
+10086 0021;
+10088 0021;
+1008A 0021;
+1008C 0021;
+1008E 0021;
+10090 0021;
+10092 0021;
+10094 0021;
+10096 0021;
+10098 0021;
+1009A 0021;
+1009C 0021;
+1009E 0021;
+100A0 0021;
+100A2 0021;
+100A4 0021;
+100A6 0021;
+100A8 0021;
+100AA 0021;
+100AC 0021;
+100AE 0021;
+100B0 0021;
+100B2 0021;
+100B4 0021;
+100B6 0021;
+100B8 0021;
+100BA 0021;
+100BC 0021;
+100BE 0021;
+100C0 0021;
+100C2 0021;
+100C4 0021;
+100C6 0021;
+100C8 0021;
+100CA 0021;
+100CC 0021;
+100CE 0021;
+100D0 0021;
+100D2 0021;
+100D4 0021;
+100D6 0021;
+100D8 0021;
+100DA 0021;
+100DC 0021;
+100DE 0021;
+100E0 0021;
+100E2 0021;
+100E4 0021;
+100E6 0021;
+100E8 0021;
+100EA 0021;
+100EC 0021;
+100EE 0021;
+100F0 0021;
+100F2 0021;
+100F4 0021;
+100F6 0021;
+100F8 0021;
+100FA 0021;
+10801 0021;
+10803 0021;
+10805 0021;
+1080A 0021;
+1080C 0021;
+1080E 0021;
+10810 0021;
+10812 0021;
+10814 0021;
+10816 0021;
+10818 0021;
+1081A 0021;
+1081C 0021;
+1081E 0021;
+10820 0021;
+10822 0021;
+10824 0021;
+10826 0021;
+10828 0021;
+1082A 0021;
+1082C 0021;
+1082E 0021;
+10830 0021;
+10832 0021;
+10834 0021;
+10837 0021;
+1083C 0021;
+10380 0021;
+10382 0021;
+10384 0021;
+10386 0021;
+10388 0021;
+1038A 0021;
+1038C 0021;
+1038E 0021;
+10390 0021;
+10392 0021;
+10394 0021;
+10396 0021;
+10398 0021;
+1039A 0021;
+1039C 0021;
+103A0 0021;
+103A2 0021;
+103A4 0021;
+103A6 0021;
+103A8 0021;
+103AA 0021;
+103AC 0021;
+103AE 0021;
+103B0 0021;
+103B2 0021;
+103B4 0021;
+103B6 0021;
+103B8 0021;
+103BA 0021;
+103BC 0021;
+103BE 0021;
+103C0 0021;
+103C2 0021;
+103C8 0021;
+103CA 0021;
+103CC 0021;
+103CE 0021;
+12000 0021;
+12002 0021;
+12004 0021;
+12006 0021;
+12008 0021;
+1200A 0021;
+1200C 0021;
+1200E 0021;
+12010 0021;
+12012 0021;
+12014 0021;
+12016 0021;
+12018 0021;
+1201A 0021;
+1201C 0021;
+1201E 0021;
+12020 0021;
+12022 0021;
+12024 0021;
+12026 0021;
+12028 0021;
+1202A 0021;
+1202C 0021;
+1202E 0021;
+12030 0021;
+12032 0021;
+12034 0021;
+12036 0021;
+12038 0021;
+1203A 0021;
+1203C 0021;
+1203E 0021;
+12040 0021;
+12042 0021;
+12044 0021;
+12046 0021;
+12048 0021;
+1204A 0021;
+1204C 0021;
+1204E 0021;
+12050 0021;
+12052 0021;
+12054 0021;
+12056 0021;
+12058 0021;
+1205A 0021;
+1205C 0021;
+1205E 0021;
+12060 0021;
+12062 0021;
+12064 0021;
+12066 0021;
+12068 0021;
+1206A 0021;
+1206C 0021;
+1206E 0021;
+12070 0021;
+12072 0021;
+12074 0021;
+12076 0021;
+12078 0021;
+1207A 0021;
+1207C 0021;
+1207E 0021;
+12080 0021;
+12082 0021;
+12084 0021;
+12086 0021;
+12088 0021;
+1208A 0021;
+1208C 0021;
+1208E 0021;
+12090 0021;
+12092 0021;
+12094 0021;
+12096 0021;
+12098 0021;
+1209A 0021;
+1209C 0021;
+1209E 0021;
+120A0 0021;
+120A2 0021;
+120A4 0021;
+120A6 0021;
+120A8 0021;
+120AA 0021;
+120AC 0021;
+120AE 0021;
+120B0 0021;
+120B2 0021;
+120B4 0021;
+120B6 0021;
+120B8 0021;
+120BA 0021;
+120BC 0021;
+120BE 0021;
+120C0 0021;
+120C2 0021;
+120C4 0021;
+120C6 0021;
+120C8 0021;
+120CA 0021;
+120CC 0021;
+120CE 0021;
+120D0 0021;
+120D2 0021;
+120D4 0021;
+120D6 0021;
+120D8 0021;
+120DA 0021;
+120DC 0021;
+120DE 0021;
+120E0 0021;
+120E2 0021;
+120E4 0021;
+120E6 0021;
+120E8 0021;
+120EA 0021;
+120EC 0021;
+120EE 0021;
+120F0 0021;
+120F2 0021;
+120F4 0021;
+120F6 0021;
+120F8 0021;
+120FA 0021;
+120FC 0021;
+120FE 0021;
+12100 0021;
+12102 0021;
+12104 0021;
+12106 0021;
+12108 0021;
+1210A 0021;
+1210C 0021;
+1210E 0021;
+12110 0021;
+12112 0021;
+12114 0021;
+12116 0021;
+12118 0021;
+1211A 0021;
+1211C 0021;
+1211E 0021;
+12120 0021;
+12122 0021;
+12124 0021;
+12126 0021;
+12128 0021;
+1212A 0021;
+1212C 0021;
+1212E 0021;
+12130 0021;
+12132 0021;
+12134 0021;
+12136 0021;
+12138 0021;
+1213A 0021;
+1213C 0021;
+1213E 0021;
+12140 0021;
+12142 0021;
+12144 0021;
+12146 0021;
+12148 0021;
+1214A 0021;
+1214C 0021;
+1214E 0021;
+12150 0021;
+12152 0021;
+12154 0021;
+12156 0021;
+12158 0021;
+1215A 0021;
+1215C 0021;
+1215E 0021;
+12160 0021;
+12162 0021;
+12164 0021;
+12166 0021;
+12168 0021;
+1216A 0021;
+1216C 0021;
+1216E 0021;
+12170 0021;
+12172 0021;
+12174 0021;
+12176 0021;
+12178 0021;
+1217A 0021;
+1217C 0021;
+1217E 0021;
+12180 0021;
+12182 0021;
+12184 0021;
+12186 0021;
+12188 0021;
+1218A 0021;
+1218C 0021;
+1218E 0021;
+12190 0021;
+12192 0021;
+12194 0021;
+12196 0021;
+12198 0021;
+1219A 0021;
+1219C 0021;
+1219E 0021;
+121A0 0021;
+121A2 0021;
+121A4 0021;
+121A6 0021;
+121A8 0021;
+121AA 0021;
+121AC 0021;
+121AE 0021;
+121B0 0021;
+121B2 0021;
+121B4 0021;
+121B6 0021;
+121B8 0021;
+121BA 0021;
+121BC 0021;
+121BE 0021;
+121C0 0021;
+121C2 0021;
+121C4 0021;
+121C6 0021;
+121C8 0021;
+121CA 0021;
+121CC 0021;
+121CE 0021;
+121D0 0021;
+121D2 0021;
+121D4 0021;
+121D6 0021;
+121D8 0021;
+121DA 0021;
+121DC 0021;
+121DE 0021;
+121E0 0021;
+121E2 0021;
+121E4 0021;
+121E6 0021;
+121E8 0021;
+121EA 0021;
+121EC 0021;
+121EE 0021;
+121F0 0021;
+121F2 0021;
+121F4 0021;
+121F6 0021;
+121F8 0021;
+121FA 0021;
+121FC 0021;
+121FE 0021;
+12200 0021;
+12202 0021;
+12204 0021;
+12206 0021;
+12208 0021;
+1220A 0021;
+1220C 0021;
+1220E 0021;
+12210 0021;
+12212 0021;
+12214 0021;
+12216 0021;
+12218 0021;
+1221A 0021;
+1221C 0021;
+1221E 0021;
+12220 0021;
+12222 0021;
+12224 0021;
+12226 0021;
+12228 0021;
+1222A 0021;
+1222C 0021;
+1222E 0021;
+12230 0021;
+12232 0021;
+12234 0021;
+12236 0021;
+12238 0021;
+1223A 0021;
+1223C 0021;
+1223E 0021;
+12240 0021;
+12242 0021;
+12244 0021;
+12246 0021;
+12248 0021;
+1224A 0021;
+1224C 0021;
+1224E 0021;
+12250 0021;
+12252 0021;
+12254 0021;
+12256 0021;
+12258 0021;
+1225A 0021;
+1225C 0021;
+1225E 0021;
+12260 0021;
+12262 0021;
+12264 0021;
+12266 0021;
+12268 0021;
+1226A 0021;
+1226C 0021;
+1226E 0021;
+12270 0021;
+12272 0021;
+12274 0021;
+12276 0021;
+12278 0021;
+1227A 0021;
+1227C 0021;
+1227E 0021;
+12280 0021;
+12282 0021;
+12284 0021;
+12286 0021;
+12288 0021;
+1228A 0021;
+1228C 0021;
+1228E 0021;
+12290 0021;
+12292 0021;
+12294 0021;
+12296 0021;
+12298 0021;
+1229A 0021;
+1229C 0021;
+1229E 0021;
+122A0 0021;
+122A2 0021;
+122A4 0021;
+122A6 0021;
+122A8 0021;
+122AA 0021;
+122AC 0021;
+122AE 0021;
+122B0 0021;
+122B2 0021;
+122B4 0021;
+122B6 0021;
+122B8 0021;
+122BA 0021;
+122BC 0021;
+122BE 0021;
+122C0 0021;
+122C2 0021;
+122C4 0021;
+122C6 0021;
+122C8 0021;
+122CA 0021;
+122CC 0021;
+122CE 0021;
+122D0 0021;
+122D2 0021;
+122D4 0021;
+122D6 0021;
+122D8 0021;
+122DA 0021;
+122DC 0021;
+122DE 0021;
+122E0 0021;
+122E2 0021;
+122E4 0021;
+122E6 0021;
+122E8 0021;
+122EA 0021;
+122EC 0021;
+122EE 0021;
+122F0 0021;
+122F2 0021;
+122F4 0021;
+122F6 0021;
+122F8 0021;
+122FA 0021;
+122FC 0021;
+122FE 0021;
+12300 0021;
+12302 0021;
+12304 0021;
+12306 0021;
+12308 0021;
+1230A 0021;
+1230C 0021;
+1230E 0021;
+12310 0021;
+12312 0021;
+12314 0021;
+12316 0021;
+12318 0021;
+1231A 0021;
+1231C 0021;
+1231E 0021;
+12320 0021;
+12322 0021;
+12324 0021;
+12326 0021;
+12328 0021;
+1232A 0021;
+1232C 0021;
+1232E 0021;
+12330 0021;
+12332 0021;
+12334 0021;
+12336 0021;
+12338 0021;
+1233A 0021;
+1233C 0021;
+1233E 0021;
+12340 0021;
+12342 0021;
+12344 0021;
+12346 0021;
+12348 0021;
+1234A 0021;
+1234C 0021;
+1234E 0021;
+12350 0021;
+12352 0021;
+12354 0021;
+12356 0021;
+12358 0021;
+1235A 0021;
+1235C 0021;
+1235E 0021;
+12360 0021;
+12362 0021;
+12364 0021;
+12366 0021;
+12368 0021;
+1236A 0021;
+1236C 0021;
+1236E 0021;
+2F00 003F;
+3192 0041;
+4E01 0041;
+4E03 0021;
+4E04 0021;
+3282 0021;
+32A4 0021;
+32A6 0021;
+F967 0021;
+FA70 0021;
+2EA6 0021;
+32A5 0041;
+2F02 0021;
+2F801 0021;
+2F800 0021;
+2F802 0021;
+2E84 003F;
+2E83 0021;
+3288 0021;
+2F05 0021;
+2F06 0021;
+3193 0061;
+2F07 0021;
+2F08 0021;
+2E85 0021;
+2F819 0021;
+32AD 0021;
+2F804 0021;
+F92D 0021;
+FA30 0021;
+2F806 0021;
+2F807 0021;
+2F808 0021;
+2F80B 0021;
+FA31 0021;
+329D 0021;
+FA0C 0021;
+FA32 0021;
+2F80F 0021;
+2F0A 0021;
+FA72 0021;
+2F0B 0021;
+F9D1 0021;
+2F811 0021;
+2F0C 0021;
+2F815 0021;
+2F8D3 0021;
+2F817 0021;
+2F818 0021;
+2F81A 0021;
+2F81B 0061;
+F979 0021;
+F954 0021;
+2F0F 0021;
+2F81D 0021;
+2F11 0021;
+2E89 0021;
+FA00 0021;
+F99C 0021;
+F9FF 0021;
+2F821 0021;
+2F823 0021;
+F98A 0021;
+F99D 0021;
+3298 0021;
+2F825 0061;
+2F826 0061;
+F92F 0021;
+2F827 0061;
+2F13 0021;
+2F828 0061;
+2F82A 0021;
+F963 0021;
+2F15 0021;
+32A9 0021;
+2F17 0021;
+3289 0061;
+303A 0021;
+FA35 0021;
+32AF 0021;
+2F18 0021;
+2F19 0021;
+329E 0021;
+F91C 0021;
+2F831 0021;
+2F832 0041;
+2F1A 0041;
+F96B 0021;
+2F836 0021;
+2F1D 0021;
+2F839 0021;
+32A8 0021;
+3294 0021;
+F9ED 0021;
+F980 0021;
+2F83F 0021;
+2F840 0021;
+2F841 0021;
+2F843 0021;
+2F844 0021;
+2F846 0061;
+FA7A 0021;
+FA36 0021;
+2F848 0021;
+FA0D 0021;
+FA7B 0021;
+2F84C 0061;
+FA38 0021;
+2F1E 0021;
+3283 0041;
+2F84B 0021;
+2F1F 0021;
+319E 0021;
+2F852 0021;
+2F854 0021;
+2F856 0021;
+FA10 0021;
+F96C 0021;
+2F858 0021;
+F94A 0021;
+2F20 0021;
+2F85A 0021;
+2F21 0021;
+2F22 0021;
+2F85D 0021;
+2F85E 0021;
+337D 0021;
+FA7E 0021;
+F909 0021;
+2F85F 0021;
+329B 003F;
+2F865 0021;
+2F863 0021;
+FA80 0021;
+2F986 0021;
+FA81 0021;
+2F86B 0061;
+32AB 0021;
+FA04 0021;
+2F86D 0021;
+F95F 0021;
+F9AA 0041;
+2F870 0021;
+2F872 0021;
+2F29 0021;
+2E8D 0061;
+2E90 003F;
+2E8E 0041;
+2E8F 0041;
+F9BD 0021;
+F94B 0021;
+F9DF 0021;
+2F2C 003F;
+2F2D 0021;
+2F879 0021;
+2F87C 0021;
+2F87F 0021;
+2F880 0021;
+F9AB 0021;
+2F881 0021;
+2F2F 0021;
+2F30 0021;
+2F884 0021;
+2F885 0021;
+2F887 0021;
+337B 0021;
+2E93 0021;
+2F34 0021;
+2F88B 0021;
+2F88D 0021;
+F928 0021;
+FA82 0021;
+FA83 0021;
+2F35 0021;
+2F890 0041;
+2F37 0021;
+2F894 0021;
+2F39 0021;
+2E94 0021;
+2F3A 0021;
+FA84 0021;
+2F3B 0021;
+2F89C 0021;
+FA85 0021;
+2F3C 0041;
+2F89D 0021;
+F9A3 0021;
+F960 0021;
+2F8A0 0021;
+2F8A3 0061;
+FA86 0021;
+FA88 0021;
+2F8A6 0021;
+2F8A9 0061;
+2F8A8 0061;
+FA3E 0021;
+FA3F 0021;
+FA89 0041;
+2F8AD 0021;
+2F8AC 0021;
+FA40 0021;
+FA8B 0041;
+2F8B1 0061;
+2F3D 0021;
+2F8B3 0021;
+FA8C 0021;
+2F3F 0021;
+2F8B4 0021;
+F925 0021;
+FA02 0021;
+2F8BA 0021;
+2F8B9 0021;
+2F8BB 0021;
+2F8BC 0021;
+2F8C1 0021;
+2F8C0 0021;
+FA8E 0021;
+FA8F 0021;
+2F8C6 0021;
+F991 0021;
+F930 0021;
+2F41 0021;
+FA41 0021;
+FA90 0021;
+F969 0021;
+2F43 0021;
+2F44 0021;
+F983 0021;
+2E9B 0021;
+2F8CB 0021;
+2E9C 003F;
+337E 0021;
+337C 0021;
+FA12 0021;
+F9C5 0021;
+2F8CF 0061;
+FA06 0021;
+2F48 0021;
+2F8CC 0021;
+2F49 0021;
+2E9D 0061;
+F929 0021;
+FA92 0041;
+2F8D9 0061;
+2F4A 0021;
+F9E1 0021;
+FA94 0021;
+F9C8 0021;
+F9F4 0021;
+2F8DF 0021;
+2F8E5 0021;
+337F 0021;
+F97A 0021;
+2F8E2 0061;
+F9E2 0021;
+2F8E8 0021;
+2F8EA 0021;
+F9BF 003F;
+F94C 0021;
+F931 0021;
+F91D 0021;
+2F8EF 0021;
+2F4C 0021;
+2F8F3 0021;
+FA95 0021;
+2E9E 0021;
+F9A5 0021;
+F970 0021;
+FA96 0041;
+2F4F 0021;
+2F50 0021;
+2F52 0021;
+2F53 0021;
+2F54 0041;
+2EA2 0021;
+2F8FE 0021;
+2F8FC 0021;
+2F8FD 0021;
+329F 0021;
+F915 0021;
+2F907 0021;
+F9CA 0021;
+FA97 0041;
+F92A 0021;
+2F901 0061;
+2F905 0021;
+F94D 0021;
+2F90E 0021;
+2F908 0021;
+F9CB 0021;
+2F90C 0021;
+2F90B 0061;
+FA98 0021;
+FA47 0021;
+F992 0021;
+2F912 0021;
+F984 0021;
+FA9B 0021;
+2F913 0021;
+2F55 0021;
+2EA3 0021;
+2F919 0021;
+F9FB 0021;
+F99F 0021;
+2F91C 0021;
+FA48 0021;
+2F91E 0021;
+F9EE 0021;
+F91E 0021;
+2F56 0021;
+2EA5 003F;
+FA9E 0021;
+2F57 0021;
+2F59 0021;
+2F922 0021;
+2F5C 0021;
+F946 0021;
+2F924 0021;
+2F5D 0021;
+FA9F 0021;
+F92B 0021;
+FAA0 0061;
+2F928 0021;
+F961 0021;
+2F5F 0021;
+2F929 0041;
+F9AD 0021;
+F9E4 0021;
+FA4A 0021;
+2F92F 0021;
+FAA1 0021;
+2F931 0021;
+F9EF 0021;
+2F60 0021;
+FAA2 0021;
+2F63 0021;
+2F64 0021;
+3199 0021;
+FAA3 0021;
+F9CD 0021;
+F962 0021;
+2F66 0021;
+2F67 0021;
+2F93A 0021;
+FAA5 0021;
+F90E 0021;
+2F69 0021;
+2F6B 0021;
+FAA6 0061;
+32AC 0021;
+2F6C 0021;
+FAA8 0021;
+F96D 0021;
+2F946 0021;
+FAAA 0021;
+2F948 0061;
+FA9D 0021;
+2F6E 0021;
+2F94E 0021;
+F93B 0021;
+FA4B 0021;
+FAAB 0021;
+F964 0021;
+2F70 0021;
+2EAD 0021;
+FA4C 0021;
+FA4E 0021;
+FA4F 0021;
+2F953 0061;
+FA51 0041;
+FA1A 0021;
+FA52 0021;
+FA1B 0021;
+F9B6 0021;
+2F72 0021;
+3299 0021;
+F956 0021;
+2F959 0061;
+2F95B 0021;
+FA55 0021;
+F9F7 0021;
+2F95F 0021;
+2F75 0041;
+FA56 0021;
+2F962 0021;
+F9A6 0021;
+2F76 0021;
+F9F9 0021;
+2F966 0021;
+2F969 0021;
+2F968 0021;
+2EAF 0021;
+F9CF 0021;
+F94F 0021;
+2F96C 0021;
+F957 0021;
+F996 0021;
+FA57 0041;
+FA58 0021;
+FA59 0021;
+2EB0 0021;
+FAB1 0021;
+2EB2 0021;
+2EB1 0021;
+2EB4 0061;
+F9E6 0021;
+F90F 0021;
+2EB7 003F;
+2EB8 0021;
+F9AF 0021;
+FA1E 0041;
+F934 0021;
+2EB9 0021;
+2F97A 003F;
+2F7D 0021;
+2F7F 0021;
+2F97D 0021;
+2F97F 0021;
+2F80 0021;
+2EBA 0021;
+2F81 0041;
+2F8D6 0021;
+2F983 0021;
+F926 0021;
+F9F6 0021;
+FA5C 0021;
+2F85 0021;
+2F893 0021;
+2F98C 0021;
+2F87 0021;
+2F89 0021;
+2F8A 0021;
+FA5D 0021;
+FA5D 0061;
+FA5D 0062;
+2F98F 0021;
+2F993 0021;
+2F995 0021;
+2F998 0061;
+2F999 0021;
+F9FE 0021;
+2F9A0 0021;
+2F99B 0021;
+F93E 0021;
+2F9A2 0021;
+2F99E 0021;
+F958 0021;
+F96E 0021;
+2F99F 0061;
+2F9A8 0021;
+F9C2 0021;
+2F9AC 0021;
+F9F0 0021;
+FA20 0021;
+F910 0021;
+2EC1 0021;
+F936 0021;
+2F9B5 0021;
+2F8D 0021;
+2F9B7 0021;
+2F9B9 0021;
+2F9BD 0021;
+2F9BB 0061;
+F911 0021;
+2F9C1 0021;
+2F8E 0021;
+FA08 0041;
+2F9C4 0021;
+2EC2 0021;
+F9E7 0021;
+2F9C7 0021;
+F912 0021;
+FA60 0021;
+F924 0021;
+2EC4 0021;
+FAB7 0021;
+FA0A 0041;
+FAB8 0061;
+2EC6 0021;
+2EC7 0061;
+2F9CF 0021;
+F9A1 0061;
+FABB 0021;
+F941 0021;
+2F9D0 0061;
+FABA 0061;
+FABD 0061;
+FABC 0061;
+FABF 0061;
+F95A 0021;
+2F9D1 0061;
+2F95 0021;
+F900 0021;
+2F9D2 0041;
+2F99 0021;
+2F9D4 0021;
+F948 0021;
+F903 0021;
+FA65 0021;
+2F9D6 0021;
+2F9A 0021;
+2F9D7 0021;
+2F9C 0041;
+2F9DA 0021;
+2F9DC 0021;
+F902 0021;
+2F9DE 0021;
+F9D7 0021;
+2F9DF 0061;
+F98D 0021;
+2F9F 0021;
+F971 0021;
+2FA1 0021;
+2ECC 003F;
+2ECE 0041;
+FA25 0021;
+329C 0021;
+F9C3 0021;
+2FA2 0021;
+2F9E2 0021;
+2F9E3 0021;
+2F9E4 0021;
+2FA3 0021;
+FAC4 0021;
+2FA4 0021;
+F9E9 0041;
+F90A 0021;
+328E 0061;
+2F9E7 0021;
+2F9EA 0021;
+2F9E9 0021;
+F99B 0021;
+2F9EC 0021;
+2ED1 0021;
+2ED2 0021;
+2FA8 0021;
+F986 0021;
+2ED4 0021;
+2FA9 0041;
+F9C6 0021;
+FA09 0021;
+F9D3 0021;
+F9DC 0021;
+2FAA 0021;
+2FAB 0021;
+F9EA 0021;
+FAC7 0061;
+2FAC 0041;
+F949 0021;
+F938 0021;
+2FAD 0021;
+FA1C 0021;
+2FAE 0021;
+2FB0 0021;
+FAC9 0021;
+2ED9 0021;
+2FB3 0021;
+FACA 0061;
+32A0 0021;
+2F9FF 003F;
+F9B4 0021;
+FA6A 0021;
+F9D0 0021;
+2FB5 0021;
+2FB6 0021;
+2EDD 0021;
+2EDF 0021;
+2FA02 0021;
+FA2B 0021;
+2FA04 0021;
+2FB8 0021;
+2FB9 0021;
+2FBA 0021;
+F91A 0021;
+F987 0021;
+2FBB 0021;
+2FBC 0021;
+FACD 0021;
+2FBE 0021;
+2FC0 0021;
+2FC1 0041;
+F939 0021;
+F9F2 0021;
+2FC3 0021;
+2FA0F 0021;
+F93A 0021;
+2EE6 0021;
+2FC4 0041;
+F940 0041;
+F9F3 0021;
+2EE8 0021;
+2FA15 0041;
+2EE9 0021;
+F989 0021;
+2FA17 0021;
+2FCC 0021;
+2FA18 0041;
+2FCD 0021;
+2FCE 0021;
+2FCF 0021;
+2FA1C 0041;
+2FD1 0021;
+2EEC 0021;
+2FD2 0041;
+F9C4 0021;
+2EEF 0061;
+2EF0 0021;
+2EF2 0021;
+F907 0041;
+F908 0062;
+9FA0 0021;
+9FA1 0021;
+9FA3 0021;
+9FA5 0021;
+FA0F 0021;
+FA13 0021;
+FA1F 0021;
+FA23 0021;
+FA27 0021;
+FA29 0021;
+3401 0021;
+3403 0021;
+3405 0021;
+3407 0021;
+3409 0021;
+340B 0021;
+340D 0021;
+340F 0021;
+3411 0021;
+3413 0021;
+3415 0021;
+3417 0021;
+3419 0021;
+341B 0021;
+341D 0021;
+341F 0021;
+3421 0021;
+3423 0021;
+3425 0021;
+3427 0021;
+3429 0021;
+342B 0021;
+342D 0021;
+342F 0021;
+3431 0021;
+3433 0021;
+3435 0021;
+3437 0021;
+3439 0021;
+343B 0021;
+343D 0021;
+343F 0021;
+3441 0021;
+3443 0021;
+3445 0021;
+3447 0021;
+3449 0021;
+344B 0021;
+344D 0021;
+344F 0021;
+3451 0021;
+3453 0021;
+3455 0021;
+3457 0021;
+3459 0021;
+345B 0021;
+345D 0021;
+345F 0021;
+3461 0021;
+3463 0021;
+3465 0021;
+3467 0021;
+3469 0021;
+346B 0021;
+346D 0021;
+346F 0021;
+3471 0021;
+3473 0021;
+3475 0021;
+3477 0021;
+3479 0021;
+347B 0021;
+347D 0021;
+347F 0021;
+3481 0021;
+3483 0021;
+3485 0021;
+3487 0021;
+3489 0021;
+348B 0021;
+348D 0021;
+348F 0021;
+3491 0021;
+3493 0021;
+3495 0021;
+3497 0021;
+3499 0021;
+349B 0021;
+349D 0021;
+2F80C 0061;
+34A0 0021;
+34A2 0021;
+34A4 0021;
+34A6 0021;
+34A8 0021;
+34AA 0021;
+34AC 0021;
+34AE 0021;
+34B0 0021;
+34B2 0021;
+34B4 0021;
+34B6 0021;
+34B8 0021;
+2F813 0061;
+34BB 0021;
+34BC 0021;
+34BE 0021;
+34C0 0021;
+34C2 0021;
+34C4 0021;
+34C6 0021;
+34C8 0021;
+34CA 0021;
+34CC 0021;
+34CE 0021;
+34D0 0021;
+34D2 0021;
+34D4 0021;
+34D6 0021;
+34D8 0021;
+34DA 0021;
+34DC 0021;
+34DE 0021;
+2F81F 0061;
+34E1 0021;
+34E3 0021;
+34E5 0021;
+34E7 0021;
+34E9 0021;
+34EB 0021;
+34ED 0021;
+34EF 0021;
+34F1 0021;
+34F3 0021;
+34F5 0021;
+34F7 0021;
+34F9 0021;
+34FB 0021;
+34FD 0021;
+34FF 0021;
+3501 0021;
+3503 0021;
+3505 0021;
+3507 0021;
+3509 0021;
+350B 0021;
+350D 0021;
+350F 0021;
+3511 0021;
+3513 0021;
+3515 0021;
+3516 0021;
+3518 0021;
+351A 0021;
+351C 0021;
+351E 0021;
+3520 0021;
+3522 0021;
+3524 0021;
+3526 0021;
+3528 0021;
+352A 0021;
+352C 0021;
+352E 0021;
+3530 0021;
+3532 0021;
+3534 0021;
+3536 0021;
+3538 0021;
+353A 0021;
+353C 0021;
+353E 0021;
+3540 0021;
+3542 0021;
+3544 0021;
+3546 0021;
+3548 0021;
+354A 0021;
+354C 0021;
+354E 0021;
+3550 0021;
+3552 0021;
+3554 0021;
+3556 0021;
+3558 0021;
+355A 0021;
+355C 0021;
+355E 0021;
+3560 0021;
+3562 0021;
+3564 0021;
+3566 0021;
+3568 0021;
+356A 0021;
+356C 0021;
+356E 0021;
+3570 0021;
+3572 0021;
+3574 0021;
+3576 0021;
+3578 0021;
+357A 0021;
+357C 0021;
+357E 0021;
+3580 0021;
+3582 0021;
+3584 0021;
+3586 0021;
+3588 0021;
+358A 0021;
+358C 0021;
+358E 0021;
+3590 0021;
+3592 0021;
+3594 0021;
+3596 0021;
+3598 0021;
+359A 0021;
+359C 0021;
+359E 0021;
+35A0 0021;
+35A2 0021;
+35A4 0021;
+35A6 0021;
+35A8 0021;
+35AA 0021;
+35AC 0021;
+35AE 0021;
+35B0 0021;
+35B2 0021;
+35B4 0021;
+35B6 0021;
+35B8 0021;
+35BA 0021;
+35BC 0021;
+35BE 0021;
+35C0 0021;
+35C2 0021;
+35C4 0021;
+35C6 0021;
+35C8 0021;
+35CA 0021;
+35CC 0021;
+35CE 0021;
+35D0 0021;
+35D2 0021;
+35D4 0021;
+35D6 0021;
+35D8 0021;
+35DA 0021;
+35DC 0021;
+35DE 0021;
+35E0 0021;
+35E2 0021;
+35E4 0021;
+35E6 0021;
+35E8 0021;
+35EA 0021;
+35EC 0021;
+35EE 0021;
+35F0 0021;
+35F2 0021;
+35F4 0021;
+35F6 0021;
+35F8 0021;
+35FA 0021;
+35FC 0021;
+35FE 0021;
+3600 0021;
+3602 0021;
+3604 0021;
+3606 0021;
+3608 0021;
+360A 0021;
+360C 0021;
+360E 0021;
+3610 0021;
+3612 0021;
+3614 0021;
+3616 0021;
+3618 0021;
+361A 0021;
+361C 0021;
+361E 0021;
+3620 0021;
+3622 0021;
+3624 0021;
+3626 0021;
+3628 0021;
+362A 0021;
+362C 0021;
+362E 0021;
+3630 0021;
+3632 0021;
+3634 0021;
+3636 0021;
+3638 0021;
+363A 0021;
+363C 0021;
+363E 0021;
+3640 0021;
+3642 0021;
+3644 0021;
+3646 0021;
+3648 0021;
+364A 0021;
+364C 0021;
+364E 0021;
+3650 0021;
+3652 0021;
+3654 0021;
+3656 0021;
+3658 0021;
+365A 0021;
+365C 0021;
+365E 0021;
+3660 0021;
+3662 0021;
+3664 0021;
+3666 0021;
+3668 0021;
+366A 0021;
+366C 0021;
+366E 0021;
+3670 0021;
+3672 0021;
+3674 0021;
+3676 0021;
+3678 0021;
+367A 0021;
+367C 0021;
+367E 0021;
+3680 0021;
+3682 0021;
+3684 0021;
+3686 0021;
+3688 0021;
+368A 0021;
+368C 0021;
+368E 0021;
+3690 0021;
+3692 0021;
+3694 0021;
+3696 0021;
+3698 0021;
+369A 0021;
+369C 0021;
+369E 0021;
+36A0 0021;
+36A2 0021;
+36A4 0021;
+36A6 0021;
+36A8 0021;
+36AA 0021;
+36AC 0021;
+36AE 0021;
+36B0 0021;
+36B2 0021;
+36B4 0021;
+36B6 0021;
+36B8 0021;
+36BA 0021;
+36BC 0021;
+36BE 0021;
+36C0 0021;
+36C2 0021;
+36C4 0021;
+36C6 0021;
+36C8 0021;
+36CA 0021;
+36CC 0021;
+36CE 0021;
+36D0 0021;
+36D2 0021;
+36D4 0021;
+36D6 0021;
+36D8 0021;
+36DA 0021;
+36DC 0021;
+36DE 0021;
+36E0 0021;
+36E2 0021;
+36E4 0021;
+36E6 0021;
+36E8 0021;
+36EA 0021;
+36EC 0021;
+36EE 0021;
+36EF 0021;
+36F1 0021;
+36F3 0021;
+36F5 0021;
+36F7 0021;
+36F9 0021;
+36FB 0021;
+2F868 0061;
+36FE 0021;
+3700 0021;
+3702 0021;
+3704 0021;
+3706 0021;
+3708 0021;
+370A 0021;
+370C 0021;
+370E 0021;
+3710 0021;
+3712 0021;
+3714 0021;
+3716 0021;
+3718 0021;
+371A 0021;
+371C 0021;
+371E 0021;
+3720 0021;
+3722 0021;
+3724 0021;
+3726 0021;
+3728 0021;
+372A 0021;
+372C 0021;
+372E 0021;
+3730 0021;
+3732 0021;
+3734 0021;
+3736 0021;
+3738 0021;
+373A 0021;
+373C 0021;
+373E 0021;
+3740 0021;
+3742 0021;
+3744 0021;
+3746 0021;
+3748 0021;
+374A 0021;
+374C 0021;
+374E 0021;
+3750 0021;
+3752 0021;
+3754 0021;
+3756 0021;
+3758 0021;
+375A 0021;
+375C 0021;
+375E 0021;
+3760 0021;
+3762 0021;
+3764 0021;
+3766 0021;
+3768 0021;
+376A 0021;
+376C 0021;
+376E 0021;
+3770 0021;
+3772 0021;
+3774 0021;
+3776 0021;
+3778 0021;
+377A 0021;
+377C 0021;
+377E 0021;
+3780 0021;
+2F876 0061;
+3783 0021;
+3785 0021;
+3787 0021;
+3789 0021;
+378B 0021;
+378D 0021;
+378F 0021;
+3791 0021;
+3793 0021;
+3795 0021;
+3797 0021;
+3799 0021;
+379B 0021;
+379D 0021;
+379F 0021;
+37A1 0021;
+37A3 0021;
+37A5 0021;
+37A7 0021;
+37A9 0021;
+37AB 0021;
+37AD 0021;
+37AF 0021;
+37B1 0021;
+37B3 0021;
+37B5 0021;
+37B7 0021;
+37B9 0021;
+37BB 0021;
+37BD 0021;
+37BF 0021;
+37C1 0021;
+37C3 0021;
+37C5 0021;
+37C7 0021;
+37C9 0021;
+37CB 0021;
+37CD 0021;
+37CF 0021;
+37D1 0021;
+37D3 0021;
+37D5 0021;
+37D7 0021;
+37D9 0021;
+37DB 0021;
+37DD 0021;
+37DF 0021;
+37E1 0021;
+37E3 0021;
+37E5 0021;
+37E7 0021;
+37E9 0021;
+37EB 0021;
+37ED 0021;
+37EF 0021;
+37F1 0021;
+37F3 0021;
+37F5 0021;
+37F7 0021;
+37F9 0021;
+37FB 0021;
+37FD 0021;
+37FF 0021;
+3801 0021;
+3803 0021;
+3805 0021;
+3807 0021;
+3809 0021;
+380B 0021;
+380D 0021;
+380F 0021;
+3811 0021;
+3813 0021;
+3815 0021;
+3817 0021;
+3819 0021;
+381B 0021;
+381D 0021;
+381F 0021;
+3821 0021;
+3823 0021;
+3825 0021;
+3827 0021;
+3829 0021;
+382B 0021;
+382D 0021;
+382F 0021;
+3830 0021;
+3832 0021;
+3834 0021;
+3836 0021;
+3838 0021;
+383A 0021;
+383C 0021;
+383E 0021;
+3840 0021;
+3842 0021;
+3844 0021;
+3846 0021;
+3848 0021;
+384A 0021;
+384C 0021;
+384E 0021;
+3850 0021;
+3852 0021;
+3854 0021;
+3856 0021;
+3858 0021;
+385A 0021;
+385C 0021;
+385E 0021;
+3860 0021;
+3862 0021;
+3863 0021;
+3865 0021;
+3867 0021;
+3869 0021;
+386B 0021;
+386D 0021;
+386F 0021;
+3871 0021;
+3873 0021;
+3875 0021;
+3877 0021;
+3879 0021;
+387B 0021;
+2F88A 0061;
+387E 0021;
+3880 0021;
+3882 0021;
+3884 0021;
+3886 0021;
+3888 0021;
+388A 0021;
+388C 0021;
+388E 0021;
+3890 0021;
+3892 0021;
+3894 0021;
+3896 0021;
+3898 0021;
+389A 0021;
+389C 0021;
+389E 0021;
+38A0 0021;
+38A2 0021;
+38A4 0021;
+38A6 0021;
+38A8 0021;
+38AA 0021;
+38AC 0021;
+38AE 0021;
+38B0 0021;
+38B2 0021;
+38B4 0021;
+38B6 0021;
+38B8 0021;
+38BA 0021;
+38BC 0021;
+38BE 0021;
+38C0 0021;
+38C2 0021;
+38C4 0021;
+38C6 0021;
+2F896 0061;
+38C9 0021;
+38CB 0021;
+38CD 0021;
+38CF 0021;
+38D1 0021;
+38D3 0021;
+38D5 0021;
+38D7 0021;
+38D9 0021;
+38DB 0021;
+38DD 0021;
+38DF 0021;
+38E1 0021;
+38E3 0021;
+38E4 0021;
+38E6 0021;
+38E8 0021;
+38EA 0021;
+38EC 0021;
+38EE 0021;
+38F0 0021;
+38F2 0021;
+38F4 0021;
+38F6 0021;
+38F8 0021;
+38FA 0021;
+38FC 0021;
+38FE 0021;
+3900 0021;
+3902 0021;
+3904 0021;
+3906 0021;
+3908 0021;
+390A 0021;
+390C 0021;
+390E 0021;
+3910 0021;
+3912 0021;
+3914 0021;
+3916 0021;
+3918 0021;
+391A 0021;
+391C 0021;
+391D 0021;
+391F 0021;
+3921 0021;
+3923 0021;
+3925 0021;
+3927 0021;
+3929 0021;
+392B 0021;
+392D 0021;
+392F 0021;
+3931 0021;
+3933 0021;
+3935 0021;
+3937 0021;
+3939 0021;
+2F8A1 0061;
+393C 0021;
+393E 0021;
+3940 0021;
+3942 0021;
+3944 0021;
+3946 0021;
+3948 0021;
+394A 0021;
+394C 0021;
+394E 0021;
+3950 0021;
+3952 0021;
+3954 0021;
+3956 0021;
+3958 0021;
+395A 0021;
+395C 0021;
+395E 0021;
+3960 0021;
+3962 0021;
+3964 0021;
+3966 0021;
+3968 0021;
+396A 0021;
+396C 0021;
+396E 0021;
+3970 0021;
+3972 0021;
+3974 0021;
+3976 0021;
+3978 0021;
+397A 0021;
+397C 0021;
+397E 0021;
+3980 0021;
+3982 0021;
+3984 0021;
+3986 0021;
+3988 0021;
+398A 0021;
+398C 0021;
+398E 0021;
+3990 0021;
+3992 0021;
+3994 0021;
+3996 0021;
+3998 0021;
+399A 0021;
+399C 0021;
+399E 0021;
+39A0 0021;
+39A2 0021;
+39A4 0021;
+39A6 0021;
+39A8 0021;
+39AA 0021;
+39AC 0021;
+39AE 0021;
+39B0 0021;
+39B2 0021;
+39B4 0021;
+39B6 0021;
+39B8 0021;
+39BA 0021;
+39BC 0021;
+39BE 0021;
+39C0 0021;
+39C2 0021;
+39C4 0021;
+39C6 0021;
+39C8 0021;
+39CA 0021;
+39CC 0021;
+39CE 0021;
+39D0 0021;
+39D2 0021;
+39D4 0021;
+39D6 0021;
+39D8 0021;
+39DA 0021;
+39DC 0021;
+39DE 0021;
+39E0 0021;
+39E2 0021;
+39E4 0021;
+39E6 0021;
+39E8 0021;
+39EA 0021;
+39EC 0021;
+39EE 0021;
+39F0 0021;
+39F2 0021;
+39F4 0021;
+39F6 0021;
+39F8 0021;
+39FA 0021;
+39FC 0021;
+39FE 0021;
+3A00 0021;
+3A02 0021;
+3A04 0021;
+3A06 0021;
+3A08 0021;
+3A0A 0021;
+3A0C 0021;
+3A0E 0021;
+3A10 0021;
+3A12 0021;
+3A14 0021;
+3A16 0021;
+3A18 0021;
+3A1A 0021;
+3A1C 0021;
+3A1E 0021;
+3A20 0021;
+3A22 0021;
+3A24 0021;
+3A26 0021;
+3A28 0021;
+3A2A 0021;
+3A2C 0021;
+3A2E 0021;
+3A2F 0021;
+3A31 0021;
+3A33 0021;
+3A35 0021;
+3A37 0021;
+3A39 0021;
+3A3B 0021;
+3A3D 0021;
+3A3F 0021;
+3A41 0021;
+3A43 0021;
+3A45 0021;
+3A47 0021;
+3A49 0021;
+3A4B 0021;
+3A4D 0021;
+3A4F 0021;
+3A51 0021;
+3A53 0021;
+3A55 0021;
+3A57 0021;
+3A59 0021;
+3A5B 0021;
+3A5D 0021;
+3A5F 0021;
+3A61 0021;
+3A63 0021;
+3A65 0021;
+3A67 0021;
+3A69 0021;
+3A6B 0021;
+2F8C7 0061;
+3A6E 0021;
+3A70 0021;
+3A72 0021;
+3A74 0021;
+3A76 0021;
+3A78 0021;
+3A7A 0021;
+3A7C 0021;
+3A7E 0021;
+3A80 0021;
+3A82 0021;
+3A84 0021;
+3A86 0021;
+3A88 0021;
+3A8A 0021;
+3A8C 0021;
+3A8E 0021;
+3A90 0021;
+3A92 0021;
+3A94 0021;
+3A96 0021;
+3A98 0021;
+3A9A 0021;
+3A9C 0021;
+3A9E 0021;
+3AA0 0021;
+3AA2 0021;
+3AA4 0021;
+3AA6 0021;
+3AA8 0021;
+3AAA 0021;
+3AAC 0021;
+3AAE 0021;
+3AB0 0021;
+3AB2 0021;
+3AB4 0021;
+3AB6 0021;
+3AB8 0021;
+3ABA 0021;
+3ABC 0021;
+3ABE 0021;
+3AC0 0021;
+3AC2 0021;
+3AC4 0021;
+3AC6 0021;
+3AC8 0021;
+3ACA 0021;
+3ACC 0021;
+3ACE 0021;
+3AD0 0021;
+3AD2 0021;
+3AD4 0021;
+3AD6 0021;
+3AD8 0021;
+3ADA 0021;
+3ADC 0021;
+3ADE 0021;
+3AE0 0021;
+3AE2 0021;
+3AE4 0021;
+3AE5 0021;
+3AE7 0021;
+3AE9 0021;
+3AEB 0021;
+3AED 0021;
+3AEF 0021;
+3AF1 0021;
+3AF3 0021;
+3AF5 0021;
+3AF7 0021;
+3AF9 0021;
+3AFB 0021;
+3AFD 0021;
+3AFF 0021;
+3B01 0021;
+3B03 0021;
+3B05 0021;
+3B07 0021;
+2F8D0 0061;
+3B0A 0021;
+3B0C 0021;
+3B0E 0021;
+3B10 0021;
+3B12 0021;
+3B14 0021;
+3B16 0021;
+3B18 0021;
+2F8CE 0061;
+3B1B 0021;
+3B1D 0021;
+3B1F 0021;
+3B21 0021;
+3B23 0021;
+3B25 0021;
+3B27 0021;
+3B29 0021;
+3B2B 0021;
+3B2D 0021;
+3B2F 0021;
+3B31 0021;
+3B33 0021;
+3B35 0021;
+3B37 0021;
+3B39 0021;
+3B3B 0021;
+3B3D 0021;
+3B3F 0021;
+3B41 0021;
+3B43 0021;
+3B45 0021;
+3B47 0021;
+3B49 0021;
+3B4A 0021;
+3B4C 0021;
+3B4E 0021;
+3B50 0021;
+3B52 0021;
+3B54 0021;
+3B56 0021;
+3B58 0021;
+3B5A 0021;
+3B5C 0021;
+3B5E 0021;
+3B60 0021;
+3B62 0021;
+3B64 0021;
+3B66 0021;
+3B68 0021;
+3B6A 0021;
+3B6C 0021;
+3B6E 0021;
+3B70 0021;
+3B72 0021;
+3B74 0021;
+3B76 0021;
+3B78 0021;
+3B7A 0021;
+3B7C 0021;
+3B7E 0021;
+3B80 0021;
+3B82 0021;
+3B84 0021;
+3B86 0021;
+3B88 0021;
+3B8A 0021;
+3B8C 0021;
+3B8E 0021;
+3B90 0021;
+3B92 0021;
+3B94 0021;
+3B96 0021;
+3B98 0021;
+3B9A 0021;
+3B9C 0021;
+2F8E7 003F;
+3B9E 0021;
+3BA0 0021;
+3BA2 0021;
+3BA4 0021;
+3BA6 0021;
+3BA8 0021;
+3BAA 0021;
+3BAC 0021;
+3BAE 0021;
+3BB0 0021;
+3BB2 0021;
+3BB4 0021;
+3BB6 0021;
+3BB8 0021;
+3BBA 0021;
+3BBC 0021;
+3BBE 0021;
+3BC0 0021;
+3BC2 0021;
+3BC4 0021;
+3BC6 0021;
+3BC8 0021;
+3BCA 0021;
+3BCC 0021;
+3BCE 0021;
+3BD0 0021;
+3BD2 0021;
+3BD4 0021;
+3BD6 0021;
+3BD8 0021;
+3BDA 0021;
+3BDC 0021;
+3BDE 0021;
+3BE0 0021;
+3BE2 0021;
+3BE4 0021;
+3BE6 0021;
+3BE8 0021;
+3BEA 0021;
+3BEC 0021;
+3BEE 0021;
+3BF0 0021;
+3BF2 0021;
+3BF4 0021;
+3BF6 0021;
+3BF8 0021;
+3BFA 0021;
+3BFC 0021;
+3BFE 0021;
+3C00 0021;
+3C02 0021;
+3C04 0021;
+3C06 0021;
+3C08 0021;
+3C0A 0021;
+3C0C 0021;
+3C0E 0021;
+3C10 0021;
+3C12 0021;
+3C14 0021;
+3C16 0021;
+3C18 0021;
+3C19 0021;
+3C1B 0021;
+3C1D 0021;
+3C1F 0021;
+3C21 0021;
+3C23 0021;
+3C25 0021;
+3C27 0021;
+3C29 0021;
+3C2B 0021;
+3C2D 0021;
+3C2F 0021;
+3C31 0021;
+3C33 0021;
+3C35 0021;
+3C37 0021;
+3C39 0021;
+3C3B 0021;
+3C3D 0021;
+3C3F 0021;
+3C41 0021;
+3C43 0021;
+3C45 0021;
+3C47 0021;
+3C49 0021;
+3C4B 0021;
+3C4D 0021;
+2F8F2 0061;
+3C50 0021;
+3C52 0021;
+3C54 0021;
+3C56 0021;
+3C58 0021;
+3C5A 0021;
+3C5C 0021;
+3C5E 0021;
+3C60 0021;
+3C62 0021;
+3C64 0021;
+3C66 0021;
+3C68 0021;
+3C6A 0021;
+3C6C 0021;
+3C6E 0021;
+3C70 0021;
+3C72 0021;
+3C74 0021;
+3C76 0021;
+3C78 0021;
+3C7A 0021;
+3C7C 0021;
+3C7E 0021;
+3C80 0021;
+3C82 0021;
+3C84 0021;
+3C86 0021;
+3C88 0021;
+3C8A 0021;
+3C8C 0021;
+3C8E 0021;
+3C90 0021;
+3C92 0021;
+3C94 0021;
+3C96 0021;
+3C98 0021;
+3C9A 0021;
+3C9C 0021;
+3C9E 0021;
+3CA0 0021;
+3CA2 0021;
+3CA4 0021;
+3CA6 0021;
+3CA8 0021;
+3CAA 0021;
+3CAC 0021;
+3CAE 0021;
+3CB0 0021;
+3CB2 0021;
+3CB4 0021;
+3CB6 0021;
+3CB8 0021;
+3CBA 0021;
+3CBC 0021;
+3CBE 0021;
+3CC0 0021;
+3CC2 0021;
+3CC4 0021;
+3CC6 0021;
+3CC8 0021;
+3CCA 0021;
+3CCC 0021;
+3CCE 0021;
+3CD0 0021;
+3CD2 0021;
+3CD4 0021;
+3CD6 0021;
+3CD8 0021;
+3CDA 0021;
+3CDC 0021;
+3CDE 0021;
+3CE0 0021;
+3CE2 0021;
+3CE4 0021;
+3CE6 0021;
+3CE8 0021;
+3CEA 0021;
+3CEC 0021;
+3CEE 0021;
+3CF0 0021;
+3CF2 0021;
+3CF4 0021;
+3CF6 0021;
+3CF8 0021;
+3CFA 0021;
+3CFC 0021;
+3CFE 0021;
+3D00 0021;
+3D02 0021;
+3D04 0021;
+3D06 0021;
+3D08 0021;
+3D0A 0021;
+3D0C 0021;
+3D0E 0021;
+3D10 0021;
+3D12 0021;
+3D14 0021;
+3D16 0021;
+3D18 0021;
+3D1A 0021;
+3D1C 0021;
+3D1E 0021;
+3D20 0021;
+3D22 0021;
+3D24 0021;
+3D26 0021;
+3D28 0021;
+3D2A 0021;
+3D2C 0021;
+3D2E 0021;
+3D30 0021;
+3D32 0021;
+2F90A 0061;
+3D35 0021;
+3D37 0021;
+3D39 0021;
+3D3B 0021;
+3D3D 0021;
+3D3F 0021;
+3D41 0021;
+3D43 0021;
+3D45 0021;
+3D47 0021;
+3D49 0021;
+3D4B 0021;
+3D4D 0021;
+3D4F 0021;
+3D51 0021;
+3D53 0021;
+3D55 0021;
+3D57 0021;
+3D59 0021;
+3D5B 0021;
+3D5D 0021;
+3D5F 0021;
+3D61 0021;
+3D63 0021;
+3D65 0021;
+3D67 0021;
+3D69 0021;
+3D6B 0021;
+3D6D 0021;
+3D6F 0021;
+3D71 0021;
+3D73 0021;
+3D75 0021;
+3D77 0021;
+3D79 0021;
+3D7B 0021;
+3D7D 0021;
+3D7F 0021;
+3D81 0021;
+3D83 0021;
+3D85 0021;
+3D87 0021;
+3D89 0021;
+3D8B 0021;
+3D8D 0021;
+3D8F 0021;
+3D91 0021;
+3D93 0021;
+3D95 0021;
+2F916 0061;
+3D98 0021;
+3D9A 0021;
+3D9C 0021;
+3D9E 0021;
+3DA0 0021;
+3DA2 0021;
+3DA4 0021;
+3DA6 0021;
+3DA8 0021;
+3DAA 0021;
+3DAC 0021;
+3DAE 0021;
+3DB0 0021;
+3DB2 0021;
+3DB4 0021;
+3DB6 0021;
+3DB8 0021;
+3DBA 0021;
+3DBC 0021;
+3DBE 0021;
+3DC0 0021;
+3DC2 0021;
+3DC4 0021;
+3DC6 0021;
+3DC8 0021;
+3DCA 0021;
+3DCC 0021;
+3DCE 0021;
+3DD0 0021;
+3DD2 0021;
+3DD4 0021;
+3DD6 0021;
+3DD8 0021;
+3DDA 0021;
+3DDC 0021;
+3DDE 0021;
+3DE0 0021;
+3DE2 0021;
+3DE4 0021;
+3DE6 0021;
+3DE8 0021;
+3DEA 0021;
+3DEC 0021;
+3DEE 0021;
+3DF0 0021;
+3DF2 0021;
+3DF4 0021;
+3DF6 0021;
+3DF8 0021;
+3DFA 0021;
+3DFC 0021;
+3DFE 0021;
+3E00 0021;
+3E02 0021;
+3E04 0021;
+3E06 0021;
+3E08 0021;
+3E0A 0021;
+3E0C 0021;
+3E0E 0021;
+3E10 0021;
+3E12 0021;
+3E14 0021;
+3E16 0021;
+3E18 0021;
+3E1A 0021;
+3E1C 0021;
+3E1E 0021;
+3E20 0021;
+3E22 0021;
+3E24 0021;
+3E26 0021;
+3E28 0021;
+3E2A 0021;
+3E2C 0021;
+3E2E 0021;
+3E30 0021;
+3E32 0021;
+3E34 0021;
+3E36 0021;
+3E38 0021;
+3E3A 0021;
+3E3C 0021;
+3E3E 0021;
+3E40 0021;
+3E42 0021;
+3E44 0021;
+3E46 0021;
+3E48 0021;
+3E4A 0021;
+3E4C 0021;
+3E4E 0021;
+3E50 0021;
+3E52 0021;
+3E54 0021;
+3E56 0021;
+3E58 0021;
+3E5A 0021;
+3E5C 0021;
+3E5E 0021;
+3E60 0021;
+3E62 0021;
+3E64 0021;
+3E66 0021;
+3E68 0021;
+3E6A 0021;
+3E6C 0021;
+3E6E 0021;
+3E70 0021;
+3E72 0021;
+3E74 0021;
+3E76 0021;
+3E78 0021;
+3E7A 0021;
+3E7C 0021;
+3E7E 0021;
+3E80 0021;
+3E82 0021;
+3E84 0021;
+3E86 0021;
+3E88 0021;
+3E8A 0021;
+3E8C 0021;
+3E8E 0021;
+3E90 0021;
+3E92 0021;
+3E94 0021;
+3E96 0021;
+3E98 0021;
+3E9A 0021;
+3E9C 0021;
+3E9E 0021;
+3EA0 0021;
+3EA2 0021;
+3EA4 0021;
+3EA6 0021;
+3EA8 0021;
+3EAA 0021;
+3EAC 0021;
+3EAD 0021;
+3EAF 0021;
+3EB1 0021;
+3EB3 0021;
+3EB5 0021;
+3EB7 0021;
+2F92D 003F;
+3EB9 0021;
+3EBB 0021;
+3EBD 0021;
+3EBF 0021;
+3EC1 0021;
+3EC3 0021;
+3EC5 0021;
+3EC7 0021;
+3EC9 0021;
+3ECB 0021;
+3ECD 0021;
+3ECF 0021;
+3ED1 0021;
+3ED3 0021;
+3ED5 0021;
+3ED7 0021;
+3ED9 0021;
+3EDB 0021;
+3EDD 0021;
+3EDF 0021;
+3EE1 0021;
+3EE3 0021;
+3EE5 0021;
+3EE7 0021;
+3EE9 0021;
+3EEB 0021;
+3EED 0021;
+3EEF 0021;
+3EF1 0021;
+3EF3 0021;
+3EF5 0021;
+3EF7 0021;
+3EF9 0021;
+3EFB 0021;
+3EFD 0021;
+3EFF 0021;
+3F01 0021;
+3F03 0021;
+3F05 0021;
+3F07 0021;
+3F09 0021;
+3F0B 0021;
+3F0D 0021;
+3F0F 0021;
+3F11 0021;
+3F13 0021;
+3F15 0021;
+3F17 0021;
+3F19 0021;
+3F1B 0021;
+3F1C 0021;
+3F1E 0021;
+3F20 0021;
+3F22 0021;
+3F24 0021;
+3F26 0021;
+3F28 0021;
+3F2A 0021;
+3F2C 0021;
+3F2E 0021;
+3F30 0021;
+3F32 0021;
+3F34 0021;
+3F36 0021;
+3F38 0021;
+3F3A 0021;
+3F3C 0021;
+3F3E 0021;
+3F40 0021;
+3F42 0021;
+3F44 0021;
+3F46 0021;
+3F48 0021;
+3F4A 0021;
+3F4C 0021;
+3F4E 0021;
+3F50 0021;
+3F52 0021;
+3F54 0021;
+3F56 0021;
+3F58 0021;
+3F5A 0021;
+3F5C 0021;
+3F5E 0021;
+3F60 0021;
+3F62 0021;
+3F64 0021;
+3F66 0021;
+3F68 0021;
+3F6A 0021;
+3F6C 0021;
+3F6E 0021;
+3F70 0021;
+3F72 0021;
+3F74 0021;
+3F76 0021;
+3F78 0021;
+3F7A 0021;
+3F7C 0021;
+3F7E 0021;
+3F80 0021;
+3F82 0021;
+3F84 0021;
+3F86 0021;
+3F88 0021;
+3F8A 0021;
+3F8C 0021;
+3F8E 0021;
+3F90 0021;
+3F92 0021;
+3F94 0021;
+3F96 0021;
+3F98 0021;
+3F9A 0021;
+3F9C 0021;
+3F9E 0021;
+3FA0 0021;
+3FA2 0021;
+3FA4 0021;
+3FA6 0021;
+3FA8 0021;
+3FAA 0021;
+3FAC 0021;
+3FAE 0021;
+3FB0 0021;
+3FB2 0021;
+3FB4 0021;
+3FB6 0021;
+3FB8 0021;
+3FBA 0021;
+3FBC 0021;
+3FBE 0021;
+3FC0 0021;
+3FC2 0021;
+3FC4 0021;
+3FC6 0021;
+3FC8 0021;
+3FCA 0021;
+3FCC 0021;
+3FCE 0021;
+3FD0 0021;
+3FD2 0021;
+3FD4 0021;
+3FD6 0021;
+3FD8 0021;
+3FDA 0021;
+3FDC 0021;
+3FDE 0021;
+3FE0 0021;
+3FE2 0021;
+3FE4 0021;
+3FE6 0021;
+3FE8 0021;
+3FEA 0021;
+3FEC 0021;
+3FEE 0021;
+3FF0 0021;
+3FF2 0021;
+3FF4 0021;
+3FF6 0021;
+3FF8 0021;
+3FFA 0021;
+3FFC 0021;
+3FFD 0021;
+3FFF 0021;
+4001 0021;
+4003 0021;
+4005 0021;
+4007 0021;
+2F93F 0061;
+400A 0021;
+400C 0021;
+400E 0021;
+4010 0021;
+4012 0021;
+4014 0021;
+4016 0021;
+4018 0021;
+4019 0021;
+401B 0021;
+401D 0021;
+401F 0021;
+4021 0021;
+4023 0021;
+4025 0021;
+4027 0021;
+4029 0021;
+402B 0021;
+402D 0021;
+402F 0021;
+4031 0021;
+4033 0021;
+4035 0021;
+4037 0021;
+4039 0021;
+FAD4 0041;
+403B 0021;
+403D 0021;
+403F 0021;
+4041 0021;
+4043 0021;
+4045 0021;
+2F94B 0061;
+4048 0021;
+404A 0021;
+404C 0021;
+404E 0021;
+4050 0021;
+4052 0021;
+4054 0021;
+4056 0021;
+4058 0021;
+405A 0021;
+405C 0021;
+405E 0021;
+4060 0021;
+4062 0021;
+4064 0021;
+4066 0021;
+4068 0021;
+406A 0021;
+406C 0021;
+406E 0021;
+4070 0021;
+4072 0021;
+4074 0021;
+4076 0021;
+4078 0021;
+407A 0021;
+407C 0021;
+407E 0021;
+4080 0021;
+4082 0021;
+4084 0021;
+4086 0021;
+4088 0021;
+408A 0021;
+408C 0021;
+408E 0021;
+4090 0021;
+4092 0021;
+4094 0021;
+4096 0021;
+4097 0021;
+4099 0021;
+409B 0021;
+409D 0021;
+409F 0021;
+40A1 0021;
+40A3 0021;
+40A5 0021;
+40A7 0021;
+40A9 0021;
+40AB 0021;
+40AD 0021;
+40AF 0021;
+40B1 0021;
+40B3 0021;
+40B5 0021;
+40B7 0021;
+40B9 0021;
+40BB 0021;
+40BD 0021;
+40BF 0021;
+40C1 0021;
+40C3 0021;
+40C5 0021;
+40C7 0021;
+40C9 0021;
+40CB 0021;
+40CD 0021;
+40CF 0021;
+40D1 0021;
+40D3 0021;
+40D5 0021;
+40D7 0021;
+40D9 0021;
+40DB 0021;
+40DD 0021;
+40DF 0021;
+40E1 0021;
+40E3 0021;
+40E4 0021;
+40E6 0021;
+40E8 0021;
+40EA 0021;
+40EC 0021;
+40EE 0021;
+40F0 0021;
+40F2 0021;
+40F4 0021;
+40F6 0021;
+40F8 0021;
+40FA 0021;
+40FC 0021;
+40FE 0021;
+4100 0021;
+4102 0021;
+4104 0021;
+4106 0021;
+4108 0021;
+410A 0021;
+410C 0021;
+410E 0021;
+4110 0021;
+4112 0021;
+4114 0021;
+4116 0021;
+4118 0021;
+411A 0021;
+411C 0021;
+411E 0021;
+4120 0021;
+4122 0021;
+4124 0021;
+4126 0021;
+4128 0021;
+412A 0021;
+412C 0021;
+412E 0021;
+2F958 0061;
+4131 0021;
+4133 0021;
+4135 0021;
+4137 0021;
+4139 0021;
+413B 0021;
+413D 0021;
+413F 0021;
+4141 0021;
+4143 0021;
+4145 0021;
+4147 0021;
+4149 0021;
+414B 0021;
+414D 0021;
+414F 0021;
+4151 0021;
+4153 0021;
+4155 0021;
+4157 0021;
+4159 0021;
+415B 0021;
+415D 0021;
+415F 0021;
+4161 0021;
+4163 0021;
+4165 0021;
+4167 0021;
+4169 0021;
+416B 0021;
+416D 0021;
+416F 0021;
+4171 0021;
+4173 0021;
+4175 0021;
+4177 0021;
+4179 0021;
+417B 0021;
+417D 0021;
+417F 0021;
+4181 0021;
+4183 0021;
+4185 0021;
+4187 0021;
+4189 0021;
+418B 0021;
+418D 0021;
+418F 0021;
+4191 0021;
+4193 0021;
+4195 0021;
+4197 0021;
+4199 0021;
+419B 0021;
+419D 0021;
+419F 0021;
+41A1 0021;
+41A3 0021;
+41A5 0021;
+41A7 0021;
+41A9 0021;
+41AB 0021;
+41AD 0021;
+41AF 0021;
+41B1 0021;
+41B3 0021;
+41B5 0021;
+41B7 0021;
+41B9 0021;
+41BB 0021;
+41BD 0021;
+41BF 0021;
+41C1 0021;
+41C3 0021;
+41C5 0021;
+41C7 0021;
+41C9 0021;
+41CB 0021;
+41CD 0021;
+41CF 0021;
+41D1 0021;
+41D3 0021;
+41D5 0021;
+41D7 0021;
+41D9 0021;
+41DB 0021;
+41DD 0021;
+41DF 0021;
+41E1 0021;
+41E3 0021;
+41E5 0021;
+41E7 0021;
+41E9 0021;
+41EB 0021;
+41ED 0021;
+41EF 0021;
+41F1 0021;
+41F3 0021;
+41F5 0021;
+41F7 0021;
+41F9 0021;
+41FB 0021;
+41FD 0021;
+41FF 0021;
+4201 0021;
+2F960 0061;
+4204 0021;
+4206 0021;
+4208 0021;
+420A 0021;
+420C 0021;
+420E 0021;
+4210 0021;
+4212 0021;
+4214 0021;
+4216 0021;
+4218 0021;
+421A 0021;
+421C 0021;
+421E 0021;
+4220 0021;
+4222 0021;
+4224 0021;
+4226 0021;
+2F964 0061;
+4229 0021;
+422B 0021;
+422D 0021;
+422F 0021;
+4231 0021;
+4233 0021;
+4235 0021;
+4237 0021;
+4239 0021;
+423B 0021;
+423D 0021;
+423F 0021;
+4241 0021;
+4243 0021;
+4245 0021;
+4247 0021;
+4249 0021;
+424B 0021;
+424D 0021;
+424F 0021;
+4251 0021;
+4253 0021;
+4255 0021;
+4257 0021;
+4259 0021;
+425B 0021;
+425D 0021;
+425F 0021;
+4261 0021;
+4263 0021;
+4265 0021;
+4267 0021;
+4269 0021;
+426B 0021;
+426D 0021;
+426F 0021;
+4271 0021;
+4273 0021;
+4275 0021;
+4277 0021;
+4279 0021;
+427B 0021;
+427D 0021;
+427F 0021;
+4281 0021;
+4283 0021;
+4285 0021;
+4287 0021;
+4289 0021;
+428B 0021;
+428D 0021;
+428F 0021;
+4291 0021;
+4293 0021;
+4295 0021;
+4297 0021;
+4299 0021;
+429B 0021;
+429D 0021;
+429F 0021;
+2F967 0061;
+42A2 0021;
+42A4 0021;
+42A6 0021;
+42A8 0021;
+42AA 0021;
+42AC 0021;
+42AE 0021;
+42B0 0021;
+42B2 0021;
+42B4 0021;
+42B6 0021;
+42B8 0021;
+42BA 0021;
+42BC 0021;
+42BE 0021;
+42C0 0021;
+42C2 0021;
+42C4 0021;
+42C6 0021;
+42C8 0021;
+42CA 0021;
+42CC 0021;
+42CE 0021;
+42D0 0021;
+42D2 0021;
+42D4 0021;
+42D6 0021;
+42D8 0021;
+42DA 0021;
+42DC 0021;
+42DE 0021;
+42E0 0021;
+42E2 0021;
+42E4 0021;
+42E6 0021;
+42E8 0021;
+42EA 0021;
+42EC 0021;
+42EE 0021;
+42F0 0021;
+42F2 0021;
+42F4 0021;
+42F6 0021;
+42F8 0021;
+42FA 0021;
+42FC 0021;
+42FE 0021;
+4300 0021;
+2F96D 0061;
+4303 0021;
+4305 0021;
+4307 0021;
+4309 0021;
+430B 0021;
+430D 0021;
+430F 0021;
+4311 0021;
+4313 0021;
+4315 0021;
+4317 0021;
+4319 0021;
+431B 0021;
+431D 0021;
+431F 0021;
+4321 0021;
+4323 0021;
+4325 0021;
+4327 0021;
+4329 0021;
+432B 0021;
+432D 0021;
+432F 0021;
+4331 0021;
+4333 0021;
+2F971 0061;
+4336 0021;
+4338 0021;
+433A 0021;
+433C 0021;
+433E 0021;
+4340 0021;
+4342 0021;
+4344 0021;
+4346 0021;
+4348 0021;
+434A 0021;
+434C 0021;
+434E 0021;
+4350 0021;
+4352 0021;
+4354 0021;
+4356 0021;
+4358 0021;
+2F974 0061;
+435B 0021;
+435D 0021;
+435F 0021;
+4361 0021;
+4363 0021;
+4365 0021;
+4367 0021;
+4369 0021;
+436B 0021;
+436D 0021;
+436F 0021;
+4371 0021;
+4373 0021;
+4375 0021;
+4377 0021;
+4379 0021;
+437B 0021;
+437D 0021;
+437F 0021;
+4381 0021;
+4383 0021;
+4385 0021;
+4387 0021;
+4389 0021;
+438B 0021;
+438D 0021;
+438F 0021;
+4391 0021;
+4393 0021;
+4395 0021;
+4397 0021;
+4399 0021;
+439B 0021;
+439D 0021;
+439F 0021;
+43A1 0021;
+43A3 0021;
+43A5 0021;
+43A7 0021;
+43A9 0021;
+43AB 0021;
+43AD 0021;
+43AF 0021;
+43B1 0021;
+43B3 0021;
+43B5 0021;
+43B7 0021;
+43B9 0021;
+43BB 0021;
+43BD 0021;
+43BF 0021;
+43C1 0021;
+43C3 0021;
+43C5 0021;
+43C7 0021;
+43C9 0021;
+43CB 0021;
+43CD 0021;
+43CF 0021;
+43D1 0021;
+43D3 0021;
+43D5 0021;
+43D6 0021;
+43D8 0021;
+2F8D7 0061;
+43DB 0021;
+43DD 0021;
+43DF 0021;
+43E1 0021;
+43E3 0021;
+43E5 0021;
+43E7 0021;
+43E9 0021;
+43EB 0021;
+43ED 0021;
+43EF 0021;
+43F1 0021;
+43F3 0021;
+43F5 0021;
+43F7 0021;
+43F9 0021;
+43FB 0021;
+43FD 0021;
+43FF 0021;
+4401 0021;
+4403 0021;
+4405 0021;
+4407 0021;
+4409 0021;
+440B 0021;
+440C 0021;
+440E 0021;
+4410 0021;
+4412 0021;
+4414 0021;
+4416 0021;
+4418 0021;
+441A 0021;
+441C 0021;
+441E 0021;
+4420 0021;
+4422 0021;
+4424 0021;
+4426 0021;
+4428 0021;
+442A 0021;
+442C 0021;
+442E 0021;
+4430 0021;
+4432 0021;
+4434 0021;
+4436 0021;
+4438 0021;
+443A 0021;
+443C 0021;
+443E 0021;
+4440 0021;
+4442 0021;
+4444 0021;
+4446 0021;
+4448 0021;
+444A 0021;
+444C 0021;
+444E 0021;
+4450 0021;
+4452 0021;
+4454 0021;
+4456 0021;
+4458 0021;
+445A 0021;
+445C 0021;
+445E 0021;
+4460 0021;
+4462 0021;
+4464 0021;
+4466 0021;
+4468 0021;
+446A 0021;
+2F98E 0061;
+446D 0021;
+446F 0021;
+4471 0021;
+4473 0021;
+4475 0021;
+4477 0021;
+4479 0021;
+447B 0021;
+447D 0021;
+447F 0021;
+4481 0021;
+4483 0021;
+4485 0021;
+4487 0021;
+4489 0021;
+448B 0021;
+448D 0021;
+448F 0021;
+4491 0021;
+4493 0021;
+4495 0021;
+4497 0021;
+4499 0021;
+449B 0021;
+449D 0021;
+449F 0021;
+44A1 0021;
+44A3 0021;
+44A5 0021;
+44A7 0021;
+44A9 0021;
+44AB 0021;
+44AD 0021;
+44AF 0021;
+44B1 0021;
+44B3 0021;
+44B5 0021;
+44B7 0021;
+44B9 0021;
+44BB 0021;
+44BD 0021;
+44BF 0021;
+44C1 0021;
+44C3 0021;
+44C5 0021;
+44C7 0021;
+44C9 0021;
+44CB 0021;
+44CD 0021;
+44CF 0021;
+44D1 0021;
+44D3 0021;
+44D5 0021;
+44D7 0021;
+44D9 0021;
+44DB 0021;
+44DD 0021;
+44DF 0021;
+44E1 0021;
+44E3 0021;
+44E5 0021;
+44E7 0021;
+44E9 0021;
+44EB 0021;
+44ED 0021;
+44EF 0021;
+44F1 0021;
+44F3 0021;
+44F5 0021;
+44F7 0021;
+44F9 0021;
+44FB 0021;
+44FD 0021;
+44FF 0021;
+4501 0021;
+4503 0021;
+4505 0021;
+4507 0021;
+4509 0021;
+450B 0021;
+450D 0021;
+450F 0021;
+4511 0021;
+4513 0021;
+4515 0021;
+4517 0021;
+4519 0021;
+451B 0021;
+451D 0021;
+451F 0021;
+4521 0021;
+4523 0021;
+4525 0021;
+4527 0021;
+4529 0021;
+452B 0021;
+452C 0021;
+452E 0021;
+4530 0021;
+4532 0021;
+4534 0021;
+4536 0021;
+4538 0021;
+453A 0021;
+453C 0021;
+453E 0021;
+4540 0021;
+4542 0021;
+4544 0021;
+4546 0021;
+4548 0021;
+454A 0021;
+454C 0021;
+454E 0021;
+4550 0021;
+4552 0021;
+4554 0021;
+4556 0021;
+4558 0021;
+455A 0021;
+455C 0021;
+2F9AE 0061;
+455F 0021;
+4561 0021;
+4562 0021;
+4564 0021;
+4566 0021;
+4568 0021;
+456A 0021;
+2F9B2 0061;
+456D 0021;
+456F 0021;
+4571 0021;
+4573 0021;
+4575 0021;
+4577 0021;
+4579 0021;
+457B 0021;
+457D 0021;
+457F 0021;
+4581 0021;
+4583 0021;
+4585 0021;
+4587 0021;
+4589 0021;
+458B 0021;
+458D 0021;
+458F 0021;
+4591 0021;
+4593 0021;
+4595 0021;
+4597 0021;
+4599 0021;
+459B 0021;
+459D 0021;
+459F 0021;
+45A1 0021;
+45A3 0021;
+45A5 0021;
+45A7 0021;
+45A9 0021;
+45AB 0021;
+45AD 0021;
+45AF 0021;
+45B1 0021;
+45B3 0021;
+45B5 0021;
+45B7 0021;
+45B9 0021;
+45BB 0021;
+45BD 0021;
+45BF 0021;
+45C1 0021;
+45C3 0021;
+45C5 0021;
+45C7 0021;
+45C9 0021;
+45CB 0021;
+45CD 0021;
+45CF 0021;
+45D1 0021;
+45D3 0021;
+45D5 0021;
+45D7 0021;
+45D8 0021;
+45DA 0021;
+45DC 0021;
+45DE 0021;
+45E0 0021;
+45E2 0021;
+45E4 0021;
+45E6 0021;
+45E8 0021;
+45EA 0021;
+45EC 0021;
+45EE 0021;
+45F0 0021;
+45F2 0021;
+45F4 0021;
+45F6 0021;
+45F8 0021;
+2F9C2 0061;
+45FB 0021;
+45FD 0021;
+45FF 0021;
+4601 0021;
+4603 0021;
+4605 0021;
+4607 0021;
+4609 0021;
+460B 0021;
+460D 0021;
+460F 0021;
+4611 0021;
+4613 0021;
+4615 0021;
+4617 0021;
+4619 0021;
+461B 0021;
+461D 0021;
+461F 0021;
+4621 0021;
+4623 0021;
+4625 0021;
+4627 0021;
+4629 0021;
+462B 0021;
+462D 0021;
+462F 0021;
+4631 0021;
+4633 0021;
+4635 0021;
+4636 0021;
+4638 0021;
+463A 0021;
+463C 0021;
+463E 0021;
+4640 0021;
+4642 0021;
+4644 0021;
+4646 0021;
+4648 0021;
+464A 0021;
+464C 0021;
+464E 0021;
+4650 0021;
+4652 0021;
+4654 0021;
+4656 0021;
+4658 0021;
+465A 0021;
+465C 0021;
+465E 0021;
+4660 0021;
+4662 0021;
+4664 0021;
+4666 0021;
+4668 0021;
+466A 0021;
+466C 0021;
+466E 0021;
+4670 0021;
+4672 0021;
+4674 0021;
+4676 0021;
+4678 0021;
+467A 0021;
+467C 0021;
+467E 0021;
+4680 0021;
+4682 0021;
+4684 0021;
+4686 0021;
+4688 0021;
+468A 0021;
+468C 0021;
+468E 0021;
+4690 0021;
+4692 0021;
+4694 0021;
+4696 0021;
+4698 0021;
+469A 0021;
+469C 0021;
+469E 0021;
+46A0 0021;
+46A2 0021;
+46A4 0021;
+46A6 0021;
+46A8 0021;
+46AA 0021;
+46AC 0021;
+46AE 0021;
+46B0 0021;
+46B2 0021;
+46B4 0021;
+46B6 0021;
+46B8 0021;
+46BA 0021;
+46BC 0021;
+46BE 0021;
+46BF 0021;
+46C1 0021;
+46C3 0021;
+46C5 0021;
+46C7 0021;
+46C8 0021;
+46CA 0021;
+46CC 0021;
+46CE 0021;
+46D0 0021;
+46D2 0021;
+46D4 0021;
+46D6 0021;
+46D8 0021;
+46DA 0021;
+46DC 0021;
+46DE 0021;
+46E0 0021;
+46E2 0021;
+46E4 0021;
+46E6 0021;
+46E8 0021;
+46EA 0021;
+46EC 0021;
+46EE 0021;
+46F0 0021;
+46F2 0021;
+46F4 0021;
+46F6 0021;
+46F8 0021;
+46FA 0021;
+46FC 0021;
+46FE 0021;
+4700 0021;
+4702 0021;
+4704 0021;
+4706 0021;
+4708 0021;
+470A 0021;
+470C 0021;
+470E 0021;
+4710 0021;
+4712 0021;
+4714 0021;
+4716 0021;
+4718 0021;
+471A 0021;
+471C 0021;
+471E 0021;
+4720 0021;
+4722 0021;
+4724 0021;
+4726 0021;
+4728 0021;
+472A 0021;
+472C 0021;
+472E 0021;
+4730 0021;
+4732 0021;
+4734 0021;
+4736 0021;
+4738 0021;
+473A 0021;
+473C 0021;
+473E 0021;
+4740 0021;
+4742 0021;
+4744 0021;
+4746 0021;
+4748 0021;
+474A 0021;
+474C 0021;
+474E 0021;
+4750 0021;
+4752 0021;
+4754 0021;
+4756 0021;
+4758 0021;
+475A 0021;
+475C 0021;
+475E 0021;
+4760 0021;
+4762 0021;
+4764 0021;
+4766 0021;
+4768 0021;
+476A 0021;
+476C 0021;
+476E 0021;
+4770 0021;
+4772 0021;
+4774 0021;
+4776 0021;
+4778 0021;
+477A 0021;
+477C 0021;
+477E 0021;
+4780 0021;
+4782 0021;
+4784 0021;
+4786 0021;
+4788 0021;
+478A 0021;
+478C 0021;
+478E 0021;
+4790 0021;
+4792 0021;
+4794 0021;
+4796 0021;
+4798 0021;
+479A 0021;
+479C 0021;
+479E 0021;
+47A0 0021;
+47A2 0021;
+47A4 0021;
+47A6 0021;
+47A8 0021;
+47AA 0021;
+47AC 0021;
+47AE 0021;
+47B0 0021;
+47B2 0021;
+47B4 0021;
+47B6 0021;
+47B8 0021;
+47BA 0021;
+47BC 0021;
+47BE 0021;
+47C0 0021;
+47C2 0021;
+47C4 0021;
+47C6 0021;
+47C8 0021;
+47CA 0021;
+47CC 0021;
+47CE 0021;
+47D0 0021;
+47D2 0021;
+47D4 0021;
+47D6 0021;
+47D8 0021;
+47DA 0021;
+47DC 0021;
+47DE 0021;
+47E0 0021;
+47E2 0021;
+47E4 0021;
+47E6 0021;
+47E8 0021;
+47EA 0021;
+47EC 0021;
+47EE 0021;
+47F0 0021;
+47F2 0021;
+47F4 0021;
+47F6 0021;
+47F8 0021;
+47FA 0021;
+47FC 0021;
+47FE 0021;
+4800 0021;
+4802 0021;
+4804 0021;
+4806 0021;
+4808 0021;
+480A 0021;
+480C 0021;
+480E 0021;
+4810 0021;
+4812 0021;
+4814 0021;
+4816 0021;
+4818 0021;
+481A 0021;
+481C 0021;
+481E 0021;
+4820 0021;
+4822 0021;
+4824 0021;
+4826 0021;
+4828 0021;
+482A 0021;
+482C 0021;
+482E 0021;
+4830 0021;
+4832 0021;
+4834 0021;
+4836 0021;
+4838 0021;
+483A 0021;
+483C 0021;
+483E 0021;
+4840 0021;
+4842 0021;
+4844 0021;
+4846 0021;
+4848 0021;
+484A 0021;
+484C 0021;
+484E 0021;
+4850 0021;
+4852 0021;
+4854 0021;
+4856 0021;
+4858 0021;
+485A 0021;
+485C 0021;
+485E 0021;
+4860 0021;
+4862 0021;
+4864 0021;
+4866 0021;
+4868 0021;
+486A 0021;
+486C 0021;
+486E 0021;
+4870 0021;
+4872 0021;
+4874 0021;
+4876 0021;
+4878 0021;
+487A 0021;
+487C 0021;
+487E 0021;
+4880 0021;
+4882 0021;
+4884 0021;
+4886 0021;
+4888 0021;
+488A 0021;
+488C 0021;
+488E 0021;
+4890 0021;
+4892 0021;
+4894 0021;
+4896 0021;
+4898 0021;
+489A 0021;
+489C 0021;
+489E 0021;
+48A0 0021;
+48A2 0021;
+48A4 0021;
+48A6 0021;
+48A8 0021;
+48AA 0021;
+48AC 0021;
+48AE 0021;
+48B0 0021;
+48B2 0021;
+48B4 0021;
+48B6 0021;
+48B8 0021;
+48BA 0021;
+48BC 0021;
+48BE 0021;
+48C0 0021;
+48C2 0021;
+48C4 0021;
+48C6 0021;
+48C8 0021;
+48CA 0021;
+48CC 0021;
+48CE 0021;
+48D0 0021;
+48D2 0021;
+48D4 0021;
+48D6 0021;
+48D8 0021;
+48DA 0021;
+48DC 0021;
+48DE 0021;
+48E0 0021;
+48E2 0021;
+48E4 0021;
+48E6 0021;
+48E8 0021;
+48EA 0021;
+48EC 0021;
+48EE 0021;
+48F0 0021;
+48F2 0021;
+48F4 0021;
+48F6 0021;
+48F8 0021;
+48FA 0021;
+48FC 0021;
+48FE 0021;
+4900 0021;
+4902 0021;
+4904 0021;
+4906 0021;
+4908 0021;
+490A 0021;
+490C 0021;
+490E 0021;
+4910 0021;
+4912 0021;
+4914 0021;
+4916 0021;
+4918 0021;
+491A 0021;
+491C 0021;
+491E 0021;
+4920 0021;
+4922 0021;
+4924 0021;
+4926 0021;
+4928 0021;
+492A 0021;
+492C 0021;
+492E 0021;
+4930 0021;
+4932 0021;
+4934 0021;
+4936 0021;
+4938 0021;
+493A 0021;
+493C 0021;
+493E 0021;
+4940 0021;
+4942 0021;
+4944 0021;
+4946 0021;
+4948 0021;
+494A 0021;
+494C 0021;
+494E 0021;
+4950 0021;
+4952 0021;
+4954 0021;
+4956 0021;
+4958 0021;
+495A 0021;
+495C 0021;
+495E 0021;
+4960 0021;
+4962 0021;
+4964 0021;
+4966 0021;
+4968 0021;
+496A 0021;
+496C 0021;
+496E 0021;
+4970 0021;
+4972 0021;
+4974 0021;
+4976 0021;
+4978 0021;
+497A 0021;
+497C 0021;
+497E 0021;
+4980 0021;
+4982 0021;
+4984 0021;
+4986 0021;
+4988 0021;
+498A 0021;
+498C 0021;
+498E 0021;
+4990 0021;
+4992 0021;
+4994 0021;
+2F9EF 0061;
+4997 0021;
+4999 0021;
+499B 0021;
+499D 0021;
+499F 0021;
+49A1 0021;
+49A3 0021;
+49A5 0021;
+49A7 0021;
+49A9 0021;
+49AB 0021;
+49AD 0021;
+49AF 0021;
+49B1 0021;
+49B3 0021;
+49B5 0021;
+49B7 0021;
+49B9 0021;
+49BB 0021;
+49BD 0021;
+49BF 0021;
+49C1 0021;
+49C3 0021;
+49C5 0021;
+49C7 0021;
+49C9 0021;
+49CB 0021;
+49CD 0021;
+49CF 0021;
+49D1 0021;
+49D3 0021;
+49D5 0021;
+49D7 0021;
+49D9 0021;
+49DB 0021;
+49DD 0021;
+49DF 0021;
+49E1 0021;
+49E3 0021;
+49E5 0021;
+2F9F2 0061;
+49E8 0021;
+49EA 0021;
+49EC 0021;
+49EE 0021;
+49F0 0021;
+49F2 0021;
+49F4 0021;
+49F6 0021;
+49F8 0021;
+49FA 0021;
+49FC 0021;
+49FE 0021;
+4A00 0021;
+4A02 0021;
+4A04 0021;
+4A06 0021;
+4A08 0021;
+4A0A 0021;
+4A0C 0021;
+4A0E 0021;
+4A10 0021;
+4A12 0021;
+4A14 0021;
+4A16 0021;
+4A18 0021;
+4A1A 0021;
+4A1C 0021;
+4A1E 0021;
+4A20 0021;
+4A22 0021;
+4A24 0021;
+4A26 0021;
+4A28 0021;
+4A2A 0021;
+4A2C 0021;
+4A2E 0021;
+4A30 0021;
+4A32 0021;
+4A34 0021;
+4A36 0021;
+4A38 0021;
+4A3A 0021;
+4A3C 0021;
+4A3E 0021;
+4A40 0021;
+4A42 0021;
+4A44 0021;
+4A46 0021;
+4A48 0021;
+4A4A 0021;
+4A4C 0021;
+4A4E 0021;
+4A50 0021;
+4A52 0021;
+4A54 0021;
+4A56 0021;
+4A58 0021;
+4A5A 0021;
+4A5C 0021;
+4A5E 0021;
+4A60 0021;
+4A62 0021;
+4A64 0021;
+4A66 0021;
+4A68 0021;
+4A6A 0021;
+4A6C 0021;
+4A6E 0021;
+4A6F 0021;
+4A71 0021;
+4A73 0021;
+4A75 0021;
+2F9F9 0061;
+4A78 0021;
+4A7A 0021;
+4A7C 0021;
+4A7E 0021;
+4A80 0021;
+4A82 0021;
+4A84 0021;
+4A86 0021;
+4A88 0021;
+4A8A 0021;
+4A8C 0021;
+4A8E 0021;
+4A90 0021;
+4A92 0021;
+4A94 0021;
+4A96 0021;
+4A98 0021;
+4A9A 0021;
+4A9C 0021;
+4A9E 0021;
+4AA0 0021;
+4AA2 0021;
+4AA4 0021;
+4AA6 0021;
+4AA8 0021;
+4AAA 0021;
+4AAC 0021;
+4AAE 0021;
+4AB0 0021;
+4AB2 0021;
+4AB3 0021;
+4AB5 0021;
+4AB7 0021;
+4AB9 0021;
+4ABB 0021;
+4ABD 0021;
+4ABF 0021;
+4AC1 0021;
+4AC3 0021;
+4AC5 0021;
+4AC7 0021;
+4AC9 0021;
+4ACB 0021;
+4ACD 0021;
+4ACF 0021;
+4AD1 0021;
+4AD3 0021;
+4AD5 0021;
+4AD7 0021;
+4AD9 0021;
+4ADB 0021;
+4ADD 0021;
+4ADF 0021;
+4AE1 0021;
+4AE3 0021;
+4AE5 0021;
+4AE7 0021;
+4AE9 0021;
+4AEB 0021;
+4AED 0021;
+4AEF 0021;
+4AF1 0021;
+4AF3 0021;
+4AF5 0021;
+4AF7 0021;
+4AF9 0021;
+4AFB 0021;
+4AFD 0021;
+4AFF 0021;
+4B01 0021;
+4B03 0021;
+4B05 0021;
+4B07 0021;
+4B09 0021;
+4B0B 0021;
+4B0D 0021;
+4B0F 0021;
+4B11 0021;
+4B13 0021;
+4B15 0021;
+4B17 0021;
+4B19 0021;
+4B1B 0021;
+4B1D 0021;
+4B1F 0021;
+4B21 0021;
+4B23 0021;
+4B25 0021;
+4B27 0021;
+4B29 0021;
+4B2B 0021;
+4B2D 0021;
+4B2F 0021;
+4B31 0021;
+4B33 0021;
+4B34 0021;
+4B36 0021;
+4B38 0021;
+4B3A 0021;
+4B3C 0021;
+4B3E 0021;
+4B40 0021;
+4B42 0021;
+4B44 0021;
+4B46 0021;
+4B48 0021;
+4B4A 0021;
+4B4C 0021;
+4B4E 0021;
+4B50 0021;
+4B52 0021;
+4B54 0021;
+4B56 0021;
+4B58 0021;
+4B5A 0021;
+4B5C 0021;
+4B5E 0021;
+4B60 0021;
+4B62 0021;
+4B64 0021;
+4B66 0021;
+4B68 0021;
+4B6A 0021;
+4B6C 0021;
+4B6E 0021;
+4B70 0021;
+4B72 0021;
+4B74 0021;
+4B76 0021;
+4B78 0021;
+4B7A 0021;
+4B7C 0021;
+4B7E 0021;
+4B80 0021;
+4B82 0021;
+4B84 0021;
+4B86 0021;
+4B88 0021;
+4B8A 0021;
+4B8C 0021;
+4B8E 0021;
+4B90 0021;
+4B92 0021;
+4B94 0021;
+4B96 0021;
+4B98 0021;
+4B9A 0021;
+4B9C 0021;
+4B9E 0021;
+4BA0 0021;
+4BA2 0021;
+4BA4 0021;
+4BA6 0021;
+4BA8 0021;
+4BAA 0021;
+4BAC 0021;
+4BAE 0021;
+4BB0 0021;
+4BB2 0021;
+4BB4 0021;
+4BB6 0021;
+4BB8 0021;
+4BBA 0021;
+4BBC 0021;
+4BBE 0021;
+4BC0 0021;
+4BC2 0021;
+4BC4 0021;
+4BC6 0021;
+4BC8 0021;
+4BCA 0021;
+4BCC 0021;
+4BCE 0021;
+4BCF 0021;
+4BD1 0021;
+4BD3 0021;
+4BD5 0021;
+4BD7 0021;
+4BD9 0021;
+4BDB 0021;
+4BDD 0021;
+4BDF 0021;
+4BE1 0021;
+4BE3 0021;
+4BE5 0021;
+4BE7 0021;
+4BE9 0021;
+4BEB 0021;
+4BED 0021;
+4BEF 0021;
+4BF1 0021;
+4BF3 0021;
+4BF5 0021;
+4BF7 0021;
+4BF9 0021;
+4BFB 0021;
+4BFD 0021;
+4BFF 0021;
+4C01 0021;
+4C03 0021;
+4C05 0021;
+4C07 0021;
+4C09 0021;
+4C0B 0021;
+4C0D 0021;
+4C0F 0021;
+4C11 0021;
+4C13 0021;
+4C15 0021;
+4C17 0021;
+4C19 0021;
+4C1B 0021;
+4C1D 0021;
+4C1F 0021;
+4C21 0021;
+4C23 0021;
+4C25 0021;
+4C27 0021;
+4C29 0021;
+4C2B 0021;
+4C2D 0021;
+4C2F 0021;
+4C31 0021;
+4C33 0021;
+4C35 0021;
+4C37 0021;
+4C39 0021;
+4C3B 0021;
+4C3D 0021;
+4C3F 0021;
+4C41 0021;
+4C43 0021;
+4C45 0021;
+4C47 0021;
+4C49 0021;
+4C4B 0021;
+4C4D 0021;
+4C4F 0021;
+4C51 0021;
+4C53 0021;
+4C55 0021;
+4C57 0021;
+4C59 0021;
+4C5B 0021;
+4C5D 0021;
+4C5F 0021;
+4C61 0021;
+4C63 0021;
+4C65 0021;
+4C67 0021;
+4C69 0021;
+4C6B 0021;
+4C6D 0021;
+4C6F 0021;
+4C71 0021;
+4C73 0021;
+4C75 0021;
+4C77 0021;
+4C79 0021;
+4C7B 0021;
+4C7D 0021;
+4C7F 0021;
+4C81 0021;
+4C83 0021;
+4C85 0021;
+4C87 0021;
+4C89 0021;
+4C8B 0021;
+4C8D 0021;
+4C8F 0021;
+4C91 0021;
+4C93 0021;
+4C95 0021;
+4C97 0021;
+4C99 0021;
+4C9B 0021;
+4C9D 0021;
+4C9F 0021;
+4CA1 0021;
+4CA3 0021;
+4CA5 0021;
+4CA7 0021;
+4CA9 0021;
+4CAB 0021;
+4CAD 0021;
+4CAF 0021;
+4CB1 0021;
+4CB3 0021;
+4CB5 0021;
+4CB7 0021;
+4CB9 0021;
+4CBB 0021;
+4CBD 0021;
+4CBF 0021;
+4CC1 0021;
+4CC3 0021;
+4CC5 0021;
+4CC7 0021;
+4CC9 0021;
+4CCB 0021;
+4CCD 0021;
+2FA0D 0061;
+4CD0 0021;
+4CD2 0021;
+4CD4 0021;
+4CD6 0021;
+4CD8 0021;
+4CDA 0021;
+4CDC 0021;
+4CDE 0021;
+4CE0 0021;
+4CE2 0021;
+4CE4 0021;
+4CE6 0021;
+4CE8 0021;
+4CEA 0021;
+4CEC 0021;
+2FA0E 0061;
+4CEF 0021;
+4CF1 0021;
+4CF3 0021;
+4CF5 0021;
+4CF7 0021;
+2FA11 0061;
+4CFA 0021;
+4CFC 0021;
+4CFE 0021;
+4D00 0021;
+4D02 0021;
+4D04 0021;
+4D06 0021;
+4D08 0021;
+4D0A 0021;
+4D0C 0021;
+4D0E 0021;
+4D10 0021;
+4D12 0021;
+4D14 0021;
+4D16 0021;
+4D18 0021;
+4D1A 0021;
+4D1C 0021;
+4D1E 0021;
+4D20 0021;
+4D22 0021;
+4D24 0021;
+4D26 0021;
+4D28 0021;
+4D2A 0021;
+4D2C 0021;
+4D2E 0021;
+4D30 0021;
+4D32 0021;
+4D34 0021;
+4D36 0021;
+4D38 0021;
+4D3A 0021;
+4D3C 0021;
+4D3E 0021;
+4D40 0021;
+4D42 0021;
+4D44 0021;
+4D46 0021;
+4D48 0021;
+4D4A 0021;
+4D4C 0021;
+4D4E 0021;
+4D50 0021;
+4D52 0021;
+4D54 0021;
+4D56 0021;
+4D57 0021;
+4D59 0021;
+4D5B 0021;
+4D5D 0021;
+4D5F 0021;
+4D61 0021;
+4D63 0021;
+4D65 0021;
+4D67 0021;
+4D69 0021;
+4D6B 0021;
+4D6D 0021;
+4D6F 0021;
+4D71 0021;
+4D73 0021;
+4D75 0021;
+4D77 0021;
+4D79 0021;
+4D7B 0021;
+4D7D 0021;
+4D7F 0021;
+4D81 0021;
+4D83 0021;
+4D85 0021;
+4D87 0021;
+4D89 0021;
+4D8B 0021;
+4D8D 0021;
+4D8F 0021;
+4D91 0021;
+4D93 0021;
+4D95 0021;
+4D97 0021;
+4D99 0021;
+4D9B 0021;
+4D9D 0021;
+4D9F 0021;
+4DA1 0021;
+4DA3 0021;
+4DA5 0021;
+4DA7 0021;
+4DA9 0021;
+4DAB 0021;
+4DAD 0021;
+4DAF 0021;
+4DB1 0021;
+4DB3 0021;
+4DB5 0021;
+20001 0021;
+20003 0021;
+20005 0021;
+2F812 0021;
+2F816 0021;
+2F9D9 0021;
+2F834 0021;
+2F859 0021;
+2F861 0021;
+2F871 0021;
+2F87B 0021;
+2F889 0021;
+2F891 0021;
+2F8A4 0021;
+FACF 0021;
+2F8BE 0021;
+2F897 0021;
+2F989 0021;
+2F8DD 0021;
+2F8E3 0021;
+2F8F0 0021;
+2F8F9 0021;
+2F906 0021;
+2F910 0021;
+2F91D 0021;
+2F923 0021;
+2F927 0021;
+2F937 0021;
+2F93C 0021;
+2F942 0021;
+2F943 0021;
+FAD5 0021;
+2F952 0021;
+2F955 0021;
+2F95D 0021;
+2F961 0021;
+FAD6 0021;
+2F898 0021;
+2F973 0021;
+2F977 0021;
+2F97C 0021;
+2F987 0021;
+2F997 0021;
+2F9A6 0021;
+2F9AD 0021;
+2F9B1 0021;
+2F9C5 0021;
+2F9CC 0021;
+FAD7 0021;
+2F9E0 0021;
+2F9E5 0021;
+2F9F1 0021;
+2F81C 0021;
+2F9FB 0021;
+2FA01 0021;
+2FA10 0021;
+2FA13 0021;
+2F88F 0021;
+2A6D1 0021;
+2A6D3 0021;
+2A6D5 0021;
+0378 0021;
+E001 0021;
+E003 0021;
+E005 0021;
+F8FB 0021;
+F8FD 0021;
+F8FF 0021;
+C0000 0021;
+E0000 0021;
+E0003 0021;
+E0005 0021;
+F0001 0021;
+F0003 0021;
+F0005 0021;
+F00F9 0021;
+F00FB 0021;
+F00FD 0021;
+FFF01 0021;
+FFF03 0021;
+FFF05 0021;
+FFFF9 0021;
+FFFFB 0021;
+FFFFD 0021;
+100001 0021;
+100003 0021;
+100005 0021;
+1000F9 0021;
+1000FB 0021;
+1000FD 0021;
+10FF01 0021;
+10FF03 0021;
+10FF05 0021;
+10FFF9 0021;
+10FFFB 0021;
+10FFFD 0021;
+10FFFD 0062;
diff --git a/src/com/ibm/icu/dev/data/CollationTest_SHIFTED_STUB.txt b/src/com/ibm/icu/dev/data/CollationTest_SHIFTED_STUB.txt
new file mode 100644
index 0000000..9ca911e
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/CollationTest_SHIFTED_STUB.txt
@@ -0,0 +1,13830 @@
+0009 0021;
+0085 0021;
+2002 0021;
+205F 0021;
+2006 003F;
+0640 0021;
+00B4 0021;
+005E 003F;
+FE4C 0021;
+00A8 0300 0334;
+1FEE 0334;
+1FEE 003F;
+1FBF 0334 0342;
+1FCF 0021;
+1FFE 0334 0300;
+1FFE 0021;
+FE33 0021;
+FE4E 003F;
+309C 003F;
+058A 003F;
+2011 003F;
+2014 003F;
+301C 003F;
+FE10 0021;
+060C 003F;
+1802 003F;
+FE11 003F;
+FE54 0021;
+204F 003F;
+FF1A 003F;
+0705 003F;
+1363 003F;
+1805 003F;
+16EC 003F;
+0007 0021;
+0016 0021;
+007F 0021;
+008A 0021;
+0094 0021;
+009E 0021;
+0596 0021;
+05A0 0021;
+05AA 0021;
+0601 0021;
+0617 0021;
+06DC 0021;
+06E8 0021;
+0F82 0021;
+1B6C 0021;
+200D 0021;
+2062 0021;
+A671 0021;
+FDD1 0021;
+FE05 0021;
+FE0F 0021;
+FFFB 0021;
+1D16F 0021;
+1D179 0021;
+1D185 0021;
+1D1AD 0021;
+4FFFE 0021;
+9FFFE 0021;
+E0001 0021;
+E0029 0021;
+E0033 0021;
+E003D 0021;
+E0047 0021;
+E0051 0021;
+E005B 0021;
+E0065 0021;
+E006F 0021;
+E0079 0021;
+E0103 0021;
+E010D 0021;
+E0117 0021;
+E0121 0021;
+E012B 0021;
+E0135 0021;
+E013F 0021;
+E0149 0021;
+E0153 0021;
+E015D 0021;
+E0167 0021;
+E0171 0021;
+E017B 0021;
+E0185 0021;
+E018F 0021;
+E0199 0021;
+E01A3 0021;
+E01AD 0021;
+E01B7 0021;
+E01C1 0021;
+E01CB 0021;
+E01D5 0021;
+E01DF 0021;
+E01E9 0021;
+10FFFF 0021;
+FF01 003F;
+1944 003F;
+000E 003F;
+0018 003F;
+0081 003F;
+008C 003F;
+0096 003F;
+034F 003F;
+0598 003F;
+05A2 003F;
+05AC 003F;
+0603 003F;
+0619 003F;
+06DE 003F;
+06EB 003F;
+0F86 003F;
+1B6E 003F;
+200F 003F;
+2064 003F;
+D800 003F;
+FDD3 003F;
+FE07 003F;
+FE23 003F;
+FFFF 003F;
+1D171 003F;
+1D17B 003F;
+1D187 003F;
+1D243 003F;
+5FFFE 003F;
+AFFFE 003F;
+E0021 003F;
+E002B 003F;
+E0035 003F;
+E003F 003F;
+E0049 003F;
+E0053 003F;
+E005D 003F;
+E0067 003F;
+E0071 003F;
+E007B 003F;
+E0105 003F;
+E010F 003F;
+E0119 003F;
+E0123 003F;
+E012D 003F;
+E0137 003F;
+E0141 003F;
+E014B 003F;
+E0155 003F;
+E015F 003F;
+E0169 003F;
+E0173 003F;
+E017D 003F;
+E0187 003F;
+E0191 003F;
+E019B 003F;
+E01A5 003F;
+E01AF 003F;
+E01B9 003F;
+E01C3 003F;
+E01CD 003F;
+E01D7 003F;
+E01E1 003F;
+E01EB 003F;
+FE16 0021;
+2047 003F;
+0709 003F;
+A60F 003F;
+2024 003F;
+FE19 003F;
+1362 003F;
+2CF9 003F;
+3002 003F;
+0965 003F;
+A876 003F;
+104A 003F;
+1B5F 003F;
+10A57 003F;
+10FB 003F;
+1B5A 003F;
+2058 003F;
+205D 003F;
+2E2D 003F;
+10100 003F;
+1091F 003F;
+FF07 0021;
+201B 003F;
+201C 003F;
+301E 003F;
+FE35 0021;
+207E 0021;
+FF09 003F;
+005D 003F;
+FF5B 003F;
+0F3A 003F;
+169C 003F;
+2983 003F;
+FF60 003F;
+298B 003F;
+2990 003F;
+2995 003F;
+27ED 003F;
+2E04 003F;
+2E0D 003F;
+2E22 003F;
+2E27 003F;
+FE3F 003F;
+FE3D 003F;
+FF62 003F;
+FE43 003F;
+FE3C 0021;
+FE3A 0021;
+FE18 0021;
+301B 003F;
+204B 003F;
+FF20 003F;
+2051 003F;
+2044 003F;
+0026 003F;
+0023 003F;
+066A 003F;
+2052 003F;
+2027 003F;
+2033 003F;
+2037 003F;
+203F 003F;
+2042 003F;
+2E08 003F;
+2E11 003F;
+2E16 003F;
+A67E 003F;
+05C0 003F;
+070A 003F;
+180A 003F;
+0F04 003F;
+0F09 003F;
+0F0C 003F;
+0F11 003F;
+0FD4 003F;
+104C 003F;
+109F 003F;
+166D 003F;
+10A50 003F;
+10A55 003F;
+02BA 003F;
+02C6 003F;
+02CB 003F;
+02D2 003F;
+02D7 003F;
+02E7 003F;
+02EC 003F;
+02F2 003F;
+02F7 003F;
+02FC 003F;
+1391 003F;
+1396 003F;
+A701 003F;
+A706 003F;
+A70B 003F;
+A710 003F;
+A715 003F;
+A71A 003F;
+A71F 003F;
+A78A 003F;
+060F 003F;
+0B70 003F;
+0BF7 003F;
+0CF2 003F;
+A82B 003F;
+0F13 003F;
+0F1B 003F;
+0F34 003F;
+0FBE 003F;
+0FC3 003F;
+0FC9 003F;
+0FCF 003F;
+19E4 003F;
+19E9 003F;
+19EE 003F;
+19F3 003F;
+19F8 003F;
+19FD 003F;
+1B63 003F;
+1B68 003F;
+1B76 003F;
+1B7B 003F;
+2117 003F;
+2125 003F;
+2141 003F;
+214C 003F;
+2190 003F;
+FFEB 003F;
+21AE 0334;
+2197 003F;
+219E 003F;
+21A3 003F;
+21A8 003F;
+21AD 003F;
+21B3 003F;
+21B8 003F;
+21BD 003F;
+21C2 003F;
+21C7 003F;
+21CC 003F;
+21D2 0338 0334;
+21D4 0021;
+21D8 003F;
+21DD 003F;
+21E2 003F;
+21E7 003F;
+21EC 003F;
+21F1 003F;
+21F6 003F;
+21FB 003F;
+2200 003F;
+1D6DB 003F;
+2204 003F;
+1D7A9 0021;
+2209 0021;
+220C 003F;
+2210 003F;
+FF0B 0021;
+00F7 003F;
+226E 003F;
+FF1D 0021;
+2A76 003F;
+FF1E 003F;
+FFE4 0021;
+208B 0021;
+2215 003F;
+221A 003F;
+221D 003F;
+2222 003F;
+2226 0021;
+222A 003F;
+222E 003F;
+2233 003F;
+2238 003F;
+2241 0021;
+2240 003F;
+2247 0334;
+2249 0021;
+226D 0334;
+2250 003F;
+2255 003F;
+225A 003F;
+225F 003F;
+2270 0334;
+2271 003F;
+226A 003F;
+2274 003F;
+2278 0021;
+2280 0334;
+2281 003F;
+22E1 0021;
+2284 0021;
+2288 0334;
+2289 003F;
+228E 003F;
+22E2 003F;
+2294 003F;
+2299 003F;
+229E 003F;
+22AC 0021;
+22A6 003F;
+22AE 0334;
+22AF 0021;
+22EA 0021;
+22EC 0334;
+22ED 003F;
+22BA 003F;
+22BF 003F;
+22C4 003F;
+22C9 003F;
+22CE 003F;
+22D3 003F;
+22D8 003F;
+22DD 003F;
+22E6 003F;
+22EF 003F;
+22F4 003F;
+22F9 003F;
+22FE 003F;
+2303 003F;
+2308 003F;
+230D 003F;
+2312 003F;
+2317 003F;
+231C 003F;
+2321 003F;
+2326 003F;
+232D 003F;
+2332 003F;
+2337 003F;
+233C 003F;
+2341 003F;
+2346 003F;
+234B 003F;
+2350 003F;
+2355 003F;
+235A 003F;
+235F 003F;
+2364 003F;
+2369 003F;
+236E 003F;
+2373 003F;
+2378 003F;
+237D 003F;
+2382 003F;
+2387 003F;
+238C 003F;
+2391 003F;
+2396 003F;
+239B 003F;
+23A0 003F;
+23A5 003F;
+23AA 003F;
+23AF 003F;
+23B4 003F;
+23B9 003F;
+23BE 003F;
+23C3 003F;
+23C8 003F;
+23CD 003F;
+23D2 003F;
+23D7 003F;
+23DC 003F;
+23E1 003F;
+23E6 003F;
+2403 003F;
+2408 003F;
+240D 003F;
+2412 003F;
+2417 003F;
+241C 003F;
+2421 003F;
+2426 003F;
+2444 003F;
+2449 003F;
+FFE8 003F;
+2507 003F;
+250C 003F;
+2511 003F;
+2516 003F;
+251B 003F;
+2520 003F;
+2525 003F;
+252A 003F;
+252F 003F;
+2534 003F;
+2539 003F;
+253E 003F;
+2543 003F;
+2548 003F;
+254D 003F;
+2552 003F;
+2557 003F;
+255C 003F;
+2561 003F;
+2566 003F;
+256B 003F;
+2570 003F;
+2575 003F;
+257A 003F;
+257F 003F;
+2584 003F;
+2589 003F;
+258E 003F;
+2593 003F;
+2598 003F;
+259D 003F;
+25A1 003F;
+25A6 003F;
+25AB 003F;
+25B0 003F;
+25B5 003F;
+25BA 003F;
+25BF 003F;
+25C4 003F;
+25C9 003F;
+25CD 003F;
+25D2 003F;
+25D7 003F;
+25DC 003F;
+25E1 003F;
+25E6 003F;
+25EB 003F;
+25F0 003F;
+25F5 003F;
+25FA 003F;
+25FF 003F;
+2604 003F;
+2609 003F;
+260E 003F;
+2613 003F;
+2618 003F;
+261D 003F;
+2622 003F;
+2627 003F;
+262C 003F;
+2639 003F;
+263E 003F;
+2643 003F;
+2648 003F;
+264D 003F;
+2652 003F;
+2657 003F;
+265C 003F;
+2661 003F;
+2666 003F;
+266B 003F;
+2673 003F;
+2678 003F;
+267D 003F;
+2682 003F;
+2687 003F;
+2692 003F;
+2697 003F;
+269C 003F;
+26A3 003F;
+26A8 003F;
+26AD 003F;
+26B2 003F;
+26B7 003F;
+26BC 003F;
+2701 003F;
+2707 003F;
+270E 003F;
+2713 003F;
+2718 003F;
+271D 003F;
+2722 003F;
+2727 003F;
+272D 003F;
+2732 003F;
+2737 003F;
+273C 003F;
+2741 003F;
+2746 003F;
+274B 003F;
+2752 003F;
+275B 003F;
+2762 003F;
+2767 003F;
+276C 003F;
+2771 003F;
+2794 003F;
+279C 003F;
+27A1 003F;
+27A6 003F;
+27AB 003F;
+27B1 003F;
+27B6 003F;
+27BB 003F;
+27C1 003F;
+27C6 003F;
+27CC 003F;
+27D4 003F;
+27D9 003F;
+27DE 003F;
+27E3 003F;
+27E8 003F;
+27F1 003F;
+27F6 003F;
+27FB 003F;
+2900 003F;
+2905 003F;
+290A 003F;
+290F 003F;
+2914 003F;
+2919 003F;
+291E 003F;
+2923 003F;
+2928 003F;
+292D 003F;
+2932 003F;
+2937 003F;
+293C 003F;
+2941 003F;
+2946 003F;
+294B 003F;
+2950 003F;
+2955 003F;
+295A 003F;
+295F 003F;
+2964 003F;
+2969 003F;
+296E 003F;
+2973 003F;
+2978 003F;
+297D 003F;
+2982 003F;
+299D 003F;
+29A2 003F;
+29A7 003F;
+29AC 003F;
+29B1 003F;
+29B6 003F;
+29BB 003F;
+29C0 003F;
+29C5 003F;
+29CA 003F;
+29CF 003F;
+29D4 003F;
+29D9 003F;
+29DE 003F;
+29E3 003F;
+29E8 003F;
+29ED 003F;
+29F2 003F;
+29F7 003F;
+29FE 003F;
+2A03 003F;
+2A08 003F;
+2A0E 003F;
+2A13 003F;
+2A18 003F;
+2A1D 003F;
+2A22 003F;
+2A27 003F;
+2A2C 003F;
+2A31 003F;
+2A36 003F;
+2A3B 003F;
+2A40 003F;
+2A45 003F;
+2A4A 003F;
+2A4F 003F;
+2A54 003F;
+2A59 003F;
+2A5E 003F;
+2A63 003F;
+2A68 003F;
+2A6D 003F;
+2A72 003F;
+2A7A 003F;
+2A7F 003F;
+2A84 003F;
+2A89 003F;
+2A8E 003F;
+2A93 003F;
+2A98 003F;
+2A9D 003F;
+2AA2 003F;
+2AA7 003F;
+2AAC 003F;
+2AB1 003F;
+2AB6 003F;
+2ABB 003F;
+2AC0 003F;
+2AC5 003F;
+2ACA 003F;
+2ACF 003F;
+2AD4 003F;
+2AD9 003F;
+2ADD 003F;
+2AE2 003F;
+2AE7 003F;
+2AEC 003F;
+2AF1 003F;
+2AF6 003F;
+2AFB 003F;
+2B00 003F;
+2B05 003F;
+2B0A 003F;
+2B0F 003F;
+2B14 003F;
+2B19 003F;
+2B1E 003F;
+2B23 003F;
+2B28 003F;
+2B2D 003F;
+2B32 003F;
+2B37 003F;
+2B3C 003F;
+2B41 003F;
+2B46 003F;
+2B4B 003F;
+2B53 003F;
+2CE8 003F;
+2802 003F;
+2807 003F;
+280C 003F;
+2811 003F;
+2816 003F;
+281B 003F;
+2820 003F;
+2825 003F;
+282A 003F;
+282F 003F;
+2834 003F;
+2839 003F;
+283E 003F;
+2843 003F;
+2848 003F;
+284D 003F;
+2852 003F;
+2857 003F;
+285C 003F;
+2861 003F;
+2866 003F;
+286B 003F;
+2870 003F;
+2875 003F;
+287A 003F;
+287F 003F;
+2884 003F;
+2889 003F;
+288E 003F;
+2893 003F;
+2898 003F;
+289D 003F;
+28A2 003F;
+28A7 003F;
+28AC 003F;
+28B1 003F;
+28B6 003F;
+28BB 003F;
+28C0 003F;
+28C5 003F;
+28CA 003F;
+28CF 003F;
+28D4 003F;
+28D9 003F;
+28DE 003F;
+28E3 003F;
+28E8 003F;
+28ED 003F;
+28F2 003F;
+28F7 003F;
+28FC 003F;
+268B 003F;
+2630 003F;
+2635 003F;
+4DC2 003F;
+4DC7 003F;
+4DCC 003F;
+4DD1 003F;
+4DD6 003F;
+4DDB 003F;
+4DE0 003F;
+4DE5 003F;
+4DEA 003F;
+4DEF 003F;
+4DF4 003F;
+4DF9 003F;
+4DFE 003F;
+1D303 003F;
+1D308 003F;
+1D30D 003F;
+1D312 003F;
+1D317 003F;
+1D31C 003F;
+1D321 003F;
+1D326 003F;
+1D32B 003F;
+1D330 003F;
+1D335 003F;
+1D33A 003F;
+1D33F 003F;
+1D344 003F;
+1D349 003F;
+1D34E 003F;
+1D353 003F;
+A491 003F;
+A496 003F;
+A49B 003F;
+A4A0 003F;
+A4A5 003F;
+A4AA 003F;
+A4AF 003F;
+A4B4 003F;
+A4B9 003F;
+A4BE 003F;
+A4C3 003F;
+10138 003F;
+1013D 003F;
+1017B 003F;
+10180 003F;
+10185 003F;
+10190 003F;
+10195 003F;
+1019A 003F;
+101D3 003F;
+101D8 003F;
+101DD 003F;
+101E2 003F;
+101E7 003F;
+101EC 003F;
+101F1 003F;
+101F6 003F;
+101FB 003F;
+1D003 003F;
+1D008 003F;
+1D00D 003F;
+1D012 003F;
+1D017 003F;
+1D01C 003F;
+1D021 003F;
+1D026 003F;
+1D02B 003F;
+1D030 003F;
+1D035 003F;
+1D03A 003F;
+1D03F 003F;
+1D044 003F;
+1D049 003F;
+1D04E 003F;
+1D053 003F;
+1D058 003F;
+1D05D 003F;
+1D062 003F;
+1D067 003F;
+1D06C 003F;
+1D071 003F;
+1D076 003F;
+1D07B 003F;
+1D080 003F;
+1D085 003F;
+1D08A 003F;
+1D08F 003F;
+1D094 003F;
+1D099 003F;
+1D09E 003F;
+1D0A3 003F;
+1D0A8 003F;
+1D0AD 003F;
+1D0B2 003F;
+1D0B7 003F;
+1D0BC 003F;
+1D0C1 003F;
+1D0C6 003F;
+1D0CB 003F;
+1D0D0 003F;
+1D0D5 003F;
+1D0DA 003F;
+1D0DF 003F;
+1D0E4 003F;
+1D0E9 003F;
+1D0EE 003F;
+1D0F3 003F;
+1D102 003F;
+1D107 003F;
+1D10C 003F;
+1D111 003F;
+1D116 003F;
+1D11B 003F;
+1D120 003F;
+1D125 003F;
+1D12A 003F;
+1D12F 003F;
+1D134 003F;
+1D139 003F;
+1D13D 003F;
+1D142 003F;
+1D147 003F;
+1D14C 003F;
+1D151 003F;
+1D156 003F;
+1D158 0334 1D165 1D16F;
+1D158 1D165 1D171 0334;
+1D161 0334;
+1D160 003F;
+1D15B 003F;
+1D16C 003F;
+1D18E 003F;
+1D193 003F;
+1D198 003F;
+1D19D 003F;
+1D1A2 003F;
+1D1A7 003F;
+1D1B0 003F;
+1D1B5 003F;
+1D1B9 1D165 0334 1D16E;
+1D1BD 0021;
+1D1BC 0334;
+1D1C0 0021;
+1D1C3 003F;
+1D1C8 003F;
+1D1CD 003F;
+1D1D2 003F;
+1D1D7 003F;
+1D1DC 003F;
+1D203 003F;
+1D208 003F;
+1D20D 003F;
+1D212 003F;
+1D217 003F;
+1D21C 003F;
+1D221 003F;
+1D226 003F;
+1D22B 003F;
+1D230 003F;
+1D235 003F;
+1D23A 003F;
+1D23F 003F;
+1F001 003F;
+1F006 003F;
+1F00B 003F;
+1F010 003F;
+1F015 003F;
+1F01A 003F;
+1F01F 003F;
+1F024 003F;
+1F029 003F;
+1F032 003F;
+1F037 003F;
+1F03C 003F;
+1F041 003F;
+1F046 003F;
+1F04B 003F;
+1F050 003F;
+1F055 003F;
+1F05A 003F;
+1F05F 003F;
+1F064 003F;
+1F069 003F;
+1F06E 003F;
+1F073 003F;
+1F078 003F;
+1F07D 003F;
+1F082 003F;
+1F087 003F;
+1F08C 003F;
+1F091 003F;
+2FF2 003F;
+2FF7 003F;
+31C0 003F;
+31C5 003F;
+31CA 003F;
+31CF 003F;
+31D4 003F;
+31D9 003F;
+31DE 003F;
+31E3 003F;
+3020 003F;
+3191 003F;
+09F9 003F;
+0D71 003F;
+1372 003F;
+1377 003F;
+137C 003F;
+2187 003F;
+10110 003F;
+10115 003F;
+1011A 003F;
+1011F 003F;
+10124 003F;
+10129 003F;
+1012E 003F;
+10133 003F;
+10146 003F;
+1014C 003F;
+10152 003F;
+10157 003F;
+10164 003F;
+10169 003F;
+1016E 003F;
+10174 003F;
+103D3 003F;
+10919 003F;
+12432 003F;
+1245B 003F;
+12460 003F;
+1D36B 003F;
+1D370 003F;
+0314 003F;
+0306 003F;
+0308 003F;
+0338 003F;
+0309 0021;
+0311 0021;
+0318 0021;
+031D 0021;
+0322 0021;
+0329 0021;
+032E 0021;
+0334 0591;
+0334 059B;
+0334 05A5;
+0334 05AF;
+0334 06D6;
+0334 06E2;
+0334 0F19;
+0334 1B6D;
+0334 1D166;
+0334 1D17E;
+0334 1D18A;
+0592 0334;
+059C 0334;
+05A6 0334;
+05BD 0334;
+0617 0334;
+06DC 0334;
+06EB 0334;
+0F87 0334;
+1B73 0334;
+1D169 0334;
+1D17E 0334;
+1D18A 0334;
+0334 003F;
+0334 0301;
+0334 0302;
+0308 0334 0341;
+0334 0327;
+0334 030D;
+0334 0312;
+0334 0319;
+0334 031E;
+0334 0323;
+0334 032A;
+0334 032F;
+0334 033A;
+0334 033F;
+0334 0349;
+0334 034E;
+0334 0354;
+0334 0359;
+0334 035E;
+0361 0334;
+0334 1DC3;
+0334 1DC8;
+1DD1 0334;
+0485 0334;
+05B1 0334;
+05B6 0334;
+05BA 0334;
+05BF 0334;
+064E 0334;
+0653 0334;
+0658 0334;
+065D 0334;
+0731 0334;
+0736 0334;
+073B 0334;
+0740 0334;
+0745 0334;
+074A 0334;
+07EF 0334;
+093C 0334;
+09BC 0334;
+1B34 0334;
+0E48 0334;
+0EC9 0334;
+A92D 0334;
+0334 193A;
+0334 302D;
+0334 20D0;
+0334 20D7;
+0334 20E8;
+0334 20EF;
+0337 0021;
+033C 003F;
+0346 003F;
+034B 003F;
+0351 003F;
+0356 003F;
+035B 003F;
+FE22 0021;
+1DC0 003F;
+1DC5 003F;
+1DCB 003F;
+1DD0 003F;
+0484 003F;
+A67C 003F;
+05B3 003F;
+05B8 003F;
+05C2 003F;
+064B 003F;
+FC5E 003F;
+FE77 003F;
+FE79 003F;
+FE7B 003F;
+FE7D 003F;
+FE7E 003F;
+0657 003F;
+065C 003F;
+0730 003F;
+0735 003F;
+073A 003F;
+073F 003F;
+0744 003F;
+0749 003F;
+07EE 003F;
+07F3 003F;
+0951 003F;
+0981 003F;
+0A02 003F;
+0A81 003F;
+0B02 003F;
+0C03 003F;
+0D03 003F;
+1B01 003F;
+1B81 003F;
+10A0D 003F;
+10A3A 0021;
+0E4A 0021;
+0EC9 0021;
+0F39 0021;
+A92C 0021;
+108D 0021;
+17C9 0021;
+17CE 0021;
+17DD 0021;
+302B 0021;
+3099 0021;
+20D1 0021;
+20D5 0021;
+20D9 003F;
+20DD 003F;
+20E2 003F;
+20E6 0334;
+20EB 0021;
+20EF 003F;
+02D1 0021;
+0E46 0021;
+3005 0021;
+3031 0021;
+3033 0021;
+3035 0021;
+309E 0021;
+FF70 0021;
+30FD 0334 3099;
+30FE 0062;
+00A2 0061;
+FE69 0021;
+FE69 0062;
+FFE1 0062;
+FFE5 0062;
+09F2 0062;
+0AF1 0062;
+0E3F 0062;
+20A0 0062;
+20A2 0062;
+20A4 0062;
+20A6 0062;
+20A9 0061;
+20AA 0062;
+20AC 0062;
+20AE 0062;
+20B0 0062;
+20B2 0062;
+20B4 0062;
+1D7CE 0021;
+24EA 0021;
+06F0 0021;
+0A66 0021;
+0C66 003F;
+19D0 0021;
+1C40 0021;
+17F0 0021;
+1C50 0021;
+FF10 0061;
+1D7EC 0041;
+0660 0061;
+09E6 0061;
+0C66 0061;
+1946 0061;
+0F33 0061;
+17E0 0061;
+1810 0061;
+0030 0062;
+2080 0062;
+0BE6 0062;
+0F20 0062;
+1BB0 0062;
+3358 0062;
+1D7D9 0021;
+24F5 0021;
+00B9 003F;
+07C1 003F;
+09F4 003F;
+0C79 0021;
+A8D1 003F;
+0F21 003F;
+1091 003F;
+1BB1 003F;
+10107 003F;
+10320 003F;
+1241E 003F;
+1D360 003F;
+2469 003F;
+24FE 0061;
+247D 0062;
+33E9 0062;
+3362 0062;
+2492 0041;
+24EB 0062;
+32CA 0062;
+246B 0021;
+246B 0061;
+00BD 0062;
+32CB 0062;
+246C 0021;
+246C 0061;
+2153 0062;
+3365 0062;
+00BC 003F;
+00BC 0041;
+33ED 0062;
+246E 0021;
+246E 0061;
+2155 0062;
+3367 0062;
+2159 003F;
+2159 0041;
+33EF 0062;
+2470 0021;
+2470 0041;
+33F0 0062;
+2471 0021;
+2471 0061;
+215B 0062;
+336A 0062;
+249A 0041;
+24F3 0062;
+336B 0062;
+1D7D9 0061;
+24F5 0061;
+00B9 0041;
+07C1 0041;
+09F4 0041;
+0C79 0061;
+A8D1 0041;
+0F21 0041;
+1091 0041;
+1BB1 0041;
+10107 0041;
+10320 0041;
+1241E 0041;
+1D360 0041;
+2460 0062;
+07C1 0062;
+0C67 0062;
+0F21 0062;
+1BB1 0062;
+10320 0062;
+1D360 0062;
+32C0 0062;
+2475 0021;
+1D7DA 003F;
+24F6 003F;
+06F2 0021;
+09E8 0021;
+0BE8 0021;
+0D68 0021;
+0ED2 0021;
+1042 0021;
+1B52 0021;
+3022 0021;
+1015D 003F;
+1244A 0021;
+12450 003F;
+2473 0021;
+2473 0041;
+33F3 0062;
+3251 0062;
+336D 0062;
+33F5 0062;
+3253 0061;
+33F6 0062;
+3254 0062;
+3370 0062;
+2156 0062;
+3256 0062;
+3257 0062;
+3258 0062;
+3259 0062;
+2475 0061;
+1D7DA 0041;
+24F6 0041;
+06F2 0061;
+09E8 0061;
+0BE8 0061;
+0D68 0061;
+0ED2 0061;
+1042 0061;
+1B52 0061;
+3022 0061;
+1015D 0041;
+1244A 0061;
+12450 0041;
+1D7D0 0062;
+00B2 0062;
+0A68 0062;
+1948 0062;
+17E2 0062;
+1015B 0062;
+12435 0062;
+33E1 0062;
+335A 0062;
+1D7DB 0021;
+24F7 0021;
+00B3 003F;
+136B 003F;
+0A69 003F;
+0C69 003F;
+1949 003F;
+0F2C 003F;
+17E3 003F;
+1813 003F;
+12408 0021;
+1243B 0021;
+1242F 003F;
+1D362 003F;
+33FD 0062;
+33FE 0062;
+325D 0062;
+00BE 0062;
+2157 0062;
+32B2 0062;
+215C 0062;
+2476 0061;
+1D7DB 0041;
+24F7 0041;
+06F3 0061;
+09E9 0061;
+0BE9 0061;
+0D69 0061;
+0ED3 0061;
+1043 0061;
+1B53 0061;
+3023 0061;
+1242E 0061;
+12417 0041;
+1244B 0041;
+1D7D1 0062;
+00B3 0062;
+0A69 0062;
+1949 0062;
+17E3 0062;
+12401 0062;
+1243A 0062;
+33E2 0062;
+335B 0062;
+1D7DC 0021;
+24F8 0021;
+2074 003F;
+136C 003F;
+0A6A 003F;
+0CEA 003F;
+0E54 003F;
+A904 003F;
+AA54 003F;
+A624 003F;
+12426 0021;
+12402 003F;
+1243E 003F;
+32B5 003F;
+32B7 003F;
+32B9 003F;
+2158 0061;
+32BC 003F;
+32BE 003F;
+2477 0041;
+1D7F0 0041;
+2783 0041;
+07C4 0061;
+09EA 0041;
+0C6A 0061;
+19D4 0061;
+1C44 0061;
+17F4 0061;
+1C54 0061;
+1240F 0061;
+1244C 0061;
+12438 0041;
+1D363 0061;
+1D7FA 0062;
+07C4 0062;
+0C6A 0062;
+1C44 0062;
+1C54 0062;
+12430 0062;
+1D363 0062;
+32C3 0062;
+2478 0021;
+1D7DD 003F;
+24F9 003F;
+06F5 0021;
+09EB 0021;
+0C6B 0021;
+19D5 0021;
+1C45 0021;
+17F5 0021;
+1C55 0021;
+1014F 0021;
+12403 0021;
+12455 0021;
+12454 003F;
+215A 003F;
+0035 0041;
+1D7F1 0061;
+2784 0061;
+2085 0041;
+104A5 0041;
+0B6B 0041;
+A8D5 0041;
+0F25 0041;
+1095 0041;
+1BB5 0041;
+1010B 0041;
+10173 0041;
+12439 0061;
+12431 0041;
+248C 0062;
+278E 0062;
+0A6B 0062;
+0E55 0062;
+AA55 0062;
+1014F 0062;
+12431 0062;
+33E4 0062;
+335D 0062;
+1D7DE 0021;
+24FA 0021;
+2076 003F;
+136E 003F;
+0AEC 003F;
+0D6C 003F;
+0ED6 003F;
+1046 003F;
+1B56 003F;
+3026 003F;
+12440 0021;
+1D365 003F;
+1D7DE 0061;
+24FA 0061;
+2076 0041;
+136E 0041;
+0AEC 0041;
+0D6C 0041;
+0ED6 0041;
+1046 0041;
+1B56 0041;
+3026 0041;
+12440 0061;
+1D365 0041;
+2465 0062;
+136E 0062;
+0D6C 0062;
+1046 0062;
+3026 0062;
+1D365 0062;
+32C5 0062;
+247A 0021;
+1D7DF 003F;
+24FB 003F;
+06F7 0021;
+09ED 0021;
+0C6D 0021;
+19D7 0021;
+1C47 0021;
+17F7 0021;
+1C57 0021;
+12412 0021;
+12429 003F;
+215E 0062;
+1D7DF 0061;
+24FB 0061;
+2077 0041;
+136F 0041;
+0AED 0041;
+0D6D 0041;
+0ED7 0041;
+1047 0041;
+1B57 0041;
+3027 0041;
+12443 0061;
+1D366 0041;
+2466 0062;
+136F 0062;
+0D6D 0062;
+1047 0062;
+3027 0062;
+1D366 0062;
+32C6 0062;
+247B 0021;
+1D7E0 003F;
+24FC 003F;
+06F8 0021;
+09EE 0021;
+0C6E 0021;
+19D8 0021;
+1C48 0021;
+17F8 0021;
+1C58 0021;
+12413 0021;
+12444 003F;
+247B 0041;
+1D7F4 0041;
+2787 0041;
+07C8 0061;
+0A6E 0061;
+0CEE 0061;
+0E58 0061;
+A908 0061;
+AA58 0061;
+A628 0061;
+1242A 0061;
+1D367 0061;
+1D7FE 0062;
+07C8 0062;
+0CEE 0062;
+A908 0062;
+A628 0062;
+1D367 0062;
+32C7 0062;
+247C 0021;
+1D7E1 003F;
+24FD 003F;
+06F9 0021;
+09EF 0021;
+0C6F 0021;
+19D9 0021;
+1C49 0021;
+17F9 0021;
+1C59 0021;
+12414 0021;
+1241D 003F;
+FF19 0061;
+1D7FF 0061;
+2792 0061;
+0669 0061;
+096F 0061;
+0BEF 0061;
+194F 0061;
+0F32 0061;
+17E9 0061;
+1819 0061;
+12407 0061;
+1240E 0041;
+0039 0062;
+24FD 0062;
+104A9 0062;
+A8D9 0062;
+1099 0062;
+1010F 0062;
+1D368 0062;
+32C8 0062;
+000D 0061;
+2004 0061;
+1680 0061;
+005E 0061;
+02D9 0061;
+1FCD 0061;
+FE33 0061;
+00AD 0061;
+2012 0061;
+3030 0061;
+060D 0061;
+FF64 0061;
+2A74 0061;
+0706 0061;
+0F14 0061;
+FE57 0061;
+FE56 0061;
+2CFB 0061;
+FE52 0061;
+1B5C 0061;
+0964 0061;
+A92F 0061;
+10A56 0061;
+1A1F 0061;
+205C 0061;
+1093F 0061;
+12473 0061;
+FF02 0061;
+0028 0061;
+FE5A 0061;
+FE5B 0061;
+169B 0061;
+2986 0061;
+298F 0061;
+27EC 0061;
+2E0C 0061;
+2E26 0061;
+300A 0061;
+300E 0061;
+FE5D 0061;
+301A 0061;
+FE6B 0061;
+FF0F 0061;
+0023 0061;
+060A 0061;
+2057 0061;
+203B 0061;
+2E07 0061;
+2E15 0061;
+05BE 0061;
+1800 0061;
+0F08 0061;
+0F10 0061;
+1940 0061;
+17DA 0061;
+10A54 0061;
+02C5 0061;
+02CF 0061;
+02E6 0061;
+02F1 0061;
+02FB 0061;
+1395 0061;
+A705 0061;
+A70F 0061;
+A719 0061;
+A789 0061;
+09FA 0061;
+0CF1 0061;
+0F03 0061;
+0F1F 0061;
+0FC2 0061;
+0FCE 0061;
+19E8 0061;
+19F2 0061;
+19FC 0061;
+1B67 0061;
+1B7A 0061;
+2123 0061;
+214A 0061;
+2191 0061;
+2199 0061;
+21A5 0061;
+21B0 0061;
+21BA 0061;
+21C4 0061;
+21D0 0061;
+21D8 0061;
+21E2 0061;
+21EC 0061;
+21F6 0061;
+2200 0061;
+2205 0061;
+220A 0061;
+002B 0061;
+226E 0061;
+FF1D 0061;
+FFE4 0061;
+2216 0061;
+221E 0061;
+2228 0061;
+2231 0061;
+223B 0061;
+2245 0061;
+224E 0061;
+2258 0061;
+2263 0061;
+226B 0061;
+227A 0061;
+2282 0061;
+228C 0061;
+2294 0061;
+229E 0061;
+22A7 0061;
+22B2 0061;
+22B8 0061;
+22C2 0061;
+22CC 0061;
+22D6 0061;
+22E4 0061;
+22F2 0061;
+22FC 0061;
+2306 0061;
+2310 0061;
+231A 0061;
+2324 0061;
+2330 0061;
+233A 0061;
+2344 0061;
+234E 0061;
+2358 0061;
+2362 0061;
+236C 0061;
+2376 0061;
+2380 0061;
+238A 0061;
+2394 0061;
+239E 0061;
+23A8 0061;
+23B2 0061;
+23BC 0061;
+23C6 0061;
+23D0 0061;
+23DA 0061;
+23E4 0061;
+2406 0061;
+2410 0061;
+241A 0061;
+2424 0061;
+2447 0061;
+2505 0061;
+250F 0061;
+2519 0061;
+2523 0061;
+252D 0061;
+2537 0061;
+2541 0061;
+254B 0061;
+2555 0061;
+255F 0061;
+2569 0061;
+2573 0061;
+257D 0061;
+2587 0061;
+2591 0061;
+259B 0061;
+25A4 0061;
+25AE 0061;
+25B8 0061;
+25C2 0061;
+FFEE 0061;
+25D5 0061;
+25DF 0061;
+25E9 0061;
+25F3 0061;
+25FD 0061;
+2607 0061;
+2611 0061;
+261B 0061;
+2625 0061;
+262F 0061;
+2641 0061;
+264B 0061;
+2655 0061;
+265F 0061;
+2669 0061;
+2676 0061;
+2680 0061;
+2690 0061;
+269A 0061;
+26A6 0061;
+26B0 0061;
+26BA 0061;
+2704 0061;
+2711 0061;
+271B 0061;
+2725 0061;
+2730 0061;
+273A 0061;
+2744 0061;
+2750 0061;
+275E 0061;
+276A 0061;
+2774 0061;
+279F 0061;
+27A9 0061;
+27B4 0061;
+27BE 0061;
+27C9 0061;
+27D7 0061;
+27E1 0061;
+27EB 0061;
+27F9 0061;
+2903 0061;
+290D 0061;
+2917 0061;
+2921 0061;
+292B 0061;
+2935 0061;
+293F 0061;
+2949 0061;
+2953 0061;
+295D 0061;
+2967 0061;
+2971 0061;
+297B 0061;
+299B 0061;
+29A5 0061;
+29AF 0061;
+29B9 0061;
+29C3 0061;
+29CD 0061;
+29D7 0061;
+29E1 0061;
+29EB 0061;
+29F5 0061;
+2A01 0061;
+2A0B 0061;
+2A16 0061;
+2A20 0061;
+2A2A 0061;
+2A34 0061;
+2A3E 0061;
+2A48 0061;
+2A52 0061;
+2A5C 0061;
+2A66 0061;
+2A70 0061;
+2A7D 0061;
+2A87 0061;
+2A91 0061;
+2A9B 0061;
+2AA5 0061;
+2AAF 0061;
+2AB9 0061;
+2AC3 0061;
+2ACD 0061;
+2AD7 0061;
+2AE1 0061;
+2AEB 0061;
+2AF5 0061;
+2AFF 0061;
+2B09 0061;
+2B13 0061;
+2B1D 0061;
+2B27 0061;
+2B31 0061;
+2B3B 0061;
+2B45 0061;
+2B52 0061;
+2801 0061;
+280B 0061;
+2815 0061;
+281F 0061;
+2829 0061;
+2833 0061;
+283D 0061;
+2847 0061;
+2851 0061;
+285B 0061;
+2865 0061;
+286F 0061;
+2879 0061;
+2883 0061;
+288D 0061;
+2897 0061;
+28A1 0061;
+28AB 0061;
+28B5 0061;
+28BF 0061;
+28C9 0061;
+28D3 0061;
+28DD 0061;
+28E7 0061;
+28F1 0061;
+28FB 0061;
+268F 0061;
+4DC1 0061;
+4DCB 0061;
+4DD5 0061;
+4DDF 0061;
+4DE9 0061;
+4DF3 0061;
+4DFD 0061;
+1D307 0061;
+1D311 0061;
+1D31B 0061;
+1D325 0061;
+1D32F 0061;
+1D339 0061;
+1D343 0061;
+1D34D 0061;
+A490 0061;
+A49A 0061;
+A4A4 0061;
+A4AE 0061;
+A4B8 0061;
+A4C2 0061;
+1013C 0061;
+1017F 0061;
+10189 0061;
+10199 0061;
+101D7 0061;
+101E1 0061;
+101EB 0061;
+101F5 0061;
+1D002 0061;
+1D00C 0061;
+1D016 0061;
+1D020 0061;
+1D02A 0061;
+1D034 0061;
+1D03E 0061;
+1D048 0061;
+1D052 0061;
+1D05C 0061;
+1D066 0061;
+1D070 0061;
+1D07A 0061;
+1D084 0061;
+1D08E 0061;
+1D098 0061;
+1D0A2 0061;
+1D0AC 0061;
+1D0B6 0061;
+1D0C0 0061;
+1D0CA 0061;
+1D0D4 0061;
+1D0DE 0061;
+1D0E8 0061;
+1D0F2 0061;
+1D106 0061;
+1D110 0061;
+1D11A 0061;
+1D124 0061;
+1D12E 0061;
+1D138 0061;
+1D141 0061;
+1D14B 0061;
+1D155 0061;
+1D164 0061;
+1D184 0061;
+1D195 0061;
+1D19F 0061;
+1D1A9 0061;
+1D1B7 0061;
+1D1C1 0061;
+1D1CB 0061;
+1D1D5 0061;
+1D201 0061;
+1D20B 0061;
+1D215 0061;
+1D21F 0061;
+1D229 0061;
+1D233 0061;
+1D23D 0061;
+1F004 0061;
+1F00E 0061;
+1F018 0061;
+1F022 0061;
+1F030 0061;
+1F03A 0061;
+1F044 0061;
+1F04E 0061;
+1F058 0061;
+1F062 0061;
+1F06C 0061;
+1F076 0061;
+1F080 0061;
+1F08A 0061;
+2FF0 0061;
+2FFA 0061;
+31C8 0061;
+31D2 0061;
+31DC 0061;
+3036 0061;
+FFFD 0061;
+0D74 0061;
+137A 0061;
+10322 0061;
+10118 0061;
+10122 0061;
+1012C 0061;
+10144 0061;
+10150 0061;
+10162 0061;
+1016C 0061;
+10177 0061;
+10A46 0061;
+1245E 0061;
+1D36E 0061;
+0006 0061;
+0015 0061;
+001F 0061;
+0089 0061;
+0093 0061;
+009D 0061;
+0595 0061;
+059F 0061;
+05A9 0061;
+0600 0061;
+0616 0061;
+06DB 0061;
+06E7 0061;
+0F37 0061;
+1B6B 0061;
+200C 0061;
+2061 0061;
+A670 0061;
+FDD0 0061;
+FE04 0061;
+FE0E 0061;
+FFFA 0061;
+1D16E 0061;
+1D178 0061;
+1D182 0061;
+1D1AC 0061;
+3FFFF 0061;
+8FFFF 0061;
+DFFFF 0061;
+E0028 0061;
+E0032 0061;
+E003C 0061;
+E0046 0061;
+E0050 0061;
+E005A 0061;
+E0064 0061;
+E006E 0061;
+E0078 0061;
+E0102 0061;
+E010C 0061;
+E0116 0061;
+E0120 0061;
+E012A 0061;
+E0134 0061;
+E013E 0061;
+E0148 0061;
+E0152 0061;
+E015C 0061;
+E0166 0061;
+E0170 0061;
+E017A 0061;
+E0184 0061;
+E018E 0061;
+E0198 0061;
+E01A2 0061;
+E01AC 0061;
+E01B6 0061;
+E01C0 0061;
+E01CA 0061;
+E01D4 0061;
+E01DE 0061;
+E01E8 0061;
+10FFFE 0061;
+1D41A 0021;
+1D622 0021;
+1D586 003F;
+000B 0041;
+2002 0041;
+205F 0041;
+1FFD 0041;
+FE4C 0041;
+1FBD 0041;
+02DB 0041;
+309B 0041;
+2010 0041;
+2E17 0041;
+055D 0041;
+FE11 0041;
+061B 0041;
+0704 0041;
+1804 0041;
+0021 0041;
+003F 0041;
+1945 0041;
+002E 0041;
+1809 0041;
+00B7 0041;
+1735 0041;
+AA5E 0041;
+1368 0041;
+205A 0041;
+2CFF 0041;
+12471 0041;
+203A 0041;
+00AB 0041;
+208E 0041;
+007B 0041;
+0F3C 0041;
+2985 0041;
+298D 0041;
+2997 0041;
+2E09 0041;
+2E24 0041;
+3009 0041;
+FE42 0041;
+3014 0041;
+3018 0041;
+00AE 0041;
+A673 0041;
+214B 0041;
+0609 0041;
+204C 0041;
+303D 0041;
+2E01 0041;
+2E13 0041;
+055B 0041;
+070C 0041;
+0F06 0041;
+0F0E 0041;
+1C3E 0041;
+17D8 0041;
+10A52 0041;
+02C3 0041;
+02CD 0041;
+02DF 0041;
+02EF 0041;
+02F9 0041;
+1393 0041;
+A703 0041;
+A70D 0041;
+A717 0041;
+A721 0041;
+FDFD 0041;
+0BFA 0041;
+0F01 0041;
+0F1D 0041;
+0FC0 0041;
+0FCB 0041;
+19E6 0041;
+19F0 0041;
+19FA 0041;
+1B65 0041;
+1B78 0041;
+211E 0041;
+2143 0041;
+219B 0041;
+2197 0041;
+21A3 0041;
+21AD 0041;
+21B8 0041;
+21C2 0041;
+21CC 0041;
+21D6 0041;
+21E0 0041;
+21EA 0041;
+21F4 0041;
+21FE 0041;
+2203 0041;
+2208 0041;
+2140 0041;
+00D7 0041;
+2260 0041;
+FF5C 0041;
+2214 0041;
+0607 0041;
+2226 0041;
+222F 0041;
+2239 0041;
+2243 0041;
+224D 0041;
+2256 0041;
+2261 0041;
+2269 0041;
+2277 0041;
+227E 0041;
+228A 0041;
+22E3 0041;
+229C 0041;
+22A5 0041;
+22B0 0041;
+22B6 0041;
+22C0 0041;
+22CA 0041;
+22D4 0041;
+22DE 0041;
+22F0 0041;
+22FA 0041;
+2304 0041;
+230E 0041;
+2318 0041;
+2322 0041;
+232E 0041;
+2338 0041;
+2342 0041;
+234C 0041;
+2356 0041;
+2360 0041;
+236A 0041;
+2374 0041;
+237E 0041;
+2388 0041;
+2392 0041;
+239C 0041;
+23A6 0041;
+23B0 0041;
+23BA 0041;
+23C4 0041;
+23CE 0041;
+23D8 0041;
+23E2 0041;
+2404 0041;
+240E 0041;
+2418 0041;
+2422 0041;
+2445 0041;
+2503 0041;
+250D 0041;
+2517 0041;
+2521 0041;
+252B 0041;
+2535 0041;
+253F 0041;
+2549 0041;
+2553 0041;
+255D 0041;
+2567 0041;
+2571 0041;
+257B 0041;
+2585 0041;
+258F 0041;
+2599 0041;
+25A2 0041;
+25AC 0041;
+25B6 0041;
+25C0 0041;
+25CA 0041;
+25D3 0041;
+25DD 0041;
+25E7 0041;
+25F1 0041;
+25FB 0041;
+2605 0041;
+260F 0041;
+2619 0041;
+2623 0041;
+262D 0041;
+263F 0041;
+2649 0041;
+2653 0041;
+265D 0041;
+2667 0041;
+2674 0041;
+267E 0041;
+2688 0041;
+2698 0041;
+26A4 0041;
+26AE 0041;
+26B8 0041;
+2702 0041;
+270F 0041;
+2719 0041;
+2723 0041;
+272E 0041;
+2738 0041;
+2742 0041;
+274D 0041;
+275C 0041;
+2768 0041;
+2772 0041;
+279D 0041;
+27A7 0041;
+27B2 0041;
+27BC 0041;
+27C7 0041;
+27D5 0041;
+27DF 0041;
+27E9 0041;
+27F7 0041;
+2901 0041;
+290B 0041;
+2915 0041;
+291F 0041;
+2929 0041;
+2933 0041;
+293D 0041;
+2947 0041;
+2951 0041;
+295B 0041;
+2965 0041;
+296F 0041;
+2979 0041;
+2999 0041;
+29A3 0041;
+29AD 0041;
+29B7 0041;
+29C1 0041;
+29CB 0041;
+29D5 0041;
+29DF 0041;
+29E9 0041;
+29F3 0041;
+29FF 0041;
+2A09 0041;
+2A14 0041;
+2A1E 0041;
+2A28 0041;
+2A32 0041;
+2A3C 0041;
+2A46 0041;
+2A50 0041;
+2A5A 0041;
+2A64 0041;
+2A6E 0041;
+2A7B 0041;
+2A85 0041;
+2A8F 0041;
+2A99 0041;
+2AA3 0041;
+2AAD 0041;
+2AB7 0041;
+2AC1 0041;
+2ACB 0041;
+2AD5 0041;
+2ADF 0041;
+2AE9 0041;
+2AF3 0041;
+2AFD 0041;
+2B07 0041;
+2B11 0041;
+2B1B 0041;
+2B25 0041;
+2B2F 0041;
+2B39 0041;
+2B43 0041;
+2B50 0041;
+2CEA 0041;
+2809 0041;
+2813 0041;
+281D 0041;
+2827 0041;
+2831 0041;
+283B 0041;
+2845 0041;
+284F 0041;
+2859 0041;
+2863 0041;
+286D 0041;
+2877 0041;
+2881 0041;
+288B 0041;
+2895 0041;
+289F 0041;
+28A9 0041;
+28B3 0041;
+28BD 0041;
+28C7 0041;
+28D1 0041;
+28DB 0041;
+28E5 0041;
+28EF 0041;
+28F9 0041;
+268D 0041;
+2637 0041;
+4DC9 0041;
+4DD3 0041;
+4DDD 0041;
+4DE7 0041;
+4DF1 0041;
+4DFB 0041;
+1D305 0041;
+1D30F 0041;
+1D319 0041;
+1D323 0041;
+1D32D 0041;
+1D337 0041;
+1D341 0041;
+1D34B 0041;
+1D355 0041;
+A498 0041;
+A4A2 0041;
+A4AC 0041;
+A4B6 0041;
+A4C0 0041;
+1013A 0041;
+1017D 0041;
+10187 0041;
+10197 0041;
+101D5 0041;
+101DF 0041;
+101E9 0041;
+101F3 0041;
+1D000 0041;
+1D00A 0041;
+1D014 0041;
+1D01E 0041;
+1D028 0041;
+1D032 0041;
+1D03C 0041;
+1D046 0041;
+1D050 0041;
+1D05A 0041;
+1D064 0041;
+1D06E 0041;
+1D078 0041;
+1D082 0041;
+1D08C 0041;
+1D096 0041;
+1D0A0 0041;
+1D0AA 0041;
+1D0B4 0041;
+1D0BE 0041;
+1D0C8 0041;
+1D0D2 0041;
+1D0DC 0041;
+1D0E6 0041;
+1D0F0 0041;
+1D104 0041;
+1D10E 0041;
+1D118 0041;
+1D122 0041;
+1D12C 0041;
+1D136 0041;
+1D13F 0041;
+1D149 0041;
+1D153 0041;
+1D162 0041;
+1D16C 0041;
+1D193 0041;
+1D19D 0041;
+1D1A7 0041;
+1D1B5 0041;
+1D1BE 0041;
+1D1C9 0041;
+1D1D3 0041;
+1D1DD 0041;
+1D209 0041;
+1D213 0041;
+1D21D 0041;
+1D227 0041;
+1D231 0041;
+1D23B 0041;
+1F002 0041;
+1F00C 0041;
+1F016 0041;
+1F020 0041;
+1F02A 0041;
+1F038 0041;
+1F042 0041;
+1F04C 0041;
+1F056 0041;
+1F060 0041;
+1F06A 0041;
+1F074 0041;
+1F07E 0041;
+1F088 0041;
+1F092 0041;
+2FF8 0041;
+31C6 0041;
+31D0 0041;
+31DA 0041;
+3004 0041;
+327F 0041;
+0D72 0041;
+1378 0041;
+2188 0041;
+10116 0041;
+10120 0041;
+1012A 0041;
+10140 0041;
+1014D 0041;
+10160 0041;
+1016A 0041;
+10175 0041;
+10A44 0041;
+1245C 0041;
+1D36C 0041;
+0004 0041;
+0013 0041;
+001D 0041;
+0087 0041;
+0091 0041;
+009B 0041;
+0593 0041;
+059D 0041;
+05A7 0041;
+05C4 0041;
+0614 0041;
+06D9 0041;
+06E3 0041;
+0F19 0041;
+180D 0041;
+1B73 0041;
+202E 0041;
+206E 0041;
+D805 0041;
+FE02 0041;
+FE0C 0041;
+FEFF 0041;
+1D169 0041;
+1D176 0041;
+1D180 0041;
+1D1AA 0041;
+2FFFF 0041;
+7FFFF 0041;
+CFFFF 0041;
+E0026 0041;
+E0030 0041;
+E003A 0041;
+E0044 0041;
+E004E 0041;
+E0058 0041;
+E0062 0041;
+E006C 0041;
+E0076 0041;
+E0100 0041;
+E010A 0041;
+E0114 0041;
+E011E 0041;
+E0128 0041;
+E0132 0041;
+E013C 0041;
+E0146 0041;
+E0150 0041;
+E015A 0041;
+E0164 0041;
+E016E 0041;
+E0178 0041;
+E0182 0041;
+E018C 0041;
+E0196 0041;
+E01A0 0041;
+E01AA 0041;
+E01B4 0041;
+E01BE 0041;
+E01C8 0041;
+E01D2 0041;
+E01DC 0041;
+E01E6 0041;
+EFFFE 0041;
+1D468 0021;
+1D670 0021;
+1D5D4 003F;
+2090 0021;
+00C0 0021;
+1EB1 0021;
+1EB2 0021;
+1EA7 0021;
+1EA8 0021;
+00C5 003F;
+01DF 0021;
+0226 0021;
+0101 0021;
+0200 0021;
+1EB7 0021;
+1E00 0021;
+0061 0334 0300;
+0103 0334;
+0102 0341 0334;
+0061 0334 0306 0303;
+0061 0334 0306 0309;
+0041 0334 0302;
+0061 0302 0300 0334;
+00E2 0303 0334;
+0041 0302 0334 0309;
+0061 030A 0334;
+01FB 0334;
+00C4 0334;
+0061 0334 0303;
+0226 0334;
+0061 0334 0328;
+0100 0334;
+0041 030F 0334;
+0061 0334 0323;
+0041 0334 0323 0306;
+1EAC 0334;
+0332 0041;
+0341 0041;
+030C 0041;
+030B 0041;
+0328 0041;
+030E 0041;
+0315 0041;
+031A 0041;
+031F 0041;
+0324 0041;
+032B 0041;
+0330 0041;
+0335 0061;
+033B 0061;
+0345 0061;
+034A 0061;
+0350 0061;
+0355 0061;
+035A 0061;
+035F 0061;
+0362 0061;
+1DC4 0061;
+1DC9 0061;
+1DCF 0061;
+0483 0061;
+A66F 0061;
+05B2 0061;
+05B7 0061;
+05BB 0061;
+FB1E 0061;
+FE72 0061;
+064E 0061;
+064F 0061;
+0650 0061;
+0651 0061;
+FE7F 0061;
+0656 0061;
+065B 0061;
+0711 0061;
+0734 0061;
+0739 0061;
+073E 0061;
+0743 0061;
+0748 0061;
+07ED 0061;
+07F2 0061;
+0903 0061;
+09BC 0061;
+0A01 0061;
+0ABC 0061;
+0B01 0061;
+0C02 0061;
+0D02 0061;
+1B00 0061;
+1B80 0061;
+A881 0061;
+10A39 0061;
+0E49 0061;
+0EC8 0061;
+0ECD 0061;
+A92B 0061;
+1038 0061;
+17C8 0061;
+17CD 0061;
+17D3 0061;
+302A 0061;
+302F 0061;
+20D0 0061;
+20D5 0061;
+20DA 0061;
+20DF 0061;
+20E4 0061;
+20E9 0061;
+20EE 0061;
+FF41 0061;
+1D482 0061;
+1D68A 0061;
+1D5EE 0041;
+A732 0021;
+1D5A0 0061;
+1D504 0041;
+00AA 0061;
+00C1 0061;
+1EAF 0061;
+1EB4 0061;
+1EA5 0061;
+1EAA 0061;
+00E5 0061;
+00E4 0061;
+00C3 0061;
+0105 0061;
+1EA2 0061;
+1EA1 0061;
+1EAC 0061;
+A732 0061;
+1D482 0062;
+1D68A 0062;
+1D538 0062;
+2090 0062;
+1EB1 0062;
+1EA7 0062;
+212B 0062;
+0226 0062;
+0200 0062;
+1E00 0062;
+1DD4 003F;
+01E3 003F;
+01FC 0334;
+00E6 0041;
+01E3 0061;
+01E3 0062;
+33C2 0062;
+A735 0061;
+2101 0061;
+A737 0041;
+1DD6 003F;
+A739 0061;
+A739 0062;
+A73C 0061;
+1D00 003F;
+023A 0061;
+1D01 003F;
+1D46 0061;
+0250 0061;
+0251 003F;
+1D45 0041;
+0252 003F;
+000A 0062;
+2001 0062;
+202F 0062;
+0384 0062;
+FE4B 0062;
+02DD 0062;
+00B8 0062;
+1FC0 0062;
+1807 0062;
+2053 0062;
+FF0C 0062;
+3001 0062;
+FF1B 0062;
+0703 0062;
+1366 0062;
+2049 0062;
+2047 0062;
+1367 0062;
+FE30 0062;
+1803 0062;
+FF61 0062;
+A877 0062;
+AA5D 0062;
+1360 0062;
+2059 0062;
+2CFC 0062;
+12470 0062;
+2039 0062;
+301F 0062;
+207E 0062;
+FF3D 0062;
+0F3B 0062;
+2984 0062;
+298C 0062;
+2996 0062;
+2E05 0062;
+2E23 0062;
+232A 0062;
+300D 0062;
+FE3C 0062;
+FE18 0062;
+00A9 0062;
+066D 0062;
+FF06 0062;
+2030 0062;
+2043 0062;
+3003 0062;
+2E00 0062;
+2E12 0062;
+055A 0062;
+070B 0062;
+0F05 0062;
+0F0D 0062;
+1C3D 0062;
+17D7 0062;
+10A51 0062;
+02C2 0062;
+02CC 0062;
+02DE 0062;
+02ED 0062;
+02F8 0062;
+1392 0062;
+A702 0062;
+A70C 0062;
+A716 0062;
+A720 0062;
+06E9 0062;
+0BF8 0062;
+0E4F 0062;
+0F1C 0062;
+0FBF 0062;
+0FCA 0062;
+19E5 0062;
+19EF 0062;
+19F9 0062;
+1B64 0062;
+1B77 0062;
+2118 0062;
+2142 0062;
+2192 0062;
+2196 0062;
+21A2 0062;
+21AC 0062;
+21B7 0062;
+21C1 0062;
+21CB 0062;
+21D5 0062;
+21DF 0062;
+21E9 0062;
+21F3 0062;
+21FD 0062;
+1D7C3 0062;
+1D7A9 0062;
+2210 0062;
+00F7 0062;
+208C 0062;
+007C 0062;
+2213 0062;
+221C 0062;
+2225 0062;
+2230 0062;
+2238 0062;
+2242 0062;
+224C 0062;
+2255 0062;
+225F 0062;
+2268 0062;
+2278 0062;
+22E1 0062;
+2289 0062;
+2292 0062;
+229B 0062;
+22A4 0062;
+22AF 0062;
+22ED 0062;
+22BF 0062;
+22C9 0062;
+22D3 0062;
+22DD 0062;
+22EF 0062;
+22F9 0062;
+2303 0062;
+230D 0062;
+2317 0062;
+2321 0062;
+232D 0062;
+2337 0062;
+2341 0062;
+234B 0062;
+2355 0062;
+235F 0062;
+2369 0062;
+2373 0062;
+237D 0062;
+2387 0062;
+2391 0062;
+239B 0062;
+23A5 0062;
+23AF 0062;
+23B9 0062;
+23C3 0062;
+23CD 0062;
+23D7 0062;
+23E1 0062;
+2403 0062;
+240D 0062;
+2417 0062;
+2421 0062;
+2444 0062;
+FFE8 0062;
+250C 0062;
+2516 0062;
+2520 0062;
+252A 0062;
+2534 0062;
+253E 0062;
+2548 0062;
+2552 0062;
+255C 0062;
+2566 0062;
+2570 0062;
+257A 0062;
+2584 0062;
+258E 0062;
+2598 0062;
+25A1 0062;
+25AB 0062;
+25B5 0062;
+25BF 0062;
+25C9 0062;
+25D2 0062;
+25DC 0062;
+25E6 0062;
+25F0 0062;
+25FA 0062;
+2604 0062;
+260E 0062;
+2618 0062;
+2622 0062;
+262C 0062;
+263E 0062;
+2648 0062;
+2652 0062;
+265C 0062;
+2666 0062;
+2673 0062;
+267D 0062;
+2687 0062;
+2697 0062;
+26A3 0062;
+26AD 0062;
+26B7 0062;
+2701 0062;
+270E 0062;
+2718 0062;
+2722 0062;
+272D 0062;
+2737 0062;
+2741 0062;
+274B 0062;
+275B 0062;
+2767 0062;
+2771 0062;
+279C 0062;
+27A6 0062;
+27B1 0062;
+27BB 0062;
+27C6 0062;
+27D4 0062;
+27DE 0062;
+27E8 0062;
+27F6 0062;
+2900 0062;
+290A 0062;
+2914 0062;
+291E 0062;
+2928 0062;
+2932 0062;
+293C 0062;
+2946 0062;
+2950 0062;
+295A 0062;
+2964 0062;
+296E 0062;
+2978 0062;
+2982 0062;
+29A2 0062;
+29AC 0062;
+29B6 0062;
+29C0 0062;
+29CA 0062;
+29D4 0062;
+29DE 0062;
+29E8 0062;
+29F2 0062;
+29FE 0062;
+2A08 0062;
+2A13 0062;
+2A1D 0062;
+2A27 0062;
+2A31 0062;
+2A3B 0062;
+2A45 0062;
+2A4F 0062;
+2A59 0062;
+2A63 0062;
+2A6D 0062;
+2A7A 0062;
+2A84 0062;
+2A8E 0062;
+2A98 0062;
+2AA2 0062;
+2AAC 0062;
+2AB6 0062;
+2AC0 0062;
+2ACA 0062;
+2AD4 0062;
+2ADE 0062;
+2AE8 0062;
+2AF2 0062;
+2AFC 0062;
+2B06 0062;
+2B10 0062;
+2B1A 0062;
+2B24 0062;
+2B2E 0062;
+2B38 0062;
+2B42 0062;
+2B4C 0062;
+2CE9 0062;
+2808 0062;
+2812 0062;
+281C 0062;
+2826 0062;
+2830 0062;
+283A 0062;
+2844 0062;
+284E 0062;
+2858 0062;
+2862 0062;
+286C 0062;
+2876 0062;
+2880 0062;
+288A 0062;
+2894 0062;
+289E 0062;
+28A8 0062;
+28B2 0062;
+28BC 0062;
+28C6 0062;
+28D0 0062;
+28DA 0062;
+28E4 0062;
+28EE 0062;
+28F8 0062;
+268C 0062;
+2636 0062;
+4DC8 0062;
+4DD2 0062;
+4DDC 0062;
+4DE6 0062;
+4DF0 0062;
+4DFA 0062;
+1D304 0062;
+1D30E 0062;
+1D318 0062;
+1D322 0062;
+1D32C 0062;
+1D336 0062;
+1D340 0062;
+1D34A 0062;
+1D354 0062;
+A497 0062;
+A4A1 0062;
+A4AB 0062;
+A4B5 0062;
+A4BF 0062;
+10139 0062;
+1017C 0062;
+10186 0062;
+10196 0062;
+101D4 0062;
+101DE 0062;
+101E8 0062;
+101F2 0062;
+101FC 0062;
+1D009 0062;
+1D013 0062;
+1D01D 0062;
+1D027 0062;
+1D031 0062;
+1D03B 0062;
+1D045 0062;
+1D04F 0062;
+1D059 0062;
+1D063 0062;
+1D06D 0062;
+1D077 0062;
+1D081 0062;
+1D08B 0062;
+1D095 0062;
+1D09F 0062;
+1D0A9 0062;
+1D0B3 0062;
+1D0BD 0062;
+1D0C7 0062;
+1D0D1 0062;
+1D0DB 0062;
+1D0E5 0062;
+1D0EF 0062;
+1D103 0062;
+1D10D 0062;
+1D117 0062;
+1D121 0062;
+1D12B 0062;
+1D135 0062;
+1D13E 0062;
+1D148 0062;
+1D152 0062;
+1D161 0062;
+1D16B 0062;
+1D192 0062;
+1D19C 0062;
+1D1A6 0062;
+1D1B4 0062;
+1D1BC 0062;
+1D1C8 0062;
+1D1D2 0062;
+1D1DC 0062;
+1D208 0062;
+1D212 0062;
+1D21C 0062;
+1D226 0062;
+1D230 0062;
+1D23A 0062;
+1F001 0062;
+1F00B 0062;
+1F015 0062;
+1F01F 0062;
+1F029 0062;
+1F037 0062;
+1F041 0062;
+1F04B 0062;
+1F055 0062;
+1F05F 0062;
+1F069 0062;
+1F073 0062;
+1F07D 0062;
+1F087 0062;
+1F091 0062;
+2FF7 0062;
+31C5 0062;
+31CF 0062;
+31D9 0062;
+31E3 0062;
+3191 0062;
+0D71 0062;
+1377 0062;
+2187 0062;
+10115 0062;
+1011F 0062;
+10129 0062;
+10133 0062;
+1014C 0062;
+10157 0062;
+10169 0062;
+10174 0062;
+10919 0062;
+1245B 0062;
+1D36B 0062;
+0003 0062;
+0012 0062;
+001C 0062;
+0086 0062;
+0090 0062;
+009A 0062;
+0592 0062;
+059C 0062;
+05A6 0062;
+05BD 0062;
+0613 0062;
+06D8 0062;
+06E2 0062;
+0F18 0062;
+180C 0062;
+1B72 0062;
+202D 0062;
+206D 0062;
+D804 0062;
+FE01 0062;
+FE0B 0062;
+FE73 0062;
+1D168 0062;
+1D175 0062;
+1D17F 0062;
+1D18B 0062;
+2FFFE 0062;
+7FFFE 0062;
+CFFFE 0062;
+E0025 0062;
+E002F 0062;
+E0039 0062;
+E0043 0062;
+E004D 0062;
+E0057 0062;
+E0061 0062;
+E006B 0062;
+E0075 0062;
+E007F 0062;
+E0109 0062;
+E0113 0062;
+E011D 0062;
+E0127 0062;
+E0131 0062;
+E013B 0062;
+E0145 0062;
+E014F 0062;
+E0159 0062;
+E0163 0062;
+E016D 0062;
+E0177 0062;
+E0181 0062;
+E018B 0062;
+E0195 0062;
+E019F 0062;
+E01A9 0062;
+E01B3 0062;
+E01BD 0062;
+E01C7 0062;
+E01D1 0062;
+E01DB 0062;
+E01E5 0062;
+E01EF 0062;
+249D 003F;
+1D5EF 0021;
+1D553 003F;
+0042 003F;
+1D56D 0021;
+1D4D1 003F;
+24B7 003F;
+1E05 003F;
+0042 0307 0334;
+0062 0334 0331;
+0341 0062;
+030B 0062;
+030E 0062;
+031A 0062;
+0324 0062;
+0330 0062;
+033C 0062;
+034B 0062;
+0356 0062;
+0360 0062;
+1DC5 0062;
+1DD0 0062;
+A67C 0062;
+05B8 0062;
+064B 0062;
+FE77 0062;
+FE7B 0062;
+FE7E 0062;
+065C 0062;
+0735 0062;
+073F 0062;
+0749 0062;
+07F3 0062;
+0981 0062;
+0A81 0062;
+0C03 0062;
+1B01 0062;
+10A0D 0062;
+0E4A 0062;
+0F39 0062;
+108D 0062;
+17CE 0062;
+302B 0062;
+20D1 0062;
+20DB 0062;
+20E5 0062;
+20EF 0062;
+1D44F 0061;
+1D657 0061;
+1D5BB 0041;
+FF22 0041;
+1D5D5 0061;
+1D539 0041;
+1D47 0041;
+1E04 0041;
+0062 0062;
+1D587 0062;
+1D401 0062;
+1D63D 0062;
+1E06 0062;
+0299 0062;
+0243 0062;
+1D03 0062;
+1D80 0062;
+0181 0062;
+0182 0062;
+217D 003F;
+1D5F0 0021;
+1D554 003F;
+0043 003F;
+1D436 0021;
+2102 003F;
+1D60A 003F;
+0106 003F;
+010B 003F;
+1E09 003F;
+0106 0334;
+0043 030C 0334;
+0063 0334 0327;
+0043 0334 0327 0341;
+249E 0061;
+1D4EC 0061;
+1D450 0041;
+1D658 0041;
+2103 0041;
+1D5A2 0061;
+1D49E 0041;
+1D9C 0061;
+010D 0061;
+1DD7 0061;
+3388 0061;
+1D484 0062;
+1D68C 0062;
+1D46A 0062;
+1D9C 0062;
+1DD7 0062;
+33C5 003F;
+339D 003F;
+33A4 0062;
+33C7 0061;
+1D04 003F;
+023B 0061;
+0187 0061;
+1D9D 0061;
+2183 0061;
+A73E 0061;
+0369 0021;
+1D521 0021;
+1D451 003F;
+1D659 003F;
+2145 0021;
+1D5D7 0021;
+1D507 003F;
+1D48 0021;
+1E0A 0021;
+1E13 0021;
+010F 0334;
+0064 0327 0334;
+0044 0334 0323;
+1E0F 0334;
+00F0 003F;
+A779 0021;
+249F 0061;
+1D4B9 0061;
+2146 0041;
+1D5F1 0041;
+216E 0061;
+1D56F 0061;
+1D49F 0041;
+24B9 0061;
+010E 0061;
+1E0D 0061;
+1E0E 0061;
+00D0 0061;
+3372 0061;
+2146 0062;
+1D5F1 0062;
+1D437 0062;
+1D63F 0062;
+1E0A 0062;
+0110 0062;
+33C8 0061;
+3377 003F;
+3379 0062;
+01F1 0021;
+01F3 0041;
+01C4 0061;
+02A5 003F;
+1D05 003F;
+1D6D 003F;
+0256 003F;
+0257 003F;
+1D91 003F;
+018B 0061;
+A771 003F;
+0065 003F;
+1D452 0021;
+1D68E 0021;
+1D5BE 003F;
+FF25 003F;
+1D5D8 0021;
+1D53C 003F;
+1D49 003F;
+00E8 003F;
+00CA 003F;
+1EC5 003F;
+011A 003F;
+0117 003F;
+1E1C 003F;
+1E17 003F;
+1EBA 003F;
+1EB9 003F;
+1E18 003F;
+0045 0334 0301;
+00C8 0334;
+0045 0302 0334;
+1EBE 0334;
+0065 0302 0334 0303;
+1EC3 0334;
+011A 0334;
+0045 0303 0334;
+0065 0334 0327;
+0045 0334 0306 0327;
+0065 0334 0304;
+0045 0304 0334 0341;
+1E14 0334;
+0045 030F 0334;
+0065 0334 0323;
+0045 0334 0302 0323;
+0065 0334 0330;
+FF45 0041;
+1D4EE 0061;
+2147 0041;
+1D626 0041;
+1D404 0061;
+1D640 0061;
+1D5A4 0041;
+2091 0041;
+00C8 0041;
+1EBF 0041;
+1EC4 0041;
+00EB 0041;
+0116 0041;
+0119 0041;
+1E16 0041;
+0205 0041;
+1EB8 0041;
+1E1B 0041;
+1D452 0062;
+1D68E 0062;
+1D53C 0062;
+1D31 0062;
+1EBE 0062;
+00CB 0062;
+0118 0062;
+0204 0062;
+1E1A 0062;
+32CE 0062;
+0247 0061;
+1D92 0062;
+1D32 0021;
+1D32 0062;
+1D4A 0021;
+2094 0061;
+1D95 0062;
+025B 0041;
+1D4B 0062;
+0258 0062;
+025C 0061;
+1D94 0062;
+1D4C 0062;
+025E 0062;
+0264 0062;
+1D4BB 0021;
+1D41F 003F;
+1D627 003F;
+2109 003F;
+1D5D9 0021;
+1D53D 003F;
+1DA0 003F;
+1E1E 0334;
+24A1 0041;
+1D5F3 0061;
+1D557 0041;
+0046 0041;
+1D509 0061;
+1D439 0041;
+1D675 0041;
+A77C 0041;
+24A1 0062;
+1D5F3 0062;
+1D439 0062;
+1D675 0062;
+FB00 0041;
+FB04 0041;
+FB02 0041;
+02A9 0041;
+1D6E 0041;
+0191 003F;
+2132 003F;
+A7FB 0041;
+210A 0021;
+1D628 0021;
+1D58C 003F;
+FF27 0021;
+1D5A6 0021;
+1D50A 003F;
+1D4D 0021;
+011E 0021;
+0121 0021;
+1E20 0021;
+0067 0306 0334;
+0047 0334 0302;
+0121 0334;
+0067 0304 0334;
+1DDA 0334;
+1D420 0061;
+1D65C 0061;
+1D5C0 0041;
+FF27 0041;
+1D5DA 0061;
+1D53E 0041;
+1D4D 0041;
+011E 0041;
+0121 0041;
+1E20 0041;
+0067 0062;
+1D558 0062;
+1D406 0062;
+1D60E 0062;
+011F 0062;
+1E21 0062;
+3393 0041;
+33C9 0041;
+0261 0062;
+1DDB 0041;
+01E4 0041;
+0193 0021;
+029B 0061;
+A77E 0021;
+0194 0021;
+0263 0062;
+01A2 0041;
+036A 003F;
+1D5F5 0021;
+1D559 003F;
+0048 003F;
+1D573 0021;
+1D43B 003F;
+24BD 003F;
+021F 003F;
+1E22 003F;
+1E2B 003F;
+0124 0334;
+0048 0308 0334;
+0068 0334 0327;
+1E24 0334;
+0127 0021;
+FF48 0061;
+1D4F1 0061;
+1D421 0041;
+1D65D 0041;
+210D 0061;
+1D677 0061;
+1D5DB 0041;
+1D34 0061;
+1E27 0061;
+1E28 0061;
+1E96 0061;
+33CA 0062;
+1D525 0062;
+FF28 0062;
+1D5DB 0062;
+021E 0062;
+1E2A 0062;
+33CB 0021;
+3390 0021;
+0195 0021;
+0266 0021;
+2C68 0021;
+2C76 0021;
+A727 0021;
+0267 0021;
+02BD 0021;
+24A4 003F;
+1D4BE 0021;
+2139 003F;
+1D5C2 003F;
+FF29 003F;
+1D574 0021;
+1D470 003F;
+24BE 003F;
+00CD 003F;
+00EE 003F;
+00CF 003F;
+0130 003F;
+1EC9 003F;
+020A 003F;
+0069 0334 0301;
+00EC 0334;
+012C 0334;
+0049 030C 0334;
+0069 0308 0334 0341;
+0049 0303 0334;
+0049 0334 0328;
+1EC9 0334;
+0069 0311 0334;
+0049 0334 0323;
+0069 0061;
+2139 0061;
+1D5C2 0061;
+1D4BE 0041;
+24D8 0061;
+1D408 0061;
+1D678 0061;
+1D5DC 0041;
+1D35 0061;
+012D 0061;
+01CF 0061;
+0129 0061;
+012B 0061;
+0208 0061;
+1E2D 0061;
+2148 0062;
+1D5F6 0062;
+1D408 0062;
+1D678 0062;
+012C 0062;
+0128 0062;
+020B 0062;
+2171 0061;
+2172 0061;
+0133 0061;
+33CC 0062;
+2173 0061;
+2178 0061;
+0131 0061;
+026A 0061;
+A7FE 0062;
+1D4E 0062;
+0197 0041;
+1D7B 0061;
+1D96 0062;
+0196 0041;
+1D7C 0062;
+1D48B 0021;
+1D693 0021;
+1D5C3 003F;
+FF2A 003F;
+1D5DD 0021;
+1D541 003F;
+02B2 003F;
+01F0 003F;
+006A 0061;
+1D4BF 0061;
+2149 0041;
+1D5F7 0041;
+1D409 0061;
+1D611 0061;
+1D575 0041;
+2C7C 0061;
+006A 0062;
+1D55B 0062;
+1D409 0062;
+1D611 0062;
+0237 0021;
+1D0A 0021;
+0249 0041;
+029D 0041;
+025F 0041;
+006B 0021;
+1D48C 0021;
+1D694 0021;
+1D5F8 003F;
+FF2B 0021;
+1D5AA 0021;
+1D50E 003F;
+1D4F 0021;
+01E8 0021;
+1E35 0021;
+212A 0334 0341;
+006B 0334 0327;
+1E32 0334;
+1DDC 0334;
+1D458 0061;
+1D660 0061;
+1D5C4 0041;
+212A 0041;
+1D576 0061;
+1D4DA 0041;
+24C0 0041;
+1E30 0041;
+1E33 0041;
+006B 0062;
+1D55C 0062;
+FF2B 0062;
+1D5DE 0062;
+1E30 0062;
+3385 0041;
+338F 0041;
+33CD 0041;
+33CE 003F;
+33A6 0062;
+33AA 0041;
+33B8 0041;
+33C0 0041;
+1D84 0041;
+0199 0062;
+2C6A 0062;
+A741 0062;
+A743 0062;
+A745 0062;
+FF4C 003F;
+1D48D 0021;
+1D695 0021;
+1D5C5 003F;
+FF2C 003F;
+1D577 0021;
+1D4DB 003F;
+24C1 003F;
+013E 003F;
+1E36 003F;
+1E3B 003F;
+0139 0334;
+004C 0327 0334;
+1E37 0304 0334;
+004C 032D 0334;
+0142 003F;
+004C 0387 0021;
+006C 1D165 00B7 0061;
+1DDD 0041;
+1D591 0061;
+1D4C1 0041;
+24DB 0061;
+FF2C 0061;
+1D543 0061;
+1D473 0041;
+24C1 0061;
+013E 0061;
+1E36 0061;
+1E3B 0061;
+0140 0061;
+006C 0062;
+1D4F5 0062;
+004C 0062;
+1D577 0062;
+0139 0062;
+1E3C 0062;
+013F 0062;
+01C8 0041;
+1EFA 0061;
+33D0 0062;
+33D2 0062;
+32CF 0062;
+02AB 0062;
+1DDE 0061;
+A746 003F;
+1D0C 0041;
+A749 0062;
+019A 0062;
+2C61 0062;
+026B 0062;
+1DAA 003F;
+1DA9 003F;
+0234 0041;
+026E 0041;
+A781 0062;
+028E 0041;
+036B 003F;
+1D5C6 0021;
+1D52A 003F;
+004D 0021;
+1D4DC 0021;
+1D40C 003F;
+1D648 003F;
+1E3E 0021;
+006D 0334 0301;
+1E41 0334;
+0334 036B;
+33A5 0041;
+036B 0041;
+1D5C6 0061;
+1D52A 0041;
+004D 0061;
+1D4DC 0061;
+1D40C 0041;
+1D648 0041;
+1E3F 0061;
+1E42 0061;
+1D426 0062;
+1D62E 0062;
+1D474 0062;
+24C2 0062;
+1E40 0062;
+338E 003F;
+33D5 003F;
+339C 003F;
+33A3 0062;
+33AB 003F;
+33A8 0061;
+33B7 003F;
+33BD 003F;
+33C1 003F;
+1D0D 0041;
+1D86 0021;
+1DAC 003F;
+A7FD 0021;
+A773 0021;
+24A9 003F;
+1D593 0021;
+1D4F7 003F;
+24DD 003F;
+1D4DD 0021;
+1D441 003F;
+1D67D 003F;
+0143 003F;
+00F1 003F;
+0145 003F;
+1E49 003F;
+0143 0334;
+006E 0334 030C;
+00D1 0334;
+004E 0327 0334;
+006E 0334 032D;
+1E48 0334;
+1D427 0061;
+1D62F 0061;
+1D593 0041;
+FF2E 0061;
+1D5AD 0061;
+1D4DD 0041;
+207F 0061;
+01F9 0061;
+00D1 0061;
+1E47 0061;
+1E48 0061;
+1D45B 0062;
+1D663 0062;
+1D4DD 0062;
+1D3A 0062;
+1E44 0062;
+338B 003F;
+01CC 0061;
+339A 003F;
+33B1 003F;
+33BB 003F;
+1DE1 0334;
+1D3B 0021;
+1D70 0021;
+1DAE 003F;
+019E 0021;
+1D87 0021;
+0273 0041;
+A774 0021;
+1D51 003F;
+006F 0021;
+1D45C 0021;
+1D698 0021;
+1D5FC 003F;
+1D40E 0021;
+1D616 0021;
+1D57A 003F;
+00BA 003F;
+00F2 0021;
+00D4 0021;
+1ED7 0021;
+01D1 0021;
+0151 0021;
+1E4C 0021;
+022F 0021;
+00D8 0021;
+00D8 0301 0334;
+01EC 0021;
+1E51 0021;
+020C 0021;
+1EDB 0021;
+1EE0 0021;
+1ECD 0021;
+006F 0334 0341;
+004F 0334 0300;
+006F 0302 0334;
+004F 0302 0301 0334;
+00D4 0334 0340;
+006F 0302 0309 0334;
+01D2 0334;
+006F 0334 0308 0304;
+0151 0334;
+006F 0334 0303 0301;
+00F5 0334 0308;
+004F 0303 0304 0334;
+006F 0307 0304 0334;
+01EB 0334;
+01EA 0334 0304;
+006F 0304 0341 0334;
+004F 0304 0340 0334;
+006F 030F 0334;
+004F 0334 0311;
+01A1 0301 0334;
+004F 031B 0334 0300;
+00D5 031B 0334;
+006F 031B 0323 0334;
+1ECD 0334;
+00D4 0334 0323;
+24AA 0041;
+1D5C8 0061;
+1D52C 0041;
+004F 0061;
+1D546 0061;
+1D4AA 0041;
+24C4 0061;
+00F3 0061;
+014E 0061;
+1ED3 0061;
+1ED4 0061;
+022B 0061;
+00D5 0061;
+022D 0061;
+0230 0061;
+01EB 0061;
+014C 0061;
+1ECF 0061;
+020E 0061;
+1EDD 0061;
+1EDE 0061;
+1ED9 0061;
+1D45C 0062;
+1D698 0062;
+1D546 0062;
+2092 0062;
+1ED1 0062;
+00F6 0062;
+1E4F 0062;
+01FF 0062;
+1E51 0062;
+1EDB 0062;
+1ECD 0062;
+0152 0061;
+A74E 0061;
+1D0F 003F;
+0276 003F;
+1D13 003F;
+0254 0061;
+1D10 003F;
+1D97 003F;
+A74C 0061;
+1D54 0061;
+1D55 0061;
+0275 003F;
+1DB1 0041;
+A74A 0061;
+0223 003F;
+1D3D 0041;
+0070 003F;
+1D52D 0021;
+1D491 003F;
+1D699 003F;
+1D477 0021;
+2119 003F;
+1D617 003F;
+1E55 003F;
+1E55 0334;
+1E56 0334;
+1D4C5 0061;
+1D429 0041;
+1D631 0041;
+1D40F 0061;
+1D64B 0061;
+1D5AF 0041;
+3380 003F;
+1E57 0041;
+FF50 0062;
+1D5C9 0062;
+1D443 0062;
+1D67F 0062;
+3376 0061;
+33D7 0061;
+33D9 0061;
+33B0 0061;
+33B4 0061;
+1D18 0061;
+2C63 0041;
+A750 0041;
+1D88 0061;
+01A4 0041;
+A752 0041;
+A754 0041;
+1DB2 0021;
+2C77 0061;
+1D45E 0021;
+1D666 0021;
+1D5CA 003F;
+FF31 003F;
+1D5E4 0021;
+1D514 003F;
+0071 0041;
+1D52E 0061;
+1D492 0041;
+1D69A 0041;
+1D478 0061;
+211A 0041;
+1D618 0041;
+1D492 0062;
+1D69A 0062;
+1D514 0062;
+0239 0061;
+A756 0041;
+A758 0041;
+024A 0021;
+0138 0061;
+1DCA 0021;
+1D597 0021;
+1D4FB 003F;
+24E1 003F;
+1D479 0021;
+211D 003F;
+1D681 003F;
+0155 003F;
+1E58 003F;
+0213 003F;
+1E5C 003F;
+0052 0334 0301;
+0072 0334 0307;
+0156 0334;
+0052 0311 0334;
+0072 0323 0334 0304;
+0052 0331 0334;
+1DCA 0334;
+1DCA 0041;
+1D5FF 0061;
+1D563 0041;
+0052 0041;
+1D57D 0061;
+1D445 0041;
+24C7 0041;
+0154 0041;
+0157 0041;
+0212 0041;
+1E5F 0041;
+33AD 0041;
+33AE 0041;
+1D4C7 0062;
+24E1 0062;
+1D57D 0062;
+0155 0062;
+0213 0062;
+20A8 0021;
+01A6 003F;
+01A6 0062;
+1DE3 0061;
+1D19 0041;
+024D 0062;
+02B4 003F;
+1D1A 0041;
+1D89 0041;
+027B 0062;
+027C 0041;
+027D 0062;
+1D73 0041;
+02B6 003F;
+A775 0041;
+A75C 003F;
+FF53 003F;
+1D530 0021;
+1D494 003F;
+1D69C 003F;
+1D4AE 0021;
+1D412 003F;
+1D61A 003F;
+015A 003F;
+0161 003F;
+1E60 003F;
+1E69 003F;
+015B 0334;
+0053 0334 0341 0307;
+0073 0334 030C;
+0160 0307 0334;
+0073 0334 0327;
+1E62 0334;
+0073 0334 0326;
+A785 003F;
+0073 0061;
+1D494 0061;
+1D69C 0061;
+1D600 0041;
+1D412 0061;
+1D61A 0061;
+1D57E 0041;
+015B 0061;
+015C 0061;
+1E61 0061;
+1E62 0061;
+017F 0061;
+0073 0062;
+1D564 0062;
+1D412 0062;
+1D61A 0062;
+015C 0062;
+1E62 0062;
+2120 0021;
+00DF 0021;
+FB06 0021;
+33DC 0021;
+1D74 0021;
+0282 0021;
+023F 0021;
+1E9D 0021;
+1DB4 003F;
+1D8B 0021;
+0285 0021;
+0286 0021;
+24AF 003F;
+1D599 0021;
+1D4FD 003F;
+24E3 003F;
+1D517 0021;
+1D47B 003F;
+1D683 003F;
+0164 003F;
+0162 003F;
+1E71 003F;
+0054 030C 0334;
+0054 0334 0307;
+1E6D 0334;
+0074 032D 0334;
+0054 0334 0331;
+FF54 0061;
+1D4FD 0061;
+1D461 0041;
+1D669 0041;
+1D47B 0061;
+1D683 0061;
+1D5E7 0041;
+0165 0061;
+0163 0061;
+021A 0061;
+A787 0061;
+1D495 0062;
+1D69D 0062;
+1D54B 0062;
+0165 0062;
+021A 0062;
+02A8 0041;
+1D7A 0041;
+2122 0041;
+01BE 0062;
+A728 003F;
+1D1B 0041;
+0167 0062;
+2C66 0062;
+1DB5 003F;
+01AC 003F;
+01AE 003F;
+0236 0041;
+0287 0041;
+1D42E 0021;
+1D636 0021;
+1D59A 003F;
+FF35 0021;
+1D5B4 0021;
+1D518 003F;
+1D58 0021;
+00F9 0021;
+00DB 0021;
+00FC 0021;
+01DB 0021;
+0171 0021;
+1E78 0021;
+1E7B 0021;
+0214 0021;
+1EE9 0021;
+1EEE 0021;
+1EE5 0021;
+1E76 0021;
+0055 0301 0334;
+0055 0340 0334;
+00FB 0334;
+0075 030A 0334;
+0055 0334 0308;
+0075 0308 0300 0334;
+0075 0334 0308 030C;
+0055 0308 0334 0304;
+0075 0303 0334;
+0055 0303 0301 0334;
+0075 0304 0334;
+0055 0304 0308 0334;
+0075 030F 0334;
+0055 0334 0311;
+0075 0341 031B 0334;
+0055 0334 031B 0340;
+01AF 0303 0334;
+01B0 0323 0334;
+1EE5 0334;
+0075 032D 0334;
+0055 0334 0330;
+24B0 0041;
+1D5CE 0061;
+1D532 0041;
+0055 0061;
+1D54C 0061;
+1D4B0 0041;
+24CA 0061;
+00DA 0061;
+00FB 0061;
+016E 0061;
+01DC 0061;
+01D5 0061;
+1E79 0061;
+016A 0061;
+0215 0061;
+01AF 0061;
+1EEF 0061;
+1EF0 0061;
+1E77 0061;
+24B0 0062;
+1D5CE 0062;
+1D47C 0062;
+1D684 0062;
+016C 0062;
+01D7 0062;
+0168 0062;
+1EE6 0062;
+1EEA 0062;
+1E72 0062;
+1D1C 0041;
+1D1D 0041;
+1D6B 0021;
+1DB6 003F;
+1D7E 0021;
+0265 0021;
+02AE 0021;
+026F 0021;
+1D5A 0061;
+0270 0021;
+028A 0021;
+1DB7 0061;
+0076 0021;
+1D42F 0021;
+1D637 0021;
+1D59B 003F;
+FF36 0021;
+1D54D 0021;
+1D4B1 003F;
+24CB 0021;
+1E7C 0021;
+0056 0334 0303;
+0076 0061;
+1D42F 0061;
+1D637 0061;
+1D59B 0041;
+FF36 0061;
+1D54D 0061;
+1D4B1 0041;
+24CB 0061;
+1E7C 0061;
+2174 0062;
+1D603 0062;
+1D47D 0062;
+1D685 0062;
+2175 003F;
+2176 003F;
+2177 003F;
+33DE 003F;
+A760 0061;
+A75F 003F;
+1D8C 003F;
+028B 0061;
+2C71 003F;
+1EFD 003F;
+028C 003F;
+1DBA 0041;
+1D430 0021;
+1D638 0021;
+1D59C 003F;
+FF37 0021;
+1D5B6 0021;
+1D51A 003F;
+02B7 0021;
+1E80 0021;
+1E84 0021;
+0077 0334 0301;
+0077 0334 0340;
+0057 0334 0302;
+1E84 0334;
+0057 0323 0334;
+1D464 0061;
+1D66C 0061;
+1D5D0 0041;
+FF37 0041;
+1D5EA 0061;
+1D54E 0041;
+02B7 0041;
+1E80 0041;
+1E84 0041;
+FF57 0062;
+1D5D0 0062;
+1D47E 0062;
+1D686 0062;
+0175 0062;
+33DD 0041;
+2C72 003F;
+028D 0041;
+036F 003F;
+1D5D1 0021;
+1D535 003F;
+0058 0021;
+1D4E7 0021;
+1D44B 003F;
+1D653 003F;
+1E8C 0021;
+0058 0334 0308;
+0078 0061;
+1D431 0061;
+1D639 0061;
+1D59D 0041;
+FF38 0061;
+1D54F 0061;
+1D4B3 0041;
+24CD 0061;
+1E8B 0061;
+1D465 0062;
+1D66D 0062;
+1D4E7 0062;
+02E3 0062;
+217A 0061;
+217B 0061;
+1D8D 0062;
+1D4CE 0021;
+1D432 003F;
+1D63A 003F;
+1D44C 0021;
+1D654 0021;
+1D5B8 003F;
+00FD 003F;
+0176 003F;
+1EF8 003F;
+1EF7 003F;
+0079 0341 0334;
+0059 0334 0340;
+0079 0334 030A;
+1EF9 0334;
+0079 0304 0334;
+0059 0334 0309;
+FF59 0061;
+1D56A 0061;
+1D4CE 0041;
+24E8 0061;
+1D4E8 0061;
+1D44C 0041;
+1D654 0041;
+1EF3 0061;
+00FF 0061;
+1E8E 0061;
+1EF5 0061;
+1D4CE 0062;
+24E8 0062;
+1D584 0062;
+1EF3 0062;
+1E8E 0062;
+028F 0041;
+024F 0062;
+01B4 0062;
+1EFF 0062;
+1D433 0021;
+1D63B 0021;
+1D59F 003F;
+FF3A 0021;
+1D5B9 0021;
+1D4B5 003F;
+1DBB 0021;
+017E 0021;
+1E92 0021;
+005A 0301 0334;
+007A 030C 0334;
+005A 0334 0307;
+1E95 0334;
+1DE6 0061;
+1D59F 0061;
+1D503 0041;
+24E9 0041;
+1D4B5 0061;
+1D419 0041;
+1D689 0041;
+1E91 0041;
+017B 0041;
+FF5A 0062;
+1D59F 0062;
+2128 0062;
+1D655 0062;
+017C 0062;
+018D 0062;
+01B6 0061;
+1D76 0062;
+0225 0061;
+0290 0061;
+0291 0061;
+0240 0062;
+2C6B 0062;
+A762 0062;
+01EE 003F;
+01B7 0041;
+01EF 0062;
+01B8 003F;
+1D9A 0041;
+0293 0041;
+021D 0062;
+00FE 0062;
+A765 0062;
+A767 0062;
+01BF 0062;
+A769 0062;
+A76B 0062;
+A76D 0062;
+1DD2 0334;
+1DD2 0062;
+01BB 0061;
+A72A 0041;
+A72C 0041;
+A72E 0041;
+01A7 0041;
+01BC 0041;
+0184 0041;
+0241 0021;
+02C0 0061;
+0149 0061;
+02BE 0061;
+A722 0041;
+A78B 0041;
+02E4 0041;
+02C1 0061;
+1D5C 0021;
+A724 0021;
+02A1 0061;
+0296 0061;
+01C1 0061;
+01C3 0061;
+0298 0061;
+02AD 0061;
+1D6C2 003F;
+1D756 0021;
+1F08 003F;
+1F02 003F;
+1F0E 003F;
+1F01 003F;
+1F8D 003F;
+1F07 003F;
+1F89 003F;
+1FB4 003F;
+1FB8 003F;
+03B1 0334 0313;
+1F00 0334 0301;
+0391 0334 0313 0345 0341;
+1F08 0334 0300;
+03B1 0334 0343 0342;
+1FB3 0343 0342 0334;
+0391 0345 0313 0334;
+03B1 0334 0314 0301;
+1F01 0334 0345 0301;
+0391 0314 0340 0334;
+1F0B 0334 0345;
+03B1 0314 0345 0334 0342;
+1F01 0345 0334;
+0391 0301 0334;
+1F70 0334;
+03B1 0334 0306;
+03B1 0345 0334 0342;
+1FB3 0334;
+1D6C2 0061;
+0391 0061;
+1D756 0041;
+1F84 0061;
+1F8A 0061;
+1F80 0061;
+1F0D 0061;
+1F83 0061;
+1F8F 0061;
+0386 0061;
+1FB2 0061;
+1FB1 0061;
+1D6FC 0062;
+1F00 0062;
+1F06 0062;
+1F85 0062;
+1F81 0062;
+1FB0 0062;
+03D0 0021;
+1D771 003F;
+1D6E3 003F;
+03D0 0061;
+1D771 0041;
+1D6E3 0041;
+1D6C3 0062;
+1D791 0062;
+1D7AC 0021;
+1D6AA 0021;
+1D792 003F;
+1D738 0061;
+0393 0041;
+1D71E 0041;
+1D6FE 0062;
+1D792 0062;
+1D6C5 0021;
+0394 0021;
+1D759 003F;
+1D7AD 0061;
+1D71F 0061;
+03B4 0062;
+1D759 0062;
+1D716 0021;
+1D716 003F;
+1D6E6 0021;
+1F10 003F;
+1F1A 003F;
+1F13 003F;
+1FC9 003F;
+0395 0334 0313;
+1F18 0334 0341;
+03B5 0334 0314;
+1F19 0301 0334;
+1F19 0340 0334;
+03B5 0334 0300;
+03F5 0041;
+1D7C4 0061;
+1D7C4 0041;
+1D720 0041;
+1F1C 0041;
+1F15 0041;
+1F73 0041;
+03F5 0062;
+1D7C4 0062;
+1F1C 0062;
+1F73 0062;
+03DC 003F;
+1D7CA 0041;
+0377 0041;
+03DB 0041;
+1D775 0021;
+1D6E7 0021;
+03B6 0041;
+1D7AF 0041;
+1D721 0041;
+1D6AD 0062;
+0371 0041;
+1D776 0021;
+1D6E8 0021;
+1F20 003F;
+1F9C 003F;
+1F26 003F;
+1F98 003F;
+1F95 003F;
+1F9B 003F;
+1F91 003F;
+1FCB 003F;
+1FC6 003F;
+1F28 0334;
+03B7 0334 0345 0343 0341;
+03B7 0334 0343 0340;
+1F28 0345 0334 0340;
+1F28 0342 0334;
+1FC3 0313 0334;
+0397 0314 0334;
+1F29 0341 0334;
+03B7 0314 0334 0340;
+1F23 0334 0345;
+0397 0334 0314 0342;
+1FCC 0314 0342 0334;
+03B7 0334 0301;
+1F75 0345 0334;
+03B7 0334 0340 0345;
+03B7 0334 0345;
+03B7 0061;
+1D776 0041;
+1D6E8 0041;
+1F2C 0061;
+1F92 0061;
+1F9E 0061;
+1F25 0061;
+1F2B 0061;
+1F97 0061;
+03AE 0041;
+1FCA 0061;
+1FCC 0061;
+1D6E8 0062;
+1F22 0062;
+1F21 0062;
+1F27 0062;
+1FC4 0062;
+03D1 0021;
+1D7B1 0021;
+1D7B1 003F;
+1D723 0021;
+1D723 003F;
+03D1 0061;
+1D7B1 0061;
+1D7B1 0041;
+1D723 0061;
+1D723 0041;
+1D6C9 0062;
+0398 0062;
+1D797 0062;
+1D704 0021;
+0399 003F;
+1D798 003F;
+1F32 003F;
+1F39 003F;
+1F37 003F;
+1FDB 003F;
+1FD6 003F;
+1FD2 003F;
+1FBE 0343 0334;
+0399 0334 0313 0301;
+1F38 0300 0334;
+03B9 0334 0314;
+0399 0314 0341 0334;
+1F39 0340 0334;
+03B9 0334 0301;
+1FBE 0334 0300;
+0399 0306 0334;
+1FBE 0334 0308;
+03CA 0340 0334;
+0399 0304 0334;
+1D704 0061;
+0399 0041;
+1D798 0041;
+1F32 0041;
+1F39 0041;
+1F37 0041;
+1FDB 0041;
+1FD6 0041;
+1FD2 0041;
+1D6CA 0062;
+1D798 0062;
+1F39 0062;
+1FDB 0062;
+1FD2 0062;
+03BA 003F;
+1D78C 0021;
+1D78C 003F;
+1D6B1 003F;
+1D6DE 0061;
+1D6DE 0041;
+039A 0041;
+1D799 0041;
+1D78C 0062;
+03D7 003F;
+03BB 003F;
+1D7B4 003F;
+1D726 003F;
+1D6CC 0041;
+1D760 0061;
+1D740 0062;
+1D27 003F;
+1D741 0021;
+1D6B3 0021;
+03BC 0061;
+1D707 0041;
+1D79B 0061;
+3382 0062;
+1D6ED 0062;
+338D 003F;
+339B 003F;
+33B6 003F;
+03BD 003F;
+1D7B6 003F;
+1D728 003F;
+1D6CE 0041;
+1D762 0061;
+1D742 0062;
+03BE 003F;
+1D7B7 003F;
+1D729 003F;
+1D6CF 0041;
+1D763 0061;
+1D743 0062;
+03BF 003F;
+1D7B8 003F;
+1D72A 003F;
+1F4C 003F;
+1F45 003F;
+1F79 003F;
+03BF 0334 0343;
+1F44 0334;
+039F 0334 0343 0300;
+03BF 0334 0314 0301;
+1F43 0334;
+039F 0334 0301;
+1FF8 0334;
+1D744 0041;
+1D6B6 0041;
+1F44 0041;
+1F49 0041;
+1F79 0061;
+1FF8 0041;
+1D72A 0062;
+1F49 0062;
+1FF8 0062;
+1D745 0021;
+1D71B 003F;
+1D6B7 0021;
+1D79F 003F;
+1D745 0061;
+1D71B 0041;
+1D6B7 0061;
+1D79F 0041;
+1D77F 0062;
+1D79F 0062;
+03FB 0061;
+03DF 0061;
+03D9 0061;
+1D6D2 0021;
+1D6D2 003F;
+03A1 0021;
+1D766 003F;
+03C1 0334 0313;
+03C1 0061;
+1D780 0061;
+1D780 0041;
+1D7A0 0061;
+1FE5 0061;
+1D746 0062;
+1D766 0062;
+1D29 0062;
+1D6D3 0021;
+1D6D3 003F;
+03A3 0021;
+1D6F4 003F;
+1D6D3 0061;
+1D6D3 0041;
+03A3 0061;
+1D6F4 0041;
+1D70D 0062;
+1D6BA 0062;
+037C 0061;
+037B 0061;
+037D 0061;
+1D749 0021;
+1D6BB 0021;
+03C4 0061;
+1D783 0041;
+1D6F5 0041;
+03A4 0062;
+1D74A 0021;
+03D2 0021;
+1D76A 003F;
+1F51 0021;
+1F5B 0021;
+038E 0021;
+1FE0 0021;
+03D4 0021;
+1FE1 0021;
+03C5 0334 0343 0341;
+03C5 0314 0334;
+03A5 0314 0301 0334;
+1F59 0334 0300;
+03C5 0334 0301;
+03D2 0341 0334;
+03C5 0306 0334;
+03C5 0334 0308;
+03C5 0344 0334;
+03C5 0304 0334;
+1D74A 0061;
+03D2 0061;
+1D76A 0041;
+1F51 0061;
+1F5B 0061;
+038E 0061;
+1FE0 0061;
+03D4 0061;
+1FE1 0061;
+03A5 0062;
+1F56 0062;
+1F7B 0062;
+03AB 0062;
+03D5 0021;
+1D7BF 0021;
+1D7BF 003F;
+1D6F7 003F;
+03D5 0061;
+1D7BF 0061;
+1D7BF 0041;
+1D6F7 0041;
+1D6D7 0062;
+03A6 0062;
+1D6D8 0021;
+03A7 0021;
+1D76C 003F;
+1D74C 0061;
+1D6BE 0061;
+1D61 0061;
+03A7 0062;
+1D6D9 0021;
+03A8 0021;
+1D76D 003F;
+1D713 0041;
+1D7A7 0061;
+1D787 0062;
+1D2A 0061;
+1D6DA 003F;
+1D6FA 0021;
+1F60 003F;
+1FAC 003F;
+1F66 003F;
+1FA8 003F;
+1FA5 003F;
+1FAB 003F;
+1FA1 003F;
+1FFB 003F;
+1FF6 003F;
+2126 0334 0343;
+03C9 0343 0345 0301 0334;
+03C9 0334 0343 0340;
+1FA8 0334 0300;
+2126 0343 0342 0334;
+03C9 0343 0345 0334;
+03A9 0314 0334;
+03A9 0314 0341 0334;
+03C9 0314 0300 0334;
+1F61 0334 0345 0300;
+03A9 0314 0334 0342;
+1F6F 0345 0334;
+03C9 0301 0334;
+1F7D 0345 0334;
+03C9 0300 0345 0334;
+1FF6 0334 0345;
+1FFC 0021;
+1D714 0041;
+1D734 0061;
+1F68 0061;
+1F62 0061;
+1F6E 0061;
+1F61 0061;
+1FAD 0061;
+1F67 0061;
+1FA9 0061;
+1FF4 0061;
+1FF7 0061;
+1D788 0062;
+1F68 0062;
+1F6E 0062;
+1FAD 0062;
+1FA9 0062;
+1FF7 0062;
+03E0 0041;
+0372 0041;
+03F7 0041;
+2C80 0041;
+2C82 0041;
+2C84 0041;
+2C86 0041;
+2C88 0041;
+2CB6 0041;
+2C8A 0041;
+2C8C 0041;
+2C8E 0041;
+2C90 0041;
+2C92 0041;
+2C94 0041;
+2CB8 0021;
+2C96 0021;
+2C98 0021;
+2C9A 0021;
+2CBA 0021;
+2CBC 0021;
+2C9C 0021;
+2C9E 0021;
+2CA0 0021;
+2CA2 0021;
+2CA4 0021;
+2CA6 0021;
+2CA8 0021;
+2CAA 0021;
+2CAC 0021;
+2CAE 0021;
+2CB0 0021;
+2CBE 0021;
+2CC0 0021;
+03E2 0021;
+2CC2 0021;
+2CC4 0021;
+2CC6 0021;
+03E4 0021;
+03E6 0021;
+2CC8 0021;
+03E8 0021;
+2CCA 0021;
+2CCC 0021;
+2CCE 0021;
+2CD0 0021;
+2CD2 0021;
+2CD4 0021;
+03EA 0021;
+2CD6 0021;
+03EC 0021;
+2CD8 0021;
+2CDA 0021;
+2CDC 0021;
+03EE 0021;
+2CB2 0021;
+2CB4 0021;
+2CDE 0021;
+2CE0 0021;
+2CE2 0021;
+2DF6 0021;
+0410 0041;
+0430 0306 003F;
+0410 0334 0306;
+0410 1D165 0306 0061;
+0430 0308 003F;
+0410 0334 0308;
+0410 1D165 0308 0061;
+04D8 0021;
+04D9 0308 0021;
+04DB 0334;
+04D8 0308 0061;
+04D5 0021;
+0431 0021;
+2DE0 0041;
+0412 0021;
+2DE1 0062;
+0490 0021;
+0433 0001 0341 0061;
+0491 0062;
+0493 0062;
+04FB 0062;
+0495 0062;
+04F7 0062;
+0434 0041;
+0500 0021;
+A680 0021;
+0402 0021;
+A662 0021;
+0502 0021;
+0453 0021;
+0433 0334 0301;
+0433 0591 0301 0061;
+0413 0341 0061;
+0453 0062;
+0498 0061;
+0450 0021;
+0435 0334 0340;
+0415 0308 0334;
+0450 0041;
+2DF7 0062;
+0415 0306 0021;
+0435 0306 0061;
+0415 0306 0041;
+0454 0061;
+0416 0021;
+0416 0334 0306;
+04C2 0041;
+A685 0021;
+0436 0308 0021;
+04DD 0334;
+0416 0308 0061;
+0497 0021;
+0437 0021;
+2DE5 0041;
+A640 0021;
+0504 0021;
+0510 0021;
+0437 0308 003F;
+0417 0334 0308;
+0417 1D165 0308 0061;
+A642 0021;
+0405 0021;
+A644 0021;
+04E0 0021;
+A688 0021;
+0506 0021;
+A682 0021;
+0418 0021;
+0438 0300 0334;
+04E3 0334;
+040D 0061;
+0438 0062;
+048B 0061;
+0418 0308 0021;
+0438 0308 0061;
+0418 0308 0041;
+0456 0061;
+A646 0021;
+0456 0308 003F;
+0406 0334 0308;
+0406 1D165 0308 0061;
+0438 0306 003F;
+0418 0334 0306;
+0418 1D165 0306 0061;
+0408 0021;
+2DF8 0021;
+A648 0041;
+2DE6 0334;
+041A 0001 0341 0061;
+049A 0061;
+04C3 0061;
+04A0 0061;
+049E 0061;
+049C 0061;
+051E 0061;
+051A 0061;
+2DE7 0334;
+1D2B 0021;
+04C6 0041;
+0513 0041;
+0521 0041;
+0459 0041;
+A665 0041;
+0509 0041;
+0515 0041;
+041C 003F;
+041C 0062;
+04CD 0062;
+A666 0062;
+043D 0061;
+041D 0062;
+04CA 0062;
+04A3 0062;
+04C8 0062;
+0523 0062;
+04A5 0062;
+045A 0062;
+050B 0062;
+A669 003F;
+A66A 003F;
+2DEA 0041;
+A668 0041;
+A66E 0062;
+04E6 0021;
+043E 0591 0308 0061;
+04E6 0041;
+04E9 0041;
+04EB 003F;
+04EA 0334;
+04EA 0061;
+2DEB 003F;
+043F 0062;
+04A6 0041;
+0480 0041;
+0440 0061;
+048F 003F;
+0517 003F;
+0441 003F;
+0421 0061;
+2DF5 0062;
+050C 0062;
+04AA 0062;
+2DEE 0061;
+A68C 003F;
+050E 003F;
+04AC 003F;
+A68A 003F;
+040B 003F;
+043A 0301 003F;
+043A 0334 0301;
+043A 0591 0341 0061;
+041A 0591 0301 0061;
+040C 0062;
+04EE 003F;
+0423 0041;
+04EE 0041;
+0423 0306 0021;
+0443 0591 0306 0061;
+0423 0306 0041;
+04F0 0021;
+0443 0591 0308 0061;
+04F0 0041;
+04F2 0021;
+0443 0591 030B 0061;
+04F2 0041;
+04AF 0041;
+04B1 0041;
+A64A 003F;
+A64A 0062;
+0478 0062;
+0424 0062;
+2DEF 0061;
+04FC 003F;
+04FE 003F;
+04B2 003F;
+04BA 003F;
+A694 003F;
+0460 003F;
+047E 003F;
+A64C 003F;
+047C 003F;
+047A 003F;
+2DF0 003F;
+0446 0062;
+A68E 0041;
+04B4 0041;
+A690 0041;
+0447 0061;
+0427 0062;
+A692 0062;
+0447 0334 0308;
+04F5 0041;
+04F4 0062;
+04B6 0062;
+04CB 0062;
+04B8 0062;
+A686 0062;
+04BC 0062;
+04BE 0062;
+040F 0062;
+2DF2 0061;
+A696 003F;
+2DF3 003F;
+0449 0062;
+A64E 0041;
+A67F 0061;
+042A 0041;
+A650 0041;
+042B 0041;
+04F8 0021;
+044B 0591 0308 0061;
+04F8 0041;
+044C 0041;
+048D 0041;
+0462 003F;
+0462 0062;
+A652 0062;
+042D 0001 0308 0061;
+04EC 003F;
+04ED 0061;
+04ED 0062;
+044E 0061;
+A655 003F;
+A657 003F;
+A656 0061;
+044F 0041;
+0519 0041;
+0465 0041;
+0466 003F;
+0466 0062;
+A658 0062;
+2DFE 0061;
+A65A 003F;
+0468 003F;
+A65C 003F;
+2DFF 003F;
+046D 0062;
+046E 0041;
+0470 0041;
+0473 0061;
+0475 003F;
+0474 0062;
+0475 0334 030F;
+0477 0041;
+0476 0062;
+A65E 0062;
+04A8 0062;
+051C 0062;
+04C0 0062;
+2C00 0062;
+2C01 0062;
+2C02 0062;
+2C03 0062;
+2C04 0062;
+2C05 0062;
+2C06 0062;
+2C07 0062;
+2C08 0062;
+2C09 0062;
+2C0A 0062;
+2C0B 0062;
+2C0C 0062;
+2C0D 0062;
+2C0E 0062;
+2C0F 0062;
+2C10 0062;
+2C11 0062;
+2C12 0062;
+2C13 0062;
+2C14 0062;
+2C15 0062;
+2C16 0062;
+2C17 0062;
+2C18 0062;
+2C19 0062;
+2C1A 0062;
+2C1B 0062;
+2C1C 0062;
+2C1D 0062;
+2C1E 0062;
+2C1F 0062;
+2C20 0062;
+2C21 0062;
+2C22 0062;
+2C23 0062;
+2C24 0062;
+2C25 0062;
+2C26 0062;
+2C27 0062;
+2C28 0062;
+2C29 0062;
+2C2A 0062;
+2C2B 0062;
+2C2C 0062;
+2C2D 0062;
+2C2E 0062;
+2D00 0061;
+10D1 0062;
+10A1 0062;
+2D02 0061;
+10D3 0062;
+10A3 0062;
+2D04 0061;
+10D5 0062;
+10A5 0062;
+2D06 0061;
+10F1 0062;
+10C1 0062;
+2D07 0061;
+10D8 0062;
+10A8 0062;
+2D09 0061;
+10DA 0062;
+10AA 0062;
+2D0B 0061;
+10DC 0061;
+2D0C 0061;
+10F2 0062;
+10C2 0062;
+2D0D 0061;
+10DE 0062;
+10AE 0062;
+2D0F 0061;
+10E0 0062;
+10B0 0062;
+2D11 0061;
+10E2 0062;
+10B2 0062;
+2D23 0061;
+10E3 0062;
+10B3 0062;
+2D14 0061;
+10E5 0062;
+10B5 0062;
+2D16 0061;
+10E7 0062;
+10B7 0062;
+2D18 0061;
+10E9 0062;
+10B9 0062;
+2D1A 0061;
+10EB 0062;
+10BB 0062;
+2D1C 0061;
+10ED 0062;
+10BD 0062;
+2D1E 0061;
+10F4 0062;
+10C4 0062;
+2D1F 0061;
+10F0 0062;
+10C0 0062;
+2D25 0061;
+10F6 0062;
+10F8 0062;
+10FA 0062;
+0531 0062;
+0532 0062;
+0533 0062;
+0534 0062;
+0535 0062;
+0566 0061;
+0567 0061;
+0568 0061;
+0569 0061;
+056A 0061;
+056B 0061;
+056C 0061;
+056D 0061;
+056E 0061;
+056F 0061;
+0570 0061;
+0571 0061;
+0572 0061;
+0573 0061;
+0574 0061;
+FB14 0062;
+FB17 0062;
+0575 0061;
+0576 0061;
+0577 0061;
+0578 0061;
+0579 0061;
+057A 0061;
+057B 0061;
+057C 0061;
+057D 0061;
+057E 0061;
+FB16 0062;
+054F 0062;
+0550 0062;
+0551 0062;
+0552 0062;
+0553 0062;
+0554 0062;
+0555 0062;
+0556 0062;
+FB21 0021;
+FB30 0334;
+2135 0041;
+2135 0062;
+05D1 0021;
+FB31 0021;
+FB4C 0061;
+05D2 0334 05BC;
+FB32 0041;
+05D3 0334 05BC;
+FB22 0041;
+FB23 003F;
+FB34 0061;
+05D5 0334 05BC;
+FB4B 0041;
+05F0 0062;
+FB36 0334;
+05D7 003F;
+FB38 003F;
+05D9 05B4 0334;
+05D9 0041;
+05F2 0334 05B7;
+FB1F 0062;
+05DA 0334 05BC;
+FB4D 0021;
+FB3A 0061;
+05DC 0021;
+05DC 0041;
+FB26 0021;
+05DE 0041;
+FB3E 0062;
+05E0 0061;
+05E1 003F;
+05E1 0062;
+05E2 0062;
+05E3 05BC 0334;
+FB4E 003F;
+FB4E 0041;
+05E6 0334 05BC;
+FB46 0041;
+FB47 003F;
+FB27 003F;
+FB48 0061;
+05E9 0334 05C1;
+05E9 0334 05BC 05C1;
+FB2D 0021;
+FB49 0061;
+FB2D 0062;
+FB4A 003F;
+10900 0021;
+10902 0021;
+10904 0021;
+10906 0021;
+10908 0021;
+1090A 0021;
+1090C 0021;
+1090E 0021;
+10910 0021;
+10912 0021;
+10914 0021;
+0621 0021;
+0674 0061;
+0622 0021;
+0627 0653 0334;
+FE81 0041;
+FE84 003F;
+0623 0041;
+0672 0021;
+FB50 003F;
+0624 0021;
+0648 0654 0334;
+FE85 0041;
+FE88 003F;
+0627 0655 0041;
+0673 003F;
+0774 003F;
+FE8C 0021;
+064A 0591 0654 0061;
+FE8A 0041;
+FBEB 003F;
+FC97 003F;
+FC98 003F;
+FC99 003F;
+FC65 003F;
+FC02 0021;
+FC9A 0062;
+FC9B 003F;
+FBED 003F;
+FBEF 003F;
+FBF3 003F;
+FBF1 003F;
+FBF5 003F;
+FBFB 003F;
+FBFB 0041;
+FBFA 0062;
+FC04 0061;
+FBF8 0061;
+0627 003F;
+0627 0041;
+0627 0001 0654 0061;
+0675 0061;
+FDF2 0061;
+FE91 0021;
+FE91 0061;
+FE92 0062;
+FC05 0041;
+FC06 0041;
+FC07 0021;
+FD9E 0061;
+FC6B 0061;
+FC08 003F;
+FCE1 0062;
+FCE2 0021;
+FC09 0021;
+FC0A 0021;
+FB54 0021;
+FB54 0061;
+FB55 0062;
+FB57 003F;
+FB57 0041;
+FB5C 0021;
+FB5C 0061;
+FB5D 0062;
+0751 0061;
+0753 0061;
+0755 0061;
+FE94 0021;
+0629 0062;
+FE96 003F;
+FE96 0041;
+FC0B 0021;
+FD50 0061;
+FD9F 0061;
+FC0C 0041;
+FD51 0041;
+FC0D 0021;
+FD54 0061;
+FDA1 0061;
+FC71 0061;
+FC0E 003F;
+FCE3 0062;
+FD56 0061;
+FDA4 0061;
+FC73 0061;
+FCE4 0041;
+FC0F 0041;
+FC10 0041;
+FE9A 003F;
+FE9A 0041;
+FC11 0061;
+FC77 0061;
+FC12 003F;
+FCE5 0062;
+FCE6 0061;
+FC13 0041;
+FC14 0041;
+FB67 003F;
+FB67 0041;
+FB60 0021;
+FB60 0061;
+FB61 0062;
+067D 0061;
+FB63 003F;
+FB63 0041;
+FE9F 0021;
+FE9F 0061;
+FEA0 0062;
+FC15 0041;
+FDBE 0061;
+FC16 0021;
+FD58 0021;
+FDA7 0061;
+FD01 0021;
+FD02 0021;
+FB78 0021;
+FB78 0061;
+FB79 0062;
+FB73 003F;
+FB73 0041;
+FB7C 0021;
+FB7C 0061;
+FB7D 0062;
+FB80 0021;
+FB80 0061;
+FB81 0062;
+FEA2 003F;
+FEA2 0041;
+FC17 0021;
+FDBF 0061;
+FC18 0041;
+FD5A 0061;
+FCFF 0041;
+FD00 0041;
+FEA6 003F;
+FEA6 0041;
+FC19 0021;
+FC1A 0061;
+FC1B 0041;
+FD03 0041;
+FD04 0041;
+0682 0061;
+0757 0061;
+076E 0061;
+0772 0061;
+FEAA 0021;
+062F 0062;
+FC5B 003F;
+FEAC 0062;
+0688 0041;
+0689 0061;
+068B 0061;
+068C 0041;
+FB83 0021;
+068D 0062;
+068E 0041;
+068F 0061;
+06EE 0061;
+075A 0061;
+FC5C 003F;
+FEAE 0062;
+FDFC 0061;
+0632 0041;
+FB8D 0021;
+0691 0062;
+0693 0061;
+0695 0061;
+0697 0061;
+0698 0041;
+0699 0061;
+075B 0061;
+076C 0061;
+FEB3 0021;
+FEB3 0061;
+FEB4 0062;
+FCAD 0041;
+FD5D 0061;
+FD35 0021;
+FCAE 0062;
+FD36 0021;
+FCAF 0062;
+FDC6 0061;
+FD0E 0041;
+FCB0 0041;
+FD61 0061;
+FD5F 0041;
+FD62 0041;
+FCE8 0041;
+FCFB 0041;
+FCFC 0041;
+FEB6 003F;
+FEB6 0041;
+FD37 0021;
+FD25 0061;
+FD69 0061;
+FD0A 003F;
+FD38 0062;
+FD67 0041;
+FD39 0021;
+FD27 0061;
+FD0D 0021;
+FCE9 0021;
+FD28 0061;
+FD6A 0021;
+FD6C 0021;
+FCEA 0021;
+FCFD 0021;
+FCFE 0021;
+069A 0061;
+069C 0061;
+075C 0061;
+0770 0061;
+077E 0061;
+FEBA 003F;
+FEBA 0041;
+FC20 0021;
+FD64 0021;
+FDA9 0061;
+FD0F 0021;
+FDF5 0061;
+FDFA 0061;
+FC21 0021;
+FD66 0021;
+FD05 0021;
+FD06 0021;
+FEBF 0021;
+FEBF 0061;
+FEC0 0062;
+FC22 0041;
+FC23 0041;
+FDAB 0061;
+FC24 0041;
+FD6F 0041;
+FD10 0041;
+FC25 0041;
+FD07 0041;
+FD08 0041;
+069E 0061;
+FEC3 0021;
+FEC3 0061;
+FEC4 0062;
+FC26 0041;
+FD33 0041;
+FD71 0021;
+FD73 0061;
+FCF5 0021;
+FCF6 0021;
+FEC7 0021;
+FEC7 0061;
+FEC8 0062;
+FCB9 0041;
+069F 0061;
+FECA 003F;
+FECA 0041;
+FC29 0021;
+FD75 0021;
+FDF7 0061;
+FC2A 0041;
+FD76 0041;
+FDB6 0061;
+FCF7 0041;
+FCF8 0041;
+FECE 003F;
+FECE 0041;
+FC2B 0021;
+FC2C 0021;
+FD79 0061;
+FD7A 0061;
+FCF9 0041;
+FCFA 0041;
+06FC 0061;
+075E 0061;
+FED3 0021;
+FED3 0061;
+FED4 0062;
+FC2D 0041;
+FC2E 0041;
+FC2F 0041;
+FD7C 0041;
+FC30 0041;
+FC31 0021;
+FC32 0021;
+06A1 0061;
+06A3 0061;
+FB6B 003F;
+FB6B 0041;
+06A5 0061;
+FB6F 003F;
+FB6F 0041;
+0760 0061;
+066F 0061;
+FED6 003F;
+FED6 0041;
+FC33 0021;
+FDF1 0061;
+FC34 0041;
+FD7E 0041;
+FDB2 0061;
+FC35 0041;
+FC36 0041;
+06A8 0061;
+FEDA 003F;
+FEDA 0041;
+FC37 0021;
+FC38 0021;
+FC39 0021;
+FC3A 0021;
+FCEB 0021;
+FC81 0061;
+FCEC 0021;
+FC82 0061;
+FDBB 0021;
+FDB7 0061;
+FC3D 0041;
+FC3E 0041;
+FB8F 003F;
+FB8F 0041;
+06AA 0061;
+06AC 0061;
+FBD5 0021;
+FBD5 0061;
+FBD6 0062;
+FB94 0021;
+FB94 0061;
+FB95 0062;
+FB9C 0021;
+FB9C 0061;
+FB9D 0062;
+FB98 0021;
+FB98 0061;
+FB99 0062;
+0762 0061;
+063C 0061;
+0764 0061;
+FEDE 003F;
+FEDE 0041;
+FEF5 0021;
+FEF7 0021;
+FEF9 0021;
+FEFB 0021;
+FC3F 0021;
+FD84 0021;
+FDBC 0021;
+FDAC 0061;
+FC40 0041;
+FD80 0041;
+FD81 0061;
+FC41 0041;
+FD85 0041;
+FC42 003F;
+FCED 0062;
+FD87 0041;
+FCCD 0061;
+FC43 0041;
+FC44 0041;
+06B6 0061;
+06B8 0061;
+FEE3 0021;
+0645 0061;
+06FE 0061;
+FC88 0061;
+FC45 0041;
+FD92 0061;
+FDC0 0061;
+FC46 0041;
+FD8A 0061;
+FD8B 0061;
+FC47 0041;
+FD8F 0061;
+FC89 0021;
+FCD1 0062;
+FC49 0061;
+0765 0061;
+FEE7 0021;
+FEE7 0061;
+FEE8 0062;
+FC4B 0041;
+FDBD 0041;
+FD97 0041;
+FDC7 0061;
+FC4C 0041;
+FD96 0061;
+FC4D 0021;
+FC8A 0061;
+FCEE 0021;
+FC8C 0061;
+FD9B 0061;
+FC8D 0061;
+FCEF 0041;
+FC4F 0041;
+FC50 0041;
+06BA 0041;
+FBA2 0021;
+FBA2 0061;
+FBA3 0062;
+06BD 0061;
+0767 0061;
+0769 0061;
+FEEA 003F;
+FEEC 0041;
+FEEA 0062;
+FC51 0041;
+FC52 0041;
+FD94 0061;
+FC54 0061;
+FBAB 003F;
+FBAB 0041;
+FBA8 0021;
+06C2 0334;
+FBA7 0041;
+06C2 0062;
+06FF 0062;
+FBA4 0021;
+06D5 0062;
+FEED 0021;
+0648 0001 0654 0061;
+FDF8 0021;
+06C5 0021;
+FBE0 0061;
+FBD9 003F;
+06C7 0021;
+FBD7 0061;
+0677 0041;
+FBDB 003F;
+06C9 0021;
+FBE2 0061;
+06CB 0021;
+FBDE 0061;
+0778 0021;
+0649 0021;
+FC90 0021;
+FEF0 0061;
+FBE9 0062;
+FEF3 003F;
+06E6 0041;
+064A 0062;
+0678 0062;
+FC55 0062;
+FCDB 0061;
+FDAE 0062;
+FC57 0062;
+FC92 0062;
+FCDD 0041;
+FC58 0062;
+FD9C 0062;
+FC94 0062;
+FCF1 0062;
+FC59 0062;
+FC5A 0062;
+FBFC 003F;
+FBFC 0041;
+06CD 0062;
+FBE7 0021;
+FBE7 0061;
+FBE4 0062;
+063D 0062;
+063F 0062;
+0776 0062;
+FBAE 0021;
+FBB0 003F;
+FBB1 0041;
+077A 003F;
+0710 003F;
+072D 0061;
+0713 0061;
+0716 003F;
+072F 0061;
+0718 003F;
+074D 003F;
+071B 003F;
+071D 003F;
+071F 003F;
+0720 003F;
+0722 003F;
+0724 0061;
+0726 003F;
+074F 003F;
+0729 003F;
+072B 003F;
+0780 003F;
+079A 003F;
+0782 003F;
+079C 003F;
+0785 003F;
+0787 003F;
+07A3 003F;
+07A5 003F;
+078A 003F;
+079B 003F;
+0798 003F;
+07A1 003F;
+078E 003F;
+078F 003F;
+079D 003F;
+079F 003F;
+0792 003F;
+0794 003F;
+0796 003F;
+07B1 003F;
+07A7 003F;
+07A9 003F;
+07AB 003F;
+07AD 003F;
+07AF 003F;
+07CA 003F;
+07CC 003F;
+07CE 003F;
+07D0 003F;
+07D2 003F;
+07D4 003F;
+07D6 003F;
+07D7 003F;
+07D8 003F;
+07EA 0061;
+07DB 003F;
+07DD 003F;
+07DF 003F;
+07E1 003F;
+07E3 003F;
+07E5 003F;
+07E7 003F;
+07F5 003F;
+2D31 003F;
+2D33 003F;
+2D35 003F;
+2D37 003F;
+2D39 003F;
+2D3B 003F;
+2D3D 003F;
+2D3F 003F;
+2D41 003F;
+2D43 003F;
+2D45 003F;
+2D47 003F;
+2D49 003F;
+2D4B 003F;
+2D4D 003F;
+2D4F 003F;
+2D51 003F;
+2D53 003F;
+2D55 003F;
+2D57 003F;
+2D59 003F;
+2D5B 003F;
+2D5D 003F;
+2D5F 003F;
+2D61 003F;
+2D63 003F;
+2D65 003F;
+1200 003F;
+1202 003F;
+1204 003F;
+1206 003F;
+1208 003F;
+120A 003F;
+120C 003F;
+120E 003F;
+2D80 003F;
+1211 003F;
+1213 003F;
+1215 003F;
+1217 003F;
+1219 003F;
+121B 003F;
+121D 003F;
+121F 003F;
+1381 003F;
+1383 003F;
+1220 003F;
+1222 003F;
+1224 003F;
+1226 003F;
+1228 003F;
+122A 003F;
+122C 003F;
+122E 003F;
+2D82 003F;
+1231 003F;
+1233 003F;
+1235 003F;
+1237 003F;
+1238 003F;
+123A 003F;
+123C 003F;
+123E 003F;
+2D84 003F;
+1241 003F;
+1243 003F;
+1245 003F;
+1247 003F;
+124A 003F;
+124C 003F;
+1250 003F;
+1252 003F;
+1254 003F;
+1256 003F;
+125A 003F;
+125C 003F;
+1260 003F;
+1262 003F;
+1264 003F;
+1266 003F;
+1384 003F;
+1386 003F;
+2D85 003F;
+1269 003F;
+126B 003F;
+126D 003F;
+126F 003F;
+1271 003F;
+1273 003F;
+1275 003F;
+1277 003F;
+1278 003F;
+127A 003F;
+127C 003F;
+127E 003F;
+2D87 003F;
+1281 003F;
+1283 003F;
+1285 003F;
+1287 003F;
+128A 003F;
+128C 003F;
+1290 003F;
+1292 003F;
+1294 003F;
+1296 003F;
+2D88 003F;
+1299 003F;
+129B 003F;
+129D 003F;
+129F 003F;
+12A0 003F;
+12A2 003F;
+12A4 003F;
+12A6 003F;
+2D8A 003F;
+12A9 003F;
+12AB 003F;
+12AD 003F;
+12AF 003F;
+12B2 003F;
+12B4 003F;
+12B8 003F;
+12BA 003F;
+12BC 003F;
+12BE 003F;
+12C2 003F;
+12C4 003F;
+12C8 003F;
+12CA 003F;
+12CC 003F;
+12CE 003F;
+12D0 003F;
+12D2 003F;
+12D4 003F;
+12D6 003F;
+12D9 003F;
+12DB 003F;
+12DD 003F;
+12DF 003F;
+12E0 003F;
+12E2 003F;
+12E4 003F;
+12E6 003F;
+12E8 003F;
+12EA 003F;
+12EC 003F;
+12EE 003F;
+12F0 003F;
+12F2 003F;
+12F4 003F;
+12F6 003F;
+2D8C 003F;
+12F9 003F;
+12FB 003F;
+12FD 003F;
+12FF 003F;
+1300 003F;
+1302 003F;
+1304 003F;
+1306 003F;
+2D8E 003F;
+1309 003F;
+130B 003F;
+130D 003F;
+130F 003F;
+1312 003F;
+1314 003F;
+1318 003F;
+131A 003F;
+131C 003F;
+131E 003F;
+2D93 003F;
+2D95 003F;
+1320 003F;
+1322 003F;
+1324 003F;
+1326 003F;
+2D8F 003F;
+1329 003F;
+132B 003F;
+132D 003F;
+132F 003F;
+1330 003F;
+1332 003F;
+1334 003F;
+1336 003F;
+2D91 003F;
+1339 003F;
+133B 003F;
+133D 003F;
+133F 003F;
+1341 003F;
+1343 003F;
+1345 003F;
+1347 003F;
+1349 003F;
+134B 003F;
+134D 003F;
+134F 003F;
+1389 003F;
+138B 003F;
+1351 003F;
+1353 003F;
+1355 003F;
+1357 003F;
+138D 003F;
+138F 003F;
+1358 003F;
+135A 003F;
+2DA1 003F;
+2DA3 003F;
+2DA5 003F;
+2DA8 003F;
+2DAA 003F;
+2DAC 003F;
+2DAE 003F;
+2DB1 003F;
+2DB3 003F;
+2DB5 003F;
+2DB8 003F;
+2DBA 003F;
+2DBC 003F;
+2DBE 003F;
+2DC1 003F;
+2DC3 003F;
+2DC5 003F;
+2DC8 003F;
+2DCA 003F;
+2DCC 003F;
+2DCE 003F;
+2DD1 003F;
+2DD3 003F;
+2DD5 003F;
+2DD8 003F;
+2DDA 003F;
+2DDC 003F;
+2DDE 003F;
+0972 003F;
+0905 003F;
+0907 003F;
+0909 003F;
+090B 003F;
+090C 003F;
+090D 003F;
+090F 003F;
+0911 003F;
+0913 003F;
+0915 003F;
+0915 0062;
+0916 0041;
+095A 0021;
+097B 0061;
+0919 0061;
+091B 0061;
+091C 0061;
+097C 0062;
+091E 0062;
+0920 0062;
+095C 0061;
+0922 003F;
+0922 0062;
+0924 0041;
+0926 0041;
+0928 093C 0334;
+092A 0021;
+095E 0021;
+092C 0061;
+092D 0061;
+092F 0334 093C;
+095F 0062;
+0931 0061;
+0933 003F;
+0933 0062;
+0936 0041;
+0938 0041;
+093D 0041;
+093E 0041;
+0940 0041;
+0942 0041;
+0944 0041;
+0963 0041;
+0946 0041;
+0948 0041;
+094A 0041;
+094C 0041;
+0985 003F;
+0987 003F;
+0989 003F;
+098B 003F;
+098C 003F;
+098F 003F;
+0993 003F;
+0995 003F;
+0997 003F;
+0999 003F;
+099B 003F;
+099D 003F;
+099F 003F;
+09A1 003F;
+09A1 0062;
+09A2 0041;
+09A4 0021;
+09A5 0021;
+09A7 0021;
+09AA 0021;
+09AC 0021;
+09AE 0021;
+09DF 0021;
+09B0 0061;
+09B2 0061;
+09B6 0061;
+09B8 0061;
+09BD 0061;
+09BF 0061;
+09C1 0061;
+09C3 0061;
+09E2 0061;
+09C7 0061;
+09C8 003F;
+09C7 09BE 0041;
+09C7 09D7 0041;
+09CD 0062;
+0A74 0062;
+0A09 0062;
+0A13 0062;
+0A06 0062;
+0A14 0062;
+0A07 0062;
+0A0F 0062;
+0A36 0061;
+0A51 003F;
+0A16 003F;
+0A16 0062;
+0A17 0041;
+0A19 0021;
+0A1B 0021;
+0A5B 0021;
+0A1D 0061;
+0A1F 0061;
+0A21 0061;
+0A23 0061;
+0A25 0061;
+0A27 0061;
+0A2A 0061;
+0A2B 0061;
+0A2C 0062;
+0A2E 0062;
+0A75 0062;
+0A33 0334;
+0A35 003F;
+0A3E 003F;
+0A40 003F;
+0A42 003F;
+0A48 003F;
+0A4C 003F;
+0A4D 0062;
+0A85 0062;
+0A87 0062;
+0A89 0062;
+0A8B 0062;
+0A8C 0062;
+0A8D 0062;
+0A90 0062;
+0A93 0062;
+0A95 0062;
+0A97 0062;
+0A99 0062;
+0A9B 0062;
+0A9D 0062;
+0A9F 0062;
+0AA1 0062;
+0AA3 0062;
+0AA5 0062;
+0AA7 0062;
+0AAA 0062;
+0AAC 0062;
+0AAE 0062;
+0AB0 0062;
+0AB3 0062;
+0AB6 0062;
+0AB8 0062;
+0ABD 0062;
+0ABF 0062;
+0AC1 0062;
+0AC3 0062;
+0AE2 0062;
+0AC5 0062;
+0AC8 0062;
+0ACB 0062;
+0ACD 0061;
+0B06 0061;
+0B08 0061;
+0B0A 0061;
+0B60 0061;
+0B61 0061;
+0B10 0061;
+0B14 0061;
+0B16 0061;
+0B18 0061;
+0B1A 0061;
+0B1C 0061;
+0B1E 0061;
+0B20 0061;
+0B21 0061;
+0B5D 0334;
+0B23 003F;
+0B25 003F;
+0B27 003F;
+0B2A 003F;
+0B2C 003F;
+0B2E 003F;
+0B5F 003F;
+0B32 003F;
+0B35 003F;
+0B36 003F;
+0B38 003F;
+0B3D 003F;
+0B3F 003F;
+0B41 003F;
+0B43 003F;
+0B62 003F;
+0B47 003F;
+0B47 0001 0B57 0061;
+0B48 0041;
+0B4B 0041;
+0B4C 0041;
+0B56 0021;
+0BD0 0021;
+0B85 0021;
+0B87 0021;
+0B89 0021;
+0B8E 0021;
+0B90 0021;
+0B92 0001 0BD7 0061;
+0B92 0BD7 003F;
+0B95 0061;
+0B9A 0061;
+0B9E 0061;
+0BA3 0061;
+0BA8 0061;
+0BAA 0061;
+0BAF 0061;
+0BB1 0061;
+0BB3 0061;
+0BB5 0061;
+0BB7 0061;
+0BB9 0061;
+0BBF 0061;
+0BC1 0061;
+0BC6 0061;
+0BC7 003F;
+0BC8 0041;
+0BC6 0BBE 0062;
+0BC7 0BBE 0062;
+0BC6 0BD7 0062;
+0BD7 003F;
+0C06 003F;
+0C08 003F;
+0C0A 003F;
+0C60 003F;
+0C61 003F;
+0C0F 003F;
+0C12 003F;
+0C14 003F;
+0C16 003F;
+0C18 003F;
+0C1A 003F;
+0C1B 003F;
+0C59 003F;
+0C1E 003F;
+0C20 003F;
+0C22 003F;
+0C24 003F;
+0C26 003F;
+0C28 003F;
+0C2B 003F;
+0C2D 003F;
+0C2F 003F;
+0C31 003F;
+0C33 003F;
+0C36 003F;
+0C38 003F;
+0C3D 003F;
+0C3F 003F;
+0C41 003F;
+0C43 003F;
+0C62 003F;
+0C46 003F;
+0C46 0C56 0021;
+0C48 0061;
+0C4B 0021;
+0C4D 0021;
+0C55 0334;
+0C56 0062;
+0C86 0062;
+0C88 0062;
+0C8A 0062;
+0CE0 0062;
+0CE1 0062;
+0C8F 0062;
+0C92 0062;
+0C94 0062;
+0C96 0062;
+0C98 0062;
+0C9A 0062;
+0C9C 0062;
+0C9E 0062;
+0CA0 0062;
+0CA2 0062;
+0CA4 0062;
+0CA6 0062;
+0CA8 0062;
+0CAB 0062;
+0CAD 0062;
+0CAF 0062;
+0CB1 0062;
+0CB5 0062;
+0CB7 0062;
+0CB9 0062;
+0CDE 0062;
+0CBE 0062;
+0CC0 0021;
+0CC1 003F;
+0CC3 003F;
+0CE2 003F;
+0CC6 003F;
+0CC6 0001 0CD5 0061;
+0CC6 0CD5 0061;
+0CC6 0CD6 0061;
+0CC6 0CC2 0061;
+0CCA 0591 0CD5 0061;
+0CCB 0061;
+0CCC 0041;
+0CD5 003F;
+0D05 003F;
+0D07 003F;
+0D09 003F;
+0D0B 003F;
+0D0C 003F;
+0D0E 003F;
+0D10 003F;
+0D13 003F;
+0D7F 003F;
+0D16 003F;
+0D18 003F;
+0D1A 003F;
+0D1C 003F;
+0D1E 003F;
+0D20 003F;
+0D22 003F;
+0D23 003F;
+0D25 003F;
+0D27 003F;
+0D28 003F;
+0D2B 003F;
+0D2D 003F;
+0D2F 003F;
+0D7C 003F;
+0D7D 003F;
+0D7E 003F;
+0D34 003F;
+0D36 003F;
+0D38 003F;
+0D3D 003F;
+0D3F 003F;
+0D41 003F;
+0D43 003F;
+0D62 003F;
+0D46 003F;
+0D47 0021;
+0D48 0061;
+0D4A 0041;
+0D4B 0041;
+0D4C 0041;
+0334 0D4D;
+0D86 0021;
+0D88 0021;
+0D8A 0021;
+0D8C 0021;
+0D8E 0021;
+0D90 0021;
+0D92 0021;
+0D94 0021;
+0D96 0021;
+0D9B 0021;
+0D9D 0021;
+0D9F 0021;
+0DA1 0021;
+0DA3 0021;
+0DA5 0021;
+0DA7 0021;
+0DA9 0021;
+0DAB 0021;
+0DAD 0021;
+0DAF 0021;
+0DB1 0021;
+0DB4 0021;
+0DB6 0021;
+0DB8 0021;
+0DBA 0021;
+0DBD 0021;
+0DC1 0021;
+0DC3 0021;
+0DC5 0021;
+0DCA 0021;
+0DCF 0041;
+0DD1 0041;
+0DD3 0041;
+0DD6 0041;
+0DD9 0041;
+0DD9 0591 0DDF 0061;
+0DD9 0DCA 0061;
+0DDB 0041;
+0DD9 0DCF 0062;
+0DD9 0DCF 0334 0DCA;
+0DDD 0061;
+0DDE 003F;
+0DDF 0041;
+0DF3 0041;
+A801 0041;
+A803 0041;
+A805 0041;
+A807 003F;
+A809 003F;
+A80C 003F;
+A80E 003F;
+A810 003F;
+A812 003F;
+A814 003F;
+A816 003F;
+A818 003F;
+A81A 003F;
+A81C 003F;
+A81E 003F;
+A820 003F;
+A822 003F;
+A824 003F;
+A826 003F;
+A882 003F;
+A884 003F;
+A886 003F;
+A888 003F;
+A88A 003F;
+A88C 003F;
+A88E 003F;
+A890 003F;
+A892 003F;
+A894 003F;
+A896 003F;
+A898 003F;
+A89A 003F;
+A89C 003F;
+A89E 003F;
+A8A0 003F;
+A8A2 003F;
+A8A4 003F;
+A8A6 003F;
+A8A8 003F;
+A8AA 003F;
+A8AC 003F;
+A8AE 003F;
+A8B0 003F;
+A8B2 003F;
+A8B4 003F;
+A8B6 003F;
+A8B8 003F;
+A8BA 003F;
+A8BC 003F;
+A8BE 003F;
+A8C0 003F;
+A8C2 003F;
+A8C4 003F;
+1B84 0021;
+1B86 0021;
+1B88 0021;
+1B8A 0021;
+1B8B 0021;
+1B8D 0021;
+1B8F 0021;
+1B91 0021;
+1B93 0021;
+1B95 0021;
+1B97 0021;
+1B99 0021;
+1BA1 0021;
+1BA2 0021;
+1BA3 0021;
+1B9E 0021;
+1BAF 0021;
+1BA4 0021;
+1BA6 0021;
+1BA8 0021;
+1BAA 0021;
+10A00 0062;
+10A02 0062;
+10A05 0062;
+10A0C 0062;
+10A11 0062;
+10A13 0062;
+10A16 0062;
+10A19 0062;
+10A1B 0062;
+10A1D 0062;
+10A1F 0062;
+10A21 0062;
+10A23 0062;
+10A25 0062;
+10A27 0062;
+10A29 0062;
+10A2B 0062;
+10A2D 0062;
+10A2F 0062;
+10A31 0062;
+10A33 0062;
+0E01 0061;
+0E41 0E01 0061;
+0E43 0E01 0061;
+0E02 0061;
+0E41 0E02 0061;
+0E43 0E02 0061;
+0E03 0061;
+0E41 0E03 0061;
+0E43 0E03 0061;
+0E04 0061;
+0E41 0E04 0061;
+0E43 0E04 0061;
+0E05 0061;
+0E41 0E05 0061;
+0E43 0E05 0061;
+0E06 0061;
+0E41 0E06 0061;
+0E43 0E06 0061;
+0E07 0061;
+0E41 0E07 0061;
+0E43 0E07 0061;
+0E08 0061;
+0E41 0E08 0061;
+0E43 0E08 0061;
+0E09 0061;
+0E41 0E09 0061;
+0E43 0E09 0061;
+0E0A 0061;
+0E41 0E0A 0061;
+0E43 0E0A 0061;
+0E0B 0061;
+0E41 0E0B 0061;
+0E43 0E0B 0061;
+0E0C 0061;
+0E41 0E0C 0061;
+0E43 0E0C 0061;
+0E0D 0061;
+0E41 0E0D 0061;
+0E43 0E0D 0061;
+0E0E 0061;
+0E41 0E0E 0061;
+0E43 0E0E 0061;
+0E0F 0061;
+0E41 0E0F 0061;
+0E43 0E0F 0061;
+0E10 0061;
+0E41 0E10 0061;
+0E43 0E10 0061;
+0E11 0061;
+0E41 0E11 0061;
+0E43 0E11 0061;
+0E12 0061;
+0E41 0E12 0061;
+0E43 0E12 0061;
+0E13 0061;
+0E41 0E13 0061;
+0E43 0E13 0061;
+0E14 0061;
+0E41 0E14 0061;
+0E43 0E14 0061;
+0E15 0061;
+0E41 0E15 0061;
+0E43 0E15 0061;
+0E16 0061;
+0E41 0E16 0061;
+0E43 0E16 0061;
+0E17 0061;
+0E41 0E17 0061;
+0E43 0E17 0061;
+0E18 0061;
+0E41 0E18 0061;
+0E43 0E18 0061;
+0E19 0061;
+0E41 0E19 0061;
+0E43 0E19 0061;
+0E1A 0061;
+0E41 0E1A 0061;
+0E43 0E1A 0061;
+0E1B 0061;
+0E41 0E1B 0061;
+0E43 0E1B 0061;
+0E1C 0061;
+0E41 0E1C 0061;
+0E43 0E1C 0061;
+0E1D 0061;
+0E41 0E1D 0061;
+0E43 0E1D 0061;
+0E1E 0061;
+0E41 0E1E 0061;
+0E43 0E1E 0061;
+0E1F 0061;
+0E41 0E1F 0061;
+0E43 0E1F 0061;
+0E20 0061;
+0E41 0E20 0061;
+0E43 0E20 0061;
+0E21 0061;
+0E41 0E21 0061;
+0E43 0E21 0061;
+0E22 0061;
+0E41 0E22 0061;
+0E43 0E22 0061;
+0E23 0061;
+0E41 0E23 0061;
+0E43 0E23 0061;
+0E24 0061;
+0E41 0E24 0061;
+0E43 0E24 0061;
+0E25 0061;
+0E41 0E25 0061;
+0E43 0E25 0061;
+0E26 0061;
+0E41 0E26 0061;
+0E43 0E26 0061;
+0E27 0061;
+0E41 0E27 0061;
+0E43 0E27 0061;
+0E28 0061;
+0E41 0E28 0061;
+0E43 0E28 0061;
+0E29 0061;
+0E41 0E29 0061;
+0E43 0E29 0061;
+0E2A 0061;
+0E41 0E2A 0061;
+0E43 0E2A 0061;
+0E2B 0061;
+0E41 0E2B 0061;
+0E43 0E2B 0061;
+0E2C 0061;
+0E41 0E2C 0061;
+0E43 0E2C 0061;
+0E2D 0061;
+0E41 0E2D 0061;
+0E43 0E2D 0061;
+0E2E 0061;
+0E41 0E2E 0061;
+0E43 0E2E 0061;
+0E2F 0061;
+0E31 0061;
+0E32 0062;
+0E4D 0E32 0062;
+0E35 0062;
+0E37 0062;
+0334 0E39;
+0E3A 0041;
+0E40 0001 0E02 0061;
+0E40 0591 0E05 0061;
+0E40 1D165 0E08 0061;
+0E40 0001 0E0C 0061;
+0E40 0591 0E0F 0061;
+0E40 1D165 0E12 0061;
+0E40 0001 0E16 0061;
+0E40 0591 0E19 0061;
+0E40 1D165 0E1C 0061;
+0E40 0001 0E20 0061;
+0E40 0591 0E23 0061;
+0E40 1D165 0E26 0061;
+0E40 0001 0E2A 0061;
+0E40 0591 0E2D 0061;
+0E41 0001 0E01 0061;
+0E41 0591 0E04 0061;
+0E41 1D165 0E07 0061;
+0E41 0001 0E0B 0061;
+0E41 0591 0E0E 0061;
+0E41 1D165 0E11 0061;
+0E41 0001 0E15 0061;
+0E41 0591 0E18 0061;
+0E41 1D165 0E1B 0061;
+0E41 0001 0E1F 0061;
+0E41 0591 0E22 0061;
+0E41 1D165 0E25 0061;
+0E41 0001 0E29 0061;
+0E41 0591 0E2C 0061;
+0E42 0061;
+0E42 0591 0E03 0061;
+0E42 1D165 0E06 0061;
+0E42 0001 0E0A 0061;
+0E42 0591 0E0D 0061;
+0E42 1D165 0E10 0061;
+0E42 0001 0E14 0061;
+0E42 0591 0E17 0061;
+0E42 1D165 0E1A 0061;
+0E42 0001 0E1E 0061;
+0E42 0591 0E21 0061;
+0E42 1D165 0E24 0061;
+0E42 0001 0E28 0061;
+0E42 0591 0E2B 0061;
+0E42 1D165 0E2E 0061;
+0E43 0591 0E02 0061;
+0E43 1D165 0E05 0061;
+0E43 0001 0E09 0061;
+0E43 0591 0E0C 0061;
+0E43 1D165 0E0F 0061;
+0E43 0001 0E13 0061;
+0E43 0591 0E16 0061;
+0E43 1D165 0E19 0061;
+0E43 0001 0E1D 0061;
+0E43 0591 0E20 0061;
+0E43 1D165 0E23 0061;
+0E43 0001 0E27 0061;
+0E43 0591 0E2A 0061;
+0E43 1D165 0E2D 0061;
+0E44 0591 0E01 0061;
+0E44 1D165 0E04 0061;
+0E44 0001 0E08 0061;
+0E44 0591 0E0B 0061;
+0E44 1D165 0E0E 0061;
+0E44 0001 0E12 0061;
+0E44 0591 0E15 0061;
+0E44 1D165 0E18 0061;
+0E44 0001 0E1C 0061;
+0E44 0591 0E1F 0061;
+0E44 1D165 0E22 0061;
+0E44 0001 0E26 0061;
+0E44 0591 0E29 0061;
+0E44 1D165 0E2C 0061;
+0E45 0041;
+0EC0 0E81 0041;
+0EC2 0E81 0041;
+0EC4 0E81 0041;
+0EC0 0E82 0041;
+0EC2 0E82 0041;
+0EC4 0E82 0041;
+0EC0 0E84 0041;
+0EC2 0E84 0041;
+0EC4 0E84 0041;
+0EC0 0E87 0041;
+0EC2 0E87 0041;
+0EC4 0E87 0041;
+0EC0 0E88 0041;
+0EC2 0E88 0041;
+0EC4 0E88 0041;
+0EC0 0E8A 0041;
+0EC2 0E8A 0041;
+0EC4 0E8A 0041;
+0EC0 0E8D 0041;
+0EC2 0E8D 0041;
+0EC4 0E8D 0041;
+0EC0 0E94 0041;
+0EC2 0E94 0041;
+0EC4 0E94 0041;
+0EC0 0E95 0041;
+0EC2 0E95 0041;
+0EC4 0E95 0041;
+0EC0 0E96 0041;
+0EC2 0E96 0041;
+0EC4 0E96 0041;
+0EC0 0E97 0041;
+0EC2 0E97 0041;
+0EC4 0E97 0041;
+0EC0 0E99 0041;
+0EC2 0E99 0041;
+0EC4 0E99 0041;
+0EC0 0E9A 0041;
+0EC2 0E9A 0041;
+0EC4 0E9A 0041;
+0EC0 0E9B 0041;
+0EC2 0E9B 0041;
+0EC4 0E9B 0041;
+0EC0 0E9C 0041;
+0EC2 0E9C 0041;
+0EC4 0E9C 0041;
+0EC0 0E9D 0041;
+0EC2 0E9D 0041;
+0EC4 0E9D 0041;
+0EC0 0E9E 0041;
+0EC2 0E9E 0041;
+0EC4 0E9E 0041;
+0EC0 0E9F 0041;
+0EC2 0E9F 0041;
+0EC4 0E9F 0041;
+0EC0 0EA1 0041;
+0EC2 0EA1 0041;
+0EC4 0EA1 0041;
+0EC0 0EA2 0041;
+0EC2 0EA2 0041;
+0EC4 0EA2 0041;
+0EC0 0EA3 0041;
+0EC2 0EA3 0041;
+0EC4 0EA3 0041;
+0EC0 0EA5 0041;
+0EC2 0EA5 0041;
+0EC4 0EA5 0041;
+0EC0 0EA7 0041;
+0EC2 0EA7 0041;
+0EC4 0EA7 0041;
+0EC0 0EAA 0041;
+0EC2 0EAA 0041;
+0EC4 0EAA 0041;
+0EDC 0041;
+0EC1 0EDC 0041;
+0EC3 0EDC 0041;
+0EDD 0041;
+0EC1 0EDD 0041;
+0EC3 0EDD 0041;
+0EC0 0EAB 0041;
+0EC2 0EAB 0041;
+0EC4 0EAB 0041;
+0EC0 0EAD 0041;
+0EC2 0EAD 0041;
+0EC4 0EAD 0041;
+0EC0 0EAE 0041;
+0EC2 0EAE 0041;
+0EC4 0EAE 0041;
+0EB0 0041;
+0EB2 0041;
+0ECD 0EB2 0061;
+0EB5 0021;
+0EB7 0021;
+0EB8 0041;
+0EBB 003F;
+0EBD 003F;
+0EC0 0591 0E81 0061;
+0EC0 1D165 0E87 0061;
+0EC0 0001 0E94 0061;
+0EC0 0591 0E97 0061;
+0EC0 1D165 0E9B 0061;
+0EC0 0001 0E9F 0061;
+0EC0 0591 0EA3 0061;
+0EC0 1D165 0EAA 0061;
+0EC0 0001 0EAD 0061;
+0EC1 0062;
+0EC1 0001 0E87 0061;
+0EC1 0591 0E8D 0061;
+0EC1 1D165 0E96 0061;
+0EC1 0001 0E9B 0061;
+0EC1 0591 0E9E 0061;
+0EC1 1D165 0EA2 0061;
+0EC1 0001 0EAA 0061;
+0EC1 0591 0EDD 0061;
+0EC2 0061;
+0EC2 0591 0E84 0061;
+0EC2 1D165 0E8A 0061;
+0EC2 0001 0E96 0061;
+0EC2 0591 0E9A 0061;
+0EC2 1D165 0E9D 0061;
+0EC2 0001 0EA2 0061;
+0EC2 0591 0EA7 0061;
+0EC2 1D165 0EDC 0061;
+0EC3 0021;
+0EC3 1D165 0E82 0061;
+0EC3 0001 0E8A 0061;
+0EC3 0591 0E95 0061;
+0EC3 1D165 0E99 0061;
+0EC3 0001 0E9D 0061;
+0EC3 0591 0EA1 0061;
+0EC3 1D165 0EA5 0061;
+0EC3 0001 0EDC 0061;
+0EC3 0591 0EAE 0061;
+0EC4 0001 0E82 0061;
+0EC4 0591 0E88 0061;
+0EC4 1D165 0E94 0061;
+0EC4 0001 0E99 0061;
+0EC4 0591 0E9C 0061;
+0EC4 1D165 0E9F 0061;
+0EC4 0001 0EA5 0061;
+0EC4 0591 0EAB 0061;
+0EC4 1D165 0EAD 0061;
+0F69 003F;
+0FB9 003F;
+0F41 003F;
+0F42 003F;
+0F92 003F;
+0F44 003F;
+0F45 003F;
+0F46 003F;
+0F47 003F;
+0F49 003F;
+0F4A 003F;
+0F4B 003F;
+0F4C 003F;
+0F9C 003F;
+0F4E 003F;
+0F4F 003F;
+0F50 003F;
+0F51 003F;
+0FA1 003F;
+0F53 003F;
+0F54 003F;
+0F55 003F;
+0F56 003F;
+0FA6 003F;
+0F58 003F;
+0F59 003F;
+0F5A 003F;
+0F5B 003F;
+0FAB 003F;
+0F5D 003F;
+0FBA 0061;
+0FAE 003F;
+0FAF 003F;
+0FB0 003F;
+0FB1 003F;
+0F62 003F;
+0FB2 003F;
+0FB2 0F71 003F;
+0FB2 0001 0F81 0061;
+0F63 0062;
+0FB3 0F71 0061;
+0F64 0061;
+0F65 0061;
+0F66 0061;
+0F67 0061;
+0F68 0061;
+0FB8 0061;
+0F89 0061;
+0F8B 0061;
+0F71 0001 0F72 0061;
+0F71 0F72 0021;
+0F71 1D165 0F72 0061;
+0F80 0061;
+0F71 0F80 0334;
+0F74 003F;
+0334 0F74 0F71;
+0F71 0F74 0062;
+0FB2 0591 0F80 0061;
+0F77 003F;
+0FB2 1D165 0F71 0F80 0061;
+0F78 003F;
+0FB3 0F80 0041;
+0FB3 0591 0F71 0F80 0061;
+0FB3 0F81 0041;
+0F7A 0062;
+0334 0F7C;
+0F7D 0041;
+1C00 003F;
+1C02 003F;
+1C04 003F;
+1C06 003F;
+1C08 003F;
+1C4D 003F;
+1C4F 003F;
+1C0B 003F;
+1C0D 003F;
+1C0F 003F;
+1C11 003F;
+1C13 003F;
+1C15 003F;
+1C17 003F;
+1C19 003F;
+1C24 003F;
+1C25 003F;
+1C1D 003F;
+1C1F 003F;
+1C21 003F;
+1C23 003F;
+1C26 003F;
+1C28 003F;
+1C2A 003F;
+1C2C 003F;
+1C2E 003F;
+1C30 003F;
+1C32 003F;
+1C34 003F;
+A840 003F;
+A842 003F;
+A844 003F;
+A846 003F;
+A869 003F;
+A86B 003F;
+A848 003F;
+A84A 003F;
+A84C 003F;
+A84E 003F;
+A850 003F;
+A852 003F;
+A867 003F;
+A855 003F;
+A857 003F;
+A86D 003F;
+A871 003F;
+A859 003F;
+A86E 003F;
+A85C 003F;
+A870 003F;
+A862 003F;
+A864 003F;
+A85E 003F;
+A860 003F;
+A866 003F;
+1900 003F;
+1902 003F;
+1904 003F;
+1906 003F;
+1908 003F;
+190A 003F;
+190C 003F;
+190E 003F;
+1910 003F;
+1912 003F;
+1914 003F;
+1916 003F;
+1918 003F;
+191A 003F;
+191C 003F;
+1921 003F;
+1923 003F;
+1925 003F;
+1927 003F;
+1929 003F;
+192B 003F;
+1931 003F;
+1933 003F;
+1935 003F;
+1937 003F;
+1700 003F;
+1702 003F;
+1704 003F;
+1706 003F;
+1708 003F;
+170A 003F;
+170C 003F;
+170F 003F;
+1711 003F;
+1713 003F;
+1714 0062;
+1721 0062;
+1723 0062;
+1725 0062;
+1727 0062;
+1729 0062;
+172B 0062;
+172D 0062;
+172F 0062;
+1731 0062;
+1733 0062;
+1740 0061;
+1742 0061;
+1744 0061;
+1746 0061;
+1748 0061;
+174A 0061;
+174C 0061;
+174E 0061;
+1750 0061;
+1752 0061;
+1760 0061;
+1762 0061;
+1764 0061;
+1766 0061;
+1768 0061;
+176A 0061;
+176C 0061;
+176F 0061;
+1772 0061;
+1A00 0061;
+1A02 0061;
+1A04 0061;
+1A06 0061;
+1A08 0061;
+1A0A 0061;
+1A0C 0061;
+1A0E 0061;
+1A10 0061;
+1A12 0061;
+1A14 0061;
+1A16 0061;
+1A18 0021;
+1A19 0041;
+1A1B 0041;
+A931 0041;
+A933 0041;
+A935 0041;
+A937 0041;
+A939 0041;
+A93B 0041;
+A93D 0041;
+A93F 0041;
+A941 0041;
+A943 0041;
+A945 0041;
+A947 0041;
+A949 0041;
+A94B 0041;
+A94D 0041;
+A94F 0041;
+A951 0041;
+A953 0061;
+A90B 0061;
+A90D 0061;
+A90F 0061;
+A911 0061;
+A913 0061;
+A915 0061;
+A917 0061;
+A919 0061;
+A91B 0061;
+A91D 0061;
+A91F 0061;
+A921 0061;
+A923 0061;
+A925 0061;
+A927 0061;
+A929 0061;
+1000 0061;
+1001 0061;
+1002 0061;
+1003 0061;
+105A 0061;
+1078 0061;
+1007 0061;
+1008 0061;
+1061 0061;
+107A 0061;
+100B 0061;
+100D 0061;
+100F 0061;
+1010 0061;
+1012 0061;
+1013 0061;
+107C 0061;
+1015 0061;
+107D 0061;
+108E 0061;
+107F 0061;
+1019 0061;
+101A 0061;
+101B 0061;
+101C 0061;
+101D 0061;
+1082 0061;
+1050 0061;
+1065 0061;
+103F 0061;
+1081 0061;
+1020 0061;
+105D 0061;
+1070 0061;
+1021 0061;
+1023 0061;
+1025 0061;
+1025 102E 0061;
+1052 0062;
+1054 0062;
+1027 0062;
+1029 0062;
+102C 0061;
+1083 0062;
+102D 0062;
+102E 0062;
+102F 0062;
+1074 0062;
+1056 0062;
+1058 0062;
+1031 0062;
+1035 0062;
+1032 0062;
+1062 0062;
+1068 0062;
+1039 0061;
+1063 003F;
+1069 003F;
+106B 003F;
+106D 003F;
+108B 003F;
+108C 003F;
+108A 003F;
+1780 003F;
+1782 003F;
+1784 003F;
+1786 003F;
+1788 003F;
+178A 003F;
+178C 003F;
+178E 003F;
+1790 003F;
+1792 003F;
+1794 003F;
+1796 003F;
+1798 003F;
+179A 003F;
+179C 003F;
+179E 003F;
+17A0 003F;
+17A2 003F;
+17A3 003F;
+17A5 003F;
+17A7 003F;
+17A9 003F;
+17AB 003F;
+17AD 003F;
+17AF 003F;
+17B1 003F;
+17B3 003F;
+17B5 003F;
+17B7 003F;
+17B9 003F;
+17BB 003F;
+17BD 003F;
+17BF 003F;
+17C1 003F;
+17C3 003F;
+17C5 003F;
+17D2 0062;
+1951 0062;
+1953 0062;
+1955 0062;
+1957 0062;
+1959 0062;
+195B 0062;
+195D 0062;
+195F 0062;
+1961 0062;
+1963 0062;
+1965 0062;
+1967 0062;
+1969 0062;
+196B 0062;
+196D 0062;
+1971 0062;
+1973 0062;
+1980 0062;
+1982 0062;
+1984 0062;
+1986 0062;
+1988 0062;
+198A 0062;
+198C 0062;
+198E 0062;
+1990 0062;
+1992 0062;
+1994 0062;
+1996 0062;
+1998 0062;
+199A 0062;
+199C 0062;
+19DF 0062;
+199E 0062;
+19A0 0062;
+19A2 0062;
+19A4 0062;
+19A6 0062;
+19A8 0062;
+19B0 0062;
+19B2 0062;
+19B4 0062;
+19B6 0062;
+19B8 0062;
+19BA 0062;
+19BC 0062;
+19BE 0062;
+19C0 0062;
+19C2 0062;
+19C4 0062;
+19C6 0062;
+19C8 0062;
+AA00 0062;
+AA02 0062;
+AA04 0062;
+AA06 0062;
+AA08 0062;
+AA0A 0062;
+AA0C 0062;
+AA0E 0062;
+AA10 0062;
+AA12 0062;
+AA14 0062;
+AA16 0062;
+AA18 0062;
+AA1A 0062;
+AA1C 0062;
+AA1E 0062;
+AA20 0062;
+AA22 0062;
+AA24 0062;
+AA26 0062;
+AA28 0062;
+AA34 0062;
+AA36 0062;
+AA2A 0062;
+AA2C 0062;
+AA2E 0062;
+AA30 0062;
+AA32 0062;
+AA41 0062;
+AA43 0062;
+AA45 0062;
+AA47 0062;
+AA49 0062;
+AA4B 0062;
+AA4D 0062;
+1B06 0021;
+1B07 003F;
+1B08 003F;
+1B09 0041;
+1B0A 0061;
+1B0B 0001 1B35 0061;
+1B0C 0041;
+1B0D 1D165 1B35 0061;
+1B0E 0062;
+1B10 0062;
+1B12 0021;
+1B13 003F;
+1B46 003F;
+1B15 003F;
+1B17 003F;
+1B19 003F;
+1B1B 003F;
+1B1D 003F;
+1B1F 003F;
+1B21 003F;
+1B47 003F;
+1B24 003F;
+1B26 003F;
+1B48 003F;
+1B29 003F;
+1B2B 003F;
+1B2D 003F;
+1B2F 003F;
+1B30 003F;
+1B32 003F;
+1B4B 003F;
+1B35 003F;
+1B37 003F;
+1B39 003F;
+1B3A 0591 1B35 0061;
+1B3A 1B35 0062;
+1B3C 1B35 0021;
+1B3E 0021;
+1B3F 0061;
+1B3E 1B35 0061;
+1B3F 1B35 0061;
+1B42 0062;
+1B42 1B35 0041;
+1B44 0062;
+1881 0062;
+1883 0062;
+1885 0062;
+1843 0062;
+1887 0062;
+1844 0062;
+1822 0062;
+185E 0062;
+1888 0062;
+1823 0062;
+1824 0062;
+1861 0062;
+1848 0062;
+1849 0062;
+1827 0062;
+1829 0062;
+1862 0062;
+189B 0062;
+184B 0062;
+184C 0062;
+182C 0062;
+182D 0062;
+1864 0062;
+1865 0062;
+184F 0062;
+1830 0062;
+1867 0062;
+189D 0062;
+18A4 0062;
+1832 0062;
+1868 0062;
+1851 0062;
+1834 0062;
+1871 0062;
+188B 0062;
+1853 0062;
+1877 0062;
+1855 0062;
+1837 0062;
+1838 0062;
+1839 0062;
+1876 0062;
+1857 0062;
+1874 0062;
+183B 0062;
+1854 0062;
+183D 0062;
+1858 0062;
+183E 0062;
+186D 0062;
+1840 0062;
+1842 0062;
+185B 0062;
+188C 0062;
+188D 0062;
+189F 0062;
+1890 0062;
+18A0 0062;
+18A1 0062;
+1893 0062;
+1894 0062;
+1895 0062;
+1896 0062;
+18A6 0062;
+18AA 0062;
+1C5A 0061;
+1C5C 0061;
+1C5E 0061;
+1C60 0061;
+1C62 0061;
+1C64 0061;
+1C66 0061;
+1C68 0061;
+1C6A 0061;
+1C6C 0061;
+1C6E 0061;
+1C70 0061;
+1C72 0061;
+1C74 0061;
+1C76 0061;
+1C78 0061;
+1C7A 0061;
+1C7C 0061;
+13A0 0061;
+13A2 0061;
+13A4 0061;
+13A6 0061;
+13A8 0061;
+13AA 0061;
+13AC 0061;
+13AE 0061;
+13B0 0061;
+13B2 0061;
+13B4 0061;
+13B6 0061;
+13B8 0061;
+13BA 0061;
+13BC 0061;
+13BE 0061;
+13C0 0061;
+13C2 0061;
+13C4 0061;
+13C6 0061;
+13C8 0061;
+13CA 0061;
+13CC 0061;
+13CE 0061;
+13D0 0061;
+13D2 0061;
+13D4 0061;
+13D6 0061;
+13D8 0061;
+13DA 0061;
+13DC 0061;
+13DE 0061;
+13E0 0061;
+13E2 0061;
+13E4 0061;
+13E6 0061;
+13E8 0061;
+13EA 0061;
+13EC 0061;
+13EE 0061;
+13F0 0061;
+13F2 0061;
+13F4 0061;
+1402 0061;
+1404 0061;
+1406 0061;
+1408 0061;
+140A 0061;
+140C 0061;
+140E 0061;
+1410 0061;
+1412 0061;
+1414 0061;
+1416 0061;
+1418 0061;
+141A 0061;
+141C 0061;
+141E 0061;
+1420 0061;
+1422 0061;
+1424 0061;
+1426 0061;
+1428 0061;
+142A 0061;
+142C 0061;
+142E 0061;
+1430 0061;
+1432 0061;
+1434 0061;
+1436 0061;
+1438 0061;
+143A 0061;
+143C 0061;
+143E 0061;
+1440 0061;
+1442 0061;
+1444 0061;
+1446 0061;
+1448 0061;
+144A 0061;
+144C 0061;
+144E 0061;
+1450 0061;
+1452 0061;
+1454 0061;
+1456 0061;
+1458 0061;
+145A 0061;
+145C 0061;
+145E 0061;
+1460 0061;
+1462 0061;
+1464 0061;
+1466 0061;
+1468 0061;
+146A 0061;
+146C 0061;
+146E 0061;
+1470 0061;
+1472 0061;
+1474 0061;
+1476 0061;
+1478 0061;
+147A 0061;
+147C 0061;
+147E 0061;
+1480 0061;
+1482 0061;
+1484 0061;
+1486 0061;
+1488 0061;
+148A 0061;
+148C 0061;
+148E 0061;
+1490 0061;
+1492 0061;
+1494 0061;
+1496 0061;
+1498 0061;
+149A 0061;
+149C 0061;
+149E 0061;
+14A0 0061;
+14A2 0061;
+14A4 0061;
+14A6 0061;
+14A8 0061;
+14AA 0061;
+14AC 0061;
+14AE 0061;
+14B0 0061;
+14B2 0061;
+14B4 0061;
+14B6 0061;
+14B8 0061;
+14BA 0061;
+14BC 0061;
+14BE 0061;
+14C0 0061;
+14C2 0061;
+14C4 0061;
+14C6 0061;
+14C8 0061;
+14CA 0061;
+14CC 0061;
+14CE 0061;
+14D0 0061;
+14D2 0061;
+14D4 0061;
+14D6 0061;
+14D8 0061;
+14DA 0061;
+14DC 0061;
+14DE 0061;
+14E0 0061;
+14E2 0061;
+14E4 0061;
+14E6 0061;
+14E8 0061;
+14EA 0061;
+14EC 0061;
+14EE 0061;
+14F0 0061;
+14F2 0061;
+14F4 0061;
+14F6 0061;
+14F8 0061;
+14FA 0061;
+14FC 0061;
+14FE 0061;
+1500 0061;
+1502 0061;
+1504 0061;
+1506 0061;
+1508 0061;
+150A 0061;
+150C 0061;
+150E 0061;
+1510 0061;
+1512 0061;
+1514 0061;
+1516 0061;
+1518 0061;
+151A 0061;
+151C 0061;
+151E 0061;
+1520 0061;
+1522 0061;
+1524 0061;
+1526 0061;
+1528 0061;
+152A 0061;
+152C 0061;
+152E 0061;
+1530 0061;
+1532 0061;
+1534 0061;
+1536 0061;
+1538 0061;
+153A 0061;
+153C 0061;
+153E 0061;
+1540 0061;
+1542 0061;
+1544 0061;
+1546 0061;
+1548 0061;
+154A 0061;
+154C 0061;
+154E 0061;
+1550 0061;
+1552 0061;
+1554 0061;
+1556 0061;
+1558 0061;
+155A 0061;
+155C 0061;
+155E 0061;
+1560 0061;
+1562 0061;
+1564 0061;
+1566 0061;
+1568 0061;
+156A 0061;
+156C 0061;
+156E 0061;
+1570 0061;
+1572 0061;
+1574 0061;
+1576 0061;
+1578 0061;
+157A 0061;
+157D 0061;
+157E 0061;
+1580 0061;
+1582 0061;
+1584 0061;
+1586 0061;
+1588 0061;
+158A 0061;
+158C 0061;
+1670 0061;
+158F 0061;
+1591 0061;
+1593 0061;
+1595 0061;
+1672 0061;
+1674 0061;
+1676 0061;
+1597 0061;
+1599 0061;
+159B 0061;
+159D 0061;
+159F 0061;
+15A1 0061;
+15A3 0061;
+15A5 0061;
+157C 0061;
+15A8 0061;
+15AA 0061;
+15AC 0061;
+15AE 0061;
+15B0 0061;
+15B2 0061;
+15B4 0061;
+15B6 0061;
+15B8 0061;
+15BA 0061;
+15BC 0061;
+15BE 0061;
+15C0 0061;
+15C2 0061;
+15C4 0061;
+15C6 0061;
+15C8 0061;
+15CA 0061;
+15CC 0061;
+15CE 0061;
+15D0 0061;
+15D2 0061;
+15D4 0061;
+15D6 0061;
+15D8 0061;
+15DA 0061;
+15DC 0061;
+15DE 0061;
+15E0 0061;
+15E2 0061;
+15E4 0061;
+15E6 0061;
+15E8 0061;
+15EA 0061;
+15EC 0061;
+15EE 0061;
+15F0 0061;
+15F2 0061;
+15F4 0061;
+15F6 0061;
+15F8 0061;
+15FA 0061;
+15FC 0061;
+15FE 0061;
+1600 0061;
+1602 0061;
+1604 0061;
+1606 0061;
+1608 0061;
+160A 0061;
+160C 0061;
+160E 0061;
+1610 0061;
+1612 0061;
+1614 0061;
+1616 0061;
+1618 0061;
+161A 0061;
+161C 0061;
+161E 0061;
+1620 0061;
+1622 0061;
+1624 0061;
+1626 0061;
+1628 0061;
+162A 0061;
+162C 0061;
+162E 0061;
+1630 0061;
+1632 0061;
+1634 0061;
+1636 0061;
+1638 0061;
+163A 0061;
+163C 0061;
+163E 0061;
+1640 0061;
+1642 0061;
+1644 0061;
+1646 0061;
+1648 0061;
+164A 0061;
+164C 0061;
+164E 0061;
+1650 0061;
+1652 0061;
+1654 0061;
+1656 0061;
+1658 0061;
+165A 0061;
+165C 0061;
+165E 0061;
+1660 0061;
+1662 0061;
+1664 0061;
+1666 0061;
+1668 0061;
+166A 0061;
+166C 0061;
+1682 0061;
+1684 0061;
+1686 0061;
+1688 0061;
+168A 0061;
+168C 0061;
+168E 0061;
+1690 0061;
+1692 0061;
+1694 0061;
+1696 0061;
+1698 0061;
+169A 0061;
+16A1 0041;
+16A2 0041;
+16A7 0021;
+16F0 0061;
+16AD 003F;
+16AD 0041;
+16AF 0061;
+16B1 0061;
+16B5 003F;
+16B5 0041;
+16B7 0061;
+16E9 0041;
+16BD 003F;
+16BB 0062;
+16BE 0041;
+16C2 0021;
+16C4 0021;
+16C6 0021;
+16EE 0061;
+16D5 0021;
+16C9 0061;
+16CC 003F;
+16EA 0041;
+16CC 0062;
+16CF 0041;
+16D3 0021;
+16D2 0062;
+16D8 0021;
+16D7 0062;
+16DB 0021;
+16DD 0021;
+16DE 0061;
+16AA 0061;
+16A3 0061;
+16E3 0061;
+16E4 0061;
+16E2 0061;
+16E7 0021;
+16E6 0062;
+A501 0061;
+A503 0061;
+A505 0061;
+A507 0061;
+A509 0061;
+A50B 0061;
+A613 0061;
+A50E 0061;
+A510 0061;
+A512 0061;
+A514 0061;
+A516 0061;
+A518 0061;
+A51A 0061;
+A51C 0061;
+A51E 0061;
+A51F 0061;
+A521 0061;
+A523 0061;
+A525 0061;
+A527 0061;
+A529 0061;
+A52B 0061;
+A52D 0061;
+A52F 0061;
+A531 0061;
+A533 0061;
+A534 0061;
+A536 0061;
+A538 0061;
+A53A 0061;
+A53C 0061;
+A53E 0061;
+A540 0061;
+A542 0061;
+A544 0061;
+A546 0061;
+A616 0061;
+A549 0061;
+A54B 0061;
+A54D 0061;
+A54F 0061;
+A551 0061;
+A617 0061;
+A554 0061;
+A556 0061;
+A610 0021;
+A618 0061;
+A55A 0061;
+A55B 0061;
+A55D 0061;
+A55F 0061;
+A61A 0061;
+A562 0061;
+A564 0061;
+A566 0061;
+A568 0061;
+A611 0021;
+A56B 0061;
+A56D 0061;
+A62A 0041;
+A570 0061;
+A572 0061;
+A574 0061;
+A576 0061;
+A578 0061;
+A57A 0061;
+A57C 0061;
+A57E 0061;
+A580 0061;
+A582 0061;
+A584 0061;
+A61B 0061;
+A612 0021;
+A588 0061;
+A58A 0061;
+A58C 0061;
+A58E 0061;
+A590 0061;
+A592 0061;
+A594 0061;
+A596 0061;
+A598 0061;
+A59A 0061;
+A59C 0061;
+A59E 0061;
+A5A0 0061;
+A5A2 0061;
+A5A4 0061;
+A5A6 0061;
+A5A8 0061;
+A5AA 0061;
+A5AC 0061;
+A5AE 0061;
+A5B0 0061;
+A5B2 0061;
+A5B4 0061;
+A5B5 0061;
+A5B7 0061;
+A5B9 0061;
+A5BB 0061;
+A5BD 0061;
+A5BF 0061;
+A5C1 0061;
+A5C3 0061;
+A5C5 0061;
+A5C7 0061;
+A5C9 0061;
+A5CB 0061;
+A5CC 0061;
+A5CE 0061;
+A5D0 0061;
+A62B 0041;
+A5D2 0061;
+A5D4 0061;
+A5D6 0061;
+A5D8 0061;
+A5D9 0061;
+A5DB 0061;
+A5DD 0061;
+A5DF 0061;
+A5E1 0061;
+A5E3 0061;
+A5E5 0061;
+A5E7 0061;
+A5E9 0061;
+A5EB 0061;
+A5ED 0061;
+A5EF 0061;
+A5F1 0061;
+A5F3 0061;
+A5F5 0061;
+A5F7 0061;
+A5F9 0061;
+A5FB 0061;
+A5FD 0061;
+A5FF 0061;
+A601 0061;
+A603 0061;
+A605 0061;
+A607 0061;
+A609 0061;
+A60B 0061;
+3200 0021;
+3200 0061;
+3131 0062;
+326E 003F;
+326E 0061;
+AC00 1161 0061;
+AC00 1175 0041;
+AC02 0041;
+AC04 0041;
+1100 0591 1175 0061;
+FFA2 003F;
+1102 0021;
+1102 0061;
+1102 0062;
+320F 0041;
+3137 003F;
+3137 0041;
+3210 0021;
+1104 0021;
+FFA8 0061;
+3139 003F;
+3139 0041;
+3211 0021;
+1106 0021;
+1106 0061;
+1106 0062;
+3212 0041;
+3142 003F;
+3142 0041;
+3213 0021;
+1108 0021;
+FFB3 0061;
+3145 003F;
+3145 0041;
+3214 0021;
+110A 0021;
+FFB6 0061;
+3147 003F;
+3147 0041;
+3215 0021;
+321D 0021;
+327E 0021;
+3148 003F;
+3148 0041;
+3216 0021;
+321C 0021;
+110D 0021;
+FFB9 0061;
+314A 003F;
+314A 0041;
+3217 0021;
+327C 0021;
+314B 003F;
+314B 0041;
+3218 0021;
+1110 0021;
+1110 0061;
+1110 0062;
+3219 0041;
+314D 003F;
+314D 0041;
+321A 0021;
+1112 0021;
+1112 0061;
+1112 0062;
+327B 003F;
+1112 1161 0062;
+1112 1175 0062;
+D788 1175 003F;
+D79E 0041;
+D7A0 0041;
+D7A2 0041;
+1113 0041;
+1114 0062;
+1115 0062;
+1117 0041;
+1119 0041;
+3140 0061;
+111B 0041;
+111C 0062;
+111D 0062;
+111E 0062;
+3173 003F;
+3144 003F;
+3144 0062;
+1122 0062;
+1123 0062;
+1125 0041;
+3176 003F;
+1128 0041;
+1129 0062;
+3178 003F;
+3179 003F;
+317A 003F;
+317B 003F;
+317C 003F;
+1130 0041;
+317D 003F;
+1133 0041;
+1135 0041;
+1136 0062;
+1138 0041;
+113A 0041;
+113C 0041;
+113E 0041;
+317F 003F;
+1141 0041;
+1143 0041;
+1145 0041;
+3180 003F;
+1148 0041;
+114A 0041;
+3181 003F;
+114D 0041;
+114F 0041;
+1151 0041;
+1153 0041;
+1155 0041;
+3184 003F;
+3185 003F;
+3186 003F;
+115F 0041;
+3164 0061;
+314F 003F;
+314F 0062;
+3150 0061;
+3151 003F;
+3151 0062;
+3152 0061;
+3153 003F;
+3153 0062;
+3154 0061;
+3155 003F;
+3155 0062;
+3156 0061;
+3157 003F;
+3157 0062;
+3158 0061;
+3159 003F;
+3159 0062;
+315A 0061;
+315B 003F;
+315B 0062;
+315C 0061;
+315D 003F;
+315D 0062;
+315E 0061;
+315F 003F;
+315F 0062;
+3160 0061;
+3161 003F;
+3161 0062;
+3162 0061;
+3163 003F;
+3163 0062;
+1177 0041;
+1179 0041;
+117B 0041;
+117D 0041;
+117F 0041;
+1181 0041;
+1183 0041;
+1184 0062;
+1185 0062;
+1187 0041;
+1188 0062;
+118A 0041;
+118C 0041;
+118E 0041;
+1190 0041;
+1191 0062;
+1192 0062;
+318C 003F;
+1195 0041;
+1197 0041;
+1199 0041;
+119B 0041;
+119D 0041;
+119E 0062;
+11A0 0041;
+11A1 0062;
+11A8 0041;
+3133 003F;
+3133 0062;
+3135 003F;
+3135 0062;
+3136 0061;
+11AE 0041;
+313A 003F;
+313A 0062;
+313B 0061;
+313C 003F;
+313C 0062;
+313D 0061;
+313E 003F;
+313E 0062;
+313F 0061;
+11B6 0041;
+11B8 0041;
+11BA 0041;
+11BC 0041;
+11BE 0041;
+11C0 0041;
+11C2 0041;
+11C4 0041;
+11C6 0041;
+11C7 0062;
+11C8 0062;
+11CA 0041;
+3169 003F;
+11CD 0041;
+11CE 0062;
+11D0 0041;
+11D2 0041;
+11D3 0062;
+11D5 0041;
+316C 003F;
+11D8 0041;
+11D9 0062;
+11DB 0041;
+316F 003F;
+11DE 0041;
+11DF 0062;
+11E1 0041;
+11E3 0041;
+11E5 0041;
+11E7 0041;
+11E9 0041;
+11EB 0041;
+11ED 0041;
+11EF 0041;
+3182 003F;
+3183 003F;
+11F3 0041;
+11F5 0041;
+11F7 0041;
+11F9 0041;
+30A2 0021;
+3303 0062;
+30A2 0041;
+FF71 0062;
+3301 0041;
+3044 003F;
+32D1 003F;
+30A4 0041;
+FF72 0062;
+3305 0041;
+30A6 0021;
+30A6 3099 0334;
+30A5 0061;
+3094 0061;
+32D2 0062;
+3048 0021;
+32D3 0021;
+3048 0041;
+32D3 0041;
+3307 0061;
+FF6B 003F;
+330A 0041;
+30AA 0061;
+30AA 0062;
+304B 0021;
+304B 0334 3099;
+3095 0061;
+32D5 0061;
+FF76 0062;
+330C 003F;
+330E 003F;
+304D 003F;
+30AD 0334 3099;
+30AD 0041;
+30AD 0062;
+3311 0021;
+3313 0021;
+3315 0021;
+3317 0021;
+30AF 003F;
+30B0 0334;
+30AF 0041;
+31F0 0062;
+3318 0062;
+331A 0062;
+30F6 0021;
+3052 0334;
+331C 0061;
+30B1 0041;
+3051 0062;
+30B3 003F;
+30B4 0334;
+3053 0061;
+30B4 0061;
+30FF 0061;
+30B5 0021;
+30B5 3099 0334;
+FF7B 0061;
+FF7B 0062;
+3320 003F;
+FF7C 0021;
+3058 0021;
+FF7C 0061;
+30B7 0062;
+3321 0021;
+30B9 003F;
+30BA 0334;
+30B9 0041;
+31F2 0062;
+FF7E 0021;
+305C 0021;
+32DD 0061;
+305C 0062;
+3323 0041;
+305D 0334 3099;
+305D 0061;
+30BE 0061;
+30BF 0021;
+30BF 3099 0334;
+3324 0062;
+3060 0041;
+3061 003F;
+30C1 0334 3099;
+30C1 0041;
+30C1 0062;
+30C3 003F;
+3064 3099 0334;
+3063 0041;
+FF82 0041;
+FF6F 0062;
+FF83 0021;
+3067 0021;
+32E2 0061;
+3067 0062;
+31F3 003F;
+30C8 0334 3099;
+31F3 0041;
+30C9 0041;
+3326 0061;
+30CA 0021;
+FF85 0061;
+3328 0061;
+32E5 003F;
+30CB 0062;
+FF87 003F;
+FF87 0041;
+30CD 0021;
+FF88 0061;
+30CE 0021;
+FF89 0061;
+3329 0061;
+FF8A 003F;
+306F 309A 0334;
+3071 003F;
+332C 0061;
+31F5 0061;
+30D0 0061;
+32E9 0062;
+3072 0021;
+3072 0334 3099;
+30D2 309A 0334;
+3072 0061;
+3073 0061;
+30D2 0062;
+332E 0041;
+3330 0041;
+31F7 003F;
+30D5 0334 3099;
+3076 003F;
+31F7 0041;
+30D6 0041;
+3076 0062;
+3333 003F;
+3335 003F;
+FF8D 0021;
+3078 0334 309A;
+307A 0021;
+333C 003F;
+FF8D 0061;
+30DA 0061;
+30DA 0062;
+3337 0062;
+3339 0062;
+30DB 0021;
+30DB 3099 0334;
+30DC 0021;
+3341 0062;
+30DB 0061;
+307D 0061;
+30DC 0062;
+333E 0061;
+3340 0061;
+32EE 003F;
+30DE 0062;
+3344 0061;
+3345 0061;
+3347 0061;
+32EF 003F;
+30DF 0062;
+3349 0061;
+31FA 0021;
+31FA 0061;
+30E0 0062;
+32F1 003F;
+FF92 0061;
+334B 0061;
+30E2 0021;
+FF93 0061;
+3084 0021;
+32F3 0021;
+334F 0041;
+30E4 0061;
+30E4 0062;
+FF6D 003F;
+3086 0041;
+32F4 0041;
+3350 0061;
+FF6E 003F;
+3088 0041;
+32F5 0041;
+309F 0061;
+FF97 003F;
+FF97 0041;
+31FC 0021;
+31FC 0061;
+30EA 0062;
+3352 0061;
+FF99 003F;
+31FD 0061;
+30EB 0062;
+31FE 0021;
+31FE 0061;
+30EC 0062;
+3356 0061;
+FF9B 003F;
+FF9B 0041;
+308F 0021;
+30EF 0334 3099;
+30EE 0041;
+308F 0062;
+3357 0062;
+30F8 0021;
+3090 0062;
+30F1 0334 3099;
+32FD 0041;
+30F2 003F;
+3092 0061;
+3092 0062;
+FF9D 003F;
+3105 0021;
+3106 0021;
+3107 0021;
+312A 0021;
+310A 0021;
+310B 0021;
+310D 0021;
+310E 0021;
+312B 0021;
+310F 0021;
+3110 0021;
+3111 0021;
+312C 0021;
+3114 0021;
+3116 0021;
+3117 0041;
+3119 0021;
+311A 0041;
+311B 0041;
+311C 0021;
+31A4 0021;
+311E 0021;
+311F 0021;
+3120 0041;
+3122 0021;
+3124 0021;
+3125 0021;
+31B1 0021;
+3126 0021;
+31B3 003F;
+3128 0021;
+31A8 0061;
+312D 0021;
+A001 0021;
+A003 0021;
+A005 0021;
+A007 0021;
+A009 0021;
+A00B 0021;
+A00D 0021;
+A00F 0021;
+A011 0021;
+A013 0021;
+A015 0021;
+A017 0021;
+A019 0021;
+A01B 0021;
+A01D 0021;
+A01F 0021;
+A021 0021;
+A023 0021;
+A025 0021;
+A027 0021;
+A029 0021;
+A02B 0021;
+A02D 0021;
+A02F 0021;
+A031 0021;
+A033 0021;
+A035 0021;
+A037 0021;
+A039 0021;
+A03B 0021;
+A03D 0021;
+A03F 0021;
+A041 0021;
+A043 0021;
+A045 0021;
+A047 0021;
+A049 0021;
+A04B 0021;
+A04D 0021;
+A04F 0021;
+A051 0021;
+A053 0021;
+A055 0021;
+A057 0021;
+A059 0021;
+A05B 0021;
+A05D 0021;
+A05F 0021;
+A061 0021;
+A063 0021;
+A065 0021;
+A067 0021;
+A069 0021;
+A06B 0021;
+A06D 0021;
+A06F 0021;
+A071 0021;
+A073 0021;
+A075 0021;
+A077 0021;
+A079 0021;
+A07B 0021;
+A07D 0021;
+A07F 0021;
+A081 0021;
+A083 0021;
+A085 0021;
+A087 0021;
+A089 0021;
+A08B 0021;
+A08D 0021;
+A08F 0021;
+A091 0021;
+A093 0021;
+A095 0021;
+A097 0021;
+A099 0021;
+A09B 0021;
+A09D 0021;
+A09F 0021;
+A0A1 0021;
+A0A3 0021;
+A0A5 0021;
+A0A7 0021;
+A0A9 0021;
+A0AB 0021;
+A0AD 0021;
+A0AF 0021;
+A0B1 0021;
+A0B3 0021;
+A0B5 0021;
+A0B7 0021;
+A0B9 0021;
+A0BB 0021;
+A0BD 0021;
+A0BF 0021;
+A0C1 0021;
+A0C3 0021;
+A0C5 0021;
+A0C7 0021;
+A0C9 0021;
+A0CB 0021;
+A0CD 0021;
+A0CF 0021;
+A0D1 0021;
+A0D3 0021;
+A0D5 0021;
+A0D7 0021;
+A0D9 0021;
+A0DB 0021;
+A0DD 0021;
+A0DF 0021;
+A0E1 0021;
+A0E3 0021;
+A0E5 0021;
+A0E7 0021;
+A0E9 0021;
+A0EB 0021;
+A0ED 0021;
+A0EF 0021;
+A0F1 0021;
+A0F3 0021;
+A0F5 0021;
+A0F7 0021;
+A0F9 0021;
+A0FB 0021;
+A0FD 0021;
+A0FF 0021;
+A101 0021;
+A103 0021;
+A105 0021;
+A107 0021;
+A109 0021;
+A10B 0021;
+A10D 0021;
+A10F 0021;
+A111 0021;
+A113 0021;
+A115 0021;
+A117 0021;
+A119 0021;
+A11B 0021;
+A11D 0021;
+A11F 0021;
+A121 0021;
+A123 0021;
+A125 0021;
+A127 0021;
+A129 0021;
+A12B 0021;
+A12D 0021;
+A12F 0021;
+A131 0021;
+A133 0021;
+A135 0021;
+A137 0021;
+A139 0021;
+A13B 0021;
+A13D 0021;
+A13F 0021;
+A141 0021;
+A143 0021;
+A145 0021;
+A147 0021;
+A149 0021;
+A14B 0021;
+A14D 0021;
+A14F 0021;
+A151 0021;
+A153 0021;
+A155 0021;
+A157 0021;
+A159 0021;
+A15B 0021;
+A15D 0021;
+A15F 0021;
+A161 0021;
+A163 0021;
+A165 0021;
+A167 0021;
+A169 0021;
+A16B 0021;
+A16D 0021;
+A16F 0021;
+A171 0021;
+A173 0021;
+A175 0021;
+A177 0021;
+A179 0021;
+A17B 0021;
+A17D 0021;
+A17F 0021;
+A181 0021;
+A183 0021;
+A185 0021;
+A187 0021;
+A189 0021;
+A18B 0021;
+A18D 0021;
+A18F 0021;
+A191 0021;
+A193 0021;
+A195 0021;
+A197 0021;
+A199 0021;
+A19B 0021;
+A19D 0021;
+A19F 0021;
+A1A1 0021;
+A1A3 0021;
+A1A5 0021;
+A1A7 0021;
+A1A9 0021;
+A1AB 0021;
+A1AD 0021;
+A1AF 0021;
+A1B1 0021;
+A1B3 0021;
+A1B5 0021;
+A1B7 0021;
+A1B9 0021;
+A1BB 0021;
+A1BD 0021;
+A1BF 0021;
+A1C1 0021;
+A1C3 0021;
+A1C5 0021;
+A1C7 0021;
+A1C9 0021;
+A1CB 0021;
+A1CD 0021;
+A1CF 0021;
+A1D1 0021;
+A1D3 0021;
+A1D5 0021;
+A1D7 0021;
+A1D9 0021;
+A1DB 0021;
+A1DD 0021;
+A1DF 0021;
+A1E1 0021;
+A1E3 0021;
+A1E5 0021;
+A1E7 0021;
+A1E9 0021;
+A1EB 0021;
+A1ED 0021;
+A1EF 0021;
+A1F1 0021;
+A1F3 0021;
+A1F5 0021;
+A1F7 0021;
+A1F9 0021;
+A1FB 0021;
+A1FD 0021;
+A1FF 0021;
+A201 0021;
+A203 0021;
+A205 0021;
+A207 0021;
+A209 0021;
+A20B 0021;
+A20D 0021;
+A20F 0021;
+A211 0021;
+A213 0021;
+A215 0021;
+A217 0021;
+A219 0021;
+A21B 0021;
+A21D 0021;
+A21F 0021;
+A221 0021;
+A223 0021;
+A225 0021;
+A227 0021;
+A229 0021;
+A22B 0021;
+A22D 0021;
+A22F 0021;
+A231 0021;
+A233 0021;
+A235 0021;
+A237 0021;
+A239 0021;
+A23B 0021;
+A23D 0021;
+A23F 0021;
+A241 0021;
+A243 0021;
+A245 0021;
+A247 0021;
+A249 0021;
+A24B 0021;
+A24D 0021;
+A24F 0021;
+A251 0021;
+A253 0021;
+A255 0021;
+A257 0021;
+A259 0021;
+A25B 0021;
+A25D 0021;
+A25F 0021;
+A261 0021;
+A263 0021;
+A265 0021;
+A267 0021;
+A269 0021;
+A26B 0021;
+A26D 0021;
+A26F 0021;
+A271 0021;
+A273 0021;
+A275 0021;
+A277 0021;
+A279 0021;
+A27B 0021;
+A27D 0021;
+A27F 0021;
+A281 0021;
+A283 0021;
+A285 0021;
+A287 0021;
+A289 0021;
+A28B 0021;
+A28D 0021;
+A28F 0021;
+A291 0021;
+A293 0021;
+A295 0021;
+A297 0021;
+A299 0021;
+A29B 0021;
+A29D 0021;
+A29F 0021;
+A2A1 0021;
+A2A3 0021;
+A2A5 0021;
+A2A7 0021;
+A2A9 0021;
+A2AB 0021;
+A2AD 0021;
+A2AF 0021;
+A2B1 0021;
+A2B3 0021;
+A2B5 0021;
+A2B7 0021;
+A2B9 0021;
+A2BB 0021;
+A2BD 0021;
+A2BF 0021;
+A2C1 0021;
+A2C3 0021;
+A2C5 0021;
+A2C7 0021;
+A2C9 0021;
+A2CB 0021;
+A2CD 0021;
+A2CF 0021;
+A2D1 0021;
+A2D3 0021;
+A2D5 0021;
+A2D7 0021;
+A2D9 0021;
+A2DB 0021;
+A2DD 0021;
+A2DF 0021;
+A2E1 0021;
+A2E3 0021;
+A2E5 0021;
+A2E7 0021;
+A2E9 0021;
+A2EB 0021;
+A2ED 0021;
+A2EF 0021;
+A2F1 0021;
+A2F3 0021;
+A2F5 0021;
+A2F7 0021;
+A2F9 0021;
+A2FB 0021;
+A2FD 0021;
+A2FF 0021;
+A301 0021;
+A303 0021;
+A305 0021;
+A307 0021;
+A309 0021;
+A30B 0021;
+A30D 0021;
+A30F 0021;
+A311 0021;
+A313 0021;
+A315 0021;
+A317 0021;
+A319 0021;
+A31B 0021;
+A31D 0021;
+A31F 0021;
+A321 0021;
+A323 0021;
+A325 0021;
+A327 0021;
+A329 0021;
+A32B 0021;
+A32D 0021;
+A32F 0021;
+A331 0021;
+A333 0021;
+A335 0021;
+A337 0021;
+A339 0021;
+A33B 0021;
+A33D 0021;
+A33F 0021;
+A341 0021;
+A343 0021;
+A345 0021;
+A347 0021;
+A349 0021;
+A34B 0021;
+A34D 0021;
+A34F 0021;
+A351 0021;
+A353 0021;
+A355 0021;
+A357 0021;
+A359 0021;
+A35B 0021;
+A35D 0021;
+A35F 0021;
+A361 0021;
+A363 0021;
+A365 0021;
+A367 0021;
+A369 0021;
+A36B 0021;
+A36D 0021;
+A36F 0021;
+A371 0021;
+A373 0021;
+A375 0021;
+A377 0021;
+A379 0021;
+A37B 0021;
+A37D 0021;
+A37F 0021;
+A381 0021;
+A383 0021;
+A385 0021;
+A387 0021;
+A389 0021;
+A38B 0021;
+A38D 0021;
+A38F 0021;
+A391 0021;
+A393 0021;
+A395 0021;
+A397 0021;
+A399 0021;
+A39B 0021;
+A39D 0021;
+A39F 0021;
+A3A1 0021;
+A3A3 0021;
+A3A5 0021;
+A3A7 0021;
+A3A9 0021;
+A3AB 0021;
+A3AD 0021;
+A3AF 0021;
+A3B1 0021;
+A3B3 0021;
+A3B5 0021;
+A3B7 0021;
+A3B9 0021;
+A3BB 0021;
+A3BD 0021;
+A3BF 0021;
+A3C1 0021;
+A3C3 0021;
+A3C5 0021;
+A3C7 0021;
+A3C9 0021;
+A3CB 0021;
+A3CD 0021;
+A3CF 0021;
+A3D1 0021;
+A3D3 0021;
+A3D5 0021;
+A3D7 0021;
+A3D9 0021;
+A3DB 0021;
+A3DD 0021;
+A3DF 0021;
+A3E1 0021;
+A3E3 0021;
+A3E5 0021;
+A3E7 0021;
+A3E9 0021;
+A3EB 0021;
+A3ED 0021;
+A3EF 0021;
+A3F1 0021;
+A3F3 0021;
+A3F5 0021;
+A3F7 0021;
+A3F9 0021;
+A3FB 0021;
+A3FD 0021;
+A3FF 0021;
+A401 0021;
+A403 0021;
+A405 0021;
+A407 0021;
+A409 0021;
+A40B 0021;
+A40D 0021;
+A40F 0021;
+A411 0021;
+A413 0021;
+A415 0021;
+A417 0021;
+A419 0021;
+A41B 0021;
+A41D 0021;
+A41F 0021;
+A421 0021;
+A423 0021;
+A425 0021;
+A427 0021;
+A429 0021;
+A42B 0021;
+A42D 0021;
+A42F 0021;
+A431 0021;
+A433 0021;
+A435 0021;
+A437 0021;
+A439 0021;
+A43B 0021;
+A43D 0021;
+A43F 0021;
+A441 0021;
+A443 0021;
+A445 0021;
+A447 0021;
+A449 0021;
+A44B 0021;
+A44D 0021;
+A44F 0021;
+A451 0021;
+A453 0021;
+A455 0021;
+A457 0021;
+A459 0021;
+A45B 0021;
+A45D 0021;
+A45F 0021;
+A461 0021;
+A463 0021;
+A465 0021;
+A467 0021;
+A469 0021;
+A46B 0021;
+A46D 0021;
+A46F 0021;
+A471 0021;
+A473 0021;
+A475 0021;
+A477 0021;
+A479 0021;
+A47B 0021;
+A47D 0021;
+A47F 0021;
+A481 0021;
+A483 0021;
+A485 0021;
+A487 0021;
+A489 0021;
+A48B 0021;
+10280 0021;
+10282 0021;
+10284 0021;
+10286 0021;
+10288 0021;
+1028A 0021;
+1028C 0021;
+1028E 0021;
+10290 0021;
+10292 0021;
+10294 0021;
+10296 0021;
+10298 0021;
+1029A 0021;
+1029C 0021;
+102A1 0021;
+102A3 0021;
+102A5 0021;
+102A7 0021;
+102A9 0021;
+102AB 0021;
+102AD 0021;
+102AF 0021;
+102B1 0021;
+102B3 0021;
+102B5 0021;
+102B7 0021;
+102B9 0021;
+102BB 0021;
+102BD 0021;
+102BF 0021;
+102C1 0021;
+102C3 0021;
+102C5 0021;
+102C7 0021;
+102C9 0021;
+102CB 0021;
+102CD 0021;
+102CF 0021;
+10920 0021;
+10922 0021;
+10924 0021;
+10926 0021;
+10928 0021;
+1092A 0021;
+1092C 0021;
+1092E 0021;
+10930 0021;
+10932 0021;
+10934 0021;
+10936 0021;
+10938 0021;
+10300 0021;
+10302 0021;
+10304 0021;
+10306 0021;
+10308 0021;
+1030A 0021;
+1030C 0021;
+1030E 0021;
+10310 0021;
+10312 0021;
+10314 0021;
+10316 0021;
+10318 0021;
+1031A 0021;
+1031C 0021;
+1031E 0021;
+10331 0021;
+10333 0021;
+10335 0021;
+10337 0021;
+10339 0021;
+1033B 0021;
+1033D 0021;
+1033F 0021;
+10341 0021;
+10343 0021;
+10345 0021;
+10347 0021;
+10349 0021;
+10428 0021;
+10429 0021;
+1042A 0021;
+1042B 0021;
+1042C 0021;
+1042D 0021;
+1042E 0021;
+1042F 0021;
+10430 0021;
+10431 0021;
+10432 0021;
+10433 0021;
+10434 0021;
+10435 0021;
+10436 0021;
+10437 0021;
+10438 0021;
+10439 0021;
+1043A 0021;
+1043B 0021;
+1043C 0021;
+1043D 0021;
+1043E 0021;
+1043F 0021;
+10440 0021;
+10441 0021;
+10442 0021;
+10443 0021;
+10444 0021;
+10445 0021;
+10446 0021;
+10447 0021;
+10448 0021;
+10449 0021;
+1044A 0021;
+1044B 0021;
+1044C 0021;
+1044D 0021;
+1044E 0021;
+1044F 0021;
+10450 0021;
+10452 0021;
+10454 0021;
+10456 0021;
+10458 0021;
+1045A 0021;
+1045C 0021;
+1045E 0021;
+10460 0021;
+10462 0021;
+10464 0021;
+10466 0021;
+10468 0021;
+1046A 0021;
+1046C 0021;
+1046E 0021;
+10470 0021;
+10472 0021;
+10474 0021;
+10476 0021;
+10478 0021;
+1047A 0021;
+1047C 0021;
+1047E 0021;
+10480 0021;
+10482 0021;
+10484 0021;
+10486 0021;
+10488 0021;
+1048A 0021;
+1048C 0021;
+1048E 0021;
+10490 0021;
+10492 0021;
+10494 0021;
+10496 0021;
+10498 0021;
+1049A 0021;
+1049C 0021;
+10000 0021;
+10002 0021;
+10004 0021;
+10006 0021;
+10008 0021;
+1000A 0021;
+1000D 0021;
+1000F 0021;
+10011 0021;
+10013 0021;
+10015 0021;
+10017 0021;
+10019 0021;
+1001B 0021;
+1001D 0021;
+1001F 0021;
+10021 0021;
+10023 0021;
+10025 0021;
+10028 0021;
+1002A 0021;
+1002C 0021;
+1002E 0021;
+10030 0021;
+10032 0021;
+10034 0021;
+10036 0021;
+10038 0021;
+1003A 0021;
+1003D 0021;
+10040 0021;
+10042 0021;
+10044 0021;
+10046 0021;
+10048 0021;
+1004A 0021;
+1004C 0021;
+10050 0021;
+10052 0021;
+10054 0021;
+10056 0021;
+10058 0021;
+1005A 0021;
+1005C 0021;
+10080 0021;
+10082 0021;
+10084 0021;
+10086 0021;
+10088 0021;
+1008A 0021;
+1008C 0021;
+1008E 0021;
+10090 0021;
+10092 0021;
+10094 0021;
+10096 0021;
+10098 0021;
+1009A 0021;
+1009C 0021;
+1009E 0021;
+100A0 0021;
+100A2 0021;
+100A4 0021;
+100A6 0021;
+100A8 0021;
+100AA 0021;
+100AC 0021;
+100AE 0021;
+100B0 0021;
+100B2 0021;
+100B4 0021;
+100B6 0021;
+100B8 0021;
+100BA 0021;
+100BC 0021;
+100BE 0021;
+100C0 0021;
+100C2 0021;
+100C4 0021;
+100C6 0021;
+100C8 0021;
+100CA 0021;
+100CC 0021;
+100CE 0021;
+100D0 0021;
+100D2 0021;
+100D4 0021;
+100D6 0021;
+100D8 0021;
+100DA 0021;
+100DC 0021;
+100DE 0021;
+100E0 0021;
+100E2 0021;
+100E4 0021;
+100E6 0021;
+100E8 0021;
+100EA 0021;
+100EC 0021;
+100EE 0021;
+100F0 0021;
+100F2 0021;
+100F4 0021;
+100F6 0021;
+100F8 0021;
+100FA 0021;
+10801 0021;
+10803 0021;
+10805 0021;
+1080A 0021;
+1080C 0021;
+1080E 0021;
+10810 0021;
+10812 0021;
+10814 0021;
+10816 0021;
+10818 0021;
+1081A 0021;
+1081C 0021;
+1081E 0021;
+10820 0021;
+10822 0021;
+10824 0021;
+10826 0021;
+10828 0021;
+1082A 0021;
+1082C 0021;
+1082E 0021;
+10830 0021;
+10832 0021;
+10834 0021;
+10837 0021;
+1083C 0021;
+10380 0021;
+10382 0021;
+10384 0021;
+10386 0021;
+10388 0021;
+1038A 0021;
+1038C 0021;
+1038E 0021;
+10390 0021;
+10392 0021;
+10394 0021;
+10396 0021;
+10398 0021;
+1039A 0021;
+1039C 0021;
+103A0 0021;
+103A2 0021;
+103A4 0021;
+103A6 0021;
+103A8 0021;
+103AA 0021;
+103AC 0021;
+103AE 0021;
+103B0 0021;
+103B2 0021;
+103B4 0021;
+103B6 0021;
+103B8 0021;
+103BA 0021;
+103BC 0021;
+103BE 0021;
+103C0 0021;
+103C2 0021;
+103C8 0021;
+103CA 0021;
+103CC 0021;
+103CE 0021;
+12000 0021;
+12002 0021;
+12004 0021;
+12006 0021;
+12008 0021;
+1200A 0021;
+1200C 0021;
+1200E 0021;
+12010 0021;
+12012 0021;
+12014 0021;
+12016 0021;
+12018 0021;
+1201A 0021;
+1201C 0021;
+1201E 0021;
+12020 0021;
+12022 0021;
+12024 0021;
+12026 0021;
+12028 0021;
+1202A 0021;
+1202C 0021;
+1202E 0021;
+12030 0021;
+12032 0021;
+12034 0021;
+12036 0021;
+12038 0021;
+1203A 0021;
+1203C 0021;
+1203E 0021;
+12040 0021;
+12042 0021;
+12044 0021;
+12046 0021;
+12048 0021;
+1204A 0021;
+1204C 0021;
+1204E 0021;
+12050 0021;
+12052 0021;
+12054 0021;
+12056 0021;
+12058 0021;
+1205A 0021;
+1205C 0021;
+1205E 0021;
+12060 0021;
+12062 0021;
+12064 0021;
+12066 0021;
+12068 0021;
+1206A 0021;
+1206C 0021;
+1206E 0021;
+12070 0021;
+12072 0021;
+12074 0021;
+12076 0021;
+12078 0021;
+1207A 0021;
+1207C 0021;
+1207E 0021;
+12080 0021;
+12082 0021;
+12084 0021;
+12086 0021;
+12088 0021;
+1208A 0021;
+1208C 0021;
+1208E 0021;
+12090 0021;
+12092 0021;
+12094 0021;
+12096 0021;
+12098 0021;
+1209A 0021;
+1209C 0021;
+1209E 0021;
+120A0 0021;
+120A2 0021;
+120A4 0021;
+120A6 0021;
+120A8 0021;
+120AA 0021;
+120AC 0021;
+120AE 0021;
+120B0 0021;
+120B2 0021;
+120B4 0021;
+120B6 0021;
+120B8 0021;
+120BA 0021;
+120BC 0021;
+120BE 0021;
+120C0 0021;
+120C2 0021;
+120C4 0021;
+120C6 0021;
+120C8 0021;
+120CA 0021;
+120CC 0021;
+120CE 0021;
+120D0 0021;
+120D2 0021;
+120D4 0021;
+120D6 0021;
+120D8 0021;
+120DA 0021;
+120DC 0021;
+120DE 0021;
+120E0 0021;
+120E2 0021;
+120E4 0021;
+120E6 0021;
+120E8 0021;
+120EA 0021;
+120EC 0021;
+120EE 0021;
+120F0 0021;
+120F2 0021;
+120F4 0021;
+120F6 0021;
+120F8 0021;
+120FA 0021;
+120FC 0021;
+120FE 0021;
+12100 0021;
+12102 0021;
+12104 0021;
+12106 0021;
+12108 0021;
+1210A 0021;
+1210C 0021;
+1210E 0021;
+12110 0021;
+12112 0021;
+12114 0021;
+12116 0021;
+12118 0021;
+1211A 0021;
+1211C 0021;
+1211E 0021;
+12120 0021;
+12122 0021;
+12124 0021;
+12126 0021;
+12128 0021;
+1212A 0021;
+1212C 0021;
+1212E 0021;
+12130 0021;
+12132 0021;
+12134 0021;
+12136 0021;
+12138 0021;
+1213A 0021;
+1213C 0021;
+1213E 0021;
+12140 0021;
+12142 0021;
+12144 0021;
+12146 0021;
+12148 0021;
+1214A 0021;
+1214C 0021;
+1214E 0021;
+12150 0021;
+12152 0021;
+12154 0021;
+12156 0021;
+12158 0021;
+1215A 0021;
+1215C 0021;
+1215E 0021;
+12160 0021;
+12162 0021;
+12164 0021;
+12166 0021;
+12168 0021;
+1216A 0021;
+1216C 0021;
+1216E 0021;
+12170 0021;
+12172 0021;
+12174 0021;
+12176 0021;
+12178 0021;
+1217A 0021;
+1217C 0021;
+1217E 0021;
+12180 0021;
+12182 0021;
+12184 0021;
+12186 0021;
+12188 0021;
+1218A 0021;
+1218C 0021;
+1218E 0021;
+12190 0021;
+12192 0021;
+12194 0021;
+12196 0021;
+12198 0021;
+1219A 0021;
+1219C 0021;
+1219E 0021;
+121A0 0021;
+121A2 0021;
+121A4 0021;
+121A6 0021;
+121A8 0021;
+121AA 0021;
+121AC 0021;
+121AE 0021;
+121B0 0021;
+121B2 0021;
+121B4 0021;
+121B6 0021;
+121B8 0021;
+121BA 0021;
+121BC 0021;
+121BE 0021;
+121C0 0021;
+121C2 0021;
+121C4 0021;
+121C6 0021;
+121C8 0021;
+121CA 0021;
+121CC 0021;
+121CE 0021;
+121D0 0021;
+121D2 0021;
+121D4 0021;
+121D6 0021;
+121D8 0021;
+121DA 0021;
+121DC 0021;
+121DE 0021;
+121E0 0021;
+121E2 0021;
+121E4 0021;
+121E6 0021;
+121E8 0021;
+121EA 0021;
+121EC 0021;
+121EE 0021;
+121F0 0021;
+121F2 0021;
+121F4 0021;
+121F6 0021;
+121F8 0021;
+121FA 0021;
+121FC 0021;
+121FE 0021;
+12200 0021;
+12202 0021;
+12204 0021;
+12206 0021;
+12208 0021;
+1220A 0021;
+1220C 0021;
+1220E 0021;
+12210 0021;
+12212 0021;
+12214 0021;
+12216 0021;
+12218 0021;
+1221A 0021;
+1221C 0021;
+1221E 0021;
+12220 0021;
+12222 0021;
+12224 0021;
+12226 0021;
+12228 0021;
+1222A 0021;
+1222C 0021;
+1222E 0021;
+12230 0021;
+12232 0021;
+12234 0021;
+12236 0021;
+12238 0021;
+1223A 0021;
+1223C 0021;
+1223E 0021;
+12240 0021;
+12242 0021;
+12244 0021;
+12246 0021;
+12248 0021;
+1224A 0021;
+1224C 0021;
+1224E 0021;
+12250 0021;
+12252 0021;
+12254 0021;
+12256 0021;
+12258 0021;
+1225A 0021;
+1225C 0021;
+1225E 0021;
+12260 0021;
+12262 0021;
+12264 0021;
+12266 0021;
+12268 0021;
+1226A 0021;
+1226C 0021;
+1226E 0021;
+12270 0021;
+12272 0021;
+12274 0021;
+12276 0021;
+12278 0021;
+1227A 0021;
+1227C 0021;
+1227E 0021;
+12280 0021;
+12282 0021;
+12284 0021;
+12286 0021;
+12288 0021;
+1228A 0021;
+1228C 0021;
+1228E 0021;
+12290 0021;
+12292 0021;
+12294 0021;
+12296 0021;
+12298 0021;
+1229A 0021;
+1229C 0021;
+1229E 0021;
+122A0 0021;
+122A2 0021;
+122A4 0021;
+122A6 0021;
+122A8 0021;
+122AA 0021;
+122AC 0021;
+122AE 0021;
+122B0 0021;
+122B2 0021;
+122B4 0021;
+122B6 0021;
+122B8 0021;
+122BA 0021;
+122BC 0021;
+122BE 0021;
+122C0 0021;
+122C2 0021;
+122C4 0021;
+122C6 0021;
+122C8 0021;
+122CA 0021;
+122CC 0021;
+122CE 0021;
+122D0 0021;
+122D2 0021;
+122D4 0021;
+122D6 0021;
+122D8 0021;
+122DA 0021;
+122DC 0021;
+122DE 0021;
+122E0 0021;
+122E2 0021;
+122E4 0021;
+122E6 0021;
+122E8 0021;
+122EA 0021;
+122EC 0021;
+122EE 0021;
+122F0 0021;
+122F2 0021;
+122F4 0021;
+122F6 0021;
+122F8 0021;
+122FA 0021;
+122FC 0021;
+122FE 0021;
+12300 0021;
+12302 0021;
+12304 0021;
+12306 0021;
+12308 0021;
+1230A 0021;
+1230C 0021;
+1230E 0021;
+12310 0021;
+12312 0021;
+12314 0021;
+12316 0021;
+12318 0021;
+1231A 0021;
+1231C 0021;
+1231E 0021;
+12320 0021;
+12322 0021;
+12324 0021;
+12326 0021;
+12328 0021;
+1232A 0021;
+1232C 0021;
+1232E 0021;
+12330 0021;
+12332 0021;
+12334 0021;
+12336 0021;
+12338 0021;
+1233A 0021;
+1233C 0021;
+1233E 0021;
+12340 0021;
+12342 0021;
+12344 0021;
+12346 0021;
+12348 0021;
+1234A 0021;
+1234C 0021;
+1234E 0021;
+12350 0021;
+12352 0021;
+12354 0021;
+12356 0021;
+12358 0021;
+1235A 0021;
+1235C 0021;
+1235E 0021;
+12360 0021;
+12362 0021;
+12364 0021;
+12366 0021;
+12368 0021;
+1236A 0021;
+1236C 0021;
+1236E 0021;
+2F00 003F;
+2F00 0041;
+4E01 0021;
+4E02 0021;
+3286 003F;
+4E04 0021;
+3222 0021;
+3194 0061;
+32A4 0041;
+32A6 0041;
+319B 0021;
+2F01 0021;
+32A5 0021;
+F905 0021;
+2F02 0041;
+F95E 0021;
+2F03 0021;
+2F04 0021;
+2E84 0061;
+2E82 0021;
+3228 0041;
+2F05 0021;
+3221 0021;
+3221 0041;
+3224 0021;
+2F07 0021;
+2F08 0021;
+2E85 0021;
+2F819 0021;
+F9A8 0021;
+323D 0041;
+3241 0041;
+FA73 0021;
+F9B5 0021;
+2F805 0061;
+F965 0021;
+F9D4 0021;
+2F809 0021;
+F9BB 0021;
+2F80A 0061;
+2F09 0021;
+FA74 0021;
+2F80E 0061;
+2F810 0021;
+2F814 0021;
+F978 0021;
+3287 003F;
+F9D1 0021;
+3285 0061;
+FA75 0021;
+2F0C 0041;
+2F8D2 0021;
+2F0D 0021;
+32A2 0021;
+2F0E 0021;
+FA71 0021;
+F92E 0021;
+F955 0021;
+FA15 0021;
+2F0F 0041;
+2F81D 0041;
+2F11 0041;
+2F81E 0021;
+2F850 0061;
+F9DD 0021;
+2F820 0021;
+2F822 0021;
+F9C7 0021;
+F98A 0041;
+2F992 0021;
+3238 0041;
+2F825 0061;
+2F826 0061;
+F92F 0021;
+2F827 0061;
+2F13 0021;
+2F828 0061;
+2F82A 0021;
+F963 0021;
+2F15 0021;
+32A9 0021;
+3229 0021;
+3038 0061;
+3039 0021;
+2F82C 0021;
+2F82D 0061;
+323F 0041;
+2F18 0021;
+2F19 0021;
+329E 0021;
+F91C 0021;
+2F831 0021;
+2F832 0041;
+2F1A 0041;
+F96B 0021;
+2F836 0021;
+2F1D 0021;
+2F839 0021;
+32A8 0021;
+3234 0021;
+F9DE 0021;
+2F83D 0021;
+2F83E 0021;
+323A 0021;
+2F840 0021;
+2F841 0021;
+2F843 0021;
+2F844 0021;
+2F846 0061;
+FA7A 0021;
+FA36 0021;
+2F848 0021;
+FA0D 0021;
+FA7B 0021;
+2F84C 0061;
+FA38 0021;
+2F1E 0021;
+3195 003F;
+F9A9 0021;
+2F84D 0021;
+328F 003F;
+319E 0021;
+2F852 0021;
+2F854 0021;
+2F856 0021;
+FA10 0021;
+F96C 0021;
+2F858 0021;
+F94A 0021;
+2F20 0021;
+2F85A 0021;
+2F21 0021;
+2F22 0021;
+2F85D 0021;
+2F85E 0021;
+337D 0021;
+FA7E 0021;
+F909 0021;
+2F85F 0021;
+329B 003F;
+2F865 0021;
+2F863 0021;
+FA80 0021;
+2F986 0021;
+FA81 0021;
+2F86B 0061;
+323B 0021;
+2F27 0021;
+32AA 0021;
+2F86E 0021;
+2F86F 003F;
+F9BC 0021;
+2F28 0021;
+2F873 0021;
+2E8D 003F;
+2F875 0021;
+2E90 0061;
+2E8F 0021;
+2F2B 0021;
+2F877 0021;
+FA3B 0021;
+FA3C 0021;
+2F2C 0061;
+2F87A 0021;
+F9D5 0021;
+F921 0021;
+2F87E 0021;
+2F9F4 0021;
+2F2E 0021;
+2F882 0021;
+32A7 0021;
+2E92 0021;
+2F31 0021;
+2F886 0021;
+2F32 0021;
+F98E 0021;
+2F33 0061;
+FA01 0021;
+2F88C 0021;
+F9A2 0021;
+2F88E 0061;
+FA0B 0021;
+F982 0021;
+2F890 0021;
+F943 0021;
+2F38 0021;
+2F895 0061;
+2F39 0041;
+2F874 0021;
+2F899 0021;
+2F89A 0021;
+F9D8 0021;
+F966 0021;
+2F3C 0021;
+2E96 0021;
+2F89E 0021;
+2F89F 0021;
+F9AC 0021;
+FA3D 0021;
+2F8A5 0021;
+F9B9 0021;
+F9D9 0021;
+2F8A7 0021;
+FA87 0021;
+FA8A 0021;
+2F8AA 0021;
+2F8AB 003F;
+F98F 0021;
+2F8AE 0021;
+2F8AF 0021;
+2F8B0 003F;
+F90D 0021;
+F990 0021;
+2F8B2 0021;
+F9D2 0021;
+2F3E 0021;
+2E98 0021;
+2F8B5 0021;
+F95B 0021;
+2F8B6 0021;
+F973 0021;
+2F8B7 0021;
+F9A4 0021;
+F975 0021;
+FA8D 0021;
+2F8BD 0021;
+2F8BF 0021;
+2F8C3 0021;
+2F8C4 0021;
+2F8C5 0021;
+2F40 0021;
+2E99 0021;
+2F8C8 0061;
+2F8C9 0021;
+2F42 0021;
+F9BE 0021;
+2F45 0021;
+2F46 0021;
+FA42 0021;
+3230 0021;
+3230 0041;
+337E 0021;
+337C 0021;
+FA12 0021;
+F9C5 0021;
+2F8CF 0061;
+FA06 0021;
+2F48 0021;
+2F8CC 0021;
+322A 0021;
+322A 0041;
+3232 0021;
+F929 0021;
+FA92 0041;
+2F8D9 0061;
+322D 0021;
+328D 0061;
+2F8DC 0021;
+2F8DB 0021;
+2F8E0 0021;
+F9C9 0021;
+F9DA 0021;
+3231 0021;
+337F 0021;
+F97A 0021;
+2F8E2 0061;
+F9E2 0021;
+2F8E8 0021;
+2F8EA 0021;
+F9BF 003F;
+F94C 0021;
+F931 0021;
+F91D 0021;
+2F8EF 0021;
+2F4C 0021;
+2F8F3 0021;
+FA95 0021;
+2E9E 0021;
+F9A5 0021;
+F970 0021;
+FA96 0041;
+2F4F 0021;
+2F50 0021;
+2F52 0021;
+2F53 0021;
+328C 003F;
+2EA1 0021;
+2F8FA 0021;
+F972 0021;
+F968 0021;
+F9E3 0021;
+2F8FF 0021;
+FA05 0021;
+2F900 0021;
+2F902 003F;
+2F903 0021;
+FA45 0021;
+2F904 0021;
+F9F5 0021;
+F9D6 0021;
+FA46 0021;
+2F909 0021;
+F9EC 0021;
+FA99 0021;
+F904 0021;
+F94E 0021;
+FA9A 0061;
+2F90F 0021;
+F922 0021;
+2F915 0021;
+2F914 0061;
+2F917 0021;
+328B 003F;
+2EA3 0021;
+2F919 0021;
+F9FB 0021;
+F99F 0021;
+2F91C 0021;
+FA48 0021;
+2F91E 0021;
+F9EE 0021;
+F91E 0021;
+2F56 0021;
+2EA5 003F;
+FA9E 0021;
+2F57 0021;
+2F59 0021;
+2F922 0021;
+2F5C 0021;
+F946 0021;
+3235 0041;
+2F925 0021;
+2EA8 0021;
+F9FA 0021;
+FA16 0021;
+F9A7 0021;
+2F5E 0021;
+F9DB 0061;
+2F929 0021;
+2F92B 0021;
+F917 0021;
+F9CC 0021;
+2F92E 0021;
+F9AE 0021;
+2F930 0061;
+F994 0021;
+2F932 0021;
+2F61 0021;
+2F62 0021;
+2F934 0021;
+2F65 0021;
+329A 0021;
+2F936 0021;
+F976 0021;
+2F938 0061;
+2F66 0041;
+F9E5 0021;
+FAA4 0021;
+F9C1 0021;
+2F68 0021;
+2F6A 0021;
+FA17 0021;
+FAA7 0021;
+323C 0041;
+2F6C 0021;
+FAA8 0021;
+F96D 0021;
+2F946 0021;
+FAAA 0021;
+2F948 0061;
+FA9D 0021;
+2F6E 0021;
+2F94E 0021;
+F93B 0021;
+FA4B 0021;
+FAAB 0021;
+F964 0021;
+2F70 0021;
+2EAD 0021;
+FA4C 0021;
+3293 0061;
+FA4D 0021;
+FA50 0021;
+FA51 0021;
+3297 0061;
+FA1A 0021;
+F93C 0021;
+FA53 0021;
+2F956 0061;
+2F71 0021;
+F995 0021;
+2F957 0021;
+FA54 0021;
+2F95A 0021;
+2F73 0021;
+FAAC 0021;
+F9F7 0041;
+2F75 0021;
+F9F8 0021;
+FAAD 0061;
+2F963 0021;
+F944 0021;
+FAAE 0021;
+FA1D 0021;
+FA03 0021;
+F97B 0021;
+2F77 0021;
+2F96A 0021;
+F96A 0021;
+FAAF 0021;
+F93D 0021;
+2F96E 0021;
+FAB0 003F;
+2F96F 0021;
+F950 0021;
+2F970 0021;
+2F78 0021;
+2F79 0021;
+2EB2 0041;
+2EB4 003F;
+FA5A 0021;
+2F976 0021;
+2F7A 0021;
+2EB7 0061;
+2F978 0021;
+FA1E 0021;
+2F979 0021;
+F934 0041;
+FA5B 0021;
+FAB2 0041;
+2F7E 0021;
+F9B0 0021;
+F997 0021;
+F945 0021;
+2F80 0041;
+2F81 0021;
+F953 0021;
+2F982 0021;
+2F985 0021;
+2F82 0021;
+3242 0021;
+FA5C 0021;
+2F84 0061;
+2F85 0041;
+2F98B 0061;
+2F86 0021;
+2F88 0021;
+F97C 0021;
+2F8B 0021;
+2EBE 003F;
+2EBE 0041;
+2F990 0021;
+2F991 0021;
+2F994 0021;
+F974 0021;
+2F996 0021;
+2F99C 0021;
+FAB3 0021;
+2F99A 0021;
+2F99D 0021;
+2F9A1 0021;
+2F9A3 0021;
+FAB4 0021;
+F918 0021;
+FA5F 0021;
+F999 0021;
+2F9A9 0021;
+2F9AA 0021;
+F923 0021;
+F935 0021;
+F91F 0021;
+2F8C 0021;
+2F9B3 0021;
+2F9B4 0061;
+2F9B6 0021;
+2F9B8 0021;
+2F9BA 0021;
+2F9BC 0021;
+FAB5 0021;
+2F9BE 0021;
+2F9C0 0021;
+F927 0021;
+FA08 0021;
+2F9C3 0021;
+2F9C4 0041;
+F9A0 0021;
+2F9C6 0021;
+F9E8 0021;
+2F9C9 0021;
+FAB6 0021;
+2F91 0021;
+2EC3 0021;
+FA0A 0021;
+FA61 0021;
+2EC5 0021;
+2EC7 003F;
+2F94 0021;
+F96F 0021;
+FAB9 0021;
+F97D 0021;
+FABE 0021;
+FA22 0021;
+F95D 0021;
+FA62 0021;
+FA63 0021;
+F9FC 0021;
+FAC0 0021;
+2EC8 0021;
+2F96 0021;
+2F9D2 0021;
+2F98 0021;
+3236 0021;
+2F9D4 0021;
+F948 0021;
+323E 0041;
+FA64 0021;
+FAC1 0061;
+2EC9 0021;
+2F9B 0021;
+2F9C 0021;
+2F9DB 0021;
+F937 0021;
+2F9D 0021;
+F902 0041;
+F998 0021;
+FAC2 0021;
+FA07 0021;
+2ECB 0021;
+2F98D 0021;
+F971 0041;
+FA66 0021;
+2ECC 0061;
+F99A 0021;
+FA67 0061;
+FAC3 0021;
+F913 0021;
+2FA2 0041;
+F92C 0021;
+FA26 0021;
+2F9E6 0021;
+F919 0021;
+F9B7 0021;
+F9E9 0021;
+F97E 0021;
+2FA6 003F;
+328E 0041;
+2F9E7 0021;
+2F9EA 0021;
+2F9E9 0021;
+F99B 0021;
+2F9EC 0021;
+2ED1 0021;
+2ED2 0021;
+2FA8 0021;
+F986 0021;
+2ED4 0021;
+2FA9 0041;
+F9C6 0021;
+FA09 0021;
+F9D3 0021;
+F9DC 0021;
+2FAA 0021;
+2FAB 0021;
+F9EA 0021;
+FAC7 0061;
+2FAC 0041;
+F949 0021;
+F938 0021;
+2FAD 0021;
+FA1C 0021;
+2FAE 0021;
+2FB0 0021;
+FAC9 0021;
+2ED9 0021;
+2FB3 0021;
+FACA 0061;
+32A0 0021;
+2F9FF 003F;
+F9B4 0021;
+FA6A 0021;
+F9D0 0021;
+2FB5 0021;
+2FB6 0021;
+2EDD 0021;
+2EDF 0021;
+2FA02 0021;
+FA2B 0021;
+2FA04 0021;
+2FB8 0021;
+2FB9 0021;
+2FBA 0021;
+F91A 0021;
+F987 0021;
+2FBB 0021;
+2FBC 0021;
+FACD 0021;
+2FBE 0021;
+2FC0 0021;
+2FC1 0041;
+F939 0021;
+F9F2 0021;
+2FC3 0021;
+2FA0F 0021;
+F93A 0021;
+2EE6 0021;
+2FC4 0041;
+F940 0041;
+F9F3 0021;
+2EE8 0021;
+2FA15 0041;
+2EE9 0021;
+F989 0021;
+2FA17 0021;
+2FCC 0021;
+2FA18 0041;
+2FCD 0021;
+2FCE 0021;
+2FCF 0021;
+2FA1C 0041;
+2FD1 0021;
+2EEC 0021;
+2FD2 0041;
+F9C4 0021;
+2EEF 0061;
+2EF0 0021;
+FACE 003F;
+F907 0041;
+F908 0062;
+9FA0 0021;
+9FA1 0021;
+9FA3 0021;
+9FA5 0021;
+FA0F 0021;
+FA13 0021;
+FA1F 0021;
+FA23 0021;
+FA27 0021;
+FA29 0021;
+3401 0021;
+3403 0021;
+3405 0021;
+3407 0021;
+3409 0021;
+340B 0021;
+340D 0021;
+340F 0021;
+3411 0021;
+3413 0021;
+3415 0021;
+3417 0021;
+3419 0021;
+341B 0021;
+341D 0021;
+341F 0021;
+3421 0021;
+3423 0021;
+3425 0021;
+3427 0021;
+3429 0021;
+342B 0021;
+342D 0021;
+342F 0021;
+3431 0021;
+3433 0021;
+3435 0021;
+3437 0021;
+3439 0021;
+343B 0021;
+343D 0021;
+343F 0021;
+3441 0021;
+3443 0021;
+3445 0021;
+3447 0021;
+3449 0021;
+344B 0021;
+344D 0021;
+344F 0021;
+3451 0021;
+3453 0021;
+3455 0021;
+3457 0021;
+3459 0021;
+345B 0021;
+345D 0021;
+345F 0021;
+3461 0021;
+3463 0021;
+3465 0021;
+3467 0021;
+3469 0021;
+346B 0021;
+346D 0021;
+346F 0021;
+3471 0021;
+3473 0021;
+3475 0021;
+3477 0021;
+3479 0021;
+347B 0021;
+347D 0021;
+347F 0021;
+3481 0021;
+3483 0021;
+3485 0021;
+3487 0021;
+3489 0021;
+348B 0021;
+348D 0021;
+348F 0021;
+3491 0021;
+3493 0021;
+3495 0021;
+3497 0021;
+3499 0021;
+349B 0021;
+349D 0021;
+2F80C 0061;
+34A0 0021;
+34A2 0021;
+34A4 0021;
+34A6 0021;
+34A8 0021;
+34AA 0021;
+34AC 0021;
+34AE 0021;
+34B0 0021;
+34B2 0021;
+34B4 0021;
+34B6 0021;
+34B8 0021;
+2F813 0061;
+34BB 0021;
+34BC 0021;
+34BE 0021;
+34C0 0021;
+34C2 0021;
+34C4 0021;
+34C6 0021;
+34C8 0021;
+34CA 0021;
+34CC 0021;
+34CE 0021;
+34D0 0021;
+34D2 0021;
+34D4 0021;
+34D6 0021;
+34D8 0021;
+34DA 0021;
+34DC 0021;
+34DE 0021;
+2F81F 0061;
+34E1 0021;
+34E3 0021;
+34E5 0021;
+34E7 0021;
+34E9 0021;
+34EB 0021;
+34ED 0021;
+34EF 0021;
+34F1 0021;
+34F3 0021;
+34F5 0021;
+34F7 0021;
+34F9 0021;
+34FB 0021;
+34FD 0021;
+34FF 0021;
+3501 0021;
+3503 0021;
+3505 0021;
+3507 0021;
+3509 0021;
+350B 0021;
+350D 0021;
+350F 0021;
+3511 0021;
+3513 0021;
+3515 0021;
+3516 0021;
+3518 0021;
+351A 0021;
+351C 0021;
+351E 0021;
+3520 0021;
+3522 0021;
+3524 0021;
+3526 0021;
+3528 0021;
+352A 0021;
+352C 0021;
+352E 0021;
+3530 0021;
+3532 0021;
+3534 0021;
+3536 0021;
+3538 0021;
+353A 0021;
+353C 0021;
+353E 0021;
+3540 0021;
+3542 0021;
+3544 0021;
+3546 0021;
+3548 0021;
+354A 0021;
+354C 0021;
+354E 0021;
+3550 0021;
+3552 0021;
+3554 0021;
+3556 0021;
+3558 0021;
+355A 0021;
+355C 0021;
+355E 0021;
+3560 0021;
+3562 0021;
+3564 0021;
+3566 0021;
+3568 0021;
+356A 0021;
+356C 0021;
+356E 0021;
+3570 0021;
+3572 0021;
+3574 0021;
+3576 0021;
+3578 0021;
+357A 0021;
+357C 0021;
+357E 0021;
+3580 0021;
+3582 0021;
+3584 0021;
+3586 0021;
+3588 0021;
+358A 0021;
+358C 0021;
+358E 0021;
+3590 0021;
+3592 0021;
+3594 0021;
+3596 0021;
+3598 0021;
+359A 0021;
+359C 0021;
+359E 0021;
+35A0 0021;
+35A2 0021;
+35A4 0021;
+35A6 0021;
+35A8 0021;
+35AA 0021;
+35AC 0021;
+35AE 0021;
+35B0 0021;
+35B2 0021;
+35B4 0021;
+35B6 0021;
+35B8 0021;
+35BA 0021;
+35BC 0021;
+35BE 0021;
+35C0 0021;
+35C2 0021;
+35C4 0021;
+35C6 0021;
+35C8 0021;
+35CA 0021;
+35CC 0021;
+35CE 0021;
+35D0 0021;
+35D2 0021;
+35D4 0021;
+35D6 0021;
+35D8 0021;
+35DA 0021;
+35DC 0021;
+35DE 0021;
+35E0 0021;
+35E2 0021;
+35E4 0021;
+35E6 0021;
+35E8 0021;
+35EA 0021;
+35EC 0021;
+35EE 0021;
+35F0 0021;
+35F2 0021;
+35F4 0021;
+35F6 0021;
+35F8 0021;
+35FA 0021;
+35FC 0021;
+35FE 0021;
+3600 0021;
+3602 0021;
+3604 0021;
+3606 0021;
+3608 0021;
+360A 0021;
+360C 0021;
+360E 0021;
+3610 0021;
+3612 0021;
+3614 0021;
+3616 0021;
+3618 0021;
+361A 0021;
+361C 0021;
+361E 0021;
+3620 0021;
+3622 0021;
+3624 0021;
+3626 0021;
+3628 0021;
+362A 0021;
+362C 0021;
+362E 0021;
+3630 0021;
+3632 0021;
+3634 0021;
+3636 0021;
+3638 0021;
+363A 0021;
+363C 0021;
+363E 0021;
+3640 0021;
+3642 0021;
+3644 0021;
+3646 0021;
+3648 0021;
+364A 0021;
+364C 0021;
+364E 0021;
+3650 0021;
+3652 0021;
+3654 0021;
+3656 0021;
+3658 0021;
+365A 0021;
+365C 0021;
+365E 0021;
+3660 0021;
+3662 0021;
+3664 0021;
+3666 0021;
+3668 0021;
+366A 0021;
+366C 0021;
+366E 0021;
+3670 0021;
+3672 0021;
+3674 0021;
+3676 0021;
+3678 0021;
+367A 0021;
+367C 0021;
+367E 0021;
+3680 0021;
+3682 0021;
+3684 0021;
+3686 0021;
+3688 0021;
+368A 0021;
+368C 0021;
+368E 0021;
+3690 0021;
+3692 0021;
+3694 0021;
+3696 0021;
+3698 0021;
+369A 0021;
+369C 0021;
+369E 0021;
+36A0 0021;
+36A2 0021;
+36A4 0021;
+36A6 0021;
+36A8 0021;
+36AA 0021;
+36AC 0021;
+36AE 0021;
+36B0 0021;
+36B2 0021;
+36B4 0021;
+36B6 0021;
+36B8 0021;
+36BA 0021;
+36BC 0021;
+36BE 0021;
+36C0 0021;
+36C2 0021;
+36C4 0021;
+36C6 0021;
+36C8 0021;
+36CA 0021;
+36CC 0021;
+36CE 0021;
+36D0 0021;
+36D2 0021;
+36D4 0021;
+36D6 0021;
+36D8 0021;
+36DA 0021;
+36DC 0021;
+36DE 0021;
+36E0 0021;
+36E2 0021;
+36E4 0021;
+36E6 0021;
+36E8 0021;
+36EA 0021;
+36EC 0021;
+36EE 0021;
+36EF 0021;
+36F1 0021;
+36F3 0021;
+36F5 0021;
+36F7 0021;
+36F9 0021;
+36FB 0021;
+2F868 0061;
+36FE 0021;
+3700 0021;
+3702 0021;
+3704 0021;
+3706 0021;
+3708 0021;
+370A 0021;
+370C 0021;
+370E 0021;
+3710 0021;
+3712 0021;
+3714 0021;
+3716 0021;
+3718 0021;
+371A 0021;
+371C 0021;
+371E 0021;
+3720 0021;
+3722 0021;
+3724 0021;
+3726 0021;
+3728 0021;
+372A 0021;
+372C 0021;
+372E 0021;
+3730 0021;
+3732 0021;
+3734 0021;
+3736 0021;
+3738 0021;
+373A 0021;
+373C 0021;
+373E 0021;
+3740 0021;
+3742 0021;
+3744 0021;
+3746 0021;
+3748 0021;
+374A 0021;
+374C 0021;
+374E 0021;
+3750 0021;
+3752 0021;
+3754 0021;
+3756 0021;
+3758 0021;
+375A 0021;
+375C 0021;
+375E 0021;
+3760 0021;
+3762 0021;
+3764 0021;
+3766 0021;
+3768 0021;
+376A 0021;
+376C 0021;
+376E 0021;
+3770 0021;
+3772 0021;
+3774 0021;
+3776 0021;
+3778 0021;
+377A 0021;
+377C 0021;
+377E 0021;
+3780 0021;
+2F876 0061;
+3783 0021;
+3785 0021;
+3787 0021;
+3789 0021;
+378B 0021;
+378D 0021;
+378F 0021;
+3791 0021;
+3793 0021;
+3795 0021;
+3797 0021;
+3799 0021;
+379B 0021;
+379D 0021;
+379F 0021;
+37A1 0021;
+37A3 0021;
+37A5 0021;
+37A7 0021;
+37A9 0021;
+37AB 0021;
+37AD 0021;
+37AF 0021;
+37B1 0021;
+37B3 0021;
+37B5 0021;
+37B7 0021;
+37B9 0021;
+37BB 0021;
+37BD 0021;
+37BF 0021;
+37C1 0021;
+37C3 0021;
+37C5 0021;
+37C7 0021;
+37C9 0021;
+37CB 0021;
+37CD 0021;
+37CF 0021;
+37D1 0021;
+37D3 0021;
+37D5 0021;
+37D7 0021;
+37D9 0021;
+37DB 0021;
+37DD 0021;
+37DF 0021;
+37E1 0021;
+37E3 0021;
+37E5 0021;
+37E7 0021;
+37E9 0021;
+37EB 0021;
+37ED 0021;
+37EF 0021;
+37F1 0021;
+37F3 0021;
+37F5 0021;
+37F7 0021;
+37F9 0021;
+37FB 0021;
+37FD 0021;
+37FF 0021;
+3801 0021;
+3803 0021;
+3805 0021;
+3807 0021;
+3809 0021;
+380B 0021;
+380D 0021;
+380F 0021;
+3811 0021;
+3813 0021;
+3815 0021;
+3817 0021;
+3819 0021;
+381B 0021;
+381D 0021;
+381F 0021;
+3821 0021;
+3823 0021;
+3825 0021;
+3827 0021;
+3829 0021;
+382B 0021;
+382D 0021;
+382F 0021;
+3830 0021;
+3832 0021;
+3834 0021;
+3836 0021;
+3838 0021;
+383A 0021;
+383C 0021;
+383E 0021;
+3840 0021;
+3842 0021;
+3844 0021;
+3846 0021;
+3848 0021;
+384A 0021;
+384C 0021;
+384E 0021;
+3850 0021;
+3852 0021;
+3854 0021;
+3856 0021;
+3858 0021;
+385A 0021;
+385C 0021;
+385E 0021;
+3860 0021;
+3862 0021;
+3863 0021;
+3865 0021;
+3867 0021;
+3869 0021;
+386B 0021;
+386D 0021;
+386F 0021;
+3871 0021;
+3873 0021;
+3875 0021;
+3877 0021;
+3879 0021;
+387B 0021;
+2F88A 0061;
+387E 0021;
+3880 0021;
+3882 0021;
+3884 0021;
+3886 0021;
+3888 0021;
+388A 0021;
+388C 0021;
+388E 0021;
+3890 0021;
+3892 0021;
+3894 0021;
+3896 0021;
+3898 0021;
+389A 0021;
+389C 0021;
+389E 0021;
+38A0 0021;
+38A2 0021;
+38A4 0021;
+38A6 0021;
+38A8 0021;
+38AA 0021;
+38AC 0021;
+38AE 0021;
+38B0 0021;
+38B2 0021;
+38B4 0021;
+38B6 0021;
+38B8 0021;
+38BA 0021;
+38BC 0021;
+38BE 0021;
+38C0 0021;
+38C2 0021;
+38C4 0021;
+38C6 0021;
+2F896 0061;
+38C9 0021;
+38CB 0021;
+38CD 0021;
+38CF 0021;
+38D1 0021;
+38D3 0021;
+38D5 0021;
+38D7 0021;
+38D9 0021;
+38DB 0021;
+38DD 0021;
+38DF 0021;
+38E1 0021;
+38E3 0021;
+38E4 0021;
+38E6 0021;
+38E8 0021;
+38EA 0021;
+38EC 0021;
+38EE 0021;
+38F0 0021;
+38F2 0021;
+38F4 0021;
+38F6 0021;
+38F8 0021;
+38FA 0021;
+38FC 0021;
+38FE 0021;
+3900 0021;
+3902 0021;
+3904 0021;
+3906 0021;
+3908 0021;
+390A 0021;
+390C 0021;
+390E 0021;
+3910 0021;
+3912 0021;
+3914 0021;
+3916 0021;
+3918 0021;
+391A 0021;
+391C 0021;
+391D 0021;
+391F 0021;
+3921 0021;
+3923 0021;
+3925 0021;
+3927 0021;
+3929 0021;
+392B 0021;
+392D 0021;
+392F 0021;
+3931 0021;
+3933 0021;
+3935 0021;
+3937 0021;
+3939 0021;
+2F8A1 0061;
+393C 0021;
+393E 0021;
+3940 0021;
+3942 0021;
+3944 0021;
+3946 0021;
+3948 0021;
+394A 0021;
+394C 0021;
+394E 0021;
+3950 0021;
+3952 0021;
+3954 0021;
+3956 0021;
+3958 0021;
+395A 0021;
+395C 0021;
+395E 0021;
+3960 0021;
+3962 0021;
+3964 0021;
+3966 0021;
+3968 0021;
+396A 0021;
+396C 0021;
+396E 0021;
+3970 0021;
+3972 0021;
+3974 0021;
+3976 0021;
+3978 0021;
+397A 0021;
+397C 0021;
+397E 0021;
+3980 0021;
+3982 0021;
+3984 0021;
+3986 0021;
+3988 0021;
+398A 0021;
+398C 0021;
+398E 0021;
+3990 0021;
+3992 0021;
+3994 0021;
+3996 0021;
+3998 0021;
+399A 0021;
+399C 0021;
+399E 0021;
+39A0 0021;
+39A2 0021;
+39A4 0021;
+39A6 0021;
+39A8 0021;
+39AA 0021;
+39AC 0021;
+39AE 0021;
+39B0 0021;
+39B2 0021;
+39B4 0021;
+39B6 0021;
+39B8 0021;
+39BA 0021;
+39BC 0021;
+39BE 0021;
+39C0 0021;
+39C2 0021;
+39C4 0021;
+39C6 0021;
+39C8 0021;
+39CA 0021;
+39CC 0021;
+39CE 0021;
+39D0 0021;
+39D2 0021;
+39D4 0021;
+39D6 0021;
+39D8 0021;
+39DA 0021;
+39DC 0021;
+39DE 0021;
+39E0 0021;
+39E2 0021;
+39E4 0021;
+39E6 0021;
+39E8 0021;
+39EA 0021;
+39EC 0021;
+39EE 0021;
+39F0 0021;
+39F2 0021;
+39F4 0021;
+39F6 0021;
+39F8 0021;
+39FA 0021;
+39FC 0021;
+39FE 0021;
+3A00 0021;
+3A02 0021;
+3A04 0021;
+3A06 0021;
+3A08 0021;
+3A0A 0021;
+3A0C 0021;
+3A0E 0021;
+3A10 0021;
+3A12 0021;
+3A14 0021;
+3A16 0021;
+3A18 0021;
+3A1A 0021;
+3A1C 0021;
+3A1E 0021;
+3A20 0021;
+3A22 0021;
+3A24 0021;
+3A26 0021;
+3A28 0021;
+3A2A 0021;
+3A2C 0021;
+3A2E 0021;
+3A2F 0021;
+3A31 0021;
+3A33 0021;
+3A35 0021;
+3A37 0021;
+3A39 0021;
+3A3B 0021;
+3A3D 0021;
+3A3F 0021;
+3A41 0021;
+3A43 0021;
+3A45 0021;
+3A47 0021;
+3A49 0021;
+3A4B 0021;
+3A4D 0021;
+3A4F 0021;
+3A51 0021;
+3A53 0021;
+3A55 0021;
+3A57 0021;
+3A59 0021;
+3A5B 0021;
+3A5D 0021;
+3A5F 0021;
+3A61 0021;
+3A63 0021;
+3A65 0021;
+3A67 0021;
+3A69 0021;
+3A6B 0021;
+2F8C7 0061;
+3A6E 0021;
+3A70 0021;
+3A72 0021;
+3A74 0021;
+3A76 0021;
+3A78 0021;
+3A7A 0021;
+3A7C 0021;
+3A7E 0021;
+3A80 0021;
+3A82 0021;
+3A84 0021;
+3A86 0021;
+3A88 0021;
+3A8A 0021;
+3A8C 0021;
+3A8E 0021;
+3A90 0021;
+3A92 0021;
+3A94 0021;
+3A96 0021;
+3A98 0021;
+3A9A 0021;
+3A9C 0021;
+3A9E 0021;
+3AA0 0021;
+3AA2 0021;
+3AA4 0021;
+3AA6 0021;
+3AA8 0021;
+3AAA 0021;
+3AAC 0021;
+3AAE 0021;
+3AB0 0021;
+3AB2 0021;
+3AB4 0021;
+3AB6 0021;
+3AB8 0021;
+3ABA 0021;
+3ABC 0021;
+3ABE 0021;
+3AC0 0021;
+3AC2 0021;
+3AC4 0021;
+3AC6 0021;
+3AC8 0021;
+3ACA 0021;
+3ACC 0021;
+3ACE 0021;
+3AD0 0021;
+3AD2 0021;
+3AD4 0021;
+3AD6 0021;
+3AD8 0021;
+3ADA 0021;
+3ADC 0021;
+3ADE 0021;
+3AE0 0021;
+3AE2 0021;
+3AE4 0021;
+3AE5 0021;
+3AE7 0021;
+3AE9 0021;
+3AEB 0021;
+3AED 0021;
+3AEF 0021;
+3AF1 0021;
+3AF3 0021;
+3AF5 0021;
+3AF7 0021;
+3AF9 0021;
+3AFB 0021;
+3AFD 0021;
+3AFF 0021;
+3B01 0021;
+3B03 0021;
+3B05 0021;
+3B07 0021;
+2F8D0 0061;
+3B0A 0021;
+3B0C 0021;
+3B0E 0021;
+3B10 0021;
+3B12 0021;
+3B14 0021;
+3B16 0021;
+3B18 0021;
+2F8CE 0061;
+3B1B 0021;
+3B1D 0021;
+3B1F 0021;
+3B21 0021;
+3B23 0021;
+3B25 0021;
+3B27 0021;
+3B29 0021;
+3B2B 0021;
+3B2D 0021;
+3B2F 0021;
+3B31 0021;
+3B33 0021;
+3B35 0021;
+3B37 0021;
+3B39 0021;
+3B3B 0021;
+3B3D 0021;
+3B3F 0021;
+3B41 0021;
+3B43 0021;
+3B45 0021;
+3B47 0021;
+3B49 0021;
+3B4A 0021;
+3B4C 0021;
+3B4E 0021;
+3B50 0021;
+3B52 0021;
+3B54 0021;
+3B56 0021;
+3B58 0021;
+3B5A 0021;
+3B5C 0021;
+3B5E 0021;
+3B60 0021;
+3B62 0021;
+3B64 0021;
+3B66 0021;
+3B68 0021;
+3B6A 0021;
+3B6C 0021;
+3B6E 0021;
+3B70 0021;
+3B72 0021;
+3B74 0021;
+3B76 0021;
+3B78 0021;
+3B7A 0021;
+3B7C 0021;
+3B7E 0021;
+3B80 0021;
+3B82 0021;
+3B84 0021;
+3B86 0021;
+3B88 0021;
+3B8A 0021;
+3B8C 0021;
+3B8E 0021;
+3B90 0021;
+3B92 0021;
+3B94 0021;
+3B96 0021;
+3B98 0021;
+3B9A 0021;
+3B9C 0021;
+2F8E7 003F;
+3B9E 0021;
+3BA0 0021;
+3BA2 0021;
+3BA4 0021;
+3BA6 0021;
+3BA8 0021;
+3BAA 0021;
+3BAC 0021;
+3BAE 0021;
+3BB0 0021;
+3BB2 0021;
+3BB4 0021;
+3BB6 0021;
+3BB8 0021;
+3BBA 0021;
+3BBC 0021;
+3BBE 0021;
+3BC0 0021;
+3BC2 0021;
+3BC4 0021;
+3BC6 0021;
+3BC8 0021;
+3BCA 0021;
+3BCC 0021;
+3BCE 0021;
+3BD0 0021;
+3BD2 0021;
+3BD4 0021;
+3BD6 0021;
+3BD8 0021;
+3BDA 0021;
+3BDC 0021;
+3BDE 0021;
+3BE0 0021;
+3BE2 0021;
+3BE4 0021;
+3BE6 0021;
+3BE8 0021;
+3BEA 0021;
+3BEC 0021;
+3BEE 0021;
+3BF0 0021;
+3BF2 0021;
+3BF4 0021;
+3BF6 0021;
+3BF8 0021;
+3BFA 0021;
+3BFC 0021;
+3BFE 0021;
+3C00 0021;
+3C02 0021;
+3C04 0021;
+3C06 0021;
+3C08 0021;
+3C0A 0021;
+3C0C 0021;
+3C0E 0021;
+3C10 0021;
+3C12 0021;
+3C14 0021;
+3C16 0021;
+3C18 0021;
+3C19 0021;
+3C1B 0021;
+3C1D 0021;
+3C1F 0021;
+3C21 0021;
+3C23 0021;
+3C25 0021;
+3C27 0021;
+3C29 0021;
+3C2B 0021;
+3C2D 0021;
+3C2F 0021;
+3C31 0021;
+3C33 0021;
+3C35 0021;
+3C37 0021;
+3C39 0021;
+3C3B 0021;
+3C3D 0021;
+3C3F 0021;
+3C41 0021;
+3C43 0021;
+3C45 0021;
+3C47 0021;
+3C49 0021;
+3C4B 0021;
+3C4D 0021;
+2F8F2 0061;
+3C50 0021;
+3C52 0021;
+3C54 0021;
+3C56 0021;
+3C58 0021;
+3C5A 0021;
+3C5C 0021;
+3C5E 0021;
+3C60 0021;
+3C62 0021;
+3C64 0021;
+3C66 0021;
+3C68 0021;
+3C6A 0021;
+3C6C 0021;
+3C6E 0021;
+3C70 0021;
+3C72 0021;
+3C74 0021;
+3C76 0021;
+3C78 0021;
+3C7A 0021;
+3C7C 0021;
+3C7E 0021;
+3C80 0021;
+3C82 0021;
+3C84 0021;
+3C86 0021;
+3C88 0021;
+3C8A 0021;
+3C8C 0021;
+3C8E 0021;
+3C90 0021;
+3C92 0021;
+3C94 0021;
+3C96 0021;
+3C98 0021;
+3C9A 0021;
+3C9C 0021;
+3C9E 0021;
+3CA0 0021;
+3CA2 0021;
+3CA4 0021;
+3CA6 0021;
+3CA8 0021;
+3CAA 0021;
+3CAC 0021;
+3CAE 0021;
+3CB0 0021;
+3CB2 0021;
+3CB4 0021;
+3CB6 0021;
+3CB8 0021;
+3CBA 0021;
+3CBC 0021;
+3CBE 0021;
+3CC0 0021;
+3CC2 0021;
+3CC4 0021;
+3CC6 0021;
+3CC8 0021;
+3CCA 0021;
+3CCC 0021;
+3CCE 0021;
+3CD0 0021;
+3CD2 0021;
+3CD4 0021;
+3CD6 0021;
+3CD8 0021;
+3CDA 0021;
+3CDC 0021;
+3CDE 0021;
+3CE0 0021;
+3CE2 0021;
+3CE4 0021;
+3CE6 0021;
+3CE8 0021;
+3CEA 0021;
+3CEC 0021;
+3CEE 0021;
+3CF0 0021;
+3CF2 0021;
+3CF4 0021;
+3CF6 0021;
+3CF8 0021;
+3CFA 0021;
+3CFC 0021;
+3CFE 0021;
+3D00 0021;
+3D02 0021;
+3D04 0021;
+3D06 0021;
+3D08 0021;
+3D0A 0021;
+3D0C 0021;
+3D0E 0021;
+3D10 0021;
+3D12 0021;
+3D14 0021;
+3D16 0021;
+3D18 0021;
+3D1A 0021;
+3D1C 0021;
+3D1E 0021;
+3D20 0021;
+3D22 0021;
+3D24 0021;
+3D26 0021;
+3D28 0021;
+3D2A 0021;
+3D2C 0021;
+3D2E 0021;
+3D30 0021;
+3D32 0021;
+2F90A 0061;
+3D35 0021;
+3D37 0021;
+3D39 0021;
+3D3B 0021;
+3D3D 0021;
+3D3F 0021;
+3D41 0021;
+3D43 0021;
+3D45 0021;
+3D47 0021;
+3D49 0021;
+3D4B 0021;
+3D4D 0021;
+3D4F 0021;
+3D51 0021;
+3D53 0021;
+3D55 0021;
+3D57 0021;
+3D59 0021;
+3D5B 0021;
+3D5D 0021;
+3D5F 0021;
+3D61 0021;
+3D63 0021;
+3D65 0021;
+3D67 0021;
+3D69 0021;
+3D6B 0021;
+3D6D 0021;
+3D6F 0021;
+3D71 0021;
+3D73 0021;
+3D75 0021;
+3D77 0021;
+3D79 0021;
+3D7B 0021;
+3D7D 0021;
+3D7F 0021;
+3D81 0021;
+3D83 0021;
+3D85 0021;
+3D87 0021;
+3D89 0021;
+3D8B 0021;
+3D8D 0021;
+3D8F 0021;
+3D91 0021;
+3D93 0021;
+3D95 0021;
+2F916 0061;
+3D98 0021;
+3D9A 0021;
+3D9C 0021;
+3D9E 0021;
+3DA0 0021;
+3DA2 0021;
+3DA4 0021;
+3DA6 0021;
+3DA8 0021;
+3DAA 0021;
+3DAC 0021;
+3DAE 0021;
+3DB0 0021;
+3DB2 0021;
+3DB4 0021;
+3DB6 0021;
+3DB8 0021;
+3DBA 0021;
+3DBC 0021;
+3DBE 0021;
+3DC0 0021;
+3DC2 0021;
+3DC4 0021;
+3DC6 0021;
+3DC8 0021;
+3DCA 0021;
+3DCC 0021;
+3DCE 0021;
+3DD0 0021;
+3DD2 0021;
+3DD4 0021;
+3DD6 0021;
+3DD8 0021;
+3DDA 0021;
+3DDC 0021;
+3DDE 0021;
+3DE0 0021;
+3DE2 0021;
+3DE4 0021;
+3DE6 0021;
+3DE8 0021;
+3DEA 0021;
+3DEC 0021;
+3DEE 0021;
+3DF0 0021;
+3DF2 0021;
+3DF4 0021;
+3DF6 0021;
+3DF8 0021;
+3DFA 0021;
+3DFC 0021;
+3DFE 0021;
+3E00 0021;
+3E02 0021;
+3E04 0021;
+3E06 0021;
+3E08 0021;
+3E0A 0021;
+3E0C 0021;
+3E0E 0021;
+3E10 0021;
+3E12 0021;
+3E14 0021;
+3E16 0021;
+3E18 0021;
+3E1A 0021;
+3E1C 0021;
+3E1E 0021;
+3E20 0021;
+3E22 0021;
+3E24 0021;
+3E26 0021;
+3E28 0021;
+3E2A 0021;
+3E2C 0021;
+3E2E 0021;
+3E30 0021;
+3E32 0021;
+3E34 0021;
+3E36 0021;
+3E38 0021;
+3E3A 0021;
+3E3C 0021;
+3E3E 0021;
+3E40 0021;
+3E42 0021;
+3E44 0021;
+3E46 0021;
+3E48 0021;
+3E4A 0021;
+3E4C 0021;
+3E4E 0021;
+3E50 0021;
+3E52 0021;
+3E54 0021;
+3E56 0021;
+3E58 0021;
+3E5A 0021;
+3E5C 0021;
+3E5E 0021;
+3E60 0021;
+3E62 0021;
+3E64 0021;
+3E66 0021;
+3E68 0021;
+3E6A 0021;
+3E6C 0021;
+3E6E 0021;
+3E70 0021;
+3E72 0021;
+3E74 0021;
+3E76 0021;
+3E78 0021;
+3E7A 0021;
+3E7C 0021;
+3E7E 0021;
+3E80 0021;
+3E82 0021;
+3E84 0021;
+3E86 0021;
+3E88 0021;
+3E8A 0021;
+3E8C 0021;
+3E8E 0021;
+3E90 0021;
+3E92 0021;
+3E94 0021;
+3E96 0021;
+3E98 0021;
+3E9A 0021;
+3E9C 0021;
+3E9E 0021;
+3EA0 0021;
+3EA2 0021;
+3EA4 0021;
+3EA6 0021;
+3EA8 0021;
+3EAA 0021;
+3EAC 0021;
+3EAD 0021;
+3EAF 0021;
+3EB1 0021;
+3EB3 0021;
+3EB5 0021;
+3EB7 0021;
+2F92D 003F;
+3EB9 0021;
+3EBB 0021;
+3EBD 0021;
+3EBF 0021;
+3EC1 0021;
+3EC3 0021;
+3EC5 0021;
+3EC7 0021;
+3EC9 0021;
+3ECB 0021;
+3ECD 0021;
+3ECF 0021;
+3ED1 0021;
+3ED3 0021;
+3ED5 0021;
+3ED7 0021;
+3ED9 0021;
+3EDB 0021;
+3EDD 0021;
+3EDF 0021;
+3EE1 0021;
+3EE3 0021;
+3EE5 0021;
+3EE7 0021;
+3EE9 0021;
+3EEB 0021;
+3EED 0021;
+3EEF 0021;
+3EF1 0021;
+3EF3 0021;
+3EF5 0021;
+3EF7 0021;
+3EF9 0021;
+3EFB 0021;
+3EFD 0021;
+3EFF 0021;
+3F01 0021;
+3F03 0021;
+3F05 0021;
+3F07 0021;
+3F09 0021;
+3F0B 0021;
+3F0D 0021;
+3F0F 0021;
+3F11 0021;
+3F13 0021;
+3F15 0021;
+3F17 0021;
+3F19 0021;
+3F1B 0021;
+3F1C 0021;
+3F1E 0021;
+3F20 0021;
+3F22 0021;
+3F24 0021;
+3F26 0021;
+3F28 0021;
+3F2A 0021;
+3F2C 0021;
+3F2E 0021;
+3F30 0021;
+3F32 0021;
+3F34 0021;
+3F36 0021;
+3F38 0021;
+3F3A 0021;
+3F3C 0021;
+3F3E 0021;
+3F40 0021;
+3F42 0021;
+3F44 0021;
+3F46 0021;
+3F48 0021;
+3F4A 0021;
+3F4C 0021;
+3F4E 0021;
+3F50 0021;
+3F52 0021;
+3F54 0021;
+3F56 0021;
+3F58 0021;
+3F5A 0021;
+3F5C 0021;
+3F5E 0021;
+3F60 0021;
+3F62 0021;
+3F64 0021;
+3F66 0021;
+3F68 0021;
+3F6A 0021;
+3F6C 0021;
+3F6E 0021;
+3F70 0021;
+3F72 0021;
+3F74 0021;
+3F76 0021;
+3F78 0021;
+3F7A 0021;
+3F7C 0021;
+3F7E 0021;
+3F80 0021;
+3F82 0021;
+3F84 0021;
+3F86 0021;
+3F88 0021;
+3F8A 0021;
+3F8C 0021;
+3F8E 0021;
+3F90 0021;
+3F92 0021;
+3F94 0021;
+3F96 0021;
+3F98 0021;
+3F9A 0021;
+3F9C 0021;
+3F9E 0021;
+3FA0 0021;
+3FA2 0021;
+3FA4 0021;
+3FA6 0021;
+3FA8 0021;
+3FAA 0021;
+3FAC 0021;
+3FAE 0021;
+3FB0 0021;
+3FB2 0021;
+3FB4 0021;
+3FB6 0021;
+3FB8 0021;
+3FBA 0021;
+3FBC 0021;
+3FBE 0021;
+3FC0 0021;
+3FC2 0021;
+3FC4 0021;
+3FC6 0021;
+3FC8 0021;
+3FCA 0021;
+3FCC 0021;
+3FCE 0021;
+3FD0 0021;
+3FD2 0021;
+3FD4 0021;
+3FD6 0021;
+3FD8 0021;
+3FDA 0021;
+3FDC 0021;
+3FDE 0021;
+3FE0 0021;
+3FE2 0021;
+3FE4 0021;
+3FE6 0021;
+3FE8 0021;
+3FEA 0021;
+3FEC 0021;
+3FEE 0021;
+3FF0 0021;
+3FF2 0021;
+3FF4 0021;
+3FF6 0021;
+3FF8 0021;
+3FFA 0021;
+3FFC 0021;
+3FFD 0021;
+3FFF 0021;
+4001 0021;
+4003 0021;
+4005 0021;
+4007 0021;
+2F93F 0061;
+400A 0021;
+400C 0021;
+400E 0021;
+4010 0021;
+4012 0021;
+4014 0021;
+4016 0021;
+4018 0021;
+4019 0021;
+401B 0021;
+401D 0021;
+401F 0021;
+4021 0021;
+4023 0021;
+4025 0021;
+4027 0021;
+4029 0021;
+402B 0021;
+402D 0021;
+402F 0021;
+4031 0021;
+4033 0021;
+4035 0021;
+4037 0021;
+4039 0021;
+FAD4 0041;
+403B 0021;
+403D 0021;
+403F 0021;
+4041 0021;
+4043 0021;
+4045 0021;
+2F94B 0061;
+4048 0021;
+404A 0021;
+404C 0021;
+404E 0021;
+4050 0021;
+4052 0021;
+4054 0021;
+4056 0021;
+4058 0021;
+405A 0021;
+405C 0021;
+405E 0021;
+4060 0021;
+4062 0021;
+4064 0021;
+4066 0021;
+4068 0021;
+406A 0021;
+406C 0021;
+406E 0021;
+4070 0021;
+4072 0021;
+4074 0021;
+4076 0021;
+4078 0021;
+407A 0021;
+407C 0021;
+407E 0021;
+4080 0021;
+4082 0021;
+4084 0021;
+4086 0021;
+4088 0021;
+408A 0021;
+408C 0021;
+408E 0021;
+4090 0021;
+4092 0021;
+4094 0021;
+4096 0021;
+4097 0021;
+4099 0021;
+409B 0021;
+409D 0021;
+409F 0021;
+40A1 0021;
+40A3 0021;
+40A5 0021;
+40A7 0021;
+40A9 0021;
+40AB 0021;
+40AD 0021;
+40AF 0021;
+40B1 0021;
+40B3 0021;
+40B5 0021;
+40B7 0021;
+40B9 0021;
+40BB 0021;
+40BD 0021;
+40BF 0021;
+40C1 0021;
+40C3 0021;
+40C5 0021;
+40C7 0021;
+40C9 0021;
+40CB 0021;
+40CD 0021;
+40CF 0021;
+40D1 0021;
+40D3 0021;
+40D5 0021;
+40D7 0021;
+40D9 0021;
+40DB 0021;
+40DD 0021;
+40DF 0021;
+40E1 0021;
+40E3 0021;
+40E4 0021;
+40E6 0021;
+40E8 0021;
+40EA 0021;
+40EC 0021;
+40EE 0021;
+40F0 0021;
+40F2 0021;
+40F4 0021;
+40F6 0021;
+40F8 0021;
+40FA 0021;
+40FC 0021;
+40FE 0021;
+4100 0021;
+4102 0021;
+4104 0021;
+4106 0021;
+4108 0021;
+410A 0021;
+410C 0021;
+410E 0021;
+4110 0021;
+4112 0021;
+4114 0021;
+4116 0021;
+4118 0021;
+411A 0021;
+411C 0021;
+411E 0021;
+4120 0021;
+4122 0021;
+4124 0021;
+4126 0021;
+4128 0021;
+412A 0021;
+412C 0021;
+412E 0021;
+2F958 0061;
+4131 0021;
+4133 0021;
+4135 0021;
+4137 0021;
+4139 0021;
+413B 0021;
+413D 0021;
+413F 0021;
+4141 0021;
+4143 0021;
+4145 0021;
+4147 0021;
+4149 0021;
+414B 0021;
+414D 0021;
+414F 0021;
+4151 0021;
+4153 0021;
+4155 0021;
+4157 0021;
+4159 0021;
+415B 0021;
+415D 0021;
+415F 0021;
+4161 0021;
+4163 0021;
+4165 0021;
+4167 0021;
+4169 0021;
+416B 0021;
+416D 0021;
+416F 0021;
+4171 0021;
+4173 0021;
+4175 0021;
+4177 0021;
+4179 0021;
+417B 0021;
+417D 0021;
+417F 0021;
+4181 0021;
+4183 0021;
+4185 0021;
+4187 0021;
+4189 0021;
+418B 0021;
+418D 0021;
+418F 0021;
+4191 0021;
+4193 0021;
+4195 0021;
+4197 0021;
+4199 0021;
+419B 0021;
+419D 0021;
+419F 0021;
+41A1 0021;
+41A3 0021;
+41A5 0021;
+41A7 0021;
+41A9 0021;
+41AB 0021;
+41AD 0021;
+41AF 0021;
+41B1 0021;
+41B3 0021;
+41B5 0021;
+41B7 0021;
+41B9 0021;
+41BB 0021;
+41BD 0021;
+41BF 0021;
+41C1 0021;
+41C3 0021;
+41C5 0021;
+41C7 0021;
+41C9 0021;
+41CB 0021;
+41CD 0021;
+41CF 0021;
+41D1 0021;
+41D3 0021;
+41D5 0021;
+41D7 0021;
+41D9 0021;
+41DB 0021;
+41DD 0021;
+41DF 0021;
+41E1 0021;
+41E3 0021;
+41E5 0021;
+41E7 0021;
+41E9 0021;
+41EB 0021;
+41ED 0021;
+41EF 0021;
+41F1 0021;
+41F3 0021;
+41F5 0021;
+41F7 0021;
+41F9 0021;
+41FB 0021;
+41FD 0021;
+41FF 0021;
+4201 0021;
+2F960 0061;
+4204 0021;
+4206 0021;
+4208 0021;
+420A 0021;
+420C 0021;
+420E 0021;
+4210 0021;
+4212 0021;
+4214 0021;
+4216 0021;
+4218 0021;
+421A 0021;
+421C 0021;
+421E 0021;
+4220 0021;
+4222 0021;
+4224 0021;
+4226 0021;
+2F964 0061;
+4229 0021;
+422B 0021;
+422D 0021;
+422F 0021;
+4231 0021;
+4233 0021;
+4235 0021;
+4237 0021;
+4239 0021;
+423B 0021;
+423D 0021;
+423F 0021;
+4241 0021;
+4243 0021;
+4245 0021;
+4247 0021;
+4249 0021;
+424B 0021;
+424D 0021;
+424F 0021;
+4251 0021;
+4253 0021;
+4255 0021;
+4257 0021;
+4259 0021;
+425B 0021;
+425D 0021;
+425F 0021;
+4261 0021;
+4263 0021;
+4265 0021;
+4267 0021;
+4269 0021;
+426B 0021;
+426D 0021;
+426F 0021;
+4271 0021;
+4273 0021;
+4275 0021;
+4277 0021;
+4279 0021;
+427B 0021;
+427D 0021;
+427F 0021;
+4281 0021;
+4283 0021;
+4285 0021;
+4287 0021;
+4289 0021;
+428B 0021;
+428D 0021;
+428F 0021;
+4291 0021;
+4293 0021;
+4295 0021;
+4297 0021;
+4299 0021;
+429B 0021;
+429D 0021;
+429F 0021;
+2F967 0061;
+42A2 0021;
+42A4 0021;
+42A6 0021;
+42A8 0021;
+42AA 0021;
+42AC 0021;
+42AE 0021;
+42B0 0021;
+42B2 0021;
+42B4 0021;
+42B6 0021;
+42B8 0021;
+42BA 0021;
+42BC 0021;
+42BE 0021;
+42C0 0021;
+42C2 0021;
+42C4 0021;
+42C6 0021;
+42C8 0021;
+42CA 0021;
+42CC 0021;
+42CE 0021;
+42D0 0021;
+42D2 0021;
+42D4 0021;
+42D6 0021;
+42D8 0021;
+42DA 0021;
+42DC 0021;
+42DE 0021;
+42E0 0021;
+42E2 0021;
+42E4 0021;
+42E6 0021;
+42E8 0021;
+42EA 0021;
+42EC 0021;
+42EE 0021;
+42F0 0021;
+42F2 0021;
+42F4 0021;
+42F6 0021;
+42F8 0021;
+42FA 0021;
+42FC 0021;
+42FE 0021;
+4300 0021;
+2F96D 0061;
+4303 0021;
+4305 0021;
+4307 0021;
+4309 0021;
+430B 0021;
+430D 0021;
+430F 0021;
+4311 0021;
+4313 0021;
+4315 0021;
+4317 0021;
+4319 0021;
+431B 0021;
+431D 0021;
+431F 0021;
+4321 0021;
+4323 0021;
+4325 0021;
+4327 0021;
+4329 0021;
+432B 0021;
+432D 0021;
+432F 0021;
+4331 0021;
+4333 0021;
+2F971 0061;
+4336 0021;
+4338 0021;
+433A 0021;
+433C 0021;
+433E 0021;
+4340 0021;
+4342 0021;
+4344 0021;
+4346 0021;
+4348 0021;
+434A 0021;
+434C 0021;
+434E 0021;
+4350 0021;
+4352 0021;
+4354 0021;
+4356 0021;
+4358 0021;
+2F974 0061;
+435B 0021;
+435D 0021;
+435F 0021;
+4361 0021;
+4363 0021;
+4365 0021;
+4367 0021;
+4369 0021;
+436B 0021;
+436D 0021;
+436F 0021;
+4371 0021;
+4373 0021;
+4375 0021;
+4377 0021;
+4379 0021;
+437B 0021;
+437D 0021;
+437F 0021;
+4381 0021;
+4383 0021;
+4385 0021;
+4387 0021;
+4389 0021;
+438B 0021;
+438D 0021;
+438F 0021;
+4391 0021;
+4393 0021;
+4395 0021;
+4397 0021;
+4399 0021;
+439B 0021;
+439D 0021;
+439F 0021;
+43A1 0021;
+43A3 0021;
+43A5 0021;
+43A7 0021;
+43A9 0021;
+43AB 0021;
+43AD 0021;
+43AF 0021;
+43B1 0021;
+43B3 0021;
+43B5 0021;
+43B7 0021;
+43B9 0021;
+43BB 0021;
+43BD 0021;
+43BF 0021;
+43C1 0021;
+43C3 0021;
+43C5 0021;
+43C7 0021;
+43C9 0021;
+43CB 0021;
+43CD 0021;
+43CF 0021;
+43D1 0021;
+43D3 0021;
+43D5 0021;
+43D6 0021;
+43D8 0021;
+2F8D7 0061;
+43DB 0021;
+43DD 0021;
+43DF 0021;
+43E1 0021;
+43E3 0021;
+43E5 0021;
+43E7 0021;
+43E9 0021;
+43EB 0021;
+43ED 0021;
+43EF 0021;
+43F1 0021;
+43F3 0021;
+43F5 0021;
+43F7 0021;
+43F9 0021;
+43FB 0021;
+43FD 0021;
+43FF 0021;
+4401 0021;
+4403 0021;
+4405 0021;
+4407 0021;
+4409 0021;
+440B 0021;
+440C 0021;
+440E 0021;
+4410 0021;
+4412 0021;
+4414 0021;
+4416 0021;
+4418 0021;
+441A 0021;
+441C 0021;
+441E 0021;
+4420 0021;
+4422 0021;
+4424 0021;
+4426 0021;
+4428 0021;
+442A 0021;
+442C 0021;
+442E 0021;
+4430 0021;
+4432 0021;
+4434 0021;
+4436 0021;
+4438 0021;
+443A 0021;
+443C 0021;
+443E 0021;
+4440 0021;
+4442 0021;
+4444 0021;
+4446 0021;
+4448 0021;
+444A 0021;
+444C 0021;
+444E 0021;
+4450 0021;
+4452 0021;
+4454 0021;
+4456 0021;
+4458 0021;
+445A 0021;
+445C 0021;
+445E 0021;
+4460 0021;
+4462 0021;
+4464 0021;
+4466 0021;
+4468 0021;
+446A 0021;
+2F98E 0061;
+446D 0021;
+446F 0021;
+4471 0021;
+4473 0021;
+4475 0021;
+4477 0021;
+4479 0021;
+447B 0021;
+447D 0021;
+447F 0021;
+4481 0021;
+4483 0021;
+4485 0021;
+4487 0021;
+4489 0021;
+448B 0021;
+448D 0021;
+448F 0021;
+4491 0021;
+4493 0021;
+4495 0021;
+4497 0021;
+4499 0021;
+449B 0021;
+449D 0021;
+449F 0021;
+44A1 0021;
+44A3 0021;
+44A5 0021;
+44A7 0021;
+44A9 0021;
+44AB 0021;
+44AD 0021;
+44AF 0021;
+44B1 0021;
+44B3 0021;
+44B5 0021;
+44B7 0021;
+44B9 0021;
+44BB 0021;
+44BD 0021;
+44BF 0021;
+44C1 0021;
+44C3 0021;
+44C5 0021;
+44C7 0021;
+44C9 0021;
+44CB 0021;
+44CD 0021;
+44CF 0021;
+44D1 0021;
+44D3 0021;
+44D5 0021;
+44D7 0021;
+44D9 0021;
+44DB 0021;
+44DD 0021;
+44DF 0021;
+44E1 0021;
+44E3 0021;
+44E5 0021;
+44E7 0021;
+44E9 0021;
+44EB 0021;
+44ED 0021;
+44EF 0021;
+44F1 0021;
+44F3 0021;
+44F5 0021;
+44F7 0021;
+44F9 0021;
+44FB 0021;
+44FD 0021;
+44FF 0021;
+4501 0021;
+4503 0021;
+4505 0021;
+4507 0021;
+4509 0021;
+450B 0021;
+450D 0021;
+450F 0021;
+4511 0021;
+4513 0021;
+4515 0021;
+4517 0021;
+4519 0021;
+451B 0021;
+451D 0021;
+451F 0021;
+4521 0021;
+4523 0021;
+4525 0021;
+4527 0021;
+4529 0021;
+452B 0021;
+452C 0021;
+452E 0021;
+4530 0021;
+4532 0021;
+4534 0021;
+4536 0021;
+4538 0021;
+453A 0021;
+453C 0021;
+453E 0021;
+4540 0021;
+4542 0021;
+4544 0021;
+4546 0021;
+4548 0021;
+454A 0021;
+454C 0021;
+454E 0021;
+4550 0021;
+4552 0021;
+4554 0021;
+4556 0021;
+4558 0021;
+455A 0021;
+455C 0021;
+2F9AE 0061;
+455F 0021;
+4561 0021;
+4562 0021;
+4564 0021;
+4566 0021;
+4568 0021;
+456A 0021;
+2F9B2 0061;
+456D 0021;
+456F 0021;
+4571 0021;
+4573 0021;
+4575 0021;
+4577 0021;
+4579 0021;
+457B 0021;
+457D 0021;
+457F 0021;
+4581 0021;
+4583 0021;
+4585 0021;
+4587 0021;
+4589 0021;
+458B 0021;
+458D 0021;
+458F 0021;
+4591 0021;
+4593 0021;
+4595 0021;
+4597 0021;
+4599 0021;
+459B 0021;
+459D 0021;
+459F 0021;
+45A1 0021;
+45A3 0021;
+45A5 0021;
+45A7 0021;
+45A9 0021;
+45AB 0021;
+45AD 0021;
+45AF 0021;
+45B1 0021;
+45B3 0021;
+45B5 0021;
+45B7 0021;
+45B9 0021;
+45BB 0021;
+45BD 0021;
+45BF 0021;
+45C1 0021;
+45C3 0021;
+45C5 0021;
+45C7 0021;
+45C9 0021;
+45CB 0021;
+45CD 0021;
+45CF 0021;
+45D1 0021;
+45D3 0021;
+45D5 0021;
+45D7 0021;
+45D8 0021;
+45DA 0021;
+45DC 0021;
+45DE 0021;
+45E0 0021;
+45E2 0021;
+45E4 0021;
+45E6 0021;
+45E8 0021;
+45EA 0021;
+45EC 0021;
+45EE 0021;
+45F0 0021;
+45F2 0021;
+45F4 0021;
+45F6 0021;
+45F8 0021;
+2F9C2 0061;
+45FB 0021;
+45FD 0021;
+45FF 0021;
+4601 0021;
+4603 0021;
+4605 0021;
+4607 0021;
+4609 0021;
+460B 0021;
+460D 0021;
+460F 0021;
+4611 0021;
+4613 0021;
+4615 0021;
+4617 0021;
+4619 0021;
+461B 0021;
+461D 0021;
+461F 0021;
+4621 0021;
+4623 0021;
+4625 0021;
+4627 0021;
+4629 0021;
+462B 0021;
+462D 0021;
+462F 0021;
+4631 0021;
+4633 0021;
+4635 0021;
+4636 0021;
+4638 0021;
+463A 0021;
+463C 0021;
+463E 0021;
+4640 0021;
+4642 0021;
+4644 0021;
+4646 0021;
+4648 0021;
+464A 0021;
+464C 0021;
+464E 0021;
+4650 0021;
+4652 0021;
+4654 0021;
+4656 0021;
+4658 0021;
+465A 0021;
+465C 0021;
+465E 0021;
+4660 0021;
+4662 0021;
+4664 0021;
+4666 0021;
+4668 0021;
+466A 0021;
+466C 0021;
+466E 0021;
+4670 0021;
+4672 0021;
+4674 0021;
+4676 0021;
+4678 0021;
+467A 0021;
+467C 0021;
+467E 0021;
+4680 0021;
+4682 0021;
+4684 0021;
+4686 0021;
+4688 0021;
+468A 0021;
+468C 0021;
+468E 0021;
+4690 0021;
+4692 0021;
+4694 0021;
+4696 0021;
+4698 0021;
+469A 0021;
+469C 0021;
+469E 0021;
+46A0 0021;
+46A2 0021;
+46A4 0021;
+46A6 0021;
+46A8 0021;
+46AA 0021;
+46AC 0021;
+46AE 0021;
+46B0 0021;
+46B2 0021;
+46B4 0021;
+46B6 0021;
+46B8 0021;
+46BA 0021;
+46BC 0021;
+46BE 0021;
+46BF 0021;
+46C1 0021;
+46C3 0021;
+46C5 0021;
+46C7 0021;
+46C8 0021;
+46CA 0021;
+46CC 0021;
+46CE 0021;
+46D0 0021;
+46D2 0021;
+46D4 0021;
+46D6 0021;
+46D8 0021;
+46DA 0021;
+46DC 0021;
+46DE 0021;
+46E0 0021;
+46E2 0021;
+46E4 0021;
+46E6 0021;
+46E8 0021;
+46EA 0021;
+46EC 0021;
+46EE 0021;
+46F0 0021;
+46F2 0021;
+46F4 0021;
+46F6 0021;
+46F8 0021;
+46FA 0021;
+46FC 0021;
+46FE 0021;
+4700 0021;
+4702 0021;
+4704 0021;
+4706 0021;
+4708 0021;
+470A 0021;
+470C 0021;
+470E 0021;
+4710 0021;
+4712 0021;
+4714 0021;
+4716 0021;
+4718 0021;
+471A 0021;
+471C 0021;
+471E 0021;
+4720 0021;
+4722 0021;
+4724 0021;
+4726 0021;
+4728 0021;
+472A 0021;
+472C 0021;
+472E 0021;
+4730 0021;
+4732 0021;
+4734 0021;
+4736 0021;
+4738 0021;
+473A 0021;
+473C 0021;
+473E 0021;
+4740 0021;
+4742 0021;
+4744 0021;
+4746 0021;
+4748 0021;
+474A 0021;
+474C 0021;
+474E 0021;
+4750 0021;
+4752 0021;
+4754 0021;
+4756 0021;
+4758 0021;
+475A 0021;
+475C 0021;
+475E 0021;
+4760 0021;
+4762 0021;
+4764 0021;
+4766 0021;
+4768 0021;
+476A 0021;
+476C 0021;
+476E 0021;
+4770 0021;
+4772 0021;
+4774 0021;
+4776 0021;
+4778 0021;
+477A 0021;
+477C 0021;
+477E 0021;
+4780 0021;
+4782 0021;
+4784 0021;
+4786 0021;
+4788 0021;
+478A 0021;
+478C 0021;
+478E 0021;
+4790 0021;
+4792 0021;
+4794 0021;
+4796 0021;
+4798 0021;
+479A 0021;
+479C 0021;
+479E 0021;
+47A0 0021;
+47A2 0021;
+47A4 0021;
+47A6 0021;
+47A8 0021;
+47AA 0021;
+47AC 0021;
+47AE 0021;
+47B0 0021;
+47B2 0021;
+47B4 0021;
+47B6 0021;
+47B8 0021;
+47BA 0021;
+47BC 0021;
+47BE 0021;
+47C0 0021;
+47C2 0021;
+47C4 0021;
+47C6 0021;
+47C8 0021;
+47CA 0021;
+47CC 0021;
+47CE 0021;
+47D0 0021;
+47D2 0021;
+47D4 0021;
+47D6 0021;
+47D8 0021;
+47DA 0021;
+47DC 0021;
+47DE 0021;
+47E0 0021;
+47E2 0021;
+47E4 0021;
+47E6 0021;
+47E8 0021;
+47EA 0021;
+47EC 0021;
+47EE 0021;
+47F0 0021;
+47F2 0021;
+47F4 0021;
+47F6 0021;
+47F8 0021;
+47FA 0021;
+47FC 0021;
+47FE 0021;
+4800 0021;
+4802 0021;
+4804 0021;
+4806 0021;
+4808 0021;
+480A 0021;
+480C 0021;
+480E 0021;
+4810 0021;
+4812 0021;
+4814 0021;
+4816 0021;
+4818 0021;
+481A 0021;
+481C 0021;
+481E 0021;
+4820 0021;
+4822 0021;
+4824 0021;
+4826 0021;
+4828 0021;
+482A 0021;
+482C 0021;
+482E 0021;
+4830 0021;
+4832 0021;
+4834 0021;
+4836 0021;
+4838 0021;
+483A 0021;
+483C 0021;
+483E 0021;
+4840 0021;
+4842 0021;
+4844 0021;
+4846 0021;
+4848 0021;
+484A 0021;
+484C 0021;
+484E 0021;
+4850 0021;
+4852 0021;
+4854 0021;
+4856 0021;
+4858 0021;
+485A 0021;
+485C 0021;
+485E 0021;
+4860 0021;
+4862 0021;
+4864 0021;
+4866 0021;
+4868 0021;
+486A 0021;
+486C 0021;
+486E 0021;
+4870 0021;
+4872 0021;
+4874 0021;
+4876 0021;
+4878 0021;
+487A 0021;
+487C 0021;
+487E 0021;
+4880 0021;
+4882 0021;
+4884 0021;
+4886 0021;
+4888 0021;
+488A 0021;
+488C 0021;
+488E 0021;
+4890 0021;
+4892 0021;
+4894 0021;
+4896 0021;
+4898 0021;
+489A 0021;
+489C 0021;
+489E 0021;
+48A0 0021;
+48A2 0021;
+48A4 0021;
+48A6 0021;
+48A8 0021;
+48AA 0021;
+48AC 0021;
+48AE 0021;
+48B0 0021;
+48B2 0021;
+48B4 0021;
+48B6 0021;
+48B8 0021;
+48BA 0021;
+48BC 0021;
+48BE 0021;
+48C0 0021;
+48C2 0021;
+48C4 0021;
+48C6 0021;
+48C8 0021;
+48CA 0021;
+48CC 0021;
+48CE 0021;
+48D0 0021;
+48D2 0021;
+48D4 0021;
+48D6 0021;
+48D8 0021;
+48DA 0021;
+48DC 0021;
+48DE 0021;
+48E0 0021;
+48E2 0021;
+48E4 0021;
+48E6 0021;
+48E8 0021;
+48EA 0021;
+48EC 0021;
+48EE 0021;
+48F0 0021;
+48F2 0021;
+48F4 0021;
+48F6 0021;
+48F8 0021;
+48FA 0021;
+48FC 0021;
+48FE 0021;
+4900 0021;
+4902 0021;
+4904 0021;
+4906 0021;
+4908 0021;
+490A 0021;
+490C 0021;
+490E 0021;
+4910 0021;
+4912 0021;
+4914 0021;
+4916 0021;
+4918 0021;
+491A 0021;
+491C 0021;
+491E 0021;
+4920 0021;
+4922 0021;
+4924 0021;
+4926 0021;
+4928 0021;
+492A 0021;
+492C 0021;
+492E 0021;
+4930 0021;
+4932 0021;
+4934 0021;
+4936 0021;
+4938 0021;
+493A 0021;
+493C 0021;
+493E 0021;
+4940 0021;
+4942 0021;
+4944 0021;
+4946 0021;
+4948 0021;
+494A 0021;
+494C 0021;
+494E 0021;
+4950 0021;
+4952 0021;
+4954 0021;
+4956 0021;
+4958 0021;
+495A 0021;
+495C 0021;
+495E 0021;
+4960 0021;
+4962 0021;
+4964 0021;
+4966 0021;
+4968 0021;
+496A 0021;
+496C 0021;
+496E 0021;
+4970 0021;
+4972 0021;
+4974 0021;
+4976 0021;
+4978 0021;
+497A 0021;
+497C 0021;
+497E 0021;
+4980 0021;
+4982 0021;
+4984 0021;
+4986 0021;
+4988 0021;
+498A 0021;
+498C 0021;
+498E 0021;
+4990 0021;
+4992 0021;
+4994 0021;
+2F9EF 0061;
+4997 0021;
+4999 0021;
+499B 0021;
+499D 0021;
+499F 0021;
+49A1 0021;
+49A3 0021;
+49A5 0021;
+49A7 0021;
+49A9 0021;
+49AB 0021;
+49AD 0021;
+49AF 0021;
+49B1 0021;
+49B3 0021;
+49B5 0021;
+49B7 0021;
+49B9 0021;
+49BB 0021;
+49BD 0021;
+49BF 0021;
+49C1 0021;
+49C3 0021;
+49C5 0021;
+49C7 0021;
+49C9 0021;
+49CB 0021;
+49CD 0021;
+49CF 0021;
+49D1 0021;
+49D3 0021;
+49D5 0021;
+49D7 0021;
+49D9 0021;
+49DB 0021;
+49DD 0021;
+49DF 0021;
+49E1 0021;
+49E3 0021;
+49E5 0021;
+2F9F2 0061;
+49E8 0021;
+49EA 0021;
+49EC 0021;
+49EE 0021;
+49F0 0021;
+49F2 0021;
+49F4 0021;
+49F6 0021;
+49F8 0021;
+49FA 0021;
+49FC 0021;
+49FE 0021;
+4A00 0021;
+4A02 0021;
+4A04 0021;
+4A06 0021;
+4A08 0021;
+4A0A 0021;
+4A0C 0021;
+4A0E 0021;
+4A10 0021;
+4A12 0021;
+4A14 0021;
+4A16 0021;
+4A18 0021;
+4A1A 0021;
+4A1C 0021;
+4A1E 0021;
+4A20 0021;
+4A22 0021;
+4A24 0021;
+4A26 0021;
+4A28 0021;
+4A2A 0021;
+4A2C 0021;
+4A2E 0021;
+4A30 0021;
+4A32 0021;
+4A34 0021;
+4A36 0021;
+4A38 0021;
+4A3A 0021;
+4A3C 0021;
+4A3E 0021;
+4A40 0021;
+4A42 0021;
+4A44 0021;
+4A46 0021;
+4A48 0021;
+4A4A 0021;
+4A4C 0021;
+4A4E 0021;
+4A50 0021;
+4A52 0021;
+4A54 0021;
+4A56 0021;
+4A58 0021;
+4A5A 0021;
+4A5C 0021;
+4A5E 0021;
+4A60 0021;
+4A62 0021;
+4A64 0021;
+4A66 0021;
+4A68 0021;
+4A6A 0021;
+4A6C 0021;
+4A6E 0021;
+4A6F 0021;
+4A71 0021;
+4A73 0021;
+4A75 0021;
+2F9F9 0061;
+4A78 0021;
+4A7A 0021;
+4A7C 0021;
+4A7E 0021;
+4A80 0021;
+4A82 0021;
+4A84 0021;
+4A86 0021;
+4A88 0021;
+4A8A 0021;
+4A8C 0021;
+4A8E 0021;
+4A90 0021;
+4A92 0021;
+4A94 0021;
+4A96 0021;
+4A98 0021;
+4A9A 0021;
+4A9C 0021;
+4A9E 0021;
+4AA0 0021;
+4AA2 0021;
+4AA4 0021;
+4AA6 0021;
+4AA8 0021;
+4AAA 0021;
+4AAC 0021;
+4AAE 0021;
+4AB0 0021;
+4AB2 0021;
+4AB3 0021;
+4AB5 0021;
+4AB7 0021;
+4AB9 0021;
+4ABB 0021;
+4ABD 0021;
+4ABF 0021;
+4AC1 0021;
+4AC3 0021;
+4AC5 0021;
+4AC7 0021;
+4AC9 0021;
+4ACB 0021;
+4ACD 0021;
+4ACF 0021;
+4AD1 0021;
+4AD3 0021;
+4AD5 0021;
+4AD7 0021;
+4AD9 0021;
+4ADB 0021;
+4ADD 0021;
+4ADF 0021;
+4AE1 0021;
+4AE3 0021;
+4AE5 0021;
+4AE7 0021;
+4AE9 0021;
+4AEB 0021;
+4AED 0021;
+4AEF 0021;
+4AF1 0021;
+4AF3 0021;
+4AF5 0021;
+4AF7 0021;
+4AF9 0021;
+4AFB 0021;
+4AFD 0021;
+4AFF 0021;
+4B01 0021;
+4B03 0021;
+4B05 0021;
+4B07 0021;
+4B09 0021;
+4B0B 0021;
+4B0D 0021;
+4B0F 0021;
+4B11 0021;
+4B13 0021;
+4B15 0021;
+4B17 0021;
+4B19 0021;
+4B1B 0021;
+4B1D 0021;
+4B1F 0021;
+4B21 0021;
+4B23 0021;
+4B25 0021;
+4B27 0021;
+4B29 0021;
+4B2B 0021;
+4B2D 0021;
+4B2F 0021;
+4B31 0021;
+4B33 0021;
+4B34 0021;
+4B36 0021;
+4B38 0021;
+4B3A 0021;
+4B3C 0021;
+4B3E 0021;
+4B40 0021;
+4B42 0021;
+4B44 0021;
+4B46 0021;
+4B48 0021;
+4B4A 0021;
+4B4C 0021;
+4B4E 0021;
+4B50 0021;
+4B52 0021;
+4B54 0021;
+4B56 0021;
+4B58 0021;
+4B5A 0021;
+4B5C 0021;
+4B5E 0021;
+4B60 0021;
+4B62 0021;
+4B64 0021;
+4B66 0021;
+4B68 0021;
+4B6A 0021;
+4B6C 0021;
+4B6E 0021;
+4B70 0021;
+4B72 0021;
+4B74 0021;
+4B76 0021;
+4B78 0021;
+4B7A 0021;
+4B7C 0021;
+4B7E 0021;
+4B80 0021;
+4B82 0021;
+4B84 0021;
+4B86 0021;
+4B88 0021;
+4B8A 0021;
+4B8C 0021;
+4B8E 0021;
+4B90 0021;
+4B92 0021;
+4B94 0021;
+4B96 0021;
+4B98 0021;
+4B9A 0021;
+4B9C 0021;
+4B9E 0021;
+4BA0 0021;
+4BA2 0021;
+4BA4 0021;
+4BA6 0021;
+4BA8 0021;
+4BAA 0021;
+4BAC 0021;
+4BAE 0021;
+4BB0 0021;
+4BB2 0021;
+4BB4 0021;
+4BB6 0021;
+4BB8 0021;
+4BBA 0021;
+4BBC 0021;
+4BBE 0021;
+4BC0 0021;
+4BC2 0021;
+4BC4 0021;
+4BC6 0021;
+4BC8 0021;
+4BCA 0021;
+4BCC 0021;
+4BCE 0021;
+4BCF 0021;
+4BD1 0021;
+4BD3 0021;
+4BD5 0021;
+4BD7 0021;
+4BD9 0021;
+4BDB 0021;
+4BDD 0021;
+4BDF 0021;
+4BE1 0021;
+4BE3 0021;
+4BE5 0021;
+4BE7 0021;
+4BE9 0021;
+4BEB 0021;
+4BED 0021;
+4BEF 0021;
+4BF1 0021;
+4BF3 0021;
+4BF5 0021;
+4BF7 0021;
+4BF9 0021;
+4BFB 0021;
+4BFD 0021;
+4BFF 0021;
+4C01 0021;
+4C03 0021;
+4C05 0021;
+4C07 0021;
+4C09 0021;
+4C0B 0021;
+4C0D 0021;
+4C0F 0021;
+4C11 0021;
+4C13 0021;
+4C15 0021;
+4C17 0021;
+4C19 0021;
+4C1B 0021;
+4C1D 0021;
+4C1F 0021;
+4C21 0021;
+4C23 0021;
+4C25 0021;
+4C27 0021;
+4C29 0021;
+4C2B 0021;
+4C2D 0021;
+4C2F 0021;
+4C31 0021;
+4C33 0021;
+4C35 0021;
+4C37 0021;
+4C39 0021;
+4C3B 0021;
+4C3D 0021;
+4C3F 0021;
+4C41 0021;
+4C43 0021;
+4C45 0021;
+4C47 0021;
+4C49 0021;
+4C4B 0021;
+4C4D 0021;
+4C4F 0021;
+4C51 0021;
+4C53 0021;
+4C55 0021;
+4C57 0021;
+4C59 0021;
+4C5B 0021;
+4C5D 0021;
+4C5F 0021;
+4C61 0021;
+4C63 0021;
+4C65 0021;
+4C67 0021;
+4C69 0021;
+4C6B 0021;
+4C6D 0021;
+4C6F 0021;
+4C71 0021;
+4C73 0021;
+4C75 0021;
+4C77 0021;
+4C79 0021;
+4C7B 0021;
+4C7D 0021;
+4C7F 0021;
+4C81 0021;
+4C83 0021;
+4C85 0021;
+4C87 0021;
+4C89 0021;
+4C8B 0021;
+4C8D 0021;
+4C8F 0021;
+4C91 0021;
+4C93 0021;
+4C95 0021;
+4C97 0021;
+4C99 0021;
+4C9B 0021;
+4C9D 0021;
+4C9F 0021;
+4CA1 0021;
+4CA3 0021;
+4CA5 0021;
+4CA7 0021;
+4CA9 0021;
+4CAB 0021;
+4CAD 0021;
+4CAF 0021;
+4CB1 0021;
+4CB3 0021;
+4CB5 0021;
+4CB7 0021;
+4CB9 0021;
+4CBB 0021;
+4CBD 0021;
+4CBF 0021;
+4CC1 0021;
+4CC3 0021;
+4CC5 0021;
+4CC7 0021;
+4CC9 0021;
+4CCB 0021;
+4CCD 0021;
+2FA0D 0061;
+4CD0 0021;
+4CD2 0021;
+4CD4 0021;
+4CD6 0021;
+4CD8 0021;
+4CDA 0021;
+4CDC 0021;
+4CDE 0021;
+4CE0 0021;
+4CE2 0021;
+4CE4 0021;
+4CE6 0021;
+4CE8 0021;
+4CEA 0021;
+4CEC 0021;
+2FA0E 0061;
+4CEF 0021;
+4CF1 0021;
+4CF3 0021;
+4CF5 0021;
+4CF7 0021;
+2FA11 0061;
+4CFA 0021;
+4CFC 0021;
+4CFE 0021;
+4D00 0021;
+4D02 0021;
+4D04 0021;
+4D06 0021;
+4D08 0021;
+4D0A 0021;
+4D0C 0021;
+4D0E 0021;
+4D10 0021;
+4D12 0021;
+4D14 0021;
+4D16 0021;
+4D18 0021;
+4D1A 0021;
+4D1C 0021;
+4D1E 0021;
+4D20 0021;
+4D22 0021;
+4D24 0021;
+4D26 0021;
+4D28 0021;
+4D2A 0021;
+4D2C 0021;
+4D2E 0021;
+4D30 0021;
+4D32 0021;
+4D34 0021;
+4D36 0021;
+4D38 0021;
+4D3A 0021;
+4D3C 0021;
+4D3E 0021;
+4D40 0021;
+4D42 0021;
+4D44 0021;
+4D46 0021;
+4D48 0021;
+4D4A 0021;
+4D4C 0021;
+4D4E 0021;
+4D50 0021;
+4D52 0021;
+4D54 0021;
+4D56 0021;
+4D57 0021;
+4D59 0021;
+4D5B 0021;
+4D5D 0021;
+4D5F 0021;
+4D61 0021;
+4D63 0021;
+4D65 0021;
+4D67 0021;
+4D69 0021;
+4D6B 0021;
+4D6D 0021;
+4D6F 0021;
+4D71 0021;
+4D73 0021;
+4D75 0021;
+4D77 0021;
+4D79 0021;
+4D7B 0021;
+4D7D 0021;
+4D7F 0021;
+4D81 0021;
+4D83 0021;
+4D85 0021;
+4D87 0021;
+4D89 0021;
+4D8B 0021;
+4D8D 0021;
+4D8F 0021;
+4D91 0021;
+4D93 0021;
+4D95 0021;
+4D97 0021;
+4D99 0021;
+4D9B 0021;
+4D9D 0021;
+4D9F 0021;
+4DA1 0021;
+4DA3 0021;
+4DA5 0021;
+4DA7 0021;
+4DA9 0021;
+4DAB 0021;
+4DAD 0021;
+4DAF 0021;
+4DB1 0021;
+4DB3 0021;
+4DB5 0021;
+20001 0021;
+20003 0021;
+20005 0021;
+2F812 0021;
+2F816 0021;
+2F9D9 0021;
+2F834 0021;
+2F859 0021;
+2F861 0021;
+2F871 0021;
+2F87B 0021;
+2F889 0021;
+2F891 0021;
+2F8A4 0021;
+FACF 0021;
+2F8BE 0021;
+2F897 0021;
+2F989 0021;
+2F8DD 0021;
+2F8E3 0021;
+2F8F0 0021;
+2F8F9 0021;
+2F906 0021;
+2F910 0021;
+2F91D 0021;
+2F923 0021;
+2F927 0021;
+2F937 0021;
+2F93C 0021;
+2F942 0021;
+2F943 0021;
+FAD5 0021;
+2F952 0021;
+2F955 0021;
+2F95D 0021;
+2F961 0021;
+FAD6 0021;
+2F898 0021;
+2F973 0021;
+2F977 0021;
+2F97C 0021;
+2F987 0021;
+2F997 0021;
+2F9A6 0021;
+2F9AD 0021;
+2F9B1 0021;
+2F9C5 0021;
+2F9CC 0021;
+FAD7 0021;
+2F9E0 0021;
+2F9E5 0021;
+2F9F1 0021;
+2F81C 0021;
+2F9FB 0021;
+2FA01 0021;
+2FA10 0021;
+2FA13 0021;
+2F88F 0021;
+2A6D1 0021;
+2A6D3 0021;
+2A6D5 0021;
+0378 0021;
+E001 0021;
+E003 0021;
+E005 0021;
+F8FB 0021;
+F8FD 0021;
+F8FF 0021;
+C0000 0021;
+E0000 0021;
+E0003 0021;
+E0005 0021;
+F0001 0021;
+F0003 0021;
+F0005 0021;
+F00F9 0021;
+F00FB 0021;
+F00FD 0021;
+FFF01 0021;
+FFF03 0021;
+FFF05 0021;
+FFFF9 0021;
+FFFFB 0021;
+FFFFD 0021;
+100001 0021;
+100003 0021;
+100005 0021;
+1000F9 0021;
+1000FB 0021;
+1000FD 0021;
+10FF01 0021;
+10FF03 0021;
+10FF05 0021;
+10FFF9 0021;
+10FFFB 0021;
+10FFFD 0021;
+10FFFD 0062;
diff --git a/src/com/ibm/icu/dev/data/IDNATestInput.txt b/src/com/ibm/icu/dev/data/IDNATestInput.txt
new file mode 100644
index 0000000..adad095
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/IDNATestInput.txt
@@ -0,0 +1,1266 @@
+=====
+desc: Copyright 2003-2005 http://idnconnect.jdna.jp/testbed.html 
+namebase: <00ED>dn
+nameutf8: ??dn
+namezone: xn--dn-mja
+failzone1: 
+failzone2: 
+token: 25029153
+passfail: pass
+type: toascii
+
+=====
+desc: 1-1-1 Has one IDN
+namebase: <00ED>dn
+nameutf8: ??dn
+namezone: xn--dn-mja
+failzone1: 
+failzone2: 
+token: 25029153
+passfail: pass
+type: toascii
+
+=====
+desc: 1-1-2 Has two IDNs
+namebase: <00EB>x.<00ED>dn
+nameutf8: ??x.??dn
+namezone: xn--x-ega.xn--dn-mja
+failzone1: 
+failzone2: 
+token: 02721141
+passfail: pass
+type: toascii
+
+=====
+desc: 1-2-1 Latin-1
+namebase: <00E5><00FE><00E7>
+nameutf8: ??????
+namezone: xn--5cae2e
+failzone1: 
+failzone2: 
+token: 41542620
+passfail: pass
+type: toascii
+
+=====
+desc: 1-2-2 Latin Extended A
+namebase: <0103>b<0109>
+nameutf8: ??b??
+namezone: xn--b-rhat
+failzone1: 
+failzone2: 
+token: 72238617
+passfail: pass
+type: toascii
+
+=====
+desc: 1-2-3 Latin Extended B
+namebase: <0227><0180><0188>
+nameutf8: ??????
+namezone: xn--lhaq98b
+failzone1: 
+failzone2: 
+token: 48464361
+passfail: pass
+type: toascii
+
+=====
+desc: 1-2-4 Latin Extended Additional
+namebase: <1E01><1E03><1E09>
+nameutf8: ?????????
+namezone: xn--2fges
+failzone1: 
+failzone2: 
+token: 49301230
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-1 Han
+namebase: <4E3F><4EBA><5C38>
+nameutf8: ?????????
+namezone: xn--xiqplj17a
+failzone1: 
+failzone2: 
+token: 58367113
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-2 Hiragana
+namebase: <304B><304C><304D>
+nameutf8: ?????????
+namezone: xn--u8jcd
+failzone1: 
+failzone2: 
+token: 57006197
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-3 Katakana
+namebase: <30AB><30AC><30AD>
+nameutf8: ?????????
+namezone: xn--lckcd
+failzone1: 
+failzone2: 
+token: 81826992
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-4 Hangul Jamo
+namebase: <1100><1161><11A8>
+nameutf8: ?????????
+namezone: xn--p39a
+failzone1: xn--ypd8qrh
+failzone2: 
+token: 44228346
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-5 Hangul
+namebase: <AC69><B4C6><C03A>
+nameutf8: ?????????
+namezone: xn--o69aq2nl0j
+failzone1: 
+failzone2: 
+token: 79235608
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-6 Yi
+namebase: <A00A><A020><A2B8>
+nameutf8: ?????????
+namezone: xn--6l7arby7j
+failzone1: 
+failzone2: 
+token: 99549720
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-7 Greek
+namebase: <03B1><03B2><03B3>
+nameutf8: ??????
+namezone: xn--mxacd
+failzone1: 
+failzone2: 
+token: 83859912
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-8 Greek Extended
+namebase: <1F02><1F26><1F55>
+nameutf8: ?????????
+namezone: xn--fng7dpg
+failzone1: 
+failzone2: 
+token: 22501339
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-9 Cyrillic
+namebase: <0430><0431><0432>
+nameutf8: ??????
+namezone: xn--80acd
+failzone1: 
+failzone2: 
+token: 98871751
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-10 Armeian
+namebase: <0561><0562><0563>
+nameutf8: ??????
+namezone: xn--y9acd
+failzone1: 
+failzone2: 
+token: 23687015
+passfail: pass
+type: toascii
+
+=====
+desc: 1-3-11 Georgian
+namebase: <10D0><10D1><10D2>
+nameutf8: ?????????
+namezone: xn--lodcd
+failzone1: 
+failzone2: 
+token: 70499589
+passfail: pass
+type: toascii
+
+=====
+desc: 1-4-1 Symbols
+namebase: <2221><21BA><2282>
+nameutf8: ?????????
+namezone: xn--b7gxomk
+failzone1: 
+failzone2: 
+token: 24617638
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-1 Devanagari
+namebase: <0915><0916><0917>
+nameutf8: ?????????
+namezone: xn--11bcd
+failzone1: 
+failzone2: 
+token: 18477223
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-2 Bengali
+namebase: <0995><0996><0997>
+nameutf8: ?????????
+namezone: xn--p5bcd
+failzone1: 
+failzone2: 
+token: 11477904
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-3 Gurmukhi
+namebase: <0A15><0A16><0A17>
+nameutf8: ?????????
+namezone: xn--d9bcd
+failzone1: 
+failzone2: 
+token: 71543506
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-4 Gujarati
+namebase: <0A95><0A96><0A97>
+nameutf8: ?????????
+namezone: xn--0dccd
+failzone1: 
+failzone2: 
+token: 75268760
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-5 Oriya
+namebase: <0B15><0B16><0B17>
+nameutf8: ?????????
+namezone: xn--ohccd
+failzone1: 
+failzone2: 
+token: 36079747
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-6 Tamil
+namebase: <0B95><0B99><0B9A>
+nameutf8: ?????????
+namezone: xn--clcid
+failzone1: 
+failzone2: 
+token: 39841446
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-7 Telugu
+namebase: <0C15><0C16><0C17>
+nameutf8: ?????????
+namezone: xn--zoccd
+failzone1: 
+failzone2: 
+token: 34438808
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-8 Kannada
+namebase: <0C95><0C96><0C97>
+nameutf8: ?????????
+namezone: xn--nsccd
+failzone1: 
+failzone2: 
+token: 42303465
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-9 Malayalam
+namebase: <0D15><0D16><0D17>
+nameutf8: ?????????
+namezone: xn--bwccd
+failzone1: 
+failzone2: 
+token: 11813559
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-10 Sinhala
+namebase: <0D9A><0D9B><0D9C>
+nameutf8: ?????????
+namezone: xn--3zccd
+failzone1: 
+failzone2: 
+token: 89823209
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-11 Thai
+namebase: <0E01><0E02><0E03>
+nameutf8: ?????????
+namezone: xn--12ccd
+failzone1: 
+failzone2: 
+token: 94992842
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-12 Lao
+namebase: <0E81><0E82><0E84>
+nameutf8: ?????????
+namezone: xn--p6ccg
+failzone1: 
+failzone2: 
+token: 42424338
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-13 Tibetan
+namebase: <0F40><0F41><0F42>
+nameutf8: ?????????
+namezone: xn--5cdcd
+failzone1: 
+failzone2: 
+token: 26962778
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-14 Myanmar
+namebase: <1000><1001><1002>
+nameutf8: ?????????
+namezone: xn--nidcd
+failzone1: 
+failzone2: 
+token: 09824611
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-15 Khmer
+namebase: <1780><1781><1782>
+nameutf8: ?????????
+namezone: xn--i2ecd
+failzone1: 
+failzone2: 
+token: 48071156
+passfail: pass
+type: toascii
+
+=====
+desc: 1-5-16 Mongolian
+namebase: <1820><1821><1822>
+nameutf8: ?????????
+namezone: xn--26ecd
+failzone1: 
+failzone2: 
+token: 40131572
+passfail: pass
+type: toascii
+
+=====
+desc: 1-6-1 Arabic
+namebase: <0627><0628><0629>
+nameutf8: ??????
+namezone: xn--mgbcd
+failzone1: 
+failzone2: 
+token: 06414817
+passfail: pass
+type: toascii
+
+=====
+desc: 1-6-2 Hebrew
+namebase: <05D0><05D1><05D2>
+nameutf8: ??????
+namezone: xn--4dbcd
+failzone1: 
+failzone2: 
+token: 41996705
+passfail: pass
+type: toascii
+
+=====
+desc: 1-6-3 Syriac
+namebase: <0710><0711><0712>
+nameutf8: ??????
+namezone: xn--9mbcd
+failzone1: 
+failzone2: 
+token: 77925080
+passfail: pass
+type: toascii
+
+=====
+desc: 1-7-1 ASCII and non-Latin
+namebase: abc<30AB><30AC><30AD>
+nameutf8: abc?????????
+namezone: xn--abc-mj4bfg
+failzone1: 
+failzone2: 
+token: 14333380
+passfail: pass
+type: toascii
+
+=====
+desc: 1-7-2 Latin (non-ASCII) and non-Latin
+namebase: <00E5><00FE><00E7><30AB><30AC><30AD>
+nameutf8: ???????????????
+namezone: xn--5cae2e328wfag
+failzone1: 
+failzone2: 
+token: 00848299
+passfail: pass
+type: toascii
+
+=====
+desc: 2-3-1-1 If UseSTD3ASCIIRules: Includes ! before Nameprep
+namebase: <00ED><0021>dn
+nameutf8: ??!dn
+namezone: 
+failzone1: xn--!dn-qma
+failzone2: 
+token: 89571181
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-1-2 If UseSTD3ASCIIRules: Includes $ before Nameprep
+namebase: <00ED><0024>dn
+nameutf8: ??$dn
+namezone: 
+failzone1: xn--$dn-qma
+failzone2: 
+token: 06965937
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-1-3 If UseSTD3ASCIIRules: Includes + before Nameprep
+namebase: <00ED><002B>dn
+nameutf8: ??+dn
+namezone: 
+failzone1: xn--+dn-qma
+failzone2: 
+token: 98967951
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-2-1 If UseSTD3ASCIIRules: Leading hyphen before Nameprep
+namebase: <002D><00ED>1dn
+nameutf8: -??1dn
+namezone: 
+failzone1: xn---1dn-vpa
+failzone2: 
+token: 65457100
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-2-2 If UseSTD3ASCIIRules: Trailing hyphen before Nameprep
+namebase: <00ED>1dn<002D>
+nameutf8: ??1dn-
+namezone: 
+failzone1: xn--1dn--upa
+failzone2: 
+token: 85629714
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-3-1 If UseSTD3ASCIIRules: Gets a + after Nameprep
+namebase: <00ED><FF0B>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja0331x
+failzone2: 
+token: 95236620
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-3-2 If UseSTD3ASCIIRules: Gets a = after Nameprep
+namebase: <00ED><207C>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja0343a
+failzone2: 
+token: 04960664
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-4-1 If UseSTD3ASCIIRules: Leading hyphen after Nameprep
+namebase: <FE63><00ED>2dn
+nameutf8: ?????2dn
+namezone: 
+failzone1: xn--2dn-qma32863a
+failzone2: xn---2dn-vpa
+token: 53512069
+passfail: fail
+type: toascii
+
+=====
+desc: 2-3-4-2 If UseSTD3ASCIIRules: Trailing hyphen after Nameprep
+namebase: <00ED>2dn<FF0D>
+nameutf8: ??2dn???
+namezone: 
+failzone1: xn--2dn-qma79363a
+failzone2: xn--2dn--upa
+token: 39938653
+passfail: fail
+type: toascii
+
+=====
+desc: 2-4-1 All-ASCII check, Latin
+namebase: <00B9>1
+nameutf8: ??1
+namezone: 11
+failzone1: 
+failzone2: 
+token: 43611374
+passfail: pass
+type: toascii
+
+=====
+desc: 2-4-2 All-ASCII check, symbol
+namebase: <2165>vi
+nameutf8: ???vi
+namezone: vivi
+failzone1: 
+failzone2: 
+token: 79939993
+passfail: pass
+type: toascii
+
+=====
+desc: 2-4-3 All-ASCII check, sharp S
+namebase: <00DF>ss
+nameutf8: ??ss
+namezone: ssss
+failzone1: 
+failzone2: 
+token: 71292530
+passfail: pass
+type: toascii
+
+=====
+desc: 2-5-1 ACE prefix exists before Nameprep
+namebase: xn--<00EF>dn
+nameutf8: xn--??dn
+namezone: 
+failzone1: xn--xn--dn-sja
+failzone2: xn--dn-sja
+token: 32841515
+passfail: fail
+type: toascii
+
+=====
+desc: 2-5-2 ACE prefix appears after Nameprep
+namebase: <2179>n--<00E4>dn
+nameutf8: ???n--??dn
+namezone: 
+failzone1: xn--xn--dn-uia
+failzone2: xn--dn-uia
+token: 52994631
+passfail: fail
+type: toascii
+
+=====
+desc: 2-8-1 Zero-length label after Nameprep
+namebase: <00AD>
+nameutf8: 
+namezone: 
+failzone1: xn--kba
+failzone2: xn--
+token: 18420037
+passfail: fail
+type: toascii
+
+=====
+desc: 2-9-1 U+3002 acts as a label separator
+namebase: 3002-test<3002><00ED>dn
+nameutf8: 3002-test?????dn
+namezone: 3002-test.xn--dn-mja
+failzone1: xn--3002-testdn-wcb2087m
+failzone2: 
+token: 14217422
+passfail: pass
+type: toascii
+
+=====
+desc: 2-9-2 U+FF0E acts as a label separator
+namebase: ff0e-test<FF0E><00ED>dn
+nameutf8: ff0e-test?????dn
+namezone: ff0e-test.xn--dn-mja
+failzone1: xn--ff0e-testdn-wcb45865f
+failzone2: 
+token: 94579179
+passfail: pass
+type: toascii
+
+=====
+desc: 2-9-3 U+FF61 acts as a label separator
+namebase: ff61-test<FF61><00ED>dn
+nameutf8: ff61-test?????dn
+namezone: ff61-test.xn--dn-mja
+failzone1: xn--ff61-testdn-wcb33975f
+failzone2: 
+token: 27084042
+passfail: pass
+type: toascii
+
+=====
+desc: 3-2-1 Sharp S conversion; should display as m<00EB>ss
+namebase: xn--m<00DF>-jma
+nameutf8: xn--m??-jma
+namezone: m<00EB>ss
+failzone1: 
+failzone2: 
+token: 85142449
+passfail: pass
+type: tounicode
+
+=====
+desc: 3-3-1 Old prefix; should not display as Unicode;<icu> ICU will treat this as ASCII. This sequence is not explicitly prohibited by the RFC.</icu>
+namebase: iesg--dn-mja
+nameutf8: iesg--dn-mja
+namezone: 
+failzone1: 
+failzone2: 
+token: 35996358
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-3-2 Old prefix; should not display as Unicode;<icu> ICU will treat this as ASCII. This sequence is not explicitly prohibited by the RFC.</icu>
+namebase: iesgdn-mja
+nameutf8: iesgdn-mja
+namezone: 
+failzone1: 
+failzone2: 
+token: 13693467
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-3-3 Old prefix; should not display as Unicode;<icu> ICU will treat this as ASCII. This sequence is not explicitly prohibited by the RFC.</icu>
+namebase: bq--dn-mja
+nameutf8: bq--dn-mja
+namezone: 
+failzone1: 
+failzone2: 
+token: 77049719
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-5-1 Non-ASCII code point before the last hyphen;\
+ should not display as Unicode
+namebase: xn--d<00F1>-mja
+nameutf8: xn--d??-mja
+namezone: 
+failzone1: 
+failzone2: 
+token: 53043171
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-5-2 Non-alphanumeric code point after the last hyphen;\
+ should not display as Unicode
+namebase: xn--dn-mj+
+nameutf8: xn--dn-mj+
+namezone: 
+failzone1: 
+failzone2: 
+token: 24626494
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-5-3 Ends in the middle of an encoded delta value;\
+ should not display as Unicode
+namebase: xn--dn-mj
+nameutf8: xn--dn-mj
+namezone: 
+failzone1: 
+failzone2: 
+token: 30921132
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-6-1 Nameprep -- prohibited character U+E000;\
+ should not display as Unicode
+namebase: xn--e000dn-l704a
+nameutf8: xn--e000dn-l704a
+namezone: 
+failzone1: 
+failzone2: 
+token: 02359753
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-6-2 If using UseSTD3ASCIIRules, Step 3a -- leading hyphen; should not display as Unicode
+namebase: xn---3dn-vpa
+nameutf8: xn---3dn-vpa
+namezone: 
+failzone1: 
+failzone2: 
+token: 99795165
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-6-3 If using UseSTD3ASCIIRules, Step 3b -- trailing hyphen; should not display as Unicode
+namebase: xn--3dn--upa
+nameutf8: xn--3dn--upa
+namezone: 
+failzone1: 
+failzone2: 
+token: 86051717
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-6-4 Step 5 -- prefix exists; should not display as Unicode
+namebase: xn--xn--dn-6va
+nameutf8: xn--xn--dn-6va
+namezone: 
+failzone1: 
+failzone2: 
+token: 02506789
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-7-1 Punycode was not necessary; should not display as Unicode
+namebase: xn--idn-
+nameutf8: xn--idn-
+namezone: 
+failzone1: 
+failzone2: 
+token: 21675918
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-7-2 String did not go through Nameprep;\
+ should not display as Unicode
+namebase: xn--dn-vga
+nameutf8: xn--dn-vga
+namezone: 
+failzone1: 
+failzone2: 
+token: 18832454
+passfail: fail
+type: tounicode
+
+=====
+desc: 3-8-1 Should show the Unicode <00ED>4dn ; <icu> Changed namebase and nameutf8 from xn--4dn-lla to xn--4dn-qma </icu>
+namebase: xn--4dn-qma
+nameutf8: xn--4dn-qma
+namezone: <00ED>4dn
+failzone1: 
+failzone2: 
+token: 23377435
+passfail: pass
+type: tounicode
+
+=====
+desc: 4-1-1-1 00adout<00AD><00ED>dn ->\
+ 00adout<00ED>dn
+namebase: 00adout<00AD><00ED>dn
+nameutf8: 00adout????dn
+namezone: xn--00adoutdn-m5a
+failzone1: xn--00adoutdn-cna81e
+failzone2: 
+token: 04299950
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-1-2 200dout<200D><00ED>dn ->\
+ 200dout<00ED>dn
+namebase: 200dout<200D><00ED>dn
+nameutf8: 200dout?????dn
+namezone: xn--200doutdn-m5a
+failzone1: xn--200doutdn-m5a1678f
+failzone2: 
+token: 00643243
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-1 simplecap<0044><00ED>dn ->\
+ simplecap<0064><00ED>dn
+namebase: simplecap<0044><00ED>dn
+nameutf8: simplecapD??dn
+namezone: xn--simplecapddn-1fb
+failzone1: 
+failzone2: 
+token: 36249795
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-2 latintogreek<00B5><00ED>dn ->\
+ latintogreek<03BC><00ED>dn
+namebase: latintogreek<00B5><00ED>dn
+nameutf8: latintogreek????dn
+namezone: xn--latintogreekdn-cmb716i
+failzone1: xn--latintogreekdn-cxa01g
+failzone2: 
+token: 03117407
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-3 latinext<00C7><00ED>dn ->\
+ latinext<00E7><00ED>dn
+namebase: latinext<00C7><00ED>dn
+nameutf8: latinext????dn
+namezone: xn--latinextdn-v6a6e
+failzone1: xn--latinextdn-twa07b
+failzone2: 
+token: 10243505
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-4 sharps<00DF><00ED>dn ->\
+ sharpsss<00ED>dn
+namebase: sharps<00DF><00ED>dn
+nameutf8: sharps????dn
+namezone: xn--sharpsssdn-r8a
+failzone1: xn--sharpsdn-vya4l
+failzone2: 
+token: 84921656
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-5 turkishi<0130><00ED>dn ->\
+ turkishi<0069><0307><00ED>dn
+namebase: turkishi<0130><00ED>dn
+nameutf8: turkishi????dn
+namezone: xn--turkishiidn-wcb701e
+failzone1: xn--turkishidn-r8a71f
+failzone2: 
+token: 02381730
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-6 exptwo<0149><00ED>dn ->\
+ exptwo<02BC><006E><00ED>dn
+namebase: exptwo<0149><00ED>dn
+nameutf8: exptwo????dn
+namezone: xn--exptwondn-m5a502c
+failzone1: xn--exptwodn-h2a33g
+failzone2: 
+token: 10575203
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-7 addfold<03D2><00ED>dn ->\
+ addfold<03C5><00ED>dn
+namebase: addfold<03D2><00ED>dn
+nameutf8: addfold????dn
+namezone: xn--addfolddn-m5a121f
+failzone1: xn--addfolddn-m5a462f
+failzone2: 
+token: 31493044
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-8 expthree<1F52><00ED>dn ->\
+ expthree<03C5><0313><0300><00ED>dn
+namebase: expthree<1F52><00ED>dn
+nameutf8: expthree?????dn
+namezone: xn--expthreedn-r8a5844g
+failzone1: 
+failzone2: 
+token: 68144622
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-9 nonbmp<10400><00ED>dn ->\
+ nonbmp<10428><00ED>dn
+namebase: nonbmp<10400><00ED>dn
+nameutf8: nonbmp??????dn
+namezone: xn--nonbmpdn-h2a34747d
+failzone1: xn--nonbmpdn-h2a37046d
+failzone2: 
+token: 35393212
+passfail: pass
+type: toascii
+
+=====
+desc: 4-1-2-10 nonbmptoascii<1D400><00ED>dn ->\
+ nonbmptoasciia<00ED>dn
+namebase: nonbmptoascii<1D400><00ED>dn
+nameutf8: nonbmptoascii??????dn
+namezone: xn--nonbmptoasciiadn-msb
+failzone1: xn--nonbmptoasciidn-hpb54112i
+failzone2: 
+token: 78182502
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-1 regcomb<0065><0301><00ED>dn ->\
+ regcomb<00E9><00ED>dn
+namebase: regcomb<0065><0301><00ED>dn
+nameutf8: regcombe????dn
+namezone: xn--regcombdn-h4a8b
+failzone1: xn--regcombedn-r8a794d
+failzone2: 
+token: 87647045
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-2 combandcase<0045><0301><00ED>dn ->\
+ combandcase<00E9><00ED>dn
+namebase: combandcase<0045><0301><00ED>dn
+nameutf8: combandcaseE????dn
+namezone: xn--combandcasedn-lhb4d
+failzone1: xn--combandcaseedn-cmb526f
+failzone2: 
+token: 61741185
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-3 adjcomb<00BA><0301><00ED>dn ->\
+ adjcomb<00F3><00ED>dn
+namebase: adjcomb<00BA><0301><00ED>dn
+nameutf8: adjcomb??????dn
+namezone: xn--adjcombdn-m5a9d
+failzone1: xn--adjcombdn-1qa57cp3r
+failzone2: 
+token: 14828402
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-4 extcombo<0063><0301><00ED>dn ->\
+ extcombo<0107><00ED>dn
+namebase: extcombo<0063><0301><00ED>dn
+nameutf8: extcomboc????dn
+namezone: xn--extcombodn-r8a52a
+failzone1: xn--extcombocdn-wcb920e
+failzone2: 
+token: 26651277
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-5 doublediac1<0075><0308><0301><00ED>dn ->\
+ doublediac2<01D8><00ED>dn
+namebase: doublediac1<0075><0308><0301><00ED>dn
+nameutf8: doublediac1u??????dn
+namezone: xn--doublediac1dn-6ib836a
+failzone1: xn--doublediac1udn-cmb526fnd
+failzone2: 
+token: 30175595
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-1-6 doublediac2<0075><0301><0308><00ED>dn ->\
+ doublediac2<01D8><00ED>dn
+namebase: doublediac2<0075><0301><0308><00ED>dn
+nameutf8: doublediac2u??????dn
+namezone: xn--doublediac2dn-6ib8qs73a
+failzone1: xn--doublediac2udn-cmb526fod
+failzone2: 
+token: 35606109
+passfail: pass
+type: toascii
+
+=====
+desc: 4-2-2-1 newnorm<2F874><00ED>dn ->\
+ newnorm<5F33><00ED>dn should not become <5F53>
+namebase: newnorm<2F874><00ED>dn
+nameutf8: newnorm??????dn
+namezone: xn--newnormdn-m5a7856x
+failzone1: xn--newnormdn-m5a9396x
+failzone2: xn--newnormdn-m5a9968x
+token: 61901810
+passfail: pass
+type: toascii
+
+=====
+desc: 4-3-1 If UseSTD3ASCIIRules: Spacing; <icu> \u0020 is prohibited from the output only when UseSTD3ASCIIRules is set </icu>
+namebase: <2000><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja3392a
+failzone2: 
+token: 13226878
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-2 Control
+namebase: <06DD><00ED>dn-2
+nameutf8: ????dn-2
+namezone: 
+failzone1: xn--dn-2-upa332g
+failzone2: 
+token: 09873312
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-3 Private use
+namebase: <E005><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja1659t
+failzone2: 
+token: 03937183
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-4 Private use, non-BMP
+namebase: <F0005><00ED>dn
+nameutf8: ??????dn
+namezone: 
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 78707823
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-5 Non-character
+namebase: <FDDD><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja1210x
+failzone2: 
+token: 44432178
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-6 Non-character, non-BMP
+namebase: <1FFFE><00ED>dn
+nameutf8: ??????dn
+namezone: 
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 69142686
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-7 Surrogate points
+namebase: <D805><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 05424571
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-8 Inappropriate for plain
+namebase: <FFFA><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja5822x
+failzone2: 
+token: 44825824
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-9 Inappropriate for canonical
+namebase: <2FF5><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja3729b
+failzone2: 
+token: 50926136
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-10 Change display simple
+namebase: <206A><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja7533a
+failzone2: 
+token: 57953313
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-11 Change display RTL
+namebase: <200F><00ED>dn
+nameutf8: ?????dn
+namezone: 
+failzone1: xn--dn-mja3992a
+failzone2: 
+token: 30705279
+passfail: fail
+type: toascii
+
+=====
+desc: 4-3-12 Language tags
+namebase: <E0001><E0045><E004E><0068><0069>idn
+nameutf8: ????????????hiidn
+namezone: 
+failzone1: xn--hiidn-km43aaa
+failzone2: 
+token: 44598039
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-1 Arabic RandALCat-LCat-RandALCat
+namebase: <0628><006F><0638>
+nameutf8: ??o??
+namezone: 
+failzone1: xn--o-0mc3c
+failzone2: 
+token: 78233053
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-2 Arabic RandALCat-RandALCat-other
+namebase: <0628><0638><006F>
+nameutf8: ????o
+namezone: 
+failzone1: xn--o-0mc2c
+failzone2: 
+token: 95299621
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-3 Arabic other-RandALCat-RandALCat
+namebase: <006F><0628><0638>
+nameutf8: o????
+namezone: 
+failzone1: xn--o-1mc2c
+failzone2: 
+token: 79807176
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-4 Hebrew RandALCat-LCat-RandALCat
+namebase: <05D1><006F><05E1>
+nameutf8: ??o??
+namezone: 
+failzone1: xn--o-1hc3c
+failzone2: 
+token: 32229450
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-5 Hebrew RandALCat-RandALCat-other
+namebase: <05D1><05E1><006F>
+nameutf8: ????o
+namezone: 
+failzone1: xn--o-1hc2c
+failzone2: 
+token: 53213348
+passfail: fail
+type: toascii
+
+=====
+desc: 4-4-6 Hebrew other-RandALCat-RandALCat
+namebase: <006F><05D1><05E1>
+nameutf8: o????
+namezone: 
+failzone1: xn--o-2hc2c
+failzone2: 
+token: 90835860
+passfail: fail
+type: toascii
+
+=====
+desc: 5-1-1 Unassigned in BMP; zone editors should reject
+namebase: <0237><00ED>dn
+nameutf8: ????dn
+namezone: xn--dn-mja33k
+failzone1: 
+failzone2: 
+token: 83079602
+passfail: pass
+type: toascii
+
+=====
+desc: 5-1-2 Unassinged outside BMP; zone editors should reject
+namebase: <10205><00ED>dn
+nameutf8: ??????dn
+namezone: xn--dn-mja7734x
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 03682900
+passfail: pass
+type: toascii
+
+=====
+desc: 5-2-1 Newly assigned in BMP; zone editors should reject
+namebase: <0234><00ED>dn
+nameutf8: ????dn
+namezone: xn--dn-mja12k
+failzone1: 
+failzone2: 
+token: 96637501
+passfail: pass
+type: toascii
+
+=====
+desc: 5-2-2 Newly assigned outside of BMP; zone editors should reject
+namebase: <10005><00ED>dn
+nameutf8: ??????dn
+namezone: xn--dn-mja9232x
+failzone1: xn--dn-mja7922x
+failzone2: 
+token: 95537699
+passfail: pass
+type: toascii
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java b/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
new file mode 100644
index 0000000..32c5b32
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
@@ -0,0 +1,140 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.data;
+import java.util.ListResourceBundle;
+
+public class TestDataElements_testtypes extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public final Object[][] getContents() {
+          return  contents;
+    }
+
+    private static Object[][] contents = {
+                {
+                    "binarytest",
+                    new byte[] {
+                        0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+                    },
+                },
+                {
+                    "emptyarray",
+                    new String[] { 
+                    },
+                },
+                {
+                    "emptybin",
+                    new byte[] {},
+                },
+                {
+                    "emptyexplicitstring",
+                    "",
+                },
+                {
+                    "emptyint",
+                    new Integer(0),
+                },
+                {
+                    "emptyintv",
+                    new Integer[] {
+                    },
+                },
+                {
+                    "emptystring",
+                    "",
+                },
+                {
+                    "emptytable",
+                    new Object[][]{
+                    },
+                },
+                {
+                    "importtest",
+                    new byte[] {
+                        0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,
+                    },
+                },
+                {
+                    "integerarray",
+                    new Integer[] {
+                        new Integer(1),
+                        new Integer(2),
+                        new Integer(3),
+                        new Integer(-3),
+                        new Integer(4),
+                        new Integer(5),
+                        new Integer(6),
+                        new Integer(7),
+                    },
+                },
+                {
+                    "menu",
+                    new Object[][]{
+                        {
+                            "file",
+                            new Object[][]{
+                                {
+                                    "exit",
+                                    "Exit",
+                                },
+                                {
+                                    "open",
+                                    "Open",
+                                },
+                                {
+                                    "save",
+                                    "Save",
+                                },
+                            },
+                        },
+                    },
+                },
+                {
+                    "minusone",
+                    new Integer(-1),
+                },
+                {
+                    "one",
+                    new Integer(1),
+                },
+                {
+                    "onehundredtwentythree",
+                    new Integer(123),
+                },
+                {
+                    "plusone",
+                    new Integer(1),
+                },
+                {
+                    "string",
+                    new String[] { 
+                    },
+                },
+                {
+                    "stringTable",
+                    new Object[]{
+                        new String[] { 
+                        },
+
+                    },
+                },
+                {
+                    "test_underscores",
+                    "test message ....",
+                },
+                {
+                    "testescape",
+                    "tab:\u0009 cr:\f ff:\u000C newline:\n backslash:\\" +
+                    " quote=\\\' doubleQuote=\\\" singlequoutes=''",
+                },
+                {
+                    "zerotest",
+                    "abc\u0000def",
+                },
+    };
+}
diff --git a/src/com/ibm/icu/dev/data/rbbi/english.dict b/src/com/ibm/icu/dev/data/rbbi/english.dict
new file mode 100644
index 0000000..10f430b
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/rbbi/english.dict
Binary files differ
diff --git a/src/com/ibm/icu/dev/data/rbbi/words.txt b/src/com/ibm/icu/dev/data/rbbi/words.txt
new file mode 100644
index 0000000..a7e06ac
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/rbbi/words.txt
@@ -0,0 +1,2990 @@
+--
+--such
+a
+a'bel-mizraim
+a'iah
+abate
+abated
+abdicated
+abel
+abi'da
+abide
+abim'a-el
+abim'elech
+abim'elech's
+able
+abolish
+abolishing
+abomination
+about
+above
+abraham
+abraham's
+abram
+abram's
+abroad
+absent
+absolute
+absolved
+abundance
+abundantly
+abuses
+accad
+accept
+accepted
+accommodation
+according
+accordingly
+account
+accustomed
+achbor
+acknowledged
+acquiesce
+acquired
+across
+act
+acts
+adah
+adam
+adbeel
+add
+added
+admah
+administration
+adullamite
+advanced
+adviser
+afar
+affected
+afflicted
+affliction
+afraid
+after
+afterward
+afterwards
+again
+against
+age
+ages
+agile
+agree
+agreed
+ahuz'zath
+ai
+aid
+air
+akan
+al'lon-bacuth
+alighted
+alive
+all
+allegiance
+alliances
+allies
+allow
+allowance
+almighty
+almo'dad
+almond
+almonds
+alone
+along
+aloud
+already
+also
+altar
+alter
+altering
+although
+altogether
+alvah
+alvan
+am
+am'alek
+am'raphel
+amal'ekites
+amazement
+america
+ammonites
+among
+amongst
+amorite
+amorites
+amount
+an
+an'amim
+anah
+and
+aner
+angel
+angels
+anger
+angry
+animal
+animals
+annihilation
+anointed
+another
+another's
+answer
+answered
+any
+anything
+anywhere
+apart
+appealed
+appealing
+appear
+appeared
+appease
+appoint
+appointed
+approached
+approaching
+appropriations
+aprons
+ar'arat
+ar'ioch
+ar'vadites
+aram
+aramean
+aran
+arbitrary
+archers
+ard
+are
+are'li
+area
+arise
+ark
+arkites
+armed
+armies
+arms
+army
+aro'di
+arose
+around
+arpach'shad
+arrayed
+arrive
+art
+as
+as'enath
+ascending
+ash'kenaz
+ash'teroth-karna'im
+ashamed
+ashbel
+asher
+asher's
+ashes
+aside
+ask
+asked
+asks
+asleep
+ass
+ass's
+assemble
+assembled
+assent
+asses
+asshu'rim
+asshur
+assume
+assured
+assyria
+at
+atad
+ate
+attack
+attacked
+attained
+attempts
+attend
+attended
+attention
+authority
+avenged
+avith
+away
+awesome
+awoke
+ba'al-ha'nan
+ba'bel
+back
+backward
+bad
+bade
+bags
+baked
+baker
+balm
+bank
+banks
+barbarous
+barren
+bas'emath
+basket
+baskets
+battle
+bdellium
+be
+be'or
+be-e'ri
+bear
+bearing
+bears
+beast
+beasts
+beautiful
+became
+because
+becher
+become
+becomes
+bed
+bedad
+been
+beer-la'hai-roi
+beer-sheba
+befall
+befallen
+befalls
+before
+beg
+began
+beginning
+beguiled
+begun
+beheld
+behind
+behold
+being
+bela
+believe
+believed
+belly
+belong
+belonging
+belongs
+below
+ben-ammi
+ben-o'ni
+beneath
+benefits
+benjamin
+benjamin's
+bera
+bereaved
+bered
+bereft
+beri'ah
+beside
+besides
+besought
+best
+bethel
+bethlehem
+bethu'el
+better
+between
+beyond
+bilhah
+bilhan
+binding
+bird
+birds
+birsha
+birth
+birthday
+birthright
+bites
+bitter
+bitumen
+black
+blame
+blameless
+bless
+blessed
+blesses
+blessing
+blessings
+blighted
+blindness
+blood
+blossoms
+blot
+blotted
+blow
+bodies
+body
+boiling
+bonds
+bone
+bones
+book
+booths
+border
+bore
+born
+borne
+both
+bough
+bought
+bound
+boundaries
+bounties
+bow
+bowed
+bowing
+bowshot
+boys
+bozrah
+bracelets
+branches
+breach
+bread
+breadth
+break
+breaking
+breasts
+breath
+breathed
+bred
+breed
+breeding
+brethren
+brick
+bricks
+brimstone
+bring
+britain
+british
+broken
+bronze
+brother
+brother's
+brother-in-law
+brothers
+brought
+brow
+bruise
+budded
+build
+building
+built
+bulls
+bundle
+bundles
+buried
+burn
+burned
+burnt
+burst
+bury
+burying
+bushes
+but
+butler
+butlership
+buy
+buz
+by
+cain
+cake
+cakes
+calah
+calf
+call
+called
+calls
+came
+camel
+camel's
+camels
+camp
+camped
+can
+canaan
+canaan'
+canaanite
+canaanites
+canaanitish
+candid
+cannot
+caph'torim
+captain
+captive
+captives
+captured
+caravan
+carcasses
+care
+carefully
+carmi
+carried
+carry
+cases
+caslu'him
+cast
+cattle
+caught
+cause
+caused
+causes
+cave
+cease
+ceased
+certain
+chain
+chalde'ans
+chamber
+change
+changed
+character
+charge
+charged
+charging
+chariot
+chariots
+charters
+cheat
+cheated
+ched-or-lao'mer
+cheran
+cherubim
+chesed
+chezib
+chief
+chiefs
+child
+childbearing
+childless
+children
+children's
+choice
+choicest
+chose
+chosen
+circumcised
+circumstances
+cities
+citizens
+city
+civil
+civilized
+clans
+clean
+clear
+cleaves
+close
+closed
+clothed
+clothes
+clothing
+cloud
+clouds
+clusters
+coastland
+coasts
+coffin
+cold
+colonies
+colonies:
+colt
+colts
+combined
+come
+comely
+comes
+comfort
+comforted
+comforts
+coming
+command
+commanded
+commander
+commandments
+commerce
+commit
+committed
+common
+companies
+company
+complained
+complete
+completed
+compliance
+conceal
+conceived
+concern
+concerning
+conclude
+concubine
+concubines
+condition
+conditions
+confined
+confuse
+confused
+congress
+conjured
+connected
+connection
+connections
+consent
+consent:
+conspired
+constitution
+constrained
+constrains
+consume
+consumed
+contempt
+contended
+continually
+continue
+continued
+contract
+control
+controlling
+convulsions
+cool
+cord
+correspondence
+corrupt
+corrupted
+costly
+couch
+couched
+couches
+couching
+could
+council
+count
+counted
+countenance
+country
+course
+covenant
+cover
+covered
+covering
+cows
+created
+creation
+creator
+creature
+creatures
+creeping
+creeps
+cried
+crossed
+crossing
+crouching
+crown
+cruel
+cruelty
+cry
+crying
+cubit
+cubits
+cup
+curds
+current
+curse
+cursed
+curses
+cush
+custody
+cut
+cutting
+dainties
+damascus
+dan
+dangers
+dares
+dark
+darkness
+daughter
+daughter-in-law
+daughters
+dawned
+day
+days
+dead
+deal
+dealt
+death
+deb'orah
+deceitfully
+deceived
+decent
+decide
+decks
+declaration
+declare
+declaring
+dedan
+deed
+deep
+defeat
+defeated
+defiled
+define
+delay
+delayed
+delight
+deliver
+delivered
+delivery
+denied
+denounces
+depart
+departed
+departing
+dependent
+dependents
+depository
+depriving
+deriving
+descendants
+descending
+design
+desire
+desired
+desolate
+desolation
+despised
+despotism
+destroy
+destroyed
+destroys
+destruction
+destructive
+determined
+devoured
+devouring
+dew
+dictate
+did
+didst
+die
+died
+dies
+diklah
+dim
+din'habah
+dinah
+dinah's
+dine
+dipped
+direct
+direction
+disaster
+disavow
+discreet
+disgrace
+dishan
+dishon
+dismayed
+displeased
+displeasing
+disposed
+dissolutions
+dissolve
+dissolved
+distance
+distant
+distress
+distressed
+districts
+divide
+divided
+dividing
+divination
+divine
+divines
+do
+do'danim
+doer
+does
+doing
+domestic
+dominion
+done
+door
+dothan
+double
+doubling
+doubt
+dove
+down
+downcast
+dowry
+drank
+draw
+drawn
+dread
+dream
+dreamed
+dreamer
+dreams
+drew
+dried
+drink
+drinking
+drinks
+driven
+drove
+droves
+drunk
+dry
+dug
+dumah
+dungeon
+during
+dust
+duty
+dwell
+dwelling
+dwelt
+e'domites
+e'phraim
+e'phraim's
+each
+early
+ears
+earth
+easily
+east
+eastward
+eat
+eaten
+eating
+ebal
+eber
+eden
+eder
+edom
+effect
+egypt
+egyptian
+egyptian's
+egyptians
+ehi
+eight
+eighteen
+eighty
+eighty-seven
+eighty-six
+eighty-two
+either
+el'iphaz
+el-bethel
+el-el'ohe-israel
+el-paran
+elah
+elam
+elda'ah
+elder
+elders
+eldest
+elected
+eleven
+eli'shah
+elie'zer
+ella'sar
+elon
+else
+embalm
+embalmed
+embalming
+embrace
+embraced
+emigration
+emim
+emptied
+empty
+empty-handed
+enaim
+encamped
+encampments
+encourage
+end
+endeavored
+ended
+ending
+endowed
+ends
+enemies
+enemy
+english
+enlarge
+enlarging
+enmish'pat
+enmity
+enoch
+enosh
+enough
+enter
+entered
+entitle
+entrance
+entreat
+envied
+ephah
+epher
+ephrath
+ephron
+equal
+er
+erech
+erected
+eri
+errand
+esau
+esau's
+escape
+escaped
+esek
+eshban
+eshcol
+establish
+established
+establishing
+establishment
+eternal
+euphra'tes
+euphrates
+eve
+even
+evening
+events
+ever
+everlasting
+every
+everything
+everywhere
+evil
+evils
+evinces
+ewe
+ewes
+example
+exceedingly
+except
+exchange
+excited
+executioners
+exercise
+experience
+expert
+explain
+exposed
+exposing
+extend
+extended
+eyes
+ezbon
+ezer
+face
+faces
+facts
+failed
+fainted
+fair
+faithfulness
+fall
+fallen
+falls
+falsely
+families
+family
+famine
+famished
+far
+fare
+fared
+farewell
+fast
+fat
+father
+father's
+father-in-law
+fathers
+fatiguing
+fatness
+faults
+favor
+favorable
+fawns
+fear
+feared
+feast
+fed
+feebler
+feed
+feel
+feet
+fell
+fellow
+felt
+female
+festal
+fetch
+few
+field
+fields
+fierce
+fiercely
+fifteen
+fifth
+fifths
+fifty
+fig
+fill
+filled
+find
+finds
+fine
+finish
+finished
+fire
+firm
+firmament
+firmness
+first
+first-
+first-born
+firstlings
+fish
+fit
+five
+fixed
+flaming
+fled
+flee
+fleeing
+flesh
+floated
+flock
+flocks
+flood
+floor
+flowed
+flows
+fly
+foal
+follow
+followed
+following
+follows
+folly
+fondling
+food
+foolishly
+foot
+for
+forbidden
+force
+forced
+forces
+ford
+foreign
+foreigner
+foreigners
+foremost
+foreskin
+foreskins
+forger
+forget
+forgets
+forgive
+forgot
+forgotten
+form
+formed
+former
+formerly
+formidable
+forms
+forsaken
+forth
+fortune
+fortunes
+forty
+forty-five
+forty-seven
+found
+foundation
+fountains
+four
+fourteen
+fourteenth
+fourth
+frail
+free
+freely
+fresh
+freshly
+friend
+friendly
+friends
+fro
+from
+front
+frontiers
+fruit
+fruitful
+fruits
+fugitive
+fulfil
+fulfilled
+full
+fundamentally
+furnace
+fury
+future
+gad
+gaham
+gained
+galeed
+game
+garden
+garment
+garments
+gatam
+gate
+gather
+gathered
+gaunt
+gave
+gavest
+gaza
+gazed
+genealogies
+general
+generation
+generations
+gera
+gerar
+gershon
+get
+gether
+gift
+gifts
+gihon
+gilead
+gir'gashites
+give
+given
+givest
+giving
+go
+goat
+goats
+god
+god's
+gods
+goes
+goi'im
+going
+gold
+gomer
+gomor'rah
+gone
+good
+good-looking
+goods
+gopher
+goshen
+got
+gotten
+governed
+government
+governments
+governments:
+governor
+governors
+gracious
+graciously
+grain
+grandchildren
+grandson
+grant
+granted
+grapes
+grass
+grave
+gray
+great
+greater
+greatly
+green
+grew
+grieved
+grievous
+groping
+ground
+grow
+growing
+grown
+grows
+guard
+guards
+guile
+guilt
+guilty
+gum
+guni
+ha'mathites
+had
+hadad
+hadar
+hador'am
+hagar
+haggi
+hairs
+hairy
+half
+hallowed
+ham
+hamor
+hamor's
+hamstring
+hamul
+hand
+hands
+handsome
+hang
+hanged
+hanoch
+happened
+happiness
+happy
+haran
+harass
+harassed
+hard
+hardship
+harlot
+harlotry
+harm
+harshly
+harvest
+harvests
+has
+hast
+haste
+hastened
+hastily
+hate
+hated
+hath
+hav'ilah
+have
+haven
+havilah
+having
+haz'azon-ta'mar
+hazarma'veth
+hazo
+he
+he-asses
+he-goats
+head
+heads
+healed
+heap
+hear
+heard
+hearing
+hearken
+hearkened
+hears
+heart
+hearts
+heat
+heaven
+heavens
+heber
+hebrew
+hebrews
+hebron
+heed
+heeded
+heel
+heels
+heifer
+height
+heir
+held
+help
+helper
+heman
+hemdan
+her
+herb
+herd
+herds
+herdsmen
+here
+herself
+heth
+hewed
+hezron
+hid
+hidden
+hide
+high
+hill
+hills
+him
+himself
+hind
+hinder
+hip
+hirah
+hire
+hired
+his
+history
+hither
+hittite
+hittites
+hivite
+hivites
+hobah
+hold
+hollow
+home
+honest
+honesty
+honey
+honor
+honored
+hori
+horite
+horites
+horns
+horse's
+horsemen
+horses
+host
+hot
+hotly
+house
+household
+households
+houses
+how
+hul
+human
+humane
+humble
+humbled
+hundred
+hundredfold
+hundredth
+hunt
+hunted
+hunter
+hunting
+huppim
+husband
+husham
+hushim
+i
+if
+ill
+ill-treat
+image
+imagination
+immediate
+imnah
+impel
+importance
+imposing
+impossible
+in
+inasmuch
+incapable
+including
+increased
+indeed
+independent
+indian
+indignant
+inestimable
+inevitably
+inhabitants
+inheritance
+iniquity
+injuries
+injury
+innocence
+innocent
+inquire
+inquired
+inside
+instead
+institute
+instituted
+instructed
+instructing
+instrument
+instruments
+insult
+insurrections
+integrity
+intended
+intentions
+interpret
+interpretation
+interpretations
+interpreted
+interpreter
+interrupt
+into
+introducing
+invariably
+invasion
+invasions
+invested
+iob
+irad
+iram
+iron
+is
+is'sachar
+isaac
+isaac's
+iscah
+ish'mael
+ish'mael's
+ish'maelites
+ishbak
+ishvah
+ishvi
+israel
+israel's
+israelites
+it
+ithran
+its
+itself
+jabal
+jabbok
+jachin
+jacob
+jacob's
+jah'leel
+jahzeel
+jalam
+jamin
+japheth
+jar
+jared
+javan
+je'gar-sahadu'tha
+je'ush
+jealous
+jeb'usites
+jemu'el
+jerah
+jesting
+jetheth
+jetur
+jewelry
+jezer
+jidlaph
+jobab
+joined
+joint
+jokshan
+joktan
+jordan
+joseph
+joseph's
+journey
+journeyed
+jubal
+judah
+judah's
+judge
+judged
+judges
+judgment
+judiciary
+judith
+jurisdiction
+jury:
+just
+justice
+kad'monites
+kadesh
+ked'emah
+kedar
+keep
+keeper
+keepers
+kemu'el
+ken'ites
+ken'izzites
+kenan
+kenaz
+kept
+ketu'rah
+kid
+kids
+kill
+killed
+kind
+kindled
+kindness
+kindred
+kinds
+king
+king's
+kingdom
+kings
+kinsman
+kinsmen
+kir'iath-ar'ba
+kiss
+kissed
+kittim
+knead
+knee
+kneel
+knees
+knew
+knife
+know
+knowing
+knowledge
+known
+knows
+kohath
+korah
+laban
+laban's
+labor
+lack
+lacking
+lad
+lad's
+ladder
+lads
+laid
+lain
+lamb
+lambs
+lamech
+lamentation
+lamented
+land
+lands
+language
+languages
+languished
+large
+lasha
+last
+later
+laugh
+laughed
+laughter
+laws
+lay
+laying
+le-um'mim
+lead
+leaf
+leah
+leah's
+lean
+leap
+leaped
+learn
+learned
+least
+leave
+leaves
+led
+left
+legislate
+legislation:
+legislative
+legislature
+legislatures
+leha'bim
+length
+lentils
+lesser
+lest
+let
+letu'shim
+levey
+levi
+liberty
+lie
+lies
+life
+lifeblood
+lift
+lifted
+light
+lights
+like
+likely
+likeness
+likewise
+limping
+linen
+lingered
+lion
+lion's
+lioness
+listen
+listened
+listening
+little
+live
+lived
+lives
+livestock
+living
+lo
+load
+loaded
+lodge
+lodged
+lodging
+loins
+long
+longed
+longer
+longs
+look
+looked
+looking
+loose
+lord
+lord's
+lords
+loss
+lot
+lot's
+lotan
+lotan's
+loud
+love
+loved
+lovely
+loves
+lower
+lowered
+loyally
+lud
+ludim
+luz
+lying
+lyre
+ma'acah
+ma'halath
+ma-hal'alel
+mach-
+mach-pe'lah
+machir
+madai
+made
+mag'diel
+magicians
+magnanimity
+magog
+mahana'im
+maid
+maiden
+maids
+maidservants
+make
+maker
+making
+mal'chi-el
+male
+males
+mamre
+man
+man'ahath
+man's
+manas'seh
+manas'seh's
+mandrakes
+mankind
+manly
+manner
+mantle
+many
+mark
+marked
+marriage
+marriages
+married
+marries
+marry
+mash
+masre'kah
+massa
+master
+master's
+mate
+mating
+matred
+matter
+may
+me
+me'zahab
+me-hu'ja-el
+me-thu'sha-el
+meal
+mean
+meaning
+means
+meant
+meantime
+meanwhile
+measure
+measured
+measures
+medan
+meditate
+meet
+meets
+mehet'abel
+mel-chiz'edek
+members
+men
+men's
+mend
+mended
+menservants
+mention
+merar'i
+mercenaries
+merchants
+merciful
+merciless
+mercy
+merry
+mesha
+meshech
+mesopota'mia
+message
+messengers
+met
+methu'selah
+mibsam
+mibzar
+mid'ian
+mid'ianite
+mid'ianites
+midst
+midwife
+might
+mightier
+mightily
+mighty
+migrated
+migration
+milcah
+milch
+military
+milk
+mind
+mine
+mirth
+miscarried
+mishma
+mist
+mistress
+mizpah
+mizzah
+moab
+moabites
+mock
+mocking
+money
+monsters
+month
+months
+moon
+more
+moreh
+moreover
+mori'ah
+morning
+morsel
+mortar
+most
+mother
+mother's
+mothers
+mottled
+mount
+mountain
+mountains
+mourn
+mourned
+mourning
+mouth
+moved
+moves
+moving
+much
+multiplied
+multiply
+multitude
+muppim
+murders
+must
+mutually
+my
+myrrh
+myself
+na'amah
+na'aman
+nahath
+nahor
+nahor's
+naked
+nakedness
+name
+named
+names
+naph'tali
+naph-tu'him
+naphish
+nation
+nations
+native
+naturalization
+nature
+nature's
+near
+neba'ioth
+necessary
+necessity
+neck
+need
+negeb
+neglected
+neighboring
+neither
+nephilim
+never
+nevertheless
+new
+next
+night
+nights
+nile
+nimrod
+nin'eveh
+nine
+nineteen
+ninety
+ninety-five
+ninety-nine
+no
+noah
+noah's
+nod
+none
+noon
+nor
+north
+northward
+nose
+nostrils
+not
+nothing
+now
+number
+numbered
+numbers
+nurse
+nuts
+o
+oak
+oaks
+oath
+obal
+obedience
+obeisance
+obey
+obeyed
+object
+obstructed
+obstructing
+obtain
+obtained
+occasion
+occupation
+odious
+odor
+of
+off
+offended
+offense
+offenses:
+offer
+offered
+offering
+offerings
+office
+officer
+officers
+offices
+offspring
+oh
+ohad
+oholiba'mah
+oil
+old
+older
+oldest
+olive
+omar
+on
+onam
+onan
+once
+one
+ones
+only
+onyx
+open
+opened
+operation
+ophir
+opinions
+opposing
+opposite
+oppressed
+oppressions
+or
+order
+orders
+organizing
+ornaments
+other
+others
+ought
+our
+ours
+ourselves
+out
+outcry
+outside
+outwitted
+over
+overdriven
+overseer
+overseers
+oversight
+overtake
+overthrew
+overthrow
+overtook
+own
+owns
+oxen
+pace
+paddan
+paddan-aram
+paid
+pain
+pair
+pairs
+pallu
+paralleled
+paran
+part
+parts
+pass
+passed
+past
+pasture
+pastured
+pasturing
+path
+pathru'sim
+patient
+pau
+pay
+payment
+pe'lah
+peace
+peaceably
+peeled
+peleg
+peni'el
+penu'el
+people
+peopled
+peoples
+per'izzites
+perez
+perfidy
+perform
+perhaps
+perish
+permit
+perpetuated
+persons
+petitioned
+petitions
+pharaoh
+pharaoh's
+phicol
+philistines
+physicians
+piece
+pieces
+pigeon
+pildash
+pillar
+pinon
+pipe
+pishon
+pistachio
+pit
+pitch
+pitched
+pits
+place
+placed
+places
+plagues
+plain
+plainly
+plane
+planning
+plant
+planted
+plants
+play
+played
+playing
+pleasant
+please
+pleased
+pleases
+pleasing
+pleasure
+pledge
+plenteous
+plenty
+plowing
+plucked
+plump
+plundered
+point
+political
+poor
+poplar
+population
+portion
+portions
+possess
+possession
+possessions
+posterity
+pot
+pot'i-phar
+poti'phera
+pottage
+poured
+poverty
+power
+powers
+praise
+praised
+pray
+prayed
+prayer
+pre-eminence
+pre-eminent
+prepare
+prepared
+presence
+present
+presented
+preserve
+preserved
+pressed
+pressing
+pretended
+prevail
+prevailed
+prevent
+prevented
+prey
+price
+pride
+priest
+priests
+prince
+princes
+principles
+prison
+prisoners
+proceed
+produce
+profit
+promise
+promised
+pronounce
+property
+prophet
+proposal
+propose
+prosper
+prospered
+protecting
+protection
+prove
+provender
+provide
+provided
+providence
+province
+provision
+provisions
+prudence
+public
+publish
+punishment
+purchased
+purify
+purpose
+pursue
+pursued
+pursuing
+pursuit
+put
+putting
+puvah
+quarrel
+quarreled
+quartering
+questioned
+questions
+quickly
+quiet
+quiver
+ra'amah
+rachel
+rachel's
+raid
+raiders
+raiment
+rain
+rained
+raise
+raised
+raising
+ram
+ram'eses
+rams
+ran
+rather
+ravaged
+raven
+ravenous
+re'u
+reached
+ready
+really
+reaped
+reason
+reassured
+rebekah
+rebekah's
+rebelled
+rebuked
+receded
+receive
+received
+reckoned
+reckoning
+recognize
+recognized
+records
+rectitude
+red
+redeemed
+redress
+reduce
+reed
+refresh
+refused
+refusing
+regard
+regarded
+regards
+reho'both
+reho'both-ir
+reign
+reigned
+reliance
+relief
+relinquish
+remain
+remained
+remaining
+remains
+remember
+remembered
+reminded
+remnant
+remove
+removed
+removing
+render
+renown
+rent
+repeated
+repeatedly
+reph'aim
+replace
+replaced
+replied
+report
+representation
+representative
+representatives
+reproach
+require
+required
+requires
+rescue
+resen
+reserve
+reserved
+respect
+rest
+rested
+resting
+restore
+restored
+restrained
+return
+returned
+reu'el
+reuben
+reumah
+revealed
+revived
+reward
+rib
+ribs
+rich
+ride
+rider
+right
+righted
+righteous
+righteousness
+rightly
+rights
+ring
+rings
+ripened
+riphath
+rise
+risen
+river
+rivers
+road
+robe
+rock
+rode
+rods
+roll
+rolled
+roof
+room
+rooms
+rose
+rosh
+roughly
+round
+rouse
+routed
+royal
+rule
+ruler
+ruler's
+run
+runnels
+sab'teca
+sabtah
+sack
+sackcloth
+sacks
+sacred
+sacrifice
+sacrifices
+saddle
+saddled
+safely
+safety
+said
+sake
+salaries
+salem
+salt
+salvation
+same
+samlah
+sand
+sandal-thong
+sar'ai
+sarah
+sarah's
+sat
+savages
+saved
+saving
+savory
+saw
+say
+saying
+says
+scarcely
+scarlet
+scatter
+scattered
+scepter
+se'ir
+sea
+searched
+seas
+seashore
+season
+seasons
+seba
+second
+secretly
+secure
+security
+see
+seed
+seedtime
+seeing
+seek
+seeking
+seem
+seemed
+seen
+sees
+seize
+seized
+select
+self-evident
+sell
+semen
+send
+sent
+separate
+separated
+separation
+sephar
+sepulchre
+sepulchres
+serah
+sered
+serpent
+serug
+servant
+servant's
+servants
+serve
+served
+service
+serving
+set
+seth
+settle
+settled
+settlement
+seven
+sevenfold
+seventeen
+seventeenth
+seventh
+seventy
+seventy-five
+seventy-seven
+seventy-sevenfold
+severe
+sewed
+sexes
+sha'veh-kiriatha'im
+shall
+shammah
+share
+shaul
+shaved
+shaveh
+she
+she-asses
+she-goat
+she-goats
+sheaf
+shear
+sheaves
+sheba
+shechem
+shechem's
+shed
+sheds
+sheep
+sheepfolds
+sheepshearers
+shekel
+shekels
+shelah
+sheleph
+shelter
+shem
+sheme'ber
+sheol
+shepherd
+shepherding
+shepherds
+shepho
+shibah
+shield
+shillem
+shimron
+shinab
+shinar
+ships
+shobal
+shore
+short
+shortly
+shot
+should
+shoulder
+shoulders
+show
+showed
+shown
+shua
+shua's
+shuah
+shuni
+shur
+shut
+siddim
+side
+sidon
+sight
+sign
+signet
+signs
+silence
+silver
+simeon
+sin
+since
+sinew
+sinites
+sinned
+sinners
+sinning
+sister
+sister's
+sit
+sitnah
+sitting
+six
+sixteen
+sixth
+sixty
+sixty-five
+sixty-nine
+sixty-six
+sixty-two
+skilful
+skin
+skins
+slain
+slaughter
+slave
+slaves
+slay
+slays
+sleek
+sleep
+sleeves
+slept
+slew
+slope
+slowly
+small
+smell
+smelled
+smoke
+smoking
+smooth
+so
+sodom
+soil
+sojourn
+sojourned
+sojourner
+sojourners
+sojourning
+sojournings
+sold
+sole
+solemnly
+some
+son
+son's
+songs
+sons
+sons'
+sons-in-law
+soon
+sore
+sorely
+sorrow
+sorrowful
+sorry
+sort
+sorts
+sought
+soul
+sound
+south
+southward
+sow
+sowed
+space
+spare
+spared
+speak
+speaking
+speaks
+speckled
+speech
+spend
+spent
+spies
+spilled
+spirit
+splendor
+spoil
+spoke
+spoken
+spotted
+spread
+spring
+springing
+springs
+sprouted
+sprung
+staff
+stage
+stalk
+stand
+standing
+stands
+stars
+state
+states
+states:
+station
+statute
+statutes
+stay
+stayed
+stead
+steadfast
+steal
+steward
+still
+stole
+stolen
+stone
+stones
+stood
+stooped
+stop
+stopped
+store
+stored
+storehouses
+story
+stranger
+strangers
+straw
+streaks
+stream
+street
+strength
+stretched
+strife
+striking
+striped
+stripped
+striven
+strong
+stronger
+strongly
+struck
+struggled
+subdue
+subdued
+subject
+submit
+submitted
+subsided
+substance
+subtle
+success
+successful
+succoth
+such
+suck
+suckle
+suffer
+sufferable
+sufferance
+suitable
+summer
+summoned
+sun
+superior
+supplanted
+supplied
+support
+suppose
+supreme
+surely
+surety
+surrounded
+survivors
+suspended
+suspending
+sustained
+swallowed
+swarm
+swarming
+swarms
+swear
+sweat
+sword
+swords
+swore
+sworn
+system
+systems
+table
+tahash
+take
+taken
+taking
+talked
+talking
+tamar
+tamarisk
+tambourine
+tarried
+tarry
+tarshish
+taxes
+te'manites
+tebah
+teeth
+tell
+tells
+tema
+teman
+ten
+tender
+tenderly
+tent
+tenth
+tents
+tenure
+terah
+terms:
+territory
+terror
+tested
+than
+that
+the
+thee
+their
+theirs
+them
+themselves
+then
+thence
+there
+therefore
+therein
+these
+they
+thicket
+thigh
+thin
+thing
+things
+thinking
+third
+thirteen
+thirteenth
+thirty
+thirty-five
+thirty-four
+thirty-seven
+thirty-three
+thirty-two
+this
+thistles
+thorns
+thoroughly
+those
+thou
+thought
+thoughts
+thousand
+thousands
+thread
+three
+threshing
+throne
+through
+throughout
+throw
+thus
+thy
+tidal
+tidings
+ties
+tigris
+till
+tiller
+time
+times
+timna
+timnah
+tiras
+to
+today
+togar'mah
+together
+toil
+tola
+told
+tomb
+tonight
+too
+took
+top
+tops
+torch
+torn
+totally
+totaly
+touch
+touched
+touches
+toward
+tower
+towns
+trade
+traders
+train
+trained
+transgression
+transient
+transporting
+travailed
+treasure
+treat
+treated
+tree
+trees
+trembled
+trembling
+trial
+tribes
+tried
+troops
+trouble
+troubled
+troubles
+trough
+troughs
+truly
+truth
+truths
+tubal
+tubal-
+tubal-cain
+turn
+turned
+turns
+turtledove
+twelve
+twenty
+twenty-nine
+twenty-seven
+twenty-seventh
+twice
+twins
+two
+tyranny
+tyrant
+tyrants
+unacknowledged
+unalienable
+unawares
+uncircumcised
+uncomfortable
+uncovered
+under
+understand
+understood
+undistinguished
+unfit
+ungirded
+united
+unknown
+unleavened
+unless
+unmoved
+unstable
+until
+unusual
+unwarrantable
+unworth
+up
+upbraided
+upon
+uppermost
+upright
+ur
+urged
+us
+us:
+use
+using
+usurpations
+utterly
+uz
+uzal
+valley
+valuable
+vegetation
+veil
+vengeance
+vent
+vents
+verified
+very
+vesture
+villages
+vindication
+vine
+vineyard
+violence
+violently
+viper
+virgin
+vision
+visions
+visit
+visited
+voice
+void
+vow
+wages
+waging
+wagons
+wait
+waited
+walk
+walked
+walking
+wall
+wander
+wandered
+wanderer
+wandering
+wanting
+wantonness
+war
+warfare
+warned
+was
+wash
+washed
+washes
+watch
+water
+watered
+watering
+waters
+way
+wayside
+we
+weak
+weakness
+wealth
+wealthy
+weaned
+weapons
+wear
+wearied
+weary
+week
+weep
+weeping
+weighed
+weighing
+weight
+weights
+welfare
+well
+well's
+wells
+went
+wept
+were
+west
+westward
+what
+whatever
+whatsoever
+wheat
+whelp
+when
+whence
+whenever
+where
+whereby
+wherever
+whether
+which
+while
+white
+who
+whoever
+whole
+wholesome
+whom
+whomever
+whose
+why
+wicked
+wickedly
+wickedness
+widow
+widow's
+widowhood
+wife
+wife's
+wild
+wilderness
+will
+willing
+wilt
+wind
+window
+windows
+wine
+winged
+winter
+wise
+with
+withered
+withheld
+withhold
+within
+without
+witness
+wives
+wolf
+woman
+woman's
+womb
+wombs
+women
+wood
+word
+words
+wore
+work
+works
+world
+world:
+worse
+worship
+worshiped
+worth
+worthy
+would
+wounding
+wrapping
+wrath
+wrestled
+wrestlings
+wrong
+wrought
+year
+yearned
+years
+yes
+yet
+yield
+yielding
+yoke
+yonder
+you
+young
+younger
+youngest
+your
+yours
+yourself
+yourselves
+youth
+za'avan
+zaph'enath-pane'ah
+zeb'ulun
+zeboi'im
+zem'arites
+zepho
+zerah
+zib'eon
+zillah
+zilpah
+zimran
+ziph'ion
+zo'ar
+zohar
+zuzim
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements.java b/src/com/ibm/icu/dev/data/resources/TestDataElements.java
new file mode 100644
index 0000000..aae433e
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements.java
@@ -0,0 +1,34 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements extends ListResourceBundle {    
+    private static Object[][] data = new Object[][] { 
+        {    
+            "from_root",
+            "This data comes from root"
+        },
+        {
+            "from_en",
+            "In root should be overridden"
+        },
+        { 
+            "from_en_Latn",
+            "In root should be overridden"
+        },
+        {
+            "from_en_Latn_US",
+            "In root should be overridden"
+        }
+        
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties b/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties
new file mode 100644
index 0000000..04c3f14
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties
@@ -0,0 +1,10 @@
+# *
+# *******************************************************************************
+# * Copyright (C) 2005-2006, International Business Machines Corporation and         *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# *
+# TestDataElements_en.properties
+from_en=This data comes from en
+from_en_Latn=In en should be overridden
+from_en_Latn_US=In en should be overridden
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties
new file mode 100644
index 0000000..e85eb94
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties
@@ -0,0 +1,9 @@
+# *
+# *******************************************************************************
+# * Copyright (C) 2005-2006, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# *
+# TestDataElements_en_Latn.properties
+from_en_Latn=This data comes from en_Latn
+from_en_Latn_US=In en_Latn should be overridden
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java
new file mode 100644
index 0000000..efc5355
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java
@@ -0,0 +1,21 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements_en_Latn_US extends ListResourceBundle {    
+    private static Object[][] data = new Object[][] { 
+        {
+            "from_en_Latn_US",
+            "This data comes from en_Latn_US"
+        }
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java
new file mode 100644
index 0000000..dfa8468
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java
@@ -0,0 +1,23 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements_en_US extends ListResourceBundle {
+
+    private static Object[][] data = new Object[][] { 
+        {
+            "from_en_US",
+            "This data comes from en_US"
+        }
+        
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java b/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java
new file mode 100644
index 0000000..06d681f
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java
@@ -0,0 +1,21 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements_te extends ListResourceBundle {    
+    private static Object[][] data = new Object[][] { 
+        {
+            "from_te",
+            "In root should be overridden"
+        }
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/data/resources/TestDataElments_fr_Latn_FR.java b/src/com/ibm/icu/dev/data/resources/TestDataElments_fr_Latn_FR.java
new file mode 100644
index 0000000..0c1b4a0
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/resources/TestDataElments_fr_Latn_FR.java
@@ -0,0 +1,24 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElments_fr_Latn_FR extends ListResourceBundle {
+
+    private static Object[][] data = new Object[][] { 
+        {
+            "from_fr_Latn_FR",
+            "This data comes from fr_Latn_FR"
+        }
+        
+    };
+    protected Object[][] getContents() {
+        return data;
+    }
+}
diff --git a/src/com/ibm/icu/dev/data/riwords.txt b/src/com/ibm/icu/dev/data/riwords.txt
new file mode 100644
index 0000000..67dab27
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/riwords.txt
@@ -0,0 +1,32943 @@
+﻿#*******************************************************************************
+#*
+#*   Copyright (C) 2003, National Electronics and Computer Technology Center
+#*   and others.  All Rights Reserved.
+#* 
+#*******************************************************************************
+# Sorted Thai word list used for testing the ThaiCollator class.
+# This list was taken from the Web: <http://www.links.nectec.or.th/itech/download.html>
+#
+# Lines starting with '#' are ignored; others are treated as single words
+# in the UTF-8 encoding.
+#
+#
+# License information:
+# RIWord License
+# 
+# COPYRIGHT AND PERMISSION NOTICE
+# 
+# Copyright (c) 2003 National Electronics and Computer Technology Center and others
+# All rights reserved.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, and/or sell copies of the Software, and to permit persons
+# to whom the Software is furnished to do so, provided that the above
+# copyright notice(s) and this permission notice appear in all copies of
+# the Software and that both the above copyright notice(s) and this
+# permission notice appear in supporting documentation.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+# 
+# Except as contained in this notice, the name of a copyright holder
+# shall not be used in advertising or otherwise to promote the sale, use
+# or other dealings in this Software without prior written authorization
+# of the copyright holder.
+# 
+# --------------------------------------------------------------------------------
+# All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+ก
+ก็
+กก
+ก๊ก
+กกขนาก
+กกช้าง
+กกธูป
+กกหู
+ก กา
+กกุธภัณฑ์
+ก ข
+ก ข ไม่กระดิกหู
+กง
+ก่ง
+ก้ง
+ก๊ง
+กงกอน
+กงการ
+กงเกวียน
+กงเกวียนกำเกวียน
+กงโก้
+กงค้าง
+ก้งโค้ง
+ก้งง
+กงจักร
+กงฉาก
+กงไฉ่
+กงเต๊ก
+กงพัด
+กงวาน
+กงสี
+กงสุล
+กช
+กช-
+กชกร
+กฎ
+กฎกระทรวง
+กฎเกณฑ์
+กฎข้อบังคับ
+กฎทบวง
+กฎธรรมชาติ
+กฎธรรมดา
+กฎบัตร
+กฎบัตรกฎหมาย
+กฎบัตรสหประชาชาติ
+กฎมนเทียรบาล
+กฎยุทธวินัย
+กฎศีลธรรม
+กฎเสนาบดี
+กฎหมาย
+กฎหมายนานาประเทศ
+กฎหมายปิดปาก
+กฎหมายพาณิชย์
+กฎหมายแพ่ง
+กฎหมายระหว่างประเทศ
+กฎหมายเหตุ
+กฎหมายอาญา
+กฎหมู่
+กฎแห่งกรรม
+กฎอัยการศึก
+กฏิ
+กฏุก
+กฏุก-
+กฏุกผล
+กฐิน
+กฐิน-
+กฐินทาน
+กฐินัตถารกรรม
+กณิกนันต์
+กณิการ์
+กด
+กดขี่
+กดคอ
+กดชา
+กดดัน
+กดน้ำ
+กดราคา
+กดหัว
+กดเหลือง
+ก็ดี
+ก็ได้
+กตเวทิตา
+กตเวที
+กตัญชลี
+กตัญญุตา
+กตัญญู
+กตาธิการ
+กตาภินิหาร
+ก็ตาม
+กติกา
+กติกาสัญญา
+กถา
+กถามรรค
+กถามรรคเทศนา
+กถามุข
+กถิกาจารย์
+กทรรป
+กทลี
+กน
+ก่น
+ก้น
+กนก
+ก้นกบ
+ก้นกระดก
+ก้นกุฏิ
+ก้นขบ
+ก้นครัว
+ก่นโคตร
+ก้นตะกรน
+ก่นแต่
+กนน
+กนนเชอ
+ก่นนโถง
+กนนเหิม
+ก้นบึ้ง
+ก้นปล่อง
+ก้นปอด
+ก้นปิด
+ก้นปูด
+ก้นแมลงสาบ
+ก้นย้อย
+ก่นสร้าง
+ก้นหนัก
+ก้นหย่อน
+ก้นหอย
+ก้นอ้อย
+กนิษฐ-
+กนิษฐ์
+กนิษฐภคินี
+กนิษฐภาดา
+กนิษฐา
+กบ
+กบฏ
+กบดาน
+กบเต้น
+กบทู
+กบทูด
+กบบัว
+กบเลือกนาย
+กบาล
+กบินทร์
+กบิล
+กบี่
+กบี่ธุช
+กบูร
+กเบนทร์
+กโบร
+กโบล
+กปณ
+กปณก
+กปณา
+กปิ
+กปิตัน
+กม
+ก้ม
+กมณฑลาภิเษก
+กมณฑโลทก
+กมล
+กมลา
+กมลาศ
+กมลาสน์
+กมเลศ
+ก้มหน้า
+ก้มหน้าก้มตา
+ก้มหลัง
+ก้มหัว
+กมัณฑลุ
+กมุท
+กร
+กรก
+กรกช
+กรกฎ
+กรกฎาคม
+กรกฏ
+กรง
+กรงทอง
+กรงเล็บ
+กรชกาย
+กรณฑ์
+กรณิการ์
+กรณี
+กรณีย-
+กรณีย์
+กรณียะ
+กรด
+กรน
+กรนทา
+กรนนเช้า
+กรบ
+กรบูร
+กรพินธุ์
+กรภุม
+กรม
+กรมกรอม
+กรมการ
+กรมการพิเศษ
+กรมเกรียม
+กรมท่า
+กรมท่าขวา
+กรมท่าซ้าย
+กรมธรรม์
+กรมธรรม์ประกันภัย
+กรมนา
+กรมวัง
+กรมศักดิ์
+กรร
+กรรกง
+กรรกฎ
+กรรกศ
+กรรเกด
+กรรไกร
+กรรเจียก
+กรรชิง
+กรรชิด
+กรรเชอ
+กรรเช้า
+กรรเชียง
+กรรโชก
+กรรซ้นน
+กรรแซง
+กรรฐ์
+กรรฐา
+กรรณ
+กรรณยุคล
+กรรณา
+กรรณิกา
+กรรณิการ์
+กรรดิ
+กรรดิก
+กรรดึก
+กรรตุ
+กรรตุ-
+กรรตุการก
+กรรตุวาจก
+กรรตุสัญญา
+กรรไตร
+กรรทบ
+กรรแทก
+กรรแทรก
+กรรบาสิก
+กรรบาสิกพัสตร์
+กรรบิด
+กรรบูร
+กรรปาสิก
+กรรปุร
+กรรพุม
+กรรพุ่ม
+กรรภิรมย์
+กรรม
+กรรม-
+กรรม์
+กรรมกร
+กรรมกรณ์
+กรรมการ
+กรรมการก
+กรรมการิณี
+กรรมขัย
+กรรมคติ
+กรรมชรูป
+กรรมชวาต
+กรรมฐาน
+กรรมบถ
+กรรมพันธุ์
+กรรม์ภิรมย์
+กรรมวาจก
+กรรมวาจา
+กรรมวาจาจารย์
+กรรมวิธี
+กรรมวิบาก
+กรรมเวร
+กรรมศาลา
+กรรมสัมปาทิก
+กรรมสิทธิ์
+กรรมสิทธิ์เครื่องหมายและยี่ห้อการค้าขาย
+กรรมสิทธิ์ผู้แต่งหนังสือ
+กรรมสิทธิ์รวม
+กรรมัชวาต
+กรรมาชีพ
+กรรมาธิการ
+กรรมาร
+กรรลี
+กรรลึง
+กรรษก
+กรรสะ
+กรรแสง
+กรรหาย
+กรรเหิม
+กรรโหย
+กรรเอา
+กรรุณา
+กรวด
+กรวดน้ำ
+กรวน
+กรวบ
+กรวม
+กร้วม
+กรวย
+กรวยเชิง
+กรวยบ้าน
+กรวยป่า
+กรวิก
+กรสาปน์
+กรสุทธิ์
+กรอ
+กร้อ
+กรอก
+กร็อกกร๋อย
+กรอกแกรก
+กรอกรุย
+กรอง
+กรองกรอย
+กรองทอง
+กรอด
+กร่อน
+กรอบ
+กรอบเกรียบ
+กรอบแกรบ
+กรอบเช็ดหน้า
+กรอบหน้า
+กรอม
+กร่อม
+กร่อมๆ
+กร่อย
+กระ
+กระกร
+กระกรับกระเกรียบ
+กระกรี๊ด
+กระกรุ่น
+กระกลับกลอก
+กระกวด
+กระกอง
+กระกัด
+กระกี้
+กระกูล
+กระเกรอก
+กระเกริก
+กระเกริ่น
+-กระเกรียบ
+กระเกรียม
+กระเกรียว
+กระเกรี้ยว
+กระเกลือก
+กระคน
+กระคาย
+กระคุก
+กระงกกระงัน
+กระงกกระเงิ่น
+กระง่องกระแง่ง
+-กระงอด
+กระง่อนกระแง่น
+กระเง้ากระงอด
+กระโงก
+กระจก
+กระจกเงา
+กระจกตา
+กระจกนูน
+กระจกฝ้า
+กระจกเว้า
+กระจกหุง
+กระจง
+กระจร
+กระจอก
+กระจอกงอกง่อย
+กระจอกชวา
+กระจอกเทศ
+กระจองหง่อง
+กระจ๋องหง่อง
+กระจองอแง
+กระจ้อน
+กระจอนหู
+กระจ้อย
+กระจ้อยร่อย
+กระจ๋อหวอ
+กระจะ
+กระจัก
+กระจัง
+กระจังหลังเบี้ย
+กระจัด
+กระจัดกระจาย
+กระจัดพลัดพราย
+กระจับ
+กระจับบก
+กระจับปิ้ง
+กระจับปี่
+กระจ่า
+กระจ่าง
+กระจาด
+กระจาน
+กระจาบ
+-กระจาม
+กระจาย
+กระจายนะมณฑล
+กระจายเสียง
+กระจายหางดอก
+กระจาว
+-กระจิก
+-กระจิ๋ง
+กระจิด
+กระจิบ
+-กระจิบ
+-กระจิ๋ม
+กระจิริด
+กระจิ๋ว
+กระจิ๋วหลิว
+กระจี้
+-กระจี๋
+กระจุก
+กระจุกกระจิก
+กระจุกกระจุย
+กระจุ๋งกระจิ๋ง
+กระจุบ
+กระจุ๊บ
+กระจุบกระจิบ
+กระจุ๋มกระจิ๋ม
+กระจุย
+กระจุยกระจาย
+กระจู้
+กระจู๋กระจี๋
+กระจูด
+กระเจอะกระเจิง
+กระเจา
+กระเจ่า
+กระเจ้า
+กระเจาะ
+กระเจิง
+กระเจิดกระเจิง
+กระเจี้ยง
+กระเจี๊ยบ
+กระเจี๊ยบเปรี้ยว
+กระเจียว
+กระเจี๊ยว
+กระแจะ
+กระโจน
+กระโจม
+กระโจมกระจาม
+กระโจมทอง
+กระโจมไฟ
+กระโจมอก
+กระฉง
+กระฉอก
+กระฉอกกระแฉก
+กระฉ่อน
+กระฉับกระเฉง
+กระฉิ่ง
+กระฉีก
+กระฉูด
+กระเฉก
+-กระเฉง
+กระเฉด
+-กระแฉก
+กระแฉ่น
+กระโฉกกระเฉก
+กระโฉม
+กระชง
+กระชดกระช้อย
+-กระชวย
+กระชอก
+กระชอน
+กระชอม
+กระชอมดอก
+กระช้อย
+กระช้อยนางรำ
+กระชัง
+กระชังหน้าใหญ่
+กระชั้น
+กระชับ
+กระชาก
+กระช่าง
+กระชาเดิม
+กระชาย
+กระชิง
+กระชิด
+กระชุ
+กระชุก
+กระชุ่มกระชวย
+กระเชอ
+กระเชอก้นรั่ว
+กระเชา
+กระเช้า
+กระเช้าผีมด
+กระเช้าสวรรค์
+กระเช้าสีดา
+กระเชียง
+กระแชง
+กระแชะ
+กระโชก
+กระโชกกระชั้น
+กระโชกกระชาก
+กระโชกโฮกฮาก
+กระซวย
+-กระซวย
+-กระซ้อ
+กระซ่องกระแซ่ง
+กระซับ
+กระซ่าง
+กระซาบ
+กระซิก
+กระซิกๆ
+กระซิกกระซวย
+กระซิกกระซี้
+กระซิบ
+กระซิบกระซาบ
+-กระซี้
+กระซี้กระซ้อ
+กระซุง
+กระซุบกระซิบ
+กระซุ้ม
+กระซู่
+-กระเซ
+กระเซ็น
+กระเซอ
+กระเซอะกระเซอ
+กระเซอะกระเซิง
+กระเซ้า
+กระเซ้ากระซี้
+กระเซิง
+-กระเซิง
+กระแซ
+กระแซะ
+กระโซกระเซ
+กระฎี
+กระฎุมพี
+กระดก
+กระดกกระดนโด่
+กระด้ง
+-กระดนโด่
+กระดวง
+กระดวน
+กระด้วมกระเดี้ยม
+กระดอ
+กระดอง
+กระดองหาย
+กระดอน
+กระดอม
+กระดักกระเดี้ย
+กระดังงัว
+กระดังงา
+กระดังงาจีน
+กระดังงาเถา
+กระดังงาลนไฟ
+กระดาก
+กระดากกระเดื่อง
+กระด้าง
+กระด้างกระเดื่อง
+กระดางลาง
+กระดาด
+กระดาดขาว
+กระดาดดำ
+กระดาดแดง
+กระดาน
+กระดานชนวน
+กระดานชัย
+กระดานดำ
+กระดานโต้คลื่น
+กระดานถีบ
+กระดานพน
+กระดานพิง
+กระดานไฟ
+กระดานลื่น
+กระดานเลียบ
+กระดานหก
+กระดาษ
+กระดาษแก้ว
+กระดาษข่อย
+กระดาษไข
+กระดาษเงินกระดาษทอง
+กระดาษซับ
+กระดาษทราย
+กระดาษเทศ
+กระดาษฟาง
+กระดาษว่าว
+กระดาษสา
+กระดำกระด่าง
+กระดิก
+กระดิกกระเดี้ย
+กระดิ่ง
+-กระดิ้ง
+กระดิ่งทอง
+กระดิบ
+กระดิบๆ
+กระดี่
+กระดี้กระเดียม
+กระดี่ได้น้ำ
+กระดึง
+กระดึงช้างเผือก
+กระดึงพระราม
+กระดืบ
+กระดุ
+กระดุกกระดิก
+กระดุ้งกระดิ้ง
+กระดุบๆ
+กระดุบกระดิบ
+กระดุม
+กระดูก
+กระดูกกบ
+กระดูกไก่ดำ
+กระดูกขัดมัน
+กระดูกเขียด
+กระดูกแข็ง
+กระดูกค่าง
+กระดูกงู
+กระดูกดำ
+กระดูกร้องได้
+กระดูกสันหลัง
+กระดูกอึ่ง
+-กระเดก
+กระเด้ง
+กระเด็น
+กระเด้า
+กระเด้าดิน
+กระเด้าลม
+กระเดาะ
+กระเดาะปาก
+กระเดิด
+-กระเดี้ย
+กระเดียด
+-กระเดียม
+-กระเดี้ยม
+กระเดือก
+กระเดื่อง
+กระแด็กๆ
+กระแด้ง
+กระแด้แร่
+กระแด่วๆ
+กระแดะ
+กระแดะกระแด๋
+กระโดก
+กระโดกกระเดก
+กระโดง
+กระโดงคาง
+กระโดงแดง
+กระโดด
+กระโดดร่ม
+กระโดน
+กระโดนดิน
+กระใด
+กระได
+กระไดแก้ว
+กระไดลิง
+กระตรกกระตรำ
+กระตร้อ
+กระตรับ
+กระตราก
+-กระตรำ
+กระตรุด
+กระตรุม
+กระต้วมกระเตี้ยม
+กระต้อ
+กระต่องกระแต่ง
+กระต๊อบ
+กระต้อยตีวิด
+กระตัก
+กระตั้ว
+-กระตาก
+กระต่าย
+กระต่ายขูด
+กระต่ายจันทร์
+กระต่ายจาม
+กระต่ายจีน
+กระต่ายชมจันทร์
+กระต่ายต้องแร้ว
+กระต่ายตื่นตูม
+กระต่ายเต้น
+กระต่ายสามขา
+กระต่ายหมายจันทร์
+กระติก
+-กระติก
+-กระติ้ง
+กระติ๊ด
+กระติ๊ดขี้หมู
+กระติบ
+กระตือรือร้น
+กระตุก
+กระตุกกระติก
+กระตุ้งกระติ้ง
+กระตุ่น
+กระตุ้น
+กระตูบ
+กระเตง
+กระเต็น
+กระเตอะ
+กระเตาะ
+กระเตาะกระแตะ
+-กระเตี้ยม
+กระเตื้อง
+กระแต
+-กระแต่ง
+กระแตแต้แว้ด
+กระแตไต่ไม้
+กระแตวับ
+-กระแตะ
+กระโตกกระตาก
+กระโตน
+กระไตร
+กระถด
+กระถอบ
+กระถั่ว
+กระถาง
+กระถิก
+กระถิน
+กระถินหอม
+กระถึก
+กระเถิบ
+กระโถน
+กระโถนท้องพระโรง
+กระโถนปากแตร
+กระโถนฤๅษี
+กระทก
+กระทง
+กระทงแถลง
+กระทงน้อย
+กระทงป่า
+กระทงเพชร
+กระทงลอย
+กระทงลาย
+กระทงเหิน
+กระทด
+กระทดกระทัน
+กระทบ
+กระทบกระทั่ง
+กระทบกระเทียบ
+กระทบกระเทือน
+กระทบกระแทก
+กระทรวง
+กระทวย
+กระทอก
+กระท้อน
+กระท่อนกระแท่น
+กระท่อม
+กระท้อมกระแท้ม
+กระท่อมขี้หมู
+กระท่อมเลือด
+กระทะ
+กระทะใบบัว
+กระทั่ง
+กระทั่งติด
+-กระทัน
+-กระทั้น
+กระทา
+กระทาชาย
+กระทาย
+กระทายเหิน
+กระทาสี
+กระทาหอง
+กระทำ
+กระทำความผิด
+กระทิกกระทวย
+กระทิง
+กระทิงโทน
+กระทึง
+กระทืบ
+กระทืบธรณี
+กระทืบยอบ
+กระทุ
+กระทุง
+กระทุ้ง
+กระทุงลาย
+กระทุ้งเส้า
+กระทุงหมาบ้า
+กระทุงเหว
+กระทุ่ม
+กระทุ่มขี้หมู
+กระทุ่มนา
+กระทุ่มหมู
+กระทู้
+กระทู้ถาม
+กระเท่
+กระเท่เร่
+-กระเทียบ
+กระเทียม
+กระเทียมหอม
+กระเทือน
+กระเทือนใจ
+กระเทื้อม
+กระแทก
+กระแทกกระทั้น
+กระแท่น
+-กระแท้ม
+กระแทะ
+กระไทชาย
+กระนก
+กระน่อง
+กระนั้น
+กระนี้
+กระโน้น
+กระไน
+กระบก
+กระบกคาย
+กระบถ
+กระบม
+กระบวน
+กระบวนกระบิด
+กระบวนการ
+กระบวนการยุติธรรม
+กระบวนความ
+กระบวนจีน
+กระบวย
+กระบวร
+กระบอก
+กระบอกเพลา
+กระบอกสูบ
+กระบอกเสียง
+กระบอกหัว
+กระบอง
+กระบองกลึง
+กระบองกัน
+กระบองเพชร
+กระบองราหู
+กระบะ
+กระบัด
+กระบั้วกระเบี้ย
+กระบ่า
+กระบ้า
+กระบาก
+กระบาย
+กระบาล
+กระบิ
+กระบิ้ง
+กระบิด
+กระบิดกระบวน
+กระบิล
+กระบี่
+กระบี่กระบอง
+กระบี่ธุช
+กระบี่ลีลา
+กระบือ
+กระบือเจ็ดตัว
+กระบุง
+กระบุ่มกระบ่าม
+กระบู้กระบี้
+กระบูน
+กระบูนเลือด
+กระบูร
+กระเบง
+กระเบญ
+กระเบ็ดกระบวน
+กระเบน
+กระเบนเหน็บ
+กระเบา
+กระเบิก
+-กระเบี้ย
+กระเบียด
+กระเบียดกระตัก
+กระเบียดกระเสียร
+กระเบียน
+กระเบื้อง
+กระเบื้องเกล็ดเต่า
+กระเบื้องถ้วย
+กระเบื้องถ้วยกะลาแตก
+กระเบื้องปรุ
+กระเบื้องรู
+กระเบื้องหน้าวัว
+กระแบ่
+กระแบก
+กระแบกงา
+กระแบะ
+กระแบะมือ
+กระโบม
+กระปมกระปำ
+กระปมกระเปา
+กระปรอก
+กระปรอกว่าว
+กระปรี้กระเปร่า
+กระปอก
+กระป้อกระแป้
+กระป่อง
+กระป๋อง
+กระปอดกระแปด
+กระป๋อหลอ
+กระปั้วกระเปี้ย
+-กระปำ
+กระป่ำ
+-กระปิ่ม
+กระปุก
+กระปุกหลุก
+กระปุ่ม
+กระปุ่มกระป่ำ
+กระปุ่มกระปิ่ม
+-กระเปา
+กระเป๋า
+กระเป๋าหนัก
+กระเปาะ
+กระเปาะเหลาะ
+-กระเปี้ย
+-กระแป้
+-กระแปด
+กระโปก
+กระโปรง
+กระโปรงทอง
+กระผม
+-กระผลาม
+กระผลีกระผลาม
+กระผาน
+กระผีก
+กระผีกริ้น
+กระพรวน
+กระพริ้ม
+กระพอก
+กระพอกวัว
+กระพอง
+กระพ้อม
+กระพัก
+กระพัง
+กระพังเหิร
+กระพังโหม
+กระพัด
+กระพัดแม่ม่าย
+กระพัตร
+กระพัน
+กระพั่น
+กระพา
+กระพาก
+กระพี้
+กระพี้เขาควาย
+กระพือ
+กระพือข่าว
+กระพือปีก
+กระพุ้ง
+กระพุ่ม
+กระพุ่มมือ
+กระเพลิศ
+กระเพาะ
+กระเพาะปลา
+กระเพิง
+กระเพื่อม
+กระแพง
+กระแพ้ง
+กระฟัดกระเฟียด
+-กระฟาย
+กระฟูมกระฟาย
+-กระเฟียด
+กระมล
+กระมอบ
+กระมอมกระแมม
+กระมัง
+กระมัน
+กระมิดกระเมี้ยน
+กระมึน
+กระมุท
+กระเมาะ
+-กระเมี้ยน
+-กระแมม
+กระย่อง
+-กระย่อง
+กระย่องกระแย่ง
+กระย่อน
+กระย่อม
+กระยา
+กระยาคชวาง
+กระยาง
+กระยาจก
+-กระยาด
+กระยาดอก
+กระยาดอกเบี้ย
+กระยาทาน
+กระยาทิพย์
+กระยาบวช
+กระยาเบี้ย
+กระยารงค์
+กระยาเลย
+กระยาสนาน
+กระยาสังเวย
+กระยาสังแวง
+กระยาสารท
+กระยาเสวย
+กระยาหงัน
+กระยาหาร
+กระยิก
+กระยิ้มกระย่อง
+กระยึกกระยือ
+กระยืดกระยาด
+กระเย้อกระแหย่ง
+-กระแย่ง
+กระรอก
+กระรอกน้ำข้าว
+กระเรียน
+กระโรกน้ำข้าว
+กระโรกใหญ่
+กระไร
+กระลด
+กระลบ
+กระลอก
+กระลอม
+กระละหล่ำ
+กระลัด
+กระลับ
+กระลับกระเลือก
+กระลัมพร
+กระลา
+กระลาการ
+กระลาพิน
+กระลายกระลอก
+กระลาศรี
+กระลำ
+กระลำพร
+กระลำพัก
+กระลำพุก
+กระลิง
+กระลี
+กระลึง
+กระลุมพาง
+กระลุมพุก
+กระลุมพู
+กระลูน
+กระลู่น์
+กระเล็น
+กระเลียด
+กระเลือก
+กระโลง
+กระวน
+กระวนกระวาย
+กระวัด
+กระว่า
+-กระวาด
+กระวาน
+กระวาย
+กระวายกระวน
+กระวิน
+กระวี
+กระวีกระวาด
+กระวูดกระวาด
+กระเวน
+กระเวนกระวน
+กระเวยกระวาย
+กระแวน
+กระโวยกระวาย
+กระศก
+กระศัย
+กระษัตริย์
+กระษัตรี
+กระษัย
+กระษัยกล่อน
+กระษาปณ์
+กระษิร
+กระเษม
+กระเษมสานต์
+กระเษียร
+กระสง
+-กระสน
+กระสบ
+กระสม
+กระสรวล
+กระสร้อย
+กระสวน
+กระสวย
+กระสอบ
+กระสะ
+กระสัง
+กระสัน
+กระสับกระส่าย
+กระสา
+กระสานติ์
+กระสาบ
+กระสาย
+-กระส่าย
+กระสินธุ
+กระสือ
+กระสือดูด
+กระสุงกระสิง
+กระสุน
+กระสุนปืน
+กระสุนวิถี
+กระสูทธิ์
+กระสูบ
+กระเสด
+กระเส็นกระสาย
+กระเส่า
+กระเสาะกระแสะ
+กระเสียน
+กระเสียร
+กระเสือกกระสน
+กระแส
+กระแสการเงิน
+กระแสความ
+กระแสง
+กระแสจิต
+กระแสตรง
+กระแสน้ำ
+กระแสพระราชดำรัส
+กระแสรับสั่ง
+กระแสลม
+กระแสสลับ
+กระแสเสียง
+กระแสะ
+กระโสง
+กระไส
+กระหง่อง
+กระหน
+กระหนก
+กระหนกกินรี
+กระหนกนฤมิต
+กระหนกนารี
+กระหน่อง
+กระหนาก
+กระหนาบ
+กระหนาบคาบเกี่ยว
+กระหน่ำ
+กระหมวด
+กระหมอบ
+กระหม่อม
+กระหม่อมบาง
+กระหมั่ง
+กระหม่า
+-กระหมิด
+กระหมิบ
+กระหมุดกระหมิด
+กระหมุ่น
+กระหมุบ
+กระหมุบกระหมิบ
+กระหย่ง
+กระหยด
+กระหยบ
+กระหย่อน
+กระหย่อม
+กระหยะ
+กระหยัง
+กระหยับ
+กระหยิ่ม
+กระหรอด
+กระหริ่ง
+กระหวน
+กระหวัด
+กระหวัดเกล้า
+กระหว่า
+กระหอง
+กระหัง
+กระหัด
+กระหาง
+กระหาย
+กระหึม
+กระหึ่ม
+กระหืดกระหอบ
+กระเห็น
+กระเหน็จ
+กระเหน็จกระแหน่
+กระเหนียด
+กระเหม็ดกระเหมียด
+กระเหม็ดกระแหม่
+กระเหม่น
+กระเหม่า
+กระเหลียก
+กระเหว่า
+กระเห่อ
+กระเหิม
+กระเหี้ยนกระหือรือ
+กระแห
+กระแหทอง
+-กระแหน
+กระแหน่
+กระแหนบ
+กระแหนะ
+กระแหนะกระแหน
+กระแหมบ
+กระแหม่ว
+กระแหย่ง
+กระแหร่ม
+กระแหล่ง
+กระโห้
+กระโหนด
+กระโหม
+กระโหย
+กระโหย่ง
+-กระอ่วน
+กระอวล
+กระอ้อกระแอ้
+กระออดกระแอด
+กระออบ
+กระออม
+กระอ้อมกระแอ้ม
+กระออมน้ำ
+กระอัก
+กระอักกระอ่วน
+กระอักกระไอ
+กระอั้วแทงควาย
+กระอ้า
+กระอาน
+กระอิด
+กระอิดกระเอื้อน
+กระอึก
+กระอึกกระอัก
+กระอึด
+กระอืด
+กระอุ
+กระอุก
+กระเอบ
+กระเอา
+กระเอิก
+กระเอิบ
+-กระแอ้
+กระแอก
+-กระแอด
+กระแอบ
+กระแอม
+-กระแอ้ม
+กระไอ
+กระไอกระแอม
+กรัก
+กรักขี
+กรัง
+กรัชกาย
+กรัณฑ-
+กรัณฑ์
+กรัณย์
+กรัน
+กรับ
+กรัม
+กราก
+กราง
+กร่าง
+กรางเกรียง
+กราด
+-กราด
+กราดเกรี้ยว
+กราดวง
+กราน
+กร้าน
+กรานกฐิน
+กราบ
+กราบพระ
+กราฟ
+กราม
+กรามช้าง
+กรามพลู
+กราย
+กร่าย
+กราล
+กราว
+กร้าว
+กราวด่าง
+กราวรูด
+กราสิก
+กรำ
+กร่ำ
+กร่ำกรุ่น
+กริก
+กริ๊ก
+กริกกริว
+กริกกรี
+กริ่ง
+กริ๊ง
+กริงกริว
+กริ้งกริ้ว
+กริ่งเกรง
+กริ่งใจ
+กริช
+กริณี
+กริตย-
+กริน
+กรินทร์
+กรินี
+กริบ
+กริม
+กริ่ม
+กริยา
+กริยานุเคราะห์
+กริยาวิเศษณ์
+กริยาวิเศษณ์วลี
+กริยาวิเศษณานุประโยค
+กริว
+กริ้ว
+กริวกราว
+กริวลาย
+กรี
+กรีฑา
+กรีฑากร
+กรีฑาภิรมย์
+กรีฑารมย์
+กรีฑาสถาน
+กรีด
+กรี๊ด
+กรีดกราด
+กรีดกราย
+กรีดนิ้ว
+กรีธา
+กรีธาทัพ
+กรีธาพล
+กรีษ
+กรีส
+กรึง
+กรุ
+กรุก
+กรุกกรัก
+กรุกกรู๊
+กรุง
+กรุ้งกริ่ง
+กรุงเขมา
+กรุงพาลี
+กรุณ
+กรุณา
+กรุณาทฤคุณ
+กรุน
+กรุ่น
+กรุบ
+กรุบกริบ
+กรุ่ม
+กรุ้มกริ่ม
+กรุย
+กรุยกราย
+กรุยเกรียว
+กรู
+กรูด
+กรูม
+กเรณุ
+กเรณุกา
+กเรนทร
+กเรนทร์
+กฤช
+กฤด-
+กฤดยาเกียรณ
+กฤดา
+กฤดาการ
+กฤดาญชลี
+กฤดาธิการ
+กฤดาภินิหาร
+กฤดาอัญชลี
+กฤดิ
+กฤดีกา
+กฤตติกา
+กฤตย-
+กฤตยฎีกา
+กฤตยา
+กฤติกา
+กฤติยา
+กฤษฎา
+กฤษฎาญ
+กฤษฎาญชลิต
+กฤษฎาญชลี
+กฤษฎาญชวลิตวา
+กฤษฎาญชวลิศ
+กฤษฎาญชวเลศ
+กฤษฎาญชุลี
+กฤษฎาธาร
+กฤษฎาภินิหาร
+กฤษฎี
+กฤษฎีกา
+กฤษณา
+กล
+กล-
+กลไก
+กลฉ้อฉล
+กลด
+กลดกำมะลอ
+กลดพระสุเมรุ
+กล่น
+กลบ
+กลบเกลี่ย
+กลบเกลื่อน
+กลบท
+กลบบัตรสุมเพลิง
+กลพยาน
+กลไฟ
+กลม
+กลมกล่อม
+กลมกลืน
+กลมกลืนกลอน
+กลมเกลียว
+กลมดิก
+กลมเป็นลูกมะนาว
+กลมภ
+กลเม็ด
+กลยุทธ์
+กลละ
+กลวง
+กลวม
+กล้วย
+กล้วยกล้าย
+กล้วยแขก
+กล้วยงวงช้าง
+กล้วยเต่า
+กล้วยใต้
+กล้วยน้อย
+กล้วยไม้
+กล้วยสั้น
+กล้วยหมูสัง
+กลวิธี
+กลศ
+กลศาสตร์
+กลหาย
+กลเหย
+กล้อ
+กลอก
+กลอกกลับ
+กลอกแกลก
+กลอง
+กล่อง
+กล้อง
+กล้องแกล้ง
+กล้องจุลทรรศน์
+กล้องตุด
+กล้องโทรทรรศน์
+กลองเพล
+กล้องระดับ
+กล้องวัดมุม
+กล้องสนาม
+กล้องสลัด
+กล้องส่องทางไกล
+กล้องสำรวจ
+กลอน
+กล่อน
+กล้อน
+กลอนด้น
+กลอนตลาด
+กลอนลิลิต
+กลอนสด
+กลอนสวด
+กลอนสุภาพ
+กล่อม
+กล่อมเกลา
+กล่อมเกลี้ยง
+กล้อมแกล้ม
+กล่อมท้อง
+กล่อมมดลูก
+กล่อมหอ
+กลอย
+กลอักษร
+กลอุปกรณ์
+กลัก
+กลัง
+กลัด
+กลัดกลุ้ม
+กลัดมัน
+กลั่น
+กลั้น
+กลั่นกรอง
+กลั่นแกล้ง
+กลั้นใจ
+กลันท
+กลันทก์
+กลับ
+กลับกลอก
+กลับกลาย
+กลับเกลือก
+กลับคำ
+กลับคืน
+กลับตาลปัตร
+กลับเนื้อกลับตัว
+กลับไปกลับมา
+กลับหน้ามือเป็นหลังมือ
+กลัมพก
+กลัมพร
+กลัมพัก
+กลัว
+กลั้ว
+กลั้วเกลี้ย
+กลั้วคอ
+กลัวน้ำ
+กลัวลาน
+กลา
+กล่า
+กล้า
+กลาก
+กลากลาด
+กลาง
+กลางเก่ากลางใหม่
+กลางคน
+กลางคัน
+กลางค่ำ
+กลางคืน
+กลางแจ้ง
+กลางใจมือ
+กลางช้าง
+กลางดิน
+กลางดึก
+กลางเดือน
+กลางทาสี
+กลางนอก
+กลางบ้าน
+กลางแปลง
+กลางเมือง
+กลางวัน
+กลางหาว
+กลาด
+กลาดเกลื่อน
+กล้าได้กล้าเสีย
+กล้านักมักบิ่น
+กลาบาต
+กลาป
+กล้าม
+กลาย
+กล้าย
+กลายกลอก
+กล่าว
+กล่าวเกลี้ยง
+กล่าวขวัญ
+กล่าวโทษ
+กล่าวหา
+กล่าวโอม
+กลาโหม
+กล่ำ
+กล้ำ
+กล้ำกราย
+กล้ำกลืน
+กลิ่ง
+กลิ้ง
+กลิ้งกลอก
+กลิ้งกลางดง
+กลิ้งเกลือก
+กลิงค์
+กลิ้งครกขึ้นเขา
+กลิ้งเป็นลูกมะนาว
+กลิ่น
+กลิ่นอาย
+กลิ้ม
+กลี
+กลี่
+กลีบ
+กลีบตา
+กลีบบัว
+กลีบหิน
+กลึง
+กลึ้ง
+กลึงกล่อม
+กลึงค์
+กลืน
+กลืนไม่เข้าคายไม่ออก
+กลุ่ม
+กลุ้ม
+กลุ้มใจ
+กลุ้มรุม
+กลุ้มอกกลุ้มใจ
+กลู่
+กลูโคส
+กลูน
+กลูน์
+กเลวระ
+กวด
+กวดขัน
+กวน
+กวนน้ำให้ขุ่น
+กวม
+กวย
+กวยจั๊บ
+กวยจี๊
+ก๋วยเตี๋ยว
+กวะ
+กวะกวัก
+กวะแกว่ง
+กวัก
+กวัด
+กวัดแกว่ง
+กวัดไกว
+กวัดไกวไสส่ง
+กวา
+กว่า
+กว้า
+กวาง
+กว่าง
+กว้าง
+กว้างขวาง
+กวางเขน
+กวางแขม
+กวางจุก
+กวางโจน
+กว่างชน
+กวางชะมด
+กว่างโซ้ง
+กวางเดินดง
+กวางตุ้ง
+กวางทราย
+กวางทอง
+กวางป่า
+กวางม้า
+กว้างใหญ่
+กว่าชื่น
+กวาด
+กวาดต้อน
+กวาดตา
+กวาดล้าง
+กวาน
+กว่าน
+กว้าน
+กว๊าน
+กว่าเพื่อน
+กว้าว
+กวาวเครือ
+กวิน
+กวี
+กวีนิพนธ์
+กษณะ
+กษมา
+กษัตร
+กษัตรา
+กษัตราธิราช
+กษัตริย์
+กษัตริยชาติ
+กษัตรี
+กษัตรีย์
+กษัตรีศูร
+กษัย
+กษัย-
+กษัยกล่อน
+กษัยการ
+กษัยน้ำ
+กษัยเลือด
+กษาปณ์
+กษิดิ
+กษีณาศรพ
+กษีดิ
+กษีร
+กษีร-
+กษีรธารา
+กษีรรส
+กษีรามพุ
+กษีรารณพ
+กสานติ์
+กสิ
+กสิกร
+กสิกรรม
+กสิณ
+กหังปายา
+ก หัน
+กหาปณะ
+ก็แหละ
+กเฬวราก
+กอ
+ก่อ
+ก้อ
+ก๊อ
+กอก
+ก๊อก
+ก่อกรรมทำเข็ญ
+ก่อกวน
+ก่อการ
+กอแก
+กอง
+ก่อง
+ก้อง
+กองกลาง
+กองกอย
+กองกูณฑ์
+กองเกิน
+กองเกียรติยศ
+กองข้าว
+กองโจร
+กองทัพ
+กองทัพน้อย
+กองทุน
+กองพล
+กองพัน
+กองฟอน
+กองมรดก
+กองร้อย
+กองหนุน
+กอซ
+กอด
+กอดแข้งกอดขา
+กอดมือกอดตีน
+กอดอก
+ก่อตั้ง
+ก่อน
+ก้อน
+ก้อนขี้หมา
+ก้อนเส้า
+กอบ
+กอบโกย
+กอบด้วย
+กอบนาง
+ก๊อบปี้
+กอปร
+ก้อม
+กอมก้อ
+ก่อมก้อ
+กอย
+ก้อย
+ก๋อย
+ก้อร่อ
+ก้อร่อก้อติก
+ก่อร่างสร้างตัว
+กอริลลา
+ก่อฤกษ์
+กอล์ฟ
+ก่อแล้วต้องสาน
+กอและ
+ก่อสร้าง
+ก่อหวอด
+กอเอี๊ยะ
+กะ
+กะกร่อม
+กะกร้าว
+กะกลิ้ง
+กะก่อง
+กะกัง
+กะกึก
+กะเกณฑ์
+กะเกาะ
+กะโกระ
+กะง้อนกะแง้น
+กะจัง
+กะแจะ
+กะชะ
+กะชัง
+กะชามาศ
+กะชิง
+กะชึ่กกะชั่ก
+กะแช่
+กะซวก
+กะซ้าหอย
+กะซี่
+กะโซ่
+กะโซ้
+กะดก
+กะดง
+กะดวน
+กะดอกๆ
+กะดะ
+กะดังบาย
+กะดัด
+กะด้าง
+กะดำกะด่าง
+กะดี
+กะดี่
+กะดุ้ง
+กะเด้
+กะเดก
+กะเดี๋ยว
+กะได
+กะตรุด
+กะตอก
+กะต่อย
+กะตัก
+กะตัง
+กะตังกะติ้ว
+กะตังใบ
+กะตังมูตร
+กะต่า
+กะต๊าก
+กะต้ำ
+กะติ๊กริก
+กะติงกะแตง
+กะตีบ
+กะตึงกะแตง
+กะตุ๊ก
+กะตุด
+กะตุมู
+กะตูก
+กะเตก
+กะเตงๆ
+กะเตงเรง
+กะแตว
+กะแต่ว
+กะโต๊ก
+กะโตงกะเตง
+กะโต้งโห่ง
+กะถัว
+กะทกรก
+กะทอ
+กะทัง
+กะทังหัน
+กะทัดรัด
+กะทัน
+กะทันหัน
+กะทับ
+กะทำ
+กะทิ
+กะทิขูด
+กะทือ
+กะทุน
+กะเทย
+กะเทยนางหมั่น
+กะเทาะ
+กะแท้
+กะแท่ง
+กะแทน
+กะนวล
+กะนัด
+กะบอนกะบึง
+กะบ่อนกะแบ่น
+กะบัง
+กะบั้ง
+กะบังรังเฝือก
+กะบังลม
+กะบังหน้า
+กะบิ้ง
+กะบิล
+กะบึงกะบอน
+กะบุด
+กะเบ้อ
+กะเบียน
+กะเบือ
+กะปริดกะปรอย
+กะปริบ
+กะปริบกะปรอย
+กะปลกกะเปลี้ย
+กะปวกกะเปียก
+กะปอม
+กะปอมขาง
+กะปะ
+กะปั่น
+กะป้ำกะเป๋อ
+กะปิ
+กะปู
+กะปูด
+กะปูดหลูด
+กะเปะ
+กะเปิ๊บกะป๊าบ
+กะเปียด
+กะแป้น
+กะแปะ
+กะโปรง
+กะโปโล
+กะผลุบกะโผล่
+กะเผ่น
+กะเผลก
+กะโผลกกะเผลก
+กะพง
+กะพรวดกะพราด
+กะพร่องกะแพร่ง
+กะพริบ
+กะพรุน
+กะพรูดกะพราด
+กะพล้อ
+กะพล่องกะแพล่ง
+กะพ้อ
+กะเพรา
+กะเพียด
+กะเพียดช้าง
+กะเพียดหนู
+กะมง
+กะม่ง
+กะเม็ง
+กะเม็งตัวผู้
+กะเมีย
+กะยุ
+กะร่องกะแร่ง
+กะระตะ
+กะระหนะ
+กะรัง
+กะรัต
+กะรัตหลวง
+กะราง
+กะรางหัวขวาน
+กะริง
+กะริงกะเรียด
+กะรุงกะรัง
+กะรุ่งกะริ่ง
+กะรุน
+กะเร
+กะเรกะร่อน
+กะเร่กะร่อน
+กะเร่อ
+กะเร่อกะร่า
+กะเรี่ยกะราด
+กะโรกะเร
+กะลวย
+กะลอ
+กะล่อกะแล่
+กะลอจี๊
+กะล่อน
+กะล่อมกะแล่ม
+กะล่อยกะหลิบ
+กะละปังหา
+กะละมัง
+กะละแม
+กะละออม
+กะลังตังไก่
+กะลัน
+กะลันทา
+กะลา
+กะลาง
+กะลาซอ
+กะลาสี
+กะลำพอ
+กะลิง
+กะลิงปลิง
+กะลิ้มกะเหลี่ย
+กะลิอ่อง
+กะลุมพี
+กะเล็ง
+กะเล่อกะล่า
+กะเลิด
+กะเลียว
+กะแล
+กะโล่
+กะโลง
+กะวอกกะแวก
+กะวะ
+กะส้มชื่น
+กะส้าหอย
+กะหนอกะแหน
+กะหน็องกะแหน็ง
+กะหนะ
+กะหนุงกะหนิง
+กะหมอก
+กะหร่อง
+กะหรอด
+กะหร็อมกะแหร็ม
+กะหราน
+กะหรี่
+กะหรี่ปั๊บ
+กะหลาป๋า
+กะหล่ำ
+กะหลี่
+กะหลีกะหลอ
+กะหลุกกะหลิก
+กะหำ
+กะหำแพะ
+กะหือ
+กะหูด
+กะเหรี่ยง
+กะเหลาะเปาะ
+กะแหยก
+กะแหะ
+กะโหลก
+กะโหล้ง
+กะไหล่
+กะอวม
+กะออม
+กะอาน
+กะอาม
+กะอิด
+กะอุบ
+กะเอว
+กะแอ
+กะแอน
+กัก
+กั๊ก
+กักกรา
+กักกัน
+กักการุ
+กักขฬะ
+กักขัง
+กักคุม
+กักด่าน
+กักตัว
+กักตุน
+กักบริเวณ
+กัง
+กั้ง
+กังก
+กั้งกระดาน
+กังก้า
+กังเกียง
+กังขา
+กังฉิน
+กังฟู
+กังวล
+กังวาน
+กังเวียน
+กังส
+กังสดาล
+กังไส
+กังหัน
+กังหันใบพัด
+กังหันไอพ่น
+กัจฉปะ
+กัจฉะ
+กัจฉา
+กัญ
+กัญจุก
+กัญจุการา
+กัญชา
+กัญญา
+กัฐ
+กัณฏกะ
+กัณฐ-
+กัณฐก
+กัณฐกะ
+กัณฐชะ
+กัณฐัศ
+กัณฐัศว์
+กัณฐา
+กัณฐี
+กัณฑ์
+กัณฑ์เทศน์
+กัณณ์
+กัณห-
+กัณหธรรม
+กัณหปักษ์
+กัด
+กัดป่า
+กัดฟัน
+กัดลาก
+กัดวาง
+กัดหางตัวเอง
+กัตติกมาส
+กัตติกา
+กัตติเกยา
+กัตรทัณฑ์
+กัตรา
+กัทลี
+กัน
+กั่น
+กั้น
+กันกง
+กั้นกาง
+กันเกรา
+กันไกร
+กันเขากันเรา
+กันชน
+กันชิง
+กันชีพ
+กันเชอ
+กั้นซู่
+กันแซง
+กันดอง
+กันดาร
+กันดาล
+กันแดด
+กันได
+กันต์
+กันตัง
+กันตัว
+กันไตร
+กันทร
+กันทรากร
+กันทะ
+กันท่า
+กันแทรก
+กั้นบัง
+กันพิรุณ
+กันภัย
+กันภิรมย์
+กันเมียง
+กันย์
+กันยา
+กันยายน
+กันลง
+กันลอง
+กันลึง
+กันและกัน
+กันสาด
+กันแสง
+กั้นหยั่น
+กันเอง
+กันเอา
+กับ
+กับแก้
+กับแกล้ม
+กับข้าว
+กับบุเรศ
+กับระเบิด
+กัป
+กัปตัน
+กัปนก
+กัปบาสิก
+กัปปาสิก
+กัปปิย-
+กัปปิยการก
+กัปปิยภัณฑ์
+กัปปิยโวหาร
+กัปปิยะ
+กัปปีย์
+กัมบน
+กัมป-
+กัมปน-
+กัมปนาการ
+กัมปนาท
+กัมประโด
+กัมปี
+กัมพล
+กัมพุช
+กัมพุช-
+กัมพุชพากย์
+กัมพู
+กัมพูชา
+กัมโพช
+กัมมัชวาต
+กัมมัฏฐาน
+กัมมันตภาพรังสี
+กัมมันตรังสี
+กัมมาร
+กัมลาศ
+กัยวิกัย
+กัลชาญ
+กัลบก
+กัลป-
+กัลป์
+กัลปนา
+กัลปพฤกษ์
+กัลปังหา
+กัลปาวสาน
+กัลปิต
+กัลพุม
+กัลเม็ด
+กัลยา
+กัลยาณ-
+กัลยาณมิตร
+กัลยาณี
+กัลยาเยี่ยมห้อง
+กัลเว้า
+กัลหาย
+กัลโหย
+กัลออม
+กัลเอา
+กัศมล
+กัศยป
+กัษณ
+กา
+ก๋า
+กาก
+กาก-
+กากกะรุน
+กากขยาก
+กากข้าว
+กากคติ
+กากณึก
+กากบาท
+กากเพชร
+กากภาษา
+กากรุน
+กากหมู
+กากะทิง
+กากะเยีย
+ก๋ากั่น
+กากี
+กากีแกมเขียว
+กาคาบพริก
+กาง
+ก้าง
+กางเกง
+กางเกียง
+ก้างขวางคอ
+กางของ
+กางขี้มอด
+กางเขน
+ก้างปลา
+กางเวียน
+กาจับหลัก
+กาชาด
+ก๊าซ
+ก๊าซไข่เน่า
+ก๊าซเฉื่อย
+ก๊าซน้ำตา
+กาซะลอง
+กาซะลองคำ
+กาญจน-
+กาญจนา
+กาฐ
+กาด
+ก๊าด
+กาน
+ก่าน
+ก้าน
+ก๊าน
+ก้านขด
+ก้านแข็ง
+ก้านคอ
+กานดา
+กานต์
+ก้านตอง
+ก้านต่อดอก
+กานท์
+กานน
+ก้านบัว
+ก้านพร้าว
+กานพลู
+ก้านมะพร้าว
+ก้านยาว
+ก้านแย่ง
+ก้านเหลือง
+กาน้า
+กาน้ำ
+กาบ
+ก้าบๆ
+กาบกี้
+กาบเขียง
+กาบคู่
+กาบเดียว
+กาบเดี่ยว
+กาบน้ำจืด
+กาบบัว
+กาบปูเล
+กาบพรหมศร
+กาบหอย
+กาบุรุษ
+กาบู
+กาเปี้ยด
+กาฝาก
+กาพย์
+กาพย์กลอน
+กาฟักไข่
+กาเฟอีน
+กาแฟ
+กาม
+กาม-
+ก้าม
+ก้ามกราม
+กามกรีฑา
+กามกิจ
+ก้ามกุ้ง
+ก้ามเกลี้ยง
+กามคุณ
+กามฉันท์
+ก้ามดาบ
+กามตัณหา
+กามท-
+กามเทพ
+กามน
+ก้ามปู
+ก้ามปูหลุด
+กามภพ
+กามราค
+กามโรค
+กามวิตก
+กามวิตถาร
+กามสมังคี
+กามัช
+กามา
+กามาทีนพ
+กามาพจร
+กามามิศ
+กามารมณ์
+กามาวจร
+กามินี
+กามิศ
+กาเมศ
+กาเมสุมิจฉาจาร
+กาโมทย
+กาย
+กาย-
+ก่าย
+กายกรรม
+ก่ายกอง
+กายทวาร
+กายบริหาร
+กายพันธน์
+กายภาพ
+กายภาพบำบัด
+กายวิภาคศาสตร์
+กายสิทธิ์
+กายาพยพ
+กายินทรีย์
+กาเยน
+กาเยนทรีย์
+การ
+การก
+การกลั่นทำลาย
+การขนส่งมวลชน
+การครัว
+การคลัง
+การเงิน
+การจร
+การณ์
+การต่างประเทศ
+การ์ตูน
+การเต
+การนำ
+การบ้าน
+การบ้านการเมือง
+การบุเรียน
+การบูร
+การบูรป่า
+การเปรียญ
+การแผ่รังสี
+การพา
+การเมือง
+การย์
+การเรือน
+การละเล่น
+การวิก
+การเวก
+การะเกด
+การะบุหนิง
+การัณย์
+การันต์
+การางหัวขวาน
+การิตการก
+การิตวาจก
+การุญ
+การุณย์
+กาเรการ่อน
+กาเรียน
+กาเรียนทอง
+กาล
+กาล-
+กาลกรรณี
+กาลกิณี
+กาลกิริยา
+กาลจักร
+กาลเทศะ
+กาลโยค
+กาลสมุตถาน
+กาลักน้ำ
+กาลัญญุตา
+กาลัญญู
+กาลัด
+กาลานุกาล
+กาลิก
+กาลี
+กาแล็กซี
+กาแล็กโทส
+กาว
+ก้าว
+ก้าวก่าย
+ก้าวเฉียง
+ก้าวร้าว
+ก้าวล่วง
+กาววาว
+ก้าวหน้า
+กาวาง
+กาเวียน
+กาแวน
+กาศิก
+กาศิก-
+กาศิกพัสตร์
+กาษฐะ
+กาษา
+กาสร
+กาสะ
+กาสัก
+กาสา
+กาสามปีก
+กาสาร
+กาสาว-
+กาสาวพัสตร์
+กาสาวะ
+กาสิโน
+กาหล
+กาหลง
+กาหลงรัง
+กาหลา
+กาหัก
+กาเหว่า
+กาไหล่
+กาฬ
+กาฬ-
+กาฬจักร
+กาฬปักษ์
+กาฬปักษี
+กาฬพฤกษ์
+กาฬโรค
+กาฬวาต
+กาฬาวก
+กาฮัง
+กำ
+ก่ำ
+ก้ำ
+กำกวม
+กำกัด
+กำกับ
+ก้ำกึ่ง
+กำกูน
+กำเกรียก
+ก้ำเกิน
+กำเกียง
+กำขี้ดีกว่ากำตด
+กำคูน
+ก่ำเคือ
+กำจร
+กำจัด
+กำจาย
+กำชับ
+กำชับกำชา
+กำชำ
+กำโชก
+กำซาบ
+กำซำ
+กำด้น
+กำดัด
+กำดาล
+กำเดา
+กำเดาะ
+ก่ำต้น
+กำตัด
+กำตาก
+กำถั่ว
+กำทวน
+กำธร
+กำนล
+กำนัด
+กำนัน
+กำนัล
+กำเนิด
+กำเนียจ
+กำบด
+กำบน
+กำบัง
+กำบัด
+กำบิด
+ก่ำบึ้ง
+กำเบ้อ
+กำโบล
+กำปอ
+กำปั่น
+กำปั้น
+กำผลา
+กำพง
+กำพด
+กำพต
+กำพร้า
+กำพราก
+กำพวด
+กำพอง
+กำพืด
+กำพุด
+กำพู
+กำเพลิง
+กำแพง
+กำแพ้ง
+กำแพงแก้ว
+กำแพงขาว
+กำแพงเขย่ง
+กำแพงเจ็ดชั้น
+กำแพงมีหูประตูมีช่อง
+กำแพงมีหูประตูมีตา
+กำแพงเศียร
+กำภู
+กำม
+กำมพฤกษ์
+กำมลาศน์
+กำมเลศ
+กำมะถัน
+กำมะลอ
+กำมะหยี่
+กำมะหริด
+กำมังละการ
+กำมังวิลิต
+กำมัชพล
+กำมา
+กำมือ
+กำยาน
+กำยำ
+กำรอ
+กำราก
+กำราบ
+กำราล
+กำรู
+กำเริบ
+กำเริบเสิบสาน
+กำไร
+กำลอง
+กำลัง
+กำลังกิน
+กำลังกินกำลังนอน
+กำลังใจ
+กำลังช้างเผือก
+กำลังช้างสาร
+กำลังดี
+กำลังเทียน
+กำลังภายใน
+กำลังม้า
+กำลังวังชา
+กำลังวัวเถลิง
+กำลุง
+กำลูน
+กำเลา
+กำเลาะ
+กำไล
+กำไลคู่ผี
+กำสรด
+กำสรวล
+กำเสาะ
+กำแสง
+กำหนด
+กำหนดการ
+กำหนัด
+กำหมัด
+กำหราก
+กำเหน็จ
+กำแหง
+กิก
+กิ๊ก
+กิ่ง
+กิ่งก้อย
+กิ้งก่า
+กิ้งกือ
+กิ้งกือเหล็ก
+กิ้งโครง
+กิ่งทองใบหยก
+กิงบุรุษ
+กิ่งหาย
+กิจ
+กิจ-
+กิจกรรม
+กิจการ
+กิจจะ
+กิจจะลักษณะ
+กิจจา
+กิจจานุกิจ
+กิจวัตร
+กิดาการ
+กิดาหยัน
+กิตติ
+กิตติกรรมประกาศ
+กิตติคุณ
+กิตติมศักดิ์
+กิตติศัพท์
+กิน
+กินกริบ
+กินกัน
+กินกำไร
+กินเกลียว
+กินเกลือกินกะปิ
+กินแกลบกินรำ
+กินขวา
+กินขาด
+กินแขก
+กินความ
+กินเครา
+กินเจ
+กินแจ
+กินใจ
+กินช้อน
+กินชัน
+กินซ้าย
+กินดอก
+กินดอกเบี้ย
+กินดอง
+กินด่าง
+กินดาย
+กินดิบ
+กินตะเกียบ
+กินตัว
+กินตา
+กินตำแหน่ง
+กินโต๊ะ
+กินแถว
+กินทาง
+กินที่
+กินที่ลับไขที่แจ้ง
+กินนร
+กินนรเก็บบัว
+กินนรฟ้อนโอ่
+กินนรรำ
+กินนรเลียบถ้ำ
+กินนอกกินใน
+กินนอน
+กินน้ำ
+กินน้ำตา
+กินน้ำใต้ศอก
+กินน้ำพริกถ้วยเดียว
+กินน้ำไม่เผื่อแล้ง
+กินน้ำเห็นปลิง
+กินใน
+กินบนเรือนขี้บนหลังคา
+กินบวช
+กินบ้านกินเมือง
+กินบุญ
+กินบุญเก่า
+กินแบ่ง
+กินปลิง
+กินปลี
+กินปูนร้อนท้อง
+กินเปล่า
+กินเปี้ยว
+กินผัว
+กินเพรา
+กินมือ
+กินเมีย
+กินเมือง
+กินไม่ลง
+กินรังแตน
+กินริน
+กินรี
+กินรูป
+กินแรง
+กินลม
+กินลมกินแล้ง
+กินล้างกินผลาญ
+กินลึก
+กินเวลา
+กินเศษกินเลย
+กินส้อม
+กินสั่ง
+กินสำรับ
+กินสี่ถ้วย
+กินเส้น
+กินหน้า
+กินหลัง
+กินหาง
+กินหู้
+กินเหมือนหมู อยู่เหมือนหมา
+กินเหล็กกินไหล
+กินแหนง
+กินอยู่กับปาก อยากอยู่กับท้อง
+กินอยู่พูวาย
+กิ๊บ
+กิมตึ๋ง
+กิมิชาติ
+กิมิวิทยา
+กิโมโน
+กิโยตีน
+กิระ
+กิริณี
+กิรินท
+กิริเนศวร
+กิริยา
+กิริยาสะท้อน
+กิเลน
+กิเลส
+กิเลส-
+กิเลสมาร
+กิโล
+กิโล-
+กิโลกรัม
+กิโลไซเกิล
+กิโลมกะ
+กิโลเมตร
+กิโลลิตร
+กิโลเฮิรตซ์
+กิ่ว
+กิ๋ว
+กิ๋วๆ
+กี
+กี่
+กี้
+กี๋
+กี่กระตุก
+กีฏ-
+กีฏวิทยา
+กีด
+กีดกัน
+กีดกั้น
+กีดขวาง
+กีดหน้าขวางตา
+กีตาร์
+กีบ
+กีบแรด
+กี่มากน้อย
+กีรติ
+กีฬา
+กึก
+กึกก้อง
+กึกกัก
+กึกกือ
+กึกถอง
+กึง
+กึ่ง
+กึ่งกลาง
+กึงกัง
+กึ่งราชการ
+กึ๋น
+กุ
+กุก
+กุ๊ก
+กุกกัก
+กุกๆ กักๆ
+กุ๊กกิ๊ก
+กุ๊กๆ กิ๊กๆ
+กุกกุฏ-
+กุกกุร-
+กุกขี้หมู
+กุกรรม
+กุก่อง
+กุกะ
+กุกะมะเทิ่ง
+กุกุธภัณฑ์
+กุ้ง
+กุ้งดีด
+กุ้งดีดขัน
+กุ้งเต้น
+กุ้งนาง
+กุ้งฝอย
+กุ้งฟัด
+กุ้งมังกร
+กุ้งไม้
+กุ้งยิง
+กุ้งส้ม
+กุ้งหนามใหญ่
+กุ้งหลวง
+กุ้งเหลือง
+กุ้งแห
+กุ้งแห้ง
+กุงอน
+กุงาน
+กุโงก
+กุจี
+กุญแจ
+กุญแจกล
+กุญแจประจำหลัก
+กุญแจปากตาย
+กุญแจผี
+กุญแจมือ
+กุญแจรหัส
+กุญแจเลื่อน
+กุญแจเสียง
+กุญแจแหวน
+กุญชร
+กุฎ
+กุฎา
+กุฎาคาร
+กุฎาธาร
+กุฎี
+กุฎุมพี
+กุฏฐัง
+กุฏไต
+กุฏิ
+กุณฑ์
+กุณฑล
+กุณฑี
+กุณโฑ
+กุณาล
+กุณิ
+กุณี
+กุด
+กุดัง
+กุดั่น
+กุดา
+กุทัณฑ์
+กุน
+กุ๊น
+กุนเชียง
+กุนที
+กุโนกามอ
+กุบ
+กุบกับ
+กุม
+กุ่ม
+กุมฝอย
+กุมภ-
+กุมภ์
+กุมภการ
+กุมภนิยา
+กุมภัณฑ-
+กุมภัณฑ์
+กุมภัณฑยักษ์
+กุมภา
+กุมภาพันธ์
+กุมภิล
+กุมภีล์
+กุมลัคน์
+กุมเหง
+กุมาร
+กุมารลฬิตา
+กุมารา
+กุมารี
+กุมุท
+กุย
+กุ๊ย
+กุ๋ย
+กุ๋ยๆ
+กุยช่าย
+กุยเฮง
+กุรร
+กุระ
+กุรุง
+กุรุพินท์
+กุรุร
+กุเรา
+กุล
+กุล-
+กุลทูสก
+กุลธิดา
+กุลบดี
+กุลบุตร
+กุลสตรี
+กุลสัมพันธ์
+กุลา
+กุลาซ่อนผ้า
+กุลาดำ
+กุลาตีไม้
+กุลาตีอก
+กุลาลาย
+กุลาหล
+กุลี
+กุลีกุจอ
+กุเลา
+กุแล
+กุเวร
+กุศราช
+กุศล
+กุศลกรรมบถ
+กุศโลบาย
+กุสล
+กุสุม
+กุสุม-
+กุสุมภ์
+กุสุมวิจิตร
+กุสุมา
+กุสุมาลย์
+กุสุมิตลดาเวลลิตา
+กุหนี
+กุหนุง
+กุหร่า
+กุหล่า
+กุหลาบ
+กุแหละ
+กู
+กู่
+กู้
+กู๊ก
+กูฏ
+กูฏา
+กูฏาคาร
+กูณฑ์
+กูด
+กูน
+กูบ
+กูปรี
+กู้ภัย
+กู่ไม่กลับ
+กู้ยืม
+กูรม-
+กูรมะ
+กูรมาวตาร
+กูรำ
+กู้หน้า
+เก
+เก่
+เก๊
+เก๋
+เกก
+เก๊ก
+เกกมะเหรก
+เก๊กหน้า
+เก๊กฮวย
+เก้กัง
+เก้ๆ กังๆ
+เก็ง
+เก่ง
+เก้ง
+เก๋ง
+-เกงกอย
+เก้งก้าง
+เก่งกาจ
+เก็งกำไร
+เกงเขง
+เก๋งเคง
+เก่งแต่ปาก
+เก๋งพั้ง
+เก็จ
+เกจิอาจารย์
+เกชา
+เกณฑ์
+เกณฑ์ตะพัด
+เกณฑ์เมืองรั้ง
+เกณฑ์หัด
+เกด
+เก็ด
+เกตุ
+เกตุ-
+เกตุมาลา
+เกน
+เกนๆ
+เก่น
+เก็บ
+เก็บเกี่ยว
+เก็บข้าว
+เก็บข้าวตก
+เก็บความ
+เก็บงำ
+เก็บตก
+เก็บตัว
+เก็บเนื้อเก็บตัว
+เก็บเบี้ยใต้ถุนร้าน
+เก็บผม
+เก็บไร
+เก็บเล็กผสมน้อย
+เก็บเล็ม
+เก็บเล่ม
+เก็บสี
+เก็บหน้าผ้า
+เก็บหอมรอมริบ
+เกม
+เกย
+เกยลา
+เกยแห้ง
+เกยูร
+เกรง
+เกร็ง
+เกรงขาม
+เกรงใจ
+เกรงอกเกรงใจ
+เกร็ด
+เกรน
+เกร่อ
+เกรอะ
+เกรอะกรัง
+เกราะ
+เกริก
+เกริน
+เกริ่น
+เกรียก
+เกรียง
+เกรียงไกร
+เกรียด
+เกรียน
+เกรียบ
+เกรียม
+เกรียมกรม
+เกรียว
+เกรี้ยว
+เกรี้ยวๆ
+เกรี้ยวกราด
+เกรียวกราว
+เกเร
+เกเรเกตุง
+เกเรเกเส
+เกล็ด
+เกล็ดกระดี่
+เกล็ดกระโห้
+เกล็ดข้าวเม่า
+เกล็ดถี่
+เกล็ดนาค
+เกล็ดปลาช่อน
+เกล็ดหอย
+เกลศ
+เกลอ
+เกลา
+เกล้า
+เกล้ากระผม
+เกล้ากระหม่อม
+เกลาะ
+เกลี่ย
+เกลี้ย
+เกลี้ยกล่อม
+เกลี่ยไกล่
+เกลียง
+เกลี้ยง
+เกลี้ยงเกลา
+เกลียด
+เกลียดตัวกินไข่
+เกลียดปลาไหลกินน้ำแกง
+เกลียว
+เกลียวกลม
+เกลียวข้าง
+เกลียวคอ
+เกลี่ยวดำ
+เกลียวหวาน
+เกลือ
+เกลื้อ
+เกลือก
+เกลือกกลั้ว
+เกลือกกลิ้ง
+เกลือกรด
+เกลือแกง
+เกลือเงิน
+เกลือจิ้มเกลือ
+เกลือจืด
+เกลือด่าง
+เกลือด่างคลี
+เกลื่อน
+เกลื้อน
+เกลื่อนกล่น
+เกลื่อนกลาด
+เกลื่อนความ
+เกลือเบสิก
+เกลือปรกติ
+เกลือเป็นหนอน
+เกลือฟอง
+เกลือยูเรต
+เกลือสมุทร
+เกลือสินเธาว์
+เกไล
+เกวัฏ
+เกวียน
+เกวียนหลวง
+เกศ
+เกศ-
+เกศธาตุ
+เกศพ
+เกศว
+เกศา
+เกศากันต์
+เกศินี
+เกศี
+เกษตร
+เกษตรกร
+เกษตรกรรม
+เกษตรและสหกรณ์
+เกษตรศาสตร์
+เกษม
+เกษมศานต์
+เกษมสันต์
+เกษียณ
+เกษียณอายุ
+เกษียน
+เกษียร
+เกษียรสมุทร
+เกส
+เกสร
+เกสรทั้งห้า
+เกสรี
+เกสา
+เกสี
+เก้อ
+เกอิชา
+เกะ
+เกะกะ
+เกา
+เก่า
+เก้า
+เก๋า
+เกาต์
+เกาทัณฑ์
+เกาทุมพร
+เกาบิน
+เกาบิล
+เกามาร
+เกาลัด
+เกาลัดจีน
+เกาลิน
+เกาไศย
+เกาหลี
+เกาเหลา
+เกาเหลียง
+เก้าอี้
+เกาะ
+เกาะกิน
+เกาะแกะ
+เกิง
+เกิ้ง
+เกิด
+เกิดสูรย์
+เกิน
+เกินการ
+เกินกิน
+เกินคน
+เกินงาม
+เกินดี
+เกินตัว
+เกินไป
+เกินเลย
+เกินหน้า
+เกิบ
+เกีย
+เกียกกาย
+เกียง
+เกี่ยง
+เกี๋ยง
+เกี่ยงงอน
+เกี่ยงตาย
+เกียจ
+เกียจกล
+เกียจคร้าน
+เกียด
+เกียดกัน
+เกียน
+เกี้ยมไฉ่
+เกี้ยมอี๋
+เกียร์
+เกียรติ
+เกียรติ-
+เกียรติ์
+เกียรติคุณ
+เกียรตินิยม
+เกียรติประวัติ
+เกียรติภูมิ
+เกียรติยศ
+เกียรติศักดิ์
+เกี่ยว
+เกี้ยว
+เกี๊ยว
+เกี่ยวก้อย
+เกี้ยวเกไล
+เกี่ยวข้อง
+เกี่ยวข้าว
+เกี้ยวคอไก่
+เกี่ยวดอง
+เกี่ยวดองหนองยุ่ง
+เกี้ยวนวม
+เกี่ยวเบ็ด
+เกี้ยวประทีป
+เกี่ยวแฝกมุงป่า
+เกี่ยวพัน
+เกี้ยวพาน
+เกี้ยวพาราสี
+เกี่ยวโยง
+เกี๊ยะ
+เกื้อ
+เกือก
+เกือกม้า
+เกื้อกูล
+เกือบ
+เกือบไป
+แก
+แก่
+แก้
+แก่กล้า
+แก้เกี้ยว
+แก้ขัด
+แก้ไข
+แก้แค้น
+แกง
+แก่ง
+แก้ง
+แก๊ง
+แก้งก้น
+แกงขม
+แกงจืด
+แกงได
+แกงแนง
+แกงบวด
+แกงเผ็ด
+แก่งแย่ง
+แกงร้อน
+แกงส้ม
+แก่ดีกรี
+แก่แดด
+แกโดลิเนียม
+แก้ตก
+แก่ตัว
+แก้ตัว
+แก้ต่าง
+แก้ที
+แก้โทษ
+แกน
+แก่น
+แก่นแก้ว
+แก่นสาร
+แกนะ
+แกแน
+แก้บน
+แก่บ้าน
+แก้บาป
+แก๊ป
+แก้เผ็ด
+แก้ฝัน
+แก่ไฟ
+แกม
+แก้ม
+แก้มช้ำ
+แก้มแดง
+แกมมา
+แก้มแหม่ม
+แก้มือ
+แกรก
+แกร่ง
+แกร็น
+แกรนิต
+แกรไฟต์
+แกร่ว
+แกระ
+แก่แรด
+แกล
+แกล่
+แกล้ง
+แกล้งเกลา
+แกลน
+แกลบ
+แกลบหนู
+แกลบหูหนู
+แกล้ม
+แกลลอน
+แกลเลียม
+แกล้ว
+แกละ
+แก้ลำ
+แกแล
+แกว
+แก้ว
+แก้วก๊อ
+แก้วกุ้ง
+แก้วแกลบ
+แกว่ง
+แกว่งไกว
+แกว่งตีนหาเสี้ยน
+แก้วชิงดวง
+แก้วตา
+แกว่น
+แก้วผลึก
+แก้วมรกต
+แก้ววิเชียร
+แก้วสารพัดนึก
+แก้วสีไม้ไผ่
+แก้วหิน
+แก้วหู
+แก่วัด
+แก๊ส
+แก๊สไข่เน่า
+แก๊สเฉื่อย
+แก๊สน้ำตา
+แก้หน้า
+แกะ
+แกะดำ
+แกะรอย
+แกะสะเก็ด
+โก่
+โก้
+โก๋
+โกก
+โกกเกก
+โกกนุท
+โกกิล-
+โกกิลา
+โกโก้
+โกง
+โก่ง
+โกงกาง
+โก้งเก้ง
+โกงโก้
+โก้งโค้ง
+โกเชาว์
+โกญจ-
+โกญจน
+โกญจนาท
+โกญจา
+โกฏิ
+โกฐ
+โกฐกระดูก
+โกฐกะกลิ้ง
+โกฐกักกรา
+โกฐก้านพร้าว
+โกฐเขมา
+โกฐจุฬาลัมพา
+โกฐจุฬาลำพา
+โกฐชฎามังษี
+โกฐชฎามังสี
+โกฐเชียง
+โกฐน้ำเต้า
+โกฐพุงปลา
+โกฐสอ
+โกฐหอม
+โกฐหัวบัว
+โกฐาส
+โกณ
+โกณก
+โกดัง
+โกตไต
+โกทัณฑ์
+โกน
+โก่น
+โก๋น
+โกปินำ
+โกมล
+โกมุท
+โกเมน
+โกเมศ
+โกย
+โกยท้อง
+โกร้
+โกรก
+โกรกกราก
+โกรกไกร
+โกรกธาร
+โกรกหวัด
+โกรง
+โกร่ง
+โกร่งกร่าง
+โกรงเกรง
+โกร๋งเกร๋ง
+โกรญจ
+โกรด
+โกรต๋น
+โกรธ
+โกรธขึ้ง
+โกรธา
+โกร๋น
+โกร๋นเกร๋น
+โกรม
+โกรมธาตุ
+โกรย
+โกรศ
+โกโรโกเต
+โกโรโกโรก
+โกโรโกโส
+โกลง
+โกลน
+โกลาหล
+โกไล
+โกวิท
+โกวิฬาร
+โกศ
+โกศล
+โกษ
+โกษม
+โกษย
+โกษีย์
+โกส
+โกสน
+โกสัช
+โกสินทร์
+โกสีย์
+โกสุม
+โกไสย
+โกหก
+โกหวา
+ใกล้
+ใกล้เกลือกินด่าง
+ไก
+ไก่
+ไก้
+ไก๊
+ไก๋
+ไก่กอม
+ไก่แก่แม่ปลาช่อน
+ไก่แก้ว
+ไก่เขี่ย
+ไก่ชน
+ไก๋แดง
+ไก่เตี้ย
+ไก่นา
+ไก่ป่า
+ไกพัล
+ไก่ฟ้า
+ไก่ฟ้าพญาลอ
+ไกร
+ไกรพ
+ไกรลาส
+ไกรศร
+ไกรศรี
+ไกรสร
+ไกรสรี
+ไกรสิทธิ
+ไก่รองบ่อน
+ไกล
+ไกล่
+ไกล่เกลี่ย
+ไกลปืนเที่ยง
+ไกลาส
+ไกว
+ไกวัล
+ไก่สามอย่าง
+ไก่เห็นตีนงู งูเห็นนมไก่
+ไก่โห่
+ไก่ไห้
+ไก่อ่อน
+ข
+ขง
+ขงจื๊อ
+ขจร
+ขจรจบ
+ขจอก
+ขจัด
+ขจัดขจาย
+ขจ่าง
+ขจาย
+ขจาว
+ขจิต
+ขจิริด
+ขจี
+ขจุย
+ขเจา
+ขณะ
+ขด
+ขดถวาย
+ขดาน
+ขตอย
+ขทิง
+ขทึง
+ขน
+ข้น
+ข้นแค้น
+ขนง
+ขนงเนื้อ
+ขนด
+ขนทรายเข้าวัด
+ขนน
+ขนบ
+ขนบธรรมเนียม
+ขนบประเพณี
+ขนพอง
+ขนเพชร
+ขนม
+ขนมครก
+ขนมจีน
+ขนมทราย
+ขนมผสมน้ำยา
+ขนมผักกาด
+ขนมเส้น
+ขนมหัวผักกาด
+ขนแมว
+ขนลุก
+ขนลุกขนพอง
+ขนส่ง
+ขนสัตว์
+ขนหน้าแข้งไม่ร่วง
+ขนหนู
+ขนหยอง
+ขนอง
+ขนอน
+ขนอบ
+ขนอุย
+ขนัด
+ขนัน
+ขนาก
+ขนาง
+ขนาด
+ขนาน
+ขนานน้ำ
+ขนานลี่
+ขนาบ
+ขนาย
+ขนำ
+ขนิษฐ
+ขนิษฐา
+ขนุน
+ขนุนนก
+ขนุนป่า
+ขนุนสำปะลอ
+ขบ
+ขบขัน
+ขบเขี้ยวเคี้ยวฟัน
+ขบคิด
+ขบฉัน
+ขบถ
+ขบปัญหา
+ขบเผาะ
+ขบไม่แตก
+ขบวน
+ขบวนการ
+ขบวร
+ขบูร
+ขม
+ข่ม
+ข่มขวัญ
+ข่มขี่
+ขมขื่น
+ข่มขืน
+ข่มขืนกระทำชำเรา
+ข่มขืนใจ
+ข่มขู่
+ข่มเขาโคขืนให้กินหญ้า
+ขมงโกรย
+ข่มท้อง
+ข่มนาม
+ขมเป็นยา
+ขมม
+ขมวด
+ขมวดยา
+ขมวน
+ข่มหมู
+ขมหิน
+ข่มเหง
+ข่มเหงคะเนงร้าย
+ขมอง
+ขม่อม
+ขม่อมบาง
+ขมอย
+ขมัง
+ขมับ
+ขมา
+ขม้ำ
+ขมิ้น
+ขมิ้นกับปูน
+ขมิ้นขาว
+ขมิ้นขึ้น
+ขมิ้นเครือ
+ขมิ้นชัน
+ขมิ้นนาง
+ขมิ้นลิง
+ขมิ้นหัวขึ้น
+ขมิ้นอ้อย
+ขมิบ
+ขมีขมัน
+ขมึง
+ขมึงทึง
+ขมุ
+ขมุกขมัว
+ขมุดขมิด
+ขมุบ
+ขมุบขมิบ
+ขมุม
+ขโมย
+ขย-
+ขยด
+ขยม
+ขย่ม
+ขยล
+ขยอก
+ขยอง
+ขย่อน
+ขย้อน
+ขยะ
+ขยะแขยง
+ขยัก
+ขยักขย่อน
+ขยักขย้อน
+ขยัน
+ขยั้น
+ขยับ
+ขยับขยาย
+ขยับเขยื้อน
+ขยาด
+ขยาบ
+ขยาย
+ขยายขี้เท่อ
+ขยำ
+ขย้ำ
+ขยิก
+ขยิบ
+ขยิ่ม
+ขยี้
+ขยี่ขยัน
+ขยุกขยิก
+ขยุกขยุย
+ขยุบ
+ขยุบขยิบ
+ขยุม
+ขยุ้ม
+ขยุ้มตีนหมา
+ขยุย
+ขรม
+ขรรค-
+ขรรค์
+ขรัว
+ขรัวยาย
+ขริบ
+ขรี
+ขรึม
+ขรุขระ
+ขล้ง
+ขลบ
+ขลม
+ขลวน
+ขล้อเงาะ
+ขล้อเทียน
+ขลัง
+ขลับ
+ขลา
+ขลาด
+ขลาย
+ขลิบ
+ขลึง
+ขลุก
+ขลุกขลัก
+ขลุกขลิก
+ขลุกขลุ่ย
+ขลุบ
+ขลุม
+ขลุมประเจียด
+ขลุ่ย
+ขลู
+ขลู่
+ขวง
+ข่วง
+ขวด
+ขวดตีนช้าง
+ขวดโหล
+ขวน
+ข่วน
+ขวนขวาย
+ขวบ
+ขวย
+ขวยเขิน
+ขวยใจ
+ขวะไขว่เขวี่ย
+ขวักไขว่
+ขวัญ
+ขวัญเกี่ยง
+ขวัญข้าว
+ขวัญแขวน
+ขวัญใจ
+ขวัญดี
+ขวัญตา
+ขวัญบ่า
+ขวัญบิน
+ขวัญเมือง
+ขวัญหนี
+ขวัญหนีดีฝ่อ
+ขวัญหาย
+ขวัญอ่อน
+ขวัด
+ขวัดขวิด
+ขวัดแคว้ง
+ขวั้น
+ขวับ
+ขวับเขวียว
+ขวา
+ขวาก
+ขวากหนาม
+ขวาง
+ขว้าง
+ขว้างกา
+ขว้างข้าวเม่า
+ขว้างค้อน
+ขว้างงูไม่พ้นคอ
+ขว้างจักร
+ขวางเชิง
+ขวางๆ รีๆ
+ขวางโลก
+ขวาด
+ขวาน
+ขวานผ่าซาก
+ขวานฟ้า
+ขวายขวน
+ขวาว
+ขว้าว
+ขวิด
+ขษณะ
+ขษัย
+ขษีณาศรพ
+ขษีร
+ขอ
+ข่อ
+ข้อ
+ขอก
+ข้อกฎหมาย
+ข้อกติกา
+ข้อกำหนด
+ขอแกว
+ข้อเขียน
+ข้อไข
+ข้อความ
+ข้อคัดย่อ
+ขอคำน้อย
+ข้อคิด
+ข้อคิดเห็น
+ของ
+ข้อง
+ของกลาง
+ของกอง
+ของกำนัล
+ของกิน
+ของเก่า
+ของขบเคี้ยว
+ของขลัง
+ของขวัญ
+ข้องขัด
+ของแข็ง
+ของค้าง
+ของคาว
+ของเค็ม
+ของเคียง
+ของโจร
+ข้องใจ
+ของชำ
+ของใช้
+ของดี
+ของเถื่อน
+ของนอก
+ของร้อน
+ของลับ
+ของเล่น
+ของเลื่อน
+ของเลื่อนเตือนขันหมาก
+ของวัด
+ของว่าง
+ข้องแวะ
+ของสงฆ์
+ของสงวน
+ของสด
+ของสดของคาว
+ของสดคาว
+ของหลวง
+ของหวาน
+ของหายตะพายบาป
+ของเหลว
+ของแห้ง
+ของไหล
+ของไหว้
+ของ้อ
+ของ้าว
+ขอฉาย
+ขอช้าง
+ขอด
+ขอดค่อน
+ขอเดชะ
+ขอตัว
+ขอทอง
+ขอทาน
+ขอที
+ข้อเท็จจริง
+ขอโทษ
+ขอน
+ข่อน
+ข้อน
+ขอนดอก
+ขอนสัก
+ขอนิสัย
+ขอบ
+ขอบข่าย
+ขอบเขต
+ขอบคุณ
+ขอบใจ
+ขอบทาง
+ขอบพระคุณ
+ขอบไร
+ขอบเหล็ก
+ข้อบังคับ
+ข้อบัญญัติ
+ขอประทาน
+ขอประทานโทษ
+ข้อปลีกย่อย
+ขอไปที
+ขอเฝ้า
+ขอพระราชทาน
+ข้อพับ
+ขอม
+ข้อมือขาว
+ข้อมูล
+ข้อแม้
+ข่อย
+ข้อย
+ข่อยน้ำ
+ข่อยหนาม
+ข่อยหยอง
+ขอยืม
+ขอร้อง
+ขอรับ
+ขอรับกระผม
+ขอรับผม
+ข้อราชการ
+ขอแรง
+ข้อศอก
+ข้อสอบ
+ขอสับ
+ข้อเสือ
+ข้อหา
+ข้อใหญ่ใจความ
+ขออภัย
+ข้ออ้อย
+ข้ออ้าง
+ขะข่ำ
+ขะแข่น
+ขะแข้น
+ขะแจะ
+ขะแถก
+ขะนาน
+ขะเน็ด
+ขะมอมขะแมม
+ขะมักเขม้น
+ขะมุกขะมอม
+ขะแมซอ
+ขะแมธม
+ขะยิก
+ขะยุก
+ขะเย้อแขย่ง
+ขะแยะ
+ขัค
+ขัง
+ขังข้อ
+ขังขอก
+ขังปล้อง
+ขังหน่วย
+ขัช
+ขัชก
+ขัณฑ-
+ขัณฑสกร
+ขัณฑสีมา
+ขัด
+ขัดเกลา
+ขัดขวาง
+ขัดข้อง
+ขัดขืน
+ขัดเขมร
+ขัดเขิน
+ขัดแข็ง
+ขัดคอ
+ขัดเคือง
+ขัดแค้น
+ขัดจังหวะ
+ขัดใจ
+ขัดดอก
+ขัดตา
+ขัดตาทัพ
+ขัดตำนาน
+ขัดแตะ
+ขัดบท
+ขัดเบา
+ขัดมอน
+ขัดมอนตัวผู้
+ขัดมอนหลวง
+ขัดยอก
+ขัดแย้ง
+ขัดลาภ
+ขัดสน
+ขัดสมาธิ
+ขัดหนัก
+ขัดห้าง
+ขัดหู
+ขัตติย-
+ขัตติยมานะ
+ขัน
+ขั้น
+ขันกว้าน
+ขันแข็ง
+ขันชะเนาะ
+ขันเชิง
+ขันต่อ
+ขันติ
+ขันตี
+ขันโตก
+ขันทองพยาบาท
+ขันที
+ขันธ์
+ขันธาวาร
+ขันน้ำพานรอง
+ขันลงหิน
+ขันสมอ
+ขันสาคร
+ขันสู้
+ขันหมาก
+ขันเหม
+ขันอาสา
+ขับ
+ขับขัน
+ขับขี่
+ขับเคลื่อน
+ขับเคี่ยว
+ขับซอ
+ขับถ่าย
+ขับพล
+ขับไม้
+ขับไม้บัณเฑาะว์
+ขับร้อง
+ขัย
+ขัว
+ขั้ว
+ขั้วกระจก
+ขั้วบวก
+ขั้วแม่เหล็ก
+ขั้วแม่เหล็กโลก
+ขั้วลบ
+ขั้วโลก
+ขา
+ข่า
+ข้า
+ขาก
+ขากบ
+ขากรรไตร
+ขาก๊วย
+ขากอม
+ขาเกวียน
+ข้าเก่าเต่าเลี้ยง
+ขาไก่
+ขาเขียด
+ขาง
+ข่าง
+ข้าง
+ข้างๆ
+ข้างกบ
+ข้างกระดาน
+ข้างขึ้น
+ข้างควาย
+ข้างๆ คูๆ
+ข้างเงิน
+ข้างจัน
+ขางดัง
+ขางแดง
+ข้างตก
+ข้างตะเภา
+ข้างตีน
+ข้างแรม
+ข้างลาย
+ข้างหัวนอน
+ข้างออก
+ขาจร
+ข้าเจ้า
+ขาณุ
+ขาด
+ขาดกัน
+ขาดคราว
+ขาดคอช้าง
+ขาดค่า
+ขาดคำ
+ขาดแคลน
+ขาดใจ
+ขาดตกบกพร่อง
+ขาดตลาด
+ขาดตอน
+ขาดตัว
+ขาดทุน
+ขาดปาก
+ขาดมือ
+ขาดเม็ด
+ขาดลอย
+ขาดหัวช้าง
+ขาดเหลือ
+ขาดอายุ
+ข่าแดง
+ข่าต้น
+ขาทนียะ
+ขาทราย
+ข้าไท
+ขาน
+ขานกยาง
+ขานไข
+ขานนาค
+ขานรหัส
+ข้านอกเจ้า ข้าวนอกหม้อ
+ข้าน้อย
+ขานาง
+ขาบ
+ขาประจำ
+ข้าแผ่นดิน
+ข้าเฝ้า
+ข้าพเจ้า
+ข้าพระ
+ข้าพระพุทธเจ้า
+ขาพับ
+ขาม
+ข่าม
+ข้าม
+ข้ามๆ
+ข้ามน้ำข้ามทะเล
+ข้ามน้ำข้ามท่า
+ข้ามสมุทร
+ข้ามหน้า
+ข้ามหน้าข้ามตา
+ข้ามหัว
+ขาม้า
+ขาย
+ข่าย
+ขายขาด
+ข่ายงาน
+ขายชาติ
+ขายชื่อ
+ขายตัว
+ขายตามคำพรรณนา
+ขายตามตัวอย่าง
+ขายทอดตลาด
+ขายบ้านขายเมือง
+ขายปลีก
+ขายผ้าเอาหน้ารอด
+ขายเผื่อชอบ
+ขายฝาก
+ขายส่ง
+ขายหน้า
+ขายหน้าขายตา
+ขายหน้าวันละห้าเบี้ย
+ขายหู
+ขายเหมา
+ข้าราชการ
+ขาล
+ขาว
+ข่าว
+ข้าว
+ข่าวกรอง
+ข้าวกรู
+ข้าวกล้อง
+ข้าวกล้า
+ข้าวเกรียบ
+ข้าวเกรียบปากหม้อ
+ข้าวเกรียบอ่อน
+ข้าวเก่า
+ข้าวแกง
+ข้าวโกบ
+ข้าวขวัญ
+ข้าวของ
+ข้าวข้า
+ข้าวแขก
+ข่าวคราว
+ข้าวควบ
+ข้าวคำ
+ข้าวแคบ
+ข้าวงัน
+ข้าวจี่
+ขาวจีบ
+ข้าวเจ้า
+ข้าวแจก
+ข้าวแช่
+ข้าวซ้อม
+ข้าวซอย
+ข้าวแดกงา
+ข้าวแดงแกงร้อน
+ข้าวต้ม
+ข้าวต้มน้ำวุ้น
+ข้าวต้มปัด
+ข้าวตอก
+ข้าวตอกตั้ง
+ข้าวตอกแตก
+ข้าวตัง
+ข้าวตาก
+ข้าวตู
+ข้าวแตก
+ข้าวแตน
+ข้าวทิพย์
+ข้าวนก
+ข้าวนึ่ง
+ข้าวบาตร
+ข้าวบิณฑ์
+ข้าวบุหรี่
+ข้าวเบา
+ข้าวเบือ
+ข้าวประดับดิน
+ข้าวปลูก
+ข้าวปัด
+ข้าวป่า
+ข้าวปาด
+ข้าวปุ้น
+ข้าวเปรต
+ข้าวเปลือก
+ข้าวเปียก
+ข้าวผอก
+ข้าวผอกกระบอกน้ำ
+ข้าวพระ
+ขาวพวง
+ข้าวพอง
+ข่าวพาดหัว
+ข้าวโพด
+ข้าวฟ่าง
+ข้าวเภา
+ข้าวมัน
+ขาวม้า
+ข้าวมิ่น
+ข้าวเม่า
+ข้าวเม่าทอด
+ข่าวยกเมฆ
+ข้าวยากหมากแพง
+ข้าวยาคู
+ข้าวยำ
+ข้าวเย็นใต้
+ข้าวเย็นเหนือ
+ข้าวละมาน
+ข่าวล่า
+ข่าวสด
+ข้าวสวย
+ข้าวสาก
+ข่าวสาร
+ข้าวสาร
+ข้าวสุก
+ข้าวเส้น
+ข้าวหนัก
+ข้าวหมก
+ข้าวหมาก
+ข้าวหลาม
+ข้าวหลามตัด
+ข้าวหัวโขน
+ข้าวหางช้าง
+ข้าวเหนียว
+ข้าวเหนียวดำ
+ข้าวเหลือเกลืออิ่ม
+ขาวใหญ่
+ข้าวใหม่
+ข้าวใหม่น้อย
+ข้าวใหม่ปลามัน
+ข้าวใหม่ใหญ่
+ข้าวอังกุลี
+ข้าวฮาง
+ข้าศึก
+ขาหมา
+ขาหยั่ง
+ข้าหลวง
+ข้าหลวงเดิม
+ข้าหลวงน้อย
+ข้าหลวงหลังลาย
+ขาอ่อน
+ขำ
+ข่ำเขียว
+ขิก
+ขิกๆ
+ขิง
+ขิ่ง
+ขิงก็รา ข่าก็แรง
+ขิงแกลง
+ขิงแครง
+ขิงแห้ง
+ขิด
+ขิปสัทโท
+ขิม
+ขี่
+ขี้
+ขี้กบ
+ขี้กระทาเกลือ
+ขี้ก้อนใหญ่ให้เด็กเห็น
+ขี้กะโล้โท้
+ขี้กา
+ขี้ก้าง
+ขี้กาดง
+ขี้กาแดง
+ขี้กาเหลี่ยม
+ขี้เกลือ
+ขี้ขม
+ขี้ขวง
+ขี้ข้า
+ขี้ขุย
+ขี้เข็บ
+ขี้ครอก
+ขี้ครั่ง
+ขี้ควาย
+ขี้คุก
+ขี้เค้า
+ขี้โครง
+ขี้จาบ
+ขี่ช้างจับตั๊กแตน
+ขี้ซ้าย
+ขี้เซา
+ขี้ไซ้
+ขีณะ
+ขีณาสพ
+ขีด
+ขีดขั้น
+ขีดคร่อม
+ขีดคั่น
+ขีดเส้นตาย
+ขี้เดือด
+ขี้แดด
+ขี้ตด
+ขี้ตังนี
+ขี้ติ้ว
+ขี้ตืด
+ขี้เต่า
+ขี้แต้
+ขี้ไต้
+ขี้ถัง
+ขี้เถ้า
+ขี้ไถ
+ขี้ทา
+ขี้ทูด
+ขี้เท่อ
+ขี้เทา
+ขี้เทือก
+ขี้นก
+ขีปนาวุธ
+ขีปนาวุธนำวิถี
+ขี้ปะติ๋ว
+ขี้ปาก
+ขี้เป้
+ขี้เป็ด
+ขี้ผง
+ขี้ผึ้ง
+ขี้ฝิ่น
+ขี้แพ้ชวนตี
+ขี้มอด
+ขี้ม้า
+ขี่ม้าตีคลี
+ขี่ม้าเลียบค่าย
+ขี่ม้าส่งเมือง
+ขี้มิ่น
+ขี้มูก
+ขี้เมฆ
+ขี้แมลงวัน
+ขี้แมว
+ขี้ไม่ให้หมากิน
+ขี้ยอก
+ขี้ยา
+ขี้แย
+ขีร
+ขี้รังแค
+ขี้ราดโทษล่อง
+ขี้ริ้ว
+ขี้เรื้อน
+ขี้เรื้อนกวาง
+ขี้แรด
+ขี้แรดล้อมปรวด
+ขี้ลม
+ขี้ลอก
+ขี้ลีบ
+ขี้เล็บ
+ขี้โล้
+ขี้สูด
+ขี้หดตดหาย
+ขี้หนอน
+ขี้หน้า
+ขี้หนู
+ขี้หมา
+ขี้เหร่
+ขี้เหล็ก
+ขี้ใหม่หมาหอม
+ขี้อ้น
+ขี้อ้าย
+ขึง
+ขึ้ง
+ขึ้งโกรธ
+ขึงขัง
+ขึ้งเคียด
+ขึงตา
+ขึงพืด
+ขึงอูด
+ขึ้น
+ขึ้นเขียง
+ขึ้นครู
+ขึ้นคาน
+ขึ้นใจ
+ขึ้นฉ่าย
+ขึ้นชื่อ
+ขึ้นชื่อว่า
+ขึ้นซัง
+ขึ้นต้นไม้สุดยอด
+ขึ้นปาก
+ขึ้นพลับพลา
+ขึ้นไม้ขึ้นมือ
+ขึ้นระวาง
+ขึ้นร้าน
+ขึ้นสาย
+ขึ้นเสียง
+ขึ้นหน้าขึ้นตา
+ขึ้นหม้อ
+ขึ้นหา
+ขึ้นเหนือล่องใต้
+ขืน
+ขื่น
+ขื่นขม
+ขืนใจ
+ขื่อ
+ขื่อกะละปังหา
+ขื่อขวาง
+ขื่อคัด
+ขื่อจมูก
+ขื่อเท่าต่อ
+ขื่อผี
+ขื่อมุก
+ขื่อหมู่
+ขุก
+ขุด
+ขุดคุ้ย
+ขุดด้วยปากถากด้วยตา
+ขุดดินกินหญ้า
+ขุดบ่อล่อปลา
+ขุน
+ขุ่น
+ขุ่นข้องหมองใจ
+ขุ่นเคือง
+ขุ่นแค้น
+ขุ่นใจ
+ขุนทอง
+ขุนนาง
+ขุนนางใช่พ่อแม่ หินแง่ใช่ตายาย
+ขุนน้ำ
+ขุนบาล
+ขุนแผน
+ขุนพล
+ขุนพัฒน์
+ขุนเพ็ด
+ขุ่นมัว
+ขุนไม่ขึ้น
+ขุนศาล
+ขุนศึก
+ขุ่นหมอง
+ขุนหมื่น
+ขุนหลวง
+ขุม
+ขุย
+ขุยไผ่
+ขุยอินทรีย์
+ขู
+ขู่
+ขู่กรรโชก
+ขู่ขวัญ
+ขู่เข็ญ
+ขูด
+ขูดรีด
+ขูดเลือด
+ขูดเลือดขูดเนื้อ
+เข
+เข้
+เขก
+เข็ง
+เข่ง
+เขจร
+เข็ญ
+เข็ญใจ
+เข็ด
+เข็ดข้อ
+เข็ดข้อเข็ดลำ
+เข็ดเขี้ยว
+เข็ดฟัน
+เขดา
+เขต
+เขตแดน
+เขตเลือกตั้ง
+เขตอำนาจศาล
+เขน
+เข็น
+เข่น
+เข่นเขี้ยว
+เข็นครกขึ้นภูเขา
+เข่นฆ่า
+เขนง
+เขนงนายพราน
+เขน็ด
+เขนย
+เขบ็จขบวน
+เขบ็ต
+เขม-
+เข็ม
+เข้ม
+เข็มกลัด
+เข้มข้น
+เข็มขัด
+เข้มขาบ
+เข้มขาบไหม
+เข้มแข็ง
+เข็มควัก
+เขม็ง
+เข้มงวด
+เข็มซ่อนปลาย
+เขม็ดแขม่
+เข็มทิศ
+เขม่น
+เขม้น
+เขม้นขะมัก
+เขมร
+เขมรไทรโยค
+เขมรพวง
+เขมรราชบุรี
+เขมรเหลือง
+เขมรใหญ่
+เขมา
+เขม่า
+เขมาโกรย
+เขม่าซาง
+เขมือบ
+เขย
+เขยก
+เขย่ง
+เขย่งเก็งกอย
+เขยตาย
+เขย้อแขย่ง
+เขยอะขยะ
+เขย่า
+เขยิน
+เขยิบ
+เขยิบขยาบ
+เขยิบฐานะ
+เขยียวขยอน
+เขยื้อน
+เขรอะ
+เขลง
+เขลอะ
+เขละ
+เขลา
+เขลาะ
+เขว
+เขษตร
+เขษม
+เขษียร
+เขฬะ
+เขะขะ
+เขา
+เข่า
+เข้า
+เข้ากระโจม
+เข้ากระดูกดำ
+เขากวาง
+เข้าเกณฑ์
+เข้าเกีย
+เขาแกะ
+เข้าข้อ
+เข้าขา
+เข้าข้าง
+เข้าคอ
+เข้าคิว
+เข้าคู่
+เข้าเครื่อง
+เข้าเค้า
+เข้าไคล
+เข้าเงียบ
+เข้าแง่
+เข้าเจ้า
+เข้าเจ้าเข้านาย
+เข้าใจ
+เข้าชื่อ
+เข้าฌาน
+เข้าด้ายเข้าเข็ม
+เข้าเดือย
+เข้าตรีทูต
+เข้าตอง
+เข้าตัว
+เข้าตาจน
+เข้าตามตรอกออกตามประตู
+เข้าตาร้าย
+เข้าตำรา
+เข้าตู้
+เข้าไต้เข้าไฟ
+เข้าถ้ำ
+เข้าถึง
+เข้าเถื่อนอย่าลืมพร้า
+เข้าทรง
+เข้าท่า
+เข้าที
+เข้าที่
+เข้าทุน
+เข้านอกออกใน
+เข้าเนื้อ
+เข้าแบบ
+เข้าแบบเข้าแผน
+เข้าปก
+เข้าปากไม้
+เข้าปิ้ง
+เข้าปีก
+เขาเปล้า
+เข้าไป
+เข้าผี
+เข้าผู้เข้าคน
+เข้าฝัก
+เข้าฝัน
+เข้าเฝ้า
+เข้าเฝือก
+เข้าพกเข้าห่อ
+เข้าพรรษา
+เข้าพระเข้านาง
+เข้าพุง
+เขามอ
+เข้าม่าน
+เข้าเมืองตาหลิ่วต้องหลิ่วตาตาม
+เข้าไม้
+เข้ายา
+เข้ารกเข้าพง
+เข้ารหัส
+เข้าร่องเข้ารอย
+เข้ารอบ
+เข้ารอย
+เข้าร้าย
+เข้ารีต
+เข้ารูป
+เข้ารูปเข้ารอย
+เข่าลา
+เข้าลิ้น
+เข้าเล่ม
+เข้าเลือด
+เข้าเลือดเข้าเนื้อ
+เข้าโลง
+เข้าวัดเข้าวา
+เข้าว่า
+เข้าเวร
+เข้าแว่น
+เข้าเศียร
+เข้าสมาธิ
+เข้าสุหนัต
+เข้าใส่
+เข้าไส้
+เข้าหน้า
+เข้าหม้อ
+เข้าหมิ้น
+เข้าหลัก
+เข้าหา
+เข้าหุ้น
+เข้าหู
+เข้าหูซ้ายทะลุหูขวา
+เข้าให้
+เข้าไหนเข้าได้
+เขาอ่อน
+เข่าอ่อน
+เขิง
+เขิน
+เขิบ
+เขี่ย
+เขียง
+เขียงเท้า
+เขียงพระนางอี่
+เขียงพร้า
+เขียด
+เขียดตะปาด
+เขียน
+เขี่ยน
+เขียนด้วยมือลบด้วยตีน
+เขียนทอง
+เขียนไทย
+เขียนเสือให้วัวกลัว
+เขียม
+เขียว
+เขี้ยว
+เขี้ยวกระแต
+เขี้ยวแก้ว
+เขียวไข่กา
+เขี้ยวงู
+เขี้ยวตะขาบ
+เขี้ยวเนื้อ
+เขียวพระอินทร์
+เขี้ยวเล็บ
+เขียวเสวย
+เขี้ยวหนุมาน
+เขี้ยวหมา
+เขียวหวาน
+เขียวหางไหม้
+เขียะ
+เขือ
+เขือง
+เขื่อง
+เขื่อน
+เขื่อนเพชร
+เขือม
+แข
+แข้
+แขก
+แขกเต้า
+แขกเต้าเข้ารัง
+แขกเมือง
+แข็ง
+แข่ง
+แข้ง
+แข็งกร้าว
+แข็งกล้า
+แข็งแกร่ง
+แข้งไก่
+แข็งข้อ
+แข็งขัน
+แข่งขัน
+แข็งใจ
+แข็งตัว
+แข็งมือ
+แข็งเมือง
+แข็งแรง
+แข้งสิงห์
+แขน
+แข่น
+แข้น
+แขนขวา
+แขนคู้
+แขนง
+แขนซ้ายแขนขวา
+แขนทุกข์
+แขนนาง
+แขนพับ
+แขนะ
+แขม
+แขม็บ
+แขม่ว
+แขย็กๆ
+แขยง
+แขย่ง
+แขยงแขงขน
+แขยงหนู
+แขละ
+แขวก
+แขวง
+แขวน
+แขวนคอ
+แขวนนวม
+แขวนลอย
+แขวะ
+แขสร์
+โข
+โขก
+โขกสับ
+โขง
+โข่ง
+โข่งทะเล
+โขด
+โขดง
+โขน
+โขนง
+โขม
+โขม-
+โขมง
+โขมด
+โขมดยา
+โขยก
+โขยกเขยก
+โขยง
+โขย่ง
+โขยด
+โขยม
+โขลก
+โขลกๆ
+โขลง
+โขลน
+โขลนทวาร
+โขษม
+ไข
+ไข่
+ไข้
+ไขกระดูก
+ไข้กาฬ
+ไข้กาฬนกนางแอ่น
+ไข้กาฬหลังแอ่น
+ไข้กำเดา
+ไข่ไก่
+ไข่ขวัญ
+ไขข้อ
+ไข่ขาง
+ไข่ขาว
+ไข่ข้าว
+ไขควง
+ไข้ความร้อน
+ไข่เค็ม
+ไข่จระเข้
+ไข้จับสั่น
+ไข่จิ้งจก
+ไข่จิ้งหรีด
+ไข่เจียว
+ไข้ใจ
+ไข่ญี่ปุ่น
+ไข่ดัน
+ไข่ดันหมู
+ไข่ดาว
+ไข่แดง
+ไข้แดด
+ไข่ตายโคม
+ไข่ตุ๋น
+ไข่เต่า
+ไข้ทรพิษ
+ไข้ทับระดู
+ไข่นกกระสา
+ไขน้ำ
+ไข่น้ำ
+ไข่น้ำค้าง
+ไข่เน่า
+ไข่ในหิน
+ไข่ปลา
+ไข้ปอดบวม
+ไข้ป่า
+ไขพระวิสูตร
+ไข่พอก
+ไข้พิษ
+ไขมัน
+ไข้มาลาเรีย
+ไข่มุก
+ไขย่น
+ไข่เยี่ยวม้า
+ไขรา
+ไข่ลม
+ไขลาน
+ไข่ลูกเขย
+ไข่ลูกยอด
+ไข้เลือดออก
+ไขว่
+ไขว้
+ไขว้เขว
+ไขว่คว้า
+ไขว้โรง
+ไขว่ห้าง
+ไขษย
+ไข้สันนิบาต
+ไขสันหลัง
+ไขสันหลังอักเสบ
+ไข่สำเภา
+ไขสือ
+ไขเสนียด
+ไข่หงส์
+ไข้หวัด
+ไข้หวัดใหญ่
+ไข่หวาน
+ไข้หัว
+ไข้หัวลม
+ไข่หำ
+ไข่หิน
+ไขหู
+ไข้เหลือง
+ไข่เหา
+ไข่เหี้ย
+ไข่แหน
+ฃ
+ค
+คคน-
+คคนะ
+คคนัมพร
+คคนางค์
+คคนานต์
+คง
+คงกระพัน
+คงกระพันชาตรี
+คงแก่เรียน
+คงขาด
+คงคลัง
+คงคา
+คงคาเดือด
+คงคาลัย
+คงไคย
+คงตัว
+คงทน
+คงที่
+คงเส้นคงวา
+คงเหลือ
+คช-
+คชกรรม
+คชนาม
+คชราช
+คชลักษณ์
+คชศาสตร์
+คชส่าน
+คชสาร
+คชสีห์
+คชาชาติ
+คชาชีพ
+คชาธาร
+คชาภรณ์
+คชินทร์
+คเชนทร์
+คณ-
+คณน
+คณนา
+คณบดี
+คณะ
+คณะรัฐมนตรี
+คณาจารย์
+คณาธิการ
+คณาธิปไตย
+คณิกา
+คณิต
+คณิต-
+คณิตศาสตร์
+คเณศ
+คด
+คดกริช
+คดโกง
+คดเคี้ยว
+คดงอ
+คดซ่าง
+คดในข้องอในกระดูก
+คดสร้าง
+คดี
+คดีดำ
+คดีแดง
+คดีแพ่ง
+คดีมโนสาเร่
+คดีอนาถา
+คดีอาญา
+-คต
+คติ
+คติชาวบ้าน
+คติธรรม
+คตินิยม
+คติพจน์
+คทา
+คน
+ค้น
+คนกลาง
+คนไข้
+คนไข้นอก
+คนไข้ใน
+ค้นคว้า
+คนจร
+คนจริง
+คนใช้
+คนดีผีคุ้ม
+คนต้องขัง
+คนทรง
+คนทา
+คนทิสอ
+คนทิสอทะเล
+คนที
+คนทีเขมา
+คนทีสอ
+คนโท
+คนธ์
+คนธรรพ-
+คนธรรพ์
+คนธรรพวิวาห์
+คนธรรพศาสตร์
+คนนอก
+คนใน
+คนเมือง
+คนรักเท่าผืนหนัง คนชังเท่าผืนเสื่อ
+คนร้าย
+คนไร้ความสามารถ
+คนละ
+คนละไม้คนละมือ
+คนสวน
+คนสาบสูญ
+คนเสมือนไร้ความสามารถ
+ค้นหูก
+คนใหญ่คนโต
+คเนจร
+คบ
+คบคนให้ดูหน้า ซื้อผ้าให้ดูเนื้อ
+คบค้า
+คบคิด
+คบชู้
+คบเพลิง
+คบไฟ
+คบหา
+คม
+คมกริบ
+คมขำ
+คมคาย
+คมน-
+คมน์
+คมนาการ
+คมนาคม
+คมในฝัก
+คมบาง
+คมสัน
+คมิกภัต
+ครก
+ครกกะเบือ
+คร่ง
+ครบ
+ครบครัน
+ครบถ้วน
+ครบมือ
+ครรชิต
+ครรภ
+ครรภ-
+ครรภ์
+ครรภธาตุ
+ครรภธาตุมณฑล
+ครรภมณฑล
+ครรภมล
+ครรโภทร
+ครรลอง
+ครรโลง
+ครรไล
+ครรหิต
+ครวญ
+ครวญคราง
+ครวญหา
+ครวัก
+ครวี
+ครหา
+ครอก
+ครอง
+ครองแครง
+ครองราชสมบัติ
+คร่อเงาะ
+คร่อเทียน
+ครอบ
+ครอบครอง
+ครอบครองปรปักษ์
+ครอบครัว
+ครอบงำ
+ครอบจักรวาล
+ครอบตลับ
+คร่อม
+คระ
+คระเมิม
+คระแลง
+คระไล
+คระแวง
+คระหน
+คระหวน
+คระหาย
+คระหิว
+คระโหย
+ครั่ง
+ครั้ง
+ครัดเคร่ง
+ครัน
+ครั่น
+ครั้น
+ครั่นคร้าม
+ครั่นตัว
+ครั่นเนื้อครั่นตัว
+ครับ
+ครัว
+ครัวทาน
+ครัวไฟ
+ครัวเรือน
+ครา
+คร่า
+คราก
+คราง
+คราญ
+คราด
+คร้าน
+คราบ
+คราบหมู
+คราม
+คร้าม
+ครามครัน
+คราว
+คร่าว
+คร่าวๆ
+คราส
+ครำ
+คร่ำ
+คร่ำครวญ
+คร่ำคร่า
+คร่ำครึ
+คร่ำเคร่ง
+คร่ำเครอะ
+คร่ำเงิน
+คร่ำทอง
+คร่ำหวอด
+คริปทอน
+คริสต์
+คริสต์มาส
+คริสต์ศักราช
+คริสตัง
+คริสเตียน
+ครี้
+ครีครอ
+ครีบ
+ครีบสิงห์
+ครีม
+ครีษมายัน
+ครึ
+ครึกครื้น
+ครึกโครม
+ครึ่ง
+ครึ่งๆ กลางๆ
+ครึ่งชาติ
+ครึ่งต่อครึ่ง
+ครึน
+ครึม
+ครึ้ม
+ครึมครุ
+ครืด
+ครืน
+ครื้น
+ครืนครั่น
+ครื้นครั่น
+ครื้นครึก
+ครื้นเครง
+ครือ
+ครุ
+ครุก-
+ครุคระ
+ครุฑ
+ครุฑกระทง
+ครุฑพ่าห์
+ครุ่น
+ครุ่นคิด
+ครุภัณฑ์
+ครุมเครือ
+ครุย
+ครุวนา
+ครุวาร
+ครุศาสตร์
+ครู
+ครู่
+ครูด
+คฤโฆษ
+คฤนถ์
+คฤห
+คฤห-
+คฤหบดี
+คฤหปัตนี
+คฤหัสถ์
+คฤหา
+คฤหาสน์
+คล
+คลวง
+คลอ
+คล้อ
+คลอก
+คลอเคลีย
+คลอแคล
+คล้อแคล้
+คลอง
+คล่อง
+คล้อง
+คล่องแคล่ว
+คล้องจอง
+คล่องตัว
+คลองเลื่อย
+คลองส่งน้ำ
+คลอด
+คลอน
+คลอนแคลน
+คล้อย
+คล้อยคล้อย
+คลอรีน
+คลอโรฟอร์ม
+คลอโรฟีลล์
+คละ
+คละคล่ำ
+คละคลุ้ง
+คละปน
+คลัก
+คลั่ก
+คลั่กๆ
+คลัง
+คลั่ง
+คลังพิมานอากาศ
+คลังเลือด
+คลังสินค้า
+คลังสินค้าทัณฑ์บน
+คลัตช์
+คลับคล้าย
+คลับคล้ายคลับคลา
+คลา
+คล้า
+คลาคล่ำ
+คลาไคล
+คลางแคลง
+คลาด
+คลาดเคลื่อน
+คลาดแคล้ว
+คลาน
+คลาย
+คล้าย
+คลายคล้าย
+คล้ายคล้าย
+คล้ายคลึง
+คลายเคล่ง
+คล่าว
+คลาศ
+คลำ
+คล่ำ
+คล้ำ
+คลิง
+คลิ้งโคลง
+คลิด
+คลินิก
+คลี
+คลี่
+คลี่คลาย
+คลึง
+คลึงเคล้น
+คลึงเคล้า
+คลื่น
+คลื่นกระทบฝั่ง
+คลื่นใต้น้ำ
+คลื่นปานกลาง
+คลื่นแม่เหล็กไฟฟ้า
+คลื่นยาว
+คลื่นวิทยุ
+คลื่นสั้น
+คลื่นไส้
+คลื่นเหียน
+คลุก
+คลุกคลาน
+คลุกคลี
+คลุกคลีตีโมง
+คลุ้ง
+คลุบ
+คลุม
+คลุ่ม
+คลุ้ม
+คลุ้มคลั่ง
+คลุมเครือ
+คลุมถุงชน
+คลุมประทม
+คลุมโปง
+คลุมผทม
+ควง
+ควงแขน
+ควงสว่าน
+ควณ
+ควน
+ควบ
+ควบคุม
+ควบแน่น
+ควย
+ควร
+ควัก
+ควักค้อน
+ควักลงหลุม
+ควั่งคว้าง
+ควัน
+ควั่น
+ควั่นจุก
+ควันหลง
+คว้า
+ควาก
+คว้าไขว่
+คว้าง
+คว้างๆ
+คว้างเคว้ง
+ควาญ
+ควาน
+คว้าน
+คว้านท้อง
+คว้าน้ำเหลว
+ความ
+ความคลาด
+ความเค้น
+ความเครียด
+ความเฉื่อย
+ความชอบ
+ความชื้น
+ความชื้นสัมบูรณ์
+ความชื้นสัมพัทธ์
+ความถ่วง
+ความถ่วงจำเพาะ
+ความถี่
+ความถี่วิทยุ
+ความโน้มถ่วง
+ความยาวคลื่น
+ความรู้ท่วมหัวเอาตัวไม่รอด
+ความรู้สึกเขื่อง
+ความรู้สึกด้อย
+ความรู้สึกเด่น
+ความเร่ง
+ความเร็ว
+ความหน่วง
+ความหลัง
+ควาย
+ควายปละ
+ควายพระอินทร์
+คว่าว
+คว่ำ
+คว่ำบาตร
+คว่ำหลัง
+ควินิน
+ควิวๆ
+ควิวควัง
+ควิวคว่าง
+ควิวคว้าง
+ควีนสิริกิติ์
+คห-
+คหกรรมศาสตร์
+คหบดี
+คหปตานี
+คหัฐ
+คอ
+ค้อ
+คอก
+ค็อกคัส
+คอกช้าง
+ค็อกเทล
+คอกระเช้า
+คอกลม
+คอกะลาสี
+คอขาดบาดตาย
+คอแข็ง
+คอคอด
+คอเคซอยด์
+ค่องอ้อย
+คอเชิ้ต
+คอซอง
+คอด
+คอแดง
+คอตก
+คอต่อ
+คอตั้ง
+คอตั้งบ่า
+คอตีบ
+คอถ่วง
+คอทองแดง
+คอน
+ค่อน
+ค้อน
+คอนกรีต
+คอนกรีตเสริมเหล็ก
+คอนกรีตอัดแรง
+ค้อนกลอง
+ค่อนขอด
+ค่อนข้าง
+ค้อนควัก
+ค่อนแคะ
+คอนเดนเซอร์
+ค้อนติง
+ค้อนตีหมา
+ค้อนทอง
+คอนแวนต์
+คอนเสิร์ต
+ค้อนหอย
+คอนาค
+คอบ
+คอบัว
+คอแบะ
+คอปาด
+คอเป็นเอ็น
+คอพอก
+คอพับ
+คอไฟ
+คอม
+ค่อม
+ค้อม
+คอมพิวเตอร์
+คอมมานโด
+คอมมิวนิสต์
+คอม้า
+คอย
+ค่อย
+ค่อยๆ
+ค้อย
+ค่อยดีขึ้น
+คอยท่า
+ค่อยเป็นค่อยไป
+ค่อยยังชั่ว
+คอยล์
+คอยเหตุ
+คอร์ด
+คอรวง
+คอระฆัง
+คอแร้ง
+คอแลน
+คอวี
+คอสติกโซดา
+คอสอง
+คอสะพาน
+คอสูง
+คอเสื้อ
+คอหอย
+คอหอยกับลูกกระเดือก
+คอหอยตีบ
+คอหอยพอก
+คอห่าน
+คอแห้ง
+คอแหลม
+คออ่อน
+คอฮาวาย
+คะ
+ค่ะ
+คะไขว่
+คะค้อย
+คะคาน
+คะคึง
+คะนน
+คะนอง
+คะน้า
+คะนึง
+คะเน
+คะเนงร้าย
+คะเน็ด
+คะแนน
+คะแนนนิยม
+คะแนนเสียง
+คะใน
+คะมำ
+คะมึก
+คะยั้นคะยอ
+คะเยอ
+คัก
+คั่ก
+คัคน-
+คัคนะ
+คัคนัมพร
+คัคนางค์
+คัคนานต์
+คั่ง
+คั่งค้าง
+คั่งแค้น
+คังไคย
+คัจฉ
+คัณฑมาลา
+คัณฑสูตร
+คัด
+คัดค้าน
+คัดเค้า
+คัดง้าง
+คัดฉาก
+คัดช้อน
+คัดชุน
+คัดท้าย
+คัดมอน
+คัดเม็ง
+คัดเลือก
+คัดเลือด
+คัทลียา
+คัน
+คั่น
+คั้น
+คันขา
+คันจาม
+คันฉ่อง
+คันฉัตร
+คันฉาย
+คันชัก
+คันชั่ง
+คันชีพ
+คันดาลฉัตร
+คันโดง
+คันถ-
+คันถธุระ
+คันถรจนาจารย์
+คันทรง
+คันธ
+คันธ-
+คันธ์
+คันธกุฎี
+คันธมาทน์
+คันธารราษฎร์
+คันนา
+คันบวย
+คันโพง
+คันเร่ง
+คันหามเสือ
+คับ
+คับขัน
+คับค้อน
+คับคั่ง
+คับคา
+คับแค
+คับแค้น
+คับแคบ
+คับใจ
+คับอกคับใจ
+คัพภ-
+คัพภ์
+คัพภสาลี
+คัพโภทร
+คัมภีร-
+คัมภีร์
+คัมภีรภาพ
+คัล
+คัว
+คั่ว
+คา
+ค่า
+ค้า
+คากรอง
+ค้าขาย
+ค่าขึ้นศาล
+ค่าคบ
+ค่าครองชีพ
+ค้าความ
+ค้าค้า
+คาง
+ค่าง
+ค้าง
+คางคก
+คางคกขึ้นวอ
+คางคกไฟ
+ค้างคาว
+ค้างคืน
+ค้างเดือนค้างปี
+ค้างเติ่ง
+คางทูม
+คางโทน
+คางเบือน
+ค้างปี
+คางหมู
+คางเหลือง
+คาด
+คาดคั้น
+คาดค่า
+คาดไม่ถึง
+คาดหน้า
+คาดหมัด
+ค่าตัว
+คาถา
+คาถาพัน
+คาถาอาคม
+คาทอลิก
+ค่าที่
+คาธ
+ค่าธรรมเนียม
+ค่าธรรมเนียมศาล
+คาน
+ค้าน
+คานคอดิน
+คานหาม
+คาน้า
+ค่าน้ำ
+คาบ
+คาบเกี่ยว
+คาบชุด
+คาบลูกคาบดอก
+คาบศิลา
+คาบสมุทร
+คาบเส้น
+ค้าประเวณี
+ค่าป่วยการ
+ค่าปากเรือ
+ค่าเผา
+คาพยุต
+ค่าภาคหลวง
+คาม
+คาม-
+คามณี
+คามณีย์
+คามภีร์
+คามโภชก
+คามวาสี
+คามี
+คาย
+ค่าย
+คายก
+คายก-
+คายกคณะ
+ค่ายกักกัน
+ค่ายเยาวชน
+ค่ายอาสาพัฒนา
+คายัน
+คาร์บอน
+คาร์บอนไดออกไซด์
+คาร์บอนมอนอกไซด์
+คาร์บอเนต
+คาร์บอลิก
+คาร์บูเรเตอร์
+คาร์โบรันดัม
+คาร์โบไฮเดรต
+คารพ
+คารม
+คารวะ
+คาราคาก่า
+คาราคาซัง
+คาราเต้
+คาราวาน
+ค่าฤชาธรรมเนียม
+คาว
+ค่าว
+ค้าว
+คาวตอง
+คาวปลา
+คาวี
+คาวุต
+คาส
+ค่าสัมบูรณ์
+ค่าสินไหมทดแทน
+ค่าเสมอภาค
+ค่าเสียหาย
+ค่าหด
+คาหนังคาเขา
+ค่าหน้าดิน
+ค่าหัว
+คำ
+ค่ำ
+ค้ำ
+คำขวัญ
+คำขอ
+คำขาด
+คำคม
+ค้ำคอ
+ค่ำคืน
+คำคู่ความ
+ค้ำเงิน
+ค้ำจุน
+ค้ำชู
+คำดีควาย
+คำโดด
+คำตั้ง
+คำตาย
+คำติดต่อ
+คำเติม
+คำใต้
+คำแถลง
+คำแถลงการณ์
+คำทาย
+คำเทียบ
+คำนวณ
+คำนวร
+คำนับ
+คำนัล
+คำนำ
+คำนึง
+คำนูณ
+คำบังคับ
+คำโบล
+ค้ำประกัน
+คำประสม
+คำปรารภ
+คำเป็น
+คำฝอย
+คำพิพากษา
+คำเพลิง
+คำฟ้อง
+คำฟ้องแย้ง
+ค้ำฟ้า
+คำมั่น
+คำมั่นว่าจะให้รางวัล
+คำมากพยางค์
+คำมูล
+คำเมือง
+คำรน
+คำรบ
+คำร้อง
+คำร้องขอ
+คำร้องทุกข์
+คำราม
+คำสุภาพ
+คำแสด
+คำหลวง
+ค้ำหัว
+คำแหง
+คำโอง
+คิกๆ
+คิง
+คิด
+คิดการใหญ่
+คิดคด
+คิดค้น
+คิดตก
+คิดถึง
+คิดมาก
+คิดเล็กคิดน้อย
+คิดสมบัติบ้า
+คิดสั้น
+คิดหน้าคิดหลัง
+คิดเห็น
+คิดอ่าน
+คิมห
+คิมหันต์
+คิมหานะ
+คิริ
+คิรี
+คิลาน-
+คิลานปัจจัย
+คิลานเภสัช
+คิลานะ
+คิว
+คิ้ว
+คิ้วนาง
+คี่
+คีต
+คีตกะ
+คีบ
+คีม
+คีรี
+คีรีบูน
+คึก
+คึ่ก
+คึ่กๆ
+คึกคัก
+คึกคาม
+คืน
+คืนคำ
+คืนชีพ
+คืนดี
+คืนตัว
+คืนยังรุ่ง
+คืนให้
+คืบ
+คืบก็ทะเล ศอกก็ทะเล
+คือ
+คุ
+คุก
+คุกกี้
+คุกเข่า
+คุกคลาน
+คุกคาม
+คุกพาทย์
+คุคะ
+คุง
+คุ้ง
+คุณ
+คุณ-
+คุณชาย
+คุณธรรม
+คุณนาม
+คุณนาย
+คุณบท
+คุณพิเศษ
+คุณภาพ
+คุณลักษณะ
+คุณลุงคุณป้า
+คุณวิเศษ
+คุณวุฒิ
+คุณศัพท์
+คุณสมบัติ
+คุณหญิง
+คุณากร
+คุณูปการ
+คุโณปการ
+คุด
+คุดคู้
+คุดทะราด
+คุดทะราดเหยียบกรวด
+คุต
+คุตติ
+คุ่น
+คุ้น
+คุ้นเคย
+คุป
+คุปต์
+คุปติ
+คุม
+คุ่ม
+คุ้ม
+คุ้มกัน
+คุมกำเนิด
+คุ้มเกรง
+คุ้มครอง
+คุมแค้น
+คุมเชิง
+คุ้มดีคุ้มร้าย
+คุ้มเท้า
+คุ้มโทษ
+คุมธาตุ
+คุมนุม
+คุมฝอย
+คุ้มห้าม
+คุย
+คุ้ย
+คุ้ยเขี่ย
+คุยช้าง
+คุยห-
+คุยหฐาน
+คุยหประเทศ
+คุยหรหัสย์
+คุรุ
+คุรุกรรม
+คุรุวาร
+คุรุศึกษา
+คุลา
+คุลาซ่อนลูก
+คุลิก่า
+คุลีการ
+คุหา
+คู
+คู่
+คู้
+คู่กรณี
+คู่ขา
+คู่แข่ง
+คู่ครอง
+คู่ควร
+คู่ความ
+คู่ความร่วม
+คู่คิด
+คู่คี่
+คู่เคียง
+คู่โค
+คู่ใจ
+คู่ฉบับ
+คู่ฉีก
+คู่ชัก
+คู่ชีพ
+คู่ชีวิต
+คูณ
+คูณร่วมน้อย
+คูถ
+คู่ทุกข์คู่ยาก
+คูน
+คู้บัลลังก์
+คู่บ้านคู่เมือง
+คู่บารมี
+คู่บุญ
+คู่ปรปักษ์
+คู่ปรับ
+คูปอง
+คู่ผสม
+คู่ผัวตัวเมีย
+คู่พระคู่นาง
+คู่พิพาท
+คู่ม้า
+คู่มิตร
+คู่มือ
+คู่ยาก
+คู่รัก
+คูเรียงคูราย
+คู่เรียงเคียงหมอน
+คูเรียม
+คู่ลำดับ
+คู่ศัตรู
+คู่สร้าง
+คู่สวด
+คู่สัญญา
+คู่สายโทรศัพท์
+คู่หมั้น
+คูหา
+คู่หู
+คู่แห่
+คู่อริ
+คู่อาฆาต
+คู่อาศัย
+เค้ก
+เค้เก้
+เค้ง
+เคจฉ
+เคณฑะ
+เคด
+เคน
+เค้น
+เคเบิล
+เค็ม
+เคมี
+เคมีภัณฑ์
+เคมีอนินทรีย์
+เคมีอินทรีย์
+เคย
+เคยตัว
+เคยปาก
+เคยมือ
+เครง
+เคร่ง
+เคร่งขรึม
+เคร่งครัด
+เครงครา
+เครงครำ
+เครงคร่ำ
+เครงครื้น
+เคร่งเครียด
+เครงเครียว
+เครดิต
+เครดิตฟองซิเอร์
+เครน
+เครา
+เคร่า
+เคราแพะ
+เคราหณี
+เคราะห์
+เคราะห์หามยามร้าย
+เครียด
+เครียว
+เครือ
+เครือเขา
+เครือเขาน้ำ
+เครือเขามวก
+เครื่อง
+เครื่องกล
+เครื่องกัณฑ์
+เครื่องกิน
+เครื่องแกง
+เครื่องเขิน
+เครื่องครัว
+เครื่องควบแน่น
+เครื่องคู่
+เครื่องเครา
+เครื่องเงิน
+เครื่องจักร
+เครื่องช่วงล่าง
+เครื่องเซ่น
+เครื่องดนตรี
+เครื่องต้น
+เครื่องตั้ง
+เครื่องทอง
+เครื่องทองทิศ
+เครื่องทองน้อย
+เครื่องเทศ
+เครื่องใน
+เครื่องบน
+เครื่องบันทึกเสียง
+เครื่องบิน
+เครื่องบูชา
+เครื่องแบบ
+เครื่องประดับ
+เครื่องปรุง
+เครื่องปั้นดินเผา
+เครื่องผูก
+เครื่องมั่น
+เครื่องมือ
+เครื่องยนต์
+เครื่องยนต์ไอพ่น
+เครื่องร่อน
+เครื่องราง
+เครื่องราชอิสริยาภรณ์
+เครื่องร่ำ
+เครื่องเรือน
+เครื่องล่าง
+เครื่องเล่น
+เครื่องว่าง
+เครื่องสด
+เครื่องสะดุ้ง
+เครื่องสับ
+เครื่องสาย
+เครื่องสำอาง
+เครื่องสุกำศพ
+เครื่องสูง
+เครื่องหมาย
+เครื่องหมายการค้า
+เครื่องหยวก
+เครื่องหลัง
+เครื่องห้า
+เครื่องเหล็ก
+เครื่องใหญ่
+เครื่องอังทราย
+เครื่องอังน้ำ
+เครือจักรภพ
+เครือดิน
+เครือแย่ง
+เครือรัฐ
+เครือวัลย์พันไม้
+เคล้ง
+เคล็ด
+เคล้น
+เคล้า
+เคล่าคล่อง
+เคล้าคลึง
+เคล้าเคลีย
+เคลิบเคลิ้ม
+เคลิ้ม
+เคลีย
+เคลียคลอ
+เคลี้ยคลิง
+เคลียเคล้า
+เคลื่อน
+เคลื่อนคลาด
+เคลื่อนที่
+เคลื่อนไหว
+เคลือบ
+เคลือบคลุม
+เคลือบแคลง
+เคลือบแฝง
+เคลือบฟัน
+เคว้ง
+เคว้งคว้าง
+เคห-
+เคหศาสตร์
+เคหเศรษฐศาสตร์
+เคหสถาน
+เคหะ
+เคหา
+เคอย
+เคอะ
+เคา
+เค้า
+เค้าโครง
+เค้าเงื่อน
+เคาน์เตอร์
+เค้ามูล
+เคารพ
+เค้าสนามหลวง
+เคาะ
+เคาะแคะ
+เคี้ย
+เคียง
+เคียงบ่าเคียงไหล่
+เคียด
+เคียดแค้น
+เคียน
+เคียม
+เคี่ยม
+เคี่ยมคะนอง
+เคียร
+เคียว
+เคี่ยว
+เคี้ยว
+เคี่ยวขัน
+เคี่ยวขับ
+เคี่ยวเข็ญ
+เคี้ยวฟัน
+เคี้ยวเอื้อง
+เคื้อ
+เคือง
+แค
+แค่
+แค้
+แคแกล
+แคดเมียม
+แค็ตตาล็อก
+แคแตร
+แคโทด
+แคน
+แค่น
+แค้น
+แค้นคอ
+แค่นแคะ
+แค่นไค้
+แคบ
+แคบหมู
+แคปซูล
+แคฝรั่ง
+แคฝอย
+แคม
+แคร่
+แครก
+แครครั่ง
+แครง
+แครงเครียว
+แคระ
+แคลคูลัส
+แคลง
+แคลงใจ
+แคลเซียม
+แคลเซียมคาร์ไบด์
+แคลเซียมไซคลาเมต
+แคลน
+แคล้ว
+แคล่วคล่อง
+แคล้วคลาด
+แคลอรี
+แคลิฟอร์เนียม
+แคแล
+แคว
+แควก
+แคว้ง
+แคว้น
+แคแสด
+แคะ
+แคะไค้
+โค
+โคก
+โคกกระสุน
+โคกกระออม
+โคกม้า
+โคแก่ชอบกินหญ้าอ่อน
+โคคลาน
+โคเคน
+โค่ง
+โค้ง
+โคจร
+โคจร-
+โคจรคาม
+โคเซแคนต์
+โคไซน์
+โคตร
+โคตร-
+โคตรภู
+โคตรภูญาณ
+โคเถลิง
+โคแทนเจนต์
+โคธา
+โคน
+โค่น
+โคนดินสอ
+โคนตายปลายเป็น
+โคนม
+โคนสมอ
+โคบอลต์
+โคบาล
+โคบุตร
+โคปผกะ
+โคเพลาะ
+โคไพร
+โคม
+โคมดอกไม้
+โคมตาวัว
+โคมลอย
+โคมเวียน
+โคมัย
+โคม่า
+โคมูตร
+โครก
+โครกครอก
+โครกคราก
+โครง
+โคร่ง
+โครงการ
+โคร่งคร่าง
+โครงแคร
+โครงจมูก
+โครงเรื่อง
+โครงสร้าง
+โครม
+โครมคราม
+โครเมียม
+โครโมโซม
+โครส
+โคราช
+โครำ
+โคโรค
+โคล
+โคลง
+โคลงเคลง
+โคลน
+โควตา
+โควิถี
+โคศัพท์
+โคออร์ดิเนต
+ใคร
+ใคร่
+ใคร่ครวญ
+ไค
+ไค้
+ไคร้
+ไคร้เครือ
+ไคล
+ไคล้
+ฅ
+ฆ
+ฆน
+ฆราวาส
+ฆ้อง
+ฆ้องกระแต
+ฆ้องชัย
+ฆ้องปากแตก
+ฆ้องวง
+ฆ้องสามย่าน
+ฆ้องหุ่ย
+ฆ้องเหม่ง
+ฆ้องโหม่ง
+ฆ่า
+ฆ่าควายอย่าเสียดายพริก
+ฆาฏ
+ฆาต
+ฆาต-
+ฆาตกร
+ฆาตกรรม
+ฆาน
+ฆาน-
+ฆานประสาท
+ฆ่าไม่ตายขายไม่ขาด
+เฆี่ยน
+โฆรวิส
+โฆษก
+โฆษณา
+โฆษณาการ
+โฆษณาชวนเชื่อ
+โฆษะ
+โฆษิต
+ง
+งก
+งกเงิ่น
+งกๆ เงิ่นๆ
+งง
+งงงวย
+งงงัน
+งงิด
+งด
+งดงาม
+งบ
+งบดุล
+งบประมาณ
+งม
+งมเข็มในมหาสมุทร
+งมโข่ง
+งมงาย
+งวง
+ง่วง
+ง่วงงุน
+งวงช้าง
+ง่วงเหงา
+ง่วงเหงาหาวนอน
+งวด
+ง่วน
+ง้วน
+งวยงง
+งอ
+ง้อ
+งอก
+งอกงาม
+งอกเงย
+งอกแงก
+งอก่องอขิง
+ง่อง
+ง่องแง่ง
+ง้องอน
+งอแง
+งอด
+งอดแงด
+งอน
+ง่อน
+งอนง้อ
+ง่อนแง่น
+งอนไถ
+งอนหง่อ
+ง้อนหมู
+งอบ
+งอม
+ง้อม
+งอมแงม
+งอมพระราม
+งอมืองอตีน
+งอย
+ง่อย
+ง่อยเปลี้ยเสียขา
+งอหาย
+งะ
+งักๆ
+งั่กๆ
+งังๆ
+งั่ง
+งัด
+งัดข้อ
+งัน
+งันงก
+งับ
+งับแง
+งัว
+งั่ว
+งัวเงีย
+งัวซัง
+งัวเลีย
+งา
+ง่า
+งากำจาย
+งาเครือ
+ง้าง
+ง่าเงย
+งาช้าง
+งาแซง
+งาไซ
+งาตัด
+งาน
+ง่าน
+งานการ
+งานหลวงไม่ให้ขาด งานราษฎร์ไม่ให้เสีย
+งาบๆ
+งาม
+ง่าม
+งามงอน
+งามแงะ
+ง่ามถ่อ
+งามหน้า
+งาย
+ง่าย
+ง่ายๆ
+ง่ายดาย
+ง่าย้อย
+งาลั่ว
+ง้าว
+งาสาน
+งำ
+ง่ำ
+ง่ำๆ
+ง้ำ
+งิ้ว
+งีบ
+งึกๆ
+งึน
+งึม
+งึมงำ
+งุด
+งุดๆ
+งุนงง
+งุ่นง่าน
+งุบ
+งุบๆ
+งุบงิบ
+งุ้ม
+งุ่มง่าม
+งุย
+งู
+งูกลืนหาง
+งูกินหาง
+งูบ
+งูๆ ปลาๆ
+งูผู้
+งูเมีย
+งูสวัด
+งู่หนี
+งูเหลือม
+งูเห่า
+เง้
+เงก
+เง็น
+เงย
+เงยหน้าอ้าปาก
+เงอะ
+เงอะงะ
+เงา
+เงาๆ
+เง่า
+เง้า
+เง้างอด
+เง้าๆ งอดๆ
+เงาตามตัว
+เงามัว
+เงามืด
+เงาะ
+เงาะป่า
+เงิน
+เงินก้นถุง
+เงินก้อน
+เงินกู้
+เงินเชื่อ
+เงินดาวน์
+เงินเดือน
+เงินแดง
+เงินได้กำบัง
+เงินต้น
+เงินตรา
+เงินตาย
+เงินทองตรา
+เงินทอน
+เงินนอน
+เงินน้ำห้าน้ำหก
+เงินปลีก
+เงินปันผล
+เงินปากถุง
+เงินปากผี
+เงินปี
+เงินแป
+เงินผ่อน
+เงินฝืด
+เงินเฟ้อ
+เงินมุ่น
+เงินยวง
+เงินเยอรมัน
+เงินร้อน
+เงินรายปี
+เงินสด
+เงินสเตอร์ลิง
+เงินหลวง
+เงินแห้ง
+เงี่ยง
+เงี่ยน
+เงียบ
+เงียบกริบ
+เงียบเชียบ
+เงียบเป็นเป่าสาก
+เงียบเหงา
+เงี้ยว
+เงี้ยวระเริง
+เงี้ยวรำลึก
+เงี่ยหู
+เงื้อ
+เงือก
+เงื่อง
+เงื่องๆ
+เงื่องหงอย
+เงื้อง่าราคาแพง
+เงือด
+เงือดงด
+เงือดเงื้อ
+เงือน
+เงื่อน
+เงื่อนไข
+เงื่อนไขบังคับก่อน
+เงื่อนไขบังคับหลัง
+เงื่อนงำ
+เงื่อนเวลา
+เงื่อนเวลาเริ่มต้น
+เงื่อนเวลาสิ้นสุด
+เงือบ
+เงื้อม
+เงื้อมมือ
+แง
+แงๆ
+แง่
+แง่ง
+แง่งๆ
+แง่งขิง
+แง่งอน
+แง่น
+แง่นๆ
+แง้ม
+แงะ
+โง
+โง่
+โงก
+โงกเงก
+โง่แกมหยิ่ง
+โงง
+โง่งๆ
+โง้ง
+โงงเงง
+โง่งเง่ง
+โงเง
+โง่เง่า
+โง่เง่าเต่าตุ่น
+โงน
+โงนเงน
+โง่แล้วอยากนอนเตียง
+ไง้
+จ
+จก
+จง
+จ่ง
+จ๋ง
+จงกรม
+จงกรมแก้ว
+จงกล
+จงกลนี
+จงเกลียดจงชัง
+จงโคร่ง
+จงใจ
+จงดี
+จงรัก
+จงรักภักดี
+จงอร
+จงอาง
+จแจ้น
+จญ
+จด
+จดจ่อ
+จดจ้อง
+จดๆ จ้องๆ
+จดจำ
+จดทะเบียน
+จดหมัด
+จดหมาย
+จดหมายเวียน
+จดหมายเหตุ
+จดุร
+จดุรงค์
+จดูร-
+จตุ-
+จตุกาลธาตุ
+จตุตถ-
+จตุตถี
+จตุทิพยคันธา
+จตุบท
+จตุบริษัท
+จตุปัจจัย
+จตุปาริสุทธิศีล
+จตุร-
+จตุรคูณ
+จตุรงค์
+จตุรงคนายก
+จตุรงคประดับ
+จตุรงคยมก
+จตุรถ-
+จตุรพักตร์
+จตุรพิธ
+จตุรพิธพร
+จตุรภุช
+จตุรภูมิ
+จตุรยุค
+จตุราริยสัจ
+จตุลังคบาท
+จตุโลกบาล
+จตุสดมภ์
+จทึง
+จน
+จ้น
+จนกระทั่ง
+จนกว่า
+จนชั้น
+จนด้วยเกล้า
+จนถึง
+จนแล้วจนรอด
+จบ
+จบเห่
+จม
+จ่ม
+จมเบ้า
+จมปลัก
+จมไม่ลง
+จมร
+จมรี
+จมูก
+จมูกปลาหลด
+จมูกปลาไหล
+จมูกมด
+จมูกวัว
+จมูกหลอด
+จยุติ
+จร
+จร-
+จรก
+จรกลู่
+จรแกว่ง
+จรคั่ง
+จรจรัล
+จรจัด
+จรณะ
+จรด
+จรดพระกรรไตรกรรบิด
+จรดพระนังคัล
+จรดล
+จรบน
+จรบัน
+จรบาท
+จรมัน
+จรมูก
+จรรจา
+จรรโจษ
+จรรม
+จรรม-
+จรรมการ
+จรรมขัณฑ์
+จรรยา
+จรรยาบรรณ
+จรรโลง
+จรลวง
+จรล่วง
+จรลาด
+จรลาย
+จรล่ำ
+จรลิ่ว
+จรลี
+จรลู่
+จรวจ
+จรวจไจร
+จรวด
+จรวดจรี
+จรวดนำวิถี
+จรวัก
+จรส
+จรอก
+จระกล้าย
+จระขาบ
+จระเข้
+จระเข้ปากกระทุงเหว
+จระเข้หางยาว
+จระคลับ
+จระคล้าย
+จระคลุ่ม
+จระแคง
+จระจุ่ม
+จระทก
+จระเทิน
+จระนำ
+จระบาน
+จระบี
+จระลิ่ง
+จระลึง
+จระลุง
+จรัล
+จรัส
+จราก
+จราง
+จราจร
+จราญ
+จราย
+จราว
+จราส
+จริก
+จริง
+จริงๆ
+จริงจัง
+จริงใจ
+จริงอยู่
+จริต
+จริม-
+จริย-
+จริยธรรม
+จริยวัตร
+จริยศาสตร์
+จริยศึกษา
+จริยา
+จริยาปิฎก
+จริยาวัตร
+จริว
+จรี
+จรึง
+จรุก
+จรุง
+จรูง
+จรูญ
+จรูส
+จเร
+จล
+จลนพลศาสตร์
+จลนศาสตร์
+จลนี
+จลา
+จลาจล
+จวก
+จ๊วก
+จวง
+จ้วง
+จ๋วง
+จ๋วงเครือ
+จวงจันทน์
+จ้วงจาบ
+จวงหอม
+จวด
+จวดลาก
+จวน
+จวนเจียน
+จวนแจ
+จวนตัว
+จวบ
+จวบจวน
+จวัก
+จอ
+จ่อ
+จ้อ
+จ๋อ
+จอก
+จ้อก
+จ้อกๆ
+จ๊อก
+จ๊อกๆ
+จ้อกแจ้ก
+จ้อกวอก
+จอกหูหนู
+จอง
+จ่อง
+จ้อง
+จ๋อง
+จองคช
+จองจำ
+จ้องเต
+จองถนน
+จองเปรียง
+จองเวรจองกรรม
+จองหง่อง
+จ้องหน่อง
+จองหอง
+จองหองพองขน
+จอแจ
+จ๋อแจ๋
+จอด
+จอน
+จ้อน
+จอนจ่อ
+จอนหู
+จอบ
+จอม
+จ่อม
+จอมขวัญ
+จ่อมจ่าย
+จอมใจ
+จอมไตร
+จอมทอง
+จอมทัพ
+จอมปลวก
+จอมปลอม
+จ้อมป้อม
+จอมเปาะ
+จอมพล
+จอมมารดา
+จอมสุรางค์
+จ่อย
+จ้อย
+จ๋อย
+จ๋อยๆ
+จอแส
+จะ
+จ้ะ
+จ๊ะ
+จ๋ะ
+จะกรัจจะกราจ
+จะกรุน
+จะกรุมจะกราม
+จะกรูน
+จะกละ
+จะกลาม
+จะกวด
+จะกูด
+จะเกร็ง
+จะขาบ
+จะเข้
+จะเข็บ
+จะงอย
+จะจะ
+จะจ้า
+จะแจ้ง
+จะแจ่ม
+จะไจ้
+จะบัน
+จะปิ้ง
+จะปิ้งเรือ
+จะเพลิง
+จะละเม็ด
+จะละหวั่น
+จะลุง
+จ๊ะเอ๋
+จัก
+จั้กๆ
+จักกาย
+จั๊กกิ้ม
+จักขุ
+จักขุทวาร
+จักขุประสาท
+จักขุวิญญาณ
+จักขุสัมผัส
+จักจั่น
+จักจี้
+จั๊กจี้
+จั๊กเดียม
+จักร
+จักร-
+จักรปาณิ
+จักรปาณี
+จักรพรรดิ
+จักรพาก
+จักรพาล
+จักรภพ
+จักรยาน
+จักรยานยนต์
+จักรราศี
+จักรวรรดิ
+จักรวรรดินิยม
+จักรวาก
+จักรวาต
+จักรวาล
+จักริน
+จักรี
+จั๊กเล้อ
+จักษุ
+จักสาน
+จักแหล่น
+จัง
+จั้ง
+จั๋ง๑
+จังกวด
+จังกอบ
+จังกา
+จังก้า
+จังกูด
+จังเก
+จังโกฏก์
+จังงัง
+จังมัง
+จั้งมั่ง
+จังไร
+จังลอน
+จังเว็จ
+จังหนับ
+จังหน้า
+จังหรีด
+จังหล่อ
+จังหวะ
+จังหวัด
+จังหัน
+จังออน
+จัญไร
+จัณฑ-
+จัณฑ์
+จัณฑวาตา
+จัณฑาล
+จัด
+จัดการ
+จัดจอง
+จัดจ้า
+จัดจ้าน
+จัดเจน
+จัดแจง
+จัดตั้ง
+จัดประกัน
+จัดมั่น
+จัดสรร
+จัดหา
+จัตตาฬีส
+จัตวา
+จัตวาทัณฑี
+จัตวาศก
+จัตุ
+จัตุร-
+จัตุรงค์
+จัตุรพักตร์
+จัตุรภุช
+จัตุรมุข
+จัตุรัส
+จัตุโลกบาล
+จัตุสดมภ์
+จัน
+จั่น
+จันโจษ
+จั่นดิน
+จันท์
+จันทน์
+จันทน์กะพ้อ
+จันทน์ขาว
+จันทน์ชะมด
+จันทน์แดง
+จันทน์เทศ
+จันทน์ผา
+จันทน์หอม
+จันทนา
+จันทร-
+จันทร์
+จันทรกลา
+จันทรกานต์
+จันทรคติ
+จันทรคราส
+จันทรพิมพ์
+จันทรมณฑล
+จันทรเม็ด
+จันทรวงศ์
+จันทรเศขร
+จันทรุปราคา
+จันทัน
+จันทันพราง
+จันลอง
+จันเลา
+จันเลาะ
+จั้นหล่อ
+จั่นหับ
+จั่นห้าว
+จันอับ
+จับ
+จับกลุ่ม
+จับกัง
+จับกุม
+จับเขม่า
+จับไข้
+จับความ
+จับงูข้างหาง
+จับจด
+จับจอง
+จับจ่าย
+จับจิต
+จับเจ่า
+จับเจี๋ยว
+จับใจ
+จับฉ่าย
+จับเชิง
+จับดำถลำแดง
+จับเดิม
+จับตัววางตาย
+จับตา
+จับตาดู
+จับตาย
+จับปิ้ง
+จับเป็น
+จับโปง
+จับผิด
+จับพลัดจับผลู
+จับแพะชนแกะ
+จับยาม
+จับยี่กี
+จับระบำ
+จับเวลา
+จับสั่น
+จับสายสิญจน์
+จับเสือมือเปล่า
+จับหลัก
+จับหวัด
+จับหัวเข่าพูด
+จัมบก
+จัมปก
+จัมมะ
+จัว
+จั่ว
+จั๊วะ
+จา
+จ่า
+จ้า
+จ๋า
+จาก
+จากพราก
+จากพาก
+จ่ากลอง
+จาค-
+จาคี
+จาง
+จ่าง
+จ้าง
+จางวาง
+จาด
+จาดตะกั่ว
+จาตุ-
+จาตุกรณีย์
+จาตุทสี
+จาตุมหาราช
+จาตุร-
+จาตุรงค-
+จาตุรงค์
+จาตุรงคสันนิบาต
+จาตุรนต์
+จาตุรนต์รัศมี
+จาตุรราชการ
+จาตุรันต์
+จาน
+จ้าน
+จานจ่าย
+จานเจือ
+จานเชิง
+จานบิน
+จานผี
+จานเสียง
+จาบ
+จาบจ้วง
+จาบัล
+จาบัลย์
+จาป
+จ่าปี่
+จาม
+จ่ามงกุฎ
+จามจุรี
+จามร
+จามรี
+จามีกร
+จ่าย
+จ่ายตลาด
+จาร
+จ่ารง
+จารวาก
+จาระไน
+จาระบี
+จาริก
+จารี
+จารีต
+จารีตนครบาล
+จารีตประเพณี
+จารึก
+จารุ
+จ้าละหวั่น
+จาว
+จาวๆ
+จ่าว
+จ้าว
+จาวมะพร้าว
+จ่าหน้า
+จ่าหวัก
+จำ
+จ้ำ
+จำกว่า
+จำกัด
+จำกัดความ
+จำกัดจำเขี่ย
+จำกัดสินใช้
+จำครบ
+จำงาย
+จำจอง
+จ้ำจี้
+จ้ำจี้จ้ำไช
+จำเจ
+จำเดิม
+จำทวย
+จำทับ
+จำทาบ
+จำเทิด
+จำแทง
+จำนง
+จำนน
+จำนรรจ์
+จำนรรจา
+จำนวน
+จำนวนจริง
+จำนวนจินตภาพ
+จำนวนเชิงซ้อน
+จำนวนตรรกยะ
+จำนวนเต็ม
+จำนวนนับ
+จำนวนอตรรกยะ
+จำนอง
+จำนับ
+จำนัล
+จำนำ
+จำนำพรรษา
+จำเนียน
+จำเนียม
+จำเนียร
+จำแนก
+จำโนทย์
+จำบ่ม
+จำบัง
+จำบับ
+จำเบศ
+จ้ำเบ้า
+จำแบ
+จำปา
+จำปาขอม
+จำปาแขก
+จำปาดะ
+จำปาทองเทศ
+จำปาลาว
+จำปาหอม
+จำปี
+จำปีแขก
+จำปูน
+จำเป็น
+จำพรรษา
+จำพวก
+จำเพาะ
+จำแพรก
+จ้ำม่ำ
+จำรด
+จำรัส
+จำราญ
+จำราย
+จำรูญ
+จำเริญ
+จำเรียง
+จำลอง
+จำลองทอง
+จำลาย
+จำเลย
+จำเลาะ
+จำเลาะตา
+จำแลง
+จำแล่น
+จำวัด
+จำศีล
+จำหนับ
+จ๋ำหนับ
+จำหน่าย
+จำหระ
+จำหล่อ
+จำหลอก
+จำหลัก
+จำหัน
+จำห้าประการ
+จำหาย
+จำหุด
+จำเหียง
+จำอวด
+จำอื่น
+จิ
+จิก
+จิกปีก
+จิกหัว
+จิ่ง
+จิ้งจก
+จิงจ้อ
+จิ้งจอก
+จิงจัง
+จิ้งจัง
+จิงโจ้
+จิงโจ้น้ำ
+จิ้งหรีด
+จิ้งหรีดผี
+จิ้งเหลน
+จิ้งเหลนด้วง
+จิต
+จิต-
+จิตกาธาน
+จิตกึ่งสำนึก
+จิตใจ
+จิตต-
+จิตต์
+จิตตภาวนา
+จิตตวิสุทธิ
+จิตตานุปัสสนา
+จิตใต้สำนึก
+จิตนิยม
+จิตบำบัด
+จิตแพทย์
+จิตภาพ
+จิตร
+จิตร-
+จิตรกร
+จิตรกรรม
+จิตรจุล
+จิตรปทา
+จิตรลดา
+จิตรเลขา
+จิตระ
+จิตรา
+จิตไร้สำนึก
+จิตวิทยา
+จิตวิสัย
+จิตเวชศาสตร์
+จิตสำนึก
+จินเจา
+จินดา
+จินดามณี
+จินดามัย
+จินดาหนา
+จินดาหรา
+จินต-
+จินต์
+จินตกวี
+จินต์จล
+จินตนาการ
+จินตภาพ
+จิบ
+จิปาถะ
+จิ่ม
+จิ้ม
+จิ้มก้อง
+จิ้มฟันจระเข้
+จิ้มลิ้ม
+จิร-
+จิรกาล
+จิรัฐิติกาล
+จิ๋ว
+จี
+จี่
+จี้
+จี๋
+จี๋จ้อ
+จี่จู้
+จีแจ๊บ
+จี๊ด
+จีน
+จีนเต็ง
+จีนแส
+จีนแสโสกา
+จีบ
+จีบปากจีบคอ
+จีบพลู
+จีโบ
+จีพร
+จีม
+จีวร
+จีวร-
+จีวรกรรม
+จีวรการสมัย
+จีวรกาลสมัย
+จีวรทานสมัย
+จีวรภาชก
+จี้เส้น
+จึง
+จึ่ง
+จึ้ง
+จืด
+จืดจาง
+จืดชืด
+จืดตา
+จื้นเจือก
+จุ
+จุๆ
+จุก
+จุ๊กกรู๊
+จุกจิก
+จุกเจ่า
+จุกช่องล้อมวง
+จุกชี
+จุกผาม
+จุกผามม้ามย้อย
+จุกพราหมณ์
+จุกยา
+จุกโรหินี
+จุ่ง
+จุ้งจัง
+จุ๋งจิ๋ง
+จุใจ
+จุฑา
+จุฑาธิปไตย
+จุฑามณี
+จุฑามาศ
+จุฑารัตน์
+จุณ
+จุณณียบท
+จุด
+จุดจบ
+จุดเด่น
+จุดเดือด
+จุดไต้ตำตอ
+จุดทศนิยม
+จุดน้ำค้าง
+จุดบอด
+จุดยืน
+จุดยุทธศาสตร์
+จุดเยือกแข็ง
+จุดรวม
+จุดลูกน้ำ
+จุดศูนย์กลาง
+จุดศูนย์ถ่วง
+จุดสัมผัส
+จุดหมาย
+จุดหมายปลายทาง
+จุดหลอมเหลว
+จุดหลัง
+จุดเหี่ยวเฉา
+จุดอ่อน
+จุดอิ่มตัว
+จุติ
+จุตูปปาตญาณ
+จุทส
+จุทสมสุรทิน
+จุน
+จุ่น
+จุ้น
+จุ้นจ้าน
+จุนจู๋
+จุ้นจู๊
+จุนเจือ
+จุนทการ
+จุนสี
+จุบ
+จุ๊บ
+จุบจิบ
+จุ๊บแจง
+จุปาก
+จุ่ม
+จุ้ม
+จุ๋มจิ๋ม
+จุมพฏ
+จุมพรวด
+จุมพล
+จุมพิต
+จุมโพล่
+จุ้ย
+จุรณ
+จุรี
+จุไร
+จุล-
+จุลกฐิน
+จุลจอมเกล้า
+จุลชีพ
+จุลชีวัน
+จุลชีวิน
+จุลทรรศน์
+จุลภาค
+จุลวงศ์
+จุลวรรค
+จุลศักราช
+จุลสาร
+จุลินทรีย์
+จุฬา
+จุฬามณี
+จุฬาราชมนตรี
+จุฬาลักษณ์
+จุฬาลัมพา
+จู
+จู่
+จู่ๆ
+จู้
+จู๋
+จูง
+จูงจมูก
+จูงใจ
+จูงนางเข้าห้อง
+จูงนางลีลา
+จูงมือ
+จู้จี้
+จู๋จี๋
+จู่โจม
+จู๊ด
+จูบ
+จูบฝุ่น
+จูรณ
+จู่ลู่
+เจ
+เจ๊ก
+เจ๊กตื่นไฟ
+เจ่ง
+เจ้ง
+เจ๊ง
+เจ็ด
+เจ็ดชั่วโคตร
+เจ็ดตะคลี
+เจดีย-
+เจดีย์
+เจดียถาน
+เจดีย์ทิศ
+เจดียสถาน
+เจต
+เจต-
+เจตคติ
+เจตจำนง
+เจตนา
+เจตนารมณ์
+เจตพังคี
+เจตภูต
+เจตมูลเพลิง
+เจตมูลเพลิงฝรั่ง
+เจตสิก
+เจติย-
+เจโตวิมุติ
+เจน
+เจนจบ
+เจนจัด
+เจนใจ
+เจ็บ
+เจ็บไข้
+เจ็บแค้น
+เจ็บใจ
+เจ็บช้ำน้ำใจ
+เจ็บท้อง
+เจ็บปวด
+เจ็บป่วย
+เจ็บร้อน
+เจ็บแสบ
+เจรจา
+เจริญ
+เจริญตาเจริญใจ
+เจริญพร
+เจริญพันธุ์
+เจริญรอย
+เจริญสมณธรรม
+เจริญอาหาร
+เจริด
+เจรียง
+เจลียง
+เจว็ด
+เจษฎา
+เจ๊สัว
+เจอ
+เจ่อ
+เจ๋อ
+เจ๋อเจ๊อะ
+เจอร์เมเนียม
+เจอะ
+เจา
+เจ่า
+เจ้า
+เจ๊า
+เจ้ากรม
+เจ้ากรรม
+เจ้ากรรมนายเวร
+เจ้ากระทรวง
+เจ้ากี้เจ้าการ
+เจ้ากู
+เจ้าขรัว
+เจ้าของ
+เจ้าขา
+เจ้าข้า
+เจ้าข้าวแดงแกงร้อน
+เจ้าขุนมุลนาย
+เจ้าขุนมูลนาย
+เจ้าไข้
+เจ้าคณะ
+เจ้าครอก
+เจ้าคารม
+เจ้าคุณ
+เจ้าคุณจอม
+เจ้าแง่เจ้างอน
+เจ้าแง่แสนงอน
+เจ้าจอม
+เจ้าจอมมารดา
+เจ้าจำนวน
+เจ้าจำนำ
+เจ่าจุก
+เจ้าชีวิต
+เจ้าชู้
+เจ้าเซ็น
+เจ้าเซ็นเต้นต้ำบุด
+เจ้าตัว
+เจ้าถ้อยหมอความ
+เจ้าท่า
+เจ้าที่
+เจ้าทุกข์
+เจ้าไทย
+เจ้านาย
+เจ้าเนื้อ
+เจ้าบ้าน
+เจ้าบ่าว
+เจ้าบุญนายคุณ
+เจ้าเบี้ย
+เจ้าประคุณ
+เจ้าประคู้น
+เจ้าปู่
+เจ้าพนักงาน
+เจ้าพนักงานบังคับคดี
+เจ้าพนักงานพิทักษ์ทรัพย์
+เจ้าพนักงานภูษามาลา
+เจ้าพนักงานสนมพลเรือน
+เจ้าพระเดชนายพระคุณ
+เจ้าพระยา
+เจ้าพ่อ
+เจ้าพายุ
+เจ้าฟ้า
+เจ้าฟ้าหญิงสิรินธร
+เจ้าภาพ
+เจ้าภาษี
+เจ้ามรดก
+เจ้ามือ
+เจ้าแม่
+เจ้าไม่มีศาล สมภารไม่มีวัด
+เจ้ายศ
+เจ้าเรือน
+เจ้าเล่ห์
+เจ้าสัว
+เจ้าสาว
+เจ้าสำนวน
+เจ้าสำบัดสำนวน
+เจ้าสำราญ
+เจ้าหน้า
+เจ้าหน้าเจ้าตา
+เจ้าหน้าที่
+เจ้าหนี้
+เจ้าหลวง
+เจ้าหล่อน
+เจ้าหัว
+เจ้าอธิการ
+เจ้าอารมณ์
+เจ้าอาวาส
+เจาะ
+เจาะจง
+เจาะจมูก
+เจิ่ง
+เจิด
+เจิดจ้า
+เจิ่น
+เจิม
+เจีย
+เจียง
+เจียด
+เจียดยา
+เจียน
+เจี๋ยน
+เจี๊ยบ
+เจียม
+เจี๋ยมเจี้ยม
+เจียมสังขาร
+เจียร
+เจียระไน
+เจียระบาด
+เจียว
+เจี๊ยวจ๊าว
+เจือ
+เจือจาง
+เจือจาน
+เจื่อน
+เจือปน
+เจื้อย
+เจื้อยแจ้ว
+เจือสม
+แจ
+แจ้
+แจ๋
+แจก
+แจกจ่าย
+แจกแจง
+แจกไพ่
+แจกัน
+แจง
+แจ่ง
+แจ้ง
+แจ้งความ
+แจงรูป
+แจงลอน
+แจงสี่เบี้ย
+แจจน
+แจจัน
+แจ๊ด
+แจดแจ้
+แจ๊ดแจ๋
+แจตร
+แจ้น
+แจบ
+แจ่ม
+แจ่มแจ้ง
+แจ่มใส
+แจร
+แจรก
+แจรง
+แจว
+แจ่ว
+แจ้ว
+แจ้วๆ
+แจ๋ว
+แจ๋วแหวว
+แจะ
+โจก
+โจ๊ก
+โจง
+โจงกระเบน
+โจงกระเบนตีเหล็ก
+โจ่งครึ่ม
+โจ๋งครึ่ม
+โจ่งครุ่ม
+โจงโคร่ง
+โจ๋งเจ๋ง
+โจ่งแจ้ง
+โจท
+โจทก์
+โจทเจ้า
+โจทนา
+โจทย์
+โจน
+โจนร่ม
+โจม
+โจมตี
+โจมทัพ
+โจร
+โจร-
+โจรกรรม
+โจรสลัด
+โจล
+โจษ
+โจษจน
+โจษจัน
+โจษแจ
+ใจ
+ใจกลาง
+ใจกว้าง
+ใจขุ่น
+ใจแข็ง
+ใจความ
+ใจคอ
+ใจแคบ
+ใจง่าย
+ใจจดใจจ่อ
+ใจจืด
+ใจเฉื่อย
+ใจชื้น
+ใจดำ
+ใจดี
+ใจเด็ด
+ใจเดียว
+ใจเดียวกัน
+ใจต่ำ
+ใจเติบ
+ใจแตก
+ใจโต
+ใจถึง
+ใจน้อย
+ใจบาน
+ใจบุญ
+ใจเบา
+ใจปลาซิว
+ใจป้ำ
+ใจแป้ว
+ใจฝ่อ
+ใจเพชร
+ใจมา
+ใจมือ
+ใจไม่ดี
+ใจไม้ไส้ระกำ
+ใจยักษ์
+ใจเย็น
+ใจร้อน
+ใจร้าย
+ใจเร็ว
+ใจลอย
+ใจสูง
+ใจเสาะ
+ใจเสีย
+ใจหนักแน่น
+ใจหาย
+ใจเหี่ยวแห้ง
+ใจใหญ่ใจโต
+ใจอ่อน
+ไจ
+ไจ้
+ไจ้ๆ
+ไจร
+ฉ
+ฉก
+ฉกจวัก
+ฉกฉวย
+ฉกชิง
+ฉกรรจ์
+ฉกรรจ์ลำเครื่อง
+ฉกษัตริย์
+ฉกาจ
+ฉกาจฉกรรจ์
+ฉกามาพจร
+ฉกามาวจร
+ฉง
+ฉงน
+ฉงาย
+ฉทวาร
+ฉทานศาลา
+ฉทึง
+ฉนวน
+ฉนัง
+ฉนาก
+ฉนำ
+ฉบบ
+ฉบัง
+ฉบัด
+ฉบับ
+ฉบำ
+ฉพีสติม-
+ฉม
+ฉมบ
+ฉมวก
+ฉมวย
+ฉม่อง
+ฉมัง
+ฉมัน
+ฉมา
+ฉมำ
+ฉล
+ฉลวย
+ฉลวยฉลาด
+ฉลอง
+ฉลองได
+ฉลองพระกรน้อย
+ฉลองพระเนตร
+ฉลองพระบาท
+ฉลองพระศอ
+ฉลองพระหัตถ์
+ฉลองพระองค์
+ฉลององค์
+ฉลอม
+ฉลอมท้ายญวน
+ฉลัก
+ฉลับ
+ฉลาก
+ฉลากบาง
+ฉลาง
+ฉลาด
+ฉลาม
+ฉลามเสือ
+ฉลาย
+ฉลิว
+ฉลีก
+ฉลุ
+ฉลุกฉลวย
+ฉลุลาย
+ฉลู
+ฉวย
+ฉวยฉาบ
+ฉวะ
+ฉวัดเฉวียน
+ฉวาง
+ฉวี
+ฉศก
+ฉ้อ
+ฉอก
+ฉ้อโกง
+ฉ่อง
+ฉ้อฉล
+ฉอดๆ
+ฉ่อย
+ฉ้อราษฎร์บังหลวง
+ฉอเลาะ
+ฉะ
+ฉะกะ
+ฉะฉาด
+ฉะฉาน
+ฉะฉ่ำ
+ฉะฉี่
+ฉะเฉื่อย
+ฉะต้า
+ฉะนั้น
+ฉะนี้
+ฉะหน้าโรง
+ฉะอ้อน
+ฉักกะ
+ฉัฐ
+ฉัด
+ฉัตร
+ฉัตร-
+ฉัตรบรรณ
+ฉัตรมงคล
+ฉัตรสามชั้น
+ฉัททันต์
+ฉัน
+ฉันใด
+ฉันท-
+ฉันท์
+ฉันทลักษณ์
+ฉันทวิลาส
+ฉันทศาสตร์
+ฉันทะ
+ฉันทา
+ฉันทาคติ
+ฉันทานุมัติ
+ฉันนั้น
+ฉันวุติ
+ฉับ
+ฉับๆ
+ฉับพลัน
+ฉับไว
+ฉัพพรรณรังสี
+ฉัยยา
+ฉ่า
+ฉาก
+ฉากญี่ปุ่น
+ฉากตั้ง
+ฉากทิ้ง
+ฉากน้อย
+ฉากบังเพลิง
+ฉากใหญ่
+ฉาง
+ฉ่าง
+ฉ่าฉาว
+ฉาด
+ฉาดฉาน
+ฉาตกภัย
+ฉาทน
+ฉาน
+ฉาบ
+ฉาบฉวย
+ฉาป
+ฉาย
+ฉายเฉิด
+ฉายา
+ฉายาลักษณ์
+ฉาว
+ฉาวโฉ่
+ฉ่ำ
+ฉำฉา
+ฉำเฉง
+ฉำแฉะ
+ฉิ่ง
+ฉิ่งตรัง
+ฉิน
+ฉินท-
+ฉินท์
+ฉินทฤกษ์
+ฉิบ
+ฉิบหาย
+ฉิมพลี
+ฉิว
+ฉี่
+ฉีก
+ฉีกหน้า
+ฉีด
+ฉีดยา
+ฉุ
+ฉุก
+ฉุกคิด
+ฉุกใจ
+ฉุกเฉิน
+ฉุกละหุก
+ฉุด
+ฉุน
+ฉุนเฉียว
+ฉุป
+ฉุป-
+ฉุปศาสตร์
+ฉุย
+ฉุยฉาย
+ฉุยฉายเข้าวัง
+ฉู่
+ฉู่ฉี่
+ฉูด
+ฉูดฉาด
+เฉ
+เฉก
+เฉโก
+เฉ่ง
+เฉไฉ
+เฉด
+เฉท
+เฉนียน
+เฉพาะ
+เฉพาะกาล
+เฉพาะกิจ
+เฉพาะตัว
+เฉพาะพระพักตร์
+เฉพาะหน้า
+เฉย
+เฉยๆ
+เฉยเมย
+เฉลย
+เฉลว
+เฉลา
+เฉลิม
+เฉลิมพระชนมพรรษา
+เฉลี่ย
+เฉลียง
+เฉลี่ยง
+เฉลียบ
+เฉลียว
+เฉลียวใจ
+เฉลียวฉลาด
+เฉวียง
+เฉวียงบ่า
+เฉวียน
+เฉอะแฉะ
+เฉา
+เฉาก๊วย
+เฉาโฉด
+เฉาฮื้อ
+เฉาะ
+เฉาะๆ
+เฉาะปล่อง
+เฉิด
+เฉิดฉัน
+เฉิดฉาย
+เฉิดฉิน
+เฉิบ
+เฉิบๆ
+เฉียง
+เฉียงพร้าดำ
+เฉียงพร้านางแอ
+เฉียงพร้ามอญ
+เฉียด
+เฉียบ
+เฉียบขาด
+เฉียบพลัน
+เฉียบแหลม
+เฉียว
+เฉี่ยว
+เฉียวฉุน
+เฉือน
+เฉื่อย
+เฉื่อยๆ
+เฉื่อยชา
+แฉ
+แฉ่
+แฉก
+แฉกๆ
+แฉง
+แฉ่ง
+แฉโพย
+แฉลบ
+แฉล้ม
+แฉละ
+แฉว
+แฉะ
+แฉะแบะ
+โฉ
+โฉ่
+โฉเก
+โฉ่งฉ่าง
+โฉงเฉง
+โฉ่ฉาว
+โฉด
+โฉดเฉา
+โฉนด
+โฉบ
+โฉเบ๊
+โฉม
+โฉมงาม
+โฉมฉาย
+โฉมเฉลา
+โฉมตรู
+โฉมยง
+โฉมศรี
+โฉมหน้า
+โฉลก
+ไฉน
+ไฉไล
+ช
+ชก
+ชกมวย
+ชกา
+ชค-
+ชคดี
+ชคัตตรัย
+ชง
+ชงคา
+ชงโค
+ชงฆ-
+ชงฆ์
+ชงฆา
+ชงโลง
+ชฎา
+ชฎากลีบ
+ชฎาเดินหน
+ชฎาธาร
+ชฎาแปลง
+ชฎาพอก
+ชฎามหากฐิน
+ชฎามังษี
+ชฎามังสี
+ชฎิล
+ชด
+ชดช้อย
+ชดเชย
+ชดใช้
+ชทึง
+ชน
+ชน-
+ชนก
+ชนก-
+ชนกกรรม
+ชนช้าง
+ชนนี
+ชนบท
+ชนม-
+ชนม์
+ชนมพรรษา
+ชนมาพิธี
+ชนมายุพิธี
+ชนวน
+ชนหมู่น้อย
+ชนะ
+ชนัก
+ชนักติดหลัง
+ชนา
+ชนาง
+ชนิด
+ชนินทร์
+ชเนตตี
+ชบา
+ชบาหนู
+ชปโยค
+ชม
+ชมชัว
+ชมชาญ
+ชมเชย
+ชมไช
+ชมดชม้อย
+ชมนาด
+ชมบ
+ชมเปาะ
+ชมพู
+ชมพู่
+ชมพูทวีป
+ชมพูนท
+ชมพูนุท
+ชมพูพาดบ่า
+ชมรม
+ชมเลาะ
+ชมสวนสวรรค์
+ชม้อย
+ชมัน
+ชมา
+ชม้าย
+ชไม
+ชย
+ชย-
+ชยา
+ชโย
+ชร
+ชรทึง
+ชรโมล
+ชรไม
+ชรราง
+ชรริน
+ชรเรือด
+ชรแรง
+ชรแร่ง
+ชรโลง
+ชรอกชรัง
+ชรออบ
+ชรอัด
+ชรอ่ำ
+ชรอื้อ
+ชรอุ่ม
+ชระ
+ชระงม
+ชระง่อน
+ชระงำ
+ชระดัด
+ชระดื่น
+ชระเดียด
+ชระเดียดชระดัด
+ชระบอบ
+ชระบาบ
+ชระมด
+ชระมัว
+ชระมื่น
+ชระมุกชระมอม
+ชระมุ่น
+ชระเมียง
+ชระเมียน
+ชระลอ
+ชระลอง
+ชระล่อง
+ชระลั่ง
+ชระลัด
+ชระล้ำ
+ชระลุ
+ชระแลง
+ชระอับ
+ชระอาบ
+ชระเอม
+ชรัด
+ชรัว
+ชรา
+ชรากากี
+ชราธรรม
+ชราบ
+ชราบชรับ
+ชราภาพ
+ชรายุ
+ชริน
+ชรุก
+ชรูบ
+ชล
+ชล-
+ชลจร
+ชลจัณฑ์
+ชลชาติ
+ชลธาร
+ชลธารก
+ชลธิศ
+ชลธี
+ชลนัยน์
+ชลนา
+ชลเนตร
+ชลประทาน
+ชลมารค
+ชลสถาน
+ชลัมพุ
+ชลาธาร
+ชลาพุช
+ชลามพุช
+ชลาลัย
+ชลาศัย
+ชลี
+ชลูกา
+ชเล
+ชโลง
+ชโลทร
+ชโลม
+ชว-
+ช่วง
+ช่วงชัย
+ช่วงชิง
+ช่วงโชติ
+ช่วงใช้
+ช่วงทรัพย์
+ช่วงบาท
+ช่วงเมือง
+ช่วงสิทธิ์
+ชวด
+ชวน
+ชวนชม
+ชวนหัว
+ชวย
+ช่วย
+ช่วยเหลือ
+ชวร
+ชวลิต
+ชวัก
+ชวา
+ชวาล
+ชวาลา
+ช่อ
+ชอก
+ช็อกโกเลต
+ช็อกโกแลต
+ชอกช้ำ
+ชอง
+ช่อง
+ช้อง
+ช่องกุด
+ช่องเขา
+ช่องแคบ
+ช่องดาล
+ช่องตีนกา
+ช้องนาง
+ช้องนางคลี่
+ช่องไฟ
+ช้องแมว
+ชองระอา
+ชอน
+ช่อน
+ช้อน
+ช้อนนาง
+ช้อนหอย
+ชอบ
+ชอบกล
+ชอบใจ
+ชอบธรรม
+ชอบพอ
+ชอบมาพากล
+ช่อฟ้า
+ชอม
+ช่อม่วง
+ช่อย
+ช้อย
+ช้อยชด
+ช้อยช่างรำ
+ช้อยนางรำ
+ชอล์ก
+ช่ออินทนิล
+ชอ่ำ
+ชอื้อ
+ชอุ่ม
+ชะ
+ชะคราม
+ชะงอก
+ชะง่อน
+ชะงัก
+ชะงัด
+ชะงาบ
+ชะง้ำ
+ชะงุ้ม
+ชะเง้อ
+ชะเงื้อม
+ชะแง้
+ชะโงก
+ชะโงกผา
+ชะฉ่า
+ชะช่อง
+ชะชะ
+ชะช้า
+ชะชิด
+ชะดีชะร้าย
+ชะโด
+ชะตา
+ชะต้า
+ชะนี
+ชะนีร่ายไม้
+ชะนุง
+ชะเนาะ
+ชะเนียง
+ชะพลู
+ชะเพลิง
+ชะมด
+ชะมดเชียง
+ชะมดต้น
+ชะมบ
+ชะมวง
+ชะมัง
+ชะมัด
+ชะแม่
+ชะรอย
+ชะลอ
+ชะลอม
+ชะล่า
+ชะลาน
+ชะลิน
+ชะลูด
+ชะเลง
+ชะเลย
+ชะแล็ก
+ชะแลง
+ชะวัง
+ชะวาก
+ชะวากทะเล
+ชะวาด
+ชะวุ้ง
+ชะเวิกชะวาก
+ชะแวง
+ชะอม
+ชะอ้อน
+ชะเอม
+ชะโอน
+ชัก
+ชักกระบี่สี่ท่า
+ชักคราม
+ชักโครก
+ชักเงา
+ชักจูง
+ชักชวน
+ชักช้า
+ชักซอสามสาย
+ชักซุงตามขวาง
+ชักตะพานแหงนเถ่อ
+ชักนำ
+ชักน้ำเข้าลึก ชักศึกเข้าบ้าน
+ชักเนื้อ
+ชักใบให้เรือเสีย
+ชักแป้งผัดหน้า
+ชักพระ
+ชักแม่น้ำทั้งห้า
+ชักยันต์
+ชักเย่อ
+ชักใย
+ชักรูป
+ชักศพ
+ชักสองแถว
+ชักสื่อ
+ชักหน้า
+ชักหน้าไม่ถึงหลัง
+ชัค-
+ชัง
+ชั่ง
+ชังคา
+ชังฆ-
+ชังฆวิหาร
+ชั่งใจ
+ชั่งหลวง
+ชัชวาล
+ชัฏ
+ชัด
+ชัดเจน
+ชัดช้า
+ชัน
+ชั้น
+ชันกาด
+ชันคอ
+ชั้นฉาย
+ชั้นชั่ว
+ชันชี
+ชั้นเชิง
+ชันตาฆร
+ชันตุ
+ชันนะตุ
+ชันนุ
+ชันนุกะ
+ชันพอน
+ชันโรง
+ชันษา
+ชันสน
+ชันสูตร
+ชันสูตรพลิกศพ
+ชัปน
+ชัพ
+ชัมพูนท
+ชัย
+ชัย-
+ชัยบาน
+ชัยพฤกษ์
+ชัยภูมิ
+ชัยเภรี
+ชัยศรี
+ชัลลุกา
+ชั่ว
+ชั้ว
+ชั่วคน
+ชั่วคราว
+ชัวชม
+ชั่วช้า
+ชั่วช่างชี ดีช่างสงฆ์
+ชั่วแต่ว่า
+ชั่วนาตาปี
+ชั่วโมง
+ชั่วแล่น
+ชา
+ช้า
+ช้าก่อน
+ชาคร
+ชาคริต
+ชาคริยานุโยค
+ช่าง
+ช้าง
+ช่างกระไร
+ช่างเครื่อง
+ช้างงวง
+ช้างชำนิ
+ช้างชูงวง
+ช้างต่อ
+ช้างตายทั้งตัวเอาใบบัวมาปิด
+ช่างทอง
+ช้างทำลายโรง
+ช้างน้อย
+ช้างน้าว
+ช้างน้ำ
+ช้างประสานงา
+ช่างปะไร
+ช้างผะชด
+ช้างเผือก
+ช้างพลาย
+ช้างพัง
+ช่างฟิต
+ช่างไฟ
+ช้างร้อง
+ช้างสะบัดหญ้า
+ช้างเหยียบ
+ช่างเหล็ก
+ช้างใหญ่
+ช้าช่อน
+ชาญ
+ชาด
+ชาดก
+ชาดหรคุณ
+ช้าๆ ได้พร้าสองเล่มงาม
+ชาต-
+ชาตบุษย์
+ชาตรี
+ชาตรูป
+ชาตสระ
+ชาตะ
+ชาตา
+ชาติ
+ชาติ-
+ชาติธรรม
+ชาตินิยม
+ชาติพันธุ์
+ชาติพันธุ์วรรณนา
+ชาติพันธุ์วิทยา
+ชาติภูมิ
+ชาติมาลา
+ชาติรส
+ชาน
+ชานชาลา
+ชานวาทิก
+ช้านางนอน
+ช้านาน
+ชานุ
+ชานุกะ
+ชานุมณฑล
+ช้าปี่
+ชาปีไหน
+ช้าเป็นการ นานเป็นคุณ
+ช้าแป้น
+ช้าพลู
+ชาม
+ชามพูนท
+ชามาดร
+ชามาดา
+ชามาตุ
+ชาย
+ชายกระเบน
+ชายกระเบนเหน็บ
+ชายคา
+ชายแครง
+ชายชาตรี
+ชายตา
+ชายทะเล
+ชายธง
+ชายผ้าสีดา
+ชายฝั่ง
+ชายเฟือย
+ชายสามโบสถ์
+ชายไหว
+ชายา
+ชายาชีพ
+ชายานุชีพ
+ชาเยนทร์
+ชาเยศ
+ชาร
+ชารี
+ชาล
+ชาล-
+ชาลกรรม
+ชาลา
+ชาลินี
+ช้าลูกหลวง
+ช้าเลือด
+ชาว
+ชาวนอก
+ชาวน้ำ
+ชาวม่าน
+ชาวเล
+ชาววัง
+ชาวี
+ช้าหมอง
+ชำ
+ช่ำ
+ช้ำ
+ชำงัด
+ชำงาย
+ชำงือ
+ช่ำใจ
+ช้ำใจ
+ช้ำชอก
+ช่ำชอง
+ช่ำช่า
+ชำนน
+ชำนรร
+ชำนะ
+ชำนัญ
+ชำนัญพิเศษ
+ชำนัน
+ชำนาญ
+ชำนาญเกลากลอน
+ชำนิ
+ชำนิชำนาญ
+ชำเนียน
+ชำเนียร
+ช่ำปอด
+ชำมะนาด
+ชำมะเลียง
+ชำร่วย
+ชำระ
+ช้ำรั่ว
+ชำรุด
+ชำเรา
+ชำเราะ
+ชำแรก
+ชำแระ
+ชำลา
+ชำเลือง
+ช้ำเลือดช้ำหนอง
+ชำแหละ
+ชิ
+ชิง
+ชิ่ง
+ชิงคม
+ชิงช่วง
+ชิงชัง
+ชิงชัน
+ชิงชัย
+ชิงช้า
+ชิงช้าชาลี
+ชิงช้าสวรรค์
+ชิงชี่
+ชิงเชิง
+ชิงดวง
+ชิงดีชิงเด่น
+ชิงทรัพย์
+ชิงเปรต
+ชิงพลบ
+ชิงสุกก่อนห่าม
+ชิงไหวชิงพริบ
+ชิงฮื้อ
+ชิชะ
+ชิชิ
+ชิณณะ
+ชิด
+ชิเดนทรีย์
+ชิต
+ชิต-
+ชิตินทรีย์
+ชิน
+ชิ่น
+ชิ้น
+ชินโต
+ชินบุตร
+ชิ้นเอก
+ชิโนรส
+ชิม
+ชิมแปนซี
+ชิมลาง
+ชิยา
+ชิรณ-
+ชิรณะ
+ชิรณัคคิ
+ชิระ
+ชิวหา
+ชิวหาสดมภ์
+ชิสา
+ชี
+ชี่
+ชี้
+ชี้ขาด
+ชี้แจง
+ชี้ช่อง
+ชีต้น
+ชี้ตัว
+ชี้นกบนปลายไม้
+ชี้นกเป็นนก ชี้ไม้เป็นไม้
+ชี้นำ
+ชี้นิ้ว
+ชี้แนะ
+ชีปะขาว
+ชีเปลือย
+ชีผะขาว
+ชีผ้าขาว
+ชีฝรั่ง
+ชีพ
+ชีพ-
+ชีพจร
+ชีพิต
+ชีพิตักษัย
+ชีพุก
+ชีฟอง
+ชี้ฟ้า
+ชีมืด
+ชีรณ-
+ชีรณัคคิ
+ชีระ
+ชีล้อม
+ชีลา
+ชีลาว
+ชีว-
+ชีวเคมี
+ชีวงคต
+ชีวประวัติ
+ชีวโลก
+ชีววิทยา
+ชีวะ
+ชีวัน
+ชีวันตราย
+ชีวา
+ชีวาตม์
+ชีวาลัย
+ชีวิต
+ชีวิตชีวา
+ชีวิตักษัย
+ชีวิตินทรีย์
+ชีวิน
+ชีวี
+ชี้สองสถาน
+ชืด
+ชื่น
+ชื้น
+ชื่นชม
+ชื่นชมยินดี
+ชื่นบาน
+ชื่นมื่น
+ชื่อ
+ชื้อ
+ชื่อตัว
+ชื่อย่อ
+ชื่อเล่น
+ชื่อว่า
+ชื่อสกุล
+ชื่อเสียง
+ชุ
+ชุก
+ชุกชี
+ชุกชุม
+ชุ่ง
+ชุ้ง
+ชุณห-
+ชุณหปักษ์
+ชุด
+ชุติ
+ชุติมา
+ชุน
+ชุบ
+ชุบชีวิต
+ชุบชู
+ชุบตัว
+ชุบมือเปิบ
+ชุบย้อม
+ชุบเลี้ยง
+ชุบสรง
+ชุบอาบ
+ชุม
+ชุ่ม
+ชุ่มใจ
+ชุมชน
+ชุ่มชื่น
+ชุ่มชื้น
+ชุมทางรถไฟ
+ชุมนุม
+ชุมนุมชน
+ชุมพร
+ชุมพา
+ชุมเพ็ด
+ชุมแพรก
+ชุมรุม
+ชุมสาย
+ชุมสายโทรศัพท์
+ชุมแสง
+ชุมเห็ด
+ชุ่ย
+ชุ่ยๆ
+ชุลมุน
+ชุลี
+ชุษณ-
+ชุษณปักษ์
+ชุษณะ
+ชู
+ชู้
+ชูกลิ่น
+ชูคอ
+ชูใจ
+ชูชีพ
+ชูรส
+ชูโรง
+ชู้สาว
+ชูหน้าชูตา
+ชู้เหนือขันหมาก
+ชู้เหนือผัว
+ชู้เหนือผี
+เช็ค
+เช็คขีดคร่อม
+เช็คไปรษณีย์
+เช้ง
+เชงเลง
+เช้งวับ
+เช็ด
+เช็ดน้ำ
+เช็ดหน้า
+เช็ดหม้อ
+เชน
+เช่น
+เชย
+เชยชม
+เชรา
+เชราะ
+เชริด
+เชลง
+เชลย
+เชลยศักดิ์
+เชลยศึก
+เชลแล็ก
+เชลียง
+เชวง
+เชษฐ-
+เชษฐะ
+เชษฐา
+เชอ
+เช่า
+เช้า
+เช่าช่วง
+เช่าซื้อ
+เช้าตรู่
+เช่าถือสวน
+เช่าทรัพย์
+เช่าพระ
+เช้ามืด
+เชาว์
+เชาวน์
+เชิง
+เชิงกรวย
+เชิงกราน
+เชิงกล
+เชิงกลอน
+เชิงชั้น
+เชิงชาย
+เชิงซ้อน
+เชิงเดิน
+เชิงเดียว
+เชิงเดี่ยว
+เชิงตะกอน
+เชิงทรง
+เชิงเทิน
+เชิงมุม
+เชิงเวียน
+เชิงอรรถ
+เชิญ
+เชิด
+เชิดจีน
+เชิดฉิ่ง
+เชิดชู
+เชิดหนัง
+เชิดหน้าชูตา
+เชิดหุ่น
+เชิ้ต
+เชีย
+เชี้ย
+เชียง
+เชี่ยน
+เชี่ยนหมาก
+เชียบ
+เชี่ยม
+เชียร
+เชียร์
+เชียรณ์
+เชียว
+เชี่ยว
+เชี่ยวชาญ
+เชื่อ
+เชื้อ
+เชือก
+เชือกเขา
+เชือกบาศ
+เชื่อง
+เชื่องช้า
+เชื่อใจ
+เชื้อชาติ
+เชื้อเชิญ
+เชือด
+เชื่อถือ
+เชือน
+เชือนแช
+เชื้อเพลิง
+เชื่อฟัง
+เชื้อไฟ
+เชื่อม
+เชื่อมือ
+เชื้อไม่ทิ้งแถว
+เชื้อรา
+เชื้อโรค
+เชื่อวัน
+เชื้อสาย
+เชื้อหมัก
+แช
+แช่
+แช่ง
+แช่งชักหักกระดูก
+แช่งน้ำ
+แชงมา
+แชบ๊วย
+แช่เบ้า
+แช่ม
+แช่มช้อย
+แช่มชื่น
+แช่เย็น
+แชร์
+แชรง
+แชล่ม
+แช่อิ่ม
+แชะ
+โชก
+โชกๆ
+โชกโชน
+โชค
+โชงโลง
+โชดก
+โชดึก
+โชต
+โชตก
+โชติ
+โชติ-
+โชติก-
+โชติช่วง
+โชติรส
+โชน
+โชมโรม
+โชย
+โชยงการ
+โชยชาย
+โชยติส
+โชรม
+โชว์
+โชโหว
+ใช่
+ใช้
+ใช้กรรม
+ใช้ได้
+ใช้เนื้อ
+ใช้บน
+ใช้ใบ
+ใช้เรือ
+ใช้สอย
+ไช
+ไชนะ
+ไชย
+ไชย-
+ไชยเภท
+ไชโย
+ซ
+ซก
+ซ่ก
+ซงดำ
+ซ่งฮื้อ
+ซง้า
+ซด
+ซน
+ซ่น
+ซ้น
+ซบ
+ซบเซา
+ซม
+ซมซาน
+ซรอกซรัง
+ซวด
+ซวดเซ
+ซวดทรง
+ซวน
+ซวนเซ
+ซวย
+ซอ
+ซอก
+ซอกซอน
+ซอกซัง
+ซอกแซก
+ซอง
+ซ่อง
+ซ่องๆ
+ซ้อง
+ซ่องแซ่ง
+ซองพลู
+ซองมือ
+ซองแมว
+ซ้องแมว
+ซ่องสุม
+ซ่องเสพ
+ซองหาง
+ซอแซ
+ซ้อแซ้
+ซอน
+ซ่อน
+ซ้อน
+ซ้อนกล
+ซ่อนกลิ่น
+ซ่อนเงื่อน
+ซ้อนซับ
+ซ่อนทราย
+ซ่อนรูป
+ซ่อนหา
+ซอม
+ซ่อม
+ซ้อม
+ซ้อมค้าง
+ซอมซ่อ
+ซ้อมซัก
+ซ่อมแซม
+ซ่อมแปลง
+ซ้อมพยาน
+ซ้อมพวน
+ซ้อมใหญ่
+ซอย
+ซอยผม
+ซอส
+ซะซร้าว
+ซะซ่อง
+ซะซอเซีย
+ซะซิกซะแซ
+ซะซิบ
+ซะเซาะ
+ซะเซียบ
+ซัก
+ซักซ้อม
+ซักไซ้
+ซักฟอก
+ซักส้าว
+ซักแห้ง
+ซัง
+ซั้ง
+ซังกะตาย
+ซังแซว
+ซังตาย
+ซัด
+ซัดข้าวสาร
+ซัดเซ
+ซัดทอด
+ซัดน้ำ
+ซัดยา
+ซั้น
+ซับ
+ซับขนุน
+ซับซ้อน
+ซับซาบ
+ซับซี่
+ซับใน
+ซับพระพักตร์
+ซับมัน
+ซัม
+ซัลฟา
+ซั้ว
+ซา
+ซ่า
+ซาก
+ซากดึกดำบรรพ์
+ซากศพ
+ซาง
+ซ่าง
+ซาด
+ซาน
+ซ่าน
+ซ่านเซ็น
+ซาบซ่าน
+ซาบซึ้ง
+ซ่าโบะ
+ซาแมเรียม
+ซ้าย
+ซาลาเปา
+ซาว
+ซาวน้ำ
+ซาวเสียง
+ซ่าหริ่ม
+ซ้ำ
+ซ้ำซ้อน
+ซ้ำซาก
+ซ้ำเติม
+ซ้ำร้าย
+ซ้ำสาม
+ซิ
+ซิก
+ซิกๆ
+ซิกซี้
+ซิกแซ็ก
+ซิการ์
+ซิงโคนา
+ซิ่น
+ซินนามิก
+ซินแส
+ซิบ
+ซิบๆ
+ซิบซับ
+ซิป
+ซิฟิลิส
+ซิลิคอน
+ซิว
+ซี
+ซี่
+ซีก
+ซี่โครง
+ซี้ซอน
+ซีเซียม
+ซีด
+ซีดเซียว
+ซีนอน
+ซีป่าย
+ซีเมนต์
+ซีเรียม
+ซีลีเนียม
+ซึก
+ซึง
+ซึ่ง
+ซึ้ง
+ซึ่งหน้า
+ซึม
+ซึมกะทือ
+ซึมซาบ
+ซึมทราบ
+ซื่อ
+ซื่อๆ
+ซื้อ
+ซื้อขาย
+ซื้อควายหน้านา ซื้อผ้าหน้าตรุษ
+ซื้องัวหน้านา ซื้อผ้าหน้าหนาว
+ซื่อตรง
+ซื้อรำคาญ
+ซื้อรู้
+ซื่อสัตย์
+ซื้อหน้า
+ซื่อเหมือนแมวนอนหวด
+ซุก
+ซุกซน
+ซุกซ่อน
+ซุกซิก
+ซุง
+ซุน
+ซุบ
+ซุบซิบ
+ซุบซู่
+ซุป
+ซุ่ม
+ซุ้ม
+ซุ้มกระต่าย
+ซุ่มคม
+ซุ่มซ่าม
+ซุมแซว
+ซุ่มเสียง
+ซุย
+ซู่
+ซู่ๆ
+ซู่กั้นรั้วไซมาน
+ซูโครส
+ซู่ซ่า
+ซูด
+ซู้ด
+ซูดซาด
+ซูบ
+เซ
+เซ็ก
+เซแคนต์
+เซ็ง
+เซ่ง
+เซ้ง
+เซ็งแซ่
+เซซัง
+เซต
+เซน
+เซ็น
+เซ่น
+เซนติกรัม
+เซนติเกรด
+เซนติเมตร
+เซนติลิตร
+เซ่นเหล้า
+เซปักตะกร้อ
+เซรา
+เซราะ
+เซรุ่ม
+เซลเซียส
+เซลล์
+เซลล์ทุติยภูมิ
+เซลล์ปฐมภูมิ
+เซลลูลอยด์
+เซลลูโลส
+เซ่อ
+เซ่อซ่า
+เซอร์โคเนียม
+เซอะ
+เซา
+เซ้าซี้
+เซาะ
+เซาะลาย
+เซิง
+เซิ้ง
+เซียน
+เซียบ
+เซียมซี
+เซียว
+เซี่ยว
+เซี่ยวกาง
+เซื่อง
+แซ
+แซ่
+แซ็กคาริน
+แซ็กคารินโซเดียม
+แซง
+แซงแซว
+แซ่ซ้อง
+แซด
+แซดๆ
+แซบ
+แซม
+แซยิด
+แซ่ว
+แซะ
+โซ
+โซ่
+โซก
+โซ่ง
+โซงโขดง
+โซซัดโซเซ
+โซเซ
+โซดา
+โซดาแผดเผา
+โซดาไฟ
+โซเดียม
+โซเดียมคาร์บอเนต
+โซเดียมซัลเฟต
+โซเดียมไซคลาเมต
+โซเดียมไฮโดรเจนกลูทาเมต
+โซเดียมไฮโดรเจนคาร์บอเนต
+โซเดียมไฮโดรเจนซัลเฟต
+โซม
+โซรม
+โซรมประทยด
+โซรมโรม
+โซรมศัสตราวุธ
+โซลา
+ไซ
+ไซ้
+ไซเกิล
+ไซโคลน
+ไซน์
+ไซยาไนด์
+ไซร้
+ไซเรน
+ไซโล
+ฌ
+ฌาน
+ฌาปน-
+ฌาปนกิจ
+ฌาปนสถาน
+เฌอ
+เฌอเอม
+ญ
+ญญ่าย
+ญวน
+ญัตติ
+ญาณ
+ญาณ-
+ญาณทัสนะ
+ญาณวิทยา
+ญาณศาสตร์
+ญาติ
+ญาติ-
+ญาติกา
+ญาติดีกัน
+ญาติเภท
+ญิบ
+ญี่
+ญี่ปุ่น
+เญยธรรม
+ไญยธรรม
+ฎ
+ฎีกา
+ฏ
+ฐ
+ฐกัด
+ฐากูร
+ฐาน
+ฐาน-
+ฐานกรณ์
+ฐานเขียง
+ฐานเชิงบาตร
+ฐานเท้าสิงห์
+ฐานบัทม์
+ฐานราก
+ฐานสิงห์
+ฐานะ
+ฐานันดร
+ฐานานุกรม
+ฐานานุรูป
+ฐานานุศักดิ์
+ฐานียะ
+ฐาปน-
+ฐาปนา
+ฐายี
+ฐิต
+ฐิติ
+ฑ
+ฑังส-
+ฑาก-
+ฑาหก
+ฑาหะ
+ฒ
+เฒ่า
+เฒ่าแก่
+เฒ่าหัวงู
+ณ
+ณรงค์
+เณร
+เณรหน้าไฟ
+เณรหางนาค
+ด
+ดก
+ดกดื่น
+ดง
+ด้ง
+ดงดาน
+ดงดิบ
+ดงดึก
+ดงวาย
+ด้น
+ด้นดั้น
+ดนโด่
+ดนตรี
+ด้นถอยหลัง
+ดนย
+ดนัย
+ดนุ
+ดนุช
+ดนู
+ดบัสวิน
+ดบัสวี
+ดม
+ดมไร
+ดร
+ดรงค์
+ดรณี
+ดรธาน
+ดรรชนี
+ดรรชนีหักเห
+ดราฟต์
+ดรุ
+ดรุณ
+ดรุณาณัติ
+ดรุณี
+ดฤถี
+ดล
+ดล-
+ดลใจ
+ดลบันดาล
+ดลภาค
+ดวง
+ด้วง
+ดวงแก้ว
+ดวงใจ
+ดวงเดือนประดับดาว
+ดวงตา
+ดวงสมร
+ด้วงโสน
+ดวจ
+ดวด
+ด่วน
+ด้วน
+ด้วมเดี้ยม
+ด้วย
+ด้วยว่า
+ดอก
+ดอกกระบอก
+ดอกกะทือ
+ดอกก้าน
+ดอกข้าวใหม่
+ดอกจอก
+ดอกจัน
+ดอกจันทน์
+ดอกจิก
+ดอกชนต้น
+ดอกดั้ว
+ดอกด้าย
+ดอกดิน
+ดอกถวายพระ
+ดอกทอง
+ดอกน้ำผึ้ง
+ดอกบัว
+ดอกบุก
+ดอกเบี้ย
+ดอกเบี้ยทบต้น
+ดอกพิกุลร่วง
+ดอกฟ้อน
+ดอกฟ้า
+ดอกมะขาม
+ดอกมะตาด
+ดอกไม้
+ดอกไม้จันทน์
+ดอกไม้จีน
+ดอกไม้จีบ
+ดอกไม้เจ้า
+ดอกไม้ตาด
+ดอกไม้ทะเล
+ดอกไม้เทียน
+ดอกไม้ไทร
+ดอกไม้น้ำ
+ดอกไม้พวง
+ดอกไม้พุ่ม
+ดอกไม้เพลิง
+ดอกไม้ไฟ
+ดอกไม้ร่วง
+ดอกไม้รุ่ง
+ดอกไม้ไหว
+ดอกรัก
+ดอกลำดวน
+ดอกลำโพง
+ดอกเล็บ
+ดอกสร้อย
+ดอกหมาก
+ดอกหิน
+ดอกอาว
+ดอกอาวแดง
+ดอง
+ด่องๆ
+ด้อง
+ด้องๆ
+ดองฉาย
+ดองดึง
+ดองยา
+ดองหาย
+ดอด
+ดอน
+ด่อน
+ดอม
+ด่อม
+ด้อม
+ดอย
+ด้อย
+ดอลลาร์
+ดะ
+ดะโต๊ะยุติธรรม
+ดะหมัง
+ดัก
+ดักคอ
+ดักดน
+ดักดาน
+ดักเดี้ย
+ดักแด้
+ดักฟัง
+ดักษก
+ดักษณ
+ดักษณี
+ดักษัน
+ดัง
+ดั่ง
+ดั้ง
+ดังจริง
+ดั้งเดิม
+ดังนั้น
+ดังนี้
+ดังรือ
+ดังฤๅ
+ดังหนึ่ง
+ดัชนี
+ดัด
+ดัดจริต
+ดัดดั้น
+ดัดตน
+ดัดปลัก
+ดัดแปลง
+ดัดสันดาน
+ดัตช์
+ดัน
+ดั้น
+ดันทุรัง
+ดั้นเมฆ
+ดันเหิม
+ดับ
+ดับขันธ์
+ดับเครื่อง
+ดับจิต
+ดับชีพ
+ดับลม
+ดัมพ์
+ดั้วเดี้ย
+ดัสกร
+ดัสกรี
+ดา
+ด่า
+ดาก
+ด่าง
+ด้าง
+ด่างทับทิม
+ด่างพร้อย
+ดาด
+ดาดๆ
+ดาดตะกั่ว
+ดาดฟ้า
+ดาดาษ
+ดาดำ
+ด่าทอ
+ดาน
+ด่าน
+ด้าน
+ด้านไม้
+ด้านหน้า
+ดาบ
+ดาบเงิน
+ดาบปลายปืน
+ดาบลาว
+ดาบส
+ดาบสองคม
+ดาม
+ด้าม
+ด้ามจิ้ว
+ดามพ-
+ดามพ์
+ดามพวรรณ
+ดามร
+ดาย
+ด้าย
+ด้ายซัง
+ด้ายดิบ
+ดาร
+ดารก
+ดารณี
+ดารดาษ
+ดารา
+ดาราบถ
+ดาราศาสตร์
+ดาล
+ดาลฉัตร
+ดาลเดือด
+ดาลโทสะ
+ดาลัด
+ดาลุ
+ดาลุช
+ดาว
+ด่าว
+ด้าว
+ดาวกระจาย
+ดาวเคราะห์
+ดาวดึงส์
+ดาวตก
+ดาวเทียม
+ดาวบส
+ดาวรุ่ง
+ดาวเรือง
+ดาวฤกษ์
+ดาวล้อมเดือน
+ดาวหาง
+ดาวเหนือ
+ดาษ
+ดาษดา
+ดาษดื่น
+ดาษเดียร
+ดาหงัน
+ดาฬ
+ดำ
+ด่ำ
+ด้ำ
+ดำกล
+ดำเกิง
+ดำแคง
+ดำดง
+ดำดิน
+ดำแดง
+ดำๆ แดงๆ
+ดำนา
+ดำนาณ
+ดำนาน
+ดำนู
+ดำเนิน
+ดำเนินคดี
+ดำเนียน
+ดำเนียร
+ดำบล
+ดำปืน
+ดำพอง
+ดำโพง
+ดำรง
+ดำรวจ
+ดำรัส
+ดำริ
+ดำรี
+ดำรู
+ดำไร
+ดำฤษณา
+ดำเลิง
+ดำแลง
+ดำหนัก
+ดำหนิ
+ดำหัว
+ดำอวด
+ดิก
+ดิกๆ
+ดิง
+ดิ่ง
+ดิ่งพสุธา
+ดิฉัน
+ดิฐ
+ดิตถ์
+ดิถี
+ดิน
+ดิ้น
+ดินกรด
+ดินขาว
+ดินเค็ม
+ดินดอนสามเหลี่ยม
+ดินดำ
+ดินแดง
+ดินนวล
+ดินประสิว
+ดินปืน
+ดินเปรี้ยว
+ดินพอกหางหมู
+ดิ้นรน
+ดินร่วน
+ดินระเบิด
+ดินส้ม
+ดินสอ
+ดินสอพอง
+ดินสำลี
+ดินหู
+ดินอีหรอบ
+ดิบ
+ดิบดี
+ดิรัจฉาน
+ดิลก
+ดิ่ว
+ดิ้ว
+ดิ้วเดี้ยว
+ดิษฐ์
+ดิสโพรเซียม
+ดี
+ดีๆ
+ดีเกลือ
+ดีเกลือฝรั่ง
+ดีงู
+ดีใจ
+ดีฉัน
+ดีฉาน
+ดีซ่าน
+ดีเซล
+ดีด
+ดีดขัน
+ดีดดิ้น
+ดีดฝ้าย
+ดีดพิมพ์
+ดีดลูกคิด
+ดีดลูกคิดรางแก้ว
+-ดีดัก
+ดีดีที
+ดีเดือด
+ดีแตก
+ดีนาคราช
+ดีเนื้อดีใจ
+ดีบัว
+ดีบุก
+ดีปลี
+ดีเปรสชัน
+ดีผา
+ดีฝ่อ
+ดีพร
+ดีไม่ดี
+ดียา
+ดีร้าย
+ดีละ
+ดีแล้ว
+ดีหมี
+ดีหลี
+ดีหิน
+ดีอกดีใจ
+ดึก
+ดึกดำบรรพ์
+ดึกดื่น
+ดึง
+ดึ่ง
+ดึงดัน
+ดึงดื้อ
+ดึงดูด
+ดึงสะ
+ดึ่ม
+ดื่น
+ดื่นดาษ
+ดื่นดึก
+ดื่ม
+ดื่มด่ำ
+ดือ
+ดื้อ
+ดื้อดัน
+ดื้อด้าน
+ดื้อดึง
+ดื้อแพ่ง
+ดื้อยา
+ดุ
+ดุก
+ดุกดิก
+ดุกทะเล
+ดุกลำพัน
+ดุ้ง
+ดุ้งดิ้ง
+ดุจ
+ดุจดัง
+ดุจหนึ่ง
+ดุด
+ดุดัน
+ดุเดือด
+ดุน
+ดุ้น
+ดุบๆ
+ดุม
+ดุ่ม
+ดุ่มๆ
+ดุ่ย
+ดุรค
+ดุรงค์
+ดุรงคี
+ดุร้าย
+ดุริย-
+ดุริยะ
+ดุริยางค-
+ดุริยางค์
+ดุริยางค์จำเรียง
+ดุริยางคศาสตร์
+ดุริยางคศิลป์
+ดุล
+ดุล-
+ดุลการค้า
+ดุลการชำระเงิน
+ดุลชำระหนี้
+ดุลพินิจ
+ดุลภาค
+ดุลย-
+ดุลยพินิจ
+ดุลยภาพ
+ดุลอำนาจ
+ดุษฎี
+ดุษฎีนิพนธ์
+ดุษฎีบัณฑิต
+ดุษฎีมาลา
+ดุษฎีสังเวย
+ดุษณี
+ดุษณีภาพ
+ดุษิต
+ดุสิต
+ดุเหว่า
+ดู
+ดูกไก่ดำ
+ดูกค่าง
+ดูกร
+ดูก่อน
+ดูแคลน
+ดูใจ
+ดูช้างให้ดูหาง ดูนางให้ดูแม่
+ดูซิ
+ดูด
+ดูดดึง
+ดูดดื่ม
+ดูดอมดูดาย
+ดูดาย
+ดูดู๋
+ดูตาม้าตาเรือ
+ดูถูก
+ดูถูกดูแคลน
+ดูเถอะ
+ดูเถิด
+ดูแน่ะ
+ดูเบา
+ดูไปก่อน
+ดูรา
+ดูร้าย
+ดูรึ
+ดูแล
+ดูหมิ่น
+ดูหมิ่นถิ่นแคลน
+ดูหรือ
+ดูหรู
+ดูเหมือน
+เด
+เด่
+เดก
+เด็ก
+เด็กชา
+เด็กชาย
+เดกซ์โทรส
+เด็กแดง
+เด็กเมื่อวานซืน
+เด็กหญิง
+เด็กอมมือ
+เดคากรัม
+เดคาเมตร
+เดคาลิตร
+เด้ง
+เด็จ
+เดช
+เดชน์
+เดชนะ
+เดชะ
+เดโช
+เดโชชัย
+เดโชพล
+เดซิกรัม
+เดซิเมตร
+เดซิลิตร
+เด็ด
+เด็ดขาด
+เด็ดดวง
+เด็ดดอกไม้ร่วมต้น
+เด็ดดอกไม่ไว้ขั้ว
+เด็ดเดี่ยว
+เด็ดบัวไม่ไว้ใย
+เด็ดปลีไม่มีใย
+เดน
+เด่น
+เดนตาย
+เดนมาร์ก
+เดรัจฉาน
+เด๋อ
+เด๋อด๋า
+เดา
+เด่า
+เด่าๆ
+เด้า
+เด้าดิน
+เด้าลม
+เดาสวด
+เดาสุ่ม
+เดาะ
+เดิน
+เดิ่น
+เดินขบวน
+เดินคาถา
+เดินจักร
+เดินตลาด
+เดินตามหลังผู้ใหญ่หมาไม่กัด
+เดินแต้ม
+เดินโต๊ะ
+เดินทอง
+เดินทัพ
+เดินทาง
+เดินทุ่ง
+เดินเทียน
+เดินธุระให้
+เดินนา
+เดินป้าย
+เดินรถ
+เดินเรือ
+เดินเรื่อง
+เดินสวน
+เดินสะพัด
+เดินสาย
+เดินเส้น
+เดินหน
+เดินเหิน
+เดินไหม
+เดินอากาศ
+เดิม
+เดิมที
+เดิมพัน
+เดี้ย
+เดียง
+เดียงสา
+เดียด
+เดียดฉันท์
+เดียร
+เดียรดาษ
+เดียรถ์
+เดียรถีย์
+เดียรัจฉาน
+เดียว
+เดี่ยว
+เดี๋ยว
+เดี๋ยวก่อน
+เดียวกัน
+เดียวดาย
+เดี๋ยวเดียว
+เดี๋ยวนี้
+เดียะ
+เดื่อ
+เดือก
+เดื่อง
+เดือด
+เดือดดาล
+เดือดร้อน
+เดือน
+เดือนขาด
+เดือนค้างฟ้า
+เดือนคี่
+เดือนคู่
+เดือนเต็ม
+เดือนมืด
+เดือนเย็น
+เดือนร้อน
+เดือนหงาย
+เดือย
+เดือยไก่
+แด
+แด่
+แดก
+แด็กๆ
+แดกงา
+แดกดัน
+แดกแด้
+แด็กแด้
+แดกห่า
+แดง
+แดงน้ำ
+แดด
+แดดาล
+แดดิ้น
+แดน
+แด่น
+แดนไตร
+แดยัน
+แด่วๆ
+แดะ
+แดะแด๋
+โด
+โด่
+โดกเดก
+โด่ง
+โด่งดัง
+โดด
+โดดๆ
+โดดเดี่ยว
+โดดร่ม
+โด่เด่
+โดน
+โดนดี
+โดม
+โดมไพร
+โดมร
+โด่ไม่รู้ล้ม
+โดย
+โดยจริง
+โดยที่
+โดยพยัญชนะ
+โดยสาร
+โดยเสด็จ
+โดยอรรถ
+โดร
+โดรณ
+ใด
+...ใด...หนึ่ง
+ได
+ได้
+ได้กัน
+ได้การ
+ได้แก่
+ได้แกงเทน้ำพริก
+ได้ความ
+ได้คิด
+ได้ใจ
+ได้ช่อง
+ได้ชื่อ
+ไดแซ็กคาไรด์
+ได้ท่า
+ได้ท้าย
+ได้ที
+ได้ที่
+ได้ทีขี่แพะไล่
+ไดนาโม
+ไดนาไมต์
+ไดโนเสาร์
+ได้ยิน
+ไดเรกตริกซ์
+ได้ฤกษ์
+ได้สติ
+ได้ส่วน
+ได้ส่วนสัด
+ได้เสีย
+ได้เสียกัน
+ได้หน้า
+ได้หน้าลืมหลัง
+ต
+ตก
+ตกกระ
+ตกกระไดพลอยโจน
+ตกขอบ
+ตกขาว
+ตกข้าว
+ตกขุย
+ตกคลัก
+ตกค้าง
+ตกเครือ
+ตกงาน
+ตกจั่น
+ตกใจ
+ตกดิน
+ตกตะกอน
+ตกตะลึง
+ตกต่ำ
+ตกแต่ง
+ต๊กโต
+ตกใต้เถรเทวทัต
+ตกท้องช้าง
+ตกทอด
+ตกที่นั่ง
+ตกนรกทั้งเป็น
+ตกน้ำมัน
+ตกน้ำไม่ว่าย
+ตกน้ำไม่ไหล ตกไฟไม่ไหม้
+ตกใน
+ตกเบ็ด
+ตกเบิก
+ตกประหม่า
+ตกปลอก
+ตกปลัก
+ตกปากตกคำ
+ตกเป็น
+ตกเป็นเบี้ยล่าง
+ตกผลึก
+ตกพุ่มม่าย
+ตกฟอง
+ตกฟาก
+ตกมัน
+ตกมูก
+ตกยาก
+ตกรางวัล
+ตกลง
+ตกล่องปล่องชิ้น
+ตกลูก
+ตกเลือด
+ตกว่า
+ตกสนับ
+ตกสะเก็ด
+ตกแสก
+ตกหนัก
+ตกหมก
+ตกหล่น
+ตกหลุม
+ตกหลุมพราง
+ตกอับ
+ตง
+ต๋ง
+ตงฉิน
+ตงิด
+ตงุ่น
+ตจ-
+ตจปัญจกกรรมฐาน
+ตจสาร
+ตด
+ตดหมูตดหมา
+ตติย-
+ตถาคต
+ตน
+ต้น
+ต้นกล
+ต้นขั้ว
+ต้นคอ
+ต้นคิด
+ต้นเงิน
+ต้นฉบับ
+ต้นชนดอก
+ต้นเชือก
+ต้นตระกูล
+ต้นตอ
+ต้นตายใบเป็น
+ต้นตำรับ
+ต้นทาง
+ต้นทุน
+ต้นเทียม
+ต้นน้ำ
+ต้นบท
+ต้นแบบ
+ต้นเพลิง
+ต้นมือ
+ต้นไม้
+ต้นร่าง
+ต้นร้ายปลายดี
+ต้นเรือ
+ต้นเรื่อง
+ต้นวายปลายดก
+ต้นสังกัด
+ต้นสายปลายเหตุ
+ต้นเสียง
+ต้นหน
+ต้นเหตุ
+ตนัย
+ตนุ
+ตนุมัธยมา
+ตนุมัธยา
+ตบ
+ตบตา
+ตบแต่ง
+ตบเท้า
+ตบแผละ
+ตบมือ
+ตบมือข้างเดียวไม่ดัง
+ตบยุง
+ตบหัวกลางศาลา ขอขมาที่บ้าน
+ตบหัวลูบหลัง
+ตบะ
+ตปนียะ
+ตม-
+ต้ม
+ต้มกะทิ
+ต้มกะปิ
+ต้มข่า
+ต้มเค็ม
+ต้มโคล้ง
+ต้มปลาร้า
+ต้มเปรต
+ต้มเปอะ
+ต้มยำ
+ต้มยำกะทิ
+ต้มส้ม
+ต้มสุก
+ตมูก
+ตโม-
+ตโมนุท
+ตโมไพรี
+ตโมหร
+ตยาค
+ตยาคี
+ตยุติ
+ตรง
+ตรงๆ
+ตรงกัน
+ตรงกันข้าม
+ตรณี
+ตรม
+ตรมตรอม
+ตรมเตรียม
+ตรมวล
+ตรรก-
+ตรรกศาสตร์
+ตรรกะ
+ตรลบ
+ตรลอด
+ตรละ
+ตรลา
+ตรลาด
+ตรเลิด
+ตรวจ
+ตรวจการณ์
+ตรวจข่าว
+ตรวจตรา
+ตรวจเลือด
+ตรวด
+ตรวน
+ตรวย
+ตรอก
+ตรอง
+ตรอมใจ
+ตรอมตรม
+ตระ
+ตระกล
+ตระกวน
+ตระกอง
+ตระกัด
+ตระการ
+ตระกูล
+ตระกูลมูลชาติ
+ตระคัร
+ตระง่อง
+ตระจัก
+ตระชัก
+ตระเชิญ
+ตระดก
+ตระดาษ
+ตระเตรียม
+ตระแตร้น
+ตระทรวง
+ตระนาว
+ตระไน
+ตระบก
+ตระบอก
+ตระบอง
+ตระบัด
+ตระบัดสัตย์
+ตระบัน
+ตระเบ็ง
+ตระแบ่
+ตระแบก
+ตระแบง
+ตระแบน
+ตระแบ่น
+ตระโบม
+ตระพอง
+ตระพัง
+ตระมื่น
+ตระโมจ
+ตระลาการ
+ตระวัน
+ตระเว็ด
+ตระเวน
+ตระเวนไพร
+ตระเวนวัน
+ตระเวนเวหา
+ตระสัก
+ตระหง่อง
+ตระหง่าน
+ตระหนก
+ตระหนัก
+ตระหน่ำ
+ตระหนี่
+ตระหนี่ตัว
+ตระอร
+ตระอาล
+ตระโอม
+ตรัง
+ตรังค-
+ตรังค์
+ตรังคนที
+ตรังควชิราวดี
+ตรับ
+ตรับฟัง
+ตรัย
+ตรัยตรึงศ์
+ตรัส
+ตรัสรู้
+ตรัสสา
+ตรา
+ตรากตรำ
+ตราขุนพล
+ตราจอง
+ตราชู
+ตราแดง
+ตราตั้ง
+ตราบ
+ตราบเท่า
+ตราบาป
+ตราไปรษณียากร
+ตราภูมิ
+ตรายาง
+ตราสัง
+ตราสาร
+ตราสิน
+ตราหน้า
+ตรำ
+ตร่ำ
+ตริ
+ตริตรอง
+ตริว
+ตรี
+ตรีกฏุก
+ตรีกันสวาต
+ตรีกาล
+ตรีกาฬพิษ
+ตรีกูฏ
+ตรีเกสรมาศ
+ตรีโกณ
+ตรีโกณมิติ
+ตรีคูณ
+ตรีจีวร
+ตรีฉินทลามกา
+ตรีชาต
+ตรีญาณรส
+ตรีทศ
+ตรีทิพ
+ตรีทิพยรส
+ตรีทุรวสา
+ตรีทูต
+ตรีเทวตรีคันธา
+ตรีโทษ
+ตรีธารทิพย์
+ตรีนิศก
+ตรีเนตร
+ตรีบถ
+ตรีบูร
+ตรีประดับ
+ตรีปวาย
+ตรีปิฎก
+ตรีปิตผล
+ตรีผลธาตุ
+ตรีผลสมุตถาน
+ตรีผลา
+ตรีพิธพรรณ
+ตรีพิษจักร
+ตรีเพชรทัณฑี
+ตรีเพชรพวง
+ตรีเพชรสมคุณ
+ตรีภพ
+ตรีภพนาถ
+ตรีภูมิ
+ตรีภูว
+ตรีมธุร
+ตรีมูรติ
+ตรียมก
+ตรียัมปวาย
+ตรีรัตน์
+ตรีโลก
+ตรีโลกนาถ
+ตรีโลเกศ
+ตรีโลจน์
+ตรีโลหก
+ตรีโลหะ
+ตรีวาตผล
+ตรีศก
+ตรีศูล
+ตรีสมอ
+ตรีสมุตถาน
+ตรีสัตกุลา
+ตรีสันนิบาตผล
+ตรีสาร
+ตรีสินธุรส
+ตรีสุคนธ์
+ตรีสุรผล
+ตรีเสมหผล
+ตรีอมฤต
+ตรีอากาศผล
+ตรีเอกภาพ
+ตรีเอกานุภาพ
+ตรึก
+ตรึกตรอง
+ตรึกถอง
+ตรึง
+ตรึงตรา
+ตรึงศ-
+ตรุ
+ตรุณ
+ตรุย
+ตรุษ
+ตรุษจีน
+ตรู
+ตรู่
+ตฤณ
+ตฤณ-
+ตฤณชาติ
+ตฤณมัย
+ตฤตีย-
+ตฤตียะ
+ตฤท
+ตฤป
+ตฤษณา
+ตฤๅ
+ตล
+ตลก
+ตลกคะนอง
+ตลกบาตร
+ตลกโปกฮา
+ตลกหัวเราะ
+ตลบ
+ตลบตะแลง
+ตลบนก
+ตลบหลัง
+ตลอด
+ตลอดรอดฝั่ง
+ตละ
+ตลับ
+ตลับนาก
+ตลาด
+ตลาดเงิน
+ตลาดท้องน้ำ
+ตลาดนัด
+ตลาดน้ำ
+ตลาดมืด
+ตลาดยี่สาน
+ตลาดสด
+ตลาดหน้าคุก
+ตลาดหลักทรัพย์
+ตลาดหุ้น
+ตลิ่ง
+ตลึง
+ตวง
+ตวงพระธาตุ
+ต่วน
+ต้วมเตี้ยม
+ตวัก
+ตวัด
+ตวาด
+ตอ
+ต่อ
+ต้อ
+ตอก
+ต๊อก
+ต๊อกๆ
+ต๊อกต๋อย
+ต่อกร
+ต้อกระจก
+ตอกหน้า
+ต่อกิ่ง
+ต่อความยาวสาวความยืด
+ตอง
+ต้อง
+ตองกราย
+ต้องกัน
+ต้องการ
+ต้องคดี
+ต้องใจ
+ตองตอย
+ต้องตา
+ต้องเต
+ตองแตก
+ต่องแต่ง
+ต้องโทษ
+ต้องธรณีสาร
+ตองเปรียง
+ต้องสู้
+ต้องหา
+ตองเหลือง
+ตอด
+ตอดต่อ
+ต่อตา
+ต่อต้าน
+ต่อตาม
+ต่อตี
+ต่อแต้ม
+ตอน
+ต้อน
+ต้อนรับ
+ต้อนรับขับสู้
+ต้อนหมูเข้าเล้า
+ต่อนัดต่อแนง
+ต้อเนื้อ
+ตอบ
+ตอบโต้
+ตอบแทน
+ตอเบา
+ต่อปาก
+ต่อปากต่อคำ
+ต่อปากหลากคำ
+ตอม
+ต่อม
+ต๋อม
+ต่อมน้ำ
+ต่อมโลหิต
+ตอม่อ
+ต่อย
+ต้อย
+ต้อยๆ
+ต้อยตริ่ง
+ต้อยติ่ง
+ต้อยตีวิด
+ต่อยหอย
+ตอแย
+ต่อแย้ง
+ตอร์ปิโด
+ต่อล้อต่อเถียง
+ต้อลำไย
+ต้อลิ้นหมา
+ต่อว่า
+ต่อสู้
+ต่อไส้
+ต่อหน้า
+ต่อหน้ามะพลับ ลับหลังตะโก
+ต้อหิน
+ตอแหล
+ต่ออายุ
+ตะ
+ตะกรน
+ตะกรวย
+ตะกร้อ
+ตะกร่อม
+ตะกรัน
+ตะกรับ
+ตะกร้า
+ตะกราม
+ตะกรุด
+ตะกรุม
+ตะกรุมตะกราม
+ตะกละ
+ตะกลาม
+ตะกวด
+ตะกอ
+ตะกอน
+ตะกัง
+ตะกั่ว
+ตะกั่วเกรียบ
+ตะกั่วแดง
+ตะกั่วตัด
+ตะกาง
+ตะกาด
+ตะกาย
+ตะกาว
+ตะกุกตะกัก
+ตะกุย
+ตะกุยตะกาย
+ตะกู
+ตะกูด
+ตะเกียกตะกาย
+ตะเกียง
+ตะเกียงแก๊ส
+ตะเกียงรั้ว
+ตะเกียงลาน
+ตะเกียบ
+ตะแก
+ตะแก่
+ตะแกรง
+ตะโก
+ตะโก้
+ตะโกก
+ตะโกขาว
+ตะโกดำ
+ตะโกน
+ตะโกรง
+ตะโกรม
+ตะโกส้ม
+ตะไกร
+ตะขบ
+ตะขบฝรั่ง
+ตะขอ
+ตะขาบ
+ตะขิดตะขวง
+ตะเข้
+ตะเข้ขบฟัน
+ตะเข็บ
+ตะเข็บไต่ขอน
+ตะเขิง
+ตะโขง
+ตะคร้อ
+ตะครอง
+ตะครั่นตะครอ
+ตะคร้ำ
+ตะคริว
+ตะครุบ
+ตะครุบกบ
+ตะคลับตะคล้าย
+ตะคอก
+ตะคัน
+ตะค้า
+ตะคาก
+ตะคาง
+ตะค้าทอง
+ตะค้าน
+ตะคิว
+ตะคุ่ม
+ตะคุ่มๆ
+ตะเครียว
+ตะเคียน
+ตะเคียนทอง
+ตะเคียนเผือก
+ตะเคียว
+ตะแคง
+ตะไคร่
+ตะไคร้
+ตะไคร้แดง
+ตะไคร้น้ำ
+ตะไคร้บก
+ตะไคร้หอม
+ตะไคร้หางนาค
+ตะเฆ่
+ตะแง้
+ตะติน
+ตะแตร้น
+ตะนอย
+ตะนาว
+ตะบม
+ตะบอง
+ตะบองกัน
+ตะบองแดง
+ตะบองเพชร
+ตะบอย
+ตะบัน
+ตะบันไฟ
+ตะบิ้ง
+ตะบิด
+ตะบิดตะบอย
+ตะบี้ตะบัน
+ตะบึง
+ตะบุ้ย
+ตะบุ้ยๆ
+ตะบูน
+ตะเบ็ง
+ตะเบ็งมาน
+ตะแบก
+ตะแบง
+ตะแบงมาน
+ตะโบม
+ตะไบ
+ตะปบ
+ตะปลิง
+ตะปัดตะป่อง
+ตะปิ้ง
+ตะปุ่มตะป่ำ
+ตะปู
+ตะปูเข็ม
+ตะปูควง
+ตะปูหัวเห็ด
+ตะพง
+ตะพด
+ตะพอง
+ตะพัก
+ตะพัง
+ตะพัด
+ตะพั้น
+ตะพาก
+ตะพาน
+ตะพานช้าง
+ตะพานหนู
+ตะพาบ
+ตะพาบน้ำ
+ตะพาย
+ตะพายแล่ง
+ตะพึด
+ตะพึดตะพือ
+ตะพุ่น
+ตะพุ่นหญ้าช้าง
+ตะเพรา
+ตะเพิง
+ตะเพิด
+ตะเพิ่น
+ตะเพียน
+ตะเพียนทอง
+ตะเพียนน้ำเค็ม
+ตะโพก
+ตะโพง
+ตะโพน
+ตะเภา
+ตะเภาเดียวกัน
+ตะใภ้
+ตะม่อ
+ตะมอย
+ตะยองสะลา
+ตะรัง
+ตะรังกะนู
+ตะรังตังกวาง
+ตะรังตังช้าง
+ตะราง
+ตะลอง
+ตะลอน
+ตะล่อม
+ตะล่อมข้าว
+ตะล่อมป้อม
+ตะละ
+ตะลาน
+ตะลิงปลิง
+ตะลิบ
+ตะลีตะลาน
+ตะลึง
+ตะลึงพรึงเพริด
+ตะลุง
+ตะลุ่ม
+ตะลุ่มนก
+ตะลุมบอน
+ตะลุ่มโปง
+ตะลุมพอ
+ตะลุมพุก
+ตะลุ่มอิด
+ตะลุย
+ตะเลง
+ตะแลงแกง
+ตะไล
+ตะวัน
+ตะวันขึ้น
+ตะวันตก
+ตะวันยอแสง
+ตะวันออก
+ตะวันออกกลาง
+ตะวันออกใกล้
+ตะวันออกไกล
+ตะวันอ้อมข้าว
+ตะวาง
+ตะเวน
+ตะหนึ่งรัด
+ตะหลิว
+ตะหลุก
+ตะหลุง
+ตะเหลนเป๋น
+ตะเหลาะเปาะ
+ตะแหง่วๆ
+ตะแหมะแขะ
+ตะแหลนแป๋น
+ตะโหงก
+ตัก
+ตักกะ
+ตักตวง
+ตักเตือน
+ตั๊กแตน
+ตักน้ำรดหัวตอ
+ตักน้ำรดหัวสาก
+ตักน้ำใส่กะโหลก ชะโงกดูเงา
+ตักบาตร
+ตักบาตรอย่าถามพระ
+ตักษณ
+ตักษณี
+ตักษัย
+ตัง
+ตั่ง
+ตั้ง
+ตั้งกรม
+ตังเก
+ตั้งเข็ม
+ตั้งไข่
+ตั้งเค้า
+ตั้งแง่
+ตั้งใจ
+ตังฉ่าย
+ตั้งต้น
+ตั้งตัว
+ตั้งตาคอย
+ตังติด
+ตั้งแต่
+ตั้งแต่ง
+ตั้งโต๊ะ
+ตั้งท่า
+ตั้งธาตุ
+ตั้งนาฬิกา
+ตั้งนาฬิกาปลุก
+ตั้งเป้าหมาย
+ตังเม
+ตังวาย
+ตั้งหน้า
+ตั้งหน้าตั้งตา
+ตั้งหัวเรือ
+ตั้งอกตั้งใจ
+ตังโอ๋
+ตัจฉก
+ตัจฉนี
+ตัณฑุล
+ตัณหักษัย
+ตัณหา
+ตัด
+ตัดกัน
+ตัดขาด
+ตัดใจ
+ตัดช่องน้อยแต่พอตัว
+ตัดช่องย่องเบา
+ตัดเชือก
+ตัดญาติขาดมิตร
+ตัดต้นไฟ
+ตัดตอน
+ตัดถนน
+ตัดทาง
+ตัดบท
+ตัดประเด็น
+ตัดเป็นตัดตาย
+ตัดพ้อ
+ตัดไพ่
+ตัดไฟต้นลม
+ตัดไฟหัวลม
+ตัดไม้ข่มนาม
+ตัดรอน
+ตัดราคา
+ตัดสิน
+ตัดสินใจ
+ตัดเส้น
+ตัดหนทาง
+ตัดหน้า
+ตัดหน้าฉาน
+ตัดหนามอย่าไว้หน่อ
+ตัดหางปล่อยวัด
+ตัตว-
+ตัตวศาสตร์
+ตัถย์
+ตัน
+ตันคอหอย
+ตันตระ
+ตันติ
+ตันติภาษา
+ตันปัญญา
+ตันหยง
+ตันเหิม
+ตันอกตันใจ
+ตับ
+ตับแข็ง
+ตับเต่า
+ตับเต่าขาว
+ตับปิ้ง
+ตับเป็ด
+ตับเพลง
+ตับเรื่อง
+ตับเหล็ก
+ตับอ่อน
+ตัว
+ตั๋ว
+ตัวกลั่น
+ตัวกลาง
+ตัวการ
+ตัวเก็ง
+ตัวคูณร่วมน้อย
+ตัวโค
+ตัวใครตัวมัน
+ตัวเงิน
+ตั๋วเงิน
+ตั๋วเงินคลัง
+ตั๋วเงินจ่าย
+ตั๋วเงินรับ
+ตัวจักรใหญ่
+ตัวจำนำ
+ตัวจี๊ด
+ตัวเชิด
+ตัวดี
+ตัวต่อตัว
+ตัวตั้ง
+ตัวตั้งตัวตี
+ตัวตายตัวแทน
+ตัวตืด
+ตัวเต็ง
+ตัวแทน
+ตัวแทนค้าต่าง
+ตัวแทนช่วง
+ตัวแทนเชิด
+ตัวนาง
+ตัวนำ
+ตัวประกอบ
+ตัวประกัน
+ตัวเป็นเกลียว
+ตัวเปล่า
+ตัวแปร
+ตัวผู้
+ตั้วโผ
+ตัวพระ
+ตัวพิมพ์
+ตัวเมีย
+ตัวเมือง
+ตัวไม้
+ตัวยืน
+ตัวเลข
+ตั๋วแลกเงิน
+ตัวสะกด
+ตั๋วสัญญาใช้เงิน
+ตั้วสิว
+ตัวหนังสือ
+ตัวหารร่วมมาก
+ตั้วเหี่ย
+ตัวอย่าง
+ตัวเอก
+ตา
+ตาก
+ตากตน
+ตากบ
+ตากบตาเขียด
+ตากล้อง
+ตากลับ
+ตากล้า
+ตากวาง
+ตากสมอง
+ตากหน้า
+ตากอากาศ
+ตากุ้ง
+ตาโก้ง
+ตาไก่
+ตาขวาง
+ตาขอ
+ตาข่าย
+ตาขาว
+ตาขุ่นตาเขียว
+ตาเข
+ตาแข็ง
+ตาคม
+ตาค้าง
+ตาง
+ต่าง
+ต่างๆ
+ต่างด้าว
+ต่างว่า
+ต่างหาก
+ตางัว
+ตาจระเข้
+ตาชั่ง
+ตาช้าง
+ตาด
+ตาเดียว
+ตาแดง
+ตาตกกล้า
+ตาตั๊กแตน
+ตาตั้ง
+ตาตาราง
+ตาตี่
+ตาตุ่ม
+ตาเต็ง
+ตาโต
+ตาถั่ว
+ตาทวด
+ตาทัพ
+ตาน
+ต่าน
+ต้าน
+ตานกแก้ว
+ตานขโมย
+ต้านทาน
+ตานนกกด
+ตานเสี้ยน
+ตานหก
+ตานหม่อน
+ตานเหลือง
+ตาน้ำ
+ตานี
+ตาบ
+ตาบทับ
+ตาบทิศ
+ตาบอด
+ตาบอดคลำช้าง
+ตาบอดได้แว่น
+ตาบอดตาใส
+ตาบอดสอดตาเห็น
+ตาบอดสี
+ตาปลา
+ตาปลาดุก
+ตาปี
+ตาปีตาชาติ
+ตาปู
+ตาเป็นมัน
+ตาเป็นสับปะรด
+ตาโป่ง
+ตาฝั่ง
+ตาฝาด
+ตาพร่า
+ตาพอง
+ตาฟาง
+ตาฟางไก่
+ตาเฟื้องตาสลึง
+ตาม
+ตามกวาง
+ตามควาย
+ตามใจ
+ตามใจปากมากหนี้
+ตามใจปากลำบากท้อง
+ตามด
+ตามที
+ตามเนื้อผ้า
+ตามบุญตามกรรม
+ตามพ-
+ตามพหัตถี
+ตามพะ
+ตามเพลง
+ตามมี
+ตามมีตามเกิด
+ตามยถากรรม
+ตามเรื่องตามราว
+ตามลมตามแล้ง
+ตามลำพัง
+ตามอำเภอใจ
+ตามะแน
+ตามิน
+ตามีตามา
+ตาแมว
+ตาย
+ต้าย
+ตายขาน
+ตายขุย
+ตายคาที่
+ตายโคม
+ตายใจ
+ตายซาก
+ตายด้าน
+ตายดาบหน้า
+ตายตัว
+ตายทั้งกลม
+ตายน้อย
+ตายนึ่ง
+ตายประชดป่าช้า
+ตายเป็นเบือ
+ตายฝอย
+ตายฝังยังเลี้ยง
+ตายพราย
+ตายราบ
+ตายลาภ
+ตายห่า
+ตายโหง
+ตายอดตายอยาก
+ตาราง
+ตารางสอน
+ตารางเหลี่ยม
+ตาราไต
+ตาร้าย
+ตาริ้ว
+ตาเรือ
+ตาเรือชัย
+ตาล
+ตาลปัตร
+ตาลปัตรบังเพลิง
+ตาลปัตรฤๅษี
+ตาลม
+ตาลยอดด้วน
+ตาลอ
+ตาลอย
+ตาลาน
+ตาลาย
+ตาลีตาเหลือก
+ตาลุ
+ตาลุก
+ตาลุกตาชัน
+ตาลุชะ
+ตาเล็กตาน้อย
+ตาว
+ต๋าว
+ตาโศก
+ตาส่อน
+ตาสำเภา
+ตาสีตาสา
+ตาเสือ
+ตาหนู
+ตาหมากรุก
+ตาหยี
+ตาหลิ่ง
+ตาหวาน
+ตาเหล่
+ตาเหลว
+ตาเหลือก
+ตาเหลือกตาพอง
+ตาแหวน
+ตาฬ
+ตาอ้อย
+ตาเอก
+ตำ
+ต่ำ
+ตำข้าวสารกรอกหม้อ
+ต่ำใจ
+ต่ำช้า
+ต่ำตน
+ต่ำต้อย
+ตำตา
+ตำนาน
+ตำน้ำพริกละลายแม่น้ำ
+ตำเนิน
+ตำเนียน
+ตำบล
+ตำแบ
+ต้ำปุก
+ต้ำผาง
+ต้ำพรวด
+ตำแย
+ตำแยแมว
+ตำรวจ
+ตำรวจนครบาล
+ตำรวจภูธร
+ตำรวจวัง
+ตำรวจหลวง
+ตำรับ
+ตำรา
+ตำรุ
+ตำลึง
+ตำส้ม
+ตำเสา
+ตำหนัก
+ตำหนักน้ำ
+ตำหนักแพ
+ตำหนิ
+ตำหระ
+ตำแหน่ง
+ตำแหน่งที่ตั้ง
+ติ
+ติก-
+ติกะ
+ติกาหรัง
+ติง
+ติ่ง
+ติ๋ง
+ติ๋งๆ
+ติ่งตั่ง
+ติงทุเลา
+ติงส-
+ติงสติ
+ติงสติม-
+ติ่งหาย
+ติณ
+ติณ-
+ติณชาติ
+ติด
+ติดๆ
+ติดกระดุม
+ติดกัณฑ์เทศน์
+ติดเก้ง
+ติดขัด
+ติดเครื่อง
+ติดจะ
+ติดจักรยาน
+ติดใจ
+ติดตลก
+ติดตลาด
+ติดต่อ
+ติดต้อยห้อยตาม
+ติดตะกร้อ
+ติดตัว
+ติดตา
+ติดตาม
+ติดตื้น
+ติดบวก
+ติดบ่อน
+ติดปาก
+ติดพัน
+ติดไฟ
+ติดมือ
+ติดไม้ติดมือ
+ติดร่างแห
+ติดลบ
+ติดลม
+ติดศัพท์
+ติดสอยห้อยตาม
+ติดสัด
+ติดสำนวน
+ติดสินบน
+ติดหน้าตามหลัง
+ติดหมัด
+ติดหลังแห
+ติดแห้ง
+ติดอันดับ
+ติดอ่าง
+ติตติก
+ติตติร
+ติตถ
+ติเตียน
+ติถี
+ติปา
+ติปาถะ
+ติมิ
+ติมิงคละ
+ติร
+ติรัจฉาน
+ติเรือทั้งโกลน
+ติล
+ติลก
+ติ้ว
+ติ้วใบเลื่อม
+ตี
+ตี่
+ตีกรรเชียง
+ตีกาก
+ตีกิน
+ตีเกล็ด
+ตีเกลียว
+ตีไก่
+ตีขนาบ
+ตีขลุม
+ตีความ
+ตีคอ
+ตีคู่
+ตีงูให้กากิน
+ตีงูให้หลังหัก
+ตีจาก
+ตีชิง
+ตีตนก่อนไข้
+ตีตนตายก่อนไข้
+ตีตรวน
+ตีตั๋ว
+ตีต่าง
+ตีตื้น
+ตีแตะ
+ตีโต้
+ตีทอง
+ตีทะเบียน
+ตีท้ายครัว
+ตีท้ายน้ำ
+ตีน
+ตีนกา
+ตีนครุ
+ตีนคู้
+ตีนจก
+ตีนจ้ำ
+ตีนตะขาบ
+ตีนตุ๊กแก
+ตีนเต่า
+ตีนถีบปากกัด
+ตีนเท่าฝาหอย
+ตีนเทียน
+ตีนนก
+ตีนเป็ด
+ตีนผี
+ตีนแรด
+ตีนโรงตีนศาล
+ตีนเหยียด
+ตีบ
+ตีบรรทัด
+ตีบังกั้น
+ตี่ใบ้
+ตีปลาหน้าไซ
+ตีป่า
+ตี่ป้าบ
+ตีป่าให้เสือกลัว
+ตีปีก
+ตีแปลง
+ตีผี
+ตีผึ้ง
+ตีแผ่
+ตีฝีปาก
+ตีโพยตีพาย
+ตีมอง
+ตีรถะ
+ตีระ
+ตีรั้ง
+ตีลังกา
+ตีวง
+ตีวัวกระทบคราด
+ตีสนิท
+ตีสองหน้า
+ตีสำนวน
+ตีเส้น
+ตีเสมอ
+ตีเสียง
+ตีเสียว่า
+ตีหน้า
+ตีหน้าตาย
+ตีหน้ายักษ์
+ตีหลายหน้า
+ตีห่าง
+ตีอวน
+ตีอีตื้อ
+ตึ
+ตึๆ
+ตึก
+ตึกๆ
+ตึ้กๆ
+ตึ้กตั้ก
+ตึกแถว
+ตึกระฟ้า
+ตึง
+ตึงๆ
+ตึงเครียด
+ตึงตัง
+ตึงตัว
+ตึงเปรี๊ยะ
+ตึดตื๋อ
+ตึ๊ดตื๋อ
+ตึตัง
+ตืด
+ตื่น
+ตื้น
+ตื่นข่าว
+ตื้นตัน
+ตื้นตันใจ
+ตื่นตัว
+ตื่นตาตื่นใจ
+ตื่นตาย
+ตื่นตูม
+ตื่นเต้น
+ตื่นแต่ดึก สึกแต่หนุ่ม
+ตื่นฟ้า
+ตื้อ
+ตื๊อ
+ตื๋อ
+ตุ
+ตุๆ
+ตุ๊
+ตุ๊กแก
+ตุ๊กแกใบกลม
+ตุ๊กตา
+ตุ๊กตาล้มลุก
+ตุ๊กตาเสียกบาล
+ตุ๊กต่ำ
+ตุ๊กต่ำน้ำทอง
+ตุกติก
+ตุ๊กติ๊ก
+ตุ๊กตุ่น
+ตุ๊กตุ๋ย
+ตุง
+ตุ้งก่า
+ตุ้งติ้ง
+ตุ๊ดตู่
+ตุ๊ต๊ะ
+ตุตัง
+ตุน
+ตุ่น
+ตุ่นๆ
+ตุ๋น
+ตุ่นต่าน
+ตุนาหงัน
+ตุบๆ
+ตุ้บ
+ตุ้บๆ
+ตุ้บตั้บ
+ตุ๊บป่อง
+ตุปัดตุป่อง
+ตุปัดตุเป๋
+ตุ่ม
+ตุ้ม
+ตุ๋ม
+ตุ้มกว้าว
+ตุมกา
+ตุ้มแซะ
+ตุมตัง
+ตุ้มเต๋น
+ตุ้มปี่
+ตุมพ
+ตุมพรวด
+ตุ้มมะพร้าว
+ตุ้มหู
+ตุ่ย
+ตุ่ยๆ
+ตุ้ย
+ตุ้ยๆ
+ตุ๊ย
+ตุ๋ยตุ่ย
+ตุรค
+ตุรงค-
+ตุรงค์
+ตุรงคราวี
+ตุริยางค์
+ตุล
+ตุลสิ
+ตุลา
+ตุลาการ
+ตุลาคม
+ตุหรัดตุเหร่
+ตู
+ตู่
+ตู้
+ตูก
+ตูข้า
+ตูด
+ตูดงอน
+ตู่ตัว
+ตู้นิรภัย
+ตูบ
+ตู้พระมาลัย
+ตู่พุทธพจน์
+ตูม
+ตูมๆ
+ตูมตาม
+ตูลิ่นฮื้อ
+ตูหนา
+เต
+เตก
+เต๊ก
+เต็ง
+เต่ง
+เตช
+เตโช
+เตโชธาตุ
+เต้น
+เต้นกินรำกิน
+เต้นเขน
+เต็นท์
+เต้นรำ
+เต้นแร้งเต้นกา
+เต้นแร้งเต้นแฉ่ง
+เต็ม
+เต็มแกน
+เต็มคราบ
+เต็มใจ
+เต็มตัว
+เต็มตา
+เต็มตื้น
+เต็มเต็ง
+เต็มที
+เต็มที่
+เต็มบาท
+เต็มประดา
+เต็มประตู
+เต็มปาก
+เต็มเปา
+เต็มมือ
+เต็มเม็ดเต็มหน่วย
+เต็มไม้เต็มมือ
+เต็มยศ
+เต็มรัก
+เต็มหู
+เต็มเหนี่ยว
+เต็มเหยียด
+เต็มอก
+เต็มอกเต็มใจ
+เต็มอัตรา
+เตย
+เตยเลื้อย
+เตร่
+เตร็ด
+เตร็ดเตร่
+เตร็ดเตรน
+เตรน
+เตริง
+เตรียด
+เตรียบ
+เตรียม
+เตรียมตรม
+เตรียมตัว
+เตรียมพร้อม
+เตละ
+เตลิด
+เตว็ด
+เต่อ
+เตอะ
+เตะ
+เตะจมูก
+เตะฉาก
+เตะโด่ง
+เตะตา
+เตะฝุ่น
+เตา
+เต่า
+เต้า
+เต๋า
+เต่ากระสุน
+เต่ากินผักบุ้ง
+เต่าเกียด
+เตาแก๊ส
+เต๋าเขย่า
+เต้าแคน
+เต้าเจี้ยว
+เต่าดำ
+เต่าทอง
+เต่าทอเสื่อ
+เต้าทึง
+เตาทุเรียง
+เต่านา
+เต่าบ้า
+เต้าปืน
+เตาผิง
+เตาฟู่
+เตาไฟ
+เต่ารั้ง
+เต้ารับ
+เต่าร้าง
+เตารีด
+เต่าเลือน
+เต้าส่วน
+เตาสูบ
+เต้าเสียบ
+เต่าหก
+เต่าหวาย
+เต่าหับ
+เต้าหู้
+เต้าหู้ยี้
+เต่าเหลี่ยม
+เต่าเหลือง
+เต้าฮวย
+เต๊าะ
+เตาะแตะ
+เติ่ง
+เตินเต่อ
+เติบ
+เติบโต
+เติม
+เตี้ย
+เตียง
+เตียงลา
+เตี้ยตน
+เตียน
+เตียบ
+เตี๋ยม
+เตียรถ์
+เตียว
+เตี่ยว
+เตี้ยอุ้มค่อม
+เตื้อ
+เตือน
+เตือนใจ
+เตือนตา
+เตือนสติ
+แต่
+แต่ๆ
+แต้
+แตก
+แตกคอ
+แตกเงิน
+แตกฉาน
+แตกฉานซ่านเซ็น
+แตกดับ
+แตกตื่น
+แตกแตน
+แตกทัพ
+แตกเนื้อสาว
+แตกเนื้อหนุ่ม
+แตกฝูง
+แตกพาน
+แตกมัน
+แตกแยก
+แตกระแหง
+แตกร้าว
+แตกหัก
+แต่ก่อนแต่กี้
+แต่กี้แต่ก่อน
+แตง
+แต่ง
+แต่งกว้าน
+แต่งการ
+แต่งงาน
+แต่งตั้ง
+แต่งตัว
+แตงเถาตาย
+แตงเม
+แตงร่มใบ
+แต่งหน้า
+แต่งหน้าขนม
+แต้จิ๋ว
+แตด
+แต๊ดแต๋
+แต่ทว่า
+แตน
+แต้ม
+แต้มคู
+แต้มต่อ
+แตร
+แตรงอน
+แตรเดี่ยว
+แตรฝรั่ง
+แตรฟันฟาร์
+แตรรถยนต์
+แตรลำโพง
+แตรวง
+แตรวงโยธวาทิต
+แตระ
+แต่ละ
+แต้ว
+แต้วแร้ว
+แต้วแล้ว
+แต่ว่า
+แต้แว้ด
+แตะ
+แตะต้อง
+โต
+โต้
+โตก
+โต้คารม
+โต่ง
+โต้ง
+โต้งๆ
+โตงเตง
+โตงๆ เตงๆ
+โตฎก
+โต๊ด
+โต้ตอบ
+โต้เถียง
+โตน
+โตนด
+โต้โผ
+โตมร
+โตมร-
+โตมรธร
+โตย
+โต้แย้ง
+โตรก
+โตรกไตร
+โตรด
+โต้รุ่ง
+โตเล่นหาง
+โต้วาที
+โต้หลง
+โต๊ะ
+โต๊ะกลม
+โต๊ะโขก
+โต๊ะเท้าช้าง
+โต๊ะหมู่
+โต๊ะหมู่บูชา
+โต๊ะอิหม่าม
+ใต้
+ใต้ดิน
+ใต้ถุน
+ใต้เท้า
+ใต้เท้ากรุณา
+ใต้เท้ากรุณาเจ้า
+ใต้ฝ่าพระบาท
+ใต้ฝ่าละอองธุลีพระบาท
+ใต้ฝ่าละอองพระบาท
+ไต
+ไต่
+ไต้
+ไต๋
+ไต้ก๋ง
+ไต่คู้
+ไต่เต้า
+ไต่ถาม
+ไตปลา
+ไต้ฝุ่น
+ไต้ไฟ
+ไต่ไม้
+ไต่ไม้ลำเดียว
+ไตร
+ไตรกิศยา
+ไตรจักร
+ไตรจีวร
+ไตรดายุค
+ไตร่ตรอง
+ไตรตรา
+ไตรตรึงษ์
+ไตรทวาร
+ไตรทศ
+ไตรทิพ
+ไตรทิพย์
+ไตรปิฎก
+ไตรเพท
+ไตรภพ
+ไตรภาคี
+ไตรภูมิ
+ไตรย
+ไตรยางศ์
+ไตรรงค์
+ไตรรัตน์
+ไตรลักษณ์
+ไตรโลก
+ไตรโลกย์
+ไตรวัฏ
+ไตรวิชชา
+ไตรสรณคมน์
+ไตรสรณาคมน์
+ไตรสิกขา
+ไต่ลวด
+ไต่สวน
+ไต้หวัน
+ถ
+ถก
+ถกเขมร
+ถกเถียง
+ถกล
+ถงัน
+ถงาด
+ถด
+ถดถอย
+ถน
+ถนน
+ถนนลาดยาง
+ถนป
+ถนอม
+ถนอมอาหาร
+ถนัด
+ถนัดขวา
+ถนัดใจ
+ถนัดซ้าย
+ถนัดถนี่
+ถนัดปาก
+ถนัดมือ
+ถนัน
+ถนำ
+ถนำทึก
+ถนิม
+ถนิมกาม
+ถนิมสร้อย
+ถบ
+ถบดี
+ถม
+ถ่ม
+ถมเงิน
+ถมตะทอง
+ถมถืด
+ถมเถ
+ถมทอง
+ถ่มน้ำลายรดฟ้า
+ถมปรักมาศ
+ถมปัด
+ถมไป
+ถ่มร้าย
+ถมอ
+ถมึงทึง
+ถล
+ถลก
+ถลกบาตร
+ถลน
+ถลม
+ถล่ม
+ถลอก
+ถลัน
+ถลา
+ถลาก
+ถลากถลำ
+ถลากไถล
+ถลาย
+ถลำ
+ถลำใจ
+ถลำตัว
+ถลำถลาก
+ถลีถลำ
+ถลึงตา
+ถลุง
+ถลุน
+ถ่วง
+ถ่วงดุล
+ถ่วงล้อ
+ถ้วน
+ถ้วนถี่
+ถ้วย
+ถ้วยตวง
+ถ้วยโถง
+ถ้วยรางวัล
+ถวัด
+ถวัดถวัน
+ถวัล
+ถวัลย์
+ถวาย
+ถวายกร
+ถวายตัว
+ถวายเนตร
+ถวายพระพร
+ถวายหัว
+ถวิน
+ถวิล
+ถ่อ
+ถ้อ
+ถอก
+ถอง
+ถ่อง
+ถ้อง
+ถ่องแถว
+ถ่องแท้
+ถอด
+ถอดเขี้ยวถอดเล็บ
+ถอดความ
+ถอดถอน
+ถอดไพ่
+ถอดรหัส
+ถอดรูป
+ถอดสี
+ถอดหัวโขน
+ถ้อถอย
+ถ้อถ้อย
+ถอน
+ถอนเงิน
+ถอนใจใหญ่
+ถอนต้นก่นราก
+ถอนทุน
+ถอนพิษ
+ถอนยวง
+ถอนรากถอนโคน
+ถอนสมอ
+ถอนสายบัว
+ถอนหงอก
+ถอบ
+ถอบแถบ
+ถ่อม
+ถ่อมตัว
+ถอย
+ถ่อย
+ถ้อย
+ถอยกรูด
+ถ้อยความ
+ถ้อยคำ
+ถอยใจใหญ่
+ถอยฉะ
+ถอยฉาก
+ถอยถด
+ถ้อยแถลง
+ถอยทด
+ถอยทัพ
+ถ้อยทีถ้อยปฏิบัติต่อกัน
+ถ้อยทีถ้อยอาศัยกัน
+ถอยหลัง
+ถอยหลังเข้าคลอง
+ถะ
+ถะกัด
+ถะเกิน
+ถะโกน
+ถะถั่น
+ถะถับ
+ถะถุนถะถัน
+ถะมัดถะแมง
+ถัก
+ถัง
+ถั่ง
+ถั่งถ้อย
+ถัณฑิล
+ถัณฑิล-
+ถัณฑิลสายี
+ถัด
+ถัทธ
+ถัน
+ถั่น
+ถั่นๆ
+ถับ
+ถับๆ
+ถัมภ์
+ถัว
+ถั่ว
+ถั่วขาว
+ถั่วคร้า
+ถั่วค้าง
+ถั่วงอก
+ถั่วดำ
+ถั่วนา
+ถั่วแปบ
+ถั่วแปบช้าง
+ถั่วฝักยาว
+ถั่วพร้า
+ถั่วพู
+ถั่วเพาะ
+ถั่วแม่ตาย
+ถั่วแระ
+ถั่วเหลือง
+ถา
+ถ้า
+ถาก
+ถากถาง
+ถาง
+ถ่าง
+ถ่างตา
+ถาด
+ถาโถม
+ถาน
+ถ่าน
+ถ่านโค้ก
+ถ่านไฟเก่า
+ถ่านไฟฉาย
+ถ่านไฟแช็ก
+ถ่านหิน
+ถาบ
+ถาม
+ถามค้าน
+ถามติง
+ถามไถ่
+ถามนำ
+ถามปากคำ
+ถามะ
+ถ่าย
+ถ่ายเดียว
+ถ่ายทอด
+ถ่ายทุกข์
+ถ่ายเท
+ถ่ายแบบ
+ถ่ายปัสสาวะ
+ถ่ายภาพยนตร์
+ถ่ายยา
+ถ่ายรูป
+ถ่ายอุจจาระ
+ถ่าว
+ถาวร
+ถาวร-
+ถาวรธิรา
+ถาวรวัตถุ
+ถ้าว่า
+ถ้าหากว่า
+ถ้ำ
+ถ้ำชา
+ถ้ำมอง
+ถ้ำยาดม
+ถิ่น
+ถิร-
+ถี
+ถี่
+ถี่ๆ
+ถี่ถ้วน
+ถี่เท้า
+ถีน-
+ถีบ
+ถีบกระดาน
+ถีบจักร
+ถีบจักรยาน
+ถีบฉัด
+ถีบตัว
+ถีบทาง
+ถีบรถ
+ถีบหัวส่ง
+ถี่ยิบ
+ถี่ลอดตาช้าง ห่างลอดตาเล็น
+ถึก
+ถึง
+ถึงกัน
+ถึงแก่กรรม
+ถึงแก่น
+ถึงแก่พิราลัย
+ถึงแก่มรณภาพ
+ถึงแก่อนิจกรรม
+ถึงแก่อสัญกรรม
+ถึงขนาด
+ถึงคราว
+ถึงฆาต
+ถึงเงิน
+ถึงใจ
+ถึงชีพิตักษัย
+ถึงชีวิตันตราย
+ถึงที่
+ถึงเป็นถึงตาย
+ถึงผ้า
+ถึงพริกถึงขิง
+ถึงลูกถึงคน
+ถึงว่า
+ถึงไหนถึงกัน
+ถือ
+ถือกำเนิด
+ถือโกรธ
+ถือเขาถือเรา
+ถือใจ
+ถือดี
+ถือตัว
+ถือท้าย
+ถือน้ำพระพิพัฒน์สัตยา
+ถือบวช
+ถือบังเหียน
+ถือปูน
+ถือผิว
+ถือพล
+ถือยศ
+ถือยศถือศักดิ์
+ถือเราถือเขา
+ถือว่า
+ถือศักดินา
+ถือศีล
+ถือสา
+ถือสิทธิ์
+ถือหาง
+ถือโอกาส
+ถุง
+ถุงเค้า
+ถุงตะเครียว
+ถุงตะเคียว
+ถุงย่าม
+ถุงสำเร็จ
+ถุน
+ถุย
+ถุล-
+ถุลละ
+ถู
+ถูก
+ถูกกระทำ
+ถูกกัน
+ถูกขา
+ถูกคอ
+ถูกคู่
+ถูกใจ
+ถูกโฉลก
+ถูกชะตา
+ถูกตา
+ถูกน้อย
+ถูกปาก
+ถูกส่วน
+ถูกเส้น
+ถูกใหญ่
+ถูกอกถูกใจ
+ถูไถ
+ถูป-
+ถูปารหบุคคล
+ถูล-
+ถูลู่ถูกัง
+เถกิง
+เถน
+เถมิน
+เถมินเชิง
+เถมินไพร
+เถย-
+เถยจิต
+เถยเจตนา
+เถยสังวาส
+เถร
+เถร-
+เถรตรง
+เถรภูมิ
+เถรวาท
+เถรส่องบาตร
+เถระ
+เถรานุเถระ
+เถรี
+เถลไถล
+เถลิก
+เถลิง
+เถลิงศก
+เถลือกถลน
+เถ่อ
+เถอะ
+เถอะน่า
+เถะๆ
+เถา
+เถ้า
+เถ้าแก่
+เถาคัน
+เถาคันเหล็ก
+เถาเงาะ
+เถาดาน
+เถามวก
+เถ้ารึง
+เถาวัลย์
+เถาวัลย์กรด
+เถาวัลย์เขียว
+เถาวัลย์ปูน
+เถาวัลย์เปรียง
+เถาวัลย์ยอดด้วน
+เถาวัลย์เหล็ก
+เถาสิงโต
+เถาหัวด้วน
+เถาะ
+เถิก
+เถิง
+เถิด
+เถิดเทิง
+เถิดน่า
+เถิน
+เถียง
+เถียร
+เถือ
+เถือก
+เถื่อน
+แถ
+แถก
+แถง
+แถน
+แถบ
+แถบบันทึกภาพ
+แถบบันทึกเสียง
+แถบเหล็กพืด
+แถม
+แถมพก
+แถลง
+แถลงการณ์
+แถลงการณ์ร่วม
+แถลงข่าว
+แถลบ
+แถว
+โถ
+โถเครื่องแป้ง
+โถง
+โถงเถง
+โถบ
+โถปริก
+โถม
+โถมนาการ
+โถส้วม
+ไถ
+ไถ่
+ไถ้
+ไถกลบ
+ไถง
+ไถดะ
+ไถ่ถอน
+ไถ่ถาม
+ไถนา
+ไถ่บาป
+ไถแปร
+ไถย-
+ไถล
+ท
+ทก
+ทกล้า
+ทแกล้ว
+ท่ง
+ทงัน
+ทชี
+ทด
+ทดถอย
+ทดแทน
+ทดโทร่ห
+ทดรอง
+ทดลอง
+ทดเลข
+ทดสอบ
+ทท
+ทธิ
+ทน
+ท้น
+ทนดี
+ทนต-
+ทนต์
+ทนตกาษฐ์
+ทนทาน
+ทนโท่
+ทนม
+ทนาย
+ทนายความ
+ทนายเรือน
+ทนายเลือก
+ทนายหน้าหอ
+ทบ
+ทบทวน
+ทบวง
+ทบวงการ
+ทบวงการเมือง
+ทม
+ทมก
+ทมน
+ทมบ
+ทมอ
+ทมิฬ
+ทเมิน
+ทโมน
+ทยอย
+ทยา
+ทยาลุ
+ทยาลุก
+ทแยง
+ทแยงมุม
+ทร-
+ทรกรรม
+ทรง
+ทรงกระเทียม
+ทรงกลด
+ทรงข้าวบิณฑ์
+ทรงเครื่อง
+ทรงเครื่องใหญ่
+ทรงเจ้า
+ทรงเจ้าเข้าผี
+ทรงตัก
+ทรงบาดาล
+ทรงประพาส
+ทรงพระเครื่องใหญ่
+ทรงมัณฑ์
+ทรงลังกา
+ทรงหม้อตาล
+ทรชน
+ทรชาติ
+ทรทึง
+ทรธึก
+ทรพล
+ทรพิษ
+ทรพี
+ทรภิกษ์
+ทรมาทรกรรม
+ทรมาน
+ทรมุก
+ทรยศ
+ทรยุค
+ทรรทึง
+ทรรป
+ทรรปณ์
+ทรรปณะ
+ทรรศนะ
+ทรรศนาการ
+ทรรศนีย์
+ทรราช
+ทรลักษณ์
+ทรเล่ห์
+ทรวง
+ทรวด
+ทรวดทรง
+ทรวาร
+ทรสองทรสุม
+ทรสาย
+ทรสุม
+ทรหด
+ทรหน
+ทรหวล
+ทรหึง
+ทรหึงทรหวล
+ทรหู
+ทรเหล
+ทรอ
+ทรอมโบน
+ทรอึง
+ทรอุ้ม
+ทระนง
+ทระนาว
+ทรัพย-
+ทรัพย์
+ทรัพย์นอกพาณิชย์
+ทรัพย์ในดิน สินในน้ำ
+ทรัพย์สมบัติ
+ทรัพยสิทธิ
+ทรัพย์สิน
+ทรัพย์สินส่วนพระมหากษัตริย์
+ทรัพย์สินส่วนพระองค์
+ทรัพย์สินส่วนสาธารณสมบัติของแผ่นดิน
+ทรัพยากร
+ทรัพยากรธรณี
+ทรัพยากรธรรมชาติ
+ทรัมเป็ต
+ทรานซิสเตอร์
+ทราบ
+ทราบเกล้าทราบกระหม่อม
+ทราบฝ่าพระบาท
+ทราบฝ่าละอองธุลีพระบาท
+ทราบฝ่าละอองพระบาท
+ทราม
+ทรามชม
+ทรามเชย
+ทรามวัย
+ทรามสงวน
+ทรามสวาท
+ทราย
+ทรายแก้ว
+ทรายขาว
+ทรายแป้ง
+ทริทร
+ทรุด
+ทรุดโทรม
+ทรุดนั่ง
+ทรุม
+ทรู่
+ทฤฆ-
+ทฤษฎี
+ทฤษฎีบท
+ทล
+ทลบม
+ทลอึง
+ทลาย
+ทลิท
+ทลิททก
+ทวง
+ท้วง
+ท้วงติง
+ทวงถาม
+ท่วงท่า
+ท่วงทำนอง
+ท่วงที
+ทวด
+ทวดน้อย
+ทวดึงส์
+ทวน
+ท้วน
+ทวนทบ
+ทวนสบถ
+ทวนสาบาน
+ท่วม
+ท้วม
+ท้วมๆ
+ท่วมท้น
+ทวย
+ท่วย
+ท้วย
+ทวยโถง
+ท่วยโถง
+ทวยะ
+ทวอย
+ทวัตดึงส์
+ทวัตดึงสาการ
+ทวัย
+ทวา
+ทว่า
+ทวาตรึงประดับ
+ทวาทศ
+ทวาทศม-
+ทวาทศมณฑล
+ทวาทศี
+ทวาบร
+ทวาบรยุค
+ทวาย
+ทวาร
+ทวารทั้งเก้า
+ทวารบถ
+ทวารบาล
+ทวารประดับ
+ทวิ
+ทวิช
+ทวิช-
+ทวิชงค์
+ทวิชากร
+ทวิชาติ
+ทวิตีย
+ทวิตียา
+ทวิบถ
+ทวิบท
+ทวิบาท
+ทวิป
+ทวิภาค
+ทวิภาคี
+ทวิร
+ทวี
+ทวีคูณ
+ทวีธาภิเษก
+ทวีป
+ทวีปี
+ทศ
+ทศ-
+ทศชาติ
+ทศทิศ
+ทศนิยม
+ทศเบญจกูล
+ทศพร
+ทศพล
+ทศพิธราชธรรม
+ทศม-
+ทศมาส
+ทศมี
+ทศวรรษ
+ทศา
+ทศางค์
+ทสา
+ทหระ
+ทหาร
+ทหารกองประจำการ
+ทหารผ่านศึก
+ทหารเลว
+ทอ
+ท่อ
+ท้อ
+ทอก
+ทอง
+ท่อง
+ท้อง
+ทองกร
+ทองกวาว
+ท้องกาง
+ท้องแก่
+ทองขาว
+ท้องขาว
+ท้องขึ้น
+ท้องขึ้นท้องพอง
+ท้องแขน
+ท้องแขวน
+ท้องคัดท้องแข็ง
+ทองคำ
+ทองคำขาว
+ทองคำเปลว
+ท้องคุ้ง
+ทองเค
+ทองเครือ
+ท่องจำ
+ท้องฉนวน
+ทองชมพูนุท
+ทองชุบ
+ทองดอกบวบ
+ทองดำ
+ท้องเดิน
+ทองแดง
+ทองต้นแขน
+ท้องตรา
+ท้องตลาด
+ทองตากู
+ท้องถิ่น
+ทองทราย
+ทองทศ
+ท้องที่
+ทองทึบ
+ท่องเที่ยว
+ทองธรรมชาติ
+ทองนพคุณ
+ท้องน่อง
+ท้องน้อย
+ทองบรอนซ์
+ท้องแบน
+ทองใบ
+ทองปราย
+ทองปลายแขน
+ท้องปลิง
+ทองแป
+ท้องผุท้องพัง
+ท้องผูก
+ทองเผือก
+ทองแผ่นเดียวกัน
+ทองพระกร
+ทองพระขุน
+ท้องพระคลัง
+ท้องพระโรง
+ทองพลุ
+ท้องพลุ
+ท้องพอง
+ทองพัดดึงส์
+ทองพันชั่ง
+ทองพันดุล
+ทองพิศ
+ท้องเฟ้อ
+ทองภู
+ทองม้วน
+ท้องมาน
+ท้องไม้
+ทองไม่รู้ร้อน
+ทองย้อย
+ท้องยุ้งพุงกระสอบ
+ท้องร่วง
+ท้องร่อง
+ทองรูปพรรณ
+ท้องเรื่อง
+ท้องลาน
+ทองลิน
+ท้องเลว
+ทองแล่ง
+ทองวิทยาศาสตร์
+ทองสักโก
+ทองสัมฤทธิ์
+ท้องสาว
+ท้องสำนวน
+ท่องสื่อ
+ท้องเสีย
+ทองหมั้น
+ท้องหมา
+ท้องหมู
+ทองหยอง
+ทองหยอด
+ทองหยิบ
+ทองหลาง
+ทองเหลือง
+ท้องแห้ง
+ทองโหลง
+ทองอังกฤษ
+ท้องอัสดงคต
+ท้องอืด
+ทองอุไร
+ทองเอก
+ทอด
+ทอดกฐิน
+ทอดโกลน
+ทอดตัว
+ทอดตา
+ทอดทฤษฎี
+ทอดทิ้ง
+ทอดที่
+ทอดน่อง
+ทอดน้ำ
+ทอดผ้าป่า
+ทอดพระที่
+ทอดพระเนตร
+ทอดมัน
+ทอดยอด
+ทอดรวง
+ทอดสกา
+ทอดสมอ
+ทอดสะพาน
+ทอดสายตา
+ทอดเสียง
+ทอดหญ้า
+ทอดหุ่ย
+ทอดแห
+ทอดอาลัย
+ท่อถ้อย
+ท้อถอย
+ท้อถ้อย
+ท้อแท้
+ทอน
+ท่อน
+ทอนซิล
+ทอฟฟี่
+ท่อมๆ
+ทอย
+ทอยกอง
+ทอเรียม
+ทอแสง
+ทอหูก
+ท่อไอเสีย
+ทะ
+ทะงัน
+ทะทัด
+ทะทา
+ทะทาย
+ทะท่าว
+ทะท้าว
+ทะทึก
+ทะเทียด
+ทะนง
+ทะนงตัว
+ทะนงศักดิ์
+ทะนน
+ทะนะ
+ทะนา
+ทะนาน
+ทะนานหลวง
+ทะนุ
+ทะนุก
+ทะนุกถนอม
+ทะนุถนอม
+ทะนุบำรุง
+ทะบู
+ทะเบียน
+ทะเบียนบ้าน
+ทะเบียนราษฎร
+ทะเบียนสำมะโนครัว
+ทะมัดทะแมง
+ทะมึน
+ทะมื่น
+ทะแม่ง
+ทะแม่งๆ
+ทะยาทะแยแส
+ทะยาน
+ทะยานใจ
+ทะยานอยาก
+ทะเยอทะยาน
+ทะแย
+ทะแยสามชั้น
+ทะร่อทะแร่
+ทะลวง
+ทะลอก
+ทะลัก
+ทะลักทะแลง
+ทะลาย
+ทะลิ่น
+ทะลิ่นชระลั่ง
+ทะลึ่ง
+ทะลึ่งทะลั่ง
+ทะลุ
+ทะลุกลางปล้อง
+ทะลุดทะลาด
+ทะลุปรุโปร่ง
+ทะเล
+ทะเลทราย
+ทะเล้น
+ทะเลใน
+ทะเลบ้า
+ทะเลภายใน
+ทะเลสาบ
+ทะเลหน้าใน
+ทะเลหลวง
+ทะเลไหล่ทวีป
+ทะเล่อทะล่า
+ทะเลอาณาเขต
+ทะเลาะ
+ทะเลาะเบาะแว้ง
+ทะวาย
+ทะเวน
+ทัก
+ทักข์
+ทักขิญ
+ทักขิณ
+ทักขิณา
+ทักขิณาบถ
+ทักขิณาวัฏ
+ทักขิโณทก
+ทักขิไณยบุคคล
+ทักท้วง
+ทักทาย
+ทักทิน
+ทักนิมิต
+ทักษ-
+ทักษะ
+ทักษา
+ทักษิณ
+ทักษิณนิกาย
+ทักษิณา
+ทักษิณาจาร
+ทักษิณาทาน
+ทักษิณานุประทาน
+ทักษิณายัน
+ทักษิณาวรรต
+ทักษิโณทก
+ทัคธ์
+ทัง
+ทั่ง
+ทั้ง
+ทั้ง...กับ
+ทั้งขึ้นทั้งล่อง
+ทั้งคน
+ทั้งดุ้น
+ทั้ง...ทั้ง
+ทั้งที
+ทั้งที่
+ทั้งๆ ที่
+ทั้งนั้น
+ทั้งนี้
+ทั้งนี้ทั้งนั้น
+ทั้งเนื้อทั้งตัว
+ทั้งปวง
+ทั้งผอง
+ทั้งเพ
+ทั้งมวล
+ทั้ง...และ
+ทังวล
+ทังวี้ทังวล
+ทังสเตน
+ทั้งสิ้น
+ทั้งหมด
+ทั้งหลาย
+ทั้งอย่างนั้น
+ทัณฑ-
+ทัณฑ์
+ทัณฑกรรม
+ทัณฑฆาต
+ทัณฑนิคม
+ทัณฑ์บน
+ทัณฑวิทยา
+ทัณฑสถาน
+ทัณฑะ
+ทัณฑิกา
+ทัณฑิมา
+ทัณฑีบท
+ทัด
+ทัดดอกไม้
+ทัดทา
+ทัดทาน
+ทัดเทียม
+-ทัต
+ทัน
+ทันกิน
+ทันควัน
+ทันใจ
+ทันใด
+ทันต-
+ทันต์
+ทันตชะ
+ทันตแพทย์
+ทันตา
+ทันติน
+ทันตี
+ทันท่วงที
+ทันที
+ทันธ์
+ทันน้ำ
+ทันน้ำทันฝน
+ทันสมัย
+ทับ
+ทับเกษตร
+ทับถม
+ทับทรวง
+ทับทาง
+ทับทางขาว
+ทับทิม
+ทับที่
+ทับแพ
+ทับลัคน์
+ทับเล็ก
+ทับศัพท์
+ทับสมิงคลา
+ทับสิทธิ์
+ทับหลัง
+ทับหลังลัคน์
+ทัป
+ทัปน
+ทัพ
+ทัพพะ
+ทัพพี
+ทัพสัมภาระ
+ทั่ว
+ทั่วถึง
+ทั่วทุกสารทิศ
+ทั่วทุกหัวระแหง
+ทั่วไป
+ทั่วๆ ไป
+ทัศ
+ทัศน-
+ทัศน์
+ทัศนคติ
+ทัศนวิสัย
+ทัศนศาสตร์
+ทัศนศึกษา
+ทัศนะ
+ทัศนา
+ทัศนาการ
+ทัศนาจร
+ทัศนีย-
+ทัศนีย์
+ทัศนียภาพ
+ทัศนูปกรณ์
+ทัศไนย
+ทัสนานุตริยะ
+ทัฬห
+ทัฬหิ
+ทัฬหิกรณ์
+ทัฬหี
+ทัฬหีกรรม
+ทา
+ท่า
+ท้า
+ทาก
+ทาง
+ท้าง
+ทางการ
+ทางเก็บ
+ทางข้าม
+ทางช้างเผือก
+ทางด่วน
+ทางเท้า
+ทางโท
+ทางใน
+ทางผ่าน
+ทางพิเศษ
+ทางมะพร้าว
+ทางม้าลาย
+ทางสาธารณะ
+ทางหลวง
+ทางออก
+ทางเอก
+ทาฐะ
+ทาฐิกะ
+ทาฒะ
+ทาฒิกะ
+ท่าดีทีเหลว
+ท่าเดียว
+ท่าทาง
+ท้าทาย
+ท่าที
+ทาน
+ทาน-
+ท่าน
+ทานกัณฑ์
+ท่านชาย
+ทานต์
+ทานตะวัน
+ทานบดี
+ทานบารมี
+ท่านผู้หญิง
+ทานพ
+ทานมัย
+ทานศีล
+ท่านหญิง
+ท่านั้นท่านี้
+ทานาธิบดี
+ทาบ
+ทาบทาม
+ทาม
+ท่ามกลาง
+ทาย
+ท้าย
+ทายก
+ท้ายเขื่อน
+ท้ายครัว
+ท้ายโต่ง
+ท้ายทอย
+ท้ายน้ำ
+ท้ายฝน
+ทายัช
+ทายา
+ทายาด
+ทายาท
+ทายาทโดยธรรม
+ทาร-
+ทารก
+ทารพี
+ทาริกา
+ทารุ
+ทารุณ
+ทารุณ-
+ทารุณกรรม
+ท่าเรือ
+ทาว
+ท่าว
+ท้าว
+ท่าวกำลัง
+ท่าวทบระนับ
+ท้าวนาง
+ท้าวพญา
+ท้าวพระยา
+ทาษ
+ทาส
+ทาส-
+ทาสทาน
+ทาสปัญญา
+ทาสี
+ท่าอากาศยาน
+ทำ
+ทำกรรม
+ทำการบ้าน
+ทำขวัญ
+ทำครัว
+ทำคลอด
+ทำความ
+ทำคุณ
+ทำคุณบูชาโทษ
+ทำงน
+ทำเจ็บ
+ทำใจ
+ทำได้
+ทำได้ลงคอ
+ทำตัว
+ทำตา
+ทำท่า
+ทำที
+ทำแท้ง
+ทำโทษ
+ทำนบ
+ทำนวย
+ทำนอง
+ทำนองเสนาะ
+ทำนาบนหลังคน
+ทำนาย
+ทำนาออมกล้า ทำปลาออมเกลือ
+ทำนุ
+ทำนุบำรุง
+ทำนูล
+ทำเนา
+ทำเนียบ
+ทำเนียบท่าเรือ
+ทำเนียบนาม
+ทำเนียม
+ทำบาป
+ทำบุญ
+ทำบุญเอาหน้า
+ทำปลา
+ทำปากทำคอ
+ทำเป็น
+ทำไปทำมา
+ทำพิษ
+ทำไพ่
+ทำฟัน
+ทำไฟ
+ทำมัง
+ทำไม
+ทำร้าย
+ทำฤทธิ์
+ทำลาย
+ทำลายขวัญ
+ทำลายสถิติ
+ทำลิง
+ทำเล
+ทำวน
+ทำวัตร
+ทำวัตรค่ำ
+ทำวัตรเช้า
+ทำเวร
+ทำเวลา
+ทำสาว
+ทำเสน่ห์
+ทำเสียเจ็บ
+ทำหน้าทำตา
+ทำหมัน
+ทำหูทวนลม
+ทำเหตุ
+ทำให้
+ทำเอา
+ทำเอาเจ็บ
+ทิคัมพร
+ทิฆัมพร
+ทิ้ง
+ทิ้งกระจาด
+ทิ้งขว้าง
+ทิ้งๆ ขว้างๆ
+ทิ้งจดหมาย
+ทิงเจอร์
+ทิ้งถ่อน
+ทิ้งทวน
+ทิ้งทาน
+ทิ้งท้าย
+ทิ้งทูด
+ทิ้งไพ่
+ทิ้งฟ้อง
+ทิ้งมะพร้าวห้าว
+ทิ้งย่อ
+ทิช
+ทิช-
+ทิชากร
+ทิฏฐะ
+ทิฏฐานุคติ
+ทิฏฐุชุกรรม
+ทิฐ-
+ทิฐธรรม
+ทิฐิ
+ทิด
+ทิต
+ทิน
+ทิน-
+ทินกร
+ทินศูนย์
+ทินาท
+ทิพ
+ทิพ-
+ทิพย-
+ทิพย์
+ทิพยจักษุ
+ทิพยจักษุญาณ
+ทิพยญาณ
+ทิพยเนตร
+ทิพยพยาน
+ทิพยมานุษ
+ทิพยรส
+ทิพยโศรตร
+ทิพโสต
+ทิพา
+ทิพากร
+ทิม
+ทิ่ม
+ทิมดาบ
+ทิ่มตำ
+ทิมทอง
+ทิ่มแทง
+ทิว
+ทิว-
+ทิวกาล
+ทิวงคต
+ทิวทัศน์
+ทิวส-
+ทิวสภาค
+ทิวสะ
+ทิวา
+ทิวากร
+ทิวากาล
+ทิศ
+ทิศทาง
+ทิศา
+ทิศาดร
+ทิศานุทิศ
+ทิศาปาโมกข์
+ที
+ที่
+ที่กัลปนา
+ทีใครทีมัน
+ทีฆ-
+ทีฆชาติ
+ทีฆนิกาย
+ทีฆสระ
+ทีฆายุ
+ที่จริง
+ที่ดิน
+ที่ดินมือเปล่า
+ทีเด็ด
+ทีเดียว
+ทีท่า
+ที่ทาง
+ที่ทำการ
+ที่เท่าแมวดิ้นตาย
+ที่แท้
+ที่ธรณีสงฆ์
+ที่นอน
+ที่นั่ง
+ทีนี้
+ทีป
+ที่พึ่ง
+ทีม
+ที่มั่น
+ที่มา
+ทีรฆ-
+ที่รัก
+ที่ราบ
+ที่ราบสูง
+ทีเล่นทีจริง
+ที่วัด
+ที่ว่าการ
+ที่สุด
+ที่หมาย
+ทีหลัง
+ที่ไหน
+ที่ไหนได้
+ทีเอ็นที
+ทึก
+ทึกทัก
+ทึ่ง
+ทึ้ง
+ทึดทือ
+ทึนทึก
+ทึบ
+ทึม
+ทึมๆ
+ทึ่ม
+ทื่อ
+ทุ
+ทุก
+ทุกๆ
+ทุกข-
+ทุกข์
+ทุกขนิโรธ
+ทุกขลาภ
+ทุกขเวทนา
+ทุกขสมุทัย
+ทุกข์สุข
+ทุกขักษัย
+ทุกขารมณ์
+ทุกฏ
+ทุกที
+ทุกนิบาต
+ทุกพาย
+ทุกเมื่อ
+ทุกเมื่อเชื่อวัน
+ทุกร-
+ทุกรกิริยา
+ทุกวันนี้
+ทุกษดร
+ทุกสิ่งทุกอย่าง
+ทุกหน
+ทุกหนทุกแห่ง
+ทุกหย่อมหญ้า
+ทุกหัวระแหง
+ทุกแห่ง
+ทุกะ
+ทุกัง
+ทุกูล
+ทุคตะ
+ทุคติ
+ทุ่ง
+ทุ้ง
+ทุงงะ
+ทุงเทง
+ทุจจิณณะ
+ทุจริต
+ทุด
+ทุตวิลัมพิตมาลา
+ทุติย-
+ทุติยาสาฬห
+ทุทรรศนนิยม
+ทุน
+ทุ่น
+ทุนจดทะเบียน
+ทุนทรัพย์
+ทุนนอน
+ทุนนิมิต
+ทุนนิยม
+ทุ่นเบ็ด
+ทุนรอน
+ทุ่นระเบิด
+ทุนเรือนหุ้น
+ทุนสำรอง
+ทุนสำรองเงินตรา
+ทุนหมุนเวียน
+ทุ่นอวน
+ทุนิยม
+ทุบ
+ทุบตี
+ทุบทู
+ทุบหม้อข้าว
+ทุปปัญญา
+ทุพพรรณ
+ทุพพล
+ทุพพลภาพ
+ทุพภิกขภัย
+ทุพภิกขันดรกัป
+ทุม
+ทุม-
+ทุ่ม
+ทุ้ม
+ทุ่มตลาด
+ทุ่มเถียง
+ทุ่มเท
+ทุมโน
+ทุมราชา
+ทุย
+ทุ้ย
+ทุร-
+ทุรกันดาร
+ทุรคม
+ทุรชน
+ทุรชาติ
+ทุรน
+ทุรนทุราย
+ทุรพล
+ทุรภิกษ์
+ทุรลักษณ์
+ทุรัถยา
+ทุรัศ
+ทุราคม
+ทุราจาร
+ทุราธวา
+ทุเรศ
+ทุเรียน
+ทุเรียนแขก
+ทุเรียนเทศ
+ทุลักทุเล
+ทุเลา
+ทุวิธ
+ทุศีล
+ทุษฐ-
+ทุส-
+ทุสสะ
+ทุสสีล
+ทู
+ทู่
+ทู้
+ทูกัง
+ทู่ซี้
+ทูต
+ทูตานุทูต
+ทูน
+ทูน้ำจืด
+ทูบ
+ทูม
+ทูมทาม
+ทูโม่ง
+ทูร-
+ทูล
+ทูลกระหม่อม
+ทูลเกล้าทูลกระหม่อมถวาย
+ทูเลียม
+ทูษก
+เท
+เท่
+เทกระจาด
+เทกระเป๋า
+เทคนิค
+เทคนีเชียม
+เทคโนโลยี
+เทครัว
+เทคอนกรีต
+เทง
+เท้ง
+เท้งเต้ง
+เท้งทูด
+เท็จ
+เท็จจริง
+เท็จเทียม
+เทนนิส
+เทน้ำเทท่า
+เทปูน
+เทพ
+เทพ-
+เทพกุสุม
+เทพเจ้า
+เทพชุมนุม
+เทพดา
+เทพดำรู
+เทพทัณฑ์
+เทพทารู
+เทพทาโร
+เทพธิดา
+เทพนม
+เทพนารี
+เทพนิยม
+เทพนิยาย
+เทพนิยายวิทยา
+เทพนิรมิต
+เทพบดี
+เทพบริษัท
+เทพบุตร
+เทพประติมา
+เทพพยากรณ์
+เทพย-
+เทพยเจ้า
+เทพยดา
+เทพยุดา
+เทพสังหรณ์
+เทพา
+เทพาดิเทพ
+เทพาธิบดี
+เทพารักษ์
+เทพิน
+เทพินทร์
+เทพี
+เทพีปักษี
+เทเพนทร์
+เทโพ
+เทริด
+เทลลูเรียม
+เทว-
+เทวดา
+เทวทัณฑ์
+เทวทูต
+เทวธรรม
+เทวธิดา
+เทวนะ
+เทวนาครี
+เทวนิยม
+เทวภาวะ
+เทวระ
+เทวรูป
+เทวโลก
+เทววาจิกะ
+เทววิทยา
+เทวศ
+เทวษ
+เทวสถาน
+เทวสุคนธ์
+เทวอ
+เทวัญ
+เทวัน
+เทวาคาร
+เทวารัณย์
+เทวาลัย
+เทวาวาส
+เทวินทร์
+เทวี
+เทเวนทร์
+เทเวศ
+เทเวศร์
+เทเวศวร์
+เทศ
+เทศ-
+เทศก
+เทศกาล
+เทศน์
+เทศน์แจง
+เทศนา
+เทศบัญญัติ
+เทศบาล
+เทศมนตรี
+เทศะ
+เทศาจาร
+เทศาภิบาล
+เทห-
+เทห์
+เท่ห์
+เทห์ฟากฟ้า
+เทหวัตถุ
+เท่อ
+เท้อ
+เทอญ
+เทอม
+เทอร์เบียม
+เทอร์โมมิเตอร์
+เทอะทะ
+เทา
+เท่า
+เท้า
+เท่ากับ
+เท้าแขน
+เท้าคู้
+เท้าช้าง
+เท่าใด
+เท่าตัว
+เท่าทัน
+เท่าทุน
+เท่าเทียม
+เท่านั้น
+เท่าเผ้า
+เท้ายายม่อม
+เท่ารึง
+เท่าไร
+เท้าสาน
+เท้าสิงห์
+เทาะห์
+เทิก
+เทิ่ง
+เทิงบอง
+เทิด
+เทิดทูน
+เทิน
+เทิบ
+เทิบๆ
+เทิบทาบ
+เทิ้ม
+เทียง
+เที่ยง
+เที่ยงๆ
+เที่ยงตรง
+เที่ยงแท้
+เที่ยงธรรม
+เทียน
+เที้ยน
+เทียนกิ่ง
+เทียนเกล็ดหอย
+เทียนแกลบ
+เทียนขม
+เทียนขาว
+เทียนข้าวเปลือก
+เทียนดำ
+เทียนแดง
+เทียนตากบ
+เทียนตาตั๊กแตน
+เทียนบ้าน
+เทียนพรรษา
+เทียนเยาวพาณี
+เทียนรุ่ง
+เทียนลวด
+เทียนสัตตบุษย์
+เทียนอบ
+เทียบ
+เทียบเคียง
+เทียบเท่า
+เทียม
+เทียร
+เที้ยร
+เทียรฆ-
+เทียรฆชาติ
+เทียรฆราตร
+เทียว
+เที่ยว
+เทือ
+เทื่อ
+เทื้อ
+เทือก
+เทือกเขา
+เทือกเถาเหล่ากอ
+เทือน
+แท่
+แท้
+แท้ๆ
+แท็กซี่
+แท็กซี่มิเตอร์
+แทง
+แท่ง
+แท้ง
+แท็งก์น้ำ
+แทงใจ
+แทงใจดำ
+แทงตะไบ
+แทงทวย
+แทงวิสัย
+แทงหยวก
+แท้จริง
+แทตย์
+แท้ที่จริง
+แทน
+แท่น
+แทนเจนต์
+แทนทาลัม
+แทนที่จะ
+แท่นพิมพ์
+แท่นมณฑล
+แท่นลา
+แท่นหมึก
+แทบ
+แทรก
+แทรกซอน
+แทรกซ้อน
+แทรกซึม
+แทรกแซง
+แทรกเตอร์
+แทรกแผ่นดิน
+แทรกโพน
+แทลเลียม
+แทะ
+แทะโลม
+โท
+โท่
+โทกเทก
+โทงๆ
+โทงเทง
+โทณะ
+โทโทษ
+โทธก
+โทน
+โทนโท่
+โทมนัส
+โทร-
+โทรคมนาคม
+โทรทรรศน์
+โทรทัศน์
+โทรพิมพ์
+โทรภาพ
+โทรม
+โทรมศัสตราวุธ
+โทรมหญิง
+โทรเลข
+โทรศัพท์
+โทรสาร
+โทลา
+โทศก
+โทษ
+โทษ-
+โทษกรณ์
+โทษตรัย
+โทษทางวินัย
+โทษโพย
+โทษา
+โทษากร
+โทษาดิลก
+โทษานุโทษ
+โทษารมณ์
+โทส-
+โทสะ
+โทสาคติ
+โทโส
+โทหฬะ
+โทหฬินี
+ไท
+ไท้
+ไทเทเนียม
+ไทเทรต
+ไทย
+ไทยดำ
+ไทยทาน
+ไทยธรรม
+ไทยน้อย
+ไทยนับสาม
+ไทยนับห้า
+ไทยหลง
+ไทยหลวง
+ไทยใหญ่
+ไทร
+ไทรทอง
+ไทรเลียบ
+ไทวะ
+ธ
+ธง
+ธงก์
+ธงกระบี่ธุช
+ธงจระเข้
+ธงฉาน
+ธงชัย
+ธงชัยเฉลิมพลของทหารบก
+ธงชัยเฉลิมพลของทหารเรือ
+ธงชัยเฉลิมพลของทหารอากาศ
+ธงชาติ
+ธงชาย
+ธงตะขาบ
+ธงนำริ้ว
+ธงบรมราชวงศ์น้อย
+ธงบรมราชวงศ์ใหญ่
+ธงประจำกองทัพบก
+ธงประจำกองทัพเรือ
+ธงประจำกองทัพอากาศ
+ธงพระครุฑพ่าห์
+ธงพิทักษ์สันติราษฎร์
+ธงมหาราชน้อย
+ธงมหาราชใหญ่
+ธงเยาวราชน้อย
+ธงเยาวราชใหญ่
+ธงราชนาวี
+ธงราชินีน้อย
+ธงราชินีใหญ่
+ธงสามเหลี่ยม
+ธช
+ธชี
+ธตรฐ
+ธน
+ธน-
+ธนธานี
+ธนบดี
+ธนบัตร
+ธนสมบัติ
+ธนสาร
+ธนัง
+ธนาคม
+ธนาคาร
+ธนาคารพาณิชย์
+ธนาคารโลก
+ธนาคารออมสิน
+ธนาณัติ
+ธนิต
+ธนิษฐะ
+ธนิษฐา
+ธนุ
+ธนุร-
+ธนุรมารค
+ธนุรวิทยา
+ธนุรเวท
+ธนู
+ธนูศิลป์
+ธเนศ
+ธเนศวร
+ธโนปจัย
+ธไนศวรรย์
+ธม
+ธมกรก
+ธร
+ธรง
+ธรณ
+ธรณิน
+ธรณินทร์
+ธรณิศ
+ธรณิศร
+ธรณิศวร์
+ธรณี
+ธรณีกันแสง
+ธรณีประตู
+ธรณีมณฑล
+ธรณีร้องไห้
+ธรณีวิทยา
+ธรณีศวร
+ธรณีสงฆ์
+ธรณีสาร
+ธรณีสูบ
+ธรมาน
+ธรรม
+ธรรม-
+ธรรมกถา
+ธรรมกถึก
+ธรรมกาม
+ธรรมกาย
+ธรรมการ
+ธรรมการย์
+ธรรมเกษตร
+ธรรมขันธ์
+ธรรมคุณ
+ธรรมจรณะ
+ธรรมจรรยา
+ธรรมจริยา
+ธรรมจักร
+ธรรมจักษุ
+ธรรมจาคะ
+ธรรมจารี
+ธรรมจินดา
+ธรรมเจดีย์
+ธรรมชาติ
+ธรรมฐิติ
+ธรรมดา
+ธรรมทรรศนะ
+ธรรมธาดา
+ธรรมธาตุ
+ธรรมนาถ
+ธรรมนิตย์
+ธรรมนิยม
+ธรรมนิยาม
+ธรรมนิเวศ
+ธรรมนูญ
+ธรรมนูญการปกครองราชอาณาจักร
+ธรรมเนียม
+ธรรมเนียมประเพณี
+ธรรมบท
+ธรรมบาล
+ธรรมบิฐ
+ธรรมปฏิรูป
+ธรรมปฏิสัมภิทา
+ธรรมประติรูป
+ธรรมยุต
+ธรรมยุทธ์
+ธรรมรัตน์
+ธรรมราชา
+ธรรมวัตร
+ธรรมศาสตร์
+ธรรมสถิติ
+ธรรมสภา
+ธรรมสรีระ
+ธรรมสังคีติ
+ธรรมสังเวช
+ธรรมสากัจฉา
+ธรรมสามิสร
+ธรรมสามี
+ธรรมสาร
+ธรรมะ
+ธรรมะธัมโม
+ธรรมันเตวาสิก
+ธรรมาทิตย์
+ธรรมาธรรม
+ธรรมาธิปไตย
+ธรรมาธิษฐาน
+ธรรมานุธรรมปฏิบัติ
+ธรรมานุสาร
+ธรรมาภิมุข
+ธรรมาภิสมัย
+ธรรมายตนะ
+ธรรมารมณ์
+ธรรมาสน์
+ธรรมิก
+ธรรมิก-
+ธรา
+ธราดล
+ธราธร
+ธราธาร
+ธราธิบดี
+ธราธิป
+ธริษตรี
+ธเรศ
+ธเรษตรี
+ธเรษตรีศวร
+ธวัช
+ธังก
+ธัช
+ธัญ
+ธัญ-
+ธัญโกศ
+ธัญเขต
+ธัญชาติ
+ธัญญาหาร
+ธัญดัจ
+ธัญเบญจก
+ธัญพืช
+ธัญมาส
+ธันยา
+ธันยาวาท
+ธันวาคม
+ธัมมะ
+ธาดา
+ธาตรี
+ธาตวากร
+ธาตุ
+ธาตุ-
+ธาตุโขภ
+ธาตุครรภ
+ธาตุเจดีย์
+ธาตุเบา
+ธาตุมมิสสา
+ธาตุสถูป
+ธาตุหนัก
+ธานิน
+ธานินทร์
+ธานี
+ธาร
+ธารกำนัล
+ธารคำนัล
+ธารณ
+ธารณะ
+ธารณา
+ธารณามัย
+ธารพระกร
+ธารยักษ์
+ธารา
+ธาราเคหะ
+ธาราธิคุณ
+ธารายนต์
+ธาษตรี
+ธำมรงค์
+ธำรง
+ธิดา
+ธิติ
+ธีร-
+ธีรภาพ
+ธีรราช
+ธุช
+ธุดงค-
+ธุดงค์
+ธุดงควัตร
+ธุดงคสมาทาน
+ธุต
+ธุตตะ
+ธุม-
+ธุมเกตุ
+ธุมชาล
+ธุมเพลิง
+ธุมา
+ธุร-
+ธุรการ
+ธุรกิจ
+ธุระ
+ธุรำ
+ธุลี
+ธุว-
+ธุวดารา
+ธุวภาค
+ธุวมณฑล
+ธุวยัษฎี
+ธูป
+ธูป-
+ธูปบาตร
+ธูปแพเทียนแพ
+ธูปไม้ระกำ
+ธูปฤๅษี
+เธนุ
+เธอ
+เธียร
+โธ่
+โธวน
+น
+นก
+นกกระจอก
+นกกระจอกทอง
+นกกระทุง
+นกกะปูด
+นกกางปีก
+นกเขา
+นกคุ่ม
+นกจาก
+นกต่อ
+นกยูง
+นกรู้
+นกสองหัว
+นกหก
+นกหวีด
+นกอยู่ในปล่อง
+นกุล
+นข
+นข-
+นขทารณ์
+นขลิขิต
+นขเลขา
+นขา
+นค
+นคร
+นคร-
+นครบาล
+นครบาลจังหวัด
+นครรัฐ
+นครวาสี
+นครโสภิณี
+นครโสเภณี
+นคราทร
+นครินทร์
+นคเรศ
+นคินทร
+นคินทร์
+นเคนทร์
+นเคศวร
+นโคทร
+นง
+นงคราญ
+นงคุฐ
+นงนุช
+นงพะงา
+นงพาล
+นงพุธ
+นงโพธ
+นงเยาว์
+นงราม
+นงลักษณ์
+นท
+นที
+นทีรัย
+นนตรา
+นนท์
+นนทรี
+นนทลี
+นนทิ
+นบ
+นบนอบ
+นปุงสกลิงค์
+นปุงสกลึงค์
+นพ
+นพ-
+นพกะ
+นพเก้า
+นพคุณ
+นพเคราะห์
+นพนิต
+นพปฎล
+นพพล
+นพพวง
+นพพัน
+นพรัตน์
+นพศก
+นพศูล
+นภ-
+นภจร
+นภดล
+นภมณฑล
+นภวิถี
+นภศูล
+นภสินธุ์
+นภา
+นภาลัย
+นม
+นมกระแชง
+นมข้น
+นมควาย
+นมชะนี
+นมช้าง
+นมตาบอด
+นมตาสะแก
+นมตำเรีย
+นมตำเลีย
+นมนาง
+นมนาน
+นมบกอกพร่อง
+นมบอด
+นมผง
+นมผา
+นมพวง
+นมพิจิตร
+นมแมว
+นมไม้
+นมวัว
+นมสวรรค์
+นมสาว
+นมหนู
+นมะ
+นมักการ
+นมัสการ
+นมาซ
+นย-
+นยนะ
+นยนา
+นยะ
+นยักษ์
+นโยบาย
+นร-
+นรก
+นรกานต์
+นรการ
+นรเทพ
+นรนาถ
+นรนายก
+นรบดี
+นรบาล
+นรพยัคฆ์
+นรราช
+นรเศรษฐ์
+นรสิงห์
+นรสีห์
+นรา
+นราธิป
+นรินทร์
+นริศ
+นริศร
+นริศวร
+นรี
+นรีเวชวิทยา
+นเรนทรสูร
+นเรศ
+นเรศวร
+นเรศวร์ชนช้าง
+นเรศูร
+นโรดม
+นฤ-
+นฤคหิต
+นฤโฆษ
+นฤดม
+นฤตย-
+นฤตย์
+นฤตยศาลา
+นฤตยศาสตร์
+นฤตยสถาน
+นฤเทพ
+นฤนาท
+นฤบดี
+นฤบาล
+นฤเบศ
+นฤป
+นฤปนีติ
+นฤปเวศม์
+นฤปัตนี
+นฤพาน
+นฤมล
+นฤมาณ
+นฤมิต
+นลาฏ
+นลิน
+นลินี
+นว-
+นวก-
+นวกภูมิ
+นวกรรม
+นวกรรมิก
+นวกะ
+นวการ
+นวกิจ
+นวโกวาท
+นวครหะ
+นวคุณ
+นวเคราะห์
+นวชาต
+นวด
+นวดข้าว
+นวดแป้ง
+นวดฟั้น
+นวทวาร
+นวนิต
+นวนิยาย
+นวปฎล
+นวพธู
+นวม
+น่วม
+นวมี
+นวมุข
+นวย
+นวยนาด
+นวรัตน์
+นวล
+นวลจันทร์
+นวลจันทร์ทะเล
+นวลน้อย
+นวลระหง
+นวลลออ
+นวลละออง
+นวลหง
+นวโลหะ
+นววิธ
+นวอรหาทิคุณ
+นวังคสัตถุศาสน์
+นวารหาทิคุณ
+นวาระ
+นหาดก
+นหาน
+นหารุ
+นหุต
+นฬ
+นฬ-
+นฬการ
+นฬป
+นอ
+นอก
+นอกกฎหมาย
+นอกครู
+นอกคอก
+นอกจาก
+นอกใจ
+นอกชาน
+นอกตำรา
+นอกถนน
+นอกบาลี
+นอกรีต
+นอกรีตนอกรอย
+นอกลู่นอกทาง
+นอกเหนือ
+นอง
+น่อง
+น้อง
+น้องๆ
+นองเนือง
+น่องแน่ง
+น้องเพล
+นองเลือด
+น่องสิงห์
+นองหน้า
+นอต
+นอน
+นอนก้น
+นอนกิน
+นอนใจ
+นอนตาไม่หลับ
+นอนตีพุง
+นอนนก
+นอนแบ็บ
+นอนโรง
+นอนเล่น
+นอนวัน
+นอนเวร
+นอนหลับทับสิทธิ์
+นอนหลับไม่รู้ นอนคู้ไม่เห็น
+นอบ
+นอบนบ
+นอบน้อม
+น้อม
+น้อมเกล้าน้อมกระหม่อมถวาย
+น้อมนำ
+น้อย
+น้อยแง่
+น้อยใจ
+น้อยเนื้อต่ำใจ
+น้อยหน่า
+น้อยหน้า
+น้อยหรือ
+น้อยโหน่ง
+นะ
+นะแน่ง
+นัก
+นักกะ
+นักการ
+นักการเมือง
+นักกีฬา
+นักขัต
+นักขัต-
+นักขัตฤกษ์
+นักข่าว
+นักงาน
+นักตะ
+นักท่องเที่ยว
+นักเทศ
+นักเทศน์
+นักโทษ
+นักโทษเด็ดขาด
+นักโทษพิเศษ
+นักธรรม
+นักบวช
+นักบิน
+นักบุญ
+นักปราชญ์
+นักพรต
+นักร
+นักรบ
+นักเรียน
+นักเลง
+นักศึกษา
+นักษัตร
+นักษัตร-
+นักษัตรจักร
+นักษัตรเนมี
+นักษัตรบดี
+นักษัตรบถ
+นักษัตรปาฐก
+นักษัตรมณฑล
+นักษัตรมาลา
+นักษัตรโยค
+นักษัตรวิทยา
+นักสนม
+นักสราช
+นักสวด
+นักสิทธิ์
+นักสืบ
+นักหนา
+นัข
+นัค
+นัคคะ
+นั่ง
+นั่งกินนอนกิน
+นั่งขัดสมาธิ
+นังคัล
+นั่งคุกเข่า
+นั่งซัง
+นั่งทาง
+นั่งทางใน
+นั่งเทียน
+นั่งในหัวใจ
+นั่งปรก
+นั่งโป่ง
+นั่งพับเพียบ
+นั่งเมือง
+นั่งยองๆ
+นั่งร้าน
+นั่งราว
+นั่งเล่น
+นั่งห้าง
+นัจ
+นัฏ
+นัฏก
+นัฑ
+นัด
+นัดดา
+นัดแนะ
+นัดหมาย
+นัตถุ์
+นั่น
+นั้น
+นั่นซี
+นันท-
+นันททายี
+นันทน์
+นันทนาการ
+นันทปักษี
+นันทิ
+นั่นแน่
+นั่นปะไร
+นั้นแล
+นั่นแหละ
+นั่นเอง
+นับ
+นับถือ
+นับประสา
+นับหน้าถือตา
+นัย
+นัยน์
+นัยน์ตา
+นัยน์เนตร
+นัยนา
+นัยนามพุ
+นัยว่า
+นัว
+นัวเนีย
+นา
+น่า
+น้า
+นาก
+นากบุด
+นากสวาด
+นากาสาหรี
+น่าเกลียดน่าชัง
+นาขอบเหล็ก
+นาค
+นาค-
+นาคเกี่ยว
+นาคเกี้ยว
+นาคเกี้ยวกระหวัด
+นาคเกี่ยวพระสุเมรุ
+นาคทนต์
+นาคบริพันธ์
+นาคบาศ
+นาคปรก
+นาคปัก
+นาคพันธ์
+นาคร
+นาครวย
+นาคราช
+นาคราชแผลงฤทธิ์
+นาคลดา
+นาคเล่นน้ำ
+นาควิถี
+นาคสะดุ้ง
+นาคสังวัจฉร
+นาคา
+นาคาวโลก
+นาคินทร์
+นาคี
+นาคู่โค
+นาเคนทร์
+นาเคศ
+นาเคศวร
+นาโครคินทร
+นาง
+นางกราย
+นางกวัก
+นางเกล็ด
+นางงาม
+นางจรัล
+นางจุม
+นางชม
+นางดำ
+นางท้าว
+นางนวล
+นางนูน
+นางแนบ
+นางใน
+นางบำเรอ
+นางพญา
+นางพระกำนัล
+นางฟ้า
+นางเมือง
+นางไม้
+นางแย้ม
+นางรม
+นางรมใหญ่
+นางรอง
+นางร้องไห้
+นางรำ
+นางเรียง
+นางล้อม
+นางเล็ด
+นางเลิ้ง
+นางสนองพระโอษฐ์
+นางสาว
+นางหงส์
+นางห้าม
+นางอ้อม
+นางอาย
+นางเอก
+นางแอ่น
+นาเชิงทรง
+นาฏ
+นาฏ-
+นาฏก
+นาฏกรรม
+นาฏดนตรี
+นาฏย-
+นาฏศิลป์
+นาด
+นาดำ
+นาถ
+นาท
+นาที
+นาน
+น่าน
+นานนม
+น่านน้ำ
+น่านน้ำอาณาเขต
+น่านฟ้า
+นานสองนาน
+นานแสนนาน
+นานัครส
+นานัตว
+นานัปการ
+นานา
+นานาเนก
+นานาประการ
+นาเนก
+นาบ
+นาบข้าว
+นาปรัง
+นาปี
+นาฟางลอย
+นาภิ
+นาภี
+นาม
+นาม-
+นามกร
+นามธรรม
+นามไธย
+นามบัตร
+นามปากกา
+นามแฝง
+นามสกุล
+นามสงเคราะห์
+นามสมญา
+นามานุกรม
+นามานุศาสตร์
+นามาภิไธย
+นาเมือง
+นาย
+น่าย
+นายก
+นายกเทศมนตรี
+นายกรัฐมนตรี
+นายงาน
+นายเงิน
+นายจ้าง
+นายตรวจ
+นายท่า
+นายท้าย
+นายทุน
+นายธง
+นายประกัน
+นายประเพณี
+นายโรง
+นายว่าขี้ข้าพลอย
+นายเวร
+นายหน้า
+นายอากร
+นายอำเภอ
+นายิกา
+นารา
+นารายณ์
+นารายณ์ทรงเครื่อง
+นารายณ์ประลองศิลป์
+นารายณ์หัตถ์
+นารี
+นารีบูร
+นารีผล
+นารีสูร
+นาเรศ
+นาลิวัน
+นาลี
+นาว
+น้าว
+นาวา
+นาวิก
+นาวิก-
+นาวิกโยธิน
+นาวิน
+นาวี
+นาเวศ
+นาศ
+นาสวน
+นาสา
+นาสิก
+นาหว่าน
+นาฬิกา
+นาฬิกาแดด
+นาฬิกาทราย
+นาฬิกาน้ำ
+นาฬิเก
+นาฬี
+นำ
+น้ำ
+น้ำกรด
+น้ำกระด้าง
+น้ำกระสาย
+น้ำกะทิ
+น้ำกาม
+น้ำเกลือ
+น้ำเกิด
+น้ำขาว
+น้ำข้าว
+น้ำขึ้น
+น้ำขึ้นให้รีบตัก
+น้ำขุ่นไว้ใน น้ำใสไว้นอก
+น้ำแข็ง
+น้ำแข็งแห้ง
+น้ำครำ
+น้ำคร่ำ
+น้ำคัน
+น้ำค้าง
+น้ำค้างแข็ง
+น้ำคาวปลา
+น้ำคำ
+น้ำเค็ม
+น้ำเคย
+น้ำเงิน
+น้ำจัณฑ์
+นำจับ
+น้ำจิ้ม
+น้ำใจ
+น้ำใจใคร่
+น้ำชน
+น้ำชุบ
+น้ำเชี่ยวอย่าขวางเรือ
+น้ำเชื้อ
+น้ำเชื่อม
+น้ำซับ
+น้ำซาวข้าว
+น้ำซึม
+น้ำซึมบ่อทราย
+น้ำดอกไม้
+น้ำดอกไม้เทศ
+น้ำดอกไม้สด
+น้ำดับไฟ
+น้ำดิบ
+น้ำดี
+น้ำตก
+น้ำต้อย
+น้ำตะกู
+น้ำตะโก
+น้ำตะไคร้
+น้ำตับ
+น้ำตา
+น้ำตาเช็ดหัวเข่า
+น้ำตาตกใน
+น้ำตาเทียน
+น้ำตาย
+น้ำตาล
+น้ำตาลใกล้มด ใครจะอดได้
+น้ำตาลจีน
+น้ำเต้า
+น้ำใต้ดิน
+น้ำทรง
+น้ำท่วมทุ่ง ผักบุ้งโหรงเหรง
+น้ำท่วมปาก
+น้ำท่า
+นำทาง
+น้ำทูนหัว
+นำเที่ยว
+น้ำไทย
+น้ำนม
+น้ำนมแมว
+น้ำนมราชสีห์
+น้ำนวล
+น้ำนอง
+น้ำนอนคลอง
+น้ำน้อยแพ้ไฟ
+น้ำนิ่งไหลลึก
+น้ำบ่อน้อย
+น้ำโบย
+น้ำประสานทอง
+น้ำปลา
+น้ำป่า
+น้ำผลึก
+น้ำผึ้ง
+น้ำพระพิพัฒน์สัตยา
+น้ำพริก
+น้ำพริกเผา
+น้ำพักน้ำแรง
+นำพา
+น้ำพึ่งเรือเสือพึ่งป่า
+น้ำพุ
+น้ำมนต์
+น้ำมนตร์
+น้ำมัน
+น้ำมันก๊าด
+น้ำมันเขียว
+น้ำมันเครื่อง
+น้ำมันจันทน์
+น้ำมันโซลา
+น้ำมันดิน
+น้ำมันดิบ
+น้ำมันดีเซล
+น้ำมันตานี
+น้ำมันเตา
+น้ำมันเบนซิน
+น้ำมันพราย
+น้ำมันมนตร์
+น้ำมันยาง
+น้ำมันระกำ
+น้ำมันสน
+น้ำมันสลัด
+น้ำมันหม่อง
+น้ำมันหล่อลื่น
+น้ำมาปลากินมด น้ำลดมดกินปลา
+น้ำมือ
+น้ำมูก
+น้ำเมา
+น้ำย่อย
+น้ำยา
+น้ำยาเคมี
+น้ำเย็นปลาตาย
+นำร่อง
+น้ำร้อนปลาเป็น
+น้ำรัก
+น้ำแร่
+น้ำลง
+น้ำลดตอผุด
+น้ำละว้า
+น้ำลาย
+น้ำลายสอ
+น้ำลายหก
+น้ำลายไหล
+น้ำเลี้ยง
+น้ำวน
+น้ำว้า
+น้ำไว
+น้ำส้ม
+น้ำส้มสายชู
+นำสมัย
+น้ำสังข์
+น้ำสั่งฟ้า ปลาสั่งฝน
+นำสืบ
+น้ำสุก
+น้ำเสียง
+นำแสดง
+น้ำหนวก
+น้ำหนัก
+น้ำหน้า
+น้ำหนึ่ง
+น้ำหนึ่งใจเดียวกัน
+น้ำหมาก
+น้ำหอม
+น้ำเหลือง
+น้ำเหลืองน้ำตาล
+น้ำไหลไฟดับ
+น้ำอดน้ำทน
+น้ำอบ
+น้ำอบฝรั่ง
+น้ำอ่อน
+น้ำอ้อย
+น้ำอัดลม
+น้ำอาบงัว
+นิ
+นิกเกิล
+นิกขะ
+นิกขันต์
+นิกร
+นิกรอยด์
+นิกาย
+นิคม
+นิคมที่ดิน
+นิคมสร้างตนเอง
+นิคมสหกรณ์
+นิคมอุตสาหกรรม
+นิครนถ์
+นิคห-
+นิคหกรรม
+นิคหะ
+นิคหิต
+นิคาลัย
+นิคาหก
+นิคาหก-
+นิเคราะห์
+นิโคติน
+นิโครธ
+นิโครม
+นิง
+นิ่ง
+นิ่งเงียบ
+นิ่งเฉย
+นิ่งแน่
+นิจ
+นิจ-
+นิจศีล
+นิด
+นิดเดียว
+นิดหน่อย
+นิดหนึ่ง
+นิตย-
+นิตย์
+นิตยทาน
+นิตยภัต
+นิตยสาร
+นิติ
+นิติกร
+นิติกรณ์
+นิติกรรม
+นิติการ
+นิติการณ์
+นิติธรรม
+นิตินัย
+นิติบัญญัติ
+นิติบุคคล
+นิติภาวะ
+นิติวิทยาศาสตร์
+นิติเวชศาสตร์
+นิติศาสตร์
+นิติสมมติ
+นิติสัมพันธ์
+นิติเหตุ
+นิทร
+นิทรรศการ
+นิทรา
+นิทรารมณ์
+นิทัศน์
+นิทาฆ
+นิทาน
+นิทานวจนะ
+นิเทศ
+นิเทศศาสตร์
+นิธาน
+นิธิ
+นินทา
+นินนะ
+นินนาท
+นินหุต
+นินาท
+นิบาต
+นิปริยาย
+นิปัจการ
+นิพจน์
+นิพนธ์
+นิพพาน
+นิพพิทา
+นิพพิทาญาณ
+นิพัทธ-
+นิพัทธ์
+นิพัทธกุศล
+นิพันธ์
+นิพิท
+นิเพท
+นิภา
+นิ่ม
+นิ้ม
+นิมนต์
+นิ่มนวล
+นิมมาน
+นิมมานรดี
+นิมิต
+นิยต
+นิยต-
+นิยม
+นิยมนิยาย
+นิยยาน
+นิยยานิก-
+นิยัตินิยม
+นิยาม
+นิยาย
+นิยุต
+นิร
+นิรคุณ
+นิรโฆษ
+นิรชร
+นิรชรา
+นิรทุกข์
+นิรเทศ
+นิรโทษ
+นิรโทษกรรม
+นิรนัย
+นิรนาม
+นิรพัตร
+นิรภัย
+นิรมล
+นิรมาณ
+นิรมาณกาย
+นิรมาน
+นิรมิต
+นิรย-
+นิรยบาล
+นิรัติศัย
+นิรันดร
+นิรันตร-
+นิรันตราย
+นิรัพพุท
+นิรา
+นิราพาธ
+นิรามัย
+นิรามิษ
+นิราลัย
+นิราศ
+นิราศรพ
+นิราศรัย
+นิรินธน์
+นิรินธนพินาศ
+นิรุกติ
+นิรุกติศาสตร์
+นิรุตติ
+นิรุตติปฏิสัมภิทา
+นิรุทก
+นิรุทธ์
+นิโรช
+นิโรธ
+นิโรธ-
+นิโรธสมาบัติ
+นิล
+นิล-
+นิลบัตร
+นิลปัทม์
+นิลรัตน์
+นิลุบล
+นิโลตบล
+นิโลบล
+นิ่ว
+นิ้ว
+นิวคลิอิก
+นิวเคลียร์
+นิวเคลียส
+นิวตรอน
+นิวรณ์
+นิ้วไหนร้ายก็ตัดนิ้วนั้น
+นิวัต
+นิวัตน์
+นิวาต
+นิวาส
+นิเวศ
+นิเวศ-
+นิเวศน์
+นิเวศวิทยา
+นิศา
+นิศากร
+นิศากาล
+นิศาคม
+นิศาชล
+นิศาทิ
+นิศานาถ
+นิศาบดี
+นิศามณี
+นิศารัตน์
+นิษกรม
+นิษาท
+นิสภ-
+นิสัช
+นิสัชชาการ
+นิสัย
+นิสัยใจคอ
+นิสาท
+นิสิต
+นิสีทน-
+นิสีทนะ
+นิสีทนาการ
+นิเสธ
+นี่
+นี้
+นีติ
+นีติธรรม
+นีติศาสตร์
+นี่นัน
+นี่แน่ะ
+นีร-
+นีรจร
+นีรช
+นีรนาท
+นี่แหละ
+นีออน
+นี่เอง
+นีโอดิเมียม
+นึก
+นึกคิด
+นึกดู
+นึกถึง
+นึกเห็น
+นึกออก
+นึ่ง
+นึ่งหม้อเกลือ
+นุ
+นุง
+นุ่ง
+นุ่งกระโจมอก
+นุ่งเจียมห่มเจียม
+นุงถุง
+นุงนัง
+นุ่งห่ม
+นุช
+นุด
+นุต
+นุ่น
+นุ่ม
+นุ่มนวล
+นุ่มนิ่ม
+นุ่มเนื้อ
+นุ้ย
+นูน
+นู่น
+นู้น
+เนกขะ
+เนกขัม
+เน่ง
+เนตบอล
+เนตร
+เนติ
+เนติบัณฑิต
+เน้น
+เนบิวลา
+เนปจูน
+เนปทูเนียม
+เนมิ
+เนมิตก-
+เนมิตกนาม
+เนมิตกะ
+เนย
+เนยเทียม
+เนยใส
+เนรกัณฐี
+เนรคุณ
+เนรเทศ
+เนรนาด
+เนรนาถ
+เนรมิต
+เนระพูสี
+เนษาท
+เนอ
+เน้อ
+เนา
+เน่า
+เน่าไฟ
+เนาว-
+เนาวนิต
+เนาวรัตน์
+เนิน
+เนิ่น
+เนิ่นๆ
+เนิ่นนาน
+เนิบ
+เนิบๆ
+เนิบนาบ
+เนียง
+เนียน
+เนียม
+เนียร
+เนียรทุกข์
+เนียรเทศ
+เนียรนาท
+เนื้อ
+เนื้อกษัตริย์
+เนื้อความ
+เนื้อคู่
+เนื้อเค็ม
+เนือง
+เนืองๆ
+เนื่อง
+เนื่องจาก
+เนื่องด้วย
+เนื่องแต่
+เนืองนอง
+เนืองนิตย์
+เนืองแน่น
+เนื้องอก
+เนื้อตัว
+เนื้อตาย
+เนื้อเต่ายำเต่า
+เนื้อถ้อยกระทงความ
+เนื้อทราย
+เนื้อที่
+เนื้อแท้
+เนื้อเปื่อย
+เนื้อเพลง
+เนื้อไม้
+เนือย
+เนือยๆ
+เนื้อเยื่อ
+เนื้อเยื่อกล้ามเนื้อ
+เนื้อเยื่อบุผิว
+เนื้อเยื่อประสาท
+เนื้อเยื่อยึดต่อ
+เนื้อร้อง
+เนื้อร้าย
+เนื้อเรื่อง
+เนื้อสมัน
+เนื้อหา
+เนื้ออ่อน
+แน่
+แน่ง
+แน่งน้อย
+แน่ใจ
+แน่ชัด
+แน่แท้
+แน่น
+แน่นขนัด
+แน่นท้อง
+แน่นนันต์
+แน่นแฟ้น
+แน่นหนา
+แน่นหน้าอก
+แน่นอน
+แน่นิ่ง
+แน่แน่ว
+แนบ
+แนบเนียน
+แนบแน่น
+แนม
+แนว
+แน่ว
+แนวทาง
+แนวที่ห้า
+แน่วแน่
+แนวโน้ม
+แนวป่า
+แนวรบ
+แนวร่วม
+แนวเรือ
+แนวหน้า
+แนวหลัง
+แนะ
+แน่ะ
+แนะนัด
+แนะนำ
+แนะแนว
+แนะแหน
+โน
+โน้ต
+โน้ตเพลง
+โนน
+โน่น
+โน้น
+โนเน
+โนเบเลียม
+โน้ม
+โน้มน้าว
+โนมพรรณ
+โนรา
+โนรี
+ใน
+ในกรม
+ในไส้
+ในหลวง
+ไน
+ไนต์คลับ
+ไนโตรเจน
+ไนลอน
+ไนโอเบียม
+บ
+บ่
+บก
+บกพร่อง
+บง
+บ่ง
+บงก-
+บงก์
+บงกช
+บงกชกร
+บงการ
+บ๊งเบ๊ง
+บงสุ-
+บงสุ์
+บงสุกุล
+บงสุกูลิก
+บงอับบงรา
+บ่งอับบ่งรา
+บฏ
+บด
+บดขยี้
+บดบัง
+บดเอื้อง
+บดินทร์
+บดี
+บดีธรรม
+บดีพรต
+บดีวรดา
+บดีศร
+บถ
+บท
+บท-
+บทกลอน
+บทกวีนิพนธ์
+บทกำหนดโทษ
+บทความ
+บทคัดย่อ
+บทจร
+บทเจรจา
+บทเฉพาะกาล
+บทดอกสร้อย
+บทนำ
+บทบงกช
+บทบงสุ์
+บทบรรณาธิการ
+บทบัญญัติ
+บทบาท
+บทบาทมาก
+บทบูรณ์
+บทประพันธ์
+บทพากย์
+บทเพลง
+บทภาชน์
+บทภาชนีย์
+บทมาลย์
+บทร้อง
+บทรัช
+บทเรศ
+บทเรียน
+บทวเรศ
+บทวลัญช์
+บทวาร
+บทศรี
+บทสนทนา
+บทสังขยา
+บทามพุช
+บโทน
+บน
+บ่น
+บนข้าวผี ตีข้าวพระ
+บ่นถึง
+บนบาน
+บนบานศาลกล่าว
+บพิตร
+บพิตรพระราชสมภาร
+บพิธ
+บ่ม
+บ่มผิว
+บ่มมัน
+บ่มหนอง
+บมิ
+บร-
+บรทาร
+บรทารกรรม
+บรม
+บรม-
+บรมธาตุ
+บรมบพิตร
+บรมวงศานุวงศ์
+บรมอัฐิ
+บรมัตถ์
+บรรกวด
+บรรจง
+บรรจถรณ์
+บรรจบ
+บรรจวบ
+บรรจุ
+บรรเจิด
+บรรณ
+บรรณ-
+บรรณกุฎี
+บรรณพิภพ
+บรรณโลก
+บรรณศาลา
+บรรณสาร
+บรรณาการ
+บรรณาคม
+บรรณาธิกร
+บรรณาธิการ
+บรรณานุกรม
+บรรณารักษ์
+บรรณารักษศาสตร์
+บรรดา
+บรรดาก
+บรรดามี
+บรรดาศักดิ์
+บรรตานึก
+บรรถร
+บรรทม
+บรรทัด
+บรรทัดฐาน
+บรรทับ
+บรรทาน
+บรรทุก
+บรรเทา
+บรรเทือง
+บรรพ
+บรรพ-
+บรรพ์
+บรรพชา
+บรรพชิต
+บรรพต
+บรรพต-
+บรรพตกีลา
+บรรพตชาล
+บรรพตธาตุ
+บรรพตมาลา
+บรรพตราช
+บรรพตวาสี
+บรรพตศิขร
+บรรพบุรุษ
+บรรพภาค
+บรรพเภท
+บรรพมูล
+บรรพสตรี
+บรรยง
+บรรยงก์
+บรรยเวกษก์
+บรรยากาศ
+บรรยาย
+บรรลัย
+บรรลัยกัลป์
+บรรลัยจักร
+บรรลาย
+บรรลุ
+บรรลุนิติภาวะ
+บรรเลง
+บรรโลม
+บรรษัท
+บรรสบ
+บรรสพ
+บรรสม
+บรรสาน
+บรรสาร
+บรรหาน
+บรรหาร
+บรอนซ์
+บรัด
+บรั่นดี
+บรัศว์
+บรากรม
+บราง
+บราทุกรา
+บราลี
+บริกรม
+บริกรรม
+บริกัป
+บริการ
+บริขา
+บริขาร
+บริขารโจล
+บริคณห์
+บริคณห์สนธิ
+บริจาค
+บริจารก
+บริจาริกา
+บริเฉท
+บริเฉท-
+บริเฉทกาล
+บริชน
+บริณายก
+บริณายกรัตน์
+บริดจ์
+บริบท
+บริบวรณ์
+บริบาล
+บริบูรณ์
+บริพนธ์
+บริพัตร
+บริพันธ์
+บริพาชก
+บริพาชิกา
+บริพาชี
+บริพาร
+บริภัณฑ์
+บริภาษ
+บริโภค
+บริโภคเจดีย์
+บริมาส
+บริยาย
+บริรม
+บริรักษ์
+บริราช
+บริวรรต
+บริวาร
+บริวาส
+บริเวณ
+บริษการ
+บริษัท
+บริษัทเครดิตฟองซิเอร์
+บริษัทจำกัด
+บริษัทบริวาร
+บริษัทมหาชนจำกัด
+บริสชน
+บริสุทธิ์
+บริสุทธิ์ใจ
+บริหาร
+บริหาส
+บแรง
+บแรงภักษ์
+บฤงคพ
+บล็อก
+บวก
+บวง
+บ่วง
+บ่วงบาศ
+บวงสรวง
+บวช
+บวชชี
+บวน
+บ้วน
+บ้วนปาก
+บ้วนพระโอษฐ์
+บวบ
+บวบขม
+บวม
+บวมน้ำ
+บ๊วย
+บวร
+บวร-
+บวรโตฎก
+บหลิ่ม
+บอ
+บ่อ
+บอก
+บอกกล่าว
+บอกแขก
+บอกคำบอก
+บอกบท
+บอกบัญชี
+บอกบุญ
+บอกใบ้
+บอกปัด
+บอกเปิด
+บอกยี่ห้อ
+บอกเล่าเก้าสิบ
+บอกวัตร
+บอกศาลา
+บอกหนทาง
+บอกหนังสือสังฆราช
+บ่อเกิด
+บอง
+บ่อง
+บ้อง
+บ๊อง
+บ๊องๆ
+บ้องกัญชา
+บ้องตะลา
+บ้องตัน
+บ้องตื้น
+บ้องแบ๊ว
+บ้องไฟ
+บ้องยาแดง
+บองหลา
+บ้องหู
+บอด
+บอดสี
+บอน
+บ่อน
+บ่อนแตก
+บ่อนทำลาย
+บอนลายกระหนก
+บ่อน้ำร้อน
+บอบ
+บอบช้ำ
+บอบบาง
+บอบแบบ
+บ้อม
+บ๋อม
+บ่อย
+บ่อยๆ
+บอระเพ็ด
+บอระมาน
+บอล
+บอลลูน
+บ้อหุ้น
+บเอ
+บ๊ะ
+บะหมี่
+บัก
+บักโกรก
+บักอาน
+บัคเตรี
+บัง
+บั้ง
+บังกะโล
+บังกัด
+บังเกิด
+บังโกรยตัวผู้
+บังโกรยตัวเมีย
+บังโกลน
+บังคน
+บังคนเบา
+บังคนหนัก
+บังคม
+บังคล
+บังควร
+บังความ
+บังคับ
+บังคับการ
+บังคับครุ
+บังคับใจ
+บังคับโท
+บังคับบัญชา
+บังคับลหุ
+บังคับสัมผัส
+บังคับเอก
+บังคัล
+บังโคลน
+บังเงา
+บังตะวัน
+บังตา
+บังแทรก
+บังใบ
+บังเพลิง
+บังไพร
+บังฟัน
+บั้งไฟ
+บังมืด
+บังวาย
+บังเวียน
+บังสาด
+บังสุกุล
+บังสุกูลิก
+บังสูรย์
+บังหน้า
+บังหวนควัน
+บังเหตุ
+บังเหิน
+บังเหียน
+บังอร
+บังอวจ
+บังอาจ
+บังอิง
+บังอูร
+บังเอิญ
+บัญจก
+บัญจรงค์
+บัญชร
+บัญชา
+บัญชาการ
+บัญชี
+บัญชีกระแสรายวัน
+บัญชีเดินสะพัด
+บัญญัติ
+บัญญัติไตรยางศ์
+บัญหา
+บัฏ
+บัฐยาพฤต
+บัณฑร
+บัณฑร-
+บัณฑรนาค
+บัณฑิต
+บัณฑิตย์
+บัณฑุ
+บัณฑุกัมพล
+บัณฑุกัมพลศิลาอาสน์
+บัณฑุนาค
+บัณฑุโรค
+บัณฑูร
+บัณเฑาะก์
+บัณเฑาะว์
+บัณณาส
+บัณรส
+บัณรสี
+บัด
+บัดกรี
+บัดซบ
+บัดดล
+บัดเดี๋ยว
+บัดนั้น
+บัดนี้
+บัดบง
+บัดแบ่ง
+บัดแมล่ง
+บัดสี
+บัดสีบัดเถลิง
+บัตร
+บัตรเทวดา
+บัตรธนาคาร
+บัตรพลี
+บัตรสนเท่ห์
+บัตรหมาย
+บัทม์
+บัน
+บั่น
+บั้น
+บันกวด
+บันจวบ
+บันจอย
+บันดล
+บันดาล
+บันเดิน
+บันโดย
+บันได
+บันไดแก้ว
+บันไดลิง
+บันไดเลื่อน
+บันแถลง
+บั่นทอน
+บั้นท้าย
+บันทึก
+บันทึง
+บันเทิง
+บันเทิงคดี
+บันเบา
+บั้นปลาย
+บั้นพระองค์
+บันยะบันยัง
+บันลือ
+บั้นหลวง
+บันเหิน
+บั้นเอว
+บัปผาสะ
+บัพ
+บัพชา
+บัพชิต
+บัพพาช
+บัพพาชน์
+บัพพาชนียกรรม
+บัล
+บัลลพ
+บัลลังก์
+บัลลูน
+บัลวะ
+บัว
+บัวกลุ่ม
+บัวขาบ
+บัวคอเสื้อ
+บัวตะกั่ว
+บัวตูม
+บัวถลา
+บัวนาง
+บัวบก
+บัวบังใบ
+บัวบาท
+บัวผุด
+บัวไม่ช้ำ น้ำไม่ขุ่น
+บัวโรย
+บัวลอย
+บัวสวรรค์
+บัวสายติ่ง
+บัวสายทิ้ง
+บัวฮาดำ
+บา
+บ่า
+บ้า
+บ้าๆ
+บาก
+บากท่า
+บากบั่น
+บากหน้า
+บาง
+บ่าง
+บ้าง
+บางขุนนนท์
+บ่างช่างยุ
+บางตา
+บางที
+บางเบา
+บางสุ
+บาจก
+บาจรีย์
+บาจิกา
+บ้าจี้
+บาซิลลัส
+บาด
+บาดคอ
+บาดเจ็บ
+บาดใจ
+บาดตา
+บาดทะจิต
+บาดทะพิษ
+บาดทะยัก
+บาดแผล
+บาดเสี้ยนบาดหนาม
+บาดหมาง
+บาดหมาย
+บาดหู
+บาดไหม
+บาดาล
+บ้าดีเดือด
+บาแดง
+บาต
+บาตร
+บาตรแก้ว
+บาตรใหญ่
+บาท
+บาท-
+บาทนิเกต
+บาทบ
+บาทบงกช
+บาทบงสุ์
+บาทบริจาริกา
+บาทบูรณ์
+บาทภัฏ
+บาทภาค
+บาทมุทรา
+บาทมูล
+บาทมูลิกากร
+บาทยุคล
+บาทรช
+บาทรัช
+บาทสกุณี
+บาทหลวง
+บาทาธึก
+บาทุกา
+บาธรรม
+บาน
+บาน-
+บ้าน
+บานกบ
+บานเกล็ด
+บ้านเกิดเมืองนอน
+บ้านเคยอยู่ อู่เคยนอน
+บ้านจัดสรร
+บ้านช่อง
+บานชื่น
+บานเช้า
+บานตะเกียง
+บานตะโก้
+บานตะไท
+บ้านแตกสาแหรกขาด
+บานทะโรค
+บ้านนอก
+บ้านนอกขอกนา
+บานบาตร
+บานบุรี
+บานบุรีม่วง
+บานเบอะ
+บานเบิก
+บานเบียง
+บานแบะ
+บานปลาย
+บานแผนก
+บานแผละ
+บ้านพัก
+บานพับ
+บานแพนก
+บานโภชน์
+บานมงคล
+บ้านเมือง
+บ้านเมืองมีขื่อมีแป
+บานไม่รู้โรย
+บานเย็น
+บ้านรับรอง
+บ้านเรือน
+บ้าน้ำลาย
+บ่านี่
+บานียะ
+บานีโยทก
+บ้าบ่น
+บ้าบ๋า
+บ้าบิ่น
+บาบี
+บาป
+บาป-
+บาปกรรม
+บาปเคราะห์
+บาปมิตร
+บาปหนา
+บาพก
+บาย
+บ่าย
+บ้าย
+บ่ายควาย
+บ่ายเบี่ยง
+บายศรี
+บายศรีปากชาม
+บายสุหรี
+บ่ายหน้า
+บาร์
+บารนี
+บารมี
+บาร์เรล
+บาร์เลย์
+บารอมิเตอร์
+บ้าระบุ่น
+บ้าระห่ำ
+บ้าร่าท่า
+บาเรียน
+บาเรียม
+บาล
+บ้าลำโพง
+บาลี
+บ้าเลือด
+บ่าว
+บ่าวขุน
+บ่าวไพร่
+บาศ
+บาศก์
+บาสเกตบอล
+บ้าสมบัติ
+บ้าหมู
+บาหลี
+บ้าหว่า
+บ้าหอบฟาง
+บ้าห้าร้อยจำพวก
+บ๋ำ
+บำเทิง
+บำนาญ
+บำบวง
+บำบัด
+บำโบ
+บำโบย
+บำโบล
+บำเพ็ญ
+บำราบ
+บำราศ
+บำรุง
+บำรุงขวัญ
+บำรู
+บำเรอ
+บำเรอเชอภักดิ์
+บำหยัด
+บำเหน็จ
+บิ
+บิกู
+บิกูปะระมาหนา
+บิกูปะระหมั่นหนา
+บิฐ
+บิณฑ-
+บิณฑบาต
+บิด
+บิดขวา
+บิดขี้เกียจ
+บิดจะกูด
+บิดซ้าย
+บิดตะกูด
+บิดเบี้ยว
+บิดเบือน
+บิดพลิ้ว
+บิดร
+บิดไส้
+บิดหล่า
+บิดหัวลูก
+บิดา
+บิตุ
+บิตุจฉา
+บิตุรงค์
+บิตุเรศ
+บิตุล
+บิตุลา
+บิตุลานี
+บิน
+บิ่น
+บินยา
+บิลเลียด
+บิวเรตต์
+บิศาจ
+บิสมัท
+บี้
+บีกู
+บีฑา
+บีตา
+บีบ
+บีบขนมจีน
+บีบขมับ
+บีบคั้น
+บีบน้ำตา
+บีบบังคับ
+บีบรัด
+บี้แบน
+บีเยศ
+บึก
+บึกบึน
+บึง
+บึ่ง
+บึ้ง
+บึ้งตึง
+บึงบาง
+บึ้งบูด
+บุ
+บุก
+บุกบัน
+บุกบั่น
+บุกเบิก
+บุกป่าฝ่าดง
+บุกรุก
+บุคคล
+บุคคล-
+บุคคลธรรมดา
+บุคคลนิติสมมติ
+บุคคลผู้ไร้ความสามารถ
+บุคคลสิทธิ
+บุคลากร
+บุคลาธิษฐาน
+บุคลิก
+บุคลิก-
+บุคลิกทาน
+บุคลิกภาพ
+บุคลิกลักษณะ
+บุง
+บุ่ง
+บุ้ง
+บุ้งขัน
+บุ้งจีน
+บุ้งทะเล
+บุ้งฝรั่ง
+บุ้งร้วม
+บุญ
+บุญ-
+บุญเขต
+บุญญานุภาพ
+บุญญาภินิหาร
+บุญญาภิสังขาร
+บุญทาย
+บุญทำกรรมแต่ง
+บุญธรรม
+บุญนิธิ
+บุญมาวาสนาส่ง
+บุญราศี
+บุญฤทธิ์
+บุญหนักศักดิ์ใหญ่
+บุณฑริก
+บุณมี
+บุณย์
+บุตร
+บุตร-
+บุตรธรรม
+บุตรบุญธรรม
+บุตรา
+บุตรี
+บุตรีตระสุม
+บุถุชน
+บุทคล
+บุนนะบุนนัง
+บุนนาค
+บุบ
+บุบบิบ
+บุบสลาย
+บุปผ-
+บุปผชาติ
+บุปผวิกัติ
+บุพ-
+บุพกรรม
+บุพการี
+บุพกิจ
+บุพชาติ
+บุพทักษิณ
+บุพนิมิต
+บุพบท
+บุพเปตพลี
+บุพพ-
+บุพพัณชาติ
+บุพพัณหสมัย
+บุพพาจารย์
+บุพพาษาฒ
+บุพพาสาฬหะ
+บุพเพนิวาสานุสติญาณ
+บุพเพสันนิวาส
+บุพโพ
+บุพภาค
+บุพวิเทห์
+บุ๋ม
+บุ่มบ่าม
+บุ้ย
+บุ้ยใบ้
+บุ้ยปาก
+บุรณะ
+บุรพ-
+บุรพทิศ
+บุรพบท
+บุรพผลคุนี
+บุรพภัทรบท
+บุรพอาษาฒ
+บุรพาจารย์
+บุระ
+บุรัตถิมทิศ
+บุราณ
+บุราณทุติยิกา
+บุรินทร์
+บุริมทิศ
+บุริมพรรษา
+บุริมสิทธิ
+บุรี
+บุรุษ
+บุรุษ-
+บุรุษโทษ
+บุรุษธรรม
+บุโรทั่ง
+บุษกร
+บุษบ-
+บุษบก
+บุษบง
+บุษบราค
+บุษบวรรษ
+บุษบัน
+บุษบา
+บุษบากร
+บุษบาคม
+บุษบาบัณ
+บุษบามินตรา
+บุษบารักร้อย
+บุษป-
+บุษปราค
+บุษปะ
+บุษย-
+บุษย์
+บุษย์น้ำทอง
+บุษยมาส
+บุษยสนาน
+บุษยะ
+บุษยาภิเษก
+บุษราคัม
+บุหงง
+บุหงัน
+บุหงา
+บุหงาประหงัน
+บุหงามลาซอ
+บุหงารำไป
+บุหงาลำเจียก
+บุหรง
+บุหรี่
+บุหรี่พระราม
+บุหลัน
+บู่
+บู้
+บูชนีย-
+บูชนียสถาน
+บูชา
+บูชากัณฑ์เทศน์
+บูชายัญ
+บูชิต
+บูด
+บูดบึ้ง
+บูดเบี้ยว
+บู่ทะเล
+บู้บี้
+บูร
+บูรณ-
+บูรณ์
+บูรณภาพ
+บูรณมี
+บูรณะ
+บูรณาการรวมหน่วย
+บูรพ
+บูรพา
+บูรพาจารย์
+บูรพาษาฒ
+บูรี
+เบ้
+เบ่ง
+เบ๊จี๋
+เบญกานี
+เบญจ
+เบญจ-
+เบญจก
+เบญจกัลยาณี
+เบญจกามคุณ
+เบญจกูล
+เบญจขันธ์
+เบญจคัพย์
+เบญจคีรีนคร
+เบญจโครส
+เบญจดุริยางค์
+เบญจธรรม
+เบญจบรรพต
+เบญจพรรณ
+เบญจพล
+เบญจเพส
+เบญจภูต
+เบญจม-
+เบญจมสุรทิน
+เบญจมาศ
+เบญจมาศสวน
+เบญจมาศหนู
+เบญจรงค์
+เบญจโลหกะ
+เบญจวรรค
+เบญจวรรณ
+เบญจวรรณห้าสี
+เบญจศก
+เบญจศีล
+เบญจา
+เบญจางค-
+เบญจางค์
+เบญจางคประดิษฐ์
+เบญญา
+เบญพาด
+เบ็ด
+เบ็ดเตล็ด
+เบ็ดเสร็จ
+เบน
+เบนซิน
+เบรก
+เบริลเลียม
+เบรียน
+เบส
+เบ้อ
+เบอร์
+เบอร์คีเลียม
+เบ้อเร่อ
+เบ้อเร่อเท่อ
+เบ้อเริ่ม
+เบ้อเริ่มเทิ่ม
+เบอะ
+เบอะบะ
+เบะ
+เบา
+เบ้า
+เบ้าขลุบ
+เบาความ
+เบาใจ
+เบาตัว
+เบ้าตา
+เบาเต็ง
+เบาเนื้อเบาตัว
+เบาบาง
+เบาปัญญา
+เบามือ
+เบาไม้
+เบาไม้เบามือ
+เบาราณ
+เบาแรง
+เบาสมอง
+เบ้าหลุด
+เบาหวาน
+เบาเหวง
+เบาโหวง
+เบาะ
+เบาะๆ
+เบาะลม
+เบาะแส
+เบิก
+เบิกความ
+เบิกทาง
+เบิกทูต
+เบิกบาน
+เบิกพยาน
+เบิกพระเนตร
+เบิกพระโอษฐ์
+เบิกไพร
+เบิกไม้
+เบิกเรือ
+เบิกโรง
+เบิกโลง
+เบิกแว่นเวียนเทียน
+เบิกอรุณ
+เบิ่ง
+เบี้ย
+เบียก
+เบียกบ้าย
+เบี้ยกันดาร
+เบี้ยแก้
+เบี่ยง
+เบี่ยงบ่าย
+เบียด
+เบียดกรอ
+เบียดบัง
+เบียดเบียน
+เบียดแว้ง
+เบียดเสียด
+เบี้ยต่อไส้
+เบี้ยทำขวัญ
+เบียน
+เบียนธาตุ
+เบี้ยน้อยหอยน้อย
+เบี้ยบน
+เบี้ยบ้ายรายทาง
+เบี้ยบำนาญ
+เบี้ยโบก
+เบี้ยประกันภัย
+เบี้ยประชุม
+เบี้ยปรับ
+เบียร์
+เบี้ยล่าง
+เบี้ยเลี้ยง
+เบี้ยว
+เบี้ยวๆ บูดๆ
+เบี้ยหวัด
+เบี้ยหัวแตก
+เบี้ยหัวแหลก
+เบือ
+เบื่อ
+เบื้อ
+เบื้อง
+เบื้องญวน
+เบื้องต้น
+เบื้องบน
+เบื้องว่า
+เบื้องหน้า
+เบื้องหลัง
+เบือน
+แบ
+แบ้
+แบก
+แบกหน้า
+แบกะดิน
+แบคทีเรีย
+แบ่ง
+แบงก์
+แบ่งค้าง
+แบ่งเบา
+แบ่งปัน
+แบ่งภาค
+แบ่งแยก
+แบ่งรับแบ่งสู้
+แบ่งสันปันส่วน
+แบดมินตัน
+แบตเตอรี่
+แบไต๋
+แบน
+แบนโจ
+แบบ
+แบ็บ
+แบบข้อคำถาม
+แบบฉบับ
+แบบบาง
+แบบแผน
+แบบฝึกหัด
+แบบพิธี
+แบบพิมพ์
+แบบสอบถาม
+แบบอย่าง
+แบเบาะ
+แบมือ
+แบรก
+แบเรียม
+แบหลา
+แบะ
+แบะแฉะ
+แบะท่า
+แบะปาก
+แบะอก
+โบ
+โบ้
+โบ๋
+โบก
+โบกขร-
+โบกขรณี
+โบกขรพรรษ
+โบกมือ
+โบชุก
+โบดก
+โบแดง
+โบต
+โบนัส
+โบ๊เบ๊
+โบย
+โบยบิน
+โบรมีน
+โบรอน
+โบราณ
+โบราณ-
+โบราณคดี
+โบราณวัตถุ
+โบราณสถาน
+โบสถ์
+ใบ
+ใบ้
+ใบก้นปิด
+ใบกองเกิน
+ใบกองหนุน
+ใบขนสินค้า
+ใบขนุน
+ใบขับขี่
+ใบแข็ง
+ใบ้คลั่ง
+ใบเงิน
+ใบจอง
+ใบฎีกา
+ใบดาล
+ใบดำ
+ใบแดง
+ใบแดงแจ้งโทษ
+ใบตราส่ง
+ใบตอง
+ใบตาล
+ใบทอง
+ใบท้องแดง
+ใบแทรก
+ใบนาก
+ใบบอก
+ใบบุญ
+ใบเบิก
+ใบเบิกทาง
+ใบเบิกร่อง
+ใบปก
+ใบปรือ
+ใบปลิว
+ใบพัด
+ใบพัทธสีมา
+ใบโพ
+ใบเมี่ยง
+ใบไม้
+ใบระกา
+ใบรับ
+ใบรับรอง
+ใบลา
+ใบเลี้ยง
+ใบสอ
+ใบสั่ง
+ใบสั่งจ่าย
+ใบสัจ
+ใบสำคัญ
+ใบสำคัญคู่จ่าย
+ใบสีมา
+ใบสุทธิ
+ใบเสมา
+ใบเสร็จ
+ใบหน้า
+ใบหุ้น
+ใบหูช้าง
+ใบเหยียบย่ำ
+ใบอนุญาตขับขี่
+ไบ่ๆ
+ป
+ปก
+ปกกระพอง
+ปกเกศ
+ปกครอง
+ปกคลุม
+ปกติ
+ปกป้อง
+ปกปักรักษา
+ปกปิด
+ปกรณ์
+ปกรณัม
+ปการ
+ปกิณกะ
+ปกีรณัม
+ปโกฏิ
+ปง
+ป่ง
+ปงช้าง
+ปงปัง
+ปฎล
+ปฏัก
+ปฏิ-
+ปฏิกรณ์
+ปฏิกรรมสงคราม
+ปฏิการ-
+ปฏิการะ
+ปฏิกิริยา
+ปฏิกูล
+ปฏิคคหิต
+ปฏิคม
+ปฏิคหิต-
+ปฏิคาหก
+ปฏิฆะ
+ปฏิชีวนะ
+ปฏิญญา
+ปฏิญญาสากลว่าด้วยสิทธิมนุษยชน
+ปฏิญาณ
+ปฏิทิน
+ปฏิบถ
+ปฏิบัติ
+ปฏิบัติการ
+ปฏิบัติธรรม
+ปฏิปทา
+ปฏิปักษ์
+ปฏิปัน
+ปฏิปุจฉาพยากรณ์
+ปฏิปุจฉาวาที
+ปฏิพัทธ์
+ปฏิพากย์
+ปฏิภาค
+ปฏิภาค-
+ปฏิภาคนิมิต
+ปฏิภาณ
+ปฏิภาณ-
+ปฏิภาณกวี
+ปฏิภาณปฏิสัมภิทา
+ปฏิภาณโวหาร
+ปฏิมา
+ปฏิมากร
+ปฏิยุทธ์
+ปฏิรพ
+ปฏิรูป
+ปฏิรูป-
+ปฏิโลม
+ปฏิวัติ
+ปฏิวาต
+ปฏิวาท
+ปฏิเวธ
+ปฏิสนธิ
+ปฏิสวะ
+ปฏิสังขรณ์
+ปฏิสันถาร
+ปฏิสัมภิทา
+ปฏิเสธ
+ปฏิเสธข่าว
+ปฐพี
+ปฐพีวิทยา
+ปฐม
+ปฐม-
+ปฐมกรรม
+ปฐมฌาน
+ปฐมดุสิต
+ปฐมทัศน์
+ปฐมเทศนา
+ปฐมนิเทศ
+ปฐมบุรุษ
+ปฐมพยาบาล
+ปฐมโพธิกาล
+ปฐมยาม
+ปฐมฤกษ์
+ปฐมวัย
+ปฐมสมโพธิ
+ปฐมสุรทิน
+ปฐมาษาฒ
+ปฐวี
+ปณต
+ปณาม
+ปณิธาน
+ปณิธิ
+ปณีต
+ปด
+ปดโป้
+ปดิวรัดา
+ปติ
+ปติยัต
+ปติวัตร
+ปถพี
+ปถมัง
+ปถวี
+ปทัฏฐาน
+ปทัสถาน
+ปทานุกรม
+ปทีป
+ปทุม
+ปน
+ป่น
+ป่นปี้
+ปนเป
+ปนัดดา
+ปบ
+ปปัญจ-
+ปปัญจธรรม
+ปปัญจะ
+ปม
+ปมเขื่อง
+ปมจิต
+ปมด้อย
+ปมเด่น
+ปมประสาท
+ปมเปา
+ปโย-
+ปโยชนม์
+ปโยธร
+ปโยธรา
+ปโยนิธิ
+ปโยราศิ
+ปร-
+ปรก
+ปรกติ
+ปรง
+ปรด
+ปรตยักษ์
+ปรตยาค
+ปรตเยก
+ปรน
+ปรนนิบัติ
+ปรนปรือ
+ปรนเปรอ
+ปรนัย
+ปรบ
+ปรบไก่
+ปรบมือให้
+ปรปักษ์
+ปรม-
+ปรมัตถ์
+ปรมาจารย์
+ปรมาณู
+ปรมาตมัน
+ปรมาภิไธย
+ปรมาภิเษก
+ปรมินทร์
+ปรเมนทร์
+ปรเมศวร์
+ปรเมษฐ์
+ปรเมหะ
+ปรโลก
+ปรวด
+ปรวนแปร
+ปรวาที
+ปรศุ
+ปรสิต
+ปรสิต-
+ปรสิตวิทยา
+ปร๋อ
+ปรองดอง
+ปรอด
+ปรอดๆ
+ปรอท
+ปรอย
+ปรอยๆ
+ประ-
+ประกบ
+ประกบตัว
+ประกฤต
+ประกฤติ
+ประกล
+ประกวด
+ประกวดประขัน
+ประกวดราคา
+ประกอบ
+ประกอบด้วย
+ประกอบอาหาร
+ประกัน
+ประกันชีวิต
+ประกันเชิงลา
+ประกันตัวผู้ต้องหาหรือจำเลย
+ประกันภัย
+ประกันภัยค้ำจุน
+ประกันวินาศภัย
+ประกับ
+ประกาย
+ประกายพรึก
+ประการ
+ประกาศ
+ประกาศก
+ประกาศนียบัตร
+ประกาศิต
+ประกำ
+ประกิด
+ประกิต
+ประกีรณก
+ประเกียรณก
+ประแกก
+ประคด
+ประคนธรรพ
+ประคนธรรพ์
+ประคบ
+ประคบประหงม
+ประคอง
+ประคับประคอง
+ประคัลภ์
+ประคารม
+ประคำ
+ประคำไก่
+ประคำดีควาย
+ประคำร้อย
+ประคิ่น
+ประคิ่นวินชา
+ประคุณ
+ประเคน
+ประเคราะห์
+ประโคน
+ประโคนธรรพ
+ประโคนธรรพ์
+ประโคม
+ประโคมข่าว
+ประจง
+ประจญ
+ประจบ
+ประจบประแจง
+ประจวบ
+ประจ๋อประแจ๋
+ประจักษ-
+ประจักษ์
+ประจักษนิยม
+ประจักษ์พยาน
+ประจัญ
+ประจัญบาน
+ประจัน
+ประจันหน้า
+ประจาก
+ประจาค
+ประจาน
+ประจำ
+ประจำการ
+ประจำครั่ง
+ประจำฉัตร
+ประจำซอง
+ประจำเดือน
+ประจำตรา
+ประจำเมือง
+ประจำยาม
+ประจิม
+ประจิ้มประจ่อง
+ประจิ้มประเจ๋อ
+ประจุ
+ประจุขาด
+ประจุคมน์
+ประจุบัน
+ประจุไฟฟ้า
+ประจุโลหิต
+ประเจก
+ประเจิด
+ประเจิดประเจ้อ
+ประเจียด
+ประแจ
+ประแจจีน
+ประชด
+ประชดประชัน
+ประชน
+ประชวม
+ประชวร
+ประชัน
+ประชา
+ประชากร
+ประชากรศาสตร์
+ประชาคม
+ประชาชน
+ประชาชาติ
+ประชาทัณฑ์
+ประชาธิปไตย
+ประชานาถ
+ประชาบดี
+ประชาบาล
+ประชาภิบาล
+ประชามติ
+ประชาราษฎร์
+ประชาสงเคราะห์
+ประชาสัมพันธ์
+ประชิด
+ประชี
+ประชุม
+ประชุมเพลิง
+ประชุมสุดยอด
+ประเชิญ
+ประณต
+ประณม
+ประณาม
+ประณิธาน
+ประณิธิ
+ประณีต
+ประณุท
+ประดง
+ประดงแดง
+ประดน
+ประดนธรรม
+ประดวน
+ประดอน
+ประดอย
+ประดักๆ
+ประดักประเดิด
+ประดัง
+ประดับ
+ประดับประดา
+ประดา
+ประดาก
+ประดาตาย
+ประดาทัพ
+ประดาน้ำ
+ประดาป
+ประดาพล
+ประดามี
+ประดาษ
+ประดาเสีย
+ประดิ-
+ประดิชญา
+ประดิดประดอย
+ประดิทิน
+ประดิรพ
+ประดิษฐ-
+ประดิษฐ์
+ประดิษฐกรรม
+ประดิษฐาน
+ประดุง
+ประดุจ
+ประดู่
+ประดู่แขก
+ประดู่ชิงชัน
+ประดู่แดง
+ประดู่ลาย
+ประเด
+ประเด็น
+ประเดยก
+ประเดิม
+ประเดียง
+ประเดี๋ยว
+ประเดี๋ยวก่อน
+ประเดี๋ยวเดียว
+ประเดี๋ยวนี้
+ประเดี๋ยวประด๋าว
+ประแดง
+ประแดะ
+ประโดย
+ประตง
+ประตยาค
+ประตัก
+ประตาปะ
+ประติ-
+ประติชญา
+ประติญาณ
+ประติทิน
+ประติมากรรม
+ประติรพ
+ประติศรัพ
+ประตู
+ประตูชัย
+ประตูน้ำ
+ประตูป่า
+ประตูผี
+ประตูฟุตบอล
+ประตูระบาย
+ประตูรับน้ำ
+ประตูลม
+ประถม
+ประถมจินดา
+ประทม
+ประทยด
+ประท้วง
+ประทวน
+ประทวนสินค้า
+ประทักษ์
+ประทักษิณ
+ประทัง
+ประทัด
+ประทัดจีน
+ประทัดทอง
+ประทัดฝรั่ง
+ประทัดลม
+ประทัดเล็ก
+ประทัดใหญ่
+ประทับ
+ประทับใจ
+ประทับตรา
+ประทับฟ้อง
+ประทับแรม
+ประท่า
+ประทากล้อง
+ประทาน
+ประทานบัตร
+ประทาย
+ประทาศี
+ประทิน
+ประทิ่น
+ประทีป
+ประทุก
+ประทุฐ
+ประทุฐจิต
+ประทุน
+ประทุมราค
+ประทุษ
+ประทุษฏ์
+ประทุษฏจิต
+ประทุษฐ์
+ประทุษฐจิต
+ประทุษร้าย
+ประเทศ
+ประเทศกันชน
+ประเทศชาติ
+ประเทศราช
+ประเทา
+ประเท้า
+ประเทียด
+ประเทียบ
+ประเทือง
+ประธาน
+ประธานาธิบดี
+ประนม
+ประนมมือ
+ประนอ
+ประนอม
+ประนอมหนี้
+ประนัง
+ประนัปดา
+ประนี้
+ประนีประนอม
+ประนีประนอมยอมความ
+ประบัด
+ประบาต
+ประปราน
+ประปราย
+ประปา
+ประเปรี้ยง
+ประเปรียว
+ประแป้ง
+ประแปร้น
+ประพจน์
+ประพนธ์
+ประพรม
+ประพฤติ
+ประพฤทธิ์
+ประพัด
+ประพัทธ์
+ประพันธ์
+ประพาต
+ประพาส
+ประพาสต้น
+ประพาสมหรณพ
+ประพาฬ
+ประพิณ
+ประพิมพ์ประพาย
+ประพุทธ์
+ประเพณี
+ประเพณีนิยม
+ประเพ้อ
+ประแพร่งประแพรว
+ประโพธ
+ประไพ
+ประไพร
+ประภพ
+ประภัสสร
+ประภา
+ประภากร
+ประภาคาร
+ประภาพ
+ประภามณฑล
+ประภาษ
+ประภาส
+ประเภท
+ประมง
+ประมวญ
+ประมวล
+ประมวลกฎหมาย
+ประมวลการสอน
+ประมวลรัษฎากร
+ประมัตตะ
+ประมาณ
+ประมาณการ
+ประมาณตน
+ประมาณตัว
+ประมาท
+ประมาทหน้า
+ประมุข
+ประมุท
+ประมูล
+ประเมิน
+ประเมินภาษี
+ประโมง
+ประโมทย์
+ประยงค์
+ประยุกต์
+ประยุทธ์
+ประยุร
+ประยูร
+ประโยค
+ประโยคประธาน
+ประโยคสัมปทา
+ประโยชน์
+ประโรหิต
+ประลมพ์
+ประลอง
+ประลองยุทธ์
+ประลัย
+ประลัยกัลป์
+ประลัยวาต
+ประลาต
+ประลาย
+ประลึง
+ประลุ
+ประลุง
+ประเล่ห์
+ประเล้าประโลม
+ประโลประเล
+ประโลม
+ประโลมโลก
+ประวรรต
+ประวรรตน์
+ประวัติ
+ประวัติ-
+ประวัติการ
+ประวัติการณ์
+ประวัติกาล
+ประวัติศาสตร์
+ประวาต
+ประวาล
+ประวาลปัทม์
+ประวาลผล
+ประวาลวรรณ
+ประวาส
+ประวิง
+ประวิช
+ประวิตร
+ประวิสรรชนีย์
+ประวีณ
+ประเวณี
+ประเวประวิง
+ประเวศ
+ประเวศน์
+ประศม
+ประศาสน์
+ประศุ
+ประสก
+ประสงค์
+ประสงค์ร้าย
+ประสบ
+ประสบการณ์
+ประสบการณ์นิยม
+ประสพ
+ประสม
+ประสมประสาน
+ประสมประเส
+ประสมพันธุ์
+ประสมโรง
+ประสะ
+ประสัก
+ประสันนาการ
+ประสัยห-
+ประสัยห์
+ประสัยหาการ
+ประสัยหาวหาร
+ประสา
+ประสาท
+ประสาท-
+ประสาทการ
+ประสาทรูป
+ประสาทหลอน
+ประสาธน์
+ประสาน
+ประสานงา
+ประสานเนรมิต
+ประสานเสียง
+ประสาร
+ประสิทธิ-
+ประสิทธิ์
+ประสิทธิ์ประสาท
+ประสิทธิผล
+ประสิทธิภาพ
+ประสิทธิเม
+ประสีประสา
+ประสูต
+ประสูติ
+ประเสบันอากง
+ประเสริฐ
+ประแสบัน
+ประหนึ่ง
+ประหม่า
+ประหยัด
+ประหรณ์
+ประหลาด
+ประหล่ำ
+ประหลิ่ม
+ประหวัด
+ประหวั่น
+ประหว่า
+ประหัต
+ประหัตประหาร
+ประหาณ
+ประหาร
+ประหารชีวิต
+ประหาส
+ประเหล
+ประเหส
+ประเหียล
+ประอบ
+ประอร
+ประอรประเอียง
+ประอึง
+ประอุก
+ประเอียง
+ประแอก
+ประฮาม
+ปรัก
+ปรักปรำ
+ปรักมะ
+ปรักหักพัง
+ปรัง
+ปรัชญา
+ปรัด
+ปรัตถจริยา
+ปรัตยนต์
+ปรัตยักษ์
+ปรัตยันต์
+ปรัตยัย
+ปรัตยุตบัน
+ปรัตยุบัน
+ปรัตยูษ
+ปรัตยูห์
+ปรัตเยก
+ปรัน
+ปรั่น
+ปรั้น
+ปรับ
+ปรับทุกข์
+ปรับโทษ
+ปรับปรุง
+ปรับไหม
+ปรับอากาศ
+ปรับอาบัติ
+ปรัมปรา
+ปรัศจิม
+ปรัศนา
+ปรัศนี
+ปรัศว์
+ปร่า
+ปรากฏ
+ปรากฏการณ์
+ปรากรม
+ปรากฤต
+ปราการ
+ปราคภาร
+ปราคาร
+ปราง
+ปรางค์
+ปรางคณะ
+ปรางค์ปรา
+ปราจีน
+ปราชญ์
+ปราชญา
+ปราชัย
+ปราชาปัตยวิวาหะ
+ปราชิต
+ปราณ
+ปราณี
+ปราด
+ปราดเปรียว
+ปราดเปรื่อง
+ปราติหารย์
+ปราทุกรา
+ปราน
+ปรานี
+ปรานีตีเอาเรือ
+ปรานีปราศรัย
+ปราบ
+ปราบดาภิเษก
+ปราบปราม
+ปราปต์
+ปราภพ
+ปราม
+ปรามาส
+ปราโมช
+ปราโมทย์
+ปราย
+ปรารถนา
+ปรารภ
+ปรารมภ์
+ปราศ
+ปราศจาก
+ปราศรัย
+ปราษณี
+ปราษาณ
+ปราสัย
+ปราสาท
+ปรำ
+ปริ-
+ปริก
+ปริกขาร
+ปริกรรม
+ปริกัป
+ปริกัลป-
+ปริกัลปมาลา-
+ปริขา
+ปริคณห์
+ปริจาค
+ปริจาริกา
+ปริเฉท
+ปริชน
+ปริซึม
+ปริญญา
+ปริญญาบัตร
+ปริณาม
+ปริณามัคคิ
+ปริณายก
+ปริต
+ปริต-
+ปริตตะ
+ปริตโตทก
+ปริตทวีป
+ปริตยาค
+ปริตร
+ปริทรรศน์
+ปริทัยหัคคี
+ปริทัศน์
+ปริเทพ
+ปริเทพน์
+ปริเทวนะ
+ปริเทวะ
+ปรินิพพาน
+ปริบ
+ปริปันถ์
+ปริปาก
+ปริพนธ์
+ปริพัตร
+ปริพันธ์
+ปริพาชก
+ปริภัณฑ์
+ปริภาษ
+ปริภาษณ์
+ปริภุญช์
+ปริภูมิ
+ปริโภค
+ปริ่ม
+ปริมณฑล
+ปริมัท
+ปริมาณ
+ปริมาตร
+ปริย-
+ปริยรณ
+ปริยวาท
+ปริยวาที
+ปริยัติ
+ปริยัติธรรม
+ปริยานุช
+ปริยาย
+ปริเยศ
+ปริโยสาน
+ปริวรรต
+ปริวรรต-
+ปริวรรตกรรม
+ปริวัตร
+ปริวาร
+ปริวาส
+ปริวิตก
+ปริเวณ
+ปริศนา
+ปริศนาธรรม
+ปริศนาลายแทง
+ปริศนาอักษรไขว้
+ปริษการ
+ปริษัท
+ปริสัญญู
+ปริสุทธิ
+ปริหาน
+ปริหาร
+ปริหาส
+ปรี่
+ปรีชญา
+ปรีชา
+ปรี๊ด
+ปรีดา
+ปรีดิ
+ปรีดิ์
+ปรีดี
+ปรีติ
+ปรีย
+ปรียา
+ปรึก
+ปรึกษา
+ปรึง
+ปรือ
+ปรื๋อ
+ปรุ
+ปรุง
+ปรุโปร่ง
+ปรู
+ปรู๋
+ปรูด
+ปรูดปราด
+ปรู๊ดปร๊าด
+ปรู๊ฟ
+ปฤงคพ
+ปฤจฉา
+ปฤจฉาคุณศัพท์
+ปฤจฉาสรรพนาม
+ปฤษฎ์
+ปฤษฎางค์
+ปฤษฐ
+ปลก
+ปลกเปลี้ย
+ปลง
+ปล่ง
+ปลงกรรมฐาน
+ปลงใจ
+ปลงช้าง
+ปลงชีวิต
+ปลงตก
+ปลงธรรมสังเวช
+ปลงธุระ
+ปลงบริขาร
+ปลงผม
+ปลงศพ
+ปลงสังขาร
+ปลงสังเวช
+ปลงอนิจจัง
+ปลงอาบัติ
+ปลงอายุสังขาร
+ปลด
+ปลดเกษียณ
+ปลดเกษียณอายุ
+ปลดทุกข์
+ปลดปลง
+ปลดปล่อย
+ปลดเปลื้อง
+ปลดระวาง
+ปลดหนี้
+ปลดออก
+ปลดอาวุธ
+ปลดแอก
+ปล้น
+ปล้นทรัพย์
+ปลวก
+ปลวังค-
+ปลอก
+ปลอกกระสุน
+ปลอกคอ
+ปลอกมีด
+ปลอกมือ
+ปล่อง
+ปล้อง
+ปล้องขน
+ปล้องฉนวน
+ปล้องไฉน
+ปล้องทอง
+ปล้องอ้อย
+ปลอด
+ปลอดทหาร
+ปลอดโปร่ง
+ปลอดภัย
+ปล้อน
+ปลอบ
+ปลอบขวัญ
+ปลอบโยน
+ปลอม
+ปลอมปน
+ปลอมแปลง
+ปล่อย
+ปล่อยเกาะ
+ปล่อยแก่
+ปล่อยไก่
+ปล่อยของ
+ปล่อยใจ
+ปล่อยตัว
+ปล่อยตัวปล่อยใจ
+ปล่อยนกปล่อยกา
+ปล่อยเนื้อปล่อยตัว
+ปล่อยปละละเลย
+ปล่อยปลาลงน้ำ
+ปล่อยปลิง
+ปล่อยมือ
+ปล่อยเสือเข้าป่า
+ปละ
+ปลัก
+ปลั๊ก
+ปลั๊กไฟ
+ปลัง
+ปลั่ง
+ปลัด
+ปลัดขิก
+ปลา
+ปลาก
+ปลากริม
+ปลาเกลือ
+ปลาข้องเดียวกัน
+ปลาเค็ม
+ปลาเงินปลาทอง
+ปลาจ่อม
+ปลาจีน
+ปลาเจ่า
+ปลาชา
+ปลาดาว
+ปลาแดก
+ปลาแดง
+ปลาต
+ปลาตกน้ำตัวโต
+ปลาตะเพียน
+ปลาติดหลังแห
+ปลาตู้
+ปลาทอง
+ปลาแนม
+ปลาบ
+ปลาบปลื้ม
+ปลาบิน
+ปลาฝา
+ปลาม้ำ
+ปลาย
+ปลายข้าว
+ปลายตีน
+ปลายทาง
+ปลายนาการ
+ปลายน้ำ
+ปลายมือ
+ปลายอ้อปลายแขม
+ปลาร้า
+ปลาโลมา
+ปลาวาฬ
+ปลาสเตอร์
+ปลาสนาการ
+ปลาส้ม
+ปลาหน้าดิน
+ปลาหมอตายเพราะปาก
+ปลาหมึก
+ปลาเห็ด
+ปลาใหญ่กินปลาเล็ก
+ปลาไหลเผือก
+ปล้ำ
+ปล้ำปลุก
+ปล้ำผีลุกปลุกผีนั่ง
+ปลิง
+ปลิงทะเล
+ปลิด
+ปลิ้น
+ปลิ้นปลอก
+ปลิ้นปล้อน
+ปลิโพธ
+ปลิม
+ปลิ่ม
+ปลิว
+ปลี
+ปลีก
+ปลีกตัว
+ปลีกย่อย
+ปลีกเวลา
+ปลีแข้ง
+ปลื้ม
+ปลุก
+ปลุกใจ
+ปลุกตัว
+ปลุกปล้ำ
+ปลุกปั่น
+ปลุกผี
+ปลุกพระ
+ปลุกระดม
+ปลุกเสก
+ปลูก
+ปลูกฝัง
+ปลูกฝี
+ปลูกเรือนคร่อมตอ
+ปลูกเรือนตามใจผู้อยู่
+ปลูกเรือนพอตัว หวีหัวพอเกล้า
+ปวกเปียก
+ปวง
+ป่วง
+ปวด
+ปวดถ่วง
+ปวดท้องทุ่ง
+ปวดท้องเบา
+ปวดท้องเยี่ยว
+ปวดมวน
+ปวดร้าว
+ปวดเศียรเวียนเกล้า
+ปวดแสบปวดร้อน
+ป่วน
+ป้วน
+ป่วนปั่น
+ป้วนเปี้ยน
+ป่วย
+ป่วยกล่าว
+ป่วยการ
+ปวัตน-
+ปวัตน์
+ปวัตนาการ
+ปวารณา
+ปวาล
+ปวาส
+ปวาฬ
+ปวิช
+ปวิตร
+ปวิธ
+ปวิเวก
+ปวีณ
+ปวุติ
+ปเวณี
+ปเวส
+ปเวสน์
+ปศุ
+ปสพ
+ปสันน-
+ปสันนะ
+ปสันนาการ
+ปสัยห-
+ปสัยหะ
+ปสัยหาการ
+ปสัยหาวหาร
+ปสาท
+ปสาน
+ปสาสน์
+ปสุ
+ปสุต
+ปสูติ
+ปหังส
+ปหังสน
+ปหาน
+ปหาร
+ปหาส
+ปอ
+ป้อ
+ป๋อ
+ปอก
+ปอกกล้วยเข้าปาก
+ปอกลอก
+ปอง
+ป่อง
+ป่องๆ
+ป้อง
+ป้องกัน
+ป่องร่า
+ปอด
+ปอดชื้น
+ปอดบวม
+ปอดแปด
+ปอดลอย
+ปอดเหล็ก
+ปอน
+ปอนๆ
+ป้อน
+ปอนด์
+ปอเนาะ
+ปอบ
+ป้อแป้
+ปอม
+ป้อม
+ป้อมๆ
+ป๋อม
+ปอมขาง
+ปอมข่าง
+ป้อมบังคับการ
+ปอย
+ป้อย
+ป้อยอ
+ปอเลียงฝ้าย
+ปะ
+ปะกน
+ปะกัง
+ปะกาปะกัง
+ปะการัง
+ปะกำ
+ปะขาว
+ปะงับปะง่อน
+ปะตาปา
+ปะตาระกาหลา
+ปะติดปะต่อ
+ปะติยาน
+ปะเตะ
+ปะทะ
+ปะทะปะทัง
+ปะทุ
+ปะทุน
+ปะบุก
+ปะปน
+ปะมง
+ปะราลี
+ปะรำ
+ปะลอม
+ปะเลง
+ปะแล่ม
+ปะแล่มๆ
+ปะโลง
+ปะวะหล่ำ
+ปะวะหลิ่ม
+ปะว่า
+ปะเสหรันอากง
+ปะหงับ
+ปะหงับๆ
+ปะหงับปะง่อน
+ปะหนัน
+ปะหมันอาหยี
+ปะหลิ่ม
+ปะหัง
+ปะเหลาะ
+ปะเหลาะปะแหละ
+ปัก
+ปักข-
+ปักข์
+ปักขคณนา
+ปักขพิฬาร
+ปักขันดร
+ปักใจ
+ปักเป้า
+ปักษ-
+ปักษ์
+ปักษกษัย
+ปักษคณนา
+ปักษคม
+ปักษธร
+ปักษเภท
+ปักษวาหน
+ปักษา
+ปักษานดร
+ปักษาวสาน
+ปักษาสวรรค์
+ปักษิน
+ปักษี
+ปักหลัก
+ปัคหะ
+ปัง
+ปั๋ง
+ปังสุ์
+ปังสุกุล
+ปัจจัตตะ
+ปัจจัตถรณ์
+ปัจจันต-
+ปัจจันต์
+ปัจจันตคาม
+ปัจจันตชนบท
+ปัจจันตประเทศ
+ปัจจัย
+ปัจจามิตร
+ปัจจุคมน์
+ปัจจุทธรณ์
+ปัจจุบัน
+ปัจจุบันทันด่วน
+ปัจจุส-
+ปัจจุสกาล
+ปัจจุสมัย
+ปัจจูส
+ปัจจูหะ
+ปัจเจก
+ปัจเจก-
+ปัจเจกบุคคล
+ปัจเจกพุทธะ
+ปัจเจกโพธิ
+ปัจเจกสมาทาน
+ปัจโจปการกิจ
+ปัจโจสกาล
+ปัจฉา
+ปัจฉาภัต
+ปัจฉาสมณะ
+ปัจฉิม
+ปัจฉิม-
+ปัจฉิมชน
+ปัจฉิมภาค
+ปัจฉิมยาม
+ปัจฉิมลิขิต
+ปัจฉิมวัย
+ปัจฉิมวาจา
+ปัจถรณ์
+ปัจนึก
+ปัจยาการ
+ปัจเวกขณ์
+ปัชชร
+ปัชชุน
+ปัญจ-
+ปัญจก
+ปัญจนที
+ปัญจม-
+ปัญจมี
+ปัญจมีดิถี
+ปัญจวัคคีย์
+ปัญจวีสติ
+ปัญจสาขา
+ปัญญัติ
+ปัญญา
+ปัญญาแค่หางอึ่ง
+ปัญญาชน
+ปัญญาส-
+ปัญญาอ่อน
+ปัญหา
+ปัญหาโลกแตก
+ปัฏ
+ปัฏนะ
+ปัฐยาวัต
+ปัณฑรหัตถี
+ปัณณะ
+ปัณณาส
+ปัณณาสก์
+ปัณรส-
+ปัณรสม-
+ปัณรสมสุรทิน
+ปัณรสี
+ปัณรสีดิถี
+ปัณหิ
+ปัด
+ปัดๆ
+ปัดเกล้า
+ปัดขา
+ปัดแข้งปัดขา
+ปัดตลอด
+ปัดไถม
+ปัดเป่า
+ปัดรังควาน
+ปัดเศษ
+ปัดสวะ
+ปัตคาด
+ปัตตะ
+ปัตตานีกะ
+ปัตตานึก
+ปัตตานุโมทนา
+ปัตตาเวีย
+ปัตติ
+ปัตติก
+ปัตติทาน
+ปัตถร
+ปัตถะ
+ปัตนิ
+ปัตนี
+ปัตยัย
+ปัตหล่า
+ปัถพี
+ปัถวี
+ปัทม-
+ปัทม์
+ปัทมปาณี
+ปัทมราค
+ปัทมราช
+ปัทมะ
+ปัทมาสน์
+ปัน
+ปั่น
+ปั้น
+ปั้นจั่น
+ปั้นจิ้มปั้นเจ๋อ
+ปันจุเหร็จ
+ปั้นเจ๋อ
+ปั่นป่วน
+ปั้นปึ่ง
+ปั่นแปะ
+ปั่นฝ้าย
+ปั่นไฟ
+ปั้นยศ
+ปั้นลม
+ปั้นล่ำ
+ปันส่วน
+ปั้นสิบ
+ปั้นสีหน้า
+ปั้นหยา
+ปั่นหัว
+ปั้นเหน่ง
+ปับ
+ปั๊บ
+ปัปผาสะ
+ปัพพาชนะ
+ปัพพาชนียกรรม
+ปัพภาระ
+ปั๊มน้ำมัน
+ปัยกะ
+ปัยกา
+ปัยยิกา
+ปั่ว
+ปัวเปีย
+ปั้วเปี้ย
+ปัศจิม
+ปัศตัน
+ปัศตู
+ปัสสาวะ
+ปัสสาสะ
+ปา
+ป่า
+ป้า
+ปาก
+ปากกบ
+ปากกระจับ
+ปากกระบะ
+ปากกริว
+ปากกล้า
+ปากกว้าง
+ปากกา
+ปากกาลูกลื่น
+ปากกาหมึกซึม
+ปากกาหมึกแห้ง
+ปากไก่
+ปากขม
+ปากขอ
+ปากแข็ง
+ปากคม
+ปากคอก
+ปากคอเราะราย
+ปากคัน
+ปากคำ
+ปากคีบ
+ปากจอบ
+ปากจะขาบ
+ปากจัด
+ปากจิ้งจก
+ปากฉลาม
+ปากช้าง
+ปากซ่อม
+ปากตลาด
+ปากต่อปาก
+ปากตะกร้อ
+ปากตะไกร
+ปากตะขาบ
+ปากตำแย
+ปากแตร
+ปากใต้
+ปากนก
+ปากนกกระจอก
+ปากนกแก้ว
+ปากน้ำ
+ปากบอน
+ปากบาตร
+ปากเบา
+ปากแบะ
+ปากปราศรัยใจเชือดคอ
+ปากปลา
+ปากปลาร้า
+ปากปลิง
+ปากเป็ด
+ปากเป็นชักยนต์
+ปากเปราะ
+ปากเปราะเราะราย
+ปากเปล่า
+ปากเปียก
+ปากเปียกปากแฉะ
+ปากโป้ง
+ปากไปล่
+ปากมาก
+ปากไม้
+ปากไม่สิ้นกลิ่นน้ำนม
+ปากราก
+ปากร้าย
+ปากเรือ
+ปากว่าตาขยิบ
+ปากว่ามือถึง
+ปากสว่าง
+ปากหนัก
+ปากหวาน
+ปากหวานก้นเปรี้ยว
+ปากหอยปากปู
+ปากห่าง
+ปากเหยี่ยวปากกา
+ปากอ่าว
+ป่าแคระ
+ปาง
+ป่าง
+ป้าง
+ป้างป่า
+ปาจนะ
+ปาจรีย์
+ปาจารย์
+ปาจิตตีย์
+ปาจีน
+ป่าช้า
+ป่าชายเลน
+ปาฏลิ
+ปาฏิบท
+ปาฏิบุคลิก
+ปาฏิโภค
+ปาฏิหาริย์
+ปาฐ-
+ปาฐก
+ปาฐกถา
+ปาฐะ
+ปาณ-
+ปาณก-
+ปาณกชาติ
+ปาณทัณฑ์
+ปาณนาศ
+ปาณภูต
+ปาณวินาศ
+ปาณสาร
+ปาณะ
+ปาณาติบาต
+ปาณิ
+ปาณิเคราะห์
+ปาณิดล
+ปาณิธรรม
+ปาณิมุกต์
+ปาณิมูล
+ปาณี
+ปาด
+ป่าดงดิบ
+ปาดหาว
+ป่าดิบ
+ป่าแดง
+ปาติโมกข์
+ปาตี
+ปาเต๊ะ
+ป่าเถื่อน
+ปาท
+ปาทป
+ปาท่องโก๋
+ปาทังกา
+ปาทาน
+ป่าทึบ
+ปาทุกา
+ปาน
+ป่าน
+ป้าน
+ปานกลาง
+ป่านคม
+ปานฉะนี้
+ปานดง
+ปานนี้
+ป่านนี้
+ป้านลม
+ปานะ
+ปานิเยน
+ปานีย-
+ปานียะ
+ปานีโยทก
+ป้าบ
+ป๊าบ
+ป่าเบญจพรรณ
+ปาป-
+ปาปมุต
+ปาปอหยีสังฆาตา
+ป่าโปร่ง
+ป่าผลัดใบ
+ปาพจน์
+ป่าแพะ
+ปาม
+ปามปึงมา
+ปาโมกข์
+ป่าไม้พุ่ม
+ป่าย
+ป้าย
+ป้ายสี
+ปายาส
+ปาร-
+ปาร์เกต์
+ปารคู
+ปารมี
+ปารเมศ
+ปารษณี
+ป่าระนาม
+ปาราชิก
+ปาริฉัตร
+ปาริชาต
+ปารุปนะ
+ปาล
+ปาล์ม
+ป่าละเมาะ
+ปาลิไลยก์
+ปาลี
+ป่าเลน
+ปาวๆ
+ป่าว
+ป๊าว
+ปาวก
+ปาวจนะ
+ป่าวประกาศ
+ป่าวร้อง
+ปาวาร
+ปาษาณ
+ปาส
+ปาสาณ
+ปาสาทิกะ
+ป่าสูง
+ป่าเส็งเคร็ง
+ป่าใส
+ปาหนัน
+ปาหี่
+ปาหุณ
+ปาหุไณย-
+ปาหุไณยบุคคล
+ปำ
+ป้ำ
+ป้ำเป้อ
+ป้ำเป๋อ
+ป้ำๆ เป๋อๆ
+ปิกนิก
+ปิ้ง
+ปิงคล-
+ปิงคลหัตถี
+ปิงคละ
+ปิ้งปลาประชดแมว
+ปิงปอง
+ปิฎก
+ปิฏฐะ
+ปิฐิ
+ปิณฑะ
+ปิด
+ปิดกล้อง
+ปิดคดี
+ปิดควันไฟไม่มิด
+ปิดฉาก
+ปิดตาย
+ปิดเต๊าะ
+ปิดทองหลังพระ
+ปิดบัง
+ปิดบัญชี
+ปิดเบา
+ปิดประตูค้า
+ปิดประตูตีแมว
+ปิดปาก
+ปิดสำนวน
+ปิดหนัก
+ปิดหีบไม่ลง
+ปิตตะ
+ปิตา
+ปิตามหะ
+ปิตามหัยกา
+ปิตามหัยยิกา
+ปิตุ
+ปิตุฆาต
+ปิตุจฉา
+ปิตุภูมิ
+ปิตุล
+ปิตุลา
+ปิตุลานี
+ปิโตรเลียม
+ปิ่น
+ปิ่นแก้ว
+ปิ่นซ่น
+ปิ่นตอ
+ปิ่นโต
+ปิปผลี
+ปิ่ม
+ปิ้ม
+ปิย-
+ปิยังคุ
+ปิลันธน์
+ปิ๋ว
+ปิศาจ
+ปิศาจบดี
+ปิสัง
+ปิไส
+ปิหก
+ปิหลั่น
+ปี
+ปี่
+ปี้
+ปี๋
+ปีก
+ปีกกล้าขาแข็ง
+ปีกกา
+ปีกค้างคาว
+ปีกนก
+ปีกไม้
+ปีกลาย
+ปีกหัก
+ปีการศึกษา
+ปี่แก้ว
+ปีงบประมาณ
+ปีฐกะ
+ปีฐะ
+ปี๊ด
+ปีติ
+ปีน
+ปีนเกลียว
+ปีบ
+ปี๊บ
+ปีปฏิทิน
+ปี่พาทย์
+ปีมะโว้
+ปีศาจ
+ปีแสง
+ปีหน้าฟ้าใหม่
+ปีฬ
+ปีฬก
+ปีฬา
+ปึก
+ปึกแผ่น
+ปึง
+ปึ่ง
+ปึ๋ง
+ปึ่งชา
+ปึงปัง
+ปึ้ด
+ปึมปื้อ
+ปืดปึง
+ปืน
+ปื้น
+ปืนยา
+ปือ
+ปื้อ
+ปื๋อ
+ปุ
+ปุ๊
+ปุก
+ปุกปุย
+ปุคละ
+ปุ้งกี๋
+ปุงคพ
+ปุงควะ
+ปุงลิงค์
+ปุงลึงค์
+ปุจฉา
+ปุฏ
+ปุณฑริก
+ปุด
+ปุดกะลา
+ปุตตะ
+ปุถุชน
+ปุนนาค
+ปุนภพ
+ปุนัพพสู
+ปุนัพสุ
+ปุบ
+ปุ๊บ
+ปุบปับ
+ปุ๊บปั๊บ
+ปุปผะ
+ปุปะ
+ปุพพ-
+ปุพพผลคุนี
+ปุพพผลคุนี-
+ปุพพะ
+ปุพพะภัททะ
+ปุม-
+ปุ่ม
+ปุ้ม
+ปุ๋ม
+ปุ่มปลา
+ปุ่มป่ำ
+ปุ้มเป้ง
+ปุ่มเปือก
+ปุ้มเปือก
+ปุมา
+ปุย
+ปุ้ย
+ปุ๋ย
+ปุยกระโดน
+ปุยขาว
+ปุ๋ยคอก
+ปุยฝ้าย
+ปุร
+ปุรณะ
+ปุรพ-
+ปุรพผลคุนี
+ปุรพษาฒ
+ปุราณ
+ปุราณะ
+ปุเรจาริก
+ปุโรหิต
+ปุลลิงค์
+ปุลลึงค์
+ปุลินท์
+ปุลู
+ปุโลปุเล
+ปุษยะ
+ปุสสะ
+ปุฬวะ
+ปู
+ปู่
+ปู่ครู
+ปูจ๋า
+ปู่เจ้า
+ปูชกะ
+ปูชนีย-
+ปูชนียะ
+ปูชา
+ปูชิต
+ปูด
+ปูดกกส้มมอ
+ปูติ
+ปูติลดา
+ปู่ทวด
+ปูน
+ปูนขาว
+ปูนซีเมนต์
+ปูนดิบ
+ปูนแดง
+ปูนปลาสเตอร์
+ปูนปั้น
+ปูนเปียก
+ปูนผิว
+ปูนเพชร
+ปูนไฟ
+ปูนสอ
+ปูนสุก
+ปู่น้อย
+ปูม
+ปู่ย่า
+ปู้ยี่ปู้ยำ
+ปูระ
+ปูลู
+ปูเล
+ปูวา
+ปูเสฉวน
+เป้
+เป๋
+เปก
+เป๊ก
+-เปกข์
+เป่ง
+เป้ง
+เป๋ง
+เป็ด
+เป็ดก่า
+เป็ดแก้ว
+เป็ดขันประชันไก่
+เป็ดถบ
+เป็ดเทศ
+เป็ดน้ำ
+เป็ดผี
+เป็ดไฟแดง
+เป็ดหงส์
+เปต-
+เปตพลี
+เปตวิสัย
+เปตอง
+เปตา
+เป็น
+เป็นกลาง
+เป็นกอง
+เป็นกอบเป็นกำ
+เป็นการ
+เป็นควัน
+เป็นความ
+เป็นคุ้งเป็นแคว
+เป็นงานเป็นการ
+เป็นเงาตามตัว
+เป็นเงินเป็นทอง
+เป็นจริงเป็นจัง
+เป็นใจ
+เป็นชิ้นเป็นอัน
+เป็นชู้
+เป็นดั้งหน้า
+เป็นแดน
+เป็นใด
+เป็นได้
+เป็นต้น
+เป็นต่อ
+เป็นตัวเป็นตน
+เป็นตุเป็นตะ
+เป็นน้ำ
+เป็นน้ำเป็นนวล
+เป็นน้ำยาเย็น
+เป็นนิตย์
+เป็นเนื้อเป็นตัว
+เป็นเนื้อเป็นหนัง
+เป็นบ้า
+เป็นบ้าเป็นหลัง
+เป็นปากเสียง
+เป็นปี่เป็นขลุ่ย
+เป็นผู้เป็นคน
+เป็นฝั่งเป็นฝา
+เป็นฟืนเป็นไฟ
+เป็นไฟ
+เป็นมั่นเป็นเหมาะ
+เป็นรอง
+เป็นไร
+เป็นลมๆ
+เป็นล่ำเป็นสัน
+เป็นโล้เป็นพาย
+เป็นวรรคเป็นเวร
+เป็นหน้าเป็นตา
+เป็นหุ่นให้เชิด
+เป็นหูเป็นตา
+เป็นอัน
+เป็นอันขาด
+เป็นอันมาก
+เป็นเอง
+เปยยาล
+เปร
+เปร็ง
+เปรต
+เปรต-
+เปรตวิษัย
+เปรตวิสัย
+เปรม
+เปรมปรา
+เปรย
+เปรยๆ
+เปรยปราย
+เปรอ
+เปรอะ
+เปรา
+เปราะ
+เปราะแประ
+เปราะหอม
+เปรียง
+เปรี้ยง
+เปรียญ
+เปรียบ
+เปรียบเทียบ
+เปรียบปราย
+เปรียบเปรย
+เปรี่ยม
+เปรียว
+เปรี้ยว
+เปรี้ยวปาก
+เปรี้ยวหวาน
+เปรียะ
+เปรี๊ยะ
+เปรื่อง
+เปรื่องปราด
+เปรื้อย
+เปล
+เปล่ง
+เปลญวน
+เปลว
+เปลา
+เปล่า
+เปล้า
+เปล้าขลิบทอง
+เปล่าดาย
+เปลาะ
+เปลี้ย
+เปลี่ยน
+เปลี่ยนใจ
+เปลี่ยนตัว
+เปลี่ยนแปลง
+เปลี่ยนแผ่นดิน
+เปลี่ยนมือ
+เปลี่ยนมือไม่ได้
+เปลี่ยนหน้า
+เปลี่ยม
+เปลี่ยว
+เปลี่ยวดำ
+เปลือก
+เปลือกกระเทียม
+เปลือกตา
+เปลือกโลก
+เปลือง
+เปลื้อง
+เปลื้องเครื่องสุกำศพ
+เปลืองใจ
+เปลือย
+เปลือยกาย
+เปศ
+เปศล
+เปศลมัธย์
+เปศัส
+เปศัส-
+เปศัสการิน
+เปศัสการี
+เปสการ
+เปสล
+เปสุญ
+เปสุญ-
+เปสุญวาท
+เปสุไณย
+เป๋อ
+เป้อเย้อ
+เปอร์เซ็นต์
+เป๋อเหลอ
+เปะ
+เปะปะ
+เปา
+เป่า
+เป้า
+เป๊า
+เป๋า
+เป่ากบ
+เป่าแตร
+เป้าประสงค์
+เป่าปี่
+เป่าฝุ่น
+เป่าแล่น
+เป้าหมาย
+เป่าหลอด
+เป่าหู
+เป๋าฮื้อ
+เปาะ
+เปาะเปี๊ยะ
+เปาะแปะ
+เปาะเหลาะ
+เปิก
+เปิง
+เปิงๆ
+เปิงมาง
+เปิด
+เปิดกล้อง
+เปิดคดี
+เปิดฉาก
+เปิดบัญชี
+เปิดเปิง
+เปิดโปง
+เปิดเผย
+เปิดโลก
+เปิดหมวกลา
+เปิดหมวกให้
+เปิดหูเปิดตา
+เปิดอก
+เปิ่น
+เปิบ
+เปิ๊บ
+เปิบข้าว
+เปีย
+เปียก
+เปี๊ยก
+เปี่ยม
+เปียว
+เปี้ยว
+เปียะ
+เปี๊ยะ
+เปือก
+เปือกตม
+เปื้อน
+เปื่อย
+แป
+แป้ง
+แป๋ง
+แป้งข้าวสาลี
+แป้งข้าวหมาก
+แป้งแข็ง
+แป้งจี่
+แป้งแช่
+แป้งญวน
+แป้งนวล
+แป้งฝุ่น
+แป้งมัน
+แป้งมี่
+แป้งร่ำ
+แป้งสด
+แป้งสารภี
+แป้งสาลี
+แป้งสิงคโปร์
+แป้งหมี่
+แป้งเหล้า
+แปด
+แป๊ด
+แปดบท
+แปดปน
+แปดเปื้อน
+แปดสาแหรก
+แปดเหลี่ยมแปดคม
+แปดเหลี่ยมสิบสองคม
+แปทู
+แป้น
+แปบ
+แป๊บ
+แปม
+แปร
+แปร๋
+แปรก
+แปรขบวน
+แปรไข้
+แปรง
+แปร่ง
+แปรงล้างขวด
+แปรงหูหนู
+แปรญัตติ
+แปร๊ด
+แปรธาตุ
+แปร้น
+แปร้นแปร๋
+แปรปรวน
+แปรปากหลากคำ
+แปร๋แปร้น
+แปรผัน
+แปรผันโดยตรง
+แปรผันแบบผกผัน
+แปรพักตร์
+แปรรูป
+แปรอักษร
+แประ
+แปล
+แปล้
+แปลก
+แปลกปลอม
+แปลง
+แปลงชาติ
+แปลงผี
+แปลงสัญชาติ
+แปลตามเนื้อความ
+แปลตามพยัญชนะ
+แปลตามอรรถ
+แปลน
+แปลบ
+แปลยกศัพท์
+แปลร้อย
+แป้ว
+แป๊ว
+แปะ
+แป๊ะ
+แป๊ะซะ
+โป
+โป่
+โป้
+โป๊
+โปก
+โป๊ก
+โป๊กเกอร์
+โปกขร-
+โปกขรณี
+โปกขรพรรษ
+โปกำ
+โปเก
+โปง
+โป่ง
+โป้ง
+โป่งข่าม
+โป่งดิน
+โป่งน้ำ
+โป้งเป้ง
+โป้งโย้ง
+โปงลาง
+โป้งโล้ง
+โป่งวิด
+โป้งโหยง
+โปฐบท
+โปฐปทมาส
+โปดก
+โปตถกะ
+โปน
+โป้ปด
+โป๊ยเซียน
+โปรง
+โปร่ง
+โปร่งเปร่ง
+โปร่งฟ้า
+โปร่งแสง
+โปร่งใส
+โปรด
+โปรดปราน
+โปรดสัตว์
+โปรดสัตว์ได้บาป
+โปรตอน
+โปรตีน
+โปรเตสแตนต์
+โปรย
+โปรยปราย
+โปรีสภา
+โปล่ง
+โปลิโอ
+โปส
+โปสก
+โปสาวนิกมูล
+โปะ
+โป๊ะ
+โป๊ะจ้าย
+ไป
+ไป่
+ไป๋
+ไปค้าถ่าน
+ไปตายเอาดาบหน้า
+ไปทุ่ง
+ไปๆ มาๆ
+ไปย-
+ไปยาล
+ไปรษณีย-
+ไปรษณีย์
+ไปรษณียนิเทศ
+ไปรษณียบรรณ
+ไปรษณียบัตร
+ไปรษณียภัณฑ์
+ไปรษณีย์รับรอง
+ไปรษณียวัตถุ
+ไปรษณียากร
+ไปล่
+ไปล่ปลิว
+ไปลาด
+ไปวัดไปวาได้
+ไปศาจ
+ไปไหนมาสามวาสองศอก
+ไปอย่างน้ำขุ่นๆ
+ผ
+ผก
+ผกผงก
+ผกผัน
+ผกเรือก
+ผกา
+ผกากรอง
+ผกาย
+ผการาย
+ผคม
+ผง
+ผงก
+ผงขาว
+ผงเข้าตาตัวเอง
+ผงคลี
+ผงชูรส
+ผงซักฟอก
+ผงฟู
+ผงม
+ผงร
+ผงอน
+ผงอบ
+ผงะ
+ผงาด
+ผง่าน
+ผจง
+ผจญ
+ผจัญ
+ผจาน
+ผชุม
+ผณิน
+ผณินทร
+ผณินทรสมพัตสร
+ผณิศวร
+ผด
+ผดุง
+ผดุงครรภ์
+ผเดิน
+ผทม
+ผทมเพลิง
+ผนวก
+ผนวช
+ผนัง
+ผนิด
+ผนึก
+ผม
+ผมชิงเกิล
+ผมทรงมหาดไทย
+ผมทัด
+ผมนาง
+ผมบ๊อบ
+ผมปีก
+ผมเป๋
+ผมเปีย
+ผมโป่ง
+ผมไฟ
+ผมมหาดไทย
+ผมม้า
+ผมหลักแจว
+ผยอง
+ผย่ำเผยอ
+ผรณ-
+ผรณาปีติ
+ผรสุ
+ผริต
+ผริต-
+ผรุพก
+ผรุส-
+ผรุสวาท
+ผล
+ผลก
+ผลคุน
+ผลคุนี
+ผลคุนีบูรพมาส
+ผลง
+ผลพลอยได้
+ผลลัพธ์
+ผลอ
+ผล็อง
+ผล็อย
+ผละ
+ผลัก
+ผลัด
+ผลัดเปลี่ยน
+ผลัดแผ่นดิน
+ผลับ
+ผลัวะ
+ผลา
+ผลาญ
+ผลานิสงส์
+ผลาผล
+ผลาหาร
+ผลิ
+ผลิก-
+ผลิกศิขรี
+ผลิกศิลา
+ผลิกะ
+ผลิต
+ผลิต-
+ผลิตกรรม
+ผลิตผล
+ผลิตภัณฑ์
+ผลิน
+ผลี
+ผลีผลาม
+ผลึก
+ผลึ่ง
+ผลือ
+ผลุ
+ผลุง
+ผลุด
+ผลุน
+ผลุนผลัน
+ผลุบ
+ผลุบผลับ
+ผลุบโผล่
+ผลุบๆ โผล่ๆ
+ผลุย
+ผลู
+ผลูบด
+ผลูแบก
+ผวน
+ผวย
+ผวา
+ผสม
+ผสมเทียม
+ผสมผสาน
+ผสมผเส
+ผสมพันธุ์
+ผสมโรง
+ผสมเสร็จ
+ผสาน
+ผสาย
+ผสาร
+ผอก
+ผอง
+ผ่อง
+ผ่องแผ้ว
+ผ่องใส
+ผอด
+ผ่อน
+ผ่อนคลาย
+ผ่อนชำระ
+ผ่อนปรน
+ผ่อนผัน
+ผ่อนส่ง
+ผ่อนสั้นผ่อนยาว
+ผ่อนหนักเป็นเบา
+ผอบ
+ผอม
+ผอมเกร็ง
+ผอมโซ
+ผอมแห้ง
+ผ็อย
+ผ่อย
+ผอวด
+ผอูน
+ผะ
+ผะแคง
+ผะดา
+ผะสา
+ผะออบ
+ผัก
+ผักไก
+ผักขวง
+ผักขี้ขวง
+ผักโฉม
+ผักชี
+ผักชีโรยหน้า
+ผักตบชวา
+ผักต้มขนมยำ
+ผักทอดยอด
+ผักบุ้ง
+ผักบุ้งขัน
+ผักบุ้งจีน
+ผักบุ้งทะเล
+ผักบุ้งฝรั่ง
+ผักบุ้งร้วม
+ผักบุ้งรั้ว
+ผักเบี้ย
+ผักเบี้ยใหญ่
+ผักปลัง
+ผักปุ่มปลา
+ผักเผ็ด
+ผักไผ่
+ผักรู้นอน
+ผักแว่น
+ผักสาบ
+ผักสามหาว
+ผักเสี้ยน
+ผักหนอก
+ผักหนอง
+ผักหนาม
+ผักหวาน
+ผักหวานบ้าน
+ผักหวานป่า
+ผักไหม
+ผักอีแปะ
+ผัคคุณ
+ผัคคุณ-
+ผัคคุณมาส
+ผัคคุณี
+ผัง
+ผังเมือง
+ผัด
+ผัดเจ้าล่อ
+ผัดช้าง
+ผัดผ่อน
+ผัดผัน
+ผัดเพี้ยน
+ผัดวันประกันพรุ่ง
+ผัน
+ผันแปร
+ผันผยอง
+ผันผวน
+ผันผ่อน
+ผันผาด
+ผันผาย
+ผันหม้อ
+ผันอักษร
+ผับ
+ผับๆ
+ผัลคุนี
+ผัว
+ผัวหาบเมียคอน
+ผัวะ
+ผัสส-
+ผัสสะ
+ผัสสาหาร
+ผา
+ผ่า
+ผ้า
+ผาก
+ผากแผ้ง
+ผ้ากราบ
+ผ้าเกี้ยว
+ผ้าขาวม้า
+ผ้าขี้ริ้ว
+ผ้าขี้ริ้วห่อทอง
+ผาง
+ผ้าเช็ดตัว
+ผ้าเช็ดหน้า
+ผาณิต
+ผาด
+ผาดผัง
+ผาดแผลง
+ผาดโผน
+ผาดเพ่ง
+ผาดำ
+ผ้าดำ
+ผ้าดิบ
+ผ้าแดง
+ผ้าตา
+ผาติ
+ผาติกรรม
+ผ้าถุง
+ผ้าแถบ
+ผ้าทิพย์
+ผ้าเทศ
+ผ่าน
+ผ้านุ่ง
+ผ้าใบ
+ผ้าใบกลอย
+ผ้าใบเมี่ยง
+ผ้าป่า
+ผ้าผ่อน
+ผ่าเผย
+ผาเผือก
+ผ้าแฝง
+ผ้าพันคอ
+ผ้าพันแผล
+ผ้าพื้น
+ผาม
+ผ้ามัดหมี่
+ผาย
+ผ่าย
+ผ้าย
+ผายปอด
+ผ่ายผอม
+ผายผัง
+ผายผัน
+ผายลม
+ผ้ายาง
+ผาล
+ผาลคุน
+ผาลา
+ผาลาเพียงไหล่
+ผ้าลาย
+ผ้าลูกไม้
+ผ่าว
+ผาสามเส้า
+ผ้าสำลี
+ผาสุก
+ผ่าหมาก
+ผาหอม
+ผ้าห้อยหอ
+ผ่าเหล่า
+ผ้าเหลือง
+ผ้าเหลืองร้อน
+ผ้าไหว้
+ผ้าอนามัย
+ผ้าอ้อม
+ผ้าอาบ
+ผ้าฮาด
+ผำ
+ผ้ำๆ
+ผิ
+ผิง
+ผิด
+ผิดก
+ผิดใจ
+ผิดตา
+ผิดท่า
+ผิดนัก
+ผิดนัด
+ผิดน้ำ
+ผิดประหลาด
+ผิดผี
+ผิดผู้ผิดคน
+ผิดแผก
+ผิดฝาผิดตัว
+ผิดพ้องหมองใจ
+ผิดเพี้ยน
+ผิดเมีย
+ผิดรูปผิดร่าง
+ผิดสังเกต
+ผิดสำแลง
+ผิดเส้น
+ผิดหวัง
+ผิดหู
+ผิดหูผิดตา
+ผิต
+ผิน
+ผินหลังให้
+ผิว
+ผิวน้ำ
+ผิวบาง
+ผิวปาก
+ผิวเผิน
+ผิวพรรณ
+ผิวหนัง
+ผิว่า
+ผี
+ผีเข้าผีออก
+ผีซ้ำด้ำพลอย
+ผีดิบ
+ผีต
+ผีตองเหลือง
+ผีตากผ้าอ้อม
+ผีถ้วยแก้ว
+ผีถึงป่าช้า
+ผีบ้านไม่ดี ผีป่าก็พลอย
+ผีบุญ
+ผีพุ่งไต้
+ผีเพลีย
+ผีฟ้า
+ผีไม่มีศาล
+ผีเรือน
+ผีเรือนไม่ดี ผีป่าก็พลอย
+ผี้ว์
+ผีเสื้อ
+ผีเสื้อเงิน
+ผีเสื้อน้อย
+ผีเสื้อน้ำ
+ผีเสื้อยักษ์
+ผีหลอก
+ผีอำ
+ผึง
+ผึ่ง
+ผึ้ง
+ผึ่งผาย
+ผึ้งรวง
+ผืน
+ผื่น
+ผุ
+ผุด
+ผุดผ่อง
+ผุดผาด
+ผุดผาย
+ผุดผ้าย
+ผุดลุกผุดนั่ง
+ผุยผง
+ผุสราคา
+ผู้
+ผูก
+ผูกกระได
+ผูกขวัญ
+ผูกขาด
+ผูกดวง
+ผูกดอก
+ผูกพัทธสีมา
+ผูกพัน
+ผูกภาษี
+ผูกมัด
+ผู้กว้างขวาง
+ผูกหู
+ผู้ก่อการร้าย
+ผู้คน
+ผู้จัดการ
+ผู้ชาย
+ผู้ชายพายเรือ
+ผู้ชำนาญการพิเศษ
+ผู้เชี่ยวชาญ
+ผู้ญาณ
+ผู้ดี
+ผู้ดีแปดสาแหรก
+ผู้โดยสาร
+ผู้ต้องขัง
+ผู้ต้องหา
+ผู้ทรง
+ผู้แทนเฉพาะคดี
+ผู้แทนโดยชอบธรรม
+ผู้แทนราษฎร
+ผู้ไทย
+ผู้น้อย
+ผู้เป็นหุ้นส่วน
+ผู้พิทักษ์สันติราษฎร์
+ผู้เยาว์
+ผู้รั้ง
+ผู้รับประกันภัย
+ผู้รับประโยชน์
+ผู้รับเรือน
+ผู้รับเหมาก่อสร้าง
+ผู้ร้าย
+ผู้ลากมากดี
+ผู้วิเศษ
+ผู้สำเร็จ
+ผู้สืบตระกูล
+ผู้สืบสันดาน
+ผู้สื่อข่าว
+ผู้เสียหาย
+ผู้หญิง
+ผู้หญิงยิงเรือ
+ผู้ใหญ่
+ผู้ใหญ่บ้าน
+ผู้อนุบาล
+ผู้เอาประกันภัย
+เผ
+เผง
+เผชิญ
+เผชิญภัย
+เผชิญหน้า
+เผ็ด
+เผด็จ
+เผด็จการ
+เผ็ดร้อน
+เผดิม
+เผดียง
+เผน-
+เผ่น
+เผนธรรม
+เผนิก
+เผย
+เผยแผ่
+เผยแพร่
+เผยอ
+เผยิบ
+เผยิบผยาบ
+เผล
+เผล่
+เผล้
+เผล็ด
+เผลอ
+เผลอไผล
+เผละ
+เผลาะ
+เผลาะแผละ
+เผลียง
+เผอเรอ
+เผอเรอกระเชอก้นรั่ว
+เผอิญ
+เผอิล
+เผะ
+เผา
+เผ่า
+เผ้า
+เผาขน
+เผาจริง
+เผ้าผง
+เผ่าพันธุ์
+เผาหลอก
+เผาหัว
+เผาะ
+เผิ้ง
+เผิน
+เผินๆ
+เผียน
+เผือ
+เผื่อ
+เผือก
+เผือกกะลา
+เผือกโทป้าด
+เผื่อขาดเผื่อเหลือ
+เผือด
+เผือน
+เผื่อน
+เผื่อแผ่
+เผื่อว่า
+เผื่อเหนียว
+เผื่อเหลือเผื่อขาด
+แผ่
+แผก
+แผ่กระจาด
+แผง
+แผงคอ
+แผงลอย
+แผ่แง่
+แผ่ซ่าน
+แผด
+แผ่ตน
+แผน
+แผ่น
+แผนก
+แผนการ
+แผนงาน
+แผ่นดิน
+แผ่นดินกลบหน้า
+แผ่นดินไหว
+แผนที่
+แผ่นผงอน
+แผนผัง
+แผ่นพก
+แผ่นภพ
+แผนภาพ
+แผนภูมิ
+แผ่นเสียง
+แผ่เผื่อ
+แผ่เมตตา
+แผล
+แผลเก่า
+แผลง
+แผลงฤทธิ์
+แผล็บ
+แผล็บๆ
+แผลเป็น
+แผลริมแข็ง
+แผลริมอ่อน
+แผล็ว
+แผละ
+แผ่ว
+แผ่วๆ
+แผ้ว
+แผ้วพาน
+แผ่สองสลึง
+แผ่หลา
+แผ่อำนาจ
+โผ
+โผง
+โผงผาง
+โผงเผง
+โผฏฐัพ-
+โผฏฐัพธรรม
+โผฏฐัพพะ
+โผน
+โผเผ
+โผย
+โผล่
+โผลกเผลก
+โผละ
+โผอน
+โผะ
+ไผ
+ไผ่
+ไผท
+ไผทโกรม
+ไผ่ผัง
+ฝ
+ฝน
+ฝนชะช่อมะม่วง
+ฝนชะลาน
+ฝนซู่
+ฝนตกก็แช่ง ฝนแล้งก็ด่า
+ฝนตกขี้หมูไหล
+ฝนตกไม่ทั่วฟ้า
+ฝนตกไม่มีเค้า
+ฝนตกอย่าเชื่อดาว
+ฝนทอง
+ฝนทั่งให้เป็นเข็ม
+ฝนเทียม
+ฝนไล่ช้าง
+ฝนสั่งฟ้า
+ฝนสั่งฟ้า ปลาสั่งหนอง
+ฝนแสนห่า
+ฝนห่าแก้ว
+ฝรั่ง
+ฝรั่งกังไส
+ฝรั่งขี้นก
+ฝรั่งมังค่า
+ฝรั่งเศส
+ฝ่อ
+ฝอย
+ฝอยทอง
+ฝัก
+ฝักแค
+ฝักถั่ว
+ฝักบัว
+ฝักฝ่าย
+ฝักใฝ่
+ฝักพร้า
+ฝักเพกา
+ฝักมะขาม
+ฝักยาว
+ฝัง
+ฝั่ง
+ฝังเข็ม
+ฝังใจ
+ฝั่งฝา
+ฝังรกฝังราก
+ฝังรอย
+ฝังรูป
+ฝังหัว
+ฝัด
+ฝัน
+ฝันกลางวัน
+ฝันเปียก
+ฝันเฟื่อง
+ฝา
+ฝ่า
+ฝ้า
+ฝาก
+ฝากกอง
+ฝากกาย
+ฝากไข้
+ฝากครรภ์
+ฝากตัว
+ฝากท้อง
+ฝากเนื้อฝากตัว
+ฝากเนื้อไว้กับเสือ
+ฝากบำเรอ
+ฝากประจำ
+ฝากปลาไว้กับแมว
+ฝากผี
+ฝากผีฝากไข้
+ฝากเผื่อเรียก
+ฝากฝัง
+ฝากระดาน
+ฝากโรงเรียน
+ฝากไว้ก่อน
+ฝากสู่
+ฝ่าคมหอกคมดาบ
+ฝาง
+ฝาชี
+ฝาด
+ฝาน
+ฝ่าฝืน
+ฝาแฝด
+ฝ่าพระบาท
+ฝ่าฟัน
+ฝ่ามรสุม
+ฝาย
+ฝ่าย
+ฝ้าย
+ฝ่ายขวา
+ฝ่ายค้าน
+ฝ้ายคำ
+ฝ่ายซ้าย
+ฝ่ายใน
+ฝ่ายเป็นกลาง
+ฝ้ายผี
+ฝ่ายเสนอ
+ฝ่ายหน้า
+ฝาละมี
+ฝาสายบัว
+ฝาสำหรวด
+ฝาเสี้ยว
+ฝาหอยโข่ง
+ฝาหุ้มกลอง
+ฝาไหล
+ฝิ่น
+ฝิ่นต้น
+ฝี
+ฝี่
+ฝีก
+ฝีกาฬ
+ฝีจัก
+ฝีจักร
+ฝีดาษ
+ฝีดิบ
+ฝีเท้า
+ฝีในท้อง
+ฝีปาก
+ฝีพาย
+ฝีมะม่วง
+ฝีมือ
+ฝีไม้ลายมือ
+ฝีเย็บ
+ฝีหมอบ
+ฝึก
+ฝึกงาน
+ฝึกปรือ
+ฝึกฝน
+ฝึกสอน
+ฝึกหัด
+ฝืด
+ฝืดเคือง
+ฝืน
+ฝืนท้อง
+ฝุ่น
+ฝุ่นเมือง
+ฝูง
+ฝูงบิน
+เฝ้า
+เฝ้าไข้
+เฝ้าคอย
+เฝ้าแหน
+เฝือ
+เฝือก
+เฝือง
+เฝื่อน
+แฝก
+แฝกหอม
+แฝง
+แฝด
+แฝดน้ำ
+แฝดเลือด
+ใฝ่
+ใฝ่ใจ
+ใฝ่ต่ำ
+ใฝ่ฝัน
+ใฝ่ร้อนจะนอนเย็น ใฝ่เย็นจะดิ้นตาย
+ใฝ่สูง
+ใฝ่สูงจนเกินศักดิ์
+ใฝ่สูงให้เกินศักดิ์
+ไฝ
+พ
+พก
+พกจร
+พกนุ่น
+พกพ่าย
+พกลม
+พกหิน
+พกา
+พกุระ
+พกุล
+พง
+พงพี
+พงศ-
+พงศ์
+พงศกร
+พงศธร
+พงศ์พันธุ์
+พงศา
+พงศาวดาร
+พงศาวลี
+พจน-
+พจน์
+พจนา
+พจนานุกรม
+พจนารถ
+พจนีย์
+พจมาน
+พจี
+พชระ
+พญา
+พญากาสัก
+พญาขามป้อม
+พญาฉัททันต์
+พญาช้างเผือก
+พญาณ
+พญาดาบหัก
+พญาเดิน
+พญาไทย
+พญาปากกว้าง
+พญาแปแล
+พญาพยาต
+พญาไฟ
+พญามะขามป้อม
+พญามือเหล็ก
+พญามุตติ
+พญามูมิน
+พญาไม้
+พญายา
+พญารากดำ
+พญารากเดียว
+พญาไร้ใบ
+พญาลอ
+พญาโศก
+พญาสัตบรรณ
+ฯพณฯ
+พณิช
+พณิชย์
+พด
+พดกริช
+พดด้วง
+พธู
+พน
+พน-
+พ่น
+พ้น
+พนขัณฑ์
+พนโคจร
+พนจร
+พนจรก
+พนชีวี
+พนธารา
+พนม
+พนมเพลิง
+พนมศก
+พนมศพ
+พนมสวรรค์
+พนวาสี
+พ้นวิสัย
+พนสณฑ์
+พนอง
+พนอม
+พนัก
+พนักงาน
+พนักงานเจ้าหน้าที่
+พนักงานสอบสวน
+พนักงานอัยการ
+พนัง
+พนัน
+พนันดร
+พนัส
+พนัส-
+พนัสดม
+พนัสบดี
+พนา
+พนาด
+พนาดร
+พนาดอน
+พนาธวา
+พนานดร
+พนาย
+พนาราม
+พนาลัย
+พนาลี
+พนาวา
+พนาวาส
+พนาเวศ
+พนาศรม
+พนาศรัย
+พนาสณฑ์
+พนาสัณฑ์
+พนิดา
+พนิต
+พนียก
+พเนก
+พเนจร
+พบ
+พบปะ
+พบพาน
+พบไม้งามเมื่อขวานบิ่น
+พบู
+พม่า
+พม่าแทงกบ
+พม่ารำขวาน
+พยช
+พยชน์
+พยติเรก
+พยนต์
+พยศ
+พยัก
+พยักพเยิด
+พยักยิ้ม
+พยัคฆ-
+พยัคฆ์
+พยัคฆา
+พยัคฆิน
+พยัคฆินทร์
+พยัคฆี
+พยัคเฆนทร์
+พยัชน์
+พยัญชนะ
+พยัต
+พยับ
+พยับแดด
+พยับฝน
+พยับเมฆ
+พยับหมอก
+พยากรณ์
+พยาฆร์
+พยางค์
+พยาธิ
+พยาน
+พยาบาท
+พยาบาล
+พยาม
+พยายาม
+พยาล
+พยาล-
+พยาลมฤค
+พยุ
+พยุง
+พยุงปีก
+พยุห-
+พยุหบาตร
+พยุหบาตรา
+พยุหยาตรา
+พยุหโยธา
+พยุหร
+พยุหเสนา
+พยุหแสนยา
+พยุหแสนยากร
+พยุหะ
+พยู่ห์
+พเยีย
+พร
+พรต
+พรม
+พรมคด
+พรมคดตีนเต่า
+พรมแดน
+พรมน้ำมัน
+พรมนิ้ว
+พรมมิ
+พรรค
+พรรค-
+พรรค์
+พรรคกลิน
+พรรคการเมือง
+พรรคนาวิกโยธิน
+พรรคนาวิน
+พรรคพวก
+พรรคานต์
+พรรณ
+พรรณนา
+พรรณราย
+พรรดึก
+พรรลาย
+พรรษ
+พรรษ-
+พรรษประเวศ
+พรรษฤดู
+พรรษวุฒิ
+พรรษา
+พรรษากาล
+พรรษาคม
+พรรษายุต
+พรรโษทก
+พรรโษบล
+พรรเหา
+พรรเอิญ
+พรวงเพรียง
+พรวด
+พรวดพราด
+พรวน
+พรสวรรค์
+พรหม
+พรหม-
+พรหมกาย
+พรหมโคล
+พรหมจรรย์
+พรหมจักร
+พรหมจาริณี
+พรหมจารี
+พรหมชาติ
+พรหมทัณฑ์
+พรหมไทย
+พรหมธาดา
+พรหมบถ
+พรหมบท
+พรหมบริษัท
+พรหมบุตร
+พรหมปุโรหิต
+พรหมพักตร์
+พรหมพันธุ์
+พรหมภูติ
+พรหมยาน
+พรหมเรขา
+พรหมฤษี
+พรหมลิขิต
+พรหมวิหาร
+พรหมศร
+พรหมสี่หน้า
+พรหมสูตร
+พรหมหัวเหม็น
+พรหมโองการ
+พรหมัญตา
+พรหมา
+พรหมาณฑ์
+พรหมาสตร์
+พรหมินทร์
+พรหเมนทร์
+พรหเมศวร
+พรอก
+พร่อง
+พร้อง
+พร้องเพรียก
+พรอด
+พร้อม
+พร่อมพร้อ
+พร้อมพรัก
+พร้อมพรั่ง
+พร้อมเพรียง
+พร้อมมูล
+พร้อมหน้า
+พร้อมหน้าพร้อมตา
+พร่อย
+พร้อย
+พระ
+พระกรน้อย
+พระครู
+พระคุณเจ้า
+พระเคราะห์
+พระเครื่อง
+พระจันทร์ครึ่งซีก
+พระเจ้า
+พระเจ้าลอยถาด
+พระเจ้าหลวง
+พระเจ้าห้าพระองค์
+พระเจ้าอยู่หัว
+พระเดชพระคุณ
+พระทอง
+พระทัย
+พระธรรมศาสตร์
+พระนม
+พระนอม
+พระนาง
+พระนางเจ้า
+พระนางเธอ
+พระนาด
+พระนาย
+พระบฏ
+พระบท
+พระประธาน
+พระเป็นเจ้า
+พระผู้เป็นเจ้า
+พระแผง
+พระพิมพ์
+พระพุทธเจ้า
+พระพุทธเจ้าข้า
+พระพุทธเจ้าข้าขอรับ
+พระพุทธเจ้าข้าขอรับใส่เกล้าใส่กระหม่อม
+พระพุทธเจ้าหลวง
+พระพุทธเจ้าอยู่หัว
+พระพุทธองค์
+พระภูมิ
+พระมาลัยมาโปรด
+พระยา
+พระยาเทครัว
+พระยาเล็บครุฑ
+พระยาวัน
+พระรอง
+พระราชกฤษฎีกา
+พระราชกำหนด
+พระราชบัญญัติ
+พระรูป
+พระรูปชี
+พระฤๅษี
+พระลบ
+พระลือ
+พระแวว
+พระศุกร์เข้าพระเสาร์แทรก
+พระหา
+พระหาม
+พระหารณย์
+พระหารัณย์
+พระหิด
+พระองค์
+พระองค์เจ้า
+พระอันดับ
+พระอิฐพระปูน
+พระเอก
+พระฮาม
+พรักพร้อม
+พรั่ง
+พรั่งพร้อม
+พรั่งพรู
+พรัด
+พรั่น
+พรั่นพรึง
+พรับ
+พร่า
+พร้า
+พราก
+พรากเด็ก
+พรากผู้เยาว์
+พรากลูกนกลูกกา
+พราง
+พร่าง
+พรางพรอก
+พร้างัดปากไม่ออก
+พราด
+พราน
+พราย
+พรายทะเล
+พรายน้ำ
+พรายแพรว
+พรายย้ำ
+พราว
+พราวแพรว
+พราหมณ์
+พราหมณ์เก็บหัวแหวน
+พราหมณ์ขายเมีย
+พราหมณ์ดีดน้ำเต้า
+พราหมณัศบดี
+พราหมณี
+พราหมี
+พรำ
+พรำๆ
+พร่ำ
+พร้ำ
+พร่ำพลอด
+พร่ำเพรื่อ
+พร่ำเพ้อ
+พริก
+พริกกระต่าย
+พริกกะเกลือ
+พริกแกว
+พริกขิง
+พริกดอง
+พริกเทศ
+พริกไทย
+พริกน้ำส้ม
+พริกหอม
+พริกเหลือง
+พริ้ง
+พริ้งพราย
+พริ้งเพริศ
+พริบ
+พริบตาเดียว
+พริบไหว
+พริ้ม
+พริ้มพราย
+พริ้มเพรา
+พรึง
+พรึน
+พรึบ
+พรืด
+พรุ
+พรุก
+พรุ่ง
+พรุ่งนี้
+พรุน
+พรู
+พรูด
+พฤกษ-
+พฤกษ์
+พฤกษชาติ
+พฤกษทล
+พฤกษเทวดา
+พฤกษราช
+พฤกษศาสตร์
+พฤกษา
+พฤฒ
+พฤฒา
+พฤฒาจารย์
+พฤฒิ
+พฤฒิ-
+พฤฒิบาศ
+พฤต
+พฤติ
+พฤติ-
+พฤติกรรม
+พฤติการณ์
+พฤตินัย
+พฤทธ์
+พฤทธิ์
+พฤนต์
+พฤนท์
+พฤภูษณ
+พฤภูษิต
+พฤศจิก
+พฤศจิกายน
+พฤษภ
+พฤษภาคม
+พฤหัสบดี
+พฤหัสบดีจักร
+พล
+พล-
+พลกาย
+พลการ
+พลขันธ์
+พลความ
+พลตระเวน
+พลเทพ
+พลบ
+พลเมือง
+พลเรือน
+พลโลก
+พลว-
+พลวก
+พลวง
+พลวดกินลูก
+พลวดใหญ่
+พลวัต
+พลศาสตร์
+พลศึกษา
+พลสิงห์
+พลอ
+พล้อ
+พลอง
+พลอด
+พลอดรัก
+พลอน
+พลอมแพลม
+พลอย
+พล่อย
+พลอยฟ้าพลอยฝน
+พละ
+พละพลา
+พลั่ก
+พลัง
+พลั่ง
+พลั้ง
+พลังงาน
+พลังงานจลน์
+พลังงานศักย์
+พลังจิต
+พลั้งปาก
+พลั้งปากเสียศีล พลั้งตีนตกต้นไม้
+พลั้งเผลอ
+พลัด
+พลัดถิ่น
+พลัดที่นาคาที่อยู่
+พลัดพราก
+พลัน
+พลับ
+พลับเขา
+พลับพลา
+พลับพลึง
+พลั่ว
+พล่า
+พลากร
+พลาง
+พลาญ
+พลาด
+พลาดท่า
+พลาดิศัย
+พลาธิการ
+พล่าน
+พลานามัย
+พลานึก
+พลาม
+พล่าม
+พลาย
+พลายม้า
+พลาสติก
+พลาสมา
+พลาหก
+พลำ
+พล้ำ
+พลำภัง
+พลิ
+พลิก
+พลิกกระเป๋า
+พลิกแผ่นดิน
+พลิกแพลง
+พลิกศพ
+พลิกหน้ามือเป็นหลังมือ
+พลิพัท
+พลิ้ว
+พลี
+พลีกรรม
+พลีมุข
+พลุ
+พลุก
+พลุ่ก
+พลุกพล่าน
+พลุ่ง
+พลุ้น
+พลุ่มพล่าม
+พลุ่ย
+พลุ้ย
+พลู
+พลูแก
+พลูคาว
+พลูต้น
+พลูโต
+พลูโทเนียม
+พวก
+พวกพ้อง
+พวง
+พ่วง
+พวงโกเมน
+พวงคราม
+พวงชมพู
+พวงดอกไม้
+พ่วงพี
+พวงมาลัย
+พวงมาลา
+พวงแสด
+พวงหยก
+พวงหรีด
+พวงอุไร
+พวน
+พวย
+พวยน้ำ
+พวยพุ่ง
+พสก
+พสก-
+พสกนิกร
+พสน
+พสุ
+พสุธา
+พสุธาดล
+พสุนธรา
+พสุมดี
+พสุสงกรานต์
+พหล
+พหุ
+พหุคูณ
+พหุพจน์
+พหุภาคี
+พหุล
+พหู
+พหูพจน์
+พหูสูต
+พอ
+พ่อ
+พ้อ
+พอก
+พอกพูน
+พอกัน
+พอกันที
+พอการ
+พอก้าวขาก็ลาโรง
+พ่อเกลอ
+พ่อขุน
+พ่อครัว
+พอควร
+พ่อค้าตีเมีย
+พ่อคุณ
+พอง
+พ้อง
+พ้องพาน
+พ่อเจ้า
+พ่อแจ้แม่อู
+พอใจ
+พอใช้
+พอใช้ได้
+พอดี
+พอดีพอร้าย
+พอดู
+พอดูได้
+พอได้
+พอตัว
+พ่อตา
+พอทำเนา
+พอทำพอกิน
+พอที
+พอที่
+พอน
+พอนเรือ
+พ่อบ้าน
+พอประมาณ
+พอไปได้
+พ่อพวงมาลัย
+พอฟัด
+พอฟัดพอเหวี่ยง
+พ้อม
+พ่อม่าย
+พอมีพอกิน
+พอมีอันจะกิน
+พ่อเมือง
+พอยกขาก็ลาโรง
+พอแย้มปากก็เห็นไรฟัน
+พ่อร้าง
+พ่อเรือน
+พอแรง
+พ่อลิ้นทอง
+พ่อเลี้ยง
+พอเลี้ยงปากเลี้ยงท้อง
+พอโลเนียม
+พอสถานประมาณ
+พ่อสื่อ
+พอหอมปากหอมคอ
+พอเหมาะ
+พออ้าปากก็เห็นลิ้นไก่
+พะ
+พ่ะ
+พะงา
+พะงาบ
+พะงาบๆ
+พะจง
+พะทำมะรง
+พะนอ
+พะเน้าพะนอ
+พะเน้าพะนึง
+พะเนิน
+พะเนินเทินทึก
+พะเนียง
+พะแนง
+พะพาน
+พะพิง
+พะเพิง
+พะยอม
+พ่ะย่ะค่ะ
+พะยุพยุง
+พะยูง
+พะยูน
+พะเยิบ
+พะเยิบๆ
+พะเยิบพะยาบ
+พะรุงพะรัง
+พะเลย
+พะโล้
+พะไล
+พะวง
+พะวักพะวน
+พะวา
+พะว้าพะวัง
+พะอง
+พะอากพะอำ
+พะอืดพะอม
+พัก
+พักตร-
+พักตร์
+พักตรา
+พักตรากฤติ
+พักตา
+พักผ่อน
+พักพิง
+พักแพว
+พักฟื้น
+พักร
+พักสมอง
+พัง
+พังกา
+พังคา
+พังงา
+พังผืด
+พังพวย
+พังพอน
+พังพาน
+พังพาบ
+พังเพย
+พัช
+พัชนี
+พัชร
+พัญจก
+พัญจน์
+พัฒกี
+พัฒน-
+พัฒนะ
+พัฒนา
+พัฒนากร
+พัฒนาการ
+พัด
+พัดชัก
+พัดชา
+พัดดึงส์
+พัดโบก
+พัดแพว
+พัดยศ
+พัดลม
+พัดหลวง
+พัตติงสะ
+พัตร
+พัทธ-
+พัทธ์
+พัทธยา
+พัทธยากร
+พัทธสีมา
+พัทร
+พัน
+พันงู
+พันจ่า
+พันจำ
+พันไฉน
+พันซาด
+พันตัน
+พันตา
+พันตู
+พันทาง
+พันธ-
+พันธ์
+พันธกรณี
+พันธน-
+พันธนะ
+พันธนาการ
+พันธนาคาร
+พันธนำ
+พันธบัตร
+พันธมิตร
+พันธะ
+พันธุ
+พันธุ์
+พันเนตร
+พันปี
+พันพัว
+พันลอก
+พันลาย
+พันลำ
+พันลึก
+-พันลือ
+พันเลิศ
+พันวรรษา
+พันแสง
+พันเอิญ
+พับ
+พับเขียง
+พับฐาน
+พับผ้า
+พับเพียบ
+พับแพนงเชิง
+พัลลภ
+พัลวัน
+พัว
+พัวพัน
+พัวะ
+พัศดี
+พัสดุ
+พัสดุไปรษณีย์
+พัสดุภัณฑ์
+พัสเดา
+พัสตร์
+พัสถาน
+พา
+พาก
+พากเพียร
+พากย์
+พากย์หนัง
+พาง
+พ่าง
+พาชี
+พาซื่อ
+พาณ
+พาณ-
+พาณโยชน์
+พาณวาร
+พาณาสน์
+พาณิช
+พาณิชย์
+พาณินี
+พาณี
+พาด
+พาดควาย
+พาดไฉน
+พาดพิง
+พาดหัวข่าว
+พาต
+พาท
+พาทย์
+พาธ
+พาธา
+พาน
+พ่าน
+พานกลีบบัว
+พานปากกระจับ
+พานร
+พานรินทร์
+พานเรศ
+พานแว่นฟ้า
+พาม
+พาย
+พ่าย
+พายม้า
+พายเรือคนละที
+พายเรือทวนน้ำ
+พายเรือในหนอง
+พายเรือในอ่าง
+พายัพ
+พายุ
+พาร์เซก
+พารณ
+พารณะ
+พารา
+พาราฟิน
+พาล
+พาลกระแชง
+พาลรีพาลขวาง
+พาลา
+พาลี
+พาลีหลายหน้า
+พาลุก
+พาโล
+พาไล
+พาส
+พาสน์
+พาสนา
+พาสุกรี
+พาห
+พ่าห์
+พาหนะ
+พาหะ
+พาหา
+พาหิรกะ
+พาหิระ
+พาหุ
+พาหุยุทธ์
+พาหุรัด
+พาเหียร
+พาฬ
+พาฬ-
+พาฬมฤค
+พาฬหะ
+พำ
+พำนัก
+พำพวก
+พำพึม
+พำๆ พึมๆ
+พำลา
+พิกล
+พิกเลนทรีย์
+พิกสิต
+พิกัด
+พิกัดอัตราศุลกากร
+พิกัติ
+พิกัน
+พิการ
+พิกุล
+พิกุลป่า
+พิเคราะห์
+พิฆน์
+พิฆเนศ
+พิฆเนศวร
+พิฆาต
+พิง
+พิจย
+พิจล
+พิจัย
+พิจาร
+พิจารณ์
+พิจารณา
+พิจิก
+พิจิต
+พิจิตร
+พิชญ์
+พิชย
+พิชัย
+พิชัยสงคราม
+พิชาน
+พิชิต
+พิชิต-
+พิชิตมาร
+พิเชฐ
+พิเชียร
+พิฑูรย์
+พิณ
+พิณพาทย์
+พิดทูล
+พิดรก
+พิดาน
+พิโดร
+พิตร
+พิถย-
+พิถยันดร
+พิถี
+พิถีพิถัน
+พิทย-
+พิทย์
+พิทยา
+พิทยาคม
+พิทยาคาร
+พิทยาธร
+พิทยาพล
+พิทยาลัย
+พิทักษ์
+พิทักษ์สันติ
+พิทูร
+พิเทศ
+พิธาน
+พิธี
+พิธีกร
+พิธีกรรม
+พิธีการ
+พิธีจุ่ม
+พิธีแตก
+พิธีธรรม
+พิธีมณฑล
+พิธีรีตอง
+พิธีสาร
+พิธุ
+พิธุร
+พินทุ
+พินทุกัป
+พินทุสร
+พินพง
+พิ่นพั่ง
+พินอบพิเทา
+พินัย
+พินัยกรรม
+พินาศ
+พินิจ
+พินิต
+พินิศ
+พินิศจัย
+พิเนต
+พิบัติ
+พิบาก
+พิบุล
+พิบูล
+พิปริต
+พิปลาส
+พิปัสสนา
+พิพรรธ
+พิพรรธน์
+พิพักพิพ่วน
+พิพัฒ
+พิพัฒน์
+พิพากษ์
+พิพากษา
+พิพาท
+พิพิธ
+พิพิธ-
+พิพิธภัณฑ์
+พิพิธภัณฑสถาน
+พิภพ
+พิภัช
+พิภาค
+พิภูษณะ
+พิเภก
+พิมปะการัง
+พิมพ-
+พิมพ์
+พิมพการัง
+พิมพ์เขียว
+พิมพ์ใจ
+พิมพ์ดีด
+พิมพ์ทอง
+พิมพ์ลายมือ
+พิมพ์สัมผัส
+พิมพา
+พิมพาภรณ์
+พิมโพหนะ
+พิมล
+พิมเสน
+พิมาน
+พิมุข
+พิโมกข์
+พิโมกษ์
+พิโยกพิเกน
+พิโยค
+พิร
+พิรอด
+พิรากล
+พิราบ
+พิราม
+พิราลัย
+พิริย-
+พิริยพฤนท์
+พิริยโยธา
+พิริยะ
+พิรี้พิไร
+พิรุณ
+พิรุธ
+พิรุฬห์
+พิเราะ
+พิโรธ
+พิโรธนะ
+พิไร
+พิลังกาสา
+พิลาป
+พิลาลส
+พิลาส
+พิลิปดา
+พิลึก
+พิลึกกึกกือ
+พิลึกพิลั่น
+พิโลน
+พิโลล
+พิไล
+พิศ
+พิศวง
+พิศวาส
+พิศาล
+พิศุทธ์
+พิศุทธิ์
+พิเศษ
+พิษ
+พิษ-
+พิษฐาน
+พิษนาศน์
+พิษสง
+พิษสมโยค
+พิษสุนัขบ้า
+พิษสุราเรื้อรัง
+พิสดาร
+พิสมร
+พิสมัย
+พิสมัยเรียงหมอน
+พิสัง
+พิสัช
+พิสัญญี
+พิสัย
+พิสิฐ
+พิสุทธิ์
+พิสูจน์
+พิหค
+พิหเคนทร์
+พิหาร
+พิฬาร
+พี
+พี่
+พี้
+พีชคณิต
+พี่น้อง
+พี่เบิ้ม
+พี้โพ้
+พีร-
+พีระมิด
+พี่เลี้ยง
+พึง
+พึ่ง
+พึ่งจมูกคนอื่นหายใจ
+พึงใจ
+พึงตา
+พึ่งลำแข้งตัวเอง
+พึ่บ
+พึม
+พึมพำ
+พืช
+พืชคาม
+พืชชั้นต่ำ
+พืชชั้นสูง
+พืชพันธุ์
+พืด
+พื้น
+พื้นๆ
+พื้นความรู้
+พื้นฐาน
+พื้นดี
+พื้นเดิม
+พื้นที่
+พื้นบ้าน
+พื้นเพ
+พื้นเมือง
+พื้นเสีย
+พุ
+พุก
+พุกาม
+พุง
+พุ่ง
+พุงแก
+พุงจง
+พุงดอ
+พุงทะลาย
+พุงปลา
+พุงปลาช่อน
+พุงพวง
+พุงพ่วง
+พุ่งหลาว
+พุ่งหอกเข้ารก
+พุ่งแหลน
+พุฒ
+พุฒิ
+พุด
+พุดตาน
+พุทธ
+พุทธ-
+พุทธกาล
+พุทธคุณ
+พุทธจักร
+พุทธเจดีย์
+พุทธชาด
+พุทธฎีกา
+พุทธตันตระ
+พุทธปฏิมา
+พุทธปฏิมากร
+พุทธมามกะ
+พุทธรักษา
+พุทธศักราช
+พุทธศาสนิกชน
+พุทธสมัย
+พุทธะ
+พุทธังกูร
+พุทธันดร
+พุทธางกูร
+พุทธาวาส
+พุทธิ
+พุทธุปบาทกาล
+พุทโธ่
+พุทรา
+พุธ
+พุพอง
+พุ่ม
+พุ่มข้าวบิณฑ์
+พุ่มพวง
+พุ่มม่าย
+พุมเรียง
+พุ้ย
+พู
+พู่
+พู่กลิ่น
+พู่กัน
+พูกาม
+พูด
+พูดคล่องเหมือนล่องน้ำ
+พูดจนลิงหลับ
+พูดจริงทำจริง
+พูดเป็นต่อยหอย
+พูดเป็นนัย
+พูดเป็นน้ำไหลไฟดับ
+พูดเป็นไฟ
+พูดไปสองไพเบี้ย นิ่งเสียตำลึงทอง
+พูดอย่างมะนาวไม่มีน้ำ
+พูน
+พู้น
+พูพอน
+พู่ระหง
+เพ
+เพ็ก
+เพกา
+เพคะ
+เพ็ง
+เพ่ง
+เพ่งเล็ง
+เพ็จ
+เพ็จไม้
+เพชฉลูกรรม
+เพชฌฆาต
+เพชร
+เพชร-
+เพชรกลับ
+เพชรซีก
+เพชรดา
+เพชรตัดเพชร
+เพชรตาแมว
+เพชรน้ำค้าง
+เพชรน้ำหนึ่ง
+เพชรนิลจินดา
+เพชรปาณี
+เพชรร่วง
+เพชรร้าว
+เพชรฤกษ์
+เพชรลูก
+เพชรสังฆาต
+เพชรหลีก
+เพชรหึง
+เพชรายุธ
+เพ็ญ
+เพฑูริย์
+เพณี
+เพ็ดทูล
+เพดาน
+เพดานบิน
+เพตร
+เพท
+เพทนา
+เพทาย
+เพทุบาย
+เพโท
+เพโทบาย
+เพ่นพ่าน
+เพนียด
+เพไนย
+เพ้ย
+เพรง
+เพรซีโอดิเมียม
+เพรา
+เพรางาย
+เพราพริ้ง
+เพราเพริศ
+เพราะ
+เพราะฉะนั้น
+เพราะว่า
+เพริด
+เพริศ
+เพริศพราย
+เพริศพริ้ง
+เพริศแพร้ว
+เพรียก
+เพรียกพร้อง
+เพรียง
+เพรียงคอห่าน
+เพรียงเมือง
+เพรียบ
+เพรี้ยม
+เพรี้ยมพราย
+เพรียว
+เพรียวลม
+เพรื่อ
+เพรือง
+เพล
+เพลง
+เพลงเชิด
+เพลงตระเชิญ
+เพลงยาว
+เพลงสาธุการ
+เพลงเสมอ
+เพลงหน้าพาทย์
+เพล็ด
+เพล้โพล้
+เพลา
+เพลาะ
+เพลาะแพละ
+เพลิง
+เพลิงกัลป์
+เพลิงฟ้า
+เพลิดเพลิน
+เพลิน
+เพลีย
+เพลี้ย
+เพลี่ยง
+เพลี่ยงพล้ำ
+เพลียใจ
+เพศ
+เพศยันดร
+เพส
+เพสลาด
+เพ่อ
+เพ้อ
+เพ้อเจ้อ
+เพอิญ
+เพะ
+เพา
+เพาพะงา
+เพาพาล
+เพาะ
+เพิก
+เพิกเฉย
+เพิกถอน
+เพิง
+เพิ่ง
+เพิดเพ้ย
+เพิ่ม
+เพิ่มเติม
+เพิ่มพูน
+เพี้ย
+เพี้ยกวาน
+เพี้ยกว้าน
+เพียง
+เพี้ยง
+เพียงดัง
+เพียงนั้น
+เพียงนี้
+เพียงพอ
+เพียงออ
+เพียชน์
+เพียน
+เพี้ยน
+เพี้ยนผัด
+เพียบ
+เพียบพร้อม
+เพียร
+เพื่อ
+เพื่อน
+เพื่อนเกลอ
+เพื่อนเจ้าบ่าว
+เพื่อนเจ้าสาว
+เพื่อนบ้าน
+เพื่อนฝูง
+แพ
+แพ้
+แพขนานยนต์
+แพง
+แพ่ง
+แพงพวย
+แพงพวยฝรั่ง
+แพ็งแพว
+แพแตก
+แพทย-
+แพทย์
+แพทยศาสตร์
+แพทยา
+แพ้ท้อง
+แพน
+แพ่น
+แพนก
+แพนงเชิง
+แพ้เป็นพระ ชนะเป็นมาร
+แพ้เปรียบ
+แพ้ผม
+แพ้ผัว
+แพ้ฟัน
+แพ้ภัยตัว
+แพ้เมีย
+แพร
+แพร่
+แพรก
+แพร่ข่าว
+แพร่ง
+แพร่งพราย
+แพรว
+แพร้ว
+แพรวพราย
+แพรวพราว
+แพร่หลาย
+แพ้รู้
+แพ้แรง
+แพลง
+แพลทินัม
+แพลม
+แพลเลเดียม
+แพละ
+แพละโลม
+แพลูกบวบ
+แพว
+แพ้ว
+แพศย์
+แพศยา
+แพะ
+แพะรับบาป
+แพะโลม
+โพ
+โพก
+โพกพาย
+โพง
+โพงพาง
+โพชฌงค์
+โพซิตรอน
+โพด
+โพทะเล
+โพแทสเซียม
+โพธ
+โพธิ-
+โพธิ์
+โพธิญาณ
+โพธิบัลลังก์
+โพธิปักขิยธรรม
+โพธิสมภาร
+โพธิสัตว์
+โพน
+โพ้น
+โพนทะนา
+โพ้นทะเล
+โพนเพน
+โพบาย
+โพผัน
+โพย
+โพยก๊วน
+โพยม
+โพยมยาน
+โพยมัน
+โพยมาน
+โพรก
+โพรง
+โพรงแสม
+โพรโทแอกทิเนียม
+โพรมีเทียม
+โพระดก
+โพล่
+โพลง
+โพล่ง
+โพล้ง
+โพลน
+โพล้เพล้
+โพละ
+โพสพ
+ไพ
+ไพ่
+ไพจิตร
+ไพชน
+ไพชยนต์
+ไพฑูรย์
+ไพโดร
+ไพที
+ไพบูลย์
+ไพ่ป๊อก
+ไพพรรณ
+ไพเพิด
+ไพ่ไฟ
+ไพมอก
+ไพม้า
+ไพร
+ไพร่
+ไพรคิ้ว
+ไพรจิตร
+ไพรชน
+ไพรชยนต์
+ไพรฑูรย์
+ไพรที
+ไพรบูลย์
+ไพรปาก
+ไพร่พล
+ไพร่ฟ้า
+ไพรระหง
+ไพรเราะ
+ไพรวัน
+ไพรสณฑ์
+ไพร่สม
+ไพร่ส่วย
+ไพรสัณฑ์
+ไพรสาณฑ์
+ไพรสามกอ
+ไพร่หลวง
+ไพรัช
+ไพรัช-
+ไพรำ
+ไพริน
+ไพรินทร์
+ไพรี
+ไพรู
+ไพเราะ
+ไพโรจน์
+ไพล
+ไพล่
+ไพล่หลัง
+ไพศาข
+ไพศาข-
+ไพศาขบุรณมี
+ไพศาขมาส
+ไพศาล
+ไพเศษ
+ไพสพ
+ไพสิฐ
+ไพหาร
+ฟ
+ฟก
+ฟกช้ำดำเขียว
+ฟ้ง
+ฟรักโทส
+ฟรี
+ฟรีบาร์
+ฟลูออรีน
+ฟ่อ
+ฟ้อ
+ฟอก
+ฟอกซัก
+ฟอกผ้า
+ฟอกพยาน
+ฟอกโลหิต
+ฟอกหนัง
+ฟอง
+ฟ่อง
+ฟ้อง
+ฟ้องกลับ
+ฟองกาม
+ฟ้องตัวเอง
+ฟองเต้าหู้
+ฟองทะเล
+ฟองน้ำ
+ฟ่องฟู
+ฟองมัน
+ฟ้องแย้ง
+ฟ้องร้อง
+ฟอด
+ฟอดแฟด
+ฟอน
+ฟ่อน
+ฟ้อน
+ฟ้อแฟ้
+ฟอร์มาลดีไฮด์
+ฟอร์มาลิน
+ฟอสฟอรัส
+ฟอสเฟต
+ฟะฟัด
+ฟะฟั่น
+ฟะฟ่าย
+ฟัก
+ฟักข้าว
+ฟักตัว
+ฟักทอง
+ฟักฟุ้น
+ฟักฟูม
+ฟักเหลือง
+ฟัง
+ฟังก์ชัน
+ฟังขึ้น
+ฟังได้
+ฟังไม่ได้ศัพท์ จับไปกระเดียด
+ฟังหูไว้หู
+ฟังออก
+ฟัด
+ฟัดเฟียด
+ฟัน
+ฟั่น
+ฟั้น
+ฟันคลื่น
+ฟันช้าง
+ฟันดาบ
+ฟันถาวร
+ฟันแท้
+ฟันน้ำนม
+ฟันปลา
+ฟันฝ่า
+ฟั่นเฝือ
+ฟันเฟือง
+ฟั่นเฟือน
+ฟันม้า
+ฟันเลื่อย
+ฟันหนู
+ฟันหลอ
+ฟ้า
+ฟาก
+ฟ้าคะนอง
+ฟ้าเคืองสันหลัง
+ฟาง
+ฟ่าง
+ฟางลอย
+ฟาด
+ฟาดเคราะห์
+ฟาดหัว
+ฟาทอม
+ฟาน
+ฟ้าผ่า
+ฟ้าฝ่อ
+ฟ่าม
+ฟ้ามุ่ย
+ฟ้าไม่กระเทือนสันหลัง
+ฟาย
+ฟายน้ำตา
+ฟายมือ
+ฟาร์ม
+ฟ้าร้อง
+ฟ้าแลบ
+ฟาสซิสต์
+ฟ้าหลัว
+ฟิก
+ฟิด
+ฟิบ
+ฟิล์ม
+ฟิวส์
+ฟิสิกส์
+ฟี่
+ฟี้
+ฟืน
+ฟื้น
+ฟื้นตัว
+ฟื้นฝอย
+ฟื้นฟู
+ฟื้นองค์
+ฟืม
+ฟุ
+ฟุ้ง
+ฟุ้งซ่าน
+ฟุ้งเฟ้อ
+ฟุ้งเฟื่อง
+ฟุต
+ฟุตบอล
+ฟุน
+ฟุบ
+ฟุ่บ
+ฟุฟะ
+ฟุ่มเฟือย
+ฟุลสแก๊ป
+ฟู
+ฟู่
+ฟูก
+ฟูด
+ฟูดฟาด
+ฟูฟ่อง
+ฟูม
+ฟูมน้ำ
+ฟูมฟัก
+ฟูมฟาย
+ฟูมเลี้ยง
+เฟ็ด
+เฟ็ดหาว
+เฟ้น
+เฟลด์สปาร์
+เฟ้อ
+เฟอร์เมียม
+เฟอะ
+เฟอะฟะ
+เฟะ
+เฟะฟะ
+เฟิน
+เฟี้ยม
+เฟี้ยมเฝ้า
+เฟี้ยว
+เฟือ
+เฟื่อ
+เฟื้อ
+เฟือง
+เฟื่อง
+เฟื้อง
+เฟื่องฟ้า
+เฟื่องฟุ้ง
+เฟื่องฟู
+เฟือน
+เฟือย
+เฟื้อย
+แฟ่
+แฟง
+แฟชั่น
+แฟบ
+แฟ้ม
+แฟรนเซียม
+แฟลกซ์
+แฟลต
+แฟะ
+โฟกัส
+ไฟ
+ไฟกัลป์
+ไฟจุกตูด
+ไฟฉาย
+ไฟแช็ก
+ไฟธาตุ
+ไฟฟ้า
+ไฟฟ้ากระแส
+ไฟฟ้าสถิต
+ไฟลามทุ่ง
+ไฟสุมขอน
+ภ
+ภค
+ภควดี
+ภควัต
+ภควันต์
+ภควัม
+ภควา
+ภควาน
+ภคันทลา
+ภคินี
+ภณ
+ภณิดา
+ภพ
+ภมการ
+ภมร
+ภมริน
+ภมรี
+ภมุ
+ภมุกะ
+ภมุกา
+ภย-
+ภยันตราย
+ภยาคติ
+ภร
+ภรณี
+ภรณีภู
+ภรต
+ภรต-
+ภรตวรรษ
+ภรตศาสตร์
+ภรรดร
+ภรรดา
+ภรรยา
+ภระมร
+ภระมรี
+ภรัสดาษ
+ภราดร
+ภราดรภาพ
+ภราดา
+ภราตร-
+ภราตรภาพ
+ภราตฤ-
+ภราตฤภาพ
+ภริยา
+ภรู
+ภรูมณฑล
+ภฤงคาร
+ภฤดก
+ภฤดี
+ภฤตย์
+ภฤศ
+ภฤษฏ์
+ภว
+ภว-
+ภวกษัย
+ภวตัณหา
+ภวนะ
+ภวปาระ
+ภวัคร
+ภวังค-
+ภวังค์
+ภวังคจิต
+ภวันดร
+ภวาภพ
+ภักขะ
+ภักดี
+ภักต-
+ภักตกฤตย์
+ภักตะ
+ภักติ
+ภักษ-
+ภักษ์
+ภักษการ
+ภักษา
+ภักษาหาร
+ภัค
+ภัคน์
+ภังค-
+ภังคะ
+ภังคี
+ภัจ
+ภัญชะ
+ภัณฑ-
+ภัณฑ์
+ภัณฑครรภ
+ภัณฑนะ
+ภัณฑาคาร
+ภัณฑาคาริก
+ภัณฑารักษ์
+ภัณฑู
+ภัณฑูกรรม
+ภัต
+ภัต-
+ภัตกิจ
+ภัตตาคาร
+ภัตตาหาร
+ภัตร
+ภัทร
+ภัทร-
+ภัทรกัป
+ภัทรกุมภ์
+ภัทรบทมาส
+ภัทรบิฐ
+ภัพ
+ภัย
+ภัสดา
+ภัสตรา
+ภัสมะ
+ภัสสร
+ภา
+ภากร
+ภาค
+ภาค-
+ภาคตัดกรวย
+ภาคทฤษฎี
+ภาคทัณฑ์
+ภาคนิพนธ์
+ภาคปฏิบัติ
+ภาคพื้น
+ภาคภูมิ
+ภาคย์
+ภาคยานุวัติ
+ภาคเรียน
+ภาคเสธ
+ภาคินี
+ภาคิไนย
+ภาคี
+ภาคียะ
+ภาชนะ
+ภาชนีย-
+ภาชี
+ภาณ
+ภาณ-
+ภาณก
+ภาณวาร
+ภาณี
+ภาณุ
+ภาณุมาศ
+ภาดร
+ภาดา
+ภาตร
+ภาตา
+ภาติกะ
+ภาติยะ
+ภาตุ
+ภาพ
+ภาพ-
+ภาพกาก
+ภาพจริง
+ภาพถ่าย
+ภาพนิ่ง
+ภาพประกอบ
+ภาพปูนเปียก
+ภาพพจน์
+ภาพย์
+ภาพยนตร์
+ภาพลวงตา
+ภาพลักษณ์
+ภาพเสมือน
+ภาพหุ่นนิ่ง
+ภาม
+ภาย
+ภายนอก
+ภายใน
+ภายหน้า
+ภายหลัง
+ภาร
+ภาร-
+ภารกิจ
+ภารดี
+ภารต
+ภารต-
+ภารตวิทยา
+ภารตี
+ภารธุระ
+ภารยทรัพย์
+ภารยา
+ภารโรง
+ภาระ
+ภาระจำยอม
+ภาระติดพัน
+ภาระติดพันในอสังหาริมทรัพย์
+ภารา
+ภาว-
+ภาวนา
+ภาวนามัย
+ภาวศุทธิ
+ภาวะ
+ภาวะฉุกเฉิน
+ภาษ
+ภาษก
+ภาษณ์
+ภาษา
+ภาษาศาสตร์
+ภาษิต
+ภาษี
+ภาษีเงินได้
+ภาษีบำรุงท้องที่
+ภาษีมูลค่าเพิ่ม
+ภาษีโรงเรือนและที่ดิน
+ภาษีสรรพสามิต
+ภาส
+ภาส-
+ภาสกร
+ภาสน์
+ภาสวร
+ภาสา
+ภาสุร
+ภิกขา
+ภิกขาจาร
+ภิกขาหาร
+ภิกขุ
+ภิกขุนี
+ภิกษา
+ภิกษาจาร
+ภิกษาหาร
+ภิกษุ
+ภิกษุณี
+ภิงคาร
+ภิงส
+ภิงสนะ
+ภิงสร
+ภิญโญ
+ภิญโญภาพ
+ภิตติ
+ภิท
+ภิน-
+ภินชาติ
+ภินท-
+ภินท์
+ภินทน-
+ภินทนาการ
+ภินวรรณ
+ภิยโย
+ภิยโยภาพ
+ภิรมย์
+ภิรมย์สุรางค์
+ภิษัช
+ภิส
+ภิสัก
+ภีตะ
+ภีม
+ภีรุ
+ภีรุก-
+ภีรุกชาติ
+ภุกต-
+ภุกต์
+ภุกตเศษ
+ภุกตาหาร
+ภุขัน
+ภุช
+ภุช-
+ภุชค
+ภุชงค์
+ภุชงคประยาต
+ภุชงคม
+ภุชสมโภค
+ภุชา
+ภุญช
+ภุต
+ภุม
+ภุม-
+ภุมเทวดา
+ภุมระ
+ภุมรัตน์
+ภุมรา
+ภุมริน
+ภุมรี
+ภุมเรศ
+ภุมวาร
+ภุส
+ภู
+ภู่
+ภูเขา
+ภูเขาน้ำแข็ง
+ภูเขาไฟ
+ภูโช
+ภูดล
+ภูดาด
+ภูต
+ภูต-
+ภูตคาม
+ภูตบดี
+ภูตรูป
+ภูติ
+ภูตี
+ภูเตศวร
+ภูธร
+ภูธเรศ
+ภูธเรศวร
+ภูนาถ
+ภูนายก
+ภูเนตุ
+ภูบดินทร์
+ภูบดี
+ภูบาล
+ภูเบนทร์
+ภูเบศ
+ภูเบศวร์
+ภูป
+ภูผา
+ภูภุช
+ภูม
+ภูมิ
+ภูมิ-
+ภูมิคุ้มกัน
+ภูมิใจ
+ภูมิฐาน
+ภูมิธร
+ภูมิธรรม
+ภูมินทร์
+ภูมินาถ
+ภูมิบดี
+ภูมิบริมาณ
+ภูมิบาล
+ภูมิประเทศ
+ภูมิปัญญา
+ภูมิแพ้
+ภูมิภาค
+ภูมิภุช
+ภูมิรัฐศาสตร์
+ภูมิรู้
+ภูมิลำเนา
+ภูมิศาสตร์
+ภูมิศาสตร์กายภาพ
+ภูมิศาสตร์การเกษตร
+ภูมิศาสตร์การเมือง
+ภูมิศาสตร์ประชากร
+ภูมิศาสตร์ประวัติ
+ภูมิศาสตร์เศรษฐกิจ
+ภูมี
+ภูมีศวร
+ภูรโลก
+ภูริ
+ภูรี
+ภูว-
+ภูวดล
+ภูวน-
+ภูวนตรัย
+ภูวนัตตรัย
+ภูวนาถ
+ภูวเนตร
+ภูวไนย
+ภูษณ-
+ภูษณพาส
+ภูษา
+ภูษามาลา
+ภูษาโยง
+ภูษิต
+เภกะ
+เภคะ
+เภตรา
+เภท
+เภทภัย
+เภทุบาย
+เภรว
+เภริ
+เภรี
+เภสัช
+เภสัช-
+เภสัชกร
+เภสัชกรรม
+เภสัชเคมี
+เภสัชพฤกษศาสตร์
+เภสัชเพลา
+เภสัชวิทยา
+เภสัชเวท
+เภสัชศาสตร์
+เภสัชอุตสาหกรรม
+โภค
+โภค-
+โภคทรัพย์
+โภคภัณฑ์
+โภคยทรัพย์
+โภคะ
+โภคิน
+โภคี
+โภไคย
+โภไคศวรรย์
+โภช
+โภชก
+โภชน-
+โภชนะ
+โภชนะห้า
+โภชนากร
+โภชนาการ
+โภชนาหาร
+โภชย์
+ไภริน
+ไภรี
+ไภษัชคุรุ
+ไภษัชย์
+ม
+มก
+มกร
+มกร-
+มกรกุณฑล
+มกราคม
+มกส
+มกุฎ
+มกุฎราชกุมาร
+มกุล
+มคธ
+มฆ
+มฆวัน
+มฆา
+ม่ง
+มงกุฎ
+มงกุฎไทย
+มงโกรย
+มงคล
+มงคล-
+มงคลจักร
+มงคลแฝด
+มงคลวาท
+มงคลวาร
+มงคลสูตร
+มงคลหัตถี
+มณฑ์
+มณฑก
+มณฑนะ
+มณฑป
+มณฑล
+มณฑา
+มณฑารพ
+มณฑิร
+มณเฑียร
+มณเฑียรบาล
+มณี
+มณีการ
+มณีพืช
+มณีรัตน์
+มณีราค
+มณีศิลา
+มด
+มดดำ
+มดแดง
+มดแดงเฝ้ามะม่วง
+มดเท็จ
+มดยอบ
+มดลูก
+มดส้ม
+มดาย
+มดี
+มต-
+มตก
+มตกภัต
+มตะ
+มติ
+มติมหาชน
+มท
+มทนะ
+มทนียะ
+มธุ
+มธุกร
+มธุกรี
+มธุการี
+มธุโกศ
+มธุตฤณ
+มธุป
+มธุปฎล
+มธุปายาส
+มธุพรต
+มธุมักขิกา
+มธุมิศร
+มธุร-
+มธุรตรัย
+มธุรพจน์
+มธุรส
+มธุระ
+มธุลีห์
+มธุเศษ
+มธุสร
+มน
+ม่น
+มนต์
+มนตร์
+มนตรี
+มนท-
+มนท์
+มนทกานติ
+มนทาทร
+มนทิร
+มนทิราลัย
+มนเทียร
+มนเทียรบาล
+มนสิการ
+มนัส
+มนัส-
+มนัสดาป
+มนัสวี
+มนิมนา
+มนิลา
+มนีมนา
+มนุ
+มนุช
+มนุชาธิป
+มนุญ
+มนุษย-
+มนุษย์
+มนุษย์กบ
+มนุษยชาติ
+มนุษยเทพ
+มนุษยธรรม
+มนุษยโลก
+มนุษยศาสตร์
+มนุษยสัมพันธ์
+มนุษย์อวกาศ
+มนุสาร
+มนู
+มนูสาร
+มโน
+มโนกรรม
+มโนคติ
+มโนช
+มโนชญ์
+มโนธรรม
+มโนนุกูล
+มโนภาพ
+มโนภินิเวศ
+มโนมัย
+มโนรถ
+มโนรม
+มโนรมย์
+มโนราห์
+มโนศิลา
+มโนสาร
+มโนสาเร่
+มโนหร
+มมังการ
+มมาก
+มยุร-
+มยุรคติ
+มยุรฉัตร
+มยุรอาสน์
+มยุระ
+มยุรา
+มยุรี
+มยุเรศ
+มยูข
+มยูร
+มร
+มรกต
+มรคา
+มรฑป
+มรณ-
+มรณ์
+มรณกรรม
+มรณธรรม
+มรณบัตร
+มรณภัย
+มรณภาพ
+มรณะ
+มรณันติก-
+มรณานต์
+มรดก
+มรรค
+มรรคนายก
+มรรคา
+มรรตย
+มรรตัย
+มรรทน
+มรรยาท
+มรรษ
+มรสุม
+มรัมเทศ
+มรานควาน
+มริจ
+มริยาท
+มรีจิ
+มรุ
+มรุต
+มฤค
+มฤค-
+มฤคทายวัน
+มฤคย์
+มฤคราช
+มฤคศิร
+มฤคศิรมาส
+มฤคศิรัส
+มฤคเศียร
+มฤคินทร์
+มฤเคนทร์
+มฤจฉา
+มฤจฉาชีพ
+มฤจฉาทิฐิ
+มฤดก
+มฤต
+มฤตก
+มฤตยู
+มฤตยูราช
+มฤทิงค์
+มฤทุ
+มฤทุกะ
+มฤธุ
+มฤษา
+มฤษาวาท
+มล
+มล-
+มลโค
+มลทิน
+มลน
+มล่น
+มลนมลาน
+มลพิษ
+มลวก
+มล่อน
+มล่อย
+มละ
+มลัก
+มลังเมลือง
+มล้า
+มลาก
+มล้าง
+มลาน
+มล่าน
+มลาย
+มลายู
+มลาว
+มล่าวเมลา
+มลิน
+มลิ้น
+มลื่น
+มวก
+มวกผา
+มวกเหล็ก
+มวกใหญ่
+ม่วง
+มวน
+ม่วน
+ม้วน
+ม้วนต้วน
+ม้วนเสื่อ
+ม้วนหน้า
+มวย
+ม้วย
+มวยไทย
+มวยปล้ำ
+มวยล้ม
+มวยวัด
+มวยสากล
+มวยหมู่
+มวล
+มวลสาร
+มวลอากาศ
+มสาร
+มสารก
+มสารคัล
+มสิ
+มหกรรม
+มหรณพ
+มหรรฆ
+มหรรณพ
+มหรสพ
+มหัคฆ
+มหัจฉริย-
+มหัจฉริยะ
+มหัณณพ
+มหัต
+มหัทธนะ
+มหันต-
+มหันต์
+มหันตโทษ
+มหัพภาค
+มหัล
+มหัลกะ
+มหัศจรรย์
+มหา
+มหากฐิน
+มหากาฬ
+มหาขันธก
+มหาจักร
+มหาชน
+มหาชัย
+มหาชาติ
+มหาโชตรัต
+มหาดไทย
+มหาดเล็ก
+มหาดเล็กรายงาน
+มหาตมะ
+มหาไถ่
+มหาเทพ
+มหาเทพี
+มหาเทวี
+มหาธาตุ
+มหานสะ
+มหานิกาย
+มหานิล
+มหาบพิตร
+มหาบัณฑิต
+มหาพน
+มหาพรหม
+มหาภารต
+มหาภิเนษกรมณ์
+มหาภูต
+มหาเมฆ
+มหายาน
+มหายุค
+มหารณพ
+มหาราช
+มหาราชลีลา
+มหาฤกษ์
+มหาละลวย
+มหาละลาย
+มหาวงศ์
+มหาวรรค
+มหาวิทยาลัย
+มหาศาล
+มหาสงกรานต์
+มหาสดมภ์
+มหาสดำ
+มหาสมุทร
+มหาสาวก
+มหาหงส์
+มหาหิงคุ์
+มหาอำนาจ
+มหาอุจ
+มหาอุด
+มหาอุปรากร
+มหิ
+มหิงส์
+มหิดล
+มหิทธิ
+มหิธร
+มหินท์
+มหิบดี
+มหิบาล
+มหิป
+มหิมา
+มหิศร
+มหิศวร
+มหิษ
+มหิษี
+มหึมา
+มหุดิฤกษ์
+มหุรดี
+มหู
+มเหนทร์
+มเหยงค์
+มเหศ
+มเหศวร
+มเหศักดิ์
+มเหสักข์
+มเหสิ
+มเหสี
+มเหาษธ
+มเหาฬาร
+มโหฆ
+มโหรสพ
+มโหระทึก
+มโหรี
+มโหษธ
+มโหฬาร
+มไหศวรรย์
+มอ
+มอคราม
+มอง
+มองโกลอยด์
+มองคร่อ
+มองเสี้ยว
+มอซอ
+มอญ
+มอญซ่อนผ้า
+มอญตีดั้ง
+มอด
+ม่อต้อ
+มอเตอร์
+มอน
+ม่อน
+มอนไข่
+มอบ
+มอบฉันทะ
+มอบหมาย
+มอบอำนาจ
+มอม
+มอมเมา
+มอมแมม
+มอมเหล้า
+ม่อย
+มอร์ฟีน
+มอระกู่
+มอลโทส
+ม่อลอกม่อแลก
+มอหมึก
+ม่อห้อม
+ม่อฮ่อม
+มะ
+มะกรูด
+มะกล่ำ
+มะกอก
+มะกอกน้ำ
+มะกอกบ้าน
+มะกอกป่า
+มะกอกฝรั่ง
+มะกอกพราน
+มะกอกสามตะกร้าปาไม่ถูก
+มะก่อง
+มะกะโรนี
+มะกา
+มะเกลือ
+มะเกี๋ยง
+มะข่วง
+มะขวิด
+มะขาม
+มะขามคราบหมู
+มะขามเทศ
+มะขามป้อม
+มะขามเปียก
+มะเขือ
+มะเขือทวาย
+มะเขือเทศ
+มะเขือพวง
+มะเขือมอญ
+มะแข่น
+มะคะ
+มะคังแดง
+มะค่า
+มะค่าแต้
+มะค่าโมง
+มะค่าหนาม
+มะค่าใหญ่
+มะคำไก่
+มะคำดีควาย
+มะงัน
+มะงั่ว
+มะงุมมะงาหรา
+มะซัก
+มะซาง
+มะซ่าน
+มะดะขี้นก
+มะดัน
+มะดา
+มะดูก
+มะเดหวี
+มะเดื่อ
+มะเดื่อดิน
+มะต้อง
+มะตะบะ
+มะตาด
+มะตาหะรี
+มะตี
+มะตึ่ง
+มะตื๋น
+มะตูม
+มะแตก
+มะนาว
+มะนาวเทศ
+มะปราง
+มะปริง
+มะป่อง
+มะป่องต้น
+มะฝ่อ
+มะพร้าว
+มะพร้าวแก้ว
+มะพร้าวตื่นดก
+มะพร้าวทุย
+มะพร้าวห้าว
+มะพลับ
+มะพูด
+มะแพน
+มะแพร้ว
+มะเฟือง
+มะแฟน
+มะไฟ
+มะไฟเดือนห้า
+มะม่วง
+มะม่วงหิมพานต์
+มะม่าว
+มะมี่
+มะมื่น
+มะมุด
+มะเมอ
+มะเมีย
+มะเมื่อย
+มะแม
+มะยง
+มะยงชิด
+มะยม
+มะระ
+มะริด
+มะรืน
+มะรุม
+มะรุมมะตุ้ม
+มะเร็ง
+มะเรื่อง
+มะโรง
+มะละกอ
+มะลารอกัน
+มะลำ
+มะลิ
+มะลิซ่อม
+มะลิน
+มะลิ่ม
+มะลิเลื้อย
+มะลิอ่อง
+มะลื่น
+มะลืมดำ
+มะลุลี
+มะวาร
+มะแว้ง
+มะสัง
+มะเส็ง
+มะหลิ่ม
+มะหวด
+มะหะหมัด
+มะหัล
+มะหาด
+มะหิ่ง
+มะเหงก
+มะเหมื่อย
+มะอึก
+มะฮอกกานี
+มัก
+มักกะลีผล
+มักกะสัน
+มักขะ
+มั่กขั้ก
+มักขิกา
+มักขิกาชาติ
+มักคุ้น
+มักง่าย
+มักฏกะ
+มักฏะ
+มักได้
+มักน้อย
+มักมาก
+มักใหญ่
+มัค-
+มัคคะ
+มัคคุเทศก์
+มัคนายก
+มัคสิระ
+มัฆวา
+มัฆวาน
+มั่ง
+มังกง
+มังกร
+มังกุ
+มังคละ
+มั่งคั่ง
+มังค่า
+มังคุด
+มังตาน
+มั่งมี
+มั่งมีในใจ แล่นใบบนบก
+มังส-
+มังสวิรัติ
+มังสะ
+มังสี
+มังหงัน
+มัจจะ
+มัจจุ
+มัจจุราช
+มัจฉระ
+มัจฉริยะ
+มัจฉรี
+มัจฉะ
+มัจฉา
+มัจฉาชาติ
+มัช-
+มัชชะ
+มัชชาร
+มัชฌ-
+มัชฌันติก-
+มัชฌันติกสมัย
+มัชฌิม-
+มัชฌิมนิกาย
+มัชฌิมบุรุษ
+มัชฌิมประเทศ
+มัชฌิมภูมิ
+มัชฌิมยาม
+มัชฌิมวัย
+มัชฌิมา
+มัชฌิมาปฏิปทา
+มัชวิรัติ
+มัญจก
+มัญจา
+มัญชิษฐ
+มัญชิษฐา
+มัญชีร
+มัญชุ
+มัญชุสา
+มัญชูสา
+มัญเชฏฐะ
+มัญเชฏฐิกา
+มัญเชฏฐิกากร
+มัญเชียร
+มัฏฐะ
+มัณฑ-
+มัณฑน-
+มัณฑนศิลป์
+มัณฑนา
+มัณฑุก
+มัด
+มัดจำ
+มัดเชื้อเพลิง
+มัดมือชก
+มัดหมี่
+มัดหมู
+มัดหวาย
+มัตตะ
+มัตตัญญู
+มัตตัย
+มัตตา
+มัตติกา
+มัตถก
+มัตถลุงค์
+มัตย
+มัตสยะ
+มัตสยา
+มัตสร
+มัตสรรย์
+มัตสริน
+มัทนะ
+มัทนียะ
+มัทยะ
+มัธย-
+มัธยฐาน
+มัธยม
+มัธยม-
+มัธยมกาล
+มัธยมศึกษา
+มัธยมา
+มัธยันห์
+มัธยัสถ์
+มัน
+มั่น
+มันแกว
+มั่นคง
+มั่นใจ
+มันดี
+มันตา
+มันถะ
+มันทิร
+มันทิราลัย
+มันเทศ
+มันนก
+มันปลา
+มันปู
+มันฝรั่ง
+มันย่อง
+มันสมอง
+มันเสา
+มันไส้
+มั่นหมาย
+มั่นเหมาะ
+มับ
+มับๆ
+มั้ม
+มัมมี่
+มัย
+มัลก
+มัลละ
+มัลลิกา
+มัว
+มั่ว
+มัวซัว
+มัวมอม
+มั่วมูล
+มัวเมา
+มัวเมีย
+มั่วสุม
+มัวหมอง
+มัศยา
+มัสดก
+มัสดุ
+มัสตาร์ด
+มัสตุ
+มัสมั่น
+มัสยิด
+มัสรู่
+มัสลิน
+มัสสุ
+มา
+ม้า
+มาก
+มากขี้ควายหลายขี้ช้าง
+มากมาย
+มากมายก่ายกอง
+มากหน้าหลายตา
+มากหมอมากความ
+มาแขก
+มาคสิร-
+มาคสิระ
+มาฆ-
+มาฆบูชา
+มาฆะ
+ม้าง
+มางสะ
+ม้าใช้
+มาณพ
+มาณวิกา
+มาด
+มาดา
+ม้าดีดกะโหลก
+มาตงค์
+ม้าต้น
+มาตร
+มาตร-
+มาตรการ
+มาตรฐาน
+มาตรแม้น
+มาตรว่า
+มาตรา
+มาตราพฤติ
+มาตราส่วน
+มาตฤ
+มาตฤกะ
+มาตสรรย์
+มาตังค
+มาตา
+มาตามหะ
+มาตามหัยกะ
+มาตามหัยกา
+มาตามหัยยิกา
+มาตามหา
+มาติก
+มาติกา
+มาตี
+มาตุ
+มาตุคาม
+มาตุฆาต
+มาตุจฉา
+มาตุภูมิ
+มาตุรงค์
+มาตุเรศ
+มาตุละ
+มาตุลา
+มาตุลานี
+มาตุลุงค์
+มาท
+มาทน
+ม้าทลายโรง
+ม้าเทศ
+มาธยมิกะ
+มาธุร
+มาธุสร
+มาธูร
+มาน
+ม่าน
+ม้าน
+ม่านตา
+มานทะลุน
+ม่านบังเพลิง
+มานพ
+ม่านเมรุ
+ม่านลาย
+ม่านสองไข
+ม่านอินทนิล
+มานะ
+มานัต
+มานัส
+ม้าน้ำ
+มานิต
+มานี
+มานุษ
+มานุษย-
+มานุษยวิทยา
+มาโนชญ์
+มาบ
+มาปก
+มาภา
+ม้าม
+ม้ามืด
+มาย
+ม่าย
+ม่ายเมียง
+ม้าย่อง
+มายัง
+มายา
+มายากร
+มายากล
+มายาการ
+มายาประสาน
+มายาวี
+มาร
+มาร-
+มารค
+มารคอหอย
+มารชิ
+มารชิต
+มารดร
+มารดา
+มารผจญ
+มารยา
+มารยาท
+มารวิชัย
+มารวิชิต
+มารศรี
+มารษา
+มารสังคม
+มารหัวขน
+มาระ
+มาราธิราช
+ม้ารำ
+มาริ
+มาริต
+มารุต
+มารุมมาตุ้ม
+ม้าเร็ว
+มาลย์
+ม้าล่อ
+มาลัย
+มาลา
+มาลากรรม
+มาลาการ
+มาลาตี
+ม้าลาย
+มาลาเรีย
+มาลำ
+มาลินี
+มาลี
+มาลุต
+มาวาร
+มาศ
+มาส
+มาสก
+ม้าสะบัดกีบ
+มาห์
+ม่าห์
+มาหิส
+มาเหนือเมฆ
+ม่าเหมี่ยว
+มาฬก
+ม้าอ้วน
+มำเลือง
+มิ
+มิค
+มิค-
+มิคลุท
+มิคลุทก
+มิคเศียร
+มิคสัญญี
+มิคสิร-
+มิคสิระ
+มิคี
+มิ่ง
+มิ่งขวัญ
+มิงโค
+มิ่งมิตร
+มิจฉา
+มิจฉากัมมันตะ
+มิจฉาจริยา
+มิจฉาจาร
+มิจฉาชีพ
+มิจฉาทิฐิ
+มิจฉาบถ
+มิจฉาวาจา
+มิจฉาวายามะ
+มิจฉาสติ
+มิจฉาสมาธิ
+มิจฉาสังกัปปะ
+มิจฉาอาชีวะ
+มิญช-
+มิด
+มิดชิด
+มิดเม้น
+มิดเมี้ยน
+มิดหมี
+มิดีมิร้าย
+มิได้
+มิต-
+มิตภาณี
+มิตร
+มิตร-
+มิตรจิต
+มิตรจิตมิตรใจ
+มิตรภาพ
+มิตรสหาย
+มิติ
+มิถยา
+มิถุน
+มิถุนายน
+มิทธะ
+มิทธี
+มินตรา
+มินตา
+มินหม้อ
+มิน่า
+มิน่าล่ะ
+มิน่าเล่า
+มิ่ม
+มิ้ม
+มิยา
+มิไย
+มิรันตี
+มิลลิกรัม
+มิลลิบาร์
+มิลลิเมตร
+มิลลิลิตร
+มิลักขะ
+มิลักขู
+มิลาต
+มิศร-
+มิศรก-
+มิส-
+มิสก-
+มิสกรี
+มิสกวัน
+มิสซา
+มิอย่ารา
+มิอย่าเลย
+มี
+มี่
+มีแก่ใจ
+มี่ฉาว
+มีชื่อ
+มีชู้
+มีด
+มีดโกน
+มีดตอก
+มีดยับ
+มีดหมอ
+มีตาแต่หามีแววไม่
+มีทองเท่าหนวดกุ้ง นอนสะดุ้งจนเรือนไหว
+มีเทน
+มีน
+มีนาคม
+มีเฟื้องมีสลึง
+มีภาษีกว่า
+มีเรือน
+มี่สั้ว
+มีเสียง
+มีหน้า
+มีหน้ามีตา
+มีฬห-
+มีอันจะกิน
+มีอันเป็น
+มีอายุ
+มึก
+มึกมวย
+มึง
+มึงวาพาโวย
+มึน
+มึนงง
+มึนชา
+มึนซึม
+มึนตึง
+มึนเมา
+มืด
+มืดค่ำ
+มืดแปดด้าน
+มืดฟ้ามัวดิน
+มืดมน
+มืดมัว
+มืดหน้า
+มืน
+มื่น
+มือ
+มื้อ
+มือกาว
+มือเก่า
+มือขวา
+มือขึ้น
+มือแข็ง
+มือดี
+มือตก
+มือเติบ
+มือถือสาก ปากถือศีล
+มือที่สาม
+มือบอน
+มือเบา
+มือปืน
+มือผี
+มือมืด
+มือไม่ถึง
+มือไม่พาย เอาตีนราน้ำ
+มือเย็น
+มือร้อน
+มือลิง
+มือไว
+มือสะอาด
+มือสั้นตีนสั้น
+มือสี
+มือเสือ
+มือหนัก
+มือหนึ่ง
+มือห่างตีนห่าง
+มือใหม่
+มืออ่อน
+มืออ่อนตีนอ่อน
+มุ
+มุก
+มุกดา
+มุกดาหาร
+มุกุร
+มุกุล
+มุข
+มุข-
+มุขกระสัน
+มุขเด็จ
+มุขบาฐ
+มุขมนตรี
+มุขย-
+มุขยประโยค
+มุขลด
+มุโขโลกนะ
+มุคคะ
+มุคธ์
+มุคร
+มุง
+มุ่ง
+มุ้ง
+มุ้งกระต่าย
+มุ้งประทุน
+มุ่งมาด
+มุ่งร้ายหมายขวัญ
+มุ้งลวด
+มุ้งสายบัว
+มุ่งหมาย
+มุจฉา
+มุจน
+มุจลินท์
+มุญจนะ
+มุญช
+มุฐิ
+มุณฑ
+มุณฑก
+มุด
+มุดหัว
+มุต
+มุต-
+มุตกิด
+มุตฆาต
+มุตตะ
+มุตตา
+มุตติ
+มุติ
+มุติงค์
+มุทค
+มุทคร
+มุททา
+มุทธชะ
+มุทธา
+มุทธาภิเษก
+มุทรา
+มุทริกา
+มุทะลุ
+มุทา
+มุทิกา
+มุทิงค์
+มุทิตา
+มุทิน
+มุทุ
+มุทุตา
+มุ่น
+มุ่นใจ
+มุ่นหมก
+มุนิ
+มุนิกุญชร
+มุนินทร์
+มุนี
+มุบ
+มุบๆ
+มุบมิบ
+มุม
+มุ่ม
+มุ้ม
+มุมกดลง
+มุมก้ม
+มุมกลับ
+มุมเงย
+มุมฉาก
+มุมตกกระทบ
+มุมตรง
+มุมเท
+มุมบ่ายเบน
+มุมประชิด
+มุมป้าน
+มุมมืด
+มุมยกขึ้น
+มุมแย้ง
+มุมสะท้อน
+มุมหักเห
+มุมเห
+มุมแหลม
+มุ่ย
+มุรช
+มุรธา
+มุรธาภิเษก
+มุลุต
+มุลู
+มุสละ
+มุสลิม
+มุสะ
+มุสา
+มุสาวาท
+มุสิก
+มุหงิด
+มุหน่าย
+มุหุต
+มุฮัมมัด
+มูก
+มูกมัน
+มูกเลือด
+มูกหลวง
+มูค-
+มูเซอ
+มูตร
+มู่ทู่
+มูน
+มูนมอง
+มูมมาม
+มูรดี
+มูรติ
+มูรธ-
+มูรธา
+มูรธาภิเษก
+มูล
+มูล-
+มูลค่า
+มูลโค
+มูลจิต
+มูลฐาน
+มูลไถ
+มูลนกการเวก
+มูลนาย
+มูลนิธิ
+มูลฝอย
+มูลภัณฑ์กันชน
+มูละ
+มูลา
+มูลิกากร
+มู่ลี่
+มู่เล่
+มูสัง
+มูสิก
+มูสิก-
+มูสิกทันต์
+มูฬห-
+เม
+เม็ก
+เมกะเฮิรตซ์
+เมขลา
+เมฆ
+เมฆคลุ้ม
+เมฆฉาย
+เมฆพัด
+เมฆมาก
+เมฆา
+เมฆินทร์
+เมฆี
+เม็ง
+เมงอะปา
+เม็ด
+เม็ดดี
+เม็ดพระศก
+เม็ดพราย
+เม็ดมะยม
+เม็ดละมุด
+เม็ดเลือด
+เม็ดโลหิต
+เมตตา
+เมตไตรย
+เมตร
+เมตริก
+เมตริกตัน
+เมถุน
+เมท
+เมทนี
+เมทนีดล
+เมทินี
+เมทิลแอลกอฮอล์
+เมโท
+เมธ
+เมธา
+เมธาวี
+เมธี
+เมน
+เม่น
+เม้น
+เมนเดลีเวียม
+เมนทอล
+เม่นทะเล
+เม้ม
+เม้มปาก
+เมรย-
+เมรัย
+เมรุ
+เมรุ-
+เมรุมาศ
+เมรุราช
+เมล์
+เมลก
+เมล็ด
+เมลือง
+เมลื่อย
+เมลื้อย
+เมลื่อยมล้า
+เมษ
+เมษายน
+เมห
+เมห์
+เมหน
+เมะ
+เมา
+เม่า
+เม้า
+เม้าเค้า
+เมาดิบ
+เมามัน
+เมามัว
+เมามาย
+เมายศ
+เมารี
+เมาลี
+เมาห์
+เมาอำนาจ
+เมาะ
+เมาะตาโยกัก
+เมาะว่า
+เมิง
+เมิน
+เมิล
+เมีย
+เมียง
+เมี่ยง
+เมียงม่าย
+เมี้ยน
+เมียน้อย
+เมียหลวง
+เมือ
+เมื่อ
+เมื้อ
+เมือก
+เมื่อกี้
+เมือง
+เมืองขึ้น
+เมืองท่า
+เมืองท่าปลอดภาษี
+เมืองนอก
+เมืองหลวง
+เมืองออก
+เมื่อตะกี้
+เมื่อนั้น
+เมือบ
+เมื่อพีเนื้อหอม เมื่อผอมเนื้อเหม็น
+เมื่อย
+เมื่อยปาก
+เมื่อเอยก็เมื่อนั้น
+เมื่อเอยเมื่อนั้น
+แม่
+แม้
+แมก
+แมกนีเซียม
+แม่กระชังหน้าใหญ่
+แม่กระแชง
+แม่กอง
+แม่กุญแจ
+แม่คุณ
+แม่คู่
+แมง
+แมงกวาง
+แมงกะพรุน
+แมงกานิน
+แมงกานีส
+แมงคาเรือง
+แมงช้าง
+แมงดา
+แมงดาทะเล
+แมงปากจอบ
+แมงไฟเดือนห้า
+แม่งม้าง
+แมงมุม
+แมงลัก
+แม่งาน
+แม่เจ้า
+แม่เจ้าโว้ย
+แม่ซื้อ
+แม่ตะงาว
+แม่ตาย
+แม่เตาไฟ
+แม้แต่
+แม่ทัพ
+แม่ท่า
+แมน
+แม่น
+แม้น
+แม้นเขียน
+แม่นม
+แม่นยำ
+แม่น้ำ
+แม่บท
+แม่บ้าน
+แม่เบี้ย
+แม่ปะ
+แม่แปรก
+แม่พิมพ์
+แม่มด
+แม่ม่าย
+แม่ม่ายทรงเครื่อง
+แม่ม่ายลองไน
+แม่ยั่วเมือง
+แม่ย่านาง
+แม่ยาย
+แม่ย้าว
+แมร
+แม่ร้า
+แม่ร้าง
+แม่รีแม่แรด
+แม่เรือน
+แม่แรง
+แมลง
+แมลงช้าง
+แมลงดา
+แมลงดำ
+แมลงดำหนาม
+แมลงทับเล็ก
+แมลงปอ
+แมลงภู่
+แมลงวัน
+แมลงวันทอง
+แมลงวันสเปน
+แมลงวันหัวเขียว
+แมลบ
+แม่ลาย
+แม่เล้า
+แม่เลี้ยง
+แมว
+แม้ว
+แมวเซา
+แมวดาว
+แมวน้ำ
+แมวป่า
+แมวมอง
+แม่วี
+แม่สายบัวแต่งตัวค้าง
+แม่สี
+แม่สื่อ
+แม่หนัก
+แม่หยั่วเมือง
+แม่เหย้าแม่เรือน
+แม่เหล็ก
+แม่อยู่หัว
+แมะ
+โม
+โม่
+โม้
+โมก
+โมกข-
+โมกข์
+โมกขบริสุทธิ์
+โมกโคก
+โมกมัน
+โมกษ-
+โมกษะ
+โมกษะพยาน
+โมกใหญ่
+โมฆ-
+โมฆกรรม
+โมฆะ
+โมฆีย-
+โมฆียกรรม
+โมฆียะ
+โมง
+โม่ง
+โมงครุ่ม
+โม่งโค่ง
+โมจน-
+โมทนา
+โมน
+โมโนแซ็กคาไรด์
+โมไนย
+โมมูห์
+โมมูหะ
+โมเม
+โมเมนต์
+โมร-
+โมรกลาป
+โมรา
+โมรี
+โมเรส
+โมลิบดีนัม
+โมลี
+โมเลกุล
+โมษ
+โมษก
+โมษณ
+โมเสก
+โมเสส
+โมห-
+โม่ห์
+โมหะ
+โมหันธ์
+โมหาคติ
+โมโห
+ไม่
+ไม้
+ไม้กง
+ไมกา
+ไม้กากบาท
+ไม้กางเขน
+ไม่กี่น้ำ
+ไม่กี่อัฐ
+ไม่กี่อัฐฬส
+ไม้ใกล้ฝั่ง
+ไม้ขี้ฉ้อ
+ไม้ขีดไฟ
+ไม่เข้าใครออกใคร
+ไม่เข้ายา
+ไม้แข็ง
+ไม้คมแฝก
+ไมครอน
+ไม่ค่อย
+ไมโครกรัม
+ไมโครฟิล์ม
+ไมโครโฟน
+ไมโครมิเตอร์
+ไมโครเมตร
+ไมโครลิตร
+ไมโครเวฟ
+ไม่ใคร่
+ไม้งามกระรอกเจาะ
+ไม้จริง
+ไม้จัตวา
+ไม้จำปา
+ไม่ชอบมาพากล
+ไม่เชิง
+ไม่ใช่ขี้ไก่
+ไม้ดัด
+ไม้ดำ
+ไม่ดูดำดูดี
+ไม่ดูดำดูแดง
+ไม่ดูตาม้าตาเรือ
+ไม้เด็ด
+ไม้แดง
+ไม่ได้เบี้ยออกข้าว
+ไม่ได้เบี้ยเอาข้าว
+ไม่ได้ศัพท์
+ไม่ได้สิบ
+ไมตรี
+ไม้ตรี
+ไม้ตาย
+ไม้ตายขาน
+ไม้ตีพริก
+ไม่เต็มเต็ง
+ไม่เต็มบาท
+ไม่เต็มหุน
+ไม้ไต่คู้
+ไม่ถูกโรคกัน
+ไม้ทัณฑฆาต
+ไม่ทัน
+ไม้เท้า
+ไม้เท้ายายม่อม
+ไม้โท
+ไม้นวม
+ไม้นอกกอ
+ไม้นิ้ว
+ไม้บรรทัด
+ไม้เบื่อไม้เมา
+ไม้ป่าเดียวกัน
+ไม้เป็น
+ไม้ผัด
+ไม่พูดพร่ำทำเพลง
+ไม้โพ
+ไม่ฟังเสียง
+ไม้มลาย
+ไม้ม้วน
+ไม่มีปี่มีกลอง
+ไม่มีมูลฝอยหมาไม่ขี้
+ไม่มีวันเสียละ
+ไม้มืด
+ไม้มือ
+ไม้เมตร
+ไม้ยมก
+ไมยราบ
+ไม้ยามักการ
+ไม้ยาว
+ไม้ร่มนกจับ
+ไม่รู้จักเสือเอาเรือเข้ามาจอด ไม่รู้จักมอดเอาไม้เข้ามาวาง
+ไม่รู้จักหัวนอนปลายตีน
+ไม่รู้อีโหน่อีเหน่
+ไม้เรียว
+ไมล์
+ไม่ลงโบสถ์กัน
+ไม้ล้มเงาหาย
+ไม้ล้มลุก
+ไม้ลอย
+ไม้เลี้ยง
+ไม้ไล่
+ไม้วา
+ไม้สอย
+ไม้สั้น
+ไม้สั้นไม้ยาว
+ไม้สามอัน
+ไม่สู้
+ไม้สูง
+ไม้หน้า
+ไม้หมอน
+ไม้หมุน
+ไม้หลักปักเลน
+ไม้หันอากาศ
+ไม้หึ่ง
+ไม่เห็นน้ำตัดกระบอก ไม่เห็นกระรอกก่งหน้าไม้
+ไม่เหลือบ่ากว่าแรง
+ไม้อ่อนดัดง่าย ไม้แก่ดัดยาก
+ไม้อัด
+ไม้เอก
+ไม่เออออห่อหมก
+ไม้โอ
+ย
+ยก
+ยกกระบัตร
+ยกครู
+ยกเครื่อง
+ยกเค้า
+ยกตนข่มท่าน
+ยกตัวขึ้นเหนือลม
+ยกทรง
+ยกธงขาว
+ยกน
+ยกนิ้ว
+ยกพื้น
+ยกฟ้อง
+ยกภูเขาออกจากอก
+ยกมือ
+ยกเมฆ
+ยกยอ
+ยกย่อง
+ยกยอด
+ยกยอปอปั้น
+ยกเลิก
+ยกเว้น
+ยกไว้
+ยกหางตัวเอง
+ยกใหญ่
+ยง
+ยงโย่
+ยชุรเวท
+ยติ
+ยติภังค์
+ยถากรรม
+ยถาภูตญาณ
+ย่น
+ยนต์
+ยนตร์
+ย่นย่อ
+ยม
+ยม-
+ยมก
+ยมกปาฏิหาริย์
+ยมขันธ์
+ยมโดย
+ยมทัณฑ์
+ยมทูต
+ยมนา
+ยมบาล
+ยมราช
+ยมล
+ยมโลก
+ยรรยง
+ยล
+ยว
+ยวกสา
+ยวง
+ยวด
+ยวดยง
+ยวดยาน
+ยวดยิ่ง
+ยวน
+ยวนยี
+ยวบ
+ยวบๆ
+ยวบยาบ
+ย้วย
+ยวรยาตร
+ยวา
+ยวาคุ
+ยศ
+ยศอย่าง
+ยโส
+ยอ
+ย่อ
+ยอก
+ยอกย้อน
+ย็อกแย็ก
+ย็อกแย็กๆ
+ยอง
+ยองๆ
+ย่อง
+ย้อง
+ย่องกริบ
+ย่องเบา
+ย่องแย่ง
+ยองใย
+ยองไย่
+ย่องเหง็ด
+ยอด
+ยอดจาก
+ยอดด้วน
+ยอดดี
+ยอดน้ำ
+ยอดสร้อย
+ย่อท้อ
+ยอน
+ย้อน
+ย้อนเนื้อ
+ย้อนยอก
+ยอบ
+ยอบแยบ
+ย่อพล
+ยอม
+ย่อม
+ย้อม
+ยอมความ
+ย้อมใจ
+ย้อมแมวขาย
+ย่อมเยา
+ย่อมุม
+ย่อย
+ย้อย
+ย่อย่น
+ย่อยยับ
+ย่อแย่
+ย้อแย้
+ยอแสง
+ย่อหน้า
+ย่อหย่อน
+ย่อแหยง
+ยะ
+ย่ะ
+ยะงันจะคับ
+ยะยอบ
+ยะยัน
+ยะยับ
+ยะยาน
+ยะย้าย
+ยะย้าว
+ยะแย้ง
+ยะหิทา
+ยัก
+ยักกระสาย
+ยักข์
+ยักขินี
+ยักท่า
+ยักเพรีย
+ยักยอก
+ยักย้าย
+ยักยิ้ม
+ยักยี่ยักยัน
+ยักยี่ยักเหยา
+ยักเยื้อง
+ยักแย่ยักยัน
+ยักษ์
+ยักษ์ปักหลั่น
+ยักษ์มักกะสัน
+ยักษิณี
+ยักษี
+ยักหยาว
+ยักหล่ม
+ยัง
+ยั้ง
+ยังกาหลา
+ยังชั่ว
+ยั่งยืน
+ยังแล้ว
+ยังหยัง
+ยัชโญปวีต
+ยัชน
+ยัชมาน
+ยัญ
+ยัญ-
+ยัญกรรม
+ยัญญะ
+ยัญญังค์
+ยัญพิธี
+ยัฐิ
+ยัฐิมธุกา
+ยัด
+ยัดเยียด
+ยัติภังค์
+ยัน
+ยั่น
+ยันต์
+ยันตร-
+ยันตร์
+ยันตรกรรม
+ยั่นตะนี
+ยันเย้า
+ยับ
+ยับๆ
+ยับยง
+ยับย่อย
+ยับยั้ง
+ยับยั้งชั่งใจ
+ยับยาน
+ยับยาบ
+ยับเยิน
+ยั่ว
+ยั้ว
+ยั่วยวน
+ยั่วเย้า
+ยั้วเยี้ย
+ยัวรยาตร
+ยัษฏิ
+ยา
+ย่า
+ยาก
+ยากแค้น
+ยากจน
+ยากนาน
+ยากเย็น
+ยากไร้
+ยาเขียว
+ยาค
+ยาคุ
+ยาคู
+ยาง
+ย่าง
+ยางกราด
+ย่างตีน
+ย่างทราย
+ย่างเท้า
+ยางน่อง
+ยางบอน
+ยางพารา
+ยางมะตอย
+ย่างเยื้อง
+ยางลบ
+ยางสน
+ย่างสามขุม
+ยางอาย
+ยาจก
+ยาจน
+ยาจนก
+ยาจนา
+ยาจืด
+ยาใจ
+ยาฉุน
+ยาไฉน
+ยาชก
+ยาด
+ยาดา
+ยาดำ
+ยาแดง
+ยาตนา
+ยาตร
+ยาตรา
+ยาตั้ง
+ย่าทวด
+ยาธาตุ
+ยาน
+ย่าน
+ยานก
+ย่านกอบนาง
+ยานคาง
+ย่านซื่อ
+ย่านทราย
+ย่านนมควาย
+ย่านพาโหม
+ยานมาศ
+ย่านยาว
+ย่านลิเภา
+ยานัตถุ์
+ย่านาง
+ย่านางช้าง
+ยานี
+ยานุมาศ
+ยาบ
+ยาบๆ
+ยาปน-
+ยาปนมัต
+ยาฝอย
+ยาแฝด
+ยาม
+ยาม-
+ย่าม
+ยามกาลิก
+ยามเกา
+ยามตูดชาย
+ยามพาด
+ยามโยค
+ยามสามตา
+ยามักการ
+ยามิก
+ยาย
+ย้าย
+ยายทวด
+ยายี
+ยาเยีย
+ยาว
+ย้าว
+ยาวกาลิก
+ยาวชีวิก
+ยาวบั่น สั้นต่อ
+ยาวรี
+ยาวัส
+ยาสลบ
+ยาสั่ง
+ยาสูบ
+ยาเส้น
+ยาเสพย์ติด
+ยาเสพย์ติดให้โทษ
+ยาไส้
+ยาหม้อใหญ่
+ยาหมู่
+ยาหยัง
+ย่าหยา
+ยาหยี
+ยาหัด
+ยาอัด
+ยำ
+ย่ำ
+ย้ำ
+ยำเกรง
+ย่ำเทือก
+ยำยาม
+ย่ำยี
+ยำเยง
+ยำเยีย
+ย่ำแย่
+ย้ำเหยอ
+ยิก
+ยิกๆ
+ยิง
+ยิ่ง
+ยิงปืนนัดเดียว ได้นกสองตัว
+ยิงฟัน
+ยิ่งยวด
+ยิฏฐะ
+ยิฐ
+ยิน
+ยินแคลน
+ยินใจ
+ยินดี
+ยินมลาก
+ยินยอม
+ยินร้าย
+ยินลากขากดี
+ยิบ
+ยิบๆ
+ยิปซัม
+ยิปซี
+ยิ้ม
+ยิ้มกริ่ม
+ยิ้มแฉ่ง
+ยิ้มด้วยปาก ถากด้วยตา
+ยิมนาสติก
+ยิ้มแป้น
+ยิ้มย่อง
+ยิ้มเยาะ
+ยิ้มแย้ม
+ยิ้มละไม
+ยิ้มหัว
+ยิ้มเหย
+ยิ้มแห้ง
+ยิ้มแหย
+ยิหวา
+ยี
+ยี่
+ยี้
+ยี่ก่า
+ยี่เก
+ยี่เข่ง
+ยี่โถ
+ยี่โถฝรั่ง
+ยีน
+ยี่โป้
+ยี่ภู่
+ยียวน
+ยีราฟ
+ยี่สก
+ยี่สง
+ยี่สน
+ยี่สาน
+ยี่ส่าน
+ยี่สิบ
+ยี่สุ่น
+ยี่หระ
+ยี่หร่า
+ยี่หร่าหวาน
+ยี่ห้อ
+ยี่หุบ
+ยึกยือ
+ยึด
+ยึดครอง
+ยึดถือ
+ยึดทรัพย์
+ยึดเหนี่ยว
+ยืด
+ยืดยาด
+ยืดเยื้อ
+ยืดหยุ่น
+ยืน
+ยื่น
+ยืนกระต่ายสามขา
+ยืนกราน
+ยื่นแก้วให้วานร
+ยืนค้ำหัว
+ยืนเครื่อง
+ยื่นจมูก
+ยืนชิงช้า
+ยืนต้น
+ยืนพื้น
+ยื่นมือ
+ยืนยง
+ยืนยัน
+ยืนยาม
+ยืนโรง
+ยื่นหมูยื่นแมว
+ยืนหยัด
+ยืม
+ยืมจมูกคนอื่นหายใจ
+ยืมใช้คงรูป
+ยืมใช้สิ้นเปลือง
+ยื้อ
+ยื้อยุด
+ยุ
+ยุกกระบัตร
+ยุกดิ
+ยุกต์
+ยุกติ
+ยุกติธรรม
+ยุค
+ยุคเข็ญ
+ยุคนธร
+ยุคล
+ยุคลบาท
+ยุคันต-
+ยุคันต์
+ยุคันตวาต
+ยุคันธร
+ยุคุนธร
+ยุง
+ยุ่ง
+ยุ้ง
+ยุงกวาด
+ยุ่งขิง
+ยุ่งใจ
+ยุงปัด
+ยุงปัดแม่ม่าย
+ยุ่งยาก
+ยุ่งยิ่ง
+ยุ่งเหมือนยุงตีกัน
+ยุ่งเหยิง
+ยุด
+ยุต
+ยุติ-
+ยุติธรรม
+ยุทธ-
+ยุทธ์
+ยุทธการ
+ยุทธนา
+ยุทธนาการ
+ยุทธนาธิการ
+ยุทธภัณฑ์
+ยุทธภูมิ
+ยุทธโยธา
+ยุทธวิธี
+ยุทธวินัย
+ยุทธศาสตร์
+ยุทธหัตถี
+ยุทโธปกรณ์
+ยุบ
+ยุบยอบ
+ยุบยับ
+ยุบยิบ
+ยุบล
+ยุพ-
+ยุพดี
+ยุพยง
+ยุพเยาว์
+ยุพราช
+ยุพราชา
+ยุพเรศ
+ยุพา
+ยุพาน
+ยุพาพาล
+ยุพาพิน
+ยุ่มย่าม
+ยุ่ย
+ยุ้ย
+ยุยง
+ยุแยง
+ยุแยงตะแคงแซะ
+ยุแยงตะแคงรั่ว
+ยุรบาตร
+ยุรยาตร
+ยุว-
+ยุวชน
+ยุวดี
+ยุวราช
+ยุวราชา
+ยุวา
+ยุวาน
+ยุหบาตร
+ยุแหย่
+ยุให้รำตำให้รั่ว
+ยู
+ยู่
+ยูง
+ยูโด
+ยูถะ
+ยูถิกา
+ยูปะ
+ยู่ยี่
+ยูรยาตร
+ยูริก
+ยูเรนัส
+ยูเรเนียม
+ยูโรเพียม
+ยูษะ
+เยๆ
+เย้
+เยง
+เยซู
+เย็ด
+เย็น
+เย็นใจ
+เย็นชืด
+เย็นตา
+เย็นตาโฟ
+เย็นเตาโฟ
+เย็นเยียบ
+เย็นเยือก
+เย็นหู
+เย็บ
+เย็บกี่
+เย็บด้าย
+เย็บลวด
+เย็บเล่ม
+เย็บอก
+เยภุย-
+เยภุยนัย
+เยภุยยะ
+เยภุยสิกา
+เย้ย
+เยอ
+เย่อ
+เยอรมัน
+เยอว
+เย่อหยิ่ง
+เยอะ
+เยอะแยะ
+เยา
+เย้า
+เยาว-
+เยาว์
+เยาวชน
+เยาวน-
+เยาวนะ
+เยาวพา
+เยาวพาณี
+เยาวพาน
+เยาวมาลย์
+เยาวยอด
+เยาวราช
+เยาวเรศ
+เยาวลักษณ์
+เยาะ
+เยิง
+เยิน
+เยิ่น
+เยินยอ
+เยิ่นเย้อ
+เยิบๆ
+เยิบยาบ
+เยิ้ม
+เยีย
+เยี่ยง
+เยียงผา
+เยี่ยงอย่าง
+เยียดยัด
+เยียใด
+เยียน
+เยียบ
+เยี่ยม
+เยี่ยมๆ มองๆ
+เยี่ยมยอด
+เยี่ยมเยียน
+เยี่ยมเยือน
+เยี่ยมวิมาน
+เยียมั่ง
+เยียรบับ
+เยียรยง
+เยียว
+เยี่ยว
+เยี่ยวงัว
+เยียวยง
+เยียวยา
+เยี่ยวอูฐ
+เยียใหญ่
+เยือ
+เยื่อ
+เยื้อ
+เยือก
+เยือกเย็น
+เยื่อเคย
+เยือง
+เยื่อง
+เยื้อง
+เยื้องกราย
+เยื้องยัก
+เยือน
+เยื้อน
+เยื่อใย
+แย่
+แย้
+แยก
+แยกเขี้ยว
+แยกย้าย
+แยกแย้ง
+แยกแยะ
+แยง
+แย่ง
+แย้ง
+แยงยล
+แยงแย่
+แยงแย้
+แย่แต้
+แยบ
+แย็บ
+แยบคาย
+แยบยล
+แยม
+แย้ม
+แย้มพราย
+แยแส
+แยะ
+โย
+โย้
+โยก
+โยกตร์
+โยกย้าย
+โยกเยก
+โยกโย้
+โยค-
+โยคเกณฑ์
+โยคจักษุ
+โยคนิทรา
+โยคยะ
+โยคะ
+โยคาพจร
+โยคาวจร
+โยคิน
+โยคี
+โยง
+โย่ง
+โย่งๆ
+โย่งเย่ง
+โยงโย่
+โยชก
+โยชน์
+โยชนา
+โยด
+โยต
+โยถิกะ
+โยทะกา
+โยธ-
+โยธวาทิต
+โยธา
+โยธิน
+โยน
+โยนก
+โยนกลอง
+โยนกลอน
+โยนยาว
+โยนหลุม
+โยนห่วง
+โยนหัวโยนก้อย
+โยนิโส
+โยนิโสมนสิการ
+โยนี
+โยพนมัท
+โยพนะ
+โยม
+โยเย
+โย้เย้
+โยโส
+ใย
+ใยฟ้า
+ใยยอง
+ใยหิน
+ไย
+ไย่
+ไยดี
+ไยไพ
+ไยไย
+ไย่ไย่
+ร
+รก
+รกชัฏ
+รกช้าง
+รกบิน
+รกฟ้า
+รกราก
+รกร้าง
+รกเรี้ยว
+รง
+รงกุ์
+รงค-
+รงค์
+รงควัตถุ
+รงรอง
+รจนา
+รจเรข
+รจเลข
+รจิต
+รชกะ
+รชตะ
+รชนิ
+รชนี
+รชนีกร
+รชนีจร
+รชะ
+รณ
+รณ-
+รณเกษตร
+รณภู
+รณภูมิ
+รณรงค์
+รณสถาน
+รด
+รดน้ำ
+รดี
+รตนะ
+รตะ
+รติ
+รถ
+รถ-
+รถจักรยาน
+รถจักรยานยนต์
+รถฉุกเฉิน
+รถโดยสารประจำทาง
+รถปุงคพ
+รถปุงควะ
+รถไฟ
+รถไฟฟ้า
+รถยนต์
+รถยา
+รถานึก
+รเถสภะ
+รท
+รทนะ
+รน
+ร่น
+ร้น
+รนด
+รนหาที่
+รบ
+รบกวน
+รบรา
+รบเร้า
+รบส
+รบาญ
+รพ
+รพา
+รพิ
+รพี
+รม
+ร่ม
+ร่มเกล้า
+ร่มเกศ
+ร่มชูชีพ
+รมณี
+รมณีย-
+รมณีย์
+ร่มธง
+ร่มผ้า
+ร่มโพธิ์ร่มไทร
+ร่มไม้ชายคา
+รมย์
+ร่มเย็น
+รมเยศ
+รยะ
+รยางค์
+รวก
+รวง
+ร่วง
+รวงผึ้ง
+ร่วงรุ้ง
+ร่วงโรย
+รวด
+รวดเดียว
+รวดเร็ว
+รวน
+ร่วน
+รวนเร
+รวบ
+รวบรวม
+รวบรัด
+รวบหัวรวบหาง
+รวม
+ร่วม
+ร่วมใจ
+ร่วมท้อง
+ร่วมประเวณี
+ร่วมเพศ
+ร่วมมือ
+ร่วมรัก
+ร่วมเรียงเคียงหมอน
+ร่วมหอลงโรง
+รวมหัว
+ร่วมหัวงาน
+ร่วมอุทร
+รวย
+รวยๆ
+รวยริน
+รวยรื่น
+รวะ
+รวิ
+รวิวาร
+รวี
+รศนา
+รส
+รสก
+รสชาติ
+รสนา
+รสนิยม
+รสสุคนธ์
+รสายนเวท
+รสิก
+รหัท
+รหัส
+รหิต
+รโห
+รโหคต
+รโหฐาน
+รอ
+ร่อ
+รอก
+รอง
+ร่อง
+ร้อง
+ร้องขอ
+รองคอ
+รองเง็ง
+รองจ่าย
+รองช้ำ
+ร้องฎีกา
+รองทรง
+รองท้อง
+ร้องทุกข์
+รองทุน
+รองเท้า
+ร่องน้ำ
+รองบ่อน
+รองพื้น
+ร้องเพลง
+ร่องมด
+ร้องโยนยาว
+ร่องรอย
+รองรัง
+ร้องเรียกร้องหา
+ร้องเรียน
+ร้องเรือ
+ร้องแรก
+ร่องแร่ง
+ร้องส่ง
+ร้องห่ม
+ร้องห่มร้องไห้
+ร้องไห้
+รอด
+รอดชีวิต
+รอดตัว
+รอดหูรอดตา
+รอน
+รอนๆ
+ร่อน
+ร้อน
+ร้อนตัว
+ร่อนทอง
+ร้อนผ้าเหลือง
+ร้อนรน
+ร่อนร่อน
+ร่อนรับร่อนเร่
+ร่อนเร่
+รอนแรม
+ร้อนวิชา
+รอนสิทธิ์
+ร้อนอาสน์
+รอบ
+รอบคอบ
+รอบรู้
+รอม
+รอมชอม
+รอมร่อ
+รอย
+ร่อย
+ร้อย
+ร้อยกรอง
+ร้อยแก้ว
+ร้อยชั่ง
+ร้อยทั้งร้อย
+ร้อยแปด
+รอยร้าว
+ร้อยลิ้น
+ร้อยลิ้นกะลาวน
+ร้อยสีร้อยอย่าง
+ร่อยหรอ
+ร้อยหวาย
+ร้อยหวี
+ร้อยเอ็ด
+ร้อยเอ็ดเจ็ดหัวเมือง
+ร่อแร่
+ระ
+ระกะ
+ระกา
+ระกำ
+ระกำนา
+ระกำป่า
+ระเกะระกะ
+ระคน
+ระคาง
+ระคาย
+ระเค็ดระคาย
+ระแคะ
+ระแคะระคาย
+ระฆัง
+ระงม
+ระงมไพร
+ระงับ
+ระงับพิษ
+ระงี่
+ระแง้
+ระโงกหิน
+ระชวย
+ระดม
+ระดะ
+ระดับ
+ระดับทะเล
+ระดับทะเลปานกลาง
+ระดา
+ระด่าว
+ระดู
+ระดูขาว
+ระเด่น
+ระเดียง
+ระแด
+ระตู
+ระทก
+ระทด
+ระทม
+ระทวย
+ระทอด
+ระทา
+ระทึก
+ระทึง
+ระแทะ
+ระนัม
+ระนาด
+ระนาดแก้ว
+ระนาดทุ้ม
+ระนาดเอก
+ระนาบ
+ระนาบเอียง
+ระนาม
+ระนาว
+ระเนน
+ระเนระนาด
+ระเนียด
+ระแนง
+ระแนะ
+ระบบ
+ระบบสุริยะ
+ระบม
+ระบอบ
+ระบัด
+ระบับ
+ระบาญ
+ระบาด
+ระบานี
+ระบานี้
+ระบาย
+ระบายสี
+ระบำ
+ระบิ
+ระบิล
+ระบิลเมือง
+ระบือ
+ระบุ
+ระเบง
+ระเบ็ง
+ระเบิด
+ระเบิดขวด
+ระเบิดทำลาย
+ระเบิดน้ำตา
+ระเบิดปรมาณู
+ระเบิดเพลิง
+ระเบิดมือ
+ระเบิดเวลา
+ระเบิดไฮโดรเจน
+ระเบียง
+ระเบียน
+ระเบียบ
+ระเบียบการ
+ระเบียบวาระ
+ระแบบ
+ระใบ
+ระฟ้า
+ระมัดระวัง
+ระมา
+ระมาด
+ระเมียร
+ระย่อ
+ระย่อม
+ระยะ
+ระยัง
+ระยั้ง
+ระยัด
+ระยับ
+ระย้า
+ระยาน
+ระยาบ
+ระยำ
+ระยำตำบอน
+ระยิบระยับ
+ระโยง
+ระโยงระยาง
+ระรวย
+ระรอง
+ระร่อน
+ระรัว
+ระราน
+ระร่าย
+ระราว
+ระริก
+ระรี่
+ระรึง
+ระรื่น
+ระรื้น
+ระเร
+ระเร่
+ระเร้ง
+ระเร็ว
+ระเริง
+ระเรียง
+ระเรียม
+ระเรื่อย
+ระแร่
+ระแรง
+ระลง
+ระลวง
+ระลอก
+ระลอง
+ระลัด
+ระลัดได
+ระลึก
+ระลุก
+ระลุง
+ระเลิง
+ระเลียด
+ระวัง
+ระวังไพร
+ระวังวัน
+ระวาง
+ระวาดระไว
+ระวาม
+ระวาย
+ระวิง
+ระแวง
+ระแวดระวัง
+ระไว
+ระสะเก็ด
+ระสาย
+ระส่ำระสาย
+ระสี
+ระเสิดระสัง
+ระหกระเหิน
+ระหง
+ระหวย
+ระหว่าง
+ระหองระแหง
+ระหอบ
+ระหัด
+ระหาย
+ระหุย
+ระเห็จ
+ระเหย
+ระเหระหน
+ระเหหน
+ระเหหัน
+ระเหิด
+ระเหินระหก
+ระแหก
+ระแหง
+ระโหย
+ระอมระอา
+ระอา
+ระอิดระอา
+ระอุ
+รัก
+รักข์
+รักขสะ
+รักขา
+รักขิต
+รักดป
+รักดะ
+รักดีหามจั่ว รักชั่วหามเสา
+รักตะ
+รักบี้
+รักพี่เสียดายน้อง
+รักยม
+รักยาวให้บั่น รักสั้นให้ต่อ
+รักร้อย
+รักเร่
+รักแร้
+รักษ์
+รักษา
+รักษาการ
+รักษาการณ์
+รักหมู
+รัง
+รั้ง
+รังกา
+รังเกียจ
+รังแก
+รังไข่
+รังค์
+รังควาน
+รังแค
+รังดุม
+รังแตน
+รังนก
+รังนาน
+รังบวบ
+รังผึ้ง
+รังเพลิง
+รังมด
+รังรอง
+รังรักษ์
+รังเรข
+รังแรก
+รังวัด
+รังสรรค์
+รังสรัง
+รังสฤษฏ์
+รังสิ
+รังสิมันตุ์
+รังสิมา
+รังสี
+รังสีความร้อน
+รังสีคอสมิก
+รังสีแพทย์
+รังสีวิทยา
+รังสีเหนือม่วง
+รังหยาว
+รัจฉา
+รัช
+รัช-
+รัชกะ
+รัชกาล
+รัชชุ
+รัชชูปการ
+รัชฎาภิเษก
+รัชด-
+รัชดาภิเษก
+รัชต-
+รัชทายาท
+รัชนะ
+รัชนี
+รัชนีกร
+รัญจวน
+รัฏฐาภิปาลโนบาย
+รัฐ
+รัฐ-
+รัฐทูต
+รัฐธรรมนูญ
+รัฐบาล
+รัฐบุรุษ
+รัฐประศาสน์
+รัฐประศาสนนัย
+รัฐประศาสนศาสตร์
+รัฐประศาสโนบาย
+รัฐประหาร
+รัฐมนตรี
+รัฐวิสาหกิจ
+รัฐศาสตร์
+รัฐสภา
+รัด
+รัดกุม
+รัดเกล้า
+รัดเข็มขัด
+รัดช้อง
+รัดตัว
+รัดทึบ
+รัดประคด
+รัดประคน
+รัดพัสตร์
+รัดรึง
+รัดรูป
+รัต
+รัต-
+รัตกัมพล
+รัตคน
+รัตจันทน์
+รัตตัญญู
+รัตติ
+รัตติกาล
+รัตน-
+รัตน์
+รัตนโกสินทร์
+รัตนตรัย
+รัตนบัลลังก์
+รัตนสิงหาสน์
+รัตนะ
+รัตนา
+รัตนากร
+รัตนาวลี
+รัตมณี
+รัตมา
+รัถ
+รัถยา
+รัทเทอร์ฟอร์เดียม
+รัน
+รั้น
+รันชนรันแชง
+รันทด
+รันทวย
+รันทำ
+รันแทะ
+รันธะ
+รับ
+รับขวัญ
+รับแขก
+รับคำ
+รับจ้าง
+รับท้อง
+รับประกัน
+รับประทาน
+รับปาก
+รับผิด
+รับผิดชอบ
+รับมือ
+รับรอง
+รับเรือน
+รับสั่ง
+รับหน้า
+รับไหว้
+รัมก-
+รัมณีย-
+รัมภา
+รัมมี่
+รัมย์
+รัย
+รัว
+รั่ว
+รั้ว
+รั้วไก่
+รัศมิมัต
+รัศมิมาน
+รัศมี
+รัษฎากร
+รัส-
+รัสสระ
+รัสสะ
+รา
+ร่า
+ร้า
+ราก
+รากแก้ว
+รากขวัญ
+รากฐาน
+รากดิน
+รากฝอย
+รากฟัน
+รากศัพท์
+รากษส
+รากโษส
+รากสาด
+รากสาดน้อย
+รากสาดใหญ่
+รากสามสิบ
+รากเหง้า
+ราข้อ
+ราคะ
+ราคา
+ราคาตลาด
+ราคิน
+ราคี
+ราง
+ร่าง
+ร้าง
+ร่างกาย
+รางจืด
+รางชาง
+รางดำ
+รางแดง
+รางนาน
+รางบรรทัด
+ร่างร้าน
+รางวัล
+ร่างแห
+ราช
+ราช-
+ราชการ
+ราชกิจจานุเบกษา
+ราชครู
+ราชญี
+ราชดัด
+ราชทัณฑ์
+ราชทินนาม
+ราชทูต
+ราชโทรหะ
+ราชธรรม
+ราชธานี
+ราชนิกุล
+ราชนีติ
+ราชบัณฑิต
+ราชบาตร
+ราชบุตร
+ราชบุรุษ
+ราชปะแตน
+ราชพฤกษ์
+ราชภัฏ
+ราชมัล
+ราชมาณพ
+ราชมาษ
+ราชมาส
+ราชย์
+ราชยาน
+ราชโยค
+ราชโยงการ
+ราชรถมาเกย
+ราชวงศ์
+ราชวรมหาวิหาร
+ราชวรวิหาร
+ราชวโรงการ
+ราชวัติ
+ราชศาสตร์
+ราชสกุล
+ราชสันตติวงศ์
+ราชสาสน์
+ราชสีห์
+ราชสีห์ตัวผู้
+ราชสีห์ตัวเมีย
+ราชสีห์สองตัวอยู่ถ้ำเดียวกันไม่ได้
+ราชสูยะ
+ราชหัตถเลขา
+ราชองครักษ์
+ราชโองการ
+ราชะ
+ราชัน
+ราชันย์
+ราชัย
+ราชา
+ราชาคณะ
+ราชาโชค
+ราชาธิราช
+ราชาภิเษก
+ราชายตนะ
+ราชาฤกษ์
+ราชาวดี
+ราชาวลี
+ราชาศัพท์
+ราชิ
+ราชินิกุล
+ราชินี
+ราชินีกุล
+ราชินีนาถ
+ราชินูปถัมภ์
+ราชี
+ราชูปถัมภ์
+ราชูปโภค
+ราเชน
+ราเชนทร์
+ราเชนทรยาน
+ราโชงการ
+ราโชปถัมภ์
+ราโชปโภค
+ราโชวาท
+ราไชศวรรย์
+ราญ
+ราญรอน
+ราด
+ราต
+ราตร
+ราตรี
+ราตรีประดับดาว
+ราโท
+ราน
+ร่าน
+ร้าน
+ร้านม้า
+ราบ
+ราบคาบ
+ราบเป็นหน้ากลอง
+ราบรื่น
+ราบเรียบ
+ราปีก
+ราพณ์
+ราพณาสูร
+ราม
+รามเกียรติ์
+รามสูร
+รามัญ
+รามา
+ราย
+ร่าย
+ร้าย
+ร้ายกาจ
+รายการ
+รายงาน
+รายงานการประชุม
+รายจ่าย
+รายทาง
+ร่ายไม้
+ร่ายรัง
+รายรับ
+ร้ายแรง
+รายวิชา
+ร่าเริง
+ราเริด
+ราแรม
+ราว
+ร้าว
+ราวกะ
+ราวกับ
+ราวข่าว
+ร้าวฉาน
+ราวป่า
+ร้าวราน
+ราวี
+ราศี
+ราษฎร
+ราษฎร์
+ราษตรี
+ราษราตริน
+ราษราตรี
+ราสี
+ราหุ
+ร่าหุ์
+ราหู
+รำ
+ร่ำ
+รำเขนง
+รำคาญ
+รำโคม
+รำงับ
+รำจวน
+รำชั่วโทษพากย์
+รำซุย
+รำเท้า
+รำบาญ
+ร่ำไป
+รำผี
+รำพัด
+รำพัดชา
+รำพัน
+รำพาย
+รำพึง
+รำเพย
+รำแพน
+รำไพ
+รำมะแข
+รำมะนา
+รำมะนาด
+รำมะร่อ
+รำไม่ดีโทษปี่โทษกลอง
+รำยวน
+รำย้อย
+รำแย้
+รำรงค์
+ร่ำรวย
+รำราญ
+รำรำ
+ร่ำรี้ร่ำไร
+รำเร
+ร่ำเรียน
+รำไร
+ร่ำไร
+รำลึก
+รำวง
+รำหัด
+รำหัส
+ร่ำไห้
+ริ
+ริก
+ริกๆ
+ริดสีดวง
+ริน
+รินๆ
+ริ้น
+ริบ
+ริบทรัพย์สิน
+ริบบิ้น
+ริบราชบาตร
+ริบรี่
+ริบหรี่
+ริปอง
+ริปุ
+ริปู
+ริม
+ริมฝีปาก
+ริเริ่ม
+ริ้ว
+ริษยา
+ริอ่าน
+รี
+รี่
+รี้
+รีๆ ขวางๆ
+รีด
+รีดนาทาเน้น
+รีดนาทาเร้น
+รีดลูก
+รีดักชัน
+รีต
+รีเนียม
+รีบ
+รีบรุด
+รี้พล
+รีม
+รีรอ
+รีๆ รอๆ
+รี้ริก
+รึกต์
+รึง
+รึ้ง
+รื่น
+รื้น
+รื่นรมย์
+รื่นเริง
+รื้อ
+รื้อแต่หลังคาเขา หลังคาเราไม่รื้อ
+รื้อฟื้น
+รุ
+รุก
+รุกข-
+รุกข์
+รุกขกะ
+รุกขชาติ
+รุกขมูล
+รุกขมูลิกธุดงค์
+รุกขา
+รุกฆาต
+รุกร้น
+รุกราน
+รุกรุย
+รุกษะ
+รุข้าว
+รุ่ง
+รุ้ง
+รุ่งเช้า
+รุ้งพราย
+รุ้งร่วง
+รุงรัง
+รุ่งเรือง
+รุ่งโรจน์
+รุจ
+รุจน
+รุจา
+รุจิ
+รุจิระ
+รุจิรา
+รุจิเรข
+รุจี
+รุชา
+รุด
+รุดหน้า
+รุต
+รุทธ์
+รุทร
+รุธิร
+รุเธียร
+รุน
+รุ่น
+รุ่นกระทง
+รุ่นตะกอ
+รุ่นราวคราวเดียวกัน
+รุนแรง
+รุบรู่
+รุบาการ
+รุม
+รุ่ม
+รุมไข้
+รุมไฟ
+รุ่มรวย
+รุ่มร่าม
+รุย
+รุ่ย
+รุ่ยร่าย
+รุรุ
+รุษฏ์
+รุหะ
+รุหาญ
+รู
+รู่
+รู้
+รู้แกว
+รู้ความ
+รู้คิด
+รู้คิดรู้อ่าน
+รู้คุณ
+รู้งูๆ ปลาๆ
+รู้จัก
+รู้จักเก็บรู้จักเขี่ย
+รู้จักเก็บรู้จักงำ
+รู้จักมักคุ้น
+รู้จักมักจี่
+รูจี
+รู้ฉลาด
+รู้เช่นเห็นชาติ
+รูด
+รู้ตัว
+รู้ตื้นลึกหนาบาง
+รู้ทัน
+รู้ที
+รูทีเนียม
+รู้เท่า
+รู้เท่าไม่ถึงการณ์
+รู้น้อยพลอยรำคาญ
+รูบิเดียม
+รูป
+รูป-
+รูปชี
+รูปธรรม
+รูปพยัญชนะ
+รูปพรรณ
+รูปภาพ
+รูปร่าง
+รูปลอก
+รูปสมบัติ
+รูปสระ
+รูปิยะ
+รูปี
+รู้มลัก
+รู้มลาก
+รู้มาก
+รู้มากยากนาน
+รู้ยาวรู้สั้น
+รูเล็ตต์
+รู้ไว้ใช่ว่า ใส่บ่าแบกหาม
+รู้สึก
+รู้ไส้
+รู้หลบเป็นปีก รู้หลีกเป็นหาง
+รูหะ
+รู้หาญรู้ขลาด
+รู้เห็น
+รู้เห็นเป็นใจ
+รู้อย่างเป็ด
+รู้อยู่
+รู้เองเป็นเอง
+เร่
+เรข
+เรขา
+เรขาคณิต
+เรขาคณิตบริสุทธิ์
+เรขาคณิตวิเคราะห์
+เร็ง
+เร่ง
+เร้ง
+เร่งมือ
+เร่งรัด
+เร่งร่าย
+เร่งรีบ
+เร่งเร้า
+เรณุ
+เรณุก
+เรณู
+เรดอน
+เรดาร์
+เรเดียม
+เร้น
+เร้นลับ
+เรรวน
+เร่ร่อน
+เร่ร่าย
+เรไร
+เร็ว
+เร่ว
+เรวดี
+เรอ
+เร่อ
+เร่อร่า
+เรา
+เร่า
+เร่าๆ
+เร้า
+เร่าร้อน
+เราะ
+เราะราย
+เราะร้าย
+เริง
+เริด
+เริม
+เริ่ม
+เริ้ม
+เริศร้าง
+เรี่ย
+เรี้ยๆ
+เรียก
+เรียกเนื้อ
+เรียง
+เรียงๆ
+เรียงความ
+เรียงพิมพ์
+เรียงพี่เรียงน้อง
+เรียงรัน
+เรียงราย
+เรียงหน้ากระดาน
+เรียงหมอน
+เรียด
+เรียน
+เรียนปฏิบัติ
+เรียนผูกต้องเรียนแก้
+เรียบ
+เรียบๆ
+เรียบร้อย
+เรียบเรียง
+เรียบวุธ
+เรียม
+เรี่ยม
+เรี่ยราด
+เรี่ยราย
+เรี่ยไร
+เรียว
+เรี่ยว
+เรี้ยวรก
+เรี่ยวแรง
+เรียวหนาม
+เรือ
+เรื่อ
+เรื้อ
+เรือก
+เรือกสวน
+เรือขนาน
+เรือขาดหางเสือ
+เรือง
+เรื่อง
+เรื้อง
+เรืองนาม
+เรืองรอง
+เรื่องราว
+เรืองไร
+เรื่องสั้น
+เรืองอำนาจ
+เรือด
+เรือดไม้
+เรือน
+เรื้อน
+เรือนแก้ว
+เรือนเครื่องผูก
+เรือนเครื่องสับ
+เรือนจำ
+เรือนตะเกียง
+เรือนธาตุ
+เรือนเบี้ย
+เรือนฝากระดาน
+เรือนแฝด
+เรือนแพ
+เรือนไฟ
+เรือนยอด
+เรือนหอ
+เรือบิน
+เรือพ่วง
+เรือไฟ
+เรื่อย
+เรื้อย
+เรื่อยเจื้อย
+เรื่อยเปื่อย
+เรือโยง
+เรือรบ
+เรื้อรัง
+เรือล่มในหนอง ทองจะไปไหน
+เรือล่มเมื่อจอด ตาบอดเมื่อแก่
+เรือแหวด
+เรือใหญ่คับคลอง
+แร
+แร่
+แรก
+แร็กเกต
+แรกนา
+แรกนาขวัญ
+แรง
+แร่ง
+แร้ง
+แรงงาน
+แรงงานและสวัสดิการสังคม
+แรงงานสัมพันธ์
+แรงดึงดูด
+แรงเทียน
+แรงม้า
+แร่งริ้ว
+แรงสู่ศูนย์กลาง
+แรงหนีศูนย์กลาง
+แรงเหวี่ยง
+แร่งไหม
+แรเงา
+แรด
+แรดตัวผู้
+แรดตัวเมีย
+แร้นแค้น
+แรม
+แรมรอน
+แรมรา
+แรมโรย
+แร้ว
+แรเส้น
+แระ
+โร
+โร่
+โรค
+โรค-
+โรคจิต
+โรคจิตเภท
+โรคนิทาน
+โรคประจำตัว
+โรคประสาท
+โรคระบบประสาท
+โรคศิลปะ
+โรคสมอง
+โรคา
+โรคาพยาธิ
+โรคาพาธ
+โรง
+โรงคัล
+โรงงาน
+โรงธาร
+โรงธารคำนัล
+โรงนา
+โรงรับจำนำ
+โรงเรียน
+โรงเรียนประจำ
+โรงเรียนสาธิต
+โรงเรือน
+โรงแรม
+โรงแสง
+โรจ
+โรจน์
+โรเดียม
+โรตี
+โรตีสายไหม
+โรท
+โรทนะ
+โรธ
+โรธร
+โรปนะ
+โรม
+โรมมัย
+โรมรัน
+โรมัญจ
+โรมัน
+โรมันคาทอลิก
+โรเมอร์
+โรย
+โรยขนมจีน
+โรยรา
+โรยหน้า
+โรเร
+โรษ
+โรษณะ
+โรหิณี
+โรหิต
+ไร
+ไร่
+ไร้
+ไรฟัน
+ไรย์
+ไรเรือง
+ฤ
+ฤกษ์
+ฤกษณะ
+ฤกษ์บน
+ฤกษ์พานาที
+ฤกษ์ล่าง
+ฤคเวท
+ฤชา
+ฤชากร
+ฤชุ
+ฤณ
+ฤดี
+ฤดียา
+ฤดู
+ฤดูกาล
+ฤต
+ฤติยา
+ฤตุ
+ฤตุสนาน
+ฤทธา
+ฤทธิ์
+ฤทัย
+ฤษภ
+ฤษยา
+ฤษี
+ฤๅ
+ฤๅชุ
+ฤๅชุตา
+ฤๅดี
+ฤๅทัย
+ฤๅเยา
+ฤๅษี
+ฤๅษีแปลงสาร
+ฤๅษีผสมแล้ว
+ฤๅษีเลี้ยงลิง
+ฤๅสาย
+ล
+ลก
+ลการ
+ลกุจ
+ลคุฑ
+ลคุฬ
+ลฆุ
+ลฆุจิต
+ลฆุภาพ
+ลฆุโภชน์
+ลง
+ล่ง
+ลงกลอน
+ลงกา
+ลงขัน
+ลงข่าว
+ลงแขก
+ลงคอ
+ลงเงิน
+ลงชื่อ
+ลงแดง
+ลงตัว
+ลงทอง
+ลงท้อง
+ลงท่า
+ลงท้าย
+ลงทุน
+ลงโทษ
+ลงนา
+ลงเนื้อเห็นด้วย
+ลงโบสถ์
+ลงแป้ง
+ลงผี
+ลงฝัก
+ลงพระบังคน
+ลงพื้น
+ลงพุง
+ลงมีด
+ลงมือ
+ลงยา
+ลงรอยกัน
+ลงรัก
+ลงราก
+ลงแรง
+ลงโรง
+ล้งเล้ง
+ลงสรง
+ลงหญ้าช้าง
+ลงหิน
+ลงอาชญา
+ลงอาญา
+ลงอุโบสถ
+ลงเอย
+ลด
+ลดเขื่อน
+ลดราวาศอก
+ลดละ
+ลดเลี้ยว
+ลดเลี้ยวเกี้ยวพา
+ลดหย่อน
+ลดหลั่น
+ลดา
+ลดาวัลย์
+ลน
+ล่น
+ล้น
+ล้นเกล้าล้นกระหม่อม
+ลนควัน
+ล้นพ้น
+ลนลาน
+ล้นหลาม
+ลบ
+ลบม
+ลบรอย
+ลบล้าง
+ลบเลือน
+ลบโลก
+ลบศักราช
+ลบหลู่
+ลบเหลี่ยม
+ลบอง
+ลปก
+ลปน
+ลพ
+ลพุช
+ลม
+ลมๆ
+ล่ม
+ล้ม
+ลมกรด
+ลมขึ้น
+ล้มคว่ำ
+ลมค้า
+ลมงวง
+ล่มจม
+ลมจับ
+ลมแดง
+ลมทวนลมค้า
+ลมทะเล
+ล้มทั้งยืน
+ลมบก
+ลมบ้าหมู
+ลมปราณ
+ลมปาก
+ลมพัดชายเขา
+ลมพัดหลวง
+ลมพิษ
+ลมเพลมพัด
+ล่มฟ้า
+ลมไม่ดี
+ลมล่อง
+ล้มละลาย
+ล้มลุก
+ล้มลุกคลุกคลาน
+ล้มเลิก
+ลมแล้ง
+ลมๆ แล้งๆ
+ลมว่าว
+ลมเสีย
+ล้มหมอนนอนเสื่อ
+ลมาด
+ลรรลุง
+ลลนา
+ลลาฏ
+ลลิต
+ลวก
+ลวง
+ล่วง
+ล้วง
+ล้วงกระเป๋า
+ล่วงเกิน
+ล่วงขื่อ
+ลวงค์
+ล้วงคองูเห่า
+ล่วงคำ
+ล้วงตับ
+ลวงตา
+ล่วงประเวณี
+ล่วงแป
+ล่วงพ้น
+ล้วงมือ
+ล่วงรู้
+ล่วงลับ
+ล่วงล้ำ
+ล่วงเลย
+ลวงเล้า
+ล่วงว่า
+ล่วงเวลา
+ล้วงไส้
+ล่วงหน้า
+ลวณะ
+ลวด
+ลวดลาย
+ลวดสปริง
+ลวดหนัง
+ลวดหนาม
+ล้วน
+ล้วนๆ
+ลวนลาม
+ลวนะ
+ล่วม
+ลวะ
+ลวิตร
+ลหุ
+ลหุก-
+ลหุกะ
+ลหุกาบัติ
+ลหุโทษ
+ล่อ
+ล้อ
+ลอก
+ล็อกเกต
+ลอกคราบ
+ลอกท้องร่อง
+ลอกเลน
+ลอกแลก
+ลอการิทึม
+ลอง
+ล่อง
+ลองกอง
+ล่องแก่ง
+ล่องจวน
+ลองจิจูด
+ลองใจ
+ล่องชาด
+ลองเชิง
+ลองดี
+ล่องถุน
+ลองธรรม์
+ลองใน
+ลองไน
+ลองภูมิ
+ล่องแมว
+ล่องหน
+ลอด
+ลอดช่อง
+ลอน
+ล่อน
+ล่อนแก่น
+ล่อนจ้อน
+ลอนทอง
+ลอบ
+ลอบกัด
+ลอม
+ล้อม
+ลอมชอม
+ล้อมปรวด
+ลอมพอก
+ล้อมวง
+ลอย
+ลอยๆ
+ล่อยๆ
+ลอยกระทง
+ลอยแก้ว
+ลอยคอ
+ลอยช้อน
+ลอยชาย
+ลอยดอก
+ลอยตัว
+ลอยนวล
+ลอยบาป
+ลอยแพ
+ลอยฟ้า
+ลอยเมฆ
+ลอยลำ
+ลอยหน้า
+ล่อลวง
+ล้อเลียน
+ล้อเลื่อน
+ล่อแล่
+ลอว์เรนเซียม
+ล่อหลอก
+ล้อหลอก
+ล่อแหลม
+ลออ
+ละ
+ล่ะ
+ละกล
+ละกูมะนิส
+ละขัดละขืน
+ละคร
+ละครยก
+ละคิ
+ละคึก
+ละงาด
+ละงิด
+ละติจูด
+ละทิ้ง
+ละบม
+ละบอง
+ละบองไฟ
+ละบองราหู
+ละบัด
+ละบือ
+ละเบ็ง
+ละโบม
+ละม่อม
+ละมั่ง
+ละมา
+ละมาน
+ละม้าย
+ละมุ
+ละมุด
+ละมุน
+ละมุนละไม
+ละเม็ด
+ละเมอ
+ละเมาะ
+ละเมิด
+ละเมิดลิขสิทธิ์
+ละเมิน
+ละเมียด
+ละเมียบ
+ละแมะ
+ละโมก
+ละโมบ
+ละไม
+ละรี
+ละลด
+ละลนละลาน
+ละลมละลาย
+ละลวย
+ละลอก
+ละลอบละเล้า
+ละลัง
+ละลัด
+ละล้า
+ละลาน
+ละลาบละล้วง
+ละลาย
+ละล้าละลัง
+ละล้าว
+ละล่ำละลัก
+ละลิบ
+ละลุง
+ละลุม
+ละเลง
+ละเลงขนมเบื้องด้วยปาก
+ละเลย
+ละเล้า
+ละเลาะ
+ละเลาะละลอง
+ละเลิง
+ละเลียด
+ละเลียบ
+ละเลือก
+ละไล้
+ละวล
+ละว้อ
+ละว้า
+ละวาง
+ละวาด
+ละเวง
+ละเว้น
+ละแวก
+ละโว้
+ละหมาด
+ละหมาดญานาซะฮ์
+ละหลัด
+ละห้อย
+ละหาน
+ละหุ่ง
+ละเหย
+ละเหี่ย
+ละองละมั่ง
+ละออง
+ละอาย
+ละเอียด
+ละเอียดลออ
+ละแอน
+ลัก
+ลักไก่
+ลักขณะ
+ลักขณา
+ลักขะ
+ลักขี
+ลักเค้า
+ลักจั่น
+ลักปิดลักเปิด
+ลักพา
+ลักเพศ
+ลักยิ้ม
+ลักลอบ
+ลักลั่น
+ลักลาย
+ลักเลียม
+ลักศพ
+ลักษณ-
+ลักษณนาม
+ลักษณะ
+ลักษณาการ
+ลักษมณ์
+ลักษมาณา
+ลักษมี
+ลักษะ
+ลักสร้อย
+ลักสี
+ลักหลับ
+ลัคคะ
+ลัคน-
+ลัคน์
+ลัคนา
+ลัง
+ลั่ง
+ลังกา
+ลังคิ
+ลังคี
+ลังถึง
+ลังลอง
+ลังเล
+ลังสาด
+ลัชชา
+ลัชชี
+ลัญจ์
+ลัญจกร
+ลัญฉ
+ลัญฉกร
+ลัญฉน์
+ลัฐิ
+ลัฐิกา
+ลัด
+ลัดนิ้วมือ
+ลัดเนื้อ
+ลัดเลาะ
+ลัดแลง
+ลัดวงจร
+ลัดา
+ลัทธ์
+ลัทธิ
+ลัน
+ลั่น
+ลั่นกุญแจ
+ลั่นไก
+ลั่นฆ้อง
+ลั่นดาล
+ลันเต
+ลันเตา
+ลันไต
+ลั่นถัน
+ลั่นทม
+ลันทวย
+ลันโทม
+ลั่นนก
+ลั่นปาก
+ลั่นวาจา
+ลับ
+ลับตา
+ลับปาก
+ลับฝีปาก
+ลับลมคมใน
+ลับล่อ
+ลับๆ ล่อๆ
+ลับลี้
+ลับแล
+ลับสมอง
+ลับหลัง
+ลับหู
+ลัพธ์
+ลัพธิ
+ลัภ
+ลัภนะ
+ลัภย์
+ลัมพ์
+ลัย
+ลัย-
+ลัยกาล
+ลัยคต
+ลา
+ล่า
+ล้า
+ลาก
+ลากข้าง
+ลากษา
+ลากเส้น
+ลากหนามจุกช่อง
+ลาขา
+ลาข้าวพระ
+ลาง
+ล่าง
+ล้าง
+ลางคัล
+ล้างแค้น
+ลางงิด
+ล้างท้อง
+ลางที
+ลางเนื้อชอบลางยา
+ล้างปาก
+ล้างป่าช้า
+ล้างผลาญ
+ล้างไพ่
+ล้างมือ
+ลางลิง
+ล้างโลก
+ล้างสมอง
+ลางสาด
+ล้างอาย
+ลางาด
+ล้างาด
+ลาเง็ด
+ลาช
+ลาชา
+ลาญ
+ลาญทัก
+ลาด
+ลาดเขา
+ลาดตระเวน
+ลาดทวีป
+ลาดเท
+ลาดพระบาท
+ลาดยาง
+ลาดเลา
+ล้าต้า
+ลาตาย
+ล่าเตียง
+ล้าเตียง
+ลาน
+ล่าน
+ล้าน
+ลาบ
+ลาป
+ลาพรรษา
+ลาพอน
+ลาพุ
+ลาพุช
+ลาเพ
+ลาเพา
+ลาภ
+ลาภมิควรได้
+ลาม
+ล่าม
+ลามก
+ลามปาม
+ลามลวน
+ลาย
+ล้าย
+ลายขัด
+ลายคราม
+ลายตา
+ลายเทศ
+ลายแทง
+ลายน้ำ
+ลายน้ำทอง
+ลายพระหัตถ์
+ลายพาดกลอน
+ลายมือ
+ลายมือชื่อ
+ลายไม้
+ลายลักษณ์
+ลายสอ
+ลายสอง
+ลายสาบ
+ลายสือ
+ลายอย่าง
+ลายฮ่อ
+ลาโรง
+ลาลนะ
+ลาลส
+ลาลา
+ลาโลก
+ลาว
+ลาวก
+ลาวัณย์
+ลาวา
+ลาสนะ
+ล้าสมัย
+ลาสิกขา
+ล้าหลัง
+ลำ
+ล่ำ
+ล้ำ
+ลำกระโดง
+ลำกล้อง
+ลำเข็ญ
+ลำแข
+ลำแข้ง
+ลำเค็ญ
+ลำเคือง
+ลำงาด
+ลำเจียก
+ลำเจียกหนู
+ลำดวน
+ลำดับ
+ลำตัด
+ลำธาร
+ลำนัก
+ลำนำ
+ลำเนา
+ลำบอง
+ลำบาก
+ลำบุ
+ลำปำ
+ลำพวน
+ลำพอง
+ลำพัง
+ลำพู
+ลำพู่กัน
+ลำเพ็ญ
+ลำเพา
+ลำแพง
+ลำแพน
+ลำโพง
+ลำไพ่
+ลำภุขัน
+ลำมะลอก
+ลำมาด
+ลำมาบ
+ลำเมาะ
+ลำเมียบ
+ลำยอง
+ลำยา
+ลำไย
+ลำลอง
+ล่ำลา
+ลำลาบ
+ลำลำ
+ลำลึก
+ลำเลาะ
+ลำเลิก
+ล้ำเลิศ
+ลำเลียง
+ลำเลียบ
+ลำเวียง
+ลำเวียน
+ล่ำสัน
+ลำเสา
+ลำไส้
+ลำหนัก
+ล้ำหน้า
+ลำห้วย
+ลำหักลำโค่น
+ลำอุด
+ลำเอียก
+ลำเอียง
+ลำโอง
+ลิ
+ลิกขา
+ลิกไนต์
+ลิกษา
+ลิกุจ
+ลิเก
+ลิขนะ
+ลิขสิทธิ์
+ลิขิต
+ลิง
+ลิงค์
+ลิงจุ่น
+ลิงชิงหลัก
+ลิงตกต้นไม้
+ลิงลม
+ลิงโลด
+ลิงหลอกเจ้า
+ลิด
+ลิดตีนปู
+ลิดรอน
+ลิต
+ลิตมัส
+ลิตร
+ลิเทียม
+ลิ่น
+ลิ้น
+ลิ้นกระด้างคางแข็ง
+ลิ้นกระบือ
+ลินโกรย
+ลิ้นไก่
+ลิ้นควาย
+ลิ้นงูเห่า
+ลินจง
+ลิ้นจะกวด
+ลิ้นจี่
+ลิ้นชัก
+ลิ่นต้น
+ลิ้นตวัดถึงหู
+ลิ้นตะกวด
+ลิ้นทอง
+ลิ่นทะเล
+ลิ้นทะเล
+ลิ้นปี่
+ลิ้นมังกร
+ลิ้นไม่มีกระดูก
+ลิ้นลม
+ลิ้นลังกา
+ลินลา
+ลินลากระทุ่ม
+ลินลากระบี่
+ลิ้นลาย
+ลินสีด
+ลิ้นเสือ
+ลิ้นหมา
+ลิ่นฮื้อ
+ลินิน
+ลิบ
+ลิบลับ
+ลิบลิ่ว
+ลิปดา
+ลิปต์
+ลิปสติก
+ลิปิ
+ลิปิกร
+ลิปิการ
+ลิฟต์
+ลิเภา
+ลิ่ม
+ลิ้ม
+ลิมป์
+ลิมปนะ
+ลิลิต
+ลิว
+ลิ่ว
+ลิสง
+ลี
+ลี่
+ลี้
+ลีซอ
+ลีบ
+ลี้ลับ
+ลีลา
+ลีลากระทุ่ม
+ลีลาศ
+ลีฬหา
+ลึก
+ลึกซึ้ง
+ลึกลับ
+ลึกล้ำ
+ลึงค์
+ลึงค์นายพราน
+ลืด
+ลื่น
+ลื้น
+ลืบ
+ลืม
+ลืมตน
+ลืมต้น
+ลืมตัว
+ลืมตา
+ลือ
+ลื่อ
+ลื้อ
+ลือชา
+ลือชาปรากฏ
+ลื่อชื่อ
+ลือสาย
+ลุ
+ลุก
+ลุกลน
+ลุกลาม
+ลุกลี้ลุกลน
+ลุกฮือ
+ลุแก่โทษ
+ลุแก่อำนาจ
+ลุง
+ลุ้ง
+ลุต
+ลุท
+ลุทกะ
+ลุทธ์
+ลุ่น
+ลุ่นๆ
+ลุ่นตุ้น
+ลุ่นโตง
+ลุปต์
+ลุพธ์
+ลุพธกะ
+ลุ่ม
+ลุ่มๆ ดอนๆ
+ลุ่มน้ำ
+ลุ่มเนื้อ
+ลุมป์
+ลุมพี
+ลุมพู
+ลุ่มเล้า
+ลุ่มหลง
+ลุย
+ลุ่ย
+ลุ้ย
+ลุ่ยหู
+ลุล่วง
+ลุลาย
+ลุสา
+ลุอำนาจ
+ลู่
+ลูก
+ลูกกก
+ลูกกรง
+ลูกกรอก
+ลูกกระเดือก
+ลูกกระพรวน
+ลูกกระแอม
+ลูกกลอน
+ลูกกลิ้ง
+ลูกกวาด
+ลูกกะโล่
+ลูกกะแอ
+ลูกกัลปพฤกษ์
+ลูกแก้ว
+ลูกโกลน
+ลูกไก่
+ลูกไก่อยู่ในกำมือ
+ลูกขวัญ
+ลูกขัด
+ลูกข่าง
+ลูกข้าว
+ลูกขุน
+ลูกขุน ณ ศาลหลวง
+ลูกขุน ณ ศาลา
+ลูกขุนพลอยพยัก
+ลูกเขย
+ลูกเขยตายแม่ยายชักปรก
+ลูกเขยตายแม่ยายทำศพ
+ลูกครอก
+ลูกครึ่ง
+ลูกคลัก
+ลูกความ
+ลูกคอ
+ลูกคอก
+ลูกคัน
+ลูกค้า
+ลูกคำ
+ลูกคิด
+ลูกเคล้า
+ลูกฆ้อง
+ลูกจ๊อก
+ลูกจ้าง
+ลูกเจี๊ยบ
+ลูกช่วง
+ลูกช้าง
+ลูกชิด
+ลูกชิ้น
+ลูกโซ่
+ลูกดอก
+ลูกดิ่ง
+ลูกโดด
+ลูกตั้ง
+ลูกตุ้ม
+ลูกเต้า
+ลูกเต๋า
+ลูกแตก
+ลูกถ้วย
+ลูกเถื่อน
+ลูกแถว
+ลูกทอย
+ลูกท่านหลานเธอ
+ลูกทุ่ง
+ลูกเธอ
+ลูกน้อง
+ลูกนา
+ลูกน้ำ
+ลูกนิมิต
+ลูกบท
+ลูกบวบ
+ลูกบ้าน
+ลูกบาศก์
+ลูกบิด
+ลูกบุญธรรม
+ลูกเบี้ยว
+ลูกประคบ
+ลูกประคำ
+ลูกประคำผี
+ลูกประสม
+ลูกประสัก
+ลูกประหล่ำ
+ลูกปราย
+ลูกปละ
+ลูกปลา
+ลูกปะกน
+ลูกปัด
+ลูกปา
+ลูกป่า
+ลูกปืน
+ลูกปืนใหญ่
+ลูกแป
+ลูกโป่ง
+ลูกโป่งสวรรค์
+ลูกผสม
+ลูกผักชี
+ลูกผีลูกคน
+ลูกผู้ชาย
+ลูกผู้น้อง
+ลูกผู้พี่
+ลูกผู้หญิง
+ลูกไผ่
+ลูกฝาแฝด
+ลูกแฝด
+ลูกพรวน
+ลูกพริก
+ลูกพลู
+ลูกพี่
+ลูกพี่ลูกน้อง
+ลูกฟัก
+ลูกฟูก
+ลูกไฟ
+ลูกมโหตร
+ลูกมะหวด
+ลูกมาด
+ลูกมือ
+ลูกโม่
+ลูกไม้
+ลูกไม้หล่นไม่ไกลต้น
+ลูกยอ
+ลูกย่าง
+ลูกยาเธอ
+ลูกโยน
+ลูกรอก
+ลูกระมาศ
+ลูกรัง
+ลูกรุ่ย
+ลูกเรือ
+ลูกลม
+ลูกล้อ
+ลูกล่า
+ลูกเล่น
+ลูกเลี้ยง
+ลูกแล่ง
+ลูกโลก
+ลูกไล่
+ลูกวัด
+ลูกศิษย์
+ลูกสมภารหลานเจ้าวัด
+ลูกสมุน
+ลูกสวรรค์
+ลูกสวาท
+ลูกสะบ้า
+ลูกสะใภ้
+ลูกสังกะสี
+ลูกสูบ
+ลูกเสือ
+ลูกหนี้
+ลูกหนู
+ลูกหมด
+ลูกหม้อ
+ลูกหมาก
+ลูกหมู่
+ลูกหลง
+ลูกหลวง
+ลูกหาบ
+ลูกหิน
+ลูกหินบด
+ลูกหีบ
+ลูกเห็บ
+ลูกแห
+ลูกแหง่
+ลูกอม
+ลูกเอ็น
+ลูกเอ็ล
+ลูขะ
+ลูตา
+ลูติกา
+ลู่ทาง
+ลูทีเชียม
+ลูนะ
+ลูบ
+ลูบคม
+ลูบคลำ
+ลูบตัว
+ลูบไล้
+ลูบหน้าปะจมูก
+ลู่หลี่
+เลก
+เล็ก
+เล็กดา
+เล็กน้อย
+เล็กพริกขี้หนู
+เลกวัด
+เลข
+เลขกะ
+เลขคณิต
+เลขจำนวน
+เลขชี้กำลัง
+เลขโดด
+เลขนะ
+เลขผา
+เลขยะ
+เลขยันต์
+เลขลำดับ
+เลขหมาย
+เลขา
+เลขาธิการ
+เลขานุการ
+เล็ง
+เล้ง
+เล็งลัคน์
+เล่งฮื้อ
+เลเซอร์
+เลฑฑุ
+เลณ
+เลณฑุ
+เล็ด
+เล็ดลอด
+เลต
+เลน
+เล็น
+เล่น
+เล่นกล
+เล่นกับไฟ
+เล่นขายของ
+เล่นคำ
+เล่นงาน
+เลนจง
+เล่นชู้
+เล่นตลก
+เล่นตัว
+เล่นเบี้ย
+เล่นพวก
+เล่นพิเรนทร์
+เล่นเพลงยาว
+เล่นเพื่อน
+เล่นแร่แปรธาตุ
+เล่นลิ้น
+เลนส์
+เลนส์ตีบแสง
+เลนส์ถ่างแสง
+เลนส์นูน
+เล่นสวาท
+เลนส์เว้า
+เลนส์สัมผัส
+เล่นสำนวน
+เลนหะรี
+เล่นหัว
+เล่นหาง
+เล่นหูเล่นตา
+เล่นเอาเถิดเจ้าล่อ
+เล็บ
+เล็บครุฑ
+เล็บควาย
+เลบง
+เล็บนาง
+เล็บมือนาง
+เล็บเหยี่ยว
+เลป-
+เลปกร
+เลปน์
+เลเป
+เลเพ
+เลเพลาดพาด
+เล็ม
+เล่ม
+เล็มล่า
+เลย
+เลยตามเลย
+เลยเถิด
+เลว
+เลวง
+เลวูโลส
+เลศ
+เลษฏุ
+เลห
+เล่ห์
+เล่ห์กระเท่ห์
+เลหยะ
+เลหลัง
+เลหลา
+เล่ห์เหลี่ยม
+เลหะ
+เลอ
+เล่อ
+เลอมาน
+เล่อล่า
+เลอะ
+เลอะเทอะ
+เละ
+เละเทะ
+เลา
+เลาๆ
+เล่า
+เล้า
+เลากัย
+เล่าเรียน
+เล่าลือ
+เล้าโลม
+เลาะ
+เลิก
+เลิกล้ม
+เลิ่กลั่ก
+เลิ้ง
+เลินเล่อ
+เลิศ
+เลีย
+เลียง
+เลี่ยง
+เลี้ยง
+เลียงขาว
+เลี้ยงแขก
+เลี้ยงช้างกินขี้ช้าง
+เลี้ยงดู
+เลี้ยงต้อย
+เลี้ยงโต๊ะ
+เลี้ยงปากเลี้ยงท้อง
+เลียงผา
+เลียงฝ้าย
+เลียงมัน
+เลี้ยงรับ
+เลี้ยงลา
+เลี้ยงลูกเสือลูกจระเข้
+เลี้ยงส่ง
+เลียน
+เลี่ยน
+เลียนไฟ
+เลียบ
+เลียบค่าย
+เลียบเคียง
+เลียบเมือง
+เลียม
+เลี่ยม
+เลียว
+เลี้ยว
+เลี้ยวลด
+เลือก
+เลือกตั้ง
+เลือกที่รักมักที่ชัง
+เลือกนักมักได้แร่
+เลือกสรร
+เลือง
+เลื่อง
+เลื่องลือ
+เลือด
+เลือดขึ้นหน้า
+เลือดเข้าตา
+เลือดเนื้อ
+เลือดเนื้อเชื้อไข
+เลือดในอก
+เลือดฝาด
+เลือดไม้
+เลือดเย็น
+เลือดร้อน
+เลือดล้างหน้า
+เลือดอุ่น
+เลือน
+เลื่อน
+เลื่อนที่
+เลื่อนเปื้อน
+เลื่อนลอย
+เลื่อม
+เลื่อมใส
+เลื่อย
+เลื้อย
+เลื้อยคลาน
+เลื้อยเจื้อย
+เลื่อยล้า
+แล
+แล่
+แล้
+แลก
+แล็กโทส
+แลกเปลี่ยน
+แลง
+แล่ง
+แล้ง
+แลงกินฟัน
+แล่งพระราม
+แลน
+แล่น
+แลนทานัม
+แลบ
+แล้ว
+แล้วกัน
+แล้วด้วย
+แล้วแต่
+แล้วไป
+แล้ว...เล่า
+แล้วๆ เล่าๆ
+และ
+และเล็ม
+และเลียม
+โล่
+โล้
+โลก
+โลก-
+โลกเชษฐ์
+โลกธรรม
+โลกธาดา
+โลกธาตุ
+โลกนาถ
+โลกบาล
+โลกย์
+โลกยะ
+โลกวัชชะ
+โลกวิทู
+โลกสถิติ
+โลกอุดร
+โลกัตถจริยา
+โลกันตร์
+โลกัย
+โลกา
+โลกาธิบดี
+โลกาธิปไตย
+โลกานุวัตร
+โลกาภิวัตน์
+โลกามิส
+โลกายัต
+โลกาวินาศ
+โลกิยะ
+โลกีย์
+โลกียวัตร
+โลกุตรธรรม
+โลกุตระ
+โลเกศ
+โลง
+โล่ง
+โล้ง
+โล้งโต้ง
+โล่งโถง
+โลจนะ
+โลณะ
+โลด
+โลดเต้น
+โลดทะนง
+โลดโผน
+โลดแล่น
+โล่ติ๊น
+โลโต
+โลท
+โลน
+โล้น
+โลปะ
+โลภ
+โลภโมโทสัน
+โลม
+โลมชาติ
+โลมเล้า
+โลมะ
+โลมา
+โลล
+โลลุป
+โลเล
+โล้เล้
+โลโล
+โลโล้
+โลห-
+โลหกุมภี
+โลหะ
+โลหะเจือ
+โลหัช
+โลหิต
+ไล่
+ไล้
+ไล่ช้าง
+ไล่ที่ทำวัง
+ไล่น้ำ
+ไล่เบี้ย
+ไลย
+ไลลา
+ไล่ลูกฆ้อง
+ไลเลย
+ไล่เลี่ย
+ไล่เลียง
+ไลไล้
+ไล่ออก
+ฦ
+ฦๅ
+ฦๅชา
+ฦๅสาย
+ว
+วก
+วกะ
+วกุล
+วง
+วงก์
+วงกต
+วงกบ
+วงกลม
+วงการ
+วงเงิน
+วงจร
+วงจรปิด
+วงจรเปิด
+วงเดือน
+วงนอก
+วงใน
+วงพาด
+วงรี
+วงเล็บ
+วงวัง
+วงเวียน
+วงศ-
+วงศ์
+วงศกร
+วงศ์วาน
+วงศา
+วงศาคณาญาติ
+วงษ์
+วงแหวน
+วจนะ
+วจะ
+วจา
+วจี
+วจีกรรม
+วจีเภท
+วชะ
+วชิร-
+วชิรปาณี
+วชิรหัตถ์
+วชิระ
+วชิราวุธ
+วฏะ
+วฏาการ
+วฏุมะ
+วณ-
+วณบัตร
+วณพันธน์
+วณะ
+วณิช
+วณิชชา
+วณิชชากร
+วณิชย์
+วณิชยา
+วณิพก
+วดี
+วต-
+วตะ
+วทนะ
+วทะ
+วทัญญุตา
+วทัญญู
+วทานิย-
+วธ-
+วธก-
+วธุกา
+วธู
+วน
+วนจร
+วนจรก
+วนภู
+วนภูมิ
+วนเวียน
+วนศาสตร์
+วนสณฑ์
+วนสัณฑ์
+วนอุทยาน
+วนัปติ
+วนัส
+วนัส-
+วนัสบดี
+วนา
+วนาดอน
+วนานต์
+วนาลัย
+วนาลี
+วนาวาส
+วนาศรม
+วนาสณฑ์
+วนาสัณฑ์
+วนิดา
+วนิพก
+วเนจร
+วโนทยาน
+วปนะ
+วปุ
+วยัคฆ์
+วยัญชนะ
+วยัมหะ
+วยัสย์
+วยากรณ์
+วยาฆร์
+วยาธิ
+วยาม
+วยายาม
+วร-
+วรงค์
+วรณะ
+วรดนู
+วรท
+วรทาน
+วรมหาวิหาร
+วรรค
+วรรคย์
+วรรช
+วรรชย์
+วรรณ-
+วรรณกรรม
+วรรณคดี
+วรรณนา
+วรรณพฤติ
+วรรณยุกต์
+วรรณยุต
+วรรณศิลป์
+วรรณะ
+วรรณึก
+วรรธก
+วรรธนะ
+วรรษ
+วรรษา
+วรวิหาร
+วรัญญู
+วรากะ
+วรางคณา
+วราห์
+วราหะ
+วรุณ
+วรุตดม
+วรุตมะ
+วรูถ
+วโรดม
+วโรตมะ
+วฤก
+วฤษภ
+วฤษล
+วลัช
+วลัญช์
+วลัญชน์
+วลัย
+วลาหก
+วลี
+วศค
+วศะ
+วศิน
+วสนะ
+วสภะ
+วสละ
+วสลี
+วสวัดดี
+วสวัตตี
+วสะ
+วสันต-
+วสันต์
+วสันตดิลก
+วสันตวิษุวัต
+วสา
+วสี
+วสุ
+วสุธา
+วสุนธรา
+วสุมดี
+วหะ
+วหา
+วอ
+วอก
+วอกแวก
+ว่อง
+ว่องไว
+วอด
+วอดวาย
+วอน
+ว่อน
+วอลเลย์บอล
+วอแว
+วะ
+วัก
+วักกะ
+วัค
+วัคคิย
+วัคคีย์
+วัคคุ
+วัคคุวัท
+วัคซีน
+วัง
+วังก์
+วังชา
+วังช้าง
+วังวน
+วังเวง
+วังศะ
+วังสะ
+วังหน้า
+วังหลวง
+วังหลัง
+วัจ-
+วัจกุฎี
+วัจจะ
+วัจฉ์
+วัจฉก
+วัจฉละ
+วัจน์
+วัจมรรค
+วัช
+วัช-
+วัชชะ
+วัชฌ์
+วัชพืช
+วัชร-
+วัชรธาตุมณฑล
+วัชรปาณี
+วัชรยาน
+วัชรอาสน์
+วัชระ
+วัชราสน์
+วัชรินทร์
+วัชรี
+วัชเรนทร์
+วัญจก
+วัญจนะ
+วัญฌ์
+วัฏ-
+วัฏกะ
+วัฏจักร
+วัฏฏะ
+วัฏฏิ
+วัฏทุกข์
+วัฏสงสาร
+วัฒกะ
+วัฒกี
+วัฒน-
+วัฒนธรรม
+วัฒนะ
+วัฒนา
+วัณ
+วัณ-
+วัณฏ์
+วัณณะ
+วัณนา
+วัณโรค
+วัด
+วัดแดด
+วัดผล
+วัดพื้น
+วัดรอยตีน
+วัดรอยเท้า
+วัดราษฎร์
+วัดวา
+วัดวาอาราม
+วัดหลวง
+วัดเหวี่ยง
+วัต
+วัตต์
+วัตตา
+วัตถ์
+วัตถาภรณ์
+วัตถาลังการ
+วัตถุ
+วัตถุดิบ
+วัตถุนิยม
+วัตถุวิสัย
+วัตนะ
+วัตร
+วัตร-
+วัตรปฏิบัติ
+วัตสดร
+วัตสะ
+วัติ
+วัทน์
+วัน
+วันโกน
+วันแข็ง
+วันครู
+วันจม
+วันดับ
+วันดีคืนดี
+วันต์
+วันตัว
+วันเถลิงศก
+วันทน-
+วันทนา
+วันทนาการ
+วันทนีย์
+วันทย-
+วันทยหัตถ์
+วันทยาวุธ
+วันทา
+วันทิ
+วันนิพก
+วันเนา
+วันพระ
+วันพระไม่มีหนเดียว
+วันเพ็ญ
+วันฟู
+วันยังค่ำ
+วันลอย
+วันแล้ววันเล่า
+วันสุกดิบ
+วันอุโบสถ
+วับ
+วับๆ
+วับวาบ
+วับวาม
+วับแวบ
+วับแวม
+วับๆ หวำๆ
+วัปปะ
+วัมมิก
+วัย
+วัย-
+วัยรุ่น
+วัยวุฒิ
+วัลก์
+วัลคุ
+วัลย์
+วัลลภ
+วัลลี
+วัว
+วัวใครเข้าคอกคนนั้น
+วัวตัวผู้
+วัวตัวเมีย
+วัวทะเล
+วัวพันหลัก
+วัวลืมตีน
+วัวสันหลังหวะ
+วัวหายล้อมคอก
+วัส-
+วัสคณนา
+วัสดุ
+วัสตร์
+วัสน์
+วัสนะ
+วัสสะ
+วัสสานะ
+วัสโสทก
+วา
+ว่า
+ว้า
+วาก
+ว้าก
+วากจิรพัสตร์
+วากย-
+วากยสัมพันธ์
+วากยะ
+วากรา
+ว่ากล่าว
+วากะ
+ว่าการ
+ว่าขาน
+ว่าความ
+วาง
+ว่าง
+ว้าง
+วางก้าม
+วางข้อ
+วางไข่
+ว่างงาน
+วางเงิน
+วางใจ
+วางตลาด
+วางตัว
+วางตา
+วางโต
+วางท่า
+วางปุ่ม
+วางเพลิง
+วางมวย
+วางมาด
+วางมือ
+วางยา
+วางวาย
+ว่างเว้น
+ว้างเวิ้ง
+วางอำนาจ
+ว่าง่าย
+วาจก
+วาจา
+ว่าจ้าง
+วาจาไปยะ
+วาจาล
+วาชเปยะ
+วาฏกะ
+วาณิช
+วาณิชกะ
+วาณิชย์
+วาณี
+วาด
+วาดเขียน
+วาต-
+วาตปานะ
+วาตภัย
+วาตะ
+ว่าต่าง
+วาตารางเหลี่ยม
+ว่าแต่เขาอิเหนาเป็นเอง
+วาท
+วาท-
+วาทก
+วาทน
+วาทย-
+วาทย์
+วาทยกร
+วาทศาสตร์
+วาทศิลป์
+วาทิต
+วาทิน
+วาที
+ว่าที่
+วาน
+ว่าน
+ว่านกีบม้า
+ว่านกีบแรด
+ว่านเครือ
+วานซืน
+ว่านธรณีสาร
+ว่านนางกวัก
+ว่านนางล้อม
+ว่านน้ำ
+ว่านเพชรหึง
+ว่านมหาเมฆ
+ว่านมีดยับ
+วานร
+วานรินทร์
+ว่านเสน่ห์จันทร์ขาว
+ว่านเสน่ห์จันทร์แดง
+ว่านหางช้าง
+ว่านอนสอนง่าย
+วาเนเดียม
+วาบ
+วาบหวาม
+วาปะ
+วาปิตะ
+วาปี
+วาม
+วามน-
+วามนาวตาร
+วามแวม
+วามะ
+วามาจาร
+วาโมร
+ว่าไม่ได้
+วาย
+ว่าย
+ว้าย
+วายชนม์
+วายชีวิต
+ว่ายตา
+ว่ายน้ำหาจระเข้
+วายปราณ
+วายร้าย
+วายวอด
+วายสะ
+วายสังขาร
+วายะ
+ว่ายาก
+วายามะ
+วายุ
+วายุกูล
+วายุบุตรยาตรา
+วายุภักษ์
+วาโย
+วาโยธาตุ
+วาร
+วารณ-
+วารณกร
+วารวาริ
+วารสาร
+วารสารศาสตร์
+วาระ
+วาริ
+วาริจร
+วาริช
+วาริท
+วาริธร
+วาริพินทุ
+วารี
+วารีช
+วารุณ
+วารุณี
+วาล
+วาล-
+วาลกัมพล
+วาลธิ
+วาล์ว
+วาลวีชนี
+วาลิกา
+วาลุกา
+วาว
+ว่าว
+ว่าวติดลม
+วาววับ
+วาววาม
+วาวแวว
+ว่าวเหลิง
+ว่าวอน
+ว้าว่อน
+ว้าวุ่น
+วาสนะ
+วาสนา
+วาสพ
+วาสะ
+ว่าสาดเสียเทเสีย
+วาสิน
+วาสี
+วาสุกรี
+วาสุกี
+วาสุเทพ
+วาหนะ
+วาหะ
+วาหินี
+ว้าเหว่
+วาฬ
+วาฬ-
+วาฬมิค
+วิ
+วิกขัมภ์
+วิกขัมภนะ
+วิกเขป
+วิกจะ
+วิกรม
+วิกรัย
+วิกรานต์
+วิกฤต
+วิกฤต-
+วิกฤตการณ์
+วิกฤตกาล
+วิกฤติ
+วิกฤติ-
+วิกฤติการณ์
+วิกฤติกาล
+วิกล
+วิกลจริต
+วิกสิต
+วิกัต
+วิกัติ
+วิกัติการก
+วิกัป
+วิกัย
+วิการ
+วิกาล
+วิกาล-
+วิกาลโภชน์
+วิคหะ
+วิเคราะห์
+วิฆนะ
+วิฆเนศ
+วิฆเนศวร
+วิฆาต
+วิฆาส
+วิง
+วิ่ง
+วิ่งกระโดดข้ามรั้ว
+วิ่งข้ามรั้ว
+วิ่งงัว
+วิ่งเต้น
+วิ่งเปี้ยว
+วิ่งผลัด
+วิ่งม้า
+วิ่งรอก
+วิ่งระแบง
+วิ่งราว
+วิงวอน
+วิ่งวัว
+วิ่งว่าว
+วิ่งวิบาก
+วิงเวียน
+วิ่งสามขา
+วิจฉิกะ
+วิจยุต
+วิจรณะ
+วิจล
+วิจักขณ์
+วิจักษณ์
+วิจัย
+วิจาร
+วิจารณ-
+วิจารณ์
+วิจารณญาณ
+วิจิ
+วิจิกิจฉา
+วิจิต
+วิจิตร
+วิจิตรพิสดาร
+วิจิน
+วิจุณ
+วิจุรณ
+วิชชา
+วิชชุ
+วิชชุดา
+วิชชุตา
+วิชชุลดา
+วิชญะ
+วิชน
+วิชนี
+วิชย-
+วิชัย
+วิชา
+วิชาการ
+วิชาชีพ
+วิชาโท
+วิชาธร
+วิชานนะ
+วิชาเอก
+วิชิต
+วิเชียร
+วิญญัตติ
+วิญญาณ
+วิญญาณกทรัพย์
+วิญญู
+วิญญูชน
+วิญญูภาพ
+วิฑูรย์
+วิณหุ
+วิด
+วิดพื้น
+วิดัสดี
+วิตก
+วิตก-
+วิตกจริต
+วิตถาร
+วิตามิน
+วิถี
+วิทธะ
+วิทย-
+วิทยฐานะ
+วิทยา
+วิทยากร
+วิทยากล
+วิทยาเขต
+วิทยาคม
+วิทยาคาร
+วิทยาทาน
+วิทยาธร
+วิทยานิพนธ์
+วิทยาลัย
+วิทยาศาสตร์
+วิทยาศาสตร์กายภาพ
+วิทยาศาสตร์ชีวภาพ
+วิทยาศาสตร์เทคโนโลยีและสิ่งแวดล้อม
+วิทยาศาสตร์ประยุกต์
+วิทยุ
+วิทยุต
+วิทรุมะ
+วิทวัส
+วิทัตถิ
+วิทารณ์
+วิทาลน์
+วิทิต
+วิทู
+วิทูร
+วิเทวษ
+วิเทศ
+วิเทศสัมพันธ์
+วิเทโศบาย
+วิธ
+วิธวา
+วิธา
+วิธาน
+วิธี
+วิธุระ
+วิธู
+วิธูปนะ
+วิ่น
+วินย-
+วินันตู
+วินัย
+วินัยธร
+วินาที
+วินายก
+วินาศ
+วินาศ-
+วินาศกรรม
+วินาศภัย
+วินิจ
+วินิจฉัย
+วินิต
+วินิบาต
+วินิปาติก
+วิเนต
+วิโนทก
+วิบัติ
+วิบาก
+วิบุล
+วิบุลย์
+วิบูล
+วิบูลย์
+วิปการ
+วิปฏิสาร
+วิปโยค
+วิประการ
+วิประติสาร
+วิประโยค
+วิประลาป
+วิประวาส
+วิปริต
+วิปลาป
+วิปลาส
+วิปวาส
+วิปักษ์
+วิปัสสก
+วิปัสสนา
+วิพากษ์
+วิพากษ์วิจารณ์
+วิพิธทัศนา
+วิพุธ
+วิภว-
+วิภวตัณหา
+วิภังค์
+วิภัช
+วิภัช-
+วิภัชพยากรณ์
+วิภัชวาที
+วิภัตติ
+วิภา
+วิภาค
+วิภาช
+วิภาดา
+วิภาวี
+วิภาษ
+วิภาส
+วิภู
+วิภูษณะ
+วิภูษา
+วิภูษิต
+วิเภตก์
+วิเภทก์
+วิมน
+วิมล
+วิมลัก
+วิมลาก
+วิมังสา
+วิมัติ
+วิมาน
+วิมุข
+วิมุต
+วิมุตติ
+วิเมลือง
+วิโมกข์
+วิเยน
+วิโยค
+วิร-
+วิรงรอง
+วิรตะ
+วิรมณะ
+วิรวะ
+วิระ
+วิรังรอง
+วิรัช
+วิรัต
+วิรัติ
+วิราคะ
+วิราม
+วิราวะ
+วิริยภาพ
+วิริยะ
+วิรุธ
+วิรุฬห์
+วิรุฬหก
+วิรูป
+วิรูปักษ์
+วิเรนทร์
+วิโรค
+วิโรจ
+วิโรจน์
+วิโรฒ
+วิโรธ
+วิโรธน์
+วิลย-
+วิลันดา
+วิลัย
+วิลาด
+วิลาป
+วิลาวัณย์
+วิลาศ
+วิลาส
+วิลาสินี
+วิลิปดา
+วิเลป
+วิเลป-
+วิเลปนะ
+วิโลก
+วิโลกนะ
+วิโลจนะ
+วิโลม
+วิไล
+วิไลวรรณ
+วิวรณ์
+วิวรรธน์
+วิวระ
+วิวัฏ
+วิวัฒน-
+วิวัฒน์
+วิวัฒนาการ
+วิวัน
+วิวาท
+วิวาห-
+วิวาห์
+วิวาหะ
+วิวิจ
+วิวิต
+วิวิธ
+วิเวก
+วิศรุต
+วิศว-
+วิศวกร
+วิศวกรรม
+วิศวกรรมศาสตร์
+วิศัลย์
+วิศาข-
+วิศาขบูชา
+วิศาขะ
+วิศาขา
+วิศางค์
+วิศาล
+วิศิษฏ์
+วิศุทธ์
+วิศุทธิ์
+วิเศษ
+วิเศษณ-
+วิเศษณ์
+วิเศษณการก
+วิษณุ
+วิษณุกรรม
+วิษณุโลก
+วิษณุเวท
+วิษธร
+วิษักต์
+วิษัย
+วิษาณ
+วิษุวัต
+วิสกี้
+วิสม-
+วิสย-
+วิสรรชนีย์
+วิสฤต
+วิสสุกรรม
+วิสัชนา
+วิสัญญี
+วิสัญญีแพทย์
+วิสัญญีวิทยา
+วิสัย
+วิสาข-
+วิสาขบูชา
+วิสาขะ
+วิสาขา
+วิสามัญ
+วิสามัญฆาตกรรม
+วิสามานยนาม
+วิสาร
+วิสารท
+วิสาล
+วิสาสะ
+วิสาหกิจ
+วิสิฐ
+วิสุงคามสีมา
+วิสุทธ์
+วิสุทธิ์
+วิสูตร
+วิเสท
+วิหค
+วิหงค์
+วิหลั่น
+วิหายสะ
+วิหาร
+วิหาร-
+วิหารแกลบ
+วิหารคด
+วิหารทิศ
+วิหารธรรม
+วิหารยอด
+วิหารหลวง
+วิหิงสะ
+วิหิงสา
+วิเหสา
+วิฬังค์
+วิฬาร
+วิฬาร์
+วี
+วีจิ
+วีชนี
+วีณา
+วี้ด
+วีต-
+วีร-
+วีรกรรม
+วีรชน
+วีรบุรุษ
+วีรสตรี
+วี่วัน
+วี่แวว
+วีสะ
+วุ้ง
+วุฐิ
+วุฒ
+วุฒิ
+วุฒิ-
+วุฒิบัตร
+วุฒิสภา
+วุฒิสมาชิก
+วุด
+วุ่น
+วุ้น
+วุ้นชา
+วุ่นเป็นจุลกฐิน
+วุ่นวาย
+วุ้นเส้น
+วุบ
+วุ้ย
+วุลแฟรม
+วู้
+วูดวาด
+วูบ
+วูบวาบ
+วู่วาม
+เว้
+เวค
+เวคิน
+เวคี
+เวจ
+เวจ-
+เวจกุฎี
+เวจมรรค
+เวช
+เวช-
+เวชกรรม
+เวชภัณฑ์
+เวชยันต์
+เวชศาสตร์
+เวฐน์
+เวณะ
+เวณิ
+เวณิก
+เวณุ
+เวณุวัน
+เวตน์
+เวตร
+เวตาล
+เวท
+เวท-
+เวทคู
+เวทนา
+เวทมนตร์
+เวทย์
+เวทางค์
+เวทางคศาสตร์
+เวทานต์
+เวทานตะ
+เวทิ
+เวที
+เวธะ
+เวน
+เว้น
+เวนคืนอสังหาริมทรัพย์
+เว้นแต่
+เวนไตย
+เวไนย
+เวมะ
+เวมัต
+เวมัติก-
+เวมาติก
+เว้ย
+เวร
+เวรมณี
+เวรี
+เวโรจน์
+เวลา
+เวเลนซี
+เววัณ
+เววัณณิยะ
+เวศม์
+เวศย์
+เวศยา
+เวสน์
+เวสภู
+เวสม์
+เวสมะ
+เวสวัณ
+เวสสะ
+เวสสันดร
+เวสสุกรรม
+เวสสุวัณ
+เวสารัช
+เวสิ
+เวสิยา
+เวหน
+เวหะ
+เวหังค์
+เวหัปติ
+เวหา
+เวหายส
+เวหาส
+เวฬุ
+เวฬุการ
+เวฬุริย
+เวฬุวัน
+เว่อ
+เว้า
+เว้าวอน
+เวิก
+เวิ้ง
+เวิ้งว้าง
+เวี่ย
+เวียง
+เวียน
+เวียนเทียน
+เวียนหัว
+เวียร
+เวี่ยว
+แว้
+แวง
+แว้ง
+แว้งกัด
+แวด
+แวดล้อม
+แวดวง
+แวตร
+แวน
+แว่น
+แว่นขยาย
+แวนดา
+แว่นตา
+แว่นฟ้า
+แว่นไว
+แวบ
+แวบๆ
+แวบวับ
+แวม
+แวว
+แว่ว
+แวววาม
+แวววาว
+แวววิเชียร
+แวะ
+โว
+โว่
+โวการ
+โว่ง
+โวทาน
+โว้ย
+โวยวาย
+โว้เว้
+โวสาน
+โวหาร
+ไว
+ไว้
+ไวกูณฐ์
+ไว้ใจ
+ไวฑูรย์
+ไว้ตัว
+ไวทย์
+ไว้ทุกข์
+ไว้ธุระ
+ไว้เนื้อเชื่อใจ
+ไวพจน์
+ไวไฟ
+ไว้ยศ
+ไวยากรณ์
+ไวยาวัจกร
+ไวยาวัจมัย
+ไว้ลาย
+ไววรรณ
+ไวษณพ
+ไว้หน้า
+ไว้อาลัย
+ไวโอลิน
+ศ
+ศก
+ศกฏ
+ศกล
+ศกุน
+ศกุนต์
+ศกุนิ
+ศกุนี
+ศงกา
+ศจี
+ศฐ
+ศดก
+ศต
+ศต-
+ศตก
+ศตบาท
+ศตปที
+ศตพรรษ
+ศตภิษัช
+ศตวรรษ
+ศตสังวัตสร์
+ศตัฆนี
+ศนิ
+ศนิวาร
+ศพ
+ศพล
+ศม
+ศมน
+ศย
+ศยนะ
+ศยาม
+ศยามล
+ศร
+ศรนารายณ์
+ศรภ
+ศรมณะ
+ศรรกรา
+ศรวณะ
+ศรวณีย์
+ศรวิษฐา
+ศรศิลป์ไม่กินกัน
+ศระวณ
+ศรัณย์
+ศรัณยู
+ศรัถนะ
+ศรัท
+ศรัทธา
+ศรัย
+ศราทธ-
+ศราทธ์
+ศราทธพรต
+ศราพ
+ศราพก
+ศรายุธ
+ศราวก
+ศราวณะ
+ศราวรณ์
+ศราสน์
+ศรี
+ศรีตรัง
+ศรีสังคีต
+ศรุต
+ศรุติ
+ศฤคาล
+ศฤงค์
+ศฤงคาร
+ศฤงคาริน
+ศฤงคารี
+ศลภ
+ศลัถ
+ศลิษฏ์
+ศลิษา
+ศว
+ศวศุร
+ศวัส
+ศวัสน
+ศวา
+ศวาน
+ศวาส
+ศศ-
+ศศธร
+ศศพินทุ์
+ศศลักษณ์
+ศศะ
+ศศิ
+ศศิกษัย
+ศศิขัณฑ์
+ศศิเคราะห์
+ศศิธร
+ศศิน
+ศศิมณฑล
+ศศิวิมล
+ศศี
+ศสา
+ศอ
+ศอก
+ศอกกลับ
+ศอกกำ
+ศอกกำมา
+ศอกคู้
+ศอกตูม
+ศักดา
+ศักดิ
+ศักดิ์
+ศักดินา
+ศักดิ์ศรี
+ศักดิ์สิทธิ์
+ศักติ
+ศักย-
+ศักย์
+ศักยภาพ
+ศักยะ
+ศักร-
+ศักรภพน์
+ศักราช
+ศักรินทร์
+ศักเรนทร์
+ศังกร
+ศังกา
+ศังกุ
+ศัตรู
+ศัทธนะ
+ศันสนะ
+ศันสนีย์
+ศัพท-
+ศัพท์
+ศัพทมูลวิทยา
+ศัยยา
+ศัล
+ศัลก
+ศัลกี
+ศัลย-
+ศัลยกรรม
+ศัลยแพทย์
+ศัลยศาสตร์
+ศัสดร
+ศัสตร-
+ศัสตรกรรม
+ศัสตรการ
+ศัสตรศาสตร์
+ศัสตรา
+ศัสย
+ศาก
+ศาก-
+ศากตะ
+ศากภักษ์
+ศากย-
+ศากยเกตุ
+ศากยพุทธ
+ศากยมุนี
+ศากยะ
+ศาฎก
+ศาฐยะ
+ศาณ
+ศาต
+ศานต-
+ศานต์
+ศานตรส
+ศานติ
+ศานติก-
+ศานติโหม
+ศาป
+ศาป-
+ศาปมุกติ์
+ศาปานต์
+ศาพร
+ศารท
+ศารทวิษุวัต
+ศารทูล
+ศาริกา
+ศาล
+ศาลกงสุล
+ศาลแขวง
+ศาลคดีเด็กและเยาวชน
+ศาลจังหวัด
+ศาลชั้นต้น
+ศาลฎีกา
+ศาลเตี้ย
+ศาลทหาร
+ศาลปกครอง
+ศาลโปริสภา
+ศาลเพียงตา
+ศาลแพ่ง
+ศาลยุติธรรม
+ศาลเยาวชนและครอบครัว
+ศาลโลก
+ศาลสถิตยุติธรรม
+ศาลสูง
+ศาลสูงสุด
+ศาลอาญา
+ศาลอุทธรณ์
+ศาลอุทธรณ์ภาค
+ศาลา
+ศาลาประชาคม
+ศาลาราย
+ศาลาสรง
+ศาศวัต
+ศาสก
+ศาสดา
+ศาสตร-
+ศาสตร์
+ศาสตรา
+ศาสตราจารย์
+ศาสน-
+ศาสน์
+ศาสนจักร
+ศาสนา
+ศาสนีย-
+ศาสนีย์
+ศาสนูปถัมภก
+ศิกษก
+ศิการ
+ศิขร
+ศิขริน
+ศิขรี
+ศิขัณฑ์
+ศิขา
+ศิคาล
+ศิงขร
+ศิงขริน
+ศิต
+ศิถี
+ศิพิระ
+ศิร-
+ศิรประภา
+ศิระ
+ศิรา
+ศิรามพุช
+ศิโรรัตน์
+ศิโรราบ
+ศิโรเวฐน์
+ศิลป-
+ศิลป์
+ศิลปกร
+ศิลปกรรม
+ศิลปการ
+ศิลปกิจ
+ศิลปวิทยา
+ศิลปศาสตร์
+ศิลปะ
+ศิลปิน
+ศิลปี
+ศิลา
+ศิลาฤกษ์
+ศิลาแลง
+ศิว-
+ศิวโมกข์
+ศิวลึงค์
+ศิวเวท
+ศิวะ
+ศิศีระ
+ศิศุ
+ศิษฎิ
+ศิษฏ์
+ศิษย์
+ศิษย์มีครู
+ศีขร
+ศีขริน
+ศีขรี
+ศีต-
+ศีตกาล
+ศีตล
+ศีรษะ
+ศีรษะกระบือ
+ศีรษะโค
+ศีรษะช้าง
+ศีรษะเนื้อ
+ศีล
+ศีลจุ่ม
+ศีลธรรม
+ศีลมหาสนิท
+ศีลล้างบาป
+ศีลวัต
+ศีลอด
+ศึก
+ศึกษา
+ศึกษาธิการ
+ศึกษานิเทศก์
+ศึกหน้านาง
+ศุกร-
+ศุกร์
+ศุกรวรรณ
+ศุกล-
+ศุกลปักษ์
+ศุกลัม
+ศุกะ
+ศุจิ
+ศุจิกรรม
+ศุทธ
+ศุทธิ
+ศุน
+ศุนัก
+ศุนิ
+ศุภ-
+ศุภกร
+ศุภเคราะห์
+ศุภนิมิต
+ศุภมัสดุ
+ศุภมาตรา
+ศุภมาส
+ศุภร-
+ศุภอักษร
+ศุภางค์
+ศุลก-
+ศุลกากร
+ศุลการักษ์
+ศุลี
+ศุษิร
+ศูกร
+ศูทร
+ศูนย-
+ศูนย์
+ศูนย์การค้า
+ศูนย์ชุมชน
+ศูนย์พ่าห์
+ศูนยภาพ
+ศูนย์เยาวชน
+ศูนยวาท
+ศูนย์สัมบูรณ์
+ศูนย์สูตร
+ศูล
+ศูลิน
+เศรณี
+เศรษฐ-
+เศรษฐ์
+เศรษฐกิจ
+เศรษฐศาสตร์
+เศรษฐี
+เศร้า
+เศร้าหมอง
+เศลษ
+เศวดงค์
+เศวดีภ
+เศวต
+เศวต-
+เศวตงค์
+เศวตฉัตร
+เศวตร
+เศวตัมพร
+เศวติภ
+เศวตีภ
+เศวเตภ
+เศวาล
+เศษ
+เศษเกิน
+เศษซ้อน
+เศษส่วน
+เศษสิบ
+เศาจ-
+เศาไจย
+เศาร์
+เศารยะ
+เศิก
+เศียร
+โศก
+โศก-
+โศกนาฏกรรม
+โศกศัลย์
+โศกา
+โศกาดูร
+โศกาลัย
+โศกี
+โศจนะ
+โศจนียะ
+โศจิ
+โศถะ
+โศธนะ
+โศผะ
+โศภ
+โศภน
+โศภา
+โศภิต
+โศภิน
+โศภิษฐ์
+โศภี
+โศรณิ
+โศรณี
+โศรดา
+โศรตร
+โศลก
+ไศล
+ไศล-
+ไศวะ
+ษ
+ษมา
+ษมายุมแปลง
+ษัฏ
+ษัฏกะ
+ษัฑ
+ษัณ
+ษัษ
+ษัษฏี
+ษัษฐ
+ษัษฐี
+โษฑศ
+โษฑศัน
+ส
+สก-
+สกฏ-
+สกฏภาร
+สกฏะ
+สกทาคามิผล
+สกทาคามิมรรค
+สกทาคามี
+สกนธ์
+สกปรก
+สกรณีย์
+สกรรจ์
+สกรรมกริยา
+สกล
+สกล-
+สกลมหาสังฆปริณายก
+สกลโลก
+สกวาที
+สกัด
+สกัดแคร่
+สกา
+สกาว
+สกิทาคามี
+สกี
+สกีน้ำ
+สกุณ
+สกุณา
+สกุณี
+สกุน
+สกุนต์
+สกุล
+สกุลรุนชาติ
+สเกต
+สเกตน้ำแข็ง
+สแกนเดียม
+สขะ
+สขา
+สขิ
+สง
+ส่ง
+สงกร
+สงกรานต์
+ส่งกลิ่น
+สงกา
+สงโกจ
+ส่งข่าว
+สงค์
+สงคร
+สงคราม
+สงครามกลางเมือง
+สงครามเย็น
+สงครามโลก
+สงเคราะห์
+สงฆ์
+ส่งดอก
+ส่งเดช
+ส่งตัว
+ส่งท้าย
+สงบ
+สงบเสงี่ยม
+ส่งภาษา
+ส่งลำ
+สงวน
+สงเษป
+ส่งสการ
+สงสัย
+สงสาร
+สงสาร-
+สงสารทุกข์
+สงสารวัฏ
+ส่งเสริม
+ส่งเสีย
+ส่งเสียง
+สงัด
+สง่า
+สฐ
+สณฑ์
+สด
+สดก
+สดคาว
+สดชื่น
+สดน
+สดมภ์
+สดๆ ร้อนๆ
+สดใส
+สดัน
+สดับ
+สดับตรับฟัง
+สดับปกรณ์
+สดำ
+สดี
+สดุดี
+สดูป
+สต
+สตก
+สตน
+สตภิสชะ
+สตมาหะ
+สตรอนเชียม
+สตริกนิน
+สตรี
+สตรีลิงค์
+สตรีลึงค์
+สตัน
+สตันย์
+สตัพธ์
+สตัฟฟ์
+สตัมภ์
+สตางค์
+สติ
+สติปัญญา
+สติปัฏฐาน
+สติวินัย
+สติสัมปชัญญะ
+สตี
+สตู
+สตูป
+สถน
+สถบดี
+สถล
+สถล-
+สถลทิน
+สถลบถ
+สถลมารค
+สถวิร-
+สถวีร-
+สถวีระ
+สถาน
+สถานการณ์
+สถานภาพ
+สถานะ
+สถานี
+สถาบก
+สถาบัน
+สถาปนา
+สถาปนิก
+สถาปนียพยากรณ์
+สถาปนียวาที
+สถาปัตยกรรม
+สถาปัตยกรรมศาสตร์
+สถาพร
+สถาล
+สถาวร
+สถิต
+สถิตยศาสตร์
+สถิติ
+สถิติศาสตร์
+สถิร-
+สถุล
+สถูป
+สทึง
+สทุม
+สธน
+สธุสะ
+สน
+ส้น
+สนใจ
+สนเดก
+สนตะพาย
+ส้นตีน
+สนทนา
+สนทรรศ
+สนทรรศน์
+สนทิศ
+สนเทศ
+สนเท่ห์
+สนธยา
+สนธิ
+สนธิสัญญา
+สนธิอลงกต
+สนนราคา
+สนแผง
+สนม
+สนมเอก
+สนวน
+สนหางสิงห์
+สนอง
+สนองไข
+สนองได
+สนองโอษฐ์
+สนอบ
+สนอม
+สนะ
+สนัด
+สนัดใจ
+สนั่น
+สนับ
+สนับแข้ง
+สนับงา
+สนับทึบ
+สนับนิ้วมือ
+สนับเพลา
+สนับมือ
+สนับสนุน
+สนาดก
+สนาน
+สนาบก
+สนาบัน
+สนาม
+สนามเพลาะ
+สนามหลวง
+สนายุ
+สนิก
+สนิท
+สนิทสนม
+สนิธ
+สนิม
+สนิมสร้อย
+สนุก
+สนุกเกอร์
+สนุกสนาน
+สนุข
+สนุต
+สนุ่น
+สบ
+สบง
+สบจ
+สบถ
+สบประมาท
+สบสังวาส
+สบเสีย
+สบัน
+สบาย
+สบู่
+สบู่เลือด
+สไบ
+สไบเฉียง
+สไบนาง
+สปริง
+สปาเกตตี
+สเปกตรัม
+สเปกโทรสโคป
+สไปริลลัม
+สพั้น
+สพาบ
+สภา
+สภากาชาด
+สภาค
+สภาจาร
+สภานายก
+สภาบดี
+สภาพ
+สภาพธรรม
+สภาว-
+สภาวการณ์
+สภาวะ
+สม
+ส้ม
+สมการ
+สมการเคมี
+ส้มกุ้ง
+สมคบ
+สมควร
+สมคะเน
+สมจร
+สมจริง
+สมจารี
+ส้มชื่น
+ส้มเช้า
+สมญา
+สมเญศ
+สมณ-
+สมณบริขาร
+สมณโวหาร
+สมณศักดิ์
+สมณสารูป
+สมณสาสน์
+สมณะ
+สมดุล
+สมเด็จ
+สมเด็จพระสังฆราช
+ส้มตำ
+สมถ-
+สมถยานิก
+สมถวิปัสสนา
+สมถะ
+สมทบ
+ส้มทับ
+สมนอก
+สมนัย
+สมนาคุณ
+สมน้ำสมเนื้อ
+สมน้ำหน้า
+สมใน
+สมบัติ
+สมบัตินักเลง
+สมบัติผู้ดี
+สมบุกสมบัน
+สมบุญ
+สมบูรณ์
+สมบูรณาญาสิทธิราชย์
+สมประกอบ
+สมประดี
+สมปฤดี
+สมปฤๅดี
+ส้มป่อย
+สมปัก
+สมผุส
+ส้มแผ่น
+สมพง
+สมพงศ์
+สมพรปาก
+สมพล
+สมพัตสร
+สมพาส
+สมเพช
+สมโพธน์
+สมโพธิ
+ส้มฟัก
+สมภพ
+สมภาร
+สมโภค
+สมโภช
+สมมต
+สมมติ
+สมมติ-
+สมมติฐาน
+ส้มมะขาม
+สมมาตร
+ส้มมือ
+สมมุติ
+สมมุติ-
+สมมุติฐาน
+สมมูล
+สมมูลเคมี
+สมโมท
+สมยอม
+สมโยค
+สมร
+สมร-
+สมรด
+สมรภูมิ
+สมรรถ
+สมรรถ-
+สมรรถนะ
+สมรรถภาพ
+สมรส
+สมรู้
+สมฤดี
+สมฤติ
+สมฤๅดี
+ส้มลิ้ม
+สมวัย
+สมวายะ
+สมสัก
+ส้มสันดาน
+สมสู่
+สมเสร็จ
+ส้มเสี้ยว
+สมหน้าสมตา
+สมเหตุสมผล
+สมอ
+สมอกานน
+สมอง
+สมองตาย
+สมองฝ่อ
+สมอจีน
+สมอทะเล
+สมอสำเภา
+สมอ้าง
+สมัค
+สมัคร
+สมัครพรรคพวก
+สมัครสมา
+สมัครสมาน
+สมังคี
+สมัช
+สมัชชา
+สมัญญา
+สมัต
+สมัน
+สมันต์
+สมัย
+สมัยเก่า
+สมัยใหม่
+สมา
+สมาคม
+สมาจาร
+สมาชิก
+สมาทาน
+สมาธิ
+สมาน-
+สมานคติ
+สมานฉันท์
+สมานสังวาส
+สมาบัติ
+สมาพันธรัฐ
+สมาส
+สม่ำเสมอ
+สมิง
+สมิงทอง
+สมิงพราย
+สมิงมิ่งชาย
+สมิต
+สมิติ
+สมิทธ์
+สมิทธิ
+สมี
+สมีป
+สมีร
+สมุก
+สมุจจัย
+สมุจเฉท
+สมุจเฉท-
+สมุจเฉทปหาน
+สมุฏฐาน
+สมุด
+สมุดไทย
+สมุดปูมเดินทาง
+สมุตถาน
+สมุทร
+สมุทร-
+สมุทรโคดม
+สมุทรโจร
+สมุทรศาสตร์
+สมุทรเสนา
+สมุทัย
+สมุน
+สมุนไพร
+สมุลแว้ง
+สมุห-
+สมุห์
+สมุหกลาโหม
+สมุหเทศาภิบาล
+สมุหนาม
+สมุหนายก
+สมุหประธาน
+สมุหพระกลาโหม
+สโมธาน
+สโมสร
+สโมสรสันนิบาต
+สยด
+สยดสยอง
+สยดแสยง
+สยนะ
+สยบ
+สยมพร
+สยมภู
+สยอง
+สยอน
+สยัมพร
+สยัมวรา
+สยาม
+สยาม-
+สยามรัฐ
+สยาย
+สยิว
+สยิ้ว
+สยุ่น
+สยุมพร
+สยุมภู
+สร
+สรก
+สรง
+สร่ง
+สรฏะ
+สรณ-
+สรณคมน์
+สรณตรัย
+สรณะ
+สรณาคมน์
+สรดัก
+สรดึ่น
+สรดื่น
+สรตะ
+สรตัก
+สรทะ
+สรทึง
+สรแทบ
+สรนุก
+สรเนาะ
+สรไน
+สรบ
+สรบบ
+สรบับ
+สรพ
+สรเพชญ
+สรภะ
+สรภัญญะ
+สรภู
+สรม
+สรร
+สรรค์
+สรรพ
+สรรพ-
+สรรพคราส
+สรรพคุณ
+สรรพนาม
+สรรพสามิต
+สรรพัชญ
+สรรพากร
+สรรพางค์
+สรรเพชญ
+สรรเพชุดา
+สรรเพชุดาญาณ
+สรรวง
+สรรเสริญ
+สรรแสร้ง
+สรลน
+สรลม
+สรลมสลวน
+สรลอด
+สรลอน
+สรละ
+สรล้าย
+สรลิด
+สรเลข
+สรวง
+สรวงเส
+สรวป
+สรวม
+สรวมชีพ
+สรวล
+สรวลเส
+สรวลเสเฮฮา
+สรเสริญ
+สร้อย
+สร้อยทอง
+สร้อยทะแย
+สร้อยนกเขา
+สร้อยน้ำผึ้ง
+สร้อยระย้า
+สร้อยเศร้า
+สร้อยสน
+สร้อยอ่อน
+สร้อยอินทนิล
+สระ
+สระกอ
+สระคราญ
+สระดะ
+สระท้อน
+สระพรั่ง
+สระอาด
+สระอื้น
+สรั่ง
+สรัสวดี
+สร่าง
+สร้าง
+สร้างวิมานในอากาศ
+สร้างสรรค์
+สราญ
+สร้าวเสียว
+สริต
+สรี้
+สรีร-
+สรีรกิจ
+สรีรธาตุ
+สรีรวิทยา
+สรีรศาสตร์
+สรีระ
+สรีรังคาร
+สรีรางคาร
+สรีสฤบ
+สรุก
+สรุกเกรา
+สรุง
+สรุโนก
+สรุป
+สรุสระ
+สรูป
+สโรช
+สฤก
+สฤคาล
+สฤต
+สฤษฎี
+สฤษฏ์
+สล
+สลด
+สลบ
+สลบไสล
+สลบเหมือด
+สลวน
+สลวย
+สลอด
+สลอน
+สลอย
+สละ
+สละสลวย
+สลัก
+สลักเกลียว
+สลักเต้
+สลักเพชร
+สลักสำคัญ
+สลักเสลา
+สลักหลัง
+สลัด
+สลัดได
+สลับ
+สลับฉาก
+สลัว
+สลา
+สลาก
+สลากกินแบ่ง
+สลากกินรวบ
+สลากภัต
+สลาง
+สล้าง
+สลาด
+สลาตัน
+สลาบ
+สลาย
+สลาเหิน
+สลิด
+สลิล
+สลึก
+สลึง
+สลุต
+สลุบ
+สลุมพร
+สแลง
+สว-
+สวก
+สวกรรม
+สวการย์
+ส้วง
+สวด
+สวน
+ส่วน
+ส่วนกลาง
+สวนควัน
+สวนความ
+ส่วนได้ส่วนเสีย
+ส่วนตัว
+ส่วนท้องถิ่น
+สวนแทง
+ส่วนประกอบ
+สวนปากสวนคำ
+ส่วนผสม
+ส่วนภูมิภาค
+ส่วนรวม
+ส่วนลด
+สวนสนาม
+ส่วนสัด
+ส่วนหน้า
+ส่วนหลัง
+สวนะ
+สวนาการ
+สวนิต
+สวนีย-
+สวบ
+สวภาพ
+สวม
+ส้วม
+สวมกอด
+สวมรอย
+สวมหัวโขน
+สวย
+ส่วย
+ส้วย
+สวยแต่รูป จูบไม่หอม
+สวยม
+สวยมพร
+สวยมภู
+ส้วยเสี้ยว
+สวร
+สวรรค-
+สวรรค์
+สวรรคต
+สวรรคบดี
+สวรรค์อยู่ในอก นรกอยู่ในใจ
+สวรรคาลัย
+สวรรยา
+สวราชย์
+สวะ
+สวัสดิ์
+สวัสดิการ
+สวัสดี
+สวัสติ
+สวัสติกะ
+สวา
+สวาคต
+สวาง
+สว่าง
+สว่างไสว
+สวาด
+สวาดิ
+สวาตี
+สวาท
+สว่าน
+สว้าน
+สวาบ
+สวาปาม
+สวามิ
+สวามินี
+สวามิภักดิ์
+สวามี
+สวาย
+สวายสอ
+สวาสดิ์
+สวาหะ
+สวิง
+สวิงสวาย
+สวิญญาณกทรัพย์
+สวิตช์
+สสาร
+สสาร-
+สสารนิยม
+สสุระ
+สสุรี
+สห-
+สหกรณ์
+สหการ
+สหจร
+สหชาต
+สหชาติ
+สหธรรม
+สหธรรมิก
+สหบาน
+สหประชาชาติ
+สหพันธ์
+สหพันธรัฐ
+สหภาพ
+สหภาพแรงงาน
+สหศึกษา
+สหัช
+สหัมบดี
+สหัส-
+สหัสธารา
+สหัสนัยน์
+สหัสเนตร
+สหัสรังสี
+สหัสสะ
+สหัสา
+สหาย
+สอ
+ส่อ
+สอง
+ส่อง
+ส้อง
+สองเกลอ
+สองจิตสองใจ
+สองใจ
+สองต่อสอง
+สองผม
+สองฝักสองฝ่าย
+สองไม้
+สองฤดู
+สองสลึงเฟื้อง
+สองหน้า
+สอด
+สอดคล้อง
+สอดแคล้ว
+สอดแนม
+สอดรู้
+สอดรู้สอดเห็น
+สอดส่อง
+สอดใส่
+สอดไส้
+สอน
+ส่อน
+สอนจระเข้ให้ว่ายน้ำ
+สอนหนังสือสังฆราช
+สอบ
+สอบซ้อม
+สอบปากคำ
+สอบพยาน
+สอบไล่
+สอบสวน
+สอบสวนทวนพยาน
+สอปูน
+สอพลอ
+ส้อม
+สอย
+สอยดอกฟ้า
+สอยดาว
+สอยผม
+สอยไร
+ส่อเสียด
+สะ
+สะกด
+สะกอ
+สะกาง
+สะการะ
+สะการะตาหรา
+สะกิด
+สะเก็ด
+สะแก
+สะแกวัลย์
+สะแกแสง
+สะคร้อ
+สะคราญ
+สะค้าน
+สะเงาะสะแงะ
+สะใจ
+สะดม
+สะดวก
+สะดัก
+สะดิ้ง
+สะดึง
+สะดือ
+สะดุ้ง
+สะดุ้งมาร
+สะดุด
+สะดุดใจ
+สะดุดตา
+สะดุดหู
+สะเด็ด
+สะเดา
+สะเดาดิน
+สะเดาอินเดีย
+สะเดาะ
+สะตอ
+สะตอเบา
+สะตาหมัน
+สะตึ
+สะตือ
+สะตุ
+สะเต๊ะ
+สะโตก
+สะทก
+สะทน
+สะท้อน
+สะท้อนใจ
+สะท้าน
+สะทึก
+สะทึน
+สะทึ่น
+สะเทิน
+สะเทิ้น
+สะเทินน้ำสะเทินบก
+สะเทือน
+สะเทื้อน
+สะเทือนใจ
+สะบะ
+สะบัก
+สะบักจม
+สะบักสะบอม
+สะบัด
+สะบัดก้น
+สะบัดมือ
+สะบัดร้อนสะบัดหนาว
+สะบัดลุกสะบัดนั่ง
+สะบัดสะบิ้ง
+สะบัดหน้า
+สะบั้น
+สะบันงา
+สะบันงาจีน
+สะบันงาต้น
+สะบ้า
+สะบ้าหัวเข่า
+สะบู
+สะแบง
+สะเปะสะปะ
+สะพรัก
+สะพรั่ง
+สะพรึงกลัว
+สะพรึบ
+สะพัก
+สะพัง
+สะพัด
+สะพั้น
+สะพาน
+สะพานแขวน
+สะพานชัก
+สะพานเชือก
+สะพานเดินเรือ
+สะพานทุ่น
+สะพานเบี่ยง
+สะพานปลา
+สะพานไฟ
+สะพานลอย
+สะพานเสี้ยว
+สะพานหก
+สะพานหัน
+สะพาย
+สะพายแล่ง
+สะเพร่า
+สะโพก
+สะเภา
+สะใภ้
+สะโมง
+สะระตะ
+สะระแหน่
+สะละปะตุ่น
+สะลาง
+สะลึมสะลือ
+สะวี้ดสะว้าด
+สะสม
+สะสวย
+สะสาง
+สะอาง
+สะอาด
+สะอ้าน
+สะอิ้ง
+สะอิดสะเอียน
+สะอึก
+สะอึกเข้าใส่
+สะอึกสะอื้น
+สะอื้น
+สะเอ้ง
+สะเอว
+สะเออะ
+สะโอดสะอง
+สะไอ
+สัก
+สักกะ
+สักกัจจะ
+สักกาย-
+สักกายทิฐิ
+สักการ-
+สักการะ
+สักขรา
+สักขี
+สักขี้ไก่
+สักฏะ
+สักตะ
+สักแต่ว่า
+สักยะ
+สักวา
+สักว่า
+สักหลาด
+สัขยะ
+สัค
+สัคคะ
+สั่ง
+สังกมทรัพย์
+สังกร
+สังกรณี
+สังกะตัง
+สังกะวัง
+สังกะวาด
+สังกะสี
+สังกัด
+สังกัปปะ
+สังกา
+สังการ
+สังกาศ
+สังกิเลส
+สังเกต
+สังเกตการณ์
+สังข-
+สังข์
+สังขกร
+สังขต-
+สังขตธรรม
+สังขตะ
+สังขยา
+สังขลิก
+สังขลิกา
+สังขาร
+สังขาร-
+สังขารธรรม
+สังขารโลก
+สังเขป
+สังโขภ
+สังค-
+สังค์
+สังคญาติ
+สังคม
+สังคม-
+สังคมนิยม
+สังคมวิทยา
+สังคมศาสตร์
+สังคมศึกษา
+สังคมสงเคราะห์
+สังคหะ
+สังคัง
+สังคาตา
+สังคายนา
+สังคายนาย
+สังคีต
+สังคีติ
+สังเค็ด
+สังเคราะห์
+สังฆ-
+สังฆกรรม
+สังฆการี
+สังฆเถระ
+สังฆทาน
+สังฆนายก
+สังฆปาโมกข์
+สังฆภัต
+สังฆเภท
+สังฆมณฑล
+สังฆมนตรี
+สังฆราช
+สังฆสภา
+สังฆาฏิ
+สังฆาณัติ
+สังฆาทิเสส
+สังฆาธิการ
+สังฆานุสติ
+สังฆาวาส
+สังดัก
+สังปะติแหงะ
+สังปะลิเหงะ
+สังโยค
+สังโยชน์
+สังวร
+สังวัจฉระ
+สังวัธยาย
+สังวาล
+สังวาลพราหมณ์
+สังวาส
+สังเวคะ
+สังเวช
+สังเวย
+สังเวียน
+สังสกฤต
+สังสการ
+สังสดมภ์
+สังสนทนา
+สั่งสนทนา
+สั่งสม
+สังสรรค์
+สั่งสอน
+สังสารวัฏ
+สังสิทธิ
+สังสุทธ์
+สังสุทธิ
+สั่งเสีย
+สังหร
+สังหรณ์
+สังหรรษ
+สังหาร
+สังหาริมทรัพย์
+สังหาริมะ
+สังหิต
+สัจ
+สัจ-
+สัจกิริยา
+สัจจะ
+สัจญาณ
+สัจนิยม
+สัจพจน์
+สัชฌ-
+สัชฌกร
+สัชฌการ
+สัชฌะ
+สัชฌายะ
+สัชฌุ
+สัชฌุกร
+สัชฌุการ
+สัญจร
+สัญจรโรค
+สัญจาร
+สัญเจตนา
+สัญชาต-
+สัญชาตญาณ
+สัญชาติ
+สัญฌา
+สัญญา
+สัญญาณ
+สัญญาบัตร
+สัญญาประกันชีวิต
+สัญญาประกันภัย
+สัญญาวิปลาส
+สัญญี
+สัญโญชน์
+สัญประกาศ
+สัญโยค
+สัญลักษณ์
+สัฐิ
+สัณฐาน
+สัณฐิติ
+สัณฑ์
+สัณห์
+สัด
+สัดจอง
+สัดส่วน
+สัต
+สัต-
+สัตการ
+สัตตบงกช
+สัตตบรรณ
+สัตตบุษย์
+สัตตะ
+สัตตาห-
+สัตตาหกาลิก
+สัตตู
+สัตถ-
+สัตถันดร
+สัตถา
+สัตถิ
+สัตถุ
+สัตถุศาสนา
+สัตบถ
+สัตบรรณ
+สัตบริภัณฑ์
+สัตบุรุษ
+สัตภัณฑ์
+สัตม-
+สัตมวาร
+สัตย-
+สัตย์
+สัตยพรต
+สัตยวาที
+สัตยาเคราะห์
+สัตยาธิษฐาน
+สัตยาบัน
+สัตว-
+สัตว์
+สัตวบาล
+สัตวแพทย์
+สัตวโลก
+สัตววิทยา
+สัตวา
+สัตวาร
+สัตสดก
+สัทธรรม
+สัทธา
+สัทธาจริต
+สัทธาธิก
+สัทธิงวิหาริก
+สัทธินทรีย์
+สัทธิวิหาริก
+สัทศาสตร์
+สัน
+สั่น
+สั้น
+สันเขา
+สันดอน
+สันดาน
+สันดาป
+สันเดก
+สันโดษ
+สันต์
+สันตติ
+สันตะปาปา
+สันตะวา
+สันติ
+สันติกะ
+สันติภาพ
+สันตุฏฐี
+สันถระ
+สันถว-
+สันถวไมตรี
+สันถวะ
+สันถัต
+สันถาร
+สันทนะ
+สันทะ
+สันทัด
+สันทัดกรณี
+สันทัสนะ
+สันทาน
+สันทิฐิก-
+สันทิส
+สันเทส
+สันเทห
+สันธาน
+สันนิธิ
+สันนิบาต
+สันนิวาส
+สันนิเวส
+สันนิษฐาน
+สันปันน้ำ
+สันพร้านางแอ
+สันพร้ามอญ
+สันพร้าหอม
+สันรวง
+สันลึก
+สันสกฤต
+สันหลัง
+สันหลังยาว
+สับ
+สับเกลียว
+สับเงา
+สับเชือก
+สับนก
+สับปลับ
+สับปลี้
+สับปะขาว
+สับปะรด
+สับเปลี่ยน
+สับสน
+สับหลีก
+สัปคับ
+สัปคับช้าง
+สัปด-
+สัปดน
+สัปดปกรณ์
+สัปดประกรณ์
+สัปดสดก
+สัปดาห์
+สัปดาหะ
+สัปต-
+สัปตศก
+สัปทน
+สัปปะ
+สัปปิ
+สัปปุริส-
+สัปปุรุษ
+สัประยุทธ์
+สัปหงก
+สัปเหร่อ
+สัพ
+สัพพะ
+สัพพัญญู
+สัพเพเหระ
+สัพยอก
+สัมบูรณ์
+สัมปชัญญะ
+สัมปทา
+สัมปทาน
+สัมปยุต
+สัมปโยค
+สัมประสิทธิ์
+สัมประหาร
+สัมปรายภพ
+สัมปรายิกภพ
+สัมปัตติ
+สัมผัปลาป
+สัมผัส
+สัมผัสนอก
+สัมผัสใน
+สัมผัสสระ
+สัมผัสอักษร
+สัมพล
+สัมพหุลา
+สัมพัจฉร-
+สัมพัจฉรฉินท์
+สัมพัตสร
+สัมพัทธ์
+สัมพันธ-
+สัมพันธ์
+สัมพันธน์
+สัมพันธภาพ
+สัมพันธมิตร
+สัมพันธไมตรี
+สัมพาธะ
+สัมพาหน์
+สัมพาหะ
+สัมพุทธ-
+สัมพุทธะ
+สัมโพธิ
+สัมภวะ
+สัมภเวสี
+สัมภัต
+สัมภัตตะ
+สัมภาระ
+สัมภาษณ์
+สัมเภทะ
+สัมโภคกาย
+สัมมนา
+สัมมัปธาน
+สัมมา
+สัมมากัมมันตะ
+สัมมาจริยา
+สัมมาชีพ
+สัมมาทิฐิ
+สัมมาวาจา
+สัมมาวายามะ
+สัมมาสติ
+สัมมาสมาธิ
+สัมมาสังกัปปะ
+สัมมาอาชีวะ
+สัมโมทนียกถา
+สัมฤทธิ-
+สัมฤทธิ์
+สัมฤทธิศก
+สัยน์
+สัลลาป-
+สัลเลข-
+สัสดี
+สัสต-
+สัสตทิฐิ
+สัสสะ
+สัสสุ
+สัสสู
+สัสุรี
+สา
+ส่า
+สาก
+สากกะเบือ
+สากรรจ์
+สากล
+สากษิน
+สากษี
+สากหยาก
+สากัจฉา
+สากัลย์
+สากิย-
+สากิยบุตร
+สากิยมุนี
+สากิยะ
+สาเก
+ส่าขนุน
+สาขา
+ส่าไข้
+สาคร
+สาคเรศ
+สาคู
+สาคูลาน
+สาคูวิลาด
+สาง
+ส้าง
+สางคลื่น
+สางห่า
+สาฎก
+สาฏิก-
+สาณ-
+สาณี
+สาด
+สาดโคลน
+สาดน้ำรดกัน
+สาดเสียเทเสีย
+สาต
+สาตรา
+สาไถย
+สาทร
+สาทิส
+สาทิส-
+สาทิสลักษณ์
+สาทุ
+สาโท
+สาธก
+สาธย-
+สาธยะ
+สาธยาย
+สาธารณ-
+สาธารณ์
+สาธารณภัย
+สาธารณรัฐ
+สาธารณสถาน
+สาธารณสมบัติ
+สาธารณสมบัติของแผ่นดิน
+สาธารณสุข
+สาธารณะ
+สาธารณูปการ
+สาธารณูปโภค
+สาธิต
+สาธุ
+สาธุการ
+สาธุชน
+สาธุสะ
+สาน
+ส่าน
+สานตวะ
+สานุ
+สานุศิษย์
+สานู
+สาบ
+สาบขนุน
+สาบแร้ง
+สาบแร้งสาบกา
+สาบสูญ
+สาบเสือ
+สาบาน
+สาบานธง
+สาป
+สาปไตย
+สาปสรร
+สาม
+สามกษัตริย์
+สามเกลอ
+สามแก้ว
+สามขา
+สามขุม
+สามเขี้ยว
+สามคาน
+สามง่าม
+สามชุก
+สามแซ่
+สามเณร
+สามเณรี
+สามตา
+สามนต-
+สามนต์
+สามนตราช
+สามใบเถา
+สามเพลงตกม้าตาย
+สามเมา
+สามยทรัพย์
+สามรส
+สามล
+สามล้อ
+สามลำคาน
+สามวันดีสี่วันไข้
+สามเวท
+สามเศียร
+สามสลึงเฟื้อง
+สามสิบกลีบ
+สามเส้า
+สามหมุด
+สามหาบ
+สามหาว
+สามเหลี่ยม
+สามเหลี่ยมด้านเท่า
+สามเหลี่ยมมุมฉาก
+สามเหลี่ยมมุมป้าน
+สามเหลี่ยมมุมแหลม
+สามเหลี่ยมหน้าจั่ว
+สามัคคี
+สามัญ-
+สามัญสำนึก
+สามัตถิยะ
+สามานย-
+สามานย์
+สามานยนาม
+สามารถ
+สามิก
+สามิต
+สามินี
+สามิภักดิ์
+สามี
+สามีจิกรรม
+สาย
+ส่าย
+ส้าย
+สายกระได
+สายใจ
+สายชู
+สายซุง
+สายดิน
+สายตะพาย
+สายตัว
+สายตา
+สายตาพิการ
+สายติ่ง
+สายน้ำ
+สายน้ำผึ้ง
+สายบัว
+สายพาน
+สายฟ้า
+สายมงคล
+สายม่าน
+สายยู
+สายโยก
+สายใย
+สายระเดียง
+สายระยาง
+สายระโยง
+สายรัดทึบ
+สายรุ้ง
+สายล่อฟ้า
+สายลับ
+สายเลือด
+สายโลหิต
+ส่ายศึก
+ส่ายเศิก
+สายสนกลใน
+สายสมร
+สายสร้อย
+สายสวาท
+สายสะพาย
+สายสิญจน์
+สายสูตร
+สายหยุด
+สายเหา
+สายอากาศ
+สายเอก
+สายัณห์
+สายาห์
+สาร
+สาร-
+สารกรมธรรม์
+สารคดี
+สารตรา
+สารถี
+สารถีชักรถ
+สารท
+สารทา
+สารทุกข์สุกดิบ
+สารธรรม
+สารนิเทศ
+สารบบ
+สารบรรณ
+สารบัญ
+สารบับ
+ส้ารบับ
+สารบาญ
+สารบาญชี
+สารประกอบ
+สารประโยชน์
+สารพัด
+สารพัน
+สารพางค์
+สารภาพ
+สารภี
+สารภีทะเล
+สารภีป่า
+สารไมย
+สารละลาย
+สารวัด
+สารวัตร
+สารสนเทศ
+สารส้ม
+สารหนู
+สารหนูขาว
+สาระ
+สาระโกก
+สาระแน
+สาระพา
+สาระพาเฮโล
+สาระวอน
+สาระวารี
+สาระสะมา
+สารัตถ-
+สารัตถะ
+สารัตถะประโยชน์
+สารัทธ์
+สารัมภ์
+สาราณีย-
+สาราณียกร
+สาราณียธรรม
+สาราณียะ
+สารานุกรม
+สารีริกธาตุ
+สารูป
+สาโรช
+สาละ
+สาละวน
+สาลิ
+สาลิกา
+สาลินี
+สาลี
+สาลี่
+สาลู
+ส่าเลือด
+สาโลหิต
+สาว
+สาวก
+สาวกระทืบหอ
+สาวก้าว
+สาวแก่
+สาวเท้า
+สาวน้อยเล่นน้ำ
+สาวนะ
+สาวแส้
+สาวไส้
+สาวไส้ให้กากิน
+สาวิกา
+สาวิตร
+สาวิตรี
+สาสน
+สาสน-
+สาสน์
+สาสนธรรม
+สาสนา
+สาหร่าย
+สาหรี
+ส่าหรี
+สาหัตถ-
+สาหัตถิก-
+สาหัส
+สาหัสสากรรจ์
+ส่าเห็ด
+สาเหตุ
+ส่าเหล้า
+สาแหรก
+สาฬุระ
+สำ
+ส่ำ
+สำคัญ
+สำซ่าง
+สำแดง
+สำทับ
+สำนวด
+สำนวน
+สำนวนความ
+สำนอง
+สำนัก
+สำนักสงฆ์
+สำนาน
+สำนึก
+สำนึง
+สำเนา
+สำเนียง
+สำบอก
+สำบัดสำนวน
+สำปะลอ
+สำปะหลัง
+สำปั้น
+สำปันนี
+สำเภา
+สำเภาทอง
+สำมะงา
+สำมะโน
+สำมะโนครัว
+สำมะโนประชากร
+สำมะลอ
+สำมะเลเทเมา
+สำมะหา
+สำรด
+สำรวจ
+สำรวม
+สำรวมใจ
+สำรวย
+สำรวล
+สำรอก
+สำรอง
+สำรับ
+สำราก
+สำราญ
+สำริด
+สำเร็จ
+สำเร็จโทษ
+สำเร็จรูป
+สำเรา
+สำเริง
+สำโรง
+สำลัก
+สำลาน
+สำลี
+สำแลง
+สำสร้าง
+สำส่อน
+สำสา
+สำเส็ด
+ส่ำเสีย
+สำหรวด
+สำหรับ
+สำหา
+สำเหนียก
+สำเหร่
+สำออย
+สำอาง
+สิ
+สิกข์
+สิกขมานา
+สิกขา
+สิกขากาม-
+สิกขาบท
+สิขร
+สิขรี
+สิขเรศ
+สิขา
+สิขานล
+สิขี
+สิคาล
+สิง
+สิ่ง
+สิงขร
+สิ่งของ
+สิงค์
+สิงคลิ้ง
+สิงคลี
+สิงคาร
+สิงคาล
+สิงคี
+สิงโต
+สิงโตทะเล
+สิ่งพิมพ์
+สิ่งละอันพันละน้อย
+สิ่งแวดล้อม
+สิงสถิต
+สิงสาราสัตว์
+สิงสู่
+สิงห-
+สิงห์
+สิงหนาท
+สิงหบัญชร
+สิงหรา
+สิงหราช
+สิงหล
+สิงหลก-
+สิงหาคม
+สิงหาสน์
+สิญจ-
+สิญจน์
+สิต-
+สิตางศุ์
+สิถิล
+สิทธ-
+สิทธ์
+สิทธา
+สิทธาจารย์
+สิทธานต์
+สิทธารถ
+สิทธิ
+สิทธิ์
+สิทธิกร
+สิทธิการิยะ
+สิทธิ์ขาด
+สิทธิครอบครอง
+สิทธิชัย
+สิทธิโชค
+สิทธิบัตร
+สิทธิยึดหน่วง
+สิทธิสภาพนอกอาณาเขต
+สิธยะ
+สิน
+สิ้น
+สินค้า
+สินค้าเข้า
+สินค้าออก
+สิ้นคิด
+สินจ้าง
+สิ้นใจ
+สิ้นชีพ
+สิ้นชีพตักษัย
+สิ้นชีวิต
+สิ้นเชิง
+สินเชื่อ
+สินใช้
+สินเดิม
+สิ้นตำรา
+สิ้นแต้ม
+สินไถ่
+สินทรัพย์
+สิ้นท่า
+สินทูระ
+สินเทา
+สินธพ
+สินธุ
+สินธุระ
+สินเธาว์
+สินน้ำใจ
+สิ้นเนื้อประดาตัว
+สินบน
+สินบริคณห์
+สิ้นบุญ
+สิ้นประตู
+สิ้นพระชนม์
+สินระบาด
+สินแร่
+สิ้นไร้ไม้ตอก
+สิ้นฤทธิ์
+สิ้นลม
+สินสมรส
+สินส่วนตัว
+สินสอด
+สิ้นสุด
+สินหัวบัวนาง
+สินไหม
+สินไหมทดแทน
+สินะ
+สินาด
+สินิทธ์
+สินี
+สิเนรุ
+สิเนหก
+สิเนหนียะ
+สิเนหะ
+สิเนหา
+สิเน่หา
+สิบ
+สิบเบี้ยใกล้มือ
+สิบแปดมงกุฎ
+สิปปะ
+สิพนะ
+สิมพลี
+สิร-
+สิระ
+สิริ
+สิรี
+สิโรดม
+สิโรตม์
+สิลา
+สิโลก
+สิว
+สิ่ว
+สิ่วน่อง
+สิวเสี้ยน
+สิวะ
+สิวาลัย
+สิวิกา
+สิหนา
+สี
+สี่
+สี้
+สีกรุด
+สีกา
+สีกุน
+สีข้าง
+สีฆ-
+สีจัก
+สีชมพูดง
+สีชมพูสวน
+สีซอให้ควายฟัง
+สีด
+สีดอ
+สีต-
+สีต้น
+สีตล-
+สีตลรัศมี
+สีตลหฤทัย
+สีตโลทก
+สีโตทก
+สีทันดร
+สี่บท
+สีผึ้ง
+สีฝัด
+สีฟันคนทา
+สีฟันนางแอ
+สีไฟ
+สีมันต์
+สีมา
+สีลม
+สีละมัน
+สีวิกา
+สีสวรรค์
+สีสอ
+สีสะ
+สีสา
+สีสุก
+สีเสียด
+สีเสียดแก่น
+สีเสียดเปลือก
+สีเสียดเหนือ
+สีเสื้อน้อย
+สีห-
+สีห์
+สีหน้า
+สีหนาท
+สีหบัญชร
+สีหราช
+สีหะ
+สี่เหลี่ยม
+สี่เหลี่ยมขนมเปียกปูน
+สี่เหลี่ยมคางหมู
+สี่เหลี่ยมจัตุรัส
+สี่เหลี่ยมด้านขนาน
+สี่เหลี่ยมด้านไม่เท่า
+สี่เหลี่ยมผืนผ้า
+สึก
+สึกหรอ
+สึง
+สืบ
+สืบไป
+สืบพยาน
+สืบพันธุ์
+สืบพันธุ์แบบไม่อาศัยเพศ
+สืบพันธุ์แบบอาศัยเพศ
+สืบราชสมบัติ
+สืบราชสันตติวงศ์
+สืบศาสนา
+สืบสวน
+สืบสันดาน
+สืบสาย
+สืบสาวราวเรื่อง
+สืบเสาะ
+สืบหูก
+สื่อ
+สื่อการศึกษา
+สื่อมวลชน
+สื่อสาร
+สื่อสารมวลชน
+สุ
+สุก
+สุกก่อนห่าม
+สุกข์
+สุกดิบ
+สุกๆ ดิบๆ
+สุกแดด
+สุกร
+สุกรม
+สุกใส
+สุกเอาเผากิน
+สุกำศพ
+สุกียากี้
+สุข
+สุข-
+สุขนาฏกรรม
+สุขภัณฑ์
+สุขภาพ
+สุขลักษณะ
+สุขวิทยา
+สุขศาลา
+สุขศึกษา
+สุขา
+สุขาภิบาล
+สุขารมณ์
+สุขาวดี
+สุขิน
+สุขี
+สุขุม
+สุขุมาล
+สุคต
+สุคติ
+สุคนธ-
+สุคนธ์
+สุคนธรส
+สุคันธ์
+สุงก-
+สุงกะ
+สุงกากร
+สุงสิง
+สุงสุมาร
+สุงสุมารี
+สุจริต
+สุจหนี่
+สุจะ
+สุจิ
+สุจิต
+สุจิตร
+สุชน
+สุชัมบดี
+สุชา
+สุชาดา
+สุญ
+สุญ-
+สุญญ-
+สุญญากาศ
+สุญตา
+สุญนิยม
+สุณ
+สุณหา
+สุณิสา
+สุด
+สุดกำลัง
+สุดกู่
+สุดขีด
+สุดคน
+สุดคิด
+สุดจิต
+สุดใจ
+สุดด้าม
+สุดแต่
+สุดโต่ง
+สุดท้อง
+สุดท้าย
+สุดท้ายปลายโต่ง
+สุดแรงเกิด
+สุดลิ่ม
+สุดวิสัย
+สุดสงวน
+สุดสวาทขาดใจ
+สุดสายป่าน
+สุดเสียง
+สุดเสียงสังข์
+สุดหล้าฟ้าเขียว
+สุดเหวี่ยง
+สุดา
+สุต
+สุตกวี
+สุตตะ
+สุตตันตปิฎก
+สุตตันตะ
+สุติ
+สุทธ-
+สุทธ์
+สุทธาวาส
+สุทธิ
+สุทรรศน์
+สุทัศน์
+สุธา
+สุธาการ
+สุธาโภชน์
+สุธารส
+สุธารสชา
+สุธาสินี
+สุธาสี
+สุธี
+สุนทร
+สุนทร-
+สุนทรพจน์
+สุนทรี
+สุนทรีย-
+สุนทรียภาพ
+สุนทรียศาสตร์
+สุนทรียะ
+สุนัข
+สุนันท์
+สุโนก
+สุบดี
+สุบรรณ
+สุบิน
+สุปรีดิ์
+สุปรีย์
+สุปาณี
+สุพพัต
+สุพรรณ
+สุพรรณ-
+สุพรรณถัน
+สุพรรณบัฏ
+สุพรรณภาชน์
+สุพรรณราช
+สุพรรณศรี
+สุพรรณิการ์
+สุภ-
+สุภร
+สุภัค
+สุภา
+สุภาพ
+สุภาพชน
+สุภาพบุรุษ
+สุภาพสตรี
+สุภาษิต
+สุม
+สุ่ม
+สุมขอน
+สุมควัน
+สุ่มตัวอย่าง
+สุมทุม
+สุมน
+สุมนะ
+สุมนัส
+สุมนา
+สุมยุง
+สุ่มสี่สุ่มห้า
+สุ้มเสียง
+สุมหัว
+สุมะ
+สุมาลี
+สุเมธ
+สุเมรุ
+สุร-
+สุรคต
+สุรงค์
+สุรเชษฐ์
+สุรบดี
+สุรบถ
+สุรภาพ
+สุรภี
+สุรโลก
+สุรสีหนาท
+สุรเสียง
+สุรังค์
+สุรัติ
+สุรัสวดี
+สุรา
+สุรางค์จำเรียง
+สุรางคนา
+สุรางคนางค์
+สุราบาน
+สุรารักษ์
+สุราลัย
+สุรินทร์
+สุรินทราหู
+สุริย-
+สุริยกันต์
+สุริยกานต์
+สุริยการ
+สุริยกาล
+สุริยคติ
+สุริยคราส
+สุริยเคราะห์
+สุริยง
+สุริยน
+สุริยมณฑล
+สุริยะ
+สุริยัน
+สุริยา
+สุริยุปราคา
+สุริเยนทร์
+สุริเยศ
+สุริโย
+สุรีย์
+สุรุ่ยสุร่าย
+สุเรนทร์
+สุลต่าน
+สุว
+สุวภาพ
+สุวรรณ
+สุวรรณ-
+สุวรรณภูมิ
+สุวาน
+สุวินัย
+สุวิมล
+สุษิร
+สุสาน
+สุหนัต
+สุหร่ง
+สุหร่าย
+สุหฤท
+สุหัท
+สุเหร่า
+สู
+สู่
+สู้
+สูกษม
+สู่ขวัญ
+สู่ขอ
+สูง
+สูงเท่านกเขาเหิน
+สูงเทียมเมฆ
+สูงส่ง
+สูงสุดสอย
+สูงอายุ
+สูจกะ
+สูจนะ
+สูจิ
+สูจิบัตร
+สูเจ้า
+สูญ
+สูด
+สูต
+สูตร
+สูตรเคมี
+สูติ-
+สูติกรรม
+สูติบัตร
+สูติแพทย์
+สูติศาสตร์
+สูท
+สูท-
+สูทกรรม
+สูทศาสตร์
+สูน
+สูนุ
+สูบ
+สูบเลือด
+สูบเลือดสูบเนื้อ
+สูป-
+สูปการ
+สูปะ
+สู้ยิบตา
+สู้เย็บตา
+สูร
+สู้รบตบมือ
+สูรย-
+สูรย์
+สูรยกานต์
+สูรยคราส
+สูริ
+สู่รู้
+สู่สม
+สูสี
+สู้หน้า
+สู่หา
+สู้เหมือนหมาจนตรอก
+เส
+เสก
+เสกข-
+เสกขบุคคล
+เสกขะ
+เสกสรร
+เสข-
+เสขบุคคล
+เสขะ
+เสความ
+เส็ง
+เส้ง
+เส็งเคร็ง
+เสงี่ยม
+เสฏฐี
+เสณี
+เสด
+เสด็จ
+เสด็จในกรม
+เสด็จพระราชดำเนิน
+เสต-
+เสตุ
+เสถียร
+เสถียร-
+เสถียรภาพ
+เสท
+เสโท
+เสน
+เส้น
+เส้นแกงร้อน
+เส้นขนาน
+เส้นแข็ง
+เสนง
+เสน่ง
+เส้นด้าย
+เส้นตาย
+เส้นตื้น
+เส้นทาง
+เส้นบังคับ
+เส้นผมบังภูเขา
+เส้นผ่านศูนย์กลาง
+เส้นผ่าศูนย์กลาง
+เส้นแผลง
+เส้นยาแดงผ่าแปด
+เส้นใย
+เส้นใยแก้ว
+เส้นรอบวง
+เส้นรัศมี
+เส้นแร
+เส้นลายมือ
+เส้นลึก
+เส้นเลือด
+เส้นวันที่
+เส้นศูนย์สูตร
+เส้นสมมาตร
+เส้นสัมผัส
+เส้นสาย
+เสนห-
+เสน่ห์
+เสน่ห์จันทร์ขาว
+เสน่ห์จันทร์แดง
+เสน่ห์ปลายจวัก
+เส้นหมี่
+เสนหา
+เสน่หา
+เสนอ
+เส้นฮ่อ
+เสนะ
+เสนา
+เสน่า
+เสนากุฎ
+เสนางค์
+เสนางคนิกร
+เสนาธิการ
+เสนาธิปัต
+เสนานี
+เสนาบดี
+เสนาพยุห์
+เสนาพยูห์
+เสนาสนะ
+เสนาะ
+เสนี
+เสนีย์
+เสนียด
+เสนียะ
+เสบย
+เสบียง
+เสบียงกรัง
+เสพ
+เสพย์ติด
+เสเพล
+เสภา
+เสม็ด
+เสมหะ
+เสมอ
+เสมอใจ
+เสมอต้นเสมอปลาย
+เสมอตัว
+เสมอนอก
+เสมอบ่าเสมอไหล่
+เสมอภาค
+เสมอหน้า
+เสมา
+เสมียน
+เสมือน
+เสย
+เสร็จ
+เสริด
+เสริม
+เสริมสวย
+เสรี
+เสรีไทย
+เสรีธรรม
+เสรีนิยม
+เสรีภาพ
+เสล-
+เสลด
+เสลดพังพอน
+เสลดหางวัว
+เสลบรรพต
+เสลา
+เสลี่ยง
+เสลือกสลน
+เสโล
+เสวก
+เสวกามาตย์
+เสวนะ
+เสวนา
+เสวย
+เสวยพระชาติ
+เสวียน
+เสสรวง
+เสสรวล
+เสแสร้ง
+เสา
+เส้า
+เสากระโดง
+เสาเข็ม
+เสาชี้
+เสาดั้ง
+เสาตะลุง
+เสานางเรียง
+เสาร์
+เสารภย์
+เสารี
+เสาว-
+เสาวคนธ์
+เสาวคันธ์
+เสาวณิต
+เสาวธาร
+เสาวนะ
+เสาวนา
+เสาวนาการ
+เสาวนีย์
+เสาวภา
+เสาวภาคย์
+เสาวภาพ
+เสาวรภย์
+เสาวรส
+เสาวลักษณ์
+เสาหมอ
+เสาหฤท
+เสาหาน
+เสาเอก
+เสาะ
+เสาะด้าย
+เสาะป่าน
+เสาะแสะ
+เสิร์จ
+เสิร์ฟ
+เสีย
+เสียกบาล
+เสียกระบวน
+เสียกล
+เสียการ
+เสียกำซ้ำกอบ
+เสียกำได้กอบ
+เสียกำลังใจ
+เสียกิริยา
+เสียขวง
+เสียขวัญ
+เสียคน
+เสียคำพูด
+เสียง
+เสี่ยง
+เสียงเขียว
+เสียงแข็ง
+เสี่ยงชีวิต
+เสียงแตก
+เสียงทอง
+เสี่ยงทาย
+เสี่ยงบุญเสี่ยงกรรม
+เสียงพยัญชนะ
+เสี่ยงภัย
+เสียงสระ
+เสียงหลง
+เสียงอ่อน
+เสียจริต
+เสียใจ
+เสียโฉม
+เสียชาติเกิด
+เสียชื่อ
+เสียเชิง
+เสียด
+เสียดใบ
+เสียดสี
+เสียดาย
+เสียเด็ก
+เสียตัว
+เสียแต้ม
+เสียเถอะ
+เสียเถิด
+เสียท่า
+เสียที
+เสี้ยน
+เสี้ยนศึก
+เสี้ยนหนาม
+เสียน้ำใจ
+เสียน้ำตา
+เสียเนื้อเสียตัว
+เสียบ
+เสียบน
+เสียบหนู
+เสียปาก
+เสียเปรียบ
+เสียผี
+เสียผู้ใหญ่
+เสียภูมิ
+เสียม
+เสี่ยม
+เสี้ยม
+เสี้ยมเขาควายให้ชนกัน
+เสี้ยมสอน
+เสี่ยมสาร
+เสียรอย
+เสียรังวัด
+เสียราศี
+เสียรู้
+เสียรูป
+เสียรูปคดี
+เสียแรง
+เสียว
+เสี่ยว
+เสี้ยว
+เสียวซ่าน
+เสียวไส้
+เสียเศวตฉัตร
+เสียสละ
+เสียสาว
+เสียเส้น
+เสียหน่อย
+เสียหน้า
+เสียหลัก
+เสียหลาย
+เสียหัว
+เสียหาย
+เสียเหลี่ยม
+เสือ
+เสื่อ
+เสื้อ
+เสือก
+เสือกกะโหลก
+เสือกคลาน
+เสือกระดาษ
+เสือกระต่าย
+เสื้อกล้าม
+เสือกสน
+เสือกไส
+เสื้อกั๊ก
+เสือกินวัว
+เสือเก่า
+เสือข้ามห้วย
+เสือจนท่า ข้าจนทาง
+เสือซ่อนเล็บ
+เสือเฒ่าจำศีล
+เสือดาว
+เสือดำ
+เสือตกถัง
+เสือตบก้น
+เสือทลายห้าง ช้างทลายโรง
+เสือทะเล
+เสือนอนกิน
+เสือนั่งร่ม
+เสื้อน้ำ
+เสื่อน้ำมัน
+เสือในร่างสมัน
+เสือบอง
+เสือปลา
+เสือป่า
+เสือป่าแมวเซา
+เสือป่าแมวมอง
+เสือไฟ
+เสื่อม
+เสื่อมทราม
+เสื่อมโทรม
+เสื่อมสิทธิ์
+เสื่อมเสีย
+เสือแมลงวัน
+เสือรู้
+เสื่อลวด
+เสือลากหาง
+เสื่อลำแพน
+เสือสมิง
+เสือสิ้นตวัก
+เสือสุมาตรา
+เสื้อแสง
+เสือหมอบ
+เสือหิว
+แส
+แส่
+แส้
+แสก
+แสกๆ
+แสกหน้า
+แสง
+แสงเงินแสงทอง
+แสงจันทร์
+แสงสว่าง
+แสงอาทิตย์
+แสด
+แสดง
+แสดงออก
+แสตมป์
+แสเถา
+แสน
+แสนกล
+แสนง
+แสนงอน
+แสนย-
+แสนย์
+แสนยากร
+แสนยานุภาพ
+แสนรู้
+แสนเสนาะ
+แสนา
+แสบ
+แสบก
+แสม
+แสมสาร
+แส้ม้า
+แส้ม้าทะลาย
+แสยก
+แสยง
+แสยงขน
+แสยะ
+แสรก
+แสร้ง
+แสร้งว่า
+แสลง
+แสลงใจ
+แสลงเบื่อ
+แสวง
+แสอก
+แสะ
+โสก
+โสกโดก
+โสกันต์
+โสกาดานา
+โสโครก
+โสณ
+โสณฑ์
+โสณิ
+โสณี
+โสด
+โสดก
+โสดม
+โสดา
+โสดาบัน
+โสดาปัตติผล
+โสดาปัตติมรรค
+โสต
+โสต-
+โสตถิ
+โสตทัศนวัสดุ
+โสตทัศนอุปกรณ์
+โสทก
+โสทร
+โสธก
+โสธนะ
+โสน
+โสนกินดอก
+โสนคางคก
+โสนหางไก่
+โสนหิน
+โสภ-
+โสภณ
+โสภา
+โสภิณี
+โสภี
+โสเภณี
+โสม
+โสมนัส
+โสมม
+โสมย์
+โสมส่องแสง
+โสร่ง
+โสรจ
+โสรจสรง
+โสวรรณ
+โสหุ้ย
+โสฬส
+ใส
+ใส่
+ใส่ความ
+ใส่คะแนนไม่ทัน
+ใส่ไคล้
+ใส่ใจ
+ใส่ตะกร้าล้างน้ำ
+ใส่ถ้อยร้อยความ
+ใส่ไฟ
+ใส่ยา
+ใส่ร้าย
+ใส่สาแหรกแขวนไว้
+ใส่สีสัน
+ใส่ไส้
+ใส่หน้ากาก
+ใส่หน้ายักษ์
+ไส
+ไส้
+ไส้กรอก
+ไส้ไก่
+ไส้แขวน
+ไส้เดือน
+ไส้ตัน
+ไส้ติ่ง
+ไส้เป็นน้ำเหลือง
+ไส้เป็นหนอน
+ไสย
+ไสย-
+ไสยเวท
+ไสยศาสตร์
+ไสยา
+ไสยาสน์
+ไสร้
+ไส้ละมาน
+ไส้เลื่อน
+ไสว
+ไส้ศึก
+ไสหัว
+ไส้แห้ง
+ไส้อั่ว
+ห
+หก
+หกคว่ำ
+หกคะเมน
+หกบท
+หกล้ม
+หกโล่
+หกหัน
+หง
+หงกๆ
+หงส-
+หงส์
+หงสคติ
+หงส์ทอง
+หงสบาท
+หงสรถ
+หงส์ร่อนมังกรรำ
+หงสราช
+หงส์ลีลา
+หงส์หยก
+หงอ
+หงอก
+หง่องๆ
+หงองแหงง
+หงอด
+หงอดๆ
+หงอน
+หงอนไก่
+หงอนไก่ป่า
+หง่อม
+หงอย
+หง่อย
+หงอยก๋อย
+หงอยเหงา
+หงักๆ
+หงับๆ
+หง่าง
+หงาย
+หงายท้อง
+หงายหลัง
+หง่าว
+หงำ
+หงำเหงอะ
+หงิก
+หงิงๆ
+หงิม
+หงิมๆ
+หงึกๆ
+หงุงหงิง
+หงุดหงิด
+หงุบ
+หงุบหงับ
+หงุ่ย
+หญ้า
+หญ้ากระจาม
+หญ้าเกล็ดหอย
+หญ้าขัด
+หญ้าขัดใบยาว
+หญ้าขัดหลวง
+หญ้างวงช้าง
+หญ้าจาม
+หญ้าใต้ใบ
+หญ้าถอดปล้อง
+หญ้าน้ำดับไฟ
+หญ้าบัว
+หญ้าปากคอก
+หญ้าปีนตอ
+หญ้าฝรั่น
+หญ้าพันงู
+หญ้าเพ็ก
+หญ้าแพรก
+หญ้ายองไฟ
+หญ้ายายเภา
+หญ้ารกช้าง
+หญ้ารากขาว
+หญ้าลิเภา
+หญ้าหนวดแมว
+หญ้าแห้วหมู
+หญิง
+หญิบ
+หด
+หดหาย
+หดหู่
+หตะ
+หทย-
+หทัย
+หน
+หนทาง
+หนนะ
+หนวก
+หนวกหู
+หน่วง
+หน่วงเหนี่ยว
+หนวด
+หนวดนาคราช
+หนวดพราหมณ์
+หนวดแมว
+หน่วย
+หน่วยก้าน
+หน่วยกิต
+หน่วยดาราศาสตร์
+หนอ
+หน่อ
+หนอก
+หนอกช้าง
+หนอง
+หนองแซง
+หนองใน
+หน็องแหน็ง
+หนอน
+หนอนกระทู้
+หนอนกระสือ
+หนอนกอ
+หนอนด้น
+หนอนตายหยาก
+หนอนบ่อนไส้
+หนอนพยาธิ
+หนอนม้วนใบข้าว
+หนอนหนังสือ
+หน่อเนื้อเชื้อไข
+หน่อไม้
+หน่อไม้น้ำ
+หน่อไม้ฝรั่ง
+หน่อย
+หน็อยแน่
+หนัก
+หนักข้อ
+หนักใจ
+หนักแน่น
+หนักปาก
+หนักแผ่นดิน
+หนักมือ
+หนักไม่เอา เบาไม่สู้
+หนักหน่วง
+หนักหนา
+หนักหน้า
+หนักอก
+หนัง
+หนังกลางวัน
+หนังกำพร้า
+หนังไก่
+หนังตะลุง
+หนังเรียด
+หนังสติ๊ก
+หนังสือ
+หนังสือเดินทาง
+หนังสือบริคณห์สนธิ
+หนังสือพิมพ์
+หนังสือรับรองการทำประโยชน์
+หนังสือเวียน
+หนังสือสัญญา
+หนังหน้าไฟ
+หนังใหญ่
+หนั่น
+หนับ
+หนา
+หน้า
+หน้ากระฉีก
+หน้ากระดาน
+หน้ากาก
+หนากาสรี
+หน้าเก้อ
+หน้าขา
+หน้าข้าวตัง
+หน้าแข้ง
+หน้าคว่ำ
+หน่าง
+หน้างอ
+หน้างอก
+หน้าเง้า
+หน้าแง
+หน้าจ๋อย
+หน้าจั่ว
+หน้าจืด
+หน้าฉาก
+หน้าฉาน
+หน้าโฉนด
+หน้าซีด
+หน้าซื่อใจคด
+หน้าเซียว
+หนาด
+หน้าด้าน
+หน้าตัก
+หน้าตั้ง
+หนาตา
+หน้าตา
+หน้าต่าง
+หน้าตาย
+หน้าตึง
+หน้าตื่น
+หน้าตูม
+หน้าเตา
+หน้าถัง
+หน้าทับ
+หน้าที่
+หน้าที่นั่ง
+หนาน
+หน้านวล
+หน้าเนื้อใจเสือ
+หนาแน่น
+หน้าบัน
+หน้าบาง
+หน้าบาน
+หน้าบูด
+หน้าปัด
+หน้าเป็น
+หน้าผา
+หน้าผาก
+หน้าพาทย์
+หน้าไฟ
+หนาม
+หนามขี้แรด
+หนามเขียะ
+หนามควายนอน
+หนามจี้
+หนามแดง
+หนามเตย
+หนามพรม
+หนามพุงดอ
+หนามยอกอก
+หนามยอกเอาหนามบ่ง
+หนามรอบตัว
+หนามหลัง
+หนามเหม็น
+หนามแหลมไม่มีใครเสี้ยม
+หนามใหญ่
+หน้ามอด
+หน้าม่อย
+หน้าม้า
+หน้ามืด
+หน้ามุข
+หน้าไม้
+หน่าย
+หน่ายหนี
+หน่ายแหนง
+หน้าร่าหุ์
+หน้าราหู
+หน้าเลือด
+หนาว
+หนาวใจ
+หน้าวัว
+หน้าแว่น
+หน้าสิ่วหน้าขวาน
+หน้าเสีย
+หน้าเสี้ยว
+หน้าหนา
+หน้าหัก
+หนาหู
+หนาหูหนาตา
+หน้าใหญ่ใจโต
+หน้าไหว้หลังหลอก
+หน้าอก
+หน้าอัด
+หนำ
+หนำใจ
+หนำเลี้ยบ
+หนี
+หนี้
+หนี้เกลื่อนกลืนกัน
+หนีบ
+หนี้สิน
+หนี้สูญ
+หนีเสือ
+หนีเสือปะจระเข้
+หนึก
+หนึ่ง
+หนึบ
+หนืด
+หนุ
+หนุน
+หนุนเนื่อง
+หนุนหลัง
+หนุบ
+หนุบๆ
+หนุบหนับ
+หนุ่ม
+หนุ่มทั้งแท่ง
+หนุ่มแน่น
+หนุ่มเหน้า
+หนุ่ย
+หนู
+หนูตกถังข้าวสาร
+หนูติดจั่น
+หนูผี
+ห่ม
+หมก
+หมกมุ่น
+หมกไหม้
+หมด
+หมดกระเป๋า
+หมดกัน
+หมดเขต
+หมดเขี้ยวหมดงา
+หมดจด
+หมดตัว
+หมดตำรา
+หมดตูด
+หมดเนื้อหมดตัว
+หมดบุญ
+หมดประตู
+หมดเปลือก
+หมดพก
+หมดพุง
+หมดรูป
+หมดไส้หมดพุง
+ห่มดอง
+หมดอายุ
+หมดอาลัย
+หมดอาลัยตายอยาก
+หมดอาลัยไยดี
+หม่น
+หม่นหมอง
+หม่นไหม้
+หมวก
+หมวกกะโล่
+หมวกแก๊ป
+หมวกแจว
+หมวกทรงหม้อตาล
+หมวกนิรภัย
+หมวกหูกระต่าย
+หมวด
+หมอ
+หม่อ
+หม้อ
+หมอก
+หม้อแกง
+หม้อแกงค่าง
+หม้อแกงลิง
+หมอขวัญ
+หม้อข้าวหม้อแกงลิง
+หมอความ
+หมอง
+หม่อง
+หมองใจ
+หมองมัว
+หมองหมาง
+หมอช้างเหยียบ
+หมอเฒ่า
+หมอดู
+หมอตาล
+หม้อตาล
+หมอตำแย
+หม้อทะนน
+หมอไทย
+หมอน
+หม่อน
+หมอนขวาน
+หมอนข้าง
+หมอนทอง
+หมอน้อย
+หม้อน้ำ
+หมอน้ำมัน
+หมอบ
+หมอบกระแต
+หมอบราบคาบแก้ว
+หม้อแปลง
+หม้อแปลงไฟ
+หมอผี
+หมอพัดโตนด
+หม่อม
+หม่อมเจ้า
+หม่อมฉัน
+หม่อมราชวงศ์
+หม่อมหลวง
+หม่อมห้าม
+หมอย
+หมอลำ
+หม้อหนู
+หม้อห้อม
+หมัก
+หมักหมม
+หมัด
+หมัน
+หมั่น
+หมั้น
+หมั่นไส้
+หมับ
+หมับๆ
+หมา
+หม่า
+หม้า
+หมาก
+หมากเก็บ
+หมากข่วง
+หมากเขียว
+หมากแข้ง
+หมากคัน
+หมากดิบ
+หมากแดง
+หมากทัน
+หมากผาง
+หมากผู้หมากเมีย
+หมากฝรั่ง
+หมากม่วน
+หมากมาศ
+หมากเม่า
+หมากเม่าควาย
+หมากยับ
+หมากแยก
+หมากรุก
+หมากลิง
+หมากสง
+หมากหนาม
+หมากหอมควาย
+หมากเหลือง
+หมากอีแปะ
+หมากฮอส
+หมาขี้ไม่มีใครยกหาง
+หมาง
+หมางใจ
+หมางเมิน
+หมาจิ้งจอก
+หมาด
+หมาใน
+หมาป่า
+หมามุ่ย
+หมามุ้ย
+หมาไม้
+หมาย
+หม้าย
+หมายกำหนดการ
+หมายเกณฑ์
+หมายขัง
+หมายค้น
+หมายความ
+หมายจับ
+หมายจำคุก
+หมายใจ
+หมายตัว
+หมายตา
+หมายน้ำบ่อหน้า
+หมายปล่อย
+หมายมั่น
+หมายมั่นปั้นมือ
+หมายยา
+หมายเรียก
+หมายเลข
+หมายหัว
+หมายเหตุ
+หมายอาญา
+หมาร่า
+หมาสองราง
+หมาหมู่
+หมาหยอกไก่
+หมาหวงก้าง
+หมาหัวเน่า
+หมาหางด้วน
+หมาเห่าใบตองแห้ง
+หม่ำ
+หม้ำ
+หม้ำตับ
+หมิ่น
+หมิ่นประมาท
+หมิ่นพระบรมเดชานุภาพ
+หมิ่นเหม่
+หมี
+หมี่
+หมีเหม็น
+หมึก
+หมืน
+หมื่น
+หมุด
+หมุน
+หมุนเงิน
+หมุนเวียน
+หมุบ
+หมุบหมับ
+หมุบหมิบ
+หมุ่ย
+หมุยขาว
+หมู
+หมู่
+หมูเขาจะหามเอาคานเข้าไปสอด
+หมูแดง
+หมูตั้ง
+หมูเทโพ
+หมูน้ำ
+หมูแนม
+หมูในเล้า
+หมูในอวย
+หมูป่า
+หมูไปไก่มา
+หมูแผ่น
+หมูยอ
+หมูสนาม
+หมูสามชั้น
+หมูสี
+หมูหย็อง
+หมูหริ่ง
+หมูหรึ่ง
+หมูหัน
+หมูแฮม
+หย-
+หยก
+หยกๆ
+หย่ง
+หย่งๆ
+หยด
+หยดย้อย
+หยวก
+หยวบ
+หยวบๆ
+หยอก
+หยอกเย้า
+หย็อกหย็อย
+หยอกเอิน
+หย็อง
+หย่อง
+หย่องๆ
+หย็องกรอด
+หย็องแหย็ง
+หยอด
+หยอดหลุม
+หยอน
+หย่อน
+หย่อนใจ
+หย่อนอารมณ์
+หย่อม
+หย็อมแหย็ม
+หย็อย
+หย่อย
+หยัก
+หยักไย่
+หยักรั้ง
+หยักศก
+หยักเหยา
+หยัง
+หยั่ง
+หยั่งทราบ
+หยั่งรู้
+หยั่งเสียง
+หยังหยัง
+หยัด
+หยัน
+หยับ
+หยับๆ
+หยั่วเมือง
+หย่า
+หยากเยื่อ
+หยากไย่
+หย่ากัน
+หยาด
+หยาดน้ำค้าง
+หยาดน้ำฟ้า
+หย่านม
+หยาบ
+หยาบคาย
+หยาบช้า
+หยาบหยาม
+หยาม
+หยามน้ำหน้า
+หยาว
+หย้าว
+หยำเป
+หยำเหยอะ
+หยำแหยะ
+หยิก
+หยิกแกมหยอก
+หยิกหย็อง
+หยิ่ง
+หยิบ
+หยิบผิด
+หยิบยก
+หยิบยืม
+หยิบหย่ง
+หยิมๆ
+หยี
+หยี่
+หยุ
+หยุกหยิก
+หยุด
+หยุดหย่อน
+หยุ่น
+หยุบๆ
+หยุมหยิม
+หยูกยา
+หโยดม
+หร
+หรคุณ
+หรณ
+หรดาล
+หรดาลกลีบทอง
+หรดาลแดง
+หรดี
+หรบๆ
+หรรษ-
+หรรษา
+หรอ
+หรอก
+หร็อมแหร็ม
+หรอยๆ
+หระ
+หรับๆ
+หรัสว-
+หรัสวมูรดี
+หรัสวางค์
+หรา
+หริ
+หริคันธ์
+หริ่ง
+หริ่งๆ
+หริจันทน์
+หริณะ
+หริต
+หริตกี
+หริรักษ์
+หริวงศ์
+หรี่
+หรีด
+หรีตกี
+หรือ
+หรุบๆ
+หรุบรู่
+หรุบหรู่
+หรุ่ม
+หรู
+หรูหรา
+หฤทย
+หฤทย์
+หฤทัย
+หฤทัย-
+หฤทัยกลม
+หฤทัยกัปน์
+หฤทัยกัมป์
+หฤทัยปรีย์
+หฤทัยพันธน์
+หฤษฎ์
+หฤษฎี
+หฤหรรษ์
+หฤโหด
+หล
+หลง
+หลงกล
+หลงตา
+หลงลม
+หลงลืม
+หลงหูหลงตา
+หลงเหลือ
+หลงใหล
+หลด
+หลน
+หล่น
+หลบ
+หลบตา
+หลบฝาก
+หลบมุม
+หลบหน้า
+หลบหน้าหลบตา
+หลบหลังคา
+หล่ม
+หลวง
+หลวงจีน
+หลวม
+หลวมตัว
+หลอ
+หล่อ
+หลอก
+หลอกๆ
+หลอกลวง
+หลอกล่อ
+หลอกหลอน
+หลอด
+หลอดลม
+หลอดลมคอ
+หลอดลมฝอย
+หลอดเลือด
+หลอดอาหาร
+หลอน
+หล็อน
+หล็อนๆ
+หล่อน
+หลอม
+หลอมตัว
+หลอมละลาย
+หลอมเหลว
+หล่อลื่น
+หล่อเลี้ยง
+หล่อเหลา
+หละ
+หละหลวม
+หลัก
+หลักการ
+หลักเกณฑ์
+หลักแจว
+หลักชัย
+หลักฐาน
+หลักตอ
+หลักทรัพย์
+หลักประกัน
+หลักพยาน
+หลักลอย
+หลักสูตร
+หลักแหล่ง
+หลักแหลม
+หลัง
+หลั่ง
+หลังเขียว
+หลังคา
+หลังคาเรือน
+หลังจาก
+หลังฉาก
+หลังเต่า
+หลังยาว
+หลั่งไหล
+หลัดๆ
+หลั่น
+หลับ
+หลับตา
+หลับนก
+หลับใน
+หลัว
+หลา
+หล้า
+หลาก
+หลากใจ
+หลากหลาย
+หลาท
+หลาน
+หลาบ
+หลาบจำ
+หลาม
+หลาย
+หลายเติบ
+หลายหลาก
+หลายแหล่
+หลาว
+หลาวเหล็ก
+หลาหล
+หลิก
+หลิ่ง
+หลิท
+หลิน
+หลิม
+หลิว
+หลิ่ว
+หลิ่วตา
+หลี
+หลีก
+หลีโก
+หลีบ
+หลีฮื้อ
+หลืบ
+หลุกหลิก
+หลุด
+หลุดปาก
+หลุดพ้น
+หลุดมือ
+หลุดลอย
+หลุดลุ่ย
+หลุนๆ
+หลุบ
+หลุบลู่
+หลุม
+หลุมโจน
+หลุมพราง
+หลุมพอ
+หลุมพี
+หลุมหลบภัย
+หลุมอากาศ
+หลู่
+หลู่หลี่
+หวง
+ห่วง
+ห้วง
+หวงก้าง
+ห่วงใย
+หวงห้าม
+หวงแหน
+หวด
+หวน
+ห้วน
+ห้วนๆ
+หวนคำนึง
+หวย
+ห้วย
+หวอ
+หวอด
+หว็อยๆ
+หวะ
+หวัง
+หวัด
+หวัดๆ
+หวั่น
+หวันยิหวา
+หวั่นหวาด
+หวั่นไหว
+หวัว
+หวัวร่อ
+หวัวเราะ
+หวา
+หว่า
+หว้า
+หวาก
+หว่าง
+หวาด
+หวาดระแวง
+หวาดเสียว
+หวาดหวั่น
+หวาดไหว
+หวาน
+หว่าน
+หวานคอแร้ง
+หว่านล้อม
+หวาม
+หวาย
+หวายดิน
+หวายตะมอย
+หวำ
+หวิด
+หวิว
+หวี
+หวี่
+หวีด
+หวือ
+หวุดหวิด
+หวุม
+หวูด
+หสน-
+หอ
+ห่อ
+ห้อ
+หอก
+หอกข้างแคร่
+หอกซัด
+หอการค้า
+หอคอย
+หอคำ
+หอง
+ห้อง
+ห้องเครื่อง
+ห้องชุด
+ห้องแถว
+ห้องน้ำ
+ห้องสมุด
+หอจดหมายเหตุ
+ห่อตัว
+หอไตร
+หอน
+ห่อน
+หอบ
+หอบหิ้ว
+หอบหืด
+หอบังคับการ
+หอประชุม
+หอพัก
+หอม
+ห้อม
+หอมกราย
+หอมขาว
+หอมจันทร์
+หอมแดง
+หอมเตียม
+หอมป้อม
+หอมแป้น
+ห้อมเมือง
+หอมยับ
+ห้อมล้อม
+หอมหวน
+หอย
+ห้อย
+หอยโข่ง
+ห้อยท้าย
+หอยปากเป็ด
+หอยแปดเกล็ด
+หอยเม่น
+ห้อยโหน
+หอสมุด
+ห่อหมก
+ห่อเหี่ยว
+ห่อแห่
+ห้อแห้
+หะ
+หะยี
+หะแรก
+หะหาย
+หะห้าย
+หะแห้น
+หัก
+หักกลบลบหนี้
+หักคอ
+หักใจ
+หักด้ามพร้าด้วยเข่า
+หักทองขวาง
+หักบัญชี
+หักมุก
+หักราคา
+หักร้าง
+หักแรง
+หักล้าง
+หักลำ
+หักหน้า
+หักหลัง
+หักหาญ
+หักห้าม
+หักเห
+หักโหม
+หักอก
+หักอกหักใจ
+หังส-
+หัจญ์
+หัจญี
+หัช
+หัฏฐะ
+หัด
+หัดเยอรมัน
+หัต
+หัตถ-
+หัตถ์
+หัตถกรรม
+หัตถการ
+หัตถกิจ
+หัตถบาส
+หัตถพันธ์
+หัตถศิลป์
+หัตถศึกษา
+หัตถาจารย์
+หัตถานึก
+หัตถาภรณ์
+หัตถาโรหะ
+หัตถาลังการ
+หัตถินี
+หัตถี
+หัน
+หั่น
+หั้น
+หันตรา
+หันตา
+หันรีหันขวาง
+หันหน้าเข้าหากัน
+หันหลังให้กัน
+หันเห
+หั่นแหลก
+หันอากาศ
+หับ
+หับเผย
+หัมมียะ
+หัย
+หัว
+หัวกระเด็น
+หัวกระไดไม่แห้ง
+หัวกระสุน
+หัวก๊อก
+หัวกะทิ
+หัวก่ายท้ายเกย
+หัวกุญแจ
+หัวเก่า
+หัวแก้วหัวแหวน
+หัวขโมย
+หัวขวาน
+หัวข้อ
+หัวขั้ว
+หัวขาด
+หัวขี้แต้
+หัวขี้หมา
+หัวเข้า
+หัวแข็ง
+หัวโขน
+หัวคว่ำ
+หัวคะแนน
+หัวค่ำ
+หัวคิด
+หัวใคร่
+หัวงอน
+หัวงาน
+หัวเงิน
+หัวเงื่อน
+หัวโจก
+หัวใจ
+หัวชนกำแพง
+หัวชนฝา
+หัวซุกหัวซุน
+หัวซุน
+หัวด้วน
+หัวดาวหัวเดือน
+หัวดื้อ
+หัวเด็ดตีนขาด
+หัวเดียวกระเทียมลีบ
+หัวต่อ
+หัวตะกั่ว
+หัวตะคาก
+หัวตะโหงก
+หัวเต่า
+หัวเตาไฟ
+หัวถอก
+หัวเถิก
+หัวที
+หัวเทียน
+หัวเทียม
+หัวนกกระจอก
+หัวนม
+หัวนอก
+หัวนอน
+หัวนอนปลายตีน
+หัวน้ำ
+หัวน้ำขึ้น
+หัวน้ำลง
+หัวเนื้อ
+หัวเนื้อทราย
+หัวบัว
+หัวเบี้ย
+หัวโบราณ
+หัวปลวก
+หัวปลี
+หัวปักหัวปำ
+หัวปั่น
+หัวป่า
+หัวปาก
+หัวปี
+หัวพัน
+หัวพุงหัวมัน
+หัวฟืนหัวไฟ
+หัวมังกุท้ายมังกร
+หัวมัน
+หัวเม็ด
+หัวเมือง
+หัวแม่ตีน
+หัวแม่เท้า
+หัวแม่มือ
+หัวแมลงวัน
+หัวไม้
+หัวไม่วางหางไม่เว้น
+หัวรอ
+หัวร่อ
+หัวร้อยรู
+หัวระแหง
+หัวรักหัวใคร่
+หัวรั้น
+หัวราน้ำ
+หัวรุนแรง
+หัวเราะ
+หัวเรี่ยวหัวแรง
+หัวเรื่อง
+หัวเรือใหญ่
+หัวแรง
+หัวแร้ง
+หัวลม
+หัวล้าน
+หัวลิง
+หัวเลี้ยว
+หัวเลี้ยวหัวต่อ
+หัวโล้น
+หัวว่าว
+หัวสำเภา
+หัวสูง
+หัวเสีย
+หัวไส้
+หัวหกก้นขวิด
+หัวหงอก
+หัวหด
+หัวหน้า
+หัวหน่าว
+หัวหมอ
+หัวหมื่น
+หัวหมุน
+หัวหมู
+หัวหลักหัวตอ
+หัวหาด
+หัวหายตะพายขาด
+หัวเห็ด
+หัวแหลม
+หัวแหวน
+หัวใหม่
+หัวไหล่
+หัวอก
+หัวออก
+หัวอ่อน
+หัส
+หัสดิน
+หัสดี
+หัสต
+หัสต์
+หัสตะ
+หา
+ห่า
+ห้า
+หาก
+หากว่า
+หากิน
+ห่ากิน
+หาความ
+หาค่ามิได้
+หาง
+ห่าง
+ห้าง
+หางกระเบน
+หางกระรอก
+หางกระหมวด
+หางกราย
+หางกะลวย
+หางกะลวยไก่
+หางกังหัน
+หางกิ่ว
+หางแกละ
+หางไก่
+หางขมวด
+หางขอด
+หางข้าว
+หางแข็ง
+หางค้อ
+หางเครื่อง
+หางจระเข้
+หางจิ้งเหลน
+หางช้าง
+หางเต่า
+หางแถว
+หางนกกะลิง
+หางนกยูง
+หางนกยูงฝรั่ง
+หางนาค
+หางปลา
+หางเปีย
+หางแพน
+หางแมงป่อง
+หางยาม
+หางยาว
+หางเลข
+หางว่าว
+หางสิงห์
+หางเสียง
+หางเสือ
+หางหงส์
+หางหนู
+ห้างหุ้นส่วน
+ห้างหุ้นส่วนจำกัด
+ห้างหุ้นส่วนสามัญ
+ห่างเห
+ห่างเหิน
+หางไหล
+หางไหลแดง
+หางไหลเผือก
+หาเงิน
+หาเช้ากินค่ำ
+หาญ
+หาด
+หาดก
+หาตก
+หาตัวจับยาก
+ห้าแต้ม
+หาน
+ห่าน
+หาบ
+หาบมิได้
+หาบเร่
+หาบหลวง
+หาม
+ห่าม
+ห้าม
+ห้ามญาติ
+ห้ามทัพ
+ห้ามปราม
+ห้ามเปลี่ยนมือ
+ห้ามพระแก่นจันทน์
+หามรอก
+หามรุ่งหามค่ำ
+ห้ามล้อ
+ห้ามเลือด
+หามแล่น
+ห้ามสมุทร
+หามิได้
+หาไม่
+หาไม่ก็
+หาย
+หายกัน
+หายขาด
+หายเข้ากลีบเมฆ
+หายใจ
+หายใจไม่ทั่วท้อง
+หายตัว
+หายนะ
+หายหกตกหล่น
+หายหน้า
+หายห่วง
+หายหัว
+หาร
+หารร่วมมาก
+หาริ
+หาริน
+หารี
+หารือ
+หาเรื่อง
+ห่าลง
+หาลิท
+หาเลือดกับปู
+หาว
+ห้าว
+หาวนอน
+ห้าวหาญ
+หาเศษหาเลย
+หาส
+หาสก
+หาสยะ
+หาสู่
+หาเสียง
+หาห่วงมาคล้องคอ
+หาเหตุ
+หำ
+ห้ำ
+ห้ำหัก
+ห้ำหั่น
+หิ้ง
+หิงคุ
+หิงสา
+หิงห้อย
+หิ่งห้อย
+หิ่งหาย
+หิด
+หิต
+หิต-
+หิตกร
+หิตประโยชน์
+หิตพจน์
+หิตวจนะ
+หิตานุหิตประโยชน์
+หิน
+หิน-
+หินงอก
+หินชนวน
+หินชั้น
+หินชาติ
+หินดินดาน
+หินดินสอพอง
+หินตะกอน
+หินตับเป็ด
+หินทราย
+หินน้ำมัน
+หินปูน
+หินแปร
+หินฝนทอง
+หินย้อย
+หินยาน
+หินแลง
+หินสบู่
+หินโสโครก
+หินหนืด
+หินอ่อน
+หินอัคนี
+หิม-
+หิมพาน
+หิมพานต์
+หิมวัต
+หิมวันต์
+หิมวา
+หิมวาต
+หิมวาน
+หิมวาส
+หิมเวศ
+หิมะ
+หิมาลัย
+หิรัญ
+หิรัญ-
+หิรัญญิการ์
+หิรัญบัฏ
+หิรัณย-
+หิรัณย์
+หิรัณยการ
+หิรัณยเกศ
+หิรัณยรัศมี
+หิริ
+หิริโอตตัปปะ
+หิว
+หิ้ว
+หิ้วท้อง
+หิ้วปีก
+หี
+หีด
+หีตา
+หีเต่า
+หีน-
+หีนยาน
+หีบ
+หีบชัก
+หีบเชิงชาย
+หีบฝ้าย
+หีบพระมาลัย
+หีบเพลง
+หีบเพลงชัก
+หีบเพลงปาก
+หีบสไบ
+หีบเสียง
+หีบห่อ
+หึๆ
+หึง
+หึ่ง
+หึ่งๆ
+หึงส-
+หึงสา
+หืด
+หืน
+หื่น
+หื่นหรรษ์
+หือ
+หื้อ
+หือไม่ขึ้น
+หือรือโหด
+หุง
+หุงข้าวประชดหมา
+หุต-
+หุตโกวิท
+หุตาจารย์
+หุน
+หุ่น
+หุ้น
+หุ้นกู้
+หุ่นนิ่ง
+หุ้นบุริมสิทธิ
+หุ่นพยนต์
+หุ้นลม
+หุ่นไล่กา
+หุ้นส่วน
+หุนหัน
+หุนหันพลันแล่น
+หุบ
+หุบเขา
+หุบปาก
+หุบผา
+หุบเหว
+หุ้ม
+หุ้มกลอง
+หุ้มแผลง
+หุ้มแพร
+หุ้ยหุย
+หุยฮา
+หุรัม
+หุหนิงหงัน
+หู
+หู่
+หูก
+หูกระต่าย
+หูกวาง
+หูแจว
+หูฉลาม
+หูฉี่
+หูชอง
+หูช้าง
+หูด
+หูดับตับไหม้
+หูตาสว่าง
+หูติ
+หูตึง
+หูตูบ
+หูทวนลม
+หูเบา
+หูปลาช่อน
+หูป่าตาเถื่อน
+หูผีจมูกมด
+หูผึ่ง
+หูรูด
+หูไว
+หูไวตาไว
+หูเสือ
+หูหนาตาโต
+หูหนาตาเล่อ
+หูหนู
+หู่หี่
+หูไห
+เห
+เห่
+เหง
+เหง่ง
+เหงา
+เหง้า
+เหงาหงอย
+เหงื่อ
+เหงือก
+เหงือกปลาหมอ
+เหงื่อกาฬ
+เห็จ
+เห็ด
+เห็ดโคน
+เห็ดหลุบ
+เหติ
+เหตุ
+เหตุการณ์
+เหตุผล
+เหตุสุดวิสัย
+เห็น
+เห็นกงจักรเป็นดอกบัว
+เห็นแก่
+เห็นแก่หน้า
+เห็นขี้ดีกว่าไส้
+เห็นเขาขึ้นคานหาม เอามือประสานก้น
+เหน่ง
+เหนงนายพราน
+เห็นจะ
+เห็นใจ
+เห็นช้างขี้ ขี้ตามช้าง
+เหน็ด
+เหน็ดเหนื่อย
+เห็นดำเห็นแดง
+เห็นดี
+เหน็บ
+เหน็บชา
+เหน็บแนม
+เห็นหน้าเห็นหลัง
+เหน่อ
+เห็นอ้ม
+เหนอะ
+เหนอะหนะ
+เหน้า
+เหนาะๆ
+เหนียง
+เหนี่ยง
+เหนียงนกกระทุง
+เหนี่ยน
+เหนียม
+เหนียว
+เหนี่ยว
+เหนี่ยวนำแม่เหล็กไฟฟ้า
+เหนียวแน่น
+เหนี่ยวรั้ง
+เหนียวหนืด
+เหนียวหมา
+เหนือ
+เหนื่อย
+เหนื่อยหน่าย
+เห็บ
+เห็บน้ำ
+เหม
+เหม-
+เหม่
+เหม่ง
+เหม็น
+เหม็นเขียว
+เหม็นเบื่อ
+เหม็นเปรี้ยว
+เหมวดี
+เหม่อ
+เหมันต-
+เหมันต์
+เหมา
+เหมายัน
+เหมาะ
+เหมาะเจาะ
+เหมาะสม
+เหมาะเหม็ง
+เหมียว
+เหมี่ยว
+เหมือง
+เหมืองฝาย
+เหมือด
+เหมือดคน
+เหมือดโลด
+เหมือน
+เหมือนกับ
+เหมือนว่า
+เหมือนหนึ่งว่า
+เหมื่อย
+เหมื่อยๆ
+เหย
+เหยเก
+เหยง
+เหย่อย
+เหยา
+เหย่า
+เหย่าๆ
+เหย้า
+เหยาะ
+เหยาะๆ
+เหยาะแหยะ
+เหยิง
+เหยิบๆ
+เหยียด
+เหยียดผิว
+เหยียดหยาม
+เหยียบ
+เหยียบขี้ไก่ไม่ฝ่อ
+เหยียบจมูก
+เหยียบย่ำ
+เหยียบเรือสองแคม
+เหยี่ยว
+เหยี่ยวข่าว
+เหยื่อ
+เหยือก
+เหรัญญิก
+เหรา
+เหราเล่นน้ำ
+เหราะๆ
+เหรียญ
+เหรียญกระษาปณ์
+เห่เรือ
+เหล่
+เหล็ก
+เหล็กกล้า
+เหล็กกล้าไม่เป็นสนิม
+เหล็กใน
+เหล็กพืด
+เหล็กวิลาด
+เหล็กส่ง
+เหล็กเส้น
+เหล็กหมาด
+เหล็กหล่อ
+เหล็กเหนียว
+เหล็กไหล
+เหลน
+เหลว
+เหลวแหลก
+เหลวไหล
+เหลอ
+เหลา
+เหล่า
+เหล้า
+เหล่ากอ
+เหลาชะโอน
+เหลาหลก
+เหล้าแห้ง
+เหลาะแหละ
+เหลิง
+เหลิงเจิ้ง
+เหลียน
+เหลี่ยม
+เหลี่ยมคู
+เหลี่ยมลูกบาศก์
+เหลียว
+เหลียวแล
+เหลียวหลัง
+เหลือ
+เหลือก
+เหลือกำลัง
+เหลือเกิน
+เหลือขอ
+เหลือเข็ญ
+เหลือเข็น
+เหลือง
+เหลืองหางฟ้า
+เหลืองหิน
+เหลือใจ
+เหลือเชื่อ
+เหลือใช้
+เหลือทน
+เหลือบ
+เหลือบ่ากว่าแรง
+เหลือเฟือ
+เหลือม
+เหลื่อม
+เหลื่อมล้ำต่ำสูง
+เหลือมือ
+เหลือรับ
+เหลือร้าย
+เหลือล้น
+เหลือวิสัย
+เหลือสติกำลัง
+เหลือแสน
+เหลือหลอ
+เหลือหลาย
+เหลือแหล่
+เหลืออด
+เหลืออดเหลือทน
+เหว
+เหว่
+เหวง
+เหวทะเล
+เหวย
+เหวอะ
+เหวอะหวะ
+เหวี่ยง
+เหวี่ยงแห
+เห่อ
+เห่อเหิม
+เหอะ
+เหอะน่า
+เหะ
+เหะหะ
+เหา
+เห่า
+เหาฉลาม
+เหาทะเล
+เหาน้ำ
+เหาไม้
+เหาะ
+เหิน
+เหินห่าง
+เหินเห่อ
+เหิม
+เหิมหาญ
+เหิมห้าว
+เหิมฮึก
+เหี้ย
+เหียง
+เหียงกราด
+เหียน
+เหี้ยน
+เหียนราก
+เหี้ยม
+เหี้ยมเกรียม
+เหี้ยมหาญ
+เหี้ยมโหด
+เหี่ยว
+เหี่ยวแห้ง
+เหื่อ
+เหือด
+เหือดหาย
+เหือดแห้ง
+แห
+แห่
+แห้
+แหก
+แหกคอก
+แหกปาก
+แหง
+แหง่
+แห่ง
+แห้ง
+แหงแก๋
+แหง่ง
+แหงน
+แหงนเต่อ
+แหงนเถ่อ
+แห้งผาก
+แห้งแล้ง
+แห้งเหี่ยว
+แห้งเหือด
+แหน
+แห้น
+แหนง
+แหนงใจ
+แหนงหน่าย
+แหนบ
+แหนม
+แหบ
+แหม
+แหม่
+แหม่ม
+แหมะ
+แหย
+แหย่
+แหยง
+แหย่ง
+แหยม
+แหย็ม
+แหยะ
+แหยะๆ
+แหล
+แหล่
+แหลก
+แหลกลาญ
+แหลกเหลว
+แหล่ง
+แหล่งเสื่อมโทรม
+แหล่งหล้า
+แหลน
+แหล่นอก
+แหล่ใน
+แหลม
+แหลมหลัก
+แหละ
+แหว
+แห้ว
+แหวก
+แหวกแนว
+แหว่ง
+แหวด
+แหวน
+แหวนหัว
+แห้วหมู
+แหวะ
+แห่ห้อม
+แห่แหน
+แหะ
+แหะๆ
+โห่
+โหก
+โหง
+โหงพราย
+โหด
+โหดร้าย
+โหดเหี้ยม
+โหน
+โหนก
+โหนกแก้ม
+โหน่ง
+โหม
+โหม-
+โหม่
+โหมกรรม
+โหมกูณฑ์
+โหม่ง
+โหมด
+โหมดเทศ
+โหมโรง
+โหมหัก
+โหมฮึก
+โหย
+โหยกเหยก
+โหยง
+โหย่ง
+โหย่งๆ
+โหยหวน
+โหยไห้
+โหร
+โหรง
+โหรงเหรง
+โหรดาจารย์
+โหระพา
+โหรา
+โหรากระบือ
+โหราเขาเนื้อ
+โหราจารย์
+โหราเดือยไก่
+โหราตีนหมา
+โหราเท้าสุนัข
+โหราบอน
+โหราศาสตร์
+โหล
+โหล่
+โหลงโจ้ง
+โหว
+โหว่
+โหว้
+โหวกเหวก
+โหวง
+โหวงเหวง
+โหวด
+โหวต
+ให้
+ให้การ
+ใหญ่
+ให้โดยเสน่หา
+ให้ท่า
+ให้ท้าย
+ใหม่
+ใหม่ถอดด้าม
+ใหม่เอี่ยม
+ให้ร้าย
+ให้ร้ายป้ายสี
+ให้สัตยาบัน
+ให้หา
+ให้อภัย
+ให้ออก
+ไห
+ไห่
+ไห้
+ไหซอง
+ไหน
+ไหปลาร้า
+ไหม
+ไหม้
+ไหมทอง
+ไหมสับปะรด
+ไหรณย์
+ไหล
+ไหล่
+ไหล่เขา
+ไหล่ถนน
+ไหล่ทวีป
+ไหล่ทาง
+ไหลน้ำ
+ไหล่รวบ
+ไหว
+ไหวๆ
+ไหว้
+ไหว้ครู
+ไหว้เจ้า
+ไหวตัว
+ไหวติง
+ไหวทัน
+ไหว้ผี
+ไหวพริบ
+ไหว้วาน
+ไหหลำ
+ฬ
+อ
+อก
+อกไก่
+อกคราก
+อกตั้ง
+อกตัญญุตา
+อกตัญญู
+อกเต่า
+อกแตก
+อกทะเล
+อกนิษฐ์
+อกเมือง
+อกรณีย์
+อกรรมกริยา
+อกรวบ
+อกร่อง
+อกโรย
+อกเลา
+อกหัก
+อกัปปิย-
+อกัปปิยวัตถุ
+อกัปปิยโวหาร
+อกัปปิยะ
+อกุศล
+อกุศล-
+อกุศลกรรม
+อกุศลกรรมบถ
+อกุศลเจตนา
+อกุศลมูล
+อคติ
+อคเนสัน
+อคาธ
+อคาร-
+อฆ
+อโฆษะ
+อง
+องก์
+องค-
+องค์
+องค์กฐิน
+องค์กร
+องค์การ
+องค์การสหประชาชาติ
+องคชาต
+องค์ประกอบ
+องค์ประชุม
+องคมนตรี
+องคมรรษ
+องครักษ์
+องควิการ
+องควิเกษป
+องควิทยา
+องคาพยพ
+องคุล
+องคุลี
+องศ์
+องศา
+องอาจ
+องุ่น
+อจร
+อจล-
+อจลา
+อจิตติ
+อจินตา
+อจินไตย
+อจิร-
+อจิระ
+อเจลก
+อเจละ
+อช
+อชา
+อชิน
+อชินี
+อชิร
+อฏวี
+อณิ
+อณุ
+อณู
+อโณทัย
+อด
+อดกลั้น
+อดใจ
+อดตาหลับขับตานอน
+อดทน
+อดนม
+อดเปรี้ยวไว้กินหวาน
+อดสู
+อดแห้งอดแล้ง
+อดอยาก
+อดออม
+อดิ
+อดิถี
+อดิเทพ
+อดิเรก
+อดิเรก-
+อดิเรกลาภ
+อดิศร
+อดิศวร
+อดิศัย
+อดีต
+อดีต-
+อดีตกาล
+อดีตชาติ
+อดีตภพ
+อดีตสมัย
+อดุล
+อดุลย-
+อดุลย์
+อติ
+อติชาต
+อติชาต-
+อติชาตบุตร
+อติมานะ
+อติราช
+อติเรก
+อติเรก-
+อติเรกจีวร
+อติเรกลาภ
+อติสาร
+อถรรพเวท
+อทระ
+อทินนาทาน
+อทินนาทายี
+อธรรม
+อธิ
+อธิก-
+อธิกมาส
+อธิกรณ์
+อธิกวาร
+อธิกสุรทิน
+อธิการ
+อธิการบดี
+อธิคม
+อธิฏฐาน
+อธิบดี
+อธิบาย
+อธิป
+อธิป-
+อธิปไตย
+อธิมาตร
+อธิมุตติ
+อธิโมกข์
+อธิราช
+อธิวาส
+อธิวาสนะ
+อธิศีล
+อธิษฐาน
+อธึก
+อน-
+อ้น
+อนงค-
+อนงค์
+อนงคณะ
+อนงคเลข
+อนงคเลขา
+อนธ-
+อนธการ
+อนนต์
+อนยะ
+อนรรฆ
+อนรรถ
+อนล
+อนวัช
+อนวัช-
+อ้นอ้อ
+อนัญ
+อนัญ-
+อนัญคติ
+อนัญสาธารณ์
+อนัตตา
+อนัตถ-
+อนันต-
+อนันต์
+อนันตร-
+อนันตริยกรรม
+อนัม
+อนากูล
+อนาคต
+อนาคต-
+อนาคตกาล
+อนาคามิผล
+อนาคามิมรรค
+อนาคามี
+อนาจาร
+อนาถ
+อนาถา
+อนาทร
+อนาธิปไตย
+อนามัย
+อนารย-
+อนารยชน
+อนารยธรรม
+อนารยะ
+อนาลัย
+อนำ
+อนิจ
+อนิจ-
+อนิจกรรม
+อนิจจัง
+อนิจจา
+อนิฏฐารมณ์
+อนิยต
+อนิยม
+อนิยม-
+อนิล
+อนิล-
+อนิลบถ
+อนิวรรต
+อนิวรรตน์
+อนิษฏ์
+อนีก-
+อนีกทรรศนะ
+อนีกทัศนะ
+อนีกะ
+อนีกัฐ
+อนีจ
+อนึก
+อนึ่ง
+อนุ
+อนุกร
+อนุกรม
+อนุกรรมการ
+อนุกระเบียด
+อนุกาชาด
+อนุการ
+อนุกูล
+อนุคามิก
+อนุคามี
+อนุเคราะห์
+อนุจร
+อนุช
+อนุชน
+อนุชา
+อนุชาต
+อนุชาต-
+อนุชาตบุตร
+อนุชิต
+อนุญาต
+อนุญาโตตุลาการ
+อนุตร-
+อนุเถระ
+อนุทิน
+อนุบท
+อนุบาล
+อนุปริญญา
+อนุปสัมบัน
+อนุปัสนา
+อนุพงศ์
+อนุพัทธ์
+อนุพันธ์
+อนุโพธ
+อนุภรรยา
+อนุภริยา
+อนุภาค
+อนุภาษ
+อนุมัติ
+อนุมาตรา
+อนุมาน
+อนุมูล
+อนุมูลกรด
+อนุโมทนา
+อนุโมทนาบัตร
+อนุโยค
+อนุรักษ-
+อนุรักษ์
+อนุรักษนิยม
+อนุราช
+อนุราธ
+อนุราธะ
+อนุราธา
+อนุรูป
+อนุโลม
+อนุวงศ์
+อนุวัต
+อนุวาต
+อนุศาสก
+อนุศาสน์
+อนุศาสนาจารย์
+อนุศิษฏ์
+อนุสติ
+อนุสนธิ
+อนุสภากาชาด
+อนุสร
+อนุสรณ์
+อนุสัญญา
+อนุสัย
+อนุสาวรีย์
+อนุสาสนี
+อเนก
+อเนก-
+อเนกคุณ
+อเนกประสงค์
+อเนกวิธ
+อเนกอนันต์
+อเนกอนันตัง
+อเนจอนาถ
+อโนชา
+อโนดาต
+อบ
+อบเชย
+อบรม
+อบอวล
+อบอ้าว
+อบอุ่น
+อบาย
+อบาย-
+อบายภูมิ
+อบายมุข
+อป
+อปการ
+อปจายน-
+อปจายนธรรม
+อปจายนมัย
+อปภาคย์
+อปมงคล
+อปมาน
+อปยศ
+อปร-
+อปรภาค
+อประมาณ
+อประมาท
+อประไมย
+อปรัณณชาติ
+อปรา
+อปราชัย
+อปราชิต
+อปราธ
+อปริมาณ
+อปลักษณ์
+อปโลกน์
+อปวาท
+อปหาร
+อปาจี
+อปาจีน
+อปาน
+อเปหิ
+อพพะ
+อพยพ
+อภว
+อภัพ
+อภัพ-
+อภัพบุคคล
+อภัพผล
+อภัย
+อภัย-
+อภัยทาน
+อภัยโทษ
+อภิ
+อภิฆาต
+อภิจฉา
+อภิชฌา
+อภิชน
+อภิชน-
+อภิชนาธิปไตย
+อภิชัย
+อภิชาต
+อภิชาต-
+อภิชาตบุตร
+อภิชิต
+อภิญญา
+อภิญญาณ
+อภิณห-
+อภิธรรม
+อภิธาน
+อภิไธย
+อภินันท์
+อภินันทนาการ
+อภินัย
+อภินิหาร
+อภิเนษกรมณ์
+อภิบาล
+อภิปรัชญา
+อภิปราย
+อภิมหาอำนาจ
+อภิมานะ
+อภิมุข
+อภิรดี
+อภิรติ
+อภิรมย์
+อภิรักษ์
+อภิรัฐมนตรี
+อภิราม
+อภิรุต
+อภิรุม
+อภิรูป
+อภิลักขิต
+อภิลักขิต-
+อภิลักขิตกาล
+อภิลักขิตสมัย
+อภิเลปน์
+อภิวันท์
+อภิวาท
+อภิวาทน์
+อภิเษก
+อภิเษกสมรส
+อภิสมโพธิ
+อภิสมัย
+อภิสมาจาร
+อภิสัมโพธิ
+อภิสัมโพธิญาณ
+อภิสิต
+อภิสิทธิ์
+อภูต
+อม
+อ้ม
+อมความ
+อมต-
+อมตบท
+อมตะ
+อมนุษย์
+อมปาก
+อมพะนำ
+อมเพลิง
+อมภูมิ
+อมมือ
+อมยิ้ม
+อมร
+อมร-
+อมรบดี
+อมรรัตน์
+อมรราช
+อมรสตรี
+อมรา
+อมราวดี
+อมรินทร์
+อมเรนทร์
+อมเรศ
+อมเรศวร
+อมโรค
+อมฤต
+อมฤต-
+อมฤตบท
+อมฤตยู
+อมฤตรส
+อมเลือดอมฝาด
+อมเลือดอมหนอง
+อมหนอง
+อมัจจะ
+อมัตร
+อมาตย์
+อมาวสี
+อมาวสุ
+อมาวาสี
+อมิตร
+อเมริกัน
+อย
+อยน
+อยัส
+อย่า
+อยาก
+อย่าง
+อย่างไร
+อย่างไรก็ดี
+อย่างไรก็ตาม
+อยุทธ์
+อยู่
+อยู่กรรม
+อยู่กิน
+อยู่คง
+อยู่งาน
+อยู่จริง
+อยู่ดีกินดี
+อยู่ตัว
+อยู่ท้อง
+อยู่ไฟ
+อยู่มือ
+อยู่ไม่สุข
+อยู่ยงคงกระพัน
+อยู่ยาม
+อยู่โยง
+อยู่เวร
+อยู่หมัด
+อร
+อรช
+อรชร
+อรชุน
+อรณ
+อรดี
+อรติ
+อรทัย
+อรไท
+อรธาน
+อรนุช
+อรพินท์
+อรพิม
+อรรค
+อรรฆ
+อรรฆย์
+อรรจน์
+อรรณพ
+อรรถ
+อรรถ-
+อรรถกถา
+อรรถกถาจารย์
+อรรถกร
+อรรถกวี
+อรรถคดี
+อรรถบท
+อรรถปฏิสัมภิทา
+อรรถประโยชน์
+อรรถรส
+อรรถาธิบาย
+อรรธ
+อรรธ-
+อรรธกรรณ
+อรรธคราส
+อรรธจักร
+อรรธจันทร์
+อรรธนิศา
+อรรธบท
+อรรธภาค
+อรรธสระ
+อรสุม
+อรสุมพล
+อรหะ
+อรหัง
+อรหัต
+อรหัต-
+อรหัตผล
+อรหัตมรรค
+อรหัตวิโมกข์
+อรหัน
+อรหันต-
+อรหันต์
+อรหันตฆาต
+อร่อย
+อรัญ
+อรัญ-
+อรัญญิก
+อรัญวาส
+อรัญวาสี
+อรัณย์
+อราดี
+อราติ
+อร่าม
+อริ
+อริน
+อรินทร์
+อริย-
+อริยกะ
+อริยทรัพย์
+อริยบุคคล
+อริยผล
+อริยมรรค
+อริยสัจ
+อริยะ
+อรุ
+อรุณ
+อรุโณทัย
+อรุ่ม
+อรูป
+อลงกต
+อลงกรณ์
+อลงการ
+อลวน
+อลเวง
+อลหม่าน
+อล่องฉ่อง
+อลักเอลื่อ
+อลังการ
+อลัชชี
+อล่างฉ่าง
+อลิงค์
+อลึงค์
+อลึ่งฉึ่ง
+อโลหะ
+อวก
+อ้วก
+อวกาศ
+อวเคราะห์
+อวจร
+อวชัย
+อวชาต
+อวชาต-
+อวชาตบุตร
+อวด
+อวดดี
+อวดรู้
+อวดอ้าง
+อวตาร
+อวน
+อ้วน
+อ้วนท้วน
+อวนลอย
+อวนลาก
+อวบ
+อวบน้ำ
+อวมงคล
+อวมอำ
+อวย
+อวยวะ
+อวรุทธ์
+อวรุทธก
+อวล
+อวสาน
+อวหาร
+อวัยวะ
+อวัสดา
+อวาจี
+อวิจี
+อวิชชา
+อวิญญาณก-
+อวิญญาณกทรัพย์
+อวิญญู
+อวิรุทธ์
+อวิโรธน์
+อวีจิ
+อเวจี
+อโศก
+อสงไขย
+อสนี
+อสนีบาต
+อสภ
+อสมการ
+อสมมาตร
+อสรพิษ
+อสังกมทรัพย์
+อสังหาริม-
+อสังหาริมทรัพย์
+อสังหาริมะ
+อสัญ-
+อสัญกรรม
+อสัญญี
+อสัญญีภาพ
+อสัญญีภาวะ
+อสัญญีสัตว์
+อสัญแดหวา
+อสัตถพฤกษ์
+อสัตย์
+อสัมภิน-
+อสัมภินพงศ์
+อสัมภินวงศ์
+อสาธร
+อสาธุ
+อสิ
+อสิจรรยาการ
+อสิต
+อสิธารา
+อสิเลสะ
+อสีตยานุพยัญชนะ
+อสีติ
+อสีติมหาสาวก
+อสุ
+อสุจิ
+อสุนีบาต
+อสุภ
+อสุภ-
+อสุภกรรมฐาน
+อสุภสัญญา
+อสุร-
+อสุรกาย
+อสุรี
+อสุเรศ
+อสูร
+อเส
+อเสกข-
+อเสกขบุคคล
+อเสกขะ
+อเสข-
+อเสขะ
+อห
+อหังการ
+อหิ
+อหิงสา
+อหิวาตกโรค
+อหึงสา
+อเหตุกทิฐิ
+อโหสิกรรม
+ออ
+อ้อ
+อ๋อ
+ออก
+ออกกำลัง
+ออกขุนนาง
+ออกแขก
+ออกโขน
+ออกไข้หัว
+ออกงาน
+ออกงิ้ว
+ออกชื่อ
+ออกซิเจน
+ออกซิเดชัน
+ออกไซด์
+ออกญา
+ออกดอก
+ออกดอกออกผล
+ออกตัว
+ออกท่า
+ออกท่าออกทาง
+ออกทุกข์
+ออกทุน
+ออกนอกหน้า
+ออกบวช
+ออกปาก
+ออกผื่น
+ออกฝี
+ออกฝีดาษ
+ออกพรรษา
+ออกไฟ
+ออกภาษา
+ออกมหาสมาคม
+ออกยักษ์ออกโขน
+ออกรส
+ออกรับ
+ออกร้าน
+ออกเรือน
+ออกแรง
+ออกโรง
+ออกฤทธิ์
+ออกลาย
+ออกลิงออกค่าง
+ออกลูก
+ออกวัง
+ออกเสียง
+ออกหน้าออกตา
+ออกหัด
+ออกหาก
+ออกอากาศ
+อ่อง
+อ๋อง
+อ้องแอ้ง
+ออเจ้า
+ออเซาะ
+ออด
+ออดๆ
+ออดอ้อน
+ออดแอด
+ออดๆ แอดๆ
+อ๊อดแอ๊ด
+อ๊อดๆ แอ๊ดๆ
+อ้อดิบ
+อ่อน
+อ้อน
+อ่อนข้อ
+อ่อนความ
+อ่อนจิตอ่อนใจ
+อ่อนใจ
+อ่อนช้อย
+ออนซ์
+ออนซอน
+อ่อนซอน
+อ่อนไท้
+อ่อนน้อม
+อ่อนปวกเปียก
+อ่อนเปลี้ย
+อ่อนเปียก
+อ่อนเพลีย
+อ่อนโยน
+อ้อนวอน
+อ่อนหวาน
+อ่อนหัด
+อ่อนหู
+อ่อนไหว
+อ่อนอกอ่อนใจ
+อ้อนออด
+อ่อนแอ
+อ้อนแอ้น
+ออฟฟิศ
+ออม
+อ่อม
+อ้อม
+ออมครอม
+อ้อมค้อม
+ออมชอม
+ออมซอม
+ออมสิน
+อ้อมอก
+ออมอด
+อ้อมแอ้ม
+อ่อย
+อ้อย
+อ๋อย
+อ้อยเข้าปากช้าง
+อ้อยช้าง
+อ้อยแดง
+อ้อยเลา
+อ้อยส้อย
+อ้อยอิ่ง
+ออสเมียม
+อ้อแอ้
+อ๊ะ
+อะคร้าว
+อะเคื้อ
+อะจีน
+อะแจ
+อะเซทิลีน
+อะดรีนาลีน
+อะดัก
+อะดักอะเดี้ย
+อะดักอะเดื่อ
+อะดักอะแด้
+อะดุง
+อะตอม
+อะนะ
+อะนั้น
+อะนี้
+อะมีบา
+อะเมริเซียม
+อะร้าอร่าม
+อะไร
+อะลุ่มอล่วย
+อะลุ้มอล่วย
+อะลูมิเนียม
+อะหม
+อะไหล่
+อะอื้อ
+อะเอื้อย
+อัก
+อั้ก
+อั้กๆ
+อั๊ก
+อั๊กๆ
+อักกะ
+อักโกธะ
+อักข
+อักขร-
+อักขรวิธี
+อักขรวิบัติ
+อักขรสมัย
+อักขระ
+อักขรานุกรม
+อักขรานุกรมภูมิศาสตร์
+อักโข
+อักโขภิณี
+อักโขเภณี
+อักษร
+อักษร-
+อักษรกลาง
+อักษรต่ำ
+อักษรบฏ
+อักษรลักษณ์
+อักษรเลข
+อักษรศาสตร์
+อักษรสมัย
+อักษรสาสน์
+อักษรสูง
+อักษะ
+อักเษาหิณี
+อักเสบ
+อักอ่วน
+อัคคะ
+อัคคิ
+อัคคี
+อัคคีภัย
+อัคนิ
+อัคนิคณะ
+อัคนิพ่าห์
+อัคนิรุทร
+อัคนิวาหะ
+อัคนิโหตร
+อัคนี
+อัคร-
+อัครชายา
+อัครมหาเสนาบดี
+อัครมเหสี
+อัครราชทูต
+อัครสมณทูต
+อัง
+อังก์
+อังกนะ
+อังกฤษ
+อังกวด
+อังกะลุง
+อังกา
+อังกาบ
+อังกาบฝรั่ง
+อังกาบหนู
+อังกุร
+อังกุศ
+อังกูร
+อังคณะ
+อังคณา
+อังคาร
+อังคาส
+อังคีรส
+อังคุฐ
+อังฆาต
+อั้งยี่
+อั้งโล่
+อังศุ
+อังศุก
+อังศุธร
+อังศุมาลี
+อังส-
+อังสกุฏ
+อังสตรอม
+อังสนา
+อังสภาระ
+อังสะ
+อังสา
+อัจกลับ
+อัจจันต์
+อัจจัย
+อัจจิ
+อัจจิมา
+อัจจุต
+อัจเจกะ
+อัจฉรา
+อัจฉริย-
+อัจฉริยบุคคล
+อัจฉริยภาพ
+อัจฉริยลักษณ์
+อัจฉริยลักษณะ
+อัจฉริยะ
+อัจนา
+อัชฌัตติก-
+อัชฌา
+อัชฌาจาร
+อัชฌาศัย
+อัชฌาสัย
+อัญ-
+อัญขยม
+อัญชนะ
+อัญชลี
+อัญชัน
+อัญชันป่า
+อัญเชิญ
+อัญญะ
+อัญดิตถีย์
+อัญเดียรถีย์
+อัญประกาศ
+อัญประกาศเดี่ยว
+อัญมณี
+อัญมัญ-
+อัญรูป
+อัฏ
+อัฏฐ-
+อัฏฐะ
+อัฏฐังค์
+อัฏฐังคิกมรรค
+อัฏฐังสะ
+อัฏนา
+อัฐ
+อัฐเคราะห์
+อัฐทิศ
+อัฐบริขาร
+อัฐบาน
+อัฐม-
+อัฐมะ
+อัฐยายซื้อขนมยาย
+อัฐศก
+อัฐฬส
+อัฐิ
+อัฐิมิญชะ
+อัฐิสัณฐาน
+อัฒ-
+อัฒจันทร์
+อัฒภาค
+อัฒมณฑล
+อัฒมาส
+อัฒรัตติ
+อัณฑ-
+อัณฑโกส
+อัณฑชะ
+อัณฑะ
+อัณฑาการ
+อัณณพ
+อัด
+อัดก๊อบปี้
+อัดแจ
+อัดฉีด
+อัดแบตเตอรี่
+อัดแผ่นเสียง
+อัดรูป
+อัดลม
+อัดสำเนา
+อัดเสียง
+อัดอั้น
+อัดอั้นตันใจ
+อัดแอ
+อัต-
+อัตคัด
+อัตชีวประวัติ
+อัตตะ
+อัตตา
+อัตตาธิปไตย
+อัตถ์
+อัตถะ
+อัตนัย
+อัตโนมัติ
+อัตภาพ
+อัตรชะ
+อัตรา
+อัตราเร็ว
+อัตราส่วน
+อัตลัด
+อัตวินิบาตกรรม
+อัตหิต-
+อัตเหตุ
+อัททา
+อัทธ-
+อัทธ์
+อัทธคต
+อัทธคู
+อัทธา
+อัทธาน
+อัทธายุ
+อัธยาตมวิทยา
+อัธยาย
+อัธยาศัย
+อัน
+อั้น
+อั๋น
+อันดก
+อันดร
+อันดับ
+อันด๊าก
+อันโด๊ก
+อันต-
+อันตก
+อันตกาล
+อันตกิริยา
+อันตคุณ
+อันตคู
+อันตชาติ
+อันตร
+อันตร-
+อันตรการณ์
+อันตรธาน
+อันตรภาค
+อันตรวาสก
+อันตรา
+อันตราย
+อันตรายิกธรรม
+อันตลิกขะ
+อันตะ
+อั้นตั้น
+อันติก
+อันติม-
+อันติมสัจ
+อันติมะ
+อั้นตู้
+อันเต
+อันเตบุระ
+อันเตบุริก
+อันเตบุริกา
+อันเตปุระ
+อันเตปุริก
+อันเตปุริกา
+อันเตวาสิก
+อันโต
+อันโตชน
+อันโตนาที
+อันแถ้ง
+อันทุ
+อันโทล
+อันธ-
+อันธการ
+อันธพาล
+อันธิกา
+อันนะ
+อันนา
+อันเป็น
+อันเป็นไป
+อันโยนย-
+อันโยนยะ
+อันวย-
+อันวัย
+อันว่า
+อันเวส
+อั้นอ้น
+อับ
+อับจน
+อับเฉา
+อับปาง
+อับอาย
+อัป-
+อัปกะ
+อัปการ
+อัปฏิฆะ
+อัปฏิภาค
+อัปปะ
+อัปเปหิ
+อัปภาคย์
+อัปมงคล
+อัปยศ
+อัประมาณ
+อัประมาท
+อัประไมย
+อัปราชัย
+อัปรีย์
+อัปลักษณ์
+อัปสร
+อัพพุท
+อัพโพหาริก
+อัพภันดร
+อัพภันตร-
+อัพภาน
+อัพภาส
+อัม
+อัมพ-
+อัมพร
+อัมพฤกษ์
+อัมพวัน
+อัมพวา
+อัมพา
+อัมพาต
+อัมพิล
+อัมพุ
+อัมพุช
+อัมพุชินี
+อัมพุท
+อัยกะ
+อัยกา
+อัยการ
+อัยกี
+อัยยะ
+อัยยิกา
+อัลกุรอาน
+อัลตราไวโอเลต
+อั่ว
+อัศจรรย์
+อัศเจรีย์
+อัศว-
+อัศวโกวิท
+อัศวมุข
+อัศวมุขี
+อัศวเมธ
+อัศวยุช
+อัศวานึก
+อัศวิน
+อัศวินี
+อัษฎ-
+อัษฎกฉันท์
+อัษฎมงคล
+อัษฎมะ
+อัษฎางคิกมรรค
+อัษฎายุธ
+อัษฎาวุธ
+อัษฏมงคล
+อัส-
+อัสดง
+อัสดงคต
+อัสดม
+อัสดร
+อัสนี
+อัสมิมานะ
+อัสมุขี
+อัสสนี
+อัสสะ
+อัสสัตถพฤกษ์
+อัสสานิก
+อัสสานีก
+อัสสานึก
+อัสสาสะ
+อัสสุ
+อัสสุชล
+อัสสุธารา
+อา
+อ่า
+อ้า
+อากร
+อากรแสตมป์
+อากังขา
+อากัป
+อากัปกิริยา
+อากัมปนะ
+อากัมปะ
+อาการ
+อาการ-
+อาการนาม
+อากาศ
+อากาศ-
+อากาศธาตุ
+อากาศยาน
+อากูล
+อาเกียรณ์
+อาขยาต
+อาขยาน
+อาคเนย์
+อาคม
+อาครหายณี
+อาคันตุก-
+อาคันตุกภัต
+อาคันตุกวัตร
+อาคันตุกะ
+อาคาร
+อาคารชุด
+อาฆาต
+อาฆาตนะ
+อาฆาตมาดร้าย
+อ่าง
+อ้าง
+อ่างเก็บน้ำ
+อางขนาง
+อ้างว้าง
+อ้างอิง
+อาจ
+อาจม
+อาจมน
+อาจริย-
+อาจริยวัตร
+อาจริยวาท
+อาจหาญ
+อาจอง
+อาจเอื้อม
+อาจาด
+อาจาร
+อาจาร-
+อาจารย์
+อาจารี
+อาจิณ
+อาจิณ-
+อาจิณสมาจาร
+อาเจียน
+อาชญัปติ
+อาชญัปติ์
+อาชญา
+อาชญากร
+อาชญากรรม
+อาชญากรสงคราม
+อาชญาบท
+อาชญาบัตร
+อาชญาศึก
+อาชญาสิทธิ์
+อาชวะ
+อาชา
+อาชาน
+อาชานิ
+อาชาไนย
+อาชีพ
+อาชีว-
+อาชีวก
+อาชีวศึกษา
+อาชีวะ
+อ้าซ่า
+อาญา
+อาญาสิทธิ์
+อาฏานา
+อาณัติ
+อาณัติสัญญาณ
+อาณา
+อาณาเกษตร
+อาณาเขต
+อาณาจักร
+อาณานิคม
+อาณาประชาราษฎร์
+อาณาประโยชน์
+อาด
+อาดๆ
+อาดุร
+อาดุลย์
+อาดูร
+อาดูลย์
+อาเด๊ะ
+อาตม-
+อาตมทาน
+อาตมภาพ
+อาตมัน
+อาตมา
+อาตุร
+อาถรรพ์
+อาถรรพณ์
+อาถรรพณะ
+อาทร
+อาทาตา
+อาทาน
+อาทิ
+อาทิตย-
+อาทิตย์
+อาทิตยมณฑล
+อาทิตยวาร
+อาทีนพ
+อาทีนว
+อาทึก
+อาเทศ
+อาธรรม
+อาธรรม์
+อาธรรมิก
+อาธรรมึก
+อาธาน
+อาธาร
+อาน
+อ่าน
+อานก
+อานน
+อานนท์
+อานม้า
+อ่านเล่น
+อานะ
+อานันท์
+อานันทนะ
+อานัม
+อานาปาน
+อานาปาน-
+อานาปานัสสติ
+อานำ
+อานิก
+อานิสงส์
+อานุภาพ
+อานุภาวะ
+อาบ
+อาบแดด
+อาบน้ำร้อนมาก่อน
+อาบเหงื่อต่างน้ำ
+อาบเอิบ
+อาบัติ
+อาบัน
+อาปณกะ
+อาปณะ
+อาปะ
+อาปาน-
+อาปานภูมิ
+อาปานศาลา
+อาปานะ
+อาโป
+อาโปกสิณ
+อาโปธาตุ
+อาพัด
+อาพัทธ์
+อาพันธ์
+อาพันธนะ
+อาพาธ
+อาพาธิก
+อาพาธึก
+อาพิล
+อาเพศ
+อาภรณ์
+อาภัพ
+อาภัสระ
+อาภา
+อาภากร
+อาภาส
+อาม
+อ่าม
+อามลก
+อามัย
+อามิษ
+อามิส
+อาย
+อ้าย
+อ้ายขิก
+อ้ายเข้
+อ้ายงั่ว
+อ้ายเจี๊ยว
+อ้ายชื่น
+อายต
+อายตนะ
+อายน
+อ้ายบ้า
+อ้ายเบี้ยว
+อ้ายป๊อก
+อายเหนียม
+อ้ายอ้าว
+อายัด
+อายัต
+อายัน
+อายาจนะ
+อายาน
+อายุ
+อายุกตกะ
+อายุกษัย
+อายุขัย
+อายุความ
+อายุตกะ
+อายุธ
+อายุร-
+อายุรแพทย์
+อายุรเวช
+อายุรเวท
+อายุรศาสตร์
+อายุวัฒนะ
+อายุษ
+อาร์กอน
+อารดี
+อาร์ต
+อารติ
+อารทรา
+อาร์ม
+อารมณ์
+อารมณ์ขัน
+อารย-
+อารยชน
+อารยชาติ
+อารยธรรม
+อารยประเทศ
+อารยะ
+อารยัน
+อาระ
+อารักขา
+อารักษ์
+อารัญ
+อารัญญิก
+อารัณย์
+อารัณยกะ
+อารัติ
+อารัมภ-
+อารัมภ์
+อารัมภกถา
+อารัมภบท
+อาราธน์
+อาราธนา
+อาราธนาธรรม
+อาราธนาพระปริตร
+อาราธนาศีล
+อาราม
+อารามิก
+อารี
+อารีอารอบ
+อารุม
+อาลปน์
+อาลปนะ
+อาละวาด
+อาลักษณ์
+อาลัย
+อาลัยอาวรณ์
+อาลัว
+อาลิ
+อาลี
+อาโลก
+อาโลก-
+อาโลกกสิณ
+อาโลกนะ
+อาว
+อ่าว
+อ้าว
+อาวรณ์
+อาวัชนาการ
+อาวัล
+อาวาส
+อาวาสิก
+อาวาห-
+อาวาหะ
+อาวิล
+อาวุต
+อาวุธ
+อาวุโส
+อาเวค
+อาเวศ
+อาศรม
+อาศรมบท
+อาศเลษา
+อาศัย
+อาศัยที่
+อาศัยลำแข้งตัวเอง
+อาศิร-
+อาศิรพจน์
+อาศิรพาท
+อาศิรพิษ
+อาศิรวจนะ
+อาศิรวาท
+อาศิรวิษ
+อาศีรพิษ
+อาศีรวิษ
+อาศุ
+อาเศียร-
+อาเศียรพจน์
+อาเศียรพาท
+อาเศียรวจนะ
+อาเศียรวาท
+อาษาฒ
+อาสน
+อาสน์
+อาสน์สงฆ์
+อาสนะ
+อาสัญ
+อาสัตย์
+อาสันนะ
+อาสา
+อาสาฬห-
+อาสาฬห์
+อาสาฬหบูชา
+อาสิญจ์
+อาสิน
+อาสูร
+อาแสะ
+อาหต
+อาหนี
+อาหนู
+อาหม
+อาหร
+อาหรัดกัดติกา
+อาหรับ
+อาหลักอาเหลื่อ
+อาหาร
+อาหารว่าง
+อาหุดี
+อาฬหก
+อาฬาริก
+อ่าองค์
+อำ
+อ่ำ
+อำแดง
+อำนด
+อำนนต์
+อำนรรฆ
+อำนวย
+อำนาจ
+อำนาจบาตรใหญ่
+อำนาถ
+อำนิฐ
+อำนิษฐ์
+อำปลัง
+อำพน
+อำพราง
+อำพะนำ
+อำพัน
+อำพันขี้ปลา
+อำพันทอง
+อำไพ
+อำเภอ
+อำเภอใจ
+อำมร
+อำมฤคโชค
+อำมฤต
+อำมหิต
+อำมาตย์
+อำยวน
+อำรุง
+อำลา
+อำอวม
+อ้ำอึ้ง
+อิก
+อิง
+อิงค์
+อิงอร
+อิงแอบ
+อิจฉา
+อิฉัน
+อิชยา
+อิฏฐ-
+อิฏฐารมณ์
+อิฐ-
+อิฐผล
+อิณ
+อิด
+อิดโรย
+อิดหนาระอาใจ
+อิดออด
+อิดๆ ออดๆ
+อิดเอื้อน
+อิดๆ เอื้อนๆ
+อิตถี
+อิตถีลิงค์
+อิตเทรียม
+อิตเทอร์เบียม
+อิทธิ
+อิทธิ-
+อิทธิปาฏิหาริย์
+อิทธิพล
+อิทธิฤทธิ์
+อิน
+อินซูลิน
+อินเดีย
+อินเดียนแดง
+อินเดียม
+อินท์
+อินทขีล
+อินทนิล
+อินทนิลน้ำ
+อินทผลัม
+อินทร-
+อินทร์
+อินทรธนู
+อินทรวงศ์
+อินทรวิเชียร
+อินทรศักดิ์
+อินทราณี
+อินทราภิเษก
+อินทรายุธ
+อินทรี
+อินทรีย-
+อินทรีย์
+อินทรียโคจร
+อินทรียญาณ
+อินทรียสังวร
+อินทีวร
+อินทุ
+อินธน์
+อินฟราเรด
+อินัง
+อินังขังขอบ
+อิ่ม
+อิ่มใจ
+อิ่มตัว
+อิ่มหนำ
+อิ่มหมีพีมัน
+อิ่มอกอิ่มใจ
+อิ่มเอิบ
+อิมัลชัน
+อิริเดียม
+อิริยา
+อิริยาบถ
+อิรุพเพท
+อิลู
+อิเล็กตรอน
+อิเล็กทรอนิกส์
+อิเล็กโทน
+อิศร
+อิศวร
+อิษฏ์
+อิษฏี
+อิส
+อิสตรี
+อิสร-
+อิสรภาพ
+อิสระ
+อิสริย-
+อิสริยยศ
+อิสริยะ
+อิสริยาภรณ์
+อิสลาม
+อิสสา
+อิสัตรี
+อิสิ
+อิสี
+อิหม่าม
+อิหลักอิเหลื่อ
+อี
+อี่
+อี้
+อี๊
+อี๋
+อีก
+อีก้อ
+อีก๋อย
+อีกา
+อีก๋า
+อีเก้ง
+อีเกร็ง
+อีเก้อีกัง
+อีแก
+อีแก่
+อีแก้
+อีโก้ง
+อีโก๊ะ
+อีคว่ำอีหงาย
+อีจู้
+อีฉัน
+อีฉุยอีแฉก
+อีชุก
+อี๊ด
+อีดำอีแดง
+อีตาล
+อีเต้อ
+อีโต้
+อีถ่าง
+อีทุก
+อีทุบ
+อีเทอร์
+อีนุงตุงนัง
+อีนูน
+อีโน
+อีโนงโตงเนง
+อีบึ้ง
+อีเป็ด
+อีเป้า
+อีแปะ
+อีโปง
+อีโปงครอบ
+อีเพา
+อีมู
+อีรม
+อีรุ้ง
+อีลอง
+อีล่อยป่อยแอ
+อีลุ้ม
+อีลุ่ยฉุยแฉก
+อีเลิ้ง
+อีแล่ง
+อีโลง
+อีศ
+อีศวร
+อีส
+อีสา
+อีสาน
+อีสุกอีใส
+อีหน็องอีแหน็ง
+อีหรอบ
+อีหรอบเดียวกัน
+อีหลักอีเหลื่อ
+อีหลัดถัดทา
+อีหลี
+อีหลุกขลุกขลัก
+อีหลุกขลุกขลุ่ย
+อีหลุยฉุยแฉก
+อีเห็น
+อีเหน็บ
+อีเหนียว
+อีเหละเขละขละ
+อีเหละเขะขะ
+อีโหน่อีเหน่
+อีโหลกโขลกเขลก
+อี๋อ๋อ
+อีแอ่น
+อึ
+อึก
+อึ๊ก
+อึกทึก
+อึกอัก
+อึง
+อึ่ง
+อึ้ง
+อึงคะนึง
+อึงมี่
+อึ่งยาง
+อึ่งใหญ่
+อึงอล
+อึ่งอ่าง
+อึด
+อึดใจ
+อึดตะปือ
+อึ้ดทึ่ด
+อึดอัด
+อึน
+อืด
+อืดอาด
+อื่น
+อื้น
+อือ
+อื้อ
+อื้อฉาว
+อื้ออึง
+อุ
+อุก
+อุกกา
+อุกกาบาต
+อุกฉกรรจ์
+อุกฤษฏ์
+อุกลา
+อุกลาบาต
+อุกอาจ
+อุค
+อุคร
+อุคห-
+อุคหนิมิต
+อุคหะ
+อุโฆษ
+อุ้ง
+อุจ
+อุจจาร-
+อุจจารมรรค
+อุจจาระ
+อุจฉุ
+อุจเฉท
+อุจเฉท-
+อุจเฉททิฐิ
+อุจาด
+อุชุ
+อุฏฐาการ
+อุณห-
+อุณหภูมิ
+อุณหะ
+อุณหาการ
+อุณหิส
+อุณา
+อุณานาภี
+อุณาโลม
+อุด
+อุดเตา
+อุดม
+อุดม-
+อุดมการณ์
+อุดมคติ
+อุดมศึกษา
+อุดร
+อุดหนุน
+อุดอู้
+อุดากัน
+อุตดม
+อุตดร
+อุตตมะ
+อุตตรผลคุนี
+อุตตรภัทรบท
+อุตตรอาษาฒ
+อุตตราสาฬหะ
+อุตตะภัททะ
+อุตบล
+อุตพิด
+อุตพิดผี
+อุตม-
+อุตมภาพ
+อุตมัตถ์
+อุตมางค์
+อุตร-
+อุตรกุรุ
+อุตรกุรู
+อุตรนิกาย
+อุตรผลคุนี
+อุตรภัทรบท
+อุตรา
+อุตราภิมุข
+อุตราวัฏ
+อุตราษาฒ
+อุตราสงค์
+อุตริ
+อุตริมนุสธรรม
+อุตลุด
+อุตสาห-
+อุตส่าห์
+อุตสาหกรรม
+อุตสาหกรรมศิลป์
+อุตสาหะ
+อุตุ
+อุตุนิยมวิทยา
+อุท-
+อุทก
+อุทก-
+อุทกธาร
+อุทกธารา
+อุทกภัย
+อุทกวิทยา
+อุทกศาสตร์
+อุททาม
+อุทธรณ์
+อุทธัจ
+อุทบาตร
+อุทบาน
+อุทพินทุ์
+อุทยาน
+อุทยานแห่งชาติ
+อุทร
+อุทริยะ
+อุทลุม
+อุทัช
+อุทัย
+อุทาน
+อุทาร
+อุทาหรณ์
+อุทิศ
+อุทุมพร
+อุเทศ
+อุธัจ
+อุ่น
+อุ่นเครื่อง
+อุ่นใจ
+อุ่นหนาฝาคั่ง
+อุนากัน
+อุบ
+อุบล
+อุบอิบ
+อุบะ
+อุบ๊ะ
+อุบัติ
+อุบัติ-
+อุบัติภัย
+อุบัติเหตุ
+อุบาท
+อุบาทว์
+อุบาย
+อุบาสก
+อุบาสิกา
+อุเบกขา
+อุโบสถ
+อุโบสถกรรม
+อุโบสถหัตถี
+อุป
+อุปกรณ์
+อุปกรม
+อุปการ-
+อุปการะ
+อุปการี
+อุปกิณณะ
+อุปกิเลส
+อุปจาร
+อุปถัมภ์
+อุปถัมภก
+อุปทม
+อุปทูต
+อุปเทศ
+อุปเท่ห์
+อุปธิ
+อุปนัย
+อุปนิกขิต
+อุปนิกษิต
+อุปนิษัท
+อุปนิสัย
+อุปบล
+อุปบัติ
+อุปบาท
+อุปปาติก-
+อุปพัทธ์
+อุปพันธ์
+อุปโภค
+อุปมา
+อุปมาน
+อุปมาโวหาร
+อุปมาอุปไมย
+อุปไมย
+อุปยุวราช
+อุปโยค
+อุปโยคบุรพบท
+อุปรากร
+อุปราคา
+อุปราช
+อุปริ
+อุปริจร
+อุปริพุทธิ
+อุปริภาค
+อุปริภาพ
+อุปริม-
+อุปริมปริยาย
+อุปริวัสน์
+อุปริสัจ
+อุปโลกน์
+อุปสมบท
+อุปสมบทกรรม
+อุปสมบัน
+อุปสรรค
+อุปสัมบัน
+อุปสัมปทา
+อุปสัมปทาเปกข์
+อุปสัมปทาเปกษ์
+อุปฮาด
+อุปัชฌาย-
+อุปัชฌาย์
+อุปัชฌายวัตร
+อุปัชฌายะ
+อุปัฏฐาก
+อุปัฏฐานะ
+อุปัทรพ
+อุปัทว-
+อุปัทวะ
+อุปัทวันตราย
+อุปาณ-
+อุปาทาน
+อุปาธยาย
+อุปาหนา
+อุภัย
+อุ้ม
+อุมงค์
+อุ้มชู
+อุ้มท้อง
+อุ้มน้ำ
+อุ้มสม
+อุโมงค์
+อุย
+อุ่ย
+อุ้ย
+อุ๊ย
+อุยยาน
+อุยยาม
+อุ้ยยุ้ย
+อุยโยค
+อุยหน่า
+อุ่ยหน่า
+อุ้ยอ้าย
+อุร-
+อุรค
+อุรเคนทร์
+อุรณ
+อุรพี
+อุรส
+อุระ
+อุรังอุตัง
+อุรัจฉทะ
+อุรัจฉัท
+อุรา
+อุรุ
+อุไร
+อุลปนะ
+อุลโลจ
+อุลโลละ
+อุลามก
+อุลิด
+อุลูก
+อุโลก
+อุแว้
+อุษณ-
+อุษณกร
+อุษณกาล
+อุษณรัศมี
+อุษณรูจี
+อุษณาการ
+อุษณีษ์
+อุษม
+อุษมัน
+อุษา
+อุษาโยค
+อุสภ
+อุสวะ
+อุสส่าห์
+อุสสาหะ
+อุสา
+อุสุ
+อุสุการ
+อุสุภ
+อุสุม
+อุหรับ
+อุหลบ
+อุเหม่
+อุฬาร
+อู
+อู่
+อู้
+อูฐ
+อูด
+อู่น้ำ
+อูม
+อูย
+อูรุ
+อู่ลอย
+อู่แห้ง
+อู้อี้
+อู๋อี๋
+เอ
+เอ้
+เอก
+เอก-
+เอ๊ก
+เอกเขนก
+เอกจิต
+เอกฉันท์
+เอกชน
+เอกซเรย์
+เอกเทศ
+เอกโทษ
+เอกนัย
+เอกบุคคล
+เอกบุรุษ
+เอกพจน์
+เอกภพ
+เอกภริยา
+เอกภักดิ์
+เอกภาคี
+เอกภาพ
+เอกม
+เอกมัย
+เอกรรถประโยค
+เอกรส
+เอกระ
+เอกราช
+เอกรูป
+เอกลักษณ์
+เอกศก
+เอกส
+เอกสาร
+เอกสารราชการ
+เอกสารสิทธิ
+เอกสิทธิ์
+เอกอัครราชทูต
+เอกอัครสมณทูต
+เอกอุ
+เอกัคตา
+เอกังสพยากรณ์
+เอกังสวาที
+เอกา
+เอ้กา
+เอกาธิปไตย
+เอเคอร์
+เอง
+เอ็ง
+เอ๋ง
+เอ็ด
+เอ็ดตะโร
+เอ็ดอึง
+เอตทัคคะ
+เอ้เต
+เอทิลแอลกอฮอล์
+เอน
+เอ็น
+เอนกาย
+เอนไซม์
+เอ็นดู
+เอนตัว
+เอนหลัง
+เอ็นอ่อน
+เอนเอียง
+เอม
+เอ็มบริโอ
+เอมอร
+เอมโอช
+เอย
+เอ่ย
+เอ๊ย
+เอ๋ย
+เอร็ดอร่อย
+เอราวัณ
+เอลา
+เอลาฬุก
+เอว
+เอ๊ว
+เอวัง
+เอฬก
+เอฬา
+เออ
+เอ่อ
+เออๆ คะๆ
+เออน่ะ
+เออแน่ะ
+เออร์เบียม
+เอ้อระเหย
+เอ้อเร้อ
+เอ้อเร้อเอ้อเต่อ
+เอออวย
+เออออ
+เออออห่อหมก
+เอ้อเฮอ
+เอ้แอ่น
+เอ้ๆ แอ่นๆ
+เอ๊ะ
+เอะใจ
+เอะอะ
+เอะอะมะเทิ่ง
+เอา
+เอาการ
+เอาการเอางาน
+เอากุ้งฝอยไปตกปลากะพง
+เอาข้างเข้าถู
+เอางาน
+เอาจมูกผู้อื่นมาหายใจ
+เอาจริง
+เอาจริงเอาจัง
+เอาใจ
+เอาใจช่วย
+เอาใจใส่
+เอาชนะ
+เอาชั้นเอาเชิง
+เอาชัย
+เอาชีวิต
+เอาชื่อ
+เอาเชิง
+เอาใช้
+เอาดีเอาเด่น
+เอาตาย
+เอาแต่
+เอาแต่ใจ
+เอาถ่าน
+เอาเถิด
+เอาเถิดเจ้าล่อ
+เอาทองไปรู่กระเบื้อง
+เอาทาร
+เอาทารย์
+เอาน้ำเย็นเข้าลูบ
+เอาน้ำลูบท้อง
+เอาเนื้อหนูไปปะเนื้อช้าง
+เอาบุญเอาคุณ
+เอาปูนหมายหัว
+เอาเป็นธุระ
+เอาเป็นว่า
+เอาเป็นเอาตาย
+เอาเปรียบ
+เอาผิด
+เอาพิมเสนไปแลกเกลือ
+เอามะพร้าวห้าวไปขายสวน
+เอามือซุกหีบ
+เอาไม้ซีกไปงัดไม้ซุง
+เอาไม้สั้นไปรันขี้
+เอารส
+เอารัดเอาเปรียบ
+เอาเรื่อง
+เอาฤกษ์
+เอาละ
+เอาเลย
+เอาเลือดกับปู
+เอาหน้า
+เอาหูไปนา เอาตาไปไร่
+เอาใหญ่
+เอาฬาร
+เอาฬาริก
+เอาฬารึก
+เอาอกเอาใจ
+เอาอย่าง
+เอาอยู่
+เอาะลาย
+เอิก
+เอิกเกริก
+เอิ้น
+เอิบ
+เอิบอาบ
+เอียง
+เอี้ยง
+เอี้ยงคำ
+เอียงอาย
+เอียงเอน
+เอียด
+เอี๊ยด
+เอียน
+เอี่ยน
+เอี่ยม
+เอี๊ยม
+เอี้ยมจุ๊น
+เอี้ยมเฟี้ยม
+เอี่ยมอ่อง
+เอี่ยว
+เอี้ยว
+เอี่ยวลม
+เอื้อ
+เอื้อง
+เอื้องครั่ง
+เอื้องน้ำครั่ง
+เอื้องศรีเที่ยง
+เอื้องหนวดพราหมณ์
+เอือด
+เอือน
+เอื้อน
+เอือนกิน
+เอื้อเฟื้อ
+เอือม
+เอื้อม
+เอื้อมอาจ
+เอื่อย
+เอื่อยๆ
+เอื้อย
+เอื้ออำนวย
+แอ
+แอ้
+แอ๋
+แอก
+แอกทิเนียม
+แอกน้อย
+แอ่ง
+แอ้งแม้ง
+แอด
+แอดๆ
+แอ้ด
+แอ้ดๆ
+แอ๊ด
+แอ๊ดๆ
+แอ่น
+แอนติเจน
+แอนติบอดี
+แอนติอิเล็กตรอน
+แอ่นลม
+แอโนด
+แอบ
+แอบแฝง
+แอบอ้าง
+แอบอิง
+แอ้ม
+แอมแปร์
+แอมมิเตอร์
+แอมโมเนีย
+แอร่ม
+แอลกอฮอล์
+แอลฟา
+แอว
+แอ่ว
+แอ้วแซ่ว
+แอสทาทีน
+แอสไพริน
+แอสฟัลต์
+แอหนัง
+แออวย
+แออัด
+โอ
+โอ่
+โอ้
+โอ๋
+โอก
+โอ้ก
+โอ๊ก
+โอกาส
+โอฆ-
+โอฆชล
+โอฆสงสาร
+โอฆะ
+โอ่ง
+โองการ
+โองโขดง
+โอ่งมังกร
+โอชะ
+โอชา
+โอโซน
+โอฐ
+โอด
+โอดกาเหว่า
+โอดครวญ
+โอดโอย
+โอ๊ต
+โอตตัปปะ
+โอ่โถง
+โอ้โถง
+โอทน-
+โอทนะ
+โอน
+โอนกรรมสิทธิ์
+โอนชาติ
+โอนอ่อน
+โอนเอน
+โอบ
+โอบอ้อมอารี
+โอบอุ้ม
+โอบเอื้อ
+โอปปาติกะ
+โอภา
+โอภาปราศรัย
+โอภาส
+โอม
+โอย
+โอ๊ย
+โอร-
+โอรส
+โอละพ่อ
+โอลิมปิก
+โอ้โลม
+โอ้โลมปฏิโลม
+โอ้ว่า
+โอวาท
+โอษฐ-
+โอษฐ์
+โอษฐชะ
+โอษฐภัย
+โอสถ
+โอสถ-
+โอสถกรรม
+โอสาน
+โอหนอ
+โอห์ม
+โอห์มมิเตอร์
+โอหัง
+โอฬาร
+โอฬาริก
+โอฬารึก
+โอ่อวด
+โอ้อวด
+โอ่อ่า
+โอ้เอ้
+โอเอซิส
+โอ้โฮ
+ไอ
+ไอ้
+ไอกรน
+ไอโซโทป
+ไอแดด
+ไอตัว
+ไอน์สไตเนียม
+ไอพ่น
+ไอพิษ
+ไอยรา
+ไอยเรศ
+ไอราพต
+ไอราวัณ
+ไอศกรีม
+ไอศวรรย์
+ไอศุริย-
+ไอศุริยสมบัติ
+ไอศูรย์
+ไอเสีย
+ไอออน
+ไอโอดีน
+ฮ
+ฮกเกี้ยน
+ฮด
+ฮวงซุ้ย
+ฮวน
+ฮ้วนหมู
+ฮวบ
+ฮวบฮาบ
+ฮ่อ
+ฮ้อ
+ฮอกกี้
+ฮอด
+ฮ่อม
+ฮ่อมดง
+ฮ่อมเมือง
+ฮอร์โมน
+ฮอลแลนด์
+ฮอลันดา
+ฮะ
+ฮะฮ้าย
+ฮะไฮ้
+ฮัก
+ฮักๆ
+ฮังเล
+ฮัจญ์
+ฮัจญะฮ์
+ฮัจญี
+ฮั่น
+ฮา
+ฮ้า
+ฮ่างหลวง
+ฮาป่า
+ฮาม
+ฮาเร็ม
+ฮาห์เนียม
+ฮ้าไฮ้
+ฮิจเราะห์
+ฮินดู
+ฮิปโปโปเตมัส
+ฮิสทีเรีย
+ฮีเลียม
+ฮึ
+ฮึก
+ฮึกหาญ
+ฮึกห้าว
+ฮึกเหิม
+ฮึกโหม
+ฮึกฮัก
+ฮึด
+ฮึดฮัด
+ฮึ่ม
+ฮึย
+ฮึยๆ
+ฮึ่ย
+ฮืดฮาด
+ฮือ
+ฮือๆ
+ฮื่อ
+ฮื้อ
+ฮุด
+ฮุบ
+ฮุยเลฮุย
+ฮู้
+ฮูก
+ฮูม
+เฮ
+เฮกตาร์
+เฮกโตกรัม
+เฮกโตเมตร
+เฮกโตลิตร
+เฮง
+เฮงซวย
+เฮ็ด
+เฮโมโกลบิน
+เฮย
+เฮ้ย
+เฮโรอีน
+เฮลิคอปเตอร์
+เฮโลสาระพา
+เฮ้ว
+เฮอ
+เฮ้อ
+เฮฮา
+เฮิรตซ์
+เฮี้ยน
+เฮี้ยบ
+เฮี้ยว
+เฮือก
+เฮือกๆ
+เฮือกสุดท้าย
+เฮือน
+แฮ
+แฮ่
+แฮก
+แฮกๆ
+แฮ่กึ๊น
+แฮนด์บอล
+แฮฟเนียม
+แฮม
+แฮะ
+โฮ
+โฮก
+โฮกอือ
+โฮกฮาก
+โฮเต็ล
+โฮลเมียม
+โฮะ
+ไฮ้
+ไฮโกรมิเตอร์
+ไฮดรา
+ไฮโดรคาร์บอน
+ไฮโดรเจน
+ไฮโดรเจนซัลไฟด์
+ไฮโดรเจนเพอร์ออกไซด์
+ไฮโดรมิเตอร์
+ไฮไฟ
+ไฮโล
+ไฮฮี
diff --git a/src/com/ibm/icu/dev/data/testdata.jar b/src/com/ibm/icu/dev/data/testdata.jar
new file mode 100755
index 0000000..a8cfa30
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/testdata.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3135c96414a2665a915005f251b8016c2869b96d7571d60f6c2b314e00812acf
+size 766659
diff --git a/src/com/ibm/icu/dev/data/thai6.ucs b/src/com/ibm/icu/dev/data/thai6.ucs
new file mode 100644
index 0000000..a3d0282
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/thai6.ucs
Binary files differ
diff --git a/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt
new file mode 100644
index 0000000..f20528b
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt
@@ -0,0 +1,179 @@
+# CompositionExclusions-4.1.0.txt
+# Date: 2005-03-17, 15:21:00 PST [KW]
+#
+# This file lists the characters from the UAX #15 Composition Exclusion Table.
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2005 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+# ================================================
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData file.
+# ================================================
+
+0958    #  DEVANAGARI LETTER QA
+0959    #  DEVANAGARI LETTER KHHA
+095A    #  DEVANAGARI LETTER GHHA
+095B    #  DEVANAGARI LETTER ZA
+095C    #  DEVANAGARI LETTER DDDHA
+095D    #  DEVANAGARI LETTER RHA
+095E    #  DEVANAGARI LETTER FA
+095F    #  DEVANAGARI LETTER YYA
+09DC    #  BENGALI LETTER RRA
+09DD    #  BENGALI LETTER RHA
+09DF    #  BENGALI LETTER YYA
+0A33    #  GURMUKHI LETTER LLA
+0A36    #  GURMUKHI LETTER SHA
+0A59    #  GURMUKHI LETTER KHHA
+0A5A    #  GURMUKHI LETTER GHHA
+0A5B    #  GURMUKHI LETTER ZA
+0A5E    #  GURMUKHI LETTER FA
+0B5C    #  ORIYA LETTER RRA
+0B5D    #  ORIYA LETTER RHA
+0F43    #  TIBETAN LETTER GHA
+0F4D    #  TIBETAN LETTER DDHA
+0F52    #  TIBETAN LETTER DHA
+0F57    #  TIBETAN LETTER BHA
+0F5C    #  TIBETAN LETTER DZHA
+0F69    #  TIBETAN LETTER KSSA
+0F76    #  TIBETAN VOWEL SIGN VOCALIC R
+0F78    #  TIBETAN VOWEL SIGN VOCALIC L
+0F93    #  TIBETAN SUBJOINED LETTER GHA
+0F9D    #  TIBETAN SUBJOINED LETTER DDHA
+0FA2    #  TIBETAN SUBJOINED LETTER DHA
+0FA7    #  TIBETAN SUBJOINED LETTER BHA
+0FAC    #  TIBETAN SUBJOINED LETTER DZHA
+0FB9    #  TIBETAN SUBJOINED LETTER KSSA
+FB1D    #  HEBREW LETTER YOD WITH HIRIQ
+FB1F    #  HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A    #  HEBREW LETTER SHIN WITH SHIN DOT
+FB2B    #  HEBREW LETTER SHIN WITH SIN DOT
+FB2C    #  HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D    #  HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E    #  HEBREW LETTER ALEF WITH PATAH
+FB2F    #  HEBREW LETTER ALEF WITH QAMATS
+FB30    #  HEBREW LETTER ALEF WITH MAPIQ
+FB31    #  HEBREW LETTER BET WITH DAGESH
+FB32    #  HEBREW LETTER GIMEL WITH DAGESH
+FB33    #  HEBREW LETTER DALET WITH DAGESH
+FB34    #  HEBREW LETTER HE WITH MAPIQ
+FB35    #  HEBREW LETTER VAV WITH DAGESH
+FB36    #  HEBREW LETTER ZAYIN WITH DAGESH
+FB38    #  HEBREW LETTER TET WITH DAGESH
+FB39    #  HEBREW LETTER YOD WITH DAGESH
+FB3A    #  HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B    #  HEBREW LETTER KAF WITH DAGESH
+FB3C    #  HEBREW LETTER LAMED WITH DAGESH
+FB3E    #  HEBREW LETTER MEM WITH DAGESH
+FB40    #  HEBREW LETTER NUN WITH DAGESH
+FB41    #  HEBREW LETTER SAMEKH WITH DAGESH
+FB43    #  HEBREW LETTER FINAL PE WITH DAGESH
+FB44    #  HEBREW LETTER PE WITH DAGESH
+FB46    #  HEBREW LETTER TSADI WITH DAGESH
+FB47    #  HEBREW LETTER QOF WITH DAGESH
+FB48    #  HEBREW LETTER RESH WITH DAGESH
+FB49    #  HEBREW LETTER SHIN WITH DAGESH
+FB4A    #  HEBREW LETTER TAV WITH DAGESH
+FB4B    #  HEBREW LETTER VAV WITH HOLAM
+FB4C    #  HEBREW LETTER BET WITH RAFE
+FB4D    #  HEBREW LETTER KAF WITH RAFE
+FB4E    #  HEBREW LETTER PE WITH RAFE
+
+# Total code points: 67
+
+# ================================================
+# (2) Post Composition Version precomposed characters
+# These characters cannot be derived solely from the UnicodeData.txt file
+# in this version of Unicode.
+# ================================================
+
+2ADC    #  FORKING
+1D15E   #  MUSICAL SYMBOL HALF NOTE
+1D15F   #  MUSICAL SYMBOL QUARTER NOTE
+1D160   #  MUSICAL SYMBOL EIGHTH NOTE
+1D161   #  MUSICAL SYMBOL SIXTEENTH NOTE
+1D162   #  MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163   #  MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164   #  MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB   #  MUSICAL SYMBOL MINIMA
+1D1BC   #  MUSICAL SYMBOL MINIMA BLACK
+1D1BD   #  MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE   #  MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF   #  MUSICAL SYMBOL FUSA WHITE
+1D1C0   #  MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 14
+
+# ================================================
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+# ================================================
+
+# 0340..0341       [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+# 0343                 COMBINING GREEK KORONIS
+# 0374                 GREEK NUMERAL SIGN
+# 037E                 GREEK QUESTION MARK
+# 0387                 GREEK ANO TELEIA
+# 1F71                 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73                 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75                 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77                 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79                 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B                 GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D                 GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB                 GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE                 GREEK PROSGEGRAMMENI
+# 1FC9                 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB                 GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3                 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB                 GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3                 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB                 GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE..1FEF       [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+# 1FF9                 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB                 GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD                 GREEK OXIA
+# 2000..2001       [2] EN QUAD..EM QUAD
+# 2126                 OHM SIGN
+# 212A..212B       [2] KELVIN SIGN..ANGSTROM SIGN
+# 2329                 LEFT-POINTING ANGLE BRACKET
+# 232A                 RIGHT-POINTING ANGLE BRACKET
+# F900..FA0D     [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10                 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12                 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15..FA1E      [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20                 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22                 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25..FA26       [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A..FA2D       [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+# FA30..FA6A      [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+# FA70..FAD9     [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+# 2F800..2FA1D   [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 924
+
+# ================================================
+# (4) Non-Starter Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition consists
+# of a sequence of characters, the first of which has a non-zero
+# combining class.
+# These characters are simply quoted here for reference.
+# ================================================
+
+# 0344                 COMBINING GREEK DIALYTIKA TONOS
+# 0F73                 TIBETAN VOWEL SIGN II
+# 0F75                 TIBETAN VOWEL SIGN UU
+# 0F81                 TIBETAN VOWEL SIGN REVERSED II
+
+# Total code points: 4
+
diff --git a/src/com/ibm/icu/dev/data/unicode/NormalizationCorrections.txt b/src/com/ibm/icu/dev/data/unicode/NormalizationCorrections.txt
new file mode 100644
index 0000000..9391ace
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/NormalizationCorrections.txt
@@ -0,0 +1,48 @@
+# NormalizationCorrections-4.1.0.txt
+# Date: 2005-03-17, 15:21:00 PST [KW]
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2005 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# The normalization stabilization policy of the Unicode
+# Consortium ordinarily precludes any change to the decomposition
+# for any character, once established in a relevant version
+# of the UnicodeData.txt data file. However, under certain
+# exceptional (and rare) conditions, an error in a decomposition
+# mapping may be discovered that is truly just an unintended
+# typo in the data, and not a matter of dubious interpretation.
+#
+# Whenever such an error may be found, and if it meets the
+# requirements for possible exceptions to normalization
+# stability, the correction is entered in this data file,
+# so that any implementation depending on absolute stability
+# of normalization, *including* any errors in the data, can
+# safely reconstruct the exact state of the data tables at
+# any given version of Unicode.
+#
+# Currently this list has exactly six entries in it, one for the
+# typo found and corrected in Corrigendum #3, and five for
+# the typos and misidentifications found and corrected in 
+# Corrigendum #4. All efforts
+# will be made to keep the entries limited to just those fixes.
+#
+# Interpretation of the fields:
+#   Field 1: Unicode code point
+#   Field 2: Original (erroneous) decomposition
+#   Field 3: Corrected decomposition
+#   Field 4: Version of Unicode for which the correction was
+#            entered into UnicodeData.txt, in n.n.n format.
+#   Comment: Indicates the Unicode Corrigendum which documents 
+#            the correction
+#
+# For more information, see UAX #15, Unicode Normalization Forms.
+#
+F951;96FB;964B;3.2.0 # Corrigendum 3
+2F868;2136A;36FC;4.0.0 # Corrigendum 4
+2F874;5F33;5F53;4.0.0 # Corrigendum 4
+2F91F;43AB;243AB;4.0.0 # Corrigendum 4
+2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4
+2F9BF;4D57;45D7;4.0.0 # Corrigendum 4
diff --git a/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt b/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
new file mode 100644
index 0000000..43850f6
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
@@ -0,0 +1,17042 @@
+# NormalizationTest-3.2.0.txt
+# Date: 2002-03-19,23:31:18 GMT [MD]
+#
+# Note: Code points whose decomposition changed since the Unicode version
+# for this NormalizationTest.txt are commented out and are only tested with
+# the current NormalizationTest.txt in icu/source/data/unidata/.
+# See NormalizationCorrections.txt
+# and search for "NormalizationCorrections" in this file.
+# markus 2003mar05
+#
+# Normalization Test Suite
+# Format:
+#
+#   Columns (c1, c2,...) are separated by semicolons
+#   Comments are indicated with hash marks
+#
+# CONFORMANCE:
+# 1. The following invariants must be true for all conformant implementations
+#
+#    NFC
+#      c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3)
+#      c4 ==  NFC(c4) ==  NFC(c5)
+#
+#    NFD
+#      c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3)
+#      c5 ==  NFD(c4) ==  NFD(c5)
+#
+#    NFKC
+#      c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+#
+#    NFKD
+#      c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+#
+# 2. For every assigned Unicode 3.1.0 code point X that is not specifically
+#    listed in Part 1, the following invariants must be true for all conformant
+#    implementations:
+#
+#      X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+#
+@Part0 # Specific cases
+#
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0A 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0C 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0307 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0323 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0A 031B;1E0A 031B;0044 031B 0307;1E0A 031B;0044 031B 0307;
+1E0C 031B;1E0C 031B;0044 031B 0323;1E0C 031B;0044 031B 0323;
+1E0A 031B 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+1E0C 031B 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0307 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+00C8;00C8;0045 0300;00C8;0045 0300;
+0112;0112;0045 0304;0112;0045 0304;
+0045 0300;00C8;0045 0300;00C8;0045 0300;
+0045 0304;0112;0045 0304;0112;0045 0304;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0112 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E14 0304;1E14 0304;0045 0304 0300 0304;1E14 0304;0045 0304 0300 0304;
+0045 0304 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0045 0300 0304;00C8 0304;0045 0300 0304;00C8 0304;0045 0300 0304;
+05B8 05B9 05B1 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;
+0592 05B7 05BC 05A5 05B0 05C0 05C4 05AD;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;
+#
+@Part1 # Character by character test
+# All characters not explicitly occurring in c1 of Part 1 have identical NFC, D, KC, KD forms.
+#
+00A0;00A0;00A0;0020;0020;
+00A8;00A8;00A8;0020 0308;0020 0308;
+00AA;00AA;00AA;0061;0061;
+00AF;00AF;00AF;0020 0304;0020 0304;
+00B2;00B2;00B2;0032;0032;
+00B3;00B3;00B3;0033;0033;
+00B4;00B4;00B4;0020 0301;0020 0301;
+00B5;00B5;00B5;03BC;03BC;
+00B8;00B8;00B8;0020 0327;0020 0327;
+00B9;00B9;00B9;0031;0031;
+00BA;00BA;00BA;006F;006F;
+00BC;00BC;00BC;0031 2044 0034;0031 2044 0034;
+00BD;00BD;00BD;0031 2044 0032;0031 2044 0032;
+00BE;00BE;00BE;0033 2044 0034;0033 2044 0034;
+00C0;00C0;0041 0300;00C0;0041 0300;
+00C1;00C1;0041 0301;00C1;0041 0301;
+00C2;00C2;0041 0302;00C2;0041 0302;
+00C3;00C3;0041 0303;00C3;0041 0303;
+00C4;00C4;0041 0308;00C4;0041 0308;
+00C5;00C5;0041 030A;00C5;0041 030A;
+00C7;00C7;0043 0327;00C7;0043 0327;
+00C8;00C8;0045 0300;00C8;0045 0300;
+00C9;00C9;0045 0301;00C9;0045 0301;
+00CA;00CA;0045 0302;00CA;0045 0302;
+00CB;00CB;0045 0308;00CB;0045 0308;
+00CC;00CC;0049 0300;00CC;0049 0300;
+00CD;00CD;0049 0301;00CD;0049 0301;
+00CE;00CE;0049 0302;00CE;0049 0302;
+00CF;00CF;0049 0308;00CF;0049 0308;
+00D1;00D1;004E 0303;00D1;004E 0303;
+00D2;00D2;004F 0300;00D2;004F 0300;
+00D3;00D3;004F 0301;00D3;004F 0301;
+00D4;00D4;004F 0302;00D4;004F 0302;
+00D5;00D5;004F 0303;00D5;004F 0303;
+00D6;00D6;004F 0308;00D6;004F 0308;
+00D9;00D9;0055 0300;00D9;0055 0300;
+00DA;00DA;0055 0301;00DA;0055 0301;
+00DB;00DB;0055 0302;00DB;0055 0302;
+00DC;00DC;0055 0308;00DC;0055 0308;
+00DD;00DD;0059 0301;00DD;0059 0301;
+00E0;00E0;0061 0300;00E0;0061 0300;
+00E1;00E1;0061 0301;00E1;0061 0301;
+00E2;00E2;0061 0302;00E2;0061 0302;
+00E3;00E3;0061 0303;00E3;0061 0303;
+00E4;00E4;0061 0308;00E4;0061 0308;
+00E5;00E5;0061 030A;00E5;0061 030A;
+00E7;00E7;0063 0327;00E7;0063 0327;
+00E8;00E8;0065 0300;00E8;0065 0300;
+00E9;00E9;0065 0301;00E9;0065 0301;
+00EA;00EA;0065 0302;00EA;0065 0302;
+00EB;00EB;0065 0308;00EB;0065 0308;
+00EC;00EC;0069 0300;00EC;0069 0300;
+00ED;00ED;0069 0301;00ED;0069 0301;
+00EE;00EE;0069 0302;00EE;0069 0302;
+00EF;00EF;0069 0308;00EF;0069 0308;
+00F1;00F1;006E 0303;00F1;006E 0303;
+00F2;00F2;006F 0300;00F2;006F 0300;
+00F3;00F3;006F 0301;00F3;006F 0301;
+00F4;00F4;006F 0302;00F4;006F 0302;
+00F5;00F5;006F 0303;00F5;006F 0303;
+00F6;00F6;006F 0308;00F6;006F 0308;
+00F9;00F9;0075 0300;00F9;0075 0300;
+00FA;00FA;0075 0301;00FA;0075 0301;
+00FB;00FB;0075 0302;00FB;0075 0302;
+00FC;00FC;0075 0308;00FC;0075 0308;
+00FD;00FD;0079 0301;00FD;0079 0301;
+00FF;00FF;0079 0308;00FF;0079 0308;
+0100;0100;0041 0304;0100;0041 0304;
+0101;0101;0061 0304;0101;0061 0304;
+0102;0102;0041 0306;0102;0041 0306;
+0103;0103;0061 0306;0103;0061 0306;
+0104;0104;0041 0328;0104;0041 0328;
+0105;0105;0061 0328;0105;0061 0328;
+0106;0106;0043 0301;0106;0043 0301;
+0107;0107;0063 0301;0107;0063 0301;
+0108;0108;0043 0302;0108;0043 0302;
+0109;0109;0063 0302;0109;0063 0302;
+010A;010A;0043 0307;010A;0043 0307;
+010B;010B;0063 0307;010B;0063 0307;
+010C;010C;0043 030C;010C;0043 030C;
+010D;010D;0063 030C;010D;0063 030C;
+010E;010E;0044 030C;010E;0044 030C;
+010F;010F;0064 030C;010F;0064 030C;
+0112;0112;0045 0304;0112;0045 0304;
+0113;0113;0065 0304;0113;0065 0304;
+0114;0114;0045 0306;0114;0045 0306;
+0115;0115;0065 0306;0115;0065 0306;
+0116;0116;0045 0307;0116;0045 0307;
+0117;0117;0065 0307;0117;0065 0307;
+0118;0118;0045 0328;0118;0045 0328;
+0119;0119;0065 0328;0119;0065 0328;
+011A;011A;0045 030C;011A;0045 030C;
+011B;011B;0065 030C;011B;0065 030C;
+011C;011C;0047 0302;011C;0047 0302;
+011D;011D;0067 0302;011D;0067 0302;
+011E;011E;0047 0306;011E;0047 0306;
+011F;011F;0067 0306;011F;0067 0306;
+0120;0120;0047 0307;0120;0047 0307;
+0121;0121;0067 0307;0121;0067 0307;
+0122;0122;0047 0327;0122;0047 0327;
+0123;0123;0067 0327;0123;0067 0327;
+0124;0124;0048 0302;0124;0048 0302;
+0125;0125;0068 0302;0125;0068 0302;
+0128;0128;0049 0303;0128;0049 0303;
+0129;0129;0069 0303;0129;0069 0303;
+012A;012A;0049 0304;012A;0049 0304;
+012B;012B;0069 0304;012B;0069 0304;
+012C;012C;0049 0306;012C;0049 0306;
+012D;012D;0069 0306;012D;0069 0306;
+012E;012E;0049 0328;012E;0049 0328;
+012F;012F;0069 0328;012F;0069 0328;
+0130;0130;0049 0307;0130;0049 0307;
+0132;0132;0132;0049 004A;0049 004A;
+0133;0133;0133;0069 006A;0069 006A;
+0134;0134;004A 0302;0134;004A 0302;
+0135;0135;006A 0302;0135;006A 0302;
+0136;0136;004B 0327;0136;004B 0327;
+0137;0137;006B 0327;0137;006B 0327;
+0139;0139;004C 0301;0139;004C 0301;
+013A;013A;006C 0301;013A;006C 0301;
+013B;013B;004C 0327;013B;004C 0327;
+013C;013C;006C 0327;013C;006C 0327;
+013D;013D;004C 030C;013D;004C 030C;
+013E;013E;006C 030C;013E;006C 030C;
+013F;013F;013F;004C 00B7;004C 00B7;
+0140;0140;0140;006C 00B7;006C 00B7;
+0143;0143;004E 0301;0143;004E 0301;
+0144;0144;006E 0301;0144;006E 0301;
+0145;0145;004E 0327;0145;004E 0327;
+0146;0146;006E 0327;0146;006E 0327;
+0147;0147;004E 030C;0147;004E 030C;
+0148;0148;006E 030C;0148;006E 030C;
+0149;0149;0149;02BC 006E;02BC 006E;
+014C;014C;004F 0304;014C;004F 0304;
+014D;014D;006F 0304;014D;006F 0304;
+014E;014E;004F 0306;014E;004F 0306;
+014F;014F;006F 0306;014F;006F 0306;
+0150;0150;004F 030B;0150;004F 030B;
+0151;0151;006F 030B;0151;006F 030B;
+0154;0154;0052 0301;0154;0052 0301;
+0155;0155;0072 0301;0155;0072 0301;
+0156;0156;0052 0327;0156;0052 0327;
+0157;0157;0072 0327;0157;0072 0327;
+0158;0158;0052 030C;0158;0052 030C;
+0159;0159;0072 030C;0159;0072 030C;
+015A;015A;0053 0301;015A;0053 0301;
+015B;015B;0073 0301;015B;0073 0301;
+015C;015C;0053 0302;015C;0053 0302;
+015D;015D;0073 0302;015D;0073 0302;
+015E;015E;0053 0327;015E;0053 0327;
+015F;015F;0073 0327;015F;0073 0327;
+0160;0160;0053 030C;0160;0053 030C;
+0161;0161;0073 030C;0161;0073 030C;
+0162;0162;0054 0327;0162;0054 0327;
+0163;0163;0074 0327;0163;0074 0327;
+0164;0164;0054 030C;0164;0054 030C;
+0165;0165;0074 030C;0165;0074 030C;
+0168;0168;0055 0303;0168;0055 0303;
+0169;0169;0075 0303;0169;0075 0303;
+016A;016A;0055 0304;016A;0055 0304;
+016B;016B;0075 0304;016B;0075 0304;
+016C;016C;0055 0306;016C;0055 0306;
+016D;016D;0075 0306;016D;0075 0306;
+016E;016E;0055 030A;016E;0055 030A;
+016F;016F;0075 030A;016F;0075 030A;
+0170;0170;0055 030B;0170;0055 030B;
+0171;0171;0075 030B;0171;0075 030B;
+0172;0172;0055 0328;0172;0055 0328;
+0173;0173;0075 0328;0173;0075 0328;
+0174;0174;0057 0302;0174;0057 0302;
+0175;0175;0077 0302;0175;0077 0302;
+0176;0176;0059 0302;0176;0059 0302;
+0177;0177;0079 0302;0177;0079 0302;
+0178;0178;0059 0308;0178;0059 0308;
+0179;0179;005A 0301;0179;005A 0301;
+017A;017A;007A 0301;017A;007A 0301;
+017B;017B;005A 0307;017B;005A 0307;
+017C;017C;007A 0307;017C;007A 0307;
+017D;017D;005A 030C;017D;005A 030C;
+017E;017E;007A 030C;017E;007A 030C;
+017F;017F;017F;0073;0073;
+01A0;01A0;004F 031B;01A0;004F 031B;
+01A1;01A1;006F 031B;01A1;006F 031B;
+01AF;01AF;0055 031B;01AF;0055 031B;
+01B0;01B0;0075 031B;01B0;0075 031B;
+01C4;01C4;01C4;0044 017D;0044 005A 030C;
+01C5;01C5;01C5;0044 017E;0044 007A 030C;
+01C6;01C6;01C6;0064 017E;0064 007A 030C;
+01C7;01C7;01C7;004C 004A;004C 004A;
+01C8;01C8;01C8;004C 006A;004C 006A;
+01C9;01C9;01C9;006C 006A;006C 006A;
+01CA;01CA;01CA;004E 004A;004E 004A;
+01CB;01CB;01CB;004E 006A;004E 006A;
+01CC;01CC;01CC;006E 006A;006E 006A;
+01CD;01CD;0041 030C;01CD;0041 030C;
+01CE;01CE;0061 030C;01CE;0061 030C;
+01CF;01CF;0049 030C;01CF;0049 030C;
+01D0;01D0;0069 030C;01D0;0069 030C;
+01D1;01D1;004F 030C;01D1;004F 030C;
+01D2;01D2;006F 030C;01D2;006F 030C;
+01D3;01D3;0055 030C;01D3;0055 030C;
+01D4;01D4;0075 030C;01D4;0075 030C;
+01D5;01D5;0055 0308 0304;01D5;0055 0308 0304;
+01D6;01D6;0075 0308 0304;01D6;0075 0308 0304;
+01D7;01D7;0055 0308 0301;01D7;0055 0308 0301;
+01D8;01D8;0075 0308 0301;01D8;0075 0308 0301;
+01D9;01D9;0055 0308 030C;01D9;0055 0308 030C;
+01DA;01DA;0075 0308 030C;01DA;0075 0308 030C;
+01DB;01DB;0055 0308 0300;01DB;0055 0308 0300;
+01DC;01DC;0075 0308 0300;01DC;0075 0308 0300;
+01DE;01DE;0041 0308 0304;01DE;0041 0308 0304;
+01DF;01DF;0061 0308 0304;01DF;0061 0308 0304;
+01E0;01E0;0041 0307 0304;01E0;0041 0307 0304;
+01E1;01E1;0061 0307 0304;01E1;0061 0307 0304;
+01E2;01E2;00C6 0304;01E2;00C6 0304;
+01E3;01E3;00E6 0304;01E3;00E6 0304;
+01E6;01E6;0047 030C;01E6;0047 030C;
+01E7;01E7;0067 030C;01E7;0067 030C;
+01E8;01E8;004B 030C;01E8;004B 030C;
+01E9;01E9;006B 030C;01E9;006B 030C;
+01EA;01EA;004F 0328;01EA;004F 0328;
+01EB;01EB;006F 0328;01EB;006F 0328;
+01EC;01EC;004F 0328 0304;01EC;004F 0328 0304;
+01ED;01ED;006F 0328 0304;01ED;006F 0328 0304;
+01EE;01EE;01B7 030C;01EE;01B7 030C;
+01EF;01EF;0292 030C;01EF;0292 030C;
+01F0;01F0;006A 030C;01F0;006A 030C;
+01F1;01F1;01F1;0044 005A;0044 005A;
+01F2;01F2;01F2;0044 007A;0044 007A;
+01F3;01F3;01F3;0064 007A;0064 007A;
+01F4;01F4;0047 0301;01F4;0047 0301;
+01F5;01F5;0067 0301;01F5;0067 0301;
+01F8;01F8;004E 0300;01F8;004E 0300;
+01F9;01F9;006E 0300;01F9;006E 0300;
+01FA;01FA;0041 030A 0301;01FA;0041 030A 0301;
+01FB;01FB;0061 030A 0301;01FB;0061 030A 0301;
+01FC;01FC;00C6 0301;01FC;00C6 0301;
+01FD;01FD;00E6 0301;01FD;00E6 0301;
+01FE;01FE;00D8 0301;01FE;00D8 0301;
+01FF;01FF;00F8 0301;01FF;00F8 0301;
+0200;0200;0041 030F;0200;0041 030F;
+0201;0201;0061 030F;0201;0061 030F;
+0202;0202;0041 0311;0202;0041 0311;
+0203;0203;0061 0311;0203;0061 0311;
+0204;0204;0045 030F;0204;0045 030F;
+0205;0205;0065 030F;0205;0065 030F;
+0206;0206;0045 0311;0206;0045 0311;
+0207;0207;0065 0311;0207;0065 0311;
+0208;0208;0049 030F;0208;0049 030F;
+0209;0209;0069 030F;0209;0069 030F;
+020A;020A;0049 0311;020A;0049 0311;
+020B;020B;0069 0311;020B;0069 0311;
+020C;020C;004F 030F;020C;004F 030F;
+020D;020D;006F 030F;020D;006F 030F;
+020E;020E;004F 0311;020E;004F 0311;
+020F;020F;006F 0311;020F;006F 0311;
+0210;0210;0052 030F;0210;0052 030F;
+0211;0211;0072 030F;0211;0072 030F;
+0212;0212;0052 0311;0212;0052 0311;
+0213;0213;0072 0311;0213;0072 0311;
+0214;0214;0055 030F;0214;0055 030F;
+0215;0215;0075 030F;0215;0075 030F;
+0216;0216;0055 0311;0216;0055 0311;
+0217;0217;0075 0311;0217;0075 0311;
+0218;0218;0053 0326;0218;0053 0326;
+0219;0219;0073 0326;0219;0073 0326;
+021A;021A;0054 0326;021A;0054 0326;
+021B;021B;0074 0326;021B;0074 0326;
+021E;021E;0048 030C;021E;0048 030C;
+021F;021F;0068 030C;021F;0068 030C;
+0226;0226;0041 0307;0226;0041 0307;
+0227;0227;0061 0307;0227;0061 0307;
+0228;0228;0045 0327;0228;0045 0327;
+0229;0229;0065 0327;0229;0065 0327;
+022A;022A;004F 0308 0304;022A;004F 0308 0304;
+022B;022B;006F 0308 0304;022B;006F 0308 0304;
+022C;022C;004F 0303 0304;022C;004F 0303 0304;
+022D;022D;006F 0303 0304;022D;006F 0303 0304;
+022E;022E;004F 0307;022E;004F 0307;
+022F;022F;006F 0307;022F;006F 0307;
+0230;0230;004F 0307 0304;0230;004F 0307 0304;
+0231;0231;006F 0307 0304;0231;006F 0307 0304;
+0232;0232;0059 0304;0232;0059 0304;
+0233;0233;0079 0304;0233;0079 0304;
+02B0;02B0;02B0;0068;0068;
+02B1;02B1;02B1;0266;0266;
+02B2;02B2;02B2;006A;006A;
+02B3;02B3;02B3;0072;0072;
+02B4;02B4;02B4;0279;0279;
+02B5;02B5;02B5;027B;027B;
+02B6;02B6;02B6;0281;0281;
+02B7;02B7;02B7;0077;0077;
+02B8;02B8;02B8;0079;0079;
+02D8;02D8;02D8;0020 0306;0020 0306;
+02D9;02D9;02D9;0020 0307;0020 0307;
+02DA;02DA;02DA;0020 030A;0020 030A;
+02DB;02DB;02DB;0020 0328;0020 0328;
+02DC;02DC;02DC;0020 0303;0020 0303;
+02DD;02DD;02DD;0020 030B;0020 030B;
+02E0;02E0;02E0;0263;0263;
+02E1;02E1;02E1;006C;006C;
+02E2;02E2;02E2;0073;0073;
+02E3;02E3;02E3;0078;0078;
+02E4;02E4;02E4;0295;0295;
+0340;0300;0300;0300;0300;
+0341;0301;0301;0301;0301;
+0343;0313;0313;0313;0313;
+0344;0308 0301;0308 0301;0308 0301;0308 0301;
+0374;02B9;02B9;02B9;02B9;
+037A;037A;037A;0020 0345;0020 0345;
+037E;003B;003B;003B;003B;
+0384;0384;0384;0020 0301;0020 0301;
+0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+0386;0386;0391 0301;0386;0391 0301;
+0387;00B7;00B7;00B7;00B7;
+0388;0388;0395 0301;0388;0395 0301;
+0389;0389;0397 0301;0389;0397 0301;
+038A;038A;0399 0301;038A;0399 0301;
+038C;038C;039F 0301;038C;039F 0301;
+038E;038E;03A5 0301;038E;03A5 0301;
+038F;038F;03A9 0301;038F;03A9 0301;
+0390;0390;03B9 0308 0301;0390;03B9 0308 0301;
+03AA;03AA;0399 0308;03AA;0399 0308;
+03AB;03AB;03A5 0308;03AB;03A5 0308;
+03AC;03AC;03B1 0301;03AC;03B1 0301;
+03AD;03AD;03B5 0301;03AD;03B5 0301;
+03AE;03AE;03B7 0301;03AE;03B7 0301;
+03AF;03AF;03B9 0301;03AF;03B9 0301;
+03B0;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+03CA;03CA;03B9 0308;03CA;03B9 0308;
+03CB;03CB;03C5 0308;03CB;03C5 0308;
+03CC;03CC;03BF 0301;03CC;03BF 0301;
+03CD;03CD;03C5 0301;03CD;03C5 0301;
+03CE;03CE;03C9 0301;03CE;03C9 0301;
+03D0;03D0;03D0;03B2;03B2;
+03D1;03D1;03D1;03B8;03B8;
+03D2;03D2;03D2;03A5;03A5;
+03D3;03D3;03D2 0301;038E;03A5 0301;
+03D4;03D4;03D2 0308;03AB;03A5 0308;
+03D5;03D5;03D5;03C6;03C6;
+03D6;03D6;03D6;03C0;03C0;
+03F0;03F0;03F0;03BA;03BA;
+03F1;03F1;03F1;03C1;03C1;
+03F2;03F2;03F2;03C2;03C2;
+03F4;03F4;03F4;0398;0398;
+03F5;03F5;03F5;03B5;03B5;
+0400;0400;0415 0300;0400;0415 0300;
+0401;0401;0415 0308;0401;0415 0308;
+0403;0403;0413 0301;0403;0413 0301;
+0407;0407;0406 0308;0407;0406 0308;
+040C;040C;041A 0301;040C;041A 0301;
+040D;040D;0418 0300;040D;0418 0300;
+040E;040E;0423 0306;040E;0423 0306;
+0419;0419;0418 0306;0419;0418 0306;
+0439;0439;0438 0306;0439;0438 0306;
+0450;0450;0435 0300;0450;0435 0300;
+0451;0451;0435 0308;0451;0435 0308;
+0453;0453;0433 0301;0453;0433 0301;
+0457;0457;0456 0308;0457;0456 0308;
+045C;045C;043A 0301;045C;043A 0301;
+045D;045D;0438 0300;045D;0438 0300;
+045E;045E;0443 0306;045E;0443 0306;
+0476;0476;0474 030F;0476;0474 030F;
+0477;0477;0475 030F;0477;0475 030F;
+04C1;04C1;0416 0306;04C1;0416 0306;
+04C2;04C2;0436 0306;04C2;0436 0306;
+04D0;04D0;0410 0306;04D0;0410 0306;
+04D1;04D1;0430 0306;04D1;0430 0306;
+04D2;04D2;0410 0308;04D2;0410 0308;
+04D3;04D3;0430 0308;04D3;0430 0308;
+04D6;04D6;0415 0306;04D6;0415 0306;
+04D7;04D7;0435 0306;04D7;0435 0306;
+04DA;04DA;04D8 0308;04DA;04D8 0308;
+04DB;04DB;04D9 0308;04DB;04D9 0308;
+04DC;04DC;0416 0308;04DC;0416 0308;
+04DD;04DD;0436 0308;04DD;0436 0308;
+04DE;04DE;0417 0308;04DE;0417 0308;
+04DF;04DF;0437 0308;04DF;0437 0308;
+04E2;04E2;0418 0304;04E2;0418 0304;
+04E3;04E3;0438 0304;04E3;0438 0304;
+04E4;04E4;0418 0308;04E4;0418 0308;
+04E5;04E5;0438 0308;04E5;0438 0308;
+04E6;04E6;041E 0308;04E6;041E 0308;
+04E7;04E7;043E 0308;04E7;043E 0308;
+04EA;04EA;04E8 0308;04EA;04E8 0308;
+04EB;04EB;04E9 0308;04EB;04E9 0308;
+04EC;04EC;042D 0308;04EC;042D 0308;
+04ED;04ED;044D 0308;04ED;044D 0308;
+04EE;04EE;0423 0304;04EE;0423 0304;
+04EF;04EF;0443 0304;04EF;0443 0304;
+04F0;04F0;0423 0308;04F0;0423 0308;
+04F1;04F1;0443 0308;04F1;0443 0308;
+04F2;04F2;0423 030B;04F2;0423 030B;
+04F3;04F3;0443 030B;04F3;0443 030B;
+04F4;04F4;0427 0308;04F4;0427 0308;
+04F5;04F5;0447 0308;04F5;0447 0308;
+04F8;04F8;042B 0308;04F8;042B 0308;
+04F9;04F9;044B 0308;04F9;044B 0308;
+0587;0587;0587;0565 0582;0565 0582;
+0622;0622;0627 0653;0622;0627 0653;
+0623;0623;0627 0654;0623;0627 0654;
+0624;0624;0648 0654;0624;0648 0654;
+0625;0625;0627 0655;0625;0627 0655;
+0626;0626;064A 0654;0626;064A 0654;
+0675;0675;0675;0627 0674;0627 0674;
+0676;0676;0676;0648 0674;0648 0674;
+0677;0677;0677;06C7 0674;06C7 0674;
+0678;0678;0678;064A 0674;064A 0674;
+06C0;06C0;06D5 0654;06C0;06D5 0654;
+06C2;06C2;06C1 0654;06C2;06C1 0654;
+06D3;06D3;06D2 0654;06D3;06D2 0654;
+0929;0929;0928 093C;0929;0928 093C;
+0931;0931;0930 093C;0931;0930 093C;
+0934;0934;0933 093C;0934;0933 093C;
+0958;0915 093C;0915 093C;0915 093C;0915 093C;
+0959;0916 093C;0916 093C;0916 093C;0916 093C;
+095A;0917 093C;0917 093C;0917 093C;0917 093C;
+095B;091C 093C;091C 093C;091C 093C;091C 093C;
+095C;0921 093C;0921 093C;0921 093C;0921 093C;
+095D;0922 093C;0922 093C;0922 093C;0922 093C;
+095E;092B 093C;092B 093C;092B 093C;092B 093C;
+095F;092F 093C;092F 093C;092F 093C;092F 093C;
+09CB;09CB;09C7 09BE;09CB;09C7 09BE;
+09CC;09CC;09C7 09D7;09CC;09C7 09D7;
+09DC;09A1 09BC;09A1 09BC;09A1 09BC;09A1 09BC;
+09DD;09A2 09BC;09A2 09BC;09A2 09BC;09A2 09BC;
+09DF;09AF 09BC;09AF 09BC;09AF 09BC;09AF 09BC;
+0A33;0A32 0A3C;0A32 0A3C;0A32 0A3C;0A32 0A3C;
+0A36;0A38 0A3C;0A38 0A3C;0A38 0A3C;0A38 0A3C;
+0A59;0A16 0A3C;0A16 0A3C;0A16 0A3C;0A16 0A3C;
+0A5A;0A17 0A3C;0A17 0A3C;0A17 0A3C;0A17 0A3C;
+0A5B;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;
+0A5E;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;
+0B48;0B48;0B47 0B56;0B48;0B47 0B56;
+0B4B;0B4B;0B47 0B3E;0B4B;0B47 0B3E;
+0B4C;0B4C;0B47 0B57;0B4C;0B47 0B57;
+0B5C;0B21 0B3C;0B21 0B3C;0B21 0B3C;0B21 0B3C;
+0B5D;0B22 0B3C;0B22 0B3C;0B22 0B3C;0B22 0B3C;
+0B94;0B94;0B92 0BD7;0B94;0B92 0BD7;
+0BCA;0BCA;0BC6 0BBE;0BCA;0BC6 0BBE;
+0BCB;0BCB;0BC7 0BBE;0BCB;0BC7 0BBE;
+0BCC;0BCC;0BC6 0BD7;0BCC;0BC6 0BD7;
+0C48;0C48;0C46 0C56;0C48;0C46 0C56;
+0CC0;0CC0;0CBF 0CD5;0CC0;0CBF 0CD5;
+0CC7;0CC7;0CC6 0CD5;0CC7;0CC6 0CD5;
+0CC8;0CC8;0CC6 0CD6;0CC8;0CC6 0CD6;
+0CCA;0CCA;0CC6 0CC2;0CCA;0CC6 0CC2;
+0CCB;0CCB;0CC6 0CC2 0CD5;0CCB;0CC6 0CC2 0CD5;
+0D4A;0D4A;0D46 0D3E;0D4A;0D46 0D3E;
+0D4B;0D4B;0D47 0D3E;0D4B;0D47 0D3E;
+0D4C;0D4C;0D46 0D57;0D4C;0D46 0D57;
+0DDA;0DDA;0DD9 0DCA;0DDA;0DD9 0DCA;
+0DDC;0DDC;0DD9 0DCF;0DDC;0DD9 0DCF;
+0DDD;0DDD;0DD9 0DCF 0DCA;0DDD;0DD9 0DCF 0DCA;
+0DDE;0DDE;0DD9 0DDF;0DDE;0DD9 0DDF;
+0E33;0E33;0E33;0E4D 0E32;0E4D 0E32;
+0EB3;0EB3;0EB3;0ECD 0EB2;0ECD 0EB2;
+0EDC;0EDC;0EDC;0EAB 0E99;0EAB 0E99;
+0EDD;0EDD;0EDD;0EAB 0EA1;0EAB 0EA1;
+0F0C;0F0C;0F0C;0F0B;0F0B;
+0F43;0F42 0FB7;0F42 0FB7;0F42 0FB7;0F42 0FB7;
+0F4D;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;
+0F52;0F51 0FB7;0F51 0FB7;0F51 0FB7;0F51 0FB7;
+0F57;0F56 0FB7;0F56 0FB7;0F56 0FB7;0F56 0FB7;
+0F5C;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;
+0F69;0F40 0FB5;0F40 0FB5;0F40 0FB5;0F40 0FB5;
+0F73;0F71 0F72;0F71 0F72;0F71 0F72;0F71 0F72;
+0F75;0F71 0F74;0F71 0F74;0F71 0F74;0F71 0F74;
+0F76;0FB2 0F80;0FB2 0F80;0FB2 0F80;0FB2 0F80;
+0F77;0F77;0F77;0FB2 0F71 0F80;0FB2 0F71 0F80;
+0F78;0FB3 0F80;0FB3 0F80;0FB3 0F80;0FB3 0F80;
+0F79;0F79;0F79;0FB3 0F71 0F80;0FB3 0F71 0F80;
+0F81;0F71 0F80;0F71 0F80;0F71 0F80;0F71 0F80;
+0F93;0F92 0FB7;0F92 0FB7;0F92 0FB7;0F92 0FB7;
+0F9D;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;
+0FA2;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;
+0FA7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;
+0FAC;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;
+0FB9;0F90 0FB5;0F90 0FB5;0F90 0FB5;0F90 0FB5;
+1026;1026;1025 102E;1026;1025 102E;
+1E00;1E00;0041 0325;1E00;0041 0325;
+1E01;1E01;0061 0325;1E01;0061 0325;
+1E02;1E02;0042 0307;1E02;0042 0307;
+1E03;1E03;0062 0307;1E03;0062 0307;
+1E04;1E04;0042 0323;1E04;0042 0323;
+1E05;1E05;0062 0323;1E05;0062 0323;
+1E06;1E06;0042 0331;1E06;0042 0331;
+1E07;1E07;0062 0331;1E07;0062 0331;
+1E08;1E08;0043 0327 0301;1E08;0043 0327 0301;
+1E09;1E09;0063 0327 0301;1E09;0063 0327 0301;
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0B;1E0B;0064 0307;1E0B;0064 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0D;1E0D;0064 0323;1E0D;0064 0323;
+1E0E;1E0E;0044 0331;1E0E;0044 0331;
+1E0F;1E0F;0064 0331;1E0F;0064 0331;
+1E10;1E10;0044 0327;1E10;0044 0327;
+1E11;1E11;0064 0327;1E11;0064 0327;
+1E12;1E12;0044 032D;1E12;0044 032D;
+1E13;1E13;0064 032D;1E13;0064 032D;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E15;1E15;0065 0304 0300;1E15;0065 0304 0300;
+1E16;1E16;0045 0304 0301;1E16;0045 0304 0301;
+1E17;1E17;0065 0304 0301;1E17;0065 0304 0301;
+1E18;1E18;0045 032D;1E18;0045 032D;
+1E19;1E19;0065 032D;1E19;0065 032D;
+1E1A;1E1A;0045 0330;1E1A;0045 0330;
+1E1B;1E1B;0065 0330;1E1B;0065 0330;
+1E1C;1E1C;0045 0327 0306;1E1C;0045 0327 0306;
+1E1D;1E1D;0065 0327 0306;1E1D;0065 0327 0306;
+1E1E;1E1E;0046 0307;1E1E;0046 0307;
+1E1F;1E1F;0066 0307;1E1F;0066 0307;
+1E20;1E20;0047 0304;1E20;0047 0304;
+1E21;1E21;0067 0304;1E21;0067 0304;
+1E22;1E22;0048 0307;1E22;0048 0307;
+1E23;1E23;0068 0307;1E23;0068 0307;
+1E24;1E24;0048 0323;1E24;0048 0323;
+1E25;1E25;0068 0323;1E25;0068 0323;
+1E26;1E26;0048 0308;1E26;0048 0308;
+1E27;1E27;0068 0308;1E27;0068 0308;
+1E28;1E28;0048 0327;1E28;0048 0327;
+1E29;1E29;0068 0327;1E29;0068 0327;
+1E2A;1E2A;0048 032E;1E2A;0048 032E;
+1E2B;1E2B;0068 032E;1E2B;0068 032E;
+1E2C;1E2C;0049 0330;1E2C;0049 0330;
+1E2D;1E2D;0069 0330;1E2D;0069 0330;
+1E2E;1E2E;0049 0308 0301;1E2E;0049 0308 0301;
+1E2F;1E2F;0069 0308 0301;1E2F;0069 0308 0301;
+1E30;1E30;004B 0301;1E30;004B 0301;
+1E31;1E31;006B 0301;1E31;006B 0301;
+1E32;1E32;004B 0323;1E32;004B 0323;
+1E33;1E33;006B 0323;1E33;006B 0323;
+1E34;1E34;004B 0331;1E34;004B 0331;
+1E35;1E35;006B 0331;1E35;006B 0331;
+1E36;1E36;004C 0323;1E36;004C 0323;
+1E37;1E37;006C 0323;1E37;006C 0323;
+1E38;1E38;004C 0323 0304;1E38;004C 0323 0304;
+1E39;1E39;006C 0323 0304;1E39;006C 0323 0304;
+1E3A;1E3A;004C 0331;1E3A;004C 0331;
+1E3B;1E3B;006C 0331;1E3B;006C 0331;
+1E3C;1E3C;004C 032D;1E3C;004C 032D;
+1E3D;1E3D;006C 032D;1E3D;006C 032D;
+1E3E;1E3E;004D 0301;1E3E;004D 0301;
+1E3F;1E3F;006D 0301;1E3F;006D 0301;
+1E40;1E40;004D 0307;1E40;004D 0307;
+1E41;1E41;006D 0307;1E41;006D 0307;
+1E42;1E42;004D 0323;1E42;004D 0323;
+1E43;1E43;006D 0323;1E43;006D 0323;
+1E44;1E44;004E 0307;1E44;004E 0307;
+1E45;1E45;006E 0307;1E45;006E 0307;
+1E46;1E46;004E 0323;1E46;004E 0323;
+1E47;1E47;006E 0323;1E47;006E 0323;
+1E48;1E48;004E 0331;1E48;004E 0331;
+1E49;1E49;006E 0331;1E49;006E 0331;
+1E4A;1E4A;004E 032D;1E4A;004E 032D;
+1E4B;1E4B;006E 032D;1E4B;006E 032D;
+1E4C;1E4C;004F 0303 0301;1E4C;004F 0303 0301;
+1E4D;1E4D;006F 0303 0301;1E4D;006F 0303 0301;
+1E4E;1E4E;004F 0303 0308;1E4E;004F 0303 0308;
+1E4F;1E4F;006F 0303 0308;1E4F;006F 0303 0308;
+1E50;1E50;004F 0304 0300;1E50;004F 0304 0300;
+1E51;1E51;006F 0304 0300;1E51;006F 0304 0300;
+1E52;1E52;004F 0304 0301;1E52;004F 0304 0301;
+1E53;1E53;006F 0304 0301;1E53;006F 0304 0301;
+1E54;1E54;0050 0301;1E54;0050 0301;
+1E55;1E55;0070 0301;1E55;0070 0301;
+1E56;1E56;0050 0307;1E56;0050 0307;
+1E57;1E57;0070 0307;1E57;0070 0307;
+1E58;1E58;0052 0307;1E58;0052 0307;
+1E59;1E59;0072 0307;1E59;0072 0307;
+1E5A;1E5A;0052 0323;1E5A;0052 0323;
+1E5B;1E5B;0072 0323;1E5B;0072 0323;
+1E5C;1E5C;0052 0323 0304;1E5C;0052 0323 0304;
+1E5D;1E5D;0072 0323 0304;1E5D;0072 0323 0304;
+1E5E;1E5E;0052 0331;1E5E;0052 0331;
+1E5F;1E5F;0072 0331;1E5F;0072 0331;
+1E60;1E60;0053 0307;1E60;0053 0307;
+1E61;1E61;0073 0307;1E61;0073 0307;
+1E62;1E62;0053 0323;1E62;0053 0323;
+1E63;1E63;0073 0323;1E63;0073 0323;
+1E64;1E64;0053 0301 0307;1E64;0053 0301 0307;
+1E65;1E65;0073 0301 0307;1E65;0073 0301 0307;
+1E66;1E66;0053 030C 0307;1E66;0053 030C 0307;
+1E67;1E67;0073 030C 0307;1E67;0073 030C 0307;
+1E68;1E68;0053 0323 0307;1E68;0053 0323 0307;
+1E69;1E69;0073 0323 0307;1E69;0073 0323 0307;
+1E6A;1E6A;0054 0307;1E6A;0054 0307;
+1E6B;1E6B;0074 0307;1E6B;0074 0307;
+1E6C;1E6C;0054 0323;1E6C;0054 0323;
+1E6D;1E6D;0074 0323;1E6D;0074 0323;
+1E6E;1E6E;0054 0331;1E6E;0054 0331;
+1E6F;1E6F;0074 0331;1E6F;0074 0331;
+1E70;1E70;0054 032D;1E70;0054 032D;
+1E71;1E71;0074 032D;1E71;0074 032D;
+1E72;1E72;0055 0324;1E72;0055 0324;
+1E73;1E73;0075 0324;1E73;0075 0324;
+1E74;1E74;0055 0330;1E74;0055 0330;
+1E75;1E75;0075 0330;1E75;0075 0330;
+1E76;1E76;0055 032D;1E76;0055 032D;
+1E77;1E77;0075 032D;1E77;0075 032D;
+1E78;1E78;0055 0303 0301;1E78;0055 0303 0301;
+1E79;1E79;0075 0303 0301;1E79;0075 0303 0301;
+1E7A;1E7A;0055 0304 0308;1E7A;0055 0304 0308;
+1E7B;1E7B;0075 0304 0308;1E7B;0075 0304 0308;
+1E7C;1E7C;0056 0303;1E7C;0056 0303;
+1E7D;1E7D;0076 0303;1E7D;0076 0303;
+1E7E;1E7E;0056 0323;1E7E;0056 0323;
+1E7F;1E7F;0076 0323;1E7F;0076 0323;
+1E80;1E80;0057 0300;1E80;0057 0300;
+1E81;1E81;0077 0300;1E81;0077 0300;
+1E82;1E82;0057 0301;1E82;0057 0301;
+1E83;1E83;0077 0301;1E83;0077 0301;
+1E84;1E84;0057 0308;1E84;0057 0308;
+1E85;1E85;0077 0308;1E85;0077 0308;
+1E86;1E86;0057 0307;1E86;0057 0307;
+1E87;1E87;0077 0307;1E87;0077 0307;
+1E88;1E88;0057 0323;1E88;0057 0323;
+1E89;1E89;0077 0323;1E89;0077 0323;
+1E8A;1E8A;0058 0307;1E8A;0058 0307;
+1E8B;1E8B;0078 0307;1E8B;0078 0307;
+1E8C;1E8C;0058 0308;1E8C;0058 0308;
+1E8D;1E8D;0078 0308;1E8D;0078 0308;
+1E8E;1E8E;0059 0307;1E8E;0059 0307;
+1E8F;1E8F;0079 0307;1E8F;0079 0307;
+1E90;1E90;005A 0302;1E90;005A 0302;
+1E91;1E91;007A 0302;1E91;007A 0302;
+1E92;1E92;005A 0323;1E92;005A 0323;
+1E93;1E93;007A 0323;1E93;007A 0323;
+1E94;1E94;005A 0331;1E94;005A 0331;
+1E95;1E95;007A 0331;1E95;007A 0331;
+1E96;1E96;0068 0331;1E96;0068 0331;
+1E97;1E97;0074 0308;1E97;0074 0308;
+1E98;1E98;0077 030A;1E98;0077 030A;
+1E99;1E99;0079 030A;1E99;0079 030A;
+1E9A;1E9A;1E9A;0061 02BE;0061 02BE;
+1E9B;1E9B;017F 0307;1E61;0073 0307;
+1EA0;1EA0;0041 0323;1EA0;0041 0323;
+1EA1;1EA1;0061 0323;1EA1;0061 0323;
+1EA2;1EA2;0041 0309;1EA2;0041 0309;
+1EA3;1EA3;0061 0309;1EA3;0061 0309;
+1EA4;1EA4;0041 0302 0301;1EA4;0041 0302 0301;
+1EA5;1EA5;0061 0302 0301;1EA5;0061 0302 0301;
+1EA6;1EA6;0041 0302 0300;1EA6;0041 0302 0300;
+1EA7;1EA7;0061 0302 0300;1EA7;0061 0302 0300;
+1EA8;1EA8;0041 0302 0309;1EA8;0041 0302 0309;
+1EA9;1EA9;0061 0302 0309;1EA9;0061 0302 0309;
+1EAA;1EAA;0041 0302 0303;1EAA;0041 0302 0303;
+1EAB;1EAB;0061 0302 0303;1EAB;0061 0302 0303;
+1EAC;1EAC;0041 0323 0302;1EAC;0041 0323 0302;
+1EAD;1EAD;0061 0323 0302;1EAD;0061 0323 0302;
+1EAE;1EAE;0041 0306 0301;1EAE;0041 0306 0301;
+1EAF;1EAF;0061 0306 0301;1EAF;0061 0306 0301;
+1EB0;1EB0;0041 0306 0300;1EB0;0041 0306 0300;
+1EB1;1EB1;0061 0306 0300;1EB1;0061 0306 0300;
+1EB2;1EB2;0041 0306 0309;1EB2;0041 0306 0309;
+1EB3;1EB3;0061 0306 0309;1EB3;0061 0306 0309;
+1EB4;1EB4;0041 0306 0303;1EB4;0041 0306 0303;
+1EB5;1EB5;0061 0306 0303;1EB5;0061 0306 0303;
+1EB6;1EB6;0041 0323 0306;1EB6;0041 0323 0306;
+1EB7;1EB7;0061 0323 0306;1EB7;0061 0323 0306;
+1EB8;1EB8;0045 0323;1EB8;0045 0323;
+1EB9;1EB9;0065 0323;1EB9;0065 0323;
+1EBA;1EBA;0045 0309;1EBA;0045 0309;
+1EBB;1EBB;0065 0309;1EBB;0065 0309;
+1EBC;1EBC;0045 0303;1EBC;0045 0303;
+1EBD;1EBD;0065 0303;1EBD;0065 0303;
+1EBE;1EBE;0045 0302 0301;1EBE;0045 0302 0301;
+1EBF;1EBF;0065 0302 0301;1EBF;0065 0302 0301;
+1EC0;1EC0;0045 0302 0300;1EC0;0045 0302 0300;
+1EC1;1EC1;0065 0302 0300;1EC1;0065 0302 0300;
+1EC2;1EC2;0045 0302 0309;1EC2;0045 0302 0309;
+1EC3;1EC3;0065 0302 0309;1EC3;0065 0302 0309;
+1EC4;1EC4;0045 0302 0303;1EC4;0045 0302 0303;
+1EC5;1EC5;0065 0302 0303;1EC5;0065 0302 0303;
+1EC6;1EC6;0045 0323 0302;1EC6;0045 0323 0302;
+1EC7;1EC7;0065 0323 0302;1EC7;0065 0323 0302;
+1EC8;1EC8;0049 0309;1EC8;0049 0309;
+1EC9;1EC9;0069 0309;1EC9;0069 0309;
+1ECA;1ECA;0049 0323;1ECA;0049 0323;
+1ECB;1ECB;0069 0323;1ECB;0069 0323;
+1ECC;1ECC;004F 0323;1ECC;004F 0323;
+1ECD;1ECD;006F 0323;1ECD;006F 0323;
+1ECE;1ECE;004F 0309;1ECE;004F 0309;
+1ECF;1ECF;006F 0309;1ECF;006F 0309;
+1ED0;1ED0;004F 0302 0301;1ED0;004F 0302 0301;
+1ED1;1ED1;006F 0302 0301;1ED1;006F 0302 0301;
+1ED2;1ED2;004F 0302 0300;1ED2;004F 0302 0300;
+1ED3;1ED3;006F 0302 0300;1ED3;006F 0302 0300;
+1ED4;1ED4;004F 0302 0309;1ED4;004F 0302 0309;
+1ED5;1ED5;006F 0302 0309;1ED5;006F 0302 0309;
+1ED6;1ED6;004F 0302 0303;1ED6;004F 0302 0303;
+1ED7;1ED7;006F 0302 0303;1ED7;006F 0302 0303;
+1ED8;1ED8;004F 0323 0302;1ED8;004F 0323 0302;
+1ED9;1ED9;006F 0323 0302;1ED9;006F 0323 0302;
+1EDA;1EDA;004F 031B 0301;1EDA;004F 031B 0301;
+1EDB;1EDB;006F 031B 0301;1EDB;006F 031B 0301;
+1EDC;1EDC;004F 031B 0300;1EDC;004F 031B 0300;
+1EDD;1EDD;006F 031B 0300;1EDD;006F 031B 0300;
+1EDE;1EDE;004F 031B 0309;1EDE;004F 031B 0309;
+1EDF;1EDF;006F 031B 0309;1EDF;006F 031B 0309;
+1EE0;1EE0;004F 031B 0303;1EE0;004F 031B 0303;
+1EE1;1EE1;006F 031B 0303;1EE1;006F 031B 0303;
+1EE2;1EE2;004F 031B 0323;1EE2;004F 031B 0323;
+1EE3;1EE3;006F 031B 0323;1EE3;006F 031B 0323;
+1EE4;1EE4;0055 0323;1EE4;0055 0323;
+1EE5;1EE5;0075 0323;1EE5;0075 0323;
+1EE6;1EE6;0055 0309;1EE6;0055 0309;
+1EE7;1EE7;0075 0309;1EE7;0075 0309;
+1EE8;1EE8;0055 031B 0301;1EE8;0055 031B 0301;
+1EE9;1EE9;0075 031B 0301;1EE9;0075 031B 0301;
+1EEA;1EEA;0055 031B 0300;1EEA;0055 031B 0300;
+1EEB;1EEB;0075 031B 0300;1EEB;0075 031B 0300;
+1EEC;1EEC;0055 031B 0309;1EEC;0055 031B 0309;
+1EED;1EED;0075 031B 0309;1EED;0075 031B 0309;
+1EEE;1EEE;0055 031B 0303;1EEE;0055 031B 0303;
+1EEF;1EEF;0075 031B 0303;1EEF;0075 031B 0303;
+1EF0;1EF0;0055 031B 0323;1EF0;0055 031B 0323;
+1EF1;1EF1;0075 031B 0323;1EF1;0075 031B 0323;
+1EF2;1EF2;0059 0300;1EF2;0059 0300;
+1EF3;1EF3;0079 0300;1EF3;0079 0300;
+1EF4;1EF4;0059 0323;1EF4;0059 0323;
+1EF5;1EF5;0079 0323;1EF5;0079 0323;
+1EF6;1EF6;0059 0309;1EF6;0059 0309;
+1EF7;1EF7;0079 0309;1EF7;0079 0309;
+1EF8;1EF8;0059 0303;1EF8;0059 0303;
+1EF9;1EF9;0079 0303;1EF9;0079 0303;
+1F00;1F00;03B1 0313;1F00;03B1 0313;
+1F01;1F01;03B1 0314;1F01;03B1 0314;
+1F02;1F02;03B1 0313 0300;1F02;03B1 0313 0300;
+1F03;1F03;03B1 0314 0300;1F03;03B1 0314 0300;
+1F04;1F04;03B1 0313 0301;1F04;03B1 0313 0301;
+1F05;1F05;03B1 0314 0301;1F05;03B1 0314 0301;
+1F06;1F06;03B1 0313 0342;1F06;03B1 0313 0342;
+1F07;1F07;03B1 0314 0342;1F07;03B1 0314 0342;
+1F08;1F08;0391 0313;1F08;0391 0313;
+1F09;1F09;0391 0314;1F09;0391 0314;
+1F0A;1F0A;0391 0313 0300;1F0A;0391 0313 0300;
+1F0B;1F0B;0391 0314 0300;1F0B;0391 0314 0300;
+1F0C;1F0C;0391 0313 0301;1F0C;0391 0313 0301;
+1F0D;1F0D;0391 0314 0301;1F0D;0391 0314 0301;
+1F0E;1F0E;0391 0313 0342;1F0E;0391 0313 0342;
+1F0F;1F0F;0391 0314 0342;1F0F;0391 0314 0342;
+1F10;1F10;03B5 0313;1F10;03B5 0313;
+1F11;1F11;03B5 0314;1F11;03B5 0314;
+1F12;1F12;03B5 0313 0300;1F12;03B5 0313 0300;
+1F13;1F13;03B5 0314 0300;1F13;03B5 0314 0300;
+1F14;1F14;03B5 0313 0301;1F14;03B5 0313 0301;
+1F15;1F15;03B5 0314 0301;1F15;03B5 0314 0301;
+1F18;1F18;0395 0313;1F18;0395 0313;
+1F19;1F19;0395 0314;1F19;0395 0314;
+1F1A;1F1A;0395 0313 0300;1F1A;0395 0313 0300;
+1F1B;1F1B;0395 0314 0300;1F1B;0395 0314 0300;
+1F1C;1F1C;0395 0313 0301;1F1C;0395 0313 0301;
+1F1D;1F1D;0395 0314 0301;1F1D;0395 0314 0301;
+1F20;1F20;03B7 0313;1F20;03B7 0313;
+1F21;1F21;03B7 0314;1F21;03B7 0314;
+1F22;1F22;03B7 0313 0300;1F22;03B7 0313 0300;
+1F23;1F23;03B7 0314 0300;1F23;03B7 0314 0300;
+1F24;1F24;03B7 0313 0301;1F24;03B7 0313 0301;
+1F25;1F25;03B7 0314 0301;1F25;03B7 0314 0301;
+1F26;1F26;03B7 0313 0342;1F26;03B7 0313 0342;
+1F27;1F27;03B7 0314 0342;1F27;03B7 0314 0342;
+1F28;1F28;0397 0313;1F28;0397 0313;
+1F29;1F29;0397 0314;1F29;0397 0314;
+1F2A;1F2A;0397 0313 0300;1F2A;0397 0313 0300;
+1F2B;1F2B;0397 0314 0300;1F2B;0397 0314 0300;
+1F2C;1F2C;0397 0313 0301;1F2C;0397 0313 0301;
+1F2D;1F2D;0397 0314 0301;1F2D;0397 0314 0301;
+1F2E;1F2E;0397 0313 0342;1F2E;0397 0313 0342;
+1F2F;1F2F;0397 0314 0342;1F2F;0397 0314 0342;
+1F30;1F30;03B9 0313;1F30;03B9 0313;
+1F31;1F31;03B9 0314;1F31;03B9 0314;
+1F32;1F32;03B9 0313 0300;1F32;03B9 0313 0300;
+1F33;1F33;03B9 0314 0300;1F33;03B9 0314 0300;
+1F34;1F34;03B9 0313 0301;1F34;03B9 0313 0301;
+1F35;1F35;03B9 0314 0301;1F35;03B9 0314 0301;
+1F36;1F36;03B9 0313 0342;1F36;03B9 0313 0342;
+1F37;1F37;03B9 0314 0342;1F37;03B9 0314 0342;
+1F38;1F38;0399 0313;1F38;0399 0313;
+1F39;1F39;0399 0314;1F39;0399 0314;
+1F3A;1F3A;0399 0313 0300;1F3A;0399 0313 0300;
+1F3B;1F3B;0399 0314 0300;1F3B;0399 0314 0300;
+1F3C;1F3C;0399 0313 0301;1F3C;0399 0313 0301;
+1F3D;1F3D;0399 0314 0301;1F3D;0399 0314 0301;
+1F3E;1F3E;0399 0313 0342;1F3E;0399 0313 0342;
+1F3F;1F3F;0399 0314 0342;1F3F;0399 0314 0342;
+1F40;1F40;03BF 0313;1F40;03BF 0313;
+1F41;1F41;03BF 0314;1F41;03BF 0314;
+1F42;1F42;03BF 0313 0300;1F42;03BF 0313 0300;
+1F43;1F43;03BF 0314 0300;1F43;03BF 0314 0300;
+1F44;1F44;03BF 0313 0301;1F44;03BF 0313 0301;
+1F45;1F45;03BF 0314 0301;1F45;03BF 0314 0301;
+1F48;1F48;039F 0313;1F48;039F 0313;
+1F49;1F49;039F 0314;1F49;039F 0314;
+1F4A;1F4A;039F 0313 0300;1F4A;039F 0313 0300;
+1F4B;1F4B;039F 0314 0300;1F4B;039F 0314 0300;
+1F4C;1F4C;039F 0313 0301;1F4C;039F 0313 0301;
+1F4D;1F4D;039F 0314 0301;1F4D;039F 0314 0301;
+1F50;1F50;03C5 0313;1F50;03C5 0313;
+1F51;1F51;03C5 0314;1F51;03C5 0314;
+1F52;1F52;03C5 0313 0300;1F52;03C5 0313 0300;
+1F53;1F53;03C5 0314 0300;1F53;03C5 0314 0300;
+1F54;1F54;03C5 0313 0301;1F54;03C5 0313 0301;
+1F55;1F55;03C5 0314 0301;1F55;03C5 0314 0301;
+1F56;1F56;03C5 0313 0342;1F56;03C5 0313 0342;
+1F57;1F57;03C5 0314 0342;1F57;03C5 0314 0342;
+1F59;1F59;03A5 0314;1F59;03A5 0314;
+1F5B;1F5B;03A5 0314 0300;1F5B;03A5 0314 0300;
+1F5D;1F5D;03A5 0314 0301;1F5D;03A5 0314 0301;
+1F5F;1F5F;03A5 0314 0342;1F5F;03A5 0314 0342;
+1F60;1F60;03C9 0313;1F60;03C9 0313;
+1F61;1F61;03C9 0314;1F61;03C9 0314;
+1F62;1F62;03C9 0313 0300;1F62;03C9 0313 0300;
+1F63;1F63;03C9 0314 0300;1F63;03C9 0314 0300;
+1F64;1F64;03C9 0313 0301;1F64;03C9 0313 0301;
+1F65;1F65;03C9 0314 0301;1F65;03C9 0314 0301;
+1F66;1F66;03C9 0313 0342;1F66;03C9 0313 0342;
+1F67;1F67;03C9 0314 0342;1F67;03C9 0314 0342;
+1F68;1F68;03A9 0313;1F68;03A9 0313;
+1F69;1F69;03A9 0314;1F69;03A9 0314;
+1F6A;1F6A;03A9 0313 0300;1F6A;03A9 0313 0300;
+1F6B;1F6B;03A9 0314 0300;1F6B;03A9 0314 0300;
+1F6C;1F6C;03A9 0313 0301;1F6C;03A9 0313 0301;
+1F6D;1F6D;03A9 0314 0301;1F6D;03A9 0314 0301;
+1F6E;1F6E;03A9 0313 0342;1F6E;03A9 0313 0342;
+1F6F;1F6F;03A9 0314 0342;1F6F;03A9 0314 0342;
+1F70;1F70;03B1 0300;1F70;03B1 0300;
+1F71;03AC;03B1 0301;03AC;03B1 0301;
+1F72;1F72;03B5 0300;1F72;03B5 0300;
+1F73;03AD;03B5 0301;03AD;03B5 0301;
+1F74;1F74;03B7 0300;1F74;03B7 0300;
+1F75;03AE;03B7 0301;03AE;03B7 0301;
+1F76;1F76;03B9 0300;1F76;03B9 0300;
+1F77;03AF;03B9 0301;03AF;03B9 0301;
+1F78;1F78;03BF 0300;1F78;03BF 0300;
+1F79;03CC;03BF 0301;03CC;03BF 0301;
+1F7A;1F7A;03C5 0300;1F7A;03C5 0300;
+1F7B;03CD;03C5 0301;03CD;03C5 0301;
+1F7C;1F7C;03C9 0300;1F7C;03C9 0300;
+1F7D;03CE;03C9 0301;03CE;03C9 0301;
+1F80;1F80;03B1 0313 0345;1F80;03B1 0313 0345;
+1F81;1F81;03B1 0314 0345;1F81;03B1 0314 0345;
+1F82;1F82;03B1 0313 0300 0345;1F82;03B1 0313 0300 0345;
+1F83;1F83;03B1 0314 0300 0345;1F83;03B1 0314 0300 0345;
+1F84;1F84;03B1 0313 0301 0345;1F84;03B1 0313 0301 0345;
+1F85;1F85;03B1 0314 0301 0345;1F85;03B1 0314 0301 0345;
+1F86;1F86;03B1 0313 0342 0345;1F86;03B1 0313 0342 0345;
+1F87;1F87;03B1 0314 0342 0345;1F87;03B1 0314 0342 0345;
+1F88;1F88;0391 0313 0345;1F88;0391 0313 0345;
+1F89;1F89;0391 0314 0345;1F89;0391 0314 0345;
+1F8A;1F8A;0391 0313 0300 0345;1F8A;0391 0313 0300 0345;
+1F8B;1F8B;0391 0314 0300 0345;1F8B;0391 0314 0300 0345;
+1F8C;1F8C;0391 0313 0301 0345;1F8C;0391 0313 0301 0345;
+1F8D;1F8D;0391 0314 0301 0345;1F8D;0391 0314 0301 0345;
+1F8E;1F8E;0391 0313 0342 0345;1F8E;0391 0313 0342 0345;
+1F8F;1F8F;0391 0314 0342 0345;1F8F;0391 0314 0342 0345;
+1F90;1F90;03B7 0313 0345;1F90;03B7 0313 0345;
+1F91;1F91;03B7 0314 0345;1F91;03B7 0314 0345;
+1F92;1F92;03B7 0313 0300 0345;1F92;03B7 0313 0300 0345;
+1F93;1F93;03B7 0314 0300 0345;1F93;03B7 0314 0300 0345;
+1F94;1F94;03B7 0313 0301 0345;1F94;03B7 0313 0301 0345;
+1F95;1F95;03B7 0314 0301 0345;1F95;03B7 0314 0301 0345;
+1F96;1F96;03B7 0313 0342 0345;1F96;03B7 0313 0342 0345;
+1F97;1F97;03B7 0314 0342 0345;1F97;03B7 0314 0342 0345;
+1F98;1F98;0397 0313 0345;1F98;0397 0313 0345;
+1F99;1F99;0397 0314 0345;1F99;0397 0314 0345;
+1F9A;1F9A;0397 0313 0300 0345;1F9A;0397 0313 0300 0345;
+1F9B;1F9B;0397 0314 0300 0345;1F9B;0397 0314 0300 0345;
+1F9C;1F9C;0397 0313 0301 0345;1F9C;0397 0313 0301 0345;
+1F9D;1F9D;0397 0314 0301 0345;1F9D;0397 0314 0301 0345;
+1F9E;1F9E;0397 0313 0342 0345;1F9E;0397 0313 0342 0345;
+1F9F;1F9F;0397 0314 0342 0345;1F9F;0397 0314 0342 0345;
+1FA0;1FA0;03C9 0313 0345;1FA0;03C9 0313 0345;
+1FA1;1FA1;03C9 0314 0345;1FA1;03C9 0314 0345;
+1FA2;1FA2;03C9 0313 0300 0345;1FA2;03C9 0313 0300 0345;
+1FA3;1FA3;03C9 0314 0300 0345;1FA3;03C9 0314 0300 0345;
+1FA4;1FA4;03C9 0313 0301 0345;1FA4;03C9 0313 0301 0345;
+1FA5;1FA5;03C9 0314 0301 0345;1FA5;03C9 0314 0301 0345;
+1FA6;1FA6;03C9 0313 0342 0345;1FA6;03C9 0313 0342 0345;
+1FA7;1FA7;03C9 0314 0342 0345;1FA7;03C9 0314 0342 0345;
+1FA8;1FA8;03A9 0313 0345;1FA8;03A9 0313 0345;
+1FA9;1FA9;03A9 0314 0345;1FA9;03A9 0314 0345;
+1FAA;1FAA;03A9 0313 0300 0345;1FAA;03A9 0313 0300 0345;
+1FAB;1FAB;03A9 0314 0300 0345;1FAB;03A9 0314 0300 0345;
+1FAC;1FAC;03A9 0313 0301 0345;1FAC;03A9 0313 0301 0345;
+1FAD;1FAD;03A9 0314 0301 0345;1FAD;03A9 0314 0301 0345;
+1FAE;1FAE;03A9 0313 0342 0345;1FAE;03A9 0313 0342 0345;
+1FAF;1FAF;03A9 0314 0342 0345;1FAF;03A9 0314 0342 0345;
+1FB0;1FB0;03B1 0306;1FB0;03B1 0306;
+1FB1;1FB1;03B1 0304;1FB1;03B1 0304;
+1FB2;1FB2;03B1 0300 0345;1FB2;03B1 0300 0345;
+1FB3;1FB3;03B1 0345;1FB3;03B1 0345;
+1FB4;1FB4;03B1 0301 0345;1FB4;03B1 0301 0345;
+1FB6;1FB6;03B1 0342;1FB6;03B1 0342;
+1FB7;1FB7;03B1 0342 0345;1FB7;03B1 0342 0345;
+1FB8;1FB8;0391 0306;1FB8;0391 0306;
+1FB9;1FB9;0391 0304;1FB9;0391 0304;
+1FBA;1FBA;0391 0300;1FBA;0391 0300;
+1FBB;0386;0391 0301;0386;0391 0301;
+1FBC;1FBC;0391 0345;1FBC;0391 0345;
+1FBD;1FBD;1FBD;0020 0313;0020 0313;
+1FBE;03B9;03B9;03B9;03B9;
+1FBF;1FBF;1FBF;0020 0313;0020 0313;
+1FC0;1FC0;1FC0;0020 0342;0020 0342;
+1FC1;1FC1;00A8 0342;0020 0308 0342;0020 0308 0342;
+1FC2;1FC2;03B7 0300 0345;1FC2;03B7 0300 0345;
+1FC3;1FC3;03B7 0345;1FC3;03B7 0345;
+1FC4;1FC4;03B7 0301 0345;1FC4;03B7 0301 0345;
+1FC6;1FC6;03B7 0342;1FC6;03B7 0342;
+1FC7;1FC7;03B7 0342 0345;1FC7;03B7 0342 0345;
+1FC8;1FC8;0395 0300;1FC8;0395 0300;
+1FC9;0388;0395 0301;0388;0395 0301;
+1FCA;1FCA;0397 0300;1FCA;0397 0300;
+1FCB;0389;0397 0301;0389;0397 0301;
+1FCC;1FCC;0397 0345;1FCC;0397 0345;
+1FCD;1FCD;1FBF 0300;0020 0313 0300;0020 0313 0300;
+1FCE;1FCE;1FBF 0301;0020 0313 0301;0020 0313 0301;
+1FCF;1FCF;1FBF 0342;0020 0313 0342;0020 0313 0342;
+1FD0;1FD0;03B9 0306;1FD0;03B9 0306;
+1FD1;1FD1;03B9 0304;1FD1;03B9 0304;
+1FD2;1FD2;03B9 0308 0300;1FD2;03B9 0308 0300;
+1FD3;0390;03B9 0308 0301;0390;03B9 0308 0301;
+1FD6;1FD6;03B9 0342;1FD6;03B9 0342;
+1FD7;1FD7;03B9 0308 0342;1FD7;03B9 0308 0342;
+1FD8;1FD8;0399 0306;1FD8;0399 0306;
+1FD9;1FD9;0399 0304;1FD9;0399 0304;
+1FDA;1FDA;0399 0300;1FDA;0399 0300;
+1FDB;038A;0399 0301;038A;0399 0301;
+1FDD;1FDD;1FFE 0300;0020 0314 0300;0020 0314 0300;
+1FDE;1FDE;1FFE 0301;0020 0314 0301;0020 0314 0301;
+1FDF;1FDF;1FFE 0342;0020 0314 0342;0020 0314 0342;
+1FE0;1FE0;03C5 0306;1FE0;03C5 0306;
+1FE1;1FE1;03C5 0304;1FE1;03C5 0304;
+1FE2;1FE2;03C5 0308 0300;1FE2;03C5 0308 0300;
+1FE3;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+1FE4;1FE4;03C1 0313;1FE4;03C1 0313;
+1FE5;1FE5;03C1 0314;1FE5;03C1 0314;
+1FE6;1FE6;03C5 0342;1FE6;03C5 0342;
+1FE7;1FE7;03C5 0308 0342;1FE7;03C5 0308 0342;
+1FE8;1FE8;03A5 0306;1FE8;03A5 0306;
+1FE9;1FE9;03A5 0304;1FE9;03A5 0304;
+1FEA;1FEA;03A5 0300;1FEA;03A5 0300;
+1FEB;038E;03A5 0301;038E;03A5 0301;
+1FEC;1FEC;03A1 0314;1FEC;03A1 0314;
+1FED;1FED;00A8 0300;0020 0308 0300;0020 0308 0300;
+1FEE;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+1FEF;0060;0060;0060;0060;
+1FF2;1FF2;03C9 0300 0345;1FF2;03C9 0300 0345;
+1FF3;1FF3;03C9 0345;1FF3;03C9 0345;
+1FF4;1FF4;03C9 0301 0345;1FF4;03C9 0301 0345;
+1FF6;1FF6;03C9 0342;1FF6;03C9 0342;
+1FF7;1FF7;03C9 0342 0345;1FF7;03C9 0342 0345;
+1FF8;1FF8;039F 0300;1FF8;039F 0300;
+1FF9;038C;039F 0301;038C;039F 0301;
+1FFA;1FFA;03A9 0300;1FFA;03A9 0300;
+1FFB;038F;03A9 0301;038F;03A9 0301;
+1FFC;1FFC;03A9 0345;1FFC;03A9 0345;
+1FFD;00B4;00B4;0020 0301;0020 0301;
+1FFE;1FFE;1FFE;0020 0314;0020 0314;
+2000;2002;2002;0020;0020;
+2001;2003;2003;0020;0020;
+2002;2002;2002;0020;0020;
+2003;2003;2003;0020;0020;
+2004;2004;2004;0020;0020;
+2005;2005;2005;0020;0020;
+2006;2006;2006;0020;0020;
+2007;2007;2007;0020;0020;
+2008;2008;2008;0020;0020;
+2009;2009;2009;0020;0020;
+200A;200A;200A;0020;0020;
+2011;2011;2011;2010;2010;
+2017;2017;2017;0020 0333;0020 0333;
+2024;2024;2024;002E;002E;
+2025;2025;2025;002E 002E;002E 002E;
+2026;2026;2026;002E 002E 002E;002E 002E 002E;
+202F;202F;202F;0020;0020;
+2033;2033;2033;2032 2032;2032 2032;
+2034;2034;2034;2032 2032 2032;2032 2032 2032;
+2036;2036;2036;2035 2035;2035 2035;
+2037;2037;2037;2035 2035 2035;2035 2035 2035;
+203C;203C;203C;0021 0021;0021 0021;
+203E;203E;203E;0020 0305;0020 0305;
+2047;2047;2047;003F 003F;003F 003F;
+2048;2048;2048;003F 0021;003F 0021;
+2049;2049;2049;0021 003F;0021 003F;
+2057;2057;2057;2032 2032 2032 2032;2032 2032 2032 2032;
+205F;205F;205F;0020;0020;
+2070;2070;2070;0030;0030;
+2071;2071;2071;0069;0069;
+2074;2074;2074;0034;0034;
+2075;2075;2075;0035;0035;
+2076;2076;2076;0036;0036;
+2077;2077;2077;0037;0037;
+2078;2078;2078;0038;0038;
+2079;2079;2079;0039;0039;
+207A;207A;207A;002B;002B;
+207B;207B;207B;2212;2212;
+207C;207C;207C;003D;003D;
+207D;207D;207D;0028;0028;
+207E;207E;207E;0029;0029;
+207F;207F;207F;006E;006E;
+2080;2080;2080;0030;0030;
+2081;2081;2081;0031;0031;
+2082;2082;2082;0032;0032;
+2083;2083;2083;0033;0033;
+2084;2084;2084;0034;0034;
+2085;2085;2085;0035;0035;
+2086;2086;2086;0036;0036;
+2087;2087;2087;0037;0037;
+2088;2088;2088;0038;0038;
+2089;2089;2089;0039;0039;
+208A;208A;208A;002B;002B;
+208B;208B;208B;2212;2212;
+208C;208C;208C;003D;003D;
+208D;208D;208D;0028;0028;
+208E;208E;208E;0029;0029;
+20A8;20A8;20A8;0052 0073;0052 0073;
+2100;2100;2100;0061 002F 0063;0061 002F 0063;
+2101;2101;2101;0061 002F 0073;0061 002F 0073;
+2102;2102;2102;0043;0043;
+2103;2103;2103;00B0 0043;00B0 0043;
+2105;2105;2105;0063 002F 006F;0063 002F 006F;
+2106;2106;2106;0063 002F 0075;0063 002F 0075;
+2107;2107;2107;0190;0190;
+2109;2109;2109;00B0 0046;00B0 0046;
+210A;210A;210A;0067;0067;
+210B;210B;210B;0048;0048;
+210C;210C;210C;0048;0048;
+210D;210D;210D;0048;0048;
+210E;210E;210E;0068;0068;
+210F;210F;210F;0127;0127;
+2110;2110;2110;0049;0049;
+2111;2111;2111;0049;0049;
+2112;2112;2112;004C;004C;
+2113;2113;2113;006C;006C;
+2115;2115;2115;004E;004E;
+2116;2116;2116;004E 006F;004E 006F;
+2119;2119;2119;0050;0050;
+211A;211A;211A;0051;0051;
+211B;211B;211B;0052;0052;
+211C;211C;211C;0052;0052;
+211D;211D;211D;0052;0052;
+2120;2120;2120;0053 004D;0053 004D;
+2121;2121;2121;0054 0045 004C;0054 0045 004C;
+2122;2122;2122;0054 004D;0054 004D;
+2124;2124;2124;005A;005A;
+2126;03A9;03A9;03A9;03A9;
+2128;2128;2128;005A;005A;
+212A;004B;004B;004B;004B;
+212B;00C5;0041 030A;00C5;0041 030A;
+212C;212C;212C;0042;0042;
+212D;212D;212D;0043;0043;
+212F;212F;212F;0065;0065;
+2130;2130;2130;0045;0045;
+2131;2131;2131;0046;0046;
+2133;2133;2133;004D;004D;
+2134;2134;2134;006F;006F;
+2135;2135;2135;05D0;05D0;
+2136;2136;2136;05D1;05D1;
+2137;2137;2137;05D2;05D2;
+2138;2138;2138;05D3;05D3;
+2139;2139;2139;0069;0069;
+213D;213D;213D;03B3;03B3;
+213E;213E;213E;0393;0393;
+213F;213F;213F;03A0;03A0;
+2140;2140;2140;2211;2211;
+2145;2145;2145;0044;0044;
+2146;2146;2146;0064;0064;
+2147;2147;2147;0065;0065;
+2148;2148;2148;0069;0069;
+2149;2149;2149;006A;006A;
+2153;2153;2153;0031 2044 0033;0031 2044 0033;
+2154;2154;2154;0032 2044 0033;0032 2044 0033;
+2155;2155;2155;0031 2044 0035;0031 2044 0035;
+2156;2156;2156;0032 2044 0035;0032 2044 0035;
+2157;2157;2157;0033 2044 0035;0033 2044 0035;
+2158;2158;2158;0034 2044 0035;0034 2044 0035;
+2159;2159;2159;0031 2044 0036;0031 2044 0036;
+215A;215A;215A;0035 2044 0036;0035 2044 0036;
+215B;215B;215B;0031 2044 0038;0031 2044 0038;
+215C;215C;215C;0033 2044 0038;0033 2044 0038;
+215D;215D;215D;0035 2044 0038;0035 2044 0038;
+215E;215E;215E;0037 2044 0038;0037 2044 0038;
+215F;215F;215F;0031 2044;0031 2044;
+2160;2160;2160;0049;0049;
+2161;2161;2161;0049 0049;0049 0049;
+2162;2162;2162;0049 0049 0049;0049 0049 0049;
+2163;2163;2163;0049 0056;0049 0056;
+2164;2164;2164;0056;0056;
+2165;2165;2165;0056 0049;0056 0049;
+2166;2166;2166;0056 0049 0049;0056 0049 0049;
+2167;2167;2167;0056 0049 0049 0049;0056 0049 0049 0049;
+2168;2168;2168;0049 0058;0049 0058;
+2169;2169;2169;0058;0058;
+216A;216A;216A;0058 0049;0058 0049;
+216B;216B;216B;0058 0049 0049;0058 0049 0049;
+216C;216C;216C;004C;004C;
+216D;216D;216D;0043;0043;
+216E;216E;216E;0044;0044;
+216F;216F;216F;004D;004D;
+2170;2170;2170;0069;0069;
+2171;2171;2171;0069 0069;0069 0069;
+2172;2172;2172;0069 0069 0069;0069 0069 0069;
+2173;2173;2173;0069 0076;0069 0076;
+2174;2174;2174;0076;0076;
+2175;2175;2175;0076 0069;0076 0069;
+2176;2176;2176;0076 0069 0069;0076 0069 0069;
+2177;2177;2177;0076 0069 0069 0069;0076 0069 0069 0069;
+2178;2178;2178;0069 0078;0069 0078;
+2179;2179;2179;0078;0078;
+217A;217A;217A;0078 0069;0078 0069;
+217B;217B;217B;0078 0069 0069;0078 0069 0069;
+217C;217C;217C;006C;006C;
+217D;217D;217D;0063;0063;
+217E;217E;217E;0064;0064;
+217F;217F;217F;006D;006D;
+219A;219A;2190 0338;219A;2190 0338;
+219B;219B;2192 0338;219B;2192 0338;
+21AE;21AE;2194 0338;21AE;2194 0338;
+21CD;21CD;21D0 0338;21CD;21D0 0338;
+21CE;21CE;21D4 0338;21CE;21D4 0338;
+21CF;21CF;21D2 0338;21CF;21D2 0338;
+2204;2204;2203 0338;2204;2203 0338;
+2209;2209;2208 0338;2209;2208 0338;
+220C;220C;220B 0338;220C;220B 0338;
+2224;2224;2223 0338;2224;2223 0338;
+2226;2226;2225 0338;2226;2225 0338;
+222C;222C;222C;222B 222B;222B 222B;
+222D;222D;222D;222B 222B 222B;222B 222B 222B;
+222F;222F;222F;222E 222E;222E 222E;
+2230;2230;2230;222E 222E 222E;222E 222E 222E;
+2241;2241;223C 0338;2241;223C 0338;
+2244;2244;2243 0338;2244;2243 0338;
+2247;2247;2245 0338;2247;2245 0338;
+2249;2249;2248 0338;2249;2248 0338;
+2260;2260;003D 0338;2260;003D 0338;
+2262;2262;2261 0338;2262;2261 0338;
+226D;226D;224D 0338;226D;224D 0338;
+226E;226E;003C 0338;226E;003C 0338;
+226F;226F;003E 0338;226F;003E 0338;
+2270;2270;2264 0338;2270;2264 0338;
+2271;2271;2265 0338;2271;2265 0338;
+2274;2274;2272 0338;2274;2272 0338;
+2275;2275;2273 0338;2275;2273 0338;
+2278;2278;2276 0338;2278;2276 0338;
+2279;2279;2277 0338;2279;2277 0338;
+2280;2280;227A 0338;2280;227A 0338;
+2281;2281;227B 0338;2281;227B 0338;
+2284;2284;2282 0338;2284;2282 0338;
+2285;2285;2283 0338;2285;2283 0338;
+2288;2288;2286 0338;2288;2286 0338;
+2289;2289;2287 0338;2289;2287 0338;
+22AC;22AC;22A2 0338;22AC;22A2 0338;
+22AD;22AD;22A8 0338;22AD;22A8 0338;
+22AE;22AE;22A9 0338;22AE;22A9 0338;
+22AF;22AF;22AB 0338;22AF;22AB 0338;
+22E0;22E0;227C 0338;22E0;227C 0338;
+22E1;22E1;227D 0338;22E1;227D 0338;
+22E2;22E2;2291 0338;22E2;2291 0338;
+22E3;22E3;2292 0338;22E3;2292 0338;
+22EA;22EA;22B2 0338;22EA;22B2 0338;
+22EB;22EB;22B3 0338;22EB;22B3 0338;
+22EC;22EC;22B4 0338;22EC;22B4 0338;
+22ED;22ED;22B5 0338;22ED;22B5 0338;
+2329;3008;3008;3008;3008;
+232A;3009;3009;3009;3009;
+2460;2460;2460;0031;0031;
+2461;2461;2461;0032;0032;
+2462;2462;2462;0033;0033;
+2463;2463;2463;0034;0034;
+2464;2464;2464;0035;0035;
+2465;2465;2465;0036;0036;
+2466;2466;2466;0037;0037;
+2467;2467;2467;0038;0038;
+2468;2468;2468;0039;0039;
+2469;2469;2469;0031 0030;0031 0030;
+246A;246A;246A;0031 0031;0031 0031;
+246B;246B;246B;0031 0032;0031 0032;
+246C;246C;246C;0031 0033;0031 0033;
+246D;246D;246D;0031 0034;0031 0034;
+246E;246E;246E;0031 0035;0031 0035;
+246F;246F;246F;0031 0036;0031 0036;
+2470;2470;2470;0031 0037;0031 0037;
+2471;2471;2471;0031 0038;0031 0038;
+2472;2472;2472;0031 0039;0031 0039;
+2473;2473;2473;0032 0030;0032 0030;
+2474;2474;2474;0028 0031 0029;0028 0031 0029;
+2475;2475;2475;0028 0032 0029;0028 0032 0029;
+2476;2476;2476;0028 0033 0029;0028 0033 0029;
+2477;2477;2477;0028 0034 0029;0028 0034 0029;
+2478;2478;2478;0028 0035 0029;0028 0035 0029;
+2479;2479;2479;0028 0036 0029;0028 0036 0029;
+247A;247A;247A;0028 0037 0029;0028 0037 0029;
+247B;247B;247B;0028 0038 0029;0028 0038 0029;
+247C;247C;247C;0028 0039 0029;0028 0039 0029;
+247D;247D;247D;0028 0031 0030 0029;0028 0031 0030 0029;
+247E;247E;247E;0028 0031 0031 0029;0028 0031 0031 0029;
+247F;247F;247F;0028 0031 0032 0029;0028 0031 0032 0029;
+2480;2480;2480;0028 0031 0033 0029;0028 0031 0033 0029;
+2481;2481;2481;0028 0031 0034 0029;0028 0031 0034 0029;
+2482;2482;2482;0028 0031 0035 0029;0028 0031 0035 0029;
+2483;2483;2483;0028 0031 0036 0029;0028 0031 0036 0029;
+2484;2484;2484;0028 0031 0037 0029;0028 0031 0037 0029;
+2485;2485;2485;0028 0031 0038 0029;0028 0031 0038 0029;
+2486;2486;2486;0028 0031 0039 0029;0028 0031 0039 0029;
+2487;2487;2487;0028 0032 0030 0029;0028 0032 0030 0029;
+2488;2488;2488;0031 002E;0031 002E;
+2489;2489;2489;0032 002E;0032 002E;
+248A;248A;248A;0033 002E;0033 002E;
+248B;248B;248B;0034 002E;0034 002E;
+248C;248C;248C;0035 002E;0035 002E;
+248D;248D;248D;0036 002E;0036 002E;
+248E;248E;248E;0037 002E;0037 002E;
+248F;248F;248F;0038 002E;0038 002E;
+2490;2490;2490;0039 002E;0039 002E;
+2491;2491;2491;0031 0030 002E;0031 0030 002E;
+2492;2492;2492;0031 0031 002E;0031 0031 002E;
+2493;2493;2493;0031 0032 002E;0031 0032 002E;
+2494;2494;2494;0031 0033 002E;0031 0033 002E;
+2495;2495;2495;0031 0034 002E;0031 0034 002E;
+2496;2496;2496;0031 0035 002E;0031 0035 002E;
+2497;2497;2497;0031 0036 002E;0031 0036 002E;
+2498;2498;2498;0031 0037 002E;0031 0037 002E;
+2499;2499;2499;0031 0038 002E;0031 0038 002E;
+249A;249A;249A;0031 0039 002E;0031 0039 002E;
+249B;249B;249B;0032 0030 002E;0032 0030 002E;
+249C;249C;249C;0028 0061 0029;0028 0061 0029;
+249D;249D;249D;0028 0062 0029;0028 0062 0029;
+249E;249E;249E;0028 0063 0029;0028 0063 0029;
+249F;249F;249F;0028 0064 0029;0028 0064 0029;
+24A0;24A0;24A0;0028 0065 0029;0028 0065 0029;
+24A1;24A1;24A1;0028 0066 0029;0028 0066 0029;
+24A2;24A2;24A2;0028 0067 0029;0028 0067 0029;
+24A3;24A3;24A3;0028 0068 0029;0028 0068 0029;
+24A4;24A4;24A4;0028 0069 0029;0028 0069 0029;
+24A5;24A5;24A5;0028 006A 0029;0028 006A 0029;
+24A6;24A6;24A6;0028 006B 0029;0028 006B 0029;
+24A7;24A7;24A7;0028 006C 0029;0028 006C 0029;
+24A8;24A8;24A8;0028 006D 0029;0028 006D 0029;
+24A9;24A9;24A9;0028 006E 0029;0028 006E 0029;
+24AA;24AA;24AA;0028 006F 0029;0028 006F 0029;
+24AB;24AB;24AB;0028 0070 0029;0028 0070 0029;
+24AC;24AC;24AC;0028 0071 0029;0028 0071 0029;
+24AD;24AD;24AD;0028 0072 0029;0028 0072 0029;
+24AE;24AE;24AE;0028 0073 0029;0028 0073 0029;
+24AF;24AF;24AF;0028 0074 0029;0028 0074 0029;
+24B0;24B0;24B0;0028 0075 0029;0028 0075 0029;
+24B1;24B1;24B1;0028 0076 0029;0028 0076 0029;
+24B2;24B2;24B2;0028 0077 0029;0028 0077 0029;
+24B3;24B3;24B3;0028 0078 0029;0028 0078 0029;
+24B4;24B4;24B4;0028 0079 0029;0028 0079 0029;
+24B5;24B5;24B5;0028 007A 0029;0028 007A 0029;
+24B6;24B6;24B6;0041;0041;
+24B7;24B7;24B7;0042;0042;
+24B8;24B8;24B8;0043;0043;
+24B9;24B9;24B9;0044;0044;
+24BA;24BA;24BA;0045;0045;
+24BB;24BB;24BB;0046;0046;
+24BC;24BC;24BC;0047;0047;
+24BD;24BD;24BD;0048;0048;
+24BE;24BE;24BE;0049;0049;
+24BF;24BF;24BF;004A;004A;
+24C0;24C0;24C0;004B;004B;
+24C1;24C1;24C1;004C;004C;
+24C2;24C2;24C2;004D;004D;
+24C3;24C3;24C3;004E;004E;
+24C4;24C4;24C4;004F;004F;
+24C5;24C5;24C5;0050;0050;
+24C6;24C6;24C6;0051;0051;
+24C7;24C7;24C7;0052;0052;
+24C8;24C8;24C8;0053;0053;
+24C9;24C9;24C9;0054;0054;
+24CA;24CA;24CA;0055;0055;
+24CB;24CB;24CB;0056;0056;
+24CC;24CC;24CC;0057;0057;
+24CD;24CD;24CD;0058;0058;
+24CE;24CE;24CE;0059;0059;
+24CF;24CF;24CF;005A;005A;
+24D0;24D0;24D0;0061;0061;
+24D1;24D1;24D1;0062;0062;
+24D2;24D2;24D2;0063;0063;
+24D3;24D3;24D3;0064;0064;
+24D4;24D4;24D4;0065;0065;
+24D5;24D5;24D5;0066;0066;
+24D6;24D6;24D6;0067;0067;
+24D7;24D7;24D7;0068;0068;
+24D8;24D8;24D8;0069;0069;
+24D9;24D9;24D9;006A;006A;
+24DA;24DA;24DA;006B;006B;
+24DB;24DB;24DB;006C;006C;
+24DC;24DC;24DC;006D;006D;
+24DD;24DD;24DD;006E;006E;
+24DE;24DE;24DE;006F;006F;
+24DF;24DF;24DF;0070;0070;
+24E0;24E0;24E0;0071;0071;
+24E1;24E1;24E1;0072;0072;
+24E2;24E2;24E2;0073;0073;
+24E3;24E3;24E3;0074;0074;
+24E4;24E4;24E4;0075;0075;
+24E5;24E5;24E5;0076;0076;
+24E6;24E6;24E6;0077;0077;
+24E7;24E7;24E7;0078;0078;
+24E8;24E8;24E8;0079;0079;
+24E9;24E9;24E9;007A;007A;
+24EA;24EA;24EA;0030;0030;
+2A0C;2A0C;2A0C;222B 222B 222B 222B;222B 222B 222B 222B;
+2A74;2A74;2A74;003A 003A 003D;003A 003A 003D;
+2A75;2A75;2A75;003D 003D;003D 003D;
+2A76;2A76;2A76;003D 003D 003D;003D 003D 003D;
+2ADC;2ADD 0338;2ADD 0338;2ADD 0338;2ADD 0338;
+2E9F;2E9F;2E9F;6BCD;6BCD;
+2EF3;2EF3;2EF3;9F9F;9F9F;
+2F00;2F00;2F00;4E00;4E00;
+2F01;2F01;2F01;4E28;4E28;
+2F02;2F02;2F02;4E36;4E36;
+2F03;2F03;2F03;4E3F;4E3F;
+2F04;2F04;2F04;4E59;4E59;
+2F05;2F05;2F05;4E85;4E85;
+2F06;2F06;2F06;4E8C;4E8C;
+2F07;2F07;2F07;4EA0;4EA0;
+2F08;2F08;2F08;4EBA;4EBA;
+2F09;2F09;2F09;513F;513F;
+2F0A;2F0A;2F0A;5165;5165;
+2F0B;2F0B;2F0B;516B;516B;
+2F0C;2F0C;2F0C;5182;5182;
+2F0D;2F0D;2F0D;5196;5196;
+2F0E;2F0E;2F0E;51AB;51AB;
+2F0F;2F0F;2F0F;51E0;51E0;
+2F10;2F10;2F10;51F5;51F5;
+2F11;2F11;2F11;5200;5200;
+2F12;2F12;2F12;529B;529B;
+2F13;2F13;2F13;52F9;52F9;
+2F14;2F14;2F14;5315;5315;
+2F15;2F15;2F15;531A;531A;
+2F16;2F16;2F16;5338;5338;
+2F17;2F17;2F17;5341;5341;
+2F18;2F18;2F18;535C;535C;
+2F19;2F19;2F19;5369;5369;
+2F1A;2F1A;2F1A;5382;5382;
+2F1B;2F1B;2F1B;53B6;53B6;
+2F1C;2F1C;2F1C;53C8;53C8;
+2F1D;2F1D;2F1D;53E3;53E3;
+2F1E;2F1E;2F1E;56D7;56D7;
+2F1F;2F1F;2F1F;571F;571F;
+2F20;2F20;2F20;58EB;58EB;
+2F21;2F21;2F21;5902;5902;
+2F22;2F22;2F22;590A;590A;
+2F23;2F23;2F23;5915;5915;
+2F24;2F24;2F24;5927;5927;
+2F25;2F25;2F25;5973;5973;
+2F26;2F26;2F26;5B50;5B50;
+2F27;2F27;2F27;5B80;5B80;
+2F28;2F28;2F28;5BF8;5BF8;
+2F29;2F29;2F29;5C0F;5C0F;
+2F2A;2F2A;2F2A;5C22;5C22;
+2F2B;2F2B;2F2B;5C38;5C38;
+2F2C;2F2C;2F2C;5C6E;5C6E;
+2F2D;2F2D;2F2D;5C71;5C71;
+2F2E;2F2E;2F2E;5DDB;5DDB;
+2F2F;2F2F;2F2F;5DE5;5DE5;
+2F30;2F30;2F30;5DF1;5DF1;
+2F31;2F31;2F31;5DFE;5DFE;
+2F32;2F32;2F32;5E72;5E72;
+2F33;2F33;2F33;5E7A;5E7A;
+2F34;2F34;2F34;5E7F;5E7F;
+2F35;2F35;2F35;5EF4;5EF4;
+2F36;2F36;2F36;5EFE;5EFE;
+2F37;2F37;2F37;5F0B;5F0B;
+2F38;2F38;2F38;5F13;5F13;
+2F39;2F39;2F39;5F50;5F50;
+2F3A;2F3A;2F3A;5F61;5F61;
+2F3B;2F3B;2F3B;5F73;5F73;
+2F3C;2F3C;2F3C;5FC3;5FC3;
+2F3D;2F3D;2F3D;6208;6208;
+2F3E;2F3E;2F3E;6236;6236;
+2F3F;2F3F;2F3F;624B;624B;
+2F40;2F40;2F40;652F;652F;
+2F41;2F41;2F41;6534;6534;
+2F42;2F42;2F42;6587;6587;
+2F43;2F43;2F43;6597;6597;
+2F44;2F44;2F44;65A4;65A4;
+2F45;2F45;2F45;65B9;65B9;
+2F46;2F46;2F46;65E0;65E0;
+2F47;2F47;2F47;65E5;65E5;
+2F48;2F48;2F48;66F0;66F0;
+2F49;2F49;2F49;6708;6708;
+2F4A;2F4A;2F4A;6728;6728;
+2F4B;2F4B;2F4B;6B20;6B20;
+2F4C;2F4C;2F4C;6B62;6B62;
+2F4D;2F4D;2F4D;6B79;6B79;
+2F4E;2F4E;2F4E;6BB3;6BB3;
+2F4F;2F4F;2F4F;6BCB;6BCB;
+2F50;2F50;2F50;6BD4;6BD4;
+2F51;2F51;2F51;6BDB;6BDB;
+2F52;2F52;2F52;6C0F;6C0F;
+2F53;2F53;2F53;6C14;6C14;
+2F54;2F54;2F54;6C34;6C34;
+2F55;2F55;2F55;706B;706B;
+2F56;2F56;2F56;722A;722A;
+2F57;2F57;2F57;7236;7236;
+2F58;2F58;2F58;723B;723B;
+2F59;2F59;2F59;723F;723F;
+2F5A;2F5A;2F5A;7247;7247;
+2F5B;2F5B;2F5B;7259;7259;
+2F5C;2F5C;2F5C;725B;725B;
+2F5D;2F5D;2F5D;72AC;72AC;
+2F5E;2F5E;2F5E;7384;7384;
+2F5F;2F5F;2F5F;7389;7389;
+2F60;2F60;2F60;74DC;74DC;
+2F61;2F61;2F61;74E6;74E6;
+2F62;2F62;2F62;7518;7518;
+2F63;2F63;2F63;751F;751F;
+2F64;2F64;2F64;7528;7528;
+2F65;2F65;2F65;7530;7530;
+2F66;2F66;2F66;758B;758B;
+2F67;2F67;2F67;7592;7592;
+2F68;2F68;2F68;7676;7676;
+2F69;2F69;2F69;767D;767D;
+2F6A;2F6A;2F6A;76AE;76AE;
+2F6B;2F6B;2F6B;76BF;76BF;
+2F6C;2F6C;2F6C;76EE;76EE;
+2F6D;2F6D;2F6D;77DB;77DB;
+2F6E;2F6E;2F6E;77E2;77E2;
+2F6F;2F6F;2F6F;77F3;77F3;
+2F70;2F70;2F70;793A;793A;
+2F71;2F71;2F71;79B8;79B8;
+2F72;2F72;2F72;79BE;79BE;
+2F73;2F73;2F73;7A74;7A74;
+2F74;2F74;2F74;7ACB;7ACB;
+2F75;2F75;2F75;7AF9;7AF9;
+2F76;2F76;2F76;7C73;7C73;
+2F77;2F77;2F77;7CF8;7CF8;
+2F78;2F78;2F78;7F36;7F36;
+2F79;2F79;2F79;7F51;7F51;
+2F7A;2F7A;2F7A;7F8A;7F8A;
+2F7B;2F7B;2F7B;7FBD;7FBD;
+2F7C;2F7C;2F7C;8001;8001;
+2F7D;2F7D;2F7D;800C;800C;
+2F7E;2F7E;2F7E;8012;8012;
+2F7F;2F7F;2F7F;8033;8033;
+2F80;2F80;2F80;807F;807F;
+2F81;2F81;2F81;8089;8089;
+2F82;2F82;2F82;81E3;81E3;
+2F83;2F83;2F83;81EA;81EA;
+2F84;2F84;2F84;81F3;81F3;
+2F85;2F85;2F85;81FC;81FC;
+2F86;2F86;2F86;820C;820C;
+2F87;2F87;2F87;821B;821B;
+2F88;2F88;2F88;821F;821F;
+2F89;2F89;2F89;826E;826E;
+2F8A;2F8A;2F8A;8272;8272;
+2F8B;2F8B;2F8B;8278;8278;
+2F8C;2F8C;2F8C;864D;864D;
+2F8D;2F8D;2F8D;866B;866B;
+2F8E;2F8E;2F8E;8840;8840;
+2F8F;2F8F;2F8F;884C;884C;
+2F90;2F90;2F90;8863;8863;
+2F91;2F91;2F91;897E;897E;
+2F92;2F92;2F92;898B;898B;
+2F93;2F93;2F93;89D2;89D2;
+2F94;2F94;2F94;8A00;8A00;
+2F95;2F95;2F95;8C37;8C37;
+2F96;2F96;2F96;8C46;8C46;
+2F97;2F97;2F97;8C55;8C55;
+2F98;2F98;2F98;8C78;8C78;
+2F99;2F99;2F99;8C9D;8C9D;
+2F9A;2F9A;2F9A;8D64;8D64;
+2F9B;2F9B;2F9B;8D70;8D70;
+2F9C;2F9C;2F9C;8DB3;8DB3;
+2F9D;2F9D;2F9D;8EAB;8EAB;
+2F9E;2F9E;2F9E;8ECA;8ECA;
+2F9F;2F9F;2F9F;8F9B;8F9B;
+2FA0;2FA0;2FA0;8FB0;8FB0;
+2FA1;2FA1;2FA1;8FB5;8FB5;
+2FA2;2FA2;2FA2;9091;9091;
+2FA3;2FA3;2FA3;9149;9149;
+2FA4;2FA4;2FA4;91C6;91C6;
+2FA5;2FA5;2FA5;91CC;91CC;
+2FA6;2FA6;2FA6;91D1;91D1;
+2FA7;2FA7;2FA7;9577;9577;
+2FA8;2FA8;2FA8;9580;9580;
+2FA9;2FA9;2FA9;961C;961C;
+2FAA;2FAA;2FAA;96B6;96B6;
+2FAB;2FAB;2FAB;96B9;96B9;
+2FAC;2FAC;2FAC;96E8;96E8;
+2FAD;2FAD;2FAD;9751;9751;
+2FAE;2FAE;2FAE;975E;975E;
+2FAF;2FAF;2FAF;9762;9762;
+2FB0;2FB0;2FB0;9769;9769;
+2FB1;2FB1;2FB1;97CB;97CB;
+2FB2;2FB2;2FB2;97ED;97ED;
+2FB3;2FB3;2FB3;97F3;97F3;
+2FB4;2FB4;2FB4;9801;9801;
+2FB5;2FB5;2FB5;98A8;98A8;
+2FB6;2FB6;2FB6;98DB;98DB;
+2FB7;2FB7;2FB7;98DF;98DF;
+2FB8;2FB8;2FB8;9996;9996;
+2FB9;2FB9;2FB9;9999;9999;
+2FBA;2FBA;2FBA;99AC;99AC;
+2FBB;2FBB;2FBB;9AA8;9AA8;
+2FBC;2FBC;2FBC;9AD8;9AD8;
+2FBD;2FBD;2FBD;9ADF;9ADF;
+2FBE;2FBE;2FBE;9B25;9B25;
+2FBF;2FBF;2FBF;9B2F;9B2F;
+2FC0;2FC0;2FC0;9B32;9B32;
+2FC1;2FC1;2FC1;9B3C;9B3C;
+2FC2;2FC2;2FC2;9B5A;9B5A;
+2FC3;2FC3;2FC3;9CE5;9CE5;
+2FC4;2FC4;2FC4;9E75;9E75;
+2FC5;2FC5;2FC5;9E7F;9E7F;
+2FC6;2FC6;2FC6;9EA5;9EA5;
+2FC7;2FC7;2FC7;9EBB;9EBB;
+2FC8;2FC8;2FC8;9EC3;9EC3;
+2FC9;2FC9;2FC9;9ECD;9ECD;
+2FCA;2FCA;2FCA;9ED1;9ED1;
+2FCB;2FCB;2FCB;9EF9;9EF9;
+2FCC;2FCC;2FCC;9EFD;9EFD;
+2FCD;2FCD;2FCD;9F0E;9F0E;
+2FCE;2FCE;2FCE;9F13;9F13;
+2FCF;2FCF;2FCF;9F20;9F20;
+2FD0;2FD0;2FD0;9F3B;9F3B;
+2FD1;2FD1;2FD1;9F4A;9F4A;
+2FD2;2FD2;2FD2;9F52;9F52;
+2FD3;2FD3;2FD3;9F8D;9F8D;
+2FD4;2FD4;2FD4;9F9C;9F9C;
+2FD5;2FD5;2FD5;9FA0;9FA0;
+3000;3000;3000;0020;0020;
+3036;3036;3036;3012;3012;
+3038;3038;3038;5341;5341;
+3039;3039;3039;5344;5344;
+303A;303A;303A;5345;5345;
+304C;304C;304B 3099;304C;304B 3099;
+304E;304E;304D 3099;304E;304D 3099;
+3050;3050;304F 3099;3050;304F 3099;
+3052;3052;3051 3099;3052;3051 3099;
+3054;3054;3053 3099;3054;3053 3099;
+3056;3056;3055 3099;3056;3055 3099;
+3058;3058;3057 3099;3058;3057 3099;
+305A;305A;3059 3099;305A;3059 3099;
+305C;305C;305B 3099;305C;305B 3099;
+305E;305E;305D 3099;305E;305D 3099;
+3060;3060;305F 3099;3060;305F 3099;
+3062;3062;3061 3099;3062;3061 3099;
+3065;3065;3064 3099;3065;3064 3099;
+3067;3067;3066 3099;3067;3066 3099;
+3069;3069;3068 3099;3069;3068 3099;
+3070;3070;306F 3099;3070;306F 3099;
+3071;3071;306F 309A;3071;306F 309A;
+3073;3073;3072 3099;3073;3072 3099;
+3074;3074;3072 309A;3074;3072 309A;
+3076;3076;3075 3099;3076;3075 3099;
+3077;3077;3075 309A;3077;3075 309A;
+3079;3079;3078 3099;3079;3078 3099;
+307A;307A;3078 309A;307A;3078 309A;
+307C;307C;307B 3099;307C;307B 3099;
+307D;307D;307B 309A;307D;307B 309A;
+3094;3094;3046 3099;3094;3046 3099;
+309B;309B;309B;0020 3099;0020 3099;
+309C;309C;309C;0020 309A;0020 309A;
+309E;309E;309D 3099;309E;309D 3099;
+309F;309F;309F;3088 308A;3088 308A;
+30AC;30AC;30AB 3099;30AC;30AB 3099;
+30AE;30AE;30AD 3099;30AE;30AD 3099;
+30B0;30B0;30AF 3099;30B0;30AF 3099;
+30B2;30B2;30B1 3099;30B2;30B1 3099;
+30B4;30B4;30B3 3099;30B4;30B3 3099;
+30B6;30B6;30B5 3099;30B6;30B5 3099;
+30B8;30B8;30B7 3099;30B8;30B7 3099;
+30BA;30BA;30B9 3099;30BA;30B9 3099;
+30BC;30BC;30BB 3099;30BC;30BB 3099;
+30BE;30BE;30BD 3099;30BE;30BD 3099;
+30C0;30C0;30BF 3099;30C0;30BF 3099;
+30C2;30C2;30C1 3099;30C2;30C1 3099;
+30C5;30C5;30C4 3099;30C5;30C4 3099;
+30C7;30C7;30C6 3099;30C7;30C6 3099;
+30C9;30C9;30C8 3099;30C9;30C8 3099;
+30D0;30D0;30CF 3099;30D0;30CF 3099;
+30D1;30D1;30CF 309A;30D1;30CF 309A;
+30D3;30D3;30D2 3099;30D3;30D2 3099;
+30D4;30D4;30D2 309A;30D4;30D2 309A;
+30D6;30D6;30D5 3099;30D6;30D5 3099;
+30D7;30D7;30D5 309A;30D7;30D5 309A;
+30D9;30D9;30D8 3099;30D9;30D8 3099;
+30DA;30DA;30D8 309A;30DA;30D8 309A;
+30DC;30DC;30DB 3099;30DC;30DB 3099;
+30DD;30DD;30DB 309A;30DD;30DB 309A;
+30F4;30F4;30A6 3099;30F4;30A6 3099;
+30F7;30F7;30EF 3099;30F7;30EF 3099;
+30F8;30F8;30F0 3099;30F8;30F0 3099;
+30F9;30F9;30F1 3099;30F9;30F1 3099;
+30FA;30FA;30F2 3099;30FA;30F2 3099;
+30FE;30FE;30FD 3099;30FE;30FD 3099;
+30FF;30FF;30FF;30B3 30C8;30B3 30C8;
+3131;3131;3131;1100;1100;
+3132;3132;3132;1101;1101;
+3133;3133;3133;11AA;11AA;
+3134;3134;3134;1102;1102;
+3135;3135;3135;11AC;11AC;
+3136;3136;3136;11AD;11AD;
+3137;3137;3137;1103;1103;
+3138;3138;3138;1104;1104;
+3139;3139;3139;1105;1105;
+313A;313A;313A;11B0;11B0;
+313B;313B;313B;11B1;11B1;
+313C;313C;313C;11B2;11B2;
+313D;313D;313D;11B3;11B3;
+313E;313E;313E;11B4;11B4;
+313F;313F;313F;11B5;11B5;
+3140;3140;3140;111A;111A;
+3141;3141;3141;1106;1106;
+3142;3142;3142;1107;1107;
+3143;3143;3143;1108;1108;
+3144;3144;3144;1121;1121;
+3145;3145;3145;1109;1109;
+3146;3146;3146;110A;110A;
+3147;3147;3147;110B;110B;
+3148;3148;3148;110C;110C;
+3149;3149;3149;110D;110D;
+314A;314A;314A;110E;110E;
+314B;314B;314B;110F;110F;
+314C;314C;314C;1110;1110;
+314D;314D;314D;1111;1111;
+314E;314E;314E;1112;1112;
+314F;314F;314F;1161;1161;
+3150;3150;3150;1162;1162;
+3151;3151;3151;1163;1163;
+3152;3152;3152;1164;1164;
+3153;3153;3153;1165;1165;
+3154;3154;3154;1166;1166;
+3155;3155;3155;1167;1167;
+3156;3156;3156;1168;1168;
+3157;3157;3157;1169;1169;
+3158;3158;3158;116A;116A;
+3159;3159;3159;116B;116B;
+315A;315A;315A;116C;116C;
+315B;315B;315B;116D;116D;
+315C;315C;315C;116E;116E;
+315D;315D;315D;116F;116F;
+315E;315E;315E;1170;1170;
+315F;315F;315F;1171;1171;
+3160;3160;3160;1172;1172;
+3161;3161;3161;1173;1173;
+3162;3162;3162;1174;1174;
+3163;3163;3163;1175;1175;
+3164;3164;3164;1160;1160;
+3165;3165;3165;1114;1114;
+3166;3166;3166;1115;1115;
+3167;3167;3167;11C7;11C7;
+3168;3168;3168;11C8;11C8;
+3169;3169;3169;11CC;11CC;
+316A;316A;316A;11CE;11CE;
+316B;316B;316B;11D3;11D3;
+316C;316C;316C;11D7;11D7;
+316D;316D;316D;11D9;11D9;
+316E;316E;316E;111C;111C;
+316F;316F;316F;11DD;11DD;
+3170;3170;3170;11DF;11DF;
+3171;3171;3171;111D;111D;
+3172;3172;3172;111E;111E;
+3173;3173;3173;1120;1120;
+3174;3174;3174;1122;1122;
+3175;3175;3175;1123;1123;
+3176;3176;3176;1127;1127;
+3177;3177;3177;1129;1129;
+3178;3178;3178;112B;112B;
+3179;3179;3179;112C;112C;
+317A;317A;317A;112D;112D;
+317B;317B;317B;112E;112E;
+317C;317C;317C;112F;112F;
+317D;317D;317D;1132;1132;
+317E;317E;317E;1136;1136;
+317F;317F;317F;1140;1140;
+3180;3180;3180;1147;1147;
+3181;3181;3181;114C;114C;
+3182;3182;3182;11F1;11F1;
+3183;3183;3183;11F2;11F2;
+3184;3184;3184;1157;1157;
+3185;3185;3185;1158;1158;
+3186;3186;3186;1159;1159;
+3187;3187;3187;1184;1184;
+3188;3188;3188;1185;1185;
+3189;3189;3189;1188;1188;
+318A;318A;318A;1191;1191;
+318B;318B;318B;1192;1192;
+318C;318C;318C;1194;1194;
+318D;318D;318D;119E;119E;
+318E;318E;318E;11A1;11A1;
+3192;3192;3192;4E00;4E00;
+3193;3193;3193;4E8C;4E8C;
+3194;3194;3194;4E09;4E09;
+3195;3195;3195;56DB;56DB;
+3196;3196;3196;4E0A;4E0A;
+3197;3197;3197;4E2D;4E2D;
+3198;3198;3198;4E0B;4E0B;
+3199;3199;3199;7532;7532;
+319A;319A;319A;4E59;4E59;
+319B;319B;319B;4E19;4E19;
+319C;319C;319C;4E01;4E01;
+319D;319D;319D;5929;5929;
+319E;319E;319E;5730;5730;
+319F;319F;319F;4EBA;4EBA;
+3200;3200;3200;0028 1100 0029;0028 1100 0029;
+3201;3201;3201;0028 1102 0029;0028 1102 0029;
+3202;3202;3202;0028 1103 0029;0028 1103 0029;
+3203;3203;3203;0028 1105 0029;0028 1105 0029;
+3204;3204;3204;0028 1106 0029;0028 1106 0029;
+3205;3205;3205;0028 1107 0029;0028 1107 0029;
+3206;3206;3206;0028 1109 0029;0028 1109 0029;
+3207;3207;3207;0028 110B 0029;0028 110B 0029;
+3208;3208;3208;0028 110C 0029;0028 110C 0029;
+3209;3209;3209;0028 110E 0029;0028 110E 0029;
+320A;320A;320A;0028 110F 0029;0028 110F 0029;
+320B;320B;320B;0028 1110 0029;0028 1110 0029;
+320C;320C;320C;0028 1111 0029;0028 1111 0029;
+320D;320D;320D;0028 1112 0029;0028 1112 0029;
+320E;320E;320E;0028 AC00 0029;0028 1100 1161 0029;
+320F;320F;320F;0028 B098 0029;0028 1102 1161 0029;
+3210;3210;3210;0028 B2E4 0029;0028 1103 1161 0029;
+3211;3211;3211;0028 B77C 0029;0028 1105 1161 0029;
+3212;3212;3212;0028 B9C8 0029;0028 1106 1161 0029;
+3213;3213;3213;0028 BC14 0029;0028 1107 1161 0029;
+3214;3214;3214;0028 C0AC 0029;0028 1109 1161 0029;
+3215;3215;3215;0028 C544 0029;0028 110B 1161 0029;
+3216;3216;3216;0028 C790 0029;0028 110C 1161 0029;
+3217;3217;3217;0028 CC28 0029;0028 110E 1161 0029;
+3218;3218;3218;0028 CE74 0029;0028 110F 1161 0029;
+3219;3219;3219;0028 D0C0 0029;0028 1110 1161 0029;
+321A;321A;321A;0028 D30C 0029;0028 1111 1161 0029;
+321B;321B;321B;0028 D558 0029;0028 1112 1161 0029;
+321C;321C;321C;0028 C8FC 0029;0028 110C 116E 0029;
+3220;3220;3220;0028 4E00 0029;0028 4E00 0029;
+3221;3221;3221;0028 4E8C 0029;0028 4E8C 0029;
+3222;3222;3222;0028 4E09 0029;0028 4E09 0029;
+3223;3223;3223;0028 56DB 0029;0028 56DB 0029;
+3224;3224;3224;0028 4E94 0029;0028 4E94 0029;
+3225;3225;3225;0028 516D 0029;0028 516D 0029;
+3226;3226;3226;0028 4E03 0029;0028 4E03 0029;
+3227;3227;3227;0028 516B 0029;0028 516B 0029;
+3228;3228;3228;0028 4E5D 0029;0028 4E5D 0029;
+3229;3229;3229;0028 5341 0029;0028 5341 0029;
+322A;322A;322A;0028 6708 0029;0028 6708 0029;
+322B;322B;322B;0028 706B 0029;0028 706B 0029;
+322C;322C;322C;0028 6C34 0029;0028 6C34 0029;
+322D;322D;322D;0028 6728 0029;0028 6728 0029;
+322E;322E;322E;0028 91D1 0029;0028 91D1 0029;
+322F;322F;322F;0028 571F 0029;0028 571F 0029;
+3230;3230;3230;0028 65E5 0029;0028 65E5 0029;
+3231;3231;3231;0028 682A 0029;0028 682A 0029;
+3232;3232;3232;0028 6709 0029;0028 6709 0029;
+3233;3233;3233;0028 793E 0029;0028 793E 0029;
+3234;3234;3234;0028 540D 0029;0028 540D 0029;
+3235;3235;3235;0028 7279 0029;0028 7279 0029;
+3236;3236;3236;0028 8CA1 0029;0028 8CA1 0029;
+3237;3237;3237;0028 795D 0029;0028 795D 0029;
+3238;3238;3238;0028 52B4 0029;0028 52B4 0029;
+3239;3239;3239;0028 4EE3 0029;0028 4EE3 0029;
+323A;323A;323A;0028 547C 0029;0028 547C 0029;
+323B;323B;323B;0028 5B66 0029;0028 5B66 0029;
+323C;323C;323C;0028 76E3 0029;0028 76E3 0029;
+323D;323D;323D;0028 4F01 0029;0028 4F01 0029;
+323E;323E;323E;0028 8CC7 0029;0028 8CC7 0029;
+323F;323F;323F;0028 5354 0029;0028 5354 0029;
+3240;3240;3240;0028 796D 0029;0028 796D 0029;
+3241;3241;3241;0028 4F11 0029;0028 4F11 0029;
+3242;3242;3242;0028 81EA 0029;0028 81EA 0029;
+3243;3243;3243;0028 81F3 0029;0028 81F3 0029;
+3251;3251;3251;0032 0031;0032 0031;
+3252;3252;3252;0032 0032;0032 0032;
+3253;3253;3253;0032 0033;0032 0033;
+3254;3254;3254;0032 0034;0032 0034;
+3255;3255;3255;0032 0035;0032 0035;
+3256;3256;3256;0032 0036;0032 0036;
+3257;3257;3257;0032 0037;0032 0037;
+3258;3258;3258;0032 0038;0032 0038;
+3259;3259;3259;0032 0039;0032 0039;
+325A;325A;325A;0033 0030;0033 0030;
+325B;325B;325B;0033 0031;0033 0031;
+325C;325C;325C;0033 0032;0033 0032;
+325D;325D;325D;0033 0033;0033 0033;
+325E;325E;325E;0033 0034;0033 0034;
+325F;325F;325F;0033 0035;0033 0035;
+3260;3260;3260;1100;1100;
+3261;3261;3261;1102;1102;
+3262;3262;3262;1103;1103;
+3263;3263;3263;1105;1105;
+3264;3264;3264;1106;1106;
+3265;3265;3265;1107;1107;
+3266;3266;3266;1109;1109;
+3267;3267;3267;110B;110B;
+3268;3268;3268;110C;110C;
+3269;3269;3269;110E;110E;
+326A;326A;326A;110F;110F;
+326B;326B;326B;1110;1110;
+326C;326C;326C;1111;1111;
+326D;326D;326D;1112;1112;
+326E;326E;326E;AC00;1100 1161;
+326F;326F;326F;B098;1102 1161;
+3270;3270;3270;B2E4;1103 1161;
+3271;3271;3271;B77C;1105 1161;
+3272;3272;3272;B9C8;1106 1161;
+3273;3273;3273;BC14;1107 1161;
+3274;3274;3274;C0AC;1109 1161;
+3275;3275;3275;C544;110B 1161;
+3276;3276;3276;C790;110C 1161;
+3277;3277;3277;CC28;110E 1161;
+3278;3278;3278;CE74;110F 1161;
+3279;3279;3279;D0C0;1110 1161;
+327A;327A;327A;D30C;1111 1161;
+327B;327B;327B;D558;1112 1161;
+3280;3280;3280;4E00;4E00;
+3281;3281;3281;4E8C;4E8C;
+3282;3282;3282;4E09;4E09;
+3283;3283;3283;56DB;56DB;
+3284;3284;3284;4E94;4E94;
+3285;3285;3285;516D;516D;
+3286;3286;3286;4E03;4E03;
+3287;3287;3287;516B;516B;
+3288;3288;3288;4E5D;4E5D;
+3289;3289;3289;5341;5341;
+328A;328A;328A;6708;6708;
+328B;328B;328B;706B;706B;
+328C;328C;328C;6C34;6C34;
+328D;328D;328D;6728;6728;
+328E;328E;328E;91D1;91D1;
+328F;328F;328F;571F;571F;
+3290;3290;3290;65E5;65E5;
+3291;3291;3291;682A;682A;
+3292;3292;3292;6709;6709;
+3293;3293;3293;793E;793E;
+3294;3294;3294;540D;540D;
+3295;3295;3295;7279;7279;
+3296;3296;3296;8CA1;8CA1;
+3297;3297;3297;795D;795D;
+3298;3298;3298;52B4;52B4;
+3299;3299;3299;79D8;79D8;
+329A;329A;329A;7537;7537;
+329B;329B;329B;5973;5973;
+329C;329C;329C;9069;9069;
+329D;329D;329D;512A;512A;
+329E;329E;329E;5370;5370;
+329F;329F;329F;6CE8;6CE8;
+32A0;32A0;32A0;9805;9805;
+32A1;32A1;32A1;4F11;4F11;
+32A2;32A2;32A2;5199;5199;
+32A3;32A3;32A3;6B63;6B63;
+32A4;32A4;32A4;4E0A;4E0A;
+32A5;32A5;32A5;4E2D;4E2D;
+32A6;32A6;32A6;4E0B;4E0B;
+32A7;32A7;32A7;5DE6;5DE6;
+32A8;32A8;32A8;53F3;53F3;
+32A9;32A9;32A9;533B;533B;
+32AA;32AA;32AA;5B97;5B97;
+32AB;32AB;32AB;5B66;5B66;
+32AC;32AC;32AC;76E3;76E3;
+32AD;32AD;32AD;4F01;4F01;
+32AE;32AE;32AE;8CC7;8CC7;
+32AF;32AF;32AF;5354;5354;
+32B0;32B0;32B0;591C;591C;
+32B1;32B1;32B1;0033 0036;0033 0036;
+32B2;32B2;32B2;0033 0037;0033 0037;
+32B3;32B3;32B3;0033 0038;0033 0038;
+32B4;32B4;32B4;0033 0039;0033 0039;
+32B5;32B5;32B5;0034 0030;0034 0030;
+32B6;32B6;32B6;0034 0031;0034 0031;
+32B7;32B7;32B7;0034 0032;0034 0032;
+32B8;32B8;32B8;0034 0033;0034 0033;
+32B9;32B9;32B9;0034 0034;0034 0034;
+32BA;32BA;32BA;0034 0035;0034 0035;
+32BB;32BB;32BB;0034 0036;0034 0036;
+32BC;32BC;32BC;0034 0037;0034 0037;
+32BD;32BD;32BD;0034 0038;0034 0038;
+32BE;32BE;32BE;0034 0039;0034 0039;
+32BF;32BF;32BF;0035 0030;0035 0030;
+32C0;32C0;32C0;0031 6708;0031 6708;
+32C1;32C1;32C1;0032 6708;0032 6708;
+32C2;32C2;32C2;0033 6708;0033 6708;
+32C3;32C3;32C3;0034 6708;0034 6708;
+32C4;32C4;32C4;0035 6708;0035 6708;
+32C5;32C5;32C5;0036 6708;0036 6708;
+32C6;32C6;32C6;0037 6708;0037 6708;
+32C7;32C7;32C7;0038 6708;0038 6708;
+32C8;32C8;32C8;0039 6708;0039 6708;
+32C9;32C9;32C9;0031 0030 6708;0031 0030 6708;
+32CA;32CA;32CA;0031 0031 6708;0031 0031 6708;
+32CB;32CB;32CB;0031 0032 6708;0031 0032 6708;
+32D0;32D0;32D0;30A2;30A2;
+32D1;32D1;32D1;30A4;30A4;
+32D2;32D2;32D2;30A6;30A6;
+32D3;32D3;32D3;30A8;30A8;
+32D4;32D4;32D4;30AA;30AA;
+32D5;32D5;32D5;30AB;30AB;
+32D6;32D6;32D6;30AD;30AD;
+32D7;32D7;32D7;30AF;30AF;
+32D8;32D8;32D8;30B1;30B1;
+32D9;32D9;32D9;30B3;30B3;
+32DA;32DA;32DA;30B5;30B5;
+32DB;32DB;32DB;30B7;30B7;
+32DC;32DC;32DC;30B9;30B9;
+32DD;32DD;32DD;30BB;30BB;
+32DE;32DE;32DE;30BD;30BD;
+32DF;32DF;32DF;30BF;30BF;
+32E0;32E0;32E0;30C1;30C1;
+32E1;32E1;32E1;30C4;30C4;
+32E2;32E2;32E2;30C6;30C6;
+32E3;32E3;32E3;30C8;30C8;
+32E4;32E4;32E4;30CA;30CA;
+32E5;32E5;32E5;30CB;30CB;
+32E6;32E6;32E6;30CC;30CC;
+32E7;32E7;32E7;30CD;30CD;
+32E8;32E8;32E8;30CE;30CE;
+32E9;32E9;32E9;30CF;30CF;
+32EA;32EA;32EA;30D2;30D2;
+32EB;32EB;32EB;30D5;30D5;
+32EC;32EC;32EC;30D8;30D8;
+32ED;32ED;32ED;30DB;30DB;
+32EE;32EE;32EE;30DE;30DE;
+32EF;32EF;32EF;30DF;30DF;
+32F0;32F0;32F0;30E0;30E0;
+32F1;32F1;32F1;30E1;30E1;
+32F2;32F2;32F2;30E2;30E2;
+32F3;32F3;32F3;30E4;30E4;
+32F4;32F4;32F4;30E6;30E6;
+32F5;32F5;32F5;30E8;30E8;
+32F6;32F6;32F6;30E9;30E9;
+32F7;32F7;32F7;30EA;30EA;
+32F8;32F8;32F8;30EB;30EB;
+32F9;32F9;32F9;30EC;30EC;
+32FA;32FA;32FA;30ED;30ED;
+32FB;32FB;32FB;30EF;30EF;
+32FC;32FC;32FC;30F0;30F0;
+32FD;32FD;32FD;30F1;30F1;
+32FE;32FE;32FE;30F2;30F2;
+3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8;
+3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1;
+3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2;
+3303;3303;3303;30A2 30FC 30EB;30A2 30FC 30EB;
+3304;3304;3304;30A4 30CB 30F3 30B0;30A4 30CB 30F3 30AF 3099;
+3305;3305;3305;30A4 30F3 30C1;30A4 30F3 30C1;
+3306;3306;3306;30A6 30A9 30F3;30A6 30A9 30F3;
+3307;3307;3307;30A8 30B9 30AF 30FC 30C9;30A8 30B9 30AF 30FC 30C8 3099;
+3308;3308;3308;30A8 30FC 30AB 30FC;30A8 30FC 30AB 30FC;
+3309;3309;3309;30AA 30F3 30B9;30AA 30F3 30B9;
+330A;330A;330A;30AA 30FC 30E0;30AA 30FC 30E0;
+330B;330B;330B;30AB 30A4 30EA;30AB 30A4 30EA;
+330C;330C;330C;30AB 30E9 30C3 30C8;30AB 30E9 30C3 30C8;
+330D;330D;330D;30AB 30ED 30EA 30FC;30AB 30ED 30EA 30FC;
+330E;330E;330E;30AC 30ED 30F3;30AB 3099 30ED 30F3;
+330F;330F;330F;30AC 30F3 30DE;30AB 3099 30F3 30DE;
+3310;3310;3310;30AE 30AC;30AD 3099 30AB 3099;
+3311;3311;3311;30AE 30CB 30FC;30AD 3099 30CB 30FC;
+3312;3312;3312;30AD 30E5 30EA 30FC;30AD 30E5 30EA 30FC;
+3313;3313;3313;30AE 30EB 30C0 30FC;30AD 3099 30EB 30BF 3099 30FC;
+3314;3314;3314;30AD 30ED;30AD 30ED;
+3315;3315;3315;30AD 30ED 30B0 30E9 30E0;30AD 30ED 30AF 3099 30E9 30E0;
+3316;3316;3316;30AD 30ED 30E1 30FC 30C8 30EB;30AD 30ED 30E1 30FC 30C8 30EB;
+3317;3317;3317;30AD 30ED 30EF 30C3 30C8;30AD 30ED 30EF 30C3 30C8;
+3318;3318;3318;30B0 30E9 30E0;30AF 3099 30E9 30E0;
+3319;3319;3319;30B0 30E9 30E0 30C8 30F3;30AF 3099 30E9 30E0 30C8 30F3;
+331A;331A;331A;30AF 30EB 30BC 30A4 30ED;30AF 30EB 30BB 3099 30A4 30ED;
+331B;331B;331B;30AF 30ED 30FC 30CD;30AF 30ED 30FC 30CD;
+331C;331C;331C;30B1 30FC 30B9;30B1 30FC 30B9;
+331D;331D;331D;30B3 30EB 30CA;30B3 30EB 30CA;
+331E;331E;331E;30B3 30FC 30DD;30B3 30FC 30DB 309A;
+331F;331F;331F;30B5 30A4 30AF 30EB;30B5 30A4 30AF 30EB;
+3320;3320;3320;30B5 30F3 30C1 30FC 30E0;30B5 30F3 30C1 30FC 30E0;
+3321;3321;3321;30B7 30EA 30F3 30B0;30B7 30EA 30F3 30AF 3099;
+3322;3322;3322;30BB 30F3 30C1;30BB 30F3 30C1;
+3323;3323;3323;30BB 30F3 30C8;30BB 30F3 30C8;
+3324;3324;3324;30C0 30FC 30B9;30BF 3099 30FC 30B9;
+3325;3325;3325;30C7 30B7;30C6 3099 30B7;
+3326;3326;3326;30C9 30EB;30C8 3099 30EB;
+3327;3327;3327;30C8 30F3;30C8 30F3;
+3328;3328;3328;30CA 30CE;30CA 30CE;
+3329;3329;3329;30CE 30C3 30C8;30CE 30C3 30C8;
+332A;332A;332A;30CF 30A4 30C4;30CF 30A4 30C4;
+332B;332B;332B;30D1 30FC 30BB 30F3 30C8;30CF 309A 30FC 30BB 30F3 30C8;
+332C;332C;332C;30D1 30FC 30C4;30CF 309A 30FC 30C4;
+332D;332D;332D;30D0 30FC 30EC 30EB;30CF 3099 30FC 30EC 30EB;
+332E;332E;332E;30D4 30A2 30B9 30C8 30EB;30D2 309A 30A2 30B9 30C8 30EB;
+332F;332F;332F;30D4 30AF 30EB;30D2 309A 30AF 30EB;
+3330;3330;3330;30D4 30B3;30D2 309A 30B3;
+3331;3331;3331;30D3 30EB;30D2 3099 30EB;
+3332;3332;3332;30D5 30A1 30E9 30C3 30C9;30D5 30A1 30E9 30C3 30C8 3099;
+3333;3333;3333;30D5 30A3 30FC 30C8;30D5 30A3 30FC 30C8;
+3334;3334;3334;30D6 30C3 30B7 30A7 30EB;30D5 3099 30C3 30B7 30A7 30EB;
+3335;3335;3335;30D5 30E9 30F3;30D5 30E9 30F3;
+3336;3336;3336;30D8 30AF 30BF 30FC 30EB;30D8 30AF 30BF 30FC 30EB;
+3337;3337;3337;30DA 30BD;30D8 309A 30BD;
+3338;3338;3338;30DA 30CB 30D2;30D8 309A 30CB 30D2;
+3339;3339;3339;30D8 30EB 30C4;30D8 30EB 30C4;
+333A;333A;333A;30DA 30F3 30B9;30D8 309A 30F3 30B9;
+333B;333B;333B;30DA 30FC 30B8;30D8 309A 30FC 30B7 3099;
+333C;333C;333C;30D9 30FC 30BF;30D8 3099 30FC 30BF;
+333D;333D;333D;30DD 30A4 30F3 30C8;30DB 309A 30A4 30F3 30C8;
+333E;333E;333E;30DC 30EB 30C8;30DB 3099 30EB 30C8;
+333F;333F;333F;30DB 30F3;30DB 30F3;
+3340;3340;3340;30DD 30F3 30C9;30DB 309A 30F3 30C8 3099;
+3341;3341;3341;30DB 30FC 30EB;30DB 30FC 30EB;
+3342;3342;3342;30DB 30FC 30F3;30DB 30FC 30F3;
+3343;3343;3343;30DE 30A4 30AF 30ED;30DE 30A4 30AF 30ED;
+3344;3344;3344;30DE 30A4 30EB;30DE 30A4 30EB;
+3345;3345;3345;30DE 30C3 30CF;30DE 30C3 30CF;
+3346;3346;3346;30DE 30EB 30AF;30DE 30EB 30AF;
+3347;3347;3347;30DE 30F3 30B7 30E7 30F3;30DE 30F3 30B7 30E7 30F3;
+3348;3348;3348;30DF 30AF 30ED 30F3;30DF 30AF 30ED 30F3;
+3349;3349;3349;30DF 30EA;30DF 30EA;
+334A;334A;334A;30DF 30EA 30D0 30FC 30EB;30DF 30EA 30CF 3099 30FC 30EB;
+334B;334B;334B;30E1 30AC;30E1 30AB 3099;
+334C;334C;334C;30E1 30AC 30C8 30F3;30E1 30AB 3099 30C8 30F3;
+334D;334D;334D;30E1 30FC 30C8 30EB;30E1 30FC 30C8 30EB;
+334E;334E;334E;30E4 30FC 30C9;30E4 30FC 30C8 3099;
+334F;334F;334F;30E4 30FC 30EB;30E4 30FC 30EB;
+3350;3350;3350;30E6 30A2 30F3;30E6 30A2 30F3;
+3351;3351;3351;30EA 30C3 30C8 30EB;30EA 30C3 30C8 30EB;
+3352;3352;3352;30EA 30E9;30EA 30E9;
+3353;3353;3353;30EB 30D4 30FC;30EB 30D2 309A 30FC;
+3354;3354;3354;30EB 30FC 30D6 30EB;30EB 30FC 30D5 3099 30EB;
+3355;3355;3355;30EC 30E0;30EC 30E0;
+3356;3356;3356;30EC 30F3 30C8 30B2 30F3;30EC 30F3 30C8 30B1 3099 30F3;
+3357;3357;3357;30EF 30C3 30C8;30EF 30C3 30C8;
+3358;3358;3358;0030 70B9;0030 70B9;
+3359;3359;3359;0031 70B9;0031 70B9;
+335A;335A;335A;0032 70B9;0032 70B9;
+335B;335B;335B;0033 70B9;0033 70B9;
+335C;335C;335C;0034 70B9;0034 70B9;
+335D;335D;335D;0035 70B9;0035 70B9;
+335E;335E;335E;0036 70B9;0036 70B9;
+335F;335F;335F;0037 70B9;0037 70B9;
+3360;3360;3360;0038 70B9;0038 70B9;
+3361;3361;3361;0039 70B9;0039 70B9;
+3362;3362;3362;0031 0030 70B9;0031 0030 70B9;
+3363;3363;3363;0031 0031 70B9;0031 0031 70B9;
+3364;3364;3364;0031 0032 70B9;0031 0032 70B9;
+3365;3365;3365;0031 0033 70B9;0031 0033 70B9;
+3366;3366;3366;0031 0034 70B9;0031 0034 70B9;
+3367;3367;3367;0031 0035 70B9;0031 0035 70B9;
+3368;3368;3368;0031 0036 70B9;0031 0036 70B9;
+3369;3369;3369;0031 0037 70B9;0031 0037 70B9;
+336A;336A;336A;0031 0038 70B9;0031 0038 70B9;
+336B;336B;336B;0031 0039 70B9;0031 0039 70B9;
+336C;336C;336C;0032 0030 70B9;0032 0030 70B9;
+336D;336D;336D;0032 0031 70B9;0032 0031 70B9;
+336E;336E;336E;0032 0032 70B9;0032 0032 70B9;
+336F;336F;336F;0032 0033 70B9;0032 0033 70B9;
+3370;3370;3370;0032 0034 70B9;0032 0034 70B9;
+3371;3371;3371;0068 0050 0061;0068 0050 0061;
+3372;3372;3372;0064 0061;0064 0061;
+3373;3373;3373;0041 0055;0041 0055;
+3374;3374;3374;0062 0061 0072;0062 0061 0072;
+3375;3375;3375;006F 0056;006F 0056;
+3376;3376;3376;0070 0063;0070 0063;
+337B;337B;337B;5E73 6210;5E73 6210;
+337C;337C;337C;662D 548C;662D 548C;
+337D;337D;337D;5927 6B63;5927 6B63;
+337E;337E;337E;660E 6CBB;660E 6CBB;
+337F;337F;337F;682A 5F0F 4F1A 793E;682A 5F0F 4F1A 793E;
+3380;3380;3380;0070 0041;0070 0041;
+3381;3381;3381;006E 0041;006E 0041;
+3382;3382;3382;03BC 0041;03BC 0041;
+3383;3383;3383;006D 0041;006D 0041;
+3384;3384;3384;006B 0041;006B 0041;
+3385;3385;3385;004B 0042;004B 0042;
+3386;3386;3386;004D 0042;004D 0042;
+3387;3387;3387;0047 0042;0047 0042;
+3388;3388;3388;0063 0061 006C;0063 0061 006C;
+3389;3389;3389;006B 0063 0061 006C;006B 0063 0061 006C;
+338A;338A;338A;0070 0046;0070 0046;
+338B;338B;338B;006E 0046;006E 0046;
+338C;338C;338C;03BC 0046;03BC 0046;
+338D;338D;338D;03BC 0067;03BC 0067;
+338E;338E;338E;006D 0067;006D 0067;
+338F;338F;338F;006B 0067;006B 0067;
+3390;3390;3390;0048 007A;0048 007A;
+3391;3391;3391;006B 0048 007A;006B 0048 007A;
+3392;3392;3392;004D 0048 007A;004D 0048 007A;
+3393;3393;3393;0047 0048 007A;0047 0048 007A;
+3394;3394;3394;0054 0048 007A;0054 0048 007A;
+3395;3395;3395;03BC 006C;03BC 006C;
+3396;3396;3396;006D 006C;006D 006C;
+3397;3397;3397;0064 006C;0064 006C;
+3398;3398;3398;006B 006C;006B 006C;
+3399;3399;3399;0066 006D;0066 006D;
+339A;339A;339A;006E 006D;006E 006D;
+339B;339B;339B;03BC 006D;03BC 006D;
+339C;339C;339C;006D 006D;006D 006D;
+339D;339D;339D;0063 006D;0063 006D;
+339E;339E;339E;006B 006D;006B 006D;
+339F;339F;339F;006D 006D 0032;006D 006D 0032;
+33A0;33A0;33A0;0063 006D 0032;0063 006D 0032;
+33A1;33A1;33A1;006D 0032;006D 0032;
+33A2;33A2;33A2;006B 006D 0032;006B 006D 0032;
+33A3;33A3;33A3;006D 006D 0033;006D 006D 0033;
+33A4;33A4;33A4;0063 006D 0033;0063 006D 0033;
+33A5;33A5;33A5;006D 0033;006D 0033;
+33A6;33A6;33A6;006B 006D 0033;006B 006D 0033;
+33A7;33A7;33A7;006D 2215 0073;006D 2215 0073;
+33A8;33A8;33A8;006D 2215 0073 0032;006D 2215 0073 0032;
+33A9;33A9;33A9;0050 0061;0050 0061;
+33AA;33AA;33AA;006B 0050 0061;006B 0050 0061;
+33AB;33AB;33AB;004D 0050 0061;004D 0050 0061;
+33AC;33AC;33AC;0047 0050 0061;0047 0050 0061;
+33AD;33AD;33AD;0072 0061 0064;0072 0061 0064;
+33AE;33AE;33AE;0072 0061 0064 2215 0073;0072 0061 0064 2215 0073;
+33AF;33AF;33AF;0072 0061 0064 2215 0073 0032;0072 0061 0064 2215 0073 0032;
+33B0;33B0;33B0;0070 0073;0070 0073;
+33B1;33B1;33B1;006E 0073;006E 0073;
+33B2;33B2;33B2;03BC 0073;03BC 0073;
+33B3;33B3;33B3;006D 0073;006D 0073;
+33B4;33B4;33B4;0070 0056;0070 0056;
+33B5;33B5;33B5;006E 0056;006E 0056;
+33B6;33B6;33B6;03BC 0056;03BC 0056;
+33B7;33B7;33B7;006D 0056;006D 0056;
+33B8;33B8;33B8;006B 0056;006B 0056;
+33B9;33B9;33B9;004D 0056;004D 0056;
+33BA;33BA;33BA;0070 0057;0070 0057;
+33BB;33BB;33BB;006E 0057;006E 0057;
+33BC;33BC;33BC;03BC 0057;03BC 0057;
+33BD;33BD;33BD;006D 0057;006D 0057;
+33BE;33BE;33BE;006B 0057;006B 0057;
+33BF;33BF;33BF;004D 0057;004D 0057;
+33C0;33C0;33C0;006B 03A9;006B 03A9;
+33C1;33C1;33C1;004D 03A9;004D 03A9;
+33C2;33C2;33C2;0061 002E 006D 002E;0061 002E 006D 002E;
+33C3;33C3;33C3;0042 0071;0042 0071;
+33C4;33C4;33C4;0063 0063;0063 0063;
+33C5;33C5;33C5;0063 0064;0063 0064;
+33C6;33C6;33C6;0043 2215 006B 0067;0043 2215 006B 0067;
+33C7;33C7;33C7;0043 006F 002E;0043 006F 002E;
+33C8;33C8;33C8;0064 0042;0064 0042;
+33C9;33C9;33C9;0047 0079;0047 0079;
+33CA;33CA;33CA;0068 0061;0068 0061;
+33CB;33CB;33CB;0048 0050;0048 0050;
+33CC;33CC;33CC;0069 006E;0069 006E;
+33CD;33CD;33CD;004B 004B;004B 004B;
+33CE;33CE;33CE;004B 004D;004B 004D;
+33CF;33CF;33CF;006B 0074;006B 0074;
+33D0;33D0;33D0;006C 006D;006C 006D;
+33D1;33D1;33D1;006C 006E;006C 006E;
+33D2;33D2;33D2;006C 006F 0067;006C 006F 0067;
+33D3;33D3;33D3;006C 0078;006C 0078;
+33D4;33D4;33D4;006D 0062;006D 0062;
+33D5;33D5;33D5;006D 0069 006C;006D 0069 006C;
+33D6;33D6;33D6;006D 006F 006C;006D 006F 006C;
+33D7;33D7;33D7;0050 0048;0050 0048;
+33D8;33D8;33D8;0070 002E 006D 002E;0070 002E 006D 002E;
+33D9;33D9;33D9;0050 0050 004D;0050 0050 004D;
+33DA;33DA;33DA;0050 0052;0050 0052;
+33DB;33DB;33DB;0073 0072;0073 0072;
+33DC;33DC;33DC;0053 0076;0053 0076;
+33DD;33DD;33DD;0057 0062;0057 0062;
+33E0;33E0;33E0;0031 65E5;0031 65E5;
+33E1;33E1;33E1;0032 65E5;0032 65E5;
+33E2;33E2;33E2;0033 65E5;0033 65E5;
+33E3;33E3;33E3;0034 65E5;0034 65E5;
+33E4;33E4;33E4;0035 65E5;0035 65E5;
+33E5;33E5;33E5;0036 65E5;0036 65E5;
+33E6;33E6;33E6;0037 65E5;0037 65E5;
+33E7;33E7;33E7;0038 65E5;0038 65E5;
+33E8;33E8;33E8;0039 65E5;0039 65E5;
+33E9;33E9;33E9;0031 0030 65E5;0031 0030 65E5;
+33EA;33EA;33EA;0031 0031 65E5;0031 0031 65E5;
+33EB;33EB;33EB;0031 0032 65E5;0031 0032 65E5;
+33EC;33EC;33EC;0031 0033 65E5;0031 0033 65E5;
+33ED;33ED;33ED;0031 0034 65E5;0031 0034 65E5;
+33EE;33EE;33EE;0031 0035 65E5;0031 0035 65E5;
+33EF;33EF;33EF;0031 0036 65E5;0031 0036 65E5;
+33F0;33F0;33F0;0031 0037 65E5;0031 0037 65E5;
+33F1;33F1;33F1;0031 0038 65E5;0031 0038 65E5;
+33F2;33F2;33F2;0031 0039 65E5;0031 0039 65E5;
+33F3;33F3;33F3;0032 0030 65E5;0032 0030 65E5;
+33F4;33F4;33F4;0032 0031 65E5;0032 0031 65E5;
+33F5;33F5;33F5;0032 0032 65E5;0032 0032 65E5;
+33F6;33F6;33F6;0032 0033 65E5;0032 0033 65E5;
+33F7;33F7;33F7;0032 0034 65E5;0032 0034 65E5;
+33F8;33F8;33F8;0032 0035 65E5;0032 0035 65E5;
+33F9;33F9;33F9;0032 0036 65E5;0032 0036 65E5;
+33FA;33FA;33FA;0032 0037 65E5;0032 0037 65E5;
+33FB;33FB;33FB;0032 0038 65E5;0032 0038 65E5;
+33FC;33FC;33FC;0032 0039 65E5;0032 0039 65E5;
+33FD;33FD;33FD;0033 0030 65E5;0033 0030 65E5;
+33FE;33FE;33FE;0033 0031 65E5;0033 0031 65E5;
+AC00;AC00;1100 1161;AC00;1100 1161;
+AC01;AC01;1100 1161 11A8;AC01;1100 1161 11A8;
+AC02;AC02;1100 1161 11A9;AC02;1100 1161 11A9;
+AC03;AC03;1100 1161 11AA;AC03;1100 1161 11AA;
+AC04;AC04;1100 1161 11AB;AC04;1100 1161 11AB;
+AC05;AC05;1100 1161 11AC;AC05;1100 1161 11AC;
+AC06;AC06;1100 1161 11AD;AC06;1100 1161 11AD;
+AC07;AC07;1100 1161 11AE;AC07;1100 1161 11AE;
+AC08;AC08;1100 1161 11AF;AC08;1100 1161 11AF;
+AC09;AC09;1100 1161 11B0;AC09;1100 1161 11B0;
+AC0A;AC0A;1100 1161 11B1;AC0A;1100 1161 11B1;
+AC0B;AC0B;1100 1161 11B2;AC0B;1100 1161 11B2;
+AC0C;AC0C;1100 1161 11B3;AC0C;1100 1161 11B3;
+AC0D;AC0D;1100 1161 11B4;AC0D;1100 1161 11B4;
+AC0E;AC0E;1100 1161 11B5;AC0E;1100 1161 11B5;
+AC0F;AC0F;1100 1161 11B6;AC0F;1100 1161 11B6;
+AC10;AC10;1100 1161 11B7;AC10;1100 1161 11B7;
+AC11;AC11;1100 1161 11B8;AC11;1100 1161 11B8;
+AC12;AC12;1100 1161 11B9;AC12;1100 1161 11B9;
+AC13;AC13;1100 1161 11BA;AC13;1100 1161 11BA;
+AC14;AC14;1100 1161 11BB;AC14;1100 1161 11BB;
+AC15;AC15;1100 1161 11BC;AC15;1100 1161 11BC;
+AC16;AC16;1100 1161 11BD;AC16;1100 1161 11BD;
+AC17;AC17;1100 1161 11BE;AC17;1100 1161 11BE;
+AC18;AC18;1100 1161 11BF;AC18;1100 1161 11BF;
+AC19;AC19;1100 1161 11C0;AC19;1100 1161 11C0;
+AC1A;AC1A;1100 1161 11C1;AC1A;1100 1161 11C1;
+AC1B;AC1B;1100 1161 11C2;AC1B;1100 1161 11C2;
+AC1C;AC1C;1100 1162;AC1C;1100 1162;
+AC1D;AC1D;1100 1162 11A8;AC1D;1100 1162 11A8;
+AC1E;AC1E;1100 1162 11A9;AC1E;1100 1162 11A9;
+AC1F;AC1F;1100 1162 11AA;AC1F;1100 1162 11AA;
+AC20;AC20;1100 1162 11AB;AC20;1100 1162 11AB;
+AC21;AC21;1100 1162 11AC;AC21;1100 1162 11AC;
+AC22;AC22;1100 1162 11AD;AC22;1100 1162 11AD;
+AC23;AC23;1100 1162 11AE;AC23;1100 1162 11AE;
+AC24;AC24;1100 1162 11AF;AC24;1100 1162 11AF;
+AC25;AC25;1100 1162 11B0;AC25;1100 1162 11B0;
+AC26;AC26;1100 1162 11B1;AC26;1100 1162 11B1;
+AC27;AC27;1100 1162 11B2;AC27;1100 1162 11B2;
+AC28;AC28;1100 1162 11B3;AC28;1100 1162 11B3;
+AC29;AC29;1100 1162 11B4;AC29;1100 1162 11B4;
+AC2A;AC2A;1100 1162 11B5;AC2A;1100 1162 11B5;
+AC2B;AC2B;1100 1162 11B6;AC2B;1100 1162 11B6;
+AC2C;AC2C;1100 1162 11B7;AC2C;1100 1162 11B7;
+AC2D;AC2D;1100 1162 11B8;AC2D;1100 1162 11B8;
+AC2E;AC2E;1100 1162 11B9;AC2E;1100 1162 11B9;
+AC2F;AC2F;1100 1162 11BA;AC2F;1100 1162 11BA;
+AC30;AC30;1100 1162 11BB;AC30;1100 1162 11BB;
+AC31;AC31;1100 1162 11BC;AC31;1100 1162 11BC;
+AC32;AC32;1100 1162 11BD;AC32;1100 1162 11BD;
+AC33;AC33;1100 1162 11BE;AC33;1100 1162 11BE;
+AC34;AC34;1100 1162 11BF;AC34;1100 1162 11BF;
+AC35;AC35;1100 1162 11C0;AC35;1100 1162 11C0;
+AC36;AC36;1100 1162 11C1;AC36;1100 1162 11C1;
+AC37;AC37;1100 1162 11C2;AC37;1100 1162 11C2;
+AC38;AC38;1100 1163;AC38;1100 1163;
+AC39;AC39;1100 1163 11A8;AC39;1100 1163 11A8;
+AC3A;AC3A;1100 1163 11A9;AC3A;1100 1163 11A9;
+AC3B;AC3B;1100 1163 11AA;AC3B;1100 1163 11AA;
+AC3C;AC3C;1100 1163 11AB;AC3C;1100 1163 11AB;
+AC3D;AC3D;1100 1163 11AC;AC3D;1100 1163 11AC;
+AC3E;AC3E;1100 1163 11AD;AC3E;1100 1163 11AD;
+AC3F;AC3F;1100 1163 11AE;AC3F;1100 1163 11AE;
+AC40;AC40;1100 1163 11AF;AC40;1100 1163 11AF;
+AC41;AC41;1100 1163 11B0;AC41;1100 1163 11B0;
+AC42;AC42;1100 1163 11B1;AC42;1100 1163 11B1;
+AC43;AC43;1100 1163 11B2;AC43;1100 1163 11B2;
+AC44;AC44;1100 1163 11B3;AC44;1100 1163 11B3;
+AC45;AC45;1100 1163 11B4;AC45;1100 1163 11B4;
+AC46;AC46;1100 1163 11B5;AC46;1100 1163 11B5;
+AC47;AC47;1100 1163 11B6;AC47;1100 1163 11B6;
+AC48;AC48;1100 1163 11B7;AC48;1100 1163 11B7;
+AC49;AC49;1100 1163 11B8;AC49;1100 1163 11B8;
+AC4A;AC4A;1100 1163 11B9;AC4A;1100 1163 11B9;
+AC4B;AC4B;1100 1163 11BA;AC4B;1100 1163 11BA;
+AC4C;AC4C;1100 1163 11BB;AC4C;1100 1163 11BB;
+AC4D;AC4D;1100 1163 11BC;AC4D;1100 1163 11BC;
+AC4E;AC4E;1100 1163 11BD;AC4E;1100 1163 11BD;
+AC4F;AC4F;1100 1163 11BE;AC4F;1100 1163 11BE;
+AC50;AC50;1100 1163 11BF;AC50;1100 1163 11BF;
+AC51;AC51;1100 1163 11C0;AC51;1100 1163 11C0;
+AC52;AC52;1100 1163 11C1;AC52;1100 1163 11C1;
+AC53;AC53;1100 1163 11C2;AC53;1100 1163 11C2;
+AC54;AC54;1100 1164;AC54;1100 1164;
+AC55;AC55;1100 1164 11A8;AC55;1100 1164 11A8;
+AC56;AC56;1100 1164 11A9;AC56;1100 1164 11A9;
+AC57;AC57;1100 1164 11AA;AC57;1100 1164 11AA;
+AC58;AC58;1100 1164 11AB;AC58;1100 1164 11AB;
+AC59;AC59;1100 1164 11AC;AC59;1100 1164 11AC;
+AC5A;AC5A;1100 1164 11AD;AC5A;1100 1164 11AD;
+AC5B;AC5B;1100 1164 11AE;AC5B;1100 1164 11AE;
+AC5C;AC5C;1100 1164 11AF;AC5C;1100 1164 11AF;
+AC5D;AC5D;1100 1164 11B0;AC5D;1100 1164 11B0;
+AC5E;AC5E;1100 1164 11B1;AC5E;1100 1164 11B1;
+AC5F;AC5F;1100 1164 11B2;AC5F;1100 1164 11B2;
+AC60;AC60;1100 1164 11B3;AC60;1100 1164 11B3;
+AC61;AC61;1100 1164 11B4;AC61;1100 1164 11B4;
+AC62;AC62;1100 1164 11B5;AC62;1100 1164 11B5;
+AC63;AC63;1100 1164 11B6;AC63;1100 1164 11B6;
+AC64;AC64;1100 1164 11B7;AC64;1100 1164 11B7;
+AC65;AC65;1100 1164 11B8;AC65;1100 1164 11B8;
+AC66;AC66;1100 1164 11B9;AC66;1100 1164 11B9;
+AC67;AC67;1100 1164 11BA;AC67;1100 1164 11BA;
+AC68;AC68;1100 1164 11BB;AC68;1100 1164 11BB;
+AC69;AC69;1100 1164 11BC;AC69;1100 1164 11BC;
+AC6A;AC6A;1100 1164 11BD;AC6A;1100 1164 11BD;
+AC6B;AC6B;1100 1164 11BE;AC6B;1100 1164 11BE;
+AC6C;AC6C;1100 1164 11BF;AC6C;1100 1164 11BF;
+AC6D;AC6D;1100 1164 11C0;AC6D;1100 1164 11C0;
+AC6E;AC6E;1100 1164 11C1;AC6E;1100 1164 11C1;
+AC6F;AC6F;1100 1164 11C2;AC6F;1100 1164 11C2;
+AC70;AC70;1100 1165;AC70;1100 1165;
+AC71;AC71;1100 1165 11A8;AC71;1100 1165 11A8;
+AC72;AC72;1100 1165 11A9;AC72;1100 1165 11A9;
+AC73;AC73;1100 1165 11AA;AC73;1100 1165 11AA;
+AC74;AC74;1100 1165 11AB;AC74;1100 1165 11AB;
+AC75;AC75;1100 1165 11AC;AC75;1100 1165 11AC;
+AC76;AC76;1100 1165 11AD;AC76;1100 1165 11AD;
+AC77;AC77;1100 1165 11AE;AC77;1100 1165 11AE;
+AC78;AC78;1100 1165 11AF;AC78;1100 1165 11AF;
+AC79;AC79;1100 1165 11B0;AC79;1100 1165 11B0;
+AC7A;AC7A;1100 1165 11B1;AC7A;1100 1165 11B1;
+AC7B;AC7B;1100 1165 11B2;AC7B;1100 1165 11B2;
+AC7C;AC7C;1100 1165 11B3;AC7C;1100 1165 11B3;
+AC7D;AC7D;1100 1165 11B4;AC7D;1100 1165 11B4;
+AC7E;AC7E;1100 1165 11B5;AC7E;1100 1165 11B5;
+AC7F;AC7F;1100 1165 11B6;AC7F;1100 1165 11B6;
+AC80;AC80;1100 1165 11B7;AC80;1100 1165 11B7;
+AC81;AC81;1100 1165 11B8;AC81;1100 1165 11B8;
+AC82;AC82;1100 1165 11B9;AC82;1100 1165 11B9;
+AC83;AC83;1100 1165 11BA;AC83;1100 1165 11BA;
+AC84;AC84;1100 1165 11BB;AC84;1100 1165 11BB;
+AC85;AC85;1100 1165 11BC;AC85;1100 1165 11BC;
+AC86;AC86;1100 1165 11BD;AC86;1100 1165 11BD;
+AC87;AC87;1100 1165 11BE;AC87;1100 1165 11BE;
+AC88;AC88;1100 1165 11BF;AC88;1100 1165 11BF;
+AC89;AC89;1100 1165 11C0;AC89;1100 1165 11C0;
+AC8A;AC8A;1100 1165 11C1;AC8A;1100 1165 11C1;
+AC8B;AC8B;1100 1165 11C2;AC8B;1100 1165 11C2;
+AC8C;AC8C;1100 1166;AC8C;1100 1166;
+AC8D;AC8D;1100 1166 11A8;AC8D;1100 1166 11A8;
+AC8E;AC8E;1100 1166 11A9;AC8E;1100 1166 11A9;
+AC8F;AC8F;1100 1166 11AA;AC8F;1100 1166 11AA;
+AC90;AC90;1100 1166 11AB;AC90;1100 1166 11AB;
+AC91;AC91;1100 1166 11AC;AC91;1100 1166 11AC;
+AC92;AC92;1100 1166 11AD;AC92;1100 1166 11AD;
+AC93;AC93;1100 1166 11AE;AC93;1100 1166 11AE;
+AC94;AC94;1100 1166 11AF;AC94;1100 1166 11AF;
+AC95;AC95;1100 1166 11B0;AC95;1100 1166 11B0;
+AC96;AC96;1100 1166 11B1;AC96;1100 1166 11B1;
+AC97;AC97;1100 1166 11B2;AC97;1100 1166 11B2;
+AC98;AC98;1100 1166 11B3;AC98;1100 1166 11B3;
+AC99;AC99;1100 1166 11B4;AC99;1100 1166 11B4;
+AC9A;AC9A;1100 1166 11B5;AC9A;1100 1166 11B5;
+AC9B;AC9B;1100 1166 11B6;AC9B;1100 1166 11B6;
+AC9C;AC9C;1100 1166 11B7;AC9C;1100 1166 11B7;
+AC9D;AC9D;1100 1166 11B8;AC9D;1100 1166 11B8;
+AC9E;AC9E;1100 1166 11B9;AC9E;1100 1166 11B9;
+AC9F;AC9F;1100 1166 11BA;AC9F;1100 1166 11BA;
+ACA0;ACA0;1100 1166 11BB;ACA0;1100 1166 11BB;
+ACA1;ACA1;1100 1166 11BC;ACA1;1100 1166 11BC;
+ACA2;ACA2;1100 1166 11BD;ACA2;1100 1166 11BD;
+ACA3;ACA3;1100 1166 11BE;ACA3;1100 1166 11BE;
+ACA4;ACA4;1100 1166 11BF;ACA4;1100 1166 11BF;
+ACA5;ACA5;1100 1166 11C0;ACA5;1100 1166 11C0;
+ACA6;ACA6;1100 1166 11C1;ACA6;1100 1166 11C1;
+ACA7;ACA7;1100 1166 11C2;ACA7;1100 1166 11C2;
+ACA8;ACA8;1100 1167;ACA8;1100 1167;
+ACA9;ACA9;1100 1167 11A8;ACA9;1100 1167 11A8;
+ACAA;ACAA;1100 1167 11A9;ACAA;1100 1167 11A9;
+ACAB;ACAB;1100 1167 11AA;ACAB;1100 1167 11AA;
+ACAC;ACAC;1100 1167 11AB;ACAC;1100 1167 11AB;
+ACAD;ACAD;1100 1167 11AC;ACAD;1100 1167 11AC;
+ACAE;ACAE;1100 1167 11AD;ACAE;1100 1167 11AD;
+ACAF;ACAF;1100 1167 11AE;ACAF;1100 1167 11AE;
+ACB0;ACB0;1100 1167 11AF;ACB0;1100 1167 11AF;
+ACB1;ACB1;1100 1167 11B0;ACB1;1100 1167 11B0;
+ACB2;ACB2;1100 1167 11B1;ACB2;1100 1167 11B1;
+ACB3;ACB3;1100 1167 11B2;ACB3;1100 1167 11B2;
+ACB4;ACB4;1100 1167 11B3;ACB4;1100 1167 11B3;
+ACB5;ACB5;1100 1167 11B4;ACB5;1100 1167 11B4;
+ACB6;ACB6;1100 1167 11B5;ACB6;1100 1167 11B5;
+ACB7;ACB7;1100 1167 11B6;ACB7;1100 1167 11B6;
+ACB8;ACB8;1100 1167 11B7;ACB8;1100 1167 11B7;
+ACB9;ACB9;1100 1167 11B8;ACB9;1100 1167 11B8;
+ACBA;ACBA;1100 1167 11B9;ACBA;1100 1167 11B9;
+ACBB;ACBB;1100 1167 11BA;ACBB;1100 1167 11BA;
+ACBC;ACBC;1100 1167 11BB;ACBC;1100 1167 11BB;
+ACBD;ACBD;1100 1167 11BC;ACBD;1100 1167 11BC;
+ACBE;ACBE;1100 1167 11BD;ACBE;1100 1167 11BD;
+ACBF;ACBF;1100 1167 11BE;ACBF;1100 1167 11BE;
+ACC0;ACC0;1100 1167 11BF;ACC0;1100 1167 11BF;
+ACC1;ACC1;1100 1167 11C0;ACC1;1100 1167 11C0;
+ACC2;ACC2;1100 1167 11C1;ACC2;1100 1167 11C1;
+ACC3;ACC3;1100 1167 11C2;ACC3;1100 1167 11C2;
+ACC4;ACC4;1100 1168;ACC4;1100 1168;
+ACC5;ACC5;1100 1168 11A8;ACC5;1100 1168 11A8;
+ACC6;ACC6;1100 1168 11A9;ACC6;1100 1168 11A9;
+ACC7;ACC7;1100 1168 11AA;ACC7;1100 1168 11AA;
+ACC8;ACC8;1100 1168 11AB;ACC8;1100 1168 11AB;
+ACC9;ACC9;1100 1168 11AC;ACC9;1100 1168 11AC;
+ACCA;ACCA;1100 1168 11AD;ACCA;1100 1168 11AD;
+ACCB;ACCB;1100 1168 11AE;ACCB;1100 1168 11AE;
+ACCC;ACCC;1100 1168 11AF;ACCC;1100 1168 11AF;
+ACCD;ACCD;1100 1168 11B0;ACCD;1100 1168 11B0;
+ACCE;ACCE;1100 1168 11B1;ACCE;1100 1168 11B1;
+ACCF;ACCF;1100 1168 11B2;ACCF;1100 1168 11B2;
+ACD0;ACD0;1100 1168 11B3;ACD0;1100 1168 11B3;
+ACD1;ACD1;1100 1168 11B4;ACD1;1100 1168 11B4;
+ACD2;ACD2;1100 1168 11B5;ACD2;1100 1168 11B5;
+ACD3;ACD3;1100 1168 11B6;ACD3;1100 1168 11B6;
+ACD4;ACD4;1100 1168 11B7;ACD4;1100 1168 11B7;
+ACD5;ACD5;1100 1168 11B8;ACD5;1100 1168 11B8;
+ACD6;ACD6;1100 1168 11B9;ACD6;1100 1168 11B9;
+ACD7;ACD7;1100 1168 11BA;ACD7;1100 1168 11BA;
+ACD8;ACD8;1100 1168 11BB;ACD8;1100 1168 11BB;
+ACD9;ACD9;1100 1168 11BC;ACD9;1100 1168 11BC;
+ACDA;ACDA;1100 1168 11BD;ACDA;1100 1168 11BD;
+ACDB;ACDB;1100 1168 11BE;ACDB;1100 1168 11BE;
+ACDC;ACDC;1100 1168 11BF;ACDC;1100 1168 11BF;
+ACDD;ACDD;1100 1168 11C0;ACDD;1100 1168 11C0;
+ACDE;ACDE;1100 1168 11C1;ACDE;1100 1168 11C1;
+ACDF;ACDF;1100 1168 11C2;ACDF;1100 1168 11C2;
+ACE0;ACE0;1100 1169;ACE0;1100 1169;
+ACE1;ACE1;1100 1169 11A8;ACE1;1100 1169 11A8;
+ACE2;ACE2;1100 1169 11A9;ACE2;1100 1169 11A9;
+ACE3;ACE3;1100 1169 11AA;ACE3;1100 1169 11AA;
+ACE4;ACE4;1100 1169 11AB;ACE4;1100 1169 11AB;
+ACE5;ACE5;1100 1169 11AC;ACE5;1100 1169 11AC;
+ACE6;ACE6;1100 1169 11AD;ACE6;1100 1169 11AD;
+ACE7;ACE7;1100 1169 11AE;ACE7;1100 1169 11AE;
+ACE8;ACE8;1100 1169 11AF;ACE8;1100 1169 11AF;
+ACE9;ACE9;1100 1169 11B0;ACE9;1100 1169 11B0;
+ACEA;ACEA;1100 1169 11B1;ACEA;1100 1169 11B1;
+ACEB;ACEB;1100 1169 11B2;ACEB;1100 1169 11B2;
+ACEC;ACEC;1100 1169 11B3;ACEC;1100 1169 11B3;
+ACED;ACED;1100 1169 11B4;ACED;1100 1169 11B4;
+ACEE;ACEE;1100 1169 11B5;ACEE;1100 1169 11B5;
+ACEF;ACEF;1100 1169 11B6;ACEF;1100 1169 11B6;
+ACF0;ACF0;1100 1169 11B7;ACF0;1100 1169 11B7;
+ACF1;ACF1;1100 1169 11B8;ACF1;1100 1169 11B8;
+ACF2;ACF2;1100 1169 11B9;ACF2;1100 1169 11B9;
+ACF3;ACF3;1100 1169 11BA;ACF3;1100 1169 11BA;
+ACF4;ACF4;1100 1169 11BB;ACF4;1100 1169 11BB;
+ACF5;ACF5;1100 1169 11BC;ACF5;1100 1169 11BC;
+ACF6;ACF6;1100 1169 11BD;ACF6;1100 1169 11BD;
+ACF7;ACF7;1100 1169 11BE;ACF7;1100 1169 11BE;
+ACF8;ACF8;1100 1169 11BF;ACF8;1100 1169 11BF;
+ACF9;ACF9;1100 1169 11C0;ACF9;1100 1169 11C0;
+ACFA;ACFA;1100 1169 11C1;ACFA;1100 1169 11C1;
+ACFB;ACFB;1100 1169 11C2;ACFB;1100 1169 11C2;
+ACFC;ACFC;1100 116A;ACFC;1100 116A;
+ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8;
+ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9;
+ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA;
+AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB;
+AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC;
+AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD;
+AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE;
+AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF;
+AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0;
+AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1;
+AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2;
+AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3;
+AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4;
+AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5;
+AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6;
+AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7;
+AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8;
+AD0E;AD0E;1100 116A 11B9;AD0E;1100 116A 11B9;
+AD0F;AD0F;1100 116A 11BA;AD0F;1100 116A 11BA;
+AD10;AD10;1100 116A 11BB;AD10;1100 116A 11BB;
+AD11;AD11;1100 116A 11BC;AD11;1100 116A 11BC;
+AD12;AD12;1100 116A 11BD;AD12;1100 116A 11BD;
+AD13;AD13;1100 116A 11BE;AD13;1100 116A 11BE;
+AD14;AD14;1100 116A 11BF;AD14;1100 116A 11BF;
+AD15;AD15;1100 116A 11C0;AD15;1100 116A 11C0;
+AD16;AD16;1100 116A 11C1;AD16;1100 116A 11C1;
+AD17;AD17;1100 116A 11C2;AD17;1100 116A 11C2;
+AD18;AD18;1100 116B;AD18;1100 116B;
+AD19;AD19;1100 116B 11A8;AD19;1100 116B 11A8;
+AD1A;AD1A;1100 116B 11A9;AD1A;1100 116B 11A9;
+AD1B;AD1B;1100 116B 11AA;AD1B;1100 116B 11AA;
+AD1C;AD1C;1100 116B 11AB;AD1C;1100 116B 11AB;
+AD1D;AD1D;1100 116B 11AC;AD1D;1100 116B 11AC;
+AD1E;AD1E;1100 116B 11AD;AD1E;1100 116B 11AD;
+AD1F;AD1F;1100 116B 11AE;AD1F;1100 116B 11AE;
+AD20;AD20;1100 116B 11AF;AD20;1100 116B 11AF;
+AD21;AD21;1100 116B 11B0;AD21;1100 116B 11B0;
+AD22;AD22;1100 116B 11B1;AD22;1100 116B 11B1;
+AD23;AD23;1100 116B 11B2;AD23;1100 116B 11B2;
+AD24;AD24;1100 116B 11B3;AD24;1100 116B 11B3;
+AD25;AD25;1100 116B 11B4;AD25;1100 116B 11B4;
+AD26;AD26;1100 116B 11B5;AD26;1100 116B 11B5;
+AD27;AD27;1100 116B 11B6;AD27;1100 116B 11B6;
+AD28;AD28;1100 116B 11B7;AD28;1100 116B 11B7;
+AD29;AD29;1100 116B 11B8;AD29;1100 116B 11B8;
+AD2A;AD2A;1100 116B 11B9;AD2A;1100 116B 11B9;
+AD2B;AD2B;1100 116B 11BA;AD2B;1100 116B 11BA;
+AD2C;AD2C;1100 116B 11BB;AD2C;1100 116B 11BB;
+AD2D;AD2D;1100 116B 11BC;AD2D;1100 116B 11BC;
+AD2E;AD2E;1100 116B 11BD;AD2E;1100 116B 11BD;
+AD2F;AD2F;1100 116B 11BE;AD2F;1100 116B 11BE;
+AD30;AD30;1100 116B 11BF;AD30;1100 116B 11BF;
+AD31;AD31;1100 116B 11C0;AD31;1100 116B 11C0;
+AD32;AD32;1100 116B 11C1;AD32;1100 116B 11C1;
+AD33;AD33;1100 116B 11C2;AD33;1100 116B 11C2;
+AD34;AD34;1100 116C;AD34;1100 116C;
+AD35;AD35;1100 116C 11A8;AD35;1100 116C 11A8;
+AD36;AD36;1100 116C 11A9;AD36;1100 116C 11A9;
+AD37;AD37;1100 116C 11AA;AD37;1100 116C 11AA;
+AD38;AD38;1100 116C 11AB;AD38;1100 116C 11AB;
+AD39;AD39;1100 116C 11AC;AD39;1100 116C 11AC;
+AD3A;AD3A;1100 116C 11AD;AD3A;1100 116C 11AD;
+AD3B;AD3B;1100 116C 11AE;AD3B;1100 116C 11AE;
+AD3C;AD3C;1100 116C 11AF;AD3C;1100 116C 11AF;
+AD3D;AD3D;1100 116C 11B0;AD3D;1100 116C 11B0;
+AD3E;AD3E;1100 116C 11B1;AD3E;1100 116C 11B1;
+AD3F;AD3F;1100 116C 11B2;AD3F;1100 116C 11B2;
+AD40;AD40;1100 116C 11B3;AD40;1100 116C 11B3;
+AD41;AD41;1100 116C 11B4;AD41;1100 116C 11B4;
+AD42;AD42;1100 116C 11B5;AD42;1100 116C 11B5;
+AD43;AD43;1100 116C 11B6;AD43;1100 116C 11B6;
+AD44;AD44;1100 116C 11B7;AD44;1100 116C 11B7;
+AD45;AD45;1100 116C 11B8;AD45;1100 116C 11B8;
+AD46;AD46;1100 116C 11B9;AD46;1100 116C 11B9;
+AD47;AD47;1100 116C 11BA;AD47;1100 116C 11BA;
+AD48;AD48;1100 116C 11BB;AD48;1100 116C 11BB;
+AD49;AD49;1100 116C 11BC;AD49;1100 116C 11BC;
+AD4A;AD4A;1100 116C 11BD;AD4A;1100 116C 11BD;
+AD4B;AD4B;1100 116C 11BE;AD4B;1100 116C 11BE;
+AD4C;AD4C;1100 116C 11BF;AD4C;1100 116C 11BF;
+AD4D;AD4D;1100 116C 11C0;AD4D;1100 116C 11C0;
+AD4E;AD4E;1100 116C 11C1;AD4E;1100 116C 11C1;
+AD4F;AD4F;1100 116C 11C2;AD4F;1100 116C 11C2;
+AD50;AD50;1100 116D;AD50;1100 116D;
+AD51;AD51;1100 116D 11A8;AD51;1100 116D 11A8;
+AD52;AD52;1100 116D 11A9;AD52;1100 116D 11A9;
+AD53;AD53;1100 116D 11AA;AD53;1100 116D 11AA;
+AD54;AD54;1100 116D 11AB;AD54;1100 116D 11AB;
+AD55;AD55;1100 116D 11AC;AD55;1100 116D 11AC;
+AD56;AD56;1100 116D 11AD;AD56;1100 116D 11AD;
+AD57;AD57;1100 116D 11AE;AD57;1100 116D 11AE;
+AD58;AD58;1100 116D 11AF;AD58;1100 116D 11AF;
+AD59;AD59;1100 116D 11B0;AD59;1100 116D 11B0;
+AD5A;AD5A;1100 116D 11B1;AD5A;1100 116D 11B1;
+AD5B;AD5B;1100 116D 11B2;AD5B;1100 116D 11B2;
+AD5C;AD5C;1100 116D 11B3;AD5C;1100 116D 11B3;
+AD5D;AD5D;1100 116D 11B4;AD5D;1100 116D 11B4;
+AD5E;AD5E;1100 116D 11B5;AD5E;1100 116D 11B5;
+AD5F;AD5F;1100 116D 11B6;AD5F;1100 116D 11B6;
+AD60;AD60;1100 116D 11B7;AD60;1100 116D 11B7;
+AD61;AD61;1100 116D 11B8;AD61;1100 116D 11B8;
+AD62;AD62;1100 116D 11B9;AD62;1100 116D 11B9;
+AD63;AD63;1100 116D 11BA;AD63;1100 116D 11BA;
+AD64;AD64;1100 116D 11BB;AD64;1100 116D 11BB;
+AD65;AD65;1100 116D 11BC;AD65;1100 116D 11BC;
+AD66;AD66;1100 116D 11BD;AD66;1100 116D 11BD;
+AD67;AD67;1100 116D 11BE;AD67;1100 116D 11BE;
+AD68;AD68;1100 116D 11BF;AD68;1100 116D 11BF;
+AD69;AD69;1100 116D 11C0;AD69;1100 116D 11C0;
+AD6A;AD6A;1100 116D 11C1;AD6A;1100 116D 11C1;
+AD6B;AD6B;1100 116D 11C2;AD6B;1100 116D 11C2;
+AD6C;AD6C;1100 116E;AD6C;1100 116E;
+AD6D;AD6D;1100 116E 11A8;AD6D;1100 116E 11A8;
+AD6E;AD6E;1100 116E 11A9;AD6E;1100 116E 11A9;
+AD6F;AD6F;1100 116E 11AA;AD6F;1100 116E 11AA;
+AD70;AD70;1100 116E 11AB;AD70;1100 116E 11AB;
+AD71;AD71;1100 116E 11AC;AD71;1100 116E 11AC;
+AD72;AD72;1100 116E 11AD;AD72;1100 116E 11AD;
+AD73;AD73;1100 116E 11AE;AD73;1100 116E 11AE;
+AD74;AD74;1100 116E 11AF;AD74;1100 116E 11AF;
+AD75;AD75;1100 116E 11B0;AD75;1100 116E 11B0;
+AD76;AD76;1100 116E 11B1;AD76;1100 116E 11B1;
+AD77;AD77;1100 116E 11B2;AD77;1100 116E 11B2;
+AD78;AD78;1100 116E 11B3;AD78;1100 116E 11B3;
+AD79;AD79;1100 116E 11B4;AD79;1100 116E 11B4;
+AD7A;AD7A;1100 116E 11B5;AD7A;1100 116E 11B5;
+AD7B;AD7B;1100 116E 11B6;AD7B;1100 116E 11B6;
+AD7C;AD7C;1100 116E 11B7;AD7C;1100 116E 11B7;
+AD7D;AD7D;1100 116E 11B8;AD7D;1100 116E 11B8;
+AD7E;AD7E;1100 116E 11B9;AD7E;1100 116E 11B9;
+AD7F;AD7F;1100 116E 11BA;AD7F;1100 116E 11BA;
+AD80;AD80;1100 116E 11BB;AD80;1100 116E 11BB;
+AD81;AD81;1100 116E 11BC;AD81;1100 116E 11BC;
+AD82;AD82;1100 116E 11BD;AD82;1100 116E 11BD;
+AD83;AD83;1100 116E 11BE;AD83;1100 116E 11BE;
+AD84;AD84;1100 116E 11BF;AD84;1100 116E 11BF;
+AD85;AD85;1100 116E 11C0;AD85;1100 116E 11C0;
+AD86;AD86;1100 116E 11C1;AD86;1100 116E 11C1;
+AD87;AD87;1100 116E 11C2;AD87;1100 116E 11C2;
+AD88;AD88;1100 116F;AD88;1100 116F;
+AD89;AD89;1100 116F 11A8;AD89;1100 116F 11A8;
+AD8A;AD8A;1100 116F 11A9;AD8A;1100 116F 11A9;
+AD8B;AD8B;1100 116F 11AA;AD8B;1100 116F 11AA;
+AD8C;AD8C;1100 116F 11AB;AD8C;1100 116F 11AB;
+AD8D;AD8D;1100 116F 11AC;AD8D;1100 116F 11AC;
+AD8E;AD8E;1100 116F 11AD;AD8E;1100 116F 11AD;
+AD8F;AD8F;1100 116F 11AE;AD8F;1100 116F 11AE;
+AD90;AD90;1100 116F 11AF;AD90;1100 116F 11AF;
+AD91;AD91;1100 116F 11B0;AD91;1100 116F 11B0;
+AD92;AD92;1100 116F 11B1;AD92;1100 116F 11B1;
+AD93;AD93;1100 116F 11B2;AD93;1100 116F 11B2;
+AD94;AD94;1100 116F 11B3;AD94;1100 116F 11B3;
+AD95;AD95;1100 116F 11B4;AD95;1100 116F 11B4;
+AD96;AD96;1100 116F 11B5;AD96;1100 116F 11B5;
+AD97;AD97;1100 116F 11B6;AD97;1100 116F 11B6;
+AD98;AD98;1100 116F 11B7;AD98;1100 116F 11B7;
+AD99;AD99;1100 116F 11B8;AD99;1100 116F 11B8;
+AD9A;AD9A;1100 116F 11B9;AD9A;1100 116F 11B9;
+AD9B;AD9B;1100 116F 11BA;AD9B;1100 116F 11BA;
+AD9C;AD9C;1100 116F 11BB;AD9C;1100 116F 11BB;
+AD9D;AD9D;1100 116F 11BC;AD9D;1100 116F 11BC;
+AD9E;AD9E;1100 116F 11BD;AD9E;1100 116F 11BD;
+AD9F;AD9F;1100 116F 11BE;AD9F;1100 116F 11BE;
+ADA0;ADA0;1100 116F 11BF;ADA0;1100 116F 11BF;
+ADA1;ADA1;1100 116F 11C0;ADA1;1100 116F 11C0;
+ADA2;ADA2;1100 116F 11C1;ADA2;1100 116F 11C1;
+ADA3;ADA3;1100 116F 11C2;ADA3;1100 116F 11C2;
+ADA4;ADA4;1100 1170;ADA4;1100 1170;
+ADA5;ADA5;1100 1170 11A8;ADA5;1100 1170 11A8;
+ADA6;ADA6;1100 1170 11A9;ADA6;1100 1170 11A9;
+ADA7;ADA7;1100 1170 11AA;ADA7;1100 1170 11AA;
+ADA8;ADA8;1100 1170 11AB;ADA8;1100 1170 11AB;
+ADA9;ADA9;1100 1170 11AC;ADA9;1100 1170 11AC;
+ADAA;ADAA;1100 1170 11AD;ADAA;1100 1170 11AD;
+ADAB;ADAB;1100 1170 11AE;ADAB;1100 1170 11AE;
+ADAC;ADAC;1100 1170 11AF;ADAC;1100 1170 11AF;
+ADAD;ADAD;1100 1170 11B0;ADAD;1100 1170 11B0;
+ADAE;ADAE;1100 1170 11B1;ADAE;1100 1170 11B1;
+ADAF;ADAF;1100 1170 11B2;ADAF;1100 1170 11B2;
+ADB0;ADB0;1100 1170 11B3;ADB0;1100 1170 11B3;
+ADB1;ADB1;1100 1170 11B4;ADB1;1100 1170 11B4;
+ADB2;ADB2;1100 1170 11B5;ADB2;1100 1170 11B5;
+ADB3;ADB3;1100 1170 11B6;ADB3;1100 1170 11B6;
+ADB4;ADB4;1100 1170 11B7;ADB4;1100 1170 11B7;
+ADB5;ADB5;1100 1170 11B8;ADB5;1100 1170 11B8;
+ADB6;ADB6;1100 1170 11B9;ADB6;1100 1170 11B9;
+ADB7;ADB7;1100 1170 11BA;ADB7;1100 1170 11BA;
+ADB8;ADB8;1100 1170 11BB;ADB8;1100 1170 11BB;
+ADB9;ADB9;1100 1170 11BC;ADB9;1100 1170 11BC;
+ADBA;ADBA;1100 1170 11BD;ADBA;1100 1170 11BD;
+ADBB;ADBB;1100 1170 11BE;ADBB;1100 1170 11BE;
+ADBC;ADBC;1100 1170 11BF;ADBC;1100 1170 11BF;
+ADBD;ADBD;1100 1170 11C0;ADBD;1100 1170 11C0;
+ADBE;ADBE;1100 1170 11C1;ADBE;1100 1170 11C1;
+ADBF;ADBF;1100 1170 11C2;ADBF;1100 1170 11C2;
+ADC0;ADC0;1100 1171;ADC0;1100 1171;
+ADC1;ADC1;1100 1171 11A8;ADC1;1100 1171 11A8;
+ADC2;ADC2;1100 1171 11A9;ADC2;1100 1171 11A9;
+ADC3;ADC3;1100 1171 11AA;ADC3;1100 1171 11AA;
+ADC4;ADC4;1100 1171 11AB;ADC4;1100 1171 11AB;
+ADC5;ADC5;1100 1171 11AC;ADC5;1100 1171 11AC;
+ADC6;ADC6;1100 1171 11AD;ADC6;1100 1171 11AD;
+ADC7;ADC7;1100 1171 11AE;ADC7;1100 1171 11AE;
+ADC8;ADC8;1100 1171 11AF;ADC8;1100 1171 11AF;
+ADC9;ADC9;1100 1171 11B0;ADC9;1100 1171 11B0;
+ADCA;ADCA;1100 1171 11B1;ADCA;1100 1171 11B1;
+ADCB;ADCB;1100 1171 11B2;ADCB;1100 1171 11B2;
+ADCC;ADCC;1100 1171 11B3;ADCC;1100 1171 11B3;
+ADCD;ADCD;1100 1171 11B4;ADCD;1100 1171 11B4;
+ADCE;ADCE;1100 1171 11B5;ADCE;1100 1171 11B5;
+ADCF;ADCF;1100 1171 11B6;ADCF;1100 1171 11B6;
+ADD0;ADD0;1100 1171 11B7;ADD0;1100 1171 11B7;
+ADD1;ADD1;1100 1171 11B8;ADD1;1100 1171 11B8;
+ADD2;ADD2;1100 1171 11B9;ADD2;1100 1171 11B9;
+ADD3;ADD3;1100 1171 11BA;ADD3;1100 1171 11BA;
+ADD4;ADD4;1100 1171 11BB;ADD4;1100 1171 11BB;
+ADD5;ADD5;1100 1171 11BC;ADD5;1100 1171 11BC;
+ADD6;ADD6;1100 1171 11BD;ADD6;1100 1171 11BD;
+ADD7;ADD7;1100 1171 11BE;ADD7;1100 1171 11BE;
+ADD8;ADD8;1100 1171 11BF;ADD8;1100 1171 11BF;
+ADD9;ADD9;1100 1171 11C0;ADD9;1100 1171 11C0;
+ADDA;ADDA;1100 1171 11C1;ADDA;1100 1171 11C1;
+ADDB;ADDB;1100 1171 11C2;ADDB;1100 1171 11C2;
+ADDC;ADDC;1100 1172;ADDC;1100 1172;
+ADDD;ADDD;1100 1172 11A8;ADDD;1100 1172 11A8;
+ADDE;ADDE;1100 1172 11A9;ADDE;1100 1172 11A9;
+ADDF;ADDF;1100 1172 11AA;ADDF;1100 1172 11AA;
+ADE0;ADE0;1100 1172 11AB;ADE0;1100 1172 11AB;
+ADE1;ADE1;1100 1172 11AC;ADE1;1100 1172 11AC;
+ADE2;ADE2;1100 1172 11AD;ADE2;1100 1172 11AD;
+ADE3;ADE3;1100 1172 11AE;ADE3;1100 1172 11AE;
+ADE4;ADE4;1100 1172 11AF;ADE4;1100 1172 11AF;
+ADE5;ADE5;1100 1172 11B0;ADE5;1100 1172 11B0;
+ADE6;ADE6;1100 1172 11B1;ADE6;1100 1172 11B1;
+ADE7;ADE7;1100 1172 11B2;ADE7;1100 1172 11B2;
+ADE8;ADE8;1100 1172 11B3;ADE8;1100 1172 11B3;
+ADE9;ADE9;1100 1172 11B4;ADE9;1100 1172 11B4;
+ADEA;ADEA;1100 1172 11B5;ADEA;1100 1172 11B5;
+ADEB;ADEB;1100 1172 11B6;ADEB;1100 1172 11B6;
+ADEC;ADEC;1100 1172 11B7;ADEC;1100 1172 11B7;
+ADED;ADED;1100 1172 11B8;ADED;1100 1172 11B8;
+ADEE;ADEE;1100 1172 11B9;ADEE;1100 1172 11B9;
+ADEF;ADEF;1100 1172 11BA;ADEF;1100 1172 11BA;
+ADF0;ADF0;1100 1172 11BB;ADF0;1100 1172 11BB;
+ADF1;ADF1;1100 1172 11BC;ADF1;1100 1172 11BC;
+ADF2;ADF2;1100 1172 11BD;ADF2;1100 1172 11BD;
+ADF3;ADF3;1100 1172 11BE;ADF3;1100 1172 11BE;
+ADF4;ADF4;1100 1172 11BF;ADF4;1100 1172 11BF;
+ADF5;ADF5;1100 1172 11C0;ADF5;1100 1172 11C0;
+ADF6;ADF6;1100 1172 11C1;ADF6;1100 1172 11C1;
+ADF7;ADF7;1100 1172 11C2;ADF7;1100 1172 11C2;
+ADF8;ADF8;1100 1173;ADF8;1100 1173;
+ADF9;ADF9;1100 1173 11A8;ADF9;1100 1173 11A8;
+ADFA;ADFA;1100 1173 11A9;ADFA;1100 1173 11A9;
+ADFB;ADFB;1100 1173 11AA;ADFB;1100 1173 11AA;
+ADFC;ADFC;1100 1173 11AB;ADFC;1100 1173 11AB;
+ADFD;ADFD;1100 1173 11AC;ADFD;1100 1173 11AC;
+ADFE;ADFE;1100 1173 11AD;ADFE;1100 1173 11AD;
+ADFF;ADFF;1100 1173 11AE;ADFF;1100 1173 11AE;
+AE00;AE00;1100 1173 11AF;AE00;1100 1173 11AF;
+AE01;AE01;1100 1173 11B0;AE01;1100 1173 11B0;
+AE02;AE02;1100 1173 11B1;AE02;1100 1173 11B1;
+AE03;AE03;1100 1173 11B2;AE03;1100 1173 11B2;
+AE04;AE04;1100 1173 11B3;AE04;1100 1173 11B3;
+AE05;AE05;1100 1173 11B4;AE05;1100 1173 11B4;
+AE06;AE06;1100 1173 11B5;AE06;1100 1173 11B5;
+AE07;AE07;1100 1173 11B6;AE07;1100 1173 11B6;
+AE08;AE08;1100 1173 11B7;AE08;1100 1173 11B7;
+AE09;AE09;1100 1173 11B8;AE09;1100 1173 11B8;
+AE0A;AE0A;1100 1173 11B9;AE0A;1100 1173 11B9;
+AE0B;AE0B;1100 1173 11BA;AE0B;1100 1173 11BA;
+AE0C;AE0C;1100 1173 11BB;AE0C;1100 1173 11BB;
+AE0D;AE0D;1100 1173 11BC;AE0D;1100 1173 11BC;
+AE0E;AE0E;1100 1173 11BD;AE0E;1100 1173 11BD;
+AE0F;AE0F;1100 1173 11BE;AE0F;1100 1173 11BE;
+AE10;AE10;1100 1173 11BF;AE10;1100 1173 11BF;
+AE11;AE11;1100 1173 11C0;AE11;1100 1173 11C0;
+AE12;AE12;1100 1173 11C1;AE12;1100 1173 11C1;
+AE13;AE13;1100 1173 11C2;AE13;1100 1173 11C2;
+AE14;AE14;1100 1174;AE14;1100 1174;
+AE15;AE15;1100 1174 11A8;AE15;1100 1174 11A8;
+AE16;AE16;1100 1174 11A9;AE16;1100 1174 11A9;
+AE17;AE17;1100 1174 11AA;AE17;1100 1174 11AA;
+AE18;AE18;1100 1174 11AB;AE18;1100 1174 11AB;
+AE19;AE19;1100 1174 11AC;AE19;1100 1174 11AC;
+AE1A;AE1A;1100 1174 11AD;AE1A;1100 1174 11AD;
+AE1B;AE1B;1100 1174 11AE;AE1B;1100 1174 11AE;
+AE1C;AE1C;1100 1174 11AF;AE1C;1100 1174 11AF;
+AE1D;AE1D;1100 1174 11B0;AE1D;1100 1174 11B0;
+AE1E;AE1E;1100 1174 11B1;AE1E;1100 1174 11B1;
+AE1F;AE1F;1100 1174 11B2;AE1F;1100 1174 11B2;
+AE20;AE20;1100 1174 11B3;AE20;1100 1174 11B3;
+AE21;AE21;1100 1174 11B4;AE21;1100 1174 11B4;
+AE22;AE22;1100 1174 11B5;AE22;1100 1174 11B5;
+AE23;AE23;1100 1174 11B6;AE23;1100 1174 11B6;
+AE24;AE24;1100 1174 11B7;AE24;1100 1174 11B7;
+AE25;AE25;1100 1174 11B8;AE25;1100 1174 11B8;
+AE26;AE26;1100 1174 11B9;AE26;1100 1174 11B9;
+AE27;AE27;1100 1174 11BA;AE27;1100 1174 11BA;
+AE28;AE28;1100 1174 11BB;AE28;1100 1174 11BB;
+AE29;AE29;1100 1174 11BC;AE29;1100 1174 11BC;
+AE2A;AE2A;1100 1174 11BD;AE2A;1100 1174 11BD;
+AE2B;AE2B;1100 1174 11BE;AE2B;1100 1174 11BE;
+AE2C;AE2C;1100 1174 11BF;AE2C;1100 1174 11BF;
+AE2D;AE2D;1100 1174 11C0;AE2D;1100 1174 11C0;
+AE2E;AE2E;1100 1174 11C1;AE2E;1100 1174 11C1;
+AE2F;AE2F;1100 1174 11C2;AE2F;1100 1174 11C2;
+AE30;AE30;1100 1175;AE30;1100 1175;
+AE31;AE31;1100 1175 11A8;AE31;1100 1175 11A8;
+AE32;AE32;1100 1175 11A9;AE32;1100 1175 11A9;
+AE33;AE33;1100 1175 11AA;AE33;1100 1175 11AA;
+AE34;AE34;1100 1175 11AB;AE34;1100 1175 11AB;
+AE35;AE35;1100 1175 11AC;AE35;1100 1175 11AC;
+AE36;AE36;1100 1175 11AD;AE36;1100 1175 11AD;
+AE37;AE37;1100 1175 11AE;AE37;1100 1175 11AE;
+AE38;AE38;1100 1175 11AF;AE38;1100 1175 11AF;
+AE39;AE39;1100 1175 11B0;AE39;1100 1175 11B0;
+AE3A;AE3A;1100 1175 11B1;AE3A;1100 1175 11B1;
+AE3B;AE3B;1100 1175 11B2;AE3B;1100 1175 11B2;
+AE3C;AE3C;1100 1175 11B3;AE3C;1100 1175 11B3;
+AE3D;AE3D;1100 1175 11B4;AE3D;1100 1175 11B4;
+AE3E;AE3E;1100 1175 11B5;AE3E;1100 1175 11B5;
+AE3F;AE3F;1100 1175 11B6;AE3F;1100 1175 11B6;
+AE40;AE40;1100 1175 11B7;AE40;1100 1175 11B7;
+AE41;AE41;1100 1175 11B8;AE41;1100 1175 11B8;
+AE42;AE42;1100 1175 11B9;AE42;1100 1175 11B9;
+AE43;AE43;1100 1175 11BA;AE43;1100 1175 11BA;
+AE44;AE44;1100 1175 11BB;AE44;1100 1175 11BB;
+AE45;AE45;1100 1175 11BC;AE45;1100 1175 11BC;
+AE46;AE46;1100 1175 11BD;AE46;1100 1175 11BD;
+AE47;AE47;1100 1175 11BE;AE47;1100 1175 11BE;
+AE48;AE48;1100 1175 11BF;AE48;1100 1175 11BF;
+AE49;AE49;1100 1175 11C0;AE49;1100 1175 11C0;
+AE4A;AE4A;1100 1175 11C1;AE4A;1100 1175 11C1;
+AE4B;AE4B;1100 1175 11C2;AE4B;1100 1175 11C2;
+AE4C;AE4C;1101 1161;AE4C;1101 1161;
+AE4D;AE4D;1101 1161 11A8;AE4D;1101 1161 11A8;
+AE4E;AE4E;1101 1161 11A9;AE4E;1101 1161 11A9;
+AE4F;AE4F;1101 1161 11AA;AE4F;1101 1161 11AA;
+AE50;AE50;1101 1161 11AB;AE50;1101 1161 11AB;
+AE51;AE51;1101 1161 11AC;AE51;1101 1161 11AC;
+AE52;AE52;1101 1161 11AD;AE52;1101 1161 11AD;
+AE53;AE53;1101 1161 11AE;AE53;1101 1161 11AE;
+AE54;AE54;1101 1161 11AF;AE54;1101 1161 11AF;
+AE55;AE55;1101 1161 11B0;AE55;1101 1161 11B0;
+AE56;AE56;1101 1161 11B1;AE56;1101 1161 11B1;
+AE57;AE57;1101 1161 11B2;AE57;1101 1161 11B2;
+AE58;AE58;1101 1161 11B3;AE58;1101 1161 11B3;
+AE59;AE59;1101 1161 11B4;AE59;1101 1161 11B4;
+AE5A;AE5A;1101 1161 11B5;AE5A;1101 1161 11B5;
+AE5B;AE5B;1101 1161 11B6;AE5B;1101 1161 11B6;
+AE5C;AE5C;1101 1161 11B7;AE5C;1101 1161 11B7;
+AE5D;AE5D;1101 1161 11B8;AE5D;1101 1161 11B8;
+AE5E;AE5E;1101 1161 11B9;AE5E;1101 1161 11B9;
+AE5F;AE5F;1101 1161 11BA;AE5F;1101 1161 11BA;
+AE60;AE60;1101 1161 11BB;AE60;1101 1161 11BB;
+AE61;AE61;1101 1161 11BC;AE61;1101 1161 11BC;
+AE62;AE62;1101 1161 11BD;AE62;1101 1161 11BD;
+AE63;AE63;1101 1161 11BE;AE63;1101 1161 11BE;
+AE64;AE64;1101 1161 11BF;AE64;1101 1161 11BF;
+AE65;AE65;1101 1161 11C0;AE65;1101 1161 11C0;
+AE66;AE66;1101 1161 11C1;AE66;1101 1161 11C1;
+AE67;AE67;1101 1161 11C2;AE67;1101 1161 11C2;
+AE68;AE68;1101 1162;AE68;1101 1162;
+AE69;AE69;1101 1162 11A8;AE69;1101 1162 11A8;
+AE6A;AE6A;1101 1162 11A9;AE6A;1101 1162 11A9;
+AE6B;AE6B;1101 1162 11AA;AE6B;1101 1162 11AA;
+AE6C;AE6C;1101 1162 11AB;AE6C;1101 1162 11AB;
+AE6D;AE6D;1101 1162 11AC;AE6D;1101 1162 11AC;
+AE6E;AE6E;1101 1162 11AD;AE6E;1101 1162 11AD;
+AE6F;AE6F;1101 1162 11AE;AE6F;1101 1162 11AE;
+AE70;AE70;1101 1162 11AF;AE70;1101 1162 11AF;
+AE71;AE71;1101 1162 11B0;AE71;1101 1162 11B0;
+AE72;AE72;1101 1162 11B1;AE72;1101 1162 11B1;
+AE73;AE73;1101 1162 11B2;AE73;1101 1162 11B2;
+AE74;AE74;1101 1162 11B3;AE74;1101 1162 11B3;
+AE75;AE75;1101 1162 11B4;AE75;1101 1162 11B4;
+AE76;AE76;1101 1162 11B5;AE76;1101 1162 11B5;
+AE77;AE77;1101 1162 11B6;AE77;1101 1162 11B6;
+AE78;AE78;1101 1162 11B7;AE78;1101 1162 11B7;
+AE79;AE79;1101 1162 11B8;AE79;1101 1162 11B8;
+AE7A;AE7A;1101 1162 11B9;AE7A;1101 1162 11B9;
+AE7B;AE7B;1101 1162 11BA;AE7B;1101 1162 11BA;
+AE7C;AE7C;1101 1162 11BB;AE7C;1101 1162 11BB;
+AE7D;AE7D;1101 1162 11BC;AE7D;1101 1162 11BC;
+AE7E;AE7E;1101 1162 11BD;AE7E;1101 1162 11BD;
+AE7F;AE7F;1101 1162 11BE;AE7F;1101 1162 11BE;
+AE80;AE80;1101 1162 11BF;AE80;1101 1162 11BF;
+AE81;AE81;1101 1162 11C0;AE81;1101 1162 11C0;
+AE82;AE82;1101 1162 11C1;AE82;1101 1162 11C1;
+AE83;AE83;1101 1162 11C2;AE83;1101 1162 11C2;
+AE84;AE84;1101 1163;AE84;1101 1163;
+AE85;AE85;1101 1163 11A8;AE85;1101 1163 11A8;
+AE86;AE86;1101 1163 11A9;AE86;1101 1163 11A9;
+AE87;AE87;1101 1163 11AA;AE87;1101 1163 11AA;
+AE88;AE88;1101 1163 11AB;AE88;1101 1163 11AB;
+AE89;AE89;1101 1163 11AC;AE89;1101 1163 11AC;
+AE8A;AE8A;1101 1163 11AD;AE8A;1101 1163 11AD;
+AE8B;AE8B;1101 1163 11AE;AE8B;1101 1163 11AE;
+AE8C;AE8C;1101 1163 11AF;AE8C;1101 1163 11AF;
+AE8D;AE8D;1101 1163 11B0;AE8D;1101 1163 11B0;
+AE8E;AE8E;1101 1163 11B1;AE8E;1101 1163 11B1;
+AE8F;AE8F;1101 1163 11B2;AE8F;1101 1163 11B2;
+AE90;AE90;1101 1163 11B3;AE90;1101 1163 11B3;
+AE91;AE91;1101 1163 11B4;AE91;1101 1163 11B4;
+AE92;AE92;1101 1163 11B5;AE92;1101 1163 11B5;
+AE93;AE93;1101 1163 11B6;AE93;1101 1163 11B6;
+AE94;AE94;1101 1163 11B7;AE94;1101 1163 11B7;
+AE95;AE95;1101 1163 11B8;AE95;1101 1163 11B8;
+AE96;AE96;1101 1163 11B9;AE96;1101 1163 11B9;
+AE97;AE97;1101 1163 11BA;AE97;1101 1163 11BA;
+AE98;AE98;1101 1163 11BB;AE98;1101 1163 11BB;
+AE99;AE99;1101 1163 11BC;AE99;1101 1163 11BC;
+AE9A;AE9A;1101 1163 11BD;AE9A;1101 1163 11BD;
+AE9B;AE9B;1101 1163 11BE;AE9B;1101 1163 11BE;
+AE9C;AE9C;1101 1163 11BF;AE9C;1101 1163 11BF;
+AE9D;AE9D;1101 1163 11C0;AE9D;1101 1163 11C0;
+AE9E;AE9E;1101 1163 11C1;AE9E;1101 1163 11C1;
+AE9F;AE9F;1101 1163 11C2;AE9F;1101 1163 11C2;
+AEA0;AEA0;1101 1164;AEA0;1101 1164;
+AEA1;AEA1;1101 1164 11A8;AEA1;1101 1164 11A8;
+AEA2;AEA2;1101 1164 11A9;AEA2;1101 1164 11A9;
+AEA3;AEA3;1101 1164 11AA;AEA3;1101 1164 11AA;
+AEA4;AEA4;1101 1164 11AB;AEA4;1101 1164 11AB;
+AEA5;AEA5;1101 1164 11AC;AEA5;1101 1164 11AC;
+AEA6;AEA6;1101 1164 11AD;AEA6;1101 1164 11AD;
+AEA7;AEA7;1101 1164 11AE;AEA7;1101 1164 11AE;
+AEA8;AEA8;1101 1164 11AF;AEA8;1101 1164 11AF;
+AEA9;AEA9;1101 1164 11B0;AEA9;1101 1164 11B0;
+AEAA;AEAA;1101 1164 11B1;AEAA;1101 1164 11B1;
+AEAB;AEAB;1101 1164 11B2;AEAB;1101 1164 11B2;
+AEAC;AEAC;1101 1164 11B3;AEAC;1101 1164 11B3;
+AEAD;AEAD;1101 1164 11B4;AEAD;1101 1164 11B4;
+AEAE;AEAE;1101 1164 11B5;AEAE;1101 1164 11B5;
+AEAF;AEAF;1101 1164 11B6;AEAF;1101 1164 11B6;
+AEB0;AEB0;1101 1164 11B7;AEB0;1101 1164 11B7;
+AEB1;AEB1;1101 1164 11B8;AEB1;1101 1164 11B8;
+AEB2;AEB2;1101 1164 11B9;AEB2;1101 1164 11B9;
+AEB3;AEB3;1101 1164 11BA;AEB3;1101 1164 11BA;
+AEB4;AEB4;1101 1164 11BB;AEB4;1101 1164 11BB;
+AEB5;AEB5;1101 1164 11BC;AEB5;1101 1164 11BC;
+AEB6;AEB6;1101 1164 11BD;AEB6;1101 1164 11BD;
+AEB7;AEB7;1101 1164 11BE;AEB7;1101 1164 11BE;
+AEB8;AEB8;1101 1164 11BF;AEB8;1101 1164 11BF;
+AEB9;AEB9;1101 1164 11C0;AEB9;1101 1164 11C0;
+AEBA;AEBA;1101 1164 11C1;AEBA;1101 1164 11C1;
+AEBB;AEBB;1101 1164 11C2;AEBB;1101 1164 11C2;
+AEBC;AEBC;1101 1165;AEBC;1101 1165;
+AEBD;AEBD;1101 1165 11A8;AEBD;1101 1165 11A8;
+AEBE;AEBE;1101 1165 11A9;AEBE;1101 1165 11A9;
+AEBF;AEBF;1101 1165 11AA;AEBF;1101 1165 11AA;
+AEC0;AEC0;1101 1165 11AB;AEC0;1101 1165 11AB;
+AEC1;AEC1;1101 1165 11AC;AEC1;1101 1165 11AC;
+AEC2;AEC2;1101 1165 11AD;AEC2;1101 1165 11AD;
+AEC3;AEC3;1101 1165 11AE;AEC3;1101 1165 11AE;
+AEC4;AEC4;1101 1165 11AF;AEC4;1101 1165 11AF;
+AEC5;AEC5;1101 1165 11B0;AEC5;1101 1165 11B0;
+AEC6;AEC6;1101 1165 11B1;AEC6;1101 1165 11B1;
+AEC7;AEC7;1101 1165 11B2;AEC7;1101 1165 11B2;
+AEC8;AEC8;1101 1165 11B3;AEC8;1101 1165 11B3;
+AEC9;AEC9;1101 1165 11B4;AEC9;1101 1165 11B4;
+AECA;AECA;1101 1165 11B5;AECA;1101 1165 11B5;
+AECB;AECB;1101 1165 11B6;AECB;1101 1165 11B6;
+AECC;AECC;1101 1165 11B7;AECC;1101 1165 11B7;
+AECD;AECD;1101 1165 11B8;AECD;1101 1165 11B8;
+AECE;AECE;1101 1165 11B9;AECE;1101 1165 11B9;
+AECF;AECF;1101 1165 11BA;AECF;1101 1165 11BA;
+AED0;AED0;1101 1165 11BB;AED0;1101 1165 11BB;
+AED1;AED1;1101 1165 11BC;AED1;1101 1165 11BC;
+AED2;AED2;1101 1165 11BD;AED2;1101 1165 11BD;
+AED3;AED3;1101 1165 11BE;AED3;1101 1165 11BE;
+AED4;AED4;1101 1165 11BF;AED4;1101 1165 11BF;
+AED5;AED5;1101 1165 11C0;AED5;1101 1165 11C0;
+AED6;AED6;1101 1165 11C1;AED6;1101 1165 11C1;
+AED7;AED7;1101 1165 11C2;AED7;1101 1165 11C2;
+AED8;AED8;1101 1166;AED8;1101 1166;
+AED9;AED9;1101 1166 11A8;AED9;1101 1166 11A8;
+AEDA;AEDA;1101 1166 11A9;AEDA;1101 1166 11A9;
+AEDB;AEDB;1101 1166 11AA;AEDB;1101 1166 11AA;
+AEDC;AEDC;1101 1166 11AB;AEDC;1101 1166 11AB;
+AEDD;AEDD;1101 1166 11AC;AEDD;1101 1166 11AC;
+AEDE;AEDE;1101 1166 11AD;AEDE;1101 1166 11AD;
+AEDF;AEDF;1101 1166 11AE;AEDF;1101 1166 11AE;
+AEE0;AEE0;1101 1166 11AF;AEE0;1101 1166 11AF;
+AEE1;AEE1;1101 1166 11B0;AEE1;1101 1166 11B0;
+AEE2;AEE2;1101 1166 11B1;AEE2;1101 1166 11B1;
+AEE3;AEE3;1101 1166 11B2;AEE3;1101 1166 11B2;
+AEE4;AEE4;1101 1166 11B3;AEE4;1101 1166 11B3;
+AEE5;AEE5;1101 1166 11B4;AEE5;1101 1166 11B4;
+AEE6;AEE6;1101 1166 11B5;AEE6;1101 1166 11B5;
+AEE7;AEE7;1101 1166 11B6;AEE7;1101 1166 11B6;
+AEE8;AEE8;1101 1166 11B7;AEE8;1101 1166 11B7;
+AEE9;AEE9;1101 1166 11B8;AEE9;1101 1166 11B8;
+AEEA;AEEA;1101 1166 11B9;AEEA;1101 1166 11B9;
+AEEB;AEEB;1101 1166 11BA;AEEB;1101 1166 11BA;
+AEEC;AEEC;1101 1166 11BB;AEEC;1101 1166 11BB;
+AEED;AEED;1101 1166 11BC;AEED;1101 1166 11BC;
+AEEE;AEEE;1101 1166 11BD;AEEE;1101 1166 11BD;
+AEEF;AEEF;1101 1166 11BE;AEEF;1101 1166 11BE;
+AEF0;AEF0;1101 1166 11BF;AEF0;1101 1166 11BF;
+AEF1;AEF1;1101 1166 11C0;AEF1;1101 1166 11C0;
+AEF2;AEF2;1101 1166 11C1;AEF2;1101 1166 11C1;
+AEF3;AEF3;1101 1166 11C2;AEF3;1101 1166 11C2;
+AEF4;AEF4;1101 1167;AEF4;1101 1167;
+AEF5;AEF5;1101 1167 11A8;AEF5;1101 1167 11A8;
+AEF6;AEF6;1101 1167 11A9;AEF6;1101 1167 11A9;
+AEF7;AEF7;1101 1167 11AA;AEF7;1101 1167 11AA;
+AEF8;AEF8;1101 1167 11AB;AEF8;1101 1167 11AB;
+AEF9;AEF9;1101 1167 11AC;AEF9;1101 1167 11AC;
+AEFA;AEFA;1101 1167 11AD;AEFA;1101 1167 11AD;
+AEFB;AEFB;1101 1167 11AE;AEFB;1101 1167 11AE;
+AEFC;AEFC;1101 1167 11AF;AEFC;1101 1167 11AF;
+AEFD;AEFD;1101 1167 11B0;AEFD;1101 1167 11B0;
+AEFE;AEFE;1101 1167 11B1;AEFE;1101 1167 11B1;
+AEFF;AEFF;1101 1167 11B2;AEFF;1101 1167 11B2;
+AF00;AF00;1101 1167 11B3;AF00;1101 1167 11B3;
+AF01;AF01;1101 1167 11B4;AF01;1101 1167 11B4;
+AF02;AF02;1101 1167 11B5;AF02;1101 1167 11B5;
+AF03;AF03;1101 1167 11B6;AF03;1101 1167 11B6;
+AF04;AF04;1101 1167 11B7;AF04;1101 1167 11B7;
+AF05;AF05;1101 1167 11B8;AF05;1101 1167 11B8;
+AF06;AF06;1101 1167 11B9;AF06;1101 1167 11B9;
+AF07;AF07;1101 1167 11BA;AF07;1101 1167 11BA;
+AF08;AF08;1101 1167 11BB;AF08;1101 1167 11BB;
+AF09;AF09;1101 1167 11BC;AF09;1101 1167 11BC;
+AF0A;AF0A;1101 1167 11BD;AF0A;1101 1167 11BD;
+AF0B;AF0B;1101 1167 11BE;AF0B;1101 1167 11BE;
+AF0C;AF0C;1101 1167 11BF;AF0C;1101 1167 11BF;
+AF0D;AF0D;1101 1167 11C0;AF0D;1101 1167 11C0;
+AF0E;AF0E;1101 1167 11C1;AF0E;1101 1167 11C1;
+AF0F;AF0F;1101 1167 11C2;AF0F;1101 1167 11C2;
+AF10;AF10;1101 1168;AF10;1101 1168;
+AF11;AF11;1101 1168 11A8;AF11;1101 1168 11A8;
+AF12;AF12;1101 1168 11A9;AF12;1101 1168 11A9;
+AF13;AF13;1101 1168 11AA;AF13;1101 1168 11AA;
+AF14;AF14;1101 1168 11AB;AF14;1101 1168 11AB;
+AF15;AF15;1101 1168 11AC;AF15;1101 1168 11AC;
+AF16;AF16;1101 1168 11AD;AF16;1101 1168 11AD;
+AF17;AF17;1101 1168 11AE;AF17;1101 1168 11AE;
+AF18;AF18;1101 1168 11AF;AF18;1101 1168 11AF;
+AF19;AF19;1101 1168 11B0;AF19;1101 1168 11B0;
+AF1A;AF1A;1101 1168 11B1;AF1A;1101 1168 11B1;
+AF1B;AF1B;1101 1168 11B2;AF1B;1101 1168 11B2;
+AF1C;AF1C;1101 1168 11B3;AF1C;1101 1168 11B3;
+AF1D;AF1D;1101 1168 11B4;AF1D;1101 1168 11B4;
+AF1E;AF1E;1101 1168 11B5;AF1E;1101 1168 11B5;
+AF1F;AF1F;1101 1168 11B6;AF1F;1101 1168 11B6;
+AF20;AF20;1101 1168 11B7;AF20;1101 1168 11B7;
+AF21;AF21;1101 1168 11B8;AF21;1101 1168 11B8;
+AF22;AF22;1101 1168 11B9;AF22;1101 1168 11B9;
+AF23;AF23;1101 1168 11BA;AF23;1101 1168 11BA;
+AF24;AF24;1101 1168 11BB;AF24;1101 1168 11BB;
+AF25;AF25;1101 1168 11BC;AF25;1101 1168 11BC;
+AF26;AF26;1101 1168 11BD;AF26;1101 1168 11BD;
+AF27;AF27;1101 1168 11BE;AF27;1101 1168 11BE;
+AF28;AF28;1101 1168 11BF;AF28;1101 1168 11BF;
+AF29;AF29;1101 1168 11C0;AF29;1101 1168 11C0;
+AF2A;AF2A;1101 1168 11C1;AF2A;1101 1168 11C1;
+AF2B;AF2B;1101 1168 11C2;AF2B;1101 1168 11C2;
+AF2C;AF2C;1101 1169;AF2C;1101 1169;
+AF2D;AF2D;1101 1169 11A8;AF2D;1101 1169 11A8;
+AF2E;AF2E;1101 1169 11A9;AF2E;1101 1169 11A9;
+AF2F;AF2F;1101 1169 11AA;AF2F;1101 1169 11AA;
+AF30;AF30;1101 1169 11AB;AF30;1101 1169 11AB;
+AF31;AF31;1101 1169 11AC;AF31;1101 1169 11AC;
+AF32;AF32;1101 1169 11AD;AF32;1101 1169 11AD;
+AF33;AF33;1101 1169 11AE;AF33;1101 1169 11AE;
+AF34;AF34;1101 1169 11AF;AF34;1101 1169 11AF;
+AF35;AF35;1101 1169 11B0;AF35;1101 1169 11B0;
+AF36;AF36;1101 1169 11B1;AF36;1101 1169 11B1;
+AF37;AF37;1101 1169 11B2;AF37;1101 1169 11B2;
+AF38;AF38;1101 1169 11B3;AF38;1101 1169 11B3;
+AF39;AF39;1101 1169 11B4;AF39;1101 1169 11B4;
+AF3A;AF3A;1101 1169 11B5;AF3A;1101 1169 11B5;
+AF3B;AF3B;1101 1169 11B6;AF3B;1101 1169 11B6;
+AF3C;AF3C;1101 1169 11B7;AF3C;1101 1169 11B7;
+AF3D;AF3D;1101 1169 11B8;AF3D;1101 1169 11B8;
+AF3E;AF3E;1101 1169 11B9;AF3E;1101 1169 11B9;
+AF3F;AF3F;1101 1169 11BA;AF3F;1101 1169 11BA;
+AF40;AF40;1101 1169 11BB;AF40;1101 1169 11BB;
+AF41;AF41;1101 1169 11BC;AF41;1101 1169 11BC;
+AF42;AF42;1101 1169 11BD;AF42;1101 1169 11BD;
+AF43;AF43;1101 1169 11BE;AF43;1101 1169 11BE;
+AF44;AF44;1101 1169 11BF;AF44;1101 1169 11BF;
+AF45;AF45;1101 1169 11C0;AF45;1101 1169 11C0;
+AF46;AF46;1101 1169 11C1;AF46;1101 1169 11C1;
+AF47;AF47;1101 1169 11C2;AF47;1101 1169 11C2;
+AF48;AF48;1101 116A;AF48;1101 116A;
+AF49;AF49;1101 116A 11A8;AF49;1101 116A 11A8;
+AF4A;AF4A;1101 116A 11A9;AF4A;1101 116A 11A9;
+AF4B;AF4B;1101 116A 11AA;AF4B;1101 116A 11AA;
+AF4C;AF4C;1101 116A 11AB;AF4C;1101 116A 11AB;
+AF4D;AF4D;1101 116A 11AC;AF4D;1101 116A 11AC;
+AF4E;AF4E;1101 116A 11AD;AF4E;1101 116A 11AD;
+AF4F;AF4F;1101 116A 11AE;AF4F;1101 116A 11AE;
+AF50;AF50;1101 116A 11AF;AF50;1101 116A 11AF;
+AF51;AF51;1101 116A 11B0;AF51;1101 116A 11B0;
+AF52;AF52;1101 116A 11B1;AF52;1101 116A 11B1;
+AF53;AF53;1101 116A 11B2;AF53;1101 116A 11B2;
+AF54;AF54;1101 116A 11B3;AF54;1101 116A 11B3;
+AF55;AF55;1101 116A 11B4;AF55;1101 116A 11B4;
+AF56;AF56;1101 116A 11B5;AF56;1101 116A 11B5;
+AF57;AF57;1101 116A 11B6;AF57;1101 116A 11B6;
+AF58;AF58;1101 116A 11B7;AF58;1101 116A 11B7;
+AF59;AF59;1101 116A 11B8;AF59;1101 116A 11B8;
+AF5A;AF5A;1101 116A 11B9;AF5A;1101 116A 11B9;
+AF5B;AF5B;1101 116A 11BA;AF5B;1101 116A 11BA;
+AF5C;AF5C;1101 116A 11BB;AF5C;1101 116A 11BB;
+AF5D;AF5D;1101 116A 11BC;AF5D;1101 116A 11BC;
+AF5E;AF5E;1101 116A 11BD;AF5E;1101 116A 11BD;
+AF5F;AF5F;1101 116A 11BE;AF5F;1101 116A 11BE;
+AF60;AF60;1101 116A 11BF;AF60;1101 116A 11BF;
+AF61;AF61;1101 116A 11C0;AF61;1101 116A 11C0;
+AF62;AF62;1101 116A 11C1;AF62;1101 116A 11C1;
+AF63;AF63;1101 116A 11C2;AF63;1101 116A 11C2;
+AF64;AF64;1101 116B;AF64;1101 116B;
+AF65;AF65;1101 116B 11A8;AF65;1101 116B 11A8;
+AF66;AF66;1101 116B 11A9;AF66;1101 116B 11A9;
+AF67;AF67;1101 116B 11AA;AF67;1101 116B 11AA;
+AF68;AF68;1101 116B 11AB;AF68;1101 116B 11AB;
+AF69;AF69;1101 116B 11AC;AF69;1101 116B 11AC;
+AF6A;AF6A;1101 116B 11AD;AF6A;1101 116B 11AD;
+AF6B;AF6B;1101 116B 11AE;AF6B;1101 116B 11AE;
+AF6C;AF6C;1101 116B 11AF;AF6C;1101 116B 11AF;
+AF6D;AF6D;1101 116B 11B0;AF6D;1101 116B 11B0;
+AF6E;AF6E;1101 116B 11B1;AF6E;1101 116B 11B1;
+AF6F;AF6F;1101 116B 11B2;AF6F;1101 116B 11B2;
+AF70;AF70;1101 116B 11B3;AF70;1101 116B 11B3;
+AF71;AF71;1101 116B 11B4;AF71;1101 116B 11B4;
+AF72;AF72;1101 116B 11B5;AF72;1101 116B 11B5;
+AF73;AF73;1101 116B 11B6;AF73;1101 116B 11B6;
+AF74;AF74;1101 116B 11B7;AF74;1101 116B 11B7;
+AF75;AF75;1101 116B 11B8;AF75;1101 116B 11B8;
+AF76;AF76;1101 116B 11B9;AF76;1101 116B 11B9;
+AF77;AF77;1101 116B 11BA;AF77;1101 116B 11BA;
+AF78;AF78;1101 116B 11BB;AF78;1101 116B 11BB;
+AF79;AF79;1101 116B 11BC;AF79;1101 116B 11BC;
+AF7A;AF7A;1101 116B 11BD;AF7A;1101 116B 11BD;
+AF7B;AF7B;1101 116B 11BE;AF7B;1101 116B 11BE;
+AF7C;AF7C;1101 116B 11BF;AF7C;1101 116B 11BF;
+AF7D;AF7D;1101 116B 11C0;AF7D;1101 116B 11C0;
+AF7E;AF7E;1101 116B 11C1;AF7E;1101 116B 11C1;
+AF7F;AF7F;1101 116B 11C2;AF7F;1101 116B 11C2;
+AF80;AF80;1101 116C;AF80;1101 116C;
+AF81;AF81;1101 116C 11A8;AF81;1101 116C 11A8;
+AF82;AF82;1101 116C 11A9;AF82;1101 116C 11A9;
+AF83;AF83;1101 116C 11AA;AF83;1101 116C 11AA;
+AF84;AF84;1101 116C 11AB;AF84;1101 116C 11AB;
+AF85;AF85;1101 116C 11AC;AF85;1101 116C 11AC;
+AF86;AF86;1101 116C 11AD;AF86;1101 116C 11AD;
+AF87;AF87;1101 116C 11AE;AF87;1101 116C 11AE;
+AF88;AF88;1101 116C 11AF;AF88;1101 116C 11AF;
+AF89;AF89;1101 116C 11B0;AF89;1101 116C 11B0;
+AF8A;AF8A;1101 116C 11B1;AF8A;1101 116C 11B1;
+AF8B;AF8B;1101 116C 11B2;AF8B;1101 116C 11B2;
+AF8C;AF8C;1101 116C 11B3;AF8C;1101 116C 11B3;
+AF8D;AF8D;1101 116C 11B4;AF8D;1101 116C 11B4;
+AF8E;AF8E;1101 116C 11B5;AF8E;1101 116C 11B5;
+AF8F;AF8F;1101 116C 11B6;AF8F;1101 116C 11B6;
+AF90;AF90;1101 116C 11B7;AF90;1101 116C 11B7;
+AF91;AF91;1101 116C 11B8;AF91;1101 116C 11B8;
+AF92;AF92;1101 116C 11B9;AF92;1101 116C 11B9;
+AF93;AF93;1101 116C 11BA;AF93;1101 116C 11BA;
+AF94;AF94;1101 116C 11BB;AF94;1101 116C 11BB;
+AF95;AF95;1101 116C 11BC;AF95;1101 116C 11BC;
+AF96;AF96;1101 116C 11BD;AF96;1101 116C 11BD;
+AF97;AF97;1101 116C 11BE;AF97;1101 116C 11BE;
+AF98;AF98;1101 116C 11BF;AF98;1101 116C 11BF;
+AF99;AF99;1101 116C 11C0;AF99;1101 116C 11C0;
+AF9A;AF9A;1101 116C 11C1;AF9A;1101 116C 11C1;
+AF9B;AF9B;1101 116C 11C2;AF9B;1101 116C 11C2;
+AF9C;AF9C;1101 116D;AF9C;1101 116D;
+AF9D;AF9D;1101 116D 11A8;AF9D;1101 116D 11A8;
+AF9E;AF9E;1101 116D 11A9;AF9E;1101 116D 11A9;
+AF9F;AF9F;1101 116D 11AA;AF9F;1101 116D 11AA;
+AFA0;AFA0;1101 116D 11AB;AFA0;1101 116D 11AB;
+AFA1;AFA1;1101 116D 11AC;AFA1;1101 116D 11AC;
+AFA2;AFA2;1101 116D 11AD;AFA2;1101 116D 11AD;
+AFA3;AFA3;1101 116D 11AE;AFA3;1101 116D 11AE;
+AFA4;AFA4;1101 116D 11AF;AFA4;1101 116D 11AF;
+AFA5;AFA5;1101 116D 11B0;AFA5;1101 116D 11B0;
+AFA6;AFA6;1101 116D 11B1;AFA6;1101 116D 11B1;
+AFA7;AFA7;1101 116D 11B2;AFA7;1101 116D 11B2;
+AFA8;AFA8;1101 116D 11B3;AFA8;1101 116D 11B3;
+AFA9;AFA9;1101 116D 11B4;AFA9;1101 116D 11B4;
+AFAA;AFAA;1101 116D 11B5;AFAA;1101 116D 11B5;
+AFAB;AFAB;1101 116D 11B6;AFAB;1101 116D 11B6;
+AFAC;AFAC;1101 116D 11B7;AFAC;1101 116D 11B7;
+AFAD;AFAD;1101 116D 11B8;AFAD;1101 116D 11B8;
+AFAE;AFAE;1101 116D 11B9;AFAE;1101 116D 11B9;
+AFAF;AFAF;1101 116D 11BA;AFAF;1101 116D 11BA;
+AFB0;AFB0;1101 116D 11BB;AFB0;1101 116D 11BB;
+AFB1;AFB1;1101 116D 11BC;AFB1;1101 116D 11BC;
+AFB2;AFB2;1101 116D 11BD;AFB2;1101 116D 11BD;
+AFB3;AFB3;1101 116D 11BE;AFB3;1101 116D 11BE;
+AFB4;AFB4;1101 116D 11BF;AFB4;1101 116D 11BF;
+AFB5;AFB5;1101 116D 11C0;AFB5;1101 116D 11C0;
+AFB6;AFB6;1101 116D 11C1;AFB6;1101 116D 11C1;
+AFB7;AFB7;1101 116D 11C2;AFB7;1101 116D 11C2;
+AFB8;AFB8;1101 116E;AFB8;1101 116E;
+AFB9;AFB9;1101 116E 11A8;AFB9;1101 116E 11A8;
+AFBA;AFBA;1101 116E 11A9;AFBA;1101 116E 11A9;
+AFBB;AFBB;1101 116E 11AA;AFBB;1101 116E 11AA;
+AFBC;AFBC;1101 116E 11AB;AFBC;1101 116E 11AB;
+AFBD;AFBD;1101 116E 11AC;AFBD;1101 116E 11AC;
+AFBE;AFBE;1101 116E 11AD;AFBE;1101 116E 11AD;
+AFBF;AFBF;1101 116E 11AE;AFBF;1101 116E 11AE;
+AFC0;AFC0;1101 116E 11AF;AFC0;1101 116E 11AF;
+AFC1;AFC1;1101 116E 11B0;AFC1;1101 116E 11B0;
+AFC2;AFC2;1101 116E 11B1;AFC2;1101 116E 11B1;
+AFC3;AFC3;1101 116E 11B2;AFC3;1101 116E 11B2;
+AFC4;AFC4;1101 116E 11B3;AFC4;1101 116E 11B3;
+AFC5;AFC5;1101 116E 11B4;AFC5;1101 116E 11B4;
+AFC6;AFC6;1101 116E 11B5;AFC6;1101 116E 11B5;
+AFC7;AFC7;1101 116E 11B6;AFC7;1101 116E 11B6;
+AFC8;AFC8;1101 116E 11B7;AFC8;1101 116E 11B7;
+AFC9;AFC9;1101 116E 11B8;AFC9;1101 116E 11B8;
+AFCA;AFCA;1101 116E 11B9;AFCA;1101 116E 11B9;
+AFCB;AFCB;1101 116E 11BA;AFCB;1101 116E 11BA;
+AFCC;AFCC;1101 116E 11BB;AFCC;1101 116E 11BB;
+AFCD;AFCD;1101 116E 11BC;AFCD;1101 116E 11BC;
+AFCE;AFCE;1101 116E 11BD;AFCE;1101 116E 11BD;
+AFCF;AFCF;1101 116E 11BE;AFCF;1101 116E 11BE;
+AFD0;AFD0;1101 116E 11BF;AFD0;1101 116E 11BF;
+AFD1;AFD1;1101 116E 11C0;AFD1;1101 116E 11C0;
+AFD2;AFD2;1101 116E 11C1;AFD2;1101 116E 11C1;
+AFD3;AFD3;1101 116E 11C2;AFD3;1101 116E 11C2;
+AFD4;AFD4;1101 116F;AFD4;1101 116F;
+AFD5;AFD5;1101 116F 11A8;AFD5;1101 116F 11A8;
+AFD6;AFD6;1101 116F 11A9;AFD6;1101 116F 11A9;
+AFD7;AFD7;1101 116F 11AA;AFD7;1101 116F 11AA;
+AFD8;AFD8;1101 116F 11AB;AFD8;1101 116F 11AB;
+AFD9;AFD9;1101 116F 11AC;AFD9;1101 116F 11AC;
+AFDA;AFDA;1101 116F 11AD;AFDA;1101 116F 11AD;
+AFDB;AFDB;1101 116F 11AE;AFDB;1101 116F 11AE;
+AFDC;AFDC;1101 116F 11AF;AFDC;1101 116F 11AF;
+AFDD;AFDD;1101 116F 11B0;AFDD;1101 116F 11B0;
+AFDE;AFDE;1101 116F 11B1;AFDE;1101 116F 11B1;
+AFDF;AFDF;1101 116F 11B2;AFDF;1101 116F 11B2;
+AFE0;AFE0;1101 116F 11B3;AFE0;1101 116F 11B3;
+AFE1;AFE1;1101 116F 11B4;AFE1;1101 116F 11B4;
+AFE2;AFE2;1101 116F 11B5;AFE2;1101 116F 11B5;
+AFE3;AFE3;1101 116F 11B6;AFE3;1101 116F 11B6;
+AFE4;AFE4;1101 116F 11B7;AFE4;1101 116F 11B7;
+AFE5;AFE5;1101 116F 11B8;AFE5;1101 116F 11B8;
+AFE6;AFE6;1101 116F 11B9;AFE6;1101 116F 11B9;
+AFE7;AFE7;1101 116F 11BA;AFE7;1101 116F 11BA;
+AFE8;AFE8;1101 116F 11BB;AFE8;1101 116F 11BB;
+AFE9;AFE9;1101 116F 11BC;AFE9;1101 116F 11BC;
+AFEA;AFEA;1101 116F 11BD;AFEA;1101 116F 11BD;
+AFEB;AFEB;1101 116F 11BE;AFEB;1101 116F 11BE;
+AFEC;AFEC;1101 116F 11BF;AFEC;1101 116F 11BF;
+AFED;AFED;1101 116F 11C0;AFED;1101 116F 11C0;
+AFEE;AFEE;1101 116F 11C1;AFEE;1101 116F 11C1;
+AFEF;AFEF;1101 116F 11C2;AFEF;1101 116F 11C2;
+AFF0;AFF0;1101 1170;AFF0;1101 1170;
+AFF1;AFF1;1101 1170 11A8;AFF1;1101 1170 11A8;
+AFF2;AFF2;1101 1170 11A9;AFF2;1101 1170 11A9;
+AFF3;AFF3;1101 1170 11AA;AFF3;1101 1170 11AA;
+AFF4;AFF4;1101 1170 11AB;AFF4;1101 1170 11AB;
+AFF5;AFF5;1101 1170 11AC;AFF5;1101 1170 11AC;
+AFF6;AFF6;1101 1170 11AD;AFF6;1101 1170 11AD;
+AFF7;AFF7;1101 1170 11AE;AFF7;1101 1170 11AE;
+AFF8;AFF8;1101 1170 11AF;AFF8;1101 1170 11AF;
+AFF9;AFF9;1101 1170 11B0;AFF9;1101 1170 11B0;
+AFFA;AFFA;1101 1170 11B1;AFFA;1101 1170 11B1;
+AFFB;AFFB;1101 1170 11B2;AFFB;1101 1170 11B2;
+AFFC;AFFC;1101 1170 11B3;AFFC;1101 1170 11B3;
+AFFD;AFFD;1101 1170 11B4;AFFD;1101 1170 11B4;
+AFFE;AFFE;1101 1170 11B5;AFFE;1101 1170 11B5;
+AFFF;AFFF;1101 1170 11B6;AFFF;1101 1170 11B6;
+B000;B000;1101 1170 11B7;B000;1101 1170 11B7;
+B001;B001;1101 1170 11B8;B001;1101 1170 11B8;
+B002;B002;1101 1170 11B9;B002;1101 1170 11B9;
+B003;B003;1101 1170 11BA;B003;1101 1170 11BA;
+B004;B004;1101 1170 11BB;B004;1101 1170 11BB;
+B005;B005;1101 1170 11BC;B005;1101 1170 11BC;
+B006;B006;1101 1170 11BD;B006;1101 1170 11BD;
+B007;B007;1101 1170 11BE;B007;1101 1170 11BE;
+B008;B008;1101 1170 11BF;B008;1101 1170 11BF;
+B009;B009;1101 1170 11C0;B009;1101 1170 11C0;
+B00A;B00A;1101 1170 11C1;B00A;1101 1170 11C1;
+B00B;B00B;1101 1170 11C2;B00B;1101 1170 11C2;
+B00C;B00C;1101 1171;B00C;1101 1171;
+B00D;B00D;1101 1171 11A8;B00D;1101 1171 11A8;
+B00E;B00E;1101 1171 11A9;B00E;1101 1171 11A9;
+B00F;B00F;1101 1171 11AA;B00F;1101 1171 11AA;
+B010;B010;1101 1171 11AB;B010;1101 1171 11AB;
+B011;B011;1101 1171 11AC;B011;1101 1171 11AC;
+B012;B012;1101 1171 11AD;B012;1101 1171 11AD;
+B013;B013;1101 1171 11AE;B013;1101 1171 11AE;
+B014;B014;1101 1171 11AF;B014;1101 1171 11AF;
+B015;B015;1101 1171 11B0;B015;1101 1171 11B0;
+B016;B016;1101 1171 11B1;B016;1101 1171 11B1;
+B017;B017;1101 1171 11B2;B017;1101 1171 11B2;
+B018;B018;1101 1171 11B3;B018;1101 1171 11B3;
+B019;B019;1101 1171 11B4;B019;1101 1171 11B4;
+B01A;B01A;1101 1171 11B5;B01A;1101 1171 11B5;
+B01B;B01B;1101 1171 11B6;B01B;1101 1171 11B6;
+B01C;B01C;1101 1171 11B7;B01C;1101 1171 11B7;
+B01D;B01D;1101 1171 11B8;B01D;1101 1171 11B8;
+B01E;B01E;1101 1171 11B9;B01E;1101 1171 11B9;
+B01F;B01F;1101 1171 11BA;B01F;1101 1171 11BA;
+B020;B020;1101 1171 11BB;B020;1101 1171 11BB;
+B021;B021;1101 1171 11BC;B021;1101 1171 11BC;
+B022;B022;1101 1171 11BD;B022;1101 1171 11BD;
+B023;B023;1101 1171 11BE;B023;1101 1171 11BE;
+B024;B024;1101 1171 11BF;B024;1101 1171 11BF;
+B025;B025;1101 1171 11C0;B025;1101 1171 11C0;
+B026;B026;1101 1171 11C1;B026;1101 1171 11C1;
+B027;B027;1101 1171 11C2;B027;1101 1171 11C2;
+B028;B028;1101 1172;B028;1101 1172;
+B029;B029;1101 1172 11A8;B029;1101 1172 11A8;
+B02A;B02A;1101 1172 11A9;B02A;1101 1172 11A9;
+B02B;B02B;1101 1172 11AA;B02B;1101 1172 11AA;
+B02C;B02C;1101 1172 11AB;B02C;1101 1172 11AB;
+B02D;B02D;1101 1172 11AC;B02D;1101 1172 11AC;
+B02E;B02E;1101 1172 11AD;B02E;1101 1172 11AD;
+B02F;B02F;1101 1172 11AE;B02F;1101 1172 11AE;
+B030;B030;1101 1172 11AF;B030;1101 1172 11AF;
+B031;B031;1101 1172 11B0;B031;1101 1172 11B0;
+B032;B032;1101 1172 11B1;B032;1101 1172 11B1;
+B033;B033;1101 1172 11B2;B033;1101 1172 11B2;
+B034;B034;1101 1172 11B3;B034;1101 1172 11B3;
+B035;B035;1101 1172 11B4;B035;1101 1172 11B4;
+B036;B036;1101 1172 11B5;B036;1101 1172 11B5;
+B037;B037;1101 1172 11B6;B037;1101 1172 11B6;
+B038;B038;1101 1172 11B7;B038;1101 1172 11B7;
+B039;B039;1101 1172 11B8;B039;1101 1172 11B8;
+B03A;B03A;1101 1172 11B9;B03A;1101 1172 11B9;
+B03B;B03B;1101 1172 11BA;B03B;1101 1172 11BA;
+B03C;B03C;1101 1172 11BB;B03C;1101 1172 11BB;
+B03D;B03D;1101 1172 11BC;B03D;1101 1172 11BC;
+B03E;B03E;1101 1172 11BD;B03E;1101 1172 11BD;
+B03F;B03F;1101 1172 11BE;B03F;1101 1172 11BE;
+B040;B040;1101 1172 11BF;B040;1101 1172 11BF;
+B041;B041;1101 1172 11C0;B041;1101 1172 11C0;
+B042;B042;1101 1172 11C1;B042;1101 1172 11C1;
+B043;B043;1101 1172 11C2;B043;1101 1172 11C2;
+B044;B044;1101 1173;B044;1101 1173;
+B045;B045;1101 1173 11A8;B045;1101 1173 11A8;
+B046;B046;1101 1173 11A9;B046;1101 1173 11A9;
+B047;B047;1101 1173 11AA;B047;1101 1173 11AA;
+B048;B048;1101 1173 11AB;B048;1101 1173 11AB;
+B049;B049;1101 1173 11AC;B049;1101 1173 11AC;
+B04A;B04A;1101 1173 11AD;B04A;1101 1173 11AD;
+B04B;B04B;1101 1173 11AE;B04B;1101 1173 11AE;
+B04C;B04C;1101 1173 11AF;B04C;1101 1173 11AF;
+B04D;B04D;1101 1173 11B0;B04D;1101 1173 11B0;
+B04E;B04E;1101 1173 11B1;B04E;1101 1173 11B1;
+B04F;B04F;1101 1173 11B2;B04F;1101 1173 11B2;
+B050;B050;1101 1173 11B3;B050;1101 1173 11B3;
+B051;B051;1101 1173 11B4;B051;1101 1173 11B4;
+B052;B052;1101 1173 11B5;B052;1101 1173 11B5;
+B053;B053;1101 1173 11B6;B053;1101 1173 11B6;
+B054;B054;1101 1173 11B7;B054;1101 1173 11B7;
+B055;B055;1101 1173 11B8;B055;1101 1173 11B8;
+B056;B056;1101 1173 11B9;B056;1101 1173 11B9;
+B057;B057;1101 1173 11BA;B057;1101 1173 11BA;
+B058;B058;1101 1173 11BB;B058;1101 1173 11BB;
+B059;B059;1101 1173 11BC;B059;1101 1173 11BC;
+B05A;B05A;1101 1173 11BD;B05A;1101 1173 11BD;
+B05B;B05B;1101 1173 11BE;B05B;1101 1173 11BE;
+B05C;B05C;1101 1173 11BF;B05C;1101 1173 11BF;
+B05D;B05D;1101 1173 11C0;B05D;1101 1173 11C0;
+B05E;B05E;1101 1173 11C1;B05E;1101 1173 11C1;
+B05F;B05F;1101 1173 11C2;B05F;1101 1173 11C2;
+B060;B060;1101 1174;B060;1101 1174;
+B061;B061;1101 1174 11A8;B061;1101 1174 11A8;
+B062;B062;1101 1174 11A9;B062;1101 1174 11A9;
+B063;B063;1101 1174 11AA;B063;1101 1174 11AA;
+B064;B064;1101 1174 11AB;B064;1101 1174 11AB;
+B065;B065;1101 1174 11AC;B065;1101 1174 11AC;
+B066;B066;1101 1174 11AD;B066;1101 1174 11AD;
+B067;B067;1101 1174 11AE;B067;1101 1174 11AE;
+B068;B068;1101 1174 11AF;B068;1101 1174 11AF;
+B069;B069;1101 1174 11B0;B069;1101 1174 11B0;
+B06A;B06A;1101 1174 11B1;B06A;1101 1174 11B1;
+B06B;B06B;1101 1174 11B2;B06B;1101 1174 11B2;
+B06C;B06C;1101 1174 11B3;B06C;1101 1174 11B3;
+B06D;B06D;1101 1174 11B4;B06D;1101 1174 11B4;
+B06E;B06E;1101 1174 11B5;B06E;1101 1174 11B5;
+B06F;B06F;1101 1174 11B6;B06F;1101 1174 11B6;
+B070;B070;1101 1174 11B7;B070;1101 1174 11B7;
+B071;B071;1101 1174 11B8;B071;1101 1174 11B8;
+B072;B072;1101 1174 11B9;B072;1101 1174 11B9;
+B073;B073;1101 1174 11BA;B073;1101 1174 11BA;
+B074;B074;1101 1174 11BB;B074;1101 1174 11BB;
+B075;B075;1101 1174 11BC;B075;1101 1174 11BC;
+B076;B076;1101 1174 11BD;B076;1101 1174 11BD;
+B077;B077;1101 1174 11BE;B077;1101 1174 11BE;
+B078;B078;1101 1174 11BF;B078;1101 1174 11BF;
+B079;B079;1101 1174 11C0;B079;1101 1174 11C0;
+B07A;B07A;1101 1174 11C1;B07A;1101 1174 11C1;
+B07B;B07B;1101 1174 11C2;B07B;1101 1174 11C2;
+B07C;B07C;1101 1175;B07C;1101 1175;
+B07D;B07D;1101 1175 11A8;B07D;1101 1175 11A8;
+B07E;B07E;1101 1175 11A9;B07E;1101 1175 11A9;
+B07F;B07F;1101 1175 11AA;B07F;1101 1175 11AA;
+B080;B080;1101 1175 11AB;B080;1101 1175 11AB;
+B081;B081;1101 1175 11AC;B081;1101 1175 11AC;
+B082;B082;1101 1175 11AD;B082;1101 1175 11AD;
+B083;B083;1101 1175 11AE;B083;1101 1175 11AE;
+B084;B084;1101 1175 11AF;B084;1101 1175 11AF;
+B085;B085;1101 1175 11B0;B085;1101 1175 11B0;
+B086;B086;1101 1175 11B1;B086;1101 1175 11B1;
+B087;B087;1101 1175 11B2;B087;1101 1175 11B2;
+B088;B088;1101 1175 11B3;B088;1101 1175 11B3;
+B089;B089;1101 1175 11B4;B089;1101 1175 11B4;
+B08A;B08A;1101 1175 11B5;B08A;1101 1175 11B5;
+B08B;B08B;1101 1175 11B6;B08B;1101 1175 11B6;
+B08C;B08C;1101 1175 11B7;B08C;1101 1175 11B7;
+B08D;B08D;1101 1175 11B8;B08D;1101 1175 11B8;
+B08E;B08E;1101 1175 11B9;B08E;1101 1175 11B9;
+B08F;B08F;1101 1175 11BA;B08F;1101 1175 11BA;
+B090;B090;1101 1175 11BB;B090;1101 1175 11BB;
+B091;B091;1101 1175 11BC;B091;1101 1175 11BC;
+B092;B092;1101 1175 11BD;B092;1101 1175 11BD;
+B093;B093;1101 1175 11BE;B093;1101 1175 11BE;
+B094;B094;1101 1175 11BF;B094;1101 1175 11BF;
+B095;B095;1101 1175 11C0;B095;1101 1175 11C0;
+B096;B096;1101 1175 11C1;B096;1101 1175 11C1;
+B097;B097;1101 1175 11C2;B097;1101 1175 11C2;
+B098;B098;1102 1161;B098;1102 1161;
+B099;B099;1102 1161 11A8;B099;1102 1161 11A8;
+B09A;B09A;1102 1161 11A9;B09A;1102 1161 11A9;
+B09B;B09B;1102 1161 11AA;B09B;1102 1161 11AA;
+B09C;B09C;1102 1161 11AB;B09C;1102 1161 11AB;
+B09D;B09D;1102 1161 11AC;B09D;1102 1161 11AC;
+B09E;B09E;1102 1161 11AD;B09E;1102 1161 11AD;
+B09F;B09F;1102 1161 11AE;B09F;1102 1161 11AE;
+B0A0;B0A0;1102 1161 11AF;B0A0;1102 1161 11AF;
+B0A1;B0A1;1102 1161 11B0;B0A1;1102 1161 11B0;
+B0A2;B0A2;1102 1161 11B1;B0A2;1102 1161 11B1;
+B0A3;B0A3;1102 1161 11B2;B0A3;1102 1161 11B2;
+B0A4;B0A4;1102 1161 11B3;B0A4;1102 1161 11B3;
+B0A5;B0A5;1102 1161 11B4;B0A5;1102 1161 11B4;
+B0A6;B0A6;1102 1161 11B5;B0A6;1102 1161 11B5;
+B0A7;B0A7;1102 1161 11B6;B0A7;1102 1161 11B6;
+B0A8;B0A8;1102 1161 11B7;B0A8;1102 1161 11B7;
+B0A9;B0A9;1102 1161 11B8;B0A9;1102 1161 11B8;
+B0AA;B0AA;1102 1161 11B9;B0AA;1102 1161 11B9;
+B0AB;B0AB;1102 1161 11BA;B0AB;1102 1161 11BA;
+B0AC;B0AC;1102 1161 11BB;B0AC;1102 1161 11BB;
+B0AD;B0AD;1102 1161 11BC;B0AD;1102 1161 11BC;
+B0AE;B0AE;1102 1161 11BD;B0AE;1102 1161 11BD;
+B0AF;B0AF;1102 1161 11BE;B0AF;1102 1161 11BE;
+B0B0;B0B0;1102 1161 11BF;B0B0;1102 1161 11BF;
+B0B1;B0B1;1102 1161 11C0;B0B1;1102 1161 11C0;
+B0B2;B0B2;1102 1161 11C1;B0B2;1102 1161 11C1;
+B0B3;B0B3;1102 1161 11C2;B0B3;1102 1161 11C2;
+B0B4;B0B4;1102 1162;B0B4;1102 1162;
+B0B5;B0B5;1102 1162 11A8;B0B5;1102 1162 11A8;
+B0B6;B0B6;1102 1162 11A9;B0B6;1102 1162 11A9;
+B0B7;B0B7;1102 1162 11AA;B0B7;1102 1162 11AA;
+B0B8;B0B8;1102 1162 11AB;B0B8;1102 1162 11AB;
+B0B9;B0B9;1102 1162 11AC;B0B9;1102 1162 11AC;
+B0BA;B0BA;1102 1162 11AD;B0BA;1102 1162 11AD;
+B0BB;B0BB;1102 1162 11AE;B0BB;1102 1162 11AE;
+B0BC;B0BC;1102 1162 11AF;B0BC;1102 1162 11AF;
+B0BD;B0BD;1102 1162 11B0;B0BD;1102 1162 11B0;
+B0BE;B0BE;1102 1162 11B1;B0BE;1102 1162 11B1;
+B0BF;B0BF;1102 1162 11B2;B0BF;1102 1162 11B2;
+B0C0;B0C0;1102 1162 11B3;B0C0;1102 1162 11B3;
+B0C1;B0C1;1102 1162 11B4;B0C1;1102 1162 11B4;
+B0C2;B0C2;1102 1162 11B5;B0C2;1102 1162 11B5;
+B0C3;B0C3;1102 1162 11B6;B0C3;1102 1162 11B6;
+B0C4;B0C4;1102 1162 11B7;B0C4;1102 1162 11B7;
+B0C5;B0C5;1102 1162 11B8;B0C5;1102 1162 11B8;
+B0C6;B0C6;1102 1162 11B9;B0C6;1102 1162 11B9;
+B0C7;B0C7;1102 1162 11BA;B0C7;1102 1162 11BA;
+B0C8;B0C8;1102 1162 11BB;B0C8;1102 1162 11BB;
+B0C9;B0C9;1102 1162 11BC;B0C9;1102 1162 11BC;
+B0CA;B0CA;1102 1162 11BD;B0CA;1102 1162 11BD;
+B0CB;B0CB;1102 1162 11BE;B0CB;1102 1162 11BE;
+B0CC;B0CC;1102 1162 11BF;B0CC;1102 1162 11BF;
+B0CD;B0CD;1102 1162 11C0;B0CD;1102 1162 11C0;
+B0CE;B0CE;1102 1162 11C1;B0CE;1102 1162 11C1;
+B0CF;B0CF;1102 1162 11C2;B0CF;1102 1162 11C2;
+B0D0;B0D0;1102 1163;B0D0;1102 1163;
+B0D1;B0D1;1102 1163 11A8;B0D1;1102 1163 11A8;
+B0D2;B0D2;1102 1163 11A9;B0D2;1102 1163 11A9;
+B0D3;B0D3;1102 1163 11AA;B0D3;1102 1163 11AA;
+B0D4;B0D4;1102 1163 11AB;B0D4;1102 1163 11AB;
+B0D5;B0D5;1102 1163 11AC;B0D5;1102 1163 11AC;
+B0D6;B0D6;1102 1163 11AD;B0D6;1102 1163 11AD;
+B0D7;B0D7;1102 1163 11AE;B0D7;1102 1163 11AE;
+B0D8;B0D8;1102 1163 11AF;B0D8;1102 1163 11AF;
+B0D9;B0D9;1102 1163 11B0;B0D9;1102 1163 11B0;
+B0DA;B0DA;1102 1163 11B1;B0DA;1102 1163 11B1;
+B0DB;B0DB;1102 1163 11B2;B0DB;1102 1163 11B2;
+B0DC;B0DC;1102 1163 11B3;B0DC;1102 1163 11B3;
+B0DD;B0DD;1102 1163 11B4;B0DD;1102 1163 11B4;
+B0DE;B0DE;1102 1163 11B5;B0DE;1102 1163 11B5;
+B0DF;B0DF;1102 1163 11B6;B0DF;1102 1163 11B6;
+B0E0;B0E0;1102 1163 11B7;B0E0;1102 1163 11B7;
+B0E1;B0E1;1102 1163 11B8;B0E1;1102 1163 11B8;
+B0E2;B0E2;1102 1163 11B9;B0E2;1102 1163 11B9;
+B0E3;B0E3;1102 1163 11BA;B0E3;1102 1163 11BA;
+B0E4;B0E4;1102 1163 11BB;B0E4;1102 1163 11BB;
+B0E5;B0E5;1102 1163 11BC;B0E5;1102 1163 11BC;
+B0E6;B0E6;1102 1163 11BD;B0E6;1102 1163 11BD;
+B0E7;B0E7;1102 1163 11BE;B0E7;1102 1163 11BE;
+B0E8;B0E8;1102 1163 11BF;B0E8;1102 1163 11BF;
+B0E9;B0E9;1102 1163 11C0;B0E9;1102 1163 11C0;
+B0EA;B0EA;1102 1163 11C1;B0EA;1102 1163 11C1;
+B0EB;B0EB;1102 1163 11C2;B0EB;1102 1163 11C2;
+B0EC;B0EC;1102 1164;B0EC;1102 1164;
+B0ED;B0ED;1102 1164 11A8;B0ED;1102 1164 11A8;
+B0EE;B0EE;1102 1164 11A9;B0EE;1102 1164 11A9;
+B0EF;B0EF;1102 1164 11AA;B0EF;1102 1164 11AA;
+B0F0;B0F0;1102 1164 11AB;B0F0;1102 1164 11AB;
+B0F1;B0F1;1102 1164 11AC;B0F1;1102 1164 11AC;
+B0F2;B0F2;1102 1164 11AD;B0F2;1102 1164 11AD;
+B0F3;B0F3;1102 1164 11AE;B0F3;1102 1164 11AE;
+B0F4;B0F4;1102 1164 11AF;B0F4;1102 1164 11AF;
+B0F5;B0F5;1102 1164 11B0;B0F5;1102 1164 11B0;
+B0F6;B0F6;1102 1164 11B1;B0F6;1102 1164 11B1;
+B0F7;B0F7;1102 1164 11B2;B0F7;1102 1164 11B2;
+B0F8;B0F8;1102 1164 11B3;B0F8;1102 1164 11B3;
+B0F9;B0F9;1102 1164 11B4;B0F9;1102 1164 11B4;
+B0FA;B0FA;1102 1164 11B5;B0FA;1102 1164 11B5;
+B0FB;B0FB;1102 1164 11B6;B0FB;1102 1164 11B6;
+B0FC;B0FC;1102 1164 11B7;B0FC;1102 1164 11B7;
+B0FD;B0FD;1102 1164 11B8;B0FD;1102 1164 11B8;
+B0FE;B0FE;1102 1164 11B9;B0FE;1102 1164 11B9;
+B0FF;B0FF;1102 1164 11BA;B0FF;1102 1164 11BA;
+B100;B100;1102 1164 11BB;B100;1102 1164 11BB;
+B101;B101;1102 1164 11BC;B101;1102 1164 11BC;
+B102;B102;1102 1164 11BD;B102;1102 1164 11BD;
+B103;B103;1102 1164 11BE;B103;1102 1164 11BE;
+B104;B104;1102 1164 11BF;B104;1102 1164 11BF;
+B105;B105;1102 1164 11C0;B105;1102 1164 11C0;
+B106;B106;1102 1164 11C1;B106;1102 1164 11C1;
+B107;B107;1102 1164 11C2;B107;1102 1164 11C2;
+B108;B108;1102 1165;B108;1102 1165;
+B109;B109;1102 1165 11A8;B109;1102 1165 11A8;
+B10A;B10A;1102 1165 11A9;B10A;1102 1165 11A9;
+B10B;B10B;1102 1165 11AA;B10B;1102 1165 11AA;
+B10C;B10C;1102 1165 11AB;B10C;1102 1165 11AB;
+B10D;B10D;1102 1165 11AC;B10D;1102 1165 11AC;
+B10E;B10E;1102 1165 11AD;B10E;1102 1165 11AD;
+B10F;B10F;1102 1165 11AE;B10F;1102 1165 11AE;
+B110;B110;1102 1165 11AF;B110;1102 1165 11AF;
+B111;B111;1102 1165 11B0;B111;1102 1165 11B0;
+B112;B112;1102 1165 11B1;B112;1102 1165 11B1;
+B113;B113;1102 1165 11B2;B113;1102 1165 11B2;
+B114;B114;1102 1165 11B3;B114;1102 1165 11B3;
+B115;B115;1102 1165 11B4;B115;1102 1165 11B4;
+B116;B116;1102 1165 11B5;B116;1102 1165 11B5;
+B117;B117;1102 1165 11B6;B117;1102 1165 11B6;
+B118;B118;1102 1165 11B7;B118;1102 1165 11B7;
+B119;B119;1102 1165 11B8;B119;1102 1165 11B8;
+B11A;B11A;1102 1165 11B9;B11A;1102 1165 11B9;
+B11B;B11B;1102 1165 11BA;B11B;1102 1165 11BA;
+B11C;B11C;1102 1165 11BB;B11C;1102 1165 11BB;
+B11D;B11D;1102 1165 11BC;B11D;1102 1165 11BC;
+B11E;B11E;1102 1165 11BD;B11E;1102 1165 11BD;
+B11F;B11F;1102 1165 11BE;B11F;1102 1165 11BE;
+B120;B120;1102 1165 11BF;B120;1102 1165 11BF;
+B121;B121;1102 1165 11C0;B121;1102 1165 11C0;
+B122;B122;1102 1165 11C1;B122;1102 1165 11C1;
+B123;B123;1102 1165 11C2;B123;1102 1165 11C2;
+B124;B124;1102 1166;B124;1102 1166;
+B125;B125;1102 1166 11A8;B125;1102 1166 11A8;
+B126;B126;1102 1166 11A9;B126;1102 1166 11A9;
+B127;B127;1102 1166 11AA;B127;1102 1166 11AA;
+B128;B128;1102 1166 11AB;B128;1102 1166 11AB;
+B129;B129;1102 1166 11AC;B129;1102 1166 11AC;
+B12A;B12A;1102 1166 11AD;B12A;1102 1166 11AD;
+B12B;B12B;1102 1166 11AE;B12B;1102 1166 11AE;
+B12C;B12C;1102 1166 11AF;B12C;1102 1166 11AF;
+B12D;B12D;1102 1166 11B0;B12D;1102 1166 11B0;
+B12E;B12E;1102 1166 11B1;B12E;1102 1166 11B1;
+B12F;B12F;1102 1166 11B2;B12F;1102 1166 11B2;
+B130;B130;1102 1166 11B3;B130;1102 1166 11B3;
+B131;B131;1102 1166 11B4;B131;1102 1166 11B4;
+B132;B132;1102 1166 11B5;B132;1102 1166 11B5;
+B133;B133;1102 1166 11B6;B133;1102 1166 11B6;
+B134;B134;1102 1166 11B7;B134;1102 1166 11B7;
+B135;B135;1102 1166 11B8;B135;1102 1166 11B8;
+B136;B136;1102 1166 11B9;B136;1102 1166 11B9;
+B137;B137;1102 1166 11BA;B137;1102 1166 11BA;
+B138;B138;1102 1166 11BB;B138;1102 1166 11BB;
+B139;B139;1102 1166 11BC;B139;1102 1166 11BC;
+B13A;B13A;1102 1166 11BD;B13A;1102 1166 11BD;
+B13B;B13B;1102 1166 11BE;B13B;1102 1166 11BE;
+B13C;B13C;1102 1166 11BF;B13C;1102 1166 11BF;
+B13D;B13D;1102 1166 11C0;B13D;1102 1166 11C0;
+B13E;B13E;1102 1166 11C1;B13E;1102 1166 11C1;
+B13F;B13F;1102 1166 11C2;B13F;1102 1166 11C2;
+B140;B140;1102 1167;B140;1102 1167;
+B141;B141;1102 1167 11A8;B141;1102 1167 11A8;
+B142;B142;1102 1167 11A9;B142;1102 1167 11A9;
+B143;B143;1102 1167 11AA;B143;1102 1167 11AA;
+B144;B144;1102 1167 11AB;B144;1102 1167 11AB;
+B145;B145;1102 1167 11AC;B145;1102 1167 11AC;
+B146;B146;1102 1167 11AD;B146;1102 1167 11AD;
+B147;B147;1102 1167 11AE;B147;1102 1167 11AE;
+B148;B148;1102 1167 11AF;B148;1102 1167 11AF;
+B149;B149;1102 1167 11B0;B149;1102 1167 11B0;
+B14A;B14A;1102 1167 11B1;B14A;1102 1167 11B1;
+B14B;B14B;1102 1167 11B2;B14B;1102 1167 11B2;
+B14C;B14C;1102 1167 11B3;B14C;1102 1167 11B3;
+B14D;B14D;1102 1167 11B4;B14D;1102 1167 11B4;
+B14E;B14E;1102 1167 11B5;B14E;1102 1167 11B5;
+B14F;B14F;1102 1167 11B6;B14F;1102 1167 11B6;
+B150;B150;1102 1167 11B7;B150;1102 1167 11B7;
+B151;B151;1102 1167 11B8;B151;1102 1167 11B8;
+B152;B152;1102 1167 11B9;B152;1102 1167 11B9;
+B153;B153;1102 1167 11BA;B153;1102 1167 11BA;
+B154;B154;1102 1167 11BB;B154;1102 1167 11BB;
+B155;B155;1102 1167 11BC;B155;1102 1167 11BC;
+B156;B156;1102 1167 11BD;B156;1102 1167 11BD;
+B157;B157;1102 1167 11BE;B157;1102 1167 11BE;
+B158;B158;1102 1167 11BF;B158;1102 1167 11BF;
+B159;B159;1102 1167 11C0;B159;1102 1167 11C0;
+B15A;B15A;1102 1167 11C1;B15A;1102 1167 11C1;
+B15B;B15B;1102 1167 11C2;B15B;1102 1167 11C2;
+B15C;B15C;1102 1168;B15C;1102 1168;
+B15D;B15D;1102 1168 11A8;B15D;1102 1168 11A8;
+B15E;B15E;1102 1168 11A9;B15E;1102 1168 11A9;
+B15F;B15F;1102 1168 11AA;B15F;1102 1168 11AA;
+B160;B160;1102 1168 11AB;B160;1102 1168 11AB;
+B161;B161;1102 1168 11AC;B161;1102 1168 11AC;
+B162;B162;1102 1168 11AD;B162;1102 1168 11AD;
+B163;B163;1102 1168 11AE;B163;1102 1168 11AE;
+B164;B164;1102 1168 11AF;B164;1102 1168 11AF;
+B165;B165;1102 1168 11B0;B165;1102 1168 11B0;
+B166;B166;1102 1168 11B1;B166;1102 1168 11B1;
+B167;B167;1102 1168 11B2;B167;1102 1168 11B2;
+B168;B168;1102 1168 11B3;B168;1102 1168 11B3;
+B169;B169;1102 1168 11B4;B169;1102 1168 11B4;
+B16A;B16A;1102 1168 11B5;B16A;1102 1168 11B5;
+B16B;B16B;1102 1168 11B6;B16B;1102 1168 11B6;
+B16C;B16C;1102 1168 11B7;B16C;1102 1168 11B7;
+B16D;B16D;1102 1168 11B8;B16D;1102 1168 11B8;
+B16E;B16E;1102 1168 11B9;B16E;1102 1168 11B9;
+B16F;B16F;1102 1168 11BA;B16F;1102 1168 11BA;
+B170;B170;1102 1168 11BB;B170;1102 1168 11BB;
+B171;B171;1102 1168 11BC;B171;1102 1168 11BC;
+B172;B172;1102 1168 11BD;B172;1102 1168 11BD;
+B173;B173;1102 1168 11BE;B173;1102 1168 11BE;
+B174;B174;1102 1168 11BF;B174;1102 1168 11BF;
+B175;B175;1102 1168 11C0;B175;1102 1168 11C0;
+B176;B176;1102 1168 11C1;B176;1102 1168 11C1;
+B177;B177;1102 1168 11C2;B177;1102 1168 11C2;
+B178;B178;1102 1169;B178;1102 1169;
+B179;B179;1102 1169 11A8;B179;1102 1169 11A8;
+B17A;B17A;1102 1169 11A9;B17A;1102 1169 11A9;
+B17B;B17B;1102 1169 11AA;B17B;1102 1169 11AA;
+B17C;B17C;1102 1169 11AB;B17C;1102 1169 11AB;
+B17D;B17D;1102 1169 11AC;B17D;1102 1169 11AC;
+B17E;B17E;1102 1169 11AD;B17E;1102 1169 11AD;
+B17F;B17F;1102 1169 11AE;B17F;1102 1169 11AE;
+B180;B180;1102 1169 11AF;B180;1102 1169 11AF;
+B181;B181;1102 1169 11B0;B181;1102 1169 11B0;
+B182;B182;1102 1169 11B1;B182;1102 1169 11B1;
+B183;B183;1102 1169 11B2;B183;1102 1169 11B2;
+B184;B184;1102 1169 11B3;B184;1102 1169 11B3;
+B185;B185;1102 1169 11B4;B185;1102 1169 11B4;
+B186;B186;1102 1169 11B5;B186;1102 1169 11B5;
+B187;B187;1102 1169 11B6;B187;1102 1169 11B6;
+B188;B188;1102 1169 11B7;B188;1102 1169 11B7;
+B189;B189;1102 1169 11B8;B189;1102 1169 11B8;
+B18A;B18A;1102 1169 11B9;B18A;1102 1169 11B9;
+B18B;B18B;1102 1169 11BA;B18B;1102 1169 11BA;
+B18C;B18C;1102 1169 11BB;B18C;1102 1169 11BB;
+B18D;B18D;1102 1169 11BC;B18D;1102 1169 11BC;
+B18E;B18E;1102 1169 11BD;B18E;1102 1169 11BD;
+B18F;B18F;1102 1169 11BE;B18F;1102 1169 11BE;
+B190;B190;1102 1169 11BF;B190;1102 1169 11BF;
+B191;B191;1102 1169 11C0;B191;1102 1169 11C0;
+B192;B192;1102 1169 11C1;B192;1102 1169 11C1;
+B193;B193;1102 1169 11C2;B193;1102 1169 11C2;
+B194;B194;1102 116A;B194;1102 116A;
+B195;B195;1102 116A 11A8;B195;1102 116A 11A8;
+B196;B196;1102 116A 11A9;B196;1102 116A 11A9;
+B197;B197;1102 116A 11AA;B197;1102 116A 11AA;
+B198;B198;1102 116A 11AB;B198;1102 116A 11AB;
+B199;B199;1102 116A 11AC;B199;1102 116A 11AC;
+B19A;B19A;1102 116A 11AD;B19A;1102 116A 11AD;
+B19B;B19B;1102 116A 11AE;B19B;1102 116A 11AE;
+B19C;B19C;1102 116A 11AF;B19C;1102 116A 11AF;
+B19D;B19D;1102 116A 11B0;B19D;1102 116A 11B0;
+B19E;B19E;1102 116A 11B1;B19E;1102 116A 11B1;
+B19F;B19F;1102 116A 11B2;B19F;1102 116A 11B2;
+B1A0;B1A0;1102 116A 11B3;B1A0;1102 116A 11B3;
+B1A1;B1A1;1102 116A 11B4;B1A1;1102 116A 11B4;
+B1A2;B1A2;1102 116A 11B5;B1A2;1102 116A 11B5;
+B1A3;B1A3;1102 116A 11B6;B1A3;1102 116A 11B6;
+B1A4;B1A4;1102 116A 11B7;B1A4;1102 116A 11B7;
+B1A5;B1A5;1102 116A 11B8;B1A5;1102 116A 11B8;
+B1A6;B1A6;1102 116A 11B9;B1A6;1102 116A 11B9;
+B1A7;B1A7;1102 116A 11BA;B1A7;1102 116A 11BA;
+B1A8;B1A8;1102 116A 11BB;B1A8;1102 116A 11BB;
+B1A9;B1A9;1102 116A 11BC;B1A9;1102 116A 11BC;
+B1AA;B1AA;1102 116A 11BD;B1AA;1102 116A 11BD;
+B1AB;B1AB;1102 116A 11BE;B1AB;1102 116A 11BE;
+B1AC;B1AC;1102 116A 11BF;B1AC;1102 116A 11BF;
+B1AD;B1AD;1102 116A 11C0;B1AD;1102 116A 11C0;
+B1AE;B1AE;1102 116A 11C1;B1AE;1102 116A 11C1;
+B1AF;B1AF;1102 116A 11C2;B1AF;1102 116A 11C2;
+B1B0;B1B0;1102 116B;B1B0;1102 116B;
+B1B1;B1B1;1102 116B 11A8;B1B1;1102 116B 11A8;
+B1B2;B1B2;1102 116B 11A9;B1B2;1102 116B 11A9;
+B1B3;B1B3;1102 116B 11AA;B1B3;1102 116B 11AA;
+B1B4;B1B4;1102 116B 11AB;B1B4;1102 116B 11AB;
+B1B5;B1B5;1102 116B 11AC;B1B5;1102 116B 11AC;
+B1B6;B1B6;1102 116B 11AD;B1B6;1102 116B 11AD;
+B1B7;B1B7;1102 116B 11AE;B1B7;1102 116B 11AE;
+B1B8;B1B8;1102 116B 11AF;B1B8;1102 116B 11AF;
+B1B9;B1B9;1102 116B 11B0;B1B9;1102 116B 11B0;
+B1BA;B1BA;1102 116B 11B1;B1BA;1102 116B 11B1;
+B1BB;B1BB;1102 116B 11B2;B1BB;1102 116B 11B2;
+B1BC;B1BC;1102 116B 11B3;B1BC;1102 116B 11B3;
+B1BD;B1BD;1102 116B 11B4;B1BD;1102 116B 11B4;
+B1BE;B1BE;1102 116B 11B5;B1BE;1102 116B 11B5;
+B1BF;B1BF;1102 116B 11B6;B1BF;1102 116B 11B6;
+B1C0;B1C0;1102 116B 11B7;B1C0;1102 116B 11B7;
+B1C1;B1C1;1102 116B 11B8;B1C1;1102 116B 11B8;
+B1C2;B1C2;1102 116B 11B9;B1C2;1102 116B 11B9;
+B1C3;B1C3;1102 116B 11BA;B1C3;1102 116B 11BA;
+B1C4;B1C4;1102 116B 11BB;B1C4;1102 116B 11BB;
+B1C5;B1C5;1102 116B 11BC;B1C5;1102 116B 11BC;
+B1C6;B1C6;1102 116B 11BD;B1C6;1102 116B 11BD;
+B1C7;B1C7;1102 116B 11BE;B1C7;1102 116B 11BE;
+B1C8;B1C8;1102 116B 11BF;B1C8;1102 116B 11BF;
+B1C9;B1C9;1102 116B 11C0;B1C9;1102 116B 11C0;
+B1CA;B1CA;1102 116B 11C1;B1CA;1102 116B 11C1;
+B1CB;B1CB;1102 116B 11C2;B1CB;1102 116B 11C2;
+B1CC;B1CC;1102 116C;B1CC;1102 116C;
+B1CD;B1CD;1102 116C 11A8;B1CD;1102 116C 11A8;
+B1CE;B1CE;1102 116C 11A9;B1CE;1102 116C 11A9;
+B1CF;B1CF;1102 116C 11AA;B1CF;1102 116C 11AA;
+B1D0;B1D0;1102 116C 11AB;B1D0;1102 116C 11AB;
+B1D1;B1D1;1102 116C 11AC;B1D1;1102 116C 11AC;
+B1D2;B1D2;1102 116C 11AD;B1D2;1102 116C 11AD;
+B1D3;B1D3;1102 116C 11AE;B1D3;1102 116C 11AE;
+B1D4;B1D4;1102 116C 11AF;B1D4;1102 116C 11AF;
+B1D5;B1D5;1102 116C 11B0;B1D5;1102 116C 11B0;
+B1D6;B1D6;1102 116C 11B1;B1D6;1102 116C 11B1;
+B1D7;B1D7;1102 116C 11B2;B1D7;1102 116C 11B2;
+B1D8;B1D8;1102 116C 11B3;B1D8;1102 116C 11B3;
+B1D9;B1D9;1102 116C 11B4;B1D9;1102 116C 11B4;
+B1DA;B1DA;1102 116C 11B5;B1DA;1102 116C 11B5;
+B1DB;B1DB;1102 116C 11B6;B1DB;1102 116C 11B6;
+B1DC;B1DC;1102 116C 11B7;B1DC;1102 116C 11B7;
+B1DD;B1DD;1102 116C 11B8;B1DD;1102 116C 11B8;
+B1DE;B1DE;1102 116C 11B9;B1DE;1102 116C 11B9;
+B1DF;B1DF;1102 116C 11BA;B1DF;1102 116C 11BA;
+B1E0;B1E0;1102 116C 11BB;B1E0;1102 116C 11BB;
+B1E1;B1E1;1102 116C 11BC;B1E1;1102 116C 11BC;
+B1E2;B1E2;1102 116C 11BD;B1E2;1102 116C 11BD;
+B1E3;B1E3;1102 116C 11BE;B1E3;1102 116C 11BE;
+B1E4;B1E4;1102 116C 11BF;B1E4;1102 116C 11BF;
+B1E5;B1E5;1102 116C 11C0;B1E5;1102 116C 11C0;
+B1E6;B1E6;1102 116C 11C1;B1E6;1102 116C 11C1;
+B1E7;B1E7;1102 116C 11C2;B1E7;1102 116C 11C2;
+B1E8;B1E8;1102 116D;B1E8;1102 116D;
+B1E9;B1E9;1102 116D 11A8;B1E9;1102 116D 11A8;
+B1EA;B1EA;1102 116D 11A9;B1EA;1102 116D 11A9;
+B1EB;B1EB;1102 116D 11AA;B1EB;1102 116D 11AA;
+B1EC;B1EC;1102 116D 11AB;B1EC;1102 116D 11AB;
+B1ED;B1ED;1102 116D 11AC;B1ED;1102 116D 11AC;
+B1EE;B1EE;1102 116D 11AD;B1EE;1102 116D 11AD;
+B1EF;B1EF;1102 116D 11AE;B1EF;1102 116D 11AE;
+B1F0;B1F0;1102 116D 11AF;B1F0;1102 116D 11AF;
+B1F1;B1F1;1102 116D 11B0;B1F1;1102 116D 11B0;
+B1F2;B1F2;1102 116D 11B1;B1F2;1102 116D 11B1;
+B1F3;B1F3;1102 116D 11B2;B1F3;1102 116D 11B2;
+B1F4;B1F4;1102 116D 11B3;B1F4;1102 116D 11B3;
+B1F5;B1F5;1102 116D 11B4;B1F5;1102 116D 11B4;
+B1F6;B1F6;1102 116D 11B5;B1F6;1102 116D 11B5;
+B1F7;B1F7;1102 116D 11B6;B1F7;1102 116D 11B6;
+B1F8;B1F8;1102 116D 11B7;B1F8;1102 116D 11B7;
+B1F9;B1F9;1102 116D 11B8;B1F9;1102 116D 11B8;
+B1FA;B1FA;1102 116D 11B9;B1FA;1102 116D 11B9;
+B1FB;B1FB;1102 116D 11BA;B1FB;1102 116D 11BA;
+B1FC;B1FC;1102 116D 11BB;B1FC;1102 116D 11BB;
+B1FD;B1FD;1102 116D 11BC;B1FD;1102 116D 11BC;
+B1FE;B1FE;1102 116D 11BD;B1FE;1102 116D 11BD;
+B1FF;B1FF;1102 116D 11BE;B1FF;1102 116D 11BE;
+B200;B200;1102 116D 11BF;B200;1102 116D 11BF;
+B201;B201;1102 116D 11C0;B201;1102 116D 11C0;
+B202;B202;1102 116D 11C1;B202;1102 116D 11C1;
+B203;B203;1102 116D 11C2;B203;1102 116D 11C2;
+B204;B204;1102 116E;B204;1102 116E;
+B205;B205;1102 116E 11A8;B205;1102 116E 11A8;
+B206;B206;1102 116E 11A9;B206;1102 116E 11A9;
+B207;B207;1102 116E 11AA;B207;1102 116E 11AA;
+B208;B208;1102 116E 11AB;B208;1102 116E 11AB;
+B209;B209;1102 116E 11AC;B209;1102 116E 11AC;
+B20A;B20A;1102 116E 11AD;B20A;1102 116E 11AD;
+B20B;B20B;1102 116E 11AE;B20B;1102 116E 11AE;
+B20C;B20C;1102 116E 11AF;B20C;1102 116E 11AF;
+B20D;B20D;1102 116E 11B0;B20D;1102 116E 11B0;
+B20E;B20E;1102 116E 11B1;B20E;1102 116E 11B1;
+B20F;B20F;1102 116E 11B2;B20F;1102 116E 11B2;
+B210;B210;1102 116E 11B3;B210;1102 116E 11B3;
+B211;B211;1102 116E 11B4;B211;1102 116E 11B4;
+B212;B212;1102 116E 11B5;B212;1102 116E 11B5;
+B213;B213;1102 116E 11B6;B213;1102 116E 11B6;
+B214;B214;1102 116E 11B7;B214;1102 116E 11B7;
+B215;B215;1102 116E 11B8;B215;1102 116E 11B8;
+B216;B216;1102 116E 11B9;B216;1102 116E 11B9;
+B217;B217;1102 116E 11BA;B217;1102 116E 11BA;
+B218;B218;1102 116E 11BB;B218;1102 116E 11BB;
+B219;B219;1102 116E 11BC;B219;1102 116E 11BC;
+B21A;B21A;1102 116E 11BD;B21A;1102 116E 11BD;
+B21B;B21B;1102 116E 11BE;B21B;1102 116E 11BE;
+B21C;B21C;1102 116E 11BF;B21C;1102 116E 11BF;
+B21D;B21D;1102 116E 11C0;B21D;1102 116E 11C0;
+B21E;B21E;1102 116E 11C1;B21E;1102 116E 11C1;
+B21F;B21F;1102 116E 11C2;B21F;1102 116E 11C2;
+B220;B220;1102 116F;B220;1102 116F;
+B221;B221;1102 116F 11A8;B221;1102 116F 11A8;
+B222;B222;1102 116F 11A9;B222;1102 116F 11A9;
+B223;B223;1102 116F 11AA;B223;1102 116F 11AA;
+B224;B224;1102 116F 11AB;B224;1102 116F 11AB;
+B225;B225;1102 116F 11AC;B225;1102 116F 11AC;
+B226;B226;1102 116F 11AD;B226;1102 116F 11AD;
+B227;B227;1102 116F 11AE;B227;1102 116F 11AE;
+B228;B228;1102 116F 11AF;B228;1102 116F 11AF;
+B229;B229;1102 116F 11B0;B229;1102 116F 11B0;
+B22A;B22A;1102 116F 11B1;B22A;1102 116F 11B1;
+B22B;B22B;1102 116F 11B2;B22B;1102 116F 11B2;
+B22C;B22C;1102 116F 11B3;B22C;1102 116F 11B3;
+B22D;B22D;1102 116F 11B4;B22D;1102 116F 11B4;
+B22E;B22E;1102 116F 11B5;B22E;1102 116F 11B5;
+B22F;B22F;1102 116F 11B6;B22F;1102 116F 11B6;
+B230;B230;1102 116F 11B7;B230;1102 116F 11B7;
+B231;B231;1102 116F 11B8;B231;1102 116F 11B8;
+B232;B232;1102 116F 11B9;B232;1102 116F 11B9;
+B233;B233;1102 116F 11BA;B233;1102 116F 11BA;
+B234;B234;1102 116F 11BB;B234;1102 116F 11BB;
+B235;B235;1102 116F 11BC;B235;1102 116F 11BC;
+B236;B236;1102 116F 11BD;B236;1102 116F 11BD;
+B237;B237;1102 116F 11BE;B237;1102 116F 11BE;
+B238;B238;1102 116F 11BF;B238;1102 116F 11BF;
+B239;B239;1102 116F 11C0;B239;1102 116F 11C0;
+B23A;B23A;1102 116F 11C1;B23A;1102 116F 11C1;
+B23B;B23B;1102 116F 11C2;B23B;1102 116F 11C2;
+B23C;B23C;1102 1170;B23C;1102 1170;
+B23D;B23D;1102 1170 11A8;B23D;1102 1170 11A8;
+B23E;B23E;1102 1170 11A9;B23E;1102 1170 11A9;
+B23F;B23F;1102 1170 11AA;B23F;1102 1170 11AA;
+B240;B240;1102 1170 11AB;B240;1102 1170 11AB;
+B241;B241;1102 1170 11AC;B241;1102 1170 11AC;
+B242;B242;1102 1170 11AD;B242;1102 1170 11AD;
+B243;B243;1102 1170 11AE;B243;1102 1170 11AE;
+B244;B244;1102 1170 11AF;B244;1102 1170 11AF;
+B245;B245;1102 1170 11B0;B245;1102 1170 11B0;
+B246;B246;1102 1170 11B1;B246;1102 1170 11B1;
+B247;B247;1102 1170 11B2;B247;1102 1170 11B2;
+B248;B248;1102 1170 11B3;B248;1102 1170 11B3;
+B249;B249;1102 1170 11B4;B249;1102 1170 11B4;
+B24A;B24A;1102 1170 11B5;B24A;1102 1170 11B5;
+B24B;B24B;1102 1170 11B6;B24B;1102 1170 11B6;
+B24C;B24C;1102 1170 11B7;B24C;1102 1170 11B7;
+B24D;B24D;1102 1170 11B8;B24D;1102 1170 11B8;
+B24E;B24E;1102 1170 11B9;B24E;1102 1170 11B9;
+B24F;B24F;1102 1170 11BA;B24F;1102 1170 11BA;
+B250;B250;1102 1170 11BB;B250;1102 1170 11BB;
+B251;B251;1102 1170 11BC;B251;1102 1170 11BC;
+B252;B252;1102 1170 11BD;B252;1102 1170 11BD;
+B253;B253;1102 1170 11BE;B253;1102 1170 11BE;
+B254;B254;1102 1170 11BF;B254;1102 1170 11BF;
+B255;B255;1102 1170 11C0;B255;1102 1170 11C0;
+B256;B256;1102 1170 11C1;B256;1102 1170 11C1;
+B257;B257;1102 1170 11C2;B257;1102 1170 11C2;
+B258;B258;1102 1171;B258;1102 1171;
+B259;B259;1102 1171 11A8;B259;1102 1171 11A8;
+B25A;B25A;1102 1171 11A9;B25A;1102 1171 11A9;
+B25B;B25B;1102 1171 11AA;B25B;1102 1171 11AA;
+B25C;B25C;1102 1171 11AB;B25C;1102 1171 11AB;
+B25D;B25D;1102 1171 11AC;B25D;1102 1171 11AC;
+B25E;B25E;1102 1171 11AD;B25E;1102 1171 11AD;
+B25F;B25F;1102 1171 11AE;B25F;1102 1171 11AE;
+B260;B260;1102 1171 11AF;B260;1102 1171 11AF;
+B261;B261;1102 1171 11B0;B261;1102 1171 11B0;
+B262;B262;1102 1171 11B1;B262;1102 1171 11B1;
+B263;B263;1102 1171 11B2;B263;1102 1171 11B2;
+B264;B264;1102 1171 11B3;B264;1102 1171 11B3;
+B265;B265;1102 1171 11B4;B265;1102 1171 11B4;
+B266;B266;1102 1171 11B5;B266;1102 1171 11B5;
+B267;B267;1102 1171 11B6;B267;1102 1171 11B6;
+B268;B268;1102 1171 11B7;B268;1102 1171 11B7;
+B269;B269;1102 1171 11B8;B269;1102 1171 11B8;
+B26A;B26A;1102 1171 11B9;B26A;1102 1171 11B9;
+B26B;B26B;1102 1171 11BA;B26B;1102 1171 11BA;
+B26C;B26C;1102 1171 11BB;B26C;1102 1171 11BB;
+B26D;B26D;1102 1171 11BC;B26D;1102 1171 11BC;
+B26E;B26E;1102 1171 11BD;B26E;1102 1171 11BD;
+B26F;B26F;1102 1171 11BE;B26F;1102 1171 11BE;
+B270;B270;1102 1171 11BF;B270;1102 1171 11BF;
+B271;B271;1102 1171 11C0;B271;1102 1171 11C0;
+B272;B272;1102 1171 11C1;B272;1102 1171 11C1;
+B273;B273;1102 1171 11C2;B273;1102 1171 11C2;
+B274;B274;1102 1172;B274;1102 1172;
+B275;B275;1102 1172 11A8;B275;1102 1172 11A8;
+B276;B276;1102 1172 11A9;B276;1102 1172 11A9;
+B277;B277;1102 1172 11AA;B277;1102 1172 11AA;
+B278;B278;1102 1172 11AB;B278;1102 1172 11AB;
+B279;B279;1102 1172 11AC;B279;1102 1172 11AC;
+B27A;B27A;1102 1172 11AD;B27A;1102 1172 11AD;
+B27B;B27B;1102 1172 11AE;B27B;1102 1172 11AE;
+B27C;B27C;1102 1172 11AF;B27C;1102 1172 11AF;
+B27D;B27D;1102 1172 11B0;B27D;1102 1172 11B0;
+B27E;B27E;1102 1172 11B1;B27E;1102 1172 11B1;
+B27F;B27F;1102 1172 11B2;B27F;1102 1172 11B2;
+B280;B280;1102 1172 11B3;B280;1102 1172 11B3;
+B281;B281;1102 1172 11B4;B281;1102 1172 11B4;
+B282;B282;1102 1172 11B5;B282;1102 1172 11B5;
+B283;B283;1102 1172 11B6;B283;1102 1172 11B6;
+B284;B284;1102 1172 11B7;B284;1102 1172 11B7;
+B285;B285;1102 1172 11B8;B285;1102 1172 11B8;
+B286;B286;1102 1172 11B9;B286;1102 1172 11B9;
+B287;B287;1102 1172 11BA;B287;1102 1172 11BA;
+B288;B288;1102 1172 11BB;B288;1102 1172 11BB;
+B289;B289;1102 1172 11BC;B289;1102 1172 11BC;
+B28A;B28A;1102 1172 11BD;B28A;1102 1172 11BD;
+B28B;B28B;1102 1172 11BE;B28B;1102 1172 11BE;
+B28C;B28C;1102 1172 11BF;B28C;1102 1172 11BF;
+B28D;B28D;1102 1172 11C0;B28D;1102 1172 11C0;
+B28E;B28E;1102 1172 11C1;B28E;1102 1172 11C1;
+B28F;B28F;1102 1172 11C2;B28F;1102 1172 11C2;
+B290;B290;1102 1173;B290;1102 1173;
+B291;B291;1102 1173 11A8;B291;1102 1173 11A8;
+B292;B292;1102 1173 11A9;B292;1102 1173 11A9;
+B293;B293;1102 1173 11AA;B293;1102 1173 11AA;
+B294;B294;1102 1173 11AB;B294;1102 1173 11AB;
+B295;B295;1102 1173 11AC;B295;1102 1173 11AC;
+B296;B296;1102 1173 11AD;B296;1102 1173 11AD;
+B297;B297;1102 1173 11AE;B297;1102 1173 11AE;
+B298;B298;1102 1173 11AF;B298;1102 1173 11AF;
+B299;B299;1102 1173 11B0;B299;1102 1173 11B0;
+B29A;B29A;1102 1173 11B1;B29A;1102 1173 11B1;
+B29B;B29B;1102 1173 11B2;B29B;1102 1173 11B2;
+B29C;B29C;1102 1173 11B3;B29C;1102 1173 11B3;
+B29D;B29D;1102 1173 11B4;B29D;1102 1173 11B4;
+B29E;B29E;1102 1173 11B5;B29E;1102 1173 11B5;
+B29F;B29F;1102 1173 11B6;B29F;1102 1173 11B6;
+B2A0;B2A0;1102 1173 11B7;B2A0;1102 1173 11B7;
+B2A1;B2A1;1102 1173 11B8;B2A1;1102 1173 11B8;
+B2A2;B2A2;1102 1173 11B9;B2A2;1102 1173 11B9;
+B2A3;B2A3;1102 1173 11BA;B2A3;1102 1173 11BA;
+B2A4;B2A4;1102 1173 11BB;B2A4;1102 1173 11BB;
+B2A5;B2A5;1102 1173 11BC;B2A5;1102 1173 11BC;
+B2A6;B2A6;1102 1173 11BD;B2A6;1102 1173 11BD;
+B2A7;B2A7;1102 1173 11BE;B2A7;1102 1173 11BE;
+B2A8;B2A8;1102 1173 11BF;B2A8;1102 1173 11BF;
+B2A9;B2A9;1102 1173 11C0;B2A9;1102 1173 11C0;
+B2AA;B2AA;1102 1173 11C1;B2AA;1102 1173 11C1;
+B2AB;B2AB;1102 1173 11C2;B2AB;1102 1173 11C2;
+B2AC;B2AC;1102 1174;B2AC;1102 1174;
+B2AD;B2AD;1102 1174 11A8;B2AD;1102 1174 11A8;
+B2AE;B2AE;1102 1174 11A9;B2AE;1102 1174 11A9;
+B2AF;B2AF;1102 1174 11AA;B2AF;1102 1174 11AA;
+B2B0;B2B0;1102 1174 11AB;B2B0;1102 1174 11AB;
+B2B1;B2B1;1102 1174 11AC;B2B1;1102 1174 11AC;
+B2B2;B2B2;1102 1174 11AD;B2B2;1102 1174 11AD;
+B2B3;B2B3;1102 1174 11AE;B2B3;1102 1174 11AE;
+B2B4;B2B4;1102 1174 11AF;B2B4;1102 1174 11AF;
+B2B5;B2B5;1102 1174 11B0;B2B5;1102 1174 11B0;
+B2B6;B2B6;1102 1174 11B1;B2B6;1102 1174 11B1;
+B2B7;B2B7;1102 1174 11B2;B2B7;1102 1174 11B2;
+B2B8;B2B8;1102 1174 11B3;B2B8;1102 1174 11B3;
+B2B9;B2B9;1102 1174 11B4;B2B9;1102 1174 11B4;
+B2BA;B2BA;1102 1174 11B5;B2BA;1102 1174 11B5;
+B2BB;B2BB;1102 1174 11B6;B2BB;1102 1174 11B6;
+B2BC;B2BC;1102 1174 11B7;B2BC;1102 1174 11B7;
+B2BD;B2BD;1102 1174 11B8;B2BD;1102 1174 11B8;
+B2BE;B2BE;1102 1174 11B9;B2BE;1102 1174 11B9;
+B2BF;B2BF;1102 1174 11BA;B2BF;1102 1174 11BA;
+B2C0;B2C0;1102 1174 11BB;B2C0;1102 1174 11BB;
+B2C1;B2C1;1102 1174 11BC;B2C1;1102 1174 11BC;
+B2C2;B2C2;1102 1174 11BD;B2C2;1102 1174 11BD;
+B2C3;B2C3;1102 1174 11BE;B2C3;1102 1174 11BE;
+B2C4;B2C4;1102 1174 11BF;B2C4;1102 1174 11BF;
+B2C5;B2C5;1102 1174 11C0;B2C5;1102 1174 11C0;
+B2C6;B2C6;1102 1174 11C1;B2C6;1102 1174 11C1;
+B2C7;B2C7;1102 1174 11C2;B2C7;1102 1174 11C2;
+B2C8;B2C8;1102 1175;B2C8;1102 1175;
+B2C9;B2C9;1102 1175 11A8;B2C9;1102 1175 11A8;
+B2CA;B2CA;1102 1175 11A9;B2CA;1102 1175 11A9;
+B2CB;B2CB;1102 1175 11AA;B2CB;1102 1175 11AA;
+B2CC;B2CC;1102 1175 11AB;B2CC;1102 1175 11AB;
+B2CD;B2CD;1102 1175 11AC;B2CD;1102 1175 11AC;
+B2CE;B2CE;1102 1175 11AD;B2CE;1102 1175 11AD;
+B2CF;B2CF;1102 1175 11AE;B2CF;1102 1175 11AE;
+B2D0;B2D0;1102 1175 11AF;B2D0;1102 1175 11AF;
+B2D1;B2D1;1102 1175 11B0;B2D1;1102 1175 11B0;
+B2D2;B2D2;1102 1175 11B1;B2D2;1102 1175 11B1;
+B2D3;B2D3;1102 1175 11B2;B2D3;1102 1175 11B2;
+B2D4;B2D4;1102 1175 11B3;B2D4;1102 1175 11B3;
+B2D5;B2D5;1102 1175 11B4;B2D5;1102 1175 11B4;
+B2D6;B2D6;1102 1175 11B5;B2D6;1102 1175 11B5;
+B2D7;B2D7;1102 1175 11B6;B2D7;1102 1175 11B6;
+B2D8;B2D8;1102 1175 11B7;B2D8;1102 1175 11B7;
+B2D9;B2D9;1102 1175 11B8;B2D9;1102 1175 11B8;
+B2DA;B2DA;1102 1175 11B9;B2DA;1102 1175 11B9;
+B2DB;B2DB;1102 1175 11BA;B2DB;1102 1175 11BA;
+B2DC;B2DC;1102 1175 11BB;B2DC;1102 1175 11BB;
+B2DD;B2DD;1102 1175 11BC;B2DD;1102 1175 11BC;
+B2DE;B2DE;1102 1175 11BD;B2DE;1102 1175 11BD;
+B2DF;B2DF;1102 1175 11BE;B2DF;1102 1175 11BE;
+B2E0;B2E0;1102 1175 11BF;B2E0;1102 1175 11BF;
+B2E1;B2E1;1102 1175 11C0;B2E1;1102 1175 11C0;
+B2E2;B2E2;1102 1175 11C1;B2E2;1102 1175 11C1;
+B2E3;B2E3;1102 1175 11C2;B2E3;1102 1175 11C2;
+B2E4;B2E4;1103 1161;B2E4;1103 1161;
+B2E5;B2E5;1103 1161 11A8;B2E5;1103 1161 11A8;
+B2E6;B2E6;1103 1161 11A9;B2E6;1103 1161 11A9;
+B2E7;B2E7;1103 1161 11AA;B2E7;1103 1161 11AA;
+B2E8;B2E8;1103 1161 11AB;B2E8;1103 1161 11AB;
+B2E9;B2E9;1103 1161 11AC;B2E9;1103 1161 11AC;
+B2EA;B2EA;1103 1161 11AD;B2EA;1103 1161 11AD;
+B2EB;B2EB;1103 1161 11AE;B2EB;1103 1161 11AE;
+B2EC;B2EC;1103 1161 11AF;B2EC;1103 1161 11AF;
+B2ED;B2ED;1103 1161 11B0;B2ED;1103 1161 11B0;
+B2EE;B2EE;1103 1161 11B1;B2EE;1103 1161 11B1;
+B2EF;B2EF;1103 1161 11B2;B2EF;1103 1161 11B2;
+B2F0;B2F0;1103 1161 11B3;B2F0;1103 1161 11B3;
+B2F1;B2F1;1103 1161 11B4;B2F1;1103 1161 11B4;
+B2F2;B2F2;1103 1161 11B5;B2F2;1103 1161 11B5;
+B2F3;B2F3;1103 1161 11B6;B2F3;1103 1161 11B6;
+B2F4;B2F4;1103 1161 11B7;B2F4;1103 1161 11B7;
+B2F5;B2F5;1103 1161 11B8;B2F5;1103 1161 11B8;
+B2F6;B2F6;1103 1161 11B9;B2F6;1103 1161 11B9;
+B2F7;B2F7;1103 1161 11BA;B2F7;1103 1161 11BA;
+B2F8;B2F8;1103 1161 11BB;B2F8;1103 1161 11BB;
+B2F9;B2F9;1103 1161 11BC;B2F9;1103 1161 11BC;
+B2FA;B2FA;1103 1161 11BD;B2FA;1103 1161 11BD;
+B2FB;B2FB;1103 1161 11BE;B2FB;1103 1161 11BE;
+B2FC;B2FC;1103 1161 11BF;B2FC;1103 1161 11BF;
+B2FD;B2FD;1103 1161 11C0;B2FD;1103 1161 11C0;
+B2FE;B2FE;1103 1161 11C1;B2FE;1103 1161 11C1;
+B2FF;B2FF;1103 1161 11C2;B2FF;1103 1161 11C2;
+B300;B300;1103 1162;B300;1103 1162;
+B301;B301;1103 1162 11A8;B301;1103 1162 11A8;
+B302;B302;1103 1162 11A9;B302;1103 1162 11A9;
+B303;B303;1103 1162 11AA;B303;1103 1162 11AA;
+B304;B304;1103 1162 11AB;B304;1103 1162 11AB;
+B305;B305;1103 1162 11AC;B305;1103 1162 11AC;
+B306;B306;1103 1162 11AD;B306;1103 1162 11AD;
+B307;B307;1103 1162 11AE;B307;1103 1162 11AE;
+B308;B308;1103 1162 11AF;B308;1103 1162 11AF;
+B309;B309;1103 1162 11B0;B309;1103 1162 11B0;
+B30A;B30A;1103 1162 11B1;B30A;1103 1162 11B1;
+B30B;B30B;1103 1162 11B2;B30B;1103 1162 11B2;
+B30C;B30C;1103 1162 11B3;B30C;1103 1162 11B3;
+B30D;B30D;1103 1162 11B4;B30D;1103 1162 11B4;
+B30E;B30E;1103 1162 11B5;B30E;1103 1162 11B5;
+B30F;B30F;1103 1162 11B6;B30F;1103 1162 11B6;
+B310;B310;1103 1162 11B7;B310;1103 1162 11B7;
+B311;B311;1103 1162 11B8;B311;1103 1162 11B8;
+B312;B312;1103 1162 11B9;B312;1103 1162 11B9;
+B313;B313;1103 1162 11BA;B313;1103 1162 11BA;
+B314;B314;1103 1162 11BB;B314;1103 1162 11BB;
+B315;B315;1103 1162 11BC;B315;1103 1162 11BC;
+B316;B316;1103 1162 11BD;B316;1103 1162 11BD;
+B317;B317;1103 1162 11BE;B317;1103 1162 11BE;
+B318;B318;1103 1162 11BF;B318;1103 1162 11BF;
+B319;B319;1103 1162 11C0;B319;1103 1162 11C0;
+B31A;B31A;1103 1162 11C1;B31A;1103 1162 11C1;
+B31B;B31B;1103 1162 11C2;B31B;1103 1162 11C2;
+B31C;B31C;1103 1163;B31C;1103 1163;
+B31D;B31D;1103 1163 11A8;B31D;1103 1163 11A8;
+B31E;B31E;1103 1163 11A9;B31E;1103 1163 11A9;
+B31F;B31F;1103 1163 11AA;B31F;1103 1163 11AA;
+B320;B320;1103 1163 11AB;B320;1103 1163 11AB;
+B321;B321;1103 1163 11AC;B321;1103 1163 11AC;
+B322;B322;1103 1163 11AD;B322;1103 1163 11AD;
+B323;B323;1103 1163 11AE;B323;1103 1163 11AE;
+B324;B324;1103 1163 11AF;B324;1103 1163 11AF;
+B325;B325;1103 1163 11B0;B325;1103 1163 11B0;
+B326;B326;1103 1163 11B1;B326;1103 1163 11B1;
+B327;B327;1103 1163 11B2;B327;1103 1163 11B2;
+B328;B328;1103 1163 11B3;B328;1103 1163 11B3;
+B329;B329;1103 1163 11B4;B329;1103 1163 11B4;
+B32A;B32A;1103 1163 11B5;B32A;1103 1163 11B5;
+B32B;B32B;1103 1163 11B6;B32B;1103 1163 11B6;
+B32C;B32C;1103 1163 11B7;B32C;1103 1163 11B7;
+B32D;B32D;1103 1163 11B8;B32D;1103 1163 11B8;
+B32E;B32E;1103 1163 11B9;B32E;1103 1163 11B9;
+B32F;B32F;1103 1163 11BA;B32F;1103 1163 11BA;
+B330;B330;1103 1163 11BB;B330;1103 1163 11BB;
+B331;B331;1103 1163 11BC;B331;1103 1163 11BC;
+B332;B332;1103 1163 11BD;B332;1103 1163 11BD;
+B333;B333;1103 1163 11BE;B333;1103 1163 11BE;
+B334;B334;1103 1163 11BF;B334;1103 1163 11BF;
+B335;B335;1103 1163 11C0;B335;1103 1163 11C0;
+B336;B336;1103 1163 11C1;B336;1103 1163 11C1;
+B337;B337;1103 1163 11C2;B337;1103 1163 11C2;
+B338;B338;1103 1164;B338;1103 1164;
+B339;B339;1103 1164 11A8;B339;1103 1164 11A8;
+B33A;B33A;1103 1164 11A9;B33A;1103 1164 11A9;
+B33B;B33B;1103 1164 11AA;B33B;1103 1164 11AA;
+B33C;B33C;1103 1164 11AB;B33C;1103 1164 11AB;
+B33D;B33D;1103 1164 11AC;B33D;1103 1164 11AC;
+B33E;B33E;1103 1164 11AD;B33E;1103 1164 11AD;
+B33F;B33F;1103 1164 11AE;B33F;1103 1164 11AE;
+B340;B340;1103 1164 11AF;B340;1103 1164 11AF;
+B341;B341;1103 1164 11B0;B341;1103 1164 11B0;
+B342;B342;1103 1164 11B1;B342;1103 1164 11B1;
+B343;B343;1103 1164 11B2;B343;1103 1164 11B2;
+B344;B344;1103 1164 11B3;B344;1103 1164 11B3;
+B345;B345;1103 1164 11B4;B345;1103 1164 11B4;
+B346;B346;1103 1164 11B5;B346;1103 1164 11B5;
+B347;B347;1103 1164 11B6;B347;1103 1164 11B6;
+B348;B348;1103 1164 11B7;B348;1103 1164 11B7;
+B349;B349;1103 1164 11B8;B349;1103 1164 11B8;
+B34A;B34A;1103 1164 11B9;B34A;1103 1164 11B9;
+B34B;B34B;1103 1164 11BA;B34B;1103 1164 11BA;
+B34C;B34C;1103 1164 11BB;B34C;1103 1164 11BB;
+B34D;B34D;1103 1164 11BC;B34D;1103 1164 11BC;
+B34E;B34E;1103 1164 11BD;B34E;1103 1164 11BD;
+B34F;B34F;1103 1164 11BE;B34F;1103 1164 11BE;
+B350;B350;1103 1164 11BF;B350;1103 1164 11BF;
+B351;B351;1103 1164 11C0;B351;1103 1164 11C0;
+B352;B352;1103 1164 11C1;B352;1103 1164 11C1;
+B353;B353;1103 1164 11C2;B353;1103 1164 11C2;
+B354;B354;1103 1165;B354;1103 1165;
+B355;B355;1103 1165 11A8;B355;1103 1165 11A8;
+B356;B356;1103 1165 11A9;B356;1103 1165 11A9;
+B357;B357;1103 1165 11AA;B357;1103 1165 11AA;
+B358;B358;1103 1165 11AB;B358;1103 1165 11AB;
+B359;B359;1103 1165 11AC;B359;1103 1165 11AC;
+B35A;B35A;1103 1165 11AD;B35A;1103 1165 11AD;
+B35B;B35B;1103 1165 11AE;B35B;1103 1165 11AE;
+B35C;B35C;1103 1165 11AF;B35C;1103 1165 11AF;
+B35D;B35D;1103 1165 11B0;B35D;1103 1165 11B0;
+B35E;B35E;1103 1165 11B1;B35E;1103 1165 11B1;
+B35F;B35F;1103 1165 11B2;B35F;1103 1165 11B2;
+B360;B360;1103 1165 11B3;B360;1103 1165 11B3;
+B361;B361;1103 1165 11B4;B361;1103 1165 11B4;
+B362;B362;1103 1165 11B5;B362;1103 1165 11B5;
+B363;B363;1103 1165 11B6;B363;1103 1165 11B6;
+B364;B364;1103 1165 11B7;B364;1103 1165 11B7;
+B365;B365;1103 1165 11B8;B365;1103 1165 11B8;
+B366;B366;1103 1165 11B9;B366;1103 1165 11B9;
+B367;B367;1103 1165 11BA;B367;1103 1165 11BA;
+B368;B368;1103 1165 11BB;B368;1103 1165 11BB;
+B369;B369;1103 1165 11BC;B369;1103 1165 11BC;
+B36A;B36A;1103 1165 11BD;B36A;1103 1165 11BD;
+B36B;B36B;1103 1165 11BE;B36B;1103 1165 11BE;
+B36C;B36C;1103 1165 11BF;B36C;1103 1165 11BF;
+B36D;B36D;1103 1165 11C0;B36D;1103 1165 11C0;
+B36E;B36E;1103 1165 11C1;B36E;1103 1165 11C1;
+B36F;B36F;1103 1165 11C2;B36F;1103 1165 11C2;
+B370;B370;1103 1166;B370;1103 1166;
+B371;B371;1103 1166 11A8;B371;1103 1166 11A8;
+B372;B372;1103 1166 11A9;B372;1103 1166 11A9;
+B373;B373;1103 1166 11AA;B373;1103 1166 11AA;
+B374;B374;1103 1166 11AB;B374;1103 1166 11AB;
+B375;B375;1103 1166 11AC;B375;1103 1166 11AC;
+B376;B376;1103 1166 11AD;B376;1103 1166 11AD;
+B377;B377;1103 1166 11AE;B377;1103 1166 11AE;
+B378;B378;1103 1166 11AF;B378;1103 1166 11AF;
+B379;B379;1103 1166 11B0;B379;1103 1166 11B0;
+B37A;B37A;1103 1166 11B1;B37A;1103 1166 11B1;
+B37B;B37B;1103 1166 11B2;B37B;1103 1166 11B2;
+B37C;B37C;1103 1166 11B3;B37C;1103 1166 11B3;
+B37D;B37D;1103 1166 11B4;B37D;1103 1166 11B4;
+B37E;B37E;1103 1166 11B5;B37E;1103 1166 11B5;
+B37F;B37F;1103 1166 11B6;B37F;1103 1166 11B6;
+B380;B380;1103 1166 11B7;B380;1103 1166 11B7;
+B381;B381;1103 1166 11B8;B381;1103 1166 11B8;
+B382;B382;1103 1166 11B9;B382;1103 1166 11B9;
+B383;B383;1103 1166 11BA;B383;1103 1166 11BA;
+B384;B384;1103 1166 11BB;B384;1103 1166 11BB;
+B385;B385;1103 1166 11BC;B385;1103 1166 11BC;
+B386;B386;1103 1166 11BD;B386;1103 1166 11BD;
+B387;B387;1103 1166 11BE;B387;1103 1166 11BE;
+B388;B388;1103 1166 11BF;B388;1103 1166 11BF;
+B389;B389;1103 1166 11C0;B389;1103 1166 11C0;
+B38A;B38A;1103 1166 11C1;B38A;1103 1166 11C1;
+B38B;B38B;1103 1166 11C2;B38B;1103 1166 11C2;
+B38C;B38C;1103 1167;B38C;1103 1167;
+B38D;B38D;1103 1167 11A8;B38D;1103 1167 11A8;
+B38E;B38E;1103 1167 11A9;B38E;1103 1167 11A9;
+B38F;B38F;1103 1167 11AA;B38F;1103 1167 11AA;
+B390;B390;1103 1167 11AB;B390;1103 1167 11AB;
+B391;B391;1103 1167 11AC;B391;1103 1167 11AC;
+B392;B392;1103 1167 11AD;B392;1103 1167 11AD;
+B393;B393;1103 1167 11AE;B393;1103 1167 11AE;
+B394;B394;1103 1167 11AF;B394;1103 1167 11AF;
+B395;B395;1103 1167 11B0;B395;1103 1167 11B0;
+B396;B396;1103 1167 11B1;B396;1103 1167 11B1;
+B397;B397;1103 1167 11B2;B397;1103 1167 11B2;
+B398;B398;1103 1167 11B3;B398;1103 1167 11B3;
+B399;B399;1103 1167 11B4;B399;1103 1167 11B4;
+B39A;B39A;1103 1167 11B5;B39A;1103 1167 11B5;
+B39B;B39B;1103 1167 11B6;B39B;1103 1167 11B6;
+B39C;B39C;1103 1167 11B7;B39C;1103 1167 11B7;
+B39D;B39D;1103 1167 11B8;B39D;1103 1167 11B8;
+B39E;B39E;1103 1167 11B9;B39E;1103 1167 11B9;
+B39F;B39F;1103 1167 11BA;B39F;1103 1167 11BA;
+B3A0;B3A0;1103 1167 11BB;B3A0;1103 1167 11BB;
+B3A1;B3A1;1103 1167 11BC;B3A1;1103 1167 11BC;
+B3A2;B3A2;1103 1167 11BD;B3A2;1103 1167 11BD;
+B3A3;B3A3;1103 1167 11BE;B3A3;1103 1167 11BE;
+B3A4;B3A4;1103 1167 11BF;B3A4;1103 1167 11BF;
+B3A5;B3A5;1103 1167 11C0;B3A5;1103 1167 11C0;
+B3A6;B3A6;1103 1167 11C1;B3A6;1103 1167 11C1;
+B3A7;B3A7;1103 1167 11C2;B3A7;1103 1167 11C2;
+B3A8;B3A8;1103 1168;B3A8;1103 1168;
+B3A9;B3A9;1103 1168 11A8;B3A9;1103 1168 11A8;
+B3AA;B3AA;1103 1168 11A9;B3AA;1103 1168 11A9;
+B3AB;B3AB;1103 1168 11AA;B3AB;1103 1168 11AA;
+B3AC;B3AC;1103 1168 11AB;B3AC;1103 1168 11AB;
+B3AD;B3AD;1103 1168 11AC;B3AD;1103 1168 11AC;
+B3AE;B3AE;1103 1168 11AD;B3AE;1103 1168 11AD;
+B3AF;B3AF;1103 1168 11AE;B3AF;1103 1168 11AE;
+B3B0;B3B0;1103 1168 11AF;B3B0;1103 1168 11AF;
+B3B1;B3B1;1103 1168 11B0;B3B1;1103 1168 11B0;
+B3B2;B3B2;1103 1168 11B1;B3B2;1103 1168 11B1;
+B3B3;B3B3;1103 1168 11B2;B3B3;1103 1168 11B2;
+B3B4;B3B4;1103 1168 11B3;B3B4;1103 1168 11B3;
+B3B5;B3B5;1103 1168 11B4;B3B5;1103 1168 11B4;
+B3B6;B3B6;1103 1168 11B5;B3B6;1103 1168 11B5;
+B3B7;B3B7;1103 1168 11B6;B3B7;1103 1168 11B6;
+B3B8;B3B8;1103 1168 11B7;B3B8;1103 1168 11B7;
+B3B9;B3B9;1103 1168 11B8;B3B9;1103 1168 11B8;
+B3BA;B3BA;1103 1168 11B9;B3BA;1103 1168 11B9;
+B3BB;B3BB;1103 1168 11BA;B3BB;1103 1168 11BA;
+B3BC;B3BC;1103 1168 11BB;B3BC;1103 1168 11BB;
+B3BD;B3BD;1103 1168 11BC;B3BD;1103 1168 11BC;
+B3BE;B3BE;1103 1168 11BD;B3BE;1103 1168 11BD;
+B3BF;B3BF;1103 1168 11BE;B3BF;1103 1168 11BE;
+B3C0;B3C0;1103 1168 11BF;B3C0;1103 1168 11BF;
+B3C1;B3C1;1103 1168 11C0;B3C1;1103 1168 11C0;
+B3C2;B3C2;1103 1168 11C1;B3C2;1103 1168 11C1;
+B3C3;B3C3;1103 1168 11C2;B3C3;1103 1168 11C2;
+B3C4;B3C4;1103 1169;B3C4;1103 1169;
+B3C5;B3C5;1103 1169 11A8;B3C5;1103 1169 11A8;
+B3C6;B3C6;1103 1169 11A9;B3C6;1103 1169 11A9;
+B3C7;B3C7;1103 1169 11AA;B3C7;1103 1169 11AA;
+B3C8;B3C8;1103 1169 11AB;B3C8;1103 1169 11AB;
+B3C9;B3C9;1103 1169 11AC;B3C9;1103 1169 11AC;
+B3CA;B3CA;1103 1169 11AD;B3CA;1103 1169 11AD;
+B3CB;B3CB;1103 1169 11AE;B3CB;1103 1169 11AE;
+B3CC;B3CC;1103 1169 11AF;B3CC;1103 1169 11AF;
+B3CD;B3CD;1103 1169 11B0;B3CD;1103 1169 11B0;
+B3CE;B3CE;1103 1169 11B1;B3CE;1103 1169 11B1;
+B3CF;B3CF;1103 1169 11B2;B3CF;1103 1169 11B2;
+B3D0;B3D0;1103 1169 11B3;B3D0;1103 1169 11B3;
+B3D1;B3D1;1103 1169 11B4;B3D1;1103 1169 11B4;
+B3D2;B3D2;1103 1169 11B5;B3D2;1103 1169 11B5;
+B3D3;B3D3;1103 1169 11B6;B3D3;1103 1169 11B6;
+B3D4;B3D4;1103 1169 11B7;B3D4;1103 1169 11B7;
+B3D5;B3D5;1103 1169 11B8;B3D5;1103 1169 11B8;
+B3D6;B3D6;1103 1169 11B9;B3D6;1103 1169 11B9;
+B3D7;B3D7;1103 1169 11BA;B3D7;1103 1169 11BA;
+B3D8;B3D8;1103 1169 11BB;B3D8;1103 1169 11BB;
+B3D9;B3D9;1103 1169 11BC;B3D9;1103 1169 11BC;
+B3DA;B3DA;1103 1169 11BD;B3DA;1103 1169 11BD;
+B3DB;B3DB;1103 1169 11BE;B3DB;1103 1169 11BE;
+B3DC;B3DC;1103 1169 11BF;B3DC;1103 1169 11BF;
+B3DD;B3DD;1103 1169 11C0;B3DD;1103 1169 11C0;
+B3DE;B3DE;1103 1169 11C1;B3DE;1103 1169 11C1;
+B3DF;B3DF;1103 1169 11C2;B3DF;1103 1169 11C2;
+B3E0;B3E0;1103 116A;B3E0;1103 116A;
+B3E1;B3E1;1103 116A 11A8;B3E1;1103 116A 11A8;
+B3E2;B3E2;1103 116A 11A9;B3E2;1103 116A 11A9;
+B3E3;B3E3;1103 116A 11AA;B3E3;1103 116A 11AA;
+B3E4;B3E4;1103 116A 11AB;B3E4;1103 116A 11AB;
+B3E5;B3E5;1103 116A 11AC;B3E5;1103 116A 11AC;
+B3E6;B3E6;1103 116A 11AD;B3E6;1103 116A 11AD;
+B3E7;B3E7;1103 116A 11AE;B3E7;1103 116A 11AE;
+B3E8;B3E8;1103 116A 11AF;B3E8;1103 116A 11AF;
+B3E9;B3E9;1103 116A 11B0;B3E9;1103 116A 11B0;
+B3EA;B3EA;1103 116A 11B1;B3EA;1103 116A 11B1;
+B3EB;B3EB;1103 116A 11B2;B3EB;1103 116A 11B2;
+B3EC;B3EC;1103 116A 11B3;B3EC;1103 116A 11B3;
+B3ED;B3ED;1103 116A 11B4;B3ED;1103 116A 11B4;
+B3EE;B3EE;1103 116A 11B5;B3EE;1103 116A 11B5;
+B3EF;B3EF;1103 116A 11B6;B3EF;1103 116A 11B6;
+B3F0;B3F0;1103 116A 11B7;B3F0;1103 116A 11B7;
+B3F1;B3F1;1103 116A 11B8;B3F1;1103 116A 11B8;
+B3F2;B3F2;1103 116A 11B9;B3F2;1103 116A 11B9;
+B3F3;B3F3;1103 116A 11BA;B3F3;1103 116A 11BA;
+B3F4;B3F4;1103 116A 11BB;B3F4;1103 116A 11BB;
+B3F5;B3F5;1103 116A 11BC;B3F5;1103 116A 11BC;
+B3F6;B3F6;1103 116A 11BD;B3F6;1103 116A 11BD;
+B3F7;B3F7;1103 116A 11BE;B3F7;1103 116A 11BE;
+B3F8;B3F8;1103 116A 11BF;B3F8;1103 116A 11BF;
+B3F9;B3F9;1103 116A 11C0;B3F9;1103 116A 11C0;
+B3FA;B3FA;1103 116A 11C1;B3FA;1103 116A 11C1;
+B3FB;B3FB;1103 116A 11C2;B3FB;1103 116A 11C2;
+B3FC;B3FC;1103 116B;B3FC;1103 116B;
+B3FD;B3FD;1103 116B 11A8;B3FD;1103 116B 11A8;
+B3FE;B3FE;1103 116B 11A9;B3FE;1103 116B 11A9;
+B3FF;B3FF;1103 116B 11AA;B3FF;1103 116B 11AA;
+B400;B400;1103 116B 11AB;B400;1103 116B 11AB;
+B401;B401;1103 116B 11AC;B401;1103 116B 11AC;
+B402;B402;1103 116B 11AD;B402;1103 116B 11AD;
+B403;B403;1103 116B 11AE;B403;1103 116B 11AE;
+B404;B404;1103 116B 11AF;B404;1103 116B 11AF;
+B405;B405;1103 116B 11B0;B405;1103 116B 11B0;
+B406;B406;1103 116B 11B1;B406;1103 116B 11B1;
+B407;B407;1103 116B 11B2;B407;1103 116B 11B2;
+B408;B408;1103 116B 11B3;B408;1103 116B 11B3;
+B409;B409;1103 116B 11B4;B409;1103 116B 11B4;
+B40A;B40A;1103 116B 11B5;B40A;1103 116B 11B5;
+B40B;B40B;1103 116B 11B6;B40B;1103 116B 11B6;
+B40C;B40C;1103 116B 11B7;B40C;1103 116B 11B7;
+B40D;B40D;1103 116B 11B8;B40D;1103 116B 11B8;
+B40E;B40E;1103 116B 11B9;B40E;1103 116B 11B9;
+B40F;B40F;1103 116B 11BA;B40F;1103 116B 11BA;
+B410;B410;1103 116B 11BB;B410;1103 116B 11BB;
+B411;B411;1103 116B 11BC;B411;1103 116B 11BC;
+B412;B412;1103 116B 11BD;B412;1103 116B 11BD;
+B413;B413;1103 116B 11BE;B413;1103 116B 11BE;
+B414;B414;1103 116B 11BF;B414;1103 116B 11BF;
+B415;B415;1103 116B 11C0;B415;1103 116B 11C0;
+B416;B416;1103 116B 11C1;B416;1103 116B 11C1;
+B417;B417;1103 116B 11C2;B417;1103 116B 11C2;
+B418;B418;1103 116C;B418;1103 116C;
+B419;B419;1103 116C 11A8;B419;1103 116C 11A8;
+B41A;B41A;1103 116C 11A9;B41A;1103 116C 11A9;
+B41B;B41B;1103 116C 11AA;B41B;1103 116C 11AA;
+B41C;B41C;1103 116C 11AB;B41C;1103 116C 11AB;
+B41D;B41D;1103 116C 11AC;B41D;1103 116C 11AC;
+B41E;B41E;1103 116C 11AD;B41E;1103 116C 11AD;
+B41F;B41F;1103 116C 11AE;B41F;1103 116C 11AE;
+B420;B420;1103 116C 11AF;B420;1103 116C 11AF;
+B421;B421;1103 116C 11B0;B421;1103 116C 11B0;
+B422;B422;1103 116C 11B1;B422;1103 116C 11B1;
+B423;B423;1103 116C 11B2;B423;1103 116C 11B2;
+B424;B424;1103 116C 11B3;B424;1103 116C 11B3;
+B425;B425;1103 116C 11B4;B425;1103 116C 11B4;
+B426;B426;1103 116C 11B5;B426;1103 116C 11B5;
+B427;B427;1103 116C 11B6;B427;1103 116C 11B6;
+B428;B428;1103 116C 11B7;B428;1103 116C 11B7;
+B429;B429;1103 116C 11B8;B429;1103 116C 11B8;
+B42A;B42A;1103 116C 11B9;B42A;1103 116C 11B9;
+B42B;B42B;1103 116C 11BA;B42B;1103 116C 11BA;
+B42C;B42C;1103 116C 11BB;B42C;1103 116C 11BB;
+B42D;B42D;1103 116C 11BC;B42D;1103 116C 11BC;
+B42E;B42E;1103 116C 11BD;B42E;1103 116C 11BD;
+B42F;B42F;1103 116C 11BE;B42F;1103 116C 11BE;
+B430;B430;1103 116C 11BF;B430;1103 116C 11BF;
+B431;B431;1103 116C 11C0;B431;1103 116C 11C0;
+B432;B432;1103 116C 11C1;B432;1103 116C 11C1;
+B433;B433;1103 116C 11C2;B433;1103 116C 11C2;
+B434;B434;1103 116D;B434;1103 116D;
+B435;B435;1103 116D 11A8;B435;1103 116D 11A8;
+B436;B436;1103 116D 11A9;B436;1103 116D 11A9;
+B437;B437;1103 116D 11AA;B437;1103 116D 11AA;
+B438;B438;1103 116D 11AB;B438;1103 116D 11AB;
+B439;B439;1103 116D 11AC;B439;1103 116D 11AC;
+B43A;B43A;1103 116D 11AD;B43A;1103 116D 11AD;
+B43B;B43B;1103 116D 11AE;B43B;1103 116D 11AE;
+B43C;B43C;1103 116D 11AF;B43C;1103 116D 11AF;
+B43D;B43D;1103 116D 11B0;B43D;1103 116D 11B0;
+B43E;B43E;1103 116D 11B1;B43E;1103 116D 11B1;
+B43F;B43F;1103 116D 11B2;B43F;1103 116D 11B2;
+B440;B440;1103 116D 11B3;B440;1103 116D 11B3;
+B441;B441;1103 116D 11B4;B441;1103 116D 11B4;
+B442;B442;1103 116D 11B5;B442;1103 116D 11B5;
+B443;B443;1103 116D 11B6;B443;1103 116D 11B6;
+B444;B444;1103 116D 11B7;B444;1103 116D 11B7;
+B445;B445;1103 116D 11B8;B445;1103 116D 11B8;
+B446;B446;1103 116D 11B9;B446;1103 116D 11B9;
+B447;B447;1103 116D 11BA;B447;1103 116D 11BA;
+B448;B448;1103 116D 11BB;B448;1103 116D 11BB;
+B449;B449;1103 116D 11BC;B449;1103 116D 11BC;
+B44A;B44A;1103 116D 11BD;B44A;1103 116D 11BD;
+B44B;B44B;1103 116D 11BE;B44B;1103 116D 11BE;
+B44C;B44C;1103 116D 11BF;B44C;1103 116D 11BF;
+B44D;B44D;1103 116D 11C0;B44D;1103 116D 11C0;
+B44E;B44E;1103 116D 11C1;B44E;1103 116D 11C1;
+B44F;B44F;1103 116D 11C2;B44F;1103 116D 11C2;
+B450;B450;1103 116E;B450;1103 116E;
+B451;B451;1103 116E 11A8;B451;1103 116E 11A8;
+B452;B452;1103 116E 11A9;B452;1103 116E 11A9;
+B453;B453;1103 116E 11AA;B453;1103 116E 11AA;
+B454;B454;1103 116E 11AB;B454;1103 116E 11AB;
+B455;B455;1103 116E 11AC;B455;1103 116E 11AC;
+B456;B456;1103 116E 11AD;B456;1103 116E 11AD;
+B457;B457;1103 116E 11AE;B457;1103 116E 11AE;
+B458;B458;1103 116E 11AF;B458;1103 116E 11AF;
+B459;B459;1103 116E 11B0;B459;1103 116E 11B0;
+B45A;B45A;1103 116E 11B1;B45A;1103 116E 11B1;
+B45B;B45B;1103 116E 11B2;B45B;1103 116E 11B2;
+B45C;B45C;1103 116E 11B3;B45C;1103 116E 11B3;
+B45D;B45D;1103 116E 11B4;B45D;1103 116E 11B4;
+B45E;B45E;1103 116E 11B5;B45E;1103 116E 11B5;
+B45F;B45F;1103 116E 11B6;B45F;1103 116E 11B6;
+B460;B460;1103 116E 11B7;B460;1103 116E 11B7;
+B461;B461;1103 116E 11B8;B461;1103 116E 11B8;
+B462;B462;1103 116E 11B9;B462;1103 116E 11B9;
+B463;B463;1103 116E 11BA;B463;1103 116E 11BA;
+B464;B464;1103 116E 11BB;B464;1103 116E 11BB;
+B465;B465;1103 116E 11BC;B465;1103 116E 11BC;
+B466;B466;1103 116E 11BD;B466;1103 116E 11BD;
+B467;B467;1103 116E 11BE;B467;1103 116E 11BE;
+B468;B468;1103 116E 11BF;B468;1103 116E 11BF;
+B469;B469;1103 116E 11C0;B469;1103 116E 11C0;
+B46A;B46A;1103 116E 11C1;B46A;1103 116E 11C1;
+B46B;B46B;1103 116E 11C2;B46B;1103 116E 11C2;
+B46C;B46C;1103 116F;B46C;1103 116F;
+B46D;B46D;1103 116F 11A8;B46D;1103 116F 11A8;
+B46E;B46E;1103 116F 11A9;B46E;1103 116F 11A9;
+B46F;B46F;1103 116F 11AA;B46F;1103 116F 11AA;
+B470;B470;1103 116F 11AB;B470;1103 116F 11AB;
+B471;B471;1103 116F 11AC;B471;1103 116F 11AC;
+B472;B472;1103 116F 11AD;B472;1103 116F 11AD;
+B473;B473;1103 116F 11AE;B473;1103 116F 11AE;
+B474;B474;1103 116F 11AF;B474;1103 116F 11AF;
+B475;B475;1103 116F 11B0;B475;1103 116F 11B0;
+B476;B476;1103 116F 11B1;B476;1103 116F 11B1;
+B477;B477;1103 116F 11B2;B477;1103 116F 11B2;
+B478;B478;1103 116F 11B3;B478;1103 116F 11B3;
+B479;B479;1103 116F 11B4;B479;1103 116F 11B4;
+B47A;B47A;1103 116F 11B5;B47A;1103 116F 11B5;
+B47B;B47B;1103 116F 11B6;B47B;1103 116F 11B6;
+B47C;B47C;1103 116F 11B7;B47C;1103 116F 11B7;
+B47D;B47D;1103 116F 11B8;B47D;1103 116F 11B8;
+B47E;B47E;1103 116F 11B9;B47E;1103 116F 11B9;
+B47F;B47F;1103 116F 11BA;B47F;1103 116F 11BA;
+B480;B480;1103 116F 11BB;B480;1103 116F 11BB;
+B481;B481;1103 116F 11BC;B481;1103 116F 11BC;
+B482;B482;1103 116F 11BD;B482;1103 116F 11BD;
+B483;B483;1103 116F 11BE;B483;1103 116F 11BE;
+B484;B484;1103 116F 11BF;B484;1103 116F 11BF;
+B485;B485;1103 116F 11C0;B485;1103 116F 11C0;
+B486;B486;1103 116F 11C1;B486;1103 116F 11C1;
+B487;B487;1103 116F 11C2;B487;1103 116F 11C2;
+B488;B488;1103 1170;B488;1103 1170;
+B489;B489;1103 1170 11A8;B489;1103 1170 11A8;
+B48A;B48A;1103 1170 11A9;B48A;1103 1170 11A9;
+B48B;B48B;1103 1170 11AA;B48B;1103 1170 11AA;
+B48C;B48C;1103 1170 11AB;B48C;1103 1170 11AB;
+B48D;B48D;1103 1170 11AC;B48D;1103 1170 11AC;
+B48E;B48E;1103 1170 11AD;B48E;1103 1170 11AD;
+B48F;B48F;1103 1170 11AE;B48F;1103 1170 11AE;
+B490;B490;1103 1170 11AF;B490;1103 1170 11AF;
+B491;B491;1103 1170 11B0;B491;1103 1170 11B0;
+B492;B492;1103 1170 11B1;B492;1103 1170 11B1;
+B493;B493;1103 1170 11B2;B493;1103 1170 11B2;
+B494;B494;1103 1170 11B3;B494;1103 1170 11B3;
+B495;B495;1103 1170 11B4;B495;1103 1170 11B4;
+B496;B496;1103 1170 11B5;B496;1103 1170 11B5;
+B497;B497;1103 1170 11B6;B497;1103 1170 11B6;
+B498;B498;1103 1170 11B7;B498;1103 1170 11B7;
+B499;B499;1103 1170 11B8;B499;1103 1170 11B8;
+B49A;B49A;1103 1170 11B9;B49A;1103 1170 11B9;
+B49B;B49B;1103 1170 11BA;B49B;1103 1170 11BA;
+B49C;B49C;1103 1170 11BB;B49C;1103 1170 11BB;
+B49D;B49D;1103 1170 11BC;B49D;1103 1170 11BC;
+B49E;B49E;1103 1170 11BD;B49E;1103 1170 11BD;
+B49F;B49F;1103 1170 11BE;B49F;1103 1170 11BE;
+B4A0;B4A0;1103 1170 11BF;B4A0;1103 1170 11BF;
+B4A1;B4A1;1103 1170 11C0;B4A1;1103 1170 11C0;
+B4A2;B4A2;1103 1170 11C1;B4A2;1103 1170 11C1;
+B4A3;B4A3;1103 1170 11C2;B4A3;1103 1170 11C2;
+B4A4;B4A4;1103 1171;B4A4;1103 1171;
+B4A5;B4A5;1103 1171 11A8;B4A5;1103 1171 11A8;
+B4A6;B4A6;1103 1171 11A9;B4A6;1103 1171 11A9;
+B4A7;B4A7;1103 1171 11AA;B4A7;1103 1171 11AA;
+B4A8;B4A8;1103 1171 11AB;B4A8;1103 1171 11AB;
+B4A9;B4A9;1103 1171 11AC;B4A9;1103 1171 11AC;
+B4AA;B4AA;1103 1171 11AD;B4AA;1103 1171 11AD;
+B4AB;B4AB;1103 1171 11AE;B4AB;1103 1171 11AE;
+B4AC;B4AC;1103 1171 11AF;B4AC;1103 1171 11AF;
+B4AD;B4AD;1103 1171 11B0;B4AD;1103 1171 11B0;
+B4AE;B4AE;1103 1171 11B1;B4AE;1103 1171 11B1;
+B4AF;B4AF;1103 1171 11B2;B4AF;1103 1171 11B2;
+B4B0;B4B0;1103 1171 11B3;B4B0;1103 1171 11B3;
+B4B1;B4B1;1103 1171 11B4;B4B1;1103 1171 11B4;
+B4B2;B4B2;1103 1171 11B5;B4B2;1103 1171 11B5;
+B4B3;B4B3;1103 1171 11B6;B4B3;1103 1171 11B6;
+B4B4;B4B4;1103 1171 11B7;B4B4;1103 1171 11B7;
+B4B5;B4B5;1103 1171 11B8;B4B5;1103 1171 11B8;
+B4B6;B4B6;1103 1171 11B9;B4B6;1103 1171 11B9;
+B4B7;B4B7;1103 1171 11BA;B4B7;1103 1171 11BA;
+B4B8;B4B8;1103 1171 11BB;B4B8;1103 1171 11BB;
+B4B9;B4B9;1103 1171 11BC;B4B9;1103 1171 11BC;
+B4BA;B4BA;1103 1171 11BD;B4BA;1103 1171 11BD;
+B4BB;B4BB;1103 1171 11BE;B4BB;1103 1171 11BE;
+B4BC;B4BC;1103 1171 11BF;B4BC;1103 1171 11BF;
+B4BD;B4BD;1103 1171 11C0;B4BD;1103 1171 11C0;
+B4BE;B4BE;1103 1171 11C1;B4BE;1103 1171 11C1;
+B4BF;B4BF;1103 1171 11C2;B4BF;1103 1171 11C2;
+B4C0;B4C0;1103 1172;B4C0;1103 1172;
+B4C1;B4C1;1103 1172 11A8;B4C1;1103 1172 11A8;
+B4C2;B4C2;1103 1172 11A9;B4C2;1103 1172 11A9;
+B4C3;B4C3;1103 1172 11AA;B4C3;1103 1172 11AA;
+B4C4;B4C4;1103 1172 11AB;B4C4;1103 1172 11AB;
+B4C5;B4C5;1103 1172 11AC;B4C5;1103 1172 11AC;
+B4C6;B4C6;1103 1172 11AD;B4C6;1103 1172 11AD;
+B4C7;B4C7;1103 1172 11AE;B4C7;1103 1172 11AE;
+B4C8;B4C8;1103 1172 11AF;B4C8;1103 1172 11AF;
+B4C9;B4C9;1103 1172 11B0;B4C9;1103 1172 11B0;
+B4CA;B4CA;1103 1172 11B1;B4CA;1103 1172 11B1;
+B4CB;B4CB;1103 1172 11B2;B4CB;1103 1172 11B2;
+B4CC;B4CC;1103 1172 11B3;B4CC;1103 1172 11B3;
+B4CD;B4CD;1103 1172 11B4;B4CD;1103 1172 11B4;
+B4CE;B4CE;1103 1172 11B5;B4CE;1103 1172 11B5;
+B4CF;B4CF;1103 1172 11B6;B4CF;1103 1172 11B6;
+B4D0;B4D0;1103 1172 11B7;B4D0;1103 1172 11B7;
+B4D1;B4D1;1103 1172 11B8;B4D1;1103 1172 11B8;
+B4D2;B4D2;1103 1172 11B9;B4D2;1103 1172 11B9;
+B4D3;B4D3;1103 1172 11BA;B4D3;1103 1172 11BA;
+B4D4;B4D4;1103 1172 11BB;B4D4;1103 1172 11BB;
+B4D5;B4D5;1103 1172 11BC;B4D5;1103 1172 11BC;
+B4D6;B4D6;1103 1172 11BD;B4D6;1103 1172 11BD;
+B4D7;B4D7;1103 1172 11BE;B4D7;1103 1172 11BE;
+B4D8;B4D8;1103 1172 11BF;B4D8;1103 1172 11BF;
+B4D9;B4D9;1103 1172 11C0;B4D9;1103 1172 11C0;
+B4DA;B4DA;1103 1172 11C1;B4DA;1103 1172 11C1;
+B4DB;B4DB;1103 1172 11C2;B4DB;1103 1172 11C2;
+B4DC;B4DC;1103 1173;B4DC;1103 1173;
+B4DD;B4DD;1103 1173 11A8;B4DD;1103 1173 11A8;
+B4DE;B4DE;1103 1173 11A9;B4DE;1103 1173 11A9;
+B4DF;B4DF;1103 1173 11AA;B4DF;1103 1173 11AA;
+B4E0;B4E0;1103 1173 11AB;B4E0;1103 1173 11AB;
+B4E1;B4E1;1103 1173 11AC;B4E1;1103 1173 11AC;
+B4E2;B4E2;1103 1173 11AD;B4E2;1103 1173 11AD;
+B4E3;B4E3;1103 1173 11AE;B4E3;1103 1173 11AE;
+B4E4;B4E4;1103 1173 11AF;B4E4;1103 1173 11AF;
+B4E5;B4E5;1103 1173 11B0;B4E5;1103 1173 11B0;
+B4E6;B4E6;1103 1173 11B1;B4E6;1103 1173 11B1;
+B4E7;B4E7;1103 1173 11B2;B4E7;1103 1173 11B2;
+B4E8;B4E8;1103 1173 11B3;B4E8;1103 1173 11B3;
+B4E9;B4E9;1103 1173 11B4;B4E9;1103 1173 11B4;
+B4EA;B4EA;1103 1173 11B5;B4EA;1103 1173 11B5;
+B4EB;B4EB;1103 1173 11B6;B4EB;1103 1173 11B6;
+B4EC;B4EC;1103 1173 11B7;B4EC;1103 1173 11B7;
+B4ED;B4ED;1103 1173 11B8;B4ED;1103 1173 11B8;
+B4EE;B4EE;1103 1173 11B9;B4EE;1103 1173 11B9;
+B4EF;B4EF;1103 1173 11BA;B4EF;1103 1173 11BA;
+B4F0;B4F0;1103 1173 11BB;B4F0;1103 1173 11BB;
+B4F1;B4F1;1103 1173 11BC;B4F1;1103 1173 11BC;
+B4F2;B4F2;1103 1173 11BD;B4F2;1103 1173 11BD;
+B4F3;B4F3;1103 1173 11BE;B4F3;1103 1173 11BE;
+B4F4;B4F4;1103 1173 11BF;B4F4;1103 1173 11BF;
+B4F5;B4F5;1103 1173 11C0;B4F5;1103 1173 11C0;
+B4F6;B4F6;1103 1173 11C1;B4F6;1103 1173 11C1;
+B4F7;B4F7;1103 1173 11C2;B4F7;1103 1173 11C2;
+B4F8;B4F8;1103 1174;B4F8;1103 1174;
+B4F9;B4F9;1103 1174 11A8;B4F9;1103 1174 11A8;
+B4FA;B4FA;1103 1174 11A9;B4FA;1103 1174 11A9;
+B4FB;B4FB;1103 1174 11AA;B4FB;1103 1174 11AA;
+B4FC;B4FC;1103 1174 11AB;B4FC;1103 1174 11AB;
+B4FD;B4FD;1103 1174 11AC;B4FD;1103 1174 11AC;
+B4FE;B4FE;1103 1174 11AD;B4FE;1103 1174 11AD;
+B4FF;B4FF;1103 1174 11AE;B4FF;1103 1174 11AE;
+B500;B500;1103 1174 11AF;B500;1103 1174 11AF;
+B501;B501;1103 1174 11B0;B501;1103 1174 11B0;
+B502;B502;1103 1174 11B1;B502;1103 1174 11B1;
+B503;B503;1103 1174 11B2;B503;1103 1174 11B2;
+B504;B504;1103 1174 11B3;B504;1103 1174 11B3;
+B505;B505;1103 1174 11B4;B505;1103 1174 11B4;
+B506;B506;1103 1174 11B5;B506;1103 1174 11B5;
+B507;B507;1103 1174 11B6;B507;1103 1174 11B6;
+B508;B508;1103 1174 11B7;B508;1103 1174 11B7;
+B509;B509;1103 1174 11B8;B509;1103 1174 11B8;
+B50A;B50A;1103 1174 11B9;B50A;1103 1174 11B9;
+B50B;B50B;1103 1174 11BA;B50B;1103 1174 11BA;
+B50C;B50C;1103 1174 11BB;B50C;1103 1174 11BB;
+B50D;B50D;1103 1174 11BC;B50D;1103 1174 11BC;
+B50E;B50E;1103 1174 11BD;B50E;1103 1174 11BD;
+B50F;B50F;1103 1174 11BE;B50F;1103 1174 11BE;
+B510;B510;1103 1174 11BF;B510;1103 1174 11BF;
+B511;B511;1103 1174 11C0;B511;1103 1174 11C0;
+B512;B512;1103 1174 11C1;B512;1103 1174 11C1;
+B513;B513;1103 1174 11C2;B513;1103 1174 11C2;
+B514;B514;1103 1175;B514;1103 1175;
+B515;B515;1103 1175 11A8;B515;1103 1175 11A8;
+B516;B516;1103 1175 11A9;B516;1103 1175 11A9;
+B517;B517;1103 1175 11AA;B517;1103 1175 11AA;
+B518;B518;1103 1175 11AB;B518;1103 1175 11AB;
+B519;B519;1103 1175 11AC;B519;1103 1175 11AC;
+B51A;B51A;1103 1175 11AD;B51A;1103 1175 11AD;
+B51B;B51B;1103 1175 11AE;B51B;1103 1175 11AE;
+B51C;B51C;1103 1175 11AF;B51C;1103 1175 11AF;
+B51D;B51D;1103 1175 11B0;B51D;1103 1175 11B0;
+B51E;B51E;1103 1175 11B1;B51E;1103 1175 11B1;
+B51F;B51F;1103 1175 11B2;B51F;1103 1175 11B2;
+B520;B520;1103 1175 11B3;B520;1103 1175 11B3;
+B521;B521;1103 1175 11B4;B521;1103 1175 11B4;
+B522;B522;1103 1175 11B5;B522;1103 1175 11B5;
+B523;B523;1103 1175 11B6;B523;1103 1175 11B6;
+B524;B524;1103 1175 11B7;B524;1103 1175 11B7;
+B525;B525;1103 1175 11B8;B525;1103 1175 11B8;
+B526;B526;1103 1175 11B9;B526;1103 1175 11B9;
+B527;B527;1103 1175 11BA;B527;1103 1175 11BA;
+B528;B528;1103 1175 11BB;B528;1103 1175 11BB;
+B529;B529;1103 1175 11BC;B529;1103 1175 11BC;
+B52A;B52A;1103 1175 11BD;B52A;1103 1175 11BD;
+B52B;B52B;1103 1175 11BE;B52B;1103 1175 11BE;
+B52C;B52C;1103 1175 11BF;B52C;1103 1175 11BF;
+B52D;B52D;1103 1175 11C0;B52D;1103 1175 11C0;
+B52E;B52E;1103 1175 11C1;B52E;1103 1175 11C1;
+B52F;B52F;1103 1175 11C2;B52F;1103 1175 11C2;
+B530;B530;1104 1161;B530;1104 1161;
+B531;B531;1104 1161 11A8;B531;1104 1161 11A8;
+B532;B532;1104 1161 11A9;B532;1104 1161 11A9;
+B533;B533;1104 1161 11AA;B533;1104 1161 11AA;
+B534;B534;1104 1161 11AB;B534;1104 1161 11AB;
+B535;B535;1104 1161 11AC;B535;1104 1161 11AC;
+B536;B536;1104 1161 11AD;B536;1104 1161 11AD;
+B537;B537;1104 1161 11AE;B537;1104 1161 11AE;
+B538;B538;1104 1161 11AF;B538;1104 1161 11AF;
+B539;B539;1104 1161 11B0;B539;1104 1161 11B0;
+B53A;B53A;1104 1161 11B1;B53A;1104 1161 11B1;
+B53B;B53B;1104 1161 11B2;B53B;1104 1161 11B2;
+B53C;B53C;1104 1161 11B3;B53C;1104 1161 11B3;
+B53D;B53D;1104 1161 11B4;B53D;1104 1161 11B4;
+B53E;B53E;1104 1161 11B5;B53E;1104 1161 11B5;
+B53F;B53F;1104 1161 11B6;B53F;1104 1161 11B6;
+B540;B540;1104 1161 11B7;B540;1104 1161 11B7;
+B541;B541;1104 1161 11B8;B541;1104 1161 11B8;
+B542;B542;1104 1161 11B9;B542;1104 1161 11B9;
+B543;B543;1104 1161 11BA;B543;1104 1161 11BA;
+B544;B544;1104 1161 11BB;B544;1104 1161 11BB;
+B545;B545;1104 1161 11BC;B545;1104 1161 11BC;
+B546;B546;1104 1161 11BD;B546;1104 1161 11BD;
+B547;B547;1104 1161 11BE;B547;1104 1161 11BE;
+B548;B548;1104 1161 11BF;B548;1104 1161 11BF;
+B549;B549;1104 1161 11C0;B549;1104 1161 11C0;
+B54A;B54A;1104 1161 11C1;B54A;1104 1161 11C1;
+B54B;B54B;1104 1161 11C2;B54B;1104 1161 11C2;
+B54C;B54C;1104 1162;B54C;1104 1162;
+B54D;B54D;1104 1162 11A8;B54D;1104 1162 11A8;
+B54E;B54E;1104 1162 11A9;B54E;1104 1162 11A9;
+B54F;B54F;1104 1162 11AA;B54F;1104 1162 11AA;
+B550;B550;1104 1162 11AB;B550;1104 1162 11AB;
+B551;B551;1104 1162 11AC;B551;1104 1162 11AC;
+B552;B552;1104 1162 11AD;B552;1104 1162 11AD;
+B553;B553;1104 1162 11AE;B553;1104 1162 11AE;
+B554;B554;1104 1162 11AF;B554;1104 1162 11AF;
+B555;B555;1104 1162 11B0;B555;1104 1162 11B0;
+B556;B556;1104 1162 11B1;B556;1104 1162 11B1;
+B557;B557;1104 1162 11B2;B557;1104 1162 11B2;
+B558;B558;1104 1162 11B3;B558;1104 1162 11B3;
+B559;B559;1104 1162 11B4;B559;1104 1162 11B4;
+B55A;B55A;1104 1162 11B5;B55A;1104 1162 11B5;
+B55B;B55B;1104 1162 11B6;B55B;1104 1162 11B6;
+B55C;B55C;1104 1162 11B7;B55C;1104 1162 11B7;
+B55D;B55D;1104 1162 11B8;B55D;1104 1162 11B8;
+B55E;B55E;1104 1162 11B9;B55E;1104 1162 11B9;
+B55F;B55F;1104 1162 11BA;B55F;1104 1162 11BA;
+B560;B560;1104 1162 11BB;B560;1104 1162 11BB;
+B561;B561;1104 1162 11BC;B561;1104 1162 11BC;
+B562;B562;1104 1162 11BD;B562;1104 1162 11BD;
+B563;B563;1104 1162 11BE;B563;1104 1162 11BE;
+B564;B564;1104 1162 11BF;B564;1104 1162 11BF;
+B565;B565;1104 1162 11C0;B565;1104 1162 11C0;
+B566;B566;1104 1162 11C1;B566;1104 1162 11C1;
+B567;B567;1104 1162 11C2;B567;1104 1162 11C2;
+B568;B568;1104 1163;B568;1104 1163;
+B569;B569;1104 1163 11A8;B569;1104 1163 11A8;
+B56A;B56A;1104 1163 11A9;B56A;1104 1163 11A9;
+B56B;B56B;1104 1163 11AA;B56B;1104 1163 11AA;
+B56C;B56C;1104 1163 11AB;B56C;1104 1163 11AB;
+B56D;B56D;1104 1163 11AC;B56D;1104 1163 11AC;
+B56E;B56E;1104 1163 11AD;B56E;1104 1163 11AD;
+B56F;B56F;1104 1163 11AE;B56F;1104 1163 11AE;
+B570;B570;1104 1163 11AF;B570;1104 1163 11AF;
+B571;B571;1104 1163 11B0;B571;1104 1163 11B0;
+B572;B572;1104 1163 11B1;B572;1104 1163 11B1;
+B573;B573;1104 1163 11B2;B573;1104 1163 11B2;
+B574;B574;1104 1163 11B3;B574;1104 1163 11B3;
+B575;B575;1104 1163 11B4;B575;1104 1163 11B4;
+B576;B576;1104 1163 11B5;B576;1104 1163 11B5;
+B577;B577;1104 1163 11B6;B577;1104 1163 11B6;
+B578;B578;1104 1163 11B7;B578;1104 1163 11B7;
+B579;B579;1104 1163 11B8;B579;1104 1163 11B8;
+B57A;B57A;1104 1163 11B9;B57A;1104 1163 11B9;
+B57B;B57B;1104 1163 11BA;B57B;1104 1163 11BA;
+B57C;B57C;1104 1163 11BB;B57C;1104 1163 11BB;
+B57D;B57D;1104 1163 11BC;B57D;1104 1163 11BC;
+B57E;B57E;1104 1163 11BD;B57E;1104 1163 11BD;
+B57F;B57F;1104 1163 11BE;B57F;1104 1163 11BE;
+B580;B580;1104 1163 11BF;B580;1104 1163 11BF;
+B581;B581;1104 1163 11C0;B581;1104 1163 11C0;
+B582;B582;1104 1163 11C1;B582;1104 1163 11C1;
+B583;B583;1104 1163 11C2;B583;1104 1163 11C2;
+B584;B584;1104 1164;B584;1104 1164;
+B585;B585;1104 1164 11A8;B585;1104 1164 11A8;
+B586;B586;1104 1164 11A9;B586;1104 1164 11A9;
+B587;B587;1104 1164 11AA;B587;1104 1164 11AA;
+B588;B588;1104 1164 11AB;B588;1104 1164 11AB;
+B589;B589;1104 1164 11AC;B589;1104 1164 11AC;
+B58A;B58A;1104 1164 11AD;B58A;1104 1164 11AD;
+B58B;B58B;1104 1164 11AE;B58B;1104 1164 11AE;
+B58C;B58C;1104 1164 11AF;B58C;1104 1164 11AF;
+B58D;B58D;1104 1164 11B0;B58D;1104 1164 11B0;
+B58E;B58E;1104 1164 11B1;B58E;1104 1164 11B1;
+B58F;B58F;1104 1164 11B2;B58F;1104 1164 11B2;
+B590;B590;1104 1164 11B3;B590;1104 1164 11B3;
+B591;B591;1104 1164 11B4;B591;1104 1164 11B4;
+B592;B592;1104 1164 11B5;B592;1104 1164 11B5;
+B593;B593;1104 1164 11B6;B593;1104 1164 11B6;
+B594;B594;1104 1164 11B7;B594;1104 1164 11B7;
+B595;B595;1104 1164 11B8;B595;1104 1164 11B8;
+B596;B596;1104 1164 11B9;B596;1104 1164 11B9;
+B597;B597;1104 1164 11BA;B597;1104 1164 11BA;
+B598;B598;1104 1164 11BB;B598;1104 1164 11BB;
+B599;B599;1104 1164 11BC;B599;1104 1164 11BC;
+B59A;B59A;1104 1164 11BD;B59A;1104 1164 11BD;
+B59B;B59B;1104 1164 11BE;B59B;1104 1164 11BE;
+B59C;B59C;1104 1164 11BF;B59C;1104 1164 11BF;
+B59D;B59D;1104 1164 11C0;B59D;1104 1164 11C0;
+B59E;B59E;1104 1164 11C1;B59E;1104 1164 11C1;
+B59F;B59F;1104 1164 11C2;B59F;1104 1164 11C2;
+B5A0;B5A0;1104 1165;B5A0;1104 1165;
+B5A1;B5A1;1104 1165 11A8;B5A1;1104 1165 11A8;
+B5A2;B5A2;1104 1165 11A9;B5A2;1104 1165 11A9;
+B5A3;B5A3;1104 1165 11AA;B5A3;1104 1165 11AA;
+B5A4;B5A4;1104 1165 11AB;B5A4;1104 1165 11AB;
+B5A5;B5A5;1104 1165 11AC;B5A5;1104 1165 11AC;
+B5A6;B5A6;1104 1165 11AD;B5A6;1104 1165 11AD;
+B5A7;B5A7;1104 1165 11AE;B5A7;1104 1165 11AE;
+B5A8;B5A8;1104 1165 11AF;B5A8;1104 1165 11AF;
+B5A9;B5A9;1104 1165 11B0;B5A9;1104 1165 11B0;
+B5AA;B5AA;1104 1165 11B1;B5AA;1104 1165 11B1;
+B5AB;B5AB;1104 1165 11B2;B5AB;1104 1165 11B2;
+B5AC;B5AC;1104 1165 11B3;B5AC;1104 1165 11B3;
+B5AD;B5AD;1104 1165 11B4;B5AD;1104 1165 11B4;
+B5AE;B5AE;1104 1165 11B5;B5AE;1104 1165 11B5;
+B5AF;B5AF;1104 1165 11B6;B5AF;1104 1165 11B6;
+B5B0;B5B0;1104 1165 11B7;B5B0;1104 1165 11B7;
+B5B1;B5B1;1104 1165 11B8;B5B1;1104 1165 11B8;
+B5B2;B5B2;1104 1165 11B9;B5B2;1104 1165 11B9;
+B5B3;B5B3;1104 1165 11BA;B5B3;1104 1165 11BA;
+B5B4;B5B4;1104 1165 11BB;B5B4;1104 1165 11BB;
+B5B5;B5B5;1104 1165 11BC;B5B5;1104 1165 11BC;
+B5B6;B5B6;1104 1165 11BD;B5B6;1104 1165 11BD;
+B5B7;B5B7;1104 1165 11BE;B5B7;1104 1165 11BE;
+B5B8;B5B8;1104 1165 11BF;B5B8;1104 1165 11BF;
+B5B9;B5B9;1104 1165 11C0;B5B9;1104 1165 11C0;
+B5BA;B5BA;1104 1165 11C1;B5BA;1104 1165 11C1;
+B5BB;B5BB;1104 1165 11C2;B5BB;1104 1165 11C2;
+B5BC;B5BC;1104 1166;B5BC;1104 1166;
+B5BD;B5BD;1104 1166 11A8;B5BD;1104 1166 11A8;
+B5BE;B5BE;1104 1166 11A9;B5BE;1104 1166 11A9;
+B5BF;B5BF;1104 1166 11AA;B5BF;1104 1166 11AA;
+B5C0;B5C0;1104 1166 11AB;B5C0;1104 1166 11AB;
+B5C1;B5C1;1104 1166 11AC;B5C1;1104 1166 11AC;
+B5C2;B5C2;1104 1166 11AD;B5C2;1104 1166 11AD;
+B5C3;B5C3;1104 1166 11AE;B5C3;1104 1166 11AE;
+B5C4;B5C4;1104 1166 11AF;B5C4;1104 1166 11AF;
+B5C5;B5C5;1104 1166 11B0;B5C5;1104 1166 11B0;
+B5C6;B5C6;1104 1166 11B1;B5C6;1104 1166 11B1;
+B5C7;B5C7;1104 1166 11B2;B5C7;1104 1166 11B2;
+B5C8;B5C8;1104 1166 11B3;B5C8;1104 1166 11B3;
+B5C9;B5C9;1104 1166 11B4;B5C9;1104 1166 11B4;
+B5CA;B5CA;1104 1166 11B5;B5CA;1104 1166 11B5;
+B5CB;B5CB;1104 1166 11B6;B5CB;1104 1166 11B6;
+B5CC;B5CC;1104 1166 11B7;B5CC;1104 1166 11B7;
+B5CD;B5CD;1104 1166 11B8;B5CD;1104 1166 11B8;
+B5CE;B5CE;1104 1166 11B9;B5CE;1104 1166 11B9;
+B5CF;B5CF;1104 1166 11BA;B5CF;1104 1166 11BA;
+B5D0;B5D0;1104 1166 11BB;B5D0;1104 1166 11BB;
+B5D1;B5D1;1104 1166 11BC;B5D1;1104 1166 11BC;
+B5D2;B5D2;1104 1166 11BD;B5D2;1104 1166 11BD;
+B5D3;B5D3;1104 1166 11BE;B5D3;1104 1166 11BE;
+B5D4;B5D4;1104 1166 11BF;B5D4;1104 1166 11BF;
+B5D5;B5D5;1104 1166 11C0;B5D5;1104 1166 11C0;
+B5D6;B5D6;1104 1166 11C1;B5D6;1104 1166 11C1;
+B5D7;B5D7;1104 1166 11C2;B5D7;1104 1166 11C2;
+B5D8;B5D8;1104 1167;B5D8;1104 1167;
+B5D9;B5D9;1104 1167 11A8;B5D9;1104 1167 11A8;
+B5DA;B5DA;1104 1167 11A9;B5DA;1104 1167 11A9;
+B5DB;B5DB;1104 1167 11AA;B5DB;1104 1167 11AA;
+B5DC;B5DC;1104 1167 11AB;B5DC;1104 1167 11AB;
+B5DD;B5DD;1104 1167 11AC;B5DD;1104 1167 11AC;
+B5DE;B5DE;1104 1167 11AD;B5DE;1104 1167 11AD;
+B5DF;B5DF;1104 1167 11AE;B5DF;1104 1167 11AE;
+B5E0;B5E0;1104 1167 11AF;B5E0;1104 1167 11AF;
+B5E1;B5E1;1104 1167 11B0;B5E1;1104 1167 11B0;
+B5E2;B5E2;1104 1167 11B1;B5E2;1104 1167 11B1;
+B5E3;B5E3;1104 1167 11B2;B5E3;1104 1167 11B2;
+B5E4;B5E4;1104 1167 11B3;B5E4;1104 1167 11B3;
+B5E5;B5E5;1104 1167 11B4;B5E5;1104 1167 11B4;
+B5E6;B5E6;1104 1167 11B5;B5E6;1104 1167 11B5;
+B5E7;B5E7;1104 1167 11B6;B5E7;1104 1167 11B6;
+B5E8;B5E8;1104 1167 11B7;B5E8;1104 1167 11B7;
+B5E9;B5E9;1104 1167 11B8;B5E9;1104 1167 11B8;
+B5EA;B5EA;1104 1167 11B9;B5EA;1104 1167 11B9;
+B5EB;B5EB;1104 1167 11BA;B5EB;1104 1167 11BA;
+B5EC;B5EC;1104 1167 11BB;B5EC;1104 1167 11BB;
+B5ED;B5ED;1104 1167 11BC;B5ED;1104 1167 11BC;
+B5EE;B5EE;1104 1167 11BD;B5EE;1104 1167 11BD;
+B5EF;B5EF;1104 1167 11BE;B5EF;1104 1167 11BE;
+B5F0;B5F0;1104 1167 11BF;B5F0;1104 1167 11BF;
+B5F1;B5F1;1104 1167 11C0;B5F1;1104 1167 11C0;
+B5F2;B5F2;1104 1167 11C1;B5F2;1104 1167 11C1;
+B5F3;B5F3;1104 1167 11C2;B5F3;1104 1167 11C2;
+B5F4;B5F4;1104 1168;B5F4;1104 1168;
+B5F5;B5F5;1104 1168 11A8;B5F5;1104 1168 11A8;
+B5F6;B5F6;1104 1168 11A9;B5F6;1104 1168 11A9;
+B5F7;B5F7;1104 1168 11AA;B5F7;1104 1168 11AA;
+B5F8;B5F8;1104 1168 11AB;B5F8;1104 1168 11AB;
+B5F9;B5F9;1104 1168 11AC;B5F9;1104 1168 11AC;
+B5FA;B5FA;1104 1168 11AD;B5FA;1104 1168 11AD;
+B5FB;B5FB;1104 1168 11AE;B5FB;1104 1168 11AE;
+B5FC;B5FC;1104 1168 11AF;B5FC;1104 1168 11AF;
+B5FD;B5FD;1104 1168 11B0;B5FD;1104 1168 11B0;
+B5FE;B5FE;1104 1168 11B1;B5FE;1104 1168 11B1;
+B5FF;B5FF;1104 1168 11B2;B5FF;1104 1168 11B2;
+B600;B600;1104 1168 11B3;B600;1104 1168 11B3;
+B601;B601;1104 1168 11B4;B601;1104 1168 11B4;
+B602;B602;1104 1168 11B5;B602;1104 1168 11B5;
+B603;B603;1104 1168 11B6;B603;1104 1168 11B6;
+B604;B604;1104 1168 11B7;B604;1104 1168 11B7;
+B605;B605;1104 1168 11B8;B605;1104 1168 11B8;
+B606;B606;1104 1168 11B9;B606;1104 1168 11B9;
+B607;B607;1104 1168 11BA;B607;1104 1168 11BA;
+B608;B608;1104 1168 11BB;B608;1104 1168 11BB;
+B609;B609;1104 1168 11BC;B609;1104 1168 11BC;
+B60A;B60A;1104 1168 11BD;B60A;1104 1168 11BD;
+B60B;B60B;1104 1168 11BE;B60B;1104 1168 11BE;
+B60C;B60C;1104 1168 11BF;B60C;1104 1168 11BF;
+B60D;B60D;1104 1168 11C0;B60D;1104 1168 11C0;
+B60E;B60E;1104 1168 11C1;B60E;1104 1168 11C1;
+B60F;B60F;1104 1168 11C2;B60F;1104 1168 11C2;
+B610;B610;1104 1169;B610;1104 1169;
+B611;B611;1104 1169 11A8;B611;1104 1169 11A8;
+B612;B612;1104 1169 11A9;B612;1104 1169 11A9;
+B613;B613;1104 1169 11AA;B613;1104 1169 11AA;
+B614;B614;1104 1169 11AB;B614;1104 1169 11AB;
+B615;B615;1104 1169 11AC;B615;1104 1169 11AC;
+B616;B616;1104 1169 11AD;B616;1104 1169 11AD;
+B617;B617;1104 1169 11AE;B617;1104 1169 11AE;
+B618;B618;1104 1169 11AF;B618;1104 1169 11AF;
+B619;B619;1104 1169 11B0;B619;1104 1169 11B0;
+B61A;B61A;1104 1169 11B1;B61A;1104 1169 11B1;
+B61B;B61B;1104 1169 11B2;B61B;1104 1169 11B2;
+B61C;B61C;1104 1169 11B3;B61C;1104 1169 11B3;
+B61D;B61D;1104 1169 11B4;B61D;1104 1169 11B4;
+B61E;B61E;1104 1169 11B5;B61E;1104 1169 11B5;
+B61F;B61F;1104 1169 11B6;B61F;1104 1169 11B6;
+B620;B620;1104 1169 11B7;B620;1104 1169 11B7;
+B621;B621;1104 1169 11B8;B621;1104 1169 11B8;
+B622;B622;1104 1169 11B9;B622;1104 1169 11B9;
+B623;B623;1104 1169 11BA;B623;1104 1169 11BA;
+B624;B624;1104 1169 11BB;B624;1104 1169 11BB;
+B625;B625;1104 1169 11BC;B625;1104 1169 11BC;
+B626;B626;1104 1169 11BD;B626;1104 1169 11BD;
+B627;B627;1104 1169 11BE;B627;1104 1169 11BE;
+B628;B628;1104 1169 11BF;B628;1104 1169 11BF;
+B629;B629;1104 1169 11C0;B629;1104 1169 11C0;
+B62A;B62A;1104 1169 11C1;B62A;1104 1169 11C1;
+B62B;B62B;1104 1169 11C2;B62B;1104 1169 11C2;
+B62C;B62C;1104 116A;B62C;1104 116A;
+B62D;B62D;1104 116A 11A8;B62D;1104 116A 11A8;
+B62E;B62E;1104 116A 11A9;B62E;1104 116A 11A9;
+B62F;B62F;1104 116A 11AA;B62F;1104 116A 11AA;
+B630;B630;1104 116A 11AB;B630;1104 116A 11AB;
+B631;B631;1104 116A 11AC;B631;1104 116A 11AC;
+B632;B632;1104 116A 11AD;B632;1104 116A 11AD;
+B633;B633;1104 116A 11AE;B633;1104 116A 11AE;
+B634;B634;1104 116A 11AF;B634;1104 116A 11AF;
+B635;B635;1104 116A 11B0;B635;1104 116A 11B0;
+B636;B636;1104 116A 11B1;B636;1104 116A 11B1;
+B637;B637;1104 116A 11B2;B637;1104 116A 11B2;
+B638;B638;1104 116A 11B3;B638;1104 116A 11B3;
+B639;B639;1104 116A 11B4;B639;1104 116A 11B4;
+B63A;B63A;1104 116A 11B5;B63A;1104 116A 11B5;
+B63B;B63B;1104 116A 11B6;B63B;1104 116A 11B6;
+B63C;B63C;1104 116A 11B7;B63C;1104 116A 11B7;
+B63D;B63D;1104 116A 11B8;B63D;1104 116A 11B8;
+B63E;B63E;1104 116A 11B9;B63E;1104 116A 11B9;
+B63F;B63F;1104 116A 11BA;B63F;1104 116A 11BA;
+B640;B640;1104 116A 11BB;B640;1104 116A 11BB;
+B641;B641;1104 116A 11BC;B641;1104 116A 11BC;
+B642;B642;1104 116A 11BD;B642;1104 116A 11BD;
+B643;B643;1104 116A 11BE;B643;1104 116A 11BE;
+B644;B644;1104 116A 11BF;B644;1104 116A 11BF;
+B645;B645;1104 116A 11C0;B645;1104 116A 11C0;
+B646;B646;1104 116A 11C1;B646;1104 116A 11C1;
+B647;B647;1104 116A 11C2;B647;1104 116A 11C2;
+B648;B648;1104 116B;B648;1104 116B;
+B649;B649;1104 116B 11A8;B649;1104 116B 11A8;
+B64A;B64A;1104 116B 11A9;B64A;1104 116B 11A9;
+B64B;B64B;1104 116B 11AA;B64B;1104 116B 11AA;
+B64C;B64C;1104 116B 11AB;B64C;1104 116B 11AB;
+B64D;B64D;1104 116B 11AC;B64D;1104 116B 11AC;
+B64E;B64E;1104 116B 11AD;B64E;1104 116B 11AD;
+B64F;B64F;1104 116B 11AE;B64F;1104 116B 11AE;
+B650;B650;1104 116B 11AF;B650;1104 116B 11AF;
+B651;B651;1104 116B 11B0;B651;1104 116B 11B0;
+B652;B652;1104 116B 11B1;B652;1104 116B 11B1;
+B653;B653;1104 116B 11B2;B653;1104 116B 11B2;
+B654;B654;1104 116B 11B3;B654;1104 116B 11B3;
+B655;B655;1104 116B 11B4;B655;1104 116B 11B4;
+B656;B656;1104 116B 11B5;B656;1104 116B 11B5;
+B657;B657;1104 116B 11B6;B657;1104 116B 11B6;
+B658;B658;1104 116B 11B7;B658;1104 116B 11B7;
+B659;B659;1104 116B 11B8;B659;1104 116B 11B8;
+B65A;B65A;1104 116B 11B9;B65A;1104 116B 11B9;
+B65B;B65B;1104 116B 11BA;B65B;1104 116B 11BA;
+B65C;B65C;1104 116B 11BB;B65C;1104 116B 11BB;
+B65D;B65D;1104 116B 11BC;B65D;1104 116B 11BC;
+B65E;B65E;1104 116B 11BD;B65E;1104 116B 11BD;
+B65F;B65F;1104 116B 11BE;B65F;1104 116B 11BE;
+B660;B660;1104 116B 11BF;B660;1104 116B 11BF;
+B661;B661;1104 116B 11C0;B661;1104 116B 11C0;
+B662;B662;1104 116B 11C1;B662;1104 116B 11C1;
+B663;B663;1104 116B 11C2;B663;1104 116B 11C2;
+B664;B664;1104 116C;B664;1104 116C;
+B665;B665;1104 116C 11A8;B665;1104 116C 11A8;
+B666;B666;1104 116C 11A9;B666;1104 116C 11A9;
+B667;B667;1104 116C 11AA;B667;1104 116C 11AA;
+B668;B668;1104 116C 11AB;B668;1104 116C 11AB;
+B669;B669;1104 116C 11AC;B669;1104 116C 11AC;
+B66A;B66A;1104 116C 11AD;B66A;1104 116C 11AD;
+B66B;B66B;1104 116C 11AE;B66B;1104 116C 11AE;
+B66C;B66C;1104 116C 11AF;B66C;1104 116C 11AF;
+B66D;B66D;1104 116C 11B0;B66D;1104 116C 11B0;
+B66E;B66E;1104 116C 11B1;B66E;1104 116C 11B1;
+B66F;B66F;1104 116C 11B2;B66F;1104 116C 11B2;
+B670;B670;1104 116C 11B3;B670;1104 116C 11B3;
+B671;B671;1104 116C 11B4;B671;1104 116C 11B4;
+B672;B672;1104 116C 11B5;B672;1104 116C 11B5;
+B673;B673;1104 116C 11B6;B673;1104 116C 11B6;
+B674;B674;1104 116C 11B7;B674;1104 116C 11B7;
+B675;B675;1104 116C 11B8;B675;1104 116C 11B8;
+B676;B676;1104 116C 11B9;B676;1104 116C 11B9;
+B677;B677;1104 116C 11BA;B677;1104 116C 11BA;
+B678;B678;1104 116C 11BB;B678;1104 116C 11BB;
+B679;B679;1104 116C 11BC;B679;1104 116C 11BC;
+B67A;B67A;1104 116C 11BD;B67A;1104 116C 11BD;
+B67B;B67B;1104 116C 11BE;B67B;1104 116C 11BE;
+B67C;B67C;1104 116C 11BF;B67C;1104 116C 11BF;
+B67D;B67D;1104 116C 11C0;B67D;1104 116C 11C0;
+B67E;B67E;1104 116C 11C1;B67E;1104 116C 11C1;
+B67F;B67F;1104 116C 11C2;B67F;1104 116C 11C2;
+B680;B680;1104 116D;B680;1104 116D;
+B681;B681;1104 116D 11A8;B681;1104 116D 11A8;
+B682;B682;1104 116D 11A9;B682;1104 116D 11A9;
+B683;B683;1104 116D 11AA;B683;1104 116D 11AA;
+B684;B684;1104 116D 11AB;B684;1104 116D 11AB;
+B685;B685;1104 116D 11AC;B685;1104 116D 11AC;
+B686;B686;1104 116D 11AD;B686;1104 116D 11AD;
+B687;B687;1104 116D 11AE;B687;1104 116D 11AE;
+B688;B688;1104 116D 11AF;B688;1104 116D 11AF;
+B689;B689;1104 116D 11B0;B689;1104 116D 11B0;
+B68A;B68A;1104 116D 11B1;B68A;1104 116D 11B1;
+B68B;B68B;1104 116D 11B2;B68B;1104 116D 11B2;
+B68C;B68C;1104 116D 11B3;B68C;1104 116D 11B3;
+B68D;B68D;1104 116D 11B4;B68D;1104 116D 11B4;
+B68E;B68E;1104 116D 11B5;B68E;1104 116D 11B5;
+B68F;B68F;1104 116D 11B6;B68F;1104 116D 11B6;
+B690;B690;1104 116D 11B7;B690;1104 116D 11B7;
+B691;B691;1104 116D 11B8;B691;1104 116D 11B8;
+B692;B692;1104 116D 11B9;B692;1104 116D 11B9;
+B693;B693;1104 116D 11BA;B693;1104 116D 11BA;
+B694;B694;1104 116D 11BB;B694;1104 116D 11BB;
+B695;B695;1104 116D 11BC;B695;1104 116D 11BC;
+B696;B696;1104 116D 11BD;B696;1104 116D 11BD;
+B697;B697;1104 116D 11BE;B697;1104 116D 11BE;
+B698;B698;1104 116D 11BF;B698;1104 116D 11BF;
+B699;B699;1104 116D 11C0;B699;1104 116D 11C0;
+B69A;B69A;1104 116D 11C1;B69A;1104 116D 11C1;
+B69B;B69B;1104 116D 11C2;B69B;1104 116D 11C2;
+B69C;B69C;1104 116E;B69C;1104 116E;
+B69D;B69D;1104 116E 11A8;B69D;1104 116E 11A8;
+B69E;B69E;1104 116E 11A9;B69E;1104 116E 11A9;
+B69F;B69F;1104 116E 11AA;B69F;1104 116E 11AA;
+B6A0;B6A0;1104 116E 11AB;B6A0;1104 116E 11AB;
+B6A1;B6A1;1104 116E 11AC;B6A1;1104 116E 11AC;
+B6A2;B6A2;1104 116E 11AD;B6A2;1104 116E 11AD;
+B6A3;B6A3;1104 116E 11AE;B6A3;1104 116E 11AE;
+B6A4;B6A4;1104 116E 11AF;B6A4;1104 116E 11AF;
+B6A5;B6A5;1104 116E 11B0;B6A5;1104 116E 11B0;
+B6A6;B6A6;1104 116E 11B1;B6A6;1104 116E 11B1;
+B6A7;B6A7;1104 116E 11B2;B6A7;1104 116E 11B2;
+B6A8;B6A8;1104 116E 11B3;B6A8;1104 116E 11B3;
+B6A9;B6A9;1104 116E 11B4;B6A9;1104 116E 11B4;
+B6AA;B6AA;1104 116E 11B5;B6AA;1104 116E 11B5;
+B6AB;B6AB;1104 116E 11B6;B6AB;1104 116E 11B6;
+B6AC;B6AC;1104 116E 11B7;B6AC;1104 116E 11B7;
+B6AD;B6AD;1104 116E 11B8;B6AD;1104 116E 11B8;
+B6AE;B6AE;1104 116E 11B9;B6AE;1104 116E 11B9;
+B6AF;B6AF;1104 116E 11BA;B6AF;1104 116E 11BA;
+B6B0;B6B0;1104 116E 11BB;B6B0;1104 116E 11BB;
+B6B1;B6B1;1104 116E 11BC;B6B1;1104 116E 11BC;
+B6B2;B6B2;1104 116E 11BD;B6B2;1104 116E 11BD;
+B6B3;B6B3;1104 116E 11BE;B6B3;1104 116E 11BE;
+B6B4;B6B4;1104 116E 11BF;B6B4;1104 116E 11BF;
+B6B5;B6B5;1104 116E 11C0;B6B5;1104 116E 11C0;
+B6B6;B6B6;1104 116E 11C1;B6B6;1104 116E 11C1;
+B6B7;B6B7;1104 116E 11C2;B6B7;1104 116E 11C2;
+B6B8;B6B8;1104 116F;B6B8;1104 116F;
+B6B9;B6B9;1104 116F 11A8;B6B9;1104 116F 11A8;
+B6BA;B6BA;1104 116F 11A9;B6BA;1104 116F 11A9;
+B6BB;B6BB;1104 116F 11AA;B6BB;1104 116F 11AA;
+B6BC;B6BC;1104 116F 11AB;B6BC;1104 116F 11AB;
+B6BD;B6BD;1104 116F 11AC;B6BD;1104 116F 11AC;
+B6BE;B6BE;1104 116F 11AD;B6BE;1104 116F 11AD;
+B6BF;B6BF;1104 116F 11AE;B6BF;1104 116F 11AE;
+B6C0;B6C0;1104 116F 11AF;B6C0;1104 116F 11AF;
+B6C1;B6C1;1104 116F 11B0;B6C1;1104 116F 11B0;
+B6C2;B6C2;1104 116F 11B1;B6C2;1104 116F 11B1;
+B6C3;B6C3;1104 116F 11B2;B6C3;1104 116F 11B2;
+B6C4;B6C4;1104 116F 11B3;B6C4;1104 116F 11B3;
+B6C5;B6C5;1104 116F 11B4;B6C5;1104 116F 11B4;
+B6C6;B6C6;1104 116F 11B5;B6C6;1104 116F 11B5;
+B6C7;B6C7;1104 116F 11B6;B6C7;1104 116F 11B6;
+B6C8;B6C8;1104 116F 11B7;B6C8;1104 116F 11B7;
+B6C9;B6C9;1104 116F 11B8;B6C9;1104 116F 11B8;
+B6CA;B6CA;1104 116F 11B9;B6CA;1104 116F 11B9;
+B6CB;B6CB;1104 116F 11BA;B6CB;1104 116F 11BA;
+B6CC;B6CC;1104 116F 11BB;B6CC;1104 116F 11BB;
+B6CD;B6CD;1104 116F 11BC;B6CD;1104 116F 11BC;
+B6CE;B6CE;1104 116F 11BD;B6CE;1104 116F 11BD;
+B6CF;B6CF;1104 116F 11BE;B6CF;1104 116F 11BE;
+B6D0;B6D0;1104 116F 11BF;B6D0;1104 116F 11BF;
+B6D1;B6D1;1104 116F 11C0;B6D1;1104 116F 11C0;
+B6D2;B6D2;1104 116F 11C1;B6D2;1104 116F 11C1;
+B6D3;B6D3;1104 116F 11C2;B6D3;1104 116F 11C2;
+B6D4;B6D4;1104 1170;B6D4;1104 1170;
+B6D5;B6D5;1104 1170 11A8;B6D5;1104 1170 11A8;
+B6D6;B6D6;1104 1170 11A9;B6D6;1104 1170 11A9;
+B6D7;B6D7;1104 1170 11AA;B6D7;1104 1170 11AA;
+B6D8;B6D8;1104 1170 11AB;B6D8;1104 1170 11AB;
+B6D9;B6D9;1104 1170 11AC;B6D9;1104 1170 11AC;
+B6DA;B6DA;1104 1170 11AD;B6DA;1104 1170 11AD;
+B6DB;B6DB;1104 1170 11AE;B6DB;1104 1170 11AE;
+B6DC;B6DC;1104 1170 11AF;B6DC;1104 1170 11AF;
+B6DD;B6DD;1104 1170 11B0;B6DD;1104 1170 11B0;
+B6DE;B6DE;1104 1170 11B1;B6DE;1104 1170 11B1;
+B6DF;B6DF;1104 1170 11B2;B6DF;1104 1170 11B2;
+B6E0;B6E0;1104 1170 11B3;B6E0;1104 1170 11B3;
+B6E1;B6E1;1104 1170 11B4;B6E1;1104 1170 11B4;
+B6E2;B6E2;1104 1170 11B5;B6E2;1104 1170 11B5;
+B6E3;B6E3;1104 1170 11B6;B6E3;1104 1170 11B6;
+B6E4;B6E4;1104 1170 11B7;B6E4;1104 1170 11B7;
+B6E5;B6E5;1104 1170 11B8;B6E5;1104 1170 11B8;
+B6E6;B6E6;1104 1170 11B9;B6E6;1104 1170 11B9;
+B6E7;B6E7;1104 1170 11BA;B6E7;1104 1170 11BA;
+B6E8;B6E8;1104 1170 11BB;B6E8;1104 1170 11BB;
+B6E9;B6E9;1104 1170 11BC;B6E9;1104 1170 11BC;
+B6EA;B6EA;1104 1170 11BD;B6EA;1104 1170 11BD;
+B6EB;B6EB;1104 1170 11BE;B6EB;1104 1170 11BE;
+B6EC;B6EC;1104 1170 11BF;B6EC;1104 1170 11BF;
+B6ED;B6ED;1104 1170 11C0;B6ED;1104 1170 11C0;
+B6EE;B6EE;1104 1170 11C1;B6EE;1104 1170 11C1;
+B6EF;B6EF;1104 1170 11C2;B6EF;1104 1170 11C2;
+B6F0;B6F0;1104 1171;B6F0;1104 1171;
+B6F1;B6F1;1104 1171 11A8;B6F1;1104 1171 11A8;
+B6F2;B6F2;1104 1171 11A9;B6F2;1104 1171 11A9;
+B6F3;B6F3;1104 1171 11AA;B6F3;1104 1171 11AA;
+B6F4;B6F4;1104 1171 11AB;B6F4;1104 1171 11AB;
+B6F5;B6F5;1104 1171 11AC;B6F5;1104 1171 11AC;
+B6F6;B6F6;1104 1171 11AD;B6F6;1104 1171 11AD;
+B6F7;B6F7;1104 1171 11AE;B6F7;1104 1171 11AE;
+B6F8;B6F8;1104 1171 11AF;B6F8;1104 1171 11AF;
+B6F9;B6F9;1104 1171 11B0;B6F9;1104 1171 11B0;
+B6FA;B6FA;1104 1171 11B1;B6FA;1104 1171 11B1;
+B6FB;B6FB;1104 1171 11B2;B6FB;1104 1171 11B2;
+B6FC;B6FC;1104 1171 11B3;B6FC;1104 1171 11B3;
+B6FD;B6FD;1104 1171 11B4;B6FD;1104 1171 11B4;
+B6FE;B6FE;1104 1171 11B5;B6FE;1104 1171 11B5;
+B6FF;B6FF;1104 1171 11B6;B6FF;1104 1171 11B6;
+B700;B700;1104 1171 11B7;B700;1104 1171 11B7;
+B701;B701;1104 1171 11B8;B701;1104 1171 11B8;
+B702;B702;1104 1171 11B9;B702;1104 1171 11B9;
+B703;B703;1104 1171 11BA;B703;1104 1171 11BA;
+B704;B704;1104 1171 11BB;B704;1104 1171 11BB;
+B705;B705;1104 1171 11BC;B705;1104 1171 11BC;
+B706;B706;1104 1171 11BD;B706;1104 1171 11BD;
+B707;B707;1104 1171 11BE;B707;1104 1171 11BE;
+B708;B708;1104 1171 11BF;B708;1104 1171 11BF;
+B709;B709;1104 1171 11C0;B709;1104 1171 11C0;
+B70A;B70A;1104 1171 11C1;B70A;1104 1171 11C1;
+B70B;B70B;1104 1171 11C2;B70B;1104 1171 11C2;
+B70C;B70C;1104 1172;B70C;1104 1172;
+B70D;B70D;1104 1172 11A8;B70D;1104 1172 11A8;
+B70E;B70E;1104 1172 11A9;B70E;1104 1172 11A9;
+B70F;B70F;1104 1172 11AA;B70F;1104 1172 11AA;
+B710;B710;1104 1172 11AB;B710;1104 1172 11AB;
+B711;B711;1104 1172 11AC;B711;1104 1172 11AC;
+B712;B712;1104 1172 11AD;B712;1104 1172 11AD;
+B713;B713;1104 1172 11AE;B713;1104 1172 11AE;
+B714;B714;1104 1172 11AF;B714;1104 1172 11AF;
+B715;B715;1104 1172 11B0;B715;1104 1172 11B0;
+B716;B716;1104 1172 11B1;B716;1104 1172 11B1;
+B717;B717;1104 1172 11B2;B717;1104 1172 11B2;
+B718;B718;1104 1172 11B3;B718;1104 1172 11B3;
+B719;B719;1104 1172 11B4;B719;1104 1172 11B4;
+B71A;B71A;1104 1172 11B5;B71A;1104 1172 11B5;
+B71B;B71B;1104 1172 11B6;B71B;1104 1172 11B6;
+B71C;B71C;1104 1172 11B7;B71C;1104 1172 11B7;
+B71D;B71D;1104 1172 11B8;B71D;1104 1172 11B8;
+B71E;B71E;1104 1172 11B9;B71E;1104 1172 11B9;
+B71F;B71F;1104 1172 11BA;B71F;1104 1172 11BA;
+B720;B720;1104 1172 11BB;B720;1104 1172 11BB;
+B721;B721;1104 1172 11BC;B721;1104 1172 11BC;
+B722;B722;1104 1172 11BD;B722;1104 1172 11BD;
+B723;B723;1104 1172 11BE;B723;1104 1172 11BE;
+B724;B724;1104 1172 11BF;B724;1104 1172 11BF;
+B725;B725;1104 1172 11C0;B725;1104 1172 11C0;
+B726;B726;1104 1172 11C1;B726;1104 1172 11C1;
+B727;B727;1104 1172 11C2;B727;1104 1172 11C2;
+B728;B728;1104 1173;B728;1104 1173;
+B729;B729;1104 1173 11A8;B729;1104 1173 11A8;
+B72A;B72A;1104 1173 11A9;B72A;1104 1173 11A9;
+B72B;B72B;1104 1173 11AA;B72B;1104 1173 11AA;
+B72C;B72C;1104 1173 11AB;B72C;1104 1173 11AB;
+B72D;B72D;1104 1173 11AC;B72D;1104 1173 11AC;
+B72E;B72E;1104 1173 11AD;B72E;1104 1173 11AD;
+B72F;B72F;1104 1173 11AE;B72F;1104 1173 11AE;
+B730;B730;1104 1173 11AF;B730;1104 1173 11AF;
+B731;B731;1104 1173 11B0;B731;1104 1173 11B0;
+B732;B732;1104 1173 11B1;B732;1104 1173 11B1;
+B733;B733;1104 1173 11B2;B733;1104 1173 11B2;
+B734;B734;1104 1173 11B3;B734;1104 1173 11B3;
+B735;B735;1104 1173 11B4;B735;1104 1173 11B4;
+B736;B736;1104 1173 11B5;B736;1104 1173 11B5;
+B737;B737;1104 1173 11B6;B737;1104 1173 11B6;
+B738;B738;1104 1173 11B7;B738;1104 1173 11B7;
+B739;B739;1104 1173 11B8;B739;1104 1173 11B8;
+B73A;B73A;1104 1173 11B9;B73A;1104 1173 11B9;
+B73B;B73B;1104 1173 11BA;B73B;1104 1173 11BA;
+B73C;B73C;1104 1173 11BB;B73C;1104 1173 11BB;
+B73D;B73D;1104 1173 11BC;B73D;1104 1173 11BC;
+B73E;B73E;1104 1173 11BD;B73E;1104 1173 11BD;
+B73F;B73F;1104 1173 11BE;B73F;1104 1173 11BE;
+B740;B740;1104 1173 11BF;B740;1104 1173 11BF;
+B741;B741;1104 1173 11C0;B741;1104 1173 11C0;
+B742;B742;1104 1173 11C1;B742;1104 1173 11C1;
+B743;B743;1104 1173 11C2;B743;1104 1173 11C2;
+B744;B744;1104 1174;B744;1104 1174;
+B745;B745;1104 1174 11A8;B745;1104 1174 11A8;
+B746;B746;1104 1174 11A9;B746;1104 1174 11A9;
+B747;B747;1104 1174 11AA;B747;1104 1174 11AA;
+B748;B748;1104 1174 11AB;B748;1104 1174 11AB;
+B749;B749;1104 1174 11AC;B749;1104 1174 11AC;
+B74A;B74A;1104 1174 11AD;B74A;1104 1174 11AD;
+B74B;B74B;1104 1174 11AE;B74B;1104 1174 11AE;
+B74C;B74C;1104 1174 11AF;B74C;1104 1174 11AF;
+B74D;B74D;1104 1174 11B0;B74D;1104 1174 11B0;
+B74E;B74E;1104 1174 11B1;B74E;1104 1174 11B1;
+B74F;B74F;1104 1174 11B2;B74F;1104 1174 11B2;
+B750;B750;1104 1174 11B3;B750;1104 1174 11B3;
+B751;B751;1104 1174 11B4;B751;1104 1174 11B4;
+B752;B752;1104 1174 11B5;B752;1104 1174 11B5;
+B753;B753;1104 1174 11B6;B753;1104 1174 11B6;
+B754;B754;1104 1174 11B7;B754;1104 1174 11B7;
+B755;B755;1104 1174 11B8;B755;1104 1174 11B8;
+B756;B756;1104 1174 11B9;B756;1104 1174 11B9;
+B757;B757;1104 1174 11BA;B757;1104 1174 11BA;
+B758;B758;1104 1174 11BB;B758;1104 1174 11BB;
+B759;B759;1104 1174 11BC;B759;1104 1174 11BC;
+B75A;B75A;1104 1174 11BD;B75A;1104 1174 11BD;
+B75B;B75B;1104 1174 11BE;B75B;1104 1174 11BE;
+B75C;B75C;1104 1174 11BF;B75C;1104 1174 11BF;
+B75D;B75D;1104 1174 11C0;B75D;1104 1174 11C0;
+B75E;B75E;1104 1174 11C1;B75E;1104 1174 11C1;
+B75F;B75F;1104 1174 11C2;B75F;1104 1174 11C2;
+B760;B760;1104 1175;B760;1104 1175;
+B761;B761;1104 1175 11A8;B761;1104 1175 11A8;
+B762;B762;1104 1175 11A9;B762;1104 1175 11A9;
+B763;B763;1104 1175 11AA;B763;1104 1175 11AA;
+B764;B764;1104 1175 11AB;B764;1104 1175 11AB;
+B765;B765;1104 1175 11AC;B765;1104 1175 11AC;
+B766;B766;1104 1175 11AD;B766;1104 1175 11AD;
+B767;B767;1104 1175 11AE;B767;1104 1175 11AE;
+B768;B768;1104 1175 11AF;B768;1104 1175 11AF;
+B769;B769;1104 1175 11B0;B769;1104 1175 11B0;
+B76A;B76A;1104 1175 11B1;B76A;1104 1175 11B1;
+B76B;B76B;1104 1175 11B2;B76B;1104 1175 11B2;
+B76C;B76C;1104 1175 11B3;B76C;1104 1175 11B3;
+B76D;B76D;1104 1175 11B4;B76D;1104 1175 11B4;
+B76E;B76E;1104 1175 11B5;B76E;1104 1175 11B5;
+B76F;B76F;1104 1175 11B6;B76F;1104 1175 11B6;
+B770;B770;1104 1175 11B7;B770;1104 1175 11B7;
+B771;B771;1104 1175 11B8;B771;1104 1175 11B8;
+B772;B772;1104 1175 11B9;B772;1104 1175 11B9;
+B773;B773;1104 1175 11BA;B773;1104 1175 11BA;
+B774;B774;1104 1175 11BB;B774;1104 1175 11BB;
+B775;B775;1104 1175 11BC;B775;1104 1175 11BC;
+B776;B776;1104 1175 11BD;B776;1104 1175 11BD;
+B777;B777;1104 1175 11BE;B777;1104 1175 11BE;
+B778;B778;1104 1175 11BF;B778;1104 1175 11BF;
+B779;B779;1104 1175 11C0;B779;1104 1175 11C0;
+B77A;B77A;1104 1175 11C1;B77A;1104 1175 11C1;
+B77B;B77B;1104 1175 11C2;B77B;1104 1175 11C2;
+B77C;B77C;1105 1161;B77C;1105 1161;
+B77D;B77D;1105 1161 11A8;B77D;1105 1161 11A8;
+B77E;B77E;1105 1161 11A9;B77E;1105 1161 11A9;
+B77F;B77F;1105 1161 11AA;B77F;1105 1161 11AA;
+B780;B780;1105 1161 11AB;B780;1105 1161 11AB;
+B781;B781;1105 1161 11AC;B781;1105 1161 11AC;
+B782;B782;1105 1161 11AD;B782;1105 1161 11AD;
+B783;B783;1105 1161 11AE;B783;1105 1161 11AE;
+B784;B784;1105 1161 11AF;B784;1105 1161 11AF;
+B785;B785;1105 1161 11B0;B785;1105 1161 11B0;
+B786;B786;1105 1161 11B1;B786;1105 1161 11B1;
+B787;B787;1105 1161 11B2;B787;1105 1161 11B2;
+B788;B788;1105 1161 11B3;B788;1105 1161 11B3;
+B789;B789;1105 1161 11B4;B789;1105 1161 11B4;
+B78A;B78A;1105 1161 11B5;B78A;1105 1161 11B5;
+B78B;B78B;1105 1161 11B6;B78B;1105 1161 11B6;
+B78C;B78C;1105 1161 11B7;B78C;1105 1161 11B7;
+B78D;B78D;1105 1161 11B8;B78D;1105 1161 11B8;
+B78E;B78E;1105 1161 11B9;B78E;1105 1161 11B9;
+B78F;B78F;1105 1161 11BA;B78F;1105 1161 11BA;
+B790;B790;1105 1161 11BB;B790;1105 1161 11BB;
+B791;B791;1105 1161 11BC;B791;1105 1161 11BC;
+B792;B792;1105 1161 11BD;B792;1105 1161 11BD;
+B793;B793;1105 1161 11BE;B793;1105 1161 11BE;
+B794;B794;1105 1161 11BF;B794;1105 1161 11BF;
+B795;B795;1105 1161 11C0;B795;1105 1161 11C0;
+B796;B796;1105 1161 11C1;B796;1105 1161 11C1;
+B797;B797;1105 1161 11C2;B797;1105 1161 11C2;
+B798;B798;1105 1162;B798;1105 1162;
+B799;B799;1105 1162 11A8;B799;1105 1162 11A8;
+B79A;B79A;1105 1162 11A9;B79A;1105 1162 11A9;
+B79B;B79B;1105 1162 11AA;B79B;1105 1162 11AA;
+B79C;B79C;1105 1162 11AB;B79C;1105 1162 11AB;
+B79D;B79D;1105 1162 11AC;B79D;1105 1162 11AC;
+B79E;B79E;1105 1162 11AD;B79E;1105 1162 11AD;
+B79F;B79F;1105 1162 11AE;B79F;1105 1162 11AE;
+B7A0;B7A0;1105 1162 11AF;B7A0;1105 1162 11AF;
+B7A1;B7A1;1105 1162 11B0;B7A1;1105 1162 11B0;
+B7A2;B7A2;1105 1162 11B1;B7A2;1105 1162 11B1;
+B7A3;B7A3;1105 1162 11B2;B7A3;1105 1162 11B2;
+B7A4;B7A4;1105 1162 11B3;B7A4;1105 1162 11B3;
+B7A5;B7A5;1105 1162 11B4;B7A5;1105 1162 11B4;
+B7A6;B7A6;1105 1162 11B5;B7A6;1105 1162 11B5;
+B7A7;B7A7;1105 1162 11B6;B7A7;1105 1162 11B6;
+B7A8;B7A8;1105 1162 11B7;B7A8;1105 1162 11B7;
+B7A9;B7A9;1105 1162 11B8;B7A9;1105 1162 11B8;
+B7AA;B7AA;1105 1162 11B9;B7AA;1105 1162 11B9;
+B7AB;B7AB;1105 1162 11BA;B7AB;1105 1162 11BA;
+B7AC;B7AC;1105 1162 11BB;B7AC;1105 1162 11BB;
+B7AD;B7AD;1105 1162 11BC;B7AD;1105 1162 11BC;
+B7AE;B7AE;1105 1162 11BD;B7AE;1105 1162 11BD;
+B7AF;B7AF;1105 1162 11BE;B7AF;1105 1162 11BE;
+B7B0;B7B0;1105 1162 11BF;B7B0;1105 1162 11BF;
+B7B1;B7B1;1105 1162 11C0;B7B1;1105 1162 11C0;
+B7B2;B7B2;1105 1162 11C1;B7B2;1105 1162 11C1;
+B7B3;B7B3;1105 1162 11C2;B7B3;1105 1162 11C2;
+B7B4;B7B4;1105 1163;B7B4;1105 1163;
+B7B5;B7B5;1105 1163 11A8;B7B5;1105 1163 11A8;
+B7B6;B7B6;1105 1163 11A9;B7B6;1105 1163 11A9;
+B7B7;B7B7;1105 1163 11AA;B7B7;1105 1163 11AA;
+B7B8;B7B8;1105 1163 11AB;B7B8;1105 1163 11AB;
+B7B9;B7B9;1105 1163 11AC;B7B9;1105 1163 11AC;
+B7BA;B7BA;1105 1163 11AD;B7BA;1105 1163 11AD;
+B7BB;B7BB;1105 1163 11AE;B7BB;1105 1163 11AE;
+B7BC;B7BC;1105 1163 11AF;B7BC;1105 1163 11AF;
+B7BD;B7BD;1105 1163 11B0;B7BD;1105 1163 11B0;
+B7BE;B7BE;1105 1163 11B1;B7BE;1105 1163 11B1;
+B7BF;B7BF;1105 1163 11B2;B7BF;1105 1163 11B2;
+B7C0;B7C0;1105 1163 11B3;B7C0;1105 1163 11B3;
+B7C1;B7C1;1105 1163 11B4;B7C1;1105 1163 11B4;
+B7C2;B7C2;1105 1163 11B5;B7C2;1105 1163 11B5;
+B7C3;B7C3;1105 1163 11B6;B7C3;1105 1163 11B6;
+B7C4;B7C4;1105 1163 11B7;B7C4;1105 1163 11B7;
+B7C5;B7C5;1105 1163 11B8;B7C5;1105 1163 11B8;
+B7C6;B7C6;1105 1163 11B9;B7C6;1105 1163 11B9;
+B7C7;B7C7;1105 1163 11BA;B7C7;1105 1163 11BA;
+B7C8;B7C8;1105 1163 11BB;B7C8;1105 1163 11BB;
+B7C9;B7C9;1105 1163 11BC;B7C9;1105 1163 11BC;
+B7CA;B7CA;1105 1163 11BD;B7CA;1105 1163 11BD;
+B7CB;B7CB;1105 1163 11BE;B7CB;1105 1163 11BE;
+B7CC;B7CC;1105 1163 11BF;B7CC;1105 1163 11BF;
+B7CD;B7CD;1105 1163 11C0;B7CD;1105 1163 11C0;
+B7CE;B7CE;1105 1163 11C1;B7CE;1105 1163 11C1;
+B7CF;B7CF;1105 1163 11C2;B7CF;1105 1163 11C2;
+B7D0;B7D0;1105 1164;B7D0;1105 1164;
+B7D1;B7D1;1105 1164 11A8;B7D1;1105 1164 11A8;
+B7D2;B7D2;1105 1164 11A9;B7D2;1105 1164 11A9;
+B7D3;B7D3;1105 1164 11AA;B7D3;1105 1164 11AA;
+B7D4;B7D4;1105 1164 11AB;B7D4;1105 1164 11AB;
+B7D5;B7D5;1105 1164 11AC;B7D5;1105 1164 11AC;
+B7D6;B7D6;1105 1164 11AD;B7D6;1105 1164 11AD;
+B7D7;B7D7;1105 1164 11AE;B7D7;1105 1164 11AE;
+B7D8;B7D8;1105 1164 11AF;B7D8;1105 1164 11AF;
+B7D9;B7D9;1105 1164 11B0;B7D9;1105 1164 11B0;
+B7DA;B7DA;1105 1164 11B1;B7DA;1105 1164 11B1;
+B7DB;B7DB;1105 1164 11B2;B7DB;1105 1164 11B2;
+B7DC;B7DC;1105 1164 11B3;B7DC;1105 1164 11B3;
+B7DD;B7DD;1105 1164 11B4;B7DD;1105 1164 11B4;
+B7DE;B7DE;1105 1164 11B5;B7DE;1105 1164 11B5;
+B7DF;B7DF;1105 1164 11B6;B7DF;1105 1164 11B6;
+B7E0;B7E0;1105 1164 11B7;B7E0;1105 1164 11B7;
+B7E1;B7E1;1105 1164 11B8;B7E1;1105 1164 11B8;
+B7E2;B7E2;1105 1164 11B9;B7E2;1105 1164 11B9;
+B7E3;B7E3;1105 1164 11BA;B7E3;1105 1164 11BA;
+B7E4;B7E4;1105 1164 11BB;B7E4;1105 1164 11BB;
+B7E5;B7E5;1105 1164 11BC;B7E5;1105 1164 11BC;
+B7E6;B7E6;1105 1164 11BD;B7E6;1105 1164 11BD;
+B7E7;B7E7;1105 1164 11BE;B7E7;1105 1164 11BE;
+B7E8;B7E8;1105 1164 11BF;B7E8;1105 1164 11BF;
+B7E9;B7E9;1105 1164 11C0;B7E9;1105 1164 11C0;
+B7EA;B7EA;1105 1164 11C1;B7EA;1105 1164 11C1;
+B7EB;B7EB;1105 1164 11C2;B7EB;1105 1164 11C2;
+B7EC;B7EC;1105 1165;B7EC;1105 1165;
+B7ED;B7ED;1105 1165 11A8;B7ED;1105 1165 11A8;
+B7EE;B7EE;1105 1165 11A9;B7EE;1105 1165 11A9;
+B7EF;B7EF;1105 1165 11AA;B7EF;1105 1165 11AA;
+B7F0;B7F0;1105 1165 11AB;B7F0;1105 1165 11AB;
+B7F1;B7F1;1105 1165 11AC;B7F1;1105 1165 11AC;
+B7F2;B7F2;1105 1165 11AD;B7F2;1105 1165 11AD;
+B7F3;B7F3;1105 1165 11AE;B7F3;1105 1165 11AE;
+B7F4;B7F4;1105 1165 11AF;B7F4;1105 1165 11AF;
+B7F5;B7F5;1105 1165 11B0;B7F5;1105 1165 11B0;
+B7F6;B7F6;1105 1165 11B1;B7F6;1105 1165 11B1;
+B7F7;B7F7;1105 1165 11B2;B7F7;1105 1165 11B2;
+B7F8;B7F8;1105 1165 11B3;B7F8;1105 1165 11B3;
+B7F9;B7F9;1105 1165 11B4;B7F9;1105 1165 11B4;
+B7FA;B7FA;1105 1165 11B5;B7FA;1105 1165 11B5;
+B7FB;B7FB;1105 1165 11B6;B7FB;1105 1165 11B6;
+B7FC;B7FC;1105 1165 11B7;B7FC;1105 1165 11B7;
+B7FD;B7FD;1105 1165 11B8;B7FD;1105 1165 11B8;
+B7FE;B7FE;1105 1165 11B9;B7FE;1105 1165 11B9;
+B7FF;B7FF;1105 1165 11BA;B7FF;1105 1165 11BA;
+B800;B800;1105 1165 11BB;B800;1105 1165 11BB;
+B801;B801;1105 1165 11BC;B801;1105 1165 11BC;
+B802;B802;1105 1165 11BD;B802;1105 1165 11BD;
+B803;B803;1105 1165 11BE;B803;1105 1165 11BE;
+B804;B804;1105 1165 11BF;B804;1105 1165 11BF;
+B805;B805;1105 1165 11C0;B805;1105 1165 11C0;
+B806;B806;1105 1165 11C1;B806;1105 1165 11C1;
+B807;B807;1105 1165 11C2;B807;1105 1165 11C2;
+B808;B808;1105 1166;B808;1105 1166;
+B809;B809;1105 1166 11A8;B809;1105 1166 11A8;
+B80A;B80A;1105 1166 11A9;B80A;1105 1166 11A9;
+B80B;B80B;1105 1166 11AA;B80B;1105 1166 11AA;
+B80C;B80C;1105 1166 11AB;B80C;1105 1166 11AB;
+B80D;B80D;1105 1166 11AC;B80D;1105 1166 11AC;
+B80E;B80E;1105 1166 11AD;B80E;1105 1166 11AD;
+B80F;B80F;1105 1166 11AE;B80F;1105 1166 11AE;
+B810;B810;1105 1166 11AF;B810;1105 1166 11AF;
+B811;B811;1105 1166 11B0;B811;1105 1166 11B0;
+B812;B812;1105 1166 11B1;B812;1105 1166 11B1;
+B813;B813;1105 1166 11B2;B813;1105 1166 11B2;
+B814;B814;1105 1166 11B3;B814;1105 1166 11B3;
+B815;B815;1105 1166 11B4;B815;1105 1166 11B4;
+B816;B816;1105 1166 11B5;B816;1105 1166 11B5;
+B817;B817;1105 1166 11B6;B817;1105 1166 11B6;
+B818;B818;1105 1166 11B7;B818;1105 1166 11B7;
+B819;B819;1105 1166 11B8;B819;1105 1166 11B8;
+B81A;B81A;1105 1166 11B9;B81A;1105 1166 11B9;
+B81B;B81B;1105 1166 11BA;B81B;1105 1166 11BA;
+B81C;B81C;1105 1166 11BB;B81C;1105 1166 11BB;
+B81D;B81D;1105 1166 11BC;B81D;1105 1166 11BC;
+B81E;B81E;1105 1166 11BD;B81E;1105 1166 11BD;
+B81F;B81F;1105 1166 11BE;B81F;1105 1166 11BE;
+B820;B820;1105 1166 11BF;B820;1105 1166 11BF;
+B821;B821;1105 1166 11C0;B821;1105 1166 11C0;
+B822;B822;1105 1166 11C1;B822;1105 1166 11C1;
+B823;B823;1105 1166 11C2;B823;1105 1166 11C2;
+B824;B824;1105 1167;B824;1105 1167;
+B825;B825;1105 1167 11A8;B825;1105 1167 11A8;
+B826;B826;1105 1167 11A9;B826;1105 1167 11A9;
+B827;B827;1105 1167 11AA;B827;1105 1167 11AA;
+B828;B828;1105 1167 11AB;B828;1105 1167 11AB;
+B829;B829;1105 1167 11AC;B829;1105 1167 11AC;
+B82A;B82A;1105 1167 11AD;B82A;1105 1167 11AD;
+B82B;B82B;1105 1167 11AE;B82B;1105 1167 11AE;
+B82C;B82C;1105 1167 11AF;B82C;1105 1167 11AF;
+B82D;B82D;1105 1167 11B0;B82D;1105 1167 11B0;
+B82E;B82E;1105 1167 11B1;B82E;1105 1167 11B1;
+B82F;B82F;1105 1167 11B2;B82F;1105 1167 11B2;
+B830;B830;1105 1167 11B3;B830;1105 1167 11B3;
+B831;B831;1105 1167 11B4;B831;1105 1167 11B4;
+B832;B832;1105 1167 11B5;B832;1105 1167 11B5;
+B833;B833;1105 1167 11B6;B833;1105 1167 11B6;
+B834;B834;1105 1167 11B7;B834;1105 1167 11B7;
+B835;B835;1105 1167 11B8;B835;1105 1167 11B8;
+B836;B836;1105 1167 11B9;B836;1105 1167 11B9;
+B837;B837;1105 1167 11BA;B837;1105 1167 11BA;
+B838;B838;1105 1167 11BB;B838;1105 1167 11BB;
+B839;B839;1105 1167 11BC;B839;1105 1167 11BC;
+B83A;B83A;1105 1167 11BD;B83A;1105 1167 11BD;
+B83B;B83B;1105 1167 11BE;B83B;1105 1167 11BE;
+B83C;B83C;1105 1167 11BF;B83C;1105 1167 11BF;
+B83D;B83D;1105 1167 11C0;B83D;1105 1167 11C0;
+B83E;B83E;1105 1167 11C1;B83E;1105 1167 11C1;
+B83F;B83F;1105 1167 11C2;B83F;1105 1167 11C2;
+B840;B840;1105 1168;B840;1105 1168;
+B841;B841;1105 1168 11A8;B841;1105 1168 11A8;
+B842;B842;1105 1168 11A9;B842;1105 1168 11A9;
+B843;B843;1105 1168 11AA;B843;1105 1168 11AA;
+B844;B844;1105 1168 11AB;B844;1105 1168 11AB;
+B845;B845;1105 1168 11AC;B845;1105 1168 11AC;
+B846;B846;1105 1168 11AD;B846;1105 1168 11AD;
+B847;B847;1105 1168 11AE;B847;1105 1168 11AE;
+B848;B848;1105 1168 11AF;B848;1105 1168 11AF;
+B849;B849;1105 1168 11B0;B849;1105 1168 11B0;
+B84A;B84A;1105 1168 11B1;B84A;1105 1168 11B1;
+B84B;B84B;1105 1168 11B2;B84B;1105 1168 11B2;
+B84C;B84C;1105 1168 11B3;B84C;1105 1168 11B3;
+B84D;B84D;1105 1168 11B4;B84D;1105 1168 11B4;
+B84E;B84E;1105 1168 11B5;B84E;1105 1168 11B5;
+B84F;B84F;1105 1168 11B6;B84F;1105 1168 11B6;
+B850;B850;1105 1168 11B7;B850;1105 1168 11B7;
+B851;B851;1105 1168 11B8;B851;1105 1168 11B8;
+B852;B852;1105 1168 11B9;B852;1105 1168 11B9;
+B853;B853;1105 1168 11BA;B853;1105 1168 11BA;
+B854;B854;1105 1168 11BB;B854;1105 1168 11BB;
+B855;B855;1105 1168 11BC;B855;1105 1168 11BC;
+B856;B856;1105 1168 11BD;B856;1105 1168 11BD;
+B857;B857;1105 1168 11BE;B857;1105 1168 11BE;
+B858;B858;1105 1168 11BF;B858;1105 1168 11BF;
+B859;B859;1105 1168 11C0;B859;1105 1168 11C0;
+B85A;B85A;1105 1168 11C1;B85A;1105 1168 11C1;
+B85B;B85B;1105 1168 11C2;B85B;1105 1168 11C2;
+B85C;B85C;1105 1169;B85C;1105 1169;
+B85D;B85D;1105 1169 11A8;B85D;1105 1169 11A8;
+B85E;B85E;1105 1169 11A9;B85E;1105 1169 11A9;
+B85F;B85F;1105 1169 11AA;B85F;1105 1169 11AA;
+B860;B860;1105 1169 11AB;B860;1105 1169 11AB;
+B861;B861;1105 1169 11AC;B861;1105 1169 11AC;
+B862;B862;1105 1169 11AD;B862;1105 1169 11AD;
+B863;B863;1105 1169 11AE;B863;1105 1169 11AE;
+B864;B864;1105 1169 11AF;B864;1105 1169 11AF;
+B865;B865;1105 1169 11B0;B865;1105 1169 11B0;
+B866;B866;1105 1169 11B1;B866;1105 1169 11B1;
+B867;B867;1105 1169 11B2;B867;1105 1169 11B2;
+B868;B868;1105 1169 11B3;B868;1105 1169 11B3;
+B869;B869;1105 1169 11B4;B869;1105 1169 11B4;
+B86A;B86A;1105 1169 11B5;B86A;1105 1169 11B5;
+B86B;B86B;1105 1169 11B6;B86B;1105 1169 11B6;
+B86C;B86C;1105 1169 11B7;B86C;1105 1169 11B7;
+B86D;B86D;1105 1169 11B8;B86D;1105 1169 11B8;
+B86E;B86E;1105 1169 11B9;B86E;1105 1169 11B9;
+B86F;B86F;1105 1169 11BA;B86F;1105 1169 11BA;
+B870;B870;1105 1169 11BB;B870;1105 1169 11BB;
+B871;B871;1105 1169 11BC;B871;1105 1169 11BC;
+B872;B872;1105 1169 11BD;B872;1105 1169 11BD;
+B873;B873;1105 1169 11BE;B873;1105 1169 11BE;
+B874;B874;1105 1169 11BF;B874;1105 1169 11BF;
+B875;B875;1105 1169 11C0;B875;1105 1169 11C0;
+B876;B876;1105 1169 11C1;B876;1105 1169 11C1;
+B877;B877;1105 1169 11C2;B877;1105 1169 11C2;
+B878;B878;1105 116A;B878;1105 116A;
+B879;B879;1105 116A 11A8;B879;1105 116A 11A8;
+B87A;B87A;1105 116A 11A9;B87A;1105 116A 11A9;
+B87B;B87B;1105 116A 11AA;B87B;1105 116A 11AA;
+B87C;B87C;1105 116A 11AB;B87C;1105 116A 11AB;
+B87D;B87D;1105 116A 11AC;B87D;1105 116A 11AC;
+B87E;B87E;1105 116A 11AD;B87E;1105 116A 11AD;
+B87F;B87F;1105 116A 11AE;B87F;1105 116A 11AE;
+B880;B880;1105 116A 11AF;B880;1105 116A 11AF;
+B881;B881;1105 116A 11B0;B881;1105 116A 11B0;
+B882;B882;1105 116A 11B1;B882;1105 116A 11B1;
+B883;B883;1105 116A 11B2;B883;1105 116A 11B2;
+B884;B884;1105 116A 11B3;B884;1105 116A 11B3;
+B885;B885;1105 116A 11B4;B885;1105 116A 11B4;
+B886;B886;1105 116A 11B5;B886;1105 116A 11B5;
+B887;B887;1105 116A 11B6;B887;1105 116A 11B6;
+B888;B888;1105 116A 11B7;B888;1105 116A 11B7;
+B889;B889;1105 116A 11B8;B889;1105 116A 11B8;
+B88A;B88A;1105 116A 11B9;B88A;1105 116A 11B9;
+B88B;B88B;1105 116A 11BA;B88B;1105 116A 11BA;
+B88C;B88C;1105 116A 11BB;B88C;1105 116A 11BB;
+B88D;B88D;1105 116A 11BC;B88D;1105 116A 11BC;
+B88E;B88E;1105 116A 11BD;B88E;1105 116A 11BD;
+B88F;B88F;1105 116A 11BE;B88F;1105 116A 11BE;
+B890;B890;1105 116A 11BF;B890;1105 116A 11BF;
+B891;B891;1105 116A 11C0;B891;1105 116A 11C0;
+B892;B892;1105 116A 11C1;B892;1105 116A 11C1;
+B893;B893;1105 116A 11C2;B893;1105 116A 11C2;
+B894;B894;1105 116B;B894;1105 116B;
+B895;B895;1105 116B 11A8;B895;1105 116B 11A8;
+B896;B896;1105 116B 11A9;B896;1105 116B 11A9;
+B897;B897;1105 116B 11AA;B897;1105 116B 11AA;
+B898;B898;1105 116B 11AB;B898;1105 116B 11AB;
+B899;B899;1105 116B 11AC;B899;1105 116B 11AC;
+B89A;B89A;1105 116B 11AD;B89A;1105 116B 11AD;
+B89B;B89B;1105 116B 11AE;B89B;1105 116B 11AE;
+B89C;B89C;1105 116B 11AF;B89C;1105 116B 11AF;
+B89D;B89D;1105 116B 11B0;B89D;1105 116B 11B0;
+B89E;B89E;1105 116B 11B1;B89E;1105 116B 11B1;
+B89F;B89F;1105 116B 11B2;B89F;1105 116B 11B2;
+B8A0;B8A0;1105 116B 11B3;B8A0;1105 116B 11B3;
+B8A1;B8A1;1105 116B 11B4;B8A1;1105 116B 11B4;
+B8A2;B8A2;1105 116B 11B5;B8A2;1105 116B 11B5;
+B8A3;B8A3;1105 116B 11B6;B8A3;1105 116B 11B6;
+B8A4;B8A4;1105 116B 11B7;B8A4;1105 116B 11B7;
+B8A5;B8A5;1105 116B 11B8;B8A5;1105 116B 11B8;
+B8A6;B8A6;1105 116B 11B9;B8A6;1105 116B 11B9;
+B8A7;B8A7;1105 116B 11BA;B8A7;1105 116B 11BA;
+B8A8;B8A8;1105 116B 11BB;B8A8;1105 116B 11BB;
+B8A9;B8A9;1105 116B 11BC;B8A9;1105 116B 11BC;
+B8AA;B8AA;1105 116B 11BD;B8AA;1105 116B 11BD;
+B8AB;B8AB;1105 116B 11BE;B8AB;1105 116B 11BE;
+B8AC;B8AC;1105 116B 11BF;B8AC;1105 116B 11BF;
+B8AD;B8AD;1105 116B 11C0;B8AD;1105 116B 11C0;
+B8AE;B8AE;1105 116B 11C1;B8AE;1105 116B 11C1;
+B8AF;B8AF;1105 116B 11C2;B8AF;1105 116B 11C2;
+B8B0;B8B0;1105 116C;B8B0;1105 116C;
+B8B1;B8B1;1105 116C 11A8;B8B1;1105 116C 11A8;
+B8B2;B8B2;1105 116C 11A9;B8B2;1105 116C 11A9;
+B8B3;B8B3;1105 116C 11AA;B8B3;1105 116C 11AA;
+B8B4;B8B4;1105 116C 11AB;B8B4;1105 116C 11AB;
+B8B5;B8B5;1105 116C 11AC;B8B5;1105 116C 11AC;
+B8B6;B8B6;1105 116C 11AD;B8B6;1105 116C 11AD;
+B8B7;B8B7;1105 116C 11AE;B8B7;1105 116C 11AE;
+B8B8;B8B8;1105 116C 11AF;B8B8;1105 116C 11AF;
+B8B9;B8B9;1105 116C 11B0;B8B9;1105 116C 11B0;
+B8BA;B8BA;1105 116C 11B1;B8BA;1105 116C 11B1;
+B8BB;B8BB;1105 116C 11B2;B8BB;1105 116C 11B2;
+B8BC;B8BC;1105 116C 11B3;B8BC;1105 116C 11B3;
+B8BD;B8BD;1105 116C 11B4;B8BD;1105 116C 11B4;
+B8BE;B8BE;1105 116C 11B5;B8BE;1105 116C 11B5;
+B8BF;B8BF;1105 116C 11B6;B8BF;1105 116C 11B6;
+B8C0;B8C0;1105 116C 11B7;B8C0;1105 116C 11B7;
+B8C1;B8C1;1105 116C 11B8;B8C1;1105 116C 11B8;
+B8C2;B8C2;1105 116C 11B9;B8C2;1105 116C 11B9;
+B8C3;B8C3;1105 116C 11BA;B8C3;1105 116C 11BA;
+B8C4;B8C4;1105 116C 11BB;B8C4;1105 116C 11BB;
+B8C5;B8C5;1105 116C 11BC;B8C5;1105 116C 11BC;
+B8C6;B8C6;1105 116C 11BD;B8C6;1105 116C 11BD;
+B8C7;B8C7;1105 116C 11BE;B8C7;1105 116C 11BE;
+B8C8;B8C8;1105 116C 11BF;B8C8;1105 116C 11BF;
+B8C9;B8C9;1105 116C 11C0;B8C9;1105 116C 11C0;
+B8CA;B8CA;1105 116C 11C1;B8CA;1105 116C 11C1;
+B8CB;B8CB;1105 116C 11C2;B8CB;1105 116C 11C2;
+B8CC;B8CC;1105 116D;B8CC;1105 116D;
+B8CD;B8CD;1105 116D 11A8;B8CD;1105 116D 11A8;
+B8CE;B8CE;1105 116D 11A9;B8CE;1105 116D 11A9;
+B8CF;B8CF;1105 116D 11AA;B8CF;1105 116D 11AA;
+B8D0;B8D0;1105 116D 11AB;B8D0;1105 116D 11AB;
+B8D1;B8D1;1105 116D 11AC;B8D1;1105 116D 11AC;
+B8D2;B8D2;1105 116D 11AD;B8D2;1105 116D 11AD;
+B8D3;B8D3;1105 116D 11AE;B8D3;1105 116D 11AE;
+B8D4;B8D4;1105 116D 11AF;B8D4;1105 116D 11AF;
+B8D5;B8D5;1105 116D 11B0;B8D5;1105 116D 11B0;
+B8D6;B8D6;1105 116D 11B1;B8D6;1105 116D 11B1;
+B8D7;B8D7;1105 116D 11B2;B8D7;1105 116D 11B2;
+B8D8;B8D8;1105 116D 11B3;B8D8;1105 116D 11B3;
+B8D9;B8D9;1105 116D 11B4;B8D9;1105 116D 11B4;
+B8DA;B8DA;1105 116D 11B5;B8DA;1105 116D 11B5;
+B8DB;B8DB;1105 116D 11B6;B8DB;1105 116D 11B6;
+B8DC;B8DC;1105 116D 11B7;B8DC;1105 116D 11B7;
+B8DD;B8DD;1105 116D 11B8;B8DD;1105 116D 11B8;
+B8DE;B8DE;1105 116D 11B9;B8DE;1105 116D 11B9;
+B8DF;B8DF;1105 116D 11BA;B8DF;1105 116D 11BA;
+B8E0;B8E0;1105 116D 11BB;B8E0;1105 116D 11BB;
+B8E1;B8E1;1105 116D 11BC;B8E1;1105 116D 11BC;
+B8E2;B8E2;1105 116D 11BD;B8E2;1105 116D 11BD;
+B8E3;B8E3;1105 116D 11BE;B8E3;1105 116D 11BE;
+B8E4;B8E4;1105 116D 11BF;B8E4;1105 116D 11BF;
+B8E5;B8E5;1105 116D 11C0;B8E5;1105 116D 11C0;
+B8E6;B8E6;1105 116D 11C1;B8E6;1105 116D 11C1;
+B8E7;B8E7;1105 116D 11C2;B8E7;1105 116D 11C2;
+B8E8;B8E8;1105 116E;B8E8;1105 116E;
+B8E9;B8E9;1105 116E 11A8;B8E9;1105 116E 11A8;
+B8EA;B8EA;1105 116E 11A9;B8EA;1105 116E 11A9;
+B8EB;B8EB;1105 116E 11AA;B8EB;1105 116E 11AA;
+B8EC;B8EC;1105 116E 11AB;B8EC;1105 116E 11AB;
+B8ED;B8ED;1105 116E 11AC;B8ED;1105 116E 11AC;
+B8EE;B8EE;1105 116E 11AD;B8EE;1105 116E 11AD;
+B8EF;B8EF;1105 116E 11AE;B8EF;1105 116E 11AE;
+B8F0;B8F0;1105 116E 11AF;B8F0;1105 116E 11AF;
+B8F1;B8F1;1105 116E 11B0;B8F1;1105 116E 11B0;
+B8F2;B8F2;1105 116E 11B1;B8F2;1105 116E 11B1;
+B8F3;B8F3;1105 116E 11B2;B8F3;1105 116E 11B2;
+B8F4;B8F4;1105 116E 11B3;B8F4;1105 116E 11B3;
+B8F5;B8F5;1105 116E 11B4;B8F5;1105 116E 11B4;
+B8F6;B8F6;1105 116E 11B5;B8F6;1105 116E 11B5;
+B8F7;B8F7;1105 116E 11B6;B8F7;1105 116E 11B6;
+B8F8;B8F8;1105 116E 11B7;B8F8;1105 116E 11B7;
+B8F9;B8F9;1105 116E 11B8;B8F9;1105 116E 11B8;
+B8FA;B8FA;1105 116E 11B9;B8FA;1105 116E 11B9;
+B8FB;B8FB;1105 116E 11BA;B8FB;1105 116E 11BA;
+B8FC;B8FC;1105 116E 11BB;B8FC;1105 116E 11BB;
+B8FD;B8FD;1105 116E 11BC;B8FD;1105 116E 11BC;
+B8FE;B8FE;1105 116E 11BD;B8FE;1105 116E 11BD;
+B8FF;B8FF;1105 116E 11BE;B8FF;1105 116E 11BE;
+B900;B900;1105 116E 11BF;B900;1105 116E 11BF;
+B901;B901;1105 116E 11C0;B901;1105 116E 11C0;
+B902;B902;1105 116E 11C1;B902;1105 116E 11C1;
+B903;B903;1105 116E 11C2;B903;1105 116E 11C2;
+B904;B904;1105 116F;B904;1105 116F;
+B905;B905;1105 116F 11A8;B905;1105 116F 11A8;
+B906;B906;1105 116F 11A9;B906;1105 116F 11A9;
+B907;B907;1105 116F 11AA;B907;1105 116F 11AA;
+B908;B908;1105 116F 11AB;B908;1105 116F 11AB;
+B909;B909;1105 116F 11AC;B909;1105 116F 11AC;
+B90A;B90A;1105 116F 11AD;B90A;1105 116F 11AD;
+B90B;B90B;1105 116F 11AE;B90B;1105 116F 11AE;
+B90C;B90C;1105 116F 11AF;B90C;1105 116F 11AF;
+B90D;B90D;1105 116F 11B0;B90D;1105 116F 11B0;
+B90E;B90E;1105 116F 11B1;B90E;1105 116F 11B1;
+B90F;B90F;1105 116F 11B2;B90F;1105 116F 11B2;
+B910;B910;1105 116F 11B3;B910;1105 116F 11B3;
+B911;B911;1105 116F 11B4;B911;1105 116F 11B4;
+B912;B912;1105 116F 11B5;B912;1105 116F 11B5;
+B913;B913;1105 116F 11B6;B913;1105 116F 11B6;
+B914;B914;1105 116F 11B7;B914;1105 116F 11B7;
+B915;B915;1105 116F 11B8;B915;1105 116F 11B8;
+B916;B916;1105 116F 11B9;B916;1105 116F 11B9;
+B917;B917;1105 116F 11BA;B917;1105 116F 11BA;
+B918;B918;1105 116F 11BB;B918;1105 116F 11BB;
+B919;B919;1105 116F 11BC;B919;1105 116F 11BC;
+B91A;B91A;1105 116F 11BD;B91A;1105 116F 11BD;
+B91B;B91B;1105 116F 11BE;B91B;1105 116F 11BE;
+B91C;B91C;1105 116F 11BF;B91C;1105 116F 11BF;
+B91D;B91D;1105 116F 11C0;B91D;1105 116F 11C0;
+B91E;B91E;1105 116F 11C1;B91E;1105 116F 11C1;
+B91F;B91F;1105 116F 11C2;B91F;1105 116F 11C2;
+B920;B920;1105 1170;B920;1105 1170;
+B921;B921;1105 1170 11A8;B921;1105 1170 11A8;
+B922;B922;1105 1170 11A9;B922;1105 1170 11A9;
+B923;B923;1105 1170 11AA;B923;1105 1170 11AA;
+B924;B924;1105 1170 11AB;B924;1105 1170 11AB;
+B925;B925;1105 1170 11AC;B925;1105 1170 11AC;
+B926;B926;1105 1170 11AD;B926;1105 1170 11AD;
+B927;B927;1105 1170 11AE;B927;1105 1170 11AE;
+B928;B928;1105 1170 11AF;B928;1105 1170 11AF;
+B929;B929;1105 1170 11B0;B929;1105 1170 11B0;
+B92A;B92A;1105 1170 11B1;B92A;1105 1170 11B1;
+B92B;B92B;1105 1170 11B2;B92B;1105 1170 11B2;
+B92C;B92C;1105 1170 11B3;B92C;1105 1170 11B3;
+B92D;B92D;1105 1170 11B4;B92D;1105 1170 11B4;
+B92E;B92E;1105 1170 11B5;B92E;1105 1170 11B5;
+B92F;B92F;1105 1170 11B6;B92F;1105 1170 11B6;
+B930;B930;1105 1170 11B7;B930;1105 1170 11B7;
+B931;B931;1105 1170 11B8;B931;1105 1170 11B8;
+B932;B932;1105 1170 11B9;B932;1105 1170 11B9;
+B933;B933;1105 1170 11BA;B933;1105 1170 11BA;
+B934;B934;1105 1170 11BB;B934;1105 1170 11BB;
+B935;B935;1105 1170 11BC;B935;1105 1170 11BC;
+B936;B936;1105 1170 11BD;B936;1105 1170 11BD;
+B937;B937;1105 1170 11BE;B937;1105 1170 11BE;
+B938;B938;1105 1170 11BF;B938;1105 1170 11BF;
+B939;B939;1105 1170 11C0;B939;1105 1170 11C0;
+B93A;B93A;1105 1170 11C1;B93A;1105 1170 11C1;
+B93B;B93B;1105 1170 11C2;B93B;1105 1170 11C2;
+B93C;B93C;1105 1171;B93C;1105 1171;
+B93D;B93D;1105 1171 11A8;B93D;1105 1171 11A8;
+B93E;B93E;1105 1171 11A9;B93E;1105 1171 11A9;
+B93F;B93F;1105 1171 11AA;B93F;1105 1171 11AA;
+B940;B940;1105 1171 11AB;B940;1105 1171 11AB;
+B941;B941;1105 1171 11AC;B941;1105 1171 11AC;
+B942;B942;1105 1171 11AD;B942;1105 1171 11AD;
+B943;B943;1105 1171 11AE;B943;1105 1171 11AE;
+B944;B944;1105 1171 11AF;B944;1105 1171 11AF;
+B945;B945;1105 1171 11B0;B945;1105 1171 11B0;
+B946;B946;1105 1171 11B1;B946;1105 1171 11B1;
+B947;B947;1105 1171 11B2;B947;1105 1171 11B2;
+B948;B948;1105 1171 11B3;B948;1105 1171 11B3;
+B949;B949;1105 1171 11B4;B949;1105 1171 11B4;
+B94A;B94A;1105 1171 11B5;B94A;1105 1171 11B5;
+B94B;B94B;1105 1171 11B6;B94B;1105 1171 11B6;
+B94C;B94C;1105 1171 11B7;B94C;1105 1171 11B7;
+B94D;B94D;1105 1171 11B8;B94D;1105 1171 11B8;
+B94E;B94E;1105 1171 11B9;B94E;1105 1171 11B9;
+B94F;B94F;1105 1171 11BA;B94F;1105 1171 11BA;
+B950;B950;1105 1171 11BB;B950;1105 1171 11BB;
+B951;B951;1105 1171 11BC;B951;1105 1171 11BC;
+B952;B952;1105 1171 11BD;B952;1105 1171 11BD;
+B953;B953;1105 1171 11BE;B953;1105 1171 11BE;
+B954;B954;1105 1171 11BF;B954;1105 1171 11BF;
+B955;B955;1105 1171 11C0;B955;1105 1171 11C0;
+B956;B956;1105 1171 11C1;B956;1105 1171 11C1;
+B957;B957;1105 1171 11C2;B957;1105 1171 11C2;
+B958;B958;1105 1172;B958;1105 1172;
+B959;B959;1105 1172 11A8;B959;1105 1172 11A8;
+B95A;B95A;1105 1172 11A9;B95A;1105 1172 11A9;
+B95B;B95B;1105 1172 11AA;B95B;1105 1172 11AA;
+B95C;B95C;1105 1172 11AB;B95C;1105 1172 11AB;
+B95D;B95D;1105 1172 11AC;B95D;1105 1172 11AC;
+B95E;B95E;1105 1172 11AD;B95E;1105 1172 11AD;
+B95F;B95F;1105 1172 11AE;B95F;1105 1172 11AE;
+B960;B960;1105 1172 11AF;B960;1105 1172 11AF;
+B961;B961;1105 1172 11B0;B961;1105 1172 11B0;
+B962;B962;1105 1172 11B1;B962;1105 1172 11B1;
+B963;B963;1105 1172 11B2;B963;1105 1172 11B2;
+B964;B964;1105 1172 11B3;B964;1105 1172 11B3;
+B965;B965;1105 1172 11B4;B965;1105 1172 11B4;
+B966;B966;1105 1172 11B5;B966;1105 1172 11B5;
+B967;B967;1105 1172 11B6;B967;1105 1172 11B6;
+B968;B968;1105 1172 11B7;B968;1105 1172 11B7;
+B969;B969;1105 1172 11B8;B969;1105 1172 11B8;
+B96A;B96A;1105 1172 11B9;B96A;1105 1172 11B9;
+B96B;B96B;1105 1172 11BA;B96B;1105 1172 11BA;
+B96C;B96C;1105 1172 11BB;B96C;1105 1172 11BB;
+B96D;B96D;1105 1172 11BC;B96D;1105 1172 11BC;
+B96E;B96E;1105 1172 11BD;B96E;1105 1172 11BD;
+B96F;B96F;1105 1172 11BE;B96F;1105 1172 11BE;
+B970;B970;1105 1172 11BF;B970;1105 1172 11BF;
+B971;B971;1105 1172 11C0;B971;1105 1172 11C0;
+B972;B972;1105 1172 11C1;B972;1105 1172 11C1;
+B973;B973;1105 1172 11C2;B973;1105 1172 11C2;
+B974;B974;1105 1173;B974;1105 1173;
+B975;B975;1105 1173 11A8;B975;1105 1173 11A8;
+B976;B976;1105 1173 11A9;B976;1105 1173 11A9;
+B977;B977;1105 1173 11AA;B977;1105 1173 11AA;
+B978;B978;1105 1173 11AB;B978;1105 1173 11AB;
+B979;B979;1105 1173 11AC;B979;1105 1173 11AC;
+B97A;B97A;1105 1173 11AD;B97A;1105 1173 11AD;
+B97B;B97B;1105 1173 11AE;B97B;1105 1173 11AE;
+B97C;B97C;1105 1173 11AF;B97C;1105 1173 11AF;
+B97D;B97D;1105 1173 11B0;B97D;1105 1173 11B0;
+B97E;B97E;1105 1173 11B1;B97E;1105 1173 11B1;
+B97F;B97F;1105 1173 11B2;B97F;1105 1173 11B2;
+B980;B980;1105 1173 11B3;B980;1105 1173 11B3;
+B981;B981;1105 1173 11B4;B981;1105 1173 11B4;
+B982;B982;1105 1173 11B5;B982;1105 1173 11B5;
+B983;B983;1105 1173 11B6;B983;1105 1173 11B6;
+B984;B984;1105 1173 11B7;B984;1105 1173 11B7;
+B985;B985;1105 1173 11B8;B985;1105 1173 11B8;
+B986;B986;1105 1173 11B9;B986;1105 1173 11B9;
+B987;B987;1105 1173 11BA;B987;1105 1173 11BA;
+B988;B988;1105 1173 11BB;B988;1105 1173 11BB;
+B989;B989;1105 1173 11BC;B989;1105 1173 11BC;
+B98A;B98A;1105 1173 11BD;B98A;1105 1173 11BD;
+B98B;B98B;1105 1173 11BE;B98B;1105 1173 11BE;
+B98C;B98C;1105 1173 11BF;B98C;1105 1173 11BF;
+B98D;B98D;1105 1173 11C0;B98D;1105 1173 11C0;
+B98E;B98E;1105 1173 11C1;B98E;1105 1173 11C1;
+B98F;B98F;1105 1173 11C2;B98F;1105 1173 11C2;
+B990;B990;1105 1174;B990;1105 1174;
+B991;B991;1105 1174 11A8;B991;1105 1174 11A8;
+B992;B992;1105 1174 11A9;B992;1105 1174 11A9;
+B993;B993;1105 1174 11AA;B993;1105 1174 11AA;
+B994;B994;1105 1174 11AB;B994;1105 1174 11AB;
+B995;B995;1105 1174 11AC;B995;1105 1174 11AC;
+B996;B996;1105 1174 11AD;B996;1105 1174 11AD;
+B997;B997;1105 1174 11AE;B997;1105 1174 11AE;
+B998;B998;1105 1174 11AF;B998;1105 1174 11AF;
+B999;B999;1105 1174 11B0;B999;1105 1174 11B0;
+B99A;B99A;1105 1174 11B1;B99A;1105 1174 11B1;
+B99B;B99B;1105 1174 11B2;B99B;1105 1174 11B2;
+B99C;B99C;1105 1174 11B3;B99C;1105 1174 11B3;
+B99D;B99D;1105 1174 11B4;B99D;1105 1174 11B4;
+B99E;B99E;1105 1174 11B5;B99E;1105 1174 11B5;
+B99F;B99F;1105 1174 11B6;B99F;1105 1174 11B6;
+B9A0;B9A0;1105 1174 11B7;B9A0;1105 1174 11B7;
+B9A1;B9A1;1105 1174 11B8;B9A1;1105 1174 11B8;
+B9A2;B9A2;1105 1174 11B9;B9A2;1105 1174 11B9;
+B9A3;B9A3;1105 1174 11BA;B9A3;1105 1174 11BA;
+B9A4;B9A4;1105 1174 11BB;B9A4;1105 1174 11BB;
+B9A5;B9A5;1105 1174 11BC;B9A5;1105 1174 11BC;
+B9A6;B9A6;1105 1174 11BD;B9A6;1105 1174 11BD;
+B9A7;B9A7;1105 1174 11BE;B9A7;1105 1174 11BE;
+B9A8;B9A8;1105 1174 11BF;B9A8;1105 1174 11BF;
+B9A9;B9A9;1105 1174 11C0;B9A9;1105 1174 11C0;
+B9AA;B9AA;1105 1174 11C1;B9AA;1105 1174 11C1;
+B9AB;B9AB;1105 1174 11C2;B9AB;1105 1174 11C2;
+B9AC;B9AC;1105 1175;B9AC;1105 1175;
+B9AD;B9AD;1105 1175 11A8;B9AD;1105 1175 11A8;
+B9AE;B9AE;1105 1175 11A9;B9AE;1105 1175 11A9;
+B9AF;B9AF;1105 1175 11AA;B9AF;1105 1175 11AA;
+B9B0;B9B0;1105 1175 11AB;B9B0;1105 1175 11AB;
+B9B1;B9B1;1105 1175 11AC;B9B1;1105 1175 11AC;
+B9B2;B9B2;1105 1175 11AD;B9B2;1105 1175 11AD;
+B9B3;B9B3;1105 1175 11AE;B9B3;1105 1175 11AE;
+B9B4;B9B4;1105 1175 11AF;B9B4;1105 1175 11AF;
+B9B5;B9B5;1105 1175 11B0;B9B5;1105 1175 11B0;
+B9B6;B9B6;1105 1175 11B1;B9B6;1105 1175 11B1;
+B9B7;B9B7;1105 1175 11B2;B9B7;1105 1175 11B2;
+B9B8;B9B8;1105 1175 11B3;B9B8;1105 1175 11B3;
+B9B9;B9B9;1105 1175 11B4;B9B9;1105 1175 11B4;
+B9BA;B9BA;1105 1175 11B5;B9BA;1105 1175 11B5;
+B9BB;B9BB;1105 1175 11B6;B9BB;1105 1175 11B6;
+B9BC;B9BC;1105 1175 11B7;B9BC;1105 1175 11B7;
+B9BD;B9BD;1105 1175 11B8;B9BD;1105 1175 11B8;
+B9BE;B9BE;1105 1175 11B9;B9BE;1105 1175 11B9;
+B9BF;B9BF;1105 1175 11BA;B9BF;1105 1175 11BA;
+B9C0;B9C0;1105 1175 11BB;B9C0;1105 1175 11BB;
+B9C1;B9C1;1105 1175 11BC;B9C1;1105 1175 11BC;
+B9C2;B9C2;1105 1175 11BD;B9C2;1105 1175 11BD;
+B9C3;B9C3;1105 1175 11BE;B9C3;1105 1175 11BE;
+B9C4;B9C4;1105 1175 11BF;B9C4;1105 1175 11BF;
+B9C5;B9C5;1105 1175 11C0;B9C5;1105 1175 11C0;
+B9C6;B9C6;1105 1175 11C1;B9C6;1105 1175 11C1;
+B9C7;B9C7;1105 1175 11C2;B9C7;1105 1175 11C2;
+B9C8;B9C8;1106 1161;B9C8;1106 1161;
+B9C9;B9C9;1106 1161 11A8;B9C9;1106 1161 11A8;
+B9CA;B9CA;1106 1161 11A9;B9CA;1106 1161 11A9;
+B9CB;B9CB;1106 1161 11AA;B9CB;1106 1161 11AA;
+B9CC;B9CC;1106 1161 11AB;B9CC;1106 1161 11AB;
+B9CD;B9CD;1106 1161 11AC;B9CD;1106 1161 11AC;
+B9CE;B9CE;1106 1161 11AD;B9CE;1106 1161 11AD;
+B9CF;B9CF;1106 1161 11AE;B9CF;1106 1161 11AE;
+B9D0;B9D0;1106 1161 11AF;B9D0;1106 1161 11AF;
+B9D1;B9D1;1106 1161 11B0;B9D1;1106 1161 11B0;
+B9D2;B9D2;1106 1161 11B1;B9D2;1106 1161 11B1;
+B9D3;B9D3;1106 1161 11B2;B9D3;1106 1161 11B2;
+B9D4;B9D4;1106 1161 11B3;B9D4;1106 1161 11B3;
+B9D5;B9D5;1106 1161 11B4;B9D5;1106 1161 11B4;
+B9D6;B9D6;1106 1161 11B5;B9D6;1106 1161 11B5;
+B9D7;B9D7;1106 1161 11B6;B9D7;1106 1161 11B6;
+B9D8;B9D8;1106 1161 11B7;B9D8;1106 1161 11B7;
+B9D9;B9D9;1106 1161 11B8;B9D9;1106 1161 11B8;
+B9DA;B9DA;1106 1161 11B9;B9DA;1106 1161 11B9;
+B9DB;B9DB;1106 1161 11BA;B9DB;1106 1161 11BA;
+B9DC;B9DC;1106 1161 11BB;B9DC;1106 1161 11BB;
+B9DD;B9DD;1106 1161 11BC;B9DD;1106 1161 11BC;
+B9DE;B9DE;1106 1161 11BD;B9DE;1106 1161 11BD;
+B9DF;B9DF;1106 1161 11BE;B9DF;1106 1161 11BE;
+B9E0;B9E0;1106 1161 11BF;B9E0;1106 1161 11BF;
+B9E1;B9E1;1106 1161 11C0;B9E1;1106 1161 11C0;
+B9E2;B9E2;1106 1161 11C1;B9E2;1106 1161 11C1;
+B9E3;B9E3;1106 1161 11C2;B9E3;1106 1161 11C2;
+B9E4;B9E4;1106 1162;B9E4;1106 1162;
+B9E5;B9E5;1106 1162 11A8;B9E5;1106 1162 11A8;
+B9E6;B9E6;1106 1162 11A9;B9E6;1106 1162 11A9;
+B9E7;B9E7;1106 1162 11AA;B9E7;1106 1162 11AA;
+B9E8;B9E8;1106 1162 11AB;B9E8;1106 1162 11AB;
+B9E9;B9E9;1106 1162 11AC;B9E9;1106 1162 11AC;
+B9EA;B9EA;1106 1162 11AD;B9EA;1106 1162 11AD;
+B9EB;B9EB;1106 1162 11AE;B9EB;1106 1162 11AE;
+B9EC;B9EC;1106 1162 11AF;B9EC;1106 1162 11AF;
+B9ED;B9ED;1106 1162 11B0;B9ED;1106 1162 11B0;
+B9EE;B9EE;1106 1162 11B1;B9EE;1106 1162 11B1;
+B9EF;B9EF;1106 1162 11B2;B9EF;1106 1162 11B2;
+B9F0;B9F0;1106 1162 11B3;B9F0;1106 1162 11B3;
+B9F1;B9F1;1106 1162 11B4;B9F1;1106 1162 11B4;
+B9F2;B9F2;1106 1162 11B5;B9F2;1106 1162 11B5;
+B9F3;B9F3;1106 1162 11B6;B9F3;1106 1162 11B6;
+B9F4;B9F4;1106 1162 11B7;B9F4;1106 1162 11B7;
+B9F5;B9F5;1106 1162 11B8;B9F5;1106 1162 11B8;
+B9F6;B9F6;1106 1162 11B9;B9F6;1106 1162 11B9;
+B9F7;B9F7;1106 1162 11BA;B9F7;1106 1162 11BA;
+B9F8;B9F8;1106 1162 11BB;B9F8;1106 1162 11BB;
+B9F9;B9F9;1106 1162 11BC;B9F9;1106 1162 11BC;
+B9FA;B9FA;1106 1162 11BD;B9FA;1106 1162 11BD;
+B9FB;B9FB;1106 1162 11BE;B9FB;1106 1162 11BE;
+B9FC;B9FC;1106 1162 11BF;B9FC;1106 1162 11BF;
+B9FD;B9FD;1106 1162 11C0;B9FD;1106 1162 11C0;
+B9FE;B9FE;1106 1162 11C1;B9FE;1106 1162 11C1;
+B9FF;B9FF;1106 1162 11C2;B9FF;1106 1162 11C2;
+BA00;BA00;1106 1163;BA00;1106 1163;
+BA01;BA01;1106 1163 11A8;BA01;1106 1163 11A8;
+BA02;BA02;1106 1163 11A9;BA02;1106 1163 11A9;
+BA03;BA03;1106 1163 11AA;BA03;1106 1163 11AA;
+BA04;BA04;1106 1163 11AB;BA04;1106 1163 11AB;
+BA05;BA05;1106 1163 11AC;BA05;1106 1163 11AC;
+BA06;BA06;1106 1163 11AD;BA06;1106 1163 11AD;
+BA07;BA07;1106 1163 11AE;BA07;1106 1163 11AE;
+BA08;BA08;1106 1163 11AF;BA08;1106 1163 11AF;
+BA09;BA09;1106 1163 11B0;BA09;1106 1163 11B0;
+BA0A;BA0A;1106 1163 11B1;BA0A;1106 1163 11B1;
+BA0B;BA0B;1106 1163 11B2;BA0B;1106 1163 11B2;
+BA0C;BA0C;1106 1163 11B3;BA0C;1106 1163 11B3;
+BA0D;BA0D;1106 1163 11B4;BA0D;1106 1163 11B4;
+BA0E;BA0E;1106 1163 11B5;BA0E;1106 1163 11B5;
+BA0F;BA0F;1106 1163 11B6;BA0F;1106 1163 11B6;
+BA10;BA10;1106 1163 11B7;BA10;1106 1163 11B7;
+BA11;BA11;1106 1163 11B8;BA11;1106 1163 11B8;
+BA12;BA12;1106 1163 11B9;BA12;1106 1163 11B9;
+BA13;BA13;1106 1163 11BA;BA13;1106 1163 11BA;
+BA14;BA14;1106 1163 11BB;BA14;1106 1163 11BB;
+BA15;BA15;1106 1163 11BC;BA15;1106 1163 11BC;
+BA16;BA16;1106 1163 11BD;BA16;1106 1163 11BD;
+BA17;BA17;1106 1163 11BE;BA17;1106 1163 11BE;
+BA18;BA18;1106 1163 11BF;BA18;1106 1163 11BF;
+BA19;BA19;1106 1163 11C0;BA19;1106 1163 11C0;
+BA1A;BA1A;1106 1163 11C1;BA1A;1106 1163 11C1;
+BA1B;BA1B;1106 1163 11C2;BA1B;1106 1163 11C2;
+BA1C;BA1C;1106 1164;BA1C;1106 1164;
+BA1D;BA1D;1106 1164 11A8;BA1D;1106 1164 11A8;
+BA1E;BA1E;1106 1164 11A9;BA1E;1106 1164 11A9;
+BA1F;BA1F;1106 1164 11AA;BA1F;1106 1164 11AA;
+BA20;BA20;1106 1164 11AB;BA20;1106 1164 11AB;
+BA21;BA21;1106 1164 11AC;BA21;1106 1164 11AC;
+BA22;BA22;1106 1164 11AD;BA22;1106 1164 11AD;
+BA23;BA23;1106 1164 11AE;BA23;1106 1164 11AE;
+BA24;BA24;1106 1164 11AF;BA24;1106 1164 11AF;
+BA25;BA25;1106 1164 11B0;BA25;1106 1164 11B0;
+BA26;BA26;1106 1164 11B1;BA26;1106 1164 11B1;
+BA27;BA27;1106 1164 11B2;BA27;1106 1164 11B2;
+BA28;BA28;1106 1164 11B3;BA28;1106 1164 11B3;
+BA29;BA29;1106 1164 11B4;BA29;1106 1164 11B4;
+BA2A;BA2A;1106 1164 11B5;BA2A;1106 1164 11B5;
+BA2B;BA2B;1106 1164 11B6;BA2B;1106 1164 11B6;
+BA2C;BA2C;1106 1164 11B7;BA2C;1106 1164 11B7;
+BA2D;BA2D;1106 1164 11B8;BA2D;1106 1164 11B8;
+BA2E;BA2E;1106 1164 11B9;BA2E;1106 1164 11B9;
+BA2F;BA2F;1106 1164 11BA;BA2F;1106 1164 11BA;
+BA30;BA30;1106 1164 11BB;BA30;1106 1164 11BB;
+BA31;BA31;1106 1164 11BC;BA31;1106 1164 11BC;
+BA32;BA32;1106 1164 11BD;BA32;1106 1164 11BD;
+BA33;BA33;1106 1164 11BE;BA33;1106 1164 11BE;
+BA34;BA34;1106 1164 11BF;BA34;1106 1164 11BF;
+BA35;BA35;1106 1164 11C0;BA35;1106 1164 11C0;
+BA36;BA36;1106 1164 11C1;BA36;1106 1164 11C1;
+BA37;BA37;1106 1164 11C2;BA37;1106 1164 11C2;
+BA38;BA38;1106 1165;BA38;1106 1165;
+BA39;BA39;1106 1165 11A8;BA39;1106 1165 11A8;
+BA3A;BA3A;1106 1165 11A9;BA3A;1106 1165 11A9;
+BA3B;BA3B;1106 1165 11AA;BA3B;1106 1165 11AA;
+BA3C;BA3C;1106 1165 11AB;BA3C;1106 1165 11AB;
+BA3D;BA3D;1106 1165 11AC;BA3D;1106 1165 11AC;
+BA3E;BA3E;1106 1165 11AD;BA3E;1106 1165 11AD;
+BA3F;BA3F;1106 1165 11AE;BA3F;1106 1165 11AE;
+BA40;BA40;1106 1165 11AF;BA40;1106 1165 11AF;
+BA41;BA41;1106 1165 11B0;BA41;1106 1165 11B0;
+BA42;BA42;1106 1165 11B1;BA42;1106 1165 11B1;
+BA43;BA43;1106 1165 11B2;BA43;1106 1165 11B2;
+BA44;BA44;1106 1165 11B3;BA44;1106 1165 11B3;
+BA45;BA45;1106 1165 11B4;BA45;1106 1165 11B4;
+BA46;BA46;1106 1165 11B5;BA46;1106 1165 11B5;
+BA47;BA47;1106 1165 11B6;BA47;1106 1165 11B6;
+BA48;BA48;1106 1165 11B7;BA48;1106 1165 11B7;
+BA49;BA49;1106 1165 11B8;BA49;1106 1165 11B8;
+BA4A;BA4A;1106 1165 11B9;BA4A;1106 1165 11B9;
+BA4B;BA4B;1106 1165 11BA;BA4B;1106 1165 11BA;
+BA4C;BA4C;1106 1165 11BB;BA4C;1106 1165 11BB;
+BA4D;BA4D;1106 1165 11BC;BA4D;1106 1165 11BC;
+BA4E;BA4E;1106 1165 11BD;BA4E;1106 1165 11BD;
+BA4F;BA4F;1106 1165 11BE;BA4F;1106 1165 11BE;
+BA50;BA50;1106 1165 11BF;BA50;1106 1165 11BF;
+BA51;BA51;1106 1165 11C0;BA51;1106 1165 11C0;
+BA52;BA52;1106 1165 11C1;BA52;1106 1165 11C1;
+BA53;BA53;1106 1165 11C2;BA53;1106 1165 11C2;
+BA54;BA54;1106 1166;BA54;1106 1166;
+BA55;BA55;1106 1166 11A8;BA55;1106 1166 11A8;
+BA56;BA56;1106 1166 11A9;BA56;1106 1166 11A9;
+BA57;BA57;1106 1166 11AA;BA57;1106 1166 11AA;
+BA58;BA58;1106 1166 11AB;BA58;1106 1166 11AB;
+BA59;BA59;1106 1166 11AC;BA59;1106 1166 11AC;
+BA5A;BA5A;1106 1166 11AD;BA5A;1106 1166 11AD;
+BA5B;BA5B;1106 1166 11AE;BA5B;1106 1166 11AE;
+BA5C;BA5C;1106 1166 11AF;BA5C;1106 1166 11AF;
+BA5D;BA5D;1106 1166 11B0;BA5D;1106 1166 11B0;
+BA5E;BA5E;1106 1166 11B1;BA5E;1106 1166 11B1;
+BA5F;BA5F;1106 1166 11B2;BA5F;1106 1166 11B2;
+BA60;BA60;1106 1166 11B3;BA60;1106 1166 11B3;
+BA61;BA61;1106 1166 11B4;BA61;1106 1166 11B4;
+BA62;BA62;1106 1166 11B5;BA62;1106 1166 11B5;
+BA63;BA63;1106 1166 11B6;BA63;1106 1166 11B6;
+BA64;BA64;1106 1166 11B7;BA64;1106 1166 11B7;
+BA65;BA65;1106 1166 11B8;BA65;1106 1166 11B8;
+BA66;BA66;1106 1166 11B9;BA66;1106 1166 11B9;
+BA67;BA67;1106 1166 11BA;BA67;1106 1166 11BA;
+BA68;BA68;1106 1166 11BB;BA68;1106 1166 11BB;
+BA69;BA69;1106 1166 11BC;BA69;1106 1166 11BC;
+BA6A;BA6A;1106 1166 11BD;BA6A;1106 1166 11BD;
+BA6B;BA6B;1106 1166 11BE;BA6B;1106 1166 11BE;
+BA6C;BA6C;1106 1166 11BF;BA6C;1106 1166 11BF;
+BA6D;BA6D;1106 1166 11C0;BA6D;1106 1166 11C0;
+BA6E;BA6E;1106 1166 11C1;BA6E;1106 1166 11C1;
+BA6F;BA6F;1106 1166 11C2;BA6F;1106 1166 11C2;
+BA70;BA70;1106 1167;BA70;1106 1167;
+BA71;BA71;1106 1167 11A8;BA71;1106 1167 11A8;
+BA72;BA72;1106 1167 11A9;BA72;1106 1167 11A9;
+BA73;BA73;1106 1167 11AA;BA73;1106 1167 11AA;
+BA74;BA74;1106 1167 11AB;BA74;1106 1167 11AB;
+BA75;BA75;1106 1167 11AC;BA75;1106 1167 11AC;
+BA76;BA76;1106 1167 11AD;BA76;1106 1167 11AD;
+BA77;BA77;1106 1167 11AE;BA77;1106 1167 11AE;
+BA78;BA78;1106 1167 11AF;BA78;1106 1167 11AF;
+BA79;BA79;1106 1167 11B0;BA79;1106 1167 11B0;
+BA7A;BA7A;1106 1167 11B1;BA7A;1106 1167 11B1;
+BA7B;BA7B;1106 1167 11B2;BA7B;1106 1167 11B2;
+BA7C;BA7C;1106 1167 11B3;BA7C;1106 1167 11B3;
+BA7D;BA7D;1106 1167 11B4;BA7D;1106 1167 11B4;
+BA7E;BA7E;1106 1167 11B5;BA7E;1106 1167 11B5;
+BA7F;BA7F;1106 1167 11B6;BA7F;1106 1167 11B6;
+BA80;BA80;1106 1167 11B7;BA80;1106 1167 11B7;
+BA81;BA81;1106 1167 11B8;BA81;1106 1167 11B8;
+BA82;BA82;1106 1167 11B9;BA82;1106 1167 11B9;
+BA83;BA83;1106 1167 11BA;BA83;1106 1167 11BA;
+BA84;BA84;1106 1167 11BB;BA84;1106 1167 11BB;
+BA85;BA85;1106 1167 11BC;BA85;1106 1167 11BC;
+BA86;BA86;1106 1167 11BD;BA86;1106 1167 11BD;
+BA87;BA87;1106 1167 11BE;BA87;1106 1167 11BE;
+BA88;BA88;1106 1167 11BF;BA88;1106 1167 11BF;
+BA89;BA89;1106 1167 11C0;BA89;1106 1167 11C0;
+BA8A;BA8A;1106 1167 11C1;BA8A;1106 1167 11C1;
+BA8B;BA8B;1106 1167 11C2;BA8B;1106 1167 11C2;
+BA8C;BA8C;1106 1168;BA8C;1106 1168;
+BA8D;BA8D;1106 1168 11A8;BA8D;1106 1168 11A8;
+BA8E;BA8E;1106 1168 11A9;BA8E;1106 1168 11A9;
+BA8F;BA8F;1106 1168 11AA;BA8F;1106 1168 11AA;
+BA90;BA90;1106 1168 11AB;BA90;1106 1168 11AB;
+BA91;BA91;1106 1168 11AC;BA91;1106 1168 11AC;
+BA92;BA92;1106 1168 11AD;BA92;1106 1168 11AD;
+BA93;BA93;1106 1168 11AE;BA93;1106 1168 11AE;
+BA94;BA94;1106 1168 11AF;BA94;1106 1168 11AF;
+BA95;BA95;1106 1168 11B0;BA95;1106 1168 11B0;
+BA96;BA96;1106 1168 11B1;BA96;1106 1168 11B1;
+BA97;BA97;1106 1168 11B2;BA97;1106 1168 11B2;
+BA98;BA98;1106 1168 11B3;BA98;1106 1168 11B3;
+BA99;BA99;1106 1168 11B4;BA99;1106 1168 11B4;
+BA9A;BA9A;1106 1168 11B5;BA9A;1106 1168 11B5;
+BA9B;BA9B;1106 1168 11B6;BA9B;1106 1168 11B6;
+BA9C;BA9C;1106 1168 11B7;BA9C;1106 1168 11B7;
+BA9D;BA9D;1106 1168 11B8;BA9D;1106 1168 11B8;
+BA9E;BA9E;1106 1168 11B9;BA9E;1106 1168 11B9;
+BA9F;BA9F;1106 1168 11BA;BA9F;1106 1168 11BA;
+BAA0;BAA0;1106 1168 11BB;BAA0;1106 1168 11BB;
+BAA1;BAA1;1106 1168 11BC;BAA1;1106 1168 11BC;
+BAA2;BAA2;1106 1168 11BD;BAA2;1106 1168 11BD;
+BAA3;BAA3;1106 1168 11BE;BAA3;1106 1168 11BE;
+BAA4;BAA4;1106 1168 11BF;BAA4;1106 1168 11BF;
+BAA5;BAA5;1106 1168 11C0;BAA5;1106 1168 11C0;
+BAA6;BAA6;1106 1168 11C1;BAA6;1106 1168 11C1;
+BAA7;BAA7;1106 1168 11C2;BAA7;1106 1168 11C2;
+BAA8;BAA8;1106 1169;BAA8;1106 1169;
+BAA9;BAA9;1106 1169 11A8;BAA9;1106 1169 11A8;
+BAAA;BAAA;1106 1169 11A9;BAAA;1106 1169 11A9;
+BAAB;BAAB;1106 1169 11AA;BAAB;1106 1169 11AA;
+BAAC;BAAC;1106 1169 11AB;BAAC;1106 1169 11AB;
+BAAD;BAAD;1106 1169 11AC;BAAD;1106 1169 11AC;
+BAAE;BAAE;1106 1169 11AD;BAAE;1106 1169 11AD;
+BAAF;BAAF;1106 1169 11AE;BAAF;1106 1169 11AE;
+BAB0;BAB0;1106 1169 11AF;BAB0;1106 1169 11AF;
+BAB1;BAB1;1106 1169 11B0;BAB1;1106 1169 11B0;
+BAB2;BAB2;1106 1169 11B1;BAB2;1106 1169 11B1;
+BAB3;BAB3;1106 1169 11B2;BAB3;1106 1169 11B2;
+BAB4;BAB4;1106 1169 11B3;BAB4;1106 1169 11B3;
+BAB5;BAB5;1106 1169 11B4;BAB5;1106 1169 11B4;
+BAB6;BAB6;1106 1169 11B5;BAB6;1106 1169 11B5;
+BAB7;BAB7;1106 1169 11B6;BAB7;1106 1169 11B6;
+BAB8;BAB8;1106 1169 11B7;BAB8;1106 1169 11B7;
+BAB9;BAB9;1106 1169 11B8;BAB9;1106 1169 11B8;
+BABA;BABA;1106 1169 11B9;BABA;1106 1169 11B9;
+BABB;BABB;1106 1169 11BA;BABB;1106 1169 11BA;
+BABC;BABC;1106 1169 11BB;BABC;1106 1169 11BB;
+BABD;BABD;1106 1169 11BC;BABD;1106 1169 11BC;
+BABE;BABE;1106 1169 11BD;BABE;1106 1169 11BD;
+BABF;BABF;1106 1169 11BE;BABF;1106 1169 11BE;
+BAC0;BAC0;1106 1169 11BF;BAC0;1106 1169 11BF;
+BAC1;BAC1;1106 1169 11C0;BAC1;1106 1169 11C0;
+BAC2;BAC2;1106 1169 11C1;BAC2;1106 1169 11C1;
+BAC3;BAC3;1106 1169 11C2;BAC3;1106 1169 11C2;
+BAC4;BAC4;1106 116A;BAC4;1106 116A;
+BAC5;BAC5;1106 116A 11A8;BAC5;1106 116A 11A8;
+BAC6;BAC6;1106 116A 11A9;BAC6;1106 116A 11A9;
+BAC7;BAC7;1106 116A 11AA;BAC7;1106 116A 11AA;
+BAC8;BAC8;1106 116A 11AB;BAC8;1106 116A 11AB;
+BAC9;BAC9;1106 116A 11AC;BAC9;1106 116A 11AC;
+BACA;BACA;1106 116A 11AD;BACA;1106 116A 11AD;
+BACB;BACB;1106 116A 11AE;BACB;1106 116A 11AE;
+BACC;BACC;1106 116A 11AF;BACC;1106 116A 11AF;
+BACD;BACD;1106 116A 11B0;BACD;1106 116A 11B0;
+BACE;BACE;1106 116A 11B1;BACE;1106 116A 11B1;
+BACF;BACF;1106 116A 11B2;BACF;1106 116A 11B2;
+BAD0;BAD0;1106 116A 11B3;BAD0;1106 116A 11B3;
+BAD1;BAD1;1106 116A 11B4;BAD1;1106 116A 11B4;
+BAD2;BAD2;1106 116A 11B5;BAD2;1106 116A 11B5;
+BAD3;BAD3;1106 116A 11B6;BAD3;1106 116A 11B6;
+BAD4;BAD4;1106 116A 11B7;BAD4;1106 116A 11B7;
+BAD5;BAD5;1106 116A 11B8;BAD5;1106 116A 11B8;
+BAD6;BAD6;1106 116A 11B9;BAD6;1106 116A 11B9;
+BAD7;BAD7;1106 116A 11BA;BAD7;1106 116A 11BA;
+BAD8;BAD8;1106 116A 11BB;BAD8;1106 116A 11BB;
+BAD9;BAD9;1106 116A 11BC;BAD9;1106 116A 11BC;
+BADA;BADA;1106 116A 11BD;BADA;1106 116A 11BD;
+BADB;BADB;1106 116A 11BE;BADB;1106 116A 11BE;
+BADC;BADC;1106 116A 11BF;BADC;1106 116A 11BF;
+BADD;BADD;1106 116A 11C0;BADD;1106 116A 11C0;
+BADE;BADE;1106 116A 11C1;BADE;1106 116A 11C1;
+BADF;BADF;1106 116A 11C2;BADF;1106 116A 11C2;
+BAE0;BAE0;1106 116B;BAE0;1106 116B;
+BAE1;BAE1;1106 116B 11A8;BAE1;1106 116B 11A8;
+BAE2;BAE2;1106 116B 11A9;BAE2;1106 116B 11A9;
+BAE3;BAE3;1106 116B 11AA;BAE3;1106 116B 11AA;
+BAE4;BAE4;1106 116B 11AB;BAE4;1106 116B 11AB;
+BAE5;BAE5;1106 116B 11AC;BAE5;1106 116B 11AC;
+BAE6;BAE6;1106 116B 11AD;BAE6;1106 116B 11AD;
+BAE7;BAE7;1106 116B 11AE;BAE7;1106 116B 11AE;
+BAE8;BAE8;1106 116B 11AF;BAE8;1106 116B 11AF;
+BAE9;BAE9;1106 116B 11B0;BAE9;1106 116B 11B0;
+BAEA;BAEA;1106 116B 11B1;BAEA;1106 116B 11B1;
+BAEB;BAEB;1106 116B 11B2;BAEB;1106 116B 11B2;
+BAEC;BAEC;1106 116B 11B3;BAEC;1106 116B 11B3;
+BAED;BAED;1106 116B 11B4;BAED;1106 116B 11B4;
+BAEE;BAEE;1106 116B 11B5;BAEE;1106 116B 11B5;
+BAEF;BAEF;1106 116B 11B6;BAEF;1106 116B 11B6;
+BAF0;BAF0;1106 116B 11B7;BAF0;1106 116B 11B7;
+BAF1;BAF1;1106 116B 11B8;BAF1;1106 116B 11B8;
+BAF2;BAF2;1106 116B 11B9;BAF2;1106 116B 11B9;
+BAF3;BAF3;1106 116B 11BA;BAF3;1106 116B 11BA;
+BAF4;BAF4;1106 116B 11BB;BAF4;1106 116B 11BB;
+BAF5;BAF5;1106 116B 11BC;BAF5;1106 116B 11BC;
+BAF6;BAF6;1106 116B 11BD;BAF6;1106 116B 11BD;
+BAF7;BAF7;1106 116B 11BE;BAF7;1106 116B 11BE;
+BAF8;BAF8;1106 116B 11BF;BAF8;1106 116B 11BF;
+BAF9;BAF9;1106 116B 11C0;BAF9;1106 116B 11C0;
+BAFA;BAFA;1106 116B 11C1;BAFA;1106 116B 11C1;
+BAFB;BAFB;1106 116B 11C2;BAFB;1106 116B 11C2;
+BAFC;BAFC;1106 116C;BAFC;1106 116C;
+BAFD;BAFD;1106 116C 11A8;BAFD;1106 116C 11A8;
+BAFE;BAFE;1106 116C 11A9;BAFE;1106 116C 11A9;
+BAFF;BAFF;1106 116C 11AA;BAFF;1106 116C 11AA;
+BB00;BB00;1106 116C 11AB;BB00;1106 116C 11AB;
+BB01;BB01;1106 116C 11AC;BB01;1106 116C 11AC;
+BB02;BB02;1106 116C 11AD;BB02;1106 116C 11AD;
+BB03;BB03;1106 116C 11AE;BB03;1106 116C 11AE;
+BB04;BB04;1106 116C 11AF;BB04;1106 116C 11AF;
+BB05;BB05;1106 116C 11B0;BB05;1106 116C 11B0;
+BB06;BB06;1106 116C 11B1;BB06;1106 116C 11B1;
+BB07;BB07;1106 116C 11B2;BB07;1106 116C 11B2;
+BB08;BB08;1106 116C 11B3;BB08;1106 116C 11B3;
+BB09;BB09;1106 116C 11B4;BB09;1106 116C 11B4;
+BB0A;BB0A;1106 116C 11B5;BB0A;1106 116C 11B5;
+BB0B;BB0B;1106 116C 11B6;BB0B;1106 116C 11B6;
+BB0C;BB0C;1106 116C 11B7;BB0C;1106 116C 11B7;
+BB0D;BB0D;1106 116C 11B8;BB0D;1106 116C 11B8;
+BB0E;BB0E;1106 116C 11B9;BB0E;1106 116C 11B9;
+BB0F;BB0F;1106 116C 11BA;BB0F;1106 116C 11BA;
+BB10;BB10;1106 116C 11BB;BB10;1106 116C 11BB;
+BB11;BB11;1106 116C 11BC;BB11;1106 116C 11BC;
+BB12;BB12;1106 116C 11BD;BB12;1106 116C 11BD;
+BB13;BB13;1106 116C 11BE;BB13;1106 116C 11BE;
+BB14;BB14;1106 116C 11BF;BB14;1106 116C 11BF;
+BB15;BB15;1106 116C 11C0;BB15;1106 116C 11C0;
+BB16;BB16;1106 116C 11C1;BB16;1106 116C 11C1;
+BB17;BB17;1106 116C 11C2;BB17;1106 116C 11C2;
+BB18;BB18;1106 116D;BB18;1106 116D;
+BB19;BB19;1106 116D 11A8;BB19;1106 116D 11A8;
+BB1A;BB1A;1106 116D 11A9;BB1A;1106 116D 11A9;
+BB1B;BB1B;1106 116D 11AA;BB1B;1106 116D 11AA;
+BB1C;BB1C;1106 116D 11AB;BB1C;1106 116D 11AB;
+BB1D;BB1D;1106 116D 11AC;BB1D;1106 116D 11AC;
+BB1E;BB1E;1106 116D 11AD;BB1E;1106 116D 11AD;
+BB1F;BB1F;1106 116D 11AE;BB1F;1106 116D 11AE;
+BB20;BB20;1106 116D 11AF;BB20;1106 116D 11AF;
+BB21;BB21;1106 116D 11B0;BB21;1106 116D 11B0;
+BB22;BB22;1106 116D 11B1;BB22;1106 116D 11B1;
+BB23;BB23;1106 116D 11B2;BB23;1106 116D 11B2;
+BB24;BB24;1106 116D 11B3;BB24;1106 116D 11B3;
+BB25;BB25;1106 116D 11B4;BB25;1106 116D 11B4;
+BB26;BB26;1106 116D 11B5;BB26;1106 116D 11B5;
+BB27;BB27;1106 116D 11B6;BB27;1106 116D 11B6;
+BB28;BB28;1106 116D 11B7;BB28;1106 116D 11B7;
+BB29;BB29;1106 116D 11B8;BB29;1106 116D 11B8;
+BB2A;BB2A;1106 116D 11B9;BB2A;1106 116D 11B9;
+BB2B;BB2B;1106 116D 11BA;BB2B;1106 116D 11BA;
+BB2C;BB2C;1106 116D 11BB;BB2C;1106 116D 11BB;
+BB2D;BB2D;1106 116D 11BC;BB2D;1106 116D 11BC;
+BB2E;BB2E;1106 116D 11BD;BB2E;1106 116D 11BD;
+BB2F;BB2F;1106 116D 11BE;BB2F;1106 116D 11BE;
+BB30;BB30;1106 116D 11BF;BB30;1106 116D 11BF;
+BB31;BB31;1106 116D 11C0;BB31;1106 116D 11C0;
+BB32;BB32;1106 116D 11C1;BB32;1106 116D 11C1;
+BB33;BB33;1106 116D 11C2;BB33;1106 116D 11C2;
+BB34;BB34;1106 116E;BB34;1106 116E;
+BB35;BB35;1106 116E 11A8;BB35;1106 116E 11A8;
+BB36;BB36;1106 116E 11A9;BB36;1106 116E 11A9;
+BB37;BB37;1106 116E 11AA;BB37;1106 116E 11AA;
+BB38;BB38;1106 116E 11AB;BB38;1106 116E 11AB;
+BB39;BB39;1106 116E 11AC;BB39;1106 116E 11AC;
+BB3A;BB3A;1106 116E 11AD;BB3A;1106 116E 11AD;
+BB3B;BB3B;1106 116E 11AE;BB3B;1106 116E 11AE;
+BB3C;BB3C;1106 116E 11AF;BB3C;1106 116E 11AF;
+BB3D;BB3D;1106 116E 11B0;BB3D;1106 116E 11B0;
+BB3E;BB3E;1106 116E 11B1;BB3E;1106 116E 11B1;
+BB3F;BB3F;1106 116E 11B2;BB3F;1106 116E 11B2;
+BB40;BB40;1106 116E 11B3;BB40;1106 116E 11B3;
+BB41;BB41;1106 116E 11B4;BB41;1106 116E 11B4;
+BB42;BB42;1106 116E 11B5;BB42;1106 116E 11B5;
+BB43;BB43;1106 116E 11B6;BB43;1106 116E 11B6;
+BB44;BB44;1106 116E 11B7;BB44;1106 116E 11B7;
+BB45;BB45;1106 116E 11B8;BB45;1106 116E 11B8;
+BB46;BB46;1106 116E 11B9;BB46;1106 116E 11B9;
+BB47;BB47;1106 116E 11BA;BB47;1106 116E 11BA;
+BB48;BB48;1106 116E 11BB;BB48;1106 116E 11BB;
+BB49;BB49;1106 116E 11BC;BB49;1106 116E 11BC;
+BB4A;BB4A;1106 116E 11BD;BB4A;1106 116E 11BD;
+BB4B;BB4B;1106 116E 11BE;BB4B;1106 116E 11BE;
+BB4C;BB4C;1106 116E 11BF;BB4C;1106 116E 11BF;
+BB4D;BB4D;1106 116E 11C0;BB4D;1106 116E 11C0;
+BB4E;BB4E;1106 116E 11C1;BB4E;1106 116E 11C1;
+BB4F;BB4F;1106 116E 11C2;BB4F;1106 116E 11C2;
+BB50;BB50;1106 116F;BB50;1106 116F;
+BB51;BB51;1106 116F 11A8;BB51;1106 116F 11A8;
+BB52;BB52;1106 116F 11A9;BB52;1106 116F 11A9;
+BB53;BB53;1106 116F 11AA;BB53;1106 116F 11AA;
+BB54;BB54;1106 116F 11AB;BB54;1106 116F 11AB;
+BB55;BB55;1106 116F 11AC;BB55;1106 116F 11AC;
+BB56;BB56;1106 116F 11AD;BB56;1106 116F 11AD;
+BB57;BB57;1106 116F 11AE;BB57;1106 116F 11AE;
+BB58;BB58;1106 116F 11AF;BB58;1106 116F 11AF;
+BB59;BB59;1106 116F 11B0;BB59;1106 116F 11B0;
+BB5A;BB5A;1106 116F 11B1;BB5A;1106 116F 11B1;
+BB5B;BB5B;1106 116F 11B2;BB5B;1106 116F 11B2;
+BB5C;BB5C;1106 116F 11B3;BB5C;1106 116F 11B3;
+BB5D;BB5D;1106 116F 11B4;BB5D;1106 116F 11B4;
+BB5E;BB5E;1106 116F 11B5;BB5E;1106 116F 11B5;
+BB5F;BB5F;1106 116F 11B6;BB5F;1106 116F 11B6;
+BB60;BB60;1106 116F 11B7;BB60;1106 116F 11B7;
+BB61;BB61;1106 116F 11B8;BB61;1106 116F 11B8;
+BB62;BB62;1106 116F 11B9;BB62;1106 116F 11B9;
+BB63;BB63;1106 116F 11BA;BB63;1106 116F 11BA;
+BB64;BB64;1106 116F 11BB;BB64;1106 116F 11BB;
+BB65;BB65;1106 116F 11BC;BB65;1106 116F 11BC;
+BB66;BB66;1106 116F 11BD;BB66;1106 116F 11BD;
+BB67;BB67;1106 116F 11BE;BB67;1106 116F 11BE;
+BB68;BB68;1106 116F 11BF;BB68;1106 116F 11BF;
+BB69;BB69;1106 116F 11C0;BB69;1106 116F 11C0;
+BB6A;BB6A;1106 116F 11C1;BB6A;1106 116F 11C1;
+BB6B;BB6B;1106 116F 11C2;BB6B;1106 116F 11C2;
+BB6C;BB6C;1106 1170;BB6C;1106 1170;
+BB6D;BB6D;1106 1170 11A8;BB6D;1106 1170 11A8;
+BB6E;BB6E;1106 1170 11A9;BB6E;1106 1170 11A9;
+BB6F;BB6F;1106 1170 11AA;BB6F;1106 1170 11AA;
+BB70;BB70;1106 1170 11AB;BB70;1106 1170 11AB;
+BB71;BB71;1106 1170 11AC;BB71;1106 1170 11AC;
+BB72;BB72;1106 1170 11AD;BB72;1106 1170 11AD;
+BB73;BB73;1106 1170 11AE;BB73;1106 1170 11AE;
+BB74;BB74;1106 1170 11AF;BB74;1106 1170 11AF;
+BB75;BB75;1106 1170 11B0;BB75;1106 1170 11B0;
+BB76;BB76;1106 1170 11B1;BB76;1106 1170 11B1;
+BB77;BB77;1106 1170 11B2;BB77;1106 1170 11B2;
+BB78;BB78;1106 1170 11B3;BB78;1106 1170 11B3;
+BB79;BB79;1106 1170 11B4;BB79;1106 1170 11B4;
+BB7A;BB7A;1106 1170 11B5;BB7A;1106 1170 11B5;
+BB7B;BB7B;1106 1170 11B6;BB7B;1106 1170 11B6;
+BB7C;BB7C;1106 1170 11B7;BB7C;1106 1170 11B7;
+BB7D;BB7D;1106 1170 11B8;BB7D;1106 1170 11B8;
+BB7E;BB7E;1106 1170 11B9;BB7E;1106 1170 11B9;
+BB7F;BB7F;1106 1170 11BA;BB7F;1106 1170 11BA;
+BB80;BB80;1106 1170 11BB;BB80;1106 1170 11BB;
+BB81;BB81;1106 1170 11BC;BB81;1106 1170 11BC;
+BB82;BB82;1106 1170 11BD;BB82;1106 1170 11BD;
+BB83;BB83;1106 1170 11BE;BB83;1106 1170 11BE;
+BB84;BB84;1106 1170 11BF;BB84;1106 1170 11BF;
+BB85;BB85;1106 1170 11C0;BB85;1106 1170 11C0;
+BB86;BB86;1106 1170 11C1;BB86;1106 1170 11C1;
+BB87;BB87;1106 1170 11C2;BB87;1106 1170 11C2;
+BB88;BB88;1106 1171;BB88;1106 1171;
+BB89;BB89;1106 1171 11A8;BB89;1106 1171 11A8;
+BB8A;BB8A;1106 1171 11A9;BB8A;1106 1171 11A9;
+BB8B;BB8B;1106 1171 11AA;BB8B;1106 1171 11AA;
+BB8C;BB8C;1106 1171 11AB;BB8C;1106 1171 11AB;
+BB8D;BB8D;1106 1171 11AC;BB8D;1106 1171 11AC;
+BB8E;BB8E;1106 1171 11AD;BB8E;1106 1171 11AD;
+BB8F;BB8F;1106 1171 11AE;BB8F;1106 1171 11AE;
+BB90;BB90;1106 1171 11AF;BB90;1106 1171 11AF;
+BB91;BB91;1106 1171 11B0;BB91;1106 1171 11B0;
+BB92;BB92;1106 1171 11B1;BB92;1106 1171 11B1;
+BB93;BB93;1106 1171 11B2;BB93;1106 1171 11B2;
+BB94;BB94;1106 1171 11B3;BB94;1106 1171 11B3;
+BB95;BB95;1106 1171 11B4;BB95;1106 1171 11B4;
+BB96;BB96;1106 1171 11B5;BB96;1106 1171 11B5;
+BB97;BB97;1106 1171 11B6;BB97;1106 1171 11B6;
+BB98;BB98;1106 1171 11B7;BB98;1106 1171 11B7;
+BB99;BB99;1106 1171 11B8;BB99;1106 1171 11B8;
+BB9A;BB9A;1106 1171 11B9;BB9A;1106 1171 11B9;
+BB9B;BB9B;1106 1171 11BA;BB9B;1106 1171 11BA;
+BB9C;BB9C;1106 1171 11BB;BB9C;1106 1171 11BB;
+BB9D;BB9D;1106 1171 11BC;BB9D;1106 1171 11BC;
+BB9E;BB9E;1106 1171 11BD;BB9E;1106 1171 11BD;
+BB9F;BB9F;1106 1171 11BE;BB9F;1106 1171 11BE;
+BBA0;BBA0;1106 1171 11BF;BBA0;1106 1171 11BF;
+BBA1;BBA1;1106 1171 11C0;BBA1;1106 1171 11C0;
+BBA2;BBA2;1106 1171 11C1;BBA2;1106 1171 11C1;
+BBA3;BBA3;1106 1171 11C2;BBA3;1106 1171 11C2;
+BBA4;BBA4;1106 1172;BBA4;1106 1172;
+BBA5;BBA5;1106 1172 11A8;BBA5;1106 1172 11A8;
+BBA6;BBA6;1106 1172 11A9;BBA6;1106 1172 11A9;
+BBA7;BBA7;1106 1172 11AA;BBA7;1106 1172 11AA;
+BBA8;BBA8;1106 1172 11AB;BBA8;1106 1172 11AB;
+BBA9;BBA9;1106 1172 11AC;BBA9;1106 1172 11AC;
+BBAA;BBAA;1106 1172 11AD;BBAA;1106 1172 11AD;
+BBAB;BBAB;1106 1172 11AE;BBAB;1106 1172 11AE;
+BBAC;BBAC;1106 1172 11AF;BBAC;1106 1172 11AF;
+BBAD;BBAD;1106 1172 11B0;BBAD;1106 1172 11B0;
+BBAE;BBAE;1106 1172 11B1;BBAE;1106 1172 11B1;
+BBAF;BBAF;1106 1172 11B2;BBAF;1106 1172 11B2;
+BBB0;BBB0;1106 1172 11B3;BBB0;1106 1172 11B3;
+BBB1;BBB1;1106 1172 11B4;BBB1;1106 1172 11B4;
+BBB2;BBB2;1106 1172 11B5;BBB2;1106 1172 11B5;
+BBB3;BBB3;1106 1172 11B6;BBB3;1106 1172 11B6;
+BBB4;BBB4;1106 1172 11B7;BBB4;1106 1172 11B7;
+BBB5;BBB5;1106 1172 11B8;BBB5;1106 1172 11B8;
+BBB6;BBB6;1106 1172 11B9;BBB6;1106 1172 11B9;
+BBB7;BBB7;1106 1172 11BA;BBB7;1106 1172 11BA;
+BBB8;BBB8;1106 1172 11BB;BBB8;1106 1172 11BB;
+BBB9;BBB9;1106 1172 11BC;BBB9;1106 1172 11BC;
+BBBA;BBBA;1106 1172 11BD;BBBA;1106 1172 11BD;
+BBBB;BBBB;1106 1172 11BE;BBBB;1106 1172 11BE;
+BBBC;BBBC;1106 1172 11BF;BBBC;1106 1172 11BF;
+BBBD;BBBD;1106 1172 11C0;BBBD;1106 1172 11C0;
+BBBE;BBBE;1106 1172 11C1;BBBE;1106 1172 11C1;
+BBBF;BBBF;1106 1172 11C2;BBBF;1106 1172 11C2;
+BBC0;BBC0;1106 1173;BBC0;1106 1173;
+BBC1;BBC1;1106 1173 11A8;BBC1;1106 1173 11A8;
+BBC2;BBC2;1106 1173 11A9;BBC2;1106 1173 11A9;
+BBC3;BBC3;1106 1173 11AA;BBC3;1106 1173 11AA;
+BBC4;BBC4;1106 1173 11AB;BBC4;1106 1173 11AB;
+BBC5;BBC5;1106 1173 11AC;BBC5;1106 1173 11AC;
+BBC6;BBC6;1106 1173 11AD;BBC6;1106 1173 11AD;
+BBC7;BBC7;1106 1173 11AE;BBC7;1106 1173 11AE;
+BBC8;BBC8;1106 1173 11AF;BBC8;1106 1173 11AF;
+BBC9;BBC9;1106 1173 11B0;BBC9;1106 1173 11B0;
+BBCA;BBCA;1106 1173 11B1;BBCA;1106 1173 11B1;
+BBCB;BBCB;1106 1173 11B2;BBCB;1106 1173 11B2;
+BBCC;BBCC;1106 1173 11B3;BBCC;1106 1173 11B3;
+BBCD;BBCD;1106 1173 11B4;BBCD;1106 1173 11B4;
+BBCE;BBCE;1106 1173 11B5;BBCE;1106 1173 11B5;
+BBCF;BBCF;1106 1173 11B6;BBCF;1106 1173 11B6;
+BBD0;BBD0;1106 1173 11B7;BBD0;1106 1173 11B7;
+BBD1;BBD1;1106 1173 11B8;BBD1;1106 1173 11B8;
+BBD2;BBD2;1106 1173 11B9;BBD2;1106 1173 11B9;
+BBD3;BBD3;1106 1173 11BA;BBD3;1106 1173 11BA;
+BBD4;BBD4;1106 1173 11BB;BBD4;1106 1173 11BB;
+BBD5;BBD5;1106 1173 11BC;BBD5;1106 1173 11BC;
+BBD6;BBD6;1106 1173 11BD;BBD6;1106 1173 11BD;
+BBD7;BBD7;1106 1173 11BE;BBD7;1106 1173 11BE;
+BBD8;BBD8;1106 1173 11BF;BBD8;1106 1173 11BF;
+BBD9;BBD9;1106 1173 11C0;BBD9;1106 1173 11C0;
+BBDA;BBDA;1106 1173 11C1;BBDA;1106 1173 11C1;
+BBDB;BBDB;1106 1173 11C2;BBDB;1106 1173 11C2;
+BBDC;BBDC;1106 1174;BBDC;1106 1174;
+BBDD;BBDD;1106 1174 11A8;BBDD;1106 1174 11A8;
+BBDE;BBDE;1106 1174 11A9;BBDE;1106 1174 11A9;
+BBDF;BBDF;1106 1174 11AA;BBDF;1106 1174 11AA;
+BBE0;BBE0;1106 1174 11AB;BBE0;1106 1174 11AB;
+BBE1;BBE1;1106 1174 11AC;BBE1;1106 1174 11AC;
+BBE2;BBE2;1106 1174 11AD;BBE2;1106 1174 11AD;
+BBE3;BBE3;1106 1174 11AE;BBE3;1106 1174 11AE;
+BBE4;BBE4;1106 1174 11AF;BBE4;1106 1174 11AF;
+BBE5;BBE5;1106 1174 11B0;BBE5;1106 1174 11B0;
+BBE6;BBE6;1106 1174 11B1;BBE6;1106 1174 11B1;
+BBE7;BBE7;1106 1174 11B2;BBE7;1106 1174 11B2;
+BBE8;BBE8;1106 1174 11B3;BBE8;1106 1174 11B3;
+BBE9;BBE9;1106 1174 11B4;BBE9;1106 1174 11B4;
+BBEA;BBEA;1106 1174 11B5;BBEA;1106 1174 11B5;
+BBEB;BBEB;1106 1174 11B6;BBEB;1106 1174 11B6;
+BBEC;BBEC;1106 1174 11B7;BBEC;1106 1174 11B7;
+BBED;BBED;1106 1174 11B8;BBED;1106 1174 11B8;
+BBEE;BBEE;1106 1174 11B9;BBEE;1106 1174 11B9;
+BBEF;BBEF;1106 1174 11BA;BBEF;1106 1174 11BA;
+BBF0;BBF0;1106 1174 11BB;BBF0;1106 1174 11BB;
+BBF1;BBF1;1106 1174 11BC;BBF1;1106 1174 11BC;
+BBF2;BBF2;1106 1174 11BD;BBF2;1106 1174 11BD;
+BBF3;BBF3;1106 1174 11BE;BBF3;1106 1174 11BE;
+BBF4;BBF4;1106 1174 11BF;BBF4;1106 1174 11BF;
+BBF5;BBF5;1106 1174 11C0;BBF5;1106 1174 11C0;
+BBF6;BBF6;1106 1174 11C1;BBF6;1106 1174 11C1;
+BBF7;BBF7;1106 1174 11C2;BBF7;1106 1174 11C2;
+BBF8;BBF8;1106 1175;BBF8;1106 1175;
+BBF9;BBF9;1106 1175 11A8;BBF9;1106 1175 11A8;
+BBFA;BBFA;1106 1175 11A9;BBFA;1106 1175 11A9;
+BBFB;BBFB;1106 1175 11AA;BBFB;1106 1175 11AA;
+BBFC;BBFC;1106 1175 11AB;BBFC;1106 1175 11AB;
+BBFD;BBFD;1106 1175 11AC;BBFD;1106 1175 11AC;
+BBFE;BBFE;1106 1175 11AD;BBFE;1106 1175 11AD;
+BBFF;BBFF;1106 1175 11AE;BBFF;1106 1175 11AE;
+BC00;BC00;1106 1175 11AF;BC00;1106 1175 11AF;
+BC01;BC01;1106 1175 11B0;BC01;1106 1175 11B0;
+BC02;BC02;1106 1175 11B1;BC02;1106 1175 11B1;
+BC03;BC03;1106 1175 11B2;BC03;1106 1175 11B2;
+BC04;BC04;1106 1175 11B3;BC04;1106 1175 11B3;
+BC05;BC05;1106 1175 11B4;BC05;1106 1175 11B4;
+BC06;BC06;1106 1175 11B5;BC06;1106 1175 11B5;
+BC07;BC07;1106 1175 11B6;BC07;1106 1175 11B6;
+BC08;BC08;1106 1175 11B7;BC08;1106 1175 11B7;
+BC09;BC09;1106 1175 11B8;BC09;1106 1175 11B8;
+BC0A;BC0A;1106 1175 11B9;BC0A;1106 1175 11B9;
+BC0B;BC0B;1106 1175 11BA;BC0B;1106 1175 11BA;
+BC0C;BC0C;1106 1175 11BB;BC0C;1106 1175 11BB;
+BC0D;BC0D;1106 1175 11BC;BC0D;1106 1175 11BC;
+BC0E;BC0E;1106 1175 11BD;BC0E;1106 1175 11BD;
+BC0F;BC0F;1106 1175 11BE;BC0F;1106 1175 11BE;
+BC10;BC10;1106 1175 11BF;BC10;1106 1175 11BF;
+BC11;BC11;1106 1175 11C0;BC11;1106 1175 11C0;
+BC12;BC12;1106 1175 11C1;BC12;1106 1175 11C1;
+BC13;BC13;1106 1175 11C2;BC13;1106 1175 11C2;
+BC14;BC14;1107 1161;BC14;1107 1161;
+BC15;BC15;1107 1161 11A8;BC15;1107 1161 11A8;
+BC16;BC16;1107 1161 11A9;BC16;1107 1161 11A9;
+BC17;BC17;1107 1161 11AA;BC17;1107 1161 11AA;
+BC18;BC18;1107 1161 11AB;BC18;1107 1161 11AB;
+BC19;BC19;1107 1161 11AC;BC19;1107 1161 11AC;
+BC1A;BC1A;1107 1161 11AD;BC1A;1107 1161 11AD;
+BC1B;BC1B;1107 1161 11AE;BC1B;1107 1161 11AE;
+BC1C;BC1C;1107 1161 11AF;BC1C;1107 1161 11AF;
+BC1D;BC1D;1107 1161 11B0;BC1D;1107 1161 11B0;
+BC1E;BC1E;1107 1161 11B1;BC1E;1107 1161 11B1;
+BC1F;BC1F;1107 1161 11B2;BC1F;1107 1161 11B2;
+BC20;BC20;1107 1161 11B3;BC20;1107 1161 11B3;
+BC21;BC21;1107 1161 11B4;BC21;1107 1161 11B4;
+BC22;BC22;1107 1161 11B5;BC22;1107 1161 11B5;
+BC23;BC23;1107 1161 11B6;BC23;1107 1161 11B6;
+BC24;BC24;1107 1161 11B7;BC24;1107 1161 11B7;
+BC25;BC25;1107 1161 11B8;BC25;1107 1161 11B8;
+BC26;BC26;1107 1161 11B9;BC26;1107 1161 11B9;
+BC27;BC27;1107 1161 11BA;BC27;1107 1161 11BA;
+BC28;BC28;1107 1161 11BB;BC28;1107 1161 11BB;
+BC29;BC29;1107 1161 11BC;BC29;1107 1161 11BC;
+BC2A;BC2A;1107 1161 11BD;BC2A;1107 1161 11BD;
+BC2B;BC2B;1107 1161 11BE;BC2B;1107 1161 11BE;
+BC2C;BC2C;1107 1161 11BF;BC2C;1107 1161 11BF;
+BC2D;BC2D;1107 1161 11C0;BC2D;1107 1161 11C0;
+BC2E;BC2E;1107 1161 11C1;BC2E;1107 1161 11C1;
+BC2F;BC2F;1107 1161 11C2;BC2F;1107 1161 11C2;
+BC30;BC30;1107 1162;BC30;1107 1162;
+BC31;BC31;1107 1162 11A8;BC31;1107 1162 11A8;
+BC32;BC32;1107 1162 11A9;BC32;1107 1162 11A9;
+BC33;BC33;1107 1162 11AA;BC33;1107 1162 11AA;
+BC34;BC34;1107 1162 11AB;BC34;1107 1162 11AB;
+BC35;BC35;1107 1162 11AC;BC35;1107 1162 11AC;
+BC36;BC36;1107 1162 11AD;BC36;1107 1162 11AD;
+BC37;BC37;1107 1162 11AE;BC37;1107 1162 11AE;
+BC38;BC38;1107 1162 11AF;BC38;1107 1162 11AF;
+BC39;BC39;1107 1162 11B0;BC39;1107 1162 11B0;
+BC3A;BC3A;1107 1162 11B1;BC3A;1107 1162 11B1;
+BC3B;BC3B;1107 1162 11B2;BC3B;1107 1162 11B2;
+BC3C;BC3C;1107 1162 11B3;BC3C;1107 1162 11B3;
+BC3D;BC3D;1107 1162 11B4;BC3D;1107 1162 11B4;
+BC3E;BC3E;1107 1162 11B5;BC3E;1107 1162 11B5;
+BC3F;BC3F;1107 1162 11B6;BC3F;1107 1162 11B6;
+BC40;BC40;1107 1162 11B7;BC40;1107 1162 11B7;
+BC41;BC41;1107 1162 11B8;BC41;1107 1162 11B8;
+BC42;BC42;1107 1162 11B9;BC42;1107 1162 11B9;
+BC43;BC43;1107 1162 11BA;BC43;1107 1162 11BA;
+BC44;BC44;1107 1162 11BB;BC44;1107 1162 11BB;
+BC45;BC45;1107 1162 11BC;BC45;1107 1162 11BC;
+BC46;BC46;1107 1162 11BD;BC46;1107 1162 11BD;
+BC47;BC47;1107 1162 11BE;BC47;1107 1162 11BE;
+BC48;BC48;1107 1162 11BF;BC48;1107 1162 11BF;
+BC49;BC49;1107 1162 11C0;BC49;1107 1162 11C0;
+BC4A;BC4A;1107 1162 11C1;BC4A;1107 1162 11C1;
+BC4B;BC4B;1107 1162 11C2;BC4B;1107 1162 11C2;
+BC4C;BC4C;1107 1163;BC4C;1107 1163;
+BC4D;BC4D;1107 1163 11A8;BC4D;1107 1163 11A8;
+BC4E;BC4E;1107 1163 11A9;BC4E;1107 1163 11A9;
+BC4F;BC4F;1107 1163 11AA;BC4F;1107 1163 11AA;
+BC50;BC50;1107 1163 11AB;BC50;1107 1163 11AB;
+BC51;BC51;1107 1163 11AC;BC51;1107 1163 11AC;
+BC52;BC52;1107 1163 11AD;BC52;1107 1163 11AD;
+BC53;BC53;1107 1163 11AE;BC53;1107 1163 11AE;
+BC54;BC54;1107 1163 11AF;BC54;1107 1163 11AF;
+BC55;BC55;1107 1163 11B0;BC55;1107 1163 11B0;
+BC56;BC56;1107 1163 11B1;BC56;1107 1163 11B1;
+BC57;BC57;1107 1163 11B2;BC57;1107 1163 11B2;
+BC58;BC58;1107 1163 11B3;BC58;1107 1163 11B3;
+BC59;BC59;1107 1163 11B4;BC59;1107 1163 11B4;
+BC5A;BC5A;1107 1163 11B5;BC5A;1107 1163 11B5;
+BC5B;BC5B;1107 1163 11B6;BC5B;1107 1163 11B6;
+BC5C;BC5C;1107 1163 11B7;BC5C;1107 1163 11B7;
+BC5D;BC5D;1107 1163 11B8;BC5D;1107 1163 11B8;
+BC5E;BC5E;1107 1163 11B9;BC5E;1107 1163 11B9;
+BC5F;BC5F;1107 1163 11BA;BC5F;1107 1163 11BA;
+BC60;BC60;1107 1163 11BB;BC60;1107 1163 11BB;
+BC61;BC61;1107 1163 11BC;BC61;1107 1163 11BC;
+BC62;BC62;1107 1163 11BD;BC62;1107 1163 11BD;
+BC63;BC63;1107 1163 11BE;BC63;1107 1163 11BE;
+BC64;BC64;1107 1163 11BF;BC64;1107 1163 11BF;
+BC65;BC65;1107 1163 11C0;BC65;1107 1163 11C0;
+BC66;BC66;1107 1163 11C1;BC66;1107 1163 11C1;
+BC67;BC67;1107 1163 11C2;BC67;1107 1163 11C2;
+BC68;BC68;1107 1164;BC68;1107 1164;
+BC69;BC69;1107 1164 11A8;BC69;1107 1164 11A8;
+BC6A;BC6A;1107 1164 11A9;BC6A;1107 1164 11A9;
+BC6B;BC6B;1107 1164 11AA;BC6B;1107 1164 11AA;
+BC6C;BC6C;1107 1164 11AB;BC6C;1107 1164 11AB;
+BC6D;BC6D;1107 1164 11AC;BC6D;1107 1164 11AC;
+BC6E;BC6E;1107 1164 11AD;BC6E;1107 1164 11AD;
+BC6F;BC6F;1107 1164 11AE;BC6F;1107 1164 11AE;
+BC70;BC70;1107 1164 11AF;BC70;1107 1164 11AF;
+BC71;BC71;1107 1164 11B0;BC71;1107 1164 11B0;
+BC72;BC72;1107 1164 11B1;BC72;1107 1164 11B1;
+BC73;BC73;1107 1164 11B2;BC73;1107 1164 11B2;
+BC74;BC74;1107 1164 11B3;BC74;1107 1164 11B3;
+BC75;BC75;1107 1164 11B4;BC75;1107 1164 11B4;
+BC76;BC76;1107 1164 11B5;BC76;1107 1164 11B5;
+BC77;BC77;1107 1164 11B6;BC77;1107 1164 11B6;
+BC78;BC78;1107 1164 11B7;BC78;1107 1164 11B7;
+BC79;BC79;1107 1164 11B8;BC79;1107 1164 11B8;
+BC7A;BC7A;1107 1164 11B9;BC7A;1107 1164 11B9;
+BC7B;BC7B;1107 1164 11BA;BC7B;1107 1164 11BA;
+BC7C;BC7C;1107 1164 11BB;BC7C;1107 1164 11BB;
+BC7D;BC7D;1107 1164 11BC;BC7D;1107 1164 11BC;
+BC7E;BC7E;1107 1164 11BD;BC7E;1107 1164 11BD;
+BC7F;BC7F;1107 1164 11BE;BC7F;1107 1164 11BE;
+BC80;BC80;1107 1164 11BF;BC80;1107 1164 11BF;
+BC81;BC81;1107 1164 11C0;BC81;1107 1164 11C0;
+BC82;BC82;1107 1164 11C1;BC82;1107 1164 11C1;
+BC83;BC83;1107 1164 11C2;BC83;1107 1164 11C2;
+BC84;BC84;1107 1165;BC84;1107 1165;
+BC85;BC85;1107 1165 11A8;BC85;1107 1165 11A8;
+BC86;BC86;1107 1165 11A9;BC86;1107 1165 11A9;
+BC87;BC87;1107 1165 11AA;BC87;1107 1165 11AA;
+BC88;BC88;1107 1165 11AB;BC88;1107 1165 11AB;
+BC89;BC89;1107 1165 11AC;BC89;1107 1165 11AC;
+BC8A;BC8A;1107 1165 11AD;BC8A;1107 1165 11AD;
+BC8B;BC8B;1107 1165 11AE;BC8B;1107 1165 11AE;
+BC8C;BC8C;1107 1165 11AF;BC8C;1107 1165 11AF;
+BC8D;BC8D;1107 1165 11B0;BC8D;1107 1165 11B0;
+BC8E;BC8E;1107 1165 11B1;BC8E;1107 1165 11B1;
+BC8F;BC8F;1107 1165 11B2;BC8F;1107 1165 11B2;
+BC90;BC90;1107 1165 11B3;BC90;1107 1165 11B3;
+BC91;BC91;1107 1165 11B4;BC91;1107 1165 11B4;
+BC92;BC92;1107 1165 11B5;BC92;1107 1165 11B5;
+BC93;BC93;1107 1165 11B6;BC93;1107 1165 11B6;
+BC94;BC94;1107 1165 11B7;BC94;1107 1165 11B7;
+BC95;BC95;1107 1165 11B8;BC95;1107 1165 11B8;
+BC96;BC96;1107 1165 11B9;BC96;1107 1165 11B9;
+BC97;BC97;1107 1165 11BA;BC97;1107 1165 11BA;
+BC98;BC98;1107 1165 11BB;BC98;1107 1165 11BB;
+BC99;BC99;1107 1165 11BC;BC99;1107 1165 11BC;
+BC9A;BC9A;1107 1165 11BD;BC9A;1107 1165 11BD;
+BC9B;BC9B;1107 1165 11BE;BC9B;1107 1165 11BE;
+BC9C;BC9C;1107 1165 11BF;BC9C;1107 1165 11BF;
+BC9D;BC9D;1107 1165 11C0;BC9D;1107 1165 11C0;
+BC9E;BC9E;1107 1165 11C1;BC9E;1107 1165 11C1;
+BC9F;BC9F;1107 1165 11C2;BC9F;1107 1165 11C2;
+BCA0;BCA0;1107 1166;BCA0;1107 1166;
+BCA1;BCA1;1107 1166 11A8;BCA1;1107 1166 11A8;
+BCA2;BCA2;1107 1166 11A9;BCA2;1107 1166 11A9;
+BCA3;BCA3;1107 1166 11AA;BCA3;1107 1166 11AA;
+BCA4;BCA4;1107 1166 11AB;BCA4;1107 1166 11AB;
+BCA5;BCA5;1107 1166 11AC;BCA5;1107 1166 11AC;
+BCA6;BCA6;1107 1166 11AD;BCA6;1107 1166 11AD;
+BCA7;BCA7;1107 1166 11AE;BCA7;1107 1166 11AE;
+BCA8;BCA8;1107 1166 11AF;BCA8;1107 1166 11AF;
+BCA9;BCA9;1107 1166 11B0;BCA9;1107 1166 11B0;
+BCAA;BCAA;1107 1166 11B1;BCAA;1107 1166 11B1;
+BCAB;BCAB;1107 1166 11B2;BCAB;1107 1166 11B2;
+BCAC;BCAC;1107 1166 11B3;BCAC;1107 1166 11B3;
+BCAD;BCAD;1107 1166 11B4;BCAD;1107 1166 11B4;
+BCAE;BCAE;1107 1166 11B5;BCAE;1107 1166 11B5;
+BCAF;BCAF;1107 1166 11B6;BCAF;1107 1166 11B6;
+BCB0;BCB0;1107 1166 11B7;BCB0;1107 1166 11B7;
+BCB1;BCB1;1107 1166 11B8;BCB1;1107 1166 11B8;
+BCB2;BCB2;1107 1166 11B9;BCB2;1107 1166 11B9;
+BCB3;BCB3;1107 1166 11BA;BCB3;1107 1166 11BA;
+BCB4;BCB4;1107 1166 11BB;BCB4;1107 1166 11BB;
+BCB5;BCB5;1107 1166 11BC;BCB5;1107 1166 11BC;
+BCB6;BCB6;1107 1166 11BD;BCB6;1107 1166 11BD;
+BCB7;BCB7;1107 1166 11BE;BCB7;1107 1166 11BE;
+BCB8;BCB8;1107 1166 11BF;BCB8;1107 1166 11BF;
+BCB9;BCB9;1107 1166 11C0;BCB9;1107 1166 11C0;
+BCBA;BCBA;1107 1166 11C1;BCBA;1107 1166 11C1;
+BCBB;BCBB;1107 1166 11C2;BCBB;1107 1166 11C2;
+BCBC;BCBC;1107 1167;BCBC;1107 1167;
+BCBD;BCBD;1107 1167 11A8;BCBD;1107 1167 11A8;
+BCBE;BCBE;1107 1167 11A9;BCBE;1107 1167 11A9;
+BCBF;BCBF;1107 1167 11AA;BCBF;1107 1167 11AA;
+BCC0;BCC0;1107 1167 11AB;BCC0;1107 1167 11AB;
+BCC1;BCC1;1107 1167 11AC;BCC1;1107 1167 11AC;
+BCC2;BCC2;1107 1167 11AD;BCC2;1107 1167 11AD;
+BCC3;BCC3;1107 1167 11AE;BCC3;1107 1167 11AE;
+BCC4;BCC4;1107 1167 11AF;BCC4;1107 1167 11AF;
+BCC5;BCC5;1107 1167 11B0;BCC5;1107 1167 11B0;
+BCC6;BCC6;1107 1167 11B1;BCC6;1107 1167 11B1;
+BCC7;BCC7;1107 1167 11B2;BCC7;1107 1167 11B2;
+BCC8;BCC8;1107 1167 11B3;BCC8;1107 1167 11B3;
+BCC9;BCC9;1107 1167 11B4;BCC9;1107 1167 11B4;
+BCCA;BCCA;1107 1167 11B5;BCCA;1107 1167 11B5;
+BCCB;BCCB;1107 1167 11B6;BCCB;1107 1167 11B6;
+BCCC;BCCC;1107 1167 11B7;BCCC;1107 1167 11B7;
+BCCD;BCCD;1107 1167 11B8;BCCD;1107 1167 11B8;
+BCCE;BCCE;1107 1167 11B9;BCCE;1107 1167 11B9;
+BCCF;BCCF;1107 1167 11BA;BCCF;1107 1167 11BA;
+BCD0;BCD0;1107 1167 11BB;BCD0;1107 1167 11BB;
+BCD1;BCD1;1107 1167 11BC;BCD1;1107 1167 11BC;
+BCD2;BCD2;1107 1167 11BD;BCD2;1107 1167 11BD;
+BCD3;BCD3;1107 1167 11BE;BCD3;1107 1167 11BE;
+BCD4;BCD4;1107 1167 11BF;BCD4;1107 1167 11BF;
+BCD5;BCD5;1107 1167 11C0;BCD5;1107 1167 11C0;
+BCD6;BCD6;1107 1167 11C1;BCD6;1107 1167 11C1;
+BCD7;BCD7;1107 1167 11C2;BCD7;1107 1167 11C2;
+BCD8;BCD8;1107 1168;BCD8;1107 1168;
+BCD9;BCD9;1107 1168 11A8;BCD9;1107 1168 11A8;
+BCDA;BCDA;1107 1168 11A9;BCDA;1107 1168 11A9;
+BCDB;BCDB;1107 1168 11AA;BCDB;1107 1168 11AA;
+BCDC;BCDC;1107 1168 11AB;BCDC;1107 1168 11AB;
+BCDD;BCDD;1107 1168 11AC;BCDD;1107 1168 11AC;
+BCDE;BCDE;1107 1168 11AD;BCDE;1107 1168 11AD;
+BCDF;BCDF;1107 1168 11AE;BCDF;1107 1168 11AE;
+BCE0;BCE0;1107 1168 11AF;BCE0;1107 1168 11AF;
+BCE1;BCE1;1107 1168 11B0;BCE1;1107 1168 11B0;
+BCE2;BCE2;1107 1168 11B1;BCE2;1107 1168 11B1;
+BCE3;BCE3;1107 1168 11B2;BCE3;1107 1168 11B2;
+BCE4;BCE4;1107 1168 11B3;BCE4;1107 1168 11B3;
+BCE5;BCE5;1107 1168 11B4;BCE5;1107 1168 11B4;
+BCE6;BCE6;1107 1168 11B5;BCE6;1107 1168 11B5;
+BCE7;BCE7;1107 1168 11B6;BCE7;1107 1168 11B6;
+BCE8;BCE8;1107 1168 11B7;BCE8;1107 1168 11B7;
+BCE9;BCE9;1107 1168 11B8;BCE9;1107 1168 11B8;
+BCEA;BCEA;1107 1168 11B9;BCEA;1107 1168 11B9;
+BCEB;BCEB;1107 1168 11BA;BCEB;1107 1168 11BA;
+BCEC;BCEC;1107 1168 11BB;BCEC;1107 1168 11BB;
+BCED;BCED;1107 1168 11BC;BCED;1107 1168 11BC;
+BCEE;BCEE;1107 1168 11BD;BCEE;1107 1168 11BD;
+BCEF;BCEF;1107 1168 11BE;BCEF;1107 1168 11BE;
+BCF0;BCF0;1107 1168 11BF;BCF0;1107 1168 11BF;
+BCF1;BCF1;1107 1168 11C0;BCF1;1107 1168 11C0;
+BCF2;BCF2;1107 1168 11C1;BCF2;1107 1168 11C1;
+BCF3;BCF3;1107 1168 11C2;BCF3;1107 1168 11C2;
+BCF4;BCF4;1107 1169;BCF4;1107 1169;
+BCF5;BCF5;1107 1169 11A8;BCF5;1107 1169 11A8;
+BCF6;BCF6;1107 1169 11A9;BCF6;1107 1169 11A9;
+BCF7;BCF7;1107 1169 11AA;BCF7;1107 1169 11AA;
+BCF8;BCF8;1107 1169 11AB;BCF8;1107 1169 11AB;
+BCF9;BCF9;1107 1169 11AC;BCF9;1107 1169 11AC;
+BCFA;BCFA;1107 1169 11AD;BCFA;1107 1169 11AD;
+BCFB;BCFB;1107 1169 11AE;BCFB;1107 1169 11AE;
+BCFC;BCFC;1107 1169 11AF;BCFC;1107 1169 11AF;
+BCFD;BCFD;1107 1169 11B0;BCFD;1107 1169 11B0;
+BCFE;BCFE;1107 1169 11B1;BCFE;1107 1169 11B1;
+BCFF;BCFF;1107 1169 11B2;BCFF;1107 1169 11B2;
+BD00;BD00;1107 1169 11B3;BD00;1107 1169 11B3;
+BD01;BD01;1107 1169 11B4;BD01;1107 1169 11B4;
+BD02;BD02;1107 1169 11B5;BD02;1107 1169 11B5;
+BD03;BD03;1107 1169 11B6;BD03;1107 1169 11B6;
+BD04;BD04;1107 1169 11B7;BD04;1107 1169 11B7;
+BD05;BD05;1107 1169 11B8;BD05;1107 1169 11B8;
+BD06;BD06;1107 1169 11B9;BD06;1107 1169 11B9;
+BD07;BD07;1107 1169 11BA;BD07;1107 1169 11BA;
+BD08;BD08;1107 1169 11BB;BD08;1107 1169 11BB;
+BD09;BD09;1107 1169 11BC;BD09;1107 1169 11BC;
+BD0A;BD0A;1107 1169 11BD;BD0A;1107 1169 11BD;
+BD0B;BD0B;1107 1169 11BE;BD0B;1107 1169 11BE;
+BD0C;BD0C;1107 1169 11BF;BD0C;1107 1169 11BF;
+BD0D;BD0D;1107 1169 11C0;BD0D;1107 1169 11C0;
+BD0E;BD0E;1107 1169 11C1;BD0E;1107 1169 11C1;
+BD0F;BD0F;1107 1169 11C2;BD0F;1107 1169 11C2;
+BD10;BD10;1107 116A;BD10;1107 116A;
+BD11;BD11;1107 116A 11A8;BD11;1107 116A 11A8;
+BD12;BD12;1107 116A 11A9;BD12;1107 116A 11A9;
+BD13;BD13;1107 116A 11AA;BD13;1107 116A 11AA;
+BD14;BD14;1107 116A 11AB;BD14;1107 116A 11AB;
+BD15;BD15;1107 116A 11AC;BD15;1107 116A 11AC;
+BD16;BD16;1107 116A 11AD;BD16;1107 116A 11AD;
+BD17;BD17;1107 116A 11AE;BD17;1107 116A 11AE;
+BD18;BD18;1107 116A 11AF;BD18;1107 116A 11AF;
+BD19;BD19;1107 116A 11B0;BD19;1107 116A 11B0;
+BD1A;BD1A;1107 116A 11B1;BD1A;1107 116A 11B1;
+BD1B;BD1B;1107 116A 11B2;BD1B;1107 116A 11B2;
+BD1C;BD1C;1107 116A 11B3;BD1C;1107 116A 11B3;
+BD1D;BD1D;1107 116A 11B4;BD1D;1107 116A 11B4;
+BD1E;BD1E;1107 116A 11B5;BD1E;1107 116A 11B5;
+BD1F;BD1F;1107 116A 11B6;BD1F;1107 116A 11B6;
+BD20;BD20;1107 116A 11B7;BD20;1107 116A 11B7;
+BD21;BD21;1107 116A 11B8;BD21;1107 116A 11B8;
+BD22;BD22;1107 116A 11B9;BD22;1107 116A 11B9;
+BD23;BD23;1107 116A 11BA;BD23;1107 116A 11BA;
+BD24;BD24;1107 116A 11BB;BD24;1107 116A 11BB;
+BD25;BD25;1107 116A 11BC;BD25;1107 116A 11BC;
+BD26;BD26;1107 116A 11BD;BD26;1107 116A 11BD;
+BD27;BD27;1107 116A 11BE;BD27;1107 116A 11BE;
+BD28;BD28;1107 116A 11BF;BD28;1107 116A 11BF;
+BD29;BD29;1107 116A 11C0;BD29;1107 116A 11C0;
+BD2A;BD2A;1107 116A 11C1;BD2A;1107 116A 11C1;
+BD2B;BD2B;1107 116A 11C2;BD2B;1107 116A 11C2;
+BD2C;BD2C;1107 116B;BD2C;1107 116B;
+BD2D;BD2D;1107 116B 11A8;BD2D;1107 116B 11A8;
+BD2E;BD2E;1107 116B 11A9;BD2E;1107 116B 11A9;
+BD2F;BD2F;1107 116B 11AA;BD2F;1107 116B 11AA;
+BD30;BD30;1107 116B 11AB;BD30;1107 116B 11AB;
+BD31;BD31;1107 116B 11AC;BD31;1107 116B 11AC;
+BD32;BD32;1107 116B 11AD;BD32;1107 116B 11AD;
+BD33;BD33;1107 116B 11AE;BD33;1107 116B 11AE;
+BD34;BD34;1107 116B 11AF;BD34;1107 116B 11AF;
+BD35;BD35;1107 116B 11B0;BD35;1107 116B 11B0;
+BD36;BD36;1107 116B 11B1;BD36;1107 116B 11B1;
+BD37;BD37;1107 116B 11B2;BD37;1107 116B 11B2;
+BD38;BD38;1107 116B 11B3;BD38;1107 116B 11B3;
+BD39;BD39;1107 116B 11B4;BD39;1107 116B 11B4;
+BD3A;BD3A;1107 116B 11B5;BD3A;1107 116B 11B5;
+BD3B;BD3B;1107 116B 11B6;BD3B;1107 116B 11B6;
+BD3C;BD3C;1107 116B 11B7;BD3C;1107 116B 11B7;
+BD3D;BD3D;1107 116B 11B8;BD3D;1107 116B 11B8;
+BD3E;BD3E;1107 116B 11B9;BD3E;1107 116B 11B9;
+BD3F;BD3F;1107 116B 11BA;BD3F;1107 116B 11BA;
+BD40;BD40;1107 116B 11BB;BD40;1107 116B 11BB;
+BD41;BD41;1107 116B 11BC;BD41;1107 116B 11BC;
+BD42;BD42;1107 116B 11BD;BD42;1107 116B 11BD;
+BD43;BD43;1107 116B 11BE;BD43;1107 116B 11BE;
+BD44;BD44;1107 116B 11BF;BD44;1107 116B 11BF;
+BD45;BD45;1107 116B 11C0;BD45;1107 116B 11C0;
+BD46;BD46;1107 116B 11C1;BD46;1107 116B 11C1;
+BD47;BD47;1107 116B 11C2;BD47;1107 116B 11C2;
+BD48;BD48;1107 116C;BD48;1107 116C;
+BD49;BD49;1107 116C 11A8;BD49;1107 116C 11A8;
+BD4A;BD4A;1107 116C 11A9;BD4A;1107 116C 11A9;
+BD4B;BD4B;1107 116C 11AA;BD4B;1107 116C 11AA;
+BD4C;BD4C;1107 116C 11AB;BD4C;1107 116C 11AB;
+BD4D;BD4D;1107 116C 11AC;BD4D;1107 116C 11AC;
+BD4E;BD4E;1107 116C 11AD;BD4E;1107 116C 11AD;
+BD4F;BD4F;1107 116C 11AE;BD4F;1107 116C 11AE;
+BD50;BD50;1107 116C 11AF;BD50;1107 116C 11AF;
+BD51;BD51;1107 116C 11B0;BD51;1107 116C 11B0;
+BD52;BD52;1107 116C 11B1;BD52;1107 116C 11B1;
+BD53;BD53;1107 116C 11B2;BD53;1107 116C 11B2;
+BD54;BD54;1107 116C 11B3;BD54;1107 116C 11B3;
+BD55;BD55;1107 116C 11B4;BD55;1107 116C 11B4;
+BD56;BD56;1107 116C 11B5;BD56;1107 116C 11B5;
+BD57;BD57;1107 116C 11B6;BD57;1107 116C 11B6;
+BD58;BD58;1107 116C 11B7;BD58;1107 116C 11B7;
+BD59;BD59;1107 116C 11B8;BD59;1107 116C 11B8;
+BD5A;BD5A;1107 116C 11B9;BD5A;1107 116C 11B9;
+BD5B;BD5B;1107 116C 11BA;BD5B;1107 116C 11BA;
+BD5C;BD5C;1107 116C 11BB;BD5C;1107 116C 11BB;
+BD5D;BD5D;1107 116C 11BC;BD5D;1107 116C 11BC;
+BD5E;BD5E;1107 116C 11BD;BD5E;1107 116C 11BD;
+BD5F;BD5F;1107 116C 11BE;BD5F;1107 116C 11BE;
+BD60;BD60;1107 116C 11BF;BD60;1107 116C 11BF;
+BD61;BD61;1107 116C 11C0;BD61;1107 116C 11C0;
+BD62;BD62;1107 116C 11C1;BD62;1107 116C 11C1;
+BD63;BD63;1107 116C 11C2;BD63;1107 116C 11C2;
+BD64;BD64;1107 116D;BD64;1107 116D;
+BD65;BD65;1107 116D 11A8;BD65;1107 116D 11A8;
+BD66;BD66;1107 116D 11A9;BD66;1107 116D 11A9;
+BD67;BD67;1107 116D 11AA;BD67;1107 116D 11AA;
+BD68;BD68;1107 116D 11AB;BD68;1107 116D 11AB;
+BD69;BD69;1107 116D 11AC;BD69;1107 116D 11AC;
+BD6A;BD6A;1107 116D 11AD;BD6A;1107 116D 11AD;
+BD6B;BD6B;1107 116D 11AE;BD6B;1107 116D 11AE;
+BD6C;BD6C;1107 116D 11AF;BD6C;1107 116D 11AF;
+BD6D;BD6D;1107 116D 11B0;BD6D;1107 116D 11B0;
+BD6E;BD6E;1107 116D 11B1;BD6E;1107 116D 11B1;
+BD6F;BD6F;1107 116D 11B2;BD6F;1107 116D 11B2;
+BD70;BD70;1107 116D 11B3;BD70;1107 116D 11B3;
+BD71;BD71;1107 116D 11B4;BD71;1107 116D 11B4;
+BD72;BD72;1107 116D 11B5;BD72;1107 116D 11B5;
+BD73;BD73;1107 116D 11B6;BD73;1107 116D 11B6;
+BD74;BD74;1107 116D 11B7;BD74;1107 116D 11B7;
+BD75;BD75;1107 116D 11B8;BD75;1107 116D 11B8;
+BD76;BD76;1107 116D 11B9;BD76;1107 116D 11B9;
+BD77;BD77;1107 116D 11BA;BD77;1107 116D 11BA;
+BD78;BD78;1107 116D 11BB;BD78;1107 116D 11BB;
+BD79;BD79;1107 116D 11BC;BD79;1107 116D 11BC;
+BD7A;BD7A;1107 116D 11BD;BD7A;1107 116D 11BD;
+BD7B;BD7B;1107 116D 11BE;BD7B;1107 116D 11BE;
+BD7C;BD7C;1107 116D 11BF;BD7C;1107 116D 11BF;
+BD7D;BD7D;1107 116D 11C0;BD7D;1107 116D 11C0;
+BD7E;BD7E;1107 116D 11C1;BD7E;1107 116D 11C1;
+BD7F;BD7F;1107 116D 11C2;BD7F;1107 116D 11C2;
+BD80;BD80;1107 116E;BD80;1107 116E;
+BD81;BD81;1107 116E 11A8;BD81;1107 116E 11A8;
+BD82;BD82;1107 116E 11A9;BD82;1107 116E 11A9;
+BD83;BD83;1107 116E 11AA;BD83;1107 116E 11AA;
+BD84;BD84;1107 116E 11AB;BD84;1107 116E 11AB;
+BD85;BD85;1107 116E 11AC;BD85;1107 116E 11AC;
+BD86;BD86;1107 116E 11AD;BD86;1107 116E 11AD;
+BD87;BD87;1107 116E 11AE;BD87;1107 116E 11AE;
+BD88;BD88;1107 116E 11AF;BD88;1107 116E 11AF;
+BD89;BD89;1107 116E 11B0;BD89;1107 116E 11B0;
+BD8A;BD8A;1107 116E 11B1;BD8A;1107 116E 11B1;
+BD8B;BD8B;1107 116E 11B2;BD8B;1107 116E 11B2;
+BD8C;BD8C;1107 116E 11B3;BD8C;1107 116E 11B3;
+BD8D;BD8D;1107 116E 11B4;BD8D;1107 116E 11B4;
+BD8E;BD8E;1107 116E 11B5;BD8E;1107 116E 11B5;
+BD8F;BD8F;1107 116E 11B6;BD8F;1107 116E 11B6;
+BD90;BD90;1107 116E 11B7;BD90;1107 116E 11B7;
+BD91;BD91;1107 116E 11B8;BD91;1107 116E 11B8;
+BD92;BD92;1107 116E 11B9;BD92;1107 116E 11B9;
+BD93;BD93;1107 116E 11BA;BD93;1107 116E 11BA;
+BD94;BD94;1107 116E 11BB;BD94;1107 116E 11BB;
+BD95;BD95;1107 116E 11BC;BD95;1107 116E 11BC;
+BD96;BD96;1107 116E 11BD;BD96;1107 116E 11BD;
+BD97;BD97;1107 116E 11BE;BD97;1107 116E 11BE;
+BD98;BD98;1107 116E 11BF;BD98;1107 116E 11BF;
+BD99;BD99;1107 116E 11C0;BD99;1107 116E 11C0;
+BD9A;BD9A;1107 116E 11C1;BD9A;1107 116E 11C1;
+BD9B;BD9B;1107 116E 11C2;BD9B;1107 116E 11C2;
+BD9C;BD9C;1107 116F;BD9C;1107 116F;
+BD9D;BD9D;1107 116F 11A8;BD9D;1107 116F 11A8;
+BD9E;BD9E;1107 116F 11A9;BD9E;1107 116F 11A9;
+BD9F;BD9F;1107 116F 11AA;BD9F;1107 116F 11AA;
+BDA0;BDA0;1107 116F 11AB;BDA0;1107 116F 11AB;
+BDA1;BDA1;1107 116F 11AC;BDA1;1107 116F 11AC;
+BDA2;BDA2;1107 116F 11AD;BDA2;1107 116F 11AD;
+BDA3;BDA3;1107 116F 11AE;BDA3;1107 116F 11AE;
+BDA4;BDA4;1107 116F 11AF;BDA4;1107 116F 11AF;
+BDA5;BDA5;1107 116F 11B0;BDA5;1107 116F 11B0;
+BDA6;BDA6;1107 116F 11B1;BDA6;1107 116F 11B1;
+BDA7;BDA7;1107 116F 11B2;BDA7;1107 116F 11B2;
+BDA8;BDA8;1107 116F 11B3;BDA8;1107 116F 11B3;
+BDA9;BDA9;1107 116F 11B4;BDA9;1107 116F 11B4;
+BDAA;BDAA;1107 116F 11B5;BDAA;1107 116F 11B5;
+BDAB;BDAB;1107 116F 11B6;BDAB;1107 116F 11B6;
+BDAC;BDAC;1107 116F 11B7;BDAC;1107 116F 11B7;
+BDAD;BDAD;1107 116F 11B8;BDAD;1107 116F 11B8;
+BDAE;BDAE;1107 116F 11B9;BDAE;1107 116F 11B9;
+BDAF;BDAF;1107 116F 11BA;BDAF;1107 116F 11BA;
+BDB0;BDB0;1107 116F 11BB;BDB0;1107 116F 11BB;
+BDB1;BDB1;1107 116F 11BC;BDB1;1107 116F 11BC;
+BDB2;BDB2;1107 116F 11BD;BDB2;1107 116F 11BD;
+BDB3;BDB3;1107 116F 11BE;BDB3;1107 116F 11BE;
+BDB4;BDB4;1107 116F 11BF;BDB4;1107 116F 11BF;
+BDB5;BDB5;1107 116F 11C0;BDB5;1107 116F 11C0;
+BDB6;BDB6;1107 116F 11C1;BDB6;1107 116F 11C1;
+BDB7;BDB7;1107 116F 11C2;BDB7;1107 116F 11C2;
+BDB8;BDB8;1107 1170;BDB8;1107 1170;
+BDB9;BDB9;1107 1170 11A8;BDB9;1107 1170 11A8;
+BDBA;BDBA;1107 1170 11A9;BDBA;1107 1170 11A9;
+BDBB;BDBB;1107 1170 11AA;BDBB;1107 1170 11AA;
+BDBC;BDBC;1107 1170 11AB;BDBC;1107 1170 11AB;
+BDBD;BDBD;1107 1170 11AC;BDBD;1107 1170 11AC;
+BDBE;BDBE;1107 1170 11AD;BDBE;1107 1170 11AD;
+BDBF;BDBF;1107 1170 11AE;BDBF;1107 1170 11AE;
+BDC0;BDC0;1107 1170 11AF;BDC0;1107 1170 11AF;
+BDC1;BDC1;1107 1170 11B0;BDC1;1107 1170 11B0;
+BDC2;BDC2;1107 1170 11B1;BDC2;1107 1170 11B1;
+BDC3;BDC3;1107 1170 11B2;BDC3;1107 1170 11B2;
+BDC4;BDC4;1107 1170 11B3;BDC4;1107 1170 11B3;
+BDC5;BDC5;1107 1170 11B4;BDC5;1107 1170 11B4;
+BDC6;BDC6;1107 1170 11B5;BDC6;1107 1170 11B5;
+BDC7;BDC7;1107 1170 11B6;BDC7;1107 1170 11B6;
+BDC8;BDC8;1107 1170 11B7;BDC8;1107 1170 11B7;
+BDC9;BDC9;1107 1170 11B8;BDC9;1107 1170 11B8;
+BDCA;BDCA;1107 1170 11B9;BDCA;1107 1170 11B9;
+BDCB;BDCB;1107 1170 11BA;BDCB;1107 1170 11BA;
+BDCC;BDCC;1107 1170 11BB;BDCC;1107 1170 11BB;
+BDCD;BDCD;1107 1170 11BC;BDCD;1107 1170 11BC;
+BDCE;BDCE;1107 1170 11BD;BDCE;1107 1170 11BD;
+BDCF;BDCF;1107 1170 11BE;BDCF;1107 1170 11BE;
+BDD0;BDD0;1107 1170 11BF;BDD0;1107 1170 11BF;
+BDD1;BDD1;1107 1170 11C0;BDD1;1107 1170 11C0;
+BDD2;BDD2;1107 1170 11C1;BDD2;1107 1170 11C1;
+BDD3;BDD3;1107 1170 11C2;BDD3;1107 1170 11C2;
+BDD4;BDD4;1107 1171;BDD4;1107 1171;
+BDD5;BDD5;1107 1171 11A8;BDD5;1107 1171 11A8;
+BDD6;BDD6;1107 1171 11A9;BDD6;1107 1171 11A9;
+BDD7;BDD7;1107 1171 11AA;BDD7;1107 1171 11AA;
+BDD8;BDD8;1107 1171 11AB;BDD8;1107 1171 11AB;
+BDD9;BDD9;1107 1171 11AC;BDD9;1107 1171 11AC;
+BDDA;BDDA;1107 1171 11AD;BDDA;1107 1171 11AD;
+BDDB;BDDB;1107 1171 11AE;BDDB;1107 1171 11AE;
+BDDC;BDDC;1107 1171 11AF;BDDC;1107 1171 11AF;
+BDDD;BDDD;1107 1171 11B0;BDDD;1107 1171 11B0;
+BDDE;BDDE;1107 1171 11B1;BDDE;1107 1171 11B1;
+BDDF;BDDF;1107 1171 11B2;BDDF;1107 1171 11B2;
+BDE0;BDE0;1107 1171 11B3;BDE0;1107 1171 11B3;
+BDE1;BDE1;1107 1171 11B4;BDE1;1107 1171 11B4;
+BDE2;BDE2;1107 1171 11B5;BDE2;1107 1171 11B5;
+BDE3;BDE3;1107 1171 11B6;BDE3;1107 1171 11B6;
+BDE4;BDE4;1107 1171 11B7;BDE4;1107 1171 11B7;
+BDE5;BDE5;1107 1171 11B8;BDE5;1107 1171 11B8;
+BDE6;BDE6;1107 1171 11B9;BDE6;1107 1171 11B9;
+BDE7;BDE7;1107 1171 11BA;BDE7;1107 1171 11BA;
+BDE8;BDE8;1107 1171 11BB;BDE8;1107 1171 11BB;
+BDE9;BDE9;1107 1171 11BC;BDE9;1107 1171 11BC;
+BDEA;BDEA;1107 1171 11BD;BDEA;1107 1171 11BD;
+BDEB;BDEB;1107 1171 11BE;BDEB;1107 1171 11BE;
+BDEC;BDEC;1107 1171 11BF;BDEC;1107 1171 11BF;
+BDED;BDED;1107 1171 11C0;BDED;1107 1171 11C0;
+BDEE;BDEE;1107 1171 11C1;BDEE;1107 1171 11C1;
+BDEF;BDEF;1107 1171 11C2;BDEF;1107 1171 11C2;
+BDF0;BDF0;1107 1172;BDF0;1107 1172;
+BDF1;BDF1;1107 1172 11A8;BDF1;1107 1172 11A8;
+BDF2;BDF2;1107 1172 11A9;BDF2;1107 1172 11A9;
+BDF3;BDF3;1107 1172 11AA;BDF3;1107 1172 11AA;
+BDF4;BDF4;1107 1172 11AB;BDF4;1107 1172 11AB;
+BDF5;BDF5;1107 1172 11AC;BDF5;1107 1172 11AC;
+BDF6;BDF6;1107 1172 11AD;BDF6;1107 1172 11AD;
+BDF7;BDF7;1107 1172 11AE;BDF7;1107 1172 11AE;
+BDF8;BDF8;1107 1172 11AF;BDF8;1107 1172 11AF;
+BDF9;BDF9;1107 1172 11B0;BDF9;1107 1172 11B0;
+BDFA;BDFA;1107 1172 11B1;BDFA;1107 1172 11B1;
+BDFB;BDFB;1107 1172 11B2;BDFB;1107 1172 11B2;
+BDFC;BDFC;1107 1172 11B3;BDFC;1107 1172 11B3;
+BDFD;BDFD;1107 1172 11B4;BDFD;1107 1172 11B4;
+BDFE;BDFE;1107 1172 11B5;BDFE;1107 1172 11B5;
+BDFF;BDFF;1107 1172 11B6;BDFF;1107 1172 11B6;
+BE00;BE00;1107 1172 11B7;BE00;1107 1172 11B7;
+BE01;BE01;1107 1172 11B8;BE01;1107 1172 11B8;
+BE02;BE02;1107 1172 11B9;BE02;1107 1172 11B9;
+BE03;BE03;1107 1172 11BA;BE03;1107 1172 11BA;
+BE04;BE04;1107 1172 11BB;BE04;1107 1172 11BB;
+BE05;BE05;1107 1172 11BC;BE05;1107 1172 11BC;
+BE06;BE06;1107 1172 11BD;BE06;1107 1172 11BD;
+BE07;BE07;1107 1172 11BE;BE07;1107 1172 11BE;
+BE08;BE08;1107 1172 11BF;BE08;1107 1172 11BF;
+BE09;BE09;1107 1172 11C0;BE09;1107 1172 11C0;
+BE0A;BE0A;1107 1172 11C1;BE0A;1107 1172 11C1;
+BE0B;BE0B;1107 1172 11C2;BE0B;1107 1172 11C2;
+BE0C;BE0C;1107 1173;BE0C;1107 1173;
+BE0D;BE0D;1107 1173 11A8;BE0D;1107 1173 11A8;
+BE0E;BE0E;1107 1173 11A9;BE0E;1107 1173 11A9;
+BE0F;BE0F;1107 1173 11AA;BE0F;1107 1173 11AA;
+BE10;BE10;1107 1173 11AB;BE10;1107 1173 11AB;
+BE11;BE11;1107 1173 11AC;BE11;1107 1173 11AC;
+BE12;BE12;1107 1173 11AD;BE12;1107 1173 11AD;
+BE13;BE13;1107 1173 11AE;BE13;1107 1173 11AE;
+BE14;BE14;1107 1173 11AF;BE14;1107 1173 11AF;
+BE15;BE15;1107 1173 11B0;BE15;1107 1173 11B0;
+BE16;BE16;1107 1173 11B1;BE16;1107 1173 11B1;
+BE17;BE17;1107 1173 11B2;BE17;1107 1173 11B2;
+BE18;BE18;1107 1173 11B3;BE18;1107 1173 11B3;
+BE19;BE19;1107 1173 11B4;BE19;1107 1173 11B4;
+BE1A;BE1A;1107 1173 11B5;BE1A;1107 1173 11B5;
+BE1B;BE1B;1107 1173 11B6;BE1B;1107 1173 11B6;
+BE1C;BE1C;1107 1173 11B7;BE1C;1107 1173 11B7;
+BE1D;BE1D;1107 1173 11B8;BE1D;1107 1173 11B8;
+BE1E;BE1E;1107 1173 11B9;BE1E;1107 1173 11B9;
+BE1F;BE1F;1107 1173 11BA;BE1F;1107 1173 11BA;
+BE20;BE20;1107 1173 11BB;BE20;1107 1173 11BB;
+BE21;BE21;1107 1173 11BC;BE21;1107 1173 11BC;
+BE22;BE22;1107 1173 11BD;BE22;1107 1173 11BD;
+BE23;BE23;1107 1173 11BE;BE23;1107 1173 11BE;
+BE24;BE24;1107 1173 11BF;BE24;1107 1173 11BF;
+BE25;BE25;1107 1173 11C0;BE25;1107 1173 11C0;
+BE26;BE26;1107 1173 11C1;BE26;1107 1173 11C1;
+BE27;BE27;1107 1173 11C2;BE27;1107 1173 11C2;
+BE28;BE28;1107 1174;BE28;1107 1174;
+BE29;BE29;1107 1174 11A8;BE29;1107 1174 11A8;
+BE2A;BE2A;1107 1174 11A9;BE2A;1107 1174 11A9;
+BE2B;BE2B;1107 1174 11AA;BE2B;1107 1174 11AA;
+BE2C;BE2C;1107 1174 11AB;BE2C;1107 1174 11AB;
+BE2D;BE2D;1107 1174 11AC;BE2D;1107 1174 11AC;
+BE2E;BE2E;1107 1174 11AD;BE2E;1107 1174 11AD;
+BE2F;BE2F;1107 1174 11AE;BE2F;1107 1174 11AE;
+BE30;BE30;1107 1174 11AF;BE30;1107 1174 11AF;
+BE31;BE31;1107 1174 11B0;BE31;1107 1174 11B0;
+BE32;BE32;1107 1174 11B1;BE32;1107 1174 11B1;
+BE33;BE33;1107 1174 11B2;BE33;1107 1174 11B2;
+BE34;BE34;1107 1174 11B3;BE34;1107 1174 11B3;
+BE35;BE35;1107 1174 11B4;BE35;1107 1174 11B4;
+BE36;BE36;1107 1174 11B5;BE36;1107 1174 11B5;
+BE37;BE37;1107 1174 11B6;BE37;1107 1174 11B6;
+BE38;BE38;1107 1174 11B7;BE38;1107 1174 11B7;
+BE39;BE39;1107 1174 11B8;BE39;1107 1174 11B8;
+BE3A;BE3A;1107 1174 11B9;BE3A;1107 1174 11B9;
+BE3B;BE3B;1107 1174 11BA;BE3B;1107 1174 11BA;
+BE3C;BE3C;1107 1174 11BB;BE3C;1107 1174 11BB;
+BE3D;BE3D;1107 1174 11BC;BE3D;1107 1174 11BC;
+BE3E;BE3E;1107 1174 11BD;BE3E;1107 1174 11BD;
+BE3F;BE3F;1107 1174 11BE;BE3F;1107 1174 11BE;
+BE40;BE40;1107 1174 11BF;BE40;1107 1174 11BF;
+BE41;BE41;1107 1174 11C0;BE41;1107 1174 11C0;
+BE42;BE42;1107 1174 11C1;BE42;1107 1174 11C1;
+BE43;BE43;1107 1174 11C2;BE43;1107 1174 11C2;
+BE44;BE44;1107 1175;BE44;1107 1175;
+BE45;BE45;1107 1175 11A8;BE45;1107 1175 11A8;
+BE46;BE46;1107 1175 11A9;BE46;1107 1175 11A9;
+BE47;BE47;1107 1175 11AA;BE47;1107 1175 11AA;
+BE48;BE48;1107 1175 11AB;BE48;1107 1175 11AB;
+BE49;BE49;1107 1175 11AC;BE49;1107 1175 11AC;
+BE4A;BE4A;1107 1175 11AD;BE4A;1107 1175 11AD;
+BE4B;BE4B;1107 1175 11AE;BE4B;1107 1175 11AE;
+BE4C;BE4C;1107 1175 11AF;BE4C;1107 1175 11AF;
+BE4D;BE4D;1107 1175 11B0;BE4D;1107 1175 11B0;
+BE4E;BE4E;1107 1175 11B1;BE4E;1107 1175 11B1;
+BE4F;BE4F;1107 1175 11B2;BE4F;1107 1175 11B2;
+BE50;BE50;1107 1175 11B3;BE50;1107 1175 11B3;
+BE51;BE51;1107 1175 11B4;BE51;1107 1175 11B4;
+BE52;BE52;1107 1175 11B5;BE52;1107 1175 11B5;
+BE53;BE53;1107 1175 11B6;BE53;1107 1175 11B6;
+BE54;BE54;1107 1175 11B7;BE54;1107 1175 11B7;
+BE55;BE55;1107 1175 11B8;BE55;1107 1175 11B8;
+BE56;BE56;1107 1175 11B9;BE56;1107 1175 11B9;
+BE57;BE57;1107 1175 11BA;BE57;1107 1175 11BA;
+BE58;BE58;1107 1175 11BB;BE58;1107 1175 11BB;
+BE59;BE59;1107 1175 11BC;BE59;1107 1175 11BC;
+BE5A;BE5A;1107 1175 11BD;BE5A;1107 1175 11BD;
+BE5B;BE5B;1107 1175 11BE;BE5B;1107 1175 11BE;
+BE5C;BE5C;1107 1175 11BF;BE5C;1107 1175 11BF;
+BE5D;BE5D;1107 1175 11C0;BE5D;1107 1175 11C0;
+BE5E;BE5E;1107 1175 11C1;BE5E;1107 1175 11C1;
+BE5F;BE5F;1107 1175 11C2;BE5F;1107 1175 11C2;
+BE60;BE60;1108 1161;BE60;1108 1161;
+BE61;BE61;1108 1161 11A8;BE61;1108 1161 11A8;
+BE62;BE62;1108 1161 11A9;BE62;1108 1161 11A9;
+BE63;BE63;1108 1161 11AA;BE63;1108 1161 11AA;
+BE64;BE64;1108 1161 11AB;BE64;1108 1161 11AB;
+BE65;BE65;1108 1161 11AC;BE65;1108 1161 11AC;
+BE66;BE66;1108 1161 11AD;BE66;1108 1161 11AD;
+BE67;BE67;1108 1161 11AE;BE67;1108 1161 11AE;
+BE68;BE68;1108 1161 11AF;BE68;1108 1161 11AF;
+BE69;BE69;1108 1161 11B0;BE69;1108 1161 11B0;
+BE6A;BE6A;1108 1161 11B1;BE6A;1108 1161 11B1;
+BE6B;BE6B;1108 1161 11B2;BE6B;1108 1161 11B2;
+BE6C;BE6C;1108 1161 11B3;BE6C;1108 1161 11B3;
+BE6D;BE6D;1108 1161 11B4;BE6D;1108 1161 11B4;
+BE6E;BE6E;1108 1161 11B5;BE6E;1108 1161 11B5;
+BE6F;BE6F;1108 1161 11B6;BE6F;1108 1161 11B6;
+BE70;BE70;1108 1161 11B7;BE70;1108 1161 11B7;
+BE71;BE71;1108 1161 11B8;BE71;1108 1161 11B8;
+BE72;BE72;1108 1161 11B9;BE72;1108 1161 11B9;
+BE73;BE73;1108 1161 11BA;BE73;1108 1161 11BA;
+BE74;BE74;1108 1161 11BB;BE74;1108 1161 11BB;
+BE75;BE75;1108 1161 11BC;BE75;1108 1161 11BC;
+BE76;BE76;1108 1161 11BD;BE76;1108 1161 11BD;
+BE77;BE77;1108 1161 11BE;BE77;1108 1161 11BE;
+BE78;BE78;1108 1161 11BF;BE78;1108 1161 11BF;
+BE79;BE79;1108 1161 11C0;BE79;1108 1161 11C0;
+BE7A;BE7A;1108 1161 11C1;BE7A;1108 1161 11C1;
+BE7B;BE7B;1108 1161 11C2;BE7B;1108 1161 11C2;
+BE7C;BE7C;1108 1162;BE7C;1108 1162;
+BE7D;BE7D;1108 1162 11A8;BE7D;1108 1162 11A8;
+BE7E;BE7E;1108 1162 11A9;BE7E;1108 1162 11A9;
+BE7F;BE7F;1108 1162 11AA;BE7F;1108 1162 11AA;
+BE80;BE80;1108 1162 11AB;BE80;1108 1162 11AB;
+BE81;BE81;1108 1162 11AC;BE81;1108 1162 11AC;
+BE82;BE82;1108 1162 11AD;BE82;1108 1162 11AD;
+BE83;BE83;1108 1162 11AE;BE83;1108 1162 11AE;
+BE84;BE84;1108 1162 11AF;BE84;1108 1162 11AF;
+BE85;BE85;1108 1162 11B0;BE85;1108 1162 11B0;
+BE86;BE86;1108 1162 11B1;BE86;1108 1162 11B1;
+BE87;BE87;1108 1162 11B2;BE87;1108 1162 11B2;
+BE88;BE88;1108 1162 11B3;BE88;1108 1162 11B3;
+BE89;BE89;1108 1162 11B4;BE89;1108 1162 11B4;
+BE8A;BE8A;1108 1162 11B5;BE8A;1108 1162 11B5;
+BE8B;BE8B;1108 1162 11B6;BE8B;1108 1162 11B6;
+BE8C;BE8C;1108 1162 11B7;BE8C;1108 1162 11B7;
+BE8D;BE8D;1108 1162 11B8;BE8D;1108 1162 11B8;
+BE8E;BE8E;1108 1162 11B9;BE8E;1108 1162 11B9;
+BE8F;BE8F;1108 1162 11BA;BE8F;1108 1162 11BA;
+BE90;BE90;1108 1162 11BB;BE90;1108 1162 11BB;
+BE91;BE91;1108 1162 11BC;BE91;1108 1162 11BC;
+BE92;BE92;1108 1162 11BD;BE92;1108 1162 11BD;
+BE93;BE93;1108 1162 11BE;BE93;1108 1162 11BE;
+BE94;BE94;1108 1162 11BF;BE94;1108 1162 11BF;
+BE95;BE95;1108 1162 11C0;BE95;1108 1162 11C0;
+BE96;BE96;1108 1162 11C1;BE96;1108 1162 11C1;
+BE97;BE97;1108 1162 11C2;BE97;1108 1162 11C2;
+BE98;BE98;1108 1163;BE98;1108 1163;
+BE99;BE99;1108 1163 11A8;BE99;1108 1163 11A8;
+BE9A;BE9A;1108 1163 11A9;BE9A;1108 1163 11A9;
+BE9B;BE9B;1108 1163 11AA;BE9B;1108 1163 11AA;
+BE9C;BE9C;1108 1163 11AB;BE9C;1108 1163 11AB;
+BE9D;BE9D;1108 1163 11AC;BE9D;1108 1163 11AC;
+BE9E;BE9E;1108 1163 11AD;BE9E;1108 1163 11AD;
+BE9F;BE9F;1108 1163 11AE;BE9F;1108 1163 11AE;
+BEA0;BEA0;1108 1163 11AF;BEA0;1108 1163 11AF;
+BEA1;BEA1;1108 1163 11B0;BEA1;1108 1163 11B0;
+BEA2;BEA2;1108 1163 11B1;BEA2;1108 1163 11B1;
+BEA3;BEA3;1108 1163 11B2;BEA3;1108 1163 11B2;
+BEA4;BEA4;1108 1163 11B3;BEA4;1108 1163 11B3;
+BEA5;BEA5;1108 1163 11B4;BEA5;1108 1163 11B4;
+BEA6;BEA6;1108 1163 11B5;BEA6;1108 1163 11B5;
+BEA7;BEA7;1108 1163 11B6;BEA7;1108 1163 11B6;
+BEA8;BEA8;1108 1163 11B7;BEA8;1108 1163 11B7;
+BEA9;BEA9;1108 1163 11B8;BEA9;1108 1163 11B8;
+BEAA;BEAA;1108 1163 11B9;BEAA;1108 1163 11B9;
+BEAB;BEAB;1108 1163 11BA;BEAB;1108 1163 11BA;
+BEAC;BEAC;1108 1163 11BB;BEAC;1108 1163 11BB;
+BEAD;BEAD;1108 1163 11BC;BEAD;1108 1163 11BC;
+BEAE;BEAE;1108 1163 11BD;BEAE;1108 1163 11BD;
+BEAF;BEAF;1108 1163 11BE;BEAF;1108 1163 11BE;
+BEB0;BEB0;1108 1163 11BF;BEB0;1108 1163 11BF;
+BEB1;BEB1;1108 1163 11C0;BEB1;1108 1163 11C0;
+BEB2;BEB2;1108 1163 11C1;BEB2;1108 1163 11C1;
+BEB3;BEB3;1108 1163 11C2;BEB3;1108 1163 11C2;
+BEB4;BEB4;1108 1164;BEB4;1108 1164;
+BEB5;BEB5;1108 1164 11A8;BEB5;1108 1164 11A8;
+BEB6;BEB6;1108 1164 11A9;BEB6;1108 1164 11A9;
+BEB7;BEB7;1108 1164 11AA;BEB7;1108 1164 11AA;
+BEB8;BEB8;1108 1164 11AB;BEB8;1108 1164 11AB;
+BEB9;BEB9;1108 1164 11AC;BEB9;1108 1164 11AC;
+BEBA;BEBA;1108 1164 11AD;BEBA;1108 1164 11AD;
+BEBB;BEBB;1108 1164 11AE;BEBB;1108 1164 11AE;
+BEBC;BEBC;1108 1164 11AF;BEBC;1108 1164 11AF;
+BEBD;BEBD;1108 1164 11B0;BEBD;1108 1164 11B0;
+BEBE;BEBE;1108 1164 11B1;BEBE;1108 1164 11B1;
+BEBF;BEBF;1108 1164 11B2;BEBF;1108 1164 11B2;
+BEC0;BEC0;1108 1164 11B3;BEC0;1108 1164 11B3;
+BEC1;BEC1;1108 1164 11B4;BEC1;1108 1164 11B4;
+BEC2;BEC2;1108 1164 11B5;BEC2;1108 1164 11B5;
+BEC3;BEC3;1108 1164 11B6;BEC3;1108 1164 11B6;
+BEC4;BEC4;1108 1164 11B7;BEC4;1108 1164 11B7;
+BEC5;BEC5;1108 1164 11B8;BEC5;1108 1164 11B8;
+BEC6;BEC6;1108 1164 11B9;BEC6;1108 1164 11B9;
+BEC7;BEC7;1108 1164 11BA;BEC7;1108 1164 11BA;
+BEC8;BEC8;1108 1164 11BB;BEC8;1108 1164 11BB;
+BEC9;BEC9;1108 1164 11BC;BEC9;1108 1164 11BC;
+BECA;BECA;1108 1164 11BD;BECA;1108 1164 11BD;
+BECB;BECB;1108 1164 11BE;BECB;1108 1164 11BE;
+BECC;BECC;1108 1164 11BF;BECC;1108 1164 11BF;
+BECD;BECD;1108 1164 11C0;BECD;1108 1164 11C0;
+BECE;BECE;1108 1164 11C1;BECE;1108 1164 11C1;
+BECF;BECF;1108 1164 11C2;BECF;1108 1164 11C2;
+BED0;BED0;1108 1165;BED0;1108 1165;
+BED1;BED1;1108 1165 11A8;BED1;1108 1165 11A8;
+BED2;BED2;1108 1165 11A9;BED2;1108 1165 11A9;
+BED3;BED3;1108 1165 11AA;BED3;1108 1165 11AA;
+BED4;BED4;1108 1165 11AB;BED4;1108 1165 11AB;
+BED5;BED5;1108 1165 11AC;BED5;1108 1165 11AC;
+BED6;BED6;1108 1165 11AD;BED6;1108 1165 11AD;
+BED7;BED7;1108 1165 11AE;BED7;1108 1165 11AE;
+BED8;BED8;1108 1165 11AF;BED8;1108 1165 11AF;
+BED9;BED9;1108 1165 11B0;BED9;1108 1165 11B0;
+BEDA;BEDA;1108 1165 11B1;BEDA;1108 1165 11B1;
+BEDB;BEDB;1108 1165 11B2;BEDB;1108 1165 11B2;
+BEDC;BEDC;1108 1165 11B3;BEDC;1108 1165 11B3;
+BEDD;BEDD;1108 1165 11B4;BEDD;1108 1165 11B4;
+BEDE;BEDE;1108 1165 11B5;BEDE;1108 1165 11B5;
+BEDF;BEDF;1108 1165 11B6;BEDF;1108 1165 11B6;
+BEE0;BEE0;1108 1165 11B7;BEE0;1108 1165 11B7;
+BEE1;BEE1;1108 1165 11B8;BEE1;1108 1165 11B8;
+BEE2;BEE2;1108 1165 11B9;BEE2;1108 1165 11B9;
+BEE3;BEE3;1108 1165 11BA;BEE3;1108 1165 11BA;
+BEE4;BEE4;1108 1165 11BB;BEE4;1108 1165 11BB;
+BEE5;BEE5;1108 1165 11BC;BEE5;1108 1165 11BC;
+BEE6;BEE6;1108 1165 11BD;BEE6;1108 1165 11BD;
+BEE7;BEE7;1108 1165 11BE;BEE7;1108 1165 11BE;
+BEE8;BEE8;1108 1165 11BF;BEE8;1108 1165 11BF;
+BEE9;BEE9;1108 1165 11C0;BEE9;1108 1165 11C0;
+BEEA;BEEA;1108 1165 11C1;BEEA;1108 1165 11C1;
+BEEB;BEEB;1108 1165 11C2;BEEB;1108 1165 11C2;
+BEEC;BEEC;1108 1166;BEEC;1108 1166;
+BEED;BEED;1108 1166 11A8;BEED;1108 1166 11A8;
+BEEE;BEEE;1108 1166 11A9;BEEE;1108 1166 11A9;
+BEEF;BEEF;1108 1166 11AA;BEEF;1108 1166 11AA;
+BEF0;BEF0;1108 1166 11AB;BEF0;1108 1166 11AB;
+BEF1;BEF1;1108 1166 11AC;BEF1;1108 1166 11AC;
+BEF2;BEF2;1108 1166 11AD;BEF2;1108 1166 11AD;
+BEF3;BEF3;1108 1166 11AE;BEF3;1108 1166 11AE;
+BEF4;BEF4;1108 1166 11AF;BEF4;1108 1166 11AF;
+BEF5;BEF5;1108 1166 11B0;BEF5;1108 1166 11B0;
+BEF6;BEF6;1108 1166 11B1;BEF6;1108 1166 11B1;
+BEF7;BEF7;1108 1166 11B2;BEF7;1108 1166 11B2;
+BEF8;BEF8;1108 1166 11B3;BEF8;1108 1166 11B3;
+BEF9;BEF9;1108 1166 11B4;BEF9;1108 1166 11B4;
+BEFA;BEFA;1108 1166 11B5;BEFA;1108 1166 11B5;
+BEFB;BEFB;1108 1166 11B6;BEFB;1108 1166 11B6;
+BEFC;BEFC;1108 1166 11B7;BEFC;1108 1166 11B7;
+BEFD;BEFD;1108 1166 11B8;BEFD;1108 1166 11B8;
+BEFE;BEFE;1108 1166 11B9;BEFE;1108 1166 11B9;
+BEFF;BEFF;1108 1166 11BA;BEFF;1108 1166 11BA;
+BF00;BF00;1108 1166 11BB;BF00;1108 1166 11BB;
+BF01;BF01;1108 1166 11BC;BF01;1108 1166 11BC;
+BF02;BF02;1108 1166 11BD;BF02;1108 1166 11BD;
+BF03;BF03;1108 1166 11BE;BF03;1108 1166 11BE;
+BF04;BF04;1108 1166 11BF;BF04;1108 1166 11BF;
+BF05;BF05;1108 1166 11C0;BF05;1108 1166 11C0;
+BF06;BF06;1108 1166 11C1;BF06;1108 1166 11C1;
+BF07;BF07;1108 1166 11C2;BF07;1108 1166 11C2;
+BF08;BF08;1108 1167;BF08;1108 1167;
+BF09;BF09;1108 1167 11A8;BF09;1108 1167 11A8;
+BF0A;BF0A;1108 1167 11A9;BF0A;1108 1167 11A9;
+BF0B;BF0B;1108 1167 11AA;BF0B;1108 1167 11AA;
+BF0C;BF0C;1108 1167 11AB;BF0C;1108 1167 11AB;
+BF0D;BF0D;1108 1167 11AC;BF0D;1108 1167 11AC;
+BF0E;BF0E;1108 1167 11AD;BF0E;1108 1167 11AD;
+BF0F;BF0F;1108 1167 11AE;BF0F;1108 1167 11AE;
+BF10;BF10;1108 1167 11AF;BF10;1108 1167 11AF;
+BF11;BF11;1108 1167 11B0;BF11;1108 1167 11B0;
+BF12;BF12;1108 1167 11B1;BF12;1108 1167 11B1;
+BF13;BF13;1108 1167 11B2;BF13;1108 1167 11B2;
+BF14;BF14;1108 1167 11B3;BF14;1108 1167 11B3;
+BF15;BF15;1108 1167 11B4;BF15;1108 1167 11B4;
+BF16;BF16;1108 1167 11B5;BF16;1108 1167 11B5;
+BF17;BF17;1108 1167 11B6;BF17;1108 1167 11B6;
+BF18;BF18;1108 1167 11B7;BF18;1108 1167 11B7;
+BF19;BF19;1108 1167 11B8;BF19;1108 1167 11B8;
+BF1A;BF1A;1108 1167 11B9;BF1A;1108 1167 11B9;
+BF1B;BF1B;1108 1167 11BA;BF1B;1108 1167 11BA;
+BF1C;BF1C;1108 1167 11BB;BF1C;1108 1167 11BB;
+BF1D;BF1D;1108 1167 11BC;BF1D;1108 1167 11BC;
+BF1E;BF1E;1108 1167 11BD;BF1E;1108 1167 11BD;
+BF1F;BF1F;1108 1167 11BE;BF1F;1108 1167 11BE;
+BF20;BF20;1108 1167 11BF;BF20;1108 1167 11BF;
+BF21;BF21;1108 1167 11C0;BF21;1108 1167 11C0;
+BF22;BF22;1108 1167 11C1;BF22;1108 1167 11C1;
+BF23;BF23;1108 1167 11C2;BF23;1108 1167 11C2;
+BF24;BF24;1108 1168;BF24;1108 1168;
+BF25;BF25;1108 1168 11A8;BF25;1108 1168 11A8;
+BF26;BF26;1108 1168 11A9;BF26;1108 1168 11A9;
+BF27;BF27;1108 1168 11AA;BF27;1108 1168 11AA;
+BF28;BF28;1108 1168 11AB;BF28;1108 1168 11AB;
+BF29;BF29;1108 1168 11AC;BF29;1108 1168 11AC;
+BF2A;BF2A;1108 1168 11AD;BF2A;1108 1168 11AD;
+BF2B;BF2B;1108 1168 11AE;BF2B;1108 1168 11AE;
+BF2C;BF2C;1108 1168 11AF;BF2C;1108 1168 11AF;
+BF2D;BF2D;1108 1168 11B0;BF2D;1108 1168 11B0;
+BF2E;BF2E;1108 1168 11B1;BF2E;1108 1168 11B1;
+BF2F;BF2F;1108 1168 11B2;BF2F;1108 1168 11B2;
+BF30;BF30;1108 1168 11B3;BF30;1108 1168 11B3;
+BF31;BF31;1108 1168 11B4;BF31;1108 1168 11B4;
+BF32;BF32;1108 1168 11B5;BF32;1108 1168 11B5;
+BF33;BF33;1108 1168 11B6;BF33;1108 1168 11B6;
+BF34;BF34;1108 1168 11B7;BF34;1108 1168 11B7;
+BF35;BF35;1108 1168 11B8;BF35;1108 1168 11B8;
+BF36;BF36;1108 1168 11B9;BF36;1108 1168 11B9;
+BF37;BF37;1108 1168 11BA;BF37;1108 1168 11BA;
+BF38;BF38;1108 1168 11BB;BF38;1108 1168 11BB;
+BF39;BF39;1108 1168 11BC;BF39;1108 1168 11BC;
+BF3A;BF3A;1108 1168 11BD;BF3A;1108 1168 11BD;
+BF3B;BF3B;1108 1168 11BE;BF3B;1108 1168 11BE;
+BF3C;BF3C;1108 1168 11BF;BF3C;1108 1168 11BF;
+BF3D;BF3D;1108 1168 11C0;BF3D;1108 1168 11C0;
+BF3E;BF3E;1108 1168 11C1;BF3E;1108 1168 11C1;
+BF3F;BF3F;1108 1168 11C2;BF3F;1108 1168 11C2;
+BF40;BF40;1108 1169;BF40;1108 1169;
+BF41;BF41;1108 1169 11A8;BF41;1108 1169 11A8;
+BF42;BF42;1108 1169 11A9;BF42;1108 1169 11A9;
+BF43;BF43;1108 1169 11AA;BF43;1108 1169 11AA;
+BF44;BF44;1108 1169 11AB;BF44;1108 1169 11AB;
+BF45;BF45;1108 1169 11AC;BF45;1108 1169 11AC;
+BF46;BF46;1108 1169 11AD;BF46;1108 1169 11AD;
+BF47;BF47;1108 1169 11AE;BF47;1108 1169 11AE;
+BF48;BF48;1108 1169 11AF;BF48;1108 1169 11AF;
+BF49;BF49;1108 1169 11B0;BF49;1108 1169 11B0;
+BF4A;BF4A;1108 1169 11B1;BF4A;1108 1169 11B1;
+BF4B;BF4B;1108 1169 11B2;BF4B;1108 1169 11B2;
+BF4C;BF4C;1108 1169 11B3;BF4C;1108 1169 11B3;
+BF4D;BF4D;1108 1169 11B4;BF4D;1108 1169 11B4;
+BF4E;BF4E;1108 1169 11B5;BF4E;1108 1169 11B5;
+BF4F;BF4F;1108 1169 11B6;BF4F;1108 1169 11B6;
+BF50;BF50;1108 1169 11B7;BF50;1108 1169 11B7;
+BF51;BF51;1108 1169 11B8;BF51;1108 1169 11B8;
+BF52;BF52;1108 1169 11B9;BF52;1108 1169 11B9;
+BF53;BF53;1108 1169 11BA;BF53;1108 1169 11BA;
+BF54;BF54;1108 1169 11BB;BF54;1108 1169 11BB;
+BF55;BF55;1108 1169 11BC;BF55;1108 1169 11BC;
+BF56;BF56;1108 1169 11BD;BF56;1108 1169 11BD;
+BF57;BF57;1108 1169 11BE;BF57;1108 1169 11BE;
+BF58;BF58;1108 1169 11BF;BF58;1108 1169 11BF;
+BF59;BF59;1108 1169 11C0;BF59;1108 1169 11C0;
+BF5A;BF5A;1108 1169 11C1;BF5A;1108 1169 11C1;
+BF5B;BF5B;1108 1169 11C2;BF5B;1108 1169 11C2;
+BF5C;BF5C;1108 116A;BF5C;1108 116A;
+BF5D;BF5D;1108 116A 11A8;BF5D;1108 116A 11A8;
+BF5E;BF5E;1108 116A 11A9;BF5E;1108 116A 11A9;
+BF5F;BF5F;1108 116A 11AA;BF5F;1108 116A 11AA;
+BF60;BF60;1108 116A 11AB;BF60;1108 116A 11AB;
+BF61;BF61;1108 116A 11AC;BF61;1108 116A 11AC;
+BF62;BF62;1108 116A 11AD;BF62;1108 116A 11AD;
+BF63;BF63;1108 116A 11AE;BF63;1108 116A 11AE;
+BF64;BF64;1108 116A 11AF;BF64;1108 116A 11AF;
+BF65;BF65;1108 116A 11B0;BF65;1108 116A 11B0;
+BF66;BF66;1108 116A 11B1;BF66;1108 116A 11B1;
+BF67;BF67;1108 116A 11B2;BF67;1108 116A 11B2;
+BF68;BF68;1108 116A 11B3;BF68;1108 116A 11B3;
+BF69;BF69;1108 116A 11B4;BF69;1108 116A 11B4;
+BF6A;BF6A;1108 116A 11B5;BF6A;1108 116A 11B5;
+BF6B;BF6B;1108 116A 11B6;BF6B;1108 116A 11B6;
+BF6C;BF6C;1108 116A 11B7;BF6C;1108 116A 11B7;
+BF6D;BF6D;1108 116A 11B8;BF6D;1108 116A 11B8;
+BF6E;BF6E;1108 116A 11B9;BF6E;1108 116A 11B9;
+BF6F;BF6F;1108 116A 11BA;BF6F;1108 116A 11BA;
+BF70;BF70;1108 116A 11BB;BF70;1108 116A 11BB;
+BF71;BF71;1108 116A 11BC;BF71;1108 116A 11BC;
+BF72;BF72;1108 116A 11BD;BF72;1108 116A 11BD;
+BF73;BF73;1108 116A 11BE;BF73;1108 116A 11BE;
+BF74;BF74;1108 116A 11BF;BF74;1108 116A 11BF;
+BF75;BF75;1108 116A 11C0;BF75;1108 116A 11C0;
+BF76;BF76;1108 116A 11C1;BF76;1108 116A 11C1;
+BF77;BF77;1108 116A 11C2;BF77;1108 116A 11C2;
+BF78;BF78;1108 116B;BF78;1108 116B;
+BF79;BF79;1108 116B 11A8;BF79;1108 116B 11A8;
+BF7A;BF7A;1108 116B 11A9;BF7A;1108 116B 11A9;
+BF7B;BF7B;1108 116B 11AA;BF7B;1108 116B 11AA;
+BF7C;BF7C;1108 116B 11AB;BF7C;1108 116B 11AB;
+BF7D;BF7D;1108 116B 11AC;BF7D;1108 116B 11AC;
+BF7E;BF7E;1108 116B 11AD;BF7E;1108 116B 11AD;
+BF7F;BF7F;1108 116B 11AE;BF7F;1108 116B 11AE;
+BF80;BF80;1108 116B 11AF;BF80;1108 116B 11AF;
+BF81;BF81;1108 116B 11B0;BF81;1108 116B 11B0;
+BF82;BF82;1108 116B 11B1;BF82;1108 116B 11B1;
+BF83;BF83;1108 116B 11B2;BF83;1108 116B 11B2;
+BF84;BF84;1108 116B 11B3;BF84;1108 116B 11B3;
+BF85;BF85;1108 116B 11B4;BF85;1108 116B 11B4;
+BF86;BF86;1108 116B 11B5;BF86;1108 116B 11B5;
+BF87;BF87;1108 116B 11B6;BF87;1108 116B 11B6;
+BF88;BF88;1108 116B 11B7;BF88;1108 116B 11B7;
+BF89;BF89;1108 116B 11B8;BF89;1108 116B 11B8;
+BF8A;BF8A;1108 116B 11B9;BF8A;1108 116B 11B9;
+BF8B;BF8B;1108 116B 11BA;BF8B;1108 116B 11BA;
+BF8C;BF8C;1108 116B 11BB;BF8C;1108 116B 11BB;
+BF8D;BF8D;1108 116B 11BC;BF8D;1108 116B 11BC;
+BF8E;BF8E;1108 116B 11BD;BF8E;1108 116B 11BD;
+BF8F;BF8F;1108 116B 11BE;BF8F;1108 116B 11BE;
+BF90;BF90;1108 116B 11BF;BF90;1108 116B 11BF;
+BF91;BF91;1108 116B 11C0;BF91;1108 116B 11C0;
+BF92;BF92;1108 116B 11C1;BF92;1108 116B 11C1;
+BF93;BF93;1108 116B 11C2;BF93;1108 116B 11C2;
+BF94;BF94;1108 116C;BF94;1108 116C;
+BF95;BF95;1108 116C 11A8;BF95;1108 116C 11A8;
+BF96;BF96;1108 116C 11A9;BF96;1108 116C 11A9;
+BF97;BF97;1108 116C 11AA;BF97;1108 116C 11AA;
+BF98;BF98;1108 116C 11AB;BF98;1108 116C 11AB;
+BF99;BF99;1108 116C 11AC;BF99;1108 116C 11AC;
+BF9A;BF9A;1108 116C 11AD;BF9A;1108 116C 11AD;
+BF9B;BF9B;1108 116C 11AE;BF9B;1108 116C 11AE;
+BF9C;BF9C;1108 116C 11AF;BF9C;1108 116C 11AF;
+BF9D;BF9D;1108 116C 11B0;BF9D;1108 116C 11B0;
+BF9E;BF9E;1108 116C 11B1;BF9E;1108 116C 11B1;
+BF9F;BF9F;1108 116C 11B2;BF9F;1108 116C 11B2;
+BFA0;BFA0;1108 116C 11B3;BFA0;1108 116C 11B3;
+BFA1;BFA1;1108 116C 11B4;BFA1;1108 116C 11B4;
+BFA2;BFA2;1108 116C 11B5;BFA2;1108 116C 11B5;
+BFA3;BFA3;1108 116C 11B6;BFA3;1108 116C 11B6;
+BFA4;BFA4;1108 116C 11B7;BFA4;1108 116C 11B7;
+BFA5;BFA5;1108 116C 11B8;BFA5;1108 116C 11B8;
+BFA6;BFA6;1108 116C 11B9;BFA6;1108 116C 11B9;
+BFA7;BFA7;1108 116C 11BA;BFA7;1108 116C 11BA;
+BFA8;BFA8;1108 116C 11BB;BFA8;1108 116C 11BB;
+BFA9;BFA9;1108 116C 11BC;BFA9;1108 116C 11BC;
+BFAA;BFAA;1108 116C 11BD;BFAA;1108 116C 11BD;
+BFAB;BFAB;1108 116C 11BE;BFAB;1108 116C 11BE;
+BFAC;BFAC;1108 116C 11BF;BFAC;1108 116C 11BF;
+BFAD;BFAD;1108 116C 11C0;BFAD;1108 116C 11C0;
+BFAE;BFAE;1108 116C 11C1;BFAE;1108 116C 11C1;
+BFAF;BFAF;1108 116C 11C2;BFAF;1108 116C 11C2;
+BFB0;BFB0;1108 116D;BFB0;1108 116D;
+BFB1;BFB1;1108 116D 11A8;BFB1;1108 116D 11A8;
+BFB2;BFB2;1108 116D 11A9;BFB2;1108 116D 11A9;
+BFB3;BFB3;1108 116D 11AA;BFB3;1108 116D 11AA;
+BFB4;BFB4;1108 116D 11AB;BFB4;1108 116D 11AB;
+BFB5;BFB5;1108 116D 11AC;BFB5;1108 116D 11AC;
+BFB6;BFB6;1108 116D 11AD;BFB6;1108 116D 11AD;
+BFB7;BFB7;1108 116D 11AE;BFB7;1108 116D 11AE;
+BFB8;BFB8;1108 116D 11AF;BFB8;1108 116D 11AF;
+BFB9;BFB9;1108 116D 11B0;BFB9;1108 116D 11B0;
+BFBA;BFBA;1108 116D 11B1;BFBA;1108 116D 11B1;
+BFBB;BFBB;1108 116D 11B2;BFBB;1108 116D 11B2;
+BFBC;BFBC;1108 116D 11B3;BFBC;1108 116D 11B3;
+BFBD;BFBD;1108 116D 11B4;BFBD;1108 116D 11B4;
+BFBE;BFBE;1108 116D 11B5;BFBE;1108 116D 11B5;
+BFBF;BFBF;1108 116D 11B6;BFBF;1108 116D 11B6;
+BFC0;BFC0;1108 116D 11B7;BFC0;1108 116D 11B7;
+BFC1;BFC1;1108 116D 11B8;BFC1;1108 116D 11B8;
+BFC2;BFC2;1108 116D 11B9;BFC2;1108 116D 11B9;
+BFC3;BFC3;1108 116D 11BA;BFC3;1108 116D 11BA;
+BFC4;BFC4;1108 116D 11BB;BFC4;1108 116D 11BB;
+BFC5;BFC5;1108 116D 11BC;BFC5;1108 116D 11BC;
+BFC6;BFC6;1108 116D 11BD;BFC6;1108 116D 11BD;
+BFC7;BFC7;1108 116D 11BE;BFC7;1108 116D 11BE;
+BFC8;BFC8;1108 116D 11BF;BFC8;1108 116D 11BF;
+BFC9;BFC9;1108 116D 11C0;BFC9;1108 116D 11C0;
+BFCA;BFCA;1108 116D 11C1;BFCA;1108 116D 11C1;
+BFCB;BFCB;1108 116D 11C2;BFCB;1108 116D 11C2;
+BFCC;BFCC;1108 116E;BFCC;1108 116E;
+BFCD;BFCD;1108 116E 11A8;BFCD;1108 116E 11A8;
+BFCE;BFCE;1108 116E 11A9;BFCE;1108 116E 11A9;
+BFCF;BFCF;1108 116E 11AA;BFCF;1108 116E 11AA;
+BFD0;BFD0;1108 116E 11AB;BFD0;1108 116E 11AB;
+BFD1;BFD1;1108 116E 11AC;BFD1;1108 116E 11AC;
+BFD2;BFD2;1108 116E 11AD;BFD2;1108 116E 11AD;
+BFD3;BFD3;1108 116E 11AE;BFD3;1108 116E 11AE;
+BFD4;BFD4;1108 116E 11AF;BFD4;1108 116E 11AF;
+BFD5;BFD5;1108 116E 11B0;BFD5;1108 116E 11B0;
+BFD6;BFD6;1108 116E 11B1;BFD6;1108 116E 11B1;
+BFD7;BFD7;1108 116E 11B2;BFD7;1108 116E 11B2;
+BFD8;BFD8;1108 116E 11B3;BFD8;1108 116E 11B3;
+BFD9;BFD9;1108 116E 11B4;BFD9;1108 116E 11B4;
+BFDA;BFDA;1108 116E 11B5;BFDA;1108 116E 11B5;
+BFDB;BFDB;1108 116E 11B6;BFDB;1108 116E 11B6;
+BFDC;BFDC;1108 116E 11B7;BFDC;1108 116E 11B7;
+BFDD;BFDD;1108 116E 11B8;BFDD;1108 116E 11B8;
+BFDE;BFDE;1108 116E 11B9;BFDE;1108 116E 11B9;
+BFDF;BFDF;1108 116E 11BA;BFDF;1108 116E 11BA;
+BFE0;BFE0;1108 116E 11BB;BFE0;1108 116E 11BB;
+BFE1;BFE1;1108 116E 11BC;BFE1;1108 116E 11BC;
+BFE2;BFE2;1108 116E 11BD;BFE2;1108 116E 11BD;
+BFE3;BFE3;1108 116E 11BE;BFE3;1108 116E 11BE;
+BFE4;BFE4;1108 116E 11BF;BFE4;1108 116E 11BF;
+BFE5;BFE5;1108 116E 11C0;BFE5;1108 116E 11C0;
+BFE6;BFE6;1108 116E 11C1;BFE6;1108 116E 11C1;
+BFE7;BFE7;1108 116E 11C2;BFE7;1108 116E 11C2;
+BFE8;BFE8;1108 116F;BFE8;1108 116F;
+BFE9;BFE9;1108 116F 11A8;BFE9;1108 116F 11A8;
+BFEA;BFEA;1108 116F 11A9;BFEA;1108 116F 11A9;
+BFEB;BFEB;1108 116F 11AA;BFEB;1108 116F 11AA;
+BFEC;BFEC;1108 116F 11AB;BFEC;1108 116F 11AB;
+BFED;BFED;1108 116F 11AC;BFED;1108 116F 11AC;
+BFEE;BFEE;1108 116F 11AD;BFEE;1108 116F 11AD;
+BFEF;BFEF;1108 116F 11AE;BFEF;1108 116F 11AE;
+BFF0;BFF0;1108 116F 11AF;BFF0;1108 116F 11AF;
+BFF1;BFF1;1108 116F 11B0;BFF1;1108 116F 11B0;
+BFF2;BFF2;1108 116F 11B1;BFF2;1108 116F 11B1;
+BFF3;BFF3;1108 116F 11B2;BFF3;1108 116F 11B2;
+BFF4;BFF4;1108 116F 11B3;BFF4;1108 116F 11B3;
+BFF5;BFF5;1108 116F 11B4;BFF5;1108 116F 11B4;
+BFF6;BFF6;1108 116F 11B5;BFF6;1108 116F 11B5;
+BFF7;BFF7;1108 116F 11B6;BFF7;1108 116F 11B6;
+BFF8;BFF8;1108 116F 11B7;BFF8;1108 116F 11B7;
+BFF9;BFF9;1108 116F 11B8;BFF9;1108 116F 11B8;
+BFFA;BFFA;1108 116F 11B9;BFFA;1108 116F 11B9;
+BFFB;BFFB;1108 116F 11BA;BFFB;1108 116F 11BA;
+BFFC;BFFC;1108 116F 11BB;BFFC;1108 116F 11BB;
+BFFD;BFFD;1108 116F 11BC;BFFD;1108 116F 11BC;
+BFFE;BFFE;1108 116F 11BD;BFFE;1108 116F 11BD;
+BFFF;BFFF;1108 116F 11BE;BFFF;1108 116F 11BE;
+C000;C000;1108 116F 11BF;C000;1108 116F 11BF;
+C001;C001;1108 116F 11C0;C001;1108 116F 11C0;
+C002;C002;1108 116F 11C1;C002;1108 116F 11C1;
+C003;C003;1108 116F 11C2;C003;1108 116F 11C2;
+C004;C004;1108 1170;C004;1108 1170;
+C005;C005;1108 1170 11A8;C005;1108 1170 11A8;
+C006;C006;1108 1170 11A9;C006;1108 1170 11A9;
+C007;C007;1108 1170 11AA;C007;1108 1170 11AA;
+C008;C008;1108 1170 11AB;C008;1108 1170 11AB;
+C009;C009;1108 1170 11AC;C009;1108 1170 11AC;
+C00A;C00A;1108 1170 11AD;C00A;1108 1170 11AD;
+C00B;C00B;1108 1170 11AE;C00B;1108 1170 11AE;
+C00C;C00C;1108 1170 11AF;C00C;1108 1170 11AF;
+C00D;C00D;1108 1170 11B0;C00D;1108 1170 11B0;
+C00E;C00E;1108 1170 11B1;C00E;1108 1170 11B1;
+C00F;C00F;1108 1170 11B2;C00F;1108 1170 11B2;
+C010;C010;1108 1170 11B3;C010;1108 1170 11B3;
+C011;C011;1108 1170 11B4;C011;1108 1170 11B4;
+C012;C012;1108 1170 11B5;C012;1108 1170 11B5;
+C013;C013;1108 1170 11B6;C013;1108 1170 11B6;
+C014;C014;1108 1170 11B7;C014;1108 1170 11B7;
+C015;C015;1108 1170 11B8;C015;1108 1170 11B8;
+C016;C016;1108 1170 11B9;C016;1108 1170 11B9;
+C017;C017;1108 1170 11BA;C017;1108 1170 11BA;
+C018;C018;1108 1170 11BB;C018;1108 1170 11BB;
+C019;C019;1108 1170 11BC;C019;1108 1170 11BC;
+C01A;C01A;1108 1170 11BD;C01A;1108 1170 11BD;
+C01B;C01B;1108 1170 11BE;C01B;1108 1170 11BE;
+C01C;C01C;1108 1170 11BF;C01C;1108 1170 11BF;
+C01D;C01D;1108 1170 11C0;C01D;1108 1170 11C0;
+C01E;C01E;1108 1170 11C1;C01E;1108 1170 11C1;
+C01F;C01F;1108 1170 11C2;C01F;1108 1170 11C2;
+C020;C020;1108 1171;C020;1108 1171;
+C021;C021;1108 1171 11A8;C021;1108 1171 11A8;
+C022;C022;1108 1171 11A9;C022;1108 1171 11A9;
+C023;C023;1108 1171 11AA;C023;1108 1171 11AA;
+C024;C024;1108 1171 11AB;C024;1108 1171 11AB;
+C025;C025;1108 1171 11AC;C025;1108 1171 11AC;
+C026;C026;1108 1171 11AD;C026;1108 1171 11AD;
+C027;C027;1108 1171 11AE;C027;1108 1171 11AE;
+C028;C028;1108 1171 11AF;C028;1108 1171 11AF;
+C029;C029;1108 1171 11B0;C029;1108 1171 11B0;
+C02A;C02A;1108 1171 11B1;C02A;1108 1171 11B1;
+C02B;C02B;1108 1171 11B2;C02B;1108 1171 11B2;
+C02C;C02C;1108 1171 11B3;C02C;1108 1171 11B3;
+C02D;C02D;1108 1171 11B4;C02D;1108 1171 11B4;
+C02E;C02E;1108 1171 11B5;C02E;1108 1171 11B5;
+C02F;C02F;1108 1171 11B6;C02F;1108 1171 11B6;
+C030;C030;1108 1171 11B7;C030;1108 1171 11B7;
+C031;C031;1108 1171 11B8;C031;1108 1171 11B8;
+C032;C032;1108 1171 11B9;C032;1108 1171 11B9;
+C033;C033;1108 1171 11BA;C033;1108 1171 11BA;
+C034;C034;1108 1171 11BB;C034;1108 1171 11BB;
+C035;C035;1108 1171 11BC;C035;1108 1171 11BC;
+C036;C036;1108 1171 11BD;C036;1108 1171 11BD;
+C037;C037;1108 1171 11BE;C037;1108 1171 11BE;
+C038;C038;1108 1171 11BF;C038;1108 1171 11BF;
+C039;C039;1108 1171 11C0;C039;1108 1171 11C0;
+C03A;C03A;1108 1171 11C1;C03A;1108 1171 11C1;
+C03B;C03B;1108 1171 11C2;C03B;1108 1171 11C2;
+C03C;C03C;1108 1172;C03C;1108 1172;
+C03D;C03D;1108 1172 11A8;C03D;1108 1172 11A8;
+C03E;C03E;1108 1172 11A9;C03E;1108 1172 11A9;
+C03F;C03F;1108 1172 11AA;C03F;1108 1172 11AA;
+C040;C040;1108 1172 11AB;C040;1108 1172 11AB;
+C041;C041;1108 1172 11AC;C041;1108 1172 11AC;
+C042;C042;1108 1172 11AD;C042;1108 1172 11AD;
+C043;C043;1108 1172 11AE;C043;1108 1172 11AE;
+C044;C044;1108 1172 11AF;C044;1108 1172 11AF;
+C045;C045;1108 1172 11B0;C045;1108 1172 11B0;
+C046;C046;1108 1172 11B1;C046;1108 1172 11B1;
+C047;C047;1108 1172 11B2;C047;1108 1172 11B2;
+C048;C048;1108 1172 11B3;C048;1108 1172 11B3;
+C049;C049;1108 1172 11B4;C049;1108 1172 11B4;
+C04A;C04A;1108 1172 11B5;C04A;1108 1172 11B5;
+C04B;C04B;1108 1172 11B6;C04B;1108 1172 11B6;
+C04C;C04C;1108 1172 11B7;C04C;1108 1172 11B7;
+C04D;C04D;1108 1172 11B8;C04D;1108 1172 11B8;
+C04E;C04E;1108 1172 11B9;C04E;1108 1172 11B9;
+C04F;C04F;1108 1172 11BA;C04F;1108 1172 11BA;
+C050;C050;1108 1172 11BB;C050;1108 1172 11BB;
+C051;C051;1108 1172 11BC;C051;1108 1172 11BC;
+C052;C052;1108 1172 11BD;C052;1108 1172 11BD;
+C053;C053;1108 1172 11BE;C053;1108 1172 11BE;
+C054;C054;1108 1172 11BF;C054;1108 1172 11BF;
+C055;C055;1108 1172 11C0;C055;1108 1172 11C0;
+C056;C056;1108 1172 11C1;C056;1108 1172 11C1;
+C057;C057;1108 1172 11C2;C057;1108 1172 11C2;
+C058;C058;1108 1173;C058;1108 1173;
+C059;C059;1108 1173 11A8;C059;1108 1173 11A8;
+C05A;C05A;1108 1173 11A9;C05A;1108 1173 11A9;
+C05B;C05B;1108 1173 11AA;C05B;1108 1173 11AA;
+C05C;C05C;1108 1173 11AB;C05C;1108 1173 11AB;
+C05D;C05D;1108 1173 11AC;C05D;1108 1173 11AC;
+C05E;C05E;1108 1173 11AD;C05E;1108 1173 11AD;
+C05F;C05F;1108 1173 11AE;C05F;1108 1173 11AE;
+C060;C060;1108 1173 11AF;C060;1108 1173 11AF;
+C061;C061;1108 1173 11B0;C061;1108 1173 11B0;
+C062;C062;1108 1173 11B1;C062;1108 1173 11B1;
+C063;C063;1108 1173 11B2;C063;1108 1173 11B2;
+C064;C064;1108 1173 11B3;C064;1108 1173 11B3;
+C065;C065;1108 1173 11B4;C065;1108 1173 11B4;
+C066;C066;1108 1173 11B5;C066;1108 1173 11B5;
+C067;C067;1108 1173 11B6;C067;1108 1173 11B6;
+C068;C068;1108 1173 11B7;C068;1108 1173 11B7;
+C069;C069;1108 1173 11B8;C069;1108 1173 11B8;
+C06A;C06A;1108 1173 11B9;C06A;1108 1173 11B9;
+C06B;C06B;1108 1173 11BA;C06B;1108 1173 11BA;
+C06C;C06C;1108 1173 11BB;C06C;1108 1173 11BB;
+C06D;C06D;1108 1173 11BC;C06D;1108 1173 11BC;
+C06E;C06E;1108 1173 11BD;C06E;1108 1173 11BD;
+C06F;C06F;1108 1173 11BE;C06F;1108 1173 11BE;
+C070;C070;1108 1173 11BF;C070;1108 1173 11BF;
+C071;C071;1108 1173 11C0;C071;1108 1173 11C0;
+C072;C072;1108 1173 11C1;C072;1108 1173 11C1;
+C073;C073;1108 1173 11C2;C073;1108 1173 11C2;
+C074;C074;1108 1174;C074;1108 1174;
+C075;C075;1108 1174 11A8;C075;1108 1174 11A8;
+C076;C076;1108 1174 11A9;C076;1108 1174 11A9;
+C077;C077;1108 1174 11AA;C077;1108 1174 11AA;
+C078;C078;1108 1174 11AB;C078;1108 1174 11AB;
+C079;C079;1108 1174 11AC;C079;1108 1174 11AC;
+C07A;C07A;1108 1174 11AD;C07A;1108 1174 11AD;
+C07B;C07B;1108 1174 11AE;C07B;1108 1174 11AE;
+C07C;C07C;1108 1174 11AF;C07C;1108 1174 11AF;
+C07D;C07D;1108 1174 11B0;C07D;1108 1174 11B0;
+C07E;C07E;1108 1174 11B1;C07E;1108 1174 11B1;
+C07F;C07F;1108 1174 11B2;C07F;1108 1174 11B2;
+C080;C080;1108 1174 11B3;C080;1108 1174 11B3;
+C081;C081;1108 1174 11B4;C081;1108 1174 11B4;
+C082;C082;1108 1174 11B5;C082;1108 1174 11B5;
+C083;C083;1108 1174 11B6;C083;1108 1174 11B6;
+C084;C084;1108 1174 11B7;C084;1108 1174 11B7;
+C085;C085;1108 1174 11B8;C085;1108 1174 11B8;
+C086;C086;1108 1174 11B9;C086;1108 1174 11B9;
+C087;C087;1108 1174 11BA;C087;1108 1174 11BA;
+C088;C088;1108 1174 11BB;C088;1108 1174 11BB;
+C089;C089;1108 1174 11BC;C089;1108 1174 11BC;
+C08A;C08A;1108 1174 11BD;C08A;1108 1174 11BD;
+C08B;C08B;1108 1174 11BE;C08B;1108 1174 11BE;
+C08C;C08C;1108 1174 11BF;C08C;1108 1174 11BF;
+C08D;C08D;1108 1174 11C0;C08D;1108 1174 11C0;
+C08E;C08E;1108 1174 11C1;C08E;1108 1174 11C1;
+C08F;C08F;1108 1174 11C2;C08F;1108 1174 11C2;
+C090;C090;1108 1175;C090;1108 1175;
+C091;C091;1108 1175 11A8;C091;1108 1175 11A8;
+C092;C092;1108 1175 11A9;C092;1108 1175 11A9;
+C093;C093;1108 1175 11AA;C093;1108 1175 11AA;
+C094;C094;1108 1175 11AB;C094;1108 1175 11AB;
+C095;C095;1108 1175 11AC;C095;1108 1175 11AC;
+C096;C096;1108 1175 11AD;C096;1108 1175 11AD;
+C097;C097;1108 1175 11AE;C097;1108 1175 11AE;
+C098;C098;1108 1175 11AF;C098;1108 1175 11AF;
+C099;C099;1108 1175 11B0;C099;1108 1175 11B0;
+C09A;C09A;1108 1175 11B1;C09A;1108 1175 11B1;
+C09B;C09B;1108 1175 11B2;C09B;1108 1175 11B2;
+C09C;C09C;1108 1175 11B3;C09C;1108 1175 11B3;
+C09D;C09D;1108 1175 11B4;C09D;1108 1175 11B4;
+C09E;C09E;1108 1175 11B5;C09E;1108 1175 11B5;
+C09F;C09F;1108 1175 11B6;C09F;1108 1175 11B6;
+C0A0;C0A0;1108 1175 11B7;C0A0;1108 1175 11B7;
+C0A1;C0A1;1108 1175 11B8;C0A1;1108 1175 11B8;
+C0A2;C0A2;1108 1175 11B9;C0A2;1108 1175 11B9;
+C0A3;C0A3;1108 1175 11BA;C0A3;1108 1175 11BA;
+C0A4;C0A4;1108 1175 11BB;C0A4;1108 1175 11BB;
+C0A5;C0A5;1108 1175 11BC;C0A5;1108 1175 11BC;
+C0A6;C0A6;1108 1175 11BD;C0A6;1108 1175 11BD;
+C0A7;C0A7;1108 1175 11BE;C0A7;1108 1175 11BE;
+C0A8;C0A8;1108 1175 11BF;C0A8;1108 1175 11BF;
+C0A9;C0A9;1108 1175 11C0;C0A9;1108 1175 11C0;
+C0AA;C0AA;1108 1175 11C1;C0AA;1108 1175 11C1;
+C0AB;C0AB;1108 1175 11C2;C0AB;1108 1175 11C2;
+C0AC;C0AC;1109 1161;C0AC;1109 1161;
+C0AD;C0AD;1109 1161 11A8;C0AD;1109 1161 11A8;
+C0AE;C0AE;1109 1161 11A9;C0AE;1109 1161 11A9;
+C0AF;C0AF;1109 1161 11AA;C0AF;1109 1161 11AA;
+C0B0;C0B0;1109 1161 11AB;C0B0;1109 1161 11AB;
+C0B1;C0B1;1109 1161 11AC;C0B1;1109 1161 11AC;
+C0B2;C0B2;1109 1161 11AD;C0B2;1109 1161 11AD;
+C0B3;C0B3;1109 1161 11AE;C0B3;1109 1161 11AE;
+C0B4;C0B4;1109 1161 11AF;C0B4;1109 1161 11AF;
+C0B5;C0B5;1109 1161 11B0;C0B5;1109 1161 11B0;
+C0B6;C0B6;1109 1161 11B1;C0B6;1109 1161 11B1;
+C0B7;C0B7;1109 1161 11B2;C0B7;1109 1161 11B2;
+C0B8;C0B8;1109 1161 11B3;C0B8;1109 1161 11B3;
+C0B9;C0B9;1109 1161 11B4;C0B9;1109 1161 11B4;
+C0BA;C0BA;1109 1161 11B5;C0BA;1109 1161 11B5;
+C0BB;C0BB;1109 1161 11B6;C0BB;1109 1161 11B6;
+C0BC;C0BC;1109 1161 11B7;C0BC;1109 1161 11B7;
+C0BD;C0BD;1109 1161 11B8;C0BD;1109 1161 11B8;
+C0BE;C0BE;1109 1161 11B9;C0BE;1109 1161 11B9;
+C0BF;C0BF;1109 1161 11BA;C0BF;1109 1161 11BA;
+C0C0;C0C0;1109 1161 11BB;C0C0;1109 1161 11BB;
+C0C1;C0C1;1109 1161 11BC;C0C1;1109 1161 11BC;
+C0C2;C0C2;1109 1161 11BD;C0C2;1109 1161 11BD;
+C0C3;C0C3;1109 1161 11BE;C0C3;1109 1161 11BE;
+C0C4;C0C4;1109 1161 11BF;C0C4;1109 1161 11BF;
+C0C5;C0C5;1109 1161 11C0;C0C5;1109 1161 11C0;
+C0C6;C0C6;1109 1161 11C1;C0C6;1109 1161 11C1;
+C0C7;C0C7;1109 1161 11C2;C0C7;1109 1161 11C2;
+C0C8;C0C8;1109 1162;C0C8;1109 1162;
+C0C9;C0C9;1109 1162 11A8;C0C9;1109 1162 11A8;
+C0CA;C0CA;1109 1162 11A9;C0CA;1109 1162 11A9;
+C0CB;C0CB;1109 1162 11AA;C0CB;1109 1162 11AA;
+C0CC;C0CC;1109 1162 11AB;C0CC;1109 1162 11AB;
+C0CD;C0CD;1109 1162 11AC;C0CD;1109 1162 11AC;
+C0CE;C0CE;1109 1162 11AD;C0CE;1109 1162 11AD;
+C0CF;C0CF;1109 1162 11AE;C0CF;1109 1162 11AE;
+C0D0;C0D0;1109 1162 11AF;C0D0;1109 1162 11AF;
+C0D1;C0D1;1109 1162 11B0;C0D1;1109 1162 11B0;
+C0D2;C0D2;1109 1162 11B1;C0D2;1109 1162 11B1;
+C0D3;C0D3;1109 1162 11B2;C0D3;1109 1162 11B2;
+C0D4;C0D4;1109 1162 11B3;C0D4;1109 1162 11B3;
+C0D5;C0D5;1109 1162 11B4;C0D5;1109 1162 11B4;
+C0D6;C0D6;1109 1162 11B5;C0D6;1109 1162 11B5;
+C0D7;C0D7;1109 1162 11B6;C0D7;1109 1162 11B6;
+C0D8;C0D8;1109 1162 11B7;C0D8;1109 1162 11B7;
+C0D9;C0D9;1109 1162 11B8;C0D9;1109 1162 11B8;
+C0DA;C0DA;1109 1162 11B9;C0DA;1109 1162 11B9;
+C0DB;C0DB;1109 1162 11BA;C0DB;1109 1162 11BA;
+C0DC;C0DC;1109 1162 11BB;C0DC;1109 1162 11BB;
+C0DD;C0DD;1109 1162 11BC;C0DD;1109 1162 11BC;
+C0DE;C0DE;1109 1162 11BD;C0DE;1109 1162 11BD;
+C0DF;C0DF;1109 1162 11BE;C0DF;1109 1162 11BE;
+C0E0;C0E0;1109 1162 11BF;C0E0;1109 1162 11BF;
+C0E1;C0E1;1109 1162 11C0;C0E1;1109 1162 11C0;
+C0E2;C0E2;1109 1162 11C1;C0E2;1109 1162 11C1;
+C0E3;C0E3;1109 1162 11C2;C0E3;1109 1162 11C2;
+C0E4;C0E4;1109 1163;C0E4;1109 1163;
+C0E5;C0E5;1109 1163 11A8;C0E5;1109 1163 11A8;
+C0E6;C0E6;1109 1163 11A9;C0E6;1109 1163 11A9;
+C0E7;C0E7;1109 1163 11AA;C0E7;1109 1163 11AA;
+C0E8;C0E8;1109 1163 11AB;C0E8;1109 1163 11AB;
+C0E9;C0E9;1109 1163 11AC;C0E9;1109 1163 11AC;
+C0EA;C0EA;1109 1163 11AD;C0EA;1109 1163 11AD;
+C0EB;C0EB;1109 1163 11AE;C0EB;1109 1163 11AE;
+C0EC;C0EC;1109 1163 11AF;C0EC;1109 1163 11AF;
+C0ED;C0ED;1109 1163 11B0;C0ED;1109 1163 11B0;
+C0EE;C0EE;1109 1163 11B1;C0EE;1109 1163 11B1;
+C0EF;C0EF;1109 1163 11B2;C0EF;1109 1163 11B2;
+C0F0;C0F0;1109 1163 11B3;C0F0;1109 1163 11B3;
+C0F1;C0F1;1109 1163 11B4;C0F1;1109 1163 11B4;
+C0F2;C0F2;1109 1163 11B5;C0F2;1109 1163 11B5;
+C0F3;C0F3;1109 1163 11B6;C0F3;1109 1163 11B6;
+C0F4;C0F4;1109 1163 11B7;C0F4;1109 1163 11B7;
+C0F5;C0F5;1109 1163 11B8;C0F5;1109 1163 11B8;
+C0F6;C0F6;1109 1163 11B9;C0F6;1109 1163 11B9;
+C0F7;C0F7;1109 1163 11BA;C0F7;1109 1163 11BA;
+C0F8;C0F8;1109 1163 11BB;C0F8;1109 1163 11BB;
+C0F9;C0F9;1109 1163 11BC;C0F9;1109 1163 11BC;
+C0FA;C0FA;1109 1163 11BD;C0FA;1109 1163 11BD;
+C0FB;C0FB;1109 1163 11BE;C0FB;1109 1163 11BE;
+C0FC;C0FC;1109 1163 11BF;C0FC;1109 1163 11BF;
+C0FD;C0FD;1109 1163 11C0;C0FD;1109 1163 11C0;
+C0FE;C0FE;1109 1163 11C1;C0FE;1109 1163 11C1;
+C0FF;C0FF;1109 1163 11C2;C0FF;1109 1163 11C2;
+C100;C100;1109 1164;C100;1109 1164;
+C101;C101;1109 1164 11A8;C101;1109 1164 11A8;
+C102;C102;1109 1164 11A9;C102;1109 1164 11A9;
+C103;C103;1109 1164 11AA;C103;1109 1164 11AA;
+C104;C104;1109 1164 11AB;C104;1109 1164 11AB;
+C105;C105;1109 1164 11AC;C105;1109 1164 11AC;
+C106;C106;1109 1164 11AD;C106;1109 1164 11AD;
+C107;C107;1109 1164 11AE;C107;1109 1164 11AE;
+C108;C108;1109 1164 11AF;C108;1109 1164 11AF;
+C109;C109;1109 1164 11B0;C109;1109 1164 11B0;
+C10A;C10A;1109 1164 11B1;C10A;1109 1164 11B1;
+C10B;C10B;1109 1164 11B2;C10B;1109 1164 11B2;
+C10C;C10C;1109 1164 11B3;C10C;1109 1164 11B3;
+C10D;C10D;1109 1164 11B4;C10D;1109 1164 11B4;
+C10E;C10E;1109 1164 11B5;C10E;1109 1164 11B5;
+C10F;C10F;1109 1164 11B6;C10F;1109 1164 11B6;
+C110;C110;1109 1164 11B7;C110;1109 1164 11B7;
+C111;C111;1109 1164 11B8;C111;1109 1164 11B8;
+C112;C112;1109 1164 11B9;C112;1109 1164 11B9;
+C113;C113;1109 1164 11BA;C113;1109 1164 11BA;
+C114;C114;1109 1164 11BB;C114;1109 1164 11BB;
+C115;C115;1109 1164 11BC;C115;1109 1164 11BC;
+C116;C116;1109 1164 11BD;C116;1109 1164 11BD;
+C117;C117;1109 1164 11BE;C117;1109 1164 11BE;
+C118;C118;1109 1164 11BF;C118;1109 1164 11BF;
+C119;C119;1109 1164 11C0;C119;1109 1164 11C0;
+C11A;C11A;1109 1164 11C1;C11A;1109 1164 11C1;
+C11B;C11B;1109 1164 11C2;C11B;1109 1164 11C2;
+C11C;C11C;1109 1165;C11C;1109 1165;
+C11D;C11D;1109 1165 11A8;C11D;1109 1165 11A8;
+C11E;C11E;1109 1165 11A9;C11E;1109 1165 11A9;
+C11F;C11F;1109 1165 11AA;C11F;1109 1165 11AA;
+C120;C120;1109 1165 11AB;C120;1109 1165 11AB;
+C121;C121;1109 1165 11AC;C121;1109 1165 11AC;
+C122;C122;1109 1165 11AD;C122;1109 1165 11AD;
+C123;C123;1109 1165 11AE;C123;1109 1165 11AE;
+C124;C124;1109 1165 11AF;C124;1109 1165 11AF;
+C125;C125;1109 1165 11B0;C125;1109 1165 11B0;
+C126;C126;1109 1165 11B1;C126;1109 1165 11B1;
+C127;C127;1109 1165 11B2;C127;1109 1165 11B2;
+C128;C128;1109 1165 11B3;C128;1109 1165 11B3;
+C129;C129;1109 1165 11B4;C129;1109 1165 11B4;
+C12A;C12A;1109 1165 11B5;C12A;1109 1165 11B5;
+C12B;C12B;1109 1165 11B6;C12B;1109 1165 11B6;
+C12C;C12C;1109 1165 11B7;C12C;1109 1165 11B7;
+C12D;C12D;1109 1165 11B8;C12D;1109 1165 11B8;
+C12E;C12E;1109 1165 11B9;C12E;1109 1165 11B9;
+C12F;C12F;1109 1165 11BA;C12F;1109 1165 11BA;
+C130;C130;1109 1165 11BB;C130;1109 1165 11BB;
+C131;C131;1109 1165 11BC;C131;1109 1165 11BC;
+C132;C132;1109 1165 11BD;C132;1109 1165 11BD;
+C133;C133;1109 1165 11BE;C133;1109 1165 11BE;
+C134;C134;1109 1165 11BF;C134;1109 1165 11BF;
+C135;C135;1109 1165 11C0;C135;1109 1165 11C0;
+C136;C136;1109 1165 11C1;C136;1109 1165 11C1;
+C137;C137;1109 1165 11C2;C137;1109 1165 11C2;
+C138;C138;1109 1166;C138;1109 1166;
+C139;C139;1109 1166 11A8;C139;1109 1166 11A8;
+C13A;C13A;1109 1166 11A9;C13A;1109 1166 11A9;
+C13B;C13B;1109 1166 11AA;C13B;1109 1166 11AA;
+C13C;C13C;1109 1166 11AB;C13C;1109 1166 11AB;
+C13D;C13D;1109 1166 11AC;C13D;1109 1166 11AC;
+C13E;C13E;1109 1166 11AD;C13E;1109 1166 11AD;
+C13F;C13F;1109 1166 11AE;C13F;1109 1166 11AE;
+C140;C140;1109 1166 11AF;C140;1109 1166 11AF;
+C141;C141;1109 1166 11B0;C141;1109 1166 11B0;
+C142;C142;1109 1166 11B1;C142;1109 1166 11B1;
+C143;C143;1109 1166 11B2;C143;1109 1166 11B2;
+C144;C144;1109 1166 11B3;C144;1109 1166 11B3;
+C145;C145;1109 1166 11B4;C145;1109 1166 11B4;
+C146;C146;1109 1166 11B5;C146;1109 1166 11B5;
+C147;C147;1109 1166 11B6;C147;1109 1166 11B6;
+C148;C148;1109 1166 11B7;C148;1109 1166 11B7;
+C149;C149;1109 1166 11B8;C149;1109 1166 11B8;
+C14A;C14A;1109 1166 11B9;C14A;1109 1166 11B9;
+C14B;C14B;1109 1166 11BA;C14B;1109 1166 11BA;
+C14C;C14C;1109 1166 11BB;C14C;1109 1166 11BB;
+C14D;C14D;1109 1166 11BC;C14D;1109 1166 11BC;
+C14E;C14E;1109 1166 11BD;C14E;1109 1166 11BD;
+C14F;C14F;1109 1166 11BE;C14F;1109 1166 11BE;
+C150;C150;1109 1166 11BF;C150;1109 1166 11BF;
+C151;C151;1109 1166 11C0;C151;1109 1166 11C0;
+C152;C152;1109 1166 11C1;C152;1109 1166 11C1;
+C153;C153;1109 1166 11C2;C153;1109 1166 11C2;
+C154;C154;1109 1167;C154;1109 1167;
+C155;C155;1109 1167 11A8;C155;1109 1167 11A8;
+C156;C156;1109 1167 11A9;C156;1109 1167 11A9;
+C157;C157;1109 1167 11AA;C157;1109 1167 11AA;
+C158;C158;1109 1167 11AB;C158;1109 1167 11AB;
+C159;C159;1109 1167 11AC;C159;1109 1167 11AC;
+C15A;C15A;1109 1167 11AD;C15A;1109 1167 11AD;
+C15B;C15B;1109 1167 11AE;C15B;1109 1167 11AE;
+C15C;C15C;1109 1167 11AF;C15C;1109 1167 11AF;
+C15D;C15D;1109 1167 11B0;C15D;1109 1167 11B0;
+C15E;C15E;1109 1167 11B1;C15E;1109 1167 11B1;
+C15F;C15F;1109 1167 11B2;C15F;1109 1167 11B2;
+C160;C160;1109 1167 11B3;C160;1109 1167 11B3;
+C161;C161;1109 1167 11B4;C161;1109 1167 11B4;
+C162;C162;1109 1167 11B5;C162;1109 1167 11B5;
+C163;C163;1109 1167 11B6;C163;1109 1167 11B6;
+C164;C164;1109 1167 11B7;C164;1109 1167 11B7;
+C165;C165;1109 1167 11B8;C165;1109 1167 11B8;
+C166;C166;1109 1167 11B9;C166;1109 1167 11B9;
+C167;C167;1109 1167 11BA;C167;1109 1167 11BA;
+C168;C168;1109 1167 11BB;C168;1109 1167 11BB;
+C169;C169;1109 1167 11BC;C169;1109 1167 11BC;
+C16A;C16A;1109 1167 11BD;C16A;1109 1167 11BD;
+C16B;C16B;1109 1167 11BE;C16B;1109 1167 11BE;
+C16C;C16C;1109 1167 11BF;C16C;1109 1167 11BF;
+C16D;C16D;1109 1167 11C0;C16D;1109 1167 11C0;
+C16E;C16E;1109 1167 11C1;C16E;1109 1167 11C1;
+C16F;C16F;1109 1167 11C2;C16F;1109 1167 11C2;
+C170;C170;1109 1168;C170;1109 1168;
+C171;C171;1109 1168 11A8;C171;1109 1168 11A8;
+C172;C172;1109 1168 11A9;C172;1109 1168 11A9;
+C173;C173;1109 1168 11AA;C173;1109 1168 11AA;
+C174;C174;1109 1168 11AB;C174;1109 1168 11AB;
+C175;C175;1109 1168 11AC;C175;1109 1168 11AC;
+C176;C176;1109 1168 11AD;C176;1109 1168 11AD;
+C177;C177;1109 1168 11AE;C177;1109 1168 11AE;
+C178;C178;1109 1168 11AF;C178;1109 1168 11AF;
+C179;C179;1109 1168 11B0;C179;1109 1168 11B0;
+C17A;C17A;1109 1168 11B1;C17A;1109 1168 11B1;
+C17B;C17B;1109 1168 11B2;C17B;1109 1168 11B2;
+C17C;C17C;1109 1168 11B3;C17C;1109 1168 11B3;
+C17D;C17D;1109 1168 11B4;C17D;1109 1168 11B4;
+C17E;C17E;1109 1168 11B5;C17E;1109 1168 11B5;
+C17F;C17F;1109 1168 11B6;C17F;1109 1168 11B6;
+C180;C180;1109 1168 11B7;C180;1109 1168 11B7;
+C181;C181;1109 1168 11B8;C181;1109 1168 11B8;
+C182;C182;1109 1168 11B9;C182;1109 1168 11B9;
+C183;C183;1109 1168 11BA;C183;1109 1168 11BA;
+C184;C184;1109 1168 11BB;C184;1109 1168 11BB;
+C185;C185;1109 1168 11BC;C185;1109 1168 11BC;
+C186;C186;1109 1168 11BD;C186;1109 1168 11BD;
+C187;C187;1109 1168 11BE;C187;1109 1168 11BE;
+C188;C188;1109 1168 11BF;C188;1109 1168 11BF;
+C189;C189;1109 1168 11C0;C189;1109 1168 11C0;
+C18A;C18A;1109 1168 11C1;C18A;1109 1168 11C1;
+C18B;C18B;1109 1168 11C2;C18B;1109 1168 11C2;
+C18C;C18C;1109 1169;C18C;1109 1169;
+C18D;C18D;1109 1169 11A8;C18D;1109 1169 11A8;
+C18E;C18E;1109 1169 11A9;C18E;1109 1169 11A9;
+C18F;C18F;1109 1169 11AA;C18F;1109 1169 11AA;
+C190;C190;1109 1169 11AB;C190;1109 1169 11AB;
+C191;C191;1109 1169 11AC;C191;1109 1169 11AC;
+C192;C192;1109 1169 11AD;C192;1109 1169 11AD;
+C193;C193;1109 1169 11AE;C193;1109 1169 11AE;
+C194;C194;1109 1169 11AF;C194;1109 1169 11AF;
+C195;C195;1109 1169 11B0;C195;1109 1169 11B0;
+C196;C196;1109 1169 11B1;C196;1109 1169 11B1;
+C197;C197;1109 1169 11B2;C197;1109 1169 11B2;
+C198;C198;1109 1169 11B3;C198;1109 1169 11B3;
+C199;C199;1109 1169 11B4;C199;1109 1169 11B4;
+C19A;C19A;1109 1169 11B5;C19A;1109 1169 11B5;
+C19B;C19B;1109 1169 11B6;C19B;1109 1169 11B6;
+C19C;C19C;1109 1169 11B7;C19C;1109 1169 11B7;
+C19D;C19D;1109 1169 11B8;C19D;1109 1169 11B8;
+C19E;C19E;1109 1169 11B9;C19E;1109 1169 11B9;
+C19F;C19F;1109 1169 11BA;C19F;1109 1169 11BA;
+C1A0;C1A0;1109 1169 11BB;C1A0;1109 1169 11BB;
+C1A1;C1A1;1109 1169 11BC;C1A1;1109 1169 11BC;
+C1A2;C1A2;1109 1169 11BD;C1A2;1109 1169 11BD;
+C1A3;C1A3;1109 1169 11BE;C1A3;1109 1169 11BE;
+C1A4;C1A4;1109 1169 11BF;C1A4;1109 1169 11BF;
+C1A5;C1A5;1109 1169 11C0;C1A5;1109 1169 11C0;
+C1A6;C1A6;1109 1169 11C1;C1A6;1109 1169 11C1;
+C1A7;C1A7;1109 1169 11C2;C1A7;1109 1169 11C2;
+C1A8;C1A8;1109 116A;C1A8;1109 116A;
+C1A9;C1A9;1109 116A 11A8;C1A9;1109 116A 11A8;
+C1AA;C1AA;1109 116A 11A9;C1AA;1109 116A 11A9;
+C1AB;C1AB;1109 116A 11AA;C1AB;1109 116A 11AA;
+C1AC;C1AC;1109 116A 11AB;C1AC;1109 116A 11AB;
+C1AD;C1AD;1109 116A 11AC;C1AD;1109 116A 11AC;
+C1AE;C1AE;1109 116A 11AD;C1AE;1109 116A 11AD;
+C1AF;C1AF;1109 116A 11AE;C1AF;1109 116A 11AE;
+C1B0;C1B0;1109 116A 11AF;C1B0;1109 116A 11AF;
+C1B1;C1B1;1109 116A 11B0;C1B1;1109 116A 11B0;
+C1B2;C1B2;1109 116A 11B1;C1B2;1109 116A 11B1;
+C1B3;C1B3;1109 116A 11B2;C1B3;1109 116A 11B2;
+C1B4;C1B4;1109 116A 11B3;C1B4;1109 116A 11B3;
+C1B5;C1B5;1109 116A 11B4;C1B5;1109 116A 11B4;
+C1B6;C1B6;1109 116A 11B5;C1B6;1109 116A 11B5;
+C1B7;C1B7;1109 116A 11B6;C1B7;1109 116A 11B6;
+C1B8;C1B8;1109 116A 11B7;C1B8;1109 116A 11B7;
+C1B9;C1B9;1109 116A 11B8;C1B9;1109 116A 11B8;
+C1BA;C1BA;1109 116A 11B9;C1BA;1109 116A 11B9;
+C1BB;C1BB;1109 116A 11BA;C1BB;1109 116A 11BA;
+C1BC;C1BC;1109 116A 11BB;C1BC;1109 116A 11BB;
+C1BD;C1BD;1109 116A 11BC;C1BD;1109 116A 11BC;
+C1BE;C1BE;1109 116A 11BD;C1BE;1109 116A 11BD;
+C1BF;C1BF;1109 116A 11BE;C1BF;1109 116A 11BE;
+C1C0;C1C0;1109 116A 11BF;C1C0;1109 116A 11BF;
+C1C1;C1C1;1109 116A 11C0;C1C1;1109 116A 11C0;
+C1C2;C1C2;1109 116A 11C1;C1C2;1109 116A 11C1;
+C1C3;C1C3;1109 116A 11C2;C1C3;1109 116A 11C2;
+C1C4;C1C4;1109 116B;C1C4;1109 116B;
+C1C5;C1C5;1109 116B 11A8;C1C5;1109 116B 11A8;
+C1C6;C1C6;1109 116B 11A9;C1C6;1109 116B 11A9;
+C1C7;C1C7;1109 116B 11AA;C1C7;1109 116B 11AA;
+C1C8;C1C8;1109 116B 11AB;C1C8;1109 116B 11AB;
+C1C9;C1C9;1109 116B 11AC;C1C9;1109 116B 11AC;
+C1CA;C1CA;1109 116B 11AD;C1CA;1109 116B 11AD;
+C1CB;C1CB;1109 116B 11AE;C1CB;1109 116B 11AE;
+C1CC;C1CC;1109 116B 11AF;C1CC;1109 116B 11AF;
+C1CD;C1CD;1109 116B 11B0;C1CD;1109 116B 11B0;
+C1CE;C1CE;1109 116B 11B1;C1CE;1109 116B 11B1;
+C1CF;C1CF;1109 116B 11B2;C1CF;1109 116B 11B2;
+C1D0;C1D0;1109 116B 11B3;C1D0;1109 116B 11B3;
+C1D1;C1D1;1109 116B 11B4;C1D1;1109 116B 11B4;
+C1D2;C1D2;1109 116B 11B5;C1D2;1109 116B 11B5;
+C1D3;C1D3;1109 116B 11B6;C1D3;1109 116B 11B6;
+C1D4;C1D4;1109 116B 11B7;C1D4;1109 116B 11B7;
+C1D5;C1D5;1109 116B 11B8;C1D5;1109 116B 11B8;
+C1D6;C1D6;1109 116B 11B9;C1D6;1109 116B 11B9;
+C1D7;C1D7;1109 116B 11BA;C1D7;1109 116B 11BA;
+C1D8;C1D8;1109 116B 11BB;C1D8;1109 116B 11BB;
+C1D9;C1D9;1109 116B 11BC;C1D9;1109 116B 11BC;
+C1DA;C1DA;1109 116B 11BD;C1DA;1109 116B 11BD;
+C1DB;C1DB;1109 116B 11BE;C1DB;1109 116B 11BE;
+C1DC;C1DC;1109 116B 11BF;C1DC;1109 116B 11BF;
+C1DD;C1DD;1109 116B 11C0;C1DD;1109 116B 11C0;
+C1DE;C1DE;1109 116B 11C1;C1DE;1109 116B 11C1;
+C1DF;C1DF;1109 116B 11C2;C1DF;1109 116B 11C2;
+C1E0;C1E0;1109 116C;C1E0;1109 116C;
+C1E1;C1E1;1109 116C 11A8;C1E1;1109 116C 11A8;
+C1E2;C1E2;1109 116C 11A9;C1E2;1109 116C 11A9;
+C1E3;C1E3;1109 116C 11AA;C1E3;1109 116C 11AA;
+C1E4;C1E4;1109 116C 11AB;C1E4;1109 116C 11AB;
+C1E5;C1E5;1109 116C 11AC;C1E5;1109 116C 11AC;
+C1E6;C1E6;1109 116C 11AD;C1E6;1109 116C 11AD;
+C1E7;C1E7;1109 116C 11AE;C1E7;1109 116C 11AE;
+C1E8;C1E8;1109 116C 11AF;C1E8;1109 116C 11AF;
+C1E9;C1E9;1109 116C 11B0;C1E9;1109 116C 11B0;
+C1EA;C1EA;1109 116C 11B1;C1EA;1109 116C 11B1;
+C1EB;C1EB;1109 116C 11B2;C1EB;1109 116C 11B2;
+C1EC;C1EC;1109 116C 11B3;C1EC;1109 116C 11B3;
+C1ED;C1ED;1109 116C 11B4;C1ED;1109 116C 11B4;
+C1EE;C1EE;1109 116C 11B5;C1EE;1109 116C 11B5;
+C1EF;C1EF;1109 116C 11B6;C1EF;1109 116C 11B6;
+C1F0;C1F0;1109 116C 11B7;C1F0;1109 116C 11B7;
+C1F1;C1F1;1109 116C 11B8;C1F1;1109 116C 11B8;
+C1F2;C1F2;1109 116C 11B9;C1F2;1109 116C 11B9;
+C1F3;C1F3;1109 116C 11BA;C1F3;1109 116C 11BA;
+C1F4;C1F4;1109 116C 11BB;C1F4;1109 116C 11BB;
+C1F5;C1F5;1109 116C 11BC;C1F5;1109 116C 11BC;
+C1F6;C1F6;1109 116C 11BD;C1F6;1109 116C 11BD;
+C1F7;C1F7;1109 116C 11BE;C1F7;1109 116C 11BE;
+C1F8;C1F8;1109 116C 11BF;C1F8;1109 116C 11BF;
+C1F9;C1F9;1109 116C 11C0;C1F9;1109 116C 11C0;
+C1FA;C1FA;1109 116C 11C1;C1FA;1109 116C 11C1;
+C1FB;C1FB;1109 116C 11C2;C1FB;1109 116C 11C2;
+C1FC;C1FC;1109 116D;C1FC;1109 116D;
+C1FD;C1FD;1109 116D 11A8;C1FD;1109 116D 11A8;
+C1FE;C1FE;1109 116D 11A9;C1FE;1109 116D 11A9;
+C1FF;C1FF;1109 116D 11AA;C1FF;1109 116D 11AA;
+C200;C200;1109 116D 11AB;C200;1109 116D 11AB;
+C201;C201;1109 116D 11AC;C201;1109 116D 11AC;
+C202;C202;1109 116D 11AD;C202;1109 116D 11AD;
+C203;C203;1109 116D 11AE;C203;1109 116D 11AE;
+C204;C204;1109 116D 11AF;C204;1109 116D 11AF;
+C205;C205;1109 116D 11B0;C205;1109 116D 11B0;
+C206;C206;1109 116D 11B1;C206;1109 116D 11B1;
+C207;C207;1109 116D 11B2;C207;1109 116D 11B2;
+C208;C208;1109 116D 11B3;C208;1109 116D 11B3;
+C209;C209;1109 116D 11B4;C209;1109 116D 11B4;
+C20A;C20A;1109 116D 11B5;C20A;1109 116D 11B5;
+C20B;C20B;1109 116D 11B6;C20B;1109 116D 11B6;
+C20C;C20C;1109 116D 11B7;C20C;1109 116D 11B7;
+C20D;C20D;1109 116D 11B8;C20D;1109 116D 11B8;
+C20E;C20E;1109 116D 11B9;C20E;1109 116D 11B9;
+C20F;C20F;1109 116D 11BA;C20F;1109 116D 11BA;
+C210;C210;1109 116D 11BB;C210;1109 116D 11BB;
+C211;C211;1109 116D 11BC;C211;1109 116D 11BC;
+C212;C212;1109 116D 11BD;C212;1109 116D 11BD;
+C213;C213;1109 116D 11BE;C213;1109 116D 11BE;
+C214;C214;1109 116D 11BF;C214;1109 116D 11BF;
+C215;C215;1109 116D 11C0;C215;1109 116D 11C0;
+C216;C216;1109 116D 11C1;C216;1109 116D 11C1;
+C217;C217;1109 116D 11C2;C217;1109 116D 11C2;
+C218;C218;1109 116E;C218;1109 116E;
+C219;C219;1109 116E 11A8;C219;1109 116E 11A8;
+C21A;C21A;1109 116E 11A9;C21A;1109 116E 11A9;
+C21B;C21B;1109 116E 11AA;C21B;1109 116E 11AA;
+C21C;C21C;1109 116E 11AB;C21C;1109 116E 11AB;
+C21D;C21D;1109 116E 11AC;C21D;1109 116E 11AC;
+C21E;C21E;1109 116E 11AD;C21E;1109 116E 11AD;
+C21F;C21F;1109 116E 11AE;C21F;1109 116E 11AE;
+C220;C220;1109 116E 11AF;C220;1109 116E 11AF;
+C221;C221;1109 116E 11B0;C221;1109 116E 11B0;
+C222;C222;1109 116E 11B1;C222;1109 116E 11B1;
+C223;C223;1109 116E 11B2;C223;1109 116E 11B2;
+C224;C224;1109 116E 11B3;C224;1109 116E 11B3;
+C225;C225;1109 116E 11B4;C225;1109 116E 11B4;
+C226;C226;1109 116E 11B5;C226;1109 116E 11B5;
+C227;C227;1109 116E 11B6;C227;1109 116E 11B6;
+C228;C228;1109 116E 11B7;C228;1109 116E 11B7;
+C229;C229;1109 116E 11B8;C229;1109 116E 11B8;
+C22A;C22A;1109 116E 11B9;C22A;1109 116E 11B9;
+C22B;C22B;1109 116E 11BA;C22B;1109 116E 11BA;
+C22C;C22C;1109 116E 11BB;C22C;1109 116E 11BB;
+C22D;C22D;1109 116E 11BC;C22D;1109 116E 11BC;
+C22E;C22E;1109 116E 11BD;C22E;1109 116E 11BD;
+C22F;C22F;1109 116E 11BE;C22F;1109 116E 11BE;
+C230;C230;1109 116E 11BF;C230;1109 116E 11BF;
+C231;C231;1109 116E 11C0;C231;1109 116E 11C0;
+C232;C232;1109 116E 11C1;C232;1109 116E 11C1;
+C233;C233;1109 116E 11C2;C233;1109 116E 11C2;
+C234;C234;1109 116F;C234;1109 116F;
+C235;C235;1109 116F 11A8;C235;1109 116F 11A8;
+C236;C236;1109 116F 11A9;C236;1109 116F 11A9;
+C237;C237;1109 116F 11AA;C237;1109 116F 11AA;
+C238;C238;1109 116F 11AB;C238;1109 116F 11AB;
+C239;C239;1109 116F 11AC;C239;1109 116F 11AC;
+C23A;C23A;1109 116F 11AD;C23A;1109 116F 11AD;
+C23B;C23B;1109 116F 11AE;C23B;1109 116F 11AE;
+C23C;C23C;1109 116F 11AF;C23C;1109 116F 11AF;
+C23D;C23D;1109 116F 11B0;C23D;1109 116F 11B0;
+C23E;C23E;1109 116F 11B1;C23E;1109 116F 11B1;
+C23F;C23F;1109 116F 11B2;C23F;1109 116F 11B2;
+C240;C240;1109 116F 11B3;C240;1109 116F 11B3;
+C241;C241;1109 116F 11B4;C241;1109 116F 11B4;
+C242;C242;1109 116F 11B5;C242;1109 116F 11B5;
+C243;C243;1109 116F 11B6;C243;1109 116F 11B6;
+C244;C244;1109 116F 11B7;C244;1109 116F 11B7;
+C245;C245;1109 116F 11B8;C245;1109 116F 11B8;
+C246;C246;1109 116F 11B9;C246;1109 116F 11B9;
+C247;C247;1109 116F 11BA;C247;1109 116F 11BA;
+C248;C248;1109 116F 11BB;C248;1109 116F 11BB;
+C249;C249;1109 116F 11BC;C249;1109 116F 11BC;
+C24A;C24A;1109 116F 11BD;C24A;1109 116F 11BD;
+C24B;C24B;1109 116F 11BE;C24B;1109 116F 11BE;
+C24C;C24C;1109 116F 11BF;C24C;1109 116F 11BF;
+C24D;C24D;1109 116F 11C0;C24D;1109 116F 11C0;
+C24E;C24E;1109 116F 11C1;C24E;1109 116F 11C1;
+C24F;C24F;1109 116F 11C2;C24F;1109 116F 11C2;
+C250;C250;1109 1170;C250;1109 1170;
+C251;C251;1109 1170 11A8;C251;1109 1170 11A8;
+C252;C252;1109 1170 11A9;C252;1109 1170 11A9;
+C253;C253;1109 1170 11AA;C253;1109 1170 11AA;
+C254;C254;1109 1170 11AB;C254;1109 1170 11AB;
+C255;C255;1109 1170 11AC;C255;1109 1170 11AC;
+C256;C256;1109 1170 11AD;C256;1109 1170 11AD;
+C257;C257;1109 1170 11AE;C257;1109 1170 11AE;
+C258;C258;1109 1170 11AF;C258;1109 1170 11AF;
+C259;C259;1109 1170 11B0;C259;1109 1170 11B0;
+C25A;C25A;1109 1170 11B1;C25A;1109 1170 11B1;
+C25B;C25B;1109 1170 11B2;C25B;1109 1170 11B2;
+C25C;C25C;1109 1170 11B3;C25C;1109 1170 11B3;
+C25D;C25D;1109 1170 11B4;C25D;1109 1170 11B4;
+C25E;C25E;1109 1170 11B5;C25E;1109 1170 11B5;
+C25F;C25F;1109 1170 11B6;C25F;1109 1170 11B6;
+C260;C260;1109 1170 11B7;C260;1109 1170 11B7;
+C261;C261;1109 1170 11B8;C261;1109 1170 11B8;
+C262;C262;1109 1170 11B9;C262;1109 1170 11B9;
+C263;C263;1109 1170 11BA;C263;1109 1170 11BA;
+C264;C264;1109 1170 11BB;C264;1109 1170 11BB;
+C265;C265;1109 1170 11BC;C265;1109 1170 11BC;
+C266;C266;1109 1170 11BD;C266;1109 1170 11BD;
+C267;C267;1109 1170 11BE;C267;1109 1170 11BE;
+C268;C268;1109 1170 11BF;C268;1109 1170 11BF;
+C269;C269;1109 1170 11C0;C269;1109 1170 11C0;
+C26A;C26A;1109 1170 11C1;C26A;1109 1170 11C1;
+C26B;C26B;1109 1170 11C2;C26B;1109 1170 11C2;
+C26C;C26C;1109 1171;C26C;1109 1171;
+C26D;C26D;1109 1171 11A8;C26D;1109 1171 11A8;
+C26E;C26E;1109 1171 11A9;C26E;1109 1171 11A9;
+C26F;C26F;1109 1171 11AA;C26F;1109 1171 11AA;
+C270;C270;1109 1171 11AB;C270;1109 1171 11AB;
+C271;C271;1109 1171 11AC;C271;1109 1171 11AC;
+C272;C272;1109 1171 11AD;C272;1109 1171 11AD;
+C273;C273;1109 1171 11AE;C273;1109 1171 11AE;
+C274;C274;1109 1171 11AF;C274;1109 1171 11AF;
+C275;C275;1109 1171 11B0;C275;1109 1171 11B0;
+C276;C276;1109 1171 11B1;C276;1109 1171 11B1;
+C277;C277;1109 1171 11B2;C277;1109 1171 11B2;
+C278;C278;1109 1171 11B3;C278;1109 1171 11B3;
+C279;C279;1109 1171 11B4;C279;1109 1171 11B4;
+C27A;C27A;1109 1171 11B5;C27A;1109 1171 11B5;
+C27B;C27B;1109 1171 11B6;C27B;1109 1171 11B6;
+C27C;C27C;1109 1171 11B7;C27C;1109 1171 11B7;
+C27D;C27D;1109 1171 11B8;C27D;1109 1171 11B8;
+C27E;C27E;1109 1171 11B9;C27E;1109 1171 11B9;
+C27F;C27F;1109 1171 11BA;C27F;1109 1171 11BA;
+C280;C280;1109 1171 11BB;C280;1109 1171 11BB;
+C281;C281;1109 1171 11BC;C281;1109 1171 11BC;
+C282;C282;1109 1171 11BD;C282;1109 1171 11BD;
+C283;C283;1109 1171 11BE;C283;1109 1171 11BE;
+C284;C284;1109 1171 11BF;C284;1109 1171 11BF;
+C285;C285;1109 1171 11C0;C285;1109 1171 11C0;
+C286;C286;1109 1171 11C1;C286;1109 1171 11C1;
+C287;C287;1109 1171 11C2;C287;1109 1171 11C2;
+C288;C288;1109 1172;C288;1109 1172;
+C289;C289;1109 1172 11A8;C289;1109 1172 11A8;
+C28A;C28A;1109 1172 11A9;C28A;1109 1172 11A9;
+C28B;C28B;1109 1172 11AA;C28B;1109 1172 11AA;
+C28C;C28C;1109 1172 11AB;C28C;1109 1172 11AB;
+C28D;C28D;1109 1172 11AC;C28D;1109 1172 11AC;
+C28E;C28E;1109 1172 11AD;C28E;1109 1172 11AD;
+C28F;C28F;1109 1172 11AE;C28F;1109 1172 11AE;
+C290;C290;1109 1172 11AF;C290;1109 1172 11AF;
+C291;C291;1109 1172 11B0;C291;1109 1172 11B0;
+C292;C292;1109 1172 11B1;C292;1109 1172 11B1;
+C293;C293;1109 1172 11B2;C293;1109 1172 11B2;
+C294;C294;1109 1172 11B3;C294;1109 1172 11B3;
+C295;C295;1109 1172 11B4;C295;1109 1172 11B4;
+C296;C296;1109 1172 11B5;C296;1109 1172 11B5;
+C297;C297;1109 1172 11B6;C297;1109 1172 11B6;
+C298;C298;1109 1172 11B7;C298;1109 1172 11B7;
+C299;C299;1109 1172 11B8;C299;1109 1172 11B8;
+C29A;C29A;1109 1172 11B9;C29A;1109 1172 11B9;
+C29B;C29B;1109 1172 11BA;C29B;1109 1172 11BA;
+C29C;C29C;1109 1172 11BB;C29C;1109 1172 11BB;
+C29D;C29D;1109 1172 11BC;C29D;1109 1172 11BC;
+C29E;C29E;1109 1172 11BD;C29E;1109 1172 11BD;
+C29F;C29F;1109 1172 11BE;C29F;1109 1172 11BE;
+C2A0;C2A0;1109 1172 11BF;C2A0;1109 1172 11BF;
+C2A1;C2A1;1109 1172 11C0;C2A1;1109 1172 11C0;
+C2A2;C2A2;1109 1172 11C1;C2A2;1109 1172 11C1;
+C2A3;C2A3;1109 1172 11C2;C2A3;1109 1172 11C2;
+C2A4;C2A4;1109 1173;C2A4;1109 1173;
+C2A5;C2A5;1109 1173 11A8;C2A5;1109 1173 11A8;
+C2A6;C2A6;1109 1173 11A9;C2A6;1109 1173 11A9;
+C2A7;C2A7;1109 1173 11AA;C2A7;1109 1173 11AA;
+C2A8;C2A8;1109 1173 11AB;C2A8;1109 1173 11AB;
+C2A9;C2A9;1109 1173 11AC;C2A9;1109 1173 11AC;
+C2AA;C2AA;1109 1173 11AD;C2AA;1109 1173 11AD;
+C2AB;C2AB;1109 1173 11AE;C2AB;1109 1173 11AE;
+C2AC;C2AC;1109 1173 11AF;C2AC;1109 1173 11AF;
+C2AD;C2AD;1109 1173 11B0;C2AD;1109 1173 11B0;
+C2AE;C2AE;1109 1173 11B1;C2AE;1109 1173 11B1;
+C2AF;C2AF;1109 1173 11B2;C2AF;1109 1173 11B2;
+C2B0;C2B0;1109 1173 11B3;C2B0;1109 1173 11B3;
+C2B1;C2B1;1109 1173 11B4;C2B1;1109 1173 11B4;
+C2B2;C2B2;1109 1173 11B5;C2B2;1109 1173 11B5;
+C2B3;C2B3;1109 1173 11B6;C2B3;1109 1173 11B6;
+C2B4;C2B4;1109 1173 11B7;C2B4;1109 1173 11B7;
+C2B5;C2B5;1109 1173 11B8;C2B5;1109 1173 11B8;
+C2B6;C2B6;1109 1173 11B9;C2B6;1109 1173 11B9;
+C2B7;C2B7;1109 1173 11BA;C2B7;1109 1173 11BA;
+C2B8;C2B8;1109 1173 11BB;C2B8;1109 1173 11BB;
+C2B9;C2B9;1109 1173 11BC;C2B9;1109 1173 11BC;
+C2BA;C2BA;1109 1173 11BD;C2BA;1109 1173 11BD;
+C2BB;C2BB;1109 1173 11BE;C2BB;1109 1173 11BE;
+C2BC;C2BC;1109 1173 11BF;C2BC;1109 1173 11BF;
+C2BD;C2BD;1109 1173 11C0;C2BD;1109 1173 11C0;
+C2BE;C2BE;1109 1173 11C1;C2BE;1109 1173 11C1;
+C2BF;C2BF;1109 1173 11C2;C2BF;1109 1173 11C2;
+C2C0;C2C0;1109 1174;C2C0;1109 1174;
+C2C1;C2C1;1109 1174 11A8;C2C1;1109 1174 11A8;
+C2C2;C2C2;1109 1174 11A9;C2C2;1109 1174 11A9;
+C2C3;C2C3;1109 1174 11AA;C2C3;1109 1174 11AA;
+C2C4;C2C4;1109 1174 11AB;C2C4;1109 1174 11AB;
+C2C5;C2C5;1109 1174 11AC;C2C5;1109 1174 11AC;
+C2C6;C2C6;1109 1174 11AD;C2C6;1109 1174 11AD;
+C2C7;C2C7;1109 1174 11AE;C2C7;1109 1174 11AE;
+C2C8;C2C8;1109 1174 11AF;C2C8;1109 1174 11AF;
+C2C9;C2C9;1109 1174 11B0;C2C9;1109 1174 11B0;
+C2CA;C2CA;1109 1174 11B1;C2CA;1109 1174 11B1;
+C2CB;C2CB;1109 1174 11B2;C2CB;1109 1174 11B2;
+C2CC;C2CC;1109 1174 11B3;C2CC;1109 1174 11B3;
+C2CD;C2CD;1109 1174 11B4;C2CD;1109 1174 11B4;
+C2CE;C2CE;1109 1174 11B5;C2CE;1109 1174 11B5;
+C2CF;C2CF;1109 1174 11B6;C2CF;1109 1174 11B6;
+C2D0;C2D0;1109 1174 11B7;C2D0;1109 1174 11B7;
+C2D1;C2D1;1109 1174 11B8;C2D1;1109 1174 11B8;
+C2D2;C2D2;1109 1174 11B9;C2D2;1109 1174 11B9;
+C2D3;C2D3;1109 1174 11BA;C2D3;1109 1174 11BA;
+C2D4;C2D4;1109 1174 11BB;C2D4;1109 1174 11BB;
+C2D5;C2D5;1109 1174 11BC;C2D5;1109 1174 11BC;
+C2D6;C2D6;1109 1174 11BD;C2D6;1109 1174 11BD;
+C2D7;C2D7;1109 1174 11BE;C2D7;1109 1174 11BE;
+C2D8;C2D8;1109 1174 11BF;C2D8;1109 1174 11BF;
+C2D9;C2D9;1109 1174 11C0;C2D9;1109 1174 11C0;
+C2DA;C2DA;1109 1174 11C1;C2DA;1109 1174 11C1;
+C2DB;C2DB;1109 1174 11C2;C2DB;1109 1174 11C2;
+C2DC;C2DC;1109 1175;C2DC;1109 1175;
+C2DD;C2DD;1109 1175 11A8;C2DD;1109 1175 11A8;
+C2DE;C2DE;1109 1175 11A9;C2DE;1109 1175 11A9;
+C2DF;C2DF;1109 1175 11AA;C2DF;1109 1175 11AA;
+C2E0;C2E0;1109 1175 11AB;C2E0;1109 1175 11AB;
+C2E1;C2E1;1109 1175 11AC;C2E1;1109 1175 11AC;
+C2E2;C2E2;1109 1175 11AD;C2E2;1109 1175 11AD;
+C2E3;C2E3;1109 1175 11AE;C2E3;1109 1175 11AE;
+C2E4;C2E4;1109 1175 11AF;C2E4;1109 1175 11AF;
+C2E5;C2E5;1109 1175 11B0;C2E5;1109 1175 11B0;
+C2E6;C2E6;1109 1175 11B1;C2E6;1109 1175 11B1;
+C2E7;C2E7;1109 1175 11B2;C2E7;1109 1175 11B2;
+C2E8;C2E8;1109 1175 11B3;C2E8;1109 1175 11B3;
+C2E9;C2E9;1109 1175 11B4;C2E9;1109 1175 11B4;
+C2EA;C2EA;1109 1175 11B5;C2EA;1109 1175 11B5;
+C2EB;C2EB;1109 1175 11B6;C2EB;1109 1175 11B6;
+C2EC;C2EC;1109 1175 11B7;C2EC;1109 1175 11B7;
+C2ED;C2ED;1109 1175 11B8;C2ED;1109 1175 11B8;
+C2EE;C2EE;1109 1175 11B9;C2EE;1109 1175 11B9;
+C2EF;C2EF;1109 1175 11BA;C2EF;1109 1175 11BA;
+C2F0;C2F0;1109 1175 11BB;C2F0;1109 1175 11BB;
+C2F1;C2F1;1109 1175 11BC;C2F1;1109 1175 11BC;
+C2F2;C2F2;1109 1175 11BD;C2F2;1109 1175 11BD;
+C2F3;C2F3;1109 1175 11BE;C2F3;1109 1175 11BE;
+C2F4;C2F4;1109 1175 11BF;C2F4;1109 1175 11BF;
+C2F5;C2F5;1109 1175 11C0;C2F5;1109 1175 11C0;
+C2F6;C2F6;1109 1175 11C1;C2F6;1109 1175 11C1;
+C2F7;C2F7;1109 1175 11C2;C2F7;1109 1175 11C2;
+C2F8;C2F8;110A 1161;C2F8;110A 1161;
+C2F9;C2F9;110A 1161 11A8;C2F9;110A 1161 11A8;
+C2FA;C2FA;110A 1161 11A9;C2FA;110A 1161 11A9;
+C2FB;C2FB;110A 1161 11AA;C2FB;110A 1161 11AA;
+C2FC;C2FC;110A 1161 11AB;C2FC;110A 1161 11AB;
+C2FD;C2FD;110A 1161 11AC;C2FD;110A 1161 11AC;
+C2FE;C2FE;110A 1161 11AD;C2FE;110A 1161 11AD;
+C2FF;C2FF;110A 1161 11AE;C2FF;110A 1161 11AE;
+C300;C300;110A 1161 11AF;C300;110A 1161 11AF;
+C301;C301;110A 1161 11B0;C301;110A 1161 11B0;
+C302;C302;110A 1161 11B1;C302;110A 1161 11B1;
+C303;C303;110A 1161 11B2;C303;110A 1161 11B2;
+C304;C304;110A 1161 11B3;C304;110A 1161 11B3;
+C305;C305;110A 1161 11B4;C305;110A 1161 11B4;
+C306;C306;110A 1161 11B5;C306;110A 1161 11B5;
+C307;C307;110A 1161 11B6;C307;110A 1161 11B6;
+C308;C308;110A 1161 11B7;C308;110A 1161 11B7;
+C309;C309;110A 1161 11B8;C309;110A 1161 11B8;
+C30A;C30A;110A 1161 11B9;C30A;110A 1161 11B9;
+C30B;C30B;110A 1161 11BA;C30B;110A 1161 11BA;
+C30C;C30C;110A 1161 11BB;C30C;110A 1161 11BB;
+C30D;C30D;110A 1161 11BC;C30D;110A 1161 11BC;
+C30E;C30E;110A 1161 11BD;C30E;110A 1161 11BD;
+C30F;C30F;110A 1161 11BE;C30F;110A 1161 11BE;
+C310;C310;110A 1161 11BF;C310;110A 1161 11BF;
+C311;C311;110A 1161 11C0;C311;110A 1161 11C0;
+C312;C312;110A 1161 11C1;C312;110A 1161 11C1;
+C313;C313;110A 1161 11C2;C313;110A 1161 11C2;
+C314;C314;110A 1162;C314;110A 1162;
+C315;C315;110A 1162 11A8;C315;110A 1162 11A8;
+C316;C316;110A 1162 11A9;C316;110A 1162 11A9;
+C317;C317;110A 1162 11AA;C317;110A 1162 11AA;
+C318;C318;110A 1162 11AB;C318;110A 1162 11AB;
+C319;C319;110A 1162 11AC;C319;110A 1162 11AC;
+C31A;C31A;110A 1162 11AD;C31A;110A 1162 11AD;
+C31B;C31B;110A 1162 11AE;C31B;110A 1162 11AE;
+C31C;C31C;110A 1162 11AF;C31C;110A 1162 11AF;
+C31D;C31D;110A 1162 11B0;C31D;110A 1162 11B0;
+C31E;C31E;110A 1162 11B1;C31E;110A 1162 11B1;
+C31F;C31F;110A 1162 11B2;C31F;110A 1162 11B2;
+C320;C320;110A 1162 11B3;C320;110A 1162 11B3;
+C321;C321;110A 1162 11B4;C321;110A 1162 11B4;
+C322;C322;110A 1162 11B5;C322;110A 1162 11B5;
+C323;C323;110A 1162 11B6;C323;110A 1162 11B6;
+C324;C324;110A 1162 11B7;C324;110A 1162 11B7;
+C325;C325;110A 1162 11B8;C325;110A 1162 11B8;
+C326;C326;110A 1162 11B9;C326;110A 1162 11B9;
+C327;C327;110A 1162 11BA;C327;110A 1162 11BA;
+C328;C328;110A 1162 11BB;C328;110A 1162 11BB;
+C329;C329;110A 1162 11BC;C329;110A 1162 11BC;
+C32A;C32A;110A 1162 11BD;C32A;110A 1162 11BD;
+C32B;C32B;110A 1162 11BE;C32B;110A 1162 11BE;
+C32C;C32C;110A 1162 11BF;C32C;110A 1162 11BF;
+C32D;C32D;110A 1162 11C0;C32D;110A 1162 11C0;
+C32E;C32E;110A 1162 11C1;C32E;110A 1162 11C1;
+C32F;C32F;110A 1162 11C2;C32F;110A 1162 11C2;
+C330;C330;110A 1163;C330;110A 1163;
+C331;C331;110A 1163 11A8;C331;110A 1163 11A8;
+C332;C332;110A 1163 11A9;C332;110A 1163 11A9;
+C333;C333;110A 1163 11AA;C333;110A 1163 11AA;
+C334;C334;110A 1163 11AB;C334;110A 1163 11AB;
+C335;C335;110A 1163 11AC;C335;110A 1163 11AC;
+C336;C336;110A 1163 11AD;C336;110A 1163 11AD;
+C337;C337;110A 1163 11AE;C337;110A 1163 11AE;
+C338;C338;110A 1163 11AF;C338;110A 1163 11AF;
+C339;C339;110A 1163 11B0;C339;110A 1163 11B0;
+C33A;C33A;110A 1163 11B1;C33A;110A 1163 11B1;
+C33B;C33B;110A 1163 11B2;C33B;110A 1163 11B2;
+C33C;C33C;110A 1163 11B3;C33C;110A 1163 11B3;
+C33D;C33D;110A 1163 11B4;C33D;110A 1163 11B4;
+C33E;C33E;110A 1163 11B5;C33E;110A 1163 11B5;
+C33F;C33F;110A 1163 11B6;C33F;110A 1163 11B6;
+C340;C340;110A 1163 11B7;C340;110A 1163 11B7;
+C341;C341;110A 1163 11B8;C341;110A 1163 11B8;
+C342;C342;110A 1163 11B9;C342;110A 1163 11B9;
+C343;C343;110A 1163 11BA;C343;110A 1163 11BA;
+C344;C344;110A 1163 11BB;C344;110A 1163 11BB;
+C345;C345;110A 1163 11BC;C345;110A 1163 11BC;
+C346;C346;110A 1163 11BD;C346;110A 1163 11BD;
+C347;C347;110A 1163 11BE;C347;110A 1163 11BE;
+C348;C348;110A 1163 11BF;C348;110A 1163 11BF;
+C349;C349;110A 1163 11C0;C349;110A 1163 11C0;
+C34A;C34A;110A 1163 11C1;C34A;110A 1163 11C1;
+C34B;C34B;110A 1163 11C2;C34B;110A 1163 11C2;
+C34C;C34C;110A 1164;C34C;110A 1164;
+C34D;C34D;110A 1164 11A8;C34D;110A 1164 11A8;
+C34E;C34E;110A 1164 11A9;C34E;110A 1164 11A9;
+C34F;C34F;110A 1164 11AA;C34F;110A 1164 11AA;
+C350;C350;110A 1164 11AB;C350;110A 1164 11AB;
+C351;C351;110A 1164 11AC;C351;110A 1164 11AC;
+C352;C352;110A 1164 11AD;C352;110A 1164 11AD;
+C353;C353;110A 1164 11AE;C353;110A 1164 11AE;
+C354;C354;110A 1164 11AF;C354;110A 1164 11AF;
+C355;C355;110A 1164 11B0;C355;110A 1164 11B0;
+C356;C356;110A 1164 11B1;C356;110A 1164 11B1;
+C357;C357;110A 1164 11B2;C357;110A 1164 11B2;
+C358;C358;110A 1164 11B3;C358;110A 1164 11B3;
+C359;C359;110A 1164 11B4;C359;110A 1164 11B4;
+C35A;C35A;110A 1164 11B5;C35A;110A 1164 11B5;
+C35B;C35B;110A 1164 11B6;C35B;110A 1164 11B6;
+C35C;C35C;110A 1164 11B7;C35C;110A 1164 11B7;
+C35D;C35D;110A 1164 11B8;C35D;110A 1164 11B8;
+C35E;C35E;110A 1164 11B9;C35E;110A 1164 11B9;
+C35F;C35F;110A 1164 11BA;C35F;110A 1164 11BA;
+C360;C360;110A 1164 11BB;C360;110A 1164 11BB;
+C361;C361;110A 1164 11BC;C361;110A 1164 11BC;
+C362;C362;110A 1164 11BD;C362;110A 1164 11BD;
+C363;C363;110A 1164 11BE;C363;110A 1164 11BE;
+C364;C364;110A 1164 11BF;C364;110A 1164 11BF;
+C365;C365;110A 1164 11C0;C365;110A 1164 11C0;
+C366;C366;110A 1164 11C1;C366;110A 1164 11C1;
+C367;C367;110A 1164 11C2;C367;110A 1164 11C2;
+C368;C368;110A 1165;C368;110A 1165;
+C369;C369;110A 1165 11A8;C369;110A 1165 11A8;
+C36A;C36A;110A 1165 11A9;C36A;110A 1165 11A9;
+C36B;C36B;110A 1165 11AA;C36B;110A 1165 11AA;
+C36C;C36C;110A 1165 11AB;C36C;110A 1165 11AB;
+C36D;C36D;110A 1165 11AC;C36D;110A 1165 11AC;
+C36E;C36E;110A 1165 11AD;C36E;110A 1165 11AD;
+C36F;C36F;110A 1165 11AE;C36F;110A 1165 11AE;
+C370;C370;110A 1165 11AF;C370;110A 1165 11AF;
+C371;C371;110A 1165 11B0;C371;110A 1165 11B0;
+C372;C372;110A 1165 11B1;C372;110A 1165 11B1;
+C373;C373;110A 1165 11B2;C373;110A 1165 11B2;
+C374;C374;110A 1165 11B3;C374;110A 1165 11B3;
+C375;C375;110A 1165 11B4;C375;110A 1165 11B4;
+C376;C376;110A 1165 11B5;C376;110A 1165 11B5;
+C377;C377;110A 1165 11B6;C377;110A 1165 11B6;
+C378;C378;110A 1165 11B7;C378;110A 1165 11B7;
+C379;C379;110A 1165 11B8;C379;110A 1165 11B8;
+C37A;C37A;110A 1165 11B9;C37A;110A 1165 11B9;
+C37B;C37B;110A 1165 11BA;C37B;110A 1165 11BA;
+C37C;C37C;110A 1165 11BB;C37C;110A 1165 11BB;
+C37D;C37D;110A 1165 11BC;C37D;110A 1165 11BC;
+C37E;C37E;110A 1165 11BD;C37E;110A 1165 11BD;
+C37F;C37F;110A 1165 11BE;C37F;110A 1165 11BE;
+C380;C380;110A 1165 11BF;C380;110A 1165 11BF;
+C381;C381;110A 1165 11C0;C381;110A 1165 11C0;
+C382;C382;110A 1165 11C1;C382;110A 1165 11C1;
+C383;C383;110A 1165 11C2;C383;110A 1165 11C2;
+C384;C384;110A 1166;C384;110A 1166;
+C385;C385;110A 1166 11A8;C385;110A 1166 11A8;
+C386;C386;110A 1166 11A9;C386;110A 1166 11A9;
+C387;C387;110A 1166 11AA;C387;110A 1166 11AA;
+C388;C388;110A 1166 11AB;C388;110A 1166 11AB;
+C389;C389;110A 1166 11AC;C389;110A 1166 11AC;
+C38A;C38A;110A 1166 11AD;C38A;110A 1166 11AD;
+C38B;C38B;110A 1166 11AE;C38B;110A 1166 11AE;
+C38C;C38C;110A 1166 11AF;C38C;110A 1166 11AF;
+C38D;C38D;110A 1166 11B0;C38D;110A 1166 11B0;
+C38E;C38E;110A 1166 11B1;C38E;110A 1166 11B1;
+C38F;C38F;110A 1166 11B2;C38F;110A 1166 11B2;
+C390;C390;110A 1166 11B3;C390;110A 1166 11B3;
+C391;C391;110A 1166 11B4;C391;110A 1166 11B4;
+C392;C392;110A 1166 11B5;C392;110A 1166 11B5;
+C393;C393;110A 1166 11B6;C393;110A 1166 11B6;
+C394;C394;110A 1166 11B7;C394;110A 1166 11B7;
+C395;C395;110A 1166 11B8;C395;110A 1166 11B8;
+C396;C396;110A 1166 11B9;C396;110A 1166 11B9;
+C397;C397;110A 1166 11BA;C397;110A 1166 11BA;
+C398;C398;110A 1166 11BB;C398;110A 1166 11BB;
+C399;C399;110A 1166 11BC;C399;110A 1166 11BC;
+C39A;C39A;110A 1166 11BD;C39A;110A 1166 11BD;
+C39B;C39B;110A 1166 11BE;C39B;110A 1166 11BE;
+C39C;C39C;110A 1166 11BF;C39C;110A 1166 11BF;
+C39D;C39D;110A 1166 11C0;C39D;110A 1166 11C0;
+C39E;C39E;110A 1166 11C1;C39E;110A 1166 11C1;
+C39F;C39F;110A 1166 11C2;C39F;110A 1166 11C2;
+C3A0;C3A0;110A 1167;C3A0;110A 1167;
+C3A1;C3A1;110A 1167 11A8;C3A1;110A 1167 11A8;
+C3A2;C3A2;110A 1167 11A9;C3A2;110A 1167 11A9;
+C3A3;C3A3;110A 1167 11AA;C3A3;110A 1167 11AA;
+C3A4;C3A4;110A 1167 11AB;C3A4;110A 1167 11AB;
+C3A5;C3A5;110A 1167 11AC;C3A5;110A 1167 11AC;
+C3A6;C3A6;110A 1167 11AD;C3A6;110A 1167 11AD;
+C3A7;C3A7;110A 1167 11AE;C3A7;110A 1167 11AE;
+C3A8;C3A8;110A 1167 11AF;C3A8;110A 1167 11AF;
+C3A9;C3A9;110A 1167 11B0;C3A9;110A 1167 11B0;
+C3AA;C3AA;110A 1167 11B1;C3AA;110A 1167 11B1;
+C3AB;C3AB;110A 1167 11B2;C3AB;110A 1167 11B2;
+C3AC;C3AC;110A 1167 11B3;C3AC;110A 1167 11B3;
+C3AD;C3AD;110A 1167 11B4;C3AD;110A 1167 11B4;
+C3AE;C3AE;110A 1167 11B5;C3AE;110A 1167 11B5;
+C3AF;C3AF;110A 1167 11B6;C3AF;110A 1167 11B6;
+C3B0;C3B0;110A 1167 11B7;C3B0;110A 1167 11B7;
+C3B1;C3B1;110A 1167 11B8;C3B1;110A 1167 11B8;
+C3B2;C3B2;110A 1167 11B9;C3B2;110A 1167 11B9;
+C3B3;C3B3;110A 1167 11BA;C3B3;110A 1167 11BA;
+C3B4;C3B4;110A 1167 11BB;C3B4;110A 1167 11BB;
+C3B5;C3B5;110A 1167 11BC;C3B5;110A 1167 11BC;
+C3B6;C3B6;110A 1167 11BD;C3B6;110A 1167 11BD;
+C3B7;C3B7;110A 1167 11BE;C3B7;110A 1167 11BE;
+C3B8;C3B8;110A 1167 11BF;C3B8;110A 1167 11BF;
+C3B9;C3B9;110A 1167 11C0;C3B9;110A 1167 11C0;
+C3BA;C3BA;110A 1167 11C1;C3BA;110A 1167 11C1;
+C3BB;C3BB;110A 1167 11C2;C3BB;110A 1167 11C2;
+C3BC;C3BC;110A 1168;C3BC;110A 1168;
+C3BD;C3BD;110A 1168 11A8;C3BD;110A 1168 11A8;
+C3BE;C3BE;110A 1168 11A9;C3BE;110A 1168 11A9;
+C3BF;C3BF;110A 1168 11AA;C3BF;110A 1168 11AA;
+C3C0;C3C0;110A 1168 11AB;C3C0;110A 1168 11AB;
+C3C1;C3C1;110A 1168 11AC;C3C1;110A 1168 11AC;
+C3C2;C3C2;110A 1168 11AD;C3C2;110A 1168 11AD;
+C3C3;C3C3;110A 1168 11AE;C3C3;110A 1168 11AE;
+C3C4;C3C4;110A 1168 11AF;C3C4;110A 1168 11AF;
+C3C5;C3C5;110A 1168 11B0;C3C5;110A 1168 11B0;
+C3C6;C3C6;110A 1168 11B1;C3C6;110A 1168 11B1;
+C3C7;C3C7;110A 1168 11B2;C3C7;110A 1168 11B2;
+C3C8;C3C8;110A 1168 11B3;C3C8;110A 1168 11B3;
+C3C9;C3C9;110A 1168 11B4;C3C9;110A 1168 11B4;
+C3CA;C3CA;110A 1168 11B5;C3CA;110A 1168 11B5;
+C3CB;C3CB;110A 1168 11B6;C3CB;110A 1168 11B6;
+C3CC;C3CC;110A 1168 11B7;C3CC;110A 1168 11B7;
+C3CD;C3CD;110A 1168 11B8;C3CD;110A 1168 11B8;
+C3CE;C3CE;110A 1168 11B9;C3CE;110A 1168 11B9;
+C3CF;C3CF;110A 1168 11BA;C3CF;110A 1168 11BA;
+C3D0;C3D0;110A 1168 11BB;C3D0;110A 1168 11BB;
+C3D1;C3D1;110A 1168 11BC;C3D1;110A 1168 11BC;
+C3D2;C3D2;110A 1168 11BD;C3D2;110A 1168 11BD;
+C3D3;C3D3;110A 1168 11BE;C3D3;110A 1168 11BE;
+C3D4;C3D4;110A 1168 11BF;C3D4;110A 1168 11BF;
+C3D5;C3D5;110A 1168 11C0;C3D5;110A 1168 11C0;
+C3D6;C3D6;110A 1168 11C1;C3D6;110A 1168 11C1;
+C3D7;C3D7;110A 1168 11C2;C3D7;110A 1168 11C2;
+C3D8;C3D8;110A 1169;C3D8;110A 1169;
+C3D9;C3D9;110A 1169 11A8;C3D9;110A 1169 11A8;
+C3DA;C3DA;110A 1169 11A9;C3DA;110A 1169 11A9;
+C3DB;C3DB;110A 1169 11AA;C3DB;110A 1169 11AA;
+C3DC;C3DC;110A 1169 11AB;C3DC;110A 1169 11AB;
+C3DD;C3DD;110A 1169 11AC;C3DD;110A 1169 11AC;
+C3DE;C3DE;110A 1169 11AD;C3DE;110A 1169 11AD;
+C3DF;C3DF;110A 1169 11AE;C3DF;110A 1169 11AE;
+C3E0;C3E0;110A 1169 11AF;C3E0;110A 1169 11AF;
+C3E1;C3E1;110A 1169 11B0;C3E1;110A 1169 11B0;
+C3E2;C3E2;110A 1169 11B1;C3E2;110A 1169 11B1;
+C3E3;C3E3;110A 1169 11B2;C3E3;110A 1169 11B2;
+C3E4;C3E4;110A 1169 11B3;C3E4;110A 1169 11B3;
+C3E5;C3E5;110A 1169 11B4;C3E5;110A 1169 11B4;
+C3E6;C3E6;110A 1169 11B5;C3E6;110A 1169 11B5;
+C3E7;C3E7;110A 1169 11B6;C3E7;110A 1169 11B6;
+C3E8;C3E8;110A 1169 11B7;C3E8;110A 1169 11B7;
+C3E9;C3E9;110A 1169 11B8;C3E9;110A 1169 11B8;
+C3EA;C3EA;110A 1169 11B9;C3EA;110A 1169 11B9;
+C3EB;C3EB;110A 1169 11BA;C3EB;110A 1169 11BA;
+C3EC;C3EC;110A 1169 11BB;C3EC;110A 1169 11BB;
+C3ED;C3ED;110A 1169 11BC;C3ED;110A 1169 11BC;
+C3EE;C3EE;110A 1169 11BD;C3EE;110A 1169 11BD;
+C3EF;C3EF;110A 1169 11BE;C3EF;110A 1169 11BE;
+C3F0;C3F0;110A 1169 11BF;C3F0;110A 1169 11BF;
+C3F1;C3F1;110A 1169 11C0;C3F1;110A 1169 11C0;
+C3F2;C3F2;110A 1169 11C1;C3F2;110A 1169 11C1;
+C3F3;C3F3;110A 1169 11C2;C3F3;110A 1169 11C2;
+C3F4;C3F4;110A 116A;C3F4;110A 116A;
+C3F5;C3F5;110A 116A 11A8;C3F5;110A 116A 11A8;
+C3F6;C3F6;110A 116A 11A9;C3F6;110A 116A 11A9;
+C3F7;C3F7;110A 116A 11AA;C3F7;110A 116A 11AA;
+C3F8;C3F8;110A 116A 11AB;C3F8;110A 116A 11AB;
+C3F9;C3F9;110A 116A 11AC;C3F9;110A 116A 11AC;
+C3FA;C3FA;110A 116A 11AD;C3FA;110A 116A 11AD;
+C3FB;C3FB;110A 116A 11AE;C3FB;110A 116A 11AE;
+C3FC;C3FC;110A 116A 11AF;C3FC;110A 116A 11AF;
+C3FD;C3FD;110A 116A 11B0;C3FD;110A 116A 11B0;
+C3FE;C3FE;110A 116A 11B1;C3FE;110A 116A 11B1;
+C3FF;C3FF;110A 116A 11B2;C3FF;110A 116A 11B2;
+C400;C400;110A 116A 11B3;C400;110A 116A 11B3;
+C401;C401;110A 116A 11B4;C401;110A 116A 11B4;
+C402;C402;110A 116A 11B5;C402;110A 116A 11B5;
+C403;C403;110A 116A 11B6;C403;110A 116A 11B6;
+C404;C404;110A 116A 11B7;C404;110A 116A 11B7;
+C405;C405;110A 116A 11B8;C405;110A 116A 11B8;
+C406;C406;110A 116A 11B9;C406;110A 116A 11B9;
+C407;C407;110A 116A 11BA;C407;110A 116A 11BA;
+C408;C408;110A 116A 11BB;C408;110A 116A 11BB;
+C409;C409;110A 116A 11BC;C409;110A 116A 11BC;
+C40A;C40A;110A 116A 11BD;C40A;110A 116A 11BD;
+C40B;C40B;110A 116A 11BE;C40B;110A 116A 11BE;
+C40C;C40C;110A 116A 11BF;C40C;110A 116A 11BF;
+C40D;C40D;110A 116A 11C0;C40D;110A 116A 11C0;
+C40E;C40E;110A 116A 11C1;C40E;110A 116A 11C1;
+C40F;C40F;110A 116A 11C2;C40F;110A 116A 11C2;
+C410;C410;110A 116B;C410;110A 116B;
+C411;C411;110A 116B 11A8;C411;110A 116B 11A8;
+C412;C412;110A 116B 11A9;C412;110A 116B 11A9;
+C413;C413;110A 116B 11AA;C413;110A 116B 11AA;
+C414;C414;110A 116B 11AB;C414;110A 116B 11AB;
+C415;C415;110A 116B 11AC;C415;110A 116B 11AC;
+C416;C416;110A 116B 11AD;C416;110A 116B 11AD;
+C417;C417;110A 116B 11AE;C417;110A 116B 11AE;
+C418;C418;110A 116B 11AF;C418;110A 116B 11AF;
+C419;C419;110A 116B 11B0;C419;110A 116B 11B0;
+C41A;C41A;110A 116B 11B1;C41A;110A 116B 11B1;
+C41B;C41B;110A 116B 11B2;C41B;110A 116B 11B2;
+C41C;C41C;110A 116B 11B3;C41C;110A 116B 11B3;
+C41D;C41D;110A 116B 11B4;C41D;110A 116B 11B4;
+C41E;C41E;110A 116B 11B5;C41E;110A 116B 11B5;
+C41F;C41F;110A 116B 11B6;C41F;110A 116B 11B6;
+C420;C420;110A 116B 11B7;C420;110A 116B 11B7;
+C421;C421;110A 116B 11B8;C421;110A 116B 11B8;
+C422;C422;110A 116B 11B9;C422;110A 116B 11B9;
+C423;C423;110A 116B 11BA;C423;110A 116B 11BA;
+C424;C424;110A 116B 11BB;C424;110A 116B 11BB;
+C425;C425;110A 116B 11BC;C425;110A 116B 11BC;
+C426;C426;110A 116B 11BD;C426;110A 116B 11BD;
+C427;C427;110A 116B 11BE;C427;110A 116B 11BE;
+C428;C428;110A 116B 11BF;C428;110A 116B 11BF;
+C429;C429;110A 116B 11C0;C429;110A 116B 11C0;
+C42A;C42A;110A 116B 11C1;C42A;110A 116B 11C1;
+C42B;C42B;110A 116B 11C2;C42B;110A 116B 11C2;
+C42C;C42C;110A 116C;C42C;110A 116C;
+C42D;C42D;110A 116C 11A8;C42D;110A 116C 11A8;
+C42E;C42E;110A 116C 11A9;C42E;110A 116C 11A9;
+C42F;C42F;110A 116C 11AA;C42F;110A 116C 11AA;
+C430;C430;110A 116C 11AB;C430;110A 116C 11AB;
+C431;C431;110A 116C 11AC;C431;110A 116C 11AC;
+C432;C432;110A 116C 11AD;C432;110A 116C 11AD;
+C433;C433;110A 116C 11AE;C433;110A 116C 11AE;
+C434;C434;110A 116C 11AF;C434;110A 116C 11AF;
+C435;C435;110A 116C 11B0;C435;110A 116C 11B0;
+C436;C436;110A 116C 11B1;C436;110A 116C 11B1;
+C437;C437;110A 116C 11B2;C437;110A 116C 11B2;
+C438;C438;110A 116C 11B3;C438;110A 116C 11B3;
+C439;C439;110A 116C 11B4;C439;110A 116C 11B4;
+C43A;C43A;110A 116C 11B5;C43A;110A 116C 11B5;
+C43B;C43B;110A 116C 11B6;C43B;110A 116C 11B6;
+C43C;C43C;110A 116C 11B7;C43C;110A 116C 11B7;
+C43D;C43D;110A 116C 11B8;C43D;110A 116C 11B8;
+C43E;C43E;110A 116C 11B9;C43E;110A 116C 11B9;
+C43F;C43F;110A 116C 11BA;C43F;110A 116C 11BA;
+C440;C440;110A 116C 11BB;C440;110A 116C 11BB;
+C441;C441;110A 116C 11BC;C441;110A 116C 11BC;
+C442;C442;110A 116C 11BD;C442;110A 116C 11BD;
+C443;C443;110A 116C 11BE;C443;110A 116C 11BE;
+C444;C444;110A 116C 11BF;C444;110A 116C 11BF;
+C445;C445;110A 116C 11C0;C445;110A 116C 11C0;
+C446;C446;110A 116C 11C1;C446;110A 116C 11C1;
+C447;C447;110A 116C 11C2;C447;110A 116C 11C2;
+C448;C448;110A 116D;C448;110A 116D;
+C449;C449;110A 116D 11A8;C449;110A 116D 11A8;
+C44A;C44A;110A 116D 11A9;C44A;110A 116D 11A9;
+C44B;C44B;110A 116D 11AA;C44B;110A 116D 11AA;
+C44C;C44C;110A 116D 11AB;C44C;110A 116D 11AB;
+C44D;C44D;110A 116D 11AC;C44D;110A 116D 11AC;
+C44E;C44E;110A 116D 11AD;C44E;110A 116D 11AD;
+C44F;C44F;110A 116D 11AE;C44F;110A 116D 11AE;
+C450;C450;110A 116D 11AF;C450;110A 116D 11AF;
+C451;C451;110A 116D 11B0;C451;110A 116D 11B0;
+C452;C452;110A 116D 11B1;C452;110A 116D 11B1;
+C453;C453;110A 116D 11B2;C453;110A 116D 11B2;
+C454;C454;110A 116D 11B3;C454;110A 116D 11B3;
+C455;C455;110A 116D 11B4;C455;110A 116D 11B4;
+C456;C456;110A 116D 11B5;C456;110A 116D 11B5;
+C457;C457;110A 116D 11B6;C457;110A 116D 11B6;
+C458;C458;110A 116D 11B7;C458;110A 116D 11B7;
+C459;C459;110A 116D 11B8;C459;110A 116D 11B8;
+C45A;C45A;110A 116D 11B9;C45A;110A 116D 11B9;
+C45B;C45B;110A 116D 11BA;C45B;110A 116D 11BA;
+C45C;C45C;110A 116D 11BB;C45C;110A 116D 11BB;
+C45D;C45D;110A 116D 11BC;C45D;110A 116D 11BC;
+C45E;C45E;110A 116D 11BD;C45E;110A 116D 11BD;
+C45F;C45F;110A 116D 11BE;C45F;110A 116D 11BE;
+C460;C460;110A 116D 11BF;C460;110A 116D 11BF;
+C461;C461;110A 116D 11C0;C461;110A 116D 11C0;
+C462;C462;110A 116D 11C1;C462;110A 116D 11C1;
+C463;C463;110A 116D 11C2;C463;110A 116D 11C2;
+C464;C464;110A 116E;C464;110A 116E;
+C465;C465;110A 116E 11A8;C465;110A 116E 11A8;
+C466;C466;110A 116E 11A9;C466;110A 116E 11A9;
+C467;C467;110A 116E 11AA;C467;110A 116E 11AA;
+C468;C468;110A 116E 11AB;C468;110A 116E 11AB;
+C469;C469;110A 116E 11AC;C469;110A 116E 11AC;
+C46A;C46A;110A 116E 11AD;C46A;110A 116E 11AD;
+C46B;C46B;110A 116E 11AE;C46B;110A 116E 11AE;
+C46C;C46C;110A 116E 11AF;C46C;110A 116E 11AF;
+C46D;C46D;110A 116E 11B0;C46D;110A 116E 11B0;
+C46E;C46E;110A 116E 11B1;C46E;110A 116E 11B1;
+C46F;C46F;110A 116E 11B2;C46F;110A 116E 11B2;
+C470;C470;110A 116E 11B3;C470;110A 116E 11B3;
+C471;C471;110A 116E 11B4;C471;110A 116E 11B4;
+C472;C472;110A 116E 11B5;C472;110A 116E 11B5;
+C473;C473;110A 116E 11B6;C473;110A 116E 11B6;
+C474;C474;110A 116E 11B7;C474;110A 116E 11B7;
+C475;C475;110A 116E 11B8;C475;110A 116E 11B8;
+C476;C476;110A 116E 11B9;C476;110A 116E 11B9;
+C477;C477;110A 116E 11BA;C477;110A 116E 11BA;
+C478;C478;110A 116E 11BB;C478;110A 116E 11BB;
+C479;C479;110A 116E 11BC;C479;110A 116E 11BC;
+C47A;C47A;110A 116E 11BD;C47A;110A 116E 11BD;
+C47B;C47B;110A 116E 11BE;C47B;110A 116E 11BE;
+C47C;C47C;110A 116E 11BF;C47C;110A 116E 11BF;
+C47D;C47D;110A 116E 11C0;C47D;110A 116E 11C0;
+C47E;C47E;110A 116E 11C1;C47E;110A 116E 11C1;
+C47F;C47F;110A 116E 11C2;C47F;110A 116E 11C2;
+C480;C480;110A 116F;C480;110A 116F;
+C481;C481;110A 116F 11A8;C481;110A 116F 11A8;
+C482;C482;110A 116F 11A9;C482;110A 116F 11A9;
+C483;C483;110A 116F 11AA;C483;110A 116F 11AA;
+C484;C484;110A 116F 11AB;C484;110A 116F 11AB;
+C485;C485;110A 116F 11AC;C485;110A 116F 11AC;
+C486;C486;110A 116F 11AD;C486;110A 116F 11AD;
+C487;C487;110A 116F 11AE;C487;110A 116F 11AE;
+C488;C488;110A 116F 11AF;C488;110A 116F 11AF;
+C489;C489;110A 116F 11B0;C489;110A 116F 11B0;
+C48A;C48A;110A 116F 11B1;C48A;110A 116F 11B1;
+C48B;C48B;110A 116F 11B2;C48B;110A 116F 11B2;
+C48C;C48C;110A 116F 11B3;C48C;110A 116F 11B3;
+C48D;C48D;110A 116F 11B4;C48D;110A 116F 11B4;
+C48E;C48E;110A 116F 11B5;C48E;110A 116F 11B5;
+C48F;C48F;110A 116F 11B6;C48F;110A 116F 11B6;
+C490;C490;110A 116F 11B7;C490;110A 116F 11B7;
+C491;C491;110A 116F 11B8;C491;110A 116F 11B8;
+C492;C492;110A 116F 11B9;C492;110A 116F 11B9;
+C493;C493;110A 116F 11BA;C493;110A 116F 11BA;
+C494;C494;110A 116F 11BB;C494;110A 116F 11BB;
+C495;C495;110A 116F 11BC;C495;110A 116F 11BC;
+C496;C496;110A 116F 11BD;C496;110A 116F 11BD;
+C497;C497;110A 116F 11BE;C497;110A 116F 11BE;
+C498;C498;110A 116F 11BF;C498;110A 116F 11BF;
+C499;C499;110A 116F 11C0;C499;110A 116F 11C0;
+C49A;C49A;110A 116F 11C1;C49A;110A 116F 11C1;
+C49B;C49B;110A 116F 11C2;C49B;110A 116F 11C2;
+C49C;C49C;110A 1170;C49C;110A 1170;
+C49D;C49D;110A 1170 11A8;C49D;110A 1170 11A8;
+C49E;C49E;110A 1170 11A9;C49E;110A 1170 11A9;
+C49F;C49F;110A 1170 11AA;C49F;110A 1170 11AA;
+C4A0;C4A0;110A 1170 11AB;C4A0;110A 1170 11AB;
+C4A1;C4A1;110A 1170 11AC;C4A1;110A 1170 11AC;
+C4A2;C4A2;110A 1170 11AD;C4A2;110A 1170 11AD;
+C4A3;C4A3;110A 1170 11AE;C4A3;110A 1170 11AE;
+C4A4;C4A4;110A 1170 11AF;C4A4;110A 1170 11AF;
+C4A5;C4A5;110A 1170 11B0;C4A5;110A 1170 11B0;
+C4A6;C4A6;110A 1170 11B1;C4A6;110A 1170 11B1;
+C4A7;C4A7;110A 1170 11B2;C4A7;110A 1170 11B2;
+C4A8;C4A8;110A 1170 11B3;C4A8;110A 1170 11B3;
+C4A9;C4A9;110A 1170 11B4;C4A9;110A 1170 11B4;
+C4AA;C4AA;110A 1170 11B5;C4AA;110A 1170 11B5;
+C4AB;C4AB;110A 1170 11B6;C4AB;110A 1170 11B6;
+C4AC;C4AC;110A 1170 11B7;C4AC;110A 1170 11B7;
+C4AD;C4AD;110A 1170 11B8;C4AD;110A 1170 11B8;
+C4AE;C4AE;110A 1170 11B9;C4AE;110A 1170 11B9;
+C4AF;C4AF;110A 1170 11BA;C4AF;110A 1170 11BA;
+C4B0;C4B0;110A 1170 11BB;C4B0;110A 1170 11BB;
+C4B1;C4B1;110A 1170 11BC;C4B1;110A 1170 11BC;
+C4B2;C4B2;110A 1170 11BD;C4B2;110A 1170 11BD;
+C4B3;C4B3;110A 1170 11BE;C4B3;110A 1170 11BE;
+C4B4;C4B4;110A 1170 11BF;C4B4;110A 1170 11BF;
+C4B5;C4B5;110A 1170 11C0;C4B5;110A 1170 11C0;
+C4B6;C4B6;110A 1170 11C1;C4B6;110A 1170 11C1;
+C4B7;C4B7;110A 1170 11C2;C4B7;110A 1170 11C2;
+C4B8;C4B8;110A 1171;C4B8;110A 1171;
+C4B9;C4B9;110A 1171 11A8;C4B9;110A 1171 11A8;
+C4BA;C4BA;110A 1171 11A9;C4BA;110A 1171 11A9;
+C4BB;C4BB;110A 1171 11AA;C4BB;110A 1171 11AA;
+C4BC;C4BC;110A 1171 11AB;C4BC;110A 1171 11AB;
+C4BD;C4BD;110A 1171 11AC;C4BD;110A 1171 11AC;
+C4BE;C4BE;110A 1171 11AD;C4BE;110A 1171 11AD;
+C4BF;C4BF;110A 1171 11AE;C4BF;110A 1171 11AE;
+C4C0;C4C0;110A 1171 11AF;C4C0;110A 1171 11AF;
+C4C1;C4C1;110A 1171 11B0;C4C1;110A 1171 11B0;
+C4C2;C4C2;110A 1171 11B1;C4C2;110A 1171 11B1;
+C4C3;C4C3;110A 1171 11B2;C4C3;110A 1171 11B2;
+C4C4;C4C4;110A 1171 11B3;C4C4;110A 1171 11B3;
+C4C5;C4C5;110A 1171 11B4;C4C5;110A 1171 11B4;
+C4C6;C4C6;110A 1171 11B5;C4C6;110A 1171 11B5;
+C4C7;C4C7;110A 1171 11B6;C4C7;110A 1171 11B6;
+C4C8;C4C8;110A 1171 11B7;C4C8;110A 1171 11B7;
+C4C9;C4C9;110A 1171 11B8;C4C9;110A 1171 11B8;
+C4CA;C4CA;110A 1171 11B9;C4CA;110A 1171 11B9;
+C4CB;C4CB;110A 1171 11BA;C4CB;110A 1171 11BA;
+C4CC;C4CC;110A 1171 11BB;C4CC;110A 1171 11BB;
+C4CD;C4CD;110A 1171 11BC;C4CD;110A 1171 11BC;
+C4CE;C4CE;110A 1171 11BD;C4CE;110A 1171 11BD;
+C4CF;C4CF;110A 1171 11BE;C4CF;110A 1171 11BE;
+C4D0;C4D0;110A 1171 11BF;C4D0;110A 1171 11BF;
+C4D1;C4D1;110A 1171 11C0;C4D1;110A 1171 11C0;
+C4D2;C4D2;110A 1171 11C1;C4D2;110A 1171 11C1;
+C4D3;C4D3;110A 1171 11C2;C4D3;110A 1171 11C2;
+C4D4;C4D4;110A 1172;C4D4;110A 1172;
+C4D5;C4D5;110A 1172 11A8;C4D5;110A 1172 11A8;
+C4D6;C4D6;110A 1172 11A9;C4D6;110A 1172 11A9;
+C4D7;C4D7;110A 1172 11AA;C4D7;110A 1172 11AA;
+C4D8;C4D8;110A 1172 11AB;C4D8;110A 1172 11AB;
+C4D9;C4D9;110A 1172 11AC;C4D9;110A 1172 11AC;
+C4DA;C4DA;110A 1172 11AD;C4DA;110A 1172 11AD;
+C4DB;C4DB;110A 1172 11AE;C4DB;110A 1172 11AE;
+C4DC;C4DC;110A 1172 11AF;C4DC;110A 1172 11AF;
+C4DD;C4DD;110A 1172 11B0;C4DD;110A 1172 11B0;
+C4DE;C4DE;110A 1172 11B1;C4DE;110A 1172 11B1;
+C4DF;C4DF;110A 1172 11B2;C4DF;110A 1172 11B2;
+C4E0;C4E0;110A 1172 11B3;C4E0;110A 1172 11B3;
+C4E1;C4E1;110A 1172 11B4;C4E1;110A 1172 11B4;
+C4E2;C4E2;110A 1172 11B5;C4E2;110A 1172 11B5;
+C4E3;C4E3;110A 1172 11B6;C4E3;110A 1172 11B6;
+C4E4;C4E4;110A 1172 11B7;C4E4;110A 1172 11B7;
+C4E5;C4E5;110A 1172 11B8;C4E5;110A 1172 11B8;
+C4E6;C4E6;110A 1172 11B9;C4E6;110A 1172 11B9;
+C4E7;C4E7;110A 1172 11BA;C4E7;110A 1172 11BA;
+C4E8;C4E8;110A 1172 11BB;C4E8;110A 1172 11BB;
+C4E9;C4E9;110A 1172 11BC;C4E9;110A 1172 11BC;
+C4EA;C4EA;110A 1172 11BD;C4EA;110A 1172 11BD;
+C4EB;C4EB;110A 1172 11BE;C4EB;110A 1172 11BE;
+C4EC;C4EC;110A 1172 11BF;C4EC;110A 1172 11BF;
+C4ED;C4ED;110A 1172 11C0;C4ED;110A 1172 11C0;
+C4EE;C4EE;110A 1172 11C1;C4EE;110A 1172 11C1;
+C4EF;C4EF;110A 1172 11C2;C4EF;110A 1172 11C2;
+C4F0;C4F0;110A 1173;C4F0;110A 1173;
+C4F1;C4F1;110A 1173 11A8;C4F1;110A 1173 11A8;
+C4F2;C4F2;110A 1173 11A9;C4F2;110A 1173 11A9;
+C4F3;C4F3;110A 1173 11AA;C4F3;110A 1173 11AA;
+C4F4;C4F4;110A 1173 11AB;C4F4;110A 1173 11AB;
+C4F5;C4F5;110A 1173 11AC;C4F5;110A 1173 11AC;
+C4F6;C4F6;110A 1173 11AD;C4F6;110A 1173 11AD;
+C4F7;C4F7;110A 1173 11AE;C4F7;110A 1173 11AE;
+C4F8;C4F8;110A 1173 11AF;C4F8;110A 1173 11AF;
+C4F9;C4F9;110A 1173 11B0;C4F9;110A 1173 11B0;
+C4FA;C4FA;110A 1173 11B1;C4FA;110A 1173 11B1;
+C4FB;C4FB;110A 1173 11B2;C4FB;110A 1173 11B2;
+C4FC;C4FC;110A 1173 11B3;C4FC;110A 1173 11B3;
+C4FD;C4FD;110A 1173 11B4;C4FD;110A 1173 11B4;
+C4FE;C4FE;110A 1173 11B5;C4FE;110A 1173 11B5;
+C4FF;C4FF;110A 1173 11B6;C4FF;110A 1173 11B6;
+C500;C500;110A 1173 11B7;C500;110A 1173 11B7;
+C501;C501;110A 1173 11B8;C501;110A 1173 11B8;
+C502;C502;110A 1173 11B9;C502;110A 1173 11B9;
+C503;C503;110A 1173 11BA;C503;110A 1173 11BA;
+C504;C504;110A 1173 11BB;C504;110A 1173 11BB;
+C505;C505;110A 1173 11BC;C505;110A 1173 11BC;
+C506;C506;110A 1173 11BD;C506;110A 1173 11BD;
+C507;C507;110A 1173 11BE;C507;110A 1173 11BE;
+C508;C508;110A 1173 11BF;C508;110A 1173 11BF;
+C509;C509;110A 1173 11C0;C509;110A 1173 11C0;
+C50A;C50A;110A 1173 11C1;C50A;110A 1173 11C1;
+C50B;C50B;110A 1173 11C2;C50B;110A 1173 11C2;
+C50C;C50C;110A 1174;C50C;110A 1174;
+C50D;C50D;110A 1174 11A8;C50D;110A 1174 11A8;
+C50E;C50E;110A 1174 11A9;C50E;110A 1174 11A9;
+C50F;C50F;110A 1174 11AA;C50F;110A 1174 11AA;
+C510;C510;110A 1174 11AB;C510;110A 1174 11AB;
+C511;C511;110A 1174 11AC;C511;110A 1174 11AC;
+C512;C512;110A 1174 11AD;C512;110A 1174 11AD;
+C513;C513;110A 1174 11AE;C513;110A 1174 11AE;
+C514;C514;110A 1174 11AF;C514;110A 1174 11AF;
+C515;C515;110A 1174 11B0;C515;110A 1174 11B0;
+C516;C516;110A 1174 11B1;C516;110A 1174 11B1;
+C517;C517;110A 1174 11B2;C517;110A 1174 11B2;
+C518;C518;110A 1174 11B3;C518;110A 1174 11B3;
+C519;C519;110A 1174 11B4;C519;110A 1174 11B4;
+C51A;C51A;110A 1174 11B5;C51A;110A 1174 11B5;
+C51B;C51B;110A 1174 11B6;C51B;110A 1174 11B6;
+C51C;C51C;110A 1174 11B7;C51C;110A 1174 11B7;
+C51D;C51D;110A 1174 11B8;C51D;110A 1174 11B8;
+C51E;C51E;110A 1174 11B9;C51E;110A 1174 11B9;
+C51F;C51F;110A 1174 11BA;C51F;110A 1174 11BA;
+C520;C520;110A 1174 11BB;C520;110A 1174 11BB;
+C521;C521;110A 1174 11BC;C521;110A 1174 11BC;
+C522;C522;110A 1174 11BD;C522;110A 1174 11BD;
+C523;C523;110A 1174 11BE;C523;110A 1174 11BE;
+C524;C524;110A 1174 11BF;C524;110A 1174 11BF;
+C525;C525;110A 1174 11C0;C525;110A 1174 11C0;
+C526;C526;110A 1174 11C1;C526;110A 1174 11C1;
+C527;C527;110A 1174 11C2;C527;110A 1174 11C2;
+C528;C528;110A 1175;C528;110A 1175;
+C529;C529;110A 1175 11A8;C529;110A 1175 11A8;
+C52A;C52A;110A 1175 11A9;C52A;110A 1175 11A9;
+C52B;C52B;110A 1175 11AA;C52B;110A 1175 11AA;
+C52C;C52C;110A 1175 11AB;C52C;110A 1175 11AB;
+C52D;C52D;110A 1175 11AC;C52D;110A 1175 11AC;
+C52E;C52E;110A 1175 11AD;C52E;110A 1175 11AD;
+C52F;C52F;110A 1175 11AE;C52F;110A 1175 11AE;
+C530;C530;110A 1175 11AF;C530;110A 1175 11AF;
+C531;C531;110A 1175 11B0;C531;110A 1175 11B0;
+C532;C532;110A 1175 11B1;C532;110A 1175 11B1;
+C533;C533;110A 1175 11B2;C533;110A 1175 11B2;
+C534;C534;110A 1175 11B3;C534;110A 1175 11B3;
+C535;C535;110A 1175 11B4;C535;110A 1175 11B4;
+C536;C536;110A 1175 11B5;C536;110A 1175 11B5;
+C537;C537;110A 1175 11B6;C537;110A 1175 11B6;
+C538;C538;110A 1175 11B7;C538;110A 1175 11B7;
+C539;C539;110A 1175 11B8;C539;110A 1175 11B8;
+C53A;C53A;110A 1175 11B9;C53A;110A 1175 11B9;
+C53B;C53B;110A 1175 11BA;C53B;110A 1175 11BA;
+C53C;C53C;110A 1175 11BB;C53C;110A 1175 11BB;
+C53D;C53D;110A 1175 11BC;C53D;110A 1175 11BC;
+C53E;C53E;110A 1175 11BD;C53E;110A 1175 11BD;
+C53F;C53F;110A 1175 11BE;C53F;110A 1175 11BE;
+C540;C540;110A 1175 11BF;C540;110A 1175 11BF;
+C541;C541;110A 1175 11C0;C541;110A 1175 11C0;
+C542;C542;110A 1175 11C1;C542;110A 1175 11C1;
+C543;C543;110A 1175 11C2;C543;110A 1175 11C2;
+C544;C544;110B 1161;C544;110B 1161;
+C545;C545;110B 1161 11A8;C545;110B 1161 11A8;
+C546;C546;110B 1161 11A9;C546;110B 1161 11A9;
+C547;C547;110B 1161 11AA;C547;110B 1161 11AA;
+C548;C548;110B 1161 11AB;C548;110B 1161 11AB;
+C549;C549;110B 1161 11AC;C549;110B 1161 11AC;
+C54A;C54A;110B 1161 11AD;C54A;110B 1161 11AD;
+C54B;C54B;110B 1161 11AE;C54B;110B 1161 11AE;
+C54C;C54C;110B 1161 11AF;C54C;110B 1161 11AF;
+C54D;C54D;110B 1161 11B0;C54D;110B 1161 11B0;
+C54E;C54E;110B 1161 11B1;C54E;110B 1161 11B1;
+C54F;C54F;110B 1161 11B2;C54F;110B 1161 11B2;
+C550;C550;110B 1161 11B3;C550;110B 1161 11B3;
+C551;C551;110B 1161 11B4;C551;110B 1161 11B4;
+C552;C552;110B 1161 11B5;C552;110B 1161 11B5;
+C553;C553;110B 1161 11B6;C553;110B 1161 11B6;
+C554;C554;110B 1161 11B7;C554;110B 1161 11B7;
+C555;C555;110B 1161 11B8;C555;110B 1161 11B8;
+C556;C556;110B 1161 11B9;C556;110B 1161 11B9;
+C557;C557;110B 1161 11BA;C557;110B 1161 11BA;
+C558;C558;110B 1161 11BB;C558;110B 1161 11BB;
+C559;C559;110B 1161 11BC;C559;110B 1161 11BC;
+C55A;C55A;110B 1161 11BD;C55A;110B 1161 11BD;
+C55B;C55B;110B 1161 11BE;C55B;110B 1161 11BE;
+C55C;C55C;110B 1161 11BF;C55C;110B 1161 11BF;
+C55D;C55D;110B 1161 11C0;C55D;110B 1161 11C0;
+C55E;C55E;110B 1161 11C1;C55E;110B 1161 11C1;
+C55F;C55F;110B 1161 11C2;C55F;110B 1161 11C2;
+C560;C560;110B 1162;C560;110B 1162;
+C561;C561;110B 1162 11A8;C561;110B 1162 11A8;
+C562;C562;110B 1162 11A9;C562;110B 1162 11A9;
+C563;C563;110B 1162 11AA;C563;110B 1162 11AA;
+C564;C564;110B 1162 11AB;C564;110B 1162 11AB;
+C565;C565;110B 1162 11AC;C565;110B 1162 11AC;
+C566;C566;110B 1162 11AD;C566;110B 1162 11AD;
+C567;C567;110B 1162 11AE;C567;110B 1162 11AE;
+C568;C568;110B 1162 11AF;C568;110B 1162 11AF;
+C569;C569;110B 1162 11B0;C569;110B 1162 11B0;
+C56A;C56A;110B 1162 11B1;C56A;110B 1162 11B1;
+C56B;C56B;110B 1162 11B2;C56B;110B 1162 11B2;
+C56C;C56C;110B 1162 11B3;C56C;110B 1162 11B3;
+C56D;C56D;110B 1162 11B4;C56D;110B 1162 11B4;
+C56E;C56E;110B 1162 11B5;C56E;110B 1162 11B5;
+C56F;C56F;110B 1162 11B6;C56F;110B 1162 11B6;
+C570;C570;110B 1162 11B7;C570;110B 1162 11B7;
+C571;C571;110B 1162 11B8;C571;110B 1162 11B8;
+C572;C572;110B 1162 11B9;C572;110B 1162 11B9;
+C573;C573;110B 1162 11BA;C573;110B 1162 11BA;
+C574;C574;110B 1162 11BB;C574;110B 1162 11BB;
+C575;C575;110B 1162 11BC;C575;110B 1162 11BC;
+C576;C576;110B 1162 11BD;C576;110B 1162 11BD;
+C577;C577;110B 1162 11BE;C577;110B 1162 11BE;
+C578;C578;110B 1162 11BF;C578;110B 1162 11BF;
+C579;C579;110B 1162 11C0;C579;110B 1162 11C0;
+C57A;C57A;110B 1162 11C1;C57A;110B 1162 11C1;
+C57B;C57B;110B 1162 11C2;C57B;110B 1162 11C2;
+C57C;C57C;110B 1163;C57C;110B 1163;
+C57D;C57D;110B 1163 11A8;C57D;110B 1163 11A8;
+C57E;C57E;110B 1163 11A9;C57E;110B 1163 11A9;
+C57F;C57F;110B 1163 11AA;C57F;110B 1163 11AA;
+C580;C580;110B 1163 11AB;C580;110B 1163 11AB;
+C581;C581;110B 1163 11AC;C581;110B 1163 11AC;
+C582;C582;110B 1163 11AD;C582;110B 1163 11AD;
+C583;C583;110B 1163 11AE;C583;110B 1163 11AE;
+C584;C584;110B 1163 11AF;C584;110B 1163 11AF;
+C585;C585;110B 1163 11B0;C585;110B 1163 11B0;
+C586;C586;110B 1163 11B1;C586;110B 1163 11B1;
+C587;C587;110B 1163 11B2;C587;110B 1163 11B2;
+C588;C588;110B 1163 11B3;C588;110B 1163 11B3;
+C589;C589;110B 1163 11B4;C589;110B 1163 11B4;
+C58A;C58A;110B 1163 11B5;C58A;110B 1163 11B5;
+C58B;C58B;110B 1163 11B6;C58B;110B 1163 11B6;
+C58C;C58C;110B 1163 11B7;C58C;110B 1163 11B7;
+C58D;C58D;110B 1163 11B8;C58D;110B 1163 11B8;
+C58E;C58E;110B 1163 11B9;C58E;110B 1163 11B9;
+C58F;C58F;110B 1163 11BA;C58F;110B 1163 11BA;
+C590;C590;110B 1163 11BB;C590;110B 1163 11BB;
+C591;C591;110B 1163 11BC;C591;110B 1163 11BC;
+C592;C592;110B 1163 11BD;C592;110B 1163 11BD;
+C593;C593;110B 1163 11BE;C593;110B 1163 11BE;
+C594;C594;110B 1163 11BF;C594;110B 1163 11BF;
+C595;C595;110B 1163 11C0;C595;110B 1163 11C0;
+C596;C596;110B 1163 11C1;C596;110B 1163 11C1;
+C597;C597;110B 1163 11C2;C597;110B 1163 11C2;
+C598;C598;110B 1164;C598;110B 1164;
+C599;C599;110B 1164 11A8;C599;110B 1164 11A8;
+C59A;C59A;110B 1164 11A9;C59A;110B 1164 11A9;
+C59B;C59B;110B 1164 11AA;C59B;110B 1164 11AA;
+C59C;C59C;110B 1164 11AB;C59C;110B 1164 11AB;
+C59D;C59D;110B 1164 11AC;C59D;110B 1164 11AC;
+C59E;C59E;110B 1164 11AD;C59E;110B 1164 11AD;
+C59F;C59F;110B 1164 11AE;C59F;110B 1164 11AE;
+C5A0;C5A0;110B 1164 11AF;C5A0;110B 1164 11AF;
+C5A1;C5A1;110B 1164 11B0;C5A1;110B 1164 11B0;
+C5A2;C5A2;110B 1164 11B1;C5A2;110B 1164 11B1;
+C5A3;C5A3;110B 1164 11B2;C5A3;110B 1164 11B2;
+C5A4;C5A4;110B 1164 11B3;C5A4;110B 1164 11B3;
+C5A5;C5A5;110B 1164 11B4;C5A5;110B 1164 11B4;
+C5A6;C5A6;110B 1164 11B5;C5A6;110B 1164 11B5;
+C5A7;C5A7;110B 1164 11B6;C5A7;110B 1164 11B6;
+C5A8;C5A8;110B 1164 11B7;C5A8;110B 1164 11B7;
+C5A9;C5A9;110B 1164 11B8;C5A9;110B 1164 11B8;
+C5AA;C5AA;110B 1164 11B9;C5AA;110B 1164 11B9;
+C5AB;C5AB;110B 1164 11BA;C5AB;110B 1164 11BA;
+C5AC;C5AC;110B 1164 11BB;C5AC;110B 1164 11BB;
+C5AD;C5AD;110B 1164 11BC;C5AD;110B 1164 11BC;
+C5AE;C5AE;110B 1164 11BD;C5AE;110B 1164 11BD;
+C5AF;C5AF;110B 1164 11BE;C5AF;110B 1164 11BE;
+C5B0;C5B0;110B 1164 11BF;C5B0;110B 1164 11BF;
+C5B1;C5B1;110B 1164 11C0;C5B1;110B 1164 11C0;
+C5B2;C5B2;110B 1164 11C1;C5B2;110B 1164 11C1;
+C5B3;C5B3;110B 1164 11C2;C5B3;110B 1164 11C2;
+C5B4;C5B4;110B 1165;C5B4;110B 1165;
+C5B5;C5B5;110B 1165 11A8;C5B5;110B 1165 11A8;
+C5B6;C5B6;110B 1165 11A9;C5B6;110B 1165 11A9;
+C5B7;C5B7;110B 1165 11AA;C5B7;110B 1165 11AA;
+C5B8;C5B8;110B 1165 11AB;C5B8;110B 1165 11AB;
+C5B9;C5B9;110B 1165 11AC;C5B9;110B 1165 11AC;
+C5BA;C5BA;110B 1165 11AD;C5BA;110B 1165 11AD;
+C5BB;C5BB;110B 1165 11AE;C5BB;110B 1165 11AE;
+C5BC;C5BC;110B 1165 11AF;C5BC;110B 1165 11AF;
+C5BD;C5BD;110B 1165 11B0;C5BD;110B 1165 11B0;
+C5BE;C5BE;110B 1165 11B1;C5BE;110B 1165 11B1;
+C5BF;C5BF;110B 1165 11B2;C5BF;110B 1165 11B2;
+C5C0;C5C0;110B 1165 11B3;C5C0;110B 1165 11B3;
+C5C1;C5C1;110B 1165 11B4;C5C1;110B 1165 11B4;
+C5C2;C5C2;110B 1165 11B5;C5C2;110B 1165 11B5;
+C5C3;C5C3;110B 1165 11B6;C5C3;110B 1165 11B6;
+C5C4;C5C4;110B 1165 11B7;C5C4;110B 1165 11B7;
+C5C5;C5C5;110B 1165 11B8;C5C5;110B 1165 11B8;
+C5C6;C5C6;110B 1165 11B9;C5C6;110B 1165 11B9;
+C5C7;C5C7;110B 1165 11BA;C5C7;110B 1165 11BA;
+C5C8;C5C8;110B 1165 11BB;C5C8;110B 1165 11BB;
+C5C9;C5C9;110B 1165 11BC;C5C9;110B 1165 11BC;
+C5CA;C5CA;110B 1165 11BD;C5CA;110B 1165 11BD;
+C5CB;C5CB;110B 1165 11BE;C5CB;110B 1165 11BE;
+C5CC;C5CC;110B 1165 11BF;C5CC;110B 1165 11BF;
+C5CD;C5CD;110B 1165 11C0;C5CD;110B 1165 11C0;
+C5CE;C5CE;110B 1165 11C1;C5CE;110B 1165 11C1;
+C5CF;C5CF;110B 1165 11C2;C5CF;110B 1165 11C2;
+C5D0;C5D0;110B 1166;C5D0;110B 1166;
+C5D1;C5D1;110B 1166 11A8;C5D1;110B 1166 11A8;
+C5D2;C5D2;110B 1166 11A9;C5D2;110B 1166 11A9;
+C5D3;C5D3;110B 1166 11AA;C5D3;110B 1166 11AA;
+C5D4;C5D4;110B 1166 11AB;C5D4;110B 1166 11AB;
+C5D5;C5D5;110B 1166 11AC;C5D5;110B 1166 11AC;
+C5D6;C5D6;110B 1166 11AD;C5D6;110B 1166 11AD;
+C5D7;C5D7;110B 1166 11AE;C5D7;110B 1166 11AE;
+C5D8;C5D8;110B 1166 11AF;C5D8;110B 1166 11AF;
+C5D9;C5D9;110B 1166 11B0;C5D9;110B 1166 11B0;
+C5DA;C5DA;110B 1166 11B1;C5DA;110B 1166 11B1;
+C5DB;C5DB;110B 1166 11B2;C5DB;110B 1166 11B2;
+C5DC;C5DC;110B 1166 11B3;C5DC;110B 1166 11B3;
+C5DD;C5DD;110B 1166 11B4;C5DD;110B 1166 11B4;
+C5DE;C5DE;110B 1166 11B5;C5DE;110B 1166 11B5;
+C5DF;C5DF;110B 1166 11B6;C5DF;110B 1166 11B6;
+C5E0;C5E0;110B 1166 11B7;C5E0;110B 1166 11B7;
+C5E1;C5E1;110B 1166 11B8;C5E1;110B 1166 11B8;
+C5E2;C5E2;110B 1166 11B9;C5E2;110B 1166 11B9;
+C5E3;C5E3;110B 1166 11BA;C5E3;110B 1166 11BA;
+C5E4;C5E4;110B 1166 11BB;C5E4;110B 1166 11BB;
+C5E5;C5E5;110B 1166 11BC;C5E5;110B 1166 11BC;
+C5E6;C5E6;110B 1166 11BD;C5E6;110B 1166 11BD;
+C5E7;C5E7;110B 1166 11BE;C5E7;110B 1166 11BE;
+C5E8;C5E8;110B 1166 11BF;C5E8;110B 1166 11BF;
+C5E9;C5E9;110B 1166 11C0;C5E9;110B 1166 11C0;
+C5EA;C5EA;110B 1166 11C1;C5EA;110B 1166 11C1;
+C5EB;C5EB;110B 1166 11C2;C5EB;110B 1166 11C2;
+C5EC;C5EC;110B 1167;C5EC;110B 1167;
+C5ED;C5ED;110B 1167 11A8;C5ED;110B 1167 11A8;
+C5EE;C5EE;110B 1167 11A9;C5EE;110B 1167 11A9;
+C5EF;C5EF;110B 1167 11AA;C5EF;110B 1167 11AA;
+C5F0;C5F0;110B 1167 11AB;C5F0;110B 1167 11AB;
+C5F1;C5F1;110B 1167 11AC;C5F1;110B 1167 11AC;
+C5F2;C5F2;110B 1167 11AD;C5F2;110B 1167 11AD;
+C5F3;C5F3;110B 1167 11AE;C5F3;110B 1167 11AE;
+C5F4;C5F4;110B 1167 11AF;C5F4;110B 1167 11AF;
+C5F5;C5F5;110B 1167 11B0;C5F5;110B 1167 11B0;
+C5F6;C5F6;110B 1167 11B1;C5F6;110B 1167 11B1;
+C5F7;C5F7;110B 1167 11B2;C5F7;110B 1167 11B2;
+C5F8;C5F8;110B 1167 11B3;C5F8;110B 1167 11B3;
+C5F9;C5F9;110B 1167 11B4;C5F9;110B 1167 11B4;
+C5FA;C5FA;110B 1167 11B5;C5FA;110B 1167 11B5;
+C5FB;C5FB;110B 1167 11B6;C5FB;110B 1167 11B6;
+C5FC;C5FC;110B 1167 11B7;C5FC;110B 1167 11B7;
+C5FD;C5FD;110B 1167 11B8;C5FD;110B 1167 11B8;
+C5FE;C5FE;110B 1167 11B9;C5FE;110B 1167 11B9;
+C5FF;C5FF;110B 1167 11BA;C5FF;110B 1167 11BA;
+C600;C600;110B 1167 11BB;C600;110B 1167 11BB;
+C601;C601;110B 1167 11BC;C601;110B 1167 11BC;
+C602;C602;110B 1167 11BD;C602;110B 1167 11BD;
+C603;C603;110B 1167 11BE;C603;110B 1167 11BE;
+C604;C604;110B 1167 11BF;C604;110B 1167 11BF;
+C605;C605;110B 1167 11C0;C605;110B 1167 11C0;
+C606;C606;110B 1167 11C1;C606;110B 1167 11C1;
+C607;C607;110B 1167 11C2;C607;110B 1167 11C2;
+C608;C608;110B 1168;C608;110B 1168;
+C609;C609;110B 1168 11A8;C609;110B 1168 11A8;
+C60A;C60A;110B 1168 11A9;C60A;110B 1168 11A9;
+C60B;C60B;110B 1168 11AA;C60B;110B 1168 11AA;
+C60C;C60C;110B 1168 11AB;C60C;110B 1168 11AB;
+C60D;C60D;110B 1168 11AC;C60D;110B 1168 11AC;
+C60E;C60E;110B 1168 11AD;C60E;110B 1168 11AD;
+C60F;C60F;110B 1168 11AE;C60F;110B 1168 11AE;
+C610;C610;110B 1168 11AF;C610;110B 1168 11AF;
+C611;C611;110B 1168 11B0;C611;110B 1168 11B0;
+C612;C612;110B 1168 11B1;C612;110B 1168 11B1;
+C613;C613;110B 1168 11B2;C613;110B 1168 11B2;
+C614;C614;110B 1168 11B3;C614;110B 1168 11B3;
+C615;C615;110B 1168 11B4;C615;110B 1168 11B4;
+C616;C616;110B 1168 11B5;C616;110B 1168 11B5;
+C617;C617;110B 1168 11B6;C617;110B 1168 11B6;
+C618;C618;110B 1168 11B7;C618;110B 1168 11B7;
+C619;C619;110B 1168 11B8;C619;110B 1168 11B8;
+C61A;C61A;110B 1168 11B9;C61A;110B 1168 11B9;
+C61B;C61B;110B 1168 11BA;C61B;110B 1168 11BA;
+C61C;C61C;110B 1168 11BB;C61C;110B 1168 11BB;
+C61D;C61D;110B 1168 11BC;C61D;110B 1168 11BC;
+C61E;C61E;110B 1168 11BD;C61E;110B 1168 11BD;
+C61F;C61F;110B 1168 11BE;C61F;110B 1168 11BE;
+C620;C620;110B 1168 11BF;C620;110B 1168 11BF;
+C621;C621;110B 1168 11C0;C621;110B 1168 11C0;
+C622;C622;110B 1168 11C1;C622;110B 1168 11C1;
+C623;C623;110B 1168 11C2;C623;110B 1168 11C2;
+C624;C624;110B 1169;C624;110B 1169;
+C625;C625;110B 1169 11A8;C625;110B 1169 11A8;
+C626;C626;110B 1169 11A9;C626;110B 1169 11A9;
+C627;C627;110B 1169 11AA;C627;110B 1169 11AA;
+C628;C628;110B 1169 11AB;C628;110B 1169 11AB;
+C629;C629;110B 1169 11AC;C629;110B 1169 11AC;
+C62A;C62A;110B 1169 11AD;C62A;110B 1169 11AD;
+C62B;C62B;110B 1169 11AE;C62B;110B 1169 11AE;
+C62C;C62C;110B 1169 11AF;C62C;110B 1169 11AF;
+C62D;C62D;110B 1169 11B0;C62D;110B 1169 11B0;
+C62E;C62E;110B 1169 11B1;C62E;110B 1169 11B1;
+C62F;C62F;110B 1169 11B2;C62F;110B 1169 11B2;
+C630;C630;110B 1169 11B3;C630;110B 1169 11B3;
+C631;C631;110B 1169 11B4;C631;110B 1169 11B4;
+C632;C632;110B 1169 11B5;C632;110B 1169 11B5;
+C633;C633;110B 1169 11B6;C633;110B 1169 11B6;
+C634;C634;110B 1169 11B7;C634;110B 1169 11B7;
+C635;C635;110B 1169 11B8;C635;110B 1169 11B8;
+C636;C636;110B 1169 11B9;C636;110B 1169 11B9;
+C637;C637;110B 1169 11BA;C637;110B 1169 11BA;
+C638;C638;110B 1169 11BB;C638;110B 1169 11BB;
+C639;C639;110B 1169 11BC;C639;110B 1169 11BC;
+C63A;C63A;110B 1169 11BD;C63A;110B 1169 11BD;
+C63B;C63B;110B 1169 11BE;C63B;110B 1169 11BE;
+C63C;C63C;110B 1169 11BF;C63C;110B 1169 11BF;
+C63D;C63D;110B 1169 11C0;C63D;110B 1169 11C0;
+C63E;C63E;110B 1169 11C1;C63E;110B 1169 11C1;
+C63F;C63F;110B 1169 11C2;C63F;110B 1169 11C2;
+C640;C640;110B 116A;C640;110B 116A;
+C641;C641;110B 116A 11A8;C641;110B 116A 11A8;
+C642;C642;110B 116A 11A9;C642;110B 116A 11A9;
+C643;C643;110B 116A 11AA;C643;110B 116A 11AA;
+C644;C644;110B 116A 11AB;C644;110B 116A 11AB;
+C645;C645;110B 116A 11AC;C645;110B 116A 11AC;
+C646;C646;110B 116A 11AD;C646;110B 116A 11AD;
+C647;C647;110B 116A 11AE;C647;110B 116A 11AE;
+C648;C648;110B 116A 11AF;C648;110B 116A 11AF;
+C649;C649;110B 116A 11B0;C649;110B 116A 11B0;
+C64A;C64A;110B 116A 11B1;C64A;110B 116A 11B1;
+C64B;C64B;110B 116A 11B2;C64B;110B 116A 11B2;
+C64C;C64C;110B 116A 11B3;C64C;110B 116A 11B3;
+C64D;C64D;110B 116A 11B4;C64D;110B 116A 11B4;
+C64E;C64E;110B 116A 11B5;C64E;110B 116A 11B5;
+C64F;C64F;110B 116A 11B6;C64F;110B 116A 11B6;
+C650;C650;110B 116A 11B7;C650;110B 116A 11B7;
+C651;C651;110B 116A 11B8;C651;110B 116A 11B8;
+C652;C652;110B 116A 11B9;C652;110B 116A 11B9;
+C653;C653;110B 116A 11BA;C653;110B 116A 11BA;
+C654;C654;110B 116A 11BB;C654;110B 116A 11BB;
+C655;C655;110B 116A 11BC;C655;110B 116A 11BC;
+C656;C656;110B 116A 11BD;C656;110B 116A 11BD;
+C657;C657;110B 116A 11BE;C657;110B 116A 11BE;
+C658;C658;110B 116A 11BF;C658;110B 116A 11BF;
+C659;C659;110B 116A 11C0;C659;110B 116A 11C0;
+C65A;C65A;110B 116A 11C1;C65A;110B 116A 11C1;
+C65B;C65B;110B 116A 11C2;C65B;110B 116A 11C2;
+C65C;C65C;110B 116B;C65C;110B 116B;
+C65D;C65D;110B 116B 11A8;C65D;110B 116B 11A8;
+C65E;C65E;110B 116B 11A9;C65E;110B 116B 11A9;
+C65F;C65F;110B 116B 11AA;C65F;110B 116B 11AA;
+C660;C660;110B 116B 11AB;C660;110B 116B 11AB;
+C661;C661;110B 116B 11AC;C661;110B 116B 11AC;
+C662;C662;110B 116B 11AD;C662;110B 116B 11AD;
+C663;C663;110B 116B 11AE;C663;110B 116B 11AE;
+C664;C664;110B 116B 11AF;C664;110B 116B 11AF;
+C665;C665;110B 116B 11B0;C665;110B 116B 11B0;
+C666;C666;110B 116B 11B1;C666;110B 116B 11B1;
+C667;C667;110B 116B 11B2;C667;110B 116B 11B2;
+C668;C668;110B 116B 11B3;C668;110B 116B 11B3;
+C669;C669;110B 116B 11B4;C669;110B 116B 11B4;
+C66A;C66A;110B 116B 11B5;C66A;110B 116B 11B5;
+C66B;C66B;110B 116B 11B6;C66B;110B 116B 11B6;
+C66C;C66C;110B 116B 11B7;C66C;110B 116B 11B7;
+C66D;C66D;110B 116B 11B8;C66D;110B 116B 11B8;
+C66E;C66E;110B 116B 11B9;C66E;110B 116B 11B9;
+C66F;C66F;110B 116B 11BA;C66F;110B 116B 11BA;
+C670;C670;110B 116B 11BB;C670;110B 116B 11BB;
+C671;C671;110B 116B 11BC;C671;110B 116B 11BC;
+C672;C672;110B 116B 11BD;C672;110B 116B 11BD;
+C673;C673;110B 116B 11BE;C673;110B 116B 11BE;
+C674;C674;110B 116B 11BF;C674;110B 116B 11BF;
+C675;C675;110B 116B 11C0;C675;110B 116B 11C0;
+C676;C676;110B 116B 11C1;C676;110B 116B 11C1;
+C677;C677;110B 116B 11C2;C677;110B 116B 11C2;
+C678;C678;110B 116C;C678;110B 116C;
+C679;C679;110B 116C 11A8;C679;110B 116C 11A8;
+C67A;C67A;110B 116C 11A9;C67A;110B 116C 11A9;
+C67B;C67B;110B 116C 11AA;C67B;110B 116C 11AA;
+C67C;C67C;110B 116C 11AB;C67C;110B 116C 11AB;
+C67D;C67D;110B 116C 11AC;C67D;110B 116C 11AC;
+C67E;C67E;110B 116C 11AD;C67E;110B 116C 11AD;
+C67F;C67F;110B 116C 11AE;C67F;110B 116C 11AE;
+C680;C680;110B 116C 11AF;C680;110B 116C 11AF;
+C681;C681;110B 116C 11B0;C681;110B 116C 11B0;
+C682;C682;110B 116C 11B1;C682;110B 116C 11B1;
+C683;C683;110B 116C 11B2;C683;110B 116C 11B2;
+C684;C684;110B 116C 11B3;C684;110B 116C 11B3;
+C685;C685;110B 116C 11B4;C685;110B 116C 11B4;
+C686;C686;110B 116C 11B5;C686;110B 116C 11B5;
+C687;C687;110B 116C 11B6;C687;110B 116C 11B6;
+C688;C688;110B 116C 11B7;C688;110B 116C 11B7;
+C689;C689;110B 116C 11B8;C689;110B 116C 11B8;
+C68A;C68A;110B 116C 11B9;C68A;110B 116C 11B9;
+C68B;C68B;110B 116C 11BA;C68B;110B 116C 11BA;
+C68C;C68C;110B 116C 11BB;C68C;110B 116C 11BB;
+C68D;C68D;110B 116C 11BC;C68D;110B 116C 11BC;
+C68E;C68E;110B 116C 11BD;C68E;110B 116C 11BD;
+C68F;C68F;110B 116C 11BE;C68F;110B 116C 11BE;
+C690;C690;110B 116C 11BF;C690;110B 116C 11BF;
+C691;C691;110B 116C 11C0;C691;110B 116C 11C0;
+C692;C692;110B 116C 11C1;C692;110B 116C 11C1;
+C693;C693;110B 116C 11C2;C693;110B 116C 11C2;
+C694;C694;110B 116D;C694;110B 116D;
+C695;C695;110B 116D 11A8;C695;110B 116D 11A8;
+C696;C696;110B 116D 11A9;C696;110B 116D 11A9;
+C697;C697;110B 116D 11AA;C697;110B 116D 11AA;
+C698;C698;110B 116D 11AB;C698;110B 116D 11AB;
+C699;C699;110B 116D 11AC;C699;110B 116D 11AC;
+C69A;C69A;110B 116D 11AD;C69A;110B 116D 11AD;
+C69B;C69B;110B 116D 11AE;C69B;110B 116D 11AE;
+C69C;C69C;110B 116D 11AF;C69C;110B 116D 11AF;
+C69D;C69D;110B 116D 11B0;C69D;110B 116D 11B0;
+C69E;C69E;110B 116D 11B1;C69E;110B 116D 11B1;
+C69F;C69F;110B 116D 11B2;C69F;110B 116D 11B2;
+C6A0;C6A0;110B 116D 11B3;C6A0;110B 116D 11B3;
+C6A1;C6A1;110B 116D 11B4;C6A1;110B 116D 11B4;
+C6A2;C6A2;110B 116D 11B5;C6A2;110B 116D 11B5;
+C6A3;C6A3;110B 116D 11B6;C6A3;110B 116D 11B6;
+C6A4;C6A4;110B 116D 11B7;C6A4;110B 116D 11B7;
+C6A5;C6A5;110B 116D 11B8;C6A5;110B 116D 11B8;
+C6A6;C6A6;110B 116D 11B9;C6A6;110B 116D 11B9;
+C6A7;C6A7;110B 116D 11BA;C6A7;110B 116D 11BA;
+C6A8;C6A8;110B 116D 11BB;C6A8;110B 116D 11BB;
+C6A9;C6A9;110B 116D 11BC;C6A9;110B 116D 11BC;
+C6AA;C6AA;110B 116D 11BD;C6AA;110B 116D 11BD;
+C6AB;C6AB;110B 116D 11BE;C6AB;110B 116D 11BE;
+C6AC;C6AC;110B 116D 11BF;C6AC;110B 116D 11BF;
+C6AD;C6AD;110B 116D 11C0;C6AD;110B 116D 11C0;
+C6AE;C6AE;110B 116D 11C1;C6AE;110B 116D 11C1;
+C6AF;C6AF;110B 116D 11C2;C6AF;110B 116D 11C2;
+C6B0;C6B0;110B 116E;C6B0;110B 116E;
+C6B1;C6B1;110B 116E 11A8;C6B1;110B 116E 11A8;
+C6B2;C6B2;110B 116E 11A9;C6B2;110B 116E 11A9;
+C6B3;C6B3;110B 116E 11AA;C6B3;110B 116E 11AA;
+C6B4;C6B4;110B 116E 11AB;C6B4;110B 116E 11AB;
+C6B5;C6B5;110B 116E 11AC;C6B5;110B 116E 11AC;
+C6B6;C6B6;110B 116E 11AD;C6B6;110B 116E 11AD;
+C6B7;C6B7;110B 116E 11AE;C6B7;110B 116E 11AE;
+C6B8;C6B8;110B 116E 11AF;C6B8;110B 116E 11AF;
+C6B9;C6B9;110B 116E 11B0;C6B9;110B 116E 11B0;
+C6BA;C6BA;110B 116E 11B1;C6BA;110B 116E 11B1;
+C6BB;C6BB;110B 116E 11B2;C6BB;110B 116E 11B2;
+C6BC;C6BC;110B 116E 11B3;C6BC;110B 116E 11B3;
+C6BD;C6BD;110B 116E 11B4;C6BD;110B 116E 11B4;
+C6BE;C6BE;110B 116E 11B5;C6BE;110B 116E 11B5;
+C6BF;C6BF;110B 116E 11B6;C6BF;110B 116E 11B6;
+C6C0;C6C0;110B 116E 11B7;C6C0;110B 116E 11B7;
+C6C1;C6C1;110B 116E 11B8;C6C1;110B 116E 11B8;
+C6C2;C6C2;110B 116E 11B9;C6C2;110B 116E 11B9;
+C6C3;C6C3;110B 116E 11BA;C6C3;110B 116E 11BA;
+C6C4;C6C4;110B 116E 11BB;C6C4;110B 116E 11BB;
+C6C5;C6C5;110B 116E 11BC;C6C5;110B 116E 11BC;
+C6C6;C6C6;110B 116E 11BD;C6C6;110B 116E 11BD;
+C6C7;C6C7;110B 116E 11BE;C6C7;110B 116E 11BE;
+C6C8;C6C8;110B 116E 11BF;C6C8;110B 116E 11BF;
+C6C9;C6C9;110B 116E 11C0;C6C9;110B 116E 11C0;
+C6CA;C6CA;110B 116E 11C1;C6CA;110B 116E 11C1;
+C6CB;C6CB;110B 116E 11C2;C6CB;110B 116E 11C2;
+C6CC;C6CC;110B 116F;C6CC;110B 116F;
+C6CD;C6CD;110B 116F 11A8;C6CD;110B 116F 11A8;
+C6CE;C6CE;110B 116F 11A9;C6CE;110B 116F 11A9;
+C6CF;C6CF;110B 116F 11AA;C6CF;110B 116F 11AA;
+C6D0;C6D0;110B 116F 11AB;C6D0;110B 116F 11AB;
+C6D1;C6D1;110B 116F 11AC;C6D1;110B 116F 11AC;
+C6D2;C6D2;110B 116F 11AD;C6D2;110B 116F 11AD;
+C6D3;C6D3;110B 116F 11AE;C6D3;110B 116F 11AE;
+C6D4;C6D4;110B 116F 11AF;C6D4;110B 116F 11AF;
+C6D5;C6D5;110B 116F 11B0;C6D5;110B 116F 11B0;
+C6D6;C6D6;110B 116F 11B1;C6D6;110B 116F 11B1;
+C6D7;C6D7;110B 116F 11B2;C6D7;110B 116F 11B2;
+C6D8;C6D8;110B 116F 11B3;C6D8;110B 116F 11B3;
+C6D9;C6D9;110B 116F 11B4;C6D9;110B 116F 11B4;
+C6DA;C6DA;110B 116F 11B5;C6DA;110B 116F 11B5;
+C6DB;C6DB;110B 116F 11B6;C6DB;110B 116F 11B6;
+C6DC;C6DC;110B 116F 11B7;C6DC;110B 116F 11B7;
+C6DD;C6DD;110B 116F 11B8;C6DD;110B 116F 11B8;
+C6DE;C6DE;110B 116F 11B9;C6DE;110B 116F 11B9;
+C6DF;C6DF;110B 116F 11BA;C6DF;110B 116F 11BA;
+C6E0;C6E0;110B 116F 11BB;C6E0;110B 116F 11BB;
+C6E1;C6E1;110B 116F 11BC;C6E1;110B 116F 11BC;
+C6E2;C6E2;110B 116F 11BD;C6E2;110B 116F 11BD;
+C6E3;C6E3;110B 116F 11BE;C6E3;110B 116F 11BE;
+C6E4;C6E4;110B 116F 11BF;C6E4;110B 116F 11BF;
+C6E5;C6E5;110B 116F 11C0;C6E5;110B 116F 11C0;
+C6E6;C6E6;110B 116F 11C1;C6E6;110B 116F 11C1;
+C6E7;C6E7;110B 116F 11C2;C6E7;110B 116F 11C2;
+C6E8;C6E8;110B 1170;C6E8;110B 1170;
+C6E9;C6E9;110B 1170 11A8;C6E9;110B 1170 11A8;
+C6EA;C6EA;110B 1170 11A9;C6EA;110B 1170 11A9;
+C6EB;C6EB;110B 1170 11AA;C6EB;110B 1170 11AA;
+C6EC;C6EC;110B 1170 11AB;C6EC;110B 1170 11AB;
+C6ED;C6ED;110B 1170 11AC;C6ED;110B 1170 11AC;
+C6EE;C6EE;110B 1170 11AD;C6EE;110B 1170 11AD;
+C6EF;C6EF;110B 1170 11AE;C6EF;110B 1170 11AE;
+C6F0;C6F0;110B 1170 11AF;C6F0;110B 1170 11AF;
+C6F1;C6F1;110B 1170 11B0;C6F1;110B 1170 11B0;
+C6F2;C6F2;110B 1170 11B1;C6F2;110B 1170 11B1;
+C6F3;C6F3;110B 1170 11B2;C6F3;110B 1170 11B2;
+C6F4;C6F4;110B 1170 11B3;C6F4;110B 1170 11B3;
+C6F5;C6F5;110B 1170 11B4;C6F5;110B 1170 11B4;
+C6F6;C6F6;110B 1170 11B5;C6F6;110B 1170 11B5;
+C6F7;C6F7;110B 1170 11B6;C6F7;110B 1170 11B6;
+C6F8;C6F8;110B 1170 11B7;C6F8;110B 1170 11B7;
+C6F9;C6F9;110B 1170 11B8;C6F9;110B 1170 11B8;
+C6FA;C6FA;110B 1170 11B9;C6FA;110B 1170 11B9;
+C6FB;C6FB;110B 1170 11BA;C6FB;110B 1170 11BA;
+C6FC;C6FC;110B 1170 11BB;C6FC;110B 1170 11BB;
+C6FD;C6FD;110B 1170 11BC;C6FD;110B 1170 11BC;
+C6FE;C6FE;110B 1170 11BD;C6FE;110B 1170 11BD;
+C6FF;C6FF;110B 1170 11BE;C6FF;110B 1170 11BE;
+C700;C700;110B 1170 11BF;C700;110B 1170 11BF;
+C701;C701;110B 1170 11C0;C701;110B 1170 11C0;
+C702;C702;110B 1170 11C1;C702;110B 1170 11C1;
+C703;C703;110B 1170 11C2;C703;110B 1170 11C2;
+C704;C704;110B 1171;C704;110B 1171;
+C705;C705;110B 1171 11A8;C705;110B 1171 11A8;
+C706;C706;110B 1171 11A9;C706;110B 1171 11A9;
+C707;C707;110B 1171 11AA;C707;110B 1171 11AA;
+C708;C708;110B 1171 11AB;C708;110B 1171 11AB;
+C709;C709;110B 1171 11AC;C709;110B 1171 11AC;
+C70A;C70A;110B 1171 11AD;C70A;110B 1171 11AD;
+C70B;C70B;110B 1171 11AE;C70B;110B 1171 11AE;
+C70C;C70C;110B 1171 11AF;C70C;110B 1171 11AF;
+C70D;C70D;110B 1171 11B0;C70D;110B 1171 11B0;
+C70E;C70E;110B 1171 11B1;C70E;110B 1171 11B1;
+C70F;C70F;110B 1171 11B2;C70F;110B 1171 11B2;
+C710;C710;110B 1171 11B3;C710;110B 1171 11B3;
+C711;C711;110B 1171 11B4;C711;110B 1171 11B4;
+C712;C712;110B 1171 11B5;C712;110B 1171 11B5;
+C713;C713;110B 1171 11B6;C713;110B 1171 11B6;
+C714;C714;110B 1171 11B7;C714;110B 1171 11B7;
+C715;C715;110B 1171 11B8;C715;110B 1171 11B8;
+C716;C716;110B 1171 11B9;C716;110B 1171 11B9;
+C717;C717;110B 1171 11BA;C717;110B 1171 11BA;
+C718;C718;110B 1171 11BB;C718;110B 1171 11BB;
+C719;C719;110B 1171 11BC;C719;110B 1171 11BC;
+C71A;C71A;110B 1171 11BD;C71A;110B 1171 11BD;
+C71B;C71B;110B 1171 11BE;C71B;110B 1171 11BE;
+C71C;C71C;110B 1171 11BF;C71C;110B 1171 11BF;
+C71D;C71D;110B 1171 11C0;C71D;110B 1171 11C0;
+C71E;C71E;110B 1171 11C1;C71E;110B 1171 11C1;
+C71F;C71F;110B 1171 11C2;C71F;110B 1171 11C2;
+C720;C720;110B 1172;C720;110B 1172;
+C721;C721;110B 1172 11A8;C721;110B 1172 11A8;
+C722;C722;110B 1172 11A9;C722;110B 1172 11A9;
+C723;C723;110B 1172 11AA;C723;110B 1172 11AA;
+C724;C724;110B 1172 11AB;C724;110B 1172 11AB;
+C725;C725;110B 1172 11AC;C725;110B 1172 11AC;
+C726;C726;110B 1172 11AD;C726;110B 1172 11AD;
+C727;C727;110B 1172 11AE;C727;110B 1172 11AE;
+C728;C728;110B 1172 11AF;C728;110B 1172 11AF;
+C729;C729;110B 1172 11B0;C729;110B 1172 11B0;
+C72A;C72A;110B 1172 11B1;C72A;110B 1172 11B1;
+C72B;C72B;110B 1172 11B2;C72B;110B 1172 11B2;
+C72C;C72C;110B 1172 11B3;C72C;110B 1172 11B3;
+C72D;C72D;110B 1172 11B4;C72D;110B 1172 11B4;
+C72E;C72E;110B 1172 11B5;C72E;110B 1172 11B5;
+C72F;C72F;110B 1172 11B6;C72F;110B 1172 11B6;
+C730;C730;110B 1172 11B7;C730;110B 1172 11B7;
+C731;C731;110B 1172 11B8;C731;110B 1172 11B8;
+C732;C732;110B 1172 11B9;C732;110B 1172 11B9;
+C733;C733;110B 1172 11BA;C733;110B 1172 11BA;
+C734;C734;110B 1172 11BB;C734;110B 1172 11BB;
+C735;C735;110B 1172 11BC;C735;110B 1172 11BC;
+C736;C736;110B 1172 11BD;C736;110B 1172 11BD;
+C737;C737;110B 1172 11BE;C737;110B 1172 11BE;
+C738;C738;110B 1172 11BF;C738;110B 1172 11BF;
+C739;C739;110B 1172 11C0;C739;110B 1172 11C0;
+C73A;C73A;110B 1172 11C1;C73A;110B 1172 11C1;
+C73B;C73B;110B 1172 11C2;C73B;110B 1172 11C2;
+C73C;C73C;110B 1173;C73C;110B 1173;
+C73D;C73D;110B 1173 11A8;C73D;110B 1173 11A8;
+C73E;C73E;110B 1173 11A9;C73E;110B 1173 11A9;
+C73F;C73F;110B 1173 11AA;C73F;110B 1173 11AA;
+C740;C740;110B 1173 11AB;C740;110B 1173 11AB;
+C741;C741;110B 1173 11AC;C741;110B 1173 11AC;
+C742;C742;110B 1173 11AD;C742;110B 1173 11AD;
+C743;C743;110B 1173 11AE;C743;110B 1173 11AE;
+C744;C744;110B 1173 11AF;C744;110B 1173 11AF;
+C745;C745;110B 1173 11B0;C745;110B 1173 11B0;
+C746;C746;110B 1173 11B1;C746;110B 1173 11B1;
+C747;C747;110B 1173 11B2;C747;110B 1173 11B2;
+C748;C748;110B 1173 11B3;C748;110B 1173 11B3;
+C749;C749;110B 1173 11B4;C749;110B 1173 11B4;
+C74A;C74A;110B 1173 11B5;C74A;110B 1173 11B5;
+C74B;C74B;110B 1173 11B6;C74B;110B 1173 11B6;
+C74C;C74C;110B 1173 11B7;C74C;110B 1173 11B7;
+C74D;C74D;110B 1173 11B8;C74D;110B 1173 11B8;
+C74E;C74E;110B 1173 11B9;C74E;110B 1173 11B9;
+C74F;C74F;110B 1173 11BA;C74F;110B 1173 11BA;
+C750;C750;110B 1173 11BB;C750;110B 1173 11BB;
+C751;C751;110B 1173 11BC;C751;110B 1173 11BC;
+C752;C752;110B 1173 11BD;C752;110B 1173 11BD;
+C753;C753;110B 1173 11BE;C753;110B 1173 11BE;
+C754;C754;110B 1173 11BF;C754;110B 1173 11BF;
+C755;C755;110B 1173 11C0;C755;110B 1173 11C0;
+C756;C756;110B 1173 11C1;C756;110B 1173 11C1;
+C757;C757;110B 1173 11C2;C757;110B 1173 11C2;
+C758;C758;110B 1174;C758;110B 1174;
+C759;C759;110B 1174 11A8;C759;110B 1174 11A8;
+C75A;C75A;110B 1174 11A9;C75A;110B 1174 11A9;
+C75B;C75B;110B 1174 11AA;C75B;110B 1174 11AA;
+C75C;C75C;110B 1174 11AB;C75C;110B 1174 11AB;
+C75D;C75D;110B 1174 11AC;C75D;110B 1174 11AC;
+C75E;C75E;110B 1174 11AD;C75E;110B 1174 11AD;
+C75F;C75F;110B 1174 11AE;C75F;110B 1174 11AE;
+C760;C760;110B 1174 11AF;C760;110B 1174 11AF;
+C761;C761;110B 1174 11B0;C761;110B 1174 11B0;
+C762;C762;110B 1174 11B1;C762;110B 1174 11B1;
+C763;C763;110B 1174 11B2;C763;110B 1174 11B2;
+C764;C764;110B 1174 11B3;C764;110B 1174 11B3;
+C765;C765;110B 1174 11B4;C765;110B 1174 11B4;
+C766;C766;110B 1174 11B5;C766;110B 1174 11B5;
+C767;C767;110B 1174 11B6;C767;110B 1174 11B6;
+C768;C768;110B 1174 11B7;C768;110B 1174 11B7;
+C769;C769;110B 1174 11B8;C769;110B 1174 11B8;
+C76A;C76A;110B 1174 11B9;C76A;110B 1174 11B9;
+C76B;C76B;110B 1174 11BA;C76B;110B 1174 11BA;
+C76C;C76C;110B 1174 11BB;C76C;110B 1174 11BB;
+C76D;C76D;110B 1174 11BC;C76D;110B 1174 11BC;
+C76E;C76E;110B 1174 11BD;C76E;110B 1174 11BD;
+C76F;C76F;110B 1174 11BE;C76F;110B 1174 11BE;
+C770;C770;110B 1174 11BF;C770;110B 1174 11BF;
+C771;C771;110B 1174 11C0;C771;110B 1174 11C0;
+C772;C772;110B 1174 11C1;C772;110B 1174 11C1;
+C773;C773;110B 1174 11C2;C773;110B 1174 11C2;
+C774;C774;110B 1175;C774;110B 1175;
+C775;C775;110B 1175 11A8;C775;110B 1175 11A8;
+C776;C776;110B 1175 11A9;C776;110B 1175 11A9;
+C777;C777;110B 1175 11AA;C777;110B 1175 11AA;
+C778;C778;110B 1175 11AB;C778;110B 1175 11AB;
+C779;C779;110B 1175 11AC;C779;110B 1175 11AC;
+C77A;C77A;110B 1175 11AD;C77A;110B 1175 11AD;
+C77B;C77B;110B 1175 11AE;C77B;110B 1175 11AE;
+C77C;C77C;110B 1175 11AF;C77C;110B 1175 11AF;
+C77D;C77D;110B 1175 11B0;C77D;110B 1175 11B0;
+C77E;C77E;110B 1175 11B1;C77E;110B 1175 11B1;
+C77F;C77F;110B 1175 11B2;C77F;110B 1175 11B2;
+C780;C780;110B 1175 11B3;C780;110B 1175 11B3;
+C781;C781;110B 1175 11B4;C781;110B 1175 11B4;
+C782;C782;110B 1175 11B5;C782;110B 1175 11B5;
+C783;C783;110B 1175 11B6;C783;110B 1175 11B6;
+C784;C784;110B 1175 11B7;C784;110B 1175 11B7;
+C785;C785;110B 1175 11B8;C785;110B 1175 11B8;
+C786;C786;110B 1175 11B9;C786;110B 1175 11B9;
+C787;C787;110B 1175 11BA;C787;110B 1175 11BA;
+C788;C788;110B 1175 11BB;C788;110B 1175 11BB;
+C789;C789;110B 1175 11BC;C789;110B 1175 11BC;
+C78A;C78A;110B 1175 11BD;C78A;110B 1175 11BD;
+C78B;C78B;110B 1175 11BE;C78B;110B 1175 11BE;
+C78C;C78C;110B 1175 11BF;C78C;110B 1175 11BF;
+C78D;C78D;110B 1175 11C0;C78D;110B 1175 11C0;
+C78E;C78E;110B 1175 11C1;C78E;110B 1175 11C1;
+C78F;C78F;110B 1175 11C2;C78F;110B 1175 11C2;
+C790;C790;110C 1161;C790;110C 1161;
+C791;C791;110C 1161 11A8;C791;110C 1161 11A8;
+C792;C792;110C 1161 11A9;C792;110C 1161 11A9;
+C793;C793;110C 1161 11AA;C793;110C 1161 11AA;
+C794;C794;110C 1161 11AB;C794;110C 1161 11AB;
+C795;C795;110C 1161 11AC;C795;110C 1161 11AC;
+C796;C796;110C 1161 11AD;C796;110C 1161 11AD;
+C797;C797;110C 1161 11AE;C797;110C 1161 11AE;
+C798;C798;110C 1161 11AF;C798;110C 1161 11AF;
+C799;C799;110C 1161 11B0;C799;110C 1161 11B0;
+C79A;C79A;110C 1161 11B1;C79A;110C 1161 11B1;
+C79B;C79B;110C 1161 11B2;C79B;110C 1161 11B2;
+C79C;C79C;110C 1161 11B3;C79C;110C 1161 11B3;
+C79D;C79D;110C 1161 11B4;C79D;110C 1161 11B4;
+C79E;C79E;110C 1161 11B5;C79E;110C 1161 11B5;
+C79F;C79F;110C 1161 11B6;C79F;110C 1161 11B6;
+C7A0;C7A0;110C 1161 11B7;C7A0;110C 1161 11B7;
+C7A1;C7A1;110C 1161 11B8;C7A1;110C 1161 11B8;
+C7A2;C7A2;110C 1161 11B9;C7A2;110C 1161 11B9;
+C7A3;C7A3;110C 1161 11BA;C7A3;110C 1161 11BA;
+C7A4;C7A4;110C 1161 11BB;C7A4;110C 1161 11BB;
+C7A5;C7A5;110C 1161 11BC;C7A5;110C 1161 11BC;
+C7A6;C7A6;110C 1161 11BD;C7A6;110C 1161 11BD;
+C7A7;C7A7;110C 1161 11BE;C7A7;110C 1161 11BE;
+C7A8;C7A8;110C 1161 11BF;C7A8;110C 1161 11BF;
+C7A9;C7A9;110C 1161 11C0;C7A9;110C 1161 11C0;
+C7AA;C7AA;110C 1161 11C1;C7AA;110C 1161 11C1;
+C7AB;C7AB;110C 1161 11C2;C7AB;110C 1161 11C2;
+C7AC;C7AC;110C 1162;C7AC;110C 1162;
+C7AD;C7AD;110C 1162 11A8;C7AD;110C 1162 11A8;
+C7AE;C7AE;110C 1162 11A9;C7AE;110C 1162 11A9;
+C7AF;C7AF;110C 1162 11AA;C7AF;110C 1162 11AA;
+C7B0;C7B0;110C 1162 11AB;C7B0;110C 1162 11AB;
+C7B1;C7B1;110C 1162 11AC;C7B1;110C 1162 11AC;
+C7B2;C7B2;110C 1162 11AD;C7B2;110C 1162 11AD;
+C7B3;C7B3;110C 1162 11AE;C7B3;110C 1162 11AE;
+C7B4;C7B4;110C 1162 11AF;C7B4;110C 1162 11AF;
+C7B5;C7B5;110C 1162 11B0;C7B5;110C 1162 11B0;
+C7B6;C7B6;110C 1162 11B1;C7B6;110C 1162 11B1;
+C7B7;C7B7;110C 1162 11B2;C7B7;110C 1162 11B2;
+C7B8;C7B8;110C 1162 11B3;C7B8;110C 1162 11B3;
+C7B9;C7B9;110C 1162 11B4;C7B9;110C 1162 11B4;
+C7BA;C7BA;110C 1162 11B5;C7BA;110C 1162 11B5;
+C7BB;C7BB;110C 1162 11B6;C7BB;110C 1162 11B6;
+C7BC;C7BC;110C 1162 11B7;C7BC;110C 1162 11B7;
+C7BD;C7BD;110C 1162 11B8;C7BD;110C 1162 11B8;
+C7BE;C7BE;110C 1162 11B9;C7BE;110C 1162 11B9;
+C7BF;C7BF;110C 1162 11BA;C7BF;110C 1162 11BA;
+C7C0;C7C0;110C 1162 11BB;C7C0;110C 1162 11BB;
+C7C1;C7C1;110C 1162 11BC;C7C1;110C 1162 11BC;
+C7C2;C7C2;110C 1162 11BD;C7C2;110C 1162 11BD;
+C7C3;C7C3;110C 1162 11BE;C7C3;110C 1162 11BE;
+C7C4;C7C4;110C 1162 11BF;C7C4;110C 1162 11BF;
+C7C5;C7C5;110C 1162 11C0;C7C5;110C 1162 11C0;
+C7C6;C7C6;110C 1162 11C1;C7C6;110C 1162 11C1;
+C7C7;C7C7;110C 1162 11C2;C7C7;110C 1162 11C2;
+C7C8;C7C8;110C 1163;C7C8;110C 1163;
+C7C9;C7C9;110C 1163 11A8;C7C9;110C 1163 11A8;
+C7CA;C7CA;110C 1163 11A9;C7CA;110C 1163 11A9;
+C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA;
+C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB;
+C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC;
+C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD;
+C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE;
+C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF;
+C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0;
+C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1;
+C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2;
+C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3;
+C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4;
+C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5;
+C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6;
+C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7;
+C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8;
+C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9;
+C7DB;C7DB;110C 1163 11BA;C7DB;110C 1163 11BA;
+C7DC;C7DC;110C 1163 11BB;C7DC;110C 1163 11BB;
+C7DD;C7DD;110C 1163 11BC;C7DD;110C 1163 11BC;
+C7DE;C7DE;110C 1163 11BD;C7DE;110C 1163 11BD;
+C7DF;C7DF;110C 1163 11BE;C7DF;110C 1163 11BE;
+C7E0;C7E0;110C 1163 11BF;C7E0;110C 1163 11BF;
+C7E1;C7E1;110C 1163 11C0;C7E1;110C 1163 11C0;
+C7E2;C7E2;110C 1163 11C1;C7E2;110C 1163 11C1;
+C7E3;C7E3;110C 1163 11C2;C7E3;110C 1163 11C2;
+C7E4;C7E4;110C 1164;C7E4;110C 1164;
+C7E5;C7E5;110C 1164 11A8;C7E5;110C 1164 11A8;
+C7E6;C7E6;110C 1164 11A9;C7E6;110C 1164 11A9;
+C7E7;C7E7;110C 1164 11AA;C7E7;110C 1164 11AA;
+C7E8;C7E8;110C 1164 11AB;C7E8;110C 1164 11AB;
+C7E9;C7E9;110C 1164 11AC;C7E9;110C 1164 11AC;
+C7EA;C7EA;110C 1164 11AD;C7EA;110C 1164 11AD;
+C7EB;C7EB;110C 1164 11AE;C7EB;110C 1164 11AE;
+C7EC;C7EC;110C 1164 11AF;C7EC;110C 1164 11AF;
+C7ED;C7ED;110C 1164 11B0;C7ED;110C 1164 11B0;
+C7EE;C7EE;110C 1164 11B1;C7EE;110C 1164 11B1;
+C7EF;C7EF;110C 1164 11B2;C7EF;110C 1164 11B2;
+C7F0;C7F0;110C 1164 11B3;C7F0;110C 1164 11B3;
+C7F1;C7F1;110C 1164 11B4;C7F1;110C 1164 11B4;
+C7F2;C7F2;110C 1164 11B5;C7F2;110C 1164 11B5;
+C7F3;C7F3;110C 1164 11B6;C7F3;110C 1164 11B6;
+C7F4;C7F4;110C 1164 11B7;C7F4;110C 1164 11B7;
+C7F5;C7F5;110C 1164 11B8;C7F5;110C 1164 11B8;
+C7F6;C7F6;110C 1164 11B9;C7F6;110C 1164 11B9;
+C7F7;C7F7;110C 1164 11BA;C7F7;110C 1164 11BA;
+C7F8;C7F8;110C 1164 11BB;C7F8;110C 1164 11BB;
+C7F9;C7F9;110C 1164 11BC;C7F9;110C 1164 11BC;
+C7FA;C7FA;110C 1164 11BD;C7FA;110C 1164 11BD;
+C7FB;C7FB;110C 1164 11BE;C7FB;110C 1164 11BE;
+C7FC;C7FC;110C 1164 11BF;C7FC;110C 1164 11BF;
+C7FD;C7FD;110C 1164 11C0;C7FD;110C 1164 11C0;
+C7FE;C7FE;110C 1164 11C1;C7FE;110C 1164 11C1;
+C7FF;C7FF;110C 1164 11C2;C7FF;110C 1164 11C2;
+C800;C800;110C 1165;C800;110C 1165;
+C801;C801;110C 1165 11A8;C801;110C 1165 11A8;
+C802;C802;110C 1165 11A9;C802;110C 1165 11A9;
+C803;C803;110C 1165 11AA;C803;110C 1165 11AA;
+C804;C804;110C 1165 11AB;C804;110C 1165 11AB;
+C805;C805;110C 1165 11AC;C805;110C 1165 11AC;
+C806;C806;110C 1165 11AD;C806;110C 1165 11AD;
+C807;C807;110C 1165 11AE;C807;110C 1165 11AE;
+C808;C808;110C 1165 11AF;C808;110C 1165 11AF;
+C809;C809;110C 1165 11B0;C809;110C 1165 11B0;
+C80A;C80A;110C 1165 11B1;C80A;110C 1165 11B1;
+C80B;C80B;110C 1165 11B2;C80B;110C 1165 11B2;
+C80C;C80C;110C 1165 11B3;C80C;110C 1165 11B3;
+C80D;C80D;110C 1165 11B4;C80D;110C 1165 11B4;
+C80E;C80E;110C 1165 11B5;C80E;110C 1165 11B5;
+C80F;C80F;110C 1165 11B6;C80F;110C 1165 11B6;
+C810;C810;110C 1165 11B7;C810;110C 1165 11B7;
+C811;C811;110C 1165 11B8;C811;110C 1165 11B8;
+C812;C812;110C 1165 11B9;C812;110C 1165 11B9;
+C813;C813;110C 1165 11BA;C813;110C 1165 11BA;
+C814;C814;110C 1165 11BB;C814;110C 1165 11BB;
+C815;C815;110C 1165 11BC;C815;110C 1165 11BC;
+C816;C816;110C 1165 11BD;C816;110C 1165 11BD;
+C817;C817;110C 1165 11BE;C817;110C 1165 11BE;
+C818;C818;110C 1165 11BF;C818;110C 1165 11BF;
+C819;C819;110C 1165 11C0;C819;110C 1165 11C0;
+C81A;C81A;110C 1165 11C1;C81A;110C 1165 11C1;
+C81B;C81B;110C 1165 11C2;C81B;110C 1165 11C2;
+C81C;C81C;110C 1166;C81C;110C 1166;
+C81D;C81D;110C 1166 11A8;C81D;110C 1166 11A8;
+C81E;C81E;110C 1166 11A9;C81E;110C 1166 11A9;
+C81F;C81F;110C 1166 11AA;C81F;110C 1166 11AA;
+C820;C820;110C 1166 11AB;C820;110C 1166 11AB;
+C821;C821;110C 1166 11AC;C821;110C 1166 11AC;
+C822;C822;110C 1166 11AD;C822;110C 1166 11AD;
+C823;C823;110C 1166 11AE;C823;110C 1166 11AE;
+C824;C824;110C 1166 11AF;C824;110C 1166 11AF;
+C825;C825;110C 1166 11B0;C825;110C 1166 11B0;
+C826;C826;110C 1166 11B1;C826;110C 1166 11B1;
+C827;C827;110C 1166 11B2;C827;110C 1166 11B2;
+C828;C828;110C 1166 11B3;C828;110C 1166 11B3;
+C829;C829;110C 1166 11B4;C829;110C 1166 11B4;
+C82A;C82A;110C 1166 11B5;C82A;110C 1166 11B5;
+C82B;C82B;110C 1166 11B6;C82B;110C 1166 11B6;
+C82C;C82C;110C 1166 11B7;C82C;110C 1166 11B7;
+C82D;C82D;110C 1166 11B8;C82D;110C 1166 11B8;
+C82E;C82E;110C 1166 11B9;C82E;110C 1166 11B9;
+C82F;C82F;110C 1166 11BA;C82F;110C 1166 11BA;
+C830;C830;110C 1166 11BB;C830;110C 1166 11BB;
+C831;C831;110C 1166 11BC;C831;110C 1166 11BC;
+C832;C832;110C 1166 11BD;C832;110C 1166 11BD;
+C833;C833;110C 1166 11BE;C833;110C 1166 11BE;
+C834;C834;110C 1166 11BF;C834;110C 1166 11BF;
+C835;C835;110C 1166 11C0;C835;110C 1166 11C0;
+C836;C836;110C 1166 11C1;C836;110C 1166 11C1;
+C837;C837;110C 1166 11C2;C837;110C 1166 11C2;
+C838;C838;110C 1167;C838;110C 1167;
+C839;C839;110C 1167 11A8;C839;110C 1167 11A8;
+C83A;C83A;110C 1167 11A9;C83A;110C 1167 11A9;
+C83B;C83B;110C 1167 11AA;C83B;110C 1167 11AA;
+C83C;C83C;110C 1167 11AB;C83C;110C 1167 11AB;
+C83D;C83D;110C 1167 11AC;C83D;110C 1167 11AC;
+C83E;C83E;110C 1167 11AD;C83E;110C 1167 11AD;
+C83F;C83F;110C 1167 11AE;C83F;110C 1167 11AE;
+C840;C840;110C 1167 11AF;C840;110C 1167 11AF;
+C841;C841;110C 1167 11B0;C841;110C 1167 11B0;
+C842;C842;110C 1167 11B1;C842;110C 1167 11B1;
+C843;C843;110C 1167 11B2;C843;110C 1167 11B2;
+C844;C844;110C 1167 11B3;C844;110C 1167 11B3;
+C845;C845;110C 1167 11B4;C845;110C 1167 11B4;
+C846;C846;110C 1167 11B5;C846;110C 1167 11B5;
+C847;C847;110C 1167 11B6;C847;110C 1167 11B6;
+C848;C848;110C 1167 11B7;C848;110C 1167 11B7;
+C849;C849;110C 1167 11B8;C849;110C 1167 11B8;
+C84A;C84A;110C 1167 11B9;C84A;110C 1167 11B9;
+C84B;C84B;110C 1167 11BA;C84B;110C 1167 11BA;
+C84C;C84C;110C 1167 11BB;C84C;110C 1167 11BB;
+C84D;C84D;110C 1167 11BC;C84D;110C 1167 11BC;
+C84E;C84E;110C 1167 11BD;C84E;110C 1167 11BD;
+C84F;C84F;110C 1167 11BE;C84F;110C 1167 11BE;
+C850;C850;110C 1167 11BF;C850;110C 1167 11BF;
+C851;C851;110C 1167 11C0;C851;110C 1167 11C0;
+C852;C852;110C 1167 11C1;C852;110C 1167 11C1;
+C853;C853;110C 1167 11C2;C853;110C 1167 11C2;
+C854;C854;110C 1168;C854;110C 1168;
+C855;C855;110C 1168 11A8;C855;110C 1168 11A8;
+C856;C856;110C 1168 11A9;C856;110C 1168 11A9;
+C857;C857;110C 1168 11AA;C857;110C 1168 11AA;
+C858;C858;110C 1168 11AB;C858;110C 1168 11AB;
+C859;C859;110C 1168 11AC;C859;110C 1168 11AC;
+C85A;C85A;110C 1168 11AD;C85A;110C 1168 11AD;
+C85B;C85B;110C 1168 11AE;C85B;110C 1168 11AE;
+C85C;C85C;110C 1168 11AF;C85C;110C 1168 11AF;
+C85D;C85D;110C 1168 11B0;C85D;110C 1168 11B0;
+C85E;C85E;110C 1168 11B1;C85E;110C 1168 11B1;
+C85F;C85F;110C 1168 11B2;C85F;110C 1168 11B2;
+C860;C860;110C 1168 11B3;C860;110C 1168 11B3;
+C861;C861;110C 1168 11B4;C861;110C 1168 11B4;
+C862;C862;110C 1168 11B5;C862;110C 1168 11B5;
+C863;C863;110C 1168 11B6;C863;110C 1168 11B6;
+C864;C864;110C 1168 11B7;C864;110C 1168 11B7;
+C865;C865;110C 1168 11B8;C865;110C 1168 11B8;
+C866;C866;110C 1168 11B9;C866;110C 1168 11B9;
+C867;C867;110C 1168 11BA;C867;110C 1168 11BA;
+C868;C868;110C 1168 11BB;C868;110C 1168 11BB;
+C869;C869;110C 1168 11BC;C869;110C 1168 11BC;
+C86A;C86A;110C 1168 11BD;C86A;110C 1168 11BD;
+C86B;C86B;110C 1168 11BE;C86B;110C 1168 11BE;
+C86C;C86C;110C 1168 11BF;C86C;110C 1168 11BF;
+C86D;C86D;110C 1168 11C0;C86D;110C 1168 11C0;
+C86E;C86E;110C 1168 11C1;C86E;110C 1168 11C1;
+C86F;C86F;110C 1168 11C2;C86F;110C 1168 11C2;
+C870;C870;110C 1169;C870;110C 1169;
+C871;C871;110C 1169 11A8;C871;110C 1169 11A8;
+C872;C872;110C 1169 11A9;C872;110C 1169 11A9;
+C873;C873;110C 1169 11AA;C873;110C 1169 11AA;
+C874;C874;110C 1169 11AB;C874;110C 1169 11AB;
+C875;C875;110C 1169 11AC;C875;110C 1169 11AC;
+C876;C876;110C 1169 11AD;C876;110C 1169 11AD;
+C877;C877;110C 1169 11AE;C877;110C 1169 11AE;
+C878;C878;110C 1169 11AF;C878;110C 1169 11AF;
+C879;C879;110C 1169 11B0;C879;110C 1169 11B0;
+C87A;C87A;110C 1169 11B1;C87A;110C 1169 11B1;
+C87B;C87B;110C 1169 11B2;C87B;110C 1169 11B2;
+C87C;C87C;110C 1169 11B3;C87C;110C 1169 11B3;
+C87D;C87D;110C 1169 11B4;C87D;110C 1169 11B4;
+C87E;C87E;110C 1169 11B5;C87E;110C 1169 11B5;
+C87F;C87F;110C 1169 11B6;C87F;110C 1169 11B6;
+C880;C880;110C 1169 11B7;C880;110C 1169 11B7;
+C881;C881;110C 1169 11B8;C881;110C 1169 11B8;
+C882;C882;110C 1169 11B9;C882;110C 1169 11B9;
+C883;C883;110C 1169 11BA;C883;110C 1169 11BA;
+C884;C884;110C 1169 11BB;C884;110C 1169 11BB;
+C885;C885;110C 1169 11BC;C885;110C 1169 11BC;
+C886;C886;110C 1169 11BD;C886;110C 1169 11BD;
+C887;C887;110C 1169 11BE;C887;110C 1169 11BE;
+C888;C888;110C 1169 11BF;C888;110C 1169 11BF;
+C889;C889;110C 1169 11C0;C889;110C 1169 11C0;
+C88A;C88A;110C 1169 11C1;C88A;110C 1169 11C1;
+C88B;C88B;110C 1169 11C2;C88B;110C 1169 11C2;
+C88C;C88C;110C 116A;C88C;110C 116A;
+C88D;C88D;110C 116A 11A8;C88D;110C 116A 11A8;
+C88E;C88E;110C 116A 11A9;C88E;110C 116A 11A9;
+C88F;C88F;110C 116A 11AA;C88F;110C 116A 11AA;
+C890;C890;110C 116A 11AB;C890;110C 116A 11AB;
+C891;C891;110C 116A 11AC;C891;110C 116A 11AC;
+C892;C892;110C 116A 11AD;C892;110C 116A 11AD;
+C893;C893;110C 116A 11AE;C893;110C 116A 11AE;
+C894;C894;110C 116A 11AF;C894;110C 116A 11AF;
+C895;C895;110C 116A 11B0;C895;110C 116A 11B0;
+C896;C896;110C 116A 11B1;C896;110C 116A 11B1;
+C897;C897;110C 116A 11B2;C897;110C 116A 11B2;
+C898;C898;110C 116A 11B3;C898;110C 116A 11B3;
+C899;C899;110C 116A 11B4;C899;110C 116A 11B4;
+C89A;C89A;110C 116A 11B5;C89A;110C 116A 11B5;
+C89B;C89B;110C 116A 11B6;C89B;110C 116A 11B6;
+C89C;C89C;110C 116A 11B7;C89C;110C 116A 11B7;
+C89D;C89D;110C 116A 11B8;C89D;110C 116A 11B8;
+C89E;C89E;110C 116A 11B9;C89E;110C 116A 11B9;
+C89F;C89F;110C 116A 11BA;C89F;110C 116A 11BA;
+C8A0;C8A0;110C 116A 11BB;C8A0;110C 116A 11BB;
+C8A1;C8A1;110C 116A 11BC;C8A1;110C 116A 11BC;
+C8A2;C8A2;110C 116A 11BD;C8A2;110C 116A 11BD;
+C8A3;C8A3;110C 116A 11BE;C8A3;110C 116A 11BE;
+C8A4;C8A4;110C 116A 11BF;C8A4;110C 116A 11BF;
+C8A5;C8A5;110C 116A 11C0;C8A5;110C 116A 11C0;
+C8A6;C8A6;110C 116A 11C1;C8A6;110C 116A 11C1;
+C8A7;C8A7;110C 116A 11C2;C8A7;110C 116A 11C2;
+C8A8;C8A8;110C 116B;C8A8;110C 116B;
+C8A9;C8A9;110C 116B 11A8;C8A9;110C 116B 11A8;
+C8AA;C8AA;110C 116B 11A9;C8AA;110C 116B 11A9;
+C8AB;C8AB;110C 116B 11AA;C8AB;110C 116B 11AA;
+C8AC;C8AC;110C 116B 11AB;C8AC;110C 116B 11AB;
+C8AD;C8AD;110C 116B 11AC;C8AD;110C 116B 11AC;
+C8AE;C8AE;110C 116B 11AD;C8AE;110C 116B 11AD;
+C8AF;C8AF;110C 116B 11AE;C8AF;110C 116B 11AE;
+C8B0;C8B0;110C 116B 11AF;C8B0;110C 116B 11AF;
+C8B1;C8B1;110C 116B 11B0;C8B1;110C 116B 11B0;
+C8B2;C8B2;110C 116B 11B1;C8B2;110C 116B 11B1;
+C8B3;C8B3;110C 116B 11B2;C8B3;110C 116B 11B2;
+C8B4;C8B4;110C 116B 11B3;C8B4;110C 116B 11B3;
+C8B5;C8B5;110C 116B 11B4;C8B5;110C 116B 11B4;
+C8B6;C8B6;110C 116B 11B5;C8B6;110C 116B 11B5;
+C8B7;C8B7;110C 116B 11B6;C8B7;110C 116B 11B6;
+C8B8;C8B8;110C 116B 11B7;C8B8;110C 116B 11B7;
+C8B9;C8B9;110C 116B 11B8;C8B9;110C 116B 11B8;
+C8BA;C8BA;110C 116B 11B9;C8BA;110C 116B 11B9;
+C8BB;C8BB;110C 116B 11BA;C8BB;110C 116B 11BA;
+C8BC;C8BC;110C 116B 11BB;C8BC;110C 116B 11BB;
+C8BD;C8BD;110C 116B 11BC;C8BD;110C 116B 11BC;
+C8BE;C8BE;110C 116B 11BD;C8BE;110C 116B 11BD;
+C8BF;C8BF;110C 116B 11BE;C8BF;110C 116B 11BE;
+C8C0;C8C0;110C 116B 11BF;C8C0;110C 116B 11BF;
+C8C1;C8C1;110C 116B 11C0;C8C1;110C 116B 11C0;
+C8C2;C8C2;110C 116B 11C1;C8C2;110C 116B 11C1;
+C8C3;C8C3;110C 116B 11C2;C8C3;110C 116B 11C2;
+C8C4;C8C4;110C 116C;C8C4;110C 116C;
+C8C5;C8C5;110C 116C 11A8;C8C5;110C 116C 11A8;
+C8C6;C8C6;110C 116C 11A9;C8C6;110C 116C 11A9;
+C8C7;C8C7;110C 116C 11AA;C8C7;110C 116C 11AA;
+C8C8;C8C8;110C 116C 11AB;C8C8;110C 116C 11AB;
+C8C9;C8C9;110C 116C 11AC;C8C9;110C 116C 11AC;
+C8CA;C8CA;110C 116C 11AD;C8CA;110C 116C 11AD;
+C8CB;C8CB;110C 116C 11AE;C8CB;110C 116C 11AE;
+C8CC;C8CC;110C 116C 11AF;C8CC;110C 116C 11AF;
+C8CD;C8CD;110C 116C 11B0;C8CD;110C 116C 11B0;
+C8CE;C8CE;110C 116C 11B1;C8CE;110C 116C 11B1;
+C8CF;C8CF;110C 116C 11B2;C8CF;110C 116C 11B2;
+C8D0;C8D0;110C 116C 11B3;C8D0;110C 116C 11B3;
+C8D1;C8D1;110C 116C 11B4;C8D1;110C 116C 11B4;
+C8D2;C8D2;110C 116C 11B5;C8D2;110C 116C 11B5;
+C8D3;C8D3;110C 116C 11B6;C8D3;110C 116C 11B6;
+C8D4;C8D4;110C 116C 11B7;C8D4;110C 116C 11B7;
+C8D5;C8D5;110C 116C 11B8;C8D5;110C 116C 11B8;
+C8D6;C8D6;110C 116C 11B9;C8D6;110C 116C 11B9;
+C8D7;C8D7;110C 116C 11BA;C8D7;110C 116C 11BA;
+C8D8;C8D8;110C 116C 11BB;C8D8;110C 116C 11BB;
+C8D9;C8D9;110C 116C 11BC;C8D9;110C 116C 11BC;
+C8DA;C8DA;110C 116C 11BD;C8DA;110C 116C 11BD;
+C8DB;C8DB;110C 116C 11BE;C8DB;110C 116C 11BE;
+C8DC;C8DC;110C 116C 11BF;C8DC;110C 116C 11BF;
+C8DD;C8DD;110C 116C 11C0;C8DD;110C 116C 11C0;
+C8DE;C8DE;110C 116C 11C1;C8DE;110C 116C 11C1;
+C8DF;C8DF;110C 116C 11C2;C8DF;110C 116C 11C2;
+C8E0;C8E0;110C 116D;C8E0;110C 116D;
+C8E1;C8E1;110C 116D 11A8;C8E1;110C 116D 11A8;
+C8E2;C8E2;110C 116D 11A9;C8E2;110C 116D 11A9;
+C8E3;C8E3;110C 116D 11AA;C8E3;110C 116D 11AA;
+C8E4;C8E4;110C 116D 11AB;C8E4;110C 116D 11AB;
+C8E5;C8E5;110C 116D 11AC;C8E5;110C 116D 11AC;
+C8E6;C8E6;110C 116D 11AD;C8E6;110C 116D 11AD;
+C8E7;C8E7;110C 116D 11AE;C8E7;110C 116D 11AE;
+C8E8;C8E8;110C 116D 11AF;C8E8;110C 116D 11AF;
+C8E9;C8E9;110C 116D 11B0;C8E9;110C 116D 11B0;
+C8EA;C8EA;110C 116D 11B1;C8EA;110C 116D 11B1;
+C8EB;C8EB;110C 116D 11B2;C8EB;110C 116D 11B2;
+C8EC;C8EC;110C 116D 11B3;C8EC;110C 116D 11B3;
+C8ED;C8ED;110C 116D 11B4;C8ED;110C 116D 11B4;
+C8EE;C8EE;110C 116D 11B5;C8EE;110C 116D 11B5;
+C8EF;C8EF;110C 116D 11B6;C8EF;110C 116D 11B6;
+C8F0;C8F0;110C 116D 11B7;C8F0;110C 116D 11B7;
+C8F1;C8F1;110C 116D 11B8;C8F1;110C 116D 11B8;
+C8F2;C8F2;110C 116D 11B9;C8F2;110C 116D 11B9;
+C8F3;C8F3;110C 116D 11BA;C8F3;110C 116D 11BA;
+C8F4;C8F4;110C 116D 11BB;C8F4;110C 116D 11BB;
+C8F5;C8F5;110C 116D 11BC;C8F5;110C 116D 11BC;
+C8F6;C8F6;110C 116D 11BD;C8F6;110C 116D 11BD;
+C8F7;C8F7;110C 116D 11BE;C8F7;110C 116D 11BE;
+C8F8;C8F8;110C 116D 11BF;C8F8;110C 116D 11BF;
+C8F9;C8F9;110C 116D 11C0;C8F9;110C 116D 11C0;
+C8FA;C8FA;110C 116D 11C1;C8FA;110C 116D 11C1;
+C8FB;C8FB;110C 116D 11C2;C8FB;110C 116D 11C2;
+C8FC;C8FC;110C 116E;C8FC;110C 116E;
+C8FD;C8FD;110C 116E 11A8;C8FD;110C 116E 11A8;
+C8FE;C8FE;110C 116E 11A9;C8FE;110C 116E 11A9;
+C8FF;C8FF;110C 116E 11AA;C8FF;110C 116E 11AA;
+C900;C900;110C 116E 11AB;C900;110C 116E 11AB;
+C901;C901;110C 116E 11AC;C901;110C 116E 11AC;
+C902;C902;110C 116E 11AD;C902;110C 116E 11AD;
+C903;C903;110C 116E 11AE;C903;110C 116E 11AE;
+C904;C904;110C 116E 11AF;C904;110C 116E 11AF;
+C905;C905;110C 116E 11B0;C905;110C 116E 11B0;
+C906;C906;110C 116E 11B1;C906;110C 116E 11B1;
+C907;C907;110C 116E 11B2;C907;110C 116E 11B2;
+C908;C908;110C 116E 11B3;C908;110C 116E 11B3;
+C909;C909;110C 116E 11B4;C909;110C 116E 11B4;
+C90A;C90A;110C 116E 11B5;C90A;110C 116E 11B5;
+C90B;C90B;110C 116E 11B6;C90B;110C 116E 11B6;
+C90C;C90C;110C 116E 11B7;C90C;110C 116E 11B7;
+C90D;C90D;110C 116E 11B8;C90D;110C 116E 11B8;
+C90E;C90E;110C 116E 11B9;C90E;110C 116E 11B9;
+C90F;C90F;110C 116E 11BA;C90F;110C 116E 11BA;
+C910;C910;110C 116E 11BB;C910;110C 116E 11BB;
+C911;C911;110C 116E 11BC;C911;110C 116E 11BC;
+C912;C912;110C 116E 11BD;C912;110C 116E 11BD;
+C913;C913;110C 116E 11BE;C913;110C 116E 11BE;
+C914;C914;110C 116E 11BF;C914;110C 116E 11BF;
+C915;C915;110C 116E 11C0;C915;110C 116E 11C0;
+C916;C916;110C 116E 11C1;C916;110C 116E 11C1;
+C917;C917;110C 116E 11C2;C917;110C 116E 11C2;
+C918;C918;110C 116F;C918;110C 116F;
+C919;C919;110C 116F 11A8;C919;110C 116F 11A8;
+C91A;C91A;110C 116F 11A9;C91A;110C 116F 11A9;
+C91B;C91B;110C 116F 11AA;C91B;110C 116F 11AA;
+C91C;C91C;110C 116F 11AB;C91C;110C 116F 11AB;
+C91D;C91D;110C 116F 11AC;C91D;110C 116F 11AC;
+C91E;C91E;110C 116F 11AD;C91E;110C 116F 11AD;
+C91F;C91F;110C 116F 11AE;C91F;110C 116F 11AE;
+C920;C920;110C 116F 11AF;C920;110C 116F 11AF;
+C921;C921;110C 116F 11B0;C921;110C 116F 11B0;
+C922;C922;110C 116F 11B1;C922;110C 116F 11B1;
+C923;C923;110C 116F 11B2;C923;110C 116F 11B2;
+C924;C924;110C 116F 11B3;C924;110C 116F 11B3;
+C925;C925;110C 116F 11B4;C925;110C 116F 11B4;
+C926;C926;110C 116F 11B5;C926;110C 116F 11B5;
+C927;C927;110C 116F 11B6;C927;110C 116F 11B6;
+C928;C928;110C 116F 11B7;C928;110C 116F 11B7;
+C929;C929;110C 116F 11B8;C929;110C 116F 11B8;
+C92A;C92A;110C 116F 11B9;C92A;110C 116F 11B9;
+C92B;C92B;110C 116F 11BA;C92B;110C 116F 11BA;
+C92C;C92C;110C 116F 11BB;C92C;110C 116F 11BB;
+C92D;C92D;110C 116F 11BC;C92D;110C 116F 11BC;
+C92E;C92E;110C 116F 11BD;C92E;110C 116F 11BD;
+C92F;C92F;110C 116F 11BE;C92F;110C 116F 11BE;
+C930;C930;110C 116F 11BF;C930;110C 116F 11BF;
+C931;C931;110C 116F 11C0;C931;110C 116F 11C0;
+C932;C932;110C 116F 11C1;C932;110C 116F 11C1;
+C933;C933;110C 116F 11C2;C933;110C 116F 11C2;
+C934;C934;110C 1170;C934;110C 1170;
+C935;C935;110C 1170 11A8;C935;110C 1170 11A8;
+C936;C936;110C 1170 11A9;C936;110C 1170 11A9;
+C937;C937;110C 1170 11AA;C937;110C 1170 11AA;
+C938;C938;110C 1170 11AB;C938;110C 1170 11AB;
+C939;C939;110C 1170 11AC;C939;110C 1170 11AC;
+C93A;C93A;110C 1170 11AD;C93A;110C 1170 11AD;
+C93B;C93B;110C 1170 11AE;C93B;110C 1170 11AE;
+C93C;C93C;110C 1170 11AF;C93C;110C 1170 11AF;
+C93D;C93D;110C 1170 11B0;C93D;110C 1170 11B0;
+C93E;C93E;110C 1170 11B1;C93E;110C 1170 11B1;
+C93F;C93F;110C 1170 11B2;C93F;110C 1170 11B2;
+C940;C940;110C 1170 11B3;C940;110C 1170 11B3;
+C941;C941;110C 1170 11B4;C941;110C 1170 11B4;
+C942;C942;110C 1170 11B5;C942;110C 1170 11B5;
+C943;C943;110C 1170 11B6;C943;110C 1170 11B6;
+C944;C944;110C 1170 11B7;C944;110C 1170 11B7;
+C945;C945;110C 1170 11B8;C945;110C 1170 11B8;
+C946;C946;110C 1170 11B9;C946;110C 1170 11B9;
+C947;C947;110C 1170 11BA;C947;110C 1170 11BA;
+C948;C948;110C 1170 11BB;C948;110C 1170 11BB;
+C949;C949;110C 1170 11BC;C949;110C 1170 11BC;
+C94A;C94A;110C 1170 11BD;C94A;110C 1170 11BD;
+C94B;C94B;110C 1170 11BE;C94B;110C 1170 11BE;
+C94C;C94C;110C 1170 11BF;C94C;110C 1170 11BF;
+C94D;C94D;110C 1170 11C0;C94D;110C 1170 11C0;
+C94E;C94E;110C 1170 11C1;C94E;110C 1170 11C1;
+C94F;C94F;110C 1170 11C2;C94F;110C 1170 11C2;
+C950;C950;110C 1171;C950;110C 1171;
+C951;C951;110C 1171 11A8;C951;110C 1171 11A8;
+C952;C952;110C 1171 11A9;C952;110C 1171 11A9;
+C953;C953;110C 1171 11AA;C953;110C 1171 11AA;
+C954;C954;110C 1171 11AB;C954;110C 1171 11AB;
+C955;C955;110C 1171 11AC;C955;110C 1171 11AC;
+C956;C956;110C 1171 11AD;C956;110C 1171 11AD;
+C957;C957;110C 1171 11AE;C957;110C 1171 11AE;
+C958;C958;110C 1171 11AF;C958;110C 1171 11AF;
+C959;C959;110C 1171 11B0;C959;110C 1171 11B0;
+C95A;C95A;110C 1171 11B1;C95A;110C 1171 11B1;
+C95B;C95B;110C 1171 11B2;C95B;110C 1171 11B2;
+C95C;C95C;110C 1171 11B3;C95C;110C 1171 11B3;
+C95D;C95D;110C 1171 11B4;C95D;110C 1171 11B4;
+C95E;C95E;110C 1171 11B5;C95E;110C 1171 11B5;
+C95F;C95F;110C 1171 11B6;C95F;110C 1171 11B6;
+C960;C960;110C 1171 11B7;C960;110C 1171 11B7;
+C961;C961;110C 1171 11B8;C961;110C 1171 11B8;
+C962;C962;110C 1171 11B9;C962;110C 1171 11B9;
+C963;C963;110C 1171 11BA;C963;110C 1171 11BA;
+C964;C964;110C 1171 11BB;C964;110C 1171 11BB;
+C965;C965;110C 1171 11BC;C965;110C 1171 11BC;
+C966;C966;110C 1171 11BD;C966;110C 1171 11BD;
+C967;C967;110C 1171 11BE;C967;110C 1171 11BE;
+C968;C968;110C 1171 11BF;C968;110C 1171 11BF;
+C969;C969;110C 1171 11C0;C969;110C 1171 11C0;
+C96A;C96A;110C 1171 11C1;C96A;110C 1171 11C1;
+C96B;C96B;110C 1171 11C2;C96B;110C 1171 11C2;
+C96C;C96C;110C 1172;C96C;110C 1172;
+C96D;C96D;110C 1172 11A8;C96D;110C 1172 11A8;
+C96E;C96E;110C 1172 11A9;C96E;110C 1172 11A9;
+C96F;C96F;110C 1172 11AA;C96F;110C 1172 11AA;
+C970;C970;110C 1172 11AB;C970;110C 1172 11AB;
+C971;C971;110C 1172 11AC;C971;110C 1172 11AC;
+C972;C972;110C 1172 11AD;C972;110C 1172 11AD;
+C973;C973;110C 1172 11AE;C973;110C 1172 11AE;
+C974;C974;110C 1172 11AF;C974;110C 1172 11AF;
+C975;C975;110C 1172 11B0;C975;110C 1172 11B0;
+C976;C976;110C 1172 11B1;C976;110C 1172 11B1;
+C977;C977;110C 1172 11B2;C977;110C 1172 11B2;
+C978;C978;110C 1172 11B3;C978;110C 1172 11B3;
+C979;C979;110C 1172 11B4;C979;110C 1172 11B4;
+C97A;C97A;110C 1172 11B5;C97A;110C 1172 11B5;
+C97B;C97B;110C 1172 11B6;C97B;110C 1172 11B6;
+C97C;C97C;110C 1172 11B7;C97C;110C 1172 11B7;
+C97D;C97D;110C 1172 11B8;C97D;110C 1172 11B8;
+C97E;C97E;110C 1172 11B9;C97E;110C 1172 11B9;
+C97F;C97F;110C 1172 11BA;C97F;110C 1172 11BA;
+C980;C980;110C 1172 11BB;C980;110C 1172 11BB;
+C981;C981;110C 1172 11BC;C981;110C 1172 11BC;
+C982;C982;110C 1172 11BD;C982;110C 1172 11BD;
+C983;C983;110C 1172 11BE;C983;110C 1172 11BE;
+C984;C984;110C 1172 11BF;C984;110C 1172 11BF;
+C985;C985;110C 1172 11C0;C985;110C 1172 11C0;
+C986;C986;110C 1172 11C1;C986;110C 1172 11C1;
+C987;C987;110C 1172 11C2;C987;110C 1172 11C2;
+C988;C988;110C 1173;C988;110C 1173;
+C989;C989;110C 1173 11A8;C989;110C 1173 11A8;
+C98A;C98A;110C 1173 11A9;C98A;110C 1173 11A9;
+C98B;C98B;110C 1173 11AA;C98B;110C 1173 11AA;
+C98C;C98C;110C 1173 11AB;C98C;110C 1173 11AB;
+C98D;C98D;110C 1173 11AC;C98D;110C 1173 11AC;
+C98E;C98E;110C 1173 11AD;C98E;110C 1173 11AD;
+C98F;C98F;110C 1173 11AE;C98F;110C 1173 11AE;
+C990;C990;110C 1173 11AF;C990;110C 1173 11AF;
+C991;C991;110C 1173 11B0;C991;110C 1173 11B0;
+C992;C992;110C 1173 11B1;C992;110C 1173 11B1;
+C993;C993;110C 1173 11B2;C993;110C 1173 11B2;
+C994;C994;110C 1173 11B3;C994;110C 1173 11B3;
+C995;C995;110C 1173 11B4;C995;110C 1173 11B4;
+C996;C996;110C 1173 11B5;C996;110C 1173 11B5;
+C997;C997;110C 1173 11B6;C997;110C 1173 11B6;
+C998;C998;110C 1173 11B7;C998;110C 1173 11B7;
+C999;C999;110C 1173 11B8;C999;110C 1173 11B8;
+C99A;C99A;110C 1173 11B9;C99A;110C 1173 11B9;
+C99B;C99B;110C 1173 11BA;C99B;110C 1173 11BA;
+C99C;C99C;110C 1173 11BB;C99C;110C 1173 11BB;
+C99D;C99D;110C 1173 11BC;C99D;110C 1173 11BC;
+C99E;C99E;110C 1173 11BD;C99E;110C 1173 11BD;
+C99F;C99F;110C 1173 11BE;C99F;110C 1173 11BE;
+C9A0;C9A0;110C 1173 11BF;C9A0;110C 1173 11BF;
+C9A1;C9A1;110C 1173 11C0;C9A1;110C 1173 11C0;
+C9A2;C9A2;110C 1173 11C1;C9A2;110C 1173 11C1;
+C9A3;C9A3;110C 1173 11C2;C9A3;110C 1173 11C2;
+C9A4;C9A4;110C 1174;C9A4;110C 1174;
+C9A5;C9A5;110C 1174 11A8;C9A5;110C 1174 11A8;
+C9A6;C9A6;110C 1174 11A9;C9A6;110C 1174 11A9;
+C9A7;C9A7;110C 1174 11AA;C9A7;110C 1174 11AA;
+C9A8;C9A8;110C 1174 11AB;C9A8;110C 1174 11AB;
+C9A9;C9A9;110C 1174 11AC;C9A9;110C 1174 11AC;
+C9AA;C9AA;110C 1174 11AD;C9AA;110C 1174 11AD;
+C9AB;C9AB;110C 1174 11AE;C9AB;110C 1174 11AE;
+C9AC;C9AC;110C 1174 11AF;C9AC;110C 1174 11AF;
+C9AD;C9AD;110C 1174 11B0;C9AD;110C 1174 11B0;
+C9AE;C9AE;110C 1174 11B1;C9AE;110C 1174 11B1;
+C9AF;C9AF;110C 1174 11B2;C9AF;110C 1174 11B2;
+C9B0;C9B0;110C 1174 11B3;C9B0;110C 1174 11B3;
+C9B1;C9B1;110C 1174 11B4;C9B1;110C 1174 11B4;
+C9B2;C9B2;110C 1174 11B5;C9B2;110C 1174 11B5;
+C9B3;C9B3;110C 1174 11B6;C9B3;110C 1174 11B6;
+C9B4;C9B4;110C 1174 11B7;C9B4;110C 1174 11B7;
+C9B5;C9B5;110C 1174 11B8;C9B5;110C 1174 11B8;
+C9B6;C9B6;110C 1174 11B9;C9B6;110C 1174 11B9;
+C9B7;C9B7;110C 1174 11BA;C9B7;110C 1174 11BA;
+C9B8;C9B8;110C 1174 11BB;C9B8;110C 1174 11BB;
+C9B9;C9B9;110C 1174 11BC;C9B9;110C 1174 11BC;
+C9BA;C9BA;110C 1174 11BD;C9BA;110C 1174 11BD;
+C9BB;C9BB;110C 1174 11BE;C9BB;110C 1174 11BE;
+C9BC;C9BC;110C 1174 11BF;C9BC;110C 1174 11BF;
+C9BD;C9BD;110C 1174 11C0;C9BD;110C 1174 11C0;
+C9BE;C9BE;110C 1174 11C1;C9BE;110C 1174 11C1;
+C9BF;C9BF;110C 1174 11C2;C9BF;110C 1174 11C2;
+C9C0;C9C0;110C 1175;C9C0;110C 1175;
+C9C1;C9C1;110C 1175 11A8;C9C1;110C 1175 11A8;
+C9C2;C9C2;110C 1175 11A9;C9C2;110C 1175 11A9;
+C9C3;C9C3;110C 1175 11AA;C9C3;110C 1175 11AA;
+C9C4;C9C4;110C 1175 11AB;C9C4;110C 1175 11AB;
+C9C5;C9C5;110C 1175 11AC;C9C5;110C 1175 11AC;
+C9C6;C9C6;110C 1175 11AD;C9C6;110C 1175 11AD;
+C9C7;C9C7;110C 1175 11AE;C9C7;110C 1175 11AE;
+C9C8;C9C8;110C 1175 11AF;C9C8;110C 1175 11AF;
+C9C9;C9C9;110C 1175 11B0;C9C9;110C 1175 11B0;
+C9CA;C9CA;110C 1175 11B1;C9CA;110C 1175 11B1;
+C9CB;C9CB;110C 1175 11B2;C9CB;110C 1175 11B2;
+C9CC;C9CC;110C 1175 11B3;C9CC;110C 1175 11B3;
+C9CD;C9CD;110C 1175 11B4;C9CD;110C 1175 11B4;
+C9CE;C9CE;110C 1175 11B5;C9CE;110C 1175 11B5;
+C9CF;C9CF;110C 1175 11B6;C9CF;110C 1175 11B6;
+C9D0;C9D0;110C 1175 11B7;C9D0;110C 1175 11B7;
+C9D1;C9D1;110C 1175 11B8;C9D1;110C 1175 11B8;
+C9D2;C9D2;110C 1175 11B9;C9D2;110C 1175 11B9;
+C9D3;C9D3;110C 1175 11BA;C9D3;110C 1175 11BA;
+C9D4;C9D4;110C 1175 11BB;C9D4;110C 1175 11BB;
+C9D5;C9D5;110C 1175 11BC;C9D5;110C 1175 11BC;
+C9D6;C9D6;110C 1175 11BD;C9D6;110C 1175 11BD;
+C9D7;C9D7;110C 1175 11BE;C9D7;110C 1175 11BE;
+C9D8;C9D8;110C 1175 11BF;C9D8;110C 1175 11BF;
+C9D9;C9D9;110C 1175 11C0;C9D9;110C 1175 11C0;
+C9DA;C9DA;110C 1175 11C1;C9DA;110C 1175 11C1;
+C9DB;C9DB;110C 1175 11C2;C9DB;110C 1175 11C2;
+C9DC;C9DC;110D 1161;C9DC;110D 1161;
+C9DD;C9DD;110D 1161 11A8;C9DD;110D 1161 11A8;
+C9DE;C9DE;110D 1161 11A9;C9DE;110D 1161 11A9;
+C9DF;C9DF;110D 1161 11AA;C9DF;110D 1161 11AA;
+C9E0;C9E0;110D 1161 11AB;C9E0;110D 1161 11AB;
+C9E1;C9E1;110D 1161 11AC;C9E1;110D 1161 11AC;
+C9E2;C9E2;110D 1161 11AD;C9E2;110D 1161 11AD;
+C9E3;C9E3;110D 1161 11AE;C9E3;110D 1161 11AE;
+C9E4;C9E4;110D 1161 11AF;C9E4;110D 1161 11AF;
+C9E5;C9E5;110D 1161 11B0;C9E5;110D 1161 11B0;
+C9E6;C9E6;110D 1161 11B1;C9E6;110D 1161 11B1;
+C9E7;C9E7;110D 1161 11B2;C9E7;110D 1161 11B2;
+C9E8;C9E8;110D 1161 11B3;C9E8;110D 1161 11B3;
+C9E9;C9E9;110D 1161 11B4;C9E9;110D 1161 11B4;
+C9EA;C9EA;110D 1161 11B5;C9EA;110D 1161 11B5;
+C9EB;C9EB;110D 1161 11B6;C9EB;110D 1161 11B6;
+C9EC;C9EC;110D 1161 11B7;C9EC;110D 1161 11B7;
+C9ED;C9ED;110D 1161 11B8;C9ED;110D 1161 11B8;
+C9EE;C9EE;110D 1161 11B9;C9EE;110D 1161 11B9;
+C9EF;C9EF;110D 1161 11BA;C9EF;110D 1161 11BA;
+C9F0;C9F0;110D 1161 11BB;C9F0;110D 1161 11BB;
+C9F1;C9F1;110D 1161 11BC;C9F1;110D 1161 11BC;
+C9F2;C9F2;110D 1161 11BD;C9F2;110D 1161 11BD;
+C9F3;C9F3;110D 1161 11BE;C9F3;110D 1161 11BE;
+C9F4;C9F4;110D 1161 11BF;C9F4;110D 1161 11BF;
+C9F5;C9F5;110D 1161 11C0;C9F5;110D 1161 11C0;
+C9F6;C9F6;110D 1161 11C1;C9F6;110D 1161 11C1;
+C9F7;C9F7;110D 1161 11C2;C9F7;110D 1161 11C2;
+C9F8;C9F8;110D 1162;C9F8;110D 1162;
+C9F9;C9F9;110D 1162 11A8;C9F9;110D 1162 11A8;
+C9FA;C9FA;110D 1162 11A9;C9FA;110D 1162 11A9;
+C9FB;C9FB;110D 1162 11AA;C9FB;110D 1162 11AA;
+C9FC;C9FC;110D 1162 11AB;C9FC;110D 1162 11AB;
+C9FD;C9FD;110D 1162 11AC;C9FD;110D 1162 11AC;
+C9FE;C9FE;110D 1162 11AD;C9FE;110D 1162 11AD;
+C9FF;C9FF;110D 1162 11AE;C9FF;110D 1162 11AE;
+CA00;CA00;110D 1162 11AF;CA00;110D 1162 11AF;
+CA01;CA01;110D 1162 11B0;CA01;110D 1162 11B0;
+CA02;CA02;110D 1162 11B1;CA02;110D 1162 11B1;
+CA03;CA03;110D 1162 11B2;CA03;110D 1162 11B2;
+CA04;CA04;110D 1162 11B3;CA04;110D 1162 11B3;
+CA05;CA05;110D 1162 11B4;CA05;110D 1162 11B4;
+CA06;CA06;110D 1162 11B5;CA06;110D 1162 11B5;
+CA07;CA07;110D 1162 11B6;CA07;110D 1162 11B6;
+CA08;CA08;110D 1162 11B7;CA08;110D 1162 11B7;
+CA09;CA09;110D 1162 11B8;CA09;110D 1162 11B8;
+CA0A;CA0A;110D 1162 11B9;CA0A;110D 1162 11B9;
+CA0B;CA0B;110D 1162 11BA;CA0B;110D 1162 11BA;
+CA0C;CA0C;110D 1162 11BB;CA0C;110D 1162 11BB;
+CA0D;CA0D;110D 1162 11BC;CA0D;110D 1162 11BC;
+CA0E;CA0E;110D 1162 11BD;CA0E;110D 1162 11BD;
+CA0F;CA0F;110D 1162 11BE;CA0F;110D 1162 11BE;
+CA10;CA10;110D 1162 11BF;CA10;110D 1162 11BF;
+CA11;CA11;110D 1162 11C0;CA11;110D 1162 11C0;
+CA12;CA12;110D 1162 11C1;CA12;110D 1162 11C1;
+CA13;CA13;110D 1162 11C2;CA13;110D 1162 11C2;
+CA14;CA14;110D 1163;CA14;110D 1163;
+CA15;CA15;110D 1163 11A8;CA15;110D 1163 11A8;
+CA16;CA16;110D 1163 11A9;CA16;110D 1163 11A9;
+CA17;CA17;110D 1163 11AA;CA17;110D 1163 11AA;
+CA18;CA18;110D 1163 11AB;CA18;110D 1163 11AB;
+CA19;CA19;110D 1163 11AC;CA19;110D 1163 11AC;
+CA1A;CA1A;110D 1163 11AD;CA1A;110D 1163 11AD;
+CA1B;CA1B;110D 1163 11AE;CA1B;110D 1163 11AE;
+CA1C;CA1C;110D 1163 11AF;CA1C;110D 1163 11AF;
+CA1D;CA1D;110D 1163 11B0;CA1D;110D 1163 11B0;
+CA1E;CA1E;110D 1163 11B1;CA1E;110D 1163 11B1;
+CA1F;CA1F;110D 1163 11B2;CA1F;110D 1163 11B2;
+CA20;CA20;110D 1163 11B3;CA20;110D 1163 11B3;
+CA21;CA21;110D 1163 11B4;CA21;110D 1163 11B4;
+CA22;CA22;110D 1163 11B5;CA22;110D 1163 11B5;
+CA23;CA23;110D 1163 11B6;CA23;110D 1163 11B6;
+CA24;CA24;110D 1163 11B7;CA24;110D 1163 11B7;
+CA25;CA25;110D 1163 11B8;CA25;110D 1163 11B8;
+CA26;CA26;110D 1163 11B9;CA26;110D 1163 11B9;
+CA27;CA27;110D 1163 11BA;CA27;110D 1163 11BA;
+CA28;CA28;110D 1163 11BB;CA28;110D 1163 11BB;
+CA29;CA29;110D 1163 11BC;CA29;110D 1163 11BC;
+CA2A;CA2A;110D 1163 11BD;CA2A;110D 1163 11BD;
+CA2B;CA2B;110D 1163 11BE;CA2B;110D 1163 11BE;
+CA2C;CA2C;110D 1163 11BF;CA2C;110D 1163 11BF;
+CA2D;CA2D;110D 1163 11C0;CA2D;110D 1163 11C0;
+CA2E;CA2E;110D 1163 11C1;CA2E;110D 1163 11C1;
+CA2F;CA2F;110D 1163 11C2;CA2F;110D 1163 11C2;
+CA30;CA30;110D 1164;CA30;110D 1164;
+CA31;CA31;110D 1164 11A8;CA31;110D 1164 11A8;
+CA32;CA32;110D 1164 11A9;CA32;110D 1164 11A9;
+CA33;CA33;110D 1164 11AA;CA33;110D 1164 11AA;
+CA34;CA34;110D 1164 11AB;CA34;110D 1164 11AB;
+CA35;CA35;110D 1164 11AC;CA35;110D 1164 11AC;
+CA36;CA36;110D 1164 11AD;CA36;110D 1164 11AD;
+CA37;CA37;110D 1164 11AE;CA37;110D 1164 11AE;
+CA38;CA38;110D 1164 11AF;CA38;110D 1164 11AF;
+CA39;CA39;110D 1164 11B0;CA39;110D 1164 11B0;
+CA3A;CA3A;110D 1164 11B1;CA3A;110D 1164 11B1;
+CA3B;CA3B;110D 1164 11B2;CA3B;110D 1164 11B2;
+CA3C;CA3C;110D 1164 11B3;CA3C;110D 1164 11B3;
+CA3D;CA3D;110D 1164 11B4;CA3D;110D 1164 11B4;
+CA3E;CA3E;110D 1164 11B5;CA3E;110D 1164 11B5;
+CA3F;CA3F;110D 1164 11B6;CA3F;110D 1164 11B6;
+CA40;CA40;110D 1164 11B7;CA40;110D 1164 11B7;
+CA41;CA41;110D 1164 11B8;CA41;110D 1164 11B8;
+CA42;CA42;110D 1164 11B9;CA42;110D 1164 11B9;
+CA43;CA43;110D 1164 11BA;CA43;110D 1164 11BA;
+CA44;CA44;110D 1164 11BB;CA44;110D 1164 11BB;
+CA45;CA45;110D 1164 11BC;CA45;110D 1164 11BC;
+CA46;CA46;110D 1164 11BD;CA46;110D 1164 11BD;
+CA47;CA47;110D 1164 11BE;CA47;110D 1164 11BE;
+CA48;CA48;110D 1164 11BF;CA48;110D 1164 11BF;
+CA49;CA49;110D 1164 11C0;CA49;110D 1164 11C0;
+CA4A;CA4A;110D 1164 11C1;CA4A;110D 1164 11C1;
+CA4B;CA4B;110D 1164 11C2;CA4B;110D 1164 11C2;
+CA4C;CA4C;110D 1165;CA4C;110D 1165;
+CA4D;CA4D;110D 1165 11A8;CA4D;110D 1165 11A8;
+CA4E;CA4E;110D 1165 11A9;CA4E;110D 1165 11A9;
+CA4F;CA4F;110D 1165 11AA;CA4F;110D 1165 11AA;
+CA50;CA50;110D 1165 11AB;CA50;110D 1165 11AB;
+CA51;CA51;110D 1165 11AC;CA51;110D 1165 11AC;
+CA52;CA52;110D 1165 11AD;CA52;110D 1165 11AD;
+CA53;CA53;110D 1165 11AE;CA53;110D 1165 11AE;
+CA54;CA54;110D 1165 11AF;CA54;110D 1165 11AF;
+CA55;CA55;110D 1165 11B0;CA55;110D 1165 11B0;
+CA56;CA56;110D 1165 11B1;CA56;110D 1165 11B1;
+CA57;CA57;110D 1165 11B2;CA57;110D 1165 11B2;
+CA58;CA58;110D 1165 11B3;CA58;110D 1165 11B3;
+CA59;CA59;110D 1165 11B4;CA59;110D 1165 11B4;
+CA5A;CA5A;110D 1165 11B5;CA5A;110D 1165 11B5;
+CA5B;CA5B;110D 1165 11B6;CA5B;110D 1165 11B6;
+CA5C;CA5C;110D 1165 11B7;CA5C;110D 1165 11B7;
+CA5D;CA5D;110D 1165 11B8;CA5D;110D 1165 11B8;
+CA5E;CA5E;110D 1165 11B9;CA5E;110D 1165 11B9;
+CA5F;CA5F;110D 1165 11BA;CA5F;110D 1165 11BA;
+CA60;CA60;110D 1165 11BB;CA60;110D 1165 11BB;
+CA61;CA61;110D 1165 11BC;CA61;110D 1165 11BC;
+CA62;CA62;110D 1165 11BD;CA62;110D 1165 11BD;
+CA63;CA63;110D 1165 11BE;CA63;110D 1165 11BE;
+CA64;CA64;110D 1165 11BF;CA64;110D 1165 11BF;
+CA65;CA65;110D 1165 11C0;CA65;110D 1165 11C0;
+CA66;CA66;110D 1165 11C1;CA66;110D 1165 11C1;
+CA67;CA67;110D 1165 11C2;CA67;110D 1165 11C2;
+CA68;CA68;110D 1166;CA68;110D 1166;
+CA69;CA69;110D 1166 11A8;CA69;110D 1166 11A8;
+CA6A;CA6A;110D 1166 11A9;CA6A;110D 1166 11A9;
+CA6B;CA6B;110D 1166 11AA;CA6B;110D 1166 11AA;
+CA6C;CA6C;110D 1166 11AB;CA6C;110D 1166 11AB;
+CA6D;CA6D;110D 1166 11AC;CA6D;110D 1166 11AC;
+CA6E;CA6E;110D 1166 11AD;CA6E;110D 1166 11AD;
+CA6F;CA6F;110D 1166 11AE;CA6F;110D 1166 11AE;
+CA70;CA70;110D 1166 11AF;CA70;110D 1166 11AF;
+CA71;CA71;110D 1166 11B0;CA71;110D 1166 11B0;
+CA72;CA72;110D 1166 11B1;CA72;110D 1166 11B1;
+CA73;CA73;110D 1166 11B2;CA73;110D 1166 11B2;
+CA74;CA74;110D 1166 11B3;CA74;110D 1166 11B3;
+CA75;CA75;110D 1166 11B4;CA75;110D 1166 11B4;
+CA76;CA76;110D 1166 11B5;CA76;110D 1166 11B5;
+CA77;CA77;110D 1166 11B6;CA77;110D 1166 11B6;
+CA78;CA78;110D 1166 11B7;CA78;110D 1166 11B7;
+CA79;CA79;110D 1166 11B8;CA79;110D 1166 11B8;
+CA7A;CA7A;110D 1166 11B9;CA7A;110D 1166 11B9;
+CA7B;CA7B;110D 1166 11BA;CA7B;110D 1166 11BA;
+CA7C;CA7C;110D 1166 11BB;CA7C;110D 1166 11BB;
+CA7D;CA7D;110D 1166 11BC;CA7D;110D 1166 11BC;
+CA7E;CA7E;110D 1166 11BD;CA7E;110D 1166 11BD;
+CA7F;CA7F;110D 1166 11BE;CA7F;110D 1166 11BE;
+CA80;CA80;110D 1166 11BF;CA80;110D 1166 11BF;
+CA81;CA81;110D 1166 11C0;CA81;110D 1166 11C0;
+CA82;CA82;110D 1166 11C1;CA82;110D 1166 11C1;
+CA83;CA83;110D 1166 11C2;CA83;110D 1166 11C2;
+CA84;CA84;110D 1167;CA84;110D 1167;
+CA85;CA85;110D 1167 11A8;CA85;110D 1167 11A8;
+CA86;CA86;110D 1167 11A9;CA86;110D 1167 11A9;
+CA87;CA87;110D 1167 11AA;CA87;110D 1167 11AA;
+CA88;CA88;110D 1167 11AB;CA88;110D 1167 11AB;
+CA89;CA89;110D 1167 11AC;CA89;110D 1167 11AC;
+CA8A;CA8A;110D 1167 11AD;CA8A;110D 1167 11AD;
+CA8B;CA8B;110D 1167 11AE;CA8B;110D 1167 11AE;
+CA8C;CA8C;110D 1167 11AF;CA8C;110D 1167 11AF;
+CA8D;CA8D;110D 1167 11B0;CA8D;110D 1167 11B0;
+CA8E;CA8E;110D 1167 11B1;CA8E;110D 1167 11B1;
+CA8F;CA8F;110D 1167 11B2;CA8F;110D 1167 11B2;
+CA90;CA90;110D 1167 11B3;CA90;110D 1167 11B3;
+CA91;CA91;110D 1167 11B4;CA91;110D 1167 11B4;
+CA92;CA92;110D 1167 11B5;CA92;110D 1167 11B5;
+CA93;CA93;110D 1167 11B6;CA93;110D 1167 11B6;
+CA94;CA94;110D 1167 11B7;CA94;110D 1167 11B7;
+CA95;CA95;110D 1167 11B8;CA95;110D 1167 11B8;
+CA96;CA96;110D 1167 11B9;CA96;110D 1167 11B9;
+CA97;CA97;110D 1167 11BA;CA97;110D 1167 11BA;
+CA98;CA98;110D 1167 11BB;CA98;110D 1167 11BB;
+CA99;CA99;110D 1167 11BC;CA99;110D 1167 11BC;
+CA9A;CA9A;110D 1167 11BD;CA9A;110D 1167 11BD;
+CA9B;CA9B;110D 1167 11BE;CA9B;110D 1167 11BE;
+CA9C;CA9C;110D 1167 11BF;CA9C;110D 1167 11BF;
+CA9D;CA9D;110D 1167 11C0;CA9D;110D 1167 11C0;
+CA9E;CA9E;110D 1167 11C1;CA9E;110D 1167 11C1;
+CA9F;CA9F;110D 1167 11C2;CA9F;110D 1167 11C2;
+CAA0;CAA0;110D 1168;CAA0;110D 1168;
+CAA1;CAA1;110D 1168 11A8;CAA1;110D 1168 11A8;
+CAA2;CAA2;110D 1168 11A9;CAA2;110D 1168 11A9;
+CAA3;CAA3;110D 1168 11AA;CAA3;110D 1168 11AA;
+CAA4;CAA4;110D 1168 11AB;CAA4;110D 1168 11AB;
+CAA5;CAA5;110D 1168 11AC;CAA5;110D 1168 11AC;
+CAA6;CAA6;110D 1168 11AD;CAA6;110D 1168 11AD;
+CAA7;CAA7;110D 1168 11AE;CAA7;110D 1168 11AE;
+CAA8;CAA8;110D 1168 11AF;CAA8;110D 1168 11AF;
+CAA9;CAA9;110D 1168 11B0;CAA9;110D 1168 11B0;
+CAAA;CAAA;110D 1168 11B1;CAAA;110D 1168 11B1;
+CAAB;CAAB;110D 1168 11B2;CAAB;110D 1168 11B2;
+CAAC;CAAC;110D 1168 11B3;CAAC;110D 1168 11B3;
+CAAD;CAAD;110D 1168 11B4;CAAD;110D 1168 11B4;
+CAAE;CAAE;110D 1168 11B5;CAAE;110D 1168 11B5;
+CAAF;CAAF;110D 1168 11B6;CAAF;110D 1168 11B6;
+CAB0;CAB0;110D 1168 11B7;CAB0;110D 1168 11B7;
+CAB1;CAB1;110D 1168 11B8;CAB1;110D 1168 11B8;
+CAB2;CAB2;110D 1168 11B9;CAB2;110D 1168 11B9;
+CAB3;CAB3;110D 1168 11BA;CAB3;110D 1168 11BA;
+CAB4;CAB4;110D 1168 11BB;CAB4;110D 1168 11BB;
+CAB5;CAB5;110D 1168 11BC;CAB5;110D 1168 11BC;
+CAB6;CAB6;110D 1168 11BD;CAB6;110D 1168 11BD;
+CAB7;CAB7;110D 1168 11BE;CAB7;110D 1168 11BE;
+CAB8;CAB8;110D 1168 11BF;CAB8;110D 1168 11BF;
+CAB9;CAB9;110D 1168 11C0;CAB9;110D 1168 11C0;
+CABA;CABA;110D 1168 11C1;CABA;110D 1168 11C1;
+CABB;CABB;110D 1168 11C2;CABB;110D 1168 11C2;
+CABC;CABC;110D 1169;CABC;110D 1169;
+CABD;CABD;110D 1169 11A8;CABD;110D 1169 11A8;
+CABE;CABE;110D 1169 11A9;CABE;110D 1169 11A9;
+CABF;CABF;110D 1169 11AA;CABF;110D 1169 11AA;
+CAC0;CAC0;110D 1169 11AB;CAC0;110D 1169 11AB;
+CAC1;CAC1;110D 1169 11AC;CAC1;110D 1169 11AC;
+CAC2;CAC2;110D 1169 11AD;CAC2;110D 1169 11AD;
+CAC3;CAC3;110D 1169 11AE;CAC3;110D 1169 11AE;
+CAC4;CAC4;110D 1169 11AF;CAC4;110D 1169 11AF;
+CAC5;CAC5;110D 1169 11B0;CAC5;110D 1169 11B0;
+CAC6;CAC6;110D 1169 11B1;CAC6;110D 1169 11B1;
+CAC7;CAC7;110D 1169 11B2;CAC7;110D 1169 11B2;
+CAC8;CAC8;110D 1169 11B3;CAC8;110D 1169 11B3;
+CAC9;CAC9;110D 1169 11B4;CAC9;110D 1169 11B4;
+CACA;CACA;110D 1169 11B5;CACA;110D 1169 11B5;
+CACB;CACB;110D 1169 11B6;CACB;110D 1169 11B6;
+CACC;CACC;110D 1169 11B7;CACC;110D 1169 11B7;
+CACD;CACD;110D 1169 11B8;CACD;110D 1169 11B8;
+CACE;CACE;110D 1169 11B9;CACE;110D 1169 11B9;
+CACF;CACF;110D 1169 11BA;CACF;110D 1169 11BA;
+CAD0;CAD0;110D 1169 11BB;CAD0;110D 1169 11BB;
+CAD1;CAD1;110D 1169 11BC;CAD1;110D 1169 11BC;
+CAD2;CAD2;110D 1169 11BD;CAD2;110D 1169 11BD;
+CAD3;CAD3;110D 1169 11BE;CAD3;110D 1169 11BE;
+CAD4;CAD4;110D 1169 11BF;CAD4;110D 1169 11BF;
+CAD5;CAD5;110D 1169 11C0;CAD5;110D 1169 11C0;
+CAD6;CAD6;110D 1169 11C1;CAD6;110D 1169 11C1;
+CAD7;CAD7;110D 1169 11C2;CAD7;110D 1169 11C2;
+CAD8;CAD8;110D 116A;CAD8;110D 116A;
+CAD9;CAD9;110D 116A 11A8;CAD9;110D 116A 11A8;
+CADA;CADA;110D 116A 11A9;CADA;110D 116A 11A9;
+CADB;CADB;110D 116A 11AA;CADB;110D 116A 11AA;
+CADC;CADC;110D 116A 11AB;CADC;110D 116A 11AB;
+CADD;CADD;110D 116A 11AC;CADD;110D 116A 11AC;
+CADE;CADE;110D 116A 11AD;CADE;110D 116A 11AD;
+CADF;CADF;110D 116A 11AE;CADF;110D 116A 11AE;
+CAE0;CAE0;110D 116A 11AF;CAE0;110D 116A 11AF;
+CAE1;CAE1;110D 116A 11B0;CAE1;110D 116A 11B0;
+CAE2;CAE2;110D 116A 11B1;CAE2;110D 116A 11B1;
+CAE3;CAE3;110D 116A 11B2;CAE3;110D 116A 11B2;
+CAE4;CAE4;110D 116A 11B3;CAE4;110D 116A 11B3;
+CAE5;CAE5;110D 116A 11B4;CAE5;110D 116A 11B4;
+CAE6;CAE6;110D 116A 11B5;CAE6;110D 116A 11B5;
+CAE7;CAE7;110D 116A 11B6;CAE7;110D 116A 11B6;
+CAE8;CAE8;110D 116A 11B7;CAE8;110D 116A 11B7;
+CAE9;CAE9;110D 116A 11B8;CAE9;110D 116A 11B8;
+CAEA;CAEA;110D 116A 11B9;CAEA;110D 116A 11B9;
+CAEB;CAEB;110D 116A 11BA;CAEB;110D 116A 11BA;
+CAEC;CAEC;110D 116A 11BB;CAEC;110D 116A 11BB;
+CAED;CAED;110D 116A 11BC;CAED;110D 116A 11BC;
+CAEE;CAEE;110D 116A 11BD;CAEE;110D 116A 11BD;
+CAEF;CAEF;110D 116A 11BE;CAEF;110D 116A 11BE;
+CAF0;CAF0;110D 116A 11BF;CAF0;110D 116A 11BF;
+CAF1;CAF1;110D 116A 11C0;CAF1;110D 116A 11C0;
+CAF2;CAF2;110D 116A 11C1;CAF2;110D 116A 11C1;
+CAF3;CAF3;110D 116A 11C2;CAF3;110D 116A 11C2;
+CAF4;CAF4;110D 116B;CAF4;110D 116B;
+CAF5;CAF5;110D 116B 11A8;CAF5;110D 116B 11A8;
+CAF6;CAF6;110D 116B 11A9;CAF6;110D 116B 11A9;
+CAF7;CAF7;110D 116B 11AA;CAF7;110D 116B 11AA;
+CAF8;CAF8;110D 116B 11AB;CAF8;110D 116B 11AB;
+CAF9;CAF9;110D 116B 11AC;CAF9;110D 116B 11AC;
+CAFA;CAFA;110D 116B 11AD;CAFA;110D 116B 11AD;
+CAFB;CAFB;110D 116B 11AE;CAFB;110D 116B 11AE;
+CAFC;CAFC;110D 116B 11AF;CAFC;110D 116B 11AF;
+CAFD;CAFD;110D 116B 11B0;CAFD;110D 116B 11B0;
+CAFE;CAFE;110D 116B 11B1;CAFE;110D 116B 11B1;
+CAFF;CAFF;110D 116B 11B2;CAFF;110D 116B 11B2;
+CB00;CB00;110D 116B 11B3;CB00;110D 116B 11B3;
+CB01;CB01;110D 116B 11B4;CB01;110D 116B 11B4;
+CB02;CB02;110D 116B 11B5;CB02;110D 116B 11B5;
+CB03;CB03;110D 116B 11B6;CB03;110D 116B 11B6;
+CB04;CB04;110D 116B 11B7;CB04;110D 116B 11B7;
+CB05;CB05;110D 116B 11B8;CB05;110D 116B 11B8;
+CB06;CB06;110D 116B 11B9;CB06;110D 116B 11B9;
+CB07;CB07;110D 116B 11BA;CB07;110D 116B 11BA;
+CB08;CB08;110D 116B 11BB;CB08;110D 116B 11BB;
+CB09;CB09;110D 116B 11BC;CB09;110D 116B 11BC;
+CB0A;CB0A;110D 116B 11BD;CB0A;110D 116B 11BD;
+CB0B;CB0B;110D 116B 11BE;CB0B;110D 116B 11BE;
+CB0C;CB0C;110D 116B 11BF;CB0C;110D 116B 11BF;
+CB0D;CB0D;110D 116B 11C0;CB0D;110D 116B 11C0;
+CB0E;CB0E;110D 116B 11C1;CB0E;110D 116B 11C1;
+CB0F;CB0F;110D 116B 11C2;CB0F;110D 116B 11C2;
+CB10;CB10;110D 116C;CB10;110D 116C;
+CB11;CB11;110D 116C 11A8;CB11;110D 116C 11A8;
+CB12;CB12;110D 116C 11A9;CB12;110D 116C 11A9;
+CB13;CB13;110D 116C 11AA;CB13;110D 116C 11AA;
+CB14;CB14;110D 116C 11AB;CB14;110D 116C 11AB;
+CB15;CB15;110D 116C 11AC;CB15;110D 116C 11AC;
+CB16;CB16;110D 116C 11AD;CB16;110D 116C 11AD;
+CB17;CB17;110D 116C 11AE;CB17;110D 116C 11AE;
+CB18;CB18;110D 116C 11AF;CB18;110D 116C 11AF;
+CB19;CB19;110D 116C 11B0;CB19;110D 116C 11B0;
+CB1A;CB1A;110D 116C 11B1;CB1A;110D 116C 11B1;
+CB1B;CB1B;110D 116C 11B2;CB1B;110D 116C 11B2;
+CB1C;CB1C;110D 116C 11B3;CB1C;110D 116C 11B3;
+CB1D;CB1D;110D 116C 11B4;CB1D;110D 116C 11B4;
+CB1E;CB1E;110D 116C 11B5;CB1E;110D 116C 11B5;
+CB1F;CB1F;110D 116C 11B6;CB1F;110D 116C 11B6;
+CB20;CB20;110D 116C 11B7;CB20;110D 116C 11B7;
+CB21;CB21;110D 116C 11B8;CB21;110D 116C 11B8;
+CB22;CB22;110D 116C 11B9;CB22;110D 116C 11B9;
+CB23;CB23;110D 116C 11BA;CB23;110D 116C 11BA;
+CB24;CB24;110D 116C 11BB;CB24;110D 116C 11BB;
+CB25;CB25;110D 116C 11BC;CB25;110D 116C 11BC;
+CB26;CB26;110D 116C 11BD;CB26;110D 116C 11BD;
+CB27;CB27;110D 116C 11BE;CB27;110D 116C 11BE;
+CB28;CB28;110D 116C 11BF;CB28;110D 116C 11BF;
+CB29;CB29;110D 116C 11C0;CB29;110D 116C 11C0;
+CB2A;CB2A;110D 116C 11C1;CB2A;110D 116C 11C1;
+CB2B;CB2B;110D 116C 11C2;CB2B;110D 116C 11C2;
+CB2C;CB2C;110D 116D;CB2C;110D 116D;
+CB2D;CB2D;110D 116D 11A8;CB2D;110D 116D 11A8;
+CB2E;CB2E;110D 116D 11A9;CB2E;110D 116D 11A9;
+CB2F;CB2F;110D 116D 11AA;CB2F;110D 116D 11AA;
+CB30;CB30;110D 116D 11AB;CB30;110D 116D 11AB;
+CB31;CB31;110D 116D 11AC;CB31;110D 116D 11AC;
+CB32;CB32;110D 116D 11AD;CB32;110D 116D 11AD;
+CB33;CB33;110D 116D 11AE;CB33;110D 116D 11AE;
+CB34;CB34;110D 116D 11AF;CB34;110D 116D 11AF;
+CB35;CB35;110D 116D 11B0;CB35;110D 116D 11B0;
+CB36;CB36;110D 116D 11B1;CB36;110D 116D 11B1;
+CB37;CB37;110D 116D 11B2;CB37;110D 116D 11B2;
+CB38;CB38;110D 116D 11B3;CB38;110D 116D 11B3;
+CB39;CB39;110D 116D 11B4;CB39;110D 116D 11B4;
+CB3A;CB3A;110D 116D 11B5;CB3A;110D 116D 11B5;
+CB3B;CB3B;110D 116D 11B6;CB3B;110D 116D 11B6;
+CB3C;CB3C;110D 116D 11B7;CB3C;110D 116D 11B7;
+CB3D;CB3D;110D 116D 11B8;CB3D;110D 116D 11B8;
+CB3E;CB3E;110D 116D 11B9;CB3E;110D 116D 11B9;
+CB3F;CB3F;110D 116D 11BA;CB3F;110D 116D 11BA;
+CB40;CB40;110D 116D 11BB;CB40;110D 116D 11BB;
+CB41;CB41;110D 116D 11BC;CB41;110D 116D 11BC;
+CB42;CB42;110D 116D 11BD;CB42;110D 116D 11BD;
+CB43;CB43;110D 116D 11BE;CB43;110D 116D 11BE;
+CB44;CB44;110D 116D 11BF;CB44;110D 116D 11BF;
+CB45;CB45;110D 116D 11C0;CB45;110D 116D 11C0;
+CB46;CB46;110D 116D 11C1;CB46;110D 116D 11C1;
+CB47;CB47;110D 116D 11C2;CB47;110D 116D 11C2;
+CB48;CB48;110D 116E;CB48;110D 116E;
+CB49;CB49;110D 116E 11A8;CB49;110D 116E 11A8;
+CB4A;CB4A;110D 116E 11A9;CB4A;110D 116E 11A9;
+CB4B;CB4B;110D 116E 11AA;CB4B;110D 116E 11AA;
+CB4C;CB4C;110D 116E 11AB;CB4C;110D 116E 11AB;
+CB4D;CB4D;110D 116E 11AC;CB4D;110D 116E 11AC;
+CB4E;CB4E;110D 116E 11AD;CB4E;110D 116E 11AD;
+CB4F;CB4F;110D 116E 11AE;CB4F;110D 116E 11AE;
+CB50;CB50;110D 116E 11AF;CB50;110D 116E 11AF;
+CB51;CB51;110D 116E 11B0;CB51;110D 116E 11B0;
+CB52;CB52;110D 116E 11B1;CB52;110D 116E 11B1;
+CB53;CB53;110D 116E 11B2;CB53;110D 116E 11B2;
+CB54;CB54;110D 116E 11B3;CB54;110D 116E 11B3;
+CB55;CB55;110D 116E 11B4;CB55;110D 116E 11B4;
+CB56;CB56;110D 116E 11B5;CB56;110D 116E 11B5;
+CB57;CB57;110D 116E 11B6;CB57;110D 116E 11B6;
+CB58;CB58;110D 116E 11B7;CB58;110D 116E 11B7;
+CB59;CB59;110D 116E 11B8;CB59;110D 116E 11B8;
+CB5A;CB5A;110D 116E 11B9;CB5A;110D 116E 11B9;
+CB5B;CB5B;110D 116E 11BA;CB5B;110D 116E 11BA;
+CB5C;CB5C;110D 116E 11BB;CB5C;110D 116E 11BB;
+CB5D;CB5D;110D 116E 11BC;CB5D;110D 116E 11BC;
+CB5E;CB5E;110D 116E 11BD;CB5E;110D 116E 11BD;
+CB5F;CB5F;110D 116E 11BE;CB5F;110D 116E 11BE;
+CB60;CB60;110D 116E 11BF;CB60;110D 116E 11BF;
+CB61;CB61;110D 116E 11C0;CB61;110D 116E 11C0;
+CB62;CB62;110D 116E 11C1;CB62;110D 116E 11C1;
+CB63;CB63;110D 116E 11C2;CB63;110D 116E 11C2;
+CB64;CB64;110D 116F;CB64;110D 116F;
+CB65;CB65;110D 116F 11A8;CB65;110D 116F 11A8;
+CB66;CB66;110D 116F 11A9;CB66;110D 116F 11A9;
+CB67;CB67;110D 116F 11AA;CB67;110D 116F 11AA;
+CB68;CB68;110D 116F 11AB;CB68;110D 116F 11AB;
+CB69;CB69;110D 116F 11AC;CB69;110D 116F 11AC;
+CB6A;CB6A;110D 116F 11AD;CB6A;110D 116F 11AD;
+CB6B;CB6B;110D 116F 11AE;CB6B;110D 116F 11AE;
+CB6C;CB6C;110D 116F 11AF;CB6C;110D 116F 11AF;
+CB6D;CB6D;110D 116F 11B0;CB6D;110D 116F 11B0;
+CB6E;CB6E;110D 116F 11B1;CB6E;110D 116F 11B1;
+CB6F;CB6F;110D 116F 11B2;CB6F;110D 116F 11B2;
+CB70;CB70;110D 116F 11B3;CB70;110D 116F 11B3;
+CB71;CB71;110D 116F 11B4;CB71;110D 116F 11B4;
+CB72;CB72;110D 116F 11B5;CB72;110D 116F 11B5;
+CB73;CB73;110D 116F 11B6;CB73;110D 116F 11B6;
+CB74;CB74;110D 116F 11B7;CB74;110D 116F 11B7;
+CB75;CB75;110D 116F 11B8;CB75;110D 116F 11B8;
+CB76;CB76;110D 116F 11B9;CB76;110D 116F 11B9;
+CB77;CB77;110D 116F 11BA;CB77;110D 116F 11BA;
+CB78;CB78;110D 116F 11BB;CB78;110D 116F 11BB;
+CB79;CB79;110D 116F 11BC;CB79;110D 116F 11BC;
+CB7A;CB7A;110D 116F 11BD;CB7A;110D 116F 11BD;
+CB7B;CB7B;110D 116F 11BE;CB7B;110D 116F 11BE;
+CB7C;CB7C;110D 116F 11BF;CB7C;110D 116F 11BF;
+CB7D;CB7D;110D 116F 11C0;CB7D;110D 116F 11C0;
+CB7E;CB7E;110D 116F 11C1;CB7E;110D 116F 11C1;
+CB7F;CB7F;110D 116F 11C2;CB7F;110D 116F 11C2;
+CB80;CB80;110D 1170;CB80;110D 1170;
+CB81;CB81;110D 1170 11A8;CB81;110D 1170 11A8;
+CB82;CB82;110D 1170 11A9;CB82;110D 1170 11A9;
+CB83;CB83;110D 1170 11AA;CB83;110D 1170 11AA;
+CB84;CB84;110D 1170 11AB;CB84;110D 1170 11AB;
+CB85;CB85;110D 1170 11AC;CB85;110D 1170 11AC;
+CB86;CB86;110D 1170 11AD;CB86;110D 1170 11AD;
+CB87;CB87;110D 1170 11AE;CB87;110D 1170 11AE;
+CB88;CB88;110D 1170 11AF;CB88;110D 1170 11AF;
+CB89;CB89;110D 1170 11B0;CB89;110D 1170 11B0;
+CB8A;CB8A;110D 1170 11B1;CB8A;110D 1170 11B1;
+CB8B;CB8B;110D 1170 11B2;CB8B;110D 1170 11B2;
+CB8C;CB8C;110D 1170 11B3;CB8C;110D 1170 11B3;
+CB8D;CB8D;110D 1170 11B4;CB8D;110D 1170 11B4;
+CB8E;CB8E;110D 1170 11B5;CB8E;110D 1170 11B5;
+CB8F;CB8F;110D 1170 11B6;CB8F;110D 1170 11B6;
+CB90;CB90;110D 1170 11B7;CB90;110D 1170 11B7;
+CB91;CB91;110D 1170 11B8;CB91;110D 1170 11B8;
+CB92;CB92;110D 1170 11B9;CB92;110D 1170 11B9;
+CB93;CB93;110D 1170 11BA;CB93;110D 1170 11BA;
+CB94;CB94;110D 1170 11BB;CB94;110D 1170 11BB;
+CB95;CB95;110D 1170 11BC;CB95;110D 1170 11BC;
+CB96;CB96;110D 1170 11BD;CB96;110D 1170 11BD;
+CB97;CB97;110D 1170 11BE;CB97;110D 1170 11BE;
+CB98;CB98;110D 1170 11BF;CB98;110D 1170 11BF;
+CB99;CB99;110D 1170 11C0;CB99;110D 1170 11C0;
+CB9A;CB9A;110D 1170 11C1;CB9A;110D 1170 11C1;
+CB9B;CB9B;110D 1170 11C2;CB9B;110D 1170 11C2;
+CB9C;CB9C;110D 1171;CB9C;110D 1171;
+CB9D;CB9D;110D 1171 11A8;CB9D;110D 1171 11A8;
+CB9E;CB9E;110D 1171 11A9;CB9E;110D 1171 11A9;
+CB9F;CB9F;110D 1171 11AA;CB9F;110D 1171 11AA;
+CBA0;CBA0;110D 1171 11AB;CBA0;110D 1171 11AB;
+CBA1;CBA1;110D 1171 11AC;CBA1;110D 1171 11AC;
+CBA2;CBA2;110D 1171 11AD;CBA2;110D 1171 11AD;
+CBA3;CBA3;110D 1171 11AE;CBA3;110D 1171 11AE;
+CBA4;CBA4;110D 1171 11AF;CBA4;110D 1171 11AF;
+CBA5;CBA5;110D 1171 11B0;CBA5;110D 1171 11B0;
+CBA6;CBA6;110D 1171 11B1;CBA6;110D 1171 11B1;
+CBA7;CBA7;110D 1171 11B2;CBA7;110D 1171 11B2;
+CBA8;CBA8;110D 1171 11B3;CBA8;110D 1171 11B3;
+CBA9;CBA9;110D 1171 11B4;CBA9;110D 1171 11B4;
+CBAA;CBAA;110D 1171 11B5;CBAA;110D 1171 11B5;
+CBAB;CBAB;110D 1171 11B6;CBAB;110D 1171 11B6;
+CBAC;CBAC;110D 1171 11B7;CBAC;110D 1171 11B7;
+CBAD;CBAD;110D 1171 11B8;CBAD;110D 1171 11B8;
+CBAE;CBAE;110D 1171 11B9;CBAE;110D 1171 11B9;
+CBAF;CBAF;110D 1171 11BA;CBAF;110D 1171 11BA;
+CBB0;CBB0;110D 1171 11BB;CBB0;110D 1171 11BB;
+CBB1;CBB1;110D 1171 11BC;CBB1;110D 1171 11BC;
+CBB2;CBB2;110D 1171 11BD;CBB2;110D 1171 11BD;
+CBB3;CBB3;110D 1171 11BE;CBB3;110D 1171 11BE;
+CBB4;CBB4;110D 1171 11BF;CBB4;110D 1171 11BF;
+CBB5;CBB5;110D 1171 11C0;CBB5;110D 1171 11C0;
+CBB6;CBB6;110D 1171 11C1;CBB6;110D 1171 11C1;
+CBB7;CBB7;110D 1171 11C2;CBB7;110D 1171 11C2;
+CBB8;CBB8;110D 1172;CBB8;110D 1172;
+CBB9;CBB9;110D 1172 11A8;CBB9;110D 1172 11A8;
+CBBA;CBBA;110D 1172 11A9;CBBA;110D 1172 11A9;
+CBBB;CBBB;110D 1172 11AA;CBBB;110D 1172 11AA;
+CBBC;CBBC;110D 1172 11AB;CBBC;110D 1172 11AB;
+CBBD;CBBD;110D 1172 11AC;CBBD;110D 1172 11AC;
+CBBE;CBBE;110D 1172 11AD;CBBE;110D 1172 11AD;
+CBBF;CBBF;110D 1172 11AE;CBBF;110D 1172 11AE;
+CBC0;CBC0;110D 1172 11AF;CBC0;110D 1172 11AF;
+CBC1;CBC1;110D 1172 11B0;CBC1;110D 1172 11B0;
+CBC2;CBC2;110D 1172 11B1;CBC2;110D 1172 11B1;
+CBC3;CBC3;110D 1172 11B2;CBC3;110D 1172 11B2;
+CBC4;CBC4;110D 1172 11B3;CBC4;110D 1172 11B3;
+CBC5;CBC5;110D 1172 11B4;CBC5;110D 1172 11B4;
+CBC6;CBC6;110D 1172 11B5;CBC6;110D 1172 11B5;
+CBC7;CBC7;110D 1172 11B6;CBC7;110D 1172 11B6;
+CBC8;CBC8;110D 1172 11B7;CBC8;110D 1172 11B7;
+CBC9;CBC9;110D 1172 11B8;CBC9;110D 1172 11B8;
+CBCA;CBCA;110D 1172 11B9;CBCA;110D 1172 11B9;
+CBCB;CBCB;110D 1172 11BA;CBCB;110D 1172 11BA;
+CBCC;CBCC;110D 1172 11BB;CBCC;110D 1172 11BB;
+CBCD;CBCD;110D 1172 11BC;CBCD;110D 1172 11BC;
+CBCE;CBCE;110D 1172 11BD;CBCE;110D 1172 11BD;
+CBCF;CBCF;110D 1172 11BE;CBCF;110D 1172 11BE;
+CBD0;CBD0;110D 1172 11BF;CBD0;110D 1172 11BF;
+CBD1;CBD1;110D 1172 11C0;CBD1;110D 1172 11C0;
+CBD2;CBD2;110D 1172 11C1;CBD2;110D 1172 11C1;
+CBD3;CBD3;110D 1172 11C2;CBD3;110D 1172 11C2;
+CBD4;CBD4;110D 1173;CBD4;110D 1173;
+CBD5;CBD5;110D 1173 11A8;CBD5;110D 1173 11A8;
+CBD6;CBD6;110D 1173 11A9;CBD6;110D 1173 11A9;
+CBD7;CBD7;110D 1173 11AA;CBD7;110D 1173 11AA;
+CBD8;CBD8;110D 1173 11AB;CBD8;110D 1173 11AB;
+CBD9;CBD9;110D 1173 11AC;CBD9;110D 1173 11AC;
+CBDA;CBDA;110D 1173 11AD;CBDA;110D 1173 11AD;
+CBDB;CBDB;110D 1173 11AE;CBDB;110D 1173 11AE;
+CBDC;CBDC;110D 1173 11AF;CBDC;110D 1173 11AF;
+CBDD;CBDD;110D 1173 11B0;CBDD;110D 1173 11B0;
+CBDE;CBDE;110D 1173 11B1;CBDE;110D 1173 11B1;
+CBDF;CBDF;110D 1173 11B2;CBDF;110D 1173 11B2;
+CBE0;CBE0;110D 1173 11B3;CBE0;110D 1173 11B3;
+CBE1;CBE1;110D 1173 11B4;CBE1;110D 1173 11B4;
+CBE2;CBE2;110D 1173 11B5;CBE2;110D 1173 11B5;
+CBE3;CBE3;110D 1173 11B6;CBE3;110D 1173 11B6;
+CBE4;CBE4;110D 1173 11B7;CBE4;110D 1173 11B7;
+CBE5;CBE5;110D 1173 11B8;CBE5;110D 1173 11B8;
+CBE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9;
+CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA;
+CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB;
+CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC;
+CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD;
+CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE;
+CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF;
+CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0;
+CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1;
+CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2;
+CBF0;CBF0;110D 1174;CBF0;110D 1174;
+CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8;
+CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9;
+CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA;
+CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB;
+CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC;
+CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD;
+CBF7;CBF7;110D 1174 11AE;CBF7;110D 1174 11AE;
+CBF8;CBF8;110D 1174 11AF;CBF8;110D 1174 11AF;
+CBF9;CBF9;110D 1174 11B0;CBF9;110D 1174 11B0;
+CBFA;CBFA;110D 1174 11B1;CBFA;110D 1174 11B1;
+CBFB;CBFB;110D 1174 11B2;CBFB;110D 1174 11B2;
+CBFC;CBFC;110D 1174 11B3;CBFC;110D 1174 11B3;
+CBFD;CBFD;110D 1174 11B4;CBFD;110D 1174 11B4;
+CBFE;CBFE;110D 1174 11B5;CBFE;110D 1174 11B5;
+CBFF;CBFF;110D 1174 11B6;CBFF;110D 1174 11B6;
+CC00;CC00;110D 1174 11B7;CC00;110D 1174 11B7;
+CC01;CC01;110D 1174 11B8;CC01;110D 1174 11B8;
+CC02;CC02;110D 1174 11B9;CC02;110D 1174 11B9;
+CC03;CC03;110D 1174 11BA;CC03;110D 1174 11BA;
+CC04;CC04;110D 1174 11BB;CC04;110D 1174 11BB;
+CC05;CC05;110D 1174 11BC;CC05;110D 1174 11BC;
+CC06;CC06;110D 1174 11BD;CC06;110D 1174 11BD;
+CC07;CC07;110D 1174 11BE;CC07;110D 1174 11BE;
+CC08;CC08;110D 1174 11BF;CC08;110D 1174 11BF;
+CC09;CC09;110D 1174 11C0;CC09;110D 1174 11C0;
+CC0A;CC0A;110D 1174 11C1;CC0A;110D 1174 11C1;
+CC0B;CC0B;110D 1174 11C2;CC0B;110D 1174 11C2;
+CC0C;CC0C;110D 1175;CC0C;110D 1175;
+CC0D;CC0D;110D 1175 11A8;CC0D;110D 1175 11A8;
+CC0E;CC0E;110D 1175 11A9;CC0E;110D 1175 11A9;
+CC0F;CC0F;110D 1175 11AA;CC0F;110D 1175 11AA;
+CC10;CC10;110D 1175 11AB;CC10;110D 1175 11AB;
+CC11;CC11;110D 1175 11AC;CC11;110D 1175 11AC;
+CC12;CC12;110D 1175 11AD;CC12;110D 1175 11AD;
+CC13;CC13;110D 1175 11AE;CC13;110D 1175 11AE;
+CC14;CC14;110D 1175 11AF;CC14;110D 1175 11AF;
+CC15;CC15;110D 1175 11B0;CC15;110D 1175 11B0;
+CC16;CC16;110D 1175 11B1;CC16;110D 1175 11B1;
+CC17;CC17;110D 1175 11B2;CC17;110D 1175 11B2;
+CC18;CC18;110D 1175 11B3;CC18;110D 1175 11B3;
+CC19;CC19;110D 1175 11B4;CC19;110D 1175 11B4;
+CC1A;CC1A;110D 1175 11B5;CC1A;110D 1175 11B5;
+CC1B;CC1B;110D 1175 11B6;CC1B;110D 1175 11B6;
+CC1C;CC1C;110D 1175 11B7;CC1C;110D 1175 11B7;
+CC1D;CC1D;110D 1175 11B8;CC1D;110D 1175 11B8;
+CC1E;CC1E;110D 1175 11B9;CC1E;110D 1175 11B9;
+CC1F;CC1F;110D 1175 11BA;CC1F;110D 1175 11BA;
+CC20;CC20;110D 1175 11BB;CC20;110D 1175 11BB;
+CC21;CC21;110D 1175 11BC;CC21;110D 1175 11BC;
+CC22;CC22;110D 1175 11BD;CC22;110D 1175 11BD;
+CC23;CC23;110D 1175 11BE;CC23;110D 1175 11BE;
+CC24;CC24;110D 1175 11BF;CC24;110D 1175 11BF;
+CC25;CC25;110D 1175 11C0;CC25;110D 1175 11C0;
+CC26;CC26;110D 1175 11C1;CC26;110D 1175 11C1;
+CC27;CC27;110D 1175 11C2;CC27;110D 1175 11C2;
+CC28;CC28;110E 1161;CC28;110E 1161;
+CC29;CC29;110E 1161 11A8;CC29;110E 1161 11A8;
+CC2A;CC2A;110E 1161 11A9;CC2A;110E 1161 11A9;
+CC2B;CC2B;110E 1161 11AA;CC2B;110E 1161 11AA;
+CC2C;CC2C;110E 1161 11AB;CC2C;110E 1161 11AB;
+CC2D;CC2D;110E 1161 11AC;CC2D;110E 1161 11AC;
+CC2E;CC2E;110E 1161 11AD;CC2E;110E 1161 11AD;
+CC2F;CC2F;110E 1161 11AE;CC2F;110E 1161 11AE;
+CC30;CC30;110E 1161 11AF;CC30;110E 1161 11AF;
+CC31;CC31;110E 1161 11B0;CC31;110E 1161 11B0;
+CC32;CC32;110E 1161 11B1;CC32;110E 1161 11B1;
+CC33;CC33;110E 1161 11B2;CC33;110E 1161 11B2;
+CC34;CC34;110E 1161 11B3;CC34;110E 1161 11B3;
+CC35;CC35;110E 1161 11B4;CC35;110E 1161 11B4;
+CC36;CC36;110E 1161 11B5;CC36;110E 1161 11B5;
+CC37;CC37;110E 1161 11B6;CC37;110E 1161 11B6;
+CC38;CC38;110E 1161 11B7;CC38;110E 1161 11B7;
+CC39;CC39;110E 1161 11B8;CC39;110E 1161 11B8;
+CC3A;CC3A;110E 1161 11B9;CC3A;110E 1161 11B9;
+CC3B;CC3B;110E 1161 11BA;CC3B;110E 1161 11BA;
+CC3C;CC3C;110E 1161 11BB;CC3C;110E 1161 11BB;
+CC3D;CC3D;110E 1161 11BC;CC3D;110E 1161 11BC;
+CC3E;CC3E;110E 1161 11BD;CC3E;110E 1161 11BD;
+CC3F;CC3F;110E 1161 11BE;CC3F;110E 1161 11BE;
+CC40;CC40;110E 1161 11BF;CC40;110E 1161 11BF;
+CC41;CC41;110E 1161 11C0;CC41;110E 1161 11C0;
+CC42;CC42;110E 1161 11C1;CC42;110E 1161 11C1;
+CC43;CC43;110E 1161 11C2;CC43;110E 1161 11C2;
+CC44;CC44;110E 1162;CC44;110E 1162;
+CC45;CC45;110E 1162 11A8;CC45;110E 1162 11A8;
+CC46;CC46;110E 1162 11A9;CC46;110E 1162 11A9;
+CC47;CC47;110E 1162 11AA;CC47;110E 1162 11AA;
+CC48;CC48;110E 1162 11AB;CC48;110E 1162 11AB;
+CC49;CC49;110E 1162 11AC;CC49;110E 1162 11AC;
+CC4A;CC4A;110E 1162 11AD;CC4A;110E 1162 11AD;
+CC4B;CC4B;110E 1162 11AE;CC4B;110E 1162 11AE;
+CC4C;CC4C;110E 1162 11AF;CC4C;110E 1162 11AF;
+CC4D;CC4D;110E 1162 11B0;CC4D;110E 1162 11B0;
+CC4E;CC4E;110E 1162 11B1;CC4E;110E 1162 11B1;
+CC4F;CC4F;110E 1162 11B2;CC4F;110E 1162 11B2;
+CC50;CC50;110E 1162 11B3;CC50;110E 1162 11B3;
+CC51;CC51;110E 1162 11B4;CC51;110E 1162 11B4;
+CC52;CC52;110E 1162 11B5;CC52;110E 1162 11B5;
+CC53;CC53;110E 1162 11B6;CC53;110E 1162 11B6;
+CC54;CC54;110E 1162 11B7;CC54;110E 1162 11B7;
+CC55;CC55;110E 1162 11B8;CC55;110E 1162 11B8;
+CC56;CC56;110E 1162 11B9;CC56;110E 1162 11B9;
+CC57;CC57;110E 1162 11BA;CC57;110E 1162 11BA;
+CC58;CC58;110E 1162 11BB;CC58;110E 1162 11BB;
+CC59;CC59;110E 1162 11BC;CC59;110E 1162 11BC;
+CC5A;CC5A;110E 1162 11BD;CC5A;110E 1162 11BD;
+CC5B;CC5B;110E 1162 11BE;CC5B;110E 1162 11BE;
+CC5C;CC5C;110E 1162 11BF;CC5C;110E 1162 11BF;
+CC5D;CC5D;110E 1162 11C0;CC5D;110E 1162 11C0;
+CC5E;CC5E;110E 1162 11C1;CC5E;110E 1162 11C1;
+CC5F;CC5F;110E 1162 11C2;CC5F;110E 1162 11C2;
+CC60;CC60;110E 1163;CC60;110E 1163;
+CC61;CC61;110E 1163 11A8;CC61;110E 1163 11A8;
+CC62;CC62;110E 1163 11A9;CC62;110E 1163 11A9;
+CC63;CC63;110E 1163 11AA;CC63;110E 1163 11AA;
+CC64;CC64;110E 1163 11AB;CC64;110E 1163 11AB;
+CC65;CC65;110E 1163 11AC;CC65;110E 1163 11AC;
+CC66;CC66;110E 1163 11AD;CC66;110E 1163 11AD;
+CC67;CC67;110E 1163 11AE;CC67;110E 1163 11AE;
+CC68;CC68;110E 1163 11AF;CC68;110E 1163 11AF;
+CC69;CC69;110E 1163 11B0;CC69;110E 1163 11B0;
+CC6A;CC6A;110E 1163 11B1;CC6A;110E 1163 11B1;
+CC6B;CC6B;110E 1163 11B2;CC6B;110E 1163 11B2;
+CC6C;CC6C;110E 1163 11B3;CC6C;110E 1163 11B3;
+CC6D;CC6D;110E 1163 11B4;CC6D;110E 1163 11B4;
+CC6E;CC6E;110E 1163 11B5;CC6E;110E 1163 11B5;
+CC6F;CC6F;110E 1163 11B6;CC6F;110E 1163 11B6;
+CC70;CC70;110E 1163 11B7;CC70;110E 1163 11B7;
+CC71;CC71;110E 1163 11B8;CC71;110E 1163 11B8;
+CC72;CC72;110E 1163 11B9;CC72;110E 1163 11B9;
+CC73;CC73;110E 1163 11BA;CC73;110E 1163 11BA;
+CC74;CC74;110E 1163 11BB;CC74;110E 1163 11BB;
+CC75;CC75;110E 1163 11BC;CC75;110E 1163 11BC;
+CC76;CC76;110E 1163 11BD;CC76;110E 1163 11BD;
+CC77;CC77;110E 1163 11BE;CC77;110E 1163 11BE;
+CC78;CC78;110E 1163 11BF;CC78;110E 1163 11BF;
+CC79;CC79;110E 1163 11C0;CC79;110E 1163 11C0;
+CC7A;CC7A;110E 1163 11C1;CC7A;110E 1163 11C1;
+CC7B;CC7B;110E 1163 11C2;CC7B;110E 1163 11C2;
+CC7C;CC7C;110E 1164;CC7C;110E 1164;
+CC7D;CC7D;110E 1164 11A8;CC7D;110E 1164 11A8;
+CC7E;CC7E;110E 1164 11A9;CC7E;110E 1164 11A9;
+CC7F;CC7F;110E 1164 11AA;CC7F;110E 1164 11AA;
+CC80;CC80;110E 1164 11AB;CC80;110E 1164 11AB;
+CC81;CC81;110E 1164 11AC;CC81;110E 1164 11AC;
+CC82;CC82;110E 1164 11AD;CC82;110E 1164 11AD;
+CC83;CC83;110E 1164 11AE;CC83;110E 1164 11AE;
+CC84;CC84;110E 1164 11AF;CC84;110E 1164 11AF;
+CC85;CC85;110E 1164 11B0;CC85;110E 1164 11B0;
+CC86;CC86;110E 1164 11B1;CC86;110E 1164 11B1;
+CC87;CC87;110E 1164 11B2;CC87;110E 1164 11B2;
+CC88;CC88;110E 1164 11B3;CC88;110E 1164 11B3;
+CC89;CC89;110E 1164 11B4;CC89;110E 1164 11B4;
+CC8A;CC8A;110E 1164 11B5;CC8A;110E 1164 11B5;
+CC8B;CC8B;110E 1164 11B6;CC8B;110E 1164 11B6;
+CC8C;CC8C;110E 1164 11B7;CC8C;110E 1164 11B7;
+CC8D;CC8D;110E 1164 11B8;CC8D;110E 1164 11B8;
+CC8E;CC8E;110E 1164 11B9;CC8E;110E 1164 11B9;
+CC8F;CC8F;110E 1164 11BA;CC8F;110E 1164 11BA;
+CC90;CC90;110E 1164 11BB;CC90;110E 1164 11BB;
+CC91;CC91;110E 1164 11BC;CC91;110E 1164 11BC;
+CC92;CC92;110E 1164 11BD;CC92;110E 1164 11BD;
+CC93;CC93;110E 1164 11BE;CC93;110E 1164 11BE;
+CC94;CC94;110E 1164 11BF;CC94;110E 1164 11BF;
+CC95;CC95;110E 1164 11C0;CC95;110E 1164 11C0;
+CC96;CC96;110E 1164 11C1;CC96;110E 1164 11C1;
+CC97;CC97;110E 1164 11C2;CC97;110E 1164 11C2;
+CC98;CC98;110E 1165;CC98;110E 1165;
+CC99;CC99;110E 1165 11A8;CC99;110E 1165 11A8;
+CC9A;CC9A;110E 1165 11A9;CC9A;110E 1165 11A9;
+CC9B;CC9B;110E 1165 11AA;CC9B;110E 1165 11AA;
+CC9C;CC9C;110E 1165 11AB;CC9C;110E 1165 11AB;
+CC9D;CC9D;110E 1165 11AC;CC9D;110E 1165 11AC;
+CC9E;CC9E;110E 1165 11AD;CC9E;110E 1165 11AD;
+CC9F;CC9F;110E 1165 11AE;CC9F;110E 1165 11AE;
+CCA0;CCA0;110E 1165 11AF;CCA0;110E 1165 11AF;
+CCA1;CCA1;110E 1165 11B0;CCA1;110E 1165 11B0;
+CCA2;CCA2;110E 1165 11B1;CCA2;110E 1165 11B1;
+CCA3;CCA3;110E 1165 11B2;CCA3;110E 1165 11B2;
+CCA4;CCA4;110E 1165 11B3;CCA4;110E 1165 11B3;
+CCA5;CCA5;110E 1165 11B4;CCA5;110E 1165 11B4;
+CCA6;CCA6;110E 1165 11B5;CCA6;110E 1165 11B5;
+CCA7;CCA7;110E 1165 11B6;CCA7;110E 1165 11B6;
+CCA8;CCA8;110E 1165 11B7;CCA8;110E 1165 11B7;
+CCA9;CCA9;110E 1165 11B8;CCA9;110E 1165 11B8;
+CCAA;CCAA;110E 1165 11B9;CCAA;110E 1165 11B9;
+CCAB;CCAB;110E 1165 11BA;CCAB;110E 1165 11BA;
+CCAC;CCAC;110E 1165 11BB;CCAC;110E 1165 11BB;
+CCAD;CCAD;110E 1165 11BC;CCAD;110E 1165 11BC;
+CCAE;CCAE;110E 1165 11BD;CCAE;110E 1165 11BD;
+CCAF;CCAF;110E 1165 11BE;CCAF;110E 1165 11BE;
+CCB0;CCB0;110E 1165 11BF;CCB0;110E 1165 11BF;
+CCB1;CCB1;110E 1165 11C0;CCB1;110E 1165 11C0;
+CCB2;CCB2;110E 1165 11C1;CCB2;110E 1165 11C1;
+CCB3;CCB3;110E 1165 11C2;CCB3;110E 1165 11C2;
+CCB4;CCB4;110E 1166;CCB4;110E 1166;
+CCB5;CCB5;110E 1166 11A8;CCB5;110E 1166 11A8;
+CCB6;CCB6;110E 1166 11A9;CCB6;110E 1166 11A9;
+CCB7;CCB7;110E 1166 11AA;CCB7;110E 1166 11AA;
+CCB8;CCB8;110E 1166 11AB;CCB8;110E 1166 11AB;
+CCB9;CCB9;110E 1166 11AC;CCB9;110E 1166 11AC;
+CCBA;CCBA;110E 1166 11AD;CCBA;110E 1166 11AD;
+CCBB;CCBB;110E 1166 11AE;CCBB;110E 1166 11AE;
+CCBC;CCBC;110E 1166 11AF;CCBC;110E 1166 11AF;
+CCBD;CCBD;110E 1166 11B0;CCBD;110E 1166 11B0;
+CCBE;CCBE;110E 1166 11B1;CCBE;110E 1166 11B1;
+CCBF;CCBF;110E 1166 11B2;CCBF;110E 1166 11B2;
+CCC0;CCC0;110E 1166 11B3;CCC0;110E 1166 11B3;
+CCC1;CCC1;110E 1166 11B4;CCC1;110E 1166 11B4;
+CCC2;CCC2;110E 1166 11B5;CCC2;110E 1166 11B5;
+CCC3;CCC3;110E 1166 11B6;CCC3;110E 1166 11B6;
+CCC4;CCC4;110E 1166 11B7;CCC4;110E 1166 11B7;
+CCC5;CCC5;110E 1166 11B8;CCC5;110E 1166 11B8;
+CCC6;CCC6;110E 1166 11B9;CCC6;110E 1166 11B9;
+CCC7;CCC7;110E 1166 11BA;CCC7;110E 1166 11BA;
+CCC8;CCC8;110E 1166 11BB;CCC8;110E 1166 11BB;
+CCC9;CCC9;110E 1166 11BC;CCC9;110E 1166 11BC;
+CCCA;CCCA;110E 1166 11BD;CCCA;110E 1166 11BD;
+CCCB;CCCB;110E 1166 11BE;CCCB;110E 1166 11BE;
+CCCC;CCCC;110E 1166 11BF;CCCC;110E 1166 11BF;
+CCCD;CCCD;110E 1166 11C0;CCCD;110E 1166 11C0;
+CCCE;CCCE;110E 1166 11C1;CCCE;110E 1166 11C1;
+CCCF;CCCF;110E 1166 11C2;CCCF;110E 1166 11C2;
+CCD0;CCD0;110E 1167;CCD0;110E 1167;
+CCD1;CCD1;110E 1167 11A8;CCD1;110E 1167 11A8;
+CCD2;CCD2;110E 1167 11A9;CCD2;110E 1167 11A9;
+CCD3;CCD3;110E 1167 11AA;CCD3;110E 1167 11AA;
+CCD4;CCD4;110E 1167 11AB;CCD4;110E 1167 11AB;
+CCD5;CCD5;110E 1167 11AC;CCD5;110E 1167 11AC;
+CCD6;CCD6;110E 1167 11AD;CCD6;110E 1167 11AD;
+CCD7;CCD7;110E 1167 11AE;CCD7;110E 1167 11AE;
+CCD8;CCD8;110E 1167 11AF;CCD8;110E 1167 11AF;
+CCD9;CCD9;110E 1167 11B0;CCD9;110E 1167 11B0;
+CCDA;CCDA;110E 1167 11B1;CCDA;110E 1167 11B1;
+CCDB;CCDB;110E 1167 11B2;CCDB;110E 1167 11B2;
+CCDC;CCDC;110E 1167 11B3;CCDC;110E 1167 11B3;
+CCDD;CCDD;110E 1167 11B4;CCDD;110E 1167 11B4;
+CCDE;CCDE;110E 1167 11B5;CCDE;110E 1167 11B5;
+CCDF;CCDF;110E 1167 11B6;CCDF;110E 1167 11B6;
+CCE0;CCE0;110E 1167 11B7;CCE0;110E 1167 11B7;
+CCE1;CCE1;110E 1167 11B8;CCE1;110E 1167 11B8;
+CCE2;CCE2;110E 1167 11B9;CCE2;110E 1167 11B9;
+CCE3;CCE3;110E 1167 11BA;CCE3;110E 1167 11BA;
+CCE4;CCE4;110E 1167 11BB;CCE4;110E 1167 11BB;
+CCE5;CCE5;110E 1167 11BC;CCE5;110E 1167 11BC;
+CCE6;CCE6;110E 1167 11BD;CCE6;110E 1167 11BD;
+CCE7;CCE7;110E 1167 11BE;CCE7;110E 1167 11BE;
+CCE8;CCE8;110E 1167 11BF;CCE8;110E 1167 11BF;
+CCE9;CCE9;110E 1167 11C0;CCE9;110E 1167 11C0;
+CCEA;CCEA;110E 1167 11C1;CCEA;110E 1167 11C1;
+CCEB;CCEB;110E 1167 11C2;CCEB;110E 1167 11C2;
+CCEC;CCEC;110E 1168;CCEC;110E 1168;
+CCED;CCED;110E 1168 11A8;CCED;110E 1168 11A8;
+CCEE;CCEE;110E 1168 11A9;CCEE;110E 1168 11A9;
+CCEF;CCEF;110E 1168 11AA;CCEF;110E 1168 11AA;
+CCF0;CCF0;110E 1168 11AB;CCF0;110E 1168 11AB;
+CCF1;CCF1;110E 1168 11AC;CCF1;110E 1168 11AC;
+CCF2;CCF2;110E 1168 11AD;CCF2;110E 1168 11AD;
+CCF3;CCF3;110E 1168 11AE;CCF3;110E 1168 11AE;
+CCF4;CCF4;110E 1168 11AF;CCF4;110E 1168 11AF;
+CCF5;CCF5;110E 1168 11B0;CCF5;110E 1168 11B0;
+CCF6;CCF6;110E 1168 11B1;CCF6;110E 1168 11B1;
+CCF7;CCF7;110E 1168 11B2;CCF7;110E 1168 11B2;
+CCF8;CCF8;110E 1168 11B3;CCF8;110E 1168 11B3;
+CCF9;CCF9;110E 1168 11B4;CCF9;110E 1168 11B4;
+CCFA;CCFA;110E 1168 11B5;CCFA;110E 1168 11B5;
+CCFB;CCFB;110E 1168 11B6;CCFB;110E 1168 11B6;
+CCFC;CCFC;110E 1168 11B7;CCFC;110E 1168 11B7;
+CCFD;CCFD;110E 1168 11B8;CCFD;110E 1168 11B8;
+CCFE;CCFE;110E 1168 11B9;CCFE;110E 1168 11B9;
+CCFF;CCFF;110E 1168 11BA;CCFF;110E 1168 11BA;
+CD00;CD00;110E 1168 11BB;CD00;110E 1168 11BB;
+CD01;CD01;110E 1168 11BC;CD01;110E 1168 11BC;
+CD02;CD02;110E 1168 11BD;CD02;110E 1168 11BD;
+CD03;CD03;110E 1168 11BE;CD03;110E 1168 11BE;
+CD04;CD04;110E 1168 11BF;CD04;110E 1168 11BF;
+CD05;CD05;110E 1168 11C0;CD05;110E 1168 11C0;
+CD06;CD06;110E 1168 11C1;CD06;110E 1168 11C1;
+CD07;CD07;110E 1168 11C2;CD07;110E 1168 11C2;
+CD08;CD08;110E 1169;CD08;110E 1169;
+CD09;CD09;110E 1169 11A8;CD09;110E 1169 11A8;
+CD0A;CD0A;110E 1169 11A9;CD0A;110E 1169 11A9;
+CD0B;CD0B;110E 1169 11AA;CD0B;110E 1169 11AA;
+CD0C;CD0C;110E 1169 11AB;CD0C;110E 1169 11AB;
+CD0D;CD0D;110E 1169 11AC;CD0D;110E 1169 11AC;
+CD0E;CD0E;110E 1169 11AD;CD0E;110E 1169 11AD;
+CD0F;CD0F;110E 1169 11AE;CD0F;110E 1169 11AE;
+CD10;CD10;110E 1169 11AF;CD10;110E 1169 11AF;
+CD11;CD11;110E 1169 11B0;CD11;110E 1169 11B0;
+CD12;CD12;110E 1169 11B1;CD12;110E 1169 11B1;
+CD13;CD13;110E 1169 11B2;CD13;110E 1169 11B2;
+CD14;CD14;110E 1169 11B3;CD14;110E 1169 11B3;
+CD15;CD15;110E 1169 11B4;CD15;110E 1169 11B4;
+CD16;CD16;110E 1169 11B5;CD16;110E 1169 11B5;
+CD17;CD17;110E 1169 11B6;CD17;110E 1169 11B6;
+CD18;CD18;110E 1169 11B7;CD18;110E 1169 11B7;
+CD19;CD19;110E 1169 11B8;CD19;110E 1169 11B8;
+CD1A;CD1A;110E 1169 11B9;CD1A;110E 1169 11B9;
+CD1B;CD1B;110E 1169 11BA;CD1B;110E 1169 11BA;
+CD1C;CD1C;110E 1169 11BB;CD1C;110E 1169 11BB;
+CD1D;CD1D;110E 1169 11BC;CD1D;110E 1169 11BC;
+CD1E;CD1E;110E 1169 11BD;CD1E;110E 1169 11BD;
+CD1F;CD1F;110E 1169 11BE;CD1F;110E 1169 11BE;
+CD20;CD20;110E 1169 11BF;CD20;110E 1169 11BF;
+CD21;CD21;110E 1169 11C0;CD21;110E 1169 11C0;
+CD22;CD22;110E 1169 11C1;CD22;110E 1169 11C1;
+CD23;CD23;110E 1169 11C2;CD23;110E 1169 11C2;
+CD24;CD24;110E 116A;CD24;110E 116A;
+CD25;CD25;110E 116A 11A8;CD25;110E 116A 11A8;
+CD26;CD26;110E 116A 11A9;CD26;110E 116A 11A9;
+CD27;CD27;110E 116A 11AA;CD27;110E 116A 11AA;
+CD28;CD28;110E 116A 11AB;CD28;110E 116A 11AB;
+CD29;CD29;110E 116A 11AC;CD29;110E 116A 11AC;
+CD2A;CD2A;110E 116A 11AD;CD2A;110E 116A 11AD;
+CD2B;CD2B;110E 116A 11AE;CD2B;110E 116A 11AE;
+CD2C;CD2C;110E 116A 11AF;CD2C;110E 116A 11AF;
+CD2D;CD2D;110E 116A 11B0;CD2D;110E 116A 11B0;
+CD2E;CD2E;110E 116A 11B1;CD2E;110E 116A 11B1;
+CD2F;CD2F;110E 116A 11B2;CD2F;110E 116A 11B2;
+CD30;CD30;110E 116A 11B3;CD30;110E 116A 11B3;
+CD31;CD31;110E 116A 11B4;CD31;110E 116A 11B4;
+CD32;CD32;110E 116A 11B5;CD32;110E 116A 11B5;
+CD33;CD33;110E 116A 11B6;CD33;110E 116A 11B6;
+CD34;CD34;110E 116A 11B7;CD34;110E 116A 11B7;
+CD35;CD35;110E 116A 11B8;CD35;110E 116A 11B8;
+CD36;CD36;110E 116A 11B9;CD36;110E 116A 11B9;
+CD37;CD37;110E 116A 11BA;CD37;110E 116A 11BA;
+CD38;CD38;110E 116A 11BB;CD38;110E 116A 11BB;
+CD39;CD39;110E 116A 11BC;CD39;110E 116A 11BC;
+CD3A;CD3A;110E 116A 11BD;CD3A;110E 116A 11BD;
+CD3B;CD3B;110E 116A 11BE;CD3B;110E 116A 11BE;
+CD3C;CD3C;110E 116A 11BF;CD3C;110E 116A 11BF;
+CD3D;CD3D;110E 116A 11C0;CD3D;110E 116A 11C0;
+CD3E;CD3E;110E 116A 11C1;CD3E;110E 116A 11C1;
+CD3F;CD3F;110E 116A 11C2;CD3F;110E 116A 11C2;
+CD40;CD40;110E 116B;CD40;110E 116B;
+CD41;CD41;110E 116B 11A8;CD41;110E 116B 11A8;
+CD42;CD42;110E 116B 11A9;CD42;110E 116B 11A9;
+CD43;CD43;110E 116B 11AA;CD43;110E 116B 11AA;
+CD44;CD44;110E 116B 11AB;CD44;110E 116B 11AB;
+CD45;CD45;110E 116B 11AC;CD45;110E 116B 11AC;
+CD46;CD46;110E 116B 11AD;CD46;110E 116B 11AD;
+CD47;CD47;110E 116B 11AE;CD47;110E 116B 11AE;
+CD48;CD48;110E 116B 11AF;CD48;110E 116B 11AF;
+CD49;CD49;110E 116B 11B0;CD49;110E 116B 11B0;
+CD4A;CD4A;110E 116B 11B1;CD4A;110E 116B 11B1;
+CD4B;CD4B;110E 116B 11B2;CD4B;110E 116B 11B2;
+CD4C;CD4C;110E 116B 11B3;CD4C;110E 116B 11B3;
+CD4D;CD4D;110E 116B 11B4;CD4D;110E 116B 11B4;
+CD4E;CD4E;110E 116B 11B5;CD4E;110E 116B 11B5;
+CD4F;CD4F;110E 116B 11B6;CD4F;110E 116B 11B6;
+CD50;CD50;110E 116B 11B7;CD50;110E 116B 11B7;
+CD51;CD51;110E 116B 11B8;CD51;110E 116B 11B8;
+CD52;CD52;110E 116B 11B9;CD52;110E 116B 11B9;
+CD53;CD53;110E 116B 11BA;CD53;110E 116B 11BA;
+CD54;CD54;110E 116B 11BB;CD54;110E 116B 11BB;
+CD55;CD55;110E 116B 11BC;CD55;110E 116B 11BC;
+CD56;CD56;110E 116B 11BD;CD56;110E 116B 11BD;
+CD57;CD57;110E 116B 11BE;CD57;110E 116B 11BE;
+CD58;CD58;110E 116B 11BF;CD58;110E 116B 11BF;
+CD59;CD59;110E 116B 11C0;CD59;110E 116B 11C0;
+CD5A;CD5A;110E 116B 11C1;CD5A;110E 116B 11C1;
+CD5B;CD5B;110E 116B 11C2;CD5B;110E 116B 11C2;
+CD5C;CD5C;110E 116C;CD5C;110E 116C;
+CD5D;CD5D;110E 116C 11A8;CD5D;110E 116C 11A8;
+CD5E;CD5E;110E 116C 11A9;CD5E;110E 116C 11A9;
+CD5F;CD5F;110E 116C 11AA;CD5F;110E 116C 11AA;
+CD60;CD60;110E 116C 11AB;CD60;110E 116C 11AB;
+CD61;CD61;110E 116C 11AC;CD61;110E 116C 11AC;
+CD62;CD62;110E 116C 11AD;CD62;110E 116C 11AD;
+CD63;CD63;110E 116C 11AE;CD63;110E 116C 11AE;
+CD64;CD64;110E 116C 11AF;CD64;110E 116C 11AF;
+CD65;CD65;110E 116C 11B0;CD65;110E 116C 11B0;
+CD66;CD66;110E 116C 11B1;CD66;110E 116C 11B1;
+CD67;CD67;110E 116C 11B2;CD67;110E 116C 11B2;
+CD68;CD68;110E 116C 11B3;CD68;110E 116C 11B3;
+CD69;CD69;110E 116C 11B4;CD69;110E 116C 11B4;
+CD6A;CD6A;110E 116C 11B5;CD6A;110E 116C 11B5;
+CD6B;CD6B;110E 116C 11B6;CD6B;110E 116C 11B6;
+CD6C;CD6C;110E 116C 11B7;CD6C;110E 116C 11B7;
+CD6D;CD6D;110E 116C 11B8;CD6D;110E 116C 11B8;
+CD6E;CD6E;110E 116C 11B9;CD6E;110E 116C 11B9;
+CD6F;CD6F;110E 116C 11BA;CD6F;110E 116C 11BA;
+CD70;CD70;110E 116C 11BB;CD70;110E 116C 11BB;
+CD71;CD71;110E 116C 11BC;CD71;110E 116C 11BC;
+CD72;CD72;110E 116C 11BD;CD72;110E 116C 11BD;
+CD73;CD73;110E 116C 11BE;CD73;110E 116C 11BE;
+CD74;CD74;110E 116C 11BF;CD74;110E 116C 11BF;
+CD75;CD75;110E 116C 11C0;CD75;110E 116C 11C0;
+CD76;CD76;110E 116C 11C1;CD76;110E 116C 11C1;
+CD77;CD77;110E 116C 11C2;CD77;110E 116C 11C2;
+CD78;CD78;110E 116D;CD78;110E 116D;
+CD79;CD79;110E 116D 11A8;CD79;110E 116D 11A8;
+CD7A;CD7A;110E 116D 11A9;CD7A;110E 116D 11A9;
+CD7B;CD7B;110E 116D 11AA;CD7B;110E 116D 11AA;
+CD7C;CD7C;110E 116D 11AB;CD7C;110E 116D 11AB;
+CD7D;CD7D;110E 116D 11AC;CD7D;110E 116D 11AC;
+CD7E;CD7E;110E 116D 11AD;CD7E;110E 116D 11AD;
+CD7F;CD7F;110E 116D 11AE;CD7F;110E 116D 11AE;
+CD80;CD80;110E 116D 11AF;CD80;110E 116D 11AF;
+CD81;CD81;110E 116D 11B0;CD81;110E 116D 11B0;
+CD82;CD82;110E 116D 11B1;CD82;110E 116D 11B1;
+CD83;CD83;110E 116D 11B2;CD83;110E 116D 11B2;
+CD84;CD84;110E 116D 11B3;CD84;110E 116D 11B3;
+CD85;CD85;110E 116D 11B4;CD85;110E 116D 11B4;
+CD86;CD86;110E 116D 11B5;CD86;110E 116D 11B5;
+CD87;CD87;110E 116D 11B6;CD87;110E 116D 11B6;
+CD88;CD88;110E 116D 11B7;CD88;110E 116D 11B7;
+CD89;CD89;110E 116D 11B8;CD89;110E 116D 11B8;
+CD8A;CD8A;110E 116D 11B9;CD8A;110E 116D 11B9;
+CD8B;CD8B;110E 116D 11BA;CD8B;110E 116D 11BA;
+CD8C;CD8C;110E 116D 11BB;CD8C;110E 116D 11BB;
+CD8D;CD8D;110E 116D 11BC;CD8D;110E 116D 11BC;
+CD8E;CD8E;110E 116D 11BD;CD8E;110E 116D 11BD;
+CD8F;CD8F;110E 116D 11BE;CD8F;110E 116D 11BE;
+CD90;CD90;110E 116D 11BF;CD90;110E 116D 11BF;
+CD91;CD91;110E 116D 11C0;CD91;110E 116D 11C0;
+CD92;CD92;110E 116D 11C1;CD92;110E 116D 11C1;
+CD93;CD93;110E 116D 11C2;CD93;110E 116D 11C2;
+CD94;CD94;110E 116E;CD94;110E 116E;
+CD95;CD95;110E 116E 11A8;CD95;110E 116E 11A8;
+CD96;CD96;110E 116E 11A9;CD96;110E 116E 11A9;
+CD97;CD97;110E 116E 11AA;CD97;110E 116E 11AA;
+CD98;CD98;110E 116E 11AB;CD98;110E 116E 11AB;
+CD99;CD99;110E 116E 11AC;CD99;110E 116E 11AC;
+CD9A;CD9A;110E 116E 11AD;CD9A;110E 116E 11AD;
+CD9B;CD9B;110E 116E 11AE;CD9B;110E 116E 11AE;
+CD9C;CD9C;110E 116E 11AF;CD9C;110E 116E 11AF;
+CD9D;CD9D;110E 116E 11B0;CD9D;110E 116E 11B0;
+CD9E;CD9E;110E 116E 11B1;CD9E;110E 116E 11B1;
+CD9F;CD9F;110E 116E 11B2;CD9F;110E 116E 11B2;
+CDA0;CDA0;110E 116E 11B3;CDA0;110E 116E 11B3;
+CDA1;CDA1;110E 116E 11B4;CDA1;110E 116E 11B4;
+CDA2;CDA2;110E 116E 11B5;CDA2;110E 116E 11B5;
+CDA3;CDA3;110E 116E 11B6;CDA3;110E 116E 11B6;
+CDA4;CDA4;110E 116E 11B7;CDA4;110E 116E 11B7;
+CDA5;CDA5;110E 116E 11B8;CDA5;110E 116E 11B8;
+CDA6;CDA6;110E 116E 11B9;CDA6;110E 116E 11B9;
+CDA7;CDA7;110E 116E 11BA;CDA7;110E 116E 11BA;
+CDA8;CDA8;110E 116E 11BB;CDA8;110E 116E 11BB;
+CDA9;CDA9;110E 116E 11BC;CDA9;110E 116E 11BC;
+CDAA;CDAA;110E 116E 11BD;CDAA;110E 116E 11BD;
+CDAB;CDAB;110E 116E 11BE;CDAB;110E 116E 11BE;
+CDAC;CDAC;110E 116E 11BF;CDAC;110E 116E 11BF;
+CDAD;CDAD;110E 116E 11C0;CDAD;110E 116E 11C0;
+CDAE;CDAE;110E 116E 11C1;CDAE;110E 116E 11C1;
+CDAF;CDAF;110E 116E 11C2;CDAF;110E 116E 11C2;
+CDB0;CDB0;110E 116F;CDB0;110E 116F;
+CDB1;CDB1;110E 116F 11A8;CDB1;110E 116F 11A8;
+CDB2;CDB2;110E 116F 11A9;CDB2;110E 116F 11A9;
+CDB3;CDB3;110E 116F 11AA;CDB3;110E 116F 11AA;
+CDB4;CDB4;110E 116F 11AB;CDB4;110E 116F 11AB;
+CDB5;CDB5;110E 116F 11AC;CDB5;110E 116F 11AC;
+CDB6;CDB6;110E 116F 11AD;CDB6;110E 116F 11AD;
+CDB7;CDB7;110E 116F 11AE;CDB7;110E 116F 11AE;
+CDB8;CDB8;110E 116F 11AF;CDB8;110E 116F 11AF;
+CDB9;CDB9;110E 116F 11B0;CDB9;110E 116F 11B0;
+CDBA;CDBA;110E 116F 11B1;CDBA;110E 116F 11B1;
+CDBB;CDBB;110E 116F 11B2;CDBB;110E 116F 11B2;
+CDBC;CDBC;110E 116F 11B3;CDBC;110E 116F 11B3;
+CDBD;CDBD;110E 116F 11B4;CDBD;110E 116F 11B4;
+CDBE;CDBE;110E 116F 11B5;CDBE;110E 116F 11B5;
+CDBF;CDBF;110E 116F 11B6;CDBF;110E 116F 11B6;
+CDC0;CDC0;110E 116F 11B7;CDC0;110E 116F 11B7;
+CDC1;CDC1;110E 116F 11B8;CDC1;110E 116F 11B8;
+CDC2;CDC2;110E 116F 11B9;CDC2;110E 116F 11B9;
+CDC3;CDC3;110E 116F 11BA;CDC3;110E 116F 11BA;
+CDC4;CDC4;110E 116F 11BB;CDC4;110E 116F 11BB;
+CDC5;CDC5;110E 116F 11BC;CDC5;110E 116F 11BC;
+CDC6;CDC6;110E 116F 11BD;CDC6;110E 116F 11BD;
+CDC7;CDC7;110E 116F 11BE;CDC7;110E 116F 11BE;
+CDC8;CDC8;110E 116F 11BF;CDC8;110E 116F 11BF;
+CDC9;CDC9;110E 116F 11C0;CDC9;110E 116F 11C0;
+CDCA;CDCA;110E 116F 11C1;CDCA;110E 116F 11C1;
+CDCB;CDCB;110E 116F 11C2;CDCB;110E 116F 11C2;
+CDCC;CDCC;110E 1170;CDCC;110E 1170;
+CDCD;CDCD;110E 1170 11A8;CDCD;110E 1170 11A8;
+CDCE;CDCE;110E 1170 11A9;CDCE;110E 1170 11A9;
+CDCF;CDCF;110E 1170 11AA;CDCF;110E 1170 11AA;
+CDD0;CDD0;110E 1170 11AB;CDD0;110E 1170 11AB;
+CDD1;CDD1;110E 1170 11AC;CDD1;110E 1170 11AC;
+CDD2;CDD2;110E 1170 11AD;CDD2;110E 1170 11AD;
+CDD3;CDD3;110E 1170 11AE;CDD3;110E 1170 11AE;
+CDD4;CDD4;110E 1170 11AF;CDD4;110E 1170 11AF;
+CDD5;CDD5;110E 1170 11B0;CDD5;110E 1170 11B0;
+CDD6;CDD6;110E 1170 11B1;CDD6;110E 1170 11B1;
+CDD7;CDD7;110E 1170 11B2;CDD7;110E 1170 11B2;
+CDD8;CDD8;110E 1170 11B3;CDD8;110E 1170 11B3;
+CDD9;CDD9;110E 1170 11B4;CDD9;110E 1170 11B4;
+CDDA;CDDA;110E 1170 11B5;CDDA;110E 1170 11B5;
+CDDB;CDDB;110E 1170 11B6;CDDB;110E 1170 11B6;
+CDDC;CDDC;110E 1170 11B7;CDDC;110E 1170 11B7;
+CDDD;CDDD;110E 1170 11B8;CDDD;110E 1170 11B8;
+CDDE;CDDE;110E 1170 11B9;CDDE;110E 1170 11B9;
+CDDF;CDDF;110E 1170 11BA;CDDF;110E 1170 11BA;
+CDE0;CDE0;110E 1170 11BB;CDE0;110E 1170 11BB;
+CDE1;CDE1;110E 1170 11BC;CDE1;110E 1170 11BC;
+CDE2;CDE2;110E 1170 11BD;CDE2;110E 1170 11BD;
+CDE3;CDE3;110E 1170 11BE;CDE3;110E 1170 11BE;
+CDE4;CDE4;110E 1170 11BF;CDE4;110E 1170 11BF;
+CDE5;CDE5;110E 1170 11C0;CDE5;110E 1170 11C0;
+CDE6;CDE6;110E 1170 11C1;CDE6;110E 1170 11C1;
+CDE7;CDE7;110E 1170 11C2;CDE7;110E 1170 11C2;
+CDE8;CDE8;110E 1171;CDE8;110E 1171;
+CDE9;CDE9;110E 1171 11A8;CDE9;110E 1171 11A8;
+CDEA;CDEA;110E 1171 11A9;CDEA;110E 1171 11A9;
+CDEB;CDEB;110E 1171 11AA;CDEB;110E 1171 11AA;
+CDEC;CDEC;110E 1171 11AB;CDEC;110E 1171 11AB;
+CDED;CDED;110E 1171 11AC;CDED;110E 1171 11AC;
+CDEE;CDEE;110E 1171 11AD;CDEE;110E 1171 11AD;
+CDEF;CDEF;110E 1171 11AE;CDEF;110E 1171 11AE;
+CDF0;CDF0;110E 1171 11AF;CDF0;110E 1171 11AF;
+CDF1;CDF1;110E 1171 11B0;CDF1;110E 1171 11B0;
+CDF2;CDF2;110E 1171 11B1;CDF2;110E 1171 11B1;
+CDF3;CDF3;110E 1171 11B2;CDF3;110E 1171 11B2;
+CDF4;CDF4;110E 1171 11B3;CDF4;110E 1171 11B3;
+CDF5;CDF5;110E 1171 11B4;CDF5;110E 1171 11B4;
+CDF6;CDF6;110E 1171 11B5;CDF6;110E 1171 11B5;
+CDF7;CDF7;110E 1171 11B6;CDF7;110E 1171 11B6;
+CDF8;CDF8;110E 1171 11B7;CDF8;110E 1171 11B7;
+CDF9;CDF9;110E 1171 11B8;CDF9;110E 1171 11B8;
+CDFA;CDFA;110E 1171 11B9;CDFA;110E 1171 11B9;
+CDFB;CDFB;110E 1171 11BA;CDFB;110E 1171 11BA;
+CDFC;CDFC;110E 1171 11BB;CDFC;110E 1171 11BB;
+CDFD;CDFD;110E 1171 11BC;CDFD;110E 1171 11BC;
+CDFE;CDFE;110E 1171 11BD;CDFE;110E 1171 11BD;
+CDFF;CDFF;110E 1171 11BE;CDFF;110E 1171 11BE;
+CE00;CE00;110E 1171 11BF;CE00;110E 1171 11BF;
+CE01;CE01;110E 1171 11C0;CE01;110E 1171 11C0;
+CE02;CE02;110E 1171 11C1;CE02;110E 1171 11C1;
+CE03;CE03;110E 1171 11C2;CE03;110E 1171 11C2;
+CE04;CE04;110E 1172;CE04;110E 1172;
+CE05;CE05;110E 1172 11A8;CE05;110E 1172 11A8;
+CE06;CE06;110E 1172 11A9;CE06;110E 1172 11A9;
+CE07;CE07;110E 1172 11AA;CE07;110E 1172 11AA;
+CE08;CE08;110E 1172 11AB;CE08;110E 1172 11AB;
+CE09;CE09;110E 1172 11AC;CE09;110E 1172 11AC;
+CE0A;CE0A;110E 1172 11AD;CE0A;110E 1172 11AD;
+CE0B;CE0B;110E 1172 11AE;CE0B;110E 1172 11AE;
+CE0C;CE0C;110E 1172 11AF;CE0C;110E 1172 11AF;
+CE0D;CE0D;110E 1172 11B0;CE0D;110E 1172 11B0;
+CE0E;CE0E;110E 1172 11B1;CE0E;110E 1172 11B1;
+CE0F;CE0F;110E 1172 11B2;CE0F;110E 1172 11B2;
+CE10;CE10;110E 1172 11B3;CE10;110E 1172 11B3;
+CE11;CE11;110E 1172 11B4;CE11;110E 1172 11B4;
+CE12;CE12;110E 1172 11B5;CE12;110E 1172 11B5;
+CE13;CE13;110E 1172 11B6;CE13;110E 1172 11B6;
+CE14;CE14;110E 1172 11B7;CE14;110E 1172 11B7;
+CE15;CE15;110E 1172 11B8;CE15;110E 1172 11B8;
+CE16;CE16;110E 1172 11B9;CE16;110E 1172 11B9;
+CE17;CE17;110E 1172 11BA;CE17;110E 1172 11BA;
+CE18;CE18;110E 1172 11BB;CE18;110E 1172 11BB;
+CE19;CE19;110E 1172 11BC;CE19;110E 1172 11BC;
+CE1A;CE1A;110E 1172 11BD;CE1A;110E 1172 11BD;
+CE1B;CE1B;110E 1172 11BE;CE1B;110E 1172 11BE;
+CE1C;CE1C;110E 1172 11BF;CE1C;110E 1172 11BF;
+CE1D;CE1D;110E 1172 11C0;CE1D;110E 1172 11C0;
+CE1E;CE1E;110E 1172 11C1;CE1E;110E 1172 11C1;
+CE1F;CE1F;110E 1172 11C2;CE1F;110E 1172 11C2;
+CE20;CE20;110E 1173;CE20;110E 1173;
+CE21;CE21;110E 1173 11A8;CE21;110E 1173 11A8;
+CE22;CE22;110E 1173 11A9;CE22;110E 1173 11A9;
+CE23;CE23;110E 1173 11AA;CE23;110E 1173 11AA;
+CE24;CE24;110E 1173 11AB;CE24;110E 1173 11AB;
+CE25;CE25;110E 1173 11AC;CE25;110E 1173 11AC;
+CE26;CE26;110E 1173 11AD;CE26;110E 1173 11AD;
+CE27;CE27;110E 1173 11AE;CE27;110E 1173 11AE;
+CE28;CE28;110E 1173 11AF;CE28;110E 1173 11AF;
+CE29;CE29;110E 1173 11B0;CE29;110E 1173 11B0;
+CE2A;CE2A;110E 1173 11B1;CE2A;110E 1173 11B1;
+CE2B;CE2B;110E 1173 11B2;CE2B;110E 1173 11B2;
+CE2C;CE2C;110E 1173 11B3;CE2C;110E 1173 11B3;
+CE2D;CE2D;110E 1173 11B4;CE2D;110E 1173 11B4;
+CE2E;CE2E;110E 1173 11B5;CE2E;110E 1173 11B5;
+CE2F;CE2F;110E 1173 11B6;CE2F;110E 1173 11B6;
+CE30;CE30;110E 1173 11B7;CE30;110E 1173 11B7;
+CE31;CE31;110E 1173 11B8;CE31;110E 1173 11B8;
+CE32;CE32;110E 1173 11B9;CE32;110E 1173 11B9;
+CE33;CE33;110E 1173 11BA;CE33;110E 1173 11BA;
+CE34;CE34;110E 1173 11BB;CE34;110E 1173 11BB;
+CE35;CE35;110E 1173 11BC;CE35;110E 1173 11BC;
+CE36;CE36;110E 1173 11BD;CE36;110E 1173 11BD;
+CE37;CE37;110E 1173 11BE;CE37;110E 1173 11BE;
+CE38;CE38;110E 1173 11BF;CE38;110E 1173 11BF;
+CE39;CE39;110E 1173 11C0;CE39;110E 1173 11C0;
+CE3A;CE3A;110E 1173 11C1;CE3A;110E 1173 11C1;
+CE3B;CE3B;110E 1173 11C2;CE3B;110E 1173 11C2;
+CE3C;CE3C;110E 1174;CE3C;110E 1174;
+CE3D;CE3D;110E 1174 11A8;CE3D;110E 1174 11A8;
+CE3E;CE3E;110E 1174 11A9;CE3E;110E 1174 11A9;
+CE3F;CE3F;110E 1174 11AA;CE3F;110E 1174 11AA;
+CE40;CE40;110E 1174 11AB;CE40;110E 1174 11AB;
+CE41;CE41;110E 1174 11AC;CE41;110E 1174 11AC;
+CE42;CE42;110E 1174 11AD;CE42;110E 1174 11AD;
+CE43;CE43;110E 1174 11AE;CE43;110E 1174 11AE;
+CE44;CE44;110E 1174 11AF;CE44;110E 1174 11AF;
+CE45;CE45;110E 1174 11B0;CE45;110E 1174 11B0;
+CE46;CE46;110E 1174 11B1;CE46;110E 1174 11B1;
+CE47;CE47;110E 1174 11B2;CE47;110E 1174 11B2;
+CE48;CE48;110E 1174 11B3;CE48;110E 1174 11B3;
+CE49;CE49;110E 1174 11B4;CE49;110E 1174 11B4;
+CE4A;CE4A;110E 1174 11B5;CE4A;110E 1174 11B5;
+CE4B;CE4B;110E 1174 11B6;CE4B;110E 1174 11B6;
+CE4C;CE4C;110E 1174 11B7;CE4C;110E 1174 11B7;
+CE4D;CE4D;110E 1174 11B8;CE4D;110E 1174 11B8;
+CE4E;CE4E;110E 1174 11B9;CE4E;110E 1174 11B9;
+CE4F;CE4F;110E 1174 11BA;CE4F;110E 1174 11BA;
+CE50;CE50;110E 1174 11BB;CE50;110E 1174 11BB;
+CE51;CE51;110E 1174 11BC;CE51;110E 1174 11BC;
+CE52;CE52;110E 1174 11BD;CE52;110E 1174 11BD;
+CE53;CE53;110E 1174 11BE;CE53;110E 1174 11BE;
+CE54;CE54;110E 1174 11BF;CE54;110E 1174 11BF;
+CE55;CE55;110E 1174 11C0;CE55;110E 1174 11C0;
+CE56;CE56;110E 1174 11C1;CE56;110E 1174 11C1;
+CE57;CE57;110E 1174 11C2;CE57;110E 1174 11C2;
+CE58;CE58;110E 1175;CE58;110E 1175;
+CE59;CE59;110E 1175 11A8;CE59;110E 1175 11A8;
+CE5A;CE5A;110E 1175 11A9;CE5A;110E 1175 11A9;
+CE5B;CE5B;110E 1175 11AA;CE5B;110E 1175 11AA;
+CE5C;CE5C;110E 1175 11AB;CE5C;110E 1175 11AB;
+CE5D;CE5D;110E 1175 11AC;CE5D;110E 1175 11AC;
+CE5E;CE5E;110E 1175 11AD;CE5E;110E 1175 11AD;
+CE5F;CE5F;110E 1175 11AE;CE5F;110E 1175 11AE;
+CE60;CE60;110E 1175 11AF;CE60;110E 1175 11AF;
+CE61;CE61;110E 1175 11B0;CE61;110E 1175 11B0;
+CE62;CE62;110E 1175 11B1;CE62;110E 1175 11B1;
+CE63;CE63;110E 1175 11B2;CE63;110E 1175 11B2;
+CE64;CE64;110E 1175 11B3;CE64;110E 1175 11B3;
+CE65;CE65;110E 1175 11B4;CE65;110E 1175 11B4;
+CE66;CE66;110E 1175 11B5;CE66;110E 1175 11B5;
+CE67;CE67;110E 1175 11B6;CE67;110E 1175 11B6;
+CE68;CE68;110E 1175 11B7;CE68;110E 1175 11B7;
+CE69;CE69;110E 1175 11B8;CE69;110E 1175 11B8;
+CE6A;CE6A;110E 1175 11B9;CE6A;110E 1175 11B9;
+CE6B;CE6B;110E 1175 11BA;CE6B;110E 1175 11BA;
+CE6C;CE6C;110E 1175 11BB;CE6C;110E 1175 11BB;
+CE6D;CE6D;110E 1175 11BC;CE6D;110E 1175 11BC;
+CE6E;CE6E;110E 1175 11BD;CE6E;110E 1175 11BD;
+CE6F;CE6F;110E 1175 11BE;CE6F;110E 1175 11BE;
+CE70;CE70;110E 1175 11BF;CE70;110E 1175 11BF;
+CE71;CE71;110E 1175 11C0;CE71;110E 1175 11C0;
+CE72;CE72;110E 1175 11C1;CE72;110E 1175 11C1;
+CE73;CE73;110E 1175 11C2;CE73;110E 1175 11C2;
+CE74;CE74;110F 1161;CE74;110F 1161;
+CE75;CE75;110F 1161 11A8;CE75;110F 1161 11A8;
+CE76;CE76;110F 1161 11A9;CE76;110F 1161 11A9;
+CE77;CE77;110F 1161 11AA;CE77;110F 1161 11AA;
+CE78;CE78;110F 1161 11AB;CE78;110F 1161 11AB;
+CE79;CE79;110F 1161 11AC;CE79;110F 1161 11AC;
+CE7A;CE7A;110F 1161 11AD;CE7A;110F 1161 11AD;
+CE7B;CE7B;110F 1161 11AE;CE7B;110F 1161 11AE;
+CE7C;CE7C;110F 1161 11AF;CE7C;110F 1161 11AF;
+CE7D;CE7D;110F 1161 11B0;CE7D;110F 1161 11B0;
+CE7E;CE7E;110F 1161 11B1;CE7E;110F 1161 11B1;
+CE7F;CE7F;110F 1161 11B2;CE7F;110F 1161 11B2;
+CE80;CE80;110F 1161 11B3;CE80;110F 1161 11B3;
+CE81;CE81;110F 1161 11B4;CE81;110F 1161 11B4;
+CE82;CE82;110F 1161 11B5;CE82;110F 1161 11B5;
+CE83;CE83;110F 1161 11B6;CE83;110F 1161 11B6;
+CE84;CE84;110F 1161 11B7;CE84;110F 1161 11B7;
+CE85;CE85;110F 1161 11B8;CE85;110F 1161 11B8;
+CE86;CE86;110F 1161 11B9;CE86;110F 1161 11B9;
+CE87;CE87;110F 1161 11BA;CE87;110F 1161 11BA;
+CE88;CE88;110F 1161 11BB;CE88;110F 1161 11BB;
+CE89;CE89;110F 1161 11BC;CE89;110F 1161 11BC;
+CE8A;CE8A;110F 1161 11BD;CE8A;110F 1161 11BD;
+CE8B;CE8B;110F 1161 11BE;CE8B;110F 1161 11BE;
+CE8C;CE8C;110F 1161 11BF;CE8C;110F 1161 11BF;
+CE8D;CE8D;110F 1161 11C0;CE8D;110F 1161 11C0;
+CE8E;CE8E;110F 1161 11C1;CE8E;110F 1161 11C1;
+CE8F;CE8F;110F 1161 11C2;CE8F;110F 1161 11C2;
+CE90;CE90;110F 1162;CE90;110F 1162;
+CE91;CE91;110F 1162 11A8;CE91;110F 1162 11A8;
+CE92;CE92;110F 1162 11A9;CE92;110F 1162 11A9;
+CE93;CE93;110F 1162 11AA;CE93;110F 1162 11AA;
+CE94;CE94;110F 1162 11AB;CE94;110F 1162 11AB;
+CE95;CE95;110F 1162 11AC;CE95;110F 1162 11AC;
+CE96;CE96;110F 1162 11AD;CE96;110F 1162 11AD;
+CE97;CE97;110F 1162 11AE;CE97;110F 1162 11AE;
+CE98;CE98;110F 1162 11AF;CE98;110F 1162 11AF;
+CE99;CE99;110F 1162 11B0;CE99;110F 1162 11B0;
+CE9A;CE9A;110F 1162 11B1;CE9A;110F 1162 11B1;
+CE9B;CE9B;110F 1162 11B2;CE9B;110F 1162 11B2;
+CE9C;CE9C;110F 1162 11B3;CE9C;110F 1162 11B3;
+CE9D;CE9D;110F 1162 11B4;CE9D;110F 1162 11B4;
+CE9E;CE9E;110F 1162 11B5;CE9E;110F 1162 11B5;
+CE9F;CE9F;110F 1162 11B6;CE9F;110F 1162 11B6;
+CEA0;CEA0;110F 1162 11B7;CEA0;110F 1162 11B7;
+CEA1;CEA1;110F 1162 11B8;CEA1;110F 1162 11B8;
+CEA2;CEA2;110F 1162 11B9;CEA2;110F 1162 11B9;
+CEA3;CEA3;110F 1162 11BA;CEA3;110F 1162 11BA;
+CEA4;CEA4;110F 1162 11BB;CEA4;110F 1162 11BB;
+CEA5;CEA5;110F 1162 11BC;CEA5;110F 1162 11BC;
+CEA6;CEA6;110F 1162 11BD;CEA6;110F 1162 11BD;
+CEA7;CEA7;110F 1162 11BE;CEA7;110F 1162 11BE;
+CEA8;CEA8;110F 1162 11BF;CEA8;110F 1162 11BF;
+CEA9;CEA9;110F 1162 11C0;CEA9;110F 1162 11C0;
+CEAA;CEAA;110F 1162 11C1;CEAA;110F 1162 11C1;
+CEAB;CEAB;110F 1162 11C2;CEAB;110F 1162 11C2;
+CEAC;CEAC;110F 1163;CEAC;110F 1163;
+CEAD;CEAD;110F 1163 11A8;CEAD;110F 1163 11A8;
+CEAE;CEAE;110F 1163 11A9;CEAE;110F 1163 11A9;
+CEAF;CEAF;110F 1163 11AA;CEAF;110F 1163 11AA;
+CEB0;CEB0;110F 1163 11AB;CEB0;110F 1163 11AB;
+CEB1;CEB1;110F 1163 11AC;CEB1;110F 1163 11AC;
+CEB2;CEB2;110F 1163 11AD;CEB2;110F 1163 11AD;
+CEB3;CEB3;110F 1163 11AE;CEB3;110F 1163 11AE;
+CEB4;CEB4;110F 1163 11AF;CEB4;110F 1163 11AF;
+CEB5;CEB5;110F 1163 11B0;CEB5;110F 1163 11B0;
+CEB6;CEB6;110F 1163 11B1;CEB6;110F 1163 11B1;
+CEB7;CEB7;110F 1163 11B2;CEB7;110F 1163 11B2;
+CEB8;CEB8;110F 1163 11B3;CEB8;110F 1163 11B3;
+CEB9;CEB9;110F 1163 11B4;CEB9;110F 1163 11B4;
+CEBA;CEBA;110F 1163 11B5;CEBA;110F 1163 11B5;
+CEBB;CEBB;110F 1163 11B6;CEBB;110F 1163 11B6;
+CEBC;CEBC;110F 1163 11B7;CEBC;110F 1163 11B7;
+CEBD;CEBD;110F 1163 11B8;CEBD;110F 1163 11B8;
+CEBE;CEBE;110F 1163 11B9;CEBE;110F 1163 11B9;
+CEBF;CEBF;110F 1163 11BA;CEBF;110F 1163 11BA;
+CEC0;CEC0;110F 1163 11BB;CEC0;110F 1163 11BB;
+CEC1;CEC1;110F 1163 11BC;CEC1;110F 1163 11BC;
+CEC2;CEC2;110F 1163 11BD;CEC2;110F 1163 11BD;
+CEC3;CEC3;110F 1163 11BE;CEC3;110F 1163 11BE;
+CEC4;CEC4;110F 1163 11BF;CEC4;110F 1163 11BF;
+CEC5;CEC5;110F 1163 11C0;CEC5;110F 1163 11C0;
+CEC6;CEC6;110F 1163 11C1;CEC6;110F 1163 11C1;
+CEC7;CEC7;110F 1163 11C2;CEC7;110F 1163 11C2;
+CEC8;CEC8;110F 1164;CEC8;110F 1164;
+CEC9;CEC9;110F 1164 11A8;CEC9;110F 1164 11A8;
+CECA;CECA;110F 1164 11A9;CECA;110F 1164 11A9;
+CECB;CECB;110F 1164 11AA;CECB;110F 1164 11AA;
+CECC;CECC;110F 1164 11AB;CECC;110F 1164 11AB;
+CECD;CECD;110F 1164 11AC;CECD;110F 1164 11AC;
+CECE;CECE;110F 1164 11AD;CECE;110F 1164 11AD;
+CECF;CECF;110F 1164 11AE;CECF;110F 1164 11AE;
+CED0;CED0;110F 1164 11AF;CED0;110F 1164 11AF;
+CED1;CED1;110F 1164 11B0;CED1;110F 1164 11B0;
+CED2;CED2;110F 1164 11B1;CED2;110F 1164 11B1;
+CED3;CED3;110F 1164 11B2;CED3;110F 1164 11B2;
+CED4;CED4;110F 1164 11B3;CED4;110F 1164 11B3;
+CED5;CED5;110F 1164 11B4;CED5;110F 1164 11B4;
+CED6;CED6;110F 1164 11B5;CED6;110F 1164 11B5;
+CED7;CED7;110F 1164 11B6;CED7;110F 1164 11B6;
+CED8;CED8;110F 1164 11B7;CED8;110F 1164 11B7;
+CED9;CED9;110F 1164 11B8;CED9;110F 1164 11B8;
+CEDA;CEDA;110F 1164 11B9;CEDA;110F 1164 11B9;
+CEDB;CEDB;110F 1164 11BA;CEDB;110F 1164 11BA;
+CEDC;CEDC;110F 1164 11BB;CEDC;110F 1164 11BB;
+CEDD;CEDD;110F 1164 11BC;CEDD;110F 1164 11BC;
+CEDE;CEDE;110F 1164 11BD;CEDE;110F 1164 11BD;
+CEDF;CEDF;110F 1164 11BE;CEDF;110F 1164 11BE;
+CEE0;CEE0;110F 1164 11BF;CEE0;110F 1164 11BF;
+CEE1;CEE1;110F 1164 11C0;CEE1;110F 1164 11C0;
+CEE2;CEE2;110F 1164 11C1;CEE2;110F 1164 11C1;
+CEE3;CEE3;110F 1164 11C2;CEE3;110F 1164 11C2;
+CEE4;CEE4;110F 1165;CEE4;110F 1165;
+CEE5;CEE5;110F 1165 11A8;CEE5;110F 1165 11A8;
+CEE6;CEE6;110F 1165 11A9;CEE6;110F 1165 11A9;
+CEE7;CEE7;110F 1165 11AA;CEE7;110F 1165 11AA;
+CEE8;CEE8;110F 1165 11AB;CEE8;110F 1165 11AB;
+CEE9;CEE9;110F 1165 11AC;CEE9;110F 1165 11AC;
+CEEA;CEEA;110F 1165 11AD;CEEA;110F 1165 11AD;
+CEEB;CEEB;110F 1165 11AE;CEEB;110F 1165 11AE;
+CEEC;CEEC;110F 1165 11AF;CEEC;110F 1165 11AF;
+CEED;CEED;110F 1165 11B0;CEED;110F 1165 11B0;
+CEEE;CEEE;110F 1165 11B1;CEEE;110F 1165 11B1;
+CEEF;CEEF;110F 1165 11B2;CEEF;110F 1165 11B2;
+CEF0;CEF0;110F 1165 11B3;CEF0;110F 1165 11B3;
+CEF1;CEF1;110F 1165 11B4;CEF1;110F 1165 11B4;
+CEF2;CEF2;110F 1165 11B5;CEF2;110F 1165 11B5;
+CEF3;CEF3;110F 1165 11B6;CEF3;110F 1165 11B6;
+CEF4;CEF4;110F 1165 11B7;CEF4;110F 1165 11B7;
+CEF5;CEF5;110F 1165 11B8;CEF5;110F 1165 11B8;
+CEF6;CEF6;110F 1165 11B9;CEF6;110F 1165 11B9;
+CEF7;CEF7;110F 1165 11BA;CEF7;110F 1165 11BA;
+CEF8;CEF8;110F 1165 11BB;CEF8;110F 1165 11BB;
+CEF9;CEF9;110F 1165 11BC;CEF9;110F 1165 11BC;
+CEFA;CEFA;110F 1165 11BD;CEFA;110F 1165 11BD;
+CEFB;CEFB;110F 1165 11BE;CEFB;110F 1165 11BE;
+CEFC;CEFC;110F 1165 11BF;CEFC;110F 1165 11BF;
+CEFD;CEFD;110F 1165 11C0;CEFD;110F 1165 11C0;
+CEFE;CEFE;110F 1165 11C1;CEFE;110F 1165 11C1;
+CEFF;CEFF;110F 1165 11C2;CEFF;110F 1165 11C2;
+CF00;CF00;110F 1166;CF00;110F 1166;
+CF01;CF01;110F 1166 11A8;CF01;110F 1166 11A8;
+CF02;CF02;110F 1166 11A9;CF02;110F 1166 11A9;
+CF03;CF03;110F 1166 11AA;CF03;110F 1166 11AA;
+CF04;CF04;110F 1166 11AB;CF04;110F 1166 11AB;
+CF05;CF05;110F 1166 11AC;CF05;110F 1166 11AC;
+CF06;CF06;110F 1166 11AD;CF06;110F 1166 11AD;
+CF07;CF07;110F 1166 11AE;CF07;110F 1166 11AE;
+CF08;CF08;110F 1166 11AF;CF08;110F 1166 11AF;
+CF09;CF09;110F 1166 11B0;CF09;110F 1166 11B0;
+CF0A;CF0A;110F 1166 11B1;CF0A;110F 1166 11B1;
+CF0B;CF0B;110F 1166 11B2;CF0B;110F 1166 11B2;
+CF0C;CF0C;110F 1166 11B3;CF0C;110F 1166 11B3;
+CF0D;CF0D;110F 1166 11B4;CF0D;110F 1166 11B4;
+CF0E;CF0E;110F 1166 11B5;CF0E;110F 1166 11B5;
+CF0F;CF0F;110F 1166 11B6;CF0F;110F 1166 11B6;
+CF10;CF10;110F 1166 11B7;CF10;110F 1166 11B7;
+CF11;CF11;110F 1166 11B8;CF11;110F 1166 11B8;
+CF12;CF12;110F 1166 11B9;CF12;110F 1166 11B9;
+CF13;CF13;110F 1166 11BA;CF13;110F 1166 11BA;
+CF14;CF14;110F 1166 11BB;CF14;110F 1166 11BB;
+CF15;CF15;110F 1166 11BC;CF15;110F 1166 11BC;
+CF16;CF16;110F 1166 11BD;CF16;110F 1166 11BD;
+CF17;CF17;110F 1166 11BE;CF17;110F 1166 11BE;
+CF18;CF18;110F 1166 11BF;CF18;110F 1166 11BF;
+CF19;CF19;110F 1166 11C0;CF19;110F 1166 11C0;
+CF1A;CF1A;110F 1166 11C1;CF1A;110F 1166 11C1;
+CF1B;CF1B;110F 1166 11C2;CF1B;110F 1166 11C2;
+CF1C;CF1C;110F 1167;CF1C;110F 1167;
+CF1D;CF1D;110F 1167 11A8;CF1D;110F 1167 11A8;
+CF1E;CF1E;110F 1167 11A9;CF1E;110F 1167 11A9;
+CF1F;CF1F;110F 1167 11AA;CF1F;110F 1167 11AA;
+CF20;CF20;110F 1167 11AB;CF20;110F 1167 11AB;
+CF21;CF21;110F 1167 11AC;CF21;110F 1167 11AC;
+CF22;CF22;110F 1167 11AD;CF22;110F 1167 11AD;
+CF23;CF23;110F 1167 11AE;CF23;110F 1167 11AE;
+CF24;CF24;110F 1167 11AF;CF24;110F 1167 11AF;
+CF25;CF25;110F 1167 11B0;CF25;110F 1167 11B0;
+CF26;CF26;110F 1167 11B1;CF26;110F 1167 11B1;
+CF27;CF27;110F 1167 11B2;CF27;110F 1167 11B2;
+CF28;CF28;110F 1167 11B3;CF28;110F 1167 11B3;
+CF29;CF29;110F 1167 11B4;CF29;110F 1167 11B4;
+CF2A;CF2A;110F 1167 11B5;CF2A;110F 1167 11B5;
+CF2B;CF2B;110F 1167 11B6;CF2B;110F 1167 11B6;
+CF2C;CF2C;110F 1167 11B7;CF2C;110F 1167 11B7;
+CF2D;CF2D;110F 1167 11B8;CF2D;110F 1167 11B8;
+CF2E;CF2E;110F 1167 11B9;CF2E;110F 1167 11B9;
+CF2F;CF2F;110F 1167 11BA;CF2F;110F 1167 11BA;
+CF30;CF30;110F 1167 11BB;CF30;110F 1167 11BB;
+CF31;CF31;110F 1167 11BC;CF31;110F 1167 11BC;
+CF32;CF32;110F 1167 11BD;CF32;110F 1167 11BD;
+CF33;CF33;110F 1167 11BE;CF33;110F 1167 11BE;
+CF34;CF34;110F 1167 11BF;CF34;110F 1167 11BF;
+CF35;CF35;110F 1167 11C0;CF35;110F 1167 11C0;
+CF36;CF36;110F 1167 11C1;CF36;110F 1167 11C1;
+CF37;CF37;110F 1167 11C2;CF37;110F 1167 11C2;
+CF38;CF38;110F 1168;CF38;110F 1168;
+CF39;CF39;110F 1168 11A8;CF39;110F 1168 11A8;
+CF3A;CF3A;110F 1168 11A9;CF3A;110F 1168 11A9;
+CF3B;CF3B;110F 1168 11AA;CF3B;110F 1168 11AA;
+CF3C;CF3C;110F 1168 11AB;CF3C;110F 1168 11AB;
+CF3D;CF3D;110F 1168 11AC;CF3D;110F 1168 11AC;
+CF3E;CF3E;110F 1168 11AD;CF3E;110F 1168 11AD;
+CF3F;CF3F;110F 1168 11AE;CF3F;110F 1168 11AE;
+CF40;CF40;110F 1168 11AF;CF40;110F 1168 11AF;
+CF41;CF41;110F 1168 11B0;CF41;110F 1168 11B0;
+CF42;CF42;110F 1168 11B1;CF42;110F 1168 11B1;
+CF43;CF43;110F 1168 11B2;CF43;110F 1168 11B2;
+CF44;CF44;110F 1168 11B3;CF44;110F 1168 11B3;
+CF45;CF45;110F 1168 11B4;CF45;110F 1168 11B4;
+CF46;CF46;110F 1168 11B5;CF46;110F 1168 11B5;
+CF47;CF47;110F 1168 11B6;CF47;110F 1168 11B6;
+CF48;CF48;110F 1168 11B7;CF48;110F 1168 11B7;
+CF49;CF49;110F 1168 11B8;CF49;110F 1168 11B8;
+CF4A;CF4A;110F 1168 11B9;CF4A;110F 1168 11B9;
+CF4B;CF4B;110F 1168 11BA;CF4B;110F 1168 11BA;
+CF4C;CF4C;110F 1168 11BB;CF4C;110F 1168 11BB;
+CF4D;CF4D;110F 1168 11BC;CF4D;110F 1168 11BC;
+CF4E;CF4E;110F 1168 11BD;CF4E;110F 1168 11BD;
+CF4F;CF4F;110F 1168 11BE;CF4F;110F 1168 11BE;
+CF50;CF50;110F 1168 11BF;CF50;110F 1168 11BF;
+CF51;CF51;110F 1168 11C0;CF51;110F 1168 11C0;
+CF52;CF52;110F 1168 11C1;CF52;110F 1168 11C1;
+CF53;CF53;110F 1168 11C2;CF53;110F 1168 11C2;
+CF54;CF54;110F 1169;CF54;110F 1169;
+CF55;CF55;110F 1169 11A8;CF55;110F 1169 11A8;
+CF56;CF56;110F 1169 11A9;CF56;110F 1169 11A9;
+CF57;CF57;110F 1169 11AA;CF57;110F 1169 11AA;
+CF58;CF58;110F 1169 11AB;CF58;110F 1169 11AB;
+CF59;CF59;110F 1169 11AC;CF59;110F 1169 11AC;
+CF5A;CF5A;110F 1169 11AD;CF5A;110F 1169 11AD;
+CF5B;CF5B;110F 1169 11AE;CF5B;110F 1169 11AE;
+CF5C;CF5C;110F 1169 11AF;CF5C;110F 1169 11AF;
+CF5D;CF5D;110F 1169 11B0;CF5D;110F 1169 11B0;
+CF5E;CF5E;110F 1169 11B1;CF5E;110F 1169 11B1;
+CF5F;CF5F;110F 1169 11B2;CF5F;110F 1169 11B2;
+CF60;CF60;110F 1169 11B3;CF60;110F 1169 11B3;
+CF61;CF61;110F 1169 11B4;CF61;110F 1169 11B4;
+CF62;CF62;110F 1169 11B5;CF62;110F 1169 11B5;
+CF63;CF63;110F 1169 11B6;CF63;110F 1169 11B6;
+CF64;CF64;110F 1169 11B7;CF64;110F 1169 11B7;
+CF65;CF65;110F 1169 11B8;CF65;110F 1169 11B8;
+CF66;CF66;110F 1169 11B9;CF66;110F 1169 11B9;
+CF67;CF67;110F 1169 11BA;CF67;110F 1169 11BA;
+CF68;CF68;110F 1169 11BB;CF68;110F 1169 11BB;
+CF69;CF69;110F 1169 11BC;CF69;110F 1169 11BC;
+CF6A;CF6A;110F 1169 11BD;CF6A;110F 1169 11BD;
+CF6B;CF6B;110F 1169 11BE;CF6B;110F 1169 11BE;
+CF6C;CF6C;110F 1169 11BF;CF6C;110F 1169 11BF;
+CF6D;CF6D;110F 1169 11C0;CF6D;110F 1169 11C0;
+CF6E;CF6E;110F 1169 11C1;CF6E;110F 1169 11C1;
+CF6F;CF6F;110F 1169 11C2;CF6F;110F 1169 11C2;
+CF70;CF70;110F 116A;CF70;110F 116A;
+CF71;CF71;110F 116A 11A8;CF71;110F 116A 11A8;
+CF72;CF72;110F 116A 11A9;CF72;110F 116A 11A9;
+CF73;CF73;110F 116A 11AA;CF73;110F 116A 11AA;
+CF74;CF74;110F 116A 11AB;CF74;110F 116A 11AB;
+CF75;CF75;110F 116A 11AC;CF75;110F 116A 11AC;
+CF76;CF76;110F 116A 11AD;CF76;110F 116A 11AD;
+CF77;CF77;110F 116A 11AE;CF77;110F 116A 11AE;
+CF78;CF78;110F 116A 11AF;CF78;110F 116A 11AF;
+CF79;CF79;110F 116A 11B0;CF79;110F 116A 11B0;
+CF7A;CF7A;110F 116A 11B1;CF7A;110F 116A 11B1;
+CF7B;CF7B;110F 116A 11B2;CF7B;110F 116A 11B2;
+CF7C;CF7C;110F 116A 11B3;CF7C;110F 116A 11B3;
+CF7D;CF7D;110F 116A 11B4;CF7D;110F 116A 11B4;
+CF7E;CF7E;110F 116A 11B5;CF7E;110F 116A 11B5;
+CF7F;CF7F;110F 116A 11B6;CF7F;110F 116A 11B6;
+CF80;CF80;110F 116A 11B7;CF80;110F 116A 11B7;
+CF81;CF81;110F 116A 11B8;CF81;110F 116A 11B8;
+CF82;CF82;110F 116A 11B9;CF82;110F 116A 11B9;
+CF83;CF83;110F 116A 11BA;CF83;110F 116A 11BA;
+CF84;CF84;110F 116A 11BB;CF84;110F 116A 11BB;
+CF85;CF85;110F 116A 11BC;CF85;110F 116A 11BC;
+CF86;CF86;110F 116A 11BD;CF86;110F 116A 11BD;
+CF87;CF87;110F 116A 11BE;CF87;110F 116A 11BE;
+CF88;CF88;110F 116A 11BF;CF88;110F 116A 11BF;
+CF89;CF89;110F 116A 11C0;CF89;110F 116A 11C0;
+CF8A;CF8A;110F 116A 11C1;CF8A;110F 116A 11C1;
+CF8B;CF8B;110F 116A 11C2;CF8B;110F 116A 11C2;
+CF8C;CF8C;110F 116B;CF8C;110F 116B;
+CF8D;CF8D;110F 116B 11A8;CF8D;110F 116B 11A8;
+CF8E;CF8E;110F 116B 11A9;CF8E;110F 116B 11A9;
+CF8F;CF8F;110F 116B 11AA;CF8F;110F 116B 11AA;
+CF90;CF90;110F 116B 11AB;CF90;110F 116B 11AB;
+CF91;CF91;110F 116B 11AC;CF91;110F 116B 11AC;
+CF92;CF92;110F 116B 11AD;CF92;110F 116B 11AD;
+CF93;CF93;110F 116B 11AE;CF93;110F 116B 11AE;
+CF94;CF94;110F 116B 11AF;CF94;110F 116B 11AF;
+CF95;CF95;110F 116B 11B0;CF95;110F 116B 11B0;
+CF96;CF96;110F 116B 11B1;CF96;110F 116B 11B1;
+CF97;CF97;110F 116B 11B2;CF97;110F 116B 11B2;
+CF98;CF98;110F 116B 11B3;CF98;110F 116B 11B3;
+CF99;CF99;110F 116B 11B4;CF99;110F 116B 11B4;
+CF9A;CF9A;110F 116B 11B5;CF9A;110F 116B 11B5;
+CF9B;CF9B;110F 116B 11B6;CF9B;110F 116B 11B6;
+CF9C;CF9C;110F 116B 11B7;CF9C;110F 116B 11B7;
+CF9D;CF9D;110F 116B 11B8;CF9D;110F 116B 11B8;
+CF9E;CF9E;110F 116B 11B9;CF9E;110F 116B 11B9;
+CF9F;CF9F;110F 116B 11BA;CF9F;110F 116B 11BA;
+CFA0;CFA0;110F 116B 11BB;CFA0;110F 116B 11BB;
+CFA1;CFA1;110F 116B 11BC;CFA1;110F 116B 11BC;
+CFA2;CFA2;110F 116B 11BD;CFA2;110F 116B 11BD;
+CFA3;CFA3;110F 116B 11BE;CFA3;110F 116B 11BE;
+CFA4;CFA4;110F 116B 11BF;CFA4;110F 116B 11BF;
+CFA5;CFA5;110F 116B 11C0;CFA5;110F 116B 11C0;
+CFA6;CFA6;110F 116B 11C1;CFA6;110F 116B 11C1;
+CFA7;CFA7;110F 116B 11C2;CFA7;110F 116B 11C2;
+CFA8;CFA8;110F 116C;CFA8;110F 116C;
+CFA9;CFA9;110F 116C 11A8;CFA9;110F 116C 11A8;
+CFAA;CFAA;110F 116C 11A9;CFAA;110F 116C 11A9;
+CFAB;CFAB;110F 116C 11AA;CFAB;110F 116C 11AA;
+CFAC;CFAC;110F 116C 11AB;CFAC;110F 116C 11AB;
+CFAD;CFAD;110F 116C 11AC;CFAD;110F 116C 11AC;
+CFAE;CFAE;110F 116C 11AD;CFAE;110F 116C 11AD;
+CFAF;CFAF;110F 116C 11AE;CFAF;110F 116C 11AE;
+CFB0;CFB0;110F 116C 11AF;CFB0;110F 116C 11AF;
+CFB1;CFB1;110F 116C 11B0;CFB1;110F 116C 11B0;
+CFB2;CFB2;110F 116C 11B1;CFB2;110F 116C 11B1;
+CFB3;CFB3;110F 116C 11B2;CFB3;110F 116C 11B2;
+CFB4;CFB4;110F 116C 11B3;CFB4;110F 116C 11B3;
+CFB5;CFB5;110F 116C 11B4;CFB5;110F 116C 11B4;
+CFB6;CFB6;110F 116C 11B5;CFB6;110F 116C 11B5;
+CFB7;CFB7;110F 116C 11B6;CFB7;110F 116C 11B6;
+CFB8;CFB8;110F 116C 11B7;CFB8;110F 116C 11B7;
+CFB9;CFB9;110F 116C 11B8;CFB9;110F 116C 11B8;
+CFBA;CFBA;110F 116C 11B9;CFBA;110F 116C 11B9;
+CFBB;CFBB;110F 116C 11BA;CFBB;110F 116C 11BA;
+CFBC;CFBC;110F 116C 11BB;CFBC;110F 116C 11BB;
+CFBD;CFBD;110F 116C 11BC;CFBD;110F 116C 11BC;
+CFBE;CFBE;110F 116C 11BD;CFBE;110F 116C 11BD;
+CFBF;CFBF;110F 116C 11BE;CFBF;110F 116C 11BE;
+CFC0;CFC0;110F 116C 11BF;CFC0;110F 116C 11BF;
+CFC1;CFC1;110F 116C 11C0;CFC1;110F 116C 11C0;
+CFC2;CFC2;110F 116C 11C1;CFC2;110F 116C 11C1;
+CFC3;CFC3;110F 116C 11C2;CFC3;110F 116C 11C2;
+CFC4;CFC4;110F 116D;CFC4;110F 116D;
+CFC5;CFC5;110F 116D 11A8;CFC5;110F 116D 11A8;
+CFC6;CFC6;110F 116D 11A9;CFC6;110F 116D 11A9;
+CFC7;CFC7;110F 116D 11AA;CFC7;110F 116D 11AA;
+CFC8;CFC8;110F 116D 11AB;CFC8;110F 116D 11AB;
+CFC9;CFC9;110F 116D 11AC;CFC9;110F 116D 11AC;
+CFCA;CFCA;110F 116D 11AD;CFCA;110F 116D 11AD;
+CFCB;CFCB;110F 116D 11AE;CFCB;110F 116D 11AE;
+CFCC;CFCC;110F 116D 11AF;CFCC;110F 116D 11AF;
+CFCD;CFCD;110F 116D 11B0;CFCD;110F 116D 11B0;
+CFCE;CFCE;110F 116D 11B1;CFCE;110F 116D 11B1;
+CFCF;CFCF;110F 116D 11B2;CFCF;110F 116D 11B2;
+CFD0;CFD0;110F 116D 11B3;CFD0;110F 116D 11B3;
+CFD1;CFD1;110F 116D 11B4;CFD1;110F 116D 11B4;
+CFD2;CFD2;110F 116D 11B5;CFD2;110F 116D 11B5;
+CFD3;CFD3;110F 116D 11B6;CFD3;110F 116D 11B6;
+CFD4;CFD4;110F 116D 11B7;CFD4;110F 116D 11B7;
+CFD5;CFD5;110F 116D 11B8;CFD5;110F 116D 11B8;
+CFD6;CFD6;110F 116D 11B9;CFD6;110F 116D 11B9;
+CFD7;CFD7;110F 116D 11BA;CFD7;110F 116D 11BA;
+CFD8;CFD8;110F 116D 11BB;CFD8;110F 116D 11BB;
+CFD9;CFD9;110F 116D 11BC;CFD9;110F 116D 11BC;
+CFDA;CFDA;110F 116D 11BD;CFDA;110F 116D 11BD;
+CFDB;CFDB;110F 116D 11BE;CFDB;110F 116D 11BE;
+CFDC;CFDC;110F 116D 11BF;CFDC;110F 116D 11BF;
+CFDD;CFDD;110F 116D 11C0;CFDD;110F 116D 11C0;
+CFDE;CFDE;110F 116D 11C1;CFDE;110F 116D 11C1;
+CFDF;CFDF;110F 116D 11C2;CFDF;110F 116D 11C2;
+CFE0;CFE0;110F 116E;CFE0;110F 116E;
+CFE1;CFE1;110F 116E 11A8;CFE1;110F 116E 11A8;
+CFE2;CFE2;110F 116E 11A9;CFE2;110F 116E 11A9;
+CFE3;CFE3;110F 116E 11AA;CFE3;110F 116E 11AA;
+CFE4;CFE4;110F 116E 11AB;CFE4;110F 116E 11AB;
+CFE5;CFE5;110F 116E 11AC;CFE5;110F 116E 11AC;
+CFE6;CFE6;110F 116E 11AD;CFE6;110F 116E 11AD;
+CFE7;CFE7;110F 116E 11AE;CFE7;110F 116E 11AE;
+CFE8;CFE8;110F 116E 11AF;CFE8;110F 116E 11AF;
+CFE9;CFE9;110F 116E 11B0;CFE9;110F 116E 11B0;
+CFEA;CFEA;110F 116E 11B1;CFEA;110F 116E 11B1;
+CFEB;CFEB;110F 116E 11B2;CFEB;110F 116E 11B2;
+CFEC;CFEC;110F 116E 11B3;CFEC;110F 116E 11B3;
+CFED;CFED;110F 116E 11B4;CFED;110F 116E 11B4;
+CFEE;CFEE;110F 116E 11B5;CFEE;110F 116E 11B5;
+CFEF;CFEF;110F 116E 11B6;CFEF;110F 116E 11B6;
+CFF0;CFF0;110F 116E 11B7;CFF0;110F 116E 11B7;
+CFF1;CFF1;110F 116E 11B8;CFF1;110F 116E 11B8;
+CFF2;CFF2;110F 116E 11B9;CFF2;110F 116E 11B9;
+CFF3;CFF3;110F 116E 11BA;CFF3;110F 116E 11BA;
+CFF4;CFF4;110F 116E 11BB;CFF4;110F 116E 11BB;
+CFF5;CFF5;110F 116E 11BC;CFF5;110F 116E 11BC;
+CFF6;CFF6;110F 116E 11BD;CFF6;110F 116E 11BD;
+CFF7;CFF7;110F 116E 11BE;CFF7;110F 116E 11BE;
+CFF8;CFF8;110F 116E 11BF;CFF8;110F 116E 11BF;
+CFF9;CFF9;110F 116E 11C0;CFF9;110F 116E 11C0;
+CFFA;CFFA;110F 116E 11C1;CFFA;110F 116E 11C1;
+CFFB;CFFB;110F 116E 11C2;CFFB;110F 116E 11C2;
+CFFC;CFFC;110F 116F;CFFC;110F 116F;
+CFFD;CFFD;110F 116F 11A8;CFFD;110F 116F 11A8;
+CFFE;CFFE;110F 116F 11A9;CFFE;110F 116F 11A9;
+CFFF;CFFF;110F 116F 11AA;CFFF;110F 116F 11AA;
+D000;D000;110F 116F 11AB;D000;110F 116F 11AB;
+D001;D001;110F 116F 11AC;D001;110F 116F 11AC;
+D002;D002;110F 116F 11AD;D002;110F 116F 11AD;
+D003;D003;110F 116F 11AE;D003;110F 116F 11AE;
+D004;D004;110F 116F 11AF;D004;110F 116F 11AF;
+D005;D005;110F 116F 11B0;D005;110F 116F 11B0;
+D006;D006;110F 116F 11B1;D006;110F 116F 11B1;
+D007;D007;110F 116F 11B2;D007;110F 116F 11B2;
+D008;D008;110F 116F 11B3;D008;110F 116F 11B3;
+D009;D009;110F 116F 11B4;D009;110F 116F 11B4;
+D00A;D00A;110F 116F 11B5;D00A;110F 116F 11B5;
+D00B;D00B;110F 116F 11B6;D00B;110F 116F 11B6;
+D00C;D00C;110F 116F 11B7;D00C;110F 116F 11B7;
+D00D;D00D;110F 116F 11B8;D00D;110F 116F 11B8;
+D00E;D00E;110F 116F 11B9;D00E;110F 116F 11B9;
+D00F;D00F;110F 116F 11BA;D00F;110F 116F 11BA;
+D010;D010;110F 116F 11BB;D010;110F 116F 11BB;
+D011;D011;110F 116F 11BC;D011;110F 116F 11BC;
+D012;D012;110F 116F 11BD;D012;110F 116F 11BD;
+D013;D013;110F 116F 11BE;D013;110F 116F 11BE;
+D014;D014;110F 116F 11BF;D014;110F 116F 11BF;
+D015;D015;110F 116F 11C0;D015;110F 116F 11C0;
+D016;D016;110F 116F 11C1;D016;110F 116F 11C1;
+D017;D017;110F 116F 11C2;D017;110F 116F 11C2;
+D018;D018;110F 1170;D018;110F 1170;
+D019;D019;110F 1170 11A8;D019;110F 1170 11A8;
+D01A;D01A;110F 1170 11A9;D01A;110F 1170 11A9;
+D01B;D01B;110F 1170 11AA;D01B;110F 1170 11AA;
+D01C;D01C;110F 1170 11AB;D01C;110F 1170 11AB;
+D01D;D01D;110F 1170 11AC;D01D;110F 1170 11AC;
+D01E;D01E;110F 1170 11AD;D01E;110F 1170 11AD;
+D01F;D01F;110F 1170 11AE;D01F;110F 1170 11AE;
+D020;D020;110F 1170 11AF;D020;110F 1170 11AF;
+D021;D021;110F 1170 11B0;D021;110F 1170 11B0;
+D022;D022;110F 1170 11B1;D022;110F 1170 11B1;
+D023;D023;110F 1170 11B2;D023;110F 1170 11B2;
+D024;D024;110F 1170 11B3;D024;110F 1170 11B3;
+D025;D025;110F 1170 11B4;D025;110F 1170 11B4;
+D026;D026;110F 1170 11B5;D026;110F 1170 11B5;
+D027;D027;110F 1170 11B6;D027;110F 1170 11B6;
+D028;D028;110F 1170 11B7;D028;110F 1170 11B7;
+D029;D029;110F 1170 11B8;D029;110F 1170 11B8;
+D02A;D02A;110F 1170 11B9;D02A;110F 1170 11B9;
+D02B;D02B;110F 1170 11BA;D02B;110F 1170 11BA;
+D02C;D02C;110F 1170 11BB;D02C;110F 1170 11BB;
+D02D;D02D;110F 1170 11BC;D02D;110F 1170 11BC;
+D02E;D02E;110F 1170 11BD;D02E;110F 1170 11BD;
+D02F;D02F;110F 1170 11BE;D02F;110F 1170 11BE;
+D030;D030;110F 1170 11BF;D030;110F 1170 11BF;
+D031;D031;110F 1170 11C0;D031;110F 1170 11C0;
+D032;D032;110F 1170 11C1;D032;110F 1170 11C1;
+D033;D033;110F 1170 11C2;D033;110F 1170 11C2;
+D034;D034;110F 1171;D034;110F 1171;
+D035;D035;110F 1171 11A8;D035;110F 1171 11A8;
+D036;D036;110F 1171 11A9;D036;110F 1171 11A9;
+D037;D037;110F 1171 11AA;D037;110F 1171 11AA;
+D038;D038;110F 1171 11AB;D038;110F 1171 11AB;
+D039;D039;110F 1171 11AC;D039;110F 1171 11AC;
+D03A;D03A;110F 1171 11AD;D03A;110F 1171 11AD;
+D03B;D03B;110F 1171 11AE;D03B;110F 1171 11AE;
+D03C;D03C;110F 1171 11AF;D03C;110F 1171 11AF;
+D03D;D03D;110F 1171 11B0;D03D;110F 1171 11B0;
+D03E;D03E;110F 1171 11B1;D03E;110F 1171 11B1;
+D03F;D03F;110F 1171 11B2;D03F;110F 1171 11B2;
+D040;D040;110F 1171 11B3;D040;110F 1171 11B3;
+D041;D041;110F 1171 11B4;D041;110F 1171 11B4;
+D042;D042;110F 1171 11B5;D042;110F 1171 11B5;
+D043;D043;110F 1171 11B6;D043;110F 1171 11B6;
+D044;D044;110F 1171 11B7;D044;110F 1171 11B7;
+D045;D045;110F 1171 11B8;D045;110F 1171 11B8;
+D046;D046;110F 1171 11B9;D046;110F 1171 11B9;
+D047;D047;110F 1171 11BA;D047;110F 1171 11BA;
+D048;D048;110F 1171 11BB;D048;110F 1171 11BB;
+D049;D049;110F 1171 11BC;D049;110F 1171 11BC;
+D04A;D04A;110F 1171 11BD;D04A;110F 1171 11BD;
+D04B;D04B;110F 1171 11BE;D04B;110F 1171 11BE;
+D04C;D04C;110F 1171 11BF;D04C;110F 1171 11BF;
+D04D;D04D;110F 1171 11C0;D04D;110F 1171 11C0;
+D04E;D04E;110F 1171 11C1;D04E;110F 1171 11C1;
+D04F;D04F;110F 1171 11C2;D04F;110F 1171 11C2;
+D050;D050;110F 1172;D050;110F 1172;
+D051;D051;110F 1172 11A8;D051;110F 1172 11A8;
+D052;D052;110F 1172 11A9;D052;110F 1172 11A9;
+D053;D053;110F 1172 11AA;D053;110F 1172 11AA;
+D054;D054;110F 1172 11AB;D054;110F 1172 11AB;
+D055;D055;110F 1172 11AC;D055;110F 1172 11AC;
+D056;D056;110F 1172 11AD;D056;110F 1172 11AD;
+D057;D057;110F 1172 11AE;D057;110F 1172 11AE;
+D058;D058;110F 1172 11AF;D058;110F 1172 11AF;
+D059;D059;110F 1172 11B0;D059;110F 1172 11B0;
+D05A;D05A;110F 1172 11B1;D05A;110F 1172 11B1;
+D05B;D05B;110F 1172 11B2;D05B;110F 1172 11B2;
+D05C;D05C;110F 1172 11B3;D05C;110F 1172 11B3;
+D05D;D05D;110F 1172 11B4;D05D;110F 1172 11B4;
+D05E;D05E;110F 1172 11B5;D05E;110F 1172 11B5;
+D05F;D05F;110F 1172 11B6;D05F;110F 1172 11B6;
+D060;D060;110F 1172 11B7;D060;110F 1172 11B7;
+D061;D061;110F 1172 11B8;D061;110F 1172 11B8;
+D062;D062;110F 1172 11B9;D062;110F 1172 11B9;
+D063;D063;110F 1172 11BA;D063;110F 1172 11BA;
+D064;D064;110F 1172 11BB;D064;110F 1172 11BB;
+D065;D065;110F 1172 11BC;D065;110F 1172 11BC;
+D066;D066;110F 1172 11BD;D066;110F 1172 11BD;
+D067;D067;110F 1172 11BE;D067;110F 1172 11BE;
+D068;D068;110F 1172 11BF;D068;110F 1172 11BF;
+D069;D069;110F 1172 11C0;D069;110F 1172 11C0;
+D06A;D06A;110F 1172 11C1;D06A;110F 1172 11C1;
+D06B;D06B;110F 1172 11C2;D06B;110F 1172 11C2;
+D06C;D06C;110F 1173;D06C;110F 1173;
+D06D;D06D;110F 1173 11A8;D06D;110F 1173 11A8;
+D06E;D06E;110F 1173 11A9;D06E;110F 1173 11A9;
+D06F;D06F;110F 1173 11AA;D06F;110F 1173 11AA;
+D070;D070;110F 1173 11AB;D070;110F 1173 11AB;
+D071;D071;110F 1173 11AC;D071;110F 1173 11AC;
+D072;D072;110F 1173 11AD;D072;110F 1173 11AD;
+D073;D073;110F 1173 11AE;D073;110F 1173 11AE;
+D074;D074;110F 1173 11AF;D074;110F 1173 11AF;
+D075;D075;110F 1173 11B0;D075;110F 1173 11B0;
+D076;D076;110F 1173 11B1;D076;110F 1173 11B1;
+D077;D077;110F 1173 11B2;D077;110F 1173 11B2;
+D078;D078;110F 1173 11B3;D078;110F 1173 11B3;
+D079;D079;110F 1173 11B4;D079;110F 1173 11B4;
+D07A;D07A;110F 1173 11B5;D07A;110F 1173 11B5;
+D07B;D07B;110F 1173 11B6;D07B;110F 1173 11B6;
+D07C;D07C;110F 1173 11B7;D07C;110F 1173 11B7;
+D07D;D07D;110F 1173 11B8;D07D;110F 1173 11B8;
+D07E;D07E;110F 1173 11B9;D07E;110F 1173 11B9;
+D07F;D07F;110F 1173 11BA;D07F;110F 1173 11BA;
+D080;D080;110F 1173 11BB;D080;110F 1173 11BB;
+D081;D081;110F 1173 11BC;D081;110F 1173 11BC;
+D082;D082;110F 1173 11BD;D082;110F 1173 11BD;
+D083;D083;110F 1173 11BE;D083;110F 1173 11BE;
+D084;D084;110F 1173 11BF;D084;110F 1173 11BF;
+D085;D085;110F 1173 11C0;D085;110F 1173 11C0;
+D086;D086;110F 1173 11C1;D086;110F 1173 11C1;
+D087;D087;110F 1173 11C2;D087;110F 1173 11C2;
+D088;D088;110F 1174;D088;110F 1174;
+D089;D089;110F 1174 11A8;D089;110F 1174 11A8;
+D08A;D08A;110F 1174 11A9;D08A;110F 1174 11A9;
+D08B;D08B;110F 1174 11AA;D08B;110F 1174 11AA;
+D08C;D08C;110F 1174 11AB;D08C;110F 1174 11AB;
+D08D;D08D;110F 1174 11AC;D08D;110F 1174 11AC;
+D08E;D08E;110F 1174 11AD;D08E;110F 1174 11AD;
+D08F;D08F;110F 1174 11AE;D08F;110F 1174 11AE;
+D090;D090;110F 1174 11AF;D090;110F 1174 11AF;
+D091;D091;110F 1174 11B0;D091;110F 1174 11B0;
+D092;D092;110F 1174 11B1;D092;110F 1174 11B1;
+D093;D093;110F 1174 11B2;D093;110F 1174 11B2;
+D094;D094;110F 1174 11B3;D094;110F 1174 11B3;
+D095;D095;110F 1174 11B4;D095;110F 1174 11B4;
+D096;D096;110F 1174 11B5;D096;110F 1174 11B5;
+D097;D097;110F 1174 11B6;D097;110F 1174 11B6;
+D098;D098;110F 1174 11B7;D098;110F 1174 11B7;
+D099;D099;110F 1174 11B8;D099;110F 1174 11B8;
+D09A;D09A;110F 1174 11B9;D09A;110F 1174 11B9;
+D09B;D09B;110F 1174 11BA;D09B;110F 1174 11BA;
+D09C;D09C;110F 1174 11BB;D09C;110F 1174 11BB;
+D09D;D09D;110F 1174 11BC;D09D;110F 1174 11BC;
+D09E;D09E;110F 1174 11BD;D09E;110F 1174 11BD;
+D09F;D09F;110F 1174 11BE;D09F;110F 1174 11BE;
+D0A0;D0A0;110F 1174 11BF;D0A0;110F 1174 11BF;
+D0A1;D0A1;110F 1174 11C0;D0A1;110F 1174 11C0;
+D0A2;D0A2;110F 1174 11C1;D0A2;110F 1174 11C1;
+D0A3;D0A3;110F 1174 11C2;D0A3;110F 1174 11C2;
+D0A4;D0A4;110F 1175;D0A4;110F 1175;
+D0A5;D0A5;110F 1175 11A8;D0A5;110F 1175 11A8;
+D0A6;D0A6;110F 1175 11A9;D0A6;110F 1175 11A9;
+D0A7;D0A7;110F 1175 11AA;D0A7;110F 1175 11AA;
+D0A8;D0A8;110F 1175 11AB;D0A8;110F 1175 11AB;
+D0A9;D0A9;110F 1175 11AC;D0A9;110F 1175 11AC;
+D0AA;D0AA;110F 1175 11AD;D0AA;110F 1175 11AD;
+D0AB;D0AB;110F 1175 11AE;D0AB;110F 1175 11AE;
+D0AC;D0AC;110F 1175 11AF;D0AC;110F 1175 11AF;
+D0AD;D0AD;110F 1175 11B0;D0AD;110F 1175 11B0;
+D0AE;D0AE;110F 1175 11B1;D0AE;110F 1175 11B1;
+D0AF;D0AF;110F 1175 11B2;D0AF;110F 1175 11B2;
+D0B0;D0B0;110F 1175 11B3;D0B0;110F 1175 11B3;
+D0B1;D0B1;110F 1175 11B4;D0B1;110F 1175 11B4;
+D0B2;D0B2;110F 1175 11B5;D0B2;110F 1175 11B5;
+D0B3;D0B3;110F 1175 11B6;D0B3;110F 1175 11B6;
+D0B4;D0B4;110F 1175 11B7;D0B4;110F 1175 11B7;
+D0B5;D0B5;110F 1175 11B8;D0B5;110F 1175 11B8;
+D0B6;D0B6;110F 1175 11B9;D0B6;110F 1175 11B9;
+D0B7;D0B7;110F 1175 11BA;D0B7;110F 1175 11BA;
+D0B8;D0B8;110F 1175 11BB;D0B8;110F 1175 11BB;
+D0B9;D0B9;110F 1175 11BC;D0B9;110F 1175 11BC;
+D0BA;D0BA;110F 1175 11BD;D0BA;110F 1175 11BD;
+D0BB;D0BB;110F 1175 11BE;D0BB;110F 1175 11BE;
+D0BC;D0BC;110F 1175 11BF;D0BC;110F 1175 11BF;
+D0BD;D0BD;110F 1175 11C0;D0BD;110F 1175 11C0;
+D0BE;D0BE;110F 1175 11C1;D0BE;110F 1175 11C1;
+D0BF;D0BF;110F 1175 11C2;D0BF;110F 1175 11C2;
+D0C0;D0C0;1110 1161;D0C0;1110 1161;
+D0C1;D0C1;1110 1161 11A8;D0C1;1110 1161 11A8;
+D0C2;D0C2;1110 1161 11A9;D0C2;1110 1161 11A9;
+D0C3;D0C3;1110 1161 11AA;D0C3;1110 1161 11AA;
+D0C4;D0C4;1110 1161 11AB;D0C4;1110 1161 11AB;
+D0C5;D0C5;1110 1161 11AC;D0C5;1110 1161 11AC;
+D0C6;D0C6;1110 1161 11AD;D0C6;1110 1161 11AD;
+D0C7;D0C7;1110 1161 11AE;D0C7;1110 1161 11AE;
+D0C8;D0C8;1110 1161 11AF;D0C8;1110 1161 11AF;
+D0C9;D0C9;1110 1161 11B0;D0C9;1110 1161 11B0;
+D0CA;D0CA;1110 1161 11B1;D0CA;1110 1161 11B1;
+D0CB;D0CB;1110 1161 11B2;D0CB;1110 1161 11B2;
+D0CC;D0CC;1110 1161 11B3;D0CC;1110 1161 11B3;
+D0CD;D0CD;1110 1161 11B4;D0CD;1110 1161 11B4;
+D0CE;D0CE;1110 1161 11B5;D0CE;1110 1161 11B5;
+D0CF;D0CF;1110 1161 11B6;D0CF;1110 1161 11B6;
+D0D0;D0D0;1110 1161 11B7;D0D0;1110 1161 11B7;
+D0D1;D0D1;1110 1161 11B8;D0D1;1110 1161 11B8;
+D0D2;D0D2;1110 1161 11B9;D0D2;1110 1161 11B9;
+D0D3;D0D3;1110 1161 11BA;D0D3;1110 1161 11BA;
+D0D4;D0D4;1110 1161 11BB;D0D4;1110 1161 11BB;
+D0D5;D0D5;1110 1161 11BC;D0D5;1110 1161 11BC;
+D0D6;D0D6;1110 1161 11BD;D0D6;1110 1161 11BD;
+D0D7;D0D7;1110 1161 11BE;D0D7;1110 1161 11BE;
+D0D8;D0D8;1110 1161 11BF;D0D8;1110 1161 11BF;
+D0D9;D0D9;1110 1161 11C0;D0D9;1110 1161 11C0;
+D0DA;D0DA;1110 1161 11C1;D0DA;1110 1161 11C1;
+D0DB;D0DB;1110 1161 11C2;D0DB;1110 1161 11C2;
+D0DC;D0DC;1110 1162;D0DC;1110 1162;
+D0DD;D0DD;1110 1162 11A8;D0DD;1110 1162 11A8;
+D0DE;D0DE;1110 1162 11A9;D0DE;1110 1162 11A9;
+D0DF;D0DF;1110 1162 11AA;D0DF;1110 1162 11AA;
+D0E0;D0E0;1110 1162 11AB;D0E0;1110 1162 11AB;
+D0E1;D0E1;1110 1162 11AC;D0E1;1110 1162 11AC;
+D0E2;D0E2;1110 1162 11AD;D0E2;1110 1162 11AD;
+D0E3;D0E3;1110 1162 11AE;D0E3;1110 1162 11AE;
+D0E4;D0E4;1110 1162 11AF;D0E4;1110 1162 11AF;
+D0E5;D0E5;1110 1162 11B0;D0E5;1110 1162 11B0;
+D0E6;D0E6;1110 1162 11B1;D0E6;1110 1162 11B1;
+D0E7;D0E7;1110 1162 11B2;D0E7;1110 1162 11B2;
+D0E8;D0E8;1110 1162 11B3;D0E8;1110 1162 11B3;
+D0E9;D0E9;1110 1162 11B4;D0E9;1110 1162 11B4;
+D0EA;D0EA;1110 1162 11B5;D0EA;1110 1162 11B5;
+D0EB;D0EB;1110 1162 11B6;D0EB;1110 1162 11B6;
+D0EC;D0EC;1110 1162 11B7;D0EC;1110 1162 11B7;
+D0ED;D0ED;1110 1162 11B8;D0ED;1110 1162 11B8;
+D0EE;D0EE;1110 1162 11B9;D0EE;1110 1162 11B9;
+D0EF;D0EF;1110 1162 11BA;D0EF;1110 1162 11BA;
+D0F0;D0F0;1110 1162 11BB;D0F0;1110 1162 11BB;
+D0F1;D0F1;1110 1162 11BC;D0F1;1110 1162 11BC;
+D0F2;D0F2;1110 1162 11BD;D0F2;1110 1162 11BD;
+D0F3;D0F3;1110 1162 11BE;D0F3;1110 1162 11BE;
+D0F4;D0F4;1110 1162 11BF;D0F4;1110 1162 11BF;
+D0F5;D0F5;1110 1162 11C0;D0F5;1110 1162 11C0;
+D0F6;D0F6;1110 1162 11C1;D0F6;1110 1162 11C1;
+D0F7;D0F7;1110 1162 11C2;D0F7;1110 1162 11C2;
+D0F8;D0F8;1110 1163;D0F8;1110 1163;
+D0F9;D0F9;1110 1163 11A8;D0F9;1110 1163 11A8;
+D0FA;D0FA;1110 1163 11A9;D0FA;1110 1163 11A9;
+D0FB;D0FB;1110 1163 11AA;D0FB;1110 1163 11AA;
+D0FC;D0FC;1110 1163 11AB;D0FC;1110 1163 11AB;
+D0FD;D0FD;1110 1163 11AC;D0FD;1110 1163 11AC;
+D0FE;D0FE;1110 1163 11AD;D0FE;1110 1163 11AD;
+D0FF;D0FF;1110 1163 11AE;D0FF;1110 1163 11AE;
+D100;D100;1110 1163 11AF;D100;1110 1163 11AF;
+D101;D101;1110 1163 11B0;D101;1110 1163 11B0;
+D102;D102;1110 1163 11B1;D102;1110 1163 11B1;
+D103;D103;1110 1163 11B2;D103;1110 1163 11B2;
+D104;D104;1110 1163 11B3;D104;1110 1163 11B3;
+D105;D105;1110 1163 11B4;D105;1110 1163 11B4;
+D106;D106;1110 1163 11B5;D106;1110 1163 11B5;
+D107;D107;1110 1163 11B6;D107;1110 1163 11B6;
+D108;D108;1110 1163 11B7;D108;1110 1163 11B7;
+D109;D109;1110 1163 11B8;D109;1110 1163 11B8;
+D10A;D10A;1110 1163 11B9;D10A;1110 1163 11B9;
+D10B;D10B;1110 1163 11BA;D10B;1110 1163 11BA;
+D10C;D10C;1110 1163 11BB;D10C;1110 1163 11BB;
+D10D;D10D;1110 1163 11BC;D10D;1110 1163 11BC;
+D10E;D10E;1110 1163 11BD;D10E;1110 1163 11BD;
+D10F;D10F;1110 1163 11BE;D10F;1110 1163 11BE;
+D110;D110;1110 1163 11BF;D110;1110 1163 11BF;
+D111;D111;1110 1163 11C0;D111;1110 1163 11C0;
+D112;D112;1110 1163 11C1;D112;1110 1163 11C1;
+D113;D113;1110 1163 11C2;D113;1110 1163 11C2;
+D114;D114;1110 1164;D114;1110 1164;
+D115;D115;1110 1164 11A8;D115;1110 1164 11A8;
+D116;D116;1110 1164 11A9;D116;1110 1164 11A9;
+D117;D117;1110 1164 11AA;D117;1110 1164 11AA;
+D118;D118;1110 1164 11AB;D118;1110 1164 11AB;
+D119;D119;1110 1164 11AC;D119;1110 1164 11AC;
+D11A;D11A;1110 1164 11AD;D11A;1110 1164 11AD;
+D11B;D11B;1110 1164 11AE;D11B;1110 1164 11AE;
+D11C;D11C;1110 1164 11AF;D11C;1110 1164 11AF;
+D11D;D11D;1110 1164 11B0;D11D;1110 1164 11B0;
+D11E;D11E;1110 1164 11B1;D11E;1110 1164 11B1;
+D11F;D11F;1110 1164 11B2;D11F;1110 1164 11B2;
+D120;D120;1110 1164 11B3;D120;1110 1164 11B3;
+D121;D121;1110 1164 11B4;D121;1110 1164 11B4;
+D122;D122;1110 1164 11B5;D122;1110 1164 11B5;
+D123;D123;1110 1164 11B6;D123;1110 1164 11B6;
+D124;D124;1110 1164 11B7;D124;1110 1164 11B7;
+D125;D125;1110 1164 11B8;D125;1110 1164 11B8;
+D126;D126;1110 1164 11B9;D126;1110 1164 11B9;
+D127;D127;1110 1164 11BA;D127;1110 1164 11BA;
+D128;D128;1110 1164 11BB;D128;1110 1164 11BB;
+D129;D129;1110 1164 11BC;D129;1110 1164 11BC;
+D12A;D12A;1110 1164 11BD;D12A;1110 1164 11BD;
+D12B;D12B;1110 1164 11BE;D12B;1110 1164 11BE;
+D12C;D12C;1110 1164 11BF;D12C;1110 1164 11BF;
+D12D;D12D;1110 1164 11C0;D12D;1110 1164 11C0;
+D12E;D12E;1110 1164 11C1;D12E;1110 1164 11C1;
+D12F;D12F;1110 1164 11C2;D12F;1110 1164 11C2;
+D130;D130;1110 1165;D130;1110 1165;
+D131;D131;1110 1165 11A8;D131;1110 1165 11A8;
+D132;D132;1110 1165 11A9;D132;1110 1165 11A9;
+D133;D133;1110 1165 11AA;D133;1110 1165 11AA;
+D134;D134;1110 1165 11AB;D134;1110 1165 11AB;
+D135;D135;1110 1165 11AC;D135;1110 1165 11AC;
+D136;D136;1110 1165 11AD;D136;1110 1165 11AD;
+D137;D137;1110 1165 11AE;D137;1110 1165 11AE;
+D138;D138;1110 1165 11AF;D138;1110 1165 11AF;
+D139;D139;1110 1165 11B0;D139;1110 1165 11B0;
+D13A;D13A;1110 1165 11B1;D13A;1110 1165 11B1;
+D13B;D13B;1110 1165 11B2;D13B;1110 1165 11B2;
+D13C;D13C;1110 1165 11B3;D13C;1110 1165 11B3;
+D13D;D13D;1110 1165 11B4;D13D;1110 1165 11B4;
+D13E;D13E;1110 1165 11B5;D13E;1110 1165 11B5;
+D13F;D13F;1110 1165 11B6;D13F;1110 1165 11B6;
+D140;D140;1110 1165 11B7;D140;1110 1165 11B7;
+D141;D141;1110 1165 11B8;D141;1110 1165 11B8;
+D142;D142;1110 1165 11B9;D142;1110 1165 11B9;
+D143;D143;1110 1165 11BA;D143;1110 1165 11BA;
+D144;D144;1110 1165 11BB;D144;1110 1165 11BB;
+D145;D145;1110 1165 11BC;D145;1110 1165 11BC;
+D146;D146;1110 1165 11BD;D146;1110 1165 11BD;
+D147;D147;1110 1165 11BE;D147;1110 1165 11BE;
+D148;D148;1110 1165 11BF;D148;1110 1165 11BF;
+D149;D149;1110 1165 11C0;D149;1110 1165 11C0;
+D14A;D14A;1110 1165 11C1;D14A;1110 1165 11C1;
+D14B;D14B;1110 1165 11C2;D14B;1110 1165 11C2;
+D14C;D14C;1110 1166;D14C;1110 1166;
+D14D;D14D;1110 1166 11A8;D14D;1110 1166 11A8;
+D14E;D14E;1110 1166 11A9;D14E;1110 1166 11A9;
+D14F;D14F;1110 1166 11AA;D14F;1110 1166 11AA;
+D150;D150;1110 1166 11AB;D150;1110 1166 11AB;
+D151;D151;1110 1166 11AC;D151;1110 1166 11AC;
+D152;D152;1110 1166 11AD;D152;1110 1166 11AD;
+D153;D153;1110 1166 11AE;D153;1110 1166 11AE;
+D154;D154;1110 1166 11AF;D154;1110 1166 11AF;
+D155;D155;1110 1166 11B0;D155;1110 1166 11B0;
+D156;D156;1110 1166 11B1;D156;1110 1166 11B1;
+D157;D157;1110 1166 11B2;D157;1110 1166 11B2;
+D158;D158;1110 1166 11B3;D158;1110 1166 11B3;
+D159;D159;1110 1166 11B4;D159;1110 1166 11B4;
+D15A;D15A;1110 1166 11B5;D15A;1110 1166 11B5;
+D15B;D15B;1110 1166 11B6;D15B;1110 1166 11B6;
+D15C;D15C;1110 1166 11B7;D15C;1110 1166 11B7;
+D15D;D15D;1110 1166 11B8;D15D;1110 1166 11B8;
+D15E;D15E;1110 1166 11B9;D15E;1110 1166 11B9;
+D15F;D15F;1110 1166 11BA;D15F;1110 1166 11BA;
+D160;D160;1110 1166 11BB;D160;1110 1166 11BB;
+D161;D161;1110 1166 11BC;D161;1110 1166 11BC;
+D162;D162;1110 1166 11BD;D162;1110 1166 11BD;
+D163;D163;1110 1166 11BE;D163;1110 1166 11BE;
+D164;D164;1110 1166 11BF;D164;1110 1166 11BF;
+D165;D165;1110 1166 11C0;D165;1110 1166 11C0;
+D166;D166;1110 1166 11C1;D166;1110 1166 11C1;
+D167;D167;1110 1166 11C2;D167;1110 1166 11C2;
+D168;D168;1110 1167;D168;1110 1167;
+D169;D169;1110 1167 11A8;D169;1110 1167 11A8;
+D16A;D16A;1110 1167 11A9;D16A;1110 1167 11A9;
+D16B;D16B;1110 1167 11AA;D16B;1110 1167 11AA;
+D16C;D16C;1110 1167 11AB;D16C;1110 1167 11AB;
+D16D;D16D;1110 1167 11AC;D16D;1110 1167 11AC;
+D16E;D16E;1110 1167 11AD;D16E;1110 1167 11AD;
+D16F;D16F;1110 1167 11AE;D16F;1110 1167 11AE;
+D170;D170;1110 1167 11AF;D170;1110 1167 11AF;
+D171;D171;1110 1167 11B0;D171;1110 1167 11B0;
+D172;D172;1110 1167 11B1;D172;1110 1167 11B1;
+D173;D173;1110 1167 11B2;D173;1110 1167 11B2;
+D174;D174;1110 1167 11B3;D174;1110 1167 11B3;
+D175;D175;1110 1167 11B4;D175;1110 1167 11B4;
+D176;D176;1110 1167 11B5;D176;1110 1167 11B5;
+D177;D177;1110 1167 11B6;D177;1110 1167 11B6;
+D178;D178;1110 1167 11B7;D178;1110 1167 11B7;
+D179;D179;1110 1167 11B8;D179;1110 1167 11B8;
+D17A;D17A;1110 1167 11B9;D17A;1110 1167 11B9;
+D17B;D17B;1110 1167 11BA;D17B;1110 1167 11BA;
+D17C;D17C;1110 1167 11BB;D17C;1110 1167 11BB;
+D17D;D17D;1110 1167 11BC;D17D;1110 1167 11BC;
+D17E;D17E;1110 1167 11BD;D17E;1110 1167 11BD;
+D17F;D17F;1110 1167 11BE;D17F;1110 1167 11BE;
+D180;D180;1110 1167 11BF;D180;1110 1167 11BF;
+D181;D181;1110 1167 11C0;D181;1110 1167 11C0;
+D182;D182;1110 1167 11C1;D182;1110 1167 11C1;
+D183;D183;1110 1167 11C2;D183;1110 1167 11C2;
+D184;D184;1110 1168;D184;1110 1168;
+D185;D185;1110 1168 11A8;D185;1110 1168 11A8;
+D186;D186;1110 1168 11A9;D186;1110 1168 11A9;
+D187;D187;1110 1168 11AA;D187;1110 1168 11AA;
+D188;D188;1110 1168 11AB;D188;1110 1168 11AB;
+D189;D189;1110 1168 11AC;D189;1110 1168 11AC;
+D18A;D18A;1110 1168 11AD;D18A;1110 1168 11AD;
+D18B;D18B;1110 1168 11AE;D18B;1110 1168 11AE;
+D18C;D18C;1110 1168 11AF;D18C;1110 1168 11AF;
+D18D;D18D;1110 1168 11B0;D18D;1110 1168 11B0;
+D18E;D18E;1110 1168 11B1;D18E;1110 1168 11B1;
+D18F;D18F;1110 1168 11B2;D18F;1110 1168 11B2;
+D190;D190;1110 1168 11B3;D190;1110 1168 11B3;
+D191;D191;1110 1168 11B4;D191;1110 1168 11B4;
+D192;D192;1110 1168 11B5;D192;1110 1168 11B5;
+D193;D193;1110 1168 11B6;D193;1110 1168 11B6;
+D194;D194;1110 1168 11B7;D194;1110 1168 11B7;
+D195;D195;1110 1168 11B8;D195;1110 1168 11B8;
+D196;D196;1110 1168 11B9;D196;1110 1168 11B9;
+D197;D197;1110 1168 11BA;D197;1110 1168 11BA;
+D198;D198;1110 1168 11BB;D198;1110 1168 11BB;
+D199;D199;1110 1168 11BC;D199;1110 1168 11BC;
+D19A;D19A;1110 1168 11BD;D19A;1110 1168 11BD;
+D19B;D19B;1110 1168 11BE;D19B;1110 1168 11BE;
+D19C;D19C;1110 1168 11BF;D19C;1110 1168 11BF;
+D19D;D19D;1110 1168 11C0;D19D;1110 1168 11C0;
+D19E;D19E;1110 1168 11C1;D19E;1110 1168 11C1;
+D19F;D19F;1110 1168 11C2;D19F;1110 1168 11C2;
+D1A0;D1A0;1110 1169;D1A0;1110 1169;
+D1A1;D1A1;1110 1169 11A8;D1A1;1110 1169 11A8;
+D1A2;D1A2;1110 1169 11A9;D1A2;1110 1169 11A9;
+D1A3;D1A3;1110 1169 11AA;D1A3;1110 1169 11AA;
+D1A4;D1A4;1110 1169 11AB;D1A4;1110 1169 11AB;
+D1A5;D1A5;1110 1169 11AC;D1A5;1110 1169 11AC;
+D1A6;D1A6;1110 1169 11AD;D1A6;1110 1169 11AD;
+D1A7;D1A7;1110 1169 11AE;D1A7;1110 1169 11AE;
+D1A8;D1A8;1110 1169 11AF;D1A8;1110 1169 11AF;
+D1A9;D1A9;1110 1169 11B0;D1A9;1110 1169 11B0;
+D1AA;D1AA;1110 1169 11B1;D1AA;1110 1169 11B1;
+D1AB;D1AB;1110 1169 11B2;D1AB;1110 1169 11B2;
+D1AC;D1AC;1110 1169 11B3;D1AC;1110 1169 11B3;
+D1AD;D1AD;1110 1169 11B4;D1AD;1110 1169 11B4;
+D1AE;D1AE;1110 1169 11B5;D1AE;1110 1169 11B5;
+D1AF;D1AF;1110 1169 11B6;D1AF;1110 1169 11B6;
+D1B0;D1B0;1110 1169 11B7;D1B0;1110 1169 11B7;
+D1B1;D1B1;1110 1169 11B8;D1B1;1110 1169 11B8;
+D1B2;D1B2;1110 1169 11B9;D1B2;1110 1169 11B9;
+D1B3;D1B3;1110 1169 11BA;D1B3;1110 1169 11BA;
+D1B4;D1B4;1110 1169 11BB;D1B4;1110 1169 11BB;
+D1B5;D1B5;1110 1169 11BC;D1B5;1110 1169 11BC;
+D1B6;D1B6;1110 1169 11BD;D1B6;1110 1169 11BD;
+D1B7;D1B7;1110 1169 11BE;D1B7;1110 1169 11BE;
+D1B8;D1B8;1110 1169 11BF;D1B8;1110 1169 11BF;
+D1B9;D1B9;1110 1169 11C0;D1B9;1110 1169 11C0;
+D1BA;D1BA;1110 1169 11C1;D1BA;1110 1169 11C1;
+D1BB;D1BB;1110 1169 11C2;D1BB;1110 1169 11C2;
+D1BC;D1BC;1110 116A;D1BC;1110 116A;
+D1BD;D1BD;1110 116A 11A8;D1BD;1110 116A 11A8;
+D1BE;D1BE;1110 116A 11A9;D1BE;1110 116A 11A9;
+D1BF;D1BF;1110 116A 11AA;D1BF;1110 116A 11AA;
+D1C0;D1C0;1110 116A 11AB;D1C0;1110 116A 11AB;
+D1C1;D1C1;1110 116A 11AC;D1C1;1110 116A 11AC;
+D1C2;D1C2;1110 116A 11AD;D1C2;1110 116A 11AD;
+D1C3;D1C3;1110 116A 11AE;D1C3;1110 116A 11AE;
+D1C4;D1C4;1110 116A 11AF;D1C4;1110 116A 11AF;
+D1C5;D1C5;1110 116A 11B0;D1C5;1110 116A 11B0;
+D1C6;D1C6;1110 116A 11B1;D1C6;1110 116A 11B1;
+D1C7;D1C7;1110 116A 11B2;D1C7;1110 116A 11B2;
+D1C8;D1C8;1110 116A 11B3;D1C8;1110 116A 11B3;
+D1C9;D1C9;1110 116A 11B4;D1C9;1110 116A 11B4;
+D1CA;D1CA;1110 116A 11B5;D1CA;1110 116A 11B5;
+D1CB;D1CB;1110 116A 11B6;D1CB;1110 116A 11B6;
+D1CC;D1CC;1110 116A 11B7;D1CC;1110 116A 11B7;
+D1CD;D1CD;1110 116A 11B8;D1CD;1110 116A 11B8;
+D1CE;D1CE;1110 116A 11B9;D1CE;1110 116A 11B9;
+D1CF;D1CF;1110 116A 11BA;D1CF;1110 116A 11BA;
+D1D0;D1D0;1110 116A 11BB;D1D0;1110 116A 11BB;
+D1D1;D1D1;1110 116A 11BC;D1D1;1110 116A 11BC;
+D1D2;D1D2;1110 116A 11BD;D1D2;1110 116A 11BD;
+D1D3;D1D3;1110 116A 11BE;D1D3;1110 116A 11BE;
+D1D4;D1D4;1110 116A 11BF;D1D4;1110 116A 11BF;
+D1D5;D1D5;1110 116A 11C0;D1D5;1110 116A 11C0;
+D1D6;D1D6;1110 116A 11C1;D1D6;1110 116A 11C1;
+D1D7;D1D7;1110 116A 11C2;D1D7;1110 116A 11C2;
+D1D8;D1D8;1110 116B;D1D8;1110 116B;
+D1D9;D1D9;1110 116B 11A8;D1D9;1110 116B 11A8;
+D1DA;D1DA;1110 116B 11A9;D1DA;1110 116B 11A9;
+D1DB;D1DB;1110 116B 11AA;D1DB;1110 116B 11AA;
+D1DC;D1DC;1110 116B 11AB;D1DC;1110 116B 11AB;
+D1DD;D1DD;1110 116B 11AC;D1DD;1110 116B 11AC;
+D1DE;D1DE;1110 116B 11AD;D1DE;1110 116B 11AD;
+D1DF;D1DF;1110 116B 11AE;D1DF;1110 116B 11AE;
+D1E0;D1E0;1110 116B 11AF;D1E0;1110 116B 11AF;
+D1E1;D1E1;1110 116B 11B0;D1E1;1110 116B 11B0;
+D1E2;D1E2;1110 116B 11B1;D1E2;1110 116B 11B1;
+D1E3;D1E3;1110 116B 11B2;D1E3;1110 116B 11B2;
+D1E4;D1E4;1110 116B 11B3;D1E4;1110 116B 11B3;
+D1E5;D1E5;1110 116B 11B4;D1E5;1110 116B 11B4;
+D1E6;D1E6;1110 116B 11B5;D1E6;1110 116B 11B5;
+D1E7;D1E7;1110 116B 11B6;D1E7;1110 116B 11B6;
+D1E8;D1E8;1110 116B 11B7;D1E8;1110 116B 11B7;
+D1E9;D1E9;1110 116B 11B8;D1E9;1110 116B 11B8;
+D1EA;D1EA;1110 116B 11B9;D1EA;1110 116B 11B9;
+D1EB;D1EB;1110 116B 11BA;D1EB;1110 116B 11BA;
+D1EC;D1EC;1110 116B 11BB;D1EC;1110 116B 11BB;
+D1ED;D1ED;1110 116B 11BC;D1ED;1110 116B 11BC;
+D1EE;D1EE;1110 116B 11BD;D1EE;1110 116B 11BD;
+D1EF;D1EF;1110 116B 11BE;D1EF;1110 116B 11BE;
+D1F0;D1F0;1110 116B 11BF;D1F0;1110 116B 11BF;
+D1F1;D1F1;1110 116B 11C0;D1F1;1110 116B 11C0;
+D1F2;D1F2;1110 116B 11C1;D1F2;1110 116B 11C1;
+D1F3;D1F3;1110 116B 11C2;D1F3;1110 116B 11C2;
+D1F4;D1F4;1110 116C;D1F4;1110 116C;
+D1F5;D1F5;1110 116C 11A8;D1F5;1110 116C 11A8;
+D1F6;D1F6;1110 116C 11A9;D1F6;1110 116C 11A9;
+D1F7;D1F7;1110 116C 11AA;D1F7;1110 116C 11AA;
+D1F8;D1F8;1110 116C 11AB;D1F8;1110 116C 11AB;
+D1F9;D1F9;1110 116C 11AC;D1F9;1110 116C 11AC;
+D1FA;D1FA;1110 116C 11AD;D1FA;1110 116C 11AD;
+D1FB;D1FB;1110 116C 11AE;D1FB;1110 116C 11AE;
+D1FC;D1FC;1110 116C 11AF;D1FC;1110 116C 11AF;
+D1FD;D1FD;1110 116C 11B0;D1FD;1110 116C 11B0;
+D1FE;D1FE;1110 116C 11B1;D1FE;1110 116C 11B1;
+D1FF;D1FF;1110 116C 11B2;D1FF;1110 116C 11B2;
+D200;D200;1110 116C 11B3;D200;1110 116C 11B3;
+D201;D201;1110 116C 11B4;D201;1110 116C 11B4;
+D202;D202;1110 116C 11B5;D202;1110 116C 11B5;
+D203;D203;1110 116C 11B6;D203;1110 116C 11B6;
+D204;D204;1110 116C 11B7;D204;1110 116C 11B7;
+D205;D205;1110 116C 11B8;D205;1110 116C 11B8;
+D206;D206;1110 116C 11B9;D206;1110 116C 11B9;
+D207;D207;1110 116C 11BA;D207;1110 116C 11BA;
+D208;D208;1110 116C 11BB;D208;1110 116C 11BB;
+D209;D209;1110 116C 11BC;D209;1110 116C 11BC;
+D20A;D20A;1110 116C 11BD;D20A;1110 116C 11BD;
+D20B;D20B;1110 116C 11BE;D20B;1110 116C 11BE;
+D20C;D20C;1110 116C 11BF;D20C;1110 116C 11BF;
+D20D;D20D;1110 116C 11C0;D20D;1110 116C 11C0;
+D20E;D20E;1110 116C 11C1;D20E;1110 116C 11C1;
+D20F;D20F;1110 116C 11C2;D20F;1110 116C 11C2;
+D210;D210;1110 116D;D210;1110 116D;
+D211;D211;1110 116D 11A8;D211;1110 116D 11A8;
+D212;D212;1110 116D 11A9;D212;1110 116D 11A9;
+D213;D213;1110 116D 11AA;D213;1110 116D 11AA;
+D214;D214;1110 116D 11AB;D214;1110 116D 11AB;
+D215;D215;1110 116D 11AC;D215;1110 116D 11AC;
+D216;D216;1110 116D 11AD;D216;1110 116D 11AD;
+D217;D217;1110 116D 11AE;D217;1110 116D 11AE;
+D218;D218;1110 116D 11AF;D218;1110 116D 11AF;
+D219;D219;1110 116D 11B0;D219;1110 116D 11B0;
+D21A;D21A;1110 116D 11B1;D21A;1110 116D 11B1;
+D21B;D21B;1110 116D 11B2;D21B;1110 116D 11B2;
+D21C;D21C;1110 116D 11B3;D21C;1110 116D 11B3;
+D21D;D21D;1110 116D 11B4;D21D;1110 116D 11B4;
+D21E;D21E;1110 116D 11B5;D21E;1110 116D 11B5;
+D21F;D21F;1110 116D 11B6;D21F;1110 116D 11B6;
+D220;D220;1110 116D 11B7;D220;1110 116D 11B7;
+D221;D221;1110 116D 11B8;D221;1110 116D 11B8;
+D222;D222;1110 116D 11B9;D222;1110 116D 11B9;
+D223;D223;1110 116D 11BA;D223;1110 116D 11BA;
+D224;D224;1110 116D 11BB;D224;1110 116D 11BB;
+D225;D225;1110 116D 11BC;D225;1110 116D 11BC;
+D226;D226;1110 116D 11BD;D226;1110 116D 11BD;
+D227;D227;1110 116D 11BE;D227;1110 116D 11BE;
+D228;D228;1110 116D 11BF;D228;1110 116D 11BF;
+D229;D229;1110 116D 11C0;D229;1110 116D 11C0;
+D22A;D22A;1110 116D 11C1;D22A;1110 116D 11C1;
+D22B;D22B;1110 116D 11C2;D22B;1110 116D 11C2;
+D22C;D22C;1110 116E;D22C;1110 116E;
+D22D;D22D;1110 116E 11A8;D22D;1110 116E 11A8;
+D22E;D22E;1110 116E 11A9;D22E;1110 116E 11A9;
+D22F;D22F;1110 116E 11AA;D22F;1110 116E 11AA;
+D230;D230;1110 116E 11AB;D230;1110 116E 11AB;
+D231;D231;1110 116E 11AC;D231;1110 116E 11AC;
+D232;D232;1110 116E 11AD;D232;1110 116E 11AD;
+D233;D233;1110 116E 11AE;D233;1110 116E 11AE;
+D234;D234;1110 116E 11AF;D234;1110 116E 11AF;
+D235;D235;1110 116E 11B0;D235;1110 116E 11B0;
+D236;D236;1110 116E 11B1;D236;1110 116E 11B1;
+D237;D237;1110 116E 11B2;D237;1110 116E 11B2;
+D238;D238;1110 116E 11B3;D238;1110 116E 11B3;
+D239;D239;1110 116E 11B4;D239;1110 116E 11B4;
+D23A;D23A;1110 116E 11B5;D23A;1110 116E 11B5;
+D23B;D23B;1110 116E 11B6;D23B;1110 116E 11B6;
+D23C;D23C;1110 116E 11B7;D23C;1110 116E 11B7;
+D23D;D23D;1110 116E 11B8;D23D;1110 116E 11B8;
+D23E;D23E;1110 116E 11B9;D23E;1110 116E 11B9;
+D23F;D23F;1110 116E 11BA;D23F;1110 116E 11BA;
+D240;D240;1110 116E 11BB;D240;1110 116E 11BB;
+D241;D241;1110 116E 11BC;D241;1110 116E 11BC;
+D242;D242;1110 116E 11BD;D242;1110 116E 11BD;
+D243;D243;1110 116E 11BE;D243;1110 116E 11BE;
+D244;D244;1110 116E 11BF;D244;1110 116E 11BF;
+D245;D245;1110 116E 11C0;D245;1110 116E 11C0;
+D246;D246;1110 116E 11C1;D246;1110 116E 11C1;
+D247;D247;1110 116E 11C2;D247;1110 116E 11C2;
+D248;D248;1110 116F;D248;1110 116F;
+D249;D249;1110 116F 11A8;D249;1110 116F 11A8;
+D24A;D24A;1110 116F 11A9;D24A;1110 116F 11A9;
+D24B;D24B;1110 116F 11AA;D24B;1110 116F 11AA;
+D24C;D24C;1110 116F 11AB;D24C;1110 116F 11AB;
+D24D;D24D;1110 116F 11AC;D24D;1110 116F 11AC;
+D24E;D24E;1110 116F 11AD;D24E;1110 116F 11AD;
+D24F;D24F;1110 116F 11AE;D24F;1110 116F 11AE;
+D250;D250;1110 116F 11AF;D250;1110 116F 11AF;
+D251;D251;1110 116F 11B0;D251;1110 116F 11B0;
+D252;D252;1110 116F 11B1;D252;1110 116F 11B1;
+D253;D253;1110 116F 11B2;D253;1110 116F 11B2;
+D254;D254;1110 116F 11B3;D254;1110 116F 11B3;
+D255;D255;1110 116F 11B4;D255;1110 116F 11B4;
+D256;D256;1110 116F 11B5;D256;1110 116F 11B5;
+D257;D257;1110 116F 11B6;D257;1110 116F 11B6;
+D258;D258;1110 116F 11B7;D258;1110 116F 11B7;
+D259;D259;1110 116F 11B8;D259;1110 116F 11B8;
+D25A;D25A;1110 116F 11B9;D25A;1110 116F 11B9;
+D25B;D25B;1110 116F 11BA;D25B;1110 116F 11BA;
+D25C;D25C;1110 116F 11BB;D25C;1110 116F 11BB;
+D25D;D25D;1110 116F 11BC;D25D;1110 116F 11BC;
+D25E;D25E;1110 116F 11BD;D25E;1110 116F 11BD;
+D25F;D25F;1110 116F 11BE;D25F;1110 116F 11BE;
+D260;D260;1110 116F 11BF;D260;1110 116F 11BF;
+D261;D261;1110 116F 11C0;D261;1110 116F 11C0;
+D262;D262;1110 116F 11C1;D262;1110 116F 11C1;
+D263;D263;1110 116F 11C2;D263;1110 116F 11C2;
+D264;D264;1110 1170;D264;1110 1170;
+D265;D265;1110 1170 11A8;D265;1110 1170 11A8;
+D266;D266;1110 1170 11A9;D266;1110 1170 11A9;
+D267;D267;1110 1170 11AA;D267;1110 1170 11AA;
+D268;D268;1110 1170 11AB;D268;1110 1170 11AB;
+D269;D269;1110 1170 11AC;D269;1110 1170 11AC;
+D26A;D26A;1110 1170 11AD;D26A;1110 1170 11AD;
+D26B;D26B;1110 1170 11AE;D26B;1110 1170 11AE;
+D26C;D26C;1110 1170 11AF;D26C;1110 1170 11AF;
+D26D;D26D;1110 1170 11B0;D26D;1110 1170 11B0;
+D26E;D26E;1110 1170 11B1;D26E;1110 1170 11B1;
+D26F;D26F;1110 1170 11B2;D26F;1110 1170 11B2;
+D270;D270;1110 1170 11B3;D270;1110 1170 11B3;
+D271;D271;1110 1170 11B4;D271;1110 1170 11B4;
+D272;D272;1110 1170 11B5;D272;1110 1170 11B5;
+D273;D273;1110 1170 11B6;D273;1110 1170 11B6;
+D274;D274;1110 1170 11B7;D274;1110 1170 11B7;
+D275;D275;1110 1170 11B8;D275;1110 1170 11B8;
+D276;D276;1110 1170 11B9;D276;1110 1170 11B9;
+D277;D277;1110 1170 11BA;D277;1110 1170 11BA;
+D278;D278;1110 1170 11BB;D278;1110 1170 11BB;
+D279;D279;1110 1170 11BC;D279;1110 1170 11BC;
+D27A;D27A;1110 1170 11BD;D27A;1110 1170 11BD;
+D27B;D27B;1110 1170 11BE;D27B;1110 1170 11BE;
+D27C;D27C;1110 1170 11BF;D27C;1110 1170 11BF;
+D27D;D27D;1110 1170 11C0;D27D;1110 1170 11C0;
+D27E;D27E;1110 1170 11C1;D27E;1110 1170 11C1;
+D27F;D27F;1110 1170 11C2;D27F;1110 1170 11C2;
+D280;D280;1110 1171;D280;1110 1171;
+D281;D281;1110 1171 11A8;D281;1110 1171 11A8;
+D282;D282;1110 1171 11A9;D282;1110 1171 11A9;
+D283;D283;1110 1171 11AA;D283;1110 1171 11AA;
+D284;D284;1110 1171 11AB;D284;1110 1171 11AB;
+D285;D285;1110 1171 11AC;D285;1110 1171 11AC;
+D286;D286;1110 1171 11AD;D286;1110 1171 11AD;
+D287;D287;1110 1171 11AE;D287;1110 1171 11AE;
+D288;D288;1110 1171 11AF;D288;1110 1171 11AF;
+D289;D289;1110 1171 11B0;D289;1110 1171 11B0;
+D28A;D28A;1110 1171 11B1;D28A;1110 1171 11B1;
+D28B;D28B;1110 1171 11B2;D28B;1110 1171 11B2;
+D28C;D28C;1110 1171 11B3;D28C;1110 1171 11B3;
+D28D;D28D;1110 1171 11B4;D28D;1110 1171 11B4;
+D28E;D28E;1110 1171 11B5;D28E;1110 1171 11B5;
+D28F;D28F;1110 1171 11B6;D28F;1110 1171 11B6;
+D290;D290;1110 1171 11B7;D290;1110 1171 11B7;
+D291;D291;1110 1171 11B8;D291;1110 1171 11B8;
+D292;D292;1110 1171 11B9;D292;1110 1171 11B9;
+D293;D293;1110 1171 11BA;D293;1110 1171 11BA;
+D294;D294;1110 1171 11BB;D294;1110 1171 11BB;
+D295;D295;1110 1171 11BC;D295;1110 1171 11BC;
+D296;D296;1110 1171 11BD;D296;1110 1171 11BD;
+D297;D297;1110 1171 11BE;D297;1110 1171 11BE;
+D298;D298;1110 1171 11BF;D298;1110 1171 11BF;
+D299;D299;1110 1171 11C0;D299;1110 1171 11C0;
+D29A;D29A;1110 1171 11C1;D29A;1110 1171 11C1;
+D29B;D29B;1110 1171 11C2;D29B;1110 1171 11C2;
+D29C;D29C;1110 1172;D29C;1110 1172;
+D29D;D29D;1110 1172 11A8;D29D;1110 1172 11A8;
+D29E;D29E;1110 1172 11A9;D29E;1110 1172 11A9;
+D29F;D29F;1110 1172 11AA;D29F;1110 1172 11AA;
+D2A0;D2A0;1110 1172 11AB;D2A0;1110 1172 11AB;
+D2A1;D2A1;1110 1172 11AC;D2A1;1110 1172 11AC;
+D2A2;D2A2;1110 1172 11AD;D2A2;1110 1172 11AD;
+D2A3;D2A3;1110 1172 11AE;D2A3;1110 1172 11AE;
+D2A4;D2A4;1110 1172 11AF;D2A4;1110 1172 11AF;
+D2A5;D2A5;1110 1172 11B0;D2A5;1110 1172 11B0;
+D2A6;D2A6;1110 1172 11B1;D2A6;1110 1172 11B1;
+D2A7;D2A7;1110 1172 11B2;D2A7;1110 1172 11B2;
+D2A8;D2A8;1110 1172 11B3;D2A8;1110 1172 11B3;
+D2A9;D2A9;1110 1172 11B4;D2A9;1110 1172 11B4;
+D2AA;D2AA;1110 1172 11B5;D2AA;1110 1172 11B5;
+D2AB;D2AB;1110 1172 11B6;D2AB;1110 1172 11B6;
+D2AC;D2AC;1110 1172 11B7;D2AC;1110 1172 11B7;
+D2AD;D2AD;1110 1172 11B8;D2AD;1110 1172 11B8;
+D2AE;D2AE;1110 1172 11B9;D2AE;1110 1172 11B9;
+D2AF;D2AF;1110 1172 11BA;D2AF;1110 1172 11BA;
+D2B0;D2B0;1110 1172 11BB;D2B0;1110 1172 11BB;
+D2B1;D2B1;1110 1172 11BC;D2B1;1110 1172 11BC;
+D2B2;D2B2;1110 1172 11BD;D2B2;1110 1172 11BD;
+D2B3;D2B3;1110 1172 11BE;D2B3;1110 1172 11BE;
+D2B4;D2B4;1110 1172 11BF;D2B4;1110 1172 11BF;
+D2B5;D2B5;1110 1172 11C0;D2B5;1110 1172 11C0;
+D2B6;D2B6;1110 1172 11C1;D2B6;1110 1172 11C1;
+D2B7;D2B7;1110 1172 11C2;D2B7;1110 1172 11C2;
+D2B8;D2B8;1110 1173;D2B8;1110 1173;
+D2B9;D2B9;1110 1173 11A8;D2B9;1110 1173 11A8;
+D2BA;D2BA;1110 1173 11A9;D2BA;1110 1173 11A9;
+D2BB;D2BB;1110 1173 11AA;D2BB;1110 1173 11AA;
+D2BC;D2BC;1110 1173 11AB;D2BC;1110 1173 11AB;
+D2BD;D2BD;1110 1173 11AC;D2BD;1110 1173 11AC;
+D2BE;D2BE;1110 1173 11AD;D2BE;1110 1173 11AD;
+D2BF;D2BF;1110 1173 11AE;D2BF;1110 1173 11AE;
+D2C0;D2C0;1110 1173 11AF;D2C0;1110 1173 11AF;
+D2C1;D2C1;1110 1173 11B0;D2C1;1110 1173 11B0;
+D2C2;D2C2;1110 1173 11B1;D2C2;1110 1173 11B1;
+D2C3;D2C3;1110 1173 11B2;D2C3;1110 1173 11B2;
+D2C4;D2C4;1110 1173 11B3;D2C4;1110 1173 11B3;
+D2C5;D2C5;1110 1173 11B4;D2C5;1110 1173 11B4;
+D2C6;D2C6;1110 1173 11B5;D2C6;1110 1173 11B5;
+D2C7;D2C7;1110 1173 11B6;D2C7;1110 1173 11B6;
+D2C8;D2C8;1110 1173 11B7;D2C8;1110 1173 11B7;
+D2C9;D2C9;1110 1173 11B8;D2C9;1110 1173 11B8;
+D2CA;D2CA;1110 1173 11B9;D2CA;1110 1173 11B9;
+D2CB;D2CB;1110 1173 11BA;D2CB;1110 1173 11BA;
+D2CC;D2CC;1110 1173 11BB;D2CC;1110 1173 11BB;
+D2CD;D2CD;1110 1173 11BC;D2CD;1110 1173 11BC;
+D2CE;D2CE;1110 1173 11BD;D2CE;1110 1173 11BD;
+D2CF;D2CF;1110 1173 11BE;D2CF;1110 1173 11BE;
+D2D0;D2D0;1110 1173 11BF;D2D0;1110 1173 11BF;
+D2D1;D2D1;1110 1173 11C0;D2D1;1110 1173 11C0;
+D2D2;D2D2;1110 1173 11C1;D2D2;1110 1173 11C1;
+D2D3;D2D3;1110 1173 11C2;D2D3;1110 1173 11C2;
+D2D4;D2D4;1110 1174;D2D4;1110 1174;
+D2D5;D2D5;1110 1174 11A8;D2D5;1110 1174 11A8;
+D2D6;D2D6;1110 1174 11A9;D2D6;1110 1174 11A9;
+D2D7;D2D7;1110 1174 11AA;D2D7;1110 1174 11AA;
+D2D8;D2D8;1110 1174 11AB;D2D8;1110 1174 11AB;
+D2D9;D2D9;1110 1174 11AC;D2D9;1110 1174 11AC;
+D2DA;D2DA;1110 1174 11AD;D2DA;1110 1174 11AD;
+D2DB;D2DB;1110 1174 11AE;D2DB;1110 1174 11AE;
+D2DC;D2DC;1110 1174 11AF;D2DC;1110 1174 11AF;
+D2DD;D2DD;1110 1174 11B0;D2DD;1110 1174 11B0;
+D2DE;D2DE;1110 1174 11B1;D2DE;1110 1174 11B1;
+D2DF;D2DF;1110 1174 11B2;D2DF;1110 1174 11B2;
+D2E0;D2E0;1110 1174 11B3;D2E0;1110 1174 11B3;
+D2E1;D2E1;1110 1174 11B4;D2E1;1110 1174 11B4;
+D2E2;D2E2;1110 1174 11B5;D2E2;1110 1174 11B5;
+D2E3;D2E3;1110 1174 11B6;D2E3;1110 1174 11B6;
+D2E4;D2E4;1110 1174 11B7;D2E4;1110 1174 11B7;
+D2E5;D2E5;1110 1174 11B8;D2E5;1110 1174 11B8;
+D2E6;D2E6;1110 1174 11B9;D2E6;1110 1174 11B9;
+D2E7;D2E7;1110 1174 11BA;D2E7;1110 1174 11BA;
+D2E8;D2E8;1110 1174 11BB;D2E8;1110 1174 11BB;
+D2E9;D2E9;1110 1174 11BC;D2E9;1110 1174 11BC;
+D2EA;D2EA;1110 1174 11BD;D2EA;1110 1174 11BD;
+D2EB;D2EB;1110 1174 11BE;D2EB;1110 1174 11BE;
+D2EC;D2EC;1110 1174 11BF;D2EC;1110 1174 11BF;
+D2ED;D2ED;1110 1174 11C0;D2ED;1110 1174 11C0;
+D2EE;D2EE;1110 1174 11C1;D2EE;1110 1174 11C1;
+D2EF;D2EF;1110 1174 11C2;D2EF;1110 1174 11C2;
+D2F0;D2F0;1110 1175;D2F0;1110 1175;
+D2F1;D2F1;1110 1175 11A8;D2F1;1110 1175 11A8;
+D2F2;D2F2;1110 1175 11A9;D2F2;1110 1175 11A9;
+D2F3;D2F3;1110 1175 11AA;D2F3;1110 1175 11AA;
+D2F4;D2F4;1110 1175 11AB;D2F4;1110 1175 11AB;
+D2F5;D2F5;1110 1175 11AC;D2F5;1110 1175 11AC;
+D2F6;D2F6;1110 1175 11AD;D2F6;1110 1175 11AD;
+D2F7;D2F7;1110 1175 11AE;D2F7;1110 1175 11AE;
+D2F8;D2F8;1110 1175 11AF;D2F8;1110 1175 11AF;
+D2F9;D2F9;1110 1175 11B0;D2F9;1110 1175 11B0;
+D2FA;D2FA;1110 1175 11B1;D2FA;1110 1175 11B1;
+D2FB;D2FB;1110 1175 11B2;D2FB;1110 1175 11B2;
+D2FC;D2FC;1110 1175 11B3;D2FC;1110 1175 11B3;
+D2FD;D2FD;1110 1175 11B4;D2FD;1110 1175 11B4;
+D2FE;D2FE;1110 1175 11B5;D2FE;1110 1175 11B5;
+D2FF;D2FF;1110 1175 11B6;D2FF;1110 1175 11B6;
+D300;D300;1110 1175 11B7;D300;1110 1175 11B7;
+D301;D301;1110 1175 11B8;D301;1110 1175 11B8;
+D302;D302;1110 1175 11B9;D302;1110 1175 11B9;
+D303;D303;1110 1175 11BA;D303;1110 1175 11BA;
+D304;D304;1110 1175 11BB;D304;1110 1175 11BB;
+D305;D305;1110 1175 11BC;D305;1110 1175 11BC;
+D306;D306;1110 1175 11BD;D306;1110 1175 11BD;
+D307;D307;1110 1175 11BE;D307;1110 1175 11BE;
+D308;D308;1110 1175 11BF;D308;1110 1175 11BF;
+D309;D309;1110 1175 11C0;D309;1110 1175 11C0;
+D30A;D30A;1110 1175 11C1;D30A;1110 1175 11C1;
+D30B;D30B;1110 1175 11C2;D30B;1110 1175 11C2;
+D30C;D30C;1111 1161;D30C;1111 1161;
+D30D;D30D;1111 1161 11A8;D30D;1111 1161 11A8;
+D30E;D30E;1111 1161 11A9;D30E;1111 1161 11A9;
+D30F;D30F;1111 1161 11AA;D30F;1111 1161 11AA;
+D310;D310;1111 1161 11AB;D310;1111 1161 11AB;
+D311;D311;1111 1161 11AC;D311;1111 1161 11AC;
+D312;D312;1111 1161 11AD;D312;1111 1161 11AD;
+D313;D313;1111 1161 11AE;D313;1111 1161 11AE;
+D314;D314;1111 1161 11AF;D314;1111 1161 11AF;
+D315;D315;1111 1161 11B0;D315;1111 1161 11B0;
+D316;D316;1111 1161 11B1;D316;1111 1161 11B1;
+D317;D317;1111 1161 11B2;D317;1111 1161 11B2;
+D318;D318;1111 1161 11B3;D318;1111 1161 11B3;
+D319;D319;1111 1161 11B4;D319;1111 1161 11B4;
+D31A;D31A;1111 1161 11B5;D31A;1111 1161 11B5;
+D31B;D31B;1111 1161 11B6;D31B;1111 1161 11B6;
+D31C;D31C;1111 1161 11B7;D31C;1111 1161 11B7;
+D31D;D31D;1111 1161 11B8;D31D;1111 1161 11B8;
+D31E;D31E;1111 1161 11B9;D31E;1111 1161 11B9;
+D31F;D31F;1111 1161 11BA;D31F;1111 1161 11BA;
+D320;D320;1111 1161 11BB;D320;1111 1161 11BB;
+D321;D321;1111 1161 11BC;D321;1111 1161 11BC;
+D322;D322;1111 1161 11BD;D322;1111 1161 11BD;
+D323;D323;1111 1161 11BE;D323;1111 1161 11BE;
+D324;D324;1111 1161 11BF;D324;1111 1161 11BF;
+D325;D325;1111 1161 11C0;D325;1111 1161 11C0;
+D326;D326;1111 1161 11C1;D326;1111 1161 11C1;
+D327;D327;1111 1161 11C2;D327;1111 1161 11C2;
+D328;D328;1111 1162;D328;1111 1162;
+D329;D329;1111 1162 11A8;D329;1111 1162 11A8;
+D32A;D32A;1111 1162 11A9;D32A;1111 1162 11A9;
+D32B;D32B;1111 1162 11AA;D32B;1111 1162 11AA;
+D32C;D32C;1111 1162 11AB;D32C;1111 1162 11AB;
+D32D;D32D;1111 1162 11AC;D32D;1111 1162 11AC;
+D32E;D32E;1111 1162 11AD;D32E;1111 1162 11AD;
+D32F;D32F;1111 1162 11AE;D32F;1111 1162 11AE;
+D330;D330;1111 1162 11AF;D330;1111 1162 11AF;
+D331;D331;1111 1162 11B0;D331;1111 1162 11B0;
+D332;D332;1111 1162 11B1;D332;1111 1162 11B1;
+D333;D333;1111 1162 11B2;D333;1111 1162 11B2;
+D334;D334;1111 1162 11B3;D334;1111 1162 11B3;
+D335;D335;1111 1162 11B4;D335;1111 1162 11B4;
+D336;D336;1111 1162 11B5;D336;1111 1162 11B5;
+D337;D337;1111 1162 11B6;D337;1111 1162 11B6;
+D338;D338;1111 1162 11B7;D338;1111 1162 11B7;
+D339;D339;1111 1162 11B8;D339;1111 1162 11B8;
+D33A;D33A;1111 1162 11B9;D33A;1111 1162 11B9;
+D33B;D33B;1111 1162 11BA;D33B;1111 1162 11BA;
+D33C;D33C;1111 1162 11BB;D33C;1111 1162 11BB;
+D33D;D33D;1111 1162 11BC;D33D;1111 1162 11BC;
+D33E;D33E;1111 1162 11BD;D33E;1111 1162 11BD;
+D33F;D33F;1111 1162 11BE;D33F;1111 1162 11BE;
+D340;D340;1111 1162 11BF;D340;1111 1162 11BF;
+D341;D341;1111 1162 11C0;D341;1111 1162 11C0;
+D342;D342;1111 1162 11C1;D342;1111 1162 11C1;
+D343;D343;1111 1162 11C2;D343;1111 1162 11C2;
+D344;D344;1111 1163;D344;1111 1163;
+D345;D345;1111 1163 11A8;D345;1111 1163 11A8;
+D346;D346;1111 1163 11A9;D346;1111 1163 11A9;
+D347;D347;1111 1163 11AA;D347;1111 1163 11AA;
+D348;D348;1111 1163 11AB;D348;1111 1163 11AB;
+D349;D349;1111 1163 11AC;D349;1111 1163 11AC;
+D34A;D34A;1111 1163 11AD;D34A;1111 1163 11AD;
+D34B;D34B;1111 1163 11AE;D34B;1111 1163 11AE;
+D34C;D34C;1111 1163 11AF;D34C;1111 1163 11AF;
+D34D;D34D;1111 1163 11B0;D34D;1111 1163 11B0;
+D34E;D34E;1111 1163 11B1;D34E;1111 1163 11B1;
+D34F;D34F;1111 1163 11B2;D34F;1111 1163 11B2;
+D350;D350;1111 1163 11B3;D350;1111 1163 11B3;
+D351;D351;1111 1163 11B4;D351;1111 1163 11B4;
+D352;D352;1111 1163 11B5;D352;1111 1163 11B5;
+D353;D353;1111 1163 11B6;D353;1111 1163 11B6;
+D354;D354;1111 1163 11B7;D354;1111 1163 11B7;
+D355;D355;1111 1163 11B8;D355;1111 1163 11B8;
+D356;D356;1111 1163 11B9;D356;1111 1163 11B9;
+D357;D357;1111 1163 11BA;D357;1111 1163 11BA;
+D358;D358;1111 1163 11BB;D358;1111 1163 11BB;
+D359;D359;1111 1163 11BC;D359;1111 1163 11BC;
+D35A;D35A;1111 1163 11BD;D35A;1111 1163 11BD;
+D35B;D35B;1111 1163 11BE;D35B;1111 1163 11BE;
+D35C;D35C;1111 1163 11BF;D35C;1111 1163 11BF;
+D35D;D35D;1111 1163 11C0;D35D;1111 1163 11C0;
+D35E;D35E;1111 1163 11C1;D35E;1111 1163 11C1;
+D35F;D35F;1111 1163 11C2;D35F;1111 1163 11C2;
+D360;D360;1111 1164;D360;1111 1164;
+D361;D361;1111 1164 11A8;D361;1111 1164 11A8;
+D362;D362;1111 1164 11A9;D362;1111 1164 11A9;
+D363;D363;1111 1164 11AA;D363;1111 1164 11AA;
+D364;D364;1111 1164 11AB;D364;1111 1164 11AB;
+D365;D365;1111 1164 11AC;D365;1111 1164 11AC;
+D366;D366;1111 1164 11AD;D366;1111 1164 11AD;
+D367;D367;1111 1164 11AE;D367;1111 1164 11AE;
+D368;D368;1111 1164 11AF;D368;1111 1164 11AF;
+D369;D369;1111 1164 11B0;D369;1111 1164 11B0;
+D36A;D36A;1111 1164 11B1;D36A;1111 1164 11B1;
+D36B;D36B;1111 1164 11B2;D36B;1111 1164 11B2;
+D36C;D36C;1111 1164 11B3;D36C;1111 1164 11B3;
+D36D;D36D;1111 1164 11B4;D36D;1111 1164 11B4;
+D36E;D36E;1111 1164 11B5;D36E;1111 1164 11B5;
+D36F;D36F;1111 1164 11B6;D36F;1111 1164 11B6;
+D370;D370;1111 1164 11B7;D370;1111 1164 11B7;
+D371;D371;1111 1164 11B8;D371;1111 1164 11B8;
+D372;D372;1111 1164 11B9;D372;1111 1164 11B9;
+D373;D373;1111 1164 11BA;D373;1111 1164 11BA;
+D374;D374;1111 1164 11BB;D374;1111 1164 11BB;
+D375;D375;1111 1164 11BC;D375;1111 1164 11BC;
+D376;D376;1111 1164 11BD;D376;1111 1164 11BD;
+D377;D377;1111 1164 11BE;D377;1111 1164 11BE;
+D378;D378;1111 1164 11BF;D378;1111 1164 11BF;
+D379;D379;1111 1164 11C0;D379;1111 1164 11C0;
+D37A;D37A;1111 1164 11C1;D37A;1111 1164 11C1;
+D37B;D37B;1111 1164 11C2;D37B;1111 1164 11C2;
+D37C;D37C;1111 1165;D37C;1111 1165;
+D37D;D37D;1111 1165 11A8;D37D;1111 1165 11A8;
+D37E;D37E;1111 1165 11A9;D37E;1111 1165 11A9;
+D37F;D37F;1111 1165 11AA;D37F;1111 1165 11AA;
+D380;D380;1111 1165 11AB;D380;1111 1165 11AB;
+D381;D381;1111 1165 11AC;D381;1111 1165 11AC;
+D382;D382;1111 1165 11AD;D382;1111 1165 11AD;
+D383;D383;1111 1165 11AE;D383;1111 1165 11AE;
+D384;D384;1111 1165 11AF;D384;1111 1165 11AF;
+D385;D385;1111 1165 11B0;D385;1111 1165 11B0;
+D386;D386;1111 1165 11B1;D386;1111 1165 11B1;
+D387;D387;1111 1165 11B2;D387;1111 1165 11B2;
+D388;D388;1111 1165 11B3;D388;1111 1165 11B3;
+D389;D389;1111 1165 11B4;D389;1111 1165 11B4;
+D38A;D38A;1111 1165 11B5;D38A;1111 1165 11B5;
+D38B;D38B;1111 1165 11B6;D38B;1111 1165 11B6;
+D38C;D38C;1111 1165 11B7;D38C;1111 1165 11B7;
+D38D;D38D;1111 1165 11B8;D38D;1111 1165 11B8;
+D38E;D38E;1111 1165 11B9;D38E;1111 1165 11B9;
+D38F;D38F;1111 1165 11BA;D38F;1111 1165 11BA;
+D390;D390;1111 1165 11BB;D390;1111 1165 11BB;
+D391;D391;1111 1165 11BC;D391;1111 1165 11BC;
+D392;D392;1111 1165 11BD;D392;1111 1165 11BD;
+D393;D393;1111 1165 11BE;D393;1111 1165 11BE;
+D394;D394;1111 1165 11BF;D394;1111 1165 11BF;
+D395;D395;1111 1165 11C0;D395;1111 1165 11C0;
+D396;D396;1111 1165 11C1;D396;1111 1165 11C1;
+D397;D397;1111 1165 11C2;D397;1111 1165 11C2;
+D398;D398;1111 1166;D398;1111 1166;
+D399;D399;1111 1166 11A8;D399;1111 1166 11A8;
+D39A;D39A;1111 1166 11A9;D39A;1111 1166 11A9;
+D39B;D39B;1111 1166 11AA;D39B;1111 1166 11AA;
+D39C;D39C;1111 1166 11AB;D39C;1111 1166 11AB;
+D39D;D39D;1111 1166 11AC;D39D;1111 1166 11AC;
+D39E;D39E;1111 1166 11AD;D39E;1111 1166 11AD;
+D39F;D39F;1111 1166 11AE;D39F;1111 1166 11AE;
+D3A0;D3A0;1111 1166 11AF;D3A0;1111 1166 11AF;
+D3A1;D3A1;1111 1166 11B0;D3A1;1111 1166 11B0;
+D3A2;D3A2;1111 1166 11B1;D3A2;1111 1166 11B1;
+D3A3;D3A3;1111 1166 11B2;D3A3;1111 1166 11B2;
+D3A4;D3A4;1111 1166 11B3;D3A4;1111 1166 11B3;
+D3A5;D3A5;1111 1166 11B4;D3A5;1111 1166 11B4;
+D3A6;D3A6;1111 1166 11B5;D3A6;1111 1166 11B5;
+D3A7;D3A7;1111 1166 11B6;D3A7;1111 1166 11B6;
+D3A8;D3A8;1111 1166 11B7;D3A8;1111 1166 11B7;
+D3A9;D3A9;1111 1166 11B8;D3A9;1111 1166 11B8;
+D3AA;D3AA;1111 1166 11B9;D3AA;1111 1166 11B9;
+D3AB;D3AB;1111 1166 11BA;D3AB;1111 1166 11BA;
+D3AC;D3AC;1111 1166 11BB;D3AC;1111 1166 11BB;
+D3AD;D3AD;1111 1166 11BC;D3AD;1111 1166 11BC;
+D3AE;D3AE;1111 1166 11BD;D3AE;1111 1166 11BD;
+D3AF;D3AF;1111 1166 11BE;D3AF;1111 1166 11BE;
+D3B0;D3B0;1111 1166 11BF;D3B0;1111 1166 11BF;
+D3B1;D3B1;1111 1166 11C0;D3B1;1111 1166 11C0;
+D3B2;D3B2;1111 1166 11C1;D3B2;1111 1166 11C1;
+D3B3;D3B3;1111 1166 11C2;D3B3;1111 1166 11C2;
+D3B4;D3B4;1111 1167;D3B4;1111 1167;
+D3B5;D3B5;1111 1167 11A8;D3B5;1111 1167 11A8;
+D3B6;D3B6;1111 1167 11A9;D3B6;1111 1167 11A9;
+D3B7;D3B7;1111 1167 11AA;D3B7;1111 1167 11AA;
+D3B8;D3B8;1111 1167 11AB;D3B8;1111 1167 11AB;
+D3B9;D3B9;1111 1167 11AC;D3B9;1111 1167 11AC;
+D3BA;D3BA;1111 1167 11AD;D3BA;1111 1167 11AD;
+D3BB;D3BB;1111 1167 11AE;D3BB;1111 1167 11AE;
+D3BC;D3BC;1111 1167 11AF;D3BC;1111 1167 11AF;
+D3BD;D3BD;1111 1167 11B0;D3BD;1111 1167 11B0;
+D3BE;D3BE;1111 1167 11B1;D3BE;1111 1167 11B1;
+D3BF;D3BF;1111 1167 11B2;D3BF;1111 1167 11B2;
+D3C0;D3C0;1111 1167 11B3;D3C0;1111 1167 11B3;
+D3C1;D3C1;1111 1167 11B4;D3C1;1111 1167 11B4;
+D3C2;D3C2;1111 1167 11B5;D3C2;1111 1167 11B5;
+D3C3;D3C3;1111 1167 11B6;D3C3;1111 1167 11B6;
+D3C4;D3C4;1111 1167 11B7;D3C4;1111 1167 11B7;
+D3C5;D3C5;1111 1167 11B8;D3C5;1111 1167 11B8;
+D3C6;D3C6;1111 1167 11B9;D3C6;1111 1167 11B9;
+D3C7;D3C7;1111 1167 11BA;D3C7;1111 1167 11BA;
+D3C8;D3C8;1111 1167 11BB;D3C8;1111 1167 11BB;
+D3C9;D3C9;1111 1167 11BC;D3C9;1111 1167 11BC;
+D3CA;D3CA;1111 1167 11BD;D3CA;1111 1167 11BD;
+D3CB;D3CB;1111 1167 11BE;D3CB;1111 1167 11BE;
+D3CC;D3CC;1111 1167 11BF;D3CC;1111 1167 11BF;
+D3CD;D3CD;1111 1167 11C0;D3CD;1111 1167 11C0;
+D3CE;D3CE;1111 1167 11C1;D3CE;1111 1167 11C1;
+D3CF;D3CF;1111 1167 11C2;D3CF;1111 1167 11C2;
+D3D0;D3D0;1111 1168;D3D0;1111 1168;
+D3D1;D3D1;1111 1168 11A8;D3D1;1111 1168 11A8;
+D3D2;D3D2;1111 1168 11A9;D3D2;1111 1168 11A9;
+D3D3;D3D3;1111 1168 11AA;D3D3;1111 1168 11AA;
+D3D4;D3D4;1111 1168 11AB;D3D4;1111 1168 11AB;
+D3D5;D3D5;1111 1168 11AC;D3D5;1111 1168 11AC;
+D3D6;D3D6;1111 1168 11AD;D3D6;1111 1168 11AD;
+D3D7;D3D7;1111 1168 11AE;D3D7;1111 1168 11AE;
+D3D8;D3D8;1111 1168 11AF;D3D8;1111 1168 11AF;
+D3D9;D3D9;1111 1168 11B0;D3D9;1111 1168 11B0;
+D3DA;D3DA;1111 1168 11B1;D3DA;1111 1168 11B1;
+D3DB;D3DB;1111 1168 11B2;D3DB;1111 1168 11B2;
+D3DC;D3DC;1111 1168 11B3;D3DC;1111 1168 11B3;
+D3DD;D3DD;1111 1168 11B4;D3DD;1111 1168 11B4;
+D3DE;D3DE;1111 1168 11B5;D3DE;1111 1168 11B5;
+D3DF;D3DF;1111 1168 11B6;D3DF;1111 1168 11B6;
+D3E0;D3E0;1111 1168 11B7;D3E0;1111 1168 11B7;
+D3E1;D3E1;1111 1168 11B8;D3E1;1111 1168 11B8;
+D3E2;D3E2;1111 1168 11B9;D3E2;1111 1168 11B9;
+D3E3;D3E3;1111 1168 11BA;D3E3;1111 1168 11BA;
+D3E4;D3E4;1111 1168 11BB;D3E4;1111 1168 11BB;
+D3E5;D3E5;1111 1168 11BC;D3E5;1111 1168 11BC;
+D3E6;D3E6;1111 1168 11BD;D3E6;1111 1168 11BD;
+D3E7;D3E7;1111 1168 11BE;D3E7;1111 1168 11BE;
+D3E8;D3E8;1111 1168 11BF;D3E8;1111 1168 11BF;
+D3E9;D3E9;1111 1168 11C0;D3E9;1111 1168 11C0;
+D3EA;D3EA;1111 1168 11C1;D3EA;1111 1168 11C1;
+D3EB;D3EB;1111 1168 11C2;D3EB;1111 1168 11C2;
+D3EC;D3EC;1111 1169;D3EC;1111 1169;
+D3ED;D3ED;1111 1169 11A8;D3ED;1111 1169 11A8;
+D3EE;D3EE;1111 1169 11A9;D3EE;1111 1169 11A9;
+D3EF;D3EF;1111 1169 11AA;D3EF;1111 1169 11AA;
+D3F0;D3F0;1111 1169 11AB;D3F0;1111 1169 11AB;
+D3F1;D3F1;1111 1169 11AC;D3F1;1111 1169 11AC;
+D3F2;D3F2;1111 1169 11AD;D3F2;1111 1169 11AD;
+D3F3;D3F3;1111 1169 11AE;D3F3;1111 1169 11AE;
+D3F4;D3F4;1111 1169 11AF;D3F4;1111 1169 11AF;
+D3F5;D3F5;1111 1169 11B0;D3F5;1111 1169 11B0;
+D3F6;D3F6;1111 1169 11B1;D3F6;1111 1169 11B1;
+D3F7;D3F7;1111 1169 11B2;D3F7;1111 1169 11B2;
+D3F8;D3F8;1111 1169 11B3;D3F8;1111 1169 11B3;
+D3F9;D3F9;1111 1169 11B4;D3F9;1111 1169 11B4;
+D3FA;D3FA;1111 1169 11B5;D3FA;1111 1169 11B5;
+D3FB;D3FB;1111 1169 11B6;D3FB;1111 1169 11B6;
+D3FC;D3FC;1111 1169 11B7;D3FC;1111 1169 11B7;
+D3FD;D3FD;1111 1169 11B8;D3FD;1111 1169 11B8;
+D3FE;D3FE;1111 1169 11B9;D3FE;1111 1169 11B9;
+D3FF;D3FF;1111 1169 11BA;D3FF;1111 1169 11BA;
+D400;D400;1111 1169 11BB;D400;1111 1169 11BB;
+D401;D401;1111 1169 11BC;D401;1111 1169 11BC;
+D402;D402;1111 1169 11BD;D402;1111 1169 11BD;
+D403;D403;1111 1169 11BE;D403;1111 1169 11BE;
+D404;D404;1111 1169 11BF;D404;1111 1169 11BF;
+D405;D405;1111 1169 11C0;D405;1111 1169 11C0;
+D406;D406;1111 1169 11C1;D406;1111 1169 11C1;
+D407;D407;1111 1169 11C2;D407;1111 1169 11C2;
+D408;D408;1111 116A;D408;1111 116A;
+D409;D409;1111 116A 11A8;D409;1111 116A 11A8;
+D40A;D40A;1111 116A 11A9;D40A;1111 116A 11A9;
+D40B;D40B;1111 116A 11AA;D40B;1111 116A 11AA;
+D40C;D40C;1111 116A 11AB;D40C;1111 116A 11AB;
+D40D;D40D;1111 116A 11AC;D40D;1111 116A 11AC;
+D40E;D40E;1111 116A 11AD;D40E;1111 116A 11AD;
+D40F;D40F;1111 116A 11AE;D40F;1111 116A 11AE;
+D410;D410;1111 116A 11AF;D410;1111 116A 11AF;
+D411;D411;1111 116A 11B0;D411;1111 116A 11B0;
+D412;D412;1111 116A 11B1;D412;1111 116A 11B1;
+D413;D413;1111 116A 11B2;D413;1111 116A 11B2;
+D414;D414;1111 116A 11B3;D414;1111 116A 11B3;
+D415;D415;1111 116A 11B4;D415;1111 116A 11B4;
+D416;D416;1111 116A 11B5;D416;1111 116A 11B5;
+D417;D417;1111 116A 11B6;D417;1111 116A 11B6;
+D418;D418;1111 116A 11B7;D418;1111 116A 11B7;
+D419;D419;1111 116A 11B8;D419;1111 116A 11B8;
+D41A;D41A;1111 116A 11B9;D41A;1111 116A 11B9;
+D41B;D41B;1111 116A 11BA;D41B;1111 116A 11BA;
+D41C;D41C;1111 116A 11BB;D41C;1111 116A 11BB;
+D41D;D41D;1111 116A 11BC;D41D;1111 116A 11BC;
+D41E;D41E;1111 116A 11BD;D41E;1111 116A 11BD;
+D41F;D41F;1111 116A 11BE;D41F;1111 116A 11BE;
+D420;D420;1111 116A 11BF;D420;1111 116A 11BF;
+D421;D421;1111 116A 11C0;D421;1111 116A 11C0;
+D422;D422;1111 116A 11C1;D422;1111 116A 11C1;
+D423;D423;1111 116A 11C2;D423;1111 116A 11C2;
+D424;D424;1111 116B;D424;1111 116B;
+D425;D425;1111 116B 11A8;D425;1111 116B 11A8;
+D426;D426;1111 116B 11A9;D426;1111 116B 11A9;
+D427;D427;1111 116B 11AA;D427;1111 116B 11AA;
+D428;D428;1111 116B 11AB;D428;1111 116B 11AB;
+D429;D429;1111 116B 11AC;D429;1111 116B 11AC;
+D42A;D42A;1111 116B 11AD;D42A;1111 116B 11AD;
+D42B;D42B;1111 116B 11AE;D42B;1111 116B 11AE;
+D42C;D42C;1111 116B 11AF;D42C;1111 116B 11AF;
+D42D;D42D;1111 116B 11B0;D42D;1111 116B 11B0;
+D42E;D42E;1111 116B 11B1;D42E;1111 116B 11B1;
+D42F;D42F;1111 116B 11B2;D42F;1111 116B 11B2;
+D430;D430;1111 116B 11B3;D430;1111 116B 11B3;
+D431;D431;1111 116B 11B4;D431;1111 116B 11B4;
+D432;D432;1111 116B 11B5;D432;1111 116B 11B5;
+D433;D433;1111 116B 11B6;D433;1111 116B 11B6;
+D434;D434;1111 116B 11B7;D434;1111 116B 11B7;
+D435;D435;1111 116B 11B8;D435;1111 116B 11B8;
+D436;D436;1111 116B 11B9;D436;1111 116B 11B9;
+D437;D437;1111 116B 11BA;D437;1111 116B 11BA;
+D438;D438;1111 116B 11BB;D438;1111 116B 11BB;
+D439;D439;1111 116B 11BC;D439;1111 116B 11BC;
+D43A;D43A;1111 116B 11BD;D43A;1111 116B 11BD;
+D43B;D43B;1111 116B 11BE;D43B;1111 116B 11BE;
+D43C;D43C;1111 116B 11BF;D43C;1111 116B 11BF;
+D43D;D43D;1111 116B 11C0;D43D;1111 116B 11C0;
+D43E;D43E;1111 116B 11C1;D43E;1111 116B 11C1;
+D43F;D43F;1111 116B 11C2;D43F;1111 116B 11C2;
+D440;D440;1111 116C;D440;1111 116C;
+D441;D441;1111 116C 11A8;D441;1111 116C 11A8;
+D442;D442;1111 116C 11A9;D442;1111 116C 11A9;
+D443;D443;1111 116C 11AA;D443;1111 116C 11AA;
+D444;D444;1111 116C 11AB;D444;1111 116C 11AB;
+D445;D445;1111 116C 11AC;D445;1111 116C 11AC;
+D446;D446;1111 116C 11AD;D446;1111 116C 11AD;
+D447;D447;1111 116C 11AE;D447;1111 116C 11AE;
+D448;D448;1111 116C 11AF;D448;1111 116C 11AF;
+D449;D449;1111 116C 11B0;D449;1111 116C 11B0;
+D44A;D44A;1111 116C 11B1;D44A;1111 116C 11B1;
+D44B;D44B;1111 116C 11B2;D44B;1111 116C 11B2;
+D44C;D44C;1111 116C 11B3;D44C;1111 116C 11B3;
+D44D;D44D;1111 116C 11B4;D44D;1111 116C 11B4;
+D44E;D44E;1111 116C 11B5;D44E;1111 116C 11B5;
+D44F;D44F;1111 116C 11B6;D44F;1111 116C 11B6;
+D450;D450;1111 116C 11B7;D450;1111 116C 11B7;
+D451;D451;1111 116C 11B8;D451;1111 116C 11B8;
+D452;D452;1111 116C 11B9;D452;1111 116C 11B9;
+D453;D453;1111 116C 11BA;D453;1111 116C 11BA;
+D454;D454;1111 116C 11BB;D454;1111 116C 11BB;
+D455;D455;1111 116C 11BC;D455;1111 116C 11BC;
+D456;D456;1111 116C 11BD;D456;1111 116C 11BD;
+D457;D457;1111 116C 11BE;D457;1111 116C 11BE;
+D458;D458;1111 116C 11BF;D458;1111 116C 11BF;
+D459;D459;1111 116C 11C0;D459;1111 116C 11C0;
+D45A;D45A;1111 116C 11C1;D45A;1111 116C 11C1;
+D45B;D45B;1111 116C 11C2;D45B;1111 116C 11C2;
+D45C;D45C;1111 116D;D45C;1111 116D;
+D45D;D45D;1111 116D 11A8;D45D;1111 116D 11A8;
+D45E;D45E;1111 116D 11A9;D45E;1111 116D 11A9;
+D45F;D45F;1111 116D 11AA;D45F;1111 116D 11AA;
+D460;D460;1111 116D 11AB;D460;1111 116D 11AB;
+D461;D461;1111 116D 11AC;D461;1111 116D 11AC;
+D462;D462;1111 116D 11AD;D462;1111 116D 11AD;
+D463;D463;1111 116D 11AE;D463;1111 116D 11AE;
+D464;D464;1111 116D 11AF;D464;1111 116D 11AF;
+D465;D465;1111 116D 11B0;D465;1111 116D 11B0;
+D466;D466;1111 116D 11B1;D466;1111 116D 11B1;
+D467;D467;1111 116D 11B2;D467;1111 116D 11B2;
+D468;D468;1111 116D 11B3;D468;1111 116D 11B3;
+D469;D469;1111 116D 11B4;D469;1111 116D 11B4;
+D46A;D46A;1111 116D 11B5;D46A;1111 116D 11B5;
+D46B;D46B;1111 116D 11B6;D46B;1111 116D 11B6;
+D46C;D46C;1111 116D 11B7;D46C;1111 116D 11B7;
+D46D;D46D;1111 116D 11B8;D46D;1111 116D 11B8;
+D46E;D46E;1111 116D 11B9;D46E;1111 116D 11B9;
+D46F;D46F;1111 116D 11BA;D46F;1111 116D 11BA;
+D470;D470;1111 116D 11BB;D470;1111 116D 11BB;
+D471;D471;1111 116D 11BC;D471;1111 116D 11BC;
+D472;D472;1111 116D 11BD;D472;1111 116D 11BD;
+D473;D473;1111 116D 11BE;D473;1111 116D 11BE;
+D474;D474;1111 116D 11BF;D474;1111 116D 11BF;
+D475;D475;1111 116D 11C0;D475;1111 116D 11C0;
+D476;D476;1111 116D 11C1;D476;1111 116D 11C1;
+D477;D477;1111 116D 11C2;D477;1111 116D 11C2;
+D478;D478;1111 116E;D478;1111 116E;
+D479;D479;1111 116E 11A8;D479;1111 116E 11A8;
+D47A;D47A;1111 116E 11A9;D47A;1111 116E 11A9;
+D47B;D47B;1111 116E 11AA;D47B;1111 116E 11AA;
+D47C;D47C;1111 116E 11AB;D47C;1111 116E 11AB;
+D47D;D47D;1111 116E 11AC;D47D;1111 116E 11AC;
+D47E;D47E;1111 116E 11AD;D47E;1111 116E 11AD;
+D47F;D47F;1111 116E 11AE;D47F;1111 116E 11AE;
+D480;D480;1111 116E 11AF;D480;1111 116E 11AF;
+D481;D481;1111 116E 11B0;D481;1111 116E 11B0;
+D482;D482;1111 116E 11B1;D482;1111 116E 11B1;
+D483;D483;1111 116E 11B2;D483;1111 116E 11B2;
+D484;D484;1111 116E 11B3;D484;1111 116E 11B3;
+D485;D485;1111 116E 11B4;D485;1111 116E 11B4;
+D486;D486;1111 116E 11B5;D486;1111 116E 11B5;
+D487;D487;1111 116E 11B6;D487;1111 116E 11B6;
+D488;D488;1111 116E 11B7;D488;1111 116E 11B7;
+D489;D489;1111 116E 11B8;D489;1111 116E 11B8;
+D48A;D48A;1111 116E 11B9;D48A;1111 116E 11B9;
+D48B;D48B;1111 116E 11BA;D48B;1111 116E 11BA;
+D48C;D48C;1111 116E 11BB;D48C;1111 116E 11BB;
+D48D;D48D;1111 116E 11BC;D48D;1111 116E 11BC;
+D48E;D48E;1111 116E 11BD;D48E;1111 116E 11BD;
+D48F;D48F;1111 116E 11BE;D48F;1111 116E 11BE;
+D490;D490;1111 116E 11BF;D490;1111 116E 11BF;
+D491;D491;1111 116E 11C0;D491;1111 116E 11C0;
+D492;D492;1111 116E 11C1;D492;1111 116E 11C1;
+D493;D493;1111 116E 11C2;D493;1111 116E 11C2;
+D494;D494;1111 116F;D494;1111 116F;
+D495;D495;1111 116F 11A8;D495;1111 116F 11A8;
+D496;D496;1111 116F 11A9;D496;1111 116F 11A9;
+D497;D497;1111 116F 11AA;D497;1111 116F 11AA;
+D498;D498;1111 116F 11AB;D498;1111 116F 11AB;
+D499;D499;1111 116F 11AC;D499;1111 116F 11AC;
+D49A;D49A;1111 116F 11AD;D49A;1111 116F 11AD;
+D49B;D49B;1111 116F 11AE;D49B;1111 116F 11AE;
+D49C;D49C;1111 116F 11AF;D49C;1111 116F 11AF;
+D49D;D49D;1111 116F 11B0;D49D;1111 116F 11B0;
+D49E;D49E;1111 116F 11B1;D49E;1111 116F 11B1;
+D49F;D49F;1111 116F 11B2;D49F;1111 116F 11B2;
+D4A0;D4A0;1111 116F 11B3;D4A0;1111 116F 11B3;
+D4A1;D4A1;1111 116F 11B4;D4A1;1111 116F 11B4;
+D4A2;D4A2;1111 116F 11B5;D4A2;1111 116F 11B5;
+D4A3;D4A3;1111 116F 11B6;D4A3;1111 116F 11B6;
+D4A4;D4A4;1111 116F 11B7;D4A4;1111 116F 11B7;
+D4A5;D4A5;1111 116F 11B8;D4A5;1111 116F 11B8;
+D4A6;D4A6;1111 116F 11B9;D4A6;1111 116F 11B9;
+D4A7;D4A7;1111 116F 11BA;D4A7;1111 116F 11BA;
+D4A8;D4A8;1111 116F 11BB;D4A8;1111 116F 11BB;
+D4A9;D4A9;1111 116F 11BC;D4A9;1111 116F 11BC;
+D4AA;D4AA;1111 116F 11BD;D4AA;1111 116F 11BD;
+D4AB;D4AB;1111 116F 11BE;D4AB;1111 116F 11BE;
+D4AC;D4AC;1111 116F 11BF;D4AC;1111 116F 11BF;
+D4AD;D4AD;1111 116F 11C0;D4AD;1111 116F 11C0;
+D4AE;D4AE;1111 116F 11C1;D4AE;1111 116F 11C1;
+D4AF;D4AF;1111 116F 11C2;D4AF;1111 116F 11C2;
+D4B0;D4B0;1111 1170;D4B0;1111 1170;
+D4B1;D4B1;1111 1170 11A8;D4B1;1111 1170 11A8;
+D4B2;D4B2;1111 1170 11A9;D4B2;1111 1170 11A9;
+D4B3;D4B3;1111 1170 11AA;D4B3;1111 1170 11AA;
+D4B4;D4B4;1111 1170 11AB;D4B4;1111 1170 11AB;
+D4B5;D4B5;1111 1170 11AC;D4B5;1111 1170 11AC;
+D4B6;D4B6;1111 1170 11AD;D4B6;1111 1170 11AD;
+D4B7;D4B7;1111 1170 11AE;D4B7;1111 1170 11AE;
+D4B8;D4B8;1111 1170 11AF;D4B8;1111 1170 11AF;
+D4B9;D4B9;1111 1170 11B0;D4B9;1111 1170 11B0;
+D4BA;D4BA;1111 1170 11B1;D4BA;1111 1170 11B1;
+D4BB;D4BB;1111 1170 11B2;D4BB;1111 1170 11B2;
+D4BC;D4BC;1111 1170 11B3;D4BC;1111 1170 11B3;
+D4BD;D4BD;1111 1170 11B4;D4BD;1111 1170 11B4;
+D4BE;D4BE;1111 1170 11B5;D4BE;1111 1170 11B5;
+D4BF;D4BF;1111 1170 11B6;D4BF;1111 1170 11B6;
+D4C0;D4C0;1111 1170 11B7;D4C0;1111 1170 11B7;
+D4C1;D4C1;1111 1170 11B8;D4C1;1111 1170 11B8;
+D4C2;D4C2;1111 1170 11B9;D4C2;1111 1170 11B9;
+D4C3;D4C3;1111 1170 11BA;D4C3;1111 1170 11BA;
+D4C4;D4C4;1111 1170 11BB;D4C4;1111 1170 11BB;
+D4C5;D4C5;1111 1170 11BC;D4C5;1111 1170 11BC;
+D4C6;D4C6;1111 1170 11BD;D4C6;1111 1170 11BD;
+D4C7;D4C7;1111 1170 11BE;D4C7;1111 1170 11BE;
+D4C8;D4C8;1111 1170 11BF;D4C8;1111 1170 11BF;
+D4C9;D4C9;1111 1170 11C0;D4C9;1111 1170 11C0;
+D4CA;D4CA;1111 1170 11C1;D4CA;1111 1170 11C1;
+D4CB;D4CB;1111 1170 11C2;D4CB;1111 1170 11C2;
+D4CC;D4CC;1111 1171;D4CC;1111 1171;
+D4CD;D4CD;1111 1171 11A8;D4CD;1111 1171 11A8;
+D4CE;D4CE;1111 1171 11A9;D4CE;1111 1171 11A9;
+D4CF;D4CF;1111 1171 11AA;D4CF;1111 1171 11AA;
+D4D0;D4D0;1111 1171 11AB;D4D0;1111 1171 11AB;
+D4D1;D4D1;1111 1171 11AC;D4D1;1111 1171 11AC;
+D4D2;D4D2;1111 1171 11AD;D4D2;1111 1171 11AD;
+D4D3;D4D3;1111 1171 11AE;D4D3;1111 1171 11AE;
+D4D4;D4D4;1111 1171 11AF;D4D4;1111 1171 11AF;
+D4D5;D4D5;1111 1171 11B0;D4D5;1111 1171 11B0;
+D4D6;D4D6;1111 1171 11B1;D4D6;1111 1171 11B1;
+D4D7;D4D7;1111 1171 11B2;D4D7;1111 1171 11B2;
+D4D8;D4D8;1111 1171 11B3;D4D8;1111 1171 11B3;
+D4D9;D4D9;1111 1171 11B4;D4D9;1111 1171 11B4;
+D4DA;D4DA;1111 1171 11B5;D4DA;1111 1171 11B5;
+D4DB;D4DB;1111 1171 11B6;D4DB;1111 1171 11B6;
+D4DC;D4DC;1111 1171 11B7;D4DC;1111 1171 11B7;
+D4DD;D4DD;1111 1171 11B8;D4DD;1111 1171 11B8;
+D4DE;D4DE;1111 1171 11B9;D4DE;1111 1171 11B9;
+D4DF;D4DF;1111 1171 11BA;D4DF;1111 1171 11BA;
+D4E0;D4E0;1111 1171 11BB;D4E0;1111 1171 11BB;
+D4E1;D4E1;1111 1171 11BC;D4E1;1111 1171 11BC;
+D4E2;D4E2;1111 1171 11BD;D4E2;1111 1171 11BD;
+D4E3;D4E3;1111 1171 11BE;D4E3;1111 1171 11BE;
+D4E4;D4E4;1111 1171 11BF;D4E4;1111 1171 11BF;
+D4E5;D4E5;1111 1171 11C0;D4E5;1111 1171 11C0;
+D4E6;D4E6;1111 1171 11C1;D4E6;1111 1171 11C1;
+D4E7;D4E7;1111 1171 11C2;D4E7;1111 1171 11C2;
+D4E8;D4E8;1111 1172;D4E8;1111 1172;
+D4E9;D4E9;1111 1172 11A8;D4E9;1111 1172 11A8;
+D4EA;D4EA;1111 1172 11A9;D4EA;1111 1172 11A9;
+D4EB;D4EB;1111 1172 11AA;D4EB;1111 1172 11AA;
+D4EC;D4EC;1111 1172 11AB;D4EC;1111 1172 11AB;
+D4ED;D4ED;1111 1172 11AC;D4ED;1111 1172 11AC;
+D4EE;D4EE;1111 1172 11AD;D4EE;1111 1172 11AD;
+D4EF;D4EF;1111 1172 11AE;D4EF;1111 1172 11AE;
+D4F0;D4F0;1111 1172 11AF;D4F0;1111 1172 11AF;
+D4F1;D4F1;1111 1172 11B0;D4F1;1111 1172 11B0;
+D4F2;D4F2;1111 1172 11B1;D4F2;1111 1172 11B1;
+D4F3;D4F3;1111 1172 11B2;D4F3;1111 1172 11B2;
+D4F4;D4F4;1111 1172 11B3;D4F4;1111 1172 11B3;
+D4F5;D4F5;1111 1172 11B4;D4F5;1111 1172 11B4;
+D4F6;D4F6;1111 1172 11B5;D4F6;1111 1172 11B5;
+D4F7;D4F7;1111 1172 11B6;D4F7;1111 1172 11B6;
+D4F8;D4F8;1111 1172 11B7;D4F8;1111 1172 11B7;
+D4F9;D4F9;1111 1172 11B8;D4F9;1111 1172 11B8;
+D4FA;D4FA;1111 1172 11B9;D4FA;1111 1172 11B9;
+D4FB;D4FB;1111 1172 11BA;D4FB;1111 1172 11BA;
+D4FC;D4FC;1111 1172 11BB;D4FC;1111 1172 11BB;
+D4FD;D4FD;1111 1172 11BC;D4FD;1111 1172 11BC;
+D4FE;D4FE;1111 1172 11BD;D4FE;1111 1172 11BD;
+D4FF;D4FF;1111 1172 11BE;D4FF;1111 1172 11BE;
+D500;D500;1111 1172 11BF;D500;1111 1172 11BF;
+D501;D501;1111 1172 11C0;D501;1111 1172 11C0;
+D502;D502;1111 1172 11C1;D502;1111 1172 11C1;
+D503;D503;1111 1172 11C2;D503;1111 1172 11C2;
+D504;D504;1111 1173;D504;1111 1173;
+D505;D505;1111 1173 11A8;D505;1111 1173 11A8;
+D506;D506;1111 1173 11A9;D506;1111 1173 11A9;
+D507;D507;1111 1173 11AA;D507;1111 1173 11AA;
+D508;D508;1111 1173 11AB;D508;1111 1173 11AB;
+D509;D509;1111 1173 11AC;D509;1111 1173 11AC;
+D50A;D50A;1111 1173 11AD;D50A;1111 1173 11AD;
+D50B;D50B;1111 1173 11AE;D50B;1111 1173 11AE;
+D50C;D50C;1111 1173 11AF;D50C;1111 1173 11AF;
+D50D;D50D;1111 1173 11B0;D50D;1111 1173 11B0;
+D50E;D50E;1111 1173 11B1;D50E;1111 1173 11B1;
+D50F;D50F;1111 1173 11B2;D50F;1111 1173 11B2;
+D510;D510;1111 1173 11B3;D510;1111 1173 11B3;
+D511;D511;1111 1173 11B4;D511;1111 1173 11B4;
+D512;D512;1111 1173 11B5;D512;1111 1173 11B5;
+D513;D513;1111 1173 11B6;D513;1111 1173 11B6;
+D514;D514;1111 1173 11B7;D514;1111 1173 11B7;
+D515;D515;1111 1173 11B8;D515;1111 1173 11B8;
+D516;D516;1111 1173 11B9;D516;1111 1173 11B9;
+D517;D517;1111 1173 11BA;D517;1111 1173 11BA;
+D518;D518;1111 1173 11BB;D518;1111 1173 11BB;
+D519;D519;1111 1173 11BC;D519;1111 1173 11BC;
+D51A;D51A;1111 1173 11BD;D51A;1111 1173 11BD;
+D51B;D51B;1111 1173 11BE;D51B;1111 1173 11BE;
+D51C;D51C;1111 1173 11BF;D51C;1111 1173 11BF;
+D51D;D51D;1111 1173 11C0;D51D;1111 1173 11C0;
+D51E;D51E;1111 1173 11C1;D51E;1111 1173 11C1;
+D51F;D51F;1111 1173 11C2;D51F;1111 1173 11C2;
+D520;D520;1111 1174;D520;1111 1174;
+D521;D521;1111 1174 11A8;D521;1111 1174 11A8;
+D522;D522;1111 1174 11A9;D522;1111 1174 11A9;
+D523;D523;1111 1174 11AA;D523;1111 1174 11AA;
+D524;D524;1111 1174 11AB;D524;1111 1174 11AB;
+D525;D525;1111 1174 11AC;D525;1111 1174 11AC;
+D526;D526;1111 1174 11AD;D526;1111 1174 11AD;
+D527;D527;1111 1174 11AE;D527;1111 1174 11AE;
+D528;D528;1111 1174 11AF;D528;1111 1174 11AF;
+D529;D529;1111 1174 11B0;D529;1111 1174 11B0;
+D52A;D52A;1111 1174 11B1;D52A;1111 1174 11B1;
+D52B;D52B;1111 1174 11B2;D52B;1111 1174 11B2;
+D52C;D52C;1111 1174 11B3;D52C;1111 1174 11B3;
+D52D;D52D;1111 1174 11B4;D52D;1111 1174 11B4;
+D52E;D52E;1111 1174 11B5;D52E;1111 1174 11B5;
+D52F;D52F;1111 1174 11B6;D52F;1111 1174 11B6;
+D530;D530;1111 1174 11B7;D530;1111 1174 11B7;
+D531;D531;1111 1174 11B8;D531;1111 1174 11B8;
+D532;D532;1111 1174 11B9;D532;1111 1174 11B9;
+D533;D533;1111 1174 11BA;D533;1111 1174 11BA;
+D534;D534;1111 1174 11BB;D534;1111 1174 11BB;
+D535;D535;1111 1174 11BC;D535;1111 1174 11BC;
+D536;D536;1111 1174 11BD;D536;1111 1174 11BD;
+D537;D537;1111 1174 11BE;D537;1111 1174 11BE;
+D538;D538;1111 1174 11BF;D538;1111 1174 11BF;
+D539;D539;1111 1174 11C0;D539;1111 1174 11C0;
+D53A;D53A;1111 1174 11C1;D53A;1111 1174 11C1;
+D53B;D53B;1111 1174 11C2;D53B;1111 1174 11C2;
+D53C;D53C;1111 1175;D53C;1111 1175;
+D53D;D53D;1111 1175 11A8;D53D;1111 1175 11A8;
+D53E;D53E;1111 1175 11A9;D53E;1111 1175 11A9;
+D53F;D53F;1111 1175 11AA;D53F;1111 1175 11AA;
+D540;D540;1111 1175 11AB;D540;1111 1175 11AB;
+D541;D541;1111 1175 11AC;D541;1111 1175 11AC;
+D542;D542;1111 1175 11AD;D542;1111 1175 11AD;
+D543;D543;1111 1175 11AE;D543;1111 1175 11AE;
+D544;D544;1111 1175 11AF;D544;1111 1175 11AF;
+D545;D545;1111 1175 11B0;D545;1111 1175 11B0;
+D546;D546;1111 1175 11B1;D546;1111 1175 11B1;
+D547;D547;1111 1175 11B2;D547;1111 1175 11B2;
+D548;D548;1111 1175 11B3;D548;1111 1175 11B3;
+D549;D549;1111 1175 11B4;D549;1111 1175 11B4;
+D54A;D54A;1111 1175 11B5;D54A;1111 1175 11B5;
+D54B;D54B;1111 1175 11B6;D54B;1111 1175 11B6;
+D54C;D54C;1111 1175 11B7;D54C;1111 1175 11B7;
+D54D;D54D;1111 1175 11B8;D54D;1111 1175 11B8;
+D54E;D54E;1111 1175 11B9;D54E;1111 1175 11B9;
+D54F;D54F;1111 1175 11BA;D54F;1111 1175 11BA;
+D550;D550;1111 1175 11BB;D550;1111 1175 11BB;
+D551;D551;1111 1175 11BC;D551;1111 1175 11BC;
+D552;D552;1111 1175 11BD;D552;1111 1175 11BD;
+D553;D553;1111 1175 11BE;D553;1111 1175 11BE;
+D554;D554;1111 1175 11BF;D554;1111 1175 11BF;
+D555;D555;1111 1175 11C0;D555;1111 1175 11C0;
+D556;D556;1111 1175 11C1;D556;1111 1175 11C1;
+D557;D557;1111 1175 11C2;D557;1111 1175 11C2;
+D558;D558;1112 1161;D558;1112 1161;
+D559;D559;1112 1161 11A8;D559;1112 1161 11A8;
+D55A;D55A;1112 1161 11A9;D55A;1112 1161 11A9;
+D55B;D55B;1112 1161 11AA;D55B;1112 1161 11AA;
+D55C;D55C;1112 1161 11AB;D55C;1112 1161 11AB;
+D55D;D55D;1112 1161 11AC;D55D;1112 1161 11AC;
+D55E;D55E;1112 1161 11AD;D55E;1112 1161 11AD;
+D55F;D55F;1112 1161 11AE;D55F;1112 1161 11AE;
+D560;D560;1112 1161 11AF;D560;1112 1161 11AF;
+D561;D561;1112 1161 11B0;D561;1112 1161 11B0;
+D562;D562;1112 1161 11B1;D562;1112 1161 11B1;
+D563;D563;1112 1161 11B2;D563;1112 1161 11B2;
+D564;D564;1112 1161 11B3;D564;1112 1161 11B3;
+D565;D565;1112 1161 11B4;D565;1112 1161 11B4;
+D566;D566;1112 1161 11B5;D566;1112 1161 11B5;
+D567;D567;1112 1161 11B6;D567;1112 1161 11B6;
+D568;D568;1112 1161 11B7;D568;1112 1161 11B7;
+D569;D569;1112 1161 11B8;D569;1112 1161 11B8;
+D56A;D56A;1112 1161 11B9;D56A;1112 1161 11B9;
+D56B;D56B;1112 1161 11BA;D56B;1112 1161 11BA;
+D56C;D56C;1112 1161 11BB;D56C;1112 1161 11BB;
+D56D;D56D;1112 1161 11BC;D56D;1112 1161 11BC;
+D56E;D56E;1112 1161 11BD;D56E;1112 1161 11BD;
+D56F;D56F;1112 1161 11BE;D56F;1112 1161 11BE;
+D570;D570;1112 1161 11BF;D570;1112 1161 11BF;
+D571;D571;1112 1161 11C0;D571;1112 1161 11C0;
+D572;D572;1112 1161 11C1;D572;1112 1161 11C1;
+D573;D573;1112 1161 11C2;D573;1112 1161 11C2;
+D574;D574;1112 1162;D574;1112 1162;
+D575;D575;1112 1162 11A8;D575;1112 1162 11A8;
+D576;D576;1112 1162 11A9;D576;1112 1162 11A9;
+D577;D577;1112 1162 11AA;D577;1112 1162 11AA;
+D578;D578;1112 1162 11AB;D578;1112 1162 11AB;
+D579;D579;1112 1162 11AC;D579;1112 1162 11AC;
+D57A;D57A;1112 1162 11AD;D57A;1112 1162 11AD;
+D57B;D57B;1112 1162 11AE;D57B;1112 1162 11AE;
+D57C;D57C;1112 1162 11AF;D57C;1112 1162 11AF;
+D57D;D57D;1112 1162 11B0;D57D;1112 1162 11B0;
+D57E;D57E;1112 1162 11B1;D57E;1112 1162 11B1;
+D57F;D57F;1112 1162 11B2;D57F;1112 1162 11B2;
+D580;D580;1112 1162 11B3;D580;1112 1162 11B3;
+D581;D581;1112 1162 11B4;D581;1112 1162 11B4;
+D582;D582;1112 1162 11B5;D582;1112 1162 11B5;
+D583;D583;1112 1162 11B6;D583;1112 1162 11B6;
+D584;D584;1112 1162 11B7;D584;1112 1162 11B7;
+D585;D585;1112 1162 11B8;D585;1112 1162 11B8;
+D586;D586;1112 1162 11B9;D586;1112 1162 11B9;
+D587;D587;1112 1162 11BA;D587;1112 1162 11BA;
+D588;D588;1112 1162 11BB;D588;1112 1162 11BB;
+D589;D589;1112 1162 11BC;D589;1112 1162 11BC;
+D58A;D58A;1112 1162 11BD;D58A;1112 1162 11BD;
+D58B;D58B;1112 1162 11BE;D58B;1112 1162 11BE;
+D58C;D58C;1112 1162 11BF;D58C;1112 1162 11BF;
+D58D;D58D;1112 1162 11C0;D58D;1112 1162 11C0;
+D58E;D58E;1112 1162 11C1;D58E;1112 1162 11C1;
+D58F;D58F;1112 1162 11C2;D58F;1112 1162 11C2;
+D590;D590;1112 1163;D590;1112 1163;
+D591;D591;1112 1163 11A8;D591;1112 1163 11A8;
+D592;D592;1112 1163 11A9;D592;1112 1163 11A9;
+D593;D593;1112 1163 11AA;D593;1112 1163 11AA;
+D594;D594;1112 1163 11AB;D594;1112 1163 11AB;
+D595;D595;1112 1163 11AC;D595;1112 1163 11AC;
+D596;D596;1112 1163 11AD;D596;1112 1163 11AD;
+D597;D597;1112 1163 11AE;D597;1112 1163 11AE;
+D598;D598;1112 1163 11AF;D598;1112 1163 11AF;
+D599;D599;1112 1163 11B0;D599;1112 1163 11B0;
+D59A;D59A;1112 1163 11B1;D59A;1112 1163 11B1;
+D59B;D59B;1112 1163 11B2;D59B;1112 1163 11B2;
+D59C;D59C;1112 1163 11B3;D59C;1112 1163 11B3;
+D59D;D59D;1112 1163 11B4;D59D;1112 1163 11B4;
+D59E;D59E;1112 1163 11B5;D59E;1112 1163 11B5;
+D59F;D59F;1112 1163 11B6;D59F;1112 1163 11B6;
+D5A0;D5A0;1112 1163 11B7;D5A0;1112 1163 11B7;
+D5A1;D5A1;1112 1163 11B8;D5A1;1112 1163 11B8;
+D5A2;D5A2;1112 1163 11B9;D5A2;1112 1163 11B9;
+D5A3;D5A3;1112 1163 11BA;D5A3;1112 1163 11BA;
+D5A4;D5A4;1112 1163 11BB;D5A4;1112 1163 11BB;
+D5A5;D5A5;1112 1163 11BC;D5A5;1112 1163 11BC;
+D5A6;D5A6;1112 1163 11BD;D5A6;1112 1163 11BD;
+D5A7;D5A7;1112 1163 11BE;D5A7;1112 1163 11BE;
+D5A8;D5A8;1112 1163 11BF;D5A8;1112 1163 11BF;
+D5A9;D5A9;1112 1163 11C0;D5A9;1112 1163 11C0;
+D5AA;D5AA;1112 1163 11C1;D5AA;1112 1163 11C1;
+D5AB;D5AB;1112 1163 11C2;D5AB;1112 1163 11C2;
+D5AC;D5AC;1112 1164;D5AC;1112 1164;
+D5AD;D5AD;1112 1164 11A8;D5AD;1112 1164 11A8;
+D5AE;D5AE;1112 1164 11A9;D5AE;1112 1164 11A9;
+D5AF;D5AF;1112 1164 11AA;D5AF;1112 1164 11AA;
+D5B0;D5B0;1112 1164 11AB;D5B0;1112 1164 11AB;
+D5B1;D5B1;1112 1164 11AC;D5B1;1112 1164 11AC;
+D5B2;D5B2;1112 1164 11AD;D5B2;1112 1164 11AD;
+D5B3;D5B3;1112 1164 11AE;D5B3;1112 1164 11AE;
+D5B4;D5B4;1112 1164 11AF;D5B4;1112 1164 11AF;
+D5B5;D5B5;1112 1164 11B0;D5B5;1112 1164 11B0;
+D5B6;D5B6;1112 1164 11B1;D5B6;1112 1164 11B1;
+D5B7;D5B7;1112 1164 11B2;D5B7;1112 1164 11B2;
+D5B8;D5B8;1112 1164 11B3;D5B8;1112 1164 11B3;
+D5B9;D5B9;1112 1164 11B4;D5B9;1112 1164 11B4;
+D5BA;D5BA;1112 1164 11B5;D5BA;1112 1164 11B5;
+D5BB;D5BB;1112 1164 11B6;D5BB;1112 1164 11B6;
+D5BC;D5BC;1112 1164 11B7;D5BC;1112 1164 11B7;
+D5BD;D5BD;1112 1164 11B8;D5BD;1112 1164 11B8;
+D5BE;D5BE;1112 1164 11B9;D5BE;1112 1164 11B9;
+D5BF;D5BF;1112 1164 11BA;D5BF;1112 1164 11BA;
+D5C0;D5C0;1112 1164 11BB;D5C0;1112 1164 11BB;
+D5C1;D5C1;1112 1164 11BC;D5C1;1112 1164 11BC;
+D5C2;D5C2;1112 1164 11BD;D5C2;1112 1164 11BD;
+D5C3;D5C3;1112 1164 11BE;D5C3;1112 1164 11BE;
+D5C4;D5C4;1112 1164 11BF;D5C4;1112 1164 11BF;
+D5C5;D5C5;1112 1164 11C0;D5C5;1112 1164 11C0;
+D5C6;D5C6;1112 1164 11C1;D5C6;1112 1164 11C1;
+D5C7;D5C7;1112 1164 11C2;D5C7;1112 1164 11C2;
+D5C8;D5C8;1112 1165;D5C8;1112 1165;
+D5C9;D5C9;1112 1165 11A8;D5C9;1112 1165 11A8;
+D5CA;D5CA;1112 1165 11A9;D5CA;1112 1165 11A9;
+D5CB;D5CB;1112 1165 11AA;D5CB;1112 1165 11AA;
+D5CC;D5CC;1112 1165 11AB;D5CC;1112 1165 11AB;
+D5CD;D5CD;1112 1165 11AC;D5CD;1112 1165 11AC;
+D5CE;D5CE;1112 1165 11AD;D5CE;1112 1165 11AD;
+D5CF;D5CF;1112 1165 11AE;D5CF;1112 1165 11AE;
+D5D0;D5D0;1112 1165 11AF;D5D0;1112 1165 11AF;
+D5D1;D5D1;1112 1165 11B0;D5D1;1112 1165 11B0;
+D5D2;D5D2;1112 1165 11B1;D5D2;1112 1165 11B1;
+D5D3;D5D3;1112 1165 11B2;D5D3;1112 1165 11B2;
+D5D4;D5D4;1112 1165 11B3;D5D4;1112 1165 11B3;
+D5D5;D5D5;1112 1165 11B4;D5D5;1112 1165 11B4;
+D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5;
+D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6;
+D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7;
+D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8;
+D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9;
+D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA;
+D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB;
+D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC;
+D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD;
+D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE;
+D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF;
+D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0;
+D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1;
+D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2;
+D5E4;D5E4;1112 1166;D5E4;1112 1166;
+D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8;
+D5E6;D5E6;1112 1166 11A9;D5E6;1112 1166 11A9;
+D5E7;D5E7;1112 1166 11AA;D5E7;1112 1166 11AA;
+D5E8;D5E8;1112 1166 11AB;D5E8;1112 1166 11AB;
+D5E9;D5E9;1112 1166 11AC;D5E9;1112 1166 11AC;
+D5EA;D5EA;1112 1166 11AD;D5EA;1112 1166 11AD;
+D5EB;D5EB;1112 1166 11AE;D5EB;1112 1166 11AE;
+D5EC;D5EC;1112 1166 11AF;D5EC;1112 1166 11AF;
+D5ED;D5ED;1112 1166 11B0;D5ED;1112 1166 11B0;
+D5EE;D5EE;1112 1166 11B1;D5EE;1112 1166 11B1;
+D5EF;D5EF;1112 1166 11B2;D5EF;1112 1166 11B2;
+D5F0;D5F0;1112 1166 11B3;D5F0;1112 1166 11B3;
+D5F1;D5F1;1112 1166 11B4;D5F1;1112 1166 11B4;
+D5F2;D5F2;1112 1166 11B5;D5F2;1112 1166 11B5;
+D5F3;D5F3;1112 1166 11B6;D5F3;1112 1166 11B6;
+D5F4;D5F4;1112 1166 11B7;D5F4;1112 1166 11B7;
+D5F5;D5F5;1112 1166 11B8;D5F5;1112 1166 11B8;
+D5F6;D5F6;1112 1166 11B9;D5F6;1112 1166 11B9;
+D5F7;D5F7;1112 1166 11BA;D5F7;1112 1166 11BA;
+D5F8;D5F8;1112 1166 11BB;D5F8;1112 1166 11BB;
+D5F9;D5F9;1112 1166 11BC;D5F9;1112 1166 11BC;
+D5FA;D5FA;1112 1166 11BD;D5FA;1112 1166 11BD;
+D5FB;D5FB;1112 1166 11BE;D5FB;1112 1166 11BE;
+D5FC;D5FC;1112 1166 11BF;D5FC;1112 1166 11BF;
+D5FD;D5FD;1112 1166 11C0;D5FD;1112 1166 11C0;
+D5FE;D5FE;1112 1166 11C1;D5FE;1112 1166 11C1;
+D5FF;D5FF;1112 1166 11C2;D5FF;1112 1166 11C2;
+D600;D600;1112 1167;D600;1112 1167;
+D601;D601;1112 1167 11A8;D601;1112 1167 11A8;
+D602;D602;1112 1167 11A9;D602;1112 1167 11A9;
+D603;D603;1112 1167 11AA;D603;1112 1167 11AA;
+D604;D604;1112 1167 11AB;D604;1112 1167 11AB;
+D605;D605;1112 1167 11AC;D605;1112 1167 11AC;
+D606;D606;1112 1167 11AD;D606;1112 1167 11AD;
+D607;D607;1112 1167 11AE;D607;1112 1167 11AE;
+D608;D608;1112 1167 11AF;D608;1112 1167 11AF;
+D609;D609;1112 1167 11B0;D609;1112 1167 11B0;
+D60A;D60A;1112 1167 11B1;D60A;1112 1167 11B1;
+D60B;D60B;1112 1167 11B2;D60B;1112 1167 11B2;
+D60C;D60C;1112 1167 11B3;D60C;1112 1167 11B3;
+D60D;D60D;1112 1167 11B4;D60D;1112 1167 11B4;
+D60E;D60E;1112 1167 11B5;D60E;1112 1167 11B5;
+D60F;D60F;1112 1167 11B6;D60F;1112 1167 11B6;
+D610;D610;1112 1167 11B7;D610;1112 1167 11B7;
+D611;D611;1112 1167 11B8;D611;1112 1167 11B8;
+D612;D612;1112 1167 11B9;D612;1112 1167 11B9;
+D613;D613;1112 1167 11BA;D613;1112 1167 11BA;
+D614;D614;1112 1167 11BB;D614;1112 1167 11BB;
+D615;D615;1112 1167 11BC;D615;1112 1167 11BC;
+D616;D616;1112 1167 11BD;D616;1112 1167 11BD;
+D617;D617;1112 1167 11BE;D617;1112 1167 11BE;
+D618;D618;1112 1167 11BF;D618;1112 1167 11BF;
+D619;D619;1112 1167 11C0;D619;1112 1167 11C0;
+D61A;D61A;1112 1167 11C1;D61A;1112 1167 11C1;
+D61B;D61B;1112 1167 11C2;D61B;1112 1167 11C2;
+D61C;D61C;1112 1168;D61C;1112 1168;
+D61D;D61D;1112 1168 11A8;D61D;1112 1168 11A8;
+D61E;D61E;1112 1168 11A9;D61E;1112 1168 11A9;
+D61F;D61F;1112 1168 11AA;D61F;1112 1168 11AA;
+D620;D620;1112 1168 11AB;D620;1112 1168 11AB;
+D621;D621;1112 1168 11AC;D621;1112 1168 11AC;
+D622;D622;1112 1168 11AD;D622;1112 1168 11AD;
+D623;D623;1112 1168 11AE;D623;1112 1168 11AE;
+D624;D624;1112 1168 11AF;D624;1112 1168 11AF;
+D625;D625;1112 1168 11B0;D625;1112 1168 11B0;
+D626;D626;1112 1168 11B1;D626;1112 1168 11B1;
+D627;D627;1112 1168 11B2;D627;1112 1168 11B2;
+D628;D628;1112 1168 11B3;D628;1112 1168 11B3;
+D629;D629;1112 1168 11B4;D629;1112 1168 11B4;
+D62A;D62A;1112 1168 11B5;D62A;1112 1168 11B5;
+D62B;D62B;1112 1168 11B6;D62B;1112 1168 11B6;
+D62C;D62C;1112 1168 11B7;D62C;1112 1168 11B7;
+D62D;D62D;1112 1168 11B8;D62D;1112 1168 11B8;
+D62E;D62E;1112 1168 11B9;D62E;1112 1168 11B9;
+D62F;D62F;1112 1168 11BA;D62F;1112 1168 11BA;
+D630;D630;1112 1168 11BB;D630;1112 1168 11BB;
+D631;D631;1112 1168 11BC;D631;1112 1168 11BC;
+D632;D632;1112 1168 11BD;D632;1112 1168 11BD;
+D633;D633;1112 1168 11BE;D633;1112 1168 11BE;
+D634;D634;1112 1168 11BF;D634;1112 1168 11BF;
+D635;D635;1112 1168 11C0;D635;1112 1168 11C0;
+D636;D636;1112 1168 11C1;D636;1112 1168 11C1;
+D637;D637;1112 1168 11C2;D637;1112 1168 11C2;
+D638;D638;1112 1169;D638;1112 1169;
+D639;D639;1112 1169 11A8;D639;1112 1169 11A8;
+D63A;D63A;1112 1169 11A9;D63A;1112 1169 11A9;
+D63B;D63B;1112 1169 11AA;D63B;1112 1169 11AA;
+D63C;D63C;1112 1169 11AB;D63C;1112 1169 11AB;
+D63D;D63D;1112 1169 11AC;D63D;1112 1169 11AC;
+D63E;D63E;1112 1169 11AD;D63E;1112 1169 11AD;
+D63F;D63F;1112 1169 11AE;D63F;1112 1169 11AE;
+D640;D640;1112 1169 11AF;D640;1112 1169 11AF;
+D641;D641;1112 1169 11B0;D641;1112 1169 11B0;
+D642;D642;1112 1169 11B1;D642;1112 1169 11B1;
+D643;D643;1112 1169 11B2;D643;1112 1169 11B2;
+D644;D644;1112 1169 11B3;D644;1112 1169 11B3;
+D645;D645;1112 1169 11B4;D645;1112 1169 11B4;
+D646;D646;1112 1169 11B5;D646;1112 1169 11B5;
+D647;D647;1112 1169 11B6;D647;1112 1169 11B6;
+D648;D648;1112 1169 11B7;D648;1112 1169 11B7;
+D649;D649;1112 1169 11B8;D649;1112 1169 11B8;
+D64A;D64A;1112 1169 11B9;D64A;1112 1169 11B9;
+D64B;D64B;1112 1169 11BA;D64B;1112 1169 11BA;
+D64C;D64C;1112 1169 11BB;D64C;1112 1169 11BB;
+D64D;D64D;1112 1169 11BC;D64D;1112 1169 11BC;
+D64E;D64E;1112 1169 11BD;D64E;1112 1169 11BD;
+D64F;D64F;1112 1169 11BE;D64F;1112 1169 11BE;
+D650;D650;1112 1169 11BF;D650;1112 1169 11BF;
+D651;D651;1112 1169 11C0;D651;1112 1169 11C0;
+D652;D652;1112 1169 11C1;D652;1112 1169 11C1;
+D653;D653;1112 1169 11C2;D653;1112 1169 11C2;
+D654;D654;1112 116A;D654;1112 116A;
+D655;D655;1112 116A 11A8;D655;1112 116A 11A8;
+D656;D656;1112 116A 11A9;D656;1112 116A 11A9;
+D657;D657;1112 116A 11AA;D657;1112 116A 11AA;
+D658;D658;1112 116A 11AB;D658;1112 116A 11AB;
+D659;D659;1112 116A 11AC;D659;1112 116A 11AC;
+D65A;D65A;1112 116A 11AD;D65A;1112 116A 11AD;
+D65B;D65B;1112 116A 11AE;D65B;1112 116A 11AE;
+D65C;D65C;1112 116A 11AF;D65C;1112 116A 11AF;
+D65D;D65D;1112 116A 11B0;D65D;1112 116A 11B0;
+D65E;D65E;1112 116A 11B1;D65E;1112 116A 11B1;
+D65F;D65F;1112 116A 11B2;D65F;1112 116A 11B2;
+D660;D660;1112 116A 11B3;D660;1112 116A 11B3;
+D661;D661;1112 116A 11B4;D661;1112 116A 11B4;
+D662;D662;1112 116A 11B5;D662;1112 116A 11B5;
+D663;D663;1112 116A 11B6;D663;1112 116A 11B6;
+D664;D664;1112 116A 11B7;D664;1112 116A 11B7;
+D665;D665;1112 116A 11B8;D665;1112 116A 11B8;
+D666;D666;1112 116A 11B9;D666;1112 116A 11B9;
+D667;D667;1112 116A 11BA;D667;1112 116A 11BA;
+D668;D668;1112 116A 11BB;D668;1112 116A 11BB;
+D669;D669;1112 116A 11BC;D669;1112 116A 11BC;
+D66A;D66A;1112 116A 11BD;D66A;1112 116A 11BD;
+D66B;D66B;1112 116A 11BE;D66B;1112 116A 11BE;
+D66C;D66C;1112 116A 11BF;D66C;1112 116A 11BF;
+D66D;D66D;1112 116A 11C0;D66D;1112 116A 11C0;
+D66E;D66E;1112 116A 11C1;D66E;1112 116A 11C1;
+D66F;D66F;1112 116A 11C2;D66F;1112 116A 11C2;
+D670;D670;1112 116B;D670;1112 116B;
+D671;D671;1112 116B 11A8;D671;1112 116B 11A8;
+D672;D672;1112 116B 11A9;D672;1112 116B 11A9;
+D673;D673;1112 116B 11AA;D673;1112 116B 11AA;
+D674;D674;1112 116B 11AB;D674;1112 116B 11AB;
+D675;D675;1112 116B 11AC;D675;1112 116B 11AC;
+D676;D676;1112 116B 11AD;D676;1112 116B 11AD;
+D677;D677;1112 116B 11AE;D677;1112 116B 11AE;
+D678;D678;1112 116B 11AF;D678;1112 116B 11AF;
+D679;D679;1112 116B 11B0;D679;1112 116B 11B0;
+D67A;D67A;1112 116B 11B1;D67A;1112 116B 11B1;
+D67B;D67B;1112 116B 11B2;D67B;1112 116B 11B2;
+D67C;D67C;1112 116B 11B3;D67C;1112 116B 11B3;
+D67D;D67D;1112 116B 11B4;D67D;1112 116B 11B4;
+D67E;D67E;1112 116B 11B5;D67E;1112 116B 11B5;
+D67F;D67F;1112 116B 11B6;D67F;1112 116B 11B6;
+D680;D680;1112 116B 11B7;D680;1112 116B 11B7;
+D681;D681;1112 116B 11B8;D681;1112 116B 11B8;
+D682;D682;1112 116B 11B9;D682;1112 116B 11B9;
+D683;D683;1112 116B 11BA;D683;1112 116B 11BA;
+D684;D684;1112 116B 11BB;D684;1112 116B 11BB;
+D685;D685;1112 116B 11BC;D685;1112 116B 11BC;
+D686;D686;1112 116B 11BD;D686;1112 116B 11BD;
+D687;D687;1112 116B 11BE;D687;1112 116B 11BE;
+D688;D688;1112 116B 11BF;D688;1112 116B 11BF;
+D689;D689;1112 116B 11C0;D689;1112 116B 11C0;
+D68A;D68A;1112 116B 11C1;D68A;1112 116B 11C1;
+D68B;D68B;1112 116B 11C2;D68B;1112 116B 11C2;
+D68C;D68C;1112 116C;D68C;1112 116C;
+D68D;D68D;1112 116C 11A8;D68D;1112 116C 11A8;
+D68E;D68E;1112 116C 11A9;D68E;1112 116C 11A9;
+D68F;D68F;1112 116C 11AA;D68F;1112 116C 11AA;
+D690;D690;1112 116C 11AB;D690;1112 116C 11AB;
+D691;D691;1112 116C 11AC;D691;1112 116C 11AC;
+D692;D692;1112 116C 11AD;D692;1112 116C 11AD;
+D693;D693;1112 116C 11AE;D693;1112 116C 11AE;
+D694;D694;1112 116C 11AF;D694;1112 116C 11AF;
+D695;D695;1112 116C 11B0;D695;1112 116C 11B0;
+D696;D696;1112 116C 11B1;D696;1112 116C 11B1;
+D697;D697;1112 116C 11B2;D697;1112 116C 11B2;
+D698;D698;1112 116C 11B3;D698;1112 116C 11B3;
+D699;D699;1112 116C 11B4;D699;1112 116C 11B4;
+D69A;D69A;1112 116C 11B5;D69A;1112 116C 11B5;
+D69B;D69B;1112 116C 11B6;D69B;1112 116C 11B6;
+D69C;D69C;1112 116C 11B7;D69C;1112 116C 11B7;
+D69D;D69D;1112 116C 11B8;D69D;1112 116C 11B8;
+D69E;D69E;1112 116C 11B9;D69E;1112 116C 11B9;
+D69F;D69F;1112 116C 11BA;D69F;1112 116C 11BA;
+D6A0;D6A0;1112 116C 11BB;D6A0;1112 116C 11BB;
+D6A1;D6A1;1112 116C 11BC;D6A1;1112 116C 11BC;
+D6A2;D6A2;1112 116C 11BD;D6A2;1112 116C 11BD;
+D6A3;D6A3;1112 116C 11BE;D6A3;1112 116C 11BE;
+D6A4;D6A4;1112 116C 11BF;D6A4;1112 116C 11BF;
+D6A5;D6A5;1112 116C 11C0;D6A5;1112 116C 11C0;
+D6A6;D6A6;1112 116C 11C1;D6A6;1112 116C 11C1;
+D6A7;D6A7;1112 116C 11C2;D6A7;1112 116C 11C2;
+D6A8;D6A8;1112 116D;D6A8;1112 116D;
+D6A9;D6A9;1112 116D 11A8;D6A9;1112 116D 11A8;
+D6AA;D6AA;1112 116D 11A9;D6AA;1112 116D 11A9;
+D6AB;D6AB;1112 116D 11AA;D6AB;1112 116D 11AA;
+D6AC;D6AC;1112 116D 11AB;D6AC;1112 116D 11AB;
+D6AD;D6AD;1112 116D 11AC;D6AD;1112 116D 11AC;
+D6AE;D6AE;1112 116D 11AD;D6AE;1112 116D 11AD;
+D6AF;D6AF;1112 116D 11AE;D6AF;1112 116D 11AE;
+D6B0;D6B0;1112 116D 11AF;D6B0;1112 116D 11AF;
+D6B1;D6B1;1112 116D 11B0;D6B1;1112 116D 11B0;
+D6B2;D6B2;1112 116D 11B1;D6B2;1112 116D 11B1;
+D6B3;D6B3;1112 116D 11B2;D6B3;1112 116D 11B2;
+D6B4;D6B4;1112 116D 11B3;D6B4;1112 116D 11B3;
+D6B5;D6B5;1112 116D 11B4;D6B5;1112 116D 11B4;
+D6B6;D6B6;1112 116D 11B5;D6B6;1112 116D 11B5;
+D6B7;D6B7;1112 116D 11B6;D6B7;1112 116D 11B6;
+D6B8;D6B8;1112 116D 11B7;D6B8;1112 116D 11B7;
+D6B9;D6B9;1112 116D 11B8;D6B9;1112 116D 11B8;
+D6BA;D6BA;1112 116D 11B9;D6BA;1112 116D 11B9;
+D6BB;D6BB;1112 116D 11BA;D6BB;1112 116D 11BA;
+D6BC;D6BC;1112 116D 11BB;D6BC;1112 116D 11BB;
+D6BD;D6BD;1112 116D 11BC;D6BD;1112 116D 11BC;
+D6BE;D6BE;1112 116D 11BD;D6BE;1112 116D 11BD;
+D6BF;D6BF;1112 116D 11BE;D6BF;1112 116D 11BE;
+D6C0;D6C0;1112 116D 11BF;D6C0;1112 116D 11BF;
+D6C1;D6C1;1112 116D 11C0;D6C1;1112 116D 11C0;
+D6C2;D6C2;1112 116D 11C1;D6C2;1112 116D 11C1;
+D6C3;D6C3;1112 116D 11C2;D6C3;1112 116D 11C2;
+D6C4;D6C4;1112 116E;D6C4;1112 116E;
+D6C5;D6C5;1112 116E 11A8;D6C5;1112 116E 11A8;
+D6C6;D6C6;1112 116E 11A9;D6C6;1112 116E 11A9;
+D6C7;D6C7;1112 116E 11AA;D6C7;1112 116E 11AA;
+D6C8;D6C8;1112 116E 11AB;D6C8;1112 116E 11AB;
+D6C9;D6C9;1112 116E 11AC;D6C9;1112 116E 11AC;
+D6CA;D6CA;1112 116E 11AD;D6CA;1112 116E 11AD;
+D6CB;D6CB;1112 116E 11AE;D6CB;1112 116E 11AE;
+D6CC;D6CC;1112 116E 11AF;D6CC;1112 116E 11AF;
+D6CD;D6CD;1112 116E 11B0;D6CD;1112 116E 11B0;
+D6CE;D6CE;1112 116E 11B1;D6CE;1112 116E 11B1;
+D6CF;D6CF;1112 116E 11B2;D6CF;1112 116E 11B2;
+D6D0;D6D0;1112 116E 11B3;D6D0;1112 116E 11B3;
+D6D1;D6D1;1112 116E 11B4;D6D1;1112 116E 11B4;
+D6D2;D6D2;1112 116E 11B5;D6D2;1112 116E 11B5;
+D6D3;D6D3;1112 116E 11B6;D6D3;1112 116E 11B6;
+D6D4;D6D4;1112 116E 11B7;D6D4;1112 116E 11B7;
+D6D5;D6D5;1112 116E 11B8;D6D5;1112 116E 11B8;
+D6D6;D6D6;1112 116E 11B9;D6D6;1112 116E 11B9;
+D6D7;D6D7;1112 116E 11BA;D6D7;1112 116E 11BA;
+D6D8;D6D8;1112 116E 11BB;D6D8;1112 116E 11BB;
+D6D9;D6D9;1112 116E 11BC;D6D9;1112 116E 11BC;
+D6DA;D6DA;1112 116E 11BD;D6DA;1112 116E 11BD;
+D6DB;D6DB;1112 116E 11BE;D6DB;1112 116E 11BE;
+D6DC;D6DC;1112 116E 11BF;D6DC;1112 116E 11BF;
+D6DD;D6DD;1112 116E 11C0;D6DD;1112 116E 11C0;
+D6DE;D6DE;1112 116E 11C1;D6DE;1112 116E 11C1;
+D6DF;D6DF;1112 116E 11C2;D6DF;1112 116E 11C2;
+D6E0;D6E0;1112 116F;D6E0;1112 116F;
+D6E1;D6E1;1112 116F 11A8;D6E1;1112 116F 11A8;
+D6E2;D6E2;1112 116F 11A9;D6E2;1112 116F 11A9;
+D6E3;D6E3;1112 116F 11AA;D6E3;1112 116F 11AA;
+D6E4;D6E4;1112 116F 11AB;D6E4;1112 116F 11AB;
+D6E5;D6E5;1112 116F 11AC;D6E5;1112 116F 11AC;
+D6E6;D6E6;1112 116F 11AD;D6E6;1112 116F 11AD;
+D6E7;D6E7;1112 116F 11AE;D6E7;1112 116F 11AE;
+D6E8;D6E8;1112 116F 11AF;D6E8;1112 116F 11AF;
+D6E9;D6E9;1112 116F 11B0;D6E9;1112 116F 11B0;
+D6EA;D6EA;1112 116F 11B1;D6EA;1112 116F 11B1;
+D6EB;D6EB;1112 116F 11B2;D6EB;1112 116F 11B2;
+D6EC;D6EC;1112 116F 11B3;D6EC;1112 116F 11B3;
+D6ED;D6ED;1112 116F 11B4;D6ED;1112 116F 11B4;
+D6EE;D6EE;1112 116F 11B5;D6EE;1112 116F 11B5;
+D6EF;D6EF;1112 116F 11B6;D6EF;1112 116F 11B6;
+D6F0;D6F0;1112 116F 11B7;D6F0;1112 116F 11B7;
+D6F1;D6F1;1112 116F 11B8;D6F1;1112 116F 11B8;
+D6F2;D6F2;1112 116F 11B9;D6F2;1112 116F 11B9;
+D6F3;D6F3;1112 116F 11BA;D6F3;1112 116F 11BA;
+D6F4;D6F4;1112 116F 11BB;D6F4;1112 116F 11BB;
+D6F5;D6F5;1112 116F 11BC;D6F5;1112 116F 11BC;
+D6F6;D6F6;1112 116F 11BD;D6F6;1112 116F 11BD;
+D6F7;D6F7;1112 116F 11BE;D6F7;1112 116F 11BE;
+D6F8;D6F8;1112 116F 11BF;D6F8;1112 116F 11BF;
+D6F9;D6F9;1112 116F 11C0;D6F9;1112 116F 11C0;
+D6FA;D6FA;1112 116F 11C1;D6FA;1112 116F 11C1;
+D6FB;D6FB;1112 116F 11C2;D6FB;1112 116F 11C2;
+D6FC;D6FC;1112 1170;D6FC;1112 1170;
+D6FD;D6FD;1112 1170 11A8;D6FD;1112 1170 11A8;
+D6FE;D6FE;1112 1170 11A9;D6FE;1112 1170 11A9;
+D6FF;D6FF;1112 1170 11AA;D6FF;1112 1170 11AA;
+D700;D700;1112 1170 11AB;D700;1112 1170 11AB;
+D701;D701;1112 1170 11AC;D701;1112 1170 11AC;
+D702;D702;1112 1170 11AD;D702;1112 1170 11AD;
+D703;D703;1112 1170 11AE;D703;1112 1170 11AE;
+D704;D704;1112 1170 11AF;D704;1112 1170 11AF;
+D705;D705;1112 1170 11B0;D705;1112 1170 11B0;
+D706;D706;1112 1170 11B1;D706;1112 1170 11B1;
+D707;D707;1112 1170 11B2;D707;1112 1170 11B2;
+D708;D708;1112 1170 11B3;D708;1112 1170 11B3;
+D709;D709;1112 1170 11B4;D709;1112 1170 11B4;
+D70A;D70A;1112 1170 11B5;D70A;1112 1170 11B5;
+D70B;D70B;1112 1170 11B6;D70B;1112 1170 11B6;
+D70C;D70C;1112 1170 11B7;D70C;1112 1170 11B7;
+D70D;D70D;1112 1170 11B8;D70D;1112 1170 11B8;
+D70E;D70E;1112 1170 11B9;D70E;1112 1170 11B9;
+D70F;D70F;1112 1170 11BA;D70F;1112 1170 11BA;
+D710;D710;1112 1170 11BB;D710;1112 1170 11BB;
+D711;D711;1112 1170 11BC;D711;1112 1170 11BC;
+D712;D712;1112 1170 11BD;D712;1112 1170 11BD;
+D713;D713;1112 1170 11BE;D713;1112 1170 11BE;
+D714;D714;1112 1170 11BF;D714;1112 1170 11BF;
+D715;D715;1112 1170 11C0;D715;1112 1170 11C0;
+D716;D716;1112 1170 11C1;D716;1112 1170 11C1;
+D717;D717;1112 1170 11C2;D717;1112 1170 11C2;
+D718;D718;1112 1171;D718;1112 1171;
+D719;D719;1112 1171 11A8;D719;1112 1171 11A8;
+D71A;D71A;1112 1171 11A9;D71A;1112 1171 11A9;
+D71B;D71B;1112 1171 11AA;D71B;1112 1171 11AA;
+D71C;D71C;1112 1171 11AB;D71C;1112 1171 11AB;
+D71D;D71D;1112 1171 11AC;D71D;1112 1171 11AC;
+D71E;D71E;1112 1171 11AD;D71E;1112 1171 11AD;
+D71F;D71F;1112 1171 11AE;D71F;1112 1171 11AE;
+D720;D720;1112 1171 11AF;D720;1112 1171 11AF;
+D721;D721;1112 1171 11B0;D721;1112 1171 11B0;
+D722;D722;1112 1171 11B1;D722;1112 1171 11B1;
+D723;D723;1112 1171 11B2;D723;1112 1171 11B2;
+D724;D724;1112 1171 11B3;D724;1112 1171 11B3;
+D725;D725;1112 1171 11B4;D725;1112 1171 11B4;
+D726;D726;1112 1171 11B5;D726;1112 1171 11B5;
+D727;D727;1112 1171 11B6;D727;1112 1171 11B6;
+D728;D728;1112 1171 11B7;D728;1112 1171 11B7;
+D729;D729;1112 1171 11B8;D729;1112 1171 11B8;
+D72A;D72A;1112 1171 11B9;D72A;1112 1171 11B9;
+D72B;D72B;1112 1171 11BA;D72B;1112 1171 11BA;
+D72C;D72C;1112 1171 11BB;D72C;1112 1171 11BB;
+D72D;D72D;1112 1171 11BC;D72D;1112 1171 11BC;
+D72E;D72E;1112 1171 11BD;D72E;1112 1171 11BD;
+D72F;D72F;1112 1171 11BE;D72F;1112 1171 11BE;
+D730;D730;1112 1171 11BF;D730;1112 1171 11BF;
+D731;D731;1112 1171 11C0;D731;1112 1171 11C0;
+D732;D732;1112 1171 11C1;D732;1112 1171 11C1;
+D733;D733;1112 1171 11C2;D733;1112 1171 11C2;
+D734;D734;1112 1172;D734;1112 1172;
+D735;D735;1112 1172 11A8;D735;1112 1172 11A8;
+D736;D736;1112 1172 11A9;D736;1112 1172 11A9;
+D737;D737;1112 1172 11AA;D737;1112 1172 11AA;
+D738;D738;1112 1172 11AB;D738;1112 1172 11AB;
+D739;D739;1112 1172 11AC;D739;1112 1172 11AC;
+D73A;D73A;1112 1172 11AD;D73A;1112 1172 11AD;
+D73B;D73B;1112 1172 11AE;D73B;1112 1172 11AE;
+D73C;D73C;1112 1172 11AF;D73C;1112 1172 11AF;
+D73D;D73D;1112 1172 11B0;D73D;1112 1172 11B0;
+D73E;D73E;1112 1172 11B1;D73E;1112 1172 11B1;
+D73F;D73F;1112 1172 11B2;D73F;1112 1172 11B2;
+D740;D740;1112 1172 11B3;D740;1112 1172 11B3;
+D741;D741;1112 1172 11B4;D741;1112 1172 11B4;
+D742;D742;1112 1172 11B5;D742;1112 1172 11B5;
+D743;D743;1112 1172 11B6;D743;1112 1172 11B6;
+D744;D744;1112 1172 11B7;D744;1112 1172 11B7;
+D745;D745;1112 1172 11B8;D745;1112 1172 11B8;
+D746;D746;1112 1172 11B9;D746;1112 1172 11B9;
+D747;D747;1112 1172 11BA;D747;1112 1172 11BA;
+D748;D748;1112 1172 11BB;D748;1112 1172 11BB;
+D749;D749;1112 1172 11BC;D749;1112 1172 11BC;
+D74A;D74A;1112 1172 11BD;D74A;1112 1172 11BD;
+D74B;D74B;1112 1172 11BE;D74B;1112 1172 11BE;
+D74C;D74C;1112 1172 11BF;D74C;1112 1172 11BF;
+D74D;D74D;1112 1172 11C0;D74D;1112 1172 11C0;
+D74E;D74E;1112 1172 11C1;D74E;1112 1172 11C1;
+D74F;D74F;1112 1172 11C2;D74F;1112 1172 11C2;
+D750;D750;1112 1173;D750;1112 1173;
+D751;D751;1112 1173 11A8;D751;1112 1173 11A8;
+D752;D752;1112 1173 11A9;D752;1112 1173 11A9;
+D753;D753;1112 1173 11AA;D753;1112 1173 11AA;
+D754;D754;1112 1173 11AB;D754;1112 1173 11AB;
+D755;D755;1112 1173 11AC;D755;1112 1173 11AC;
+D756;D756;1112 1173 11AD;D756;1112 1173 11AD;
+D757;D757;1112 1173 11AE;D757;1112 1173 11AE;
+D758;D758;1112 1173 11AF;D758;1112 1173 11AF;
+D759;D759;1112 1173 11B0;D759;1112 1173 11B0;
+D75A;D75A;1112 1173 11B1;D75A;1112 1173 11B1;
+D75B;D75B;1112 1173 11B2;D75B;1112 1173 11B2;
+D75C;D75C;1112 1173 11B3;D75C;1112 1173 11B3;
+D75D;D75D;1112 1173 11B4;D75D;1112 1173 11B4;
+D75E;D75E;1112 1173 11B5;D75E;1112 1173 11B5;
+D75F;D75F;1112 1173 11B6;D75F;1112 1173 11B6;
+D760;D760;1112 1173 11B7;D760;1112 1173 11B7;
+D761;D761;1112 1173 11B8;D761;1112 1173 11B8;
+D762;D762;1112 1173 11B9;D762;1112 1173 11B9;
+D763;D763;1112 1173 11BA;D763;1112 1173 11BA;
+D764;D764;1112 1173 11BB;D764;1112 1173 11BB;
+D765;D765;1112 1173 11BC;D765;1112 1173 11BC;
+D766;D766;1112 1173 11BD;D766;1112 1173 11BD;
+D767;D767;1112 1173 11BE;D767;1112 1173 11BE;
+D768;D768;1112 1173 11BF;D768;1112 1173 11BF;
+D769;D769;1112 1173 11C0;D769;1112 1173 11C0;
+D76A;D76A;1112 1173 11C1;D76A;1112 1173 11C1;
+D76B;D76B;1112 1173 11C2;D76B;1112 1173 11C2;
+D76C;D76C;1112 1174;D76C;1112 1174;
+D76D;D76D;1112 1174 11A8;D76D;1112 1174 11A8;
+D76E;D76E;1112 1174 11A9;D76E;1112 1174 11A9;
+D76F;D76F;1112 1174 11AA;D76F;1112 1174 11AA;
+D770;D770;1112 1174 11AB;D770;1112 1174 11AB;
+D771;D771;1112 1174 11AC;D771;1112 1174 11AC;
+D772;D772;1112 1174 11AD;D772;1112 1174 11AD;
+D773;D773;1112 1174 11AE;D773;1112 1174 11AE;
+D774;D774;1112 1174 11AF;D774;1112 1174 11AF;
+D775;D775;1112 1174 11B0;D775;1112 1174 11B0;
+D776;D776;1112 1174 11B1;D776;1112 1174 11B1;
+D777;D777;1112 1174 11B2;D777;1112 1174 11B2;
+D778;D778;1112 1174 11B3;D778;1112 1174 11B3;
+D779;D779;1112 1174 11B4;D779;1112 1174 11B4;
+D77A;D77A;1112 1174 11B5;D77A;1112 1174 11B5;
+D77B;D77B;1112 1174 11B6;D77B;1112 1174 11B6;
+D77C;D77C;1112 1174 11B7;D77C;1112 1174 11B7;
+D77D;D77D;1112 1174 11B8;D77D;1112 1174 11B8;
+D77E;D77E;1112 1174 11B9;D77E;1112 1174 11B9;
+D77F;D77F;1112 1174 11BA;D77F;1112 1174 11BA;
+D780;D780;1112 1174 11BB;D780;1112 1174 11BB;
+D781;D781;1112 1174 11BC;D781;1112 1174 11BC;
+D782;D782;1112 1174 11BD;D782;1112 1174 11BD;
+D783;D783;1112 1174 11BE;D783;1112 1174 11BE;
+D784;D784;1112 1174 11BF;D784;1112 1174 11BF;
+D785;D785;1112 1174 11C0;D785;1112 1174 11C0;
+D786;D786;1112 1174 11C1;D786;1112 1174 11C1;
+D787;D787;1112 1174 11C2;D787;1112 1174 11C2;
+D788;D788;1112 1175;D788;1112 1175;
+D789;D789;1112 1175 11A8;D789;1112 1175 11A8;
+D78A;D78A;1112 1175 11A9;D78A;1112 1175 11A9;
+D78B;D78B;1112 1175 11AA;D78B;1112 1175 11AA;
+D78C;D78C;1112 1175 11AB;D78C;1112 1175 11AB;
+D78D;D78D;1112 1175 11AC;D78D;1112 1175 11AC;
+D78E;D78E;1112 1175 11AD;D78E;1112 1175 11AD;
+D78F;D78F;1112 1175 11AE;D78F;1112 1175 11AE;
+D790;D790;1112 1175 11AF;D790;1112 1175 11AF;
+D791;D791;1112 1175 11B0;D791;1112 1175 11B0;
+D792;D792;1112 1175 11B1;D792;1112 1175 11B1;
+D793;D793;1112 1175 11B2;D793;1112 1175 11B2;
+D794;D794;1112 1175 11B3;D794;1112 1175 11B3;
+D795;D795;1112 1175 11B4;D795;1112 1175 11B4;
+D796;D796;1112 1175 11B5;D796;1112 1175 11B5;
+D797;D797;1112 1175 11B6;D797;1112 1175 11B6;
+D798;D798;1112 1175 11B7;D798;1112 1175 11B7;
+D799;D799;1112 1175 11B8;D799;1112 1175 11B8;
+D79A;D79A;1112 1175 11B9;D79A;1112 1175 11B9;
+D79B;D79B;1112 1175 11BA;D79B;1112 1175 11BA;
+D79C;D79C;1112 1175 11BB;D79C;1112 1175 11BB;
+D79D;D79D;1112 1175 11BC;D79D;1112 1175 11BC;
+D79E;D79E;1112 1175 11BD;D79E;1112 1175 11BD;
+D79F;D79F;1112 1175 11BE;D79F;1112 1175 11BE;
+D7A0;D7A0;1112 1175 11BF;D7A0;1112 1175 11BF;
+D7A1;D7A1;1112 1175 11C0;D7A1;1112 1175 11C0;
+D7A2;D7A2;1112 1175 11C1;D7A2;1112 1175 11C1;
+D7A3;D7A3;1112 1175 11C2;D7A3;1112 1175 11C2;
+F900;8C48;8C48;8C48;8C48;
+F901;66F4;66F4;66F4;66F4;
+F902;8ECA;8ECA;8ECA;8ECA;
+F903;8CC8;8CC8;8CC8;8CC8;
+F904;6ED1;6ED1;6ED1;6ED1;
+F905;4E32;4E32;4E32;4E32;
+F906;53E5;53E5;53E5;53E5;
+F907;9F9C;9F9C;9F9C;9F9C;
+F908;9F9C;9F9C;9F9C;9F9C;
+F909;5951;5951;5951;5951;
+F90A;91D1;91D1;91D1;91D1;
+F90B;5587;5587;5587;5587;
+F90C;5948;5948;5948;5948;
+F90D;61F6;61F6;61F6;61F6;
+F90E;7669;7669;7669;7669;
+F90F;7F85;7F85;7F85;7F85;
+F910;863F;863F;863F;863F;
+F911;87BA;87BA;87BA;87BA;
+F912;88F8;88F8;88F8;88F8;
+F913;908F;908F;908F;908F;
+F914;6A02;6A02;6A02;6A02;
+F915;6D1B;6D1B;6D1B;6D1B;
+F916;70D9;70D9;70D9;70D9;
+F917;73DE;73DE;73DE;73DE;
+F918;843D;843D;843D;843D;
+F919;916A;916A;916A;916A;
+F91A;99F1;99F1;99F1;99F1;
+F91B;4E82;4E82;4E82;4E82;
+F91C;5375;5375;5375;5375;
+F91D;6B04;6B04;6B04;6B04;
+F91E;721B;721B;721B;721B;
+F91F;862D;862D;862D;862D;
+F920;9E1E;9E1E;9E1E;9E1E;
+F921;5D50;5D50;5D50;5D50;
+F922;6FEB;6FEB;6FEB;6FEB;
+F923;85CD;85CD;85CD;85CD;
+F924;8964;8964;8964;8964;
+F925;62C9;62C9;62C9;62C9;
+F926;81D8;81D8;81D8;81D8;
+F927;881F;881F;881F;881F;
+F928;5ECA;5ECA;5ECA;5ECA;
+F929;6717;6717;6717;6717;
+F92A;6D6A;6D6A;6D6A;6D6A;
+F92B;72FC;72FC;72FC;72FC;
+F92C;90CE;90CE;90CE;90CE;
+F92D;4F86;4F86;4F86;4F86;
+F92E;51B7;51B7;51B7;51B7;
+F92F;52DE;52DE;52DE;52DE;
+F930;64C4;64C4;64C4;64C4;
+F931;6AD3;6AD3;6AD3;6AD3;
+F932;7210;7210;7210;7210;
+F933;76E7;76E7;76E7;76E7;
+F934;8001;8001;8001;8001;
+F935;8606;8606;8606;8606;
+F936;865C;865C;865C;865C;
+F937;8DEF;8DEF;8DEF;8DEF;
+F938;9732;9732;9732;9732;
+F939;9B6F;9B6F;9B6F;9B6F;
+F93A;9DFA;9DFA;9DFA;9DFA;
+F93B;788C;788C;788C;788C;
+F93C;797F;797F;797F;797F;
+F93D;7DA0;7DA0;7DA0;7DA0;
+F93E;83C9;83C9;83C9;83C9;
+F93F;9304;9304;9304;9304;
+F940;9E7F;9E7F;9E7F;9E7F;
+F941;8AD6;8AD6;8AD6;8AD6;
+F942;58DF;58DF;58DF;58DF;
+F943;5F04;5F04;5F04;5F04;
+F944;7C60;7C60;7C60;7C60;
+F945;807E;807E;807E;807E;
+F946;7262;7262;7262;7262;
+F947;78CA;78CA;78CA;78CA;
+F948;8CC2;8CC2;8CC2;8CC2;
+F949;96F7;96F7;96F7;96F7;
+F94A;58D8;58D8;58D8;58D8;
+F94B;5C62;5C62;5C62;5C62;
+F94C;6A13;6A13;6A13;6A13;
+F94D;6DDA;6DDA;6DDA;6DDA;
+F94E;6F0F;6F0F;6F0F;6F0F;
+F94F;7D2F;7D2F;7D2F;7D2F;
+F950;7E37;7E37;7E37;7E37;
+F951;964B;964B;964B;964B;
+F952;52D2;52D2;52D2;52D2;
+F953;808B;808B;808B;808B;
+F954;51DC;51DC;51DC;51DC;
+F955;51CC;51CC;51CC;51CC;
+F956;7A1C;7A1C;7A1C;7A1C;
+F957;7DBE;7DBE;7DBE;7DBE;
+F958;83F1;83F1;83F1;83F1;
+F959;9675;9675;9675;9675;
+F95A;8B80;8B80;8B80;8B80;
+F95B;62CF;62CF;62CF;62CF;
+F95C;6A02;6A02;6A02;6A02;
+F95D;8AFE;8AFE;8AFE;8AFE;
+F95E;4E39;4E39;4E39;4E39;
+F95F;5BE7;5BE7;5BE7;5BE7;
+F960;6012;6012;6012;6012;
+F961;7387;7387;7387;7387;
+F962;7570;7570;7570;7570;
+F963;5317;5317;5317;5317;
+F964;78FB;78FB;78FB;78FB;
+F965;4FBF;4FBF;4FBF;4FBF;
+F966;5FA9;5FA9;5FA9;5FA9;
+F967;4E0D;4E0D;4E0D;4E0D;
+F968;6CCC;6CCC;6CCC;6CCC;
+F969;6578;6578;6578;6578;
+F96A;7D22;7D22;7D22;7D22;
+F96B;53C3;53C3;53C3;53C3;
+F96C;585E;585E;585E;585E;
+F96D;7701;7701;7701;7701;
+F96E;8449;8449;8449;8449;
+F96F;8AAA;8AAA;8AAA;8AAA;
+F970;6BBA;6BBA;6BBA;6BBA;
+F971;8FB0;8FB0;8FB0;8FB0;
+F972;6C88;6C88;6C88;6C88;
+F973;62FE;62FE;62FE;62FE;
+F974;82E5;82E5;82E5;82E5;
+F975;63A0;63A0;63A0;63A0;
+F976;7565;7565;7565;7565;
+F977;4EAE;4EAE;4EAE;4EAE;
+F978;5169;5169;5169;5169;
+F979;51C9;51C9;51C9;51C9;
+F97A;6881;6881;6881;6881;
+F97B;7CE7;7CE7;7CE7;7CE7;
+F97C;826F;826F;826F;826F;
+F97D;8AD2;8AD2;8AD2;8AD2;
+F97E;91CF;91CF;91CF;91CF;
+F97F;52F5;52F5;52F5;52F5;
+F980;5442;5442;5442;5442;
+F981;5973;5973;5973;5973;
+F982;5EEC;5EEC;5EEC;5EEC;
+F983;65C5;65C5;65C5;65C5;
+F984;6FFE;6FFE;6FFE;6FFE;
+F985;792A;792A;792A;792A;
+F986;95AD;95AD;95AD;95AD;
+F987;9A6A;9A6A;9A6A;9A6A;
+F988;9E97;9E97;9E97;9E97;
+F989;9ECE;9ECE;9ECE;9ECE;
+F98A;529B;529B;529B;529B;
+F98B;66C6;66C6;66C6;66C6;
+F98C;6B77;6B77;6B77;6B77;
+F98D;8F62;8F62;8F62;8F62;
+F98E;5E74;5E74;5E74;5E74;
+F98F;6190;6190;6190;6190;
+F990;6200;6200;6200;6200;
+F991;649A;649A;649A;649A;
+F992;6F23;6F23;6F23;6F23;
+F993;7149;7149;7149;7149;
+F994;7489;7489;7489;7489;
+F995;79CA;79CA;79CA;79CA;
+F996;7DF4;7DF4;7DF4;7DF4;
+F997;806F;806F;806F;806F;
+F998;8F26;8F26;8F26;8F26;
+F999;84EE;84EE;84EE;84EE;
+F99A;9023;9023;9023;9023;
+F99B;934A;934A;934A;934A;
+F99C;5217;5217;5217;5217;
+F99D;52A3;52A3;52A3;52A3;
+F99E;54BD;54BD;54BD;54BD;
+F99F;70C8;70C8;70C8;70C8;
+F9A0;88C2;88C2;88C2;88C2;
+F9A1;8AAA;8AAA;8AAA;8AAA;
+F9A2;5EC9;5EC9;5EC9;5EC9;
+F9A3;5FF5;5FF5;5FF5;5FF5;
+F9A4;637B;637B;637B;637B;
+F9A5;6BAE;6BAE;6BAE;6BAE;
+F9A6;7C3E;7C3E;7C3E;7C3E;
+F9A7;7375;7375;7375;7375;
+F9A8;4EE4;4EE4;4EE4;4EE4;
+F9A9;56F9;56F9;56F9;56F9;
+F9AA;5BE7;5BE7;5BE7;5BE7;
+F9AB;5DBA;5DBA;5DBA;5DBA;
+F9AC;601C;601C;601C;601C;
+F9AD;73B2;73B2;73B2;73B2;
+F9AE;7469;7469;7469;7469;
+F9AF;7F9A;7F9A;7F9A;7F9A;
+F9B0;8046;8046;8046;8046;
+F9B1;9234;9234;9234;9234;
+F9B2;96F6;96F6;96F6;96F6;
+F9B3;9748;9748;9748;9748;
+F9B4;9818;9818;9818;9818;
+F9B5;4F8B;4F8B;4F8B;4F8B;
+F9B6;79AE;79AE;79AE;79AE;
+F9B7;91B4;91B4;91B4;91B4;
+F9B8;96B8;96B8;96B8;96B8;
+F9B9;60E1;60E1;60E1;60E1;
+F9BA;4E86;4E86;4E86;4E86;
+F9BB;50DA;50DA;50DA;50DA;
+F9BC;5BEE;5BEE;5BEE;5BEE;
+F9BD;5C3F;5C3F;5C3F;5C3F;
+F9BE;6599;6599;6599;6599;
+F9BF;6A02;6A02;6A02;6A02;
+F9C0;71CE;71CE;71CE;71CE;
+F9C1;7642;7642;7642;7642;
+F9C2;84FC;84FC;84FC;84FC;
+F9C3;907C;907C;907C;907C;
+F9C4;9F8D;9F8D;9F8D;9F8D;
+F9C5;6688;6688;6688;6688;
+F9C6;962E;962E;962E;962E;
+F9C7;5289;5289;5289;5289;
+F9C8;677B;677B;677B;677B;
+F9C9;67F3;67F3;67F3;67F3;
+F9CA;6D41;6D41;6D41;6D41;
+F9CB;6E9C;6E9C;6E9C;6E9C;
+F9CC;7409;7409;7409;7409;
+F9CD;7559;7559;7559;7559;
+F9CE;786B;786B;786B;786B;
+F9CF;7D10;7D10;7D10;7D10;
+F9D0;985E;985E;985E;985E;
+F9D1;516D;516D;516D;516D;
+F9D2;622E;622E;622E;622E;
+F9D3;9678;9678;9678;9678;
+F9D4;502B;502B;502B;502B;
+F9D5;5D19;5D19;5D19;5D19;
+F9D6;6DEA;6DEA;6DEA;6DEA;
+F9D7;8F2A;8F2A;8F2A;8F2A;
+F9D8;5F8B;5F8B;5F8B;5F8B;
+F9D9;6144;6144;6144;6144;
+F9DA;6817;6817;6817;6817;
+F9DB;7387;7387;7387;7387;
+F9DC;9686;9686;9686;9686;
+F9DD;5229;5229;5229;5229;
+F9DE;540F;540F;540F;540F;
+F9DF;5C65;5C65;5C65;5C65;
+F9E0;6613;6613;6613;6613;
+F9E1;674E;674E;674E;674E;
+F9E2;68A8;68A8;68A8;68A8;
+F9E3;6CE5;6CE5;6CE5;6CE5;
+F9E4;7406;7406;7406;7406;
+F9E5;75E2;75E2;75E2;75E2;
+F9E6;7F79;7F79;7F79;7F79;
+F9E7;88CF;88CF;88CF;88CF;
+F9E8;88E1;88E1;88E1;88E1;
+F9E9;91CC;91CC;91CC;91CC;
+F9EA;96E2;96E2;96E2;96E2;
+F9EB;533F;533F;533F;533F;
+F9EC;6EBA;6EBA;6EBA;6EBA;
+F9ED;541D;541D;541D;541D;
+F9EE;71D0;71D0;71D0;71D0;
+F9EF;7498;7498;7498;7498;
+F9F0;85FA;85FA;85FA;85FA;
+F9F1;96A3;96A3;96A3;96A3;
+F9F2;9C57;9C57;9C57;9C57;
+F9F3;9E9F;9E9F;9E9F;9E9F;
+F9F4;6797;6797;6797;6797;
+F9F5;6DCB;6DCB;6DCB;6DCB;
+F9F6;81E8;81E8;81E8;81E8;
+F9F7;7ACB;7ACB;7ACB;7ACB;
+F9F8;7B20;7B20;7B20;7B20;
+F9F9;7C92;7C92;7C92;7C92;
+F9FA;72C0;72C0;72C0;72C0;
+F9FB;7099;7099;7099;7099;
+F9FC;8B58;8B58;8B58;8B58;
+F9FD;4EC0;4EC0;4EC0;4EC0;
+F9FE;8336;8336;8336;8336;
+F9FF;523A;523A;523A;523A;
+FA00;5207;5207;5207;5207;
+FA01;5EA6;5EA6;5EA6;5EA6;
+FA02;62D3;62D3;62D3;62D3;
+FA03;7CD6;7CD6;7CD6;7CD6;
+FA04;5B85;5B85;5B85;5B85;
+FA05;6D1E;6D1E;6D1E;6D1E;
+FA06;66B4;66B4;66B4;66B4;
+FA07;8F3B;8F3B;8F3B;8F3B;
+FA08;884C;884C;884C;884C;
+FA09;964D;964D;964D;964D;
+FA0A;898B;898B;898B;898B;
+FA0B;5ED3;5ED3;5ED3;5ED3;
+FA0C;5140;5140;5140;5140;
+FA0D;55C0;55C0;55C0;55C0;
+FA10;585A;585A;585A;585A;
+FA12;6674;6674;6674;6674;
+FA15;51DE;51DE;51DE;51DE;
+FA16;732A;732A;732A;732A;
+FA17;76CA;76CA;76CA;76CA;
+FA18;793C;793C;793C;793C;
+FA19;795E;795E;795E;795E;
+FA1A;7965;7965;7965;7965;
+FA1B;798F;798F;798F;798F;
+FA1C;9756;9756;9756;9756;
+FA1D;7CBE;7CBE;7CBE;7CBE;
+FA1E;7FBD;7FBD;7FBD;7FBD;
+FA20;8612;8612;8612;8612;
+FA22;8AF8;8AF8;8AF8;8AF8;
+FA25;9038;9038;9038;9038;
+FA26;90FD;90FD;90FD;90FD;
+FA2A;98EF;98EF;98EF;98EF;
+FA2B;98FC;98FC;98FC;98FC;
+FA2C;9928;9928;9928;9928;
+FA2D;9DB4;9DB4;9DB4;9DB4;
+FA30;4FAE;4FAE;4FAE;4FAE;
+FA31;50E7;50E7;50E7;50E7;
+FA32;514D;514D;514D;514D;
+FA33;52C9;52C9;52C9;52C9;
+FA34;52E4;52E4;52E4;52E4;
+FA35;5351;5351;5351;5351;
+FA36;559D;559D;559D;559D;
+FA37;5606;5606;5606;5606;
+FA38;5668;5668;5668;5668;
+FA39;5840;5840;5840;5840;
+FA3A;58A8;58A8;58A8;58A8;
+FA3B;5C64;5C64;5C64;5C64;
+FA3C;5C6E;5C6E;5C6E;5C6E;
+FA3D;6094;6094;6094;6094;
+FA3E;6168;6168;6168;6168;
+FA3F;618E;618E;618E;618E;
+FA40;61F2;61F2;61F2;61F2;
+FA41;654F;654F;654F;654F;
+FA42;65E2;65E2;65E2;65E2;
+FA43;6691;6691;6691;6691;
+FA44;6885;6885;6885;6885;
+FA45;6D77;6D77;6D77;6D77;
+FA46;6E1A;6E1A;6E1A;6E1A;
+FA47;6F22;6F22;6F22;6F22;
+FA48;716E;716E;716E;716E;
+FA49;722B;722B;722B;722B;
+FA4A;7422;7422;7422;7422;
+FA4B;7891;7891;7891;7891;
+FA4C;793E;793E;793E;793E;
+FA4D;7949;7949;7949;7949;
+FA4E;7948;7948;7948;7948;
+FA4F;7950;7950;7950;7950;
+FA50;7956;7956;7956;7956;
+FA51;795D;795D;795D;795D;
+FA52;798D;798D;798D;798D;
+FA53;798E;798E;798E;798E;
+FA54;7A40;7A40;7A40;7A40;
+FA55;7A81;7A81;7A81;7A81;
+FA56;7BC0;7BC0;7BC0;7BC0;
+FA57;7DF4;7DF4;7DF4;7DF4;
+FA58;7E09;7E09;7E09;7E09;
+FA59;7E41;7E41;7E41;7E41;
+FA5A;7F72;7F72;7F72;7F72;
+FA5B;8005;8005;8005;8005;
+FA5C;81ED;81ED;81ED;81ED;
+FA5D;8279;8279;8279;8279;
+FA5E;8279;8279;8279;8279;
+FA5F;8457;8457;8457;8457;
+FA60;8910;8910;8910;8910;
+FA61;8996;8996;8996;8996;
+FA62;8B01;8B01;8B01;8B01;
+FA63;8B39;8B39;8B39;8B39;
+FA64;8CD3;8CD3;8CD3;8CD3;
+FA65;8D08;8D08;8D08;8D08;
+FA66;8FB6;8FB6;8FB6;8FB6;
+FA67;9038;9038;9038;9038;
+FA68;96E3;96E3;96E3;96E3;
+FA69;97FF;97FF;97FF;97FF;
+FA6A;983B;983B;983B;983B;
+FB00;FB00;FB00;0066 0066;0066 0066;
+FB01;FB01;FB01;0066 0069;0066 0069;
+FB02;FB02;FB02;0066 006C;0066 006C;
+FB03;FB03;FB03;0066 0066 0069;0066 0066 0069;
+FB04;FB04;FB04;0066 0066 006C;0066 0066 006C;
+FB05;FB05;FB05;0073 0074;0073 0074;
+FB06;FB06;FB06;0073 0074;0073 0074;
+FB13;FB13;FB13;0574 0576;0574 0576;
+FB14;FB14;FB14;0574 0565;0574 0565;
+FB15;FB15;FB15;0574 056B;0574 056B;
+FB16;FB16;FB16;057E 0576;057E 0576;
+FB17;FB17;FB17;0574 056D;0574 056D;
+FB1D;05D9 05B4;05D9 05B4;05D9 05B4;05D9 05B4;
+FB1F;05F2 05B7;05F2 05B7;05F2 05B7;05F2 05B7;
+FB20;FB20;FB20;05E2;05E2;
+FB21;FB21;FB21;05D0;05D0;
+FB22;FB22;FB22;05D3;05D3;
+FB23;FB23;FB23;05D4;05D4;
+FB24;FB24;FB24;05DB;05DB;
+FB25;FB25;FB25;05DC;05DC;
+FB26;FB26;FB26;05DD;05DD;
+FB27;FB27;FB27;05E8;05E8;
+FB28;FB28;FB28;05EA;05EA;
+FB29;FB29;FB29;002B;002B;
+FB2A;05E9 05C1;05E9 05C1;05E9 05C1;05E9 05C1;
+FB2B;05E9 05C2;05E9 05C2;05E9 05C2;05E9 05C2;
+FB2C;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;
+FB2D;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;
+FB2E;05D0 05B7;05D0 05B7;05D0 05B7;05D0 05B7;
+FB2F;05D0 05B8;05D0 05B8;05D0 05B8;05D0 05B8;
+FB30;05D0 05BC;05D0 05BC;05D0 05BC;05D0 05BC;
+FB31;05D1 05BC;05D1 05BC;05D1 05BC;05D1 05BC;
+FB32;05D2 05BC;05D2 05BC;05D2 05BC;05D2 05BC;
+FB33;05D3 05BC;05D3 05BC;05D3 05BC;05D3 05BC;
+FB34;05D4 05BC;05D4 05BC;05D4 05BC;05D4 05BC;
+FB35;05D5 05BC;05D5 05BC;05D5 05BC;05D5 05BC;
+FB36;05D6 05BC;05D6 05BC;05D6 05BC;05D6 05BC;
+FB38;05D8 05BC;05D8 05BC;05D8 05BC;05D8 05BC;
+FB39;05D9 05BC;05D9 05BC;05D9 05BC;05D9 05BC;
+FB3A;05DA 05BC;05DA 05BC;05DA 05BC;05DA 05BC;
+FB3B;05DB 05BC;05DB 05BC;05DB 05BC;05DB 05BC;
+FB3C;05DC 05BC;05DC 05BC;05DC 05BC;05DC 05BC;
+FB3E;05DE 05BC;05DE 05BC;05DE 05BC;05DE 05BC;
+FB40;05E0 05BC;05E0 05BC;05E0 05BC;05E0 05BC;
+FB41;05E1 05BC;05E1 05BC;05E1 05BC;05E1 05BC;
+FB43;05E3 05BC;05E3 05BC;05E3 05BC;05E3 05BC;
+FB44;05E4 05BC;05E4 05BC;05E4 05BC;05E4 05BC;
+FB46;05E6 05BC;05E6 05BC;05E6 05BC;05E6 05BC;
+FB47;05E7 05BC;05E7 05BC;05E7 05BC;05E7 05BC;
+FB48;05E8 05BC;05E8 05BC;05E8 05BC;05E8 05BC;
+FB49;05E9 05BC;05E9 05BC;05E9 05BC;05E9 05BC;
+FB4A;05EA 05BC;05EA 05BC;05EA 05BC;05EA 05BC;
+FB4B;05D5 05B9;05D5 05B9;05D5 05B9;05D5 05B9;
+FB4C;05D1 05BF;05D1 05BF;05D1 05BF;05D1 05BF;
+FB4D;05DB 05BF;05DB 05BF;05DB 05BF;05DB 05BF;
+FB4E;05E4 05BF;05E4 05BF;05E4 05BF;05E4 05BF;
+FB4F;FB4F;FB4F;05D0 05DC;05D0 05DC;
+FB50;FB50;FB50;0671;0671;
+FB51;FB51;FB51;0671;0671;
+FB52;FB52;FB52;067B;067B;
+FB53;FB53;FB53;067B;067B;
+FB54;FB54;FB54;067B;067B;
+FB55;FB55;FB55;067B;067B;
+FB56;FB56;FB56;067E;067E;
+FB57;FB57;FB57;067E;067E;
+FB58;FB58;FB58;067E;067E;
+FB59;FB59;FB59;067E;067E;
+FB5A;FB5A;FB5A;0680;0680;
+FB5B;FB5B;FB5B;0680;0680;
+FB5C;FB5C;FB5C;0680;0680;
+FB5D;FB5D;FB5D;0680;0680;
+FB5E;FB5E;FB5E;067A;067A;
+FB5F;FB5F;FB5F;067A;067A;
+FB60;FB60;FB60;067A;067A;
+FB61;FB61;FB61;067A;067A;
+FB62;FB62;FB62;067F;067F;
+FB63;FB63;FB63;067F;067F;
+FB64;FB64;FB64;067F;067F;
+FB65;FB65;FB65;067F;067F;
+FB66;FB66;FB66;0679;0679;
+FB67;FB67;FB67;0679;0679;
+FB68;FB68;FB68;0679;0679;
+FB69;FB69;FB69;0679;0679;
+FB6A;FB6A;FB6A;06A4;06A4;
+FB6B;FB6B;FB6B;06A4;06A4;
+FB6C;FB6C;FB6C;06A4;06A4;
+FB6D;FB6D;FB6D;06A4;06A4;
+FB6E;FB6E;FB6E;06A6;06A6;
+FB6F;FB6F;FB6F;06A6;06A6;
+FB70;FB70;FB70;06A6;06A6;
+FB71;FB71;FB71;06A6;06A6;
+FB72;FB72;FB72;0684;0684;
+FB73;FB73;FB73;0684;0684;
+FB74;FB74;FB74;0684;0684;
+FB75;FB75;FB75;0684;0684;
+FB76;FB76;FB76;0683;0683;
+FB77;FB77;FB77;0683;0683;
+FB78;FB78;FB78;0683;0683;
+FB79;FB79;FB79;0683;0683;
+FB7A;FB7A;FB7A;0686;0686;
+FB7B;FB7B;FB7B;0686;0686;
+FB7C;FB7C;FB7C;0686;0686;
+FB7D;FB7D;FB7D;0686;0686;
+FB7E;FB7E;FB7E;0687;0687;
+FB7F;FB7F;FB7F;0687;0687;
+FB80;FB80;FB80;0687;0687;
+FB81;FB81;FB81;0687;0687;
+FB82;FB82;FB82;068D;068D;
+FB83;FB83;FB83;068D;068D;
+FB84;FB84;FB84;068C;068C;
+FB85;FB85;FB85;068C;068C;
+FB86;FB86;FB86;068E;068E;
+FB87;FB87;FB87;068E;068E;
+FB88;FB88;FB88;0688;0688;
+FB89;FB89;FB89;0688;0688;
+FB8A;FB8A;FB8A;0698;0698;
+FB8B;FB8B;FB8B;0698;0698;
+FB8C;FB8C;FB8C;0691;0691;
+FB8D;FB8D;FB8D;0691;0691;
+FB8E;FB8E;FB8E;06A9;06A9;
+FB8F;FB8F;FB8F;06A9;06A9;
+FB90;FB90;FB90;06A9;06A9;
+FB91;FB91;FB91;06A9;06A9;
+FB92;FB92;FB92;06AF;06AF;
+FB93;FB93;FB93;06AF;06AF;
+FB94;FB94;FB94;06AF;06AF;
+FB95;FB95;FB95;06AF;06AF;
+FB96;FB96;FB96;06B3;06B3;
+FB97;FB97;FB97;06B3;06B3;
+FB98;FB98;FB98;06B3;06B3;
+FB99;FB99;FB99;06B3;06B3;
+FB9A;FB9A;FB9A;06B1;06B1;
+FB9B;FB9B;FB9B;06B1;06B1;
+FB9C;FB9C;FB9C;06B1;06B1;
+FB9D;FB9D;FB9D;06B1;06B1;
+FB9E;FB9E;FB9E;06BA;06BA;
+FB9F;FB9F;FB9F;06BA;06BA;
+FBA0;FBA0;FBA0;06BB;06BB;
+FBA1;FBA1;FBA1;06BB;06BB;
+FBA2;FBA2;FBA2;06BB;06BB;
+FBA3;FBA3;FBA3;06BB;06BB;
+FBA4;FBA4;FBA4;06C0;06D5 0654;
+FBA5;FBA5;FBA5;06C0;06D5 0654;
+FBA6;FBA6;FBA6;06C1;06C1;
+FBA7;FBA7;FBA7;06C1;06C1;
+FBA8;FBA8;FBA8;06C1;06C1;
+FBA9;FBA9;FBA9;06C1;06C1;
+FBAA;FBAA;FBAA;06BE;06BE;
+FBAB;FBAB;FBAB;06BE;06BE;
+FBAC;FBAC;FBAC;06BE;06BE;
+FBAD;FBAD;FBAD;06BE;06BE;
+FBAE;FBAE;FBAE;06D2;06D2;
+FBAF;FBAF;FBAF;06D2;06D2;
+FBB0;FBB0;FBB0;06D3;06D2 0654;
+FBB1;FBB1;FBB1;06D3;06D2 0654;
+FBD3;FBD3;FBD3;06AD;06AD;
+FBD4;FBD4;FBD4;06AD;06AD;
+FBD5;FBD5;FBD5;06AD;06AD;
+FBD6;FBD6;FBD6;06AD;06AD;
+FBD7;FBD7;FBD7;06C7;06C7;
+FBD8;FBD8;FBD8;06C7;06C7;
+FBD9;FBD9;FBD9;06C6;06C6;
+FBDA;FBDA;FBDA;06C6;06C6;
+FBDB;FBDB;FBDB;06C8;06C8;
+FBDC;FBDC;FBDC;06C8;06C8;
+FBDD;FBDD;FBDD;06C7 0674;06C7 0674;
+FBDE;FBDE;FBDE;06CB;06CB;
+FBDF;FBDF;FBDF;06CB;06CB;
+FBE0;FBE0;FBE0;06C5;06C5;
+FBE1;FBE1;FBE1;06C5;06C5;
+FBE2;FBE2;FBE2;06C9;06C9;
+FBE3;FBE3;FBE3;06C9;06C9;
+FBE4;FBE4;FBE4;06D0;06D0;
+FBE5;FBE5;FBE5;06D0;06D0;
+FBE6;FBE6;FBE6;06D0;06D0;
+FBE7;FBE7;FBE7;06D0;06D0;
+FBE8;FBE8;FBE8;0649;0649;
+FBE9;FBE9;FBE9;0649;0649;
+FBEA;FBEA;FBEA;0626 0627;064A 0654 0627;
+FBEB;FBEB;FBEB;0626 0627;064A 0654 0627;
+FBEC;FBEC;FBEC;0626 06D5;064A 0654 06D5;
+FBED;FBED;FBED;0626 06D5;064A 0654 06D5;
+FBEE;FBEE;FBEE;0626 0648;064A 0654 0648;
+FBEF;FBEF;FBEF;0626 0648;064A 0654 0648;
+FBF0;FBF0;FBF0;0626 06C7;064A 0654 06C7;
+FBF1;FBF1;FBF1;0626 06C7;064A 0654 06C7;
+FBF2;FBF2;FBF2;0626 06C6;064A 0654 06C6;
+FBF3;FBF3;FBF3;0626 06C6;064A 0654 06C6;
+FBF4;FBF4;FBF4;0626 06C8;064A 0654 06C8;
+FBF5;FBF5;FBF5;0626 06C8;064A 0654 06C8;
+FBF6;FBF6;FBF6;0626 06D0;064A 0654 06D0;
+FBF7;FBF7;FBF7;0626 06D0;064A 0654 06D0;
+FBF8;FBF8;FBF8;0626 06D0;064A 0654 06D0;
+FBF9;FBF9;FBF9;0626 0649;064A 0654 0649;
+FBFA;FBFA;FBFA;0626 0649;064A 0654 0649;
+FBFB;FBFB;FBFB;0626 0649;064A 0654 0649;
+FBFC;FBFC;FBFC;06CC;06CC;
+FBFD;FBFD;FBFD;06CC;06CC;
+FBFE;FBFE;FBFE;06CC;06CC;
+FBFF;FBFF;FBFF;06CC;06CC;
+FC00;FC00;FC00;0626 062C;064A 0654 062C;
+FC01;FC01;FC01;0626 062D;064A 0654 062D;
+FC02;FC02;FC02;0626 0645;064A 0654 0645;
+FC03;FC03;FC03;0626 0649;064A 0654 0649;
+FC04;FC04;FC04;0626 064A;064A 0654 064A;
+FC05;FC05;FC05;0628 062C;0628 062C;
+FC06;FC06;FC06;0628 062D;0628 062D;
+FC07;FC07;FC07;0628 062E;0628 062E;
+FC08;FC08;FC08;0628 0645;0628 0645;
+FC09;FC09;FC09;0628 0649;0628 0649;
+FC0A;FC0A;FC0A;0628 064A;0628 064A;
+FC0B;FC0B;FC0B;062A 062C;062A 062C;
+FC0C;FC0C;FC0C;062A 062D;062A 062D;
+FC0D;FC0D;FC0D;062A 062E;062A 062E;
+FC0E;FC0E;FC0E;062A 0645;062A 0645;
+FC0F;FC0F;FC0F;062A 0649;062A 0649;
+FC10;FC10;FC10;062A 064A;062A 064A;
+FC11;FC11;FC11;062B 062C;062B 062C;
+FC12;FC12;FC12;062B 0645;062B 0645;
+FC13;FC13;FC13;062B 0649;062B 0649;
+FC14;FC14;FC14;062B 064A;062B 064A;
+FC15;FC15;FC15;062C 062D;062C 062D;
+FC16;FC16;FC16;062C 0645;062C 0645;
+FC17;FC17;FC17;062D 062C;062D 062C;
+FC18;FC18;FC18;062D 0645;062D 0645;
+FC19;FC19;FC19;062E 062C;062E 062C;
+FC1A;FC1A;FC1A;062E 062D;062E 062D;
+FC1B;FC1B;FC1B;062E 0645;062E 0645;
+FC1C;FC1C;FC1C;0633 062C;0633 062C;
+FC1D;FC1D;FC1D;0633 062D;0633 062D;
+FC1E;FC1E;FC1E;0633 062E;0633 062E;
+FC1F;FC1F;FC1F;0633 0645;0633 0645;
+FC20;FC20;FC20;0635 062D;0635 062D;
+FC21;FC21;FC21;0635 0645;0635 0645;
+FC22;FC22;FC22;0636 062C;0636 062C;
+FC23;FC23;FC23;0636 062D;0636 062D;
+FC24;FC24;FC24;0636 062E;0636 062E;
+FC25;FC25;FC25;0636 0645;0636 0645;
+FC26;FC26;FC26;0637 062D;0637 062D;
+FC27;FC27;FC27;0637 0645;0637 0645;
+FC28;FC28;FC28;0638 0645;0638 0645;
+FC29;FC29;FC29;0639 062C;0639 062C;
+FC2A;FC2A;FC2A;0639 0645;0639 0645;
+FC2B;FC2B;FC2B;063A 062C;063A 062C;
+FC2C;FC2C;FC2C;063A 0645;063A 0645;
+FC2D;FC2D;FC2D;0641 062C;0641 062C;
+FC2E;FC2E;FC2E;0641 062D;0641 062D;
+FC2F;FC2F;FC2F;0641 062E;0641 062E;
+FC30;FC30;FC30;0641 0645;0641 0645;
+FC31;FC31;FC31;0641 0649;0641 0649;
+FC32;FC32;FC32;0641 064A;0641 064A;
+FC33;FC33;FC33;0642 062D;0642 062D;
+FC34;FC34;FC34;0642 0645;0642 0645;
+FC35;FC35;FC35;0642 0649;0642 0649;
+FC36;FC36;FC36;0642 064A;0642 064A;
+FC37;FC37;FC37;0643 0627;0643 0627;
+FC38;FC38;FC38;0643 062C;0643 062C;
+FC39;FC39;FC39;0643 062D;0643 062D;
+FC3A;FC3A;FC3A;0643 062E;0643 062E;
+FC3B;FC3B;FC3B;0643 0644;0643 0644;
+FC3C;FC3C;FC3C;0643 0645;0643 0645;
+FC3D;FC3D;FC3D;0643 0649;0643 0649;
+FC3E;FC3E;FC3E;0643 064A;0643 064A;
+FC3F;FC3F;FC3F;0644 062C;0644 062C;
+FC40;FC40;FC40;0644 062D;0644 062D;
+FC41;FC41;FC41;0644 062E;0644 062E;
+FC42;FC42;FC42;0644 0645;0644 0645;
+FC43;FC43;FC43;0644 0649;0644 0649;
+FC44;FC44;FC44;0644 064A;0644 064A;
+FC45;FC45;FC45;0645 062C;0645 062C;
+FC46;FC46;FC46;0645 062D;0645 062D;
+FC47;FC47;FC47;0645 062E;0645 062E;
+FC48;FC48;FC48;0645 0645;0645 0645;
+FC49;FC49;FC49;0645 0649;0645 0649;
+FC4A;FC4A;FC4A;0645 064A;0645 064A;
+FC4B;FC4B;FC4B;0646 062C;0646 062C;
+FC4C;FC4C;FC4C;0646 062D;0646 062D;
+FC4D;FC4D;FC4D;0646 062E;0646 062E;
+FC4E;FC4E;FC4E;0646 0645;0646 0645;
+FC4F;FC4F;FC4F;0646 0649;0646 0649;
+FC50;FC50;FC50;0646 064A;0646 064A;
+FC51;FC51;FC51;0647 062C;0647 062C;
+FC52;FC52;FC52;0647 0645;0647 0645;
+FC53;FC53;FC53;0647 0649;0647 0649;
+FC54;FC54;FC54;0647 064A;0647 064A;
+FC55;FC55;FC55;064A 062C;064A 062C;
+FC56;FC56;FC56;064A 062D;064A 062D;
+FC57;FC57;FC57;064A 062E;064A 062E;
+FC58;FC58;FC58;064A 0645;064A 0645;
+FC59;FC59;FC59;064A 0649;064A 0649;
+FC5A;FC5A;FC5A;064A 064A;064A 064A;
+FC5B;FC5B;FC5B;0630 0670;0630 0670;
+FC5C;FC5C;FC5C;0631 0670;0631 0670;
+FC5D;FC5D;FC5D;0649 0670;0649 0670;
+FC5E;FC5E;FC5E;0020 064C 0651;0020 064C 0651;
+FC5F;FC5F;FC5F;0020 064D 0651;0020 064D 0651;
+FC60;FC60;FC60;0020 064E 0651;0020 064E 0651;
+FC61;FC61;FC61;0020 064F 0651;0020 064F 0651;
+FC62;FC62;FC62;0020 0650 0651;0020 0650 0651;
+FC63;FC63;FC63;0020 0651 0670;0020 0651 0670;
+FC64;FC64;FC64;0626 0631;064A 0654 0631;
+FC65;FC65;FC65;0626 0632;064A 0654 0632;
+FC66;FC66;FC66;0626 0645;064A 0654 0645;
+FC67;FC67;FC67;0626 0646;064A 0654 0646;
+FC68;FC68;FC68;0626 0649;064A 0654 0649;
+FC69;FC69;FC69;0626 064A;064A 0654 064A;
+FC6A;FC6A;FC6A;0628 0631;0628 0631;
+FC6B;FC6B;FC6B;0628 0632;0628 0632;
+FC6C;FC6C;FC6C;0628 0645;0628 0645;
+FC6D;FC6D;FC6D;0628 0646;0628 0646;
+FC6E;FC6E;FC6E;0628 0649;0628 0649;
+FC6F;FC6F;FC6F;0628 064A;0628 064A;
+FC70;FC70;FC70;062A 0631;062A 0631;
+FC71;FC71;FC71;062A 0632;062A 0632;
+FC72;FC72;FC72;062A 0645;062A 0645;
+FC73;FC73;FC73;062A 0646;062A 0646;
+FC74;FC74;FC74;062A 0649;062A 0649;
+FC75;FC75;FC75;062A 064A;062A 064A;
+FC76;FC76;FC76;062B 0631;062B 0631;
+FC77;FC77;FC77;062B 0632;062B 0632;
+FC78;FC78;FC78;062B 0645;062B 0645;
+FC79;FC79;FC79;062B 0646;062B 0646;
+FC7A;FC7A;FC7A;062B 0649;062B 0649;
+FC7B;FC7B;FC7B;062B 064A;062B 064A;
+FC7C;FC7C;FC7C;0641 0649;0641 0649;
+FC7D;FC7D;FC7D;0641 064A;0641 064A;
+FC7E;FC7E;FC7E;0642 0649;0642 0649;
+FC7F;FC7F;FC7F;0642 064A;0642 064A;
+FC80;FC80;FC80;0643 0627;0643 0627;
+FC81;FC81;FC81;0643 0644;0643 0644;
+FC82;FC82;FC82;0643 0645;0643 0645;
+FC83;FC83;FC83;0643 0649;0643 0649;
+FC84;FC84;FC84;0643 064A;0643 064A;
+FC85;FC85;FC85;0644 0645;0644 0645;
+FC86;FC86;FC86;0644 0649;0644 0649;
+FC87;FC87;FC87;0644 064A;0644 064A;
+FC88;FC88;FC88;0645 0627;0645 0627;
+FC89;FC89;FC89;0645 0645;0645 0645;
+FC8A;FC8A;FC8A;0646 0631;0646 0631;
+FC8B;FC8B;FC8B;0646 0632;0646 0632;
+FC8C;FC8C;FC8C;0646 0645;0646 0645;
+FC8D;FC8D;FC8D;0646 0646;0646 0646;
+FC8E;FC8E;FC8E;0646 0649;0646 0649;
+FC8F;FC8F;FC8F;0646 064A;0646 064A;
+FC90;FC90;FC90;0649 0670;0649 0670;
+FC91;FC91;FC91;064A 0631;064A 0631;
+FC92;FC92;FC92;064A 0632;064A 0632;
+FC93;FC93;FC93;064A 0645;064A 0645;
+FC94;FC94;FC94;064A 0646;064A 0646;
+FC95;FC95;FC95;064A 0649;064A 0649;
+FC96;FC96;FC96;064A 064A;064A 064A;
+FC97;FC97;FC97;0626 062C;064A 0654 062C;
+FC98;FC98;FC98;0626 062D;064A 0654 062D;
+FC99;FC99;FC99;0626 062E;064A 0654 062E;
+FC9A;FC9A;FC9A;0626 0645;064A 0654 0645;
+FC9B;FC9B;FC9B;0626 0647;064A 0654 0647;
+FC9C;FC9C;FC9C;0628 062C;0628 062C;
+FC9D;FC9D;FC9D;0628 062D;0628 062D;
+FC9E;FC9E;FC9E;0628 062E;0628 062E;
+FC9F;FC9F;FC9F;0628 0645;0628 0645;
+FCA0;FCA0;FCA0;0628 0647;0628 0647;
+FCA1;FCA1;FCA1;062A 062C;062A 062C;
+FCA2;FCA2;FCA2;062A 062D;062A 062D;
+FCA3;FCA3;FCA3;062A 062E;062A 062E;
+FCA4;FCA4;FCA4;062A 0645;062A 0645;
+FCA5;FCA5;FCA5;062A 0647;062A 0647;
+FCA6;FCA6;FCA6;062B 0645;062B 0645;
+FCA7;FCA7;FCA7;062C 062D;062C 062D;
+FCA8;FCA8;FCA8;062C 0645;062C 0645;
+FCA9;FCA9;FCA9;062D 062C;062D 062C;
+FCAA;FCAA;FCAA;062D 0645;062D 0645;
+FCAB;FCAB;FCAB;062E 062C;062E 062C;
+FCAC;FCAC;FCAC;062E 0645;062E 0645;
+FCAD;FCAD;FCAD;0633 062C;0633 062C;
+FCAE;FCAE;FCAE;0633 062D;0633 062D;
+FCAF;FCAF;FCAF;0633 062E;0633 062E;
+FCB0;FCB0;FCB0;0633 0645;0633 0645;
+FCB1;FCB1;FCB1;0635 062D;0635 062D;
+FCB2;FCB2;FCB2;0635 062E;0635 062E;
+FCB3;FCB3;FCB3;0635 0645;0635 0645;
+FCB4;FCB4;FCB4;0636 062C;0636 062C;
+FCB5;FCB5;FCB5;0636 062D;0636 062D;
+FCB6;FCB6;FCB6;0636 062E;0636 062E;
+FCB7;FCB7;FCB7;0636 0645;0636 0645;
+FCB8;FCB8;FCB8;0637 062D;0637 062D;
+FCB9;FCB9;FCB9;0638 0645;0638 0645;
+FCBA;FCBA;FCBA;0639 062C;0639 062C;
+FCBB;FCBB;FCBB;0639 0645;0639 0645;
+FCBC;FCBC;FCBC;063A 062C;063A 062C;
+FCBD;FCBD;FCBD;063A 0645;063A 0645;
+FCBE;FCBE;FCBE;0641 062C;0641 062C;
+FCBF;FCBF;FCBF;0641 062D;0641 062D;
+FCC0;FCC0;FCC0;0641 062E;0641 062E;
+FCC1;FCC1;FCC1;0641 0645;0641 0645;
+FCC2;FCC2;FCC2;0642 062D;0642 062D;
+FCC3;FCC3;FCC3;0642 0645;0642 0645;
+FCC4;FCC4;FCC4;0643 062C;0643 062C;
+FCC5;FCC5;FCC5;0643 062D;0643 062D;
+FCC6;FCC6;FCC6;0643 062E;0643 062E;
+FCC7;FCC7;FCC7;0643 0644;0643 0644;
+FCC8;FCC8;FCC8;0643 0645;0643 0645;
+FCC9;FCC9;FCC9;0644 062C;0644 062C;
+FCCA;FCCA;FCCA;0644 062D;0644 062D;
+FCCB;FCCB;FCCB;0644 062E;0644 062E;
+FCCC;FCCC;FCCC;0644 0645;0644 0645;
+FCCD;FCCD;FCCD;0644 0647;0644 0647;
+FCCE;FCCE;FCCE;0645 062C;0645 062C;
+FCCF;FCCF;FCCF;0645 062D;0645 062D;
+FCD0;FCD0;FCD0;0645 062E;0645 062E;
+FCD1;FCD1;FCD1;0645 0645;0645 0645;
+FCD2;FCD2;FCD2;0646 062C;0646 062C;
+FCD3;FCD3;FCD3;0646 062D;0646 062D;
+FCD4;FCD4;FCD4;0646 062E;0646 062E;
+FCD5;FCD5;FCD5;0646 0645;0646 0645;
+FCD6;FCD6;FCD6;0646 0647;0646 0647;
+FCD7;FCD7;FCD7;0647 062C;0647 062C;
+FCD8;FCD8;FCD8;0647 0645;0647 0645;
+FCD9;FCD9;FCD9;0647 0670;0647 0670;
+FCDA;FCDA;FCDA;064A 062C;064A 062C;
+FCDB;FCDB;FCDB;064A 062D;064A 062D;
+FCDC;FCDC;FCDC;064A 062E;064A 062E;
+FCDD;FCDD;FCDD;064A 0645;064A 0645;
+FCDE;FCDE;FCDE;064A 0647;064A 0647;
+FCDF;FCDF;FCDF;0626 0645;064A 0654 0645;
+FCE0;FCE0;FCE0;0626 0647;064A 0654 0647;
+FCE1;FCE1;FCE1;0628 0645;0628 0645;
+FCE2;FCE2;FCE2;0628 0647;0628 0647;
+FCE3;FCE3;FCE3;062A 0645;062A 0645;
+FCE4;FCE4;FCE4;062A 0647;062A 0647;
+FCE5;FCE5;FCE5;062B 0645;062B 0645;
+FCE6;FCE6;FCE6;062B 0647;062B 0647;
+FCE7;FCE7;FCE7;0633 0645;0633 0645;
+FCE8;FCE8;FCE8;0633 0647;0633 0647;
+FCE9;FCE9;FCE9;0634 0645;0634 0645;
+FCEA;FCEA;FCEA;0634 0647;0634 0647;
+FCEB;FCEB;FCEB;0643 0644;0643 0644;
+FCEC;FCEC;FCEC;0643 0645;0643 0645;
+FCED;FCED;FCED;0644 0645;0644 0645;
+FCEE;FCEE;FCEE;0646 0645;0646 0645;
+FCEF;FCEF;FCEF;0646 0647;0646 0647;
+FCF0;FCF0;FCF0;064A 0645;064A 0645;
+FCF1;FCF1;FCF1;064A 0647;064A 0647;
+FCF2;FCF2;FCF2;0640 064E 0651;0640 064E 0651;
+FCF3;FCF3;FCF3;0640 064F 0651;0640 064F 0651;
+FCF4;FCF4;FCF4;0640 0650 0651;0640 0650 0651;
+FCF5;FCF5;FCF5;0637 0649;0637 0649;
+FCF6;FCF6;FCF6;0637 064A;0637 064A;
+FCF7;FCF7;FCF7;0639 0649;0639 0649;
+FCF8;FCF8;FCF8;0639 064A;0639 064A;
+FCF9;FCF9;FCF9;063A 0649;063A 0649;
+FCFA;FCFA;FCFA;063A 064A;063A 064A;
+FCFB;FCFB;FCFB;0633 0649;0633 0649;
+FCFC;FCFC;FCFC;0633 064A;0633 064A;
+FCFD;FCFD;FCFD;0634 0649;0634 0649;
+FCFE;FCFE;FCFE;0634 064A;0634 064A;
+FCFF;FCFF;FCFF;062D 0649;062D 0649;
+FD00;FD00;FD00;062D 064A;062D 064A;
+FD01;FD01;FD01;062C 0649;062C 0649;
+FD02;FD02;FD02;062C 064A;062C 064A;
+FD03;FD03;FD03;062E 0649;062E 0649;
+FD04;FD04;FD04;062E 064A;062E 064A;
+FD05;FD05;FD05;0635 0649;0635 0649;
+FD06;FD06;FD06;0635 064A;0635 064A;
+FD07;FD07;FD07;0636 0649;0636 0649;
+FD08;FD08;FD08;0636 064A;0636 064A;
+FD09;FD09;FD09;0634 062C;0634 062C;
+FD0A;FD0A;FD0A;0634 062D;0634 062D;
+FD0B;FD0B;FD0B;0634 062E;0634 062E;
+FD0C;FD0C;FD0C;0634 0645;0634 0645;
+FD0D;FD0D;FD0D;0634 0631;0634 0631;
+FD0E;FD0E;FD0E;0633 0631;0633 0631;
+FD0F;FD0F;FD0F;0635 0631;0635 0631;
+FD10;FD10;FD10;0636 0631;0636 0631;
+FD11;FD11;FD11;0637 0649;0637 0649;
+FD12;FD12;FD12;0637 064A;0637 064A;
+FD13;FD13;FD13;0639 0649;0639 0649;
+FD14;FD14;FD14;0639 064A;0639 064A;
+FD15;FD15;FD15;063A 0649;063A 0649;
+FD16;FD16;FD16;063A 064A;063A 064A;
+FD17;FD17;FD17;0633 0649;0633 0649;
+FD18;FD18;FD18;0633 064A;0633 064A;
+FD19;FD19;FD19;0634 0649;0634 0649;
+FD1A;FD1A;FD1A;0634 064A;0634 064A;
+FD1B;FD1B;FD1B;062D 0649;062D 0649;
+FD1C;FD1C;FD1C;062D 064A;062D 064A;
+FD1D;FD1D;FD1D;062C 0649;062C 0649;
+FD1E;FD1E;FD1E;062C 064A;062C 064A;
+FD1F;FD1F;FD1F;062E 0649;062E 0649;
+FD20;FD20;FD20;062E 064A;062E 064A;
+FD21;FD21;FD21;0635 0649;0635 0649;
+FD22;FD22;FD22;0635 064A;0635 064A;
+FD23;FD23;FD23;0636 0649;0636 0649;
+FD24;FD24;FD24;0636 064A;0636 064A;
+FD25;FD25;FD25;0634 062C;0634 062C;
+FD26;FD26;FD26;0634 062D;0634 062D;
+FD27;FD27;FD27;0634 062E;0634 062E;
+FD28;FD28;FD28;0634 0645;0634 0645;
+FD29;FD29;FD29;0634 0631;0634 0631;
+FD2A;FD2A;FD2A;0633 0631;0633 0631;
+FD2B;FD2B;FD2B;0635 0631;0635 0631;
+FD2C;FD2C;FD2C;0636 0631;0636 0631;
+FD2D;FD2D;FD2D;0634 062C;0634 062C;
+FD2E;FD2E;FD2E;0634 062D;0634 062D;
+FD2F;FD2F;FD2F;0634 062E;0634 062E;
+FD30;FD30;FD30;0634 0645;0634 0645;
+FD31;FD31;FD31;0633 0647;0633 0647;
+FD32;FD32;FD32;0634 0647;0634 0647;
+FD33;FD33;FD33;0637 0645;0637 0645;
+FD34;FD34;FD34;0633 062C;0633 062C;
+FD35;FD35;FD35;0633 062D;0633 062D;
+FD36;FD36;FD36;0633 062E;0633 062E;
+FD37;FD37;FD37;0634 062C;0634 062C;
+FD38;FD38;FD38;0634 062D;0634 062D;
+FD39;FD39;FD39;0634 062E;0634 062E;
+FD3A;FD3A;FD3A;0637 0645;0637 0645;
+FD3B;FD3B;FD3B;0638 0645;0638 0645;
+FD3C;FD3C;FD3C;0627 064B;0627 064B;
+FD3D;FD3D;FD3D;0627 064B;0627 064B;
+FD50;FD50;FD50;062A 062C 0645;062A 062C 0645;
+FD51;FD51;FD51;062A 062D 062C;062A 062D 062C;
+FD52;FD52;FD52;062A 062D 062C;062A 062D 062C;
+FD53;FD53;FD53;062A 062D 0645;062A 062D 0645;
+FD54;FD54;FD54;062A 062E 0645;062A 062E 0645;
+FD55;FD55;FD55;062A 0645 062C;062A 0645 062C;
+FD56;FD56;FD56;062A 0645 062D;062A 0645 062D;
+FD57;FD57;FD57;062A 0645 062E;062A 0645 062E;
+FD58;FD58;FD58;062C 0645 062D;062C 0645 062D;
+FD59;FD59;FD59;062C 0645 062D;062C 0645 062D;
+FD5A;FD5A;FD5A;062D 0645 064A;062D 0645 064A;
+FD5B;FD5B;FD5B;062D 0645 0649;062D 0645 0649;
+FD5C;FD5C;FD5C;0633 062D 062C;0633 062D 062C;
+FD5D;FD5D;FD5D;0633 062C 062D;0633 062C 062D;
+FD5E;FD5E;FD5E;0633 062C 0649;0633 062C 0649;
+FD5F;FD5F;FD5F;0633 0645 062D;0633 0645 062D;
+FD60;FD60;FD60;0633 0645 062D;0633 0645 062D;
+FD61;FD61;FD61;0633 0645 062C;0633 0645 062C;
+FD62;FD62;FD62;0633 0645 0645;0633 0645 0645;
+FD63;FD63;FD63;0633 0645 0645;0633 0645 0645;
+FD64;FD64;FD64;0635 062D 062D;0635 062D 062D;
+FD65;FD65;FD65;0635 062D 062D;0635 062D 062D;
+FD66;FD66;FD66;0635 0645 0645;0635 0645 0645;
+FD67;FD67;FD67;0634 062D 0645;0634 062D 0645;
+FD68;FD68;FD68;0634 062D 0645;0634 062D 0645;
+FD69;FD69;FD69;0634 062C 064A;0634 062C 064A;
+FD6A;FD6A;FD6A;0634 0645 062E;0634 0645 062E;
+FD6B;FD6B;FD6B;0634 0645 062E;0634 0645 062E;
+FD6C;FD6C;FD6C;0634 0645 0645;0634 0645 0645;
+FD6D;FD6D;FD6D;0634 0645 0645;0634 0645 0645;
+FD6E;FD6E;FD6E;0636 062D 0649;0636 062D 0649;
+FD6F;FD6F;FD6F;0636 062E 0645;0636 062E 0645;
+FD70;FD70;FD70;0636 062E 0645;0636 062E 0645;
+FD71;FD71;FD71;0637 0645 062D;0637 0645 062D;
+FD72;FD72;FD72;0637 0645 062D;0637 0645 062D;
+FD73;FD73;FD73;0637 0645 0645;0637 0645 0645;
+FD74;FD74;FD74;0637 0645 064A;0637 0645 064A;
+FD75;FD75;FD75;0639 062C 0645;0639 062C 0645;
+FD76;FD76;FD76;0639 0645 0645;0639 0645 0645;
+FD77;FD77;FD77;0639 0645 0645;0639 0645 0645;
+FD78;FD78;FD78;0639 0645 0649;0639 0645 0649;
+FD79;FD79;FD79;063A 0645 0645;063A 0645 0645;
+FD7A;FD7A;FD7A;063A 0645 064A;063A 0645 064A;
+FD7B;FD7B;FD7B;063A 0645 0649;063A 0645 0649;
+FD7C;FD7C;FD7C;0641 062E 0645;0641 062E 0645;
+FD7D;FD7D;FD7D;0641 062E 0645;0641 062E 0645;
+FD7E;FD7E;FD7E;0642 0645 062D;0642 0645 062D;
+FD7F;FD7F;FD7F;0642 0645 0645;0642 0645 0645;
+FD80;FD80;FD80;0644 062D 0645;0644 062D 0645;
+FD81;FD81;FD81;0644 062D 064A;0644 062D 064A;
+FD82;FD82;FD82;0644 062D 0649;0644 062D 0649;
+FD83;FD83;FD83;0644 062C 062C;0644 062C 062C;
+FD84;FD84;FD84;0644 062C 062C;0644 062C 062C;
+FD85;FD85;FD85;0644 062E 0645;0644 062E 0645;
+FD86;FD86;FD86;0644 062E 0645;0644 062E 0645;
+FD87;FD87;FD87;0644 0645 062D;0644 0645 062D;
+FD88;FD88;FD88;0644 0645 062D;0644 0645 062D;
+FD89;FD89;FD89;0645 062D 062C;0645 062D 062C;
+FD8A;FD8A;FD8A;0645 062D 0645;0645 062D 0645;
+FD8B;FD8B;FD8B;0645 062D 064A;0645 062D 064A;
+FD8C;FD8C;FD8C;0645 062C 062D;0645 062C 062D;
+FD8D;FD8D;FD8D;0645 062C 0645;0645 062C 0645;
+FD8E;FD8E;FD8E;0645 062E 062C;0645 062E 062C;
+FD8F;FD8F;FD8F;0645 062E 0645;0645 062E 0645;
+FD92;FD92;FD92;0645 062C 062E;0645 062C 062E;
+FD93;FD93;FD93;0647 0645 062C;0647 0645 062C;
+FD94;FD94;FD94;0647 0645 0645;0647 0645 0645;
+FD95;FD95;FD95;0646 062D 0645;0646 062D 0645;
+FD96;FD96;FD96;0646 062D 0649;0646 062D 0649;
+FD97;FD97;FD97;0646 062C 0645;0646 062C 0645;
+FD98;FD98;FD98;0646 062C 0645;0646 062C 0645;
+FD99;FD99;FD99;0646 062C 0649;0646 062C 0649;
+FD9A;FD9A;FD9A;0646 0645 064A;0646 0645 064A;
+FD9B;FD9B;FD9B;0646 0645 0649;0646 0645 0649;
+FD9C;FD9C;FD9C;064A 0645 0645;064A 0645 0645;
+FD9D;FD9D;FD9D;064A 0645 0645;064A 0645 0645;
+FD9E;FD9E;FD9E;0628 062E 064A;0628 062E 064A;
+FD9F;FD9F;FD9F;062A 062C 064A;062A 062C 064A;
+FDA0;FDA0;FDA0;062A 062C 0649;062A 062C 0649;
+FDA1;FDA1;FDA1;062A 062E 064A;062A 062E 064A;
+FDA2;FDA2;FDA2;062A 062E 0649;062A 062E 0649;
+FDA3;FDA3;FDA3;062A 0645 064A;062A 0645 064A;
+FDA4;FDA4;FDA4;062A 0645 0649;062A 0645 0649;
+FDA5;FDA5;FDA5;062C 0645 064A;062C 0645 064A;
+FDA6;FDA6;FDA6;062C 062D 0649;062C 062D 0649;
+FDA7;FDA7;FDA7;062C 0645 0649;062C 0645 0649;
+FDA8;FDA8;FDA8;0633 062E 0649;0633 062E 0649;
+FDA9;FDA9;FDA9;0635 062D 064A;0635 062D 064A;
+FDAA;FDAA;FDAA;0634 062D 064A;0634 062D 064A;
+FDAB;FDAB;FDAB;0636 062D 064A;0636 062D 064A;
+FDAC;FDAC;FDAC;0644 062C 064A;0644 062C 064A;
+FDAD;FDAD;FDAD;0644 0645 064A;0644 0645 064A;
+FDAE;FDAE;FDAE;064A 062D 064A;064A 062D 064A;
+FDAF;FDAF;FDAF;064A 062C 064A;064A 062C 064A;
+FDB0;FDB0;FDB0;064A 0645 064A;064A 0645 064A;
+FDB1;FDB1;FDB1;0645 0645 064A;0645 0645 064A;
+FDB2;FDB2;FDB2;0642 0645 064A;0642 0645 064A;
+FDB3;FDB3;FDB3;0646 062D 064A;0646 062D 064A;
+FDB4;FDB4;FDB4;0642 0645 062D;0642 0645 062D;
+FDB5;FDB5;FDB5;0644 062D 0645;0644 062D 0645;
+FDB6;FDB6;FDB6;0639 0645 064A;0639 0645 064A;
+FDB7;FDB7;FDB7;0643 0645 064A;0643 0645 064A;
+FDB8;FDB8;FDB8;0646 062C 062D;0646 062C 062D;
+FDB9;FDB9;FDB9;0645 062E 064A;0645 062E 064A;
+FDBA;FDBA;FDBA;0644 062C 0645;0644 062C 0645;
+FDBB;FDBB;FDBB;0643 0645 0645;0643 0645 0645;
+FDBC;FDBC;FDBC;0644 062C 0645;0644 062C 0645;
+FDBD;FDBD;FDBD;0646 062C 062D;0646 062C 062D;
+FDBE;FDBE;FDBE;062C 062D 064A;062C 062D 064A;
+FDBF;FDBF;FDBF;062D 062C 064A;062D 062C 064A;
+FDC0;FDC0;FDC0;0645 062C 064A;0645 062C 064A;
+FDC1;FDC1;FDC1;0641 0645 064A;0641 0645 064A;
+FDC2;FDC2;FDC2;0628 062D 064A;0628 062D 064A;
+FDC3;FDC3;FDC3;0643 0645 0645;0643 0645 0645;
+FDC4;FDC4;FDC4;0639 062C 0645;0639 062C 0645;
+FDC5;FDC5;FDC5;0635 0645 0645;0635 0645 0645;
+FDC6;FDC6;FDC6;0633 062E 064A;0633 062E 064A;
+FDC7;FDC7;FDC7;0646 062C 064A;0646 062C 064A;
+FDF0;FDF0;FDF0;0635 0644 06D2;0635 0644 06D2;
+FDF1;FDF1;FDF1;0642 0644 06D2;0642 0644 06D2;
+FDF2;FDF2;FDF2;0627 0644 0644 0647;0627 0644 0644 0647;
+FDF3;FDF3;FDF3;0627 0643 0628 0631;0627 0643 0628 0631;
+FDF4;FDF4;FDF4;0645 062D 0645 062F;0645 062D 0645 062F;
+FDF5;FDF5;FDF5;0635 0644 0639 0645;0635 0644 0639 0645;
+FDF6;FDF6;FDF6;0631 0633 0648 0644;0631 0633 0648 0644;
+FDF7;FDF7;FDF7;0639 0644 064A 0647;0639 0644 064A 0647;
+FDF8;FDF8;FDF8;0648 0633 0644 0645;0648 0633 0644 0645;
+FDF9;FDF9;FDF9;0635 0644 0649;0635 0644 0649;
+FDFA;FDFA;FDFA;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;
+FDFB;FDFB;FDFB;062C 0644 0020 062C 0644 0627 0644 0647;062C 0644 0020 062C 0644 0627 0644 0647;
+FDFC;FDFC;FDFC;0631 06CC 0627 0644;0631 06CC 0627 0644;
+FE30;FE30;FE30;002E 002E;002E 002E;
+FE31;FE31;FE31;2014;2014;
+FE32;FE32;FE32;2013;2013;
+FE33;FE33;FE33;005F;005F;
+FE34;FE34;FE34;005F;005F;
+FE35;FE35;FE35;0028;0028;
+FE36;FE36;FE36;0029;0029;
+FE37;FE37;FE37;007B;007B;
+FE38;FE38;FE38;007D;007D;
+FE39;FE39;FE39;3014;3014;
+FE3A;FE3A;FE3A;3015;3015;
+FE3B;FE3B;FE3B;3010;3010;
+FE3C;FE3C;FE3C;3011;3011;
+FE3D;FE3D;FE3D;300A;300A;
+FE3E;FE3E;FE3E;300B;300B;
+FE3F;FE3F;FE3F;3008;3008;
+FE40;FE40;FE40;3009;3009;
+FE41;FE41;FE41;300C;300C;
+FE42;FE42;FE42;300D;300D;
+FE43;FE43;FE43;300E;300E;
+FE44;FE44;FE44;300F;300F;
+FE49;FE49;FE49;0020 0305;0020 0305;
+FE4A;FE4A;FE4A;0020 0305;0020 0305;
+FE4B;FE4B;FE4B;0020 0305;0020 0305;
+FE4C;FE4C;FE4C;0020 0305;0020 0305;
+FE4D;FE4D;FE4D;005F;005F;
+FE4E;FE4E;FE4E;005F;005F;
+FE4F;FE4F;FE4F;005F;005F;
+FE50;FE50;FE50;002C;002C;
+FE51;FE51;FE51;3001;3001;
+FE52;FE52;FE52;002E;002E;
+FE54;FE54;FE54;003B;003B;
+FE55;FE55;FE55;003A;003A;
+FE56;FE56;FE56;003F;003F;
+FE57;FE57;FE57;0021;0021;
+FE58;FE58;FE58;2014;2014;
+FE59;FE59;FE59;0028;0028;
+FE5A;FE5A;FE5A;0029;0029;
+FE5B;FE5B;FE5B;007B;007B;
+FE5C;FE5C;FE5C;007D;007D;
+FE5D;FE5D;FE5D;3014;3014;
+FE5E;FE5E;FE5E;3015;3015;
+FE5F;FE5F;FE5F;0023;0023;
+FE60;FE60;FE60;0026;0026;
+FE61;FE61;FE61;002A;002A;
+FE62;FE62;FE62;002B;002B;
+FE63;FE63;FE63;002D;002D;
+FE64;FE64;FE64;003C;003C;
+FE65;FE65;FE65;003E;003E;
+FE66;FE66;FE66;003D;003D;
+FE68;FE68;FE68;005C;005C;
+FE69;FE69;FE69;0024;0024;
+FE6A;FE6A;FE6A;0025;0025;
+FE6B;FE6B;FE6B;0040;0040;
+FE70;FE70;FE70;0020 064B;0020 064B;
+FE71;FE71;FE71;0640 064B;0640 064B;
+FE72;FE72;FE72;0020 064C;0020 064C;
+FE74;FE74;FE74;0020 064D;0020 064D;
+FE76;FE76;FE76;0020 064E;0020 064E;
+FE77;FE77;FE77;0640 064E;0640 064E;
+FE78;FE78;FE78;0020 064F;0020 064F;
+FE79;FE79;FE79;0640 064F;0640 064F;
+FE7A;FE7A;FE7A;0020 0650;0020 0650;
+FE7B;FE7B;FE7B;0640 0650;0640 0650;
+FE7C;FE7C;FE7C;0020 0651;0020 0651;
+FE7D;FE7D;FE7D;0640 0651;0640 0651;
+FE7E;FE7E;FE7E;0020 0652;0020 0652;
+FE7F;FE7F;FE7F;0640 0652;0640 0652;
+FE80;FE80;FE80;0621;0621;
+FE81;FE81;FE81;0622;0627 0653;
+FE82;FE82;FE82;0622;0627 0653;
+FE83;FE83;FE83;0623;0627 0654;
+FE84;FE84;FE84;0623;0627 0654;
+FE85;FE85;FE85;0624;0648 0654;
+FE86;FE86;FE86;0624;0648 0654;
+FE87;FE87;FE87;0625;0627 0655;
+FE88;FE88;FE88;0625;0627 0655;
+FE89;FE89;FE89;0626;064A 0654;
+FE8A;FE8A;FE8A;0626;064A 0654;
+FE8B;FE8B;FE8B;0626;064A 0654;
+FE8C;FE8C;FE8C;0626;064A 0654;
+FE8D;FE8D;FE8D;0627;0627;
+FE8E;FE8E;FE8E;0627;0627;
+FE8F;FE8F;FE8F;0628;0628;
+FE90;FE90;FE90;0628;0628;
+FE91;FE91;FE91;0628;0628;
+FE92;FE92;FE92;0628;0628;
+FE93;FE93;FE93;0629;0629;
+FE94;FE94;FE94;0629;0629;
+FE95;FE95;FE95;062A;062A;
+FE96;FE96;FE96;062A;062A;
+FE97;FE97;FE97;062A;062A;
+FE98;FE98;FE98;062A;062A;
+FE99;FE99;FE99;062B;062B;
+FE9A;FE9A;FE9A;062B;062B;
+FE9B;FE9B;FE9B;062B;062B;
+FE9C;FE9C;FE9C;062B;062B;
+FE9D;FE9D;FE9D;062C;062C;
+FE9E;FE9E;FE9E;062C;062C;
+FE9F;FE9F;FE9F;062C;062C;
+FEA0;FEA0;FEA0;062C;062C;
+FEA1;FEA1;FEA1;062D;062D;
+FEA2;FEA2;FEA2;062D;062D;
+FEA3;FEA3;FEA3;062D;062D;
+FEA4;FEA4;FEA4;062D;062D;
+FEA5;FEA5;FEA5;062E;062E;
+FEA6;FEA6;FEA6;062E;062E;
+FEA7;FEA7;FEA7;062E;062E;
+FEA8;FEA8;FEA8;062E;062E;
+FEA9;FEA9;FEA9;062F;062F;
+FEAA;FEAA;FEAA;062F;062F;
+FEAB;FEAB;FEAB;0630;0630;
+FEAC;FEAC;FEAC;0630;0630;
+FEAD;FEAD;FEAD;0631;0631;
+FEAE;FEAE;FEAE;0631;0631;
+FEAF;FEAF;FEAF;0632;0632;
+FEB0;FEB0;FEB0;0632;0632;
+FEB1;FEB1;FEB1;0633;0633;
+FEB2;FEB2;FEB2;0633;0633;
+FEB3;FEB3;FEB3;0633;0633;
+FEB4;FEB4;FEB4;0633;0633;
+FEB5;FEB5;FEB5;0634;0634;
+FEB6;FEB6;FEB6;0634;0634;
+FEB7;FEB7;FEB7;0634;0634;
+FEB8;FEB8;FEB8;0634;0634;
+FEB9;FEB9;FEB9;0635;0635;
+FEBA;FEBA;FEBA;0635;0635;
+FEBB;FEBB;FEBB;0635;0635;
+FEBC;FEBC;FEBC;0635;0635;
+FEBD;FEBD;FEBD;0636;0636;
+FEBE;FEBE;FEBE;0636;0636;
+FEBF;FEBF;FEBF;0636;0636;
+FEC0;FEC0;FEC0;0636;0636;
+FEC1;FEC1;FEC1;0637;0637;
+FEC2;FEC2;FEC2;0637;0637;
+FEC3;FEC3;FEC3;0637;0637;
+FEC4;FEC4;FEC4;0637;0637;
+FEC5;FEC5;FEC5;0638;0638;
+FEC6;FEC6;FEC6;0638;0638;
+FEC7;FEC7;FEC7;0638;0638;
+FEC8;FEC8;FEC8;0638;0638;
+FEC9;FEC9;FEC9;0639;0639;
+FECA;FECA;FECA;0639;0639;
+FECB;FECB;FECB;0639;0639;
+FECC;FECC;FECC;0639;0639;
+FECD;FECD;FECD;063A;063A;
+FECE;FECE;FECE;063A;063A;
+FECF;FECF;FECF;063A;063A;
+FED0;FED0;FED0;063A;063A;
+FED1;FED1;FED1;0641;0641;
+FED2;FED2;FED2;0641;0641;
+FED3;FED3;FED3;0641;0641;
+FED4;FED4;FED4;0641;0641;
+FED5;FED5;FED5;0642;0642;
+FED6;FED6;FED6;0642;0642;
+FED7;FED7;FED7;0642;0642;
+FED8;FED8;FED8;0642;0642;
+FED9;FED9;FED9;0643;0643;
+FEDA;FEDA;FEDA;0643;0643;
+FEDB;FEDB;FEDB;0643;0643;
+FEDC;FEDC;FEDC;0643;0643;
+FEDD;FEDD;FEDD;0644;0644;
+FEDE;FEDE;FEDE;0644;0644;
+FEDF;FEDF;FEDF;0644;0644;
+FEE0;FEE0;FEE0;0644;0644;
+FEE1;FEE1;FEE1;0645;0645;
+FEE2;FEE2;FEE2;0645;0645;
+FEE3;FEE3;FEE3;0645;0645;
+FEE4;FEE4;FEE4;0645;0645;
+FEE5;FEE5;FEE5;0646;0646;
+FEE6;FEE6;FEE6;0646;0646;
+FEE7;FEE7;FEE7;0646;0646;
+FEE8;FEE8;FEE8;0646;0646;
+FEE9;FEE9;FEE9;0647;0647;
+FEEA;FEEA;FEEA;0647;0647;
+FEEB;FEEB;FEEB;0647;0647;
+FEEC;FEEC;FEEC;0647;0647;
+FEED;FEED;FEED;0648;0648;
+FEEE;FEEE;FEEE;0648;0648;
+FEEF;FEEF;FEEF;0649;0649;
+FEF0;FEF0;FEF0;0649;0649;
+FEF1;FEF1;FEF1;064A;064A;
+FEF2;FEF2;FEF2;064A;064A;
+FEF3;FEF3;FEF3;064A;064A;
+FEF4;FEF4;FEF4;064A;064A;
+FEF5;FEF5;FEF5;0644 0622;0644 0627 0653;
+FEF6;FEF6;FEF6;0644 0622;0644 0627 0653;
+FEF7;FEF7;FEF7;0644 0623;0644 0627 0654;
+FEF8;FEF8;FEF8;0644 0623;0644 0627 0654;
+FEF9;FEF9;FEF9;0644 0625;0644 0627 0655;
+FEFA;FEFA;FEFA;0644 0625;0644 0627 0655;
+FEFB;FEFB;FEFB;0644 0627;0644 0627;
+FEFC;FEFC;FEFC;0644 0627;0644 0627;
+FF01;FF01;FF01;0021;0021;
+FF02;FF02;FF02;0022;0022;
+FF03;FF03;FF03;0023;0023;
+FF04;FF04;FF04;0024;0024;
+FF05;FF05;FF05;0025;0025;
+FF06;FF06;FF06;0026;0026;
+FF07;FF07;FF07;0027;0027;
+FF08;FF08;FF08;0028;0028;
+FF09;FF09;FF09;0029;0029;
+FF0A;FF0A;FF0A;002A;002A;
+FF0B;FF0B;FF0B;002B;002B;
+FF0C;FF0C;FF0C;002C;002C;
+FF0D;FF0D;FF0D;002D;002D;
+FF0E;FF0E;FF0E;002E;002E;
+FF0F;FF0F;FF0F;002F;002F;
+FF10;FF10;FF10;0030;0030;
+FF11;FF11;FF11;0031;0031;
+FF12;FF12;FF12;0032;0032;
+FF13;FF13;FF13;0033;0033;
+FF14;FF14;FF14;0034;0034;
+FF15;FF15;FF15;0035;0035;
+FF16;FF16;FF16;0036;0036;
+FF17;FF17;FF17;0037;0037;
+FF18;FF18;FF18;0038;0038;
+FF19;FF19;FF19;0039;0039;
+FF1A;FF1A;FF1A;003A;003A;
+FF1B;FF1B;FF1B;003B;003B;
+FF1C;FF1C;FF1C;003C;003C;
+FF1D;FF1D;FF1D;003D;003D;
+FF1E;FF1E;FF1E;003E;003E;
+FF1F;FF1F;FF1F;003F;003F;
+FF20;FF20;FF20;0040;0040;
+FF21;FF21;FF21;0041;0041;
+FF22;FF22;FF22;0042;0042;
+FF23;FF23;FF23;0043;0043;
+FF24;FF24;FF24;0044;0044;
+FF25;FF25;FF25;0045;0045;
+FF26;FF26;FF26;0046;0046;
+FF27;FF27;FF27;0047;0047;
+FF28;FF28;FF28;0048;0048;
+FF29;FF29;FF29;0049;0049;
+FF2A;FF2A;FF2A;004A;004A;
+FF2B;FF2B;FF2B;004B;004B;
+FF2C;FF2C;FF2C;004C;004C;
+FF2D;FF2D;FF2D;004D;004D;
+FF2E;FF2E;FF2E;004E;004E;
+FF2F;FF2F;FF2F;004F;004F;
+FF30;FF30;FF30;0050;0050;
+FF31;FF31;FF31;0051;0051;
+FF32;FF32;FF32;0052;0052;
+FF33;FF33;FF33;0053;0053;
+FF34;FF34;FF34;0054;0054;
+FF35;FF35;FF35;0055;0055;
+FF36;FF36;FF36;0056;0056;
+FF37;FF37;FF37;0057;0057;
+FF38;FF38;FF38;0058;0058;
+FF39;FF39;FF39;0059;0059;
+FF3A;FF3A;FF3A;005A;005A;
+FF3B;FF3B;FF3B;005B;005B;
+FF3C;FF3C;FF3C;005C;005C;
+FF3D;FF3D;FF3D;005D;005D;
+FF3E;FF3E;FF3E;005E;005E;
+FF3F;FF3F;FF3F;005F;005F;
+FF40;FF40;FF40;0060;0060;
+FF41;FF41;FF41;0061;0061;
+FF42;FF42;FF42;0062;0062;
+FF43;FF43;FF43;0063;0063;
+FF44;FF44;FF44;0064;0064;
+FF45;FF45;FF45;0065;0065;
+FF46;FF46;FF46;0066;0066;
+FF47;FF47;FF47;0067;0067;
+FF48;FF48;FF48;0068;0068;
+FF49;FF49;FF49;0069;0069;
+FF4A;FF4A;FF4A;006A;006A;
+FF4B;FF4B;FF4B;006B;006B;
+FF4C;FF4C;FF4C;006C;006C;
+FF4D;FF4D;FF4D;006D;006D;
+FF4E;FF4E;FF4E;006E;006E;
+FF4F;FF4F;FF4F;006F;006F;
+FF50;FF50;FF50;0070;0070;
+FF51;FF51;FF51;0071;0071;
+FF52;FF52;FF52;0072;0072;
+FF53;FF53;FF53;0073;0073;
+FF54;FF54;FF54;0074;0074;
+FF55;FF55;FF55;0075;0075;
+FF56;FF56;FF56;0076;0076;
+FF57;FF57;FF57;0077;0077;
+FF58;FF58;FF58;0078;0078;
+FF59;FF59;FF59;0079;0079;
+FF5A;FF5A;FF5A;007A;007A;
+FF5B;FF5B;FF5B;007B;007B;
+FF5C;FF5C;FF5C;007C;007C;
+FF5D;FF5D;FF5D;007D;007D;
+FF5E;FF5E;FF5E;007E;007E;
+FF5F;FF5F;FF5F;2985;2985;
+FF60;FF60;FF60;2986;2986;
+FF61;FF61;FF61;3002;3002;
+FF62;FF62;FF62;300C;300C;
+FF63;FF63;FF63;300D;300D;
+FF64;FF64;FF64;3001;3001;
+FF65;FF65;FF65;30FB;30FB;
+FF66;FF66;FF66;30F2;30F2;
+FF67;FF67;FF67;30A1;30A1;
+FF68;FF68;FF68;30A3;30A3;
+FF69;FF69;FF69;30A5;30A5;
+FF6A;FF6A;FF6A;30A7;30A7;
+FF6B;FF6B;FF6B;30A9;30A9;
+FF6C;FF6C;FF6C;30E3;30E3;
+FF6D;FF6D;FF6D;30E5;30E5;
+FF6E;FF6E;FF6E;30E7;30E7;
+FF6F;FF6F;FF6F;30C3;30C3;
+FF70;FF70;FF70;30FC;30FC;
+FF71;FF71;FF71;30A2;30A2;
+FF72;FF72;FF72;30A4;30A4;
+FF73;FF73;FF73;30A6;30A6;
+FF74;FF74;FF74;30A8;30A8;
+FF75;FF75;FF75;30AA;30AA;
+FF76;FF76;FF76;30AB;30AB;
+FF77;FF77;FF77;30AD;30AD;
+FF78;FF78;FF78;30AF;30AF;
+FF79;FF79;FF79;30B1;30B1;
+FF7A;FF7A;FF7A;30B3;30B3;
+FF7B;FF7B;FF7B;30B5;30B5;
+FF7C;FF7C;FF7C;30B7;30B7;
+FF7D;FF7D;FF7D;30B9;30B9;
+FF7E;FF7E;FF7E;30BB;30BB;
+FF7F;FF7F;FF7F;30BD;30BD;
+FF80;FF80;FF80;30BF;30BF;
+FF81;FF81;FF81;30C1;30C1;
+FF82;FF82;FF82;30C4;30C4;
+FF83;FF83;FF83;30C6;30C6;
+FF84;FF84;FF84;30C8;30C8;
+FF85;FF85;FF85;30CA;30CA;
+FF86;FF86;FF86;30CB;30CB;
+FF87;FF87;FF87;30CC;30CC;
+FF88;FF88;FF88;30CD;30CD;
+FF89;FF89;FF89;30CE;30CE;
+FF8A;FF8A;FF8A;30CF;30CF;
+FF8B;FF8B;FF8B;30D2;30D2;
+FF8C;FF8C;FF8C;30D5;30D5;
+FF8D;FF8D;FF8D;30D8;30D8;
+FF8E;FF8E;FF8E;30DB;30DB;
+FF8F;FF8F;FF8F;30DE;30DE;
+FF90;FF90;FF90;30DF;30DF;
+FF91;FF91;FF91;30E0;30E0;
+FF92;FF92;FF92;30E1;30E1;
+FF93;FF93;FF93;30E2;30E2;
+FF94;FF94;FF94;30E4;30E4;
+FF95;FF95;FF95;30E6;30E6;
+FF96;FF96;FF96;30E8;30E8;
+FF97;FF97;FF97;30E9;30E9;
+FF98;FF98;FF98;30EA;30EA;
+FF99;FF99;FF99;30EB;30EB;
+FF9A;FF9A;FF9A;30EC;30EC;
+FF9B;FF9B;FF9B;30ED;30ED;
+FF9C;FF9C;FF9C;30EF;30EF;
+FF9D;FF9D;FF9D;30F3;30F3;
+FF9E;FF9E;FF9E;3099;3099;
+FF9F;FF9F;FF9F;309A;309A;
+FFA0;FFA0;FFA0;1160;1160;
+FFA1;FFA1;FFA1;1100;1100;
+FFA2;FFA2;FFA2;1101;1101;
+FFA3;FFA3;FFA3;11AA;11AA;
+FFA4;FFA4;FFA4;1102;1102;
+FFA5;FFA5;FFA5;11AC;11AC;
+FFA6;FFA6;FFA6;11AD;11AD;
+FFA7;FFA7;FFA7;1103;1103;
+FFA8;FFA8;FFA8;1104;1104;
+FFA9;FFA9;FFA9;1105;1105;
+FFAA;FFAA;FFAA;11B0;11B0;
+FFAB;FFAB;FFAB;11B1;11B1;
+FFAC;FFAC;FFAC;11B2;11B2;
+FFAD;FFAD;FFAD;11B3;11B3;
+FFAE;FFAE;FFAE;11B4;11B4;
+FFAF;FFAF;FFAF;11B5;11B5;
+FFB0;FFB0;FFB0;111A;111A;
+FFB1;FFB1;FFB1;1106;1106;
+FFB2;FFB2;FFB2;1107;1107;
+FFB3;FFB3;FFB3;1108;1108;
+FFB4;FFB4;FFB4;1121;1121;
+FFB5;FFB5;FFB5;1109;1109;
+FFB6;FFB6;FFB6;110A;110A;
+FFB7;FFB7;FFB7;110B;110B;
+FFB8;FFB8;FFB8;110C;110C;
+FFB9;FFB9;FFB9;110D;110D;
+FFBA;FFBA;FFBA;110E;110E;
+FFBB;FFBB;FFBB;110F;110F;
+FFBC;FFBC;FFBC;1110;1110;
+FFBD;FFBD;FFBD;1111;1111;
+FFBE;FFBE;FFBE;1112;1112;
+FFC2;FFC2;FFC2;1161;1161;
+FFC3;FFC3;FFC3;1162;1162;
+FFC4;FFC4;FFC4;1163;1163;
+FFC5;FFC5;FFC5;1164;1164;
+FFC6;FFC6;FFC6;1165;1165;
+FFC7;FFC7;FFC7;1166;1166;
+FFCA;FFCA;FFCA;1167;1167;
+FFCB;FFCB;FFCB;1168;1168;
+FFCC;FFCC;FFCC;1169;1169;
+FFCD;FFCD;FFCD;116A;116A;
+FFCE;FFCE;FFCE;116B;116B;
+FFCF;FFCF;FFCF;116C;116C;
+FFD2;FFD2;FFD2;116D;116D;
+FFD3;FFD3;FFD3;116E;116E;
+FFD4;FFD4;FFD4;116F;116F;
+FFD5;FFD5;FFD5;1170;1170;
+FFD6;FFD6;FFD6;1171;1171;
+FFD7;FFD7;FFD7;1172;1172;
+FFDA;FFDA;FFDA;1173;1173;
+FFDB;FFDB;FFDB;1174;1174;
+FFDC;FFDC;FFDC;1175;1175;
+FFE0;FFE0;FFE0;00A2;00A2;
+FFE1;FFE1;FFE1;00A3;00A3;
+FFE2;FFE2;FFE2;00AC;00AC;
+FFE3;FFE3;FFE3;0020 0304;0020 0304;
+FFE4;FFE4;FFE4;00A6;00A6;
+FFE5;FFE5;FFE5;00A5;00A5;
+FFE6;FFE6;FFE6;20A9;20A9;
+FFE8;FFE8;FFE8;2502;2502;
+FFE9;FFE9;FFE9;2190;2190;
+FFEA;FFEA;FFEA;2191;2191;
+FFEB;FFEB;FFEB;2192;2192;
+FFEC;FFEC;FFEC;2193;2193;
+FFED;FFED;FFED;25A0;25A0;
+FFEE;FFEE;FFEE;25CB;25CB;
+1D15E;1D157 1D165;1D157 1D165;1D157 1D165;1D157 1D165;
+1D15F;1D158 1D165;1D158 1D165;1D158 1D165;1D158 1D165;
+1D160;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;
+1D161;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;
+1D162;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;
+1D163;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;
+1D164;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;
+1D1BB;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;
+1D1BC;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;
+1D1BD;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;
+1D1BE;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;
+1D1BF;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;
+1D1C0;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;
+1D400;1D400;1D400;0041;0041;
+1D401;1D401;1D401;0042;0042;
+1D402;1D402;1D402;0043;0043;
+1D403;1D403;1D403;0044;0044;
+1D404;1D404;1D404;0045;0045;
+1D405;1D405;1D405;0046;0046;
+1D406;1D406;1D406;0047;0047;
+1D407;1D407;1D407;0048;0048;
+1D408;1D408;1D408;0049;0049;
+1D409;1D409;1D409;004A;004A;
+1D40A;1D40A;1D40A;004B;004B;
+1D40B;1D40B;1D40B;004C;004C;
+1D40C;1D40C;1D40C;004D;004D;
+1D40D;1D40D;1D40D;004E;004E;
+1D40E;1D40E;1D40E;004F;004F;
+1D40F;1D40F;1D40F;0050;0050;
+1D410;1D410;1D410;0051;0051;
+1D411;1D411;1D411;0052;0052;
+1D412;1D412;1D412;0053;0053;
+1D413;1D413;1D413;0054;0054;
+1D414;1D414;1D414;0055;0055;
+1D415;1D415;1D415;0056;0056;
+1D416;1D416;1D416;0057;0057;
+1D417;1D417;1D417;0058;0058;
+1D418;1D418;1D418;0059;0059;
+1D419;1D419;1D419;005A;005A;
+1D41A;1D41A;1D41A;0061;0061;
+1D41B;1D41B;1D41B;0062;0062;
+1D41C;1D41C;1D41C;0063;0063;
+1D41D;1D41D;1D41D;0064;0064;
+1D41E;1D41E;1D41E;0065;0065;
+1D41F;1D41F;1D41F;0066;0066;
+1D420;1D420;1D420;0067;0067;
+1D421;1D421;1D421;0068;0068;
+1D422;1D422;1D422;0069;0069;
+1D423;1D423;1D423;006A;006A;
+1D424;1D424;1D424;006B;006B;
+1D425;1D425;1D425;006C;006C;
+1D426;1D426;1D426;006D;006D;
+1D427;1D427;1D427;006E;006E;
+1D428;1D428;1D428;006F;006F;
+1D429;1D429;1D429;0070;0070;
+1D42A;1D42A;1D42A;0071;0071;
+1D42B;1D42B;1D42B;0072;0072;
+1D42C;1D42C;1D42C;0073;0073;
+1D42D;1D42D;1D42D;0074;0074;
+1D42E;1D42E;1D42E;0075;0075;
+1D42F;1D42F;1D42F;0076;0076;
+1D430;1D430;1D430;0077;0077;
+1D431;1D431;1D431;0078;0078;
+1D432;1D432;1D432;0079;0079;
+1D433;1D433;1D433;007A;007A;
+1D434;1D434;1D434;0041;0041;
+1D435;1D435;1D435;0042;0042;
+1D436;1D436;1D436;0043;0043;
+1D437;1D437;1D437;0044;0044;
+1D438;1D438;1D438;0045;0045;
+1D439;1D439;1D439;0046;0046;
+1D43A;1D43A;1D43A;0047;0047;
+1D43B;1D43B;1D43B;0048;0048;
+1D43C;1D43C;1D43C;0049;0049;
+1D43D;1D43D;1D43D;004A;004A;
+1D43E;1D43E;1D43E;004B;004B;
+1D43F;1D43F;1D43F;004C;004C;
+1D440;1D440;1D440;004D;004D;
+1D441;1D441;1D441;004E;004E;
+1D442;1D442;1D442;004F;004F;
+1D443;1D443;1D443;0050;0050;
+1D444;1D444;1D444;0051;0051;
+1D445;1D445;1D445;0052;0052;
+1D446;1D446;1D446;0053;0053;
+1D447;1D447;1D447;0054;0054;
+1D448;1D448;1D448;0055;0055;
+1D449;1D449;1D449;0056;0056;
+1D44A;1D44A;1D44A;0057;0057;
+1D44B;1D44B;1D44B;0058;0058;
+1D44C;1D44C;1D44C;0059;0059;
+1D44D;1D44D;1D44D;005A;005A;
+1D44E;1D44E;1D44E;0061;0061;
+1D44F;1D44F;1D44F;0062;0062;
+1D450;1D450;1D450;0063;0063;
+1D451;1D451;1D451;0064;0064;
+1D452;1D452;1D452;0065;0065;
+1D453;1D453;1D453;0066;0066;
+1D454;1D454;1D454;0067;0067;
+1D456;1D456;1D456;0069;0069;
+1D457;1D457;1D457;006A;006A;
+1D458;1D458;1D458;006B;006B;
+1D459;1D459;1D459;006C;006C;
+1D45A;1D45A;1D45A;006D;006D;
+1D45B;1D45B;1D45B;006E;006E;
+1D45C;1D45C;1D45C;006F;006F;
+1D45D;1D45D;1D45D;0070;0070;
+1D45E;1D45E;1D45E;0071;0071;
+1D45F;1D45F;1D45F;0072;0072;
+1D460;1D460;1D460;0073;0073;
+1D461;1D461;1D461;0074;0074;
+1D462;1D462;1D462;0075;0075;
+1D463;1D463;1D463;0076;0076;
+1D464;1D464;1D464;0077;0077;
+1D465;1D465;1D465;0078;0078;
+1D466;1D466;1D466;0079;0079;
+1D467;1D467;1D467;007A;007A;
+1D468;1D468;1D468;0041;0041;
+1D469;1D469;1D469;0042;0042;
+1D46A;1D46A;1D46A;0043;0043;
+1D46B;1D46B;1D46B;0044;0044;
+1D46C;1D46C;1D46C;0045;0045;
+1D46D;1D46D;1D46D;0046;0046;
+1D46E;1D46E;1D46E;0047;0047;
+1D46F;1D46F;1D46F;0048;0048;
+1D470;1D470;1D470;0049;0049;
+1D471;1D471;1D471;004A;004A;
+1D472;1D472;1D472;004B;004B;
+1D473;1D473;1D473;004C;004C;
+1D474;1D474;1D474;004D;004D;
+1D475;1D475;1D475;004E;004E;
+1D476;1D476;1D476;004F;004F;
+1D477;1D477;1D477;0050;0050;
+1D478;1D478;1D478;0051;0051;
+1D479;1D479;1D479;0052;0052;
+1D47A;1D47A;1D47A;0053;0053;
+1D47B;1D47B;1D47B;0054;0054;
+1D47C;1D47C;1D47C;0055;0055;
+1D47D;1D47D;1D47D;0056;0056;
+1D47E;1D47E;1D47E;0057;0057;
+1D47F;1D47F;1D47F;0058;0058;
+1D480;1D480;1D480;0059;0059;
+1D481;1D481;1D481;005A;005A;
+1D482;1D482;1D482;0061;0061;
+1D483;1D483;1D483;0062;0062;
+1D484;1D484;1D484;0063;0063;
+1D485;1D485;1D485;0064;0064;
+1D486;1D486;1D486;0065;0065;
+1D487;1D487;1D487;0066;0066;
+1D488;1D488;1D488;0067;0067;
+1D489;1D489;1D489;0068;0068;
+1D48A;1D48A;1D48A;0069;0069;
+1D48B;1D48B;1D48B;006A;006A;
+1D48C;1D48C;1D48C;006B;006B;
+1D48D;1D48D;1D48D;006C;006C;
+1D48E;1D48E;1D48E;006D;006D;
+1D48F;1D48F;1D48F;006E;006E;
+1D490;1D490;1D490;006F;006F;
+1D491;1D491;1D491;0070;0070;
+1D492;1D492;1D492;0071;0071;
+1D493;1D493;1D493;0072;0072;
+1D494;1D494;1D494;0073;0073;
+1D495;1D495;1D495;0074;0074;
+1D496;1D496;1D496;0075;0075;
+1D497;1D497;1D497;0076;0076;
+1D498;1D498;1D498;0077;0077;
+1D499;1D499;1D499;0078;0078;
+1D49A;1D49A;1D49A;0079;0079;
+1D49B;1D49B;1D49B;007A;007A;
+1D49C;1D49C;1D49C;0041;0041;
+1D49E;1D49E;1D49E;0043;0043;
+1D49F;1D49F;1D49F;0044;0044;
+1D4A2;1D4A2;1D4A2;0047;0047;
+1D4A5;1D4A5;1D4A5;004A;004A;
+1D4A6;1D4A6;1D4A6;004B;004B;
+1D4A9;1D4A9;1D4A9;004E;004E;
+1D4AA;1D4AA;1D4AA;004F;004F;
+1D4AB;1D4AB;1D4AB;0050;0050;
+1D4AC;1D4AC;1D4AC;0051;0051;
+1D4AE;1D4AE;1D4AE;0053;0053;
+1D4AF;1D4AF;1D4AF;0054;0054;
+1D4B0;1D4B0;1D4B0;0055;0055;
+1D4B1;1D4B1;1D4B1;0056;0056;
+1D4B2;1D4B2;1D4B2;0057;0057;
+1D4B3;1D4B3;1D4B3;0058;0058;
+1D4B4;1D4B4;1D4B4;0059;0059;
+1D4B5;1D4B5;1D4B5;005A;005A;
+1D4B6;1D4B6;1D4B6;0061;0061;
+1D4B7;1D4B7;1D4B7;0062;0062;
+1D4B8;1D4B8;1D4B8;0063;0063;
+1D4B9;1D4B9;1D4B9;0064;0064;
+1D4BB;1D4BB;1D4BB;0066;0066;
+1D4BD;1D4BD;1D4BD;0068;0068;
+1D4BE;1D4BE;1D4BE;0069;0069;
+1D4BF;1D4BF;1D4BF;006A;006A;
+1D4C0;1D4C0;1D4C0;006B;006B;
+1D4C2;1D4C2;1D4C2;006D;006D;
+1D4C3;1D4C3;1D4C3;006E;006E;
+1D4C5;1D4C5;1D4C5;0070;0070;
+1D4C6;1D4C6;1D4C6;0071;0071;
+1D4C7;1D4C7;1D4C7;0072;0072;
+1D4C8;1D4C8;1D4C8;0073;0073;
+1D4C9;1D4C9;1D4C9;0074;0074;
+1D4CA;1D4CA;1D4CA;0075;0075;
+1D4CB;1D4CB;1D4CB;0076;0076;
+1D4CC;1D4CC;1D4CC;0077;0077;
+1D4CD;1D4CD;1D4CD;0078;0078;
+1D4CE;1D4CE;1D4CE;0079;0079;
+1D4CF;1D4CF;1D4CF;007A;007A;
+1D4D0;1D4D0;1D4D0;0041;0041;
+1D4D1;1D4D1;1D4D1;0042;0042;
+1D4D2;1D4D2;1D4D2;0043;0043;
+1D4D3;1D4D3;1D4D3;0044;0044;
+1D4D4;1D4D4;1D4D4;0045;0045;
+1D4D5;1D4D5;1D4D5;0046;0046;
+1D4D6;1D4D6;1D4D6;0047;0047;
+1D4D7;1D4D7;1D4D7;0048;0048;
+1D4D8;1D4D8;1D4D8;0049;0049;
+1D4D9;1D4D9;1D4D9;004A;004A;
+1D4DA;1D4DA;1D4DA;004B;004B;
+1D4DB;1D4DB;1D4DB;004C;004C;
+1D4DC;1D4DC;1D4DC;004D;004D;
+1D4DD;1D4DD;1D4DD;004E;004E;
+1D4DE;1D4DE;1D4DE;004F;004F;
+1D4DF;1D4DF;1D4DF;0050;0050;
+1D4E0;1D4E0;1D4E0;0051;0051;
+1D4E1;1D4E1;1D4E1;0052;0052;
+1D4E2;1D4E2;1D4E2;0053;0053;
+1D4E3;1D4E3;1D4E3;0054;0054;
+1D4E4;1D4E4;1D4E4;0055;0055;
+1D4E5;1D4E5;1D4E5;0056;0056;
+1D4E6;1D4E6;1D4E6;0057;0057;
+1D4E7;1D4E7;1D4E7;0058;0058;
+1D4E8;1D4E8;1D4E8;0059;0059;
+1D4E9;1D4E9;1D4E9;005A;005A;
+1D4EA;1D4EA;1D4EA;0061;0061;
+1D4EB;1D4EB;1D4EB;0062;0062;
+1D4EC;1D4EC;1D4EC;0063;0063;
+1D4ED;1D4ED;1D4ED;0064;0064;
+1D4EE;1D4EE;1D4EE;0065;0065;
+1D4EF;1D4EF;1D4EF;0066;0066;
+1D4F0;1D4F0;1D4F0;0067;0067;
+1D4F1;1D4F1;1D4F1;0068;0068;
+1D4F2;1D4F2;1D4F2;0069;0069;
+1D4F3;1D4F3;1D4F3;006A;006A;
+1D4F4;1D4F4;1D4F4;006B;006B;
+1D4F5;1D4F5;1D4F5;006C;006C;
+1D4F6;1D4F6;1D4F6;006D;006D;
+1D4F7;1D4F7;1D4F7;006E;006E;
+1D4F8;1D4F8;1D4F8;006F;006F;
+1D4F9;1D4F9;1D4F9;0070;0070;
+1D4FA;1D4FA;1D4FA;0071;0071;
+1D4FB;1D4FB;1D4FB;0072;0072;
+1D4FC;1D4FC;1D4FC;0073;0073;
+1D4FD;1D4FD;1D4FD;0074;0074;
+1D4FE;1D4FE;1D4FE;0075;0075;
+1D4FF;1D4FF;1D4FF;0076;0076;
+1D500;1D500;1D500;0077;0077;
+1D501;1D501;1D501;0078;0078;
+1D502;1D502;1D502;0079;0079;
+1D503;1D503;1D503;007A;007A;
+1D504;1D504;1D504;0041;0041;
+1D505;1D505;1D505;0042;0042;
+1D507;1D507;1D507;0044;0044;
+1D508;1D508;1D508;0045;0045;
+1D509;1D509;1D509;0046;0046;
+1D50A;1D50A;1D50A;0047;0047;
+1D50D;1D50D;1D50D;004A;004A;
+1D50E;1D50E;1D50E;004B;004B;
+1D50F;1D50F;1D50F;004C;004C;
+1D510;1D510;1D510;004D;004D;
+1D511;1D511;1D511;004E;004E;
+1D512;1D512;1D512;004F;004F;
+1D513;1D513;1D513;0050;0050;
+1D514;1D514;1D514;0051;0051;
+1D516;1D516;1D516;0053;0053;
+1D517;1D517;1D517;0054;0054;
+1D518;1D518;1D518;0055;0055;
+1D519;1D519;1D519;0056;0056;
+1D51A;1D51A;1D51A;0057;0057;
+1D51B;1D51B;1D51B;0058;0058;
+1D51C;1D51C;1D51C;0059;0059;
+1D51E;1D51E;1D51E;0061;0061;
+1D51F;1D51F;1D51F;0062;0062;
+1D520;1D520;1D520;0063;0063;
+1D521;1D521;1D521;0064;0064;
+1D522;1D522;1D522;0065;0065;
+1D523;1D523;1D523;0066;0066;
+1D524;1D524;1D524;0067;0067;
+1D525;1D525;1D525;0068;0068;
+1D526;1D526;1D526;0069;0069;
+1D527;1D527;1D527;006A;006A;
+1D528;1D528;1D528;006B;006B;
+1D529;1D529;1D529;006C;006C;
+1D52A;1D52A;1D52A;006D;006D;
+1D52B;1D52B;1D52B;006E;006E;
+1D52C;1D52C;1D52C;006F;006F;
+1D52D;1D52D;1D52D;0070;0070;
+1D52E;1D52E;1D52E;0071;0071;
+1D52F;1D52F;1D52F;0072;0072;
+1D530;1D530;1D530;0073;0073;
+1D531;1D531;1D531;0074;0074;
+1D532;1D532;1D532;0075;0075;
+1D533;1D533;1D533;0076;0076;
+1D534;1D534;1D534;0077;0077;
+1D535;1D535;1D535;0078;0078;
+1D536;1D536;1D536;0079;0079;
+1D537;1D537;1D537;007A;007A;
+1D538;1D538;1D538;0041;0041;
+1D539;1D539;1D539;0042;0042;
+1D53B;1D53B;1D53B;0044;0044;
+1D53C;1D53C;1D53C;0045;0045;
+1D53D;1D53D;1D53D;0046;0046;
+1D53E;1D53E;1D53E;0047;0047;
+1D540;1D540;1D540;0049;0049;
+1D541;1D541;1D541;004A;004A;
+1D542;1D542;1D542;004B;004B;
+1D543;1D543;1D543;004C;004C;
+1D544;1D544;1D544;004D;004D;
+1D546;1D546;1D546;004F;004F;
+1D54A;1D54A;1D54A;0053;0053;
+1D54B;1D54B;1D54B;0054;0054;
+1D54C;1D54C;1D54C;0055;0055;
+1D54D;1D54D;1D54D;0056;0056;
+1D54E;1D54E;1D54E;0057;0057;
+1D54F;1D54F;1D54F;0058;0058;
+1D550;1D550;1D550;0059;0059;
+1D552;1D552;1D552;0061;0061;
+1D553;1D553;1D553;0062;0062;
+1D554;1D554;1D554;0063;0063;
+1D555;1D555;1D555;0064;0064;
+1D556;1D556;1D556;0065;0065;
+1D557;1D557;1D557;0066;0066;
+1D558;1D558;1D558;0067;0067;
+1D559;1D559;1D559;0068;0068;
+1D55A;1D55A;1D55A;0069;0069;
+1D55B;1D55B;1D55B;006A;006A;
+1D55C;1D55C;1D55C;006B;006B;
+1D55D;1D55D;1D55D;006C;006C;
+1D55E;1D55E;1D55E;006D;006D;
+1D55F;1D55F;1D55F;006E;006E;
+1D560;1D560;1D560;006F;006F;
+1D561;1D561;1D561;0070;0070;
+1D562;1D562;1D562;0071;0071;
+1D563;1D563;1D563;0072;0072;
+1D564;1D564;1D564;0073;0073;
+1D565;1D565;1D565;0074;0074;
+1D566;1D566;1D566;0075;0075;
+1D567;1D567;1D567;0076;0076;
+1D568;1D568;1D568;0077;0077;
+1D569;1D569;1D569;0078;0078;
+1D56A;1D56A;1D56A;0079;0079;
+1D56B;1D56B;1D56B;007A;007A;
+1D56C;1D56C;1D56C;0041;0041;
+1D56D;1D56D;1D56D;0042;0042;
+1D56E;1D56E;1D56E;0043;0043;
+1D56F;1D56F;1D56F;0044;0044;
+1D570;1D570;1D570;0045;0045;
+1D571;1D571;1D571;0046;0046;
+1D572;1D572;1D572;0047;0047;
+1D573;1D573;1D573;0048;0048;
+1D574;1D574;1D574;0049;0049;
+1D575;1D575;1D575;004A;004A;
+1D576;1D576;1D576;004B;004B;
+1D577;1D577;1D577;004C;004C;
+1D578;1D578;1D578;004D;004D;
+1D579;1D579;1D579;004E;004E;
+1D57A;1D57A;1D57A;004F;004F;
+1D57B;1D57B;1D57B;0050;0050;
+1D57C;1D57C;1D57C;0051;0051;
+1D57D;1D57D;1D57D;0052;0052;
+1D57E;1D57E;1D57E;0053;0053;
+1D57F;1D57F;1D57F;0054;0054;
+1D580;1D580;1D580;0055;0055;
+1D581;1D581;1D581;0056;0056;
+1D582;1D582;1D582;0057;0057;
+1D583;1D583;1D583;0058;0058;
+1D584;1D584;1D584;0059;0059;
+1D585;1D585;1D585;005A;005A;
+1D586;1D586;1D586;0061;0061;
+1D587;1D587;1D587;0062;0062;
+1D588;1D588;1D588;0063;0063;
+1D589;1D589;1D589;0064;0064;
+1D58A;1D58A;1D58A;0065;0065;
+1D58B;1D58B;1D58B;0066;0066;
+1D58C;1D58C;1D58C;0067;0067;
+1D58D;1D58D;1D58D;0068;0068;
+1D58E;1D58E;1D58E;0069;0069;
+1D58F;1D58F;1D58F;006A;006A;
+1D590;1D590;1D590;006B;006B;
+1D591;1D591;1D591;006C;006C;
+1D592;1D592;1D592;006D;006D;
+1D593;1D593;1D593;006E;006E;
+1D594;1D594;1D594;006F;006F;
+1D595;1D595;1D595;0070;0070;
+1D596;1D596;1D596;0071;0071;
+1D597;1D597;1D597;0072;0072;
+1D598;1D598;1D598;0073;0073;
+1D599;1D599;1D599;0074;0074;
+1D59A;1D59A;1D59A;0075;0075;
+1D59B;1D59B;1D59B;0076;0076;
+1D59C;1D59C;1D59C;0077;0077;
+1D59D;1D59D;1D59D;0078;0078;
+1D59E;1D59E;1D59E;0079;0079;
+1D59F;1D59F;1D59F;007A;007A;
+1D5A0;1D5A0;1D5A0;0041;0041;
+1D5A1;1D5A1;1D5A1;0042;0042;
+1D5A2;1D5A2;1D5A2;0043;0043;
+1D5A3;1D5A3;1D5A3;0044;0044;
+1D5A4;1D5A4;1D5A4;0045;0045;
+1D5A5;1D5A5;1D5A5;0046;0046;
+1D5A6;1D5A6;1D5A6;0047;0047;
+1D5A7;1D5A7;1D5A7;0048;0048;
+1D5A8;1D5A8;1D5A8;0049;0049;
+1D5A9;1D5A9;1D5A9;004A;004A;
+1D5AA;1D5AA;1D5AA;004B;004B;
+1D5AB;1D5AB;1D5AB;004C;004C;
+1D5AC;1D5AC;1D5AC;004D;004D;
+1D5AD;1D5AD;1D5AD;004E;004E;
+1D5AE;1D5AE;1D5AE;004F;004F;
+1D5AF;1D5AF;1D5AF;0050;0050;
+1D5B0;1D5B0;1D5B0;0051;0051;
+1D5B1;1D5B1;1D5B1;0052;0052;
+1D5B2;1D5B2;1D5B2;0053;0053;
+1D5B3;1D5B3;1D5B3;0054;0054;
+1D5B4;1D5B4;1D5B4;0055;0055;
+1D5B5;1D5B5;1D5B5;0056;0056;
+1D5B6;1D5B6;1D5B6;0057;0057;
+1D5B7;1D5B7;1D5B7;0058;0058;
+1D5B8;1D5B8;1D5B8;0059;0059;
+1D5B9;1D5B9;1D5B9;005A;005A;
+1D5BA;1D5BA;1D5BA;0061;0061;
+1D5BB;1D5BB;1D5BB;0062;0062;
+1D5BC;1D5BC;1D5BC;0063;0063;
+1D5BD;1D5BD;1D5BD;0064;0064;
+1D5BE;1D5BE;1D5BE;0065;0065;
+1D5BF;1D5BF;1D5BF;0066;0066;
+1D5C0;1D5C0;1D5C0;0067;0067;
+1D5C1;1D5C1;1D5C1;0068;0068;
+1D5C2;1D5C2;1D5C2;0069;0069;
+1D5C3;1D5C3;1D5C3;006A;006A;
+1D5C4;1D5C4;1D5C4;006B;006B;
+1D5C5;1D5C5;1D5C5;006C;006C;
+1D5C6;1D5C6;1D5C6;006D;006D;
+1D5C7;1D5C7;1D5C7;006E;006E;
+1D5C8;1D5C8;1D5C8;006F;006F;
+1D5C9;1D5C9;1D5C9;0070;0070;
+1D5CA;1D5CA;1D5CA;0071;0071;
+1D5CB;1D5CB;1D5CB;0072;0072;
+1D5CC;1D5CC;1D5CC;0073;0073;
+1D5CD;1D5CD;1D5CD;0074;0074;
+1D5CE;1D5CE;1D5CE;0075;0075;
+1D5CF;1D5CF;1D5CF;0076;0076;
+1D5D0;1D5D0;1D5D0;0077;0077;
+1D5D1;1D5D1;1D5D1;0078;0078;
+1D5D2;1D5D2;1D5D2;0079;0079;
+1D5D3;1D5D3;1D5D3;007A;007A;
+1D5D4;1D5D4;1D5D4;0041;0041;
+1D5D5;1D5D5;1D5D5;0042;0042;
+1D5D6;1D5D6;1D5D6;0043;0043;
+1D5D7;1D5D7;1D5D7;0044;0044;
+1D5D8;1D5D8;1D5D8;0045;0045;
+1D5D9;1D5D9;1D5D9;0046;0046;
+1D5DA;1D5DA;1D5DA;0047;0047;
+1D5DB;1D5DB;1D5DB;0048;0048;
+1D5DC;1D5DC;1D5DC;0049;0049;
+1D5DD;1D5DD;1D5DD;004A;004A;
+1D5DE;1D5DE;1D5DE;004B;004B;
+1D5DF;1D5DF;1D5DF;004C;004C;
+1D5E0;1D5E0;1D5E0;004D;004D;
+1D5E1;1D5E1;1D5E1;004E;004E;
+1D5E2;1D5E2;1D5E2;004F;004F;
+1D5E3;1D5E3;1D5E3;0050;0050;
+1D5E4;1D5E4;1D5E4;0051;0051;
+1D5E5;1D5E5;1D5E5;0052;0052;
+1D5E6;1D5E6;1D5E6;0053;0053;
+1D5E7;1D5E7;1D5E7;0054;0054;
+1D5E8;1D5E8;1D5E8;0055;0055;
+1D5E9;1D5E9;1D5E9;0056;0056;
+1D5EA;1D5EA;1D5EA;0057;0057;
+1D5EB;1D5EB;1D5EB;0058;0058;
+1D5EC;1D5EC;1D5EC;0059;0059;
+1D5ED;1D5ED;1D5ED;005A;005A;
+1D5EE;1D5EE;1D5EE;0061;0061;
+1D5EF;1D5EF;1D5EF;0062;0062;
+1D5F0;1D5F0;1D5F0;0063;0063;
+1D5F1;1D5F1;1D5F1;0064;0064;
+1D5F2;1D5F2;1D5F2;0065;0065;
+1D5F3;1D5F3;1D5F3;0066;0066;
+1D5F4;1D5F4;1D5F4;0067;0067;
+1D5F5;1D5F5;1D5F5;0068;0068;
+1D5F6;1D5F6;1D5F6;0069;0069;
+1D5F7;1D5F7;1D5F7;006A;006A;
+1D5F8;1D5F8;1D5F8;006B;006B;
+1D5F9;1D5F9;1D5F9;006C;006C;
+1D5FA;1D5FA;1D5FA;006D;006D;
+1D5FB;1D5FB;1D5FB;006E;006E;
+1D5FC;1D5FC;1D5FC;006F;006F;
+1D5FD;1D5FD;1D5FD;0070;0070;
+1D5FE;1D5FE;1D5FE;0071;0071;
+1D5FF;1D5FF;1D5FF;0072;0072;
+1D600;1D600;1D600;0073;0073;
+1D601;1D601;1D601;0074;0074;
+1D602;1D602;1D602;0075;0075;
+1D603;1D603;1D603;0076;0076;
+1D604;1D604;1D604;0077;0077;
+1D605;1D605;1D605;0078;0078;
+1D606;1D606;1D606;0079;0079;
+1D607;1D607;1D607;007A;007A;
+1D608;1D608;1D608;0041;0041;
+1D609;1D609;1D609;0042;0042;
+1D60A;1D60A;1D60A;0043;0043;
+1D60B;1D60B;1D60B;0044;0044;
+1D60C;1D60C;1D60C;0045;0045;
+1D60D;1D60D;1D60D;0046;0046;
+1D60E;1D60E;1D60E;0047;0047;
+1D60F;1D60F;1D60F;0048;0048;
+1D610;1D610;1D610;0049;0049;
+1D611;1D611;1D611;004A;004A;
+1D612;1D612;1D612;004B;004B;
+1D613;1D613;1D613;004C;004C;
+1D614;1D614;1D614;004D;004D;
+1D615;1D615;1D615;004E;004E;
+1D616;1D616;1D616;004F;004F;
+1D617;1D617;1D617;0050;0050;
+1D618;1D618;1D618;0051;0051;
+1D619;1D619;1D619;0052;0052;
+1D61A;1D61A;1D61A;0053;0053;
+1D61B;1D61B;1D61B;0054;0054;
+1D61C;1D61C;1D61C;0055;0055;
+1D61D;1D61D;1D61D;0056;0056;
+1D61E;1D61E;1D61E;0057;0057;
+1D61F;1D61F;1D61F;0058;0058;
+1D620;1D620;1D620;0059;0059;
+1D621;1D621;1D621;005A;005A;
+1D622;1D622;1D622;0061;0061;
+1D623;1D623;1D623;0062;0062;
+1D624;1D624;1D624;0063;0063;
+1D625;1D625;1D625;0064;0064;
+1D626;1D626;1D626;0065;0065;
+1D627;1D627;1D627;0066;0066;
+1D628;1D628;1D628;0067;0067;
+1D629;1D629;1D629;0068;0068;
+1D62A;1D62A;1D62A;0069;0069;
+1D62B;1D62B;1D62B;006A;006A;
+1D62C;1D62C;1D62C;006B;006B;
+1D62D;1D62D;1D62D;006C;006C;
+1D62E;1D62E;1D62E;006D;006D;
+1D62F;1D62F;1D62F;006E;006E;
+1D630;1D630;1D630;006F;006F;
+1D631;1D631;1D631;0070;0070;
+1D632;1D632;1D632;0071;0071;
+1D633;1D633;1D633;0072;0072;
+1D634;1D634;1D634;0073;0073;
+1D635;1D635;1D635;0074;0074;
+1D636;1D636;1D636;0075;0075;
+1D637;1D637;1D637;0076;0076;
+1D638;1D638;1D638;0077;0077;
+1D639;1D639;1D639;0078;0078;
+1D63A;1D63A;1D63A;0079;0079;
+1D63B;1D63B;1D63B;007A;007A;
+1D63C;1D63C;1D63C;0041;0041;
+1D63D;1D63D;1D63D;0042;0042;
+1D63E;1D63E;1D63E;0043;0043;
+1D63F;1D63F;1D63F;0044;0044;
+1D640;1D640;1D640;0045;0045;
+1D641;1D641;1D641;0046;0046;
+1D642;1D642;1D642;0047;0047;
+1D643;1D643;1D643;0048;0048;
+1D644;1D644;1D644;0049;0049;
+1D645;1D645;1D645;004A;004A;
+1D646;1D646;1D646;004B;004B;
+1D647;1D647;1D647;004C;004C;
+1D648;1D648;1D648;004D;004D;
+1D649;1D649;1D649;004E;004E;
+1D64A;1D64A;1D64A;004F;004F;
+1D64B;1D64B;1D64B;0050;0050;
+1D64C;1D64C;1D64C;0051;0051;
+1D64D;1D64D;1D64D;0052;0052;
+1D64E;1D64E;1D64E;0053;0053;
+1D64F;1D64F;1D64F;0054;0054;
+1D650;1D650;1D650;0055;0055;
+1D651;1D651;1D651;0056;0056;
+1D652;1D652;1D652;0057;0057;
+1D653;1D653;1D653;0058;0058;
+1D654;1D654;1D654;0059;0059;
+1D655;1D655;1D655;005A;005A;
+1D656;1D656;1D656;0061;0061;
+1D657;1D657;1D657;0062;0062;
+1D658;1D658;1D658;0063;0063;
+1D659;1D659;1D659;0064;0064;
+1D65A;1D65A;1D65A;0065;0065;
+1D65B;1D65B;1D65B;0066;0066;
+1D65C;1D65C;1D65C;0067;0067;
+1D65D;1D65D;1D65D;0068;0068;
+1D65E;1D65E;1D65E;0069;0069;
+1D65F;1D65F;1D65F;006A;006A;
+1D660;1D660;1D660;006B;006B;
+1D661;1D661;1D661;006C;006C;
+1D662;1D662;1D662;006D;006D;
+1D663;1D663;1D663;006E;006E;
+1D664;1D664;1D664;006F;006F;
+1D665;1D665;1D665;0070;0070;
+1D666;1D666;1D666;0071;0071;
+1D667;1D667;1D667;0072;0072;
+1D668;1D668;1D668;0073;0073;
+1D669;1D669;1D669;0074;0074;
+1D66A;1D66A;1D66A;0075;0075;
+1D66B;1D66B;1D66B;0076;0076;
+1D66C;1D66C;1D66C;0077;0077;
+1D66D;1D66D;1D66D;0078;0078;
+1D66E;1D66E;1D66E;0079;0079;
+1D66F;1D66F;1D66F;007A;007A;
+1D670;1D670;1D670;0041;0041;
+1D671;1D671;1D671;0042;0042;
+1D672;1D672;1D672;0043;0043;
+1D673;1D673;1D673;0044;0044;
+1D674;1D674;1D674;0045;0045;
+1D675;1D675;1D675;0046;0046;
+1D676;1D676;1D676;0047;0047;
+1D677;1D677;1D677;0048;0048;
+1D678;1D678;1D678;0049;0049;
+1D679;1D679;1D679;004A;004A;
+1D67A;1D67A;1D67A;004B;004B;
+1D67B;1D67B;1D67B;004C;004C;
+1D67C;1D67C;1D67C;004D;004D;
+1D67D;1D67D;1D67D;004E;004E;
+1D67E;1D67E;1D67E;004F;004F;
+1D67F;1D67F;1D67F;0050;0050;
+1D680;1D680;1D680;0051;0051;
+1D681;1D681;1D681;0052;0052;
+1D682;1D682;1D682;0053;0053;
+1D683;1D683;1D683;0054;0054;
+1D684;1D684;1D684;0055;0055;
+1D685;1D685;1D685;0056;0056;
+1D686;1D686;1D686;0057;0057;
+1D687;1D687;1D687;0058;0058;
+1D688;1D688;1D688;0059;0059;
+1D689;1D689;1D689;005A;005A;
+1D68A;1D68A;1D68A;0061;0061;
+1D68B;1D68B;1D68B;0062;0062;
+1D68C;1D68C;1D68C;0063;0063;
+1D68D;1D68D;1D68D;0064;0064;
+1D68E;1D68E;1D68E;0065;0065;
+1D68F;1D68F;1D68F;0066;0066;
+1D690;1D690;1D690;0067;0067;
+1D691;1D691;1D691;0068;0068;
+1D692;1D692;1D692;0069;0069;
+1D693;1D693;1D693;006A;006A;
+1D694;1D694;1D694;006B;006B;
+1D695;1D695;1D695;006C;006C;
+1D696;1D696;1D696;006D;006D;
+1D697;1D697;1D697;006E;006E;
+1D698;1D698;1D698;006F;006F;
+1D699;1D699;1D699;0070;0070;
+1D69A;1D69A;1D69A;0071;0071;
+1D69B;1D69B;1D69B;0072;0072;
+1D69C;1D69C;1D69C;0073;0073;
+1D69D;1D69D;1D69D;0074;0074;
+1D69E;1D69E;1D69E;0075;0075;
+1D69F;1D69F;1D69F;0076;0076;
+1D6A0;1D6A0;1D6A0;0077;0077;
+1D6A1;1D6A1;1D6A1;0078;0078;
+1D6A2;1D6A2;1D6A2;0079;0079;
+1D6A3;1D6A3;1D6A3;007A;007A;
+1D6A8;1D6A8;1D6A8;0391;0391;
+1D6A9;1D6A9;1D6A9;0392;0392;
+1D6AA;1D6AA;1D6AA;0393;0393;
+1D6AB;1D6AB;1D6AB;0394;0394;
+1D6AC;1D6AC;1D6AC;0395;0395;
+1D6AD;1D6AD;1D6AD;0396;0396;
+1D6AE;1D6AE;1D6AE;0397;0397;
+1D6AF;1D6AF;1D6AF;0398;0398;
+1D6B0;1D6B0;1D6B0;0399;0399;
+1D6B1;1D6B1;1D6B1;039A;039A;
+1D6B2;1D6B2;1D6B2;039B;039B;
+1D6B3;1D6B3;1D6B3;039C;039C;
+1D6B4;1D6B4;1D6B4;039D;039D;
+1D6B5;1D6B5;1D6B5;039E;039E;
+1D6B6;1D6B6;1D6B6;039F;039F;
+1D6B7;1D6B7;1D6B7;03A0;03A0;
+1D6B8;1D6B8;1D6B8;03A1;03A1;
+1D6B9;1D6B9;1D6B9;0398;0398;
+1D6BA;1D6BA;1D6BA;03A3;03A3;
+1D6BB;1D6BB;1D6BB;03A4;03A4;
+1D6BC;1D6BC;1D6BC;03A5;03A5;
+1D6BD;1D6BD;1D6BD;03A6;03A6;
+1D6BE;1D6BE;1D6BE;03A7;03A7;
+1D6BF;1D6BF;1D6BF;03A8;03A8;
+1D6C0;1D6C0;1D6C0;03A9;03A9;
+1D6C1;1D6C1;1D6C1;2207;2207;
+1D6C2;1D6C2;1D6C2;03B1;03B1;
+1D6C3;1D6C3;1D6C3;03B2;03B2;
+1D6C4;1D6C4;1D6C4;03B3;03B3;
+1D6C5;1D6C5;1D6C5;03B4;03B4;
+1D6C6;1D6C6;1D6C6;03B5;03B5;
+1D6C7;1D6C7;1D6C7;03B6;03B6;
+1D6C8;1D6C8;1D6C8;03B7;03B7;
+1D6C9;1D6C9;1D6C9;03B8;03B8;
+1D6CA;1D6CA;1D6CA;03B9;03B9;
+1D6CB;1D6CB;1D6CB;03BA;03BA;
+1D6CC;1D6CC;1D6CC;03BB;03BB;
+1D6CD;1D6CD;1D6CD;03BC;03BC;
+1D6CE;1D6CE;1D6CE;03BD;03BD;
+1D6CF;1D6CF;1D6CF;03BE;03BE;
+1D6D0;1D6D0;1D6D0;03BF;03BF;
+1D6D1;1D6D1;1D6D1;03C0;03C0;
+1D6D2;1D6D2;1D6D2;03C1;03C1;
+1D6D3;1D6D3;1D6D3;03C2;03C2;
+1D6D4;1D6D4;1D6D4;03C3;03C3;
+1D6D5;1D6D5;1D6D5;03C4;03C4;
+1D6D6;1D6D6;1D6D6;03C5;03C5;
+1D6D7;1D6D7;1D6D7;03C6;03C6;
+1D6D8;1D6D8;1D6D8;03C7;03C7;
+1D6D9;1D6D9;1D6D9;03C8;03C8;
+1D6DA;1D6DA;1D6DA;03C9;03C9;
+1D6DB;1D6DB;1D6DB;2202;2202;
+1D6DC;1D6DC;1D6DC;03B5;03B5;
+1D6DD;1D6DD;1D6DD;03B8;03B8;
+1D6DE;1D6DE;1D6DE;03BA;03BA;
+1D6DF;1D6DF;1D6DF;03C6;03C6;
+1D6E0;1D6E0;1D6E0;03C1;03C1;
+1D6E1;1D6E1;1D6E1;03C0;03C0;
+1D6E2;1D6E2;1D6E2;0391;0391;
+1D6E3;1D6E3;1D6E3;0392;0392;
+1D6E4;1D6E4;1D6E4;0393;0393;
+1D6E5;1D6E5;1D6E5;0394;0394;
+1D6E6;1D6E6;1D6E6;0395;0395;
+1D6E7;1D6E7;1D6E7;0396;0396;
+1D6E8;1D6E8;1D6E8;0397;0397;
+1D6E9;1D6E9;1D6E9;0398;0398;
+1D6EA;1D6EA;1D6EA;0399;0399;
+1D6EB;1D6EB;1D6EB;039A;039A;
+1D6EC;1D6EC;1D6EC;039B;039B;
+1D6ED;1D6ED;1D6ED;039C;039C;
+1D6EE;1D6EE;1D6EE;039D;039D;
+1D6EF;1D6EF;1D6EF;039E;039E;
+1D6F0;1D6F0;1D6F0;039F;039F;
+1D6F1;1D6F1;1D6F1;03A0;03A0;
+1D6F2;1D6F2;1D6F2;03A1;03A1;
+1D6F3;1D6F3;1D6F3;0398;0398;
+1D6F4;1D6F4;1D6F4;03A3;03A3;
+1D6F5;1D6F5;1D6F5;03A4;03A4;
+1D6F6;1D6F6;1D6F6;03A5;03A5;
+1D6F7;1D6F7;1D6F7;03A6;03A6;
+1D6F8;1D6F8;1D6F8;03A7;03A7;
+1D6F9;1D6F9;1D6F9;03A8;03A8;
+1D6FA;1D6FA;1D6FA;03A9;03A9;
+1D6FB;1D6FB;1D6FB;2207;2207;
+1D6FC;1D6FC;1D6FC;03B1;03B1;
+1D6FD;1D6FD;1D6FD;03B2;03B2;
+1D6FE;1D6FE;1D6FE;03B3;03B3;
+1D6FF;1D6FF;1D6FF;03B4;03B4;
+1D700;1D700;1D700;03B5;03B5;
+1D701;1D701;1D701;03B6;03B6;
+1D702;1D702;1D702;03B7;03B7;
+1D703;1D703;1D703;03B8;03B8;
+1D704;1D704;1D704;03B9;03B9;
+1D705;1D705;1D705;03BA;03BA;
+1D706;1D706;1D706;03BB;03BB;
+1D707;1D707;1D707;03BC;03BC;
+1D708;1D708;1D708;03BD;03BD;
+1D709;1D709;1D709;03BE;03BE;
+1D70A;1D70A;1D70A;03BF;03BF;
+1D70B;1D70B;1D70B;03C0;03C0;
+1D70C;1D70C;1D70C;03C1;03C1;
+1D70D;1D70D;1D70D;03C2;03C2;
+1D70E;1D70E;1D70E;03C3;03C3;
+1D70F;1D70F;1D70F;03C4;03C4;
+1D710;1D710;1D710;03C5;03C5;
+1D711;1D711;1D711;03C6;03C6;
+1D712;1D712;1D712;03C7;03C7;
+1D713;1D713;1D713;03C8;03C8;
+1D714;1D714;1D714;03C9;03C9;
+1D715;1D715;1D715;2202;2202;
+1D716;1D716;1D716;03B5;03B5;
+1D717;1D717;1D717;03B8;03B8;
+1D718;1D718;1D718;03BA;03BA;
+1D719;1D719;1D719;03C6;03C6;
+1D71A;1D71A;1D71A;03C1;03C1;
+1D71B;1D71B;1D71B;03C0;03C0;
+1D71C;1D71C;1D71C;0391;0391;
+1D71D;1D71D;1D71D;0392;0392;
+1D71E;1D71E;1D71E;0393;0393;
+1D71F;1D71F;1D71F;0394;0394;
+1D720;1D720;1D720;0395;0395;
+1D721;1D721;1D721;0396;0396;
+1D722;1D722;1D722;0397;0397;
+1D723;1D723;1D723;0398;0398;
+1D724;1D724;1D724;0399;0399;
+1D725;1D725;1D725;039A;039A;
+1D726;1D726;1D726;039B;039B;
+1D727;1D727;1D727;039C;039C;
+1D728;1D728;1D728;039D;039D;
+1D729;1D729;1D729;039E;039E;
+1D72A;1D72A;1D72A;039F;039F;
+1D72B;1D72B;1D72B;03A0;03A0;
+1D72C;1D72C;1D72C;03A1;03A1;
+1D72D;1D72D;1D72D;0398;0398;
+1D72E;1D72E;1D72E;03A3;03A3;
+1D72F;1D72F;1D72F;03A4;03A4;
+1D730;1D730;1D730;03A5;03A5;
+1D731;1D731;1D731;03A6;03A6;
+1D732;1D732;1D732;03A7;03A7;
+1D733;1D733;1D733;03A8;03A8;
+1D734;1D734;1D734;03A9;03A9;
+1D735;1D735;1D735;2207;2207;
+1D736;1D736;1D736;03B1;03B1;
+1D737;1D737;1D737;03B2;03B2;
+1D738;1D738;1D738;03B3;03B3;
+1D739;1D739;1D739;03B4;03B4;
+1D73A;1D73A;1D73A;03B5;03B5;
+1D73B;1D73B;1D73B;03B6;03B6;
+1D73C;1D73C;1D73C;03B7;03B7;
+1D73D;1D73D;1D73D;03B8;03B8;
+1D73E;1D73E;1D73E;03B9;03B9;
+1D73F;1D73F;1D73F;03BA;03BA;
+1D740;1D740;1D740;03BB;03BB;
+1D741;1D741;1D741;03BC;03BC;
+1D742;1D742;1D742;03BD;03BD;
+1D743;1D743;1D743;03BE;03BE;
+1D744;1D744;1D744;03BF;03BF;
+1D745;1D745;1D745;03C0;03C0;
+1D746;1D746;1D746;03C1;03C1;
+1D747;1D747;1D747;03C2;03C2;
+1D748;1D748;1D748;03C3;03C3;
+1D749;1D749;1D749;03C4;03C4;
+1D74A;1D74A;1D74A;03C5;03C5;
+1D74B;1D74B;1D74B;03C6;03C6;
+1D74C;1D74C;1D74C;03C7;03C7;
+1D74D;1D74D;1D74D;03C8;03C8;
+1D74E;1D74E;1D74E;03C9;03C9;
+1D74F;1D74F;1D74F;2202;2202;
+1D750;1D750;1D750;03B5;03B5;
+1D751;1D751;1D751;03B8;03B8;
+1D752;1D752;1D752;03BA;03BA;
+1D753;1D753;1D753;03C6;03C6;
+1D754;1D754;1D754;03C1;03C1;
+1D755;1D755;1D755;03C0;03C0;
+1D756;1D756;1D756;0391;0391;
+1D757;1D757;1D757;0392;0392;
+1D758;1D758;1D758;0393;0393;
+1D759;1D759;1D759;0394;0394;
+1D75A;1D75A;1D75A;0395;0395;
+1D75B;1D75B;1D75B;0396;0396;
+1D75C;1D75C;1D75C;0397;0397;
+1D75D;1D75D;1D75D;0398;0398;
+1D75E;1D75E;1D75E;0399;0399;
+1D75F;1D75F;1D75F;039A;039A;
+1D760;1D760;1D760;039B;039B;
+1D761;1D761;1D761;039C;039C;
+1D762;1D762;1D762;039D;039D;
+1D763;1D763;1D763;039E;039E;
+1D764;1D764;1D764;039F;039F;
+1D765;1D765;1D765;03A0;03A0;
+1D766;1D766;1D766;03A1;03A1;
+1D767;1D767;1D767;0398;0398;
+1D768;1D768;1D768;03A3;03A3;
+1D769;1D769;1D769;03A4;03A4;
+1D76A;1D76A;1D76A;03A5;03A5;
+1D76B;1D76B;1D76B;03A6;03A6;
+1D76C;1D76C;1D76C;03A7;03A7;
+1D76D;1D76D;1D76D;03A8;03A8;
+1D76E;1D76E;1D76E;03A9;03A9;
+1D76F;1D76F;1D76F;2207;2207;
+1D770;1D770;1D770;03B1;03B1;
+1D771;1D771;1D771;03B2;03B2;
+1D772;1D772;1D772;03B3;03B3;
+1D773;1D773;1D773;03B4;03B4;
+1D774;1D774;1D774;03B5;03B5;
+1D775;1D775;1D775;03B6;03B6;
+1D776;1D776;1D776;03B7;03B7;
+1D777;1D777;1D777;03B8;03B8;
+1D778;1D778;1D778;03B9;03B9;
+1D779;1D779;1D779;03BA;03BA;
+1D77A;1D77A;1D77A;03BB;03BB;
+1D77B;1D77B;1D77B;03BC;03BC;
+1D77C;1D77C;1D77C;03BD;03BD;
+1D77D;1D77D;1D77D;03BE;03BE;
+1D77E;1D77E;1D77E;03BF;03BF;
+1D77F;1D77F;1D77F;03C0;03C0;
+1D780;1D780;1D780;03C1;03C1;
+1D781;1D781;1D781;03C2;03C2;
+1D782;1D782;1D782;03C3;03C3;
+1D783;1D783;1D783;03C4;03C4;
+1D784;1D784;1D784;03C5;03C5;
+1D785;1D785;1D785;03C6;03C6;
+1D786;1D786;1D786;03C7;03C7;
+1D787;1D787;1D787;03C8;03C8;
+1D788;1D788;1D788;03C9;03C9;
+1D789;1D789;1D789;2202;2202;
+1D78A;1D78A;1D78A;03B5;03B5;
+1D78B;1D78B;1D78B;03B8;03B8;
+1D78C;1D78C;1D78C;03BA;03BA;
+1D78D;1D78D;1D78D;03C6;03C6;
+1D78E;1D78E;1D78E;03C1;03C1;
+1D78F;1D78F;1D78F;03C0;03C0;
+1D790;1D790;1D790;0391;0391;
+1D791;1D791;1D791;0392;0392;
+1D792;1D792;1D792;0393;0393;
+1D793;1D793;1D793;0394;0394;
+1D794;1D794;1D794;0395;0395;
+1D795;1D795;1D795;0396;0396;
+1D796;1D796;1D796;0397;0397;
+1D797;1D797;1D797;0398;0398;
+1D798;1D798;1D798;0399;0399;
+1D799;1D799;1D799;039A;039A;
+1D79A;1D79A;1D79A;039B;039B;
+1D79B;1D79B;1D79B;039C;039C;
+1D79C;1D79C;1D79C;039D;039D;
+1D79D;1D79D;1D79D;039E;039E;
+1D79E;1D79E;1D79E;039F;039F;
+1D79F;1D79F;1D79F;03A0;03A0;
+1D7A0;1D7A0;1D7A0;03A1;03A1;
+1D7A1;1D7A1;1D7A1;0398;0398;
+1D7A2;1D7A2;1D7A2;03A3;03A3;
+1D7A3;1D7A3;1D7A3;03A4;03A4;
+1D7A4;1D7A4;1D7A4;03A5;03A5;
+1D7A5;1D7A5;1D7A5;03A6;03A6;
+1D7A6;1D7A6;1D7A6;03A7;03A7;
+1D7A7;1D7A7;1D7A7;03A8;03A8;
+1D7A8;1D7A8;1D7A8;03A9;03A9;
+1D7A9;1D7A9;1D7A9;2207;2207;
+1D7AA;1D7AA;1D7AA;03B1;03B1;
+1D7AB;1D7AB;1D7AB;03B2;03B2;
+1D7AC;1D7AC;1D7AC;03B3;03B3;
+1D7AD;1D7AD;1D7AD;03B4;03B4;
+1D7AE;1D7AE;1D7AE;03B5;03B5;
+1D7AF;1D7AF;1D7AF;03B6;03B6;
+1D7B0;1D7B0;1D7B0;03B7;03B7;
+1D7B1;1D7B1;1D7B1;03B8;03B8;
+1D7B2;1D7B2;1D7B2;03B9;03B9;
+1D7B3;1D7B3;1D7B3;03BA;03BA;
+1D7B4;1D7B4;1D7B4;03BB;03BB;
+1D7B5;1D7B5;1D7B5;03BC;03BC;
+1D7B6;1D7B6;1D7B6;03BD;03BD;
+1D7B7;1D7B7;1D7B7;03BE;03BE;
+1D7B8;1D7B8;1D7B8;03BF;03BF;
+1D7B9;1D7B9;1D7B9;03C0;03C0;
+1D7BA;1D7BA;1D7BA;03C1;03C1;
+1D7BB;1D7BB;1D7BB;03C2;03C2;
+1D7BC;1D7BC;1D7BC;03C3;03C3;
+1D7BD;1D7BD;1D7BD;03C4;03C4;
+1D7BE;1D7BE;1D7BE;03C5;03C5;
+1D7BF;1D7BF;1D7BF;03C6;03C6;
+1D7C0;1D7C0;1D7C0;03C7;03C7;
+1D7C1;1D7C1;1D7C1;03C8;03C8;
+1D7C2;1D7C2;1D7C2;03C9;03C9;
+1D7C3;1D7C3;1D7C3;2202;2202;
+1D7C4;1D7C4;1D7C4;03B5;03B5;
+1D7C5;1D7C5;1D7C5;03B8;03B8;
+1D7C6;1D7C6;1D7C6;03BA;03BA;
+1D7C7;1D7C7;1D7C7;03C6;03C6;
+1D7C8;1D7C8;1D7C8;03C1;03C1;
+1D7C9;1D7C9;1D7C9;03C0;03C0;
+1D7CE;1D7CE;1D7CE;0030;0030;
+1D7CF;1D7CF;1D7CF;0031;0031;
+1D7D0;1D7D0;1D7D0;0032;0032;
+1D7D1;1D7D1;1D7D1;0033;0033;
+1D7D2;1D7D2;1D7D2;0034;0034;
+1D7D3;1D7D3;1D7D3;0035;0035;
+1D7D4;1D7D4;1D7D4;0036;0036;
+1D7D5;1D7D5;1D7D5;0037;0037;
+1D7D6;1D7D6;1D7D6;0038;0038;
+1D7D7;1D7D7;1D7D7;0039;0039;
+1D7D8;1D7D8;1D7D8;0030;0030;
+1D7D9;1D7D9;1D7D9;0031;0031;
+1D7DA;1D7DA;1D7DA;0032;0032;
+1D7DB;1D7DB;1D7DB;0033;0033;
+1D7DC;1D7DC;1D7DC;0034;0034;
+1D7DD;1D7DD;1D7DD;0035;0035;
+1D7DE;1D7DE;1D7DE;0036;0036;
+1D7DF;1D7DF;1D7DF;0037;0037;
+1D7E0;1D7E0;1D7E0;0038;0038;
+1D7E1;1D7E1;1D7E1;0039;0039;
+1D7E2;1D7E2;1D7E2;0030;0030;
+1D7E3;1D7E3;1D7E3;0031;0031;
+1D7E4;1D7E4;1D7E4;0032;0032;
+1D7E5;1D7E5;1D7E5;0033;0033;
+1D7E6;1D7E6;1D7E6;0034;0034;
+1D7E7;1D7E7;1D7E7;0035;0035;
+1D7E8;1D7E8;1D7E8;0036;0036;
+1D7E9;1D7E9;1D7E9;0037;0037;
+1D7EA;1D7EA;1D7EA;0038;0038;
+1D7EB;1D7EB;1D7EB;0039;0039;
+1D7EC;1D7EC;1D7EC;0030;0030;
+1D7ED;1D7ED;1D7ED;0031;0031;
+1D7EE;1D7EE;1D7EE;0032;0032;
+1D7EF;1D7EF;1D7EF;0033;0033;
+1D7F0;1D7F0;1D7F0;0034;0034;
+1D7F1;1D7F1;1D7F1;0035;0035;
+1D7F2;1D7F2;1D7F2;0036;0036;
+1D7F3;1D7F3;1D7F3;0037;0037;
+1D7F4;1D7F4;1D7F4;0038;0038;
+1D7F5;1D7F5;1D7F5;0039;0039;
+1D7F6;1D7F6;1D7F6;0030;0030;
+1D7F7;1D7F7;1D7F7;0031;0031;
+1D7F8;1D7F8;1D7F8;0032;0032;
+1D7F9;1D7F9;1D7F9;0033;0033;
+1D7FA;1D7FA;1D7FA;0034;0034;
+1D7FB;1D7FB;1D7FB;0035;0035;
+1D7FC;1D7FC;1D7FC;0036;0036;
+1D7FD;1D7FD;1D7FD;0037;0037;
+1D7FE;1D7FE;1D7FE;0038;0038;
+1D7FF;1D7FF;1D7FF;0039;0039;
+2F800;4E3D;4E3D;4E3D;4E3D;
+2F801;4E38;4E38;4E38;4E38;
+2F802;4E41;4E41;4E41;4E41;
+2F803;20122;20122;20122;20122;
+2F804;4F60;4F60;4F60;4F60;
+2F805;4FAE;4FAE;4FAE;4FAE;
+2F806;4FBB;4FBB;4FBB;4FBB;
+2F807;5002;5002;5002;5002;
+2F808;507A;507A;507A;507A;
+2F809;5099;5099;5099;5099;
+2F80A;50E7;50E7;50E7;50E7;
+2F80B;50CF;50CF;50CF;50CF;
+2F80C;349E;349E;349E;349E;
+2F80D;2063A;2063A;2063A;2063A;
+2F80E;514D;514D;514D;514D;
+2F80F;5154;5154;5154;5154;
+2F810;5164;5164;5164;5164;
+2F811;5177;5177;5177;5177;
+2F812;2051C;2051C;2051C;2051C;
+2F813;34B9;34B9;34B9;34B9;
+2F814;5167;5167;5167;5167;
+2F815;518D;518D;518D;518D;
+2F816;2054B;2054B;2054B;2054B;
+2F817;5197;5197;5197;5197;
+2F818;51A4;51A4;51A4;51A4;
+2F819;4ECC;4ECC;4ECC;4ECC;
+2F81A;51AC;51AC;51AC;51AC;
+2F81B;51B5;51B5;51B5;51B5;
+2F81C;291DF;291DF;291DF;291DF;
+2F81D;51F5;51F5;51F5;51F5;
+2F81E;5203;5203;5203;5203;
+2F81F;34DF;34DF;34DF;34DF;
+2F820;523B;523B;523B;523B;
+2F821;5246;5246;5246;5246;
+2F822;5272;5272;5272;5272;
+2F823;5277;5277;5277;5277;
+2F824;3515;3515;3515;3515;
+2F825;52C7;52C7;52C7;52C7;
+2F826;52C9;52C9;52C9;52C9;
+2F827;52E4;52E4;52E4;52E4;
+2F828;52FA;52FA;52FA;52FA;
+2F829;5305;5305;5305;5305;
+2F82A;5306;5306;5306;5306;
+2F82B;5317;5317;5317;5317;
+2F82C;5349;5349;5349;5349;
+2F82D;5351;5351;5351;5351;
+2F82E;535A;535A;535A;535A;
+2F82F;5373;5373;5373;5373;
+2F830;537D;537D;537D;537D;
+2F831;537F;537F;537F;537F;
+2F832;537F;537F;537F;537F;
+2F833;537F;537F;537F;537F;
+2F834;20A2C;20A2C;20A2C;20A2C;
+2F835;7070;7070;7070;7070;
+2F836;53CA;53CA;53CA;53CA;
+2F837;53DF;53DF;53DF;53DF;
+2F838;20B63;20B63;20B63;20B63;
+2F839;53EB;53EB;53EB;53EB;
+2F83A;53F1;53F1;53F1;53F1;
+2F83B;5406;5406;5406;5406;
+2F83C;549E;549E;549E;549E;
+2F83D;5438;5438;5438;5438;
+2F83E;5448;5448;5448;5448;
+2F83F;5468;5468;5468;5468;
+2F840;54A2;54A2;54A2;54A2;
+2F841;54F6;54F6;54F6;54F6;
+2F842;5510;5510;5510;5510;
+2F843;5553;5553;5553;5553;
+2F844;5563;5563;5563;5563;
+2F845;5584;5584;5584;5584;
+2F846;5584;5584;5584;5584;
+2F847;5599;5599;5599;5599;
+2F848;55AB;55AB;55AB;55AB;
+2F849;55B3;55B3;55B3;55B3;
+2F84A;55C2;55C2;55C2;55C2;
+2F84B;5716;5716;5716;5716;
+2F84C;5606;5606;5606;5606;
+2F84D;5717;5717;5717;5717;
+2F84E;5651;5651;5651;5651;
+2F84F;5674;5674;5674;5674;
+2F850;5207;5207;5207;5207;
+2F851;58EE;58EE;58EE;58EE;
+2F852;57CE;57CE;57CE;57CE;
+2F853;57F4;57F4;57F4;57F4;
+2F854;580D;580D;580D;580D;
+2F855;578B;578B;578B;578B;
+2F856;5832;5832;5832;5832;
+2F857;5831;5831;5831;5831;
+2F858;58AC;58AC;58AC;58AC;
+2F859;214E4;214E4;214E4;214E4;
+2F85A;58F2;58F2;58F2;58F2;
+2F85B;58F7;58F7;58F7;58F7;
+2F85C;5906;5906;5906;5906;
+2F85D;591A;591A;591A;591A;
+2F85E;5922;5922;5922;5922;
+2F85F;5962;5962;5962;5962;
+2F860;216A8;216A8;216A8;216A8;
+2F861;216EA;216EA;216EA;216EA;
+2F862;59EC;59EC;59EC;59EC;
+2F863;5A1B;5A1B;5A1B;5A1B;
+2F864;5A27;5A27;5A27;5A27;
+2F865;59D8;59D8;59D8;59D8;
+2F866;5A66;5A66;5A66;5A66;
+2F867;36EE;36EE;36EE;36EE;
+# NormalizationCorrections-4.0.0.txt -- 2F868;2136A;2136A;2136A;2136A;
+2F869;5B08;5B08;5B08;5B08;
+2F86A;5B3E;5B3E;5B3E;5B3E;
+2F86B;5B3E;5B3E;5B3E;5B3E;
+2F86C;219C8;219C8;219C8;219C8;
+2F86D;5BC3;5BC3;5BC3;5BC3;
+2F86E;5BD8;5BD8;5BD8;5BD8;
+2F86F;5BE7;5BE7;5BE7;5BE7;
+2F870;5BF3;5BF3;5BF3;5BF3;
+2F871;21B18;21B18;21B18;21B18;
+2F872;5BFF;5BFF;5BFF;5BFF;
+2F873;5C06;5C06;5C06;5C06;
+# NormalizationCorrections-4.0.0.txt -- 2F874;5F33;5F33;5F33;5F33;
+2F875;5C22;5C22;5C22;5C22;
+2F876;3781;3781;3781;3781;
+2F877;5C60;5C60;5C60;5C60;
+2F878;5C6E;5C6E;5C6E;5C6E;
+2F879;5CC0;5CC0;5CC0;5CC0;
+2F87A;5C8D;5C8D;5C8D;5C8D;
+2F87B;21DE4;21DE4;21DE4;21DE4;
+2F87C;5D43;5D43;5D43;5D43;
+2F87D;21DE6;21DE6;21DE6;21DE6;
+2F87E;5D6E;5D6E;5D6E;5D6E;
+2F87F;5D6B;5D6B;5D6B;5D6B;
+2F880;5D7C;5D7C;5D7C;5D7C;
+2F881;5DE1;5DE1;5DE1;5DE1;
+2F882;5DE2;5DE2;5DE2;5DE2;
+2F883;382F;382F;382F;382F;
+2F884;5DFD;5DFD;5DFD;5DFD;
+2F885;5E28;5E28;5E28;5E28;
+2F886;5E3D;5E3D;5E3D;5E3D;
+2F887;5E69;5E69;5E69;5E69;
+2F888;3862;3862;3862;3862;
+2F889;22183;22183;22183;22183;
+2F88A;387C;387C;387C;387C;
+2F88B;5EB0;5EB0;5EB0;5EB0;
+2F88C;5EB3;5EB3;5EB3;5EB3;
+2F88D;5EB6;5EB6;5EB6;5EB6;
+2F88E;5ECA;5ECA;5ECA;5ECA;
+2F88F;2A392;2A392;2A392;2A392;
+2F890;5EFE;5EFE;5EFE;5EFE;
+2F891;22331;22331;22331;22331;
+2F892;22331;22331;22331;22331;
+2F893;8201;8201;8201;8201;
+2F894;5F22;5F22;5F22;5F22;
+2F895;5F22;5F22;5F22;5F22;
+2F896;38C7;38C7;38C7;38C7;
+2F897;232B8;232B8;232B8;232B8;
+2F898;261DA;261DA;261DA;261DA;
+2F899;5F62;5F62;5F62;5F62;
+2F89A;5F6B;5F6B;5F6B;5F6B;
+2F89B;38E3;38E3;38E3;38E3;
+2F89C;5F9A;5F9A;5F9A;5F9A;
+2F89D;5FCD;5FCD;5FCD;5FCD;
+2F89E;5FD7;5FD7;5FD7;5FD7;
+2F89F;5FF9;5FF9;5FF9;5FF9;
+2F8A0;6081;6081;6081;6081;
+2F8A1;393A;393A;393A;393A;
+2F8A2;391C;391C;391C;391C;
+2F8A3;6094;6094;6094;6094;
+2F8A4;226D4;226D4;226D4;226D4;
+2F8A5;60C7;60C7;60C7;60C7;
+2F8A6;6148;6148;6148;6148;
+2F8A7;614C;614C;614C;614C;
+2F8A8;614E;614E;614E;614E;
+2F8A9;614C;614C;614C;614C;
+2F8AA;617A;617A;617A;617A;
+2F8AB;618E;618E;618E;618E;
+2F8AC;61B2;61B2;61B2;61B2;
+2F8AD;61A4;61A4;61A4;61A4;
+2F8AE;61AF;61AF;61AF;61AF;
+2F8AF;61DE;61DE;61DE;61DE;
+2F8B0;61F2;61F2;61F2;61F2;
+2F8B1;61F6;61F6;61F6;61F6;
+2F8B2;6210;6210;6210;6210;
+2F8B3;621B;621B;621B;621B;
+2F8B4;625D;625D;625D;625D;
+2F8B5;62B1;62B1;62B1;62B1;
+2F8B6;62D4;62D4;62D4;62D4;
+2F8B7;6350;6350;6350;6350;
+2F8B8;22B0C;22B0C;22B0C;22B0C;
+2F8B9;633D;633D;633D;633D;
+2F8BA;62FC;62FC;62FC;62FC;
+2F8BB;6368;6368;6368;6368;
+2F8BC;6383;6383;6383;6383;
+2F8BD;63E4;63E4;63E4;63E4;
+2F8BE;22BF1;22BF1;22BF1;22BF1;
+2F8BF;6422;6422;6422;6422;
+2F8C0;63C5;63C5;63C5;63C5;
+2F8C1;63A9;63A9;63A9;63A9;
+2F8C2;3A2E;3A2E;3A2E;3A2E;
+2F8C3;6469;6469;6469;6469;
+2F8C4;647E;647E;647E;647E;
+2F8C5;649D;649D;649D;649D;
+2F8C6;6477;6477;6477;6477;
+2F8C7;3A6C;3A6C;3A6C;3A6C;
+2F8C8;654F;654F;654F;654F;
+2F8C9;656C;656C;656C;656C;
+2F8CA;2300A;2300A;2300A;2300A;
+2F8CB;65E3;65E3;65E3;65E3;
+2F8CC;66F8;66F8;66F8;66F8;
+2F8CD;6649;6649;6649;6649;
+2F8CE;3B19;3B19;3B19;3B19;
+2F8CF;6691;6691;6691;6691;
+2F8D0;3B08;3B08;3B08;3B08;
+2F8D1;3AE4;3AE4;3AE4;3AE4;
+2F8D2;5192;5192;5192;5192;
+2F8D3;5195;5195;5195;5195;
+2F8D4;6700;6700;6700;6700;
+2F8D5;669C;669C;669C;669C;
+2F8D6;80AD;80AD;80AD;80AD;
+2F8D7;43D9;43D9;43D9;43D9;
+2F8D8;6717;6717;6717;6717;
+2F8D9;671B;671B;671B;671B;
+2F8DA;6721;6721;6721;6721;
+2F8DB;675E;675E;675E;675E;
+2F8DC;6753;6753;6753;6753;
+2F8DD;233C3;233C3;233C3;233C3;
+2F8DE;3B49;3B49;3B49;3B49;
+2F8DF;67FA;67FA;67FA;67FA;
+2F8E0;6785;6785;6785;6785;
+2F8E1;6852;6852;6852;6852;
+2F8E2;6885;6885;6885;6885;
+2F8E3;2346D;2346D;2346D;2346D;
+2F8E4;688E;688E;688E;688E;
+2F8E5;681F;681F;681F;681F;
+2F8E6;6914;6914;6914;6914;
+2F8E7;3B9D;3B9D;3B9D;3B9D;
+2F8E8;6942;6942;6942;6942;
+2F8E9;69A3;69A3;69A3;69A3;
+2F8EA;69EA;69EA;69EA;69EA;
+2F8EB;6AA8;6AA8;6AA8;6AA8;
+2F8EC;236A3;236A3;236A3;236A3;
+2F8ED;6ADB;6ADB;6ADB;6ADB;
+2F8EE;3C18;3C18;3C18;3C18;
+2F8EF;6B21;6B21;6B21;6B21;
+2F8F0;238A7;238A7;238A7;238A7;
+2F8F1;6B54;6B54;6B54;6B54;
+2F8F2;3C4E;3C4E;3C4E;3C4E;
+2F8F3;6B72;6B72;6B72;6B72;
+2F8F4;6B9F;6B9F;6B9F;6B9F;
+2F8F5;6BBA;6BBA;6BBA;6BBA;
+2F8F6;6BBB;6BBB;6BBB;6BBB;
+2F8F7;23A8D;23A8D;23A8D;23A8D;
+2F8F8;21D0B;21D0B;21D0B;21D0B;
+2F8F9;23AFA;23AFA;23AFA;23AFA;
+2F8FA;6C4E;6C4E;6C4E;6C4E;
+2F8FB;23CBC;23CBC;23CBC;23CBC;
+2F8FC;6CBF;6CBF;6CBF;6CBF;
+2F8FD;6CCD;6CCD;6CCD;6CCD;
+2F8FE;6C67;6C67;6C67;6C67;
+2F8FF;6D16;6D16;6D16;6D16;
+2F900;6D3E;6D3E;6D3E;6D3E;
+2F901;6D77;6D77;6D77;6D77;
+2F902;6D41;6D41;6D41;6D41;
+2F903;6D69;6D69;6D69;6D69;
+2F904;6D78;6D78;6D78;6D78;
+2F905;6D85;6D85;6D85;6D85;
+2F906;23D1E;23D1E;23D1E;23D1E;
+2F907;6D34;6D34;6D34;6D34;
+2F908;6E2F;6E2F;6E2F;6E2F;
+2F909;6E6E;6E6E;6E6E;6E6E;
+2F90A;3D33;3D33;3D33;3D33;
+2F90B;6ECB;6ECB;6ECB;6ECB;
+2F90C;6EC7;6EC7;6EC7;6EC7;
+2F90D;23ED1;23ED1;23ED1;23ED1;
+2F90E;6DF9;6DF9;6DF9;6DF9;
+2F90F;6F6E;6F6E;6F6E;6F6E;
+2F910;23F5E;23F5E;23F5E;23F5E;
+2F911;23F8E;23F8E;23F8E;23F8E;
+2F912;6FC6;6FC6;6FC6;6FC6;
+2F913;7039;7039;7039;7039;
+2F914;701E;701E;701E;701E;
+2F915;701B;701B;701B;701B;
+2F916;3D96;3D96;3D96;3D96;
+2F917;704A;704A;704A;704A;
+2F918;707D;707D;707D;707D;
+2F919;7077;7077;7077;7077;
+2F91A;70AD;70AD;70AD;70AD;
+2F91B;20525;20525;20525;20525;
+2F91C;7145;7145;7145;7145;
+2F91D;24263;24263;24263;24263;
+2F91E;719C;719C;719C;719C;
+# NormalizationCorrections-4.0.0.txt -- 2F91F;43AB;43AB;43AB;43AB;
+2F920;7228;7228;7228;7228;
+2F921;7235;7235;7235;7235;
+2F922;7250;7250;7250;7250;
+2F923;24608;24608;24608;24608;
+2F924;7280;7280;7280;7280;
+2F925;7295;7295;7295;7295;
+2F926;24735;24735;24735;24735;
+2F927;24814;24814;24814;24814;
+2F928;737A;737A;737A;737A;
+2F929;738B;738B;738B;738B;
+2F92A;3EAC;3EAC;3EAC;3EAC;
+2F92B;73A5;73A5;73A5;73A5;
+2F92C;3EB8;3EB8;3EB8;3EB8;
+2F92D;3EB8;3EB8;3EB8;3EB8;
+2F92E;7447;7447;7447;7447;
+2F92F;745C;745C;745C;745C;
+2F930;7471;7471;7471;7471;
+2F931;7485;7485;7485;7485;
+2F932;74CA;74CA;74CA;74CA;
+2F933;3F1B;3F1B;3F1B;3F1B;
+2F934;7524;7524;7524;7524;
+2F935;24C36;24C36;24C36;24C36;
+2F936;753E;753E;753E;753E;
+2F937;24C92;24C92;24C92;24C92;
+2F938;7570;7570;7570;7570;
+2F939;2219F;2219F;2219F;2219F;
+2F93A;7610;7610;7610;7610;
+2F93B;24FA1;24FA1;24FA1;24FA1;
+2F93C;24FB8;24FB8;24FB8;24FB8;
+2F93D;25044;25044;25044;25044;
+2F93E;3FFC;3FFC;3FFC;3FFC;
+2F93F;4008;4008;4008;4008;
+2F940;76F4;76F4;76F4;76F4;
+2F941;250F3;250F3;250F3;250F3;
+2F942;250F2;250F2;250F2;250F2;
+2F943;25119;25119;25119;25119;
+2F944;25133;25133;25133;25133;
+2F945;771E;771E;771E;771E;
+2F946;771F;771F;771F;771F;
+2F947;771F;771F;771F;771F;
+2F948;774A;774A;774A;774A;
+2F949;4039;4039;4039;4039;
+2F94A;778B;778B;778B;778B;
+2F94B;4046;4046;4046;4046;
+2F94C;4096;4096;4096;4096;
+2F94D;2541D;2541D;2541D;2541D;
+2F94E;784E;784E;784E;784E;
+2F94F;788C;788C;788C;788C;
+2F950;78CC;78CC;78CC;78CC;
+2F951;40E3;40E3;40E3;40E3;
+2F952;25626;25626;25626;25626;
+2F953;7956;7956;7956;7956;
+2F954;2569A;2569A;2569A;2569A;
+2F955;256C5;256C5;256C5;256C5;
+2F956;798F;798F;798F;798F;
+2F957;79EB;79EB;79EB;79EB;
+2F958;412F;412F;412F;412F;
+2F959;7A40;7A40;7A40;7A40;
+2F95A;7A4A;7A4A;7A4A;7A4A;
+2F95B;7A4F;7A4F;7A4F;7A4F;
+2F95C;2597C;2597C;2597C;2597C;
+2F95D;25AA7;25AA7;25AA7;25AA7;
+2F95E;25AA7;25AA7;25AA7;25AA7;
+# NormalizationCorrections-4.0.0.txt -- 2F95F;7AAE;7AAE;7AAE;7AAE;
+2F960;4202;4202;4202;4202;
+2F961;25BAB;25BAB;25BAB;25BAB;
+2F962;7BC6;7BC6;7BC6;7BC6;
+2F963;7BC9;7BC9;7BC9;7BC9;
+2F964;4227;4227;4227;4227;
+2F965;25C80;25C80;25C80;25C80;
+2F966;7CD2;7CD2;7CD2;7CD2;
+2F967;42A0;42A0;42A0;42A0;
+2F968;7CE8;7CE8;7CE8;7CE8;
+2F969;7CE3;7CE3;7CE3;7CE3;
+2F96A;7D00;7D00;7D00;7D00;
+2F96B;25F86;25F86;25F86;25F86;
+2F96C;7D63;7D63;7D63;7D63;
+2F96D;4301;4301;4301;4301;
+2F96E;7DC7;7DC7;7DC7;7DC7;
+2F96F;7E02;7E02;7E02;7E02;
+2F970;7E45;7E45;7E45;7E45;
+2F971;4334;4334;4334;4334;
+2F972;26228;26228;26228;26228;
+2F973;26247;26247;26247;26247;
+2F974;4359;4359;4359;4359;
+2F975;262D9;262D9;262D9;262D9;
+2F976;7F7A;7F7A;7F7A;7F7A;
+2F977;2633E;2633E;2633E;2633E;
+2F978;7F95;7F95;7F95;7F95;
+2F979;7FFA;7FFA;7FFA;7FFA;
+2F97A;8005;8005;8005;8005;
+2F97B;264DA;264DA;264DA;264DA;
+2F97C;26523;26523;26523;26523;
+2F97D;8060;8060;8060;8060;
+2F97E;265A8;265A8;265A8;265A8;
+2F97F;8070;8070;8070;8070;
+2F980;2335F;2335F;2335F;2335F;
+2F981;43D5;43D5;43D5;43D5;
+2F982;80B2;80B2;80B2;80B2;
+2F983;8103;8103;8103;8103;
+2F984;440B;440B;440B;440B;
+2F985;813E;813E;813E;813E;
+2F986;5AB5;5AB5;5AB5;5AB5;
+2F987;267A7;267A7;267A7;267A7;
+2F988;267B5;267B5;267B5;267B5;
+2F989;23393;23393;23393;23393;
+2F98A;2339C;2339C;2339C;2339C;
+2F98B;8201;8201;8201;8201;
+2F98C;8204;8204;8204;8204;
+2F98D;8F9E;8F9E;8F9E;8F9E;
+2F98E;446B;446B;446B;446B;
+2F98F;8291;8291;8291;8291;
+2F990;828B;828B;828B;828B;
+2F991;829D;829D;829D;829D;
+2F992;52B3;52B3;52B3;52B3;
+2F993;82B1;82B1;82B1;82B1;
+2F994;82B3;82B3;82B3;82B3;
+2F995;82BD;82BD;82BD;82BD;
+2F996;82E6;82E6;82E6;82E6;
+2F997;26B3C;26B3C;26B3C;26B3C;
+2F998;82E5;82E5;82E5;82E5;
+2F999;831D;831D;831D;831D;
+2F99A;8363;8363;8363;8363;
+2F99B;83AD;83AD;83AD;83AD;
+2F99C;8323;8323;8323;8323;
+2F99D;83BD;83BD;83BD;83BD;
+2F99E;83E7;83E7;83E7;83E7;
+2F99F;8457;8457;8457;8457;
+2F9A0;8353;8353;8353;8353;
+2F9A1;83CA;83CA;83CA;83CA;
+2F9A2;83CC;83CC;83CC;83CC;
+2F9A3;83DC;83DC;83DC;83DC;
+2F9A4;26C36;26C36;26C36;26C36;
+2F9A5;26D6B;26D6B;26D6B;26D6B;
+2F9A6;26CD5;26CD5;26CD5;26CD5;
+2F9A7;452B;452B;452B;452B;
+2F9A8;84F1;84F1;84F1;84F1;
+2F9A9;84F3;84F3;84F3;84F3;
+2F9AA;8516;8516;8516;8516;
+2F9AB;273CA;273CA;273CA;273CA;
+2F9AC;8564;8564;8564;8564;
+2F9AD;26F2C;26F2C;26F2C;26F2C;
+2F9AE;455D;455D;455D;455D;
+2F9AF;4561;4561;4561;4561;
+2F9B0;26FB1;26FB1;26FB1;26FB1;
+2F9B1;270D2;270D2;270D2;270D2;
+2F9B2;456B;456B;456B;456B;
+2F9B3;8650;8650;8650;8650;
+2F9B4;865C;865C;865C;865C;
+2F9B5;8667;8667;8667;8667;
+2F9B6;8669;8669;8669;8669;
+2F9B7;86A9;86A9;86A9;86A9;
+2F9B8;8688;8688;8688;8688;
+2F9B9;870E;870E;870E;870E;
+2F9BA;86E2;86E2;86E2;86E2;
+2F9BB;8779;8779;8779;8779;
+2F9BC;8728;8728;8728;8728;
+2F9BD;876B;876B;876B;876B;
+2F9BE;8786;8786;8786;8786;
+# NormalizationCorrections-4.0.0.txt -- 2F9BF;4D57;4D57;4D57;4D57;
+2F9C0;87E1;87E1;87E1;87E1;
+2F9C1;8801;8801;8801;8801;
+2F9C2;45F9;45F9;45F9;45F9;
+2F9C3;8860;8860;8860;8860;
+2F9C4;8863;8863;8863;8863;
+2F9C5;27667;27667;27667;27667;
+2F9C6;88D7;88D7;88D7;88D7;
+2F9C7;88DE;88DE;88DE;88DE;
+2F9C8;4635;4635;4635;4635;
+2F9C9;88FA;88FA;88FA;88FA;
+2F9CA;34BB;34BB;34BB;34BB;
+2F9CB;278AE;278AE;278AE;278AE;
+2F9CC;27966;27966;27966;27966;
+2F9CD;46BE;46BE;46BE;46BE;
+2F9CE;46C7;46C7;46C7;46C7;
+2F9CF;8AA0;8AA0;8AA0;8AA0;
+2F9D0;8AED;8AED;8AED;8AED;
+2F9D1;8B8A;8B8A;8B8A;8B8A;
+2F9D2;8C55;8C55;8C55;8C55;
+2F9D3;27CA8;27CA8;27CA8;27CA8;
+2F9D4;8CAB;8CAB;8CAB;8CAB;
+2F9D5;8CC1;8CC1;8CC1;8CC1;
+2F9D6;8D1B;8D1B;8D1B;8D1B;
+2F9D7;8D77;8D77;8D77;8D77;
+2F9D8;27F2F;27F2F;27F2F;27F2F;
+2F9D9;20804;20804;20804;20804;
+2F9DA;8DCB;8DCB;8DCB;8DCB;
+2F9DB;8DBC;8DBC;8DBC;8DBC;
+2F9DC;8DF0;8DF0;8DF0;8DF0;
+2F9DD;208DE;208DE;208DE;208DE;
+2F9DE;8ED4;8ED4;8ED4;8ED4;
+2F9DF;8F38;8F38;8F38;8F38;
+2F9E0;285D2;285D2;285D2;285D2;
+2F9E1;285ED;285ED;285ED;285ED;
+2F9E2;9094;9094;9094;9094;
+2F9E3;90F1;90F1;90F1;90F1;
+2F9E4;9111;9111;9111;9111;
+2F9E5;2872E;2872E;2872E;2872E;
+2F9E6;911B;911B;911B;911B;
+2F9E7;9238;9238;9238;9238;
+2F9E8;92D7;92D7;92D7;92D7;
+2F9E9;92D8;92D8;92D8;92D8;
+2F9EA;927C;927C;927C;927C;
+2F9EB;93F9;93F9;93F9;93F9;
+2F9EC;9415;9415;9415;9415;
+2F9ED;28BFA;28BFA;28BFA;28BFA;
+2F9EE;958B;958B;958B;958B;
+2F9EF;4995;4995;4995;4995;
+2F9F0;95B7;95B7;95B7;95B7;
+2F9F1;28D77;28D77;28D77;28D77;
+2F9F2;49E6;49E6;49E6;49E6;
+2F9F3;96C3;96C3;96C3;96C3;
+2F9F4;5DB2;5DB2;5DB2;5DB2;
+2F9F5;9723;9723;9723;9723;
+2F9F6;29145;29145;29145;29145;
+2F9F7;2921A;2921A;2921A;2921A;
+2F9F8;4A6E;4A6E;4A6E;4A6E;
+2F9F9;4A76;4A76;4A76;4A76;
+2F9FA;97E0;97E0;97E0;97E0;
+2F9FB;2940A;2940A;2940A;2940A;
+2F9FC;4AB2;4AB2;4AB2;4AB2;
+2F9FD;29496;29496;29496;29496;
+2F9FE;980B;980B;980B;980B;
+2F9FF;980B;980B;980B;980B;
+2FA00;9829;9829;9829;9829;
+2FA01;295B6;295B6;295B6;295B6;
+2FA02;98E2;98E2;98E2;98E2;
+2FA03;4B33;4B33;4B33;4B33;
+2FA04;9929;9929;9929;9929;
+2FA05;99A7;99A7;99A7;99A7;
+2FA06;99C2;99C2;99C2;99C2;
+2FA07;99FE;99FE;99FE;99FE;
+2FA08;4BCE;4BCE;4BCE;4BCE;
+2FA09;29B30;29B30;29B30;29B30;
+2FA0A;9B12;9B12;9B12;9B12;
+2FA0B;9C40;9C40;9C40;9C40;
+2FA0C;9CFD;9CFD;9CFD;9CFD;
+2FA0D;4CCE;4CCE;4CCE;4CCE;
+2FA0E;4CED;4CED;4CED;4CED;
+2FA0F;9D67;9D67;9D67;9D67;
+2FA10;2A0CE;2A0CE;2A0CE;2A0CE;
+2FA11;4CF8;4CF8;4CF8;4CF8;
+2FA12;2A105;2A105;2A105;2A105;
+2FA13;2A20E;2A20E;2A20E;2A20E;
+2FA14;2A291;2A291;2A291;2A291;
+2FA15;9EBB;9EBB;9EBB;9EBB;
+2FA16;4D56;4D56;4D56;4D56;
+2FA17;9EF9;9EF9;9EF9;9EF9;
+2FA18;9EFE;9EFE;9EFE;9EFE;
+2FA19;9F05;9F05;9F05;9F05;
+2FA1A;9F0F;9F0F;9F0F;9F0F;
+2FA1B;9F16;9F16;9F16;9F16;
+2FA1C;9F3B;9F3B;9F3B;9F3B;
+2FA1D;2A600;2A600;2A600;2A600;
+#
+@Part2 # Canonical Order Test
+#
+0061 0315 0300 05AE 0300 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0300 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0301 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0301 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0302 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;
+0061 0302 0315 0300 05AE 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;
+0061 0315 0300 05AE 0303 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;
+0061 0303 0315 0300 05AE 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;
+0061 0315 0300 05AE 0304 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;
+0061 0304 0315 0300 05AE 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;
+0061 0315 0300 05AE 0305 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;
+0061 0305 0315 0300 05AE 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;
+0061 0315 0300 05AE 0306 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;
+0061 0306 0315 0300 05AE 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;
+0061 0315 0300 05AE 0307 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;
+0061 0307 0315 0300 05AE 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;
+0061 0315 0300 05AE 0308 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;
+0061 0308 0315 0300 05AE 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;
+0061 0315 0300 05AE 0309 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;
+0061 0309 0315 0300 05AE 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;
+0061 0315 0300 05AE 030A 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;
+0061 030A 0315 0300 05AE 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;
+0061 0315 0300 05AE 030B 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;
+0061 030B 0315 0300 05AE 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;
+0061 0315 0300 05AE 030C 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;
+0061 030C 0315 0300 05AE 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;
+0061 0315 0300 05AE 030D 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;
+0061 030D 0315 0300 05AE 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;
+0061 0315 0300 05AE 030E 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;
+0061 030E 0315 0300 05AE 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;
+0061 0315 0300 05AE 030F 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;
+0061 030F 0315 0300 05AE 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;
+0061 0315 0300 05AE 0310 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;
+0061 0310 0315 0300 05AE 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;
+0061 0315 0300 05AE 0311 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;
+0061 0311 0315 0300 05AE 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;
+0061 0315 0300 05AE 0312 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;
+0061 0312 0315 0300 05AE 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;
+0061 0315 0300 05AE 0313 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0313 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0314 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;
+0061 0314 0315 0300 05AE 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;
+0061 0362 0315 0300 0315 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;
+0061 0315 0362 0315 0300 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;00E0 0315 0315 0362 0062;0061 0300 0315 0315 0362 0062;
+0061 059A 0316 302A 0316 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 0316 059A 0316 302A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 059A 0316 302A 0317 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;
+0061 0317 059A 0316 302A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;
+0061 059A 0316 302A 0318 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;
+0061 0318 059A 0316 302A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;
+0061 059A 0316 302A 0319 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;
+0061 0319 059A 0316 302A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;
+0061 0362 0315 0300 031A 0062;00E0 0315 031A 0362 0062;0061 0300 0315 031A 0362 0062;00E0 0315 031A 0362 0062;0061 0300 0315 031A 0362 0062;
+0061 031A 0362 0315 0300 0062;00E0 031A 0315 0362 0062;0061 0300 031A 0315 0362 0062;00E0 031A 0315 0362 0062;0061 0300 031A 0315 0362 0062;
+0061 302A 031B 0321 031B 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 031B 302A 031B 0321 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 059A 0316 302A 031C 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;
+0061 031C 059A 0316 302A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;
+0061 059A 0316 302A 031D 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;
+0061 031D 059A 0316 302A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;
+0061 059A 0316 302A 031E 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;
+0061 031E 059A 0316 302A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;
+0061 059A 0316 302A 031F 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;
+0061 031F 059A 0316 302A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;
+0061 059A 0316 302A 0320 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;
+0061 0320 059A 0316 302A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;
+0061 031B 0321 0F74 0321 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 0321 031B 0321 0F74 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 031B 0321 0F74 0322 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;
+0061 0322 031B 0321 0F74 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;
+0061 059A 0316 302A 0323 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;
+0061 0323 059A 0316 302A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;
+0061 059A 0316 302A 0324 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;
+0061 0324 059A 0316 302A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;
+0061 059A 0316 302A 0325 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;
+0061 0325 059A 0316 302A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;
+0061 059A 0316 302A 0326 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;
+0061 0326 059A 0316 302A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;
+0061 031B 0321 0F74 0327 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;
+0061 0327 031B 0321 0F74 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;
+0061 031B 0321 0F74 0328 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;
+0061 0328 031B 0321 0F74 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;
+0061 059A 0316 302A 0329 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;
+0061 0329 059A 0316 302A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;
+0061 059A 0316 302A 032A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;
+0061 032A 059A 0316 302A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;
+0061 059A 0316 302A 032B 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;
+0061 032B 059A 0316 302A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;
+0061 059A 0316 302A 032C 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;
+0061 032C 059A 0316 302A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;
+0061 059A 0316 302A 032D 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;
+0061 032D 059A 0316 302A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;
+0061 059A 0316 302A 032E 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;
+0061 032E 059A 0316 302A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;
+0061 059A 0316 302A 032F 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;
+0061 032F 059A 0316 302A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;
+0061 059A 0316 302A 0330 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;
+0061 0330 059A 0316 302A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;
+0061 059A 0316 302A 0331 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;
+0061 0331 059A 0316 302A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;
+0061 059A 0316 302A 0332 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;
+0061 0332 059A 0316 302A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;
+0061 059A 0316 302A 0333 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;
+0061 0333 059A 0316 302A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;
+0061 093C 0334 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 0334 093C 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 093C 0334 0335 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;
+0061 0335 093C 0334 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;
+0061 093C 0334 0336 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;
+0061 0336 093C 0334 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;
+0061 093C 0334 0337 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;
+0061 0337 093C 0334 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;
+0061 093C 0334 0338 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;
+0061 0338 093C 0334 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;
+0061 059A 0316 302A 0339 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;
+0061 0339 059A 0316 302A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;
+0061 059A 0316 302A 033A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;
+0061 033A 059A 0316 302A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;
+0061 059A 0316 302A 033B 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;
+0061 033B 059A 0316 302A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;
+0061 059A 0316 302A 033C 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;
+0061 033C 059A 0316 302A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;
+0061 0315 0300 05AE 033D 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;
+0061 033D 0315 0300 05AE 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;
+0061 0315 0300 05AE 033E 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;
+0061 033E 0315 0300 05AE 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;
+0061 0315 0300 05AE 033F 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;
+0061 033F 0315 0300 05AE 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;
+0061 0315 0300 05AE 0340 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0340 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0341 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0341 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0342 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;
+0061 0342 0315 0300 05AE 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;
+0061 0315 0300 05AE 0343 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0343 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0344 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;
+0061 0344 0315 0300 05AE 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;
+0061 0345 0360 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;
+0061 0345 0345 0360 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;0061 0360 0345 0345 0062;
+0061 0315 0300 05AE 0346 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;
+0061 0346 0315 0300 05AE 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;
+0061 059A 0316 302A 0347 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;
+0061 0347 059A 0316 302A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;
+0061 059A 0316 302A 0348 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;
+0061 0348 059A 0316 302A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;
+0061 059A 0316 302A 0349 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;
+0061 0349 059A 0316 302A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;
+0061 0315 0300 05AE 034A 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;
+0061 034A 0315 0300 05AE 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;
+0061 0315 0300 05AE 034B 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;
+0061 034B 0315 0300 05AE 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;
+0061 0315 0300 05AE 034C 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;
+0061 034C 0315 0300 05AE 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;
+0061 059A 0316 302A 034D 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;
+0061 034D 059A 0316 302A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;
+0061 059A 0316 302A 034E 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;
+0061 034E 059A 0316 302A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;
+0061 0345 0360 0362 0360 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;
+0061 0360 0345 0360 0362 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;0061 0362 0360 0360 0345 0062;
+0061 0345 0360 0362 0361 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;0061 0362 0360 0361 0345 0062;
+0061 0361 0345 0360 0362 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;0061 0362 0361 0360 0345 0062;
+0061 0360 0362 0315 0362 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;
+0061 0362 0360 0362 0315 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;0061 0315 0362 0362 0360 0062;
+0061 0315 0300 05AE 0363 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;
+0061 0363 0315 0300 05AE 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;
+0061 0315 0300 05AE 0364 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;
+0061 0364 0315 0300 05AE 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;
+0061 0315 0300 05AE 0365 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;
+0061 0365 0315 0300 05AE 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;
+0061 0315 0300 05AE 0366 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;
+0061 0366 0315 0300 05AE 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;
+0061 0315 0300 05AE 0367 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;
+0061 0367 0315 0300 05AE 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;
+0061 0315 0300 05AE 0368 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;
+0061 0368 0315 0300 05AE 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;
+0061 0315 0300 05AE 0369 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;
+0061 0369 0315 0300 05AE 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;
+0061 0315 0300 05AE 036A 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;
+0061 036A 0315 0300 05AE 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;
+0061 0315 0300 05AE 036B 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;
+0061 036B 0315 0300 05AE 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;
+0061 0315 0300 05AE 036C 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;
+0061 036C 0315 0300 05AE 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;
+0061 0315 0300 05AE 036D 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;
+0061 036D 0315 0300 05AE 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;
+0061 0315 0300 05AE 036E 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;
+0061 036E 0315 0300 05AE 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;
+0061 0315 0300 05AE 036F 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;
+0061 036F 0315 0300 05AE 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;
+0061 0315 0300 05AE 0483 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;
+0061 0483 0315 0300 05AE 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;
+0061 0315 0300 05AE 0484 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;
+0061 0484 0315 0300 05AE 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;
+0061 0315 0300 05AE 0485 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;
+0061 0485 0315 0300 05AE 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;
+0061 0315 0300 05AE 0486 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;
+0061 0486 0315 0300 05AE 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;
+0061 059A 0316 302A 0591 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;
+0061 0591 059A 0316 302A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;
+0061 0315 0300 05AE 0592 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;
+0061 0592 0315 0300 05AE 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;
+0061 0315 0300 05AE 0593 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;
+0061 0593 0315 0300 05AE 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;
+0061 0315 0300 05AE 0594 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;
+0061 0594 0315 0300 05AE 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;
+0061 0315 0300 05AE 0595 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;
+0061 0595 0315 0300 05AE 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;
+0061 059A 0316 302A 0596 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;
+0061 0596 059A 0316 302A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;
+0061 0315 0300 05AE 0597 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;
+0061 0597 0315 0300 05AE 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;
+0061 0315 0300 05AE 0598 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;
+0061 0598 0315 0300 05AE 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;
+0061 0315 0300 05AE 0599 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;
+0061 0599 0315 0300 05AE 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;
+0061 302E 059A 0316 059A 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 302E 059A 0316 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 0316 302A 059B 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;
+0061 059B 059A 0316 302A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;
+0061 0315 0300 05AE 059C 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;
+0061 059C 0315 0300 05AE 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;
+0061 0315 0300 05AE 059D 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;
+0061 059D 0315 0300 05AE 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;
+0061 0315 0300 05AE 059E 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;
+0061 059E 0315 0300 05AE 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;
+0061 0315 0300 05AE 059F 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;
+0061 059F 0315 0300 05AE 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;
+0061 0315 0300 05AE 05A0 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;
+0061 05A0 0315 0300 05AE 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;
+0061 0315 0300 05AE 05A1 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;
+0061 05A1 0315 0300 05AE 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;
+0061 059A 0316 302A 05A3 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;
+0061 05A3 059A 0316 302A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;
+0061 059A 0316 302A 05A4 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;
+0061 05A4 059A 0316 302A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;
+0061 059A 0316 302A 05A5 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;
+0061 05A5 059A 0316 302A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;
+0061 059A 0316 302A 05A6 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;
+0061 05A6 059A 0316 302A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;
+0061 059A 0316 302A 05A7 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;
+0061 05A7 059A 0316 302A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;
+0061 0315 0300 05AE 05A8 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;
+0061 05A8 0315 0300 05AE 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;
+0061 0315 0300 05AE 05A9 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;
+0061 05A9 0315 0300 05AE 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;
+0061 059A 0316 302A 05AA 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;
+0061 05AA 059A 0316 302A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;
+0061 0315 0300 05AE 05AB 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;
+0061 05AB 0315 0300 05AE 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;
+0061 0315 0300 05AE 05AC 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;
+0061 05AC 0315 0300 05AE 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;
+0061 302E 059A 0316 05AD 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;
+0061 05AD 302E 059A 0316 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;
+0061 0300 05AE 1D16D 05AE 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 05AE 0300 05AE 1D16D 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 0315 0300 05AE 05AF 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;
+0061 05AF 0315 0300 05AE 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;
+0061 05B1 05B0 094D 05B0 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B0 05B1 05B0 094D 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B2 05B1 05B0 05B1 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B1 05B2 05B1 05B0 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B3 05B2 05B1 05B2 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B2 05B3 05B2 05B1 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B4 05B3 05B2 05B3 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B3 05B4 05B3 05B2 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B5 05B4 05B3 05B4 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B4 05B5 05B4 05B3 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B6 05B5 05B4 05B5 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B5 05B6 05B5 05B4 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B7 05B6 05B5 05B6 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B6 05B7 05B6 05B5 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B8 05B7 05B6 05B7 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B7 05B8 05B7 05B6 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B9 05B8 05B7 05B8 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05B8 05B9 05B8 05B7 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05BB 05B9 05B8 05B9 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05B9 05BB 05B9 05B8 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05BC 05BB 05B9 05BB 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BB 05BC 05BB 05B9 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BD 05BC 05BB 05BC 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BC 05BD 05BC 05BB 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BF 05BD 05BC 05BD 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05BD 05BF 05BD 05BC 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05C1 05BF 05BD 05BF 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05BF 05C1 05BF 05BD 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05C2 05C1 05BF 05C1 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;
+0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;
+0061 064C 064B FB1E 064B 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064B 064C 064B FB1E 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064D 064C 064B 064C 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064C 064D 064C 064B 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064E 064D 064C 064D 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064D 064E 064D 064C 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064F 064E 064D 064E 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 064E 064F 064E 064D 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 0650 064F 064E 064F 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 064F 0650 064F 064E 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 0651 0650 064F 0650 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0650 0651 0650 064F 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0652 0651 0650 0651 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0651 0652 0651 0650 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0670 0652 0651 0652 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0652 0670 0652 0651 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0315 0300 05AE 0653 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;
+0061 0653 0315 0300 05AE 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;
+0061 0315 0300 05AE 0654 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;
+0061 0654 0315 0300 05AE 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;
+0061 059A 0316 302A 0655 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;
+0061 0655 059A 0316 302A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;
+0061 0711 0670 0652 0670 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0670 0711 0670 0652 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0315 0300 05AE 06D6 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;
+0061 06D6 0315 0300 05AE 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;
+0061 0315 0300 05AE 06D7 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;
+0061 06D7 0315 0300 05AE 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;
+0061 0315 0300 05AE 06D8 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;
+0061 06D8 0315 0300 05AE 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;
+0061 0315 0300 05AE 06D9 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;
+0061 06D9 0315 0300 05AE 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;
+0061 0315 0300 05AE 06DA 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;
+0061 06DA 0315 0300 05AE 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;
+0061 0315 0300 05AE 06DB 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;
+0061 06DB 0315 0300 05AE 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;
+0061 0315 0300 05AE 06DC 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;
+0061 06DC 0315 0300 05AE 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;
+0061 0315 0300 05AE 06DF 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;
+0061 06DF 0315 0300 05AE 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;
+0061 0315 0300 05AE 06E0 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;
+0061 06E0 0315 0300 05AE 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;
+0061 0315 0300 05AE 06E1 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;
+0061 06E1 0315 0300 05AE 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;
+0061 0315 0300 05AE 06E2 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;
+0061 06E2 0315 0300 05AE 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;
+0061 059A 0316 302A 06E3 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;
+0061 06E3 059A 0316 302A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;
+0061 0315 0300 05AE 06E4 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;
+0061 06E4 0315 0300 05AE 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;
+0061 0315 0300 05AE 06E7 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;
+0061 06E7 0315 0300 05AE 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;
+0061 0315 0300 05AE 06E8 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;
+0061 06E8 0315 0300 05AE 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;
+0061 059A 0316 302A 06EA 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;
+0061 06EA 059A 0316 302A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;
+0061 0315 0300 05AE 06EB 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;
+0061 06EB 0315 0300 05AE 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;
+0061 0315 0300 05AE 06EC 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;
+0061 06EC 0315 0300 05AE 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;
+0061 059A 0316 302A 06ED 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;
+0061 06ED 059A 0316 302A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;
+0061 0C55 0711 0670 0711 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0711 0C55 0711 0670 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0315 0300 05AE 0730 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;
+0061 0730 0315 0300 05AE 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;
+0061 059A 0316 302A 0731 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;
+0061 0731 059A 0316 302A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;
+0061 0315 0300 05AE 0732 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;
+0061 0732 0315 0300 05AE 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;
+0061 0315 0300 05AE 0733 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;
+0061 0733 0315 0300 05AE 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;
+0061 059A 0316 302A 0734 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;
+0061 0734 059A 0316 302A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;
+0061 0315 0300 05AE 0735 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;
+0061 0735 0315 0300 05AE 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;
+0061 0315 0300 05AE 0736 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;
+0061 0736 0315 0300 05AE 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;
+0061 059A 0316 302A 0737 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;
+0061 0737 059A 0316 302A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;
+0061 059A 0316 302A 0738 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;
+0061 0738 059A 0316 302A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;
+0061 059A 0316 302A 0739 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;
+0061 0739 059A 0316 302A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;
+0061 0315 0300 05AE 073A 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;
+0061 073A 0315 0300 05AE 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;
+0061 059A 0316 302A 073B 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;
+0061 073B 059A 0316 302A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;
+0061 059A 0316 302A 073C 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;
+0061 073C 059A 0316 302A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;
+0061 0315 0300 05AE 073D 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;
+0061 073D 0315 0300 05AE 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;
+0061 059A 0316 302A 073E 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;
+0061 073E 059A 0316 302A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;
+0061 0315 0300 05AE 073F 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;
+0061 073F 0315 0300 05AE 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;
+0061 0315 0300 05AE 0740 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;
+0061 0740 0315 0300 05AE 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;
+0061 0315 0300 05AE 0741 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;
+0061 0741 0315 0300 05AE 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;
+0061 059A 0316 302A 0742 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;
+0061 0742 059A 0316 302A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;
+0061 0315 0300 05AE 0743 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;
+0061 0743 0315 0300 05AE 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;
+0061 059A 0316 302A 0744 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;
+0061 0744 059A 0316 302A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;
+0061 0315 0300 05AE 0745 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;
+0061 0745 0315 0300 05AE 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;
+0061 059A 0316 302A 0746 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;
+0061 0746 059A 0316 302A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;
+0061 0315 0300 05AE 0747 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;
+0061 0747 0315 0300 05AE 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;
+0061 059A 0316 302A 0748 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;
+0061 0748 059A 0316 302A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;
+0061 0315 0300 05AE 0749 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;
+0061 0749 0315 0300 05AE 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;
+0061 0315 0300 05AE 074A 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;
+0061 074A 0315 0300 05AE 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;
+0061 3099 093C 0334 093C 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 093C 3099 093C 0334 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 05B0 094D 3099 094D 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 094D 05B0 094D 3099 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 0315 0300 05AE 0951 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;
+0061 0951 0315 0300 05AE 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;
+0061 059A 0316 302A 0952 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;
+0061 0952 059A 0316 302A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;
+0061 0315 0300 05AE 0953 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;
+0061 0953 0315 0300 05AE 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;
+0061 0315 0300 05AE 0954 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;
+0061 0954 0315 0300 05AE 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;
+0061 3099 093C 0334 09BC 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;
+0061 09BC 3099 093C 0334 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;
+0061 05B0 094D 3099 09CD 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;
+0061 09CD 05B0 094D 3099 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;
+0061 3099 093C 0334 0A3C 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;
+0061 0A3C 3099 093C 0334 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;
+0061 05B0 094D 3099 0A4D 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;
+0061 0A4D 05B0 094D 3099 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;
+0061 3099 093C 0334 0ABC 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;
+0061 0ABC 3099 093C 0334 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;
+0061 05B0 094D 3099 0ACD 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;
+0061 0ACD 05B0 094D 3099 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;
+0061 3099 093C 0334 0B3C 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;
+0061 0B3C 3099 093C 0334 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;
+0061 05B0 094D 3099 0B4D 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;
+0061 0B4D 05B0 094D 3099 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;
+0061 05B0 094D 3099 0BCD 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;
+0061 0BCD 05B0 094D 3099 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;
+0061 05B0 094D 3099 0C4D 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;
+0061 0C4D 05B0 094D 3099 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;
+0061 0C56 0C55 0711 0C55 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0C55 0C56 0C55 0711 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0E38 0C56 0C55 0C56 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 0C56 0E38 0C56 0C55 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 05B0 094D 3099 0CCD 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;
+0061 0CCD 05B0 094D 3099 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;
+0061 05B0 094D 3099 0D4D 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;
+0061 0D4D 05B0 094D 3099 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;
+0061 05B0 094D 3099 0DCA 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;
+0061 0DCA 05B0 094D 3099 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;
+0061 0E48 0E38 0C56 0E38 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E38 0E48 0E38 0C56 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E48 0E38 0C56 0E39 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;
+0061 0E39 0E48 0E38 0C56 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;
+0061 05B0 094D 3099 0E3A 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;
+0061 0E3A 05B0 094D 3099 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;
+0061 0EB8 0E48 0E38 0E48 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0E48 0EB8 0E48 0E38 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E49 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;
+0061 0E49 0EB8 0E48 0E38 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4A 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;
+0061 0E4A 0EB8 0E48 0E38 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4B 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;
+0061 0E4B 0EB8 0E48 0E38 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;
+0061 0EC8 0EB8 0E48 0EB8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EB8 0EC8 0EB8 0E48 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EC8 0EB8 0E48 0EB9 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;
+0061 0EB9 0EC8 0EB8 0E48 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;
+0061 0F71 0EC8 0EB8 0EC8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0EC8 0F71 0EC8 0EB8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0EC9 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;
+0061 0EC9 0F71 0EC8 0EB8 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECA 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;
+0061 0ECA 0F71 0EC8 0EB8 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECB 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;
+0061 0ECB 0F71 0EC8 0EB8 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;
+0061 059A 0316 302A 0F18 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;
+0061 0F18 059A 0316 302A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;
+0061 059A 0316 302A 0F19 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;
+0061 0F19 059A 0316 302A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;
+0061 059A 0316 302A 0F35 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;
+0061 0F35 059A 0316 302A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;
+0061 059A 0316 302A 0F37 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;
+0061 0F37 059A 0316 302A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;
+0061 302A 031B 0321 0F39 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;
+0061 0F39 302A 031B 0321 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;
+0061 0F72 0F71 0EC8 0F71 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F71 0F72 0F71 0EC8 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F74 0F72 0F71 0F72 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0F72 0F74 0F72 0F71 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0321 0F74 0F72 0F74 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0321 0F74 0F72 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0F72 0F71 0F7A 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;
+0061 0F7A 0F74 0F72 0F71 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7B 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;
+0061 0F7B 0F74 0F72 0F71 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7C 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;
+0061 0F7C 0F74 0F72 0F71 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7D 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;
+0061 0F7D 0F74 0F72 0F71 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F80 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;
+0061 0F80 0F74 0F72 0F71 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;
+0061 0315 0300 05AE 0F82 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;
+0061 0F82 0315 0300 05AE 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;
+0061 0315 0300 05AE 0F83 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;
+0061 0F83 0315 0300 05AE 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;
+0061 05B0 094D 3099 0F84 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;
+0061 0F84 05B0 094D 3099 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;
+0061 0315 0300 05AE 0F86 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;
+0061 0F86 0315 0300 05AE 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;
+0061 0315 0300 05AE 0F87 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;
+0061 0F87 0315 0300 05AE 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;
+0061 059A 0316 302A 0FC6 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;
+0061 0FC6 059A 0316 302A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;
+0061 3099 093C 0334 1037 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;
+0061 1037 3099 093C 0334 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;
+0061 05B0 094D 3099 1039 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;
+0061 1039 05B0 094D 3099 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;
+0061 05B0 094D 3099 1714 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;
+0061 1714 05B0 094D 3099 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;
+0061 05B0 094D 3099 1734 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;
+0061 1734 05B0 094D 3099 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;
+0061 05B0 094D 3099 17D2 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;
+0061 17D2 05B0 094D 3099 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;
+0061 0300 05AE 1D16D 18A9 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;
+0061 18A9 0300 05AE 1D16D 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;
+0061 0315 0300 05AE 20D0 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;
+0061 20D0 0315 0300 05AE 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;
+0061 0315 0300 05AE 20D1 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;
+0061 20D1 0315 0300 05AE 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;
+0061 093C 0334 20D2 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;
+0061 20D2 093C 0334 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;
+0061 093C 0334 20D3 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;
+0061 20D3 093C 0334 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;
+0061 0315 0300 05AE 20D4 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;
+0061 20D4 0315 0300 05AE 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;
+0061 0315 0300 05AE 20D5 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;
+0061 20D5 0315 0300 05AE 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;
+0061 0315 0300 05AE 20D6 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;
+0061 20D6 0315 0300 05AE 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;
+0061 0315 0300 05AE 20D7 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;
+0061 20D7 0315 0300 05AE 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;
+0061 093C 0334 20D8 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;
+0061 20D8 093C 0334 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;
+0061 093C 0334 20D9 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;
+0061 20D9 093C 0334 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;
+0061 093C 0334 20DA 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;
+0061 20DA 093C 0334 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;
+0061 0315 0300 05AE 20DB 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;
+0061 20DB 0315 0300 05AE 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;
+0061 0315 0300 05AE 20DC 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;
+0061 20DC 0315 0300 05AE 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;
+0061 0315 0300 05AE 20E1 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;
+0061 20E1 0315 0300 05AE 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;
+0061 093C 0334 20E5 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;
+0061 20E5 093C 0334 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;
+0061 093C 0334 20E6 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;
+0061 20E6 093C 0334 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;
+0061 0315 0300 05AE 20E7 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;
+0061 20E7 0315 0300 05AE 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;
+0061 059A 0316 302A 20E8 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;
+0061 20E8 059A 0316 302A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;
+0061 0315 0300 05AE 20E9 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;
+0061 20E9 0315 0300 05AE 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;
+0061 093C 0334 20EA 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;
+0061 20EA 093C 0334 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;
+0061 0316 302A 031B 302A 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 302A 0316 302A 031B 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 0300 05AE 1D16D 302B 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;
+0061 302B 0300 05AE 1D16D 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;
+0061 0362 0315 0300 302C 0062;00E0 0315 302C 0362 0062;0061 0300 0315 302C 0362 0062;00E0 0315 302C 0362 0062;0061 0300 0315 302C 0362 0062;
+0061 302C 0362 0315 0300 0062;00E0 302C 0315 0362 0062;0061 0300 302C 0315 0362 0062;00E0 302C 0315 0362 0062;0061 0300 302C 0315 0362 0062;
+0061 302E 059A 0316 302D 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;
+0061 302D 302E 059A 0316 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;
+0061 1D16D 302E 059A 302E 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 302E 1D16D 302E 059A 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 1D16D 302E 059A 302F 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;
+0061 302F 1D16D 302E 059A 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;
+0061 094D 3099 093C 3099 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 3099 094D 3099 093C 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 094D 3099 093C 309A 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;
+0061 309A 094D 3099 093C 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;
+0061 064B FB1E 05C2 FB1E 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 FB1E 064B FB1E 05C2 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 0315 0300 05AE FE20 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;
+0061 FE20 0315 0300 05AE 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;
+0061 0315 0300 05AE FE21 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;
+0061 FE21 0315 0300 05AE 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;
+0061 0315 0300 05AE FE22 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;
+0061 FE22 0315 0300 05AE 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;
+0061 0315 0300 05AE FE23 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;
+0061 FE23 0315 0300 05AE 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;
+0061 302A 031B 0321 1D165 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;
+0061 1D165 302A 031B 0321 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;
+0061 302A 031B 0321 1D166 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;
+0061 1D166 302A 031B 0321 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;
+0061 093C 0334 1D167 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;
+0061 1D167 093C 0334 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;
+0061 093C 0334 1D168 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;
+0061 1D168 093C 0334 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;
+0061 093C 0334 1D169 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;
+0061 1D169 093C 0334 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;
+0061 05AE 1D16D 302E 1D16D 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 1D16D 05AE 1D16D 302E 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 302A 031B 0321 1D16E 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;
+0061 1D16E 302A 031B 0321 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;
+0061 302A 031B 0321 1D16F 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;
+0061 1D16F 302A 031B 0321 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;
+0061 302A 031B 0321 1D170 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;
+0061 1D170 302A 031B 0321 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;
+0061 302A 031B 0321 1D171 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;
+0061 1D171 302A 031B 0321 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;
+0061 302A 031B 0321 1D172 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;
+0061 1D172 302A 031B 0321 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;
+0061 059A 0316 302A 1D17B 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;
+0061 1D17B 059A 0316 302A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;
+0061 059A 0316 302A 1D17C 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;
+0061 1D17C 059A 0316 302A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;
+0061 059A 0316 302A 1D17D 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;
+0061 1D17D 059A 0316 302A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;
+0061 059A 0316 302A 1D17E 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;
+0061 1D17E 059A 0316 302A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;
+0061 059A 0316 302A 1D17F 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;
+0061 1D17F 059A 0316 302A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;
+0061 059A 0316 302A 1D180 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;
+0061 1D180 059A 0316 302A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;
+0061 059A 0316 302A 1D181 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;
+0061 1D181 059A 0316 302A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;
+0061 059A 0316 302A 1D182 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;
+0061 1D182 059A 0316 302A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;
+0061 0315 0300 05AE 1D185 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;
+0061 1D185 0315 0300 05AE 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;
+0061 0315 0300 05AE 1D186 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;
+0061 1D186 0315 0300 05AE 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;
+0061 0315 0300 05AE 1D187 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;
+0061 1D187 0315 0300 05AE 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;
+0061 0315 0300 05AE 1D188 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;
+0061 1D188 0315 0300 05AE 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;
+0061 0315 0300 05AE 1D189 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;
+0061 1D189 0315 0300 05AE 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;
+0061 059A 0316 302A 1D18A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;
+0061 1D18A 059A 0316 302A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;
+0061 059A 0316 302A 1D18B 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;
+0061 1D18B 059A 0316 302A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;
+0061 0315 0300 05AE 1D1AA 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;
+0061 1D1AA 0315 0300 05AE 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;
+0061 0315 0300 05AE 1D1AB 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;
+0061 1D1AB 0315 0300 05AE 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;
+0061 0315 0300 05AE 1D1AC 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;
+0061 1D1AC 0315 0300 05AE 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;
+0061 0315 0300 05AE 1D1AD 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;
+0061 1D1AD 0315 0300 05AE 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;
+#
+# END OF FILE
diff --git a/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt b/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt
new file mode 100644
index 0000000..925e4f6
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt
@@ -0,0 +1,17558 @@
+# NormalizationTest-4.1.0.txt
+# Date: 2005-03-26, 00:33:29 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2005 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Normalization Test Suite
+# Format:
+#
+#   Columns (c1, c2,...) are separated by semicolons
+#   Comments are indicated with hash marks
+#
+# CONFORMANCE:
+# 1. The following invariants must be true for all conformant implementations
+#
+#    NFC
+#      c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3)
+#      c4 ==  NFC(c4) ==  NFC(c5)
+#
+#    NFD
+#      c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3)
+#      c5 ==  NFD(c4) ==  NFD(c5)
+#
+#    NFKC
+#      c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+#
+#    NFKD
+#      c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+#
+# 2. For every code point X assigned in this version of Unicode that is not specifically
+#    listed in Part 1, the following invariants must be true for all conformant
+#    implementations:
+#
+#      X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
+#
+@Part0 # Specific cases
+#
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0A 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0C 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0307 0323;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+0044 0323 0307;1E0C 0307;0044 0323 0307;1E0C 0307;0044 0323 0307;
+1E0A 031B;1E0A 031B;0044 031B 0307;1E0A 031B;0044 031B 0307;
+1E0C 031B;1E0C 031B;0044 031B 0323;1E0C 031B;0044 031B 0323;
+1E0A 031B 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+1E0C 031B 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0307 0323;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;1E0C 031B 0307;0044 031B 0323 0307;
+00C8;00C8;0045 0300;00C8;0045 0300;
+0112;0112;0045 0304;0112;0045 0304;
+0045 0300;00C8;0045 0300;00C8;0045 0300;
+0045 0304;0112;0045 0304;0112;0045 0304;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0112 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E14 0304;1E14 0304;0045 0304 0300 0304;1E14 0304;0045 0304 0300 0304;
+0045 0304 0300;1E14;0045 0304 0300;1E14;0045 0304 0300;
+0045 0300 0304;00C8 0304;0045 0300 0304;00C8 0304;0045 0300 0304;
+05B8 05B9 05B1 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;05B1 05B8 05B9 0591 05C3 05B0 05AC 059F;
+0592 05B7 05BC 05A5 05B0 05C0 05C4 05AD;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;05B0 05B7 05BC 05A5 0592 05C0 05AD 05C4;
+#
+@Part1 # Character by character test
+# All characters not explicitly occurring in c1 of Part 1 have identical NFC, D, KC, KD forms.
+#
+00A0;00A0;00A0;0020;0020;
+00A8;00A8;00A8;0020 0308;0020 0308;
+00AA;00AA;00AA;0061;0061;
+00AF;00AF;00AF;0020 0304;0020 0304;
+00B2;00B2;00B2;0032;0032;
+00B3;00B3;00B3;0033;0033;
+00B4;00B4;00B4;0020 0301;0020 0301;
+00B5;00B5;00B5;03BC;03BC;
+00B8;00B8;00B8;0020 0327;0020 0327;
+00B9;00B9;00B9;0031;0031;
+00BA;00BA;00BA;006F;006F;
+00BC;00BC;00BC;0031 2044 0034;0031 2044 0034;
+00BD;00BD;00BD;0031 2044 0032;0031 2044 0032;
+00BE;00BE;00BE;0033 2044 0034;0033 2044 0034;
+00C0;00C0;0041 0300;00C0;0041 0300;
+00C1;00C1;0041 0301;00C1;0041 0301;
+00C2;00C2;0041 0302;00C2;0041 0302;
+00C3;00C3;0041 0303;00C3;0041 0303;
+00C4;00C4;0041 0308;00C4;0041 0308;
+00C5;00C5;0041 030A;00C5;0041 030A;
+00C7;00C7;0043 0327;00C7;0043 0327;
+00C8;00C8;0045 0300;00C8;0045 0300;
+00C9;00C9;0045 0301;00C9;0045 0301;
+00CA;00CA;0045 0302;00CA;0045 0302;
+00CB;00CB;0045 0308;00CB;0045 0308;
+00CC;00CC;0049 0300;00CC;0049 0300;
+00CD;00CD;0049 0301;00CD;0049 0301;
+00CE;00CE;0049 0302;00CE;0049 0302;
+00CF;00CF;0049 0308;00CF;0049 0308;
+00D1;00D1;004E 0303;00D1;004E 0303;
+00D2;00D2;004F 0300;00D2;004F 0300;
+00D3;00D3;004F 0301;00D3;004F 0301;
+00D4;00D4;004F 0302;00D4;004F 0302;
+00D5;00D5;004F 0303;00D5;004F 0303;
+00D6;00D6;004F 0308;00D6;004F 0308;
+00D9;00D9;0055 0300;00D9;0055 0300;
+00DA;00DA;0055 0301;00DA;0055 0301;
+00DB;00DB;0055 0302;00DB;0055 0302;
+00DC;00DC;0055 0308;00DC;0055 0308;
+00DD;00DD;0059 0301;00DD;0059 0301;
+00E0;00E0;0061 0300;00E0;0061 0300;
+00E1;00E1;0061 0301;00E1;0061 0301;
+00E2;00E2;0061 0302;00E2;0061 0302;
+00E3;00E3;0061 0303;00E3;0061 0303;
+00E4;00E4;0061 0308;00E4;0061 0308;
+00E5;00E5;0061 030A;00E5;0061 030A;
+00E7;00E7;0063 0327;00E7;0063 0327;
+00E8;00E8;0065 0300;00E8;0065 0300;
+00E9;00E9;0065 0301;00E9;0065 0301;
+00EA;00EA;0065 0302;00EA;0065 0302;
+00EB;00EB;0065 0308;00EB;0065 0308;
+00EC;00EC;0069 0300;00EC;0069 0300;
+00ED;00ED;0069 0301;00ED;0069 0301;
+00EE;00EE;0069 0302;00EE;0069 0302;
+00EF;00EF;0069 0308;00EF;0069 0308;
+00F1;00F1;006E 0303;00F1;006E 0303;
+00F2;00F2;006F 0300;00F2;006F 0300;
+00F3;00F3;006F 0301;00F3;006F 0301;
+00F4;00F4;006F 0302;00F4;006F 0302;
+00F5;00F5;006F 0303;00F5;006F 0303;
+00F6;00F6;006F 0308;00F6;006F 0308;
+00F9;00F9;0075 0300;00F9;0075 0300;
+00FA;00FA;0075 0301;00FA;0075 0301;
+00FB;00FB;0075 0302;00FB;0075 0302;
+00FC;00FC;0075 0308;00FC;0075 0308;
+00FD;00FD;0079 0301;00FD;0079 0301;
+00FF;00FF;0079 0308;00FF;0079 0308;
+0100;0100;0041 0304;0100;0041 0304;
+0101;0101;0061 0304;0101;0061 0304;
+0102;0102;0041 0306;0102;0041 0306;
+0103;0103;0061 0306;0103;0061 0306;
+0104;0104;0041 0328;0104;0041 0328;
+0105;0105;0061 0328;0105;0061 0328;
+0106;0106;0043 0301;0106;0043 0301;
+0107;0107;0063 0301;0107;0063 0301;
+0108;0108;0043 0302;0108;0043 0302;
+0109;0109;0063 0302;0109;0063 0302;
+010A;010A;0043 0307;010A;0043 0307;
+010B;010B;0063 0307;010B;0063 0307;
+010C;010C;0043 030C;010C;0043 030C;
+010D;010D;0063 030C;010D;0063 030C;
+010E;010E;0044 030C;010E;0044 030C;
+010F;010F;0064 030C;010F;0064 030C;
+0112;0112;0045 0304;0112;0045 0304;
+0113;0113;0065 0304;0113;0065 0304;
+0114;0114;0045 0306;0114;0045 0306;
+0115;0115;0065 0306;0115;0065 0306;
+0116;0116;0045 0307;0116;0045 0307;
+0117;0117;0065 0307;0117;0065 0307;
+0118;0118;0045 0328;0118;0045 0328;
+0119;0119;0065 0328;0119;0065 0328;
+011A;011A;0045 030C;011A;0045 030C;
+011B;011B;0065 030C;011B;0065 030C;
+011C;011C;0047 0302;011C;0047 0302;
+011D;011D;0067 0302;011D;0067 0302;
+011E;011E;0047 0306;011E;0047 0306;
+011F;011F;0067 0306;011F;0067 0306;
+0120;0120;0047 0307;0120;0047 0307;
+0121;0121;0067 0307;0121;0067 0307;
+0122;0122;0047 0327;0122;0047 0327;
+0123;0123;0067 0327;0123;0067 0327;
+0124;0124;0048 0302;0124;0048 0302;
+0125;0125;0068 0302;0125;0068 0302;
+0128;0128;0049 0303;0128;0049 0303;
+0129;0129;0069 0303;0129;0069 0303;
+012A;012A;0049 0304;012A;0049 0304;
+012B;012B;0069 0304;012B;0069 0304;
+012C;012C;0049 0306;012C;0049 0306;
+012D;012D;0069 0306;012D;0069 0306;
+012E;012E;0049 0328;012E;0049 0328;
+012F;012F;0069 0328;012F;0069 0328;
+0130;0130;0049 0307;0130;0049 0307;
+0132;0132;0132;0049 004A;0049 004A;
+0133;0133;0133;0069 006A;0069 006A;
+0134;0134;004A 0302;0134;004A 0302;
+0135;0135;006A 0302;0135;006A 0302;
+0136;0136;004B 0327;0136;004B 0327;
+0137;0137;006B 0327;0137;006B 0327;
+0139;0139;004C 0301;0139;004C 0301;
+013A;013A;006C 0301;013A;006C 0301;
+013B;013B;004C 0327;013B;004C 0327;
+013C;013C;006C 0327;013C;006C 0327;
+013D;013D;004C 030C;013D;004C 030C;
+013E;013E;006C 030C;013E;006C 030C;
+013F;013F;013F;004C 00B7;004C 00B7;
+0140;0140;0140;006C 00B7;006C 00B7;
+0143;0143;004E 0301;0143;004E 0301;
+0144;0144;006E 0301;0144;006E 0301;
+0145;0145;004E 0327;0145;004E 0327;
+0146;0146;006E 0327;0146;006E 0327;
+0147;0147;004E 030C;0147;004E 030C;
+0148;0148;006E 030C;0148;006E 030C;
+0149;0149;0149;02BC 006E;02BC 006E;
+014C;014C;004F 0304;014C;004F 0304;
+014D;014D;006F 0304;014D;006F 0304;
+014E;014E;004F 0306;014E;004F 0306;
+014F;014F;006F 0306;014F;006F 0306;
+0150;0150;004F 030B;0150;004F 030B;
+0151;0151;006F 030B;0151;006F 030B;
+0154;0154;0052 0301;0154;0052 0301;
+0155;0155;0072 0301;0155;0072 0301;
+0156;0156;0052 0327;0156;0052 0327;
+0157;0157;0072 0327;0157;0072 0327;
+0158;0158;0052 030C;0158;0052 030C;
+0159;0159;0072 030C;0159;0072 030C;
+015A;015A;0053 0301;015A;0053 0301;
+015B;015B;0073 0301;015B;0073 0301;
+015C;015C;0053 0302;015C;0053 0302;
+015D;015D;0073 0302;015D;0073 0302;
+015E;015E;0053 0327;015E;0053 0327;
+015F;015F;0073 0327;015F;0073 0327;
+0160;0160;0053 030C;0160;0053 030C;
+0161;0161;0073 030C;0161;0073 030C;
+0162;0162;0054 0327;0162;0054 0327;
+0163;0163;0074 0327;0163;0074 0327;
+0164;0164;0054 030C;0164;0054 030C;
+0165;0165;0074 030C;0165;0074 030C;
+0168;0168;0055 0303;0168;0055 0303;
+0169;0169;0075 0303;0169;0075 0303;
+016A;016A;0055 0304;016A;0055 0304;
+016B;016B;0075 0304;016B;0075 0304;
+016C;016C;0055 0306;016C;0055 0306;
+016D;016D;0075 0306;016D;0075 0306;
+016E;016E;0055 030A;016E;0055 030A;
+016F;016F;0075 030A;016F;0075 030A;
+0170;0170;0055 030B;0170;0055 030B;
+0171;0171;0075 030B;0171;0075 030B;
+0172;0172;0055 0328;0172;0055 0328;
+0173;0173;0075 0328;0173;0075 0328;
+0174;0174;0057 0302;0174;0057 0302;
+0175;0175;0077 0302;0175;0077 0302;
+0176;0176;0059 0302;0176;0059 0302;
+0177;0177;0079 0302;0177;0079 0302;
+0178;0178;0059 0308;0178;0059 0308;
+0179;0179;005A 0301;0179;005A 0301;
+017A;017A;007A 0301;017A;007A 0301;
+017B;017B;005A 0307;017B;005A 0307;
+017C;017C;007A 0307;017C;007A 0307;
+017D;017D;005A 030C;017D;005A 030C;
+017E;017E;007A 030C;017E;007A 030C;
+017F;017F;017F;0073;0073;
+01A0;01A0;004F 031B;01A0;004F 031B;
+01A1;01A1;006F 031B;01A1;006F 031B;
+01AF;01AF;0055 031B;01AF;0055 031B;
+01B0;01B0;0075 031B;01B0;0075 031B;
+01C4;01C4;01C4;0044 017D;0044 005A 030C;
+01C5;01C5;01C5;0044 017E;0044 007A 030C;
+01C6;01C6;01C6;0064 017E;0064 007A 030C;
+01C7;01C7;01C7;004C 004A;004C 004A;
+01C8;01C8;01C8;004C 006A;004C 006A;
+01C9;01C9;01C9;006C 006A;006C 006A;
+01CA;01CA;01CA;004E 004A;004E 004A;
+01CB;01CB;01CB;004E 006A;004E 006A;
+01CC;01CC;01CC;006E 006A;006E 006A;
+01CD;01CD;0041 030C;01CD;0041 030C;
+01CE;01CE;0061 030C;01CE;0061 030C;
+01CF;01CF;0049 030C;01CF;0049 030C;
+01D0;01D0;0069 030C;01D0;0069 030C;
+01D1;01D1;004F 030C;01D1;004F 030C;
+01D2;01D2;006F 030C;01D2;006F 030C;
+01D3;01D3;0055 030C;01D3;0055 030C;
+01D4;01D4;0075 030C;01D4;0075 030C;
+01D5;01D5;0055 0308 0304;01D5;0055 0308 0304;
+01D6;01D6;0075 0308 0304;01D6;0075 0308 0304;
+01D7;01D7;0055 0308 0301;01D7;0055 0308 0301;
+01D8;01D8;0075 0308 0301;01D8;0075 0308 0301;
+01D9;01D9;0055 0308 030C;01D9;0055 0308 030C;
+01DA;01DA;0075 0308 030C;01DA;0075 0308 030C;
+01DB;01DB;0055 0308 0300;01DB;0055 0308 0300;
+01DC;01DC;0075 0308 0300;01DC;0075 0308 0300;
+01DE;01DE;0041 0308 0304;01DE;0041 0308 0304;
+01DF;01DF;0061 0308 0304;01DF;0061 0308 0304;
+01E0;01E0;0041 0307 0304;01E0;0041 0307 0304;
+01E1;01E1;0061 0307 0304;01E1;0061 0307 0304;
+01E2;01E2;00C6 0304;01E2;00C6 0304;
+01E3;01E3;00E6 0304;01E3;00E6 0304;
+01E6;01E6;0047 030C;01E6;0047 030C;
+01E7;01E7;0067 030C;01E7;0067 030C;
+01E8;01E8;004B 030C;01E8;004B 030C;
+01E9;01E9;006B 030C;01E9;006B 030C;
+01EA;01EA;004F 0328;01EA;004F 0328;
+01EB;01EB;006F 0328;01EB;006F 0328;
+01EC;01EC;004F 0328 0304;01EC;004F 0328 0304;
+01ED;01ED;006F 0328 0304;01ED;006F 0328 0304;
+01EE;01EE;01B7 030C;01EE;01B7 030C;
+01EF;01EF;0292 030C;01EF;0292 030C;
+01F0;01F0;006A 030C;01F0;006A 030C;
+01F1;01F1;01F1;0044 005A;0044 005A;
+01F2;01F2;01F2;0044 007A;0044 007A;
+01F3;01F3;01F3;0064 007A;0064 007A;
+01F4;01F4;0047 0301;01F4;0047 0301;
+01F5;01F5;0067 0301;01F5;0067 0301;
+01F8;01F8;004E 0300;01F8;004E 0300;
+01F9;01F9;006E 0300;01F9;006E 0300;
+01FA;01FA;0041 030A 0301;01FA;0041 030A 0301;
+01FB;01FB;0061 030A 0301;01FB;0061 030A 0301;
+01FC;01FC;00C6 0301;01FC;00C6 0301;
+01FD;01FD;00E6 0301;01FD;00E6 0301;
+01FE;01FE;00D8 0301;01FE;00D8 0301;
+01FF;01FF;00F8 0301;01FF;00F8 0301;
+0200;0200;0041 030F;0200;0041 030F;
+0201;0201;0061 030F;0201;0061 030F;
+0202;0202;0041 0311;0202;0041 0311;
+0203;0203;0061 0311;0203;0061 0311;
+0204;0204;0045 030F;0204;0045 030F;
+0205;0205;0065 030F;0205;0065 030F;
+0206;0206;0045 0311;0206;0045 0311;
+0207;0207;0065 0311;0207;0065 0311;
+0208;0208;0049 030F;0208;0049 030F;
+0209;0209;0069 030F;0209;0069 030F;
+020A;020A;0049 0311;020A;0049 0311;
+020B;020B;0069 0311;020B;0069 0311;
+020C;020C;004F 030F;020C;004F 030F;
+020D;020D;006F 030F;020D;006F 030F;
+020E;020E;004F 0311;020E;004F 0311;
+020F;020F;006F 0311;020F;006F 0311;
+0210;0210;0052 030F;0210;0052 030F;
+0211;0211;0072 030F;0211;0072 030F;
+0212;0212;0052 0311;0212;0052 0311;
+0213;0213;0072 0311;0213;0072 0311;
+0214;0214;0055 030F;0214;0055 030F;
+0215;0215;0075 030F;0215;0075 030F;
+0216;0216;0055 0311;0216;0055 0311;
+0217;0217;0075 0311;0217;0075 0311;
+0218;0218;0053 0326;0218;0053 0326;
+0219;0219;0073 0326;0219;0073 0326;
+021A;021A;0054 0326;021A;0054 0326;
+021B;021B;0074 0326;021B;0074 0326;
+021E;021E;0048 030C;021E;0048 030C;
+021F;021F;0068 030C;021F;0068 030C;
+0226;0226;0041 0307;0226;0041 0307;
+0227;0227;0061 0307;0227;0061 0307;
+0228;0228;0045 0327;0228;0045 0327;
+0229;0229;0065 0327;0229;0065 0327;
+022A;022A;004F 0308 0304;022A;004F 0308 0304;
+022B;022B;006F 0308 0304;022B;006F 0308 0304;
+022C;022C;004F 0303 0304;022C;004F 0303 0304;
+022D;022D;006F 0303 0304;022D;006F 0303 0304;
+022E;022E;004F 0307;022E;004F 0307;
+022F;022F;006F 0307;022F;006F 0307;
+0230;0230;004F 0307 0304;0230;004F 0307 0304;
+0231;0231;006F 0307 0304;0231;006F 0307 0304;
+0232;0232;0059 0304;0232;0059 0304;
+0233;0233;0079 0304;0233;0079 0304;
+02B0;02B0;02B0;0068;0068;
+02B1;02B1;02B1;0266;0266;
+02B2;02B2;02B2;006A;006A;
+02B3;02B3;02B3;0072;0072;
+02B4;02B4;02B4;0279;0279;
+02B5;02B5;02B5;027B;027B;
+02B6;02B6;02B6;0281;0281;
+02B7;02B7;02B7;0077;0077;
+02B8;02B8;02B8;0079;0079;
+02D8;02D8;02D8;0020 0306;0020 0306;
+02D9;02D9;02D9;0020 0307;0020 0307;
+02DA;02DA;02DA;0020 030A;0020 030A;
+02DB;02DB;02DB;0020 0328;0020 0328;
+02DC;02DC;02DC;0020 0303;0020 0303;
+02DD;02DD;02DD;0020 030B;0020 030B;
+02E0;02E0;02E0;0263;0263;
+02E1;02E1;02E1;006C;006C;
+02E2;02E2;02E2;0073;0073;
+02E3;02E3;02E3;0078;0078;
+02E4;02E4;02E4;0295;0295;
+0340;0300;0300;0300;0300;
+0341;0301;0301;0301;0301;
+0343;0313;0313;0313;0313;
+0344;0308 0301;0308 0301;0308 0301;0308 0301;
+0374;02B9;02B9;02B9;02B9;
+037A;037A;037A;0020 0345;0020 0345;
+037E;003B;003B;003B;003B;
+0384;0384;0384;0020 0301;0020 0301;
+0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+0386;0386;0391 0301;0386;0391 0301;
+0387;00B7;00B7;00B7;00B7;
+0388;0388;0395 0301;0388;0395 0301;
+0389;0389;0397 0301;0389;0397 0301;
+038A;038A;0399 0301;038A;0399 0301;
+038C;038C;039F 0301;038C;039F 0301;
+038E;038E;03A5 0301;038E;03A5 0301;
+038F;038F;03A9 0301;038F;03A9 0301;
+0390;0390;03B9 0308 0301;0390;03B9 0308 0301;
+03AA;03AA;0399 0308;03AA;0399 0308;
+03AB;03AB;03A5 0308;03AB;03A5 0308;
+03AC;03AC;03B1 0301;03AC;03B1 0301;
+03AD;03AD;03B5 0301;03AD;03B5 0301;
+03AE;03AE;03B7 0301;03AE;03B7 0301;
+03AF;03AF;03B9 0301;03AF;03B9 0301;
+03B0;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+03CA;03CA;03B9 0308;03CA;03B9 0308;
+03CB;03CB;03C5 0308;03CB;03C5 0308;
+03CC;03CC;03BF 0301;03CC;03BF 0301;
+03CD;03CD;03C5 0301;03CD;03C5 0301;
+03CE;03CE;03C9 0301;03CE;03C9 0301;
+03D0;03D0;03D0;03B2;03B2;
+03D1;03D1;03D1;03B8;03B8;
+03D2;03D2;03D2;03A5;03A5;
+03D3;03D3;03D2 0301;038E;03A5 0301;
+03D4;03D4;03D2 0308;03AB;03A5 0308;
+03D5;03D5;03D5;03C6;03C6;
+03D6;03D6;03D6;03C0;03C0;
+03F0;03F0;03F0;03BA;03BA;
+03F1;03F1;03F1;03C1;03C1;
+03F2;03F2;03F2;03C2;03C2;
+03F4;03F4;03F4;0398;0398;
+03F5;03F5;03F5;03B5;03B5;
+03F9;03F9;03F9;03A3;03A3;
+0400;0400;0415 0300;0400;0415 0300;
+0401;0401;0415 0308;0401;0415 0308;
+0403;0403;0413 0301;0403;0413 0301;
+0407;0407;0406 0308;0407;0406 0308;
+040C;040C;041A 0301;040C;041A 0301;
+040D;040D;0418 0300;040D;0418 0300;
+040E;040E;0423 0306;040E;0423 0306;
+0419;0419;0418 0306;0419;0418 0306;
+0439;0439;0438 0306;0439;0438 0306;
+0450;0450;0435 0300;0450;0435 0300;
+0451;0451;0435 0308;0451;0435 0308;
+0453;0453;0433 0301;0453;0433 0301;
+0457;0457;0456 0308;0457;0456 0308;
+045C;045C;043A 0301;045C;043A 0301;
+045D;045D;0438 0300;045D;0438 0300;
+045E;045E;0443 0306;045E;0443 0306;
+0476;0476;0474 030F;0476;0474 030F;
+0477;0477;0475 030F;0477;0475 030F;
+04C1;04C1;0416 0306;04C1;0416 0306;
+04C2;04C2;0436 0306;04C2;0436 0306;
+04D0;04D0;0410 0306;04D0;0410 0306;
+04D1;04D1;0430 0306;04D1;0430 0306;
+04D2;04D2;0410 0308;04D2;0410 0308;
+04D3;04D3;0430 0308;04D3;0430 0308;
+04D6;04D6;0415 0306;04D6;0415 0306;
+04D7;04D7;0435 0306;04D7;0435 0306;
+04DA;04DA;04D8 0308;04DA;04D8 0308;
+04DB;04DB;04D9 0308;04DB;04D9 0308;
+04DC;04DC;0416 0308;04DC;0416 0308;
+04DD;04DD;0436 0308;04DD;0436 0308;
+04DE;04DE;0417 0308;04DE;0417 0308;
+04DF;04DF;0437 0308;04DF;0437 0308;
+04E2;04E2;0418 0304;04E2;0418 0304;
+04E3;04E3;0438 0304;04E3;0438 0304;
+04E4;04E4;0418 0308;04E4;0418 0308;
+04E5;04E5;0438 0308;04E5;0438 0308;
+04E6;04E6;041E 0308;04E6;041E 0308;
+04E7;04E7;043E 0308;04E7;043E 0308;
+04EA;04EA;04E8 0308;04EA;04E8 0308;
+04EB;04EB;04E9 0308;04EB;04E9 0308;
+04EC;04EC;042D 0308;04EC;042D 0308;
+04ED;04ED;044D 0308;04ED;044D 0308;
+04EE;04EE;0423 0304;04EE;0423 0304;
+04EF;04EF;0443 0304;04EF;0443 0304;
+04F0;04F0;0423 0308;04F0;0423 0308;
+04F1;04F1;0443 0308;04F1;0443 0308;
+04F2;04F2;0423 030B;04F2;0423 030B;
+04F3;04F3;0443 030B;04F3;0443 030B;
+04F4;04F4;0427 0308;04F4;0427 0308;
+04F5;04F5;0447 0308;04F5;0447 0308;
+04F8;04F8;042B 0308;04F8;042B 0308;
+04F9;04F9;044B 0308;04F9;044B 0308;
+0587;0587;0587;0565 0582;0565 0582;
+0622;0622;0627 0653;0622;0627 0653;
+0623;0623;0627 0654;0623;0627 0654;
+0624;0624;0648 0654;0624;0648 0654;
+0625;0625;0627 0655;0625;0627 0655;
+0626;0626;064A 0654;0626;064A 0654;
+0675;0675;0675;0627 0674;0627 0674;
+0676;0676;0676;0648 0674;0648 0674;
+0677;0677;0677;06C7 0674;06C7 0674;
+0678;0678;0678;064A 0674;064A 0674;
+06C0;06C0;06D5 0654;06C0;06D5 0654;
+06C2;06C2;06C1 0654;06C2;06C1 0654;
+06D3;06D3;06D2 0654;06D3;06D2 0654;
+0929;0929;0928 093C;0929;0928 093C;
+0931;0931;0930 093C;0931;0930 093C;
+0934;0934;0933 093C;0934;0933 093C;
+0958;0915 093C;0915 093C;0915 093C;0915 093C;
+0959;0916 093C;0916 093C;0916 093C;0916 093C;
+095A;0917 093C;0917 093C;0917 093C;0917 093C;
+095B;091C 093C;091C 093C;091C 093C;091C 093C;
+095C;0921 093C;0921 093C;0921 093C;0921 093C;
+095D;0922 093C;0922 093C;0922 093C;0922 093C;
+095E;092B 093C;092B 093C;092B 093C;092B 093C;
+095F;092F 093C;092F 093C;092F 093C;092F 093C;
+09CB;09CB;09C7 09BE;09CB;09C7 09BE;
+09CC;09CC;09C7 09D7;09CC;09C7 09D7;
+09DC;09A1 09BC;09A1 09BC;09A1 09BC;09A1 09BC;
+09DD;09A2 09BC;09A2 09BC;09A2 09BC;09A2 09BC;
+09DF;09AF 09BC;09AF 09BC;09AF 09BC;09AF 09BC;
+0A33;0A32 0A3C;0A32 0A3C;0A32 0A3C;0A32 0A3C;
+0A36;0A38 0A3C;0A38 0A3C;0A38 0A3C;0A38 0A3C;
+0A59;0A16 0A3C;0A16 0A3C;0A16 0A3C;0A16 0A3C;
+0A5A;0A17 0A3C;0A17 0A3C;0A17 0A3C;0A17 0A3C;
+0A5B;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;0A1C 0A3C;
+0A5E;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;0A2B 0A3C;
+0B48;0B48;0B47 0B56;0B48;0B47 0B56;
+0B4B;0B4B;0B47 0B3E;0B4B;0B47 0B3E;
+0B4C;0B4C;0B47 0B57;0B4C;0B47 0B57;
+0B5C;0B21 0B3C;0B21 0B3C;0B21 0B3C;0B21 0B3C;
+0B5D;0B22 0B3C;0B22 0B3C;0B22 0B3C;0B22 0B3C;
+0B94;0B94;0B92 0BD7;0B94;0B92 0BD7;
+0BCA;0BCA;0BC6 0BBE;0BCA;0BC6 0BBE;
+0BCB;0BCB;0BC7 0BBE;0BCB;0BC7 0BBE;
+0BCC;0BCC;0BC6 0BD7;0BCC;0BC6 0BD7;
+0C48;0C48;0C46 0C56;0C48;0C46 0C56;
+0CC0;0CC0;0CBF 0CD5;0CC0;0CBF 0CD5;
+0CC7;0CC7;0CC6 0CD5;0CC7;0CC6 0CD5;
+0CC8;0CC8;0CC6 0CD6;0CC8;0CC6 0CD6;
+0CCA;0CCA;0CC6 0CC2;0CCA;0CC6 0CC2;
+0CCB;0CCB;0CC6 0CC2 0CD5;0CCB;0CC6 0CC2 0CD5;
+0D4A;0D4A;0D46 0D3E;0D4A;0D46 0D3E;
+0D4B;0D4B;0D47 0D3E;0D4B;0D47 0D3E;
+0D4C;0D4C;0D46 0D57;0D4C;0D46 0D57;
+0DDA;0DDA;0DD9 0DCA;0DDA;0DD9 0DCA;
+0DDC;0DDC;0DD9 0DCF;0DDC;0DD9 0DCF;
+0DDD;0DDD;0DD9 0DCF 0DCA;0DDD;0DD9 0DCF 0DCA;
+0DDE;0DDE;0DD9 0DDF;0DDE;0DD9 0DDF;
+0E33;0E33;0E33;0E4D 0E32;0E4D 0E32;
+0EB3;0EB3;0EB3;0ECD 0EB2;0ECD 0EB2;
+0EDC;0EDC;0EDC;0EAB 0E99;0EAB 0E99;
+0EDD;0EDD;0EDD;0EAB 0EA1;0EAB 0EA1;
+0F0C;0F0C;0F0C;0F0B;0F0B;
+0F43;0F42 0FB7;0F42 0FB7;0F42 0FB7;0F42 0FB7;
+0F4D;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;0F4C 0FB7;
+0F52;0F51 0FB7;0F51 0FB7;0F51 0FB7;0F51 0FB7;
+0F57;0F56 0FB7;0F56 0FB7;0F56 0FB7;0F56 0FB7;
+0F5C;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;0F5B 0FB7;
+0F69;0F40 0FB5;0F40 0FB5;0F40 0FB5;0F40 0FB5;
+0F73;0F71 0F72;0F71 0F72;0F71 0F72;0F71 0F72;
+0F75;0F71 0F74;0F71 0F74;0F71 0F74;0F71 0F74;
+0F76;0FB2 0F80;0FB2 0F80;0FB2 0F80;0FB2 0F80;
+0F77;0F77;0F77;0FB2 0F71 0F80;0FB2 0F71 0F80;
+0F78;0FB3 0F80;0FB3 0F80;0FB3 0F80;0FB3 0F80;
+0F79;0F79;0F79;0FB3 0F71 0F80;0FB3 0F71 0F80;
+0F81;0F71 0F80;0F71 0F80;0F71 0F80;0F71 0F80;
+0F93;0F92 0FB7;0F92 0FB7;0F92 0FB7;0F92 0FB7;
+0F9D;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;0F9C 0FB7;
+0FA2;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;0FA1 0FB7;
+0FA7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;0FA6 0FB7;
+0FAC;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;0FAB 0FB7;
+0FB9;0F90 0FB5;0F90 0FB5;0F90 0FB5;0F90 0FB5;
+1026;1026;1025 102E;1026;1025 102E;
+10FC;10FC;10FC;10DC;10DC;
+1D2C;1D2C;1D2C;0041;0041;
+1D2D;1D2D;1D2D;00C6;00C6;
+1D2E;1D2E;1D2E;0042;0042;
+1D30;1D30;1D30;0044;0044;
+1D31;1D31;1D31;0045;0045;
+1D32;1D32;1D32;018E;018E;
+1D33;1D33;1D33;0047;0047;
+1D34;1D34;1D34;0048;0048;
+1D35;1D35;1D35;0049;0049;
+1D36;1D36;1D36;004A;004A;
+1D37;1D37;1D37;004B;004B;
+1D38;1D38;1D38;004C;004C;
+1D39;1D39;1D39;004D;004D;
+1D3A;1D3A;1D3A;004E;004E;
+1D3C;1D3C;1D3C;004F;004F;
+1D3D;1D3D;1D3D;0222;0222;
+1D3E;1D3E;1D3E;0050;0050;
+1D3F;1D3F;1D3F;0052;0052;
+1D40;1D40;1D40;0054;0054;
+1D41;1D41;1D41;0055;0055;
+1D42;1D42;1D42;0057;0057;
+1D43;1D43;1D43;0061;0061;
+1D44;1D44;1D44;0250;0250;
+1D45;1D45;1D45;0251;0251;
+1D46;1D46;1D46;1D02;1D02;
+1D47;1D47;1D47;0062;0062;
+1D48;1D48;1D48;0064;0064;
+1D49;1D49;1D49;0065;0065;
+1D4A;1D4A;1D4A;0259;0259;
+1D4B;1D4B;1D4B;025B;025B;
+1D4C;1D4C;1D4C;025C;025C;
+1D4D;1D4D;1D4D;0067;0067;
+1D4F;1D4F;1D4F;006B;006B;
+1D50;1D50;1D50;006D;006D;
+1D51;1D51;1D51;014B;014B;
+1D52;1D52;1D52;006F;006F;
+1D53;1D53;1D53;0254;0254;
+1D54;1D54;1D54;1D16;1D16;
+1D55;1D55;1D55;1D17;1D17;
+1D56;1D56;1D56;0070;0070;
+1D57;1D57;1D57;0074;0074;
+1D58;1D58;1D58;0075;0075;
+1D59;1D59;1D59;1D1D;1D1D;
+1D5A;1D5A;1D5A;026F;026F;
+1D5B;1D5B;1D5B;0076;0076;
+1D5C;1D5C;1D5C;1D25;1D25;
+1D5D;1D5D;1D5D;03B2;03B2;
+1D5E;1D5E;1D5E;03B3;03B3;
+1D5F;1D5F;1D5F;03B4;03B4;
+1D60;1D60;1D60;03C6;03C6;
+1D61;1D61;1D61;03C7;03C7;
+1D62;1D62;1D62;0069;0069;
+1D63;1D63;1D63;0072;0072;
+1D64;1D64;1D64;0075;0075;
+1D65;1D65;1D65;0076;0076;
+1D66;1D66;1D66;03B2;03B2;
+1D67;1D67;1D67;03B3;03B3;
+1D68;1D68;1D68;03C1;03C1;
+1D69;1D69;1D69;03C6;03C6;
+1D6A;1D6A;1D6A;03C7;03C7;
+1D78;1D78;1D78;043D;043D;
+1D9B;1D9B;1D9B;0252;0252;
+1D9C;1D9C;1D9C;0063;0063;
+1D9D;1D9D;1D9D;0255;0255;
+1D9E;1D9E;1D9E;00F0;00F0;
+1D9F;1D9F;1D9F;025C;025C;
+1DA0;1DA0;1DA0;0066;0066;
+1DA1;1DA1;1DA1;025F;025F;
+1DA2;1DA2;1DA2;0261;0261;
+1DA3;1DA3;1DA3;0265;0265;
+1DA4;1DA4;1DA4;0268;0268;
+1DA5;1DA5;1DA5;0269;0269;
+1DA6;1DA6;1DA6;026A;026A;
+1DA7;1DA7;1DA7;1D7B;1D7B;
+1DA8;1DA8;1DA8;029D;029D;
+1DA9;1DA9;1DA9;026D;026D;
+1DAA;1DAA;1DAA;1D85;1D85;
+1DAB;1DAB;1DAB;029F;029F;
+1DAC;1DAC;1DAC;0271;0271;
+1DAD;1DAD;1DAD;0270;0270;
+1DAE;1DAE;1DAE;0272;0272;
+1DAF;1DAF;1DAF;0273;0273;
+1DB0;1DB0;1DB0;0274;0274;
+1DB1;1DB1;1DB1;0275;0275;
+1DB2;1DB2;1DB2;0278;0278;
+1DB3;1DB3;1DB3;0282;0282;
+1DB4;1DB4;1DB4;0283;0283;
+1DB5;1DB5;1DB5;01AB;01AB;
+1DB6;1DB6;1DB6;0289;0289;
+1DB7;1DB7;1DB7;028A;028A;
+1DB8;1DB8;1DB8;1D1C;1D1C;
+1DB9;1DB9;1DB9;028B;028B;
+1DBA;1DBA;1DBA;028C;028C;
+1DBB;1DBB;1DBB;007A;007A;
+1DBC;1DBC;1DBC;0290;0290;
+1DBD;1DBD;1DBD;0291;0291;
+1DBE;1DBE;1DBE;0292;0292;
+1DBF;1DBF;1DBF;03B8;03B8;
+1E00;1E00;0041 0325;1E00;0041 0325;
+1E01;1E01;0061 0325;1E01;0061 0325;
+1E02;1E02;0042 0307;1E02;0042 0307;
+1E03;1E03;0062 0307;1E03;0062 0307;
+1E04;1E04;0042 0323;1E04;0042 0323;
+1E05;1E05;0062 0323;1E05;0062 0323;
+1E06;1E06;0042 0331;1E06;0042 0331;
+1E07;1E07;0062 0331;1E07;0062 0331;
+1E08;1E08;0043 0327 0301;1E08;0043 0327 0301;
+1E09;1E09;0063 0327 0301;1E09;0063 0327 0301;
+1E0A;1E0A;0044 0307;1E0A;0044 0307;
+1E0B;1E0B;0064 0307;1E0B;0064 0307;
+1E0C;1E0C;0044 0323;1E0C;0044 0323;
+1E0D;1E0D;0064 0323;1E0D;0064 0323;
+1E0E;1E0E;0044 0331;1E0E;0044 0331;
+1E0F;1E0F;0064 0331;1E0F;0064 0331;
+1E10;1E10;0044 0327;1E10;0044 0327;
+1E11;1E11;0064 0327;1E11;0064 0327;
+1E12;1E12;0044 032D;1E12;0044 032D;
+1E13;1E13;0064 032D;1E13;0064 032D;
+1E14;1E14;0045 0304 0300;1E14;0045 0304 0300;
+1E15;1E15;0065 0304 0300;1E15;0065 0304 0300;
+1E16;1E16;0045 0304 0301;1E16;0045 0304 0301;
+1E17;1E17;0065 0304 0301;1E17;0065 0304 0301;
+1E18;1E18;0045 032D;1E18;0045 032D;
+1E19;1E19;0065 032D;1E19;0065 032D;
+1E1A;1E1A;0045 0330;1E1A;0045 0330;
+1E1B;1E1B;0065 0330;1E1B;0065 0330;
+1E1C;1E1C;0045 0327 0306;1E1C;0045 0327 0306;
+1E1D;1E1D;0065 0327 0306;1E1D;0065 0327 0306;
+1E1E;1E1E;0046 0307;1E1E;0046 0307;
+1E1F;1E1F;0066 0307;1E1F;0066 0307;
+1E20;1E20;0047 0304;1E20;0047 0304;
+1E21;1E21;0067 0304;1E21;0067 0304;
+1E22;1E22;0048 0307;1E22;0048 0307;
+1E23;1E23;0068 0307;1E23;0068 0307;
+1E24;1E24;0048 0323;1E24;0048 0323;
+1E25;1E25;0068 0323;1E25;0068 0323;
+1E26;1E26;0048 0308;1E26;0048 0308;
+1E27;1E27;0068 0308;1E27;0068 0308;
+1E28;1E28;0048 0327;1E28;0048 0327;
+1E29;1E29;0068 0327;1E29;0068 0327;
+1E2A;1E2A;0048 032E;1E2A;0048 032E;
+1E2B;1E2B;0068 032E;1E2B;0068 032E;
+1E2C;1E2C;0049 0330;1E2C;0049 0330;
+1E2D;1E2D;0069 0330;1E2D;0069 0330;
+1E2E;1E2E;0049 0308 0301;1E2E;0049 0308 0301;
+1E2F;1E2F;0069 0308 0301;1E2F;0069 0308 0301;
+1E30;1E30;004B 0301;1E30;004B 0301;
+1E31;1E31;006B 0301;1E31;006B 0301;
+1E32;1E32;004B 0323;1E32;004B 0323;
+1E33;1E33;006B 0323;1E33;006B 0323;
+1E34;1E34;004B 0331;1E34;004B 0331;
+1E35;1E35;006B 0331;1E35;006B 0331;
+1E36;1E36;004C 0323;1E36;004C 0323;
+1E37;1E37;006C 0323;1E37;006C 0323;
+1E38;1E38;004C 0323 0304;1E38;004C 0323 0304;
+1E39;1E39;006C 0323 0304;1E39;006C 0323 0304;
+1E3A;1E3A;004C 0331;1E3A;004C 0331;
+1E3B;1E3B;006C 0331;1E3B;006C 0331;
+1E3C;1E3C;004C 032D;1E3C;004C 032D;
+1E3D;1E3D;006C 032D;1E3D;006C 032D;
+1E3E;1E3E;004D 0301;1E3E;004D 0301;
+1E3F;1E3F;006D 0301;1E3F;006D 0301;
+1E40;1E40;004D 0307;1E40;004D 0307;
+1E41;1E41;006D 0307;1E41;006D 0307;
+1E42;1E42;004D 0323;1E42;004D 0323;
+1E43;1E43;006D 0323;1E43;006D 0323;
+1E44;1E44;004E 0307;1E44;004E 0307;
+1E45;1E45;006E 0307;1E45;006E 0307;
+1E46;1E46;004E 0323;1E46;004E 0323;
+1E47;1E47;006E 0323;1E47;006E 0323;
+1E48;1E48;004E 0331;1E48;004E 0331;
+1E49;1E49;006E 0331;1E49;006E 0331;
+1E4A;1E4A;004E 032D;1E4A;004E 032D;
+1E4B;1E4B;006E 032D;1E4B;006E 032D;
+1E4C;1E4C;004F 0303 0301;1E4C;004F 0303 0301;
+1E4D;1E4D;006F 0303 0301;1E4D;006F 0303 0301;
+1E4E;1E4E;004F 0303 0308;1E4E;004F 0303 0308;
+1E4F;1E4F;006F 0303 0308;1E4F;006F 0303 0308;
+1E50;1E50;004F 0304 0300;1E50;004F 0304 0300;
+1E51;1E51;006F 0304 0300;1E51;006F 0304 0300;
+1E52;1E52;004F 0304 0301;1E52;004F 0304 0301;
+1E53;1E53;006F 0304 0301;1E53;006F 0304 0301;
+1E54;1E54;0050 0301;1E54;0050 0301;
+1E55;1E55;0070 0301;1E55;0070 0301;
+1E56;1E56;0050 0307;1E56;0050 0307;
+1E57;1E57;0070 0307;1E57;0070 0307;
+1E58;1E58;0052 0307;1E58;0052 0307;
+1E59;1E59;0072 0307;1E59;0072 0307;
+1E5A;1E5A;0052 0323;1E5A;0052 0323;
+1E5B;1E5B;0072 0323;1E5B;0072 0323;
+1E5C;1E5C;0052 0323 0304;1E5C;0052 0323 0304;
+1E5D;1E5D;0072 0323 0304;1E5D;0072 0323 0304;
+1E5E;1E5E;0052 0331;1E5E;0052 0331;
+1E5F;1E5F;0072 0331;1E5F;0072 0331;
+1E60;1E60;0053 0307;1E60;0053 0307;
+1E61;1E61;0073 0307;1E61;0073 0307;
+1E62;1E62;0053 0323;1E62;0053 0323;
+1E63;1E63;0073 0323;1E63;0073 0323;
+1E64;1E64;0053 0301 0307;1E64;0053 0301 0307;
+1E65;1E65;0073 0301 0307;1E65;0073 0301 0307;
+1E66;1E66;0053 030C 0307;1E66;0053 030C 0307;
+1E67;1E67;0073 030C 0307;1E67;0073 030C 0307;
+1E68;1E68;0053 0323 0307;1E68;0053 0323 0307;
+1E69;1E69;0073 0323 0307;1E69;0073 0323 0307;
+1E6A;1E6A;0054 0307;1E6A;0054 0307;
+1E6B;1E6B;0074 0307;1E6B;0074 0307;
+1E6C;1E6C;0054 0323;1E6C;0054 0323;
+1E6D;1E6D;0074 0323;1E6D;0074 0323;
+1E6E;1E6E;0054 0331;1E6E;0054 0331;
+1E6F;1E6F;0074 0331;1E6F;0074 0331;
+1E70;1E70;0054 032D;1E70;0054 032D;
+1E71;1E71;0074 032D;1E71;0074 032D;
+1E72;1E72;0055 0324;1E72;0055 0324;
+1E73;1E73;0075 0324;1E73;0075 0324;
+1E74;1E74;0055 0330;1E74;0055 0330;
+1E75;1E75;0075 0330;1E75;0075 0330;
+1E76;1E76;0055 032D;1E76;0055 032D;
+1E77;1E77;0075 032D;1E77;0075 032D;
+1E78;1E78;0055 0303 0301;1E78;0055 0303 0301;
+1E79;1E79;0075 0303 0301;1E79;0075 0303 0301;
+1E7A;1E7A;0055 0304 0308;1E7A;0055 0304 0308;
+1E7B;1E7B;0075 0304 0308;1E7B;0075 0304 0308;
+1E7C;1E7C;0056 0303;1E7C;0056 0303;
+1E7D;1E7D;0076 0303;1E7D;0076 0303;
+1E7E;1E7E;0056 0323;1E7E;0056 0323;
+1E7F;1E7F;0076 0323;1E7F;0076 0323;
+1E80;1E80;0057 0300;1E80;0057 0300;
+1E81;1E81;0077 0300;1E81;0077 0300;
+1E82;1E82;0057 0301;1E82;0057 0301;
+1E83;1E83;0077 0301;1E83;0077 0301;
+1E84;1E84;0057 0308;1E84;0057 0308;
+1E85;1E85;0077 0308;1E85;0077 0308;
+1E86;1E86;0057 0307;1E86;0057 0307;
+1E87;1E87;0077 0307;1E87;0077 0307;
+1E88;1E88;0057 0323;1E88;0057 0323;
+1E89;1E89;0077 0323;1E89;0077 0323;
+1E8A;1E8A;0058 0307;1E8A;0058 0307;
+1E8B;1E8B;0078 0307;1E8B;0078 0307;
+1E8C;1E8C;0058 0308;1E8C;0058 0308;
+1E8D;1E8D;0078 0308;1E8D;0078 0308;
+1E8E;1E8E;0059 0307;1E8E;0059 0307;
+1E8F;1E8F;0079 0307;1E8F;0079 0307;
+1E90;1E90;005A 0302;1E90;005A 0302;
+1E91;1E91;007A 0302;1E91;007A 0302;
+1E92;1E92;005A 0323;1E92;005A 0323;
+1E93;1E93;007A 0323;1E93;007A 0323;
+1E94;1E94;005A 0331;1E94;005A 0331;
+1E95;1E95;007A 0331;1E95;007A 0331;
+1E96;1E96;0068 0331;1E96;0068 0331;
+1E97;1E97;0074 0308;1E97;0074 0308;
+1E98;1E98;0077 030A;1E98;0077 030A;
+1E99;1E99;0079 030A;1E99;0079 030A;
+1E9A;1E9A;1E9A;0061 02BE;0061 02BE;
+1E9B;1E9B;017F 0307;1E61;0073 0307;
+1EA0;1EA0;0041 0323;1EA0;0041 0323;
+1EA1;1EA1;0061 0323;1EA1;0061 0323;
+1EA2;1EA2;0041 0309;1EA2;0041 0309;
+1EA3;1EA3;0061 0309;1EA3;0061 0309;
+1EA4;1EA4;0041 0302 0301;1EA4;0041 0302 0301;
+1EA5;1EA5;0061 0302 0301;1EA5;0061 0302 0301;
+1EA6;1EA6;0041 0302 0300;1EA6;0041 0302 0300;
+1EA7;1EA7;0061 0302 0300;1EA7;0061 0302 0300;
+1EA8;1EA8;0041 0302 0309;1EA8;0041 0302 0309;
+1EA9;1EA9;0061 0302 0309;1EA9;0061 0302 0309;
+1EAA;1EAA;0041 0302 0303;1EAA;0041 0302 0303;
+1EAB;1EAB;0061 0302 0303;1EAB;0061 0302 0303;
+1EAC;1EAC;0041 0323 0302;1EAC;0041 0323 0302;
+1EAD;1EAD;0061 0323 0302;1EAD;0061 0323 0302;
+1EAE;1EAE;0041 0306 0301;1EAE;0041 0306 0301;
+1EAF;1EAF;0061 0306 0301;1EAF;0061 0306 0301;
+1EB0;1EB0;0041 0306 0300;1EB0;0041 0306 0300;
+1EB1;1EB1;0061 0306 0300;1EB1;0061 0306 0300;
+1EB2;1EB2;0041 0306 0309;1EB2;0041 0306 0309;
+1EB3;1EB3;0061 0306 0309;1EB3;0061 0306 0309;
+1EB4;1EB4;0041 0306 0303;1EB4;0041 0306 0303;
+1EB5;1EB5;0061 0306 0303;1EB5;0061 0306 0303;
+1EB6;1EB6;0041 0323 0306;1EB6;0041 0323 0306;
+1EB7;1EB7;0061 0323 0306;1EB7;0061 0323 0306;
+1EB8;1EB8;0045 0323;1EB8;0045 0323;
+1EB9;1EB9;0065 0323;1EB9;0065 0323;
+1EBA;1EBA;0045 0309;1EBA;0045 0309;
+1EBB;1EBB;0065 0309;1EBB;0065 0309;
+1EBC;1EBC;0045 0303;1EBC;0045 0303;
+1EBD;1EBD;0065 0303;1EBD;0065 0303;
+1EBE;1EBE;0045 0302 0301;1EBE;0045 0302 0301;
+1EBF;1EBF;0065 0302 0301;1EBF;0065 0302 0301;
+1EC0;1EC0;0045 0302 0300;1EC0;0045 0302 0300;
+1EC1;1EC1;0065 0302 0300;1EC1;0065 0302 0300;
+1EC2;1EC2;0045 0302 0309;1EC2;0045 0302 0309;
+1EC3;1EC3;0065 0302 0309;1EC3;0065 0302 0309;
+1EC4;1EC4;0045 0302 0303;1EC4;0045 0302 0303;
+1EC5;1EC5;0065 0302 0303;1EC5;0065 0302 0303;
+1EC6;1EC6;0045 0323 0302;1EC6;0045 0323 0302;
+1EC7;1EC7;0065 0323 0302;1EC7;0065 0323 0302;
+1EC8;1EC8;0049 0309;1EC8;0049 0309;
+1EC9;1EC9;0069 0309;1EC9;0069 0309;
+1ECA;1ECA;0049 0323;1ECA;0049 0323;
+1ECB;1ECB;0069 0323;1ECB;0069 0323;
+1ECC;1ECC;004F 0323;1ECC;004F 0323;
+1ECD;1ECD;006F 0323;1ECD;006F 0323;
+1ECE;1ECE;004F 0309;1ECE;004F 0309;
+1ECF;1ECF;006F 0309;1ECF;006F 0309;
+1ED0;1ED0;004F 0302 0301;1ED0;004F 0302 0301;
+1ED1;1ED1;006F 0302 0301;1ED1;006F 0302 0301;
+1ED2;1ED2;004F 0302 0300;1ED2;004F 0302 0300;
+1ED3;1ED3;006F 0302 0300;1ED3;006F 0302 0300;
+1ED4;1ED4;004F 0302 0309;1ED4;004F 0302 0309;
+1ED5;1ED5;006F 0302 0309;1ED5;006F 0302 0309;
+1ED6;1ED6;004F 0302 0303;1ED6;004F 0302 0303;
+1ED7;1ED7;006F 0302 0303;1ED7;006F 0302 0303;
+1ED8;1ED8;004F 0323 0302;1ED8;004F 0323 0302;
+1ED9;1ED9;006F 0323 0302;1ED9;006F 0323 0302;
+1EDA;1EDA;004F 031B 0301;1EDA;004F 031B 0301;
+1EDB;1EDB;006F 031B 0301;1EDB;006F 031B 0301;
+1EDC;1EDC;004F 031B 0300;1EDC;004F 031B 0300;
+1EDD;1EDD;006F 031B 0300;1EDD;006F 031B 0300;
+1EDE;1EDE;004F 031B 0309;1EDE;004F 031B 0309;
+1EDF;1EDF;006F 031B 0309;1EDF;006F 031B 0309;
+1EE0;1EE0;004F 031B 0303;1EE0;004F 031B 0303;
+1EE1;1EE1;006F 031B 0303;1EE1;006F 031B 0303;
+1EE2;1EE2;004F 031B 0323;1EE2;004F 031B 0323;
+1EE3;1EE3;006F 031B 0323;1EE3;006F 031B 0323;
+1EE4;1EE4;0055 0323;1EE4;0055 0323;
+1EE5;1EE5;0075 0323;1EE5;0075 0323;
+1EE6;1EE6;0055 0309;1EE6;0055 0309;
+1EE7;1EE7;0075 0309;1EE7;0075 0309;
+1EE8;1EE8;0055 031B 0301;1EE8;0055 031B 0301;
+1EE9;1EE9;0075 031B 0301;1EE9;0075 031B 0301;
+1EEA;1EEA;0055 031B 0300;1EEA;0055 031B 0300;
+1EEB;1EEB;0075 031B 0300;1EEB;0075 031B 0300;
+1EEC;1EEC;0055 031B 0309;1EEC;0055 031B 0309;
+1EED;1EED;0075 031B 0309;1EED;0075 031B 0309;
+1EEE;1EEE;0055 031B 0303;1EEE;0055 031B 0303;
+1EEF;1EEF;0075 031B 0303;1EEF;0075 031B 0303;
+1EF0;1EF0;0055 031B 0323;1EF0;0055 031B 0323;
+1EF1;1EF1;0075 031B 0323;1EF1;0075 031B 0323;
+1EF2;1EF2;0059 0300;1EF2;0059 0300;
+1EF3;1EF3;0079 0300;1EF3;0079 0300;
+1EF4;1EF4;0059 0323;1EF4;0059 0323;
+1EF5;1EF5;0079 0323;1EF5;0079 0323;
+1EF6;1EF6;0059 0309;1EF6;0059 0309;
+1EF7;1EF7;0079 0309;1EF7;0079 0309;
+1EF8;1EF8;0059 0303;1EF8;0059 0303;
+1EF9;1EF9;0079 0303;1EF9;0079 0303;
+1F00;1F00;03B1 0313;1F00;03B1 0313;
+1F01;1F01;03B1 0314;1F01;03B1 0314;
+1F02;1F02;03B1 0313 0300;1F02;03B1 0313 0300;
+1F03;1F03;03B1 0314 0300;1F03;03B1 0314 0300;
+1F04;1F04;03B1 0313 0301;1F04;03B1 0313 0301;
+1F05;1F05;03B1 0314 0301;1F05;03B1 0314 0301;
+1F06;1F06;03B1 0313 0342;1F06;03B1 0313 0342;
+1F07;1F07;03B1 0314 0342;1F07;03B1 0314 0342;
+1F08;1F08;0391 0313;1F08;0391 0313;
+1F09;1F09;0391 0314;1F09;0391 0314;
+1F0A;1F0A;0391 0313 0300;1F0A;0391 0313 0300;
+1F0B;1F0B;0391 0314 0300;1F0B;0391 0314 0300;
+1F0C;1F0C;0391 0313 0301;1F0C;0391 0313 0301;
+1F0D;1F0D;0391 0314 0301;1F0D;0391 0314 0301;
+1F0E;1F0E;0391 0313 0342;1F0E;0391 0313 0342;
+1F0F;1F0F;0391 0314 0342;1F0F;0391 0314 0342;
+1F10;1F10;03B5 0313;1F10;03B5 0313;
+1F11;1F11;03B5 0314;1F11;03B5 0314;
+1F12;1F12;03B5 0313 0300;1F12;03B5 0313 0300;
+1F13;1F13;03B5 0314 0300;1F13;03B5 0314 0300;
+1F14;1F14;03B5 0313 0301;1F14;03B5 0313 0301;
+1F15;1F15;03B5 0314 0301;1F15;03B5 0314 0301;
+1F18;1F18;0395 0313;1F18;0395 0313;
+1F19;1F19;0395 0314;1F19;0395 0314;
+1F1A;1F1A;0395 0313 0300;1F1A;0395 0313 0300;
+1F1B;1F1B;0395 0314 0300;1F1B;0395 0314 0300;
+1F1C;1F1C;0395 0313 0301;1F1C;0395 0313 0301;
+1F1D;1F1D;0395 0314 0301;1F1D;0395 0314 0301;
+1F20;1F20;03B7 0313;1F20;03B7 0313;
+1F21;1F21;03B7 0314;1F21;03B7 0314;
+1F22;1F22;03B7 0313 0300;1F22;03B7 0313 0300;
+1F23;1F23;03B7 0314 0300;1F23;03B7 0314 0300;
+1F24;1F24;03B7 0313 0301;1F24;03B7 0313 0301;
+1F25;1F25;03B7 0314 0301;1F25;03B7 0314 0301;
+1F26;1F26;03B7 0313 0342;1F26;03B7 0313 0342;
+1F27;1F27;03B7 0314 0342;1F27;03B7 0314 0342;
+1F28;1F28;0397 0313;1F28;0397 0313;
+1F29;1F29;0397 0314;1F29;0397 0314;
+1F2A;1F2A;0397 0313 0300;1F2A;0397 0313 0300;
+1F2B;1F2B;0397 0314 0300;1F2B;0397 0314 0300;
+1F2C;1F2C;0397 0313 0301;1F2C;0397 0313 0301;
+1F2D;1F2D;0397 0314 0301;1F2D;0397 0314 0301;
+1F2E;1F2E;0397 0313 0342;1F2E;0397 0313 0342;
+1F2F;1F2F;0397 0314 0342;1F2F;0397 0314 0342;
+1F30;1F30;03B9 0313;1F30;03B9 0313;
+1F31;1F31;03B9 0314;1F31;03B9 0314;
+1F32;1F32;03B9 0313 0300;1F32;03B9 0313 0300;
+1F33;1F33;03B9 0314 0300;1F33;03B9 0314 0300;
+1F34;1F34;03B9 0313 0301;1F34;03B9 0313 0301;
+1F35;1F35;03B9 0314 0301;1F35;03B9 0314 0301;
+1F36;1F36;03B9 0313 0342;1F36;03B9 0313 0342;
+1F37;1F37;03B9 0314 0342;1F37;03B9 0314 0342;
+1F38;1F38;0399 0313;1F38;0399 0313;
+1F39;1F39;0399 0314;1F39;0399 0314;
+1F3A;1F3A;0399 0313 0300;1F3A;0399 0313 0300;
+1F3B;1F3B;0399 0314 0300;1F3B;0399 0314 0300;
+1F3C;1F3C;0399 0313 0301;1F3C;0399 0313 0301;
+1F3D;1F3D;0399 0314 0301;1F3D;0399 0314 0301;
+1F3E;1F3E;0399 0313 0342;1F3E;0399 0313 0342;
+1F3F;1F3F;0399 0314 0342;1F3F;0399 0314 0342;
+1F40;1F40;03BF 0313;1F40;03BF 0313;
+1F41;1F41;03BF 0314;1F41;03BF 0314;
+1F42;1F42;03BF 0313 0300;1F42;03BF 0313 0300;
+1F43;1F43;03BF 0314 0300;1F43;03BF 0314 0300;
+1F44;1F44;03BF 0313 0301;1F44;03BF 0313 0301;
+1F45;1F45;03BF 0314 0301;1F45;03BF 0314 0301;
+1F48;1F48;039F 0313;1F48;039F 0313;
+1F49;1F49;039F 0314;1F49;039F 0314;
+1F4A;1F4A;039F 0313 0300;1F4A;039F 0313 0300;
+1F4B;1F4B;039F 0314 0300;1F4B;039F 0314 0300;
+1F4C;1F4C;039F 0313 0301;1F4C;039F 0313 0301;
+1F4D;1F4D;039F 0314 0301;1F4D;039F 0314 0301;
+1F50;1F50;03C5 0313;1F50;03C5 0313;
+1F51;1F51;03C5 0314;1F51;03C5 0314;
+1F52;1F52;03C5 0313 0300;1F52;03C5 0313 0300;
+1F53;1F53;03C5 0314 0300;1F53;03C5 0314 0300;
+1F54;1F54;03C5 0313 0301;1F54;03C5 0313 0301;
+1F55;1F55;03C5 0314 0301;1F55;03C5 0314 0301;
+1F56;1F56;03C5 0313 0342;1F56;03C5 0313 0342;
+1F57;1F57;03C5 0314 0342;1F57;03C5 0314 0342;
+1F59;1F59;03A5 0314;1F59;03A5 0314;
+1F5B;1F5B;03A5 0314 0300;1F5B;03A5 0314 0300;
+1F5D;1F5D;03A5 0314 0301;1F5D;03A5 0314 0301;
+1F5F;1F5F;03A5 0314 0342;1F5F;03A5 0314 0342;
+1F60;1F60;03C9 0313;1F60;03C9 0313;
+1F61;1F61;03C9 0314;1F61;03C9 0314;
+1F62;1F62;03C9 0313 0300;1F62;03C9 0313 0300;
+1F63;1F63;03C9 0314 0300;1F63;03C9 0314 0300;
+1F64;1F64;03C9 0313 0301;1F64;03C9 0313 0301;
+1F65;1F65;03C9 0314 0301;1F65;03C9 0314 0301;
+1F66;1F66;03C9 0313 0342;1F66;03C9 0313 0342;
+1F67;1F67;03C9 0314 0342;1F67;03C9 0314 0342;
+1F68;1F68;03A9 0313;1F68;03A9 0313;
+1F69;1F69;03A9 0314;1F69;03A9 0314;
+1F6A;1F6A;03A9 0313 0300;1F6A;03A9 0313 0300;
+1F6B;1F6B;03A9 0314 0300;1F6B;03A9 0314 0300;
+1F6C;1F6C;03A9 0313 0301;1F6C;03A9 0313 0301;
+1F6D;1F6D;03A9 0314 0301;1F6D;03A9 0314 0301;
+1F6E;1F6E;03A9 0313 0342;1F6E;03A9 0313 0342;
+1F6F;1F6F;03A9 0314 0342;1F6F;03A9 0314 0342;
+1F70;1F70;03B1 0300;1F70;03B1 0300;
+1F71;03AC;03B1 0301;03AC;03B1 0301;
+1F72;1F72;03B5 0300;1F72;03B5 0300;
+1F73;03AD;03B5 0301;03AD;03B5 0301;
+1F74;1F74;03B7 0300;1F74;03B7 0300;
+1F75;03AE;03B7 0301;03AE;03B7 0301;
+1F76;1F76;03B9 0300;1F76;03B9 0300;
+1F77;03AF;03B9 0301;03AF;03B9 0301;
+1F78;1F78;03BF 0300;1F78;03BF 0300;
+1F79;03CC;03BF 0301;03CC;03BF 0301;
+1F7A;1F7A;03C5 0300;1F7A;03C5 0300;
+1F7B;03CD;03C5 0301;03CD;03C5 0301;
+1F7C;1F7C;03C9 0300;1F7C;03C9 0300;
+1F7D;03CE;03C9 0301;03CE;03C9 0301;
+1F80;1F80;03B1 0313 0345;1F80;03B1 0313 0345;
+1F81;1F81;03B1 0314 0345;1F81;03B1 0314 0345;
+1F82;1F82;03B1 0313 0300 0345;1F82;03B1 0313 0300 0345;
+1F83;1F83;03B1 0314 0300 0345;1F83;03B1 0314 0300 0345;
+1F84;1F84;03B1 0313 0301 0345;1F84;03B1 0313 0301 0345;
+1F85;1F85;03B1 0314 0301 0345;1F85;03B1 0314 0301 0345;
+1F86;1F86;03B1 0313 0342 0345;1F86;03B1 0313 0342 0345;
+1F87;1F87;03B1 0314 0342 0345;1F87;03B1 0314 0342 0345;
+1F88;1F88;0391 0313 0345;1F88;0391 0313 0345;
+1F89;1F89;0391 0314 0345;1F89;0391 0314 0345;
+1F8A;1F8A;0391 0313 0300 0345;1F8A;0391 0313 0300 0345;
+1F8B;1F8B;0391 0314 0300 0345;1F8B;0391 0314 0300 0345;
+1F8C;1F8C;0391 0313 0301 0345;1F8C;0391 0313 0301 0345;
+1F8D;1F8D;0391 0314 0301 0345;1F8D;0391 0314 0301 0345;
+1F8E;1F8E;0391 0313 0342 0345;1F8E;0391 0313 0342 0345;
+1F8F;1F8F;0391 0314 0342 0345;1F8F;0391 0314 0342 0345;
+1F90;1F90;03B7 0313 0345;1F90;03B7 0313 0345;
+1F91;1F91;03B7 0314 0345;1F91;03B7 0314 0345;
+1F92;1F92;03B7 0313 0300 0345;1F92;03B7 0313 0300 0345;
+1F93;1F93;03B7 0314 0300 0345;1F93;03B7 0314 0300 0345;
+1F94;1F94;03B7 0313 0301 0345;1F94;03B7 0313 0301 0345;
+1F95;1F95;03B7 0314 0301 0345;1F95;03B7 0314 0301 0345;
+1F96;1F96;03B7 0313 0342 0345;1F96;03B7 0313 0342 0345;
+1F97;1F97;03B7 0314 0342 0345;1F97;03B7 0314 0342 0345;
+1F98;1F98;0397 0313 0345;1F98;0397 0313 0345;
+1F99;1F99;0397 0314 0345;1F99;0397 0314 0345;
+1F9A;1F9A;0397 0313 0300 0345;1F9A;0397 0313 0300 0345;
+1F9B;1F9B;0397 0314 0300 0345;1F9B;0397 0314 0300 0345;
+1F9C;1F9C;0397 0313 0301 0345;1F9C;0397 0313 0301 0345;
+1F9D;1F9D;0397 0314 0301 0345;1F9D;0397 0314 0301 0345;
+1F9E;1F9E;0397 0313 0342 0345;1F9E;0397 0313 0342 0345;
+1F9F;1F9F;0397 0314 0342 0345;1F9F;0397 0314 0342 0345;
+1FA0;1FA0;03C9 0313 0345;1FA0;03C9 0313 0345;
+1FA1;1FA1;03C9 0314 0345;1FA1;03C9 0314 0345;
+1FA2;1FA2;03C9 0313 0300 0345;1FA2;03C9 0313 0300 0345;
+1FA3;1FA3;03C9 0314 0300 0345;1FA3;03C9 0314 0300 0345;
+1FA4;1FA4;03C9 0313 0301 0345;1FA4;03C9 0313 0301 0345;
+1FA5;1FA5;03C9 0314 0301 0345;1FA5;03C9 0314 0301 0345;
+1FA6;1FA6;03C9 0313 0342 0345;1FA6;03C9 0313 0342 0345;
+1FA7;1FA7;03C9 0314 0342 0345;1FA7;03C9 0314 0342 0345;
+1FA8;1FA8;03A9 0313 0345;1FA8;03A9 0313 0345;
+1FA9;1FA9;03A9 0314 0345;1FA9;03A9 0314 0345;
+1FAA;1FAA;03A9 0313 0300 0345;1FAA;03A9 0313 0300 0345;
+1FAB;1FAB;03A9 0314 0300 0345;1FAB;03A9 0314 0300 0345;
+1FAC;1FAC;03A9 0313 0301 0345;1FAC;03A9 0313 0301 0345;
+1FAD;1FAD;03A9 0314 0301 0345;1FAD;03A9 0314 0301 0345;
+1FAE;1FAE;03A9 0313 0342 0345;1FAE;03A9 0313 0342 0345;
+1FAF;1FAF;03A9 0314 0342 0345;1FAF;03A9 0314 0342 0345;
+1FB0;1FB0;03B1 0306;1FB0;03B1 0306;
+1FB1;1FB1;03B1 0304;1FB1;03B1 0304;
+1FB2;1FB2;03B1 0300 0345;1FB2;03B1 0300 0345;
+1FB3;1FB3;03B1 0345;1FB3;03B1 0345;
+1FB4;1FB4;03B1 0301 0345;1FB4;03B1 0301 0345;
+1FB6;1FB6;03B1 0342;1FB6;03B1 0342;
+1FB7;1FB7;03B1 0342 0345;1FB7;03B1 0342 0345;
+1FB8;1FB8;0391 0306;1FB8;0391 0306;
+1FB9;1FB9;0391 0304;1FB9;0391 0304;
+1FBA;1FBA;0391 0300;1FBA;0391 0300;
+1FBB;0386;0391 0301;0386;0391 0301;
+1FBC;1FBC;0391 0345;1FBC;0391 0345;
+1FBD;1FBD;1FBD;0020 0313;0020 0313;
+1FBE;03B9;03B9;03B9;03B9;
+1FBF;1FBF;1FBF;0020 0313;0020 0313;
+1FC0;1FC0;1FC0;0020 0342;0020 0342;
+1FC1;1FC1;00A8 0342;0020 0308 0342;0020 0308 0342;
+1FC2;1FC2;03B7 0300 0345;1FC2;03B7 0300 0345;
+1FC3;1FC3;03B7 0345;1FC3;03B7 0345;
+1FC4;1FC4;03B7 0301 0345;1FC4;03B7 0301 0345;
+1FC6;1FC6;03B7 0342;1FC6;03B7 0342;
+1FC7;1FC7;03B7 0342 0345;1FC7;03B7 0342 0345;
+1FC8;1FC8;0395 0300;1FC8;0395 0300;
+1FC9;0388;0395 0301;0388;0395 0301;
+1FCA;1FCA;0397 0300;1FCA;0397 0300;
+1FCB;0389;0397 0301;0389;0397 0301;
+1FCC;1FCC;0397 0345;1FCC;0397 0345;
+1FCD;1FCD;1FBF 0300;0020 0313 0300;0020 0313 0300;
+1FCE;1FCE;1FBF 0301;0020 0313 0301;0020 0313 0301;
+1FCF;1FCF;1FBF 0342;0020 0313 0342;0020 0313 0342;
+1FD0;1FD0;03B9 0306;1FD0;03B9 0306;
+1FD1;1FD1;03B9 0304;1FD1;03B9 0304;
+1FD2;1FD2;03B9 0308 0300;1FD2;03B9 0308 0300;
+1FD3;0390;03B9 0308 0301;0390;03B9 0308 0301;
+1FD6;1FD6;03B9 0342;1FD6;03B9 0342;
+1FD7;1FD7;03B9 0308 0342;1FD7;03B9 0308 0342;
+1FD8;1FD8;0399 0306;1FD8;0399 0306;
+1FD9;1FD9;0399 0304;1FD9;0399 0304;
+1FDA;1FDA;0399 0300;1FDA;0399 0300;
+1FDB;038A;0399 0301;038A;0399 0301;
+1FDD;1FDD;1FFE 0300;0020 0314 0300;0020 0314 0300;
+1FDE;1FDE;1FFE 0301;0020 0314 0301;0020 0314 0301;
+1FDF;1FDF;1FFE 0342;0020 0314 0342;0020 0314 0342;
+1FE0;1FE0;03C5 0306;1FE0;03C5 0306;
+1FE1;1FE1;03C5 0304;1FE1;03C5 0304;
+1FE2;1FE2;03C5 0308 0300;1FE2;03C5 0308 0300;
+1FE3;03B0;03C5 0308 0301;03B0;03C5 0308 0301;
+1FE4;1FE4;03C1 0313;1FE4;03C1 0313;
+1FE5;1FE5;03C1 0314;1FE5;03C1 0314;
+1FE6;1FE6;03C5 0342;1FE6;03C5 0342;
+1FE7;1FE7;03C5 0308 0342;1FE7;03C5 0308 0342;
+1FE8;1FE8;03A5 0306;1FE8;03A5 0306;
+1FE9;1FE9;03A5 0304;1FE9;03A5 0304;
+1FEA;1FEA;03A5 0300;1FEA;03A5 0300;
+1FEB;038E;03A5 0301;038E;03A5 0301;
+1FEC;1FEC;03A1 0314;1FEC;03A1 0314;
+1FED;1FED;00A8 0300;0020 0308 0300;0020 0308 0300;
+1FEE;0385;00A8 0301;0020 0308 0301;0020 0308 0301;
+1FEF;0060;0060;0060;0060;
+1FF2;1FF2;03C9 0300 0345;1FF2;03C9 0300 0345;
+1FF3;1FF3;03C9 0345;1FF3;03C9 0345;
+1FF4;1FF4;03C9 0301 0345;1FF4;03C9 0301 0345;
+1FF6;1FF6;03C9 0342;1FF6;03C9 0342;
+1FF7;1FF7;03C9 0342 0345;1FF7;03C9 0342 0345;
+1FF8;1FF8;039F 0300;1FF8;039F 0300;
+1FF9;038C;039F 0301;038C;039F 0301;
+1FFA;1FFA;03A9 0300;1FFA;03A9 0300;
+1FFB;038F;03A9 0301;038F;03A9 0301;
+1FFC;1FFC;03A9 0345;1FFC;03A9 0345;
+1FFD;00B4;00B4;0020 0301;0020 0301;
+1FFE;1FFE;1FFE;0020 0314;0020 0314;
+2000;2002;2002;0020;0020;
+2001;2003;2003;0020;0020;
+2002;2002;2002;0020;0020;
+2003;2003;2003;0020;0020;
+2004;2004;2004;0020;0020;
+2005;2005;2005;0020;0020;
+2006;2006;2006;0020;0020;
+2007;2007;2007;0020;0020;
+2008;2008;2008;0020;0020;
+2009;2009;2009;0020;0020;
+200A;200A;200A;0020;0020;
+2011;2011;2011;2010;2010;
+2017;2017;2017;0020 0333;0020 0333;
+2024;2024;2024;002E;002E;
+2025;2025;2025;002E 002E;002E 002E;
+2026;2026;2026;002E 002E 002E;002E 002E 002E;
+202F;202F;202F;0020;0020;
+2033;2033;2033;2032 2032;2032 2032;
+2034;2034;2034;2032 2032 2032;2032 2032 2032;
+2036;2036;2036;2035 2035;2035 2035;
+2037;2037;2037;2035 2035 2035;2035 2035 2035;
+203C;203C;203C;0021 0021;0021 0021;
+203E;203E;203E;0020 0305;0020 0305;
+2047;2047;2047;003F 003F;003F 003F;
+2048;2048;2048;003F 0021;003F 0021;
+2049;2049;2049;0021 003F;0021 003F;
+2057;2057;2057;2032 2032 2032 2032;2032 2032 2032 2032;
+205F;205F;205F;0020;0020;
+2070;2070;2070;0030;0030;
+2071;2071;2071;0069;0069;
+2074;2074;2074;0034;0034;
+2075;2075;2075;0035;0035;
+2076;2076;2076;0036;0036;
+2077;2077;2077;0037;0037;
+2078;2078;2078;0038;0038;
+2079;2079;2079;0039;0039;
+207A;207A;207A;002B;002B;
+207B;207B;207B;2212;2212;
+207C;207C;207C;003D;003D;
+207D;207D;207D;0028;0028;
+207E;207E;207E;0029;0029;
+207F;207F;207F;006E;006E;
+2080;2080;2080;0030;0030;
+2081;2081;2081;0031;0031;
+2082;2082;2082;0032;0032;
+2083;2083;2083;0033;0033;
+2084;2084;2084;0034;0034;
+2085;2085;2085;0035;0035;
+2086;2086;2086;0036;0036;
+2087;2087;2087;0037;0037;
+2088;2088;2088;0038;0038;
+2089;2089;2089;0039;0039;
+208A;208A;208A;002B;002B;
+208B;208B;208B;2212;2212;
+208C;208C;208C;003D;003D;
+208D;208D;208D;0028;0028;
+208E;208E;208E;0029;0029;
+2090;2090;2090;0061;0061;
+2091;2091;2091;0065;0065;
+2092;2092;2092;006F;006F;
+2093;2093;2093;0078;0078;
+2094;2094;2094;0259;0259;
+20A8;20A8;20A8;0052 0073;0052 0073;
+2100;2100;2100;0061 002F 0063;0061 002F 0063;
+2101;2101;2101;0061 002F 0073;0061 002F 0073;
+2102;2102;2102;0043;0043;
+2103;2103;2103;00B0 0043;00B0 0043;
+2105;2105;2105;0063 002F 006F;0063 002F 006F;
+2106;2106;2106;0063 002F 0075;0063 002F 0075;
+2107;2107;2107;0190;0190;
+2109;2109;2109;00B0 0046;00B0 0046;
+210A;210A;210A;0067;0067;
+210B;210B;210B;0048;0048;
+210C;210C;210C;0048;0048;
+210D;210D;210D;0048;0048;
+210E;210E;210E;0068;0068;
+210F;210F;210F;0127;0127;
+2110;2110;2110;0049;0049;
+2111;2111;2111;0049;0049;
+2112;2112;2112;004C;004C;
+2113;2113;2113;006C;006C;
+2115;2115;2115;004E;004E;
+2116;2116;2116;004E 006F;004E 006F;
+2119;2119;2119;0050;0050;
+211A;211A;211A;0051;0051;
+211B;211B;211B;0052;0052;
+211C;211C;211C;0052;0052;
+211D;211D;211D;0052;0052;
+2120;2120;2120;0053 004D;0053 004D;
+2121;2121;2121;0054 0045 004C;0054 0045 004C;
+2122;2122;2122;0054 004D;0054 004D;
+2124;2124;2124;005A;005A;
+2126;03A9;03A9;03A9;03A9;
+2128;2128;2128;005A;005A;
+212A;004B;004B;004B;004B;
+212B;00C5;0041 030A;00C5;0041 030A;
+212C;212C;212C;0042;0042;
+212D;212D;212D;0043;0043;
+212F;212F;212F;0065;0065;
+2130;2130;2130;0045;0045;
+2131;2131;2131;0046;0046;
+2133;2133;2133;004D;004D;
+2134;2134;2134;006F;006F;
+2135;2135;2135;05D0;05D0;
+2136;2136;2136;05D1;05D1;
+2137;2137;2137;05D2;05D2;
+2138;2138;2138;05D3;05D3;
+2139;2139;2139;0069;0069;
+213B;213B;213B;0046 0041 0058;0046 0041 0058;
+213C;213C;213C;03C0;03C0;
+213D;213D;213D;03B3;03B3;
+213E;213E;213E;0393;0393;
+213F;213F;213F;03A0;03A0;
+2140;2140;2140;2211;2211;
+2145;2145;2145;0044;0044;
+2146;2146;2146;0064;0064;
+2147;2147;2147;0065;0065;
+2148;2148;2148;0069;0069;
+2149;2149;2149;006A;006A;
+2153;2153;2153;0031 2044 0033;0031 2044 0033;
+2154;2154;2154;0032 2044 0033;0032 2044 0033;
+2155;2155;2155;0031 2044 0035;0031 2044 0035;
+2156;2156;2156;0032 2044 0035;0032 2044 0035;
+2157;2157;2157;0033 2044 0035;0033 2044 0035;
+2158;2158;2158;0034 2044 0035;0034 2044 0035;
+2159;2159;2159;0031 2044 0036;0031 2044 0036;
+215A;215A;215A;0035 2044 0036;0035 2044 0036;
+215B;215B;215B;0031 2044 0038;0031 2044 0038;
+215C;215C;215C;0033 2044 0038;0033 2044 0038;
+215D;215D;215D;0035 2044 0038;0035 2044 0038;
+215E;215E;215E;0037 2044 0038;0037 2044 0038;
+215F;215F;215F;0031 2044;0031 2044;
+2160;2160;2160;0049;0049;
+2161;2161;2161;0049 0049;0049 0049;
+2162;2162;2162;0049 0049 0049;0049 0049 0049;
+2163;2163;2163;0049 0056;0049 0056;
+2164;2164;2164;0056;0056;
+2165;2165;2165;0056 0049;0056 0049;
+2166;2166;2166;0056 0049 0049;0056 0049 0049;
+2167;2167;2167;0056 0049 0049 0049;0056 0049 0049 0049;
+2168;2168;2168;0049 0058;0049 0058;
+2169;2169;2169;0058;0058;
+216A;216A;216A;0058 0049;0058 0049;
+216B;216B;216B;0058 0049 0049;0058 0049 0049;
+216C;216C;216C;004C;004C;
+216D;216D;216D;0043;0043;
+216E;216E;216E;0044;0044;
+216F;216F;216F;004D;004D;
+2170;2170;2170;0069;0069;
+2171;2171;2171;0069 0069;0069 0069;
+2172;2172;2172;0069 0069 0069;0069 0069 0069;
+2173;2173;2173;0069 0076;0069 0076;
+2174;2174;2174;0076;0076;
+2175;2175;2175;0076 0069;0076 0069;
+2176;2176;2176;0076 0069 0069;0076 0069 0069;
+2177;2177;2177;0076 0069 0069 0069;0076 0069 0069 0069;
+2178;2178;2178;0069 0078;0069 0078;
+2179;2179;2179;0078;0078;
+217A;217A;217A;0078 0069;0078 0069;
+217B;217B;217B;0078 0069 0069;0078 0069 0069;
+217C;217C;217C;006C;006C;
+217D;217D;217D;0063;0063;
+217E;217E;217E;0064;0064;
+217F;217F;217F;006D;006D;
+219A;219A;2190 0338;219A;2190 0338;
+219B;219B;2192 0338;219B;2192 0338;
+21AE;21AE;2194 0338;21AE;2194 0338;
+21CD;21CD;21D0 0338;21CD;21D0 0338;
+21CE;21CE;21D4 0338;21CE;21D4 0338;
+21CF;21CF;21D2 0338;21CF;21D2 0338;
+2204;2204;2203 0338;2204;2203 0338;
+2209;2209;2208 0338;2209;2208 0338;
+220C;220C;220B 0338;220C;220B 0338;
+2224;2224;2223 0338;2224;2223 0338;
+2226;2226;2225 0338;2226;2225 0338;
+222C;222C;222C;222B 222B;222B 222B;
+222D;222D;222D;222B 222B 222B;222B 222B 222B;
+222F;222F;222F;222E 222E;222E 222E;
+2230;2230;2230;222E 222E 222E;222E 222E 222E;
+2241;2241;223C 0338;2241;223C 0338;
+2244;2244;2243 0338;2244;2243 0338;
+2247;2247;2245 0338;2247;2245 0338;
+2249;2249;2248 0338;2249;2248 0338;
+2260;2260;003D 0338;2260;003D 0338;
+2262;2262;2261 0338;2262;2261 0338;
+226D;226D;224D 0338;226D;224D 0338;
+226E;226E;003C 0338;226E;003C 0338;
+226F;226F;003E 0338;226F;003E 0338;
+2270;2270;2264 0338;2270;2264 0338;
+2271;2271;2265 0338;2271;2265 0338;
+2274;2274;2272 0338;2274;2272 0338;
+2275;2275;2273 0338;2275;2273 0338;
+2278;2278;2276 0338;2278;2276 0338;
+2279;2279;2277 0338;2279;2277 0338;
+2280;2280;227A 0338;2280;227A 0338;
+2281;2281;227B 0338;2281;227B 0338;
+2284;2284;2282 0338;2284;2282 0338;
+2285;2285;2283 0338;2285;2283 0338;
+2288;2288;2286 0338;2288;2286 0338;
+2289;2289;2287 0338;2289;2287 0338;
+22AC;22AC;22A2 0338;22AC;22A2 0338;
+22AD;22AD;22A8 0338;22AD;22A8 0338;
+22AE;22AE;22A9 0338;22AE;22A9 0338;
+22AF;22AF;22AB 0338;22AF;22AB 0338;
+22E0;22E0;227C 0338;22E0;227C 0338;
+22E1;22E1;227D 0338;22E1;227D 0338;
+22E2;22E2;2291 0338;22E2;2291 0338;
+22E3;22E3;2292 0338;22E3;2292 0338;
+22EA;22EA;22B2 0338;22EA;22B2 0338;
+22EB;22EB;22B3 0338;22EB;22B3 0338;
+22EC;22EC;22B4 0338;22EC;22B4 0338;
+22ED;22ED;22B5 0338;22ED;22B5 0338;
+2329;3008;3008;3008;3008;
+232A;3009;3009;3009;3009;
+2460;2460;2460;0031;0031;
+2461;2461;2461;0032;0032;
+2462;2462;2462;0033;0033;
+2463;2463;2463;0034;0034;
+2464;2464;2464;0035;0035;
+2465;2465;2465;0036;0036;
+2466;2466;2466;0037;0037;
+2467;2467;2467;0038;0038;
+2468;2468;2468;0039;0039;
+2469;2469;2469;0031 0030;0031 0030;
+246A;246A;246A;0031 0031;0031 0031;
+246B;246B;246B;0031 0032;0031 0032;
+246C;246C;246C;0031 0033;0031 0033;
+246D;246D;246D;0031 0034;0031 0034;
+246E;246E;246E;0031 0035;0031 0035;
+246F;246F;246F;0031 0036;0031 0036;
+2470;2470;2470;0031 0037;0031 0037;
+2471;2471;2471;0031 0038;0031 0038;
+2472;2472;2472;0031 0039;0031 0039;
+2473;2473;2473;0032 0030;0032 0030;
+2474;2474;2474;0028 0031 0029;0028 0031 0029;
+2475;2475;2475;0028 0032 0029;0028 0032 0029;
+2476;2476;2476;0028 0033 0029;0028 0033 0029;
+2477;2477;2477;0028 0034 0029;0028 0034 0029;
+2478;2478;2478;0028 0035 0029;0028 0035 0029;
+2479;2479;2479;0028 0036 0029;0028 0036 0029;
+247A;247A;247A;0028 0037 0029;0028 0037 0029;
+247B;247B;247B;0028 0038 0029;0028 0038 0029;
+247C;247C;247C;0028 0039 0029;0028 0039 0029;
+247D;247D;247D;0028 0031 0030 0029;0028 0031 0030 0029;
+247E;247E;247E;0028 0031 0031 0029;0028 0031 0031 0029;
+247F;247F;247F;0028 0031 0032 0029;0028 0031 0032 0029;
+2480;2480;2480;0028 0031 0033 0029;0028 0031 0033 0029;
+2481;2481;2481;0028 0031 0034 0029;0028 0031 0034 0029;
+2482;2482;2482;0028 0031 0035 0029;0028 0031 0035 0029;
+2483;2483;2483;0028 0031 0036 0029;0028 0031 0036 0029;
+2484;2484;2484;0028 0031 0037 0029;0028 0031 0037 0029;
+2485;2485;2485;0028 0031 0038 0029;0028 0031 0038 0029;
+2486;2486;2486;0028 0031 0039 0029;0028 0031 0039 0029;
+2487;2487;2487;0028 0032 0030 0029;0028 0032 0030 0029;
+2488;2488;2488;0031 002E;0031 002E;
+2489;2489;2489;0032 002E;0032 002E;
+248A;248A;248A;0033 002E;0033 002E;
+248B;248B;248B;0034 002E;0034 002E;
+248C;248C;248C;0035 002E;0035 002E;
+248D;248D;248D;0036 002E;0036 002E;
+248E;248E;248E;0037 002E;0037 002E;
+248F;248F;248F;0038 002E;0038 002E;
+2490;2490;2490;0039 002E;0039 002E;
+2491;2491;2491;0031 0030 002E;0031 0030 002E;
+2492;2492;2492;0031 0031 002E;0031 0031 002E;
+2493;2493;2493;0031 0032 002E;0031 0032 002E;
+2494;2494;2494;0031 0033 002E;0031 0033 002E;
+2495;2495;2495;0031 0034 002E;0031 0034 002E;
+2496;2496;2496;0031 0035 002E;0031 0035 002E;
+2497;2497;2497;0031 0036 002E;0031 0036 002E;
+2498;2498;2498;0031 0037 002E;0031 0037 002E;
+2499;2499;2499;0031 0038 002E;0031 0038 002E;
+249A;249A;249A;0031 0039 002E;0031 0039 002E;
+249B;249B;249B;0032 0030 002E;0032 0030 002E;
+249C;249C;249C;0028 0061 0029;0028 0061 0029;
+249D;249D;249D;0028 0062 0029;0028 0062 0029;
+249E;249E;249E;0028 0063 0029;0028 0063 0029;
+249F;249F;249F;0028 0064 0029;0028 0064 0029;
+24A0;24A0;24A0;0028 0065 0029;0028 0065 0029;
+24A1;24A1;24A1;0028 0066 0029;0028 0066 0029;
+24A2;24A2;24A2;0028 0067 0029;0028 0067 0029;
+24A3;24A3;24A3;0028 0068 0029;0028 0068 0029;
+24A4;24A4;24A4;0028 0069 0029;0028 0069 0029;
+24A5;24A5;24A5;0028 006A 0029;0028 006A 0029;
+24A6;24A6;24A6;0028 006B 0029;0028 006B 0029;
+24A7;24A7;24A7;0028 006C 0029;0028 006C 0029;
+24A8;24A8;24A8;0028 006D 0029;0028 006D 0029;
+24A9;24A9;24A9;0028 006E 0029;0028 006E 0029;
+24AA;24AA;24AA;0028 006F 0029;0028 006F 0029;
+24AB;24AB;24AB;0028 0070 0029;0028 0070 0029;
+24AC;24AC;24AC;0028 0071 0029;0028 0071 0029;
+24AD;24AD;24AD;0028 0072 0029;0028 0072 0029;
+24AE;24AE;24AE;0028 0073 0029;0028 0073 0029;
+24AF;24AF;24AF;0028 0074 0029;0028 0074 0029;
+24B0;24B0;24B0;0028 0075 0029;0028 0075 0029;
+24B1;24B1;24B1;0028 0076 0029;0028 0076 0029;
+24B2;24B2;24B2;0028 0077 0029;0028 0077 0029;
+24B3;24B3;24B3;0028 0078 0029;0028 0078 0029;
+24B4;24B4;24B4;0028 0079 0029;0028 0079 0029;
+24B5;24B5;24B5;0028 007A 0029;0028 007A 0029;
+24B6;24B6;24B6;0041;0041;
+24B7;24B7;24B7;0042;0042;
+24B8;24B8;24B8;0043;0043;
+24B9;24B9;24B9;0044;0044;
+24BA;24BA;24BA;0045;0045;
+24BB;24BB;24BB;0046;0046;
+24BC;24BC;24BC;0047;0047;
+24BD;24BD;24BD;0048;0048;
+24BE;24BE;24BE;0049;0049;
+24BF;24BF;24BF;004A;004A;
+24C0;24C0;24C0;004B;004B;
+24C1;24C1;24C1;004C;004C;
+24C2;24C2;24C2;004D;004D;
+24C3;24C3;24C3;004E;004E;
+24C4;24C4;24C4;004F;004F;
+24C5;24C5;24C5;0050;0050;
+24C6;24C6;24C6;0051;0051;
+24C7;24C7;24C7;0052;0052;
+24C8;24C8;24C8;0053;0053;
+24C9;24C9;24C9;0054;0054;
+24CA;24CA;24CA;0055;0055;
+24CB;24CB;24CB;0056;0056;
+24CC;24CC;24CC;0057;0057;
+24CD;24CD;24CD;0058;0058;
+24CE;24CE;24CE;0059;0059;
+24CF;24CF;24CF;005A;005A;
+24D0;24D0;24D0;0061;0061;
+24D1;24D1;24D1;0062;0062;
+24D2;24D2;24D2;0063;0063;
+24D3;24D3;24D3;0064;0064;
+24D4;24D4;24D4;0065;0065;
+24D5;24D5;24D5;0066;0066;
+24D6;24D6;24D6;0067;0067;
+24D7;24D7;24D7;0068;0068;
+24D8;24D8;24D8;0069;0069;
+24D9;24D9;24D9;006A;006A;
+24DA;24DA;24DA;006B;006B;
+24DB;24DB;24DB;006C;006C;
+24DC;24DC;24DC;006D;006D;
+24DD;24DD;24DD;006E;006E;
+24DE;24DE;24DE;006F;006F;
+24DF;24DF;24DF;0070;0070;
+24E0;24E0;24E0;0071;0071;
+24E1;24E1;24E1;0072;0072;
+24E2;24E2;24E2;0073;0073;
+24E3;24E3;24E3;0074;0074;
+24E4;24E4;24E4;0075;0075;
+24E5;24E5;24E5;0076;0076;
+24E6;24E6;24E6;0077;0077;
+24E7;24E7;24E7;0078;0078;
+24E8;24E8;24E8;0079;0079;
+24E9;24E9;24E9;007A;007A;
+24EA;24EA;24EA;0030;0030;
+2A0C;2A0C;2A0C;222B 222B 222B 222B;222B 222B 222B 222B;
+2A74;2A74;2A74;003A 003A 003D;003A 003A 003D;
+2A75;2A75;2A75;003D 003D;003D 003D;
+2A76;2A76;2A76;003D 003D 003D;003D 003D 003D;
+2ADC;2ADD 0338;2ADD 0338;2ADD 0338;2ADD 0338;
+2D6F;2D6F;2D6F;2D61;2D61;
+2E9F;2E9F;2E9F;6BCD;6BCD;
+2EF3;2EF3;2EF3;9F9F;9F9F;
+2F00;2F00;2F00;4E00;4E00;
+2F01;2F01;2F01;4E28;4E28;
+2F02;2F02;2F02;4E36;4E36;
+2F03;2F03;2F03;4E3F;4E3F;
+2F04;2F04;2F04;4E59;4E59;
+2F05;2F05;2F05;4E85;4E85;
+2F06;2F06;2F06;4E8C;4E8C;
+2F07;2F07;2F07;4EA0;4EA0;
+2F08;2F08;2F08;4EBA;4EBA;
+2F09;2F09;2F09;513F;513F;
+2F0A;2F0A;2F0A;5165;5165;
+2F0B;2F0B;2F0B;516B;516B;
+2F0C;2F0C;2F0C;5182;5182;
+2F0D;2F0D;2F0D;5196;5196;
+2F0E;2F0E;2F0E;51AB;51AB;
+2F0F;2F0F;2F0F;51E0;51E0;
+2F10;2F10;2F10;51F5;51F5;
+2F11;2F11;2F11;5200;5200;
+2F12;2F12;2F12;529B;529B;
+2F13;2F13;2F13;52F9;52F9;
+2F14;2F14;2F14;5315;5315;
+2F15;2F15;2F15;531A;531A;
+2F16;2F16;2F16;5338;5338;
+2F17;2F17;2F17;5341;5341;
+2F18;2F18;2F18;535C;535C;
+2F19;2F19;2F19;5369;5369;
+2F1A;2F1A;2F1A;5382;5382;
+2F1B;2F1B;2F1B;53B6;53B6;
+2F1C;2F1C;2F1C;53C8;53C8;
+2F1D;2F1D;2F1D;53E3;53E3;
+2F1E;2F1E;2F1E;56D7;56D7;
+2F1F;2F1F;2F1F;571F;571F;
+2F20;2F20;2F20;58EB;58EB;
+2F21;2F21;2F21;5902;5902;
+2F22;2F22;2F22;590A;590A;
+2F23;2F23;2F23;5915;5915;
+2F24;2F24;2F24;5927;5927;
+2F25;2F25;2F25;5973;5973;
+2F26;2F26;2F26;5B50;5B50;
+2F27;2F27;2F27;5B80;5B80;
+2F28;2F28;2F28;5BF8;5BF8;
+2F29;2F29;2F29;5C0F;5C0F;
+2F2A;2F2A;2F2A;5C22;5C22;
+2F2B;2F2B;2F2B;5C38;5C38;
+2F2C;2F2C;2F2C;5C6E;5C6E;
+2F2D;2F2D;2F2D;5C71;5C71;
+2F2E;2F2E;2F2E;5DDB;5DDB;
+2F2F;2F2F;2F2F;5DE5;5DE5;
+2F30;2F30;2F30;5DF1;5DF1;
+2F31;2F31;2F31;5DFE;5DFE;
+2F32;2F32;2F32;5E72;5E72;
+2F33;2F33;2F33;5E7A;5E7A;
+2F34;2F34;2F34;5E7F;5E7F;
+2F35;2F35;2F35;5EF4;5EF4;
+2F36;2F36;2F36;5EFE;5EFE;
+2F37;2F37;2F37;5F0B;5F0B;
+2F38;2F38;2F38;5F13;5F13;
+2F39;2F39;2F39;5F50;5F50;
+2F3A;2F3A;2F3A;5F61;5F61;
+2F3B;2F3B;2F3B;5F73;5F73;
+2F3C;2F3C;2F3C;5FC3;5FC3;
+2F3D;2F3D;2F3D;6208;6208;
+2F3E;2F3E;2F3E;6236;6236;
+2F3F;2F3F;2F3F;624B;624B;
+2F40;2F40;2F40;652F;652F;
+2F41;2F41;2F41;6534;6534;
+2F42;2F42;2F42;6587;6587;
+2F43;2F43;2F43;6597;6597;
+2F44;2F44;2F44;65A4;65A4;
+2F45;2F45;2F45;65B9;65B9;
+2F46;2F46;2F46;65E0;65E0;
+2F47;2F47;2F47;65E5;65E5;
+2F48;2F48;2F48;66F0;66F0;
+2F49;2F49;2F49;6708;6708;
+2F4A;2F4A;2F4A;6728;6728;
+2F4B;2F4B;2F4B;6B20;6B20;
+2F4C;2F4C;2F4C;6B62;6B62;
+2F4D;2F4D;2F4D;6B79;6B79;
+2F4E;2F4E;2F4E;6BB3;6BB3;
+2F4F;2F4F;2F4F;6BCB;6BCB;
+2F50;2F50;2F50;6BD4;6BD4;
+2F51;2F51;2F51;6BDB;6BDB;
+2F52;2F52;2F52;6C0F;6C0F;
+2F53;2F53;2F53;6C14;6C14;
+2F54;2F54;2F54;6C34;6C34;
+2F55;2F55;2F55;706B;706B;
+2F56;2F56;2F56;722A;722A;
+2F57;2F57;2F57;7236;7236;
+2F58;2F58;2F58;723B;723B;
+2F59;2F59;2F59;723F;723F;
+2F5A;2F5A;2F5A;7247;7247;
+2F5B;2F5B;2F5B;7259;7259;
+2F5C;2F5C;2F5C;725B;725B;
+2F5D;2F5D;2F5D;72AC;72AC;
+2F5E;2F5E;2F5E;7384;7384;
+2F5F;2F5F;2F5F;7389;7389;
+2F60;2F60;2F60;74DC;74DC;
+2F61;2F61;2F61;74E6;74E6;
+2F62;2F62;2F62;7518;7518;
+2F63;2F63;2F63;751F;751F;
+2F64;2F64;2F64;7528;7528;
+2F65;2F65;2F65;7530;7530;
+2F66;2F66;2F66;758B;758B;
+2F67;2F67;2F67;7592;7592;
+2F68;2F68;2F68;7676;7676;
+2F69;2F69;2F69;767D;767D;
+2F6A;2F6A;2F6A;76AE;76AE;
+2F6B;2F6B;2F6B;76BF;76BF;
+2F6C;2F6C;2F6C;76EE;76EE;
+2F6D;2F6D;2F6D;77DB;77DB;
+2F6E;2F6E;2F6E;77E2;77E2;
+2F6F;2F6F;2F6F;77F3;77F3;
+2F70;2F70;2F70;793A;793A;
+2F71;2F71;2F71;79B8;79B8;
+2F72;2F72;2F72;79BE;79BE;
+2F73;2F73;2F73;7A74;7A74;
+2F74;2F74;2F74;7ACB;7ACB;
+2F75;2F75;2F75;7AF9;7AF9;
+2F76;2F76;2F76;7C73;7C73;
+2F77;2F77;2F77;7CF8;7CF8;
+2F78;2F78;2F78;7F36;7F36;
+2F79;2F79;2F79;7F51;7F51;
+2F7A;2F7A;2F7A;7F8A;7F8A;
+2F7B;2F7B;2F7B;7FBD;7FBD;
+2F7C;2F7C;2F7C;8001;8001;
+2F7D;2F7D;2F7D;800C;800C;
+2F7E;2F7E;2F7E;8012;8012;
+2F7F;2F7F;2F7F;8033;8033;
+2F80;2F80;2F80;807F;807F;
+2F81;2F81;2F81;8089;8089;
+2F82;2F82;2F82;81E3;81E3;
+2F83;2F83;2F83;81EA;81EA;
+2F84;2F84;2F84;81F3;81F3;
+2F85;2F85;2F85;81FC;81FC;
+2F86;2F86;2F86;820C;820C;
+2F87;2F87;2F87;821B;821B;
+2F88;2F88;2F88;821F;821F;
+2F89;2F89;2F89;826E;826E;
+2F8A;2F8A;2F8A;8272;8272;
+2F8B;2F8B;2F8B;8278;8278;
+2F8C;2F8C;2F8C;864D;864D;
+2F8D;2F8D;2F8D;866B;866B;
+2F8E;2F8E;2F8E;8840;8840;
+2F8F;2F8F;2F8F;884C;884C;
+2F90;2F90;2F90;8863;8863;
+2F91;2F91;2F91;897E;897E;
+2F92;2F92;2F92;898B;898B;
+2F93;2F93;2F93;89D2;89D2;
+2F94;2F94;2F94;8A00;8A00;
+2F95;2F95;2F95;8C37;8C37;
+2F96;2F96;2F96;8C46;8C46;
+2F97;2F97;2F97;8C55;8C55;
+2F98;2F98;2F98;8C78;8C78;
+2F99;2F99;2F99;8C9D;8C9D;
+2F9A;2F9A;2F9A;8D64;8D64;
+2F9B;2F9B;2F9B;8D70;8D70;
+2F9C;2F9C;2F9C;8DB3;8DB3;
+2F9D;2F9D;2F9D;8EAB;8EAB;
+2F9E;2F9E;2F9E;8ECA;8ECA;
+2F9F;2F9F;2F9F;8F9B;8F9B;
+2FA0;2FA0;2FA0;8FB0;8FB0;
+2FA1;2FA1;2FA1;8FB5;8FB5;
+2FA2;2FA2;2FA2;9091;9091;
+2FA3;2FA3;2FA3;9149;9149;
+2FA4;2FA4;2FA4;91C6;91C6;
+2FA5;2FA5;2FA5;91CC;91CC;
+2FA6;2FA6;2FA6;91D1;91D1;
+2FA7;2FA7;2FA7;9577;9577;
+2FA8;2FA8;2FA8;9580;9580;
+2FA9;2FA9;2FA9;961C;961C;
+2FAA;2FAA;2FAA;96B6;96B6;
+2FAB;2FAB;2FAB;96B9;96B9;
+2FAC;2FAC;2FAC;96E8;96E8;
+2FAD;2FAD;2FAD;9751;9751;
+2FAE;2FAE;2FAE;975E;975E;
+2FAF;2FAF;2FAF;9762;9762;
+2FB0;2FB0;2FB0;9769;9769;
+2FB1;2FB1;2FB1;97CB;97CB;
+2FB2;2FB2;2FB2;97ED;97ED;
+2FB3;2FB3;2FB3;97F3;97F3;
+2FB4;2FB4;2FB4;9801;9801;
+2FB5;2FB5;2FB5;98A8;98A8;
+2FB6;2FB6;2FB6;98DB;98DB;
+2FB7;2FB7;2FB7;98DF;98DF;
+2FB8;2FB8;2FB8;9996;9996;
+2FB9;2FB9;2FB9;9999;9999;
+2FBA;2FBA;2FBA;99AC;99AC;
+2FBB;2FBB;2FBB;9AA8;9AA8;
+2FBC;2FBC;2FBC;9AD8;9AD8;
+2FBD;2FBD;2FBD;9ADF;9ADF;
+2FBE;2FBE;2FBE;9B25;9B25;
+2FBF;2FBF;2FBF;9B2F;9B2F;
+2FC0;2FC0;2FC0;9B32;9B32;
+2FC1;2FC1;2FC1;9B3C;9B3C;
+2FC2;2FC2;2FC2;9B5A;9B5A;
+2FC3;2FC3;2FC3;9CE5;9CE5;
+2FC4;2FC4;2FC4;9E75;9E75;
+2FC5;2FC5;2FC5;9E7F;9E7F;
+2FC6;2FC6;2FC6;9EA5;9EA5;
+2FC7;2FC7;2FC7;9EBB;9EBB;
+2FC8;2FC8;2FC8;9EC3;9EC3;
+2FC9;2FC9;2FC9;9ECD;9ECD;
+2FCA;2FCA;2FCA;9ED1;9ED1;
+2FCB;2FCB;2FCB;9EF9;9EF9;
+2FCC;2FCC;2FCC;9EFD;9EFD;
+2FCD;2FCD;2FCD;9F0E;9F0E;
+2FCE;2FCE;2FCE;9F13;9F13;
+2FCF;2FCF;2FCF;9F20;9F20;
+2FD0;2FD0;2FD0;9F3B;9F3B;
+2FD1;2FD1;2FD1;9F4A;9F4A;
+2FD2;2FD2;2FD2;9F52;9F52;
+2FD3;2FD3;2FD3;9F8D;9F8D;
+2FD4;2FD4;2FD4;9F9C;9F9C;
+2FD5;2FD5;2FD5;9FA0;9FA0;
+3000;3000;3000;0020;0020;
+3036;3036;3036;3012;3012;
+3038;3038;3038;5341;5341;
+3039;3039;3039;5344;5344;
+303A;303A;303A;5345;5345;
+304C;304C;304B 3099;304C;304B 3099;
+304E;304E;304D 3099;304E;304D 3099;
+3050;3050;304F 3099;3050;304F 3099;
+3052;3052;3051 3099;3052;3051 3099;
+3054;3054;3053 3099;3054;3053 3099;
+3056;3056;3055 3099;3056;3055 3099;
+3058;3058;3057 3099;3058;3057 3099;
+305A;305A;3059 3099;305A;3059 3099;
+305C;305C;305B 3099;305C;305B 3099;
+305E;305E;305D 3099;305E;305D 3099;
+3060;3060;305F 3099;3060;305F 3099;
+3062;3062;3061 3099;3062;3061 3099;
+3065;3065;3064 3099;3065;3064 3099;
+3067;3067;3066 3099;3067;3066 3099;
+3069;3069;3068 3099;3069;3068 3099;
+3070;3070;306F 3099;3070;306F 3099;
+3071;3071;306F 309A;3071;306F 309A;
+3073;3073;3072 3099;3073;3072 3099;
+3074;3074;3072 309A;3074;3072 309A;
+3076;3076;3075 3099;3076;3075 3099;
+3077;3077;3075 309A;3077;3075 309A;
+3079;3079;3078 3099;3079;3078 3099;
+307A;307A;3078 309A;307A;3078 309A;
+307C;307C;307B 3099;307C;307B 3099;
+307D;307D;307B 309A;307D;307B 309A;
+3094;3094;3046 3099;3094;3046 3099;
+309B;309B;309B;0020 3099;0020 3099;
+309C;309C;309C;0020 309A;0020 309A;
+309E;309E;309D 3099;309E;309D 3099;
+309F;309F;309F;3088 308A;3088 308A;
+30AC;30AC;30AB 3099;30AC;30AB 3099;
+30AE;30AE;30AD 3099;30AE;30AD 3099;
+30B0;30B0;30AF 3099;30B0;30AF 3099;
+30B2;30B2;30B1 3099;30B2;30B1 3099;
+30B4;30B4;30B3 3099;30B4;30B3 3099;
+30B6;30B6;30B5 3099;30B6;30B5 3099;
+30B8;30B8;30B7 3099;30B8;30B7 3099;
+30BA;30BA;30B9 3099;30BA;30B9 3099;
+30BC;30BC;30BB 3099;30BC;30BB 3099;
+30BE;30BE;30BD 3099;30BE;30BD 3099;
+30C0;30C0;30BF 3099;30C0;30BF 3099;
+30C2;30C2;30C1 3099;30C2;30C1 3099;
+30C5;30C5;30C4 3099;30C5;30C4 3099;
+30C7;30C7;30C6 3099;30C7;30C6 3099;
+30C9;30C9;30C8 3099;30C9;30C8 3099;
+30D0;30D0;30CF 3099;30D0;30CF 3099;
+30D1;30D1;30CF 309A;30D1;30CF 309A;
+30D3;30D3;30D2 3099;30D3;30D2 3099;
+30D4;30D4;30D2 309A;30D4;30D2 309A;
+30D6;30D6;30D5 3099;30D6;30D5 3099;
+30D7;30D7;30D5 309A;30D7;30D5 309A;
+30D9;30D9;30D8 3099;30D9;30D8 3099;
+30DA;30DA;30D8 309A;30DA;30D8 309A;
+30DC;30DC;30DB 3099;30DC;30DB 3099;
+30DD;30DD;30DB 309A;30DD;30DB 309A;
+30F4;30F4;30A6 3099;30F4;30A6 3099;
+30F7;30F7;30EF 3099;30F7;30EF 3099;
+30F8;30F8;30F0 3099;30F8;30F0 3099;
+30F9;30F9;30F1 3099;30F9;30F1 3099;
+30FA;30FA;30F2 3099;30FA;30F2 3099;
+30FE;30FE;30FD 3099;30FE;30FD 3099;
+30FF;30FF;30FF;30B3 30C8;30B3 30C8;
+3131;3131;3131;1100;1100;
+3132;3132;3132;1101;1101;
+3133;3133;3133;11AA;11AA;
+3134;3134;3134;1102;1102;
+3135;3135;3135;11AC;11AC;
+3136;3136;3136;11AD;11AD;
+3137;3137;3137;1103;1103;
+3138;3138;3138;1104;1104;
+3139;3139;3139;1105;1105;
+313A;313A;313A;11B0;11B0;
+313B;313B;313B;11B1;11B1;
+313C;313C;313C;11B2;11B2;
+313D;313D;313D;11B3;11B3;
+313E;313E;313E;11B4;11B4;
+313F;313F;313F;11B5;11B5;
+3140;3140;3140;111A;111A;
+3141;3141;3141;1106;1106;
+3142;3142;3142;1107;1107;
+3143;3143;3143;1108;1108;
+3144;3144;3144;1121;1121;
+3145;3145;3145;1109;1109;
+3146;3146;3146;110A;110A;
+3147;3147;3147;110B;110B;
+3148;3148;3148;110C;110C;
+3149;3149;3149;110D;110D;
+314A;314A;314A;110E;110E;
+314B;314B;314B;110F;110F;
+314C;314C;314C;1110;1110;
+314D;314D;314D;1111;1111;
+314E;314E;314E;1112;1112;
+314F;314F;314F;1161;1161;
+3150;3150;3150;1162;1162;
+3151;3151;3151;1163;1163;
+3152;3152;3152;1164;1164;
+3153;3153;3153;1165;1165;
+3154;3154;3154;1166;1166;
+3155;3155;3155;1167;1167;
+3156;3156;3156;1168;1168;
+3157;3157;3157;1169;1169;
+3158;3158;3158;116A;116A;
+3159;3159;3159;116B;116B;
+315A;315A;315A;116C;116C;
+315B;315B;315B;116D;116D;
+315C;315C;315C;116E;116E;
+315D;315D;315D;116F;116F;
+315E;315E;315E;1170;1170;
+315F;315F;315F;1171;1171;
+3160;3160;3160;1172;1172;
+3161;3161;3161;1173;1173;
+3162;3162;3162;1174;1174;
+3163;3163;3163;1175;1175;
+3164;3164;3164;1160;1160;
+3165;3165;3165;1114;1114;
+3166;3166;3166;1115;1115;
+3167;3167;3167;11C7;11C7;
+3168;3168;3168;11C8;11C8;
+3169;3169;3169;11CC;11CC;
+316A;316A;316A;11CE;11CE;
+316B;316B;316B;11D3;11D3;
+316C;316C;316C;11D7;11D7;
+316D;316D;316D;11D9;11D9;
+316E;316E;316E;111C;111C;
+316F;316F;316F;11DD;11DD;
+3170;3170;3170;11DF;11DF;
+3171;3171;3171;111D;111D;
+3172;3172;3172;111E;111E;
+3173;3173;3173;1120;1120;
+3174;3174;3174;1122;1122;
+3175;3175;3175;1123;1123;
+3176;3176;3176;1127;1127;
+3177;3177;3177;1129;1129;
+3178;3178;3178;112B;112B;
+3179;3179;3179;112C;112C;
+317A;317A;317A;112D;112D;
+317B;317B;317B;112E;112E;
+317C;317C;317C;112F;112F;
+317D;317D;317D;1132;1132;
+317E;317E;317E;1136;1136;
+317F;317F;317F;1140;1140;
+3180;3180;3180;1147;1147;
+3181;3181;3181;114C;114C;
+3182;3182;3182;11F1;11F1;
+3183;3183;3183;11F2;11F2;
+3184;3184;3184;1157;1157;
+3185;3185;3185;1158;1158;
+3186;3186;3186;1159;1159;
+3187;3187;3187;1184;1184;
+3188;3188;3188;1185;1185;
+3189;3189;3189;1188;1188;
+318A;318A;318A;1191;1191;
+318B;318B;318B;1192;1192;
+318C;318C;318C;1194;1194;
+318D;318D;318D;119E;119E;
+318E;318E;318E;11A1;11A1;
+3192;3192;3192;4E00;4E00;
+3193;3193;3193;4E8C;4E8C;
+3194;3194;3194;4E09;4E09;
+3195;3195;3195;56DB;56DB;
+3196;3196;3196;4E0A;4E0A;
+3197;3197;3197;4E2D;4E2D;
+3198;3198;3198;4E0B;4E0B;
+3199;3199;3199;7532;7532;
+319A;319A;319A;4E59;4E59;
+319B;319B;319B;4E19;4E19;
+319C;319C;319C;4E01;4E01;
+319D;319D;319D;5929;5929;
+319E;319E;319E;5730;5730;
+319F;319F;319F;4EBA;4EBA;
+3200;3200;3200;0028 1100 0029;0028 1100 0029;
+3201;3201;3201;0028 1102 0029;0028 1102 0029;
+3202;3202;3202;0028 1103 0029;0028 1103 0029;
+3203;3203;3203;0028 1105 0029;0028 1105 0029;
+3204;3204;3204;0028 1106 0029;0028 1106 0029;
+3205;3205;3205;0028 1107 0029;0028 1107 0029;
+3206;3206;3206;0028 1109 0029;0028 1109 0029;
+3207;3207;3207;0028 110B 0029;0028 110B 0029;
+3208;3208;3208;0028 110C 0029;0028 110C 0029;
+3209;3209;3209;0028 110E 0029;0028 110E 0029;
+320A;320A;320A;0028 110F 0029;0028 110F 0029;
+320B;320B;320B;0028 1110 0029;0028 1110 0029;
+320C;320C;320C;0028 1111 0029;0028 1111 0029;
+320D;320D;320D;0028 1112 0029;0028 1112 0029;
+320E;320E;320E;0028 AC00 0029;0028 1100 1161 0029;
+320F;320F;320F;0028 B098 0029;0028 1102 1161 0029;
+3210;3210;3210;0028 B2E4 0029;0028 1103 1161 0029;
+3211;3211;3211;0028 B77C 0029;0028 1105 1161 0029;
+3212;3212;3212;0028 B9C8 0029;0028 1106 1161 0029;
+3213;3213;3213;0028 BC14 0029;0028 1107 1161 0029;
+3214;3214;3214;0028 C0AC 0029;0028 1109 1161 0029;
+3215;3215;3215;0028 C544 0029;0028 110B 1161 0029;
+3216;3216;3216;0028 C790 0029;0028 110C 1161 0029;
+3217;3217;3217;0028 CC28 0029;0028 110E 1161 0029;
+3218;3218;3218;0028 CE74 0029;0028 110F 1161 0029;
+3219;3219;3219;0028 D0C0 0029;0028 1110 1161 0029;
+321A;321A;321A;0028 D30C 0029;0028 1111 1161 0029;
+321B;321B;321B;0028 D558 0029;0028 1112 1161 0029;
+321C;321C;321C;0028 C8FC 0029;0028 110C 116E 0029;
+321D;321D;321D;0028 C624 C804 0029;0028 110B 1169 110C 1165 11AB 0029;
+321E;321E;321E;0028 C624 D6C4 0029;0028 110B 1169 1112 116E 0029;
+3220;3220;3220;0028 4E00 0029;0028 4E00 0029;
+3221;3221;3221;0028 4E8C 0029;0028 4E8C 0029;
+3222;3222;3222;0028 4E09 0029;0028 4E09 0029;
+3223;3223;3223;0028 56DB 0029;0028 56DB 0029;
+3224;3224;3224;0028 4E94 0029;0028 4E94 0029;
+3225;3225;3225;0028 516D 0029;0028 516D 0029;
+3226;3226;3226;0028 4E03 0029;0028 4E03 0029;
+3227;3227;3227;0028 516B 0029;0028 516B 0029;
+3228;3228;3228;0028 4E5D 0029;0028 4E5D 0029;
+3229;3229;3229;0028 5341 0029;0028 5341 0029;
+322A;322A;322A;0028 6708 0029;0028 6708 0029;
+322B;322B;322B;0028 706B 0029;0028 706B 0029;
+322C;322C;322C;0028 6C34 0029;0028 6C34 0029;
+322D;322D;322D;0028 6728 0029;0028 6728 0029;
+322E;322E;322E;0028 91D1 0029;0028 91D1 0029;
+322F;322F;322F;0028 571F 0029;0028 571F 0029;
+3230;3230;3230;0028 65E5 0029;0028 65E5 0029;
+3231;3231;3231;0028 682A 0029;0028 682A 0029;
+3232;3232;3232;0028 6709 0029;0028 6709 0029;
+3233;3233;3233;0028 793E 0029;0028 793E 0029;
+3234;3234;3234;0028 540D 0029;0028 540D 0029;
+3235;3235;3235;0028 7279 0029;0028 7279 0029;
+3236;3236;3236;0028 8CA1 0029;0028 8CA1 0029;
+3237;3237;3237;0028 795D 0029;0028 795D 0029;
+3238;3238;3238;0028 52B4 0029;0028 52B4 0029;
+3239;3239;3239;0028 4EE3 0029;0028 4EE3 0029;
+323A;323A;323A;0028 547C 0029;0028 547C 0029;
+323B;323B;323B;0028 5B66 0029;0028 5B66 0029;
+323C;323C;323C;0028 76E3 0029;0028 76E3 0029;
+323D;323D;323D;0028 4F01 0029;0028 4F01 0029;
+323E;323E;323E;0028 8CC7 0029;0028 8CC7 0029;
+323F;323F;323F;0028 5354 0029;0028 5354 0029;
+3240;3240;3240;0028 796D 0029;0028 796D 0029;
+3241;3241;3241;0028 4F11 0029;0028 4F11 0029;
+3242;3242;3242;0028 81EA 0029;0028 81EA 0029;
+3243;3243;3243;0028 81F3 0029;0028 81F3 0029;
+3250;3250;3250;0050 0054 0045;0050 0054 0045;
+3251;3251;3251;0032 0031;0032 0031;
+3252;3252;3252;0032 0032;0032 0032;
+3253;3253;3253;0032 0033;0032 0033;
+3254;3254;3254;0032 0034;0032 0034;
+3255;3255;3255;0032 0035;0032 0035;
+3256;3256;3256;0032 0036;0032 0036;
+3257;3257;3257;0032 0037;0032 0037;
+3258;3258;3258;0032 0038;0032 0038;
+3259;3259;3259;0032 0039;0032 0039;
+325A;325A;325A;0033 0030;0033 0030;
+325B;325B;325B;0033 0031;0033 0031;
+325C;325C;325C;0033 0032;0033 0032;
+325D;325D;325D;0033 0033;0033 0033;
+325E;325E;325E;0033 0034;0033 0034;
+325F;325F;325F;0033 0035;0033 0035;
+3260;3260;3260;1100;1100;
+3261;3261;3261;1102;1102;
+3262;3262;3262;1103;1103;
+3263;3263;3263;1105;1105;
+3264;3264;3264;1106;1106;
+3265;3265;3265;1107;1107;
+3266;3266;3266;1109;1109;
+3267;3267;3267;110B;110B;
+3268;3268;3268;110C;110C;
+3269;3269;3269;110E;110E;
+326A;326A;326A;110F;110F;
+326B;326B;326B;1110;1110;
+326C;326C;326C;1111;1111;
+326D;326D;326D;1112;1112;
+326E;326E;326E;AC00;1100 1161;
+326F;326F;326F;B098;1102 1161;
+3270;3270;3270;B2E4;1103 1161;
+3271;3271;3271;B77C;1105 1161;
+3272;3272;3272;B9C8;1106 1161;
+3273;3273;3273;BC14;1107 1161;
+3274;3274;3274;C0AC;1109 1161;
+3275;3275;3275;C544;110B 1161;
+3276;3276;3276;C790;110C 1161;
+3277;3277;3277;CC28;110E 1161;
+3278;3278;3278;CE74;110F 1161;
+3279;3279;3279;D0C0;1110 1161;
+327A;327A;327A;D30C;1111 1161;
+327B;327B;327B;D558;1112 1161;
+327C;327C;327C;CC38 ACE0;110E 1161 11B7 1100 1169;
+327D;327D;327D;C8FC C758;110C 116E 110B 1174;
+327E;327E;327E;C6B0;110B 116E;
+3280;3280;3280;4E00;4E00;
+3281;3281;3281;4E8C;4E8C;
+3282;3282;3282;4E09;4E09;
+3283;3283;3283;56DB;56DB;
+3284;3284;3284;4E94;4E94;
+3285;3285;3285;516D;516D;
+3286;3286;3286;4E03;4E03;
+3287;3287;3287;516B;516B;
+3288;3288;3288;4E5D;4E5D;
+3289;3289;3289;5341;5341;
+328A;328A;328A;6708;6708;
+328B;328B;328B;706B;706B;
+328C;328C;328C;6C34;6C34;
+328D;328D;328D;6728;6728;
+328E;328E;328E;91D1;91D1;
+328F;328F;328F;571F;571F;
+3290;3290;3290;65E5;65E5;
+3291;3291;3291;682A;682A;
+3292;3292;3292;6709;6709;
+3293;3293;3293;793E;793E;
+3294;3294;3294;540D;540D;
+3295;3295;3295;7279;7279;
+3296;3296;3296;8CA1;8CA1;
+3297;3297;3297;795D;795D;
+3298;3298;3298;52B4;52B4;
+3299;3299;3299;79D8;79D8;
+329A;329A;329A;7537;7537;
+329B;329B;329B;5973;5973;
+329C;329C;329C;9069;9069;
+329D;329D;329D;512A;512A;
+329E;329E;329E;5370;5370;
+329F;329F;329F;6CE8;6CE8;
+32A0;32A0;32A0;9805;9805;
+32A1;32A1;32A1;4F11;4F11;
+32A2;32A2;32A2;5199;5199;
+32A3;32A3;32A3;6B63;6B63;
+32A4;32A4;32A4;4E0A;4E0A;
+32A5;32A5;32A5;4E2D;4E2D;
+32A6;32A6;32A6;4E0B;4E0B;
+32A7;32A7;32A7;5DE6;5DE6;
+32A8;32A8;32A8;53F3;53F3;
+32A9;32A9;32A9;533B;533B;
+32AA;32AA;32AA;5B97;5B97;
+32AB;32AB;32AB;5B66;5B66;
+32AC;32AC;32AC;76E3;76E3;
+32AD;32AD;32AD;4F01;4F01;
+32AE;32AE;32AE;8CC7;8CC7;
+32AF;32AF;32AF;5354;5354;
+32B0;32B0;32B0;591C;591C;
+32B1;32B1;32B1;0033 0036;0033 0036;
+32B2;32B2;32B2;0033 0037;0033 0037;
+32B3;32B3;32B3;0033 0038;0033 0038;
+32B4;32B4;32B4;0033 0039;0033 0039;
+32B5;32B5;32B5;0034 0030;0034 0030;
+32B6;32B6;32B6;0034 0031;0034 0031;
+32B7;32B7;32B7;0034 0032;0034 0032;
+32B8;32B8;32B8;0034 0033;0034 0033;
+32B9;32B9;32B9;0034 0034;0034 0034;
+32BA;32BA;32BA;0034 0035;0034 0035;
+32BB;32BB;32BB;0034 0036;0034 0036;
+32BC;32BC;32BC;0034 0037;0034 0037;
+32BD;32BD;32BD;0034 0038;0034 0038;
+32BE;32BE;32BE;0034 0039;0034 0039;
+32BF;32BF;32BF;0035 0030;0035 0030;
+32C0;32C0;32C0;0031 6708;0031 6708;
+32C1;32C1;32C1;0032 6708;0032 6708;
+32C2;32C2;32C2;0033 6708;0033 6708;
+32C3;32C3;32C3;0034 6708;0034 6708;
+32C4;32C4;32C4;0035 6708;0035 6708;
+32C5;32C5;32C5;0036 6708;0036 6708;
+32C6;32C6;32C6;0037 6708;0037 6708;
+32C7;32C7;32C7;0038 6708;0038 6708;
+32C8;32C8;32C8;0039 6708;0039 6708;
+32C9;32C9;32C9;0031 0030 6708;0031 0030 6708;
+32CA;32CA;32CA;0031 0031 6708;0031 0031 6708;
+32CB;32CB;32CB;0031 0032 6708;0031 0032 6708;
+32CC;32CC;32CC;0048 0067;0048 0067;
+32CD;32CD;32CD;0065 0072 0067;0065 0072 0067;
+32CE;32CE;32CE;0065 0056;0065 0056;
+32CF;32CF;32CF;004C 0054 0044;004C 0054 0044;
+32D0;32D0;32D0;30A2;30A2;
+32D1;32D1;32D1;30A4;30A4;
+32D2;32D2;32D2;30A6;30A6;
+32D3;32D3;32D3;30A8;30A8;
+32D4;32D4;32D4;30AA;30AA;
+32D5;32D5;32D5;30AB;30AB;
+32D6;32D6;32D6;30AD;30AD;
+32D7;32D7;32D7;30AF;30AF;
+32D8;32D8;32D8;30B1;30B1;
+32D9;32D9;32D9;30B3;30B3;
+32DA;32DA;32DA;30B5;30B5;
+32DB;32DB;32DB;30B7;30B7;
+32DC;32DC;32DC;30B9;30B9;
+32DD;32DD;32DD;30BB;30BB;
+32DE;32DE;32DE;30BD;30BD;
+32DF;32DF;32DF;30BF;30BF;
+32E0;32E0;32E0;30C1;30C1;
+32E1;32E1;32E1;30C4;30C4;
+32E2;32E2;32E2;30C6;30C6;
+32E3;32E3;32E3;30C8;30C8;
+32E4;32E4;32E4;30CA;30CA;
+32E5;32E5;32E5;30CB;30CB;
+32E6;32E6;32E6;30CC;30CC;
+32E7;32E7;32E7;30CD;30CD;
+32E8;32E8;32E8;30CE;30CE;
+32E9;32E9;32E9;30CF;30CF;
+32EA;32EA;32EA;30D2;30D2;
+32EB;32EB;32EB;30D5;30D5;
+32EC;32EC;32EC;30D8;30D8;
+32ED;32ED;32ED;30DB;30DB;
+32EE;32EE;32EE;30DE;30DE;
+32EF;32EF;32EF;30DF;30DF;
+32F0;32F0;32F0;30E0;30E0;
+32F1;32F1;32F1;30E1;30E1;
+32F2;32F2;32F2;30E2;30E2;
+32F3;32F3;32F3;30E4;30E4;
+32F4;32F4;32F4;30E6;30E6;
+32F5;32F5;32F5;30E8;30E8;
+32F6;32F6;32F6;30E9;30E9;
+32F7;32F7;32F7;30EA;30EA;
+32F8;32F8;32F8;30EB;30EB;
+32F9;32F9;32F9;30EC;30EC;
+32FA;32FA;32FA;30ED;30ED;
+32FB;32FB;32FB;30EF;30EF;
+32FC;32FC;32FC;30F0;30F0;
+32FD;32FD;32FD;30F1;30F1;
+32FE;32FE;32FE;30F2;30F2;
+3300;3300;3300;30A2 30D1 30FC 30C8;30A2 30CF 309A 30FC 30C8;
+3301;3301;3301;30A2 30EB 30D5 30A1;30A2 30EB 30D5 30A1;
+3302;3302;3302;30A2 30F3 30DA 30A2;30A2 30F3 30D8 309A 30A2;
+3303;3303;3303;30A2 30FC 30EB;30A2 30FC 30EB;
+3304;3304;3304;30A4 30CB 30F3 30B0;30A4 30CB 30F3 30AF 3099;
+3305;3305;3305;30A4 30F3 30C1;30A4 30F3 30C1;
+3306;3306;3306;30A6 30A9 30F3;30A6 30A9 30F3;
+3307;3307;3307;30A8 30B9 30AF 30FC 30C9;30A8 30B9 30AF 30FC 30C8 3099;
+3308;3308;3308;30A8 30FC 30AB 30FC;30A8 30FC 30AB 30FC;
+3309;3309;3309;30AA 30F3 30B9;30AA 30F3 30B9;
+330A;330A;330A;30AA 30FC 30E0;30AA 30FC 30E0;
+330B;330B;330B;30AB 30A4 30EA;30AB 30A4 30EA;
+330C;330C;330C;30AB 30E9 30C3 30C8;30AB 30E9 30C3 30C8;
+330D;330D;330D;30AB 30ED 30EA 30FC;30AB 30ED 30EA 30FC;
+330E;330E;330E;30AC 30ED 30F3;30AB 3099 30ED 30F3;
+330F;330F;330F;30AC 30F3 30DE;30AB 3099 30F3 30DE;
+3310;3310;3310;30AE 30AC;30AD 3099 30AB 3099;
+3311;3311;3311;30AE 30CB 30FC;30AD 3099 30CB 30FC;
+3312;3312;3312;30AD 30E5 30EA 30FC;30AD 30E5 30EA 30FC;
+3313;3313;3313;30AE 30EB 30C0 30FC;30AD 3099 30EB 30BF 3099 30FC;
+3314;3314;3314;30AD 30ED;30AD 30ED;
+3315;3315;3315;30AD 30ED 30B0 30E9 30E0;30AD 30ED 30AF 3099 30E9 30E0;
+3316;3316;3316;30AD 30ED 30E1 30FC 30C8 30EB;30AD 30ED 30E1 30FC 30C8 30EB;
+3317;3317;3317;30AD 30ED 30EF 30C3 30C8;30AD 30ED 30EF 30C3 30C8;
+3318;3318;3318;30B0 30E9 30E0;30AF 3099 30E9 30E0;
+3319;3319;3319;30B0 30E9 30E0 30C8 30F3;30AF 3099 30E9 30E0 30C8 30F3;
+331A;331A;331A;30AF 30EB 30BC 30A4 30ED;30AF 30EB 30BB 3099 30A4 30ED;
+331B;331B;331B;30AF 30ED 30FC 30CD;30AF 30ED 30FC 30CD;
+331C;331C;331C;30B1 30FC 30B9;30B1 30FC 30B9;
+331D;331D;331D;30B3 30EB 30CA;30B3 30EB 30CA;
+331E;331E;331E;30B3 30FC 30DD;30B3 30FC 30DB 309A;
+331F;331F;331F;30B5 30A4 30AF 30EB;30B5 30A4 30AF 30EB;
+3320;3320;3320;30B5 30F3 30C1 30FC 30E0;30B5 30F3 30C1 30FC 30E0;
+3321;3321;3321;30B7 30EA 30F3 30B0;30B7 30EA 30F3 30AF 3099;
+3322;3322;3322;30BB 30F3 30C1;30BB 30F3 30C1;
+3323;3323;3323;30BB 30F3 30C8;30BB 30F3 30C8;
+3324;3324;3324;30C0 30FC 30B9;30BF 3099 30FC 30B9;
+3325;3325;3325;30C7 30B7;30C6 3099 30B7;
+3326;3326;3326;30C9 30EB;30C8 3099 30EB;
+3327;3327;3327;30C8 30F3;30C8 30F3;
+3328;3328;3328;30CA 30CE;30CA 30CE;
+3329;3329;3329;30CE 30C3 30C8;30CE 30C3 30C8;
+332A;332A;332A;30CF 30A4 30C4;30CF 30A4 30C4;
+332B;332B;332B;30D1 30FC 30BB 30F3 30C8;30CF 309A 30FC 30BB 30F3 30C8;
+332C;332C;332C;30D1 30FC 30C4;30CF 309A 30FC 30C4;
+332D;332D;332D;30D0 30FC 30EC 30EB;30CF 3099 30FC 30EC 30EB;
+332E;332E;332E;30D4 30A2 30B9 30C8 30EB;30D2 309A 30A2 30B9 30C8 30EB;
+332F;332F;332F;30D4 30AF 30EB;30D2 309A 30AF 30EB;
+3330;3330;3330;30D4 30B3;30D2 309A 30B3;
+3331;3331;3331;30D3 30EB;30D2 3099 30EB;
+3332;3332;3332;30D5 30A1 30E9 30C3 30C9;30D5 30A1 30E9 30C3 30C8 3099;
+3333;3333;3333;30D5 30A3 30FC 30C8;30D5 30A3 30FC 30C8;
+3334;3334;3334;30D6 30C3 30B7 30A7 30EB;30D5 3099 30C3 30B7 30A7 30EB;
+3335;3335;3335;30D5 30E9 30F3;30D5 30E9 30F3;
+3336;3336;3336;30D8 30AF 30BF 30FC 30EB;30D8 30AF 30BF 30FC 30EB;
+3337;3337;3337;30DA 30BD;30D8 309A 30BD;
+3338;3338;3338;30DA 30CB 30D2;30D8 309A 30CB 30D2;
+3339;3339;3339;30D8 30EB 30C4;30D8 30EB 30C4;
+333A;333A;333A;30DA 30F3 30B9;30D8 309A 30F3 30B9;
+333B;333B;333B;30DA 30FC 30B8;30D8 309A 30FC 30B7 3099;
+333C;333C;333C;30D9 30FC 30BF;30D8 3099 30FC 30BF;
+333D;333D;333D;30DD 30A4 30F3 30C8;30DB 309A 30A4 30F3 30C8;
+333E;333E;333E;30DC 30EB 30C8;30DB 3099 30EB 30C8;
+333F;333F;333F;30DB 30F3;30DB 30F3;
+3340;3340;3340;30DD 30F3 30C9;30DB 309A 30F3 30C8 3099;
+3341;3341;3341;30DB 30FC 30EB;30DB 30FC 30EB;
+3342;3342;3342;30DB 30FC 30F3;30DB 30FC 30F3;
+3343;3343;3343;30DE 30A4 30AF 30ED;30DE 30A4 30AF 30ED;
+3344;3344;3344;30DE 30A4 30EB;30DE 30A4 30EB;
+3345;3345;3345;30DE 30C3 30CF;30DE 30C3 30CF;
+3346;3346;3346;30DE 30EB 30AF;30DE 30EB 30AF;
+3347;3347;3347;30DE 30F3 30B7 30E7 30F3;30DE 30F3 30B7 30E7 30F3;
+3348;3348;3348;30DF 30AF 30ED 30F3;30DF 30AF 30ED 30F3;
+3349;3349;3349;30DF 30EA;30DF 30EA;
+334A;334A;334A;30DF 30EA 30D0 30FC 30EB;30DF 30EA 30CF 3099 30FC 30EB;
+334B;334B;334B;30E1 30AC;30E1 30AB 3099;
+334C;334C;334C;30E1 30AC 30C8 30F3;30E1 30AB 3099 30C8 30F3;
+334D;334D;334D;30E1 30FC 30C8 30EB;30E1 30FC 30C8 30EB;
+334E;334E;334E;30E4 30FC 30C9;30E4 30FC 30C8 3099;
+334F;334F;334F;30E4 30FC 30EB;30E4 30FC 30EB;
+3350;3350;3350;30E6 30A2 30F3;30E6 30A2 30F3;
+3351;3351;3351;30EA 30C3 30C8 30EB;30EA 30C3 30C8 30EB;
+3352;3352;3352;30EA 30E9;30EA 30E9;
+3353;3353;3353;30EB 30D4 30FC;30EB 30D2 309A 30FC;
+3354;3354;3354;30EB 30FC 30D6 30EB;30EB 30FC 30D5 3099 30EB;
+3355;3355;3355;30EC 30E0;30EC 30E0;
+3356;3356;3356;30EC 30F3 30C8 30B2 30F3;30EC 30F3 30C8 30B1 3099 30F3;
+3357;3357;3357;30EF 30C3 30C8;30EF 30C3 30C8;
+3358;3358;3358;0030 70B9;0030 70B9;
+3359;3359;3359;0031 70B9;0031 70B9;
+335A;335A;335A;0032 70B9;0032 70B9;
+335B;335B;335B;0033 70B9;0033 70B9;
+335C;335C;335C;0034 70B9;0034 70B9;
+335D;335D;335D;0035 70B9;0035 70B9;
+335E;335E;335E;0036 70B9;0036 70B9;
+335F;335F;335F;0037 70B9;0037 70B9;
+3360;3360;3360;0038 70B9;0038 70B9;
+3361;3361;3361;0039 70B9;0039 70B9;
+3362;3362;3362;0031 0030 70B9;0031 0030 70B9;
+3363;3363;3363;0031 0031 70B9;0031 0031 70B9;
+3364;3364;3364;0031 0032 70B9;0031 0032 70B9;
+3365;3365;3365;0031 0033 70B9;0031 0033 70B9;
+3366;3366;3366;0031 0034 70B9;0031 0034 70B9;
+3367;3367;3367;0031 0035 70B9;0031 0035 70B9;
+3368;3368;3368;0031 0036 70B9;0031 0036 70B9;
+3369;3369;3369;0031 0037 70B9;0031 0037 70B9;
+336A;336A;336A;0031 0038 70B9;0031 0038 70B9;
+336B;336B;336B;0031 0039 70B9;0031 0039 70B9;
+336C;336C;336C;0032 0030 70B9;0032 0030 70B9;
+336D;336D;336D;0032 0031 70B9;0032 0031 70B9;
+336E;336E;336E;0032 0032 70B9;0032 0032 70B9;
+336F;336F;336F;0032 0033 70B9;0032 0033 70B9;
+3370;3370;3370;0032 0034 70B9;0032 0034 70B9;
+3371;3371;3371;0068 0050 0061;0068 0050 0061;
+3372;3372;3372;0064 0061;0064 0061;
+3373;3373;3373;0041 0055;0041 0055;
+3374;3374;3374;0062 0061 0072;0062 0061 0072;
+3375;3375;3375;006F 0056;006F 0056;
+3376;3376;3376;0070 0063;0070 0063;
+3377;3377;3377;0064 006D;0064 006D;
+3378;3378;3378;0064 006D 0032;0064 006D 0032;
+3379;3379;3379;0064 006D 0033;0064 006D 0033;
+337A;337A;337A;0049 0055;0049 0055;
+337B;337B;337B;5E73 6210;5E73 6210;
+337C;337C;337C;662D 548C;662D 548C;
+337D;337D;337D;5927 6B63;5927 6B63;
+337E;337E;337E;660E 6CBB;660E 6CBB;
+337F;337F;337F;682A 5F0F 4F1A 793E;682A 5F0F 4F1A 793E;
+3380;3380;3380;0070 0041;0070 0041;
+3381;3381;3381;006E 0041;006E 0041;
+3382;3382;3382;03BC 0041;03BC 0041;
+3383;3383;3383;006D 0041;006D 0041;
+3384;3384;3384;006B 0041;006B 0041;
+3385;3385;3385;004B 0042;004B 0042;
+3386;3386;3386;004D 0042;004D 0042;
+3387;3387;3387;0047 0042;0047 0042;
+3388;3388;3388;0063 0061 006C;0063 0061 006C;
+3389;3389;3389;006B 0063 0061 006C;006B 0063 0061 006C;
+338A;338A;338A;0070 0046;0070 0046;
+338B;338B;338B;006E 0046;006E 0046;
+338C;338C;338C;03BC 0046;03BC 0046;
+338D;338D;338D;03BC 0067;03BC 0067;
+338E;338E;338E;006D 0067;006D 0067;
+338F;338F;338F;006B 0067;006B 0067;
+3390;3390;3390;0048 007A;0048 007A;
+3391;3391;3391;006B 0048 007A;006B 0048 007A;
+3392;3392;3392;004D 0048 007A;004D 0048 007A;
+3393;3393;3393;0047 0048 007A;0047 0048 007A;
+3394;3394;3394;0054 0048 007A;0054 0048 007A;
+3395;3395;3395;03BC 006C;03BC 006C;
+3396;3396;3396;006D 006C;006D 006C;
+3397;3397;3397;0064 006C;0064 006C;
+3398;3398;3398;006B 006C;006B 006C;
+3399;3399;3399;0066 006D;0066 006D;
+339A;339A;339A;006E 006D;006E 006D;
+339B;339B;339B;03BC 006D;03BC 006D;
+339C;339C;339C;006D 006D;006D 006D;
+339D;339D;339D;0063 006D;0063 006D;
+339E;339E;339E;006B 006D;006B 006D;
+339F;339F;339F;006D 006D 0032;006D 006D 0032;
+33A0;33A0;33A0;0063 006D 0032;0063 006D 0032;
+33A1;33A1;33A1;006D 0032;006D 0032;
+33A2;33A2;33A2;006B 006D 0032;006B 006D 0032;
+33A3;33A3;33A3;006D 006D 0033;006D 006D 0033;
+33A4;33A4;33A4;0063 006D 0033;0063 006D 0033;
+33A5;33A5;33A5;006D 0033;006D 0033;
+33A6;33A6;33A6;006B 006D 0033;006B 006D 0033;
+33A7;33A7;33A7;006D 2215 0073;006D 2215 0073;
+33A8;33A8;33A8;006D 2215 0073 0032;006D 2215 0073 0032;
+33A9;33A9;33A9;0050 0061;0050 0061;
+33AA;33AA;33AA;006B 0050 0061;006B 0050 0061;
+33AB;33AB;33AB;004D 0050 0061;004D 0050 0061;
+33AC;33AC;33AC;0047 0050 0061;0047 0050 0061;
+33AD;33AD;33AD;0072 0061 0064;0072 0061 0064;
+33AE;33AE;33AE;0072 0061 0064 2215 0073;0072 0061 0064 2215 0073;
+33AF;33AF;33AF;0072 0061 0064 2215 0073 0032;0072 0061 0064 2215 0073 0032;
+33B0;33B0;33B0;0070 0073;0070 0073;
+33B1;33B1;33B1;006E 0073;006E 0073;
+33B2;33B2;33B2;03BC 0073;03BC 0073;
+33B3;33B3;33B3;006D 0073;006D 0073;
+33B4;33B4;33B4;0070 0056;0070 0056;
+33B5;33B5;33B5;006E 0056;006E 0056;
+33B6;33B6;33B6;03BC 0056;03BC 0056;
+33B7;33B7;33B7;006D 0056;006D 0056;
+33B8;33B8;33B8;006B 0056;006B 0056;
+33B9;33B9;33B9;004D 0056;004D 0056;
+33BA;33BA;33BA;0070 0057;0070 0057;
+33BB;33BB;33BB;006E 0057;006E 0057;
+33BC;33BC;33BC;03BC 0057;03BC 0057;
+33BD;33BD;33BD;006D 0057;006D 0057;
+33BE;33BE;33BE;006B 0057;006B 0057;
+33BF;33BF;33BF;004D 0057;004D 0057;
+33C0;33C0;33C0;006B 03A9;006B 03A9;
+33C1;33C1;33C1;004D 03A9;004D 03A9;
+33C2;33C2;33C2;0061 002E 006D 002E;0061 002E 006D 002E;
+33C3;33C3;33C3;0042 0071;0042 0071;
+33C4;33C4;33C4;0063 0063;0063 0063;
+33C5;33C5;33C5;0063 0064;0063 0064;
+33C6;33C6;33C6;0043 2215 006B 0067;0043 2215 006B 0067;
+33C7;33C7;33C7;0043 006F 002E;0043 006F 002E;
+33C8;33C8;33C8;0064 0042;0064 0042;
+33C9;33C9;33C9;0047 0079;0047 0079;
+33CA;33CA;33CA;0068 0061;0068 0061;
+33CB;33CB;33CB;0048 0050;0048 0050;
+33CC;33CC;33CC;0069 006E;0069 006E;
+33CD;33CD;33CD;004B 004B;004B 004B;
+33CE;33CE;33CE;004B 004D;004B 004D;
+33CF;33CF;33CF;006B 0074;006B 0074;
+33D0;33D0;33D0;006C 006D;006C 006D;
+33D1;33D1;33D1;006C 006E;006C 006E;
+33D2;33D2;33D2;006C 006F 0067;006C 006F 0067;
+33D3;33D3;33D3;006C 0078;006C 0078;
+33D4;33D4;33D4;006D 0062;006D 0062;
+33D5;33D5;33D5;006D 0069 006C;006D 0069 006C;
+33D6;33D6;33D6;006D 006F 006C;006D 006F 006C;
+33D7;33D7;33D7;0050 0048;0050 0048;
+33D8;33D8;33D8;0070 002E 006D 002E;0070 002E 006D 002E;
+33D9;33D9;33D9;0050 0050 004D;0050 0050 004D;
+33DA;33DA;33DA;0050 0052;0050 0052;
+33DB;33DB;33DB;0073 0072;0073 0072;
+33DC;33DC;33DC;0053 0076;0053 0076;
+33DD;33DD;33DD;0057 0062;0057 0062;
+33DE;33DE;33DE;0056 2215 006D;0056 2215 006D;
+33DF;33DF;33DF;0041 2215 006D;0041 2215 006D;
+33E0;33E0;33E0;0031 65E5;0031 65E5;
+33E1;33E1;33E1;0032 65E5;0032 65E5;
+33E2;33E2;33E2;0033 65E5;0033 65E5;
+33E3;33E3;33E3;0034 65E5;0034 65E5;
+33E4;33E4;33E4;0035 65E5;0035 65E5;
+33E5;33E5;33E5;0036 65E5;0036 65E5;
+33E6;33E6;33E6;0037 65E5;0037 65E5;
+33E7;33E7;33E7;0038 65E5;0038 65E5;
+33E8;33E8;33E8;0039 65E5;0039 65E5;
+33E9;33E9;33E9;0031 0030 65E5;0031 0030 65E5;
+33EA;33EA;33EA;0031 0031 65E5;0031 0031 65E5;
+33EB;33EB;33EB;0031 0032 65E5;0031 0032 65E5;
+33EC;33EC;33EC;0031 0033 65E5;0031 0033 65E5;
+33ED;33ED;33ED;0031 0034 65E5;0031 0034 65E5;
+33EE;33EE;33EE;0031 0035 65E5;0031 0035 65E5;
+33EF;33EF;33EF;0031 0036 65E5;0031 0036 65E5;
+33F0;33F0;33F0;0031 0037 65E5;0031 0037 65E5;
+33F1;33F1;33F1;0031 0038 65E5;0031 0038 65E5;
+33F2;33F2;33F2;0031 0039 65E5;0031 0039 65E5;
+33F3;33F3;33F3;0032 0030 65E5;0032 0030 65E5;
+33F4;33F4;33F4;0032 0031 65E5;0032 0031 65E5;
+33F5;33F5;33F5;0032 0032 65E5;0032 0032 65E5;
+33F6;33F6;33F6;0032 0033 65E5;0032 0033 65E5;
+33F7;33F7;33F7;0032 0034 65E5;0032 0034 65E5;
+33F8;33F8;33F8;0032 0035 65E5;0032 0035 65E5;
+33F9;33F9;33F9;0032 0036 65E5;0032 0036 65E5;
+33FA;33FA;33FA;0032 0037 65E5;0032 0037 65E5;
+33FB;33FB;33FB;0032 0038 65E5;0032 0038 65E5;
+33FC;33FC;33FC;0032 0039 65E5;0032 0039 65E5;
+33FD;33FD;33FD;0033 0030 65E5;0033 0030 65E5;
+33FE;33FE;33FE;0033 0031 65E5;0033 0031 65E5;
+33FF;33FF;33FF;0067 0061 006C;0067 0061 006C;
+AC00;AC00;1100 1161;AC00;1100 1161;
+AC01;AC01;1100 1161 11A8;AC01;1100 1161 11A8;
+AC02;AC02;1100 1161 11A9;AC02;1100 1161 11A9;
+AC03;AC03;1100 1161 11AA;AC03;1100 1161 11AA;
+AC04;AC04;1100 1161 11AB;AC04;1100 1161 11AB;
+AC05;AC05;1100 1161 11AC;AC05;1100 1161 11AC;
+AC06;AC06;1100 1161 11AD;AC06;1100 1161 11AD;
+AC07;AC07;1100 1161 11AE;AC07;1100 1161 11AE;
+AC08;AC08;1100 1161 11AF;AC08;1100 1161 11AF;
+AC09;AC09;1100 1161 11B0;AC09;1100 1161 11B0;
+AC0A;AC0A;1100 1161 11B1;AC0A;1100 1161 11B1;
+AC0B;AC0B;1100 1161 11B2;AC0B;1100 1161 11B2;
+AC0C;AC0C;1100 1161 11B3;AC0C;1100 1161 11B3;
+AC0D;AC0D;1100 1161 11B4;AC0D;1100 1161 11B4;
+AC0E;AC0E;1100 1161 11B5;AC0E;1100 1161 11B5;
+AC0F;AC0F;1100 1161 11B6;AC0F;1100 1161 11B6;
+AC10;AC10;1100 1161 11B7;AC10;1100 1161 11B7;
+AC11;AC11;1100 1161 11B8;AC11;1100 1161 11B8;
+AC12;AC12;1100 1161 11B9;AC12;1100 1161 11B9;
+AC13;AC13;1100 1161 11BA;AC13;1100 1161 11BA;
+AC14;AC14;1100 1161 11BB;AC14;1100 1161 11BB;
+AC15;AC15;1100 1161 11BC;AC15;1100 1161 11BC;
+AC16;AC16;1100 1161 11BD;AC16;1100 1161 11BD;
+AC17;AC17;1100 1161 11BE;AC17;1100 1161 11BE;
+AC18;AC18;1100 1161 11BF;AC18;1100 1161 11BF;
+AC19;AC19;1100 1161 11C0;AC19;1100 1161 11C0;
+AC1A;AC1A;1100 1161 11C1;AC1A;1100 1161 11C1;
+AC1B;AC1B;1100 1161 11C2;AC1B;1100 1161 11C2;
+AC1C;AC1C;1100 1162;AC1C;1100 1162;
+AC1D;AC1D;1100 1162 11A8;AC1D;1100 1162 11A8;
+AC1E;AC1E;1100 1162 11A9;AC1E;1100 1162 11A9;
+AC1F;AC1F;1100 1162 11AA;AC1F;1100 1162 11AA;
+AC20;AC20;1100 1162 11AB;AC20;1100 1162 11AB;
+AC21;AC21;1100 1162 11AC;AC21;1100 1162 11AC;
+AC22;AC22;1100 1162 11AD;AC22;1100 1162 11AD;
+AC23;AC23;1100 1162 11AE;AC23;1100 1162 11AE;
+AC24;AC24;1100 1162 11AF;AC24;1100 1162 11AF;
+AC25;AC25;1100 1162 11B0;AC25;1100 1162 11B0;
+AC26;AC26;1100 1162 11B1;AC26;1100 1162 11B1;
+AC27;AC27;1100 1162 11B2;AC27;1100 1162 11B2;
+AC28;AC28;1100 1162 11B3;AC28;1100 1162 11B3;
+AC29;AC29;1100 1162 11B4;AC29;1100 1162 11B4;
+AC2A;AC2A;1100 1162 11B5;AC2A;1100 1162 11B5;
+AC2B;AC2B;1100 1162 11B6;AC2B;1100 1162 11B6;
+AC2C;AC2C;1100 1162 11B7;AC2C;1100 1162 11B7;
+AC2D;AC2D;1100 1162 11B8;AC2D;1100 1162 11B8;
+AC2E;AC2E;1100 1162 11B9;AC2E;1100 1162 11B9;
+AC2F;AC2F;1100 1162 11BA;AC2F;1100 1162 11BA;
+AC30;AC30;1100 1162 11BB;AC30;1100 1162 11BB;
+AC31;AC31;1100 1162 11BC;AC31;1100 1162 11BC;
+AC32;AC32;1100 1162 11BD;AC32;1100 1162 11BD;
+AC33;AC33;1100 1162 11BE;AC33;1100 1162 11BE;
+AC34;AC34;1100 1162 11BF;AC34;1100 1162 11BF;
+AC35;AC35;1100 1162 11C0;AC35;1100 1162 11C0;
+AC36;AC36;1100 1162 11C1;AC36;1100 1162 11C1;
+AC37;AC37;1100 1162 11C2;AC37;1100 1162 11C2;
+AC38;AC38;1100 1163;AC38;1100 1163;
+AC39;AC39;1100 1163 11A8;AC39;1100 1163 11A8;
+AC3A;AC3A;1100 1163 11A9;AC3A;1100 1163 11A9;
+AC3B;AC3B;1100 1163 11AA;AC3B;1100 1163 11AA;
+AC3C;AC3C;1100 1163 11AB;AC3C;1100 1163 11AB;
+AC3D;AC3D;1100 1163 11AC;AC3D;1100 1163 11AC;
+AC3E;AC3E;1100 1163 11AD;AC3E;1100 1163 11AD;
+AC3F;AC3F;1100 1163 11AE;AC3F;1100 1163 11AE;
+AC40;AC40;1100 1163 11AF;AC40;1100 1163 11AF;
+AC41;AC41;1100 1163 11B0;AC41;1100 1163 11B0;
+AC42;AC42;1100 1163 11B1;AC42;1100 1163 11B1;
+AC43;AC43;1100 1163 11B2;AC43;1100 1163 11B2;
+AC44;AC44;1100 1163 11B3;AC44;1100 1163 11B3;
+AC45;AC45;1100 1163 11B4;AC45;1100 1163 11B4;
+AC46;AC46;1100 1163 11B5;AC46;1100 1163 11B5;
+AC47;AC47;1100 1163 11B6;AC47;1100 1163 11B6;
+AC48;AC48;1100 1163 11B7;AC48;1100 1163 11B7;
+AC49;AC49;1100 1163 11B8;AC49;1100 1163 11B8;
+AC4A;AC4A;1100 1163 11B9;AC4A;1100 1163 11B9;
+AC4B;AC4B;1100 1163 11BA;AC4B;1100 1163 11BA;
+AC4C;AC4C;1100 1163 11BB;AC4C;1100 1163 11BB;
+AC4D;AC4D;1100 1163 11BC;AC4D;1100 1163 11BC;
+AC4E;AC4E;1100 1163 11BD;AC4E;1100 1163 11BD;
+AC4F;AC4F;1100 1163 11BE;AC4F;1100 1163 11BE;
+AC50;AC50;1100 1163 11BF;AC50;1100 1163 11BF;
+AC51;AC51;1100 1163 11C0;AC51;1100 1163 11C0;
+AC52;AC52;1100 1163 11C1;AC52;1100 1163 11C1;
+AC53;AC53;1100 1163 11C2;AC53;1100 1163 11C2;
+AC54;AC54;1100 1164;AC54;1100 1164;
+AC55;AC55;1100 1164 11A8;AC55;1100 1164 11A8;
+AC56;AC56;1100 1164 11A9;AC56;1100 1164 11A9;
+AC57;AC57;1100 1164 11AA;AC57;1100 1164 11AA;
+AC58;AC58;1100 1164 11AB;AC58;1100 1164 11AB;
+AC59;AC59;1100 1164 11AC;AC59;1100 1164 11AC;
+AC5A;AC5A;1100 1164 11AD;AC5A;1100 1164 11AD;
+AC5B;AC5B;1100 1164 11AE;AC5B;1100 1164 11AE;
+AC5C;AC5C;1100 1164 11AF;AC5C;1100 1164 11AF;
+AC5D;AC5D;1100 1164 11B0;AC5D;1100 1164 11B0;
+AC5E;AC5E;1100 1164 11B1;AC5E;1100 1164 11B1;
+AC5F;AC5F;1100 1164 11B2;AC5F;1100 1164 11B2;
+AC60;AC60;1100 1164 11B3;AC60;1100 1164 11B3;
+AC61;AC61;1100 1164 11B4;AC61;1100 1164 11B4;
+AC62;AC62;1100 1164 11B5;AC62;1100 1164 11B5;
+AC63;AC63;1100 1164 11B6;AC63;1100 1164 11B6;
+AC64;AC64;1100 1164 11B7;AC64;1100 1164 11B7;
+AC65;AC65;1100 1164 11B8;AC65;1100 1164 11B8;
+AC66;AC66;1100 1164 11B9;AC66;1100 1164 11B9;
+AC67;AC67;1100 1164 11BA;AC67;1100 1164 11BA;
+AC68;AC68;1100 1164 11BB;AC68;1100 1164 11BB;
+AC69;AC69;1100 1164 11BC;AC69;1100 1164 11BC;
+AC6A;AC6A;1100 1164 11BD;AC6A;1100 1164 11BD;
+AC6B;AC6B;1100 1164 11BE;AC6B;1100 1164 11BE;
+AC6C;AC6C;1100 1164 11BF;AC6C;1100 1164 11BF;
+AC6D;AC6D;1100 1164 11C0;AC6D;1100 1164 11C0;
+AC6E;AC6E;1100 1164 11C1;AC6E;1100 1164 11C1;
+AC6F;AC6F;1100 1164 11C2;AC6F;1100 1164 11C2;
+AC70;AC70;1100 1165;AC70;1100 1165;
+AC71;AC71;1100 1165 11A8;AC71;1100 1165 11A8;
+AC72;AC72;1100 1165 11A9;AC72;1100 1165 11A9;
+AC73;AC73;1100 1165 11AA;AC73;1100 1165 11AA;
+AC74;AC74;1100 1165 11AB;AC74;1100 1165 11AB;
+AC75;AC75;1100 1165 11AC;AC75;1100 1165 11AC;
+AC76;AC76;1100 1165 11AD;AC76;1100 1165 11AD;
+AC77;AC77;1100 1165 11AE;AC77;1100 1165 11AE;
+AC78;AC78;1100 1165 11AF;AC78;1100 1165 11AF;
+AC79;AC79;1100 1165 11B0;AC79;1100 1165 11B0;
+AC7A;AC7A;1100 1165 11B1;AC7A;1100 1165 11B1;
+AC7B;AC7B;1100 1165 11B2;AC7B;1100 1165 11B2;
+AC7C;AC7C;1100 1165 11B3;AC7C;1100 1165 11B3;
+AC7D;AC7D;1100 1165 11B4;AC7D;1100 1165 11B4;
+AC7E;AC7E;1100 1165 11B5;AC7E;1100 1165 11B5;
+AC7F;AC7F;1100 1165 11B6;AC7F;1100 1165 11B6;
+AC80;AC80;1100 1165 11B7;AC80;1100 1165 11B7;
+AC81;AC81;1100 1165 11B8;AC81;1100 1165 11B8;
+AC82;AC82;1100 1165 11B9;AC82;1100 1165 11B9;
+AC83;AC83;1100 1165 11BA;AC83;1100 1165 11BA;
+AC84;AC84;1100 1165 11BB;AC84;1100 1165 11BB;
+AC85;AC85;1100 1165 11BC;AC85;1100 1165 11BC;
+AC86;AC86;1100 1165 11BD;AC86;1100 1165 11BD;
+AC87;AC87;1100 1165 11BE;AC87;1100 1165 11BE;
+AC88;AC88;1100 1165 11BF;AC88;1100 1165 11BF;
+AC89;AC89;1100 1165 11C0;AC89;1100 1165 11C0;
+AC8A;AC8A;1100 1165 11C1;AC8A;1100 1165 11C1;
+AC8B;AC8B;1100 1165 11C2;AC8B;1100 1165 11C2;
+AC8C;AC8C;1100 1166;AC8C;1100 1166;
+AC8D;AC8D;1100 1166 11A8;AC8D;1100 1166 11A8;
+AC8E;AC8E;1100 1166 11A9;AC8E;1100 1166 11A9;
+AC8F;AC8F;1100 1166 11AA;AC8F;1100 1166 11AA;
+AC90;AC90;1100 1166 11AB;AC90;1100 1166 11AB;
+AC91;AC91;1100 1166 11AC;AC91;1100 1166 11AC;
+AC92;AC92;1100 1166 11AD;AC92;1100 1166 11AD;
+AC93;AC93;1100 1166 11AE;AC93;1100 1166 11AE;
+AC94;AC94;1100 1166 11AF;AC94;1100 1166 11AF;
+AC95;AC95;1100 1166 11B0;AC95;1100 1166 11B0;
+AC96;AC96;1100 1166 11B1;AC96;1100 1166 11B1;
+AC97;AC97;1100 1166 11B2;AC97;1100 1166 11B2;
+AC98;AC98;1100 1166 11B3;AC98;1100 1166 11B3;
+AC99;AC99;1100 1166 11B4;AC99;1100 1166 11B4;
+AC9A;AC9A;1100 1166 11B5;AC9A;1100 1166 11B5;
+AC9B;AC9B;1100 1166 11B6;AC9B;1100 1166 11B6;
+AC9C;AC9C;1100 1166 11B7;AC9C;1100 1166 11B7;
+AC9D;AC9D;1100 1166 11B8;AC9D;1100 1166 11B8;
+AC9E;AC9E;1100 1166 11B9;AC9E;1100 1166 11B9;
+AC9F;AC9F;1100 1166 11BA;AC9F;1100 1166 11BA;
+ACA0;ACA0;1100 1166 11BB;ACA0;1100 1166 11BB;
+ACA1;ACA1;1100 1166 11BC;ACA1;1100 1166 11BC;
+ACA2;ACA2;1100 1166 11BD;ACA2;1100 1166 11BD;
+ACA3;ACA3;1100 1166 11BE;ACA3;1100 1166 11BE;
+ACA4;ACA4;1100 1166 11BF;ACA4;1100 1166 11BF;
+ACA5;ACA5;1100 1166 11C0;ACA5;1100 1166 11C0;
+ACA6;ACA6;1100 1166 11C1;ACA6;1100 1166 11C1;
+ACA7;ACA7;1100 1166 11C2;ACA7;1100 1166 11C2;
+ACA8;ACA8;1100 1167;ACA8;1100 1167;
+ACA9;ACA9;1100 1167 11A8;ACA9;1100 1167 11A8;
+ACAA;ACAA;1100 1167 11A9;ACAA;1100 1167 11A9;
+ACAB;ACAB;1100 1167 11AA;ACAB;1100 1167 11AA;
+ACAC;ACAC;1100 1167 11AB;ACAC;1100 1167 11AB;
+ACAD;ACAD;1100 1167 11AC;ACAD;1100 1167 11AC;
+ACAE;ACAE;1100 1167 11AD;ACAE;1100 1167 11AD;
+ACAF;ACAF;1100 1167 11AE;ACAF;1100 1167 11AE;
+ACB0;ACB0;1100 1167 11AF;ACB0;1100 1167 11AF;
+ACB1;ACB1;1100 1167 11B0;ACB1;1100 1167 11B0;
+ACB2;ACB2;1100 1167 11B1;ACB2;1100 1167 11B1;
+ACB3;ACB3;1100 1167 11B2;ACB3;1100 1167 11B2;
+ACB4;ACB4;1100 1167 11B3;ACB4;1100 1167 11B3;
+ACB5;ACB5;1100 1167 11B4;ACB5;1100 1167 11B4;
+ACB6;ACB6;1100 1167 11B5;ACB6;1100 1167 11B5;
+ACB7;ACB7;1100 1167 11B6;ACB7;1100 1167 11B6;
+ACB8;ACB8;1100 1167 11B7;ACB8;1100 1167 11B7;
+ACB9;ACB9;1100 1167 11B8;ACB9;1100 1167 11B8;
+ACBA;ACBA;1100 1167 11B9;ACBA;1100 1167 11B9;
+ACBB;ACBB;1100 1167 11BA;ACBB;1100 1167 11BA;
+ACBC;ACBC;1100 1167 11BB;ACBC;1100 1167 11BB;
+ACBD;ACBD;1100 1167 11BC;ACBD;1100 1167 11BC;
+ACBE;ACBE;1100 1167 11BD;ACBE;1100 1167 11BD;
+ACBF;ACBF;1100 1167 11BE;ACBF;1100 1167 11BE;
+ACC0;ACC0;1100 1167 11BF;ACC0;1100 1167 11BF;
+ACC1;ACC1;1100 1167 11C0;ACC1;1100 1167 11C0;
+ACC2;ACC2;1100 1167 11C1;ACC2;1100 1167 11C1;
+ACC3;ACC3;1100 1167 11C2;ACC3;1100 1167 11C2;
+ACC4;ACC4;1100 1168;ACC4;1100 1168;
+ACC5;ACC5;1100 1168 11A8;ACC5;1100 1168 11A8;
+ACC6;ACC6;1100 1168 11A9;ACC6;1100 1168 11A9;
+ACC7;ACC7;1100 1168 11AA;ACC7;1100 1168 11AA;
+ACC8;ACC8;1100 1168 11AB;ACC8;1100 1168 11AB;
+ACC9;ACC9;1100 1168 11AC;ACC9;1100 1168 11AC;
+ACCA;ACCA;1100 1168 11AD;ACCA;1100 1168 11AD;
+ACCB;ACCB;1100 1168 11AE;ACCB;1100 1168 11AE;
+ACCC;ACCC;1100 1168 11AF;ACCC;1100 1168 11AF;
+ACCD;ACCD;1100 1168 11B0;ACCD;1100 1168 11B0;
+ACCE;ACCE;1100 1168 11B1;ACCE;1100 1168 11B1;
+ACCF;ACCF;1100 1168 11B2;ACCF;1100 1168 11B2;
+ACD0;ACD0;1100 1168 11B3;ACD0;1100 1168 11B3;
+ACD1;ACD1;1100 1168 11B4;ACD1;1100 1168 11B4;
+ACD2;ACD2;1100 1168 11B5;ACD2;1100 1168 11B5;
+ACD3;ACD3;1100 1168 11B6;ACD3;1100 1168 11B6;
+ACD4;ACD4;1100 1168 11B7;ACD4;1100 1168 11B7;
+ACD5;ACD5;1100 1168 11B8;ACD5;1100 1168 11B8;
+ACD6;ACD6;1100 1168 11B9;ACD6;1100 1168 11B9;
+ACD7;ACD7;1100 1168 11BA;ACD7;1100 1168 11BA;
+ACD8;ACD8;1100 1168 11BB;ACD8;1100 1168 11BB;
+ACD9;ACD9;1100 1168 11BC;ACD9;1100 1168 11BC;
+ACDA;ACDA;1100 1168 11BD;ACDA;1100 1168 11BD;
+ACDB;ACDB;1100 1168 11BE;ACDB;1100 1168 11BE;
+ACDC;ACDC;1100 1168 11BF;ACDC;1100 1168 11BF;
+ACDD;ACDD;1100 1168 11C0;ACDD;1100 1168 11C0;
+ACDE;ACDE;1100 1168 11C1;ACDE;1100 1168 11C1;
+ACDF;ACDF;1100 1168 11C2;ACDF;1100 1168 11C2;
+ACE0;ACE0;1100 1169;ACE0;1100 1169;
+ACE1;ACE1;1100 1169 11A8;ACE1;1100 1169 11A8;
+ACE2;ACE2;1100 1169 11A9;ACE2;1100 1169 11A9;
+ACE3;ACE3;1100 1169 11AA;ACE3;1100 1169 11AA;
+ACE4;ACE4;1100 1169 11AB;ACE4;1100 1169 11AB;
+ACE5;ACE5;1100 1169 11AC;ACE5;1100 1169 11AC;
+ACE6;ACE6;1100 1169 11AD;ACE6;1100 1169 11AD;
+ACE7;ACE7;1100 1169 11AE;ACE7;1100 1169 11AE;
+ACE8;ACE8;1100 1169 11AF;ACE8;1100 1169 11AF;
+ACE9;ACE9;1100 1169 11B0;ACE9;1100 1169 11B0;
+ACEA;ACEA;1100 1169 11B1;ACEA;1100 1169 11B1;
+ACEB;ACEB;1100 1169 11B2;ACEB;1100 1169 11B2;
+ACEC;ACEC;1100 1169 11B3;ACEC;1100 1169 11B3;
+ACED;ACED;1100 1169 11B4;ACED;1100 1169 11B4;
+ACEE;ACEE;1100 1169 11B5;ACEE;1100 1169 11B5;
+ACEF;ACEF;1100 1169 11B6;ACEF;1100 1169 11B6;
+ACF0;ACF0;1100 1169 11B7;ACF0;1100 1169 11B7;
+ACF1;ACF1;1100 1169 11B8;ACF1;1100 1169 11B8;
+ACF2;ACF2;1100 1169 11B9;ACF2;1100 1169 11B9;
+ACF3;ACF3;1100 1169 11BA;ACF3;1100 1169 11BA;
+ACF4;ACF4;1100 1169 11BB;ACF4;1100 1169 11BB;
+ACF5;ACF5;1100 1169 11BC;ACF5;1100 1169 11BC;
+ACF6;ACF6;1100 1169 11BD;ACF6;1100 1169 11BD;
+ACF7;ACF7;1100 1169 11BE;ACF7;1100 1169 11BE;
+ACF8;ACF8;1100 1169 11BF;ACF8;1100 1169 11BF;
+ACF9;ACF9;1100 1169 11C0;ACF9;1100 1169 11C0;
+ACFA;ACFA;1100 1169 11C1;ACFA;1100 1169 11C1;
+ACFB;ACFB;1100 1169 11C2;ACFB;1100 1169 11C2;
+ACFC;ACFC;1100 116A;ACFC;1100 116A;
+ACFD;ACFD;1100 116A 11A8;ACFD;1100 116A 11A8;
+ACFE;ACFE;1100 116A 11A9;ACFE;1100 116A 11A9;
+ACFF;ACFF;1100 116A 11AA;ACFF;1100 116A 11AA;
+AD00;AD00;1100 116A 11AB;AD00;1100 116A 11AB;
+AD01;AD01;1100 116A 11AC;AD01;1100 116A 11AC;
+AD02;AD02;1100 116A 11AD;AD02;1100 116A 11AD;
+AD03;AD03;1100 116A 11AE;AD03;1100 116A 11AE;
+AD04;AD04;1100 116A 11AF;AD04;1100 116A 11AF;
+AD05;AD05;1100 116A 11B0;AD05;1100 116A 11B0;
+AD06;AD06;1100 116A 11B1;AD06;1100 116A 11B1;
+AD07;AD07;1100 116A 11B2;AD07;1100 116A 11B2;
+AD08;AD08;1100 116A 11B3;AD08;1100 116A 11B3;
+AD09;AD09;1100 116A 11B4;AD09;1100 116A 11B4;
+AD0A;AD0A;1100 116A 11B5;AD0A;1100 116A 11B5;
+AD0B;AD0B;1100 116A 11B6;AD0B;1100 116A 11B6;
+AD0C;AD0C;1100 116A 11B7;AD0C;1100 116A 11B7;
+AD0D;AD0D;1100 116A 11B8;AD0D;1100 116A 11B8;
+AD0E;AD0E;1100 116A 11B9;AD0E;1100 116A 11B9;
+AD0F;AD0F;1100 116A 11BA;AD0F;1100 116A 11BA;
+AD10;AD10;1100 116A 11BB;AD10;1100 116A 11BB;
+AD11;AD11;1100 116A 11BC;AD11;1100 116A 11BC;
+AD12;AD12;1100 116A 11BD;AD12;1100 116A 11BD;
+AD13;AD13;1100 116A 11BE;AD13;1100 116A 11BE;
+AD14;AD14;1100 116A 11BF;AD14;1100 116A 11BF;
+AD15;AD15;1100 116A 11C0;AD15;1100 116A 11C0;
+AD16;AD16;1100 116A 11C1;AD16;1100 116A 11C1;
+AD17;AD17;1100 116A 11C2;AD17;1100 116A 11C2;
+AD18;AD18;1100 116B;AD18;1100 116B;
+AD19;AD19;1100 116B 11A8;AD19;1100 116B 11A8;
+AD1A;AD1A;1100 116B 11A9;AD1A;1100 116B 11A9;
+AD1B;AD1B;1100 116B 11AA;AD1B;1100 116B 11AA;
+AD1C;AD1C;1100 116B 11AB;AD1C;1100 116B 11AB;
+AD1D;AD1D;1100 116B 11AC;AD1D;1100 116B 11AC;
+AD1E;AD1E;1100 116B 11AD;AD1E;1100 116B 11AD;
+AD1F;AD1F;1100 116B 11AE;AD1F;1100 116B 11AE;
+AD20;AD20;1100 116B 11AF;AD20;1100 116B 11AF;
+AD21;AD21;1100 116B 11B0;AD21;1100 116B 11B0;
+AD22;AD22;1100 116B 11B1;AD22;1100 116B 11B1;
+AD23;AD23;1100 116B 11B2;AD23;1100 116B 11B2;
+AD24;AD24;1100 116B 11B3;AD24;1100 116B 11B3;
+AD25;AD25;1100 116B 11B4;AD25;1100 116B 11B4;
+AD26;AD26;1100 116B 11B5;AD26;1100 116B 11B5;
+AD27;AD27;1100 116B 11B6;AD27;1100 116B 11B6;
+AD28;AD28;1100 116B 11B7;AD28;1100 116B 11B7;
+AD29;AD29;1100 116B 11B8;AD29;1100 116B 11B8;
+AD2A;AD2A;1100 116B 11B9;AD2A;1100 116B 11B9;
+AD2B;AD2B;1100 116B 11BA;AD2B;1100 116B 11BA;
+AD2C;AD2C;1100 116B 11BB;AD2C;1100 116B 11BB;
+AD2D;AD2D;1100 116B 11BC;AD2D;1100 116B 11BC;
+AD2E;AD2E;1100 116B 11BD;AD2E;1100 116B 11BD;
+AD2F;AD2F;1100 116B 11BE;AD2F;1100 116B 11BE;
+AD30;AD30;1100 116B 11BF;AD30;1100 116B 11BF;
+AD31;AD31;1100 116B 11C0;AD31;1100 116B 11C0;
+AD32;AD32;1100 116B 11C1;AD32;1100 116B 11C1;
+AD33;AD33;1100 116B 11C2;AD33;1100 116B 11C2;
+AD34;AD34;1100 116C;AD34;1100 116C;
+AD35;AD35;1100 116C 11A8;AD35;1100 116C 11A8;
+AD36;AD36;1100 116C 11A9;AD36;1100 116C 11A9;
+AD37;AD37;1100 116C 11AA;AD37;1100 116C 11AA;
+AD38;AD38;1100 116C 11AB;AD38;1100 116C 11AB;
+AD39;AD39;1100 116C 11AC;AD39;1100 116C 11AC;
+AD3A;AD3A;1100 116C 11AD;AD3A;1100 116C 11AD;
+AD3B;AD3B;1100 116C 11AE;AD3B;1100 116C 11AE;
+AD3C;AD3C;1100 116C 11AF;AD3C;1100 116C 11AF;
+AD3D;AD3D;1100 116C 11B0;AD3D;1100 116C 11B0;
+AD3E;AD3E;1100 116C 11B1;AD3E;1100 116C 11B1;
+AD3F;AD3F;1100 116C 11B2;AD3F;1100 116C 11B2;
+AD40;AD40;1100 116C 11B3;AD40;1100 116C 11B3;
+AD41;AD41;1100 116C 11B4;AD41;1100 116C 11B4;
+AD42;AD42;1100 116C 11B5;AD42;1100 116C 11B5;
+AD43;AD43;1100 116C 11B6;AD43;1100 116C 11B6;
+AD44;AD44;1100 116C 11B7;AD44;1100 116C 11B7;
+AD45;AD45;1100 116C 11B8;AD45;1100 116C 11B8;
+AD46;AD46;1100 116C 11B9;AD46;1100 116C 11B9;
+AD47;AD47;1100 116C 11BA;AD47;1100 116C 11BA;
+AD48;AD48;1100 116C 11BB;AD48;1100 116C 11BB;
+AD49;AD49;1100 116C 11BC;AD49;1100 116C 11BC;
+AD4A;AD4A;1100 116C 11BD;AD4A;1100 116C 11BD;
+AD4B;AD4B;1100 116C 11BE;AD4B;1100 116C 11BE;
+AD4C;AD4C;1100 116C 11BF;AD4C;1100 116C 11BF;
+AD4D;AD4D;1100 116C 11C0;AD4D;1100 116C 11C0;
+AD4E;AD4E;1100 116C 11C1;AD4E;1100 116C 11C1;
+AD4F;AD4F;1100 116C 11C2;AD4F;1100 116C 11C2;
+AD50;AD50;1100 116D;AD50;1100 116D;
+AD51;AD51;1100 116D 11A8;AD51;1100 116D 11A8;
+AD52;AD52;1100 116D 11A9;AD52;1100 116D 11A9;
+AD53;AD53;1100 116D 11AA;AD53;1100 116D 11AA;
+AD54;AD54;1100 116D 11AB;AD54;1100 116D 11AB;
+AD55;AD55;1100 116D 11AC;AD55;1100 116D 11AC;
+AD56;AD56;1100 116D 11AD;AD56;1100 116D 11AD;
+AD57;AD57;1100 116D 11AE;AD57;1100 116D 11AE;
+AD58;AD58;1100 116D 11AF;AD58;1100 116D 11AF;
+AD59;AD59;1100 116D 11B0;AD59;1100 116D 11B0;
+AD5A;AD5A;1100 116D 11B1;AD5A;1100 116D 11B1;
+AD5B;AD5B;1100 116D 11B2;AD5B;1100 116D 11B2;
+AD5C;AD5C;1100 116D 11B3;AD5C;1100 116D 11B3;
+AD5D;AD5D;1100 116D 11B4;AD5D;1100 116D 11B4;
+AD5E;AD5E;1100 116D 11B5;AD5E;1100 116D 11B5;
+AD5F;AD5F;1100 116D 11B6;AD5F;1100 116D 11B6;
+AD60;AD60;1100 116D 11B7;AD60;1100 116D 11B7;
+AD61;AD61;1100 116D 11B8;AD61;1100 116D 11B8;
+AD62;AD62;1100 116D 11B9;AD62;1100 116D 11B9;
+AD63;AD63;1100 116D 11BA;AD63;1100 116D 11BA;
+AD64;AD64;1100 116D 11BB;AD64;1100 116D 11BB;
+AD65;AD65;1100 116D 11BC;AD65;1100 116D 11BC;
+AD66;AD66;1100 116D 11BD;AD66;1100 116D 11BD;
+AD67;AD67;1100 116D 11BE;AD67;1100 116D 11BE;
+AD68;AD68;1100 116D 11BF;AD68;1100 116D 11BF;
+AD69;AD69;1100 116D 11C0;AD69;1100 116D 11C0;
+AD6A;AD6A;1100 116D 11C1;AD6A;1100 116D 11C1;
+AD6B;AD6B;1100 116D 11C2;AD6B;1100 116D 11C2;
+AD6C;AD6C;1100 116E;AD6C;1100 116E;
+AD6D;AD6D;1100 116E 11A8;AD6D;1100 116E 11A8;
+AD6E;AD6E;1100 116E 11A9;AD6E;1100 116E 11A9;
+AD6F;AD6F;1100 116E 11AA;AD6F;1100 116E 11AA;
+AD70;AD70;1100 116E 11AB;AD70;1100 116E 11AB;
+AD71;AD71;1100 116E 11AC;AD71;1100 116E 11AC;
+AD72;AD72;1100 116E 11AD;AD72;1100 116E 11AD;
+AD73;AD73;1100 116E 11AE;AD73;1100 116E 11AE;
+AD74;AD74;1100 116E 11AF;AD74;1100 116E 11AF;
+AD75;AD75;1100 116E 11B0;AD75;1100 116E 11B0;
+AD76;AD76;1100 116E 11B1;AD76;1100 116E 11B1;
+AD77;AD77;1100 116E 11B2;AD77;1100 116E 11B2;
+AD78;AD78;1100 116E 11B3;AD78;1100 116E 11B3;
+AD79;AD79;1100 116E 11B4;AD79;1100 116E 11B4;
+AD7A;AD7A;1100 116E 11B5;AD7A;1100 116E 11B5;
+AD7B;AD7B;1100 116E 11B6;AD7B;1100 116E 11B6;
+AD7C;AD7C;1100 116E 11B7;AD7C;1100 116E 11B7;
+AD7D;AD7D;1100 116E 11B8;AD7D;1100 116E 11B8;
+AD7E;AD7E;1100 116E 11B9;AD7E;1100 116E 11B9;
+AD7F;AD7F;1100 116E 11BA;AD7F;1100 116E 11BA;
+AD80;AD80;1100 116E 11BB;AD80;1100 116E 11BB;
+AD81;AD81;1100 116E 11BC;AD81;1100 116E 11BC;
+AD82;AD82;1100 116E 11BD;AD82;1100 116E 11BD;
+AD83;AD83;1100 116E 11BE;AD83;1100 116E 11BE;
+AD84;AD84;1100 116E 11BF;AD84;1100 116E 11BF;
+AD85;AD85;1100 116E 11C0;AD85;1100 116E 11C0;
+AD86;AD86;1100 116E 11C1;AD86;1100 116E 11C1;
+AD87;AD87;1100 116E 11C2;AD87;1100 116E 11C2;
+AD88;AD88;1100 116F;AD88;1100 116F;
+AD89;AD89;1100 116F 11A8;AD89;1100 116F 11A8;
+AD8A;AD8A;1100 116F 11A9;AD8A;1100 116F 11A9;
+AD8B;AD8B;1100 116F 11AA;AD8B;1100 116F 11AA;
+AD8C;AD8C;1100 116F 11AB;AD8C;1100 116F 11AB;
+AD8D;AD8D;1100 116F 11AC;AD8D;1100 116F 11AC;
+AD8E;AD8E;1100 116F 11AD;AD8E;1100 116F 11AD;
+AD8F;AD8F;1100 116F 11AE;AD8F;1100 116F 11AE;
+AD90;AD90;1100 116F 11AF;AD90;1100 116F 11AF;
+AD91;AD91;1100 116F 11B0;AD91;1100 116F 11B0;
+AD92;AD92;1100 116F 11B1;AD92;1100 116F 11B1;
+AD93;AD93;1100 116F 11B2;AD93;1100 116F 11B2;
+AD94;AD94;1100 116F 11B3;AD94;1100 116F 11B3;
+AD95;AD95;1100 116F 11B4;AD95;1100 116F 11B4;
+AD96;AD96;1100 116F 11B5;AD96;1100 116F 11B5;
+AD97;AD97;1100 116F 11B6;AD97;1100 116F 11B6;
+AD98;AD98;1100 116F 11B7;AD98;1100 116F 11B7;
+AD99;AD99;1100 116F 11B8;AD99;1100 116F 11B8;
+AD9A;AD9A;1100 116F 11B9;AD9A;1100 116F 11B9;
+AD9B;AD9B;1100 116F 11BA;AD9B;1100 116F 11BA;
+AD9C;AD9C;1100 116F 11BB;AD9C;1100 116F 11BB;
+AD9D;AD9D;1100 116F 11BC;AD9D;1100 116F 11BC;
+AD9E;AD9E;1100 116F 11BD;AD9E;1100 116F 11BD;
+AD9F;AD9F;1100 116F 11BE;AD9F;1100 116F 11BE;
+ADA0;ADA0;1100 116F 11BF;ADA0;1100 116F 11BF;
+ADA1;ADA1;1100 116F 11C0;ADA1;1100 116F 11C0;
+ADA2;ADA2;1100 116F 11C1;ADA2;1100 116F 11C1;
+ADA3;ADA3;1100 116F 11C2;ADA3;1100 116F 11C2;
+ADA4;ADA4;1100 1170;ADA4;1100 1170;
+ADA5;ADA5;1100 1170 11A8;ADA5;1100 1170 11A8;
+ADA6;ADA6;1100 1170 11A9;ADA6;1100 1170 11A9;
+ADA7;ADA7;1100 1170 11AA;ADA7;1100 1170 11AA;
+ADA8;ADA8;1100 1170 11AB;ADA8;1100 1170 11AB;
+ADA9;ADA9;1100 1170 11AC;ADA9;1100 1170 11AC;
+ADAA;ADAA;1100 1170 11AD;ADAA;1100 1170 11AD;
+ADAB;ADAB;1100 1170 11AE;ADAB;1100 1170 11AE;
+ADAC;ADAC;1100 1170 11AF;ADAC;1100 1170 11AF;
+ADAD;ADAD;1100 1170 11B0;ADAD;1100 1170 11B0;
+ADAE;ADAE;1100 1170 11B1;ADAE;1100 1170 11B1;
+ADAF;ADAF;1100 1170 11B2;ADAF;1100 1170 11B2;
+ADB0;ADB0;1100 1170 11B3;ADB0;1100 1170 11B3;
+ADB1;ADB1;1100 1170 11B4;ADB1;1100 1170 11B4;
+ADB2;ADB2;1100 1170 11B5;ADB2;1100 1170 11B5;
+ADB3;ADB3;1100 1170 11B6;ADB3;1100 1170 11B6;
+ADB4;ADB4;1100 1170 11B7;ADB4;1100 1170 11B7;
+ADB5;ADB5;1100 1170 11B8;ADB5;1100 1170 11B8;
+ADB6;ADB6;1100 1170 11B9;ADB6;1100 1170 11B9;
+ADB7;ADB7;1100 1170 11BA;ADB7;1100 1170 11BA;
+ADB8;ADB8;1100 1170 11BB;ADB8;1100 1170 11BB;
+ADB9;ADB9;1100 1170 11BC;ADB9;1100 1170 11BC;
+ADBA;ADBA;1100 1170 11BD;ADBA;1100 1170 11BD;
+ADBB;ADBB;1100 1170 11BE;ADBB;1100 1170 11BE;
+ADBC;ADBC;1100 1170 11BF;ADBC;1100 1170 11BF;
+ADBD;ADBD;1100 1170 11C0;ADBD;1100 1170 11C0;
+ADBE;ADBE;1100 1170 11C1;ADBE;1100 1170 11C1;
+ADBF;ADBF;1100 1170 11C2;ADBF;1100 1170 11C2;
+ADC0;ADC0;1100 1171;ADC0;1100 1171;
+ADC1;ADC1;1100 1171 11A8;ADC1;1100 1171 11A8;
+ADC2;ADC2;1100 1171 11A9;ADC2;1100 1171 11A9;
+ADC3;ADC3;1100 1171 11AA;ADC3;1100 1171 11AA;
+ADC4;ADC4;1100 1171 11AB;ADC4;1100 1171 11AB;
+ADC5;ADC5;1100 1171 11AC;ADC5;1100 1171 11AC;
+ADC6;ADC6;1100 1171 11AD;ADC6;1100 1171 11AD;
+ADC7;ADC7;1100 1171 11AE;ADC7;1100 1171 11AE;
+ADC8;ADC8;1100 1171 11AF;ADC8;1100 1171 11AF;
+ADC9;ADC9;1100 1171 11B0;ADC9;1100 1171 11B0;
+ADCA;ADCA;1100 1171 11B1;ADCA;1100 1171 11B1;
+ADCB;ADCB;1100 1171 11B2;ADCB;1100 1171 11B2;
+ADCC;ADCC;1100 1171 11B3;ADCC;1100 1171 11B3;
+ADCD;ADCD;1100 1171 11B4;ADCD;1100 1171 11B4;
+ADCE;ADCE;1100 1171 11B5;ADCE;1100 1171 11B5;
+ADCF;ADCF;1100 1171 11B6;ADCF;1100 1171 11B6;
+ADD0;ADD0;1100 1171 11B7;ADD0;1100 1171 11B7;
+ADD1;ADD1;1100 1171 11B8;ADD1;1100 1171 11B8;
+ADD2;ADD2;1100 1171 11B9;ADD2;1100 1171 11B9;
+ADD3;ADD3;1100 1171 11BA;ADD3;1100 1171 11BA;
+ADD4;ADD4;1100 1171 11BB;ADD4;1100 1171 11BB;
+ADD5;ADD5;1100 1171 11BC;ADD5;1100 1171 11BC;
+ADD6;ADD6;1100 1171 11BD;ADD6;1100 1171 11BD;
+ADD7;ADD7;1100 1171 11BE;ADD7;1100 1171 11BE;
+ADD8;ADD8;1100 1171 11BF;ADD8;1100 1171 11BF;
+ADD9;ADD9;1100 1171 11C0;ADD9;1100 1171 11C0;
+ADDA;ADDA;1100 1171 11C1;ADDA;1100 1171 11C1;
+ADDB;ADDB;1100 1171 11C2;ADDB;1100 1171 11C2;
+ADDC;ADDC;1100 1172;ADDC;1100 1172;
+ADDD;ADDD;1100 1172 11A8;ADDD;1100 1172 11A8;
+ADDE;ADDE;1100 1172 11A9;ADDE;1100 1172 11A9;
+ADDF;ADDF;1100 1172 11AA;ADDF;1100 1172 11AA;
+ADE0;ADE0;1100 1172 11AB;ADE0;1100 1172 11AB;
+ADE1;ADE1;1100 1172 11AC;ADE1;1100 1172 11AC;
+ADE2;ADE2;1100 1172 11AD;ADE2;1100 1172 11AD;
+ADE3;ADE3;1100 1172 11AE;ADE3;1100 1172 11AE;
+ADE4;ADE4;1100 1172 11AF;ADE4;1100 1172 11AF;
+ADE5;ADE5;1100 1172 11B0;ADE5;1100 1172 11B0;
+ADE6;ADE6;1100 1172 11B1;ADE6;1100 1172 11B1;
+ADE7;ADE7;1100 1172 11B2;ADE7;1100 1172 11B2;
+ADE8;ADE8;1100 1172 11B3;ADE8;1100 1172 11B3;
+ADE9;ADE9;1100 1172 11B4;ADE9;1100 1172 11B4;
+ADEA;ADEA;1100 1172 11B5;ADEA;1100 1172 11B5;
+ADEB;ADEB;1100 1172 11B6;ADEB;1100 1172 11B6;
+ADEC;ADEC;1100 1172 11B7;ADEC;1100 1172 11B7;
+ADED;ADED;1100 1172 11B8;ADED;1100 1172 11B8;
+ADEE;ADEE;1100 1172 11B9;ADEE;1100 1172 11B9;
+ADEF;ADEF;1100 1172 11BA;ADEF;1100 1172 11BA;
+ADF0;ADF0;1100 1172 11BB;ADF0;1100 1172 11BB;
+ADF1;ADF1;1100 1172 11BC;ADF1;1100 1172 11BC;
+ADF2;ADF2;1100 1172 11BD;ADF2;1100 1172 11BD;
+ADF3;ADF3;1100 1172 11BE;ADF3;1100 1172 11BE;
+ADF4;ADF4;1100 1172 11BF;ADF4;1100 1172 11BF;
+ADF5;ADF5;1100 1172 11C0;ADF5;1100 1172 11C0;
+ADF6;ADF6;1100 1172 11C1;ADF6;1100 1172 11C1;
+ADF7;ADF7;1100 1172 11C2;ADF7;1100 1172 11C2;
+ADF8;ADF8;1100 1173;ADF8;1100 1173;
+ADF9;ADF9;1100 1173 11A8;ADF9;1100 1173 11A8;
+ADFA;ADFA;1100 1173 11A9;ADFA;1100 1173 11A9;
+ADFB;ADFB;1100 1173 11AA;ADFB;1100 1173 11AA;
+ADFC;ADFC;1100 1173 11AB;ADFC;1100 1173 11AB;
+ADFD;ADFD;1100 1173 11AC;ADFD;1100 1173 11AC;
+ADFE;ADFE;1100 1173 11AD;ADFE;1100 1173 11AD;
+ADFF;ADFF;1100 1173 11AE;ADFF;1100 1173 11AE;
+AE00;AE00;1100 1173 11AF;AE00;1100 1173 11AF;
+AE01;AE01;1100 1173 11B0;AE01;1100 1173 11B0;
+AE02;AE02;1100 1173 11B1;AE02;1100 1173 11B1;
+AE03;AE03;1100 1173 11B2;AE03;1100 1173 11B2;
+AE04;AE04;1100 1173 11B3;AE04;1100 1173 11B3;
+AE05;AE05;1100 1173 11B4;AE05;1100 1173 11B4;
+AE06;AE06;1100 1173 11B5;AE06;1100 1173 11B5;
+AE07;AE07;1100 1173 11B6;AE07;1100 1173 11B6;
+AE08;AE08;1100 1173 11B7;AE08;1100 1173 11B7;
+AE09;AE09;1100 1173 11B8;AE09;1100 1173 11B8;
+AE0A;AE0A;1100 1173 11B9;AE0A;1100 1173 11B9;
+AE0B;AE0B;1100 1173 11BA;AE0B;1100 1173 11BA;
+AE0C;AE0C;1100 1173 11BB;AE0C;1100 1173 11BB;
+AE0D;AE0D;1100 1173 11BC;AE0D;1100 1173 11BC;
+AE0E;AE0E;1100 1173 11BD;AE0E;1100 1173 11BD;
+AE0F;AE0F;1100 1173 11BE;AE0F;1100 1173 11BE;
+AE10;AE10;1100 1173 11BF;AE10;1100 1173 11BF;
+AE11;AE11;1100 1173 11C0;AE11;1100 1173 11C0;
+AE12;AE12;1100 1173 11C1;AE12;1100 1173 11C1;
+AE13;AE13;1100 1173 11C2;AE13;1100 1173 11C2;
+AE14;AE14;1100 1174;AE14;1100 1174;
+AE15;AE15;1100 1174 11A8;AE15;1100 1174 11A8;
+AE16;AE16;1100 1174 11A9;AE16;1100 1174 11A9;
+AE17;AE17;1100 1174 11AA;AE17;1100 1174 11AA;
+AE18;AE18;1100 1174 11AB;AE18;1100 1174 11AB;
+AE19;AE19;1100 1174 11AC;AE19;1100 1174 11AC;
+AE1A;AE1A;1100 1174 11AD;AE1A;1100 1174 11AD;
+AE1B;AE1B;1100 1174 11AE;AE1B;1100 1174 11AE;
+AE1C;AE1C;1100 1174 11AF;AE1C;1100 1174 11AF;
+AE1D;AE1D;1100 1174 11B0;AE1D;1100 1174 11B0;
+AE1E;AE1E;1100 1174 11B1;AE1E;1100 1174 11B1;
+AE1F;AE1F;1100 1174 11B2;AE1F;1100 1174 11B2;
+AE20;AE20;1100 1174 11B3;AE20;1100 1174 11B3;
+AE21;AE21;1100 1174 11B4;AE21;1100 1174 11B4;
+AE22;AE22;1100 1174 11B5;AE22;1100 1174 11B5;
+AE23;AE23;1100 1174 11B6;AE23;1100 1174 11B6;
+AE24;AE24;1100 1174 11B7;AE24;1100 1174 11B7;
+AE25;AE25;1100 1174 11B8;AE25;1100 1174 11B8;
+AE26;AE26;1100 1174 11B9;AE26;1100 1174 11B9;
+AE27;AE27;1100 1174 11BA;AE27;1100 1174 11BA;
+AE28;AE28;1100 1174 11BB;AE28;1100 1174 11BB;
+AE29;AE29;1100 1174 11BC;AE29;1100 1174 11BC;
+AE2A;AE2A;1100 1174 11BD;AE2A;1100 1174 11BD;
+AE2B;AE2B;1100 1174 11BE;AE2B;1100 1174 11BE;
+AE2C;AE2C;1100 1174 11BF;AE2C;1100 1174 11BF;
+AE2D;AE2D;1100 1174 11C0;AE2D;1100 1174 11C0;
+AE2E;AE2E;1100 1174 11C1;AE2E;1100 1174 11C1;
+AE2F;AE2F;1100 1174 11C2;AE2F;1100 1174 11C2;
+AE30;AE30;1100 1175;AE30;1100 1175;
+AE31;AE31;1100 1175 11A8;AE31;1100 1175 11A8;
+AE32;AE32;1100 1175 11A9;AE32;1100 1175 11A9;
+AE33;AE33;1100 1175 11AA;AE33;1100 1175 11AA;
+AE34;AE34;1100 1175 11AB;AE34;1100 1175 11AB;
+AE35;AE35;1100 1175 11AC;AE35;1100 1175 11AC;
+AE36;AE36;1100 1175 11AD;AE36;1100 1175 11AD;
+AE37;AE37;1100 1175 11AE;AE37;1100 1175 11AE;
+AE38;AE38;1100 1175 11AF;AE38;1100 1175 11AF;
+AE39;AE39;1100 1175 11B0;AE39;1100 1175 11B0;
+AE3A;AE3A;1100 1175 11B1;AE3A;1100 1175 11B1;
+AE3B;AE3B;1100 1175 11B2;AE3B;1100 1175 11B2;
+AE3C;AE3C;1100 1175 11B3;AE3C;1100 1175 11B3;
+AE3D;AE3D;1100 1175 11B4;AE3D;1100 1175 11B4;
+AE3E;AE3E;1100 1175 11B5;AE3E;1100 1175 11B5;
+AE3F;AE3F;1100 1175 11B6;AE3F;1100 1175 11B6;
+AE40;AE40;1100 1175 11B7;AE40;1100 1175 11B7;
+AE41;AE41;1100 1175 11B8;AE41;1100 1175 11B8;
+AE42;AE42;1100 1175 11B9;AE42;1100 1175 11B9;
+AE43;AE43;1100 1175 11BA;AE43;1100 1175 11BA;
+AE44;AE44;1100 1175 11BB;AE44;1100 1175 11BB;
+AE45;AE45;1100 1175 11BC;AE45;1100 1175 11BC;
+AE46;AE46;1100 1175 11BD;AE46;1100 1175 11BD;
+AE47;AE47;1100 1175 11BE;AE47;1100 1175 11BE;
+AE48;AE48;1100 1175 11BF;AE48;1100 1175 11BF;
+AE49;AE49;1100 1175 11C0;AE49;1100 1175 11C0;
+AE4A;AE4A;1100 1175 11C1;AE4A;1100 1175 11C1;
+AE4B;AE4B;1100 1175 11C2;AE4B;1100 1175 11C2;
+AE4C;AE4C;1101 1161;AE4C;1101 1161;
+AE4D;AE4D;1101 1161 11A8;AE4D;1101 1161 11A8;
+AE4E;AE4E;1101 1161 11A9;AE4E;1101 1161 11A9;
+AE4F;AE4F;1101 1161 11AA;AE4F;1101 1161 11AA;
+AE50;AE50;1101 1161 11AB;AE50;1101 1161 11AB;
+AE51;AE51;1101 1161 11AC;AE51;1101 1161 11AC;
+AE52;AE52;1101 1161 11AD;AE52;1101 1161 11AD;
+AE53;AE53;1101 1161 11AE;AE53;1101 1161 11AE;
+AE54;AE54;1101 1161 11AF;AE54;1101 1161 11AF;
+AE55;AE55;1101 1161 11B0;AE55;1101 1161 11B0;
+AE56;AE56;1101 1161 11B1;AE56;1101 1161 11B1;
+AE57;AE57;1101 1161 11B2;AE57;1101 1161 11B2;
+AE58;AE58;1101 1161 11B3;AE58;1101 1161 11B3;
+AE59;AE59;1101 1161 11B4;AE59;1101 1161 11B4;
+AE5A;AE5A;1101 1161 11B5;AE5A;1101 1161 11B5;
+AE5B;AE5B;1101 1161 11B6;AE5B;1101 1161 11B6;
+AE5C;AE5C;1101 1161 11B7;AE5C;1101 1161 11B7;
+AE5D;AE5D;1101 1161 11B8;AE5D;1101 1161 11B8;
+AE5E;AE5E;1101 1161 11B9;AE5E;1101 1161 11B9;
+AE5F;AE5F;1101 1161 11BA;AE5F;1101 1161 11BA;
+AE60;AE60;1101 1161 11BB;AE60;1101 1161 11BB;
+AE61;AE61;1101 1161 11BC;AE61;1101 1161 11BC;
+AE62;AE62;1101 1161 11BD;AE62;1101 1161 11BD;
+AE63;AE63;1101 1161 11BE;AE63;1101 1161 11BE;
+AE64;AE64;1101 1161 11BF;AE64;1101 1161 11BF;
+AE65;AE65;1101 1161 11C0;AE65;1101 1161 11C0;
+AE66;AE66;1101 1161 11C1;AE66;1101 1161 11C1;
+AE67;AE67;1101 1161 11C2;AE67;1101 1161 11C2;
+AE68;AE68;1101 1162;AE68;1101 1162;
+AE69;AE69;1101 1162 11A8;AE69;1101 1162 11A8;
+AE6A;AE6A;1101 1162 11A9;AE6A;1101 1162 11A9;
+AE6B;AE6B;1101 1162 11AA;AE6B;1101 1162 11AA;
+AE6C;AE6C;1101 1162 11AB;AE6C;1101 1162 11AB;
+AE6D;AE6D;1101 1162 11AC;AE6D;1101 1162 11AC;
+AE6E;AE6E;1101 1162 11AD;AE6E;1101 1162 11AD;
+AE6F;AE6F;1101 1162 11AE;AE6F;1101 1162 11AE;
+AE70;AE70;1101 1162 11AF;AE70;1101 1162 11AF;
+AE71;AE71;1101 1162 11B0;AE71;1101 1162 11B0;
+AE72;AE72;1101 1162 11B1;AE72;1101 1162 11B1;
+AE73;AE73;1101 1162 11B2;AE73;1101 1162 11B2;
+AE74;AE74;1101 1162 11B3;AE74;1101 1162 11B3;
+AE75;AE75;1101 1162 11B4;AE75;1101 1162 11B4;
+AE76;AE76;1101 1162 11B5;AE76;1101 1162 11B5;
+AE77;AE77;1101 1162 11B6;AE77;1101 1162 11B6;
+AE78;AE78;1101 1162 11B7;AE78;1101 1162 11B7;
+AE79;AE79;1101 1162 11B8;AE79;1101 1162 11B8;
+AE7A;AE7A;1101 1162 11B9;AE7A;1101 1162 11B9;
+AE7B;AE7B;1101 1162 11BA;AE7B;1101 1162 11BA;
+AE7C;AE7C;1101 1162 11BB;AE7C;1101 1162 11BB;
+AE7D;AE7D;1101 1162 11BC;AE7D;1101 1162 11BC;
+AE7E;AE7E;1101 1162 11BD;AE7E;1101 1162 11BD;
+AE7F;AE7F;1101 1162 11BE;AE7F;1101 1162 11BE;
+AE80;AE80;1101 1162 11BF;AE80;1101 1162 11BF;
+AE81;AE81;1101 1162 11C0;AE81;1101 1162 11C0;
+AE82;AE82;1101 1162 11C1;AE82;1101 1162 11C1;
+AE83;AE83;1101 1162 11C2;AE83;1101 1162 11C2;
+AE84;AE84;1101 1163;AE84;1101 1163;
+AE85;AE85;1101 1163 11A8;AE85;1101 1163 11A8;
+AE86;AE86;1101 1163 11A9;AE86;1101 1163 11A9;
+AE87;AE87;1101 1163 11AA;AE87;1101 1163 11AA;
+AE88;AE88;1101 1163 11AB;AE88;1101 1163 11AB;
+AE89;AE89;1101 1163 11AC;AE89;1101 1163 11AC;
+AE8A;AE8A;1101 1163 11AD;AE8A;1101 1163 11AD;
+AE8B;AE8B;1101 1163 11AE;AE8B;1101 1163 11AE;
+AE8C;AE8C;1101 1163 11AF;AE8C;1101 1163 11AF;
+AE8D;AE8D;1101 1163 11B0;AE8D;1101 1163 11B0;
+AE8E;AE8E;1101 1163 11B1;AE8E;1101 1163 11B1;
+AE8F;AE8F;1101 1163 11B2;AE8F;1101 1163 11B2;
+AE90;AE90;1101 1163 11B3;AE90;1101 1163 11B3;
+AE91;AE91;1101 1163 11B4;AE91;1101 1163 11B4;
+AE92;AE92;1101 1163 11B5;AE92;1101 1163 11B5;
+AE93;AE93;1101 1163 11B6;AE93;1101 1163 11B6;
+AE94;AE94;1101 1163 11B7;AE94;1101 1163 11B7;
+AE95;AE95;1101 1163 11B8;AE95;1101 1163 11B8;
+AE96;AE96;1101 1163 11B9;AE96;1101 1163 11B9;
+AE97;AE97;1101 1163 11BA;AE97;1101 1163 11BA;
+AE98;AE98;1101 1163 11BB;AE98;1101 1163 11BB;
+AE99;AE99;1101 1163 11BC;AE99;1101 1163 11BC;
+AE9A;AE9A;1101 1163 11BD;AE9A;1101 1163 11BD;
+AE9B;AE9B;1101 1163 11BE;AE9B;1101 1163 11BE;
+AE9C;AE9C;1101 1163 11BF;AE9C;1101 1163 11BF;
+AE9D;AE9D;1101 1163 11C0;AE9D;1101 1163 11C0;
+AE9E;AE9E;1101 1163 11C1;AE9E;1101 1163 11C1;
+AE9F;AE9F;1101 1163 11C2;AE9F;1101 1163 11C2;
+AEA0;AEA0;1101 1164;AEA0;1101 1164;
+AEA1;AEA1;1101 1164 11A8;AEA1;1101 1164 11A8;
+AEA2;AEA2;1101 1164 11A9;AEA2;1101 1164 11A9;
+AEA3;AEA3;1101 1164 11AA;AEA3;1101 1164 11AA;
+AEA4;AEA4;1101 1164 11AB;AEA4;1101 1164 11AB;
+AEA5;AEA5;1101 1164 11AC;AEA5;1101 1164 11AC;
+AEA6;AEA6;1101 1164 11AD;AEA6;1101 1164 11AD;
+AEA7;AEA7;1101 1164 11AE;AEA7;1101 1164 11AE;
+AEA8;AEA8;1101 1164 11AF;AEA8;1101 1164 11AF;
+AEA9;AEA9;1101 1164 11B0;AEA9;1101 1164 11B0;
+AEAA;AEAA;1101 1164 11B1;AEAA;1101 1164 11B1;
+AEAB;AEAB;1101 1164 11B2;AEAB;1101 1164 11B2;
+AEAC;AEAC;1101 1164 11B3;AEAC;1101 1164 11B3;
+AEAD;AEAD;1101 1164 11B4;AEAD;1101 1164 11B4;
+AEAE;AEAE;1101 1164 11B5;AEAE;1101 1164 11B5;
+AEAF;AEAF;1101 1164 11B6;AEAF;1101 1164 11B6;
+AEB0;AEB0;1101 1164 11B7;AEB0;1101 1164 11B7;
+AEB1;AEB1;1101 1164 11B8;AEB1;1101 1164 11B8;
+AEB2;AEB2;1101 1164 11B9;AEB2;1101 1164 11B9;
+AEB3;AEB3;1101 1164 11BA;AEB3;1101 1164 11BA;
+AEB4;AEB4;1101 1164 11BB;AEB4;1101 1164 11BB;
+AEB5;AEB5;1101 1164 11BC;AEB5;1101 1164 11BC;
+AEB6;AEB6;1101 1164 11BD;AEB6;1101 1164 11BD;
+AEB7;AEB7;1101 1164 11BE;AEB7;1101 1164 11BE;
+AEB8;AEB8;1101 1164 11BF;AEB8;1101 1164 11BF;
+AEB9;AEB9;1101 1164 11C0;AEB9;1101 1164 11C0;
+AEBA;AEBA;1101 1164 11C1;AEBA;1101 1164 11C1;
+AEBB;AEBB;1101 1164 11C2;AEBB;1101 1164 11C2;
+AEBC;AEBC;1101 1165;AEBC;1101 1165;
+AEBD;AEBD;1101 1165 11A8;AEBD;1101 1165 11A8;
+AEBE;AEBE;1101 1165 11A9;AEBE;1101 1165 11A9;
+AEBF;AEBF;1101 1165 11AA;AEBF;1101 1165 11AA;
+AEC0;AEC0;1101 1165 11AB;AEC0;1101 1165 11AB;
+AEC1;AEC1;1101 1165 11AC;AEC1;1101 1165 11AC;
+AEC2;AEC2;1101 1165 11AD;AEC2;1101 1165 11AD;
+AEC3;AEC3;1101 1165 11AE;AEC3;1101 1165 11AE;
+AEC4;AEC4;1101 1165 11AF;AEC4;1101 1165 11AF;
+AEC5;AEC5;1101 1165 11B0;AEC5;1101 1165 11B0;
+AEC6;AEC6;1101 1165 11B1;AEC6;1101 1165 11B1;
+AEC7;AEC7;1101 1165 11B2;AEC7;1101 1165 11B2;
+AEC8;AEC8;1101 1165 11B3;AEC8;1101 1165 11B3;
+AEC9;AEC9;1101 1165 11B4;AEC9;1101 1165 11B4;
+AECA;AECA;1101 1165 11B5;AECA;1101 1165 11B5;
+AECB;AECB;1101 1165 11B6;AECB;1101 1165 11B6;
+AECC;AECC;1101 1165 11B7;AECC;1101 1165 11B7;
+AECD;AECD;1101 1165 11B8;AECD;1101 1165 11B8;
+AECE;AECE;1101 1165 11B9;AECE;1101 1165 11B9;
+AECF;AECF;1101 1165 11BA;AECF;1101 1165 11BA;
+AED0;AED0;1101 1165 11BB;AED0;1101 1165 11BB;
+AED1;AED1;1101 1165 11BC;AED1;1101 1165 11BC;
+AED2;AED2;1101 1165 11BD;AED2;1101 1165 11BD;
+AED3;AED3;1101 1165 11BE;AED3;1101 1165 11BE;
+AED4;AED4;1101 1165 11BF;AED4;1101 1165 11BF;
+AED5;AED5;1101 1165 11C0;AED5;1101 1165 11C0;
+AED6;AED6;1101 1165 11C1;AED6;1101 1165 11C1;
+AED7;AED7;1101 1165 11C2;AED7;1101 1165 11C2;
+AED8;AED8;1101 1166;AED8;1101 1166;
+AED9;AED9;1101 1166 11A8;AED9;1101 1166 11A8;
+AEDA;AEDA;1101 1166 11A9;AEDA;1101 1166 11A9;
+AEDB;AEDB;1101 1166 11AA;AEDB;1101 1166 11AA;
+AEDC;AEDC;1101 1166 11AB;AEDC;1101 1166 11AB;
+AEDD;AEDD;1101 1166 11AC;AEDD;1101 1166 11AC;
+AEDE;AEDE;1101 1166 11AD;AEDE;1101 1166 11AD;
+AEDF;AEDF;1101 1166 11AE;AEDF;1101 1166 11AE;
+AEE0;AEE0;1101 1166 11AF;AEE0;1101 1166 11AF;
+AEE1;AEE1;1101 1166 11B0;AEE1;1101 1166 11B0;
+AEE2;AEE2;1101 1166 11B1;AEE2;1101 1166 11B1;
+AEE3;AEE3;1101 1166 11B2;AEE3;1101 1166 11B2;
+AEE4;AEE4;1101 1166 11B3;AEE4;1101 1166 11B3;
+AEE5;AEE5;1101 1166 11B4;AEE5;1101 1166 11B4;
+AEE6;AEE6;1101 1166 11B5;AEE6;1101 1166 11B5;
+AEE7;AEE7;1101 1166 11B6;AEE7;1101 1166 11B6;
+AEE8;AEE8;1101 1166 11B7;AEE8;1101 1166 11B7;
+AEE9;AEE9;1101 1166 11B8;AEE9;1101 1166 11B8;
+AEEA;AEEA;1101 1166 11B9;AEEA;1101 1166 11B9;
+AEEB;AEEB;1101 1166 11BA;AEEB;1101 1166 11BA;
+AEEC;AEEC;1101 1166 11BB;AEEC;1101 1166 11BB;
+AEED;AEED;1101 1166 11BC;AEED;1101 1166 11BC;
+AEEE;AEEE;1101 1166 11BD;AEEE;1101 1166 11BD;
+AEEF;AEEF;1101 1166 11BE;AEEF;1101 1166 11BE;
+AEF0;AEF0;1101 1166 11BF;AEF0;1101 1166 11BF;
+AEF1;AEF1;1101 1166 11C0;AEF1;1101 1166 11C0;
+AEF2;AEF2;1101 1166 11C1;AEF2;1101 1166 11C1;
+AEF3;AEF3;1101 1166 11C2;AEF3;1101 1166 11C2;
+AEF4;AEF4;1101 1167;AEF4;1101 1167;
+AEF5;AEF5;1101 1167 11A8;AEF5;1101 1167 11A8;
+AEF6;AEF6;1101 1167 11A9;AEF6;1101 1167 11A9;
+AEF7;AEF7;1101 1167 11AA;AEF7;1101 1167 11AA;
+AEF8;AEF8;1101 1167 11AB;AEF8;1101 1167 11AB;
+AEF9;AEF9;1101 1167 11AC;AEF9;1101 1167 11AC;
+AEFA;AEFA;1101 1167 11AD;AEFA;1101 1167 11AD;
+AEFB;AEFB;1101 1167 11AE;AEFB;1101 1167 11AE;
+AEFC;AEFC;1101 1167 11AF;AEFC;1101 1167 11AF;
+AEFD;AEFD;1101 1167 11B0;AEFD;1101 1167 11B0;
+AEFE;AEFE;1101 1167 11B1;AEFE;1101 1167 11B1;
+AEFF;AEFF;1101 1167 11B2;AEFF;1101 1167 11B2;
+AF00;AF00;1101 1167 11B3;AF00;1101 1167 11B3;
+AF01;AF01;1101 1167 11B4;AF01;1101 1167 11B4;
+AF02;AF02;1101 1167 11B5;AF02;1101 1167 11B5;
+AF03;AF03;1101 1167 11B6;AF03;1101 1167 11B6;
+AF04;AF04;1101 1167 11B7;AF04;1101 1167 11B7;
+AF05;AF05;1101 1167 11B8;AF05;1101 1167 11B8;
+AF06;AF06;1101 1167 11B9;AF06;1101 1167 11B9;
+AF07;AF07;1101 1167 11BA;AF07;1101 1167 11BA;
+AF08;AF08;1101 1167 11BB;AF08;1101 1167 11BB;
+AF09;AF09;1101 1167 11BC;AF09;1101 1167 11BC;
+AF0A;AF0A;1101 1167 11BD;AF0A;1101 1167 11BD;
+AF0B;AF0B;1101 1167 11BE;AF0B;1101 1167 11BE;
+AF0C;AF0C;1101 1167 11BF;AF0C;1101 1167 11BF;
+AF0D;AF0D;1101 1167 11C0;AF0D;1101 1167 11C0;
+AF0E;AF0E;1101 1167 11C1;AF0E;1101 1167 11C1;
+AF0F;AF0F;1101 1167 11C2;AF0F;1101 1167 11C2;
+AF10;AF10;1101 1168;AF10;1101 1168;
+AF11;AF11;1101 1168 11A8;AF11;1101 1168 11A8;
+AF12;AF12;1101 1168 11A9;AF12;1101 1168 11A9;
+AF13;AF13;1101 1168 11AA;AF13;1101 1168 11AA;
+AF14;AF14;1101 1168 11AB;AF14;1101 1168 11AB;
+AF15;AF15;1101 1168 11AC;AF15;1101 1168 11AC;
+AF16;AF16;1101 1168 11AD;AF16;1101 1168 11AD;
+AF17;AF17;1101 1168 11AE;AF17;1101 1168 11AE;
+AF18;AF18;1101 1168 11AF;AF18;1101 1168 11AF;
+AF19;AF19;1101 1168 11B0;AF19;1101 1168 11B0;
+AF1A;AF1A;1101 1168 11B1;AF1A;1101 1168 11B1;
+AF1B;AF1B;1101 1168 11B2;AF1B;1101 1168 11B2;
+AF1C;AF1C;1101 1168 11B3;AF1C;1101 1168 11B3;
+AF1D;AF1D;1101 1168 11B4;AF1D;1101 1168 11B4;
+AF1E;AF1E;1101 1168 11B5;AF1E;1101 1168 11B5;
+AF1F;AF1F;1101 1168 11B6;AF1F;1101 1168 11B6;
+AF20;AF20;1101 1168 11B7;AF20;1101 1168 11B7;
+AF21;AF21;1101 1168 11B8;AF21;1101 1168 11B8;
+AF22;AF22;1101 1168 11B9;AF22;1101 1168 11B9;
+AF23;AF23;1101 1168 11BA;AF23;1101 1168 11BA;
+AF24;AF24;1101 1168 11BB;AF24;1101 1168 11BB;
+AF25;AF25;1101 1168 11BC;AF25;1101 1168 11BC;
+AF26;AF26;1101 1168 11BD;AF26;1101 1168 11BD;
+AF27;AF27;1101 1168 11BE;AF27;1101 1168 11BE;
+AF28;AF28;1101 1168 11BF;AF28;1101 1168 11BF;
+AF29;AF29;1101 1168 11C0;AF29;1101 1168 11C0;
+AF2A;AF2A;1101 1168 11C1;AF2A;1101 1168 11C1;
+AF2B;AF2B;1101 1168 11C2;AF2B;1101 1168 11C2;
+AF2C;AF2C;1101 1169;AF2C;1101 1169;
+AF2D;AF2D;1101 1169 11A8;AF2D;1101 1169 11A8;
+AF2E;AF2E;1101 1169 11A9;AF2E;1101 1169 11A9;
+AF2F;AF2F;1101 1169 11AA;AF2F;1101 1169 11AA;
+AF30;AF30;1101 1169 11AB;AF30;1101 1169 11AB;
+AF31;AF31;1101 1169 11AC;AF31;1101 1169 11AC;
+AF32;AF32;1101 1169 11AD;AF32;1101 1169 11AD;
+AF33;AF33;1101 1169 11AE;AF33;1101 1169 11AE;
+AF34;AF34;1101 1169 11AF;AF34;1101 1169 11AF;
+AF35;AF35;1101 1169 11B0;AF35;1101 1169 11B0;
+AF36;AF36;1101 1169 11B1;AF36;1101 1169 11B1;
+AF37;AF37;1101 1169 11B2;AF37;1101 1169 11B2;
+AF38;AF38;1101 1169 11B3;AF38;1101 1169 11B3;
+AF39;AF39;1101 1169 11B4;AF39;1101 1169 11B4;
+AF3A;AF3A;1101 1169 11B5;AF3A;1101 1169 11B5;
+AF3B;AF3B;1101 1169 11B6;AF3B;1101 1169 11B6;
+AF3C;AF3C;1101 1169 11B7;AF3C;1101 1169 11B7;
+AF3D;AF3D;1101 1169 11B8;AF3D;1101 1169 11B8;
+AF3E;AF3E;1101 1169 11B9;AF3E;1101 1169 11B9;
+AF3F;AF3F;1101 1169 11BA;AF3F;1101 1169 11BA;
+AF40;AF40;1101 1169 11BB;AF40;1101 1169 11BB;
+AF41;AF41;1101 1169 11BC;AF41;1101 1169 11BC;
+AF42;AF42;1101 1169 11BD;AF42;1101 1169 11BD;
+AF43;AF43;1101 1169 11BE;AF43;1101 1169 11BE;
+AF44;AF44;1101 1169 11BF;AF44;1101 1169 11BF;
+AF45;AF45;1101 1169 11C0;AF45;1101 1169 11C0;
+AF46;AF46;1101 1169 11C1;AF46;1101 1169 11C1;
+AF47;AF47;1101 1169 11C2;AF47;1101 1169 11C2;
+AF48;AF48;1101 116A;AF48;1101 116A;
+AF49;AF49;1101 116A 11A8;AF49;1101 116A 11A8;
+AF4A;AF4A;1101 116A 11A9;AF4A;1101 116A 11A9;
+AF4B;AF4B;1101 116A 11AA;AF4B;1101 116A 11AA;
+AF4C;AF4C;1101 116A 11AB;AF4C;1101 116A 11AB;
+AF4D;AF4D;1101 116A 11AC;AF4D;1101 116A 11AC;
+AF4E;AF4E;1101 116A 11AD;AF4E;1101 116A 11AD;
+AF4F;AF4F;1101 116A 11AE;AF4F;1101 116A 11AE;
+AF50;AF50;1101 116A 11AF;AF50;1101 116A 11AF;
+AF51;AF51;1101 116A 11B0;AF51;1101 116A 11B0;
+AF52;AF52;1101 116A 11B1;AF52;1101 116A 11B1;
+AF53;AF53;1101 116A 11B2;AF53;1101 116A 11B2;
+AF54;AF54;1101 116A 11B3;AF54;1101 116A 11B3;
+AF55;AF55;1101 116A 11B4;AF55;1101 116A 11B4;
+AF56;AF56;1101 116A 11B5;AF56;1101 116A 11B5;
+AF57;AF57;1101 116A 11B6;AF57;1101 116A 11B6;
+AF58;AF58;1101 116A 11B7;AF58;1101 116A 11B7;
+AF59;AF59;1101 116A 11B8;AF59;1101 116A 11B8;
+AF5A;AF5A;1101 116A 11B9;AF5A;1101 116A 11B9;
+AF5B;AF5B;1101 116A 11BA;AF5B;1101 116A 11BA;
+AF5C;AF5C;1101 116A 11BB;AF5C;1101 116A 11BB;
+AF5D;AF5D;1101 116A 11BC;AF5D;1101 116A 11BC;
+AF5E;AF5E;1101 116A 11BD;AF5E;1101 116A 11BD;
+AF5F;AF5F;1101 116A 11BE;AF5F;1101 116A 11BE;
+AF60;AF60;1101 116A 11BF;AF60;1101 116A 11BF;
+AF61;AF61;1101 116A 11C0;AF61;1101 116A 11C0;
+AF62;AF62;1101 116A 11C1;AF62;1101 116A 11C1;
+AF63;AF63;1101 116A 11C2;AF63;1101 116A 11C2;
+AF64;AF64;1101 116B;AF64;1101 116B;
+AF65;AF65;1101 116B 11A8;AF65;1101 116B 11A8;
+AF66;AF66;1101 116B 11A9;AF66;1101 116B 11A9;
+AF67;AF67;1101 116B 11AA;AF67;1101 116B 11AA;
+AF68;AF68;1101 116B 11AB;AF68;1101 116B 11AB;
+AF69;AF69;1101 116B 11AC;AF69;1101 116B 11AC;
+AF6A;AF6A;1101 116B 11AD;AF6A;1101 116B 11AD;
+AF6B;AF6B;1101 116B 11AE;AF6B;1101 116B 11AE;
+AF6C;AF6C;1101 116B 11AF;AF6C;1101 116B 11AF;
+AF6D;AF6D;1101 116B 11B0;AF6D;1101 116B 11B0;
+AF6E;AF6E;1101 116B 11B1;AF6E;1101 116B 11B1;
+AF6F;AF6F;1101 116B 11B2;AF6F;1101 116B 11B2;
+AF70;AF70;1101 116B 11B3;AF70;1101 116B 11B3;
+AF71;AF71;1101 116B 11B4;AF71;1101 116B 11B4;
+AF72;AF72;1101 116B 11B5;AF72;1101 116B 11B5;
+AF73;AF73;1101 116B 11B6;AF73;1101 116B 11B6;
+AF74;AF74;1101 116B 11B7;AF74;1101 116B 11B7;
+AF75;AF75;1101 116B 11B8;AF75;1101 116B 11B8;
+AF76;AF76;1101 116B 11B9;AF76;1101 116B 11B9;
+AF77;AF77;1101 116B 11BA;AF77;1101 116B 11BA;
+AF78;AF78;1101 116B 11BB;AF78;1101 116B 11BB;
+AF79;AF79;1101 116B 11BC;AF79;1101 116B 11BC;
+AF7A;AF7A;1101 116B 11BD;AF7A;1101 116B 11BD;
+AF7B;AF7B;1101 116B 11BE;AF7B;1101 116B 11BE;
+AF7C;AF7C;1101 116B 11BF;AF7C;1101 116B 11BF;
+AF7D;AF7D;1101 116B 11C0;AF7D;1101 116B 11C0;
+AF7E;AF7E;1101 116B 11C1;AF7E;1101 116B 11C1;
+AF7F;AF7F;1101 116B 11C2;AF7F;1101 116B 11C2;
+AF80;AF80;1101 116C;AF80;1101 116C;
+AF81;AF81;1101 116C 11A8;AF81;1101 116C 11A8;
+AF82;AF82;1101 116C 11A9;AF82;1101 116C 11A9;
+AF83;AF83;1101 116C 11AA;AF83;1101 116C 11AA;
+AF84;AF84;1101 116C 11AB;AF84;1101 116C 11AB;
+AF85;AF85;1101 116C 11AC;AF85;1101 116C 11AC;
+AF86;AF86;1101 116C 11AD;AF86;1101 116C 11AD;
+AF87;AF87;1101 116C 11AE;AF87;1101 116C 11AE;
+AF88;AF88;1101 116C 11AF;AF88;1101 116C 11AF;
+AF89;AF89;1101 116C 11B0;AF89;1101 116C 11B0;
+AF8A;AF8A;1101 116C 11B1;AF8A;1101 116C 11B1;
+AF8B;AF8B;1101 116C 11B2;AF8B;1101 116C 11B2;
+AF8C;AF8C;1101 116C 11B3;AF8C;1101 116C 11B3;
+AF8D;AF8D;1101 116C 11B4;AF8D;1101 116C 11B4;
+AF8E;AF8E;1101 116C 11B5;AF8E;1101 116C 11B5;
+AF8F;AF8F;1101 116C 11B6;AF8F;1101 116C 11B6;
+AF90;AF90;1101 116C 11B7;AF90;1101 116C 11B7;
+AF91;AF91;1101 116C 11B8;AF91;1101 116C 11B8;
+AF92;AF92;1101 116C 11B9;AF92;1101 116C 11B9;
+AF93;AF93;1101 116C 11BA;AF93;1101 116C 11BA;
+AF94;AF94;1101 116C 11BB;AF94;1101 116C 11BB;
+AF95;AF95;1101 116C 11BC;AF95;1101 116C 11BC;
+AF96;AF96;1101 116C 11BD;AF96;1101 116C 11BD;
+AF97;AF97;1101 116C 11BE;AF97;1101 116C 11BE;
+AF98;AF98;1101 116C 11BF;AF98;1101 116C 11BF;
+AF99;AF99;1101 116C 11C0;AF99;1101 116C 11C0;
+AF9A;AF9A;1101 116C 11C1;AF9A;1101 116C 11C1;
+AF9B;AF9B;1101 116C 11C2;AF9B;1101 116C 11C2;
+AF9C;AF9C;1101 116D;AF9C;1101 116D;
+AF9D;AF9D;1101 116D 11A8;AF9D;1101 116D 11A8;
+AF9E;AF9E;1101 116D 11A9;AF9E;1101 116D 11A9;
+AF9F;AF9F;1101 116D 11AA;AF9F;1101 116D 11AA;
+AFA0;AFA0;1101 116D 11AB;AFA0;1101 116D 11AB;
+AFA1;AFA1;1101 116D 11AC;AFA1;1101 116D 11AC;
+AFA2;AFA2;1101 116D 11AD;AFA2;1101 116D 11AD;
+AFA3;AFA3;1101 116D 11AE;AFA3;1101 116D 11AE;
+AFA4;AFA4;1101 116D 11AF;AFA4;1101 116D 11AF;
+AFA5;AFA5;1101 116D 11B0;AFA5;1101 116D 11B0;
+AFA6;AFA6;1101 116D 11B1;AFA6;1101 116D 11B1;
+AFA7;AFA7;1101 116D 11B2;AFA7;1101 116D 11B2;
+AFA8;AFA8;1101 116D 11B3;AFA8;1101 116D 11B3;
+AFA9;AFA9;1101 116D 11B4;AFA9;1101 116D 11B4;
+AFAA;AFAA;1101 116D 11B5;AFAA;1101 116D 11B5;
+AFAB;AFAB;1101 116D 11B6;AFAB;1101 116D 11B6;
+AFAC;AFAC;1101 116D 11B7;AFAC;1101 116D 11B7;
+AFAD;AFAD;1101 116D 11B8;AFAD;1101 116D 11B8;
+AFAE;AFAE;1101 116D 11B9;AFAE;1101 116D 11B9;
+AFAF;AFAF;1101 116D 11BA;AFAF;1101 116D 11BA;
+AFB0;AFB0;1101 116D 11BB;AFB0;1101 116D 11BB;
+AFB1;AFB1;1101 116D 11BC;AFB1;1101 116D 11BC;
+AFB2;AFB2;1101 116D 11BD;AFB2;1101 116D 11BD;
+AFB3;AFB3;1101 116D 11BE;AFB3;1101 116D 11BE;
+AFB4;AFB4;1101 116D 11BF;AFB4;1101 116D 11BF;
+AFB5;AFB5;1101 116D 11C0;AFB5;1101 116D 11C0;
+AFB6;AFB6;1101 116D 11C1;AFB6;1101 116D 11C1;
+AFB7;AFB7;1101 116D 11C2;AFB7;1101 116D 11C2;
+AFB8;AFB8;1101 116E;AFB8;1101 116E;
+AFB9;AFB9;1101 116E 11A8;AFB9;1101 116E 11A8;
+AFBA;AFBA;1101 116E 11A9;AFBA;1101 116E 11A9;
+AFBB;AFBB;1101 116E 11AA;AFBB;1101 116E 11AA;
+AFBC;AFBC;1101 116E 11AB;AFBC;1101 116E 11AB;
+AFBD;AFBD;1101 116E 11AC;AFBD;1101 116E 11AC;
+AFBE;AFBE;1101 116E 11AD;AFBE;1101 116E 11AD;
+AFBF;AFBF;1101 116E 11AE;AFBF;1101 116E 11AE;
+AFC0;AFC0;1101 116E 11AF;AFC0;1101 116E 11AF;
+AFC1;AFC1;1101 116E 11B0;AFC1;1101 116E 11B0;
+AFC2;AFC2;1101 116E 11B1;AFC2;1101 116E 11B1;
+AFC3;AFC3;1101 116E 11B2;AFC3;1101 116E 11B2;
+AFC4;AFC4;1101 116E 11B3;AFC4;1101 116E 11B3;
+AFC5;AFC5;1101 116E 11B4;AFC5;1101 116E 11B4;
+AFC6;AFC6;1101 116E 11B5;AFC6;1101 116E 11B5;
+AFC7;AFC7;1101 116E 11B6;AFC7;1101 116E 11B6;
+AFC8;AFC8;1101 116E 11B7;AFC8;1101 116E 11B7;
+AFC9;AFC9;1101 116E 11B8;AFC9;1101 116E 11B8;
+AFCA;AFCA;1101 116E 11B9;AFCA;1101 116E 11B9;
+AFCB;AFCB;1101 116E 11BA;AFCB;1101 116E 11BA;
+AFCC;AFCC;1101 116E 11BB;AFCC;1101 116E 11BB;
+AFCD;AFCD;1101 116E 11BC;AFCD;1101 116E 11BC;
+AFCE;AFCE;1101 116E 11BD;AFCE;1101 116E 11BD;
+AFCF;AFCF;1101 116E 11BE;AFCF;1101 116E 11BE;
+AFD0;AFD0;1101 116E 11BF;AFD0;1101 116E 11BF;
+AFD1;AFD1;1101 116E 11C0;AFD1;1101 116E 11C0;
+AFD2;AFD2;1101 116E 11C1;AFD2;1101 116E 11C1;
+AFD3;AFD3;1101 116E 11C2;AFD3;1101 116E 11C2;
+AFD4;AFD4;1101 116F;AFD4;1101 116F;
+AFD5;AFD5;1101 116F 11A8;AFD5;1101 116F 11A8;
+AFD6;AFD6;1101 116F 11A9;AFD6;1101 116F 11A9;
+AFD7;AFD7;1101 116F 11AA;AFD7;1101 116F 11AA;
+AFD8;AFD8;1101 116F 11AB;AFD8;1101 116F 11AB;
+AFD9;AFD9;1101 116F 11AC;AFD9;1101 116F 11AC;
+AFDA;AFDA;1101 116F 11AD;AFDA;1101 116F 11AD;
+AFDB;AFDB;1101 116F 11AE;AFDB;1101 116F 11AE;
+AFDC;AFDC;1101 116F 11AF;AFDC;1101 116F 11AF;
+AFDD;AFDD;1101 116F 11B0;AFDD;1101 116F 11B0;
+AFDE;AFDE;1101 116F 11B1;AFDE;1101 116F 11B1;
+AFDF;AFDF;1101 116F 11B2;AFDF;1101 116F 11B2;
+AFE0;AFE0;1101 116F 11B3;AFE0;1101 116F 11B3;
+AFE1;AFE1;1101 116F 11B4;AFE1;1101 116F 11B4;
+AFE2;AFE2;1101 116F 11B5;AFE2;1101 116F 11B5;
+AFE3;AFE3;1101 116F 11B6;AFE3;1101 116F 11B6;
+AFE4;AFE4;1101 116F 11B7;AFE4;1101 116F 11B7;
+AFE5;AFE5;1101 116F 11B8;AFE5;1101 116F 11B8;
+AFE6;AFE6;1101 116F 11B9;AFE6;1101 116F 11B9;
+AFE7;AFE7;1101 116F 11BA;AFE7;1101 116F 11BA;
+AFE8;AFE8;1101 116F 11BB;AFE8;1101 116F 11BB;
+AFE9;AFE9;1101 116F 11BC;AFE9;1101 116F 11BC;
+AFEA;AFEA;1101 116F 11BD;AFEA;1101 116F 11BD;
+AFEB;AFEB;1101 116F 11BE;AFEB;1101 116F 11BE;
+AFEC;AFEC;1101 116F 11BF;AFEC;1101 116F 11BF;
+AFED;AFED;1101 116F 11C0;AFED;1101 116F 11C0;
+AFEE;AFEE;1101 116F 11C1;AFEE;1101 116F 11C1;
+AFEF;AFEF;1101 116F 11C2;AFEF;1101 116F 11C2;
+AFF0;AFF0;1101 1170;AFF0;1101 1170;
+AFF1;AFF1;1101 1170 11A8;AFF1;1101 1170 11A8;
+AFF2;AFF2;1101 1170 11A9;AFF2;1101 1170 11A9;
+AFF3;AFF3;1101 1170 11AA;AFF3;1101 1170 11AA;
+AFF4;AFF4;1101 1170 11AB;AFF4;1101 1170 11AB;
+AFF5;AFF5;1101 1170 11AC;AFF5;1101 1170 11AC;
+AFF6;AFF6;1101 1170 11AD;AFF6;1101 1170 11AD;
+AFF7;AFF7;1101 1170 11AE;AFF7;1101 1170 11AE;
+AFF8;AFF8;1101 1170 11AF;AFF8;1101 1170 11AF;
+AFF9;AFF9;1101 1170 11B0;AFF9;1101 1170 11B0;
+AFFA;AFFA;1101 1170 11B1;AFFA;1101 1170 11B1;
+AFFB;AFFB;1101 1170 11B2;AFFB;1101 1170 11B2;
+AFFC;AFFC;1101 1170 11B3;AFFC;1101 1170 11B3;
+AFFD;AFFD;1101 1170 11B4;AFFD;1101 1170 11B4;
+AFFE;AFFE;1101 1170 11B5;AFFE;1101 1170 11B5;
+AFFF;AFFF;1101 1170 11B6;AFFF;1101 1170 11B6;
+B000;B000;1101 1170 11B7;B000;1101 1170 11B7;
+B001;B001;1101 1170 11B8;B001;1101 1170 11B8;
+B002;B002;1101 1170 11B9;B002;1101 1170 11B9;
+B003;B003;1101 1170 11BA;B003;1101 1170 11BA;
+B004;B004;1101 1170 11BB;B004;1101 1170 11BB;
+B005;B005;1101 1170 11BC;B005;1101 1170 11BC;
+B006;B006;1101 1170 11BD;B006;1101 1170 11BD;
+B007;B007;1101 1170 11BE;B007;1101 1170 11BE;
+B008;B008;1101 1170 11BF;B008;1101 1170 11BF;
+B009;B009;1101 1170 11C0;B009;1101 1170 11C0;
+B00A;B00A;1101 1170 11C1;B00A;1101 1170 11C1;
+B00B;B00B;1101 1170 11C2;B00B;1101 1170 11C2;
+B00C;B00C;1101 1171;B00C;1101 1171;
+B00D;B00D;1101 1171 11A8;B00D;1101 1171 11A8;
+B00E;B00E;1101 1171 11A9;B00E;1101 1171 11A9;
+B00F;B00F;1101 1171 11AA;B00F;1101 1171 11AA;
+B010;B010;1101 1171 11AB;B010;1101 1171 11AB;
+B011;B011;1101 1171 11AC;B011;1101 1171 11AC;
+B012;B012;1101 1171 11AD;B012;1101 1171 11AD;
+B013;B013;1101 1171 11AE;B013;1101 1171 11AE;
+B014;B014;1101 1171 11AF;B014;1101 1171 11AF;
+B015;B015;1101 1171 11B0;B015;1101 1171 11B0;
+B016;B016;1101 1171 11B1;B016;1101 1171 11B1;
+B017;B017;1101 1171 11B2;B017;1101 1171 11B2;
+B018;B018;1101 1171 11B3;B018;1101 1171 11B3;
+B019;B019;1101 1171 11B4;B019;1101 1171 11B4;
+B01A;B01A;1101 1171 11B5;B01A;1101 1171 11B5;
+B01B;B01B;1101 1171 11B6;B01B;1101 1171 11B6;
+B01C;B01C;1101 1171 11B7;B01C;1101 1171 11B7;
+B01D;B01D;1101 1171 11B8;B01D;1101 1171 11B8;
+B01E;B01E;1101 1171 11B9;B01E;1101 1171 11B9;
+B01F;B01F;1101 1171 11BA;B01F;1101 1171 11BA;
+B020;B020;1101 1171 11BB;B020;1101 1171 11BB;
+B021;B021;1101 1171 11BC;B021;1101 1171 11BC;
+B022;B022;1101 1171 11BD;B022;1101 1171 11BD;
+B023;B023;1101 1171 11BE;B023;1101 1171 11BE;
+B024;B024;1101 1171 11BF;B024;1101 1171 11BF;
+B025;B025;1101 1171 11C0;B025;1101 1171 11C0;
+B026;B026;1101 1171 11C1;B026;1101 1171 11C1;
+B027;B027;1101 1171 11C2;B027;1101 1171 11C2;
+B028;B028;1101 1172;B028;1101 1172;
+B029;B029;1101 1172 11A8;B029;1101 1172 11A8;
+B02A;B02A;1101 1172 11A9;B02A;1101 1172 11A9;
+B02B;B02B;1101 1172 11AA;B02B;1101 1172 11AA;
+B02C;B02C;1101 1172 11AB;B02C;1101 1172 11AB;
+B02D;B02D;1101 1172 11AC;B02D;1101 1172 11AC;
+B02E;B02E;1101 1172 11AD;B02E;1101 1172 11AD;
+B02F;B02F;1101 1172 11AE;B02F;1101 1172 11AE;
+B030;B030;1101 1172 11AF;B030;1101 1172 11AF;
+B031;B031;1101 1172 11B0;B031;1101 1172 11B0;
+B032;B032;1101 1172 11B1;B032;1101 1172 11B1;
+B033;B033;1101 1172 11B2;B033;1101 1172 11B2;
+B034;B034;1101 1172 11B3;B034;1101 1172 11B3;
+B035;B035;1101 1172 11B4;B035;1101 1172 11B4;
+B036;B036;1101 1172 11B5;B036;1101 1172 11B5;
+B037;B037;1101 1172 11B6;B037;1101 1172 11B6;
+B038;B038;1101 1172 11B7;B038;1101 1172 11B7;
+B039;B039;1101 1172 11B8;B039;1101 1172 11B8;
+B03A;B03A;1101 1172 11B9;B03A;1101 1172 11B9;
+B03B;B03B;1101 1172 11BA;B03B;1101 1172 11BA;
+B03C;B03C;1101 1172 11BB;B03C;1101 1172 11BB;
+B03D;B03D;1101 1172 11BC;B03D;1101 1172 11BC;
+B03E;B03E;1101 1172 11BD;B03E;1101 1172 11BD;
+B03F;B03F;1101 1172 11BE;B03F;1101 1172 11BE;
+B040;B040;1101 1172 11BF;B040;1101 1172 11BF;
+B041;B041;1101 1172 11C0;B041;1101 1172 11C0;
+B042;B042;1101 1172 11C1;B042;1101 1172 11C1;
+B043;B043;1101 1172 11C2;B043;1101 1172 11C2;
+B044;B044;1101 1173;B044;1101 1173;
+B045;B045;1101 1173 11A8;B045;1101 1173 11A8;
+B046;B046;1101 1173 11A9;B046;1101 1173 11A9;
+B047;B047;1101 1173 11AA;B047;1101 1173 11AA;
+B048;B048;1101 1173 11AB;B048;1101 1173 11AB;
+B049;B049;1101 1173 11AC;B049;1101 1173 11AC;
+B04A;B04A;1101 1173 11AD;B04A;1101 1173 11AD;
+B04B;B04B;1101 1173 11AE;B04B;1101 1173 11AE;
+B04C;B04C;1101 1173 11AF;B04C;1101 1173 11AF;
+B04D;B04D;1101 1173 11B0;B04D;1101 1173 11B0;
+B04E;B04E;1101 1173 11B1;B04E;1101 1173 11B1;
+B04F;B04F;1101 1173 11B2;B04F;1101 1173 11B2;
+B050;B050;1101 1173 11B3;B050;1101 1173 11B3;
+B051;B051;1101 1173 11B4;B051;1101 1173 11B4;
+B052;B052;1101 1173 11B5;B052;1101 1173 11B5;
+B053;B053;1101 1173 11B6;B053;1101 1173 11B6;
+B054;B054;1101 1173 11B7;B054;1101 1173 11B7;
+B055;B055;1101 1173 11B8;B055;1101 1173 11B8;
+B056;B056;1101 1173 11B9;B056;1101 1173 11B9;
+B057;B057;1101 1173 11BA;B057;1101 1173 11BA;
+B058;B058;1101 1173 11BB;B058;1101 1173 11BB;
+B059;B059;1101 1173 11BC;B059;1101 1173 11BC;
+B05A;B05A;1101 1173 11BD;B05A;1101 1173 11BD;
+B05B;B05B;1101 1173 11BE;B05B;1101 1173 11BE;
+B05C;B05C;1101 1173 11BF;B05C;1101 1173 11BF;
+B05D;B05D;1101 1173 11C0;B05D;1101 1173 11C0;
+B05E;B05E;1101 1173 11C1;B05E;1101 1173 11C1;
+B05F;B05F;1101 1173 11C2;B05F;1101 1173 11C2;
+B060;B060;1101 1174;B060;1101 1174;
+B061;B061;1101 1174 11A8;B061;1101 1174 11A8;
+B062;B062;1101 1174 11A9;B062;1101 1174 11A9;
+B063;B063;1101 1174 11AA;B063;1101 1174 11AA;
+B064;B064;1101 1174 11AB;B064;1101 1174 11AB;
+B065;B065;1101 1174 11AC;B065;1101 1174 11AC;
+B066;B066;1101 1174 11AD;B066;1101 1174 11AD;
+B067;B067;1101 1174 11AE;B067;1101 1174 11AE;
+B068;B068;1101 1174 11AF;B068;1101 1174 11AF;
+B069;B069;1101 1174 11B0;B069;1101 1174 11B0;
+B06A;B06A;1101 1174 11B1;B06A;1101 1174 11B1;
+B06B;B06B;1101 1174 11B2;B06B;1101 1174 11B2;
+B06C;B06C;1101 1174 11B3;B06C;1101 1174 11B3;
+B06D;B06D;1101 1174 11B4;B06D;1101 1174 11B4;
+B06E;B06E;1101 1174 11B5;B06E;1101 1174 11B5;
+B06F;B06F;1101 1174 11B6;B06F;1101 1174 11B6;
+B070;B070;1101 1174 11B7;B070;1101 1174 11B7;
+B071;B071;1101 1174 11B8;B071;1101 1174 11B8;
+B072;B072;1101 1174 11B9;B072;1101 1174 11B9;
+B073;B073;1101 1174 11BA;B073;1101 1174 11BA;
+B074;B074;1101 1174 11BB;B074;1101 1174 11BB;
+B075;B075;1101 1174 11BC;B075;1101 1174 11BC;
+B076;B076;1101 1174 11BD;B076;1101 1174 11BD;
+B077;B077;1101 1174 11BE;B077;1101 1174 11BE;
+B078;B078;1101 1174 11BF;B078;1101 1174 11BF;
+B079;B079;1101 1174 11C0;B079;1101 1174 11C0;
+B07A;B07A;1101 1174 11C1;B07A;1101 1174 11C1;
+B07B;B07B;1101 1174 11C2;B07B;1101 1174 11C2;
+B07C;B07C;1101 1175;B07C;1101 1175;
+B07D;B07D;1101 1175 11A8;B07D;1101 1175 11A8;
+B07E;B07E;1101 1175 11A9;B07E;1101 1175 11A9;
+B07F;B07F;1101 1175 11AA;B07F;1101 1175 11AA;
+B080;B080;1101 1175 11AB;B080;1101 1175 11AB;
+B081;B081;1101 1175 11AC;B081;1101 1175 11AC;
+B082;B082;1101 1175 11AD;B082;1101 1175 11AD;
+B083;B083;1101 1175 11AE;B083;1101 1175 11AE;
+B084;B084;1101 1175 11AF;B084;1101 1175 11AF;
+B085;B085;1101 1175 11B0;B085;1101 1175 11B0;
+B086;B086;1101 1175 11B1;B086;1101 1175 11B1;
+B087;B087;1101 1175 11B2;B087;1101 1175 11B2;
+B088;B088;1101 1175 11B3;B088;1101 1175 11B3;
+B089;B089;1101 1175 11B4;B089;1101 1175 11B4;
+B08A;B08A;1101 1175 11B5;B08A;1101 1175 11B5;
+B08B;B08B;1101 1175 11B6;B08B;1101 1175 11B6;
+B08C;B08C;1101 1175 11B7;B08C;1101 1175 11B7;
+B08D;B08D;1101 1175 11B8;B08D;1101 1175 11B8;
+B08E;B08E;1101 1175 11B9;B08E;1101 1175 11B9;
+B08F;B08F;1101 1175 11BA;B08F;1101 1175 11BA;
+B090;B090;1101 1175 11BB;B090;1101 1175 11BB;
+B091;B091;1101 1175 11BC;B091;1101 1175 11BC;
+B092;B092;1101 1175 11BD;B092;1101 1175 11BD;
+B093;B093;1101 1175 11BE;B093;1101 1175 11BE;
+B094;B094;1101 1175 11BF;B094;1101 1175 11BF;
+B095;B095;1101 1175 11C0;B095;1101 1175 11C0;
+B096;B096;1101 1175 11C1;B096;1101 1175 11C1;
+B097;B097;1101 1175 11C2;B097;1101 1175 11C2;
+B098;B098;1102 1161;B098;1102 1161;
+B099;B099;1102 1161 11A8;B099;1102 1161 11A8;
+B09A;B09A;1102 1161 11A9;B09A;1102 1161 11A9;
+B09B;B09B;1102 1161 11AA;B09B;1102 1161 11AA;
+B09C;B09C;1102 1161 11AB;B09C;1102 1161 11AB;
+B09D;B09D;1102 1161 11AC;B09D;1102 1161 11AC;
+B09E;B09E;1102 1161 11AD;B09E;1102 1161 11AD;
+B09F;B09F;1102 1161 11AE;B09F;1102 1161 11AE;
+B0A0;B0A0;1102 1161 11AF;B0A0;1102 1161 11AF;
+B0A1;B0A1;1102 1161 11B0;B0A1;1102 1161 11B0;
+B0A2;B0A2;1102 1161 11B1;B0A2;1102 1161 11B1;
+B0A3;B0A3;1102 1161 11B2;B0A3;1102 1161 11B2;
+B0A4;B0A4;1102 1161 11B3;B0A4;1102 1161 11B3;
+B0A5;B0A5;1102 1161 11B4;B0A5;1102 1161 11B4;
+B0A6;B0A6;1102 1161 11B5;B0A6;1102 1161 11B5;
+B0A7;B0A7;1102 1161 11B6;B0A7;1102 1161 11B6;
+B0A8;B0A8;1102 1161 11B7;B0A8;1102 1161 11B7;
+B0A9;B0A9;1102 1161 11B8;B0A9;1102 1161 11B8;
+B0AA;B0AA;1102 1161 11B9;B0AA;1102 1161 11B9;
+B0AB;B0AB;1102 1161 11BA;B0AB;1102 1161 11BA;
+B0AC;B0AC;1102 1161 11BB;B0AC;1102 1161 11BB;
+B0AD;B0AD;1102 1161 11BC;B0AD;1102 1161 11BC;
+B0AE;B0AE;1102 1161 11BD;B0AE;1102 1161 11BD;
+B0AF;B0AF;1102 1161 11BE;B0AF;1102 1161 11BE;
+B0B0;B0B0;1102 1161 11BF;B0B0;1102 1161 11BF;
+B0B1;B0B1;1102 1161 11C0;B0B1;1102 1161 11C0;
+B0B2;B0B2;1102 1161 11C1;B0B2;1102 1161 11C1;
+B0B3;B0B3;1102 1161 11C2;B0B3;1102 1161 11C2;
+B0B4;B0B4;1102 1162;B0B4;1102 1162;
+B0B5;B0B5;1102 1162 11A8;B0B5;1102 1162 11A8;
+B0B6;B0B6;1102 1162 11A9;B0B6;1102 1162 11A9;
+B0B7;B0B7;1102 1162 11AA;B0B7;1102 1162 11AA;
+B0B8;B0B8;1102 1162 11AB;B0B8;1102 1162 11AB;
+B0B9;B0B9;1102 1162 11AC;B0B9;1102 1162 11AC;
+B0BA;B0BA;1102 1162 11AD;B0BA;1102 1162 11AD;
+B0BB;B0BB;1102 1162 11AE;B0BB;1102 1162 11AE;
+B0BC;B0BC;1102 1162 11AF;B0BC;1102 1162 11AF;
+B0BD;B0BD;1102 1162 11B0;B0BD;1102 1162 11B0;
+B0BE;B0BE;1102 1162 11B1;B0BE;1102 1162 11B1;
+B0BF;B0BF;1102 1162 11B2;B0BF;1102 1162 11B2;
+B0C0;B0C0;1102 1162 11B3;B0C0;1102 1162 11B3;
+B0C1;B0C1;1102 1162 11B4;B0C1;1102 1162 11B4;
+B0C2;B0C2;1102 1162 11B5;B0C2;1102 1162 11B5;
+B0C3;B0C3;1102 1162 11B6;B0C3;1102 1162 11B6;
+B0C4;B0C4;1102 1162 11B7;B0C4;1102 1162 11B7;
+B0C5;B0C5;1102 1162 11B8;B0C5;1102 1162 11B8;
+B0C6;B0C6;1102 1162 11B9;B0C6;1102 1162 11B9;
+B0C7;B0C7;1102 1162 11BA;B0C7;1102 1162 11BA;
+B0C8;B0C8;1102 1162 11BB;B0C8;1102 1162 11BB;
+B0C9;B0C9;1102 1162 11BC;B0C9;1102 1162 11BC;
+B0CA;B0CA;1102 1162 11BD;B0CA;1102 1162 11BD;
+B0CB;B0CB;1102 1162 11BE;B0CB;1102 1162 11BE;
+B0CC;B0CC;1102 1162 11BF;B0CC;1102 1162 11BF;
+B0CD;B0CD;1102 1162 11C0;B0CD;1102 1162 11C0;
+B0CE;B0CE;1102 1162 11C1;B0CE;1102 1162 11C1;
+B0CF;B0CF;1102 1162 11C2;B0CF;1102 1162 11C2;
+B0D0;B0D0;1102 1163;B0D0;1102 1163;
+B0D1;B0D1;1102 1163 11A8;B0D1;1102 1163 11A8;
+B0D2;B0D2;1102 1163 11A9;B0D2;1102 1163 11A9;
+B0D3;B0D3;1102 1163 11AA;B0D3;1102 1163 11AA;
+B0D4;B0D4;1102 1163 11AB;B0D4;1102 1163 11AB;
+B0D5;B0D5;1102 1163 11AC;B0D5;1102 1163 11AC;
+B0D6;B0D6;1102 1163 11AD;B0D6;1102 1163 11AD;
+B0D7;B0D7;1102 1163 11AE;B0D7;1102 1163 11AE;
+B0D8;B0D8;1102 1163 11AF;B0D8;1102 1163 11AF;
+B0D9;B0D9;1102 1163 11B0;B0D9;1102 1163 11B0;
+B0DA;B0DA;1102 1163 11B1;B0DA;1102 1163 11B1;
+B0DB;B0DB;1102 1163 11B2;B0DB;1102 1163 11B2;
+B0DC;B0DC;1102 1163 11B3;B0DC;1102 1163 11B3;
+B0DD;B0DD;1102 1163 11B4;B0DD;1102 1163 11B4;
+B0DE;B0DE;1102 1163 11B5;B0DE;1102 1163 11B5;
+B0DF;B0DF;1102 1163 11B6;B0DF;1102 1163 11B6;
+B0E0;B0E0;1102 1163 11B7;B0E0;1102 1163 11B7;
+B0E1;B0E1;1102 1163 11B8;B0E1;1102 1163 11B8;
+B0E2;B0E2;1102 1163 11B9;B0E2;1102 1163 11B9;
+B0E3;B0E3;1102 1163 11BA;B0E3;1102 1163 11BA;
+B0E4;B0E4;1102 1163 11BB;B0E4;1102 1163 11BB;
+B0E5;B0E5;1102 1163 11BC;B0E5;1102 1163 11BC;
+B0E6;B0E6;1102 1163 11BD;B0E6;1102 1163 11BD;
+B0E7;B0E7;1102 1163 11BE;B0E7;1102 1163 11BE;
+B0E8;B0E8;1102 1163 11BF;B0E8;1102 1163 11BF;
+B0E9;B0E9;1102 1163 11C0;B0E9;1102 1163 11C0;
+B0EA;B0EA;1102 1163 11C1;B0EA;1102 1163 11C1;
+B0EB;B0EB;1102 1163 11C2;B0EB;1102 1163 11C2;
+B0EC;B0EC;1102 1164;B0EC;1102 1164;
+B0ED;B0ED;1102 1164 11A8;B0ED;1102 1164 11A8;
+B0EE;B0EE;1102 1164 11A9;B0EE;1102 1164 11A9;
+B0EF;B0EF;1102 1164 11AA;B0EF;1102 1164 11AA;
+B0F0;B0F0;1102 1164 11AB;B0F0;1102 1164 11AB;
+B0F1;B0F1;1102 1164 11AC;B0F1;1102 1164 11AC;
+B0F2;B0F2;1102 1164 11AD;B0F2;1102 1164 11AD;
+B0F3;B0F3;1102 1164 11AE;B0F3;1102 1164 11AE;
+B0F4;B0F4;1102 1164 11AF;B0F4;1102 1164 11AF;
+B0F5;B0F5;1102 1164 11B0;B0F5;1102 1164 11B0;
+B0F6;B0F6;1102 1164 11B1;B0F6;1102 1164 11B1;
+B0F7;B0F7;1102 1164 11B2;B0F7;1102 1164 11B2;
+B0F8;B0F8;1102 1164 11B3;B0F8;1102 1164 11B3;
+B0F9;B0F9;1102 1164 11B4;B0F9;1102 1164 11B4;
+B0FA;B0FA;1102 1164 11B5;B0FA;1102 1164 11B5;
+B0FB;B0FB;1102 1164 11B6;B0FB;1102 1164 11B6;
+B0FC;B0FC;1102 1164 11B7;B0FC;1102 1164 11B7;
+B0FD;B0FD;1102 1164 11B8;B0FD;1102 1164 11B8;
+B0FE;B0FE;1102 1164 11B9;B0FE;1102 1164 11B9;
+B0FF;B0FF;1102 1164 11BA;B0FF;1102 1164 11BA;
+B100;B100;1102 1164 11BB;B100;1102 1164 11BB;
+B101;B101;1102 1164 11BC;B101;1102 1164 11BC;
+B102;B102;1102 1164 11BD;B102;1102 1164 11BD;
+B103;B103;1102 1164 11BE;B103;1102 1164 11BE;
+B104;B104;1102 1164 11BF;B104;1102 1164 11BF;
+B105;B105;1102 1164 11C0;B105;1102 1164 11C0;
+B106;B106;1102 1164 11C1;B106;1102 1164 11C1;
+B107;B107;1102 1164 11C2;B107;1102 1164 11C2;
+B108;B108;1102 1165;B108;1102 1165;
+B109;B109;1102 1165 11A8;B109;1102 1165 11A8;
+B10A;B10A;1102 1165 11A9;B10A;1102 1165 11A9;
+B10B;B10B;1102 1165 11AA;B10B;1102 1165 11AA;
+B10C;B10C;1102 1165 11AB;B10C;1102 1165 11AB;
+B10D;B10D;1102 1165 11AC;B10D;1102 1165 11AC;
+B10E;B10E;1102 1165 11AD;B10E;1102 1165 11AD;
+B10F;B10F;1102 1165 11AE;B10F;1102 1165 11AE;
+B110;B110;1102 1165 11AF;B110;1102 1165 11AF;
+B111;B111;1102 1165 11B0;B111;1102 1165 11B0;
+B112;B112;1102 1165 11B1;B112;1102 1165 11B1;
+B113;B113;1102 1165 11B2;B113;1102 1165 11B2;
+B114;B114;1102 1165 11B3;B114;1102 1165 11B3;
+B115;B115;1102 1165 11B4;B115;1102 1165 11B4;
+B116;B116;1102 1165 11B5;B116;1102 1165 11B5;
+B117;B117;1102 1165 11B6;B117;1102 1165 11B6;
+B118;B118;1102 1165 11B7;B118;1102 1165 11B7;
+B119;B119;1102 1165 11B8;B119;1102 1165 11B8;
+B11A;B11A;1102 1165 11B9;B11A;1102 1165 11B9;
+B11B;B11B;1102 1165 11BA;B11B;1102 1165 11BA;
+B11C;B11C;1102 1165 11BB;B11C;1102 1165 11BB;
+B11D;B11D;1102 1165 11BC;B11D;1102 1165 11BC;
+B11E;B11E;1102 1165 11BD;B11E;1102 1165 11BD;
+B11F;B11F;1102 1165 11BE;B11F;1102 1165 11BE;
+B120;B120;1102 1165 11BF;B120;1102 1165 11BF;
+B121;B121;1102 1165 11C0;B121;1102 1165 11C0;
+B122;B122;1102 1165 11C1;B122;1102 1165 11C1;
+B123;B123;1102 1165 11C2;B123;1102 1165 11C2;
+B124;B124;1102 1166;B124;1102 1166;
+B125;B125;1102 1166 11A8;B125;1102 1166 11A8;
+B126;B126;1102 1166 11A9;B126;1102 1166 11A9;
+B127;B127;1102 1166 11AA;B127;1102 1166 11AA;
+B128;B128;1102 1166 11AB;B128;1102 1166 11AB;
+B129;B129;1102 1166 11AC;B129;1102 1166 11AC;
+B12A;B12A;1102 1166 11AD;B12A;1102 1166 11AD;
+B12B;B12B;1102 1166 11AE;B12B;1102 1166 11AE;
+B12C;B12C;1102 1166 11AF;B12C;1102 1166 11AF;
+B12D;B12D;1102 1166 11B0;B12D;1102 1166 11B0;
+B12E;B12E;1102 1166 11B1;B12E;1102 1166 11B1;
+B12F;B12F;1102 1166 11B2;B12F;1102 1166 11B2;
+B130;B130;1102 1166 11B3;B130;1102 1166 11B3;
+B131;B131;1102 1166 11B4;B131;1102 1166 11B4;
+B132;B132;1102 1166 11B5;B132;1102 1166 11B5;
+B133;B133;1102 1166 11B6;B133;1102 1166 11B6;
+B134;B134;1102 1166 11B7;B134;1102 1166 11B7;
+B135;B135;1102 1166 11B8;B135;1102 1166 11B8;
+B136;B136;1102 1166 11B9;B136;1102 1166 11B9;
+B137;B137;1102 1166 11BA;B137;1102 1166 11BA;
+B138;B138;1102 1166 11BB;B138;1102 1166 11BB;
+B139;B139;1102 1166 11BC;B139;1102 1166 11BC;
+B13A;B13A;1102 1166 11BD;B13A;1102 1166 11BD;
+B13B;B13B;1102 1166 11BE;B13B;1102 1166 11BE;
+B13C;B13C;1102 1166 11BF;B13C;1102 1166 11BF;
+B13D;B13D;1102 1166 11C0;B13D;1102 1166 11C0;
+B13E;B13E;1102 1166 11C1;B13E;1102 1166 11C1;
+B13F;B13F;1102 1166 11C2;B13F;1102 1166 11C2;
+B140;B140;1102 1167;B140;1102 1167;
+B141;B141;1102 1167 11A8;B141;1102 1167 11A8;
+B142;B142;1102 1167 11A9;B142;1102 1167 11A9;
+B143;B143;1102 1167 11AA;B143;1102 1167 11AA;
+B144;B144;1102 1167 11AB;B144;1102 1167 11AB;
+B145;B145;1102 1167 11AC;B145;1102 1167 11AC;
+B146;B146;1102 1167 11AD;B146;1102 1167 11AD;
+B147;B147;1102 1167 11AE;B147;1102 1167 11AE;
+B148;B148;1102 1167 11AF;B148;1102 1167 11AF;
+B149;B149;1102 1167 11B0;B149;1102 1167 11B0;
+B14A;B14A;1102 1167 11B1;B14A;1102 1167 11B1;
+B14B;B14B;1102 1167 11B2;B14B;1102 1167 11B2;
+B14C;B14C;1102 1167 11B3;B14C;1102 1167 11B3;
+B14D;B14D;1102 1167 11B4;B14D;1102 1167 11B4;
+B14E;B14E;1102 1167 11B5;B14E;1102 1167 11B5;
+B14F;B14F;1102 1167 11B6;B14F;1102 1167 11B6;
+B150;B150;1102 1167 11B7;B150;1102 1167 11B7;
+B151;B151;1102 1167 11B8;B151;1102 1167 11B8;
+B152;B152;1102 1167 11B9;B152;1102 1167 11B9;
+B153;B153;1102 1167 11BA;B153;1102 1167 11BA;
+B154;B154;1102 1167 11BB;B154;1102 1167 11BB;
+B155;B155;1102 1167 11BC;B155;1102 1167 11BC;
+B156;B156;1102 1167 11BD;B156;1102 1167 11BD;
+B157;B157;1102 1167 11BE;B157;1102 1167 11BE;
+B158;B158;1102 1167 11BF;B158;1102 1167 11BF;
+B159;B159;1102 1167 11C0;B159;1102 1167 11C0;
+B15A;B15A;1102 1167 11C1;B15A;1102 1167 11C1;
+B15B;B15B;1102 1167 11C2;B15B;1102 1167 11C2;
+B15C;B15C;1102 1168;B15C;1102 1168;
+B15D;B15D;1102 1168 11A8;B15D;1102 1168 11A8;
+B15E;B15E;1102 1168 11A9;B15E;1102 1168 11A9;
+B15F;B15F;1102 1168 11AA;B15F;1102 1168 11AA;
+B160;B160;1102 1168 11AB;B160;1102 1168 11AB;
+B161;B161;1102 1168 11AC;B161;1102 1168 11AC;
+B162;B162;1102 1168 11AD;B162;1102 1168 11AD;
+B163;B163;1102 1168 11AE;B163;1102 1168 11AE;
+B164;B164;1102 1168 11AF;B164;1102 1168 11AF;
+B165;B165;1102 1168 11B0;B165;1102 1168 11B0;
+B166;B166;1102 1168 11B1;B166;1102 1168 11B1;
+B167;B167;1102 1168 11B2;B167;1102 1168 11B2;
+B168;B168;1102 1168 11B3;B168;1102 1168 11B3;
+B169;B169;1102 1168 11B4;B169;1102 1168 11B4;
+B16A;B16A;1102 1168 11B5;B16A;1102 1168 11B5;
+B16B;B16B;1102 1168 11B6;B16B;1102 1168 11B6;
+B16C;B16C;1102 1168 11B7;B16C;1102 1168 11B7;
+B16D;B16D;1102 1168 11B8;B16D;1102 1168 11B8;
+B16E;B16E;1102 1168 11B9;B16E;1102 1168 11B9;
+B16F;B16F;1102 1168 11BA;B16F;1102 1168 11BA;
+B170;B170;1102 1168 11BB;B170;1102 1168 11BB;
+B171;B171;1102 1168 11BC;B171;1102 1168 11BC;
+B172;B172;1102 1168 11BD;B172;1102 1168 11BD;
+B173;B173;1102 1168 11BE;B173;1102 1168 11BE;
+B174;B174;1102 1168 11BF;B174;1102 1168 11BF;
+B175;B175;1102 1168 11C0;B175;1102 1168 11C0;
+B176;B176;1102 1168 11C1;B176;1102 1168 11C1;
+B177;B177;1102 1168 11C2;B177;1102 1168 11C2;
+B178;B178;1102 1169;B178;1102 1169;
+B179;B179;1102 1169 11A8;B179;1102 1169 11A8;
+B17A;B17A;1102 1169 11A9;B17A;1102 1169 11A9;
+B17B;B17B;1102 1169 11AA;B17B;1102 1169 11AA;
+B17C;B17C;1102 1169 11AB;B17C;1102 1169 11AB;
+B17D;B17D;1102 1169 11AC;B17D;1102 1169 11AC;
+B17E;B17E;1102 1169 11AD;B17E;1102 1169 11AD;
+B17F;B17F;1102 1169 11AE;B17F;1102 1169 11AE;
+B180;B180;1102 1169 11AF;B180;1102 1169 11AF;
+B181;B181;1102 1169 11B0;B181;1102 1169 11B0;
+B182;B182;1102 1169 11B1;B182;1102 1169 11B1;
+B183;B183;1102 1169 11B2;B183;1102 1169 11B2;
+B184;B184;1102 1169 11B3;B184;1102 1169 11B3;
+B185;B185;1102 1169 11B4;B185;1102 1169 11B4;
+B186;B186;1102 1169 11B5;B186;1102 1169 11B5;
+B187;B187;1102 1169 11B6;B187;1102 1169 11B6;
+B188;B188;1102 1169 11B7;B188;1102 1169 11B7;
+B189;B189;1102 1169 11B8;B189;1102 1169 11B8;
+B18A;B18A;1102 1169 11B9;B18A;1102 1169 11B9;
+B18B;B18B;1102 1169 11BA;B18B;1102 1169 11BA;
+B18C;B18C;1102 1169 11BB;B18C;1102 1169 11BB;
+B18D;B18D;1102 1169 11BC;B18D;1102 1169 11BC;
+B18E;B18E;1102 1169 11BD;B18E;1102 1169 11BD;
+B18F;B18F;1102 1169 11BE;B18F;1102 1169 11BE;
+B190;B190;1102 1169 11BF;B190;1102 1169 11BF;
+B191;B191;1102 1169 11C0;B191;1102 1169 11C0;
+B192;B192;1102 1169 11C1;B192;1102 1169 11C1;
+B193;B193;1102 1169 11C2;B193;1102 1169 11C2;
+B194;B194;1102 116A;B194;1102 116A;
+B195;B195;1102 116A 11A8;B195;1102 116A 11A8;
+B196;B196;1102 116A 11A9;B196;1102 116A 11A9;
+B197;B197;1102 116A 11AA;B197;1102 116A 11AA;
+B198;B198;1102 116A 11AB;B198;1102 116A 11AB;
+B199;B199;1102 116A 11AC;B199;1102 116A 11AC;
+B19A;B19A;1102 116A 11AD;B19A;1102 116A 11AD;
+B19B;B19B;1102 116A 11AE;B19B;1102 116A 11AE;
+B19C;B19C;1102 116A 11AF;B19C;1102 116A 11AF;
+B19D;B19D;1102 116A 11B0;B19D;1102 116A 11B0;
+B19E;B19E;1102 116A 11B1;B19E;1102 116A 11B1;
+B19F;B19F;1102 116A 11B2;B19F;1102 116A 11B2;
+B1A0;B1A0;1102 116A 11B3;B1A0;1102 116A 11B3;
+B1A1;B1A1;1102 116A 11B4;B1A1;1102 116A 11B4;
+B1A2;B1A2;1102 116A 11B5;B1A2;1102 116A 11B5;
+B1A3;B1A3;1102 116A 11B6;B1A3;1102 116A 11B6;
+B1A4;B1A4;1102 116A 11B7;B1A4;1102 116A 11B7;
+B1A5;B1A5;1102 116A 11B8;B1A5;1102 116A 11B8;
+B1A6;B1A6;1102 116A 11B9;B1A6;1102 116A 11B9;
+B1A7;B1A7;1102 116A 11BA;B1A7;1102 116A 11BA;
+B1A8;B1A8;1102 116A 11BB;B1A8;1102 116A 11BB;
+B1A9;B1A9;1102 116A 11BC;B1A9;1102 116A 11BC;
+B1AA;B1AA;1102 116A 11BD;B1AA;1102 116A 11BD;
+B1AB;B1AB;1102 116A 11BE;B1AB;1102 116A 11BE;
+B1AC;B1AC;1102 116A 11BF;B1AC;1102 116A 11BF;
+B1AD;B1AD;1102 116A 11C0;B1AD;1102 116A 11C0;
+B1AE;B1AE;1102 116A 11C1;B1AE;1102 116A 11C1;
+B1AF;B1AF;1102 116A 11C2;B1AF;1102 116A 11C2;
+B1B0;B1B0;1102 116B;B1B0;1102 116B;
+B1B1;B1B1;1102 116B 11A8;B1B1;1102 116B 11A8;
+B1B2;B1B2;1102 116B 11A9;B1B2;1102 116B 11A9;
+B1B3;B1B3;1102 116B 11AA;B1B3;1102 116B 11AA;
+B1B4;B1B4;1102 116B 11AB;B1B4;1102 116B 11AB;
+B1B5;B1B5;1102 116B 11AC;B1B5;1102 116B 11AC;
+B1B6;B1B6;1102 116B 11AD;B1B6;1102 116B 11AD;
+B1B7;B1B7;1102 116B 11AE;B1B7;1102 116B 11AE;
+B1B8;B1B8;1102 116B 11AF;B1B8;1102 116B 11AF;
+B1B9;B1B9;1102 116B 11B0;B1B9;1102 116B 11B0;
+B1BA;B1BA;1102 116B 11B1;B1BA;1102 116B 11B1;
+B1BB;B1BB;1102 116B 11B2;B1BB;1102 116B 11B2;
+B1BC;B1BC;1102 116B 11B3;B1BC;1102 116B 11B3;
+B1BD;B1BD;1102 116B 11B4;B1BD;1102 116B 11B4;
+B1BE;B1BE;1102 116B 11B5;B1BE;1102 116B 11B5;
+B1BF;B1BF;1102 116B 11B6;B1BF;1102 116B 11B6;
+B1C0;B1C0;1102 116B 11B7;B1C0;1102 116B 11B7;
+B1C1;B1C1;1102 116B 11B8;B1C1;1102 116B 11B8;
+B1C2;B1C2;1102 116B 11B9;B1C2;1102 116B 11B9;
+B1C3;B1C3;1102 116B 11BA;B1C3;1102 116B 11BA;
+B1C4;B1C4;1102 116B 11BB;B1C4;1102 116B 11BB;
+B1C5;B1C5;1102 116B 11BC;B1C5;1102 116B 11BC;
+B1C6;B1C6;1102 116B 11BD;B1C6;1102 116B 11BD;
+B1C7;B1C7;1102 116B 11BE;B1C7;1102 116B 11BE;
+B1C8;B1C8;1102 116B 11BF;B1C8;1102 116B 11BF;
+B1C9;B1C9;1102 116B 11C0;B1C9;1102 116B 11C0;
+B1CA;B1CA;1102 116B 11C1;B1CA;1102 116B 11C1;
+B1CB;B1CB;1102 116B 11C2;B1CB;1102 116B 11C2;
+B1CC;B1CC;1102 116C;B1CC;1102 116C;
+B1CD;B1CD;1102 116C 11A8;B1CD;1102 116C 11A8;
+B1CE;B1CE;1102 116C 11A9;B1CE;1102 116C 11A9;
+B1CF;B1CF;1102 116C 11AA;B1CF;1102 116C 11AA;
+B1D0;B1D0;1102 116C 11AB;B1D0;1102 116C 11AB;
+B1D1;B1D1;1102 116C 11AC;B1D1;1102 116C 11AC;
+B1D2;B1D2;1102 116C 11AD;B1D2;1102 116C 11AD;
+B1D3;B1D3;1102 116C 11AE;B1D3;1102 116C 11AE;
+B1D4;B1D4;1102 116C 11AF;B1D4;1102 116C 11AF;
+B1D5;B1D5;1102 116C 11B0;B1D5;1102 116C 11B0;
+B1D6;B1D6;1102 116C 11B1;B1D6;1102 116C 11B1;
+B1D7;B1D7;1102 116C 11B2;B1D7;1102 116C 11B2;
+B1D8;B1D8;1102 116C 11B3;B1D8;1102 116C 11B3;
+B1D9;B1D9;1102 116C 11B4;B1D9;1102 116C 11B4;
+B1DA;B1DA;1102 116C 11B5;B1DA;1102 116C 11B5;
+B1DB;B1DB;1102 116C 11B6;B1DB;1102 116C 11B6;
+B1DC;B1DC;1102 116C 11B7;B1DC;1102 116C 11B7;
+B1DD;B1DD;1102 116C 11B8;B1DD;1102 116C 11B8;
+B1DE;B1DE;1102 116C 11B9;B1DE;1102 116C 11B9;
+B1DF;B1DF;1102 116C 11BA;B1DF;1102 116C 11BA;
+B1E0;B1E0;1102 116C 11BB;B1E0;1102 116C 11BB;
+B1E1;B1E1;1102 116C 11BC;B1E1;1102 116C 11BC;
+B1E2;B1E2;1102 116C 11BD;B1E2;1102 116C 11BD;
+B1E3;B1E3;1102 116C 11BE;B1E3;1102 116C 11BE;
+B1E4;B1E4;1102 116C 11BF;B1E4;1102 116C 11BF;
+B1E5;B1E5;1102 116C 11C0;B1E5;1102 116C 11C0;
+B1E6;B1E6;1102 116C 11C1;B1E6;1102 116C 11C1;
+B1E7;B1E7;1102 116C 11C2;B1E7;1102 116C 11C2;
+B1E8;B1E8;1102 116D;B1E8;1102 116D;
+B1E9;B1E9;1102 116D 11A8;B1E9;1102 116D 11A8;
+B1EA;B1EA;1102 116D 11A9;B1EA;1102 116D 11A9;
+B1EB;B1EB;1102 116D 11AA;B1EB;1102 116D 11AA;
+B1EC;B1EC;1102 116D 11AB;B1EC;1102 116D 11AB;
+B1ED;B1ED;1102 116D 11AC;B1ED;1102 116D 11AC;
+B1EE;B1EE;1102 116D 11AD;B1EE;1102 116D 11AD;
+B1EF;B1EF;1102 116D 11AE;B1EF;1102 116D 11AE;
+B1F0;B1F0;1102 116D 11AF;B1F0;1102 116D 11AF;
+B1F1;B1F1;1102 116D 11B0;B1F1;1102 116D 11B0;
+B1F2;B1F2;1102 116D 11B1;B1F2;1102 116D 11B1;
+B1F3;B1F3;1102 116D 11B2;B1F3;1102 116D 11B2;
+B1F4;B1F4;1102 116D 11B3;B1F4;1102 116D 11B3;
+B1F5;B1F5;1102 116D 11B4;B1F5;1102 116D 11B4;
+B1F6;B1F6;1102 116D 11B5;B1F6;1102 116D 11B5;
+B1F7;B1F7;1102 116D 11B6;B1F7;1102 116D 11B6;
+B1F8;B1F8;1102 116D 11B7;B1F8;1102 116D 11B7;
+B1F9;B1F9;1102 116D 11B8;B1F9;1102 116D 11B8;
+B1FA;B1FA;1102 116D 11B9;B1FA;1102 116D 11B9;
+B1FB;B1FB;1102 116D 11BA;B1FB;1102 116D 11BA;
+B1FC;B1FC;1102 116D 11BB;B1FC;1102 116D 11BB;
+B1FD;B1FD;1102 116D 11BC;B1FD;1102 116D 11BC;
+B1FE;B1FE;1102 116D 11BD;B1FE;1102 116D 11BD;
+B1FF;B1FF;1102 116D 11BE;B1FF;1102 116D 11BE;
+B200;B200;1102 116D 11BF;B200;1102 116D 11BF;
+B201;B201;1102 116D 11C0;B201;1102 116D 11C0;
+B202;B202;1102 116D 11C1;B202;1102 116D 11C1;
+B203;B203;1102 116D 11C2;B203;1102 116D 11C2;
+B204;B204;1102 116E;B204;1102 116E;
+B205;B205;1102 116E 11A8;B205;1102 116E 11A8;
+B206;B206;1102 116E 11A9;B206;1102 116E 11A9;
+B207;B207;1102 116E 11AA;B207;1102 116E 11AA;
+B208;B208;1102 116E 11AB;B208;1102 116E 11AB;
+B209;B209;1102 116E 11AC;B209;1102 116E 11AC;
+B20A;B20A;1102 116E 11AD;B20A;1102 116E 11AD;
+B20B;B20B;1102 116E 11AE;B20B;1102 116E 11AE;
+B20C;B20C;1102 116E 11AF;B20C;1102 116E 11AF;
+B20D;B20D;1102 116E 11B0;B20D;1102 116E 11B0;
+B20E;B20E;1102 116E 11B1;B20E;1102 116E 11B1;
+B20F;B20F;1102 116E 11B2;B20F;1102 116E 11B2;
+B210;B210;1102 116E 11B3;B210;1102 116E 11B3;
+B211;B211;1102 116E 11B4;B211;1102 116E 11B4;
+B212;B212;1102 116E 11B5;B212;1102 116E 11B5;
+B213;B213;1102 116E 11B6;B213;1102 116E 11B6;
+B214;B214;1102 116E 11B7;B214;1102 116E 11B7;
+B215;B215;1102 116E 11B8;B215;1102 116E 11B8;
+B216;B216;1102 116E 11B9;B216;1102 116E 11B9;
+B217;B217;1102 116E 11BA;B217;1102 116E 11BA;
+B218;B218;1102 116E 11BB;B218;1102 116E 11BB;
+B219;B219;1102 116E 11BC;B219;1102 116E 11BC;
+B21A;B21A;1102 116E 11BD;B21A;1102 116E 11BD;
+B21B;B21B;1102 116E 11BE;B21B;1102 116E 11BE;
+B21C;B21C;1102 116E 11BF;B21C;1102 116E 11BF;
+B21D;B21D;1102 116E 11C0;B21D;1102 116E 11C0;
+B21E;B21E;1102 116E 11C1;B21E;1102 116E 11C1;
+B21F;B21F;1102 116E 11C2;B21F;1102 116E 11C2;
+B220;B220;1102 116F;B220;1102 116F;
+B221;B221;1102 116F 11A8;B221;1102 116F 11A8;
+B222;B222;1102 116F 11A9;B222;1102 116F 11A9;
+B223;B223;1102 116F 11AA;B223;1102 116F 11AA;
+B224;B224;1102 116F 11AB;B224;1102 116F 11AB;
+B225;B225;1102 116F 11AC;B225;1102 116F 11AC;
+B226;B226;1102 116F 11AD;B226;1102 116F 11AD;
+B227;B227;1102 116F 11AE;B227;1102 116F 11AE;
+B228;B228;1102 116F 11AF;B228;1102 116F 11AF;
+B229;B229;1102 116F 11B0;B229;1102 116F 11B0;
+B22A;B22A;1102 116F 11B1;B22A;1102 116F 11B1;
+B22B;B22B;1102 116F 11B2;B22B;1102 116F 11B2;
+B22C;B22C;1102 116F 11B3;B22C;1102 116F 11B3;
+B22D;B22D;1102 116F 11B4;B22D;1102 116F 11B4;
+B22E;B22E;1102 116F 11B5;B22E;1102 116F 11B5;
+B22F;B22F;1102 116F 11B6;B22F;1102 116F 11B6;
+B230;B230;1102 116F 11B7;B230;1102 116F 11B7;
+B231;B231;1102 116F 11B8;B231;1102 116F 11B8;
+B232;B232;1102 116F 11B9;B232;1102 116F 11B9;
+B233;B233;1102 116F 11BA;B233;1102 116F 11BA;
+B234;B234;1102 116F 11BB;B234;1102 116F 11BB;
+B235;B235;1102 116F 11BC;B235;1102 116F 11BC;
+B236;B236;1102 116F 11BD;B236;1102 116F 11BD;
+B237;B237;1102 116F 11BE;B237;1102 116F 11BE;
+B238;B238;1102 116F 11BF;B238;1102 116F 11BF;
+B239;B239;1102 116F 11C0;B239;1102 116F 11C0;
+B23A;B23A;1102 116F 11C1;B23A;1102 116F 11C1;
+B23B;B23B;1102 116F 11C2;B23B;1102 116F 11C2;
+B23C;B23C;1102 1170;B23C;1102 1170;
+B23D;B23D;1102 1170 11A8;B23D;1102 1170 11A8;
+B23E;B23E;1102 1170 11A9;B23E;1102 1170 11A9;
+B23F;B23F;1102 1170 11AA;B23F;1102 1170 11AA;
+B240;B240;1102 1170 11AB;B240;1102 1170 11AB;
+B241;B241;1102 1170 11AC;B241;1102 1170 11AC;
+B242;B242;1102 1170 11AD;B242;1102 1170 11AD;
+B243;B243;1102 1170 11AE;B243;1102 1170 11AE;
+B244;B244;1102 1170 11AF;B244;1102 1170 11AF;
+B245;B245;1102 1170 11B0;B245;1102 1170 11B0;
+B246;B246;1102 1170 11B1;B246;1102 1170 11B1;
+B247;B247;1102 1170 11B2;B247;1102 1170 11B2;
+B248;B248;1102 1170 11B3;B248;1102 1170 11B3;
+B249;B249;1102 1170 11B4;B249;1102 1170 11B4;
+B24A;B24A;1102 1170 11B5;B24A;1102 1170 11B5;
+B24B;B24B;1102 1170 11B6;B24B;1102 1170 11B6;
+B24C;B24C;1102 1170 11B7;B24C;1102 1170 11B7;
+B24D;B24D;1102 1170 11B8;B24D;1102 1170 11B8;
+B24E;B24E;1102 1170 11B9;B24E;1102 1170 11B9;
+B24F;B24F;1102 1170 11BA;B24F;1102 1170 11BA;
+B250;B250;1102 1170 11BB;B250;1102 1170 11BB;
+B251;B251;1102 1170 11BC;B251;1102 1170 11BC;
+B252;B252;1102 1170 11BD;B252;1102 1170 11BD;
+B253;B253;1102 1170 11BE;B253;1102 1170 11BE;
+B254;B254;1102 1170 11BF;B254;1102 1170 11BF;
+B255;B255;1102 1170 11C0;B255;1102 1170 11C0;
+B256;B256;1102 1170 11C1;B256;1102 1170 11C1;
+B257;B257;1102 1170 11C2;B257;1102 1170 11C2;
+B258;B258;1102 1171;B258;1102 1171;
+B259;B259;1102 1171 11A8;B259;1102 1171 11A8;
+B25A;B25A;1102 1171 11A9;B25A;1102 1171 11A9;
+B25B;B25B;1102 1171 11AA;B25B;1102 1171 11AA;
+B25C;B25C;1102 1171 11AB;B25C;1102 1171 11AB;
+B25D;B25D;1102 1171 11AC;B25D;1102 1171 11AC;
+B25E;B25E;1102 1171 11AD;B25E;1102 1171 11AD;
+B25F;B25F;1102 1171 11AE;B25F;1102 1171 11AE;
+B260;B260;1102 1171 11AF;B260;1102 1171 11AF;
+B261;B261;1102 1171 11B0;B261;1102 1171 11B0;
+B262;B262;1102 1171 11B1;B262;1102 1171 11B1;
+B263;B263;1102 1171 11B2;B263;1102 1171 11B2;
+B264;B264;1102 1171 11B3;B264;1102 1171 11B3;
+B265;B265;1102 1171 11B4;B265;1102 1171 11B4;
+B266;B266;1102 1171 11B5;B266;1102 1171 11B5;
+B267;B267;1102 1171 11B6;B267;1102 1171 11B6;
+B268;B268;1102 1171 11B7;B268;1102 1171 11B7;
+B269;B269;1102 1171 11B8;B269;1102 1171 11B8;
+B26A;B26A;1102 1171 11B9;B26A;1102 1171 11B9;
+B26B;B26B;1102 1171 11BA;B26B;1102 1171 11BA;
+B26C;B26C;1102 1171 11BB;B26C;1102 1171 11BB;
+B26D;B26D;1102 1171 11BC;B26D;1102 1171 11BC;
+B26E;B26E;1102 1171 11BD;B26E;1102 1171 11BD;
+B26F;B26F;1102 1171 11BE;B26F;1102 1171 11BE;
+B270;B270;1102 1171 11BF;B270;1102 1171 11BF;
+B271;B271;1102 1171 11C0;B271;1102 1171 11C0;
+B272;B272;1102 1171 11C1;B272;1102 1171 11C1;
+B273;B273;1102 1171 11C2;B273;1102 1171 11C2;
+B274;B274;1102 1172;B274;1102 1172;
+B275;B275;1102 1172 11A8;B275;1102 1172 11A8;
+B276;B276;1102 1172 11A9;B276;1102 1172 11A9;
+B277;B277;1102 1172 11AA;B277;1102 1172 11AA;
+B278;B278;1102 1172 11AB;B278;1102 1172 11AB;
+B279;B279;1102 1172 11AC;B279;1102 1172 11AC;
+B27A;B27A;1102 1172 11AD;B27A;1102 1172 11AD;
+B27B;B27B;1102 1172 11AE;B27B;1102 1172 11AE;
+B27C;B27C;1102 1172 11AF;B27C;1102 1172 11AF;
+B27D;B27D;1102 1172 11B0;B27D;1102 1172 11B0;
+B27E;B27E;1102 1172 11B1;B27E;1102 1172 11B1;
+B27F;B27F;1102 1172 11B2;B27F;1102 1172 11B2;
+B280;B280;1102 1172 11B3;B280;1102 1172 11B3;
+B281;B281;1102 1172 11B4;B281;1102 1172 11B4;
+B282;B282;1102 1172 11B5;B282;1102 1172 11B5;
+B283;B283;1102 1172 11B6;B283;1102 1172 11B6;
+B284;B284;1102 1172 11B7;B284;1102 1172 11B7;
+B285;B285;1102 1172 11B8;B285;1102 1172 11B8;
+B286;B286;1102 1172 11B9;B286;1102 1172 11B9;
+B287;B287;1102 1172 11BA;B287;1102 1172 11BA;
+B288;B288;1102 1172 11BB;B288;1102 1172 11BB;
+B289;B289;1102 1172 11BC;B289;1102 1172 11BC;
+B28A;B28A;1102 1172 11BD;B28A;1102 1172 11BD;
+B28B;B28B;1102 1172 11BE;B28B;1102 1172 11BE;
+B28C;B28C;1102 1172 11BF;B28C;1102 1172 11BF;
+B28D;B28D;1102 1172 11C0;B28D;1102 1172 11C0;
+B28E;B28E;1102 1172 11C1;B28E;1102 1172 11C1;
+B28F;B28F;1102 1172 11C2;B28F;1102 1172 11C2;
+B290;B290;1102 1173;B290;1102 1173;
+B291;B291;1102 1173 11A8;B291;1102 1173 11A8;
+B292;B292;1102 1173 11A9;B292;1102 1173 11A9;
+B293;B293;1102 1173 11AA;B293;1102 1173 11AA;
+B294;B294;1102 1173 11AB;B294;1102 1173 11AB;
+B295;B295;1102 1173 11AC;B295;1102 1173 11AC;
+B296;B296;1102 1173 11AD;B296;1102 1173 11AD;
+B297;B297;1102 1173 11AE;B297;1102 1173 11AE;
+B298;B298;1102 1173 11AF;B298;1102 1173 11AF;
+B299;B299;1102 1173 11B0;B299;1102 1173 11B0;
+B29A;B29A;1102 1173 11B1;B29A;1102 1173 11B1;
+B29B;B29B;1102 1173 11B2;B29B;1102 1173 11B2;
+B29C;B29C;1102 1173 11B3;B29C;1102 1173 11B3;
+B29D;B29D;1102 1173 11B4;B29D;1102 1173 11B4;
+B29E;B29E;1102 1173 11B5;B29E;1102 1173 11B5;
+B29F;B29F;1102 1173 11B6;B29F;1102 1173 11B6;
+B2A0;B2A0;1102 1173 11B7;B2A0;1102 1173 11B7;
+B2A1;B2A1;1102 1173 11B8;B2A1;1102 1173 11B8;
+B2A2;B2A2;1102 1173 11B9;B2A2;1102 1173 11B9;
+B2A3;B2A3;1102 1173 11BA;B2A3;1102 1173 11BA;
+B2A4;B2A4;1102 1173 11BB;B2A4;1102 1173 11BB;
+B2A5;B2A5;1102 1173 11BC;B2A5;1102 1173 11BC;
+B2A6;B2A6;1102 1173 11BD;B2A6;1102 1173 11BD;
+B2A7;B2A7;1102 1173 11BE;B2A7;1102 1173 11BE;
+B2A8;B2A8;1102 1173 11BF;B2A8;1102 1173 11BF;
+B2A9;B2A9;1102 1173 11C0;B2A9;1102 1173 11C0;
+B2AA;B2AA;1102 1173 11C1;B2AA;1102 1173 11C1;
+B2AB;B2AB;1102 1173 11C2;B2AB;1102 1173 11C2;
+B2AC;B2AC;1102 1174;B2AC;1102 1174;
+B2AD;B2AD;1102 1174 11A8;B2AD;1102 1174 11A8;
+B2AE;B2AE;1102 1174 11A9;B2AE;1102 1174 11A9;
+B2AF;B2AF;1102 1174 11AA;B2AF;1102 1174 11AA;
+B2B0;B2B0;1102 1174 11AB;B2B0;1102 1174 11AB;
+B2B1;B2B1;1102 1174 11AC;B2B1;1102 1174 11AC;
+B2B2;B2B2;1102 1174 11AD;B2B2;1102 1174 11AD;
+B2B3;B2B3;1102 1174 11AE;B2B3;1102 1174 11AE;
+B2B4;B2B4;1102 1174 11AF;B2B4;1102 1174 11AF;
+B2B5;B2B5;1102 1174 11B0;B2B5;1102 1174 11B0;
+B2B6;B2B6;1102 1174 11B1;B2B6;1102 1174 11B1;
+B2B7;B2B7;1102 1174 11B2;B2B7;1102 1174 11B2;
+B2B8;B2B8;1102 1174 11B3;B2B8;1102 1174 11B3;
+B2B9;B2B9;1102 1174 11B4;B2B9;1102 1174 11B4;
+B2BA;B2BA;1102 1174 11B5;B2BA;1102 1174 11B5;
+B2BB;B2BB;1102 1174 11B6;B2BB;1102 1174 11B6;
+B2BC;B2BC;1102 1174 11B7;B2BC;1102 1174 11B7;
+B2BD;B2BD;1102 1174 11B8;B2BD;1102 1174 11B8;
+B2BE;B2BE;1102 1174 11B9;B2BE;1102 1174 11B9;
+B2BF;B2BF;1102 1174 11BA;B2BF;1102 1174 11BA;
+B2C0;B2C0;1102 1174 11BB;B2C0;1102 1174 11BB;
+B2C1;B2C1;1102 1174 11BC;B2C1;1102 1174 11BC;
+B2C2;B2C2;1102 1174 11BD;B2C2;1102 1174 11BD;
+B2C3;B2C3;1102 1174 11BE;B2C3;1102 1174 11BE;
+B2C4;B2C4;1102 1174 11BF;B2C4;1102 1174 11BF;
+B2C5;B2C5;1102 1174 11C0;B2C5;1102 1174 11C0;
+B2C6;B2C6;1102 1174 11C1;B2C6;1102 1174 11C1;
+B2C7;B2C7;1102 1174 11C2;B2C7;1102 1174 11C2;
+B2C8;B2C8;1102 1175;B2C8;1102 1175;
+B2C9;B2C9;1102 1175 11A8;B2C9;1102 1175 11A8;
+B2CA;B2CA;1102 1175 11A9;B2CA;1102 1175 11A9;
+B2CB;B2CB;1102 1175 11AA;B2CB;1102 1175 11AA;
+B2CC;B2CC;1102 1175 11AB;B2CC;1102 1175 11AB;
+B2CD;B2CD;1102 1175 11AC;B2CD;1102 1175 11AC;
+B2CE;B2CE;1102 1175 11AD;B2CE;1102 1175 11AD;
+B2CF;B2CF;1102 1175 11AE;B2CF;1102 1175 11AE;
+B2D0;B2D0;1102 1175 11AF;B2D0;1102 1175 11AF;
+B2D1;B2D1;1102 1175 11B0;B2D1;1102 1175 11B0;
+B2D2;B2D2;1102 1175 11B1;B2D2;1102 1175 11B1;
+B2D3;B2D3;1102 1175 11B2;B2D3;1102 1175 11B2;
+B2D4;B2D4;1102 1175 11B3;B2D4;1102 1175 11B3;
+B2D5;B2D5;1102 1175 11B4;B2D5;1102 1175 11B4;
+B2D6;B2D6;1102 1175 11B5;B2D6;1102 1175 11B5;
+B2D7;B2D7;1102 1175 11B6;B2D7;1102 1175 11B6;
+B2D8;B2D8;1102 1175 11B7;B2D8;1102 1175 11B7;
+B2D9;B2D9;1102 1175 11B8;B2D9;1102 1175 11B8;
+B2DA;B2DA;1102 1175 11B9;B2DA;1102 1175 11B9;
+B2DB;B2DB;1102 1175 11BA;B2DB;1102 1175 11BA;
+B2DC;B2DC;1102 1175 11BB;B2DC;1102 1175 11BB;
+B2DD;B2DD;1102 1175 11BC;B2DD;1102 1175 11BC;
+B2DE;B2DE;1102 1175 11BD;B2DE;1102 1175 11BD;
+B2DF;B2DF;1102 1175 11BE;B2DF;1102 1175 11BE;
+B2E0;B2E0;1102 1175 11BF;B2E0;1102 1175 11BF;
+B2E1;B2E1;1102 1175 11C0;B2E1;1102 1175 11C0;
+B2E2;B2E2;1102 1175 11C1;B2E2;1102 1175 11C1;
+B2E3;B2E3;1102 1175 11C2;B2E3;1102 1175 11C2;
+B2E4;B2E4;1103 1161;B2E4;1103 1161;
+B2E5;B2E5;1103 1161 11A8;B2E5;1103 1161 11A8;
+B2E6;B2E6;1103 1161 11A9;B2E6;1103 1161 11A9;
+B2E7;B2E7;1103 1161 11AA;B2E7;1103 1161 11AA;
+B2E8;B2E8;1103 1161 11AB;B2E8;1103 1161 11AB;
+B2E9;B2E9;1103 1161 11AC;B2E9;1103 1161 11AC;
+B2EA;B2EA;1103 1161 11AD;B2EA;1103 1161 11AD;
+B2EB;B2EB;1103 1161 11AE;B2EB;1103 1161 11AE;
+B2EC;B2EC;1103 1161 11AF;B2EC;1103 1161 11AF;
+B2ED;B2ED;1103 1161 11B0;B2ED;1103 1161 11B0;
+B2EE;B2EE;1103 1161 11B1;B2EE;1103 1161 11B1;
+B2EF;B2EF;1103 1161 11B2;B2EF;1103 1161 11B2;
+B2F0;B2F0;1103 1161 11B3;B2F0;1103 1161 11B3;
+B2F1;B2F1;1103 1161 11B4;B2F1;1103 1161 11B4;
+B2F2;B2F2;1103 1161 11B5;B2F2;1103 1161 11B5;
+B2F3;B2F3;1103 1161 11B6;B2F3;1103 1161 11B6;
+B2F4;B2F4;1103 1161 11B7;B2F4;1103 1161 11B7;
+B2F5;B2F5;1103 1161 11B8;B2F5;1103 1161 11B8;
+B2F6;B2F6;1103 1161 11B9;B2F6;1103 1161 11B9;
+B2F7;B2F7;1103 1161 11BA;B2F7;1103 1161 11BA;
+B2F8;B2F8;1103 1161 11BB;B2F8;1103 1161 11BB;
+B2F9;B2F9;1103 1161 11BC;B2F9;1103 1161 11BC;
+B2FA;B2FA;1103 1161 11BD;B2FA;1103 1161 11BD;
+B2FB;B2FB;1103 1161 11BE;B2FB;1103 1161 11BE;
+B2FC;B2FC;1103 1161 11BF;B2FC;1103 1161 11BF;
+B2FD;B2FD;1103 1161 11C0;B2FD;1103 1161 11C0;
+B2FE;B2FE;1103 1161 11C1;B2FE;1103 1161 11C1;
+B2FF;B2FF;1103 1161 11C2;B2FF;1103 1161 11C2;
+B300;B300;1103 1162;B300;1103 1162;
+B301;B301;1103 1162 11A8;B301;1103 1162 11A8;
+B302;B302;1103 1162 11A9;B302;1103 1162 11A9;
+B303;B303;1103 1162 11AA;B303;1103 1162 11AA;
+B304;B304;1103 1162 11AB;B304;1103 1162 11AB;
+B305;B305;1103 1162 11AC;B305;1103 1162 11AC;
+B306;B306;1103 1162 11AD;B306;1103 1162 11AD;
+B307;B307;1103 1162 11AE;B307;1103 1162 11AE;
+B308;B308;1103 1162 11AF;B308;1103 1162 11AF;
+B309;B309;1103 1162 11B0;B309;1103 1162 11B0;
+B30A;B30A;1103 1162 11B1;B30A;1103 1162 11B1;
+B30B;B30B;1103 1162 11B2;B30B;1103 1162 11B2;
+B30C;B30C;1103 1162 11B3;B30C;1103 1162 11B3;
+B30D;B30D;1103 1162 11B4;B30D;1103 1162 11B4;
+B30E;B30E;1103 1162 11B5;B30E;1103 1162 11B5;
+B30F;B30F;1103 1162 11B6;B30F;1103 1162 11B6;
+B310;B310;1103 1162 11B7;B310;1103 1162 11B7;
+B311;B311;1103 1162 11B8;B311;1103 1162 11B8;
+B312;B312;1103 1162 11B9;B312;1103 1162 11B9;
+B313;B313;1103 1162 11BA;B313;1103 1162 11BA;
+B314;B314;1103 1162 11BB;B314;1103 1162 11BB;
+B315;B315;1103 1162 11BC;B315;1103 1162 11BC;
+B316;B316;1103 1162 11BD;B316;1103 1162 11BD;
+B317;B317;1103 1162 11BE;B317;1103 1162 11BE;
+B318;B318;1103 1162 11BF;B318;1103 1162 11BF;
+B319;B319;1103 1162 11C0;B319;1103 1162 11C0;
+B31A;B31A;1103 1162 11C1;B31A;1103 1162 11C1;
+B31B;B31B;1103 1162 11C2;B31B;1103 1162 11C2;
+B31C;B31C;1103 1163;B31C;1103 1163;
+B31D;B31D;1103 1163 11A8;B31D;1103 1163 11A8;
+B31E;B31E;1103 1163 11A9;B31E;1103 1163 11A9;
+B31F;B31F;1103 1163 11AA;B31F;1103 1163 11AA;
+B320;B320;1103 1163 11AB;B320;1103 1163 11AB;
+B321;B321;1103 1163 11AC;B321;1103 1163 11AC;
+B322;B322;1103 1163 11AD;B322;1103 1163 11AD;
+B323;B323;1103 1163 11AE;B323;1103 1163 11AE;
+B324;B324;1103 1163 11AF;B324;1103 1163 11AF;
+B325;B325;1103 1163 11B0;B325;1103 1163 11B0;
+B326;B326;1103 1163 11B1;B326;1103 1163 11B1;
+B327;B327;1103 1163 11B2;B327;1103 1163 11B2;
+B328;B328;1103 1163 11B3;B328;1103 1163 11B3;
+B329;B329;1103 1163 11B4;B329;1103 1163 11B4;
+B32A;B32A;1103 1163 11B5;B32A;1103 1163 11B5;
+B32B;B32B;1103 1163 11B6;B32B;1103 1163 11B6;
+B32C;B32C;1103 1163 11B7;B32C;1103 1163 11B7;
+B32D;B32D;1103 1163 11B8;B32D;1103 1163 11B8;
+B32E;B32E;1103 1163 11B9;B32E;1103 1163 11B9;
+B32F;B32F;1103 1163 11BA;B32F;1103 1163 11BA;
+B330;B330;1103 1163 11BB;B330;1103 1163 11BB;
+B331;B331;1103 1163 11BC;B331;1103 1163 11BC;
+B332;B332;1103 1163 11BD;B332;1103 1163 11BD;
+B333;B333;1103 1163 11BE;B333;1103 1163 11BE;
+B334;B334;1103 1163 11BF;B334;1103 1163 11BF;
+B335;B335;1103 1163 11C0;B335;1103 1163 11C0;
+B336;B336;1103 1163 11C1;B336;1103 1163 11C1;
+B337;B337;1103 1163 11C2;B337;1103 1163 11C2;
+B338;B338;1103 1164;B338;1103 1164;
+B339;B339;1103 1164 11A8;B339;1103 1164 11A8;
+B33A;B33A;1103 1164 11A9;B33A;1103 1164 11A9;
+B33B;B33B;1103 1164 11AA;B33B;1103 1164 11AA;
+B33C;B33C;1103 1164 11AB;B33C;1103 1164 11AB;
+B33D;B33D;1103 1164 11AC;B33D;1103 1164 11AC;
+B33E;B33E;1103 1164 11AD;B33E;1103 1164 11AD;
+B33F;B33F;1103 1164 11AE;B33F;1103 1164 11AE;
+B340;B340;1103 1164 11AF;B340;1103 1164 11AF;
+B341;B341;1103 1164 11B0;B341;1103 1164 11B0;
+B342;B342;1103 1164 11B1;B342;1103 1164 11B1;
+B343;B343;1103 1164 11B2;B343;1103 1164 11B2;
+B344;B344;1103 1164 11B3;B344;1103 1164 11B3;
+B345;B345;1103 1164 11B4;B345;1103 1164 11B4;
+B346;B346;1103 1164 11B5;B346;1103 1164 11B5;
+B347;B347;1103 1164 11B6;B347;1103 1164 11B6;
+B348;B348;1103 1164 11B7;B348;1103 1164 11B7;
+B349;B349;1103 1164 11B8;B349;1103 1164 11B8;
+B34A;B34A;1103 1164 11B9;B34A;1103 1164 11B9;
+B34B;B34B;1103 1164 11BA;B34B;1103 1164 11BA;
+B34C;B34C;1103 1164 11BB;B34C;1103 1164 11BB;
+B34D;B34D;1103 1164 11BC;B34D;1103 1164 11BC;
+B34E;B34E;1103 1164 11BD;B34E;1103 1164 11BD;
+B34F;B34F;1103 1164 11BE;B34F;1103 1164 11BE;
+B350;B350;1103 1164 11BF;B350;1103 1164 11BF;
+B351;B351;1103 1164 11C0;B351;1103 1164 11C0;
+B352;B352;1103 1164 11C1;B352;1103 1164 11C1;
+B353;B353;1103 1164 11C2;B353;1103 1164 11C2;
+B354;B354;1103 1165;B354;1103 1165;
+B355;B355;1103 1165 11A8;B355;1103 1165 11A8;
+B356;B356;1103 1165 11A9;B356;1103 1165 11A9;
+B357;B357;1103 1165 11AA;B357;1103 1165 11AA;
+B358;B358;1103 1165 11AB;B358;1103 1165 11AB;
+B359;B359;1103 1165 11AC;B359;1103 1165 11AC;
+B35A;B35A;1103 1165 11AD;B35A;1103 1165 11AD;
+B35B;B35B;1103 1165 11AE;B35B;1103 1165 11AE;
+B35C;B35C;1103 1165 11AF;B35C;1103 1165 11AF;
+B35D;B35D;1103 1165 11B0;B35D;1103 1165 11B0;
+B35E;B35E;1103 1165 11B1;B35E;1103 1165 11B1;
+B35F;B35F;1103 1165 11B2;B35F;1103 1165 11B2;
+B360;B360;1103 1165 11B3;B360;1103 1165 11B3;
+B361;B361;1103 1165 11B4;B361;1103 1165 11B4;
+B362;B362;1103 1165 11B5;B362;1103 1165 11B5;
+B363;B363;1103 1165 11B6;B363;1103 1165 11B6;
+B364;B364;1103 1165 11B7;B364;1103 1165 11B7;
+B365;B365;1103 1165 11B8;B365;1103 1165 11B8;
+B366;B366;1103 1165 11B9;B366;1103 1165 11B9;
+B367;B367;1103 1165 11BA;B367;1103 1165 11BA;
+B368;B368;1103 1165 11BB;B368;1103 1165 11BB;
+B369;B369;1103 1165 11BC;B369;1103 1165 11BC;
+B36A;B36A;1103 1165 11BD;B36A;1103 1165 11BD;
+B36B;B36B;1103 1165 11BE;B36B;1103 1165 11BE;
+B36C;B36C;1103 1165 11BF;B36C;1103 1165 11BF;
+B36D;B36D;1103 1165 11C0;B36D;1103 1165 11C0;
+B36E;B36E;1103 1165 11C1;B36E;1103 1165 11C1;
+B36F;B36F;1103 1165 11C2;B36F;1103 1165 11C2;
+B370;B370;1103 1166;B370;1103 1166;
+B371;B371;1103 1166 11A8;B371;1103 1166 11A8;
+B372;B372;1103 1166 11A9;B372;1103 1166 11A9;
+B373;B373;1103 1166 11AA;B373;1103 1166 11AA;
+B374;B374;1103 1166 11AB;B374;1103 1166 11AB;
+B375;B375;1103 1166 11AC;B375;1103 1166 11AC;
+B376;B376;1103 1166 11AD;B376;1103 1166 11AD;
+B377;B377;1103 1166 11AE;B377;1103 1166 11AE;
+B378;B378;1103 1166 11AF;B378;1103 1166 11AF;
+B379;B379;1103 1166 11B0;B379;1103 1166 11B0;
+B37A;B37A;1103 1166 11B1;B37A;1103 1166 11B1;
+B37B;B37B;1103 1166 11B2;B37B;1103 1166 11B2;
+B37C;B37C;1103 1166 11B3;B37C;1103 1166 11B3;
+B37D;B37D;1103 1166 11B4;B37D;1103 1166 11B4;
+B37E;B37E;1103 1166 11B5;B37E;1103 1166 11B5;
+B37F;B37F;1103 1166 11B6;B37F;1103 1166 11B6;
+B380;B380;1103 1166 11B7;B380;1103 1166 11B7;
+B381;B381;1103 1166 11B8;B381;1103 1166 11B8;
+B382;B382;1103 1166 11B9;B382;1103 1166 11B9;
+B383;B383;1103 1166 11BA;B383;1103 1166 11BA;
+B384;B384;1103 1166 11BB;B384;1103 1166 11BB;
+B385;B385;1103 1166 11BC;B385;1103 1166 11BC;
+B386;B386;1103 1166 11BD;B386;1103 1166 11BD;
+B387;B387;1103 1166 11BE;B387;1103 1166 11BE;
+B388;B388;1103 1166 11BF;B388;1103 1166 11BF;
+B389;B389;1103 1166 11C0;B389;1103 1166 11C0;
+B38A;B38A;1103 1166 11C1;B38A;1103 1166 11C1;
+B38B;B38B;1103 1166 11C2;B38B;1103 1166 11C2;
+B38C;B38C;1103 1167;B38C;1103 1167;
+B38D;B38D;1103 1167 11A8;B38D;1103 1167 11A8;
+B38E;B38E;1103 1167 11A9;B38E;1103 1167 11A9;
+B38F;B38F;1103 1167 11AA;B38F;1103 1167 11AA;
+B390;B390;1103 1167 11AB;B390;1103 1167 11AB;
+B391;B391;1103 1167 11AC;B391;1103 1167 11AC;
+B392;B392;1103 1167 11AD;B392;1103 1167 11AD;
+B393;B393;1103 1167 11AE;B393;1103 1167 11AE;
+B394;B394;1103 1167 11AF;B394;1103 1167 11AF;
+B395;B395;1103 1167 11B0;B395;1103 1167 11B0;
+B396;B396;1103 1167 11B1;B396;1103 1167 11B1;
+B397;B397;1103 1167 11B2;B397;1103 1167 11B2;
+B398;B398;1103 1167 11B3;B398;1103 1167 11B3;
+B399;B399;1103 1167 11B4;B399;1103 1167 11B4;
+B39A;B39A;1103 1167 11B5;B39A;1103 1167 11B5;
+B39B;B39B;1103 1167 11B6;B39B;1103 1167 11B6;
+B39C;B39C;1103 1167 11B7;B39C;1103 1167 11B7;
+B39D;B39D;1103 1167 11B8;B39D;1103 1167 11B8;
+B39E;B39E;1103 1167 11B9;B39E;1103 1167 11B9;
+B39F;B39F;1103 1167 11BA;B39F;1103 1167 11BA;
+B3A0;B3A0;1103 1167 11BB;B3A0;1103 1167 11BB;
+B3A1;B3A1;1103 1167 11BC;B3A1;1103 1167 11BC;
+B3A2;B3A2;1103 1167 11BD;B3A2;1103 1167 11BD;
+B3A3;B3A3;1103 1167 11BE;B3A3;1103 1167 11BE;
+B3A4;B3A4;1103 1167 11BF;B3A4;1103 1167 11BF;
+B3A5;B3A5;1103 1167 11C0;B3A5;1103 1167 11C0;
+B3A6;B3A6;1103 1167 11C1;B3A6;1103 1167 11C1;
+B3A7;B3A7;1103 1167 11C2;B3A7;1103 1167 11C2;
+B3A8;B3A8;1103 1168;B3A8;1103 1168;
+B3A9;B3A9;1103 1168 11A8;B3A9;1103 1168 11A8;
+B3AA;B3AA;1103 1168 11A9;B3AA;1103 1168 11A9;
+B3AB;B3AB;1103 1168 11AA;B3AB;1103 1168 11AA;
+B3AC;B3AC;1103 1168 11AB;B3AC;1103 1168 11AB;
+B3AD;B3AD;1103 1168 11AC;B3AD;1103 1168 11AC;
+B3AE;B3AE;1103 1168 11AD;B3AE;1103 1168 11AD;
+B3AF;B3AF;1103 1168 11AE;B3AF;1103 1168 11AE;
+B3B0;B3B0;1103 1168 11AF;B3B0;1103 1168 11AF;
+B3B1;B3B1;1103 1168 11B0;B3B1;1103 1168 11B0;
+B3B2;B3B2;1103 1168 11B1;B3B2;1103 1168 11B1;
+B3B3;B3B3;1103 1168 11B2;B3B3;1103 1168 11B2;
+B3B4;B3B4;1103 1168 11B3;B3B4;1103 1168 11B3;
+B3B5;B3B5;1103 1168 11B4;B3B5;1103 1168 11B4;
+B3B6;B3B6;1103 1168 11B5;B3B6;1103 1168 11B5;
+B3B7;B3B7;1103 1168 11B6;B3B7;1103 1168 11B6;
+B3B8;B3B8;1103 1168 11B7;B3B8;1103 1168 11B7;
+B3B9;B3B9;1103 1168 11B8;B3B9;1103 1168 11B8;
+B3BA;B3BA;1103 1168 11B9;B3BA;1103 1168 11B9;
+B3BB;B3BB;1103 1168 11BA;B3BB;1103 1168 11BA;
+B3BC;B3BC;1103 1168 11BB;B3BC;1103 1168 11BB;
+B3BD;B3BD;1103 1168 11BC;B3BD;1103 1168 11BC;
+B3BE;B3BE;1103 1168 11BD;B3BE;1103 1168 11BD;
+B3BF;B3BF;1103 1168 11BE;B3BF;1103 1168 11BE;
+B3C0;B3C0;1103 1168 11BF;B3C0;1103 1168 11BF;
+B3C1;B3C1;1103 1168 11C0;B3C1;1103 1168 11C0;
+B3C2;B3C2;1103 1168 11C1;B3C2;1103 1168 11C1;
+B3C3;B3C3;1103 1168 11C2;B3C3;1103 1168 11C2;
+B3C4;B3C4;1103 1169;B3C4;1103 1169;
+B3C5;B3C5;1103 1169 11A8;B3C5;1103 1169 11A8;
+B3C6;B3C6;1103 1169 11A9;B3C6;1103 1169 11A9;
+B3C7;B3C7;1103 1169 11AA;B3C7;1103 1169 11AA;
+B3C8;B3C8;1103 1169 11AB;B3C8;1103 1169 11AB;
+B3C9;B3C9;1103 1169 11AC;B3C9;1103 1169 11AC;
+B3CA;B3CA;1103 1169 11AD;B3CA;1103 1169 11AD;
+B3CB;B3CB;1103 1169 11AE;B3CB;1103 1169 11AE;
+B3CC;B3CC;1103 1169 11AF;B3CC;1103 1169 11AF;
+B3CD;B3CD;1103 1169 11B0;B3CD;1103 1169 11B0;
+B3CE;B3CE;1103 1169 11B1;B3CE;1103 1169 11B1;
+B3CF;B3CF;1103 1169 11B2;B3CF;1103 1169 11B2;
+B3D0;B3D0;1103 1169 11B3;B3D0;1103 1169 11B3;
+B3D1;B3D1;1103 1169 11B4;B3D1;1103 1169 11B4;
+B3D2;B3D2;1103 1169 11B5;B3D2;1103 1169 11B5;
+B3D3;B3D3;1103 1169 11B6;B3D3;1103 1169 11B6;
+B3D4;B3D4;1103 1169 11B7;B3D4;1103 1169 11B7;
+B3D5;B3D5;1103 1169 11B8;B3D5;1103 1169 11B8;
+B3D6;B3D6;1103 1169 11B9;B3D6;1103 1169 11B9;
+B3D7;B3D7;1103 1169 11BA;B3D7;1103 1169 11BA;
+B3D8;B3D8;1103 1169 11BB;B3D8;1103 1169 11BB;
+B3D9;B3D9;1103 1169 11BC;B3D9;1103 1169 11BC;
+B3DA;B3DA;1103 1169 11BD;B3DA;1103 1169 11BD;
+B3DB;B3DB;1103 1169 11BE;B3DB;1103 1169 11BE;
+B3DC;B3DC;1103 1169 11BF;B3DC;1103 1169 11BF;
+B3DD;B3DD;1103 1169 11C0;B3DD;1103 1169 11C0;
+B3DE;B3DE;1103 1169 11C1;B3DE;1103 1169 11C1;
+B3DF;B3DF;1103 1169 11C2;B3DF;1103 1169 11C2;
+B3E0;B3E0;1103 116A;B3E0;1103 116A;
+B3E1;B3E1;1103 116A 11A8;B3E1;1103 116A 11A8;
+B3E2;B3E2;1103 116A 11A9;B3E2;1103 116A 11A9;
+B3E3;B3E3;1103 116A 11AA;B3E3;1103 116A 11AA;
+B3E4;B3E4;1103 116A 11AB;B3E4;1103 116A 11AB;
+B3E5;B3E5;1103 116A 11AC;B3E5;1103 116A 11AC;
+B3E6;B3E6;1103 116A 11AD;B3E6;1103 116A 11AD;
+B3E7;B3E7;1103 116A 11AE;B3E7;1103 116A 11AE;
+B3E8;B3E8;1103 116A 11AF;B3E8;1103 116A 11AF;
+B3E9;B3E9;1103 116A 11B0;B3E9;1103 116A 11B0;
+B3EA;B3EA;1103 116A 11B1;B3EA;1103 116A 11B1;
+B3EB;B3EB;1103 116A 11B2;B3EB;1103 116A 11B2;
+B3EC;B3EC;1103 116A 11B3;B3EC;1103 116A 11B3;
+B3ED;B3ED;1103 116A 11B4;B3ED;1103 116A 11B4;
+B3EE;B3EE;1103 116A 11B5;B3EE;1103 116A 11B5;
+B3EF;B3EF;1103 116A 11B6;B3EF;1103 116A 11B6;
+B3F0;B3F0;1103 116A 11B7;B3F0;1103 116A 11B7;
+B3F1;B3F1;1103 116A 11B8;B3F1;1103 116A 11B8;
+B3F2;B3F2;1103 116A 11B9;B3F2;1103 116A 11B9;
+B3F3;B3F3;1103 116A 11BA;B3F3;1103 116A 11BA;
+B3F4;B3F4;1103 116A 11BB;B3F4;1103 116A 11BB;
+B3F5;B3F5;1103 116A 11BC;B3F5;1103 116A 11BC;
+B3F6;B3F6;1103 116A 11BD;B3F6;1103 116A 11BD;
+B3F7;B3F7;1103 116A 11BE;B3F7;1103 116A 11BE;
+B3F8;B3F8;1103 116A 11BF;B3F8;1103 116A 11BF;
+B3F9;B3F9;1103 116A 11C0;B3F9;1103 116A 11C0;
+B3FA;B3FA;1103 116A 11C1;B3FA;1103 116A 11C1;
+B3FB;B3FB;1103 116A 11C2;B3FB;1103 116A 11C2;
+B3FC;B3FC;1103 116B;B3FC;1103 116B;
+B3FD;B3FD;1103 116B 11A8;B3FD;1103 116B 11A8;
+B3FE;B3FE;1103 116B 11A9;B3FE;1103 116B 11A9;
+B3FF;B3FF;1103 116B 11AA;B3FF;1103 116B 11AA;
+B400;B400;1103 116B 11AB;B400;1103 116B 11AB;
+B401;B401;1103 116B 11AC;B401;1103 116B 11AC;
+B402;B402;1103 116B 11AD;B402;1103 116B 11AD;
+B403;B403;1103 116B 11AE;B403;1103 116B 11AE;
+B404;B404;1103 116B 11AF;B404;1103 116B 11AF;
+B405;B405;1103 116B 11B0;B405;1103 116B 11B0;
+B406;B406;1103 116B 11B1;B406;1103 116B 11B1;
+B407;B407;1103 116B 11B2;B407;1103 116B 11B2;
+B408;B408;1103 116B 11B3;B408;1103 116B 11B3;
+B409;B409;1103 116B 11B4;B409;1103 116B 11B4;
+B40A;B40A;1103 116B 11B5;B40A;1103 116B 11B5;
+B40B;B40B;1103 116B 11B6;B40B;1103 116B 11B6;
+B40C;B40C;1103 116B 11B7;B40C;1103 116B 11B7;
+B40D;B40D;1103 116B 11B8;B40D;1103 116B 11B8;
+B40E;B40E;1103 116B 11B9;B40E;1103 116B 11B9;
+B40F;B40F;1103 116B 11BA;B40F;1103 116B 11BA;
+B410;B410;1103 116B 11BB;B410;1103 116B 11BB;
+B411;B411;1103 116B 11BC;B411;1103 116B 11BC;
+B412;B412;1103 116B 11BD;B412;1103 116B 11BD;
+B413;B413;1103 116B 11BE;B413;1103 116B 11BE;
+B414;B414;1103 116B 11BF;B414;1103 116B 11BF;
+B415;B415;1103 116B 11C0;B415;1103 116B 11C0;
+B416;B416;1103 116B 11C1;B416;1103 116B 11C1;
+B417;B417;1103 116B 11C2;B417;1103 116B 11C2;
+B418;B418;1103 116C;B418;1103 116C;
+B419;B419;1103 116C 11A8;B419;1103 116C 11A8;
+B41A;B41A;1103 116C 11A9;B41A;1103 116C 11A9;
+B41B;B41B;1103 116C 11AA;B41B;1103 116C 11AA;
+B41C;B41C;1103 116C 11AB;B41C;1103 116C 11AB;
+B41D;B41D;1103 116C 11AC;B41D;1103 116C 11AC;
+B41E;B41E;1103 116C 11AD;B41E;1103 116C 11AD;
+B41F;B41F;1103 116C 11AE;B41F;1103 116C 11AE;
+B420;B420;1103 116C 11AF;B420;1103 116C 11AF;
+B421;B421;1103 116C 11B0;B421;1103 116C 11B0;
+B422;B422;1103 116C 11B1;B422;1103 116C 11B1;
+B423;B423;1103 116C 11B2;B423;1103 116C 11B2;
+B424;B424;1103 116C 11B3;B424;1103 116C 11B3;
+B425;B425;1103 116C 11B4;B425;1103 116C 11B4;
+B426;B426;1103 116C 11B5;B426;1103 116C 11B5;
+B427;B427;1103 116C 11B6;B427;1103 116C 11B6;
+B428;B428;1103 116C 11B7;B428;1103 116C 11B7;
+B429;B429;1103 116C 11B8;B429;1103 116C 11B8;
+B42A;B42A;1103 116C 11B9;B42A;1103 116C 11B9;
+B42B;B42B;1103 116C 11BA;B42B;1103 116C 11BA;
+B42C;B42C;1103 116C 11BB;B42C;1103 116C 11BB;
+B42D;B42D;1103 116C 11BC;B42D;1103 116C 11BC;
+B42E;B42E;1103 116C 11BD;B42E;1103 116C 11BD;
+B42F;B42F;1103 116C 11BE;B42F;1103 116C 11BE;
+B430;B430;1103 116C 11BF;B430;1103 116C 11BF;
+B431;B431;1103 116C 11C0;B431;1103 116C 11C0;
+B432;B432;1103 116C 11C1;B432;1103 116C 11C1;
+B433;B433;1103 116C 11C2;B433;1103 116C 11C2;
+B434;B434;1103 116D;B434;1103 116D;
+B435;B435;1103 116D 11A8;B435;1103 116D 11A8;
+B436;B436;1103 116D 11A9;B436;1103 116D 11A9;
+B437;B437;1103 116D 11AA;B437;1103 116D 11AA;
+B438;B438;1103 116D 11AB;B438;1103 116D 11AB;
+B439;B439;1103 116D 11AC;B439;1103 116D 11AC;
+B43A;B43A;1103 116D 11AD;B43A;1103 116D 11AD;
+B43B;B43B;1103 116D 11AE;B43B;1103 116D 11AE;
+B43C;B43C;1103 116D 11AF;B43C;1103 116D 11AF;
+B43D;B43D;1103 116D 11B0;B43D;1103 116D 11B0;
+B43E;B43E;1103 116D 11B1;B43E;1103 116D 11B1;
+B43F;B43F;1103 116D 11B2;B43F;1103 116D 11B2;
+B440;B440;1103 116D 11B3;B440;1103 116D 11B3;
+B441;B441;1103 116D 11B4;B441;1103 116D 11B4;
+B442;B442;1103 116D 11B5;B442;1103 116D 11B5;
+B443;B443;1103 116D 11B6;B443;1103 116D 11B6;
+B444;B444;1103 116D 11B7;B444;1103 116D 11B7;
+B445;B445;1103 116D 11B8;B445;1103 116D 11B8;
+B446;B446;1103 116D 11B9;B446;1103 116D 11B9;
+B447;B447;1103 116D 11BA;B447;1103 116D 11BA;
+B448;B448;1103 116D 11BB;B448;1103 116D 11BB;
+B449;B449;1103 116D 11BC;B449;1103 116D 11BC;
+B44A;B44A;1103 116D 11BD;B44A;1103 116D 11BD;
+B44B;B44B;1103 116D 11BE;B44B;1103 116D 11BE;
+B44C;B44C;1103 116D 11BF;B44C;1103 116D 11BF;
+B44D;B44D;1103 116D 11C0;B44D;1103 116D 11C0;
+B44E;B44E;1103 116D 11C1;B44E;1103 116D 11C1;
+B44F;B44F;1103 116D 11C2;B44F;1103 116D 11C2;
+B450;B450;1103 116E;B450;1103 116E;
+B451;B451;1103 116E 11A8;B451;1103 116E 11A8;
+B452;B452;1103 116E 11A9;B452;1103 116E 11A9;
+B453;B453;1103 116E 11AA;B453;1103 116E 11AA;
+B454;B454;1103 116E 11AB;B454;1103 116E 11AB;
+B455;B455;1103 116E 11AC;B455;1103 116E 11AC;
+B456;B456;1103 116E 11AD;B456;1103 116E 11AD;
+B457;B457;1103 116E 11AE;B457;1103 116E 11AE;
+B458;B458;1103 116E 11AF;B458;1103 116E 11AF;
+B459;B459;1103 116E 11B0;B459;1103 116E 11B0;
+B45A;B45A;1103 116E 11B1;B45A;1103 116E 11B1;
+B45B;B45B;1103 116E 11B2;B45B;1103 116E 11B2;
+B45C;B45C;1103 116E 11B3;B45C;1103 116E 11B3;
+B45D;B45D;1103 116E 11B4;B45D;1103 116E 11B4;
+B45E;B45E;1103 116E 11B5;B45E;1103 116E 11B5;
+B45F;B45F;1103 116E 11B6;B45F;1103 116E 11B6;
+B460;B460;1103 116E 11B7;B460;1103 116E 11B7;
+B461;B461;1103 116E 11B8;B461;1103 116E 11B8;
+B462;B462;1103 116E 11B9;B462;1103 116E 11B9;
+B463;B463;1103 116E 11BA;B463;1103 116E 11BA;
+B464;B464;1103 116E 11BB;B464;1103 116E 11BB;
+B465;B465;1103 116E 11BC;B465;1103 116E 11BC;
+B466;B466;1103 116E 11BD;B466;1103 116E 11BD;
+B467;B467;1103 116E 11BE;B467;1103 116E 11BE;
+B468;B468;1103 116E 11BF;B468;1103 116E 11BF;
+B469;B469;1103 116E 11C0;B469;1103 116E 11C0;
+B46A;B46A;1103 116E 11C1;B46A;1103 116E 11C1;
+B46B;B46B;1103 116E 11C2;B46B;1103 116E 11C2;
+B46C;B46C;1103 116F;B46C;1103 116F;
+B46D;B46D;1103 116F 11A8;B46D;1103 116F 11A8;
+B46E;B46E;1103 116F 11A9;B46E;1103 116F 11A9;
+B46F;B46F;1103 116F 11AA;B46F;1103 116F 11AA;
+B470;B470;1103 116F 11AB;B470;1103 116F 11AB;
+B471;B471;1103 116F 11AC;B471;1103 116F 11AC;
+B472;B472;1103 116F 11AD;B472;1103 116F 11AD;
+B473;B473;1103 116F 11AE;B473;1103 116F 11AE;
+B474;B474;1103 116F 11AF;B474;1103 116F 11AF;
+B475;B475;1103 116F 11B0;B475;1103 116F 11B0;
+B476;B476;1103 116F 11B1;B476;1103 116F 11B1;
+B477;B477;1103 116F 11B2;B477;1103 116F 11B2;
+B478;B478;1103 116F 11B3;B478;1103 116F 11B3;
+B479;B479;1103 116F 11B4;B479;1103 116F 11B4;
+B47A;B47A;1103 116F 11B5;B47A;1103 116F 11B5;
+B47B;B47B;1103 116F 11B6;B47B;1103 116F 11B6;
+B47C;B47C;1103 116F 11B7;B47C;1103 116F 11B7;
+B47D;B47D;1103 116F 11B8;B47D;1103 116F 11B8;
+B47E;B47E;1103 116F 11B9;B47E;1103 116F 11B9;
+B47F;B47F;1103 116F 11BA;B47F;1103 116F 11BA;
+B480;B480;1103 116F 11BB;B480;1103 116F 11BB;
+B481;B481;1103 116F 11BC;B481;1103 116F 11BC;
+B482;B482;1103 116F 11BD;B482;1103 116F 11BD;
+B483;B483;1103 116F 11BE;B483;1103 116F 11BE;
+B484;B484;1103 116F 11BF;B484;1103 116F 11BF;
+B485;B485;1103 116F 11C0;B485;1103 116F 11C0;
+B486;B486;1103 116F 11C1;B486;1103 116F 11C1;
+B487;B487;1103 116F 11C2;B487;1103 116F 11C2;
+B488;B488;1103 1170;B488;1103 1170;
+B489;B489;1103 1170 11A8;B489;1103 1170 11A8;
+B48A;B48A;1103 1170 11A9;B48A;1103 1170 11A9;
+B48B;B48B;1103 1170 11AA;B48B;1103 1170 11AA;
+B48C;B48C;1103 1170 11AB;B48C;1103 1170 11AB;
+B48D;B48D;1103 1170 11AC;B48D;1103 1170 11AC;
+B48E;B48E;1103 1170 11AD;B48E;1103 1170 11AD;
+B48F;B48F;1103 1170 11AE;B48F;1103 1170 11AE;
+B490;B490;1103 1170 11AF;B490;1103 1170 11AF;
+B491;B491;1103 1170 11B0;B491;1103 1170 11B0;
+B492;B492;1103 1170 11B1;B492;1103 1170 11B1;
+B493;B493;1103 1170 11B2;B493;1103 1170 11B2;
+B494;B494;1103 1170 11B3;B494;1103 1170 11B3;
+B495;B495;1103 1170 11B4;B495;1103 1170 11B4;
+B496;B496;1103 1170 11B5;B496;1103 1170 11B5;
+B497;B497;1103 1170 11B6;B497;1103 1170 11B6;
+B498;B498;1103 1170 11B7;B498;1103 1170 11B7;
+B499;B499;1103 1170 11B8;B499;1103 1170 11B8;
+B49A;B49A;1103 1170 11B9;B49A;1103 1170 11B9;
+B49B;B49B;1103 1170 11BA;B49B;1103 1170 11BA;
+B49C;B49C;1103 1170 11BB;B49C;1103 1170 11BB;
+B49D;B49D;1103 1170 11BC;B49D;1103 1170 11BC;
+B49E;B49E;1103 1170 11BD;B49E;1103 1170 11BD;
+B49F;B49F;1103 1170 11BE;B49F;1103 1170 11BE;
+B4A0;B4A0;1103 1170 11BF;B4A0;1103 1170 11BF;
+B4A1;B4A1;1103 1170 11C0;B4A1;1103 1170 11C0;
+B4A2;B4A2;1103 1170 11C1;B4A2;1103 1170 11C1;
+B4A3;B4A3;1103 1170 11C2;B4A3;1103 1170 11C2;
+B4A4;B4A4;1103 1171;B4A4;1103 1171;
+B4A5;B4A5;1103 1171 11A8;B4A5;1103 1171 11A8;
+B4A6;B4A6;1103 1171 11A9;B4A6;1103 1171 11A9;
+B4A7;B4A7;1103 1171 11AA;B4A7;1103 1171 11AA;
+B4A8;B4A8;1103 1171 11AB;B4A8;1103 1171 11AB;
+B4A9;B4A9;1103 1171 11AC;B4A9;1103 1171 11AC;
+B4AA;B4AA;1103 1171 11AD;B4AA;1103 1171 11AD;
+B4AB;B4AB;1103 1171 11AE;B4AB;1103 1171 11AE;
+B4AC;B4AC;1103 1171 11AF;B4AC;1103 1171 11AF;
+B4AD;B4AD;1103 1171 11B0;B4AD;1103 1171 11B0;
+B4AE;B4AE;1103 1171 11B1;B4AE;1103 1171 11B1;
+B4AF;B4AF;1103 1171 11B2;B4AF;1103 1171 11B2;
+B4B0;B4B0;1103 1171 11B3;B4B0;1103 1171 11B3;
+B4B1;B4B1;1103 1171 11B4;B4B1;1103 1171 11B4;
+B4B2;B4B2;1103 1171 11B5;B4B2;1103 1171 11B5;
+B4B3;B4B3;1103 1171 11B6;B4B3;1103 1171 11B6;
+B4B4;B4B4;1103 1171 11B7;B4B4;1103 1171 11B7;
+B4B5;B4B5;1103 1171 11B8;B4B5;1103 1171 11B8;
+B4B6;B4B6;1103 1171 11B9;B4B6;1103 1171 11B9;
+B4B7;B4B7;1103 1171 11BA;B4B7;1103 1171 11BA;
+B4B8;B4B8;1103 1171 11BB;B4B8;1103 1171 11BB;
+B4B9;B4B9;1103 1171 11BC;B4B9;1103 1171 11BC;
+B4BA;B4BA;1103 1171 11BD;B4BA;1103 1171 11BD;
+B4BB;B4BB;1103 1171 11BE;B4BB;1103 1171 11BE;
+B4BC;B4BC;1103 1171 11BF;B4BC;1103 1171 11BF;
+B4BD;B4BD;1103 1171 11C0;B4BD;1103 1171 11C0;
+B4BE;B4BE;1103 1171 11C1;B4BE;1103 1171 11C1;
+B4BF;B4BF;1103 1171 11C2;B4BF;1103 1171 11C2;
+B4C0;B4C0;1103 1172;B4C0;1103 1172;
+B4C1;B4C1;1103 1172 11A8;B4C1;1103 1172 11A8;
+B4C2;B4C2;1103 1172 11A9;B4C2;1103 1172 11A9;
+B4C3;B4C3;1103 1172 11AA;B4C3;1103 1172 11AA;
+B4C4;B4C4;1103 1172 11AB;B4C4;1103 1172 11AB;
+B4C5;B4C5;1103 1172 11AC;B4C5;1103 1172 11AC;
+B4C6;B4C6;1103 1172 11AD;B4C6;1103 1172 11AD;
+B4C7;B4C7;1103 1172 11AE;B4C7;1103 1172 11AE;
+B4C8;B4C8;1103 1172 11AF;B4C8;1103 1172 11AF;
+B4C9;B4C9;1103 1172 11B0;B4C9;1103 1172 11B0;
+B4CA;B4CA;1103 1172 11B1;B4CA;1103 1172 11B1;
+B4CB;B4CB;1103 1172 11B2;B4CB;1103 1172 11B2;
+B4CC;B4CC;1103 1172 11B3;B4CC;1103 1172 11B3;
+B4CD;B4CD;1103 1172 11B4;B4CD;1103 1172 11B4;
+B4CE;B4CE;1103 1172 11B5;B4CE;1103 1172 11B5;
+B4CF;B4CF;1103 1172 11B6;B4CF;1103 1172 11B6;
+B4D0;B4D0;1103 1172 11B7;B4D0;1103 1172 11B7;
+B4D1;B4D1;1103 1172 11B8;B4D1;1103 1172 11B8;
+B4D2;B4D2;1103 1172 11B9;B4D2;1103 1172 11B9;
+B4D3;B4D3;1103 1172 11BA;B4D3;1103 1172 11BA;
+B4D4;B4D4;1103 1172 11BB;B4D4;1103 1172 11BB;
+B4D5;B4D5;1103 1172 11BC;B4D5;1103 1172 11BC;
+B4D6;B4D6;1103 1172 11BD;B4D6;1103 1172 11BD;
+B4D7;B4D7;1103 1172 11BE;B4D7;1103 1172 11BE;
+B4D8;B4D8;1103 1172 11BF;B4D8;1103 1172 11BF;
+B4D9;B4D9;1103 1172 11C0;B4D9;1103 1172 11C0;
+B4DA;B4DA;1103 1172 11C1;B4DA;1103 1172 11C1;
+B4DB;B4DB;1103 1172 11C2;B4DB;1103 1172 11C2;
+B4DC;B4DC;1103 1173;B4DC;1103 1173;
+B4DD;B4DD;1103 1173 11A8;B4DD;1103 1173 11A8;
+B4DE;B4DE;1103 1173 11A9;B4DE;1103 1173 11A9;
+B4DF;B4DF;1103 1173 11AA;B4DF;1103 1173 11AA;
+B4E0;B4E0;1103 1173 11AB;B4E0;1103 1173 11AB;
+B4E1;B4E1;1103 1173 11AC;B4E1;1103 1173 11AC;
+B4E2;B4E2;1103 1173 11AD;B4E2;1103 1173 11AD;
+B4E3;B4E3;1103 1173 11AE;B4E3;1103 1173 11AE;
+B4E4;B4E4;1103 1173 11AF;B4E4;1103 1173 11AF;
+B4E5;B4E5;1103 1173 11B0;B4E5;1103 1173 11B0;
+B4E6;B4E6;1103 1173 11B1;B4E6;1103 1173 11B1;
+B4E7;B4E7;1103 1173 11B2;B4E7;1103 1173 11B2;
+B4E8;B4E8;1103 1173 11B3;B4E8;1103 1173 11B3;
+B4E9;B4E9;1103 1173 11B4;B4E9;1103 1173 11B4;
+B4EA;B4EA;1103 1173 11B5;B4EA;1103 1173 11B5;
+B4EB;B4EB;1103 1173 11B6;B4EB;1103 1173 11B6;
+B4EC;B4EC;1103 1173 11B7;B4EC;1103 1173 11B7;
+B4ED;B4ED;1103 1173 11B8;B4ED;1103 1173 11B8;
+B4EE;B4EE;1103 1173 11B9;B4EE;1103 1173 11B9;
+B4EF;B4EF;1103 1173 11BA;B4EF;1103 1173 11BA;
+B4F0;B4F0;1103 1173 11BB;B4F0;1103 1173 11BB;
+B4F1;B4F1;1103 1173 11BC;B4F1;1103 1173 11BC;
+B4F2;B4F2;1103 1173 11BD;B4F2;1103 1173 11BD;
+B4F3;B4F3;1103 1173 11BE;B4F3;1103 1173 11BE;
+B4F4;B4F4;1103 1173 11BF;B4F4;1103 1173 11BF;
+B4F5;B4F5;1103 1173 11C0;B4F5;1103 1173 11C0;
+B4F6;B4F6;1103 1173 11C1;B4F6;1103 1173 11C1;
+B4F7;B4F7;1103 1173 11C2;B4F7;1103 1173 11C2;
+B4F8;B4F8;1103 1174;B4F8;1103 1174;
+B4F9;B4F9;1103 1174 11A8;B4F9;1103 1174 11A8;
+B4FA;B4FA;1103 1174 11A9;B4FA;1103 1174 11A9;
+B4FB;B4FB;1103 1174 11AA;B4FB;1103 1174 11AA;
+B4FC;B4FC;1103 1174 11AB;B4FC;1103 1174 11AB;
+B4FD;B4FD;1103 1174 11AC;B4FD;1103 1174 11AC;
+B4FE;B4FE;1103 1174 11AD;B4FE;1103 1174 11AD;
+B4FF;B4FF;1103 1174 11AE;B4FF;1103 1174 11AE;
+B500;B500;1103 1174 11AF;B500;1103 1174 11AF;
+B501;B501;1103 1174 11B0;B501;1103 1174 11B0;
+B502;B502;1103 1174 11B1;B502;1103 1174 11B1;
+B503;B503;1103 1174 11B2;B503;1103 1174 11B2;
+B504;B504;1103 1174 11B3;B504;1103 1174 11B3;
+B505;B505;1103 1174 11B4;B505;1103 1174 11B4;
+B506;B506;1103 1174 11B5;B506;1103 1174 11B5;
+B507;B507;1103 1174 11B6;B507;1103 1174 11B6;
+B508;B508;1103 1174 11B7;B508;1103 1174 11B7;
+B509;B509;1103 1174 11B8;B509;1103 1174 11B8;
+B50A;B50A;1103 1174 11B9;B50A;1103 1174 11B9;
+B50B;B50B;1103 1174 11BA;B50B;1103 1174 11BA;
+B50C;B50C;1103 1174 11BB;B50C;1103 1174 11BB;
+B50D;B50D;1103 1174 11BC;B50D;1103 1174 11BC;
+B50E;B50E;1103 1174 11BD;B50E;1103 1174 11BD;
+B50F;B50F;1103 1174 11BE;B50F;1103 1174 11BE;
+B510;B510;1103 1174 11BF;B510;1103 1174 11BF;
+B511;B511;1103 1174 11C0;B511;1103 1174 11C0;
+B512;B512;1103 1174 11C1;B512;1103 1174 11C1;
+B513;B513;1103 1174 11C2;B513;1103 1174 11C2;
+B514;B514;1103 1175;B514;1103 1175;
+B515;B515;1103 1175 11A8;B515;1103 1175 11A8;
+B516;B516;1103 1175 11A9;B516;1103 1175 11A9;
+B517;B517;1103 1175 11AA;B517;1103 1175 11AA;
+B518;B518;1103 1175 11AB;B518;1103 1175 11AB;
+B519;B519;1103 1175 11AC;B519;1103 1175 11AC;
+B51A;B51A;1103 1175 11AD;B51A;1103 1175 11AD;
+B51B;B51B;1103 1175 11AE;B51B;1103 1175 11AE;
+B51C;B51C;1103 1175 11AF;B51C;1103 1175 11AF;
+B51D;B51D;1103 1175 11B0;B51D;1103 1175 11B0;
+B51E;B51E;1103 1175 11B1;B51E;1103 1175 11B1;
+B51F;B51F;1103 1175 11B2;B51F;1103 1175 11B2;
+B520;B520;1103 1175 11B3;B520;1103 1175 11B3;
+B521;B521;1103 1175 11B4;B521;1103 1175 11B4;
+B522;B522;1103 1175 11B5;B522;1103 1175 11B5;
+B523;B523;1103 1175 11B6;B523;1103 1175 11B6;
+B524;B524;1103 1175 11B7;B524;1103 1175 11B7;
+B525;B525;1103 1175 11B8;B525;1103 1175 11B8;
+B526;B526;1103 1175 11B9;B526;1103 1175 11B9;
+B527;B527;1103 1175 11BA;B527;1103 1175 11BA;
+B528;B528;1103 1175 11BB;B528;1103 1175 11BB;
+B529;B529;1103 1175 11BC;B529;1103 1175 11BC;
+B52A;B52A;1103 1175 11BD;B52A;1103 1175 11BD;
+B52B;B52B;1103 1175 11BE;B52B;1103 1175 11BE;
+B52C;B52C;1103 1175 11BF;B52C;1103 1175 11BF;
+B52D;B52D;1103 1175 11C0;B52D;1103 1175 11C0;
+B52E;B52E;1103 1175 11C1;B52E;1103 1175 11C1;
+B52F;B52F;1103 1175 11C2;B52F;1103 1175 11C2;
+B530;B530;1104 1161;B530;1104 1161;
+B531;B531;1104 1161 11A8;B531;1104 1161 11A8;
+B532;B532;1104 1161 11A9;B532;1104 1161 11A9;
+B533;B533;1104 1161 11AA;B533;1104 1161 11AA;
+B534;B534;1104 1161 11AB;B534;1104 1161 11AB;
+B535;B535;1104 1161 11AC;B535;1104 1161 11AC;
+B536;B536;1104 1161 11AD;B536;1104 1161 11AD;
+B537;B537;1104 1161 11AE;B537;1104 1161 11AE;
+B538;B538;1104 1161 11AF;B538;1104 1161 11AF;
+B539;B539;1104 1161 11B0;B539;1104 1161 11B0;
+B53A;B53A;1104 1161 11B1;B53A;1104 1161 11B1;
+B53B;B53B;1104 1161 11B2;B53B;1104 1161 11B2;
+B53C;B53C;1104 1161 11B3;B53C;1104 1161 11B3;
+B53D;B53D;1104 1161 11B4;B53D;1104 1161 11B4;
+B53E;B53E;1104 1161 11B5;B53E;1104 1161 11B5;
+B53F;B53F;1104 1161 11B6;B53F;1104 1161 11B6;
+B540;B540;1104 1161 11B7;B540;1104 1161 11B7;
+B541;B541;1104 1161 11B8;B541;1104 1161 11B8;
+B542;B542;1104 1161 11B9;B542;1104 1161 11B9;
+B543;B543;1104 1161 11BA;B543;1104 1161 11BA;
+B544;B544;1104 1161 11BB;B544;1104 1161 11BB;
+B545;B545;1104 1161 11BC;B545;1104 1161 11BC;
+B546;B546;1104 1161 11BD;B546;1104 1161 11BD;
+B547;B547;1104 1161 11BE;B547;1104 1161 11BE;
+B548;B548;1104 1161 11BF;B548;1104 1161 11BF;
+B549;B549;1104 1161 11C0;B549;1104 1161 11C0;
+B54A;B54A;1104 1161 11C1;B54A;1104 1161 11C1;
+B54B;B54B;1104 1161 11C2;B54B;1104 1161 11C2;
+B54C;B54C;1104 1162;B54C;1104 1162;
+B54D;B54D;1104 1162 11A8;B54D;1104 1162 11A8;
+B54E;B54E;1104 1162 11A9;B54E;1104 1162 11A9;
+B54F;B54F;1104 1162 11AA;B54F;1104 1162 11AA;
+B550;B550;1104 1162 11AB;B550;1104 1162 11AB;
+B551;B551;1104 1162 11AC;B551;1104 1162 11AC;
+B552;B552;1104 1162 11AD;B552;1104 1162 11AD;
+B553;B553;1104 1162 11AE;B553;1104 1162 11AE;
+B554;B554;1104 1162 11AF;B554;1104 1162 11AF;
+B555;B555;1104 1162 11B0;B555;1104 1162 11B0;
+B556;B556;1104 1162 11B1;B556;1104 1162 11B1;
+B557;B557;1104 1162 11B2;B557;1104 1162 11B2;
+B558;B558;1104 1162 11B3;B558;1104 1162 11B3;
+B559;B559;1104 1162 11B4;B559;1104 1162 11B4;
+B55A;B55A;1104 1162 11B5;B55A;1104 1162 11B5;
+B55B;B55B;1104 1162 11B6;B55B;1104 1162 11B6;
+B55C;B55C;1104 1162 11B7;B55C;1104 1162 11B7;
+B55D;B55D;1104 1162 11B8;B55D;1104 1162 11B8;
+B55E;B55E;1104 1162 11B9;B55E;1104 1162 11B9;
+B55F;B55F;1104 1162 11BA;B55F;1104 1162 11BA;
+B560;B560;1104 1162 11BB;B560;1104 1162 11BB;
+B561;B561;1104 1162 11BC;B561;1104 1162 11BC;
+B562;B562;1104 1162 11BD;B562;1104 1162 11BD;
+B563;B563;1104 1162 11BE;B563;1104 1162 11BE;
+B564;B564;1104 1162 11BF;B564;1104 1162 11BF;
+B565;B565;1104 1162 11C0;B565;1104 1162 11C0;
+B566;B566;1104 1162 11C1;B566;1104 1162 11C1;
+B567;B567;1104 1162 11C2;B567;1104 1162 11C2;
+B568;B568;1104 1163;B568;1104 1163;
+B569;B569;1104 1163 11A8;B569;1104 1163 11A8;
+B56A;B56A;1104 1163 11A9;B56A;1104 1163 11A9;
+B56B;B56B;1104 1163 11AA;B56B;1104 1163 11AA;
+B56C;B56C;1104 1163 11AB;B56C;1104 1163 11AB;
+B56D;B56D;1104 1163 11AC;B56D;1104 1163 11AC;
+B56E;B56E;1104 1163 11AD;B56E;1104 1163 11AD;
+B56F;B56F;1104 1163 11AE;B56F;1104 1163 11AE;
+B570;B570;1104 1163 11AF;B570;1104 1163 11AF;
+B571;B571;1104 1163 11B0;B571;1104 1163 11B0;
+B572;B572;1104 1163 11B1;B572;1104 1163 11B1;
+B573;B573;1104 1163 11B2;B573;1104 1163 11B2;
+B574;B574;1104 1163 11B3;B574;1104 1163 11B3;
+B575;B575;1104 1163 11B4;B575;1104 1163 11B4;
+B576;B576;1104 1163 11B5;B576;1104 1163 11B5;
+B577;B577;1104 1163 11B6;B577;1104 1163 11B6;
+B578;B578;1104 1163 11B7;B578;1104 1163 11B7;
+B579;B579;1104 1163 11B8;B579;1104 1163 11B8;
+B57A;B57A;1104 1163 11B9;B57A;1104 1163 11B9;
+B57B;B57B;1104 1163 11BA;B57B;1104 1163 11BA;
+B57C;B57C;1104 1163 11BB;B57C;1104 1163 11BB;
+B57D;B57D;1104 1163 11BC;B57D;1104 1163 11BC;
+B57E;B57E;1104 1163 11BD;B57E;1104 1163 11BD;
+B57F;B57F;1104 1163 11BE;B57F;1104 1163 11BE;
+B580;B580;1104 1163 11BF;B580;1104 1163 11BF;
+B581;B581;1104 1163 11C0;B581;1104 1163 11C0;
+B582;B582;1104 1163 11C1;B582;1104 1163 11C1;
+B583;B583;1104 1163 11C2;B583;1104 1163 11C2;
+B584;B584;1104 1164;B584;1104 1164;
+B585;B585;1104 1164 11A8;B585;1104 1164 11A8;
+B586;B586;1104 1164 11A9;B586;1104 1164 11A9;
+B587;B587;1104 1164 11AA;B587;1104 1164 11AA;
+B588;B588;1104 1164 11AB;B588;1104 1164 11AB;
+B589;B589;1104 1164 11AC;B589;1104 1164 11AC;
+B58A;B58A;1104 1164 11AD;B58A;1104 1164 11AD;
+B58B;B58B;1104 1164 11AE;B58B;1104 1164 11AE;
+B58C;B58C;1104 1164 11AF;B58C;1104 1164 11AF;
+B58D;B58D;1104 1164 11B0;B58D;1104 1164 11B0;
+B58E;B58E;1104 1164 11B1;B58E;1104 1164 11B1;
+B58F;B58F;1104 1164 11B2;B58F;1104 1164 11B2;
+B590;B590;1104 1164 11B3;B590;1104 1164 11B3;
+B591;B591;1104 1164 11B4;B591;1104 1164 11B4;
+B592;B592;1104 1164 11B5;B592;1104 1164 11B5;
+B593;B593;1104 1164 11B6;B593;1104 1164 11B6;
+B594;B594;1104 1164 11B7;B594;1104 1164 11B7;
+B595;B595;1104 1164 11B8;B595;1104 1164 11B8;
+B596;B596;1104 1164 11B9;B596;1104 1164 11B9;
+B597;B597;1104 1164 11BA;B597;1104 1164 11BA;
+B598;B598;1104 1164 11BB;B598;1104 1164 11BB;
+B599;B599;1104 1164 11BC;B599;1104 1164 11BC;
+B59A;B59A;1104 1164 11BD;B59A;1104 1164 11BD;
+B59B;B59B;1104 1164 11BE;B59B;1104 1164 11BE;
+B59C;B59C;1104 1164 11BF;B59C;1104 1164 11BF;
+B59D;B59D;1104 1164 11C0;B59D;1104 1164 11C0;
+B59E;B59E;1104 1164 11C1;B59E;1104 1164 11C1;
+B59F;B59F;1104 1164 11C2;B59F;1104 1164 11C2;
+B5A0;B5A0;1104 1165;B5A0;1104 1165;
+B5A1;B5A1;1104 1165 11A8;B5A1;1104 1165 11A8;
+B5A2;B5A2;1104 1165 11A9;B5A2;1104 1165 11A9;
+B5A3;B5A3;1104 1165 11AA;B5A3;1104 1165 11AA;
+B5A4;B5A4;1104 1165 11AB;B5A4;1104 1165 11AB;
+B5A5;B5A5;1104 1165 11AC;B5A5;1104 1165 11AC;
+B5A6;B5A6;1104 1165 11AD;B5A6;1104 1165 11AD;
+B5A7;B5A7;1104 1165 11AE;B5A7;1104 1165 11AE;
+B5A8;B5A8;1104 1165 11AF;B5A8;1104 1165 11AF;
+B5A9;B5A9;1104 1165 11B0;B5A9;1104 1165 11B0;
+B5AA;B5AA;1104 1165 11B1;B5AA;1104 1165 11B1;
+B5AB;B5AB;1104 1165 11B2;B5AB;1104 1165 11B2;
+B5AC;B5AC;1104 1165 11B3;B5AC;1104 1165 11B3;
+B5AD;B5AD;1104 1165 11B4;B5AD;1104 1165 11B4;
+B5AE;B5AE;1104 1165 11B5;B5AE;1104 1165 11B5;
+B5AF;B5AF;1104 1165 11B6;B5AF;1104 1165 11B6;
+B5B0;B5B0;1104 1165 11B7;B5B0;1104 1165 11B7;
+B5B1;B5B1;1104 1165 11B8;B5B1;1104 1165 11B8;
+B5B2;B5B2;1104 1165 11B9;B5B2;1104 1165 11B9;
+B5B3;B5B3;1104 1165 11BA;B5B3;1104 1165 11BA;
+B5B4;B5B4;1104 1165 11BB;B5B4;1104 1165 11BB;
+B5B5;B5B5;1104 1165 11BC;B5B5;1104 1165 11BC;
+B5B6;B5B6;1104 1165 11BD;B5B6;1104 1165 11BD;
+B5B7;B5B7;1104 1165 11BE;B5B7;1104 1165 11BE;
+B5B8;B5B8;1104 1165 11BF;B5B8;1104 1165 11BF;
+B5B9;B5B9;1104 1165 11C0;B5B9;1104 1165 11C0;
+B5BA;B5BA;1104 1165 11C1;B5BA;1104 1165 11C1;
+B5BB;B5BB;1104 1165 11C2;B5BB;1104 1165 11C2;
+B5BC;B5BC;1104 1166;B5BC;1104 1166;
+B5BD;B5BD;1104 1166 11A8;B5BD;1104 1166 11A8;
+B5BE;B5BE;1104 1166 11A9;B5BE;1104 1166 11A9;
+B5BF;B5BF;1104 1166 11AA;B5BF;1104 1166 11AA;
+B5C0;B5C0;1104 1166 11AB;B5C0;1104 1166 11AB;
+B5C1;B5C1;1104 1166 11AC;B5C1;1104 1166 11AC;
+B5C2;B5C2;1104 1166 11AD;B5C2;1104 1166 11AD;
+B5C3;B5C3;1104 1166 11AE;B5C3;1104 1166 11AE;
+B5C4;B5C4;1104 1166 11AF;B5C4;1104 1166 11AF;
+B5C5;B5C5;1104 1166 11B0;B5C5;1104 1166 11B0;
+B5C6;B5C6;1104 1166 11B1;B5C6;1104 1166 11B1;
+B5C7;B5C7;1104 1166 11B2;B5C7;1104 1166 11B2;
+B5C8;B5C8;1104 1166 11B3;B5C8;1104 1166 11B3;
+B5C9;B5C9;1104 1166 11B4;B5C9;1104 1166 11B4;
+B5CA;B5CA;1104 1166 11B5;B5CA;1104 1166 11B5;
+B5CB;B5CB;1104 1166 11B6;B5CB;1104 1166 11B6;
+B5CC;B5CC;1104 1166 11B7;B5CC;1104 1166 11B7;
+B5CD;B5CD;1104 1166 11B8;B5CD;1104 1166 11B8;
+B5CE;B5CE;1104 1166 11B9;B5CE;1104 1166 11B9;
+B5CF;B5CF;1104 1166 11BA;B5CF;1104 1166 11BA;
+B5D0;B5D0;1104 1166 11BB;B5D0;1104 1166 11BB;
+B5D1;B5D1;1104 1166 11BC;B5D1;1104 1166 11BC;
+B5D2;B5D2;1104 1166 11BD;B5D2;1104 1166 11BD;
+B5D3;B5D3;1104 1166 11BE;B5D3;1104 1166 11BE;
+B5D4;B5D4;1104 1166 11BF;B5D4;1104 1166 11BF;
+B5D5;B5D5;1104 1166 11C0;B5D5;1104 1166 11C0;
+B5D6;B5D6;1104 1166 11C1;B5D6;1104 1166 11C1;
+B5D7;B5D7;1104 1166 11C2;B5D7;1104 1166 11C2;
+B5D8;B5D8;1104 1167;B5D8;1104 1167;
+B5D9;B5D9;1104 1167 11A8;B5D9;1104 1167 11A8;
+B5DA;B5DA;1104 1167 11A9;B5DA;1104 1167 11A9;
+B5DB;B5DB;1104 1167 11AA;B5DB;1104 1167 11AA;
+B5DC;B5DC;1104 1167 11AB;B5DC;1104 1167 11AB;
+B5DD;B5DD;1104 1167 11AC;B5DD;1104 1167 11AC;
+B5DE;B5DE;1104 1167 11AD;B5DE;1104 1167 11AD;
+B5DF;B5DF;1104 1167 11AE;B5DF;1104 1167 11AE;
+B5E0;B5E0;1104 1167 11AF;B5E0;1104 1167 11AF;
+B5E1;B5E1;1104 1167 11B0;B5E1;1104 1167 11B0;
+B5E2;B5E2;1104 1167 11B1;B5E2;1104 1167 11B1;
+B5E3;B5E3;1104 1167 11B2;B5E3;1104 1167 11B2;
+B5E4;B5E4;1104 1167 11B3;B5E4;1104 1167 11B3;
+B5E5;B5E5;1104 1167 11B4;B5E5;1104 1167 11B4;
+B5E6;B5E6;1104 1167 11B5;B5E6;1104 1167 11B5;
+B5E7;B5E7;1104 1167 11B6;B5E7;1104 1167 11B6;
+B5E8;B5E8;1104 1167 11B7;B5E8;1104 1167 11B7;
+B5E9;B5E9;1104 1167 11B8;B5E9;1104 1167 11B8;
+B5EA;B5EA;1104 1167 11B9;B5EA;1104 1167 11B9;
+B5EB;B5EB;1104 1167 11BA;B5EB;1104 1167 11BA;
+B5EC;B5EC;1104 1167 11BB;B5EC;1104 1167 11BB;
+B5ED;B5ED;1104 1167 11BC;B5ED;1104 1167 11BC;
+B5EE;B5EE;1104 1167 11BD;B5EE;1104 1167 11BD;
+B5EF;B5EF;1104 1167 11BE;B5EF;1104 1167 11BE;
+B5F0;B5F0;1104 1167 11BF;B5F0;1104 1167 11BF;
+B5F1;B5F1;1104 1167 11C0;B5F1;1104 1167 11C0;
+B5F2;B5F2;1104 1167 11C1;B5F2;1104 1167 11C1;
+B5F3;B5F3;1104 1167 11C2;B5F3;1104 1167 11C2;
+B5F4;B5F4;1104 1168;B5F4;1104 1168;
+B5F5;B5F5;1104 1168 11A8;B5F5;1104 1168 11A8;
+B5F6;B5F6;1104 1168 11A9;B5F6;1104 1168 11A9;
+B5F7;B5F7;1104 1168 11AA;B5F7;1104 1168 11AA;
+B5F8;B5F8;1104 1168 11AB;B5F8;1104 1168 11AB;
+B5F9;B5F9;1104 1168 11AC;B5F9;1104 1168 11AC;
+B5FA;B5FA;1104 1168 11AD;B5FA;1104 1168 11AD;
+B5FB;B5FB;1104 1168 11AE;B5FB;1104 1168 11AE;
+B5FC;B5FC;1104 1168 11AF;B5FC;1104 1168 11AF;
+B5FD;B5FD;1104 1168 11B0;B5FD;1104 1168 11B0;
+B5FE;B5FE;1104 1168 11B1;B5FE;1104 1168 11B1;
+B5FF;B5FF;1104 1168 11B2;B5FF;1104 1168 11B2;
+B600;B600;1104 1168 11B3;B600;1104 1168 11B3;
+B601;B601;1104 1168 11B4;B601;1104 1168 11B4;
+B602;B602;1104 1168 11B5;B602;1104 1168 11B5;
+B603;B603;1104 1168 11B6;B603;1104 1168 11B6;
+B604;B604;1104 1168 11B7;B604;1104 1168 11B7;
+B605;B605;1104 1168 11B8;B605;1104 1168 11B8;
+B606;B606;1104 1168 11B9;B606;1104 1168 11B9;
+B607;B607;1104 1168 11BA;B607;1104 1168 11BA;
+B608;B608;1104 1168 11BB;B608;1104 1168 11BB;
+B609;B609;1104 1168 11BC;B609;1104 1168 11BC;
+B60A;B60A;1104 1168 11BD;B60A;1104 1168 11BD;
+B60B;B60B;1104 1168 11BE;B60B;1104 1168 11BE;
+B60C;B60C;1104 1168 11BF;B60C;1104 1168 11BF;
+B60D;B60D;1104 1168 11C0;B60D;1104 1168 11C0;
+B60E;B60E;1104 1168 11C1;B60E;1104 1168 11C1;
+B60F;B60F;1104 1168 11C2;B60F;1104 1168 11C2;
+B610;B610;1104 1169;B610;1104 1169;
+B611;B611;1104 1169 11A8;B611;1104 1169 11A8;
+B612;B612;1104 1169 11A9;B612;1104 1169 11A9;
+B613;B613;1104 1169 11AA;B613;1104 1169 11AA;
+B614;B614;1104 1169 11AB;B614;1104 1169 11AB;
+B615;B615;1104 1169 11AC;B615;1104 1169 11AC;
+B616;B616;1104 1169 11AD;B616;1104 1169 11AD;
+B617;B617;1104 1169 11AE;B617;1104 1169 11AE;
+B618;B618;1104 1169 11AF;B618;1104 1169 11AF;
+B619;B619;1104 1169 11B0;B619;1104 1169 11B0;
+B61A;B61A;1104 1169 11B1;B61A;1104 1169 11B1;
+B61B;B61B;1104 1169 11B2;B61B;1104 1169 11B2;
+B61C;B61C;1104 1169 11B3;B61C;1104 1169 11B3;
+B61D;B61D;1104 1169 11B4;B61D;1104 1169 11B4;
+B61E;B61E;1104 1169 11B5;B61E;1104 1169 11B5;
+B61F;B61F;1104 1169 11B6;B61F;1104 1169 11B6;
+B620;B620;1104 1169 11B7;B620;1104 1169 11B7;
+B621;B621;1104 1169 11B8;B621;1104 1169 11B8;
+B622;B622;1104 1169 11B9;B622;1104 1169 11B9;
+B623;B623;1104 1169 11BA;B623;1104 1169 11BA;
+B624;B624;1104 1169 11BB;B624;1104 1169 11BB;
+B625;B625;1104 1169 11BC;B625;1104 1169 11BC;
+B626;B626;1104 1169 11BD;B626;1104 1169 11BD;
+B627;B627;1104 1169 11BE;B627;1104 1169 11BE;
+B628;B628;1104 1169 11BF;B628;1104 1169 11BF;
+B629;B629;1104 1169 11C0;B629;1104 1169 11C0;
+B62A;B62A;1104 1169 11C1;B62A;1104 1169 11C1;
+B62B;B62B;1104 1169 11C2;B62B;1104 1169 11C2;
+B62C;B62C;1104 116A;B62C;1104 116A;
+B62D;B62D;1104 116A 11A8;B62D;1104 116A 11A8;
+B62E;B62E;1104 116A 11A9;B62E;1104 116A 11A9;
+B62F;B62F;1104 116A 11AA;B62F;1104 116A 11AA;
+B630;B630;1104 116A 11AB;B630;1104 116A 11AB;
+B631;B631;1104 116A 11AC;B631;1104 116A 11AC;
+B632;B632;1104 116A 11AD;B632;1104 116A 11AD;
+B633;B633;1104 116A 11AE;B633;1104 116A 11AE;
+B634;B634;1104 116A 11AF;B634;1104 116A 11AF;
+B635;B635;1104 116A 11B0;B635;1104 116A 11B0;
+B636;B636;1104 116A 11B1;B636;1104 116A 11B1;
+B637;B637;1104 116A 11B2;B637;1104 116A 11B2;
+B638;B638;1104 116A 11B3;B638;1104 116A 11B3;
+B639;B639;1104 116A 11B4;B639;1104 116A 11B4;
+B63A;B63A;1104 116A 11B5;B63A;1104 116A 11B5;
+B63B;B63B;1104 116A 11B6;B63B;1104 116A 11B6;
+B63C;B63C;1104 116A 11B7;B63C;1104 116A 11B7;
+B63D;B63D;1104 116A 11B8;B63D;1104 116A 11B8;
+B63E;B63E;1104 116A 11B9;B63E;1104 116A 11B9;
+B63F;B63F;1104 116A 11BA;B63F;1104 116A 11BA;
+B640;B640;1104 116A 11BB;B640;1104 116A 11BB;
+B641;B641;1104 116A 11BC;B641;1104 116A 11BC;
+B642;B642;1104 116A 11BD;B642;1104 116A 11BD;
+B643;B643;1104 116A 11BE;B643;1104 116A 11BE;
+B644;B644;1104 116A 11BF;B644;1104 116A 11BF;
+B645;B645;1104 116A 11C0;B645;1104 116A 11C0;
+B646;B646;1104 116A 11C1;B646;1104 116A 11C1;
+B647;B647;1104 116A 11C2;B647;1104 116A 11C2;
+B648;B648;1104 116B;B648;1104 116B;
+B649;B649;1104 116B 11A8;B649;1104 116B 11A8;
+B64A;B64A;1104 116B 11A9;B64A;1104 116B 11A9;
+B64B;B64B;1104 116B 11AA;B64B;1104 116B 11AA;
+B64C;B64C;1104 116B 11AB;B64C;1104 116B 11AB;
+B64D;B64D;1104 116B 11AC;B64D;1104 116B 11AC;
+B64E;B64E;1104 116B 11AD;B64E;1104 116B 11AD;
+B64F;B64F;1104 116B 11AE;B64F;1104 116B 11AE;
+B650;B650;1104 116B 11AF;B650;1104 116B 11AF;
+B651;B651;1104 116B 11B0;B651;1104 116B 11B0;
+B652;B652;1104 116B 11B1;B652;1104 116B 11B1;
+B653;B653;1104 116B 11B2;B653;1104 116B 11B2;
+B654;B654;1104 116B 11B3;B654;1104 116B 11B3;
+B655;B655;1104 116B 11B4;B655;1104 116B 11B4;
+B656;B656;1104 116B 11B5;B656;1104 116B 11B5;
+B657;B657;1104 116B 11B6;B657;1104 116B 11B6;
+B658;B658;1104 116B 11B7;B658;1104 116B 11B7;
+B659;B659;1104 116B 11B8;B659;1104 116B 11B8;
+B65A;B65A;1104 116B 11B9;B65A;1104 116B 11B9;
+B65B;B65B;1104 116B 11BA;B65B;1104 116B 11BA;
+B65C;B65C;1104 116B 11BB;B65C;1104 116B 11BB;
+B65D;B65D;1104 116B 11BC;B65D;1104 116B 11BC;
+B65E;B65E;1104 116B 11BD;B65E;1104 116B 11BD;
+B65F;B65F;1104 116B 11BE;B65F;1104 116B 11BE;
+B660;B660;1104 116B 11BF;B660;1104 116B 11BF;
+B661;B661;1104 116B 11C0;B661;1104 116B 11C0;
+B662;B662;1104 116B 11C1;B662;1104 116B 11C1;
+B663;B663;1104 116B 11C2;B663;1104 116B 11C2;
+B664;B664;1104 116C;B664;1104 116C;
+B665;B665;1104 116C 11A8;B665;1104 116C 11A8;
+B666;B666;1104 116C 11A9;B666;1104 116C 11A9;
+B667;B667;1104 116C 11AA;B667;1104 116C 11AA;
+B668;B668;1104 116C 11AB;B668;1104 116C 11AB;
+B669;B669;1104 116C 11AC;B669;1104 116C 11AC;
+B66A;B66A;1104 116C 11AD;B66A;1104 116C 11AD;
+B66B;B66B;1104 116C 11AE;B66B;1104 116C 11AE;
+B66C;B66C;1104 116C 11AF;B66C;1104 116C 11AF;
+B66D;B66D;1104 116C 11B0;B66D;1104 116C 11B0;
+B66E;B66E;1104 116C 11B1;B66E;1104 116C 11B1;
+B66F;B66F;1104 116C 11B2;B66F;1104 116C 11B2;
+B670;B670;1104 116C 11B3;B670;1104 116C 11B3;
+B671;B671;1104 116C 11B4;B671;1104 116C 11B4;
+B672;B672;1104 116C 11B5;B672;1104 116C 11B5;
+B673;B673;1104 116C 11B6;B673;1104 116C 11B6;
+B674;B674;1104 116C 11B7;B674;1104 116C 11B7;
+B675;B675;1104 116C 11B8;B675;1104 116C 11B8;
+B676;B676;1104 116C 11B9;B676;1104 116C 11B9;
+B677;B677;1104 116C 11BA;B677;1104 116C 11BA;
+B678;B678;1104 116C 11BB;B678;1104 116C 11BB;
+B679;B679;1104 116C 11BC;B679;1104 116C 11BC;
+B67A;B67A;1104 116C 11BD;B67A;1104 116C 11BD;
+B67B;B67B;1104 116C 11BE;B67B;1104 116C 11BE;
+B67C;B67C;1104 116C 11BF;B67C;1104 116C 11BF;
+B67D;B67D;1104 116C 11C0;B67D;1104 116C 11C0;
+B67E;B67E;1104 116C 11C1;B67E;1104 116C 11C1;
+B67F;B67F;1104 116C 11C2;B67F;1104 116C 11C2;
+B680;B680;1104 116D;B680;1104 116D;
+B681;B681;1104 116D 11A8;B681;1104 116D 11A8;
+B682;B682;1104 116D 11A9;B682;1104 116D 11A9;
+B683;B683;1104 116D 11AA;B683;1104 116D 11AA;
+B684;B684;1104 116D 11AB;B684;1104 116D 11AB;
+B685;B685;1104 116D 11AC;B685;1104 116D 11AC;
+B686;B686;1104 116D 11AD;B686;1104 116D 11AD;
+B687;B687;1104 116D 11AE;B687;1104 116D 11AE;
+B688;B688;1104 116D 11AF;B688;1104 116D 11AF;
+B689;B689;1104 116D 11B0;B689;1104 116D 11B0;
+B68A;B68A;1104 116D 11B1;B68A;1104 116D 11B1;
+B68B;B68B;1104 116D 11B2;B68B;1104 116D 11B2;
+B68C;B68C;1104 116D 11B3;B68C;1104 116D 11B3;
+B68D;B68D;1104 116D 11B4;B68D;1104 116D 11B4;
+B68E;B68E;1104 116D 11B5;B68E;1104 116D 11B5;
+B68F;B68F;1104 116D 11B6;B68F;1104 116D 11B6;
+B690;B690;1104 116D 11B7;B690;1104 116D 11B7;
+B691;B691;1104 116D 11B8;B691;1104 116D 11B8;
+B692;B692;1104 116D 11B9;B692;1104 116D 11B9;
+B693;B693;1104 116D 11BA;B693;1104 116D 11BA;
+B694;B694;1104 116D 11BB;B694;1104 116D 11BB;
+B695;B695;1104 116D 11BC;B695;1104 116D 11BC;
+B696;B696;1104 116D 11BD;B696;1104 116D 11BD;
+B697;B697;1104 116D 11BE;B697;1104 116D 11BE;
+B698;B698;1104 116D 11BF;B698;1104 116D 11BF;
+B699;B699;1104 116D 11C0;B699;1104 116D 11C0;
+B69A;B69A;1104 116D 11C1;B69A;1104 116D 11C1;
+B69B;B69B;1104 116D 11C2;B69B;1104 116D 11C2;
+B69C;B69C;1104 116E;B69C;1104 116E;
+B69D;B69D;1104 116E 11A8;B69D;1104 116E 11A8;
+B69E;B69E;1104 116E 11A9;B69E;1104 116E 11A9;
+B69F;B69F;1104 116E 11AA;B69F;1104 116E 11AA;
+B6A0;B6A0;1104 116E 11AB;B6A0;1104 116E 11AB;
+B6A1;B6A1;1104 116E 11AC;B6A1;1104 116E 11AC;
+B6A2;B6A2;1104 116E 11AD;B6A2;1104 116E 11AD;
+B6A3;B6A3;1104 116E 11AE;B6A3;1104 116E 11AE;
+B6A4;B6A4;1104 116E 11AF;B6A4;1104 116E 11AF;
+B6A5;B6A5;1104 116E 11B0;B6A5;1104 116E 11B0;
+B6A6;B6A6;1104 116E 11B1;B6A6;1104 116E 11B1;
+B6A7;B6A7;1104 116E 11B2;B6A7;1104 116E 11B2;
+B6A8;B6A8;1104 116E 11B3;B6A8;1104 116E 11B3;
+B6A9;B6A9;1104 116E 11B4;B6A9;1104 116E 11B4;
+B6AA;B6AA;1104 116E 11B5;B6AA;1104 116E 11B5;
+B6AB;B6AB;1104 116E 11B6;B6AB;1104 116E 11B6;
+B6AC;B6AC;1104 116E 11B7;B6AC;1104 116E 11B7;
+B6AD;B6AD;1104 116E 11B8;B6AD;1104 116E 11B8;
+B6AE;B6AE;1104 116E 11B9;B6AE;1104 116E 11B9;
+B6AF;B6AF;1104 116E 11BA;B6AF;1104 116E 11BA;
+B6B0;B6B0;1104 116E 11BB;B6B0;1104 116E 11BB;
+B6B1;B6B1;1104 116E 11BC;B6B1;1104 116E 11BC;
+B6B2;B6B2;1104 116E 11BD;B6B2;1104 116E 11BD;
+B6B3;B6B3;1104 116E 11BE;B6B3;1104 116E 11BE;
+B6B4;B6B4;1104 116E 11BF;B6B4;1104 116E 11BF;
+B6B5;B6B5;1104 116E 11C0;B6B5;1104 116E 11C0;
+B6B6;B6B6;1104 116E 11C1;B6B6;1104 116E 11C1;
+B6B7;B6B7;1104 116E 11C2;B6B7;1104 116E 11C2;
+B6B8;B6B8;1104 116F;B6B8;1104 116F;
+B6B9;B6B9;1104 116F 11A8;B6B9;1104 116F 11A8;
+B6BA;B6BA;1104 116F 11A9;B6BA;1104 116F 11A9;
+B6BB;B6BB;1104 116F 11AA;B6BB;1104 116F 11AA;
+B6BC;B6BC;1104 116F 11AB;B6BC;1104 116F 11AB;
+B6BD;B6BD;1104 116F 11AC;B6BD;1104 116F 11AC;
+B6BE;B6BE;1104 116F 11AD;B6BE;1104 116F 11AD;
+B6BF;B6BF;1104 116F 11AE;B6BF;1104 116F 11AE;
+B6C0;B6C0;1104 116F 11AF;B6C0;1104 116F 11AF;
+B6C1;B6C1;1104 116F 11B0;B6C1;1104 116F 11B0;
+B6C2;B6C2;1104 116F 11B1;B6C2;1104 116F 11B1;
+B6C3;B6C3;1104 116F 11B2;B6C3;1104 116F 11B2;
+B6C4;B6C4;1104 116F 11B3;B6C4;1104 116F 11B3;
+B6C5;B6C5;1104 116F 11B4;B6C5;1104 116F 11B4;
+B6C6;B6C6;1104 116F 11B5;B6C6;1104 116F 11B5;
+B6C7;B6C7;1104 116F 11B6;B6C7;1104 116F 11B6;
+B6C8;B6C8;1104 116F 11B7;B6C8;1104 116F 11B7;
+B6C9;B6C9;1104 116F 11B8;B6C9;1104 116F 11B8;
+B6CA;B6CA;1104 116F 11B9;B6CA;1104 116F 11B9;
+B6CB;B6CB;1104 116F 11BA;B6CB;1104 116F 11BA;
+B6CC;B6CC;1104 116F 11BB;B6CC;1104 116F 11BB;
+B6CD;B6CD;1104 116F 11BC;B6CD;1104 116F 11BC;
+B6CE;B6CE;1104 116F 11BD;B6CE;1104 116F 11BD;
+B6CF;B6CF;1104 116F 11BE;B6CF;1104 116F 11BE;
+B6D0;B6D0;1104 116F 11BF;B6D0;1104 116F 11BF;
+B6D1;B6D1;1104 116F 11C0;B6D1;1104 116F 11C0;
+B6D2;B6D2;1104 116F 11C1;B6D2;1104 116F 11C1;
+B6D3;B6D3;1104 116F 11C2;B6D3;1104 116F 11C2;
+B6D4;B6D4;1104 1170;B6D4;1104 1170;
+B6D5;B6D5;1104 1170 11A8;B6D5;1104 1170 11A8;
+B6D6;B6D6;1104 1170 11A9;B6D6;1104 1170 11A9;
+B6D7;B6D7;1104 1170 11AA;B6D7;1104 1170 11AA;
+B6D8;B6D8;1104 1170 11AB;B6D8;1104 1170 11AB;
+B6D9;B6D9;1104 1170 11AC;B6D9;1104 1170 11AC;
+B6DA;B6DA;1104 1170 11AD;B6DA;1104 1170 11AD;
+B6DB;B6DB;1104 1170 11AE;B6DB;1104 1170 11AE;
+B6DC;B6DC;1104 1170 11AF;B6DC;1104 1170 11AF;
+B6DD;B6DD;1104 1170 11B0;B6DD;1104 1170 11B0;
+B6DE;B6DE;1104 1170 11B1;B6DE;1104 1170 11B1;
+B6DF;B6DF;1104 1170 11B2;B6DF;1104 1170 11B2;
+B6E0;B6E0;1104 1170 11B3;B6E0;1104 1170 11B3;
+B6E1;B6E1;1104 1170 11B4;B6E1;1104 1170 11B4;
+B6E2;B6E2;1104 1170 11B5;B6E2;1104 1170 11B5;
+B6E3;B6E3;1104 1170 11B6;B6E3;1104 1170 11B6;
+B6E4;B6E4;1104 1170 11B7;B6E4;1104 1170 11B7;
+B6E5;B6E5;1104 1170 11B8;B6E5;1104 1170 11B8;
+B6E6;B6E6;1104 1170 11B9;B6E6;1104 1170 11B9;
+B6E7;B6E7;1104 1170 11BA;B6E7;1104 1170 11BA;
+B6E8;B6E8;1104 1170 11BB;B6E8;1104 1170 11BB;
+B6E9;B6E9;1104 1170 11BC;B6E9;1104 1170 11BC;
+B6EA;B6EA;1104 1170 11BD;B6EA;1104 1170 11BD;
+B6EB;B6EB;1104 1170 11BE;B6EB;1104 1170 11BE;
+B6EC;B6EC;1104 1170 11BF;B6EC;1104 1170 11BF;
+B6ED;B6ED;1104 1170 11C0;B6ED;1104 1170 11C0;
+B6EE;B6EE;1104 1170 11C1;B6EE;1104 1170 11C1;
+B6EF;B6EF;1104 1170 11C2;B6EF;1104 1170 11C2;
+B6F0;B6F0;1104 1171;B6F0;1104 1171;
+B6F1;B6F1;1104 1171 11A8;B6F1;1104 1171 11A8;
+B6F2;B6F2;1104 1171 11A9;B6F2;1104 1171 11A9;
+B6F3;B6F3;1104 1171 11AA;B6F3;1104 1171 11AA;
+B6F4;B6F4;1104 1171 11AB;B6F4;1104 1171 11AB;
+B6F5;B6F5;1104 1171 11AC;B6F5;1104 1171 11AC;
+B6F6;B6F6;1104 1171 11AD;B6F6;1104 1171 11AD;
+B6F7;B6F7;1104 1171 11AE;B6F7;1104 1171 11AE;
+B6F8;B6F8;1104 1171 11AF;B6F8;1104 1171 11AF;
+B6F9;B6F9;1104 1171 11B0;B6F9;1104 1171 11B0;
+B6FA;B6FA;1104 1171 11B1;B6FA;1104 1171 11B1;
+B6FB;B6FB;1104 1171 11B2;B6FB;1104 1171 11B2;
+B6FC;B6FC;1104 1171 11B3;B6FC;1104 1171 11B3;
+B6FD;B6FD;1104 1171 11B4;B6FD;1104 1171 11B4;
+B6FE;B6FE;1104 1171 11B5;B6FE;1104 1171 11B5;
+B6FF;B6FF;1104 1171 11B6;B6FF;1104 1171 11B6;
+B700;B700;1104 1171 11B7;B700;1104 1171 11B7;
+B701;B701;1104 1171 11B8;B701;1104 1171 11B8;
+B702;B702;1104 1171 11B9;B702;1104 1171 11B9;
+B703;B703;1104 1171 11BA;B703;1104 1171 11BA;
+B704;B704;1104 1171 11BB;B704;1104 1171 11BB;
+B705;B705;1104 1171 11BC;B705;1104 1171 11BC;
+B706;B706;1104 1171 11BD;B706;1104 1171 11BD;
+B707;B707;1104 1171 11BE;B707;1104 1171 11BE;
+B708;B708;1104 1171 11BF;B708;1104 1171 11BF;
+B709;B709;1104 1171 11C0;B709;1104 1171 11C0;
+B70A;B70A;1104 1171 11C1;B70A;1104 1171 11C1;
+B70B;B70B;1104 1171 11C2;B70B;1104 1171 11C2;
+B70C;B70C;1104 1172;B70C;1104 1172;
+B70D;B70D;1104 1172 11A8;B70D;1104 1172 11A8;
+B70E;B70E;1104 1172 11A9;B70E;1104 1172 11A9;
+B70F;B70F;1104 1172 11AA;B70F;1104 1172 11AA;
+B710;B710;1104 1172 11AB;B710;1104 1172 11AB;
+B711;B711;1104 1172 11AC;B711;1104 1172 11AC;
+B712;B712;1104 1172 11AD;B712;1104 1172 11AD;
+B713;B713;1104 1172 11AE;B713;1104 1172 11AE;
+B714;B714;1104 1172 11AF;B714;1104 1172 11AF;
+B715;B715;1104 1172 11B0;B715;1104 1172 11B0;
+B716;B716;1104 1172 11B1;B716;1104 1172 11B1;
+B717;B717;1104 1172 11B2;B717;1104 1172 11B2;
+B718;B718;1104 1172 11B3;B718;1104 1172 11B3;
+B719;B719;1104 1172 11B4;B719;1104 1172 11B4;
+B71A;B71A;1104 1172 11B5;B71A;1104 1172 11B5;
+B71B;B71B;1104 1172 11B6;B71B;1104 1172 11B6;
+B71C;B71C;1104 1172 11B7;B71C;1104 1172 11B7;
+B71D;B71D;1104 1172 11B8;B71D;1104 1172 11B8;
+B71E;B71E;1104 1172 11B9;B71E;1104 1172 11B9;
+B71F;B71F;1104 1172 11BA;B71F;1104 1172 11BA;
+B720;B720;1104 1172 11BB;B720;1104 1172 11BB;
+B721;B721;1104 1172 11BC;B721;1104 1172 11BC;
+B722;B722;1104 1172 11BD;B722;1104 1172 11BD;
+B723;B723;1104 1172 11BE;B723;1104 1172 11BE;
+B724;B724;1104 1172 11BF;B724;1104 1172 11BF;
+B725;B725;1104 1172 11C0;B725;1104 1172 11C0;
+B726;B726;1104 1172 11C1;B726;1104 1172 11C1;
+B727;B727;1104 1172 11C2;B727;1104 1172 11C2;
+B728;B728;1104 1173;B728;1104 1173;
+B729;B729;1104 1173 11A8;B729;1104 1173 11A8;
+B72A;B72A;1104 1173 11A9;B72A;1104 1173 11A9;
+B72B;B72B;1104 1173 11AA;B72B;1104 1173 11AA;
+B72C;B72C;1104 1173 11AB;B72C;1104 1173 11AB;
+B72D;B72D;1104 1173 11AC;B72D;1104 1173 11AC;
+B72E;B72E;1104 1173 11AD;B72E;1104 1173 11AD;
+B72F;B72F;1104 1173 11AE;B72F;1104 1173 11AE;
+B730;B730;1104 1173 11AF;B730;1104 1173 11AF;
+B731;B731;1104 1173 11B0;B731;1104 1173 11B0;
+B732;B732;1104 1173 11B1;B732;1104 1173 11B1;
+B733;B733;1104 1173 11B2;B733;1104 1173 11B2;
+B734;B734;1104 1173 11B3;B734;1104 1173 11B3;
+B735;B735;1104 1173 11B4;B735;1104 1173 11B4;
+B736;B736;1104 1173 11B5;B736;1104 1173 11B5;
+B737;B737;1104 1173 11B6;B737;1104 1173 11B6;
+B738;B738;1104 1173 11B7;B738;1104 1173 11B7;
+B739;B739;1104 1173 11B8;B739;1104 1173 11B8;
+B73A;B73A;1104 1173 11B9;B73A;1104 1173 11B9;
+B73B;B73B;1104 1173 11BA;B73B;1104 1173 11BA;
+B73C;B73C;1104 1173 11BB;B73C;1104 1173 11BB;
+B73D;B73D;1104 1173 11BC;B73D;1104 1173 11BC;
+B73E;B73E;1104 1173 11BD;B73E;1104 1173 11BD;
+B73F;B73F;1104 1173 11BE;B73F;1104 1173 11BE;
+B740;B740;1104 1173 11BF;B740;1104 1173 11BF;
+B741;B741;1104 1173 11C0;B741;1104 1173 11C0;
+B742;B742;1104 1173 11C1;B742;1104 1173 11C1;
+B743;B743;1104 1173 11C2;B743;1104 1173 11C2;
+B744;B744;1104 1174;B744;1104 1174;
+B745;B745;1104 1174 11A8;B745;1104 1174 11A8;
+B746;B746;1104 1174 11A9;B746;1104 1174 11A9;
+B747;B747;1104 1174 11AA;B747;1104 1174 11AA;
+B748;B748;1104 1174 11AB;B748;1104 1174 11AB;
+B749;B749;1104 1174 11AC;B749;1104 1174 11AC;
+B74A;B74A;1104 1174 11AD;B74A;1104 1174 11AD;
+B74B;B74B;1104 1174 11AE;B74B;1104 1174 11AE;
+B74C;B74C;1104 1174 11AF;B74C;1104 1174 11AF;
+B74D;B74D;1104 1174 11B0;B74D;1104 1174 11B0;
+B74E;B74E;1104 1174 11B1;B74E;1104 1174 11B1;
+B74F;B74F;1104 1174 11B2;B74F;1104 1174 11B2;
+B750;B750;1104 1174 11B3;B750;1104 1174 11B3;
+B751;B751;1104 1174 11B4;B751;1104 1174 11B4;
+B752;B752;1104 1174 11B5;B752;1104 1174 11B5;
+B753;B753;1104 1174 11B6;B753;1104 1174 11B6;
+B754;B754;1104 1174 11B7;B754;1104 1174 11B7;
+B755;B755;1104 1174 11B8;B755;1104 1174 11B8;
+B756;B756;1104 1174 11B9;B756;1104 1174 11B9;
+B757;B757;1104 1174 11BA;B757;1104 1174 11BA;
+B758;B758;1104 1174 11BB;B758;1104 1174 11BB;
+B759;B759;1104 1174 11BC;B759;1104 1174 11BC;
+B75A;B75A;1104 1174 11BD;B75A;1104 1174 11BD;
+B75B;B75B;1104 1174 11BE;B75B;1104 1174 11BE;
+B75C;B75C;1104 1174 11BF;B75C;1104 1174 11BF;
+B75D;B75D;1104 1174 11C0;B75D;1104 1174 11C0;
+B75E;B75E;1104 1174 11C1;B75E;1104 1174 11C1;
+B75F;B75F;1104 1174 11C2;B75F;1104 1174 11C2;
+B760;B760;1104 1175;B760;1104 1175;
+B761;B761;1104 1175 11A8;B761;1104 1175 11A8;
+B762;B762;1104 1175 11A9;B762;1104 1175 11A9;
+B763;B763;1104 1175 11AA;B763;1104 1175 11AA;
+B764;B764;1104 1175 11AB;B764;1104 1175 11AB;
+B765;B765;1104 1175 11AC;B765;1104 1175 11AC;
+B766;B766;1104 1175 11AD;B766;1104 1175 11AD;
+B767;B767;1104 1175 11AE;B767;1104 1175 11AE;
+B768;B768;1104 1175 11AF;B768;1104 1175 11AF;
+B769;B769;1104 1175 11B0;B769;1104 1175 11B0;
+B76A;B76A;1104 1175 11B1;B76A;1104 1175 11B1;
+B76B;B76B;1104 1175 11B2;B76B;1104 1175 11B2;
+B76C;B76C;1104 1175 11B3;B76C;1104 1175 11B3;
+B76D;B76D;1104 1175 11B4;B76D;1104 1175 11B4;
+B76E;B76E;1104 1175 11B5;B76E;1104 1175 11B5;
+B76F;B76F;1104 1175 11B6;B76F;1104 1175 11B6;
+B770;B770;1104 1175 11B7;B770;1104 1175 11B7;
+B771;B771;1104 1175 11B8;B771;1104 1175 11B8;
+B772;B772;1104 1175 11B9;B772;1104 1175 11B9;
+B773;B773;1104 1175 11BA;B773;1104 1175 11BA;
+B774;B774;1104 1175 11BB;B774;1104 1175 11BB;
+B775;B775;1104 1175 11BC;B775;1104 1175 11BC;
+B776;B776;1104 1175 11BD;B776;1104 1175 11BD;
+B777;B777;1104 1175 11BE;B777;1104 1175 11BE;
+B778;B778;1104 1175 11BF;B778;1104 1175 11BF;
+B779;B779;1104 1175 11C0;B779;1104 1175 11C0;
+B77A;B77A;1104 1175 11C1;B77A;1104 1175 11C1;
+B77B;B77B;1104 1175 11C2;B77B;1104 1175 11C2;
+B77C;B77C;1105 1161;B77C;1105 1161;
+B77D;B77D;1105 1161 11A8;B77D;1105 1161 11A8;
+B77E;B77E;1105 1161 11A9;B77E;1105 1161 11A9;
+B77F;B77F;1105 1161 11AA;B77F;1105 1161 11AA;
+B780;B780;1105 1161 11AB;B780;1105 1161 11AB;
+B781;B781;1105 1161 11AC;B781;1105 1161 11AC;
+B782;B782;1105 1161 11AD;B782;1105 1161 11AD;
+B783;B783;1105 1161 11AE;B783;1105 1161 11AE;
+B784;B784;1105 1161 11AF;B784;1105 1161 11AF;
+B785;B785;1105 1161 11B0;B785;1105 1161 11B0;
+B786;B786;1105 1161 11B1;B786;1105 1161 11B1;
+B787;B787;1105 1161 11B2;B787;1105 1161 11B2;
+B788;B788;1105 1161 11B3;B788;1105 1161 11B3;
+B789;B789;1105 1161 11B4;B789;1105 1161 11B4;
+B78A;B78A;1105 1161 11B5;B78A;1105 1161 11B5;
+B78B;B78B;1105 1161 11B6;B78B;1105 1161 11B6;
+B78C;B78C;1105 1161 11B7;B78C;1105 1161 11B7;
+B78D;B78D;1105 1161 11B8;B78D;1105 1161 11B8;
+B78E;B78E;1105 1161 11B9;B78E;1105 1161 11B9;
+B78F;B78F;1105 1161 11BA;B78F;1105 1161 11BA;
+B790;B790;1105 1161 11BB;B790;1105 1161 11BB;
+B791;B791;1105 1161 11BC;B791;1105 1161 11BC;
+B792;B792;1105 1161 11BD;B792;1105 1161 11BD;
+B793;B793;1105 1161 11BE;B793;1105 1161 11BE;
+B794;B794;1105 1161 11BF;B794;1105 1161 11BF;
+B795;B795;1105 1161 11C0;B795;1105 1161 11C0;
+B796;B796;1105 1161 11C1;B796;1105 1161 11C1;
+B797;B797;1105 1161 11C2;B797;1105 1161 11C2;
+B798;B798;1105 1162;B798;1105 1162;
+B799;B799;1105 1162 11A8;B799;1105 1162 11A8;
+B79A;B79A;1105 1162 11A9;B79A;1105 1162 11A9;
+B79B;B79B;1105 1162 11AA;B79B;1105 1162 11AA;
+B79C;B79C;1105 1162 11AB;B79C;1105 1162 11AB;
+B79D;B79D;1105 1162 11AC;B79D;1105 1162 11AC;
+B79E;B79E;1105 1162 11AD;B79E;1105 1162 11AD;
+B79F;B79F;1105 1162 11AE;B79F;1105 1162 11AE;
+B7A0;B7A0;1105 1162 11AF;B7A0;1105 1162 11AF;
+B7A1;B7A1;1105 1162 11B0;B7A1;1105 1162 11B0;
+B7A2;B7A2;1105 1162 11B1;B7A2;1105 1162 11B1;
+B7A3;B7A3;1105 1162 11B2;B7A3;1105 1162 11B2;
+B7A4;B7A4;1105 1162 11B3;B7A4;1105 1162 11B3;
+B7A5;B7A5;1105 1162 11B4;B7A5;1105 1162 11B4;
+B7A6;B7A6;1105 1162 11B5;B7A6;1105 1162 11B5;
+B7A7;B7A7;1105 1162 11B6;B7A7;1105 1162 11B6;
+B7A8;B7A8;1105 1162 11B7;B7A8;1105 1162 11B7;
+B7A9;B7A9;1105 1162 11B8;B7A9;1105 1162 11B8;
+B7AA;B7AA;1105 1162 11B9;B7AA;1105 1162 11B9;
+B7AB;B7AB;1105 1162 11BA;B7AB;1105 1162 11BA;
+B7AC;B7AC;1105 1162 11BB;B7AC;1105 1162 11BB;
+B7AD;B7AD;1105 1162 11BC;B7AD;1105 1162 11BC;
+B7AE;B7AE;1105 1162 11BD;B7AE;1105 1162 11BD;
+B7AF;B7AF;1105 1162 11BE;B7AF;1105 1162 11BE;
+B7B0;B7B0;1105 1162 11BF;B7B0;1105 1162 11BF;
+B7B1;B7B1;1105 1162 11C0;B7B1;1105 1162 11C0;
+B7B2;B7B2;1105 1162 11C1;B7B2;1105 1162 11C1;
+B7B3;B7B3;1105 1162 11C2;B7B3;1105 1162 11C2;
+B7B4;B7B4;1105 1163;B7B4;1105 1163;
+B7B5;B7B5;1105 1163 11A8;B7B5;1105 1163 11A8;
+B7B6;B7B6;1105 1163 11A9;B7B6;1105 1163 11A9;
+B7B7;B7B7;1105 1163 11AA;B7B7;1105 1163 11AA;
+B7B8;B7B8;1105 1163 11AB;B7B8;1105 1163 11AB;
+B7B9;B7B9;1105 1163 11AC;B7B9;1105 1163 11AC;
+B7BA;B7BA;1105 1163 11AD;B7BA;1105 1163 11AD;
+B7BB;B7BB;1105 1163 11AE;B7BB;1105 1163 11AE;
+B7BC;B7BC;1105 1163 11AF;B7BC;1105 1163 11AF;
+B7BD;B7BD;1105 1163 11B0;B7BD;1105 1163 11B0;
+B7BE;B7BE;1105 1163 11B1;B7BE;1105 1163 11B1;
+B7BF;B7BF;1105 1163 11B2;B7BF;1105 1163 11B2;
+B7C0;B7C0;1105 1163 11B3;B7C0;1105 1163 11B3;
+B7C1;B7C1;1105 1163 11B4;B7C1;1105 1163 11B4;
+B7C2;B7C2;1105 1163 11B5;B7C2;1105 1163 11B5;
+B7C3;B7C3;1105 1163 11B6;B7C3;1105 1163 11B6;
+B7C4;B7C4;1105 1163 11B7;B7C4;1105 1163 11B7;
+B7C5;B7C5;1105 1163 11B8;B7C5;1105 1163 11B8;
+B7C6;B7C6;1105 1163 11B9;B7C6;1105 1163 11B9;
+B7C7;B7C7;1105 1163 11BA;B7C7;1105 1163 11BA;
+B7C8;B7C8;1105 1163 11BB;B7C8;1105 1163 11BB;
+B7C9;B7C9;1105 1163 11BC;B7C9;1105 1163 11BC;
+B7CA;B7CA;1105 1163 11BD;B7CA;1105 1163 11BD;
+B7CB;B7CB;1105 1163 11BE;B7CB;1105 1163 11BE;
+B7CC;B7CC;1105 1163 11BF;B7CC;1105 1163 11BF;
+B7CD;B7CD;1105 1163 11C0;B7CD;1105 1163 11C0;
+B7CE;B7CE;1105 1163 11C1;B7CE;1105 1163 11C1;
+B7CF;B7CF;1105 1163 11C2;B7CF;1105 1163 11C2;
+B7D0;B7D0;1105 1164;B7D0;1105 1164;
+B7D1;B7D1;1105 1164 11A8;B7D1;1105 1164 11A8;
+B7D2;B7D2;1105 1164 11A9;B7D2;1105 1164 11A9;
+B7D3;B7D3;1105 1164 11AA;B7D3;1105 1164 11AA;
+B7D4;B7D4;1105 1164 11AB;B7D4;1105 1164 11AB;
+B7D5;B7D5;1105 1164 11AC;B7D5;1105 1164 11AC;
+B7D6;B7D6;1105 1164 11AD;B7D6;1105 1164 11AD;
+B7D7;B7D7;1105 1164 11AE;B7D7;1105 1164 11AE;
+B7D8;B7D8;1105 1164 11AF;B7D8;1105 1164 11AF;
+B7D9;B7D9;1105 1164 11B0;B7D9;1105 1164 11B0;
+B7DA;B7DA;1105 1164 11B1;B7DA;1105 1164 11B1;
+B7DB;B7DB;1105 1164 11B2;B7DB;1105 1164 11B2;
+B7DC;B7DC;1105 1164 11B3;B7DC;1105 1164 11B3;
+B7DD;B7DD;1105 1164 11B4;B7DD;1105 1164 11B4;
+B7DE;B7DE;1105 1164 11B5;B7DE;1105 1164 11B5;
+B7DF;B7DF;1105 1164 11B6;B7DF;1105 1164 11B6;
+B7E0;B7E0;1105 1164 11B7;B7E0;1105 1164 11B7;
+B7E1;B7E1;1105 1164 11B8;B7E1;1105 1164 11B8;
+B7E2;B7E2;1105 1164 11B9;B7E2;1105 1164 11B9;
+B7E3;B7E3;1105 1164 11BA;B7E3;1105 1164 11BA;
+B7E4;B7E4;1105 1164 11BB;B7E4;1105 1164 11BB;
+B7E5;B7E5;1105 1164 11BC;B7E5;1105 1164 11BC;
+B7E6;B7E6;1105 1164 11BD;B7E6;1105 1164 11BD;
+B7E7;B7E7;1105 1164 11BE;B7E7;1105 1164 11BE;
+B7E8;B7E8;1105 1164 11BF;B7E8;1105 1164 11BF;
+B7E9;B7E9;1105 1164 11C0;B7E9;1105 1164 11C0;
+B7EA;B7EA;1105 1164 11C1;B7EA;1105 1164 11C1;
+B7EB;B7EB;1105 1164 11C2;B7EB;1105 1164 11C2;
+B7EC;B7EC;1105 1165;B7EC;1105 1165;
+B7ED;B7ED;1105 1165 11A8;B7ED;1105 1165 11A8;
+B7EE;B7EE;1105 1165 11A9;B7EE;1105 1165 11A9;
+B7EF;B7EF;1105 1165 11AA;B7EF;1105 1165 11AA;
+B7F0;B7F0;1105 1165 11AB;B7F0;1105 1165 11AB;
+B7F1;B7F1;1105 1165 11AC;B7F1;1105 1165 11AC;
+B7F2;B7F2;1105 1165 11AD;B7F2;1105 1165 11AD;
+B7F3;B7F3;1105 1165 11AE;B7F3;1105 1165 11AE;
+B7F4;B7F4;1105 1165 11AF;B7F4;1105 1165 11AF;
+B7F5;B7F5;1105 1165 11B0;B7F5;1105 1165 11B0;
+B7F6;B7F6;1105 1165 11B1;B7F6;1105 1165 11B1;
+B7F7;B7F7;1105 1165 11B2;B7F7;1105 1165 11B2;
+B7F8;B7F8;1105 1165 11B3;B7F8;1105 1165 11B3;
+B7F9;B7F9;1105 1165 11B4;B7F9;1105 1165 11B4;
+B7FA;B7FA;1105 1165 11B5;B7FA;1105 1165 11B5;
+B7FB;B7FB;1105 1165 11B6;B7FB;1105 1165 11B6;
+B7FC;B7FC;1105 1165 11B7;B7FC;1105 1165 11B7;
+B7FD;B7FD;1105 1165 11B8;B7FD;1105 1165 11B8;
+B7FE;B7FE;1105 1165 11B9;B7FE;1105 1165 11B9;
+B7FF;B7FF;1105 1165 11BA;B7FF;1105 1165 11BA;
+B800;B800;1105 1165 11BB;B800;1105 1165 11BB;
+B801;B801;1105 1165 11BC;B801;1105 1165 11BC;
+B802;B802;1105 1165 11BD;B802;1105 1165 11BD;
+B803;B803;1105 1165 11BE;B803;1105 1165 11BE;
+B804;B804;1105 1165 11BF;B804;1105 1165 11BF;
+B805;B805;1105 1165 11C0;B805;1105 1165 11C0;
+B806;B806;1105 1165 11C1;B806;1105 1165 11C1;
+B807;B807;1105 1165 11C2;B807;1105 1165 11C2;
+B808;B808;1105 1166;B808;1105 1166;
+B809;B809;1105 1166 11A8;B809;1105 1166 11A8;
+B80A;B80A;1105 1166 11A9;B80A;1105 1166 11A9;
+B80B;B80B;1105 1166 11AA;B80B;1105 1166 11AA;
+B80C;B80C;1105 1166 11AB;B80C;1105 1166 11AB;
+B80D;B80D;1105 1166 11AC;B80D;1105 1166 11AC;
+B80E;B80E;1105 1166 11AD;B80E;1105 1166 11AD;
+B80F;B80F;1105 1166 11AE;B80F;1105 1166 11AE;
+B810;B810;1105 1166 11AF;B810;1105 1166 11AF;
+B811;B811;1105 1166 11B0;B811;1105 1166 11B0;
+B812;B812;1105 1166 11B1;B812;1105 1166 11B1;
+B813;B813;1105 1166 11B2;B813;1105 1166 11B2;
+B814;B814;1105 1166 11B3;B814;1105 1166 11B3;
+B815;B815;1105 1166 11B4;B815;1105 1166 11B4;
+B816;B816;1105 1166 11B5;B816;1105 1166 11B5;
+B817;B817;1105 1166 11B6;B817;1105 1166 11B6;
+B818;B818;1105 1166 11B7;B818;1105 1166 11B7;
+B819;B819;1105 1166 11B8;B819;1105 1166 11B8;
+B81A;B81A;1105 1166 11B9;B81A;1105 1166 11B9;
+B81B;B81B;1105 1166 11BA;B81B;1105 1166 11BA;
+B81C;B81C;1105 1166 11BB;B81C;1105 1166 11BB;
+B81D;B81D;1105 1166 11BC;B81D;1105 1166 11BC;
+B81E;B81E;1105 1166 11BD;B81E;1105 1166 11BD;
+B81F;B81F;1105 1166 11BE;B81F;1105 1166 11BE;
+B820;B820;1105 1166 11BF;B820;1105 1166 11BF;
+B821;B821;1105 1166 11C0;B821;1105 1166 11C0;
+B822;B822;1105 1166 11C1;B822;1105 1166 11C1;
+B823;B823;1105 1166 11C2;B823;1105 1166 11C2;
+B824;B824;1105 1167;B824;1105 1167;
+B825;B825;1105 1167 11A8;B825;1105 1167 11A8;
+B826;B826;1105 1167 11A9;B826;1105 1167 11A9;
+B827;B827;1105 1167 11AA;B827;1105 1167 11AA;
+B828;B828;1105 1167 11AB;B828;1105 1167 11AB;
+B829;B829;1105 1167 11AC;B829;1105 1167 11AC;
+B82A;B82A;1105 1167 11AD;B82A;1105 1167 11AD;
+B82B;B82B;1105 1167 11AE;B82B;1105 1167 11AE;
+B82C;B82C;1105 1167 11AF;B82C;1105 1167 11AF;
+B82D;B82D;1105 1167 11B0;B82D;1105 1167 11B0;
+B82E;B82E;1105 1167 11B1;B82E;1105 1167 11B1;
+B82F;B82F;1105 1167 11B2;B82F;1105 1167 11B2;
+B830;B830;1105 1167 11B3;B830;1105 1167 11B3;
+B831;B831;1105 1167 11B4;B831;1105 1167 11B4;
+B832;B832;1105 1167 11B5;B832;1105 1167 11B5;
+B833;B833;1105 1167 11B6;B833;1105 1167 11B6;
+B834;B834;1105 1167 11B7;B834;1105 1167 11B7;
+B835;B835;1105 1167 11B8;B835;1105 1167 11B8;
+B836;B836;1105 1167 11B9;B836;1105 1167 11B9;
+B837;B837;1105 1167 11BA;B837;1105 1167 11BA;
+B838;B838;1105 1167 11BB;B838;1105 1167 11BB;
+B839;B839;1105 1167 11BC;B839;1105 1167 11BC;
+B83A;B83A;1105 1167 11BD;B83A;1105 1167 11BD;
+B83B;B83B;1105 1167 11BE;B83B;1105 1167 11BE;
+B83C;B83C;1105 1167 11BF;B83C;1105 1167 11BF;
+B83D;B83D;1105 1167 11C0;B83D;1105 1167 11C0;
+B83E;B83E;1105 1167 11C1;B83E;1105 1167 11C1;
+B83F;B83F;1105 1167 11C2;B83F;1105 1167 11C2;
+B840;B840;1105 1168;B840;1105 1168;
+B841;B841;1105 1168 11A8;B841;1105 1168 11A8;
+B842;B842;1105 1168 11A9;B842;1105 1168 11A9;
+B843;B843;1105 1168 11AA;B843;1105 1168 11AA;
+B844;B844;1105 1168 11AB;B844;1105 1168 11AB;
+B845;B845;1105 1168 11AC;B845;1105 1168 11AC;
+B846;B846;1105 1168 11AD;B846;1105 1168 11AD;
+B847;B847;1105 1168 11AE;B847;1105 1168 11AE;
+B848;B848;1105 1168 11AF;B848;1105 1168 11AF;
+B849;B849;1105 1168 11B0;B849;1105 1168 11B0;
+B84A;B84A;1105 1168 11B1;B84A;1105 1168 11B1;
+B84B;B84B;1105 1168 11B2;B84B;1105 1168 11B2;
+B84C;B84C;1105 1168 11B3;B84C;1105 1168 11B3;
+B84D;B84D;1105 1168 11B4;B84D;1105 1168 11B4;
+B84E;B84E;1105 1168 11B5;B84E;1105 1168 11B5;
+B84F;B84F;1105 1168 11B6;B84F;1105 1168 11B6;
+B850;B850;1105 1168 11B7;B850;1105 1168 11B7;
+B851;B851;1105 1168 11B8;B851;1105 1168 11B8;
+B852;B852;1105 1168 11B9;B852;1105 1168 11B9;
+B853;B853;1105 1168 11BA;B853;1105 1168 11BA;
+B854;B854;1105 1168 11BB;B854;1105 1168 11BB;
+B855;B855;1105 1168 11BC;B855;1105 1168 11BC;
+B856;B856;1105 1168 11BD;B856;1105 1168 11BD;
+B857;B857;1105 1168 11BE;B857;1105 1168 11BE;
+B858;B858;1105 1168 11BF;B858;1105 1168 11BF;
+B859;B859;1105 1168 11C0;B859;1105 1168 11C0;
+B85A;B85A;1105 1168 11C1;B85A;1105 1168 11C1;
+B85B;B85B;1105 1168 11C2;B85B;1105 1168 11C2;
+B85C;B85C;1105 1169;B85C;1105 1169;
+B85D;B85D;1105 1169 11A8;B85D;1105 1169 11A8;
+B85E;B85E;1105 1169 11A9;B85E;1105 1169 11A9;
+B85F;B85F;1105 1169 11AA;B85F;1105 1169 11AA;
+B860;B860;1105 1169 11AB;B860;1105 1169 11AB;
+B861;B861;1105 1169 11AC;B861;1105 1169 11AC;
+B862;B862;1105 1169 11AD;B862;1105 1169 11AD;
+B863;B863;1105 1169 11AE;B863;1105 1169 11AE;
+B864;B864;1105 1169 11AF;B864;1105 1169 11AF;
+B865;B865;1105 1169 11B0;B865;1105 1169 11B0;
+B866;B866;1105 1169 11B1;B866;1105 1169 11B1;
+B867;B867;1105 1169 11B2;B867;1105 1169 11B2;
+B868;B868;1105 1169 11B3;B868;1105 1169 11B3;
+B869;B869;1105 1169 11B4;B869;1105 1169 11B4;
+B86A;B86A;1105 1169 11B5;B86A;1105 1169 11B5;
+B86B;B86B;1105 1169 11B6;B86B;1105 1169 11B6;
+B86C;B86C;1105 1169 11B7;B86C;1105 1169 11B7;
+B86D;B86D;1105 1169 11B8;B86D;1105 1169 11B8;
+B86E;B86E;1105 1169 11B9;B86E;1105 1169 11B9;
+B86F;B86F;1105 1169 11BA;B86F;1105 1169 11BA;
+B870;B870;1105 1169 11BB;B870;1105 1169 11BB;
+B871;B871;1105 1169 11BC;B871;1105 1169 11BC;
+B872;B872;1105 1169 11BD;B872;1105 1169 11BD;
+B873;B873;1105 1169 11BE;B873;1105 1169 11BE;
+B874;B874;1105 1169 11BF;B874;1105 1169 11BF;
+B875;B875;1105 1169 11C0;B875;1105 1169 11C0;
+B876;B876;1105 1169 11C1;B876;1105 1169 11C1;
+B877;B877;1105 1169 11C2;B877;1105 1169 11C2;
+B878;B878;1105 116A;B878;1105 116A;
+B879;B879;1105 116A 11A8;B879;1105 116A 11A8;
+B87A;B87A;1105 116A 11A9;B87A;1105 116A 11A9;
+B87B;B87B;1105 116A 11AA;B87B;1105 116A 11AA;
+B87C;B87C;1105 116A 11AB;B87C;1105 116A 11AB;
+B87D;B87D;1105 116A 11AC;B87D;1105 116A 11AC;
+B87E;B87E;1105 116A 11AD;B87E;1105 116A 11AD;
+B87F;B87F;1105 116A 11AE;B87F;1105 116A 11AE;
+B880;B880;1105 116A 11AF;B880;1105 116A 11AF;
+B881;B881;1105 116A 11B0;B881;1105 116A 11B0;
+B882;B882;1105 116A 11B1;B882;1105 116A 11B1;
+B883;B883;1105 116A 11B2;B883;1105 116A 11B2;
+B884;B884;1105 116A 11B3;B884;1105 116A 11B3;
+B885;B885;1105 116A 11B4;B885;1105 116A 11B4;
+B886;B886;1105 116A 11B5;B886;1105 116A 11B5;
+B887;B887;1105 116A 11B6;B887;1105 116A 11B6;
+B888;B888;1105 116A 11B7;B888;1105 116A 11B7;
+B889;B889;1105 116A 11B8;B889;1105 116A 11B8;
+B88A;B88A;1105 116A 11B9;B88A;1105 116A 11B9;
+B88B;B88B;1105 116A 11BA;B88B;1105 116A 11BA;
+B88C;B88C;1105 116A 11BB;B88C;1105 116A 11BB;
+B88D;B88D;1105 116A 11BC;B88D;1105 116A 11BC;
+B88E;B88E;1105 116A 11BD;B88E;1105 116A 11BD;
+B88F;B88F;1105 116A 11BE;B88F;1105 116A 11BE;
+B890;B890;1105 116A 11BF;B890;1105 116A 11BF;
+B891;B891;1105 116A 11C0;B891;1105 116A 11C0;
+B892;B892;1105 116A 11C1;B892;1105 116A 11C1;
+B893;B893;1105 116A 11C2;B893;1105 116A 11C2;
+B894;B894;1105 116B;B894;1105 116B;
+B895;B895;1105 116B 11A8;B895;1105 116B 11A8;
+B896;B896;1105 116B 11A9;B896;1105 116B 11A9;
+B897;B897;1105 116B 11AA;B897;1105 116B 11AA;
+B898;B898;1105 116B 11AB;B898;1105 116B 11AB;
+B899;B899;1105 116B 11AC;B899;1105 116B 11AC;
+B89A;B89A;1105 116B 11AD;B89A;1105 116B 11AD;
+B89B;B89B;1105 116B 11AE;B89B;1105 116B 11AE;
+B89C;B89C;1105 116B 11AF;B89C;1105 116B 11AF;
+B89D;B89D;1105 116B 11B0;B89D;1105 116B 11B0;
+B89E;B89E;1105 116B 11B1;B89E;1105 116B 11B1;
+B89F;B89F;1105 116B 11B2;B89F;1105 116B 11B2;
+B8A0;B8A0;1105 116B 11B3;B8A0;1105 116B 11B3;
+B8A1;B8A1;1105 116B 11B4;B8A1;1105 116B 11B4;
+B8A2;B8A2;1105 116B 11B5;B8A2;1105 116B 11B5;
+B8A3;B8A3;1105 116B 11B6;B8A3;1105 116B 11B6;
+B8A4;B8A4;1105 116B 11B7;B8A4;1105 116B 11B7;
+B8A5;B8A5;1105 116B 11B8;B8A5;1105 116B 11B8;
+B8A6;B8A6;1105 116B 11B9;B8A6;1105 116B 11B9;
+B8A7;B8A7;1105 116B 11BA;B8A7;1105 116B 11BA;
+B8A8;B8A8;1105 116B 11BB;B8A8;1105 116B 11BB;
+B8A9;B8A9;1105 116B 11BC;B8A9;1105 116B 11BC;
+B8AA;B8AA;1105 116B 11BD;B8AA;1105 116B 11BD;
+B8AB;B8AB;1105 116B 11BE;B8AB;1105 116B 11BE;
+B8AC;B8AC;1105 116B 11BF;B8AC;1105 116B 11BF;
+B8AD;B8AD;1105 116B 11C0;B8AD;1105 116B 11C0;
+B8AE;B8AE;1105 116B 11C1;B8AE;1105 116B 11C1;
+B8AF;B8AF;1105 116B 11C2;B8AF;1105 116B 11C2;
+B8B0;B8B0;1105 116C;B8B0;1105 116C;
+B8B1;B8B1;1105 116C 11A8;B8B1;1105 116C 11A8;
+B8B2;B8B2;1105 116C 11A9;B8B2;1105 116C 11A9;
+B8B3;B8B3;1105 116C 11AA;B8B3;1105 116C 11AA;
+B8B4;B8B4;1105 116C 11AB;B8B4;1105 116C 11AB;
+B8B5;B8B5;1105 116C 11AC;B8B5;1105 116C 11AC;
+B8B6;B8B6;1105 116C 11AD;B8B6;1105 116C 11AD;
+B8B7;B8B7;1105 116C 11AE;B8B7;1105 116C 11AE;
+B8B8;B8B8;1105 116C 11AF;B8B8;1105 116C 11AF;
+B8B9;B8B9;1105 116C 11B0;B8B9;1105 116C 11B0;
+B8BA;B8BA;1105 116C 11B1;B8BA;1105 116C 11B1;
+B8BB;B8BB;1105 116C 11B2;B8BB;1105 116C 11B2;
+B8BC;B8BC;1105 116C 11B3;B8BC;1105 116C 11B3;
+B8BD;B8BD;1105 116C 11B4;B8BD;1105 116C 11B4;
+B8BE;B8BE;1105 116C 11B5;B8BE;1105 116C 11B5;
+B8BF;B8BF;1105 116C 11B6;B8BF;1105 116C 11B6;
+B8C0;B8C0;1105 116C 11B7;B8C0;1105 116C 11B7;
+B8C1;B8C1;1105 116C 11B8;B8C1;1105 116C 11B8;
+B8C2;B8C2;1105 116C 11B9;B8C2;1105 116C 11B9;
+B8C3;B8C3;1105 116C 11BA;B8C3;1105 116C 11BA;
+B8C4;B8C4;1105 116C 11BB;B8C4;1105 116C 11BB;
+B8C5;B8C5;1105 116C 11BC;B8C5;1105 116C 11BC;
+B8C6;B8C6;1105 116C 11BD;B8C6;1105 116C 11BD;
+B8C7;B8C7;1105 116C 11BE;B8C7;1105 116C 11BE;
+B8C8;B8C8;1105 116C 11BF;B8C8;1105 116C 11BF;
+B8C9;B8C9;1105 116C 11C0;B8C9;1105 116C 11C0;
+B8CA;B8CA;1105 116C 11C1;B8CA;1105 116C 11C1;
+B8CB;B8CB;1105 116C 11C2;B8CB;1105 116C 11C2;
+B8CC;B8CC;1105 116D;B8CC;1105 116D;
+B8CD;B8CD;1105 116D 11A8;B8CD;1105 116D 11A8;
+B8CE;B8CE;1105 116D 11A9;B8CE;1105 116D 11A9;
+B8CF;B8CF;1105 116D 11AA;B8CF;1105 116D 11AA;
+B8D0;B8D0;1105 116D 11AB;B8D0;1105 116D 11AB;
+B8D1;B8D1;1105 116D 11AC;B8D1;1105 116D 11AC;
+B8D2;B8D2;1105 116D 11AD;B8D2;1105 116D 11AD;
+B8D3;B8D3;1105 116D 11AE;B8D3;1105 116D 11AE;
+B8D4;B8D4;1105 116D 11AF;B8D4;1105 116D 11AF;
+B8D5;B8D5;1105 116D 11B0;B8D5;1105 116D 11B0;
+B8D6;B8D6;1105 116D 11B1;B8D6;1105 116D 11B1;
+B8D7;B8D7;1105 116D 11B2;B8D7;1105 116D 11B2;
+B8D8;B8D8;1105 116D 11B3;B8D8;1105 116D 11B3;
+B8D9;B8D9;1105 116D 11B4;B8D9;1105 116D 11B4;
+B8DA;B8DA;1105 116D 11B5;B8DA;1105 116D 11B5;
+B8DB;B8DB;1105 116D 11B6;B8DB;1105 116D 11B6;
+B8DC;B8DC;1105 116D 11B7;B8DC;1105 116D 11B7;
+B8DD;B8DD;1105 116D 11B8;B8DD;1105 116D 11B8;
+B8DE;B8DE;1105 116D 11B9;B8DE;1105 116D 11B9;
+B8DF;B8DF;1105 116D 11BA;B8DF;1105 116D 11BA;
+B8E0;B8E0;1105 116D 11BB;B8E0;1105 116D 11BB;
+B8E1;B8E1;1105 116D 11BC;B8E1;1105 116D 11BC;
+B8E2;B8E2;1105 116D 11BD;B8E2;1105 116D 11BD;
+B8E3;B8E3;1105 116D 11BE;B8E3;1105 116D 11BE;
+B8E4;B8E4;1105 116D 11BF;B8E4;1105 116D 11BF;
+B8E5;B8E5;1105 116D 11C0;B8E5;1105 116D 11C0;
+B8E6;B8E6;1105 116D 11C1;B8E6;1105 116D 11C1;
+B8E7;B8E7;1105 116D 11C2;B8E7;1105 116D 11C2;
+B8E8;B8E8;1105 116E;B8E8;1105 116E;
+B8E9;B8E9;1105 116E 11A8;B8E9;1105 116E 11A8;
+B8EA;B8EA;1105 116E 11A9;B8EA;1105 116E 11A9;
+B8EB;B8EB;1105 116E 11AA;B8EB;1105 116E 11AA;
+B8EC;B8EC;1105 116E 11AB;B8EC;1105 116E 11AB;
+B8ED;B8ED;1105 116E 11AC;B8ED;1105 116E 11AC;
+B8EE;B8EE;1105 116E 11AD;B8EE;1105 116E 11AD;
+B8EF;B8EF;1105 116E 11AE;B8EF;1105 116E 11AE;
+B8F0;B8F0;1105 116E 11AF;B8F0;1105 116E 11AF;
+B8F1;B8F1;1105 116E 11B0;B8F1;1105 116E 11B0;
+B8F2;B8F2;1105 116E 11B1;B8F2;1105 116E 11B1;
+B8F3;B8F3;1105 116E 11B2;B8F3;1105 116E 11B2;
+B8F4;B8F4;1105 116E 11B3;B8F4;1105 116E 11B3;
+B8F5;B8F5;1105 116E 11B4;B8F5;1105 116E 11B4;
+B8F6;B8F6;1105 116E 11B5;B8F6;1105 116E 11B5;
+B8F7;B8F7;1105 116E 11B6;B8F7;1105 116E 11B6;
+B8F8;B8F8;1105 116E 11B7;B8F8;1105 116E 11B7;
+B8F9;B8F9;1105 116E 11B8;B8F9;1105 116E 11B8;
+B8FA;B8FA;1105 116E 11B9;B8FA;1105 116E 11B9;
+B8FB;B8FB;1105 116E 11BA;B8FB;1105 116E 11BA;
+B8FC;B8FC;1105 116E 11BB;B8FC;1105 116E 11BB;
+B8FD;B8FD;1105 116E 11BC;B8FD;1105 116E 11BC;
+B8FE;B8FE;1105 116E 11BD;B8FE;1105 116E 11BD;
+B8FF;B8FF;1105 116E 11BE;B8FF;1105 116E 11BE;
+B900;B900;1105 116E 11BF;B900;1105 116E 11BF;
+B901;B901;1105 116E 11C0;B901;1105 116E 11C0;
+B902;B902;1105 116E 11C1;B902;1105 116E 11C1;
+B903;B903;1105 116E 11C2;B903;1105 116E 11C2;
+B904;B904;1105 116F;B904;1105 116F;
+B905;B905;1105 116F 11A8;B905;1105 116F 11A8;
+B906;B906;1105 116F 11A9;B906;1105 116F 11A9;
+B907;B907;1105 116F 11AA;B907;1105 116F 11AA;
+B908;B908;1105 116F 11AB;B908;1105 116F 11AB;
+B909;B909;1105 116F 11AC;B909;1105 116F 11AC;
+B90A;B90A;1105 116F 11AD;B90A;1105 116F 11AD;
+B90B;B90B;1105 116F 11AE;B90B;1105 116F 11AE;
+B90C;B90C;1105 116F 11AF;B90C;1105 116F 11AF;
+B90D;B90D;1105 116F 11B0;B90D;1105 116F 11B0;
+B90E;B90E;1105 116F 11B1;B90E;1105 116F 11B1;
+B90F;B90F;1105 116F 11B2;B90F;1105 116F 11B2;
+B910;B910;1105 116F 11B3;B910;1105 116F 11B3;
+B911;B911;1105 116F 11B4;B911;1105 116F 11B4;
+B912;B912;1105 116F 11B5;B912;1105 116F 11B5;
+B913;B913;1105 116F 11B6;B913;1105 116F 11B6;
+B914;B914;1105 116F 11B7;B914;1105 116F 11B7;
+B915;B915;1105 116F 11B8;B915;1105 116F 11B8;
+B916;B916;1105 116F 11B9;B916;1105 116F 11B9;
+B917;B917;1105 116F 11BA;B917;1105 116F 11BA;
+B918;B918;1105 116F 11BB;B918;1105 116F 11BB;
+B919;B919;1105 116F 11BC;B919;1105 116F 11BC;
+B91A;B91A;1105 116F 11BD;B91A;1105 116F 11BD;
+B91B;B91B;1105 116F 11BE;B91B;1105 116F 11BE;
+B91C;B91C;1105 116F 11BF;B91C;1105 116F 11BF;
+B91D;B91D;1105 116F 11C0;B91D;1105 116F 11C0;
+B91E;B91E;1105 116F 11C1;B91E;1105 116F 11C1;
+B91F;B91F;1105 116F 11C2;B91F;1105 116F 11C2;
+B920;B920;1105 1170;B920;1105 1170;
+B921;B921;1105 1170 11A8;B921;1105 1170 11A8;
+B922;B922;1105 1170 11A9;B922;1105 1170 11A9;
+B923;B923;1105 1170 11AA;B923;1105 1170 11AA;
+B924;B924;1105 1170 11AB;B924;1105 1170 11AB;
+B925;B925;1105 1170 11AC;B925;1105 1170 11AC;
+B926;B926;1105 1170 11AD;B926;1105 1170 11AD;
+B927;B927;1105 1170 11AE;B927;1105 1170 11AE;
+B928;B928;1105 1170 11AF;B928;1105 1170 11AF;
+B929;B929;1105 1170 11B0;B929;1105 1170 11B0;
+B92A;B92A;1105 1170 11B1;B92A;1105 1170 11B1;
+B92B;B92B;1105 1170 11B2;B92B;1105 1170 11B2;
+B92C;B92C;1105 1170 11B3;B92C;1105 1170 11B3;
+B92D;B92D;1105 1170 11B4;B92D;1105 1170 11B4;
+B92E;B92E;1105 1170 11B5;B92E;1105 1170 11B5;
+B92F;B92F;1105 1170 11B6;B92F;1105 1170 11B6;
+B930;B930;1105 1170 11B7;B930;1105 1170 11B7;
+B931;B931;1105 1170 11B8;B931;1105 1170 11B8;
+B932;B932;1105 1170 11B9;B932;1105 1170 11B9;
+B933;B933;1105 1170 11BA;B933;1105 1170 11BA;
+B934;B934;1105 1170 11BB;B934;1105 1170 11BB;
+B935;B935;1105 1170 11BC;B935;1105 1170 11BC;
+B936;B936;1105 1170 11BD;B936;1105 1170 11BD;
+B937;B937;1105 1170 11BE;B937;1105 1170 11BE;
+B938;B938;1105 1170 11BF;B938;1105 1170 11BF;
+B939;B939;1105 1170 11C0;B939;1105 1170 11C0;
+B93A;B93A;1105 1170 11C1;B93A;1105 1170 11C1;
+B93B;B93B;1105 1170 11C2;B93B;1105 1170 11C2;
+B93C;B93C;1105 1171;B93C;1105 1171;
+B93D;B93D;1105 1171 11A8;B93D;1105 1171 11A8;
+B93E;B93E;1105 1171 11A9;B93E;1105 1171 11A9;
+B93F;B93F;1105 1171 11AA;B93F;1105 1171 11AA;
+B940;B940;1105 1171 11AB;B940;1105 1171 11AB;
+B941;B941;1105 1171 11AC;B941;1105 1171 11AC;
+B942;B942;1105 1171 11AD;B942;1105 1171 11AD;
+B943;B943;1105 1171 11AE;B943;1105 1171 11AE;
+B944;B944;1105 1171 11AF;B944;1105 1171 11AF;
+B945;B945;1105 1171 11B0;B945;1105 1171 11B0;
+B946;B946;1105 1171 11B1;B946;1105 1171 11B1;
+B947;B947;1105 1171 11B2;B947;1105 1171 11B2;
+B948;B948;1105 1171 11B3;B948;1105 1171 11B3;
+B949;B949;1105 1171 11B4;B949;1105 1171 11B4;
+B94A;B94A;1105 1171 11B5;B94A;1105 1171 11B5;
+B94B;B94B;1105 1171 11B6;B94B;1105 1171 11B6;
+B94C;B94C;1105 1171 11B7;B94C;1105 1171 11B7;
+B94D;B94D;1105 1171 11B8;B94D;1105 1171 11B8;
+B94E;B94E;1105 1171 11B9;B94E;1105 1171 11B9;
+B94F;B94F;1105 1171 11BA;B94F;1105 1171 11BA;
+B950;B950;1105 1171 11BB;B950;1105 1171 11BB;
+B951;B951;1105 1171 11BC;B951;1105 1171 11BC;
+B952;B952;1105 1171 11BD;B952;1105 1171 11BD;
+B953;B953;1105 1171 11BE;B953;1105 1171 11BE;
+B954;B954;1105 1171 11BF;B954;1105 1171 11BF;
+B955;B955;1105 1171 11C0;B955;1105 1171 11C0;
+B956;B956;1105 1171 11C1;B956;1105 1171 11C1;
+B957;B957;1105 1171 11C2;B957;1105 1171 11C2;
+B958;B958;1105 1172;B958;1105 1172;
+B959;B959;1105 1172 11A8;B959;1105 1172 11A8;
+B95A;B95A;1105 1172 11A9;B95A;1105 1172 11A9;
+B95B;B95B;1105 1172 11AA;B95B;1105 1172 11AA;
+B95C;B95C;1105 1172 11AB;B95C;1105 1172 11AB;
+B95D;B95D;1105 1172 11AC;B95D;1105 1172 11AC;
+B95E;B95E;1105 1172 11AD;B95E;1105 1172 11AD;
+B95F;B95F;1105 1172 11AE;B95F;1105 1172 11AE;
+B960;B960;1105 1172 11AF;B960;1105 1172 11AF;
+B961;B961;1105 1172 11B0;B961;1105 1172 11B0;
+B962;B962;1105 1172 11B1;B962;1105 1172 11B1;
+B963;B963;1105 1172 11B2;B963;1105 1172 11B2;
+B964;B964;1105 1172 11B3;B964;1105 1172 11B3;
+B965;B965;1105 1172 11B4;B965;1105 1172 11B4;
+B966;B966;1105 1172 11B5;B966;1105 1172 11B5;
+B967;B967;1105 1172 11B6;B967;1105 1172 11B6;
+B968;B968;1105 1172 11B7;B968;1105 1172 11B7;
+B969;B969;1105 1172 11B8;B969;1105 1172 11B8;
+B96A;B96A;1105 1172 11B9;B96A;1105 1172 11B9;
+B96B;B96B;1105 1172 11BA;B96B;1105 1172 11BA;
+B96C;B96C;1105 1172 11BB;B96C;1105 1172 11BB;
+B96D;B96D;1105 1172 11BC;B96D;1105 1172 11BC;
+B96E;B96E;1105 1172 11BD;B96E;1105 1172 11BD;
+B96F;B96F;1105 1172 11BE;B96F;1105 1172 11BE;
+B970;B970;1105 1172 11BF;B970;1105 1172 11BF;
+B971;B971;1105 1172 11C0;B971;1105 1172 11C0;
+B972;B972;1105 1172 11C1;B972;1105 1172 11C1;
+B973;B973;1105 1172 11C2;B973;1105 1172 11C2;
+B974;B974;1105 1173;B974;1105 1173;
+B975;B975;1105 1173 11A8;B975;1105 1173 11A8;
+B976;B976;1105 1173 11A9;B976;1105 1173 11A9;
+B977;B977;1105 1173 11AA;B977;1105 1173 11AA;
+B978;B978;1105 1173 11AB;B978;1105 1173 11AB;
+B979;B979;1105 1173 11AC;B979;1105 1173 11AC;
+B97A;B97A;1105 1173 11AD;B97A;1105 1173 11AD;
+B97B;B97B;1105 1173 11AE;B97B;1105 1173 11AE;
+B97C;B97C;1105 1173 11AF;B97C;1105 1173 11AF;
+B97D;B97D;1105 1173 11B0;B97D;1105 1173 11B0;
+B97E;B97E;1105 1173 11B1;B97E;1105 1173 11B1;
+B97F;B97F;1105 1173 11B2;B97F;1105 1173 11B2;
+B980;B980;1105 1173 11B3;B980;1105 1173 11B3;
+B981;B981;1105 1173 11B4;B981;1105 1173 11B4;
+B982;B982;1105 1173 11B5;B982;1105 1173 11B5;
+B983;B983;1105 1173 11B6;B983;1105 1173 11B6;
+B984;B984;1105 1173 11B7;B984;1105 1173 11B7;
+B985;B985;1105 1173 11B8;B985;1105 1173 11B8;
+B986;B986;1105 1173 11B9;B986;1105 1173 11B9;
+B987;B987;1105 1173 11BA;B987;1105 1173 11BA;
+B988;B988;1105 1173 11BB;B988;1105 1173 11BB;
+B989;B989;1105 1173 11BC;B989;1105 1173 11BC;
+B98A;B98A;1105 1173 11BD;B98A;1105 1173 11BD;
+B98B;B98B;1105 1173 11BE;B98B;1105 1173 11BE;
+B98C;B98C;1105 1173 11BF;B98C;1105 1173 11BF;
+B98D;B98D;1105 1173 11C0;B98D;1105 1173 11C0;
+B98E;B98E;1105 1173 11C1;B98E;1105 1173 11C1;
+B98F;B98F;1105 1173 11C2;B98F;1105 1173 11C2;
+B990;B990;1105 1174;B990;1105 1174;
+B991;B991;1105 1174 11A8;B991;1105 1174 11A8;
+B992;B992;1105 1174 11A9;B992;1105 1174 11A9;
+B993;B993;1105 1174 11AA;B993;1105 1174 11AA;
+B994;B994;1105 1174 11AB;B994;1105 1174 11AB;
+B995;B995;1105 1174 11AC;B995;1105 1174 11AC;
+B996;B996;1105 1174 11AD;B996;1105 1174 11AD;
+B997;B997;1105 1174 11AE;B997;1105 1174 11AE;
+B998;B998;1105 1174 11AF;B998;1105 1174 11AF;
+B999;B999;1105 1174 11B0;B999;1105 1174 11B0;
+B99A;B99A;1105 1174 11B1;B99A;1105 1174 11B1;
+B99B;B99B;1105 1174 11B2;B99B;1105 1174 11B2;
+B99C;B99C;1105 1174 11B3;B99C;1105 1174 11B3;
+B99D;B99D;1105 1174 11B4;B99D;1105 1174 11B4;
+B99E;B99E;1105 1174 11B5;B99E;1105 1174 11B5;
+B99F;B99F;1105 1174 11B6;B99F;1105 1174 11B6;
+B9A0;B9A0;1105 1174 11B7;B9A0;1105 1174 11B7;
+B9A1;B9A1;1105 1174 11B8;B9A1;1105 1174 11B8;
+B9A2;B9A2;1105 1174 11B9;B9A2;1105 1174 11B9;
+B9A3;B9A3;1105 1174 11BA;B9A3;1105 1174 11BA;
+B9A4;B9A4;1105 1174 11BB;B9A4;1105 1174 11BB;
+B9A5;B9A5;1105 1174 11BC;B9A5;1105 1174 11BC;
+B9A6;B9A6;1105 1174 11BD;B9A6;1105 1174 11BD;
+B9A7;B9A7;1105 1174 11BE;B9A7;1105 1174 11BE;
+B9A8;B9A8;1105 1174 11BF;B9A8;1105 1174 11BF;
+B9A9;B9A9;1105 1174 11C0;B9A9;1105 1174 11C0;
+B9AA;B9AA;1105 1174 11C1;B9AA;1105 1174 11C1;
+B9AB;B9AB;1105 1174 11C2;B9AB;1105 1174 11C2;
+B9AC;B9AC;1105 1175;B9AC;1105 1175;
+B9AD;B9AD;1105 1175 11A8;B9AD;1105 1175 11A8;
+B9AE;B9AE;1105 1175 11A9;B9AE;1105 1175 11A9;
+B9AF;B9AF;1105 1175 11AA;B9AF;1105 1175 11AA;
+B9B0;B9B0;1105 1175 11AB;B9B0;1105 1175 11AB;
+B9B1;B9B1;1105 1175 11AC;B9B1;1105 1175 11AC;
+B9B2;B9B2;1105 1175 11AD;B9B2;1105 1175 11AD;
+B9B3;B9B3;1105 1175 11AE;B9B3;1105 1175 11AE;
+B9B4;B9B4;1105 1175 11AF;B9B4;1105 1175 11AF;
+B9B5;B9B5;1105 1175 11B0;B9B5;1105 1175 11B0;
+B9B6;B9B6;1105 1175 11B1;B9B6;1105 1175 11B1;
+B9B7;B9B7;1105 1175 11B2;B9B7;1105 1175 11B2;
+B9B8;B9B8;1105 1175 11B3;B9B8;1105 1175 11B3;
+B9B9;B9B9;1105 1175 11B4;B9B9;1105 1175 11B4;
+B9BA;B9BA;1105 1175 11B5;B9BA;1105 1175 11B5;
+B9BB;B9BB;1105 1175 11B6;B9BB;1105 1175 11B6;
+B9BC;B9BC;1105 1175 11B7;B9BC;1105 1175 11B7;
+B9BD;B9BD;1105 1175 11B8;B9BD;1105 1175 11B8;
+B9BE;B9BE;1105 1175 11B9;B9BE;1105 1175 11B9;
+B9BF;B9BF;1105 1175 11BA;B9BF;1105 1175 11BA;
+B9C0;B9C0;1105 1175 11BB;B9C0;1105 1175 11BB;
+B9C1;B9C1;1105 1175 11BC;B9C1;1105 1175 11BC;
+B9C2;B9C2;1105 1175 11BD;B9C2;1105 1175 11BD;
+B9C3;B9C3;1105 1175 11BE;B9C3;1105 1175 11BE;
+B9C4;B9C4;1105 1175 11BF;B9C4;1105 1175 11BF;
+B9C5;B9C5;1105 1175 11C0;B9C5;1105 1175 11C0;
+B9C6;B9C6;1105 1175 11C1;B9C6;1105 1175 11C1;
+B9C7;B9C7;1105 1175 11C2;B9C7;1105 1175 11C2;
+B9C8;B9C8;1106 1161;B9C8;1106 1161;
+B9C9;B9C9;1106 1161 11A8;B9C9;1106 1161 11A8;
+B9CA;B9CA;1106 1161 11A9;B9CA;1106 1161 11A9;
+B9CB;B9CB;1106 1161 11AA;B9CB;1106 1161 11AA;
+B9CC;B9CC;1106 1161 11AB;B9CC;1106 1161 11AB;
+B9CD;B9CD;1106 1161 11AC;B9CD;1106 1161 11AC;
+B9CE;B9CE;1106 1161 11AD;B9CE;1106 1161 11AD;
+B9CF;B9CF;1106 1161 11AE;B9CF;1106 1161 11AE;
+B9D0;B9D0;1106 1161 11AF;B9D0;1106 1161 11AF;
+B9D1;B9D1;1106 1161 11B0;B9D1;1106 1161 11B0;
+B9D2;B9D2;1106 1161 11B1;B9D2;1106 1161 11B1;
+B9D3;B9D3;1106 1161 11B2;B9D3;1106 1161 11B2;
+B9D4;B9D4;1106 1161 11B3;B9D4;1106 1161 11B3;
+B9D5;B9D5;1106 1161 11B4;B9D5;1106 1161 11B4;
+B9D6;B9D6;1106 1161 11B5;B9D6;1106 1161 11B5;
+B9D7;B9D7;1106 1161 11B6;B9D7;1106 1161 11B6;
+B9D8;B9D8;1106 1161 11B7;B9D8;1106 1161 11B7;
+B9D9;B9D9;1106 1161 11B8;B9D9;1106 1161 11B8;
+B9DA;B9DA;1106 1161 11B9;B9DA;1106 1161 11B9;
+B9DB;B9DB;1106 1161 11BA;B9DB;1106 1161 11BA;
+B9DC;B9DC;1106 1161 11BB;B9DC;1106 1161 11BB;
+B9DD;B9DD;1106 1161 11BC;B9DD;1106 1161 11BC;
+B9DE;B9DE;1106 1161 11BD;B9DE;1106 1161 11BD;
+B9DF;B9DF;1106 1161 11BE;B9DF;1106 1161 11BE;
+B9E0;B9E0;1106 1161 11BF;B9E0;1106 1161 11BF;
+B9E1;B9E1;1106 1161 11C0;B9E1;1106 1161 11C0;
+B9E2;B9E2;1106 1161 11C1;B9E2;1106 1161 11C1;
+B9E3;B9E3;1106 1161 11C2;B9E3;1106 1161 11C2;
+B9E4;B9E4;1106 1162;B9E4;1106 1162;
+B9E5;B9E5;1106 1162 11A8;B9E5;1106 1162 11A8;
+B9E6;B9E6;1106 1162 11A9;B9E6;1106 1162 11A9;
+B9E7;B9E7;1106 1162 11AA;B9E7;1106 1162 11AA;
+B9E8;B9E8;1106 1162 11AB;B9E8;1106 1162 11AB;
+B9E9;B9E9;1106 1162 11AC;B9E9;1106 1162 11AC;
+B9EA;B9EA;1106 1162 11AD;B9EA;1106 1162 11AD;
+B9EB;B9EB;1106 1162 11AE;B9EB;1106 1162 11AE;
+B9EC;B9EC;1106 1162 11AF;B9EC;1106 1162 11AF;
+B9ED;B9ED;1106 1162 11B0;B9ED;1106 1162 11B0;
+B9EE;B9EE;1106 1162 11B1;B9EE;1106 1162 11B1;
+B9EF;B9EF;1106 1162 11B2;B9EF;1106 1162 11B2;
+B9F0;B9F0;1106 1162 11B3;B9F0;1106 1162 11B3;
+B9F1;B9F1;1106 1162 11B4;B9F1;1106 1162 11B4;
+B9F2;B9F2;1106 1162 11B5;B9F2;1106 1162 11B5;
+B9F3;B9F3;1106 1162 11B6;B9F3;1106 1162 11B6;
+B9F4;B9F4;1106 1162 11B7;B9F4;1106 1162 11B7;
+B9F5;B9F5;1106 1162 11B8;B9F5;1106 1162 11B8;
+B9F6;B9F6;1106 1162 11B9;B9F6;1106 1162 11B9;
+B9F7;B9F7;1106 1162 11BA;B9F7;1106 1162 11BA;
+B9F8;B9F8;1106 1162 11BB;B9F8;1106 1162 11BB;
+B9F9;B9F9;1106 1162 11BC;B9F9;1106 1162 11BC;
+B9FA;B9FA;1106 1162 11BD;B9FA;1106 1162 11BD;
+B9FB;B9FB;1106 1162 11BE;B9FB;1106 1162 11BE;
+B9FC;B9FC;1106 1162 11BF;B9FC;1106 1162 11BF;
+B9FD;B9FD;1106 1162 11C0;B9FD;1106 1162 11C0;
+B9FE;B9FE;1106 1162 11C1;B9FE;1106 1162 11C1;
+B9FF;B9FF;1106 1162 11C2;B9FF;1106 1162 11C2;
+BA00;BA00;1106 1163;BA00;1106 1163;
+BA01;BA01;1106 1163 11A8;BA01;1106 1163 11A8;
+BA02;BA02;1106 1163 11A9;BA02;1106 1163 11A9;
+BA03;BA03;1106 1163 11AA;BA03;1106 1163 11AA;
+BA04;BA04;1106 1163 11AB;BA04;1106 1163 11AB;
+BA05;BA05;1106 1163 11AC;BA05;1106 1163 11AC;
+BA06;BA06;1106 1163 11AD;BA06;1106 1163 11AD;
+BA07;BA07;1106 1163 11AE;BA07;1106 1163 11AE;
+BA08;BA08;1106 1163 11AF;BA08;1106 1163 11AF;
+BA09;BA09;1106 1163 11B0;BA09;1106 1163 11B0;
+BA0A;BA0A;1106 1163 11B1;BA0A;1106 1163 11B1;
+BA0B;BA0B;1106 1163 11B2;BA0B;1106 1163 11B2;
+BA0C;BA0C;1106 1163 11B3;BA0C;1106 1163 11B3;
+BA0D;BA0D;1106 1163 11B4;BA0D;1106 1163 11B4;
+BA0E;BA0E;1106 1163 11B5;BA0E;1106 1163 11B5;
+BA0F;BA0F;1106 1163 11B6;BA0F;1106 1163 11B6;
+BA10;BA10;1106 1163 11B7;BA10;1106 1163 11B7;
+BA11;BA11;1106 1163 11B8;BA11;1106 1163 11B8;
+BA12;BA12;1106 1163 11B9;BA12;1106 1163 11B9;
+BA13;BA13;1106 1163 11BA;BA13;1106 1163 11BA;
+BA14;BA14;1106 1163 11BB;BA14;1106 1163 11BB;
+BA15;BA15;1106 1163 11BC;BA15;1106 1163 11BC;
+BA16;BA16;1106 1163 11BD;BA16;1106 1163 11BD;
+BA17;BA17;1106 1163 11BE;BA17;1106 1163 11BE;
+BA18;BA18;1106 1163 11BF;BA18;1106 1163 11BF;
+BA19;BA19;1106 1163 11C0;BA19;1106 1163 11C0;
+BA1A;BA1A;1106 1163 11C1;BA1A;1106 1163 11C1;
+BA1B;BA1B;1106 1163 11C2;BA1B;1106 1163 11C2;
+BA1C;BA1C;1106 1164;BA1C;1106 1164;
+BA1D;BA1D;1106 1164 11A8;BA1D;1106 1164 11A8;
+BA1E;BA1E;1106 1164 11A9;BA1E;1106 1164 11A9;
+BA1F;BA1F;1106 1164 11AA;BA1F;1106 1164 11AA;
+BA20;BA20;1106 1164 11AB;BA20;1106 1164 11AB;
+BA21;BA21;1106 1164 11AC;BA21;1106 1164 11AC;
+BA22;BA22;1106 1164 11AD;BA22;1106 1164 11AD;
+BA23;BA23;1106 1164 11AE;BA23;1106 1164 11AE;
+BA24;BA24;1106 1164 11AF;BA24;1106 1164 11AF;
+BA25;BA25;1106 1164 11B0;BA25;1106 1164 11B0;
+BA26;BA26;1106 1164 11B1;BA26;1106 1164 11B1;
+BA27;BA27;1106 1164 11B2;BA27;1106 1164 11B2;
+BA28;BA28;1106 1164 11B3;BA28;1106 1164 11B3;
+BA29;BA29;1106 1164 11B4;BA29;1106 1164 11B4;
+BA2A;BA2A;1106 1164 11B5;BA2A;1106 1164 11B5;
+BA2B;BA2B;1106 1164 11B6;BA2B;1106 1164 11B6;
+BA2C;BA2C;1106 1164 11B7;BA2C;1106 1164 11B7;
+BA2D;BA2D;1106 1164 11B8;BA2D;1106 1164 11B8;
+BA2E;BA2E;1106 1164 11B9;BA2E;1106 1164 11B9;
+BA2F;BA2F;1106 1164 11BA;BA2F;1106 1164 11BA;
+BA30;BA30;1106 1164 11BB;BA30;1106 1164 11BB;
+BA31;BA31;1106 1164 11BC;BA31;1106 1164 11BC;
+BA32;BA32;1106 1164 11BD;BA32;1106 1164 11BD;
+BA33;BA33;1106 1164 11BE;BA33;1106 1164 11BE;
+BA34;BA34;1106 1164 11BF;BA34;1106 1164 11BF;
+BA35;BA35;1106 1164 11C0;BA35;1106 1164 11C0;
+BA36;BA36;1106 1164 11C1;BA36;1106 1164 11C1;
+BA37;BA37;1106 1164 11C2;BA37;1106 1164 11C2;
+BA38;BA38;1106 1165;BA38;1106 1165;
+BA39;BA39;1106 1165 11A8;BA39;1106 1165 11A8;
+BA3A;BA3A;1106 1165 11A9;BA3A;1106 1165 11A9;
+BA3B;BA3B;1106 1165 11AA;BA3B;1106 1165 11AA;
+BA3C;BA3C;1106 1165 11AB;BA3C;1106 1165 11AB;
+BA3D;BA3D;1106 1165 11AC;BA3D;1106 1165 11AC;
+BA3E;BA3E;1106 1165 11AD;BA3E;1106 1165 11AD;
+BA3F;BA3F;1106 1165 11AE;BA3F;1106 1165 11AE;
+BA40;BA40;1106 1165 11AF;BA40;1106 1165 11AF;
+BA41;BA41;1106 1165 11B0;BA41;1106 1165 11B0;
+BA42;BA42;1106 1165 11B1;BA42;1106 1165 11B1;
+BA43;BA43;1106 1165 11B2;BA43;1106 1165 11B2;
+BA44;BA44;1106 1165 11B3;BA44;1106 1165 11B3;
+BA45;BA45;1106 1165 11B4;BA45;1106 1165 11B4;
+BA46;BA46;1106 1165 11B5;BA46;1106 1165 11B5;
+BA47;BA47;1106 1165 11B6;BA47;1106 1165 11B6;
+BA48;BA48;1106 1165 11B7;BA48;1106 1165 11B7;
+BA49;BA49;1106 1165 11B8;BA49;1106 1165 11B8;
+BA4A;BA4A;1106 1165 11B9;BA4A;1106 1165 11B9;
+BA4B;BA4B;1106 1165 11BA;BA4B;1106 1165 11BA;
+BA4C;BA4C;1106 1165 11BB;BA4C;1106 1165 11BB;
+BA4D;BA4D;1106 1165 11BC;BA4D;1106 1165 11BC;
+BA4E;BA4E;1106 1165 11BD;BA4E;1106 1165 11BD;
+BA4F;BA4F;1106 1165 11BE;BA4F;1106 1165 11BE;
+BA50;BA50;1106 1165 11BF;BA50;1106 1165 11BF;
+BA51;BA51;1106 1165 11C0;BA51;1106 1165 11C0;
+BA52;BA52;1106 1165 11C1;BA52;1106 1165 11C1;
+BA53;BA53;1106 1165 11C2;BA53;1106 1165 11C2;
+BA54;BA54;1106 1166;BA54;1106 1166;
+BA55;BA55;1106 1166 11A8;BA55;1106 1166 11A8;
+BA56;BA56;1106 1166 11A9;BA56;1106 1166 11A9;
+BA57;BA57;1106 1166 11AA;BA57;1106 1166 11AA;
+BA58;BA58;1106 1166 11AB;BA58;1106 1166 11AB;
+BA59;BA59;1106 1166 11AC;BA59;1106 1166 11AC;
+BA5A;BA5A;1106 1166 11AD;BA5A;1106 1166 11AD;
+BA5B;BA5B;1106 1166 11AE;BA5B;1106 1166 11AE;
+BA5C;BA5C;1106 1166 11AF;BA5C;1106 1166 11AF;
+BA5D;BA5D;1106 1166 11B0;BA5D;1106 1166 11B0;
+BA5E;BA5E;1106 1166 11B1;BA5E;1106 1166 11B1;
+BA5F;BA5F;1106 1166 11B2;BA5F;1106 1166 11B2;
+BA60;BA60;1106 1166 11B3;BA60;1106 1166 11B3;
+BA61;BA61;1106 1166 11B4;BA61;1106 1166 11B4;
+BA62;BA62;1106 1166 11B5;BA62;1106 1166 11B5;
+BA63;BA63;1106 1166 11B6;BA63;1106 1166 11B6;
+BA64;BA64;1106 1166 11B7;BA64;1106 1166 11B7;
+BA65;BA65;1106 1166 11B8;BA65;1106 1166 11B8;
+BA66;BA66;1106 1166 11B9;BA66;1106 1166 11B9;
+BA67;BA67;1106 1166 11BA;BA67;1106 1166 11BA;
+BA68;BA68;1106 1166 11BB;BA68;1106 1166 11BB;
+BA69;BA69;1106 1166 11BC;BA69;1106 1166 11BC;
+BA6A;BA6A;1106 1166 11BD;BA6A;1106 1166 11BD;
+BA6B;BA6B;1106 1166 11BE;BA6B;1106 1166 11BE;
+BA6C;BA6C;1106 1166 11BF;BA6C;1106 1166 11BF;
+BA6D;BA6D;1106 1166 11C0;BA6D;1106 1166 11C0;
+BA6E;BA6E;1106 1166 11C1;BA6E;1106 1166 11C1;
+BA6F;BA6F;1106 1166 11C2;BA6F;1106 1166 11C2;
+BA70;BA70;1106 1167;BA70;1106 1167;
+BA71;BA71;1106 1167 11A8;BA71;1106 1167 11A8;
+BA72;BA72;1106 1167 11A9;BA72;1106 1167 11A9;
+BA73;BA73;1106 1167 11AA;BA73;1106 1167 11AA;
+BA74;BA74;1106 1167 11AB;BA74;1106 1167 11AB;
+BA75;BA75;1106 1167 11AC;BA75;1106 1167 11AC;
+BA76;BA76;1106 1167 11AD;BA76;1106 1167 11AD;
+BA77;BA77;1106 1167 11AE;BA77;1106 1167 11AE;
+BA78;BA78;1106 1167 11AF;BA78;1106 1167 11AF;
+BA79;BA79;1106 1167 11B0;BA79;1106 1167 11B0;
+BA7A;BA7A;1106 1167 11B1;BA7A;1106 1167 11B1;
+BA7B;BA7B;1106 1167 11B2;BA7B;1106 1167 11B2;
+BA7C;BA7C;1106 1167 11B3;BA7C;1106 1167 11B3;
+BA7D;BA7D;1106 1167 11B4;BA7D;1106 1167 11B4;
+BA7E;BA7E;1106 1167 11B5;BA7E;1106 1167 11B5;
+BA7F;BA7F;1106 1167 11B6;BA7F;1106 1167 11B6;
+BA80;BA80;1106 1167 11B7;BA80;1106 1167 11B7;
+BA81;BA81;1106 1167 11B8;BA81;1106 1167 11B8;
+BA82;BA82;1106 1167 11B9;BA82;1106 1167 11B9;
+BA83;BA83;1106 1167 11BA;BA83;1106 1167 11BA;
+BA84;BA84;1106 1167 11BB;BA84;1106 1167 11BB;
+BA85;BA85;1106 1167 11BC;BA85;1106 1167 11BC;
+BA86;BA86;1106 1167 11BD;BA86;1106 1167 11BD;
+BA87;BA87;1106 1167 11BE;BA87;1106 1167 11BE;
+BA88;BA88;1106 1167 11BF;BA88;1106 1167 11BF;
+BA89;BA89;1106 1167 11C0;BA89;1106 1167 11C0;
+BA8A;BA8A;1106 1167 11C1;BA8A;1106 1167 11C1;
+BA8B;BA8B;1106 1167 11C2;BA8B;1106 1167 11C2;
+BA8C;BA8C;1106 1168;BA8C;1106 1168;
+BA8D;BA8D;1106 1168 11A8;BA8D;1106 1168 11A8;
+BA8E;BA8E;1106 1168 11A9;BA8E;1106 1168 11A9;
+BA8F;BA8F;1106 1168 11AA;BA8F;1106 1168 11AA;
+BA90;BA90;1106 1168 11AB;BA90;1106 1168 11AB;
+BA91;BA91;1106 1168 11AC;BA91;1106 1168 11AC;
+BA92;BA92;1106 1168 11AD;BA92;1106 1168 11AD;
+BA93;BA93;1106 1168 11AE;BA93;1106 1168 11AE;
+BA94;BA94;1106 1168 11AF;BA94;1106 1168 11AF;
+BA95;BA95;1106 1168 11B0;BA95;1106 1168 11B0;
+BA96;BA96;1106 1168 11B1;BA96;1106 1168 11B1;
+BA97;BA97;1106 1168 11B2;BA97;1106 1168 11B2;
+BA98;BA98;1106 1168 11B3;BA98;1106 1168 11B3;
+BA99;BA99;1106 1168 11B4;BA99;1106 1168 11B4;
+BA9A;BA9A;1106 1168 11B5;BA9A;1106 1168 11B5;
+BA9B;BA9B;1106 1168 11B6;BA9B;1106 1168 11B6;
+BA9C;BA9C;1106 1168 11B7;BA9C;1106 1168 11B7;
+BA9D;BA9D;1106 1168 11B8;BA9D;1106 1168 11B8;
+BA9E;BA9E;1106 1168 11B9;BA9E;1106 1168 11B9;
+BA9F;BA9F;1106 1168 11BA;BA9F;1106 1168 11BA;
+BAA0;BAA0;1106 1168 11BB;BAA0;1106 1168 11BB;
+BAA1;BAA1;1106 1168 11BC;BAA1;1106 1168 11BC;
+BAA2;BAA2;1106 1168 11BD;BAA2;1106 1168 11BD;
+BAA3;BAA3;1106 1168 11BE;BAA3;1106 1168 11BE;
+BAA4;BAA4;1106 1168 11BF;BAA4;1106 1168 11BF;
+BAA5;BAA5;1106 1168 11C0;BAA5;1106 1168 11C0;
+BAA6;BAA6;1106 1168 11C1;BAA6;1106 1168 11C1;
+BAA7;BAA7;1106 1168 11C2;BAA7;1106 1168 11C2;
+BAA8;BAA8;1106 1169;BAA8;1106 1169;
+BAA9;BAA9;1106 1169 11A8;BAA9;1106 1169 11A8;
+BAAA;BAAA;1106 1169 11A9;BAAA;1106 1169 11A9;
+BAAB;BAAB;1106 1169 11AA;BAAB;1106 1169 11AA;
+BAAC;BAAC;1106 1169 11AB;BAAC;1106 1169 11AB;
+BAAD;BAAD;1106 1169 11AC;BAAD;1106 1169 11AC;
+BAAE;BAAE;1106 1169 11AD;BAAE;1106 1169 11AD;
+BAAF;BAAF;1106 1169 11AE;BAAF;1106 1169 11AE;
+BAB0;BAB0;1106 1169 11AF;BAB0;1106 1169 11AF;
+BAB1;BAB1;1106 1169 11B0;BAB1;1106 1169 11B0;
+BAB2;BAB2;1106 1169 11B1;BAB2;1106 1169 11B1;
+BAB3;BAB3;1106 1169 11B2;BAB3;1106 1169 11B2;
+BAB4;BAB4;1106 1169 11B3;BAB4;1106 1169 11B3;
+BAB5;BAB5;1106 1169 11B4;BAB5;1106 1169 11B4;
+BAB6;BAB6;1106 1169 11B5;BAB6;1106 1169 11B5;
+BAB7;BAB7;1106 1169 11B6;BAB7;1106 1169 11B6;
+BAB8;BAB8;1106 1169 11B7;BAB8;1106 1169 11B7;
+BAB9;BAB9;1106 1169 11B8;BAB9;1106 1169 11B8;
+BABA;BABA;1106 1169 11B9;BABA;1106 1169 11B9;
+BABB;BABB;1106 1169 11BA;BABB;1106 1169 11BA;
+BABC;BABC;1106 1169 11BB;BABC;1106 1169 11BB;
+BABD;BABD;1106 1169 11BC;BABD;1106 1169 11BC;
+BABE;BABE;1106 1169 11BD;BABE;1106 1169 11BD;
+BABF;BABF;1106 1169 11BE;BABF;1106 1169 11BE;
+BAC0;BAC0;1106 1169 11BF;BAC0;1106 1169 11BF;
+BAC1;BAC1;1106 1169 11C0;BAC1;1106 1169 11C0;
+BAC2;BAC2;1106 1169 11C1;BAC2;1106 1169 11C1;
+BAC3;BAC3;1106 1169 11C2;BAC3;1106 1169 11C2;
+BAC4;BAC4;1106 116A;BAC4;1106 116A;
+BAC5;BAC5;1106 116A 11A8;BAC5;1106 116A 11A8;
+BAC6;BAC6;1106 116A 11A9;BAC6;1106 116A 11A9;
+BAC7;BAC7;1106 116A 11AA;BAC7;1106 116A 11AA;
+BAC8;BAC8;1106 116A 11AB;BAC8;1106 116A 11AB;
+BAC9;BAC9;1106 116A 11AC;BAC9;1106 116A 11AC;
+BACA;BACA;1106 116A 11AD;BACA;1106 116A 11AD;
+BACB;BACB;1106 116A 11AE;BACB;1106 116A 11AE;
+BACC;BACC;1106 116A 11AF;BACC;1106 116A 11AF;
+BACD;BACD;1106 116A 11B0;BACD;1106 116A 11B0;
+BACE;BACE;1106 116A 11B1;BACE;1106 116A 11B1;
+BACF;BACF;1106 116A 11B2;BACF;1106 116A 11B2;
+BAD0;BAD0;1106 116A 11B3;BAD0;1106 116A 11B3;
+BAD1;BAD1;1106 116A 11B4;BAD1;1106 116A 11B4;
+BAD2;BAD2;1106 116A 11B5;BAD2;1106 116A 11B5;
+BAD3;BAD3;1106 116A 11B6;BAD3;1106 116A 11B6;
+BAD4;BAD4;1106 116A 11B7;BAD4;1106 116A 11B7;
+BAD5;BAD5;1106 116A 11B8;BAD5;1106 116A 11B8;
+BAD6;BAD6;1106 116A 11B9;BAD6;1106 116A 11B9;
+BAD7;BAD7;1106 116A 11BA;BAD7;1106 116A 11BA;
+BAD8;BAD8;1106 116A 11BB;BAD8;1106 116A 11BB;
+BAD9;BAD9;1106 116A 11BC;BAD9;1106 116A 11BC;
+BADA;BADA;1106 116A 11BD;BADA;1106 116A 11BD;
+BADB;BADB;1106 116A 11BE;BADB;1106 116A 11BE;
+BADC;BADC;1106 116A 11BF;BADC;1106 116A 11BF;
+BADD;BADD;1106 116A 11C0;BADD;1106 116A 11C0;
+BADE;BADE;1106 116A 11C1;BADE;1106 116A 11C1;
+BADF;BADF;1106 116A 11C2;BADF;1106 116A 11C2;
+BAE0;BAE0;1106 116B;BAE0;1106 116B;
+BAE1;BAE1;1106 116B 11A8;BAE1;1106 116B 11A8;
+BAE2;BAE2;1106 116B 11A9;BAE2;1106 116B 11A9;
+BAE3;BAE3;1106 116B 11AA;BAE3;1106 116B 11AA;
+BAE4;BAE4;1106 116B 11AB;BAE4;1106 116B 11AB;
+BAE5;BAE5;1106 116B 11AC;BAE5;1106 116B 11AC;
+BAE6;BAE6;1106 116B 11AD;BAE6;1106 116B 11AD;
+BAE7;BAE7;1106 116B 11AE;BAE7;1106 116B 11AE;
+BAE8;BAE8;1106 116B 11AF;BAE8;1106 116B 11AF;
+BAE9;BAE9;1106 116B 11B0;BAE9;1106 116B 11B0;
+BAEA;BAEA;1106 116B 11B1;BAEA;1106 116B 11B1;
+BAEB;BAEB;1106 116B 11B2;BAEB;1106 116B 11B2;
+BAEC;BAEC;1106 116B 11B3;BAEC;1106 116B 11B3;
+BAED;BAED;1106 116B 11B4;BAED;1106 116B 11B4;
+BAEE;BAEE;1106 116B 11B5;BAEE;1106 116B 11B5;
+BAEF;BAEF;1106 116B 11B6;BAEF;1106 116B 11B6;
+BAF0;BAF0;1106 116B 11B7;BAF0;1106 116B 11B7;
+BAF1;BAF1;1106 116B 11B8;BAF1;1106 116B 11B8;
+BAF2;BAF2;1106 116B 11B9;BAF2;1106 116B 11B9;
+BAF3;BAF3;1106 116B 11BA;BAF3;1106 116B 11BA;
+BAF4;BAF4;1106 116B 11BB;BAF4;1106 116B 11BB;
+BAF5;BAF5;1106 116B 11BC;BAF5;1106 116B 11BC;
+BAF6;BAF6;1106 116B 11BD;BAF6;1106 116B 11BD;
+BAF7;BAF7;1106 116B 11BE;BAF7;1106 116B 11BE;
+BAF8;BAF8;1106 116B 11BF;BAF8;1106 116B 11BF;
+BAF9;BAF9;1106 116B 11C0;BAF9;1106 116B 11C0;
+BAFA;BAFA;1106 116B 11C1;BAFA;1106 116B 11C1;
+BAFB;BAFB;1106 116B 11C2;BAFB;1106 116B 11C2;
+BAFC;BAFC;1106 116C;BAFC;1106 116C;
+BAFD;BAFD;1106 116C 11A8;BAFD;1106 116C 11A8;
+BAFE;BAFE;1106 116C 11A9;BAFE;1106 116C 11A9;
+BAFF;BAFF;1106 116C 11AA;BAFF;1106 116C 11AA;
+BB00;BB00;1106 116C 11AB;BB00;1106 116C 11AB;
+BB01;BB01;1106 116C 11AC;BB01;1106 116C 11AC;
+BB02;BB02;1106 116C 11AD;BB02;1106 116C 11AD;
+BB03;BB03;1106 116C 11AE;BB03;1106 116C 11AE;
+BB04;BB04;1106 116C 11AF;BB04;1106 116C 11AF;
+BB05;BB05;1106 116C 11B0;BB05;1106 116C 11B0;
+BB06;BB06;1106 116C 11B1;BB06;1106 116C 11B1;
+BB07;BB07;1106 116C 11B2;BB07;1106 116C 11B2;
+BB08;BB08;1106 116C 11B3;BB08;1106 116C 11B3;
+BB09;BB09;1106 116C 11B4;BB09;1106 116C 11B4;
+BB0A;BB0A;1106 116C 11B5;BB0A;1106 116C 11B5;
+BB0B;BB0B;1106 116C 11B6;BB0B;1106 116C 11B6;
+BB0C;BB0C;1106 116C 11B7;BB0C;1106 116C 11B7;
+BB0D;BB0D;1106 116C 11B8;BB0D;1106 116C 11B8;
+BB0E;BB0E;1106 116C 11B9;BB0E;1106 116C 11B9;
+BB0F;BB0F;1106 116C 11BA;BB0F;1106 116C 11BA;
+BB10;BB10;1106 116C 11BB;BB10;1106 116C 11BB;
+BB11;BB11;1106 116C 11BC;BB11;1106 116C 11BC;
+BB12;BB12;1106 116C 11BD;BB12;1106 116C 11BD;
+BB13;BB13;1106 116C 11BE;BB13;1106 116C 11BE;
+BB14;BB14;1106 116C 11BF;BB14;1106 116C 11BF;
+BB15;BB15;1106 116C 11C0;BB15;1106 116C 11C0;
+BB16;BB16;1106 116C 11C1;BB16;1106 116C 11C1;
+BB17;BB17;1106 116C 11C2;BB17;1106 116C 11C2;
+BB18;BB18;1106 116D;BB18;1106 116D;
+BB19;BB19;1106 116D 11A8;BB19;1106 116D 11A8;
+BB1A;BB1A;1106 116D 11A9;BB1A;1106 116D 11A9;
+BB1B;BB1B;1106 116D 11AA;BB1B;1106 116D 11AA;
+BB1C;BB1C;1106 116D 11AB;BB1C;1106 116D 11AB;
+BB1D;BB1D;1106 116D 11AC;BB1D;1106 116D 11AC;
+BB1E;BB1E;1106 116D 11AD;BB1E;1106 116D 11AD;
+BB1F;BB1F;1106 116D 11AE;BB1F;1106 116D 11AE;
+BB20;BB20;1106 116D 11AF;BB20;1106 116D 11AF;
+BB21;BB21;1106 116D 11B0;BB21;1106 116D 11B0;
+BB22;BB22;1106 116D 11B1;BB22;1106 116D 11B1;
+BB23;BB23;1106 116D 11B2;BB23;1106 116D 11B2;
+BB24;BB24;1106 116D 11B3;BB24;1106 116D 11B3;
+BB25;BB25;1106 116D 11B4;BB25;1106 116D 11B4;
+BB26;BB26;1106 116D 11B5;BB26;1106 116D 11B5;
+BB27;BB27;1106 116D 11B6;BB27;1106 116D 11B6;
+BB28;BB28;1106 116D 11B7;BB28;1106 116D 11B7;
+BB29;BB29;1106 116D 11B8;BB29;1106 116D 11B8;
+BB2A;BB2A;1106 116D 11B9;BB2A;1106 116D 11B9;
+BB2B;BB2B;1106 116D 11BA;BB2B;1106 116D 11BA;
+BB2C;BB2C;1106 116D 11BB;BB2C;1106 116D 11BB;
+BB2D;BB2D;1106 116D 11BC;BB2D;1106 116D 11BC;
+BB2E;BB2E;1106 116D 11BD;BB2E;1106 116D 11BD;
+BB2F;BB2F;1106 116D 11BE;BB2F;1106 116D 11BE;
+BB30;BB30;1106 116D 11BF;BB30;1106 116D 11BF;
+BB31;BB31;1106 116D 11C0;BB31;1106 116D 11C0;
+BB32;BB32;1106 116D 11C1;BB32;1106 116D 11C1;
+BB33;BB33;1106 116D 11C2;BB33;1106 116D 11C2;
+BB34;BB34;1106 116E;BB34;1106 116E;
+BB35;BB35;1106 116E 11A8;BB35;1106 116E 11A8;
+BB36;BB36;1106 116E 11A9;BB36;1106 116E 11A9;
+BB37;BB37;1106 116E 11AA;BB37;1106 116E 11AA;
+BB38;BB38;1106 116E 11AB;BB38;1106 116E 11AB;
+BB39;BB39;1106 116E 11AC;BB39;1106 116E 11AC;
+BB3A;BB3A;1106 116E 11AD;BB3A;1106 116E 11AD;
+BB3B;BB3B;1106 116E 11AE;BB3B;1106 116E 11AE;
+BB3C;BB3C;1106 116E 11AF;BB3C;1106 116E 11AF;
+BB3D;BB3D;1106 116E 11B0;BB3D;1106 116E 11B0;
+BB3E;BB3E;1106 116E 11B1;BB3E;1106 116E 11B1;
+BB3F;BB3F;1106 116E 11B2;BB3F;1106 116E 11B2;
+BB40;BB40;1106 116E 11B3;BB40;1106 116E 11B3;
+BB41;BB41;1106 116E 11B4;BB41;1106 116E 11B4;
+BB42;BB42;1106 116E 11B5;BB42;1106 116E 11B5;
+BB43;BB43;1106 116E 11B6;BB43;1106 116E 11B6;
+BB44;BB44;1106 116E 11B7;BB44;1106 116E 11B7;
+BB45;BB45;1106 116E 11B8;BB45;1106 116E 11B8;
+BB46;BB46;1106 116E 11B9;BB46;1106 116E 11B9;
+BB47;BB47;1106 116E 11BA;BB47;1106 116E 11BA;
+BB48;BB48;1106 116E 11BB;BB48;1106 116E 11BB;
+BB49;BB49;1106 116E 11BC;BB49;1106 116E 11BC;
+BB4A;BB4A;1106 116E 11BD;BB4A;1106 116E 11BD;
+BB4B;BB4B;1106 116E 11BE;BB4B;1106 116E 11BE;
+BB4C;BB4C;1106 116E 11BF;BB4C;1106 116E 11BF;
+BB4D;BB4D;1106 116E 11C0;BB4D;1106 116E 11C0;
+BB4E;BB4E;1106 116E 11C1;BB4E;1106 116E 11C1;
+BB4F;BB4F;1106 116E 11C2;BB4F;1106 116E 11C2;
+BB50;BB50;1106 116F;BB50;1106 116F;
+BB51;BB51;1106 116F 11A8;BB51;1106 116F 11A8;
+BB52;BB52;1106 116F 11A9;BB52;1106 116F 11A9;
+BB53;BB53;1106 116F 11AA;BB53;1106 116F 11AA;
+BB54;BB54;1106 116F 11AB;BB54;1106 116F 11AB;
+BB55;BB55;1106 116F 11AC;BB55;1106 116F 11AC;
+BB56;BB56;1106 116F 11AD;BB56;1106 116F 11AD;
+BB57;BB57;1106 116F 11AE;BB57;1106 116F 11AE;
+BB58;BB58;1106 116F 11AF;BB58;1106 116F 11AF;
+BB59;BB59;1106 116F 11B0;BB59;1106 116F 11B0;
+BB5A;BB5A;1106 116F 11B1;BB5A;1106 116F 11B1;
+BB5B;BB5B;1106 116F 11B2;BB5B;1106 116F 11B2;
+BB5C;BB5C;1106 116F 11B3;BB5C;1106 116F 11B3;
+BB5D;BB5D;1106 116F 11B4;BB5D;1106 116F 11B4;
+BB5E;BB5E;1106 116F 11B5;BB5E;1106 116F 11B5;
+BB5F;BB5F;1106 116F 11B6;BB5F;1106 116F 11B6;
+BB60;BB60;1106 116F 11B7;BB60;1106 116F 11B7;
+BB61;BB61;1106 116F 11B8;BB61;1106 116F 11B8;
+BB62;BB62;1106 116F 11B9;BB62;1106 116F 11B9;
+BB63;BB63;1106 116F 11BA;BB63;1106 116F 11BA;
+BB64;BB64;1106 116F 11BB;BB64;1106 116F 11BB;
+BB65;BB65;1106 116F 11BC;BB65;1106 116F 11BC;
+BB66;BB66;1106 116F 11BD;BB66;1106 116F 11BD;
+BB67;BB67;1106 116F 11BE;BB67;1106 116F 11BE;
+BB68;BB68;1106 116F 11BF;BB68;1106 116F 11BF;
+BB69;BB69;1106 116F 11C0;BB69;1106 116F 11C0;
+BB6A;BB6A;1106 116F 11C1;BB6A;1106 116F 11C1;
+BB6B;BB6B;1106 116F 11C2;BB6B;1106 116F 11C2;
+BB6C;BB6C;1106 1170;BB6C;1106 1170;
+BB6D;BB6D;1106 1170 11A8;BB6D;1106 1170 11A8;
+BB6E;BB6E;1106 1170 11A9;BB6E;1106 1170 11A9;
+BB6F;BB6F;1106 1170 11AA;BB6F;1106 1170 11AA;
+BB70;BB70;1106 1170 11AB;BB70;1106 1170 11AB;
+BB71;BB71;1106 1170 11AC;BB71;1106 1170 11AC;
+BB72;BB72;1106 1170 11AD;BB72;1106 1170 11AD;
+BB73;BB73;1106 1170 11AE;BB73;1106 1170 11AE;
+BB74;BB74;1106 1170 11AF;BB74;1106 1170 11AF;
+BB75;BB75;1106 1170 11B0;BB75;1106 1170 11B0;
+BB76;BB76;1106 1170 11B1;BB76;1106 1170 11B1;
+BB77;BB77;1106 1170 11B2;BB77;1106 1170 11B2;
+BB78;BB78;1106 1170 11B3;BB78;1106 1170 11B3;
+BB79;BB79;1106 1170 11B4;BB79;1106 1170 11B4;
+BB7A;BB7A;1106 1170 11B5;BB7A;1106 1170 11B5;
+BB7B;BB7B;1106 1170 11B6;BB7B;1106 1170 11B6;
+BB7C;BB7C;1106 1170 11B7;BB7C;1106 1170 11B7;
+BB7D;BB7D;1106 1170 11B8;BB7D;1106 1170 11B8;
+BB7E;BB7E;1106 1170 11B9;BB7E;1106 1170 11B9;
+BB7F;BB7F;1106 1170 11BA;BB7F;1106 1170 11BA;
+BB80;BB80;1106 1170 11BB;BB80;1106 1170 11BB;
+BB81;BB81;1106 1170 11BC;BB81;1106 1170 11BC;
+BB82;BB82;1106 1170 11BD;BB82;1106 1170 11BD;
+BB83;BB83;1106 1170 11BE;BB83;1106 1170 11BE;
+BB84;BB84;1106 1170 11BF;BB84;1106 1170 11BF;
+BB85;BB85;1106 1170 11C0;BB85;1106 1170 11C0;
+BB86;BB86;1106 1170 11C1;BB86;1106 1170 11C1;
+BB87;BB87;1106 1170 11C2;BB87;1106 1170 11C2;
+BB88;BB88;1106 1171;BB88;1106 1171;
+BB89;BB89;1106 1171 11A8;BB89;1106 1171 11A8;
+BB8A;BB8A;1106 1171 11A9;BB8A;1106 1171 11A9;
+BB8B;BB8B;1106 1171 11AA;BB8B;1106 1171 11AA;
+BB8C;BB8C;1106 1171 11AB;BB8C;1106 1171 11AB;
+BB8D;BB8D;1106 1171 11AC;BB8D;1106 1171 11AC;
+BB8E;BB8E;1106 1171 11AD;BB8E;1106 1171 11AD;
+BB8F;BB8F;1106 1171 11AE;BB8F;1106 1171 11AE;
+BB90;BB90;1106 1171 11AF;BB90;1106 1171 11AF;
+BB91;BB91;1106 1171 11B0;BB91;1106 1171 11B0;
+BB92;BB92;1106 1171 11B1;BB92;1106 1171 11B1;
+BB93;BB93;1106 1171 11B2;BB93;1106 1171 11B2;
+BB94;BB94;1106 1171 11B3;BB94;1106 1171 11B3;
+BB95;BB95;1106 1171 11B4;BB95;1106 1171 11B4;
+BB96;BB96;1106 1171 11B5;BB96;1106 1171 11B5;
+BB97;BB97;1106 1171 11B6;BB97;1106 1171 11B6;
+BB98;BB98;1106 1171 11B7;BB98;1106 1171 11B7;
+BB99;BB99;1106 1171 11B8;BB99;1106 1171 11B8;
+BB9A;BB9A;1106 1171 11B9;BB9A;1106 1171 11B9;
+BB9B;BB9B;1106 1171 11BA;BB9B;1106 1171 11BA;
+BB9C;BB9C;1106 1171 11BB;BB9C;1106 1171 11BB;
+BB9D;BB9D;1106 1171 11BC;BB9D;1106 1171 11BC;
+BB9E;BB9E;1106 1171 11BD;BB9E;1106 1171 11BD;
+BB9F;BB9F;1106 1171 11BE;BB9F;1106 1171 11BE;
+BBA0;BBA0;1106 1171 11BF;BBA0;1106 1171 11BF;
+BBA1;BBA1;1106 1171 11C0;BBA1;1106 1171 11C0;
+BBA2;BBA2;1106 1171 11C1;BBA2;1106 1171 11C1;
+BBA3;BBA3;1106 1171 11C2;BBA3;1106 1171 11C2;
+BBA4;BBA4;1106 1172;BBA4;1106 1172;
+BBA5;BBA5;1106 1172 11A8;BBA5;1106 1172 11A8;
+BBA6;BBA6;1106 1172 11A9;BBA6;1106 1172 11A9;
+BBA7;BBA7;1106 1172 11AA;BBA7;1106 1172 11AA;
+BBA8;BBA8;1106 1172 11AB;BBA8;1106 1172 11AB;
+BBA9;BBA9;1106 1172 11AC;BBA9;1106 1172 11AC;
+BBAA;BBAA;1106 1172 11AD;BBAA;1106 1172 11AD;
+BBAB;BBAB;1106 1172 11AE;BBAB;1106 1172 11AE;
+BBAC;BBAC;1106 1172 11AF;BBAC;1106 1172 11AF;
+BBAD;BBAD;1106 1172 11B0;BBAD;1106 1172 11B0;
+BBAE;BBAE;1106 1172 11B1;BBAE;1106 1172 11B1;
+BBAF;BBAF;1106 1172 11B2;BBAF;1106 1172 11B2;
+BBB0;BBB0;1106 1172 11B3;BBB0;1106 1172 11B3;
+BBB1;BBB1;1106 1172 11B4;BBB1;1106 1172 11B4;
+BBB2;BBB2;1106 1172 11B5;BBB2;1106 1172 11B5;
+BBB3;BBB3;1106 1172 11B6;BBB3;1106 1172 11B6;
+BBB4;BBB4;1106 1172 11B7;BBB4;1106 1172 11B7;
+BBB5;BBB5;1106 1172 11B8;BBB5;1106 1172 11B8;
+BBB6;BBB6;1106 1172 11B9;BBB6;1106 1172 11B9;
+BBB7;BBB7;1106 1172 11BA;BBB7;1106 1172 11BA;
+BBB8;BBB8;1106 1172 11BB;BBB8;1106 1172 11BB;
+BBB9;BBB9;1106 1172 11BC;BBB9;1106 1172 11BC;
+BBBA;BBBA;1106 1172 11BD;BBBA;1106 1172 11BD;
+BBBB;BBBB;1106 1172 11BE;BBBB;1106 1172 11BE;
+BBBC;BBBC;1106 1172 11BF;BBBC;1106 1172 11BF;
+BBBD;BBBD;1106 1172 11C0;BBBD;1106 1172 11C0;
+BBBE;BBBE;1106 1172 11C1;BBBE;1106 1172 11C1;
+BBBF;BBBF;1106 1172 11C2;BBBF;1106 1172 11C2;
+BBC0;BBC0;1106 1173;BBC0;1106 1173;
+BBC1;BBC1;1106 1173 11A8;BBC1;1106 1173 11A8;
+BBC2;BBC2;1106 1173 11A9;BBC2;1106 1173 11A9;
+BBC3;BBC3;1106 1173 11AA;BBC3;1106 1173 11AA;
+BBC4;BBC4;1106 1173 11AB;BBC4;1106 1173 11AB;
+BBC5;BBC5;1106 1173 11AC;BBC5;1106 1173 11AC;
+BBC6;BBC6;1106 1173 11AD;BBC6;1106 1173 11AD;
+BBC7;BBC7;1106 1173 11AE;BBC7;1106 1173 11AE;
+BBC8;BBC8;1106 1173 11AF;BBC8;1106 1173 11AF;
+BBC9;BBC9;1106 1173 11B0;BBC9;1106 1173 11B0;
+BBCA;BBCA;1106 1173 11B1;BBCA;1106 1173 11B1;
+BBCB;BBCB;1106 1173 11B2;BBCB;1106 1173 11B2;
+BBCC;BBCC;1106 1173 11B3;BBCC;1106 1173 11B3;
+BBCD;BBCD;1106 1173 11B4;BBCD;1106 1173 11B4;
+BBCE;BBCE;1106 1173 11B5;BBCE;1106 1173 11B5;
+BBCF;BBCF;1106 1173 11B6;BBCF;1106 1173 11B6;
+BBD0;BBD0;1106 1173 11B7;BBD0;1106 1173 11B7;
+BBD1;BBD1;1106 1173 11B8;BBD1;1106 1173 11B8;
+BBD2;BBD2;1106 1173 11B9;BBD2;1106 1173 11B9;
+BBD3;BBD3;1106 1173 11BA;BBD3;1106 1173 11BA;
+BBD4;BBD4;1106 1173 11BB;BBD4;1106 1173 11BB;
+BBD5;BBD5;1106 1173 11BC;BBD5;1106 1173 11BC;
+BBD6;BBD6;1106 1173 11BD;BBD6;1106 1173 11BD;
+BBD7;BBD7;1106 1173 11BE;BBD7;1106 1173 11BE;
+BBD8;BBD8;1106 1173 11BF;BBD8;1106 1173 11BF;
+BBD9;BBD9;1106 1173 11C0;BBD9;1106 1173 11C0;
+BBDA;BBDA;1106 1173 11C1;BBDA;1106 1173 11C1;
+BBDB;BBDB;1106 1173 11C2;BBDB;1106 1173 11C2;
+BBDC;BBDC;1106 1174;BBDC;1106 1174;
+BBDD;BBDD;1106 1174 11A8;BBDD;1106 1174 11A8;
+BBDE;BBDE;1106 1174 11A9;BBDE;1106 1174 11A9;
+BBDF;BBDF;1106 1174 11AA;BBDF;1106 1174 11AA;
+BBE0;BBE0;1106 1174 11AB;BBE0;1106 1174 11AB;
+BBE1;BBE1;1106 1174 11AC;BBE1;1106 1174 11AC;
+BBE2;BBE2;1106 1174 11AD;BBE2;1106 1174 11AD;
+BBE3;BBE3;1106 1174 11AE;BBE3;1106 1174 11AE;
+BBE4;BBE4;1106 1174 11AF;BBE4;1106 1174 11AF;
+BBE5;BBE5;1106 1174 11B0;BBE5;1106 1174 11B0;
+BBE6;BBE6;1106 1174 11B1;BBE6;1106 1174 11B1;
+BBE7;BBE7;1106 1174 11B2;BBE7;1106 1174 11B2;
+BBE8;BBE8;1106 1174 11B3;BBE8;1106 1174 11B3;
+BBE9;BBE9;1106 1174 11B4;BBE9;1106 1174 11B4;
+BBEA;BBEA;1106 1174 11B5;BBEA;1106 1174 11B5;
+BBEB;BBEB;1106 1174 11B6;BBEB;1106 1174 11B6;
+BBEC;BBEC;1106 1174 11B7;BBEC;1106 1174 11B7;
+BBED;BBED;1106 1174 11B8;BBED;1106 1174 11B8;
+BBEE;BBEE;1106 1174 11B9;BBEE;1106 1174 11B9;
+BBEF;BBEF;1106 1174 11BA;BBEF;1106 1174 11BA;
+BBF0;BBF0;1106 1174 11BB;BBF0;1106 1174 11BB;
+BBF1;BBF1;1106 1174 11BC;BBF1;1106 1174 11BC;
+BBF2;BBF2;1106 1174 11BD;BBF2;1106 1174 11BD;
+BBF3;BBF3;1106 1174 11BE;BBF3;1106 1174 11BE;
+BBF4;BBF4;1106 1174 11BF;BBF4;1106 1174 11BF;
+BBF5;BBF5;1106 1174 11C0;BBF5;1106 1174 11C0;
+BBF6;BBF6;1106 1174 11C1;BBF6;1106 1174 11C1;
+BBF7;BBF7;1106 1174 11C2;BBF7;1106 1174 11C2;
+BBF8;BBF8;1106 1175;BBF8;1106 1175;
+BBF9;BBF9;1106 1175 11A8;BBF9;1106 1175 11A8;
+BBFA;BBFA;1106 1175 11A9;BBFA;1106 1175 11A9;
+BBFB;BBFB;1106 1175 11AA;BBFB;1106 1175 11AA;
+BBFC;BBFC;1106 1175 11AB;BBFC;1106 1175 11AB;
+BBFD;BBFD;1106 1175 11AC;BBFD;1106 1175 11AC;
+BBFE;BBFE;1106 1175 11AD;BBFE;1106 1175 11AD;
+BBFF;BBFF;1106 1175 11AE;BBFF;1106 1175 11AE;
+BC00;BC00;1106 1175 11AF;BC00;1106 1175 11AF;
+BC01;BC01;1106 1175 11B0;BC01;1106 1175 11B0;
+BC02;BC02;1106 1175 11B1;BC02;1106 1175 11B1;
+BC03;BC03;1106 1175 11B2;BC03;1106 1175 11B2;
+BC04;BC04;1106 1175 11B3;BC04;1106 1175 11B3;
+BC05;BC05;1106 1175 11B4;BC05;1106 1175 11B4;
+BC06;BC06;1106 1175 11B5;BC06;1106 1175 11B5;
+BC07;BC07;1106 1175 11B6;BC07;1106 1175 11B6;
+BC08;BC08;1106 1175 11B7;BC08;1106 1175 11B7;
+BC09;BC09;1106 1175 11B8;BC09;1106 1175 11B8;
+BC0A;BC0A;1106 1175 11B9;BC0A;1106 1175 11B9;
+BC0B;BC0B;1106 1175 11BA;BC0B;1106 1175 11BA;
+BC0C;BC0C;1106 1175 11BB;BC0C;1106 1175 11BB;
+BC0D;BC0D;1106 1175 11BC;BC0D;1106 1175 11BC;
+BC0E;BC0E;1106 1175 11BD;BC0E;1106 1175 11BD;
+BC0F;BC0F;1106 1175 11BE;BC0F;1106 1175 11BE;
+BC10;BC10;1106 1175 11BF;BC10;1106 1175 11BF;
+BC11;BC11;1106 1175 11C0;BC11;1106 1175 11C0;
+BC12;BC12;1106 1175 11C1;BC12;1106 1175 11C1;
+BC13;BC13;1106 1175 11C2;BC13;1106 1175 11C2;
+BC14;BC14;1107 1161;BC14;1107 1161;
+BC15;BC15;1107 1161 11A8;BC15;1107 1161 11A8;
+BC16;BC16;1107 1161 11A9;BC16;1107 1161 11A9;
+BC17;BC17;1107 1161 11AA;BC17;1107 1161 11AA;
+BC18;BC18;1107 1161 11AB;BC18;1107 1161 11AB;
+BC19;BC19;1107 1161 11AC;BC19;1107 1161 11AC;
+BC1A;BC1A;1107 1161 11AD;BC1A;1107 1161 11AD;
+BC1B;BC1B;1107 1161 11AE;BC1B;1107 1161 11AE;
+BC1C;BC1C;1107 1161 11AF;BC1C;1107 1161 11AF;
+BC1D;BC1D;1107 1161 11B0;BC1D;1107 1161 11B0;
+BC1E;BC1E;1107 1161 11B1;BC1E;1107 1161 11B1;
+BC1F;BC1F;1107 1161 11B2;BC1F;1107 1161 11B2;
+BC20;BC20;1107 1161 11B3;BC20;1107 1161 11B3;
+BC21;BC21;1107 1161 11B4;BC21;1107 1161 11B4;
+BC22;BC22;1107 1161 11B5;BC22;1107 1161 11B5;
+BC23;BC23;1107 1161 11B6;BC23;1107 1161 11B6;
+BC24;BC24;1107 1161 11B7;BC24;1107 1161 11B7;
+BC25;BC25;1107 1161 11B8;BC25;1107 1161 11B8;
+BC26;BC26;1107 1161 11B9;BC26;1107 1161 11B9;
+BC27;BC27;1107 1161 11BA;BC27;1107 1161 11BA;
+BC28;BC28;1107 1161 11BB;BC28;1107 1161 11BB;
+BC29;BC29;1107 1161 11BC;BC29;1107 1161 11BC;
+BC2A;BC2A;1107 1161 11BD;BC2A;1107 1161 11BD;
+BC2B;BC2B;1107 1161 11BE;BC2B;1107 1161 11BE;
+BC2C;BC2C;1107 1161 11BF;BC2C;1107 1161 11BF;
+BC2D;BC2D;1107 1161 11C0;BC2D;1107 1161 11C0;
+BC2E;BC2E;1107 1161 11C1;BC2E;1107 1161 11C1;
+BC2F;BC2F;1107 1161 11C2;BC2F;1107 1161 11C2;
+BC30;BC30;1107 1162;BC30;1107 1162;
+BC31;BC31;1107 1162 11A8;BC31;1107 1162 11A8;
+BC32;BC32;1107 1162 11A9;BC32;1107 1162 11A9;
+BC33;BC33;1107 1162 11AA;BC33;1107 1162 11AA;
+BC34;BC34;1107 1162 11AB;BC34;1107 1162 11AB;
+BC35;BC35;1107 1162 11AC;BC35;1107 1162 11AC;
+BC36;BC36;1107 1162 11AD;BC36;1107 1162 11AD;
+BC37;BC37;1107 1162 11AE;BC37;1107 1162 11AE;
+BC38;BC38;1107 1162 11AF;BC38;1107 1162 11AF;
+BC39;BC39;1107 1162 11B0;BC39;1107 1162 11B0;
+BC3A;BC3A;1107 1162 11B1;BC3A;1107 1162 11B1;
+BC3B;BC3B;1107 1162 11B2;BC3B;1107 1162 11B2;
+BC3C;BC3C;1107 1162 11B3;BC3C;1107 1162 11B3;
+BC3D;BC3D;1107 1162 11B4;BC3D;1107 1162 11B4;
+BC3E;BC3E;1107 1162 11B5;BC3E;1107 1162 11B5;
+BC3F;BC3F;1107 1162 11B6;BC3F;1107 1162 11B6;
+BC40;BC40;1107 1162 11B7;BC40;1107 1162 11B7;
+BC41;BC41;1107 1162 11B8;BC41;1107 1162 11B8;
+BC42;BC42;1107 1162 11B9;BC42;1107 1162 11B9;
+BC43;BC43;1107 1162 11BA;BC43;1107 1162 11BA;
+BC44;BC44;1107 1162 11BB;BC44;1107 1162 11BB;
+BC45;BC45;1107 1162 11BC;BC45;1107 1162 11BC;
+BC46;BC46;1107 1162 11BD;BC46;1107 1162 11BD;
+BC47;BC47;1107 1162 11BE;BC47;1107 1162 11BE;
+BC48;BC48;1107 1162 11BF;BC48;1107 1162 11BF;
+BC49;BC49;1107 1162 11C0;BC49;1107 1162 11C0;
+BC4A;BC4A;1107 1162 11C1;BC4A;1107 1162 11C1;
+BC4B;BC4B;1107 1162 11C2;BC4B;1107 1162 11C2;
+BC4C;BC4C;1107 1163;BC4C;1107 1163;
+BC4D;BC4D;1107 1163 11A8;BC4D;1107 1163 11A8;
+BC4E;BC4E;1107 1163 11A9;BC4E;1107 1163 11A9;
+BC4F;BC4F;1107 1163 11AA;BC4F;1107 1163 11AA;
+BC50;BC50;1107 1163 11AB;BC50;1107 1163 11AB;
+BC51;BC51;1107 1163 11AC;BC51;1107 1163 11AC;
+BC52;BC52;1107 1163 11AD;BC52;1107 1163 11AD;
+BC53;BC53;1107 1163 11AE;BC53;1107 1163 11AE;
+BC54;BC54;1107 1163 11AF;BC54;1107 1163 11AF;
+BC55;BC55;1107 1163 11B0;BC55;1107 1163 11B0;
+BC56;BC56;1107 1163 11B1;BC56;1107 1163 11B1;
+BC57;BC57;1107 1163 11B2;BC57;1107 1163 11B2;
+BC58;BC58;1107 1163 11B3;BC58;1107 1163 11B3;
+BC59;BC59;1107 1163 11B4;BC59;1107 1163 11B4;
+BC5A;BC5A;1107 1163 11B5;BC5A;1107 1163 11B5;
+BC5B;BC5B;1107 1163 11B6;BC5B;1107 1163 11B6;
+BC5C;BC5C;1107 1163 11B7;BC5C;1107 1163 11B7;
+BC5D;BC5D;1107 1163 11B8;BC5D;1107 1163 11B8;
+BC5E;BC5E;1107 1163 11B9;BC5E;1107 1163 11B9;
+BC5F;BC5F;1107 1163 11BA;BC5F;1107 1163 11BA;
+BC60;BC60;1107 1163 11BB;BC60;1107 1163 11BB;
+BC61;BC61;1107 1163 11BC;BC61;1107 1163 11BC;
+BC62;BC62;1107 1163 11BD;BC62;1107 1163 11BD;
+BC63;BC63;1107 1163 11BE;BC63;1107 1163 11BE;
+BC64;BC64;1107 1163 11BF;BC64;1107 1163 11BF;
+BC65;BC65;1107 1163 11C0;BC65;1107 1163 11C0;
+BC66;BC66;1107 1163 11C1;BC66;1107 1163 11C1;
+BC67;BC67;1107 1163 11C2;BC67;1107 1163 11C2;
+BC68;BC68;1107 1164;BC68;1107 1164;
+BC69;BC69;1107 1164 11A8;BC69;1107 1164 11A8;
+BC6A;BC6A;1107 1164 11A9;BC6A;1107 1164 11A9;
+BC6B;BC6B;1107 1164 11AA;BC6B;1107 1164 11AA;
+BC6C;BC6C;1107 1164 11AB;BC6C;1107 1164 11AB;
+BC6D;BC6D;1107 1164 11AC;BC6D;1107 1164 11AC;
+BC6E;BC6E;1107 1164 11AD;BC6E;1107 1164 11AD;
+BC6F;BC6F;1107 1164 11AE;BC6F;1107 1164 11AE;
+BC70;BC70;1107 1164 11AF;BC70;1107 1164 11AF;
+BC71;BC71;1107 1164 11B0;BC71;1107 1164 11B0;
+BC72;BC72;1107 1164 11B1;BC72;1107 1164 11B1;
+BC73;BC73;1107 1164 11B2;BC73;1107 1164 11B2;
+BC74;BC74;1107 1164 11B3;BC74;1107 1164 11B3;
+BC75;BC75;1107 1164 11B4;BC75;1107 1164 11B4;
+BC76;BC76;1107 1164 11B5;BC76;1107 1164 11B5;
+BC77;BC77;1107 1164 11B6;BC77;1107 1164 11B6;
+BC78;BC78;1107 1164 11B7;BC78;1107 1164 11B7;
+BC79;BC79;1107 1164 11B8;BC79;1107 1164 11B8;
+BC7A;BC7A;1107 1164 11B9;BC7A;1107 1164 11B9;
+BC7B;BC7B;1107 1164 11BA;BC7B;1107 1164 11BA;
+BC7C;BC7C;1107 1164 11BB;BC7C;1107 1164 11BB;
+BC7D;BC7D;1107 1164 11BC;BC7D;1107 1164 11BC;
+BC7E;BC7E;1107 1164 11BD;BC7E;1107 1164 11BD;
+BC7F;BC7F;1107 1164 11BE;BC7F;1107 1164 11BE;
+BC80;BC80;1107 1164 11BF;BC80;1107 1164 11BF;
+BC81;BC81;1107 1164 11C0;BC81;1107 1164 11C0;
+BC82;BC82;1107 1164 11C1;BC82;1107 1164 11C1;
+BC83;BC83;1107 1164 11C2;BC83;1107 1164 11C2;
+BC84;BC84;1107 1165;BC84;1107 1165;
+BC85;BC85;1107 1165 11A8;BC85;1107 1165 11A8;
+BC86;BC86;1107 1165 11A9;BC86;1107 1165 11A9;
+BC87;BC87;1107 1165 11AA;BC87;1107 1165 11AA;
+BC88;BC88;1107 1165 11AB;BC88;1107 1165 11AB;
+BC89;BC89;1107 1165 11AC;BC89;1107 1165 11AC;
+BC8A;BC8A;1107 1165 11AD;BC8A;1107 1165 11AD;
+BC8B;BC8B;1107 1165 11AE;BC8B;1107 1165 11AE;
+BC8C;BC8C;1107 1165 11AF;BC8C;1107 1165 11AF;
+BC8D;BC8D;1107 1165 11B0;BC8D;1107 1165 11B0;
+BC8E;BC8E;1107 1165 11B1;BC8E;1107 1165 11B1;
+BC8F;BC8F;1107 1165 11B2;BC8F;1107 1165 11B2;
+BC90;BC90;1107 1165 11B3;BC90;1107 1165 11B3;
+BC91;BC91;1107 1165 11B4;BC91;1107 1165 11B4;
+BC92;BC92;1107 1165 11B5;BC92;1107 1165 11B5;
+BC93;BC93;1107 1165 11B6;BC93;1107 1165 11B6;
+BC94;BC94;1107 1165 11B7;BC94;1107 1165 11B7;
+BC95;BC95;1107 1165 11B8;BC95;1107 1165 11B8;
+BC96;BC96;1107 1165 11B9;BC96;1107 1165 11B9;
+BC97;BC97;1107 1165 11BA;BC97;1107 1165 11BA;
+BC98;BC98;1107 1165 11BB;BC98;1107 1165 11BB;
+BC99;BC99;1107 1165 11BC;BC99;1107 1165 11BC;
+BC9A;BC9A;1107 1165 11BD;BC9A;1107 1165 11BD;
+BC9B;BC9B;1107 1165 11BE;BC9B;1107 1165 11BE;
+BC9C;BC9C;1107 1165 11BF;BC9C;1107 1165 11BF;
+BC9D;BC9D;1107 1165 11C0;BC9D;1107 1165 11C0;
+BC9E;BC9E;1107 1165 11C1;BC9E;1107 1165 11C1;
+BC9F;BC9F;1107 1165 11C2;BC9F;1107 1165 11C2;
+BCA0;BCA0;1107 1166;BCA0;1107 1166;
+BCA1;BCA1;1107 1166 11A8;BCA1;1107 1166 11A8;
+BCA2;BCA2;1107 1166 11A9;BCA2;1107 1166 11A9;
+BCA3;BCA3;1107 1166 11AA;BCA3;1107 1166 11AA;
+BCA4;BCA4;1107 1166 11AB;BCA4;1107 1166 11AB;
+BCA5;BCA5;1107 1166 11AC;BCA5;1107 1166 11AC;
+BCA6;BCA6;1107 1166 11AD;BCA6;1107 1166 11AD;
+BCA7;BCA7;1107 1166 11AE;BCA7;1107 1166 11AE;
+BCA8;BCA8;1107 1166 11AF;BCA8;1107 1166 11AF;
+BCA9;BCA9;1107 1166 11B0;BCA9;1107 1166 11B0;
+BCAA;BCAA;1107 1166 11B1;BCAA;1107 1166 11B1;
+BCAB;BCAB;1107 1166 11B2;BCAB;1107 1166 11B2;
+BCAC;BCAC;1107 1166 11B3;BCAC;1107 1166 11B3;
+BCAD;BCAD;1107 1166 11B4;BCAD;1107 1166 11B4;
+BCAE;BCAE;1107 1166 11B5;BCAE;1107 1166 11B5;
+BCAF;BCAF;1107 1166 11B6;BCAF;1107 1166 11B6;
+BCB0;BCB0;1107 1166 11B7;BCB0;1107 1166 11B7;
+BCB1;BCB1;1107 1166 11B8;BCB1;1107 1166 11B8;
+BCB2;BCB2;1107 1166 11B9;BCB2;1107 1166 11B9;
+BCB3;BCB3;1107 1166 11BA;BCB3;1107 1166 11BA;
+BCB4;BCB4;1107 1166 11BB;BCB4;1107 1166 11BB;
+BCB5;BCB5;1107 1166 11BC;BCB5;1107 1166 11BC;
+BCB6;BCB6;1107 1166 11BD;BCB6;1107 1166 11BD;
+BCB7;BCB7;1107 1166 11BE;BCB7;1107 1166 11BE;
+BCB8;BCB8;1107 1166 11BF;BCB8;1107 1166 11BF;
+BCB9;BCB9;1107 1166 11C0;BCB9;1107 1166 11C0;
+BCBA;BCBA;1107 1166 11C1;BCBA;1107 1166 11C1;
+BCBB;BCBB;1107 1166 11C2;BCBB;1107 1166 11C2;
+BCBC;BCBC;1107 1167;BCBC;1107 1167;
+BCBD;BCBD;1107 1167 11A8;BCBD;1107 1167 11A8;
+BCBE;BCBE;1107 1167 11A9;BCBE;1107 1167 11A9;
+BCBF;BCBF;1107 1167 11AA;BCBF;1107 1167 11AA;
+BCC0;BCC0;1107 1167 11AB;BCC0;1107 1167 11AB;
+BCC1;BCC1;1107 1167 11AC;BCC1;1107 1167 11AC;
+BCC2;BCC2;1107 1167 11AD;BCC2;1107 1167 11AD;
+BCC3;BCC3;1107 1167 11AE;BCC3;1107 1167 11AE;
+BCC4;BCC4;1107 1167 11AF;BCC4;1107 1167 11AF;
+BCC5;BCC5;1107 1167 11B0;BCC5;1107 1167 11B0;
+BCC6;BCC6;1107 1167 11B1;BCC6;1107 1167 11B1;
+BCC7;BCC7;1107 1167 11B2;BCC7;1107 1167 11B2;
+BCC8;BCC8;1107 1167 11B3;BCC8;1107 1167 11B3;
+BCC9;BCC9;1107 1167 11B4;BCC9;1107 1167 11B4;
+BCCA;BCCA;1107 1167 11B5;BCCA;1107 1167 11B5;
+BCCB;BCCB;1107 1167 11B6;BCCB;1107 1167 11B6;
+BCCC;BCCC;1107 1167 11B7;BCCC;1107 1167 11B7;
+BCCD;BCCD;1107 1167 11B8;BCCD;1107 1167 11B8;
+BCCE;BCCE;1107 1167 11B9;BCCE;1107 1167 11B9;
+BCCF;BCCF;1107 1167 11BA;BCCF;1107 1167 11BA;
+BCD0;BCD0;1107 1167 11BB;BCD0;1107 1167 11BB;
+BCD1;BCD1;1107 1167 11BC;BCD1;1107 1167 11BC;
+BCD2;BCD2;1107 1167 11BD;BCD2;1107 1167 11BD;
+BCD3;BCD3;1107 1167 11BE;BCD3;1107 1167 11BE;
+BCD4;BCD4;1107 1167 11BF;BCD4;1107 1167 11BF;
+BCD5;BCD5;1107 1167 11C0;BCD5;1107 1167 11C0;
+BCD6;BCD6;1107 1167 11C1;BCD6;1107 1167 11C1;
+BCD7;BCD7;1107 1167 11C2;BCD7;1107 1167 11C2;
+BCD8;BCD8;1107 1168;BCD8;1107 1168;
+BCD9;BCD9;1107 1168 11A8;BCD9;1107 1168 11A8;
+BCDA;BCDA;1107 1168 11A9;BCDA;1107 1168 11A9;
+BCDB;BCDB;1107 1168 11AA;BCDB;1107 1168 11AA;
+BCDC;BCDC;1107 1168 11AB;BCDC;1107 1168 11AB;
+BCDD;BCDD;1107 1168 11AC;BCDD;1107 1168 11AC;
+BCDE;BCDE;1107 1168 11AD;BCDE;1107 1168 11AD;
+BCDF;BCDF;1107 1168 11AE;BCDF;1107 1168 11AE;
+BCE0;BCE0;1107 1168 11AF;BCE0;1107 1168 11AF;
+BCE1;BCE1;1107 1168 11B0;BCE1;1107 1168 11B0;
+BCE2;BCE2;1107 1168 11B1;BCE2;1107 1168 11B1;
+BCE3;BCE3;1107 1168 11B2;BCE3;1107 1168 11B2;
+BCE4;BCE4;1107 1168 11B3;BCE4;1107 1168 11B3;
+BCE5;BCE5;1107 1168 11B4;BCE5;1107 1168 11B4;
+BCE6;BCE6;1107 1168 11B5;BCE6;1107 1168 11B5;
+BCE7;BCE7;1107 1168 11B6;BCE7;1107 1168 11B6;
+BCE8;BCE8;1107 1168 11B7;BCE8;1107 1168 11B7;
+BCE9;BCE9;1107 1168 11B8;BCE9;1107 1168 11B8;
+BCEA;BCEA;1107 1168 11B9;BCEA;1107 1168 11B9;
+BCEB;BCEB;1107 1168 11BA;BCEB;1107 1168 11BA;
+BCEC;BCEC;1107 1168 11BB;BCEC;1107 1168 11BB;
+BCED;BCED;1107 1168 11BC;BCED;1107 1168 11BC;
+BCEE;BCEE;1107 1168 11BD;BCEE;1107 1168 11BD;
+BCEF;BCEF;1107 1168 11BE;BCEF;1107 1168 11BE;
+BCF0;BCF0;1107 1168 11BF;BCF0;1107 1168 11BF;
+BCF1;BCF1;1107 1168 11C0;BCF1;1107 1168 11C0;
+BCF2;BCF2;1107 1168 11C1;BCF2;1107 1168 11C1;
+BCF3;BCF3;1107 1168 11C2;BCF3;1107 1168 11C2;
+BCF4;BCF4;1107 1169;BCF4;1107 1169;
+BCF5;BCF5;1107 1169 11A8;BCF5;1107 1169 11A8;
+BCF6;BCF6;1107 1169 11A9;BCF6;1107 1169 11A9;
+BCF7;BCF7;1107 1169 11AA;BCF7;1107 1169 11AA;
+BCF8;BCF8;1107 1169 11AB;BCF8;1107 1169 11AB;
+BCF9;BCF9;1107 1169 11AC;BCF9;1107 1169 11AC;
+BCFA;BCFA;1107 1169 11AD;BCFA;1107 1169 11AD;
+BCFB;BCFB;1107 1169 11AE;BCFB;1107 1169 11AE;
+BCFC;BCFC;1107 1169 11AF;BCFC;1107 1169 11AF;
+BCFD;BCFD;1107 1169 11B0;BCFD;1107 1169 11B0;
+BCFE;BCFE;1107 1169 11B1;BCFE;1107 1169 11B1;
+BCFF;BCFF;1107 1169 11B2;BCFF;1107 1169 11B2;
+BD00;BD00;1107 1169 11B3;BD00;1107 1169 11B3;
+BD01;BD01;1107 1169 11B4;BD01;1107 1169 11B4;
+BD02;BD02;1107 1169 11B5;BD02;1107 1169 11B5;
+BD03;BD03;1107 1169 11B6;BD03;1107 1169 11B6;
+BD04;BD04;1107 1169 11B7;BD04;1107 1169 11B7;
+BD05;BD05;1107 1169 11B8;BD05;1107 1169 11B8;
+BD06;BD06;1107 1169 11B9;BD06;1107 1169 11B9;
+BD07;BD07;1107 1169 11BA;BD07;1107 1169 11BA;
+BD08;BD08;1107 1169 11BB;BD08;1107 1169 11BB;
+BD09;BD09;1107 1169 11BC;BD09;1107 1169 11BC;
+BD0A;BD0A;1107 1169 11BD;BD0A;1107 1169 11BD;
+BD0B;BD0B;1107 1169 11BE;BD0B;1107 1169 11BE;
+BD0C;BD0C;1107 1169 11BF;BD0C;1107 1169 11BF;
+BD0D;BD0D;1107 1169 11C0;BD0D;1107 1169 11C0;
+BD0E;BD0E;1107 1169 11C1;BD0E;1107 1169 11C1;
+BD0F;BD0F;1107 1169 11C2;BD0F;1107 1169 11C2;
+BD10;BD10;1107 116A;BD10;1107 116A;
+BD11;BD11;1107 116A 11A8;BD11;1107 116A 11A8;
+BD12;BD12;1107 116A 11A9;BD12;1107 116A 11A9;
+BD13;BD13;1107 116A 11AA;BD13;1107 116A 11AA;
+BD14;BD14;1107 116A 11AB;BD14;1107 116A 11AB;
+BD15;BD15;1107 116A 11AC;BD15;1107 116A 11AC;
+BD16;BD16;1107 116A 11AD;BD16;1107 116A 11AD;
+BD17;BD17;1107 116A 11AE;BD17;1107 116A 11AE;
+BD18;BD18;1107 116A 11AF;BD18;1107 116A 11AF;
+BD19;BD19;1107 116A 11B0;BD19;1107 116A 11B0;
+BD1A;BD1A;1107 116A 11B1;BD1A;1107 116A 11B1;
+BD1B;BD1B;1107 116A 11B2;BD1B;1107 116A 11B2;
+BD1C;BD1C;1107 116A 11B3;BD1C;1107 116A 11B3;
+BD1D;BD1D;1107 116A 11B4;BD1D;1107 116A 11B4;
+BD1E;BD1E;1107 116A 11B5;BD1E;1107 116A 11B5;
+BD1F;BD1F;1107 116A 11B6;BD1F;1107 116A 11B6;
+BD20;BD20;1107 116A 11B7;BD20;1107 116A 11B7;
+BD21;BD21;1107 116A 11B8;BD21;1107 116A 11B8;
+BD22;BD22;1107 116A 11B9;BD22;1107 116A 11B9;
+BD23;BD23;1107 116A 11BA;BD23;1107 116A 11BA;
+BD24;BD24;1107 116A 11BB;BD24;1107 116A 11BB;
+BD25;BD25;1107 116A 11BC;BD25;1107 116A 11BC;
+BD26;BD26;1107 116A 11BD;BD26;1107 116A 11BD;
+BD27;BD27;1107 116A 11BE;BD27;1107 116A 11BE;
+BD28;BD28;1107 116A 11BF;BD28;1107 116A 11BF;
+BD29;BD29;1107 116A 11C0;BD29;1107 116A 11C0;
+BD2A;BD2A;1107 116A 11C1;BD2A;1107 116A 11C1;
+BD2B;BD2B;1107 116A 11C2;BD2B;1107 116A 11C2;
+BD2C;BD2C;1107 116B;BD2C;1107 116B;
+BD2D;BD2D;1107 116B 11A8;BD2D;1107 116B 11A8;
+BD2E;BD2E;1107 116B 11A9;BD2E;1107 116B 11A9;
+BD2F;BD2F;1107 116B 11AA;BD2F;1107 116B 11AA;
+BD30;BD30;1107 116B 11AB;BD30;1107 116B 11AB;
+BD31;BD31;1107 116B 11AC;BD31;1107 116B 11AC;
+BD32;BD32;1107 116B 11AD;BD32;1107 116B 11AD;
+BD33;BD33;1107 116B 11AE;BD33;1107 116B 11AE;
+BD34;BD34;1107 116B 11AF;BD34;1107 116B 11AF;
+BD35;BD35;1107 116B 11B0;BD35;1107 116B 11B0;
+BD36;BD36;1107 116B 11B1;BD36;1107 116B 11B1;
+BD37;BD37;1107 116B 11B2;BD37;1107 116B 11B2;
+BD38;BD38;1107 116B 11B3;BD38;1107 116B 11B3;
+BD39;BD39;1107 116B 11B4;BD39;1107 116B 11B4;
+BD3A;BD3A;1107 116B 11B5;BD3A;1107 116B 11B5;
+BD3B;BD3B;1107 116B 11B6;BD3B;1107 116B 11B6;
+BD3C;BD3C;1107 116B 11B7;BD3C;1107 116B 11B7;
+BD3D;BD3D;1107 116B 11B8;BD3D;1107 116B 11B8;
+BD3E;BD3E;1107 116B 11B9;BD3E;1107 116B 11B9;
+BD3F;BD3F;1107 116B 11BA;BD3F;1107 116B 11BA;
+BD40;BD40;1107 116B 11BB;BD40;1107 116B 11BB;
+BD41;BD41;1107 116B 11BC;BD41;1107 116B 11BC;
+BD42;BD42;1107 116B 11BD;BD42;1107 116B 11BD;
+BD43;BD43;1107 116B 11BE;BD43;1107 116B 11BE;
+BD44;BD44;1107 116B 11BF;BD44;1107 116B 11BF;
+BD45;BD45;1107 116B 11C0;BD45;1107 116B 11C0;
+BD46;BD46;1107 116B 11C1;BD46;1107 116B 11C1;
+BD47;BD47;1107 116B 11C2;BD47;1107 116B 11C2;
+BD48;BD48;1107 116C;BD48;1107 116C;
+BD49;BD49;1107 116C 11A8;BD49;1107 116C 11A8;
+BD4A;BD4A;1107 116C 11A9;BD4A;1107 116C 11A9;
+BD4B;BD4B;1107 116C 11AA;BD4B;1107 116C 11AA;
+BD4C;BD4C;1107 116C 11AB;BD4C;1107 116C 11AB;
+BD4D;BD4D;1107 116C 11AC;BD4D;1107 116C 11AC;
+BD4E;BD4E;1107 116C 11AD;BD4E;1107 116C 11AD;
+BD4F;BD4F;1107 116C 11AE;BD4F;1107 116C 11AE;
+BD50;BD50;1107 116C 11AF;BD50;1107 116C 11AF;
+BD51;BD51;1107 116C 11B0;BD51;1107 116C 11B0;
+BD52;BD52;1107 116C 11B1;BD52;1107 116C 11B1;
+BD53;BD53;1107 116C 11B2;BD53;1107 116C 11B2;
+BD54;BD54;1107 116C 11B3;BD54;1107 116C 11B3;
+BD55;BD55;1107 116C 11B4;BD55;1107 116C 11B4;
+BD56;BD56;1107 116C 11B5;BD56;1107 116C 11B5;
+BD57;BD57;1107 116C 11B6;BD57;1107 116C 11B6;
+BD58;BD58;1107 116C 11B7;BD58;1107 116C 11B7;
+BD59;BD59;1107 116C 11B8;BD59;1107 116C 11B8;
+BD5A;BD5A;1107 116C 11B9;BD5A;1107 116C 11B9;
+BD5B;BD5B;1107 116C 11BA;BD5B;1107 116C 11BA;
+BD5C;BD5C;1107 116C 11BB;BD5C;1107 116C 11BB;
+BD5D;BD5D;1107 116C 11BC;BD5D;1107 116C 11BC;
+BD5E;BD5E;1107 116C 11BD;BD5E;1107 116C 11BD;
+BD5F;BD5F;1107 116C 11BE;BD5F;1107 116C 11BE;
+BD60;BD60;1107 116C 11BF;BD60;1107 116C 11BF;
+BD61;BD61;1107 116C 11C0;BD61;1107 116C 11C0;
+BD62;BD62;1107 116C 11C1;BD62;1107 116C 11C1;
+BD63;BD63;1107 116C 11C2;BD63;1107 116C 11C2;
+BD64;BD64;1107 116D;BD64;1107 116D;
+BD65;BD65;1107 116D 11A8;BD65;1107 116D 11A8;
+BD66;BD66;1107 116D 11A9;BD66;1107 116D 11A9;
+BD67;BD67;1107 116D 11AA;BD67;1107 116D 11AA;
+BD68;BD68;1107 116D 11AB;BD68;1107 116D 11AB;
+BD69;BD69;1107 116D 11AC;BD69;1107 116D 11AC;
+BD6A;BD6A;1107 116D 11AD;BD6A;1107 116D 11AD;
+BD6B;BD6B;1107 116D 11AE;BD6B;1107 116D 11AE;
+BD6C;BD6C;1107 116D 11AF;BD6C;1107 116D 11AF;
+BD6D;BD6D;1107 116D 11B0;BD6D;1107 116D 11B0;
+BD6E;BD6E;1107 116D 11B1;BD6E;1107 116D 11B1;
+BD6F;BD6F;1107 116D 11B2;BD6F;1107 116D 11B2;
+BD70;BD70;1107 116D 11B3;BD70;1107 116D 11B3;
+BD71;BD71;1107 116D 11B4;BD71;1107 116D 11B4;
+BD72;BD72;1107 116D 11B5;BD72;1107 116D 11B5;
+BD73;BD73;1107 116D 11B6;BD73;1107 116D 11B6;
+BD74;BD74;1107 116D 11B7;BD74;1107 116D 11B7;
+BD75;BD75;1107 116D 11B8;BD75;1107 116D 11B8;
+BD76;BD76;1107 116D 11B9;BD76;1107 116D 11B9;
+BD77;BD77;1107 116D 11BA;BD77;1107 116D 11BA;
+BD78;BD78;1107 116D 11BB;BD78;1107 116D 11BB;
+BD79;BD79;1107 116D 11BC;BD79;1107 116D 11BC;
+BD7A;BD7A;1107 116D 11BD;BD7A;1107 116D 11BD;
+BD7B;BD7B;1107 116D 11BE;BD7B;1107 116D 11BE;
+BD7C;BD7C;1107 116D 11BF;BD7C;1107 116D 11BF;
+BD7D;BD7D;1107 116D 11C0;BD7D;1107 116D 11C0;
+BD7E;BD7E;1107 116D 11C1;BD7E;1107 116D 11C1;
+BD7F;BD7F;1107 116D 11C2;BD7F;1107 116D 11C2;
+BD80;BD80;1107 116E;BD80;1107 116E;
+BD81;BD81;1107 116E 11A8;BD81;1107 116E 11A8;
+BD82;BD82;1107 116E 11A9;BD82;1107 116E 11A9;
+BD83;BD83;1107 116E 11AA;BD83;1107 116E 11AA;
+BD84;BD84;1107 116E 11AB;BD84;1107 116E 11AB;
+BD85;BD85;1107 116E 11AC;BD85;1107 116E 11AC;
+BD86;BD86;1107 116E 11AD;BD86;1107 116E 11AD;
+BD87;BD87;1107 116E 11AE;BD87;1107 116E 11AE;
+BD88;BD88;1107 116E 11AF;BD88;1107 116E 11AF;
+BD89;BD89;1107 116E 11B0;BD89;1107 116E 11B0;
+BD8A;BD8A;1107 116E 11B1;BD8A;1107 116E 11B1;
+BD8B;BD8B;1107 116E 11B2;BD8B;1107 116E 11B2;
+BD8C;BD8C;1107 116E 11B3;BD8C;1107 116E 11B3;
+BD8D;BD8D;1107 116E 11B4;BD8D;1107 116E 11B4;
+BD8E;BD8E;1107 116E 11B5;BD8E;1107 116E 11B5;
+BD8F;BD8F;1107 116E 11B6;BD8F;1107 116E 11B6;
+BD90;BD90;1107 116E 11B7;BD90;1107 116E 11B7;
+BD91;BD91;1107 116E 11B8;BD91;1107 116E 11B8;
+BD92;BD92;1107 116E 11B9;BD92;1107 116E 11B9;
+BD93;BD93;1107 116E 11BA;BD93;1107 116E 11BA;
+BD94;BD94;1107 116E 11BB;BD94;1107 116E 11BB;
+BD95;BD95;1107 116E 11BC;BD95;1107 116E 11BC;
+BD96;BD96;1107 116E 11BD;BD96;1107 116E 11BD;
+BD97;BD97;1107 116E 11BE;BD97;1107 116E 11BE;
+BD98;BD98;1107 116E 11BF;BD98;1107 116E 11BF;
+BD99;BD99;1107 116E 11C0;BD99;1107 116E 11C0;
+BD9A;BD9A;1107 116E 11C1;BD9A;1107 116E 11C1;
+BD9B;BD9B;1107 116E 11C2;BD9B;1107 116E 11C2;
+BD9C;BD9C;1107 116F;BD9C;1107 116F;
+BD9D;BD9D;1107 116F 11A8;BD9D;1107 116F 11A8;
+BD9E;BD9E;1107 116F 11A9;BD9E;1107 116F 11A9;
+BD9F;BD9F;1107 116F 11AA;BD9F;1107 116F 11AA;
+BDA0;BDA0;1107 116F 11AB;BDA0;1107 116F 11AB;
+BDA1;BDA1;1107 116F 11AC;BDA1;1107 116F 11AC;
+BDA2;BDA2;1107 116F 11AD;BDA2;1107 116F 11AD;
+BDA3;BDA3;1107 116F 11AE;BDA3;1107 116F 11AE;
+BDA4;BDA4;1107 116F 11AF;BDA4;1107 116F 11AF;
+BDA5;BDA5;1107 116F 11B0;BDA5;1107 116F 11B0;
+BDA6;BDA6;1107 116F 11B1;BDA6;1107 116F 11B1;
+BDA7;BDA7;1107 116F 11B2;BDA7;1107 116F 11B2;
+BDA8;BDA8;1107 116F 11B3;BDA8;1107 116F 11B3;
+BDA9;BDA9;1107 116F 11B4;BDA9;1107 116F 11B4;
+BDAA;BDAA;1107 116F 11B5;BDAA;1107 116F 11B5;
+BDAB;BDAB;1107 116F 11B6;BDAB;1107 116F 11B6;
+BDAC;BDAC;1107 116F 11B7;BDAC;1107 116F 11B7;
+BDAD;BDAD;1107 116F 11B8;BDAD;1107 116F 11B8;
+BDAE;BDAE;1107 116F 11B9;BDAE;1107 116F 11B9;
+BDAF;BDAF;1107 116F 11BA;BDAF;1107 116F 11BA;
+BDB0;BDB0;1107 116F 11BB;BDB0;1107 116F 11BB;
+BDB1;BDB1;1107 116F 11BC;BDB1;1107 116F 11BC;
+BDB2;BDB2;1107 116F 11BD;BDB2;1107 116F 11BD;
+BDB3;BDB3;1107 116F 11BE;BDB3;1107 116F 11BE;
+BDB4;BDB4;1107 116F 11BF;BDB4;1107 116F 11BF;
+BDB5;BDB5;1107 116F 11C0;BDB5;1107 116F 11C0;
+BDB6;BDB6;1107 116F 11C1;BDB6;1107 116F 11C1;
+BDB7;BDB7;1107 116F 11C2;BDB7;1107 116F 11C2;
+BDB8;BDB8;1107 1170;BDB8;1107 1170;
+BDB9;BDB9;1107 1170 11A8;BDB9;1107 1170 11A8;
+BDBA;BDBA;1107 1170 11A9;BDBA;1107 1170 11A9;
+BDBB;BDBB;1107 1170 11AA;BDBB;1107 1170 11AA;
+BDBC;BDBC;1107 1170 11AB;BDBC;1107 1170 11AB;
+BDBD;BDBD;1107 1170 11AC;BDBD;1107 1170 11AC;
+BDBE;BDBE;1107 1170 11AD;BDBE;1107 1170 11AD;
+BDBF;BDBF;1107 1170 11AE;BDBF;1107 1170 11AE;
+BDC0;BDC0;1107 1170 11AF;BDC0;1107 1170 11AF;
+BDC1;BDC1;1107 1170 11B0;BDC1;1107 1170 11B0;
+BDC2;BDC2;1107 1170 11B1;BDC2;1107 1170 11B1;
+BDC3;BDC3;1107 1170 11B2;BDC3;1107 1170 11B2;
+BDC4;BDC4;1107 1170 11B3;BDC4;1107 1170 11B3;
+BDC5;BDC5;1107 1170 11B4;BDC5;1107 1170 11B4;
+BDC6;BDC6;1107 1170 11B5;BDC6;1107 1170 11B5;
+BDC7;BDC7;1107 1170 11B6;BDC7;1107 1170 11B6;
+BDC8;BDC8;1107 1170 11B7;BDC8;1107 1170 11B7;
+BDC9;BDC9;1107 1170 11B8;BDC9;1107 1170 11B8;
+BDCA;BDCA;1107 1170 11B9;BDCA;1107 1170 11B9;
+BDCB;BDCB;1107 1170 11BA;BDCB;1107 1170 11BA;
+BDCC;BDCC;1107 1170 11BB;BDCC;1107 1170 11BB;
+BDCD;BDCD;1107 1170 11BC;BDCD;1107 1170 11BC;
+BDCE;BDCE;1107 1170 11BD;BDCE;1107 1170 11BD;
+BDCF;BDCF;1107 1170 11BE;BDCF;1107 1170 11BE;
+BDD0;BDD0;1107 1170 11BF;BDD0;1107 1170 11BF;
+BDD1;BDD1;1107 1170 11C0;BDD1;1107 1170 11C0;
+BDD2;BDD2;1107 1170 11C1;BDD2;1107 1170 11C1;
+BDD3;BDD3;1107 1170 11C2;BDD3;1107 1170 11C2;
+BDD4;BDD4;1107 1171;BDD4;1107 1171;
+BDD5;BDD5;1107 1171 11A8;BDD5;1107 1171 11A8;
+BDD6;BDD6;1107 1171 11A9;BDD6;1107 1171 11A9;
+BDD7;BDD7;1107 1171 11AA;BDD7;1107 1171 11AA;
+BDD8;BDD8;1107 1171 11AB;BDD8;1107 1171 11AB;
+BDD9;BDD9;1107 1171 11AC;BDD9;1107 1171 11AC;
+BDDA;BDDA;1107 1171 11AD;BDDA;1107 1171 11AD;
+BDDB;BDDB;1107 1171 11AE;BDDB;1107 1171 11AE;
+BDDC;BDDC;1107 1171 11AF;BDDC;1107 1171 11AF;
+BDDD;BDDD;1107 1171 11B0;BDDD;1107 1171 11B0;
+BDDE;BDDE;1107 1171 11B1;BDDE;1107 1171 11B1;
+BDDF;BDDF;1107 1171 11B2;BDDF;1107 1171 11B2;
+BDE0;BDE0;1107 1171 11B3;BDE0;1107 1171 11B3;
+BDE1;BDE1;1107 1171 11B4;BDE1;1107 1171 11B4;
+BDE2;BDE2;1107 1171 11B5;BDE2;1107 1171 11B5;
+BDE3;BDE3;1107 1171 11B6;BDE3;1107 1171 11B6;
+BDE4;BDE4;1107 1171 11B7;BDE4;1107 1171 11B7;
+BDE5;BDE5;1107 1171 11B8;BDE5;1107 1171 11B8;
+BDE6;BDE6;1107 1171 11B9;BDE6;1107 1171 11B9;
+BDE7;BDE7;1107 1171 11BA;BDE7;1107 1171 11BA;
+BDE8;BDE8;1107 1171 11BB;BDE8;1107 1171 11BB;
+BDE9;BDE9;1107 1171 11BC;BDE9;1107 1171 11BC;
+BDEA;BDEA;1107 1171 11BD;BDEA;1107 1171 11BD;
+BDEB;BDEB;1107 1171 11BE;BDEB;1107 1171 11BE;
+BDEC;BDEC;1107 1171 11BF;BDEC;1107 1171 11BF;
+BDED;BDED;1107 1171 11C0;BDED;1107 1171 11C0;
+BDEE;BDEE;1107 1171 11C1;BDEE;1107 1171 11C1;
+BDEF;BDEF;1107 1171 11C2;BDEF;1107 1171 11C2;
+BDF0;BDF0;1107 1172;BDF0;1107 1172;
+BDF1;BDF1;1107 1172 11A8;BDF1;1107 1172 11A8;
+BDF2;BDF2;1107 1172 11A9;BDF2;1107 1172 11A9;
+BDF3;BDF3;1107 1172 11AA;BDF3;1107 1172 11AA;
+BDF4;BDF4;1107 1172 11AB;BDF4;1107 1172 11AB;
+BDF5;BDF5;1107 1172 11AC;BDF5;1107 1172 11AC;
+BDF6;BDF6;1107 1172 11AD;BDF6;1107 1172 11AD;
+BDF7;BDF7;1107 1172 11AE;BDF7;1107 1172 11AE;
+BDF8;BDF8;1107 1172 11AF;BDF8;1107 1172 11AF;
+BDF9;BDF9;1107 1172 11B0;BDF9;1107 1172 11B0;
+BDFA;BDFA;1107 1172 11B1;BDFA;1107 1172 11B1;
+BDFB;BDFB;1107 1172 11B2;BDFB;1107 1172 11B2;
+BDFC;BDFC;1107 1172 11B3;BDFC;1107 1172 11B3;
+BDFD;BDFD;1107 1172 11B4;BDFD;1107 1172 11B4;
+BDFE;BDFE;1107 1172 11B5;BDFE;1107 1172 11B5;
+BDFF;BDFF;1107 1172 11B6;BDFF;1107 1172 11B6;
+BE00;BE00;1107 1172 11B7;BE00;1107 1172 11B7;
+BE01;BE01;1107 1172 11B8;BE01;1107 1172 11B8;
+BE02;BE02;1107 1172 11B9;BE02;1107 1172 11B9;
+BE03;BE03;1107 1172 11BA;BE03;1107 1172 11BA;
+BE04;BE04;1107 1172 11BB;BE04;1107 1172 11BB;
+BE05;BE05;1107 1172 11BC;BE05;1107 1172 11BC;
+BE06;BE06;1107 1172 11BD;BE06;1107 1172 11BD;
+BE07;BE07;1107 1172 11BE;BE07;1107 1172 11BE;
+BE08;BE08;1107 1172 11BF;BE08;1107 1172 11BF;
+BE09;BE09;1107 1172 11C0;BE09;1107 1172 11C0;
+BE0A;BE0A;1107 1172 11C1;BE0A;1107 1172 11C1;
+BE0B;BE0B;1107 1172 11C2;BE0B;1107 1172 11C2;
+BE0C;BE0C;1107 1173;BE0C;1107 1173;
+BE0D;BE0D;1107 1173 11A8;BE0D;1107 1173 11A8;
+BE0E;BE0E;1107 1173 11A9;BE0E;1107 1173 11A9;
+BE0F;BE0F;1107 1173 11AA;BE0F;1107 1173 11AA;
+BE10;BE10;1107 1173 11AB;BE10;1107 1173 11AB;
+BE11;BE11;1107 1173 11AC;BE11;1107 1173 11AC;
+BE12;BE12;1107 1173 11AD;BE12;1107 1173 11AD;
+BE13;BE13;1107 1173 11AE;BE13;1107 1173 11AE;
+BE14;BE14;1107 1173 11AF;BE14;1107 1173 11AF;
+BE15;BE15;1107 1173 11B0;BE15;1107 1173 11B0;
+BE16;BE16;1107 1173 11B1;BE16;1107 1173 11B1;
+BE17;BE17;1107 1173 11B2;BE17;1107 1173 11B2;
+BE18;BE18;1107 1173 11B3;BE18;1107 1173 11B3;
+BE19;BE19;1107 1173 11B4;BE19;1107 1173 11B4;
+BE1A;BE1A;1107 1173 11B5;BE1A;1107 1173 11B5;
+BE1B;BE1B;1107 1173 11B6;BE1B;1107 1173 11B6;
+BE1C;BE1C;1107 1173 11B7;BE1C;1107 1173 11B7;
+BE1D;BE1D;1107 1173 11B8;BE1D;1107 1173 11B8;
+BE1E;BE1E;1107 1173 11B9;BE1E;1107 1173 11B9;
+BE1F;BE1F;1107 1173 11BA;BE1F;1107 1173 11BA;
+BE20;BE20;1107 1173 11BB;BE20;1107 1173 11BB;
+BE21;BE21;1107 1173 11BC;BE21;1107 1173 11BC;
+BE22;BE22;1107 1173 11BD;BE22;1107 1173 11BD;
+BE23;BE23;1107 1173 11BE;BE23;1107 1173 11BE;
+BE24;BE24;1107 1173 11BF;BE24;1107 1173 11BF;
+BE25;BE25;1107 1173 11C0;BE25;1107 1173 11C0;
+BE26;BE26;1107 1173 11C1;BE26;1107 1173 11C1;
+BE27;BE27;1107 1173 11C2;BE27;1107 1173 11C2;
+BE28;BE28;1107 1174;BE28;1107 1174;
+BE29;BE29;1107 1174 11A8;BE29;1107 1174 11A8;
+BE2A;BE2A;1107 1174 11A9;BE2A;1107 1174 11A9;
+BE2B;BE2B;1107 1174 11AA;BE2B;1107 1174 11AA;
+BE2C;BE2C;1107 1174 11AB;BE2C;1107 1174 11AB;
+BE2D;BE2D;1107 1174 11AC;BE2D;1107 1174 11AC;
+BE2E;BE2E;1107 1174 11AD;BE2E;1107 1174 11AD;
+BE2F;BE2F;1107 1174 11AE;BE2F;1107 1174 11AE;
+BE30;BE30;1107 1174 11AF;BE30;1107 1174 11AF;
+BE31;BE31;1107 1174 11B0;BE31;1107 1174 11B0;
+BE32;BE32;1107 1174 11B1;BE32;1107 1174 11B1;
+BE33;BE33;1107 1174 11B2;BE33;1107 1174 11B2;
+BE34;BE34;1107 1174 11B3;BE34;1107 1174 11B3;
+BE35;BE35;1107 1174 11B4;BE35;1107 1174 11B4;
+BE36;BE36;1107 1174 11B5;BE36;1107 1174 11B5;
+BE37;BE37;1107 1174 11B6;BE37;1107 1174 11B6;
+BE38;BE38;1107 1174 11B7;BE38;1107 1174 11B7;
+BE39;BE39;1107 1174 11B8;BE39;1107 1174 11B8;
+BE3A;BE3A;1107 1174 11B9;BE3A;1107 1174 11B9;
+BE3B;BE3B;1107 1174 11BA;BE3B;1107 1174 11BA;
+BE3C;BE3C;1107 1174 11BB;BE3C;1107 1174 11BB;
+BE3D;BE3D;1107 1174 11BC;BE3D;1107 1174 11BC;
+BE3E;BE3E;1107 1174 11BD;BE3E;1107 1174 11BD;
+BE3F;BE3F;1107 1174 11BE;BE3F;1107 1174 11BE;
+BE40;BE40;1107 1174 11BF;BE40;1107 1174 11BF;
+BE41;BE41;1107 1174 11C0;BE41;1107 1174 11C0;
+BE42;BE42;1107 1174 11C1;BE42;1107 1174 11C1;
+BE43;BE43;1107 1174 11C2;BE43;1107 1174 11C2;
+BE44;BE44;1107 1175;BE44;1107 1175;
+BE45;BE45;1107 1175 11A8;BE45;1107 1175 11A8;
+BE46;BE46;1107 1175 11A9;BE46;1107 1175 11A9;
+BE47;BE47;1107 1175 11AA;BE47;1107 1175 11AA;
+BE48;BE48;1107 1175 11AB;BE48;1107 1175 11AB;
+BE49;BE49;1107 1175 11AC;BE49;1107 1175 11AC;
+BE4A;BE4A;1107 1175 11AD;BE4A;1107 1175 11AD;
+BE4B;BE4B;1107 1175 11AE;BE4B;1107 1175 11AE;
+BE4C;BE4C;1107 1175 11AF;BE4C;1107 1175 11AF;
+BE4D;BE4D;1107 1175 11B0;BE4D;1107 1175 11B0;
+BE4E;BE4E;1107 1175 11B1;BE4E;1107 1175 11B1;
+BE4F;BE4F;1107 1175 11B2;BE4F;1107 1175 11B2;
+BE50;BE50;1107 1175 11B3;BE50;1107 1175 11B3;
+BE51;BE51;1107 1175 11B4;BE51;1107 1175 11B4;
+BE52;BE52;1107 1175 11B5;BE52;1107 1175 11B5;
+BE53;BE53;1107 1175 11B6;BE53;1107 1175 11B6;
+BE54;BE54;1107 1175 11B7;BE54;1107 1175 11B7;
+BE55;BE55;1107 1175 11B8;BE55;1107 1175 11B8;
+BE56;BE56;1107 1175 11B9;BE56;1107 1175 11B9;
+BE57;BE57;1107 1175 11BA;BE57;1107 1175 11BA;
+BE58;BE58;1107 1175 11BB;BE58;1107 1175 11BB;
+BE59;BE59;1107 1175 11BC;BE59;1107 1175 11BC;
+BE5A;BE5A;1107 1175 11BD;BE5A;1107 1175 11BD;
+BE5B;BE5B;1107 1175 11BE;BE5B;1107 1175 11BE;
+BE5C;BE5C;1107 1175 11BF;BE5C;1107 1175 11BF;
+BE5D;BE5D;1107 1175 11C0;BE5D;1107 1175 11C0;
+BE5E;BE5E;1107 1175 11C1;BE5E;1107 1175 11C1;
+BE5F;BE5F;1107 1175 11C2;BE5F;1107 1175 11C2;
+BE60;BE60;1108 1161;BE60;1108 1161;
+BE61;BE61;1108 1161 11A8;BE61;1108 1161 11A8;
+BE62;BE62;1108 1161 11A9;BE62;1108 1161 11A9;
+BE63;BE63;1108 1161 11AA;BE63;1108 1161 11AA;
+BE64;BE64;1108 1161 11AB;BE64;1108 1161 11AB;
+BE65;BE65;1108 1161 11AC;BE65;1108 1161 11AC;
+BE66;BE66;1108 1161 11AD;BE66;1108 1161 11AD;
+BE67;BE67;1108 1161 11AE;BE67;1108 1161 11AE;
+BE68;BE68;1108 1161 11AF;BE68;1108 1161 11AF;
+BE69;BE69;1108 1161 11B0;BE69;1108 1161 11B0;
+BE6A;BE6A;1108 1161 11B1;BE6A;1108 1161 11B1;
+BE6B;BE6B;1108 1161 11B2;BE6B;1108 1161 11B2;
+BE6C;BE6C;1108 1161 11B3;BE6C;1108 1161 11B3;
+BE6D;BE6D;1108 1161 11B4;BE6D;1108 1161 11B4;
+BE6E;BE6E;1108 1161 11B5;BE6E;1108 1161 11B5;
+BE6F;BE6F;1108 1161 11B6;BE6F;1108 1161 11B6;
+BE70;BE70;1108 1161 11B7;BE70;1108 1161 11B7;
+BE71;BE71;1108 1161 11B8;BE71;1108 1161 11B8;
+BE72;BE72;1108 1161 11B9;BE72;1108 1161 11B9;
+BE73;BE73;1108 1161 11BA;BE73;1108 1161 11BA;
+BE74;BE74;1108 1161 11BB;BE74;1108 1161 11BB;
+BE75;BE75;1108 1161 11BC;BE75;1108 1161 11BC;
+BE76;BE76;1108 1161 11BD;BE76;1108 1161 11BD;
+BE77;BE77;1108 1161 11BE;BE77;1108 1161 11BE;
+BE78;BE78;1108 1161 11BF;BE78;1108 1161 11BF;
+BE79;BE79;1108 1161 11C0;BE79;1108 1161 11C0;
+BE7A;BE7A;1108 1161 11C1;BE7A;1108 1161 11C1;
+BE7B;BE7B;1108 1161 11C2;BE7B;1108 1161 11C2;
+BE7C;BE7C;1108 1162;BE7C;1108 1162;
+BE7D;BE7D;1108 1162 11A8;BE7D;1108 1162 11A8;
+BE7E;BE7E;1108 1162 11A9;BE7E;1108 1162 11A9;
+BE7F;BE7F;1108 1162 11AA;BE7F;1108 1162 11AA;
+BE80;BE80;1108 1162 11AB;BE80;1108 1162 11AB;
+BE81;BE81;1108 1162 11AC;BE81;1108 1162 11AC;
+BE82;BE82;1108 1162 11AD;BE82;1108 1162 11AD;
+BE83;BE83;1108 1162 11AE;BE83;1108 1162 11AE;
+BE84;BE84;1108 1162 11AF;BE84;1108 1162 11AF;
+BE85;BE85;1108 1162 11B0;BE85;1108 1162 11B0;
+BE86;BE86;1108 1162 11B1;BE86;1108 1162 11B1;
+BE87;BE87;1108 1162 11B2;BE87;1108 1162 11B2;
+BE88;BE88;1108 1162 11B3;BE88;1108 1162 11B3;
+BE89;BE89;1108 1162 11B4;BE89;1108 1162 11B4;
+BE8A;BE8A;1108 1162 11B5;BE8A;1108 1162 11B5;
+BE8B;BE8B;1108 1162 11B6;BE8B;1108 1162 11B6;
+BE8C;BE8C;1108 1162 11B7;BE8C;1108 1162 11B7;
+BE8D;BE8D;1108 1162 11B8;BE8D;1108 1162 11B8;
+BE8E;BE8E;1108 1162 11B9;BE8E;1108 1162 11B9;
+BE8F;BE8F;1108 1162 11BA;BE8F;1108 1162 11BA;
+BE90;BE90;1108 1162 11BB;BE90;1108 1162 11BB;
+BE91;BE91;1108 1162 11BC;BE91;1108 1162 11BC;
+BE92;BE92;1108 1162 11BD;BE92;1108 1162 11BD;
+BE93;BE93;1108 1162 11BE;BE93;1108 1162 11BE;
+BE94;BE94;1108 1162 11BF;BE94;1108 1162 11BF;
+BE95;BE95;1108 1162 11C0;BE95;1108 1162 11C0;
+BE96;BE96;1108 1162 11C1;BE96;1108 1162 11C1;
+BE97;BE97;1108 1162 11C2;BE97;1108 1162 11C2;
+BE98;BE98;1108 1163;BE98;1108 1163;
+BE99;BE99;1108 1163 11A8;BE99;1108 1163 11A8;
+BE9A;BE9A;1108 1163 11A9;BE9A;1108 1163 11A9;
+BE9B;BE9B;1108 1163 11AA;BE9B;1108 1163 11AA;
+BE9C;BE9C;1108 1163 11AB;BE9C;1108 1163 11AB;
+BE9D;BE9D;1108 1163 11AC;BE9D;1108 1163 11AC;
+BE9E;BE9E;1108 1163 11AD;BE9E;1108 1163 11AD;
+BE9F;BE9F;1108 1163 11AE;BE9F;1108 1163 11AE;
+BEA0;BEA0;1108 1163 11AF;BEA0;1108 1163 11AF;
+BEA1;BEA1;1108 1163 11B0;BEA1;1108 1163 11B0;
+BEA2;BEA2;1108 1163 11B1;BEA2;1108 1163 11B1;
+BEA3;BEA3;1108 1163 11B2;BEA3;1108 1163 11B2;
+BEA4;BEA4;1108 1163 11B3;BEA4;1108 1163 11B3;
+BEA5;BEA5;1108 1163 11B4;BEA5;1108 1163 11B4;
+BEA6;BEA6;1108 1163 11B5;BEA6;1108 1163 11B5;
+BEA7;BEA7;1108 1163 11B6;BEA7;1108 1163 11B6;
+BEA8;BEA8;1108 1163 11B7;BEA8;1108 1163 11B7;
+BEA9;BEA9;1108 1163 11B8;BEA9;1108 1163 11B8;
+BEAA;BEAA;1108 1163 11B9;BEAA;1108 1163 11B9;
+BEAB;BEAB;1108 1163 11BA;BEAB;1108 1163 11BA;
+BEAC;BEAC;1108 1163 11BB;BEAC;1108 1163 11BB;
+BEAD;BEAD;1108 1163 11BC;BEAD;1108 1163 11BC;
+BEAE;BEAE;1108 1163 11BD;BEAE;1108 1163 11BD;
+BEAF;BEAF;1108 1163 11BE;BEAF;1108 1163 11BE;
+BEB0;BEB0;1108 1163 11BF;BEB0;1108 1163 11BF;
+BEB1;BEB1;1108 1163 11C0;BEB1;1108 1163 11C0;
+BEB2;BEB2;1108 1163 11C1;BEB2;1108 1163 11C1;
+BEB3;BEB3;1108 1163 11C2;BEB3;1108 1163 11C2;
+BEB4;BEB4;1108 1164;BEB4;1108 1164;
+BEB5;BEB5;1108 1164 11A8;BEB5;1108 1164 11A8;
+BEB6;BEB6;1108 1164 11A9;BEB6;1108 1164 11A9;
+BEB7;BEB7;1108 1164 11AA;BEB7;1108 1164 11AA;
+BEB8;BEB8;1108 1164 11AB;BEB8;1108 1164 11AB;
+BEB9;BEB9;1108 1164 11AC;BEB9;1108 1164 11AC;
+BEBA;BEBA;1108 1164 11AD;BEBA;1108 1164 11AD;
+BEBB;BEBB;1108 1164 11AE;BEBB;1108 1164 11AE;
+BEBC;BEBC;1108 1164 11AF;BEBC;1108 1164 11AF;
+BEBD;BEBD;1108 1164 11B0;BEBD;1108 1164 11B0;
+BEBE;BEBE;1108 1164 11B1;BEBE;1108 1164 11B1;
+BEBF;BEBF;1108 1164 11B2;BEBF;1108 1164 11B2;
+BEC0;BEC0;1108 1164 11B3;BEC0;1108 1164 11B3;
+BEC1;BEC1;1108 1164 11B4;BEC1;1108 1164 11B4;
+BEC2;BEC2;1108 1164 11B5;BEC2;1108 1164 11B5;
+BEC3;BEC3;1108 1164 11B6;BEC3;1108 1164 11B6;
+BEC4;BEC4;1108 1164 11B7;BEC4;1108 1164 11B7;
+BEC5;BEC5;1108 1164 11B8;BEC5;1108 1164 11B8;
+BEC6;BEC6;1108 1164 11B9;BEC6;1108 1164 11B9;
+BEC7;BEC7;1108 1164 11BA;BEC7;1108 1164 11BA;
+BEC8;BEC8;1108 1164 11BB;BEC8;1108 1164 11BB;
+BEC9;BEC9;1108 1164 11BC;BEC9;1108 1164 11BC;
+BECA;BECA;1108 1164 11BD;BECA;1108 1164 11BD;
+BECB;BECB;1108 1164 11BE;BECB;1108 1164 11BE;
+BECC;BECC;1108 1164 11BF;BECC;1108 1164 11BF;
+BECD;BECD;1108 1164 11C0;BECD;1108 1164 11C0;
+BECE;BECE;1108 1164 11C1;BECE;1108 1164 11C1;
+BECF;BECF;1108 1164 11C2;BECF;1108 1164 11C2;
+BED0;BED0;1108 1165;BED0;1108 1165;
+BED1;BED1;1108 1165 11A8;BED1;1108 1165 11A8;
+BED2;BED2;1108 1165 11A9;BED2;1108 1165 11A9;
+BED3;BED3;1108 1165 11AA;BED3;1108 1165 11AA;
+BED4;BED4;1108 1165 11AB;BED4;1108 1165 11AB;
+BED5;BED5;1108 1165 11AC;BED5;1108 1165 11AC;
+BED6;BED6;1108 1165 11AD;BED6;1108 1165 11AD;
+BED7;BED7;1108 1165 11AE;BED7;1108 1165 11AE;
+BED8;BED8;1108 1165 11AF;BED8;1108 1165 11AF;
+BED9;BED9;1108 1165 11B0;BED9;1108 1165 11B0;
+BEDA;BEDA;1108 1165 11B1;BEDA;1108 1165 11B1;
+BEDB;BEDB;1108 1165 11B2;BEDB;1108 1165 11B2;
+BEDC;BEDC;1108 1165 11B3;BEDC;1108 1165 11B3;
+BEDD;BEDD;1108 1165 11B4;BEDD;1108 1165 11B4;
+BEDE;BEDE;1108 1165 11B5;BEDE;1108 1165 11B5;
+BEDF;BEDF;1108 1165 11B6;BEDF;1108 1165 11B6;
+BEE0;BEE0;1108 1165 11B7;BEE0;1108 1165 11B7;
+BEE1;BEE1;1108 1165 11B8;BEE1;1108 1165 11B8;
+BEE2;BEE2;1108 1165 11B9;BEE2;1108 1165 11B9;
+BEE3;BEE3;1108 1165 11BA;BEE3;1108 1165 11BA;
+BEE4;BEE4;1108 1165 11BB;BEE4;1108 1165 11BB;
+BEE5;BEE5;1108 1165 11BC;BEE5;1108 1165 11BC;
+BEE6;BEE6;1108 1165 11BD;BEE6;1108 1165 11BD;
+BEE7;BEE7;1108 1165 11BE;BEE7;1108 1165 11BE;
+BEE8;BEE8;1108 1165 11BF;BEE8;1108 1165 11BF;
+BEE9;BEE9;1108 1165 11C0;BEE9;1108 1165 11C0;
+BEEA;BEEA;1108 1165 11C1;BEEA;1108 1165 11C1;
+BEEB;BEEB;1108 1165 11C2;BEEB;1108 1165 11C2;
+BEEC;BEEC;1108 1166;BEEC;1108 1166;
+BEED;BEED;1108 1166 11A8;BEED;1108 1166 11A8;
+BEEE;BEEE;1108 1166 11A9;BEEE;1108 1166 11A9;
+BEEF;BEEF;1108 1166 11AA;BEEF;1108 1166 11AA;
+BEF0;BEF0;1108 1166 11AB;BEF0;1108 1166 11AB;
+BEF1;BEF1;1108 1166 11AC;BEF1;1108 1166 11AC;
+BEF2;BEF2;1108 1166 11AD;BEF2;1108 1166 11AD;
+BEF3;BEF3;1108 1166 11AE;BEF3;1108 1166 11AE;
+BEF4;BEF4;1108 1166 11AF;BEF4;1108 1166 11AF;
+BEF5;BEF5;1108 1166 11B0;BEF5;1108 1166 11B0;
+BEF6;BEF6;1108 1166 11B1;BEF6;1108 1166 11B1;
+BEF7;BEF7;1108 1166 11B2;BEF7;1108 1166 11B2;
+BEF8;BEF8;1108 1166 11B3;BEF8;1108 1166 11B3;
+BEF9;BEF9;1108 1166 11B4;BEF9;1108 1166 11B4;
+BEFA;BEFA;1108 1166 11B5;BEFA;1108 1166 11B5;
+BEFB;BEFB;1108 1166 11B6;BEFB;1108 1166 11B6;
+BEFC;BEFC;1108 1166 11B7;BEFC;1108 1166 11B7;
+BEFD;BEFD;1108 1166 11B8;BEFD;1108 1166 11B8;
+BEFE;BEFE;1108 1166 11B9;BEFE;1108 1166 11B9;
+BEFF;BEFF;1108 1166 11BA;BEFF;1108 1166 11BA;
+BF00;BF00;1108 1166 11BB;BF00;1108 1166 11BB;
+BF01;BF01;1108 1166 11BC;BF01;1108 1166 11BC;
+BF02;BF02;1108 1166 11BD;BF02;1108 1166 11BD;
+BF03;BF03;1108 1166 11BE;BF03;1108 1166 11BE;
+BF04;BF04;1108 1166 11BF;BF04;1108 1166 11BF;
+BF05;BF05;1108 1166 11C0;BF05;1108 1166 11C0;
+BF06;BF06;1108 1166 11C1;BF06;1108 1166 11C1;
+BF07;BF07;1108 1166 11C2;BF07;1108 1166 11C2;
+BF08;BF08;1108 1167;BF08;1108 1167;
+BF09;BF09;1108 1167 11A8;BF09;1108 1167 11A8;
+BF0A;BF0A;1108 1167 11A9;BF0A;1108 1167 11A9;
+BF0B;BF0B;1108 1167 11AA;BF0B;1108 1167 11AA;
+BF0C;BF0C;1108 1167 11AB;BF0C;1108 1167 11AB;
+BF0D;BF0D;1108 1167 11AC;BF0D;1108 1167 11AC;
+BF0E;BF0E;1108 1167 11AD;BF0E;1108 1167 11AD;
+BF0F;BF0F;1108 1167 11AE;BF0F;1108 1167 11AE;
+BF10;BF10;1108 1167 11AF;BF10;1108 1167 11AF;
+BF11;BF11;1108 1167 11B0;BF11;1108 1167 11B0;
+BF12;BF12;1108 1167 11B1;BF12;1108 1167 11B1;
+BF13;BF13;1108 1167 11B2;BF13;1108 1167 11B2;
+BF14;BF14;1108 1167 11B3;BF14;1108 1167 11B3;
+BF15;BF15;1108 1167 11B4;BF15;1108 1167 11B4;
+BF16;BF16;1108 1167 11B5;BF16;1108 1167 11B5;
+BF17;BF17;1108 1167 11B6;BF17;1108 1167 11B6;
+BF18;BF18;1108 1167 11B7;BF18;1108 1167 11B7;
+BF19;BF19;1108 1167 11B8;BF19;1108 1167 11B8;
+BF1A;BF1A;1108 1167 11B9;BF1A;1108 1167 11B9;
+BF1B;BF1B;1108 1167 11BA;BF1B;1108 1167 11BA;
+BF1C;BF1C;1108 1167 11BB;BF1C;1108 1167 11BB;
+BF1D;BF1D;1108 1167 11BC;BF1D;1108 1167 11BC;
+BF1E;BF1E;1108 1167 11BD;BF1E;1108 1167 11BD;
+BF1F;BF1F;1108 1167 11BE;BF1F;1108 1167 11BE;
+BF20;BF20;1108 1167 11BF;BF20;1108 1167 11BF;
+BF21;BF21;1108 1167 11C0;BF21;1108 1167 11C0;
+BF22;BF22;1108 1167 11C1;BF22;1108 1167 11C1;
+BF23;BF23;1108 1167 11C2;BF23;1108 1167 11C2;
+BF24;BF24;1108 1168;BF24;1108 1168;
+BF25;BF25;1108 1168 11A8;BF25;1108 1168 11A8;
+BF26;BF26;1108 1168 11A9;BF26;1108 1168 11A9;
+BF27;BF27;1108 1168 11AA;BF27;1108 1168 11AA;
+BF28;BF28;1108 1168 11AB;BF28;1108 1168 11AB;
+BF29;BF29;1108 1168 11AC;BF29;1108 1168 11AC;
+BF2A;BF2A;1108 1168 11AD;BF2A;1108 1168 11AD;
+BF2B;BF2B;1108 1168 11AE;BF2B;1108 1168 11AE;
+BF2C;BF2C;1108 1168 11AF;BF2C;1108 1168 11AF;
+BF2D;BF2D;1108 1168 11B0;BF2D;1108 1168 11B0;
+BF2E;BF2E;1108 1168 11B1;BF2E;1108 1168 11B1;
+BF2F;BF2F;1108 1168 11B2;BF2F;1108 1168 11B2;
+BF30;BF30;1108 1168 11B3;BF30;1108 1168 11B3;
+BF31;BF31;1108 1168 11B4;BF31;1108 1168 11B4;
+BF32;BF32;1108 1168 11B5;BF32;1108 1168 11B5;
+BF33;BF33;1108 1168 11B6;BF33;1108 1168 11B6;
+BF34;BF34;1108 1168 11B7;BF34;1108 1168 11B7;
+BF35;BF35;1108 1168 11B8;BF35;1108 1168 11B8;
+BF36;BF36;1108 1168 11B9;BF36;1108 1168 11B9;
+BF37;BF37;1108 1168 11BA;BF37;1108 1168 11BA;
+BF38;BF38;1108 1168 11BB;BF38;1108 1168 11BB;
+BF39;BF39;1108 1168 11BC;BF39;1108 1168 11BC;
+BF3A;BF3A;1108 1168 11BD;BF3A;1108 1168 11BD;
+BF3B;BF3B;1108 1168 11BE;BF3B;1108 1168 11BE;
+BF3C;BF3C;1108 1168 11BF;BF3C;1108 1168 11BF;
+BF3D;BF3D;1108 1168 11C0;BF3D;1108 1168 11C0;
+BF3E;BF3E;1108 1168 11C1;BF3E;1108 1168 11C1;
+BF3F;BF3F;1108 1168 11C2;BF3F;1108 1168 11C2;
+BF40;BF40;1108 1169;BF40;1108 1169;
+BF41;BF41;1108 1169 11A8;BF41;1108 1169 11A8;
+BF42;BF42;1108 1169 11A9;BF42;1108 1169 11A9;
+BF43;BF43;1108 1169 11AA;BF43;1108 1169 11AA;
+BF44;BF44;1108 1169 11AB;BF44;1108 1169 11AB;
+BF45;BF45;1108 1169 11AC;BF45;1108 1169 11AC;
+BF46;BF46;1108 1169 11AD;BF46;1108 1169 11AD;
+BF47;BF47;1108 1169 11AE;BF47;1108 1169 11AE;
+BF48;BF48;1108 1169 11AF;BF48;1108 1169 11AF;
+BF49;BF49;1108 1169 11B0;BF49;1108 1169 11B0;
+BF4A;BF4A;1108 1169 11B1;BF4A;1108 1169 11B1;
+BF4B;BF4B;1108 1169 11B2;BF4B;1108 1169 11B2;
+BF4C;BF4C;1108 1169 11B3;BF4C;1108 1169 11B3;
+BF4D;BF4D;1108 1169 11B4;BF4D;1108 1169 11B4;
+BF4E;BF4E;1108 1169 11B5;BF4E;1108 1169 11B5;
+BF4F;BF4F;1108 1169 11B6;BF4F;1108 1169 11B6;
+BF50;BF50;1108 1169 11B7;BF50;1108 1169 11B7;
+BF51;BF51;1108 1169 11B8;BF51;1108 1169 11B8;
+BF52;BF52;1108 1169 11B9;BF52;1108 1169 11B9;
+BF53;BF53;1108 1169 11BA;BF53;1108 1169 11BA;
+BF54;BF54;1108 1169 11BB;BF54;1108 1169 11BB;
+BF55;BF55;1108 1169 11BC;BF55;1108 1169 11BC;
+BF56;BF56;1108 1169 11BD;BF56;1108 1169 11BD;
+BF57;BF57;1108 1169 11BE;BF57;1108 1169 11BE;
+BF58;BF58;1108 1169 11BF;BF58;1108 1169 11BF;
+BF59;BF59;1108 1169 11C0;BF59;1108 1169 11C0;
+BF5A;BF5A;1108 1169 11C1;BF5A;1108 1169 11C1;
+BF5B;BF5B;1108 1169 11C2;BF5B;1108 1169 11C2;
+BF5C;BF5C;1108 116A;BF5C;1108 116A;
+BF5D;BF5D;1108 116A 11A8;BF5D;1108 116A 11A8;
+BF5E;BF5E;1108 116A 11A9;BF5E;1108 116A 11A9;
+BF5F;BF5F;1108 116A 11AA;BF5F;1108 116A 11AA;
+BF60;BF60;1108 116A 11AB;BF60;1108 116A 11AB;
+BF61;BF61;1108 116A 11AC;BF61;1108 116A 11AC;
+BF62;BF62;1108 116A 11AD;BF62;1108 116A 11AD;
+BF63;BF63;1108 116A 11AE;BF63;1108 116A 11AE;
+BF64;BF64;1108 116A 11AF;BF64;1108 116A 11AF;
+BF65;BF65;1108 116A 11B0;BF65;1108 116A 11B0;
+BF66;BF66;1108 116A 11B1;BF66;1108 116A 11B1;
+BF67;BF67;1108 116A 11B2;BF67;1108 116A 11B2;
+BF68;BF68;1108 116A 11B3;BF68;1108 116A 11B3;
+BF69;BF69;1108 116A 11B4;BF69;1108 116A 11B4;
+BF6A;BF6A;1108 116A 11B5;BF6A;1108 116A 11B5;
+BF6B;BF6B;1108 116A 11B6;BF6B;1108 116A 11B6;
+BF6C;BF6C;1108 116A 11B7;BF6C;1108 116A 11B7;
+BF6D;BF6D;1108 116A 11B8;BF6D;1108 116A 11B8;
+BF6E;BF6E;1108 116A 11B9;BF6E;1108 116A 11B9;
+BF6F;BF6F;1108 116A 11BA;BF6F;1108 116A 11BA;
+BF70;BF70;1108 116A 11BB;BF70;1108 116A 11BB;
+BF71;BF71;1108 116A 11BC;BF71;1108 116A 11BC;
+BF72;BF72;1108 116A 11BD;BF72;1108 116A 11BD;
+BF73;BF73;1108 116A 11BE;BF73;1108 116A 11BE;
+BF74;BF74;1108 116A 11BF;BF74;1108 116A 11BF;
+BF75;BF75;1108 116A 11C0;BF75;1108 116A 11C0;
+BF76;BF76;1108 116A 11C1;BF76;1108 116A 11C1;
+BF77;BF77;1108 116A 11C2;BF77;1108 116A 11C2;
+BF78;BF78;1108 116B;BF78;1108 116B;
+BF79;BF79;1108 116B 11A8;BF79;1108 116B 11A8;
+BF7A;BF7A;1108 116B 11A9;BF7A;1108 116B 11A9;
+BF7B;BF7B;1108 116B 11AA;BF7B;1108 116B 11AA;
+BF7C;BF7C;1108 116B 11AB;BF7C;1108 116B 11AB;
+BF7D;BF7D;1108 116B 11AC;BF7D;1108 116B 11AC;
+BF7E;BF7E;1108 116B 11AD;BF7E;1108 116B 11AD;
+BF7F;BF7F;1108 116B 11AE;BF7F;1108 116B 11AE;
+BF80;BF80;1108 116B 11AF;BF80;1108 116B 11AF;
+BF81;BF81;1108 116B 11B0;BF81;1108 116B 11B0;
+BF82;BF82;1108 116B 11B1;BF82;1108 116B 11B1;
+BF83;BF83;1108 116B 11B2;BF83;1108 116B 11B2;
+BF84;BF84;1108 116B 11B3;BF84;1108 116B 11B3;
+BF85;BF85;1108 116B 11B4;BF85;1108 116B 11B4;
+BF86;BF86;1108 116B 11B5;BF86;1108 116B 11B5;
+BF87;BF87;1108 116B 11B6;BF87;1108 116B 11B6;
+BF88;BF88;1108 116B 11B7;BF88;1108 116B 11B7;
+BF89;BF89;1108 116B 11B8;BF89;1108 116B 11B8;
+BF8A;BF8A;1108 116B 11B9;BF8A;1108 116B 11B9;
+BF8B;BF8B;1108 116B 11BA;BF8B;1108 116B 11BA;
+BF8C;BF8C;1108 116B 11BB;BF8C;1108 116B 11BB;
+BF8D;BF8D;1108 116B 11BC;BF8D;1108 116B 11BC;
+BF8E;BF8E;1108 116B 11BD;BF8E;1108 116B 11BD;
+BF8F;BF8F;1108 116B 11BE;BF8F;1108 116B 11BE;
+BF90;BF90;1108 116B 11BF;BF90;1108 116B 11BF;
+BF91;BF91;1108 116B 11C0;BF91;1108 116B 11C0;
+BF92;BF92;1108 116B 11C1;BF92;1108 116B 11C1;
+BF93;BF93;1108 116B 11C2;BF93;1108 116B 11C2;
+BF94;BF94;1108 116C;BF94;1108 116C;
+BF95;BF95;1108 116C 11A8;BF95;1108 116C 11A8;
+BF96;BF96;1108 116C 11A9;BF96;1108 116C 11A9;
+BF97;BF97;1108 116C 11AA;BF97;1108 116C 11AA;
+BF98;BF98;1108 116C 11AB;BF98;1108 116C 11AB;
+BF99;BF99;1108 116C 11AC;BF99;1108 116C 11AC;
+BF9A;BF9A;1108 116C 11AD;BF9A;1108 116C 11AD;
+BF9B;BF9B;1108 116C 11AE;BF9B;1108 116C 11AE;
+BF9C;BF9C;1108 116C 11AF;BF9C;1108 116C 11AF;
+BF9D;BF9D;1108 116C 11B0;BF9D;1108 116C 11B0;
+BF9E;BF9E;1108 116C 11B1;BF9E;1108 116C 11B1;
+BF9F;BF9F;1108 116C 11B2;BF9F;1108 116C 11B2;
+BFA0;BFA0;1108 116C 11B3;BFA0;1108 116C 11B3;
+BFA1;BFA1;1108 116C 11B4;BFA1;1108 116C 11B4;
+BFA2;BFA2;1108 116C 11B5;BFA2;1108 116C 11B5;
+BFA3;BFA3;1108 116C 11B6;BFA3;1108 116C 11B6;
+BFA4;BFA4;1108 116C 11B7;BFA4;1108 116C 11B7;
+BFA5;BFA5;1108 116C 11B8;BFA5;1108 116C 11B8;
+BFA6;BFA6;1108 116C 11B9;BFA6;1108 116C 11B9;
+BFA7;BFA7;1108 116C 11BA;BFA7;1108 116C 11BA;
+BFA8;BFA8;1108 116C 11BB;BFA8;1108 116C 11BB;
+BFA9;BFA9;1108 116C 11BC;BFA9;1108 116C 11BC;
+BFAA;BFAA;1108 116C 11BD;BFAA;1108 116C 11BD;
+BFAB;BFAB;1108 116C 11BE;BFAB;1108 116C 11BE;
+BFAC;BFAC;1108 116C 11BF;BFAC;1108 116C 11BF;
+BFAD;BFAD;1108 116C 11C0;BFAD;1108 116C 11C0;
+BFAE;BFAE;1108 116C 11C1;BFAE;1108 116C 11C1;
+BFAF;BFAF;1108 116C 11C2;BFAF;1108 116C 11C2;
+BFB0;BFB0;1108 116D;BFB0;1108 116D;
+BFB1;BFB1;1108 116D 11A8;BFB1;1108 116D 11A8;
+BFB2;BFB2;1108 116D 11A9;BFB2;1108 116D 11A9;
+BFB3;BFB3;1108 116D 11AA;BFB3;1108 116D 11AA;
+BFB4;BFB4;1108 116D 11AB;BFB4;1108 116D 11AB;
+BFB5;BFB5;1108 116D 11AC;BFB5;1108 116D 11AC;
+BFB6;BFB6;1108 116D 11AD;BFB6;1108 116D 11AD;
+BFB7;BFB7;1108 116D 11AE;BFB7;1108 116D 11AE;
+BFB8;BFB8;1108 116D 11AF;BFB8;1108 116D 11AF;
+BFB9;BFB9;1108 116D 11B0;BFB9;1108 116D 11B0;
+BFBA;BFBA;1108 116D 11B1;BFBA;1108 116D 11B1;
+BFBB;BFBB;1108 116D 11B2;BFBB;1108 116D 11B2;
+BFBC;BFBC;1108 116D 11B3;BFBC;1108 116D 11B3;
+BFBD;BFBD;1108 116D 11B4;BFBD;1108 116D 11B4;
+BFBE;BFBE;1108 116D 11B5;BFBE;1108 116D 11B5;
+BFBF;BFBF;1108 116D 11B6;BFBF;1108 116D 11B6;
+BFC0;BFC0;1108 116D 11B7;BFC0;1108 116D 11B7;
+BFC1;BFC1;1108 116D 11B8;BFC1;1108 116D 11B8;
+BFC2;BFC2;1108 116D 11B9;BFC2;1108 116D 11B9;
+BFC3;BFC3;1108 116D 11BA;BFC3;1108 116D 11BA;
+BFC4;BFC4;1108 116D 11BB;BFC4;1108 116D 11BB;
+BFC5;BFC5;1108 116D 11BC;BFC5;1108 116D 11BC;
+BFC6;BFC6;1108 116D 11BD;BFC6;1108 116D 11BD;
+BFC7;BFC7;1108 116D 11BE;BFC7;1108 116D 11BE;
+BFC8;BFC8;1108 116D 11BF;BFC8;1108 116D 11BF;
+BFC9;BFC9;1108 116D 11C0;BFC9;1108 116D 11C0;
+BFCA;BFCA;1108 116D 11C1;BFCA;1108 116D 11C1;
+BFCB;BFCB;1108 116D 11C2;BFCB;1108 116D 11C2;
+BFCC;BFCC;1108 116E;BFCC;1108 116E;
+BFCD;BFCD;1108 116E 11A8;BFCD;1108 116E 11A8;
+BFCE;BFCE;1108 116E 11A9;BFCE;1108 116E 11A9;
+BFCF;BFCF;1108 116E 11AA;BFCF;1108 116E 11AA;
+BFD0;BFD0;1108 116E 11AB;BFD0;1108 116E 11AB;
+BFD1;BFD1;1108 116E 11AC;BFD1;1108 116E 11AC;
+BFD2;BFD2;1108 116E 11AD;BFD2;1108 116E 11AD;
+BFD3;BFD3;1108 116E 11AE;BFD3;1108 116E 11AE;
+BFD4;BFD4;1108 116E 11AF;BFD4;1108 116E 11AF;
+BFD5;BFD5;1108 116E 11B0;BFD5;1108 116E 11B0;
+BFD6;BFD6;1108 116E 11B1;BFD6;1108 116E 11B1;
+BFD7;BFD7;1108 116E 11B2;BFD7;1108 116E 11B2;
+BFD8;BFD8;1108 116E 11B3;BFD8;1108 116E 11B3;
+BFD9;BFD9;1108 116E 11B4;BFD9;1108 116E 11B4;
+BFDA;BFDA;1108 116E 11B5;BFDA;1108 116E 11B5;
+BFDB;BFDB;1108 116E 11B6;BFDB;1108 116E 11B6;
+BFDC;BFDC;1108 116E 11B7;BFDC;1108 116E 11B7;
+BFDD;BFDD;1108 116E 11B8;BFDD;1108 116E 11B8;
+BFDE;BFDE;1108 116E 11B9;BFDE;1108 116E 11B9;
+BFDF;BFDF;1108 116E 11BA;BFDF;1108 116E 11BA;
+BFE0;BFE0;1108 116E 11BB;BFE0;1108 116E 11BB;
+BFE1;BFE1;1108 116E 11BC;BFE1;1108 116E 11BC;
+BFE2;BFE2;1108 116E 11BD;BFE2;1108 116E 11BD;
+BFE3;BFE3;1108 116E 11BE;BFE3;1108 116E 11BE;
+BFE4;BFE4;1108 116E 11BF;BFE4;1108 116E 11BF;
+BFE5;BFE5;1108 116E 11C0;BFE5;1108 116E 11C0;
+BFE6;BFE6;1108 116E 11C1;BFE6;1108 116E 11C1;
+BFE7;BFE7;1108 116E 11C2;BFE7;1108 116E 11C2;
+BFE8;BFE8;1108 116F;BFE8;1108 116F;
+BFE9;BFE9;1108 116F 11A8;BFE9;1108 116F 11A8;
+BFEA;BFEA;1108 116F 11A9;BFEA;1108 116F 11A9;
+BFEB;BFEB;1108 116F 11AA;BFEB;1108 116F 11AA;
+BFEC;BFEC;1108 116F 11AB;BFEC;1108 116F 11AB;
+BFED;BFED;1108 116F 11AC;BFED;1108 116F 11AC;
+BFEE;BFEE;1108 116F 11AD;BFEE;1108 116F 11AD;
+BFEF;BFEF;1108 116F 11AE;BFEF;1108 116F 11AE;
+BFF0;BFF0;1108 116F 11AF;BFF0;1108 116F 11AF;
+BFF1;BFF1;1108 116F 11B0;BFF1;1108 116F 11B0;
+BFF2;BFF2;1108 116F 11B1;BFF2;1108 116F 11B1;
+BFF3;BFF3;1108 116F 11B2;BFF3;1108 116F 11B2;
+BFF4;BFF4;1108 116F 11B3;BFF4;1108 116F 11B3;
+BFF5;BFF5;1108 116F 11B4;BFF5;1108 116F 11B4;
+BFF6;BFF6;1108 116F 11B5;BFF6;1108 116F 11B5;
+BFF7;BFF7;1108 116F 11B6;BFF7;1108 116F 11B6;
+BFF8;BFF8;1108 116F 11B7;BFF8;1108 116F 11B7;
+BFF9;BFF9;1108 116F 11B8;BFF9;1108 116F 11B8;
+BFFA;BFFA;1108 116F 11B9;BFFA;1108 116F 11B9;
+BFFB;BFFB;1108 116F 11BA;BFFB;1108 116F 11BA;
+BFFC;BFFC;1108 116F 11BB;BFFC;1108 116F 11BB;
+BFFD;BFFD;1108 116F 11BC;BFFD;1108 116F 11BC;
+BFFE;BFFE;1108 116F 11BD;BFFE;1108 116F 11BD;
+BFFF;BFFF;1108 116F 11BE;BFFF;1108 116F 11BE;
+C000;C000;1108 116F 11BF;C000;1108 116F 11BF;
+C001;C001;1108 116F 11C0;C001;1108 116F 11C0;
+C002;C002;1108 116F 11C1;C002;1108 116F 11C1;
+C003;C003;1108 116F 11C2;C003;1108 116F 11C2;
+C004;C004;1108 1170;C004;1108 1170;
+C005;C005;1108 1170 11A8;C005;1108 1170 11A8;
+C006;C006;1108 1170 11A9;C006;1108 1170 11A9;
+C007;C007;1108 1170 11AA;C007;1108 1170 11AA;
+C008;C008;1108 1170 11AB;C008;1108 1170 11AB;
+C009;C009;1108 1170 11AC;C009;1108 1170 11AC;
+C00A;C00A;1108 1170 11AD;C00A;1108 1170 11AD;
+C00B;C00B;1108 1170 11AE;C00B;1108 1170 11AE;
+C00C;C00C;1108 1170 11AF;C00C;1108 1170 11AF;
+C00D;C00D;1108 1170 11B0;C00D;1108 1170 11B0;
+C00E;C00E;1108 1170 11B1;C00E;1108 1170 11B1;
+C00F;C00F;1108 1170 11B2;C00F;1108 1170 11B2;
+C010;C010;1108 1170 11B3;C010;1108 1170 11B3;
+C011;C011;1108 1170 11B4;C011;1108 1170 11B4;
+C012;C012;1108 1170 11B5;C012;1108 1170 11B5;
+C013;C013;1108 1170 11B6;C013;1108 1170 11B6;
+C014;C014;1108 1170 11B7;C014;1108 1170 11B7;
+C015;C015;1108 1170 11B8;C015;1108 1170 11B8;
+C016;C016;1108 1170 11B9;C016;1108 1170 11B9;
+C017;C017;1108 1170 11BA;C017;1108 1170 11BA;
+C018;C018;1108 1170 11BB;C018;1108 1170 11BB;
+C019;C019;1108 1170 11BC;C019;1108 1170 11BC;
+C01A;C01A;1108 1170 11BD;C01A;1108 1170 11BD;
+C01B;C01B;1108 1170 11BE;C01B;1108 1170 11BE;
+C01C;C01C;1108 1170 11BF;C01C;1108 1170 11BF;
+C01D;C01D;1108 1170 11C0;C01D;1108 1170 11C0;
+C01E;C01E;1108 1170 11C1;C01E;1108 1170 11C1;
+C01F;C01F;1108 1170 11C2;C01F;1108 1170 11C2;
+C020;C020;1108 1171;C020;1108 1171;
+C021;C021;1108 1171 11A8;C021;1108 1171 11A8;
+C022;C022;1108 1171 11A9;C022;1108 1171 11A9;
+C023;C023;1108 1171 11AA;C023;1108 1171 11AA;
+C024;C024;1108 1171 11AB;C024;1108 1171 11AB;
+C025;C025;1108 1171 11AC;C025;1108 1171 11AC;
+C026;C026;1108 1171 11AD;C026;1108 1171 11AD;
+C027;C027;1108 1171 11AE;C027;1108 1171 11AE;
+C028;C028;1108 1171 11AF;C028;1108 1171 11AF;
+C029;C029;1108 1171 11B0;C029;1108 1171 11B0;
+C02A;C02A;1108 1171 11B1;C02A;1108 1171 11B1;
+C02B;C02B;1108 1171 11B2;C02B;1108 1171 11B2;
+C02C;C02C;1108 1171 11B3;C02C;1108 1171 11B3;
+C02D;C02D;1108 1171 11B4;C02D;1108 1171 11B4;
+C02E;C02E;1108 1171 11B5;C02E;1108 1171 11B5;
+C02F;C02F;1108 1171 11B6;C02F;1108 1171 11B6;
+C030;C030;1108 1171 11B7;C030;1108 1171 11B7;
+C031;C031;1108 1171 11B8;C031;1108 1171 11B8;
+C032;C032;1108 1171 11B9;C032;1108 1171 11B9;
+C033;C033;1108 1171 11BA;C033;1108 1171 11BA;
+C034;C034;1108 1171 11BB;C034;1108 1171 11BB;
+C035;C035;1108 1171 11BC;C035;1108 1171 11BC;
+C036;C036;1108 1171 11BD;C036;1108 1171 11BD;
+C037;C037;1108 1171 11BE;C037;1108 1171 11BE;
+C038;C038;1108 1171 11BF;C038;1108 1171 11BF;
+C039;C039;1108 1171 11C0;C039;1108 1171 11C0;
+C03A;C03A;1108 1171 11C1;C03A;1108 1171 11C1;
+C03B;C03B;1108 1171 11C2;C03B;1108 1171 11C2;
+C03C;C03C;1108 1172;C03C;1108 1172;
+C03D;C03D;1108 1172 11A8;C03D;1108 1172 11A8;
+C03E;C03E;1108 1172 11A9;C03E;1108 1172 11A9;
+C03F;C03F;1108 1172 11AA;C03F;1108 1172 11AA;
+C040;C040;1108 1172 11AB;C040;1108 1172 11AB;
+C041;C041;1108 1172 11AC;C041;1108 1172 11AC;
+C042;C042;1108 1172 11AD;C042;1108 1172 11AD;
+C043;C043;1108 1172 11AE;C043;1108 1172 11AE;
+C044;C044;1108 1172 11AF;C044;1108 1172 11AF;
+C045;C045;1108 1172 11B0;C045;1108 1172 11B0;
+C046;C046;1108 1172 11B1;C046;1108 1172 11B1;
+C047;C047;1108 1172 11B2;C047;1108 1172 11B2;
+C048;C048;1108 1172 11B3;C048;1108 1172 11B3;
+C049;C049;1108 1172 11B4;C049;1108 1172 11B4;
+C04A;C04A;1108 1172 11B5;C04A;1108 1172 11B5;
+C04B;C04B;1108 1172 11B6;C04B;1108 1172 11B6;
+C04C;C04C;1108 1172 11B7;C04C;1108 1172 11B7;
+C04D;C04D;1108 1172 11B8;C04D;1108 1172 11B8;
+C04E;C04E;1108 1172 11B9;C04E;1108 1172 11B9;
+C04F;C04F;1108 1172 11BA;C04F;1108 1172 11BA;
+C050;C050;1108 1172 11BB;C050;1108 1172 11BB;
+C051;C051;1108 1172 11BC;C051;1108 1172 11BC;
+C052;C052;1108 1172 11BD;C052;1108 1172 11BD;
+C053;C053;1108 1172 11BE;C053;1108 1172 11BE;
+C054;C054;1108 1172 11BF;C054;1108 1172 11BF;
+C055;C055;1108 1172 11C0;C055;1108 1172 11C0;
+C056;C056;1108 1172 11C1;C056;1108 1172 11C1;
+C057;C057;1108 1172 11C2;C057;1108 1172 11C2;
+C058;C058;1108 1173;C058;1108 1173;
+C059;C059;1108 1173 11A8;C059;1108 1173 11A8;
+C05A;C05A;1108 1173 11A9;C05A;1108 1173 11A9;
+C05B;C05B;1108 1173 11AA;C05B;1108 1173 11AA;
+C05C;C05C;1108 1173 11AB;C05C;1108 1173 11AB;
+C05D;C05D;1108 1173 11AC;C05D;1108 1173 11AC;
+C05E;C05E;1108 1173 11AD;C05E;1108 1173 11AD;
+C05F;C05F;1108 1173 11AE;C05F;1108 1173 11AE;
+C060;C060;1108 1173 11AF;C060;1108 1173 11AF;
+C061;C061;1108 1173 11B0;C061;1108 1173 11B0;
+C062;C062;1108 1173 11B1;C062;1108 1173 11B1;
+C063;C063;1108 1173 11B2;C063;1108 1173 11B2;
+C064;C064;1108 1173 11B3;C064;1108 1173 11B3;
+C065;C065;1108 1173 11B4;C065;1108 1173 11B4;
+C066;C066;1108 1173 11B5;C066;1108 1173 11B5;
+C067;C067;1108 1173 11B6;C067;1108 1173 11B6;
+C068;C068;1108 1173 11B7;C068;1108 1173 11B7;
+C069;C069;1108 1173 11B8;C069;1108 1173 11B8;
+C06A;C06A;1108 1173 11B9;C06A;1108 1173 11B9;
+C06B;C06B;1108 1173 11BA;C06B;1108 1173 11BA;
+C06C;C06C;1108 1173 11BB;C06C;1108 1173 11BB;
+C06D;C06D;1108 1173 11BC;C06D;1108 1173 11BC;
+C06E;C06E;1108 1173 11BD;C06E;1108 1173 11BD;
+C06F;C06F;1108 1173 11BE;C06F;1108 1173 11BE;
+C070;C070;1108 1173 11BF;C070;1108 1173 11BF;
+C071;C071;1108 1173 11C0;C071;1108 1173 11C0;
+C072;C072;1108 1173 11C1;C072;1108 1173 11C1;
+C073;C073;1108 1173 11C2;C073;1108 1173 11C2;
+C074;C074;1108 1174;C074;1108 1174;
+C075;C075;1108 1174 11A8;C075;1108 1174 11A8;
+C076;C076;1108 1174 11A9;C076;1108 1174 11A9;
+C077;C077;1108 1174 11AA;C077;1108 1174 11AA;
+C078;C078;1108 1174 11AB;C078;1108 1174 11AB;
+C079;C079;1108 1174 11AC;C079;1108 1174 11AC;
+C07A;C07A;1108 1174 11AD;C07A;1108 1174 11AD;
+C07B;C07B;1108 1174 11AE;C07B;1108 1174 11AE;
+C07C;C07C;1108 1174 11AF;C07C;1108 1174 11AF;
+C07D;C07D;1108 1174 11B0;C07D;1108 1174 11B0;
+C07E;C07E;1108 1174 11B1;C07E;1108 1174 11B1;
+C07F;C07F;1108 1174 11B2;C07F;1108 1174 11B2;
+C080;C080;1108 1174 11B3;C080;1108 1174 11B3;
+C081;C081;1108 1174 11B4;C081;1108 1174 11B4;
+C082;C082;1108 1174 11B5;C082;1108 1174 11B5;
+C083;C083;1108 1174 11B6;C083;1108 1174 11B6;
+C084;C084;1108 1174 11B7;C084;1108 1174 11B7;
+C085;C085;1108 1174 11B8;C085;1108 1174 11B8;
+C086;C086;1108 1174 11B9;C086;1108 1174 11B9;
+C087;C087;1108 1174 11BA;C087;1108 1174 11BA;
+C088;C088;1108 1174 11BB;C088;1108 1174 11BB;
+C089;C089;1108 1174 11BC;C089;1108 1174 11BC;
+C08A;C08A;1108 1174 11BD;C08A;1108 1174 11BD;
+C08B;C08B;1108 1174 11BE;C08B;1108 1174 11BE;
+C08C;C08C;1108 1174 11BF;C08C;1108 1174 11BF;
+C08D;C08D;1108 1174 11C0;C08D;1108 1174 11C0;
+C08E;C08E;1108 1174 11C1;C08E;1108 1174 11C1;
+C08F;C08F;1108 1174 11C2;C08F;1108 1174 11C2;
+C090;C090;1108 1175;C090;1108 1175;
+C091;C091;1108 1175 11A8;C091;1108 1175 11A8;
+C092;C092;1108 1175 11A9;C092;1108 1175 11A9;
+C093;C093;1108 1175 11AA;C093;1108 1175 11AA;
+C094;C094;1108 1175 11AB;C094;1108 1175 11AB;
+C095;C095;1108 1175 11AC;C095;1108 1175 11AC;
+C096;C096;1108 1175 11AD;C096;1108 1175 11AD;
+C097;C097;1108 1175 11AE;C097;1108 1175 11AE;
+C098;C098;1108 1175 11AF;C098;1108 1175 11AF;
+C099;C099;1108 1175 11B0;C099;1108 1175 11B0;
+C09A;C09A;1108 1175 11B1;C09A;1108 1175 11B1;
+C09B;C09B;1108 1175 11B2;C09B;1108 1175 11B2;
+C09C;C09C;1108 1175 11B3;C09C;1108 1175 11B3;
+C09D;C09D;1108 1175 11B4;C09D;1108 1175 11B4;
+C09E;C09E;1108 1175 11B5;C09E;1108 1175 11B5;
+C09F;C09F;1108 1175 11B6;C09F;1108 1175 11B6;
+C0A0;C0A0;1108 1175 11B7;C0A0;1108 1175 11B7;
+C0A1;C0A1;1108 1175 11B8;C0A1;1108 1175 11B8;
+C0A2;C0A2;1108 1175 11B9;C0A2;1108 1175 11B9;
+C0A3;C0A3;1108 1175 11BA;C0A3;1108 1175 11BA;
+C0A4;C0A4;1108 1175 11BB;C0A4;1108 1175 11BB;
+C0A5;C0A5;1108 1175 11BC;C0A5;1108 1175 11BC;
+C0A6;C0A6;1108 1175 11BD;C0A6;1108 1175 11BD;
+C0A7;C0A7;1108 1175 11BE;C0A7;1108 1175 11BE;
+C0A8;C0A8;1108 1175 11BF;C0A8;1108 1175 11BF;
+C0A9;C0A9;1108 1175 11C0;C0A9;1108 1175 11C0;
+C0AA;C0AA;1108 1175 11C1;C0AA;1108 1175 11C1;
+C0AB;C0AB;1108 1175 11C2;C0AB;1108 1175 11C2;
+C0AC;C0AC;1109 1161;C0AC;1109 1161;
+C0AD;C0AD;1109 1161 11A8;C0AD;1109 1161 11A8;
+C0AE;C0AE;1109 1161 11A9;C0AE;1109 1161 11A9;
+C0AF;C0AF;1109 1161 11AA;C0AF;1109 1161 11AA;
+C0B0;C0B0;1109 1161 11AB;C0B0;1109 1161 11AB;
+C0B1;C0B1;1109 1161 11AC;C0B1;1109 1161 11AC;
+C0B2;C0B2;1109 1161 11AD;C0B2;1109 1161 11AD;
+C0B3;C0B3;1109 1161 11AE;C0B3;1109 1161 11AE;
+C0B4;C0B4;1109 1161 11AF;C0B4;1109 1161 11AF;
+C0B5;C0B5;1109 1161 11B0;C0B5;1109 1161 11B0;
+C0B6;C0B6;1109 1161 11B1;C0B6;1109 1161 11B1;
+C0B7;C0B7;1109 1161 11B2;C0B7;1109 1161 11B2;
+C0B8;C0B8;1109 1161 11B3;C0B8;1109 1161 11B3;
+C0B9;C0B9;1109 1161 11B4;C0B9;1109 1161 11B4;
+C0BA;C0BA;1109 1161 11B5;C0BA;1109 1161 11B5;
+C0BB;C0BB;1109 1161 11B6;C0BB;1109 1161 11B6;
+C0BC;C0BC;1109 1161 11B7;C0BC;1109 1161 11B7;
+C0BD;C0BD;1109 1161 11B8;C0BD;1109 1161 11B8;
+C0BE;C0BE;1109 1161 11B9;C0BE;1109 1161 11B9;
+C0BF;C0BF;1109 1161 11BA;C0BF;1109 1161 11BA;
+C0C0;C0C0;1109 1161 11BB;C0C0;1109 1161 11BB;
+C0C1;C0C1;1109 1161 11BC;C0C1;1109 1161 11BC;
+C0C2;C0C2;1109 1161 11BD;C0C2;1109 1161 11BD;
+C0C3;C0C3;1109 1161 11BE;C0C3;1109 1161 11BE;
+C0C4;C0C4;1109 1161 11BF;C0C4;1109 1161 11BF;
+C0C5;C0C5;1109 1161 11C0;C0C5;1109 1161 11C0;
+C0C6;C0C6;1109 1161 11C1;C0C6;1109 1161 11C1;
+C0C7;C0C7;1109 1161 11C2;C0C7;1109 1161 11C2;
+C0C8;C0C8;1109 1162;C0C8;1109 1162;
+C0C9;C0C9;1109 1162 11A8;C0C9;1109 1162 11A8;
+C0CA;C0CA;1109 1162 11A9;C0CA;1109 1162 11A9;
+C0CB;C0CB;1109 1162 11AA;C0CB;1109 1162 11AA;
+C0CC;C0CC;1109 1162 11AB;C0CC;1109 1162 11AB;
+C0CD;C0CD;1109 1162 11AC;C0CD;1109 1162 11AC;
+C0CE;C0CE;1109 1162 11AD;C0CE;1109 1162 11AD;
+C0CF;C0CF;1109 1162 11AE;C0CF;1109 1162 11AE;
+C0D0;C0D0;1109 1162 11AF;C0D0;1109 1162 11AF;
+C0D1;C0D1;1109 1162 11B0;C0D1;1109 1162 11B0;
+C0D2;C0D2;1109 1162 11B1;C0D2;1109 1162 11B1;
+C0D3;C0D3;1109 1162 11B2;C0D3;1109 1162 11B2;
+C0D4;C0D4;1109 1162 11B3;C0D4;1109 1162 11B3;
+C0D5;C0D5;1109 1162 11B4;C0D5;1109 1162 11B4;
+C0D6;C0D6;1109 1162 11B5;C0D6;1109 1162 11B5;
+C0D7;C0D7;1109 1162 11B6;C0D7;1109 1162 11B6;
+C0D8;C0D8;1109 1162 11B7;C0D8;1109 1162 11B7;
+C0D9;C0D9;1109 1162 11B8;C0D9;1109 1162 11B8;
+C0DA;C0DA;1109 1162 11B9;C0DA;1109 1162 11B9;
+C0DB;C0DB;1109 1162 11BA;C0DB;1109 1162 11BA;
+C0DC;C0DC;1109 1162 11BB;C0DC;1109 1162 11BB;
+C0DD;C0DD;1109 1162 11BC;C0DD;1109 1162 11BC;
+C0DE;C0DE;1109 1162 11BD;C0DE;1109 1162 11BD;
+C0DF;C0DF;1109 1162 11BE;C0DF;1109 1162 11BE;
+C0E0;C0E0;1109 1162 11BF;C0E0;1109 1162 11BF;
+C0E1;C0E1;1109 1162 11C0;C0E1;1109 1162 11C0;
+C0E2;C0E2;1109 1162 11C1;C0E2;1109 1162 11C1;
+C0E3;C0E3;1109 1162 11C2;C0E3;1109 1162 11C2;
+C0E4;C0E4;1109 1163;C0E4;1109 1163;
+C0E5;C0E5;1109 1163 11A8;C0E5;1109 1163 11A8;
+C0E6;C0E6;1109 1163 11A9;C0E6;1109 1163 11A9;
+C0E7;C0E7;1109 1163 11AA;C0E7;1109 1163 11AA;
+C0E8;C0E8;1109 1163 11AB;C0E8;1109 1163 11AB;
+C0E9;C0E9;1109 1163 11AC;C0E9;1109 1163 11AC;
+C0EA;C0EA;1109 1163 11AD;C0EA;1109 1163 11AD;
+C0EB;C0EB;1109 1163 11AE;C0EB;1109 1163 11AE;
+C0EC;C0EC;1109 1163 11AF;C0EC;1109 1163 11AF;
+C0ED;C0ED;1109 1163 11B0;C0ED;1109 1163 11B0;
+C0EE;C0EE;1109 1163 11B1;C0EE;1109 1163 11B1;
+C0EF;C0EF;1109 1163 11B2;C0EF;1109 1163 11B2;
+C0F0;C0F0;1109 1163 11B3;C0F0;1109 1163 11B3;
+C0F1;C0F1;1109 1163 11B4;C0F1;1109 1163 11B4;
+C0F2;C0F2;1109 1163 11B5;C0F2;1109 1163 11B5;
+C0F3;C0F3;1109 1163 11B6;C0F3;1109 1163 11B6;
+C0F4;C0F4;1109 1163 11B7;C0F4;1109 1163 11B7;
+C0F5;C0F5;1109 1163 11B8;C0F5;1109 1163 11B8;
+C0F6;C0F6;1109 1163 11B9;C0F6;1109 1163 11B9;
+C0F7;C0F7;1109 1163 11BA;C0F7;1109 1163 11BA;
+C0F8;C0F8;1109 1163 11BB;C0F8;1109 1163 11BB;
+C0F9;C0F9;1109 1163 11BC;C0F9;1109 1163 11BC;
+C0FA;C0FA;1109 1163 11BD;C0FA;1109 1163 11BD;
+C0FB;C0FB;1109 1163 11BE;C0FB;1109 1163 11BE;
+C0FC;C0FC;1109 1163 11BF;C0FC;1109 1163 11BF;
+C0FD;C0FD;1109 1163 11C0;C0FD;1109 1163 11C0;
+C0FE;C0FE;1109 1163 11C1;C0FE;1109 1163 11C1;
+C0FF;C0FF;1109 1163 11C2;C0FF;1109 1163 11C2;
+C100;C100;1109 1164;C100;1109 1164;
+C101;C101;1109 1164 11A8;C101;1109 1164 11A8;
+C102;C102;1109 1164 11A9;C102;1109 1164 11A9;
+C103;C103;1109 1164 11AA;C103;1109 1164 11AA;
+C104;C104;1109 1164 11AB;C104;1109 1164 11AB;
+C105;C105;1109 1164 11AC;C105;1109 1164 11AC;
+C106;C106;1109 1164 11AD;C106;1109 1164 11AD;
+C107;C107;1109 1164 11AE;C107;1109 1164 11AE;
+C108;C108;1109 1164 11AF;C108;1109 1164 11AF;
+C109;C109;1109 1164 11B0;C109;1109 1164 11B0;
+C10A;C10A;1109 1164 11B1;C10A;1109 1164 11B1;
+C10B;C10B;1109 1164 11B2;C10B;1109 1164 11B2;
+C10C;C10C;1109 1164 11B3;C10C;1109 1164 11B3;
+C10D;C10D;1109 1164 11B4;C10D;1109 1164 11B4;
+C10E;C10E;1109 1164 11B5;C10E;1109 1164 11B5;
+C10F;C10F;1109 1164 11B6;C10F;1109 1164 11B6;
+C110;C110;1109 1164 11B7;C110;1109 1164 11B7;
+C111;C111;1109 1164 11B8;C111;1109 1164 11B8;
+C112;C112;1109 1164 11B9;C112;1109 1164 11B9;
+C113;C113;1109 1164 11BA;C113;1109 1164 11BA;
+C114;C114;1109 1164 11BB;C114;1109 1164 11BB;
+C115;C115;1109 1164 11BC;C115;1109 1164 11BC;
+C116;C116;1109 1164 11BD;C116;1109 1164 11BD;
+C117;C117;1109 1164 11BE;C117;1109 1164 11BE;
+C118;C118;1109 1164 11BF;C118;1109 1164 11BF;
+C119;C119;1109 1164 11C0;C119;1109 1164 11C0;
+C11A;C11A;1109 1164 11C1;C11A;1109 1164 11C1;
+C11B;C11B;1109 1164 11C2;C11B;1109 1164 11C2;
+C11C;C11C;1109 1165;C11C;1109 1165;
+C11D;C11D;1109 1165 11A8;C11D;1109 1165 11A8;
+C11E;C11E;1109 1165 11A9;C11E;1109 1165 11A9;
+C11F;C11F;1109 1165 11AA;C11F;1109 1165 11AA;
+C120;C120;1109 1165 11AB;C120;1109 1165 11AB;
+C121;C121;1109 1165 11AC;C121;1109 1165 11AC;
+C122;C122;1109 1165 11AD;C122;1109 1165 11AD;
+C123;C123;1109 1165 11AE;C123;1109 1165 11AE;
+C124;C124;1109 1165 11AF;C124;1109 1165 11AF;
+C125;C125;1109 1165 11B0;C125;1109 1165 11B0;
+C126;C126;1109 1165 11B1;C126;1109 1165 11B1;
+C127;C127;1109 1165 11B2;C127;1109 1165 11B2;
+C128;C128;1109 1165 11B3;C128;1109 1165 11B3;
+C129;C129;1109 1165 11B4;C129;1109 1165 11B4;
+C12A;C12A;1109 1165 11B5;C12A;1109 1165 11B5;
+C12B;C12B;1109 1165 11B6;C12B;1109 1165 11B6;
+C12C;C12C;1109 1165 11B7;C12C;1109 1165 11B7;
+C12D;C12D;1109 1165 11B8;C12D;1109 1165 11B8;
+C12E;C12E;1109 1165 11B9;C12E;1109 1165 11B9;
+C12F;C12F;1109 1165 11BA;C12F;1109 1165 11BA;
+C130;C130;1109 1165 11BB;C130;1109 1165 11BB;
+C131;C131;1109 1165 11BC;C131;1109 1165 11BC;
+C132;C132;1109 1165 11BD;C132;1109 1165 11BD;
+C133;C133;1109 1165 11BE;C133;1109 1165 11BE;
+C134;C134;1109 1165 11BF;C134;1109 1165 11BF;
+C135;C135;1109 1165 11C0;C135;1109 1165 11C0;
+C136;C136;1109 1165 11C1;C136;1109 1165 11C1;
+C137;C137;1109 1165 11C2;C137;1109 1165 11C2;
+C138;C138;1109 1166;C138;1109 1166;
+C139;C139;1109 1166 11A8;C139;1109 1166 11A8;
+C13A;C13A;1109 1166 11A9;C13A;1109 1166 11A9;
+C13B;C13B;1109 1166 11AA;C13B;1109 1166 11AA;
+C13C;C13C;1109 1166 11AB;C13C;1109 1166 11AB;
+C13D;C13D;1109 1166 11AC;C13D;1109 1166 11AC;
+C13E;C13E;1109 1166 11AD;C13E;1109 1166 11AD;
+C13F;C13F;1109 1166 11AE;C13F;1109 1166 11AE;
+C140;C140;1109 1166 11AF;C140;1109 1166 11AF;
+C141;C141;1109 1166 11B0;C141;1109 1166 11B0;
+C142;C142;1109 1166 11B1;C142;1109 1166 11B1;
+C143;C143;1109 1166 11B2;C143;1109 1166 11B2;
+C144;C144;1109 1166 11B3;C144;1109 1166 11B3;
+C145;C145;1109 1166 11B4;C145;1109 1166 11B4;
+C146;C146;1109 1166 11B5;C146;1109 1166 11B5;
+C147;C147;1109 1166 11B6;C147;1109 1166 11B6;
+C148;C148;1109 1166 11B7;C148;1109 1166 11B7;
+C149;C149;1109 1166 11B8;C149;1109 1166 11B8;
+C14A;C14A;1109 1166 11B9;C14A;1109 1166 11B9;
+C14B;C14B;1109 1166 11BA;C14B;1109 1166 11BA;
+C14C;C14C;1109 1166 11BB;C14C;1109 1166 11BB;
+C14D;C14D;1109 1166 11BC;C14D;1109 1166 11BC;
+C14E;C14E;1109 1166 11BD;C14E;1109 1166 11BD;
+C14F;C14F;1109 1166 11BE;C14F;1109 1166 11BE;
+C150;C150;1109 1166 11BF;C150;1109 1166 11BF;
+C151;C151;1109 1166 11C0;C151;1109 1166 11C0;
+C152;C152;1109 1166 11C1;C152;1109 1166 11C1;
+C153;C153;1109 1166 11C2;C153;1109 1166 11C2;
+C154;C154;1109 1167;C154;1109 1167;
+C155;C155;1109 1167 11A8;C155;1109 1167 11A8;
+C156;C156;1109 1167 11A9;C156;1109 1167 11A9;
+C157;C157;1109 1167 11AA;C157;1109 1167 11AA;
+C158;C158;1109 1167 11AB;C158;1109 1167 11AB;
+C159;C159;1109 1167 11AC;C159;1109 1167 11AC;
+C15A;C15A;1109 1167 11AD;C15A;1109 1167 11AD;
+C15B;C15B;1109 1167 11AE;C15B;1109 1167 11AE;
+C15C;C15C;1109 1167 11AF;C15C;1109 1167 11AF;
+C15D;C15D;1109 1167 11B0;C15D;1109 1167 11B0;
+C15E;C15E;1109 1167 11B1;C15E;1109 1167 11B1;
+C15F;C15F;1109 1167 11B2;C15F;1109 1167 11B2;
+C160;C160;1109 1167 11B3;C160;1109 1167 11B3;
+C161;C161;1109 1167 11B4;C161;1109 1167 11B4;
+C162;C162;1109 1167 11B5;C162;1109 1167 11B5;
+C163;C163;1109 1167 11B6;C163;1109 1167 11B6;
+C164;C164;1109 1167 11B7;C164;1109 1167 11B7;
+C165;C165;1109 1167 11B8;C165;1109 1167 11B8;
+C166;C166;1109 1167 11B9;C166;1109 1167 11B9;
+C167;C167;1109 1167 11BA;C167;1109 1167 11BA;
+C168;C168;1109 1167 11BB;C168;1109 1167 11BB;
+C169;C169;1109 1167 11BC;C169;1109 1167 11BC;
+C16A;C16A;1109 1167 11BD;C16A;1109 1167 11BD;
+C16B;C16B;1109 1167 11BE;C16B;1109 1167 11BE;
+C16C;C16C;1109 1167 11BF;C16C;1109 1167 11BF;
+C16D;C16D;1109 1167 11C0;C16D;1109 1167 11C0;
+C16E;C16E;1109 1167 11C1;C16E;1109 1167 11C1;
+C16F;C16F;1109 1167 11C2;C16F;1109 1167 11C2;
+C170;C170;1109 1168;C170;1109 1168;
+C171;C171;1109 1168 11A8;C171;1109 1168 11A8;
+C172;C172;1109 1168 11A9;C172;1109 1168 11A9;
+C173;C173;1109 1168 11AA;C173;1109 1168 11AA;
+C174;C174;1109 1168 11AB;C174;1109 1168 11AB;
+C175;C175;1109 1168 11AC;C175;1109 1168 11AC;
+C176;C176;1109 1168 11AD;C176;1109 1168 11AD;
+C177;C177;1109 1168 11AE;C177;1109 1168 11AE;
+C178;C178;1109 1168 11AF;C178;1109 1168 11AF;
+C179;C179;1109 1168 11B0;C179;1109 1168 11B0;
+C17A;C17A;1109 1168 11B1;C17A;1109 1168 11B1;
+C17B;C17B;1109 1168 11B2;C17B;1109 1168 11B2;
+C17C;C17C;1109 1168 11B3;C17C;1109 1168 11B3;
+C17D;C17D;1109 1168 11B4;C17D;1109 1168 11B4;
+C17E;C17E;1109 1168 11B5;C17E;1109 1168 11B5;
+C17F;C17F;1109 1168 11B6;C17F;1109 1168 11B6;
+C180;C180;1109 1168 11B7;C180;1109 1168 11B7;
+C181;C181;1109 1168 11B8;C181;1109 1168 11B8;
+C182;C182;1109 1168 11B9;C182;1109 1168 11B9;
+C183;C183;1109 1168 11BA;C183;1109 1168 11BA;
+C184;C184;1109 1168 11BB;C184;1109 1168 11BB;
+C185;C185;1109 1168 11BC;C185;1109 1168 11BC;
+C186;C186;1109 1168 11BD;C186;1109 1168 11BD;
+C187;C187;1109 1168 11BE;C187;1109 1168 11BE;
+C188;C188;1109 1168 11BF;C188;1109 1168 11BF;
+C189;C189;1109 1168 11C0;C189;1109 1168 11C0;
+C18A;C18A;1109 1168 11C1;C18A;1109 1168 11C1;
+C18B;C18B;1109 1168 11C2;C18B;1109 1168 11C2;
+C18C;C18C;1109 1169;C18C;1109 1169;
+C18D;C18D;1109 1169 11A8;C18D;1109 1169 11A8;
+C18E;C18E;1109 1169 11A9;C18E;1109 1169 11A9;
+C18F;C18F;1109 1169 11AA;C18F;1109 1169 11AA;
+C190;C190;1109 1169 11AB;C190;1109 1169 11AB;
+C191;C191;1109 1169 11AC;C191;1109 1169 11AC;
+C192;C192;1109 1169 11AD;C192;1109 1169 11AD;
+C193;C193;1109 1169 11AE;C193;1109 1169 11AE;
+C194;C194;1109 1169 11AF;C194;1109 1169 11AF;
+C195;C195;1109 1169 11B0;C195;1109 1169 11B0;
+C196;C196;1109 1169 11B1;C196;1109 1169 11B1;
+C197;C197;1109 1169 11B2;C197;1109 1169 11B2;
+C198;C198;1109 1169 11B3;C198;1109 1169 11B3;
+C199;C199;1109 1169 11B4;C199;1109 1169 11B4;
+C19A;C19A;1109 1169 11B5;C19A;1109 1169 11B5;
+C19B;C19B;1109 1169 11B6;C19B;1109 1169 11B6;
+C19C;C19C;1109 1169 11B7;C19C;1109 1169 11B7;
+C19D;C19D;1109 1169 11B8;C19D;1109 1169 11B8;
+C19E;C19E;1109 1169 11B9;C19E;1109 1169 11B9;
+C19F;C19F;1109 1169 11BA;C19F;1109 1169 11BA;
+C1A0;C1A0;1109 1169 11BB;C1A0;1109 1169 11BB;
+C1A1;C1A1;1109 1169 11BC;C1A1;1109 1169 11BC;
+C1A2;C1A2;1109 1169 11BD;C1A2;1109 1169 11BD;
+C1A3;C1A3;1109 1169 11BE;C1A3;1109 1169 11BE;
+C1A4;C1A4;1109 1169 11BF;C1A4;1109 1169 11BF;
+C1A5;C1A5;1109 1169 11C0;C1A5;1109 1169 11C0;
+C1A6;C1A6;1109 1169 11C1;C1A6;1109 1169 11C1;
+C1A7;C1A7;1109 1169 11C2;C1A7;1109 1169 11C2;
+C1A8;C1A8;1109 116A;C1A8;1109 116A;
+C1A9;C1A9;1109 116A 11A8;C1A9;1109 116A 11A8;
+C1AA;C1AA;1109 116A 11A9;C1AA;1109 116A 11A9;
+C1AB;C1AB;1109 116A 11AA;C1AB;1109 116A 11AA;
+C1AC;C1AC;1109 116A 11AB;C1AC;1109 116A 11AB;
+C1AD;C1AD;1109 116A 11AC;C1AD;1109 116A 11AC;
+C1AE;C1AE;1109 116A 11AD;C1AE;1109 116A 11AD;
+C1AF;C1AF;1109 116A 11AE;C1AF;1109 116A 11AE;
+C1B0;C1B0;1109 116A 11AF;C1B0;1109 116A 11AF;
+C1B1;C1B1;1109 116A 11B0;C1B1;1109 116A 11B0;
+C1B2;C1B2;1109 116A 11B1;C1B2;1109 116A 11B1;
+C1B3;C1B3;1109 116A 11B2;C1B3;1109 116A 11B2;
+C1B4;C1B4;1109 116A 11B3;C1B4;1109 116A 11B3;
+C1B5;C1B5;1109 116A 11B4;C1B5;1109 116A 11B4;
+C1B6;C1B6;1109 116A 11B5;C1B6;1109 116A 11B5;
+C1B7;C1B7;1109 116A 11B6;C1B7;1109 116A 11B6;
+C1B8;C1B8;1109 116A 11B7;C1B8;1109 116A 11B7;
+C1B9;C1B9;1109 116A 11B8;C1B9;1109 116A 11B8;
+C1BA;C1BA;1109 116A 11B9;C1BA;1109 116A 11B9;
+C1BB;C1BB;1109 116A 11BA;C1BB;1109 116A 11BA;
+C1BC;C1BC;1109 116A 11BB;C1BC;1109 116A 11BB;
+C1BD;C1BD;1109 116A 11BC;C1BD;1109 116A 11BC;
+C1BE;C1BE;1109 116A 11BD;C1BE;1109 116A 11BD;
+C1BF;C1BF;1109 116A 11BE;C1BF;1109 116A 11BE;
+C1C0;C1C0;1109 116A 11BF;C1C0;1109 116A 11BF;
+C1C1;C1C1;1109 116A 11C0;C1C1;1109 116A 11C0;
+C1C2;C1C2;1109 116A 11C1;C1C2;1109 116A 11C1;
+C1C3;C1C3;1109 116A 11C2;C1C3;1109 116A 11C2;
+C1C4;C1C4;1109 116B;C1C4;1109 116B;
+C1C5;C1C5;1109 116B 11A8;C1C5;1109 116B 11A8;
+C1C6;C1C6;1109 116B 11A9;C1C6;1109 116B 11A9;
+C1C7;C1C7;1109 116B 11AA;C1C7;1109 116B 11AA;
+C1C8;C1C8;1109 116B 11AB;C1C8;1109 116B 11AB;
+C1C9;C1C9;1109 116B 11AC;C1C9;1109 116B 11AC;
+C1CA;C1CA;1109 116B 11AD;C1CA;1109 116B 11AD;
+C1CB;C1CB;1109 116B 11AE;C1CB;1109 116B 11AE;
+C1CC;C1CC;1109 116B 11AF;C1CC;1109 116B 11AF;
+C1CD;C1CD;1109 116B 11B0;C1CD;1109 116B 11B0;
+C1CE;C1CE;1109 116B 11B1;C1CE;1109 116B 11B1;
+C1CF;C1CF;1109 116B 11B2;C1CF;1109 116B 11B2;
+C1D0;C1D0;1109 116B 11B3;C1D0;1109 116B 11B3;
+C1D1;C1D1;1109 116B 11B4;C1D1;1109 116B 11B4;
+C1D2;C1D2;1109 116B 11B5;C1D2;1109 116B 11B5;
+C1D3;C1D3;1109 116B 11B6;C1D3;1109 116B 11B6;
+C1D4;C1D4;1109 116B 11B7;C1D4;1109 116B 11B7;
+C1D5;C1D5;1109 116B 11B8;C1D5;1109 116B 11B8;
+C1D6;C1D6;1109 116B 11B9;C1D6;1109 116B 11B9;
+C1D7;C1D7;1109 116B 11BA;C1D7;1109 116B 11BA;
+C1D8;C1D8;1109 116B 11BB;C1D8;1109 116B 11BB;
+C1D9;C1D9;1109 116B 11BC;C1D9;1109 116B 11BC;
+C1DA;C1DA;1109 116B 11BD;C1DA;1109 116B 11BD;
+C1DB;C1DB;1109 116B 11BE;C1DB;1109 116B 11BE;
+C1DC;C1DC;1109 116B 11BF;C1DC;1109 116B 11BF;
+C1DD;C1DD;1109 116B 11C0;C1DD;1109 116B 11C0;
+C1DE;C1DE;1109 116B 11C1;C1DE;1109 116B 11C1;
+C1DF;C1DF;1109 116B 11C2;C1DF;1109 116B 11C2;
+C1E0;C1E0;1109 116C;C1E0;1109 116C;
+C1E1;C1E1;1109 116C 11A8;C1E1;1109 116C 11A8;
+C1E2;C1E2;1109 116C 11A9;C1E2;1109 116C 11A9;
+C1E3;C1E3;1109 116C 11AA;C1E3;1109 116C 11AA;
+C1E4;C1E4;1109 116C 11AB;C1E4;1109 116C 11AB;
+C1E5;C1E5;1109 116C 11AC;C1E5;1109 116C 11AC;
+C1E6;C1E6;1109 116C 11AD;C1E6;1109 116C 11AD;
+C1E7;C1E7;1109 116C 11AE;C1E7;1109 116C 11AE;
+C1E8;C1E8;1109 116C 11AF;C1E8;1109 116C 11AF;
+C1E9;C1E9;1109 116C 11B0;C1E9;1109 116C 11B0;
+C1EA;C1EA;1109 116C 11B1;C1EA;1109 116C 11B1;
+C1EB;C1EB;1109 116C 11B2;C1EB;1109 116C 11B2;
+C1EC;C1EC;1109 116C 11B3;C1EC;1109 116C 11B3;
+C1ED;C1ED;1109 116C 11B4;C1ED;1109 116C 11B4;
+C1EE;C1EE;1109 116C 11B5;C1EE;1109 116C 11B5;
+C1EF;C1EF;1109 116C 11B6;C1EF;1109 116C 11B6;
+C1F0;C1F0;1109 116C 11B7;C1F0;1109 116C 11B7;
+C1F1;C1F1;1109 116C 11B8;C1F1;1109 116C 11B8;
+C1F2;C1F2;1109 116C 11B9;C1F2;1109 116C 11B9;
+C1F3;C1F3;1109 116C 11BA;C1F3;1109 116C 11BA;
+C1F4;C1F4;1109 116C 11BB;C1F4;1109 116C 11BB;
+C1F5;C1F5;1109 116C 11BC;C1F5;1109 116C 11BC;
+C1F6;C1F6;1109 116C 11BD;C1F6;1109 116C 11BD;
+C1F7;C1F7;1109 116C 11BE;C1F7;1109 116C 11BE;
+C1F8;C1F8;1109 116C 11BF;C1F8;1109 116C 11BF;
+C1F9;C1F9;1109 116C 11C0;C1F9;1109 116C 11C0;
+C1FA;C1FA;1109 116C 11C1;C1FA;1109 116C 11C1;
+C1FB;C1FB;1109 116C 11C2;C1FB;1109 116C 11C2;
+C1FC;C1FC;1109 116D;C1FC;1109 116D;
+C1FD;C1FD;1109 116D 11A8;C1FD;1109 116D 11A8;
+C1FE;C1FE;1109 116D 11A9;C1FE;1109 116D 11A9;
+C1FF;C1FF;1109 116D 11AA;C1FF;1109 116D 11AA;
+C200;C200;1109 116D 11AB;C200;1109 116D 11AB;
+C201;C201;1109 116D 11AC;C201;1109 116D 11AC;
+C202;C202;1109 116D 11AD;C202;1109 116D 11AD;
+C203;C203;1109 116D 11AE;C203;1109 116D 11AE;
+C204;C204;1109 116D 11AF;C204;1109 116D 11AF;
+C205;C205;1109 116D 11B0;C205;1109 116D 11B0;
+C206;C206;1109 116D 11B1;C206;1109 116D 11B1;
+C207;C207;1109 116D 11B2;C207;1109 116D 11B2;
+C208;C208;1109 116D 11B3;C208;1109 116D 11B3;
+C209;C209;1109 116D 11B4;C209;1109 116D 11B4;
+C20A;C20A;1109 116D 11B5;C20A;1109 116D 11B5;
+C20B;C20B;1109 116D 11B6;C20B;1109 116D 11B6;
+C20C;C20C;1109 116D 11B7;C20C;1109 116D 11B7;
+C20D;C20D;1109 116D 11B8;C20D;1109 116D 11B8;
+C20E;C20E;1109 116D 11B9;C20E;1109 116D 11B9;
+C20F;C20F;1109 116D 11BA;C20F;1109 116D 11BA;
+C210;C210;1109 116D 11BB;C210;1109 116D 11BB;
+C211;C211;1109 116D 11BC;C211;1109 116D 11BC;
+C212;C212;1109 116D 11BD;C212;1109 116D 11BD;
+C213;C213;1109 116D 11BE;C213;1109 116D 11BE;
+C214;C214;1109 116D 11BF;C214;1109 116D 11BF;
+C215;C215;1109 116D 11C0;C215;1109 116D 11C0;
+C216;C216;1109 116D 11C1;C216;1109 116D 11C1;
+C217;C217;1109 116D 11C2;C217;1109 116D 11C2;
+C218;C218;1109 116E;C218;1109 116E;
+C219;C219;1109 116E 11A8;C219;1109 116E 11A8;
+C21A;C21A;1109 116E 11A9;C21A;1109 116E 11A9;
+C21B;C21B;1109 116E 11AA;C21B;1109 116E 11AA;
+C21C;C21C;1109 116E 11AB;C21C;1109 116E 11AB;
+C21D;C21D;1109 116E 11AC;C21D;1109 116E 11AC;
+C21E;C21E;1109 116E 11AD;C21E;1109 116E 11AD;
+C21F;C21F;1109 116E 11AE;C21F;1109 116E 11AE;
+C220;C220;1109 116E 11AF;C220;1109 116E 11AF;
+C221;C221;1109 116E 11B0;C221;1109 116E 11B0;
+C222;C222;1109 116E 11B1;C222;1109 116E 11B1;
+C223;C223;1109 116E 11B2;C223;1109 116E 11B2;
+C224;C224;1109 116E 11B3;C224;1109 116E 11B3;
+C225;C225;1109 116E 11B4;C225;1109 116E 11B4;
+C226;C226;1109 116E 11B5;C226;1109 116E 11B5;
+C227;C227;1109 116E 11B6;C227;1109 116E 11B6;
+C228;C228;1109 116E 11B7;C228;1109 116E 11B7;
+C229;C229;1109 116E 11B8;C229;1109 116E 11B8;
+C22A;C22A;1109 116E 11B9;C22A;1109 116E 11B9;
+C22B;C22B;1109 116E 11BA;C22B;1109 116E 11BA;
+C22C;C22C;1109 116E 11BB;C22C;1109 116E 11BB;
+C22D;C22D;1109 116E 11BC;C22D;1109 116E 11BC;
+C22E;C22E;1109 116E 11BD;C22E;1109 116E 11BD;
+C22F;C22F;1109 116E 11BE;C22F;1109 116E 11BE;
+C230;C230;1109 116E 11BF;C230;1109 116E 11BF;
+C231;C231;1109 116E 11C0;C231;1109 116E 11C0;
+C232;C232;1109 116E 11C1;C232;1109 116E 11C1;
+C233;C233;1109 116E 11C2;C233;1109 116E 11C2;
+C234;C234;1109 116F;C234;1109 116F;
+C235;C235;1109 116F 11A8;C235;1109 116F 11A8;
+C236;C236;1109 116F 11A9;C236;1109 116F 11A9;
+C237;C237;1109 116F 11AA;C237;1109 116F 11AA;
+C238;C238;1109 116F 11AB;C238;1109 116F 11AB;
+C239;C239;1109 116F 11AC;C239;1109 116F 11AC;
+C23A;C23A;1109 116F 11AD;C23A;1109 116F 11AD;
+C23B;C23B;1109 116F 11AE;C23B;1109 116F 11AE;
+C23C;C23C;1109 116F 11AF;C23C;1109 116F 11AF;
+C23D;C23D;1109 116F 11B0;C23D;1109 116F 11B0;
+C23E;C23E;1109 116F 11B1;C23E;1109 116F 11B1;
+C23F;C23F;1109 116F 11B2;C23F;1109 116F 11B2;
+C240;C240;1109 116F 11B3;C240;1109 116F 11B3;
+C241;C241;1109 116F 11B4;C241;1109 116F 11B4;
+C242;C242;1109 116F 11B5;C242;1109 116F 11B5;
+C243;C243;1109 116F 11B6;C243;1109 116F 11B6;
+C244;C244;1109 116F 11B7;C244;1109 116F 11B7;
+C245;C245;1109 116F 11B8;C245;1109 116F 11B8;
+C246;C246;1109 116F 11B9;C246;1109 116F 11B9;
+C247;C247;1109 116F 11BA;C247;1109 116F 11BA;
+C248;C248;1109 116F 11BB;C248;1109 116F 11BB;
+C249;C249;1109 116F 11BC;C249;1109 116F 11BC;
+C24A;C24A;1109 116F 11BD;C24A;1109 116F 11BD;
+C24B;C24B;1109 116F 11BE;C24B;1109 116F 11BE;
+C24C;C24C;1109 116F 11BF;C24C;1109 116F 11BF;
+C24D;C24D;1109 116F 11C0;C24D;1109 116F 11C0;
+C24E;C24E;1109 116F 11C1;C24E;1109 116F 11C1;
+C24F;C24F;1109 116F 11C2;C24F;1109 116F 11C2;
+C250;C250;1109 1170;C250;1109 1170;
+C251;C251;1109 1170 11A8;C251;1109 1170 11A8;
+C252;C252;1109 1170 11A9;C252;1109 1170 11A9;
+C253;C253;1109 1170 11AA;C253;1109 1170 11AA;
+C254;C254;1109 1170 11AB;C254;1109 1170 11AB;
+C255;C255;1109 1170 11AC;C255;1109 1170 11AC;
+C256;C256;1109 1170 11AD;C256;1109 1170 11AD;
+C257;C257;1109 1170 11AE;C257;1109 1170 11AE;
+C258;C258;1109 1170 11AF;C258;1109 1170 11AF;
+C259;C259;1109 1170 11B0;C259;1109 1170 11B0;
+C25A;C25A;1109 1170 11B1;C25A;1109 1170 11B1;
+C25B;C25B;1109 1170 11B2;C25B;1109 1170 11B2;
+C25C;C25C;1109 1170 11B3;C25C;1109 1170 11B3;
+C25D;C25D;1109 1170 11B4;C25D;1109 1170 11B4;
+C25E;C25E;1109 1170 11B5;C25E;1109 1170 11B5;
+C25F;C25F;1109 1170 11B6;C25F;1109 1170 11B6;
+C260;C260;1109 1170 11B7;C260;1109 1170 11B7;
+C261;C261;1109 1170 11B8;C261;1109 1170 11B8;
+C262;C262;1109 1170 11B9;C262;1109 1170 11B9;
+C263;C263;1109 1170 11BA;C263;1109 1170 11BA;
+C264;C264;1109 1170 11BB;C264;1109 1170 11BB;
+C265;C265;1109 1170 11BC;C265;1109 1170 11BC;
+C266;C266;1109 1170 11BD;C266;1109 1170 11BD;
+C267;C267;1109 1170 11BE;C267;1109 1170 11BE;
+C268;C268;1109 1170 11BF;C268;1109 1170 11BF;
+C269;C269;1109 1170 11C0;C269;1109 1170 11C0;
+C26A;C26A;1109 1170 11C1;C26A;1109 1170 11C1;
+C26B;C26B;1109 1170 11C2;C26B;1109 1170 11C2;
+C26C;C26C;1109 1171;C26C;1109 1171;
+C26D;C26D;1109 1171 11A8;C26D;1109 1171 11A8;
+C26E;C26E;1109 1171 11A9;C26E;1109 1171 11A9;
+C26F;C26F;1109 1171 11AA;C26F;1109 1171 11AA;
+C270;C270;1109 1171 11AB;C270;1109 1171 11AB;
+C271;C271;1109 1171 11AC;C271;1109 1171 11AC;
+C272;C272;1109 1171 11AD;C272;1109 1171 11AD;
+C273;C273;1109 1171 11AE;C273;1109 1171 11AE;
+C274;C274;1109 1171 11AF;C274;1109 1171 11AF;
+C275;C275;1109 1171 11B0;C275;1109 1171 11B0;
+C276;C276;1109 1171 11B1;C276;1109 1171 11B1;
+C277;C277;1109 1171 11B2;C277;1109 1171 11B2;
+C278;C278;1109 1171 11B3;C278;1109 1171 11B3;
+C279;C279;1109 1171 11B4;C279;1109 1171 11B4;
+C27A;C27A;1109 1171 11B5;C27A;1109 1171 11B5;
+C27B;C27B;1109 1171 11B6;C27B;1109 1171 11B6;
+C27C;C27C;1109 1171 11B7;C27C;1109 1171 11B7;
+C27D;C27D;1109 1171 11B8;C27D;1109 1171 11B8;
+C27E;C27E;1109 1171 11B9;C27E;1109 1171 11B9;
+C27F;C27F;1109 1171 11BA;C27F;1109 1171 11BA;
+C280;C280;1109 1171 11BB;C280;1109 1171 11BB;
+C281;C281;1109 1171 11BC;C281;1109 1171 11BC;
+C282;C282;1109 1171 11BD;C282;1109 1171 11BD;
+C283;C283;1109 1171 11BE;C283;1109 1171 11BE;
+C284;C284;1109 1171 11BF;C284;1109 1171 11BF;
+C285;C285;1109 1171 11C0;C285;1109 1171 11C0;
+C286;C286;1109 1171 11C1;C286;1109 1171 11C1;
+C287;C287;1109 1171 11C2;C287;1109 1171 11C2;
+C288;C288;1109 1172;C288;1109 1172;
+C289;C289;1109 1172 11A8;C289;1109 1172 11A8;
+C28A;C28A;1109 1172 11A9;C28A;1109 1172 11A9;
+C28B;C28B;1109 1172 11AA;C28B;1109 1172 11AA;
+C28C;C28C;1109 1172 11AB;C28C;1109 1172 11AB;
+C28D;C28D;1109 1172 11AC;C28D;1109 1172 11AC;
+C28E;C28E;1109 1172 11AD;C28E;1109 1172 11AD;
+C28F;C28F;1109 1172 11AE;C28F;1109 1172 11AE;
+C290;C290;1109 1172 11AF;C290;1109 1172 11AF;
+C291;C291;1109 1172 11B0;C291;1109 1172 11B0;
+C292;C292;1109 1172 11B1;C292;1109 1172 11B1;
+C293;C293;1109 1172 11B2;C293;1109 1172 11B2;
+C294;C294;1109 1172 11B3;C294;1109 1172 11B3;
+C295;C295;1109 1172 11B4;C295;1109 1172 11B4;
+C296;C296;1109 1172 11B5;C296;1109 1172 11B5;
+C297;C297;1109 1172 11B6;C297;1109 1172 11B6;
+C298;C298;1109 1172 11B7;C298;1109 1172 11B7;
+C299;C299;1109 1172 11B8;C299;1109 1172 11B8;
+C29A;C29A;1109 1172 11B9;C29A;1109 1172 11B9;
+C29B;C29B;1109 1172 11BA;C29B;1109 1172 11BA;
+C29C;C29C;1109 1172 11BB;C29C;1109 1172 11BB;
+C29D;C29D;1109 1172 11BC;C29D;1109 1172 11BC;
+C29E;C29E;1109 1172 11BD;C29E;1109 1172 11BD;
+C29F;C29F;1109 1172 11BE;C29F;1109 1172 11BE;
+C2A0;C2A0;1109 1172 11BF;C2A0;1109 1172 11BF;
+C2A1;C2A1;1109 1172 11C0;C2A1;1109 1172 11C0;
+C2A2;C2A2;1109 1172 11C1;C2A2;1109 1172 11C1;
+C2A3;C2A3;1109 1172 11C2;C2A3;1109 1172 11C2;
+C2A4;C2A4;1109 1173;C2A4;1109 1173;
+C2A5;C2A5;1109 1173 11A8;C2A5;1109 1173 11A8;
+C2A6;C2A6;1109 1173 11A9;C2A6;1109 1173 11A9;
+C2A7;C2A7;1109 1173 11AA;C2A7;1109 1173 11AA;
+C2A8;C2A8;1109 1173 11AB;C2A8;1109 1173 11AB;
+C2A9;C2A9;1109 1173 11AC;C2A9;1109 1173 11AC;
+C2AA;C2AA;1109 1173 11AD;C2AA;1109 1173 11AD;
+C2AB;C2AB;1109 1173 11AE;C2AB;1109 1173 11AE;
+C2AC;C2AC;1109 1173 11AF;C2AC;1109 1173 11AF;
+C2AD;C2AD;1109 1173 11B0;C2AD;1109 1173 11B0;
+C2AE;C2AE;1109 1173 11B1;C2AE;1109 1173 11B1;
+C2AF;C2AF;1109 1173 11B2;C2AF;1109 1173 11B2;
+C2B0;C2B0;1109 1173 11B3;C2B0;1109 1173 11B3;
+C2B1;C2B1;1109 1173 11B4;C2B1;1109 1173 11B4;
+C2B2;C2B2;1109 1173 11B5;C2B2;1109 1173 11B5;
+C2B3;C2B3;1109 1173 11B6;C2B3;1109 1173 11B6;
+C2B4;C2B4;1109 1173 11B7;C2B4;1109 1173 11B7;
+C2B5;C2B5;1109 1173 11B8;C2B5;1109 1173 11B8;
+C2B6;C2B6;1109 1173 11B9;C2B6;1109 1173 11B9;
+C2B7;C2B7;1109 1173 11BA;C2B7;1109 1173 11BA;
+C2B8;C2B8;1109 1173 11BB;C2B8;1109 1173 11BB;
+C2B9;C2B9;1109 1173 11BC;C2B9;1109 1173 11BC;
+C2BA;C2BA;1109 1173 11BD;C2BA;1109 1173 11BD;
+C2BB;C2BB;1109 1173 11BE;C2BB;1109 1173 11BE;
+C2BC;C2BC;1109 1173 11BF;C2BC;1109 1173 11BF;
+C2BD;C2BD;1109 1173 11C0;C2BD;1109 1173 11C0;
+C2BE;C2BE;1109 1173 11C1;C2BE;1109 1173 11C1;
+C2BF;C2BF;1109 1173 11C2;C2BF;1109 1173 11C2;
+C2C0;C2C0;1109 1174;C2C0;1109 1174;
+C2C1;C2C1;1109 1174 11A8;C2C1;1109 1174 11A8;
+C2C2;C2C2;1109 1174 11A9;C2C2;1109 1174 11A9;
+C2C3;C2C3;1109 1174 11AA;C2C3;1109 1174 11AA;
+C2C4;C2C4;1109 1174 11AB;C2C4;1109 1174 11AB;
+C2C5;C2C5;1109 1174 11AC;C2C5;1109 1174 11AC;
+C2C6;C2C6;1109 1174 11AD;C2C6;1109 1174 11AD;
+C2C7;C2C7;1109 1174 11AE;C2C7;1109 1174 11AE;
+C2C8;C2C8;1109 1174 11AF;C2C8;1109 1174 11AF;
+C2C9;C2C9;1109 1174 11B0;C2C9;1109 1174 11B0;
+C2CA;C2CA;1109 1174 11B1;C2CA;1109 1174 11B1;
+C2CB;C2CB;1109 1174 11B2;C2CB;1109 1174 11B2;
+C2CC;C2CC;1109 1174 11B3;C2CC;1109 1174 11B3;
+C2CD;C2CD;1109 1174 11B4;C2CD;1109 1174 11B4;
+C2CE;C2CE;1109 1174 11B5;C2CE;1109 1174 11B5;
+C2CF;C2CF;1109 1174 11B6;C2CF;1109 1174 11B6;
+C2D0;C2D0;1109 1174 11B7;C2D0;1109 1174 11B7;
+C2D1;C2D1;1109 1174 11B8;C2D1;1109 1174 11B8;
+C2D2;C2D2;1109 1174 11B9;C2D2;1109 1174 11B9;
+C2D3;C2D3;1109 1174 11BA;C2D3;1109 1174 11BA;
+C2D4;C2D4;1109 1174 11BB;C2D4;1109 1174 11BB;
+C2D5;C2D5;1109 1174 11BC;C2D5;1109 1174 11BC;
+C2D6;C2D6;1109 1174 11BD;C2D6;1109 1174 11BD;
+C2D7;C2D7;1109 1174 11BE;C2D7;1109 1174 11BE;
+C2D8;C2D8;1109 1174 11BF;C2D8;1109 1174 11BF;
+C2D9;C2D9;1109 1174 11C0;C2D9;1109 1174 11C0;
+C2DA;C2DA;1109 1174 11C1;C2DA;1109 1174 11C1;
+C2DB;C2DB;1109 1174 11C2;C2DB;1109 1174 11C2;
+C2DC;C2DC;1109 1175;C2DC;1109 1175;
+C2DD;C2DD;1109 1175 11A8;C2DD;1109 1175 11A8;
+C2DE;C2DE;1109 1175 11A9;C2DE;1109 1175 11A9;
+C2DF;C2DF;1109 1175 11AA;C2DF;1109 1175 11AA;
+C2E0;C2E0;1109 1175 11AB;C2E0;1109 1175 11AB;
+C2E1;C2E1;1109 1175 11AC;C2E1;1109 1175 11AC;
+C2E2;C2E2;1109 1175 11AD;C2E2;1109 1175 11AD;
+C2E3;C2E3;1109 1175 11AE;C2E3;1109 1175 11AE;
+C2E4;C2E4;1109 1175 11AF;C2E4;1109 1175 11AF;
+C2E5;C2E5;1109 1175 11B0;C2E5;1109 1175 11B0;
+C2E6;C2E6;1109 1175 11B1;C2E6;1109 1175 11B1;
+C2E7;C2E7;1109 1175 11B2;C2E7;1109 1175 11B2;
+C2E8;C2E8;1109 1175 11B3;C2E8;1109 1175 11B3;
+C2E9;C2E9;1109 1175 11B4;C2E9;1109 1175 11B4;
+C2EA;C2EA;1109 1175 11B5;C2EA;1109 1175 11B5;
+C2EB;C2EB;1109 1175 11B6;C2EB;1109 1175 11B6;
+C2EC;C2EC;1109 1175 11B7;C2EC;1109 1175 11B7;
+C2ED;C2ED;1109 1175 11B8;C2ED;1109 1175 11B8;
+C2EE;C2EE;1109 1175 11B9;C2EE;1109 1175 11B9;
+C2EF;C2EF;1109 1175 11BA;C2EF;1109 1175 11BA;
+C2F0;C2F0;1109 1175 11BB;C2F0;1109 1175 11BB;
+C2F1;C2F1;1109 1175 11BC;C2F1;1109 1175 11BC;
+C2F2;C2F2;1109 1175 11BD;C2F2;1109 1175 11BD;
+C2F3;C2F3;1109 1175 11BE;C2F3;1109 1175 11BE;
+C2F4;C2F4;1109 1175 11BF;C2F4;1109 1175 11BF;
+C2F5;C2F5;1109 1175 11C0;C2F5;1109 1175 11C0;
+C2F6;C2F6;1109 1175 11C1;C2F6;1109 1175 11C1;
+C2F7;C2F7;1109 1175 11C2;C2F7;1109 1175 11C2;
+C2F8;C2F8;110A 1161;C2F8;110A 1161;
+C2F9;C2F9;110A 1161 11A8;C2F9;110A 1161 11A8;
+C2FA;C2FA;110A 1161 11A9;C2FA;110A 1161 11A9;
+C2FB;C2FB;110A 1161 11AA;C2FB;110A 1161 11AA;
+C2FC;C2FC;110A 1161 11AB;C2FC;110A 1161 11AB;
+C2FD;C2FD;110A 1161 11AC;C2FD;110A 1161 11AC;
+C2FE;C2FE;110A 1161 11AD;C2FE;110A 1161 11AD;
+C2FF;C2FF;110A 1161 11AE;C2FF;110A 1161 11AE;
+C300;C300;110A 1161 11AF;C300;110A 1161 11AF;
+C301;C301;110A 1161 11B0;C301;110A 1161 11B0;
+C302;C302;110A 1161 11B1;C302;110A 1161 11B1;
+C303;C303;110A 1161 11B2;C303;110A 1161 11B2;
+C304;C304;110A 1161 11B3;C304;110A 1161 11B3;
+C305;C305;110A 1161 11B4;C305;110A 1161 11B4;
+C306;C306;110A 1161 11B5;C306;110A 1161 11B5;
+C307;C307;110A 1161 11B6;C307;110A 1161 11B6;
+C308;C308;110A 1161 11B7;C308;110A 1161 11B7;
+C309;C309;110A 1161 11B8;C309;110A 1161 11B8;
+C30A;C30A;110A 1161 11B9;C30A;110A 1161 11B9;
+C30B;C30B;110A 1161 11BA;C30B;110A 1161 11BA;
+C30C;C30C;110A 1161 11BB;C30C;110A 1161 11BB;
+C30D;C30D;110A 1161 11BC;C30D;110A 1161 11BC;
+C30E;C30E;110A 1161 11BD;C30E;110A 1161 11BD;
+C30F;C30F;110A 1161 11BE;C30F;110A 1161 11BE;
+C310;C310;110A 1161 11BF;C310;110A 1161 11BF;
+C311;C311;110A 1161 11C0;C311;110A 1161 11C0;
+C312;C312;110A 1161 11C1;C312;110A 1161 11C1;
+C313;C313;110A 1161 11C2;C313;110A 1161 11C2;
+C314;C314;110A 1162;C314;110A 1162;
+C315;C315;110A 1162 11A8;C315;110A 1162 11A8;
+C316;C316;110A 1162 11A9;C316;110A 1162 11A9;
+C317;C317;110A 1162 11AA;C317;110A 1162 11AA;
+C318;C318;110A 1162 11AB;C318;110A 1162 11AB;
+C319;C319;110A 1162 11AC;C319;110A 1162 11AC;
+C31A;C31A;110A 1162 11AD;C31A;110A 1162 11AD;
+C31B;C31B;110A 1162 11AE;C31B;110A 1162 11AE;
+C31C;C31C;110A 1162 11AF;C31C;110A 1162 11AF;
+C31D;C31D;110A 1162 11B0;C31D;110A 1162 11B0;
+C31E;C31E;110A 1162 11B1;C31E;110A 1162 11B1;
+C31F;C31F;110A 1162 11B2;C31F;110A 1162 11B2;
+C320;C320;110A 1162 11B3;C320;110A 1162 11B3;
+C321;C321;110A 1162 11B4;C321;110A 1162 11B4;
+C322;C322;110A 1162 11B5;C322;110A 1162 11B5;
+C323;C323;110A 1162 11B6;C323;110A 1162 11B6;
+C324;C324;110A 1162 11B7;C324;110A 1162 11B7;
+C325;C325;110A 1162 11B8;C325;110A 1162 11B8;
+C326;C326;110A 1162 11B9;C326;110A 1162 11B9;
+C327;C327;110A 1162 11BA;C327;110A 1162 11BA;
+C328;C328;110A 1162 11BB;C328;110A 1162 11BB;
+C329;C329;110A 1162 11BC;C329;110A 1162 11BC;
+C32A;C32A;110A 1162 11BD;C32A;110A 1162 11BD;
+C32B;C32B;110A 1162 11BE;C32B;110A 1162 11BE;
+C32C;C32C;110A 1162 11BF;C32C;110A 1162 11BF;
+C32D;C32D;110A 1162 11C0;C32D;110A 1162 11C0;
+C32E;C32E;110A 1162 11C1;C32E;110A 1162 11C1;
+C32F;C32F;110A 1162 11C2;C32F;110A 1162 11C2;
+C330;C330;110A 1163;C330;110A 1163;
+C331;C331;110A 1163 11A8;C331;110A 1163 11A8;
+C332;C332;110A 1163 11A9;C332;110A 1163 11A9;
+C333;C333;110A 1163 11AA;C333;110A 1163 11AA;
+C334;C334;110A 1163 11AB;C334;110A 1163 11AB;
+C335;C335;110A 1163 11AC;C335;110A 1163 11AC;
+C336;C336;110A 1163 11AD;C336;110A 1163 11AD;
+C337;C337;110A 1163 11AE;C337;110A 1163 11AE;
+C338;C338;110A 1163 11AF;C338;110A 1163 11AF;
+C339;C339;110A 1163 11B0;C339;110A 1163 11B0;
+C33A;C33A;110A 1163 11B1;C33A;110A 1163 11B1;
+C33B;C33B;110A 1163 11B2;C33B;110A 1163 11B2;
+C33C;C33C;110A 1163 11B3;C33C;110A 1163 11B3;
+C33D;C33D;110A 1163 11B4;C33D;110A 1163 11B4;
+C33E;C33E;110A 1163 11B5;C33E;110A 1163 11B5;
+C33F;C33F;110A 1163 11B6;C33F;110A 1163 11B6;
+C340;C340;110A 1163 11B7;C340;110A 1163 11B7;
+C341;C341;110A 1163 11B8;C341;110A 1163 11B8;
+C342;C342;110A 1163 11B9;C342;110A 1163 11B9;
+C343;C343;110A 1163 11BA;C343;110A 1163 11BA;
+C344;C344;110A 1163 11BB;C344;110A 1163 11BB;
+C345;C345;110A 1163 11BC;C345;110A 1163 11BC;
+C346;C346;110A 1163 11BD;C346;110A 1163 11BD;
+C347;C347;110A 1163 11BE;C347;110A 1163 11BE;
+C348;C348;110A 1163 11BF;C348;110A 1163 11BF;
+C349;C349;110A 1163 11C0;C349;110A 1163 11C0;
+C34A;C34A;110A 1163 11C1;C34A;110A 1163 11C1;
+C34B;C34B;110A 1163 11C2;C34B;110A 1163 11C2;
+C34C;C34C;110A 1164;C34C;110A 1164;
+C34D;C34D;110A 1164 11A8;C34D;110A 1164 11A8;
+C34E;C34E;110A 1164 11A9;C34E;110A 1164 11A9;
+C34F;C34F;110A 1164 11AA;C34F;110A 1164 11AA;
+C350;C350;110A 1164 11AB;C350;110A 1164 11AB;
+C351;C351;110A 1164 11AC;C351;110A 1164 11AC;
+C352;C352;110A 1164 11AD;C352;110A 1164 11AD;
+C353;C353;110A 1164 11AE;C353;110A 1164 11AE;
+C354;C354;110A 1164 11AF;C354;110A 1164 11AF;
+C355;C355;110A 1164 11B0;C355;110A 1164 11B0;
+C356;C356;110A 1164 11B1;C356;110A 1164 11B1;
+C357;C357;110A 1164 11B2;C357;110A 1164 11B2;
+C358;C358;110A 1164 11B3;C358;110A 1164 11B3;
+C359;C359;110A 1164 11B4;C359;110A 1164 11B4;
+C35A;C35A;110A 1164 11B5;C35A;110A 1164 11B5;
+C35B;C35B;110A 1164 11B6;C35B;110A 1164 11B6;
+C35C;C35C;110A 1164 11B7;C35C;110A 1164 11B7;
+C35D;C35D;110A 1164 11B8;C35D;110A 1164 11B8;
+C35E;C35E;110A 1164 11B9;C35E;110A 1164 11B9;
+C35F;C35F;110A 1164 11BA;C35F;110A 1164 11BA;
+C360;C360;110A 1164 11BB;C360;110A 1164 11BB;
+C361;C361;110A 1164 11BC;C361;110A 1164 11BC;
+C362;C362;110A 1164 11BD;C362;110A 1164 11BD;
+C363;C363;110A 1164 11BE;C363;110A 1164 11BE;
+C364;C364;110A 1164 11BF;C364;110A 1164 11BF;
+C365;C365;110A 1164 11C0;C365;110A 1164 11C0;
+C366;C366;110A 1164 11C1;C366;110A 1164 11C1;
+C367;C367;110A 1164 11C2;C367;110A 1164 11C2;
+C368;C368;110A 1165;C368;110A 1165;
+C369;C369;110A 1165 11A8;C369;110A 1165 11A8;
+C36A;C36A;110A 1165 11A9;C36A;110A 1165 11A9;
+C36B;C36B;110A 1165 11AA;C36B;110A 1165 11AA;
+C36C;C36C;110A 1165 11AB;C36C;110A 1165 11AB;
+C36D;C36D;110A 1165 11AC;C36D;110A 1165 11AC;
+C36E;C36E;110A 1165 11AD;C36E;110A 1165 11AD;
+C36F;C36F;110A 1165 11AE;C36F;110A 1165 11AE;
+C370;C370;110A 1165 11AF;C370;110A 1165 11AF;
+C371;C371;110A 1165 11B0;C371;110A 1165 11B0;
+C372;C372;110A 1165 11B1;C372;110A 1165 11B1;
+C373;C373;110A 1165 11B2;C373;110A 1165 11B2;
+C374;C374;110A 1165 11B3;C374;110A 1165 11B3;
+C375;C375;110A 1165 11B4;C375;110A 1165 11B4;
+C376;C376;110A 1165 11B5;C376;110A 1165 11B5;
+C377;C377;110A 1165 11B6;C377;110A 1165 11B6;
+C378;C378;110A 1165 11B7;C378;110A 1165 11B7;
+C379;C379;110A 1165 11B8;C379;110A 1165 11B8;
+C37A;C37A;110A 1165 11B9;C37A;110A 1165 11B9;
+C37B;C37B;110A 1165 11BA;C37B;110A 1165 11BA;
+C37C;C37C;110A 1165 11BB;C37C;110A 1165 11BB;
+C37D;C37D;110A 1165 11BC;C37D;110A 1165 11BC;
+C37E;C37E;110A 1165 11BD;C37E;110A 1165 11BD;
+C37F;C37F;110A 1165 11BE;C37F;110A 1165 11BE;
+C380;C380;110A 1165 11BF;C380;110A 1165 11BF;
+C381;C381;110A 1165 11C0;C381;110A 1165 11C0;
+C382;C382;110A 1165 11C1;C382;110A 1165 11C1;
+C383;C383;110A 1165 11C2;C383;110A 1165 11C2;
+C384;C384;110A 1166;C384;110A 1166;
+C385;C385;110A 1166 11A8;C385;110A 1166 11A8;
+C386;C386;110A 1166 11A9;C386;110A 1166 11A9;
+C387;C387;110A 1166 11AA;C387;110A 1166 11AA;
+C388;C388;110A 1166 11AB;C388;110A 1166 11AB;
+C389;C389;110A 1166 11AC;C389;110A 1166 11AC;
+C38A;C38A;110A 1166 11AD;C38A;110A 1166 11AD;
+C38B;C38B;110A 1166 11AE;C38B;110A 1166 11AE;
+C38C;C38C;110A 1166 11AF;C38C;110A 1166 11AF;
+C38D;C38D;110A 1166 11B0;C38D;110A 1166 11B0;
+C38E;C38E;110A 1166 11B1;C38E;110A 1166 11B1;
+C38F;C38F;110A 1166 11B2;C38F;110A 1166 11B2;
+C390;C390;110A 1166 11B3;C390;110A 1166 11B3;
+C391;C391;110A 1166 11B4;C391;110A 1166 11B4;
+C392;C392;110A 1166 11B5;C392;110A 1166 11B5;
+C393;C393;110A 1166 11B6;C393;110A 1166 11B6;
+C394;C394;110A 1166 11B7;C394;110A 1166 11B7;
+C395;C395;110A 1166 11B8;C395;110A 1166 11B8;
+C396;C396;110A 1166 11B9;C396;110A 1166 11B9;
+C397;C397;110A 1166 11BA;C397;110A 1166 11BA;
+C398;C398;110A 1166 11BB;C398;110A 1166 11BB;
+C399;C399;110A 1166 11BC;C399;110A 1166 11BC;
+C39A;C39A;110A 1166 11BD;C39A;110A 1166 11BD;
+C39B;C39B;110A 1166 11BE;C39B;110A 1166 11BE;
+C39C;C39C;110A 1166 11BF;C39C;110A 1166 11BF;
+C39D;C39D;110A 1166 11C0;C39D;110A 1166 11C0;
+C39E;C39E;110A 1166 11C1;C39E;110A 1166 11C1;
+C39F;C39F;110A 1166 11C2;C39F;110A 1166 11C2;
+C3A0;C3A0;110A 1167;C3A0;110A 1167;
+C3A1;C3A1;110A 1167 11A8;C3A1;110A 1167 11A8;
+C3A2;C3A2;110A 1167 11A9;C3A2;110A 1167 11A9;
+C3A3;C3A3;110A 1167 11AA;C3A3;110A 1167 11AA;
+C3A4;C3A4;110A 1167 11AB;C3A4;110A 1167 11AB;
+C3A5;C3A5;110A 1167 11AC;C3A5;110A 1167 11AC;
+C3A6;C3A6;110A 1167 11AD;C3A6;110A 1167 11AD;
+C3A7;C3A7;110A 1167 11AE;C3A7;110A 1167 11AE;
+C3A8;C3A8;110A 1167 11AF;C3A8;110A 1167 11AF;
+C3A9;C3A9;110A 1167 11B0;C3A9;110A 1167 11B0;
+C3AA;C3AA;110A 1167 11B1;C3AA;110A 1167 11B1;
+C3AB;C3AB;110A 1167 11B2;C3AB;110A 1167 11B2;
+C3AC;C3AC;110A 1167 11B3;C3AC;110A 1167 11B3;
+C3AD;C3AD;110A 1167 11B4;C3AD;110A 1167 11B4;
+C3AE;C3AE;110A 1167 11B5;C3AE;110A 1167 11B5;
+C3AF;C3AF;110A 1167 11B6;C3AF;110A 1167 11B6;
+C3B0;C3B0;110A 1167 11B7;C3B0;110A 1167 11B7;
+C3B1;C3B1;110A 1167 11B8;C3B1;110A 1167 11B8;
+C3B2;C3B2;110A 1167 11B9;C3B2;110A 1167 11B9;
+C3B3;C3B3;110A 1167 11BA;C3B3;110A 1167 11BA;
+C3B4;C3B4;110A 1167 11BB;C3B4;110A 1167 11BB;
+C3B5;C3B5;110A 1167 11BC;C3B5;110A 1167 11BC;
+C3B6;C3B6;110A 1167 11BD;C3B6;110A 1167 11BD;
+C3B7;C3B7;110A 1167 11BE;C3B7;110A 1167 11BE;
+C3B8;C3B8;110A 1167 11BF;C3B8;110A 1167 11BF;
+C3B9;C3B9;110A 1167 11C0;C3B9;110A 1167 11C0;
+C3BA;C3BA;110A 1167 11C1;C3BA;110A 1167 11C1;
+C3BB;C3BB;110A 1167 11C2;C3BB;110A 1167 11C2;
+C3BC;C3BC;110A 1168;C3BC;110A 1168;
+C3BD;C3BD;110A 1168 11A8;C3BD;110A 1168 11A8;
+C3BE;C3BE;110A 1168 11A9;C3BE;110A 1168 11A9;
+C3BF;C3BF;110A 1168 11AA;C3BF;110A 1168 11AA;
+C3C0;C3C0;110A 1168 11AB;C3C0;110A 1168 11AB;
+C3C1;C3C1;110A 1168 11AC;C3C1;110A 1168 11AC;
+C3C2;C3C2;110A 1168 11AD;C3C2;110A 1168 11AD;
+C3C3;C3C3;110A 1168 11AE;C3C3;110A 1168 11AE;
+C3C4;C3C4;110A 1168 11AF;C3C4;110A 1168 11AF;
+C3C5;C3C5;110A 1168 11B0;C3C5;110A 1168 11B0;
+C3C6;C3C6;110A 1168 11B1;C3C6;110A 1168 11B1;
+C3C7;C3C7;110A 1168 11B2;C3C7;110A 1168 11B2;
+C3C8;C3C8;110A 1168 11B3;C3C8;110A 1168 11B3;
+C3C9;C3C9;110A 1168 11B4;C3C9;110A 1168 11B4;
+C3CA;C3CA;110A 1168 11B5;C3CA;110A 1168 11B5;
+C3CB;C3CB;110A 1168 11B6;C3CB;110A 1168 11B6;
+C3CC;C3CC;110A 1168 11B7;C3CC;110A 1168 11B7;
+C3CD;C3CD;110A 1168 11B8;C3CD;110A 1168 11B8;
+C3CE;C3CE;110A 1168 11B9;C3CE;110A 1168 11B9;
+C3CF;C3CF;110A 1168 11BA;C3CF;110A 1168 11BA;
+C3D0;C3D0;110A 1168 11BB;C3D0;110A 1168 11BB;
+C3D1;C3D1;110A 1168 11BC;C3D1;110A 1168 11BC;
+C3D2;C3D2;110A 1168 11BD;C3D2;110A 1168 11BD;
+C3D3;C3D3;110A 1168 11BE;C3D3;110A 1168 11BE;
+C3D4;C3D4;110A 1168 11BF;C3D4;110A 1168 11BF;
+C3D5;C3D5;110A 1168 11C0;C3D5;110A 1168 11C0;
+C3D6;C3D6;110A 1168 11C1;C3D6;110A 1168 11C1;
+C3D7;C3D7;110A 1168 11C2;C3D7;110A 1168 11C2;
+C3D8;C3D8;110A 1169;C3D8;110A 1169;
+C3D9;C3D9;110A 1169 11A8;C3D9;110A 1169 11A8;
+C3DA;C3DA;110A 1169 11A9;C3DA;110A 1169 11A9;
+C3DB;C3DB;110A 1169 11AA;C3DB;110A 1169 11AA;
+C3DC;C3DC;110A 1169 11AB;C3DC;110A 1169 11AB;
+C3DD;C3DD;110A 1169 11AC;C3DD;110A 1169 11AC;
+C3DE;C3DE;110A 1169 11AD;C3DE;110A 1169 11AD;
+C3DF;C3DF;110A 1169 11AE;C3DF;110A 1169 11AE;
+C3E0;C3E0;110A 1169 11AF;C3E0;110A 1169 11AF;
+C3E1;C3E1;110A 1169 11B0;C3E1;110A 1169 11B0;
+C3E2;C3E2;110A 1169 11B1;C3E2;110A 1169 11B1;
+C3E3;C3E3;110A 1169 11B2;C3E3;110A 1169 11B2;
+C3E4;C3E4;110A 1169 11B3;C3E4;110A 1169 11B3;
+C3E5;C3E5;110A 1169 11B4;C3E5;110A 1169 11B4;
+C3E6;C3E6;110A 1169 11B5;C3E6;110A 1169 11B5;
+C3E7;C3E7;110A 1169 11B6;C3E7;110A 1169 11B6;
+C3E8;C3E8;110A 1169 11B7;C3E8;110A 1169 11B7;
+C3E9;C3E9;110A 1169 11B8;C3E9;110A 1169 11B8;
+C3EA;C3EA;110A 1169 11B9;C3EA;110A 1169 11B9;
+C3EB;C3EB;110A 1169 11BA;C3EB;110A 1169 11BA;
+C3EC;C3EC;110A 1169 11BB;C3EC;110A 1169 11BB;
+C3ED;C3ED;110A 1169 11BC;C3ED;110A 1169 11BC;
+C3EE;C3EE;110A 1169 11BD;C3EE;110A 1169 11BD;
+C3EF;C3EF;110A 1169 11BE;C3EF;110A 1169 11BE;
+C3F0;C3F0;110A 1169 11BF;C3F0;110A 1169 11BF;
+C3F1;C3F1;110A 1169 11C0;C3F1;110A 1169 11C0;
+C3F2;C3F2;110A 1169 11C1;C3F2;110A 1169 11C1;
+C3F3;C3F3;110A 1169 11C2;C3F3;110A 1169 11C2;
+C3F4;C3F4;110A 116A;C3F4;110A 116A;
+C3F5;C3F5;110A 116A 11A8;C3F5;110A 116A 11A8;
+C3F6;C3F6;110A 116A 11A9;C3F6;110A 116A 11A9;
+C3F7;C3F7;110A 116A 11AA;C3F7;110A 116A 11AA;
+C3F8;C3F8;110A 116A 11AB;C3F8;110A 116A 11AB;
+C3F9;C3F9;110A 116A 11AC;C3F9;110A 116A 11AC;
+C3FA;C3FA;110A 116A 11AD;C3FA;110A 116A 11AD;
+C3FB;C3FB;110A 116A 11AE;C3FB;110A 116A 11AE;
+C3FC;C3FC;110A 116A 11AF;C3FC;110A 116A 11AF;
+C3FD;C3FD;110A 116A 11B0;C3FD;110A 116A 11B0;
+C3FE;C3FE;110A 116A 11B1;C3FE;110A 116A 11B1;
+C3FF;C3FF;110A 116A 11B2;C3FF;110A 116A 11B2;
+C400;C400;110A 116A 11B3;C400;110A 116A 11B3;
+C401;C401;110A 116A 11B4;C401;110A 116A 11B4;
+C402;C402;110A 116A 11B5;C402;110A 116A 11B5;
+C403;C403;110A 116A 11B6;C403;110A 116A 11B6;
+C404;C404;110A 116A 11B7;C404;110A 116A 11B7;
+C405;C405;110A 116A 11B8;C405;110A 116A 11B8;
+C406;C406;110A 116A 11B9;C406;110A 116A 11B9;
+C407;C407;110A 116A 11BA;C407;110A 116A 11BA;
+C408;C408;110A 116A 11BB;C408;110A 116A 11BB;
+C409;C409;110A 116A 11BC;C409;110A 116A 11BC;
+C40A;C40A;110A 116A 11BD;C40A;110A 116A 11BD;
+C40B;C40B;110A 116A 11BE;C40B;110A 116A 11BE;
+C40C;C40C;110A 116A 11BF;C40C;110A 116A 11BF;
+C40D;C40D;110A 116A 11C0;C40D;110A 116A 11C0;
+C40E;C40E;110A 116A 11C1;C40E;110A 116A 11C1;
+C40F;C40F;110A 116A 11C2;C40F;110A 116A 11C2;
+C410;C410;110A 116B;C410;110A 116B;
+C411;C411;110A 116B 11A8;C411;110A 116B 11A8;
+C412;C412;110A 116B 11A9;C412;110A 116B 11A9;
+C413;C413;110A 116B 11AA;C413;110A 116B 11AA;
+C414;C414;110A 116B 11AB;C414;110A 116B 11AB;
+C415;C415;110A 116B 11AC;C415;110A 116B 11AC;
+C416;C416;110A 116B 11AD;C416;110A 116B 11AD;
+C417;C417;110A 116B 11AE;C417;110A 116B 11AE;
+C418;C418;110A 116B 11AF;C418;110A 116B 11AF;
+C419;C419;110A 116B 11B0;C419;110A 116B 11B0;
+C41A;C41A;110A 116B 11B1;C41A;110A 116B 11B1;
+C41B;C41B;110A 116B 11B2;C41B;110A 116B 11B2;
+C41C;C41C;110A 116B 11B3;C41C;110A 116B 11B3;
+C41D;C41D;110A 116B 11B4;C41D;110A 116B 11B4;
+C41E;C41E;110A 116B 11B5;C41E;110A 116B 11B5;
+C41F;C41F;110A 116B 11B6;C41F;110A 116B 11B6;
+C420;C420;110A 116B 11B7;C420;110A 116B 11B7;
+C421;C421;110A 116B 11B8;C421;110A 116B 11B8;
+C422;C422;110A 116B 11B9;C422;110A 116B 11B9;
+C423;C423;110A 116B 11BA;C423;110A 116B 11BA;
+C424;C424;110A 116B 11BB;C424;110A 116B 11BB;
+C425;C425;110A 116B 11BC;C425;110A 116B 11BC;
+C426;C426;110A 116B 11BD;C426;110A 116B 11BD;
+C427;C427;110A 116B 11BE;C427;110A 116B 11BE;
+C428;C428;110A 116B 11BF;C428;110A 116B 11BF;
+C429;C429;110A 116B 11C0;C429;110A 116B 11C0;
+C42A;C42A;110A 116B 11C1;C42A;110A 116B 11C1;
+C42B;C42B;110A 116B 11C2;C42B;110A 116B 11C2;
+C42C;C42C;110A 116C;C42C;110A 116C;
+C42D;C42D;110A 116C 11A8;C42D;110A 116C 11A8;
+C42E;C42E;110A 116C 11A9;C42E;110A 116C 11A9;
+C42F;C42F;110A 116C 11AA;C42F;110A 116C 11AA;
+C430;C430;110A 116C 11AB;C430;110A 116C 11AB;
+C431;C431;110A 116C 11AC;C431;110A 116C 11AC;
+C432;C432;110A 116C 11AD;C432;110A 116C 11AD;
+C433;C433;110A 116C 11AE;C433;110A 116C 11AE;
+C434;C434;110A 116C 11AF;C434;110A 116C 11AF;
+C435;C435;110A 116C 11B0;C435;110A 116C 11B0;
+C436;C436;110A 116C 11B1;C436;110A 116C 11B1;
+C437;C437;110A 116C 11B2;C437;110A 116C 11B2;
+C438;C438;110A 116C 11B3;C438;110A 116C 11B3;
+C439;C439;110A 116C 11B4;C439;110A 116C 11B4;
+C43A;C43A;110A 116C 11B5;C43A;110A 116C 11B5;
+C43B;C43B;110A 116C 11B6;C43B;110A 116C 11B6;
+C43C;C43C;110A 116C 11B7;C43C;110A 116C 11B7;
+C43D;C43D;110A 116C 11B8;C43D;110A 116C 11B8;
+C43E;C43E;110A 116C 11B9;C43E;110A 116C 11B9;
+C43F;C43F;110A 116C 11BA;C43F;110A 116C 11BA;
+C440;C440;110A 116C 11BB;C440;110A 116C 11BB;
+C441;C441;110A 116C 11BC;C441;110A 116C 11BC;
+C442;C442;110A 116C 11BD;C442;110A 116C 11BD;
+C443;C443;110A 116C 11BE;C443;110A 116C 11BE;
+C444;C444;110A 116C 11BF;C444;110A 116C 11BF;
+C445;C445;110A 116C 11C0;C445;110A 116C 11C0;
+C446;C446;110A 116C 11C1;C446;110A 116C 11C1;
+C447;C447;110A 116C 11C2;C447;110A 116C 11C2;
+C448;C448;110A 116D;C448;110A 116D;
+C449;C449;110A 116D 11A8;C449;110A 116D 11A8;
+C44A;C44A;110A 116D 11A9;C44A;110A 116D 11A9;
+C44B;C44B;110A 116D 11AA;C44B;110A 116D 11AA;
+C44C;C44C;110A 116D 11AB;C44C;110A 116D 11AB;
+C44D;C44D;110A 116D 11AC;C44D;110A 116D 11AC;
+C44E;C44E;110A 116D 11AD;C44E;110A 116D 11AD;
+C44F;C44F;110A 116D 11AE;C44F;110A 116D 11AE;
+C450;C450;110A 116D 11AF;C450;110A 116D 11AF;
+C451;C451;110A 116D 11B0;C451;110A 116D 11B0;
+C452;C452;110A 116D 11B1;C452;110A 116D 11B1;
+C453;C453;110A 116D 11B2;C453;110A 116D 11B2;
+C454;C454;110A 116D 11B3;C454;110A 116D 11B3;
+C455;C455;110A 116D 11B4;C455;110A 116D 11B4;
+C456;C456;110A 116D 11B5;C456;110A 116D 11B5;
+C457;C457;110A 116D 11B6;C457;110A 116D 11B6;
+C458;C458;110A 116D 11B7;C458;110A 116D 11B7;
+C459;C459;110A 116D 11B8;C459;110A 116D 11B8;
+C45A;C45A;110A 116D 11B9;C45A;110A 116D 11B9;
+C45B;C45B;110A 116D 11BA;C45B;110A 116D 11BA;
+C45C;C45C;110A 116D 11BB;C45C;110A 116D 11BB;
+C45D;C45D;110A 116D 11BC;C45D;110A 116D 11BC;
+C45E;C45E;110A 116D 11BD;C45E;110A 116D 11BD;
+C45F;C45F;110A 116D 11BE;C45F;110A 116D 11BE;
+C460;C460;110A 116D 11BF;C460;110A 116D 11BF;
+C461;C461;110A 116D 11C0;C461;110A 116D 11C0;
+C462;C462;110A 116D 11C1;C462;110A 116D 11C1;
+C463;C463;110A 116D 11C2;C463;110A 116D 11C2;
+C464;C464;110A 116E;C464;110A 116E;
+C465;C465;110A 116E 11A8;C465;110A 116E 11A8;
+C466;C466;110A 116E 11A9;C466;110A 116E 11A9;
+C467;C467;110A 116E 11AA;C467;110A 116E 11AA;
+C468;C468;110A 116E 11AB;C468;110A 116E 11AB;
+C469;C469;110A 116E 11AC;C469;110A 116E 11AC;
+C46A;C46A;110A 116E 11AD;C46A;110A 116E 11AD;
+C46B;C46B;110A 116E 11AE;C46B;110A 116E 11AE;
+C46C;C46C;110A 116E 11AF;C46C;110A 116E 11AF;
+C46D;C46D;110A 116E 11B0;C46D;110A 116E 11B0;
+C46E;C46E;110A 116E 11B1;C46E;110A 116E 11B1;
+C46F;C46F;110A 116E 11B2;C46F;110A 116E 11B2;
+C470;C470;110A 116E 11B3;C470;110A 116E 11B3;
+C471;C471;110A 116E 11B4;C471;110A 116E 11B4;
+C472;C472;110A 116E 11B5;C472;110A 116E 11B5;
+C473;C473;110A 116E 11B6;C473;110A 116E 11B6;
+C474;C474;110A 116E 11B7;C474;110A 116E 11B7;
+C475;C475;110A 116E 11B8;C475;110A 116E 11B8;
+C476;C476;110A 116E 11B9;C476;110A 116E 11B9;
+C477;C477;110A 116E 11BA;C477;110A 116E 11BA;
+C478;C478;110A 116E 11BB;C478;110A 116E 11BB;
+C479;C479;110A 116E 11BC;C479;110A 116E 11BC;
+C47A;C47A;110A 116E 11BD;C47A;110A 116E 11BD;
+C47B;C47B;110A 116E 11BE;C47B;110A 116E 11BE;
+C47C;C47C;110A 116E 11BF;C47C;110A 116E 11BF;
+C47D;C47D;110A 116E 11C0;C47D;110A 116E 11C0;
+C47E;C47E;110A 116E 11C1;C47E;110A 116E 11C1;
+C47F;C47F;110A 116E 11C2;C47F;110A 116E 11C2;
+C480;C480;110A 116F;C480;110A 116F;
+C481;C481;110A 116F 11A8;C481;110A 116F 11A8;
+C482;C482;110A 116F 11A9;C482;110A 116F 11A9;
+C483;C483;110A 116F 11AA;C483;110A 116F 11AA;
+C484;C484;110A 116F 11AB;C484;110A 116F 11AB;
+C485;C485;110A 116F 11AC;C485;110A 116F 11AC;
+C486;C486;110A 116F 11AD;C486;110A 116F 11AD;
+C487;C487;110A 116F 11AE;C487;110A 116F 11AE;
+C488;C488;110A 116F 11AF;C488;110A 116F 11AF;
+C489;C489;110A 116F 11B0;C489;110A 116F 11B0;
+C48A;C48A;110A 116F 11B1;C48A;110A 116F 11B1;
+C48B;C48B;110A 116F 11B2;C48B;110A 116F 11B2;
+C48C;C48C;110A 116F 11B3;C48C;110A 116F 11B3;
+C48D;C48D;110A 116F 11B4;C48D;110A 116F 11B4;
+C48E;C48E;110A 116F 11B5;C48E;110A 116F 11B5;
+C48F;C48F;110A 116F 11B6;C48F;110A 116F 11B6;
+C490;C490;110A 116F 11B7;C490;110A 116F 11B7;
+C491;C491;110A 116F 11B8;C491;110A 116F 11B8;
+C492;C492;110A 116F 11B9;C492;110A 116F 11B9;
+C493;C493;110A 116F 11BA;C493;110A 116F 11BA;
+C494;C494;110A 116F 11BB;C494;110A 116F 11BB;
+C495;C495;110A 116F 11BC;C495;110A 116F 11BC;
+C496;C496;110A 116F 11BD;C496;110A 116F 11BD;
+C497;C497;110A 116F 11BE;C497;110A 116F 11BE;
+C498;C498;110A 116F 11BF;C498;110A 116F 11BF;
+C499;C499;110A 116F 11C0;C499;110A 116F 11C0;
+C49A;C49A;110A 116F 11C1;C49A;110A 116F 11C1;
+C49B;C49B;110A 116F 11C2;C49B;110A 116F 11C2;
+C49C;C49C;110A 1170;C49C;110A 1170;
+C49D;C49D;110A 1170 11A8;C49D;110A 1170 11A8;
+C49E;C49E;110A 1170 11A9;C49E;110A 1170 11A9;
+C49F;C49F;110A 1170 11AA;C49F;110A 1170 11AA;
+C4A0;C4A0;110A 1170 11AB;C4A0;110A 1170 11AB;
+C4A1;C4A1;110A 1170 11AC;C4A1;110A 1170 11AC;
+C4A2;C4A2;110A 1170 11AD;C4A2;110A 1170 11AD;
+C4A3;C4A3;110A 1170 11AE;C4A3;110A 1170 11AE;
+C4A4;C4A4;110A 1170 11AF;C4A4;110A 1170 11AF;
+C4A5;C4A5;110A 1170 11B0;C4A5;110A 1170 11B0;
+C4A6;C4A6;110A 1170 11B1;C4A6;110A 1170 11B1;
+C4A7;C4A7;110A 1170 11B2;C4A7;110A 1170 11B2;
+C4A8;C4A8;110A 1170 11B3;C4A8;110A 1170 11B3;
+C4A9;C4A9;110A 1170 11B4;C4A9;110A 1170 11B4;
+C4AA;C4AA;110A 1170 11B5;C4AA;110A 1170 11B5;
+C4AB;C4AB;110A 1170 11B6;C4AB;110A 1170 11B6;
+C4AC;C4AC;110A 1170 11B7;C4AC;110A 1170 11B7;
+C4AD;C4AD;110A 1170 11B8;C4AD;110A 1170 11B8;
+C4AE;C4AE;110A 1170 11B9;C4AE;110A 1170 11B9;
+C4AF;C4AF;110A 1170 11BA;C4AF;110A 1170 11BA;
+C4B0;C4B0;110A 1170 11BB;C4B0;110A 1170 11BB;
+C4B1;C4B1;110A 1170 11BC;C4B1;110A 1170 11BC;
+C4B2;C4B2;110A 1170 11BD;C4B2;110A 1170 11BD;
+C4B3;C4B3;110A 1170 11BE;C4B3;110A 1170 11BE;
+C4B4;C4B4;110A 1170 11BF;C4B4;110A 1170 11BF;
+C4B5;C4B5;110A 1170 11C0;C4B5;110A 1170 11C0;
+C4B6;C4B6;110A 1170 11C1;C4B6;110A 1170 11C1;
+C4B7;C4B7;110A 1170 11C2;C4B7;110A 1170 11C2;
+C4B8;C4B8;110A 1171;C4B8;110A 1171;
+C4B9;C4B9;110A 1171 11A8;C4B9;110A 1171 11A8;
+C4BA;C4BA;110A 1171 11A9;C4BA;110A 1171 11A9;
+C4BB;C4BB;110A 1171 11AA;C4BB;110A 1171 11AA;
+C4BC;C4BC;110A 1171 11AB;C4BC;110A 1171 11AB;
+C4BD;C4BD;110A 1171 11AC;C4BD;110A 1171 11AC;
+C4BE;C4BE;110A 1171 11AD;C4BE;110A 1171 11AD;
+C4BF;C4BF;110A 1171 11AE;C4BF;110A 1171 11AE;
+C4C0;C4C0;110A 1171 11AF;C4C0;110A 1171 11AF;
+C4C1;C4C1;110A 1171 11B0;C4C1;110A 1171 11B0;
+C4C2;C4C2;110A 1171 11B1;C4C2;110A 1171 11B1;
+C4C3;C4C3;110A 1171 11B2;C4C3;110A 1171 11B2;
+C4C4;C4C4;110A 1171 11B3;C4C4;110A 1171 11B3;
+C4C5;C4C5;110A 1171 11B4;C4C5;110A 1171 11B4;
+C4C6;C4C6;110A 1171 11B5;C4C6;110A 1171 11B5;
+C4C7;C4C7;110A 1171 11B6;C4C7;110A 1171 11B6;
+C4C8;C4C8;110A 1171 11B7;C4C8;110A 1171 11B7;
+C4C9;C4C9;110A 1171 11B8;C4C9;110A 1171 11B8;
+C4CA;C4CA;110A 1171 11B9;C4CA;110A 1171 11B9;
+C4CB;C4CB;110A 1171 11BA;C4CB;110A 1171 11BA;
+C4CC;C4CC;110A 1171 11BB;C4CC;110A 1171 11BB;
+C4CD;C4CD;110A 1171 11BC;C4CD;110A 1171 11BC;
+C4CE;C4CE;110A 1171 11BD;C4CE;110A 1171 11BD;
+C4CF;C4CF;110A 1171 11BE;C4CF;110A 1171 11BE;
+C4D0;C4D0;110A 1171 11BF;C4D0;110A 1171 11BF;
+C4D1;C4D1;110A 1171 11C0;C4D1;110A 1171 11C0;
+C4D2;C4D2;110A 1171 11C1;C4D2;110A 1171 11C1;
+C4D3;C4D3;110A 1171 11C2;C4D3;110A 1171 11C2;
+C4D4;C4D4;110A 1172;C4D4;110A 1172;
+C4D5;C4D5;110A 1172 11A8;C4D5;110A 1172 11A8;
+C4D6;C4D6;110A 1172 11A9;C4D6;110A 1172 11A9;
+C4D7;C4D7;110A 1172 11AA;C4D7;110A 1172 11AA;
+C4D8;C4D8;110A 1172 11AB;C4D8;110A 1172 11AB;
+C4D9;C4D9;110A 1172 11AC;C4D9;110A 1172 11AC;
+C4DA;C4DA;110A 1172 11AD;C4DA;110A 1172 11AD;
+C4DB;C4DB;110A 1172 11AE;C4DB;110A 1172 11AE;
+C4DC;C4DC;110A 1172 11AF;C4DC;110A 1172 11AF;
+C4DD;C4DD;110A 1172 11B0;C4DD;110A 1172 11B0;
+C4DE;C4DE;110A 1172 11B1;C4DE;110A 1172 11B1;
+C4DF;C4DF;110A 1172 11B2;C4DF;110A 1172 11B2;
+C4E0;C4E0;110A 1172 11B3;C4E0;110A 1172 11B3;
+C4E1;C4E1;110A 1172 11B4;C4E1;110A 1172 11B4;
+C4E2;C4E2;110A 1172 11B5;C4E2;110A 1172 11B5;
+C4E3;C4E3;110A 1172 11B6;C4E3;110A 1172 11B6;
+C4E4;C4E4;110A 1172 11B7;C4E4;110A 1172 11B7;
+C4E5;C4E5;110A 1172 11B8;C4E5;110A 1172 11B8;
+C4E6;C4E6;110A 1172 11B9;C4E6;110A 1172 11B9;
+C4E7;C4E7;110A 1172 11BA;C4E7;110A 1172 11BA;
+C4E8;C4E8;110A 1172 11BB;C4E8;110A 1172 11BB;
+C4E9;C4E9;110A 1172 11BC;C4E9;110A 1172 11BC;
+C4EA;C4EA;110A 1172 11BD;C4EA;110A 1172 11BD;
+C4EB;C4EB;110A 1172 11BE;C4EB;110A 1172 11BE;
+C4EC;C4EC;110A 1172 11BF;C4EC;110A 1172 11BF;
+C4ED;C4ED;110A 1172 11C0;C4ED;110A 1172 11C0;
+C4EE;C4EE;110A 1172 11C1;C4EE;110A 1172 11C1;
+C4EF;C4EF;110A 1172 11C2;C4EF;110A 1172 11C2;
+C4F0;C4F0;110A 1173;C4F0;110A 1173;
+C4F1;C4F1;110A 1173 11A8;C4F1;110A 1173 11A8;
+C4F2;C4F2;110A 1173 11A9;C4F2;110A 1173 11A9;
+C4F3;C4F3;110A 1173 11AA;C4F3;110A 1173 11AA;
+C4F4;C4F4;110A 1173 11AB;C4F4;110A 1173 11AB;
+C4F5;C4F5;110A 1173 11AC;C4F5;110A 1173 11AC;
+C4F6;C4F6;110A 1173 11AD;C4F6;110A 1173 11AD;
+C4F7;C4F7;110A 1173 11AE;C4F7;110A 1173 11AE;
+C4F8;C4F8;110A 1173 11AF;C4F8;110A 1173 11AF;
+C4F9;C4F9;110A 1173 11B0;C4F9;110A 1173 11B0;
+C4FA;C4FA;110A 1173 11B1;C4FA;110A 1173 11B1;
+C4FB;C4FB;110A 1173 11B2;C4FB;110A 1173 11B2;
+C4FC;C4FC;110A 1173 11B3;C4FC;110A 1173 11B3;
+C4FD;C4FD;110A 1173 11B4;C4FD;110A 1173 11B4;
+C4FE;C4FE;110A 1173 11B5;C4FE;110A 1173 11B5;
+C4FF;C4FF;110A 1173 11B6;C4FF;110A 1173 11B6;
+C500;C500;110A 1173 11B7;C500;110A 1173 11B7;
+C501;C501;110A 1173 11B8;C501;110A 1173 11B8;
+C502;C502;110A 1173 11B9;C502;110A 1173 11B9;
+C503;C503;110A 1173 11BA;C503;110A 1173 11BA;
+C504;C504;110A 1173 11BB;C504;110A 1173 11BB;
+C505;C505;110A 1173 11BC;C505;110A 1173 11BC;
+C506;C506;110A 1173 11BD;C506;110A 1173 11BD;
+C507;C507;110A 1173 11BE;C507;110A 1173 11BE;
+C508;C508;110A 1173 11BF;C508;110A 1173 11BF;
+C509;C509;110A 1173 11C0;C509;110A 1173 11C0;
+C50A;C50A;110A 1173 11C1;C50A;110A 1173 11C1;
+C50B;C50B;110A 1173 11C2;C50B;110A 1173 11C2;
+C50C;C50C;110A 1174;C50C;110A 1174;
+C50D;C50D;110A 1174 11A8;C50D;110A 1174 11A8;
+C50E;C50E;110A 1174 11A9;C50E;110A 1174 11A9;
+C50F;C50F;110A 1174 11AA;C50F;110A 1174 11AA;
+C510;C510;110A 1174 11AB;C510;110A 1174 11AB;
+C511;C511;110A 1174 11AC;C511;110A 1174 11AC;
+C512;C512;110A 1174 11AD;C512;110A 1174 11AD;
+C513;C513;110A 1174 11AE;C513;110A 1174 11AE;
+C514;C514;110A 1174 11AF;C514;110A 1174 11AF;
+C515;C515;110A 1174 11B0;C515;110A 1174 11B0;
+C516;C516;110A 1174 11B1;C516;110A 1174 11B1;
+C517;C517;110A 1174 11B2;C517;110A 1174 11B2;
+C518;C518;110A 1174 11B3;C518;110A 1174 11B3;
+C519;C519;110A 1174 11B4;C519;110A 1174 11B4;
+C51A;C51A;110A 1174 11B5;C51A;110A 1174 11B5;
+C51B;C51B;110A 1174 11B6;C51B;110A 1174 11B6;
+C51C;C51C;110A 1174 11B7;C51C;110A 1174 11B7;
+C51D;C51D;110A 1174 11B8;C51D;110A 1174 11B8;
+C51E;C51E;110A 1174 11B9;C51E;110A 1174 11B9;
+C51F;C51F;110A 1174 11BA;C51F;110A 1174 11BA;
+C520;C520;110A 1174 11BB;C520;110A 1174 11BB;
+C521;C521;110A 1174 11BC;C521;110A 1174 11BC;
+C522;C522;110A 1174 11BD;C522;110A 1174 11BD;
+C523;C523;110A 1174 11BE;C523;110A 1174 11BE;
+C524;C524;110A 1174 11BF;C524;110A 1174 11BF;
+C525;C525;110A 1174 11C0;C525;110A 1174 11C0;
+C526;C526;110A 1174 11C1;C526;110A 1174 11C1;
+C527;C527;110A 1174 11C2;C527;110A 1174 11C2;
+C528;C528;110A 1175;C528;110A 1175;
+C529;C529;110A 1175 11A8;C529;110A 1175 11A8;
+C52A;C52A;110A 1175 11A9;C52A;110A 1175 11A9;
+C52B;C52B;110A 1175 11AA;C52B;110A 1175 11AA;
+C52C;C52C;110A 1175 11AB;C52C;110A 1175 11AB;
+C52D;C52D;110A 1175 11AC;C52D;110A 1175 11AC;
+C52E;C52E;110A 1175 11AD;C52E;110A 1175 11AD;
+C52F;C52F;110A 1175 11AE;C52F;110A 1175 11AE;
+C530;C530;110A 1175 11AF;C530;110A 1175 11AF;
+C531;C531;110A 1175 11B0;C531;110A 1175 11B0;
+C532;C532;110A 1175 11B1;C532;110A 1175 11B1;
+C533;C533;110A 1175 11B2;C533;110A 1175 11B2;
+C534;C534;110A 1175 11B3;C534;110A 1175 11B3;
+C535;C535;110A 1175 11B4;C535;110A 1175 11B4;
+C536;C536;110A 1175 11B5;C536;110A 1175 11B5;
+C537;C537;110A 1175 11B6;C537;110A 1175 11B6;
+C538;C538;110A 1175 11B7;C538;110A 1175 11B7;
+C539;C539;110A 1175 11B8;C539;110A 1175 11B8;
+C53A;C53A;110A 1175 11B9;C53A;110A 1175 11B9;
+C53B;C53B;110A 1175 11BA;C53B;110A 1175 11BA;
+C53C;C53C;110A 1175 11BB;C53C;110A 1175 11BB;
+C53D;C53D;110A 1175 11BC;C53D;110A 1175 11BC;
+C53E;C53E;110A 1175 11BD;C53E;110A 1175 11BD;
+C53F;C53F;110A 1175 11BE;C53F;110A 1175 11BE;
+C540;C540;110A 1175 11BF;C540;110A 1175 11BF;
+C541;C541;110A 1175 11C0;C541;110A 1175 11C0;
+C542;C542;110A 1175 11C1;C542;110A 1175 11C1;
+C543;C543;110A 1175 11C2;C543;110A 1175 11C2;
+C544;C544;110B 1161;C544;110B 1161;
+C545;C545;110B 1161 11A8;C545;110B 1161 11A8;
+C546;C546;110B 1161 11A9;C546;110B 1161 11A9;
+C547;C547;110B 1161 11AA;C547;110B 1161 11AA;
+C548;C548;110B 1161 11AB;C548;110B 1161 11AB;
+C549;C549;110B 1161 11AC;C549;110B 1161 11AC;
+C54A;C54A;110B 1161 11AD;C54A;110B 1161 11AD;
+C54B;C54B;110B 1161 11AE;C54B;110B 1161 11AE;
+C54C;C54C;110B 1161 11AF;C54C;110B 1161 11AF;
+C54D;C54D;110B 1161 11B0;C54D;110B 1161 11B0;
+C54E;C54E;110B 1161 11B1;C54E;110B 1161 11B1;
+C54F;C54F;110B 1161 11B2;C54F;110B 1161 11B2;
+C550;C550;110B 1161 11B3;C550;110B 1161 11B3;
+C551;C551;110B 1161 11B4;C551;110B 1161 11B4;
+C552;C552;110B 1161 11B5;C552;110B 1161 11B5;
+C553;C553;110B 1161 11B6;C553;110B 1161 11B6;
+C554;C554;110B 1161 11B7;C554;110B 1161 11B7;
+C555;C555;110B 1161 11B8;C555;110B 1161 11B8;
+C556;C556;110B 1161 11B9;C556;110B 1161 11B9;
+C557;C557;110B 1161 11BA;C557;110B 1161 11BA;
+C558;C558;110B 1161 11BB;C558;110B 1161 11BB;
+C559;C559;110B 1161 11BC;C559;110B 1161 11BC;
+C55A;C55A;110B 1161 11BD;C55A;110B 1161 11BD;
+C55B;C55B;110B 1161 11BE;C55B;110B 1161 11BE;
+C55C;C55C;110B 1161 11BF;C55C;110B 1161 11BF;
+C55D;C55D;110B 1161 11C0;C55D;110B 1161 11C0;
+C55E;C55E;110B 1161 11C1;C55E;110B 1161 11C1;
+C55F;C55F;110B 1161 11C2;C55F;110B 1161 11C2;
+C560;C560;110B 1162;C560;110B 1162;
+C561;C561;110B 1162 11A8;C561;110B 1162 11A8;
+C562;C562;110B 1162 11A9;C562;110B 1162 11A9;
+C563;C563;110B 1162 11AA;C563;110B 1162 11AA;
+C564;C564;110B 1162 11AB;C564;110B 1162 11AB;
+C565;C565;110B 1162 11AC;C565;110B 1162 11AC;
+C566;C566;110B 1162 11AD;C566;110B 1162 11AD;
+C567;C567;110B 1162 11AE;C567;110B 1162 11AE;
+C568;C568;110B 1162 11AF;C568;110B 1162 11AF;
+C569;C569;110B 1162 11B0;C569;110B 1162 11B0;
+C56A;C56A;110B 1162 11B1;C56A;110B 1162 11B1;
+C56B;C56B;110B 1162 11B2;C56B;110B 1162 11B2;
+C56C;C56C;110B 1162 11B3;C56C;110B 1162 11B3;
+C56D;C56D;110B 1162 11B4;C56D;110B 1162 11B4;
+C56E;C56E;110B 1162 11B5;C56E;110B 1162 11B5;
+C56F;C56F;110B 1162 11B6;C56F;110B 1162 11B6;
+C570;C570;110B 1162 11B7;C570;110B 1162 11B7;
+C571;C571;110B 1162 11B8;C571;110B 1162 11B8;
+C572;C572;110B 1162 11B9;C572;110B 1162 11B9;
+C573;C573;110B 1162 11BA;C573;110B 1162 11BA;
+C574;C574;110B 1162 11BB;C574;110B 1162 11BB;
+C575;C575;110B 1162 11BC;C575;110B 1162 11BC;
+C576;C576;110B 1162 11BD;C576;110B 1162 11BD;
+C577;C577;110B 1162 11BE;C577;110B 1162 11BE;
+C578;C578;110B 1162 11BF;C578;110B 1162 11BF;
+C579;C579;110B 1162 11C0;C579;110B 1162 11C0;
+C57A;C57A;110B 1162 11C1;C57A;110B 1162 11C1;
+C57B;C57B;110B 1162 11C2;C57B;110B 1162 11C2;
+C57C;C57C;110B 1163;C57C;110B 1163;
+C57D;C57D;110B 1163 11A8;C57D;110B 1163 11A8;
+C57E;C57E;110B 1163 11A9;C57E;110B 1163 11A9;
+C57F;C57F;110B 1163 11AA;C57F;110B 1163 11AA;
+C580;C580;110B 1163 11AB;C580;110B 1163 11AB;
+C581;C581;110B 1163 11AC;C581;110B 1163 11AC;
+C582;C582;110B 1163 11AD;C582;110B 1163 11AD;
+C583;C583;110B 1163 11AE;C583;110B 1163 11AE;
+C584;C584;110B 1163 11AF;C584;110B 1163 11AF;
+C585;C585;110B 1163 11B0;C585;110B 1163 11B0;
+C586;C586;110B 1163 11B1;C586;110B 1163 11B1;
+C587;C587;110B 1163 11B2;C587;110B 1163 11B2;
+C588;C588;110B 1163 11B3;C588;110B 1163 11B3;
+C589;C589;110B 1163 11B4;C589;110B 1163 11B4;
+C58A;C58A;110B 1163 11B5;C58A;110B 1163 11B5;
+C58B;C58B;110B 1163 11B6;C58B;110B 1163 11B6;
+C58C;C58C;110B 1163 11B7;C58C;110B 1163 11B7;
+C58D;C58D;110B 1163 11B8;C58D;110B 1163 11B8;
+C58E;C58E;110B 1163 11B9;C58E;110B 1163 11B9;
+C58F;C58F;110B 1163 11BA;C58F;110B 1163 11BA;
+C590;C590;110B 1163 11BB;C590;110B 1163 11BB;
+C591;C591;110B 1163 11BC;C591;110B 1163 11BC;
+C592;C592;110B 1163 11BD;C592;110B 1163 11BD;
+C593;C593;110B 1163 11BE;C593;110B 1163 11BE;
+C594;C594;110B 1163 11BF;C594;110B 1163 11BF;
+C595;C595;110B 1163 11C0;C595;110B 1163 11C0;
+C596;C596;110B 1163 11C1;C596;110B 1163 11C1;
+C597;C597;110B 1163 11C2;C597;110B 1163 11C2;
+C598;C598;110B 1164;C598;110B 1164;
+C599;C599;110B 1164 11A8;C599;110B 1164 11A8;
+C59A;C59A;110B 1164 11A9;C59A;110B 1164 11A9;
+C59B;C59B;110B 1164 11AA;C59B;110B 1164 11AA;
+C59C;C59C;110B 1164 11AB;C59C;110B 1164 11AB;
+C59D;C59D;110B 1164 11AC;C59D;110B 1164 11AC;
+C59E;C59E;110B 1164 11AD;C59E;110B 1164 11AD;
+C59F;C59F;110B 1164 11AE;C59F;110B 1164 11AE;
+C5A0;C5A0;110B 1164 11AF;C5A0;110B 1164 11AF;
+C5A1;C5A1;110B 1164 11B0;C5A1;110B 1164 11B0;
+C5A2;C5A2;110B 1164 11B1;C5A2;110B 1164 11B1;
+C5A3;C5A3;110B 1164 11B2;C5A3;110B 1164 11B2;
+C5A4;C5A4;110B 1164 11B3;C5A4;110B 1164 11B3;
+C5A5;C5A5;110B 1164 11B4;C5A5;110B 1164 11B4;
+C5A6;C5A6;110B 1164 11B5;C5A6;110B 1164 11B5;
+C5A7;C5A7;110B 1164 11B6;C5A7;110B 1164 11B6;
+C5A8;C5A8;110B 1164 11B7;C5A8;110B 1164 11B7;
+C5A9;C5A9;110B 1164 11B8;C5A9;110B 1164 11B8;
+C5AA;C5AA;110B 1164 11B9;C5AA;110B 1164 11B9;
+C5AB;C5AB;110B 1164 11BA;C5AB;110B 1164 11BA;
+C5AC;C5AC;110B 1164 11BB;C5AC;110B 1164 11BB;
+C5AD;C5AD;110B 1164 11BC;C5AD;110B 1164 11BC;
+C5AE;C5AE;110B 1164 11BD;C5AE;110B 1164 11BD;
+C5AF;C5AF;110B 1164 11BE;C5AF;110B 1164 11BE;
+C5B0;C5B0;110B 1164 11BF;C5B0;110B 1164 11BF;
+C5B1;C5B1;110B 1164 11C0;C5B1;110B 1164 11C0;
+C5B2;C5B2;110B 1164 11C1;C5B2;110B 1164 11C1;
+C5B3;C5B3;110B 1164 11C2;C5B3;110B 1164 11C2;
+C5B4;C5B4;110B 1165;C5B4;110B 1165;
+C5B5;C5B5;110B 1165 11A8;C5B5;110B 1165 11A8;
+C5B6;C5B6;110B 1165 11A9;C5B6;110B 1165 11A9;
+C5B7;C5B7;110B 1165 11AA;C5B7;110B 1165 11AA;
+C5B8;C5B8;110B 1165 11AB;C5B8;110B 1165 11AB;
+C5B9;C5B9;110B 1165 11AC;C5B9;110B 1165 11AC;
+C5BA;C5BA;110B 1165 11AD;C5BA;110B 1165 11AD;
+C5BB;C5BB;110B 1165 11AE;C5BB;110B 1165 11AE;
+C5BC;C5BC;110B 1165 11AF;C5BC;110B 1165 11AF;
+C5BD;C5BD;110B 1165 11B0;C5BD;110B 1165 11B0;
+C5BE;C5BE;110B 1165 11B1;C5BE;110B 1165 11B1;
+C5BF;C5BF;110B 1165 11B2;C5BF;110B 1165 11B2;
+C5C0;C5C0;110B 1165 11B3;C5C0;110B 1165 11B3;
+C5C1;C5C1;110B 1165 11B4;C5C1;110B 1165 11B4;
+C5C2;C5C2;110B 1165 11B5;C5C2;110B 1165 11B5;
+C5C3;C5C3;110B 1165 11B6;C5C3;110B 1165 11B6;
+C5C4;C5C4;110B 1165 11B7;C5C4;110B 1165 11B7;
+C5C5;C5C5;110B 1165 11B8;C5C5;110B 1165 11B8;
+C5C6;C5C6;110B 1165 11B9;C5C6;110B 1165 11B9;
+C5C7;C5C7;110B 1165 11BA;C5C7;110B 1165 11BA;
+C5C8;C5C8;110B 1165 11BB;C5C8;110B 1165 11BB;
+C5C9;C5C9;110B 1165 11BC;C5C9;110B 1165 11BC;
+C5CA;C5CA;110B 1165 11BD;C5CA;110B 1165 11BD;
+C5CB;C5CB;110B 1165 11BE;C5CB;110B 1165 11BE;
+C5CC;C5CC;110B 1165 11BF;C5CC;110B 1165 11BF;
+C5CD;C5CD;110B 1165 11C0;C5CD;110B 1165 11C0;
+C5CE;C5CE;110B 1165 11C1;C5CE;110B 1165 11C1;
+C5CF;C5CF;110B 1165 11C2;C5CF;110B 1165 11C2;
+C5D0;C5D0;110B 1166;C5D0;110B 1166;
+C5D1;C5D1;110B 1166 11A8;C5D1;110B 1166 11A8;
+C5D2;C5D2;110B 1166 11A9;C5D2;110B 1166 11A9;
+C5D3;C5D3;110B 1166 11AA;C5D3;110B 1166 11AA;
+C5D4;C5D4;110B 1166 11AB;C5D4;110B 1166 11AB;
+C5D5;C5D5;110B 1166 11AC;C5D5;110B 1166 11AC;
+C5D6;C5D6;110B 1166 11AD;C5D6;110B 1166 11AD;
+C5D7;C5D7;110B 1166 11AE;C5D7;110B 1166 11AE;
+C5D8;C5D8;110B 1166 11AF;C5D8;110B 1166 11AF;
+C5D9;C5D9;110B 1166 11B0;C5D9;110B 1166 11B0;
+C5DA;C5DA;110B 1166 11B1;C5DA;110B 1166 11B1;
+C5DB;C5DB;110B 1166 11B2;C5DB;110B 1166 11B2;
+C5DC;C5DC;110B 1166 11B3;C5DC;110B 1166 11B3;
+C5DD;C5DD;110B 1166 11B4;C5DD;110B 1166 11B4;
+C5DE;C5DE;110B 1166 11B5;C5DE;110B 1166 11B5;
+C5DF;C5DF;110B 1166 11B6;C5DF;110B 1166 11B6;
+C5E0;C5E0;110B 1166 11B7;C5E0;110B 1166 11B7;
+C5E1;C5E1;110B 1166 11B8;C5E1;110B 1166 11B8;
+C5E2;C5E2;110B 1166 11B9;C5E2;110B 1166 11B9;
+C5E3;C5E3;110B 1166 11BA;C5E3;110B 1166 11BA;
+C5E4;C5E4;110B 1166 11BB;C5E4;110B 1166 11BB;
+C5E5;C5E5;110B 1166 11BC;C5E5;110B 1166 11BC;
+C5E6;C5E6;110B 1166 11BD;C5E6;110B 1166 11BD;
+C5E7;C5E7;110B 1166 11BE;C5E7;110B 1166 11BE;
+C5E8;C5E8;110B 1166 11BF;C5E8;110B 1166 11BF;
+C5E9;C5E9;110B 1166 11C0;C5E9;110B 1166 11C0;
+C5EA;C5EA;110B 1166 11C1;C5EA;110B 1166 11C1;
+C5EB;C5EB;110B 1166 11C2;C5EB;110B 1166 11C2;
+C5EC;C5EC;110B 1167;C5EC;110B 1167;
+C5ED;C5ED;110B 1167 11A8;C5ED;110B 1167 11A8;
+C5EE;C5EE;110B 1167 11A9;C5EE;110B 1167 11A9;
+C5EF;C5EF;110B 1167 11AA;C5EF;110B 1167 11AA;
+C5F0;C5F0;110B 1167 11AB;C5F0;110B 1167 11AB;
+C5F1;C5F1;110B 1167 11AC;C5F1;110B 1167 11AC;
+C5F2;C5F2;110B 1167 11AD;C5F2;110B 1167 11AD;
+C5F3;C5F3;110B 1167 11AE;C5F3;110B 1167 11AE;
+C5F4;C5F4;110B 1167 11AF;C5F4;110B 1167 11AF;
+C5F5;C5F5;110B 1167 11B0;C5F5;110B 1167 11B0;
+C5F6;C5F6;110B 1167 11B1;C5F6;110B 1167 11B1;
+C5F7;C5F7;110B 1167 11B2;C5F7;110B 1167 11B2;
+C5F8;C5F8;110B 1167 11B3;C5F8;110B 1167 11B3;
+C5F9;C5F9;110B 1167 11B4;C5F9;110B 1167 11B4;
+C5FA;C5FA;110B 1167 11B5;C5FA;110B 1167 11B5;
+C5FB;C5FB;110B 1167 11B6;C5FB;110B 1167 11B6;
+C5FC;C5FC;110B 1167 11B7;C5FC;110B 1167 11B7;
+C5FD;C5FD;110B 1167 11B8;C5FD;110B 1167 11B8;
+C5FE;C5FE;110B 1167 11B9;C5FE;110B 1167 11B9;
+C5FF;C5FF;110B 1167 11BA;C5FF;110B 1167 11BA;
+C600;C600;110B 1167 11BB;C600;110B 1167 11BB;
+C601;C601;110B 1167 11BC;C601;110B 1167 11BC;
+C602;C602;110B 1167 11BD;C602;110B 1167 11BD;
+C603;C603;110B 1167 11BE;C603;110B 1167 11BE;
+C604;C604;110B 1167 11BF;C604;110B 1167 11BF;
+C605;C605;110B 1167 11C0;C605;110B 1167 11C0;
+C606;C606;110B 1167 11C1;C606;110B 1167 11C1;
+C607;C607;110B 1167 11C2;C607;110B 1167 11C2;
+C608;C608;110B 1168;C608;110B 1168;
+C609;C609;110B 1168 11A8;C609;110B 1168 11A8;
+C60A;C60A;110B 1168 11A9;C60A;110B 1168 11A9;
+C60B;C60B;110B 1168 11AA;C60B;110B 1168 11AA;
+C60C;C60C;110B 1168 11AB;C60C;110B 1168 11AB;
+C60D;C60D;110B 1168 11AC;C60D;110B 1168 11AC;
+C60E;C60E;110B 1168 11AD;C60E;110B 1168 11AD;
+C60F;C60F;110B 1168 11AE;C60F;110B 1168 11AE;
+C610;C610;110B 1168 11AF;C610;110B 1168 11AF;
+C611;C611;110B 1168 11B0;C611;110B 1168 11B0;
+C612;C612;110B 1168 11B1;C612;110B 1168 11B1;
+C613;C613;110B 1168 11B2;C613;110B 1168 11B2;
+C614;C614;110B 1168 11B3;C614;110B 1168 11B3;
+C615;C615;110B 1168 11B4;C615;110B 1168 11B4;
+C616;C616;110B 1168 11B5;C616;110B 1168 11B5;
+C617;C617;110B 1168 11B6;C617;110B 1168 11B6;
+C618;C618;110B 1168 11B7;C618;110B 1168 11B7;
+C619;C619;110B 1168 11B8;C619;110B 1168 11B8;
+C61A;C61A;110B 1168 11B9;C61A;110B 1168 11B9;
+C61B;C61B;110B 1168 11BA;C61B;110B 1168 11BA;
+C61C;C61C;110B 1168 11BB;C61C;110B 1168 11BB;
+C61D;C61D;110B 1168 11BC;C61D;110B 1168 11BC;
+C61E;C61E;110B 1168 11BD;C61E;110B 1168 11BD;
+C61F;C61F;110B 1168 11BE;C61F;110B 1168 11BE;
+C620;C620;110B 1168 11BF;C620;110B 1168 11BF;
+C621;C621;110B 1168 11C0;C621;110B 1168 11C0;
+C622;C622;110B 1168 11C1;C622;110B 1168 11C1;
+C623;C623;110B 1168 11C2;C623;110B 1168 11C2;
+C624;C624;110B 1169;C624;110B 1169;
+C625;C625;110B 1169 11A8;C625;110B 1169 11A8;
+C626;C626;110B 1169 11A9;C626;110B 1169 11A9;
+C627;C627;110B 1169 11AA;C627;110B 1169 11AA;
+C628;C628;110B 1169 11AB;C628;110B 1169 11AB;
+C629;C629;110B 1169 11AC;C629;110B 1169 11AC;
+C62A;C62A;110B 1169 11AD;C62A;110B 1169 11AD;
+C62B;C62B;110B 1169 11AE;C62B;110B 1169 11AE;
+C62C;C62C;110B 1169 11AF;C62C;110B 1169 11AF;
+C62D;C62D;110B 1169 11B0;C62D;110B 1169 11B0;
+C62E;C62E;110B 1169 11B1;C62E;110B 1169 11B1;
+C62F;C62F;110B 1169 11B2;C62F;110B 1169 11B2;
+C630;C630;110B 1169 11B3;C630;110B 1169 11B3;
+C631;C631;110B 1169 11B4;C631;110B 1169 11B4;
+C632;C632;110B 1169 11B5;C632;110B 1169 11B5;
+C633;C633;110B 1169 11B6;C633;110B 1169 11B6;
+C634;C634;110B 1169 11B7;C634;110B 1169 11B7;
+C635;C635;110B 1169 11B8;C635;110B 1169 11B8;
+C636;C636;110B 1169 11B9;C636;110B 1169 11B9;
+C637;C637;110B 1169 11BA;C637;110B 1169 11BA;
+C638;C638;110B 1169 11BB;C638;110B 1169 11BB;
+C639;C639;110B 1169 11BC;C639;110B 1169 11BC;
+C63A;C63A;110B 1169 11BD;C63A;110B 1169 11BD;
+C63B;C63B;110B 1169 11BE;C63B;110B 1169 11BE;
+C63C;C63C;110B 1169 11BF;C63C;110B 1169 11BF;
+C63D;C63D;110B 1169 11C0;C63D;110B 1169 11C0;
+C63E;C63E;110B 1169 11C1;C63E;110B 1169 11C1;
+C63F;C63F;110B 1169 11C2;C63F;110B 1169 11C2;
+C640;C640;110B 116A;C640;110B 116A;
+C641;C641;110B 116A 11A8;C641;110B 116A 11A8;
+C642;C642;110B 116A 11A9;C642;110B 116A 11A9;
+C643;C643;110B 116A 11AA;C643;110B 116A 11AA;
+C644;C644;110B 116A 11AB;C644;110B 116A 11AB;
+C645;C645;110B 116A 11AC;C645;110B 116A 11AC;
+C646;C646;110B 116A 11AD;C646;110B 116A 11AD;
+C647;C647;110B 116A 11AE;C647;110B 116A 11AE;
+C648;C648;110B 116A 11AF;C648;110B 116A 11AF;
+C649;C649;110B 116A 11B0;C649;110B 116A 11B0;
+C64A;C64A;110B 116A 11B1;C64A;110B 116A 11B1;
+C64B;C64B;110B 116A 11B2;C64B;110B 116A 11B2;
+C64C;C64C;110B 116A 11B3;C64C;110B 116A 11B3;
+C64D;C64D;110B 116A 11B4;C64D;110B 116A 11B4;
+C64E;C64E;110B 116A 11B5;C64E;110B 116A 11B5;
+C64F;C64F;110B 116A 11B6;C64F;110B 116A 11B6;
+C650;C650;110B 116A 11B7;C650;110B 116A 11B7;
+C651;C651;110B 116A 11B8;C651;110B 116A 11B8;
+C652;C652;110B 116A 11B9;C652;110B 116A 11B9;
+C653;C653;110B 116A 11BA;C653;110B 116A 11BA;
+C654;C654;110B 116A 11BB;C654;110B 116A 11BB;
+C655;C655;110B 116A 11BC;C655;110B 116A 11BC;
+C656;C656;110B 116A 11BD;C656;110B 116A 11BD;
+C657;C657;110B 116A 11BE;C657;110B 116A 11BE;
+C658;C658;110B 116A 11BF;C658;110B 116A 11BF;
+C659;C659;110B 116A 11C0;C659;110B 116A 11C0;
+C65A;C65A;110B 116A 11C1;C65A;110B 116A 11C1;
+C65B;C65B;110B 116A 11C2;C65B;110B 116A 11C2;
+C65C;C65C;110B 116B;C65C;110B 116B;
+C65D;C65D;110B 116B 11A8;C65D;110B 116B 11A8;
+C65E;C65E;110B 116B 11A9;C65E;110B 116B 11A9;
+C65F;C65F;110B 116B 11AA;C65F;110B 116B 11AA;
+C660;C660;110B 116B 11AB;C660;110B 116B 11AB;
+C661;C661;110B 116B 11AC;C661;110B 116B 11AC;
+C662;C662;110B 116B 11AD;C662;110B 116B 11AD;
+C663;C663;110B 116B 11AE;C663;110B 116B 11AE;
+C664;C664;110B 116B 11AF;C664;110B 116B 11AF;
+C665;C665;110B 116B 11B0;C665;110B 116B 11B0;
+C666;C666;110B 116B 11B1;C666;110B 116B 11B1;
+C667;C667;110B 116B 11B2;C667;110B 116B 11B2;
+C668;C668;110B 116B 11B3;C668;110B 116B 11B3;
+C669;C669;110B 116B 11B4;C669;110B 116B 11B4;
+C66A;C66A;110B 116B 11B5;C66A;110B 116B 11B5;
+C66B;C66B;110B 116B 11B6;C66B;110B 116B 11B6;
+C66C;C66C;110B 116B 11B7;C66C;110B 116B 11B7;
+C66D;C66D;110B 116B 11B8;C66D;110B 116B 11B8;
+C66E;C66E;110B 116B 11B9;C66E;110B 116B 11B9;
+C66F;C66F;110B 116B 11BA;C66F;110B 116B 11BA;
+C670;C670;110B 116B 11BB;C670;110B 116B 11BB;
+C671;C671;110B 116B 11BC;C671;110B 116B 11BC;
+C672;C672;110B 116B 11BD;C672;110B 116B 11BD;
+C673;C673;110B 116B 11BE;C673;110B 116B 11BE;
+C674;C674;110B 116B 11BF;C674;110B 116B 11BF;
+C675;C675;110B 116B 11C0;C675;110B 116B 11C0;
+C676;C676;110B 116B 11C1;C676;110B 116B 11C1;
+C677;C677;110B 116B 11C2;C677;110B 116B 11C2;
+C678;C678;110B 116C;C678;110B 116C;
+C679;C679;110B 116C 11A8;C679;110B 116C 11A8;
+C67A;C67A;110B 116C 11A9;C67A;110B 116C 11A9;
+C67B;C67B;110B 116C 11AA;C67B;110B 116C 11AA;
+C67C;C67C;110B 116C 11AB;C67C;110B 116C 11AB;
+C67D;C67D;110B 116C 11AC;C67D;110B 116C 11AC;
+C67E;C67E;110B 116C 11AD;C67E;110B 116C 11AD;
+C67F;C67F;110B 116C 11AE;C67F;110B 116C 11AE;
+C680;C680;110B 116C 11AF;C680;110B 116C 11AF;
+C681;C681;110B 116C 11B0;C681;110B 116C 11B0;
+C682;C682;110B 116C 11B1;C682;110B 116C 11B1;
+C683;C683;110B 116C 11B2;C683;110B 116C 11B2;
+C684;C684;110B 116C 11B3;C684;110B 116C 11B3;
+C685;C685;110B 116C 11B4;C685;110B 116C 11B4;
+C686;C686;110B 116C 11B5;C686;110B 116C 11B5;
+C687;C687;110B 116C 11B6;C687;110B 116C 11B6;
+C688;C688;110B 116C 11B7;C688;110B 116C 11B7;
+C689;C689;110B 116C 11B8;C689;110B 116C 11B8;
+C68A;C68A;110B 116C 11B9;C68A;110B 116C 11B9;
+C68B;C68B;110B 116C 11BA;C68B;110B 116C 11BA;
+C68C;C68C;110B 116C 11BB;C68C;110B 116C 11BB;
+C68D;C68D;110B 116C 11BC;C68D;110B 116C 11BC;
+C68E;C68E;110B 116C 11BD;C68E;110B 116C 11BD;
+C68F;C68F;110B 116C 11BE;C68F;110B 116C 11BE;
+C690;C690;110B 116C 11BF;C690;110B 116C 11BF;
+C691;C691;110B 116C 11C0;C691;110B 116C 11C0;
+C692;C692;110B 116C 11C1;C692;110B 116C 11C1;
+C693;C693;110B 116C 11C2;C693;110B 116C 11C2;
+C694;C694;110B 116D;C694;110B 116D;
+C695;C695;110B 116D 11A8;C695;110B 116D 11A8;
+C696;C696;110B 116D 11A9;C696;110B 116D 11A9;
+C697;C697;110B 116D 11AA;C697;110B 116D 11AA;
+C698;C698;110B 116D 11AB;C698;110B 116D 11AB;
+C699;C699;110B 116D 11AC;C699;110B 116D 11AC;
+C69A;C69A;110B 116D 11AD;C69A;110B 116D 11AD;
+C69B;C69B;110B 116D 11AE;C69B;110B 116D 11AE;
+C69C;C69C;110B 116D 11AF;C69C;110B 116D 11AF;
+C69D;C69D;110B 116D 11B0;C69D;110B 116D 11B0;
+C69E;C69E;110B 116D 11B1;C69E;110B 116D 11B1;
+C69F;C69F;110B 116D 11B2;C69F;110B 116D 11B2;
+C6A0;C6A0;110B 116D 11B3;C6A0;110B 116D 11B3;
+C6A1;C6A1;110B 116D 11B4;C6A1;110B 116D 11B4;
+C6A2;C6A2;110B 116D 11B5;C6A2;110B 116D 11B5;
+C6A3;C6A3;110B 116D 11B6;C6A3;110B 116D 11B6;
+C6A4;C6A4;110B 116D 11B7;C6A4;110B 116D 11B7;
+C6A5;C6A5;110B 116D 11B8;C6A5;110B 116D 11B8;
+C6A6;C6A6;110B 116D 11B9;C6A6;110B 116D 11B9;
+C6A7;C6A7;110B 116D 11BA;C6A7;110B 116D 11BA;
+C6A8;C6A8;110B 116D 11BB;C6A8;110B 116D 11BB;
+C6A9;C6A9;110B 116D 11BC;C6A9;110B 116D 11BC;
+C6AA;C6AA;110B 116D 11BD;C6AA;110B 116D 11BD;
+C6AB;C6AB;110B 116D 11BE;C6AB;110B 116D 11BE;
+C6AC;C6AC;110B 116D 11BF;C6AC;110B 116D 11BF;
+C6AD;C6AD;110B 116D 11C0;C6AD;110B 116D 11C0;
+C6AE;C6AE;110B 116D 11C1;C6AE;110B 116D 11C1;
+C6AF;C6AF;110B 116D 11C2;C6AF;110B 116D 11C2;
+C6B0;C6B0;110B 116E;C6B0;110B 116E;
+C6B1;C6B1;110B 116E 11A8;C6B1;110B 116E 11A8;
+C6B2;C6B2;110B 116E 11A9;C6B2;110B 116E 11A9;
+C6B3;C6B3;110B 116E 11AA;C6B3;110B 116E 11AA;
+C6B4;C6B4;110B 116E 11AB;C6B4;110B 116E 11AB;
+C6B5;C6B5;110B 116E 11AC;C6B5;110B 116E 11AC;
+C6B6;C6B6;110B 116E 11AD;C6B6;110B 116E 11AD;
+C6B7;C6B7;110B 116E 11AE;C6B7;110B 116E 11AE;
+C6B8;C6B8;110B 116E 11AF;C6B8;110B 116E 11AF;
+C6B9;C6B9;110B 116E 11B0;C6B9;110B 116E 11B0;
+C6BA;C6BA;110B 116E 11B1;C6BA;110B 116E 11B1;
+C6BB;C6BB;110B 116E 11B2;C6BB;110B 116E 11B2;
+C6BC;C6BC;110B 116E 11B3;C6BC;110B 116E 11B3;
+C6BD;C6BD;110B 116E 11B4;C6BD;110B 116E 11B4;
+C6BE;C6BE;110B 116E 11B5;C6BE;110B 116E 11B5;
+C6BF;C6BF;110B 116E 11B6;C6BF;110B 116E 11B6;
+C6C0;C6C0;110B 116E 11B7;C6C0;110B 116E 11B7;
+C6C1;C6C1;110B 116E 11B8;C6C1;110B 116E 11B8;
+C6C2;C6C2;110B 116E 11B9;C6C2;110B 116E 11B9;
+C6C3;C6C3;110B 116E 11BA;C6C3;110B 116E 11BA;
+C6C4;C6C4;110B 116E 11BB;C6C4;110B 116E 11BB;
+C6C5;C6C5;110B 116E 11BC;C6C5;110B 116E 11BC;
+C6C6;C6C6;110B 116E 11BD;C6C6;110B 116E 11BD;
+C6C7;C6C7;110B 116E 11BE;C6C7;110B 116E 11BE;
+C6C8;C6C8;110B 116E 11BF;C6C8;110B 116E 11BF;
+C6C9;C6C9;110B 116E 11C0;C6C9;110B 116E 11C0;
+C6CA;C6CA;110B 116E 11C1;C6CA;110B 116E 11C1;
+C6CB;C6CB;110B 116E 11C2;C6CB;110B 116E 11C2;
+C6CC;C6CC;110B 116F;C6CC;110B 116F;
+C6CD;C6CD;110B 116F 11A8;C6CD;110B 116F 11A8;
+C6CE;C6CE;110B 116F 11A9;C6CE;110B 116F 11A9;
+C6CF;C6CF;110B 116F 11AA;C6CF;110B 116F 11AA;
+C6D0;C6D0;110B 116F 11AB;C6D0;110B 116F 11AB;
+C6D1;C6D1;110B 116F 11AC;C6D1;110B 116F 11AC;
+C6D2;C6D2;110B 116F 11AD;C6D2;110B 116F 11AD;
+C6D3;C6D3;110B 116F 11AE;C6D3;110B 116F 11AE;
+C6D4;C6D4;110B 116F 11AF;C6D4;110B 116F 11AF;
+C6D5;C6D5;110B 116F 11B0;C6D5;110B 116F 11B0;
+C6D6;C6D6;110B 116F 11B1;C6D6;110B 116F 11B1;
+C6D7;C6D7;110B 116F 11B2;C6D7;110B 116F 11B2;
+C6D8;C6D8;110B 116F 11B3;C6D8;110B 116F 11B3;
+C6D9;C6D9;110B 116F 11B4;C6D9;110B 116F 11B4;
+C6DA;C6DA;110B 116F 11B5;C6DA;110B 116F 11B5;
+C6DB;C6DB;110B 116F 11B6;C6DB;110B 116F 11B6;
+C6DC;C6DC;110B 116F 11B7;C6DC;110B 116F 11B7;
+C6DD;C6DD;110B 116F 11B8;C6DD;110B 116F 11B8;
+C6DE;C6DE;110B 116F 11B9;C6DE;110B 116F 11B9;
+C6DF;C6DF;110B 116F 11BA;C6DF;110B 116F 11BA;
+C6E0;C6E0;110B 116F 11BB;C6E0;110B 116F 11BB;
+C6E1;C6E1;110B 116F 11BC;C6E1;110B 116F 11BC;
+C6E2;C6E2;110B 116F 11BD;C6E2;110B 116F 11BD;
+C6E3;C6E3;110B 116F 11BE;C6E3;110B 116F 11BE;
+C6E4;C6E4;110B 116F 11BF;C6E4;110B 116F 11BF;
+C6E5;C6E5;110B 116F 11C0;C6E5;110B 116F 11C0;
+C6E6;C6E6;110B 116F 11C1;C6E6;110B 116F 11C1;
+C6E7;C6E7;110B 116F 11C2;C6E7;110B 116F 11C2;
+C6E8;C6E8;110B 1170;C6E8;110B 1170;
+C6E9;C6E9;110B 1170 11A8;C6E9;110B 1170 11A8;
+C6EA;C6EA;110B 1170 11A9;C6EA;110B 1170 11A9;
+C6EB;C6EB;110B 1170 11AA;C6EB;110B 1170 11AA;
+C6EC;C6EC;110B 1170 11AB;C6EC;110B 1170 11AB;
+C6ED;C6ED;110B 1170 11AC;C6ED;110B 1170 11AC;
+C6EE;C6EE;110B 1170 11AD;C6EE;110B 1170 11AD;
+C6EF;C6EF;110B 1170 11AE;C6EF;110B 1170 11AE;
+C6F0;C6F0;110B 1170 11AF;C6F0;110B 1170 11AF;
+C6F1;C6F1;110B 1170 11B0;C6F1;110B 1170 11B0;
+C6F2;C6F2;110B 1170 11B1;C6F2;110B 1170 11B1;
+C6F3;C6F3;110B 1170 11B2;C6F3;110B 1170 11B2;
+C6F4;C6F4;110B 1170 11B3;C6F4;110B 1170 11B3;
+C6F5;C6F5;110B 1170 11B4;C6F5;110B 1170 11B4;
+C6F6;C6F6;110B 1170 11B5;C6F6;110B 1170 11B5;
+C6F7;C6F7;110B 1170 11B6;C6F7;110B 1170 11B6;
+C6F8;C6F8;110B 1170 11B7;C6F8;110B 1170 11B7;
+C6F9;C6F9;110B 1170 11B8;C6F9;110B 1170 11B8;
+C6FA;C6FA;110B 1170 11B9;C6FA;110B 1170 11B9;
+C6FB;C6FB;110B 1170 11BA;C6FB;110B 1170 11BA;
+C6FC;C6FC;110B 1170 11BB;C6FC;110B 1170 11BB;
+C6FD;C6FD;110B 1170 11BC;C6FD;110B 1170 11BC;
+C6FE;C6FE;110B 1170 11BD;C6FE;110B 1170 11BD;
+C6FF;C6FF;110B 1170 11BE;C6FF;110B 1170 11BE;
+C700;C700;110B 1170 11BF;C700;110B 1170 11BF;
+C701;C701;110B 1170 11C0;C701;110B 1170 11C0;
+C702;C702;110B 1170 11C1;C702;110B 1170 11C1;
+C703;C703;110B 1170 11C2;C703;110B 1170 11C2;
+C704;C704;110B 1171;C704;110B 1171;
+C705;C705;110B 1171 11A8;C705;110B 1171 11A8;
+C706;C706;110B 1171 11A9;C706;110B 1171 11A9;
+C707;C707;110B 1171 11AA;C707;110B 1171 11AA;
+C708;C708;110B 1171 11AB;C708;110B 1171 11AB;
+C709;C709;110B 1171 11AC;C709;110B 1171 11AC;
+C70A;C70A;110B 1171 11AD;C70A;110B 1171 11AD;
+C70B;C70B;110B 1171 11AE;C70B;110B 1171 11AE;
+C70C;C70C;110B 1171 11AF;C70C;110B 1171 11AF;
+C70D;C70D;110B 1171 11B0;C70D;110B 1171 11B0;
+C70E;C70E;110B 1171 11B1;C70E;110B 1171 11B1;
+C70F;C70F;110B 1171 11B2;C70F;110B 1171 11B2;
+C710;C710;110B 1171 11B3;C710;110B 1171 11B3;
+C711;C711;110B 1171 11B4;C711;110B 1171 11B4;
+C712;C712;110B 1171 11B5;C712;110B 1171 11B5;
+C713;C713;110B 1171 11B6;C713;110B 1171 11B6;
+C714;C714;110B 1171 11B7;C714;110B 1171 11B7;
+C715;C715;110B 1171 11B8;C715;110B 1171 11B8;
+C716;C716;110B 1171 11B9;C716;110B 1171 11B9;
+C717;C717;110B 1171 11BA;C717;110B 1171 11BA;
+C718;C718;110B 1171 11BB;C718;110B 1171 11BB;
+C719;C719;110B 1171 11BC;C719;110B 1171 11BC;
+C71A;C71A;110B 1171 11BD;C71A;110B 1171 11BD;
+C71B;C71B;110B 1171 11BE;C71B;110B 1171 11BE;
+C71C;C71C;110B 1171 11BF;C71C;110B 1171 11BF;
+C71D;C71D;110B 1171 11C0;C71D;110B 1171 11C0;
+C71E;C71E;110B 1171 11C1;C71E;110B 1171 11C1;
+C71F;C71F;110B 1171 11C2;C71F;110B 1171 11C2;
+C720;C720;110B 1172;C720;110B 1172;
+C721;C721;110B 1172 11A8;C721;110B 1172 11A8;
+C722;C722;110B 1172 11A9;C722;110B 1172 11A9;
+C723;C723;110B 1172 11AA;C723;110B 1172 11AA;
+C724;C724;110B 1172 11AB;C724;110B 1172 11AB;
+C725;C725;110B 1172 11AC;C725;110B 1172 11AC;
+C726;C726;110B 1172 11AD;C726;110B 1172 11AD;
+C727;C727;110B 1172 11AE;C727;110B 1172 11AE;
+C728;C728;110B 1172 11AF;C728;110B 1172 11AF;
+C729;C729;110B 1172 11B0;C729;110B 1172 11B0;
+C72A;C72A;110B 1172 11B1;C72A;110B 1172 11B1;
+C72B;C72B;110B 1172 11B2;C72B;110B 1172 11B2;
+C72C;C72C;110B 1172 11B3;C72C;110B 1172 11B3;
+C72D;C72D;110B 1172 11B4;C72D;110B 1172 11B4;
+C72E;C72E;110B 1172 11B5;C72E;110B 1172 11B5;
+C72F;C72F;110B 1172 11B6;C72F;110B 1172 11B6;
+C730;C730;110B 1172 11B7;C730;110B 1172 11B7;
+C731;C731;110B 1172 11B8;C731;110B 1172 11B8;
+C732;C732;110B 1172 11B9;C732;110B 1172 11B9;
+C733;C733;110B 1172 11BA;C733;110B 1172 11BA;
+C734;C734;110B 1172 11BB;C734;110B 1172 11BB;
+C735;C735;110B 1172 11BC;C735;110B 1172 11BC;
+C736;C736;110B 1172 11BD;C736;110B 1172 11BD;
+C737;C737;110B 1172 11BE;C737;110B 1172 11BE;
+C738;C738;110B 1172 11BF;C738;110B 1172 11BF;
+C739;C739;110B 1172 11C0;C739;110B 1172 11C0;
+C73A;C73A;110B 1172 11C1;C73A;110B 1172 11C1;
+C73B;C73B;110B 1172 11C2;C73B;110B 1172 11C2;
+C73C;C73C;110B 1173;C73C;110B 1173;
+C73D;C73D;110B 1173 11A8;C73D;110B 1173 11A8;
+C73E;C73E;110B 1173 11A9;C73E;110B 1173 11A9;
+C73F;C73F;110B 1173 11AA;C73F;110B 1173 11AA;
+C740;C740;110B 1173 11AB;C740;110B 1173 11AB;
+C741;C741;110B 1173 11AC;C741;110B 1173 11AC;
+C742;C742;110B 1173 11AD;C742;110B 1173 11AD;
+C743;C743;110B 1173 11AE;C743;110B 1173 11AE;
+C744;C744;110B 1173 11AF;C744;110B 1173 11AF;
+C745;C745;110B 1173 11B0;C745;110B 1173 11B0;
+C746;C746;110B 1173 11B1;C746;110B 1173 11B1;
+C747;C747;110B 1173 11B2;C747;110B 1173 11B2;
+C748;C748;110B 1173 11B3;C748;110B 1173 11B3;
+C749;C749;110B 1173 11B4;C749;110B 1173 11B4;
+C74A;C74A;110B 1173 11B5;C74A;110B 1173 11B5;
+C74B;C74B;110B 1173 11B6;C74B;110B 1173 11B6;
+C74C;C74C;110B 1173 11B7;C74C;110B 1173 11B7;
+C74D;C74D;110B 1173 11B8;C74D;110B 1173 11B8;
+C74E;C74E;110B 1173 11B9;C74E;110B 1173 11B9;
+C74F;C74F;110B 1173 11BA;C74F;110B 1173 11BA;
+C750;C750;110B 1173 11BB;C750;110B 1173 11BB;
+C751;C751;110B 1173 11BC;C751;110B 1173 11BC;
+C752;C752;110B 1173 11BD;C752;110B 1173 11BD;
+C753;C753;110B 1173 11BE;C753;110B 1173 11BE;
+C754;C754;110B 1173 11BF;C754;110B 1173 11BF;
+C755;C755;110B 1173 11C0;C755;110B 1173 11C0;
+C756;C756;110B 1173 11C1;C756;110B 1173 11C1;
+C757;C757;110B 1173 11C2;C757;110B 1173 11C2;
+C758;C758;110B 1174;C758;110B 1174;
+C759;C759;110B 1174 11A8;C759;110B 1174 11A8;
+C75A;C75A;110B 1174 11A9;C75A;110B 1174 11A9;
+C75B;C75B;110B 1174 11AA;C75B;110B 1174 11AA;
+C75C;C75C;110B 1174 11AB;C75C;110B 1174 11AB;
+C75D;C75D;110B 1174 11AC;C75D;110B 1174 11AC;
+C75E;C75E;110B 1174 11AD;C75E;110B 1174 11AD;
+C75F;C75F;110B 1174 11AE;C75F;110B 1174 11AE;
+C760;C760;110B 1174 11AF;C760;110B 1174 11AF;
+C761;C761;110B 1174 11B0;C761;110B 1174 11B0;
+C762;C762;110B 1174 11B1;C762;110B 1174 11B1;
+C763;C763;110B 1174 11B2;C763;110B 1174 11B2;
+C764;C764;110B 1174 11B3;C764;110B 1174 11B3;
+C765;C765;110B 1174 11B4;C765;110B 1174 11B4;
+C766;C766;110B 1174 11B5;C766;110B 1174 11B5;
+C767;C767;110B 1174 11B6;C767;110B 1174 11B6;
+C768;C768;110B 1174 11B7;C768;110B 1174 11B7;
+C769;C769;110B 1174 11B8;C769;110B 1174 11B8;
+C76A;C76A;110B 1174 11B9;C76A;110B 1174 11B9;
+C76B;C76B;110B 1174 11BA;C76B;110B 1174 11BA;
+C76C;C76C;110B 1174 11BB;C76C;110B 1174 11BB;
+C76D;C76D;110B 1174 11BC;C76D;110B 1174 11BC;
+C76E;C76E;110B 1174 11BD;C76E;110B 1174 11BD;
+C76F;C76F;110B 1174 11BE;C76F;110B 1174 11BE;
+C770;C770;110B 1174 11BF;C770;110B 1174 11BF;
+C771;C771;110B 1174 11C0;C771;110B 1174 11C0;
+C772;C772;110B 1174 11C1;C772;110B 1174 11C1;
+C773;C773;110B 1174 11C2;C773;110B 1174 11C2;
+C774;C774;110B 1175;C774;110B 1175;
+C775;C775;110B 1175 11A8;C775;110B 1175 11A8;
+C776;C776;110B 1175 11A9;C776;110B 1175 11A9;
+C777;C777;110B 1175 11AA;C777;110B 1175 11AA;
+C778;C778;110B 1175 11AB;C778;110B 1175 11AB;
+C779;C779;110B 1175 11AC;C779;110B 1175 11AC;
+C77A;C77A;110B 1175 11AD;C77A;110B 1175 11AD;
+C77B;C77B;110B 1175 11AE;C77B;110B 1175 11AE;
+C77C;C77C;110B 1175 11AF;C77C;110B 1175 11AF;
+C77D;C77D;110B 1175 11B0;C77D;110B 1175 11B0;
+C77E;C77E;110B 1175 11B1;C77E;110B 1175 11B1;
+C77F;C77F;110B 1175 11B2;C77F;110B 1175 11B2;
+C780;C780;110B 1175 11B3;C780;110B 1175 11B3;
+C781;C781;110B 1175 11B4;C781;110B 1175 11B4;
+C782;C782;110B 1175 11B5;C782;110B 1175 11B5;
+C783;C783;110B 1175 11B6;C783;110B 1175 11B6;
+C784;C784;110B 1175 11B7;C784;110B 1175 11B7;
+C785;C785;110B 1175 11B8;C785;110B 1175 11B8;
+C786;C786;110B 1175 11B9;C786;110B 1175 11B9;
+C787;C787;110B 1175 11BA;C787;110B 1175 11BA;
+C788;C788;110B 1175 11BB;C788;110B 1175 11BB;
+C789;C789;110B 1175 11BC;C789;110B 1175 11BC;
+C78A;C78A;110B 1175 11BD;C78A;110B 1175 11BD;
+C78B;C78B;110B 1175 11BE;C78B;110B 1175 11BE;
+C78C;C78C;110B 1175 11BF;C78C;110B 1175 11BF;
+C78D;C78D;110B 1175 11C0;C78D;110B 1175 11C0;
+C78E;C78E;110B 1175 11C1;C78E;110B 1175 11C1;
+C78F;C78F;110B 1175 11C2;C78F;110B 1175 11C2;
+C790;C790;110C 1161;C790;110C 1161;
+C791;C791;110C 1161 11A8;C791;110C 1161 11A8;
+C792;C792;110C 1161 11A9;C792;110C 1161 11A9;
+C793;C793;110C 1161 11AA;C793;110C 1161 11AA;
+C794;C794;110C 1161 11AB;C794;110C 1161 11AB;
+C795;C795;110C 1161 11AC;C795;110C 1161 11AC;
+C796;C796;110C 1161 11AD;C796;110C 1161 11AD;
+C797;C797;110C 1161 11AE;C797;110C 1161 11AE;
+C798;C798;110C 1161 11AF;C798;110C 1161 11AF;
+C799;C799;110C 1161 11B0;C799;110C 1161 11B0;
+C79A;C79A;110C 1161 11B1;C79A;110C 1161 11B1;
+C79B;C79B;110C 1161 11B2;C79B;110C 1161 11B2;
+C79C;C79C;110C 1161 11B3;C79C;110C 1161 11B3;
+C79D;C79D;110C 1161 11B4;C79D;110C 1161 11B4;
+C79E;C79E;110C 1161 11B5;C79E;110C 1161 11B5;
+C79F;C79F;110C 1161 11B6;C79F;110C 1161 11B6;
+C7A0;C7A0;110C 1161 11B7;C7A0;110C 1161 11B7;
+C7A1;C7A1;110C 1161 11B8;C7A1;110C 1161 11B8;
+C7A2;C7A2;110C 1161 11B9;C7A2;110C 1161 11B9;
+C7A3;C7A3;110C 1161 11BA;C7A3;110C 1161 11BA;
+C7A4;C7A4;110C 1161 11BB;C7A4;110C 1161 11BB;
+C7A5;C7A5;110C 1161 11BC;C7A5;110C 1161 11BC;
+C7A6;C7A6;110C 1161 11BD;C7A6;110C 1161 11BD;
+C7A7;C7A7;110C 1161 11BE;C7A7;110C 1161 11BE;
+C7A8;C7A8;110C 1161 11BF;C7A8;110C 1161 11BF;
+C7A9;C7A9;110C 1161 11C0;C7A9;110C 1161 11C0;
+C7AA;C7AA;110C 1161 11C1;C7AA;110C 1161 11C1;
+C7AB;C7AB;110C 1161 11C2;C7AB;110C 1161 11C2;
+C7AC;C7AC;110C 1162;C7AC;110C 1162;
+C7AD;C7AD;110C 1162 11A8;C7AD;110C 1162 11A8;
+C7AE;C7AE;110C 1162 11A9;C7AE;110C 1162 11A9;
+C7AF;C7AF;110C 1162 11AA;C7AF;110C 1162 11AA;
+C7B0;C7B0;110C 1162 11AB;C7B0;110C 1162 11AB;
+C7B1;C7B1;110C 1162 11AC;C7B1;110C 1162 11AC;
+C7B2;C7B2;110C 1162 11AD;C7B2;110C 1162 11AD;
+C7B3;C7B3;110C 1162 11AE;C7B3;110C 1162 11AE;
+C7B4;C7B4;110C 1162 11AF;C7B4;110C 1162 11AF;
+C7B5;C7B5;110C 1162 11B0;C7B5;110C 1162 11B0;
+C7B6;C7B6;110C 1162 11B1;C7B6;110C 1162 11B1;
+C7B7;C7B7;110C 1162 11B2;C7B7;110C 1162 11B2;
+C7B8;C7B8;110C 1162 11B3;C7B8;110C 1162 11B3;
+C7B9;C7B9;110C 1162 11B4;C7B9;110C 1162 11B4;
+C7BA;C7BA;110C 1162 11B5;C7BA;110C 1162 11B5;
+C7BB;C7BB;110C 1162 11B6;C7BB;110C 1162 11B6;
+C7BC;C7BC;110C 1162 11B7;C7BC;110C 1162 11B7;
+C7BD;C7BD;110C 1162 11B8;C7BD;110C 1162 11B8;
+C7BE;C7BE;110C 1162 11B9;C7BE;110C 1162 11B9;
+C7BF;C7BF;110C 1162 11BA;C7BF;110C 1162 11BA;
+C7C0;C7C0;110C 1162 11BB;C7C0;110C 1162 11BB;
+C7C1;C7C1;110C 1162 11BC;C7C1;110C 1162 11BC;
+C7C2;C7C2;110C 1162 11BD;C7C2;110C 1162 11BD;
+C7C3;C7C3;110C 1162 11BE;C7C3;110C 1162 11BE;
+C7C4;C7C4;110C 1162 11BF;C7C4;110C 1162 11BF;
+C7C5;C7C5;110C 1162 11C0;C7C5;110C 1162 11C0;
+C7C6;C7C6;110C 1162 11C1;C7C6;110C 1162 11C1;
+C7C7;C7C7;110C 1162 11C2;C7C7;110C 1162 11C2;
+C7C8;C7C8;110C 1163;C7C8;110C 1163;
+C7C9;C7C9;110C 1163 11A8;C7C9;110C 1163 11A8;
+C7CA;C7CA;110C 1163 11A9;C7CA;110C 1163 11A9;
+C7CB;C7CB;110C 1163 11AA;C7CB;110C 1163 11AA;
+C7CC;C7CC;110C 1163 11AB;C7CC;110C 1163 11AB;
+C7CD;C7CD;110C 1163 11AC;C7CD;110C 1163 11AC;
+C7CE;C7CE;110C 1163 11AD;C7CE;110C 1163 11AD;
+C7CF;C7CF;110C 1163 11AE;C7CF;110C 1163 11AE;
+C7D0;C7D0;110C 1163 11AF;C7D0;110C 1163 11AF;
+C7D1;C7D1;110C 1163 11B0;C7D1;110C 1163 11B0;
+C7D2;C7D2;110C 1163 11B1;C7D2;110C 1163 11B1;
+C7D3;C7D3;110C 1163 11B2;C7D3;110C 1163 11B2;
+C7D4;C7D4;110C 1163 11B3;C7D4;110C 1163 11B3;
+C7D5;C7D5;110C 1163 11B4;C7D5;110C 1163 11B4;
+C7D6;C7D6;110C 1163 11B5;C7D6;110C 1163 11B5;
+C7D7;C7D7;110C 1163 11B6;C7D7;110C 1163 11B6;
+C7D8;C7D8;110C 1163 11B7;C7D8;110C 1163 11B7;
+C7D9;C7D9;110C 1163 11B8;C7D9;110C 1163 11B8;
+C7DA;C7DA;110C 1163 11B9;C7DA;110C 1163 11B9;
+C7DB;C7DB;110C 1163 11BA;C7DB;110C 1163 11BA;
+C7DC;C7DC;110C 1163 11BB;C7DC;110C 1163 11BB;
+C7DD;C7DD;110C 1163 11BC;C7DD;110C 1163 11BC;
+C7DE;C7DE;110C 1163 11BD;C7DE;110C 1163 11BD;
+C7DF;C7DF;110C 1163 11BE;C7DF;110C 1163 11BE;
+C7E0;C7E0;110C 1163 11BF;C7E0;110C 1163 11BF;
+C7E1;C7E1;110C 1163 11C0;C7E1;110C 1163 11C0;
+C7E2;C7E2;110C 1163 11C1;C7E2;110C 1163 11C1;
+C7E3;C7E3;110C 1163 11C2;C7E3;110C 1163 11C2;
+C7E4;C7E4;110C 1164;C7E4;110C 1164;
+C7E5;C7E5;110C 1164 11A8;C7E5;110C 1164 11A8;
+C7E6;C7E6;110C 1164 11A9;C7E6;110C 1164 11A9;
+C7E7;C7E7;110C 1164 11AA;C7E7;110C 1164 11AA;
+C7E8;C7E8;110C 1164 11AB;C7E8;110C 1164 11AB;
+C7E9;C7E9;110C 1164 11AC;C7E9;110C 1164 11AC;
+C7EA;C7EA;110C 1164 11AD;C7EA;110C 1164 11AD;
+C7EB;C7EB;110C 1164 11AE;C7EB;110C 1164 11AE;
+C7EC;C7EC;110C 1164 11AF;C7EC;110C 1164 11AF;
+C7ED;C7ED;110C 1164 11B0;C7ED;110C 1164 11B0;
+C7EE;C7EE;110C 1164 11B1;C7EE;110C 1164 11B1;
+C7EF;C7EF;110C 1164 11B2;C7EF;110C 1164 11B2;
+C7F0;C7F0;110C 1164 11B3;C7F0;110C 1164 11B3;
+C7F1;C7F1;110C 1164 11B4;C7F1;110C 1164 11B4;
+C7F2;C7F2;110C 1164 11B5;C7F2;110C 1164 11B5;
+C7F3;C7F3;110C 1164 11B6;C7F3;110C 1164 11B6;
+C7F4;C7F4;110C 1164 11B7;C7F4;110C 1164 11B7;
+C7F5;C7F5;110C 1164 11B8;C7F5;110C 1164 11B8;
+C7F6;C7F6;110C 1164 11B9;C7F6;110C 1164 11B9;
+C7F7;C7F7;110C 1164 11BA;C7F7;110C 1164 11BA;
+C7F8;C7F8;110C 1164 11BB;C7F8;110C 1164 11BB;
+C7F9;C7F9;110C 1164 11BC;C7F9;110C 1164 11BC;
+C7FA;C7FA;110C 1164 11BD;C7FA;110C 1164 11BD;
+C7FB;C7FB;110C 1164 11BE;C7FB;110C 1164 11BE;
+C7FC;C7FC;110C 1164 11BF;C7FC;110C 1164 11BF;
+C7FD;C7FD;110C 1164 11C0;C7FD;110C 1164 11C0;
+C7FE;C7FE;110C 1164 11C1;C7FE;110C 1164 11C1;
+C7FF;C7FF;110C 1164 11C2;C7FF;110C 1164 11C2;
+C800;C800;110C 1165;C800;110C 1165;
+C801;C801;110C 1165 11A8;C801;110C 1165 11A8;
+C802;C802;110C 1165 11A9;C802;110C 1165 11A9;
+C803;C803;110C 1165 11AA;C803;110C 1165 11AA;
+C804;C804;110C 1165 11AB;C804;110C 1165 11AB;
+C805;C805;110C 1165 11AC;C805;110C 1165 11AC;
+C806;C806;110C 1165 11AD;C806;110C 1165 11AD;
+C807;C807;110C 1165 11AE;C807;110C 1165 11AE;
+C808;C808;110C 1165 11AF;C808;110C 1165 11AF;
+C809;C809;110C 1165 11B0;C809;110C 1165 11B0;
+C80A;C80A;110C 1165 11B1;C80A;110C 1165 11B1;
+C80B;C80B;110C 1165 11B2;C80B;110C 1165 11B2;
+C80C;C80C;110C 1165 11B3;C80C;110C 1165 11B3;
+C80D;C80D;110C 1165 11B4;C80D;110C 1165 11B4;
+C80E;C80E;110C 1165 11B5;C80E;110C 1165 11B5;
+C80F;C80F;110C 1165 11B6;C80F;110C 1165 11B6;
+C810;C810;110C 1165 11B7;C810;110C 1165 11B7;
+C811;C811;110C 1165 11B8;C811;110C 1165 11B8;
+C812;C812;110C 1165 11B9;C812;110C 1165 11B9;
+C813;C813;110C 1165 11BA;C813;110C 1165 11BA;
+C814;C814;110C 1165 11BB;C814;110C 1165 11BB;
+C815;C815;110C 1165 11BC;C815;110C 1165 11BC;
+C816;C816;110C 1165 11BD;C816;110C 1165 11BD;
+C817;C817;110C 1165 11BE;C817;110C 1165 11BE;
+C818;C818;110C 1165 11BF;C818;110C 1165 11BF;
+C819;C819;110C 1165 11C0;C819;110C 1165 11C0;
+C81A;C81A;110C 1165 11C1;C81A;110C 1165 11C1;
+C81B;C81B;110C 1165 11C2;C81B;110C 1165 11C2;
+C81C;C81C;110C 1166;C81C;110C 1166;
+C81D;C81D;110C 1166 11A8;C81D;110C 1166 11A8;
+C81E;C81E;110C 1166 11A9;C81E;110C 1166 11A9;
+C81F;C81F;110C 1166 11AA;C81F;110C 1166 11AA;
+C820;C820;110C 1166 11AB;C820;110C 1166 11AB;
+C821;C821;110C 1166 11AC;C821;110C 1166 11AC;
+C822;C822;110C 1166 11AD;C822;110C 1166 11AD;
+C823;C823;110C 1166 11AE;C823;110C 1166 11AE;
+C824;C824;110C 1166 11AF;C824;110C 1166 11AF;
+C825;C825;110C 1166 11B0;C825;110C 1166 11B0;
+C826;C826;110C 1166 11B1;C826;110C 1166 11B1;
+C827;C827;110C 1166 11B2;C827;110C 1166 11B2;
+C828;C828;110C 1166 11B3;C828;110C 1166 11B3;
+C829;C829;110C 1166 11B4;C829;110C 1166 11B4;
+C82A;C82A;110C 1166 11B5;C82A;110C 1166 11B5;
+C82B;C82B;110C 1166 11B6;C82B;110C 1166 11B6;
+C82C;C82C;110C 1166 11B7;C82C;110C 1166 11B7;
+C82D;C82D;110C 1166 11B8;C82D;110C 1166 11B8;
+C82E;C82E;110C 1166 11B9;C82E;110C 1166 11B9;
+C82F;C82F;110C 1166 11BA;C82F;110C 1166 11BA;
+C830;C830;110C 1166 11BB;C830;110C 1166 11BB;
+C831;C831;110C 1166 11BC;C831;110C 1166 11BC;
+C832;C832;110C 1166 11BD;C832;110C 1166 11BD;
+C833;C833;110C 1166 11BE;C833;110C 1166 11BE;
+C834;C834;110C 1166 11BF;C834;110C 1166 11BF;
+C835;C835;110C 1166 11C0;C835;110C 1166 11C0;
+C836;C836;110C 1166 11C1;C836;110C 1166 11C1;
+C837;C837;110C 1166 11C2;C837;110C 1166 11C2;
+C838;C838;110C 1167;C838;110C 1167;
+C839;C839;110C 1167 11A8;C839;110C 1167 11A8;
+C83A;C83A;110C 1167 11A9;C83A;110C 1167 11A9;
+C83B;C83B;110C 1167 11AA;C83B;110C 1167 11AA;
+C83C;C83C;110C 1167 11AB;C83C;110C 1167 11AB;
+C83D;C83D;110C 1167 11AC;C83D;110C 1167 11AC;
+C83E;C83E;110C 1167 11AD;C83E;110C 1167 11AD;
+C83F;C83F;110C 1167 11AE;C83F;110C 1167 11AE;
+C840;C840;110C 1167 11AF;C840;110C 1167 11AF;
+C841;C841;110C 1167 11B0;C841;110C 1167 11B0;
+C842;C842;110C 1167 11B1;C842;110C 1167 11B1;
+C843;C843;110C 1167 11B2;C843;110C 1167 11B2;
+C844;C844;110C 1167 11B3;C844;110C 1167 11B3;
+C845;C845;110C 1167 11B4;C845;110C 1167 11B4;
+C846;C846;110C 1167 11B5;C846;110C 1167 11B5;
+C847;C847;110C 1167 11B6;C847;110C 1167 11B6;
+C848;C848;110C 1167 11B7;C848;110C 1167 11B7;
+C849;C849;110C 1167 11B8;C849;110C 1167 11B8;
+C84A;C84A;110C 1167 11B9;C84A;110C 1167 11B9;
+C84B;C84B;110C 1167 11BA;C84B;110C 1167 11BA;
+C84C;C84C;110C 1167 11BB;C84C;110C 1167 11BB;
+C84D;C84D;110C 1167 11BC;C84D;110C 1167 11BC;
+C84E;C84E;110C 1167 11BD;C84E;110C 1167 11BD;
+C84F;C84F;110C 1167 11BE;C84F;110C 1167 11BE;
+C850;C850;110C 1167 11BF;C850;110C 1167 11BF;
+C851;C851;110C 1167 11C0;C851;110C 1167 11C0;
+C852;C852;110C 1167 11C1;C852;110C 1167 11C1;
+C853;C853;110C 1167 11C2;C853;110C 1167 11C2;
+C854;C854;110C 1168;C854;110C 1168;
+C855;C855;110C 1168 11A8;C855;110C 1168 11A8;
+C856;C856;110C 1168 11A9;C856;110C 1168 11A9;
+C857;C857;110C 1168 11AA;C857;110C 1168 11AA;
+C858;C858;110C 1168 11AB;C858;110C 1168 11AB;
+C859;C859;110C 1168 11AC;C859;110C 1168 11AC;
+C85A;C85A;110C 1168 11AD;C85A;110C 1168 11AD;
+C85B;C85B;110C 1168 11AE;C85B;110C 1168 11AE;
+C85C;C85C;110C 1168 11AF;C85C;110C 1168 11AF;
+C85D;C85D;110C 1168 11B0;C85D;110C 1168 11B0;
+C85E;C85E;110C 1168 11B1;C85E;110C 1168 11B1;
+C85F;C85F;110C 1168 11B2;C85F;110C 1168 11B2;
+C860;C860;110C 1168 11B3;C860;110C 1168 11B3;
+C861;C861;110C 1168 11B4;C861;110C 1168 11B4;
+C862;C862;110C 1168 11B5;C862;110C 1168 11B5;
+C863;C863;110C 1168 11B6;C863;110C 1168 11B6;
+C864;C864;110C 1168 11B7;C864;110C 1168 11B7;
+C865;C865;110C 1168 11B8;C865;110C 1168 11B8;
+C866;C866;110C 1168 11B9;C866;110C 1168 11B9;
+C867;C867;110C 1168 11BA;C867;110C 1168 11BA;
+C868;C868;110C 1168 11BB;C868;110C 1168 11BB;
+C869;C869;110C 1168 11BC;C869;110C 1168 11BC;
+C86A;C86A;110C 1168 11BD;C86A;110C 1168 11BD;
+C86B;C86B;110C 1168 11BE;C86B;110C 1168 11BE;
+C86C;C86C;110C 1168 11BF;C86C;110C 1168 11BF;
+C86D;C86D;110C 1168 11C0;C86D;110C 1168 11C0;
+C86E;C86E;110C 1168 11C1;C86E;110C 1168 11C1;
+C86F;C86F;110C 1168 11C2;C86F;110C 1168 11C2;
+C870;C870;110C 1169;C870;110C 1169;
+C871;C871;110C 1169 11A8;C871;110C 1169 11A8;
+C872;C872;110C 1169 11A9;C872;110C 1169 11A9;
+C873;C873;110C 1169 11AA;C873;110C 1169 11AA;
+C874;C874;110C 1169 11AB;C874;110C 1169 11AB;
+C875;C875;110C 1169 11AC;C875;110C 1169 11AC;
+C876;C876;110C 1169 11AD;C876;110C 1169 11AD;
+C877;C877;110C 1169 11AE;C877;110C 1169 11AE;
+C878;C878;110C 1169 11AF;C878;110C 1169 11AF;
+C879;C879;110C 1169 11B0;C879;110C 1169 11B0;
+C87A;C87A;110C 1169 11B1;C87A;110C 1169 11B1;
+C87B;C87B;110C 1169 11B2;C87B;110C 1169 11B2;
+C87C;C87C;110C 1169 11B3;C87C;110C 1169 11B3;
+C87D;C87D;110C 1169 11B4;C87D;110C 1169 11B4;
+C87E;C87E;110C 1169 11B5;C87E;110C 1169 11B5;
+C87F;C87F;110C 1169 11B6;C87F;110C 1169 11B6;
+C880;C880;110C 1169 11B7;C880;110C 1169 11B7;
+C881;C881;110C 1169 11B8;C881;110C 1169 11B8;
+C882;C882;110C 1169 11B9;C882;110C 1169 11B9;
+C883;C883;110C 1169 11BA;C883;110C 1169 11BA;
+C884;C884;110C 1169 11BB;C884;110C 1169 11BB;
+C885;C885;110C 1169 11BC;C885;110C 1169 11BC;
+C886;C886;110C 1169 11BD;C886;110C 1169 11BD;
+C887;C887;110C 1169 11BE;C887;110C 1169 11BE;
+C888;C888;110C 1169 11BF;C888;110C 1169 11BF;
+C889;C889;110C 1169 11C0;C889;110C 1169 11C0;
+C88A;C88A;110C 1169 11C1;C88A;110C 1169 11C1;
+C88B;C88B;110C 1169 11C2;C88B;110C 1169 11C2;
+C88C;C88C;110C 116A;C88C;110C 116A;
+C88D;C88D;110C 116A 11A8;C88D;110C 116A 11A8;
+C88E;C88E;110C 116A 11A9;C88E;110C 116A 11A9;
+C88F;C88F;110C 116A 11AA;C88F;110C 116A 11AA;
+C890;C890;110C 116A 11AB;C890;110C 116A 11AB;
+C891;C891;110C 116A 11AC;C891;110C 116A 11AC;
+C892;C892;110C 116A 11AD;C892;110C 116A 11AD;
+C893;C893;110C 116A 11AE;C893;110C 116A 11AE;
+C894;C894;110C 116A 11AF;C894;110C 116A 11AF;
+C895;C895;110C 116A 11B0;C895;110C 116A 11B0;
+C896;C896;110C 116A 11B1;C896;110C 116A 11B1;
+C897;C897;110C 116A 11B2;C897;110C 116A 11B2;
+C898;C898;110C 116A 11B3;C898;110C 116A 11B3;
+C899;C899;110C 116A 11B4;C899;110C 116A 11B4;
+C89A;C89A;110C 116A 11B5;C89A;110C 116A 11B5;
+C89B;C89B;110C 116A 11B6;C89B;110C 116A 11B6;
+C89C;C89C;110C 116A 11B7;C89C;110C 116A 11B7;
+C89D;C89D;110C 116A 11B8;C89D;110C 116A 11B8;
+C89E;C89E;110C 116A 11B9;C89E;110C 116A 11B9;
+C89F;C89F;110C 116A 11BA;C89F;110C 116A 11BA;
+C8A0;C8A0;110C 116A 11BB;C8A0;110C 116A 11BB;
+C8A1;C8A1;110C 116A 11BC;C8A1;110C 116A 11BC;
+C8A2;C8A2;110C 116A 11BD;C8A2;110C 116A 11BD;
+C8A3;C8A3;110C 116A 11BE;C8A3;110C 116A 11BE;
+C8A4;C8A4;110C 116A 11BF;C8A4;110C 116A 11BF;
+C8A5;C8A5;110C 116A 11C0;C8A5;110C 116A 11C0;
+C8A6;C8A6;110C 116A 11C1;C8A6;110C 116A 11C1;
+C8A7;C8A7;110C 116A 11C2;C8A7;110C 116A 11C2;
+C8A8;C8A8;110C 116B;C8A8;110C 116B;
+C8A9;C8A9;110C 116B 11A8;C8A9;110C 116B 11A8;
+C8AA;C8AA;110C 116B 11A9;C8AA;110C 116B 11A9;
+C8AB;C8AB;110C 116B 11AA;C8AB;110C 116B 11AA;
+C8AC;C8AC;110C 116B 11AB;C8AC;110C 116B 11AB;
+C8AD;C8AD;110C 116B 11AC;C8AD;110C 116B 11AC;
+C8AE;C8AE;110C 116B 11AD;C8AE;110C 116B 11AD;
+C8AF;C8AF;110C 116B 11AE;C8AF;110C 116B 11AE;
+C8B0;C8B0;110C 116B 11AF;C8B0;110C 116B 11AF;
+C8B1;C8B1;110C 116B 11B0;C8B1;110C 116B 11B0;
+C8B2;C8B2;110C 116B 11B1;C8B2;110C 116B 11B1;
+C8B3;C8B3;110C 116B 11B2;C8B3;110C 116B 11B2;
+C8B4;C8B4;110C 116B 11B3;C8B4;110C 116B 11B3;
+C8B5;C8B5;110C 116B 11B4;C8B5;110C 116B 11B4;
+C8B6;C8B6;110C 116B 11B5;C8B6;110C 116B 11B5;
+C8B7;C8B7;110C 116B 11B6;C8B7;110C 116B 11B6;
+C8B8;C8B8;110C 116B 11B7;C8B8;110C 116B 11B7;
+C8B9;C8B9;110C 116B 11B8;C8B9;110C 116B 11B8;
+C8BA;C8BA;110C 116B 11B9;C8BA;110C 116B 11B9;
+C8BB;C8BB;110C 116B 11BA;C8BB;110C 116B 11BA;
+C8BC;C8BC;110C 116B 11BB;C8BC;110C 116B 11BB;
+C8BD;C8BD;110C 116B 11BC;C8BD;110C 116B 11BC;
+C8BE;C8BE;110C 116B 11BD;C8BE;110C 116B 11BD;
+C8BF;C8BF;110C 116B 11BE;C8BF;110C 116B 11BE;
+C8C0;C8C0;110C 116B 11BF;C8C0;110C 116B 11BF;
+C8C1;C8C1;110C 116B 11C0;C8C1;110C 116B 11C0;
+C8C2;C8C2;110C 116B 11C1;C8C2;110C 116B 11C1;
+C8C3;C8C3;110C 116B 11C2;C8C3;110C 116B 11C2;
+C8C4;C8C4;110C 116C;C8C4;110C 116C;
+C8C5;C8C5;110C 116C 11A8;C8C5;110C 116C 11A8;
+C8C6;C8C6;110C 116C 11A9;C8C6;110C 116C 11A9;
+C8C7;C8C7;110C 116C 11AA;C8C7;110C 116C 11AA;
+C8C8;C8C8;110C 116C 11AB;C8C8;110C 116C 11AB;
+C8C9;C8C9;110C 116C 11AC;C8C9;110C 116C 11AC;
+C8CA;C8CA;110C 116C 11AD;C8CA;110C 116C 11AD;
+C8CB;C8CB;110C 116C 11AE;C8CB;110C 116C 11AE;
+C8CC;C8CC;110C 116C 11AF;C8CC;110C 116C 11AF;
+C8CD;C8CD;110C 116C 11B0;C8CD;110C 116C 11B0;
+C8CE;C8CE;110C 116C 11B1;C8CE;110C 116C 11B1;
+C8CF;C8CF;110C 116C 11B2;C8CF;110C 116C 11B2;
+C8D0;C8D0;110C 116C 11B3;C8D0;110C 116C 11B3;
+C8D1;C8D1;110C 116C 11B4;C8D1;110C 116C 11B4;
+C8D2;C8D2;110C 116C 11B5;C8D2;110C 116C 11B5;
+C8D3;C8D3;110C 116C 11B6;C8D3;110C 116C 11B6;
+C8D4;C8D4;110C 116C 11B7;C8D4;110C 116C 11B7;
+C8D5;C8D5;110C 116C 11B8;C8D5;110C 116C 11B8;
+C8D6;C8D6;110C 116C 11B9;C8D6;110C 116C 11B9;
+C8D7;C8D7;110C 116C 11BA;C8D7;110C 116C 11BA;
+C8D8;C8D8;110C 116C 11BB;C8D8;110C 116C 11BB;
+C8D9;C8D9;110C 116C 11BC;C8D9;110C 116C 11BC;
+C8DA;C8DA;110C 116C 11BD;C8DA;110C 116C 11BD;
+C8DB;C8DB;110C 116C 11BE;C8DB;110C 116C 11BE;
+C8DC;C8DC;110C 116C 11BF;C8DC;110C 116C 11BF;
+C8DD;C8DD;110C 116C 11C0;C8DD;110C 116C 11C0;
+C8DE;C8DE;110C 116C 11C1;C8DE;110C 116C 11C1;
+C8DF;C8DF;110C 116C 11C2;C8DF;110C 116C 11C2;
+C8E0;C8E0;110C 116D;C8E0;110C 116D;
+C8E1;C8E1;110C 116D 11A8;C8E1;110C 116D 11A8;
+C8E2;C8E2;110C 116D 11A9;C8E2;110C 116D 11A9;
+C8E3;C8E3;110C 116D 11AA;C8E3;110C 116D 11AA;
+C8E4;C8E4;110C 116D 11AB;C8E4;110C 116D 11AB;
+C8E5;C8E5;110C 116D 11AC;C8E5;110C 116D 11AC;
+C8E6;C8E6;110C 116D 11AD;C8E6;110C 116D 11AD;
+C8E7;C8E7;110C 116D 11AE;C8E7;110C 116D 11AE;
+C8E8;C8E8;110C 116D 11AF;C8E8;110C 116D 11AF;
+C8E9;C8E9;110C 116D 11B0;C8E9;110C 116D 11B0;
+C8EA;C8EA;110C 116D 11B1;C8EA;110C 116D 11B1;
+C8EB;C8EB;110C 116D 11B2;C8EB;110C 116D 11B2;
+C8EC;C8EC;110C 116D 11B3;C8EC;110C 116D 11B3;
+C8ED;C8ED;110C 116D 11B4;C8ED;110C 116D 11B4;
+C8EE;C8EE;110C 116D 11B5;C8EE;110C 116D 11B5;
+C8EF;C8EF;110C 116D 11B6;C8EF;110C 116D 11B6;
+C8F0;C8F0;110C 116D 11B7;C8F0;110C 116D 11B7;
+C8F1;C8F1;110C 116D 11B8;C8F1;110C 116D 11B8;
+C8F2;C8F2;110C 116D 11B9;C8F2;110C 116D 11B9;
+C8F3;C8F3;110C 116D 11BA;C8F3;110C 116D 11BA;
+C8F4;C8F4;110C 116D 11BB;C8F4;110C 116D 11BB;
+C8F5;C8F5;110C 116D 11BC;C8F5;110C 116D 11BC;
+C8F6;C8F6;110C 116D 11BD;C8F6;110C 116D 11BD;
+C8F7;C8F7;110C 116D 11BE;C8F7;110C 116D 11BE;
+C8F8;C8F8;110C 116D 11BF;C8F8;110C 116D 11BF;
+C8F9;C8F9;110C 116D 11C0;C8F9;110C 116D 11C0;
+C8FA;C8FA;110C 116D 11C1;C8FA;110C 116D 11C1;
+C8FB;C8FB;110C 116D 11C2;C8FB;110C 116D 11C2;
+C8FC;C8FC;110C 116E;C8FC;110C 116E;
+C8FD;C8FD;110C 116E 11A8;C8FD;110C 116E 11A8;
+C8FE;C8FE;110C 116E 11A9;C8FE;110C 116E 11A9;
+C8FF;C8FF;110C 116E 11AA;C8FF;110C 116E 11AA;
+C900;C900;110C 116E 11AB;C900;110C 116E 11AB;
+C901;C901;110C 116E 11AC;C901;110C 116E 11AC;
+C902;C902;110C 116E 11AD;C902;110C 116E 11AD;
+C903;C903;110C 116E 11AE;C903;110C 116E 11AE;
+C904;C904;110C 116E 11AF;C904;110C 116E 11AF;
+C905;C905;110C 116E 11B0;C905;110C 116E 11B0;
+C906;C906;110C 116E 11B1;C906;110C 116E 11B1;
+C907;C907;110C 116E 11B2;C907;110C 116E 11B2;
+C908;C908;110C 116E 11B3;C908;110C 116E 11B3;
+C909;C909;110C 116E 11B4;C909;110C 116E 11B4;
+C90A;C90A;110C 116E 11B5;C90A;110C 116E 11B5;
+C90B;C90B;110C 116E 11B6;C90B;110C 116E 11B6;
+C90C;C90C;110C 116E 11B7;C90C;110C 116E 11B7;
+C90D;C90D;110C 116E 11B8;C90D;110C 116E 11B8;
+C90E;C90E;110C 116E 11B9;C90E;110C 116E 11B9;
+C90F;C90F;110C 116E 11BA;C90F;110C 116E 11BA;
+C910;C910;110C 116E 11BB;C910;110C 116E 11BB;
+C911;C911;110C 116E 11BC;C911;110C 116E 11BC;
+C912;C912;110C 116E 11BD;C912;110C 116E 11BD;
+C913;C913;110C 116E 11BE;C913;110C 116E 11BE;
+C914;C914;110C 116E 11BF;C914;110C 116E 11BF;
+C915;C915;110C 116E 11C0;C915;110C 116E 11C0;
+C916;C916;110C 116E 11C1;C916;110C 116E 11C1;
+C917;C917;110C 116E 11C2;C917;110C 116E 11C2;
+C918;C918;110C 116F;C918;110C 116F;
+C919;C919;110C 116F 11A8;C919;110C 116F 11A8;
+C91A;C91A;110C 116F 11A9;C91A;110C 116F 11A9;
+C91B;C91B;110C 116F 11AA;C91B;110C 116F 11AA;
+C91C;C91C;110C 116F 11AB;C91C;110C 116F 11AB;
+C91D;C91D;110C 116F 11AC;C91D;110C 116F 11AC;
+C91E;C91E;110C 116F 11AD;C91E;110C 116F 11AD;
+C91F;C91F;110C 116F 11AE;C91F;110C 116F 11AE;
+C920;C920;110C 116F 11AF;C920;110C 116F 11AF;
+C921;C921;110C 116F 11B0;C921;110C 116F 11B0;
+C922;C922;110C 116F 11B1;C922;110C 116F 11B1;
+C923;C923;110C 116F 11B2;C923;110C 116F 11B2;
+C924;C924;110C 116F 11B3;C924;110C 116F 11B3;
+C925;C925;110C 116F 11B4;C925;110C 116F 11B4;
+C926;C926;110C 116F 11B5;C926;110C 116F 11B5;
+C927;C927;110C 116F 11B6;C927;110C 116F 11B6;
+C928;C928;110C 116F 11B7;C928;110C 116F 11B7;
+C929;C929;110C 116F 11B8;C929;110C 116F 11B8;
+C92A;C92A;110C 116F 11B9;C92A;110C 116F 11B9;
+C92B;C92B;110C 116F 11BA;C92B;110C 116F 11BA;
+C92C;C92C;110C 116F 11BB;C92C;110C 116F 11BB;
+C92D;C92D;110C 116F 11BC;C92D;110C 116F 11BC;
+C92E;C92E;110C 116F 11BD;C92E;110C 116F 11BD;
+C92F;C92F;110C 116F 11BE;C92F;110C 116F 11BE;
+C930;C930;110C 116F 11BF;C930;110C 116F 11BF;
+C931;C931;110C 116F 11C0;C931;110C 116F 11C0;
+C932;C932;110C 116F 11C1;C932;110C 116F 11C1;
+C933;C933;110C 116F 11C2;C933;110C 116F 11C2;
+C934;C934;110C 1170;C934;110C 1170;
+C935;C935;110C 1170 11A8;C935;110C 1170 11A8;
+C936;C936;110C 1170 11A9;C936;110C 1170 11A9;
+C937;C937;110C 1170 11AA;C937;110C 1170 11AA;
+C938;C938;110C 1170 11AB;C938;110C 1170 11AB;
+C939;C939;110C 1170 11AC;C939;110C 1170 11AC;
+C93A;C93A;110C 1170 11AD;C93A;110C 1170 11AD;
+C93B;C93B;110C 1170 11AE;C93B;110C 1170 11AE;
+C93C;C93C;110C 1170 11AF;C93C;110C 1170 11AF;
+C93D;C93D;110C 1170 11B0;C93D;110C 1170 11B0;
+C93E;C93E;110C 1170 11B1;C93E;110C 1170 11B1;
+C93F;C93F;110C 1170 11B2;C93F;110C 1170 11B2;
+C940;C940;110C 1170 11B3;C940;110C 1170 11B3;
+C941;C941;110C 1170 11B4;C941;110C 1170 11B4;
+C942;C942;110C 1170 11B5;C942;110C 1170 11B5;
+C943;C943;110C 1170 11B6;C943;110C 1170 11B6;
+C944;C944;110C 1170 11B7;C944;110C 1170 11B7;
+C945;C945;110C 1170 11B8;C945;110C 1170 11B8;
+C946;C946;110C 1170 11B9;C946;110C 1170 11B9;
+C947;C947;110C 1170 11BA;C947;110C 1170 11BA;
+C948;C948;110C 1170 11BB;C948;110C 1170 11BB;
+C949;C949;110C 1170 11BC;C949;110C 1170 11BC;
+C94A;C94A;110C 1170 11BD;C94A;110C 1170 11BD;
+C94B;C94B;110C 1170 11BE;C94B;110C 1170 11BE;
+C94C;C94C;110C 1170 11BF;C94C;110C 1170 11BF;
+C94D;C94D;110C 1170 11C0;C94D;110C 1170 11C0;
+C94E;C94E;110C 1170 11C1;C94E;110C 1170 11C1;
+C94F;C94F;110C 1170 11C2;C94F;110C 1170 11C2;
+C950;C950;110C 1171;C950;110C 1171;
+C951;C951;110C 1171 11A8;C951;110C 1171 11A8;
+C952;C952;110C 1171 11A9;C952;110C 1171 11A9;
+C953;C953;110C 1171 11AA;C953;110C 1171 11AA;
+C954;C954;110C 1171 11AB;C954;110C 1171 11AB;
+C955;C955;110C 1171 11AC;C955;110C 1171 11AC;
+C956;C956;110C 1171 11AD;C956;110C 1171 11AD;
+C957;C957;110C 1171 11AE;C957;110C 1171 11AE;
+C958;C958;110C 1171 11AF;C958;110C 1171 11AF;
+C959;C959;110C 1171 11B0;C959;110C 1171 11B0;
+C95A;C95A;110C 1171 11B1;C95A;110C 1171 11B1;
+C95B;C95B;110C 1171 11B2;C95B;110C 1171 11B2;
+C95C;C95C;110C 1171 11B3;C95C;110C 1171 11B3;
+C95D;C95D;110C 1171 11B4;C95D;110C 1171 11B4;
+C95E;C95E;110C 1171 11B5;C95E;110C 1171 11B5;
+C95F;C95F;110C 1171 11B6;C95F;110C 1171 11B6;
+C960;C960;110C 1171 11B7;C960;110C 1171 11B7;
+C961;C961;110C 1171 11B8;C961;110C 1171 11B8;
+C962;C962;110C 1171 11B9;C962;110C 1171 11B9;
+C963;C963;110C 1171 11BA;C963;110C 1171 11BA;
+C964;C964;110C 1171 11BB;C964;110C 1171 11BB;
+C965;C965;110C 1171 11BC;C965;110C 1171 11BC;
+C966;C966;110C 1171 11BD;C966;110C 1171 11BD;
+C967;C967;110C 1171 11BE;C967;110C 1171 11BE;
+C968;C968;110C 1171 11BF;C968;110C 1171 11BF;
+C969;C969;110C 1171 11C0;C969;110C 1171 11C0;
+C96A;C96A;110C 1171 11C1;C96A;110C 1171 11C1;
+C96B;C96B;110C 1171 11C2;C96B;110C 1171 11C2;
+C96C;C96C;110C 1172;C96C;110C 1172;
+C96D;C96D;110C 1172 11A8;C96D;110C 1172 11A8;
+C96E;C96E;110C 1172 11A9;C96E;110C 1172 11A9;
+C96F;C96F;110C 1172 11AA;C96F;110C 1172 11AA;
+C970;C970;110C 1172 11AB;C970;110C 1172 11AB;
+C971;C971;110C 1172 11AC;C971;110C 1172 11AC;
+C972;C972;110C 1172 11AD;C972;110C 1172 11AD;
+C973;C973;110C 1172 11AE;C973;110C 1172 11AE;
+C974;C974;110C 1172 11AF;C974;110C 1172 11AF;
+C975;C975;110C 1172 11B0;C975;110C 1172 11B0;
+C976;C976;110C 1172 11B1;C976;110C 1172 11B1;
+C977;C977;110C 1172 11B2;C977;110C 1172 11B2;
+C978;C978;110C 1172 11B3;C978;110C 1172 11B3;
+C979;C979;110C 1172 11B4;C979;110C 1172 11B4;
+C97A;C97A;110C 1172 11B5;C97A;110C 1172 11B5;
+C97B;C97B;110C 1172 11B6;C97B;110C 1172 11B6;
+C97C;C97C;110C 1172 11B7;C97C;110C 1172 11B7;
+C97D;C97D;110C 1172 11B8;C97D;110C 1172 11B8;
+C97E;C97E;110C 1172 11B9;C97E;110C 1172 11B9;
+C97F;C97F;110C 1172 11BA;C97F;110C 1172 11BA;
+C980;C980;110C 1172 11BB;C980;110C 1172 11BB;
+C981;C981;110C 1172 11BC;C981;110C 1172 11BC;
+C982;C982;110C 1172 11BD;C982;110C 1172 11BD;
+C983;C983;110C 1172 11BE;C983;110C 1172 11BE;
+C984;C984;110C 1172 11BF;C984;110C 1172 11BF;
+C985;C985;110C 1172 11C0;C985;110C 1172 11C0;
+C986;C986;110C 1172 11C1;C986;110C 1172 11C1;
+C987;C987;110C 1172 11C2;C987;110C 1172 11C2;
+C988;C988;110C 1173;C988;110C 1173;
+C989;C989;110C 1173 11A8;C989;110C 1173 11A8;
+C98A;C98A;110C 1173 11A9;C98A;110C 1173 11A9;
+C98B;C98B;110C 1173 11AA;C98B;110C 1173 11AA;
+C98C;C98C;110C 1173 11AB;C98C;110C 1173 11AB;
+C98D;C98D;110C 1173 11AC;C98D;110C 1173 11AC;
+C98E;C98E;110C 1173 11AD;C98E;110C 1173 11AD;
+C98F;C98F;110C 1173 11AE;C98F;110C 1173 11AE;
+C990;C990;110C 1173 11AF;C990;110C 1173 11AF;
+C991;C991;110C 1173 11B0;C991;110C 1173 11B0;
+C992;C992;110C 1173 11B1;C992;110C 1173 11B1;
+C993;C993;110C 1173 11B2;C993;110C 1173 11B2;
+C994;C994;110C 1173 11B3;C994;110C 1173 11B3;
+C995;C995;110C 1173 11B4;C995;110C 1173 11B4;
+C996;C996;110C 1173 11B5;C996;110C 1173 11B5;
+C997;C997;110C 1173 11B6;C997;110C 1173 11B6;
+C998;C998;110C 1173 11B7;C998;110C 1173 11B7;
+C999;C999;110C 1173 11B8;C999;110C 1173 11B8;
+C99A;C99A;110C 1173 11B9;C99A;110C 1173 11B9;
+C99B;C99B;110C 1173 11BA;C99B;110C 1173 11BA;
+C99C;C99C;110C 1173 11BB;C99C;110C 1173 11BB;
+C99D;C99D;110C 1173 11BC;C99D;110C 1173 11BC;
+C99E;C99E;110C 1173 11BD;C99E;110C 1173 11BD;
+C99F;C99F;110C 1173 11BE;C99F;110C 1173 11BE;
+C9A0;C9A0;110C 1173 11BF;C9A0;110C 1173 11BF;
+C9A1;C9A1;110C 1173 11C0;C9A1;110C 1173 11C0;
+C9A2;C9A2;110C 1173 11C1;C9A2;110C 1173 11C1;
+C9A3;C9A3;110C 1173 11C2;C9A3;110C 1173 11C2;
+C9A4;C9A4;110C 1174;C9A4;110C 1174;
+C9A5;C9A5;110C 1174 11A8;C9A5;110C 1174 11A8;
+C9A6;C9A6;110C 1174 11A9;C9A6;110C 1174 11A9;
+C9A7;C9A7;110C 1174 11AA;C9A7;110C 1174 11AA;
+C9A8;C9A8;110C 1174 11AB;C9A8;110C 1174 11AB;
+C9A9;C9A9;110C 1174 11AC;C9A9;110C 1174 11AC;
+C9AA;C9AA;110C 1174 11AD;C9AA;110C 1174 11AD;
+C9AB;C9AB;110C 1174 11AE;C9AB;110C 1174 11AE;
+C9AC;C9AC;110C 1174 11AF;C9AC;110C 1174 11AF;
+C9AD;C9AD;110C 1174 11B0;C9AD;110C 1174 11B0;
+C9AE;C9AE;110C 1174 11B1;C9AE;110C 1174 11B1;
+C9AF;C9AF;110C 1174 11B2;C9AF;110C 1174 11B2;
+C9B0;C9B0;110C 1174 11B3;C9B0;110C 1174 11B3;
+C9B1;C9B1;110C 1174 11B4;C9B1;110C 1174 11B4;
+C9B2;C9B2;110C 1174 11B5;C9B2;110C 1174 11B5;
+C9B3;C9B3;110C 1174 11B6;C9B3;110C 1174 11B6;
+C9B4;C9B4;110C 1174 11B7;C9B4;110C 1174 11B7;
+C9B5;C9B5;110C 1174 11B8;C9B5;110C 1174 11B8;
+C9B6;C9B6;110C 1174 11B9;C9B6;110C 1174 11B9;
+C9B7;C9B7;110C 1174 11BA;C9B7;110C 1174 11BA;
+C9B8;C9B8;110C 1174 11BB;C9B8;110C 1174 11BB;
+C9B9;C9B9;110C 1174 11BC;C9B9;110C 1174 11BC;
+C9BA;C9BA;110C 1174 11BD;C9BA;110C 1174 11BD;
+C9BB;C9BB;110C 1174 11BE;C9BB;110C 1174 11BE;
+C9BC;C9BC;110C 1174 11BF;C9BC;110C 1174 11BF;
+C9BD;C9BD;110C 1174 11C0;C9BD;110C 1174 11C0;
+C9BE;C9BE;110C 1174 11C1;C9BE;110C 1174 11C1;
+C9BF;C9BF;110C 1174 11C2;C9BF;110C 1174 11C2;
+C9C0;C9C0;110C 1175;C9C0;110C 1175;
+C9C1;C9C1;110C 1175 11A8;C9C1;110C 1175 11A8;
+C9C2;C9C2;110C 1175 11A9;C9C2;110C 1175 11A9;
+C9C3;C9C3;110C 1175 11AA;C9C3;110C 1175 11AA;
+C9C4;C9C4;110C 1175 11AB;C9C4;110C 1175 11AB;
+C9C5;C9C5;110C 1175 11AC;C9C5;110C 1175 11AC;
+C9C6;C9C6;110C 1175 11AD;C9C6;110C 1175 11AD;
+C9C7;C9C7;110C 1175 11AE;C9C7;110C 1175 11AE;
+C9C8;C9C8;110C 1175 11AF;C9C8;110C 1175 11AF;
+C9C9;C9C9;110C 1175 11B0;C9C9;110C 1175 11B0;
+C9CA;C9CA;110C 1175 11B1;C9CA;110C 1175 11B1;
+C9CB;C9CB;110C 1175 11B2;C9CB;110C 1175 11B2;
+C9CC;C9CC;110C 1175 11B3;C9CC;110C 1175 11B3;
+C9CD;C9CD;110C 1175 11B4;C9CD;110C 1175 11B4;
+C9CE;C9CE;110C 1175 11B5;C9CE;110C 1175 11B5;
+C9CF;C9CF;110C 1175 11B6;C9CF;110C 1175 11B6;
+C9D0;C9D0;110C 1175 11B7;C9D0;110C 1175 11B7;
+C9D1;C9D1;110C 1175 11B8;C9D1;110C 1175 11B8;
+C9D2;C9D2;110C 1175 11B9;C9D2;110C 1175 11B9;
+C9D3;C9D3;110C 1175 11BA;C9D3;110C 1175 11BA;
+C9D4;C9D4;110C 1175 11BB;C9D4;110C 1175 11BB;
+C9D5;C9D5;110C 1175 11BC;C9D5;110C 1175 11BC;
+C9D6;C9D6;110C 1175 11BD;C9D6;110C 1175 11BD;
+C9D7;C9D7;110C 1175 11BE;C9D7;110C 1175 11BE;
+C9D8;C9D8;110C 1175 11BF;C9D8;110C 1175 11BF;
+C9D9;C9D9;110C 1175 11C0;C9D9;110C 1175 11C0;
+C9DA;C9DA;110C 1175 11C1;C9DA;110C 1175 11C1;
+C9DB;C9DB;110C 1175 11C2;C9DB;110C 1175 11C2;
+C9DC;C9DC;110D 1161;C9DC;110D 1161;
+C9DD;C9DD;110D 1161 11A8;C9DD;110D 1161 11A8;
+C9DE;C9DE;110D 1161 11A9;C9DE;110D 1161 11A9;
+C9DF;C9DF;110D 1161 11AA;C9DF;110D 1161 11AA;
+C9E0;C9E0;110D 1161 11AB;C9E0;110D 1161 11AB;
+C9E1;C9E1;110D 1161 11AC;C9E1;110D 1161 11AC;
+C9E2;C9E2;110D 1161 11AD;C9E2;110D 1161 11AD;
+C9E3;C9E3;110D 1161 11AE;C9E3;110D 1161 11AE;
+C9E4;C9E4;110D 1161 11AF;C9E4;110D 1161 11AF;
+C9E5;C9E5;110D 1161 11B0;C9E5;110D 1161 11B0;
+C9E6;C9E6;110D 1161 11B1;C9E6;110D 1161 11B1;
+C9E7;C9E7;110D 1161 11B2;C9E7;110D 1161 11B2;
+C9E8;C9E8;110D 1161 11B3;C9E8;110D 1161 11B3;
+C9E9;C9E9;110D 1161 11B4;C9E9;110D 1161 11B4;
+C9EA;C9EA;110D 1161 11B5;C9EA;110D 1161 11B5;
+C9EB;C9EB;110D 1161 11B6;C9EB;110D 1161 11B6;
+C9EC;C9EC;110D 1161 11B7;C9EC;110D 1161 11B7;
+C9ED;C9ED;110D 1161 11B8;C9ED;110D 1161 11B8;
+C9EE;C9EE;110D 1161 11B9;C9EE;110D 1161 11B9;
+C9EF;C9EF;110D 1161 11BA;C9EF;110D 1161 11BA;
+C9F0;C9F0;110D 1161 11BB;C9F0;110D 1161 11BB;
+C9F1;C9F1;110D 1161 11BC;C9F1;110D 1161 11BC;
+C9F2;C9F2;110D 1161 11BD;C9F2;110D 1161 11BD;
+C9F3;C9F3;110D 1161 11BE;C9F3;110D 1161 11BE;
+C9F4;C9F4;110D 1161 11BF;C9F4;110D 1161 11BF;
+C9F5;C9F5;110D 1161 11C0;C9F5;110D 1161 11C0;
+C9F6;C9F6;110D 1161 11C1;C9F6;110D 1161 11C1;
+C9F7;C9F7;110D 1161 11C2;C9F7;110D 1161 11C2;
+C9F8;C9F8;110D 1162;C9F8;110D 1162;
+C9F9;C9F9;110D 1162 11A8;C9F9;110D 1162 11A8;
+C9FA;C9FA;110D 1162 11A9;C9FA;110D 1162 11A9;
+C9FB;C9FB;110D 1162 11AA;C9FB;110D 1162 11AA;
+C9FC;C9FC;110D 1162 11AB;C9FC;110D 1162 11AB;
+C9FD;C9FD;110D 1162 11AC;C9FD;110D 1162 11AC;
+C9FE;C9FE;110D 1162 11AD;C9FE;110D 1162 11AD;
+C9FF;C9FF;110D 1162 11AE;C9FF;110D 1162 11AE;
+CA00;CA00;110D 1162 11AF;CA00;110D 1162 11AF;
+CA01;CA01;110D 1162 11B0;CA01;110D 1162 11B0;
+CA02;CA02;110D 1162 11B1;CA02;110D 1162 11B1;
+CA03;CA03;110D 1162 11B2;CA03;110D 1162 11B2;
+CA04;CA04;110D 1162 11B3;CA04;110D 1162 11B3;
+CA05;CA05;110D 1162 11B4;CA05;110D 1162 11B4;
+CA06;CA06;110D 1162 11B5;CA06;110D 1162 11B5;
+CA07;CA07;110D 1162 11B6;CA07;110D 1162 11B6;
+CA08;CA08;110D 1162 11B7;CA08;110D 1162 11B7;
+CA09;CA09;110D 1162 11B8;CA09;110D 1162 11B8;
+CA0A;CA0A;110D 1162 11B9;CA0A;110D 1162 11B9;
+CA0B;CA0B;110D 1162 11BA;CA0B;110D 1162 11BA;
+CA0C;CA0C;110D 1162 11BB;CA0C;110D 1162 11BB;
+CA0D;CA0D;110D 1162 11BC;CA0D;110D 1162 11BC;
+CA0E;CA0E;110D 1162 11BD;CA0E;110D 1162 11BD;
+CA0F;CA0F;110D 1162 11BE;CA0F;110D 1162 11BE;
+CA10;CA10;110D 1162 11BF;CA10;110D 1162 11BF;
+CA11;CA11;110D 1162 11C0;CA11;110D 1162 11C0;
+CA12;CA12;110D 1162 11C1;CA12;110D 1162 11C1;
+CA13;CA13;110D 1162 11C2;CA13;110D 1162 11C2;
+CA14;CA14;110D 1163;CA14;110D 1163;
+CA15;CA15;110D 1163 11A8;CA15;110D 1163 11A8;
+CA16;CA16;110D 1163 11A9;CA16;110D 1163 11A9;
+CA17;CA17;110D 1163 11AA;CA17;110D 1163 11AA;
+CA18;CA18;110D 1163 11AB;CA18;110D 1163 11AB;
+CA19;CA19;110D 1163 11AC;CA19;110D 1163 11AC;
+CA1A;CA1A;110D 1163 11AD;CA1A;110D 1163 11AD;
+CA1B;CA1B;110D 1163 11AE;CA1B;110D 1163 11AE;
+CA1C;CA1C;110D 1163 11AF;CA1C;110D 1163 11AF;
+CA1D;CA1D;110D 1163 11B0;CA1D;110D 1163 11B0;
+CA1E;CA1E;110D 1163 11B1;CA1E;110D 1163 11B1;
+CA1F;CA1F;110D 1163 11B2;CA1F;110D 1163 11B2;
+CA20;CA20;110D 1163 11B3;CA20;110D 1163 11B3;
+CA21;CA21;110D 1163 11B4;CA21;110D 1163 11B4;
+CA22;CA22;110D 1163 11B5;CA22;110D 1163 11B5;
+CA23;CA23;110D 1163 11B6;CA23;110D 1163 11B6;
+CA24;CA24;110D 1163 11B7;CA24;110D 1163 11B7;
+CA25;CA25;110D 1163 11B8;CA25;110D 1163 11B8;
+CA26;CA26;110D 1163 11B9;CA26;110D 1163 11B9;
+CA27;CA27;110D 1163 11BA;CA27;110D 1163 11BA;
+CA28;CA28;110D 1163 11BB;CA28;110D 1163 11BB;
+CA29;CA29;110D 1163 11BC;CA29;110D 1163 11BC;
+CA2A;CA2A;110D 1163 11BD;CA2A;110D 1163 11BD;
+CA2B;CA2B;110D 1163 11BE;CA2B;110D 1163 11BE;
+CA2C;CA2C;110D 1163 11BF;CA2C;110D 1163 11BF;
+CA2D;CA2D;110D 1163 11C0;CA2D;110D 1163 11C0;
+CA2E;CA2E;110D 1163 11C1;CA2E;110D 1163 11C1;
+CA2F;CA2F;110D 1163 11C2;CA2F;110D 1163 11C2;
+CA30;CA30;110D 1164;CA30;110D 1164;
+CA31;CA31;110D 1164 11A8;CA31;110D 1164 11A8;
+CA32;CA32;110D 1164 11A9;CA32;110D 1164 11A9;
+CA33;CA33;110D 1164 11AA;CA33;110D 1164 11AA;
+CA34;CA34;110D 1164 11AB;CA34;110D 1164 11AB;
+CA35;CA35;110D 1164 11AC;CA35;110D 1164 11AC;
+CA36;CA36;110D 1164 11AD;CA36;110D 1164 11AD;
+CA37;CA37;110D 1164 11AE;CA37;110D 1164 11AE;
+CA38;CA38;110D 1164 11AF;CA38;110D 1164 11AF;
+CA39;CA39;110D 1164 11B0;CA39;110D 1164 11B0;
+CA3A;CA3A;110D 1164 11B1;CA3A;110D 1164 11B1;
+CA3B;CA3B;110D 1164 11B2;CA3B;110D 1164 11B2;
+CA3C;CA3C;110D 1164 11B3;CA3C;110D 1164 11B3;
+CA3D;CA3D;110D 1164 11B4;CA3D;110D 1164 11B4;
+CA3E;CA3E;110D 1164 11B5;CA3E;110D 1164 11B5;
+CA3F;CA3F;110D 1164 11B6;CA3F;110D 1164 11B6;
+CA40;CA40;110D 1164 11B7;CA40;110D 1164 11B7;
+CA41;CA41;110D 1164 11B8;CA41;110D 1164 11B8;
+CA42;CA42;110D 1164 11B9;CA42;110D 1164 11B9;
+CA43;CA43;110D 1164 11BA;CA43;110D 1164 11BA;
+CA44;CA44;110D 1164 11BB;CA44;110D 1164 11BB;
+CA45;CA45;110D 1164 11BC;CA45;110D 1164 11BC;
+CA46;CA46;110D 1164 11BD;CA46;110D 1164 11BD;
+CA47;CA47;110D 1164 11BE;CA47;110D 1164 11BE;
+CA48;CA48;110D 1164 11BF;CA48;110D 1164 11BF;
+CA49;CA49;110D 1164 11C0;CA49;110D 1164 11C0;
+CA4A;CA4A;110D 1164 11C1;CA4A;110D 1164 11C1;
+CA4B;CA4B;110D 1164 11C2;CA4B;110D 1164 11C2;
+CA4C;CA4C;110D 1165;CA4C;110D 1165;
+CA4D;CA4D;110D 1165 11A8;CA4D;110D 1165 11A8;
+CA4E;CA4E;110D 1165 11A9;CA4E;110D 1165 11A9;
+CA4F;CA4F;110D 1165 11AA;CA4F;110D 1165 11AA;
+CA50;CA50;110D 1165 11AB;CA50;110D 1165 11AB;
+CA51;CA51;110D 1165 11AC;CA51;110D 1165 11AC;
+CA52;CA52;110D 1165 11AD;CA52;110D 1165 11AD;
+CA53;CA53;110D 1165 11AE;CA53;110D 1165 11AE;
+CA54;CA54;110D 1165 11AF;CA54;110D 1165 11AF;
+CA55;CA55;110D 1165 11B0;CA55;110D 1165 11B0;
+CA56;CA56;110D 1165 11B1;CA56;110D 1165 11B1;
+CA57;CA57;110D 1165 11B2;CA57;110D 1165 11B2;
+CA58;CA58;110D 1165 11B3;CA58;110D 1165 11B3;
+CA59;CA59;110D 1165 11B4;CA59;110D 1165 11B4;
+CA5A;CA5A;110D 1165 11B5;CA5A;110D 1165 11B5;
+CA5B;CA5B;110D 1165 11B6;CA5B;110D 1165 11B6;
+CA5C;CA5C;110D 1165 11B7;CA5C;110D 1165 11B7;
+CA5D;CA5D;110D 1165 11B8;CA5D;110D 1165 11B8;
+CA5E;CA5E;110D 1165 11B9;CA5E;110D 1165 11B9;
+CA5F;CA5F;110D 1165 11BA;CA5F;110D 1165 11BA;
+CA60;CA60;110D 1165 11BB;CA60;110D 1165 11BB;
+CA61;CA61;110D 1165 11BC;CA61;110D 1165 11BC;
+CA62;CA62;110D 1165 11BD;CA62;110D 1165 11BD;
+CA63;CA63;110D 1165 11BE;CA63;110D 1165 11BE;
+CA64;CA64;110D 1165 11BF;CA64;110D 1165 11BF;
+CA65;CA65;110D 1165 11C0;CA65;110D 1165 11C0;
+CA66;CA66;110D 1165 11C1;CA66;110D 1165 11C1;
+CA67;CA67;110D 1165 11C2;CA67;110D 1165 11C2;
+CA68;CA68;110D 1166;CA68;110D 1166;
+CA69;CA69;110D 1166 11A8;CA69;110D 1166 11A8;
+CA6A;CA6A;110D 1166 11A9;CA6A;110D 1166 11A9;
+CA6B;CA6B;110D 1166 11AA;CA6B;110D 1166 11AA;
+CA6C;CA6C;110D 1166 11AB;CA6C;110D 1166 11AB;
+CA6D;CA6D;110D 1166 11AC;CA6D;110D 1166 11AC;
+CA6E;CA6E;110D 1166 11AD;CA6E;110D 1166 11AD;
+CA6F;CA6F;110D 1166 11AE;CA6F;110D 1166 11AE;
+CA70;CA70;110D 1166 11AF;CA70;110D 1166 11AF;
+CA71;CA71;110D 1166 11B0;CA71;110D 1166 11B0;
+CA72;CA72;110D 1166 11B1;CA72;110D 1166 11B1;
+CA73;CA73;110D 1166 11B2;CA73;110D 1166 11B2;
+CA74;CA74;110D 1166 11B3;CA74;110D 1166 11B3;
+CA75;CA75;110D 1166 11B4;CA75;110D 1166 11B4;
+CA76;CA76;110D 1166 11B5;CA76;110D 1166 11B5;
+CA77;CA77;110D 1166 11B6;CA77;110D 1166 11B6;
+CA78;CA78;110D 1166 11B7;CA78;110D 1166 11B7;
+CA79;CA79;110D 1166 11B8;CA79;110D 1166 11B8;
+CA7A;CA7A;110D 1166 11B9;CA7A;110D 1166 11B9;
+CA7B;CA7B;110D 1166 11BA;CA7B;110D 1166 11BA;
+CA7C;CA7C;110D 1166 11BB;CA7C;110D 1166 11BB;
+CA7D;CA7D;110D 1166 11BC;CA7D;110D 1166 11BC;
+CA7E;CA7E;110D 1166 11BD;CA7E;110D 1166 11BD;
+CA7F;CA7F;110D 1166 11BE;CA7F;110D 1166 11BE;
+CA80;CA80;110D 1166 11BF;CA80;110D 1166 11BF;
+CA81;CA81;110D 1166 11C0;CA81;110D 1166 11C0;
+CA82;CA82;110D 1166 11C1;CA82;110D 1166 11C1;
+CA83;CA83;110D 1166 11C2;CA83;110D 1166 11C2;
+CA84;CA84;110D 1167;CA84;110D 1167;
+CA85;CA85;110D 1167 11A8;CA85;110D 1167 11A8;
+CA86;CA86;110D 1167 11A9;CA86;110D 1167 11A9;
+CA87;CA87;110D 1167 11AA;CA87;110D 1167 11AA;
+CA88;CA88;110D 1167 11AB;CA88;110D 1167 11AB;
+CA89;CA89;110D 1167 11AC;CA89;110D 1167 11AC;
+CA8A;CA8A;110D 1167 11AD;CA8A;110D 1167 11AD;
+CA8B;CA8B;110D 1167 11AE;CA8B;110D 1167 11AE;
+CA8C;CA8C;110D 1167 11AF;CA8C;110D 1167 11AF;
+CA8D;CA8D;110D 1167 11B0;CA8D;110D 1167 11B0;
+CA8E;CA8E;110D 1167 11B1;CA8E;110D 1167 11B1;
+CA8F;CA8F;110D 1167 11B2;CA8F;110D 1167 11B2;
+CA90;CA90;110D 1167 11B3;CA90;110D 1167 11B3;
+CA91;CA91;110D 1167 11B4;CA91;110D 1167 11B4;
+CA92;CA92;110D 1167 11B5;CA92;110D 1167 11B5;
+CA93;CA93;110D 1167 11B6;CA93;110D 1167 11B6;
+CA94;CA94;110D 1167 11B7;CA94;110D 1167 11B7;
+CA95;CA95;110D 1167 11B8;CA95;110D 1167 11B8;
+CA96;CA96;110D 1167 11B9;CA96;110D 1167 11B9;
+CA97;CA97;110D 1167 11BA;CA97;110D 1167 11BA;
+CA98;CA98;110D 1167 11BB;CA98;110D 1167 11BB;
+CA99;CA99;110D 1167 11BC;CA99;110D 1167 11BC;
+CA9A;CA9A;110D 1167 11BD;CA9A;110D 1167 11BD;
+CA9B;CA9B;110D 1167 11BE;CA9B;110D 1167 11BE;
+CA9C;CA9C;110D 1167 11BF;CA9C;110D 1167 11BF;
+CA9D;CA9D;110D 1167 11C0;CA9D;110D 1167 11C0;
+CA9E;CA9E;110D 1167 11C1;CA9E;110D 1167 11C1;
+CA9F;CA9F;110D 1167 11C2;CA9F;110D 1167 11C2;
+CAA0;CAA0;110D 1168;CAA0;110D 1168;
+CAA1;CAA1;110D 1168 11A8;CAA1;110D 1168 11A8;
+CAA2;CAA2;110D 1168 11A9;CAA2;110D 1168 11A9;
+CAA3;CAA3;110D 1168 11AA;CAA3;110D 1168 11AA;
+CAA4;CAA4;110D 1168 11AB;CAA4;110D 1168 11AB;
+CAA5;CAA5;110D 1168 11AC;CAA5;110D 1168 11AC;
+CAA6;CAA6;110D 1168 11AD;CAA6;110D 1168 11AD;
+CAA7;CAA7;110D 1168 11AE;CAA7;110D 1168 11AE;
+CAA8;CAA8;110D 1168 11AF;CAA8;110D 1168 11AF;
+CAA9;CAA9;110D 1168 11B0;CAA9;110D 1168 11B0;
+CAAA;CAAA;110D 1168 11B1;CAAA;110D 1168 11B1;
+CAAB;CAAB;110D 1168 11B2;CAAB;110D 1168 11B2;
+CAAC;CAAC;110D 1168 11B3;CAAC;110D 1168 11B3;
+CAAD;CAAD;110D 1168 11B4;CAAD;110D 1168 11B4;
+CAAE;CAAE;110D 1168 11B5;CAAE;110D 1168 11B5;
+CAAF;CAAF;110D 1168 11B6;CAAF;110D 1168 11B6;
+CAB0;CAB0;110D 1168 11B7;CAB0;110D 1168 11B7;
+CAB1;CAB1;110D 1168 11B8;CAB1;110D 1168 11B8;
+CAB2;CAB2;110D 1168 11B9;CAB2;110D 1168 11B9;
+CAB3;CAB3;110D 1168 11BA;CAB3;110D 1168 11BA;
+CAB4;CAB4;110D 1168 11BB;CAB4;110D 1168 11BB;
+CAB5;CAB5;110D 1168 11BC;CAB5;110D 1168 11BC;
+CAB6;CAB6;110D 1168 11BD;CAB6;110D 1168 11BD;
+CAB7;CAB7;110D 1168 11BE;CAB7;110D 1168 11BE;
+CAB8;CAB8;110D 1168 11BF;CAB8;110D 1168 11BF;
+CAB9;CAB9;110D 1168 11C0;CAB9;110D 1168 11C0;
+CABA;CABA;110D 1168 11C1;CABA;110D 1168 11C1;
+CABB;CABB;110D 1168 11C2;CABB;110D 1168 11C2;
+CABC;CABC;110D 1169;CABC;110D 1169;
+CABD;CABD;110D 1169 11A8;CABD;110D 1169 11A8;
+CABE;CABE;110D 1169 11A9;CABE;110D 1169 11A9;
+CABF;CABF;110D 1169 11AA;CABF;110D 1169 11AA;
+CAC0;CAC0;110D 1169 11AB;CAC0;110D 1169 11AB;
+CAC1;CAC1;110D 1169 11AC;CAC1;110D 1169 11AC;
+CAC2;CAC2;110D 1169 11AD;CAC2;110D 1169 11AD;
+CAC3;CAC3;110D 1169 11AE;CAC3;110D 1169 11AE;
+CAC4;CAC4;110D 1169 11AF;CAC4;110D 1169 11AF;
+CAC5;CAC5;110D 1169 11B0;CAC5;110D 1169 11B0;
+CAC6;CAC6;110D 1169 11B1;CAC6;110D 1169 11B1;
+CAC7;CAC7;110D 1169 11B2;CAC7;110D 1169 11B2;
+CAC8;CAC8;110D 1169 11B3;CAC8;110D 1169 11B3;
+CAC9;CAC9;110D 1169 11B4;CAC9;110D 1169 11B4;
+CACA;CACA;110D 1169 11B5;CACA;110D 1169 11B5;
+CACB;CACB;110D 1169 11B6;CACB;110D 1169 11B6;
+CACC;CACC;110D 1169 11B7;CACC;110D 1169 11B7;
+CACD;CACD;110D 1169 11B8;CACD;110D 1169 11B8;
+CACE;CACE;110D 1169 11B9;CACE;110D 1169 11B9;
+CACF;CACF;110D 1169 11BA;CACF;110D 1169 11BA;
+CAD0;CAD0;110D 1169 11BB;CAD0;110D 1169 11BB;
+CAD1;CAD1;110D 1169 11BC;CAD1;110D 1169 11BC;
+CAD2;CAD2;110D 1169 11BD;CAD2;110D 1169 11BD;
+CAD3;CAD3;110D 1169 11BE;CAD3;110D 1169 11BE;
+CAD4;CAD4;110D 1169 11BF;CAD4;110D 1169 11BF;
+CAD5;CAD5;110D 1169 11C0;CAD5;110D 1169 11C0;
+CAD6;CAD6;110D 1169 11C1;CAD6;110D 1169 11C1;
+CAD7;CAD7;110D 1169 11C2;CAD7;110D 1169 11C2;
+CAD8;CAD8;110D 116A;CAD8;110D 116A;
+CAD9;CAD9;110D 116A 11A8;CAD9;110D 116A 11A8;
+CADA;CADA;110D 116A 11A9;CADA;110D 116A 11A9;
+CADB;CADB;110D 116A 11AA;CADB;110D 116A 11AA;
+CADC;CADC;110D 116A 11AB;CADC;110D 116A 11AB;
+CADD;CADD;110D 116A 11AC;CADD;110D 116A 11AC;
+CADE;CADE;110D 116A 11AD;CADE;110D 116A 11AD;
+CADF;CADF;110D 116A 11AE;CADF;110D 116A 11AE;
+CAE0;CAE0;110D 116A 11AF;CAE0;110D 116A 11AF;
+CAE1;CAE1;110D 116A 11B0;CAE1;110D 116A 11B0;
+CAE2;CAE2;110D 116A 11B1;CAE2;110D 116A 11B1;
+CAE3;CAE3;110D 116A 11B2;CAE3;110D 116A 11B2;
+CAE4;CAE4;110D 116A 11B3;CAE4;110D 116A 11B3;
+CAE5;CAE5;110D 116A 11B4;CAE5;110D 116A 11B4;
+CAE6;CAE6;110D 116A 11B5;CAE6;110D 116A 11B5;
+CAE7;CAE7;110D 116A 11B6;CAE7;110D 116A 11B6;
+CAE8;CAE8;110D 116A 11B7;CAE8;110D 116A 11B7;
+CAE9;CAE9;110D 116A 11B8;CAE9;110D 116A 11B8;
+CAEA;CAEA;110D 116A 11B9;CAEA;110D 116A 11B9;
+CAEB;CAEB;110D 116A 11BA;CAEB;110D 116A 11BA;
+CAEC;CAEC;110D 116A 11BB;CAEC;110D 116A 11BB;
+CAED;CAED;110D 116A 11BC;CAED;110D 116A 11BC;
+CAEE;CAEE;110D 116A 11BD;CAEE;110D 116A 11BD;
+CAEF;CAEF;110D 116A 11BE;CAEF;110D 116A 11BE;
+CAF0;CAF0;110D 116A 11BF;CAF0;110D 116A 11BF;
+CAF1;CAF1;110D 116A 11C0;CAF1;110D 116A 11C0;
+CAF2;CAF2;110D 116A 11C1;CAF2;110D 116A 11C1;
+CAF3;CAF3;110D 116A 11C2;CAF3;110D 116A 11C2;
+CAF4;CAF4;110D 116B;CAF4;110D 116B;
+CAF5;CAF5;110D 116B 11A8;CAF5;110D 116B 11A8;
+CAF6;CAF6;110D 116B 11A9;CAF6;110D 116B 11A9;
+CAF7;CAF7;110D 116B 11AA;CAF7;110D 116B 11AA;
+CAF8;CAF8;110D 116B 11AB;CAF8;110D 116B 11AB;
+CAF9;CAF9;110D 116B 11AC;CAF9;110D 116B 11AC;
+CAFA;CAFA;110D 116B 11AD;CAFA;110D 116B 11AD;
+CAFB;CAFB;110D 116B 11AE;CAFB;110D 116B 11AE;
+CAFC;CAFC;110D 116B 11AF;CAFC;110D 116B 11AF;
+CAFD;CAFD;110D 116B 11B0;CAFD;110D 116B 11B0;
+CAFE;CAFE;110D 116B 11B1;CAFE;110D 116B 11B1;
+CAFF;CAFF;110D 116B 11B2;CAFF;110D 116B 11B2;
+CB00;CB00;110D 116B 11B3;CB00;110D 116B 11B3;
+CB01;CB01;110D 116B 11B4;CB01;110D 116B 11B4;
+CB02;CB02;110D 116B 11B5;CB02;110D 116B 11B5;
+CB03;CB03;110D 116B 11B6;CB03;110D 116B 11B6;
+CB04;CB04;110D 116B 11B7;CB04;110D 116B 11B7;
+CB05;CB05;110D 116B 11B8;CB05;110D 116B 11B8;
+CB06;CB06;110D 116B 11B9;CB06;110D 116B 11B9;
+CB07;CB07;110D 116B 11BA;CB07;110D 116B 11BA;
+CB08;CB08;110D 116B 11BB;CB08;110D 116B 11BB;
+CB09;CB09;110D 116B 11BC;CB09;110D 116B 11BC;
+CB0A;CB0A;110D 116B 11BD;CB0A;110D 116B 11BD;
+CB0B;CB0B;110D 116B 11BE;CB0B;110D 116B 11BE;
+CB0C;CB0C;110D 116B 11BF;CB0C;110D 116B 11BF;
+CB0D;CB0D;110D 116B 11C0;CB0D;110D 116B 11C0;
+CB0E;CB0E;110D 116B 11C1;CB0E;110D 116B 11C1;
+CB0F;CB0F;110D 116B 11C2;CB0F;110D 116B 11C2;
+CB10;CB10;110D 116C;CB10;110D 116C;
+CB11;CB11;110D 116C 11A8;CB11;110D 116C 11A8;
+CB12;CB12;110D 116C 11A9;CB12;110D 116C 11A9;
+CB13;CB13;110D 116C 11AA;CB13;110D 116C 11AA;
+CB14;CB14;110D 116C 11AB;CB14;110D 116C 11AB;
+CB15;CB15;110D 116C 11AC;CB15;110D 116C 11AC;
+CB16;CB16;110D 116C 11AD;CB16;110D 116C 11AD;
+CB17;CB17;110D 116C 11AE;CB17;110D 116C 11AE;
+CB18;CB18;110D 116C 11AF;CB18;110D 116C 11AF;
+CB19;CB19;110D 116C 11B0;CB19;110D 116C 11B0;
+CB1A;CB1A;110D 116C 11B1;CB1A;110D 116C 11B1;
+CB1B;CB1B;110D 116C 11B2;CB1B;110D 116C 11B2;
+CB1C;CB1C;110D 116C 11B3;CB1C;110D 116C 11B3;
+CB1D;CB1D;110D 116C 11B4;CB1D;110D 116C 11B4;
+CB1E;CB1E;110D 116C 11B5;CB1E;110D 116C 11B5;
+CB1F;CB1F;110D 116C 11B6;CB1F;110D 116C 11B6;
+CB20;CB20;110D 116C 11B7;CB20;110D 116C 11B7;
+CB21;CB21;110D 116C 11B8;CB21;110D 116C 11B8;
+CB22;CB22;110D 116C 11B9;CB22;110D 116C 11B9;
+CB23;CB23;110D 116C 11BA;CB23;110D 116C 11BA;
+CB24;CB24;110D 116C 11BB;CB24;110D 116C 11BB;
+CB25;CB25;110D 116C 11BC;CB25;110D 116C 11BC;
+CB26;CB26;110D 116C 11BD;CB26;110D 116C 11BD;
+CB27;CB27;110D 116C 11BE;CB27;110D 116C 11BE;
+CB28;CB28;110D 116C 11BF;CB28;110D 116C 11BF;
+CB29;CB29;110D 116C 11C0;CB29;110D 116C 11C0;
+CB2A;CB2A;110D 116C 11C1;CB2A;110D 116C 11C1;
+CB2B;CB2B;110D 116C 11C2;CB2B;110D 116C 11C2;
+CB2C;CB2C;110D 116D;CB2C;110D 116D;
+CB2D;CB2D;110D 116D 11A8;CB2D;110D 116D 11A8;
+CB2E;CB2E;110D 116D 11A9;CB2E;110D 116D 11A9;
+CB2F;CB2F;110D 116D 11AA;CB2F;110D 116D 11AA;
+CB30;CB30;110D 116D 11AB;CB30;110D 116D 11AB;
+CB31;CB31;110D 116D 11AC;CB31;110D 116D 11AC;
+CB32;CB32;110D 116D 11AD;CB32;110D 116D 11AD;
+CB33;CB33;110D 116D 11AE;CB33;110D 116D 11AE;
+CB34;CB34;110D 116D 11AF;CB34;110D 116D 11AF;
+CB35;CB35;110D 116D 11B0;CB35;110D 116D 11B0;
+CB36;CB36;110D 116D 11B1;CB36;110D 116D 11B1;
+CB37;CB37;110D 116D 11B2;CB37;110D 116D 11B2;
+CB38;CB38;110D 116D 11B3;CB38;110D 116D 11B3;
+CB39;CB39;110D 116D 11B4;CB39;110D 116D 11B4;
+CB3A;CB3A;110D 116D 11B5;CB3A;110D 116D 11B5;
+CB3B;CB3B;110D 116D 11B6;CB3B;110D 116D 11B6;
+CB3C;CB3C;110D 116D 11B7;CB3C;110D 116D 11B7;
+CB3D;CB3D;110D 116D 11B8;CB3D;110D 116D 11B8;
+CB3E;CB3E;110D 116D 11B9;CB3E;110D 116D 11B9;
+CB3F;CB3F;110D 116D 11BA;CB3F;110D 116D 11BA;
+CB40;CB40;110D 116D 11BB;CB40;110D 116D 11BB;
+CB41;CB41;110D 116D 11BC;CB41;110D 116D 11BC;
+CB42;CB42;110D 116D 11BD;CB42;110D 116D 11BD;
+CB43;CB43;110D 116D 11BE;CB43;110D 116D 11BE;
+CB44;CB44;110D 116D 11BF;CB44;110D 116D 11BF;
+CB45;CB45;110D 116D 11C0;CB45;110D 116D 11C0;
+CB46;CB46;110D 116D 11C1;CB46;110D 116D 11C1;
+CB47;CB47;110D 116D 11C2;CB47;110D 116D 11C2;
+CB48;CB48;110D 116E;CB48;110D 116E;
+CB49;CB49;110D 116E 11A8;CB49;110D 116E 11A8;
+CB4A;CB4A;110D 116E 11A9;CB4A;110D 116E 11A9;
+CB4B;CB4B;110D 116E 11AA;CB4B;110D 116E 11AA;
+CB4C;CB4C;110D 116E 11AB;CB4C;110D 116E 11AB;
+CB4D;CB4D;110D 116E 11AC;CB4D;110D 116E 11AC;
+CB4E;CB4E;110D 116E 11AD;CB4E;110D 116E 11AD;
+CB4F;CB4F;110D 116E 11AE;CB4F;110D 116E 11AE;
+CB50;CB50;110D 116E 11AF;CB50;110D 116E 11AF;
+CB51;CB51;110D 116E 11B0;CB51;110D 116E 11B0;
+CB52;CB52;110D 116E 11B1;CB52;110D 116E 11B1;
+CB53;CB53;110D 116E 11B2;CB53;110D 116E 11B2;
+CB54;CB54;110D 116E 11B3;CB54;110D 116E 11B3;
+CB55;CB55;110D 116E 11B4;CB55;110D 116E 11B4;
+CB56;CB56;110D 116E 11B5;CB56;110D 116E 11B5;
+CB57;CB57;110D 116E 11B6;CB57;110D 116E 11B6;
+CB58;CB58;110D 116E 11B7;CB58;110D 116E 11B7;
+CB59;CB59;110D 116E 11B8;CB59;110D 116E 11B8;
+CB5A;CB5A;110D 116E 11B9;CB5A;110D 116E 11B9;
+CB5B;CB5B;110D 116E 11BA;CB5B;110D 116E 11BA;
+CB5C;CB5C;110D 116E 11BB;CB5C;110D 116E 11BB;
+CB5D;CB5D;110D 116E 11BC;CB5D;110D 116E 11BC;
+CB5E;CB5E;110D 116E 11BD;CB5E;110D 116E 11BD;
+CB5F;CB5F;110D 116E 11BE;CB5F;110D 116E 11BE;
+CB60;CB60;110D 116E 11BF;CB60;110D 116E 11BF;
+CB61;CB61;110D 116E 11C0;CB61;110D 116E 11C0;
+CB62;CB62;110D 116E 11C1;CB62;110D 116E 11C1;
+CB63;CB63;110D 116E 11C2;CB63;110D 116E 11C2;
+CB64;CB64;110D 116F;CB64;110D 116F;
+CB65;CB65;110D 116F 11A8;CB65;110D 116F 11A8;
+CB66;CB66;110D 116F 11A9;CB66;110D 116F 11A9;
+CB67;CB67;110D 116F 11AA;CB67;110D 116F 11AA;
+CB68;CB68;110D 116F 11AB;CB68;110D 116F 11AB;
+CB69;CB69;110D 116F 11AC;CB69;110D 116F 11AC;
+CB6A;CB6A;110D 116F 11AD;CB6A;110D 116F 11AD;
+CB6B;CB6B;110D 116F 11AE;CB6B;110D 116F 11AE;
+CB6C;CB6C;110D 116F 11AF;CB6C;110D 116F 11AF;
+CB6D;CB6D;110D 116F 11B0;CB6D;110D 116F 11B0;
+CB6E;CB6E;110D 116F 11B1;CB6E;110D 116F 11B1;
+CB6F;CB6F;110D 116F 11B2;CB6F;110D 116F 11B2;
+CB70;CB70;110D 116F 11B3;CB70;110D 116F 11B3;
+CB71;CB71;110D 116F 11B4;CB71;110D 116F 11B4;
+CB72;CB72;110D 116F 11B5;CB72;110D 116F 11B5;
+CB73;CB73;110D 116F 11B6;CB73;110D 116F 11B6;
+CB74;CB74;110D 116F 11B7;CB74;110D 116F 11B7;
+CB75;CB75;110D 116F 11B8;CB75;110D 116F 11B8;
+CB76;CB76;110D 116F 11B9;CB76;110D 116F 11B9;
+CB77;CB77;110D 116F 11BA;CB77;110D 116F 11BA;
+CB78;CB78;110D 116F 11BB;CB78;110D 116F 11BB;
+CB79;CB79;110D 116F 11BC;CB79;110D 116F 11BC;
+CB7A;CB7A;110D 116F 11BD;CB7A;110D 116F 11BD;
+CB7B;CB7B;110D 116F 11BE;CB7B;110D 116F 11BE;
+CB7C;CB7C;110D 116F 11BF;CB7C;110D 116F 11BF;
+CB7D;CB7D;110D 116F 11C0;CB7D;110D 116F 11C0;
+CB7E;CB7E;110D 116F 11C1;CB7E;110D 116F 11C1;
+CB7F;CB7F;110D 116F 11C2;CB7F;110D 116F 11C2;
+CB80;CB80;110D 1170;CB80;110D 1170;
+CB81;CB81;110D 1170 11A8;CB81;110D 1170 11A8;
+CB82;CB82;110D 1170 11A9;CB82;110D 1170 11A9;
+CB83;CB83;110D 1170 11AA;CB83;110D 1170 11AA;
+CB84;CB84;110D 1170 11AB;CB84;110D 1170 11AB;
+CB85;CB85;110D 1170 11AC;CB85;110D 1170 11AC;
+CB86;CB86;110D 1170 11AD;CB86;110D 1170 11AD;
+CB87;CB87;110D 1170 11AE;CB87;110D 1170 11AE;
+CB88;CB88;110D 1170 11AF;CB88;110D 1170 11AF;
+CB89;CB89;110D 1170 11B0;CB89;110D 1170 11B0;
+CB8A;CB8A;110D 1170 11B1;CB8A;110D 1170 11B1;
+CB8B;CB8B;110D 1170 11B2;CB8B;110D 1170 11B2;
+CB8C;CB8C;110D 1170 11B3;CB8C;110D 1170 11B3;
+CB8D;CB8D;110D 1170 11B4;CB8D;110D 1170 11B4;
+CB8E;CB8E;110D 1170 11B5;CB8E;110D 1170 11B5;
+CB8F;CB8F;110D 1170 11B6;CB8F;110D 1170 11B6;
+CB90;CB90;110D 1170 11B7;CB90;110D 1170 11B7;
+CB91;CB91;110D 1170 11B8;CB91;110D 1170 11B8;
+CB92;CB92;110D 1170 11B9;CB92;110D 1170 11B9;
+CB93;CB93;110D 1170 11BA;CB93;110D 1170 11BA;
+CB94;CB94;110D 1170 11BB;CB94;110D 1170 11BB;
+CB95;CB95;110D 1170 11BC;CB95;110D 1170 11BC;
+CB96;CB96;110D 1170 11BD;CB96;110D 1170 11BD;
+CB97;CB97;110D 1170 11BE;CB97;110D 1170 11BE;
+CB98;CB98;110D 1170 11BF;CB98;110D 1170 11BF;
+CB99;CB99;110D 1170 11C0;CB99;110D 1170 11C0;
+CB9A;CB9A;110D 1170 11C1;CB9A;110D 1170 11C1;
+CB9B;CB9B;110D 1170 11C2;CB9B;110D 1170 11C2;
+CB9C;CB9C;110D 1171;CB9C;110D 1171;
+CB9D;CB9D;110D 1171 11A8;CB9D;110D 1171 11A8;
+CB9E;CB9E;110D 1171 11A9;CB9E;110D 1171 11A9;
+CB9F;CB9F;110D 1171 11AA;CB9F;110D 1171 11AA;
+CBA0;CBA0;110D 1171 11AB;CBA0;110D 1171 11AB;
+CBA1;CBA1;110D 1171 11AC;CBA1;110D 1171 11AC;
+CBA2;CBA2;110D 1171 11AD;CBA2;110D 1171 11AD;
+CBA3;CBA3;110D 1171 11AE;CBA3;110D 1171 11AE;
+CBA4;CBA4;110D 1171 11AF;CBA4;110D 1171 11AF;
+CBA5;CBA5;110D 1171 11B0;CBA5;110D 1171 11B0;
+CBA6;CBA6;110D 1171 11B1;CBA6;110D 1171 11B1;
+CBA7;CBA7;110D 1171 11B2;CBA7;110D 1171 11B2;
+CBA8;CBA8;110D 1171 11B3;CBA8;110D 1171 11B3;
+CBA9;CBA9;110D 1171 11B4;CBA9;110D 1171 11B4;
+CBAA;CBAA;110D 1171 11B5;CBAA;110D 1171 11B5;
+CBAB;CBAB;110D 1171 11B6;CBAB;110D 1171 11B6;
+CBAC;CBAC;110D 1171 11B7;CBAC;110D 1171 11B7;
+CBAD;CBAD;110D 1171 11B8;CBAD;110D 1171 11B8;
+CBAE;CBAE;110D 1171 11B9;CBAE;110D 1171 11B9;
+CBAF;CBAF;110D 1171 11BA;CBAF;110D 1171 11BA;
+CBB0;CBB0;110D 1171 11BB;CBB0;110D 1171 11BB;
+CBB1;CBB1;110D 1171 11BC;CBB1;110D 1171 11BC;
+CBB2;CBB2;110D 1171 11BD;CBB2;110D 1171 11BD;
+CBB3;CBB3;110D 1171 11BE;CBB3;110D 1171 11BE;
+CBB4;CBB4;110D 1171 11BF;CBB4;110D 1171 11BF;
+CBB5;CBB5;110D 1171 11C0;CBB5;110D 1171 11C0;
+CBB6;CBB6;110D 1171 11C1;CBB6;110D 1171 11C1;
+CBB7;CBB7;110D 1171 11C2;CBB7;110D 1171 11C2;
+CBB8;CBB8;110D 1172;CBB8;110D 1172;
+CBB9;CBB9;110D 1172 11A8;CBB9;110D 1172 11A8;
+CBBA;CBBA;110D 1172 11A9;CBBA;110D 1172 11A9;
+CBBB;CBBB;110D 1172 11AA;CBBB;110D 1172 11AA;
+CBBC;CBBC;110D 1172 11AB;CBBC;110D 1172 11AB;
+CBBD;CBBD;110D 1172 11AC;CBBD;110D 1172 11AC;
+CBBE;CBBE;110D 1172 11AD;CBBE;110D 1172 11AD;
+CBBF;CBBF;110D 1172 11AE;CBBF;110D 1172 11AE;
+CBC0;CBC0;110D 1172 11AF;CBC0;110D 1172 11AF;
+CBC1;CBC1;110D 1172 11B0;CBC1;110D 1172 11B0;
+CBC2;CBC2;110D 1172 11B1;CBC2;110D 1172 11B1;
+CBC3;CBC3;110D 1172 11B2;CBC3;110D 1172 11B2;
+CBC4;CBC4;110D 1172 11B3;CBC4;110D 1172 11B3;
+CBC5;CBC5;110D 1172 11B4;CBC5;110D 1172 11B4;
+CBC6;CBC6;110D 1172 11B5;CBC6;110D 1172 11B5;
+CBC7;CBC7;110D 1172 11B6;CBC7;110D 1172 11B6;
+CBC8;CBC8;110D 1172 11B7;CBC8;110D 1172 11B7;
+CBC9;CBC9;110D 1172 11B8;CBC9;110D 1172 11B8;
+CBCA;CBCA;110D 1172 11B9;CBCA;110D 1172 11B9;
+CBCB;CBCB;110D 1172 11BA;CBCB;110D 1172 11BA;
+CBCC;CBCC;110D 1172 11BB;CBCC;110D 1172 11BB;
+CBCD;CBCD;110D 1172 11BC;CBCD;110D 1172 11BC;
+CBCE;CBCE;110D 1172 11BD;CBCE;110D 1172 11BD;
+CBCF;CBCF;110D 1172 11BE;CBCF;110D 1172 11BE;
+CBD0;CBD0;110D 1172 11BF;CBD0;110D 1172 11BF;
+CBD1;CBD1;110D 1172 11C0;CBD1;110D 1172 11C0;
+CBD2;CBD2;110D 1172 11C1;CBD2;110D 1172 11C1;
+CBD3;CBD3;110D 1172 11C2;CBD3;110D 1172 11C2;
+CBD4;CBD4;110D 1173;CBD4;110D 1173;
+CBD5;CBD5;110D 1173 11A8;CBD5;110D 1173 11A8;
+CBD6;CBD6;110D 1173 11A9;CBD6;110D 1173 11A9;
+CBD7;CBD7;110D 1173 11AA;CBD7;110D 1173 11AA;
+CBD8;CBD8;110D 1173 11AB;CBD8;110D 1173 11AB;
+CBD9;CBD9;110D 1173 11AC;CBD9;110D 1173 11AC;
+CBDA;CBDA;110D 1173 11AD;CBDA;110D 1173 11AD;
+CBDB;CBDB;110D 1173 11AE;CBDB;110D 1173 11AE;
+CBDC;CBDC;110D 1173 11AF;CBDC;110D 1173 11AF;
+CBDD;CBDD;110D 1173 11B0;CBDD;110D 1173 11B0;
+CBDE;CBDE;110D 1173 11B1;CBDE;110D 1173 11B1;
+CBDF;CBDF;110D 1173 11B2;CBDF;110D 1173 11B2;
+CBE0;CBE0;110D 1173 11B3;CBE0;110D 1173 11B3;
+CBE1;CBE1;110D 1173 11B4;CBE1;110D 1173 11B4;
+CBE2;CBE2;110D 1173 11B5;CBE2;110D 1173 11B5;
+CBE3;CBE3;110D 1173 11B6;CBE3;110D 1173 11B6;
+CBE4;CBE4;110D 1173 11B7;CBE4;110D 1173 11B7;
+CBE5;CBE5;110D 1173 11B8;CBE5;110D 1173 11B8;
+CBE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9;
+CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA;
+CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB;
+CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC;
+CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD;
+CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE;
+CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF;
+CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0;
+CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1;
+CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2;
+CBF0;CBF0;110D 1174;CBF0;110D 1174;
+CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8;
+CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9;
+CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA;
+CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB;
+CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC;
+CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD;
+CBF7;CBF7;110D 1174 11AE;CBF7;110D 1174 11AE;
+CBF8;CBF8;110D 1174 11AF;CBF8;110D 1174 11AF;
+CBF9;CBF9;110D 1174 11B0;CBF9;110D 1174 11B0;
+CBFA;CBFA;110D 1174 11B1;CBFA;110D 1174 11B1;
+CBFB;CBFB;110D 1174 11B2;CBFB;110D 1174 11B2;
+CBFC;CBFC;110D 1174 11B3;CBFC;110D 1174 11B3;
+CBFD;CBFD;110D 1174 11B4;CBFD;110D 1174 11B4;
+CBFE;CBFE;110D 1174 11B5;CBFE;110D 1174 11B5;
+CBFF;CBFF;110D 1174 11B6;CBFF;110D 1174 11B6;
+CC00;CC00;110D 1174 11B7;CC00;110D 1174 11B7;
+CC01;CC01;110D 1174 11B8;CC01;110D 1174 11B8;
+CC02;CC02;110D 1174 11B9;CC02;110D 1174 11B9;
+CC03;CC03;110D 1174 11BA;CC03;110D 1174 11BA;
+CC04;CC04;110D 1174 11BB;CC04;110D 1174 11BB;
+CC05;CC05;110D 1174 11BC;CC05;110D 1174 11BC;
+CC06;CC06;110D 1174 11BD;CC06;110D 1174 11BD;
+CC07;CC07;110D 1174 11BE;CC07;110D 1174 11BE;
+CC08;CC08;110D 1174 11BF;CC08;110D 1174 11BF;
+CC09;CC09;110D 1174 11C0;CC09;110D 1174 11C0;
+CC0A;CC0A;110D 1174 11C1;CC0A;110D 1174 11C1;
+CC0B;CC0B;110D 1174 11C2;CC0B;110D 1174 11C2;
+CC0C;CC0C;110D 1175;CC0C;110D 1175;
+CC0D;CC0D;110D 1175 11A8;CC0D;110D 1175 11A8;
+CC0E;CC0E;110D 1175 11A9;CC0E;110D 1175 11A9;
+CC0F;CC0F;110D 1175 11AA;CC0F;110D 1175 11AA;
+CC10;CC10;110D 1175 11AB;CC10;110D 1175 11AB;
+CC11;CC11;110D 1175 11AC;CC11;110D 1175 11AC;
+CC12;CC12;110D 1175 11AD;CC12;110D 1175 11AD;
+CC13;CC13;110D 1175 11AE;CC13;110D 1175 11AE;
+CC14;CC14;110D 1175 11AF;CC14;110D 1175 11AF;
+CC15;CC15;110D 1175 11B0;CC15;110D 1175 11B0;
+CC16;CC16;110D 1175 11B1;CC16;110D 1175 11B1;
+CC17;CC17;110D 1175 11B2;CC17;110D 1175 11B2;
+CC18;CC18;110D 1175 11B3;CC18;110D 1175 11B3;
+CC19;CC19;110D 1175 11B4;CC19;110D 1175 11B4;
+CC1A;CC1A;110D 1175 11B5;CC1A;110D 1175 11B5;
+CC1B;CC1B;110D 1175 11B6;CC1B;110D 1175 11B6;
+CC1C;CC1C;110D 1175 11B7;CC1C;110D 1175 11B7;
+CC1D;CC1D;110D 1175 11B8;CC1D;110D 1175 11B8;
+CC1E;CC1E;110D 1175 11B9;CC1E;110D 1175 11B9;
+CC1F;CC1F;110D 1175 11BA;CC1F;110D 1175 11BA;
+CC20;CC20;110D 1175 11BB;CC20;110D 1175 11BB;
+CC21;CC21;110D 1175 11BC;CC21;110D 1175 11BC;
+CC22;CC22;110D 1175 11BD;CC22;110D 1175 11BD;
+CC23;CC23;110D 1175 11BE;CC23;110D 1175 11BE;
+CC24;CC24;110D 1175 11BF;CC24;110D 1175 11BF;
+CC25;CC25;110D 1175 11C0;CC25;110D 1175 11C0;
+CC26;CC26;110D 1175 11C1;CC26;110D 1175 11C1;
+CC27;CC27;110D 1175 11C2;CC27;110D 1175 11C2;
+CC28;CC28;110E 1161;CC28;110E 1161;
+CC29;CC29;110E 1161 11A8;CC29;110E 1161 11A8;
+CC2A;CC2A;110E 1161 11A9;CC2A;110E 1161 11A9;
+CC2B;CC2B;110E 1161 11AA;CC2B;110E 1161 11AA;
+CC2C;CC2C;110E 1161 11AB;CC2C;110E 1161 11AB;
+CC2D;CC2D;110E 1161 11AC;CC2D;110E 1161 11AC;
+CC2E;CC2E;110E 1161 11AD;CC2E;110E 1161 11AD;
+CC2F;CC2F;110E 1161 11AE;CC2F;110E 1161 11AE;
+CC30;CC30;110E 1161 11AF;CC30;110E 1161 11AF;
+CC31;CC31;110E 1161 11B0;CC31;110E 1161 11B0;
+CC32;CC32;110E 1161 11B1;CC32;110E 1161 11B1;
+CC33;CC33;110E 1161 11B2;CC33;110E 1161 11B2;
+CC34;CC34;110E 1161 11B3;CC34;110E 1161 11B3;
+CC35;CC35;110E 1161 11B4;CC35;110E 1161 11B4;
+CC36;CC36;110E 1161 11B5;CC36;110E 1161 11B5;
+CC37;CC37;110E 1161 11B6;CC37;110E 1161 11B6;
+CC38;CC38;110E 1161 11B7;CC38;110E 1161 11B7;
+CC39;CC39;110E 1161 11B8;CC39;110E 1161 11B8;
+CC3A;CC3A;110E 1161 11B9;CC3A;110E 1161 11B9;
+CC3B;CC3B;110E 1161 11BA;CC3B;110E 1161 11BA;
+CC3C;CC3C;110E 1161 11BB;CC3C;110E 1161 11BB;
+CC3D;CC3D;110E 1161 11BC;CC3D;110E 1161 11BC;
+CC3E;CC3E;110E 1161 11BD;CC3E;110E 1161 11BD;
+CC3F;CC3F;110E 1161 11BE;CC3F;110E 1161 11BE;
+CC40;CC40;110E 1161 11BF;CC40;110E 1161 11BF;
+CC41;CC41;110E 1161 11C0;CC41;110E 1161 11C0;
+CC42;CC42;110E 1161 11C1;CC42;110E 1161 11C1;
+CC43;CC43;110E 1161 11C2;CC43;110E 1161 11C2;
+CC44;CC44;110E 1162;CC44;110E 1162;
+CC45;CC45;110E 1162 11A8;CC45;110E 1162 11A8;
+CC46;CC46;110E 1162 11A9;CC46;110E 1162 11A9;
+CC47;CC47;110E 1162 11AA;CC47;110E 1162 11AA;
+CC48;CC48;110E 1162 11AB;CC48;110E 1162 11AB;
+CC49;CC49;110E 1162 11AC;CC49;110E 1162 11AC;
+CC4A;CC4A;110E 1162 11AD;CC4A;110E 1162 11AD;
+CC4B;CC4B;110E 1162 11AE;CC4B;110E 1162 11AE;
+CC4C;CC4C;110E 1162 11AF;CC4C;110E 1162 11AF;
+CC4D;CC4D;110E 1162 11B0;CC4D;110E 1162 11B0;
+CC4E;CC4E;110E 1162 11B1;CC4E;110E 1162 11B1;
+CC4F;CC4F;110E 1162 11B2;CC4F;110E 1162 11B2;
+CC50;CC50;110E 1162 11B3;CC50;110E 1162 11B3;
+CC51;CC51;110E 1162 11B4;CC51;110E 1162 11B4;
+CC52;CC52;110E 1162 11B5;CC52;110E 1162 11B5;
+CC53;CC53;110E 1162 11B6;CC53;110E 1162 11B6;
+CC54;CC54;110E 1162 11B7;CC54;110E 1162 11B7;
+CC55;CC55;110E 1162 11B8;CC55;110E 1162 11B8;
+CC56;CC56;110E 1162 11B9;CC56;110E 1162 11B9;
+CC57;CC57;110E 1162 11BA;CC57;110E 1162 11BA;
+CC58;CC58;110E 1162 11BB;CC58;110E 1162 11BB;
+CC59;CC59;110E 1162 11BC;CC59;110E 1162 11BC;
+CC5A;CC5A;110E 1162 11BD;CC5A;110E 1162 11BD;
+CC5B;CC5B;110E 1162 11BE;CC5B;110E 1162 11BE;
+CC5C;CC5C;110E 1162 11BF;CC5C;110E 1162 11BF;
+CC5D;CC5D;110E 1162 11C0;CC5D;110E 1162 11C0;
+CC5E;CC5E;110E 1162 11C1;CC5E;110E 1162 11C1;
+CC5F;CC5F;110E 1162 11C2;CC5F;110E 1162 11C2;
+CC60;CC60;110E 1163;CC60;110E 1163;
+CC61;CC61;110E 1163 11A8;CC61;110E 1163 11A8;
+CC62;CC62;110E 1163 11A9;CC62;110E 1163 11A9;
+CC63;CC63;110E 1163 11AA;CC63;110E 1163 11AA;
+CC64;CC64;110E 1163 11AB;CC64;110E 1163 11AB;
+CC65;CC65;110E 1163 11AC;CC65;110E 1163 11AC;
+CC66;CC66;110E 1163 11AD;CC66;110E 1163 11AD;
+CC67;CC67;110E 1163 11AE;CC67;110E 1163 11AE;
+CC68;CC68;110E 1163 11AF;CC68;110E 1163 11AF;
+CC69;CC69;110E 1163 11B0;CC69;110E 1163 11B0;
+CC6A;CC6A;110E 1163 11B1;CC6A;110E 1163 11B1;
+CC6B;CC6B;110E 1163 11B2;CC6B;110E 1163 11B2;
+CC6C;CC6C;110E 1163 11B3;CC6C;110E 1163 11B3;
+CC6D;CC6D;110E 1163 11B4;CC6D;110E 1163 11B4;
+CC6E;CC6E;110E 1163 11B5;CC6E;110E 1163 11B5;
+CC6F;CC6F;110E 1163 11B6;CC6F;110E 1163 11B6;
+CC70;CC70;110E 1163 11B7;CC70;110E 1163 11B7;
+CC71;CC71;110E 1163 11B8;CC71;110E 1163 11B8;
+CC72;CC72;110E 1163 11B9;CC72;110E 1163 11B9;
+CC73;CC73;110E 1163 11BA;CC73;110E 1163 11BA;
+CC74;CC74;110E 1163 11BB;CC74;110E 1163 11BB;
+CC75;CC75;110E 1163 11BC;CC75;110E 1163 11BC;
+CC76;CC76;110E 1163 11BD;CC76;110E 1163 11BD;
+CC77;CC77;110E 1163 11BE;CC77;110E 1163 11BE;
+CC78;CC78;110E 1163 11BF;CC78;110E 1163 11BF;
+CC79;CC79;110E 1163 11C0;CC79;110E 1163 11C0;
+CC7A;CC7A;110E 1163 11C1;CC7A;110E 1163 11C1;
+CC7B;CC7B;110E 1163 11C2;CC7B;110E 1163 11C2;
+CC7C;CC7C;110E 1164;CC7C;110E 1164;
+CC7D;CC7D;110E 1164 11A8;CC7D;110E 1164 11A8;
+CC7E;CC7E;110E 1164 11A9;CC7E;110E 1164 11A9;
+CC7F;CC7F;110E 1164 11AA;CC7F;110E 1164 11AA;
+CC80;CC80;110E 1164 11AB;CC80;110E 1164 11AB;
+CC81;CC81;110E 1164 11AC;CC81;110E 1164 11AC;
+CC82;CC82;110E 1164 11AD;CC82;110E 1164 11AD;
+CC83;CC83;110E 1164 11AE;CC83;110E 1164 11AE;
+CC84;CC84;110E 1164 11AF;CC84;110E 1164 11AF;
+CC85;CC85;110E 1164 11B0;CC85;110E 1164 11B0;
+CC86;CC86;110E 1164 11B1;CC86;110E 1164 11B1;
+CC87;CC87;110E 1164 11B2;CC87;110E 1164 11B2;
+CC88;CC88;110E 1164 11B3;CC88;110E 1164 11B3;
+CC89;CC89;110E 1164 11B4;CC89;110E 1164 11B4;
+CC8A;CC8A;110E 1164 11B5;CC8A;110E 1164 11B5;
+CC8B;CC8B;110E 1164 11B6;CC8B;110E 1164 11B6;
+CC8C;CC8C;110E 1164 11B7;CC8C;110E 1164 11B7;
+CC8D;CC8D;110E 1164 11B8;CC8D;110E 1164 11B8;
+CC8E;CC8E;110E 1164 11B9;CC8E;110E 1164 11B9;
+CC8F;CC8F;110E 1164 11BA;CC8F;110E 1164 11BA;
+CC90;CC90;110E 1164 11BB;CC90;110E 1164 11BB;
+CC91;CC91;110E 1164 11BC;CC91;110E 1164 11BC;
+CC92;CC92;110E 1164 11BD;CC92;110E 1164 11BD;
+CC93;CC93;110E 1164 11BE;CC93;110E 1164 11BE;
+CC94;CC94;110E 1164 11BF;CC94;110E 1164 11BF;
+CC95;CC95;110E 1164 11C0;CC95;110E 1164 11C0;
+CC96;CC96;110E 1164 11C1;CC96;110E 1164 11C1;
+CC97;CC97;110E 1164 11C2;CC97;110E 1164 11C2;
+CC98;CC98;110E 1165;CC98;110E 1165;
+CC99;CC99;110E 1165 11A8;CC99;110E 1165 11A8;
+CC9A;CC9A;110E 1165 11A9;CC9A;110E 1165 11A9;
+CC9B;CC9B;110E 1165 11AA;CC9B;110E 1165 11AA;
+CC9C;CC9C;110E 1165 11AB;CC9C;110E 1165 11AB;
+CC9D;CC9D;110E 1165 11AC;CC9D;110E 1165 11AC;
+CC9E;CC9E;110E 1165 11AD;CC9E;110E 1165 11AD;
+CC9F;CC9F;110E 1165 11AE;CC9F;110E 1165 11AE;
+CCA0;CCA0;110E 1165 11AF;CCA0;110E 1165 11AF;
+CCA1;CCA1;110E 1165 11B0;CCA1;110E 1165 11B0;
+CCA2;CCA2;110E 1165 11B1;CCA2;110E 1165 11B1;
+CCA3;CCA3;110E 1165 11B2;CCA3;110E 1165 11B2;
+CCA4;CCA4;110E 1165 11B3;CCA4;110E 1165 11B3;
+CCA5;CCA5;110E 1165 11B4;CCA5;110E 1165 11B4;
+CCA6;CCA6;110E 1165 11B5;CCA6;110E 1165 11B5;
+CCA7;CCA7;110E 1165 11B6;CCA7;110E 1165 11B6;
+CCA8;CCA8;110E 1165 11B7;CCA8;110E 1165 11B7;
+CCA9;CCA9;110E 1165 11B8;CCA9;110E 1165 11B8;
+CCAA;CCAA;110E 1165 11B9;CCAA;110E 1165 11B9;
+CCAB;CCAB;110E 1165 11BA;CCAB;110E 1165 11BA;
+CCAC;CCAC;110E 1165 11BB;CCAC;110E 1165 11BB;
+CCAD;CCAD;110E 1165 11BC;CCAD;110E 1165 11BC;
+CCAE;CCAE;110E 1165 11BD;CCAE;110E 1165 11BD;
+CCAF;CCAF;110E 1165 11BE;CCAF;110E 1165 11BE;
+CCB0;CCB0;110E 1165 11BF;CCB0;110E 1165 11BF;
+CCB1;CCB1;110E 1165 11C0;CCB1;110E 1165 11C0;
+CCB2;CCB2;110E 1165 11C1;CCB2;110E 1165 11C1;
+CCB3;CCB3;110E 1165 11C2;CCB3;110E 1165 11C2;
+CCB4;CCB4;110E 1166;CCB4;110E 1166;
+CCB5;CCB5;110E 1166 11A8;CCB5;110E 1166 11A8;
+CCB6;CCB6;110E 1166 11A9;CCB6;110E 1166 11A9;
+CCB7;CCB7;110E 1166 11AA;CCB7;110E 1166 11AA;
+CCB8;CCB8;110E 1166 11AB;CCB8;110E 1166 11AB;
+CCB9;CCB9;110E 1166 11AC;CCB9;110E 1166 11AC;
+CCBA;CCBA;110E 1166 11AD;CCBA;110E 1166 11AD;
+CCBB;CCBB;110E 1166 11AE;CCBB;110E 1166 11AE;
+CCBC;CCBC;110E 1166 11AF;CCBC;110E 1166 11AF;
+CCBD;CCBD;110E 1166 11B0;CCBD;110E 1166 11B0;
+CCBE;CCBE;110E 1166 11B1;CCBE;110E 1166 11B1;
+CCBF;CCBF;110E 1166 11B2;CCBF;110E 1166 11B2;
+CCC0;CCC0;110E 1166 11B3;CCC0;110E 1166 11B3;
+CCC1;CCC1;110E 1166 11B4;CCC1;110E 1166 11B4;
+CCC2;CCC2;110E 1166 11B5;CCC2;110E 1166 11B5;
+CCC3;CCC3;110E 1166 11B6;CCC3;110E 1166 11B6;
+CCC4;CCC4;110E 1166 11B7;CCC4;110E 1166 11B7;
+CCC5;CCC5;110E 1166 11B8;CCC5;110E 1166 11B8;
+CCC6;CCC6;110E 1166 11B9;CCC6;110E 1166 11B9;
+CCC7;CCC7;110E 1166 11BA;CCC7;110E 1166 11BA;
+CCC8;CCC8;110E 1166 11BB;CCC8;110E 1166 11BB;
+CCC9;CCC9;110E 1166 11BC;CCC9;110E 1166 11BC;
+CCCA;CCCA;110E 1166 11BD;CCCA;110E 1166 11BD;
+CCCB;CCCB;110E 1166 11BE;CCCB;110E 1166 11BE;
+CCCC;CCCC;110E 1166 11BF;CCCC;110E 1166 11BF;
+CCCD;CCCD;110E 1166 11C0;CCCD;110E 1166 11C0;
+CCCE;CCCE;110E 1166 11C1;CCCE;110E 1166 11C1;
+CCCF;CCCF;110E 1166 11C2;CCCF;110E 1166 11C2;
+CCD0;CCD0;110E 1167;CCD0;110E 1167;
+CCD1;CCD1;110E 1167 11A8;CCD1;110E 1167 11A8;
+CCD2;CCD2;110E 1167 11A9;CCD2;110E 1167 11A9;
+CCD3;CCD3;110E 1167 11AA;CCD3;110E 1167 11AA;
+CCD4;CCD4;110E 1167 11AB;CCD4;110E 1167 11AB;
+CCD5;CCD5;110E 1167 11AC;CCD5;110E 1167 11AC;
+CCD6;CCD6;110E 1167 11AD;CCD6;110E 1167 11AD;
+CCD7;CCD7;110E 1167 11AE;CCD7;110E 1167 11AE;
+CCD8;CCD8;110E 1167 11AF;CCD8;110E 1167 11AF;
+CCD9;CCD9;110E 1167 11B0;CCD9;110E 1167 11B0;
+CCDA;CCDA;110E 1167 11B1;CCDA;110E 1167 11B1;
+CCDB;CCDB;110E 1167 11B2;CCDB;110E 1167 11B2;
+CCDC;CCDC;110E 1167 11B3;CCDC;110E 1167 11B3;
+CCDD;CCDD;110E 1167 11B4;CCDD;110E 1167 11B4;
+CCDE;CCDE;110E 1167 11B5;CCDE;110E 1167 11B5;
+CCDF;CCDF;110E 1167 11B6;CCDF;110E 1167 11B6;
+CCE0;CCE0;110E 1167 11B7;CCE0;110E 1167 11B7;
+CCE1;CCE1;110E 1167 11B8;CCE1;110E 1167 11B8;
+CCE2;CCE2;110E 1167 11B9;CCE2;110E 1167 11B9;
+CCE3;CCE3;110E 1167 11BA;CCE3;110E 1167 11BA;
+CCE4;CCE4;110E 1167 11BB;CCE4;110E 1167 11BB;
+CCE5;CCE5;110E 1167 11BC;CCE5;110E 1167 11BC;
+CCE6;CCE6;110E 1167 11BD;CCE6;110E 1167 11BD;
+CCE7;CCE7;110E 1167 11BE;CCE7;110E 1167 11BE;
+CCE8;CCE8;110E 1167 11BF;CCE8;110E 1167 11BF;
+CCE9;CCE9;110E 1167 11C0;CCE9;110E 1167 11C0;
+CCEA;CCEA;110E 1167 11C1;CCEA;110E 1167 11C1;
+CCEB;CCEB;110E 1167 11C2;CCEB;110E 1167 11C2;
+CCEC;CCEC;110E 1168;CCEC;110E 1168;
+CCED;CCED;110E 1168 11A8;CCED;110E 1168 11A8;
+CCEE;CCEE;110E 1168 11A9;CCEE;110E 1168 11A9;
+CCEF;CCEF;110E 1168 11AA;CCEF;110E 1168 11AA;
+CCF0;CCF0;110E 1168 11AB;CCF0;110E 1168 11AB;
+CCF1;CCF1;110E 1168 11AC;CCF1;110E 1168 11AC;
+CCF2;CCF2;110E 1168 11AD;CCF2;110E 1168 11AD;
+CCF3;CCF3;110E 1168 11AE;CCF3;110E 1168 11AE;
+CCF4;CCF4;110E 1168 11AF;CCF4;110E 1168 11AF;
+CCF5;CCF5;110E 1168 11B0;CCF5;110E 1168 11B0;
+CCF6;CCF6;110E 1168 11B1;CCF6;110E 1168 11B1;
+CCF7;CCF7;110E 1168 11B2;CCF7;110E 1168 11B2;
+CCF8;CCF8;110E 1168 11B3;CCF8;110E 1168 11B3;
+CCF9;CCF9;110E 1168 11B4;CCF9;110E 1168 11B4;
+CCFA;CCFA;110E 1168 11B5;CCFA;110E 1168 11B5;
+CCFB;CCFB;110E 1168 11B6;CCFB;110E 1168 11B6;
+CCFC;CCFC;110E 1168 11B7;CCFC;110E 1168 11B7;
+CCFD;CCFD;110E 1168 11B8;CCFD;110E 1168 11B8;
+CCFE;CCFE;110E 1168 11B9;CCFE;110E 1168 11B9;
+CCFF;CCFF;110E 1168 11BA;CCFF;110E 1168 11BA;
+CD00;CD00;110E 1168 11BB;CD00;110E 1168 11BB;
+CD01;CD01;110E 1168 11BC;CD01;110E 1168 11BC;
+CD02;CD02;110E 1168 11BD;CD02;110E 1168 11BD;
+CD03;CD03;110E 1168 11BE;CD03;110E 1168 11BE;
+CD04;CD04;110E 1168 11BF;CD04;110E 1168 11BF;
+CD05;CD05;110E 1168 11C0;CD05;110E 1168 11C0;
+CD06;CD06;110E 1168 11C1;CD06;110E 1168 11C1;
+CD07;CD07;110E 1168 11C2;CD07;110E 1168 11C2;
+CD08;CD08;110E 1169;CD08;110E 1169;
+CD09;CD09;110E 1169 11A8;CD09;110E 1169 11A8;
+CD0A;CD0A;110E 1169 11A9;CD0A;110E 1169 11A9;
+CD0B;CD0B;110E 1169 11AA;CD0B;110E 1169 11AA;
+CD0C;CD0C;110E 1169 11AB;CD0C;110E 1169 11AB;
+CD0D;CD0D;110E 1169 11AC;CD0D;110E 1169 11AC;
+CD0E;CD0E;110E 1169 11AD;CD0E;110E 1169 11AD;
+CD0F;CD0F;110E 1169 11AE;CD0F;110E 1169 11AE;
+CD10;CD10;110E 1169 11AF;CD10;110E 1169 11AF;
+CD11;CD11;110E 1169 11B0;CD11;110E 1169 11B0;
+CD12;CD12;110E 1169 11B1;CD12;110E 1169 11B1;
+CD13;CD13;110E 1169 11B2;CD13;110E 1169 11B2;
+CD14;CD14;110E 1169 11B3;CD14;110E 1169 11B3;
+CD15;CD15;110E 1169 11B4;CD15;110E 1169 11B4;
+CD16;CD16;110E 1169 11B5;CD16;110E 1169 11B5;
+CD17;CD17;110E 1169 11B6;CD17;110E 1169 11B6;
+CD18;CD18;110E 1169 11B7;CD18;110E 1169 11B7;
+CD19;CD19;110E 1169 11B8;CD19;110E 1169 11B8;
+CD1A;CD1A;110E 1169 11B9;CD1A;110E 1169 11B9;
+CD1B;CD1B;110E 1169 11BA;CD1B;110E 1169 11BA;
+CD1C;CD1C;110E 1169 11BB;CD1C;110E 1169 11BB;
+CD1D;CD1D;110E 1169 11BC;CD1D;110E 1169 11BC;
+CD1E;CD1E;110E 1169 11BD;CD1E;110E 1169 11BD;
+CD1F;CD1F;110E 1169 11BE;CD1F;110E 1169 11BE;
+CD20;CD20;110E 1169 11BF;CD20;110E 1169 11BF;
+CD21;CD21;110E 1169 11C0;CD21;110E 1169 11C0;
+CD22;CD22;110E 1169 11C1;CD22;110E 1169 11C1;
+CD23;CD23;110E 1169 11C2;CD23;110E 1169 11C2;
+CD24;CD24;110E 116A;CD24;110E 116A;
+CD25;CD25;110E 116A 11A8;CD25;110E 116A 11A8;
+CD26;CD26;110E 116A 11A9;CD26;110E 116A 11A9;
+CD27;CD27;110E 116A 11AA;CD27;110E 116A 11AA;
+CD28;CD28;110E 116A 11AB;CD28;110E 116A 11AB;
+CD29;CD29;110E 116A 11AC;CD29;110E 116A 11AC;
+CD2A;CD2A;110E 116A 11AD;CD2A;110E 116A 11AD;
+CD2B;CD2B;110E 116A 11AE;CD2B;110E 116A 11AE;
+CD2C;CD2C;110E 116A 11AF;CD2C;110E 116A 11AF;
+CD2D;CD2D;110E 116A 11B0;CD2D;110E 116A 11B0;
+CD2E;CD2E;110E 116A 11B1;CD2E;110E 116A 11B1;
+CD2F;CD2F;110E 116A 11B2;CD2F;110E 116A 11B2;
+CD30;CD30;110E 116A 11B3;CD30;110E 116A 11B3;
+CD31;CD31;110E 116A 11B4;CD31;110E 116A 11B4;
+CD32;CD32;110E 116A 11B5;CD32;110E 116A 11B5;
+CD33;CD33;110E 116A 11B6;CD33;110E 116A 11B6;
+CD34;CD34;110E 116A 11B7;CD34;110E 116A 11B7;
+CD35;CD35;110E 116A 11B8;CD35;110E 116A 11B8;
+CD36;CD36;110E 116A 11B9;CD36;110E 116A 11B9;
+CD37;CD37;110E 116A 11BA;CD37;110E 116A 11BA;
+CD38;CD38;110E 116A 11BB;CD38;110E 116A 11BB;
+CD39;CD39;110E 116A 11BC;CD39;110E 116A 11BC;
+CD3A;CD3A;110E 116A 11BD;CD3A;110E 116A 11BD;
+CD3B;CD3B;110E 116A 11BE;CD3B;110E 116A 11BE;
+CD3C;CD3C;110E 116A 11BF;CD3C;110E 116A 11BF;
+CD3D;CD3D;110E 116A 11C0;CD3D;110E 116A 11C0;
+CD3E;CD3E;110E 116A 11C1;CD3E;110E 116A 11C1;
+CD3F;CD3F;110E 116A 11C2;CD3F;110E 116A 11C2;
+CD40;CD40;110E 116B;CD40;110E 116B;
+CD41;CD41;110E 116B 11A8;CD41;110E 116B 11A8;
+CD42;CD42;110E 116B 11A9;CD42;110E 116B 11A9;
+CD43;CD43;110E 116B 11AA;CD43;110E 116B 11AA;
+CD44;CD44;110E 116B 11AB;CD44;110E 116B 11AB;
+CD45;CD45;110E 116B 11AC;CD45;110E 116B 11AC;
+CD46;CD46;110E 116B 11AD;CD46;110E 116B 11AD;
+CD47;CD47;110E 116B 11AE;CD47;110E 116B 11AE;
+CD48;CD48;110E 116B 11AF;CD48;110E 116B 11AF;
+CD49;CD49;110E 116B 11B0;CD49;110E 116B 11B0;
+CD4A;CD4A;110E 116B 11B1;CD4A;110E 116B 11B1;
+CD4B;CD4B;110E 116B 11B2;CD4B;110E 116B 11B2;
+CD4C;CD4C;110E 116B 11B3;CD4C;110E 116B 11B3;
+CD4D;CD4D;110E 116B 11B4;CD4D;110E 116B 11B4;
+CD4E;CD4E;110E 116B 11B5;CD4E;110E 116B 11B5;
+CD4F;CD4F;110E 116B 11B6;CD4F;110E 116B 11B6;
+CD50;CD50;110E 116B 11B7;CD50;110E 116B 11B7;
+CD51;CD51;110E 116B 11B8;CD51;110E 116B 11B8;
+CD52;CD52;110E 116B 11B9;CD52;110E 116B 11B9;
+CD53;CD53;110E 116B 11BA;CD53;110E 116B 11BA;
+CD54;CD54;110E 116B 11BB;CD54;110E 116B 11BB;
+CD55;CD55;110E 116B 11BC;CD55;110E 116B 11BC;
+CD56;CD56;110E 116B 11BD;CD56;110E 116B 11BD;
+CD57;CD57;110E 116B 11BE;CD57;110E 116B 11BE;
+CD58;CD58;110E 116B 11BF;CD58;110E 116B 11BF;
+CD59;CD59;110E 116B 11C0;CD59;110E 116B 11C0;
+CD5A;CD5A;110E 116B 11C1;CD5A;110E 116B 11C1;
+CD5B;CD5B;110E 116B 11C2;CD5B;110E 116B 11C2;
+CD5C;CD5C;110E 116C;CD5C;110E 116C;
+CD5D;CD5D;110E 116C 11A8;CD5D;110E 116C 11A8;
+CD5E;CD5E;110E 116C 11A9;CD5E;110E 116C 11A9;
+CD5F;CD5F;110E 116C 11AA;CD5F;110E 116C 11AA;
+CD60;CD60;110E 116C 11AB;CD60;110E 116C 11AB;
+CD61;CD61;110E 116C 11AC;CD61;110E 116C 11AC;
+CD62;CD62;110E 116C 11AD;CD62;110E 116C 11AD;
+CD63;CD63;110E 116C 11AE;CD63;110E 116C 11AE;
+CD64;CD64;110E 116C 11AF;CD64;110E 116C 11AF;
+CD65;CD65;110E 116C 11B0;CD65;110E 116C 11B0;
+CD66;CD66;110E 116C 11B1;CD66;110E 116C 11B1;
+CD67;CD67;110E 116C 11B2;CD67;110E 116C 11B2;
+CD68;CD68;110E 116C 11B3;CD68;110E 116C 11B3;
+CD69;CD69;110E 116C 11B4;CD69;110E 116C 11B4;
+CD6A;CD6A;110E 116C 11B5;CD6A;110E 116C 11B5;
+CD6B;CD6B;110E 116C 11B6;CD6B;110E 116C 11B6;
+CD6C;CD6C;110E 116C 11B7;CD6C;110E 116C 11B7;
+CD6D;CD6D;110E 116C 11B8;CD6D;110E 116C 11B8;
+CD6E;CD6E;110E 116C 11B9;CD6E;110E 116C 11B9;
+CD6F;CD6F;110E 116C 11BA;CD6F;110E 116C 11BA;
+CD70;CD70;110E 116C 11BB;CD70;110E 116C 11BB;
+CD71;CD71;110E 116C 11BC;CD71;110E 116C 11BC;
+CD72;CD72;110E 116C 11BD;CD72;110E 116C 11BD;
+CD73;CD73;110E 116C 11BE;CD73;110E 116C 11BE;
+CD74;CD74;110E 116C 11BF;CD74;110E 116C 11BF;
+CD75;CD75;110E 116C 11C0;CD75;110E 116C 11C0;
+CD76;CD76;110E 116C 11C1;CD76;110E 116C 11C1;
+CD77;CD77;110E 116C 11C2;CD77;110E 116C 11C2;
+CD78;CD78;110E 116D;CD78;110E 116D;
+CD79;CD79;110E 116D 11A8;CD79;110E 116D 11A8;
+CD7A;CD7A;110E 116D 11A9;CD7A;110E 116D 11A9;
+CD7B;CD7B;110E 116D 11AA;CD7B;110E 116D 11AA;
+CD7C;CD7C;110E 116D 11AB;CD7C;110E 116D 11AB;
+CD7D;CD7D;110E 116D 11AC;CD7D;110E 116D 11AC;
+CD7E;CD7E;110E 116D 11AD;CD7E;110E 116D 11AD;
+CD7F;CD7F;110E 116D 11AE;CD7F;110E 116D 11AE;
+CD80;CD80;110E 116D 11AF;CD80;110E 116D 11AF;
+CD81;CD81;110E 116D 11B0;CD81;110E 116D 11B0;
+CD82;CD82;110E 116D 11B1;CD82;110E 116D 11B1;
+CD83;CD83;110E 116D 11B2;CD83;110E 116D 11B2;
+CD84;CD84;110E 116D 11B3;CD84;110E 116D 11B3;
+CD85;CD85;110E 116D 11B4;CD85;110E 116D 11B4;
+CD86;CD86;110E 116D 11B5;CD86;110E 116D 11B5;
+CD87;CD87;110E 116D 11B6;CD87;110E 116D 11B6;
+CD88;CD88;110E 116D 11B7;CD88;110E 116D 11B7;
+CD89;CD89;110E 116D 11B8;CD89;110E 116D 11B8;
+CD8A;CD8A;110E 116D 11B9;CD8A;110E 116D 11B9;
+CD8B;CD8B;110E 116D 11BA;CD8B;110E 116D 11BA;
+CD8C;CD8C;110E 116D 11BB;CD8C;110E 116D 11BB;
+CD8D;CD8D;110E 116D 11BC;CD8D;110E 116D 11BC;
+CD8E;CD8E;110E 116D 11BD;CD8E;110E 116D 11BD;
+CD8F;CD8F;110E 116D 11BE;CD8F;110E 116D 11BE;
+CD90;CD90;110E 116D 11BF;CD90;110E 116D 11BF;
+CD91;CD91;110E 116D 11C0;CD91;110E 116D 11C0;
+CD92;CD92;110E 116D 11C1;CD92;110E 116D 11C1;
+CD93;CD93;110E 116D 11C2;CD93;110E 116D 11C2;
+CD94;CD94;110E 116E;CD94;110E 116E;
+CD95;CD95;110E 116E 11A8;CD95;110E 116E 11A8;
+CD96;CD96;110E 116E 11A9;CD96;110E 116E 11A9;
+CD97;CD97;110E 116E 11AA;CD97;110E 116E 11AA;
+CD98;CD98;110E 116E 11AB;CD98;110E 116E 11AB;
+CD99;CD99;110E 116E 11AC;CD99;110E 116E 11AC;
+CD9A;CD9A;110E 116E 11AD;CD9A;110E 116E 11AD;
+CD9B;CD9B;110E 116E 11AE;CD9B;110E 116E 11AE;
+CD9C;CD9C;110E 116E 11AF;CD9C;110E 116E 11AF;
+CD9D;CD9D;110E 116E 11B0;CD9D;110E 116E 11B0;
+CD9E;CD9E;110E 116E 11B1;CD9E;110E 116E 11B1;
+CD9F;CD9F;110E 116E 11B2;CD9F;110E 116E 11B2;
+CDA0;CDA0;110E 116E 11B3;CDA0;110E 116E 11B3;
+CDA1;CDA1;110E 116E 11B4;CDA1;110E 116E 11B4;
+CDA2;CDA2;110E 116E 11B5;CDA2;110E 116E 11B5;
+CDA3;CDA3;110E 116E 11B6;CDA3;110E 116E 11B6;
+CDA4;CDA4;110E 116E 11B7;CDA4;110E 116E 11B7;
+CDA5;CDA5;110E 116E 11B8;CDA5;110E 116E 11B8;
+CDA6;CDA6;110E 116E 11B9;CDA6;110E 116E 11B9;
+CDA7;CDA7;110E 116E 11BA;CDA7;110E 116E 11BA;
+CDA8;CDA8;110E 116E 11BB;CDA8;110E 116E 11BB;
+CDA9;CDA9;110E 116E 11BC;CDA9;110E 116E 11BC;
+CDAA;CDAA;110E 116E 11BD;CDAA;110E 116E 11BD;
+CDAB;CDAB;110E 116E 11BE;CDAB;110E 116E 11BE;
+CDAC;CDAC;110E 116E 11BF;CDAC;110E 116E 11BF;
+CDAD;CDAD;110E 116E 11C0;CDAD;110E 116E 11C0;
+CDAE;CDAE;110E 116E 11C1;CDAE;110E 116E 11C1;
+CDAF;CDAF;110E 116E 11C2;CDAF;110E 116E 11C2;
+CDB0;CDB0;110E 116F;CDB0;110E 116F;
+CDB1;CDB1;110E 116F 11A8;CDB1;110E 116F 11A8;
+CDB2;CDB2;110E 116F 11A9;CDB2;110E 116F 11A9;
+CDB3;CDB3;110E 116F 11AA;CDB3;110E 116F 11AA;
+CDB4;CDB4;110E 116F 11AB;CDB4;110E 116F 11AB;
+CDB5;CDB5;110E 116F 11AC;CDB5;110E 116F 11AC;
+CDB6;CDB6;110E 116F 11AD;CDB6;110E 116F 11AD;
+CDB7;CDB7;110E 116F 11AE;CDB7;110E 116F 11AE;
+CDB8;CDB8;110E 116F 11AF;CDB8;110E 116F 11AF;
+CDB9;CDB9;110E 116F 11B0;CDB9;110E 116F 11B0;
+CDBA;CDBA;110E 116F 11B1;CDBA;110E 116F 11B1;
+CDBB;CDBB;110E 116F 11B2;CDBB;110E 116F 11B2;
+CDBC;CDBC;110E 116F 11B3;CDBC;110E 116F 11B3;
+CDBD;CDBD;110E 116F 11B4;CDBD;110E 116F 11B4;
+CDBE;CDBE;110E 116F 11B5;CDBE;110E 116F 11B5;
+CDBF;CDBF;110E 116F 11B6;CDBF;110E 116F 11B6;
+CDC0;CDC0;110E 116F 11B7;CDC0;110E 116F 11B7;
+CDC1;CDC1;110E 116F 11B8;CDC1;110E 116F 11B8;
+CDC2;CDC2;110E 116F 11B9;CDC2;110E 116F 11B9;
+CDC3;CDC3;110E 116F 11BA;CDC3;110E 116F 11BA;
+CDC4;CDC4;110E 116F 11BB;CDC4;110E 116F 11BB;
+CDC5;CDC5;110E 116F 11BC;CDC5;110E 116F 11BC;
+CDC6;CDC6;110E 116F 11BD;CDC6;110E 116F 11BD;
+CDC7;CDC7;110E 116F 11BE;CDC7;110E 116F 11BE;
+CDC8;CDC8;110E 116F 11BF;CDC8;110E 116F 11BF;
+CDC9;CDC9;110E 116F 11C0;CDC9;110E 116F 11C0;
+CDCA;CDCA;110E 116F 11C1;CDCA;110E 116F 11C1;
+CDCB;CDCB;110E 116F 11C2;CDCB;110E 116F 11C2;
+CDCC;CDCC;110E 1170;CDCC;110E 1170;
+CDCD;CDCD;110E 1170 11A8;CDCD;110E 1170 11A8;
+CDCE;CDCE;110E 1170 11A9;CDCE;110E 1170 11A9;
+CDCF;CDCF;110E 1170 11AA;CDCF;110E 1170 11AA;
+CDD0;CDD0;110E 1170 11AB;CDD0;110E 1170 11AB;
+CDD1;CDD1;110E 1170 11AC;CDD1;110E 1170 11AC;
+CDD2;CDD2;110E 1170 11AD;CDD2;110E 1170 11AD;
+CDD3;CDD3;110E 1170 11AE;CDD3;110E 1170 11AE;
+CDD4;CDD4;110E 1170 11AF;CDD4;110E 1170 11AF;
+CDD5;CDD5;110E 1170 11B0;CDD5;110E 1170 11B0;
+CDD6;CDD6;110E 1170 11B1;CDD6;110E 1170 11B1;
+CDD7;CDD7;110E 1170 11B2;CDD7;110E 1170 11B2;
+CDD8;CDD8;110E 1170 11B3;CDD8;110E 1170 11B3;
+CDD9;CDD9;110E 1170 11B4;CDD9;110E 1170 11B4;
+CDDA;CDDA;110E 1170 11B5;CDDA;110E 1170 11B5;
+CDDB;CDDB;110E 1170 11B6;CDDB;110E 1170 11B6;
+CDDC;CDDC;110E 1170 11B7;CDDC;110E 1170 11B7;
+CDDD;CDDD;110E 1170 11B8;CDDD;110E 1170 11B8;
+CDDE;CDDE;110E 1170 11B9;CDDE;110E 1170 11B9;
+CDDF;CDDF;110E 1170 11BA;CDDF;110E 1170 11BA;
+CDE0;CDE0;110E 1170 11BB;CDE0;110E 1170 11BB;
+CDE1;CDE1;110E 1170 11BC;CDE1;110E 1170 11BC;
+CDE2;CDE2;110E 1170 11BD;CDE2;110E 1170 11BD;
+CDE3;CDE3;110E 1170 11BE;CDE3;110E 1170 11BE;
+CDE4;CDE4;110E 1170 11BF;CDE4;110E 1170 11BF;
+CDE5;CDE5;110E 1170 11C0;CDE5;110E 1170 11C0;
+CDE6;CDE6;110E 1170 11C1;CDE6;110E 1170 11C1;
+CDE7;CDE7;110E 1170 11C2;CDE7;110E 1170 11C2;
+CDE8;CDE8;110E 1171;CDE8;110E 1171;
+CDE9;CDE9;110E 1171 11A8;CDE9;110E 1171 11A8;
+CDEA;CDEA;110E 1171 11A9;CDEA;110E 1171 11A9;
+CDEB;CDEB;110E 1171 11AA;CDEB;110E 1171 11AA;
+CDEC;CDEC;110E 1171 11AB;CDEC;110E 1171 11AB;
+CDED;CDED;110E 1171 11AC;CDED;110E 1171 11AC;
+CDEE;CDEE;110E 1171 11AD;CDEE;110E 1171 11AD;
+CDEF;CDEF;110E 1171 11AE;CDEF;110E 1171 11AE;
+CDF0;CDF0;110E 1171 11AF;CDF0;110E 1171 11AF;
+CDF1;CDF1;110E 1171 11B0;CDF1;110E 1171 11B0;
+CDF2;CDF2;110E 1171 11B1;CDF2;110E 1171 11B1;
+CDF3;CDF3;110E 1171 11B2;CDF3;110E 1171 11B2;
+CDF4;CDF4;110E 1171 11B3;CDF4;110E 1171 11B3;
+CDF5;CDF5;110E 1171 11B4;CDF5;110E 1171 11B4;
+CDF6;CDF6;110E 1171 11B5;CDF6;110E 1171 11B5;
+CDF7;CDF7;110E 1171 11B6;CDF7;110E 1171 11B6;
+CDF8;CDF8;110E 1171 11B7;CDF8;110E 1171 11B7;
+CDF9;CDF9;110E 1171 11B8;CDF9;110E 1171 11B8;
+CDFA;CDFA;110E 1171 11B9;CDFA;110E 1171 11B9;
+CDFB;CDFB;110E 1171 11BA;CDFB;110E 1171 11BA;
+CDFC;CDFC;110E 1171 11BB;CDFC;110E 1171 11BB;
+CDFD;CDFD;110E 1171 11BC;CDFD;110E 1171 11BC;
+CDFE;CDFE;110E 1171 11BD;CDFE;110E 1171 11BD;
+CDFF;CDFF;110E 1171 11BE;CDFF;110E 1171 11BE;
+CE00;CE00;110E 1171 11BF;CE00;110E 1171 11BF;
+CE01;CE01;110E 1171 11C0;CE01;110E 1171 11C0;
+CE02;CE02;110E 1171 11C1;CE02;110E 1171 11C1;
+CE03;CE03;110E 1171 11C2;CE03;110E 1171 11C2;
+CE04;CE04;110E 1172;CE04;110E 1172;
+CE05;CE05;110E 1172 11A8;CE05;110E 1172 11A8;
+CE06;CE06;110E 1172 11A9;CE06;110E 1172 11A9;
+CE07;CE07;110E 1172 11AA;CE07;110E 1172 11AA;
+CE08;CE08;110E 1172 11AB;CE08;110E 1172 11AB;
+CE09;CE09;110E 1172 11AC;CE09;110E 1172 11AC;
+CE0A;CE0A;110E 1172 11AD;CE0A;110E 1172 11AD;
+CE0B;CE0B;110E 1172 11AE;CE0B;110E 1172 11AE;
+CE0C;CE0C;110E 1172 11AF;CE0C;110E 1172 11AF;
+CE0D;CE0D;110E 1172 11B0;CE0D;110E 1172 11B0;
+CE0E;CE0E;110E 1172 11B1;CE0E;110E 1172 11B1;
+CE0F;CE0F;110E 1172 11B2;CE0F;110E 1172 11B2;
+CE10;CE10;110E 1172 11B3;CE10;110E 1172 11B3;
+CE11;CE11;110E 1172 11B4;CE11;110E 1172 11B4;
+CE12;CE12;110E 1172 11B5;CE12;110E 1172 11B5;
+CE13;CE13;110E 1172 11B6;CE13;110E 1172 11B6;
+CE14;CE14;110E 1172 11B7;CE14;110E 1172 11B7;
+CE15;CE15;110E 1172 11B8;CE15;110E 1172 11B8;
+CE16;CE16;110E 1172 11B9;CE16;110E 1172 11B9;
+CE17;CE17;110E 1172 11BA;CE17;110E 1172 11BA;
+CE18;CE18;110E 1172 11BB;CE18;110E 1172 11BB;
+CE19;CE19;110E 1172 11BC;CE19;110E 1172 11BC;
+CE1A;CE1A;110E 1172 11BD;CE1A;110E 1172 11BD;
+CE1B;CE1B;110E 1172 11BE;CE1B;110E 1172 11BE;
+CE1C;CE1C;110E 1172 11BF;CE1C;110E 1172 11BF;
+CE1D;CE1D;110E 1172 11C0;CE1D;110E 1172 11C0;
+CE1E;CE1E;110E 1172 11C1;CE1E;110E 1172 11C1;
+CE1F;CE1F;110E 1172 11C2;CE1F;110E 1172 11C2;
+CE20;CE20;110E 1173;CE20;110E 1173;
+CE21;CE21;110E 1173 11A8;CE21;110E 1173 11A8;
+CE22;CE22;110E 1173 11A9;CE22;110E 1173 11A9;
+CE23;CE23;110E 1173 11AA;CE23;110E 1173 11AA;
+CE24;CE24;110E 1173 11AB;CE24;110E 1173 11AB;
+CE25;CE25;110E 1173 11AC;CE25;110E 1173 11AC;
+CE26;CE26;110E 1173 11AD;CE26;110E 1173 11AD;
+CE27;CE27;110E 1173 11AE;CE27;110E 1173 11AE;
+CE28;CE28;110E 1173 11AF;CE28;110E 1173 11AF;
+CE29;CE29;110E 1173 11B0;CE29;110E 1173 11B0;
+CE2A;CE2A;110E 1173 11B1;CE2A;110E 1173 11B1;
+CE2B;CE2B;110E 1173 11B2;CE2B;110E 1173 11B2;
+CE2C;CE2C;110E 1173 11B3;CE2C;110E 1173 11B3;
+CE2D;CE2D;110E 1173 11B4;CE2D;110E 1173 11B4;
+CE2E;CE2E;110E 1173 11B5;CE2E;110E 1173 11B5;
+CE2F;CE2F;110E 1173 11B6;CE2F;110E 1173 11B6;
+CE30;CE30;110E 1173 11B7;CE30;110E 1173 11B7;
+CE31;CE31;110E 1173 11B8;CE31;110E 1173 11B8;
+CE32;CE32;110E 1173 11B9;CE32;110E 1173 11B9;
+CE33;CE33;110E 1173 11BA;CE33;110E 1173 11BA;
+CE34;CE34;110E 1173 11BB;CE34;110E 1173 11BB;
+CE35;CE35;110E 1173 11BC;CE35;110E 1173 11BC;
+CE36;CE36;110E 1173 11BD;CE36;110E 1173 11BD;
+CE37;CE37;110E 1173 11BE;CE37;110E 1173 11BE;
+CE38;CE38;110E 1173 11BF;CE38;110E 1173 11BF;
+CE39;CE39;110E 1173 11C0;CE39;110E 1173 11C0;
+CE3A;CE3A;110E 1173 11C1;CE3A;110E 1173 11C1;
+CE3B;CE3B;110E 1173 11C2;CE3B;110E 1173 11C2;
+CE3C;CE3C;110E 1174;CE3C;110E 1174;
+CE3D;CE3D;110E 1174 11A8;CE3D;110E 1174 11A8;
+CE3E;CE3E;110E 1174 11A9;CE3E;110E 1174 11A9;
+CE3F;CE3F;110E 1174 11AA;CE3F;110E 1174 11AA;
+CE40;CE40;110E 1174 11AB;CE40;110E 1174 11AB;
+CE41;CE41;110E 1174 11AC;CE41;110E 1174 11AC;
+CE42;CE42;110E 1174 11AD;CE42;110E 1174 11AD;
+CE43;CE43;110E 1174 11AE;CE43;110E 1174 11AE;
+CE44;CE44;110E 1174 11AF;CE44;110E 1174 11AF;
+CE45;CE45;110E 1174 11B0;CE45;110E 1174 11B0;
+CE46;CE46;110E 1174 11B1;CE46;110E 1174 11B1;
+CE47;CE47;110E 1174 11B2;CE47;110E 1174 11B2;
+CE48;CE48;110E 1174 11B3;CE48;110E 1174 11B3;
+CE49;CE49;110E 1174 11B4;CE49;110E 1174 11B4;
+CE4A;CE4A;110E 1174 11B5;CE4A;110E 1174 11B5;
+CE4B;CE4B;110E 1174 11B6;CE4B;110E 1174 11B6;
+CE4C;CE4C;110E 1174 11B7;CE4C;110E 1174 11B7;
+CE4D;CE4D;110E 1174 11B8;CE4D;110E 1174 11B8;
+CE4E;CE4E;110E 1174 11B9;CE4E;110E 1174 11B9;
+CE4F;CE4F;110E 1174 11BA;CE4F;110E 1174 11BA;
+CE50;CE50;110E 1174 11BB;CE50;110E 1174 11BB;
+CE51;CE51;110E 1174 11BC;CE51;110E 1174 11BC;
+CE52;CE52;110E 1174 11BD;CE52;110E 1174 11BD;
+CE53;CE53;110E 1174 11BE;CE53;110E 1174 11BE;
+CE54;CE54;110E 1174 11BF;CE54;110E 1174 11BF;
+CE55;CE55;110E 1174 11C0;CE55;110E 1174 11C0;
+CE56;CE56;110E 1174 11C1;CE56;110E 1174 11C1;
+CE57;CE57;110E 1174 11C2;CE57;110E 1174 11C2;
+CE58;CE58;110E 1175;CE58;110E 1175;
+CE59;CE59;110E 1175 11A8;CE59;110E 1175 11A8;
+CE5A;CE5A;110E 1175 11A9;CE5A;110E 1175 11A9;
+CE5B;CE5B;110E 1175 11AA;CE5B;110E 1175 11AA;
+CE5C;CE5C;110E 1175 11AB;CE5C;110E 1175 11AB;
+CE5D;CE5D;110E 1175 11AC;CE5D;110E 1175 11AC;
+CE5E;CE5E;110E 1175 11AD;CE5E;110E 1175 11AD;
+CE5F;CE5F;110E 1175 11AE;CE5F;110E 1175 11AE;
+CE60;CE60;110E 1175 11AF;CE60;110E 1175 11AF;
+CE61;CE61;110E 1175 11B0;CE61;110E 1175 11B0;
+CE62;CE62;110E 1175 11B1;CE62;110E 1175 11B1;
+CE63;CE63;110E 1175 11B2;CE63;110E 1175 11B2;
+CE64;CE64;110E 1175 11B3;CE64;110E 1175 11B3;
+CE65;CE65;110E 1175 11B4;CE65;110E 1175 11B4;
+CE66;CE66;110E 1175 11B5;CE66;110E 1175 11B5;
+CE67;CE67;110E 1175 11B6;CE67;110E 1175 11B6;
+CE68;CE68;110E 1175 11B7;CE68;110E 1175 11B7;
+CE69;CE69;110E 1175 11B8;CE69;110E 1175 11B8;
+CE6A;CE6A;110E 1175 11B9;CE6A;110E 1175 11B9;
+CE6B;CE6B;110E 1175 11BA;CE6B;110E 1175 11BA;
+CE6C;CE6C;110E 1175 11BB;CE6C;110E 1175 11BB;
+CE6D;CE6D;110E 1175 11BC;CE6D;110E 1175 11BC;
+CE6E;CE6E;110E 1175 11BD;CE6E;110E 1175 11BD;
+CE6F;CE6F;110E 1175 11BE;CE6F;110E 1175 11BE;
+CE70;CE70;110E 1175 11BF;CE70;110E 1175 11BF;
+CE71;CE71;110E 1175 11C0;CE71;110E 1175 11C0;
+CE72;CE72;110E 1175 11C1;CE72;110E 1175 11C1;
+CE73;CE73;110E 1175 11C2;CE73;110E 1175 11C2;
+CE74;CE74;110F 1161;CE74;110F 1161;
+CE75;CE75;110F 1161 11A8;CE75;110F 1161 11A8;
+CE76;CE76;110F 1161 11A9;CE76;110F 1161 11A9;
+CE77;CE77;110F 1161 11AA;CE77;110F 1161 11AA;
+CE78;CE78;110F 1161 11AB;CE78;110F 1161 11AB;
+CE79;CE79;110F 1161 11AC;CE79;110F 1161 11AC;
+CE7A;CE7A;110F 1161 11AD;CE7A;110F 1161 11AD;
+CE7B;CE7B;110F 1161 11AE;CE7B;110F 1161 11AE;
+CE7C;CE7C;110F 1161 11AF;CE7C;110F 1161 11AF;
+CE7D;CE7D;110F 1161 11B0;CE7D;110F 1161 11B0;
+CE7E;CE7E;110F 1161 11B1;CE7E;110F 1161 11B1;
+CE7F;CE7F;110F 1161 11B2;CE7F;110F 1161 11B2;
+CE80;CE80;110F 1161 11B3;CE80;110F 1161 11B3;
+CE81;CE81;110F 1161 11B4;CE81;110F 1161 11B4;
+CE82;CE82;110F 1161 11B5;CE82;110F 1161 11B5;
+CE83;CE83;110F 1161 11B6;CE83;110F 1161 11B6;
+CE84;CE84;110F 1161 11B7;CE84;110F 1161 11B7;
+CE85;CE85;110F 1161 11B8;CE85;110F 1161 11B8;
+CE86;CE86;110F 1161 11B9;CE86;110F 1161 11B9;
+CE87;CE87;110F 1161 11BA;CE87;110F 1161 11BA;
+CE88;CE88;110F 1161 11BB;CE88;110F 1161 11BB;
+CE89;CE89;110F 1161 11BC;CE89;110F 1161 11BC;
+CE8A;CE8A;110F 1161 11BD;CE8A;110F 1161 11BD;
+CE8B;CE8B;110F 1161 11BE;CE8B;110F 1161 11BE;
+CE8C;CE8C;110F 1161 11BF;CE8C;110F 1161 11BF;
+CE8D;CE8D;110F 1161 11C0;CE8D;110F 1161 11C0;
+CE8E;CE8E;110F 1161 11C1;CE8E;110F 1161 11C1;
+CE8F;CE8F;110F 1161 11C2;CE8F;110F 1161 11C2;
+CE90;CE90;110F 1162;CE90;110F 1162;
+CE91;CE91;110F 1162 11A8;CE91;110F 1162 11A8;
+CE92;CE92;110F 1162 11A9;CE92;110F 1162 11A9;
+CE93;CE93;110F 1162 11AA;CE93;110F 1162 11AA;
+CE94;CE94;110F 1162 11AB;CE94;110F 1162 11AB;
+CE95;CE95;110F 1162 11AC;CE95;110F 1162 11AC;
+CE96;CE96;110F 1162 11AD;CE96;110F 1162 11AD;
+CE97;CE97;110F 1162 11AE;CE97;110F 1162 11AE;
+CE98;CE98;110F 1162 11AF;CE98;110F 1162 11AF;
+CE99;CE99;110F 1162 11B0;CE99;110F 1162 11B0;
+CE9A;CE9A;110F 1162 11B1;CE9A;110F 1162 11B1;
+CE9B;CE9B;110F 1162 11B2;CE9B;110F 1162 11B2;
+CE9C;CE9C;110F 1162 11B3;CE9C;110F 1162 11B3;
+CE9D;CE9D;110F 1162 11B4;CE9D;110F 1162 11B4;
+CE9E;CE9E;110F 1162 11B5;CE9E;110F 1162 11B5;
+CE9F;CE9F;110F 1162 11B6;CE9F;110F 1162 11B6;
+CEA0;CEA0;110F 1162 11B7;CEA0;110F 1162 11B7;
+CEA1;CEA1;110F 1162 11B8;CEA1;110F 1162 11B8;
+CEA2;CEA2;110F 1162 11B9;CEA2;110F 1162 11B9;
+CEA3;CEA3;110F 1162 11BA;CEA3;110F 1162 11BA;
+CEA4;CEA4;110F 1162 11BB;CEA4;110F 1162 11BB;
+CEA5;CEA5;110F 1162 11BC;CEA5;110F 1162 11BC;
+CEA6;CEA6;110F 1162 11BD;CEA6;110F 1162 11BD;
+CEA7;CEA7;110F 1162 11BE;CEA7;110F 1162 11BE;
+CEA8;CEA8;110F 1162 11BF;CEA8;110F 1162 11BF;
+CEA9;CEA9;110F 1162 11C0;CEA9;110F 1162 11C0;
+CEAA;CEAA;110F 1162 11C1;CEAA;110F 1162 11C1;
+CEAB;CEAB;110F 1162 11C2;CEAB;110F 1162 11C2;
+CEAC;CEAC;110F 1163;CEAC;110F 1163;
+CEAD;CEAD;110F 1163 11A8;CEAD;110F 1163 11A8;
+CEAE;CEAE;110F 1163 11A9;CEAE;110F 1163 11A9;
+CEAF;CEAF;110F 1163 11AA;CEAF;110F 1163 11AA;
+CEB0;CEB0;110F 1163 11AB;CEB0;110F 1163 11AB;
+CEB1;CEB1;110F 1163 11AC;CEB1;110F 1163 11AC;
+CEB2;CEB2;110F 1163 11AD;CEB2;110F 1163 11AD;
+CEB3;CEB3;110F 1163 11AE;CEB3;110F 1163 11AE;
+CEB4;CEB4;110F 1163 11AF;CEB4;110F 1163 11AF;
+CEB5;CEB5;110F 1163 11B0;CEB5;110F 1163 11B0;
+CEB6;CEB6;110F 1163 11B1;CEB6;110F 1163 11B1;
+CEB7;CEB7;110F 1163 11B2;CEB7;110F 1163 11B2;
+CEB8;CEB8;110F 1163 11B3;CEB8;110F 1163 11B3;
+CEB9;CEB9;110F 1163 11B4;CEB9;110F 1163 11B4;
+CEBA;CEBA;110F 1163 11B5;CEBA;110F 1163 11B5;
+CEBB;CEBB;110F 1163 11B6;CEBB;110F 1163 11B6;
+CEBC;CEBC;110F 1163 11B7;CEBC;110F 1163 11B7;
+CEBD;CEBD;110F 1163 11B8;CEBD;110F 1163 11B8;
+CEBE;CEBE;110F 1163 11B9;CEBE;110F 1163 11B9;
+CEBF;CEBF;110F 1163 11BA;CEBF;110F 1163 11BA;
+CEC0;CEC0;110F 1163 11BB;CEC0;110F 1163 11BB;
+CEC1;CEC1;110F 1163 11BC;CEC1;110F 1163 11BC;
+CEC2;CEC2;110F 1163 11BD;CEC2;110F 1163 11BD;
+CEC3;CEC3;110F 1163 11BE;CEC3;110F 1163 11BE;
+CEC4;CEC4;110F 1163 11BF;CEC4;110F 1163 11BF;
+CEC5;CEC5;110F 1163 11C0;CEC5;110F 1163 11C0;
+CEC6;CEC6;110F 1163 11C1;CEC6;110F 1163 11C1;
+CEC7;CEC7;110F 1163 11C2;CEC7;110F 1163 11C2;
+CEC8;CEC8;110F 1164;CEC8;110F 1164;
+CEC9;CEC9;110F 1164 11A8;CEC9;110F 1164 11A8;
+CECA;CECA;110F 1164 11A9;CECA;110F 1164 11A9;
+CECB;CECB;110F 1164 11AA;CECB;110F 1164 11AA;
+CECC;CECC;110F 1164 11AB;CECC;110F 1164 11AB;
+CECD;CECD;110F 1164 11AC;CECD;110F 1164 11AC;
+CECE;CECE;110F 1164 11AD;CECE;110F 1164 11AD;
+CECF;CECF;110F 1164 11AE;CECF;110F 1164 11AE;
+CED0;CED0;110F 1164 11AF;CED0;110F 1164 11AF;
+CED1;CED1;110F 1164 11B0;CED1;110F 1164 11B0;
+CED2;CED2;110F 1164 11B1;CED2;110F 1164 11B1;
+CED3;CED3;110F 1164 11B2;CED3;110F 1164 11B2;
+CED4;CED4;110F 1164 11B3;CED4;110F 1164 11B3;
+CED5;CED5;110F 1164 11B4;CED5;110F 1164 11B4;
+CED6;CED6;110F 1164 11B5;CED6;110F 1164 11B5;
+CED7;CED7;110F 1164 11B6;CED7;110F 1164 11B6;
+CED8;CED8;110F 1164 11B7;CED8;110F 1164 11B7;
+CED9;CED9;110F 1164 11B8;CED9;110F 1164 11B8;
+CEDA;CEDA;110F 1164 11B9;CEDA;110F 1164 11B9;
+CEDB;CEDB;110F 1164 11BA;CEDB;110F 1164 11BA;
+CEDC;CEDC;110F 1164 11BB;CEDC;110F 1164 11BB;
+CEDD;CEDD;110F 1164 11BC;CEDD;110F 1164 11BC;
+CEDE;CEDE;110F 1164 11BD;CEDE;110F 1164 11BD;
+CEDF;CEDF;110F 1164 11BE;CEDF;110F 1164 11BE;
+CEE0;CEE0;110F 1164 11BF;CEE0;110F 1164 11BF;
+CEE1;CEE1;110F 1164 11C0;CEE1;110F 1164 11C0;
+CEE2;CEE2;110F 1164 11C1;CEE2;110F 1164 11C1;
+CEE3;CEE3;110F 1164 11C2;CEE3;110F 1164 11C2;
+CEE4;CEE4;110F 1165;CEE4;110F 1165;
+CEE5;CEE5;110F 1165 11A8;CEE5;110F 1165 11A8;
+CEE6;CEE6;110F 1165 11A9;CEE6;110F 1165 11A9;
+CEE7;CEE7;110F 1165 11AA;CEE7;110F 1165 11AA;
+CEE8;CEE8;110F 1165 11AB;CEE8;110F 1165 11AB;
+CEE9;CEE9;110F 1165 11AC;CEE9;110F 1165 11AC;
+CEEA;CEEA;110F 1165 11AD;CEEA;110F 1165 11AD;
+CEEB;CEEB;110F 1165 11AE;CEEB;110F 1165 11AE;
+CEEC;CEEC;110F 1165 11AF;CEEC;110F 1165 11AF;
+CEED;CEED;110F 1165 11B0;CEED;110F 1165 11B0;
+CEEE;CEEE;110F 1165 11B1;CEEE;110F 1165 11B1;
+CEEF;CEEF;110F 1165 11B2;CEEF;110F 1165 11B2;
+CEF0;CEF0;110F 1165 11B3;CEF0;110F 1165 11B3;
+CEF1;CEF1;110F 1165 11B4;CEF1;110F 1165 11B4;
+CEF2;CEF2;110F 1165 11B5;CEF2;110F 1165 11B5;
+CEF3;CEF3;110F 1165 11B6;CEF3;110F 1165 11B6;
+CEF4;CEF4;110F 1165 11B7;CEF4;110F 1165 11B7;
+CEF5;CEF5;110F 1165 11B8;CEF5;110F 1165 11B8;
+CEF6;CEF6;110F 1165 11B9;CEF6;110F 1165 11B9;
+CEF7;CEF7;110F 1165 11BA;CEF7;110F 1165 11BA;
+CEF8;CEF8;110F 1165 11BB;CEF8;110F 1165 11BB;
+CEF9;CEF9;110F 1165 11BC;CEF9;110F 1165 11BC;
+CEFA;CEFA;110F 1165 11BD;CEFA;110F 1165 11BD;
+CEFB;CEFB;110F 1165 11BE;CEFB;110F 1165 11BE;
+CEFC;CEFC;110F 1165 11BF;CEFC;110F 1165 11BF;
+CEFD;CEFD;110F 1165 11C0;CEFD;110F 1165 11C0;
+CEFE;CEFE;110F 1165 11C1;CEFE;110F 1165 11C1;
+CEFF;CEFF;110F 1165 11C2;CEFF;110F 1165 11C2;
+CF00;CF00;110F 1166;CF00;110F 1166;
+CF01;CF01;110F 1166 11A8;CF01;110F 1166 11A8;
+CF02;CF02;110F 1166 11A9;CF02;110F 1166 11A9;
+CF03;CF03;110F 1166 11AA;CF03;110F 1166 11AA;
+CF04;CF04;110F 1166 11AB;CF04;110F 1166 11AB;
+CF05;CF05;110F 1166 11AC;CF05;110F 1166 11AC;
+CF06;CF06;110F 1166 11AD;CF06;110F 1166 11AD;
+CF07;CF07;110F 1166 11AE;CF07;110F 1166 11AE;
+CF08;CF08;110F 1166 11AF;CF08;110F 1166 11AF;
+CF09;CF09;110F 1166 11B0;CF09;110F 1166 11B0;
+CF0A;CF0A;110F 1166 11B1;CF0A;110F 1166 11B1;
+CF0B;CF0B;110F 1166 11B2;CF0B;110F 1166 11B2;
+CF0C;CF0C;110F 1166 11B3;CF0C;110F 1166 11B3;
+CF0D;CF0D;110F 1166 11B4;CF0D;110F 1166 11B4;
+CF0E;CF0E;110F 1166 11B5;CF0E;110F 1166 11B5;
+CF0F;CF0F;110F 1166 11B6;CF0F;110F 1166 11B6;
+CF10;CF10;110F 1166 11B7;CF10;110F 1166 11B7;
+CF11;CF11;110F 1166 11B8;CF11;110F 1166 11B8;
+CF12;CF12;110F 1166 11B9;CF12;110F 1166 11B9;
+CF13;CF13;110F 1166 11BA;CF13;110F 1166 11BA;
+CF14;CF14;110F 1166 11BB;CF14;110F 1166 11BB;
+CF15;CF15;110F 1166 11BC;CF15;110F 1166 11BC;
+CF16;CF16;110F 1166 11BD;CF16;110F 1166 11BD;
+CF17;CF17;110F 1166 11BE;CF17;110F 1166 11BE;
+CF18;CF18;110F 1166 11BF;CF18;110F 1166 11BF;
+CF19;CF19;110F 1166 11C0;CF19;110F 1166 11C0;
+CF1A;CF1A;110F 1166 11C1;CF1A;110F 1166 11C1;
+CF1B;CF1B;110F 1166 11C2;CF1B;110F 1166 11C2;
+CF1C;CF1C;110F 1167;CF1C;110F 1167;
+CF1D;CF1D;110F 1167 11A8;CF1D;110F 1167 11A8;
+CF1E;CF1E;110F 1167 11A9;CF1E;110F 1167 11A9;
+CF1F;CF1F;110F 1167 11AA;CF1F;110F 1167 11AA;
+CF20;CF20;110F 1167 11AB;CF20;110F 1167 11AB;
+CF21;CF21;110F 1167 11AC;CF21;110F 1167 11AC;
+CF22;CF22;110F 1167 11AD;CF22;110F 1167 11AD;
+CF23;CF23;110F 1167 11AE;CF23;110F 1167 11AE;
+CF24;CF24;110F 1167 11AF;CF24;110F 1167 11AF;
+CF25;CF25;110F 1167 11B0;CF25;110F 1167 11B0;
+CF26;CF26;110F 1167 11B1;CF26;110F 1167 11B1;
+CF27;CF27;110F 1167 11B2;CF27;110F 1167 11B2;
+CF28;CF28;110F 1167 11B3;CF28;110F 1167 11B3;
+CF29;CF29;110F 1167 11B4;CF29;110F 1167 11B4;
+CF2A;CF2A;110F 1167 11B5;CF2A;110F 1167 11B5;
+CF2B;CF2B;110F 1167 11B6;CF2B;110F 1167 11B6;
+CF2C;CF2C;110F 1167 11B7;CF2C;110F 1167 11B7;
+CF2D;CF2D;110F 1167 11B8;CF2D;110F 1167 11B8;
+CF2E;CF2E;110F 1167 11B9;CF2E;110F 1167 11B9;
+CF2F;CF2F;110F 1167 11BA;CF2F;110F 1167 11BA;
+CF30;CF30;110F 1167 11BB;CF30;110F 1167 11BB;
+CF31;CF31;110F 1167 11BC;CF31;110F 1167 11BC;
+CF32;CF32;110F 1167 11BD;CF32;110F 1167 11BD;
+CF33;CF33;110F 1167 11BE;CF33;110F 1167 11BE;
+CF34;CF34;110F 1167 11BF;CF34;110F 1167 11BF;
+CF35;CF35;110F 1167 11C0;CF35;110F 1167 11C0;
+CF36;CF36;110F 1167 11C1;CF36;110F 1167 11C1;
+CF37;CF37;110F 1167 11C2;CF37;110F 1167 11C2;
+CF38;CF38;110F 1168;CF38;110F 1168;
+CF39;CF39;110F 1168 11A8;CF39;110F 1168 11A8;
+CF3A;CF3A;110F 1168 11A9;CF3A;110F 1168 11A9;
+CF3B;CF3B;110F 1168 11AA;CF3B;110F 1168 11AA;
+CF3C;CF3C;110F 1168 11AB;CF3C;110F 1168 11AB;
+CF3D;CF3D;110F 1168 11AC;CF3D;110F 1168 11AC;
+CF3E;CF3E;110F 1168 11AD;CF3E;110F 1168 11AD;
+CF3F;CF3F;110F 1168 11AE;CF3F;110F 1168 11AE;
+CF40;CF40;110F 1168 11AF;CF40;110F 1168 11AF;
+CF41;CF41;110F 1168 11B0;CF41;110F 1168 11B0;
+CF42;CF42;110F 1168 11B1;CF42;110F 1168 11B1;
+CF43;CF43;110F 1168 11B2;CF43;110F 1168 11B2;
+CF44;CF44;110F 1168 11B3;CF44;110F 1168 11B3;
+CF45;CF45;110F 1168 11B4;CF45;110F 1168 11B4;
+CF46;CF46;110F 1168 11B5;CF46;110F 1168 11B5;
+CF47;CF47;110F 1168 11B6;CF47;110F 1168 11B6;
+CF48;CF48;110F 1168 11B7;CF48;110F 1168 11B7;
+CF49;CF49;110F 1168 11B8;CF49;110F 1168 11B8;
+CF4A;CF4A;110F 1168 11B9;CF4A;110F 1168 11B9;
+CF4B;CF4B;110F 1168 11BA;CF4B;110F 1168 11BA;
+CF4C;CF4C;110F 1168 11BB;CF4C;110F 1168 11BB;
+CF4D;CF4D;110F 1168 11BC;CF4D;110F 1168 11BC;
+CF4E;CF4E;110F 1168 11BD;CF4E;110F 1168 11BD;
+CF4F;CF4F;110F 1168 11BE;CF4F;110F 1168 11BE;
+CF50;CF50;110F 1168 11BF;CF50;110F 1168 11BF;
+CF51;CF51;110F 1168 11C0;CF51;110F 1168 11C0;
+CF52;CF52;110F 1168 11C1;CF52;110F 1168 11C1;
+CF53;CF53;110F 1168 11C2;CF53;110F 1168 11C2;
+CF54;CF54;110F 1169;CF54;110F 1169;
+CF55;CF55;110F 1169 11A8;CF55;110F 1169 11A8;
+CF56;CF56;110F 1169 11A9;CF56;110F 1169 11A9;
+CF57;CF57;110F 1169 11AA;CF57;110F 1169 11AA;
+CF58;CF58;110F 1169 11AB;CF58;110F 1169 11AB;
+CF59;CF59;110F 1169 11AC;CF59;110F 1169 11AC;
+CF5A;CF5A;110F 1169 11AD;CF5A;110F 1169 11AD;
+CF5B;CF5B;110F 1169 11AE;CF5B;110F 1169 11AE;
+CF5C;CF5C;110F 1169 11AF;CF5C;110F 1169 11AF;
+CF5D;CF5D;110F 1169 11B0;CF5D;110F 1169 11B0;
+CF5E;CF5E;110F 1169 11B1;CF5E;110F 1169 11B1;
+CF5F;CF5F;110F 1169 11B2;CF5F;110F 1169 11B2;
+CF60;CF60;110F 1169 11B3;CF60;110F 1169 11B3;
+CF61;CF61;110F 1169 11B4;CF61;110F 1169 11B4;
+CF62;CF62;110F 1169 11B5;CF62;110F 1169 11B5;
+CF63;CF63;110F 1169 11B6;CF63;110F 1169 11B6;
+CF64;CF64;110F 1169 11B7;CF64;110F 1169 11B7;
+CF65;CF65;110F 1169 11B8;CF65;110F 1169 11B8;
+CF66;CF66;110F 1169 11B9;CF66;110F 1169 11B9;
+CF67;CF67;110F 1169 11BA;CF67;110F 1169 11BA;
+CF68;CF68;110F 1169 11BB;CF68;110F 1169 11BB;
+CF69;CF69;110F 1169 11BC;CF69;110F 1169 11BC;
+CF6A;CF6A;110F 1169 11BD;CF6A;110F 1169 11BD;
+CF6B;CF6B;110F 1169 11BE;CF6B;110F 1169 11BE;
+CF6C;CF6C;110F 1169 11BF;CF6C;110F 1169 11BF;
+CF6D;CF6D;110F 1169 11C0;CF6D;110F 1169 11C0;
+CF6E;CF6E;110F 1169 11C1;CF6E;110F 1169 11C1;
+CF6F;CF6F;110F 1169 11C2;CF6F;110F 1169 11C2;
+CF70;CF70;110F 116A;CF70;110F 116A;
+CF71;CF71;110F 116A 11A8;CF71;110F 116A 11A8;
+CF72;CF72;110F 116A 11A9;CF72;110F 116A 11A9;
+CF73;CF73;110F 116A 11AA;CF73;110F 116A 11AA;
+CF74;CF74;110F 116A 11AB;CF74;110F 116A 11AB;
+CF75;CF75;110F 116A 11AC;CF75;110F 116A 11AC;
+CF76;CF76;110F 116A 11AD;CF76;110F 116A 11AD;
+CF77;CF77;110F 116A 11AE;CF77;110F 116A 11AE;
+CF78;CF78;110F 116A 11AF;CF78;110F 116A 11AF;
+CF79;CF79;110F 116A 11B0;CF79;110F 116A 11B0;
+CF7A;CF7A;110F 116A 11B1;CF7A;110F 116A 11B1;
+CF7B;CF7B;110F 116A 11B2;CF7B;110F 116A 11B2;
+CF7C;CF7C;110F 116A 11B3;CF7C;110F 116A 11B3;
+CF7D;CF7D;110F 116A 11B4;CF7D;110F 116A 11B4;
+CF7E;CF7E;110F 116A 11B5;CF7E;110F 116A 11B5;
+CF7F;CF7F;110F 116A 11B6;CF7F;110F 116A 11B6;
+CF80;CF80;110F 116A 11B7;CF80;110F 116A 11B7;
+CF81;CF81;110F 116A 11B8;CF81;110F 116A 11B8;
+CF82;CF82;110F 116A 11B9;CF82;110F 116A 11B9;
+CF83;CF83;110F 116A 11BA;CF83;110F 116A 11BA;
+CF84;CF84;110F 116A 11BB;CF84;110F 116A 11BB;
+CF85;CF85;110F 116A 11BC;CF85;110F 116A 11BC;
+CF86;CF86;110F 116A 11BD;CF86;110F 116A 11BD;
+CF87;CF87;110F 116A 11BE;CF87;110F 116A 11BE;
+CF88;CF88;110F 116A 11BF;CF88;110F 116A 11BF;
+CF89;CF89;110F 116A 11C0;CF89;110F 116A 11C0;
+CF8A;CF8A;110F 116A 11C1;CF8A;110F 116A 11C1;
+CF8B;CF8B;110F 116A 11C2;CF8B;110F 116A 11C2;
+CF8C;CF8C;110F 116B;CF8C;110F 116B;
+CF8D;CF8D;110F 116B 11A8;CF8D;110F 116B 11A8;
+CF8E;CF8E;110F 116B 11A9;CF8E;110F 116B 11A9;
+CF8F;CF8F;110F 116B 11AA;CF8F;110F 116B 11AA;
+CF90;CF90;110F 116B 11AB;CF90;110F 116B 11AB;
+CF91;CF91;110F 116B 11AC;CF91;110F 116B 11AC;
+CF92;CF92;110F 116B 11AD;CF92;110F 116B 11AD;
+CF93;CF93;110F 116B 11AE;CF93;110F 116B 11AE;
+CF94;CF94;110F 116B 11AF;CF94;110F 116B 11AF;
+CF95;CF95;110F 116B 11B0;CF95;110F 116B 11B0;
+CF96;CF96;110F 116B 11B1;CF96;110F 116B 11B1;
+CF97;CF97;110F 116B 11B2;CF97;110F 116B 11B2;
+CF98;CF98;110F 116B 11B3;CF98;110F 116B 11B3;
+CF99;CF99;110F 116B 11B4;CF99;110F 116B 11B4;
+CF9A;CF9A;110F 116B 11B5;CF9A;110F 116B 11B5;
+CF9B;CF9B;110F 116B 11B6;CF9B;110F 116B 11B6;
+CF9C;CF9C;110F 116B 11B7;CF9C;110F 116B 11B7;
+CF9D;CF9D;110F 116B 11B8;CF9D;110F 116B 11B8;
+CF9E;CF9E;110F 116B 11B9;CF9E;110F 116B 11B9;
+CF9F;CF9F;110F 116B 11BA;CF9F;110F 116B 11BA;
+CFA0;CFA0;110F 116B 11BB;CFA0;110F 116B 11BB;
+CFA1;CFA1;110F 116B 11BC;CFA1;110F 116B 11BC;
+CFA2;CFA2;110F 116B 11BD;CFA2;110F 116B 11BD;
+CFA3;CFA3;110F 116B 11BE;CFA3;110F 116B 11BE;
+CFA4;CFA4;110F 116B 11BF;CFA4;110F 116B 11BF;
+CFA5;CFA5;110F 116B 11C0;CFA5;110F 116B 11C0;
+CFA6;CFA6;110F 116B 11C1;CFA6;110F 116B 11C1;
+CFA7;CFA7;110F 116B 11C2;CFA7;110F 116B 11C2;
+CFA8;CFA8;110F 116C;CFA8;110F 116C;
+CFA9;CFA9;110F 116C 11A8;CFA9;110F 116C 11A8;
+CFAA;CFAA;110F 116C 11A9;CFAA;110F 116C 11A9;
+CFAB;CFAB;110F 116C 11AA;CFAB;110F 116C 11AA;
+CFAC;CFAC;110F 116C 11AB;CFAC;110F 116C 11AB;
+CFAD;CFAD;110F 116C 11AC;CFAD;110F 116C 11AC;
+CFAE;CFAE;110F 116C 11AD;CFAE;110F 116C 11AD;
+CFAF;CFAF;110F 116C 11AE;CFAF;110F 116C 11AE;
+CFB0;CFB0;110F 116C 11AF;CFB0;110F 116C 11AF;
+CFB1;CFB1;110F 116C 11B0;CFB1;110F 116C 11B0;
+CFB2;CFB2;110F 116C 11B1;CFB2;110F 116C 11B1;
+CFB3;CFB3;110F 116C 11B2;CFB3;110F 116C 11B2;
+CFB4;CFB4;110F 116C 11B3;CFB4;110F 116C 11B3;
+CFB5;CFB5;110F 116C 11B4;CFB5;110F 116C 11B4;
+CFB6;CFB6;110F 116C 11B5;CFB6;110F 116C 11B5;
+CFB7;CFB7;110F 116C 11B6;CFB7;110F 116C 11B6;
+CFB8;CFB8;110F 116C 11B7;CFB8;110F 116C 11B7;
+CFB9;CFB9;110F 116C 11B8;CFB9;110F 116C 11B8;
+CFBA;CFBA;110F 116C 11B9;CFBA;110F 116C 11B9;
+CFBB;CFBB;110F 116C 11BA;CFBB;110F 116C 11BA;
+CFBC;CFBC;110F 116C 11BB;CFBC;110F 116C 11BB;
+CFBD;CFBD;110F 116C 11BC;CFBD;110F 116C 11BC;
+CFBE;CFBE;110F 116C 11BD;CFBE;110F 116C 11BD;
+CFBF;CFBF;110F 116C 11BE;CFBF;110F 116C 11BE;
+CFC0;CFC0;110F 116C 11BF;CFC0;110F 116C 11BF;
+CFC1;CFC1;110F 116C 11C0;CFC1;110F 116C 11C0;
+CFC2;CFC2;110F 116C 11C1;CFC2;110F 116C 11C1;
+CFC3;CFC3;110F 116C 11C2;CFC3;110F 116C 11C2;
+CFC4;CFC4;110F 116D;CFC4;110F 116D;
+CFC5;CFC5;110F 116D 11A8;CFC5;110F 116D 11A8;
+CFC6;CFC6;110F 116D 11A9;CFC6;110F 116D 11A9;
+CFC7;CFC7;110F 116D 11AA;CFC7;110F 116D 11AA;
+CFC8;CFC8;110F 116D 11AB;CFC8;110F 116D 11AB;
+CFC9;CFC9;110F 116D 11AC;CFC9;110F 116D 11AC;
+CFCA;CFCA;110F 116D 11AD;CFCA;110F 116D 11AD;
+CFCB;CFCB;110F 116D 11AE;CFCB;110F 116D 11AE;
+CFCC;CFCC;110F 116D 11AF;CFCC;110F 116D 11AF;
+CFCD;CFCD;110F 116D 11B0;CFCD;110F 116D 11B0;
+CFCE;CFCE;110F 116D 11B1;CFCE;110F 116D 11B1;
+CFCF;CFCF;110F 116D 11B2;CFCF;110F 116D 11B2;
+CFD0;CFD0;110F 116D 11B3;CFD0;110F 116D 11B3;
+CFD1;CFD1;110F 116D 11B4;CFD1;110F 116D 11B4;
+CFD2;CFD2;110F 116D 11B5;CFD2;110F 116D 11B5;
+CFD3;CFD3;110F 116D 11B6;CFD3;110F 116D 11B6;
+CFD4;CFD4;110F 116D 11B7;CFD4;110F 116D 11B7;
+CFD5;CFD5;110F 116D 11B8;CFD5;110F 116D 11B8;
+CFD6;CFD6;110F 116D 11B9;CFD6;110F 116D 11B9;
+CFD7;CFD7;110F 116D 11BA;CFD7;110F 116D 11BA;
+CFD8;CFD8;110F 116D 11BB;CFD8;110F 116D 11BB;
+CFD9;CFD9;110F 116D 11BC;CFD9;110F 116D 11BC;
+CFDA;CFDA;110F 116D 11BD;CFDA;110F 116D 11BD;
+CFDB;CFDB;110F 116D 11BE;CFDB;110F 116D 11BE;
+CFDC;CFDC;110F 116D 11BF;CFDC;110F 116D 11BF;
+CFDD;CFDD;110F 116D 11C0;CFDD;110F 116D 11C0;
+CFDE;CFDE;110F 116D 11C1;CFDE;110F 116D 11C1;
+CFDF;CFDF;110F 116D 11C2;CFDF;110F 116D 11C2;
+CFE0;CFE0;110F 116E;CFE0;110F 116E;
+CFE1;CFE1;110F 116E 11A8;CFE1;110F 116E 11A8;
+CFE2;CFE2;110F 116E 11A9;CFE2;110F 116E 11A9;
+CFE3;CFE3;110F 116E 11AA;CFE3;110F 116E 11AA;
+CFE4;CFE4;110F 116E 11AB;CFE4;110F 116E 11AB;
+CFE5;CFE5;110F 116E 11AC;CFE5;110F 116E 11AC;
+CFE6;CFE6;110F 116E 11AD;CFE6;110F 116E 11AD;
+CFE7;CFE7;110F 116E 11AE;CFE7;110F 116E 11AE;
+CFE8;CFE8;110F 116E 11AF;CFE8;110F 116E 11AF;
+CFE9;CFE9;110F 116E 11B0;CFE9;110F 116E 11B0;
+CFEA;CFEA;110F 116E 11B1;CFEA;110F 116E 11B1;
+CFEB;CFEB;110F 116E 11B2;CFEB;110F 116E 11B2;
+CFEC;CFEC;110F 116E 11B3;CFEC;110F 116E 11B3;
+CFED;CFED;110F 116E 11B4;CFED;110F 116E 11B4;
+CFEE;CFEE;110F 116E 11B5;CFEE;110F 116E 11B5;
+CFEF;CFEF;110F 116E 11B6;CFEF;110F 116E 11B6;
+CFF0;CFF0;110F 116E 11B7;CFF0;110F 116E 11B7;
+CFF1;CFF1;110F 116E 11B8;CFF1;110F 116E 11B8;
+CFF2;CFF2;110F 116E 11B9;CFF2;110F 116E 11B9;
+CFF3;CFF3;110F 116E 11BA;CFF3;110F 116E 11BA;
+CFF4;CFF4;110F 116E 11BB;CFF4;110F 116E 11BB;
+CFF5;CFF5;110F 116E 11BC;CFF5;110F 116E 11BC;
+CFF6;CFF6;110F 116E 11BD;CFF6;110F 116E 11BD;
+CFF7;CFF7;110F 116E 11BE;CFF7;110F 116E 11BE;
+CFF8;CFF8;110F 116E 11BF;CFF8;110F 116E 11BF;
+CFF9;CFF9;110F 116E 11C0;CFF9;110F 116E 11C0;
+CFFA;CFFA;110F 116E 11C1;CFFA;110F 116E 11C1;
+CFFB;CFFB;110F 116E 11C2;CFFB;110F 116E 11C2;
+CFFC;CFFC;110F 116F;CFFC;110F 116F;
+CFFD;CFFD;110F 116F 11A8;CFFD;110F 116F 11A8;
+CFFE;CFFE;110F 116F 11A9;CFFE;110F 116F 11A9;
+CFFF;CFFF;110F 116F 11AA;CFFF;110F 116F 11AA;
+D000;D000;110F 116F 11AB;D000;110F 116F 11AB;
+D001;D001;110F 116F 11AC;D001;110F 116F 11AC;
+D002;D002;110F 116F 11AD;D002;110F 116F 11AD;
+D003;D003;110F 116F 11AE;D003;110F 116F 11AE;
+D004;D004;110F 116F 11AF;D004;110F 116F 11AF;
+D005;D005;110F 116F 11B0;D005;110F 116F 11B0;
+D006;D006;110F 116F 11B1;D006;110F 116F 11B1;
+D007;D007;110F 116F 11B2;D007;110F 116F 11B2;
+D008;D008;110F 116F 11B3;D008;110F 116F 11B3;
+D009;D009;110F 116F 11B4;D009;110F 116F 11B4;
+D00A;D00A;110F 116F 11B5;D00A;110F 116F 11B5;
+D00B;D00B;110F 116F 11B6;D00B;110F 116F 11B6;
+D00C;D00C;110F 116F 11B7;D00C;110F 116F 11B7;
+D00D;D00D;110F 116F 11B8;D00D;110F 116F 11B8;
+D00E;D00E;110F 116F 11B9;D00E;110F 116F 11B9;
+D00F;D00F;110F 116F 11BA;D00F;110F 116F 11BA;
+D010;D010;110F 116F 11BB;D010;110F 116F 11BB;
+D011;D011;110F 116F 11BC;D011;110F 116F 11BC;
+D012;D012;110F 116F 11BD;D012;110F 116F 11BD;
+D013;D013;110F 116F 11BE;D013;110F 116F 11BE;
+D014;D014;110F 116F 11BF;D014;110F 116F 11BF;
+D015;D015;110F 116F 11C0;D015;110F 116F 11C0;
+D016;D016;110F 116F 11C1;D016;110F 116F 11C1;
+D017;D017;110F 116F 11C2;D017;110F 116F 11C2;
+D018;D018;110F 1170;D018;110F 1170;
+D019;D019;110F 1170 11A8;D019;110F 1170 11A8;
+D01A;D01A;110F 1170 11A9;D01A;110F 1170 11A9;
+D01B;D01B;110F 1170 11AA;D01B;110F 1170 11AA;
+D01C;D01C;110F 1170 11AB;D01C;110F 1170 11AB;
+D01D;D01D;110F 1170 11AC;D01D;110F 1170 11AC;
+D01E;D01E;110F 1170 11AD;D01E;110F 1170 11AD;
+D01F;D01F;110F 1170 11AE;D01F;110F 1170 11AE;
+D020;D020;110F 1170 11AF;D020;110F 1170 11AF;
+D021;D021;110F 1170 11B0;D021;110F 1170 11B0;
+D022;D022;110F 1170 11B1;D022;110F 1170 11B1;
+D023;D023;110F 1170 11B2;D023;110F 1170 11B2;
+D024;D024;110F 1170 11B3;D024;110F 1170 11B3;
+D025;D025;110F 1170 11B4;D025;110F 1170 11B4;
+D026;D026;110F 1170 11B5;D026;110F 1170 11B5;
+D027;D027;110F 1170 11B6;D027;110F 1170 11B6;
+D028;D028;110F 1170 11B7;D028;110F 1170 11B7;
+D029;D029;110F 1170 11B8;D029;110F 1170 11B8;
+D02A;D02A;110F 1170 11B9;D02A;110F 1170 11B9;
+D02B;D02B;110F 1170 11BA;D02B;110F 1170 11BA;
+D02C;D02C;110F 1170 11BB;D02C;110F 1170 11BB;
+D02D;D02D;110F 1170 11BC;D02D;110F 1170 11BC;
+D02E;D02E;110F 1170 11BD;D02E;110F 1170 11BD;
+D02F;D02F;110F 1170 11BE;D02F;110F 1170 11BE;
+D030;D030;110F 1170 11BF;D030;110F 1170 11BF;
+D031;D031;110F 1170 11C0;D031;110F 1170 11C0;
+D032;D032;110F 1170 11C1;D032;110F 1170 11C1;
+D033;D033;110F 1170 11C2;D033;110F 1170 11C2;
+D034;D034;110F 1171;D034;110F 1171;
+D035;D035;110F 1171 11A8;D035;110F 1171 11A8;
+D036;D036;110F 1171 11A9;D036;110F 1171 11A9;
+D037;D037;110F 1171 11AA;D037;110F 1171 11AA;
+D038;D038;110F 1171 11AB;D038;110F 1171 11AB;
+D039;D039;110F 1171 11AC;D039;110F 1171 11AC;
+D03A;D03A;110F 1171 11AD;D03A;110F 1171 11AD;
+D03B;D03B;110F 1171 11AE;D03B;110F 1171 11AE;
+D03C;D03C;110F 1171 11AF;D03C;110F 1171 11AF;
+D03D;D03D;110F 1171 11B0;D03D;110F 1171 11B0;
+D03E;D03E;110F 1171 11B1;D03E;110F 1171 11B1;
+D03F;D03F;110F 1171 11B2;D03F;110F 1171 11B2;
+D040;D040;110F 1171 11B3;D040;110F 1171 11B3;
+D041;D041;110F 1171 11B4;D041;110F 1171 11B4;
+D042;D042;110F 1171 11B5;D042;110F 1171 11B5;
+D043;D043;110F 1171 11B6;D043;110F 1171 11B6;
+D044;D044;110F 1171 11B7;D044;110F 1171 11B7;
+D045;D045;110F 1171 11B8;D045;110F 1171 11B8;
+D046;D046;110F 1171 11B9;D046;110F 1171 11B9;
+D047;D047;110F 1171 11BA;D047;110F 1171 11BA;
+D048;D048;110F 1171 11BB;D048;110F 1171 11BB;
+D049;D049;110F 1171 11BC;D049;110F 1171 11BC;
+D04A;D04A;110F 1171 11BD;D04A;110F 1171 11BD;
+D04B;D04B;110F 1171 11BE;D04B;110F 1171 11BE;
+D04C;D04C;110F 1171 11BF;D04C;110F 1171 11BF;
+D04D;D04D;110F 1171 11C0;D04D;110F 1171 11C0;
+D04E;D04E;110F 1171 11C1;D04E;110F 1171 11C1;
+D04F;D04F;110F 1171 11C2;D04F;110F 1171 11C2;
+D050;D050;110F 1172;D050;110F 1172;
+D051;D051;110F 1172 11A8;D051;110F 1172 11A8;
+D052;D052;110F 1172 11A9;D052;110F 1172 11A9;
+D053;D053;110F 1172 11AA;D053;110F 1172 11AA;
+D054;D054;110F 1172 11AB;D054;110F 1172 11AB;
+D055;D055;110F 1172 11AC;D055;110F 1172 11AC;
+D056;D056;110F 1172 11AD;D056;110F 1172 11AD;
+D057;D057;110F 1172 11AE;D057;110F 1172 11AE;
+D058;D058;110F 1172 11AF;D058;110F 1172 11AF;
+D059;D059;110F 1172 11B0;D059;110F 1172 11B0;
+D05A;D05A;110F 1172 11B1;D05A;110F 1172 11B1;
+D05B;D05B;110F 1172 11B2;D05B;110F 1172 11B2;
+D05C;D05C;110F 1172 11B3;D05C;110F 1172 11B3;
+D05D;D05D;110F 1172 11B4;D05D;110F 1172 11B4;
+D05E;D05E;110F 1172 11B5;D05E;110F 1172 11B5;
+D05F;D05F;110F 1172 11B6;D05F;110F 1172 11B6;
+D060;D060;110F 1172 11B7;D060;110F 1172 11B7;
+D061;D061;110F 1172 11B8;D061;110F 1172 11B8;
+D062;D062;110F 1172 11B9;D062;110F 1172 11B9;
+D063;D063;110F 1172 11BA;D063;110F 1172 11BA;
+D064;D064;110F 1172 11BB;D064;110F 1172 11BB;
+D065;D065;110F 1172 11BC;D065;110F 1172 11BC;
+D066;D066;110F 1172 11BD;D066;110F 1172 11BD;
+D067;D067;110F 1172 11BE;D067;110F 1172 11BE;
+D068;D068;110F 1172 11BF;D068;110F 1172 11BF;
+D069;D069;110F 1172 11C0;D069;110F 1172 11C0;
+D06A;D06A;110F 1172 11C1;D06A;110F 1172 11C1;
+D06B;D06B;110F 1172 11C2;D06B;110F 1172 11C2;
+D06C;D06C;110F 1173;D06C;110F 1173;
+D06D;D06D;110F 1173 11A8;D06D;110F 1173 11A8;
+D06E;D06E;110F 1173 11A9;D06E;110F 1173 11A9;
+D06F;D06F;110F 1173 11AA;D06F;110F 1173 11AA;
+D070;D070;110F 1173 11AB;D070;110F 1173 11AB;
+D071;D071;110F 1173 11AC;D071;110F 1173 11AC;
+D072;D072;110F 1173 11AD;D072;110F 1173 11AD;
+D073;D073;110F 1173 11AE;D073;110F 1173 11AE;
+D074;D074;110F 1173 11AF;D074;110F 1173 11AF;
+D075;D075;110F 1173 11B0;D075;110F 1173 11B0;
+D076;D076;110F 1173 11B1;D076;110F 1173 11B1;
+D077;D077;110F 1173 11B2;D077;110F 1173 11B2;
+D078;D078;110F 1173 11B3;D078;110F 1173 11B3;
+D079;D079;110F 1173 11B4;D079;110F 1173 11B4;
+D07A;D07A;110F 1173 11B5;D07A;110F 1173 11B5;
+D07B;D07B;110F 1173 11B6;D07B;110F 1173 11B6;
+D07C;D07C;110F 1173 11B7;D07C;110F 1173 11B7;
+D07D;D07D;110F 1173 11B8;D07D;110F 1173 11B8;
+D07E;D07E;110F 1173 11B9;D07E;110F 1173 11B9;
+D07F;D07F;110F 1173 11BA;D07F;110F 1173 11BA;
+D080;D080;110F 1173 11BB;D080;110F 1173 11BB;
+D081;D081;110F 1173 11BC;D081;110F 1173 11BC;
+D082;D082;110F 1173 11BD;D082;110F 1173 11BD;
+D083;D083;110F 1173 11BE;D083;110F 1173 11BE;
+D084;D084;110F 1173 11BF;D084;110F 1173 11BF;
+D085;D085;110F 1173 11C0;D085;110F 1173 11C0;
+D086;D086;110F 1173 11C1;D086;110F 1173 11C1;
+D087;D087;110F 1173 11C2;D087;110F 1173 11C2;
+D088;D088;110F 1174;D088;110F 1174;
+D089;D089;110F 1174 11A8;D089;110F 1174 11A8;
+D08A;D08A;110F 1174 11A9;D08A;110F 1174 11A9;
+D08B;D08B;110F 1174 11AA;D08B;110F 1174 11AA;
+D08C;D08C;110F 1174 11AB;D08C;110F 1174 11AB;
+D08D;D08D;110F 1174 11AC;D08D;110F 1174 11AC;
+D08E;D08E;110F 1174 11AD;D08E;110F 1174 11AD;
+D08F;D08F;110F 1174 11AE;D08F;110F 1174 11AE;
+D090;D090;110F 1174 11AF;D090;110F 1174 11AF;
+D091;D091;110F 1174 11B0;D091;110F 1174 11B0;
+D092;D092;110F 1174 11B1;D092;110F 1174 11B1;
+D093;D093;110F 1174 11B2;D093;110F 1174 11B2;
+D094;D094;110F 1174 11B3;D094;110F 1174 11B3;
+D095;D095;110F 1174 11B4;D095;110F 1174 11B4;
+D096;D096;110F 1174 11B5;D096;110F 1174 11B5;
+D097;D097;110F 1174 11B6;D097;110F 1174 11B6;
+D098;D098;110F 1174 11B7;D098;110F 1174 11B7;
+D099;D099;110F 1174 11B8;D099;110F 1174 11B8;
+D09A;D09A;110F 1174 11B9;D09A;110F 1174 11B9;
+D09B;D09B;110F 1174 11BA;D09B;110F 1174 11BA;
+D09C;D09C;110F 1174 11BB;D09C;110F 1174 11BB;
+D09D;D09D;110F 1174 11BC;D09D;110F 1174 11BC;
+D09E;D09E;110F 1174 11BD;D09E;110F 1174 11BD;
+D09F;D09F;110F 1174 11BE;D09F;110F 1174 11BE;
+D0A0;D0A0;110F 1174 11BF;D0A0;110F 1174 11BF;
+D0A1;D0A1;110F 1174 11C0;D0A1;110F 1174 11C0;
+D0A2;D0A2;110F 1174 11C1;D0A2;110F 1174 11C1;
+D0A3;D0A3;110F 1174 11C2;D0A3;110F 1174 11C2;
+D0A4;D0A4;110F 1175;D0A4;110F 1175;
+D0A5;D0A5;110F 1175 11A8;D0A5;110F 1175 11A8;
+D0A6;D0A6;110F 1175 11A9;D0A6;110F 1175 11A9;
+D0A7;D0A7;110F 1175 11AA;D0A7;110F 1175 11AA;
+D0A8;D0A8;110F 1175 11AB;D0A8;110F 1175 11AB;
+D0A9;D0A9;110F 1175 11AC;D0A9;110F 1175 11AC;
+D0AA;D0AA;110F 1175 11AD;D0AA;110F 1175 11AD;
+D0AB;D0AB;110F 1175 11AE;D0AB;110F 1175 11AE;
+D0AC;D0AC;110F 1175 11AF;D0AC;110F 1175 11AF;
+D0AD;D0AD;110F 1175 11B0;D0AD;110F 1175 11B0;
+D0AE;D0AE;110F 1175 11B1;D0AE;110F 1175 11B1;
+D0AF;D0AF;110F 1175 11B2;D0AF;110F 1175 11B2;
+D0B0;D0B0;110F 1175 11B3;D0B0;110F 1175 11B3;
+D0B1;D0B1;110F 1175 11B4;D0B1;110F 1175 11B4;
+D0B2;D0B2;110F 1175 11B5;D0B2;110F 1175 11B5;
+D0B3;D0B3;110F 1175 11B6;D0B3;110F 1175 11B6;
+D0B4;D0B4;110F 1175 11B7;D0B4;110F 1175 11B7;
+D0B5;D0B5;110F 1175 11B8;D0B5;110F 1175 11B8;
+D0B6;D0B6;110F 1175 11B9;D0B6;110F 1175 11B9;
+D0B7;D0B7;110F 1175 11BA;D0B7;110F 1175 11BA;
+D0B8;D0B8;110F 1175 11BB;D0B8;110F 1175 11BB;
+D0B9;D0B9;110F 1175 11BC;D0B9;110F 1175 11BC;
+D0BA;D0BA;110F 1175 11BD;D0BA;110F 1175 11BD;
+D0BB;D0BB;110F 1175 11BE;D0BB;110F 1175 11BE;
+D0BC;D0BC;110F 1175 11BF;D0BC;110F 1175 11BF;
+D0BD;D0BD;110F 1175 11C0;D0BD;110F 1175 11C0;
+D0BE;D0BE;110F 1175 11C1;D0BE;110F 1175 11C1;
+D0BF;D0BF;110F 1175 11C2;D0BF;110F 1175 11C2;
+D0C0;D0C0;1110 1161;D0C0;1110 1161;
+D0C1;D0C1;1110 1161 11A8;D0C1;1110 1161 11A8;
+D0C2;D0C2;1110 1161 11A9;D0C2;1110 1161 11A9;
+D0C3;D0C3;1110 1161 11AA;D0C3;1110 1161 11AA;
+D0C4;D0C4;1110 1161 11AB;D0C4;1110 1161 11AB;
+D0C5;D0C5;1110 1161 11AC;D0C5;1110 1161 11AC;
+D0C6;D0C6;1110 1161 11AD;D0C6;1110 1161 11AD;
+D0C7;D0C7;1110 1161 11AE;D0C7;1110 1161 11AE;
+D0C8;D0C8;1110 1161 11AF;D0C8;1110 1161 11AF;
+D0C9;D0C9;1110 1161 11B0;D0C9;1110 1161 11B0;
+D0CA;D0CA;1110 1161 11B1;D0CA;1110 1161 11B1;
+D0CB;D0CB;1110 1161 11B2;D0CB;1110 1161 11B2;
+D0CC;D0CC;1110 1161 11B3;D0CC;1110 1161 11B3;
+D0CD;D0CD;1110 1161 11B4;D0CD;1110 1161 11B4;
+D0CE;D0CE;1110 1161 11B5;D0CE;1110 1161 11B5;
+D0CF;D0CF;1110 1161 11B6;D0CF;1110 1161 11B6;
+D0D0;D0D0;1110 1161 11B7;D0D0;1110 1161 11B7;
+D0D1;D0D1;1110 1161 11B8;D0D1;1110 1161 11B8;
+D0D2;D0D2;1110 1161 11B9;D0D2;1110 1161 11B9;
+D0D3;D0D3;1110 1161 11BA;D0D3;1110 1161 11BA;
+D0D4;D0D4;1110 1161 11BB;D0D4;1110 1161 11BB;
+D0D5;D0D5;1110 1161 11BC;D0D5;1110 1161 11BC;
+D0D6;D0D6;1110 1161 11BD;D0D6;1110 1161 11BD;
+D0D7;D0D7;1110 1161 11BE;D0D7;1110 1161 11BE;
+D0D8;D0D8;1110 1161 11BF;D0D8;1110 1161 11BF;
+D0D9;D0D9;1110 1161 11C0;D0D9;1110 1161 11C0;
+D0DA;D0DA;1110 1161 11C1;D0DA;1110 1161 11C1;
+D0DB;D0DB;1110 1161 11C2;D0DB;1110 1161 11C2;
+D0DC;D0DC;1110 1162;D0DC;1110 1162;
+D0DD;D0DD;1110 1162 11A8;D0DD;1110 1162 11A8;
+D0DE;D0DE;1110 1162 11A9;D0DE;1110 1162 11A9;
+D0DF;D0DF;1110 1162 11AA;D0DF;1110 1162 11AA;
+D0E0;D0E0;1110 1162 11AB;D0E0;1110 1162 11AB;
+D0E1;D0E1;1110 1162 11AC;D0E1;1110 1162 11AC;
+D0E2;D0E2;1110 1162 11AD;D0E2;1110 1162 11AD;
+D0E3;D0E3;1110 1162 11AE;D0E3;1110 1162 11AE;
+D0E4;D0E4;1110 1162 11AF;D0E4;1110 1162 11AF;
+D0E5;D0E5;1110 1162 11B0;D0E5;1110 1162 11B0;
+D0E6;D0E6;1110 1162 11B1;D0E6;1110 1162 11B1;
+D0E7;D0E7;1110 1162 11B2;D0E7;1110 1162 11B2;
+D0E8;D0E8;1110 1162 11B3;D0E8;1110 1162 11B3;
+D0E9;D0E9;1110 1162 11B4;D0E9;1110 1162 11B4;
+D0EA;D0EA;1110 1162 11B5;D0EA;1110 1162 11B5;
+D0EB;D0EB;1110 1162 11B6;D0EB;1110 1162 11B6;
+D0EC;D0EC;1110 1162 11B7;D0EC;1110 1162 11B7;
+D0ED;D0ED;1110 1162 11B8;D0ED;1110 1162 11B8;
+D0EE;D0EE;1110 1162 11B9;D0EE;1110 1162 11B9;
+D0EF;D0EF;1110 1162 11BA;D0EF;1110 1162 11BA;
+D0F0;D0F0;1110 1162 11BB;D0F0;1110 1162 11BB;
+D0F1;D0F1;1110 1162 11BC;D0F1;1110 1162 11BC;
+D0F2;D0F2;1110 1162 11BD;D0F2;1110 1162 11BD;
+D0F3;D0F3;1110 1162 11BE;D0F3;1110 1162 11BE;
+D0F4;D0F4;1110 1162 11BF;D0F4;1110 1162 11BF;
+D0F5;D0F5;1110 1162 11C0;D0F5;1110 1162 11C0;
+D0F6;D0F6;1110 1162 11C1;D0F6;1110 1162 11C1;
+D0F7;D0F7;1110 1162 11C2;D0F7;1110 1162 11C2;
+D0F8;D0F8;1110 1163;D0F8;1110 1163;
+D0F9;D0F9;1110 1163 11A8;D0F9;1110 1163 11A8;
+D0FA;D0FA;1110 1163 11A9;D0FA;1110 1163 11A9;
+D0FB;D0FB;1110 1163 11AA;D0FB;1110 1163 11AA;
+D0FC;D0FC;1110 1163 11AB;D0FC;1110 1163 11AB;
+D0FD;D0FD;1110 1163 11AC;D0FD;1110 1163 11AC;
+D0FE;D0FE;1110 1163 11AD;D0FE;1110 1163 11AD;
+D0FF;D0FF;1110 1163 11AE;D0FF;1110 1163 11AE;
+D100;D100;1110 1163 11AF;D100;1110 1163 11AF;
+D101;D101;1110 1163 11B0;D101;1110 1163 11B0;
+D102;D102;1110 1163 11B1;D102;1110 1163 11B1;
+D103;D103;1110 1163 11B2;D103;1110 1163 11B2;
+D104;D104;1110 1163 11B3;D104;1110 1163 11B3;
+D105;D105;1110 1163 11B4;D105;1110 1163 11B4;
+D106;D106;1110 1163 11B5;D106;1110 1163 11B5;
+D107;D107;1110 1163 11B6;D107;1110 1163 11B6;
+D108;D108;1110 1163 11B7;D108;1110 1163 11B7;
+D109;D109;1110 1163 11B8;D109;1110 1163 11B8;
+D10A;D10A;1110 1163 11B9;D10A;1110 1163 11B9;
+D10B;D10B;1110 1163 11BA;D10B;1110 1163 11BA;
+D10C;D10C;1110 1163 11BB;D10C;1110 1163 11BB;
+D10D;D10D;1110 1163 11BC;D10D;1110 1163 11BC;
+D10E;D10E;1110 1163 11BD;D10E;1110 1163 11BD;
+D10F;D10F;1110 1163 11BE;D10F;1110 1163 11BE;
+D110;D110;1110 1163 11BF;D110;1110 1163 11BF;
+D111;D111;1110 1163 11C0;D111;1110 1163 11C0;
+D112;D112;1110 1163 11C1;D112;1110 1163 11C1;
+D113;D113;1110 1163 11C2;D113;1110 1163 11C2;
+D114;D114;1110 1164;D114;1110 1164;
+D115;D115;1110 1164 11A8;D115;1110 1164 11A8;
+D116;D116;1110 1164 11A9;D116;1110 1164 11A9;
+D117;D117;1110 1164 11AA;D117;1110 1164 11AA;
+D118;D118;1110 1164 11AB;D118;1110 1164 11AB;
+D119;D119;1110 1164 11AC;D119;1110 1164 11AC;
+D11A;D11A;1110 1164 11AD;D11A;1110 1164 11AD;
+D11B;D11B;1110 1164 11AE;D11B;1110 1164 11AE;
+D11C;D11C;1110 1164 11AF;D11C;1110 1164 11AF;
+D11D;D11D;1110 1164 11B0;D11D;1110 1164 11B0;
+D11E;D11E;1110 1164 11B1;D11E;1110 1164 11B1;
+D11F;D11F;1110 1164 11B2;D11F;1110 1164 11B2;
+D120;D120;1110 1164 11B3;D120;1110 1164 11B3;
+D121;D121;1110 1164 11B4;D121;1110 1164 11B4;
+D122;D122;1110 1164 11B5;D122;1110 1164 11B5;
+D123;D123;1110 1164 11B6;D123;1110 1164 11B6;
+D124;D124;1110 1164 11B7;D124;1110 1164 11B7;
+D125;D125;1110 1164 11B8;D125;1110 1164 11B8;
+D126;D126;1110 1164 11B9;D126;1110 1164 11B9;
+D127;D127;1110 1164 11BA;D127;1110 1164 11BA;
+D128;D128;1110 1164 11BB;D128;1110 1164 11BB;
+D129;D129;1110 1164 11BC;D129;1110 1164 11BC;
+D12A;D12A;1110 1164 11BD;D12A;1110 1164 11BD;
+D12B;D12B;1110 1164 11BE;D12B;1110 1164 11BE;
+D12C;D12C;1110 1164 11BF;D12C;1110 1164 11BF;
+D12D;D12D;1110 1164 11C0;D12D;1110 1164 11C0;
+D12E;D12E;1110 1164 11C1;D12E;1110 1164 11C1;
+D12F;D12F;1110 1164 11C2;D12F;1110 1164 11C2;
+D130;D130;1110 1165;D130;1110 1165;
+D131;D131;1110 1165 11A8;D131;1110 1165 11A8;
+D132;D132;1110 1165 11A9;D132;1110 1165 11A9;
+D133;D133;1110 1165 11AA;D133;1110 1165 11AA;
+D134;D134;1110 1165 11AB;D134;1110 1165 11AB;
+D135;D135;1110 1165 11AC;D135;1110 1165 11AC;
+D136;D136;1110 1165 11AD;D136;1110 1165 11AD;
+D137;D137;1110 1165 11AE;D137;1110 1165 11AE;
+D138;D138;1110 1165 11AF;D138;1110 1165 11AF;
+D139;D139;1110 1165 11B0;D139;1110 1165 11B0;
+D13A;D13A;1110 1165 11B1;D13A;1110 1165 11B1;
+D13B;D13B;1110 1165 11B2;D13B;1110 1165 11B2;
+D13C;D13C;1110 1165 11B3;D13C;1110 1165 11B3;
+D13D;D13D;1110 1165 11B4;D13D;1110 1165 11B4;
+D13E;D13E;1110 1165 11B5;D13E;1110 1165 11B5;
+D13F;D13F;1110 1165 11B6;D13F;1110 1165 11B6;
+D140;D140;1110 1165 11B7;D140;1110 1165 11B7;
+D141;D141;1110 1165 11B8;D141;1110 1165 11B8;
+D142;D142;1110 1165 11B9;D142;1110 1165 11B9;
+D143;D143;1110 1165 11BA;D143;1110 1165 11BA;
+D144;D144;1110 1165 11BB;D144;1110 1165 11BB;
+D145;D145;1110 1165 11BC;D145;1110 1165 11BC;
+D146;D146;1110 1165 11BD;D146;1110 1165 11BD;
+D147;D147;1110 1165 11BE;D147;1110 1165 11BE;
+D148;D148;1110 1165 11BF;D148;1110 1165 11BF;
+D149;D149;1110 1165 11C0;D149;1110 1165 11C0;
+D14A;D14A;1110 1165 11C1;D14A;1110 1165 11C1;
+D14B;D14B;1110 1165 11C2;D14B;1110 1165 11C2;
+D14C;D14C;1110 1166;D14C;1110 1166;
+D14D;D14D;1110 1166 11A8;D14D;1110 1166 11A8;
+D14E;D14E;1110 1166 11A9;D14E;1110 1166 11A9;
+D14F;D14F;1110 1166 11AA;D14F;1110 1166 11AA;
+D150;D150;1110 1166 11AB;D150;1110 1166 11AB;
+D151;D151;1110 1166 11AC;D151;1110 1166 11AC;
+D152;D152;1110 1166 11AD;D152;1110 1166 11AD;
+D153;D153;1110 1166 11AE;D153;1110 1166 11AE;
+D154;D154;1110 1166 11AF;D154;1110 1166 11AF;
+D155;D155;1110 1166 11B0;D155;1110 1166 11B0;
+D156;D156;1110 1166 11B1;D156;1110 1166 11B1;
+D157;D157;1110 1166 11B2;D157;1110 1166 11B2;
+D158;D158;1110 1166 11B3;D158;1110 1166 11B3;
+D159;D159;1110 1166 11B4;D159;1110 1166 11B4;
+D15A;D15A;1110 1166 11B5;D15A;1110 1166 11B5;
+D15B;D15B;1110 1166 11B6;D15B;1110 1166 11B6;
+D15C;D15C;1110 1166 11B7;D15C;1110 1166 11B7;
+D15D;D15D;1110 1166 11B8;D15D;1110 1166 11B8;
+D15E;D15E;1110 1166 11B9;D15E;1110 1166 11B9;
+D15F;D15F;1110 1166 11BA;D15F;1110 1166 11BA;
+D160;D160;1110 1166 11BB;D160;1110 1166 11BB;
+D161;D161;1110 1166 11BC;D161;1110 1166 11BC;
+D162;D162;1110 1166 11BD;D162;1110 1166 11BD;
+D163;D163;1110 1166 11BE;D163;1110 1166 11BE;
+D164;D164;1110 1166 11BF;D164;1110 1166 11BF;
+D165;D165;1110 1166 11C0;D165;1110 1166 11C0;
+D166;D166;1110 1166 11C1;D166;1110 1166 11C1;
+D167;D167;1110 1166 11C2;D167;1110 1166 11C2;
+D168;D168;1110 1167;D168;1110 1167;
+D169;D169;1110 1167 11A8;D169;1110 1167 11A8;
+D16A;D16A;1110 1167 11A9;D16A;1110 1167 11A9;
+D16B;D16B;1110 1167 11AA;D16B;1110 1167 11AA;
+D16C;D16C;1110 1167 11AB;D16C;1110 1167 11AB;
+D16D;D16D;1110 1167 11AC;D16D;1110 1167 11AC;
+D16E;D16E;1110 1167 11AD;D16E;1110 1167 11AD;
+D16F;D16F;1110 1167 11AE;D16F;1110 1167 11AE;
+D170;D170;1110 1167 11AF;D170;1110 1167 11AF;
+D171;D171;1110 1167 11B0;D171;1110 1167 11B0;
+D172;D172;1110 1167 11B1;D172;1110 1167 11B1;
+D173;D173;1110 1167 11B2;D173;1110 1167 11B2;
+D174;D174;1110 1167 11B3;D174;1110 1167 11B3;
+D175;D175;1110 1167 11B4;D175;1110 1167 11B4;
+D176;D176;1110 1167 11B5;D176;1110 1167 11B5;
+D177;D177;1110 1167 11B6;D177;1110 1167 11B6;
+D178;D178;1110 1167 11B7;D178;1110 1167 11B7;
+D179;D179;1110 1167 11B8;D179;1110 1167 11B8;
+D17A;D17A;1110 1167 11B9;D17A;1110 1167 11B9;
+D17B;D17B;1110 1167 11BA;D17B;1110 1167 11BA;
+D17C;D17C;1110 1167 11BB;D17C;1110 1167 11BB;
+D17D;D17D;1110 1167 11BC;D17D;1110 1167 11BC;
+D17E;D17E;1110 1167 11BD;D17E;1110 1167 11BD;
+D17F;D17F;1110 1167 11BE;D17F;1110 1167 11BE;
+D180;D180;1110 1167 11BF;D180;1110 1167 11BF;
+D181;D181;1110 1167 11C0;D181;1110 1167 11C0;
+D182;D182;1110 1167 11C1;D182;1110 1167 11C1;
+D183;D183;1110 1167 11C2;D183;1110 1167 11C2;
+D184;D184;1110 1168;D184;1110 1168;
+D185;D185;1110 1168 11A8;D185;1110 1168 11A8;
+D186;D186;1110 1168 11A9;D186;1110 1168 11A9;
+D187;D187;1110 1168 11AA;D187;1110 1168 11AA;
+D188;D188;1110 1168 11AB;D188;1110 1168 11AB;
+D189;D189;1110 1168 11AC;D189;1110 1168 11AC;
+D18A;D18A;1110 1168 11AD;D18A;1110 1168 11AD;
+D18B;D18B;1110 1168 11AE;D18B;1110 1168 11AE;
+D18C;D18C;1110 1168 11AF;D18C;1110 1168 11AF;
+D18D;D18D;1110 1168 11B0;D18D;1110 1168 11B0;
+D18E;D18E;1110 1168 11B1;D18E;1110 1168 11B1;
+D18F;D18F;1110 1168 11B2;D18F;1110 1168 11B2;
+D190;D190;1110 1168 11B3;D190;1110 1168 11B3;
+D191;D191;1110 1168 11B4;D191;1110 1168 11B4;
+D192;D192;1110 1168 11B5;D192;1110 1168 11B5;
+D193;D193;1110 1168 11B6;D193;1110 1168 11B6;
+D194;D194;1110 1168 11B7;D194;1110 1168 11B7;
+D195;D195;1110 1168 11B8;D195;1110 1168 11B8;
+D196;D196;1110 1168 11B9;D196;1110 1168 11B9;
+D197;D197;1110 1168 11BA;D197;1110 1168 11BA;
+D198;D198;1110 1168 11BB;D198;1110 1168 11BB;
+D199;D199;1110 1168 11BC;D199;1110 1168 11BC;
+D19A;D19A;1110 1168 11BD;D19A;1110 1168 11BD;
+D19B;D19B;1110 1168 11BE;D19B;1110 1168 11BE;
+D19C;D19C;1110 1168 11BF;D19C;1110 1168 11BF;
+D19D;D19D;1110 1168 11C0;D19D;1110 1168 11C0;
+D19E;D19E;1110 1168 11C1;D19E;1110 1168 11C1;
+D19F;D19F;1110 1168 11C2;D19F;1110 1168 11C2;
+D1A0;D1A0;1110 1169;D1A0;1110 1169;
+D1A1;D1A1;1110 1169 11A8;D1A1;1110 1169 11A8;
+D1A2;D1A2;1110 1169 11A9;D1A2;1110 1169 11A9;
+D1A3;D1A3;1110 1169 11AA;D1A3;1110 1169 11AA;
+D1A4;D1A4;1110 1169 11AB;D1A4;1110 1169 11AB;
+D1A5;D1A5;1110 1169 11AC;D1A5;1110 1169 11AC;
+D1A6;D1A6;1110 1169 11AD;D1A6;1110 1169 11AD;
+D1A7;D1A7;1110 1169 11AE;D1A7;1110 1169 11AE;
+D1A8;D1A8;1110 1169 11AF;D1A8;1110 1169 11AF;
+D1A9;D1A9;1110 1169 11B0;D1A9;1110 1169 11B0;
+D1AA;D1AA;1110 1169 11B1;D1AA;1110 1169 11B1;
+D1AB;D1AB;1110 1169 11B2;D1AB;1110 1169 11B2;
+D1AC;D1AC;1110 1169 11B3;D1AC;1110 1169 11B3;
+D1AD;D1AD;1110 1169 11B4;D1AD;1110 1169 11B4;
+D1AE;D1AE;1110 1169 11B5;D1AE;1110 1169 11B5;
+D1AF;D1AF;1110 1169 11B6;D1AF;1110 1169 11B6;
+D1B0;D1B0;1110 1169 11B7;D1B0;1110 1169 11B7;
+D1B1;D1B1;1110 1169 11B8;D1B1;1110 1169 11B8;
+D1B2;D1B2;1110 1169 11B9;D1B2;1110 1169 11B9;
+D1B3;D1B3;1110 1169 11BA;D1B3;1110 1169 11BA;
+D1B4;D1B4;1110 1169 11BB;D1B4;1110 1169 11BB;
+D1B5;D1B5;1110 1169 11BC;D1B5;1110 1169 11BC;
+D1B6;D1B6;1110 1169 11BD;D1B6;1110 1169 11BD;
+D1B7;D1B7;1110 1169 11BE;D1B7;1110 1169 11BE;
+D1B8;D1B8;1110 1169 11BF;D1B8;1110 1169 11BF;
+D1B9;D1B9;1110 1169 11C0;D1B9;1110 1169 11C0;
+D1BA;D1BA;1110 1169 11C1;D1BA;1110 1169 11C1;
+D1BB;D1BB;1110 1169 11C2;D1BB;1110 1169 11C2;
+D1BC;D1BC;1110 116A;D1BC;1110 116A;
+D1BD;D1BD;1110 116A 11A8;D1BD;1110 116A 11A8;
+D1BE;D1BE;1110 116A 11A9;D1BE;1110 116A 11A9;
+D1BF;D1BF;1110 116A 11AA;D1BF;1110 116A 11AA;
+D1C0;D1C0;1110 116A 11AB;D1C0;1110 116A 11AB;
+D1C1;D1C1;1110 116A 11AC;D1C1;1110 116A 11AC;
+D1C2;D1C2;1110 116A 11AD;D1C2;1110 116A 11AD;
+D1C3;D1C3;1110 116A 11AE;D1C3;1110 116A 11AE;
+D1C4;D1C4;1110 116A 11AF;D1C4;1110 116A 11AF;
+D1C5;D1C5;1110 116A 11B0;D1C5;1110 116A 11B0;
+D1C6;D1C6;1110 116A 11B1;D1C6;1110 116A 11B1;
+D1C7;D1C7;1110 116A 11B2;D1C7;1110 116A 11B2;
+D1C8;D1C8;1110 116A 11B3;D1C8;1110 116A 11B3;
+D1C9;D1C9;1110 116A 11B4;D1C9;1110 116A 11B4;
+D1CA;D1CA;1110 116A 11B5;D1CA;1110 116A 11B5;
+D1CB;D1CB;1110 116A 11B6;D1CB;1110 116A 11B6;
+D1CC;D1CC;1110 116A 11B7;D1CC;1110 116A 11B7;
+D1CD;D1CD;1110 116A 11B8;D1CD;1110 116A 11B8;
+D1CE;D1CE;1110 116A 11B9;D1CE;1110 116A 11B9;
+D1CF;D1CF;1110 116A 11BA;D1CF;1110 116A 11BA;
+D1D0;D1D0;1110 116A 11BB;D1D0;1110 116A 11BB;
+D1D1;D1D1;1110 116A 11BC;D1D1;1110 116A 11BC;
+D1D2;D1D2;1110 116A 11BD;D1D2;1110 116A 11BD;
+D1D3;D1D3;1110 116A 11BE;D1D3;1110 116A 11BE;
+D1D4;D1D4;1110 116A 11BF;D1D4;1110 116A 11BF;
+D1D5;D1D5;1110 116A 11C0;D1D5;1110 116A 11C0;
+D1D6;D1D6;1110 116A 11C1;D1D6;1110 116A 11C1;
+D1D7;D1D7;1110 116A 11C2;D1D7;1110 116A 11C2;
+D1D8;D1D8;1110 116B;D1D8;1110 116B;
+D1D9;D1D9;1110 116B 11A8;D1D9;1110 116B 11A8;
+D1DA;D1DA;1110 116B 11A9;D1DA;1110 116B 11A9;
+D1DB;D1DB;1110 116B 11AA;D1DB;1110 116B 11AA;
+D1DC;D1DC;1110 116B 11AB;D1DC;1110 116B 11AB;
+D1DD;D1DD;1110 116B 11AC;D1DD;1110 116B 11AC;
+D1DE;D1DE;1110 116B 11AD;D1DE;1110 116B 11AD;
+D1DF;D1DF;1110 116B 11AE;D1DF;1110 116B 11AE;
+D1E0;D1E0;1110 116B 11AF;D1E0;1110 116B 11AF;
+D1E1;D1E1;1110 116B 11B0;D1E1;1110 116B 11B0;
+D1E2;D1E2;1110 116B 11B1;D1E2;1110 116B 11B1;
+D1E3;D1E3;1110 116B 11B2;D1E3;1110 116B 11B2;
+D1E4;D1E4;1110 116B 11B3;D1E4;1110 116B 11B3;
+D1E5;D1E5;1110 116B 11B4;D1E5;1110 116B 11B4;
+D1E6;D1E6;1110 116B 11B5;D1E6;1110 116B 11B5;
+D1E7;D1E7;1110 116B 11B6;D1E7;1110 116B 11B6;
+D1E8;D1E8;1110 116B 11B7;D1E8;1110 116B 11B7;
+D1E9;D1E9;1110 116B 11B8;D1E9;1110 116B 11B8;
+D1EA;D1EA;1110 116B 11B9;D1EA;1110 116B 11B9;
+D1EB;D1EB;1110 116B 11BA;D1EB;1110 116B 11BA;
+D1EC;D1EC;1110 116B 11BB;D1EC;1110 116B 11BB;
+D1ED;D1ED;1110 116B 11BC;D1ED;1110 116B 11BC;
+D1EE;D1EE;1110 116B 11BD;D1EE;1110 116B 11BD;
+D1EF;D1EF;1110 116B 11BE;D1EF;1110 116B 11BE;
+D1F0;D1F0;1110 116B 11BF;D1F0;1110 116B 11BF;
+D1F1;D1F1;1110 116B 11C0;D1F1;1110 116B 11C0;
+D1F2;D1F2;1110 116B 11C1;D1F2;1110 116B 11C1;
+D1F3;D1F3;1110 116B 11C2;D1F3;1110 116B 11C2;
+D1F4;D1F4;1110 116C;D1F4;1110 116C;
+D1F5;D1F5;1110 116C 11A8;D1F5;1110 116C 11A8;
+D1F6;D1F6;1110 116C 11A9;D1F6;1110 116C 11A9;
+D1F7;D1F7;1110 116C 11AA;D1F7;1110 116C 11AA;
+D1F8;D1F8;1110 116C 11AB;D1F8;1110 116C 11AB;
+D1F9;D1F9;1110 116C 11AC;D1F9;1110 116C 11AC;
+D1FA;D1FA;1110 116C 11AD;D1FA;1110 116C 11AD;
+D1FB;D1FB;1110 116C 11AE;D1FB;1110 116C 11AE;
+D1FC;D1FC;1110 116C 11AF;D1FC;1110 116C 11AF;
+D1FD;D1FD;1110 116C 11B0;D1FD;1110 116C 11B0;
+D1FE;D1FE;1110 116C 11B1;D1FE;1110 116C 11B1;
+D1FF;D1FF;1110 116C 11B2;D1FF;1110 116C 11B2;
+D200;D200;1110 116C 11B3;D200;1110 116C 11B3;
+D201;D201;1110 116C 11B4;D201;1110 116C 11B4;
+D202;D202;1110 116C 11B5;D202;1110 116C 11B5;
+D203;D203;1110 116C 11B6;D203;1110 116C 11B6;
+D204;D204;1110 116C 11B7;D204;1110 116C 11B7;
+D205;D205;1110 116C 11B8;D205;1110 116C 11B8;
+D206;D206;1110 116C 11B9;D206;1110 116C 11B9;
+D207;D207;1110 116C 11BA;D207;1110 116C 11BA;
+D208;D208;1110 116C 11BB;D208;1110 116C 11BB;
+D209;D209;1110 116C 11BC;D209;1110 116C 11BC;
+D20A;D20A;1110 116C 11BD;D20A;1110 116C 11BD;
+D20B;D20B;1110 116C 11BE;D20B;1110 116C 11BE;
+D20C;D20C;1110 116C 11BF;D20C;1110 116C 11BF;
+D20D;D20D;1110 116C 11C0;D20D;1110 116C 11C0;
+D20E;D20E;1110 116C 11C1;D20E;1110 116C 11C1;
+D20F;D20F;1110 116C 11C2;D20F;1110 116C 11C2;
+D210;D210;1110 116D;D210;1110 116D;
+D211;D211;1110 116D 11A8;D211;1110 116D 11A8;
+D212;D212;1110 116D 11A9;D212;1110 116D 11A9;
+D213;D213;1110 116D 11AA;D213;1110 116D 11AA;
+D214;D214;1110 116D 11AB;D214;1110 116D 11AB;
+D215;D215;1110 116D 11AC;D215;1110 116D 11AC;
+D216;D216;1110 116D 11AD;D216;1110 116D 11AD;
+D217;D217;1110 116D 11AE;D217;1110 116D 11AE;
+D218;D218;1110 116D 11AF;D218;1110 116D 11AF;
+D219;D219;1110 116D 11B0;D219;1110 116D 11B0;
+D21A;D21A;1110 116D 11B1;D21A;1110 116D 11B1;
+D21B;D21B;1110 116D 11B2;D21B;1110 116D 11B2;
+D21C;D21C;1110 116D 11B3;D21C;1110 116D 11B3;
+D21D;D21D;1110 116D 11B4;D21D;1110 116D 11B4;
+D21E;D21E;1110 116D 11B5;D21E;1110 116D 11B5;
+D21F;D21F;1110 116D 11B6;D21F;1110 116D 11B6;
+D220;D220;1110 116D 11B7;D220;1110 116D 11B7;
+D221;D221;1110 116D 11B8;D221;1110 116D 11B8;
+D222;D222;1110 116D 11B9;D222;1110 116D 11B9;
+D223;D223;1110 116D 11BA;D223;1110 116D 11BA;
+D224;D224;1110 116D 11BB;D224;1110 116D 11BB;
+D225;D225;1110 116D 11BC;D225;1110 116D 11BC;
+D226;D226;1110 116D 11BD;D226;1110 116D 11BD;
+D227;D227;1110 116D 11BE;D227;1110 116D 11BE;
+D228;D228;1110 116D 11BF;D228;1110 116D 11BF;
+D229;D229;1110 116D 11C0;D229;1110 116D 11C0;
+D22A;D22A;1110 116D 11C1;D22A;1110 116D 11C1;
+D22B;D22B;1110 116D 11C2;D22B;1110 116D 11C2;
+D22C;D22C;1110 116E;D22C;1110 116E;
+D22D;D22D;1110 116E 11A8;D22D;1110 116E 11A8;
+D22E;D22E;1110 116E 11A9;D22E;1110 116E 11A9;
+D22F;D22F;1110 116E 11AA;D22F;1110 116E 11AA;
+D230;D230;1110 116E 11AB;D230;1110 116E 11AB;
+D231;D231;1110 116E 11AC;D231;1110 116E 11AC;
+D232;D232;1110 116E 11AD;D232;1110 116E 11AD;
+D233;D233;1110 116E 11AE;D233;1110 116E 11AE;
+D234;D234;1110 116E 11AF;D234;1110 116E 11AF;
+D235;D235;1110 116E 11B0;D235;1110 116E 11B0;
+D236;D236;1110 116E 11B1;D236;1110 116E 11B1;
+D237;D237;1110 116E 11B2;D237;1110 116E 11B2;
+D238;D238;1110 116E 11B3;D238;1110 116E 11B3;
+D239;D239;1110 116E 11B4;D239;1110 116E 11B4;
+D23A;D23A;1110 116E 11B5;D23A;1110 116E 11B5;
+D23B;D23B;1110 116E 11B6;D23B;1110 116E 11B6;
+D23C;D23C;1110 116E 11B7;D23C;1110 116E 11B7;
+D23D;D23D;1110 116E 11B8;D23D;1110 116E 11B8;
+D23E;D23E;1110 116E 11B9;D23E;1110 116E 11B9;
+D23F;D23F;1110 116E 11BA;D23F;1110 116E 11BA;
+D240;D240;1110 116E 11BB;D240;1110 116E 11BB;
+D241;D241;1110 116E 11BC;D241;1110 116E 11BC;
+D242;D242;1110 116E 11BD;D242;1110 116E 11BD;
+D243;D243;1110 116E 11BE;D243;1110 116E 11BE;
+D244;D244;1110 116E 11BF;D244;1110 116E 11BF;
+D245;D245;1110 116E 11C0;D245;1110 116E 11C0;
+D246;D246;1110 116E 11C1;D246;1110 116E 11C1;
+D247;D247;1110 116E 11C2;D247;1110 116E 11C2;
+D248;D248;1110 116F;D248;1110 116F;
+D249;D249;1110 116F 11A8;D249;1110 116F 11A8;
+D24A;D24A;1110 116F 11A9;D24A;1110 116F 11A9;
+D24B;D24B;1110 116F 11AA;D24B;1110 116F 11AA;
+D24C;D24C;1110 116F 11AB;D24C;1110 116F 11AB;
+D24D;D24D;1110 116F 11AC;D24D;1110 116F 11AC;
+D24E;D24E;1110 116F 11AD;D24E;1110 116F 11AD;
+D24F;D24F;1110 116F 11AE;D24F;1110 116F 11AE;
+D250;D250;1110 116F 11AF;D250;1110 116F 11AF;
+D251;D251;1110 116F 11B0;D251;1110 116F 11B0;
+D252;D252;1110 116F 11B1;D252;1110 116F 11B1;
+D253;D253;1110 116F 11B2;D253;1110 116F 11B2;
+D254;D254;1110 116F 11B3;D254;1110 116F 11B3;
+D255;D255;1110 116F 11B4;D255;1110 116F 11B4;
+D256;D256;1110 116F 11B5;D256;1110 116F 11B5;
+D257;D257;1110 116F 11B6;D257;1110 116F 11B6;
+D258;D258;1110 116F 11B7;D258;1110 116F 11B7;
+D259;D259;1110 116F 11B8;D259;1110 116F 11B8;
+D25A;D25A;1110 116F 11B9;D25A;1110 116F 11B9;
+D25B;D25B;1110 116F 11BA;D25B;1110 116F 11BA;
+D25C;D25C;1110 116F 11BB;D25C;1110 116F 11BB;
+D25D;D25D;1110 116F 11BC;D25D;1110 116F 11BC;
+D25E;D25E;1110 116F 11BD;D25E;1110 116F 11BD;
+D25F;D25F;1110 116F 11BE;D25F;1110 116F 11BE;
+D260;D260;1110 116F 11BF;D260;1110 116F 11BF;
+D261;D261;1110 116F 11C0;D261;1110 116F 11C0;
+D262;D262;1110 116F 11C1;D262;1110 116F 11C1;
+D263;D263;1110 116F 11C2;D263;1110 116F 11C2;
+D264;D264;1110 1170;D264;1110 1170;
+D265;D265;1110 1170 11A8;D265;1110 1170 11A8;
+D266;D266;1110 1170 11A9;D266;1110 1170 11A9;
+D267;D267;1110 1170 11AA;D267;1110 1170 11AA;
+D268;D268;1110 1170 11AB;D268;1110 1170 11AB;
+D269;D269;1110 1170 11AC;D269;1110 1170 11AC;
+D26A;D26A;1110 1170 11AD;D26A;1110 1170 11AD;
+D26B;D26B;1110 1170 11AE;D26B;1110 1170 11AE;
+D26C;D26C;1110 1170 11AF;D26C;1110 1170 11AF;
+D26D;D26D;1110 1170 11B0;D26D;1110 1170 11B0;
+D26E;D26E;1110 1170 11B1;D26E;1110 1170 11B1;
+D26F;D26F;1110 1170 11B2;D26F;1110 1170 11B2;
+D270;D270;1110 1170 11B3;D270;1110 1170 11B3;
+D271;D271;1110 1170 11B4;D271;1110 1170 11B4;
+D272;D272;1110 1170 11B5;D272;1110 1170 11B5;
+D273;D273;1110 1170 11B6;D273;1110 1170 11B6;
+D274;D274;1110 1170 11B7;D274;1110 1170 11B7;
+D275;D275;1110 1170 11B8;D275;1110 1170 11B8;
+D276;D276;1110 1170 11B9;D276;1110 1170 11B9;
+D277;D277;1110 1170 11BA;D277;1110 1170 11BA;
+D278;D278;1110 1170 11BB;D278;1110 1170 11BB;
+D279;D279;1110 1170 11BC;D279;1110 1170 11BC;
+D27A;D27A;1110 1170 11BD;D27A;1110 1170 11BD;
+D27B;D27B;1110 1170 11BE;D27B;1110 1170 11BE;
+D27C;D27C;1110 1170 11BF;D27C;1110 1170 11BF;
+D27D;D27D;1110 1170 11C0;D27D;1110 1170 11C0;
+D27E;D27E;1110 1170 11C1;D27E;1110 1170 11C1;
+D27F;D27F;1110 1170 11C2;D27F;1110 1170 11C2;
+D280;D280;1110 1171;D280;1110 1171;
+D281;D281;1110 1171 11A8;D281;1110 1171 11A8;
+D282;D282;1110 1171 11A9;D282;1110 1171 11A9;
+D283;D283;1110 1171 11AA;D283;1110 1171 11AA;
+D284;D284;1110 1171 11AB;D284;1110 1171 11AB;
+D285;D285;1110 1171 11AC;D285;1110 1171 11AC;
+D286;D286;1110 1171 11AD;D286;1110 1171 11AD;
+D287;D287;1110 1171 11AE;D287;1110 1171 11AE;
+D288;D288;1110 1171 11AF;D288;1110 1171 11AF;
+D289;D289;1110 1171 11B0;D289;1110 1171 11B0;
+D28A;D28A;1110 1171 11B1;D28A;1110 1171 11B1;
+D28B;D28B;1110 1171 11B2;D28B;1110 1171 11B2;
+D28C;D28C;1110 1171 11B3;D28C;1110 1171 11B3;
+D28D;D28D;1110 1171 11B4;D28D;1110 1171 11B4;
+D28E;D28E;1110 1171 11B5;D28E;1110 1171 11B5;
+D28F;D28F;1110 1171 11B6;D28F;1110 1171 11B6;
+D290;D290;1110 1171 11B7;D290;1110 1171 11B7;
+D291;D291;1110 1171 11B8;D291;1110 1171 11B8;
+D292;D292;1110 1171 11B9;D292;1110 1171 11B9;
+D293;D293;1110 1171 11BA;D293;1110 1171 11BA;
+D294;D294;1110 1171 11BB;D294;1110 1171 11BB;
+D295;D295;1110 1171 11BC;D295;1110 1171 11BC;
+D296;D296;1110 1171 11BD;D296;1110 1171 11BD;
+D297;D297;1110 1171 11BE;D297;1110 1171 11BE;
+D298;D298;1110 1171 11BF;D298;1110 1171 11BF;
+D299;D299;1110 1171 11C0;D299;1110 1171 11C0;
+D29A;D29A;1110 1171 11C1;D29A;1110 1171 11C1;
+D29B;D29B;1110 1171 11C2;D29B;1110 1171 11C2;
+D29C;D29C;1110 1172;D29C;1110 1172;
+D29D;D29D;1110 1172 11A8;D29D;1110 1172 11A8;
+D29E;D29E;1110 1172 11A9;D29E;1110 1172 11A9;
+D29F;D29F;1110 1172 11AA;D29F;1110 1172 11AA;
+D2A0;D2A0;1110 1172 11AB;D2A0;1110 1172 11AB;
+D2A1;D2A1;1110 1172 11AC;D2A1;1110 1172 11AC;
+D2A2;D2A2;1110 1172 11AD;D2A2;1110 1172 11AD;
+D2A3;D2A3;1110 1172 11AE;D2A3;1110 1172 11AE;
+D2A4;D2A4;1110 1172 11AF;D2A4;1110 1172 11AF;
+D2A5;D2A5;1110 1172 11B0;D2A5;1110 1172 11B0;
+D2A6;D2A6;1110 1172 11B1;D2A6;1110 1172 11B1;
+D2A7;D2A7;1110 1172 11B2;D2A7;1110 1172 11B2;
+D2A8;D2A8;1110 1172 11B3;D2A8;1110 1172 11B3;
+D2A9;D2A9;1110 1172 11B4;D2A9;1110 1172 11B4;
+D2AA;D2AA;1110 1172 11B5;D2AA;1110 1172 11B5;
+D2AB;D2AB;1110 1172 11B6;D2AB;1110 1172 11B6;
+D2AC;D2AC;1110 1172 11B7;D2AC;1110 1172 11B7;
+D2AD;D2AD;1110 1172 11B8;D2AD;1110 1172 11B8;
+D2AE;D2AE;1110 1172 11B9;D2AE;1110 1172 11B9;
+D2AF;D2AF;1110 1172 11BA;D2AF;1110 1172 11BA;
+D2B0;D2B0;1110 1172 11BB;D2B0;1110 1172 11BB;
+D2B1;D2B1;1110 1172 11BC;D2B1;1110 1172 11BC;
+D2B2;D2B2;1110 1172 11BD;D2B2;1110 1172 11BD;
+D2B3;D2B3;1110 1172 11BE;D2B3;1110 1172 11BE;
+D2B4;D2B4;1110 1172 11BF;D2B4;1110 1172 11BF;
+D2B5;D2B5;1110 1172 11C0;D2B5;1110 1172 11C0;
+D2B6;D2B6;1110 1172 11C1;D2B6;1110 1172 11C1;
+D2B7;D2B7;1110 1172 11C2;D2B7;1110 1172 11C2;
+D2B8;D2B8;1110 1173;D2B8;1110 1173;
+D2B9;D2B9;1110 1173 11A8;D2B9;1110 1173 11A8;
+D2BA;D2BA;1110 1173 11A9;D2BA;1110 1173 11A9;
+D2BB;D2BB;1110 1173 11AA;D2BB;1110 1173 11AA;
+D2BC;D2BC;1110 1173 11AB;D2BC;1110 1173 11AB;
+D2BD;D2BD;1110 1173 11AC;D2BD;1110 1173 11AC;
+D2BE;D2BE;1110 1173 11AD;D2BE;1110 1173 11AD;
+D2BF;D2BF;1110 1173 11AE;D2BF;1110 1173 11AE;
+D2C0;D2C0;1110 1173 11AF;D2C0;1110 1173 11AF;
+D2C1;D2C1;1110 1173 11B0;D2C1;1110 1173 11B0;
+D2C2;D2C2;1110 1173 11B1;D2C2;1110 1173 11B1;
+D2C3;D2C3;1110 1173 11B2;D2C3;1110 1173 11B2;
+D2C4;D2C4;1110 1173 11B3;D2C4;1110 1173 11B3;
+D2C5;D2C5;1110 1173 11B4;D2C5;1110 1173 11B4;
+D2C6;D2C6;1110 1173 11B5;D2C6;1110 1173 11B5;
+D2C7;D2C7;1110 1173 11B6;D2C7;1110 1173 11B6;
+D2C8;D2C8;1110 1173 11B7;D2C8;1110 1173 11B7;
+D2C9;D2C9;1110 1173 11B8;D2C9;1110 1173 11B8;
+D2CA;D2CA;1110 1173 11B9;D2CA;1110 1173 11B9;
+D2CB;D2CB;1110 1173 11BA;D2CB;1110 1173 11BA;
+D2CC;D2CC;1110 1173 11BB;D2CC;1110 1173 11BB;
+D2CD;D2CD;1110 1173 11BC;D2CD;1110 1173 11BC;
+D2CE;D2CE;1110 1173 11BD;D2CE;1110 1173 11BD;
+D2CF;D2CF;1110 1173 11BE;D2CF;1110 1173 11BE;
+D2D0;D2D0;1110 1173 11BF;D2D0;1110 1173 11BF;
+D2D1;D2D1;1110 1173 11C0;D2D1;1110 1173 11C0;
+D2D2;D2D2;1110 1173 11C1;D2D2;1110 1173 11C1;
+D2D3;D2D3;1110 1173 11C2;D2D3;1110 1173 11C2;
+D2D4;D2D4;1110 1174;D2D4;1110 1174;
+D2D5;D2D5;1110 1174 11A8;D2D5;1110 1174 11A8;
+D2D6;D2D6;1110 1174 11A9;D2D6;1110 1174 11A9;
+D2D7;D2D7;1110 1174 11AA;D2D7;1110 1174 11AA;
+D2D8;D2D8;1110 1174 11AB;D2D8;1110 1174 11AB;
+D2D9;D2D9;1110 1174 11AC;D2D9;1110 1174 11AC;
+D2DA;D2DA;1110 1174 11AD;D2DA;1110 1174 11AD;
+D2DB;D2DB;1110 1174 11AE;D2DB;1110 1174 11AE;
+D2DC;D2DC;1110 1174 11AF;D2DC;1110 1174 11AF;
+D2DD;D2DD;1110 1174 11B0;D2DD;1110 1174 11B0;
+D2DE;D2DE;1110 1174 11B1;D2DE;1110 1174 11B1;
+D2DF;D2DF;1110 1174 11B2;D2DF;1110 1174 11B2;
+D2E0;D2E0;1110 1174 11B3;D2E0;1110 1174 11B3;
+D2E1;D2E1;1110 1174 11B4;D2E1;1110 1174 11B4;
+D2E2;D2E2;1110 1174 11B5;D2E2;1110 1174 11B5;
+D2E3;D2E3;1110 1174 11B6;D2E3;1110 1174 11B6;
+D2E4;D2E4;1110 1174 11B7;D2E4;1110 1174 11B7;
+D2E5;D2E5;1110 1174 11B8;D2E5;1110 1174 11B8;
+D2E6;D2E6;1110 1174 11B9;D2E6;1110 1174 11B9;
+D2E7;D2E7;1110 1174 11BA;D2E7;1110 1174 11BA;
+D2E8;D2E8;1110 1174 11BB;D2E8;1110 1174 11BB;
+D2E9;D2E9;1110 1174 11BC;D2E9;1110 1174 11BC;
+D2EA;D2EA;1110 1174 11BD;D2EA;1110 1174 11BD;
+D2EB;D2EB;1110 1174 11BE;D2EB;1110 1174 11BE;
+D2EC;D2EC;1110 1174 11BF;D2EC;1110 1174 11BF;
+D2ED;D2ED;1110 1174 11C0;D2ED;1110 1174 11C0;
+D2EE;D2EE;1110 1174 11C1;D2EE;1110 1174 11C1;
+D2EF;D2EF;1110 1174 11C2;D2EF;1110 1174 11C2;
+D2F0;D2F0;1110 1175;D2F0;1110 1175;
+D2F1;D2F1;1110 1175 11A8;D2F1;1110 1175 11A8;
+D2F2;D2F2;1110 1175 11A9;D2F2;1110 1175 11A9;
+D2F3;D2F3;1110 1175 11AA;D2F3;1110 1175 11AA;
+D2F4;D2F4;1110 1175 11AB;D2F4;1110 1175 11AB;
+D2F5;D2F5;1110 1175 11AC;D2F5;1110 1175 11AC;
+D2F6;D2F6;1110 1175 11AD;D2F6;1110 1175 11AD;
+D2F7;D2F7;1110 1175 11AE;D2F7;1110 1175 11AE;
+D2F8;D2F8;1110 1175 11AF;D2F8;1110 1175 11AF;
+D2F9;D2F9;1110 1175 11B0;D2F9;1110 1175 11B0;
+D2FA;D2FA;1110 1175 11B1;D2FA;1110 1175 11B1;
+D2FB;D2FB;1110 1175 11B2;D2FB;1110 1175 11B2;
+D2FC;D2FC;1110 1175 11B3;D2FC;1110 1175 11B3;
+D2FD;D2FD;1110 1175 11B4;D2FD;1110 1175 11B4;
+D2FE;D2FE;1110 1175 11B5;D2FE;1110 1175 11B5;
+D2FF;D2FF;1110 1175 11B6;D2FF;1110 1175 11B6;
+D300;D300;1110 1175 11B7;D300;1110 1175 11B7;
+D301;D301;1110 1175 11B8;D301;1110 1175 11B8;
+D302;D302;1110 1175 11B9;D302;1110 1175 11B9;
+D303;D303;1110 1175 11BA;D303;1110 1175 11BA;
+D304;D304;1110 1175 11BB;D304;1110 1175 11BB;
+D305;D305;1110 1175 11BC;D305;1110 1175 11BC;
+D306;D306;1110 1175 11BD;D306;1110 1175 11BD;
+D307;D307;1110 1175 11BE;D307;1110 1175 11BE;
+D308;D308;1110 1175 11BF;D308;1110 1175 11BF;
+D309;D309;1110 1175 11C0;D309;1110 1175 11C0;
+D30A;D30A;1110 1175 11C1;D30A;1110 1175 11C1;
+D30B;D30B;1110 1175 11C2;D30B;1110 1175 11C2;
+D30C;D30C;1111 1161;D30C;1111 1161;
+D30D;D30D;1111 1161 11A8;D30D;1111 1161 11A8;
+D30E;D30E;1111 1161 11A9;D30E;1111 1161 11A9;
+D30F;D30F;1111 1161 11AA;D30F;1111 1161 11AA;
+D310;D310;1111 1161 11AB;D310;1111 1161 11AB;
+D311;D311;1111 1161 11AC;D311;1111 1161 11AC;
+D312;D312;1111 1161 11AD;D312;1111 1161 11AD;
+D313;D313;1111 1161 11AE;D313;1111 1161 11AE;
+D314;D314;1111 1161 11AF;D314;1111 1161 11AF;
+D315;D315;1111 1161 11B0;D315;1111 1161 11B0;
+D316;D316;1111 1161 11B1;D316;1111 1161 11B1;
+D317;D317;1111 1161 11B2;D317;1111 1161 11B2;
+D318;D318;1111 1161 11B3;D318;1111 1161 11B3;
+D319;D319;1111 1161 11B4;D319;1111 1161 11B4;
+D31A;D31A;1111 1161 11B5;D31A;1111 1161 11B5;
+D31B;D31B;1111 1161 11B6;D31B;1111 1161 11B6;
+D31C;D31C;1111 1161 11B7;D31C;1111 1161 11B7;
+D31D;D31D;1111 1161 11B8;D31D;1111 1161 11B8;
+D31E;D31E;1111 1161 11B9;D31E;1111 1161 11B9;
+D31F;D31F;1111 1161 11BA;D31F;1111 1161 11BA;
+D320;D320;1111 1161 11BB;D320;1111 1161 11BB;
+D321;D321;1111 1161 11BC;D321;1111 1161 11BC;
+D322;D322;1111 1161 11BD;D322;1111 1161 11BD;
+D323;D323;1111 1161 11BE;D323;1111 1161 11BE;
+D324;D324;1111 1161 11BF;D324;1111 1161 11BF;
+D325;D325;1111 1161 11C0;D325;1111 1161 11C0;
+D326;D326;1111 1161 11C1;D326;1111 1161 11C1;
+D327;D327;1111 1161 11C2;D327;1111 1161 11C2;
+D328;D328;1111 1162;D328;1111 1162;
+D329;D329;1111 1162 11A8;D329;1111 1162 11A8;
+D32A;D32A;1111 1162 11A9;D32A;1111 1162 11A9;
+D32B;D32B;1111 1162 11AA;D32B;1111 1162 11AA;
+D32C;D32C;1111 1162 11AB;D32C;1111 1162 11AB;
+D32D;D32D;1111 1162 11AC;D32D;1111 1162 11AC;
+D32E;D32E;1111 1162 11AD;D32E;1111 1162 11AD;
+D32F;D32F;1111 1162 11AE;D32F;1111 1162 11AE;
+D330;D330;1111 1162 11AF;D330;1111 1162 11AF;
+D331;D331;1111 1162 11B0;D331;1111 1162 11B0;
+D332;D332;1111 1162 11B1;D332;1111 1162 11B1;
+D333;D333;1111 1162 11B2;D333;1111 1162 11B2;
+D334;D334;1111 1162 11B3;D334;1111 1162 11B3;
+D335;D335;1111 1162 11B4;D335;1111 1162 11B4;
+D336;D336;1111 1162 11B5;D336;1111 1162 11B5;
+D337;D337;1111 1162 11B6;D337;1111 1162 11B6;
+D338;D338;1111 1162 11B7;D338;1111 1162 11B7;
+D339;D339;1111 1162 11B8;D339;1111 1162 11B8;
+D33A;D33A;1111 1162 11B9;D33A;1111 1162 11B9;
+D33B;D33B;1111 1162 11BA;D33B;1111 1162 11BA;
+D33C;D33C;1111 1162 11BB;D33C;1111 1162 11BB;
+D33D;D33D;1111 1162 11BC;D33D;1111 1162 11BC;
+D33E;D33E;1111 1162 11BD;D33E;1111 1162 11BD;
+D33F;D33F;1111 1162 11BE;D33F;1111 1162 11BE;
+D340;D340;1111 1162 11BF;D340;1111 1162 11BF;
+D341;D341;1111 1162 11C0;D341;1111 1162 11C0;
+D342;D342;1111 1162 11C1;D342;1111 1162 11C1;
+D343;D343;1111 1162 11C2;D343;1111 1162 11C2;
+D344;D344;1111 1163;D344;1111 1163;
+D345;D345;1111 1163 11A8;D345;1111 1163 11A8;
+D346;D346;1111 1163 11A9;D346;1111 1163 11A9;
+D347;D347;1111 1163 11AA;D347;1111 1163 11AA;
+D348;D348;1111 1163 11AB;D348;1111 1163 11AB;
+D349;D349;1111 1163 11AC;D349;1111 1163 11AC;
+D34A;D34A;1111 1163 11AD;D34A;1111 1163 11AD;
+D34B;D34B;1111 1163 11AE;D34B;1111 1163 11AE;
+D34C;D34C;1111 1163 11AF;D34C;1111 1163 11AF;
+D34D;D34D;1111 1163 11B0;D34D;1111 1163 11B0;
+D34E;D34E;1111 1163 11B1;D34E;1111 1163 11B1;
+D34F;D34F;1111 1163 11B2;D34F;1111 1163 11B2;
+D350;D350;1111 1163 11B3;D350;1111 1163 11B3;
+D351;D351;1111 1163 11B4;D351;1111 1163 11B4;
+D352;D352;1111 1163 11B5;D352;1111 1163 11B5;
+D353;D353;1111 1163 11B6;D353;1111 1163 11B6;
+D354;D354;1111 1163 11B7;D354;1111 1163 11B7;
+D355;D355;1111 1163 11B8;D355;1111 1163 11B8;
+D356;D356;1111 1163 11B9;D356;1111 1163 11B9;
+D357;D357;1111 1163 11BA;D357;1111 1163 11BA;
+D358;D358;1111 1163 11BB;D358;1111 1163 11BB;
+D359;D359;1111 1163 11BC;D359;1111 1163 11BC;
+D35A;D35A;1111 1163 11BD;D35A;1111 1163 11BD;
+D35B;D35B;1111 1163 11BE;D35B;1111 1163 11BE;
+D35C;D35C;1111 1163 11BF;D35C;1111 1163 11BF;
+D35D;D35D;1111 1163 11C0;D35D;1111 1163 11C0;
+D35E;D35E;1111 1163 11C1;D35E;1111 1163 11C1;
+D35F;D35F;1111 1163 11C2;D35F;1111 1163 11C2;
+D360;D360;1111 1164;D360;1111 1164;
+D361;D361;1111 1164 11A8;D361;1111 1164 11A8;
+D362;D362;1111 1164 11A9;D362;1111 1164 11A9;
+D363;D363;1111 1164 11AA;D363;1111 1164 11AA;
+D364;D364;1111 1164 11AB;D364;1111 1164 11AB;
+D365;D365;1111 1164 11AC;D365;1111 1164 11AC;
+D366;D366;1111 1164 11AD;D366;1111 1164 11AD;
+D367;D367;1111 1164 11AE;D367;1111 1164 11AE;
+D368;D368;1111 1164 11AF;D368;1111 1164 11AF;
+D369;D369;1111 1164 11B0;D369;1111 1164 11B0;
+D36A;D36A;1111 1164 11B1;D36A;1111 1164 11B1;
+D36B;D36B;1111 1164 11B2;D36B;1111 1164 11B2;
+D36C;D36C;1111 1164 11B3;D36C;1111 1164 11B3;
+D36D;D36D;1111 1164 11B4;D36D;1111 1164 11B4;
+D36E;D36E;1111 1164 11B5;D36E;1111 1164 11B5;
+D36F;D36F;1111 1164 11B6;D36F;1111 1164 11B6;
+D370;D370;1111 1164 11B7;D370;1111 1164 11B7;
+D371;D371;1111 1164 11B8;D371;1111 1164 11B8;
+D372;D372;1111 1164 11B9;D372;1111 1164 11B9;
+D373;D373;1111 1164 11BA;D373;1111 1164 11BA;
+D374;D374;1111 1164 11BB;D374;1111 1164 11BB;
+D375;D375;1111 1164 11BC;D375;1111 1164 11BC;
+D376;D376;1111 1164 11BD;D376;1111 1164 11BD;
+D377;D377;1111 1164 11BE;D377;1111 1164 11BE;
+D378;D378;1111 1164 11BF;D378;1111 1164 11BF;
+D379;D379;1111 1164 11C0;D379;1111 1164 11C0;
+D37A;D37A;1111 1164 11C1;D37A;1111 1164 11C1;
+D37B;D37B;1111 1164 11C2;D37B;1111 1164 11C2;
+D37C;D37C;1111 1165;D37C;1111 1165;
+D37D;D37D;1111 1165 11A8;D37D;1111 1165 11A8;
+D37E;D37E;1111 1165 11A9;D37E;1111 1165 11A9;
+D37F;D37F;1111 1165 11AA;D37F;1111 1165 11AA;
+D380;D380;1111 1165 11AB;D380;1111 1165 11AB;
+D381;D381;1111 1165 11AC;D381;1111 1165 11AC;
+D382;D382;1111 1165 11AD;D382;1111 1165 11AD;
+D383;D383;1111 1165 11AE;D383;1111 1165 11AE;
+D384;D384;1111 1165 11AF;D384;1111 1165 11AF;
+D385;D385;1111 1165 11B0;D385;1111 1165 11B0;
+D386;D386;1111 1165 11B1;D386;1111 1165 11B1;
+D387;D387;1111 1165 11B2;D387;1111 1165 11B2;
+D388;D388;1111 1165 11B3;D388;1111 1165 11B3;
+D389;D389;1111 1165 11B4;D389;1111 1165 11B4;
+D38A;D38A;1111 1165 11B5;D38A;1111 1165 11B5;
+D38B;D38B;1111 1165 11B6;D38B;1111 1165 11B6;
+D38C;D38C;1111 1165 11B7;D38C;1111 1165 11B7;
+D38D;D38D;1111 1165 11B8;D38D;1111 1165 11B8;
+D38E;D38E;1111 1165 11B9;D38E;1111 1165 11B9;
+D38F;D38F;1111 1165 11BA;D38F;1111 1165 11BA;
+D390;D390;1111 1165 11BB;D390;1111 1165 11BB;
+D391;D391;1111 1165 11BC;D391;1111 1165 11BC;
+D392;D392;1111 1165 11BD;D392;1111 1165 11BD;
+D393;D393;1111 1165 11BE;D393;1111 1165 11BE;
+D394;D394;1111 1165 11BF;D394;1111 1165 11BF;
+D395;D395;1111 1165 11C0;D395;1111 1165 11C0;
+D396;D396;1111 1165 11C1;D396;1111 1165 11C1;
+D397;D397;1111 1165 11C2;D397;1111 1165 11C2;
+D398;D398;1111 1166;D398;1111 1166;
+D399;D399;1111 1166 11A8;D399;1111 1166 11A8;
+D39A;D39A;1111 1166 11A9;D39A;1111 1166 11A9;
+D39B;D39B;1111 1166 11AA;D39B;1111 1166 11AA;
+D39C;D39C;1111 1166 11AB;D39C;1111 1166 11AB;
+D39D;D39D;1111 1166 11AC;D39D;1111 1166 11AC;
+D39E;D39E;1111 1166 11AD;D39E;1111 1166 11AD;
+D39F;D39F;1111 1166 11AE;D39F;1111 1166 11AE;
+D3A0;D3A0;1111 1166 11AF;D3A0;1111 1166 11AF;
+D3A1;D3A1;1111 1166 11B0;D3A1;1111 1166 11B0;
+D3A2;D3A2;1111 1166 11B1;D3A2;1111 1166 11B1;
+D3A3;D3A3;1111 1166 11B2;D3A3;1111 1166 11B2;
+D3A4;D3A4;1111 1166 11B3;D3A4;1111 1166 11B3;
+D3A5;D3A5;1111 1166 11B4;D3A5;1111 1166 11B4;
+D3A6;D3A6;1111 1166 11B5;D3A6;1111 1166 11B5;
+D3A7;D3A7;1111 1166 11B6;D3A7;1111 1166 11B6;
+D3A8;D3A8;1111 1166 11B7;D3A8;1111 1166 11B7;
+D3A9;D3A9;1111 1166 11B8;D3A9;1111 1166 11B8;
+D3AA;D3AA;1111 1166 11B9;D3AA;1111 1166 11B9;
+D3AB;D3AB;1111 1166 11BA;D3AB;1111 1166 11BA;
+D3AC;D3AC;1111 1166 11BB;D3AC;1111 1166 11BB;
+D3AD;D3AD;1111 1166 11BC;D3AD;1111 1166 11BC;
+D3AE;D3AE;1111 1166 11BD;D3AE;1111 1166 11BD;
+D3AF;D3AF;1111 1166 11BE;D3AF;1111 1166 11BE;
+D3B0;D3B0;1111 1166 11BF;D3B0;1111 1166 11BF;
+D3B1;D3B1;1111 1166 11C0;D3B1;1111 1166 11C0;
+D3B2;D3B2;1111 1166 11C1;D3B2;1111 1166 11C1;
+D3B3;D3B3;1111 1166 11C2;D3B3;1111 1166 11C2;
+D3B4;D3B4;1111 1167;D3B4;1111 1167;
+D3B5;D3B5;1111 1167 11A8;D3B5;1111 1167 11A8;
+D3B6;D3B6;1111 1167 11A9;D3B6;1111 1167 11A9;
+D3B7;D3B7;1111 1167 11AA;D3B7;1111 1167 11AA;
+D3B8;D3B8;1111 1167 11AB;D3B8;1111 1167 11AB;
+D3B9;D3B9;1111 1167 11AC;D3B9;1111 1167 11AC;
+D3BA;D3BA;1111 1167 11AD;D3BA;1111 1167 11AD;
+D3BB;D3BB;1111 1167 11AE;D3BB;1111 1167 11AE;
+D3BC;D3BC;1111 1167 11AF;D3BC;1111 1167 11AF;
+D3BD;D3BD;1111 1167 11B0;D3BD;1111 1167 11B0;
+D3BE;D3BE;1111 1167 11B1;D3BE;1111 1167 11B1;
+D3BF;D3BF;1111 1167 11B2;D3BF;1111 1167 11B2;
+D3C0;D3C0;1111 1167 11B3;D3C0;1111 1167 11B3;
+D3C1;D3C1;1111 1167 11B4;D3C1;1111 1167 11B4;
+D3C2;D3C2;1111 1167 11B5;D3C2;1111 1167 11B5;
+D3C3;D3C3;1111 1167 11B6;D3C3;1111 1167 11B6;
+D3C4;D3C4;1111 1167 11B7;D3C4;1111 1167 11B7;
+D3C5;D3C5;1111 1167 11B8;D3C5;1111 1167 11B8;
+D3C6;D3C6;1111 1167 11B9;D3C6;1111 1167 11B9;
+D3C7;D3C7;1111 1167 11BA;D3C7;1111 1167 11BA;
+D3C8;D3C8;1111 1167 11BB;D3C8;1111 1167 11BB;
+D3C9;D3C9;1111 1167 11BC;D3C9;1111 1167 11BC;
+D3CA;D3CA;1111 1167 11BD;D3CA;1111 1167 11BD;
+D3CB;D3CB;1111 1167 11BE;D3CB;1111 1167 11BE;
+D3CC;D3CC;1111 1167 11BF;D3CC;1111 1167 11BF;
+D3CD;D3CD;1111 1167 11C0;D3CD;1111 1167 11C0;
+D3CE;D3CE;1111 1167 11C1;D3CE;1111 1167 11C1;
+D3CF;D3CF;1111 1167 11C2;D3CF;1111 1167 11C2;
+D3D0;D3D0;1111 1168;D3D0;1111 1168;
+D3D1;D3D1;1111 1168 11A8;D3D1;1111 1168 11A8;
+D3D2;D3D2;1111 1168 11A9;D3D2;1111 1168 11A9;
+D3D3;D3D3;1111 1168 11AA;D3D3;1111 1168 11AA;
+D3D4;D3D4;1111 1168 11AB;D3D4;1111 1168 11AB;
+D3D5;D3D5;1111 1168 11AC;D3D5;1111 1168 11AC;
+D3D6;D3D6;1111 1168 11AD;D3D6;1111 1168 11AD;
+D3D7;D3D7;1111 1168 11AE;D3D7;1111 1168 11AE;
+D3D8;D3D8;1111 1168 11AF;D3D8;1111 1168 11AF;
+D3D9;D3D9;1111 1168 11B0;D3D9;1111 1168 11B0;
+D3DA;D3DA;1111 1168 11B1;D3DA;1111 1168 11B1;
+D3DB;D3DB;1111 1168 11B2;D3DB;1111 1168 11B2;
+D3DC;D3DC;1111 1168 11B3;D3DC;1111 1168 11B3;
+D3DD;D3DD;1111 1168 11B4;D3DD;1111 1168 11B4;
+D3DE;D3DE;1111 1168 11B5;D3DE;1111 1168 11B5;
+D3DF;D3DF;1111 1168 11B6;D3DF;1111 1168 11B6;
+D3E0;D3E0;1111 1168 11B7;D3E0;1111 1168 11B7;
+D3E1;D3E1;1111 1168 11B8;D3E1;1111 1168 11B8;
+D3E2;D3E2;1111 1168 11B9;D3E2;1111 1168 11B9;
+D3E3;D3E3;1111 1168 11BA;D3E3;1111 1168 11BA;
+D3E4;D3E4;1111 1168 11BB;D3E4;1111 1168 11BB;
+D3E5;D3E5;1111 1168 11BC;D3E5;1111 1168 11BC;
+D3E6;D3E6;1111 1168 11BD;D3E6;1111 1168 11BD;
+D3E7;D3E7;1111 1168 11BE;D3E7;1111 1168 11BE;
+D3E8;D3E8;1111 1168 11BF;D3E8;1111 1168 11BF;
+D3E9;D3E9;1111 1168 11C0;D3E9;1111 1168 11C0;
+D3EA;D3EA;1111 1168 11C1;D3EA;1111 1168 11C1;
+D3EB;D3EB;1111 1168 11C2;D3EB;1111 1168 11C2;
+D3EC;D3EC;1111 1169;D3EC;1111 1169;
+D3ED;D3ED;1111 1169 11A8;D3ED;1111 1169 11A8;
+D3EE;D3EE;1111 1169 11A9;D3EE;1111 1169 11A9;
+D3EF;D3EF;1111 1169 11AA;D3EF;1111 1169 11AA;
+D3F0;D3F0;1111 1169 11AB;D3F0;1111 1169 11AB;
+D3F1;D3F1;1111 1169 11AC;D3F1;1111 1169 11AC;
+D3F2;D3F2;1111 1169 11AD;D3F2;1111 1169 11AD;
+D3F3;D3F3;1111 1169 11AE;D3F3;1111 1169 11AE;
+D3F4;D3F4;1111 1169 11AF;D3F4;1111 1169 11AF;
+D3F5;D3F5;1111 1169 11B0;D3F5;1111 1169 11B0;
+D3F6;D3F6;1111 1169 11B1;D3F6;1111 1169 11B1;
+D3F7;D3F7;1111 1169 11B2;D3F7;1111 1169 11B2;
+D3F8;D3F8;1111 1169 11B3;D3F8;1111 1169 11B3;
+D3F9;D3F9;1111 1169 11B4;D3F9;1111 1169 11B4;
+D3FA;D3FA;1111 1169 11B5;D3FA;1111 1169 11B5;
+D3FB;D3FB;1111 1169 11B6;D3FB;1111 1169 11B6;
+D3FC;D3FC;1111 1169 11B7;D3FC;1111 1169 11B7;
+D3FD;D3FD;1111 1169 11B8;D3FD;1111 1169 11B8;
+D3FE;D3FE;1111 1169 11B9;D3FE;1111 1169 11B9;
+D3FF;D3FF;1111 1169 11BA;D3FF;1111 1169 11BA;
+D400;D400;1111 1169 11BB;D400;1111 1169 11BB;
+D401;D401;1111 1169 11BC;D401;1111 1169 11BC;
+D402;D402;1111 1169 11BD;D402;1111 1169 11BD;
+D403;D403;1111 1169 11BE;D403;1111 1169 11BE;
+D404;D404;1111 1169 11BF;D404;1111 1169 11BF;
+D405;D405;1111 1169 11C0;D405;1111 1169 11C0;
+D406;D406;1111 1169 11C1;D406;1111 1169 11C1;
+D407;D407;1111 1169 11C2;D407;1111 1169 11C2;
+D408;D408;1111 116A;D408;1111 116A;
+D409;D409;1111 116A 11A8;D409;1111 116A 11A8;
+D40A;D40A;1111 116A 11A9;D40A;1111 116A 11A9;
+D40B;D40B;1111 116A 11AA;D40B;1111 116A 11AA;
+D40C;D40C;1111 116A 11AB;D40C;1111 116A 11AB;
+D40D;D40D;1111 116A 11AC;D40D;1111 116A 11AC;
+D40E;D40E;1111 116A 11AD;D40E;1111 116A 11AD;
+D40F;D40F;1111 116A 11AE;D40F;1111 116A 11AE;
+D410;D410;1111 116A 11AF;D410;1111 116A 11AF;
+D411;D411;1111 116A 11B0;D411;1111 116A 11B0;
+D412;D412;1111 116A 11B1;D412;1111 116A 11B1;
+D413;D413;1111 116A 11B2;D413;1111 116A 11B2;
+D414;D414;1111 116A 11B3;D414;1111 116A 11B3;
+D415;D415;1111 116A 11B4;D415;1111 116A 11B4;
+D416;D416;1111 116A 11B5;D416;1111 116A 11B5;
+D417;D417;1111 116A 11B6;D417;1111 116A 11B6;
+D418;D418;1111 116A 11B7;D418;1111 116A 11B7;
+D419;D419;1111 116A 11B8;D419;1111 116A 11B8;
+D41A;D41A;1111 116A 11B9;D41A;1111 116A 11B9;
+D41B;D41B;1111 116A 11BA;D41B;1111 116A 11BA;
+D41C;D41C;1111 116A 11BB;D41C;1111 116A 11BB;
+D41D;D41D;1111 116A 11BC;D41D;1111 116A 11BC;
+D41E;D41E;1111 116A 11BD;D41E;1111 116A 11BD;
+D41F;D41F;1111 116A 11BE;D41F;1111 116A 11BE;
+D420;D420;1111 116A 11BF;D420;1111 116A 11BF;
+D421;D421;1111 116A 11C0;D421;1111 116A 11C0;
+D422;D422;1111 116A 11C1;D422;1111 116A 11C1;
+D423;D423;1111 116A 11C2;D423;1111 116A 11C2;
+D424;D424;1111 116B;D424;1111 116B;
+D425;D425;1111 116B 11A8;D425;1111 116B 11A8;
+D426;D426;1111 116B 11A9;D426;1111 116B 11A9;
+D427;D427;1111 116B 11AA;D427;1111 116B 11AA;
+D428;D428;1111 116B 11AB;D428;1111 116B 11AB;
+D429;D429;1111 116B 11AC;D429;1111 116B 11AC;
+D42A;D42A;1111 116B 11AD;D42A;1111 116B 11AD;
+D42B;D42B;1111 116B 11AE;D42B;1111 116B 11AE;
+D42C;D42C;1111 116B 11AF;D42C;1111 116B 11AF;
+D42D;D42D;1111 116B 11B0;D42D;1111 116B 11B0;
+D42E;D42E;1111 116B 11B1;D42E;1111 116B 11B1;
+D42F;D42F;1111 116B 11B2;D42F;1111 116B 11B2;
+D430;D430;1111 116B 11B3;D430;1111 116B 11B3;
+D431;D431;1111 116B 11B4;D431;1111 116B 11B4;
+D432;D432;1111 116B 11B5;D432;1111 116B 11B5;
+D433;D433;1111 116B 11B6;D433;1111 116B 11B6;
+D434;D434;1111 116B 11B7;D434;1111 116B 11B7;
+D435;D435;1111 116B 11B8;D435;1111 116B 11B8;
+D436;D436;1111 116B 11B9;D436;1111 116B 11B9;
+D437;D437;1111 116B 11BA;D437;1111 116B 11BA;
+D438;D438;1111 116B 11BB;D438;1111 116B 11BB;
+D439;D439;1111 116B 11BC;D439;1111 116B 11BC;
+D43A;D43A;1111 116B 11BD;D43A;1111 116B 11BD;
+D43B;D43B;1111 116B 11BE;D43B;1111 116B 11BE;
+D43C;D43C;1111 116B 11BF;D43C;1111 116B 11BF;
+D43D;D43D;1111 116B 11C0;D43D;1111 116B 11C0;
+D43E;D43E;1111 116B 11C1;D43E;1111 116B 11C1;
+D43F;D43F;1111 116B 11C2;D43F;1111 116B 11C2;
+D440;D440;1111 116C;D440;1111 116C;
+D441;D441;1111 116C 11A8;D441;1111 116C 11A8;
+D442;D442;1111 116C 11A9;D442;1111 116C 11A9;
+D443;D443;1111 116C 11AA;D443;1111 116C 11AA;
+D444;D444;1111 116C 11AB;D444;1111 116C 11AB;
+D445;D445;1111 116C 11AC;D445;1111 116C 11AC;
+D446;D446;1111 116C 11AD;D446;1111 116C 11AD;
+D447;D447;1111 116C 11AE;D447;1111 116C 11AE;
+D448;D448;1111 116C 11AF;D448;1111 116C 11AF;
+D449;D449;1111 116C 11B0;D449;1111 116C 11B0;
+D44A;D44A;1111 116C 11B1;D44A;1111 116C 11B1;
+D44B;D44B;1111 116C 11B2;D44B;1111 116C 11B2;
+D44C;D44C;1111 116C 11B3;D44C;1111 116C 11B3;
+D44D;D44D;1111 116C 11B4;D44D;1111 116C 11B4;
+D44E;D44E;1111 116C 11B5;D44E;1111 116C 11B5;
+D44F;D44F;1111 116C 11B6;D44F;1111 116C 11B6;
+D450;D450;1111 116C 11B7;D450;1111 116C 11B7;
+D451;D451;1111 116C 11B8;D451;1111 116C 11B8;
+D452;D452;1111 116C 11B9;D452;1111 116C 11B9;
+D453;D453;1111 116C 11BA;D453;1111 116C 11BA;
+D454;D454;1111 116C 11BB;D454;1111 116C 11BB;
+D455;D455;1111 116C 11BC;D455;1111 116C 11BC;
+D456;D456;1111 116C 11BD;D456;1111 116C 11BD;
+D457;D457;1111 116C 11BE;D457;1111 116C 11BE;
+D458;D458;1111 116C 11BF;D458;1111 116C 11BF;
+D459;D459;1111 116C 11C0;D459;1111 116C 11C0;
+D45A;D45A;1111 116C 11C1;D45A;1111 116C 11C1;
+D45B;D45B;1111 116C 11C2;D45B;1111 116C 11C2;
+D45C;D45C;1111 116D;D45C;1111 116D;
+D45D;D45D;1111 116D 11A8;D45D;1111 116D 11A8;
+D45E;D45E;1111 116D 11A9;D45E;1111 116D 11A9;
+D45F;D45F;1111 116D 11AA;D45F;1111 116D 11AA;
+D460;D460;1111 116D 11AB;D460;1111 116D 11AB;
+D461;D461;1111 116D 11AC;D461;1111 116D 11AC;
+D462;D462;1111 116D 11AD;D462;1111 116D 11AD;
+D463;D463;1111 116D 11AE;D463;1111 116D 11AE;
+D464;D464;1111 116D 11AF;D464;1111 116D 11AF;
+D465;D465;1111 116D 11B0;D465;1111 116D 11B0;
+D466;D466;1111 116D 11B1;D466;1111 116D 11B1;
+D467;D467;1111 116D 11B2;D467;1111 116D 11B2;
+D468;D468;1111 116D 11B3;D468;1111 116D 11B3;
+D469;D469;1111 116D 11B4;D469;1111 116D 11B4;
+D46A;D46A;1111 116D 11B5;D46A;1111 116D 11B5;
+D46B;D46B;1111 116D 11B6;D46B;1111 116D 11B6;
+D46C;D46C;1111 116D 11B7;D46C;1111 116D 11B7;
+D46D;D46D;1111 116D 11B8;D46D;1111 116D 11B8;
+D46E;D46E;1111 116D 11B9;D46E;1111 116D 11B9;
+D46F;D46F;1111 116D 11BA;D46F;1111 116D 11BA;
+D470;D470;1111 116D 11BB;D470;1111 116D 11BB;
+D471;D471;1111 116D 11BC;D471;1111 116D 11BC;
+D472;D472;1111 116D 11BD;D472;1111 116D 11BD;
+D473;D473;1111 116D 11BE;D473;1111 116D 11BE;
+D474;D474;1111 116D 11BF;D474;1111 116D 11BF;
+D475;D475;1111 116D 11C0;D475;1111 116D 11C0;
+D476;D476;1111 116D 11C1;D476;1111 116D 11C1;
+D477;D477;1111 116D 11C2;D477;1111 116D 11C2;
+D478;D478;1111 116E;D478;1111 116E;
+D479;D479;1111 116E 11A8;D479;1111 116E 11A8;
+D47A;D47A;1111 116E 11A9;D47A;1111 116E 11A9;
+D47B;D47B;1111 116E 11AA;D47B;1111 116E 11AA;
+D47C;D47C;1111 116E 11AB;D47C;1111 116E 11AB;
+D47D;D47D;1111 116E 11AC;D47D;1111 116E 11AC;
+D47E;D47E;1111 116E 11AD;D47E;1111 116E 11AD;
+D47F;D47F;1111 116E 11AE;D47F;1111 116E 11AE;
+D480;D480;1111 116E 11AF;D480;1111 116E 11AF;
+D481;D481;1111 116E 11B0;D481;1111 116E 11B0;
+D482;D482;1111 116E 11B1;D482;1111 116E 11B1;
+D483;D483;1111 116E 11B2;D483;1111 116E 11B2;
+D484;D484;1111 116E 11B3;D484;1111 116E 11B3;
+D485;D485;1111 116E 11B4;D485;1111 116E 11B4;
+D486;D486;1111 116E 11B5;D486;1111 116E 11B5;
+D487;D487;1111 116E 11B6;D487;1111 116E 11B6;
+D488;D488;1111 116E 11B7;D488;1111 116E 11B7;
+D489;D489;1111 116E 11B8;D489;1111 116E 11B8;
+D48A;D48A;1111 116E 11B9;D48A;1111 116E 11B9;
+D48B;D48B;1111 116E 11BA;D48B;1111 116E 11BA;
+D48C;D48C;1111 116E 11BB;D48C;1111 116E 11BB;
+D48D;D48D;1111 116E 11BC;D48D;1111 116E 11BC;
+D48E;D48E;1111 116E 11BD;D48E;1111 116E 11BD;
+D48F;D48F;1111 116E 11BE;D48F;1111 116E 11BE;
+D490;D490;1111 116E 11BF;D490;1111 116E 11BF;
+D491;D491;1111 116E 11C0;D491;1111 116E 11C0;
+D492;D492;1111 116E 11C1;D492;1111 116E 11C1;
+D493;D493;1111 116E 11C2;D493;1111 116E 11C2;
+D494;D494;1111 116F;D494;1111 116F;
+D495;D495;1111 116F 11A8;D495;1111 116F 11A8;
+D496;D496;1111 116F 11A9;D496;1111 116F 11A9;
+D497;D497;1111 116F 11AA;D497;1111 116F 11AA;
+D498;D498;1111 116F 11AB;D498;1111 116F 11AB;
+D499;D499;1111 116F 11AC;D499;1111 116F 11AC;
+D49A;D49A;1111 116F 11AD;D49A;1111 116F 11AD;
+D49B;D49B;1111 116F 11AE;D49B;1111 116F 11AE;
+D49C;D49C;1111 116F 11AF;D49C;1111 116F 11AF;
+D49D;D49D;1111 116F 11B0;D49D;1111 116F 11B0;
+D49E;D49E;1111 116F 11B1;D49E;1111 116F 11B1;
+D49F;D49F;1111 116F 11B2;D49F;1111 116F 11B2;
+D4A0;D4A0;1111 116F 11B3;D4A0;1111 116F 11B3;
+D4A1;D4A1;1111 116F 11B4;D4A1;1111 116F 11B4;
+D4A2;D4A2;1111 116F 11B5;D4A2;1111 116F 11B5;
+D4A3;D4A3;1111 116F 11B6;D4A3;1111 116F 11B6;
+D4A4;D4A4;1111 116F 11B7;D4A4;1111 116F 11B7;
+D4A5;D4A5;1111 116F 11B8;D4A5;1111 116F 11B8;
+D4A6;D4A6;1111 116F 11B9;D4A6;1111 116F 11B9;
+D4A7;D4A7;1111 116F 11BA;D4A7;1111 116F 11BA;
+D4A8;D4A8;1111 116F 11BB;D4A8;1111 116F 11BB;
+D4A9;D4A9;1111 116F 11BC;D4A9;1111 116F 11BC;
+D4AA;D4AA;1111 116F 11BD;D4AA;1111 116F 11BD;
+D4AB;D4AB;1111 116F 11BE;D4AB;1111 116F 11BE;
+D4AC;D4AC;1111 116F 11BF;D4AC;1111 116F 11BF;
+D4AD;D4AD;1111 116F 11C0;D4AD;1111 116F 11C0;
+D4AE;D4AE;1111 116F 11C1;D4AE;1111 116F 11C1;
+D4AF;D4AF;1111 116F 11C2;D4AF;1111 116F 11C2;
+D4B0;D4B0;1111 1170;D4B0;1111 1170;
+D4B1;D4B1;1111 1170 11A8;D4B1;1111 1170 11A8;
+D4B2;D4B2;1111 1170 11A9;D4B2;1111 1170 11A9;
+D4B3;D4B3;1111 1170 11AA;D4B3;1111 1170 11AA;
+D4B4;D4B4;1111 1170 11AB;D4B4;1111 1170 11AB;
+D4B5;D4B5;1111 1170 11AC;D4B5;1111 1170 11AC;
+D4B6;D4B6;1111 1170 11AD;D4B6;1111 1170 11AD;
+D4B7;D4B7;1111 1170 11AE;D4B7;1111 1170 11AE;
+D4B8;D4B8;1111 1170 11AF;D4B8;1111 1170 11AF;
+D4B9;D4B9;1111 1170 11B0;D4B9;1111 1170 11B0;
+D4BA;D4BA;1111 1170 11B1;D4BA;1111 1170 11B1;
+D4BB;D4BB;1111 1170 11B2;D4BB;1111 1170 11B2;
+D4BC;D4BC;1111 1170 11B3;D4BC;1111 1170 11B3;
+D4BD;D4BD;1111 1170 11B4;D4BD;1111 1170 11B4;
+D4BE;D4BE;1111 1170 11B5;D4BE;1111 1170 11B5;
+D4BF;D4BF;1111 1170 11B6;D4BF;1111 1170 11B6;
+D4C0;D4C0;1111 1170 11B7;D4C0;1111 1170 11B7;
+D4C1;D4C1;1111 1170 11B8;D4C1;1111 1170 11B8;
+D4C2;D4C2;1111 1170 11B9;D4C2;1111 1170 11B9;
+D4C3;D4C3;1111 1170 11BA;D4C3;1111 1170 11BA;
+D4C4;D4C4;1111 1170 11BB;D4C4;1111 1170 11BB;
+D4C5;D4C5;1111 1170 11BC;D4C5;1111 1170 11BC;
+D4C6;D4C6;1111 1170 11BD;D4C6;1111 1170 11BD;
+D4C7;D4C7;1111 1170 11BE;D4C7;1111 1170 11BE;
+D4C8;D4C8;1111 1170 11BF;D4C8;1111 1170 11BF;
+D4C9;D4C9;1111 1170 11C0;D4C9;1111 1170 11C0;
+D4CA;D4CA;1111 1170 11C1;D4CA;1111 1170 11C1;
+D4CB;D4CB;1111 1170 11C2;D4CB;1111 1170 11C2;
+D4CC;D4CC;1111 1171;D4CC;1111 1171;
+D4CD;D4CD;1111 1171 11A8;D4CD;1111 1171 11A8;
+D4CE;D4CE;1111 1171 11A9;D4CE;1111 1171 11A9;
+D4CF;D4CF;1111 1171 11AA;D4CF;1111 1171 11AA;
+D4D0;D4D0;1111 1171 11AB;D4D0;1111 1171 11AB;
+D4D1;D4D1;1111 1171 11AC;D4D1;1111 1171 11AC;
+D4D2;D4D2;1111 1171 11AD;D4D2;1111 1171 11AD;
+D4D3;D4D3;1111 1171 11AE;D4D3;1111 1171 11AE;
+D4D4;D4D4;1111 1171 11AF;D4D4;1111 1171 11AF;
+D4D5;D4D5;1111 1171 11B0;D4D5;1111 1171 11B0;
+D4D6;D4D6;1111 1171 11B1;D4D6;1111 1171 11B1;
+D4D7;D4D7;1111 1171 11B2;D4D7;1111 1171 11B2;
+D4D8;D4D8;1111 1171 11B3;D4D8;1111 1171 11B3;
+D4D9;D4D9;1111 1171 11B4;D4D9;1111 1171 11B4;
+D4DA;D4DA;1111 1171 11B5;D4DA;1111 1171 11B5;
+D4DB;D4DB;1111 1171 11B6;D4DB;1111 1171 11B6;
+D4DC;D4DC;1111 1171 11B7;D4DC;1111 1171 11B7;
+D4DD;D4DD;1111 1171 11B8;D4DD;1111 1171 11B8;
+D4DE;D4DE;1111 1171 11B9;D4DE;1111 1171 11B9;
+D4DF;D4DF;1111 1171 11BA;D4DF;1111 1171 11BA;
+D4E0;D4E0;1111 1171 11BB;D4E0;1111 1171 11BB;
+D4E1;D4E1;1111 1171 11BC;D4E1;1111 1171 11BC;
+D4E2;D4E2;1111 1171 11BD;D4E2;1111 1171 11BD;
+D4E3;D4E3;1111 1171 11BE;D4E3;1111 1171 11BE;
+D4E4;D4E4;1111 1171 11BF;D4E4;1111 1171 11BF;
+D4E5;D4E5;1111 1171 11C0;D4E5;1111 1171 11C0;
+D4E6;D4E6;1111 1171 11C1;D4E6;1111 1171 11C1;
+D4E7;D4E7;1111 1171 11C2;D4E7;1111 1171 11C2;
+D4E8;D4E8;1111 1172;D4E8;1111 1172;
+D4E9;D4E9;1111 1172 11A8;D4E9;1111 1172 11A8;
+D4EA;D4EA;1111 1172 11A9;D4EA;1111 1172 11A9;
+D4EB;D4EB;1111 1172 11AA;D4EB;1111 1172 11AA;
+D4EC;D4EC;1111 1172 11AB;D4EC;1111 1172 11AB;
+D4ED;D4ED;1111 1172 11AC;D4ED;1111 1172 11AC;
+D4EE;D4EE;1111 1172 11AD;D4EE;1111 1172 11AD;
+D4EF;D4EF;1111 1172 11AE;D4EF;1111 1172 11AE;
+D4F0;D4F0;1111 1172 11AF;D4F0;1111 1172 11AF;
+D4F1;D4F1;1111 1172 11B0;D4F1;1111 1172 11B0;
+D4F2;D4F2;1111 1172 11B1;D4F2;1111 1172 11B1;
+D4F3;D4F3;1111 1172 11B2;D4F3;1111 1172 11B2;
+D4F4;D4F4;1111 1172 11B3;D4F4;1111 1172 11B3;
+D4F5;D4F5;1111 1172 11B4;D4F5;1111 1172 11B4;
+D4F6;D4F6;1111 1172 11B5;D4F6;1111 1172 11B5;
+D4F7;D4F7;1111 1172 11B6;D4F7;1111 1172 11B6;
+D4F8;D4F8;1111 1172 11B7;D4F8;1111 1172 11B7;
+D4F9;D4F9;1111 1172 11B8;D4F9;1111 1172 11B8;
+D4FA;D4FA;1111 1172 11B9;D4FA;1111 1172 11B9;
+D4FB;D4FB;1111 1172 11BA;D4FB;1111 1172 11BA;
+D4FC;D4FC;1111 1172 11BB;D4FC;1111 1172 11BB;
+D4FD;D4FD;1111 1172 11BC;D4FD;1111 1172 11BC;
+D4FE;D4FE;1111 1172 11BD;D4FE;1111 1172 11BD;
+D4FF;D4FF;1111 1172 11BE;D4FF;1111 1172 11BE;
+D500;D500;1111 1172 11BF;D500;1111 1172 11BF;
+D501;D501;1111 1172 11C0;D501;1111 1172 11C0;
+D502;D502;1111 1172 11C1;D502;1111 1172 11C1;
+D503;D503;1111 1172 11C2;D503;1111 1172 11C2;
+D504;D504;1111 1173;D504;1111 1173;
+D505;D505;1111 1173 11A8;D505;1111 1173 11A8;
+D506;D506;1111 1173 11A9;D506;1111 1173 11A9;
+D507;D507;1111 1173 11AA;D507;1111 1173 11AA;
+D508;D508;1111 1173 11AB;D508;1111 1173 11AB;
+D509;D509;1111 1173 11AC;D509;1111 1173 11AC;
+D50A;D50A;1111 1173 11AD;D50A;1111 1173 11AD;
+D50B;D50B;1111 1173 11AE;D50B;1111 1173 11AE;
+D50C;D50C;1111 1173 11AF;D50C;1111 1173 11AF;
+D50D;D50D;1111 1173 11B0;D50D;1111 1173 11B0;
+D50E;D50E;1111 1173 11B1;D50E;1111 1173 11B1;
+D50F;D50F;1111 1173 11B2;D50F;1111 1173 11B2;
+D510;D510;1111 1173 11B3;D510;1111 1173 11B3;
+D511;D511;1111 1173 11B4;D511;1111 1173 11B4;
+D512;D512;1111 1173 11B5;D512;1111 1173 11B5;
+D513;D513;1111 1173 11B6;D513;1111 1173 11B6;
+D514;D514;1111 1173 11B7;D514;1111 1173 11B7;
+D515;D515;1111 1173 11B8;D515;1111 1173 11B8;
+D516;D516;1111 1173 11B9;D516;1111 1173 11B9;
+D517;D517;1111 1173 11BA;D517;1111 1173 11BA;
+D518;D518;1111 1173 11BB;D518;1111 1173 11BB;
+D519;D519;1111 1173 11BC;D519;1111 1173 11BC;
+D51A;D51A;1111 1173 11BD;D51A;1111 1173 11BD;
+D51B;D51B;1111 1173 11BE;D51B;1111 1173 11BE;
+D51C;D51C;1111 1173 11BF;D51C;1111 1173 11BF;
+D51D;D51D;1111 1173 11C0;D51D;1111 1173 11C0;
+D51E;D51E;1111 1173 11C1;D51E;1111 1173 11C1;
+D51F;D51F;1111 1173 11C2;D51F;1111 1173 11C2;
+D520;D520;1111 1174;D520;1111 1174;
+D521;D521;1111 1174 11A8;D521;1111 1174 11A8;
+D522;D522;1111 1174 11A9;D522;1111 1174 11A9;
+D523;D523;1111 1174 11AA;D523;1111 1174 11AA;
+D524;D524;1111 1174 11AB;D524;1111 1174 11AB;
+D525;D525;1111 1174 11AC;D525;1111 1174 11AC;
+D526;D526;1111 1174 11AD;D526;1111 1174 11AD;
+D527;D527;1111 1174 11AE;D527;1111 1174 11AE;
+D528;D528;1111 1174 11AF;D528;1111 1174 11AF;
+D529;D529;1111 1174 11B0;D529;1111 1174 11B0;
+D52A;D52A;1111 1174 11B1;D52A;1111 1174 11B1;
+D52B;D52B;1111 1174 11B2;D52B;1111 1174 11B2;
+D52C;D52C;1111 1174 11B3;D52C;1111 1174 11B3;
+D52D;D52D;1111 1174 11B4;D52D;1111 1174 11B4;
+D52E;D52E;1111 1174 11B5;D52E;1111 1174 11B5;
+D52F;D52F;1111 1174 11B6;D52F;1111 1174 11B6;
+D530;D530;1111 1174 11B7;D530;1111 1174 11B7;
+D531;D531;1111 1174 11B8;D531;1111 1174 11B8;
+D532;D532;1111 1174 11B9;D532;1111 1174 11B9;
+D533;D533;1111 1174 11BA;D533;1111 1174 11BA;
+D534;D534;1111 1174 11BB;D534;1111 1174 11BB;
+D535;D535;1111 1174 11BC;D535;1111 1174 11BC;
+D536;D536;1111 1174 11BD;D536;1111 1174 11BD;
+D537;D537;1111 1174 11BE;D537;1111 1174 11BE;
+D538;D538;1111 1174 11BF;D538;1111 1174 11BF;
+D539;D539;1111 1174 11C0;D539;1111 1174 11C0;
+D53A;D53A;1111 1174 11C1;D53A;1111 1174 11C1;
+D53B;D53B;1111 1174 11C2;D53B;1111 1174 11C2;
+D53C;D53C;1111 1175;D53C;1111 1175;
+D53D;D53D;1111 1175 11A8;D53D;1111 1175 11A8;
+D53E;D53E;1111 1175 11A9;D53E;1111 1175 11A9;
+D53F;D53F;1111 1175 11AA;D53F;1111 1175 11AA;
+D540;D540;1111 1175 11AB;D540;1111 1175 11AB;
+D541;D541;1111 1175 11AC;D541;1111 1175 11AC;
+D542;D542;1111 1175 11AD;D542;1111 1175 11AD;
+D543;D543;1111 1175 11AE;D543;1111 1175 11AE;
+D544;D544;1111 1175 11AF;D544;1111 1175 11AF;
+D545;D545;1111 1175 11B0;D545;1111 1175 11B0;
+D546;D546;1111 1175 11B1;D546;1111 1175 11B1;
+D547;D547;1111 1175 11B2;D547;1111 1175 11B2;
+D548;D548;1111 1175 11B3;D548;1111 1175 11B3;
+D549;D549;1111 1175 11B4;D549;1111 1175 11B4;
+D54A;D54A;1111 1175 11B5;D54A;1111 1175 11B5;
+D54B;D54B;1111 1175 11B6;D54B;1111 1175 11B6;
+D54C;D54C;1111 1175 11B7;D54C;1111 1175 11B7;
+D54D;D54D;1111 1175 11B8;D54D;1111 1175 11B8;
+D54E;D54E;1111 1175 11B9;D54E;1111 1175 11B9;
+D54F;D54F;1111 1175 11BA;D54F;1111 1175 11BA;
+D550;D550;1111 1175 11BB;D550;1111 1175 11BB;
+D551;D551;1111 1175 11BC;D551;1111 1175 11BC;
+D552;D552;1111 1175 11BD;D552;1111 1175 11BD;
+D553;D553;1111 1175 11BE;D553;1111 1175 11BE;
+D554;D554;1111 1175 11BF;D554;1111 1175 11BF;
+D555;D555;1111 1175 11C0;D555;1111 1175 11C0;
+D556;D556;1111 1175 11C1;D556;1111 1175 11C1;
+D557;D557;1111 1175 11C2;D557;1111 1175 11C2;
+D558;D558;1112 1161;D558;1112 1161;
+D559;D559;1112 1161 11A8;D559;1112 1161 11A8;
+D55A;D55A;1112 1161 11A9;D55A;1112 1161 11A9;
+D55B;D55B;1112 1161 11AA;D55B;1112 1161 11AA;
+D55C;D55C;1112 1161 11AB;D55C;1112 1161 11AB;
+D55D;D55D;1112 1161 11AC;D55D;1112 1161 11AC;
+D55E;D55E;1112 1161 11AD;D55E;1112 1161 11AD;
+D55F;D55F;1112 1161 11AE;D55F;1112 1161 11AE;
+D560;D560;1112 1161 11AF;D560;1112 1161 11AF;
+D561;D561;1112 1161 11B0;D561;1112 1161 11B0;
+D562;D562;1112 1161 11B1;D562;1112 1161 11B1;
+D563;D563;1112 1161 11B2;D563;1112 1161 11B2;
+D564;D564;1112 1161 11B3;D564;1112 1161 11B3;
+D565;D565;1112 1161 11B4;D565;1112 1161 11B4;
+D566;D566;1112 1161 11B5;D566;1112 1161 11B5;
+D567;D567;1112 1161 11B6;D567;1112 1161 11B6;
+D568;D568;1112 1161 11B7;D568;1112 1161 11B7;
+D569;D569;1112 1161 11B8;D569;1112 1161 11B8;
+D56A;D56A;1112 1161 11B9;D56A;1112 1161 11B9;
+D56B;D56B;1112 1161 11BA;D56B;1112 1161 11BA;
+D56C;D56C;1112 1161 11BB;D56C;1112 1161 11BB;
+D56D;D56D;1112 1161 11BC;D56D;1112 1161 11BC;
+D56E;D56E;1112 1161 11BD;D56E;1112 1161 11BD;
+D56F;D56F;1112 1161 11BE;D56F;1112 1161 11BE;
+D570;D570;1112 1161 11BF;D570;1112 1161 11BF;
+D571;D571;1112 1161 11C0;D571;1112 1161 11C0;
+D572;D572;1112 1161 11C1;D572;1112 1161 11C1;
+D573;D573;1112 1161 11C2;D573;1112 1161 11C2;
+D574;D574;1112 1162;D574;1112 1162;
+D575;D575;1112 1162 11A8;D575;1112 1162 11A8;
+D576;D576;1112 1162 11A9;D576;1112 1162 11A9;
+D577;D577;1112 1162 11AA;D577;1112 1162 11AA;
+D578;D578;1112 1162 11AB;D578;1112 1162 11AB;
+D579;D579;1112 1162 11AC;D579;1112 1162 11AC;
+D57A;D57A;1112 1162 11AD;D57A;1112 1162 11AD;
+D57B;D57B;1112 1162 11AE;D57B;1112 1162 11AE;
+D57C;D57C;1112 1162 11AF;D57C;1112 1162 11AF;
+D57D;D57D;1112 1162 11B0;D57D;1112 1162 11B0;
+D57E;D57E;1112 1162 11B1;D57E;1112 1162 11B1;
+D57F;D57F;1112 1162 11B2;D57F;1112 1162 11B2;
+D580;D580;1112 1162 11B3;D580;1112 1162 11B3;
+D581;D581;1112 1162 11B4;D581;1112 1162 11B4;
+D582;D582;1112 1162 11B5;D582;1112 1162 11B5;
+D583;D583;1112 1162 11B6;D583;1112 1162 11B6;
+D584;D584;1112 1162 11B7;D584;1112 1162 11B7;
+D585;D585;1112 1162 11B8;D585;1112 1162 11B8;
+D586;D586;1112 1162 11B9;D586;1112 1162 11B9;
+D587;D587;1112 1162 11BA;D587;1112 1162 11BA;
+D588;D588;1112 1162 11BB;D588;1112 1162 11BB;
+D589;D589;1112 1162 11BC;D589;1112 1162 11BC;
+D58A;D58A;1112 1162 11BD;D58A;1112 1162 11BD;
+D58B;D58B;1112 1162 11BE;D58B;1112 1162 11BE;
+D58C;D58C;1112 1162 11BF;D58C;1112 1162 11BF;
+D58D;D58D;1112 1162 11C0;D58D;1112 1162 11C0;
+D58E;D58E;1112 1162 11C1;D58E;1112 1162 11C1;
+D58F;D58F;1112 1162 11C2;D58F;1112 1162 11C2;
+D590;D590;1112 1163;D590;1112 1163;
+D591;D591;1112 1163 11A8;D591;1112 1163 11A8;
+D592;D592;1112 1163 11A9;D592;1112 1163 11A9;
+D593;D593;1112 1163 11AA;D593;1112 1163 11AA;
+D594;D594;1112 1163 11AB;D594;1112 1163 11AB;
+D595;D595;1112 1163 11AC;D595;1112 1163 11AC;
+D596;D596;1112 1163 11AD;D596;1112 1163 11AD;
+D597;D597;1112 1163 11AE;D597;1112 1163 11AE;
+D598;D598;1112 1163 11AF;D598;1112 1163 11AF;
+D599;D599;1112 1163 11B0;D599;1112 1163 11B0;
+D59A;D59A;1112 1163 11B1;D59A;1112 1163 11B1;
+D59B;D59B;1112 1163 11B2;D59B;1112 1163 11B2;
+D59C;D59C;1112 1163 11B3;D59C;1112 1163 11B3;
+D59D;D59D;1112 1163 11B4;D59D;1112 1163 11B4;
+D59E;D59E;1112 1163 11B5;D59E;1112 1163 11B5;
+D59F;D59F;1112 1163 11B6;D59F;1112 1163 11B6;
+D5A0;D5A0;1112 1163 11B7;D5A0;1112 1163 11B7;
+D5A1;D5A1;1112 1163 11B8;D5A1;1112 1163 11B8;
+D5A2;D5A2;1112 1163 11B9;D5A2;1112 1163 11B9;
+D5A3;D5A3;1112 1163 11BA;D5A3;1112 1163 11BA;
+D5A4;D5A4;1112 1163 11BB;D5A4;1112 1163 11BB;
+D5A5;D5A5;1112 1163 11BC;D5A5;1112 1163 11BC;
+D5A6;D5A6;1112 1163 11BD;D5A6;1112 1163 11BD;
+D5A7;D5A7;1112 1163 11BE;D5A7;1112 1163 11BE;
+D5A8;D5A8;1112 1163 11BF;D5A8;1112 1163 11BF;
+D5A9;D5A9;1112 1163 11C0;D5A9;1112 1163 11C0;
+D5AA;D5AA;1112 1163 11C1;D5AA;1112 1163 11C1;
+D5AB;D5AB;1112 1163 11C2;D5AB;1112 1163 11C2;
+D5AC;D5AC;1112 1164;D5AC;1112 1164;
+D5AD;D5AD;1112 1164 11A8;D5AD;1112 1164 11A8;
+D5AE;D5AE;1112 1164 11A9;D5AE;1112 1164 11A9;
+D5AF;D5AF;1112 1164 11AA;D5AF;1112 1164 11AA;
+D5B0;D5B0;1112 1164 11AB;D5B0;1112 1164 11AB;
+D5B1;D5B1;1112 1164 11AC;D5B1;1112 1164 11AC;
+D5B2;D5B2;1112 1164 11AD;D5B2;1112 1164 11AD;
+D5B3;D5B3;1112 1164 11AE;D5B3;1112 1164 11AE;
+D5B4;D5B4;1112 1164 11AF;D5B4;1112 1164 11AF;
+D5B5;D5B5;1112 1164 11B0;D5B5;1112 1164 11B0;
+D5B6;D5B6;1112 1164 11B1;D5B6;1112 1164 11B1;
+D5B7;D5B7;1112 1164 11B2;D5B7;1112 1164 11B2;
+D5B8;D5B8;1112 1164 11B3;D5B8;1112 1164 11B3;
+D5B9;D5B9;1112 1164 11B4;D5B9;1112 1164 11B4;
+D5BA;D5BA;1112 1164 11B5;D5BA;1112 1164 11B5;
+D5BB;D5BB;1112 1164 11B6;D5BB;1112 1164 11B6;
+D5BC;D5BC;1112 1164 11B7;D5BC;1112 1164 11B7;
+D5BD;D5BD;1112 1164 11B8;D5BD;1112 1164 11B8;
+D5BE;D5BE;1112 1164 11B9;D5BE;1112 1164 11B9;
+D5BF;D5BF;1112 1164 11BA;D5BF;1112 1164 11BA;
+D5C0;D5C0;1112 1164 11BB;D5C0;1112 1164 11BB;
+D5C1;D5C1;1112 1164 11BC;D5C1;1112 1164 11BC;
+D5C2;D5C2;1112 1164 11BD;D5C2;1112 1164 11BD;
+D5C3;D5C3;1112 1164 11BE;D5C3;1112 1164 11BE;
+D5C4;D5C4;1112 1164 11BF;D5C4;1112 1164 11BF;
+D5C5;D5C5;1112 1164 11C0;D5C5;1112 1164 11C0;
+D5C6;D5C6;1112 1164 11C1;D5C6;1112 1164 11C1;
+D5C7;D5C7;1112 1164 11C2;D5C7;1112 1164 11C2;
+D5C8;D5C8;1112 1165;D5C8;1112 1165;
+D5C9;D5C9;1112 1165 11A8;D5C9;1112 1165 11A8;
+D5CA;D5CA;1112 1165 11A9;D5CA;1112 1165 11A9;
+D5CB;D5CB;1112 1165 11AA;D5CB;1112 1165 11AA;
+D5CC;D5CC;1112 1165 11AB;D5CC;1112 1165 11AB;
+D5CD;D5CD;1112 1165 11AC;D5CD;1112 1165 11AC;
+D5CE;D5CE;1112 1165 11AD;D5CE;1112 1165 11AD;
+D5CF;D5CF;1112 1165 11AE;D5CF;1112 1165 11AE;
+D5D0;D5D0;1112 1165 11AF;D5D0;1112 1165 11AF;
+D5D1;D5D1;1112 1165 11B0;D5D1;1112 1165 11B0;
+D5D2;D5D2;1112 1165 11B1;D5D2;1112 1165 11B1;
+D5D3;D5D3;1112 1165 11B2;D5D3;1112 1165 11B2;
+D5D4;D5D4;1112 1165 11B3;D5D4;1112 1165 11B3;
+D5D5;D5D5;1112 1165 11B4;D5D5;1112 1165 11B4;
+D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5;
+D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6;
+D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7;
+D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8;
+D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9;
+D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA;
+D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB;
+D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC;
+D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD;
+D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE;
+D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF;
+D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0;
+D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1;
+D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2;
+D5E4;D5E4;1112 1166;D5E4;1112 1166;
+D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8;
+D5E6;D5E6;1112 1166 11A9;D5E6;1112 1166 11A9;
+D5E7;D5E7;1112 1166 11AA;D5E7;1112 1166 11AA;
+D5E8;D5E8;1112 1166 11AB;D5E8;1112 1166 11AB;
+D5E9;D5E9;1112 1166 11AC;D5E9;1112 1166 11AC;
+D5EA;D5EA;1112 1166 11AD;D5EA;1112 1166 11AD;
+D5EB;D5EB;1112 1166 11AE;D5EB;1112 1166 11AE;
+D5EC;D5EC;1112 1166 11AF;D5EC;1112 1166 11AF;
+D5ED;D5ED;1112 1166 11B0;D5ED;1112 1166 11B0;
+D5EE;D5EE;1112 1166 11B1;D5EE;1112 1166 11B1;
+D5EF;D5EF;1112 1166 11B2;D5EF;1112 1166 11B2;
+D5F0;D5F0;1112 1166 11B3;D5F0;1112 1166 11B3;
+D5F1;D5F1;1112 1166 11B4;D5F1;1112 1166 11B4;
+D5F2;D5F2;1112 1166 11B5;D5F2;1112 1166 11B5;
+D5F3;D5F3;1112 1166 11B6;D5F3;1112 1166 11B6;
+D5F4;D5F4;1112 1166 11B7;D5F4;1112 1166 11B7;
+D5F5;D5F5;1112 1166 11B8;D5F5;1112 1166 11B8;
+D5F6;D5F6;1112 1166 11B9;D5F6;1112 1166 11B9;
+D5F7;D5F7;1112 1166 11BA;D5F7;1112 1166 11BA;
+D5F8;D5F8;1112 1166 11BB;D5F8;1112 1166 11BB;
+D5F9;D5F9;1112 1166 11BC;D5F9;1112 1166 11BC;
+D5FA;D5FA;1112 1166 11BD;D5FA;1112 1166 11BD;
+D5FB;D5FB;1112 1166 11BE;D5FB;1112 1166 11BE;
+D5FC;D5FC;1112 1166 11BF;D5FC;1112 1166 11BF;
+D5FD;D5FD;1112 1166 11C0;D5FD;1112 1166 11C0;
+D5FE;D5FE;1112 1166 11C1;D5FE;1112 1166 11C1;
+D5FF;D5FF;1112 1166 11C2;D5FF;1112 1166 11C2;
+D600;D600;1112 1167;D600;1112 1167;
+D601;D601;1112 1167 11A8;D601;1112 1167 11A8;
+D602;D602;1112 1167 11A9;D602;1112 1167 11A9;
+D603;D603;1112 1167 11AA;D603;1112 1167 11AA;
+D604;D604;1112 1167 11AB;D604;1112 1167 11AB;
+D605;D605;1112 1167 11AC;D605;1112 1167 11AC;
+D606;D606;1112 1167 11AD;D606;1112 1167 11AD;
+D607;D607;1112 1167 11AE;D607;1112 1167 11AE;
+D608;D608;1112 1167 11AF;D608;1112 1167 11AF;
+D609;D609;1112 1167 11B0;D609;1112 1167 11B0;
+D60A;D60A;1112 1167 11B1;D60A;1112 1167 11B1;
+D60B;D60B;1112 1167 11B2;D60B;1112 1167 11B2;
+D60C;D60C;1112 1167 11B3;D60C;1112 1167 11B3;
+D60D;D60D;1112 1167 11B4;D60D;1112 1167 11B4;
+D60E;D60E;1112 1167 11B5;D60E;1112 1167 11B5;
+D60F;D60F;1112 1167 11B6;D60F;1112 1167 11B6;
+D610;D610;1112 1167 11B7;D610;1112 1167 11B7;
+D611;D611;1112 1167 11B8;D611;1112 1167 11B8;
+D612;D612;1112 1167 11B9;D612;1112 1167 11B9;
+D613;D613;1112 1167 11BA;D613;1112 1167 11BA;
+D614;D614;1112 1167 11BB;D614;1112 1167 11BB;
+D615;D615;1112 1167 11BC;D615;1112 1167 11BC;
+D616;D616;1112 1167 11BD;D616;1112 1167 11BD;
+D617;D617;1112 1167 11BE;D617;1112 1167 11BE;
+D618;D618;1112 1167 11BF;D618;1112 1167 11BF;
+D619;D619;1112 1167 11C0;D619;1112 1167 11C0;
+D61A;D61A;1112 1167 11C1;D61A;1112 1167 11C1;
+D61B;D61B;1112 1167 11C2;D61B;1112 1167 11C2;
+D61C;D61C;1112 1168;D61C;1112 1168;
+D61D;D61D;1112 1168 11A8;D61D;1112 1168 11A8;
+D61E;D61E;1112 1168 11A9;D61E;1112 1168 11A9;
+D61F;D61F;1112 1168 11AA;D61F;1112 1168 11AA;
+D620;D620;1112 1168 11AB;D620;1112 1168 11AB;
+D621;D621;1112 1168 11AC;D621;1112 1168 11AC;
+D622;D622;1112 1168 11AD;D622;1112 1168 11AD;
+D623;D623;1112 1168 11AE;D623;1112 1168 11AE;
+D624;D624;1112 1168 11AF;D624;1112 1168 11AF;
+D625;D625;1112 1168 11B0;D625;1112 1168 11B0;
+D626;D626;1112 1168 11B1;D626;1112 1168 11B1;
+D627;D627;1112 1168 11B2;D627;1112 1168 11B2;
+D628;D628;1112 1168 11B3;D628;1112 1168 11B3;
+D629;D629;1112 1168 11B4;D629;1112 1168 11B4;
+D62A;D62A;1112 1168 11B5;D62A;1112 1168 11B5;
+D62B;D62B;1112 1168 11B6;D62B;1112 1168 11B6;
+D62C;D62C;1112 1168 11B7;D62C;1112 1168 11B7;
+D62D;D62D;1112 1168 11B8;D62D;1112 1168 11B8;
+D62E;D62E;1112 1168 11B9;D62E;1112 1168 11B9;
+D62F;D62F;1112 1168 11BA;D62F;1112 1168 11BA;
+D630;D630;1112 1168 11BB;D630;1112 1168 11BB;
+D631;D631;1112 1168 11BC;D631;1112 1168 11BC;
+D632;D632;1112 1168 11BD;D632;1112 1168 11BD;
+D633;D633;1112 1168 11BE;D633;1112 1168 11BE;
+D634;D634;1112 1168 11BF;D634;1112 1168 11BF;
+D635;D635;1112 1168 11C0;D635;1112 1168 11C0;
+D636;D636;1112 1168 11C1;D636;1112 1168 11C1;
+D637;D637;1112 1168 11C2;D637;1112 1168 11C2;
+D638;D638;1112 1169;D638;1112 1169;
+D639;D639;1112 1169 11A8;D639;1112 1169 11A8;
+D63A;D63A;1112 1169 11A9;D63A;1112 1169 11A9;
+D63B;D63B;1112 1169 11AA;D63B;1112 1169 11AA;
+D63C;D63C;1112 1169 11AB;D63C;1112 1169 11AB;
+D63D;D63D;1112 1169 11AC;D63D;1112 1169 11AC;
+D63E;D63E;1112 1169 11AD;D63E;1112 1169 11AD;
+D63F;D63F;1112 1169 11AE;D63F;1112 1169 11AE;
+D640;D640;1112 1169 11AF;D640;1112 1169 11AF;
+D641;D641;1112 1169 11B0;D641;1112 1169 11B0;
+D642;D642;1112 1169 11B1;D642;1112 1169 11B1;
+D643;D643;1112 1169 11B2;D643;1112 1169 11B2;
+D644;D644;1112 1169 11B3;D644;1112 1169 11B3;
+D645;D645;1112 1169 11B4;D645;1112 1169 11B4;
+D646;D646;1112 1169 11B5;D646;1112 1169 11B5;
+D647;D647;1112 1169 11B6;D647;1112 1169 11B6;
+D648;D648;1112 1169 11B7;D648;1112 1169 11B7;
+D649;D649;1112 1169 11B8;D649;1112 1169 11B8;
+D64A;D64A;1112 1169 11B9;D64A;1112 1169 11B9;
+D64B;D64B;1112 1169 11BA;D64B;1112 1169 11BA;
+D64C;D64C;1112 1169 11BB;D64C;1112 1169 11BB;
+D64D;D64D;1112 1169 11BC;D64D;1112 1169 11BC;
+D64E;D64E;1112 1169 11BD;D64E;1112 1169 11BD;
+D64F;D64F;1112 1169 11BE;D64F;1112 1169 11BE;
+D650;D650;1112 1169 11BF;D650;1112 1169 11BF;
+D651;D651;1112 1169 11C0;D651;1112 1169 11C0;
+D652;D652;1112 1169 11C1;D652;1112 1169 11C1;
+D653;D653;1112 1169 11C2;D653;1112 1169 11C2;
+D654;D654;1112 116A;D654;1112 116A;
+D655;D655;1112 116A 11A8;D655;1112 116A 11A8;
+D656;D656;1112 116A 11A9;D656;1112 116A 11A9;
+D657;D657;1112 116A 11AA;D657;1112 116A 11AA;
+D658;D658;1112 116A 11AB;D658;1112 116A 11AB;
+D659;D659;1112 116A 11AC;D659;1112 116A 11AC;
+D65A;D65A;1112 116A 11AD;D65A;1112 116A 11AD;
+D65B;D65B;1112 116A 11AE;D65B;1112 116A 11AE;
+D65C;D65C;1112 116A 11AF;D65C;1112 116A 11AF;
+D65D;D65D;1112 116A 11B0;D65D;1112 116A 11B0;
+D65E;D65E;1112 116A 11B1;D65E;1112 116A 11B1;
+D65F;D65F;1112 116A 11B2;D65F;1112 116A 11B2;
+D660;D660;1112 116A 11B3;D660;1112 116A 11B3;
+D661;D661;1112 116A 11B4;D661;1112 116A 11B4;
+D662;D662;1112 116A 11B5;D662;1112 116A 11B5;
+D663;D663;1112 116A 11B6;D663;1112 116A 11B6;
+D664;D664;1112 116A 11B7;D664;1112 116A 11B7;
+D665;D665;1112 116A 11B8;D665;1112 116A 11B8;
+D666;D666;1112 116A 11B9;D666;1112 116A 11B9;
+D667;D667;1112 116A 11BA;D667;1112 116A 11BA;
+D668;D668;1112 116A 11BB;D668;1112 116A 11BB;
+D669;D669;1112 116A 11BC;D669;1112 116A 11BC;
+D66A;D66A;1112 116A 11BD;D66A;1112 116A 11BD;
+D66B;D66B;1112 116A 11BE;D66B;1112 116A 11BE;
+D66C;D66C;1112 116A 11BF;D66C;1112 116A 11BF;
+D66D;D66D;1112 116A 11C0;D66D;1112 116A 11C0;
+D66E;D66E;1112 116A 11C1;D66E;1112 116A 11C1;
+D66F;D66F;1112 116A 11C2;D66F;1112 116A 11C2;
+D670;D670;1112 116B;D670;1112 116B;
+D671;D671;1112 116B 11A8;D671;1112 116B 11A8;
+D672;D672;1112 116B 11A9;D672;1112 116B 11A9;
+D673;D673;1112 116B 11AA;D673;1112 116B 11AA;
+D674;D674;1112 116B 11AB;D674;1112 116B 11AB;
+D675;D675;1112 116B 11AC;D675;1112 116B 11AC;
+D676;D676;1112 116B 11AD;D676;1112 116B 11AD;
+D677;D677;1112 116B 11AE;D677;1112 116B 11AE;
+D678;D678;1112 116B 11AF;D678;1112 116B 11AF;
+D679;D679;1112 116B 11B0;D679;1112 116B 11B0;
+D67A;D67A;1112 116B 11B1;D67A;1112 116B 11B1;
+D67B;D67B;1112 116B 11B2;D67B;1112 116B 11B2;
+D67C;D67C;1112 116B 11B3;D67C;1112 116B 11B3;
+D67D;D67D;1112 116B 11B4;D67D;1112 116B 11B4;
+D67E;D67E;1112 116B 11B5;D67E;1112 116B 11B5;
+D67F;D67F;1112 116B 11B6;D67F;1112 116B 11B6;
+D680;D680;1112 116B 11B7;D680;1112 116B 11B7;
+D681;D681;1112 116B 11B8;D681;1112 116B 11B8;
+D682;D682;1112 116B 11B9;D682;1112 116B 11B9;
+D683;D683;1112 116B 11BA;D683;1112 116B 11BA;
+D684;D684;1112 116B 11BB;D684;1112 116B 11BB;
+D685;D685;1112 116B 11BC;D685;1112 116B 11BC;
+D686;D686;1112 116B 11BD;D686;1112 116B 11BD;
+D687;D687;1112 116B 11BE;D687;1112 116B 11BE;
+D688;D688;1112 116B 11BF;D688;1112 116B 11BF;
+D689;D689;1112 116B 11C0;D689;1112 116B 11C0;
+D68A;D68A;1112 116B 11C1;D68A;1112 116B 11C1;
+D68B;D68B;1112 116B 11C2;D68B;1112 116B 11C2;
+D68C;D68C;1112 116C;D68C;1112 116C;
+D68D;D68D;1112 116C 11A8;D68D;1112 116C 11A8;
+D68E;D68E;1112 116C 11A9;D68E;1112 116C 11A9;
+D68F;D68F;1112 116C 11AA;D68F;1112 116C 11AA;
+D690;D690;1112 116C 11AB;D690;1112 116C 11AB;
+D691;D691;1112 116C 11AC;D691;1112 116C 11AC;
+D692;D692;1112 116C 11AD;D692;1112 116C 11AD;
+D693;D693;1112 116C 11AE;D693;1112 116C 11AE;
+D694;D694;1112 116C 11AF;D694;1112 116C 11AF;
+D695;D695;1112 116C 11B0;D695;1112 116C 11B0;
+D696;D696;1112 116C 11B1;D696;1112 116C 11B1;
+D697;D697;1112 116C 11B2;D697;1112 116C 11B2;
+D698;D698;1112 116C 11B3;D698;1112 116C 11B3;
+D699;D699;1112 116C 11B4;D699;1112 116C 11B4;
+D69A;D69A;1112 116C 11B5;D69A;1112 116C 11B5;
+D69B;D69B;1112 116C 11B6;D69B;1112 116C 11B6;
+D69C;D69C;1112 116C 11B7;D69C;1112 116C 11B7;
+D69D;D69D;1112 116C 11B8;D69D;1112 116C 11B8;
+D69E;D69E;1112 116C 11B9;D69E;1112 116C 11B9;
+D69F;D69F;1112 116C 11BA;D69F;1112 116C 11BA;
+D6A0;D6A0;1112 116C 11BB;D6A0;1112 116C 11BB;
+D6A1;D6A1;1112 116C 11BC;D6A1;1112 116C 11BC;
+D6A2;D6A2;1112 116C 11BD;D6A2;1112 116C 11BD;
+D6A3;D6A3;1112 116C 11BE;D6A3;1112 116C 11BE;
+D6A4;D6A4;1112 116C 11BF;D6A4;1112 116C 11BF;
+D6A5;D6A5;1112 116C 11C0;D6A5;1112 116C 11C0;
+D6A6;D6A6;1112 116C 11C1;D6A6;1112 116C 11C1;
+D6A7;D6A7;1112 116C 11C2;D6A7;1112 116C 11C2;
+D6A8;D6A8;1112 116D;D6A8;1112 116D;
+D6A9;D6A9;1112 116D 11A8;D6A9;1112 116D 11A8;
+D6AA;D6AA;1112 116D 11A9;D6AA;1112 116D 11A9;
+D6AB;D6AB;1112 116D 11AA;D6AB;1112 116D 11AA;
+D6AC;D6AC;1112 116D 11AB;D6AC;1112 116D 11AB;
+D6AD;D6AD;1112 116D 11AC;D6AD;1112 116D 11AC;
+D6AE;D6AE;1112 116D 11AD;D6AE;1112 116D 11AD;
+D6AF;D6AF;1112 116D 11AE;D6AF;1112 116D 11AE;
+D6B0;D6B0;1112 116D 11AF;D6B0;1112 116D 11AF;
+D6B1;D6B1;1112 116D 11B0;D6B1;1112 116D 11B0;
+D6B2;D6B2;1112 116D 11B1;D6B2;1112 116D 11B1;
+D6B3;D6B3;1112 116D 11B2;D6B3;1112 116D 11B2;
+D6B4;D6B4;1112 116D 11B3;D6B4;1112 116D 11B3;
+D6B5;D6B5;1112 116D 11B4;D6B5;1112 116D 11B4;
+D6B6;D6B6;1112 116D 11B5;D6B6;1112 116D 11B5;
+D6B7;D6B7;1112 116D 11B6;D6B7;1112 116D 11B6;
+D6B8;D6B8;1112 116D 11B7;D6B8;1112 116D 11B7;
+D6B9;D6B9;1112 116D 11B8;D6B9;1112 116D 11B8;
+D6BA;D6BA;1112 116D 11B9;D6BA;1112 116D 11B9;
+D6BB;D6BB;1112 116D 11BA;D6BB;1112 116D 11BA;
+D6BC;D6BC;1112 116D 11BB;D6BC;1112 116D 11BB;
+D6BD;D6BD;1112 116D 11BC;D6BD;1112 116D 11BC;
+D6BE;D6BE;1112 116D 11BD;D6BE;1112 116D 11BD;
+D6BF;D6BF;1112 116D 11BE;D6BF;1112 116D 11BE;
+D6C0;D6C0;1112 116D 11BF;D6C0;1112 116D 11BF;
+D6C1;D6C1;1112 116D 11C0;D6C1;1112 116D 11C0;
+D6C2;D6C2;1112 116D 11C1;D6C2;1112 116D 11C1;
+D6C3;D6C3;1112 116D 11C2;D6C3;1112 116D 11C2;
+D6C4;D6C4;1112 116E;D6C4;1112 116E;
+D6C5;D6C5;1112 116E 11A8;D6C5;1112 116E 11A8;
+D6C6;D6C6;1112 116E 11A9;D6C6;1112 116E 11A9;
+D6C7;D6C7;1112 116E 11AA;D6C7;1112 116E 11AA;
+D6C8;D6C8;1112 116E 11AB;D6C8;1112 116E 11AB;
+D6C9;D6C9;1112 116E 11AC;D6C9;1112 116E 11AC;
+D6CA;D6CA;1112 116E 11AD;D6CA;1112 116E 11AD;
+D6CB;D6CB;1112 116E 11AE;D6CB;1112 116E 11AE;
+D6CC;D6CC;1112 116E 11AF;D6CC;1112 116E 11AF;
+D6CD;D6CD;1112 116E 11B0;D6CD;1112 116E 11B0;
+D6CE;D6CE;1112 116E 11B1;D6CE;1112 116E 11B1;
+D6CF;D6CF;1112 116E 11B2;D6CF;1112 116E 11B2;
+D6D0;D6D0;1112 116E 11B3;D6D0;1112 116E 11B3;
+D6D1;D6D1;1112 116E 11B4;D6D1;1112 116E 11B4;
+D6D2;D6D2;1112 116E 11B5;D6D2;1112 116E 11B5;
+D6D3;D6D3;1112 116E 11B6;D6D3;1112 116E 11B6;
+D6D4;D6D4;1112 116E 11B7;D6D4;1112 116E 11B7;
+D6D5;D6D5;1112 116E 11B8;D6D5;1112 116E 11B8;
+D6D6;D6D6;1112 116E 11B9;D6D6;1112 116E 11B9;
+D6D7;D6D7;1112 116E 11BA;D6D7;1112 116E 11BA;
+D6D8;D6D8;1112 116E 11BB;D6D8;1112 116E 11BB;
+D6D9;D6D9;1112 116E 11BC;D6D9;1112 116E 11BC;
+D6DA;D6DA;1112 116E 11BD;D6DA;1112 116E 11BD;
+D6DB;D6DB;1112 116E 11BE;D6DB;1112 116E 11BE;
+D6DC;D6DC;1112 116E 11BF;D6DC;1112 116E 11BF;
+D6DD;D6DD;1112 116E 11C0;D6DD;1112 116E 11C0;
+D6DE;D6DE;1112 116E 11C1;D6DE;1112 116E 11C1;
+D6DF;D6DF;1112 116E 11C2;D6DF;1112 116E 11C2;
+D6E0;D6E0;1112 116F;D6E0;1112 116F;
+D6E1;D6E1;1112 116F 11A8;D6E1;1112 116F 11A8;
+D6E2;D6E2;1112 116F 11A9;D6E2;1112 116F 11A9;
+D6E3;D6E3;1112 116F 11AA;D6E3;1112 116F 11AA;
+D6E4;D6E4;1112 116F 11AB;D6E4;1112 116F 11AB;
+D6E5;D6E5;1112 116F 11AC;D6E5;1112 116F 11AC;
+D6E6;D6E6;1112 116F 11AD;D6E6;1112 116F 11AD;
+D6E7;D6E7;1112 116F 11AE;D6E7;1112 116F 11AE;
+D6E8;D6E8;1112 116F 11AF;D6E8;1112 116F 11AF;
+D6E9;D6E9;1112 116F 11B0;D6E9;1112 116F 11B0;
+D6EA;D6EA;1112 116F 11B1;D6EA;1112 116F 11B1;
+D6EB;D6EB;1112 116F 11B2;D6EB;1112 116F 11B2;
+D6EC;D6EC;1112 116F 11B3;D6EC;1112 116F 11B3;
+D6ED;D6ED;1112 116F 11B4;D6ED;1112 116F 11B4;
+D6EE;D6EE;1112 116F 11B5;D6EE;1112 116F 11B5;
+D6EF;D6EF;1112 116F 11B6;D6EF;1112 116F 11B6;
+D6F0;D6F0;1112 116F 11B7;D6F0;1112 116F 11B7;
+D6F1;D6F1;1112 116F 11B8;D6F1;1112 116F 11B8;
+D6F2;D6F2;1112 116F 11B9;D6F2;1112 116F 11B9;
+D6F3;D6F3;1112 116F 11BA;D6F3;1112 116F 11BA;
+D6F4;D6F4;1112 116F 11BB;D6F4;1112 116F 11BB;
+D6F5;D6F5;1112 116F 11BC;D6F5;1112 116F 11BC;
+D6F6;D6F6;1112 116F 11BD;D6F6;1112 116F 11BD;
+D6F7;D6F7;1112 116F 11BE;D6F7;1112 116F 11BE;
+D6F8;D6F8;1112 116F 11BF;D6F8;1112 116F 11BF;
+D6F9;D6F9;1112 116F 11C0;D6F9;1112 116F 11C0;
+D6FA;D6FA;1112 116F 11C1;D6FA;1112 116F 11C1;
+D6FB;D6FB;1112 116F 11C2;D6FB;1112 116F 11C2;
+D6FC;D6FC;1112 1170;D6FC;1112 1170;
+D6FD;D6FD;1112 1170 11A8;D6FD;1112 1170 11A8;
+D6FE;D6FE;1112 1170 11A9;D6FE;1112 1170 11A9;
+D6FF;D6FF;1112 1170 11AA;D6FF;1112 1170 11AA;
+D700;D700;1112 1170 11AB;D700;1112 1170 11AB;
+D701;D701;1112 1170 11AC;D701;1112 1170 11AC;
+D702;D702;1112 1170 11AD;D702;1112 1170 11AD;
+D703;D703;1112 1170 11AE;D703;1112 1170 11AE;
+D704;D704;1112 1170 11AF;D704;1112 1170 11AF;
+D705;D705;1112 1170 11B0;D705;1112 1170 11B0;
+D706;D706;1112 1170 11B1;D706;1112 1170 11B1;
+D707;D707;1112 1170 11B2;D707;1112 1170 11B2;
+D708;D708;1112 1170 11B3;D708;1112 1170 11B3;
+D709;D709;1112 1170 11B4;D709;1112 1170 11B4;
+D70A;D70A;1112 1170 11B5;D70A;1112 1170 11B5;
+D70B;D70B;1112 1170 11B6;D70B;1112 1170 11B6;
+D70C;D70C;1112 1170 11B7;D70C;1112 1170 11B7;
+D70D;D70D;1112 1170 11B8;D70D;1112 1170 11B8;
+D70E;D70E;1112 1170 11B9;D70E;1112 1170 11B9;
+D70F;D70F;1112 1170 11BA;D70F;1112 1170 11BA;
+D710;D710;1112 1170 11BB;D710;1112 1170 11BB;
+D711;D711;1112 1170 11BC;D711;1112 1170 11BC;
+D712;D712;1112 1170 11BD;D712;1112 1170 11BD;
+D713;D713;1112 1170 11BE;D713;1112 1170 11BE;
+D714;D714;1112 1170 11BF;D714;1112 1170 11BF;
+D715;D715;1112 1170 11C0;D715;1112 1170 11C0;
+D716;D716;1112 1170 11C1;D716;1112 1170 11C1;
+D717;D717;1112 1170 11C2;D717;1112 1170 11C2;
+D718;D718;1112 1171;D718;1112 1171;
+D719;D719;1112 1171 11A8;D719;1112 1171 11A8;
+D71A;D71A;1112 1171 11A9;D71A;1112 1171 11A9;
+D71B;D71B;1112 1171 11AA;D71B;1112 1171 11AA;
+D71C;D71C;1112 1171 11AB;D71C;1112 1171 11AB;
+D71D;D71D;1112 1171 11AC;D71D;1112 1171 11AC;
+D71E;D71E;1112 1171 11AD;D71E;1112 1171 11AD;
+D71F;D71F;1112 1171 11AE;D71F;1112 1171 11AE;
+D720;D720;1112 1171 11AF;D720;1112 1171 11AF;
+D721;D721;1112 1171 11B0;D721;1112 1171 11B0;
+D722;D722;1112 1171 11B1;D722;1112 1171 11B1;
+D723;D723;1112 1171 11B2;D723;1112 1171 11B2;
+D724;D724;1112 1171 11B3;D724;1112 1171 11B3;
+D725;D725;1112 1171 11B4;D725;1112 1171 11B4;
+D726;D726;1112 1171 11B5;D726;1112 1171 11B5;
+D727;D727;1112 1171 11B6;D727;1112 1171 11B6;
+D728;D728;1112 1171 11B7;D728;1112 1171 11B7;
+D729;D729;1112 1171 11B8;D729;1112 1171 11B8;
+D72A;D72A;1112 1171 11B9;D72A;1112 1171 11B9;
+D72B;D72B;1112 1171 11BA;D72B;1112 1171 11BA;
+D72C;D72C;1112 1171 11BB;D72C;1112 1171 11BB;
+D72D;D72D;1112 1171 11BC;D72D;1112 1171 11BC;
+D72E;D72E;1112 1171 11BD;D72E;1112 1171 11BD;
+D72F;D72F;1112 1171 11BE;D72F;1112 1171 11BE;
+D730;D730;1112 1171 11BF;D730;1112 1171 11BF;
+D731;D731;1112 1171 11C0;D731;1112 1171 11C0;
+D732;D732;1112 1171 11C1;D732;1112 1171 11C1;
+D733;D733;1112 1171 11C2;D733;1112 1171 11C2;
+D734;D734;1112 1172;D734;1112 1172;
+D735;D735;1112 1172 11A8;D735;1112 1172 11A8;
+D736;D736;1112 1172 11A9;D736;1112 1172 11A9;
+D737;D737;1112 1172 11AA;D737;1112 1172 11AA;
+D738;D738;1112 1172 11AB;D738;1112 1172 11AB;
+D739;D739;1112 1172 11AC;D739;1112 1172 11AC;
+D73A;D73A;1112 1172 11AD;D73A;1112 1172 11AD;
+D73B;D73B;1112 1172 11AE;D73B;1112 1172 11AE;
+D73C;D73C;1112 1172 11AF;D73C;1112 1172 11AF;
+D73D;D73D;1112 1172 11B0;D73D;1112 1172 11B0;
+D73E;D73E;1112 1172 11B1;D73E;1112 1172 11B1;
+D73F;D73F;1112 1172 11B2;D73F;1112 1172 11B2;
+D740;D740;1112 1172 11B3;D740;1112 1172 11B3;
+D741;D741;1112 1172 11B4;D741;1112 1172 11B4;
+D742;D742;1112 1172 11B5;D742;1112 1172 11B5;
+D743;D743;1112 1172 11B6;D743;1112 1172 11B6;
+D744;D744;1112 1172 11B7;D744;1112 1172 11B7;
+D745;D745;1112 1172 11B8;D745;1112 1172 11B8;
+D746;D746;1112 1172 11B9;D746;1112 1172 11B9;
+D747;D747;1112 1172 11BA;D747;1112 1172 11BA;
+D748;D748;1112 1172 11BB;D748;1112 1172 11BB;
+D749;D749;1112 1172 11BC;D749;1112 1172 11BC;
+D74A;D74A;1112 1172 11BD;D74A;1112 1172 11BD;
+D74B;D74B;1112 1172 11BE;D74B;1112 1172 11BE;
+D74C;D74C;1112 1172 11BF;D74C;1112 1172 11BF;
+D74D;D74D;1112 1172 11C0;D74D;1112 1172 11C0;
+D74E;D74E;1112 1172 11C1;D74E;1112 1172 11C1;
+D74F;D74F;1112 1172 11C2;D74F;1112 1172 11C2;
+D750;D750;1112 1173;D750;1112 1173;
+D751;D751;1112 1173 11A8;D751;1112 1173 11A8;
+D752;D752;1112 1173 11A9;D752;1112 1173 11A9;
+D753;D753;1112 1173 11AA;D753;1112 1173 11AA;
+D754;D754;1112 1173 11AB;D754;1112 1173 11AB;
+D755;D755;1112 1173 11AC;D755;1112 1173 11AC;
+D756;D756;1112 1173 11AD;D756;1112 1173 11AD;
+D757;D757;1112 1173 11AE;D757;1112 1173 11AE;
+D758;D758;1112 1173 11AF;D758;1112 1173 11AF;
+D759;D759;1112 1173 11B0;D759;1112 1173 11B0;
+D75A;D75A;1112 1173 11B1;D75A;1112 1173 11B1;
+D75B;D75B;1112 1173 11B2;D75B;1112 1173 11B2;
+D75C;D75C;1112 1173 11B3;D75C;1112 1173 11B3;
+D75D;D75D;1112 1173 11B4;D75D;1112 1173 11B4;
+D75E;D75E;1112 1173 11B5;D75E;1112 1173 11B5;
+D75F;D75F;1112 1173 11B6;D75F;1112 1173 11B6;
+D760;D760;1112 1173 11B7;D760;1112 1173 11B7;
+D761;D761;1112 1173 11B8;D761;1112 1173 11B8;
+D762;D762;1112 1173 11B9;D762;1112 1173 11B9;
+D763;D763;1112 1173 11BA;D763;1112 1173 11BA;
+D764;D764;1112 1173 11BB;D764;1112 1173 11BB;
+D765;D765;1112 1173 11BC;D765;1112 1173 11BC;
+D766;D766;1112 1173 11BD;D766;1112 1173 11BD;
+D767;D767;1112 1173 11BE;D767;1112 1173 11BE;
+D768;D768;1112 1173 11BF;D768;1112 1173 11BF;
+D769;D769;1112 1173 11C0;D769;1112 1173 11C0;
+D76A;D76A;1112 1173 11C1;D76A;1112 1173 11C1;
+D76B;D76B;1112 1173 11C2;D76B;1112 1173 11C2;
+D76C;D76C;1112 1174;D76C;1112 1174;
+D76D;D76D;1112 1174 11A8;D76D;1112 1174 11A8;
+D76E;D76E;1112 1174 11A9;D76E;1112 1174 11A9;
+D76F;D76F;1112 1174 11AA;D76F;1112 1174 11AA;
+D770;D770;1112 1174 11AB;D770;1112 1174 11AB;
+D771;D771;1112 1174 11AC;D771;1112 1174 11AC;
+D772;D772;1112 1174 11AD;D772;1112 1174 11AD;
+D773;D773;1112 1174 11AE;D773;1112 1174 11AE;
+D774;D774;1112 1174 11AF;D774;1112 1174 11AF;
+D775;D775;1112 1174 11B0;D775;1112 1174 11B0;
+D776;D776;1112 1174 11B1;D776;1112 1174 11B1;
+D777;D777;1112 1174 11B2;D777;1112 1174 11B2;
+D778;D778;1112 1174 11B3;D778;1112 1174 11B3;
+D779;D779;1112 1174 11B4;D779;1112 1174 11B4;
+D77A;D77A;1112 1174 11B5;D77A;1112 1174 11B5;
+D77B;D77B;1112 1174 11B6;D77B;1112 1174 11B6;
+D77C;D77C;1112 1174 11B7;D77C;1112 1174 11B7;
+D77D;D77D;1112 1174 11B8;D77D;1112 1174 11B8;
+D77E;D77E;1112 1174 11B9;D77E;1112 1174 11B9;
+D77F;D77F;1112 1174 11BA;D77F;1112 1174 11BA;
+D780;D780;1112 1174 11BB;D780;1112 1174 11BB;
+D781;D781;1112 1174 11BC;D781;1112 1174 11BC;
+D782;D782;1112 1174 11BD;D782;1112 1174 11BD;
+D783;D783;1112 1174 11BE;D783;1112 1174 11BE;
+D784;D784;1112 1174 11BF;D784;1112 1174 11BF;
+D785;D785;1112 1174 11C0;D785;1112 1174 11C0;
+D786;D786;1112 1174 11C1;D786;1112 1174 11C1;
+D787;D787;1112 1174 11C2;D787;1112 1174 11C2;
+D788;D788;1112 1175;D788;1112 1175;
+D789;D789;1112 1175 11A8;D789;1112 1175 11A8;
+D78A;D78A;1112 1175 11A9;D78A;1112 1175 11A9;
+D78B;D78B;1112 1175 11AA;D78B;1112 1175 11AA;
+D78C;D78C;1112 1175 11AB;D78C;1112 1175 11AB;
+D78D;D78D;1112 1175 11AC;D78D;1112 1175 11AC;
+D78E;D78E;1112 1175 11AD;D78E;1112 1175 11AD;
+D78F;D78F;1112 1175 11AE;D78F;1112 1175 11AE;
+D790;D790;1112 1175 11AF;D790;1112 1175 11AF;
+D791;D791;1112 1175 11B0;D791;1112 1175 11B0;
+D792;D792;1112 1175 11B1;D792;1112 1175 11B1;
+D793;D793;1112 1175 11B2;D793;1112 1175 11B2;
+D794;D794;1112 1175 11B3;D794;1112 1175 11B3;
+D795;D795;1112 1175 11B4;D795;1112 1175 11B4;
+D796;D796;1112 1175 11B5;D796;1112 1175 11B5;
+D797;D797;1112 1175 11B6;D797;1112 1175 11B6;
+D798;D798;1112 1175 11B7;D798;1112 1175 11B7;
+D799;D799;1112 1175 11B8;D799;1112 1175 11B8;
+D79A;D79A;1112 1175 11B9;D79A;1112 1175 11B9;
+D79B;D79B;1112 1175 11BA;D79B;1112 1175 11BA;
+D79C;D79C;1112 1175 11BB;D79C;1112 1175 11BB;
+D79D;D79D;1112 1175 11BC;D79D;1112 1175 11BC;
+D79E;D79E;1112 1175 11BD;D79E;1112 1175 11BD;
+D79F;D79F;1112 1175 11BE;D79F;1112 1175 11BE;
+D7A0;D7A0;1112 1175 11BF;D7A0;1112 1175 11BF;
+D7A1;D7A1;1112 1175 11C0;D7A1;1112 1175 11C0;
+D7A2;D7A2;1112 1175 11C1;D7A2;1112 1175 11C1;
+D7A3;D7A3;1112 1175 11C2;D7A3;1112 1175 11C2;
+F900;8C48;8C48;8C48;8C48;
+F901;66F4;66F4;66F4;66F4;
+F902;8ECA;8ECA;8ECA;8ECA;
+F903;8CC8;8CC8;8CC8;8CC8;
+F904;6ED1;6ED1;6ED1;6ED1;
+F905;4E32;4E32;4E32;4E32;
+F906;53E5;53E5;53E5;53E5;
+F907;9F9C;9F9C;9F9C;9F9C;
+F908;9F9C;9F9C;9F9C;9F9C;
+F909;5951;5951;5951;5951;
+F90A;91D1;91D1;91D1;91D1;
+F90B;5587;5587;5587;5587;
+F90C;5948;5948;5948;5948;
+F90D;61F6;61F6;61F6;61F6;
+F90E;7669;7669;7669;7669;
+F90F;7F85;7F85;7F85;7F85;
+F910;863F;863F;863F;863F;
+F911;87BA;87BA;87BA;87BA;
+F912;88F8;88F8;88F8;88F8;
+F913;908F;908F;908F;908F;
+F914;6A02;6A02;6A02;6A02;
+F915;6D1B;6D1B;6D1B;6D1B;
+F916;70D9;70D9;70D9;70D9;
+F917;73DE;73DE;73DE;73DE;
+F918;843D;843D;843D;843D;
+F919;916A;916A;916A;916A;
+F91A;99F1;99F1;99F1;99F1;
+F91B;4E82;4E82;4E82;4E82;
+F91C;5375;5375;5375;5375;
+F91D;6B04;6B04;6B04;6B04;
+F91E;721B;721B;721B;721B;
+F91F;862D;862D;862D;862D;
+F920;9E1E;9E1E;9E1E;9E1E;
+F921;5D50;5D50;5D50;5D50;
+F922;6FEB;6FEB;6FEB;6FEB;
+F923;85CD;85CD;85CD;85CD;
+F924;8964;8964;8964;8964;
+F925;62C9;62C9;62C9;62C9;
+F926;81D8;81D8;81D8;81D8;
+F927;881F;881F;881F;881F;
+F928;5ECA;5ECA;5ECA;5ECA;
+F929;6717;6717;6717;6717;
+F92A;6D6A;6D6A;6D6A;6D6A;
+F92B;72FC;72FC;72FC;72FC;
+F92C;90CE;90CE;90CE;90CE;
+F92D;4F86;4F86;4F86;4F86;
+F92E;51B7;51B7;51B7;51B7;
+F92F;52DE;52DE;52DE;52DE;
+F930;64C4;64C4;64C4;64C4;
+F931;6AD3;6AD3;6AD3;6AD3;
+F932;7210;7210;7210;7210;
+F933;76E7;76E7;76E7;76E7;
+F934;8001;8001;8001;8001;
+F935;8606;8606;8606;8606;
+F936;865C;865C;865C;865C;
+F937;8DEF;8DEF;8DEF;8DEF;
+F938;9732;9732;9732;9732;
+F939;9B6F;9B6F;9B6F;9B6F;
+F93A;9DFA;9DFA;9DFA;9DFA;
+F93B;788C;788C;788C;788C;
+F93C;797F;797F;797F;797F;
+F93D;7DA0;7DA0;7DA0;7DA0;
+F93E;83C9;83C9;83C9;83C9;
+F93F;9304;9304;9304;9304;
+F940;9E7F;9E7F;9E7F;9E7F;
+F941;8AD6;8AD6;8AD6;8AD6;
+F942;58DF;58DF;58DF;58DF;
+F943;5F04;5F04;5F04;5F04;
+F944;7C60;7C60;7C60;7C60;
+F945;807E;807E;807E;807E;
+F946;7262;7262;7262;7262;
+F947;78CA;78CA;78CA;78CA;
+F948;8CC2;8CC2;8CC2;8CC2;
+F949;96F7;96F7;96F7;96F7;
+F94A;58D8;58D8;58D8;58D8;
+F94B;5C62;5C62;5C62;5C62;
+F94C;6A13;6A13;6A13;6A13;
+F94D;6DDA;6DDA;6DDA;6DDA;
+F94E;6F0F;6F0F;6F0F;6F0F;
+F94F;7D2F;7D2F;7D2F;7D2F;
+F950;7E37;7E37;7E37;7E37;
+F951;964B;964B;964B;964B;
+F952;52D2;52D2;52D2;52D2;
+F953;808B;808B;808B;808B;
+F954;51DC;51DC;51DC;51DC;
+F955;51CC;51CC;51CC;51CC;
+F956;7A1C;7A1C;7A1C;7A1C;
+F957;7DBE;7DBE;7DBE;7DBE;
+F958;83F1;83F1;83F1;83F1;
+F959;9675;9675;9675;9675;
+F95A;8B80;8B80;8B80;8B80;
+F95B;62CF;62CF;62CF;62CF;
+F95C;6A02;6A02;6A02;6A02;
+F95D;8AFE;8AFE;8AFE;8AFE;
+F95E;4E39;4E39;4E39;4E39;
+F95F;5BE7;5BE7;5BE7;5BE7;
+F960;6012;6012;6012;6012;
+F961;7387;7387;7387;7387;
+F962;7570;7570;7570;7570;
+F963;5317;5317;5317;5317;
+F964;78FB;78FB;78FB;78FB;
+F965;4FBF;4FBF;4FBF;4FBF;
+F966;5FA9;5FA9;5FA9;5FA9;
+F967;4E0D;4E0D;4E0D;4E0D;
+F968;6CCC;6CCC;6CCC;6CCC;
+F969;6578;6578;6578;6578;
+F96A;7D22;7D22;7D22;7D22;
+F96B;53C3;53C3;53C3;53C3;
+F96C;585E;585E;585E;585E;
+F96D;7701;7701;7701;7701;
+F96E;8449;8449;8449;8449;
+F96F;8AAA;8AAA;8AAA;8AAA;
+F970;6BBA;6BBA;6BBA;6BBA;
+F971;8FB0;8FB0;8FB0;8FB0;
+F972;6C88;6C88;6C88;6C88;
+F973;62FE;62FE;62FE;62FE;
+F974;82E5;82E5;82E5;82E5;
+F975;63A0;63A0;63A0;63A0;
+F976;7565;7565;7565;7565;
+F977;4EAE;4EAE;4EAE;4EAE;
+F978;5169;5169;5169;5169;
+F979;51C9;51C9;51C9;51C9;
+F97A;6881;6881;6881;6881;
+F97B;7CE7;7CE7;7CE7;7CE7;
+F97C;826F;826F;826F;826F;
+F97D;8AD2;8AD2;8AD2;8AD2;
+F97E;91CF;91CF;91CF;91CF;
+F97F;52F5;52F5;52F5;52F5;
+F980;5442;5442;5442;5442;
+F981;5973;5973;5973;5973;
+F982;5EEC;5EEC;5EEC;5EEC;
+F983;65C5;65C5;65C5;65C5;
+F984;6FFE;6FFE;6FFE;6FFE;
+F985;792A;792A;792A;792A;
+F986;95AD;95AD;95AD;95AD;
+F987;9A6A;9A6A;9A6A;9A6A;
+F988;9E97;9E97;9E97;9E97;
+F989;9ECE;9ECE;9ECE;9ECE;
+F98A;529B;529B;529B;529B;
+F98B;66C6;66C6;66C6;66C6;
+F98C;6B77;6B77;6B77;6B77;
+F98D;8F62;8F62;8F62;8F62;
+F98E;5E74;5E74;5E74;5E74;
+F98F;6190;6190;6190;6190;
+F990;6200;6200;6200;6200;
+F991;649A;649A;649A;649A;
+F992;6F23;6F23;6F23;6F23;
+F993;7149;7149;7149;7149;
+F994;7489;7489;7489;7489;
+F995;79CA;79CA;79CA;79CA;
+F996;7DF4;7DF4;7DF4;7DF4;
+F997;806F;806F;806F;806F;
+F998;8F26;8F26;8F26;8F26;
+F999;84EE;84EE;84EE;84EE;
+F99A;9023;9023;9023;9023;
+F99B;934A;934A;934A;934A;
+F99C;5217;5217;5217;5217;
+F99D;52A3;52A3;52A3;52A3;
+F99E;54BD;54BD;54BD;54BD;
+F99F;70C8;70C8;70C8;70C8;
+F9A0;88C2;88C2;88C2;88C2;
+F9A1;8AAA;8AAA;8AAA;8AAA;
+F9A2;5EC9;5EC9;5EC9;5EC9;
+F9A3;5FF5;5FF5;5FF5;5FF5;
+F9A4;637B;637B;637B;637B;
+F9A5;6BAE;6BAE;6BAE;6BAE;
+F9A6;7C3E;7C3E;7C3E;7C3E;
+F9A7;7375;7375;7375;7375;
+F9A8;4EE4;4EE4;4EE4;4EE4;
+F9A9;56F9;56F9;56F9;56F9;
+F9AA;5BE7;5BE7;5BE7;5BE7;
+F9AB;5DBA;5DBA;5DBA;5DBA;
+F9AC;601C;601C;601C;601C;
+F9AD;73B2;73B2;73B2;73B2;
+F9AE;7469;7469;7469;7469;
+F9AF;7F9A;7F9A;7F9A;7F9A;
+F9B0;8046;8046;8046;8046;
+F9B1;9234;9234;9234;9234;
+F9B2;96F6;96F6;96F6;96F6;
+F9B3;9748;9748;9748;9748;
+F9B4;9818;9818;9818;9818;
+F9B5;4F8B;4F8B;4F8B;4F8B;
+F9B6;79AE;79AE;79AE;79AE;
+F9B7;91B4;91B4;91B4;91B4;
+F9B8;96B8;96B8;96B8;96B8;
+F9B9;60E1;60E1;60E1;60E1;
+F9BA;4E86;4E86;4E86;4E86;
+F9BB;50DA;50DA;50DA;50DA;
+F9BC;5BEE;5BEE;5BEE;5BEE;
+F9BD;5C3F;5C3F;5C3F;5C3F;
+F9BE;6599;6599;6599;6599;
+F9BF;6A02;6A02;6A02;6A02;
+F9C0;71CE;71CE;71CE;71CE;
+F9C1;7642;7642;7642;7642;
+F9C2;84FC;84FC;84FC;84FC;
+F9C3;907C;907C;907C;907C;
+F9C4;9F8D;9F8D;9F8D;9F8D;
+F9C5;6688;6688;6688;6688;
+F9C6;962E;962E;962E;962E;
+F9C7;5289;5289;5289;5289;
+F9C8;677B;677B;677B;677B;
+F9C9;67F3;67F3;67F3;67F3;
+F9CA;6D41;6D41;6D41;6D41;
+F9CB;6E9C;6E9C;6E9C;6E9C;
+F9CC;7409;7409;7409;7409;
+F9CD;7559;7559;7559;7559;
+F9CE;786B;786B;786B;786B;
+F9CF;7D10;7D10;7D10;7D10;
+F9D0;985E;985E;985E;985E;
+F9D1;516D;516D;516D;516D;
+F9D2;622E;622E;622E;622E;
+F9D3;9678;9678;9678;9678;
+F9D4;502B;502B;502B;502B;
+F9D5;5D19;5D19;5D19;5D19;
+F9D6;6DEA;6DEA;6DEA;6DEA;
+F9D7;8F2A;8F2A;8F2A;8F2A;
+F9D8;5F8B;5F8B;5F8B;5F8B;
+F9D9;6144;6144;6144;6144;
+F9DA;6817;6817;6817;6817;
+F9DB;7387;7387;7387;7387;
+F9DC;9686;9686;9686;9686;
+F9DD;5229;5229;5229;5229;
+F9DE;540F;540F;540F;540F;
+F9DF;5C65;5C65;5C65;5C65;
+F9E0;6613;6613;6613;6613;
+F9E1;674E;674E;674E;674E;
+F9E2;68A8;68A8;68A8;68A8;
+F9E3;6CE5;6CE5;6CE5;6CE5;
+F9E4;7406;7406;7406;7406;
+F9E5;75E2;75E2;75E2;75E2;
+F9E6;7F79;7F79;7F79;7F79;
+F9E7;88CF;88CF;88CF;88CF;
+F9E8;88E1;88E1;88E1;88E1;
+F9E9;91CC;91CC;91CC;91CC;
+F9EA;96E2;96E2;96E2;96E2;
+F9EB;533F;533F;533F;533F;
+F9EC;6EBA;6EBA;6EBA;6EBA;
+F9ED;541D;541D;541D;541D;
+F9EE;71D0;71D0;71D0;71D0;
+F9EF;7498;7498;7498;7498;
+F9F0;85FA;85FA;85FA;85FA;
+F9F1;96A3;96A3;96A3;96A3;
+F9F2;9C57;9C57;9C57;9C57;
+F9F3;9E9F;9E9F;9E9F;9E9F;
+F9F4;6797;6797;6797;6797;
+F9F5;6DCB;6DCB;6DCB;6DCB;
+F9F6;81E8;81E8;81E8;81E8;
+F9F7;7ACB;7ACB;7ACB;7ACB;
+F9F8;7B20;7B20;7B20;7B20;
+F9F9;7C92;7C92;7C92;7C92;
+F9FA;72C0;72C0;72C0;72C0;
+F9FB;7099;7099;7099;7099;
+F9FC;8B58;8B58;8B58;8B58;
+F9FD;4EC0;4EC0;4EC0;4EC0;
+F9FE;8336;8336;8336;8336;
+F9FF;523A;523A;523A;523A;
+FA00;5207;5207;5207;5207;
+FA01;5EA6;5EA6;5EA6;5EA6;
+FA02;62D3;62D3;62D3;62D3;
+FA03;7CD6;7CD6;7CD6;7CD6;
+FA04;5B85;5B85;5B85;5B85;
+FA05;6D1E;6D1E;6D1E;6D1E;
+FA06;66B4;66B4;66B4;66B4;
+FA07;8F3B;8F3B;8F3B;8F3B;
+FA08;884C;884C;884C;884C;
+FA09;964D;964D;964D;964D;
+FA0A;898B;898B;898B;898B;
+FA0B;5ED3;5ED3;5ED3;5ED3;
+FA0C;5140;5140;5140;5140;
+FA0D;55C0;55C0;55C0;55C0;
+FA10;585A;585A;585A;585A;
+FA12;6674;6674;6674;6674;
+FA15;51DE;51DE;51DE;51DE;
+FA16;732A;732A;732A;732A;
+FA17;76CA;76CA;76CA;76CA;
+FA18;793C;793C;793C;793C;
+FA19;795E;795E;795E;795E;
+FA1A;7965;7965;7965;7965;
+FA1B;798F;798F;798F;798F;
+FA1C;9756;9756;9756;9756;
+FA1D;7CBE;7CBE;7CBE;7CBE;
+FA1E;7FBD;7FBD;7FBD;7FBD;
+FA20;8612;8612;8612;8612;
+FA22;8AF8;8AF8;8AF8;8AF8;
+FA25;9038;9038;9038;9038;
+FA26;90FD;90FD;90FD;90FD;
+FA2A;98EF;98EF;98EF;98EF;
+FA2B;98FC;98FC;98FC;98FC;
+FA2C;9928;9928;9928;9928;
+FA2D;9DB4;9DB4;9DB4;9DB4;
+FA30;4FAE;4FAE;4FAE;4FAE;
+FA31;50E7;50E7;50E7;50E7;
+FA32;514D;514D;514D;514D;
+FA33;52C9;52C9;52C9;52C9;
+FA34;52E4;52E4;52E4;52E4;
+FA35;5351;5351;5351;5351;
+FA36;559D;559D;559D;559D;
+FA37;5606;5606;5606;5606;
+FA38;5668;5668;5668;5668;
+FA39;5840;5840;5840;5840;
+FA3A;58A8;58A8;58A8;58A8;
+FA3B;5C64;5C64;5C64;5C64;
+FA3C;5C6E;5C6E;5C6E;5C6E;
+FA3D;6094;6094;6094;6094;
+FA3E;6168;6168;6168;6168;
+FA3F;618E;618E;618E;618E;
+FA40;61F2;61F2;61F2;61F2;
+FA41;654F;654F;654F;654F;
+FA42;65E2;65E2;65E2;65E2;
+FA43;6691;6691;6691;6691;
+FA44;6885;6885;6885;6885;
+FA45;6D77;6D77;6D77;6D77;
+FA46;6E1A;6E1A;6E1A;6E1A;
+FA47;6F22;6F22;6F22;6F22;
+FA48;716E;716E;716E;716E;
+FA49;722B;722B;722B;722B;
+FA4A;7422;7422;7422;7422;
+FA4B;7891;7891;7891;7891;
+FA4C;793E;793E;793E;793E;
+FA4D;7949;7949;7949;7949;
+FA4E;7948;7948;7948;7948;
+FA4F;7950;7950;7950;7950;
+FA50;7956;7956;7956;7956;
+FA51;795D;795D;795D;795D;
+FA52;798D;798D;798D;798D;
+FA53;798E;798E;798E;798E;
+FA54;7A40;7A40;7A40;7A40;
+FA55;7A81;7A81;7A81;7A81;
+FA56;7BC0;7BC0;7BC0;7BC0;
+FA57;7DF4;7DF4;7DF4;7DF4;
+FA58;7E09;7E09;7E09;7E09;
+FA59;7E41;7E41;7E41;7E41;
+FA5A;7F72;7F72;7F72;7F72;
+FA5B;8005;8005;8005;8005;
+FA5C;81ED;81ED;81ED;81ED;
+FA5D;8279;8279;8279;8279;
+FA5E;8279;8279;8279;8279;
+FA5F;8457;8457;8457;8457;
+FA60;8910;8910;8910;8910;
+FA61;8996;8996;8996;8996;
+FA62;8B01;8B01;8B01;8B01;
+FA63;8B39;8B39;8B39;8B39;
+FA64;8CD3;8CD3;8CD3;8CD3;
+FA65;8D08;8D08;8D08;8D08;
+FA66;8FB6;8FB6;8FB6;8FB6;
+FA67;9038;9038;9038;9038;
+FA68;96E3;96E3;96E3;96E3;
+FA69;97FF;97FF;97FF;97FF;
+FA6A;983B;983B;983B;983B;
+FA70;4E26;4E26;4E26;4E26;
+FA71;51B5;51B5;51B5;51B5;
+FA72;5168;5168;5168;5168;
+FA73;4F80;4F80;4F80;4F80;
+FA74;5145;5145;5145;5145;
+FA75;5180;5180;5180;5180;
+FA76;52C7;52C7;52C7;52C7;
+FA77;52FA;52FA;52FA;52FA;
+FA78;559D;559D;559D;559D;
+FA79;5555;5555;5555;5555;
+FA7A;5599;5599;5599;5599;
+FA7B;55E2;55E2;55E2;55E2;
+FA7C;585A;585A;585A;585A;
+FA7D;58B3;58B3;58B3;58B3;
+FA7E;5944;5944;5944;5944;
+FA7F;5954;5954;5954;5954;
+FA80;5A62;5A62;5A62;5A62;
+FA81;5B28;5B28;5B28;5B28;
+FA82;5ED2;5ED2;5ED2;5ED2;
+FA83;5ED9;5ED9;5ED9;5ED9;
+FA84;5F69;5F69;5F69;5F69;
+FA85;5FAD;5FAD;5FAD;5FAD;
+FA86;60D8;60D8;60D8;60D8;
+FA87;614E;614E;614E;614E;
+FA88;6108;6108;6108;6108;
+FA89;618E;618E;618E;618E;
+FA8A;6160;6160;6160;6160;
+FA8B;61F2;61F2;61F2;61F2;
+FA8C;6234;6234;6234;6234;
+FA8D;63C4;63C4;63C4;63C4;
+FA8E;641C;641C;641C;641C;
+FA8F;6452;6452;6452;6452;
+FA90;6556;6556;6556;6556;
+FA91;6674;6674;6674;6674;
+FA92;6717;6717;6717;6717;
+FA93;671B;671B;671B;671B;
+FA94;6756;6756;6756;6756;
+FA95;6B79;6B79;6B79;6B79;
+FA96;6BBA;6BBA;6BBA;6BBA;
+FA97;6D41;6D41;6D41;6D41;
+FA98;6EDB;6EDB;6EDB;6EDB;
+FA99;6ECB;6ECB;6ECB;6ECB;
+FA9A;6F22;6F22;6F22;6F22;
+FA9B;701E;701E;701E;701E;
+FA9C;716E;716E;716E;716E;
+FA9D;77A7;77A7;77A7;77A7;
+FA9E;7235;7235;7235;7235;
+FA9F;72AF;72AF;72AF;72AF;
+FAA0;732A;732A;732A;732A;
+FAA1;7471;7471;7471;7471;
+FAA2;7506;7506;7506;7506;
+FAA3;753B;753B;753B;753B;
+FAA4;761D;761D;761D;761D;
+FAA5;761F;761F;761F;761F;
+FAA6;76CA;76CA;76CA;76CA;
+FAA7;76DB;76DB;76DB;76DB;
+FAA8;76F4;76F4;76F4;76F4;
+FAA9;774A;774A;774A;774A;
+FAAA;7740;7740;7740;7740;
+FAAB;78CC;78CC;78CC;78CC;
+FAAC;7AB1;7AB1;7AB1;7AB1;
+FAAD;7BC0;7BC0;7BC0;7BC0;
+FAAE;7C7B;7C7B;7C7B;7C7B;
+FAAF;7D5B;7D5B;7D5B;7D5B;
+FAB0;7DF4;7DF4;7DF4;7DF4;
+FAB1;7F3E;7F3E;7F3E;7F3E;
+FAB2;8005;8005;8005;8005;
+FAB3;8352;8352;8352;8352;
+FAB4;83EF;83EF;83EF;83EF;
+FAB5;8779;8779;8779;8779;
+FAB6;8941;8941;8941;8941;
+FAB7;8986;8986;8986;8986;
+FAB8;8996;8996;8996;8996;
+FAB9;8ABF;8ABF;8ABF;8ABF;
+FABA;8AF8;8AF8;8AF8;8AF8;
+FABB;8ACB;8ACB;8ACB;8ACB;
+FABC;8B01;8B01;8B01;8B01;
+FABD;8AFE;8AFE;8AFE;8AFE;
+FABE;8AED;8AED;8AED;8AED;
+FABF;8B39;8B39;8B39;8B39;
+FAC0;8B8A;8B8A;8B8A;8B8A;
+FAC1;8D08;8D08;8D08;8D08;
+FAC2;8F38;8F38;8F38;8F38;
+FAC3;9072;9072;9072;9072;
+FAC4;9199;9199;9199;9199;
+FAC5;9276;9276;9276;9276;
+FAC6;967C;967C;967C;967C;
+FAC7;96E3;96E3;96E3;96E3;
+FAC8;9756;9756;9756;9756;
+FAC9;97DB;97DB;97DB;97DB;
+FACA;97FF;97FF;97FF;97FF;
+FACB;980B;980B;980B;980B;
+FACC;983B;983B;983B;983B;
+FACD;9B12;9B12;9B12;9B12;
+FACE;9F9C;9F9C;9F9C;9F9C;
+FACF;2284A;2284A;2284A;2284A;
+FAD0;22844;22844;22844;22844;
+FAD1;233D5;233D5;233D5;233D5;
+FAD2;3B9D;3B9D;3B9D;3B9D;
+FAD3;4018;4018;4018;4018;
+FAD4;4039;4039;4039;4039;
+FAD5;25249;25249;25249;25249;
+FAD6;25CD0;25CD0;25CD0;25CD0;
+FAD7;27ED3;27ED3;27ED3;27ED3;
+FAD8;9F43;9F43;9F43;9F43;
+FAD9;9F8E;9F8E;9F8E;9F8E;
+FB00;FB00;FB00;0066 0066;0066 0066;
+FB01;FB01;FB01;0066 0069;0066 0069;
+FB02;FB02;FB02;0066 006C;0066 006C;
+FB03;FB03;FB03;0066 0066 0069;0066 0066 0069;
+FB04;FB04;FB04;0066 0066 006C;0066 0066 006C;
+FB05;FB05;FB05;0073 0074;0073 0074;
+FB06;FB06;FB06;0073 0074;0073 0074;
+FB13;FB13;FB13;0574 0576;0574 0576;
+FB14;FB14;FB14;0574 0565;0574 0565;
+FB15;FB15;FB15;0574 056B;0574 056B;
+FB16;FB16;FB16;057E 0576;057E 0576;
+FB17;FB17;FB17;0574 056D;0574 056D;
+FB1D;05D9 05B4;05D9 05B4;05D9 05B4;05D9 05B4;
+FB1F;05F2 05B7;05F2 05B7;05F2 05B7;05F2 05B7;
+FB20;FB20;FB20;05E2;05E2;
+FB21;FB21;FB21;05D0;05D0;
+FB22;FB22;FB22;05D3;05D3;
+FB23;FB23;FB23;05D4;05D4;
+FB24;FB24;FB24;05DB;05DB;
+FB25;FB25;FB25;05DC;05DC;
+FB26;FB26;FB26;05DD;05DD;
+FB27;FB27;FB27;05E8;05E8;
+FB28;FB28;FB28;05EA;05EA;
+FB29;FB29;FB29;002B;002B;
+FB2A;05E9 05C1;05E9 05C1;05E9 05C1;05E9 05C1;
+FB2B;05E9 05C2;05E9 05C2;05E9 05C2;05E9 05C2;
+FB2C;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;05E9 05BC 05C1;
+FB2D;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;05E9 05BC 05C2;
+FB2E;05D0 05B7;05D0 05B7;05D0 05B7;05D0 05B7;
+FB2F;05D0 05B8;05D0 05B8;05D0 05B8;05D0 05B8;
+FB30;05D0 05BC;05D0 05BC;05D0 05BC;05D0 05BC;
+FB31;05D1 05BC;05D1 05BC;05D1 05BC;05D1 05BC;
+FB32;05D2 05BC;05D2 05BC;05D2 05BC;05D2 05BC;
+FB33;05D3 05BC;05D3 05BC;05D3 05BC;05D3 05BC;
+FB34;05D4 05BC;05D4 05BC;05D4 05BC;05D4 05BC;
+FB35;05D5 05BC;05D5 05BC;05D5 05BC;05D5 05BC;
+FB36;05D6 05BC;05D6 05BC;05D6 05BC;05D6 05BC;
+FB38;05D8 05BC;05D8 05BC;05D8 05BC;05D8 05BC;
+FB39;05D9 05BC;05D9 05BC;05D9 05BC;05D9 05BC;
+FB3A;05DA 05BC;05DA 05BC;05DA 05BC;05DA 05BC;
+FB3B;05DB 05BC;05DB 05BC;05DB 05BC;05DB 05BC;
+FB3C;05DC 05BC;05DC 05BC;05DC 05BC;05DC 05BC;
+FB3E;05DE 05BC;05DE 05BC;05DE 05BC;05DE 05BC;
+FB40;05E0 05BC;05E0 05BC;05E0 05BC;05E0 05BC;
+FB41;05E1 05BC;05E1 05BC;05E1 05BC;05E1 05BC;
+FB43;05E3 05BC;05E3 05BC;05E3 05BC;05E3 05BC;
+FB44;05E4 05BC;05E4 05BC;05E4 05BC;05E4 05BC;
+FB46;05E6 05BC;05E6 05BC;05E6 05BC;05E6 05BC;
+FB47;05E7 05BC;05E7 05BC;05E7 05BC;05E7 05BC;
+FB48;05E8 05BC;05E8 05BC;05E8 05BC;05E8 05BC;
+FB49;05E9 05BC;05E9 05BC;05E9 05BC;05E9 05BC;
+FB4A;05EA 05BC;05EA 05BC;05EA 05BC;05EA 05BC;
+FB4B;05D5 05B9;05D5 05B9;05D5 05B9;05D5 05B9;
+FB4C;05D1 05BF;05D1 05BF;05D1 05BF;05D1 05BF;
+FB4D;05DB 05BF;05DB 05BF;05DB 05BF;05DB 05BF;
+FB4E;05E4 05BF;05E4 05BF;05E4 05BF;05E4 05BF;
+FB4F;FB4F;FB4F;05D0 05DC;05D0 05DC;
+FB50;FB50;FB50;0671;0671;
+FB51;FB51;FB51;0671;0671;
+FB52;FB52;FB52;067B;067B;
+FB53;FB53;FB53;067B;067B;
+FB54;FB54;FB54;067B;067B;
+FB55;FB55;FB55;067B;067B;
+FB56;FB56;FB56;067E;067E;
+FB57;FB57;FB57;067E;067E;
+FB58;FB58;FB58;067E;067E;
+FB59;FB59;FB59;067E;067E;
+FB5A;FB5A;FB5A;0680;0680;
+FB5B;FB5B;FB5B;0680;0680;
+FB5C;FB5C;FB5C;0680;0680;
+FB5D;FB5D;FB5D;0680;0680;
+FB5E;FB5E;FB5E;067A;067A;
+FB5F;FB5F;FB5F;067A;067A;
+FB60;FB60;FB60;067A;067A;
+FB61;FB61;FB61;067A;067A;
+FB62;FB62;FB62;067F;067F;
+FB63;FB63;FB63;067F;067F;
+FB64;FB64;FB64;067F;067F;
+FB65;FB65;FB65;067F;067F;
+FB66;FB66;FB66;0679;0679;
+FB67;FB67;FB67;0679;0679;
+FB68;FB68;FB68;0679;0679;
+FB69;FB69;FB69;0679;0679;
+FB6A;FB6A;FB6A;06A4;06A4;
+FB6B;FB6B;FB6B;06A4;06A4;
+FB6C;FB6C;FB6C;06A4;06A4;
+FB6D;FB6D;FB6D;06A4;06A4;
+FB6E;FB6E;FB6E;06A6;06A6;
+FB6F;FB6F;FB6F;06A6;06A6;
+FB70;FB70;FB70;06A6;06A6;
+FB71;FB71;FB71;06A6;06A6;
+FB72;FB72;FB72;0684;0684;
+FB73;FB73;FB73;0684;0684;
+FB74;FB74;FB74;0684;0684;
+FB75;FB75;FB75;0684;0684;
+FB76;FB76;FB76;0683;0683;
+FB77;FB77;FB77;0683;0683;
+FB78;FB78;FB78;0683;0683;
+FB79;FB79;FB79;0683;0683;
+FB7A;FB7A;FB7A;0686;0686;
+FB7B;FB7B;FB7B;0686;0686;
+FB7C;FB7C;FB7C;0686;0686;
+FB7D;FB7D;FB7D;0686;0686;
+FB7E;FB7E;FB7E;0687;0687;
+FB7F;FB7F;FB7F;0687;0687;
+FB80;FB80;FB80;0687;0687;
+FB81;FB81;FB81;0687;0687;
+FB82;FB82;FB82;068D;068D;
+FB83;FB83;FB83;068D;068D;
+FB84;FB84;FB84;068C;068C;
+FB85;FB85;FB85;068C;068C;
+FB86;FB86;FB86;068E;068E;
+FB87;FB87;FB87;068E;068E;
+FB88;FB88;FB88;0688;0688;
+FB89;FB89;FB89;0688;0688;
+FB8A;FB8A;FB8A;0698;0698;
+FB8B;FB8B;FB8B;0698;0698;
+FB8C;FB8C;FB8C;0691;0691;
+FB8D;FB8D;FB8D;0691;0691;
+FB8E;FB8E;FB8E;06A9;06A9;
+FB8F;FB8F;FB8F;06A9;06A9;
+FB90;FB90;FB90;06A9;06A9;
+FB91;FB91;FB91;06A9;06A9;
+FB92;FB92;FB92;06AF;06AF;
+FB93;FB93;FB93;06AF;06AF;
+FB94;FB94;FB94;06AF;06AF;
+FB95;FB95;FB95;06AF;06AF;
+FB96;FB96;FB96;06B3;06B3;
+FB97;FB97;FB97;06B3;06B3;
+FB98;FB98;FB98;06B3;06B3;
+FB99;FB99;FB99;06B3;06B3;
+FB9A;FB9A;FB9A;06B1;06B1;
+FB9B;FB9B;FB9B;06B1;06B1;
+FB9C;FB9C;FB9C;06B1;06B1;
+FB9D;FB9D;FB9D;06B1;06B1;
+FB9E;FB9E;FB9E;06BA;06BA;
+FB9F;FB9F;FB9F;06BA;06BA;
+FBA0;FBA0;FBA0;06BB;06BB;
+FBA1;FBA1;FBA1;06BB;06BB;
+FBA2;FBA2;FBA2;06BB;06BB;
+FBA3;FBA3;FBA3;06BB;06BB;
+FBA4;FBA4;FBA4;06C0;06D5 0654;
+FBA5;FBA5;FBA5;06C0;06D5 0654;
+FBA6;FBA6;FBA6;06C1;06C1;
+FBA7;FBA7;FBA7;06C1;06C1;
+FBA8;FBA8;FBA8;06C1;06C1;
+FBA9;FBA9;FBA9;06C1;06C1;
+FBAA;FBAA;FBAA;06BE;06BE;
+FBAB;FBAB;FBAB;06BE;06BE;
+FBAC;FBAC;FBAC;06BE;06BE;
+FBAD;FBAD;FBAD;06BE;06BE;
+FBAE;FBAE;FBAE;06D2;06D2;
+FBAF;FBAF;FBAF;06D2;06D2;
+FBB0;FBB0;FBB0;06D3;06D2 0654;
+FBB1;FBB1;FBB1;06D3;06D2 0654;
+FBD3;FBD3;FBD3;06AD;06AD;
+FBD4;FBD4;FBD4;06AD;06AD;
+FBD5;FBD5;FBD5;06AD;06AD;
+FBD6;FBD6;FBD6;06AD;06AD;
+FBD7;FBD7;FBD7;06C7;06C7;
+FBD8;FBD8;FBD8;06C7;06C7;
+FBD9;FBD9;FBD9;06C6;06C6;
+FBDA;FBDA;FBDA;06C6;06C6;
+FBDB;FBDB;FBDB;06C8;06C8;
+FBDC;FBDC;FBDC;06C8;06C8;
+FBDD;FBDD;FBDD;06C7 0674;06C7 0674;
+FBDE;FBDE;FBDE;06CB;06CB;
+FBDF;FBDF;FBDF;06CB;06CB;
+FBE0;FBE0;FBE0;06C5;06C5;
+FBE1;FBE1;FBE1;06C5;06C5;
+FBE2;FBE2;FBE2;06C9;06C9;
+FBE3;FBE3;FBE3;06C9;06C9;
+FBE4;FBE4;FBE4;06D0;06D0;
+FBE5;FBE5;FBE5;06D0;06D0;
+FBE6;FBE6;FBE6;06D0;06D0;
+FBE7;FBE7;FBE7;06D0;06D0;
+FBE8;FBE8;FBE8;0649;0649;
+FBE9;FBE9;FBE9;0649;0649;
+FBEA;FBEA;FBEA;0626 0627;064A 0654 0627;
+FBEB;FBEB;FBEB;0626 0627;064A 0654 0627;
+FBEC;FBEC;FBEC;0626 06D5;064A 0654 06D5;
+FBED;FBED;FBED;0626 06D5;064A 0654 06D5;
+FBEE;FBEE;FBEE;0626 0648;064A 0654 0648;
+FBEF;FBEF;FBEF;0626 0648;064A 0654 0648;
+FBF0;FBF0;FBF0;0626 06C7;064A 0654 06C7;
+FBF1;FBF1;FBF1;0626 06C7;064A 0654 06C7;
+FBF2;FBF2;FBF2;0626 06C6;064A 0654 06C6;
+FBF3;FBF3;FBF3;0626 06C6;064A 0654 06C6;
+FBF4;FBF4;FBF4;0626 06C8;064A 0654 06C8;
+FBF5;FBF5;FBF5;0626 06C8;064A 0654 06C8;
+FBF6;FBF6;FBF6;0626 06D0;064A 0654 06D0;
+FBF7;FBF7;FBF7;0626 06D0;064A 0654 06D0;
+FBF8;FBF8;FBF8;0626 06D0;064A 0654 06D0;
+FBF9;FBF9;FBF9;0626 0649;064A 0654 0649;
+FBFA;FBFA;FBFA;0626 0649;064A 0654 0649;
+FBFB;FBFB;FBFB;0626 0649;064A 0654 0649;
+FBFC;FBFC;FBFC;06CC;06CC;
+FBFD;FBFD;FBFD;06CC;06CC;
+FBFE;FBFE;FBFE;06CC;06CC;
+FBFF;FBFF;FBFF;06CC;06CC;
+FC00;FC00;FC00;0626 062C;064A 0654 062C;
+FC01;FC01;FC01;0626 062D;064A 0654 062D;
+FC02;FC02;FC02;0626 0645;064A 0654 0645;
+FC03;FC03;FC03;0626 0649;064A 0654 0649;
+FC04;FC04;FC04;0626 064A;064A 0654 064A;
+FC05;FC05;FC05;0628 062C;0628 062C;
+FC06;FC06;FC06;0628 062D;0628 062D;
+FC07;FC07;FC07;0628 062E;0628 062E;
+FC08;FC08;FC08;0628 0645;0628 0645;
+FC09;FC09;FC09;0628 0649;0628 0649;
+FC0A;FC0A;FC0A;0628 064A;0628 064A;
+FC0B;FC0B;FC0B;062A 062C;062A 062C;
+FC0C;FC0C;FC0C;062A 062D;062A 062D;
+FC0D;FC0D;FC0D;062A 062E;062A 062E;
+FC0E;FC0E;FC0E;062A 0645;062A 0645;
+FC0F;FC0F;FC0F;062A 0649;062A 0649;
+FC10;FC10;FC10;062A 064A;062A 064A;
+FC11;FC11;FC11;062B 062C;062B 062C;
+FC12;FC12;FC12;062B 0645;062B 0645;
+FC13;FC13;FC13;062B 0649;062B 0649;
+FC14;FC14;FC14;062B 064A;062B 064A;
+FC15;FC15;FC15;062C 062D;062C 062D;
+FC16;FC16;FC16;062C 0645;062C 0645;
+FC17;FC17;FC17;062D 062C;062D 062C;
+FC18;FC18;FC18;062D 0645;062D 0645;
+FC19;FC19;FC19;062E 062C;062E 062C;
+FC1A;FC1A;FC1A;062E 062D;062E 062D;
+FC1B;FC1B;FC1B;062E 0645;062E 0645;
+FC1C;FC1C;FC1C;0633 062C;0633 062C;
+FC1D;FC1D;FC1D;0633 062D;0633 062D;
+FC1E;FC1E;FC1E;0633 062E;0633 062E;
+FC1F;FC1F;FC1F;0633 0645;0633 0645;
+FC20;FC20;FC20;0635 062D;0635 062D;
+FC21;FC21;FC21;0635 0645;0635 0645;
+FC22;FC22;FC22;0636 062C;0636 062C;
+FC23;FC23;FC23;0636 062D;0636 062D;
+FC24;FC24;FC24;0636 062E;0636 062E;
+FC25;FC25;FC25;0636 0645;0636 0645;
+FC26;FC26;FC26;0637 062D;0637 062D;
+FC27;FC27;FC27;0637 0645;0637 0645;
+FC28;FC28;FC28;0638 0645;0638 0645;
+FC29;FC29;FC29;0639 062C;0639 062C;
+FC2A;FC2A;FC2A;0639 0645;0639 0645;
+FC2B;FC2B;FC2B;063A 062C;063A 062C;
+FC2C;FC2C;FC2C;063A 0645;063A 0645;
+FC2D;FC2D;FC2D;0641 062C;0641 062C;
+FC2E;FC2E;FC2E;0641 062D;0641 062D;
+FC2F;FC2F;FC2F;0641 062E;0641 062E;
+FC30;FC30;FC30;0641 0645;0641 0645;
+FC31;FC31;FC31;0641 0649;0641 0649;
+FC32;FC32;FC32;0641 064A;0641 064A;
+FC33;FC33;FC33;0642 062D;0642 062D;
+FC34;FC34;FC34;0642 0645;0642 0645;
+FC35;FC35;FC35;0642 0649;0642 0649;
+FC36;FC36;FC36;0642 064A;0642 064A;
+FC37;FC37;FC37;0643 0627;0643 0627;
+FC38;FC38;FC38;0643 062C;0643 062C;
+FC39;FC39;FC39;0643 062D;0643 062D;
+FC3A;FC3A;FC3A;0643 062E;0643 062E;
+FC3B;FC3B;FC3B;0643 0644;0643 0644;
+FC3C;FC3C;FC3C;0643 0645;0643 0645;
+FC3D;FC3D;FC3D;0643 0649;0643 0649;
+FC3E;FC3E;FC3E;0643 064A;0643 064A;
+FC3F;FC3F;FC3F;0644 062C;0644 062C;
+FC40;FC40;FC40;0644 062D;0644 062D;
+FC41;FC41;FC41;0644 062E;0644 062E;
+FC42;FC42;FC42;0644 0645;0644 0645;
+FC43;FC43;FC43;0644 0649;0644 0649;
+FC44;FC44;FC44;0644 064A;0644 064A;
+FC45;FC45;FC45;0645 062C;0645 062C;
+FC46;FC46;FC46;0645 062D;0645 062D;
+FC47;FC47;FC47;0645 062E;0645 062E;
+FC48;FC48;FC48;0645 0645;0645 0645;
+FC49;FC49;FC49;0645 0649;0645 0649;
+FC4A;FC4A;FC4A;0645 064A;0645 064A;
+FC4B;FC4B;FC4B;0646 062C;0646 062C;
+FC4C;FC4C;FC4C;0646 062D;0646 062D;
+FC4D;FC4D;FC4D;0646 062E;0646 062E;
+FC4E;FC4E;FC4E;0646 0645;0646 0645;
+FC4F;FC4F;FC4F;0646 0649;0646 0649;
+FC50;FC50;FC50;0646 064A;0646 064A;
+FC51;FC51;FC51;0647 062C;0647 062C;
+FC52;FC52;FC52;0647 0645;0647 0645;
+FC53;FC53;FC53;0647 0649;0647 0649;
+FC54;FC54;FC54;0647 064A;0647 064A;
+FC55;FC55;FC55;064A 062C;064A 062C;
+FC56;FC56;FC56;064A 062D;064A 062D;
+FC57;FC57;FC57;064A 062E;064A 062E;
+FC58;FC58;FC58;064A 0645;064A 0645;
+FC59;FC59;FC59;064A 0649;064A 0649;
+FC5A;FC5A;FC5A;064A 064A;064A 064A;
+FC5B;FC5B;FC5B;0630 0670;0630 0670;
+FC5C;FC5C;FC5C;0631 0670;0631 0670;
+FC5D;FC5D;FC5D;0649 0670;0649 0670;
+FC5E;FC5E;FC5E;0020 064C 0651;0020 064C 0651;
+FC5F;FC5F;FC5F;0020 064D 0651;0020 064D 0651;
+FC60;FC60;FC60;0020 064E 0651;0020 064E 0651;
+FC61;FC61;FC61;0020 064F 0651;0020 064F 0651;
+FC62;FC62;FC62;0020 0650 0651;0020 0650 0651;
+FC63;FC63;FC63;0020 0651 0670;0020 0651 0670;
+FC64;FC64;FC64;0626 0631;064A 0654 0631;
+FC65;FC65;FC65;0626 0632;064A 0654 0632;
+FC66;FC66;FC66;0626 0645;064A 0654 0645;
+FC67;FC67;FC67;0626 0646;064A 0654 0646;
+FC68;FC68;FC68;0626 0649;064A 0654 0649;
+FC69;FC69;FC69;0626 064A;064A 0654 064A;
+FC6A;FC6A;FC6A;0628 0631;0628 0631;
+FC6B;FC6B;FC6B;0628 0632;0628 0632;
+FC6C;FC6C;FC6C;0628 0645;0628 0645;
+FC6D;FC6D;FC6D;0628 0646;0628 0646;
+FC6E;FC6E;FC6E;0628 0649;0628 0649;
+FC6F;FC6F;FC6F;0628 064A;0628 064A;
+FC70;FC70;FC70;062A 0631;062A 0631;
+FC71;FC71;FC71;062A 0632;062A 0632;
+FC72;FC72;FC72;062A 0645;062A 0645;
+FC73;FC73;FC73;062A 0646;062A 0646;
+FC74;FC74;FC74;062A 0649;062A 0649;
+FC75;FC75;FC75;062A 064A;062A 064A;
+FC76;FC76;FC76;062B 0631;062B 0631;
+FC77;FC77;FC77;062B 0632;062B 0632;
+FC78;FC78;FC78;062B 0645;062B 0645;
+FC79;FC79;FC79;062B 0646;062B 0646;
+FC7A;FC7A;FC7A;062B 0649;062B 0649;
+FC7B;FC7B;FC7B;062B 064A;062B 064A;
+FC7C;FC7C;FC7C;0641 0649;0641 0649;
+FC7D;FC7D;FC7D;0641 064A;0641 064A;
+FC7E;FC7E;FC7E;0642 0649;0642 0649;
+FC7F;FC7F;FC7F;0642 064A;0642 064A;
+FC80;FC80;FC80;0643 0627;0643 0627;
+FC81;FC81;FC81;0643 0644;0643 0644;
+FC82;FC82;FC82;0643 0645;0643 0645;
+FC83;FC83;FC83;0643 0649;0643 0649;
+FC84;FC84;FC84;0643 064A;0643 064A;
+FC85;FC85;FC85;0644 0645;0644 0645;
+FC86;FC86;FC86;0644 0649;0644 0649;
+FC87;FC87;FC87;0644 064A;0644 064A;
+FC88;FC88;FC88;0645 0627;0645 0627;
+FC89;FC89;FC89;0645 0645;0645 0645;
+FC8A;FC8A;FC8A;0646 0631;0646 0631;
+FC8B;FC8B;FC8B;0646 0632;0646 0632;
+FC8C;FC8C;FC8C;0646 0645;0646 0645;
+FC8D;FC8D;FC8D;0646 0646;0646 0646;
+FC8E;FC8E;FC8E;0646 0649;0646 0649;
+FC8F;FC8F;FC8F;0646 064A;0646 064A;
+FC90;FC90;FC90;0649 0670;0649 0670;
+FC91;FC91;FC91;064A 0631;064A 0631;
+FC92;FC92;FC92;064A 0632;064A 0632;
+FC93;FC93;FC93;064A 0645;064A 0645;
+FC94;FC94;FC94;064A 0646;064A 0646;
+FC95;FC95;FC95;064A 0649;064A 0649;
+FC96;FC96;FC96;064A 064A;064A 064A;
+FC97;FC97;FC97;0626 062C;064A 0654 062C;
+FC98;FC98;FC98;0626 062D;064A 0654 062D;
+FC99;FC99;FC99;0626 062E;064A 0654 062E;
+FC9A;FC9A;FC9A;0626 0645;064A 0654 0645;
+FC9B;FC9B;FC9B;0626 0647;064A 0654 0647;
+FC9C;FC9C;FC9C;0628 062C;0628 062C;
+FC9D;FC9D;FC9D;0628 062D;0628 062D;
+FC9E;FC9E;FC9E;0628 062E;0628 062E;
+FC9F;FC9F;FC9F;0628 0645;0628 0645;
+FCA0;FCA0;FCA0;0628 0647;0628 0647;
+FCA1;FCA1;FCA1;062A 062C;062A 062C;
+FCA2;FCA2;FCA2;062A 062D;062A 062D;
+FCA3;FCA3;FCA3;062A 062E;062A 062E;
+FCA4;FCA4;FCA4;062A 0645;062A 0645;
+FCA5;FCA5;FCA5;062A 0647;062A 0647;
+FCA6;FCA6;FCA6;062B 0645;062B 0645;
+FCA7;FCA7;FCA7;062C 062D;062C 062D;
+FCA8;FCA8;FCA8;062C 0645;062C 0645;
+FCA9;FCA9;FCA9;062D 062C;062D 062C;
+FCAA;FCAA;FCAA;062D 0645;062D 0645;
+FCAB;FCAB;FCAB;062E 062C;062E 062C;
+FCAC;FCAC;FCAC;062E 0645;062E 0645;
+FCAD;FCAD;FCAD;0633 062C;0633 062C;
+FCAE;FCAE;FCAE;0633 062D;0633 062D;
+FCAF;FCAF;FCAF;0633 062E;0633 062E;
+FCB0;FCB0;FCB0;0633 0645;0633 0645;
+FCB1;FCB1;FCB1;0635 062D;0635 062D;
+FCB2;FCB2;FCB2;0635 062E;0635 062E;
+FCB3;FCB3;FCB3;0635 0645;0635 0645;
+FCB4;FCB4;FCB4;0636 062C;0636 062C;
+FCB5;FCB5;FCB5;0636 062D;0636 062D;
+FCB6;FCB6;FCB6;0636 062E;0636 062E;
+FCB7;FCB7;FCB7;0636 0645;0636 0645;
+FCB8;FCB8;FCB8;0637 062D;0637 062D;
+FCB9;FCB9;FCB9;0638 0645;0638 0645;
+FCBA;FCBA;FCBA;0639 062C;0639 062C;
+FCBB;FCBB;FCBB;0639 0645;0639 0645;
+FCBC;FCBC;FCBC;063A 062C;063A 062C;
+FCBD;FCBD;FCBD;063A 0645;063A 0645;
+FCBE;FCBE;FCBE;0641 062C;0641 062C;
+FCBF;FCBF;FCBF;0641 062D;0641 062D;
+FCC0;FCC0;FCC0;0641 062E;0641 062E;
+FCC1;FCC1;FCC1;0641 0645;0641 0645;
+FCC2;FCC2;FCC2;0642 062D;0642 062D;
+FCC3;FCC3;FCC3;0642 0645;0642 0645;
+FCC4;FCC4;FCC4;0643 062C;0643 062C;
+FCC5;FCC5;FCC5;0643 062D;0643 062D;
+FCC6;FCC6;FCC6;0643 062E;0643 062E;
+FCC7;FCC7;FCC7;0643 0644;0643 0644;
+FCC8;FCC8;FCC8;0643 0645;0643 0645;
+FCC9;FCC9;FCC9;0644 062C;0644 062C;
+FCCA;FCCA;FCCA;0644 062D;0644 062D;
+FCCB;FCCB;FCCB;0644 062E;0644 062E;
+FCCC;FCCC;FCCC;0644 0645;0644 0645;
+FCCD;FCCD;FCCD;0644 0647;0644 0647;
+FCCE;FCCE;FCCE;0645 062C;0645 062C;
+FCCF;FCCF;FCCF;0645 062D;0645 062D;
+FCD0;FCD0;FCD0;0645 062E;0645 062E;
+FCD1;FCD1;FCD1;0645 0645;0645 0645;
+FCD2;FCD2;FCD2;0646 062C;0646 062C;
+FCD3;FCD3;FCD3;0646 062D;0646 062D;
+FCD4;FCD4;FCD4;0646 062E;0646 062E;
+FCD5;FCD5;FCD5;0646 0645;0646 0645;
+FCD6;FCD6;FCD6;0646 0647;0646 0647;
+FCD7;FCD7;FCD7;0647 062C;0647 062C;
+FCD8;FCD8;FCD8;0647 0645;0647 0645;
+FCD9;FCD9;FCD9;0647 0670;0647 0670;
+FCDA;FCDA;FCDA;064A 062C;064A 062C;
+FCDB;FCDB;FCDB;064A 062D;064A 062D;
+FCDC;FCDC;FCDC;064A 062E;064A 062E;
+FCDD;FCDD;FCDD;064A 0645;064A 0645;
+FCDE;FCDE;FCDE;064A 0647;064A 0647;
+FCDF;FCDF;FCDF;0626 0645;064A 0654 0645;
+FCE0;FCE0;FCE0;0626 0647;064A 0654 0647;
+FCE1;FCE1;FCE1;0628 0645;0628 0645;
+FCE2;FCE2;FCE2;0628 0647;0628 0647;
+FCE3;FCE3;FCE3;062A 0645;062A 0645;
+FCE4;FCE4;FCE4;062A 0647;062A 0647;
+FCE5;FCE5;FCE5;062B 0645;062B 0645;
+FCE6;FCE6;FCE6;062B 0647;062B 0647;
+FCE7;FCE7;FCE7;0633 0645;0633 0645;
+FCE8;FCE8;FCE8;0633 0647;0633 0647;
+FCE9;FCE9;FCE9;0634 0645;0634 0645;
+FCEA;FCEA;FCEA;0634 0647;0634 0647;
+FCEB;FCEB;FCEB;0643 0644;0643 0644;
+FCEC;FCEC;FCEC;0643 0645;0643 0645;
+FCED;FCED;FCED;0644 0645;0644 0645;
+FCEE;FCEE;FCEE;0646 0645;0646 0645;
+FCEF;FCEF;FCEF;0646 0647;0646 0647;
+FCF0;FCF0;FCF0;064A 0645;064A 0645;
+FCF1;FCF1;FCF1;064A 0647;064A 0647;
+FCF2;FCF2;FCF2;0640 064E 0651;0640 064E 0651;
+FCF3;FCF3;FCF3;0640 064F 0651;0640 064F 0651;
+FCF4;FCF4;FCF4;0640 0650 0651;0640 0650 0651;
+FCF5;FCF5;FCF5;0637 0649;0637 0649;
+FCF6;FCF6;FCF6;0637 064A;0637 064A;
+FCF7;FCF7;FCF7;0639 0649;0639 0649;
+FCF8;FCF8;FCF8;0639 064A;0639 064A;
+FCF9;FCF9;FCF9;063A 0649;063A 0649;
+FCFA;FCFA;FCFA;063A 064A;063A 064A;
+FCFB;FCFB;FCFB;0633 0649;0633 0649;
+FCFC;FCFC;FCFC;0633 064A;0633 064A;
+FCFD;FCFD;FCFD;0634 0649;0634 0649;
+FCFE;FCFE;FCFE;0634 064A;0634 064A;
+FCFF;FCFF;FCFF;062D 0649;062D 0649;
+FD00;FD00;FD00;062D 064A;062D 064A;
+FD01;FD01;FD01;062C 0649;062C 0649;
+FD02;FD02;FD02;062C 064A;062C 064A;
+FD03;FD03;FD03;062E 0649;062E 0649;
+FD04;FD04;FD04;062E 064A;062E 064A;
+FD05;FD05;FD05;0635 0649;0635 0649;
+FD06;FD06;FD06;0635 064A;0635 064A;
+FD07;FD07;FD07;0636 0649;0636 0649;
+FD08;FD08;FD08;0636 064A;0636 064A;
+FD09;FD09;FD09;0634 062C;0634 062C;
+FD0A;FD0A;FD0A;0634 062D;0634 062D;
+FD0B;FD0B;FD0B;0634 062E;0634 062E;
+FD0C;FD0C;FD0C;0634 0645;0634 0645;
+FD0D;FD0D;FD0D;0634 0631;0634 0631;
+FD0E;FD0E;FD0E;0633 0631;0633 0631;
+FD0F;FD0F;FD0F;0635 0631;0635 0631;
+FD10;FD10;FD10;0636 0631;0636 0631;
+FD11;FD11;FD11;0637 0649;0637 0649;
+FD12;FD12;FD12;0637 064A;0637 064A;
+FD13;FD13;FD13;0639 0649;0639 0649;
+FD14;FD14;FD14;0639 064A;0639 064A;
+FD15;FD15;FD15;063A 0649;063A 0649;
+FD16;FD16;FD16;063A 064A;063A 064A;
+FD17;FD17;FD17;0633 0649;0633 0649;
+FD18;FD18;FD18;0633 064A;0633 064A;
+FD19;FD19;FD19;0634 0649;0634 0649;
+FD1A;FD1A;FD1A;0634 064A;0634 064A;
+FD1B;FD1B;FD1B;062D 0649;062D 0649;
+FD1C;FD1C;FD1C;062D 064A;062D 064A;
+FD1D;FD1D;FD1D;062C 0649;062C 0649;
+FD1E;FD1E;FD1E;062C 064A;062C 064A;
+FD1F;FD1F;FD1F;062E 0649;062E 0649;
+FD20;FD20;FD20;062E 064A;062E 064A;
+FD21;FD21;FD21;0635 0649;0635 0649;
+FD22;FD22;FD22;0635 064A;0635 064A;
+FD23;FD23;FD23;0636 0649;0636 0649;
+FD24;FD24;FD24;0636 064A;0636 064A;
+FD25;FD25;FD25;0634 062C;0634 062C;
+FD26;FD26;FD26;0634 062D;0634 062D;
+FD27;FD27;FD27;0634 062E;0634 062E;
+FD28;FD28;FD28;0634 0645;0634 0645;
+FD29;FD29;FD29;0634 0631;0634 0631;
+FD2A;FD2A;FD2A;0633 0631;0633 0631;
+FD2B;FD2B;FD2B;0635 0631;0635 0631;
+FD2C;FD2C;FD2C;0636 0631;0636 0631;
+FD2D;FD2D;FD2D;0634 062C;0634 062C;
+FD2E;FD2E;FD2E;0634 062D;0634 062D;
+FD2F;FD2F;FD2F;0634 062E;0634 062E;
+FD30;FD30;FD30;0634 0645;0634 0645;
+FD31;FD31;FD31;0633 0647;0633 0647;
+FD32;FD32;FD32;0634 0647;0634 0647;
+FD33;FD33;FD33;0637 0645;0637 0645;
+FD34;FD34;FD34;0633 062C;0633 062C;
+FD35;FD35;FD35;0633 062D;0633 062D;
+FD36;FD36;FD36;0633 062E;0633 062E;
+FD37;FD37;FD37;0634 062C;0634 062C;
+FD38;FD38;FD38;0634 062D;0634 062D;
+FD39;FD39;FD39;0634 062E;0634 062E;
+FD3A;FD3A;FD3A;0637 0645;0637 0645;
+FD3B;FD3B;FD3B;0638 0645;0638 0645;
+FD3C;FD3C;FD3C;0627 064B;0627 064B;
+FD3D;FD3D;FD3D;0627 064B;0627 064B;
+FD50;FD50;FD50;062A 062C 0645;062A 062C 0645;
+FD51;FD51;FD51;062A 062D 062C;062A 062D 062C;
+FD52;FD52;FD52;062A 062D 062C;062A 062D 062C;
+FD53;FD53;FD53;062A 062D 0645;062A 062D 0645;
+FD54;FD54;FD54;062A 062E 0645;062A 062E 0645;
+FD55;FD55;FD55;062A 0645 062C;062A 0645 062C;
+FD56;FD56;FD56;062A 0645 062D;062A 0645 062D;
+FD57;FD57;FD57;062A 0645 062E;062A 0645 062E;
+FD58;FD58;FD58;062C 0645 062D;062C 0645 062D;
+FD59;FD59;FD59;062C 0645 062D;062C 0645 062D;
+FD5A;FD5A;FD5A;062D 0645 064A;062D 0645 064A;
+FD5B;FD5B;FD5B;062D 0645 0649;062D 0645 0649;
+FD5C;FD5C;FD5C;0633 062D 062C;0633 062D 062C;
+FD5D;FD5D;FD5D;0633 062C 062D;0633 062C 062D;
+FD5E;FD5E;FD5E;0633 062C 0649;0633 062C 0649;
+FD5F;FD5F;FD5F;0633 0645 062D;0633 0645 062D;
+FD60;FD60;FD60;0633 0645 062D;0633 0645 062D;
+FD61;FD61;FD61;0633 0645 062C;0633 0645 062C;
+FD62;FD62;FD62;0633 0645 0645;0633 0645 0645;
+FD63;FD63;FD63;0633 0645 0645;0633 0645 0645;
+FD64;FD64;FD64;0635 062D 062D;0635 062D 062D;
+FD65;FD65;FD65;0635 062D 062D;0635 062D 062D;
+FD66;FD66;FD66;0635 0645 0645;0635 0645 0645;
+FD67;FD67;FD67;0634 062D 0645;0634 062D 0645;
+FD68;FD68;FD68;0634 062D 0645;0634 062D 0645;
+FD69;FD69;FD69;0634 062C 064A;0634 062C 064A;
+FD6A;FD6A;FD6A;0634 0645 062E;0634 0645 062E;
+FD6B;FD6B;FD6B;0634 0645 062E;0634 0645 062E;
+FD6C;FD6C;FD6C;0634 0645 0645;0634 0645 0645;
+FD6D;FD6D;FD6D;0634 0645 0645;0634 0645 0645;
+FD6E;FD6E;FD6E;0636 062D 0649;0636 062D 0649;
+FD6F;FD6F;FD6F;0636 062E 0645;0636 062E 0645;
+FD70;FD70;FD70;0636 062E 0645;0636 062E 0645;
+FD71;FD71;FD71;0637 0645 062D;0637 0645 062D;
+FD72;FD72;FD72;0637 0645 062D;0637 0645 062D;
+FD73;FD73;FD73;0637 0645 0645;0637 0645 0645;
+FD74;FD74;FD74;0637 0645 064A;0637 0645 064A;
+FD75;FD75;FD75;0639 062C 0645;0639 062C 0645;
+FD76;FD76;FD76;0639 0645 0645;0639 0645 0645;
+FD77;FD77;FD77;0639 0645 0645;0639 0645 0645;
+FD78;FD78;FD78;0639 0645 0649;0639 0645 0649;
+FD79;FD79;FD79;063A 0645 0645;063A 0645 0645;
+FD7A;FD7A;FD7A;063A 0645 064A;063A 0645 064A;
+FD7B;FD7B;FD7B;063A 0645 0649;063A 0645 0649;
+FD7C;FD7C;FD7C;0641 062E 0645;0641 062E 0645;
+FD7D;FD7D;FD7D;0641 062E 0645;0641 062E 0645;
+FD7E;FD7E;FD7E;0642 0645 062D;0642 0645 062D;
+FD7F;FD7F;FD7F;0642 0645 0645;0642 0645 0645;
+FD80;FD80;FD80;0644 062D 0645;0644 062D 0645;
+FD81;FD81;FD81;0644 062D 064A;0644 062D 064A;
+FD82;FD82;FD82;0644 062D 0649;0644 062D 0649;
+FD83;FD83;FD83;0644 062C 062C;0644 062C 062C;
+FD84;FD84;FD84;0644 062C 062C;0644 062C 062C;
+FD85;FD85;FD85;0644 062E 0645;0644 062E 0645;
+FD86;FD86;FD86;0644 062E 0645;0644 062E 0645;
+FD87;FD87;FD87;0644 0645 062D;0644 0645 062D;
+FD88;FD88;FD88;0644 0645 062D;0644 0645 062D;
+FD89;FD89;FD89;0645 062D 062C;0645 062D 062C;
+FD8A;FD8A;FD8A;0645 062D 0645;0645 062D 0645;
+FD8B;FD8B;FD8B;0645 062D 064A;0645 062D 064A;
+FD8C;FD8C;FD8C;0645 062C 062D;0645 062C 062D;
+FD8D;FD8D;FD8D;0645 062C 0645;0645 062C 0645;
+FD8E;FD8E;FD8E;0645 062E 062C;0645 062E 062C;
+FD8F;FD8F;FD8F;0645 062E 0645;0645 062E 0645;
+FD92;FD92;FD92;0645 062C 062E;0645 062C 062E;
+FD93;FD93;FD93;0647 0645 062C;0647 0645 062C;
+FD94;FD94;FD94;0647 0645 0645;0647 0645 0645;
+FD95;FD95;FD95;0646 062D 0645;0646 062D 0645;
+FD96;FD96;FD96;0646 062D 0649;0646 062D 0649;
+FD97;FD97;FD97;0646 062C 0645;0646 062C 0645;
+FD98;FD98;FD98;0646 062C 0645;0646 062C 0645;
+FD99;FD99;FD99;0646 062C 0649;0646 062C 0649;
+FD9A;FD9A;FD9A;0646 0645 064A;0646 0645 064A;
+FD9B;FD9B;FD9B;0646 0645 0649;0646 0645 0649;
+FD9C;FD9C;FD9C;064A 0645 0645;064A 0645 0645;
+FD9D;FD9D;FD9D;064A 0645 0645;064A 0645 0645;
+FD9E;FD9E;FD9E;0628 062E 064A;0628 062E 064A;
+FD9F;FD9F;FD9F;062A 062C 064A;062A 062C 064A;
+FDA0;FDA0;FDA0;062A 062C 0649;062A 062C 0649;
+FDA1;FDA1;FDA1;062A 062E 064A;062A 062E 064A;
+FDA2;FDA2;FDA2;062A 062E 0649;062A 062E 0649;
+FDA3;FDA3;FDA3;062A 0645 064A;062A 0645 064A;
+FDA4;FDA4;FDA4;062A 0645 0649;062A 0645 0649;
+FDA5;FDA5;FDA5;062C 0645 064A;062C 0645 064A;
+FDA6;FDA6;FDA6;062C 062D 0649;062C 062D 0649;
+FDA7;FDA7;FDA7;062C 0645 0649;062C 0645 0649;
+FDA8;FDA8;FDA8;0633 062E 0649;0633 062E 0649;
+FDA9;FDA9;FDA9;0635 062D 064A;0635 062D 064A;
+FDAA;FDAA;FDAA;0634 062D 064A;0634 062D 064A;
+FDAB;FDAB;FDAB;0636 062D 064A;0636 062D 064A;
+FDAC;FDAC;FDAC;0644 062C 064A;0644 062C 064A;
+FDAD;FDAD;FDAD;0644 0645 064A;0644 0645 064A;
+FDAE;FDAE;FDAE;064A 062D 064A;064A 062D 064A;
+FDAF;FDAF;FDAF;064A 062C 064A;064A 062C 064A;
+FDB0;FDB0;FDB0;064A 0645 064A;064A 0645 064A;
+FDB1;FDB1;FDB1;0645 0645 064A;0645 0645 064A;
+FDB2;FDB2;FDB2;0642 0645 064A;0642 0645 064A;
+FDB3;FDB3;FDB3;0646 062D 064A;0646 062D 064A;
+FDB4;FDB4;FDB4;0642 0645 062D;0642 0645 062D;
+FDB5;FDB5;FDB5;0644 062D 0645;0644 062D 0645;
+FDB6;FDB6;FDB6;0639 0645 064A;0639 0645 064A;
+FDB7;FDB7;FDB7;0643 0645 064A;0643 0645 064A;
+FDB8;FDB8;FDB8;0646 062C 062D;0646 062C 062D;
+FDB9;FDB9;FDB9;0645 062E 064A;0645 062E 064A;
+FDBA;FDBA;FDBA;0644 062C 0645;0644 062C 0645;
+FDBB;FDBB;FDBB;0643 0645 0645;0643 0645 0645;
+FDBC;FDBC;FDBC;0644 062C 0645;0644 062C 0645;
+FDBD;FDBD;FDBD;0646 062C 062D;0646 062C 062D;
+FDBE;FDBE;FDBE;062C 062D 064A;062C 062D 064A;
+FDBF;FDBF;FDBF;062D 062C 064A;062D 062C 064A;
+FDC0;FDC0;FDC0;0645 062C 064A;0645 062C 064A;
+FDC1;FDC1;FDC1;0641 0645 064A;0641 0645 064A;
+FDC2;FDC2;FDC2;0628 062D 064A;0628 062D 064A;
+FDC3;FDC3;FDC3;0643 0645 0645;0643 0645 0645;
+FDC4;FDC4;FDC4;0639 062C 0645;0639 062C 0645;
+FDC5;FDC5;FDC5;0635 0645 0645;0635 0645 0645;
+FDC6;FDC6;FDC6;0633 062E 064A;0633 062E 064A;
+FDC7;FDC7;FDC7;0646 062C 064A;0646 062C 064A;
+FDF0;FDF0;FDF0;0635 0644 06D2;0635 0644 06D2;
+FDF1;FDF1;FDF1;0642 0644 06D2;0642 0644 06D2;
+FDF2;FDF2;FDF2;0627 0644 0644 0647;0627 0644 0644 0647;
+FDF3;FDF3;FDF3;0627 0643 0628 0631;0627 0643 0628 0631;
+FDF4;FDF4;FDF4;0645 062D 0645 062F;0645 062D 0645 062F;
+FDF5;FDF5;FDF5;0635 0644 0639 0645;0635 0644 0639 0645;
+FDF6;FDF6;FDF6;0631 0633 0648 0644;0631 0633 0648 0644;
+FDF7;FDF7;FDF7;0639 0644 064A 0647;0639 0644 064A 0647;
+FDF8;FDF8;FDF8;0648 0633 0644 0645;0648 0633 0644 0645;
+FDF9;FDF9;FDF9;0635 0644 0649;0635 0644 0649;
+FDFA;FDFA;FDFA;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;
+FDFB;FDFB;FDFB;062C 0644 0020 062C 0644 0627 0644 0647;062C 0644 0020 062C 0644 0627 0644 0647;
+FDFC;FDFC;FDFC;0631 06CC 0627 0644;0631 06CC 0627 0644;
+FE10;FE10;FE10;002C;002C;
+FE11;FE11;FE11;3001;3001;
+FE12;FE12;FE12;3002;3002;
+FE13;FE13;FE13;003A;003A;
+FE14;FE14;FE14;003B;003B;
+FE15;FE15;FE15;0021;0021;
+FE16;FE16;FE16;003F;003F;
+FE17;FE17;FE17;3016;3016;
+FE18;FE18;FE18;3017;3017;
+FE19;FE19;FE19;002E 002E 002E;002E 002E 002E;
+FE30;FE30;FE30;002E 002E;002E 002E;
+FE31;FE31;FE31;2014;2014;
+FE32;FE32;FE32;2013;2013;
+FE33;FE33;FE33;005F;005F;
+FE34;FE34;FE34;005F;005F;
+FE35;FE35;FE35;0028;0028;
+FE36;FE36;FE36;0029;0029;
+FE37;FE37;FE37;007B;007B;
+FE38;FE38;FE38;007D;007D;
+FE39;FE39;FE39;3014;3014;
+FE3A;FE3A;FE3A;3015;3015;
+FE3B;FE3B;FE3B;3010;3010;
+FE3C;FE3C;FE3C;3011;3011;
+FE3D;FE3D;FE3D;300A;300A;
+FE3E;FE3E;FE3E;300B;300B;
+FE3F;FE3F;FE3F;3008;3008;
+FE40;FE40;FE40;3009;3009;
+FE41;FE41;FE41;300C;300C;
+FE42;FE42;FE42;300D;300D;
+FE43;FE43;FE43;300E;300E;
+FE44;FE44;FE44;300F;300F;
+FE47;FE47;FE47;005B;005B;
+FE48;FE48;FE48;005D;005D;
+FE49;FE49;FE49;0020 0305;0020 0305;
+FE4A;FE4A;FE4A;0020 0305;0020 0305;
+FE4B;FE4B;FE4B;0020 0305;0020 0305;
+FE4C;FE4C;FE4C;0020 0305;0020 0305;
+FE4D;FE4D;FE4D;005F;005F;
+FE4E;FE4E;FE4E;005F;005F;
+FE4F;FE4F;FE4F;005F;005F;
+FE50;FE50;FE50;002C;002C;
+FE51;FE51;FE51;3001;3001;
+FE52;FE52;FE52;002E;002E;
+FE54;FE54;FE54;003B;003B;
+FE55;FE55;FE55;003A;003A;
+FE56;FE56;FE56;003F;003F;
+FE57;FE57;FE57;0021;0021;
+FE58;FE58;FE58;2014;2014;
+FE59;FE59;FE59;0028;0028;
+FE5A;FE5A;FE5A;0029;0029;
+FE5B;FE5B;FE5B;007B;007B;
+FE5C;FE5C;FE5C;007D;007D;
+FE5D;FE5D;FE5D;3014;3014;
+FE5E;FE5E;FE5E;3015;3015;
+FE5F;FE5F;FE5F;0023;0023;
+FE60;FE60;FE60;0026;0026;
+FE61;FE61;FE61;002A;002A;
+FE62;FE62;FE62;002B;002B;
+FE63;FE63;FE63;002D;002D;
+FE64;FE64;FE64;003C;003C;
+FE65;FE65;FE65;003E;003E;
+FE66;FE66;FE66;003D;003D;
+FE68;FE68;FE68;005C;005C;
+FE69;FE69;FE69;0024;0024;
+FE6A;FE6A;FE6A;0025;0025;
+FE6B;FE6B;FE6B;0040;0040;
+FE70;FE70;FE70;0020 064B;0020 064B;
+FE71;FE71;FE71;0640 064B;0640 064B;
+FE72;FE72;FE72;0020 064C;0020 064C;
+FE74;FE74;FE74;0020 064D;0020 064D;
+FE76;FE76;FE76;0020 064E;0020 064E;
+FE77;FE77;FE77;0640 064E;0640 064E;
+FE78;FE78;FE78;0020 064F;0020 064F;
+FE79;FE79;FE79;0640 064F;0640 064F;
+FE7A;FE7A;FE7A;0020 0650;0020 0650;
+FE7B;FE7B;FE7B;0640 0650;0640 0650;
+FE7C;FE7C;FE7C;0020 0651;0020 0651;
+FE7D;FE7D;FE7D;0640 0651;0640 0651;
+FE7E;FE7E;FE7E;0020 0652;0020 0652;
+FE7F;FE7F;FE7F;0640 0652;0640 0652;
+FE80;FE80;FE80;0621;0621;
+FE81;FE81;FE81;0622;0627 0653;
+FE82;FE82;FE82;0622;0627 0653;
+FE83;FE83;FE83;0623;0627 0654;
+FE84;FE84;FE84;0623;0627 0654;
+FE85;FE85;FE85;0624;0648 0654;
+FE86;FE86;FE86;0624;0648 0654;
+FE87;FE87;FE87;0625;0627 0655;
+FE88;FE88;FE88;0625;0627 0655;
+FE89;FE89;FE89;0626;064A 0654;
+FE8A;FE8A;FE8A;0626;064A 0654;
+FE8B;FE8B;FE8B;0626;064A 0654;
+FE8C;FE8C;FE8C;0626;064A 0654;
+FE8D;FE8D;FE8D;0627;0627;
+FE8E;FE8E;FE8E;0627;0627;
+FE8F;FE8F;FE8F;0628;0628;
+FE90;FE90;FE90;0628;0628;
+FE91;FE91;FE91;0628;0628;
+FE92;FE92;FE92;0628;0628;
+FE93;FE93;FE93;0629;0629;
+FE94;FE94;FE94;0629;0629;
+FE95;FE95;FE95;062A;062A;
+FE96;FE96;FE96;062A;062A;
+FE97;FE97;FE97;062A;062A;
+FE98;FE98;FE98;062A;062A;
+FE99;FE99;FE99;062B;062B;
+FE9A;FE9A;FE9A;062B;062B;
+FE9B;FE9B;FE9B;062B;062B;
+FE9C;FE9C;FE9C;062B;062B;
+FE9D;FE9D;FE9D;062C;062C;
+FE9E;FE9E;FE9E;062C;062C;
+FE9F;FE9F;FE9F;062C;062C;
+FEA0;FEA0;FEA0;062C;062C;
+FEA1;FEA1;FEA1;062D;062D;
+FEA2;FEA2;FEA2;062D;062D;
+FEA3;FEA3;FEA3;062D;062D;
+FEA4;FEA4;FEA4;062D;062D;
+FEA5;FEA5;FEA5;062E;062E;
+FEA6;FEA6;FEA6;062E;062E;
+FEA7;FEA7;FEA7;062E;062E;
+FEA8;FEA8;FEA8;062E;062E;
+FEA9;FEA9;FEA9;062F;062F;
+FEAA;FEAA;FEAA;062F;062F;
+FEAB;FEAB;FEAB;0630;0630;
+FEAC;FEAC;FEAC;0630;0630;
+FEAD;FEAD;FEAD;0631;0631;
+FEAE;FEAE;FEAE;0631;0631;
+FEAF;FEAF;FEAF;0632;0632;
+FEB0;FEB0;FEB0;0632;0632;
+FEB1;FEB1;FEB1;0633;0633;
+FEB2;FEB2;FEB2;0633;0633;
+FEB3;FEB3;FEB3;0633;0633;
+FEB4;FEB4;FEB4;0633;0633;
+FEB5;FEB5;FEB5;0634;0634;
+FEB6;FEB6;FEB6;0634;0634;
+FEB7;FEB7;FEB7;0634;0634;
+FEB8;FEB8;FEB8;0634;0634;
+FEB9;FEB9;FEB9;0635;0635;
+FEBA;FEBA;FEBA;0635;0635;
+FEBB;FEBB;FEBB;0635;0635;
+FEBC;FEBC;FEBC;0635;0635;
+FEBD;FEBD;FEBD;0636;0636;
+FEBE;FEBE;FEBE;0636;0636;
+FEBF;FEBF;FEBF;0636;0636;
+FEC0;FEC0;FEC0;0636;0636;
+FEC1;FEC1;FEC1;0637;0637;
+FEC2;FEC2;FEC2;0637;0637;
+FEC3;FEC3;FEC3;0637;0637;
+FEC4;FEC4;FEC4;0637;0637;
+FEC5;FEC5;FEC5;0638;0638;
+FEC6;FEC6;FEC6;0638;0638;
+FEC7;FEC7;FEC7;0638;0638;
+FEC8;FEC8;FEC8;0638;0638;
+FEC9;FEC9;FEC9;0639;0639;
+FECA;FECA;FECA;0639;0639;
+FECB;FECB;FECB;0639;0639;
+FECC;FECC;FECC;0639;0639;
+FECD;FECD;FECD;063A;063A;
+FECE;FECE;FECE;063A;063A;
+FECF;FECF;FECF;063A;063A;
+FED0;FED0;FED0;063A;063A;
+FED1;FED1;FED1;0641;0641;
+FED2;FED2;FED2;0641;0641;
+FED3;FED3;FED3;0641;0641;
+FED4;FED4;FED4;0641;0641;
+FED5;FED5;FED5;0642;0642;
+FED6;FED6;FED6;0642;0642;
+FED7;FED7;FED7;0642;0642;
+FED8;FED8;FED8;0642;0642;
+FED9;FED9;FED9;0643;0643;
+FEDA;FEDA;FEDA;0643;0643;
+FEDB;FEDB;FEDB;0643;0643;
+FEDC;FEDC;FEDC;0643;0643;
+FEDD;FEDD;FEDD;0644;0644;
+FEDE;FEDE;FEDE;0644;0644;
+FEDF;FEDF;FEDF;0644;0644;
+FEE0;FEE0;FEE0;0644;0644;
+FEE1;FEE1;FEE1;0645;0645;
+FEE2;FEE2;FEE2;0645;0645;
+FEE3;FEE3;FEE3;0645;0645;
+FEE4;FEE4;FEE4;0645;0645;
+FEE5;FEE5;FEE5;0646;0646;
+FEE6;FEE6;FEE6;0646;0646;
+FEE7;FEE7;FEE7;0646;0646;
+FEE8;FEE8;FEE8;0646;0646;
+FEE9;FEE9;FEE9;0647;0647;
+FEEA;FEEA;FEEA;0647;0647;
+FEEB;FEEB;FEEB;0647;0647;
+FEEC;FEEC;FEEC;0647;0647;
+FEED;FEED;FEED;0648;0648;
+FEEE;FEEE;FEEE;0648;0648;
+FEEF;FEEF;FEEF;0649;0649;
+FEF0;FEF0;FEF0;0649;0649;
+FEF1;FEF1;FEF1;064A;064A;
+FEF2;FEF2;FEF2;064A;064A;
+FEF3;FEF3;FEF3;064A;064A;
+FEF4;FEF4;FEF4;064A;064A;
+FEF5;FEF5;FEF5;0644 0622;0644 0627 0653;
+FEF6;FEF6;FEF6;0644 0622;0644 0627 0653;
+FEF7;FEF7;FEF7;0644 0623;0644 0627 0654;
+FEF8;FEF8;FEF8;0644 0623;0644 0627 0654;
+FEF9;FEF9;FEF9;0644 0625;0644 0627 0655;
+FEFA;FEFA;FEFA;0644 0625;0644 0627 0655;
+FEFB;FEFB;FEFB;0644 0627;0644 0627;
+FEFC;FEFC;FEFC;0644 0627;0644 0627;
+FF01;FF01;FF01;0021;0021;
+FF02;FF02;FF02;0022;0022;
+FF03;FF03;FF03;0023;0023;
+FF04;FF04;FF04;0024;0024;
+FF05;FF05;FF05;0025;0025;
+FF06;FF06;FF06;0026;0026;
+FF07;FF07;FF07;0027;0027;
+FF08;FF08;FF08;0028;0028;
+FF09;FF09;FF09;0029;0029;
+FF0A;FF0A;FF0A;002A;002A;
+FF0B;FF0B;FF0B;002B;002B;
+FF0C;FF0C;FF0C;002C;002C;
+FF0D;FF0D;FF0D;002D;002D;
+FF0E;FF0E;FF0E;002E;002E;
+FF0F;FF0F;FF0F;002F;002F;
+FF10;FF10;FF10;0030;0030;
+FF11;FF11;FF11;0031;0031;
+FF12;FF12;FF12;0032;0032;
+FF13;FF13;FF13;0033;0033;
+FF14;FF14;FF14;0034;0034;
+FF15;FF15;FF15;0035;0035;
+FF16;FF16;FF16;0036;0036;
+FF17;FF17;FF17;0037;0037;
+FF18;FF18;FF18;0038;0038;
+FF19;FF19;FF19;0039;0039;
+FF1A;FF1A;FF1A;003A;003A;
+FF1B;FF1B;FF1B;003B;003B;
+FF1C;FF1C;FF1C;003C;003C;
+FF1D;FF1D;FF1D;003D;003D;
+FF1E;FF1E;FF1E;003E;003E;
+FF1F;FF1F;FF1F;003F;003F;
+FF20;FF20;FF20;0040;0040;
+FF21;FF21;FF21;0041;0041;
+FF22;FF22;FF22;0042;0042;
+FF23;FF23;FF23;0043;0043;
+FF24;FF24;FF24;0044;0044;
+FF25;FF25;FF25;0045;0045;
+FF26;FF26;FF26;0046;0046;
+FF27;FF27;FF27;0047;0047;
+FF28;FF28;FF28;0048;0048;
+FF29;FF29;FF29;0049;0049;
+FF2A;FF2A;FF2A;004A;004A;
+FF2B;FF2B;FF2B;004B;004B;
+FF2C;FF2C;FF2C;004C;004C;
+FF2D;FF2D;FF2D;004D;004D;
+FF2E;FF2E;FF2E;004E;004E;
+FF2F;FF2F;FF2F;004F;004F;
+FF30;FF30;FF30;0050;0050;
+FF31;FF31;FF31;0051;0051;
+FF32;FF32;FF32;0052;0052;
+FF33;FF33;FF33;0053;0053;
+FF34;FF34;FF34;0054;0054;
+FF35;FF35;FF35;0055;0055;
+FF36;FF36;FF36;0056;0056;
+FF37;FF37;FF37;0057;0057;
+FF38;FF38;FF38;0058;0058;
+FF39;FF39;FF39;0059;0059;
+FF3A;FF3A;FF3A;005A;005A;
+FF3B;FF3B;FF3B;005B;005B;
+FF3C;FF3C;FF3C;005C;005C;
+FF3D;FF3D;FF3D;005D;005D;
+FF3E;FF3E;FF3E;005E;005E;
+FF3F;FF3F;FF3F;005F;005F;
+FF40;FF40;FF40;0060;0060;
+FF41;FF41;FF41;0061;0061;
+FF42;FF42;FF42;0062;0062;
+FF43;FF43;FF43;0063;0063;
+FF44;FF44;FF44;0064;0064;
+FF45;FF45;FF45;0065;0065;
+FF46;FF46;FF46;0066;0066;
+FF47;FF47;FF47;0067;0067;
+FF48;FF48;FF48;0068;0068;
+FF49;FF49;FF49;0069;0069;
+FF4A;FF4A;FF4A;006A;006A;
+FF4B;FF4B;FF4B;006B;006B;
+FF4C;FF4C;FF4C;006C;006C;
+FF4D;FF4D;FF4D;006D;006D;
+FF4E;FF4E;FF4E;006E;006E;
+FF4F;FF4F;FF4F;006F;006F;
+FF50;FF50;FF50;0070;0070;
+FF51;FF51;FF51;0071;0071;
+FF52;FF52;FF52;0072;0072;
+FF53;FF53;FF53;0073;0073;
+FF54;FF54;FF54;0074;0074;
+FF55;FF55;FF55;0075;0075;
+FF56;FF56;FF56;0076;0076;
+FF57;FF57;FF57;0077;0077;
+FF58;FF58;FF58;0078;0078;
+FF59;FF59;FF59;0079;0079;
+FF5A;FF5A;FF5A;007A;007A;
+FF5B;FF5B;FF5B;007B;007B;
+FF5C;FF5C;FF5C;007C;007C;
+FF5D;FF5D;FF5D;007D;007D;
+FF5E;FF5E;FF5E;007E;007E;
+FF5F;FF5F;FF5F;2985;2985;
+FF60;FF60;FF60;2986;2986;
+FF61;FF61;FF61;3002;3002;
+FF62;FF62;FF62;300C;300C;
+FF63;FF63;FF63;300D;300D;
+FF64;FF64;FF64;3001;3001;
+FF65;FF65;FF65;30FB;30FB;
+FF66;FF66;FF66;30F2;30F2;
+FF67;FF67;FF67;30A1;30A1;
+FF68;FF68;FF68;30A3;30A3;
+FF69;FF69;FF69;30A5;30A5;
+FF6A;FF6A;FF6A;30A7;30A7;
+FF6B;FF6B;FF6B;30A9;30A9;
+FF6C;FF6C;FF6C;30E3;30E3;
+FF6D;FF6D;FF6D;30E5;30E5;
+FF6E;FF6E;FF6E;30E7;30E7;
+FF6F;FF6F;FF6F;30C3;30C3;
+FF70;FF70;FF70;30FC;30FC;
+FF71;FF71;FF71;30A2;30A2;
+FF72;FF72;FF72;30A4;30A4;
+FF73;FF73;FF73;30A6;30A6;
+FF74;FF74;FF74;30A8;30A8;
+FF75;FF75;FF75;30AA;30AA;
+FF76;FF76;FF76;30AB;30AB;
+FF77;FF77;FF77;30AD;30AD;
+FF78;FF78;FF78;30AF;30AF;
+FF79;FF79;FF79;30B1;30B1;
+FF7A;FF7A;FF7A;30B3;30B3;
+FF7B;FF7B;FF7B;30B5;30B5;
+FF7C;FF7C;FF7C;30B7;30B7;
+FF7D;FF7D;FF7D;30B9;30B9;
+FF7E;FF7E;FF7E;30BB;30BB;
+FF7F;FF7F;FF7F;30BD;30BD;
+FF80;FF80;FF80;30BF;30BF;
+FF81;FF81;FF81;30C1;30C1;
+FF82;FF82;FF82;30C4;30C4;
+FF83;FF83;FF83;30C6;30C6;
+FF84;FF84;FF84;30C8;30C8;
+FF85;FF85;FF85;30CA;30CA;
+FF86;FF86;FF86;30CB;30CB;
+FF87;FF87;FF87;30CC;30CC;
+FF88;FF88;FF88;30CD;30CD;
+FF89;FF89;FF89;30CE;30CE;
+FF8A;FF8A;FF8A;30CF;30CF;
+FF8B;FF8B;FF8B;30D2;30D2;
+FF8C;FF8C;FF8C;30D5;30D5;
+FF8D;FF8D;FF8D;30D8;30D8;
+FF8E;FF8E;FF8E;30DB;30DB;
+FF8F;FF8F;FF8F;30DE;30DE;
+FF90;FF90;FF90;30DF;30DF;
+FF91;FF91;FF91;30E0;30E0;
+FF92;FF92;FF92;30E1;30E1;
+FF93;FF93;FF93;30E2;30E2;
+FF94;FF94;FF94;30E4;30E4;
+FF95;FF95;FF95;30E6;30E6;
+FF96;FF96;FF96;30E8;30E8;
+FF97;FF97;FF97;30E9;30E9;
+FF98;FF98;FF98;30EA;30EA;
+FF99;FF99;FF99;30EB;30EB;
+FF9A;FF9A;FF9A;30EC;30EC;
+FF9B;FF9B;FF9B;30ED;30ED;
+FF9C;FF9C;FF9C;30EF;30EF;
+FF9D;FF9D;FF9D;30F3;30F3;
+FF9E;FF9E;FF9E;3099;3099;
+FF9F;FF9F;FF9F;309A;309A;
+FFA0;FFA0;FFA0;1160;1160;
+FFA1;FFA1;FFA1;1100;1100;
+FFA2;FFA2;FFA2;1101;1101;
+FFA3;FFA3;FFA3;11AA;11AA;
+FFA4;FFA4;FFA4;1102;1102;
+FFA5;FFA5;FFA5;11AC;11AC;
+FFA6;FFA6;FFA6;11AD;11AD;
+FFA7;FFA7;FFA7;1103;1103;
+FFA8;FFA8;FFA8;1104;1104;
+FFA9;FFA9;FFA9;1105;1105;
+FFAA;FFAA;FFAA;11B0;11B0;
+FFAB;FFAB;FFAB;11B1;11B1;
+FFAC;FFAC;FFAC;11B2;11B2;
+FFAD;FFAD;FFAD;11B3;11B3;
+FFAE;FFAE;FFAE;11B4;11B4;
+FFAF;FFAF;FFAF;11B5;11B5;
+FFB0;FFB0;FFB0;111A;111A;
+FFB1;FFB1;FFB1;1106;1106;
+FFB2;FFB2;FFB2;1107;1107;
+FFB3;FFB3;FFB3;1108;1108;
+FFB4;FFB4;FFB4;1121;1121;
+FFB5;FFB5;FFB5;1109;1109;
+FFB6;FFB6;FFB6;110A;110A;
+FFB7;FFB7;FFB7;110B;110B;
+FFB8;FFB8;FFB8;110C;110C;
+FFB9;FFB9;FFB9;110D;110D;
+FFBA;FFBA;FFBA;110E;110E;
+FFBB;FFBB;FFBB;110F;110F;
+FFBC;FFBC;FFBC;1110;1110;
+FFBD;FFBD;FFBD;1111;1111;
+FFBE;FFBE;FFBE;1112;1112;
+FFC2;FFC2;FFC2;1161;1161;
+FFC3;FFC3;FFC3;1162;1162;
+FFC4;FFC4;FFC4;1163;1163;
+FFC5;FFC5;FFC5;1164;1164;
+FFC6;FFC6;FFC6;1165;1165;
+FFC7;FFC7;FFC7;1166;1166;
+FFCA;FFCA;FFCA;1167;1167;
+FFCB;FFCB;FFCB;1168;1168;
+FFCC;FFCC;FFCC;1169;1169;
+FFCD;FFCD;FFCD;116A;116A;
+FFCE;FFCE;FFCE;116B;116B;
+FFCF;FFCF;FFCF;116C;116C;
+FFD2;FFD2;FFD2;116D;116D;
+FFD3;FFD3;FFD3;116E;116E;
+FFD4;FFD4;FFD4;116F;116F;
+FFD5;FFD5;FFD5;1170;1170;
+FFD6;FFD6;FFD6;1171;1171;
+FFD7;FFD7;FFD7;1172;1172;
+FFDA;FFDA;FFDA;1173;1173;
+FFDB;FFDB;FFDB;1174;1174;
+FFDC;FFDC;FFDC;1175;1175;
+FFE0;FFE0;FFE0;00A2;00A2;
+FFE1;FFE1;FFE1;00A3;00A3;
+FFE2;FFE2;FFE2;00AC;00AC;
+FFE3;FFE3;FFE3;0020 0304;0020 0304;
+FFE4;FFE4;FFE4;00A6;00A6;
+FFE5;FFE5;FFE5;00A5;00A5;
+FFE6;FFE6;FFE6;20A9;20A9;
+FFE8;FFE8;FFE8;2502;2502;
+FFE9;FFE9;FFE9;2190;2190;
+FFEA;FFEA;FFEA;2191;2191;
+FFEB;FFEB;FFEB;2192;2192;
+FFEC;FFEC;FFEC;2193;2193;
+FFED;FFED;FFED;25A0;25A0;
+FFEE;FFEE;FFEE;25CB;25CB;
+1D15E;1D157 1D165;1D157 1D165;1D157 1D165;1D157 1D165;
+1D15F;1D158 1D165;1D158 1D165;1D158 1D165;1D158 1D165;
+1D160;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;1D158 1D165 1D16E;
+1D161;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;1D158 1D165 1D16F;
+1D162;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;1D158 1D165 1D170;
+1D163;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;1D158 1D165 1D171;
+1D164;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;1D158 1D165 1D172;
+1D1BB;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;1D1B9 1D165;
+1D1BC;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;1D1BA 1D165;
+1D1BD;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;1D1B9 1D165 1D16E;
+1D1BE;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;1D1BA 1D165 1D16E;
+1D1BF;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;1D1B9 1D165 1D16F;
+1D1C0;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;1D1BA 1D165 1D16F;
+1D400;1D400;1D400;0041;0041;
+1D401;1D401;1D401;0042;0042;
+1D402;1D402;1D402;0043;0043;
+1D403;1D403;1D403;0044;0044;
+1D404;1D404;1D404;0045;0045;
+1D405;1D405;1D405;0046;0046;
+1D406;1D406;1D406;0047;0047;
+1D407;1D407;1D407;0048;0048;
+1D408;1D408;1D408;0049;0049;
+1D409;1D409;1D409;004A;004A;
+1D40A;1D40A;1D40A;004B;004B;
+1D40B;1D40B;1D40B;004C;004C;
+1D40C;1D40C;1D40C;004D;004D;
+1D40D;1D40D;1D40D;004E;004E;
+1D40E;1D40E;1D40E;004F;004F;
+1D40F;1D40F;1D40F;0050;0050;
+1D410;1D410;1D410;0051;0051;
+1D411;1D411;1D411;0052;0052;
+1D412;1D412;1D412;0053;0053;
+1D413;1D413;1D413;0054;0054;
+1D414;1D414;1D414;0055;0055;
+1D415;1D415;1D415;0056;0056;
+1D416;1D416;1D416;0057;0057;
+1D417;1D417;1D417;0058;0058;
+1D418;1D418;1D418;0059;0059;
+1D419;1D419;1D419;005A;005A;
+1D41A;1D41A;1D41A;0061;0061;
+1D41B;1D41B;1D41B;0062;0062;
+1D41C;1D41C;1D41C;0063;0063;
+1D41D;1D41D;1D41D;0064;0064;
+1D41E;1D41E;1D41E;0065;0065;
+1D41F;1D41F;1D41F;0066;0066;
+1D420;1D420;1D420;0067;0067;
+1D421;1D421;1D421;0068;0068;
+1D422;1D422;1D422;0069;0069;
+1D423;1D423;1D423;006A;006A;
+1D424;1D424;1D424;006B;006B;
+1D425;1D425;1D425;006C;006C;
+1D426;1D426;1D426;006D;006D;
+1D427;1D427;1D427;006E;006E;
+1D428;1D428;1D428;006F;006F;
+1D429;1D429;1D429;0070;0070;
+1D42A;1D42A;1D42A;0071;0071;
+1D42B;1D42B;1D42B;0072;0072;
+1D42C;1D42C;1D42C;0073;0073;
+1D42D;1D42D;1D42D;0074;0074;
+1D42E;1D42E;1D42E;0075;0075;
+1D42F;1D42F;1D42F;0076;0076;
+1D430;1D430;1D430;0077;0077;
+1D431;1D431;1D431;0078;0078;
+1D432;1D432;1D432;0079;0079;
+1D433;1D433;1D433;007A;007A;
+1D434;1D434;1D434;0041;0041;
+1D435;1D435;1D435;0042;0042;
+1D436;1D436;1D436;0043;0043;
+1D437;1D437;1D437;0044;0044;
+1D438;1D438;1D438;0045;0045;
+1D439;1D439;1D439;0046;0046;
+1D43A;1D43A;1D43A;0047;0047;
+1D43B;1D43B;1D43B;0048;0048;
+1D43C;1D43C;1D43C;0049;0049;
+1D43D;1D43D;1D43D;004A;004A;
+1D43E;1D43E;1D43E;004B;004B;
+1D43F;1D43F;1D43F;004C;004C;
+1D440;1D440;1D440;004D;004D;
+1D441;1D441;1D441;004E;004E;
+1D442;1D442;1D442;004F;004F;
+1D443;1D443;1D443;0050;0050;
+1D444;1D444;1D444;0051;0051;
+1D445;1D445;1D445;0052;0052;
+1D446;1D446;1D446;0053;0053;
+1D447;1D447;1D447;0054;0054;
+1D448;1D448;1D448;0055;0055;
+1D449;1D449;1D449;0056;0056;
+1D44A;1D44A;1D44A;0057;0057;
+1D44B;1D44B;1D44B;0058;0058;
+1D44C;1D44C;1D44C;0059;0059;
+1D44D;1D44D;1D44D;005A;005A;
+1D44E;1D44E;1D44E;0061;0061;
+1D44F;1D44F;1D44F;0062;0062;
+1D450;1D450;1D450;0063;0063;
+1D451;1D451;1D451;0064;0064;
+1D452;1D452;1D452;0065;0065;
+1D453;1D453;1D453;0066;0066;
+1D454;1D454;1D454;0067;0067;
+1D456;1D456;1D456;0069;0069;
+1D457;1D457;1D457;006A;006A;
+1D458;1D458;1D458;006B;006B;
+1D459;1D459;1D459;006C;006C;
+1D45A;1D45A;1D45A;006D;006D;
+1D45B;1D45B;1D45B;006E;006E;
+1D45C;1D45C;1D45C;006F;006F;
+1D45D;1D45D;1D45D;0070;0070;
+1D45E;1D45E;1D45E;0071;0071;
+1D45F;1D45F;1D45F;0072;0072;
+1D460;1D460;1D460;0073;0073;
+1D461;1D461;1D461;0074;0074;
+1D462;1D462;1D462;0075;0075;
+1D463;1D463;1D463;0076;0076;
+1D464;1D464;1D464;0077;0077;
+1D465;1D465;1D465;0078;0078;
+1D466;1D466;1D466;0079;0079;
+1D467;1D467;1D467;007A;007A;
+1D468;1D468;1D468;0041;0041;
+1D469;1D469;1D469;0042;0042;
+1D46A;1D46A;1D46A;0043;0043;
+1D46B;1D46B;1D46B;0044;0044;
+1D46C;1D46C;1D46C;0045;0045;
+1D46D;1D46D;1D46D;0046;0046;
+1D46E;1D46E;1D46E;0047;0047;
+1D46F;1D46F;1D46F;0048;0048;
+1D470;1D470;1D470;0049;0049;
+1D471;1D471;1D471;004A;004A;
+1D472;1D472;1D472;004B;004B;
+1D473;1D473;1D473;004C;004C;
+1D474;1D474;1D474;004D;004D;
+1D475;1D475;1D475;004E;004E;
+1D476;1D476;1D476;004F;004F;
+1D477;1D477;1D477;0050;0050;
+1D478;1D478;1D478;0051;0051;
+1D479;1D479;1D479;0052;0052;
+1D47A;1D47A;1D47A;0053;0053;
+1D47B;1D47B;1D47B;0054;0054;
+1D47C;1D47C;1D47C;0055;0055;
+1D47D;1D47D;1D47D;0056;0056;
+1D47E;1D47E;1D47E;0057;0057;
+1D47F;1D47F;1D47F;0058;0058;
+1D480;1D480;1D480;0059;0059;
+1D481;1D481;1D481;005A;005A;
+1D482;1D482;1D482;0061;0061;
+1D483;1D483;1D483;0062;0062;
+1D484;1D484;1D484;0063;0063;
+1D485;1D485;1D485;0064;0064;
+1D486;1D486;1D486;0065;0065;
+1D487;1D487;1D487;0066;0066;
+1D488;1D488;1D488;0067;0067;
+1D489;1D489;1D489;0068;0068;
+1D48A;1D48A;1D48A;0069;0069;
+1D48B;1D48B;1D48B;006A;006A;
+1D48C;1D48C;1D48C;006B;006B;
+1D48D;1D48D;1D48D;006C;006C;
+1D48E;1D48E;1D48E;006D;006D;
+1D48F;1D48F;1D48F;006E;006E;
+1D490;1D490;1D490;006F;006F;
+1D491;1D491;1D491;0070;0070;
+1D492;1D492;1D492;0071;0071;
+1D493;1D493;1D493;0072;0072;
+1D494;1D494;1D494;0073;0073;
+1D495;1D495;1D495;0074;0074;
+1D496;1D496;1D496;0075;0075;
+1D497;1D497;1D497;0076;0076;
+1D498;1D498;1D498;0077;0077;
+1D499;1D499;1D499;0078;0078;
+1D49A;1D49A;1D49A;0079;0079;
+1D49B;1D49B;1D49B;007A;007A;
+1D49C;1D49C;1D49C;0041;0041;
+1D49E;1D49E;1D49E;0043;0043;
+1D49F;1D49F;1D49F;0044;0044;
+1D4A2;1D4A2;1D4A2;0047;0047;
+1D4A5;1D4A5;1D4A5;004A;004A;
+1D4A6;1D4A6;1D4A6;004B;004B;
+1D4A9;1D4A9;1D4A9;004E;004E;
+1D4AA;1D4AA;1D4AA;004F;004F;
+1D4AB;1D4AB;1D4AB;0050;0050;
+1D4AC;1D4AC;1D4AC;0051;0051;
+1D4AE;1D4AE;1D4AE;0053;0053;
+1D4AF;1D4AF;1D4AF;0054;0054;
+1D4B0;1D4B0;1D4B0;0055;0055;
+1D4B1;1D4B1;1D4B1;0056;0056;
+1D4B2;1D4B2;1D4B2;0057;0057;
+1D4B3;1D4B3;1D4B3;0058;0058;
+1D4B4;1D4B4;1D4B4;0059;0059;
+1D4B5;1D4B5;1D4B5;005A;005A;
+1D4B6;1D4B6;1D4B6;0061;0061;
+1D4B7;1D4B7;1D4B7;0062;0062;
+1D4B8;1D4B8;1D4B8;0063;0063;
+1D4B9;1D4B9;1D4B9;0064;0064;
+1D4BB;1D4BB;1D4BB;0066;0066;
+1D4BD;1D4BD;1D4BD;0068;0068;
+1D4BE;1D4BE;1D4BE;0069;0069;
+1D4BF;1D4BF;1D4BF;006A;006A;
+1D4C0;1D4C0;1D4C0;006B;006B;
+1D4C1;1D4C1;1D4C1;006C;006C;
+1D4C2;1D4C2;1D4C2;006D;006D;
+1D4C3;1D4C3;1D4C3;006E;006E;
+1D4C5;1D4C5;1D4C5;0070;0070;
+1D4C6;1D4C6;1D4C6;0071;0071;
+1D4C7;1D4C7;1D4C7;0072;0072;
+1D4C8;1D4C8;1D4C8;0073;0073;
+1D4C9;1D4C9;1D4C9;0074;0074;
+1D4CA;1D4CA;1D4CA;0075;0075;
+1D4CB;1D4CB;1D4CB;0076;0076;
+1D4CC;1D4CC;1D4CC;0077;0077;
+1D4CD;1D4CD;1D4CD;0078;0078;
+1D4CE;1D4CE;1D4CE;0079;0079;
+1D4CF;1D4CF;1D4CF;007A;007A;
+1D4D0;1D4D0;1D4D0;0041;0041;
+1D4D1;1D4D1;1D4D1;0042;0042;
+1D4D2;1D4D2;1D4D2;0043;0043;
+1D4D3;1D4D3;1D4D3;0044;0044;
+1D4D4;1D4D4;1D4D4;0045;0045;
+1D4D5;1D4D5;1D4D5;0046;0046;
+1D4D6;1D4D6;1D4D6;0047;0047;
+1D4D7;1D4D7;1D4D7;0048;0048;
+1D4D8;1D4D8;1D4D8;0049;0049;
+1D4D9;1D4D9;1D4D9;004A;004A;
+1D4DA;1D4DA;1D4DA;004B;004B;
+1D4DB;1D4DB;1D4DB;004C;004C;
+1D4DC;1D4DC;1D4DC;004D;004D;
+1D4DD;1D4DD;1D4DD;004E;004E;
+1D4DE;1D4DE;1D4DE;004F;004F;
+1D4DF;1D4DF;1D4DF;0050;0050;
+1D4E0;1D4E0;1D4E0;0051;0051;
+1D4E1;1D4E1;1D4E1;0052;0052;
+1D4E2;1D4E2;1D4E2;0053;0053;
+1D4E3;1D4E3;1D4E3;0054;0054;
+1D4E4;1D4E4;1D4E4;0055;0055;
+1D4E5;1D4E5;1D4E5;0056;0056;
+1D4E6;1D4E6;1D4E6;0057;0057;
+1D4E7;1D4E7;1D4E7;0058;0058;
+1D4E8;1D4E8;1D4E8;0059;0059;
+1D4E9;1D4E9;1D4E9;005A;005A;
+1D4EA;1D4EA;1D4EA;0061;0061;
+1D4EB;1D4EB;1D4EB;0062;0062;
+1D4EC;1D4EC;1D4EC;0063;0063;
+1D4ED;1D4ED;1D4ED;0064;0064;
+1D4EE;1D4EE;1D4EE;0065;0065;
+1D4EF;1D4EF;1D4EF;0066;0066;
+1D4F0;1D4F0;1D4F0;0067;0067;
+1D4F1;1D4F1;1D4F1;0068;0068;
+1D4F2;1D4F2;1D4F2;0069;0069;
+1D4F3;1D4F3;1D4F3;006A;006A;
+1D4F4;1D4F4;1D4F4;006B;006B;
+1D4F5;1D4F5;1D4F5;006C;006C;
+1D4F6;1D4F6;1D4F6;006D;006D;
+1D4F7;1D4F7;1D4F7;006E;006E;
+1D4F8;1D4F8;1D4F8;006F;006F;
+1D4F9;1D4F9;1D4F9;0070;0070;
+1D4FA;1D4FA;1D4FA;0071;0071;
+1D4FB;1D4FB;1D4FB;0072;0072;
+1D4FC;1D4FC;1D4FC;0073;0073;
+1D4FD;1D4FD;1D4FD;0074;0074;
+1D4FE;1D4FE;1D4FE;0075;0075;
+1D4FF;1D4FF;1D4FF;0076;0076;
+1D500;1D500;1D500;0077;0077;
+1D501;1D501;1D501;0078;0078;
+1D502;1D502;1D502;0079;0079;
+1D503;1D503;1D503;007A;007A;
+1D504;1D504;1D504;0041;0041;
+1D505;1D505;1D505;0042;0042;
+1D507;1D507;1D507;0044;0044;
+1D508;1D508;1D508;0045;0045;
+1D509;1D509;1D509;0046;0046;
+1D50A;1D50A;1D50A;0047;0047;
+1D50D;1D50D;1D50D;004A;004A;
+1D50E;1D50E;1D50E;004B;004B;
+1D50F;1D50F;1D50F;004C;004C;
+1D510;1D510;1D510;004D;004D;
+1D511;1D511;1D511;004E;004E;
+1D512;1D512;1D512;004F;004F;
+1D513;1D513;1D513;0050;0050;
+1D514;1D514;1D514;0051;0051;
+1D516;1D516;1D516;0053;0053;
+1D517;1D517;1D517;0054;0054;
+1D518;1D518;1D518;0055;0055;
+1D519;1D519;1D519;0056;0056;
+1D51A;1D51A;1D51A;0057;0057;
+1D51B;1D51B;1D51B;0058;0058;
+1D51C;1D51C;1D51C;0059;0059;
+1D51E;1D51E;1D51E;0061;0061;
+1D51F;1D51F;1D51F;0062;0062;
+1D520;1D520;1D520;0063;0063;
+1D521;1D521;1D521;0064;0064;
+1D522;1D522;1D522;0065;0065;
+1D523;1D523;1D523;0066;0066;
+1D524;1D524;1D524;0067;0067;
+1D525;1D525;1D525;0068;0068;
+1D526;1D526;1D526;0069;0069;
+1D527;1D527;1D527;006A;006A;
+1D528;1D528;1D528;006B;006B;
+1D529;1D529;1D529;006C;006C;
+1D52A;1D52A;1D52A;006D;006D;
+1D52B;1D52B;1D52B;006E;006E;
+1D52C;1D52C;1D52C;006F;006F;
+1D52D;1D52D;1D52D;0070;0070;
+1D52E;1D52E;1D52E;0071;0071;
+1D52F;1D52F;1D52F;0072;0072;
+1D530;1D530;1D530;0073;0073;
+1D531;1D531;1D531;0074;0074;
+1D532;1D532;1D532;0075;0075;
+1D533;1D533;1D533;0076;0076;
+1D534;1D534;1D534;0077;0077;
+1D535;1D535;1D535;0078;0078;
+1D536;1D536;1D536;0079;0079;
+1D537;1D537;1D537;007A;007A;
+1D538;1D538;1D538;0041;0041;
+1D539;1D539;1D539;0042;0042;
+1D53B;1D53B;1D53B;0044;0044;
+1D53C;1D53C;1D53C;0045;0045;
+1D53D;1D53D;1D53D;0046;0046;
+1D53E;1D53E;1D53E;0047;0047;
+1D540;1D540;1D540;0049;0049;
+1D541;1D541;1D541;004A;004A;
+1D542;1D542;1D542;004B;004B;
+1D543;1D543;1D543;004C;004C;
+1D544;1D544;1D544;004D;004D;
+1D546;1D546;1D546;004F;004F;
+1D54A;1D54A;1D54A;0053;0053;
+1D54B;1D54B;1D54B;0054;0054;
+1D54C;1D54C;1D54C;0055;0055;
+1D54D;1D54D;1D54D;0056;0056;
+1D54E;1D54E;1D54E;0057;0057;
+1D54F;1D54F;1D54F;0058;0058;
+1D550;1D550;1D550;0059;0059;
+1D552;1D552;1D552;0061;0061;
+1D553;1D553;1D553;0062;0062;
+1D554;1D554;1D554;0063;0063;
+1D555;1D555;1D555;0064;0064;
+1D556;1D556;1D556;0065;0065;
+1D557;1D557;1D557;0066;0066;
+1D558;1D558;1D558;0067;0067;
+1D559;1D559;1D559;0068;0068;
+1D55A;1D55A;1D55A;0069;0069;
+1D55B;1D55B;1D55B;006A;006A;
+1D55C;1D55C;1D55C;006B;006B;
+1D55D;1D55D;1D55D;006C;006C;
+1D55E;1D55E;1D55E;006D;006D;
+1D55F;1D55F;1D55F;006E;006E;
+1D560;1D560;1D560;006F;006F;
+1D561;1D561;1D561;0070;0070;
+1D562;1D562;1D562;0071;0071;
+1D563;1D563;1D563;0072;0072;
+1D564;1D564;1D564;0073;0073;
+1D565;1D565;1D565;0074;0074;
+1D566;1D566;1D566;0075;0075;
+1D567;1D567;1D567;0076;0076;
+1D568;1D568;1D568;0077;0077;
+1D569;1D569;1D569;0078;0078;
+1D56A;1D56A;1D56A;0079;0079;
+1D56B;1D56B;1D56B;007A;007A;
+1D56C;1D56C;1D56C;0041;0041;
+1D56D;1D56D;1D56D;0042;0042;
+1D56E;1D56E;1D56E;0043;0043;
+1D56F;1D56F;1D56F;0044;0044;
+1D570;1D570;1D570;0045;0045;
+1D571;1D571;1D571;0046;0046;
+1D572;1D572;1D572;0047;0047;
+1D573;1D573;1D573;0048;0048;
+1D574;1D574;1D574;0049;0049;
+1D575;1D575;1D575;004A;004A;
+1D576;1D576;1D576;004B;004B;
+1D577;1D577;1D577;004C;004C;
+1D578;1D578;1D578;004D;004D;
+1D579;1D579;1D579;004E;004E;
+1D57A;1D57A;1D57A;004F;004F;
+1D57B;1D57B;1D57B;0050;0050;
+1D57C;1D57C;1D57C;0051;0051;
+1D57D;1D57D;1D57D;0052;0052;
+1D57E;1D57E;1D57E;0053;0053;
+1D57F;1D57F;1D57F;0054;0054;
+1D580;1D580;1D580;0055;0055;
+1D581;1D581;1D581;0056;0056;
+1D582;1D582;1D582;0057;0057;
+1D583;1D583;1D583;0058;0058;
+1D584;1D584;1D584;0059;0059;
+1D585;1D585;1D585;005A;005A;
+1D586;1D586;1D586;0061;0061;
+1D587;1D587;1D587;0062;0062;
+1D588;1D588;1D588;0063;0063;
+1D589;1D589;1D589;0064;0064;
+1D58A;1D58A;1D58A;0065;0065;
+1D58B;1D58B;1D58B;0066;0066;
+1D58C;1D58C;1D58C;0067;0067;
+1D58D;1D58D;1D58D;0068;0068;
+1D58E;1D58E;1D58E;0069;0069;
+1D58F;1D58F;1D58F;006A;006A;
+1D590;1D590;1D590;006B;006B;
+1D591;1D591;1D591;006C;006C;
+1D592;1D592;1D592;006D;006D;
+1D593;1D593;1D593;006E;006E;
+1D594;1D594;1D594;006F;006F;
+1D595;1D595;1D595;0070;0070;
+1D596;1D596;1D596;0071;0071;
+1D597;1D597;1D597;0072;0072;
+1D598;1D598;1D598;0073;0073;
+1D599;1D599;1D599;0074;0074;
+1D59A;1D59A;1D59A;0075;0075;
+1D59B;1D59B;1D59B;0076;0076;
+1D59C;1D59C;1D59C;0077;0077;
+1D59D;1D59D;1D59D;0078;0078;
+1D59E;1D59E;1D59E;0079;0079;
+1D59F;1D59F;1D59F;007A;007A;
+1D5A0;1D5A0;1D5A0;0041;0041;
+1D5A1;1D5A1;1D5A1;0042;0042;
+1D5A2;1D5A2;1D5A2;0043;0043;
+1D5A3;1D5A3;1D5A3;0044;0044;
+1D5A4;1D5A4;1D5A4;0045;0045;
+1D5A5;1D5A5;1D5A5;0046;0046;
+1D5A6;1D5A6;1D5A6;0047;0047;
+1D5A7;1D5A7;1D5A7;0048;0048;
+1D5A8;1D5A8;1D5A8;0049;0049;
+1D5A9;1D5A9;1D5A9;004A;004A;
+1D5AA;1D5AA;1D5AA;004B;004B;
+1D5AB;1D5AB;1D5AB;004C;004C;
+1D5AC;1D5AC;1D5AC;004D;004D;
+1D5AD;1D5AD;1D5AD;004E;004E;
+1D5AE;1D5AE;1D5AE;004F;004F;
+1D5AF;1D5AF;1D5AF;0050;0050;
+1D5B0;1D5B0;1D5B0;0051;0051;
+1D5B1;1D5B1;1D5B1;0052;0052;
+1D5B2;1D5B2;1D5B2;0053;0053;
+1D5B3;1D5B3;1D5B3;0054;0054;
+1D5B4;1D5B4;1D5B4;0055;0055;
+1D5B5;1D5B5;1D5B5;0056;0056;
+1D5B6;1D5B6;1D5B6;0057;0057;
+1D5B7;1D5B7;1D5B7;0058;0058;
+1D5B8;1D5B8;1D5B8;0059;0059;
+1D5B9;1D5B9;1D5B9;005A;005A;
+1D5BA;1D5BA;1D5BA;0061;0061;
+1D5BB;1D5BB;1D5BB;0062;0062;
+1D5BC;1D5BC;1D5BC;0063;0063;
+1D5BD;1D5BD;1D5BD;0064;0064;
+1D5BE;1D5BE;1D5BE;0065;0065;
+1D5BF;1D5BF;1D5BF;0066;0066;
+1D5C0;1D5C0;1D5C0;0067;0067;
+1D5C1;1D5C1;1D5C1;0068;0068;
+1D5C2;1D5C2;1D5C2;0069;0069;
+1D5C3;1D5C3;1D5C3;006A;006A;
+1D5C4;1D5C4;1D5C4;006B;006B;
+1D5C5;1D5C5;1D5C5;006C;006C;
+1D5C6;1D5C6;1D5C6;006D;006D;
+1D5C7;1D5C7;1D5C7;006E;006E;
+1D5C8;1D5C8;1D5C8;006F;006F;
+1D5C9;1D5C9;1D5C9;0070;0070;
+1D5CA;1D5CA;1D5CA;0071;0071;
+1D5CB;1D5CB;1D5CB;0072;0072;
+1D5CC;1D5CC;1D5CC;0073;0073;
+1D5CD;1D5CD;1D5CD;0074;0074;
+1D5CE;1D5CE;1D5CE;0075;0075;
+1D5CF;1D5CF;1D5CF;0076;0076;
+1D5D0;1D5D0;1D5D0;0077;0077;
+1D5D1;1D5D1;1D5D1;0078;0078;
+1D5D2;1D5D2;1D5D2;0079;0079;
+1D5D3;1D5D3;1D5D3;007A;007A;
+1D5D4;1D5D4;1D5D4;0041;0041;
+1D5D5;1D5D5;1D5D5;0042;0042;
+1D5D6;1D5D6;1D5D6;0043;0043;
+1D5D7;1D5D7;1D5D7;0044;0044;
+1D5D8;1D5D8;1D5D8;0045;0045;
+1D5D9;1D5D9;1D5D9;0046;0046;
+1D5DA;1D5DA;1D5DA;0047;0047;
+1D5DB;1D5DB;1D5DB;0048;0048;
+1D5DC;1D5DC;1D5DC;0049;0049;
+1D5DD;1D5DD;1D5DD;004A;004A;
+1D5DE;1D5DE;1D5DE;004B;004B;
+1D5DF;1D5DF;1D5DF;004C;004C;
+1D5E0;1D5E0;1D5E0;004D;004D;
+1D5E1;1D5E1;1D5E1;004E;004E;
+1D5E2;1D5E2;1D5E2;004F;004F;
+1D5E3;1D5E3;1D5E3;0050;0050;
+1D5E4;1D5E4;1D5E4;0051;0051;
+1D5E5;1D5E5;1D5E5;0052;0052;
+1D5E6;1D5E6;1D5E6;0053;0053;
+1D5E7;1D5E7;1D5E7;0054;0054;
+1D5E8;1D5E8;1D5E8;0055;0055;
+1D5E9;1D5E9;1D5E9;0056;0056;
+1D5EA;1D5EA;1D5EA;0057;0057;
+1D5EB;1D5EB;1D5EB;0058;0058;
+1D5EC;1D5EC;1D5EC;0059;0059;
+1D5ED;1D5ED;1D5ED;005A;005A;
+1D5EE;1D5EE;1D5EE;0061;0061;
+1D5EF;1D5EF;1D5EF;0062;0062;
+1D5F0;1D5F0;1D5F0;0063;0063;
+1D5F1;1D5F1;1D5F1;0064;0064;
+1D5F2;1D5F2;1D5F2;0065;0065;
+1D5F3;1D5F3;1D5F3;0066;0066;
+1D5F4;1D5F4;1D5F4;0067;0067;
+1D5F5;1D5F5;1D5F5;0068;0068;
+1D5F6;1D5F6;1D5F6;0069;0069;
+1D5F7;1D5F7;1D5F7;006A;006A;
+1D5F8;1D5F8;1D5F8;006B;006B;
+1D5F9;1D5F9;1D5F9;006C;006C;
+1D5FA;1D5FA;1D5FA;006D;006D;
+1D5FB;1D5FB;1D5FB;006E;006E;
+1D5FC;1D5FC;1D5FC;006F;006F;
+1D5FD;1D5FD;1D5FD;0070;0070;
+1D5FE;1D5FE;1D5FE;0071;0071;
+1D5FF;1D5FF;1D5FF;0072;0072;
+1D600;1D600;1D600;0073;0073;
+1D601;1D601;1D601;0074;0074;
+1D602;1D602;1D602;0075;0075;
+1D603;1D603;1D603;0076;0076;
+1D604;1D604;1D604;0077;0077;
+1D605;1D605;1D605;0078;0078;
+1D606;1D606;1D606;0079;0079;
+1D607;1D607;1D607;007A;007A;
+1D608;1D608;1D608;0041;0041;
+1D609;1D609;1D609;0042;0042;
+1D60A;1D60A;1D60A;0043;0043;
+1D60B;1D60B;1D60B;0044;0044;
+1D60C;1D60C;1D60C;0045;0045;
+1D60D;1D60D;1D60D;0046;0046;
+1D60E;1D60E;1D60E;0047;0047;
+1D60F;1D60F;1D60F;0048;0048;
+1D610;1D610;1D610;0049;0049;
+1D611;1D611;1D611;004A;004A;
+1D612;1D612;1D612;004B;004B;
+1D613;1D613;1D613;004C;004C;
+1D614;1D614;1D614;004D;004D;
+1D615;1D615;1D615;004E;004E;
+1D616;1D616;1D616;004F;004F;
+1D617;1D617;1D617;0050;0050;
+1D618;1D618;1D618;0051;0051;
+1D619;1D619;1D619;0052;0052;
+1D61A;1D61A;1D61A;0053;0053;
+1D61B;1D61B;1D61B;0054;0054;
+1D61C;1D61C;1D61C;0055;0055;
+1D61D;1D61D;1D61D;0056;0056;
+1D61E;1D61E;1D61E;0057;0057;
+1D61F;1D61F;1D61F;0058;0058;
+1D620;1D620;1D620;0059;0059;
+1D621;1D621;1D621;005A;005A;
+1D622;1D622;1D622;0061;0061;
+1D623;1D623;1D623;0062;0062;
+1D624;1D624;1D624;0063;0063;
+1D625;1D625;1D625;0064;0064;
+1D626;1D626;1D626;0065;0065;
+1D627;1D627;1D627;0066;0066;
+1D628;1D628;1D628;0067;0067;
+1D629;1D629;1D629;0068;0068;
+1D62A;1D62A;1D62A;0069;0069;
+1D62B;1D62B;1D62B;006A;006A;
+1D62C;1D62C;1D62C;006B;006B;
+1D62D;1D62D;1D62D;006C;006C;
+1D62E;1D62E;1D62E;006D;006D;
+1D62F;1D62F;1D62F;006E;006E;
+1D630;1D630;1D630;006F;006F;
+1D631;1D631;1D631;0070;0070;
+1D632;1D632;1D632;0071;0071;
+1D633;1D633;1D633;0072;0072;
+1D634;1D634;1D634;0073;0073;
+1D635;1D635;1D635;0074;0074;
+1D636;1D636;1D636;0075;0075;
+1D637;1D637;1D637;0076;0076;
+1D638;1D638;1D638;0077;0077;
+1D639;1D639;1D639;0078;0078;
+1D63A;1D63A;1D63A;0079;0079;
+1D63B;1D63B;1D63B;007A;007A;
+1D63C;1D63C;1D63C;0041;0041;
+1D63D;1D63D;1D63D;0042;0042;
+1D63E;1D63E;1D63E;0043;0043;
+1D63F;1D63F;1D63F;0044;0044;
+1D640;1D640;1D640;0045;0045;
+1D641;1D641;1D641;0046;0046;
+1D642;1D642;1D642;0047;0047;
+1D643;1D643;1D643;0048;0048;
+1D644;1D644;1D644;0049;0049;
+1D645;1D645;1D645;004A;004A;
+1D646;1D646;1D646;004B;004B;
+1D647;1D647;1D647;004C;004C;
+1D648;1D648;1D648;004D;004D;
+1D649;1D649;1D649;004E;004E;
+1D64A;1D64A;1D64A;004F;004F;
+1D64B;1D64B;1D64B;0050;0050;
+1D64C;1D64C;1D64C;0051;0051;
+1D64D;1D64D;1D64D;0052;0052;
+1D64E;1D64E;1D64E;0053;0053;
+1D64F;1D64F;1D64F;0054;0054;
+1D650;1D650;1D650;0055;0055;
+1D651;1D651;1D651;0056;0056;
+1D652;1D652;1D652;0057;0057;
+1D653;1D653;1D653;0058;0058;
+1D654;1D654;1D654;0059;0059;
+1D655;1D655;1D655;005A;005A;
+1D656;1D656;1D656;0061;0061;
+1D657;1D657;1D657;0062;0062;
+1D658;1D658;1D658;0063;0063;
+1D659;1D659;1D659;0064;0064;
+1D65A;1D65A;1D65A;0065;0065;
+1D65B;1D65B;1D65B;0066;0066;
+1D65C;1D65C;1D65C;0067;0067;
+1D65D;1D65D;1D65D;0068;0068;
+1D65E;1D65E;1D65E;0069;0069;
+1D65F;1D65F;1D65F;006A;006A;
+1D660;1D660;1D660;006B;006B;
+1D661;1D661;1D661;006C;006C;
+1D662;1D662;1D662;006D;006D;
+1D663;1D663;1D663;006E;006E;
+1D664;1D664;1D664;006F;006F;
+1D665;1D665;1D665;0070;0070;
+1D666;1D666;1D666;0071;0071;
+1D667;1D667;1D667;0072;0072;
+1D668;1D668;1D668;0073;0073;
+1D669;1D669;1D669;0074;0074;
+1D66A;1D66A;1D66A;0075;0075;
+1D66B;1D66B;1D66B;0076;0076;
+1D66C;1D66C;1D66C;0077;0077;
+1D66D;1D66D;1D66D;0078;0078;
+1D66E;1D66E;1D66E;0079;0079;
+1D66F;1D66F;1D66F;007A;007A;
+1D670;1D670;1D670;0041;0041;
+1D671;1D671;1D671;0042;0042;
+1D672;1D672;1D672;0043;0043;
+1D673;1D673;1D673;0044;0044;
+1D674;1D674;1D674;0045;0045;
+1D675;1D675;1D675;0046;0046;
+1D676;1D676;1D676;0047;0047;
+1D677;1D677;1D677;0048;0048;
+1D678;1D678;1D678;0049;0049;
+1D679;1D679;1D679;004A;004A;
+1D67A;1D67A;1D67A;004B;004B;
+1D67B;1D67B;1D67B;004C;004C;
+1D67C;1D67C;1D67C;004D;004D;
+1D67D;1D67D;1D67D;004E;004E;
+1D67E;1D67E;1D67E;004F;004F;
+1D67F;1D67F;1D67F;0050;0050;
+1D680;1D680;1D680;0051;0051;
+1D681;1D681;1D681;0052;0052;
+1D682;1D682;1D682;0053;0053;
+1D683;1D683;1D683;0054;0054;
+1D684;1D684;1D684;0055;0055;
+1D685;1D685;1D685;0056;0056;
+1D686;1D686;1D686;0057;0057;
+1D687;1D687;1D687;0058;0058;
+1D688;1D688;1D688;0059;0059;
+1D689;1D689;1D689;005A;005A;
+1D68A;1D68A;1D68A;0061;0061;
+1D68B;1D68B;1D68B;0062;0062;
+1D68C;1D68C;1D68C;0063;0063;
+1D68D;1D68D;1D68D;0064;0064;
+1D68E;1D68E;1D68E;0065;0065;
+1D68F;1D68F;1D68F;0066;0066;
+1D690;1D690;1D690;0067;0067;
+1D691;1D691;1D691;0068;0068;
+1D692;1D692;1D692;0069;0069;
+1D693;1D693;1D693;006A;006A;
+1D694;1D694;1D694;006B;006B;
+1D695;1D695;1D695;006C;006C;
+1D696;1D696;1D696;006D;006D;
+1D697;1D697;1D697;006E;006E;
+1D698;1D698;1D698;006F;006F;
+1D699;1D699;1D699;0070;0070;
+1D69A;1D69A;1D69A;0071;0071;
+1D69B;1D69B;1D69B;0072;0072;
+1D69C;1D69C;1D69C;0073;0073;
+1D69D;1D69D;1D69D;0074;0074;
+1D69E;1D69E;1D69E;0075;0075;
+1D69F;1D69F;1D69F;0076;0076;
+1D6A0;1D6A0;1D6A0;0077;0077;
+1D6A1;1D6A1;1D6A1;0078;0078;
+1D6A2;1D6A2;1D6A2;0079;0079;
+1D6A3;1D6A3;1D6A3;007A;007A;
+1D6A4;1D6A4;1D6A4;0131;0131;
+1D6A5;1D6A5;1D6A5;0237;0237;
+1D6A8;1D6A8;1D6A8;0391;0391;
+1D6A9;1D6A9;1D6A9;0392;0392;
+1D6AA;1D6AA;1D6AA;0393;0393;
+1D6AB;1D6AB;1D6AB;0394;0394;
+1D6AC;1D6AC;1D6AC;0395;0395;
+1D6AD;1D6AD;1D6AD;0396;0396;
+1D6AE;1D6AE;1D6AE;0397;0397;
+1D6AF;1D6AF;1D6AF;0398;0398;
+1D6B0;1D6B0;1D6B0;0399;0399;
+1D6B1;1D6B1;1D6B1;039A;039A;
+1D6B2;1D6B2;1D6B2;039B;039B;
+1D6B3;1D6B3;1D6B3;039C;039C;
+1D6B4;1D6B4;1D6B4;039D;039D;
+1D6B5;1D6B5;1D6B5;039E;039E;
+1D6B6;1D6B6;1D6B6;039F;039F;
+1D6B7;1D6B7;1D6B7;03A0;03A0;
+1D6B8;1D6B8;1D6B8;03A1;03A1;
+1D6B9;1D6B9;1D6B9;0398;0398;
+1D6BA;1D6BA;1D6BA;03A3;03A3;
+1D6BB;1D6BB;1D6BB;03A4;03A4;
+1D6BC;1D6BC;1D6BC;03A5;03A5;
+1D6BD;1D6BD;1D6BD;03A6;03A6;
+1D6BE;1D6BE;1D6BE;03A7;03A7;
+1D6BF;1D6BF;1D6BF;03A8;03A8;
+1D6C0;1D6C0;1D6C0;03A9;03A9;
+1D6C1;1D6C1;1D6C1;2207;2207;
+1D6C2;1D6C2;1D6C2;03B1;03B1;
+1D6C3;1D6C3;1D6C3;03B2;03B2;
+1D6C4;1D6C4;1D6C4;03B3;03B3;
+1D6C5;1D6C5;1D6C5;03B4;03B4;
+1D6C6;1D6C6;1D6C6;03B5;03B5;
+1D6C7;1D6C7;1D6C7;03B6;03B6;
+1D6C8;1D6C8;1D6C8;03B7;03B7;
+1D6C9;1D6C9;1D6C9;03B8;03B8;
+1D6CA;1D6CA;1D6CA;03B9;03B9;
+1D6CB;1D6CB;1D6CB;03BA;03BA;
+1D6CC;1D6CC;1D6CC;03BB;03BB;
+1D6CD;1D6CD;1D6CD;03BC;03BC;
+1D6CE;1D6CE;1D6CE;03BD;03BD;
+1D6CF;1D6CF;1D6CF;03BE;03BE;
+1D6D0;1D6D0;1D6D0;03BF;03BF;
+1D6D1;1D6D1;1D6D1;03C0;03C0;
+1D6D2;1D6D2;1D6D2;03C1;03C1;
+1D6D3;1D6D3;1D6D3;03C2;03C2;
+1D6D4;1D6D4;1D6D4;03C3;03C3;
+1D6D5;1D6D5;1D6D5;03C4;03C4;
+1D6D6;1D6D6;1D6D6;03C5;03C5;
+1D6D7;1D6D7;1D6D7;03C6;03C6;
+1D6D8;1D6D8;1D6D8;03C7;03C7;
+1D6D9;1D6D9;1D6D9;03C8;03C8;
+1D6DA;1D6DA;1D6DA;03C9;03C9;
+1D6DB;1D6DB;1D6DB;2202;2202;
+1D6DC;1D6DC;1D6DC;03B5;03B5;
+1D6DD;1D6DD;1D6DD;03B8;03B8;
+1D6DE;1D6DE;1D6DE;03BA;03BA;
+1D6DF;1D6DF;1D6DF;03C6;03C6;
+1D6E0;1D6E0;1D6E0;03C1;03C1;
+1D6E1;1D6E1;1D6E1;03C0;03C0;
+1D6E2;1D6E2;1D6E2;0391;0391;
+1D6E3;1D6E3;1D6E3;0392;0392;
+1D6E4;1D6E4;1D6E4;0393;0393;
+1D6E5;1D6E5;1D6E5;0394;0394;
+1D6E6;1D6E6;1D6E6;0395;0395;
+1D6E7;1D6E7;1D6E7;0396;0396;
+1D6E8;1D6E8;1D6E8;0397;0397;
+1D6E9;1D6E9;1D6E9;0398;0398;
+1D6EA;1D6EA;1D6EA;0399;0399;
+1D6EB;1D6EB;1D6EB;039A;039A;
+1D6EC;1D6EC;1D6EC;039B;039B;
+1D6ED;1D6ED;1D6ED;039C;039C;
+1D6EE;1D6EE;1D6EE;039D;039D;
+1D6EF;1D6EF;1D6EF;039E;039E;
+1D6F0;1D6F0;1D6F0;039F;039F;
+1D6F1;1D6F1;1D6F1;03A0;03A0;
+1D6F2;1D6F2;1D6F2;03A1;03A1;
+1D6F3;1D6F3;1D6F3;0398;0398;
+1D6F4;1D6F4;1D6F4;03A3;03A3;
+1D6F5;1D6F5;1D6F5;03A4;03A4;
+1D6F6;1D6F6;1D6F6;03A5;03A5;
+1D6F7;1D6F7;1D6F7;03A6;03A6;
+1D6F8;1D6F8;1D6F8;03A7;03A7;
+1D6F9;1D6F9;1D6F9;03A8;03A8;
+1D6FA;1D6FA;1D6FA;03A9;03A9;
+1D6FB;1D6FB;1D6FB;2207;2207;
+1D6FC;1D6FC;1D6FC;03B1;03B1;
+1D6FD;1D6FD;1D6FD;03B2;03B2;
+1D6FE;1D6FE;1D6FE;03B3;03B3;
+1D6FF;1D6FF;1D6FF;03B4;03B4;
+1D700;1D700;1D700;03B5;03B5;
+1D701;1D701;1D701;03B6;03B6;
+1D702;1D702;1D702;03B7;03B7;
+1D703;1D703;1D703;03B8;03B8;
+1D704;1D704;1D704;03B9;03B9;
+1D705;1D705;1D705;03BA;03BA;
+1D706;1D706;1D706;03BB;03BB;
+1D707;1D707;1D707;03BC;03BC;
+1D708;1D708;1D708;03BD;03BD;
+1D709;1D709;1D709;03BE;03BE;
+1D70A;1D70A;1D70A;03BF;03BF;
+1D70B;1D70B;1D70B;03C0;03C0;
+1D70C;1D70C;1D70C;03C1;03C1;
+1D70D;1D70D;1D70D;03C2;03C2;
+1D70E;1D70E;1D70E;03C3;03C3;
+1D70F;1D70F;1D70F;03C4;03C4;
+1D710;1D710;1D710;03C5;03C5;
+1D711;1D711;1D711;03C6;03C6;
+1D712;1D712;1D712;03C7;03C7;
+1D713;1D713;1D713;03C8;03C8;
+1D714;1D714;1D714;03C9;03C9;
+1D715;1D715;1D715;2202;2202;
+1D716;1D716;1D716;03B5;03B5;
+1D717;1D717;1D717;03B8;03B8;
+1D718;1D718;1D718;03BA;03BA;
+1D719;1D719;1D719;03C6;03C6;
+1D71A;1D71A;1D71A;03C1;03C1;
+1D71B;1D71B;1D71B;03C0;03C0;
+1D71C;1D71C;1D71C;0391;0391;
+1D71D;1D71D;1D71D;0392;0392;
+1D71E;1D71E;1D71E;0393;0393;
+1D71F;1D71F;1D71F;0394;0394;
+1D720;1D720;1D720;0395;0395;
+1D721;1D721;1D721;0396;0396;
+1D722;1D722;1D722;0397;0397;
+1D723;1D723;1D723;0398;0398;
+1D724;1D724;1D724;0399;0399;
+1D725;1D725;1D725;039A;039A;
+1D726;1D726;1D726;039B;039B;
+1D727;1D727;1D727;039C;039C;
+1D728;1D728;1D728;039D;039D;
+1D729;1D729;1D729;039E;039E;
+1D72A;1D72A;1D72A;039F;039F;
+1D72B;1D72B;1D72B;03A0;03A0;
+1D72C;1D72C;1D72C;03A1;03A1;
+1D72D;1D72D;1D72D;0398;0398;
+1D72E;1D72E;1D72E;03A3;03A3;
+1D72F;1D72F;1D72F;03A4;03A4;
+1D730;1D730;1D730;03A5;03A5;
+1D731;1D731;1D731;03A6;03A6;
+1D732;1D732;1D732;03A7;03A7;
+1D733;1D733;1D733;03A8;03A8;
+1D734;1D734;1D734;03A9;03A9;
+1D735;1D735;1D735;2207;2207;
+1D736;1D736;1D736;03B1;03B1;
+1D737;1D737;1D737;03B2;03B2;
+1D738;1D738;1D738;03B3;03B3;
+1D739;1D739;1D739;03B4;03B4;
+1D73A;1D73A;1D73A;03B5;03B5;
+1D73B;1D73B;1D73B;03B6;03B6;
+1D73C;1D73C;1D73C;03B7;03B7;
+1D73D;1D73D;1D73D;03B8;03B8;
+1D73E;1D73E;1D73E;03B9;03B9;
+1D73F;1D73F;1D73F;03BA;03BA;
+1D740;1D740;1D740;03BB;03BB;
+1D741;1D741;1D741;03BC;03BC;
+1D742;1D742;1D742;03BD;03BD;
+1D743;1D743;1D743;03BE;03BE;
+1D744;1D744;1D744;03BF;03BF;
+1D745;1D745;1D745;03C0;03C0;
+1D746;1D746;1D746;03C1;03C1;
+1D747;1D747;1D747;03C2;03C2;
+1D748;1D748;1D748;03C3;03C3;
+1D749;1D749;1D749;03C4;03C4;
+1D74A;1D74A;1D74A;03C5;03C5;
+1D74B;1D74B;1D74B;03C6;03C6;
+1D74C;1D74C;1D74C;03C7;03C7;
+1D74D;1D74D;1D74D;03C8;03C8;
+1D74E;1D74E;1D74E;03C9;03C9;
+1D74F;1D74F;1D74F;2202;2202;
+1D750;1D750;1D750;03B5;03B5;
+1D751;1D751;1D751;03B8;03B8;
+1D752;1D752;1D752;03BA;03BA;
+1D753;1D753;1D753;03C6;03C6;
+1D754;1D754;1D754;03C1;03C1;
+1D755;1D755;1D755;03C0;03C0;
+1D756;1D756;1D756;0391;0391;
+1D757;1D757;1D757;0392;0392;
+1D758;1D758;1D758;0393;0393;
+1D759;1D759;1D759;0394;0394;
+1D75A;1D75A;1D75A;0395;0395;
+1D75B;1D75B;1D75B;0396;0396;
+1D75C;1D75C;1D75C;0397;0397;
+1D75D;1D75D;1D75D;0398;0398;
+1D75E;1D75E;1D75E;0399;0399;
+1D75F;1D75F;1D75F;039A;039A;
+1D760;1D760;1D760;039B;039B;
+1D761;1D761;1D761;039C;039C;
+1D762;1D762;1D762;039D;039D;
+1D763;1D763;1D763;039E;039E;
+1D764;1D764;1D764;039F;039F;
+1D765;1D765;1D765;03A0;03A0;
+1D766;1D766;1D766;03A1;03A1;
+1D767;1D767;1D767;0398;0398;
+1D768;1D768;1D768;03A3;03A3;
+1D769;1D769;1D769;03A4;03A4;
+1D76A;1D76A;1D76A;03A5;03A5;
+1D76B;1D76B;1D76B;03A6;03A6;
+1D76C;1D76C;1D76C;03A7;03A7;
+1D76D;1D76D;1D76D;03A8;03A8;
+1D76E;1D76E;1D76E;03A9;03A9;
+1D76F;1D76F;1D76F;2207;2207;
+1D770;1D770;1D770;03B1;03B1;
+1D771;1D771;1D771;03B2;03B2;
+1D772;1D772;1D772;03B3;03B3;
+1D773;1D773;1D773;03B4;03B4;
+1D774;1D774;1D774;03B5;03B5;
+1D775;1D775;1D775;03B6;03B6;
+1D776;1D776;1D776;03B7;03B7;
+1D777;1D777;1D777;03B8;03B8;
+1D778;1D778;1D778;03B9;03B9;
+1D779;1D779;1D779;03BA;03BA;
+1D77A;1D77A;1D77A;03BB;03BB;
+1D77B;1D77B;1D77B;03BC;03BC;
+1D77C;1D77C;1D77C;03BD;03BD;
+1D77D;1D77D;1D77D;03BE;03BE;
+1D77E;1D77E;1D77E;03BF;03BF;
+1D77F;1D77F;1D77F;03C0;03C0;
+1D780;1D780;1D780;03C1;03C1;
+1D781;1D781;1D781;03C2;03C2;
+1D782;1D782;1D782;03C3;03C3;
+1D783;1D783;1D783;03C4;03C4;
+1D784;1D784;1D784;03C5;03C5;
+1D785;1D785;1D785;03C6;03C6;
+1D786;1D786;1D786;03C7;03C7;
+1D787;1D787;1D787;03C8;03C8;
+1D788;1D788;1D788;03C9;03C9;
+1D789;1D789;1D789;2202;2202;
+1D78A;1D78A;1D78A;03B5;03B5;
+1D78B;1D78B;1D78B;03B8;03B8;
+1D78C;1D78C;1D78C;03BA;03BA;
+1D78D;1D78D;1D78D;03C6;03C6;
+1D78E;1D78E;1D78E;03C1;03C1;
+1D78F;1D78F;1D78F;03C0;03C0;
+1D790;1D790;1D790;0391;0391;
+1D791;1D791;1D791;0392;0392;
+1D792;1D792;1D792;0393;0393;
+1D793;1D793;1D793;0394;0394;
+1D794;1D794;1D794;0395;0395;
+1D795;1D795;1D795;0396;0396;
+1D796;1D796;1D796;0397;0397;
+1D797;1D797;1D797;0398;0398;
+1D798;1D798;1D798;0399;0399;
+1D799;1D799;1D799;039A;039A;
+1D79A;1D79A;1D79A;039B;039B;
+1D79B;1D79B;1D79B;039C;039C;
+1D79C;1D79C;1D79C;039D;039D;
+1D79D;1D79D;1D79D;039E;039E;
+1D79E;1D79E;1D79E;039F;039F;
+1D79F;1D79F;1D79F;03A0;03A0;
+1D7A0;1D7A0;1D7A0;03A1;03A1;
+1D7A1;1D7A1;1D7A1;0398;0398;
+1D7A2;1D7A2;1D7A2;03A3;03A3;
+1D7A3;1D7A3;1D7A3;03A4;03A4;
+1D7A4;1D7A4;1D7A4;03A5;03A5;
+1D7A5;1D7A5;1D7A5;03A6;03A6;
+1D7A6;1D7A6;1D7A6;03A7;03A7;
+1D7A7;1D7A7;1D7A7;03A8;03A8;
+1D7A8;1D7A8;1D7A8;03A9;03A9;
+1D7A9;1D7A9;1D7A9;2207;2207;
+1D7AA;1D7AA;1D7AA;03B1;03B1;
+1D7AB;1D7AB;1D7AB;03B2;03B2;
+1D7AC;1D7AC;1D7AC;03B3;03B3;
+1D7AD;1D7AD;1D7AD;03B4;03B4;
+1D7AE;1D7AE;1D7AE;03B5;03B5;
+1D7AF;1D7AF;1D7AF;03B6;03B6;
+1D7B0;1D7B0;1D7B0;03B7;03B7;
+1D7B1;1D7B1;1D7B1;03B8;03B8;
+1D7B2;1D7B2;1D7B2;03B9;03B9;
+1D7B3;1D7B3;1D7B3;03BA;03BA;
+1D7B4;1D7B4;1D7B4;03BB;03BB;
+1D7B5;1D7B5;1D7B5;03BC;03BC;
+1D7B6;1D7B6;1D7B6;03BD;03BD;
+1D7B7;1D7B7;1D7B7;03BE;03BE;
+1D7B8;1D7B8;1D7B8;03BF;03BF;
+1D7B9;1D7B9;1D7B9;03C0;03C0;
+1D7BA;1D7BA;1D7BA;03C1;03C1;
+1D7BB;1D7BB;1D7BB;03C2;03C2;
+1D7BC;1D7BC;1D7BC;03C3;03C3;
+1D7BD;1D7BD;1D7BD;03C4;03C4;
+1D7BE;1D7BE;1D7BE;03C5;03C5;
+1D7BF;1D7BF;1D7BF;03C6;03C6;
+1D7C0;1D7C0;1D7C0;03C7;03C7;
+1D7C1;1D7C1;1D7C1;03C8;03C8;
+1D7C2;1D7C2;1D7C2;03C9;03C9;
+1D7C3;1D7C3;1D7C3;2202;2202;
+1D7C4;1D7C4;1D7C4;03B5;03B5;
+1D7C5;1D7C5;1D7C5;03B8;03B8;
+1D7C6;1D7C6;1D7C6;03BA;03BA;
+1D7C7;1D7C7;1D7C7;03C6;03C6;
+1D7C8;1D7C8;1D7C8;03C1;03C1;
+1D7C9;1D7C9;1D7C9;03C0;03C0;
+1D7CE;1D7CE;1D7CE;0030;0030;
+1D7CF;1D7CF;1D7CF;0031;0031;
+1D7D0;1D7D0;1D7D0;0032;0032;
+1D7D1;1D7D1;1D7D1;0033;0033;
+1D7D2;1D7D2;1D7D2;0034;0034;
+1D7D3;1D7D3;1D7D3;0035;0035;
+1D7D4;1D7D4;1D7D4;0036;0036;
+1D7D5;1D7D5;1D7D5;0037;0037;
+1D7D6;1D7D6;1D7D6;0038;0038;
+1D7D7;1D7D7;1D7D7;0039;0039;
+1D7D8;1D7D8;1D7D8;0030;0030;
+1D7D9;1D7D9;1D7D9;0031;0031;
+1D7DA;1D7DA;1D7DA;0032;0032;
+1D7DB;1D7DB;1D7DB;0033;0033;
+1D7DC;1D7DC;1D7DC;0034;0034;
+1D7DD;1D7DD;1D7DD;0035;0035;
+1D7DE;1D7DE;1D7DE;0036;0036;
+1D7DF;1D7DF;1D7DF;0037;0037;
+1D7E0;1D7E0;1D7E0;0038;0038;
+1D7E1;1D7E1;1D7E1;0039;0039;
+1D7E2;1D7E2;1D7E2;0030;0030;
+1D7E3;1D7E3;1D7E3;0031;0031;
+1D7E4;1D7E4;1D7E4;0032;0032;
+1D7E5;1D7E5;1D7E5;0033;0033;
+1D7E6;1D7E6;1D7E6;0034;0034;
+1D7E7;1D7E7;1D7E7;0035;0035;
+1D7E8;1D7E8;1D7E8;0036;0036;
+1D7E9;1D7E9;1D7E9;0037;0037;
+1D7EA;1D7EA;1D7EA;0038;0038;
+1D7EB;1D7EB;1D7EB;0039;0039;
+1D7EC;1D7EC;1D7EC;0030;0030;
+1D7ED;1D7ED;1D7ED;0031;0031;
+1D7EE;1D7EE;1D7EE;0032;0032;
+1D7EF;1D7EF;1D7EF;0033;0033;
+1D7F0;1D7F0;1D7F0;0034;0034;
+1D7F1;1D7F1;1D7F1;0035;0035;
+1D7F2;1D7F2;1D7F2;0036;0036;
+1D7F3;1D7F3;1D7F3;0037;0037;
+1D7F4;1D7F4;1D7F4;0038;0038;
+1D7F5;1D7F5;1D7F5;0039;0039;
+1D7F6;1D7F6;1D7F6;0030;0030;
+1D7F7;1D7F7;1D7F7;0031;0031;
+1D7F8;1D7F8;1D7F8;0032;0032;
+1D7F9;1D7F9;1D7F9;0033;0033;
+1D7FA;1D7FA;1D7FA;0034;0034;
+1D7FB;1D7FB;1D7FB;0035;0035;
+1D7FC;1D7FC;1D7FC;0036;0036;
+1D7FD;1D7FD;1D7FD;0037;0037;
+1D7FE;1D7FE;1D7FE;0038;0038;
+1D7FF;1D7FF;1D7FF;0039;0039;
+2F800;4E3D;4E3D;4E3D;4E3D;
+2F801;4E38;4E38;4E38;4E38;
+2F802;4E41;4E41;4E41;4E41;
+2F803;20122;20122;20122;20122;
+2F804;4F60;4F60;4F60;4F60;
+2F805;4FAE;4FAE;4FAE;4FAE;
+2F806;4FBB;4FBB;4FBB;4FBB;
+2F807;5002;5002;5002;5002;
+2F808;507A;507A;507A;507A;
+2F809;5099;5099;5099;5099;
+2F80A;50E7;50E7;50E7;50E7;
+2F80B;50CF;50CF;50CF;50CF;
+2F80C;349E;349E;349E;349E;
+2F80D;2063A;2063A;2063A;2063A;
+2F80E;514D;514D;514D;514D;
+2F80F;5154;5154;5154;5154;
+2F810;5164;5164;5164;5164;
+2F811;5177;5177;5177;5177;
+2F812;2051C;2051C;2051C;2051C;
+2F813;34B9;34B9;34B9;34B9;
+2F814;5167;5167;5167;5167;
+2F815;518D;518D;518D;518D;
+2F816;2054B;2054B;2054B;2054B;
+2F817;5197;5197;5197;5197;
+2F818;51A4;51A4;51A4;51A4;
+2F819;4ECC;4ECC;4ECC;4ECC;
+2F81A;51AC;51AC;51AC;51AC;
+2F81B;51B5;51B5;51B5;51B5;
+2F81C;291DF;291DF;291DF;291DF;
+2F81D;51F5;51F5;51F5;51F5;
+2F81E;5203;5203;5203;5203;
+2F81F;34DF;34DF;34DF;34DF;
+2F820;523B;523B;523B;523B;
+2F821;5246;5246;5246;5246;
+2F822;5272;5272;5272;5272;
+2F823;5277;5277;5277;5277;
+2F824;3515;3515;3515;3515;
+2F825;52C7;52C7;52C7;52C7;
+2F826;52C9;52C9;52C9;52C9;
+2F827;52E4;52E4;52E4;52E4;
+2F828;52FA;52FA;52FA;52FA;
+2F829;5305;5305;5305;5305;
+2F82A;5306;5306;5306;5306;
+2F82B;5317;5317;5317;5317;
+2F82C;5349;5349;5349;5349;
+2F82D;5351;5351;5351;5351;
+2F82E;535A;535A;535A;535A;
+2F82F;5373;5373;5373;5373;
+2F830;537D;537D;537D;537D;
+2F831;537F;537F;537F;537F;
+2F832;537F;537F;537F;537F;
+2F833;537F;537F;537F;537F;
+2F834;20A2C;20A2C;20A2C;20A2C;
+2F835;7070;7070;7070;7070;
+2F836;53CA;53CA;53CA;53CA;
+2F837;53DF;53DF;53DF;53DF;
+2F838;20B63;20B63;20B63;20B63;
+2F839;53EB;53EB;53EB;53EB;
+2F83A;53F1;53F1;53F1;53F1;
+2F83B;5406;5406;5406;5406;
+2F83C;549E;549E;549E;549E;
+2F83D;5438;5438;5438;5438;
+2F83E;5448;5448;5448;5448;
+2F83F;5468;5468;5468;5468;
+2F840;54A2;54A2;54A2;54A2;
+2F841;54F6;54F6;54F6;54F6;
+2F842;5510;5510;5510;5510;
+2F843;5553;5553;5553;5553;
+2F844;5563;5563;5563;5563;
+2F845;5584;5584;5584;5584;
+2F846;5584;5584;5584;5584;
+2F847;5599;5599;5599;5599;
+2F848;55AB;55AB;55AB;55AB;
+2F849;55B3;55B3;55B3;55B3;
+2F84A;55C2;55C2;55C2;55C2;
+2F84B;5716;5716;5716;5716;
+2F84C;5606;5606;5606;5606;
+2F84D;5717;5717;5717;5717;
+2F84E;5651;5651;5651;5651;
+2F84F;5674;5674;5674;5674;
+2F850;5207;5207;5207;5207;
+2F851;58EE;58EE;58EE;58EE;
+2F852;57CE;57CE;57CE;57CE;
+2F853;57F4;57F4;57F4;57F4;
+2F854;580D;580D;580D;580D;
+2F855;578B;578B;578B;578B;
+2F856;5832;5832;5832;5832;
+2F857;5831;5831;5831;5831;
+2F858;58AC;58AC;58AC;58AC;
+2F859;214E4;214E4;214E4;214E4;
+2F85A;58F2;58F2;58F2;58F2;
+2F85B;58F7;58F7;58F7;58F7;
+2F85C;5906;5906;5906;5906;
+2F85D;591A;591A;591A;591A;
+2F85E;5922;5922;5922;5922;
+2F85F;5962;5962;5962;5962;
+2F860;216A8;216A8;216A8;216A8;
+2F861;216EA;216EA;216EA;216EA;
+2F862;59EC;59EC;59EC;59EC;
+2F863;5A1B;5A1B;5A1B;5A1B;
+2F864;5A27;5A27;5A27;5A27;
+2F865;59D8;59D8;59D8;59D8;
+2F866;5A66;5A66;5A66;5A66;
+2F867;36EE;36EE;36EE;36EE;
+2F868;36FC;36FC;36FC;36FC;
+2F869;5B08;5B08;5B08;5B08;
+2F86A;5B3E;5B3E;5B3E;5B3E;
+2F86B;5B3E;5B3E;5B3E;5B3E;
+2F86C;219C8;219C8;219C8;219C8;
+2F86D;5BC3;5BC3;5BC3;5BC3;
+2F86E;5BD8;5BD8;5BD8;5BD8;
+2F86F;5BE7;5BE7;5BE7;5BE7;
+2F870;5BF3;5BF3;5BF3;5BF3;
+2F871;21B18;21B18;21B18;21B18;
+2F872;5BFF;5BFF;5BFF;5BFF;
+2F873;5C06;5C06;5C06;5C06;
+2F874;5F53;5F53;5F53;5F53;
+2F875;5C22;5C22;5C22;5C22;
+2F876;3781;3781;3781;3781;
+2F877;5C60;5C60;5C60;5C60;
+2F878;5C6E;5C6E;5C6E;5C6E;
+2F879;5CC0;5CC0;5CC0;5CC0;
+2F87A;5C8D;5C8D;5C8D;5C8D;
+2F87B;21DE4;21DE4;21DE4;21DE4;
+2F87C;5D43;5D43;5D43;5D43;
+2F87D;21DE6;21DE6;21DE6;21DE6;
+2F87E;5D6E;5D6E;5D6E;5D6E;
+2F87F;5D6B;5D6B;5D6B;5D6B;
+2F880;5D7C;5D7C;5D7C;5D7C;
+2F881;5DE1;5DE1;5DE1;5DE1;
+2F882;5DE2;5DE2;5DE2;5DE2;
+2F883;382F;382F;382F;382F;
+2F884;5DFD;5DFD;5DFD;5DFD;
+2F885;5E28;5E28;5E28;5E28;
+2F886;5E3D;5E3D;5E3D;5E3D;
+2F887;5E69;5E69;5E69;5E69;
+2F888;3862;3862;3862;3862;
+2F889;22183;22183;22183;22183;
+2F88A;387C;387C;387C;387C;
+2F88B;5EB0;5EB0;5EB0;5EB0;
+2F88C;5EB3;5EB3;5EB3;5EB3;
+2F88D;5EB6;5EB6;5EB6;5EB6;
+2F88E;5ECA;5ECA;5ECA;5ECA;
+2F88F;2A392;2A392;2A392;2A392;
+2F890;5EFE;5EFE;5EFE;5EFE;
+2F891;22331;22331;22331;22331;
+2F892;22331;22331;22331;22331;
+2F893;8201;8201;8201;8201;
+2F894;5F22;5F22;5F22;5F22;
+2F895;5F22;5F22;5F22;5F22;
+2F896;38C7;38C7;38C7;38C7;
+2F897;232B8;232B8;232B8;232B8;
+2F898;261DA;261DA;261DA;261DA;
+2F899;5F62;5F62;5F62;5F62;
+2F89A;5F6B;5F6B;5F6B;5F6B;
+2F89B;38E3;38E3;38E3;38E3;
+2F89C;5F9A;5F9A;5F9A;5F9A;
+2F89D;5FCD;5FCD;5FCD;5FCD;
+2F89E;5FD7;5FD7;5FD7;5FD7;
+2F89F;5FF9;5FF9;5FF9;5FF9;
+2F8A0;6081;6081;6081;6081;
+2F8A1;393A;393A;393A;393A;
+2F8A2;391C;391C;391C;391C;
+2F8A3;6094;6094;6094;6094;
+2F8A4;226D4;226D4;226D4;226D4;
+2F8A5;60C7;60C7;60C7;60C7;
+2F8A6;6148;6148;6148;6148;
+2F8A7;614C;614C;614C;614C;
+2F8A8;614E;614E;614E;614E;
+2F8A9;614C;614C;614C;614C;
+2F8AA;617A;617A;617A;617A;
+2F8AB;618E;618E;618E;618E;
+2F8AC;61B2;61B2;61B2;61B2;
+2F8AD;61A4;61A4;61A4;61A4;
+2F8AE;61AF;61AF;61AF;61AF;
+2F8AF;61DE;61DE;61DE;61DE;
+2F8B0;61F2;61F2;61F2;61F2;
+2F8B1;61F6;61F6;61F6;61F6;
+2F8B2;6210;6210;6210;6210;
+2F8B3;621B;621B;621B;621B;
+2F8B4;625D;625D;625D;625D;
+2F8B5;62B1;62B1;62B1;62B1;
+2F8B6;62D4;62D4;62D4;62D4;
+2F8B7;6350;6350;6350;6350;
+2F8B8;22B0C;22B0C;22B0C;22B0C;
+2F8B9;633D;633D;633D;633D;
+2F8BA;62FC;62FC;62FC;62FC;
+2F8BB;6368;6368;6368;6368;
+2F8BC;6383;6383;6383;6383;
+2F8BD;63E4;63E4;63E4;63E4;
+2F8BE;22BF1;22BF1;22BF1;22BF1;
+2F8BF;6422;6422;6422;6422;
+2F8C0;63C5;63C5;63C5;63C5;
+2F8C1;63A9;63A9;63A9;63A9;
+2F8C2;3A2E;3A2E;3A2E;3A2E;
+2F8C3;6469;6469;6469;6469;
+2F8C4;647E;647E;647E;647E;
+2F8C5;649D;649D;649D;649D;
+2F8C6;6477;6477;6477;6477;
+2F8C7;3A6C;3A6C;3A6C;3A6C;
+2F8C8;654F;654F;654F;654F;
+2F8C9;656C;656C;656C;656C;
+2F8CA;2300A;2300A;2300A;2300A;
+2F8CB;65E3;65E3;65E3;65E3;
+2F8CC;66F8;66F8;66F8;66F8;
+2F8CD;6649;6649;6649;6649;
+2F8CE;3B19;3B19;3B19;3B19;
+2F8CF;6691;6691;6691;6691;
+2F8D0;3B08;3B08;3B08;3B08;
+2F8D1;3AE4;3AE4;3AE4;3AE4;
+2F8D2;5192;5192;5192;5192;
+2F8D3;5195;5195;5195;5195;
+2F8D4;6700;6700;6700;6700;
+2F8D5;669C;669C;669C;669C;
+2F8D6;80AD;80AD;80AD;80AD;
+2F8D7;43D9;43D9;43D9;43D9;
+2F8D8;6717;6717;6717;6717;
+2F8D9;671B;671B;671B;671B;
+2F8DA;6721;6721;6721;6721;
+2F8DB;675E;675E;675E;675E;
+2F8DC;6753;6753;6753;6753;
+2F8DD;233C3;233C3;233C3;233C3;
+2F8DE;3B49;3B49;3B49;3B49;
+2F8DF;67FA;67FA;67FA;67FA;
+2F8E0;6785;6785;6785;6785;
+2F8E1;6852;6852;6852;6852;
+2F8E2;6885;6885;6885;6885;
+2F8E3;2346D;2346D;2346D;2346D;
+2F8E4;688E;688E;688E;688E;
+2F8E5;681F;681F;681F;681F;
+2F8E6;6914;6914;6914;6914;
+2F8E7;3B9D;3B9D;3B9D;3B9D;
+2F8E8;6942;6942;6942;6942;
+2F8E9;69A3;69A3;69A3;69A3;
+2F8EA;69EA;69EA;69EA;69EA;
+2F8EB;6AA8;6AA8;6AA8;6AA8;
+2F8EC;236A3;236A3;236A3;236A3;
+2F8ED;6ADB;6ADB;6ADB;6ADB;
+2F8EE;3C18;3C18;3C18;3C18;
+2F8EF;6B21;6B21;6B21;6B21;
+2F8F0;238A7;238A7;238A7;238A7;
+2F8F1;6B54;6B54;6B54;6B54;
+2F8F2;3C4E;3C4E;3C4E;3C4E;
+2F8F3;6B72;6B72;6B72;6B72;
+2F8F4;6B9F;6B9F;6B9F;6B9F;
+2F8F5;6BBA;6BBA;6BBA;6BBA;
+2F8F6;6BBB;6BBB;6BBB;6BBB;
+2F8F7;23A8D;23A8D;23A8D;23A8D;
+2F8F8;21D0B;21D0B;21D0B;21D0B;
+2F8F9;23AFA;23AFA;23AFA;23AFA;
+2F8FA;6C4E;6C4E;6C4E;6C4E;
+2F8FB;23CBC;23CBC;23CBC;23CBC;
+2F8FC;6CBF;6CBF;6CBF;6CBF;
+2F8FD;6CCD;6CCD;6CCD;6CCD;
+2F8FE;6C67;6C67;6C67;6C67;
+2F8FF;6D16;6D16;6D16;6D16;
+2F900;6D3E;6D3E;6D3E;6D3E;
+2F901;6D77;6D77;6D77;6D77;
+2F902;6D41;6D41;6D41;6D41;
+2F903;6D69;6D69;6D69;6D69;
+2F904;6D78;6D78;6D78;6D78;
+2F905;6D85;6D85;6D85;6D85;
+2F906;23D1E;23D1E;23D1E;23D1E;
+2F907;6D34;6D34;6D34;6D34;
+2F908;6E2F;6E2F;6E2F;6E2F;
+2F909;6E6E;6E6E;6E6E;6E6E;
+2F90A;3D33;3D33;3D33;3D33;
+2F90B;6ECB;6ECB;6ECB;6ECB;
+2F90C;6EC7;6EC7;6EC7;6EC7;
+2F90D;23ED1;23ED1;23ED1;23ED1;
+2F90E;6DF9;6DF9;6DF9;6DF9;
+2F90F;6F6E;6F6E;6F6E;6F6E;
+2F910;23F5E;23F5E;23F5E;23F5E;
+2F911;23F8E;23F8E;23F8E;23F8E;
+2F912;6FC6;6FC6;6FC6;6FC6;
+2F913;7039;7039;7039;7039;
+2F914;701E;701E;701E;701E;
+2F915;701B;701B;701B;701B;
+2F916;3D96;3D96;3D96;3D96;
+2F917;704A;704A;704A;704A;
+2F918;707D;707D;707D;707D;
+2F919;7077;7077;7077;7077;
+2F91A;70AD;70AD;70AD;70AD;
+2F91B;20525;20525;20525;20525;
+2F91C;7145;7145;7145;7145;
+2F91D;24263;24263;24263;24263;
+2F91E;719C;719C;719C;719C;
+2F91F;243AB;243AB;243AB;243AB;
+2F920;7228;7228;7228;7228;
+2F921;7235;7235;7235;7235;
+2F922;7250;7250;7250;7250;
+2F923;24608;24608;24608;24608;
+2F924;7280;7280;7280;7280;
+2F925;7295;7295;7295;7295;
+2F926;24735;24735;24735;24735;
+2F927;24814;24814;24814;24814;
+2F928;737A;737A;737A;737A;
+2F929;738B;738B;738B;738B;
+2F92A;3EAC;3EAC;3EAC;3EAC;
+2F92B;73A5;73A5;73A5;73A5;
+2F92C;3EB8;3EB8;3EB8;3EB8;
+2F92D;3EB8;3EB8;3EB8;3EB8;
+2F92E;7447;7447;7447;7447;
+2F92F;745C;745C;745C;745C;
+2F930;7471;7471;7471;7471;
+2F931;7485;7485;7485;7485;
+2F932;74CA;74CA;74CA;74CA;
+2F933;3F1B;3F1B;3F1B;3F1B;
+2F934;7524;7524;7524;7524;
+2F935;24C36;24C36;24C36;24C36;
+2F936;753E;753E;753E;753E;
+2F937;24C92;24C92;24C92;24C92;
+2F938;7570;7570;7570;7570;
+2F939;2219F;2219F;2219F;2219F;
+2F93A;7610;7610;7610;7610;
+2F93B;24FA1;24FA1;24FA1;24FA1;
+2F93C;24FB8;24FB8;24FB8;24FB8;
+2F93D;25044;25044;25044;25044;
+2F93E;3FFC;3FFC;3FFC;3FFC;
+2F93F;4008;4008;4008;4008;
+2F940;76F4;76F4;76F4;76F4;
+2F941;250F3;250F3;250F3;250F3;
+2F942;250F2;250F2;250F2;250F2;
+2F943;25119;25119;25119;25119;
+2F944;25133;25133;25133;25133;
+2F945;771E;771E;771E;771E;
+2F946;771F;771F;771F;771F;
+2F947;771F;771F;771F;771F;
+2F948;774A;774A;774A;774A;
+2F949;4039;4039;4039;4039;
+2F94A;778B;778B;778B;778B;
+2F94B;4046;4046;4046;4046;
+2F94C;4096;4096;4096;4096;
+2F94D;2541D;2541D;2541D;2541D;
+2F94E;784E;784E;784E;784E;
+2F94F;788C;788C;788C;788C;
+2F950;78CC;78CC;78CC;78CC;
+2F951;40E3;40E3;40E3;40E3;
+2F952;25626;25626;25626;25626;
+2F953;7956;7956;7956;7956;
+2F954;2569A;2569A;2569A;2569A;
+2F955;256C5;256C5;256C5;256C5;
+2F956;798F;798F;798F;798F;
+2F957;79EB;79EB;79EB;79EB;
+2F958;412F;412F;412F;412F;
+2F959;7A40;7A40;7A40;7A40;
+2F95A;7A4A;7A4A;7A4A;7A4A;
+2F95B;7A4F;7A4F;7A4F;7A4F;
+2F95C;2597C;2597C;2597C;2597C;
+2F95D;25AA7;25AA7;25AA7;25AA7;
+2F95E;25AA7;25AA7;25AA7;25AA7;
+2F95F;7AEE;7AEE;7AEE;7AEE;
+2F960;4202;4202;4202;4202;
+2F961;25BAB;25BAB;25BAB;25BAB;
+2F962;7BC6;7BC6;7BC6;7BC6;
+2F963;7BC9;7BC9;7BC9;7BC9;
+2F964;4227;4227;4227;4227;
+2F965;25C80;25C80;25C80;25C80;
+2F966;7CD2;7CD2;7CD2;7CD2;
+2F967;42A0;42A0;42A0;42A0;
+2F968;7CE8;7CE8;7CE8;7CE8;
+2F969;7CE3;7CE3;7CE3;7CE3;
+2F96A;7D00;7D00;7D00;7D00;
+2F96B;25F86;25F86;25F86;25F86;
+2F96C;7D63;7D63;7D63;7D63;
+2F96D;4301;4301;4301;4301;
+2F96E;7DC7;7DC7;7DC7;7DC7;
+2F96F;7E02;7E02;7E02;7E02;
+2F970;7E45;7E45;7E45;7E45;
+2F971;4334;4334;4334;4334;
+2F972;26228;26228;26228;26228;
+2F973;26247;26247;26247;26247;
+2F974;4359;4359;4359;4359;
+2F975;262D9;262D9;262D9;262D9;
+2F976;7F7A;7F7A;7F7A;7F7A;
+2F977;2633E;2633E;2633E;2633E;
+2F978;7F95;7F95;7F95;7F95;
+2F979;7FFA;7FFA;7FFA;7FFA;
+2F97A;8005;8005;8005;8005;
+2F97B;264DA;264DA;264DA;264DA;
+2F97C;26523;26523;26523;26523;
+2F97D;8060;8060;8060;8060;
+2F97E;265A8;265A8;265A8;265A8;
+2F97F;8070;8070;8070;8070;
+2F980;2335F;2335F;2335F;2335F;
+2F981;43D5;43D5;43D5;43D5;
+2F982;80B2;80B2;80B2;80B2;
+2F983;8103;8103;8103;8103;
+2F984;440B;440B;440B;440B;
+2F985;813E;813E;813E;813E;
+2F986;5AB5;5AB5;5AB5;5AB5;
+2F987;267A7;267A7;267A7;267A7;
+2F988;267B5;267B5;267B5;267B5;
+2F989;23393;23393;23393;23393;
+2F98A;2339C;2339C;2339C;2339C;
+2F98B;8201;8201;8201;8201;
+2F98C;8204;8204;8204;8204;
+2F98D;8F9E;8F9E;8F9E;8F9E;
+2F98E;446B;446B;446B;446B;
+2F98F;8291;8291;8291;8291;
+2F990;828B;828B;828B;828B;
+2F991;829D;829D;829D;829D;
+2F992;52B3;52B3;52B3;52B3;
+2F993;82B1;82B1;82B1;82B1;
+2F994;82B3;82B3;82B3;82B3;
+2F995;82BD;82BD;82BD;82BD;
+2F996;82E6;82E6;82E6;82E6;
+2F997;26B3C;26B3C;26B3C;26B3C;
+2F998;82E5;82E5;82E5;82E5;
+2F999;831D;831D;831D;831D;
+2F99A;8363;8363;8363;8363;
+2F99B;83AD;83AD;83AD;83AD;
+2F99C;8323;8323;8323;8323;
+2F99D;83BD;83BD;83BD;83BD;
+2F99E;83E7;83E7;83E7;83E7;
+2F99F;8457;8457;8457;8457;
+2F9A0;8353;8353;8353;8353;
+2F9A1;83CA;83CA;83CA;83CA;
+2F9A2;83CC;83CC;83CC;83CC;
+2F9A3;83DC;83DC;83DC;83DC;
+2F9A4;26C36;26C36;26C36;26C36;
+2F9A5;26D6B;26D6B;26D6B;26D6B;
+2F9A6;26CD5;26CD5;26CD5;26CD5;
+2F9A7;452B;452B;452B;452B;
+2F9A8;84F1;84F1;84F1;84F1;
+2F9A9;84F3;84F3;84F3;84F3;
+2F9AA;8516;8516;8516;8516;
+2F9AB;273CA;273CA;273CA;273CA;
+2F9AC;8564;8564;8564;8564;
+2F9AD;26F2C;26F2C;26F2C;26F2C;
+2F9AE;455D;455D;455D;455D;
+2F9AF;4561;4561;4561;4561;
+2F9B0;26FB1;26FB1;26FB1;26FB1;
+2F9B1;270D2;270D2;270D2;270D2;
+2F9B2;456B;456B;456B;456B;
+2F9B3;8650;8650;8650;8650;
+2F9B4;865C;865C;865C;865C;
+2F9B5;8667;8667;8667;8667;
+2F9B6;8669;8669;8669;8669;
+2F9B7;86A9;86A9;86A9;86A9;
+2F9B8;8688;8688;8688;8688;
+2F9B9;870E;870E;870E;870E;
+2F9BA;86E2;86E2;86E2;86E2;
+2F9BB;8779;8779;8779;8779;
+2F9BC;8728;8728;8728;8728;
+2F9BD;876B;876B;876B;876B;
+2F9BE;8786;8786;8786;8786;
+2F9BF;45D7;45D7;45D7;45D7;
+2F9C0;87E1;87E1;87E1;87E1;
+2F9C1;8801;8801;8801;8801;
+2F9C2;45F9;45F9;45F9;45F9;
+2F9C3;8860;8860;8860;8860;
+2F9C4;8863;8863;8863;8863;
+2F9C5;27667;27667;27667;27667;
+2F9C6;88D7;88D7;88D7;88D7;
+2F9C7;88DE;88DE;88DE;88DE;
+2F9C8;4635;4635;4635;4635;
+2F9C9;88FA;88FA;88FA;88FA;
+2F9CA;34BB;34BB;34BB;34BB;
+2F9CB;278AE;278AE;278AE;278AE;
+2F9CC;27966;27966;27966;27966;
+2F9CD;46BE;46BE;46BE;46BE;
+2F9CE;46C7;46C7;46C7;46C7;
+2F9CF;8AA0;8AA0;8AA0;8AA0;
+2F9D0;8AED;8AED;8AED;8AED;
+2F9D1;8B8A;8B8A;8B8A;8B8A;
+2F9D2;8C55;8C55;8C55;8C55;
+2F9D3;27CA8;27CA8;27CA8;27CA8;
+2F9D4;8CAB;8CAB;8CAB;8CAB;
+2F9D5;8CC1;8CC1;8CC1;8CC1;
+2F9D6;8D1B;8D1B;8D1B;8D1B;
+2F9D7;8D77;8D77;8D77;8D77;
+2F9D8;27F2F;27F2F;27F2F;27F2F;
+2F9D9;20804;20804;20804;20804;
+2F9DA;8DCB;8DCB;8DCB;8DCB;
+2F9DB;8DBC;8DBC;8DBC;8DBC;
+2F9DC;8DF0;8DF0;8DF0;8DF0;
+2F9DD;208DE;208DE;208DE;208DE;
+2F9DE;8ED4;8ED4;8ED4;8ED4;
+2F9DF;8F38;8F38;8F38;8F38;
+2F9E0;285D2;285D2;285D2;285D2;
+2F9E1;285ED;285ED;285ED;285ED;
+2F9E2;9094;9094;9094;9094;
+2F9E3;90F1;90F1;90F1;90F1;
+2F9E4;9111;9111;9111;9111;
+2F9E5;2872E;2872E;2872E;2872E;
+2F9E6;911B;911B;911B;911B;
+2F9E7;9238;9238;9238;9238;
+2F9E8;92D7;92D7;92D7;92D7;
+2F9E9;92D8;92D8;92D8;92D8;
+2F9EA;927C;927C;927C;927C;
+2F9EB;93F9;93F9;93F9;93F9;
+2F9EC;9415;9415;9415;9415;
+2F9ED;28BFA;28BFA;28BFA;28BFA;
+2F9EE;958B;958B;958B;958B;
+2F9EF;4995;4995;4995;4995;
+2F9F0;95B7;95B7;95B7;95B7;
+2F9F1;28D77;28D77;28D77;28D77;
+2F9F2;49E6;49E6;49E6;49E6;
+2F9F3;96C3;96C3;96C3;96C3;
+2F9F4;5DB2;5DB2;5DB2;5DB2;
+2F9F5;9723;9723;9723;9723;
+2F9F6;29145;29145;29145;29145;
+2F9F7;2921A;2921A;2921A;2921A;
+2F9F8;4A6E;4A6E;4A6E;4A6E;
+2F9F9;4A76;4A76;4A76;4A76;
+2F9FA;97E0;97E0;97E0;97E0;
+2F9FB;2940A;2940A;2940A;2940A;
+2F9FC;4AB2;4AB2;4AB2;4AB2;
+2F9FD;29496;29496;29496;29496;
+2F9FE;980B;980B;980B;980B;
+2F9FF;980B;980B;980B;980B;
+2FA00;9829;9829;9829;9829;
+2FA01;295B6;295B6;295B6;295B6;
+2FA02;98E2;98E2;98E2;98E2;
+2FA03;4B33;4B33;4B33;4B33;
+2FA04;9929;9929;9929;9929;
+2FA05;99A7;99A7;99A7;99A7;
+2FA06;99C2;99C2;99C2;99C2;
+2FA07;99FE;99FE;99FE;99FE;
+2FA08;4BCE;4BCE;4BCE;4BCE;
+2FA09;29B30;29B30;29B30;29B30;
+2FA0A;9B12;9B12;9B12;9B12;
+2FA0B;9C40;9C40;9C40;9C40;
+2FA0C;9CFD;9CFD;9CFD;9CFD;
+2FA0D;4CCE;4CCE;4CCE;4CCE;
+2FA0E;4CED;4CED;4CED;4CED;
+2FA0F;9D67;9D67;9D67;9D67;
+2FA10;2A0CE;2A0CE;2A0CE;2A0CE;
+2FA11;4CF8;4CF8;4CF8;4CF8;
+2FA12;2A105;2A105;2A105;2A105;
+2FA13;2A20E;2A20E;2A20E;2A20E;
+2FA14;2A291;2A291;2A291;2A291;
+2FA15;9EBB;9EBB;9EBB;9EBB;
+2FA16;4D56;4D56;4D56;4D56;
+2FA17;9EF9;9EF9;9EF9;9EF9;
+2FA18;9EFE;9EFE;9EFE;9EFE;
+2FA19;9F05;9F05;9F05;9F05;
+2FA1A;9F0F;9F0F;9F0F;9F0F;
+2FA1B;9F16;9F16;9F16;9F16;
+2FA1C;9F3B;9F3B;9F3B;9F3B;
+2FA1D;2A600;2A600;2A600;2A600;
+#
+@Part2 # Canonical Order Test
+#
+0061 0315 0300 05AE 0300 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0300 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0301 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0301 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0302 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;00E0 05AE 0302 0315 0062;0061 05AE 0300 0302 0315 0062;
+0061 0302 0315 0300 05AE 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;1EA7 05AE 0315 0062;0061 05AE 0302 0300 0315 0062;
+0061 0315 0300 05AE 0303 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;00E0 05AE 0303 0315 0062;0061 05AE 0300 0303 0315 0062;
+0061 0303 0315 0300 05AE 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;00E3 05AE 0300 0315 0062;0061 05AE 0303 0300 0315 0062;
+0061 0315 0300 05AE 0304 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;00E0 05AE 0304 0315 0062;0061 05AE 0300 0304 0315 0062;
+0061 0304 0315 0300 05AE 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;0101 05AE 0300 0315 0062;0061 05AE 0304 0300 0315 0062;
+0061 0315 0300 05AE 0305 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;00E0 05AE 0305 0315 0062;0061 05AE 0300 0305 0315 0062;
+0061 0305 0315 0300 05AE 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;0061 05AE 0305 0300 0315 0062;
+0061 0315 0300 05AE 0306 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;00E0 05AE 0306 0315 0062;0061 05AE 0300 0306 0315 0062;
+0061 0306 0315 0300 05AE 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;1EB1 05AE 0315 0062;0061 05AE 0306 0300 0315 0062;
+0061 0315 0300 05AE 0307 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;00E0 05AE 0307 0315 0062;0061 05AE 0300 0307 0315 0062;
+0061 0307 0315 0300 05AE 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;0227 05AE 0300 0315 0062;0061 05AE 0307 0300 0315 0062;
+0061 0315 0300 05AE 0308 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;00E0 05AE 0308 0315 0062;0061 05AE 0300 0308 0315 0062;
+0061 0308 0315 0300 05AE 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;00E4 05AE 0300 0315 0062;0061 05AE 0308 0300 0315 0062;
+0061 0315 0300 05AE 0309 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;00E0 05AE 0309 0315 0062;0061 05AE 0300 0309 0315 0062;
+0061 0309 0315 0300 05AE 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;1EA3 05AE 0300 0315 0062;0061 05AE 0309 0300 0315 0062;
+0061 0315 0300 05AE 030A 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;00E0 05AE 030A 0315 0062;0061 05AE 0300 030A 0315 0062;
+0061 030A 0315 0300 05AE 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;00E5 05AE 0300 0315 0062;0061 05AE 030A 0300 0315 0062;
+0061 0315 0300 05AE 030B 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;00E0 05AE 030B 0315 0062;0061 05AE 0300 030B 0315 0062;
+0061 030B 0315 0300 05AE 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;0061 05AE 030B 0300 0315 0062;
+0061 0315 0300 05AE 030C 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;00E0 05AE 030C 0315 0062;0061 05AE 0300 030C 0315 0062;
+0061 030C 0315 0300 05AE 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;01CE 05AE 0300 0315 0062;0061 05AE 030C 0300 0315 0062;
+0061 0315 0300 05AE 030D 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;00E0 05AE 030D 0315 0062;0061 05AE 0300 030D 0315 0062;
+0061 030D 0315 0300 05AE 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;0061 05AE 030D 0300 0315 0062;
+0061 0315 0300 05AE 030E 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;00E0 05AE 030E 0315 0062;0061 05AE 0300 030E 0315 0062;
+0061 030E 0315 0300 05AE 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;0061 05AE 030E 0300 0315 0062;
+0061 0315 0300 05AE 030F 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;00E0 05AE 030F 0315 0062;0061 05AE 0300 030F 0315 0062;
+0061 030F 0315 0300 05AE 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;0201 05AE 0300 0315 0062;0061 05AE 030F 0300 0315 0062;
+0061 0315 0300 05AE 0310 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;00E0 05AE 0310 0315 0062;0061 05AE 0300 0310 0315 0062;
+0061 0310 0315 0300 05AE 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;0061 05AE 0310 0300 0315 0062;
+0061 0315 0300 05AE 0311 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;00E0 05AE 0311 0315 0062;0061 05AE 0300 0311 0315 0062;
+0061 0311 0315 0300 05AE 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;0203 05AE 0300 0315 0062;0061 05AE 0311 0300 0315 0062;
+0061 0315 0300 05AE 0312 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;00E0 05AE 0312 0315 0062;0061 05AE 0300 0312 0315 0062;
+0061 0312 0315 0300 05AE 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;0061 05AE 0312 0300 0315 0062;
+0061 0315 0300 05AE 0313 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0313 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0314 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;00E0 05AE 0314 0315 0062;0061 05AE 0300 0314 0315 0062;
+0061 0314 0315 0300 05AE 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;0061 05AE 0314 0300 0315 0062;
+0061 035C 0315 0300 0315 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;
+0061 0315 035C 0315 0300 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;00E0 0315 0315 035C 0062;0061 0300 0315 0315 035C 0062;
+0061 059A 0316 302A 0316 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 0316 059A 0316 302A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;0061 302A 0316 0316 059A 0062;
+0061 059A 0316 302A 0317 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;0061 302A 0316 0317 059A 0062;
+0061 0317 059A 0316 302A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;0061 302A 0317 0316 059A 0062;
+0061 059A 0316 302A 0318 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;0061 302A 0316 0318 059A 0062;
+0061 0318 059A 0316 302A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;0061 302A 0318 0316 059A 0062;
+0061 059A 0316 302A 0319 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;0061 302A 0316 0319 059A 0062;
+0061 0319 059A 0316 302A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;0061 302A 0319 0316 059A 0062;
+0061 035C 0315 0300 031A 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062;00E0 0315 031A 035C 0062;0061 0300 0315 031A 035C 0062;
+0061 031A 035C 0315 0300 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062;00E0 031A 0315 035C 0062;0061 0300 031A 0315 035C 0062;
+0061 302A 031B 0321 031B 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 031B 302A 031B 0321 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;0061 0321 031B 031B 302A 0062;
+0061 059A 0316 302A 031C 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;0061 302A 0316 031C 059A 0062;
+0061 031C 059A 0316 302A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;0061 302A 031C 0316 059A 0062;
+0061 059A 0316 302A 031D 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;0061 302A 0316 031D 059A 0062;
+0061 031D 059A 0316 302A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;0061 302A 031D 0316 059A 0062;
+0061 059A 0316 302A 031E 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;0061 302A 0316 031E 059A 0062;
+0061 031E 059A 0316 302A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;0061 302A 031E 0316 059A 0062;
+0061 059A 0316 302A 031F 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;0061 302A 0316 031F 059A 0062;
+0061 031F 059A 0316 302A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;0061 302A 031F 0316 059A 0062;
+0061 059A 0316 302A 0320 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;0061 302A 0316 0320 059A 0062;
+0061 0320 059A 0316 302A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;0061 302A 0320 0316 059A 0062;
+0061 031B 0321 0F74 0321 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 0321 031B 0321 0F74 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;0061 0F74 0321 0321 031B 0062;
+0061 031B 0321 0F74 0322 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;0061 0F74 0321 0322 031B 0062;
+0061 0322 031B 0321 0F74 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;0061 0F74 0322 0321 031B 0062;
+0061 059A 0316 302A 0323 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;0061 302A 0316 0323 059A 0062;
+0061 0323 059A 0316 302A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;1EA1 302A 0316 059A 0062;0061 302A 0323 0316 059A 0062;
+0061 059A 0316 302A 0324 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;0061 302A 0316 0324 059A 0062;
+0061 0324 059A 0316 302A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;0061 302A 0324 0316 059A 0062;
+0061 059A 0316 302A 0325 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;0061 302A 0316 0325 059A 0062;
+0061 0325 059A 0316 302A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;1E01 302A 0316 059A 0062;0061 302A 0325 0316 059A 0062;
+0061 059A 0316 302A 0326 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;0061 302A 0316 0326 059A 0062;
+0061 0326 059A 0316 302A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;0061 302A 0326 0316 059A 0062;
+0061 031B 0321 0F74 0327 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;0061 0F74 0321 0327 031B 0062;
+0061 0327 031B 0321 0F74 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;0061 0F74 0327 0321 031B 0062;
+0061 031B 0321 0F74 0328 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;0061 0F74 0321 0328 031B 0062;
+0061 0328 031B 0321 0F74 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;0105 0F74 0321 031B 0062;0061 0F74 0328 0321 031B 0062;
+0061 059A 0316 302A 0329 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;0061 302A 0316 0329 059A 0062;
+0061 0329 059A 0316 302A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;0061 302A 0329 0316 059A 0062;
+0061 059A 0316 302A 032A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;0061 302A 0316 032A 059A 0062;
+0061 032A 059A 0316 302A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;0061 302A 032A 0316 059A 0062;
+0061 059A 0316 302A 032B 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;0061 302A 0316 032B 059A 0062;
+0061 032B 059A 0316 302A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;0061 302A 032B 0316 059A 0062;
+0061 059A 0316 302A 032C 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;0061 302A 0316 032C 059A 0062;
+0061 032C 059A 0316 302A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;0061 302A 032C 0316 059A 0062;
+0061 059A 0316 302A 032D 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;0061 302A 0316 032D 059A 0062;
+0061 032D 059A 0316 302A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;0061 302A 032D 0316 059A 0062;
+0061 059A 0316 302A 032E 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;0061 302A 0316 032E 059A 0062;
+0061 032E 059A 0316 302A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;0061 302A 032E 0316 059A 0062;
+0061 059A 0316 302A 032F 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;0061 302A 0316 032F 059A 0062;
+0061 032F 059A 0316 302A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;0061 302A 032F 0316 059A 0062;
+0061 059A 0316 302A 0330 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;0061 302A 0316 0330 059A 0062;
+0061 0330 059A 0316 302A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;0061 302A 0330 0316 059A 0062;
+0061 059A 0316 302A 0331 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;0061 302A 0316 0331 059A 0062;
+0061 0331 059A 0316 302A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;0061 302A 0331 0316 059A 0062;
+0061 059A 0316 302A 0332 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;0061 302A 0316 0332 059A 0062;
+0061 0332 059A 0316 302A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;0061 302A 0332 0316 059A 0062;
+0061 059A 0316 302A 0333 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;0061 302A 0316 0333 059A 0062;
+0061 0333 059A 0316 302A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;0061 302A 0333 0316 059A 0062;
+0061 093C 0334 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 0334 093C 0334 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;0061 0334 0334 093C 0062;
+0061 093C 0334 0335 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;0061 0334 0335 093C 0062;
+0061 0335 093C 0334 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;0061 0335 0334 093C 0062;
+0061 093C 0334 0336 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;0061 0334 0336 093C 0062;
+0061 0336 093C 0334 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;0061 0336 0334 093C 0062;
+0061 093C 0334 0337 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;0061 0334 0337 093C 0062;
+0061 0337 093C 0334 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;0061 0337 0334 093C 0062;
+0061 093C 0334 0338 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;0061 0334 0338 093C 0062;
+0061 0338 093C 0334 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;0061 0338 0334 093C 0062;
+0061 059A 0316 302A 0339 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;0061 302A 0316 0339 059A 0062;
+0061 0339 059A 0316 302A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;0061 302A 0339 0316 059A 0062;
+0061 059A 0316 302A 033A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;0061 302A 0316 033A 059A 0062;
+0061 033A 059A 0316 302A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;0061 302A 033A 0316 059A 0062;
+0061 059A 0316 302A 033B 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;0061 302A 0316 033B 059A 0062;
+0061 033B 059A 0316 302A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;0061 302A 033B 0316 059A 0062;
+0061 059A 0316 302A 033C 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;0061 302A 0316 033C 059A 0062;
+0061 033C 059A 0316 302A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;0061 302A 033C 0316 059A 0062;
+0061 0315 0300 05AE 033D 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;00E0 05AE 033D 0315 0062;0061 05AE 0300 033D 0315 0062;
+0061 033D 0315 0300 05AE 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;0061 05AE 033D 0300 0315 0062;
+0061 0315 0300 05AE 033E 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;00E0 05AE 033E 0315 0062;0061 05AE 0300 033E 0315 0062;
+0061 033E 0315 0300 05AE 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;0061 05AE 033E 0300 0315 0062;
+0061 0315 0300 05AE 033F 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;00E0 05AE 033F 0315 0062;0061 05AE 0300 033F 0315 0062;
+0061 033F 0315 0300 05AE 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;0061 05AE 033F 0300 0315 0062;
+0061 0315 0300 05AE 0340 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0340 0315 0300 05AE 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;00E0 05AE 0300 0315 0062;0061 05AE 0300 0300 0315 0062;
+0061 0315 0300 05AE 0341 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;00E0 05AE 0301 0315 0062;0061 05AE 0300 0301 0315 0062;
+0061 0341 0315 0300 05AE 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;00E1 05AE 0300 0315 0062;0061 05AE 0301 0300 0315 0062;
+0061 0315 0300 05AE 0342 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;00E0 05AE 0342 0315 0062;0061 05AE 0300 0342 0315 0062;
+0061 0342 0315 0300 05AE 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;0061 05AE 0342 0300 0315 0062;
+0061 0315 0300 05AE 0343 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;00E0 05AE 0313 0315 0062;0061 05AE 0300 0313 0315 0062;
+0061 0343 0315 0300 05AE 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;0061 05AE 0313 0300 0315 0062;
+0061 0315 0300 05AE 0344 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;00E0 05AE 0308 0301 0315 0062;0061 05AE 0300 0308 0301 0315 0062;
+0061 0344 0315 0300 05AE 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;00E4 05AE 0301 0300 0315 0062;0061 05AE 0308 0301 0300 0315 0062;
+0061 0345 035D 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;
+0061 0345 0345 035D 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;0061 035D 0345 0345 0062;
+0061 0315 0300 05AE 0346 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;00E0 05AE 0346 0315 0062;0061 05AE 0300 0346 0315 0062;
+0061 0346 0315 0300 05AE 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;0061 05AE 0346 0300 0315 0062;
+0061 059A 0316 302A 0347 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;0061 302A 0316 0347 059A 0062;
+0061 0347 059A 0316 302A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;0061 302A 0347 0316 059A 0062;
+0061 059A 0316 302A 0348 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;0061 302A 0316 0348 059A 0062;
+0061 0348 059A 0316 302A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;0061 302A 0348 0316 059A 0062;
+0061 059A 0316 302A 0349 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;0061 302A 0316 0349 059A 0062;
+0061 0349 059A 0316 302A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;0061 302A 0349 0316 059A 0062;
+0061 0315 0300 05AE 034A 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;00E0 05AE 034A 0315 0062;0061 05AE 0300 034A 0315 0062;
+0061 034A 0315 0300 05AE 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;0061 05AE 034A 0300 0315 0062;
+0061 0315 0300 05AE 034B 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;00E0 05AE 034B 0315 0062;0061 05AE 0300 034B 0315 0062;
+0061 034B 0315 0300 05AE 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;0061 05AE 034B 0300 0315 0062;
+0061 0315 0300 05AE 034C 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;00E0 05AE 034C 0315 0062;0061 05AE 0300 034C 0315 0062;
+0061 034C 0315 0300 05AE 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;0061 05AE 034C 0300 0315 0062;
+0061 059A 0316 302A 034D 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;0061 302A 0316 034D 059A 0062;
+0061 034D 059A 0316 302A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;0061 302A 034D 0316 059A 0062;
+0061 059A 0316 302A 034E 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;0061 302A 0316 034E 059A 0062;
+0061 034E 059A 0316 302A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;0061 302A 034E 0316 059A 0062;
+0061 0315 0300 05AE 0350 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062;00E0 05AE 0350 0315 0062;0061 05AE 0300 0350 0315 0062;
+0061 0350 0315 0300 05AE 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;0061 05AE 0350 0300 0315 0062;
+0061 0315 0300 05AE 0351 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062;00E0 05AE 0351 0315 0062;0061 05AE 0300 0351 0315 0062;
+0061 0351 0315 0300 05AE 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;0061 05AE 0351 0300 0315 0062;
+0061 0315 0300 05AE 0352 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062;00E0 05AE 0352 0315 0062;0061 05AE 0300 0352 0315 0062;
+0061 0352 0315 0300 05AE 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;0061 05AE 0352 0300 0315 0062;
+0061 059A 0316 302A 0353 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;0061 302A 0316 0353 059A 0062;
+0061 0353 059A 0316 302A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;0061 302A 0353 0316 059A 0062;
+0061 059A 0316 302A 0354 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;0061 302A 0316 0354 059A 0062;
+0061 0354 059A 0316 302A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;0061 302A 0354 0316 059A 0062;
+0061 059A 0316 302A 0355 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;0061 302A 0316 0355 059A 0062;
+0061 0355 059A 0316 302A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;0061 302A 0355 0316 059A 0062;
+0061 059A 0316 302A 0356 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;0061 302A 0316 0356 059A 0062;
+0061 0356 059A 0316 302A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;0061 302A 0356 0316 059A 0062;
+0061 0315 0300 05AE 0357 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062;00E0 05AE 0357 0315 0062;0061 05AE 0300 0357 0315 0062;
+0061 0357 0315 0300 05AE 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;0061 05AE 0357 0300 0315 0062;
+0061 035C 0315 0300 0358 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062;00E0 0315 0358 035C 0062;0061 0300 0315 0358 035C 0062;
+0061 0358 035C 0315 0300 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062;00E0 0358 0315 035C 0062;0061 0300 0358 0315 035C 0062;
+0061 059A 0316 302A 0359 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;0061 302A 0316 0359 059A 0062;
+0061 0359 059A 0316 302A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;0061 302A 0359 0316 059A 0062;
+0061 059A 0316 302A 035A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;0061 302A 0316 035A 059A 0062;
+0061 035A 059A 0316 302A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;0061 302A 035A 0316 059A 0062;
+0061 0315 0300 05AE 035B 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062;00E0 05AE 035B 0315 0062;0061 05AE 0300 035B 0315 0062;
+0061 035B 0315 0300 05AE 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;0061 05AE 035B 0300 0315 0062;
+0061 035D 035C 0315 035C 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;
+0061 035C 035D 035C 0315 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;0061 0315 035C 035C 035D 0062;
+0061 0345 035D 035C 035D 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;
+0061 035D 0345 035D 035C 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;0061 035C 035D 035D 0345 0062;
+0061 0345 035D 035C 035E 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;0061 035C 035D 035E 0345 0062;
+0061 035E 0345 035D 035C 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;0061 035C 035E 035D 0345 0062;
+0061 035D 035C 0315 035F 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;0061 0315 035C 035F 035D 0062;
+0061 035F 035D 035C 0315 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;0061 0315 035F 035C 035D 0062;
+0061 0345 035D 035C 0360 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;0061 035C 035D 0360 0345 0062;
+0061 0360 0345 035D 035C 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;0061 035C 0360 035D 0345 0062;
+0061 0345 035D 035C 0361 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;0061 035C 035D 0361 0345 0062;
+0061 0361 0345 035D 035C 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;0061 035C 0361 035D 0345 0062;
+0061 035D 035C 0315 0362 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;0061 0315 035C 0362 035D 0062;
+0061 0362 035D 035C 0315 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;0061 0315 0362 035C 035D 0062;
+0061 0315 0300 05AE 0363 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;00E0 05AE 0363 0315 0062;0061 05AE 0300 0363 0315 0062;
+0061 0363 0315 0300 05AE 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;0061 05AE 0363 0300 0315 0062;
+0061 0315 0300 05AE 0364 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;00E0 05AE 0364 0315 0062;0061 05AE 0300 0364 0315 0062;
+0061 0364 0315 0300 05AE 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;0061 05AE 0364 0300 0315 0062;
+0061 0315 0300 05AE 0365 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;00E0 05AE 0365 0315 0062;0061 05AE 0300 0365 0315 0062;
+0061 0365 0315 0300 05AE 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;0061 05AE 0365 0300 0315 0062;
+0061 0315 0300 05AE 0366 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;00E0 05AE 0366 0315 0062;0061 05AE 0300 0366 0315 0062;
+0061 0366 0315 0300 05AE 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;0061 05AE 0366 0300 0315 0062;
+0061 0315 0300 05AE 0367 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;00E0 05AE 0367 0315 0062;0061 05AE 0300 0367 0315 0062;
+0061 0367 0315 0300 05AE 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;0061 05AE 0367 0300 0315 0062;
+0061 0315 0300 05AE 0368 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;00E0 05AE 0368 0315 0062;0061 05AE 0300 0368 0315 0062;
+0061 0368 0315 0300 05AE 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;0061 05AE 0368 0300 0315 0062;
+0061 0315 0300 05AE 0369 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;00E0 05AE 0369 0315 0062;0061 05AE 0300 0369 0315 0062;
+0061 0369 0315 0300 05AE 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;0061 05AE 0369 0300 0315 0062;
+0061 0315 0300 05AE 036A 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;00E0 05AE 036A 0315 0062;0061 05AE 0300 036A 0315 0062;
+0061 036A 0315 0300 05AE 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;0061 05AE 036A 0300 0315 0062;
+0061 0315 0300 05AE 036B 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;00E0 05AE 036B 0315 0062;0061 05AE 0300 036B 0315 0062;
+0061 036B 0315 0300 05AE 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;0061 05AE 036B 0300 0315 0062;
+0061 0315 0300 05AE 036C 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;00E0 05AE 036C 0315 0062;0061 05AE 0300 036C 0315 0062;
+0061 036C 0315 0300 05AE 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;0061 05AE 036C 0300 0315 0062;
+0061 0315 0300 05AE 036D 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;00E0 05AE 036D 0315 0062;0061 05AE 0300 036D 0315 0062;
+0061 036D 0315 0300 05AE 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;0061 05AE 036D 0300 0315 0062;
+0061 0315 0300 05AE 036E 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;00E0 05AE 036E 0315 0062;0061 05AE 0300 036E 0315 0062;
+0061 036E 0315 0300 05AE 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;0061 05AE 036E 0300 0315 0062;
+0061 0315 0300 05AE 036F 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;00E0 05AE 036F 0315 0062;0061 05AE 0300 036F 0315 0062;
+0061 036F 0315 0300 05AE 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;0061 05AE 036F 0300 0315 0062;
+0061 0315 0300 05AE 0483 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;00E0 05AE 0483 0315 0062;0061 05AE 0300 0483 0315 0062;
+0061 0483 0315 0300 05AE 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;0061 05AE 0483 0300 0315 0062;
+0061 0315 0300 05AE 0484 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;00E0 05AE 0484 0315 0062;0061 05AE 0300 0484 0315 0062;
+0061 0484 0315 0300 05AE 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;0061 05AE 0484 0300 0315 0062;
+0061 0315 0300 05AE 0485 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;00E0 05AE 0485 0315 0062;0061 05AE 0300 0485 0315 0062;
+0061 0485 0315 0300 05AE 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;0061 05AE 0485 0300 0315 0062;
+0061 0315 0300 05AE 0486 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;00E0 05AE 0486 0315 0062;0061 05AE 0300 0486 0315 0062;
+0061 0486 0315 0300 05AE 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;0061 05AE 0486 0300 0315 0062;
+0061 059A 0316 302A 0591 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;0061 302A 0316 0591 059A 0062;
+0061 0591 059A 0316 302A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;0061 302A 0591 0316 059A 0062;
+0061 0315 0300 05AE 0592 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;00E0 05AE 0592 0315 0062;0061 05AE 0300 0592 0315 0062;
+0061 0592 0315 0300 05AE 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;0061 05AE 0592 0300 0315 0062;
+0061 0315 0300 05AE 0593 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;00E0 05AE 0593 0315 0062;0061 05AE 0300 0593 0315 0062;
+0061 0593 0315 0300 05AE 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;0061 05AE 0593 0300 0315 0062;
+0061 0315 0300 05AE 0594 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;00E0 05AE 0594 0315 0062;0061 05AE 0300 0594 0315 0062;
+0061 0594 0315 0300 05AE 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;0061 05AE 0594 0300 0315 0062;
+0061 0315 0300 05AE 0595 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;00E0 05AE 0595 0315 0062;0061 05AE 0300 0595 0315 0062;
+0061 0595 0315 0300 05AE 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;0061 05AE 0595 0300 0315 0062;
+0061 059A 0316 302A 0596 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;0061 302A 0316 0596 059A 0062;
+0061 0596 059A 0316 302A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;0061 302A 0596 0316 059A 0062;
+0061 0315 0300 05AE 0597 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;00E0 05AE 0597 0315 0062;0061 05AE 0300 0597 0315 0062;
+0061 0597 0315 0300 05AE 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;0061 05AE 0597 0300 0315 0062;
+0061 0315 0300 05AE 0598 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;00E0 05AE 0598 0315 0062;0061 05AE 0300 0598 0315 0062;
+0061 0598 0315 0300 05AE 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;0061 05AE 0598 0300 0315 0062;
+0061 0315 0300 05AE 0599 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;00E0 05AE 0599 0315 0062;0061 05AE 0300 0599 0315 0062;
+0061 0599 0315 0300 05AE 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;0061 05AE 0599 0300 0315 0062;
+0061 302E 059A 0316 059A 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 302E 059A 0316 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;0061 0316 059A 059A 302E 0062;
+0061 059A 0316 302A 059B 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;0061 302A 0316 059B 059A 0062;
+0061 059B 059A 0316 302A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;0061 302A 059B 0316 059A 0062;
+0061 0315 0300 05AE 059C 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;00E0 05AE 059C 0315 0062;0061 05AE 0300 059C 0315 0062;
+0061 059C 0315 0300 05AE 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;0061 05AE 059C 0300 0315 0062;
+0061 0315 0300 05AE 059D 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;00E0 05AE 059D 0315 0062;0061 05AE 0300 059D 0315 0062;
+0061 059D 0315 0300 05AE 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;0061 05AE 059D 0300 0315 0062;
+0061 0315 0300 05AE 059E 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;00E0 05AE 059E 0315 0062;0061 05AE 0300 059E 0315 0062;
+0061 059E 0315 0300 05AE 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;0061 05AE 059E 0300 0315 0062;
+0061 0315 0300 05AE 059F 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;00E0 05AE 059F 0315 0062;0061 05AE 0300 059F 0315 0062;
+0061 059F 0315 0300 05AE 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;0061 05AE 059F 0300 0315 0062;
+0061 0315 0300 05AE 05A0 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;00E0 05AE 05A0 0315 0062;0061 05AE 0300 05A0 0315 0062;
+0061 05A0 0315 0300 05AE 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;0061 05AE 05A0 0300 0315 0062;
+0061 0315 0300 05AE 05A1 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;00E0 05AE 05A1 0315 0062;0061 05AE 0300 05A1 0315 0062;
+0061 05A1 0315 0300 05AE 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;0061 05AE 05A1 0300 0315 0062;
+0061 059A 0316 302A 05A2 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;0061 302A 0316 05A2 059A 0062;
+0061 05A2 059A 0316 302A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;0061 302A 05A2 0316 059A 0062;
+0061 059A 0316 302A 05A3 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;0061 302A 0316 05A3 059A 0062;
+0061 05A3 059A 0316 302A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;0061 302A 05A3 0316 059A 0062;
+0061 059A 0316 302A 05A4 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;0061 302A 0316 05A4 059A 0062;
+0061 05A4 059A 0316 302A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;0061 302A 05A4 0316 059A 0062;
+0061 059A 0316 302A 05A5 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;0061 302A 0316 05A5 059A 0062;
+0061 05A5 059A 0316 302A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;0061 302A 05A5 0316 059A 0062;
+0061 059A 0316 302A 05A6 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;0061 302A 0316 05A6 059A 0062;
+0061 05A6 059A 0316 302A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;0061 302A 05A6 0316 059A 0062;
+0061 059A 0316 302A 05A7 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;0061 302A 0316 05A7 059A 0062;
+0061 05A7 059A 0316 302A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;0061 302A 05A7 0316 059A 0062;
+0061 0315 0300 05AE 05A8 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;00E0 05AE 05A8 0315 0062;0061 05AE 0300 05A8 0315 0062;
+0061 05A8 0315 0300 05AE 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;0061 05AE 05A8 0300 0315 0062;
+0061 0315 0300 05AE 05A9 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;00E0 05AE 05A9 0315 0062;0061 05AE 0300 05A9 0315 0062;
+0061 05A9 0315 0300 05AE 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;0061 05AE 05A9 0300 0315 0062;
+0061 059A 0316 302A 05AA 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;0061 302A 0316 05AA 059A 0062;
+0061 05AA 059A 0316 302A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;0061 302A 05AA 0316 059A 0062;
+0061 0315 0300 05AE 05AB 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;00E0 05AE 05AB 0315 0062;0061 05AE 0300 05AB 0315 0062;
+0061 05AB 0315 0300 05AE 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;0061 05AE 05AB 0300 0315 0062;
+0061 0315 0300 05AE 05AC 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;00E0 05AE 05AC 0315 0062;0061 05AE 0300 05AC 0315 0062;
+0061 05AC 0315 0300 05AE 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;0061 05AE 05AC 0300 0315 0062;
+0061 302E 059A 0316 05AD 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;0061 0316 059A 05AD 302E 0062;
+0061 05AD 302E 059A 0316 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;0061 0316 05AD 059A 302E 0062;
+0061 0300 05AE 1D16D 05AE 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 05AE 0300 05AE 1D16D 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;00E0 1D16D 05AE 05AE 0062;0061 1D16D 05AE 05AE 0300 0062;
+0061 0315 0300 05AE 05AF 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;00E0 05AE 05AF 0315 0062;0061 05AE 0300 05AF 0315 0062;
+0061 05AF 0315 0300 05AE 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;0061 05AE 05AF 0300 0315 0062;
+0061 05B1 05B0 094D 05B0 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B0 05B1 05B0 094D 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;0061 094D 05B0 05B0 05B1 0062;
+0061 05B2 05B1 05B0 05B1 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B1 05B2 05B1 05B0 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;0061 05B0 05B1 05B1 05B2 0062;
+0061 05B3 05B2 05B1 05B2 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B2 05B3 05B2 05B1 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;0061 05B1 05B2 05B2 05B3 0062;
+0061 05B4 05B3 05B2 05B3 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B3 05B4 05B3 05B2 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;0061 05B2 05B3 05B3 05B4 0062;
+0061 05B5 05B4 05B3 05B4 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B4 05B5 05B4 05B3 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;0061 05B3 05B4 05B4 05B5 0062;
+0061 05B6 05B5 05B4 05B5 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B5 05B6 05B5 05B4 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;0061 05B4 05B5 05B5 05B6 0062;
+0061 05B7 05B6 05B5 05B6 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B6 05B7 05B6 05B5 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;0061 05B5 05B6 05B6 05B7 0062;
+0061 05B8 05B7 05B6 05B7 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B7 05B8 05B7 05B6 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;0061 05B6 05B7 05B7 05B8 0062;
+0061 05B9 05B8 05B7 05B8 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05B8 05B9 05B8 05B7 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;0061 05B7 05B8 05B8 05B9 0062;
+0061 05BB 05B9 05B8 05B9 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05B9 05BB 05B9 05B8 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;0061 05B8 05B9 05B9 05BB 0062;
+0061 05BC 05BB 05B9 05BB 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BB 05BC 05BB 05B9 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;0061 05B9 05BB 05BB 05BC 0062;
+0061 05BD 05BC 05BB 05BC 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BC 05BD 05BC 05BB 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;0061 05BB 05BC 05BC 05BD 0062;
+0061 05BF 05BD 05BC 05BD 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05BD 05BF 05BD 05BC 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;0061 05BC 05BD 05BD 05BF 0062;
+0061 05C1 05BF 05BD 05BF 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05BF 05C1 05BF 05BD 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;0061 05BD 05BF 05BF 05C1 0062;
+0061 05C2 05C1 05BF 05C1 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 05C1 05C2 05C1 05BF 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;0061 05BF 05C1 05C1 05C2 0062;
+0061 FB1E 05C2 05C1 05C2 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 05C2 FB1E 05C2 05C1 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;0061 05C1 05C2 05C2 FB1E 0062;
+0061 0315 0300 05AE 05C4 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;00E0 05AE 05C4 0315 0062;0061 05AE 0300 05C4 0315 0062;
+0061 05C4 0315 0300 05AE 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;0061 05AE 05C4 0300 0315 0062;
+0061 059A 0316 302A 05C5 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;0061 302A 0316 05C5 059A 0062;
+0061 05C5 059A 0316 302A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;0061 302A 05C5 0316 059A 0062;
+0061 05B9 05B8 05B7 05C7 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;0061 05B7 05B8 05C7 05B9 0062;
+0061 05C7 05B9 05B8 05B7 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;0061 05B7 05C7 05B8 05B9 0062;
+0061 0315 0300 05AE 0610 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062;00E0 05AE 0610 0315 0062;0061 05AE 0300 0610 0315 0062;
+0061 0610 0315 0300 05AE 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;0061 05AE 0610 0300 0315 0062;
+0061 0315 0300 05AE 0611 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062;00E0 05AE 0611 0315 0062;0061 05AE 0300 0611 0315 0062;
+0061 0611 0315 0300 05AE 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;0061 05AE 0611 0300 0315 0062;
+0061 0315 0300 05AE 0612 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062;00E0 05AE 0612 0315 0062;0061 05AE 0300 0612 0315 0062;
+0061 0612 0315 0300 05AE 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;0061 05AE 0612 0300 0315 0062;
+0061 0315 0300 05AE 0613 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062;00E0 05AE 0613 0315 0062;0061 05AE 0300 0613 0315 0062;
+0061 0613 0315 0300 05AE 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;0061 05AE 0613 0300 0315 0062;
+0061 0315 0300 05AE 0614 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062;00E0 05AE 0614 0315 0062;0061 05AE 0300 0614 0315 0062;
+0061 0614 0315 0300 05AE 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;0061 05AE 0614 0300 0315 0062;
+0061 0315 0300 05AE 0615 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062;00E0 05AE 0615 0315 0062;0061 05AE 0300 0615 0315 0062;
+0061 0615 0315 0300 05AE 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;0061 05AE 0615 0300 0315 0062;
+0061 064C 064B FB1E 064B 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064B 064C 064B FB1E 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;0061 FB1E 064B 064B 064C 0062;
+0061 064D 064C 064B 064C 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064C 064D 064C 064B 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;0061 064B 064C 064C 064D 0062;
+0061 064E 064D 064C 064D 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064D 064E 064D 064C 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;0061 064C 064D 064D 064E 0062;
+0061 064F 064E 064D 064E 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 064E 064F 064E 064D 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;0061 064D 064E 064E 064F 0062;
+0061 0650 064F 064E 064F 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 064F 0650 064F 064E 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;0061 064E 064F 064F 0650 0062;
+0061 0651 0650 064F 0650 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0650 0651 0650 064F 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;0061 064F 0650 0650 0651 0062;
+0061 0652 0651 0650 0651 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0651 0652 0651 0650 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;0061 0650 0651 0651 0652 0062;
+0061 0670 0652 0651 0652 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0652 0670 0652 0651 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;0061 0651 0652 0652 0670 0062;
+0061 0315 0300 05AE 0653 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;00E0 05AE 0653 0315 0062;0061 05AE 0300 0653 0315 0062;
+0061 0653 0315 0300 05AE 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;0061 05AE 0653 0300 0315 0062;
+0061 0315 0300 05AE 0654 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;00E0 05AE 0654 0315 0062;0061 05AE 0300 0654 0315 0062;
+0061 0654 0315 0300 05AE 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;0061 05AE 0654 0300 0315 0062;
+0061 059A 0316 302A 0655 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;0061 302A 0316 0655 059A 0062;
+0061 0655 059A 0316 302A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;0061 302A 0655 0316 059A 0062;
+0061 059A 0316 302A 0656 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;0061 302A 0316 0656 059A 0062;
+0061 0656 059A 0316 302A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;0061 302A 0656 0316 059A 0062;
+0061 0315 0300 05AE 0657 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062;00E0 05AE 0657 0315 0062;0061 05AE 0300 0657 0315 0062;
+0061 0657 0315 0300 05AE 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;0061 05AE 0657 0300 0315 0062;
+0061 0315 0300 05AE 0658 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062;00E0 05AE 0658 0315 0062;0061 05AE 0300 0658 0315 0062;
+0061 0658 0315 0300 05AE 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;0061 05AE 0658 0300 0315 0062;
+0061 0315 0300 05AE 0659 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062;00E0 05AE 0659 0315 0062;0061 05AE 0300 0659 0315 0062;
+0061 0659 0315 0300 05AE 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;0061 05AE 0659 0300 0315 0062;
+0061 0315 0300 05AE 065A 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062;00E0 05AE 065A 0315 0062;0061 05AE 0300 065A 0315 0062;
+0061 065A 0315 0300 05AE 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;0061 05AE 065A 0300 0315 0062;
+0061 0315 0300 05AE 065B 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062;00E0 05AE 065B 0315 0062;0061 05AE 0300 065B 0315 0062;
+0061 065B 0315 0300 05AE 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;0061 05AE 065B 0300 0315 0062;
+0061 059A 0316 302A 065C 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;0061 302A 0316 065C 059A 0062;
+0061 065C 059A 0316 302A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;0061 302A 065C 0316 059A 0062;
+0061 0315 0300 05AE 065D 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062;00E0 05AE 065D 0315 0062;0061 05AE 0300 065D 0315 0062;
+0061 065D 0315 0300 05AE 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;0061 05AE 065D 0300 0315 0062;
+0061 0315 0300 05AE 065E 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062;00E0 05AE 065E 0315 0062;0061 05AE 0300 065E 0315 0062;
+0061 065E 0315 0300 05AE 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;0061 05AE 065E 0300 0315 0062;
+0061 0711 0670 0652 0670 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0670 0711 0670 0652 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;0061 0652 0670 0670 0711 0062;
+0061 0315 0300 05AE 06D6 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;00E0 05AE 06D6 0315 0062;0061 05AE 0300 06D6 0315 0062;
+0061 06D6 0315 0300 05AE 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;0061 05AE 06D6 0300 0315 0062;
+0061 0315 0300 05AE 06D7 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;00E0 05AE 06D7 0315 0062;0061 05AE 0300 06D7 0315 0062;
+0061 06D7 0315 0300 05AE 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;0061 05AE 06D7 0300 0315 0062;
+0061 0315 0300 05AE 06D8 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;00E0 05AE 06D8 0315 0062;0061 05AE 0300 06D8 0315 0062;
+0061 06D8 0315 0300 05AE 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;0061 05AE 06D8 0300 0315 0062;
+0061 0315 0300 05AE 06D9 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;00E0 05AE 06D9 0315 0062;0061 05AE 0300 06D9 0315 0062;
+0061 06D9 0315 0300 05AE 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;0061 05AE 06D9 0300 0315 0062;
+0061 0315 0300 05AE 06DA 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;00E0 05AE 06DA 0315 0062;0061 05AE 0300 06DA 0315 0062;
+0061 06DA 0315 0300 05AE 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;0061 05AE 06DA 0300 0315 0062;
+0061 0315 0300 05AE 06DB 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;00E0 05AE 06DB 0315 0062;0061 05AE 0300 06DB 0315 0062;
+0061 06DB 0315 0300 05AE 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;0061 05AE 06DB 0300 0315 0062;
+0061 0315 0300 05AE 06DC 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;00E0 05AE 06DC 0315 0062;0061 05AE 0300 06DC 0315 0062;
+0061 06DC 0315 0300 05AE 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;0061 05AE 06DC 0300 0315 0062;
+0061 0315 0300 05AE 06DF 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;00E0 05AE 06DF 0315 0062;0061 05AE 0300 06DF 0315 0062;
+0061 06DF 0315 0300 05AE 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;0061 05AE 06DF 0300 0315 0062;
+0061 0315 0300 05AE 06E0 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;00E0 05AE 06E0 0315 0062;0061 05AE 0300 06E0 0315 0062;
+0061 06E0 0315 0300 05AE 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;0061 05AE 06E0 0300 0315 0062;
+0061 0315 0300 05AE 06E1 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;00E0 05AE 06E1 0315 0062;0061 05AE 0300 06E1 0315 0062;
+0061 06E1 0315 0300 05AE 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;0061 05AE 06E1 0300 0315 0062;
+0061 0315 0300 05AE 06E2 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;00E0 05AE 06E2 0315 0062;0061 05AE 0300 06E2 0315 0062;
+0061 06E2 0315 0300 05AE 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;0061 05AE 06E2 0300 0315 0062;
+0061 059A 0316 302A 06E3 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;0061 302A 0316 06E3 059A 0062;
+0061 06E3 059A 0316 302A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;0061 302A 06E3 0316 059A 0062;
+0061 0315 0300 05AE 06E4 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;00E0 05AE 06E4 0315 0062;0061 05AE 0300 06E4 0315 0062;
+0061 06E4 0315 0300 05AE 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;0061 05AE 06E4 0300 0315 0062;
+0061 0315 0300 05AE 06E7 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;00E0 05AE 06E7 0315 0062;0061 05AE 0300 06E7 0315 0062;
+0061 06E7 0315 0300 05AE 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;0061 05AE 06E7 0300 0315 0062;
+0061 0315 0300 05AE 06E8 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;00E0 05AE 06E8 0315 0062;0061 05AE 0300 06E8 0315 0062;
+0061 06E8 0315 0300 05AE 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;0061 05AE 06E8 0300 0315 0062;
+0061 059A 0316 302A 06EA 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;0061 302A 0316 06EA 059A 0062;
+0061 06EA 059A 0316 302A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;0061 302A 06EA 0316 059A 0062;
+0061 0315 0300 05AE 06EB 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;00E0 05AE 06EB 0315 0062;0061 05AE 0300 06EB 0315 0062;
+0061 06EB 0315 0300 05AE 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;0061 05AE 06EB 0300 0315 0062;
+0061 0315 0300 05AE 06EC 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;00E0 05AE 06EC 0315 0062;0061 05AE 0300 06EC 0315 0062;
+0061 06EC 0315 0300 05AE 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;0061 05AE 06EC 0300 0315 0062;
+0061 059A 0316 302A 06ED 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;0061 302A 0316 06ED 059A 0062;
+0061 06ED 059A 0316 302A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;0061 302A 06ED 0316 059A 0062;
+0061 0C55 0711 0670 0711 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0711 0C55 0711 0670 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;0061 0670 0711 0711 0C55 0062;
+0061 0315 0300 05AE 0730 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;00E0 05AE 0730 0315 0062;0061 05AE 0300 0730 0315 0062;
+0061 0730 0315 0300 05AE 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;0061 05AE 0730 0300 0315 0062;
+0061 059A 0316 302A 0731 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;0061 302A 0316 0731 059A 0062;
+0061 0731 059A 0316 302A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;0061 302A 0731 0316 059A 0062;
+0061 0315 0300 05AE 0732 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;00E0 05AE 0732 0315 0062;0061 05AE 0300 0732 0315 0062;
+0061 0732 0315 0300 05AE 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;0061 05AE 0732 0300 0315 0062;
+0061 0315 0300 05AE 0733 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;00E0 05AE 0733 0315 0062;0061 05AE 0300 0733 0315 0062;
+0061 0733 0315 0300 05AE 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;0061 05AE 0733 0300 0315 0062;
+0061 059A 0316 302A 0734 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;0061 302A 0316 0734 059A 0062;
+0061 0734 059A 0316 302A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;0061 302A 0734 0316 059A 0062;
+0061 0315 0300 05AE 0735 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;00E0 05AE 0735 0315 0062;0061 05AE 0300 0735 0315 0062;
+0061 0735 0315 0300 05AE 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;0061 05AE 0735 0300 0315 0062;
+0061 0315 0300 05AE 0736 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;00E0 05AE 0736 0315 0062;0061 05AE 0300 0736 0315 0062;
+0061 0736 0315 0300 05AE 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;0061 05AE 0736 0300 0315 0062;
+0061 059A 0316 302A 0737 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;0061 302A 0316 0737 059A 0062;
+0061 0737 059A 0316 302A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;0061 302A 0737 0316 059A 0062;
+0061 059A 0316 302A 0738 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;0061 302A 0316 0738 059A 0062;
+0061 0738 059A 0316 302A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;0061 302A 0738 0316 059A 0062;
+0061 059A 0316 302A 0739 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;0061 302A 0316 0739 059A 0062;
+0061 0739 059A 0316 302A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;0061 302A 0739 0316 059A 0062;
+0061 0315 0300 05AE 073A 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;00E0 05AE 073A 0315 0062;0061 05AE 0300 073A 0315 0062;
+0061 073A 0315 0300 05AE 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;0061 05AE 073A 0300 0315 0062;
+0061 059A 0316 302A 073B 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;0061 302A 0316 073B 059A 0062;
+0061 073B 059A 0316 302A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;0061 302A 073B 0316 059A 0062;
+0061 059A 0316 302A 073C 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;0061 302A 0316 073C 059A 0062;
+0061 073C 059A 0316 302A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;0061 302A 073C 0316 059A 0062;
+0061 0315 0300 05AE 073D 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;00E0 05AE 073D 0315 0062;0061 05AE 0300 073D 0315 0062;
+0061 073D 0315 0300 05AE 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;0061 05AE 073D 0300 0315 0062;
+0061 059A 0316 302A 073E 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;0061 302A 0316 073E 059A 0062;
+0061 073E 059A 0316 302A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;0061 302A 073E 0316 059A 0062;
+0061 0315 0300 05AE 073F 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;00E0 05AE 073F 0315 0062;0061 05AE 0300 073F 0315 0062;
+0061 073F 0315 0300 05AE 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;0061 05AE 073F 0300 0315 0062;
+0061 0315 0300 05AE 0740 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;00E0 05AE 0740 0315 0062;0061 05AE 0300 0740 0315 0062;
+0061 0740 0315 0300 05AE 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;0061 05AE 0740 0300 0315 0062;
+0061 0315 0300 05AE 0741 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;00E0 05AE 0741 0315 0062;0061 05AE 0300 0741 0315 0062;
+0061 0741 0315 0300 05AE 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;0061 05AE 0741 0300 0315 0062;
+0061 059A 0316 302A 0742 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;0061 302A 0316 0742 059A 0062;
+0061 0742 059A 0316 302A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;0061 302A 0742 0316 059A 0062;
+0061 0315 0300 05AE 0743 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;00E0 05AE 0743 0315 0062;0061 05AE 0300 0743 0315 0062;
+0061 0743 0315 0300 05AE 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;0061 05AE 0743 0300 0315 0062;
+0061 059A 0316 302A 0744 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;0061 302A 0316 0744 059A 0062;
+0061 0744 059A 0316 302A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;0061 302A 0744 0316 059A 0062;
+0061 0315 0300 05AE 0745 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;00E0 05AE 0745 0315 0062;0061 05AE 0300 0745 0315 0062;
+0061 0745 0315 0300 05AE 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;0061 05AE 0745 0300 0315 0062;
+0061 059A 0316 302A 0746 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;0061 302A 0316 0746 059A 0062;
+0061 0746 059A 0316 302A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;0061 302A 0746 0316 059A 0062;
+0061 0315 0300 05AE 0747 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;00E0 05AE 0747 0315 0062;0061 05AE 0300 0747 0315 0062;
+0061 0747 0315 0300 05AE 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;0061 05AE 0747 0300 0315 0062;
+0061 059A 0316 302A 0748 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;0061 302A 0316 0748 059A 0062;
+0061 0748 059A 0316 302A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;0061 302A 0748 0316 059A 0062;
+0061 0315 0300 05AE 0749 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;00E0 05AE 0749 0315 0062;0061 05AE 0300 0749 0315 0062;
+0061 0749 0315 0300 05AE 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;0061 05AE 0749 0300 0315 0062;
+0061 0315 0300 05AE 074A 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;00E0 05AE 074A 0315 0062;0061 05AE 0300 074A 0315 0062;
+0061 074A 0315 0300 05AE 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;0061 05AE 074A 0300 0315 0062;
+0061 3099 093C 0334 093C 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 093C 3099 093C 0334 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;0061 0334 093C 093C 3099 0062;
+0061 05B0 094D 3099 094D 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 094D 05B0 094D 3099 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;0061 3099 094D 094D 05B0 0062;
+0061 0315 0300 05AE 0951 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;00E0 05AE 0951 0315 0062;0061 05AE 0300 0951 0315 0062;
+0061 0951 0315 0300 05AE 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;0061 05AE 0951 0300 0315 0062;
+0061 059A 0316 302A 0952 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;0061 302A 0316 0952 059A 0062;
+0061 0952 059A 0316 302A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;0061 302A 0952 0316 059A 0062;
+0061 0315 0300 05AE 0953 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;00E0 05AE 0953 0315 0062;0061 05AE 0300 0953 0315 0062;
+0061 0953 0315 0300 05AE 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;0061 05AE 0953 0300 0315 0062;
+0061 0315 0300 05AE 0954 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;00E0 05AE 0954 0315 0062;0061 05AE 0300 0954 0315 0062;
+0061 0954 0315 0300 05AE 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;0061 05AE 0954 0300 0315 0062;
+0061 3099 093C 0334 09BC 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;0061 0334 093C 09BC 3099 0062;
+0061 09BC 3099 093C 0334 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;0061 0334 09BC 093C 3099 0062;
+0061 05B0 094D 3099 09CD 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;0061 3099 094D 09CD 05B0 0062;
+0061 09CD 05B0 094D 3099 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;0061 3099 09CD 094D 05B0 0062;
+0061 3099 093C 0334 0A3C 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;0061 0334 093C 0A3C 3099 0062;
+0061 0A3C 3099 093C 0334 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;0061 0334 0A3C 093C 3099 0062;
+0061 05B0 094D 3099 0A4D 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;0061 3099 094D 0A4D 05B0 0062;
+0061 0A4D 05B0 094D 3099 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;0061 3099 0A4D 094D 05B0 0062;
+0061 3099 093C 0334 0ABC 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;0061 0334 093C 0ABC 3099 0062;
+0061 0ABC 3099 093C 0334 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;0061 0334 0ABC 093C 3099 0062;
+0061 05B0 094D 3099 0ACD 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;0061 3099 094D 0ACD 05B0 0062;
+0061 0ACD 05B0 094D 3099 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;0061 3099 0ACD 094D 05B0 0062;
+0061 3099 093C 0334 0B3C 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;0061 0334 093C 0B3C 3099 0062;
+0061 0B3C 3099 093C 0334 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;0061 0334 0B3C 093C 3099 0062;
+0061 05B0 094D 3099 0B4D 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;0061 3099 094D 0B4D 05B0 0062;
+0061 0B4D 05B0 094D 3099 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;0061 3099 0B4D 094D 05B0 0062;
+0061 05B0 094D 3099 0BCD 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;0061 3099 094D 0BCD 05B0 0062;
+0061 0BCD 05B0 094D 3099 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;0061 3099 0BCD 094D 05B0 0062;
+0061 05B0 094D 3099 0C4D 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;0061 3099 094D 0C4D 05B0 0062;
+0061 0C4D 05B0 094D 3099 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;0061 3099 0C4D 094D 05B0 0062;
+0061 0C56 0C55 0711 0C55 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0C55 0C56 0C55 0711 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;0061 0711 0C55 0C55 0C56 0062;
+0061 0E38 0C56 0C55 0C56 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 0C56 0E38 0C56 0C55 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;0061 0C55 0C56 0C56 0E38 0062;
+0061 3099 093C 0334 0CBC 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;0061 0334 093C 0CBC 3099 0062;
+0061 0CBC 3099 093C 0334 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;0061 0334 0CBC 093C 3099 0062;
+0061 05B0 094D 3099 0CCD 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;0061 3099 094D 0CCD 05B0 0062;
+0061 0CCD 05B0 094D 3099 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;0061 3099 0CCD 094D 05B0 0062;
+0061 05B0 094D 3099 0D4D 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;0061 3099 094D 0D4D 05B0 0062;
+0061 0D4D 05B0 094D 3099 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;0061 3099 0D4D 094D 05B0 0062;
+0061 05B0 094D 3099 0DCA 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;0061 3099 094D 0DCA 05B0 0062;
+0061 0DCA 05B0 094D 3099 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;0061 3099 0DCA 094D 05B0 0062;
+0061 0E48 0E38 0C56 0E38 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E38 0E48 0E38 0C56 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;0061 0C56 0E38 0E38 0E48 0062;
+0061 0E48 0E38 0C56 0E39 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;0061 0C56 0E38 0E39 0E48 0062;
+0061 0E39 0E48 0E38 0C56 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;0061 0C56 0E39 0E38 0E48 0062;
+0061 05B0 094D 3099 0E3A 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;0061 3099 094D 0E3A 05B0 0062;
+0061 0E3A 05B0 094D 3099 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;0061 3099 0E3A 094D 05B0 0062;
+0061 0EB8 0E48 0E38 0E48 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0E48 0EB8 0E48 0E38 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;0061 0E38 0E48 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E49 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;0061 0E38 0E48 0E49 0EB8 0062;
+0061 0E49 0EB8 0E48 0E38 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;0061 0E38 0E49 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4A 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;0061 0E38 0E48 0E4A 0EB8 0062;
+0061 0E4A 0EB8 0E48 0E38 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;0061 0E38 0E4A 0E48 0EB8 0062;
+0061 0EB8 0E48 0E38 0E4B 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;0061 0E38 0E48 0E4B 0EB8 0062;
+0061 0E4B 0EB8 0E48 0E38 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;0061 0E38 0E4B 0E48 0EB8 0062;
+0061 0EC8 0EB8 0E48 0EB8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EB8 0EC8 0EB8 0E48 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;0061 0E48 0EB8 0EB8 0EC8 0062;
+0061 0EC8 0EB8 0E48 0EB9 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;0061 0E48 0EB8 0EB9 0EC8 0062;
+0061 0EB9 0EC8 0EB8 0E48 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;0061 0E48 0EB9 0EB8 0EC8 0062;
+0061 0F71 0EC8 0EB8 0EC8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0EC8 0F71 0EC8 0EB8 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;0061 0EB8 0EC8 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0EC9 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;0061 0EB8 0EC8 0EC9 0F71 0062;
+0061 0EC9 0F71 0EC8 0EB8 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;0061 0EB8 0EC9 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECA 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;0061 0EB8 0EC8 0ECA 0F71 0062;
+0061 0ECA 0F71 0EC8 0EB8 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;0061 0EB8 0ECA 0EC8 0F71 0062;
+0061 0F71 0EC8 0EB8 0ECB 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;0061 0EB8 0EC8 0ECB 0F71 0062;
+0061 0ECB 0F71 0EC8 0EB8 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;0061 0EB8 0ECB 0EC8 0F71 0062;
+0061 059A 0316 302A 0F18 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;0061 302A 0316 0F18 059A 0062;
+0061 0F18 059A 0316 302A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;0061 302A 0F18 0316 059A 0062;
+0061 059A 0316 302A 0F19 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;0061 302A 0316 0F19 059A 0062;
+0061 0F19 059A 0316 302A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;0061 302A 0F19 0316 059A 0062;
+0061 059A 0316 302A 0F35 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;0061 302A 0316 0F35 059A 0062;
+0061 0F35 059A 0316 302A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;0061 302A 0F35 0316 059A 0062;
+0061 059A 0316 302A 0F37 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;0061 302A 0316 0F37 059A 0062;
+0061 0F37 059A 0316 302A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;0061 302A 0F37 0316 059A 0062;
+0061 302A 031B 0321 0F39 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;0061 0321 031B 0F39 302A 0062;
+0061 0F39 302A 031B 0321 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;0061 0321 0F39 031B 302A 0062;
+0061 0F72 0F71 0EC8 0F71 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F71 0F72 0F71 0EC8 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;0061 0EC8 0F71 0F71 0F72 0062;
+0061 0F74 0F72 0F71 0F72 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0F72 0F74 0F72 0F71 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;0061 0F71 0F72 0F72 0F74 0062;
+0061 0321 0F74 0F72 0F74 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0321 0F74 0F72 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;0061 0F72 0F74 0F74 0321 0062;
+0061 0F74 0F72 0F71 0F7A 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;0061 0F71 0F72 0F7A 0F74 0062;
+0061 0F7A 0F74 0F72 0F71 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;0061 0F71 0F7A 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7B 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;0061 0F71 0F72 0F7B 0F74 0062;
+0061 0F7B 0F74 0F72 0F71 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;0061 0F71 0F7B 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7C 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;0061 0F71 0F72 0F7C 0F74 0062;
+0061 0F7C 0F74 0F72 0F71 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;0061 0F71 0F7C 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F7D 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;0061 0F71 0F72 0F7D 0F74 0062;
+0061 0F7D 0F74 0F72 0F71 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;0061 0F71 0F7D 0F72 0F74 0062;
+0061 0F74 0F72 0F71 0F80 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;0061 0F71 0F72 0F80 0F74 0062;
+0061 0F80 0F74 0F72 0F71 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;0061 0F71 0F80 0F72 0F74 0062;
+0061 0315 0300 05AE 0F82 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;00E0 05AE 0F82 0315 0062;0061 05AE 0300 0F82 0315 0062;
+0061 0F82 0315 0300 05AE 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;0061 05AE 0F82 0300 0315 0062;
+0061 0315 0300 05AE 0F83 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;00E0 05AE 0F83 0315 0062;0061 05AE 0300 0F83 0315 0062;
+0061 0F83 0315 0300 05AE 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;0061 05AE 0F83 0300 0315 0062;
+0061 05B0 094D 3099 0F84 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;0061 3099 094D 0F84 05B0 0062;
+0061 0F84 05B0 094D 3099 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;0061 3099 0F84 094D 05B0 0062;
+0061 0315 0300 05AE 0F86 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;00E0 05AE 0F86 0315 0062;0061 05AE 0300 0F86 0315 0062;
+0061 0F86 0315 0300 05AE 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;0061 05AE 0F86 0300 0315 0062;
+0061 0315 0300 05AE 0F87 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;00E0 05AE 0F87 0315 0062;0061 05AE 0300 0F87 0315 0062;
+0061 0F87 0315 0300 05AE 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;0061 05AE 0F87 0300 0315 0062;
+0061 059A 0316 302A 0FC6 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;0061 302A 0316 0FC6 059A 0062;
+0061 0FC6 059A 0316 302A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;0061 302A 0FC6 0316 059A 0062;
+0061 3099 093C 0334 1037 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;0061 0334 093C 1037 3099 0062;
+0061 1037 3099 093C 0334 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;0061 0334 1037 093C 3099 0062;
+0061 05B0 094D 3099 1039 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;0061 3099 094D 1039 05B0 0062;
+0061 1039 05B0 094D 3099 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;0061 3099 1039 094D 05B0 0062;
+0061 0315 0300 05AE 135F 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062;00E0 05AE 135F 0315 0062;0061 05AE 0300 135F 0315 0062;
+0061 135F 0315 0300 05AE 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;0061 05AE 135F 0300 0315 0062;
+0061 05B0 094D 3099 1714 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;0061 3099 094D 1714 05B0 0062;
+0061 1714 05B0 094D 3099 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;0061 3099 1714 094D 05B0 0062;
+0061 05B0 094D 3099 1734 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;0061 3099 094D 1734 05B0 0062;
+0061 1734 05B0 094D 3099 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;0061 3099 1734 094D 05B0 0062;
+0061 05B0 094D 3099 17D2 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;0061 3099 094D 17D2 05B0 0062;
+0061 17D2 05B0 094D 3099 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;0061 3099 17D2 094D 05B0 0062;
+0061 0315 0300 05AE 17DD 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062;00E0 05AE 17DD 0315 0062;0061 05AE 0300 17DD 0315 0062;
+0061 17DD 0315 0300 05AE 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;0061 05AE 17DD 0300 0315 0062;
+0061 0300 05AE 1D16D 18A9 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;00E0 1D16D 05AE 18A9 0062;0061 1D16D 05AE 18A9 0300 0062;
+0061 18A9 0300 05AE 1D16D 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;00E0 1D16D 18A9 05AE 0062;0061 1D16D 18A9 05AE 0300 0062;
+0061 302E 059A 0316 1939 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;0061 0316 059A 1939 302E 0062;
+0061 1939 302E 059A 0316 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;0061 0316 1939 059A 302E 0062;
+0061 0315 0300 05AE 193A 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062;00E0 05AE 193A 0315 0062;0061 05AE 0300 193A 0315 0062;
+0061 193A 0315 0300 05AE 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;0061 05AE 193A 0300 0315 0062;
+0061 059A 0316 302A 193B 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;0061 302A 0316 193B 059A 0062;
+0061 193B 059A 0316 302A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;0061 302A 193B 0316 059A 0062;
+0061 0315 0300 05AE 1A17 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062;00E0 05AE 1A17 0315 0062;0061 05AE 0300 1A17 0315 0062;
+0061 1A17 0315 0300 05AE 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;0061 05AE 1A17 0300 0315 0062;
+0061 059A 0316 302A 1A18 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;0061 302A 0316 1A18 059A 0062;
+0061 1A18 059A 0316 302A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;0061 302A 1A18 0316 059A 0062;
+0061 0315 0300 05AE 1DC0 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062;00E0 05AE 1DC0 0315 0062;0061 05AE 0300 1DC0 0315 0062;
+0061 1DC0 0315 0300 05AE 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;0061 05AE 1DC0 0300 0315 0062;
+0061 0315 0300 05AE 1DC1 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062;00E0 05AE 1DC1 0315 0062;0061 05AE 0300 1DC1 0315 0062;
+0061 1DC1 0315 0300 05AE 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;0061 05AE 1DC1 0300 0315 0062;
+0061 059A 0316 302A 1DC2 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;0061 302A 0316 1DC2 059A 0062;
+0061 1DC2 059A 0316 302A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;0061 302A 1DC2 0316 059A 0062;
+0061 0315 0300 05AE 1DC3 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062;00E0 05AE 1DC3 0315 0062;0061 05AE 0300 1DC3 0315 0062;
+0061 1DC3 0315 0300 05AE 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;0061 05AE 1DC3 0300 0315 0062;
+0061 0315 0300 05AE 20D0 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;00E0 05AE 20D0 0315 0062;0061 05AE 0300 20D0 0315 0062;
+0061 20D0 0315 0300 05AE 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;0061 05AE 20D0 0300 0315 0062;
+0061 0315 0300 05AE 20D1 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;00E0 05AE 20D1 0315 0062;0061 05AE 0300 20D1 0315 0062;
+0061 20D1 0315 0300 05AE 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;0061 05AE 20D1 0300 0315 0062;
+0061 093C 0334 20D2 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;0061 0334 20D2 093C 0062;
+0061 20D2 093C 0334 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;0061 20D2 0334 093C 0062;
+0061 093C 0334 20D3 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;0061 0334 20D3 093C 0062;
+0061 20D3 093C 0334 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;0061 20D3 0334 093C 0062;
+0061 0315 0300 05AE 20D4 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;00E0 05AE 20D4 0315 0062;0061 05AE 0300 20D4 0315 0062;
+0061 20D4 0315 0300 05AE 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;0061 05AE 20D4 0300 0315 0062;
+0061 0315 0300 05AE 20D5 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;00E0 05AE 20D5 0315 0062;0061 05AE 0300 20D5 0315 0062;
+0061 20D5 0315 0300 05AE 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;0061 05AE 20D5 0300 0315 0062;
+0061 0315 0300 05AE 20D6 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;00E0 05AE 20D6 0315 0062;0061 05AE 0300 20D6 0315 0062;
+0061 20D6 0315 0300 05AE 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;0061 05AE 20D6 0300 0315 0062;
+0061 0315 0300 05AE 20D7 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;00E0 05AE 20D7 0315 0062;0061 05AE 0300 20D7 0315 0062;
+0061 20D7 0315 0300 05AE 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;0061 05AE 20D7 0300 0315 0062;
+0061 093C 0334 20D8 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;0061 0334 20D8 093C 0062;
+0061 20D8 093C 0334 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;0061 20D8 0334 093C 0062;
+0061 093C 0334 20D9 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;0061 0334 20D9 093C 0062;
+0061 20D9 093C 0334 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;0061 20D9 0334 093C 0062;
+0061 093C 0334 20DA 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;0061 0334 20DA 093C 0062;
+0061 20DA 093C 0334 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;0061 20DA 0334 093C 0062;
+0061 0315 0300 05AE 20DB 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;00E0 05AE 20DB 0315 0062;0061 05AE 0300 20DB 0315 0062;
+0061 20DB 0315 0300 05AE 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;0061 05AE 20DB 0300 0315 0062;
+0061 0315 0300 05AE 20DC 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;00E0 05AE 20DC 0315 0062;0061 05AE 0300 20DC 0315 0062;
+0061 20DC 0315 0300 05AE 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;0061 05AE 20DC 0300 0315 0062;
+0061 0315 0300 05AE 20E1 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;00E0 05AE 20E1 0315 0062;0061 05AE 0300 20E1 0315 0062;
+0061 20E1 0315 0300 05AE 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;0061 05AE 20E1 0300 0315 0062;
+0061 093C 0334 20E5 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;0061 0334 20E5 093C 0062;
+0061 20E5 093C 0334 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;0061 20E5 0334 093C 0062;
+0061 093C 0334 20E6 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;0061 0334 20E6 093C 0062;
+0061 20E6 093C 0334 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;0061 20E6 0334 093C 0062;
+0061 0315 0300 05AE 20E7 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;00E0 05AE 20E7 0315 0062;0061 05AE 0300 20E7 0315 0062;
+0061 20E7 0315 0300 05AE 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;0061 05AE 20E7 0300 0315 0062;
+0061 059A 0316 302A 20E8 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;0061 302A 0316 20E8 059A 0062;
+0061 20E8 059A 0316 302A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;0061 302A 20E8 0316 059A 0062;
+0061 0315 0300 05AE 20E9 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;00E0 05AE 20E9 0315 0062;0061 05AE 0300 20E9 0315 0062;
+0061 20E9 0315 0300 05AE 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;0061 05AE 20E9 0300 0315 0062;
+0061 093C 0334 20EA 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;0061 0334 20EA 093C 0062;
+0061 20EA 093C 0334 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;0061 20EA 0334 093C 0062;
+0061 093C 0334 20EB 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;0061 0334 20EB 093C 0062;
+0061 20EB 093C 0334 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;0061 20EB 0334 093C 0062;
+0061 0316 302A 031B 302A 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 302A 0316 302A 031B 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;0061 031B 302A 302A 0316 0062;
+0061 0300 05AE 1D16D 302B 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;00E0 1D16D 05AE 302B 0062;0061 1D16D 05AE 302B 0300 0062;
+0061 302B 0300 05AE 1D16D 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;00E0 1D16D 302B 05AE 0062;0061 1D16D 302B 05AE 0300 0062;
+0061 035C 0315 0300 302C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062;00E0 0315 302C 035C 0062;0061 0300 0315 302C 035C 0062;
+0061 302C 035C 0315 0300 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062;00E0 302C 0315 035C 0062;0061 0300 302C 0315 035C 0062;
+0061 302E 059A 0316 302D 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;0061 0316 059A 302D 302E 0062;
+0061 302D 302E 059A 0316 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;0061 0316 302D 059A 302E 0062;
+0061 1D16D 302E 059A 302E 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 302E 1D16D 302E 059A 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;0061 059A 302E 302E 1D16D 0062;
+0061 1D16D 302E 059A 302F 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;0061 059A 302E 302F 1D16D 0062;
+0061 302F 1D16D 302E 059A 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;0061 059A 302F 302E 1D16D 0062;
+0061 094D 3099 093C 3099 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 3099 094D 3099 093C 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;0061 093C 3099 3099 094D 0062;
+0061 094D 3099 093C 309A 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;0061 093C 3099 309A 094D 0062;
+0061 309A 094D 3099 093C 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;0061 093C 309A 3099 094D 0062;
+0061 05B0 094D 3099 A806 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;0061 3099 094D A806 05B0 0062;
+0061 A806 05B0 094D 3099 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;0061 3099 A806 094D 05B0 0062;
+0061 064B FB1E 05C2 FB1E 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 FB1E 064B FB1E 05C2 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;0061 05C2 FB1E FB1E 064B 0062;
+0061 0315 0300 05AE FE20 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;00E0 05AE FE20 0315 0062;0061 05AE 0300 FE20 0315 0062;
+0061 FE20 0315 0300 05AE 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;0061 05AE FE20 0300 0315 0062;
+0061 0315 0300 05AE FE21 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;00E0 05AE FE21 0315 0062;0061 05AE 0300 FE21 0315 0062;
+0061 FE21 0315 0300 05AE 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;0061 05AE FE21 0300 0315 0062;
+0061 0315 0300 05AE FE22 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;00E0 05AE FE22 0315 0062;0061 05AE 0300 FE22 0315 0062;
+0061 FE22 0315 0300 05AE 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;0061 05AE FE22 0300 0315 0062;
+0061 0315 0300 05AE FE23 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;00E0 05AE FE23 0315 0062;0061 05AE 0300 FE23 0315 0062;
+0061 FE23 0315 0300 05AE 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;0061 05AE FE23 0300 0315 0062;
+0061 059A 0316 302A 10A0D 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;0061 302A 0316 10A0D 059A 0062;
+0061 10A0D 059A 0316 302A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;0061 302A 10A0D 0316 059A 0062;
+0061 0315 0300 05AE 10A0F 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062;00E0 05AE 10A0F 0315 0062;0061 05AE 0300 10A0F 0315 0062;
+0061 10A0F 0315 0300 05AE 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;0061 05AE 10A0F 0300 0315 0062;
+0061 0315 0300 05AE 10A38 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062;00E0 05AE 10A38 0315 0062;0061 05AE 0300 10A38 0315 0062;
+0061 10A38 0315 0300 05AE 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;0061 05AE 10A38 0300 0315 0062;
+0061 093C 0334 10A39 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;0061 0334 10A39 093C 0062;
+0061 10A39 093C 0334 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;0061 10A39 0334 093C 0062;
+0061 059A 0316 302A 10A3A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;0061 302A 0316 10A3A 059A 0062;
+0061 10A3A 059A 0316 302A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;0061 302A 10A3A 0316 059A 0062;
+0061 05B0 094D 3099 10A3F 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;0061 3099 094D 10A3F 05B0 0062;
+0061 10A3F 05B0 094D 3099 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;0061 3099 10A3F 094D 05B0 0062;
+0061 302A 031B 0321 1D165 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;0061 0321 031B 1D165 302A 0062;
+0061 1D165 302A 031B 0321 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;0061 0321 1D165 031B 302A 0062;
+0061 302A 031B 0321 1D166 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;0061 0321 031B 1D166 302A 0062;
+0061 1D166 302A 031B 0321 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;0061 0321 1D166 031B 302A 0062;
+0061 093C 0334 1D167 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;0061 0334 1D167 093C 0062;
+0061 1D167 093C 0334 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;0061 1D167 0334 093C 0062;
+0061 093C 0334 1D168 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;0061 0334 1D168 093C 0062;
+0061 1D168 093C 0334 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;0061 1D168 0334 093C 0062;
+0061 093C 0334 1D169 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;0061 0334 1D169 093C 0062;
+0061 1D169 093C 0334 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;0061 1D169 0334 093C 0062;
+0061 05AE 1D16D 302E 1D16D 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 1D16D 05AE 1D16D 302E 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;0061 302E 1D16D 1D16D 05AE 0062;
+0061 302A 031B 0321 1D16E 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;0061 0321 031B 1D16E 302A 0062;
+0061 1D16E 302A 031B 0321 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;0061 0321 1D16E 031B 302A 0062;
+0061 302A 031B 0321 1D16F 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;0061 0321 031B 1D16F 302A 0062;
+0061 1D16F 302A 031B 0321 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;0061 0321 1D16F 031B 302A 0062;
+0061 302A 031B 0321 1D170 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;0061 0321 031B 1D170 302A 0062;
+0061 1D170 302A 031B 0321 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;0061 0321 1D170 031B 302A 0062;
+0061 302A 031B 0321 1D171 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;0061 0321 031B 1D171 302A 0062;
+0061 1D171 302A 031B 0321 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;0061 0321 1D171 031B 302A 0062;
+0061 302A 031B 0321 1D172 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;0061 0321 031B 1D172 302A 0062;
+0061 1D172 302A 031B 0321 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;0061 0321 1D172 031B 302A 0062;
+0061 059A 0316 302A 1D17B 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;0061 302A 0316 1D17B 059A 0062;
+0061 1D17B 059A 0316 302A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;0061 302A 1D17B 0316 059A 0062;
+0061 059A 0316 302A 1D17C 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;0061 302A 0316 1D17C 059A 0062;
+0061 1D17C 059A 0316 302A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;0061 302A 1D17C 0316 059A 0062;
+0061 059A 0316 302A 1D17D 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;0061 302A 0316 1D17D 059A 0062;
+0061 1D17D 059A 0316 302A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;0061 302A 1D17D 0316 059A 0062;
+0061 059A 0316 302A 1D17E 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;0061 302A 0316 1D17E 059A 0062;
+0061 1D17E 059A 0316 302A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;0061 302A 1D17E 0316 059A 0062;
+0061 059A 0316 302A 1D17F 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;0061 302A 0316 1D17F 059A 0062;
+0061 1D17F 059A 0316 302A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;0061 302A 1D17F 0316 059A 0062;
+0061 059A 0316 302A 1D180 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;0061 302A 0316 1D180 059A 0062;
+0061 1D180 059A 0316 302A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;0061 302A 1D180 0316 059A 0062;
+0061 059A 0316 302A 1D181 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;0061 302A 0316 1D181 059A 0062;
+0061 1D181 059A 0316 302A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;0061 302A 1D181 0316 059A 0062;
+0061 059A 0316 302A 1D182 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;0061 302A 0316 1D182 059A 0062;
+0061 1D182 059A 0316 302A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;0061 302A 1D182 0316 059A 0062;
+0061 0315 0300 05AE 1D185 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;00E0 05AE 1D185 0315 0062;0061 05AE 0300 1D185 0315 0062;
+0061 1D185 0315 0300 05AE 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;0061 05AE 1D185 0300 0315 0062;
+0061 0315 0300 05AE 1D186 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;00E0 05AE 1D186 0315 0062;0061 05AE 0300 1D186 0315 0062;
+0061 1D186 0315 0300 05AE 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;0061 05AE 1D186 0300 0315 0062;
+0061 0315 0300 05AE 1D187 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;00E0 05AE 1D187 0315 0062;0061 05AE 0300 1D187 0315 0062;
+0061 1D187 0315 0300 05AE 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;0061 05AE 1D187 0300 0315 0062;
+0061 0315 0300 05AE 1D188 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;00E0 05AE 1D188 0315 0062;0061 05AE 0300 1D188 0315 0062;
+0061 1D188 0315 0300 05AE 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;0061 05AE 1D188 0300 0315 0062;
+0061 0315 0300 05AE 1D189 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;00E0 05AE 1D189 0315 0062;0061 05AE 0300 1D189 0315 0062;
+0061 1D189 0315 0300 05AE 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;0061 05AE 1D189 0300 0315 0062;
+0061 059A 0316 302A 1D18A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;0061 302A 0316 1D18A 059A 0062;
+0061 1D18A 059A 0316 302A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;0061 302A 1D18A 0316 059A 0062;
+0061 059A 0316 302A 1D18B 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;0061 302A 0316 1D18B 059A 0062;
+0061 1D18B 059A 0316 302A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;0061 302A 1D18B 0316 059A 0062;
+0061 0315 0300 05AE 1D1AA 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;00E0 05AE 1D1AA 0315 0062;0061 05AE 0300 1D1AA 0315 0062;
+0061 1D1AA 0315 0300 05AE 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;0061 05AE 1D1AA 0300 0315 0062;
+0061 0315 0300 05AE 1D1AB 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;00E0 05AE 1D1AB 0315 0062;0061 05AE 0300 1D1AB 0315 0062;
+0061 1D1AB 0315 0300 05AE 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;0061 05AE 1D1AB 0300 0315 0062;
+0061 0315 0300 05AE 1D1AC 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;00E0 05AE 1D1AC 0315 0062;0061 05AE 0300 1D1AC 0315 0062;
+0061 1D1AC 0315 0300 05AE 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;0061 05AE 1D1AC 0300 0315 0062;
+0061 0315 0300 05AE 1D1AD 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;00E0 05AE 1D1AD 0315 0062;0061 05AE 0300 1D1AD 0315 0062;
+0061 1D1AD 0315 0300 05AE 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;0061 05AE 1D1AD 0300 0315 0062;
+0061 0315 0300 05AE 1D242 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062;00E0 05AE 1D242 0315 0062;0061 05AE 0300 1D242 0315 0062;
+0061 1D242 0315 0300 05AE 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;0061 05AE 1D242 0300 0315 0062;
+0061 0315 0300 05AE 1D243 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062;00E0 05AE 1D243 0315 0062;0061 05AE 0300 1D243 0315 0062;
+0061 1D243 0315 0300 05AE 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;0061 05AE 1D243 0300 0315 0062;
+0061 0315 0300 05AE 1D244 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062;00E0 05AE 1D244 0315 0062;0061 05AE 0300 1D244 0315 0062;
+0061 1D244 0315 0300 05AE 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;0061 05AE 1D244 0300 0315 0062;
+#
+@Part3 # PRI #29 Test
+#
+09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;09C7 0334 09BE;
+09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;09C7 0334 09D7;
+0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;0B47 0334 0B3E;
+0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;0B47 0334 0B56;
+0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;0B47 0334 0B57;
+0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;0B92 0334 0BD7;
+0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;0BC6 0334 0BBE;
+0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;0BC6 0334 0BD7;
+0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;0BC7 0334 0BBE;
+0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;0CBF 0334 0CD5;
+0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;0CC6 0334 0CC2;
+0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;0CC6 0334 0CD5;
+0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;0CC6 0334 0CD6;
+0CCA 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5;0CCA 0334 0CD5;0CC6 0CC2 0334 0CD5;
+0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;0D46 0334 0D3E;
+0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;0D46 0334 0D57;
+0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;0D47 0334 0D3E;
+0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;0DD9 0334 0DCF;
+0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;0DD9 0334 0DDF;
+0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;0F40 0334 0FB5;
+0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;0F42 0334 0FB7;
+0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;0F4C 0334 0FB7;
+0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;0F51 0334 0FB7;
+0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;0F56 0334 0FB7;
+0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;0F5B 0334 0FB7;
+0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;0F90 0334 0FB5;
+0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;0F92 0334 0FB7;
+0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;0F9C 0334 0FB7;
+0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;0FA1 0334 0FB7;
+0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;0FA6 0334 0FB7;
+0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;0FAB 0334 0FB7;
+1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E;1025 0334 102E;
+1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161;1100 0334 1161;
+1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E;1100 0334 116E;
+1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166;1101 0334 1166;
+1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173;1101 0334 1173;
+1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B;1102 0334 116B;
+1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163;1103 0334 1163;
+1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170;1103 0334 1170;
+1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168;1104 0334 1168;
+1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175;1104 0334 1175;
+1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D;1105 0334 116D;
+1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165;1106 0334 1165;
+1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172;1106 0334 1172;
+1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A;1107 0334 116A;
+1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162;1108 0334 1162;
+1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F;1108 0334 116F;
+1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167;1109 0334 1167;
+1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174;1109 0334 1174;
+110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C;110A 0334 116C;
+110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164;110B 0334 1164;
+110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171;110B 0334 1171;
+110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169;110C 0334 1169;
+110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161;110D 0334 1161;
+110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E;110D 0334 116E;
+110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166;110E 0334 1166;
+110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173;110E 0334 1173;
+110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B;110F 0334 116B;
+1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163;1110 0334 1163;
+1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170;1110 0334 1170;
+1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168;1111 0334 1168;
+1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175;1111 0334 1175;
+1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D;1112 0334 116D;
+AC54 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE;AC54 0334 11AE;1100 1164 0334 11AE;
+ACA8 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5;ACA8 0334 11B5;1100 1167 0334 11B5;
+ACFC 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC;ACFC 0334 11BC;1100 116A 0334 11BC;
+ADC0 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE;ADC0 0334 11AE;1100 1171 0334 11AE;
+AE14 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5;AE14 0334 11B5;1100 1174 0334 11B5;
+AE68 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC;AE68 0334 11BC;1101 1162 0334 11BC;
+AF2C 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE;AF2C 0334 11AE;1101 1169 0334 11AE;
+AF80 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5;AF80 0334 11B5;1101 116C 0334 11B5;
+AFD4 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC;AFD4 0334 11BC;1101 116F 0334 11BC;
+B098 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE;B098 0334 11AE;1102 1161 0334 11AE;
+B0EC 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5;B0EC 0334 11B5;1102 1164 0334 11B5;
+B140 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC;B140 0334 11BC;1102 1167 0334 11BC;
+B204 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE;B204 0334 11AE;1102 116E 0334 11AE;
+B258 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5;B258 0334 11B5;1102 1171 0334 11B5;
+B2AC 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC;B2AC 0334 11BC;1102 1174 0334 11BC;
+B370 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE;B370 0334 11AE;1103 1166 0334 11AE;
+B3C4 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5;B3C4 0334 11B5;1103 1169 0334 11B5;
+B418 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC;B418 0334 11BC;1103 116C 0334 11BC;
+B4DC 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE;B4DC 0334 11AE;1103 1173 0334 11AE;
+B530 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5;B530 0334 11B5;1104 1161 0334 11B5;
+B584 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC;B584 0334 11BC;1104 1164 0334 11BC;
+B648 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE;B648 0334 11AE;1104 116B 0334 11AE;
+B69C 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5;B69C 0334 11B5;1104 116E 0334 11B5;
+B6F0 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC;B6F0 0334 11BC;1104 1171 0334 11BC;
+B7B4 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE;B7B4 0334 11AE;1105 1163 0334 11AE;
+B808 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5;B808 0334 11B5;1105 1166 0334 11B5;
+B85C 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC;B85C 0334 11BC;1105 1169 0334 11BC;
+B920 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE;B920 0334 11AE;1105 1170 0334 11AE;
+B974 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5;B974 0334 11B5;1105 1173 0334 11B5;
+B9C8 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC;B9C8 0334 11BC;1106 1161 0334 11BC;
+BA8C 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE;BA8C 0334 11AE;1106 1168 0334 11AE;
+BAE0 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5;BAE0 0334 11B5;1106 116B 0334 11B5;
+BB34 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC;BB34 0334 11BC;1106 116E 0334 11BC;
+BBF8 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE;BBF8 0334 11AE;1106 1175 0334 11AE;
+BC4C 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5;BC4C 0334 11B5;1107 1163 0334 11B5;
+BCA0 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC;BCA0 0334 11BC;1107 1166 0334 11BC;
+BD64 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE;BD64 0334 11AE;1107 116D 0334 11AE;
+BDB8 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5;BDB8 0334 11B5;1107 1170 0334 11B5;
+BE0C 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC;BE0C 0334 11BC;1107 1173 0334 11BC;
+BED0 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE;BED0 0334 11AE;1108 1165 0334 11AE;
+BF24 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5;BF24 0334 11B5;1108 1168 0334 11B5;
+BF78 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC;BF78 0334 11BC;1108 116B 0334 11BC;
+C03C 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE;C03C 0334 11AE;1108 1172 0334 11AE;
+C090 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5;C090 0334 11B5;1108 1175 0334 11B5;
+C0E4 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC;C0E4 0334 11BC;1109 1163 0334 11BC;
+C1A8 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE;C1A8 0334 11AE;1109 116A 0334 11AE;
+C1FC 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5;C1FC 0334 11B5;1109 116D 0334 11B5;
+C250 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC;C250 0334 11BC;1109 1170 0334 11BC;
+C314 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE;C314 0334 11AE;110A 1162 0334 11AE;
+C368 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5;C368 0334 11B5;110A 1165 0334 11B5;
+C3BC 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC;C3BC 0334 11BC;110A 1168 0334 11BC;
+C480 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE;C480 0334 11AE;110A 116F 0334 11AE;
+C4D4 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5;C4D4 0334 11B5;110A 1172 0334 11B5;
+C528 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC;C528 0334 11BC;110A 1175 0334 11BC;
+C5EC 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE;C5EC 0334 11AE;110B 1167 0334 11AE;
+C640 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5;C640 0334 11B5;110B 116A 0334 11B5;
+C694 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC;C694 0334 11BC;110B 116D 0334 11BC;
+C758 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE;C758 0334 11AE;110B 1174 0334 11AE;
+C7AC 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5;C7AC 0334 11B5;110C 1162 0334 11B5;
+C800 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC;C800 0334 11BC;110C 1165 0334 11BC;
+C8C4 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE;C8C4 0334 11AE;110C 116C 0334 11AE;
+C918 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5;C918 0334 11B5;110C 116F 0334 11B5;
+C96C 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC;C96C 0334 11BC;110C 1172 0334 11BC;
+CA30 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE;CA30 0334 11AE;110D 1164 0334 11AE;
+CA84 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5;CA84 0334 11B5;110D 1167 0334 11B5;
+CAD8 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC;CAD8 0334 11BC;110D 116A 0334 11BC;
+CB9C 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE;CB9C 0334 11AE;110D 1171 0334 11AE;
+CBF0 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5;CBF0 0334 11B5;110D 1174 0334 11B5;
+CC44 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC;CC44 0334 11BC;110E 1162 0334 11BC;
+CD08 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE;CD08 0334 11AE;110E 1169 0334 11AE;
+CD5C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5;CD5C 0334 11B5;110E 116C 0334 11B5;
+CDB0 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC;CDB0 0334 11BC;110E 116F 0334 11BC;
+CE74 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE;CE74 0334 11AE;110F 1161 0334 11AE;
+CEC8 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5;CEC8 0334 11B5;110F 1164 0334 11B5;
+CF1C 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC;CF1C 0334 11BC;110F 1167 0334 11BC;
+CFE0 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE;CFE0 0334 11AE;110F 116E 0334 11AE;
+D034 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5;D034 0334 11B5;110F 1171 0334 11B5;
+D088 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC;D088 0334 11BC;110F 1174 0334 11BC;
+D14C 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE;D14C 0334 11AE;1110 1166 0334 11AE;
+D1A0 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5;D1A0 0334 11B5;1110 1169 0334 11B5;
+D1F4 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC;D1F4 0334 11BC;1110 116C 0334 11BC;
+D2B8 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE;D2B8 0334 11AE;1110 1173 0334 11AE;
+D30C 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5;D30C 0334 11B5;1111 1161 0334 11B5;
+D360 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC;D360 0334 11BC;1111 1164 0334 11BC;
+D424 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE;D424 0334 11AE;1111 116B 0334 11AE;
+D478 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5;D478 0334 11B5;1111 116E 0334 11B5;
+D4CC 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC;D4CC 0334 11BC;1111 1171 0334 11BC;
+D590 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE;D590 0334 11AE;1112 1163 0334 11AE;
+D5E4 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5;D5E4 0334 11B5;1112 1166 0334 11B5;
+D638 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC;D638 0334 11BC;1112 1169 0334 11BC;
+D6FC 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE;D6FC 0334 11AE;1112 1170 0334 11AE;
+D750 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;
+#
+# END OF FILE
diff --git a/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt b/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt
new file mode 100644
index 0000000..11a5b1d
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt
@@ -0,0 +1,260 @@
+# SpecialCasing-4.1.0.txt
+# Date: 2005-03-26, 00:35:45 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2005 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Special Casing Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains additional information about the casing of Unicode characters.
+# (For compatibility, the UnicodeData.txt file only contains case mappings for
+# characters where they are 1-1, and does not have locale-specific mappings.)
+# For more information, see the discussion of Case Mappings in the Unicode Standard.
+#
+# All code points not listed in this file that do not have a simple case mappings
+# in UnicodeData.txt map to themselves.
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? # <comment>
+#
+# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more
+# than one character, they are separated by spaces. Other than as used to separate 
+# elements, spaces are to be ignored.
+#
+# The <condition_list> is optional. Where present, it consists of one or more locale IDs
+# or contexts, separated by spaces. In these conditions:
+# - A condition list overrides the normal behavior if all of the listed conditions are true.
+# - The context is always the context of the characters in the original string,
+#   NOT in the resulting string.
+# - Case distinctions in the condition list are not significant.
+# - Conditions preceded by "Not_" represent the negation of the condition.
+#
+# A locale ID is defined by taking any language tag as defined by
+# RFC 3066 (or its successor), and replacing '-' by '_'.
+#
+# A context for a character C is defined by Section 3.13 Default Case Operations,
+# on p. 89-90 of The Unicode Standard, Version 4.0, as amended by Unicode 4.1.0,
+# as specified in http://www.unicode.org/versions/Unicode4.1.0/
+#
+# Parsers of this file must be prepared to deal with future additions to this format:
+#  * Additional contexts
+#  * Additional fields
+# ================================================================================
+
+# ================================================================================
+# Unconditional mappings
+# ================================================================================
+
+# The German es-zed is special--the normal mapping is to SS.
+# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
+
+00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
+
+# Preserve canonical equivalence for I with dot. Turkic is handled below.
+
+0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# Ligatures
+
+FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
+FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
+FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
+FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
+FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
+FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
+FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
+
+0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
+FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
+
+# No corresponding uppercase precomposed character
+
+0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
+1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+
+# IMPORTANT-when capitalizing iota-subscript (0345)
+#  It MUST be in normalized form--moved to the end of any sequence of combining marks.
+#  This is because logically it represents a following base character!
+#  E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
+# It should never be the first character in a word, so in titlecasing it can be left as is.
+
+# The following cases are already in the UnicodeData file, so are only commented here.
+
+# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+
+# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
+# have special uppercases.
+# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
+
+1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Some characters with YPOGEGRAMMENI also have no corresponding titlecases
+
+1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+
+1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+
+# ================================================================================
+# Conditional mappings
+# ================================================================================
+
+# Special case for final form of sigma
+
+03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
+
+# Note: the following cases for non-final are already in the UnicodeData file.
+
+# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
+# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
+
+# Note: the following cases are not included, since they would case-fold in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Lithuanian
+
+# Lithuanian retains the dot in a lowercase i when followed by accents.
+
+# Remove DOT ABOVE after "i" with upper or titlecase
+
+0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
+
+# Introduce an explicit dot above when lowercasing capital I's and J's
+# whenever there are more accents above.
+# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
+
+0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
+004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
+012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
+00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
+00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
+0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
+
+# ================================================================================
+
+# Turkish and Azeri
+
+# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+# The following rules handle those cases.
+
+0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
+# This matches the behavior of the canonically equivalent I-dot_above
+
+0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
+0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
+
+# When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
+
+0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
+0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
+
+# When uppercasing, i turns into a dotted capital I
+
+0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
+0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
+
+# Note: the following case is already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
diff --git a/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt b/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt
new file mode 100644
index 0000000..77db788
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt
@@ -0,0 +1,19336 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
+000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
+001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
+001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
+001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
+0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;
+0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;
+0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;
+0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;;
+0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;;
+0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;;
+023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65;
+023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C;
+023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B
+023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A;
+023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66;
+023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
+0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
+0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242;
+0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241
+0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180;
+0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289;
+0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C;
+0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247;
+0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246
+0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249;
+0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248
+024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B;
+024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A
+024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D;
+024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C
+024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F;
+024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;;
+02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
+02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
+02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
+02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
+02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
+02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
+0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;
+0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;
+0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;
+0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;;
+035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
+035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;;
+035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
+035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;
+035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;
+035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
+0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
+0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
+0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
+0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
+0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
+0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
+036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
+036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
+036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
+036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
+036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
+036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
+0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371;
+0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370
+0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373;
+0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372
+0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377;
+0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD
+037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE
+037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7;
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF
+03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9;
+03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
+03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
+03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;
+03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7
+03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;
+03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;
+03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA
+03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;;
+03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B;
+03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C;
+03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D;
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
+048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
+04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
+04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
+04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
+04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7;
+04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB;
+04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA
+04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD;
+04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC
+04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF;
+04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE
+0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
+0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
+0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
+0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
+0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
+0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
+0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
+0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
+0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
+0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
+050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
+050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
+050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
+050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
+050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
+050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
+0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511;
+0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510
+0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513;
+0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512
+0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515;
+0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514
+0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517;
+0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516
+0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519;
+0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518
+051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B;
+051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A
+051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D;
+051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C
+051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F;
+051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E
+0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521;
+0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520
+0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523;
+0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;;
+05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;;
+05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;;
+0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;;
+0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;;
+0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;;
+0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;;
+0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;;
+0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;;
+0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;
+060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;
+060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;
+0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;
+0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;
+0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;
+0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;;
+0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;;
+0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;;
+0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;;
+0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;;
+061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;
+0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;
+0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;
+0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;;
+065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
+065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
+065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;;
+065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
+066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;
+072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;
+072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;
+074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;
+074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;
+0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;;
+0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;;
+075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;;
+075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;;
+0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;;
+076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
+076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;;
+076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
+0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
+0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
+077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;;
+077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
+07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
+07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
+07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
+07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;
+07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;
+07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;
+07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;
+07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;
+07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;
+07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
+07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;;
+07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;;
+07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;;
+07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;;
+07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;;
+07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;;
+07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;;
+07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;;
+07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;;
+07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;;
+07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;;
+07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;;
+07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;;
+07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;;
+07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;;
+07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;;
+07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;;
+07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;;
+07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;;
+07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;;
+07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;;
+07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;;
+07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;;
+07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;;
+07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;;
+07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;;
+07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;;
+07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;;
+07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;;
+07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;;
+07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;;
+07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;;
+07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;;
+07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;;
+07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;;
+07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;;
+07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;;
+07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;;
+07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;;
+07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;;
+07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;;
+07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
+07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
+07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;;
+07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;;
+07F8;NKO COMMA;Po;0;ON;;;;;N;;;;;
+07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;;
+0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;;
+097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;;
+097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;;
+097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;;
+097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;;
+0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;;
+0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;;
+0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;;
+0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;;
+0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;;
+0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;;
+0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;
+0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;;
+0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
+0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
+0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
+0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
+0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
+0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
+0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;;
+0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;;
+0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
+0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
+0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
+0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;;
+0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;;
+0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;;
+0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;;
+0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;;
+0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;;
+0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;;
+0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;dena deka;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;;
+0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;;
+0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;nyi tsek;;;
+0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;da nying yik go dun ma;;;
+0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;da nying yik go kab ma;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;;
+1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;;
+1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;;
+103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
+103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
+103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
+103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;;
+103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;;
+105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;;
+105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;;
+105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;;
+105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;;
+105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;;
+1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
+1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;;
+1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;;
+1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;;
+1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;;
+1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;;
+1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;;
+1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;;
+1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;;
+1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;;
+106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;;
+106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;;
+106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;;
+106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;;
+106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;;
+106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;;
+1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;;
+1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;;
+1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;;
+1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;;
+1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;;
+1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;;
+1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;;
+1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;;
+1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;;
+1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;;
+107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;;
+107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;;
+107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;;
+107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;;
+107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;;
+107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;;
+1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;;
+1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;;
+1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
+1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;;
+1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;;
+1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;;
+1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;;
+1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;;
+1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;;
+1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;;
+108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;;
+108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;;
+108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;;
+108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;;
+108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;;
+108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;;
+1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;;
+109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
+10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
+10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
+10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
+1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;;
+1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;;
+1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;;
+1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;;
+1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;;
+1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;;
+1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;;
+1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;;
+1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;;
+1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;;
+138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;;
+138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;;
+138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;;
+138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;;
+138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;;
+138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;;
+1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;;
+1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;;
+1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;;
+1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;;
+1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;;
+1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;;
+1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;;
+1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;;
+1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;;
+1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
+1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
+1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
+1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
+1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
+1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
+1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
+1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
+1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
+1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
+1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
+170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
+170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
+170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
+170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
+1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
+1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
+1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
+1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
+1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
+1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
+1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
+1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
+1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
+1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
+1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
+1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
+172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
+172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
+172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
+172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
+172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
+172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
+1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
+1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
+1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
+1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
+1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
+1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
+1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
+1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
+1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
+1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
+1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
+1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
+1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
+174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
+174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
+174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
+174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
+174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
+174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
+1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
+1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
+1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
+1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
+1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
+1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
+1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
+1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
+1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
+1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
+1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
+176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
+176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
+176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
+176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
+176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
+1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
+1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;;
+17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
+17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;
+17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;
+17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;
+17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;
+17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;
+17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;
+17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;
+17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;
+17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;
+17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;;
+1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;
+1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;
+1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;
+1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;
+1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;
+1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;
+1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;
+1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;
+1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;
+1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;
+190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;
+190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;
+190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;
+190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;
+190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;
+190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;
+1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;
+1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;
+1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;
+1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;
+1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;
+1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;
+1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;
+1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;
+1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;
+1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;
+191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;
+191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;
+191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;
+1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;
+1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
+192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
+192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;;
+1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;
+1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;
+1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;
+1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;
+1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;
+1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;
+1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;
+1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;
+1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;
+193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;
+193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;
+1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;
+1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;
+1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;
+1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;
+1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;
+1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;
+1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;
+1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;
+1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;
+1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;
+1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;
+195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;
+195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;
+195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;
+195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;
+195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;
+195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;
+1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;
+1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;
+1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;
+1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;
+1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;
+1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;
+1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;
+1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;
+196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;
+196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;
+196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;
+196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;
+1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;
+1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;
+1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;
+1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;
+1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;
+1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;;
+1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;;
+1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
+1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;;
+1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;;
+1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;;
+1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;;
+1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;;
+1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;;
+1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
+198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
+198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;;
+198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;;
+198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;;
+198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
+198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
+1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;;
+1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;;
+1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;;
+1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;;
+1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
+1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
+1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;;
+1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;;
+1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
+1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;;
+199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
+199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;;
+199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;;
+199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;;
+199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;;
+199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;;
+19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
+19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;;
+19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;;
+19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;;
+19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;;
+19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;;
+19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;;
+19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;;
+19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;;
+19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;;
+19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;;
+19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;;
+19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;;
+19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;;
+19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;;
+19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;;
+19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
+19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;;
+19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;;
+19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;;
+19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;;
+19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;;
+19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;;
+19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;;
+19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;;
+19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;;
+19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;;
+19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;;
+19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;;
+19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;;
+19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;
+19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;
+19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;
+19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;
+19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;
+19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;
+19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;
+19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;
+19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;
+19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;
+19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;
+19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;
+19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;
+19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;
+19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;
+19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;
+19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;
+19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;
+19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;
+19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;
+19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;
+19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;
+19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;
+19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;
+19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;
+19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;
+19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;
+19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;
+19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;
+19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;
+19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;
+19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;
+1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;;
+1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;;
+1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;;
+1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;;
+1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;;
+1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;;
+1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
+1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;
+1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;
+1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;
+1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;ardhacandra;;;
+1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;candrabindu;;;
+1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;anusvara;;;
+1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;repha;;;
+1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;visarga;;;
+1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;a;;;
+1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;aa;;;
+1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;i;;;
+1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;ii;;;
+1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;u;;;
+1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;uu;;;
+1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;vocalic r;;;
+1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;vocalic rr;;;
+1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;vocalic l;;;
+1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;vocalic ll;;;
+1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;e;;;
+1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;ai;;;
+1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;o;;;
+1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;au;;;
+1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;kha;;;
+1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;gha;;;
+1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;cha;;;
+1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;jha;;;
+1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;tta;;;
+1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ttha;;;
+1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;dda;;;
+1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ddha;;;
+1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;nna;;;
+1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;tha;;;
+1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;dha;;;
+1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;pha;;;
+1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;bha;;;
+1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;;
+1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;sha;;;
+1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;ssa;;;
+1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;nukta;;;
+1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;aa;;;
+1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;i;;;
+1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;ii;;;
+1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;u;;;
+1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;uu;;;
+1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;vocalic r;;;
+1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;vocalic rr;;;
+1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;vocalic l;;;
+1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;vocalic ll;;;
+1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;e;;;
+1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;ai;;;
+1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;o;;;
+1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;au;;;
+1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;ae;;;
+1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;oe;;;
+1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;virama;;;
+1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;;
+1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;;
+1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;;
+1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;;
+1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;
+1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
+1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
+1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1B5A;BALINESE PANTI;Po;0;L;;;;;N;;section;;;
+1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;honorific section;;;
+1B5C;BALINESE WINDU;Po;0;L;;;;;N;;punctuation ring;;;
+1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;colon;;;
+1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;danda;;;
+1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;double danda;;;
+1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;line-breaking hyphen;;;
+1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;;
+1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;;
+1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;;
+1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;;
+1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;;
+1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;;
+1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;;
+1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;;
+1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;;
+1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;;
+1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;;
+1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;;
+1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;;
+1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;;
+1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;;
+1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;;
+1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;;
+1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;;
+1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;;
+1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;;
+1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;;
+1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;;
+1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;
+1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;
+1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
+1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
+1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
+1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
+1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;;
+1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;;
+1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;;
+1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;;
+1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;;
+1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;;
+1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;;
+1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;;
+1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;;
+1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;;
+1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;;
+1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;;
+1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;;
+1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;;
+1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;;
+1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;;
+1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;;
+1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;;
+1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;;
+1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;;
+1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;;
+1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;;
+1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;;
+1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;;
+1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;;
+1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;;
+1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;;
+1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;;
+1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;;
+1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;;
+1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;;
+1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;;
+1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;;
+1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;;
+1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;;
+1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;;
+1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;;
+1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;;
+1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;;
+1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;;
+1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;;
+1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;;
+1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;;
+1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;;
+1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;;
+1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;;
+1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;;
+1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;;
+1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;;
+1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;;
+1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;;
+1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;;
+1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;;
+1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;;
+1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;;
+1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;;
+1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;;
+1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;;
+1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
+1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
+1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;;
+1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;;
+1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;;
+1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
+1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;;
+1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
+1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;;
+1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;;
+1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;;
+1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;;
+1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;;
+1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;;
+1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;;
+1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;;
+1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;;
+1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;;
+1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;;
+1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;;
+1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;;
+1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;;
+1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;;
+1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;;
+1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;;
+1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;;
+1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;;
+1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;;
+1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;;
+1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;;
+1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;;
+1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;;
+1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;;
+1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;;
+1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;;
+1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;;
+1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;;
+1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;;
+1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;;
+1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;;
+1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;;
+1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;;
+1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;;
+1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;;
+1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;;
+1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;;
+1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;;
+1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;;
+1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;;
+1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;;
+1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
+1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
+1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;;
+1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;;
+1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;;
+1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;;
+1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;;
+1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
+1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
+1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
+1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;
+1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;
+1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;
+1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;
+1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;
+1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;
+1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;
+1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;
+1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;
+1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;
+1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;
+1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;
+1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;
+1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;
+1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;
+1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;
+1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;
+1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;
+1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;
+1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;
+1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;
+1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;
+1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;
+1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;
+1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;
+1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;
+1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;
+1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;
+1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;
+1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;
+1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;
+1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;
+1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;
+1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;
+1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;
+1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;
+1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;
+1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;
+1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;
+1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
+1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
+1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
+1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
+1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
+1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
+1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
+1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
+1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
+1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
+1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
+1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
+1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
+1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
+1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
+1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
+1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
+1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
+1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
+1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
+1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
+1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
+1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
+1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
+1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
+1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
+1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
+1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
+1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
+1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
+1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
+1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
+1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
+1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
+1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
+1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
+1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
+1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
+1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
+1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
+1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
+1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
+1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
+1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
+1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
+1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
+1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
+1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
+1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
+1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
+1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
+1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
+1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
+1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
+1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
+1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
+1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
+1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
+1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
+1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
+1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
+1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;;
+1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;
+1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;;
+1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
+1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D
+1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;;
+1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63
+1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
+1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
+1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
+1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
+1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
+1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
+1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
+1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
+1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
+1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
+1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
+1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
+1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
+1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
+1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
+1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
+1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
+1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
+1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
+1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
+1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
+1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
+1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
+1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
+1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
+1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
+1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
+1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
+1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
+1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
+1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
+1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
+1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
+1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
+1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
+1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
+1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;;
+1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;;
+1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;;
+1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;;
+1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;;
+1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;;
+1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;;
+1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;;
+1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;;
+1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;;
+1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;;
+1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;;
+1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;;
+1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;;
+1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;;
+1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;;
+1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;;
+1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;;
+1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;;
+1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;;
+1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;;
+1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;;
+1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;;
+1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;;
+1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;;
+1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;;
+1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;;
+1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;;
+1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;;
+1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;;
+1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;;
+1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;;
+1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;;
+1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF;
+1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;;
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB;
+1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA
+1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;
+1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC
+1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF;
+1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
+204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
+2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
+2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
+2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2053;SWUNG DASH;Po;0;ON;;;;;N;;;;;
+2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;
+2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;;
+2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
+2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;;
+205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;;
+205D;TRICOLON;Po;0;ON;;;;;N;;;;;
+205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;;
+205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
+2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
+2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
+2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
+2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;
+2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;
+2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;
+2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;
+2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
+20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
+20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;;
+20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;;
+20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;;
+20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
+20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
+20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
+20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
+20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
+20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
+213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
+2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
+2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
+2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
+214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
+214C;PER SIGN;So;0;ON;;;;;N;;;;;
+214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;;
+214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132
+214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184;
+2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183
+2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;;
+2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;;
+2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;;
+2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;;
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
+22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
+23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
+23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
+23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
+23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
+23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
+23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
+23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
+23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
+23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
+23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
+23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;
+23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;
+23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;;
+23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;;
+23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;;
+23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;;
+23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;;
+23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;;
+23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;;
+23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;;
+23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;;
+23DA;EARTH GROUND;So;0;ON;;;;;N;;;;;
+23DB;FUSE;So;0;ON;;;;;N;;;;;
+23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;;
+23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;;
+23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;;
+23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;;
+23E5;FLATNESS;So;0;ON;;;;;N;;;;;
+23E6;AC CURRENT;So;0;ON;;;;;N;;;;;
+23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;;
+24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
+24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
+24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
+24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
+24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
+24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
+24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
+24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
+24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
+24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
+24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
+2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
+2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
+259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;
+2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;
+2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2618;SHAMROCK;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;;
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;;
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;;
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;;
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;;
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;;
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;;
+267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
+267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;;
+267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;;
+2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
+2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
+2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
+2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
+2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
+2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
+2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
+2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
+2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
+2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
+268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;
+268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;
+268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;
+268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;
+268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;
+268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;
+2690;WHITE FLAG;So;0;ON;;;;;N;;;;;
+2691;BLACK FLAG;So;0;ON;;;;;N;;;;;
+2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;;
+2693;ANCHOR;So;0;ON;;;;;N;;;;;
+2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;;
+2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;;
+2696;SCALES;So;0;ON;;;;;N;;;;;
+2697;ALEMBIC;So;0;ON;;;;;N;;;;;
+2698;FLOWER;So;0;ON;;;;;N;;;;;
+2699;GEAR;So;0;ON;;;;;N;;;;;
+269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;;
+269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;;
+269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;;
+269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
+26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
+26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;;
+26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;;
+26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;;
+26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;;
+26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;;
+26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;;
+26B0;COFFIN;So;0;ON;;;;;N;;;;;
+26B1;FUNERAL URN;So;0;ON;;;;;N;;;;;
+26B2;NEUTER;So;0;ON;;;;;N;;;;;
+26B3;CERES;So;0;ON;;;;;N;;;;;
+26B4;PALLAS;So;0;ON;;;;;N;;;;;
+26B5;JUNO;So;0;ON;;;;;N;;;;;
+26B6;VESTA;So;0;ON;;;;;N;;;;;
+26B7;CHIRON;So;0;ON;;;;;N;;;;;
+26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;;
+26B9;SEXTILE;So;0;ON;;;;;N;;;;;
+26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;;
+26BB;QUINCUNX;So;0;ON;;;;;N;;;;;
+26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;;
+26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
+26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;;
+26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
+26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;;
+27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;;
+27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;;
+27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;;
+27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;;
+27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;;
+27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;;
+27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;;
+27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
+27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
+27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
+27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
+27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
+27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
+27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
+27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
+27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
+27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;;
+2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
+2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
+2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
+2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
+2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
+293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
+293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
+2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
+297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
+2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
+2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
+2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
+2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
+2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
+2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
+2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
+2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
+298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
+298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
+298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
+298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
+298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
+298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
+2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
+2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
+2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
+2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
+299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
+299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
+299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
+299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
+299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
+29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
+29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
+29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
+29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
+29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
+29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
+29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
+29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
+29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
+29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
+29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
+29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
+29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
+29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
+29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
+29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
+29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
+29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
+29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
+29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
+29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
+29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
+29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
+29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
+29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
+29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+29FE;TINY;Sm;0;ON;;;;;N;;;;;
+29FF;MINY;Sm;0;ON;;;;;N;;;;;
+2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
+2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
+2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
+2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
+2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
+2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
+2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
+2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
+2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
+2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
+2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
+2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
+2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
+2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
+2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
+2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
+2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
+2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
+2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
+2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
+2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
+2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
+2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
+2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
+2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
+2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
+2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
+2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
+2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
+2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
+2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
+2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
+2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
+2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
+2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
+2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;;
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;;
+2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
+2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
+2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
+2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
+2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
+2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
+2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
+2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
+2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
+2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
+2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
+2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
+2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
+2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
+2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
+2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;;
+2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;;
+2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;;
+2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;;
+2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;;
+2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;;
+2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;;
+2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;;
+2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
+2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
+2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
+2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
+2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;;
+2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;;
+2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;;
+2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;;
+2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;;
+2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
+2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
+2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;;
+2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;;
+2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;;
+2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
+2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
+2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
+2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
+2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
+2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33;
+2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34;
+2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35;
+2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36;
+2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37;
+2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38;
+2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39;
+2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A;
+2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B;
+2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C;
+2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D;
+2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E;
+2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F;
+2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40;
+2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41;
+2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42;
+2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43;
+2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44;
+2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45;
+2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46;
+2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47;
+2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48;
+2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49;
+2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A;
+2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B;
+2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C;
+2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D;
+2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E;
+2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F;
+2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50;
+2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51;
+2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52;
+2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53;
+2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54;
+2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55;
+2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56;
+2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57;
+2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58;
+2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59;
+2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A;
+2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B;
+2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
+2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
+2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
+2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
+2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
+2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
+2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03
+2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04
+2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05
+2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06
+2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07
+2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08
+2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09
+2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A
+2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B
+2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C
+2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D
+2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E
+2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F
+2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10
+2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11
+2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12
+2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13
+2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14
+2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15
+2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16
+2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17
+2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18
+2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19
+2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A
+2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B
+2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C
+2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D
+2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E
+2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F
+2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20
+2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21
+2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22
+2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23
+2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24
+2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25
+2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26
+2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27
+2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28
+2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29
+2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A
+2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B
+2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
+2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
+2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
+2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;
+2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60
+2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;
+2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D;
+2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D;
+2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A
+2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E
+2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68;
+2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67
+2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A;
+2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69
+2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C;
+2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B
+2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251;
+2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271;
+2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250;
+2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;;
+2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73;
+2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72
+2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;;
+2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76;
+2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75
+2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;;
+2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;;
+2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;;
+2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;;
+2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;;
+2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L;<sub> 006A;;;;N;;;;;
+2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;
+2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81;
+2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80
+2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83;
+2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82
+2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85;
+2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84
+2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87;
+2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86
+2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89;
+2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88
+2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B;
+2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A
+2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D;
+2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C
+2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F;
+2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E
+2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91;
+2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90
+2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93;
+2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92
+2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95;
+2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94
+2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97;
+2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96
+2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99;
+2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98
+2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B;
+2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A
+2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D;
+2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C
+2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F;
+2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E
+2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1;
+2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0
+2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3;
+2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2
+2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5;
+2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4
+2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7;
+2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6
+2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9;
+2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8
+2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB;
+2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA
+2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD;
+2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC
+2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF;
+2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE
+2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1;
+2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0
+2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3;
+2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2
+2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5;
+2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4
+2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7;
+2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6
+2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9;
+2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8
+2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB;
+2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA
+2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD;
+2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC
+2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF;
+2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE
+2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1;
+2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0
+2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3;
+2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2
+2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5;
+2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4
+2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7;
+2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6
+2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9;
+2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8
+2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB;
+2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA
+2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD;
+2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC
+2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF;
+2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE
+2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1;
+2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0
+2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3;
+2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2
+2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5;
+2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4
+2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7;
+2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6
+2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9;
+2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8
+2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB;
+2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA
+2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD;
+2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC
+2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF;
+2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE
+2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1;
+2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0
+2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3;
+2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2
+2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;;
+2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;;
+2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;;
+2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;;
+2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;;
+2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;;
+2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;;
+2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
+2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;;
+2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;;
+2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;;
+2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0
+2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1
+2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2
+2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3
+2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4
+2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5
+2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6
+2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7
+2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8
+2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9
+2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA
+2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB
+2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC
+2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD
+2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE
+2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF
+2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0
+2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1
+2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2
+2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3
+2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4
+2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5
+2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6
+2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7
+2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8
+2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9
+2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA
+2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB
+2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC
+2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD
+2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE
+2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF
+2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0
+2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1
+2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2
+2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3
+2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4
+2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5
+2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;;
+2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;;
+2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;;
+2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;;
+2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;;
+2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;;
+2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;;
+2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;;
+2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;;
+2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;;
+2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;;
+2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;;
+2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;;
+2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;;
+2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;;
+2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;;
+2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;;
+2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;;
+2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;;
+2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;;
+2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;;
+2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;;
+2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;;
+2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;;
+2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;;
+2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;;
+2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;;
+2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;;
+2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;;
+2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;;
+2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;;
+2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;;
+2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;;
+2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;;
+2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;;
+2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;;
+2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;;
+2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;;
+2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;;
+2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;;
+2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;;
+2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;;
+2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;;
+2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;;
+2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;;
+2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;;
+2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;;
+2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;;
+2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;;
+2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;;
+2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;;
+2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;;
+2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;;
+2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;
+2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;tamatart;;;
+2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;;
+2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;;
+2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;;
+2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;;
+2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;;
+2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;;
+2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;;
+2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;;
+2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;;
+2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;;
+2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;;
+2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;;
+2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;;
+2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;;
+2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;;
+2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;;
+2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;;
+2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;;
+2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;;
+2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;
+2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;
+2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;;
+2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;
+2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;;
+2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;;
+2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;;
+2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;;
+2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;;
+2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;;
+2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;;
+2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;;
+2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;;
+2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;;
+2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;;
+2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;;
+2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;;
+2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;;
+2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;;
+2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;;
+2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;;
+2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;;
+2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;;
+2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;;
+2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;;
+2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;;
+2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;;
+2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;;
+2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;;
+2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;;
+2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;;
+2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;;
+2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;;
+2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;;
+2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;;
+2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;;
+2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;;
+2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;;
+2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;;
+2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;;
+2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;;
+2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;;
+2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;;
+2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;;
+2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;;
+2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;;
+2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;;
+2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;;
+2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;;
+2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;;
+2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;;
+2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;;
+2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;;
+2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;;
+2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;;
+2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;;
+2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;;
+2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;;
+2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;;
+2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;;
+2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;;
+2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;;
+2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;;
+2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;;
+2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;;
+2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;;
+2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;;
+2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;;
+2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;
+2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;;
+2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
+2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;;
+2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;;
+2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;;
+2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;;
+2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;;
+2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;;
+2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;;
+2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;;
+2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;;
+2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
+2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;;
+2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
+2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
+2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
+2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
+2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;;
+2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;;
+2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;;
+2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;;
+2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;;
+2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;;
+2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;;
+2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;;
+2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
+2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;;
+2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;;
+2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;;
+2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;;
+2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;;
+2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;;
+2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;;
+2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;;
+2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;;
+2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;;
+2E30;RING POINT;Po;0;ON;;;;;N;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+303C;MASU MARK;Lo;0;L;;;;;N;;;;;
+303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
+30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+31C0;CJK STROKE T;So;0;ON;;;;;N;;;;;
+31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;
+31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;
+31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;;
+31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;;
+31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;;
+31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;;
+31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;;
+31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;;
+31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;;
+31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;;
+31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;;
+31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;;
+31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;;
+31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;;
+31CF;CJK STROKE N;So;0;ON;;;;;N;;;;;
+31D0;CJK STROKE H;So;0;ON;;;;;N;;;;;
+31D1;CJK STROKE S;So;0;ON;;;;;N;;;;;
+31D2;CJK STROKE P;So;0;ON;;;;;N;;;;;
+31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;;
+31D4;CJK STROKE D;So;0;ON;;;;;N;;;;;
+31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;;
+31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;;
+31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;;
+31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;;
+31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;;
+31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;;
+31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;;
+31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;;
+31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;;
+31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;;
+31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;;
+31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;;
+31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
+31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
+31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
+31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
+31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
+31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
+31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
+31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
+31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
+31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
+31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
+31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
+31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
+31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
+31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
+31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
+31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
+31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
+31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
+321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
+327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
+327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
+32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
+32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
+32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
+3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
+3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
+337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
+33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
+4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
+4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
+4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;
+4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;
+4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;
+4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;
+4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;
+4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;
+4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;
+4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;
+4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;
+4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;
+4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;
+4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;
+4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;
+4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;
+4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;
+4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;
+4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;
+4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;
+4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;
+4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;
+4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;
+4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;
+4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;
+4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;
+4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;
+4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;
+4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;
+4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;
+4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;
+4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;
+4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;
+4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;
+4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;
+4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;
+4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;
+4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;
+4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;
+4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;
+4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;
+4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;
+4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;
+4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;
+4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;
+4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;
+4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;
+4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;
+4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;
+4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;
+4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;
+4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;
+4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;
+4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;
+4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;
+4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
+4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FC3;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
+A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;;
+A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;;
+A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;;
+A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;;
+A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;;
+A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;;
+A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;;
+A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;;
+A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;;
+A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;;
+A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;;
+A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;;
+A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;;
+A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;;
+A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;;
+A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;;
+A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;;
+A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;;
+A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;;
+A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;;
+A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;;
+A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;;
+A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;;
+A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;;
+A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;;
+A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;;
+A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;;
+A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;;
+A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;;
+A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;;
+A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;;
+A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;;
+A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;;
+A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;;
+A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;;
+A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;;
+A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;;
+A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;;
+A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;;
+A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;;
+A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;;
+A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;;
+A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;;
+A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;;
+A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;;
+A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;;
+A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;;
+A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;;
+A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;;
+A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;;
+A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;;
+A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;;
+A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;;
+A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;;
+A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;;
+A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;;
+A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;;
+A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;;
+A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;;
+A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;;
+A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;;
+A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;;
+A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;;
+A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;;
+A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;;
+A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;;
+A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;;
+A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;;
+A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;;
+A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;;
+A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;;
+A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;;
+A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;;
+A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;;
+A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;;
+A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;;
+A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;;
+A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;;
+A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;;
+A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;;
+A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;;
+A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;;
+A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;;
+A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;;
+A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;;
+A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;;
+A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;;
+A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;;
+A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;;
+A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;;
+A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;;
+A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;;
+A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;;
+A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;;
+A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;;
+A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;;
+A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;;
+A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;;
+A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;;
+A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;;
+A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;;
+A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;;
+A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;;
+A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;;
+A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;;
+A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;;
+A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;;
+A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;;
+A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;;
+A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;;
+A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;;
+A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;;
+A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;;
+A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;;
+A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;;
+A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;;
+A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;;
+A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;;
+A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;
+A60D;VAI COMMA;Po;0;ON;;;;;N;;;;;
+A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;;
+A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;;
+A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;;
+A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;;
+A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;;
+A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;;
+A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;;
+A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;;
+A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;;
+A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;;
+A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;;
+A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;;
+A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;;
+A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;;
+A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;;
+A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;;
+A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;;
+A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;;
+A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;;
+A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;;
+A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641;
+A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640
+A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643;
+A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642
+A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645;
+A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644
+A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647;
+A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646
+A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649;
+A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648
+A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B;
+A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A
+A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D;
+A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C
+A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F;
+A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E
+A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651;
+A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650
+A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653;
+A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652
+A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655;
+A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654
+A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657;
+A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656
+A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659;
+A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658
+A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B;
+A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A
+A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D;
+A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C
+A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F;
+A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E
+A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663;
+A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662
+A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665;
+A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664
+A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667;
+A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666
+A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669;
+A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668
+A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B;
+A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A
+A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D;
+A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C
+A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;;
+A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;;
+A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;;
+A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;;
+A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;;
+A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;;
+A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;;
+A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681;
+A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680
+A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683;
+A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682
+A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685;
+A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684
+A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687;
+A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686
+A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689;
+A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688
+A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B;
+A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A
+A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D;
+A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C
+A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F;
+A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E
+A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691;
+A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690
+A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693;
+A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692
+A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695;
+A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694
+A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697;
+A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696
+A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
+A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
+A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
+A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
+A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
+A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
+A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
+A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
+A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;
+A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;
+A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;
+A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;
+A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;
+A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;
+A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;
+A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;
+A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723;
+A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722
+A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725;
+A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724
+A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727;
+A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726
+A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729;
+A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728
+A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B;
+A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A
+A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D;
+A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C
+A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F;
+A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E
+A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;;
+A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;;
+A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733;
+A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732
+A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735;
+A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734
+A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737;
+A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736
+A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739;
+A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738
+A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B;
+A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A
+A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D;
+A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C
+A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F;
+A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E
+A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741;
+A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740
+A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743;
+A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742
+A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745;
+A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744
+A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747;
+A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746
+A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749;
+A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748
+A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B;
+A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A
+A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D;
+A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C
+A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F;
+A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E
+A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751;
+A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750
+A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753;
+A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752
+A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755;
+A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754
+A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757;
+A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756
+A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759;
+A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758
+A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B;
+A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A
+A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D;
+A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C
+A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F;
+A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E
+A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761;
+A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760
+A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763;
+A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762
+A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765;
+A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764
+A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767;
+A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766
+A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769;
+A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768
+A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B;
+A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A
+A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D;
+A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C
+A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F;
+A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E
+A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;
+A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;;
+A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;;
+A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;;
+A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;;
+A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;;
+A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;;
+A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;;
+A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;;
+A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A;
+A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779
+A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C;
+A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B
+A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79;
+A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F;
+A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E
+A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781;
+A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780
+A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783;
+A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782
+A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785;
+A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784
+A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787;
+A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786
+A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;
+A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;
+A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;
+A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C;
+A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B
+A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;;
+A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;;
+A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;;
+A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;;
+A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;;
+A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;
+A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;
+A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;;
+A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;;
+A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;;
+A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;;
+A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;;
+A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;;
+A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;;
+A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;;
+A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;;
+A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;;
+A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;;
+A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;;
+A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;;
+A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;;
+A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;;
+A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;;
+A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;;
+A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;;
+A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;;
+A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;;
+A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;;
+A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;;
+A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;;
+A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;;
+A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;;
+A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;;
+A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;;
+A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;;
+A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;;
+A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;;
+A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;;
+A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;;
+A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
+A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;;
+A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;
+A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;
+A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;
+A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;;
+A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;;
+A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;;
+A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;;
+A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;;
+A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;;
+A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;;
+A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;;
+A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;;
+A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;;
+A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;;
+A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;;
+A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;;
+A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;;
+A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;;
+A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;;
+A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;;
+A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;;
+A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;;
+A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;;
+A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;;
+A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;;
+A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;;
+A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;;
+A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;;
+A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;;
+A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;;
+A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;;
+A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;;
+A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;;
+A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;;
+A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;;
+A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;;
+A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;;
+A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;;
+A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;;
+A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;;
+A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;;
+A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;;
+A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;;
+A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;;
+A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;;
+A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;;
+A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;;
+A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;;
+A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;;
+A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;;
+A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;;
+A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;;
+A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;;
+A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;;
+A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;;
+A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;;
+A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;;
+A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;;
+A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;;
+A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;;
+A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;;
+A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;;
+A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;;
+A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;;
+A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;;
+A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;;
+A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;;
+A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;;
+A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;;
+A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;;
+A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;;
+A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;;
+A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;;
+A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;;
+A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;;
+A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;;
+A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;;
+A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;;
+A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;;
+A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;;
+A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;;
+A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;;
+A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;;
+A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;;
+A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;;
+A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;;
+A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;;
+A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;;
+A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;;
+A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;;
+A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;;
+A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;;
+A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;;
+A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;;
+A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;;
+A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;;
+A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;;
+A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;;
+A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;;
+A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;;
+A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;;
+A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;;
+A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;;
+A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;;
+A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;;
+A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;;
+A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;;
+A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;;
+A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;;
+A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;;
+A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;;
+A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;;
+A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;;
+A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;;
+A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;;
+A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;;
+A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;;
+A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;;
+A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;;
+A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;;
+A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;;
+A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;;
+A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;;
+A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;;
+A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;;
+A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;;
+A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;;
+A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;;
+A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;;
+A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;;
+A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;;
+A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;;
+A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;;
+A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;;
+A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;;
+A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;;
+A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;;
+A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;;
+A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;;
+A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;;
+A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;;
+A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;;
+A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;;
+A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;;
+A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;;
+A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;;
+A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;;
+A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;;
+A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;;
+A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;;
+A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;;
+A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;;
+A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;;
+A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;;
+A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;;
+A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;;
+A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;;
+A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;;
+A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;;
+A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;;
+A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;;
+A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;;
+A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;;
+A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;;
+A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;;
+A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;;
+A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
+A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;;
+A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;
+A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
+A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
+A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;;
+A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;;
+A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;;
+AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;;
+AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;;
+AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;;
+AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;;
+AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;;
+AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;;
+AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;;
+AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;;
+AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;;
+AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;;
+AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;;
+AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;;
+AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;;
+AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;;
+AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;;
+AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;;
+AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;;
+AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;;
+AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;;
+AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;;
+AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;;
+AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;;
+AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;;
+AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;;
+AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;;
+AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;;
+AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;;
+AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;;
+AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;;
+AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;;
+AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;;
+AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;;
+AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;
+AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
+AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;;
+AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;;
+AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;;
+AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;;
+AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;;
+AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;;
+AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;;
+AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;;
+AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;;
+AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;;
+AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;;
+AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;;
+AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;;
+AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;;
+AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;;
+AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;;
+AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;;
+AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
+AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;;
+AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
+FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
+FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
+FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
+FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
+FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
+FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
+FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
+FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
+FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
+FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
+FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
+FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
+FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
+FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
+FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
+FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
+FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
+FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
+FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
+FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
+FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
+FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
+FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
+FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
+FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
+FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
+FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
+FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
+FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
+FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
+FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
+FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
+FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
+FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
+FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
+FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
+FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
+FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
+FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
+FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
+FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
+FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
+FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
+FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
+FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
+FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
+FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
+FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
+FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
+FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
+FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
+FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
+FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
+FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
+FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
+FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
+FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
+FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
+FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;;
+FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;;
+FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;;
+FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;;
+FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;;
+FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;;
+FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;;
+FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;;
+FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;;
+FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;;
+FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;;
+FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;;
+FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;;
+FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;;
+FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;;
+FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;;
+FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;;
+FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;;
+FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;;
+FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;;
+FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;;
+FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;;
+FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;;
+FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;;
+FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;;
+FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;;
+FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;;
+FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;;
+FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;;
+FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;;
+FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;;
+FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;;
+FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;;
+FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;;
+FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;;
+FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;;
+FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;;
+FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;;
+FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;;
+FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;;
+FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;;
+FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;;
+FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;;
+FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;;
+FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;;
+FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;;
+FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;;
+FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;;
+FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;;
+FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;;
+FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;;
+FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;;
+FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;;
+FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;;
+FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;;
+FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;;
+FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;;
+FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;;
+FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;;
+FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;;
+FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;;
+FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;;
+FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;;
+FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;;
+FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;;
+FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;;
+FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;;
+FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;;
+FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;;
+FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;;
+FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;;
+FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;;
+FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;;
+FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;;
+FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;;
+FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;;
+FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;;
+FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;;
+FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;;
+FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;;
+FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;;
+FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;;
+FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;;
+FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;;
+FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;;
+FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;;
+FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;;
+FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;;
+FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;;
+FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;;
+FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;;
+FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;;
+FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;;
+FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;;
+FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;;
+FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;;
+FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;;
+FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;;
+FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;;
+FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;;
+FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;;
+FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;;
+FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;;
+FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;;
+FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;;
+FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
+FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
+FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
+FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
+FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
+FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
+FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
+FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
+FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
+FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
+FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
+FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
+FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
+FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
+FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
+FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
+FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
+FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
+FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;;
+FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;
+FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;
+FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;
+FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;
+FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;
+FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;
+FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;
+FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;
+FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;
+FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;;
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;
+10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;
+10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;
+10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;
+10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;
+10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;
+10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;
+10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;
+10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;
+10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;
+1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;
+1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;
+1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;
+1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;
+1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;
+10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;
+10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;
+10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;
+10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;
+10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;
+10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;
+10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;
+10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;
+10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;
+10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;
+1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;
+1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;
+1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;
+1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;
+1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;
+1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;
+10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;
+10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;
+10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;
+10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;
+10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;
+10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;
+10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;
+10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;
+10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;
+1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;
+1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;
+1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;
+1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;
+1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;
+1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;
+10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;
+10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;
+10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;
+10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;
+10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;
+10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;
+10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;
+10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;
+10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;
+10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;
+1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;
+1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;
+1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;
+1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;
+10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;
+10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;
+10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;
+10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;
+10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;
+10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;
+10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;
+10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;
+10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;
+10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;
+1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;
+1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;
+1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;
+1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;
+10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;
+10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;
+10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;
+10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;
+10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;
+10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;
+10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;
+10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;
+10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;
+10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;
+1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;
+1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;
+1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;
+1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;
+10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;
+10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;
+10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;
+10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;
+10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;
+10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;
+10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;
+10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;
+10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;
+10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;
+1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;
+1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;
+1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;
+1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;
+1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;
+1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;
+10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;
+10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;
+10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;
+10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;
+10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;
+10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;
+10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;
+10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;
+10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;
+10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;
+1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;
+1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;
+1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;
+1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;
+1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;
+1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;
+100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;
+100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;
+100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;
+100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;
+100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;
+100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;
+100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;
+100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;
+100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;
+100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;
+100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;
+100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;
+100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;
+100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;
+100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;
+100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;
+100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;
+100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;
+100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;
+100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;
+100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;
+100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;
+100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;
+100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;
+100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;
+100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;
+100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;
+100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;
+100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;
+100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;
+100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;
+100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;
+100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;
+100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;
+100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;
+100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;
+100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;
+100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;
+100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;
+100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;
+100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;
+100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;;
+100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
+100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;;
+100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;
+100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;
+100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;
+100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;
+100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;
+100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;
+100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;
+100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;
+100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;
+100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;
+100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;
+100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;
+100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;
+100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;
+100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;
+100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;
+100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;
+100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;
+100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;
+100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;
+100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;
+100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;
+100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;
+100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;
+100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;
+100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;
+100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;
+100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;
+100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;
+100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;
+100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;
+100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;
+100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;
+100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;
+100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;
+100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;
+100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;
+100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;
+100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;
+100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;
+100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;
+100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;
+100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;
+100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;
+100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;
+100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;
+100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;
+10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;
+10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;
+10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;;
+10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;
+10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;
+10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;
+1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;
+1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;
+1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;
+1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;
+1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;
+1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;
+10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;
+10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;
+10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;
+10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;
+1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;
+1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;
+1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;
+1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;
+1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;
+10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;
+10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;
+10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;
+10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;
+10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;
+10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;
+10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;
+10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;
+10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;
+1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;
+1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;
+1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;
+1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;
+1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;
+10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;
+10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;
+10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;
+10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;
+10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;
+10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;
+1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;;
+10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;;
+10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;;
+10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;;
+10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;;
+10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
+10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;;
+10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;;
+10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;;
+1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;;
+1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;;
+1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;;
+1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;;
+1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;;
+1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;;
+10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;;
+10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;;
+10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;;
+10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;;
+10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;;
+10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;;
+10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;;
+10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;;
+10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;;
+10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;;
+1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;;
+1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;;
+1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;;
+1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
+1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
+1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;;
+10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;;
+10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;;
+10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;;
+10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;;
+1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;;
+1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;;
+10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
+10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;;
+10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;;
+10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;;
+10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;;
+10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;;
+10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;;
+10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;;
+1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;;
+1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;;
+1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;;
+1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;;
+1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;;
+1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;;
+10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;;
+10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;;
+10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;;
+10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;;
+10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;;
+10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;;
+10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;;
+10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;;
+10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;;
+10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;;
+1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;
+10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;;
+10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;;
+10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;;
+10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;;
+10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;;
+10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;;
+10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;;
+10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;;
+10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;;
+10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;;
+1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;;
+1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;;
+101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;;
+101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;;
+101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;;
+101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;;
+101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;;
+101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;;
+101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;;
+101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;;
+101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;;
+101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;;
+101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;;
+101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;;
+101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;;
+101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;;
+101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;;
+101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;;
+101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;;
+101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;;
+101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;;
+101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;;
+101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;;
+101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;;
+101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;;
+101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;;
+101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;;
+101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;;
+101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;;
+101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;;
+101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;;
+101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;;
+101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;;
+101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;;
+101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;;
+101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;;
+101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;;
+101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;;
+101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;;
+101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;;
+101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;;
+101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;;
+101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;;
+101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;;
+101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;;
+101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;;
+101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;;
+101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;;
+10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;;
+10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;;
+10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;;
+10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;;
+10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;;
+10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;;
+10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;;
+10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;;
+10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;;
+10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;;
+1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;;
+1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;;
+1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;;
+1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;;
+1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;;
+1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;;
+10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;;
+10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;;
+10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;;
+10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;;
+10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;;
+10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;;
+10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;;
+10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;;
+10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;;
+10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;;
+1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;;
+1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;;
+1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;;
+102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;;
+102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;;
+102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;;
+102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;;
+102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;;
+102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;;
+102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;;
+102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;;
+102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;;
+102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;;
+102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;;
+102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;;
+102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;;
+102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;;
+102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;;
+102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;;
+102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;;
+102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;;
+102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;;
+102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;;
+102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;;
+102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;;
+102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;;
+102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;;
+102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;;
+102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;;
+102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;;
+102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;;
+102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;;
+102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;;
+102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;;
+102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;;
+102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;;
+102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;;
+102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;;
+102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;;
+102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;;
+102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;;
+102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;;
+102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;;
+102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;;
+102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;;
+102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;;
+102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;;
+102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;;
+102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;;
+102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;;
+102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;;
+102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;;
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
+10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;;
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;;
+10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;
+10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;
+10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;
+10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;
+10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;
+10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;
+10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;
+10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;
+10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;
+10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;
+1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;
+1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;
+1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;
+1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;
+1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;
+1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;
+10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;
+10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;
+10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;
+10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;
+10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;
+10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;
+10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;
+10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;
+10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;
+10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;
+1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;
+1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;
+1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;
+1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;
+1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;
+103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;;
+103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;;
+103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;;
+103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;;
+103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;;
+103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;;
+103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;;
+103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;;
+103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;;
+103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;;
+103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;;
+103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;;
+103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;;
+103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;;
+103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;;
+103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;;
+103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;;
+103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;;
+103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;;
+103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;;
+103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;;
+103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;;
+103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;;
+103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;;
+103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;;
+103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;;
+103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;;
+103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;;
+103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;;
+103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;;
+103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;;
+103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;;
+103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;;
+103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;;
+103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;;
+103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;;
+103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;;
+103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;;
+103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;;
+103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;;
+103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;;
+103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;;
+103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;;
+103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;;
+103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
+103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;;
+103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;;
+103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;;
+103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;;
+103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;;
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
+10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;
+10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
+1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426
+1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
+10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
+10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;
+10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;
+10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;
+10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;
+10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;
+10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;
+10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;
+10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;
+10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;
+1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;
+1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;
+1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;
+1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;
+1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;
+1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;
+10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;
+10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;
+10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;
+10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;
+10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;
+10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;
+10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;
+10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;
+10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;
+10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;
+1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;
+1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;
+1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;
+1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;
+1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;
+1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;
+10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;
+10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;
+10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;
+10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;
+10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;
+10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;
+10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;
+10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;
+10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;
+10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;
+1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;
+1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;
+1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;
+1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;
+1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;
+1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;
+10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;
+10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;
+10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;
+10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;
+10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;
+10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;
+10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;
+10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;
+10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;
+1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;
+1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;
+1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;
+1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;
+1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;
+10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;
+10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;
+10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;
+10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;
+10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;
+10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;
+10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;
+10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;
+10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;
+10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;
+1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;
+1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;
+1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;
+1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;
+104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
+10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
+10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
+10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;
+10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;
+10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;
+10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;
+1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;
+1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;
+1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;
+1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;
+1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;
+1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;
+10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;
+10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;
+10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;
+10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;
+10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;
+10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;
+10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;
+10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;
+10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;
+10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;
+1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;
+1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;
+1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;
+1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;
+1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;
+1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;
+10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;
+10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;
+10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;
+10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;
+10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;
+10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;
+10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;
+10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;
+10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;
+10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;
+1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;
+1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;
+1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;
+1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;
+1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;
+1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;
+10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;
+10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;
+10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;
+10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;
+10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;
+10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;
+10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;
+10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;
+1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;
+1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;
+10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;;
+10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;;
+10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;;
+10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;;
+10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;;
+10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;;
+10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;;
+10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;;
+10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;;
+1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;;
+1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;;
+1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;;
+1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;;
+10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;;
+10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;;
+10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;;
+10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;;
+10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;;
+10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
+10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;;
+10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;;
+10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;;
+10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;;
+10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;;
+10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;;
+10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;;
+10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;;
+10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;;
+10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;;
+10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;;
+1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;;
+1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;;
+1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;;
+1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;;
+1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;;
+1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;;
+10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;;
+10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;;
+10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;;
+10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;;
+10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;;
+10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;;
+10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;;
+10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;;
+10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;;
+10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;;
+1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;;
+10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;;
+10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
+10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;
+10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;;
+10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;;
+10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;;
+10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;;
+10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;;
+10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;;
+10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;;
+10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;;
+10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;;
+10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;;
+10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;;
+10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;;
+10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;;
+10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;;
+10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;;
+10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;;
+10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;;
+10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;;
+10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;;
+10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;;
+10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;;
+10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;;
+10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;;
+10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;;
+10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;;
+10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;;
+10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;;
+10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;;
+10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;;
+10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;;
+10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;;
+10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
+10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
+10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
+10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
+10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
+10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;;
+10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;;
+10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;;
+10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;;
+10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;;
+10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;;
+10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
+10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
+10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
+10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;;
+10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;;
+10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;;
+10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;;
+10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;;
+10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;;
+12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
+12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
+12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
+12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;;
+12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;;
+12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;;
+12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;;
+12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;;
+12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;;
+1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;;
+1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;;
+1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;;
+1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;;
+12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;;
+12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;;
+12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;;
+12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;;
+12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;;
+12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;;
+1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;;
+1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;;
+1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;;
+1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;;
+12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;;
+12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;;
+12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;;
+12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;;
+12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;;
+12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;;
+12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;;
+12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;;
+12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;;
+1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;;
+1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;;
+1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;;
+1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;;
+1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;;
+1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;;
+12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;;
+12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;;
+12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;;
+12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;;
+12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;;
+12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;;
+12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;;
+12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;;
+12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;;
+12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
+1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;;
+1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;;
+1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
+1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
+1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;;
+1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;;
+12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;;
+12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;;
+12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;;
+12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;;
+12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;;
+12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;;
+12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;;
+12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;;
+12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;;
+12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;;
+1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;;
+1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;;
+1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;;
+1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;;
+1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;;
+12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;;
+12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;;
+12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;;
+12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;;
+12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;;
+12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;;
+12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;;
+12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;;
+12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;;
+12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;;
+1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
+1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;;
+1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;;
+1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;;
+1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;;
+1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;;
+12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;;
+12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;;
+12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;;
+12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;;
+12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;;
+12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;;
+12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;;
+12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;;
+12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;;
+1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;;
+1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;;
+1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;;
+1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;;
+1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;;
+12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;;
+12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;;
+12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;;
+12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;;
+12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;;
+12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
+12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;;
+12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;;
+12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;;
+12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;;
+1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;;
+1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;;
+1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;;
+1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;;
+1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;;
+1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;;
+12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;;
+12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;;
+12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;;
+12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;;
+12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;;
+12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
+12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;;
+12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;;
+1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;;
+1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;;
+1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;;
+1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;;
+1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;;
+12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;;
+12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;;
+12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;;
+12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;;
+12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;;
+12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;;
+12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;;
+12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;;
+12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;;
+1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;;
+1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;;
+1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;;
+1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;;
+1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;;
+120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;;
+120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;;
+120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;;
+120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
+120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;;
+120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;;
+120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
+120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;;
+120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;;
+120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;;
+120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;;
+120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;;
+120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;;
+120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;;
+120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;;
+120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;;
+120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;;
+120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;;
+120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;;
+120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
+120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
+120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
+120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;;
+120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;;
+120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
+120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;;
+120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;;
+120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;;
+120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;;
+120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;;
+120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;;
+120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;;
+120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
+120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;;
+120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;;
+120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;;
+120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;;
+120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;;
+120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;;
+120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;;
+120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;;
+120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;;
+120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;;
+120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;;
+120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;;
+120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;;
+120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;;
+120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;;
+120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;;
+120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;;
+120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;;
+120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;;
+120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;;
+120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;;
+120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;;
+120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;;
+120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;;
+120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;;
+120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;;
+120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;;
+120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;;
+120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;;
+120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;;
+120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;;
+120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;;
+120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;;
+120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;;
+120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;;
+120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;;
+120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;;
+120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;;
+120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;;
+120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;;
+120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;;
+120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;;
+120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;;
+120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;;
+120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;;
+120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;;
+12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;;
+12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;;
+12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;;
+12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;;
+12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;;
+12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;;
+12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;;
+12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;;
+12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;;
+12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;;
+1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;;
+1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
+1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;;
+1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;;
+1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;;
+12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;;
+12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;;
+12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
+12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;;
+12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;;
+12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;;
+12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;;
+12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;;
+12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;;
+1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;;
+1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;;
+1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;;
+1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;;
+12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;;
+12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;;
+12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;;
+12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;;
+12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;;
+12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;;
+12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;;
+12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;;
+12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;;
+12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;;
+1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;;
+1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;;
+1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;;
+1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;;
+1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;;
+1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
+12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;;
+12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;;
+12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;;
+12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;;
+12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;;
+12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;;
+12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;;
+12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;;
+12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;;
+12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;;
+1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;;
+1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;;
+1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;;
+1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;;
+1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;;
+12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;;
+12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;;
+12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;;
+12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;;
+12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;;
+12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;;
+12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;;
+12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;;
+12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;;
+12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;;
+1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;;
+1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;;
+1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;;
+1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;;
+1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;;
+12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;;
+12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;;
+12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;;
+12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;;
+12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;;
+12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;;
+12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;;
+12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;;
+12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;;
+1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;;
+1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;;
+1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;;
+1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;;
+1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;;
+1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;;
+12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;;
+12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;;
+12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;;
+12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;;
+12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;;
+12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;;
+12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;;
+12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;;
+1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
+1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;;
+1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;;
+1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;;
+1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;;
+1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;;
+12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;;
+12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;;
+12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;;
+12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;;
+12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;;
+12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;;
+12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;;
+12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;;
+12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;;
+12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;;
+1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;;
+1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;;
+1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;;
+1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;;
+1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;;
+1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;;
+12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;;
+12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;;
+12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;;
+12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;;
+12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;;
+12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;;
+12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;;
+12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;;
+12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;;
+12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;;
+1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
+1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;;
+1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;;
+1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;;
+1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;;
+1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;;
+12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;;
+12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;;
+12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;;
+12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;;
+12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;;
+12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;;
+12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;;
+12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;;
+12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;;
+1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;;
+1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;;
+1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;;
+1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;;
+121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;;
+121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;;
+121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;;
+121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;;
+121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;;
+121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;;
+121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;;
+121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;;
+121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;;
+121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;;
+121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;;
+121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
+121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;;
+121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;;
+121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;;
+121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;;
+121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;;
+121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;;
+121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;;
+121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;;
+121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;;
+121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;;
+121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;;
+121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;;
+121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;;
+121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;;
+121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
+121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;;
+121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
+121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;;
+121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;;
+121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
+121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;;
+121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;;
+121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;;
+121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;;
+121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;;
+121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;;
+121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;;
+121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;;
+121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;;
+121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;;
+121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;;
+121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;;
+121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;;
+121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;;
+121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;;
+121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;;
+121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;;
+121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;;
+121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;;
+121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;;
+121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;;
+121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;;
+121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;;
+121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;;
+121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;;
+121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
+121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;;
+121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;;
+121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;;
+121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;;
+121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;;
+121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;;
+121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;;
+121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;;
+121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
+121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;;
+121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;;
+121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;;
+121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;;
+121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;;
+121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
+121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;;
+121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;;
+121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;;
+121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;;
+121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;;
+121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;;
+121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;;
+121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;;
+121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;;
+121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;;
+121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;;
+121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;;
+121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;;
+121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;;
+121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;;
+121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;;
+12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;;
+12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;;
+12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;;
+12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;;
+12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;;
+12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;;
+12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;;
+1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;;
+1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;;
+1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;;
+1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;;
+12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;;
+12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;;
+12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;;
+12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;;
+12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;;
+12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;;
+12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;;
+12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;;
+12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;;
+12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;;
+1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;;
+1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;;
+1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;;
+1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;;
+1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;;
+1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;;
+12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;;
+12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;;
+12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;;
+12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;;
+12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;;
+12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;;
+12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;;
+12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;;
+1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;;
+1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;;
+1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;;
+1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;;
+1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;;
+1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;;
+12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;;
+12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;;
+12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;;
+12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;;
+12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;;
+12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;;
+12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;;
+12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
+12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;;
+12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;;
+1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;;
+1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;;
+1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;;
+1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;;
+1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;;
+1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;;
+12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;;
+12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;;
+12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;;
+12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;;
+12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;;
+12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;;
+12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;;
+12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;;
+12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;;
+12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;;
+1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;;
+1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;;
+1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;;
+1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;;
+1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;;
+1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;;
+12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;;
+12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;;
+12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
+12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
+12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;;
+12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;;
+1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;;
+12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;;
+12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;;
+12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;;
+12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;;
+12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;;
+12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;;
+12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
+12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
+12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;;
+12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;;
+1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;;
+1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;;
+1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;;
+1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
+1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;;
+12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;;
+12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;;
+12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;;
+12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;;
+12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;;
+12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
+12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;;
+1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;;
+1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;;
+1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;;
+1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;;
+1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;;
+1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;;
+12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;;
+12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;;
+12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;;
+12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;;
+12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;;
+12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;;
+12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;;
+12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;;
+12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;;
+12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;;
+1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;;
+1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;;
+1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;;
+1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;;
+1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;;
+1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;;
+12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;;
+12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;;
+12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;;
+12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;;
+12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;;
+12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;;
+12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;;
+12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;;
+12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;;
+12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;;
+1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;;
+1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;;
+1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;;
+1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;;
+1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;;
+1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;;
+122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;;
+122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;;
+122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;;
+122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;;
+122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;;
+122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;;
+122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;;
+122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;;
+122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;;
+122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;;
+122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;;
+122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;;
+122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;;
+122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;;
+122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;;
+122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;;
+122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;;
+122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;;
+122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;;
+122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;;
+122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;;
+122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;;
+122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
+122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;;
+122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;;
+122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;;
+122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;;
+122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;;
+122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;;
+122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;;
+122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;;
+122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;;
+122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;;
+122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;;
+122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;;
+122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;;
+122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;;
+122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;;
+122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;;
+122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;;
+122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;;
+122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;;
+122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;;
+122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;;
+122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;;
+122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;;
+122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;;
+122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;;
+122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;;
+122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;;
+122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;;
+122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;;
+122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;;
+122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;;
+122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;;
+122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;;
+122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;;
+122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;;
+122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;;
+122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;;
+122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;;
+122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;;
+122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;;
+122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;;
+122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;;
+122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;;
+122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;;
+122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;;
+122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;;
+122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;;
+122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;;
+122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;;
+122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;;
+122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;;
+122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;;
+122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;;
+122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;;
+122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;;
+122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;;
+122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;;
+122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;;
+122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;;
+122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;;
+122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;;
+122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;;
+122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;;
+122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;;
+122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;;
+122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;;
+122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;;
+122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;;
+122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;;
+122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;;
+12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;;
+12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;;
+12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;;
+12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;;
+12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;;
+12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;;
+12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;;
+12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;;
+1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;;
+1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;;
+1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;;
+1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;;
+1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;;
+12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;;
+12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;;
+12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;;
+12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;;
+12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;;
+12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;;
+12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;;
+12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;;
+12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;;
+1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;;
+1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;;
+1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;;
+1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;;
+1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;;
+12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;;
+12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;;
+12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;;
+12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;;
+12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
+12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;;
+12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;;
+12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;;
+12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;;
+1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;;
+1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;;
+1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
+1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
+1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;;
+1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;;
+12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;;
+12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;;
+12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;;
+12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;;
+12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;;
+12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;;
+12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;;
+12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
+1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;;
+1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;;
+1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;;
+1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;;
+1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;;
+12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;;
+12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;;
+12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;;
+12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;;
+12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;;
+12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;;
+12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;;
+12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;;
+12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;;
+12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;;
+1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;;
+1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;;
+1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;;
+1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;;
+1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;;
+1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;;
+12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;;
+12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;;
+12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;;
+12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;;
+12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;;
+12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;;
+12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;;
+12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;;
+12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;;
+1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;;
+1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;;
+1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;;
+1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;;
+1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;;
+12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;;
+12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;;
+12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;;
+12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;;
+12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;;
+12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;;
+12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;;
+12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;;
+12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;;
+12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;;
+1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;;
+1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;;
+1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;;
+1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;;
+1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;;
+12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;;
+12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;;
+12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;;
+12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;;
+12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;;
+12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;;
+12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;;
+12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;;
+12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;;
+12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;;
+1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;;
+1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;;
+1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;;
+1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;;
+1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;;
+1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;;
+12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;;
+12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;;
+12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;;
+12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;;
+12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;;
+12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;;
+12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;;
+12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;;
+12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;;
+12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;;
+1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;;
+1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;;
+1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;;
+1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;;
+1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;;
+1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;;
+12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;;
+12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;;
+12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;;
+12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;;
+12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;;
+12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;;
+12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;;
+12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;;
+12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;;
+1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;;
+1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;;
+1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;;
+1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;;
+1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;;
+1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
+12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
+12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
+12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
+12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
+12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
+12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
+12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;;
+12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;;
+1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;;
+1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;;
+1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;;
+1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;;
+1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;;
+1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;;
+12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;;
+12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;;
+12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;;
+12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;;
+12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;;
+12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;;
+12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;;
+12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;;
+12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;;
+12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;;
+1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;;
+1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;;
+1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;;
+1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;;
+1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;;
+1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;;
+12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;;
+12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;;
+12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;;
+12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
+12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
+12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
+12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
+12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
+12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
+12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
+1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;
+1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;;
+1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;;
+1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;;
+1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;;
+1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;;
+12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;;
+12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;;
+12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;;
+12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
+12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;;
+12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;;
+12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;;
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
+1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;;
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
+1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
+1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
+1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
+1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
+1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
+1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;;
+1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
+1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
+1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;;
+1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;;
+1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
+1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
+1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
+1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
+1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;;
+1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;;
+1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
+1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
+1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
+1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;;
+1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;;
+1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;;
+1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
+1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
+1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
+1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
+1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
+1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
+1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
+1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
+1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
+1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
+1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
+1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
+1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
+1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
+1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
+1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
+1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
+1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
+1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
+1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
+1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
+1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
+1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;;
+1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;;
+1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;;
+1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;;
+1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;;
+1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;;
+1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;;
+1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;;
+1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;;
+1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;;
+1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;;
+1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;;
+1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;;
+1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;;
+1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;;
+1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;;
+1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;;
+1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
+1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
+1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
+1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
+1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
+1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;;
+1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
+1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
+1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
+1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;ren *;;;
+1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;tian ren *;;;
+1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;di ren *;;;
+1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;ren tian *;;;
+1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;ren di *;;;
+1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;ren ren *;;;
+1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;
+1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;
+1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;
+1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;
+1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;
+1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;
+1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;
+1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;
+1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;
+1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;
+1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;
+1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;
+1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;
+1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;
+1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;
+1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;
+1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;
+1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;
+1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;
+1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;
+1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;
+1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;
+1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;
+1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;
+1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;
+1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;
+1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;
+1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;
+1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;
+1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;
+1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;
+1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;
+1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;
+1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;
+1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;
+1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;
+1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;
+1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;
+1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;
+1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;
+1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;
+1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;
+1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;
+1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;
+1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;
+1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;
+1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;
+1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;
+1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;
+1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;
+1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;
+1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;
+1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;
+1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;
+1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;
+1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;
+1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;
+1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;
+1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;
+1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;
+1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;
+1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;
+1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;
+1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;
+1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;
+1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;
+1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;
+1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;
+1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;
+1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;
+1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;
+1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;
+1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;
+1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;
+1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;
+1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;
+1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;;
+1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;;
+1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;;
+1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;;
+1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;;
+1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;;
+1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;;
+1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;;
+1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;;
+1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;;
+1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;;
+1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;;
+1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;;
+1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;;
+1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;;
+1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;
+1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;
+1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;;
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;
+1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;;
+1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;;
+1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;;
+1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;;
+1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;;
+1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;;
+1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;;
+1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;;
+1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;;
+1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;;
+1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;;
+1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;;
+1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;;
+1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;;
+1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;;
+1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;;
+1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;;
+1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;;
+1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;;
+1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;;
+1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;;
+1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;;
+1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;;
+1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;;
+1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;;
+1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;;
+1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;;
+1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;;
+1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;;
+1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;;
+1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;;
+1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;;
+1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;;
+1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;;
+1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;;
+1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;;
+1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;;
+1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;;
+1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;;
+1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;;
+1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;;
+1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;;
+1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;;
+1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;;
+1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;;
+1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;;
+1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;;
+1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;;
+1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;;
+1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;;
+1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;;
+1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;;
+1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;;
+1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;;
+1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;;
+1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;;
+1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;;
+1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;;
+1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;;
+1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;;
+1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;;
+1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;;
+1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;;
+1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;;
+1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;;
+1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;;
+1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;;
+1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;;
+1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;;
+1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;;
+1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;;
+1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;;
+1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;;
+1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;;
+1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;;
+1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;;
+1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;;
+1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;;
+1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;;
+1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;;
+1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;;
+1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;;
+1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;;
+1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;;
+1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;;
+1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;;
+1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;;
+1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;;
+1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;;
+1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;;
+1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;;
+1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;;
+1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;;
+1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;;
+1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;;
+1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;;
+1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;;
+1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;;
+1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;;
+1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;;
+1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;;
+1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;;
+1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;;
+1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;;
+1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;;
+1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;;
+1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;;
+1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;;
+1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;;
+1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;;
+1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;;
+1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;;
+1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;;
+1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;;
+1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;;
+1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;;
+1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;;
+1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;;
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;;
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
+E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;;
+E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;;
+E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;;
+E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;;
+E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;;
+E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;;
+E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;;
+E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;;
+E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;;
+E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;;
+E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;;
+E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;;
+E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;;
+E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;;
+E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;;
+E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;;
+E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;;
+E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;;
+E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;;
+E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;;
+E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;;
+E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;;
+E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;;
+E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;;
+E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;;
+E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;;
+E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;;
+E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;;
+E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;;
+E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;;
+E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;;
+E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;;
+E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;;
+E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;;
+E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;;
+E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;;
+E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;;
+E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;;
+E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;;
+E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;;
+E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;;
+E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;;
+E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;;
+E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;;
+E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;;
+E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;;
+E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;;
+E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;;
+E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;;
+E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;;
+E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;;
+E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;;
+E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;;
+E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;;
+E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;;
+E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;;
+E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;;
+E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;;
+E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;;
+E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;;
+E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;;
+E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;;
+E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;;
+E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;;
+E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;;
+E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;;
+E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;;
+E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;;
+E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;;
+E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;;
+E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;;
+E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;;
+E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;;
+E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;;
+E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;;
+E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;;
+E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;;
+E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;;
+E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;;
+E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;;
+E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;;
+E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;;
+E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;;
+E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;;
+E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;;
+E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;;
+E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;;
+E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;;
+E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;;
+E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;;
+E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;;
+E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;;
+E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;;
+E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;;
+E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;;
+E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;;
+E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;;
+E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;;
+E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;;
+E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;;
+E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;;
+E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;;
+E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;;
+E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;;
+E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;;
+E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;;
+E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;;
+E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;;
+E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;;
+E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;;
+E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;;
+E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;;
+E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;;
+E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;;
+E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;;
+E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;;
+E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;;
+E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;;
+E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;;
+E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;;
+E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;;
+E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;;
+E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;;
+E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;;
+E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;;
+E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;;
+E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;;
+E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;;
+E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;;
+E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;;
+E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;;
+E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;;
+E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;;
+E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;;
+E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;;
+E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;;
+E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;;
+E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;;
+E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;;
+E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;;
+E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;;
+E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;;
+E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;;
+E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;;
+E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;;
+E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;;
+E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;;
+E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;;
+E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;;
+E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;;
+E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;;
+E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;;
+E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;;
+E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;;
+E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;;
+E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;;
+E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;;
+E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;;
+E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;;
+E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;;
+E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;;
+E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;;
+E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;;
+E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;;
+E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;;
+E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;;
+E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;;
+E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;;
+E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;;
+E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;;
+E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;;
+E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;;
+E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;;
+E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;;
+E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;;
+E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;;
+E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;;
+E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;;
+E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;;
+E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;;
+E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;;
+E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;;
+E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;;
+E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;;
+E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;;
+E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;;
+E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;;
+E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;;
+E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;;
+E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;;
+E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;;
+E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;;
+E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;;
+E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;;
+E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;;
+E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;;
+E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;;
+E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;;
+E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;;
+E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;;
+E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;;
+E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;;
+E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;;
+E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;;
+E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;;
+E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;;
+E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;;
+E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;;
+E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;;
+E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;;
+E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;;
+E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;;
+E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;;
+E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;;
+E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;;
+E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;;
+E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;;
+E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;;
+E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;;
+E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;;
+E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;;
+E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;;
+E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;;
+E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;;
+E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;;
+E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;;
+E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;;
+E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;;
+E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;;
+E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;;
+E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;;
+E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;;
+E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;;
+E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;;
+E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;;
+E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;;
+E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;;
+E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;;
+E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;;
+E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;;
+F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
+FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
+100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
+10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/src/com/ibm/icu/dev/data/unicode/ucdterms.txt b/src/com/ibm/icu/dev/data/unicode/ucdterms.txt
new file mode 100644
index 0000000..7f1ddea
--- /dev/null
+++ b/src/com/ibm/icu/dev/data/unicode/ucdterms.txt
@@ -0,0 +1,45 @@
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/ and http://www.unicode.org/reports/.
+Unicode Software includes any source code under the directories
+http://www.unicode.org/Public/ and http://www.unicode.org/reports/.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING,
+INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"),
+AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND
+BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE,
+DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1991-2004 Unicode, Inc. All rights reserved. Distributed under the
+Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+the Unicode data files and associated documentation (the "Data Files") or
+Unicode software and associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files or
+Software are furnished to do so, provided that (a) the above copyright notice(s)
+and this permission notice appear in all copies of the Data Files or Software,
+(b) both the above copyright notice(s) and this permission notice appear in
+associated documentation, and (c) there is clear notice in each modified Data
+File or in the Software as well as in the documentation associated with the Data
+File(s) or Software that the data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
+PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be
+used in advertising or otherwise to promote the sale, use or other dealings in
+these Data Files or Software without prior written authorization of the
+copyright holder.
diff --git a/src/com/ibm/icu/dev/demo/Launcher.java b/src/com/ibm/icu/dev/demo/Launcher.java
new file mode 100644
index 0000000..2d88044
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/Launcher.java
@@ -0,0 +1,192 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.GridLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.util.VersionInfo;
+
+
+/**
+ * @author srl
+ * Application to provide a panel of demos to launch
+ */
+public class Launcher extends DemoApplet {
+    private static final long serialVersionUID = -8054963875776183877L;
+    
+    /**
+     * base package of all demos
+     */
+    public static final String demoBase = "com.ibm.icu.dev.demo";
+    /**
+     * list of classes, relative to the demoBase. all must have a static void main(String[])
+     */
+    public static final String demoList[] = { 
+        "calendar.CalendarApp",
+        "charsetdet.DetectingViewer",
+        "holiday.HolidayCalendarDemo",
+//        "number.CurrencyDemo", -- console
+//        "rbbi.DBBIDemo",
+//        "rbbi.RBBIDemo",
+//        "rbbi.TextBoundDemo",
+        "rbnf.RbnfDemo",
+//        "timescale.PivotDemo",  -- console
+        "translit.Demo",
+    };
+
+    public class LauncherFrame extends Frame implements ActionListener {
+        private static final long serialVersionUID = -8054963875776183878L;
+        
+        public Button buttonList[] = new Button[demoList.length]; // one button for each demo
+        public Label statusLabel;
+        private DemoApplet applet;
+        
+        LauncherFrame(DemoApplet applet) {
+            init();
+            this.applet = applet;
+        }
+        
+        public void init() {
+            // close down when close is clicked.
+            // TODO: this should be factored..
+            addWindowListener(
+                    new WindowAdapter() {
+                        public void windowClosing(WindowEvent e) {
+                            setVisible(false);
+                            dispose();
+
+                            if (applet != null) {
+                                applet.demoClosed();
+                            } else System.exit(0);
+                        }
+                    } );
+
+            setBackground(DemoUtility.bgColor);
+            setLayout(new BorderLayout());
+
+            Panel topPanel = new Panel();
+            topPanel.setLayout(new GridLayout(5,3));
+
+            for(int i=0;i<buttonList.length;i++) {
+                String demo = demoList[i];
+                Button b = new Button(demo);
+                b.addActionListener(this);
+                buttonList[i]=b;
+                topPanel.add(b);
+            }
+            add(BorderLayout.CENTER,topPanel);
+            statusLabel = new Label("");
+            statusLabel.setAlignment(Label.LEFT);
+            String javaVersion = "";
+            try { 
+                javaVersion = "* Java: "+System.getProperty("java.version");
+            } catch (Throwable t) {
+                javaVersion = "";
+            }
+            add(BorderLayout.NORTH, new Label(
+                   "ICU Demos * ICU version "+VersionInfo.ICU_VERSION +
+                   " * http://icu-project.org "+javaVersion));
+            add(BorderLayout.SOUTH,statusLabel);
+            // set up an initial status.
+            showStatus(buttonList.length+" demos ready. ");
+        }
+        
+        /**
+         * Change the 'status' field, and set it to black
+         * @param status
+         */
+        void showStatus(String status) {
+            statusLabel.setText(status);
+            statusLabel.setForeground(Color.BLACK);
+            statusLabel.setBackground(Color.WHITE);
+//            statusLabel.setFont(Font.PLAIN);
+            doLayout();
+        }
+        void showStatus(String demo, String status) {
+            showStatus(demo+": "+status);
+        }
+        void showFailure(String status) {
+            statusLabel.setText(status);
+            statusLabel.setBackground(Color.GRAY);
+            statusLabel.setForeground(Color.RED);
+//            statusLabel.setFont(Font.BOLD);
+            doLayout();
+        }
+        void showFailure(String demo, String status) {
+            showFailure(demo+": "+status);
+        }
+
+        
+        public void actionPerformed(ActionEvent e) {
+            // find button
+            for(int i=0;i<buttonList.length;i++) {
+                if(e.getSource() == buttonList[i]) {
+                    String demoShort = demoList[i];
+                    String demo = demoBase+'.'+demoShort;
+                    showStatus(demoShort, "launching");
+                    try {
+                        Class c = Class.forName(demo);
+                        String args[] = new String[0];
+                        Class params[] = new Class[1];
+                        params[0] = args.getClass();
+                        Method m = c.getMethod("main", params );
+                        Object[] argList = { args };
+                        m.invoke(null, argList);
+                        showStatus(demoShort, "launched.");
+                    } catch (ClassNotFoundException e1) {
+                        showFailure(demoShort,e1.toString());
+                        e1.printStackTrace();
+                    } catch (SecurityException se) {
+                        showFailure(demoShort,se.toString());
+                        se.printStackTrace();
+                    } catch (NoSuchMethodException nsme) {
+                        showFailure(demoShort,nsme.toString());
+                        nsme.printStackTrace();
+                    } catch (IllegalArgumentException iae) {
+                        showFailure(demoShort,iae.toString());
+                        iae.printStackTrace();
+                    } catch (IllegalAccessException iae) {
+                        showFailure(demoShort,iae.toString());
+                        iae.printStackTrace();
+                    } catch (InvocationTargetException ite) {
+                        showFailure(demoShort,ite.toString());
+                        ite.printStackTrace();
+                    }
+                    repaint();
+                }
+            }
+        }
+
+    }
+    
+    /* This creates a Frame for the demo applet. */
+    protected Frame createDemoFrame(DemoApplet applet) {
+        return new LauncherFrame(applet);
+    }
+
+    /**
+     * The main function which defines the behavior of the Demo
+     * applet when an applet is started.
+     */
+    public static void main(String[] args) {
+        new Launcher().showDemo();
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java b/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
new file mode 100644
index 0000000..5b7d76c
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import java.awt.Frame;
+
+import com.ibm.icu.dev.demo.impl.*;
+
+/**
+ * CalendarApp demonstrates how Calendar works.
+ */
+public class CalendarApp extends DemoApplet
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -4270137898405840825L;
+
+    /**
+     * The main function which defines the behavior of the CalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+
+        new CalendarApp().showDemo();
+    }
+
+    /* This creates a CalendarFrame for the demo applet. */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarFrame(applet);
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java b/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
new file mode 100644
index 0000000..ff9a75b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
@@ -0,0 +1,595 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import java.awt.Button;
+import java.awt.Checkbox;
+import java.awt.CheckboxGroup;
+import java.awt.Choice;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.GridLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.TextField;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowEvent;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import javax.swing.JTextField;
+
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * CalendarCalc demonstrates how Date/Time formatter works.
+ */
+public class CalendarCalc extends DemoApplet
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4540103433916539296L;
+
+    /**
+     * The main function which defines the behavior of the MultiCalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+        new CalendarCalc().showDemo();
+    }
+
+    /**
+     * This creates a CalendarCalcFrame for the demo applet.
+     */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarCalcFrame(applet);
+    }
+}
+
+/**
+ * A Frame is a top-level window with a title. The default layout for a frame
+ * is BorderLayout.  The CalendarCalcFrame class defines the window layout of
+ * MultiCalendarDemo.
+ */
+class CalendarCalcFrame extends Frame implements ActionListener
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8901485296258761846L;
+
+    static final Locale[] locales = DemoUtility.getG7Locales();
+
+    private DemoApplet              applet;
+    private long                    time = System.currentTimeMillis();
+
+    private static final RollAddField kRollAddFields[] = {
+        new RollAddField(Calendar.YEAR,                 "Year" ),
+        new RollAddField(Calendar.MONTH,                "Month" ),
+        new RollAddField(Calendar.WEEK_OF_MONTH,        "Week of Month" ),
+        new RollAddField(Calendar.WEEK_OF_YEAR,         "Week of Year" ),
+        new RollAddField(Calendar.DAY_OF_MONTH,         "Day of Month" ),
+        new RollAddField(Calendar.DAY_OF_WEEK,          "Day of Week" ),
+        new RollAddField(Calendar.DAY_OF_WEEK_IN_MONTH, "Day of Week in Month" ),
+        new RollAddField(Calendar.DAY_OF_YEAR,          "Day of Year" ),
+        new RollAddField(Calendar.AM_PM,                "AM/PM" ),
+        new RollAddField(Calendar.HOUR_OF_DAY,          "Hour of day" ),
+        new RollAddField(Calendar.HOUR,                 "Hour" ),
+        new RollAddField(Calendar.MINUTE,               "Minute" ),
+        new RollAddField(Calendar.SECOND,               "Second" ),
+    };
+
+    /**
+     * Constructs a new CalendarCalcFrame that is initially invisible.
+     */
+    public CalendarCalcFrame(DemoApplet applet)
+    {
+        super("Multiple Calendar Demo");
+        this.applet = applet;
+        init();
+        start();
+    }
+
+    /**
+     * Initializes the applet. You never need to call this directly, it
+     * is called automatically by the system once the applet is created.
+     */
+    public void init()
+    {
+        buildGUI();
+
+        patternText.setText( calendars[0].toPattern() );
+
+        // Force an update of the display
+        cityChanged();
+        millisFormat();
+        enableEvents(KeyEvent.KEY_RELEASED);
+        enableEvents(WindowEvent.WINDOW_CLOSING);
+    }
+
+    //------------------------------------------------------------
+    // package private
+    //------------------------------------------------------------
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+    /**
+     * Called to start the applet. You never need to call this method
+     * directly, it is called when the applet's document is visited.
+     */
+    public void start()
+    {
+        // do nothing
+    }
+
+    TextField patternText;
+
+    Choice dateMenu;
+    Choice localeMenu;
+
+    Button up;
+    Button down;
+
+    Checkbox getRoll;
+    Checkbox getAdd;
+
+    public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new FlowLayout()); // shouldn't be necessary, but it is.
+
+// TITLE
+        Label label1=new Label("Calendar Converter", Label.CENTER);
+        label1.setFont(DemoUtility.titleFont);
+        add(label1);
+        add(DemoUtility.createSpacer());
+
+// IO Panel
+        Panel topPanel = new Panel();
+        topPanel.setLayout(new FlowLayout());
+
+        CheckboxGroup group1= new CheckboxGroup();
+
+        // Set up the controls for each calendar we're demonstrating
+        for (int i = 0; i < calendars.length; i++)
+        {
+            Label label = new Label(calendars[i].name, Label.RIGHT);
+            label.setFont(DemoUtility.labelFont);
+            topPanel.add(label);
+
+            topPanel.add(calendars[i].text);
+
+            final int j = i;
+            calendars[i].text.addActionListener( new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    textChanged(j);
+                }
+            } );
+
+            calendars[i].rollAdd.setCheckboxGroup(group1);
+            topPanel.add(calendars[i].rollAdd);
+        }
+        calendars[0].rollAdd.setState(true);    // Make the first one selected
+
+        Label label4=new Label("Pattern", Label.RIGHT);
+        label4.setFont(DemoUtility.labelFont);
+        topPanel.add(label4);
+
+        patternText=new TextField(FIELD_COLUMNS);
+        patternText.setFont(DemoUtility.editFont);
+        topPanel.add(patternText);
+        topPanel.add(new Label(""));
+
+        DemoUtility.fixGrid(topPanel,3);
+        add(topPanel);
+        add(DemoUtility.createSpacer());
+
+// ROLL / ADD
+        Panel rollAddPanel=new Panel();
+        {
+            rollAddPanel.setLayout(new FlowLayout());
+
+            Panel rollAddBoxes = new Panel();
+            {
+                rollAddBoxes.setLayout(new GridLayout(2,1));
+                CheckboxGroup group2= new CheckboxGroup();
+                getRoll = new Checkbox("Roll",group2, false);
+                getAdd = new Checkbox("Add",group2, true);
+
+                rollAddBoxes.add(getRoll);
+                rollAddBoxes.add(getAdd);
+            }
+
+            Label dateLabel=new Label("Date Fields");
+            dateLabel.setFont(DemoUtility.labelFont);
+
+            dateMenu= new Choice();
+            dateMenu.setBackground(DemoUtility.choiceColor);
+            for (int i = 0; i < kRollAddFields.length; i++) {
+                dateMenu.addItem(kRollAddFields[i].name);
+                if (kRollAddFields[i].field == Calendar.MONTH) {
+                    dateMenu.select(i);
+                }
+            }
+
+            Panel upDown = new Panel();
+            {
+                upDown.setLayout(new GridLayout(2,1));
+
+                // *** If the images are not found, we use the label.
+                up = new Button("^");
+                down = new Button("v");
+                up.setBackground(DemoUtility.bgColor);
+                down.setBackground(DemoUtility.bgColor);
+                upDown.add(up);
+                upDown.add(down);
+                up.addActionListener(this);
+                down.addActionListener(this);
+            }
+
+            rollAddPanel.add(dateLabel);
+            rollAddPanel.add(dateMenu);
+            rollAddPanel.add(rollAddBoxes);
+            rollAddPanel.add(upDown);
+
+        }
+        Panel localePanel = new Panel();
+        {
+            // Make the locale popup menus
+            localeMenu= new Choice();
+            Locale defaultLocale = Locale.getDefault();
+            int bestMatch = -1, thisMatch = -1;
+            int selectMe = 0;
+            
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 && locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    localeMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    localeMenu.addItem( locales[i].getDisplayLanguage());
+                }
+                
+                thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale);
+                
+                if (thisMatch >= bestMatch) {
+                    bestMatch = thisMatch;
+                    selectMe = i;
+                }
+            }
+            
+            localeMenu.setBackground(DemoUtility.choiceColor);
+            localeMenu.select(selectMe);
+
+            Label localeLabel =new Label("Display Locale");
+            localeLabel.setFont(DemoUtility.labelFont);
+
+            localePanel.add(localeLabel);
+            localePanel.add(localeMenu);
+            DemoUtility.fixGrid(localePanel,2);
+
+            localeMenu.addItemListener( new ItemListener() {
+                public void itemStateChanged(ItemEvent e) {
+                    Locale loc = locales[localeMenu.getSelectedIndex()];
+                    System.out.println("Change locale to " + loc.getDisplayName());
+
+                    for (int i = 0; i < calendars.length; i++) {
+                        calendars[i].setLocale(loc);
+                    }
+                    millisFormat();
+                }
+            } );
+        }
+        add(rollAddPanel);
+        add(DemoUtility.createSpacer());
+        add(localePanel);
+        add(DemoUtility.createSpacer());
+
+// COPYRIGHT
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,new Label(DemoUtility.copyright1, Label.LEFT),
+            DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add(copyrightPanel);
+    }
+
+    /**
+     * This function is called when users change the pattern text.
+     */
+    public void setFormatFromPattern() {
+        String timePattern = patternText.getText();
+
+        for (int i = 0; i < calendars.length; i++) {
+            calendars[i].applyPattern(timePattern);
+        }
+
+        millisFormat();
+    }
+
+    /**
+     * This function is called when it is necessary to parse the time
+     * string in one of the formatted date fields
+     */
+    public void textChanged(int index) {
+        String rightString = calendars[index].text.getText();
+
+        ParsePosition status = new ParsePosition(0);
+
+        if (rightString.length() == 0)
+        {
+            errorText("Error: no input to parse!");
+            return;
+        }
+
+        try {
+            Date date = calendars[index].format.parse(rightString, status);
+            time = date.getTime();
+        }
+        catch (Exception e) {
+            for (int i = 0; i < calendars.length; i++) {
+                if (i != index) {
+                    calendars[i].text.setText("ERROR");
+                }
+            }
+            errorText("Exception: " + e.getClass().toString() + " parsing: "+rightString);
+            return;
+        }
+
+        int start = calendars[index].text.getSelectionStart();
+        int end = calendars[index].text.getSelectionEnd();
+
+        millisFormat();
+
+        calendars[index].text.select(start,end);
+    }
+
+    /**
+     * This function is called when it is necessary to format the time
+     * in the "Millis" text field.
+     */
+    public void millisFormat() {
+        String out = "";
+
+        for (int i = 0; i < calendars.length; i++) {
+            try {
+                out = calendars[i].format.format(new Date(time));
+                calendars[i].text.setText(out);
+            }
+            catch (Exception e) {
+                calendars[i].text.setText("ERROR");
+                errorText("Exception: " + e.getClass().toString() + " formatting "
+                            + calendars[i].name + " " + time);
+            }
+        }
+    }
+
+
+    /**
+     * This function is called when users change the pattern text.
+     */
+    public void patternTextChanged() {
+        setFormatFromPattern();
+    }
+
+    /**
+     * This function is called when users select a new representative city.
+     */
+    public void cityChanged() {
+        TimeZone timeZone = TimeZone.getDefault();
+
+        for (int i = 0; i < calendars.length; i++) {
+            calendars[i].format.setTimeZone(timeZone);
+        }
+        millisFormat();
+    }
+
+    /**
+     * This function is called when users select a new time field
+     * to add or roll its value.
+     */
+    public void dateFieldChanged(boolean isUp) {
+        int field = kRollAddFields[dateMenu.getSelectedIndex()].field;
+
+        for (int i = 0; i < calendars.length; i++)
+        {
+            if (calendars[i].rollAdd.getState())
+            {
+                Calendar c = calendars[i].calendar;
+                c.setTime(new Date(time));
+
+                if (getAdd.getState()) {
+                    c.add(field, isUp ? 1 : -1);
+                } else {
+                    c.roll(field, isUp);
+                }
+
+                time = c.getTime().getTime();
+                millisFormat();
+                break;
+            }
+        }
+    }
+
+    /**
+     * Print out the error message while debugging this program.
+     */
+    public void errorText(String s)
+    {
+        if (true) {
+            System.out.println(s);
+        }
+    }
+    
+    /**
+     * Called if an action occurs in the CalendarCalcFrame object.
+     */
+    public void actionPerformed(ActionEvent evt)
+    {
+        // *** Button events are handled here.
+        Object obj = evt.getSource();
+        System.out.println("action " + obj);
+        if (obj instanceof Button) {
+            if (evt.getSource() == up) {
+                dateFieldChanged(false);
+            } else
+                if (evt.getSource() == down) {
+                    dateFieldChanged(true);
+            }
+        }
+    }
+    
+    /**
+     * Handles the event. Returns true if the event is handled and should not
+     * be passed to the parent of this component. The default event handler
+     * calls some helper methods to make life easier on the programmer.
+     */
+    protected void processKeyEvent(KeyEvent evt)
+    {
+        System.out.println("key " + evt);
+        if (evt.getID() == KeyEvent.KEY_RELEASED) { 
+            if (evt.getSource() == patternText) {
+                patternTextChanged();
+            }
+            else {
+                for (int i = 0; i < calendars.length; i++) {
+                    if (evt.getSource() == calendars[i].text) {
+                        textChanged(i);
+                    }
+                }
+            }
+        }
+    }
+    
+    protected void processWindowEvent(WindowEvent evt) 
+    {
+        System.out.println("window " + evt);
+        if (evt.getID() == WindowEvent.WINDOW_CLOSING && 
+            evt.getSource() == this) {
+            this.hide();
+            this.dispose();
+
+            if (applet != null) {
+               applet.demoClosed();
+            } else System.exit(0);
+        }
+    }
+    
+    /*
+    protected void processEvent(AWTEvent evt)
+    {
+        if (evt.getID() == AWTEvent. Event.ACTION_EVENT && evt.target == up) {
+            dateFieldChanged(true);
+            return true;
+        }
+        else if (evt.id == Event.ACTION_EVENT && evt.target == down) {
+            dateFieldChanged(false);
+            return true;
+        }
+    }
+    */
+
+    private static final int        FIELD_COLUMNS = 35;
+
+
+    class CalendarRec {
+        public CalendarRec(String nameStr, Calendar cal)
+        {
+            name = nameStr;
+            calendar = cal;
+            rollAdd = new Checkbox();
+
+            text = new JTextField("",FIELD_COLUMNS);
+            text.setFont(DemoUtility.editFont);
+
+            format = DateFormat.getDateInstance(cal, DateFormat.FULL,
+                                                Locale.getDefault());
+            //format.applyPattern(DEFAULT_FORMAT);
+        }
+
+        public void setLocale(Locale loc) {
+            String pattern = toPattern();
+
+            format = DateFormat.getDateInstance(calendar, DateFormat.FULL,
+                                                loc);
+            applyPattern(pattern);
+        }
+
+        public void applyPattern(String pattern) {
+            if (format instanceof SimpleDateFormat) {
+                ((SimpleDateFormat)format).applyPattern(pattern);
+//hey {al} - 
+//            } else if (format instanceof java.text.SimpleDateFormat) {
+//                ((java.text.SimpleDateFormat)format).applyPattern(pattern);
+            }
+        }
+        
+        private String toPattern() {
+            if (format instanceof SimpleDateFormat) {
+                return ((SimpleDateFormat)format).toPattern();
+//hey {al} - 
+//            } else if (format instanceof java.text.SimpleDateFormat) {
+//                return ((java.text.SimpleDateFormat)format).toPattern();
+            }
+            return "";
+        }
+
+        Calendar  calendar;
+        DateFormat          format;
+        String              name;
+        JTextField           text;
+        Checkbox            rollAdd;
+    }
+
+    private final CalendarRec[] calendars = {
+        new CalendarRec("Gregorian",        new GregorianCalendar()),
+        new CalendarRec("Hebrew",           new HebrewCalendar()),
+        new CalendarRec("Islamic (civil)",  makeIslamic(true)),
+        new CalendarRec("Islamic (true)",   makeIslamic(false)),
+        new CalendarRec("Buddhist",         new BuddhistCalendar()),
+        new CalendarRec("Japanese",         new JapaneseCalendar()),
+//        new CalendarRec("Chinese",          new ChineseCalendar()),
+    };
+
+    static private final Calendar makeIslamic(boolean civil) {
+        IslamicCalendar cal = new IslamicCalendar();
+        cal.setCivil(civil);
+        return cal;
+    }
+}
+
+class RollAddField {
+    RollAddField(int field, String name) {
+        this.field = field;
+        this.name = name;
+    }
+    int field;
+    String name;
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java b/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
new file mode 100644
index 0000000..fd76ec7
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
@@ -0,0 +1,442 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Choice;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.Rectangle;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+
+/**
+ * A Frame is a top-level window with a title. The default layout for a frame
+ * is BorderLayout.  The CalendarFrame class defines the window layout of
+ * CalendarDemo.
+ */
+class CalendarFrame extends Frame
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -4289697663503820619L;
+
+    private static final boolean DEBUG = false;
+
+    private DemoApplet applet;
+
+    /**
+     * Constructs a new CalendarFrame that is initially invisible.
+     */
+    public CalendarFrame(DemoApplet myApplet)
+    {
+        super("Calendar Demo");
+        this.applet = myApplet;
+        init();
+
+        // When the window is closed, we want to shut down the applet or application
+        addWindowListener(
+            new WindowAdapter() {
+                public void windowClosing(WindowEvent e) {
+                    setVisible(false);
+                    dispose();
+
+                    if (applet != null) {
+                        applet.demoClosed();
+                    } else System.exit(0);
+                }
+            } );
+    }
+
+    private Choice          displayMenu;
+    private Locale[]        locales = DemoUtility.getG7Locales();
+
+    private Calendar        calendars[]   = new Calendar[2];
+    private Choice          calMenu[]     = new Choice[2];
+    private ColoredLabel    monthLabel[]  = new ColoredLabel[2];
+    private DateFormat      monthFormat[] = new DateFormat[2];
+
+    private Button          prevYear;
+    private Button          prevMonth;
+    private Button          gotoToday;
+    private Button          nextMonth;
+    private Button          nextYear;
+    private CalendarPanel   calendarPanel;
+
+    private static void add(Container container, Component component,
+                            GridBagLayout g, GridBagConstraints c,
+                            int gridwidth, int weightx)
+    {
+        c.gridwidth = gridwidth;
+        c.weightx = weightx;
+        g.setConstraints(component, c);
+        container.add(component);
+    }
+
+    /**
+     * Initializes the applet. You never need to call this directly, it
+     * is called automatically by the system once the applet is created.
+     */
+    public void init() {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout(10,10));
+
+        Panel topPanel = new Panel();
+        GridBagLayout g = new GridBagLayout();
+        topPanel.setLayout(g);
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.HORIZONTAL;
+
+        // Build the two menus for selecting which calendar is displayed,
+        // plus the month/year label for each calendar
+        for (int i = 0; i < 2; i++) {
+            calMenu[i] = new Choice();
+            for (int j = 0; j < CALENDARS.length; j++) {
+                calMenu[i].addItem(CALENDARS[j].name);
+            }
+            calMenu[i].setBackground(DemoUtility.choiceColor);
+            calMenu[i].select(i);
+            calMenu[i].addItemListener(new CalMenuListener());
+
+            // Label for the current month name
+            monthLabel[i] = new ColoredLabel("", COLORS[i]);
+            monthLabel[i].setFont(DemoUtility.titleFont);
+
+            // And the default calendar to use for this slot
+            calendars[i] = CALENDARS[i].calendar;
+
+            add(topPanel, calMenu[i], g, c, 5, 0);
+            add(topPanel, monthLabel[i], g, c, GridBagConstraints.REMAINDER, 1);
+        }
+
+        // Now add the next/previous year/month buttons:
+        prevYear = new Button("<<");
+        prevYear.addActionListener(new AddAction(Calendar.YEAR, -1));
+
+        prevMonth = new Button("<");
+        prevMonth.addActionListener(new AddAction(Calendar.MONTH, -1));
+
+        gotoToday = new Button("Today");
+        gotoToday.addActionListener( new ActionListener()
+        {
+            public void actionPerformed(ActionEvent e) {
+                calendarPanel.setDate( new Date() );
+                updateMonthName();
+            }
+        } );
+
+        nextMonth = new Button(">");
+        nextMonth.addActionListener(new AddAction(Calendar.MONTH, 1));
+
+        nextYear = new Button(">>");
+        nextYear.addActionListener(new AddAction(Calendar.YEAR, 1));
+
+        c.fill = GridBagConstraints.NONE;
+        add(topPanel, prevYear,  g, c, 1, 0);
+        add(topPanel, prevMonth, g, c, 1, 0);
+        add(topPanel, gotoToday, g, c, 1, 0);
+        add(topPanel, nextMonth, g, c, 1, 0);
+        add(topPanel, nextYear,  g, c, 1, 0);
+
+        // Now add the menu for selecting the display language
+        Panel displayPanel = new Panel();
+        {
+            displayMenu = new Choice();
+            Locale defaultLocale = Locale.getDefault();
+            int bestMatch = -1, thisMatch = -1;
+            int selectMe = 0;
+            
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 &&
+                        locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    displayMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    displayMenu.addItem( locales[i].getDisplayLanguage());
+                }
+
+                thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale);
+                
+                if (thisMatch >= bestMatch) {
+                    bestMatch = thisMatch;
+                    selectMe = i;
+                }
+            }
+            
+            displayMenu.setBackground(DemoUtility.choiceColor);
+            displayMenu.select(selectMe);
+
+            displayMenu.addItemListener( new ItemListener()
+            {
+                 public void itemStateChanged(ItemEvent e) {
+                    Locale loc = locales[displayMenu.getSelectedIndex()];
+                    calendarPanel.setLocale( loc );
+                    monthFormat[0] = monthFormat[1] = null;
+                    updateMonthName();
+                    repaint();
+                }
+            } );
+
+            Label l1 = new Label("Display Language:", Label.RIGHT);
+            l1.setFont(DemoUtility.labelFont);
+
+            displayPanel.setLayout(new FlowLayout());
+            displayPanel.add(l1);
+            displayPanel.add(displayMenu);
+
+        }
+        c.fill = GridBagConstraints.NONE;
+        c.anchor = GridBagConstraints.EAST;
+
+        add(topPanel, displayPanel, g, c, GridBagConstraints.REMAINDER, 0);
+
+        // The title, buttons, etc. go in a panel at the top of the window
+        add("North", topPanel);
+
+        // The copyright notice goes at the bottom of the window
+        Label copyright = new Label(DemoUtility.copyright1, Label.LEFT);
+        copyright.setFont(DemoUtility.creditFont);
+        add("South", copyright);
+
+        // Now create the big calendar panel and stick it in the middle
+        calendarPanel = new CalendarPanel( locales[displayMenu.getSelectedIndex()] );
+        add("Center", calendarPanel);
+
+        for (int i = 0; i < 2; i++) {
+            calendarPanel.setCalendar(i, calendars[i]);
+            calendarPanel.setColor(i, COLORS[i]);
+        }
+
+        updateMonthName();
+    }
+
+
+    private void updateMonthName()
+    {
+            for (int i = 0; i < 2; i++) {
+                try {
+                    if (monthFormat[i] == null) {     // TODO: optimize
+                        DateFormat f = DateFormat.getDateTimeInstance(
+                                                calendars[i], DateFormat.MEDIUM, -1,
+                                                locales[displayMenu.getSelectedIndex()]);
+                        if (f instanceof com.ibm.icu.text.SimpleDateFormat) {
+                            com.ibm.icu.text.SimpleDateFormat f1 = (com.ibm.icu.text.SimpleDateFormat) f;
+                            f1.applyPattern("MMMM, yyyy G");
+                            f1.setTimeZone(new SimpleTimeZone(0, "UTC"));
+                        }
+                        monthFormat[i] = f;
+                    }
+                } catch (ClassCastException e) {
+                    //hey {lw} - there's something wrong in this routine that cuases exceptions.
+                    System.out.println(e);
+                }
+
+                monthLabel[i].setText( monthFormat[i].format( calendarPanel.firstOfMonth() ));
+            }
+    }
+
+    /**
+     * CalMenuListener responds to events in the two popup menus that select
+     * the calendar systems to be used in the display.  It figures out which
+     * of the two menus the event occurred in and updates the corresponding
+     * element of the calendars[] array to match the new selection.
+     */
+    private class CalMenuListener implements ItemListener
+    {
+         public void itemStateChanged(ItemEvent e)
+         {
+            for (int i = 0; i < calMenu.length; i++)
+            {
+                if (e.getItemSelectable() == calMenu[i])
+                {
+                    // We found the menu that the event happened in.
+                    // Figure out which new calendar they selected.
+                    Calendar newCal = CALENDARS[ calMenu[i].getSelectedIndex() ].calendar;
+
+                    if (newCal != calendars[i])
+                    {
+                        // If any of the other menus are set to the same new calendar
+                        // we're about to use for this menu, set them to the current
+                        // calendar from *this* menu so we won't have two the same
+                        for (int j = 0; j < calendars.length; j++) {
+                            if (j != i && calendars[j] == newCal) {
+                                calendars[j] = calendars[i];
+                                calendarPanel.setCalendar(j, calendars[j]);
+                                monthFormat[j] = null;
+
+                                for (int k = 0; k < CALENDARS.length; k++) {
+                                    if (calendars[j] == CALENDARS[k].calendar) {
+                                        calMenu[j].select(k);
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                        // Now update this menu to use the new calendar the user selected
+                        calendars[i] = newCal;
+                        calendarPanel.setCalendar(i, newCal);
+                        monthFormat[i] = null;
+
+                        updateMonthName();
+                    }
+                    break;
+                }
+            }
+         }
+    }
+
+    /**
+     * AddAction handles the next/previous year/month buttons...
+     */
+    private class AddAction implements ActionListener {
+        AddAction(int field, int amount) {
+            this.field = field;
+            this.amount = amount;
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            calendarPanel.add(field, amount);
+            updateMonthName();
+        }
+
+        private int field, amount;
+    }
+
+    /**
+     * ColoredLabel is similar to java.awt.Label, with two differences:
+     *
+     *  - You can set its text color
+     *
+     *  - It draws text using drawString rather than using a host-specific
+     *    "Peer" object like AWT does.  On 1.2, using drawString gives
+     *    us Bidi reordering for free.
+     */
+    static private class ColoredLabel extends Component {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 5004484960341875722L;
+        public ColoredLabel(String label) {
+            text = label;
+        }
+
+        public ColoredLabel(String label, Color c) {
+            text = label;
+            color = c;
+        }
+
+        public void setText(String label) {
+            text = label;
+            repaint();
+        }
+
+        public void setFont(Font f) {
+            font = f;
+            repaint();
+        }
+
+        public void paint(Graphics g) {
+            FontMetrics fm = g.getFontMetrics(font);
+
+            Rectangle bounds = getBounds();
+
+            g.setColor(color);
+            g.setFont(font);
+            g.drawString(text, fm.stringWidth("\u00a0"),
+                         bounds.height/2 + fm.getHeight()
+                         - fm.getAscent() + fm.getLeading()/2);
+        }
+
+        public Dimension getPreferredSize() {
+            return getMinimumSize();
+        }
+
+        public Dimension getMinimumSize() {
+            FontMetrics fm = getFontMetrics(font);
+
+            return new Dimension( fm.stringWidth(text) + 2*fm.stringWidth("\u00a0"),
+                                  fm.getHeight() + fm.getLeading()*2);
+        }
+
+        String text;
+        Color color = Color.black;
+        Font font = DemoUtility.labelFont;
+    }
+
+    /**
+     * Print out the error message while debugging this program.
+     */
+    public void errorText(String s)
+    {
+        if (DEBUG)
+        {
+            System.out.println(s);
+        }
+    }
+
+    class CalendarRec {
+        public CalendarRec(String nameStr, Calendar cal)
+        {
+            name = nameStr;
+            calendar = cal;
+        }
+
+        Calendar  calendar;
+        String              name;
+    }
+
+    private final CalendarRec[] CALENDARS = {
+        new CalendarRec("Gregorian Calendar",       new GregorianCalendar()),
+        new CalendarRec("Hebrew Calendar",          new HebrewCalendar()),
+        new CalendarRec("Islamic Calendar",         makeIslamic(false)),
+        new CalendarRec("Islamic Civil Calendar ",  makeIslamic(true)),
+        new CalendarRec("Buddhist Calendar",        new BuddhistCalendar()),
+        new CalendarRec("Japanese Calendar",        new JapaneseCalendar()),
+    };
+
+    static private final Calendar makeIslamic(boolean civil) {
+        IslamicCalendar cal = new IslamicCalendar();
+        cal.setCivil(civil);
+        return cal;
+    }
+
+    static final Color[] COLORS = { Color.blue, Color.black };
+}
+
diff --git a/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java b/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
new file mode 100644
index 0000000..8ea94d3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
@@ -0,0 +1,365 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.calendar;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.SimpleTimeZone;
+
+class CalendarPanel extends Canvas {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 625400018027387141L;
+
+    public CalendarPanel( Locale locale ) {
+        setLocale(locale);
+    }
+
+    public void setLocale(Locale locale) {
+        if (fDisplayLocale == null || !fDisplayLocale.equals(locale)) {
+            fDisplayLocale = locale;
+            dirty = true;
+
+            for (int i = 0; i < fCalendar.length; i++) {
+                if (fCalendar[i] != null) {
+                    fSymbols[i] = new DateFormatSymbols(fCalendar[i],
+                                                        fDisplayLocale);
+                }
+            }
+            String lang = locale.getLanguage();
+            leftToRight = !(lang.equals("iw") || lang.equals("ar"));
+
+            repaint();
+        }
+    }
+
+    public void setDate(Date date) {
+        fStartOfMonth = date;
+        dirty = true;
+        repaint();
+    }
+
+    public void add(int field, int delta)
+    {
+        synchronized(fCalendar) {
+            fCalendar[0].setTime(fStartOfMonth);
+            fCalendar[0].add(field, delta);
+            fStartOfMonth = fCalendar[0].getTime();
+        }
+        dirty = true;
+        repaint();
+    }
+
+    public void setColor(int index, Color c) {
+        fColor[index] = c;
+        repaint();
+    }
+
+    public void setCalendar(int index, Calendar c) {
+        Date date = (fCalendar[index] == null) ? new Date()
+                                               : fCalendar[index].getTime();
+
+        fCalendar[index] = c;
+        fCalendar[index].setTime(date);
+
+        fSymbols[index] = new DateFormatSymbols(c, fDisplayLocale);
+        dirty = true;
+        repaint();
+    }
+
+    public Calendar getCalendar(int index) {
+        return fCalendar[index];
+    }
+
+    public Locale getDisplayLocale() {
+        return fDisplayLocale;
+    }
+
+    public Date firstOfMonth() {
+        return fStartOfMonth;
+    }
+
+    private Date startOfMonth(Date dateInMonth)
+    {
+        synchronized(fCalendar) {
+            fCalendar[0].setTime(dateInMonth);
+
+            int era = fCalendar[0].get(Calendar.ERA);
+            int year = fCalendar[0].get(Calendar.YEAR);
+            int month = fCalendar[0].get(Calendar.MONTH);
+
+            fCalendar[0].clear();
+            fCalendar[0].set(Calendar.ERA, era);
+            fCalendar[0].set(Calendar.YEAR, year);
+            fCalendar[0].set(Calendar.MONTH, month);
+            fCalendar[0].set(Calendar.DATE, 1);
+
+            return fCalendar[0].getTime();
+        }
+    }
+
+    private void calculate()
+    {
+        //
+        // As a workaround for JDK 1.1.3 and below, where Calendars and time
+        // zones are a bit goofy, always set my calendar's time zone to UTC.
+        // You would think I would want to do this in the "set" function above,
+        // but if I do that, the program hangs when this class is loaded,
+        // perhaps due to some sort of static initialization ordering problem.
+        // So I do it here instead.
+        //
+        fCalendar[0].setTimeZone(new SimpleTimeZone(0, "UTC"));
+
+        Calendar c = (Calendar)fCalendar[0].clone(); // Temporary copy
+
+        fStartOfMonth = startOfMonth(fStartOfMonth);
+
+        // Stash away a few useful constants for this calendar and display
+        minDay = c.getMinimum(Calendar.DAY_OF_WEEK);
+        daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1;
+
+        firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek();
+
+        // Stash away a Date for the start of this month
+
+        // Find the day of week of the first day in this month
+        c.setTime(fStartOfMonth);
+        firstDayInMonth = c.get(Calendar.DAY_OF_WEEK);
+        int firstWeek = c.get(Calendar.WEEK_OF_MONTH);
+
+        // Now find the # of days in the month
+        c.roll(Calendar.DATE, false);
+        daysInMonth = c.get(Calendar.DATE);
+
+        // Finally, find the end of the month, i.e. the start of the next one
+        c.roll(Calendar.DATE, true);
+        c.add(Calendar.MONTH, 1);
+        c.getTime();        // JDK 1.1.2 bug workaround
+        c.add(Calendar.SECOND, -1);
+        Date endOfMonth = c.getTime();
+        if(endOfMonth==null){
+         //do nothing
+        }
+        endOfMonth = null;
+        int lastWeek = c.get(Calendar.WEEK_OF_MONTH);
+        
+        // Calculate the number of full or partial weeks in this month.
+        numWeeks = lastWeek - firstWeek + 1;
+
+        dirty = false;
+    }
+
+    static final int XINSET = 4;
+    static final int YINSET = 2;
+
+    /*
+     * Convert from the day number within a month (1-based)
+     * to the cell coordinates on the calendar (0-based)
+     */
+    private void dateToCell(int date, Point pos)
+    {
+        int cell = (date + firstDayInMonth - firstDayOfWeek - minDay);
+        if (firstDayInMonth < firstDayOfWeek) {
+            cell += daysInWeek;
+        }
+
+        pos.x = cell % daysInWeek;
+        pos.y = cell / daysInWeek;
+    }
+    //private Point dateToCell(int date) {
+    //    Point p = new Point(0,0);
+    //    dateToCell(date, p);
+    //    return p;
+    //}
+
+    public void paint(Graphics g) {
+
+        if (dirty) {
+            calculate();
+        }
+
+        Point cellPos = new Point(0,0);     // Temporary variable
+        Dimension d = this.getSize();
+
+        g.setColor(Color.lightGray);
+        g.fillRect(0,0,d.width,d.height);
+
+        // Draw the day names at the top
+        g.setColor(Color.black);
+        g.setFont(DemoUtility.labelFont);
+        FontMetrics fm = g.getFontMetrics();
+        int labelHeight = fm.getHeight() + YINSET * 2;
+
+        int v = fm.getAscent() + YINSET;
+        for (int i = 0; i < daysInWeek; i++) {
+            int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1;
+            String dayName = fSymbols[0].getWeekdays()[dayNum];
+
+
+            double h;
+            if (leftToRight) {
+                h = d.width*(i + 0.5) / daysInWeek;
+            } else {
+                h = d.width*(daysInWeek - i - 0.5) / daysInWeek;
+            }
+            h -= fm.stringWidth(dayName) / 2;
+
+            g.drawString(dayName, (int)h, v);
+        }
+
+        double cellHeight = (d.height - labelHeight - 1) / numWeeks;
+        double cellWidth = (double)(d.width - 1) / daysInWeek;
+
+        // Draw a white background in the part of the calendar
+        // that displays this month.
+        // First figure out how much of the first week should be shaded.
+        {
+            g.setColor(Color.white);
+            dateToCell(1, cellPos);
+            int width = (int)(cellPos.x*cellWidth);  // Width of unshaded area
+
+            if (leftToRight) {
+                g.fillRect((int)(width), labelHeight ,
+                           d.width - width, (int)cellHeight);
+            } else {
+                g.fillRect(0, labelHeight ,
+                           d.width - width, (int)cellHeight);
+            }
+
+            // All of the intermediate weeks get shaded completely
+            g.fillRect(0, (int)(labelHeight + cellHeight),
+                        d.width, (int)(cellHeight * (numWeeks - 2)));
+
+            // Now figure out the last week.
+            dateToCell(daysInMonth, cellPos);
+            width = (int)((cellPos.x+1)*cellWidth);  // Width of shaded area
+
+            if (leftToRight) {
+                g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                           width, (int)cellHeight);
+            } else {
+                g.fillRect(d.width - width, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                           width, (int)cellHeight);
+            }
+
+        }
+        // Draw the X/Y grid lines
+        g.setColor(Color.black);
+        for (int i = 0; i <= numWeeks; i++) {
+            int y = (int)(labelHeight + i * cellHeight);
+            g.drawLine(0, y, d.width - 1, y);
+        }
+        for (int i = 0; i <= daysInWeek; i++) {
+            int x = (int)(i * cellWidth);
+            g.drawLine(x, labelHeight, x, d.height - 1);
+        }
+
+        // Now loop through all of the days in the month, figure out where
+        // they go in the grid, and draw the day # for each one
+
+        // Figure out the date of the first cell in the calendar display
+        int cell = (1 + firstDayInMonth - firstDayOfWeek - minDay);
+        if (firstDayInMonth < firstDayOfWeek) {
+            cell += daysInWeek;
+        }
+
+        Calendar c = (Calendar)fCalendar[0].clone();
+        c.setTime(fStartOfMonth);
+        c.add(Calendar.DATE, -cell);
+
+        StringBuffer buffer = new StringBuffer();
+
+        for (int row = 0; row < numWeeks; row++) {
+            for (int col = 0; col < daysInWeek; col++) {
+
+                g.setFont(DemoUtility.numberFont);
+                g.setColor(Color.black);
+                fm = g.getFontMetrics();
+
+                int cellx;
+                if (leftToRight) {
+                    cellx = (int)((col) * cellWidth);
+                } else {
+                    cellx = (int)((daysInWeek - col - 1) * cellWidth);
+                }
+
+                int celly = (int)(row * cellHeight + labelHeight);
+
+                for (int i = 0; i < 2; i++) {
+                    fCalendar[i].setTime(c.getTime());
+
+                    int date = fCalendar[i].get(Calendar.DATE);
+                    buffer.setLength(0);
+                    buffer.append(date);
+                    String dayNum = buffer.toString();
+
+                    int x;
+
+                    if (leftToRight) {
+                        x = cellx + (int)cellWidth - XINSET - fm.stringWidth(dayNum);
+                    } else {
+                        x = cellx + XINSET;
+                    }
+                    int y = celly + + fm.getAscent() + YINSET + i * fm.getHeight();
+
+                    if (fColor[i] != null) {
+                        g.setColor(fColor[i]);
+                    }
+                    g.drawString(dayNum, x, y);
+
+                    if (date == 1 || row == 0 && col == 0) {
+                        g.setFont(DemoUtility.numberFont);
+                        String month = fSymbols[i].getMonths()[
+                                            fCalendar[i].get(Calendar.MONTH)];
+
+                        if (leftToRight) {
+                            x = cellx + XINSET;
+                        } else {
+                            x = cellx + (int)cellWidth - XINSET - fm.stringWidth(month);
+                        }
+                        g.drawString(month, x, y);
+                    }
+                }
+
+                c.add(Calendar.DATE, 1);
+            }
+        }
+    }
+
+    // Important state variables
+    private Calendar[]          fCalendar = new Calendar[4];
+    private Color[]             fColor = new Color[4];
+
+    private Locale              fDisplayLocale;
+    private DateFormatSymbols[] fSymbols = new DateFormatSymbols[4];
+
+    private Date                fStartOfMonth = new Date();     // 00:00:00 on first day of month
+
+    // Cached calculations to make drawing faster.
+    private transient int       minDay;           // Minimum legal day #
+    private transient int       daysInWeek;       // # of days in a week
+    private transient int       firstDayOfWeek;   // First day to display in week
+    private transient int       numWeeks;         // # full or partial weeks in month
+    private transient int       daysInMonth;      // # days in this month
+    private transient int       firstDayInMonth;  // Day of week of first day in month
+    private transient boolean   leftToRight;
+
+    private transient boolean dirty = true;
+}
diff --git a/src/com/ibm/icu/dev/demo/calendar/package.html b/src/com/ibm/icu/dev/demo/calendar/package.html
new file mode 100644
index 0000000..c1bb105
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/calendar/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Calendar demo applications including date/time arithmetic.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java b/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java
new file mode 100644
index 0000000..de4ef06
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java
@@ -0,0 +1,404 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation   *
+ * and others. All Rights Reserved.                                       *
+ **************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.demo.charsetdet;
+
+import java.awt.event.*;
+import java.awt.*;
+import java.io.*;
+import java.net.URL;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.security.AccessControlException;
+
+import javax.swing.*;
+
+import com.ibm.icu.charset.CharsetICU;
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.text.CharsetDetector;
+import com.ibm.icu.text.CharsetMatch;
+
+/**
+ * This simple application demonstrates how to use the CharsetDetector API. It
+ * opens a file or web page, detects the encoding, and then displays it using that
+ * encoding.
+ */
+public class DetectingViewer extends JFrame implements ActionListener
+{
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -2307065724464747775L;
+    private JTextPane text;
+    private JFileChooser fileChooser;
+    
+    /**
+     * @throws java.awt.HeadlessException
+     */
+    public DetectingViewer()
+    {
+        super();
+        DemoApplet.demoFrameOpened();
+        
+        try {
+            fileChooser = new JFileChooser();
+        } catch (AccessControlException ace) {
+            System.err.println("no file chooser - access control exception. Continuing without file browsing. "+ace.toString());
+            fileChooser = null; //
+        }
+        
+//        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        setSize(800, 800);
+
+        setJMenuBar(makeMenus());
+        text = new JTextPane();
+        text.setContentType("text/plain");
+        text.setText("");
+        text.setSize(800, 800);
+        
+        Font font = new Font("Arial Unicode MS", Font.PLAIN, 24);
+        text.setFont(font);
+        
+        JScrollPane scrollPane = new JScrollPane(text);
+        
+        getContentPane().add(scrollPane);
+        setVisible(true);
+
+        addWindowListener(
+                new WindowAdapter() {
+                    public void windowClosing(WindowEvent e) {
+//                        setVisible(false);
+//                        dispose();
+
+                          doQuit();
+                    }
+                } );
+
+    
+    }
+
+    public void actionPerformed(ActionEvent event)
+    {
+        String cmd = event.getActionCommand();
+        
+        if (cmd.equals("New...")) {
+           doNew();
+        } else if (cmd.equals("Open File...")) {
+           doOpenFile();
+        } else if (cmd.equals("Open URL...")) {
+            doOpenURL();
+        } else if (cmd.equals("Quit")) {
+           doQuit();
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        new DetectingViewer();
+    }
+    
+    private void errorDialog(String title, String msg)
+    {
+        JOptionPane.showMessageDialog(this, msg, title, JOptionPane.ERROR_MESSAGE);
+    }
+    
+    private BufferedInputStream openFile(File file)
+    {
+        FileInputStream fileStream = null;
+        
+        try {
+            fileStream = new FileInputStream(file);
+        } catch (Exception e) {
+            errorDialog("Error Opening File", e.getMessage());
+            return null;
+        }
+        
+        return new BufferedInputStream(fileStream);
+    }
+    
+//    private void openFile(String directory, String filename)
+//    {
+//        openFile(new File(directory, filename));
+//    }
+    
+    
+    private BufferedInputStream openURL(String url)
+    {
+        InputStream s = null;
+
+        try {
+            URL aURL = new URL(url);
+            s = aURL.openStream();
+        } catch (Exception e) {
+            errorDialog("Error Opening URL", e.getMessage());
+            return null;
+        }
+        
+        return new BufferedInputStream(s);
+    }
+    
+    private String encodingName(CharsetMatch match)
+    {
+        return match.getName() + " (" + match.getLanguage() + ")";
+    }
+    
+    private void setMatchMenu(CharsetMatch[] matches)
+    {
+        JMenu menu = getJMenuBar().getMenu(1);
+        JMenuItem menuItem;
+        
+        menu.removeAll();
+        
+        for (int i = 0; i < matches.length; i += 1) {
+            CharsetMatch match = matches[i];
+            
+            menuItem = new JMenuItem(encodingName(match) + " " + match.getConfidence());
+            
+            menu.add(menuItem);
+        }
+    }
+    
+    private byte[] scriptTag = {(byte) 's', (byte) 'c', (byte) 'r', (byte) 'i', (byte) 'p', (byte) 't'};
+    private byte[] styleTag  = {(byte) 's', (byte) 't', (byte) 'y', (byte) 'l', (byte) 'e'};
+    private static int BUFFER_SIZE = 100000;
+    
+    private boolean openTag(byte[] buffer, int offset, int length, byte[] tag)
+    {
+        int tagLen = tag.length;
+        int bufRem = length - offset;
+        int b;
+        
+        for (b = 0; b < tagLen && b < bufRem; b += 1) {
+            if (buffer[b + offset] != tag[b]) {
+                return false;
+            }
+        }
+        
+        return b == tagLen;
+    }
+    
+    private boolean closedTag(byte[] buffer, int offset, int length, byte[] tag)
+    {
+        if (buffer[offset] != (byte) '/') {
+            return false;
+        }
+        
+        return openTag(buffer, offset + 1, length, tag);
+    }
+    
+    private byte[] filter(InputStream in)
+    {
+        byte[] buffer = new byte[BUFFER_SIZE];
+        int bytesRemaining = BUFFER_SIZE;
+        int bufLen = 0;
+        
+        in.mark(BUFFER_SIZE);
+        
+        try {
+            while (bytesRemaining > 0) {
+                int bytesRead = in.read(buffer, bufLen, bytesRemaining);
+                
+                if (bytesRead <= 0) {
+                    break;
+                }
+                
+                bufLen += bytesRead;
+                bytesRemaining -= bytesRead;
+            }
+        } catch (Exception e) {
+            // TODO: error handling?
+            return null;
+        }
+        
+        boolean inTag = false;
+        boolean skip  = false;
+        int out = 0;
+        
+        for (int i = 0; i < bufLen; i += 1) {
+            byte b = buffer[i];
+            
+            if (b == (byte) '<') {
+                inTag = true;
+                
+                if (openTag(buffer, i + 1, bufLen, scriptTag) ||
+                    openTag(buffer, i + 1, bufLen, styleTag)) {
+                    skip = true;
+                } else if (closedTag(buffer, i + 1, bufLen, scriptTag) ||
+                           closedTag(buffer, i + 1, bufLen, styleTag)) {
+                    skip = false;
+                }
+            } else if (b == (byte) '>') {
+                inTag = false;
+            } else if (! (inTag || skip)) {
+                buffer[out++] = b;
+            }
+        }
+
+        byte[] filtered = new byte[out];
+        
+        System.arraycopy(buffer, 0, filtered, 0, out);
+        return filtered;
+    }
+    
+    private CharsetMatch[] detect(byte[] bytes)
+    {
+        CharsetDetector det = new CharsetDetector();
+        
+        det.setText(bytes);
+        
+        return det.detectAll();
+    }
+    
+    private CharsetMatch[] detect(BufferedInputStream inputStream)
+    {
+        CharsetDetector det    = new CharsetDetector();
+        
+        try {
+            det.setText(inputStream);
+            
+            return det.detectAll();
+        } catch (Exception e) {
+            // TODO: error message?
+            return null;
+        }
+    }
+    
+    private void show(InputStream inputStream, CharsetMatch[] matches, String title)
+    {
+        InputStreamReader isr;
+        char[] buffer = new char[1024];
+        int bytesRead = 0;
+        
+        if (matches == null || matches.length == 0) {
+            errorDialog("Match Error", "No matches!");
+            return;
+        }
+        
+        try {
+            StringBuffer sb = new StringBuffer();
+            String encoding = matches[0].getName();
+            
+            inputStream.reset();
+            
+            if (encoding.startsWith("UTF-32")) {
+                byte[] bytes = new byte[1024];
+                int offset = 0;
+                int chBytes = 0;
+                Charset utf32 = CharsetICU.forNameICU(encoding);
+                
+                while ((bytesRead = inputStream.read(bytes, offset, 1024)) >= 0) {
+                    offset  = bytesRead % 4;
+                    chBytes = bytesRead - offset;
+                    
+                    sb.append(utf32.decode(ByteBuffer.wrap(bytes)).toString());
+                    
+                    if (offset != 0) {
+                        for (int i = 0; i < offset; i += 1) {
+                            bytes[i] = bytes[chBytes + i];
+                        }
+                    }
+                }
+            } else {
+                isr = new InputStreamReader(inputStream, encoding);
+                
+                while ((bytesRead = isr.read(buffer, 0, 1024)) >= 0) {
+                    sb.append(buffer, 0, bytesRead);
+                }
+                
+                isr.close();
+            }
+            
+            this.setTitle(title + " - " + encodingName(matches[0]));
+            
+            setMatchMenu(matches);
+            text.setText(sb.toString());
+        } catch (IOException e) {
+            errorDialog("IO Error", e.getMessage());
+        } catch (Exception e) {
+            errorDialog("Internal Error", e.getMessage());
+        }
+    }
+    
+    private void doNew()
+    {
+        // open a new window...
+    }
+    
+    private void doOpenFile()
+    {
+        int retVal = fileChooser.showOpenDialog(this);
+        
+        if (retVal == JFileChooser.APPROVE_OPTION) {
+            File file = fileChooser.getSelectedFile();
+            BufferedInputStream inputStream = openFile(file);
+            
+            if (inputStream != null) {
+                CharsetMatch[] matches = detect(inputStream);
+                
+                show(inputStream, matches, file.getName());                
+            }
+        }
+    }
+    
+    private void doOpenURL()
+    {
+        String url = (String) JOptionPane.showInputDialog(this, "URL to open:", "Open URL", JOptionPane.PLAIN_MESSAGE,
+                null, null, null);
+        
+        if (url != null && url.length() > 0) {
+            BufferedInputStream inputStream = openURL(url);
+            
+            if (inputStream != null) {
+                byte[] filtered = filter(inputStream);
+                CharsetMatch[] matches = detect(filtered);
+                
+                show(inputStream, matches, url);                
+            }
+        }
+}
+    
+    private void doQuit()
+    {
+        DemoApplet.demoFrameClosed();
+        this.setVisible(false);
+        this.dispose();
+    }
+    
+    private JMenuBar makeMenus()
+    {
+        JMenu menu = new JMenu("File");
+        JMenuItem mi;
+        
+        mi = new JMenuItem("Open File...");
+        mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)));
+        mi.addActionListener(this);
+        menu.add(mi);
+        if(fileChooser == null) {
+            mi.setEnabled(false); // no file chooser.
+        }
+        
+        mi = new JMenuItem("Open URL...");
+        mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK)));
+        mi.addActionListener(this);
+        menu.add(mi);
+        
+        mi = new JMenuItem("Quit");
+        mi.setAccelerator((KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK)));
+        mi.addActionListener(this);
+        menu.add(mi);
+        
+        JMenuBar mbar = new JMenuBar();
+        mbar.add(menu);
+        
+        menu = new JMenu("Detected Encodings");
+        mbar.add(menu);
+        
+        return mbar;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java b/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
new file mode 100644
index 0000000..af6ce9b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
@@ -0,0 +1,546 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.holiday;
+
+import java.awt.*;
+
+/**
+ * Various graphical borders. The border itself is a Panel so that it can
+ * contain other Components (i.e. it borders something). You use the
+ * HolidayBorderPanel like any other Panel: you set the layout that you prefer and
+ * add Components to it. Beware that a null layout does not obey the insets
+ * of the panel so if you use null layouts, adjust your measurements to
+ * handle the border by calling insets().
+ *
+ * @author  Andy Clark, Taligent Inc.
+ * @version 1.0
+ */
+public class HolidayBorderPanel extends Panel {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4669213306492461159L;
+    // Constants
+
+    /** Solid border. */
+    public final static int SOLID = 0;
+    /** A raised border. */
+    public final static int RAISED = 1;
+    /** A lowered border. */
+    public final static int LOWERED = 2;
+    /** An etched in border. */
+    public final static int IN = 3;
+    /** An etched out border. */
+    public final static int OUT = 4;
+
+    /** Left alignment. */
+    public final static int LEFT = 0;
+    /** Center alignment. */
+    public final static int CENTER = 1;
+    /** Right alignment. */
+    public final static int RIGHT = 2;
+
+    /** Default style (IN). */
+    public final static int DEFAULT_STYLE = IN;
+    /** Default thickness (10). */
+    public final static int DEFAULT_THICKNESS = 10;
+    /** Default thickness for solid borders (4). */
+    public final static int DEFAULT_SOLID_THICKNESS = 4;
+    /** Default thickness for raised borders (2). */
+    public final static int DEFAULT_RAISED_THICKNESS = 2;
+    /** Default thickness for lowered borders (2). */
+    public final static int DEFAULT_LOWERED_THICKNESS = 2;
+    /** Default thickness for etched-in borders (10). */
+    public final static int DEFAULT_IN_THICKNESS = 10;
+    /** Default thickness for etched-out borders (10). */
+    public final static int DEFAULT_OUT_THICKNESS = 10;
+    /** Default gap between border and contained component (5). */
+    public final static int DEFAULT_GAP = 5;
+    /** Default color (black). Applies to SOLID and etched borders. */
+    public final static Color DEFAULT_COLOR = Color.black;
+
+    /** Default font (TimesRoman,PLAIN,14). Only applies to etched borders. */
+    public final static Font DEFAULT_FONT = new Font("TimesRoman", Font.PLAIN, 14);
+    /** Default alignment (LEFT). Only applies to etched borders. */
+    public final static int DEFAULT_ALIGNMENT = LEFT;
+
+    // Data
+    private int style;
+    private int thickness;
+    private int gap;
+    private Color color;
+
+    private Font font;
+    private String text;
+    private int alignment;
+
+    /**
+     * Constructor. Makes default border.
+     */
+    public HolidayBorderPanel() {
+
+        // initialize data
+        style       = DEFAULT_STYLE;
+        thickness   = DEFAULT_THICKNESS;
+        gap         = DEFAULT_GAP;
+        color       = DEFAULT_COLOR;
+
+        text        = null;
+        font        = DEFAULT_FONT;
+        alignment   = DEFAULT_ALIGNMENT;
+
+        }
+
+    /**
+     * Constructor. Makes an etched IN border with given text caption.
+     *
+     * @param text  Text caption
+     */
+    public HolidayBorderPanel(String text) {
+        this();
+
+        style = IN;
+        this.text = text;
+        }
+
+    /**
+     * Constructor. Makes SOLID border with color and thickness given.
+     *
+     * @param color     The color for the border.
+     * @param thickness The thickness of the border.
+     */
+    public HolidayBorderPanel(Color color, int thickness) {
+        this();
+
+        style = SOLID;
+        this.color = color;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Constructor. Makes a border of the given style with the default
+     * thickness for that style.
+     *
+     * @param style The style for this border.
+     */
+    public HolidayBorderPanel(int style) {
+        this();
+
+        // set thickness appropriate to this style
+        switch (style) {
+            case SOLID: thickness = DEFAULT_SOLID_THICKNESS; break;
+            case RAISED: thickness = DEFAULT_RAISED_THICKNESS; break;
+            case LOWERED: thickness = DEFAULT_LOWERED_THICKNESS; break;
+            case IN: thickness = DEFAULT_IN_THICKNESS; break;
+            case OUT: thickness = DEFAULT_OUT_THICKNESS; break;
+            default:
+                thickness = DEFAULT_THICKNESS;
+            }
+
+        this.style = style;
+        }
+
+    /**
+     * Constructor. Makes border with given style and thickness.
+     *
+     * @param style     The style for this border.
+     * @param thickness The thickness for this border.
+     */
+    public HolidayBorderPanel(int style, int thickness) {
+        this();
+
+        this.style = style;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Returns the insets of this panel..
+     */
+    public Insets getInsets() {
+        int adjustment = 0;
+
+        // adjust for text string
+        if (style == IN || style == OUT) {
+            if (text != null && text.length() > 0) {
+                try {
+                    // set font and get info
+                    int height = getGraphics().getFontMetrics(font).getHeight();
+                    if (height > thickness)
+                        adjustment = height - thickness;
+                    }
+                catch (Exception e) {
+                    // nothing: just in case there is no graphics context
+                    //   at the beginning.
+                    System.out.print("");
+                    }
+                }
+            }
+
+        // return appropriate insets
+        int dist = thickness + gap;
+        return new Insets(dist + adjustment, dist, dist, dist);
+        }
+
+    /**
+     * Sets the style of the border
+     *
+     * @param style The new style.
+     */
+    public HolidayBorderPanel setStyle(int style) {
+
+        // set the style and re-layout the panel
+        this.style = style;
+        doLayout();
+        repaint();
+
+        return this;
+        }
+
+    /**
+     * Gets the style of the border
+     */
+    public int getStyle() {
+
+        return style;
+        }
+
+    /**
+     * Sets the thickness of the border.
+     *
+     * @param thickness The new thickness
+     */
+    public HolidayBorderPanel setThickness(int thickness) {
+
+        if (thickness > 0) {
+            this.thickness = thickness;
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the thickness of the border.
+     */
+    public int getThickness() {
+
+        return thickness;
+        }
+
+    /**
+     * Sets the gap between the border and the contained Component.
+     *
+     * @param gap The new gap, in pixels.
+     */
+    public HolidayBorderPanel setGap(int gap) {
+
+        if (gap > -1) {
+            this.gap = gap;
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the gap between the border and the contained Component.
+     */
+    public int getGap() {
+
+        return gap;
+        }
+
+    /**
+     * Sets the current color for SOLID borders and the caption text
+     * color for etched borders.
+     *
+     * @param color The new color.
+     */
+    public HolidayBorderPanel setColor(Color color) {
+
+        this.color = color;
+        if (style == SOLID || style == IN || style == OUT)
+            repaint();
+
+        return this;
+        }
+
+    /**
+     * Gets the current color for SOLID borders and the caption
+     * text color for etched borders.
+     */
+    public Color getColor() {
+
+        return color;
+        }
+
+    /**
+     * Sets the font. Only applies to etched borders.
+     */
+    public HolidayBorderPanel setTextFont(Font font) {
+
+        // set font
+        if (font != null) {
+            this.font = font;
+            if (style == IN || style == OUT) {
+                doLayout();
+                repaint();
+                }
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the font of the text. Only applies to etched borders.
+     */
+    public Font getTextFont() {
+
+        return font;
+        }
+
+    /**
+     * Sets the text. Only applies to etched borders.
+     *
+     * @param text  The new text.
+     */
+    public HolidayBorderPanel setText(String text) {
+
+        this.text = text;
+        if (style == IN || style == OUT) {
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the text. Only applies to etched borders.
+     */
+    public String getText() {
+
+        return text;
+        }
+
+    /**
+     * Sets the text alignment. Only applies to etched borders.
+     *
+     * @param alignment The new alignment.
+     */
+    public HolidayBorderPanel setAlignment(int alignment) {
+
+        this.alignment = alignment;
+        if (style == IN || style == OUT) {
+            doLayout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the text alignment.
+     */
+    public int getAlignment() {
+
+        return alignment;
+        }
+
+    /**
+     * Repaints the border.
+     *
+     * @param g The graphics context.
+     */
+    public void paint(Graphics g) {
+
+        // get current dimensions
+        Dimension size = getSize();
+        int width = size.width;
+        int height = size.height;
+
+        // set colors
+        Color light = getBackground().brighter().brighter().brighter();
+        Color dark = getBackground().darker().darker().darker();
+
+        // Draw border
+        switch (style) {
+            case RAISED:    // 3D Border (in or out)
+            case LOWERED:
+                Color topleft = null;
+                Color bottomright = null;
+
+                // set colors
+                if (style == RAISED) {
+                    topleft = light;
+                    bottomright = dark;
+                    }
+                else {
+                    topleft = dark;
+                    bottomright = light;
+                    }
+
+                // draw border
+                g.setColor(topleft);
+                for (int i = 0; i < thickness; i++) {
+                    g.drawLine(i, i, width - i - 2, i);
+                    g.drawLine(i, i + 1, i, height - i - 1);
+                    }
+                g.setColor(bottomright);
+                for (int i = 0; i < thickness; i++) {
+                    g.drawLine(i + 1, height - i - 1, width - i - 1, height - i - 1);
+                    g.drawLine(width - i - 1, i, width - i - 1, height - i - 2);
+                    }
+                break;
+
+            case IN:    // Etched Border (in or out)
+            case OUT:
+                int adjust1 = 0;
+                int adjust2 = 0;
+
+                // set font and get info
+                Font oldfont = g.getFont();
+                g.setFont(font);
+                FontMetrics fm = g.getFontMetrics();
+                int ascent = fm.getAscent();
+
+                // set adjustment
+                if (style == IN)
+                    adjust1 = 1;
+                else
+                    adjust2 = 1;
+
+                // Calculate adjustment for text
+                int adjustment = 0;
+                if (text != null && text.length() > 0) {
+                    if (ascent > thickness)
+                        adjustment = (ascent - thickness) / 2;
+                    }
+
+                // The adjustment is there so that we always draw the
+                // light rectangle first. Otherwise, your eye picks up
+                // the discrepancy where the light rect. passes over
+                // the darker rect.
+                int x = thickness / 2;
+                int y = thickness / 2 + adjustment;
+                int w = width - thickness - 1;
+                int h = height - thickness - 1 - adjustment;
+
+                // draw rectangles
+                g.setColor(light);
+                g.drawRect(x + adjust1, y + adjust1, w, h);
+                g.setColor(dark);
+                g.drawRect(x + adjust2, y + adjust2, w, h);
+
+                // draw text, if applicable
+                if (text != null && text.length() > 0) {
+                    // calculate drawing area
+                    int fontheight = fm.getHeight();
+                    int strwidth = fm.stringWidth(text);
+
+                    int textwidth = width - 2 * (thickness + 5);
+                    if (strwidth > textwidth)
+                        strwidth = textwidth;
+
+                    // calculate offset for alignment
+                    int offset;
+                    switch (alignment) {
+                        case CENTER:
+                            offset = (width - strwidth) / 2;
+                            break;
+                        case RIGHT:
+                            offset = width - strwidth - thickness - 5;
+                            break;
+                        case LEFT:
+                        default: // assume left alignment if invalid
+                            offset = thickness + 5;
+                            break;
+                        }
+
+                    // clear drawing area and set clipping region
+                    g.clearRect(offset - 5, 0, strwidth  + 10, fontheight);
+                    g.clipRect(offset, 0, strwidth, fontheight);
+
+                    // draw text
+                    g.setColor(color);
+                    g.drawString(text, offset, ascent);
+
+                    // restore old clipping area
+                    g.clipRect(0, 0, width, height);
+                    }
+
+                g.setFont(oldfont);
+                break;
+
+            case SOLID:
+            default: // assume SOLID
+                g.setColor(color);
+                for (int i = 0; i < thickness; i++)
+                    g.drawRect(i, i, width - 2 * i - 1, height - 2 * i - 1);
+            }
+
+        }
+
+    /**
+     * Returns the settings of this HolidayBorderPanel instance as a string.
+     */
+    public String toString() {
+        StringBuffer str = new StringBuffer("HolidayBorderPanel[");
+
+        // style
+        str.append("style=");
+        switch (style) {
+            case SOLID: str.append("SOLID"); break;
+            case RAISED: str.append("RAISED"); break;
+            case LOWERED: str.append("LOWERED"); break;
+            case IN: str.append("IN"); break;
+            case OUT: str.append("OUT"); break;
+            default: str.append("unknown");
+            }
+        str.append(",");
+
+        // thickness
+        str.append("thickness=");
+        str.append(thickness);
+        str.append(",");
+
+        // gap
+        str.append("gap=");
+        str.append(gap);
+        str.append(",");
+
+        // color
+        str.append(color);
+        str.append(",");
+
+        // font
+        str.append(font);
+        str.append(",");
+
+        // text
+        str.append("text=");
+        str.append(text);
+        str.append(",");
+
+        // alignment
+        str.append("alignment=");
+        switch (alignment) {
+            case LEFT: str.append("LEFT"); break;
+            case CENTER: str.append("CENTER"); break;
+            case RIGHT: str.append("RIGHT"); break;
+            default: str.append("unknown");
+            }
+
+        str.append("]");
+
+        return str.toString();
+        }
+
+    }
+
diff --git a/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java b/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
new file mode 100644
index 0000000..5899b78
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
@@ -0,0 +1,744 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.holiday;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Canvas;
+import java.awt.Choice;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.WindowEvent;
+import java.text.DateFormatSymbols;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Vector;
+
+import com.ibm.icu.dev.demo.impl.DemoApplet;
+import com.ibm.icu.dev.demo.impl.DemoTextBox;
+import com.ibm.icu.dev.demo.impl.DemoUtility;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Holiday;
+import com.ibm.icu.util.SimpleTimeZone;
+
+/**
+ * CalendarDemo demonstrates how Calendar works.
+ */
+public class HolidayCalendarDemo extends DemoApplet 
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4546085430817359372L;
+
+    /**
+     * The main function which defines the behavior of the CalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+
+        new HolidayCalendarDemo().showDemo();
+    }
+
+    /* This creates a CalendarFrame for the demo applet. */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarFrame(applet);
+    }
+
+    /**
+    * A Frame is a top-level window with a title. The default layout for a frame
+    * is BorderLayout.  The CalendarFrame class defines the window layout of
+    * CalendarDemo.
+    */
+    private static class CalendarFrame extends Frame implements ActionListener,
+                                                                ItemListener
+    {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = -7023296782393042761L;
+
+        private static final boolean DEBUG = false;
+
+        //private Locale curLocale = Locale.US; // unused
+
+        private DemoApplet applet;
+
+        private static final Locale[] calendars = {
+            //new Locale("de","AT"),
+            Locale.CANADA,
+            Locale.CANADA_FRENCH,
+            Locale.FRANCE,
+            Locale.GERMANY,
+            new Locale("iw","IL"),
+            new Locale("el","GR"),
+            //new Locale("es","MX"),
+            Locale.UK,
+            Locale.US,
+        };
+        private static final Locale[] displays = {
+            Locale.CANADA,
+            Locale.UK,
+            Locale.US,
+            Locale.FRANCE,
+            Locale.CANADA_FRENCH,
+            //new Locale("de","AT"),
+            Locale.GERMAN,
+            new Locale("el","GR"),
+            //new Locale("iw","IL"),
+            new Locale("es","MX"),
+        };
+
+        /**
+        * Constructs a new CalendarFrame that is initially invisible.
+        */
+        public CalendarFrame(DemoApplet applet)
+        {
+            super("Calendar Demo");
+            this.applet = applet;
+            init();
+            start();
+            enableEvents(WindowEvent.WINDOW_CLOSING);
+        }
+
+        /**
+        * Initializes the applet. You never need to call this directly, it
+        * is called automatically by the system once the applet is created.
+        */
+        public void init()
+        {
+            // Get G7 locales only for demo purpose. To get all the locales
+            // supported, switch to calling Calendar.getAvailableLocales().
+            // commented
+            locales = displays;
+
+            buildGUI();
+        }
+
+        //------------------------------------------------------------
+        // package private
+        //------------------------------------------------------------
+        void addWithFont(Container container, Component foo, Font font) {
+            if (font != null)
+                foo.setFont(font);
+            container.add(foo);
+        }
+
+        /**
+        * Called to start the applet. You never need to call this method
+        * directly, it is called when the applet's document is visited.
+        */
+        public void start()
+        {
+            // do nothing
+        }
+
+        private Choice          localeMenu;
+        private Choice          displayMenu;
+        private Locale[]        locales;
+
+        private Label           monthLabel;
+        private Button          prevYear;
+        private Button          prevMonth;
+        private Button          gotoToday;
+        private Button          nextMonth;
+        private Button          nextYear;
+        private CalendarPanel   calendarPanel;
+
+        private static final Locale kFirstLocale = Locale.US;
+
+        private static void add(Container container, Component component,
+                                GridBagLayout g, GridBagConstraints c)
+        {
+            g.setConstraints(component, c);
+            container.add(component);
+        }
+
+        public void buildGUI()
+        {
+            setBackground(DemoUtility.bgColor);
+            setLayout(new BorderLayout(10,10));
+
+            // Label for the demo's title
+            Label titleLabel = new Label("Calendar Demo", Label.CENTER);
+            titleLabel.setFont(DemoUtility.titleFont);
+
+            // Label for the current month name
+            monthLabel = new Label("", Label.LEFT);
+            monthLabel.setFont(new Font(DemoUtility.titleFont.getName(),
+                                        DemoUtility.titleFont.getStyle(),
+                                        (DemoUtility.titleFont.getSize() * 3)/2));
+
+            // Make the locale popup menus
+            localeMenu= new Choice();
+            localeMenu.addItemListener(this);
+            int selectMe = 0;
+            
+            for (int i = 0; i < calendars.length; i++) {
+                if (i > 0 &&
+                        calendars[i].getCountry().equals(calendars[i-1].getCountry()) ||
+                    i < calendars.length - 1 &&
+                        calendars[i].getCountry().equals(calendars[i+1].getCountry()))
+                {
+                    localeMenu.addItem(calendars[i].getDisplayCountry() + " (" +
+                                    calendars[i].getDisplayLanguage() + ")");
+                } else {
+                    localeMenu.addItem( calendars[i].getDisplayCountry() );
+                }
+                
+                if (calendars[i].equals(kFirstLocale)) {
+                    selectMe = i;
+                }
+            }
+            
+            localeMenu.setBackground(DemoUtility.choiceColor);
+            localeMenu.select(selectMe);
+
+            displayMenu = new Choice();
+            displayMenu.addItemListener(this);
+            
+            selectMe = 0;
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 &&
+                        locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    displayMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    displayMenu.addItem( locales[i].getDisplayLanguage());
+                }
+                
+                if (locales[i].equals(kFirstLocale)) {
+                    selectMe = i;
+                }
+            }
+            
+            displayMenu.setBackground(DemoUtility.choiceColor);
+            displayMenu.select(selectMe);
+
+            // Make all the next/previous/today buttons
+            prevYear = new Button("<<");
+            prevYear.addActionListener(this);
+            prevMonth = new Button("<");
+            prevMonth.addActionListener(this);
+            gotoToday = new Button("Today");
+            gotoToday.addActionListener(this);
+            nextMonth = new Button(">");
+            nextMonth.addActionListener(this);
+            nextYear = new Button(">>");
+            nextYear.addActionListener(this);
+
+            // The month name and the control buttons are bunched together
+            Panel monthPanel = new Panel();
+            {
+                GridBagLayout g = new GridBagLayout();
+                GridBagConstraints c = new GridBagConstraints();
+                monthPanel.setLayout(g);
+
+                c.weightx = 1;
+                c.weighty = 1;
+
+                c.gridwidth = 1;
+                c.fill = GridBagConstraints.HORIZONTAL;
+                c.gridwidth = GridBagConstraints.REMAINDER;
+                add(monthPanel, monthLabel, g, c);
+
+                c.gridwidth = 1;
+                add(monthPanel, prevYear, g, c);
+                add(monthPanel, prevMonth, g, c);
+                add(monthPanel, gotoToday, g, c);
+                add(monthPanel, nextMonth, g, c);
+                c.gridwidth = GridBagConstraints.REMAINDER;
+                add(monthPanel, nextYear, g, c);
+            }
+
+            // Stick the menu and buttons in a little "control panel"
+            Panel menuPanel = new Panel();
+            {
+                GridBagLayout g = new GridBagLayout();
+                GridBagConstraints c = new GridBagConstraints();
+                menuPanel.setLayout(g);
+
+                c.weightx = 1;
+                c.weighty = 1;
+
+                c.fill = GridBagConstraints.HORIZONTAL;
+
+                c.gridwidth = GridBagConstraints.RELATIVE;
+                Label l1 = new Label("Holidays");
+                l1.setFont(DemoUtility.labelFont);
+                add(menuPanel, l1, g, c);
+
+                c.gridwidth = GridBagConstraints.REMAINDER;
+                add(menuPanel, localeMenu, g, c);
+
+                c.gridwidth = GridBagConstraints.RELATIVE;
+                Label l2 = new Label("Display:");
+                l2.setFont(DemoUtility.labelFont);
+                add(menuPanel, l2, g, c);
+
+                c.gridwidth = GridBagConstraints.REMAINDER;
+                add(menuPanel, displayMenu, g, c);
+            }
+
+            // The title, buttons, etc. go in a panel at the top of the window
+            Panel topPanel = new Panel();
+            {
+                topPanel.setLayout(new BorderLayout());
+
+                //topPanel.add("North", titleLabel);
+                topPanel.add("Center", monthPanel);
+                topPanel.add("East", menuPanel);
+            }
+            add("North", topPanel);
+
+            // The copyright notice goes at the bottom of the window
+            Label copyright = new Label(DemoUtility.copyright1, Label.LEFT);
+            copyright.setFont(DemoUtility.creditFont);
+            add("South", copyright);
+
+            // Now create the big calendar panel and stick it in the middle
+            calendarPanel = new CalendarPanel( kFirstLocale );
+            add("Center", calendarPanel);
+
+            updateMonthName();
+        }
+
+        private void updateMonthName()
+        {
+            SimpleDateFormat f = new SimpleDateFormat("MMMM yyyyy",
+                                                        calendarPanel.getDisplayLocale());
+            f.setCalendar(calendarPanel.getCalendar());
+            f.setTimeZone(new SimpleTimeZone(0, "UTC"));        // JDK 1.1.2 workaround
+            monthLabel.setText( f.format( calendarPanel.firstOfMonth() ));
+        }
+        
+        /**
+        * Handles the event. Returns true if the event is handled and should not
+        * be passed to the parent of this component. The default event handler
+        * calls some helper methods to make life easier on the programmer.
+        */
+        public void actionPerformed(ActionEvent e)
+        {
+            Object obj = e.getSource();
+            
+            // *** Button events are handled here.
+            if (obj instanceof Button) {
+                if (obj == nextMonth) {
+                    calendarPanel.add(Calendar.MONTH, +1);
+                }
+                else
+                if (obj == prevMonth) {
+                    calendarPanel.add(Calendar.MONTH, -1);
+                }
+                else
+                if (obj == prevYear) {
+                    calendarPanel.add(Calendar.YEAR, -1);
+                }
+                else
+                if (obj == nextYear) {
+                    calendarPanel.add(Calendar.YEAR, +1);
+                }
+                else
+                if (obj == gotoToday) {
+                    calendarPanel.set( new Date() );
+                }
+                updateMonthName();
+            }
+        }
+        
+        public void itemStateChanged(ItemEvent e)
+        {
+            Object obj = e.getSource();
+            if (obj == localeMenu) {
+                calendarPanel.setCalendarLocale(calendars[localeMenu.getSelectedIndex()]);
+                updateMonthName();
+            }
+            else 
+                if (obj == displayMenu) {
+                    calendarPanel.setDisplayLocale(locales[displayMenu.getSelectedIndex()]);
+                    updateMonthName();
+                }
+        }
+        
+        /**
+        * Print out the error message while debugging this program.
+        */
+        public void errorText(String s)
+        {
+            if (DEBUG)
+            {
+                System.out.println(s);
+            }
+        }
+        
+        protected void processWindowEvent(WindowEvent e)
+        {
+            System.out.println("event " + e);
+            if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+                this.hide();
+                this.dispose();
+
+                if (applet != null) {
+                    applet.demoClosed();
+                } else {
+                    System.exit(0);
+                }
+            }
+        }
+    }
+
+
+    private static class CalendarPanel extends Canvas {
+
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 1521099412250120821L;
+
+        public CalendarPanel( Locale locale ) {
+            set(locale, locale, new Date());
+        }
+
+        public void setCalendarLocale(Locale locale) {
+            set(locale, fDisplayLocale, fCalendar.getTime());
+        }
+
+        public void setDisplayLocale(Locale locale) {
+            set(fCalendarLocale, locale, fCalendar.getTime());
+        }
+
+        public void set(Date date) {
+            set(fCalendarLocale, fDisplayLocale, date);
+        }
+
+        public void set(Locale loc, Locale display, Date date)
+        {
+            if (fCalendarLocale == null || !loc.equals(fCalendarLocale)) {
+                fCalendarLocale = loc;
+                fCalendar = Calendar.getInstance(fCalendarLocale);
+                fAllHolidays = Holiday.getHolidays(fCalendarLocale);
+            }
+            if (fDisplayLocale == null || !display.equals(fDisplayLocale)) {
+                fDisplayLocale = display;
+                fSymbols = new DateFormatSymbols(fDisplayLocale);
+            }
+
+            fStartOfMonth = date;
+
+            dirty = true;
+            repaint();
+        }
+
+        public void add(int field, int delta)
+        {
+            synchronized(fCalendar) {
+                fCalendar.setTime(fStartOfMonth);
+                fCalendar.add(field, delta);
+                fStartOfMonth = fCalendar.getTime();
+            }
+            dirty = true;
+            repaint();
+        }
+
+        public com.ibm.icu.util.Calendar getCalendar() {
+            return fCalendar;
+        }
+
+        public Locale getCalendarLocale() {
+            return fCalendarLocale;
+        }
+
+        public Locale getDisplayLocale() {
+            return fDisplayLocale;
+        }
+
+
+        public Date firstOfMonth() {
+            return fStartOfMonth;
+        }
+
+        private Date startOfMonth(Date dateInMonth)
+        {
+            synchronized(fCalendar) {
+                fCalendar.setTime(dateInMonth);             // TODO: synchronization
+
+                int era = fCalendar.get(Calendar.ERA);
+                int year = fCalendar.get(Calendar.YEAR);
+                int month = fCalendar.get(Calendar.MONTH);
+
+                fCalendar.clear();
+                fCalendar.set(Calendar.ERA, era);
+                fCalendar.set(Calendar.YEAR, year);
+                fCalendar.set(Calendar.MONTH, month);
+                fCalendar.set(Calendar.DATE, 1);
+
+                return fCalendar.getTime();
+            }
+        }
+
+        private void calculate()
+        {
+            //
+            // As a workaround for JDK 1.1.3 and below, where Calendars and time
+            // zones are a bit goofy, always set my calendar's time zone to UTC.
+            // You would think I would want to do this in the "set" function above,
+            // but if I do that, the program hangs when this class is loaded,
+            // perhaps due to some sort of static initialization ordering problem.
+            // So I do it here instead.
+            //
+            fCalendar.setTimeZone(new SimpleTimeZone(0, "UTC"));
+
+            Calendar c = (Calendar)fCalendar.clone(); // Temporary copy
+
+            fStartOfMonth = startOfMonth(fStartOfMonth);
+
+            // Stash away a few useful constants for this calendar and display
+            minDay = c.getMinimum(Calendar.DAY_OF_WEEK);
+            daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1;
+
+            firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek();
+
+            // Stash away a Date for the start of this month
+
+            // Find the day of week of the first day in this month
+            c.setTime(fStartOfMonth);
+            firstDayInMonth = c.get(Calendar.DAY_OF_WEEK);
+
+            // Now find the # of days in the month
+            c.roll(Calendar.DATE, false);
+            daysInMonth = c.get(Calendar.DATE);
+
+            // Finally, find the end of the month, i.e. the start of the next one
+            c.roll(Calendar.DATE, true);
+            c.add(Calendar.MONTH, 1);
+            c.getTime();        // JDK 1.1.2 bug workaround
+            c.add(Calendar.SECOND, -1);
+            Date endOfMonth = c.getTime();
+
+            //
+            // Calculate the number of full or partial weeks in this month.
+            // To do this I can just reuse the code that calculates which
+            // calendar cell contains a given date.
+            //
+            numWeeks = dateToCell(daysInMonth).y - dateToCell(1).y + 1;
+
+            // Remember which holidays fall on which days in this month,
+            // to save the trouble of having to do it later
+            fHolidays.setSize(0);
+
+            for (int h = 0; h < fAllHolidays.length; h++)
+            {
+                Date d = fStartOfMonth;
+                while ( (d = fAllHolidays[h].firstBetween(d, endOfMonth) ) != null)
+                {
+                    c.setTime(d);
+                    fHolidays.addElement( new HolidayInfo(c.get(Calendar.DATE),
+                                            fAllHolidays[h],
+                                            fAllHolidays[h].getDisplayName(fDisplayLocale) ));
+
+                    d.setTime( d.getTime() + 1000 );    // "d++"
+                }
+            }
+            dirty = false;
+        }
+
+        static final int INSET = 2;
+
+        /*
+        * Convert from the day number within a month (1-based)
+        * to the cell coordinates on the calendar (0-based)
+        */
+        private void dateToCell(int date, Point pos)
+        {
+            int cell = (date + firstDayInMonth - firstDayOfWeek - minDay);
+            if (firstDayInMonth < firstDayOfWeek) {
+                cell += daysInWeek;
+            }
+
+            pos.x = cell % daysInWeek;
+            pos.y = cell / daysInWeek;
+        }
+        private Point dateToCell(int date) {
+            Point p = new Point(0,0);
+            dateToCell(date, p);
+            return p;
+        }
+
+        public void paint(Graphics g) {
+
+            if (dirty) {
+                calculate();
+            }
+
+            Point cellPos = new Point(0,0);     // Temporary variable
+            Dimension d = getSize();
+
+            g.setColor(DemoUtility.bgColor);
+            g.fillRect(0,0,d.width,d.height);
+
+            // Draw the day names at the top
+            g.setColor(Color.black);
+            g.setFont(DemoUtility.labelFont);
+            FontMetrics fm = g.getFontMetrics();
+            int labelHeight = fm.getHeight() + INSET * 2;
+
+            int v = fm.getAscent() + INSET;
+            for (int i = 0; i < daysInWeek; i++) {
+                int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1;
+                String dayName = fSymbols.getWeekdays()[dayNum];
+
+                int h = (int) (d.width * (i + 0.5)) / daysInWeek;
+                h -= fm.stringWidth(dayName) / 2;
+
+                g.drawString(dayName, h, v);
+            }
+
+            double cellHeight = (d.height - labelHeight - 1) / numWeeks;
+            double cellWidth = (double)(d.width - 1) / daysInWeek;
+
+            // Draw a white background in the part of the calendar
+            // that displays this month.
+            // First figure out how much of the first week should be shaded.
+            {
+                g.setColor(Color.white);
+                dateToCell(1, cellPos);
+                int width = (int)(cellPos.x*cellWidth);  // Width of unshaded area
+
+                g.fillRect((int)(width), labelHeight ,
+                        (int)(d.width - width), (int)cellHeight);
+
+                // All of the intermediate weeks get shaded completely
+                g.fillRect(0, (int)(labelHeight + cellHeight),
+                            d.width, (int)(cellHeight * (numWeeks - 2)));
+
+                // Now figure out the last week.
+                dateToCell(daysInMonth, cellPos);
+                width = (int)((cellPos.x+1)*cellWidth);  // Width of shaded area
+
+                g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                            width, (int)(cellHeight));
+
+            }
+            // Draw the X/Y grid lines
+            g.setColor(Color.black);
+            for (int i = 0; i <= numWeeks; i++) {
+                int y = (int)(labelHeight + i * cellHeight);
+                g.drawLine(0, y, d.width - 1, y);
+            }
+            for (int i = 0; i <= daysInWeek; i++) {
+                int x = (int)(i * cellWidth);
+                g.drawLine(x, labelHeight, x, d.height - 1);
+            }
+
+            // Now loop through all of the days in the month, figure out where
+            // they go in the grid, and draw the day # for each one
+            Font numberFont = new Font("Helvetica",Font.PLAIN,12);
+            // not used Font holidayFont = DemoUtility.creditFont;
+
+            Calendar c = (Calendar)fCalendar.clone();
+            c.setTime(fStartOfMonth);
+
+            for (int i = 1, h = 0; i <= daysInMonth; i++) {
+                g.setFont(numberFont);
+                g.setColor(Color.black);
+                fm = g.getFontMetrics();
+
+                dateToCell(i, cellPos);
+                int x = (int)((cellPos.x + 1) * cellWidth);
+                int y = (int)(cellPos.y * cellHeight + labelHeight);
+
+                StringBuffer buffer = new StringBuffer();
+                buffer.append(i);
+                String dayNum = buffer.toString();
+
+                x = x - INSET - fm.stringWidth(dayNum);
+                y = y + fm.getAscent() + INSET;
+
+                g.drawString(dayNum, x, y);
+
+                // See if any of the holidays land on this day....
+                HolidayInfo info = null;
+                int count = 0;
+
+                // Coordinates of lower-left corner of cell.
+                x = (int)((cellPos.x) * cellWidth);
+                y = (int)((cellPos.y+1) * cellHeight) + labelHeight;
+
+                while (h < fHolidays.size() &&
+                        (info = (HolidayInfo)fHolidays.elementAt(h)).date <= i)
+                {
+                    if (info.date == i) {
+                        // Draw the holiday here.
+                        g.setFont(numberFont);
+                        g.setColor(Color.red);
+
+                        DemoTextBox box = new DemoTextBox(g, info.name, (int)(cellWidth - INSET));
+                        box.draw(g, x + INSET, y - INSET - box.getHeight());
+
+                        y -= (box.getHeight() + INSET);
+                        count++;
+                    }
+                    h++;
+                }
+            }
+        }
+
+        // Important state variables
+        private Locale              fCalendarLocale;    // Whose calendar
+        private Calendar            fCalendar;          // Calendar for calculations
+
+        private Locale              fDisplayLocale;     // How to display it
+        private DateFormatSymbols   fSymbols;           // Symbols for drawing
+
+        private Date                fStartOfMonth;      // 00:00:00 on first day of month
+
+        // Cached calculations to make drawing faster.
+        private transient int minDay;           // Minimum legal day #
+        private transient int daysInWeek;       // # of days in a week
+        private transient int firstDayOfWeek;   // First day to display in week
+        private transient int numWeeks;         // # full or partial weeks in month
+        private transient int daysInMonth;      // # days in this month
+        private transient int firstDayInMonth;  // Day of week of first day in month
+
+        private transient Holiday[] fAllHolidays;
+        private transient Vector    fHolidays = new Vector(5,5);
+
+        private transient boolean dirty = true;
+    }
+
+    private static class HolidayInfo {
+        public HolidayInfo(int date, Holiday holiday, String name) {
+            this.date = date;
+            this.holiday = holiday;
+            this.name = name;
+        }
+
+        public Holiday holiday;
+        public int date;
+        public String name;
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/demo/holiday/package.html b/src/com/ibm/icu/dev/demo/holiday/package.html
new file mode 100644
index 0000000..d05e2f5
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/holiday/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Holiday demo application.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/impl/AppletFrame.java b/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
new file mode 100644
index 0000000..1f6ad3d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
@@ -0,0 +1,144 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.applet.*;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.awt.*;
+import java.awt.event.*;
+import java.io.InputStream;
+import java.io.IOException;
+
+/**
+ * <p>A Frame that runs an Applet within itself, making it possible
+ * for an applet to run as an application.  Usage:
+ *
+ * <pre>
+ * public class MyApplet extends Applet {
+ *     public static void main(String args[]) {
+ *         MyApplet applet = new MyApplet();
+ *         new AppletFrame("My Applet Running As An App", applet, 640, 480);
+ *     }
+ *     ...
+ * }
+ * <pre>
+ *
+ * @author Alan Liu
+ */
+public class AppletFrame extends Frame implements AppletStub, AppletContext {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 818828281190757725L;
+    Applet applet;
+
+    /**
+     * Construct a Frame running the given Applet with the default size
+     * of 640 by 480.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     */
+    public AppletFrame(String name, Applet applet) {
+        this(name, applet, 640, 480);
+    }
+
+    /**
+     * Construct a Frame running the given Applet with the given size.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     * @param width width of the Frame
+     * @param height height of the Frame
+     */
+    public AppletFrame(String name, Applet applet, int width, int height) {
+        super(name);
+        this.applet = applet;
+        applet.setStub(this);
+
+        setSize(width, height);
+        add("Center", applet);
+        show();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                AppletFrame.this.applet.stop();
+                dispose();
+                System.exit(0);
+            }
+        });
+
+        applet.init();
+        applet.start();
+    }
+
+    // AppletStub API
+    public void appletResize(int width, int height) {
+        setSize(width, height);
+    }
+
+    public AppletContext getAppletContext() {
+        return this;
+    }
+
+    public URL getCodeBase() {
+        return null;
+    }
+
+    public URL getDocumentBase() {
+        return null;
+    }
+    
+    public String getParameter(String name) {
+        return "PARAMETER";
+    }
+
+    public boolean isActive() {
+        return true;
+    }
+    
+    
+    // AppletContext API
+    public Applet getApplet(String name) {
+        return applet;
+    }
+
+    public Enumeration getApplets() {
+        return null;
+    }
+
+    public AudioClip getAudioClip(URL url) {
+        return null;
+    }
+
+    public Image getImage(URL url) {
+        return null;
+    }
+
+    public void showDocument(URL url) {}
+    public void showDocument(URL url, String target) {}
+
+    public void showStatus(String status) {
+        System.out.println(status);
+    }
+    
+    public void setStream(String key, InputStream stream) throws IOException {
+    }
+    
+    public InputStream getStream(String key) {
+        return null;
+    }
+    
+    public Iterator getStreamKeys() {
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoApplet.java b/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
new file mode 100644
index 0000000..554cf9e
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
@@ -0,0 +1,76 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.demo.impl;
+
+import java.awt.*;
+import java.awt.event.*;
+
+public abstract class DemoApplet extends java.applet.Applet {
+    private static final long serialVersionUID = -8983602961925702071L;
+    private Button   demoButton;
+    private Frame    demoFrame;
+    private static int demoFrameCount = 0;
+
+    protected abstract Frame createDemoFrame(DemoApplet applet);
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+        return new Dimension(700, 550);
+    }
+
+    //Create a button that will display the demo
+    public void init()
+    {
+        setBackground(Color.white);
+        demoButton = new Button("Demo");
+        demoButton.setBackground(Color.yellow);
+        add( demoButton );
+
+        demoButton.addActionListener( new ActionListener() {
+             public void actionPerformed(ActionEvent e) {
+                if (e.getID() == ActionEvent.ACTION_PERFORMED) {
+                    demoButton.setLabel("loading");
+
+                    if (demoFrame == null) {
+                       demoFrame = createDemoFrame(DemoApplet.this);
+                       showDemo();
+                    }
+
+                    demoButton.setLabel("Demo");
+                }
+             }
+        } );
+    }
+
+    public void showDemo()
+    {
+        demoFrame = createDemoFrame(this);
+        demoFrame.doLayout();
+        Dimension d = getDefaultFrameSize(this, demoFrame);
+        demoFrame.setSize(d.width, d.height);
+        demoFrame.show();
+        demoFrameOpened();
+    }
+
+    public void demoClosed()
+    {
+        demoFrame = null;
+        demoFrameClosed();
+    }
+
+    public static void demoFrameOpened() {
+        demoFrameCount++;
+        System.err.println("DemoFrameOpened, now at:"+demoFrameCount);
+    }
+    public static void demoFrameClosed() {
+        if (--demoFrameCount == 0) {
+            System.err.println("DemoFrameClosed, now at:"+demoFrameCount + " - quitting");
+            System.exit(0);
+        }
+        System.err.println("DemoFrameClosed, now at:"+demoFrameCount);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java b/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
new file mode 100644
index 0000000..bdd28ad
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
@@ -0,0 +1,95 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+
+
+import java.text.BreakIterator;
+import java.awt.*;
+
+public class DemoTextBox {
+
+    public DemoTextBox(Graphics g, String text, int width)
+    {
+        this.text = text;
+        this.chars = new char[text.length()];
+        text.getChars(0, text.length(), chars, 0);
+
+        this.width = width;
+//        this.port = g;
+        this.metrics = g.getFontMetrics();
+
+        breakText();
+    }
+
+    public  int getHeight() {
+        return (nbreaks + 1) * metrics.getHeight();
+    }
+
+    public  void draw(Graphics g, int x, int y)
+    {
+        int index = 0;
+
+        y += metrics.getAscent();
+
+        for (int i = 0; i < nbreaks; i++)
+        {
+            g.drawChars(chars, index, breakPos[i] - index, x, y);
+            index = breakPos[i];
+            y += metrics.getHeight();
+        }
+
+        g.drawChars(chars, index, chars.length - index, x, y);
+    }
+
+
+    private void breakText()
+    {
+        if (metrics.charsWidth(chars, 0, chars.length) > width)
+        {
+            BreakIterator iter = BreakIterator.getWordInstance();
+            iter.setText(text);
+
+            int start = iter.first();
+            int end = start;
+            int pos;
+
+            while ( (pos = iter.next()) != BreakIterator.DONE )
+            {
+                int w = metrics.charsWidth(chars, start, pos - start);
+                if (w > width)
+                {
+                    // We've gone past the maximum width, so break the line
+                    if (end > start) {
+                        // There was at least one break position before this point
+                        breakPos[nbreaks++] = end;
+                        start = end;
+                        end = pos;
+                    } else {
+                        // There weren't any break positions before this one, so
+                        // let this word overflow the margin (yuck)
+                        breakPos[nbreaks++] = pos;
+                        start = end = pos;
+                    }
+                } else {
+                    // the current position still fits on the line; it's the best
+                    // tentative break position we have so far.
+                    end = pos;
+                }
+
+            }
+        }
+    }
+
+    private String          text;
+    private char[]          chars;
+//    private Graphics        port;
+    private FontMetrics     metrics;
+    private int             width;
+
+    private int[]           breakPos = new int[10]; // TODO: get real
+    private int             nbreaks = 0;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/impl/DemoUtility.java b/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
new file mode 100644
index 0000000..5c5c3f4
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
@@ -0,0 +1,127 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+
+import java.awt.*;
+import java.util.*;
+
+public class DemoUtility
+{
+    public static final Font titleFont = new Font("TimesRoman",Font.BOLD,18);
+    public static final Font labelFont = new Font("TimesRoman",Font.BOLD,14);
+    public static final Font choiceFont = new Font("Helvetica",Font.BOLD,12);
+    public static final Font editFont = new Font("Helvetica",Font.PLAIN,14);
+    public static final Font creditFont = new Font("Helvetica",Font.PLAIN,10);
+    public static final Font numberFont = new Font("sansserif", Font.PLAIN, 14);
+
+    public static final Color bgColor = Color.lightGray;
+    public static final Color choiceColor = Color.white;
+
+    public static final String copyright1 =
+        "Copyright (C) IBM Corp and others. 1997 - 2002 All Rights Reserved";
+
+    /**
+    Provides easy way to use basic functions of GridBagLayout, without
+    the complications. After building a panel, and inserting all the
+    * subcomponents, call this to lay it out in the desired number of columns.
+    */
+    public static void fixGrid(Container cont, int columns) {
+        GridBagLayout gridbag = new GridBagLayout();
+        cont.setLayout(gridbag);
+
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.VERTICAL;
+        c.weightx = 1.0;
+        c.insets = new Insets(2,2,2,2);
+
+        Component[] components = cont.getComponents();
+        for (int i = 0; i < components.length; ++i) {
+            // not used int colNumber = i%columns;
+            c.gridwidth = 1;    // default
+            if ((i%columns) == columns - 1)
+                c.gridwidth = GridBagConstraints.REMAINDER;    // last in grid
+            if (components[i] instanceof Label) {
+                switch (((Label)components[i]).getAlignment()) {
+                case Label.CENTER: c.anchor = GridBagConstraints.CENTER; break;
+                case Label.LEFT: c.anchor = GridBagConstraints.WEST; break;
+                case Label.RIGHT: c.anchor = GridBagConstraints.EAST; break;
+                }
+            }
+            gridbag.setConstraints(components[i], c);
+        }
+
+    }
+
+    /**
+    Provides easy way to change the spacing around an object in a GridBagLayout.
+    Call AFTER fixGridBag, passing in the container, the component, and the
+    new insets.
+    */
+    public static void setInsets(Container cont, Component comp, Insets insets) {
+        GridBagLayout gbl = (GridBagLayout)cont.getLayout();
+        GridBagConstraints g = gbl.getConstraints(comp);
+        g.insets = insets;
+        gbl.setConstraints(comp,g);
+    }
+
+    public static Panel createSpacer() {
+        Panel spacer = new Panel();
+        spacer.setLayout(null);
+        spacer.setSize(1000, 1);
+        return spacer;
+    }
+
+    // to avoid goofy updates and misplaced cursors
+    public static void setText(TextComponent area, String newText) {
+        String foo = area.getText();
+        if (foo.equals(newText)) return;
+        area.setText(newText);
+    }
+    
+    /**
+     * Compares two locals. Return value is negative
+     * if they're different, and more positive the more
+     * fields that match.
+     */
+     
+    public static int compareLocales(Locale l1, Locale l2)
+    {
+        int result = -1;
+        
+        if (l1.getLanguage().equals(l2.getLanguage())) {
+            result += 1;
+            
+            if (l1.getCountry().equals(l2.getCountry())) {
+                result += 1;
+                
+                if (l1.getVariant().equals(l2.getVariant())) {
+                    result += 1;
+                }
+            }
+        }
+        
+        return result;
+    }
+    
+    /**
+     * Get the G7 locale list for demos.
+     */
+    public static Locale[] getG7Locales() {
+        return localeList;
+    }
+    private static Locale[] localeList = {
+        new Locale("DA", "DK", ""),
+        new Locale("EN", "US", ""),
+        new Locale("EN", "GB", ""),
+        new Locale("EN", "CA", ""),
+        new Locale("FR", "FR", ""),
+        new Locale("FR", "CA", ""),
+        new Locale("DE", "DE", ""),
+        new Locale("IT", "IT", ""),
+    //new Locale("JA", "JP", ""),
+    };
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java b/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
new file mode 100644
index 0000000..b854ff3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
@@ -0,0 +1,804 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.awt.*;
+import java.awt.event.*;
+import java.text.*;
+import java.awt.datatransfer.*;
+
+// LIU: Changed from final to non-final
+public class DumbTextComponent extends Canvas
+  implements KeyListener, MouseListener, MouseMotionListener, FocusListener
+{
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8265547730738652151L;
+
+//    private transient static final String copyright =
+//      "Copyright \u00A9 1998, Mark Davis. All Rights Reserved.";
+    private transient static boolean DEBUG = false;
+
+    private String contents = "";
+    private Selection selection = new Selection();
+    private int activeStart = -1;
+    private boolean editable = true;
+
+    private transient Selection tempSelection = new Selection();
+    private transient boolean focus;
+    private transient BreakIterator lineBreaker = BreakIterator.getLineInstance();
+    private transient BreakIterator wordBreaker = BreakIterator.getWordInstance();
+    private transient BreakIterator charBreaker = BreakIterator.getCharacterInstance();
+    private transient int lineAscent;
+    private transient int lineHeight;
+    private transient int lineLeading;
+    private transient int lastHeight = 10;
+    private transient int lastWidth = 50;
+    private static final int MAX_LINES = 200; // LIU: Use symbolic name
+    private transient int[] lineStarts = new int[MAX_LINES]; // LIU
+    private transient int lineCount = 1;
+
+    private transient boolean valid = false;
+    private transient FontMetrics fm;
+    private transient boolean redoLines = true;
+    private transient boolean doubleClick = false;
+    private transient TextListener textListener;
+    private transient ActionListener selectionListener;
+    private transient Image cacheImage;
+    private transient Dimension mySize;
+    private transient int xInset = 5;
+    private transient int yInset = 5;
+    private transient Point startPoint = new Point();
+    private transient Point endPoint = new Point();
+    private transient Point caretPoint = new Point();
+    private transient Point activePoint = new Point();
+    
+    //private transient static String clipBoard;
+
+    private static final char CR = '\015'; // LIU
+
+    // ============================================
+
+    public DumbTextComponent() {
+        addMouseListener(this);
+        addMouseMotionListener(this);
+        addKeyListener(this);
+        addFocusListener(this);
+        setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
+
+    }
+
+// ================ Events ====================
+
+    // public boolean isFocusTraversable() { return true; }
+
+    public void addActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.add(selectionListener, l);
+    }
+
+    public void removeActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.remove(selectionListener, l);
+    }
+
+    public void addTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.add(textListener, l);
+    }
+
+    public void removeTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.remove(textListener, l);
+    }
+
+    private transient boolean pressed;
+
+    public void mousePressed(MouseEvent e) {
+        if (DEBUG) System.out.println("mousePressed");
+        if (pressed) {
+            select(e,false);
+        } else {
+            doubleClick = e.getClickCount() > 1;
+            requestFocus();
+            select(e, true);
+            pressed = true;
+        }
+    }
+
+    public void mouseDragged(MouseEvent e) {
+        if (DEBUG) System.out.println("mouseDragged");
+        select(e, false);
+    }
+
+    public void mouseReleased(MouseEvent e) {
+        if (DEBUG) System.out.println("mouseReleased");
+        pressed = false;
+    }
+
+    public void mouseEntered(MouseEvent e) {
+        //if (pressed) select(e, false);
+    }
+
+    public void mouseExited(MouseEvent e){
+        //if (pressed) select(e, false);
+    }
+
+    public void mouseClicked(MouseEvent e) {}
+    public void mouseMoved(MouseEvent e) {}
+
+
+    public void focusGained(FocusEvent e) {
+        if (DEBUG) System.out.println("focusGained");
+        focus = true;
+        valid = false;
+        repaint(16);
+    }
+    public void focusLost(FocusEvent e) {
+        if (DEBUG) System.out.println("focusLost");
+        focus = false;
+        valid = false;
+        repaint(16);
+    }
+
+    public void select(MouseEvent e, boolean first) {
+        setKeyStart(-1);
+        point2Offset(e.getPoint(), tempSelection);
+        if (first) {
+            if ((e.getModifiers() & InputEvent.SHIFT_MASK) == 0) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+        }
+        // fix words
+        if (doubleClick) {
+            tempSelection.expand(wordBreaker);
+        }
+        select(tempSelection);
+    }
+    
+    public void keyPressed(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyPressed "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+        int start = selection.getStart();
+        int end = selection.getEnd();
+        boolean shift = (e.getModifiers() & InputEvent.SHIFT_MASK) != 0;
+        boolean ctrl = (e.getModifiers() & InputEvent.CTRL_MASK) != 0;
+                
+        switch (code) {
+        case KeyEvent.VK_Q:
+            if (!ctrl || !editable) break;
+            setKeyStart(-1);
+            fixHex();
+            break;
+        case KeyEvent.VK_V:
+            if (!ctrl) break;
+            if (!editable) {
+                this.getToolkit().beep();
+            } else {
+                paste();
+            }
+            break;
+        case KeyEvent.VK_C:
+            if (!ctrl) break;
+            copy();
+            break;
+        case KeyEvent.VK_X:
+            if (!ctrl) break;
+            if (!editable) {
+                this.getToolkit().beep();
+            } else {
+                copy();
+                insertText("");
+            }
+            break;
+        case KeyEvent.VK_A:
+            if (!ctrl) break;
+            setKeyStart(-1);
+            select(Integer.MAX_VALUE, 0, false);
+            break;
+        case KeyEvent.VK_RIGHT:
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, +1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_LEFT:
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, -1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_UP: // LIU: Add support for up arrow
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, -1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DOWN: // LIU: Add support for down arrow
+            setKeyStart(-1);
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, +1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DELETE: // LIU: Add delete key support
+            if (!editable) break;
+            setKeyStart(-1);
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep();
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;            
+        }
+    }
+
+    void copy() {
+        Clipboard cb = this.getToolkit().getSystemClipboard();
+        StringSelection ss = new StringSelection(
+            contents.substring(selection.getStart(), selection.getEnd()));
+        cb.setContents(ss, ss);
+    }
+    
+    void paste () {
+        Clipboard cb = this.getToolkit().getSystemClipboard();
+        Transferable t = cb.getContents(this);
+        if (t == null) {
+            this.getToolkit().beep();
+            return;
+        }
+        try {
+            String temp = (String) t.getTransferData(DataFlavor.stringFlavor);
+            insertText(temp);
+        } catch (Exception e) {
+            this.getToolkit().beep();
+        }            
+    }
+
+    /**
+     * LIU: Given an offset into contents, moves up or down by lines,
+     * according to lineStarts[].
+     * @param off the offset into contents
+     * @param delta how many lines to move up (< 0) or down (> 0)
+     * @return the new offset into contents
+     */
+    private int lineDelta(int off, int delta) {
+        int line = findLine(off, false);
+        int posInLine = off - lineStarts[line];
+        // System.out.println("off=" + off + " at " + line + ":" + posInLine);
+        line += delta;
+        if (line < 0) {
+            line = posInLine = 0;
+        } else if (line >= lineCount) {
+            return contents.length();
+        }
+        off = lineStarts[line] + posInLine;
+        if (off >= lineStarts[line+1]) {
+            off = lineStarts[line+1] - 1;
+        }
+        return off;
+    }
+      
+    public void keyReleased(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyReleased "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+    }
+
+    public void keyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+        if (DEBUG) System.out.println("keyTyped "
+          + hex((char)ch) + ", " + hex((char)e.getModifiers()));
+        if ((e.getModifiers() & InputEvent.CTRL_MASK) != 0) return;
+        int start, end;
+        switch (ch) {
+        case KeyEvent.CHAR_UNDEFINED:
+            break;
+        case KeyEvent.VK_BACK_SPACE:
+            //setKeyStart(-1);
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                --start;
+                if (start < 0) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;        
+        case KeyEvent.VK_DELETE:
+            //setKeyStart(-1);
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;
+        default:
+            if (!editable) break;
+            // LIU: Dispatch to subclass API
+            handleKeyTyped(e);
+            break;
+        }
+    }
+
+    // LIU: Subclass API for handling of key typing
+    protected void handleKeyTyped(KeyEvent e) {
+        insertText(String.valueOf(e.getKeyChar()));
+    }
+    
+    protected void setKeyStart(int keyStart) {
+        if (activeStart != keyStart) {
+            activeStart = keyStart;
+            repaint(10);
+        }
+    }
+    
+    protected void validateKeyStart() {
+        if (activeStart > selection.getStart()) {
+            activeStart = selection.getStart();
+            repaint(10);
+        }
+    }
+    
+    protected int getKeyStart() {
+        return activeStart;
+    }
+
+// ===================== Control ======================
+
+    public synchronized void setEditable(boolean b) {
+        editable = b;
+    }
+
+    public boolean isEditable() {
+        return editable;
+    }
+
+    public void select(Selection newSelection) {
+        newSelection.pin(contents);
+        if (!selection.equals(newSelection)) {
+            selection.set(newSelection);
+            if (selectionListener != null) {
+                selectionListener.actionPerformed(
+                  new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
+                    "Selection Changed", 0));
+            }
+            repaint(10);
+            valid = false;
+        }
+    }
+
+    public void select(int start, int end) {
+        select(start, end, false);
+    }
+
+    public void select(int start, int end, boolean clickAfter) {
+        tempSelection.set(start, end, clickAfter);
+        select(tempSelection);
+    }
+
+    public int getSelectionStart() {
+        return selection.getStart();
+    }
+
+    public int getSelectionEnd() {
+        return selection.getEnd();
+    }
+
+    public void setBounds(int x, int y, int w, int h) {
+        super.setBounds(x,y,w,h);
+        redoLines = true;
+    }
+
+    public Dimension getPreferredSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMaximumSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMinimumSize() {
+        return new Dimension(lastHeight,lastHeight);
+    }
+
+    public void setText(String text) {
+        setText2(text);
+        select(tempSelection.set(selection).pin(contents));
+    }
+
+    public void setText2(String text) {
+        contents = text;
+        charBreaker.setText(text);
+        wordBreaker.setText(text);
+        lineBreaker.setText(text);
+        redoLines = true;
+        if (textListener != null)
+            textListener.textValueChanged(
+              new TextEvent(this, TextEvent.TEXT_VALUE_CHANGED));
+        repaint(16);
+    }
+
+    public void insertText(String text) {
+        if (activeStart == -1) activeStart = selection.getStart();
+        replaceRange(text, selection.getStart(), selection.getEnd());
+    }
+
+    public void replaceRange(String s, int start, int end) {
+        setText2(contents.substring(0,start) + s
+          + contents.substring(end));
+        select(tempSelection.set(selection).
+          fixAfterReplace(start, end, s.length()));
+        validateKeyStart();
+    }
+
+    public String getText() {
+        return contents;
+    }
+
+    public void setFont(Font font) {
+        super.setFont(font);
+        redoLines = true;
+        repaint(16);
+    }
+
+    // ================== Graphics ======================
+
+    public void update(Graphics g) {
+        if (DEBUG) System.out.println("update");
+        paint(g);
+    }
+
+    public void paint(Graphics g) {
+        mySize = getSize();
+        if (cacheImage == null
+          || cacheImage.getHeight(this) != mySize.height
+          || cacheImage.getWidth(this) != mySize.width) {
+            cacheImage = createImage(mySize.width, mySize.height);
+            valid = false;
+        }
+        if (!valid || redoLines) {
+            if (DEBUG) System.out.println("painting");
+            paint2(cacheImage.getGraphics());
+            valid = true;
+        }
+        //getToolkit().sync();
+        if (DEBUG) System.out.println("copying");
+        g.drawImage(cacheImage,
+          0, 0, mySize.width, mySize.height,
+          0, 0, mySize.width, mySize.height,
+          this);
+    }
+
+    public void paint2(Graphics g) {
+        g.clearRect(0, 0, mySize.width, mySize.height);
+        if (DEBUG) System.out.println("print");
+        if (focus) g.setColor(Color.black);
+        else g.setColor(Color.gray);
+        g.drawRect(0,0,mySize.width-1,mySize.height-1);
+        g.setClip(1,1,
+          mySize.width-2,mySize.height-2);
+        g.setColor(Color.black);
+        g.setFont(getFont());
+        fm = g.getFontMetrics();
+        lineAscent = fm.getAscent();
+        lineLeading = fm.getLeading();
+        lineHeight = lineAscent + fm.getDescent() + lineLeading;
+        int y = yInset + lineAscent;
+        String lastSubstring = "";
+        if (redoLines) fixLineStarts(mySize.width-xInset-xInset);
+        for (int i = 0; i < lineCount; y += lineHeight, ++i) {
+            // LIU: Don't display terminating ^M characters
+            int lim = lineStarts[i+1];
+            if (lim > 0 && contents.length() > 0 &&
+                contents.charAt(lim-1) == CR) --lim;
+            lastSubstring = contents.substring(lineStarts[i],lim);
+            g.drawString(lastSubstring, xInset, y);
+        }
+        drawSelection(g, lastSubstring);
+        lastHeight = y + yInset - lineHeight + yInset;
+        lastWidth = mySize.width-xInset-xInset;
+    }
+
+    void paintRect(Graphics g, int x, int y, int w, int h) {
+        if (focus) {
+            g.fillRect(x, y, w, h);
+        } else {
+            g.drawRect(x, y, w-1, h-1);
+        }
+    }
+
+    public void drawSelection(Graphics g, String lastSubstring) {
+        g.setXORMode(Color.black);
+        if (activeStart != -1) {
+            offset2Point(activeStart, false, activePoint);
+            g.setColor(Color.magenta);
+            int line = activePoint.x - 1;
+            g.fillRect(line, activePoint.y, 1, lineHeight);
+        }
+        if (selection.isCaret()) {
+            offset2Point(selection.caret, selection.clickAfter, caretPoint);
+        } else {
+            if (focus) g.setColor(Color.blue);
+            else g.setColor(Color.yellow);
+            offset2Point(selection.getStart(), true, startPoint);
+            offset2Point(selection.getEnd(), false, endPoint);
+            if (selection.getStart() == selection.caret)
+                caretPoint.setLocation(startPoint);
+            else caretPoint.setLocation(endPoint);
+            if (startPoint.y == endPoint.y) {
+                paintRect(g, startPoint.x, startPoint.y,
+                  Math.max(1,endPoint.x-startPoint.x), lineHeight);
+            } else {
+                paintRect(g, startPoint.x, startPoint.y,
+                  (mySize.width-xInset)-startPoint.x, lineHeight);
+                if (startPoint.y + lineHeight < endPoint.y)
+                  paintRect(g, xInset, startPoint.y + lineHeight,
+                  (mySize.width-xInset)-xInset, endPoint.y - startPoint.y - lineHeight);
+                paintRect(g, xInset, endPoint.y, endPoint.x-xInset, lineHeight);
+            }
+        }
+        if (focus || selection.isCaret()) {
+            if (focus) g.setColor(Color.green);
+            else g.setColor(Color.red);
+            int line = caretPoint.x - (selection.clickAfter ? 0 : 1);
+            g.fillRect(line, caretPoint.y, 1, lineHeight);
+            int w = lineHeight/12 + 1;
+            int braces = line - (selection.clickAfter ? -1 : w);
+            g.fillRect(braces, caretPoint.y, w, 1);
+            g.fillRect(braces, caretPoint.y + lineHeight - 1, w, 1);
+        }
+    }
+
+    public Point offset2Point(int off, boolean start, Point p) {
+        int line = findLine(off, start);
+        int width = 0;
+        try {
+            width = fm.stringWidth(
+              contents.substring(lineStarts[line], off));
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+        p.x = width + xInset;
+        if (p.x > mySize.width - xInset)
+            p.x = mySize.width - xInset;
+        p.y = lineHeight * line + yInset;
+        return p;
+    }
+
+    private int findLine(int off, boolean start) {
+        // if it is start, then go to the next line!
+        if (start) ++off;
+        for (int i = 1; i < lineCount; ++i) {
+            // LIU: This was <= ; changed to < to make caret after
+            // final CR in line appear at START of next line.
+            if (off < lineStarts[i]) return i-1;
+        }
+        // LIU: Check for special case; after CR at end of the last line
+        if (off == lineStarts[lineCount] &&
+            off > 0 && contents.length() > 0 && contents.charAt(off-1) == CR) {
+            return lineCount;
+        }
+        return lineCount-1;
+    }
+
+    // offsets on any line will go from start,true to end,false
+    // excluding start,false and end,true
+    public Selection point2Offset(Point p, Selection o) {
+        if (p.y < yInset) {
+            o.caret = 0;
+            o.clickAfter = true;
+            return o;
+        }
+        int line = (p.y - yInset)/lineHeight;
+        if (line >= lineCount) {
+            o.caret = contents.length();
+            o.clickAfter = false;
+            return o;
+        }
+        int target = p.x - xInset;
+        if (target <= 0) {
+            o.caret = lineStarts[line];
+            o.clickAfter = true;
+            return o;
+        }
+        int lowGuess = lineStarts[line];
+        int lowWidth = 0;
+        int highGuess = lineStarts[line+1];
+        int highWidth = fm.stringWidth(contents.substring(lineStarts[line],highGuess));
+        if (target >= highWidth) {
+            o.caret = lineStarts[line+1];
+            o.clickAfter = false;
+            return o;
+        }
+        while (lowGuess < highGuess - 1) {
+            int guess = (lowGuess + highGuess)/2;
+            int width = fm.stringWidth(contents.substring(lineStarts[line],guess));
+            if (width <= target) {
+                lowGuess = guess;
+                lowWidth = width;
+                if (width == target) break;
+            } else {
+                highGuess = guess;
+                highWidth = width;
+            }
+        }
+        // at end, either lowWidth < target < width(low+1), or lowWidth = target
+        int highBound = charBreaker.following(lowGuess);
+        int lowBound = charBreaker.previous();
+        // we are now at character boundaries
+        if (lowBound != lowGuess)
+            lowWidth = fm.stringWidth(contents.substring(lineStarts[line],lowBound));
+        if (highBound != highGuess)
+            highWidth = fm.stringWidth(contents.substring(lineStarts[line],highBound));
+        // we now have the right widths
+        if (target - lowWidth < highWidth - target) {
+            o.caret = lowBound;
+            o.clickAfter = true;
+        } else {
+            o.caret = highBound;
+            o.clickAfter = false;
+        }
+        // we now have the closest!
+        return o;
+    }
+
+    private void fixLineStarts(int width) {
+        lineCount = 1;
+        lineStarts[0] = 0;
+        if (contents.length() == 0) {
+            lineStarts[1] = 0;
+            return;
+        }
+        int end = 0;
+        // LIU: Add check for MAX_LINES
+        for (int start = 0; start < contents.length() && lineCount < MAX_LINES;
+             start = end) {
+            end = nextLine(fm, start, width);
+            lineStarts[lineCount++] = end;
+            if (end == start) { // LIU: Assertion
+                throw new RuntimeException("nextLine broken");
+            }
+        }
+        --lineCount;
+        redoLines = false;
+    }
+
+    // LIU: Enhanced to wrap long lines.  Bug with return of start fixed.
+    public int nextLine(FontMetrics fMtr, int start, int width) {
+        int len = contents.length();
+        for (int i = start; i < len; ++i) {
+            // check for line separator
+            char ch = (contents.charAt(i));
+            if (ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029) {
+                len = i + 1;
+                if (ch == 0x000D && i+1 < len && contents.charAt(i+1) == 0x000A) // crlf
+                    ++len; // grab extra char
+                break;
+            }
+        }
+        String subject = contents.substring(start,len);
+        if (visibleWidth(fMtr, subject) <= width)
+          return len;
+
+        // LIU: Remainder of this method rewritten to accomodate lines
+        // longer than the component width by first trying to break
+        // into lines; then words; finally chars.
+        int n = findFittingBreak(fMtr, subject, width, lineBreaker);
+        if (n == 0) {
+            n = findFittingBreak(fMtr, subject, width, wordBreaker);
+        }
+        if (n == 0) {
+            n = findFittingBreak(fMtr, subject, width, charBreaker);
+        }
+        return n > 0 ? start + n : len;
+    }
+
+    /**
+     * LIU: Finds the longest substring that fits a given width
+     * composed of subunits returned by a BreakIterator.  If the smallest
+     * subunit is too long, returns 0.
+     * @param fMtr metrics to use
+     * @param line the string to be fix into width
+     * @param width line.substring(0, result) must be <= width
+     * @param breaker the BreakIterator that will be used to find subunits
+     * @return maximum characters, at boundaries returned by breaker,
+     * that fit into width, or zero on failure
+     */
+    private int findFittingBreak(FontMetrics fMtr, String line, int width,
+                                 BreakIterator breaker) {
+        breaker.setText(line);
+        int last = breaker.first();
+        int end = breaker.next();
+        while (end != BreakIterator.DONE &&
+               visibleWidth(fMtr, line.substring(0, end)) <= width) {
+            last = end;
+            end = breaker.next();
+        }
+        return last;
+    }
+
+    public int visibleWidth(FontMetrics fMtr, String s) {
+        int i;
+        for (i = s.length()-1; i >= 0; --i) {
+            char ch = s.charAt(i);
+            if (!(ch == ' ' || ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029))
+                return fMtr.stringWidth(s.substring(0,i+1));
+        }
+        return 0;
+    }
+
+// =============== Utility ====================
+
+    private void fixHex() {
+        if (selection.getEnd() == 0) return;
+        int store = 0;
+        int places = 1;
+        int count = 0;
+        int min = Math.min(8,selection.getEnd());
+        for (int i = 0; i < min; ++i) {
+            char ch = contents.charAt(selection.getEnd()-1-i);
+            int value = Character.getNumericValue(ch);
+            if (value < 0 || value > 15) break;
+            store += places * value;
+            ++count;
+            places *= 16;
+        }
+        String add = "";
+        int bottom = store & 0xFFFF;
+        if (store >= 0xD8000000 && store < 0xDC000000
+          && bottom >= 0xDC00 && bottom < 0xE000) { // surrogates
+            add = "" + (char)(store >> 16) + (char)bottom;
+        } else if (store > 0xFFFF && store <= 0x10FFFF) {
+            store -= 0x10000;
+            add = "" + (char)(((store >> 10) & 0x3FF) + 0xD800)
+              + (char)((store & 0x3FF) + 0xDC00);
+              
+        } else if (count >= 4) {
+            count = 4;
+            add = ""+(char)(store & 0xFFFF);
+        } else {
+            count = 1;
+            char ch = contents.charAt(selection.getEnd()-1);
+            add = hex(ch);
+            if (ch >= 0xDC00 && ch <= 0xDFFF && selection.getEnd() > 1) {
+                ch = contents.charAt(selection.getEnd()-2);
+                if (ch >= 0xD800 && ch <= 0xDBFF) {
+                    count = 2;
+                    add = hex(ch) + add;
+                }
+            }
+        }
+        replaceRange(add, selection.getEnd()-count, selection.getEnd());
+    }
+
+    public static String hex(char ch) {
+        String result = Integer.toString(ch,16).toUpperCase();
+        result = "0000".substring(result.length(),4) + result;
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/impl/Selection.java b/src/com/ibm/icu/dev/demo/impl/Selection.java
new file mode 100644
index 0000000..7f80a4d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/Selection.java
@@ -0,0 +1,161 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.impl;
+import java.text.*;
+
+public final class Selection {
+
+    public int anchor;
+    public int caret;
+    public boolean clickAfter;
+
+    public int getStart() {
+        return anchor < caret ? anchor : caret;
+    }
+
+    public int getEnd() {
+        return anchor > caret ? anchor : caret;
+    }
+
+    public boolean isCaret() {
+        return anchor == caret;
+    }
+
+    public Selection set(Selection other) {
+        anchor = other.anchor;
+        caret = other.caret;
+        clickAfter = other.clickAfter;
+        return this;
+    }
+
+    public Selection set(int anchor, int caret, boolean clickAfter) {
+        this.anchor = anchor;
+        this.caret = caret;
+        this.clickAfter = clickAfter;
+        return this;
+    }
+
+    public boolean equals(Object other) {
+        Selection other2 = (Selection)other;
+        return anchor == other2.anchor
+          && caret == other2.caret
+          && clickAfter == other2.clickAfter;
+    }
+
+    public boolean isLessThan(Selection other) {
+        return getStart() < other.getEnd();
+    }
+
+    public Selection pin(String text) {
+        if (anchor > text.length()) {
+            anchor = text.length();
+        } else if (anchor < 0) {
+            anchor = 0;
+        }
+        if (caret > text.length()) {
+            caret = text.length();
+            clickAfter = true;
+        } else if (caret < 0) {
+            caret = 0;
+            clickAfter = false;
+        }
+        return this;
+    }
+
+    public Selection swap(Selection after) {
+        int temp = anchor;
+        anchor = after.anchor;
+        after.anchor = temp;
+        temp = caret;
+        caret = after.caret;
+        after.caret = temp;
+        boolean b = clickAfter;
+        clickAfter = after.clickAfter;
+        after.clickAfter = b;
+        return this;
+    }
+
+    public Selection fixAfterReplace(int start, int end, int len) {
+        if (anchor >= start) {
+            if (anchor < end) anchor = end;
+            anchor = start + len + anchor - end;
+        }
+        if (caret >= start) {
+            if (caret < end) caret = end;
+            caret = start + len + caret - end;
+        }
+        return this;
+    }
+
+        // Mac & Windows considerably different
+        // Mac: end++. If start!=end, start=end
+        //  SHIFT: move end right
+        //  CTL: no different
+        // Windows:
+        //  UNSHIFTED: if start!=end, start = end, else start=end=end+1;
+        //       anchor = tip = start
+        //  SHIFT: tip++
+        //  CTL: if start!=end, start = end = nextbound(end-1),
+        //   else start=end=nextbound(end)
+        //       anchor = tip = start
+        //  CTL/SHIFT: tip = nextbound(tip)
+
+    public Selection nextBound(BreakIterator breaker,
+      int direction, boolean extend) {
+        if (!extend && anchor != caret) caret -= direction;
+        caret = next(caret, breaker, direction, true);
+        if (!extend) anchor = caret;
+        clickAfter = false;
+        return this;
+    }
+
+    // expand start and end to word breaks--if they are not already on one
+    public void expand(BreakIterator breaker) {
+        if (anchor <= caret) {
+            anchor = next(anchor,breaker,-1,false);
+            caret = next(caret,breaker,1,false);
+            /*
+            try {
+                breaker.following(anchor);
+                anchor = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                caret = breaker.following(caret-1);
+            } catch (Exception e) {}
+            */
+        } else {
+            anchor = next(anchor,breaker,1,false);
+            caret = next(caret,breaker,-1,false);
+            /*
+            try {
+                breaker.following(caret);
+                caret = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                anchor = breaker.following(anchor-1);
+            } catch (Exception e) {}
+            */
+        }
+    }
+
+    // different = false - move to next boundary, unless on one
+    // true - move to next boundary, even if on one
+    public static int next(int position, BreakIterator breaker,
+      int direction, boolean different) {
+        if (!different) position -= direction;
+        try {
+            if (direction > 0) {
+                position = breaker.following(position);
+            } else {
+                breaker.following(position-1);
+                position = breaker.previous();
+            }
+        } catch (Exception e) {}
+        return position;
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/demo/impl/package.html b/src/com/ibm/icu/dev/demo/impl/package.html
new file mode 100644
index 0000000..a7e8d35
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/impl/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Shared utilities for demo applications and Applets.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java b/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java
new file mode 100644
index 0000000..4912a06
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java
@@ -0,0 +1,113 @@
+/*
+**********************************************************************
+* Copyright (c) 2003, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+* Created: May 22 2003
+* Since: ICU 2.6
+**********************************************************************
+*/
+package com.ibm.icu.dev.demo.number;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.impl.Utility;
+import java.util.Locale;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * Demonstration code to illustrate how to obtain ICU 2.6-like currency
+ * behavior using pre-ICU 2.6 ICU4J.
+ * @author Mark Davis
+ */
+public class CurrencyDemo {
+
+    public static void main(String[] args) {
+        testFormatHack(true);
+    }
+
+    static NumberFormat getCurrencyFormat(Currency currency,
+                                          Locale displayLocale,
+                                          boolean ICU26) {
+        // code for ICU 2.6
+        if (ICU26) {
+            NumberFormat result = NumberFormat.getCurrencyInstance(displayLocale);
+            result.setCurrency(currency);
+            return result;
+        }
+
+        // ugly work-around for 2.4
+        DecimalFormat result = (DecimalFormat)NumberFormat.getCurrencyInstance(displayLocale);
+        HackCurrencyInfo hack = (HackCurrencyInfo)(hackData.get(currency.getCurrencyCode()));
+        result.setMinimumFractionDigits(hack.decimals);
+        result.setMaximumFractionDigits(hack.decimals);
+        result.setRoundingIncrement(hack.rounding);
+        DecimalFormatSymbols symbols = result.getDecimalFormatSymbols();
+        symbols.setCurrencySymbol(hack.symbol);
+        result.setDecimalFormatSymbols(symbols);
+        return result;
+    }
+        
+    static Map hackData = new HashMap();
+    static class HackCurrencyInfo {
+        int decimals;
+        double rounding;
+        String symbol;
+        HackCurrencyInfo(int decimals, double rounding, String symbol) {
+            this.decimals = decimals;
+            this.rounding = rounding;
+            this.symbol = symbol;
+        }
+    }
+    static {
+        hackData.put("USD", new HackCurrencyInfo(2, 0, "$"));
+        hackData.put("GBP", new HackCurrencyInfo(2, 0, "\u00A3"));
+        hackData.put("JPY", new HackCurrencyInfo(0, 0, "\u00A5"));
+        hackData.put("EUR", new HackCurrencyInfo(2, 0, "\u20AC"));
+    }
+
+    /**
+     * Walk through all locales and compare the output of the ICU26
+     * currency format with the "hacked" currency format.
+     * @param quiet if true, only display discrepancies.  Otherwise,
+     * display all results.
+     */
+    static void testFormatHack(boolean quiet) {
+        String[] testCurrencies = {"USD","GBP","JPY","EUR"};
+        Locale[] testLocales = NumberFormat.getAvailableLocales();
+        for (int i = 0; i < testLocales.length; ++i) {
+            // since none of this should vary by country, we'll just do by language
+            if (!testLocales[i].getCountry().equals("")) continue;
+            boolean noOutput = true;
+            if (!quiet) {
+                System.out.println(testLocales[i].getDisplayName());
+                noOutput = false;
+            }
+            for (int j = 0; j < testCurrencies.length; ++j) {
+                NumberFormat nf26 = getCurrencyFormat(Currency.getInstance(testCurrencies[j]), testLocales[i], true);
+                String str26 = nf26.format(1234.567);
+                if (!quiet) {
+                    System.out.print("\t" + Utility.escape(str26));
+                }
+                NumberFormat nf24 = getCurrencyFormat(Currency.getInstance(testCurrencies[j]), testLocales[i], false);
+                String str24 = nf24.format(1234.567);
+                if (!str24.equals(str26)) {
+                    if (noOutput) {
+                        System.out.println(testLocales[i].getDisplayName());
+                        noOutput = false;
+                    }
+                    if (quiet) {
+                        System.out.print("\t" + Utility.escape(str26));
+                    }
+                    System.out.print(" (" + Utility.escape(str24) + ")");
+                }
+            }
+            if (!noOutput) {
+                System.out.println();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java b/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
new file mode 100644
index 0000000..1b67c06
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
@@ -0,0 +1,550 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbnf;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.text.DecimalFormat;
+import java.text.BreakIterator;
+import java.text.ParsePosition;
+import java.util.Locale;
+import com.ibm.icu.dev.demo.impl.*;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+
+public class RbnfDemo extends DemoApplet {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -9119861296873763536L;
+
+    /**
+     * Puts a copyright in the .class file
+     */
+//    private static final String copyrightNotice
+//        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    /*
+     * code to run the demo as an application
+     */
+    public static void main(String[] argv) {
+        new RbnfDemo().showDemo();
+    }
+
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+        return new Dimension(430,270);
+    }
+
+    protected Frame createDemoFrame(DemoApplet applet) {
+        final Frame window = new Frame("Number Spellout Demo");
+        window.setSize(800, 600);
+        window.setLayout(new BorderLayout());
+
+        Panel mainPanel = new Panel();
+        mainPanel.setLayout(new GridLayout(1,2));
+
+        commentaryField = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        commentaryField.setSize(800, 50);
+        commentaryField.setText(RbnfSampleRuleSets.sampleRuleSetCommentary[0]);
+        commentaryField.setEditable(false);
+        commentaryField.setFont(new Font("Helvetica", Font.PLAIN, 14));
+
+        spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.usEnglish, Locale.US);
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+        numberFormatter = new DecimalFormat("#,##0.##########");
+        parsePosition = new ParsePosition(0);
+        theNumber = 0;
+
+        numberField = new TextField();
+        numberField.setFont(new Font("Serif", Font.PLAIN, 24));
+        textField = new DemoTextFieldHolder();
+        textField.setFont(new Font("Serif", Font.PLAIN, 24));
+        rulesField = new DemoTextFieldHolder();
+        rulesField.setFont(new Font("Serif", Font.PLAIN, 14));
+        lenientParseButton = new Checkbox("Lenient parse", lenientParse);
+
+        numberField.addTextListener(new TextListener() {
+            public void textValueChanged(TextEvent e) {
+                if (!numberFieldHasFocus)
+                    return;
+
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                parsePosition.setIndex(0);
+                Number temp = numberFormatter.parse(fieldText, parsePosition);
+                if (temp == null || parsePosition.getIndex() == 0) {
+                    theNumber = 0;
+                    textField.setText("PARSE ERROR");
+                }
+                else {
+                    theNumber = temp.doubleValue();
+                    textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+                }
+            }
+        } );
+
+        numberField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                numberFieldHasFocus = false;
+                numberField.setText(numberFormatter.format(theNumber));
+            }
+
+            public void focusGained(FocusEvent e) {
+                numberFieldHasFocus = true;
+                numberField.selectAll();
+            }
+        } );
+
+        textField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() == '\t') {
+                    String fieldText = ((TextComponent)(e.getSource())).getText();
+                    parsePosition.setIndex(0);
+                    theNumber = spelloutFormatter.parse(fieldText, parsePosition)
+                                        .doubleValue();
+                    if (parsePosition.getIndex() == 0) {
+                        theNumber = 0;
+                        numberField.setText("PARSE ERROR");
+                        textField.selectAll();
+                    }
+                    else if (parsePosition.getIndex() < fieldText.length()) {
+                        textField.select(parsePosition.getIndex(), fieldText.length());
+                        numberField.setText(numberFormatter.format(theNumber));
+                    }
+                    else {
+                        textField.selectAll();
+                        numberField.setText(numberFormatter.format(theNumber));
+                    }
+                    e.consume();
+                }
+            }
+        } );
+
+        textField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                parsePosition.setIndex(0);
+                theNumber = spelloutFormatter.parse(fieldText, parsePosition)
+                                .doubleValue();
+                if (parsePosition.getIndex() == 0)
+                    numberField.setText("PARSE ERROR");
+                else
+                    numberField.setText(numberFormatter.format(theNumber));
+                textField.setText(textField.getText()); // textField.repaint() didn't work right
+            }
+
+            public void focusGained(FocusEvent e) {
+                textField.selectAll();
+            }
+        } );
+
+        rulesField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() == '\t') {
+                    String fieldText = ((TextComponent)(e.getSource())).getText();
+                    if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
+                                    RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()])) {
+                        try {
+                            RuleBasedNumberFormat temp = new RuleBasedNumberFormat(fieldText);
+                            temp.setLenientParseMode(lenientParse);
+                            populateRuleSetMenu();
+                            spelloutFormatter = temp;
+                            customRuleSet = fieldText;
+                            formatterMenu.select("Custom");
+                            commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[RbnfSampleRuleSets.
+                                sampleRuleSetCommentary.length - 1]);
+                            redisplay();
+                        }
+                        catch (Exception x) {
+                            textField.setText(x.toString());
+                        }
+                    }
+                    e.consume();
+                }
+            }
+        } );
+
+        rulesField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
+                                RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()])) {
+                    try {
+                        RuleBasedNumberFormat temp = new RuleBasedNumberFormat(fieldText);
+                        temp.setLenientParseMode(lenientParse);
+                        populateRuleSetMenu();
+                        spelloutFormatter = temp;
+                        customRuleSet = fieldText;
+                        formatterMenu.select("Custom");
+                        redisplay();
+                    }
+                    catch (Exception x) {
+                        textField.setText(x.toString());
+                    }
+                }
+                rulesField.setText(rulesField.getText()); // rulesField.repaint() didn't work right
+            }
+        } );
+
+        lenientParseButton.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                lenientParse = lenientParseButton.getState();
+                spelloutFormatter.setLenientParseMode(lenientParse);
+            }
+        } );
+
+        numberField.setText(numberFormatter.format(theNumber));
+        numberField.selectAll();
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+
+        Panel leftPanel = new Panel();
+        leftPanel.setLayout(new BorderLayout());
+        Panel panel = new Panel();
+        panel.setLayout(new BorderLayout());
+        Panel panel1 = new Panel();
+        panel1.setLayout(new GridLayout(3, 1));
+        panel1.add(new Panel());
+        panel1.add(numberField, "Center");
+        panel1.add(lenientParseButton);
+        panel.add(panel1, "Center");
+        Panel panel2 = new Panel();
+        panel2.setLayout(new GridLayout(3, 3));
+        Button button = new Button("+100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("+10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("+1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(1);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("<");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber *= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        panel2.add(new Panel());
+        button = new Button(">");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber /= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-1);
+            }
+        } );
+        panel2.add(button);
+        panel.add(panel2, "East");
+        leftPanel.add(panel, "North");
+        leftPanel.add(textField, "Center");
+
+        Panel rightPanel = new Panel();
+        rightPanel.setLayout(new BorderLayout());
+        formatterMenu = new Choice();
+        for (int i = 0; i < RbnfSampleRuleSets.sampleRuleSetNames.length; i++)
+            formatterMenu.addItem(RbnfSampleRuleSets.sampleRuleSetNames[i]);
+        formatterMenu.addItem("Custom");
+        formatterMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                Choice source = (Choice)(e.getSource());
+                int item = source.getSelectedIndex();
+                Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+
+                commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[item]);
+
+                if (locale != null && (locale.getLanguage().equals("iw")
+                        || locale.getLanguage().equals("ru") || locale.getLanguage().equals("ja")
+                        || locale.getLanguage().equals("el")
+                        || locale.getLanguage().equals("zh"))) {
+                    textField.togglePanes(false);
+                    rulesField.togglePanes(false);
+                }
+                else {
+                    textField.togglePanes(true);
+                    rulesField.togglePanes(true);
+                }
+
+                makeNewSpelloutFormatter();
+                redisplay();
+            }
+        } );
+
+        ruleSetMenu = new Choice();
+        populateRuleSetMenu();
+
+        ruleSetMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                ruleSetName = ruleSetMenu.getSelectedItem();
+                redisplay();
+            }
+        } );
+
+        Panel menuPanel = new Panel();
+        menuPanel.setLayout(new GridLayout(1, 2));
+        menuPanel.add(formatterMenu);
+        menuPanel.add(ruleSetMenu);
+        rightPanel.add(menuPanel, "North");
+
+        rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()]);
+        rightPanel.add(rulesField, "Center");
+
+        mainPanel.add(leftPanel);
+        mainPanel.add(rightPanel);
+
+        window.add(mainPanel, "Center");
+        window.add(commentaryField, "South");
+
+        window.doLayout();
+        window.show();
+        final DemoApplet theApplet = applet;
+        window.addWindowListener(
+                new WindowAdapter() {
+                    public void windowClosing(WindowEvent e) {
+                        setVisible(false);
+                        window.dispose();
+
+                        if (theApplet != null) {
+                            theApplet.demoClosed();
+                        } else System.exit(0);
+                    }
+                } );
+        return window;
+    }
+
+    void roll(int delta) {
+        theNumber += delta;
+        redisplay();
+    }
+
+    void redisplay() {
+        numberField.setText(numberFormatter.format(theNumber));
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+    }
+
+    void makeNewSpelloutFormatter() {
+        int item = formatterMenu.getSelectedIndex();
+        String formatterMenuItem = formatterMenu.getSelectedItem();
+
+        if (formatterMenuItem.equals("Custom")) {
+            rulesField.setText(customRuleSet);
+            spelloutFormatter = new RuleBasedNumberFormat(customRuleSet);
+        }
+        else {
+            rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[item]);
+
+            Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.
+                            sampleRuleSets[item], locale);
+        }
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+    }
+
+    void populateRuleSetMenu() {
+        String[] ruleSetNames = spelloutFormatter.getRuleSetNames();
+
+        if (ruleSetMenu != null) {
+            ruleSetMenu.removeAll();
+            for (int i = 0; i < ruleSetNames.length; i++)
+                ruleSetMenu.addItem(ruleSetNames[i]);
+
+            ruleSetName = ruleSetMenu.getSelectedItem();
+        }
+        else
+            ruleSetName = ruleSetNames[0];
+    }
+
+//    private Frame demoWindow = null;
+
+    private TextComponent numberField;
+    private DemoTextFieldHolder textField;
+    private DemoTextFieldHolder rulesField;
+    private TextComponent commentaryField;
+    private Checkbox lenientParseButton;
+
+    private boolean numberFieldHasFocus = true;
+
+    private RuleBasedNumberFormat spelloutFormatter;
+    private DecimalFormat numberFormatter;
+    private ParsePosition parsePosition;
+
+    private boolean lenientParse = true;
+
+    private double theNumber = 0;
+//    private boolean canEdit = true;
+
+    private Choice formatterMenu;
+    private Choice ruleSetMenu;
+    private String ruleSetName;
+
+    private String customRuleSet = "NO RULES!";
+}
+
+class DemoTextField extends Component {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -7947090021239472658L;
+    public DemoTextField() {
+    }
+
+    public void setText(String text) {
+        this.text = text;
+        this.repaint();
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void paint(Graphics g) {
+        Font font = getFont();
+        FontMetrics fm = g.getFontMetrics();
+        g.setFont(font);
+        String txt = getText();
+        BreakIterator bi = BreakIterator.getLineInstance();
+        bi.setText(txt);
+        int lineHeight = fm.getHeight();
+        int width = getSize().width;
+        int penY = fm.getAscent();
+        int lineStart = 0;
+        int tempLineEnd = bi.first();
+        int lineEnd = 0;
+        int maxLineEnd = 0;
+        totalHeight = 0;
+
+        while (lineStart < txt.length()) {
+            maxLineEnd = txt.indexOf('\n', lineStart);
+            if (maxLineEnd == -1)
+                maxLineEnd = Integer.MAX_VALUE;
+            while (tempLineEnd != BreakIterator.DONE && fm.stringWidth(txt.substring(
+                            lineStart, tempLineEnd)) < width) {
+                lineEnd = tempLineEnd;
+                tempLineEnd = bi.next();
+            }
+            if (lineStart >= lineEnd) {
+                if (tempLineEnd == BreakIterator.DONE)
+                    lineEnd = txt.length();
+                else
+                    lineEnd = tempLineEnd;
+            }
+            if (lineEnd > maxLineEnd)
+                lineEnd = maxLineEnd;
+            g.drawString(txt.substring(lineStart, lineEnd), 0, penY);
+            penY += lineHeight;
+            totalHeight += lineHeight;
+            lineStart = lineEnd;
+            if (lineStart < txt.length() && txt.charAt(lineStart) == '\n')
+                ++lineStart;
+        }
+    }
+
+/*
+    public Dimension getPreferredSize() {
+        Dimension size = getParent().getSize();
+        return new Dimension(size.width, totalHeight);
+    }
+*/
+
+    private String text;
+    private int totalHeight;
+}
+
+class DemoTextFieldHolder extends Panel {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 7514498764062569858L;
+    public DemoTextFieldHolder() {
+        tf1 = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        tf2 = new DemoTextField();
+        sp = new ScrollPane();
+
+        setLayout(new CardLayout());
+
+        sp.add(tf2, "TextField1");
+        sp.setVisible(false);
+        add(tf1, "TestField2");
+        add(sp, "ScrollPane");
+    }
+
+    public void addFocusListener(FocusListener l) {
+        tf1.addFocusListener(l);
+    }
+
+    public void addKeyListener(KeyListener l) {
+        tf1.addKeyListener(l);
+    }
+
+    public void setText(String text) {
+        tf1.setText(text);
+        tf2.setText(text);
+    }
+
+    public String getText() {
+        return tf1.getText();
+    }
+
+    public void select(int start, int end) {
+        tf1.select(start, end);
+    }
+
+    public void selectAll() {
+        tf1.selectAll();
+    }
+
+    public void togglePanes(boolean canShowRealTextField) {
+        if (canShowRealTextField != showingRealTextField) {
+            CardLayout layout = (CardLayout)(getLayout());
+            layout.next(this);
+            showingRealTextField = canShowRealTextField;
+        }
+    }
+
+    private TextArea tf1 = null;
+    private DemoTextField tf2 = null;
+    private ScrollPane sp = null;
+    private boolean showingRealTextField = true;
+}
diff --git a/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java b/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
new file mode 100644
index 0000000..c03ed71
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
@@ -0,0 +1,1941 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.rbnf;
+
+import java.util.Locale;
+
+/**
+ * A collection of example rule sets for use with RuleBasedNumberFormat.
+ * These examples are intended to serve both as demonstrations of what can
+ * be done with this framework, and as starting points for designing new
+ * rule sets.
+ *
+ * For those that claim to represent number-spellout rules for languages
+ * other than U.S. English, we make no claims of either accuracy or
+ * completeness.  In fact, we know them to be incomplete, and suspect
+ * most have mistakes in them.  If you see something that you know is wrong,
+ * please tell us!
+ *
+ * @author Richard Gillam
+ */
+public class RbnfSampleRuleSets {
+    /**
+     * Puts a copyright in the .class file
+     */
+//    private static final String copyrightNotice
+//        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //========================================================================
+    // Spellout rules for various languages
+    //
+    // The following RuleBasedNumberFormat descriptions show the rules for
+    // spelling out numeric values in various languages.  As mentioned
+    // before, we cannot vouch for the accuracy or completeness of this
+    // data, although we believe it's pretty close.  Basically, this
+    // represents one day's worth of Web-surfing.  If you can supply the
+    // missing information in any of these rule sets, or if you find errors,
+    // or if you can supply spellout rules for languages that aren't shown
+    // here, we want to hear from you!
+    //========================================================================
+
+    /**
+     * Spellout rules for U.S. English.  This demonstration version of the
+     * U.S. English spellout rules has four variants: 1) %simplified is a
+     * set of rules showing the simple method of spelling out numbers in
+     * English: 289 is formatted as "two hundred eighty-nine".  2) %alt-teens
+     * is the same as %simplified, except that values between 1,000 and 9,999
+     * whose hundreds place isn't zero are formatted in hundreds.  For example,
+     * 1,983 is formatted as "nineteen hundred eighty-three," and 2,183 is
+     * formatted as "twenty-one hundred eighty-three," but 2,083 is still
+     * formatted as "two thousand eighty-three."  3) %ordinal formats the
+     * values as ordinal numbers in English (e.g., 289 is "two hundred eighty-
+     * ninth").  4) %default uses a more complicated algorithm to format
+     * numbers in a more natural way: 289 is formatted as "two hundred AND
+     * eighty-nine" and commas are inserted between the thousands groups for
+     * values above 100,000.
+     */
+    public static final String usEnglish =
+        // This rule set shows the normal simple formatting rules for English
+        "%simplified:\n"
+               // negative number rule.  This rule is used to format negative
+               // numbers.  The result of formatting the number's absolute
+               // value is placed where the >> is.
+        + "    -x: minus >>;\n"
+               // faction rule.  This rule is used for formatting numbers
+               // with fractional parts.  The result of formatting the
+               // number's integral part is substituted for the <<, and
+               // the result of formatting the number's fractional part
+               // (one digit at a time, e.g., 0.123 is "zero point one two
+               // three") replaces the >>.
+        + "    x.x: << point >>;\n"
+               // the rules for the values from 0 to 19 are simply the
+               // words for those numbers
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+               // beginning at 20, we use the >> to mark the position where
+               // the result of formatting the number's ones digit.  Thus,
+               // we only need a new rule at every multiple of 10.  Text in
+               // backets is omitted if the value being formatted is an
+               // even multiple of 10.
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+               // beginning at 100, we can use << to mark the position where
+               // the result of formatting the multiple of 100 is to be
+               // inserted.  Notice also that the meaning of >> has shifted:
+               // here, it refers to both the ones place and the tens place.
+               // The meanings of the << and >> tokens depend on the base value
+               // of the rule.  A rule's divisor is (usually) the highest
+               // power of 10 that is less than or equal to the rule's base
+               // value.  The value being formatted is divided by the rule's
+               // divisor, and the integral quotient is used to get the text
+               // for <<, while the remainder is used to produce the text
+               // for >>.  Again, text in brackets is omitted if the value
+               // being formatted is an even multiple of the rule's divisor
+               // (in this case, an even multiple of 100)
+        + "    100: << hundred[ >>];\n"
+               // The rules for the higher numbers work the same way as the
+               // rule for 100: Again, the << and >> tokens depend on the
+               // rule's divisor, which for all these rules is also the rule's
+               // base value.  To group by thousand, we simply don't have any
+               // rules between 1,000 and 1,000,000.
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+               // overflow rule.  This rule specifies that values of a
+               // quadrillion or more are shown in numerals rather than words.
+               // The == token means to format (with new rules) the value
+               // being formatted by this rule and place the result where
+               // the == is.  The #,##0 inside the == signs is a
+               // DecimalFormat pattern.  It specifies that the value should
+               // be formatted with a DecimalFormat object, and that it
+               // should be formatted with no decimal places, at least one
+               // digit, and a thousands separator.
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+
+        // This rule set formats numbers between 1,000 and 9,999 somewhat
+        // differently: If the hundreds digit is not zero, the first two
+        // digits are treated as a number of hundreds.  For example, 2,197
+        // would come out as "twenty-one hundred ninety-seven."
+        + "%alt-teens:\n"
+               // just use %simplified to format values below 1,000
+        + "    =%simplified=;\n"
+               // values between 1,000 and 9,999 are delegated to %%alt-hundreds
+               // for formatting.  The > after "1000" decreases the exponent
+               // of the rule's radix by one, causing the rule's divisor
+               // to be 100 instead of 1,000.  This causes the first TWO
+               // digits of the number, instead of just the first digit,
+               // to be sent to %%alt-hundreds
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+               // for values of 10,000 and more, we again just use %simplified
+        + "    10,000: =%simplified=;\n"
+        // This rule set uses some obscure voodoo of the description language
+        // to format the first two digits of a value in the thousands.
+        // The rule at 10 formats the first two digits as a multiple of 1,000
+        // and the rule at 11 formats the first two digits as a multiple of
+        // 100.  This works because of something known as the "rollback rule":
+        // if the rule applicable to the value being formatted has two
+        // substitutions, the value being formatted is an even multiple of
+        // the rule's divisor, and the rule's base value ISN'T an even multiple
+        // if the rule's divisor, then the rule that precedes this one in the
+        // list is used instead.  (The [] notation is implemented internally
+        // using this notation: a rule containing [] is split into two rules,
+        // and the right one is chosen using the rollback rule.) In this case,
+        // it means that if the first two digits are an even multiple of 10,
+        // they're formatted with the 10 rule (containing "thousand"), and if
+        // they're not, they're formatted with the 11 rule (containing
+        // "hundred").  %%empty is a hack to cause the rollback rule to be
+        // invoked: it makes the 11 rule have two substitutions, even though
+        // the second substitution (calling %%empty) doesn't actually do
+        // anything.
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+
+        // this rule set is the same as %simplified, except that it formats
+        // the value as an ordinal number: 234 is formatted as "two hundred
+        // thirty-fourth".  Notice the calls to ^simplified: we have to
+        // call %simplified to avoid getting "second hundred thirty-fourth."
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000: <%simplified< trillionth;\n"
+        + "        <%simplified< trillion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+
+        // %default is a more elaborate form of %simplified;  It is basically
+        // the same, except that it introduces "and" before the ones digit
+        // when appropriate (basically, between the tens and ones digits) and
+        // separates the thousands groups with commas in values over 100,000.
+        + "%default:\n"
+               // negative-number and fraction rules.  These are the same
+               // as those for %simplified, but ave to be stated here too
+               // because this is an entry point
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+               // just use %simplified for values below 100
+        + "    =%simplified=;\n"
+               // for values from 100 to 9,999 use %%and to decide whether or
+               // not to interpose the "and"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+               // for values of 100,000 and up, use %%commas to interpose the
+               // commas in the right places (and also to interpose the "and")
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000: << trillion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // if the value passed to this rule set is greater than 100, don't
+        // add the "and"; if it's less than 100, add "and" before the last
+        // digits
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        // this rule set is used to place the commas
+        + "%%commas:\n"
+               // for values below 100, add "and" (the apostrophe at the
+               // beginning is ignored, but causes the space that follows it
+               // to be significant: this is necessary because the rules
+               // calling %%commas don't put a space before it)
+        + "    ' and =%default=;\n"
+               // put a comma after the thousands (or whatever preceded the
+               // hundreds)
+        + "    100: , =%default=;\n"
+               // put a comma after the millions (or whatever precedes the
+               // thousands)
+        + "    1000: , <%default< thousand, >%default>;\n"
+               // and so on...
+        + "    1,000,000: , =%default=;"
+        // %%lenient-parse isn't really a set of number formatting rules;
+        // it's a set of collation rules.  Lenient-parse mode uses a Collator
+        // object to compare fragments of the text being parsed to the text
+        // in the rules, allowing more leeway in the matching text.  This set
+        // of rules tells the formatter to ignore commas when parsing (it
+        // already ignores spaces, which is why we refer to the space; it also
+        // ignores hyphens, making "twenty one" and "twenty-one" parse
+        // identically)
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+
+    /**
+     * Spellout rules for U.K. English.  U.K. English has one significant
+     * difference from U.S. English: the names for values of 1,000,000,000
+     * and higher.  In American English, each successive "-illion" is 1,000
+     * times greater than the preceding one: 1,000,000,000 is "one billion"
+     * and 1,000,000,000,000 is "one trillion."  In British English, each
+     * successive "-illion" is one million times greater than the one before:
+     * "one billion" is 1,000,000,000,000 (or what Americans would call a
+     * "trillion"), and "one trillion" is 1,000,000,000,000,000,000.
+     * 1,000,000,000 in British English is "one thousand million."  (This
+     * value is sometimes called a "milliard," but this word seems to have
+     * fallen into disuse.)
+     */
+    public static final String ukEnglish =
+        "%simplified:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%alt-teens:\n"
+        + "    =%simplified=;\n"
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+        + "    10,000: =%simplified=;\n"
+        + "    1,000,000: << million[ >%simplified>];\n"
+        + "    1,000,000,000,000: << billion[ >%simplified>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+        + "%default:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    =%simplified=;\n"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        + "%%commas:\n"
+        + "    ' and =%default=;\n"
+        + "    100: , =%default=;\n"
+        + "    1000: , <%default< thousand, >%default>;\n"
+        + "    1,000,000: , =%default=;"
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+    // Could someone please correct me if I'm wrong about "milliard" falling
+    // into disuse, or have missed any other details of how large numbers
+    // are rendered.  Also, could someone please provide me with information
+    // on which other English-speaking countries use which system?  Right now,
+    // I'm assuming that the U.S. system is used in Canada and that all the
+    // other English-speaking countries follow the British system.  Can
+    // someone out there confirm this?
+
+    /**
+     * Spellout rules for Spanish.  The Spanish rules are quite similar to
+     * the English rules, but there are some important differences:
+     * First, we have to provide separate rules for most of the twenties
+     * because the ones digit frequently picks up an accent mark that it
+     * doesn't have when standing alone.  Second, each multiple of 100 has
+     * to be specified separately because the multiplier on 100 very often
+     * changes form in the contraction: 500 is "quinientos," not
+     * "cincocientos."  In addition, the word for 100 is "cien" when
+     * standing alone, but changes to "ciento" when followed by more digits.
+     * There also some other differences.
+     */
+    public static final String spanish =
+        // negative-number and fraction rules
+        "-x: menos >>;\n"
+        + "x.x: << punto >>;\n"
+        // words for values from 0 to 19
+        + "cero; uno; dos; tres; cuatro; cinco; seis; siete; ocho; nueve;\n"
+        + "diez; once; doce; trece; catorce; quince; diecis\u00e9is;\n"
+        + "    diecisiete; dieciocho; diecinueve;\n"
+        // words for values from 20 to 29 (necessary because the ones digit
+        // often picks up an accent mark it doesn't have when standing alone)
+        + "veinte; veintiuno; veintid\u00f3s; veintitr\u00e9s; veinticuatro;\n"
+        + "    veinticinco; veintis\u00e9is; veintisiete; veintiocho;\n"
+        + "    veintinueve;\n"
+        // words for multiples of 10 (notice that the tens digit is separated
+        // from the ones digit by the word "y".)
+        + "30: treinta[ y >>];\n"
+        + "40: cuarenta[ y >>];\n"
+        + "50: cincuenta[ y >>];\n"
+        + "60: sesenta[ y >>];\n"
+        + "70: setenta[ y >>];\n"
+        + "80: ochenta[ y >>];\n"
+        + "90: noventa[ y >>];\n"
+        // 100 by itself is "cien," but 100 followed by something is "cineto"
+        + "100: cien;\n"
+        + "101: ciento >>;\n"
+        // words for multiples of 100 (must be stated because they're
+        // rarely simple concatenations)
+        + "200: doscientos[ >>];\n"
+        + "300: trescientos[ >>];\n"
+        + "400: cuatrocientos[ >>];\n"
+        + "500: quinientos[ >>];\n"
+        + "600: seiscientos[ >>];\n"
+        + "700: setecientos[ >>];\n"
+        + "800: ochocientos[ >>];\n"
+        + "900: novecientos[ >>];\n"
+        // for 1,000, the multiplier on "mil" is omitted: 2,000 is "dos mil,"
+        // but 1,000 is just "mil."
+        + "1000: mil[ >>];\n"
+        + "2000: << mil[ >>];\n"
+        // 1,000,000 is "un millon," not "uno millon"
+        + "1,000,000: un mill\u00f3n[ >>];\n"
+        + "2,000,000: << mill\u00f3n[ >>];\n"
+        // overflow rule
+        + "1,000,000,000: =#,##0= (incomplete data);";
+    // The Spanish rules are incomplete.  I'm missing information on negative
+    // numbers and numbers with fractional parts.  I also don't have
+    // information on numbers higher than the millions
+
+    /**
+     * Spellout rules for French.  French adds some interesting quirks of its
+     * own: 1) The word "et" is interposed between the tens and ones digits,
+     * but only if the ones digit if 1: 20 is "vingt," and 2 is "vingt-deux,"
+     * but 21 is "vingt-et-un."  2)  There are no words for 70, 80, or 90.
+     * "quatre-vingts" ("four twenties") is used for 80, and values proceed
+     * by score from 60 to 99 (e.g., 73 is "soixante-treize" ["sixty-thirteen"]).
+     * Numbers from 1,100 to 1,199 are rendered as hundreds rather than
+     * thousands: 1,100 is "onze cents" ("eleven hundred"), rather than
+     * "mille cent" ("one thousand one hundred")
+     */
+    public static final String french =
+        // the main rule set
+        "%main:\n"
+               // negative-number and fraction rules
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+               // words for numbers from 0 to 10
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+               // ords for the multiples of 10: %%alt-ones inserts "et"
+               // when needed
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+               // rule for 60.  The /20 causes this rule's multiplier to be
+               // 20 rather than 10, allowinhg us to recurse for all values
+               // from 60 to 79...
+        + "    60/20: soixante[->%%alt-ones>];\n"
+               // ...except for 71, which must be special-cased
+        + "    71: soixante et onze;\n"
+               // at 72, we have to repeat the rule for 60 to get us to 79
+        + "    72/20: soixante->%%alt-ones>;\n"
+               // at 80, we state a new rule with the phrase for 80.  Since
+               // it changes form when there's a ones digit, we need a second
+               // rule at 81.  This rule also includes "/20," allowing it to
+               // be used correctly for all values up to 99
+        + "    80: quatre-vingts; 81/20: quatre-vingt->>;\n"
+               // "cent" becomes plural when preceded by a multiplier, and
+               // the multiplier is omitted from the singular form
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+               // values from 1,100 to 1,199 are rendered as "onze cents..."
+               // instead of "mille cent..."  The > after "1000" decreases
+               // the rule's exponent, causing its multiplier to be 100 instead
+               // of 1,000.  This prevents us from getting "onze cents cent
+               // vingt-deux" ("eleven hundred one hundred twenty-two").
+        + "    1100>: onze cents[ >>];\n"
+               // at 1,200, we go back to formating in thousands, so we
+               // repeat the rule for 1,000
+        + "    1200: mille >>;\n"
+               // at 2,000, the multiplier is added
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // %%alt-ones is used to insert "et" when the ones digit is 1
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+
+    /**
+     * Spellout rules for Swiss French.  Swiss French differs from French French
+     * in that it does have words for 70, 80, and 90.  This rule set shows them,
+     * and is simpler as a result.
+     */
+    public static final String swissFrench =
+        "%main:\n"
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+        + "    60: soixante[->%%alt-ones>];\n"
+               // notice new words for 70, 80, and 90
+        + "    70: septante[->%%alt-ones>];\n"
+        + "    80: octante[->%%alt-ones>];\n"
+        + "    90: nonante[->%%alt-ones>];\n"
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+        + "    1100>: onze cents[ >>];\n"
+        + "    1200: mille >>;\n"
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+    // I'm not 100% sure about Swiss French.  Is
+    // this correct?  Is "onze cents" commonly used for 1,100 in both France
+    // and Switzerland?  Can someone fill me in on the rules for the other
+    // French-speaking countries?  I've heard conflicting opinions on which
+    // version is used in Canada, and I understand there's an alternate set
+    // of words for 70, 80, and 90 that is used somewhere, but I don't know
+    // what those words are or where they're used.
+
+    /**
+     * Spellout rules for German.  German also adds some interesting
+     * characteristics.  For values below 1,000,000, numbers are customarily
+     * written out as a single word.  And the ones digit PRECEDES the tens
+     * digit (e.g., 23 is "dreiundzwanzig," not "zwanzigunddrei").
+     */
+    public static final String german =
+        // 1 is "eins" when by itself, but turns into "ein" in most
+        // combinations
+        "%alt-ones:\n"
+        + "    null; eins; =%%main=;\n"
+        + "%%main:\n"
+               // words for numbers from 0 to 12.  Notice that the values
+               // from 13 to 19 can derived algorithmically, unlike in most
+               // other languages
+        + "    null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n"
+        + "    zehn; elf; zw\u00f6lf; >>zehn;\n"
+               // rules for the multiples of 10.  Notice that the ones digit
+               // goes on the front
+        + "    20: [>>und]zwanzig;\n"
+        + "    30: [>>und]drei\u00dfig;\n"
+        + "    40: [>>und]vierzig;\n"
+        + "    50: [>>und]f\u00fcnfzig;\n"
+        + "    60: [>>und]sechzig;\n"
+        + "    70: [>>und]siebzig;\n"
+        + "    80: [>>und]achtzig;\n"
+        + "    90: [>>und]neunzig;\n"
+        + "    100: hundert[>%alt-ones>];\n"
+        + "    200: <<hundert[>%alt-ones>];\n"
+        + "    1000: tausend[>%alt-ones>];\n"
+        + "    2000: <<tausend[>%alt-ones>];\n"
+        + "    1,000,000: eine Million[ >%alt-ones>];\n"
+        + "    2,000,000: << Millionen[ >%alt-ones>];\n"
+        + "    1,000,000,000: eine Milliarde[ >%alt-ones>];\n"
+        + "    2,000,000,000: << Milliarden[ >%alt-ones>];\n"
+        + "    1,000,000,000,000: eine Billion[ >%alt-ones>];\n"
+        + "    2,000,000,000,000: << Billionen[ >%alt-ones>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;";
+    // again, I'm not 100% sure of these rules.  I think both "hundert" and
+    // "einhundert" are correct or 100, but I'm not sure which is preferable
+    // in situations where this framework is likely to be used.  Also, is it
+    // really true that numbers are run together into compound words all the
+    // time?  And again, I'm missing information on negative numbers and
+    // decimals.
+
+    /**
+     * Spellout rules for Italian.  Like German, most Italian numbers are
+     * written as single words.  What makes these rules complicated is the rule
+     * that says that when a word ending in a vowel and a word beginning with
+     * a vowel are combined into a compound, the vowel is dropped from the
+     * end of the first word: 180 is "centottanta," not "centoottanta."
+     * The complexity of this rule set is to produce this behavior.
+     */
+    public static final String italian =
+        // main rule set.  Follows the patterns of the preceding rule sets,
+        // except that the final vowel is omitted from words ending in
+        // vowels when they are followed by another word; instead, we have
+        // separate rule sets that are identical to this one, except that
+        // all the words that don't begin with a vowel have a vowel tacked
+        // onto them at the front.  A word ending in a vowel calls a
+        // substitution that will supply that vowel, unless that vowel is to
+        // be elided.
+        "%main:\n"
+        + "    -x: meno >>;\n"
+        + "    x.x: << virgola >>;\n"
+        + "    zero; uno; due; tre; quattro; cinque; sei; sette; otto;\n"
+        + "        nove;\n"
+        + "    dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n"
+        + "        diciasette; diciotto; diciannove;\n"
+        + "    20: venti; vent>%%with-i>;\n"
+        + "    30: trenta; trent>%%with-i>;\n"
+        + "    40: quaranta; quarant>%%with-a>;\n"
+        + "    50: cinquanta; cinquant>%%with-a>;\n"
+        + "    60: sessanta; sessant>%%with-a>;\n"
+        + "    70: settanta; settant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: novanta; novant>%%with-a>;\n"
+        + "    100: cento; cent[>%%with-o>];\n"
+        + "    200: <<cento; <<cent[>%%with-o>];\n"
+        + "    1000: mille; mill[>%%with-i>];\n"
+        + "    2000: <<mila; <<mil[>%%with-a>];\n"
+        + "    100,000>>: <<mila[ >>];\n"
+        + "    1,000,000: =#,##0= (incomplete data);\n"
+        + "%%with-a:\n"
+        + "    azero; uno; adue; atre; aquattro; acinque; asei; asette; otto;\n"
+        + "        anove;\n"
+        + "    adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n"
+        + "        adiciasette; adiciotto; adiciannove;\n"
+        + "    20: aventi; avent>%%with-i>;\n"
+        + "    30: atrenta; atrent>%%with-i>;\n"
+        + "    40: aquaranta; aquarant>%%with-a>;\n"
+        + "    50: acinquanta; acinquant>%%with-a>;\n"
+        + "    60: asessanta; asessant>%%with-a>;\n"
+        + "    70: asettanta; asettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: anovanta; anovant>%%with-a>;\n"
+        + "    100: acento; acent[>%%with-o>];\n"
+        + "    200: <%%with-a<cento; <%%with-a<cent[>%%with-o>];\n"
+        + "    1000: amille; amill[>%%with-i>];\n"
+        + "    2000: <%%with-a<mila; <%%with-a<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-i:\n"
+        + "    izero; uno; idue; itre; iquattro; icinque; isei; isette; otto;\n"
+        + "        inove;\n"
+        + "    idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n"
+        + "        idiciasette; idiciotto; idiciannove;\n"
+        + "    20: iventi; ivent>%%with-i>;\n"
+        + "    30: itrenta; itrent>%%with-i>;\n"
+        + "    40: iquaranta; iquarant>%%with-a>;\n"
+        + "    50: icinquanta; icinquant>%%with-a>;\n"
+        + "    60: isessanta; isessant>%%with-a>;\n"
+        + "    70: isettanta; isettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: inovanta; inovant>%%with-a>;\n"
+        + "    100: icento; icent[>%%with-o>];\n"
+        + "    200: <%%with-i<cento; <%%with-i<cent[>%%with-o>];\n"
+        + "    1000: imille; imill[>%%with-i>];\n"
+        + "    2000: <%%with-i<mila; <%%with-i<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-o:\n"
+        + "    ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto;\n"
+        + "        onove;\n"
+        + "    odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n"
+        + "        odiciasette; odiciotto; odiciannove;\n"
+        + "    20: oventi; ovent>%%with-i>;\n"
+        + "    30: otrenta; otrent>%%with-i>;\n"
+        + "    40: oquaranta; oquarant>%%with-a>;\n"
+        + "    50: ocinquanta; ocinquant>%%with-a>;\n"
+        + "    60: osessanta; osessant>%%with-a>;\n"
+        + "    70: osettanta; osettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: onovanta; onovant>%%with-a>;\n"
+        + "    100: ocento; ocent[>%%with-o>];\n"
+        + "    200: <%%with-o<cento; <%%with-o<cent[>%%with-o>];\n"
+        + "    1000: omille; omill[>%%with-i>];\n"
+        + "    2000: <%%with-o<mila; <%%with-o<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n";
+    // Can someone confirm that I did the vowel-eliding thing right?  I'm
+    // not 100% sure I'm doing it in all the right places, or completely
+    // correctly.  Also, I don't have information for negatives and decimals,
+    // and I lack words fror values from 1,000,000 on up.
+
+    /**
+     * Spellout rules for Swedish.
+     */
+    public static final String swedish =
+        "noll; ett; tv\u00e5; tre; fyra; fem; sex; sjo; \u00e5tta; nio;\n"
+        + "tio; elva; tolv; tretton; fjorton; femton; sexton; sjutton; arton; nitton;\n"
+        + "20: tjugo[>>];\n"
+        + "30: trettio[>>];\n"
+        + "40: fyrtio[>>];\n"
+        + "50: femtio[>>];\n"
+        + "60: sextio[>>];\n"
+        + "70: sjuttio[>>];\n"
+        + "80: \u00e5ttio[>>];\n"
+        + "90: nittio[>>];\n"
+        + "100: hundra[>>];\n"
+        + "200: <<hundra[>>];\n"
+        + "1000: tusen[ >>];\n"
+        + "2000: << tusen[ >>];\n"
+        + "1,000,000: en miljon[ >>];\n"
+        + "2,000,000: << miljon[ >>];\n"
+        + "1,000,000,000: en miljard[ >>];\n"
+        + "2,000,000,000: << miljard[ >>];\n"
+        + "1,000,000,000,000: en biljon[ >>];\n"
+        + "2,000,000,000,000: << biljon[ >>];\n"
+        + "1,000,000,000,000,000: =#,##0=";
+    // can someone supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Dutch.  Notice that in Dutch, as in German,
+     * the ones digit precedes the tens digit.
+     */
+    public static final String dutch =
+        " -x: min >>;\n"
+        + "x.x: << komma >>;\n"
+        + "(zero?); een; twee; drie; vier; vijf; zes; zeven; acht; negen;\n"
+        + "tien; elf; twaalf; dertien; veertien; vijftien; zestien;\n"
+        + "zeventien; achtien; negentien;\n"
+        + "20: [>> en ]twintig;\n"
+        + "30: [>> en ]dertig;\n"
+        + "40: [>> en ]veertig;\n"
+        + "50: [>> en ]vijftig;\n"
+        + "60: [>> en ]zestig;\n"
+        + "70: [>> en ]zeventig;\n"
+        + "80: [>> en ]tachtig;\n"
+        + "90: [>> en ]negentig;\n"
+        + "100: << honderd[ >>];\n"
+        + "1000: << duizend[ >>];\n"
+        + "1,000,000: << miljoen[ >>];\n"
+        + "1,000,000,000: << biljoen[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+
+    /**
+     * Spellout rules for Japanese.  In Japanese, there really isn't any
+     * distinction between a number written out in digits and a number
+     * written out in words: the ideographic characters are both digits
+     * and words.  This rule set provides two variants:  %traditional
+     * uses the traditional CJK numerals (which are also used in China
+     * and Korea).  %financial uses alternate ideographs for many numbers
+     * that are harder to alter than the traditional numerals (one could
+     * fairly easily change a one to
+     * a three just by adding two strokes, for example).  This is also done in
+     * the other countries using Chinese idographs, but different ideographs
+     * are used in those places.
+     */
+    public static final String japanese =
+        "%financial:\n"
+        + "    \u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u62fe[>>];\n"
+        + "    20: <<\u62fe[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;\n"
+        + "%traditional:\n"
+        + "    \u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u5341[>>];\n"
+        + "    20: <<\u5341[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;";
+    // Can someone supply me with the right fraud-proof ideographs for
+    // Simplified and Traditional Chinese, and for Korean?  Can someone
+    // supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Greek.  Again in Greek we have to supply the words
+     * for the multiples of 100 because they can't be derived algorithmically.
+     * Also, the tens dgit changes form when followed by a ones digit: an
+     * accent mark disappears from the tens digit and moves to the ones digit.
+     * Therefore, instead of using the [] notation, we actually have to use
+     * two separate rules for each multiple of 10 to show the two forms of
+     * the word.
+     */
+    public static final String greek =
+        "zero (incomplete data); \u03ad\u03bd\u03b1; \u03b4\u03cd\u03bf; \u03b4\u03c1\u03af\u03b1; "
+        + "\u03c4\u03ad\u03c3\u03c3\u03b5\u03c1\u03b1; \u03c0\u03ad\u03bd\u03c4\u03b5; "
+        + "\u03ad\u03be\u03b9; \u03b5\u03c0\u03c4\u03ac; \u03bf\u03ba\u03c4\u03ce; "
+        + "\u03b5\u03bd\u03bd\u03ad\u03b1;\n"
+        + "10: \u03b4\u03ad\u03ba\u03b1; "
+        + "\u03ad\u03bd\u03b4\u03b5\u03ba\u03b1; \u03b4\u03ce\u03b4\u03b5\u03ba\u03b1; "
+        + "\u03b4\u03b5\u03ba\u03b1>>;\n"
+        + "20: \u03b5\u03af\u03ba\u03bf\u03c3\u03b9; \u03b5\u03b9\u03ba\u03bf\u03c3\u03b9>>;\n"
+        + "30: \u03c4\u03c1\u03b9\u03ac\u03bd\u03c4\u03b1; \u03c4\u03c1\u03b9\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "40: \u03c3\u03b1\u03c1\u03ac\u03bd\u03c4\u03b1; \u03c3\u03b1\u03c1\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "50: \u03c0\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; \u03c0\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "60: \u03b5\u03be\u03ae\u03bd\u03c4\u03b1; \u03b5\u03be\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "70: \u03b5\u03b2\u03b4\u03bf\u03bc\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03b2\u03b4\u03bf\u03bc\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "80: \u03bf\u03b3\u03b4\u03cc\u03bd\u03c4\u03b1; \u03bf\u03b3\u03b4\u03bf\u03bd\u03c4\u03b1>>;\n"
+        + "90: \u03b5\u03bd\u03bd\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03bd\u03bd\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "100: \u03b5\u03ba\u03b1\u03c4\u03cc[\u03bd >>];\n"
+        + "200: \u03b4\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "300: \u03c4\u03c1\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "400: \u03c4\u03b5\u03c4\u03c1\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "500: \u03c0\u03b5\u03bd\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "600: \u03b5\u03be\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "700: \u03b5\u03c0\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "800: \u03bf\u03ba\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "900: \u03b5\u03bd\u03bd\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "1000: \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "2000: << \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "1,000,000: << \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000: << \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+    // Can someone supply me with information on negatives and decimals?
+    // I'm also missing the word for zero.  Can someone clue me in?
+
+    /**
+     * Spellout rules for Russian.
+     */
+    public static final String russian =
+        "\u043d\u043e\u043b\u044c; \u043e\u0434\u0438\u043d; \u0434\u0432\u0430; \u0442\u0440\u0438; "
+        + "\u0447\u0435\u0442\u044b\u0440\u0435; \u043f\u044f\u0442; \u0448\u0435\u0441\u0442; "
+        + "\u0441\u0435\u043c\u044c; \u0432\u043e\u0441\u0435\u043c\u044c; \u0434\u0435\u0432\u044f\u0442;\n"
+        + "10: \u0434\u0435\u0441\u044f\u0442; "
+        + "\u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "\u0434\u0432\u0435\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "15: \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0432\u043e\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0434\u0435\u0432\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "20: \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "30: \u0442\u0440\u043b\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "40: \u0441\u043e\u0440\u043e\u043a[ >>];\n"
+        + "50: \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "60: \u0448\u0435\u0441\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "70: \u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "80: \u0432\u043e\u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "90: \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u043e[ >>];\n"
+        + "100: \u0441\u0442\u043e[ >>];\n"
+        + "200: << \u0441\u0442\u043e[ >>];\n"
+        + "1000: \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "2000: << \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "1,000,000: \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "2,000,000: << \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "1,000,000,000: =#,##0=;";
+    // Can someone supply me with information on negatives and decimals?
+    // How about words for billions and trillions?
+
+    /**
+     * Spellout rules for Hebrew.  Hebrew actually has inflected forms for
+     * most of the lower-order numbers.  The masculine forms are shown
+     * here.
+     */
+    public static final String hebrew =
+        "zero (incomplete data); \u05d0\u05d4\u05d3; \u05e9\u05d2\u05d9\u05d9\u05dd; \u05e9\u05dc\u05d5\u05e9\u05d4;\n"
+        + "4: \u05d0\u05d3\u05d1\u05e6\u05d4; \u05d7\u05d2\u05d5\u05d9\u05e9\u05d4; \u05e9\u05e9\u05d4;\n"
+        + "7: \u05e9\u05d1\u05e6\u05d4; \u05e9\u05de\u05d5\u05d2\u05d4; \u05ea\u05e9\u05e6\u05d4;\n"
+        + "10: \u05e6\u05e9\u05d3\u05d4[ >>];\n"
+        + "20: \u05e6\u05e9\u05d3\u05d9\u05dd[ >>];\n"
+        + "30: \u05e9\u05dc\u05d5\u05e9\u05d9\u05dd[ >>];\n"
+        + "40: \u05d0\u05d3\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "50: \u05d7\u05de\u05d9\u05e9\u05d9\u05dd[ >>];\n"
+        + "60: \u05e9\u05e9\u05d9\u05dd[ >>];\n"
+        + "70: \u05e9\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "80: \u05e9\u05de\u05d5\u05d2\u05d9\u05dd[ >>];\n"
+        + "90: \u05ea\u05e9\u05e6\u05d9\u05dd[ >>];\n"
+        + "100: \u05de\u05d0\u05d4[ >>];\n"
+        + "200: << \u05de\u05d0\u05d4[ >>];\n"
+        + "1000: \u05d0\u05dc\u05e3[ >>];\n"
+        + "2000: << \u05d0\u05dc\u05e3[ >>];\n"
+        + "1,000,000: =#,##0= (incomplete data);";
+    // This data is woefully incomplete.  Can someone fill me in on the
+    // various inflected forms of the numbers, which seem to be necessary
+    // to do Hebrew correctly?  Can somone supply me with data for values
+    // from 1,000,000 on up?  What about the word for zero?  What about
+    // information on negatives and decimals?
+
+    //========================================================================
+    // Simple examples
+    //========================================================================
+
+    /**
+     * This rule set adds an English ordinal abbreviation to the end of a
+     * number.  For example, 2 is formatted as "2nd".  Parsing doesn't work with
+     * this rule set.  To parse, use DecimalFormat on the numeral.
+     */
+    public static final String ordinal =
+        // this rule set formats the numeral and calls %%abbrev to
+        // supply the abbreviation
+        "%main:\n"
+        + "    =#,##0==%%abbrev=;\n"
+        // this rule set supplies the abbreviation
+        + "%%abbrev:\n"
+               // the abbreviations.  Everything from 4 to 19 ends in "th"
+        + "    th; st; nd; rd; th;\n"
+               // at 20, we begin repeating the cycle every 10 (13 is "13th",
+               // but 23 and 33 are "23rd" and "33rd")  We do this by
+               // ignoring all bug the ones digit in selecting the abbreviation
+        + "    20: >>;\n"
+               // at 100, we repeat the whole cycle by considering only the
+               // tens and ones digits in picking an abbreviation
+        + "    100: >>;\n";
+
+    /**
+     * This is a simple message-formatting example.  Normally one would
+     * use ChoiceFormat and MessageFormat to do something this simple,
+     * but this shows it could be done with RuleBasedNumberFormat too.
+     * A message-formatting example that might work better with
+     * RuleBasedNumberFormat appears later.
+     */
+    public static final String message1 =
+        // this rule surrounds whatever the other rules produce with the
+        // rest of the sentence
+        "x.0: The search found <<.;\n"
+        // use words for values below 10 (and change to "file" for 1)
+        + "no files; one file; two files; three files; four files; five files;\n"
+        + "    six files; seven files; eight files; nine files;\n"
+        // use numerals for values higher than 10
+        + "=#,##0= files;";
+
+    //========================================================================
+    // Fraction handling
+    //
+    // The next few examples show how RuleBasedNumberFormat can be used for
+    // more flexible handling of fractions
+    //========================================================================
+
+    /**
+     * This example formats a number in one of the two styles often used
+     * on checks.  %dollars-and-hundredths formats cents as hundredths of
+     * a dollar (23.40 comes out as "twenty-three and 40/100 dollars").
+     * %dollars-and-cents formats in dollars and cents (23.40 comes out as
+     * "twenty-three dollars and forty cents")
+     */
+    public static final String dollarsAndCents =
+        // this rule set formats numbers as dollars and cents
+        "%dollars-and-cents:\n"
+               // if the value is 1 or more, put "xx dollars and yy cents".
+               // the "and y cents" part is suppressed if the value is an
+               // even number of dollars
+        + "    x.0: << [and >%%cents>];\n"
+               // if the value is between 0 and 1, put "xx cents"
+        + "    0.x: >%%cents>;\n"
+               // these three rules take care of the singular and plural
+               // forms of "dollar" and use %%main to format the number
+        + "    0: zero dollars; one dollar; =%%main= dollars;\n"
+        // these are the regular U.S. English number spellout rules
+        + "%%main:\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // this rule takes care of the fractional part of the value.  It
+        // multiplies the fractional part of the number being formatted by
+        // 100, formats it with %%main, and then addes the word "cent" or
+        // "cents" to the end.  (The text in brackets is omitted if the
+        // numerator of the fraction is 1.)
+        + "%%cents:\n"
+        + "    100: <%%main< cent[s];\n"
+
+        // this rule set formats numbers as dollars and hundredths of dollars
+        + "%dollars-and-hundredths:\n"
+               // this rule takes care of the general shell of the output
+               // string.  We always show the cents, even when there aren't
+               // any.  Because of this, the word is always "dollars"--
+               // we don't have to worry about the singular form.  We use
+               // %%main to format the number of dollars and %%hundredths to
+               // format the number of cents
+        + "    x.0: <%%main< and >%%hundredths>/100 dollars;\n"
+        // this rule set formats the cents for %dollars-and-hundredths.
+        // It multiplies the fractional part of the number by 100 and formats
+        // the result using a DecimalFormat ("00" tells the DecimalFormat to
+        // always use two digits, even for numbers under 10)
+        + "%%hundredths:\n"
+        + "    100: <00<;\n";
+
+    /**
+     * This rule set shows the fractional part of the number as a fraction
+     * with a power of 10 as the denominator.  Some languages don't spell
+     * out the fractional part of a number as "point one two three," but
+     * always render it as a fraction.  If we still want to treat the fractional
+     * part of the number as a decimal, then the fraction's denominator
+     * is always a power of 10.  This example does that: 23.125 is formatted
+     * as "twenty-three and one hundred twenty-five thousandths" (as opposed
+     * to "twenty-three point one two five" or "twenty-three and one eighth").
+     */
+    public static final String decimalAsFraction =
+        // the regular U.S. English spellout rules, with one difference
+        "%main:\n"
+        + "    -x: minus >>;\n"
+               // the difference.  This rule uses %%frac to show the fractional
+               // part of the number.  Text in brackets is omitted when the
+               // value is between 0 and 1 (causing 0.3 to come out as "three
+               // tenths" instead of "zero and three tenths").
+        + "    x.x: [<< and ]>%%frac>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // the rule set that formats the fractional part of the number.
+        // The rule that is used is the one that, when its baase value is
+        // multiplied by the fractional part of the number being formatted,
+        // produces the result closest to zero.  Thus, the base values are
+        // prospective denominators of the fraction.  The << marks the place
+        // where the numerator of the fraction (the result of multiplying the
+        // fractional part of the number by the rule's base value) is
+        // placed.  Text in brackets is omitted when the numerator is 1, giving
+        // us the singular and plural forms of the words.
+        // [In languages where the singular and plural are completely different
+        // words, the rule can just be stated twice: the second time with
+        // the plural form.]
+        + "%%frac:\n"
+        + "    10: << tenth[s];\n"
+        + "    100: << hundredth[s];\n"
+        + "    1000: << thousandth[s];\n"
+        + "    10,000: << ten-thousandth[s];\n"
+        + "    100,000: << hundred-thousandth[s];\n"
+        + "    1,000,000: << millionth[s];";
+
+    /**
+     * Number with closest fraction.  This example formats a value using
+     * numerals, but shows the fractional part as a ratio (fraction) rather
+     * than a decimal.  The fraction always has a denominator between 2 and 10.
+     */
+    public static final String closestFraction =
+        "%main:\n"
+               // this rule formats the number if it's 1 or more.  It formats
+               // the integral part using a DecimalFormat ("#,##0" puts
+               // thousands separators in the right places) and the fractional
+               // part using %%frac.  If there is no fractional part, it
+               // just shows the integral part.
+        + "    x.0: <#,##0<[ >%%frac>];\n"
+               // this rule formats the number if it's between 0 and 1.  It
+               // shows only the fractional part (0.5 shows up as "1/2," not
+               // "0 1/2")
+        + "    0.x: >%%frac>;\n"
+        // the fraction rule set.  This works the same way as the one in the
+        // preceding example: We multiply the fractional part of the number
+        // being formatted by each rule's base value and use the rule that
+        // produces the result closest to 0 (or the first rule that produces 0).
+        // Since we only provide rules for the numbers from 2 to 10, we know
+        // we'll get a fraction with a denominator between 2 and 10.
+        // "<0<" causes the numerator of the fraction to be formatted
+        // using numerals
+        + "%%frac:\n"
+        + "    2: 1/2;\n"
+        + "    3: <0</3;\n"
+        + "    4: <0</4;\n"
+        + "    5: <0</5;\n"
+        + "    6: <0</6;\n"
+        + "    7: <0</7;\n"
+        + "    8: <0</8;\n"
+        + "    9: <0</9;\n"
+        + "    10: <0</10;\n";
+
+    /**
+     * American stock-price formatting.  Non-integral stock prices are still
+     * generally shown in eighths or sixteenths of dollars instead of dollars
+     * and cents.  This example formats stock prices in this way if possible,
+     * and in dollars and cents if not.
+     */
+    public static final String stock =
+        "%main:\n"
+               // this rule formats the integral part of the number in numerals
+               // and (if necessary) the fractional part using %%frac1
+        + "    x.0: <#,##0<[>%%frac1>];\n"
+               // this rule is used for values between 0 and 1 and omits the
+               // integral part
+        + "    0.x: >%%frac2>;\n"
+        // this rule set is used to format the fractional part of the number when
+        // there's an integral part before it (again, we try all denominators
+        // and use the "best" one)
+        + "%%frac1:\n"
+               // for even multiples of 1/4, format the fraction using the
+               // typographer's fractions
+        + "    4: <%%quarters<;\n"
+               // format the value as a number of eighths, sixteenths, or
+               // thirty-seconds, whichever produces the most accurate value.
+               // The apostrophe at the front of these rules is ignored, but
+               // it makes the space that follows it significant.  This puts a
+               // space between the value's integral and fractional parts so
+               // you can read it
+        + "    8: ' <0</8;\n"
+        + "    16: ' <0</16;\n"
+        + "    32: ' <0</32;\n"
+               // if we can't reasonably format the number in powers of 2,
+               // then show it as dollars and cents
+        + "    100: .<00<;\n"
+        // this rule set is used when the fractional part of the value stands
+        // alone
+        + "%%frac2:\n"
+        + "    4: <%%quarters<;\n"
+               // for fractions that we can't show using typographer's fractions,
+               // we don't have to put a space before the fraction
+        + "    8: <0</8;\n"
+        + "    16: <0</16;\n"
+        + "    32: <0</32;\n"
+               // but dollars and cents look better with a leading 0
+        + "    100: 0.<00<;\n"
+        // this rule set formats 1/4, 1/2, and 3/4 using typographer's fractions
+        + "%%quarters:\n"
+        + "    ; \u00bc; \u00bd; \u00be;\n"
+        // there are the lenient-parse rules.  These allow the user to type
+        // "1/4," "1/2," and "3/4" instead of their typographical counterparts
+        // and still have them be understood by the formatter
+        + "%%lenient-parse:\n"
+        + "    & '1/4' , \u00bc\n"
+        + "    & '1/2' , \u00bd\n"
+        + "    & '3/4' , \u00be\n;";
+
+    //========================================================================
+    // Changing dimensions
+    //
+    // The next few examples demonstrate using a RuleBasedNumberFormat to
+    // change the units a value is denominated in depending on its magnitude
+    //========================================================================
+
+    /**
+     * The example shows large numbers the way they often appear is nwespapers:
+     * 1,200,000 is formatted as "1.2 million".
+     */
+    public static final String abbEnglish =
+        "=#,##0=;\n"
+        // this is fairly self-explanatory, but note that the << substitution
+        // can show the fractional part of the substitution value if the user
+        // wants it
+        + "1,000,000: <##0.###< million;\n"
+        + "1,000,000,000: <##0.###< billion;\n"
+        + "1,000,000,000,000: <##0.###< trillion;\n";
+
+    /**
+     * This example takes a number of meters and formats it in whatever unit
+     * will produce a number with from one to three digits before the decimal
+     * point.  For example, 230,000 is formatted as "230 km".
+     */
+    public static final String units =
+        "%main:\n"
+               // for values between 0 and 1, delegate to %%small
+        + "    0.x: >%%small>;\n"
+               // otherwise, show between 3 and 6 significant digits of the value
+               // along with the most appropriate unit
+        + "    0: =##0.###= m;\n"
+        + "    1,000: <##0.###< km;\n"
+        + "    1,000,000: <##0.###< Mm;\n"
+        + "    1,000,000,000: <##0.###< Gm;\n"
+        + "    1,000,000,000,000: <#,##0.###< Tm;\n"
+        // %%small formats the number when it's less then 1.  It multiplies the
+        // value by one billion, and then uses %%small2 to actually do the
+        // formatting.
+        + "%%small:\n"
+        + "    1,000,000,000,000: <%%small2<;\n"
+        // this rule set actually formats small values.  %%small passes this
+        // rule set a number of picometers, and it takes care of scaling up as
+        // appropriate in exactly the same way %main does (we can't normally
+        // handle fractional values this way: here, we're concerned about
+        // magnitude; most of the time, we're concerned about precsion)
+        + "%%small2:\n"
+        + "    0: =##0= pm;\n"
+        + "    1,000: <##0.###< nm;\n"
+        + "    1,000,000: <##0.###< \u00b5m;\n"
+        + "    1,000,000,000: <##0.###< mm;\n";
+
+    /**
+     * A more complicated message-formatting example.  Here, in addition to
+     * handling the singular and plural versions of the word, the value is
+     * denominated in bytes, kilobytes, or megabytes depending on its magnitude.
+     * Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000),
+     * and a megabyte as 1,024 kilobytes (not 1,000).
+     */
+    public static final String message2 =
+        // this rule supplies the shell of the sentence
+        "x.0: There << free space on the disk.;\n"
+        // handle singular and plural forms of "byte" (and format 0 as
+        // "There is no free space...")
+        + "0: is no;\n"
+        + "is one byte of;\n"
+        + "are =0= bytes of;\n"
+        // for values above 1,024, format the number in K (since "K" is usually
+        // promounced "K" regardless of whether it's singular or plural, we
+        // don't worry about the plural form).  The "/1024" here causes us to
+        // treat a K as 1,024 bytes rather than 1,000 bytes.
+        + "1024/1024: is <0<K of;\n"
+        // for values about 1,048,576, format the number in Mb.  Since "Mb" is
+        // usually promounced "meg" in singular and "megs" in plural, we do have
+        // both singular and plural forms.  Again, notice we treat a megabyte
+        // as 1,024 kilobytes.
+        + "1,048,576/1024: is 1 Mb of;\n"
+        + "2,097,152/1024: are <0< Mb of;";
+
+    //========================================================================
+    // Alternate radices
+    //========================================================================
+
+    /**
+     * This example formats a number in dozens and gross.  This is intended to
+     * demonstrate how this rule set can be used to format numbers in systems
+     * other than base 10.  The "/12" after the rules' base values controls this.
+     * Also notice that the base doesn't have to be consistent throughout the
+     * whole rule set: we go back to base 10 for values over 1,000.
+     */
+    public static final String dozens =
+        // words for numbers...
+        "zero; one; two; three; four; five; six;\n"
+        + "seven; eight; nine; ten; eleven;\n"
+        // format values over 12 in dozens
+        + "12/12: << dozen[ and >>];\n"
+        // format values over 144 in gross
+        + "144/12: << gross[, >>];\n"
+        // format values over 1,000 in thousands
+        + "1000: << thousand[, >>];\n"
+        // overflow rule.  Format values over 10,000 in numerals
+        + "10,000: =#,##0=;\n";
+
+    //========================================================================
+    // Major and minor units
+    //
+    // These examples show how a single value can be divided up into major
+    // and minor units that don't relate to each other by a factor of 10.
+    //========================================================================
+
+    /**
+     * This example formats a number of seconds in sexagesimal notation
+     * (i.e., hours, minutes, and seconds).  %with-words formats it with
+     * words (3740 is "1 hour, 2 minutes, 20 seconds") and %in-numerals
+     * formats it entirely in numerals (3740 is "1:02:20").
+     */
+    public static final String durationInSeconds =
+        // main rule set for formatting with words
+        "%with-words:\n"
+               // take care of singular and plural forms of "second"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+               // use %%min to format values greater than 60 seconds
+        + "    60/60: <%%min<[, >>];\n"
+               // use %%hr to format values greater than 3,600 seconds
+               // (the ">>>" below causes us to see the number of minutes
+               // when when there are zero minutes)
+        + "    3600/60: <%%hr<[, >>>];\n"
+        // this rule set takes care of the singular and plural forms
+        // of "minute"
+        + "%%min:\n"
+        + "    0 minutes; 1 minute; =0= minutes;\n"
+        // this rule set takes care of the singular and plural forms
+        // of "hour"
+        + "%%hr:\n"
+        + "    0 hours; 1 hour; =0= hours;\n"
+
+        // main rule set for formatting in numerals
+        + "%in-numerals:\n"
+               // values below 60 seconds are shown with "sec."
+        + "    =0= sec.;\n"
+               // higher values are shown with colons: %%min-sec is used for
+               // values below 3,600 seconds...
+        + "    60: =%%min-sec=;\n"
+               // ...and %%hr-min-sec is used for values of 3,600 seconds
+               // and above
+        + "    3600: =%%hr-min-sec=;\n"
+        // this rule causes values of less than 10 minutes to show without
+        // a leading zero
+        + "%%min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <0<>>;\n"
+        // this rule set is used for values of 3,600 or more.  Minutes are always
+        // shown, and always shown with two digits
+        + "%%hr-min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        + "    3600/60: <#,##0<:>>>;\n"
+        // the lenient-parse rules allow several different characters to be used
+        // as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This example formats a number of hours in sexagesimal notation (i.e.,
+     * hours, minutes, and seconds).  %with-words formats the value using
+     * words for the units, and %in-numerals formats the value using only
+     * numerals.
+     */
+    public static final String durationInHours =
+        // main entry point for formatting with words
+        "%with-words:\n"
+               // this rule omits minutes and seconds when the value is
+               // an even number of hours
+        + "    x.0: <<[, >%%min-sec>];\n"
+               // these rules take care of the singular and plural forms
+               // of hours
+        + "    0 hours; 1 hour; =#,##0= hours;\n"
+        // this rule set takes the fractional part of the number and multiplies
+        // it by 3,600 (turning it into a number of seconds).  Then it delegates
+        // to %%min-sec-implementation to format the resulting value
+        + "%%min-sec:\n"
+        + "    3600: =%%min-sec-implementation=;\n"
+        // this rule set formats the seconds as either seconds or minutes and
+        // seconds, and takes care of the singular and plural forms of
+        // "minute" and "second"
+        + "%%min-sec-implementation:\n"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+        + "    60/60: 1 minute[, >>];\n"
+        + "    120/60: <0< minutes[, >>];\n"
+
+        // main entry point for formatting in numerals
+        + "%in-numerals:\n"
+               // show minutes even for even numbers of hours
+        + "    x.0: <#,##0<:00;\n"
+               // delegate to %%min-sec2 to format minutes and seconds
+        + "    x.x: <#,##0<:>%%min-sec2>;\n"
+        // this rule set formats minutes when there is an even number of
+        // minutes, and delegates to %%min-sec2-implementation when there
+        // are seconds
+        + "%%min-sec2:\n"
+        + "    60: <00<;\n"
+        + "    3600: <%%min-sec2-implementation<;\n"
+        // these two rule sets are used to format the minutes and seconds
+        + "%%min-sec2-implementation:\n"
+               // if there are fewer than 60 seconds, show the minutes anyway
+        + "    0: 00:=00=;\n"
+               // if there are minutes, format them too, and always use 2 digits
+               // for both minutes and seconds
+        + "    60: =%%min-sec3=;\n"
+        + "%%min-sec3:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        // the lenient-parse rules allow the user to use any of several
+        // characters as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This rule set formats a number of pounds as pounds, shillings, and
+     * pence in the old English system of currency.
+     */
+    public static final String poundsShillingsAndPence =
+        // for values of 1 or more, format the integral part with a pound
+        // sign in front, and show shillings and pence if necessary
+        "%main:\n"
+        + "    x.0: \u00a3<#,##0<[ >%%shillings-and-pence>];\n"
+        // for values between 0 and 1, omit the number of pounds
+        + "    0.x: >%%pence-alone>;\n"
+        // this rule set is used to show shillings and pence.  It multiplies
+        // the fractional part of the number by 240 (the number of pence in a
+        // pound) and uses %%shillings-and-pence-implementation to format
+        // the result
+        + "%%shillings-and-pence:\n"
+        + "    240: <%%shillings-and-pence-implementation<;\n"
+        // this rule set is used to show shillings and pence when there are
+        // no pounds.  It also multiplies the value by 240, and then it uses
+        // %%pence-alone-implementation to format the result.
+        + "%%pence-alone:\n"
+        + "    240: <%%pence-alone-implementation<;\n"
+        // this rule set formats a number of pence when we know we also
+        // have pounds.  We always show shillings (with a 0 if necessary),
+        // but only show pence if the value isn't an even number of shillings
+        + "%%shillings-and-pence-implementation:\n"
+        + "    0/; 0/=0=;\n"
+        + "    12/12: <0</[>0>];\n"
+        // this rule set formats a number of pence when we know there are
+        // no pounds.  Values less than a shilling are shown with "d." (the
+        // abbreviation for pence), and values greater than a shilling are
+        // shown with a shilling bar (and without pence when the value is
+        // an even number of shillings)
+        + "%%pence-alone-implementation:\n"
+        + "    =0= d.;\n"
+        + "    12/12: <0</[>0>];\n";
+
+    //========================================================================
+    // Alternate numeration systems
+    //
+    // These examples show how RuleBasedNumberFormat can be used to format
+    // numbers using non-positional numeration systems.
+    //========================================================================
+
+    /**
+     * Arabic digits.  This example formats numbers in Arabic numerals.
+     * Normally, you'd do this with DecimalFormat, but this shows that
+     * RuleBasedNumberFormat can handle it too.
+     */
+    public static final String arabicNumerals =
+        "0; 1; 2; 3; 4; 5; 6; 7; 8; 9;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<,>>>;\n"
+        + "1,000,000: <<,>>>;\n"
+        + "1,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n"
+        + "-x: ->>;\n"
+        + "x.x: <<.>>;";
+
+    /**
+     * Words for digits.  Follows the same pattern as the Arabic-numerals
+     * example above, but uses words for the various digits (e.g., 123 comes
+     * out as "one two three").
+     */
+    public static final String wordsForDigits =
+        "-x: minus >>;\n"
+        + "x.x: << point >>;\n"
+        + "zero; one; two; three; four; five; six;\n"
+        + "    seven; eight; nine;\n"
+        + "10: << >>;\n"
+        + "100: << >>>;\n"
+        + "1000: <<, >>>;\n"
+        + "1,000,000: <<, >>>;\n"
+        + "1,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * This example formats numbers using Chinese characters in the Arabic
+     * place-value method.  This was used historically in China for a while.
+     */
+    public static final String chinesePlaceValue =
+        "\u3007; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<>>>;\n"
+        + "1,000,000: <<>>>;\n"
+        + "1,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * Roman numerals.  This example has two variants: %modern shows how large
+     * numbers are usually handled today; %historical ses the older symbols for
+     * thousands.
+     */
+    public static final String romanNumerals =
+        "%historical:\n"
+        + "    =%modern=;\n"
+               // in early Roman numerals, 1,000 was shown with a circle
+               // bisected by a vertical line.  Additional thousands were
+               // shown by adding more concentric circles, and fives were
+               // shown by cutting the symbol for next-higher power of 10
+               // in half (the letter D for 500 evolved from this).
+               // We could go beyond 40,000, but Unicode doesn't encode
+               // the symbols for higher numbers/
+        + "    1000: \u2180[>>]; 2000: \u2180\u2180[>>]; 3000: \u2180\u2180\u2180[>>]; 4000: \u2180\u2181[>>];\n"
+        + "    5000: \u2181[>>]; 6000: \u2181\u2180[>>]; 7000: \u2181\u2180\u2180[>>];\n"
+        + "    8000: \u2181\u2180\u2180\u2180[>>]; 9000: \u2180\u2182[>>];\n"
+        + "    10,000: \u2182[>>]; 20,000: \u2182\u2182[>>]; 30,000: \u2182\u2182\u2182[>>];\n"
+        + "    40,000: =#,##0=;\n"
+        + "%modern:\n"
+        + "    ; I; II; III; IV; V; VI; VII; VIII; IX;\n"
+        + "    10: X[>>]; 20: XX[>>]; 30: XXX[>>]; 40: XL[>>]; 50: L[>>];\n"
+        + "    60: LX[>>]; 70: LXX[>>]; 80: LXXX[>>]; 90: XC[>>];\n"
+        + "    100: C[>>]; 200: CC[>>]; 300: CCC[>>]; 400: CD[>>]; 500: D[>>];\n"
+        + "    600: DC[>>]; 700: DCC[>>]; 800: DCCC[>>]; 900: CM[>>];\n"
+               // in modern Roman numerals, high numbers are generally shown
+               // by placing a bar over the letters for the lower numbers:
+               // the bar multiplied a letter's value by 1,000
+        + "    1000: M[>>]; 2000: MM[>>]; 3000: MMM[>>]; 4000: MV\u0306[>>];\n"
+        + "    5000: V\u0306[>>]; 6000: V\u0306M[>>]; 7000: V\u0306MM[>>];\n"
+        + "    8000: V\u0306MMM[>>]; 9000: MX\u0306[>>];\n"
+        + "    10,000: X\u0306[>>]; 20,000: X\u0306X\u0306[>>]; 30,000: X\u0306X\u0306X\u0306[>>];\n"
+        + "    40,000: X\u0306L\u0306[>>]; 50,000: L\u0306[>>]; 60,000: L\u0306X\u0306[>>];\n"
+        + "    70,000: L\u0306X\u0306X\u0306[>>]; 80,000: L\u0306X\u0306X\u0306X\u0306[>>];\n"
+        + "    90,000: X\u0306C\u0306[>>];\n"
+        + "    100,000: C\u0306[>>]; 200,000: C\u0306C\u0306[>>]; 300,000: C\u0306C\u0306[>>];\n"
+        + "    400,000: C\u0306D\u0306[>>]; 500,000: D\u0306[>>]; 600,000: D\u0306C\u0306[>>];\n"
+        + "    700,000: D\u0306C\u0306C\u0306[>>]; 800,000: D\u0306C\u0306C\u0306C\u0306[>>];\n"
+        + "    900,000: =#,##0=;\n";
+
+    /**
+     * Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers
+     * used the letter of their alphabet as numerals.  The first nine letters of
+     * the alphabet repesented the values from 1 to 9, the second nine letters the
+     * multiples of 10, and the remaining letters the multiples of 100.  Since they
+     * ran out of letters at 400, the remaining multiples of 100 were represented
+     * using combinations of the existing letters for the hundreds.  Numbers were
+     * distinguished from words in a number of different ways: the way shown here
+     * uses a single mark after a number consisting of one letter, and a double
+     * mark between the last two letters of a number consisting of two or more
+     * letters.  Two dots over a letter multiplied its value by 1,000.  Also, since
+     * the letter for 10 is the first letter of God's name and the letters for 5 and 6
+     * are letters in God's name, which wasn't supposed to be written or spoken, 15 and
+     * 16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.
+     */
+    public static final String hebrewAlphabetic =
+        // letters for the ones
+        "%%ones:\n"
+        + "    (no zero); \u05d0; \u05d1; \u05d2; \u05d3; \u05d4; \u05d5; \u05d6; \u05d7; \u05d8;\n"
+        // letters for the tens
+        + "%%tens:\n"
+        + "    ; \u05d9; \u05db; \u05dc; \u05de; \u05e0; \u05e1; \u05e2; \u05e4; \u05e6;\n"
+        // letters for the first four hundreds
+        + "%%hundreds:\n"
+        + "    ; \u05e7; \u05e8; \u05e9; \u05ea;\n"
+        // this rule set is used to write the combination of the tens and ones digits
+        // when we know that no other digits precede them: they put the numeral marks
+        // in the right place and properly handle 15 and 16 (I'm using the mathematical
+        // prime characters for the numeral marks because my Unicode font doesn't
+        // include the real Hebrew characters, which look just like the prime marks)
+        + "%%tens-and-ones:\n"
+               // for values less than 10, just use %%ones and put the numeral mark
+               // afterward
+        + "    =%%ones=\u2032;\n"
+               // put the numeral mark at the end for 10, but in the middle for
+               // 11 through 14
+        + "    10: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+               // special-case 15 and 16
+        + "    15: \u05d8\u2033\u05d5; 16: \u05d8\u2033\u05d6;\n"
+               // go back to the normal method at 17
+        + "    17: <%%tens<\u2033>%%ones>;\n"
+               // repeat the rules for 10 and 11 to cover the values from 20 to 99
+        + "    20: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+        // this rule set is used to format numbers below 1,000.  It relies on
+        // %%tens-and-ones to format the tens and ones places, and adds logic
+        // to handle the high hundreds and the numeral marks when there is no
+        // tens digit.  Notice how the rules are paired: all of these pairs of
+        // rules take advantage of the rollback rule: if the value (between 100
+        // and 499) is an even multiple of 100, the rule for 100 is used; otherwise,
+        // the rule for 101 (the following rule) is used.  The first rule in each
+        // pair (the one for the even multiple) places the numeral mark in a different
+        // spot than the second rule in each pair (which knows there are more digits
+        // and relies on the rule supplying them to also supply the numeral mark).
+        // The call to %%null in line 10 is there simply to invoke the rollback
+        // rule.
+        + "%%low-order:\n"
+               // this rule is only called when there are other characters before.
+               // It places the numeral mark before the last digit
+        + "    \u2033=%%ones=;\n"
+               // the rule for 10 places the numeral mark before the 10 character
+               // (because we know it's the last character); the rule for 11 relies
+               // on %%tens-and-ones to place the numeral mark
+        + "    10: \u2033<%%tens<; =%%tens-and-ones=>%%null>;\n"
+               // the rule for 100 places the numeral mark before the 100 character
+               // (we know it's the last character); the rule for 101 recurses to
+               // fill in the remaining digits and the numeral mark
+        + "    100: <%%hundreds<\u2032; <%%hundreds<>>;\n"
+               // special-case the hundreds from 500 to 900 because they consist of
+               // more than one character
+        + "    500: \u05ea\u2033\u05e7; \u05ea\u05e7>>;\n"
+        + "    600: \u05ea\u2033\u05e8; \u05ea\u05e8>>;\n"
+        + "    700: \u05ea\u2033\u05e9; \u05ea\u05e9>>;\n"
+        + "    800: \u05ea\u2033\u05ea; \u05ea\u05ea>>;\n"
+        + "    900: \u05ea\u05ea\u2033\u05e7; \u05ea\u05ea\u05e7>>;\n"
+        // this rule set is used to format values of 1,000 or more.  Here, we don't
+        // worry about the numeral mark, and we add two dots (the Unicode combining
+        // diaeresis character) to ever letter
+        + "%%high-order:\n"
+               // put the ones digit, followed by the diaeresis
+        + "    =%%ones=\u0308;\n"
+               // the tens can be handled with recursion
+        + "    10: <%%tens<\u0308[>>];\n"
+               // still have to special-case 15 and 16
+        + "    15: \u05d8\u0308\u05d5\u0308; 16: \u05d8\u003078\u05d6\u0308;\n"
+               // back to the regular rules at 17
+        + "    17: <%%tens<\u0308[>>];\n"
+               // the hundreds with the dots added (and without worrying about
+               // placing the numeral mark)
+        + "    100: <%%hundreds<\u0308[>>];\n"
+        + "    500: \u05ea\u0308\u05e7\u0308[>>];\n"
+        + "    600: \u05ea\u0308\u05e8\u0308[>>];\n"
+        + "    700: \u05ea\u0308\u05e9\u0308[>>];\n"
+        + "    800: \u05ea\u0308\u05ea\u0308[>>];\n"
+        + "    900: \u05ea\u0308\u05ea\u0308\u05e7\u0308[>>];\n"
+        // this rule set doesn't do anything; it's used by some other rules to
+        // invoke the rollback rule
+        + " %%null:\n"
+        + "    ;\n"
+        // the main rule set.
+        + "%main:\n"
+               // for values below 10, just output the letter and the numeral mark
+        + "    =%%ones=\u2032;\n"
+               // for values from 10 to 99, use %%tens-and-ones to do the formatting
+        + "    10: =%%tens-and-ones=;\n"
+               // for values from 100 to 999, use %%low-order to do the formatting
+        + "    100: =%%low-order=;\n"
+               // for values of 1,000 and over, use %%high-order to do the formatting
+        + "    1000: <%%high-order<[>%%low-order>];\n";
+
+    /**
+     * Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals,
+     * also used the letters of their alphabet as numerals.  There are three now-
+     * obsolete Greek letters that are used as numerals; many fonts don't have them.
+     * Large numbers were handled many different ways; the way shown here divides
+     * large numbers into groups of four letters (factors of 10,000), and separates
+     * the groups with the capital letter mu (for myriad).  Capital letters are used
+     * for values below 10,000; small letters for higher numbers (to make the capital
+     * mu stand out).
+     */
+    public static final String greekAlphabetic =
+        // this rule set is used for formatting numbers below 10,000.  It uses
+        // capital letters.
+        "%%low-order:\n"
+        + "    (no zero); \u0391; \u0392; \u0393; \u0394; \u0395; \u03dc; \u0396; \u0397; \u0398;\n"
+        + "    10: \u0399[>>]; 20: \u039a[>>]; 30: \u039b[>>]; 40: \u039c[>>]; 50: \u039d[>>];\n"
+        + "    60: \u039e[>>]; 70: \u039f[>>]; 80: \u03a0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03a1[>>]; 200: \u03a3[>>]; 300: \u03a4[>>]; 400: \u03a5[>>];\n"
+        + "    500: \u03a6[>>]; 600: \u03a7[>>]; 700: \u03a8[>>]; 800: \u03a9[>>];\n"
+        + "    900: \u03e0[>>];\n"
+               // the thousands are represented by the same numbers as the ones, but
+               // with a comma-like mark added to their left shoulder
+        + "    1000: \u0391\u0313[>>]; 2000: \u0392\u0313[>>]; 3000: \u0393\u0313[>>];\n"
+        + "    4000: \u0394\u0313[>>]; 5000: \u0395\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u0396\u0313[>>]; 8000: \u0397\u0313[>>]; 9000: \u0398\u0313[>>];\n"
+        // this rule set is the same as above, but uses lowercase letters.  It is used
+        // for formatting the groups in numbers above 10,000.
+        + "%%high-order:\n"
+        + "    (no zero); \u03b1; \u03b2; \u03b3; \u03b4; \u03b5; \u03dc; \u03b6; \u03b7; \u03b8;\n"
+        + "    10: \u03b9[>>]; 20: \u03ba[>>]; 30: \u03bb[>>]; 40: \u03bc[>>]; 50: \u03bd[>>];\n"
+        + "    60: \u03be[>>]; 70: \u03bf[>>]; 80: \u03c0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03c1[>>]; 200: \u03c3[>>]; 300: \u03c4[>>]; 400: \u03c5[>>];\n"
+        + "    500: \u03c6[>>]; 600: \u03c7[>>]; 700: \u03c8[>>]; 800: \u03c9[>>];\n"
+        + "    900: \u03c0[>>];\n"
+        + "    1000: \u03b1\u0313[>>]; 2000: \u03b2\u0313[>>]; 3000: \u03b3\u0313[>>];\n"
+        + "    4000: \u03b4\u0313[>>]; 5000: \u03b5\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u03b6\u0313[>>]; 8000: \u03b7\u0313[>>]; 9000: \u03b8\u0313[>>];\n"
+        // the main rule set
+        + "%main:\n"
+               // for values below 10,000, just use %%low-order
+        + "    =%%low-order=;\n"
+               // for values above 10,000, split into two groups of four digits
+               // and format each with %%high-order (putting an M in betwen)
+        + "    10,000: <%%high-order<\u039c>%%high-order>;\n"
+               // for values above 100,000,000, add another group onto the front
+               // and another M
+        + "    100,000,000: <%%high-order<\u039c>>\n";
+
+    /**
+     * A list of all the sample rule sets, used by the demo program.
+     */
+    public static final String[] sampleRuleSets =
+        { usEnglish,
+          ukEnglish,
+          spanish,
+          french,
+          swissFrench,
+          german,
+          italian,
+          swedish,
+          dutch,
+          japanese,
+          greek,
+          russian,
+          hebrew,
+          ordinal,
+          message1,
+          dollarsAndCents,
+          decimalAsFraction,
+          closestFraction,
+          stock,
+          abbEnglish,
+          units,
+          message2,
+          dozens,
+          durationInSeconds,
+          durationInHours,
+          poundsShillingsAndPence,
+          arabicNumerals,
+          wordsForDigits,
+          chinesePlaceValue,
+          romanNumerals,
+          hebrewAlphabetic,
+          greekAlphabetic };
+
+    /**
+     * The displayable names for all the sample rule sets, in the same order as
+     * the preceding array.
+     */
+    public static final String[] sampleRuleSetNames =
+        { "English (US)",
+          "English (UK)",
+          "Spanish",
+          "French (France)",
+          "French (Switzerland)",
+          "German",
+          "Italian",
+          "Swedish",
+          "Dutch",
+          "Japanese",
+          "Greek",
+          "Russian",
+          "Hebrew",
+          "English ordinal abbreviations",
+          "Simple message formatting",
+          "Dollars and cents",
+          "Decimals as fractions",
+          "Closest fraction",
+          "Stock prices",
+          "Abbreviated US English",
+          "Changing dimensions",
+          "Complex message formatting",
+          "Dozens",
+          "Duration (value in seconds)",
+          "Duration (value in hours)",
+          "Pounds, shillings, and pence",
+          "Arabic numerals",
+          "Words for digits",
+          "Chinese place-value notation",
+          "Roman numerals",
+          "Hebrew ahlphabetic numerals",
+          "Greek alphabetic numerals" };
+
+    /**
+     * The base locale for each of the sample rule sets.  The locale is used to
+     * determine DecimalFormat behavior, lenient-parse behavior, and text-display
+     * selection (we have a hack in here to allow display of non-Latin scripts).
+     * Null means the locale setting is irrelevant and the default can be used.
+     */
+    public static final Locale[] sampleRuleSetLocales =
+        { Locale.US,
+          Locale.UK,
+          new Locale("es", "", ""),
+          Locale.FRANCE,
+          new Locale("fr", "CH", ""),
+          Locale.GERMAN,
+          Locale.ITALIAN,
+          new Locale("sv", "", ""),
+          new Locale("nl", "", ""),
+          Locale.JAPANESE,
+          new Locale("el", "", ""),
+          new Locale("ru", "", ""),
+          new Locale("iw", "", ""),
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          Locale.US,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.ENGLISH,
+          null,
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.UK,
+          null,
+          Locale.ENGLISH,
+          new Locale("zh", "", ""),
+          null,
+          new Locale("iw", "", ""),
+          new Locale("el", "", ""),
+          null };
+
+        public static final String[] sampleRuleSetCommentary = {
+            "This demonstration version of the "
+            + "U.S. English spellout rules has four variants: 1) %simplified is a "
+            + "set of rules showing the simple method of spelling out numbers in "
+            + "English: 289 is formatted as \"two hundred eighty-nine\".  2) %alt-teens "
+            + "is the same as %simplified, except that values between 1,000 and 9,999 "
+            + "whose hundreds place isn't zero are formatted in hundreds.  For example, "
+            + "1,983 is formatted as \"nineteen hundred eighty-three,\" and 2,183 is "
+            + "formatted as \"twenty-one hundred eighty-three,\" but 2,083 is still "
+            + "formatted as \"two thousand eighty-three.\"  3) %ordinal formats the "
+            + "values as ordinal numbers in English (e.g., 289 is \"two hundred eighty-"
+            + "ninth\").  4) %default uses a more complicated algorithm to format "
+            + "numbers in a more natural way: 289 is formatted as \"two hundred AND "
+            + "eighty-nine\" and commas are inserted between the thousands groups for "
+            + "values above 100,000.",
+
+            "U.K. English has one significant "
+            + "difference from U.S. English: the names for values of 1,000,000,000 "
+            + "and higher.  In American English, each successive \"-illion\" is 1,000 "
+            + "times greater than the preceding one: 1,000,000,000 is \"one billion\" "
+            + "and 1,000,000,000,000 is \"one trillion.\"  In British English, each "
+            + "successive \"-illion\" is one million times greater than the one before: "
+            + "\"one billion\" is 1,000,000,000,000 (or what Americans would call a "
+            + "\"trillion\"), and \"one trillion\" is 1,000,000,000,000,000,000.  "
+            + "1,000,000,000 in British English is \"one thousand million.\"  (This "
+            + "value is sometimes called a \"milliard,\" but this word seems to have "
+            + "fallen into disuse.)",
+
+            "The Spanish rules are quite similar to "
+            + "the English rules, but there are some important differences: "
+            + "First, we have to provide separate rules for most of the twenties "
+            + "because the ones digit frequently picks up an accent mark that it "
+            + "doesn't have when standing alone.  Second, each multiple of 100 has "
+            + "to be specified separately because the multiplier on 100 very often "
+            + "changes form in the contraction: 500 is \"quinientos,\" not "
+            + "\"cincocientos.\"  In addition, the word for 100 is \"cien\" when "
+            + "standing alone, but changes to \"ciento\" when followed by more digits.  "
+            + "There also some other differences.",
+
+            "French adds some interesting quirks of its "
+            + "own: 1) The word \"et\" is interposed between the tens and ones digits, "
+            + "but only if the ones digit if 1: 20 is \"vingt,\" and 2 is \"vingt-deux,\" "
+            + "but 21 is \"vingt-et-un.\"  2)  There are no words for 70, 80, or 90.  "
+            + "\"quatre-vingts\" (\"four twenties\") is used for 80, and values proceed "
+            + "by score from 60 to 99 (e.g., 73 is \"soixante-treize\" [\"sixty-thirteen\"]).  "
+            + "Numbers from 1,100 to 1,199 are rendered as hundreds rather than "
+            + "thousands: 1,100 is \"onze cents\" (\"eleven hundred\"), rather than "
+            + "\"mille cent\" (\"one thousand one hundred\")",
+
+            "Swiss French differs from French French "
+            + "in that it does have words for 70, 80, and 90.  This rule set shows them, "
+            + "and is simpler as a result.",
+
+            "German also adds some interesting "
+            + "characteristics.  For values below 1,000,000, numbers are customarily "
+            + "written out as a single word.  And the ones digit PRECEDES the tens "
+            + "digit (e.g., 23 is \"dreiundzwanzig,\" not \"zwanzigunddrei\").",
+
+            "Like German, most Italian numbers are "
+            + "written as single words.  What makes these rules complicated is the rule "
+            + "that says that when a word ending in a vowel and a word beginning with "
+            + "a vowel are combined into a compound, the vowel is dropped from the "
+            + "end of the first word: 180 is \"centottanta,\" not \"centoottanta.\"  "
+            + "The complexity of this rule set is to produce this behavior.",
+
+            "Spellout rules for Swedish.",
+
+            "Spellout rules for Dutch.  Notice that in Dutch, as in German,"
+            + "the ones digit precedes the tens digit.",
+
+            "In Japanese, there really isn't any "
+            + "distinction between a number written out in digits and a number "
+            + "written out in words: the ideographic characters are both digits "
+            + "and words.  This rule set provides two variants:  %traditional "
+            + "uses the traditional CJK numerals (which are also used in China "
+            + "and Korea).  %financial uses alternate ideographs for many numbers "
+            + "that are harder to alter than the traditional numerals (one could "
+            + "fairly easily change a one to "
+            + "a three just by adding two strokes, for example).  This is also done in "
+            + "the other countries using Chinese idographs, but different ideographs "
+            + "are used in those places.",
+
+            "Again in Greek we have to supply the words "
+            + "for the multiples of 100 because they can't be derived algorithmically.  "
+            + "Also, the tens dgit changes form when followed by a ones digit: an "
+            + "accent mark disappears from the tens digit and moves to the ones digit.  "
+            + "Therefore, instead of using the [] notation, we actually have to use "
+            + "two separate rules for each multiple of 10 to show the two forms of "
+            + "the word.",
+
+            "Spellout rules for Russian.",
+
+            "Spellout rules for Hebrew.  Hebrew actually has inflected forms for "
+            + "most of the lower-order numbers.  The masculine forms are shown "
+            + "here.",
+
+            "This rule set adds an English ordinal abbreviation to the end of a "
+            + "number.  For example, 2 is formatted as \"2nd\".  Parsing doesn't work with "
+            + "this rule set.  To parse, use DecimalFormat on the numeral.",
+
+            "This is a simple message-formatting example.  Normally one would "
+            + "use ChoiceFormat and MessageFormat to do something this simple, "
+            + "but this shows it could be done with RuleBasedNumberFormat too.  "
+            + "A message-formatting example that might work better with "
+            + "RuleBasedNumberFormat appears later.",
+
+            "The next few examples demonstrate fraction handling.  "
+            + "This example formats a number in one of the two styles often used "
+            + "on checks.  %dollars-and-hundredths formats cents as hundredths of "
+            + "a dollar (23.40 comes out as \"twenty-three and 40/100 dollars\").  "
+            + "%dollars-and-cents formats in dollars and cents (23.40 comes out as "
+            + "\"twenty-three dollars and forty cents\")",
+
+            "This rule set shows the fractional part of the number as a fraction "
+            + "with a power of 10 as the denominator.  Some languages don't spell "
+            + "out the fractional part of a number as \"point one two three,\" but "
+            + "always render it as a fraction.  If we still want to treat the fractional "
+            + "part of the number as a decimal, then the fraction's denominator "
+            + "is always a power of 10.  This example does that: 23.125 is formatted "
+            + "as \"twenty-three and one hundred twenty-five thousandths\" (as opposed "
+            + "to \"twenty-three point one two five\" or \"twenty-three and one eighth\").",
+
+            "Number with closest fraction.  This example formats a value using "
+            + "numerals, but shows the fractional part as a ratio (fraction) rather "
+            + "than a decimal.  The fraction always has a denominator between 2 and 10.",
+
+            "American stock-price formatting.  Non-integral stock prices are still "
+            + "generally shown in eighths or sixteenths of dollars instead of dollars "
+            + "and cents.  This example formats stock prices in this way if possible, "
+            + "and in dollars and cents if not.",
+
+            "The next few examples demonstrate using a RuleBasedNumberFormat to "
+            + "change the units a value is denominated in depending on its magnitude.  "
+            + "The example shows large numbers the way they often appear is nwespapers: "
+            + "1,200,000 is formatted as \"1.2 million\".",
+
+            "This example takes a number of meters and formats it in whatever unit "
+            + "will produce a number with from one to three digits before the decimal "
+            + "point.  For example, 230,000 is formatted as \"230 km\".",
+
+            "A more complicated message-formatting example.  Here, in addition to "
+            + "handling the singular and plural versions of the word, the value is "
+            + "denominated in bytes, kilobytes, or megabytes depending on its magnitude.  "
+            + "Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000), "
+            + "and a megabyte as 1,024 kilobytes (not 1,000).",
+
+            "This example formats a number in dozens and gross.  This is intended to "
+            + "demonstrate how this rule set can be used to format numbers in systems "
+            + "other than base 10.  The \"/12\" after the rules' base values controls this.  "
+            + "Also notice that the base doesn't have to be consistent throughout the "
+            + "whole rule set: we go back to base 10 for values over 1,000.",
+
+            "The next few examples show how a single value can be divided up into major "
+            + "and minor units that don't relate to each other by a factor of 10.  "
+            + "This example formats a number of seconds in sexagesimal notation "
+            + "(i.e., hours, minutes, and seconds).  %with-words formats it with "
+            + "words (3740 is \"1 hour, 2 minutes, 20 seconds\") and %in-numerals "
+            + "formats it entirely in numerals (3740 is \"1:02:20\").",
+
+            "This example formats a number of hours in sexagesimal notation (i.e., "
+            + "hours, minutes, and seconds).  %with-words formats the value using "
+            + "words for the units, and %in-numerals formats the value using only "
+            + "numerals.",
+
+            "This rule set formats a number of pounds as pounds, shillings, and "
+            + "pence in the old English system of currency.",
+
+            "These examples show how RuleBasedNumberFormat can be used to format "
+            + "numbers using non-positional numeration systems.  "
+            + "This example formats numbers in Arabic numerals.  "
+            + "Normally, you'd do this with DecimalFormat, but this shows that "
+            + "RuleBasedNumberFormat can handle it too.",
+
+            "This example follows the same pattern as the Arabic-numerals "
+            + "example, but uses words for the various digits (e.g., 123 comes "
+            + "out as \"one two three\").",
+
+            "This example formats numbers using Chinese characters in the Arabic "
+            + "place-value method.  This was used historically in China for a while.",
+
+            "Roman numerals.  This example has two variants: %modern shows how large "
+            + "numbers are usually handled today; %historical ses the older symbols for "
+            + "thousands.  Not all of the characters are displayable with most fonts.",
+
+            "Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers "
+            + "used the letter of their alphabet as numerals.  The first nine letters of "
+            + "the alphabet repesented the values from 1 to 9, the second nine letters the "
+            + "multiples of 10, and the remaining letters the multiples of 100.  Since they "
+            + "ran out of letters at 400, the remaining multiples of 100 were represented "
+            + "using combinations of the existing letters for the hundreds.  Numbers were "
+            + "distinguished from words in a number of different ways: the way shown here "
+            + "uses a single mark after a number consisting of one letter, and a double "
+            + "mark between the last two letters of a number consisting of two or more "
+            + "letters.  Two dots over a letter multiplied its value by 1,000.  Also, since "
+            + "the letter for 10 is the first letter of God's name and the letters for 5 and 6 "
+            + "are letters in God's name, which wasn't supposed to be written or spoken, 15 and "
+            + "16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.",
+
+            "Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals, "
+            + "also used the letters of their alphabet as numerals.  There are three now-"
+            + "obsolete Greek letters that are used as numerals; many fonts don't have them.  "
+            + "Large numbers were handled many different ways; the way shown here divides "
+            + "large numbers into groups of four letters (factors of 10,000), and separates "
+            + "the groups with the capital letter mu (for myriad).  Capital letters are used "
+            + "for values below 10,000; small letters for higher numbers (to make the capital "
+            + "mu stand out).",
+
+            "This is a custom (user-defined) rule set."
+        };
+}
diff --git a/src/com/ibm/icu/dev/demo/rbnf/package.html b/src/com/ibm/icu/dev/demo/rbnf/package.html
new file mode 100644
index 0000000..8a0507f
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/rbnf/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+RuleBasedNumberFormat demo appliation.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java b/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java
new file mode 100644
index 0000000..72d8304
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java
@@ -0,0 +1,78 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.demo.timescale;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.UniversalTimeScale;
+
+/**
+ * This class demonstrates how to use <code>UniversalTimeScale</code> to
+ * convert from one local time scale to another.
+ * 
+ * @see UniversalTimeScale
+ */
+public class PivotDemo {
+
+    /**
+     * The default constructor.
+     */
+    public PivotDemo()
+    {
+    }
+
+    /**
+     * The <code>main()</code> method uses <code>UniversalTimeScale</code> to
+     * convert from the Java and Unix time scales to the ICU time scale. It uses
+     * a <code>Calendar</code> object to display the ICU time values.
+     * 
+     * @param args the command line arguments.
+     */
+    public static void main(String[] args)
+    {
+        TimeZone utc = new SimpleTimeZone(0, "UTC");
+        Calendar cal = Calendar.getInstance(utc, Locale.ENGLISH);
+        MessageFormat fmt = new MessageFormat("{1} = {0, date, full} {0, time, full}");
+        Object arguments[] = {cal, null};
+        
+        arguments[0] = cal;
+        
+        System.out.println("\nJava test:");
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = " 000000000000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(-62164684800000L, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "-62164684800000L";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(-62135769600000L, UniversalTimeScale.JAVA_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "-62135769600000L";
+        System.out.println(fmt.format(arguments));
+        
+        System.out.println("\nUnix test:");
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0x80000000, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x80000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x00000000";
+        System.out.println(fmt.format(arguments));
+        
+        cal.setTimeInMillis(UniversalTimeScale.toLong(UniversalTimeScale.from(0x7FFFFFFF, UniversalTimeScale.UNIX_TIME), UniversalTimeScale.ICU4C_TIME));
+        arguments[1] = "0x7FFFFFFF";
+        System.out.println(fmt.format(arguments));
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java b/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
new file mode 100644
index 0000000..0386dc6
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
@@ -0,0 +1,299 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.*;
+
+public class AnyTransliterator extends Transliterator {
+    
+    static final boolean DEBUG = false;
+    private String targetName;
+    private RunIterator it;
+    private Position run;
+    
+    
+    public AnyTransliterator(String targetName, UnicodeFilter filter, RunIterator it){
+        super("Any-" + targetName, filter);
+        this.targetName = targetName;
+        this.it = it;
+        run = new Position();
+    }
+    
+    public AnyTransliterator(String targetName, UnicodeFilter filter){
+        this(targetName, filter, new ScriptRunIterator());
+    }
+    
+    static private Transliterator hex = Transliterator.getInstance("[^\\u0020-\\u007E] hex");
+    
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        if (DEBUG) {
+            System.out.println("- handleTransliterate " + hex.transliterate(text.toString())
+                + ", " + toString(offsets));
+        }
+        it.reset(text, offsets);
+        
+        while (it.next(run)) {
+            if (targetName.equalsIgnoreCase(it.getName())) {
+                if (DEBUG) System.out.println("Skipping identical: " + targetName);
+                run.start = run.limit; // show we processed
+                continue; // skip if same
+            }
+            
+            Transliterator t;
+            String id = it.getName() + '-' + targetName;
+            try {
+                t = Transliterator.getInstance(id);
+            } catch (IllegalArgumentException ex) {
+                if (DEBUG) System.out.println("Couldn't find: " + id + ", Trying Latin as Pivot");
+                id = it.getName() + "-Latin; Latin-" + targetName;
+                try {
+                    t = Transliterator.getInstance(id);
+                } catch (IllegalArgumentException ex2) {
+                    if (DEBUG) System.out.println("Couldn't find: " + id);
+                    continue;
+                }
+            }
+            // TODO catch error later!!
+                
+            if (DEBUG) {
+                System.out.println(t.getID());
+                System.out.println("input: " + hex.transliterate(text.toString())
+                 + ", " + toString(run));
+            }
+            
+            if (isIncremental && it.atEnd()) {
+                t.transliterate(text, run);
+            } else {
+                t.finishTransliteration(text, run);
+            }
+            // adjust the offsets in line with the changes
+            it.adjust(run.limit);
+            
+            if (DEBUG) {
+                System.out.println("output: " + hex.transliterate(text.toString())
+                 + ", " + toString(run));
+            }
+        }
+
+        // show how far we got!
+        it.getExpanse(offsets);
+        if (run.start == run.limit) offsets.start = offsets.limit;
+        else offsets.start = run.start;
+        if (DEBUG) {
+            System.out.println("+ handleTransliterate: " + ", " + toString(offsets));
+            System.out.println();
+        }
+    }
+    
+    // should be method on Position
+    public static String toString(Position offsets) {
+        return "[cs: " + offsets.contextStart
+                + ", s: " + offsets.start
+                + ", l: " + offsets.limit
+                + ", cl: " + offsets.contextLimit
+                + "]";
+    }
+    
+    public interface RunIterator {
+        public void reset(Replaceable text, Position expanse);
+        public void getExpanse(Position run);
+        public void reset();
+        public boolean next(Position run);
+        public void getCurrent(Position run);
+        public String getName();
+        public void adjust(int newCurrentLimit);
+        public boolean atEnd();
+    }
+    
+    /**
+     * Returns a series of ranges corresponding to scripts. They will be of the form:
+     * ccccSScSSccccTTcTcccc    - where c is common, S is the first script and T is the second
+     *|            |            - first run
+     *         |            |    - second run
+     * That is, the runs will overlap. The reason for this is so that a transliterator can
+     * consider common characters both before and after the scripts.
+     * The only time that contextStart != start is for the first run 
+     *    (the context is the start context of the entire expanse)
+     * The only time that contextLimit != limit is for the last run 
+     *    (the context is the end context of the entire expanse)
+     */
+    public static class ScriptRunIterator implements RunIterator {
+        private Replaceable text;
+        private Position expanse = new Position();
+        private Position current = new Position();
+        private int script;
+        private boolean done = true;
+        
+
+        public void reset(Replaceable repText, Position expansePos) {
+            set(this.expanse, expansePos);
+            this.text = repText;
+            reset();
+        }
+            
+        public void reset() {
+            done = false;
+            //this.expanse = expanse;
+            script = UScript.INVALID_CODE;
+            // set up first range to be empty, at beginning
+            current.contextStart = expanse.contextStart;
+            current.start = current.limit = current.contextLimit = expanse.start;            
+        }
+            
+        public boolean next(Position run) {
+            if (done) return false;
+            if (DEBUG) {
+                System.out.println("+cs: " + current.contextStart
+                    + ", s: " + current.start
+                    + ", l: " + current.limit
+                    + ", cl: " + current.contextLimit);
+            }
+            // reset start context run to the last end
+            current.start = current.limit;
+            
+            // Phase 1. Backup the START value through COMMON until we get to expanse.start or a real script.
+            int i, cp;
+            int limit = expanse.start;
+            for (i = current.start; i > limit; i -= UTF16.getCharCount(cp)) {
+                cp = text.char32At(i);
+                int scrpt = UScript.getScript(cp);
+                if (scrpt != UScript.COMMON && scrpt != UScript.INHERITED) break;
+            }
+            current.start = i;
+            current.contextStart = (i == limit) ? expanse.contextStart : i; // extend at start
+            
+            // PHASE 2. Move up the LIMIT value through COMMON or single script until we get to expanse.limit
+            int lastScript = UScript.COMMON;
+            //int veryLastScript = UScript.COMMON;
+            limit = expanse.limit; 
+            for (i = current.limit; i < limit; i += UTF16.getCharCount(cp)) {
+                cp = text.char32At(i);
+                int scrpt = UScript.getScript(cp);
+                if (scrpt == UScript.INHERITED) scrpt = UScript.COMMON;
+                if (scrpt != UScript.COMMON) {
+                    // if we find a real script:
+                    //   if we already had a script, bail
+                    //   otherwise set our script
+                    if (lastScript == UScript.COMMON) lastScript = scrpt;
+                    else if (lastScript != scrpt) break;
+                }
+            }
+            current.limit = i;
+            current.contextLimit = (i == limit) ? expanse.contextLimit : i; // extend at end
+            done = (i == limit);
+            script = lastScript;
+            
+            if (DEBUG) {
+                System.out.println("-cs: " + current.contextStart
+                    + ", s: " + current.start
+                    + ", l: " + current.limit
+                    + ", cl: " + current.contextLimit);
+            }
+            
+            set(run, current);
+            return true;
+        }
+        
+        // SHOULD BE METHOD ON POSITION
+        public static void set(Position run, Position current) {
+            run.contextStart = current.contextStart;
+            run.start = current.start;
+            run.limit = current.limit;
+            run.contextLimit = current.contextLimit;
+        }
+        
+        public boolean atEnd() {
+            return current.limit == expanse.limit;
+        }
+        
+        public void getCurrent(Position run) {
+            set(run, current);
+        }
+        
+        public void getExpanse(Position run) {
+            set(run, expanse);
+        }
+        
+        public String getName() {
+            return UScript.getName(script);
+        }
+        
+        public void adjust(int newCurrentLimit) {
+            if (expanse == null) {
+                throw new IllegalArgumentException("Must reset() before calling");
+            }
+            int delta = newCurrentLimit - current.limit;
+            current.limit += delta;
+            current.contextLimit += delta;
+            expanse.limit += delta;
+            expanse.contextLimit += delta;
+        }
+        
+        // register Any-Script for every script.
+        
+        private static Set scriptList = new HashSet();
+        
+        public static void registerAnyToScript() {
+            synchronized (scriptList) {
+                Enumeration sources = Transliterator.getAvailableSources();
+                while(sources.hasMoreElements()) {
+                    String source = (String) sources.nextElement();
+                    if (source.equals("Any")) continue; // to keep from looping
+                    
+                    Enumeration targets = Transliterator.getAvailableTargets(source);
+                    while(targets.hasMoreElements()) {
+                        String target = (String) targets.nextElement();
+                        if (UScript.getCode(target) == null) continue; // SKIP unless we have a script (or locale)
+                        if (scriptList.contains(target)) continue; // already encountered
+                        scriptList.add(target); // otherwise add for later testing
+                        
+                        Set variantSet = add(new TreeSet(), Transliterator.getAvailableVariants(source, target));
+                        if (variantSet.size() < 2) {
+                            AnyTransliterator at = new AnyTransliterator(target, null);
+                            DummyFactory.add(at.getID(), at);
+                        } else {
+                            Iterator variants = variantSet.iterator();
+                            while(variants.hasNext()) {
+                                String variant = (String) variants.next();
+                                AnyTransliterator at = new AnyTransliterator(
+                                    (variant.length() > 0) ? target + "/" + variant : target, null);
+                                DummyFactory.add(at.getID(), at);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        
+        static class DummyFactory implements Transliterator.Factory {
+            static DummyFactory singleton = new DummyFactory();
+            static HashMap m = new HashMap();
+
+            // Since Transliterators are immutable, we don't have to clone on set & get
+            static void add(String ID, Transliterator t) {
+                m.put(ID, t);
+                System.out.println("Registering: " + ID + ", " + t.toRules(true));
+                Transliterator.registerFactory(ID, singleton);
+            }
+            public Transliterator getInstance(String ID) {
+                return (Transliterator) m.get(ID);
+            }
+        }
+        
+        // Nice little Utility for converting Enumeration to collection
+        static Set add(Set s, Enumeration enumeration) {
+            while(enumeration.hasMoreElements()) {
+                s.add(enumeration.nextElement());
+            }
+            return s;
+        }
+        
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/CaseIterator.java b/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
new file mode 100644
index 0000000..0e70659
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
@@ -0,0 +1,554 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.demo.translit;
+import java.util.*;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * Incrementally returns the set of all strings that case-fold to the same value.
+ */
+public class CaseIterator {
+    
+    // testing stuff
+    static Transliterator toName = Transliterator.getInstance("[:^ascii:] Any-Name");
+    static Transliterator toHex = Transliterator.getInstance("[:^ascii:] Any-Hex");
+    static Transliterator toHex2 = Transliterator.getInstance("[[^\u0021-\u007F]-[,]] Any-Hex");
+    
+    // global tables (could be precompiled)
+    private static Map fromCaseFold = new HashMap();
+    private static Map toCaseFold = new HashMap();
+    private static int maxLength = 0;
+    
+    // This exception list is generated on the console by turning on the GENERATED flag, 
+    // which MUST be false for normal operation.
+    // Once the list is generated, it is pasted in here.
+    // A bit of a cludge, but this bootstrapping is the easiest way 
+    // to get around certain complications in the data.
+    
+    private static final boolean GENERATE = false;
+
+    private static final boolean DUMP = false;
+    
+    private static String[][] exceptionList = {
+        // a\N{MODIFIER LETTER RIGHT HALF RING}
+        {"a\u02BE","A\u02BE","a\u02BE",},
+        // ff
+        {"ff","FF","Ff","fF","ff",},
+        // ffi
+        {"ffi","FFI","FFi","FfI","Ffi","F\uFB01","fFI","fFi","ffI","ffi","f\uFB01","\uFB00I","\uFB00i",},
+        // ffl
+        {"ffl","FFL","FFl","FfL","Ffl","F\uFB02","fFL","fFl","ffL","ffl","f\uFB02","\uFB00L","\uFB00l",},
+        // fi
+        {"fi","FI","Fi","fI","fi",},
+        // fl
+        {"fl","FL","Fl","fL","fl",},
+        // h\N{COMBINING MACRON BELOW}
+        {"h\u0331","H\u0331","h\u0331",},
+        // i\N{COMBINING DOT ABOVE}
+        {"i\u0307","I\u0307","i\u0307",},
+        // j\N{COMBINING CARON}
+        {"j\u030C","J\u030C","j\u030C",},
+        // ss
+        {"ss","SS","Ss","S\u017F","sS","ss","s\u017F","\u017FS","\u017Fs","\u017F\u017F",},
+        // st
+        {"st","ST","St","sT","st","\u017FT","\u017Ft",},
+        // t\N{COMBINING DIAERESIS}
+        {"t\u0308","T\u0308","t\u0308",},
+        // w\N{COMBINING RING ABOVE}
+        {"w\u030A","W\u030A","w\u030A",},
+        // y\N{COMBINING RING ABOVE}
+        {"y\u030A","Y\u030A","y\u030A",},
+        // \N{MODIFIER LETTER APOSTROPHE}n
+        {"\u02BCn","\u02BCN","\u02BCn",},
+        // \N{GREEK SMALL LETTER ALPHA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AC\u03B9","\u0386\u0345","\u0386\u0399","\u0386\u03B9","\u0386\u1FBE","\u03AC\u0345","\u03AC\u0399","\u03AC\u03B9","\u03AC\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AE\u03B9","\u0389\u0345","\u0389\u0399","\u0389\u03B9","\u0389\u1FBE","\u03AE\u0345","\u03AE\u0399","\u03AE\u03B9","\u03AE\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B1\u0342","\u0391\u0342","\u03B1\u0342",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u0342\u03B9","\u0391\u0342\u0345","\u0391\u0342\u0399","\u0391\u0342\u03B9","\u0391\u0342\u1FBE",
+            "\u03B1\u0342\u0345","\u03B1\u0342\u0399","\u03B1\u0342\u03B9","\u03B1\u0342\u1FBE","\u1FB6\u0345",
+            "\u1FB6\u0399","\u1FB6\u03B9","\u1FB6\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u03B9","\u0391\u0345","\u0391\u0399","\u0391\u03B9","\u0391\u1FBE","\u03B1\u0345","\u03B1\u0399","\u03B1\u03B9","\u03B1\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B7\u0342","\u0397\u0342","\u03B7\u0342",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u0342\u03B9","\u0397\u0342\u0345","\u0397\u0342\u0399","\u0397\u0342\u03B9","\u0397\u0342\u1FBE",
+            "\u03B7\u0342\u0345","\u03B7\u0342\u0399","\u03B7\u0342\u03B9","\u03B7\u0342\u1FBE","\u1FC6\u0345","\u1FC6\u0399",
+            "\u1FC6\u03B9","\u1FC6\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u03B9","\u0397\u0345","\u0397\u0399","\u0397\u03B9","\u0397\u1FBE","\u03B7\u0345","\u03B7\u0399","\u03B7\u03B9","\u03B7\u1FBE",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03B9\u0308\u0300","\u0345\u0308\u0300","\u0399\u0308\u0300","\u03B9\u0308\u0300","\u1FBE\u0308\u0300",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03B9\u0308\u0301","\u0345\u0308\u0301","\u0399\u0308\u0301","\u03B9\u0308\u0301","\u1FBE\u0308\u0301",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0308\u0342","\u0345\u0308\u0342","\u0399\u0308\u0342","\u03B9\u0308\u0342","\u1FBE\u0308\u0342",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0342","\u0345\u0342","\u0399\u0342","\u03B9\u0342","\u1FBE\u0342",},
+        // \N{GREEK SMALL LETTER RHO}\N{COMBINING COMMA ABOVE}
+        {"\u03C1\u0313","\u03A1\u0313","\u03C1\u0313","\u03F1\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0308\u0300","\u03A5\u0308\u0300","\u03C5\u0308\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0308\u0301","\u03A5\u0308\u0301","\u03C5\u0308\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0308\u0342","\u03A5\u0308\u0342","\u03C5\u0308\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}
+        {"\u03C5\u0313","\u03A5\u0313","\u03C5\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0313\u0300","\u03A5\u0313\u0300","\u03C5\u0313\u0300","\u1F50\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0313\u0301","\u03A5\u0313\u0301","\u03C5\u0313\u0301","\u1F50\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0313\u0342","\u03A5\u0313\u0342","\u03C5\u0313\u0342","\u1F50\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0342","\u03A5\u0342","\u03C5\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C9\u0342","\u03A9\u0342","\u03C9\u0342","\u2126\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u0342\u03B9","\u03A9\u0342\u0345","\u03A9\u0342\u0399","\u03A9\u0342\u03B9","\u03A9\u0342\u1FBE","\u03C9\u0342\u0345","\u03C9\u0342\u0399","\u03C9\u0342\u03B9","\u03C9\u0342\u1FBE","\u1FF6\u0345",
+            "\u1FF6\u0399","\u1FF6\u03B9","\u1FF6\u1FBE","\u2126\u0342\u0345","\u2126\u0342\u0399","\u2126\u0342\u03B9","\u2126\u0342\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u03B9","\u03A9\u0345","\u03A9\u0399","\u03A9\u03B9","\u03A9\u1FBE","\u03C9\u0345","\u03C9\u0399","\u03C9\u03B9","\u03C9\u1FBE","\u2126\u0345","\u2126\u0399","\u2126\u03B9","\u2126\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03CE\u03B9","\u038F\u0345","\u038F\u0399","\u038F\u03B9","\u038F\u1FBE","\u03CE\u0345","\u03CE\u0399","\u03CE\u03B9","\u03CE\u1FBE",},
+        // \N{ARMENIAN SMALL LETTER ECH}\N{ARMENIAN SMALL LETTER YIWN}
+        {"\u0565\u0582","\u0535\u0552","\u0535\u0582","\u0565\u0552","\u0565\u0582",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER ECH}
+        {"\u0574\u0565","\u0544\u0535","\u0544\u0565","\u0574\u0535","\u0574\u0565",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER INI}
+        {"\u0574\u056B","\u0544\u053B","\u0544\u056B","\u0574\u053B","\u0574\u056B",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER XEH}
+        {"\u0574\u056D","\u0544\u053D","\u0544\u056D","\u0574\u053D","\u0574\u056D",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u0574\u0576","\u0544\u0546","\u0544\u0576","\u0574\u0546","\u0574\u0576",},
+        // \N{ARMENIAN SMALL LETTER VEW}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u057E\u0576","\u054E\u0546","\u054E\u0576","\u057E\u0546","\u057E\u0576",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F00\u03B9","\u1F00\u0345","\u1F00\u0399","\u1F00\u03B9","\u1F00\u1FBE","\u1F08\u0345","\u1F08\u0399","\u1F08\u03B9","\u1F08\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F01\u03B9","\u1F01\u0345","\u1F01\u0399","\u1F01\u03B9","\u1F01\u1FBE","\u1F09\u0345","\u1F09\u0399","\u1F09\u03B9","\u1F09\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F02\u03B9","\u1F02\u0345","\u1F02\u0399","\u1F02\u03B9","\u1F02\u1FBE","\u1F0A\u0345","\u1F0A\u0399","\u1F0A\u03B9","\u1F0A\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F03\u03B9","\u1F03\u0345","\u1F03\u0399","\u1F03\u03B9","\u1F03\u1FBE","\u1F0B\u0345","\u1F0B\u0399","\u1F0B\u03B9","\u1F0B\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F04\u03B9","\u1F04\u0345","\u1F04\u0399","\u1F04\u03B9","\u1F04\u1FBE","\u1F0C\u0345","\u1F0C\u0399","\u1F0C\u03B9","\u1F0C\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F05\u03B9","\u1F05\u0345","\u1F05\u0399","\u1F05\u03B9","\u1F05\u1FBE","\u1F0D\u0345","\u1F0D\u0399","\u1F0D\u03B9","\u1F0D\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F06\u03B9","\u1F06\u0345","\u1F06\u0399","\u1F06\u03B9","\u1F06\u1FBE","\u1F0E\u0345","\u1F0E\u0399","\u1F0E\u03B9","\u1F0E\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F07\u03B9","\u1F07\u0345","\u1F07\u0399","\u1F07\u03B9","\u1F07\u1FBE","\u1F0F\u0345","\u1F0F\u0399","\u1F0F\u03B9","\u1F0F\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F20\u03B9","\u1F20\u0345","\u1F20\u0399","\u1F20\u03B9","\u1F20\u1FBE","\u1F28\u0345","\u1F28\u0399","\u1F28\u03B9","\u1F28\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F21\u03B9","\u1F21\u0345","\u1F21\u0399","\u1F21\u03B9","\u1F21\u1FBE","\u1F29\u0345","\u1F29\u0399","\u1F29\u03B9","\u1F29\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F22\u03B9","\u1F22\u0345","\u1F22\u0399","\u1F22\u03B9","\u1F22\u1FBE","\u1F2A\u0345","\u1F2A\u0399","\u1F2A\u03B9","\u1F2A\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F23\u03B9","\u1F23\u0345","\u1F23\u0399","\u1F23\u03B9","\u1F23\u1FBE","\u1F2B\u0345","\u1F2B\u0399","\u1F2B\u03B9","\u1F2B\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F24\u03B9","\u1F24\u0345","\u1F24\u0399","\u1F24\u03B9","\u1F24\u1FBE","\u1F2C\u0345","\u1F2C\u0399","\u1F2C\u03B9","\u1F2C\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F25\u03B9","\u1F25\u0345","\u1F25\u0399","\u1F25\u03B9","\u1F25\u1FBE","\u1F2D\u0345","\u1F2D\u0399","\u1F2D\u03B9","\u1F2D\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F26\u03B9","\u1F26\u0345","\u1F26\u0399","\u1F26\u03B9","\u1F26\u1FBE","\u1F2E\u0345","\u1F2E\u0399","\u1F2E\u03B9","\u1F2E\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F27\u03B9","\u1F27\u0345","\u1F27\u0399","\u1F27\u03B9","\u1F27\u1FBE","\u1F2F\u0345","\u1F2F\u0399","\u1F2F\u03B9","\u1F2F\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F60\u03B9","\u1F60\u0345","\u1F60\u0399","\u1F60\u03B9","\u1F60\u1FBE","\u1F68\u0345","\u1F68\u0399","\u1F68\u03B9","\u1F68\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F61\u03B9","\u1F61\u0345","\u1F61\u0399","\u1F61\u03B9","\u1F61\u1FBE","\u1F69\u0345","\u1F69\u0399","\u1F69\u03B9","\u1F69\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F62\u03B9","\u1F62\u0345","\u1F62\u0399","\u1F62\u03B9","\u1F62\u1FBE","\u1F6A\u0345","\u1F6A\u0399","\u1F6A\u03B9","\u1F6A\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F63\u03B9","\u1F63\u0345","\u1F63\u0399","\u1F63\u03B9","\u1F63\u1FBE","\u1F6B\u0345","\u1F6B\u0399","\u1F6B\u03B9","\u1F6B\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F64\u03B9","\u1F64\u0345","\u1F64\u0399","\u1F64\u03B9","\u1F64\u1FBE","\u1F6C\u0345","\u1F6C\u0399","\u1F6C\u03B9","\u1F6C\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F65\u03B9","\u1F65\u0345","\u1F65\u0399","\u1F65\u03B9","\u1F65\u1FBE","\u1F6D\u0345","\u1F6D\u0399","\u1F6D\u03B9","\u1F6D\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F66\u03B9","\u1F66\u0345","\u1F66\u0399","\u1F66\u03B9","\u1F66\u1FBE","\u1F6E\u0345","\u1F6E\u0399","\u1F6E\u03B9","\u1F6E\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F67\u03B9","\u1F67\u0345","\u1F67\u0399","\u1F67\u03B9","\u1F67\u1FBE","\u1F6F\u0345","\u1F6F\u0399","\u1F6F\u03B9","\u1F6F\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F70\u03B9","\u1F70\u0345","\u1F70\u0399","\u1F70\u03B9","\u1F70\u1FBE","\u1FBA\u0345","\u1FBA\u0399","\u1FBA\u03B9","\u1FBA\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F74\u03B9","\u1F74\u0345","\u1F74\u0399","\u1F74\u03B9","\u1F74\u1FBE","\u1FCA\u0345","\u1FCA\u0399","\u1FCA\u03B9","\u1FCA\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F7C\u03B9","\u1F7C\u0345","\u1F7C\u0399","\u1F7C\u03B9","\u1F7C\u1FBE","\u1FFA\u0345","\u1FFA\u0399","\u1FFA\u03B9","\u1FFA\u1FBE",},
+    };
+    
+    // this initializes the data used to generated the case-equivalents
+
+    static {
+        
+        // Gather up the exceptions in a form we can use
+        
+        if (!GENERATE) {
+            for (int i = 0; i < exceptionList.length; ++i) {
+                String[] exception = exceptionList[i];
+                Set s = new HashSet();
+                // there has to be some method to do the following, but I can't find it in the collections
+                for (int j = 0; j < exception.length; ++j) {
+                    s.add(exception[j]);
+                }
+                fromCaseFold.put(exception[0], s);
+            }
+        }
+        
+        // walk through all the characters, and at every case fold result,
+        // put a set of all the characters that map to that result
+
+        boolean defaultmapping = true; // false for turkish
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            int cat = UCharacter.getType(i);
+            if (cat == Character.UNASSIGNED || cat == Character.PRIVATE_USE) continue;
+            
+            String cp = UTF16.valueOf(i);
+            String mapped = UCharacter.foldCase(cp, defaultmapping);
+            if (mapped.equals(cp)) continue;
+            
+            if (maxLength < mapped.length()) maxLength = mapped.length();
+            
+            // at this point, have different case folding
+            
+            Set s = (Set) fromCaseFold.get(mapped);
+            if (s == null) {
+                s = new HashSet();
+                s.add(mapped); // add the case fold result itself
+                fromCaseFold.put(mapped, s);
+            }
+            s.add(cp);
+            toCaseFold.put(cp, mapped);
+            toCaseFold.put(mapped, mapped); // add mapping to self
+        }
+        
+        // Emit the final data
+
+        if (DUMP) {
+            System.out.println("maxLength = " + maxLength);
+
+            System.out.println("\nfromCaseFold:");
+            Iterator it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                Object key = it.next();
+                System.out.print(" " + toHex2.transliterate((String)key) + ": ");
+                Set s = (Set) fromCaseFold.get(key);
+                Iterator it2 = s.iterator();
+                boolean first = true;
+                while (it2.hasNext()) {
+                    if (first) {
+                        first = false;
+                    } else {
+                        System.out.print(", ");
+                    }
+                    System.out.print(toHex2.transliterate((String)it2.next()));
+                }
+                System.out.println("");
+            }
+
+            System.out.println("\ntoCaseFold:");
+            it = toCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                String value = (String) toCaseFold.get(key);
+                System.out.println(" " + toHex2.transliterate(key) + ": " + toHex2.transliterate(value));
+            }            
+        }
+        
+        // Now convert all those sets into linear arrays
+        // We can't do this in place in Java, so make a temporary target array
+        
+        // Note: This could be transformed into a single array, with offsets into it.
+        // Might be best choice in C.
+        
+        
+        Map fromCaseFold2 = new HashMap();
+        Iterator it = fromCaseFold.keySet().iterator();
+        while (it.hasNext()) {
+            Object key = it.next();
+            Set s = (Set) fromCaseFold.get(key);
+            String[] temp = new String[s.size()];
+            s.toArray(temp);
+            fromCaseFold2.put(key, temp);
+        }
+        fromCaseFold = fromCaseFold2;
+
+        // We have processed everything, so the iterator will now work
+        // The following is normally OFF. 
+        // It is here to generate (under the GENERATE flag) the static exception list.
+        // It must be at the very end of initialization, so that the iterator is functional.
+        // (easiest to do it that way)
+            
+        if (GENERATE) {
+
+            // first get small set of items that have multiple characters
+            
+            Set multichars = new TreeSet();
+            it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                if (UTF16.countCodePoint(key) < 2) continue;
+                multichars.add(key);
+            }            
+            
+            // now we will go through each of them.
+            
+            CaseIterator ci = new CaseIterator();
+            it = multichars.iterator();
+            
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                
+                // here is a nasty complication. Take 'ffi' ligature. We
+                // can't just close it, since we would miss the combination
+                // that includes the 'fi' => "fi" ligature
+                // so first do a pass through, and add substring combinations
+                // we call this a 'partial closure'
+                
+                Set partialClosure = new TreeSet();
+                partialClosure.add(key);
+                
+                if (UTF16.countCodePoint(key) > 2) {
+                    Iterator multiIt2 = multichars.iterator();
+                    while (multiIt2.hasNext()) {
+                        String otherKey = (String) multiIt2.next();
+                        if (otherKey.length() >= key.length()) continue;
+                        int pos = -1;
+                        while (true) {
+                            // The following is not completely general
+                            // but works for the actual cased stuff,
+                            // and should work for future characters, since we won't have
+                            // more ligatures & other oddities.
+                            pos = key.indexOf(otherKey, pos+1);
+                            if (pos < 0) break;
+                            int endPos = pos + otherKey.length();
+                            // we know we have a proper substring,
+                            // so get the combinations
+                            String[] choices = (String[]) fromCaseFold.get(otherKey);
+                            for (int ii = 0; ii < choices.length; ++ii) {
+                                String patchwork = key.substring(0, pos)
+                                    + choices[ii]
+                                    + key.substring(endPos);
+                                partialClosure.add(patchwork);
+                            }
+                        }
+                    }
+                }
+                
+                // now, for each thing in the partial closure, get its
+                // case closure and add it to the final result.
+                
+                Set closure = new TreeSet(); // this will be the real closure
+                Iterator partialIt = partialClosure.iterator();
+                while (partialIt.hasNext()) {
+                    String key2 = (String) partialIt.next();
+                    ci.reset(key2);
+                    for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                        closure.add(temp);
+                    }
+                    // form closure
+                    /*String[] choices = (String[]) fromCaseFold.get(key2);
+                    for (int i = 0; i < choices.length; ++i) {
+                        ci.reset(choices[i]);
+                        String temp;
+                        while (null != (temp = ci.next())) {
+                            closure.add(temp);
+                        }
+                    }
+                    */
+                }
+                
+                // print it out, so that it can be cut and pasted back into this document.
+                
+                Iterator it2 = closure.iterator();
+                System.out.println("\t// " + toName.transliterate(key));
+                System.out.print("\t{\"" + toHex.transliterate(key) + "\",");
+                while (it2.hasNext()) {
+                    String item = (String)it2.next();
+                    System.out.print("\"" + toHex.transliterate(item) + "\",");
+                }
+                System.out.println("},");
+            }
+        }
+    }
+    
+    // ============ PRIVATE CLASS DATA ============ 
+    
+    // pieces that we will put together
+    // is not changed during iteration
+    private int count = 0;
+    private String[][] variants;
+    
+    // state information, changes during iteration
+    private boolean done = false;
+    private int[] counts;
+    
+    // internal buffer for efficiency
+    private StringBuffer nextBuffer = new StringBuffer();
+    
+    // ========================  
+
+    /**
+     * Reset to different source. Once reset, the iteration starts from the beginning.
+     * @param source The string to get case variants for
+     */
+    public void reset(String source) {
+        
+        // allocate arrays to store pieces
+        // using length might be slightly too long, but we don't care much
+        
+        counts = new int[source.length()];
+        variants = new String[source.length()][];
+        
+        // walk through the source, and break up into pieces
+        // each piece becomes an array of equivalent values
+        // TODO: could optimized this later to coalesce all single string pieces
+        
+        String piece = null;
+        count = 0;
+        for (int i = 0; i < source.length(); i += piece.length()) {
+            
+            // find *longest* matching piece
+            String caseFold = null;
+            
+            if (GENERATE) {
+                // do exactly one CP
+                piece = UTF16.valueOf(source, i);
+                caseFold = (String) toCaseFold.get(piece);
+            } else {               
+                int max = i + maxLength;
+                if (max > source.length()) max = source.length();
+                for (int j = max; j > i; --j) {
+                    piece = source.substring(i, j);
+                    caseFold = (String) toCaseFold.get(piece);
+                    if (caseFold != null) break;
+                }
+            }
+            
+            // if we fail, pick one code point
+            if (caseFold == null) {
+                piece = UTF16.valueOf(source, i);
+                variants[count++] = new String[] {piece}; // single item string
+            } else {
+                variants[count++] = (String[])fromCaseFold.get(caseFold);
+            }
+        }
+        reset();
+    }
+    
+    /**
+     * Restart the iteration from the beginning, but with same source
+     */
+    public void reset() {
+        done = false;
+        for (int i = 0; i < count; ++i) {
+            counts[i] = 0;
+        }
+    }
+    
+    /**
+     * Iterates through the case variants.
+     * @return next case variant. Each variant will case-fold to the same value as the source will.
+     * When the iteration is done, null is returned.
+     */
+    public String next() {
+        
+        if (done) return null;
+        int i;
+        
+        // TODO Optimize so we keep the piece before and after the current position
+        // so we don't have so much concatenation
+        
+        // get the result, a concatenation
+        
+        nextBuffer.setLength(0);
+        for (i = 0; i < count; ++i) {
+            nextBuffer.append(variants[i][counts[i]]);
+        }
+        
+        // find the next right set of pieces to concatenate
+        
+        for (i = count-1; i >= 0; --i) {
+            counts[i]++;
+            if (counts[i] < variants[i].length) break;
+            counts[i] = 0;
+        }
+        
+        // if we go too far, bail
+        
+        if (i < 0) {
+            done = true;
+        }
+        
+        return nextBuffer.toString();            
+    }
+        
+        
+    /**
+     * Temporary test, just to see how the stuff works.
+     */
+    static public void main(String[] args) {
+        String[] testCases = {"fiss", "h\u03a3"};
+        CaseIterator ci = new CaseIterator();
+        
+        for (int i = 0; i < testCases.length; ++i) {
+            String item = testCases[i];
+            System.out.println();
+            System.out.println("Testing: " + toName.transliterate(item));
+            System.out.println();
+            ci.reset(item);
+            int count = 0;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                System.out.println(toName.transliterate(temp));
+                count++;
+            }
+            System.out.println("Total: " + count);
+        }
+
+        // generate a list of all caseless characters -- characters whose
+        // case closure is themselves.
+
+        UnicodeSet caseless = new UnicodeSet();
+
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            String cp = UTF16.valueOf(i);
+            ci.reset(cp);
+            int count = 0;
+            String fold = null;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                fold = temp;
+                if (++count > 1) break;
+            }
+            if (count==1 && fold.equals(cp)) {
+                caseless.add(i);
+            }
+        }
+
+        System.out.println("caseless = " + caseless.toPattern(true));
+
+        UnicodeSet not_lc = new UnicodeSet("[:^lc:]");
+        
+        UnicodeSet a = new UnicodeSet();
+        a.set(not_lc);
+        a.removeAll(caseless);
+        System.out.println("[:^lc:] - caseless = " + a.toPattern(true));
+
+        a.set(caseless);
+        a.removeAll(not_lc);
+        System.out.println("caseless - [:^lc:] = " + a.toPattern(true));
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Demo.java b/src/com/ibm/icu/dev/demo/translit/Demo.java
new file mode 100644
index 0000000..7fb9834
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Demo.java
@@ -0,0 +1,1381 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.util.*;
+import java.text.CharacterIterator;
+
+import com.ibm.icu.dev.test.util.Differ;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+
+import java.io.*;
+
+/**
+ * A frame that allows the user to experiment with keyboard
+ * transliteration.  This class has a main() method so it can be run
+ * as an application.  The frame contains an editable text component
+ * and uses keyboard transliteration to process keyboard events.
+ *
+ * <p>Copyright (c) IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ */
+public class Demo extends Frame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 1L;
+    static final boolean DEBUG = false;
+    static final String START_TEXT = "(cut,\u03BA\u03C5\u03C4,\u05D0,\u30AF\u30C8,\u4E80,\u091A\u0941\u0924\u094D)";
+
+    Transliterator translit = null;
+    String fontName = "Arial Unicode MS";
+    int fontSize = 18;
+    
+    
+
+    /*
+    boolean compound = false;
+    Transliterator[] compoundTranslit = new Transliterator[MAX_COMPOUND];
+    static final int MAX_COMPOUND = 128;
+    int compoundCount = 0;
+    */
+
+    TransliteratingTextComponent text = null;
+
+    Menu translitMenu;
+    CheckboxMenuItem translitItem;
+    CheckboxMenuItem noTranslitItem;
+
+    static final String NO_TRANSLITERATOR = "None";
+
+    //private static final String COPYRIGHT =
+    //    "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    public static void main(String[] args) {
+        Frame f = new Demo(600, 200);
+        f.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                com.ibm.icu.dev.demo.impl.DemoApplet.demoFrameClosed();
+//                System.exit(0);
+            }
+        });
+        f.setVisible(true);
+        com.ibm.icu.dev.demo.impl.DemoApplet.demoFrameOpened();
+    }
+
+    public Demo(int width, int height) {
+        super("Transliteration Demo");
+
+        initMenus();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                handleClose();
+            }
+        });
+        
+        text = new TransliteratingTextComponent();
+        Font font = new Font(fontName, Font.PLAIN, fontSize);
+        text.setFont(font);
+        text.setSize(width, height);
+        text.setVisible(true);
+        text.setText(START_TEXT);
+        add(text);
+
+        setSize(width, height);
+        setTransliterator("Latin-Greek", null);
+    }
+
+    private void initMenus() {
+        MenuBar mbar;
+        Menu menu;
+        MenuItem mitem;
+        //CheckboxMenuItem citem;
+        
+        setMenuBar(mbar = new MenuBar());
+        mbar.add(menu = new Menu("File"));
+        menu.add(mitem = new MenuItem("Quit"));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleClose();
+            }
+        });
+/*
+        final ItemListener setTransliteratorListener = new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                CheckboxMenuItem item = (CheckboxMenuItem) e.getSource();
+                if (e.getStateChange() == ItemEvent.DESELECTED) {
+                    // Don't let the current transliterator be deselected.
+                    // Just reselect it.
+                    item.setState(true);
+                } else if (compound) {
+                    // Adding an item to a compound transliterator
+                    handleAddToCompound(item.getLabel());
+                } else if (item != translitItem) {
+                    // Deselect previous choice.  Don't need to call
+                    // setState(true) on new choice.
+                    translitItem.setState(false);
+                    translitItem = item;
+                    handleSetTransliterator(item.getLabel());
+                }
+            }
+        };
+*/
+        /*
+        translitMenu.add(translitItem = noTranslitItem =
+                         new CheckboxMenuItem(NO_TRANSLITERATOR, true));
+        noTranslitItem.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                // Can't uncheck None -- any action here sets None to true
+                setNoTransliterator();
+            }
+        });
+
+        translitMenu.addSeparator();
+        */
+
+/*
+        translitMenu.add(citem = new CheckboxMenuItem("Compound"));
+        citem.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                CheckboxMenuItem item = (CheckboxMenuItem) e.getSource();
+                if (e.getStateChange() == ItemEvent.DESELECTED) {
+                    // If compound gets deselected, then select NONE
+                    setNoTransliterator();
+                } else if (!compound) {
+                    // Switching from non-compound to compound
+                    translitItem.setState(false);
+                    translitItem = item;
+                    translit = null;
+                    compound = true;
+                    compoundCount = 0;
+                    for (int i=0; i<MAX_COMPOUND; ++i) {
+                        compoundTranslit[i] = null;
+                    }
+                }
+            }
+        });
+      
+        translitMenu.addSeparator();
+       */
+
+        /*
+        for (Enumeration e=getSystemTransliteratorNames().elements();
+             e.hasMoreElements(); ) {
+            String s = (String) e.nextElement();
+            translitMenu.add(citem = new CheckboxMenuItem(s));
+            citem.addItemListener(setTransliteratorListener);
+        }
+        */
+        
+        Menu fontMenu = new Menu("Font");
+        String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
+        for (int i = 0; i < fonts.length; ++i) {
+            MenuItem mItem = new MenuItem(fonts[i]);
+            mItem.addActionListener(new FontActionListener(fonts[i]));
+            fontMenu.add(mItem);
+        }
+        mbar.add(fontMenu);
+        
+        Menu sizeMenu = new Menu("Size");
+        int[] sizes = {9, 10, 12, 14, 18, 24, 36, 48, 72};
+        for (int i = 0; i < sizes.length; ++i) {
+            MenuItem mItem = new MenuItem("" + sizes[i]);
+            mItem.addActionListener(new SizeActionListener(sizes[i]));
+            sizeMenu.add(mItem);
+        }
+        mbar.add(sizeMenu);
+        
+        translit = null;
+        
+        mbar.add(translitMenu = new Menu("Transliterator"));
+        
+        translitMenu.add(convertSelectionItem = new MenuItem("Transliterate", 
+            new MenuShortcut(KeyEvent.VK_K)));
+        convertSelectionItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleBatchTransliterate(translit);
+            }
+        });
+        
+        translitMenu.add(swapSelectionItem = new MenuItem("Reverse", 
+            new MenuShortcut(KeyEvent.VK_S)));
+        swapSelectionItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                Transliterator inv;
+                try {
+                    inv = translit.getInverse();
+                } catch (Exception x) {
+                    inv = Transliterator.getInstance("null");
+                }
+                setTransliterator(inv.getID(), null);
+            }
+        });
+        
+        translitMenu.add(convertTypingItem = new MenuItem("No Typing Conversion",
+            new MenuShortcut(KeyEvent.VK_T)));
+        convertTypingItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if (!transliterateTyping) {
+                    text.setTransliterator(translit);
+                    convertTypingItem.setLabel("No Typing Conversion");
+                } else {
+                    text.flush();
+                    text.setTransliterator(null);
+                    convertTypingItem.setLabel("Convert Typing");
+                }
+                transliterateTyping = !transliterateTyping;
+            }
+        });
+        
+        translitMenu.add(historyMenu = new Menu("Recent"));
+        
+        helpDialog = new InfoDialog(this, "Simple Demo", "Instructions",
+           "CTL A, X, C, V have customary meanings.\n"
+         + "Arrow keys, delete and backspace work.\n"
+         + "To get a character from its control point, type the hex, then hit CTL Q"
+        );
+        helpDialog.getArea().setEditable(false);
+        
+       
+        Menu helpMenu;
+        mbar.add(helpMenu = new Menu("Extras"));
+        helpMenu.add(mitem = new MenuItem("Help"));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                helpDialog.show();
+            }
+        });   
+        
+        hexDialog = new InfoDialog(this, "Hex Entry", "Use U+..., \\u..., \\x{...}, or &#x...;",
+           "\\u00E1"
+        );
+        Button button = new Button("Insert");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String hexValue = hexDialog.getArea().getText();
+                text.insertText(fromHex.transliterate(hexValue));
+            }
+        });
+        hexDialog.getBottom().add(button);
+        
+        helpMenu.add(mitem = new MenuItem("Hex...", 
+            new MenuShortcut(KeyEvent.VK_H)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                hexDialog.show();
+            }
+        });
+        
+        // Compound Transliterator
+        
+        compoundDialog = new InfoDialog(this, "Compound Transliterator", "",
+           "[^\\u0000-\\u00FF] hex"
+        );
+        button = new Button("Set");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String compound = "";
+                try {
+                    compound = compoundDialog.getArea().getText();
+                    setTransliterator(compound, null);
+                } catch (RuntimeException ex) {
+                    compoundDialog.getArea().setText(compound + "\n" + ex.getMessage());
+                }
+            }
+        });
+        compoundDialog.getBottom().add(button);
+        
+        translitMenu.add(mitem = new MenuItem("Multiple...", 
+            new MenuShortcut(KeyEvent.VK_M)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                compoundDialog.show();
+            }
+        });
+        
+        // RuleBased Transliterator
+        
+        rulesDialog = new InfoDialog(this, "Rule-Based Transliterator", "",
+           "([A-Z]) > &Hex($1) &Name($1);\r\n" 
+            + "&Hex-Any($1) < ('\\' [uU] [a-fA-F0-9]*);\r\n" 
+            + "&Name-Any($1) < ('{' [^\\}]* '}');"
+        );
+        button = new Button("Set");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                String compound = "";
+                try {
+                    compound = rulesDialog.getArea().getText();
+                    String id = ruleId.getText();
+                    setTransliterator(compound, id);
+                } catch (RuntimeException ex) {
+                    rulesDialog.getArea().setText(compound + "\n#" + ex.getMessage());
+                }
+            }
+        });
+        rulesDialog.getBottom().add(button);
+        ruleId = new TextField("test1", 20);
+        Label temp = new Label(" Name:");
+        rulesDialog.getBottom().add(temp);
+        rulesDialog.getBottom().add(ruleId);
+        
+        
+        translitMenu.add(mitem = new MenuItem("From Rules...", 
+            new MenuShortcut(KeyEvent.VK_R)));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                rulesDialog.show();
+            }
+        });
+        
+        
+        translitMenu.add(mitem = new MenuItem("From File...", 
+            new MenuShortcut(KeyEvent.VK_F)));
+        mitem.addActionListener(new FileListener(this, RULE_FILE));
+        
+        translitMenu.add(mitem = new MenuItem("Test File..."));
+        mitem.addActionListener(new FileListener(this, TEST_FILE));
+        
+        // Flesh out the menu with the installed transliterators
+        
+        translitMenu.addSeparator();
+        
+        Iterator sources = add(new TreeSet(), Transliterator.getAvailableSources()).iterator();
+        while(sources.hasNext()) {
+            String source = (String) sources.next();
+            Iterator targets = add(new TreeSet(), Transliterator.getAvailableTargets(source)).iterator();
+            Menu targetMenu = new Menu(source);
+            while(targets.hasNext()) {
+                String target = (String) targets.next();
+                Set variantSet = add(new TreeSet(), Transliterator.getAvailableVariants(source, target));
+                if (variantSet.size() < 2) {
+                    mitem = new MenuItem(target);
+                    mitem.addActionListener(new TransliterationListener(source + "-" + target));
+                    targetMenu.add(mitem);
+                } else {
+                    Iterator variants = variantSet.iterator();
+                    Menu variantMenu = new Menu(target);
+                    while(variants.hasNext()) {
+                        String variant = (String) variants.next();
+                        String menuName = variant.length() == 0 ? "<default>" : variant;
+                        //System.out.println("<" + source + "-" + target + "/" + variant + ">, <" + menuName + ">");
+                        mitem = new MenuItem(menuName);
+                        mitem.addActionListener(new TransliterationListener(source + "-" + target + "/" + variant));
+                        variantMenu.add(mitem);
+                    }
+                    targetMenu.add(variantMenu);
+                }
+            }
+            translitMenu.add(targetMenu);
+        }
+        
+        
+    }
+    
+    static final int RULE_FILE = 0, TEST_FILE = 1;
+    //
+    static class FileListener implements ActionListener {
+        Demo frame;
+        int choice;
+        
+        FileListener(Demo frame, int choice) {
+            this.frame = frame;
+            this.choice = choice;
+        }
+        
+        public void actionPerformed(ActionEvent e) {
+            String id = frame.translit.getID();
+            int slashPos = id.indexOf('/');
+            String variant = "";
+            if (slashPos >= 0) {
+                variant = "_" + id.substring(slashPos+1);
+                id = id.substring(0, slashPos);
+            }
+            
+            FileDialog fileDialog = new FileDialog(frame, "Input File");
+            fileDialog.setFile("Test_" + id + ".txt");
+            fileDialog.show();
+            String fileName = fileDialog.getFile();
+            String fileDirectory = fileDialog.getDirectory();
+            if (fileName != null) {
+                try {
+                    File f = new File(fileDirectory, fileName);
+                    if (choice == RULE_FILE) {
+                        
+                        // read stuff into buffer
+                        
+                        StringBuffer buffer = new StringBuffer();
+                        FileInputStream fis = new FileInputStream(f);
+                        InputStreamReader isr = new InputStreamReader(fis, "UTF8");
+                        BufferedReader br = new BufferedReader(isr, 32*1024);
+                        while (true) {
+                            String line = br.readLine();
+                            if (line == null) break;
+                            if (line.length() > 0 && line.charAt(0) == '\uFEFF') line = line.substring(1); // strip BOM
+                            buffer.append('\n');
+                            buffer.append(line);
+                        }
+                        br.close();
+                        
+                        // Transform file name into id
+                        if (fileName.startsWith("Transliterator_")) {
+                            fileName = fileName.substring("Transliterator_".length());
+                        }
+                        int pos = fileName.indexOf('_');
+                        if (pos < 0) {
+                            id = fileName;
+                        } else {
+                            id = fileName.substring(0, pos) + "-";
+                            int pos2 = fileName.indexOf('_', pos+1);
+                            if (pos2 < 0) {
+                                id += fileName.substring(pos+1);
+                            } else {
+                                id += fileName.substring(pos+1, pos2) + "/" + fileName.substring(pos2 + 1);
+                            }
+                        }                        
+                        pos = id.lastIndexOf('.');
+                        if (pos >= 0) id = id.substring(0, pos);
+                        
+                        // Now set
+                        
+                        frame.setTransliterator(buffer.toString(), id);
+                    } else if (choice == TEST_FILE) {
+                        genTestFile(f, frame.translit, variant);
+                    }
+                } catch (Exception e2) {
+                    e2.printStackTrace();
+                    System.out.println("Problem opening/reading: " + fileDirectory + ", " + fileName);
+                }
+            }
+            fileDialog.dispose();
+        }
+    }
+    
+
+    boolean transliterateTyping = true;
+    Transliterator fromHex = Transliterator.getInstance("Hex-Any");
+    InfoDialog helpDialog;
+    InfoDialog hexDialog;
+    InfoDialog compoundDialog;
+    InfoDialog rulesDialog;
+    TextField ruleId;
+    MenuItem convertSelectionItem = null;
+    MenuItem swapSelectionItem = null;
+    MenuItem convertTypingItem = null;
+    Menu historyMenu;
+    Map historyMap = new HashMap();
+    Set historySet = new TreeSet(new Comparator() {
+            public int compare(Object a, Object b) {
+                MenuItem aa = (MenuItem)a;
+                MenuItem bb = (MenuItem)b;
+                return aa.getLabel().compareTo(bb.getLabel());
+            }
+        });
+        
+    // ADD Factory since otherwise getInverse blows out
+    static class DummyFactory implements Transliterator.Factory {
+        static DummyFactory singleton = new DummyFactory();
+        static HashMap m = new HashMap();
+
+        // Since Transliterators are immutable, we don't have to clone on set & get
+        static void add(String ID, Transliterator t) {
+            m.put(ID, t);
+            System.out.println("Registering: " + ID + ", " + t.toRules(true));
+            Transliterator.registerFactory(ID, singleton);
+        }
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(ID);
+        }
+    }
+    
+    static void printBreaks(int num, String testSource, BreakIterator brkItr) {
+        String result = "";
+        int lastPos = 0;
+        while (true) {
+            int pos = brkItr.next();
+            if (pos == BreakIterator.DONE) break;
+            result += testSource.substring(lastPos, pos) + "&";
+            lastPos = pos;
+            System.out.println(pos);
+        }
+        System.out.println("Test" + num + ": " + result);
+    }
+    
+    static void printIteration(int num, String testSource, CharacterIterator ci) {
+        String result = "";
+        while (true) {
+            char ch = ci.next();
+            if (ch == CharacterIterator.DONE) break;
+            result += ch + "(" + ci.getIndex() + ")";
+        }
+        System.out.println("Test" + num + ": " + result);
+    }
+    
+    static void printSources() {
+        String[] list = {"Latin-ThaiLogical", "ThaiLogical-Latin", "Thai-ThaiLogical", "ThaiLogical-Thai"};
+        UnicodeSet all = new UnicodeSet();
+        for (int i = 0; i < list.length; ++i) {
+            Transliterator tr = Transliterator.getInstance(list[i]);
+            UnicodeSet src = tr.getSourceSet();
+            System.out.println(list[i] + ": " + src.toPattern(true));
+            all.addAll(src);
+        }
+        System.out.println("All: " + all.toPattern(true));
+        UnicodeSet rem = new UnicodeSet("[[:latin:][:thai:]]");
+        System.out.println("missing from [:latin:][:thai:]: " + all.removeAll(rem).toPattern(true));
+    }
+    
+    // 200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+
+    static Transliterator title = Transliterator.getInstance("title");
+    static String hexAndNameRules = "    ([:c:]) > \\u200E &hex/unicode($1) ' ( ) ' &name($1) \\u200E ' ';"
+        + "([:mark:]) > \\u200E &hex/unicode($1) ' ( ' \\u200E \u25CC $1 \\u200E ' ) ' &name($1) \\u200E ' ';"
+        + "(.) > \\u200E &hex/unicode($1) ' ( ' \\u200E $1 \\u200E ' ) ' &name($1) ' ' \\u200E;";
+
+    static Transliterator hexAndName = Transliterator.createFromRules("any-hexAndName", 
+        hexAndNameRules, Transliterator.FORWARD);
+    
+
+
+    //static Transliterator upper = Transliterator.getInstance("upper");
+     
+    static final byte NONE = 0, TITLEWORD = 1, TITLELINE = 2;
+    
+    static void genTestFile(File sourceFile, Transliterator translit, String variant) {
+        try {
+            
+            System.out.println("Reading: " + sourceFile.getCanonicalPath());
+            BufferedReader in = new BufferedReader(
+                new InputStreamReader(
+                    new FileInputStream(sourceFile), "UTF-8"));
+            String targetFile = sourceFile.getCanonicalPath();
+            int dotPos = targetFile.lastIndexOf('.');
+            if (dotPos >= 0) targetFile = targetFile.substring(0,dotPos);
+            targetFile += variant;
+            
+            File outFile = new File(targetFile + ".html");
+            System.out.println("Writing: " + outFile.getCanonicalPath());
+            
+            PrintWriter out = new PrintWriter(
+                new BufferedWriter(
+                    new OutputStreamWriter(
+                        new FileOutputStream(outFile), "UTF-8")));
+                        
+            String direction = "";
+            String id = translit.getID();
+            if (id.indexOf("Arabic") >= 0 || id.indexOf("Hebrew") >= 0) {
+                direction = " direction: rtl;";
+            }
+            boolean testRoundTrip = true;
+            boolean generateSets = true;
+            if (id.startsWith("Han-") || id.startsWith("ja-")) {
+                testRoundTrip = false;
+                generateSets = false;
+            }
+            out.println("<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
+            out.println("<style><!--");
+            out.println("td, th       { vertical-align: top; border: 1px solid black }");
+            out.println("td.s       { background-color: #EEEEEE;" + direction + " }");
+            out.println("td.r       { background-color: #CCCCCC;" + direction + " }");
+            out.println("td.n       { background-color: #FFFFCC; }");
+            out.println("td.title       { border: 0px solid black}");
+            out.println("span.d       { background-color: #FF6666 }");
+            out.println("span.r       { background-color: #66FF66 }");
+
+            out.println("body         { font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial, sans-serif; margin: 5 }");
+            out.println("--></style>");
+            out.println("<title>" + id + " Transliteration Check</title></head>");
+            out.println("<body bgcolor='#FFFFFF'><p>See <a href='Test_Instructions.html'>Test_Instructions.html</a> for details.</p>");
+            out.println("<table>");
+            
+            //out.println("<tr><th width='33%'>Thai</th><th width='33%'>Latin</th><th width='33%'>Thai</th></tr>");
+  
+            Transliterator tl = translit;
+            Transliterator lt = tl.getInverse();
+            
+            Transliterator ltFilter = tl.getInverse();
+            ltFilter.setFilter(new UnicodeSet("[:^Lu:]"));
+            Transliterator tlFilter = lt.getInverse();
+            tlFilter.setFilter(new UnicodeSet("[:^Lu:]"));
+            
+            //Transliterator.getInstance("[:^Lu:]" +  lt.getID());
+            
+            BreakIterator sentenceBreak = BreakIterator.getSentenceInstance();
+            
+            byte titleSetting = TITLELINE;
+            //boolean upperfilter = false;
+            boolean first = true;
+            while (true) {
+                String line = in.readLine();
+                if (line == null) break;
+                line = line.trim();
+                if (line.length() == 0) continue;
+                if (line.charAt(0) == '\uFEFF') line = line.substring(1); // remove BOM
+                
+                if (line.charAt(0) == '#') continue; // comments
+                
+                if (line.equals("@TITLECASE@")) {
+                    titleSetting = TITLEWORD;
+                    out.println("<tr><td colspan='2' class='title'><b>Names</b></td></tr>");
+                    continue;
+                } else if (line.equals("@UPPERFILTER@")) {
+                    //upperfilter = true;
+                    continue;
+                } else if (line.startsWith("@SET")) {
+                    UnicodeSet s = new UnicodeSet(line.substring(4).trim());
+                    out.println("<tr><td colspan='2' class='title'><b>Characters</b></td></tr>");
+                    UnicodeSetIterator it = new UnicodeSetIterator(s);
+                    while (it.next()) {
+                        addSentenceToTable(out, it.codepoint != UnicodeSetIterator.IS_STRING 
+                            ? UTF16.valueOf(it.codepoint)
+                            : it.string,
+                            NONE, true, testRoundTrip, first, tl, lt);
+                    }
+                    continue;
+                }
+                        
+                sentenceBreak.setText(line);
+                int start = 0;
+                while (true) {
+                    int end = sentenceBreak.next();
+                    if (end == BreakIterator.DONE) break;
+                    String coreSentence = line.substring(start, end);
+                    //System.out.println("Core: " + hex.transliterate(coreSentence));
+                    end = start;
+                    
+                    int oldPos = 0;
+                    while (oldPos < coreSentence.length()) {
+                        // hack, because sentence doesn't seem to be working right
+                        int pos = coreSentence.indexOf(". ", oldPos);
+                        if (pos < 0) pos = coreSentence.length(); else pos = pos+2;
+                        int pos2 = coreSentence.indexOf('\u3002', oldPos);
+                        if (pos2 < 0) pos2 = coreSentence.length(); else pos2 = pos2 + 1;
+                        if (pos > pos2) pos = pos2;
+                        String sentence = coreSentence.substring(oldPos, pos).trim();
+                        //System.out.println("Sentence: " + hex.transliterate(coreSentence));
+                        oldPos = pos;
+                        
+                        addSentenceToTable(out, sentence,
+                            titleSetting, false, testRoundTrip, first, tl, lt);
+                        
+                        first = false;
+                    }
+                }
+            }
+            out.println("</table></body>");
+            out.close();
+            
+            // Now write the source/target sets
+            if (generateSets) {
+                outFile = new File(targetFile + "_Sets.html");
+                System.out.println("Writing: " + outFile.getCanonicalPath());
+                
+                out = new PrintWriter(
+                    new BufferedWriter(
+                        new OutputStreamWriter(
+                            new FileOutputStream(outFile), "UTF-8")));
+                out.println("<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
+                out.println("<style><!--");
+                out.println("body         { font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', Arial, sans-serif; margin: 5 }");
+                out.println("--></style>");
+                out.println("<title>" + id + " Transliteration Sets</title></head>");
+                out.println("<body bgcolor='#FFFFFF'>");
+                
+                int dashPos = id.indexOf('-');
+                int slashPos = id.indexOf('/');
+                if (slashPos < 0) slashPos = id.length();
+                UnicodeSet sourceSuper = null;
+                try {
+                    String temp = id.substring(0,dashPos);
+                    if (temp.equals("ja")) sourceSuper = new UnicodeSet("[[:Han:][:hiragana:][:katakana:]]");
+                    else sourceSuper = new UnicodeSet("[[:" + temp + ":][:Mn:][:Me:]]");
+                } catch (Exception e) {}
+                
+                UnicodeSet targetSuper = null;
+                try {
+                    targetSuper = new UnicodeSet("[[:" + id.substring(dashPos+1, slashPos) + ":][:Mn:][:Me:]]");
+                } catch (Exception e) {}
+                
+                int nfdStyle = CLOSE_CASE | CLOSE_FLATTEN | CLOSE_CANONICAL;
+                int nfkdStyle = nfdStyle | CLOSE_COMPATIBILITY;
+                out.println("<ul>");
+                out.println("<p><b>None</b></p>");
+                showSets(out, translit, lt, null, null, 0);
+                out.println("<p><b>NFD</b></p>");
+                showSets(out, translit, lt, sourceSuper, targetSuper, nfdStyle);
+                out.println("<p><b>NFKD</b></p>");
+                showSets(out, translit, lt, sourceSuper, targetSuper, nfkdStyle);
+                out.println("</ul></body>");
+                out.close();
+            }
+            System.out.println("Done Writing");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    static void addSentenceToTable(PrintWriter out, String sentence, 
+            byte titleSetting, boolean addName, boolean testRoundTrip, boolean first,
+            Transliterator tl, Transliterator lt) {
+        if (sentence.length() == 0) return; // skip empty lines
+        
+        String originalShow = sentence;
+        String latin;
+        latin = tl.transliterate(saveAscii.transliterate(sentence));
+
+        String latinShow = latin;
+        if (titleSetting == TITLEWORD) {
+            latinShow = title.transliterate(latin);
+        } else if (titleSetting == TITLELINE) {
+            latinShow = titlecaseFirstWord(latinShow);
+        }
+        latinShow = restoreAscii.transliterate(latinShow);
+                        
+        String reverse;
+        reverse = restoreAscii.transliterate(lt.transliterate(latin));
+                        
+        String NFKDSentence = Normalizer.normalize(sentence, Normalizer.NFKD);
+        String NFKDLatin = Normalizer.normalize(latin, Normalizer.NFKD);
+        String NFKDReverse = Normalizer.normalize(reverse, Normalizer.NFKD);
+        
+        if (latinShow.length() == 0) {
+            latinShow = "<i>empty</i>";
+        } else if (NFKDSentence.equals(NFKDLatin)) {
+            latinShow = "<span class='r'>" + latinShow + "</span>";
+        }
+        String reverseShow = reverse;
+        
+        if (testRoundTrip && !NFKDReverse.equals(NFKDSentence)) {
+            int minLen = reverse.length();
+            if (minLen > sentence.length()) minLen = sentence.length();
+            int i;
+            for (i = 0; i < minLen; ++i) {
+                if (reverse.charAt(i) != sentence.charAt(i)) break;
+            }
+            //originalShow = sentence.substring(0,i) + "<span class='d'>" + sentence.substring(i) + "</span>";
+            reverseShow = reverseShow.length() == 0 
+                ? "<i>empty</i>" 
+                //: reverse.substring(0,i) + "<span class='d'>" + reverse.substring(i) + "</span>";
+                : showDifference(sentence, reverse);
+            out.println("<tr><td class='s'" + (first ? " width='50%'>" : ">") + originalShow 
+                + "</td><td rowSpan='2'>" + latinShow
+                + "</td></tr><tr><td class='r'>" + reverseShow
+                + "</td></tr>");
+        } else {
+            out.println("<tr><td class='s'" + (first ? " width='50%'>" : ">") + originalShow 
+                + "</td><td>" + latinShow
+                + "</td></tr>");
+        }
+        if (addName) {
+            latinShow = hexAndName.transliterate(latin);
+            if (latinShow.length() == 0) latinShow = "<i>empty</i>";
+            originalShow = hexAndName.transliterate(sentence);
+            if (originalShow.length() == 0) originalShow = "<i>empty</i>";
+
+            out.println("<tr><td class='n'>" + originalShow
+                + "</td><td class='n'>" + latinShow
+                + "</td></tr>");
+        }
+        out.println("<tr><td></td></tr>");
+        
+    }
+    
+    static String showDifference(String as, String bs) {
+        Differ differ = new Differ(300, 3);
+        StringBuffer out = new StringBuffer();
+        int max = as.length();
+        if (max < bs.length()) max = bs.length();
+        for (int j = 0; j <= max; ++j) {
+            if (j < as.length()) differ.addA(as.substring(j, j+1));
+            if (j < bs.length()) differ.addB(bs.substring(j, j+1));
+            differ.checkMatch(j == max);
+
+            if (differ.getACount() != 0 || differ.getBCount() != 0) {
+                out.append("...");
+                if (differ.getACount() != 0) {
+                    out.append("<span class='r'>");
+                    for (int i = 0; i < differ.getACount(); ++i) {
+                        out.append(differ.getA(i));
+                    }
+                    out.append("</span>");
+                }
+                if (differ.getBCount() != 0) {
+                    out.append("<span class='d'>");
+                    for (int i = 0; i < differ.getBCount(); ++i) {
+                        out.append(differ.getB(i));
+                    }
+                    out.append("</span>");
+                }
+                out.append("...");
+            }
+        }
+        return out.toString();
+    }
+    
+    static void showSets(PrintWriter out, Transliterator translit, Transliterator inverse,
+      UnicodeSet sourceSuper, UnicodeSet targetSuper, int options) {
+        out.println("<li>Source Set:<ul><li>" +         toPattern(closeUnicodeSet(translit.getSourceSet(), options), sourceSuper) + "</li></ul></li>");
+        out.println("<li>Reverse Target Set:<ul><li>" + toPattern(closeUnicodeSet(inverse.getTargetSet(),  options), sourceSuper) + "</li></ul></li>");
+        out.println("<li>Target Set:<ul><li>" +         toPattern(closeUnicodeSet(translit.getTargetSet(), options), targetSuper) + "</li></ul></li>");
+        out.println("<li>Reverse Source Set:<ul><li>" + toPattern(closeUnicodeSet(inverse.getSourceSet(),  options), targetSuper) + "</li></ul></li>");
+    }
+        
+    static final int CLOSE_CASE = 1, CLOSE_FLATTEN = 2, CLOSE_CANONICAL = 4, CLOSE_COMPATIBILITY = 8;
+    
+    static UnicodeSet closeUnicodeSet(UnicodeSet source, int options) {
+        if (options == 0) return source;
+        
+        UnicodeSetIterator it = new UnicodeSetIterator(source);
+        UnicodeSet additions = new UnicodeSet(); // to avoid messing up iterator
+        UnicodeSet removals = new UnicodeSet(); // to avoid messing up iterator
+        String base;
+        int cp;
+        
+        // Add all case equivalents
+        if ((options & CLOSE_CASE) != 0) {
+            while (it.next()) {
+                cp = it.codepoint;
+                if (cp == UnicodeSetIterator.IS_STRING) continue;
+                int type = UCharacter.getType(cp);
+                if (type == Character.UPPERCASE_LETTER || type == Character.LOWERCASE_LETTER || type == Character.TITLECASE_LETTER) {
+                    additions.add(UCharacter.toLowerCase(UTF16.valueOf(cp)));
+                    additions.add(UCharacter.toUpperCase(UTF16.valueOf(cp)));
+                }
+            }
+            source.addAll(additions);
+        }
+       
+        // Add the canonical closure of all strings and characters in source
+        if ((options & CLOSE_CANONICAL) != 0) {
+            it.reset();
+            additions.clear();
+            CanonicalIterator ci = new CanonicalIterator(".");
+            while (it.next()) {
+                if (it.codepoint == UnicodeSetIterator.IS_STRING) base = it.string;
+                else base = UTF16.valueOf(it.codepoint);
+                ci.setSource(base);
+                while (true) {
+                    String trial = ci.next();
+                    if (trial == null) break;
+                    if (trial.equals(base)) continue;
+                    additions.add(trial);
+                }
+            }
+            source.addAll(additions);
+        }
+
+        // flatten strings
+        if ((options & CLOSE_FLATTEN) != 0) {
+            it.reset();
+            additions.clear();
+            while (it.next()) {
+                if (it.codepoint != UnicodeSetIterator.IS_STRING) continue;
+                additions.addAll(it.string);
+                removals.add(it.string);
+                //System.out.println("flattening '" + hex.transliterate(it.string) + "'");
+            }
+            source.addAll(additions);
+            source.removeAll(removals);
+        }
+       
+        // Now add decompositions of characters in source
+        if ((options & CLOSE_COMPATIBILITY) != 0) {
+            it.reset(source);
+            additions.clear();
+            while (it.next()) {
+                if (it.codepoint == UnicodeSetIterator.IS_STRING) base = it.string;
+                else base = UTF16.valueOf(it.codepoint);
+                if (Normalizer.isNormalized(base, Normalizer.NFKD,0)) continue;
+                String decomp = Normalizer.normalize(base, Normalizer.NFKD);
+                additions.add(decomp);
+            }
+            source.addAll(additions);
+            
+            // Now add any other character that decomposes to a character in source
+            for (cp = 0; cp < 0x10FFFF; ++cp) {
+                if (!UCharacter.isDefined(cp)) continue;
+                if (Normalizer.isNormalized(cp, Normalizer.NFKD,0)) continue;
+                if (source.contains(cp)) continue;
+                
+                String decomp = Normalizer.normalize(cp, Normalizer.NFKD);
+                if (source.containsAll(decomp)) {
+                    // System.out.println("Adding: " + Integer.toString(cp,16) + " " + UCharacter.getName(cp));
+                    source.add(cp);
+                }
+            }
+        }
+        
+        return source;
+    }
+    
+    static String toPattern(UnicodeSet source, UnicodeSet superset) {
+        if (superset != null) {
+            source.removeAll(superset);
+            return "[" + superset.toPattern(true) + " " + source.toPattern(true) + "]";
+        }
+        return source.toPattern(true);
+    }
+    
+    static BreakIterator bi = BreakIterator.getWordInstance();
+    
+    static String titlecaseFirstWord(String line) {
+        // search for first word with letters. If the first letter is lower, then titlecase it.
+        bi.setText(line);
+        int start = 0;
+        while (true) {
+            int end = bi.next();
+            if (end == BreakIterator.DONE) break;
+            int firstLetterType = getFirstLetterType(line, start, end);
+            if (firstLetterType != Character.UNASSIGNED) {
+                if (firstLetterType != Character.LOWERCASE_LETTER) break;
+                line = line.substring(0, start) 
+                    + UCharacter.toTitleCase(line.substring(start, end), bi)
+                    + line.substring(end);
+                break;
+            }
+            end = start;
+        }
+        return line;
+    }
+    
+    static final int LETTER_MASK = 
+          (1<<Character.UPPERCASE_LETTER)
+        | (1<<Character.LOWERCASE_LETTER)
+        | (1<<Character.TITLECASE_LETTER)
+        | (1<<Character.MODIFIER_LETTER)
+        | (1<<Character.OTHER_LETTER)
+        ;
+    
+    static int getFirstLetterType(String line, int start, int end) {
+        int cp;
+        for (int i = start; i < end; i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(line, i);
+            int type = UCharacter.getType(cp);
+            if (((1<<type) & LETTER_MASK) != 0) return type;
+        }
+        return Character.UNASSIGNED;
+    }
+    
+    static void printNames(UnicodeSet s, String targetFile) {
+        try {
+            File outFile = new File(targetFile);
+            System.out.println("Writing: " + outFile.getCanonicalPath());
+                
+            PrintWriter out = new PrintWriter(
+                new BufferedWriter(
+                    new OutputStreamWriter(
+                        new FileOutputStream(outFile), "UTF-8")));
+            UnicodeSet main = new UnicodeSet();
+            
+            UnicodeSet others = new UnicodeSet();
+            UnicodeSetIterator it = new UnicodeSetIterator(s);
+            while (it.next()) {
+                if (!UCharacter.isDefined(it.codepoint)) continue;
+                if (!Normalizer.isNormalized(it.codepoint, Normalizer.NFD,0)) {
+                    String decomp = Normalizer.normalize(it.codepoint, Normalizer.NFD);
+                    others.addAll(decomp);
+                    continue;
+                }
+                out.println(" " + UTF16.valueOf(it.codepoint) + " <> XXX # " + UCharacter.getName(it.codepoint));
+                main.add(it.codepoint);
+            }
+            
+            if (others.size() != 0) {
+                out.println("Decomposed characters found above: ");
+                others.removeAll(main);
+                it.reset(others);
+                while (it.next()) {
+                    out.println(" " + UTF16.valueOf(it.codepoint) + " <> XXX # " + UCharacter.getName(it.codepoint));
+                }
+            }
+            
+            out.close();
+            System.out.println("Done Writing");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    static Transliterator hex = Transliterator.getInstance("[^\\u0020-\\u007E] hex");
+    static final String saveRules = 
+          "A <> \uEA41; B <> \uEA42; C <> \uEA43; D <> \uEA44; E <> \uEA45; F <> \uEA46; G <> \uEA47; H <> \uEA48; I <> \uEA49; "
+        + "J <> \uEA4A; K <> \uEA4B; L <> \uEA4C; M <> \uEA4D; N <> \uEA4E; O <> \uEA4F; P <> \uEA50; Q <> \uEA51; R <> \uEA52; "
+        + "S <> \uEA53; T <> \uEA54; U <> \uEA55; V <> \uEA56; W <> \uEA57; X <> \uEA58; Y <> \uEA59; Z <> \uEA5A; "
+        + "a <> \uEA61; b <> \uEA62; c <> \uEA63; d <> \uEA64; e <> \uEA65; f <> \uEA66; g <> \uEA67; h <> \uEA68; i <> \uEA69; "
+        + "j <> \uEA6A; k <> \uEA6B; l <> \uEA6C; m <> \uEA6D; n <> \uEA6E; o <> \uEA6F; p <> \uEA70; q <> \uEA71; r <> \uEA72; "
+        + "s <> \uEA73; t <> \uEA74; u <> \uEA75; v <> \uEA76; w <> \uEA77; x <> \uEA78; y <> \uEA79; z <> \uEA7A;";
+        
+    static Transliterator saveAscii = Transliterator.createFromRules("ascii-saved", saveRules, Transliterator.FORWARD);
+    static Transliterator restoreAscii = Transliterator.createFromRules("ascii-saved", saveRules, Transliterator.REVERSE);
+    
+    static {
+        
+        if (false) {
+        
+        for (char i = 'A'; i <= 'z'; ++i) {
+            System.out.print(i + " <> " + hex.transliterate(String.valueOf((char)(0xEA00 + i))) + "; ");
+        }
+
+        UnicodeSet x = new UnicodeSet("[[:^ccc=0:]&[:^ccc=230:]]");
+        x = x.complement();
+        x = x.complement();
+        System.out.println("Test: " + x.toPattern(true));
+        
+        Transliterator y = Transliterator.createFromRules("xxx", "$notAbove = [[:^ccc=0:]&[:^ccc=230:]]; u ($notAbove*) \u0308 > XXX | $1; ", Transliterator.FORWARD);
+        
+        String[] testList = {"u\u0308", "u\u0316\u0308", "u\u0308\u0316", "u\u0301\u0308", "u\u0308\u0301"};
+        for (int i = 0; i < testList.length; ++i) {
+            String yy = y.transliterate(testList[i]);
+            System.out.println(hex.transliterate(testList[i]) + " => " + hex.transliterate(yy));
+        }
+        
+        //printNames(new UnicodeSet("[\u0600-\u06FF]"), "Arabic-Latin.txt");
+        
+        
+        /*  
+        BreakTransliterator.register();
+        
+        BreakTransliterator testTrans = new BreakTransliterator("Any-XXX", null, null, "$");
+        String testSource = "The Quick:   Brown fox--jumped.";
+        BreakIterator bi = testTrans.getBreakIterator();
+        bi.setText(new StringCharacterIterator(testSource));
+        printBreaks(0, testSource, bi);
+        //bi.setText(UCharacterIterator.getInstance(testSource));
+        //printBreaks(1, testSource, bi);
+        
+        printIteration(2, testSource, new StringCharacterIterator(testSource));
+        //printIteration(3, testSource, UCharacterIterator.getInstance(testSource));
+        
+        
+        
+        String test = testTrans.transliterate(testSource);
+        System.out.println("Test3: " + test);
+        DummyFactory.add(testTrans.getID(), testTrans);
+        */
+        
+        // AnyTransliterator.ScriptRunIterator.registerAnyToScript();
+        
+        AnyTransliterator at = new AnyTransliterator("Greek", null);
+        at.transliterate("(cat,\u03b1,\u0915)");
+        DummyFactory.add(at.getID(), at);
+        
+        at = new AnyTransliterator("Devanagari", null);
+        at.transliterate("(cat,\u03b1,\u0915)");
+        DummyFactory.add(at.getID(), at);
+        
+        at = new AnyTransliterator("Latin", null);
+        at.transliterate("(cat,\u03b1,\u0915)");
+        DummyFactory.add(at.getID(), at);
+        
+        DummyFactory.add("Any-gif", Transliterator.createFromRules("gif", "'\\'u(..)(..) > '<img src=\"http://www.unicode.org/gifs/24/' $1 '/U' $1$2 '.gif\">';", Transliterator.FORWARD));        
+        DummyFactory.add("gif-Any", Transliterator.getInstance("Any-Null"));        
+
+        DummyFactory.add("Any-RemoveCurly", Transliterator.createFromRules("RemoveCurly", "[\\{\\}] > ;", Transliterator.FORWARD));        
+        DummyFactory.add("RemoveCurly-Any", Transliterator.getInstance("Any-Null"));
+        
+        System.out.println("Trying &hex");
+        Transliterator t = Transliterator.createFromRules("hex2", "(.) > &hex($1);", Transliterator.FORWARD);
+        System.out.println("Registering");
+        DummyFactory.add("Any-hex2", t);        
+        
+        System.out.println("Trying &gif");
+        t = Transliterator.createFromRules("gif2", "(.) > &any-gif($1);", Transliterator.FORWARD);
+        System.out.println("Registering");
+        DummyFactory.add("Any-gif2", t);    
+        }
+    }
+    
+    
+    void setTransliterator(String name, String id) {
+        if (DEBUG) System.out.println("Got: " + name);
+        if (id == null) {
+            translit = Transliterator.getInstance(name);
+        } else {
+            String reverseId = "";
+            int pos = id.indexOf('-');
+            if (pos < 0) {
+                reverseId = id + "-Any";
+                id = "Any-" + id;
+            } else {
+                int pos2 = id.indexOf("/", pos);
+                if (pos2 < 0) {
+                    reverseId = id.substring(pos+1) + "-" + id.substring(0,pos);
+                } else {
+                    reverseId = id.substring(pos+1, pos2) + "-" + id.substring(0,pos) + id.substring(pos2);
+                }
+            }
+            
+            
+            translit = Transliterator.createFromRules(id, name, Transliterator.FORWARD);
+            if (DEBUG) {
+                System.out.println("***Forward Rules");
+                System.out.println(translit.toRules(true));
+                System.out.println("***Source Set");
+                System.out.println(translit.getSourceSet().toPattern(true));
+            }
+                System.out.println("***Target Set");
+                UnicodeSet target = translit.getTargetSet();
+                System.out.println(target.toPattern(true));
+                UnicodeSet rest = new UnicodeSet("[a-z]").removeAll(target);
+                System.out.println("***ASCII - Target Set");
+                System.out.println(rest.toPattern(true));
+                
+            DummyFactory.add(id, translit);
+            
+            Transliterator translit2 = Transliterator.createFromRules(reverseId, name, Transliterator.REVERSE);
+            if (DEBUG) {
+                System.out.println("***Backward Rules");
+                System.out.println(translit2.toRules(true));
+            }
+            DummyFactory.add(reverseId, translit2);
+            
+            Transliterator rev = translit.getInverse();
+            if (DEBUG) System.out.println("***Inverse Rules");
+            if (DEBUG) System.out.println(rev.toRules(true));
+            
+        }
+        text.flush();
+        text.setTransliterator(translit);
+        convertSelectionItem.setLabel(Transliterator.getDisplayName(translit.getID()));
+        
+        addHistory(translit);
+        
+        Transliterator inv;
+        try {
+            inv = translit.getInverse();
+        } catch (Exception ex) {
+            inv = null;
+        }
+        if (inv != null) {
+            addHistory(inv);
+            swapSelectionItem.setEnabled(true);
+        } else {
+            swapSelectionItem.setEnabled(false);
+        }
+        System.out.println("Set transliterator: " + translit.getID()
+            + (inv != null ? " and " + inv.getID() : ""));
+    }
+    
+    void addHistory(Transliterator trans) {
+        String name = trans.getID();
+        MenuItem cmi = (MenuItem) historyMap.get(name);
+        if (cmi == null) {
+            cmi = new MenuItem(Transliterator.getDisplayName(name));
+            cmi.addActionListener(new TransliterationListener(name));
+            historyMap.put(name, cmi);
+            historySet.add(cmi);
+            historyMenu.removeAll();
+            Iterator it = historySet.iterator();
+            while (it.hasNext()) {
+                historyMenu.add((MenuItem)it.next());
+            }
+        }
+    }
+    
+    class TransliterationListener implements ActionListener, ItemListener {
+        String name;
+        public TransliterationListener(String name) {
+            this.name = name;
+        }
+        public void actionPerformed(ActionEvent e) {
+            setTransliterator(name, null);
+        }
+        public void itemStateChanged(ItemEvent e) {
+            if (e.getStateChange() == ItemEvent.SELECTED) {
+                setTransliterator(name, null);
+            } else {
+                setTransliterator("Any-Null", null);
+            }
+        }
+    }
+    
+    class FontActionListener implements ActionListener {
+        String name;
+        public FontActionListener(String name) {
+            this.name = name;
+        }
+        public void actionPerformed(ActionEvent e) {
+            if (DEBUG) System.out.println("Font: " + name);
+            fontName = name;
+            text.setFont(new Font(fontName, Font.PLAIN, fontSize));
+        }
+    }
+    
+    class SizeActionListener implements ActionListener {
+        int size;
+        public SizeActionListener(int size) {
+            this.size = size;
+        }
+        public void actionPerformed(ActionEvent e) {
+            if (DEBUG) System.out.println("Size: " + size);
+            fontSize = size;
+            text.setFont(new Font(fontName, Font.PLAIN, fontSize));
+        }
+    }
+    
+    Set add(Set s, Enumeration enumeration) {
+        while(enumeration.hasMoreElements()) {
+            s.add(enumeration.nextElement());
+        }
+        return s;
+    }
+
+    /**
+     * Get a sorted list of the system transliterators.
+     */
+     /*
+    private static Vector getSystemTransliteratorNames() {
+        Vector v = new Vector();
+        for (Enumeration e=Transliterator.getAvailableIDs();
+             e.hasMoreElements(); ) {
+            v.addElement(e.nextElement());
+        }
+        // Insertion sort, O(n^2) acceptable for small n
+        for (int i=0; i<(v.size()-1); ++i) {
+            String a = (String) v.elementAt(i);
+            for (int j=i+1; j<v.size(); ++j) {
+                String b = (String) v.elementAt(j);
+                if (a.compareTo(b) > 0) {
+                    v.setElementAt(b, i);
+                    v.setElementAt(a, j);
+                    a = b;
+                }
+            }
+        }
+        return v;
+    }
+    */
+
+/*
+    private void setNoTransliterator() {
+        translitItem = noTranslitItem;
+        noTranslitItem.setState(true);
+        handleSetTransliterator(noTranslitItem.getLabel());
+        compound = false;
+        for (int i=0; i<translitMenu.getItemCount(); ++i) {
+            MenuItem it = translitMenu.getItem(i);
+            if (it != noTranslitItem && it instanceof CheckboxMenuItem) {
+                ((CheckboxMenuItem) it).setState(false);
+            }
+        }
+    }
+*/
+/*
+    private void handleAddToCompound(String name) {
+        if (compoundCount < MAX_COMPOUND) {
+            compoundTranslit[compoundCount] = decodeTranslitItem(name);
+            ++compoundCount;
+            Transliterator t[] = new Transliterator[compoundCount];
+            System.arraycopy(compoundTranslit, 0, t, 0, compoundCount);
+            translit = new CompoundTransliterator(t);
+            text.setTransliterator(translit);
+        }
+    }
+*/
+/*
+    private void handleSetTransliterator(String name) {
+        translit = decodeTranslitItem(name);
+        text.setTransliterator(translit);
+    }
+    */
+
+    /**
+     * Decode a menu item that looks like <translit name>.
+     */
+     /*
+    private static Transliterator decodeTranslitItem(String name) {
+        return (name.equals(NO_TRANSLITERATOR))
+            ? null : Transliterator.getInstance(name);
+    }
+    */
+
+    private void handleBatchTransliterate(Transliterator trans) {
+        if (trans == null) {
+            return;
+        }
+
+        int start = text.getSelectionStart();
+        int end = text.getSelectionEnd();
+        ReplaceableString s =
+            new ReplaceableString(text.getText().substring(start, end));
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer();
+            log.append('"' + s.toString() + "\" (start " + start +
+                       ", end " + end + ") -> \"");
+        }
+
+        trans.transliterate(s);
+        String str = s.toString();
+
+        if (DEBUG) {
+            log.append(str + "\"");
+            System.out.println("Batch " + trans.getID() + ": " + log.toString());
+        }
+
+        text.replaceRange(str, start, end);
+        text.select(start, start + str.length());
+    }
+
+    private void handleClose() {
+        helpDialog.dispose();
+        dispose();
+    }
+    
+    /*
+    class InfoDialog extends Dialog {
+        protected Button button;
+        protected TextArea area;
+        protected Dialog me;
+        protected Panel bottom;
+        
+        public TextArea getArea() {
+            return area;
+        }
+        
+        public Panel getBottom() {
+            return bottom;
+        }
+        
+        InfoDialog(Frame parent, String title, String label, String message) {
+            super(parent, title, false);
+            me = this;
+            this.setLayout(new BorderLayout());
+            if (label.length() != 0) {
+                this.add("North", new Label(label));
+            }
+            
+            area = new TextArea(message, 8, 80, TextArea.SCROLLBARS_VERTICAL_ONLY);
+            this.add("Center", area);
+            
+            button = new Button("Hide");
+            button.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    me.hide();
+                }
+            });
+            bottom = new Panel();
+            bottom.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+            bottom.add(button);
+            this.add("South", bottom);
+            this.pack();
+            addWindowListener(new WindowAdapter() {
+                public void windowClosing(WindowEvent e) {
+                    me.hide();
+                }
+            });
+        }
+    }
+    */
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/DemoApplet.java b/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
new file mode 100644
index 0000000..8ee03ae
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
@@ -0,0 +1,68 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import java.awt.*;
+import java.awt.event.*;
+import java.applet.*;
+import com.ibm.icu.dev.demo.impl.AppletFrame;
+
+/**
+ * A simple Applet that shows a button.  When pressed, the button
+ * shows the DemoAppletFrame.  This Applet is meant to be embedded
+ * in a web page.
+ *
+ * <p>Copyright (c) IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ */
+public class DemoApplet extends Applet {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8214879807740061678L;
+    Demo frame = null;
+    
+    public static void main(String args[]) {
+        final DemoApplet applet = new DemoApplet();
+        new AppletFrame("Transliteration Demo", applet, 640, 480);
+    }
+
+    public void init() {
+
+        Button button = new Button("Transliteration Demo");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                if (frame == null) {
+                    frame = new Demo(600, 200);
+                    frame.addWindowListener(new WindowAdapter() {
+                        public void windowClosing(WindowEvent we) {
+                            frame = null;
+                        }
+                    });
+                }
+                frame.setVisible(true);
+                frame.toFront();
+            }
+        });
+
+        add(button);
+
+        Dimension size = button.getPreferredSize();
+        size.width += 10;
+        size.height += 10;
+
+        resize(size);
+    }
+    
+    public void stop() {
+        if (frame != null) {
+            frame.dispose();
+        }
+        frame = null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Differ.java b/src/com/ibm/icu/dev/demo/translit/Differ.java
new file mode 100644
index 0000000..0a63922
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Differ.java
@@ -0,0 +1,171 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.demo.translit;
+
+/** VERY Basic Diff program. Compares two sequences of objects fed into it, and
+ * lets you know where they are different.
+ * @author Mark Davis
+ * @version 1.0
+ */
+
+final public class Differ {
+    public static final String copyright =
+      "Copyright (C) 2000, International Business Machines Corporation and others. All Rights Reserved.";
+
+    /**
+     * @param stackSize The size of the largest difference you expect.
+     * @param matchCount The number of items that have to be the same to count as a match
+     */
+    public Differ(int stackSize, int matchCount) {
+        this.STACKSIZE = stackSize;
+        this.EQUALSIZE = matchCount;
+        a = new Object[stackSize+matchCount];
+        b = new Object[stackSize+matchCount];
+    }
+
+    public void add (Object aStr, Object bStr) {
+        addA(aStr);
+        addB(bStr);
+    }
+
+    public void addA (Object aStr) {
+        flush();
+        a[aCount++] = aStr;
+    }
+
+    public void addB (Object bStr) {
+        flush();
+        b[bCount++] = bStr;
+    }
+
+    public int getALine(int offset) {
+        return aLine + maxSame + offset;
+    }
+
+    public Object getA(int offset) {
+        if (offset < 0) return last;
+        if (offset > aTop-maxSame) return next;
+        return a[offset];
+    }
+
+    public int getACount() {
+        return aTop-maxSame;
+    }
+
+    public int getBCount() {
+        return bTop-maxSame;
+    }
+
+    public int getBLine(int offset) {
+        return bLine + maxSame + offset;
+    }
+
+    public Object getB(int offset) {
+        if (offset < 0) return last;
+        if (offset > bTop-maxSame) return next;
+        return b[offset];
+    }
+
+    public void checkMatch(boolean finalPass) {
+        // find the initial strings that are the same
+        int max = aCount;
+        if (max > bCount) max = bCount;
+        int i;
+        for (i = 0; i < max; ++i) {
+            if (!a[i].equals(b[i])) break;
+        }
+        // at this point, all items up to i are equal
+        maxSame = i;
+        aTop = bTop = maxSame;
+        if (maxSame > 0) last = a[maxSame-1];
+        next = "";
+
+        if (finalPass) {
+            aTop = aCount;
+            bTop = bCount;
+            next = "";
+            return;
+        }
+
+        if (aCount - maxSame < EQUALSIZE || bCount - maxSame < EQUALSIZE) return;
+
+        // now see if the last few a's occur anywhere in the b's, or vice versa
+        int match = find (a, aCount-EQUALSIZE, aCount, b, maxSame, bCount);
+        if (match != -1) {
+            aTop = aCount-EQUALSIZE;
+            bTop = match;
+            next = a[aTop];
+            return;
+        }
+        match = find (b, bCount-EQUALSIZE, bCount, a, maxSame, aCount);
+        if (match != -1) {
+            bTop = bCount-EQUALSIZE;
+            aTop = match;
+            next = b[bTop];
+            return;
+        }
+        if (aCount >= STACKSIZE || bCount >= STACKSIZE) {
+            // flush some of them
+            aCount = (aCount + maxSame) / 2;
+            bCount = (bCount + maxSame) / 2;
+            next = "";
+        }
+    }
+
+    /** Convenient utility
+     * finds a segment of the first array in the second array.
+     * @return -1 if not found, otherwise start position in b
+     */
+
+    public int find (Object[] aArray, int aStart, int aEnd, Object[] bArray, int bStart, int bEnd) {
+        int len = aEnd - aStart;
+        int bEndMinus = bEnd - len;
+        tryA:
+        for (int i = bStart; i <= bEndMinus; ++i) {
+            for (int j = 0; j < len; ++j) {
+                if (!bArray[i + j].equals(aArray[aStart + j])) continue tryA;
+            }
+            return i; // we have a match!
+        }
+        return -1;
+    }
+
+    // ====================== PRIVATES ======================
+
+    private void flush() {
+        if (aTop != 0) {
+            int newCount = aCount-aTop;
+            System.arraycopy(a, aTop, a, 0, newCount);
+            aCount = newCount;
+            aLine += aTop;
+            aTop = 0;
+        }
+
+        if (bTop != 0) {
+            int newCount = bCount-bTop;
+            System.arraycopy(b, bTop, b, 0, newCount);
+            bCount = newCount;
+            bLine += bTop;
+            bTop = 0;
+        }
+    }
+
+    private int STACKSIZE;
+    private int EQUALSIZE;
+
+    private Object [] a;
+    private Object [] b;
+    private Object last = "";
+    private Object next = "";
+    private int aCount = 0;
+    private int bCount = 0;
+    private int aLine = 1;
+    private int bLine = 1;
+    private int maxSame = 0, aTop = 0, bTop = 0;
+
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/InfoDialog.java b/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
new file mode 100644
index 0000000..08e5dc7
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
@@ -0,0 +1,56 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import java.awt.event.*;
+import java.awt.*;
+public class InfoDialog extends Dialog {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -3086665546137919018L;
+    protected Button button;
+    protected TextArea area;
+    protected Dialog me;
+    protected Panel bottom;
+        
+    public TextArea getArea() {
+        return area;
+    }
+        
+    public Panel getBottom() {
+        return bottom;
+    }
+        
+    InfoDialog(Frame parent, String title, String label, String message) {
+        super(parent, title, false);
+        me = this;
+        this.setLayout(new BorderLayout());
+        if (label.length() != 0) {
+            this.add("North", new Label(label));
+        }
+            
+        area = new TextArea(message, 8, 80, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        this.add("Center", area);
+            
+        button = new Button("Hide");
+        button.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                me.hide();
+            }
+        });
+        bottom = new Panel();
+        bottom.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+        bottom.add(button);
+        this.add("South", bottom);
+        this.pack();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                me.hide();
+            }
+        });
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
new file mode 100644
index 0000000..146c659
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
@@ -0,0 +1,24 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+ما هي الشفرة الموحدة "يونِكود" ؟
+
+أساسًا، تتعامل الحواسيب فقط مع الأرقام، وتقوم بتخزين الأحرف والمحارف الأخرى بعد أن تُعطي رقما معينا لكل واحد منها. وقبل اختراع "يونِكود"، كان هناك مئات الأنظمة للتشفير وتخصيص هذه الأرقام للمحارف، ولم يوجد نظام تشفير واحد يحتوي على جميع المحارف الضرورية. وعلى سبيل المثال، فإن الاتحاد الأوروبي لوحده، احتوى العديد من الشفرات المختلفة ليغطي جميع اللغات المستخدمة في الاتحاد. وحتى لو اعتبرنا لغة واحدة، كاللغة الإنجليزية، فإن جدول شفرة واحد لم يكف لاستيعاب جميع الأحرف وعلامات الترقيم والرموز الفنية والعلمية الشائعة الاستعمال.
+
+ 
+
+وتجدر الملاحظة أن أنظمة التشفير المختلفة تتعارض مع بعضها البعض. وبعبارة أخرى، يمكن أن يستخدِم جدولي شفرة نفس الرقم لتمثيل محرفين مختلفين، أو رقمين مختلفين لتمثيل نفس المحرف. ولو أخذنا أي جهاز حاسوب، وبخاصة جهاز النادل (server)، فيجب أن تكون لديه القدرة على التعامل مع عدد كبير من الشفرات المختلفة، ويتم تصميمه على هذا الأساس. ومع ذلك، فعندما تمر البيانات عبر أنظمة مختلفة، توجد هناك خطورة لضياع أو تحريف بعض هذه البيانات.
+
+ 
+
+"يونِكود" تغير هذا كليا !
+
+تخصص الشفرة الموحدة "يونِكود" رقما وحيدا لكل محرف في جميع اللغات العالمية، وذلك بغض النظر عن نوع الحاسوب أو البرامج المستخدمة. وقد تم تبني مواصفة "يونِكود" من قبل قادة الصانعين لأنظمة الحواسيب في العالم، مثل شركات آي.بي.إم. (IBM)، أبل (APPLE)، هِيْولِت باكرد (Hewlett-Packard) ، مايكروسوفت (Microsoft)، أوراكِل (Oracle) ، صن (Sun) وغيرها. كما أن المواصفات والمقاييس الحديثة (مثل لغة البرمجة "جافا" "JAVA" ولغة "إكس إم إل" "XML" التي تستخدم لبرمجة الانترنيت) تتطلب استخدام "يونِكود". علاوة على ذلك ، فإن "يونِكود" هي الطريقة الرسمية لتطبيق المقياس العالمي إيزو ١٠٦٤٦  (ISO 10646) .
+
+ 
+
+إن بزوغ مواصفة "يونِكود" وتوفُّر الأنظمة التي تستخدمه وتدعمه، يعتبر من أهم الاختراعات الحديثة في عولمة البرمجيات لجميع اللغات في العالم. وإن استخدام "يونِكود" في عالم الانترنيت سيؤدي إلى توفير كبير مقارنة مع استخدام المجموعات التقليدية للمحارف المشفرة. كما أن استخدام "يونِكود" سيُمكِّن المبرمج من كتابة البرنامج مرة واحدة، واستخدامه على أي نوع من الأجهزة أو الأنظمة، ولأي لغة أو دولة في العالم أينما كانت، دون الحاجة لإعادة البرمجة أو إجراء أي تعديل. وأخيرا، فإن استخدام "يونِكود" سيمكن البيانات من الانتقال عبر الأنظمة والأجهزة المختلفة دون أي خطورة لتحريفها، مهما تعددت الشركات الصانعة للأنظمة واللغات، والدول التي تمر من خلالها هذه البيانات. 
+
+@SET [[[:Arabic:] & [\u0600-\u06FF]] [‎\u060C\u061B\u061F\u0640\u064B-\u0655\u0660-\u066C\u06F0-\u06F9]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
new file mode 100644
index 0000000..6380074
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
@@ -0,0 +1,73 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+
+Τι είναι το Unicode? 
+
+Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα.
+
+Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν, η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών κωδικοσελίδων· ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+
+Το Unicode αλλάζει αυτή την κατάσταση!
+Το Unicode προτείνει έναν μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα. Την κωδικοσελίδα Unicode έχουν ασπασθεί κορυφαίοι παράγοντες του χώρου των λογισμικών όπως οι: Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys και πολλοί άλλοι. Το Unicode απαιτούν πολλές σύγχρονες τυποποιήσεις όπως οι: XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, κ.λπ., και είναι η επίσημη μέθοδος εφαρμογής της τυποποίησης ISO/IEC 10646. Υποστηρίζεται από πολλά λειτουργικά συστήματα, όλους τους σύχρονους περιηγητές Διαδικτύου, και πολλά άλλα προϊόντα. Η εμφάνιση της κωδικοσελίδας Unicode, και η διαθεσιμότητα εργαλείων που να την υποστηρίζουν είναι από τις σημαντικότερες εξελίξεις της πρόσφατης τεχνολογίας λογισμικών.
+
+Η ενσωμάτωση του Unicode σε εφαρμογές πελάτη-διακομιστή ή "multi-tiered" προσφέρει σημαντικές οικονομίες σε σχέση με τις ως τώρα υπάρχουσες κωδικοσελίδες. Χάρις στο Unicode ένα και μόνο προϊόν ή μία και μόνη τοποθεσία Διαδικτύου μπορεί να επικοινωνεί με διάφορα λειτουργικά συστήματα, σε διάφορες γλώσσες και χώρες, χωρίς την ανάγκη επαναπρογραμματισμού. Γίνεται έτσι δυνατή η μεταφορά δεδομένων ανάμεσα σε πλήθος διαφορετικών συστημάτων δίχως κίνδυνο αλλοίωσης.
+
+Σχετικά με το Κονσόρτιουμ Unicode
+Tο Κονσόρτιουμ Unicode είναι ένας κοινωφελής οργανισμός· ιδρύθηκε για να αναπτύξει, να επεκτείνει και να μεταδώσει την χρήση της κωδικοσελίδας Unicode που καθορίζει την αναπαράσταση κειμένου σε σύγχρονα λογισμικά προϊόντα και τυποποιήσεις. Μεγάλος αριθμός εταιρειών και οργανισμών της διεθνούς βιομηχανίας υπολογιστών και λογισμικών είναι μέλη του Κονσόρτιουμ Unicode. Το Κονσόρτιουμ χρηματοδοτείται μόνο από τις συνδρομές των μελών του. Μέλος του κονσόρτιουμ Unicode μπορεί να γίνει οιοσδήποτε (οργανισμός, εταιρεία ή ιδιώτης, οπουδήποτε στον κόσμο) που να υποστηρίζει την κωδικοσελίδα Unicode και να επιθυμεί να συνδράμει στην επέκταση και στην εφαρμογή της.
+
+Για περαιτέρω πληροφορίες, βλέπε τις εξής ιστοσελίδες: Γλωσσάρι, Δείγματα προϊόντων συμβατών με το Unicode, Τεχνική Εισαγωγή και Χρήσιμες πηγές πληροφοριών.
+
+(ANCIENT)
+
+ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ
+πλάγχθη, ἐπεὶ Τροίης ἱερὸν πτολίεθρον ἔπερσεν:
+πολλῶν δ’ ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω,
+πολλὰ δ’ ὅ γ’ ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θυμόν,
+ἀρνύμενος ἥν τε ψυχὴν καὶ νόστον ἑταίρων.
+ἀλλ’ οὐδ’ ὣς ἑτάρους ἐρρύσατο, ἱέμενός περ:
+αὐτῶν γὰρ σφετέρῃσιν ἀτασθαλίῃσιν ὄλοντο,
+νήπιοι, οἳ κατὰ βοῦς Ὑπερίονος Ἠελίοιο
+ἤσθιον: αὐτὰρ ὁ τοῖσιν ἀφείλετο νόστιμον ἦμαρ.
+τῶν ἁμόθεν γε, θεά, θύγατερ Διός, εἰπὲ καὶ ἡμῖν.
+*
+ἔνθ’ ἄλλοι μὲν πάντες, ὅσοι φύγον αἰπὺν ὄλεθρον,
+οἴκοι ἔσαν, πόλεμόν τε πεφευγότες ἠδὲ θάλασσαν:
+τὸν δ’ οἶον νόστου κεχρημένον ἠδὲ γυναικὸς
+νύμφη πότνι’ ἔρυκε Καλυψὼ δῖα θεάων
+ἐν σπέσσι γλαφυροῖσι, λιλαιομένη πόσιν εἶναι.
+ἀλλ’ ὅτε δὴ ἔτος ἦλθε περιπλομένων ἐνιαυτῶν,
+τῷ οἱ ἐπεκλώσαντο θεοὶ οἶκόνδε νέεσθαι
+εἰς Ἰθάκην, οὐδ’ ἔνθα πεφυγμένος ἦεν ἀέθλων
+καὶ μετὰ οἷσι φίλοισι. θεοὶ δ’ ἐλέαιρον ἅπαντες
+νόσφι Ποσειδάωνος: ὁ δ’ ἀσπερχὲς μενέαινεν
+ἀντιθέῳ Ὀδυσῆι πάρος ἣν γαῖαν ἱκέσθαι.
+*
+ἀλλ’ ὁ μὲν Αἰθίοπας μετεκίαθε τηλόθ’ ἐόντας,
+Αἰθίοπας τοὶ διχθὰ δεδαίαται, ἔσχατοι ἀνδρῶν,
+οἱ μὲν δυσομένου Ὑπερίονος οἱ δ’ ἀνιόντος,
+ἀντιόων ταύρων τε καὶ ἀρνειῶν ἑκατόμβης.
+ἔνθ’ ὅ γ’ ἐτέρπετο δαιτὶ παρήμενος: οἱ δὲ δὴ ἄλλοι
+Ζηνὸς ἐνὶ μεγάροισιν Ὀλυμπίου ἁθρόοι ἦσαν.
+τοῖσι δὲ μύθων ἦρχε πατὴρ ἀνδρῶν τε θεῶν τε:
+μνήσατο γὰρ κατὰ θυμὸν ἀμύμονος Αἰγίσθοιο,
+τόν ῥ’ Ἀγαμεμνονίδης τηλεκλυτὸς ἔκταν’ Ὀρέστης:
+τοῦ ὅ γ’ ἐπιμνησθεὶς ἔπε’ ἀθανάτοισι μετηύδα:
+*
+“ὢ πόποι, οἷον δή νυ θεοὺς βροτοὶ αἰτιόωνται:
+ἐξ ἡμέων γάρ φασι κάκ’ ἔμμεναι, οἱ δὲ καὶ αὐτοὶ
+σφῇσιν ἀτασθαλίῃσιν ὑπὲρ μόρον ἄλγε’ ἔχουσιν,
+ὡς καὶ νῦν Αἴγισθος ὑπὲρ μόρον Ἀτρεί̈δαο
+γῆμ’ ἄλοχον μνηστήν, τὸν δ’ ἔκτανε νοστήσαντα,
+εἰδὼς αἰπὺν ὄλεθρον, ἐπεὶ πρό οἱ εἴπομεν ἡμεῖς,
+Ἑρμείαν πέμψαντες, ἐύσκοπον ἀργεϊφόντην,
+μήτ’ αὐτὸν κτείνειν μήτε μνάασθαι ἄκοιτιν:
+ἐκ γὰρ Ὀρέσταο τίσις ἔσσεται Ἀτρεί̈δαο,
+ὁππότ’ ἂν ἡβήσῃ τε καὶ ἧς ἱμείρεται αἴης.
+ὣς ἔφαθ’ Ἑρμείας, ἀλλ’ οὐ φρένας Αἰγίσθοιο
+πεῖθ’ ἀγαθὰ φρονέων: νῦν δ’ ἁθρόα πάντ’ ἀπέτισεν.”
+
+@SET [[[:Greek:]&[\u0370-\u03E1 \u03F0-\u03FF]] [\:-;?\u00B7\u037E\u0387]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
new file mode 100644
index 0000000..8603663
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
@@ -0,0 +1,26 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+什么是Unicode(统一码)?
+Unicode给每个字符提供了一个唯一的数字，
+不论是什么平台，
+不论是什么程序，
+不论是什么语言。
+
+基本上，计算机只是处理数字。它们指定一个数字，来储存字母或其他字符。在创造Unicode之前，有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符：例如，单单欧州共同体就需要好几种不同的编码来包括所有的语言。即使是单一种语言，例如英语，也没有哪一个编码可以适用于所有的字母，标点符号，和常用的技术符号。
+
+这些编码系统也会互相冲突。也就是说，两种编码可能使用相同的数字代表两个不同的字符，或使用不同的数字代表相同的字符。任何一台特定的计算机(特别是服务器)都需要支持许多不同的编码，但是，不论什么时候数据通过不同的编码或平台之间，那些数据总会有损坏的危险。
+
+Unicode正在改变所有这一切！
+Unicode给每个字符提供了一个唯一的数字，不论是什么平台，不论是什么程序，不论什么语言。Unicode标准已经被这些工业界的领导们所采用，例如：Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。最新的标准都需要Unicode，例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML等等，并且，Unicode是实现ISO/IEC 10646的正规方式。许多操作系统，所有最新的浏览器和许多其他产品都支持它。Unicode标准的出现和支持它工具的存在，是近来全球软件技术最重要的发展趋势。
+
+将Unicode与客户服务器或多层应用程序和网站结合，比使用传统字符集节省费用。Unicode使单一软件产品或单一网站能够贯穿多个平台，语言和国家，而不需要重建。它可将数据传输到许多不同的系统，而无损坏。
+
+关于Unicode学术学会
+Unicode学术学会是一个非盈利的组织，是为发展，扩展和推广使用Unicode标准而建立的，Unicode学术学会设立了现代软件产品和标准文本的表示法。学术学会的会员代表了广泛领域的计算机和资讯工业的公司和组织。学术学会只由会员提供资金。Unicode学术学会的会员资格开放给世界上任何支持Unicode标准和希望协助其扩展和执行的组织及个人。
+
+欲知更多信息，请参阅术语词汇表，Unicode产品样本，技术简介和参考资料。
+
+Chinese translation by  黎國珍, Xerox
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
new file mode 100644
index 0000000..9d26745
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
@@ -0,0 +1,26 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+מה זה יוניקוד (Unicode)?
+יוניקוד מקצה מספר ייחודי לכל תו, 
+לא משנה על איזו פלטפורמה, 
+לא משנה באיזו תוכנית, 
+ולא משנה באיזו שפה.
+
+באופן בסיסי, מחשבים עוסקים רק במספרים. הם מאחסנים אותיות ותווים אחרים על-ידי הקצאת מספר לכל אחד מהם. בטרם הומצא היוניקוד, היו מאות מערכות קידוד שונות להקצאת המספרים הללו. אף לא אחת מהן יכלה להכיל כמות תווים מספקת. לדוגמא: רק לאיחוד האירופאי נדרשים כמה סוגי קידודים שונים על מנת לכסות את כל השפות המדוברות בו. יתירה מזאת אף לשפה בודדת, כמו אנגלית למשל, לא היה די במערכת קידוד אחת בעבור כל האותיות, סימני הפיסוק והסמלים הטכניים שבשימוש שוטף. 
+
+מערכות קידוד אלו אף סותרות זו את זו. כלומר, שני קידודים יכולים להשתמש באותו מספר לשני תוים נבדלים, או להשתמש במספרים שונים לאותו תו. על כל מחשב (ובמיוחד שרתים) לתמוך במספר רב של מערכות קידוד שונות; אולם כל אימת שנתונים עוברים בין מערכות קידוד או פלטפורמות שונות קיים הסיכון שייפגמו.
+
+יוניקוד משנה את כל זה!
+יוניקוד מקצה מספר ייחודי לכל תו, ללא תלות בפלטפורמה, בתוכנית, או בשפה. תקן היוניקוד אומץ על-ידי המובילים בתעשייה כמו Apple‏, HP‏, IBM‏, JustSystem‏, Microsoft‏, Oracle‏, SAP‏, Sun‏, Sybase‏, Unisys‏ ורבים אחרים. יוניקוד נדרש על-ידי תקנים מודרניים כמו XML‏, Java‏, ECMAScript (JavaScript)‎‏, LDAP‏, CORBA 3.0‎‏, WML‏ וכדומה, ומהווה למעשה את היישום הרשמי של תקן ISO/IEC 10646. הוא נתמך על ידי מערכות הפעלה רבות, כל הדפדפנים החדישים, ומוצרים רבים אחרים. הופעת תקן היוניקוד וזמינות הכלים התומכים בו נמנות עם המגמות הכלל-עולמיות החשובות ביותר, אשר מסתמנות לאחרונה בטכנולוגיית התוכנה.
+
+שילוב יוניקוד ביישומי שרת-לקוח או ביישומים רבי-שכבות ובאתרי אינטרנט מאפשר חיסכון ניכר בעלויות לעומת השימוש בסדרות התווים המסורתיות. הודות ליוניקוד, מוצר תוכנה אחד או אתר יחיד ברשת יכול להרחיב את יעדיו למגוון פלטפורמות, ארצות ושפות ללא צורך בשינויים מרחיקים. יוניקוד מאפשר מעבר נתונים דרך מערכות רבות ושונות מבלי שייפגמו.
+
+פרטים אודות הקונסורציום של יוניקוד (Unicode Consortium) 
+הקונסורציום של יוניקוד הוא ארגון ללא מטרת רווח שנוסד כדי לפתח, להרחיב ולקדם את השימוש בתקן יוניקוד, אשר מגדיר את ייצוג הטקסט במוצרי תוכנה ותקנים מודרניים. חברים בקונסורציום מגוון רחב של תאגידים וארגונים בתעשיית המחשבים ועיבוד המידע. הקונסורציום ממומן על-ידי דמי-חבר בלבד. החברות בקונסורציום יוניקוד פתוחה לארגונים ולאנשים פרטיים, בכל רחבי העולם, אשר תומכים בתקן יוניקוד ומעוניינים לסייע בהתפתחותו והטמעתו.
+
+למידע נוסף, ראה מילון מונחים, רשימה חלקית של מוצרים מותאמים ליוניקוד, מבוא טכני ו- חומרי עזר [קישורים באנגלית].
+
+@SET [[:Hebrew:] [\u05B0-\u05B9\u05BB-\u05BC\u05C1-\u05C2\u2135-\u2138]]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html b/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
new file mode 100644
index 0000000..026394a
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
@@ -0,0 +1,154 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Language" content="en-us">
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="COPYRIGHT" content="Copyright 2006-2007, International Business Machines Corporation and others. All Rights Reserved.">
+<title>New Transliteration Test Files</title>
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<h2>New Transliteration Test Files</h2>
+<p>The Test_*.html files show the transliteration of characters for given
+languages. The sample for each language consists of &quot;What Is Unicode&quot;
+in Thai, followed by other available text. The text is broken apart into
+sentences for ease of viewing (note: we know of some problems with the sentence
+rules for Japanese and Chinese). The left column is the original, and the right
+is the romanization. The program also converts back to the original script. If
+there is a discrepancy between the source and the reverse transformation, that
+is indicated by making the background <font color="#FF0000"><b>red</b></font>
+from that point on.</p>
+<blockquote>
+  <p><i><b>Note: </b>If you have some more text that you would like added to the
+  sample, just let me know. I am particularly interested in name lists, since
+  they are the typical source.</i></p>
+</blockquote>
+<h3>Standards</h3>
+<p>The goal is to follow a given standard, such as ISO* or UNGEGN wherever
+possible. We also need to round-trip, so in some cases, that means adding some
+additional accent marks to disambiguate characters. And often the source
+standards are missing some characters, such as characters with combining Hamzas
+in Arabic. Remember that the goal for these is transliteration (unambiguously
+representing all the letters in the original), not transcription (representing
+the best pronunciation).</p>
+<ul>
+  <li><b><a href="Test_Thai-Latin.html">Thai</a>:</b> ISO 11940 &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf">http://homepage.mac.com/sirbinks/pdf/Thai.r2.pdf</a>
+    &gt; plus a few items:
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>In the next release, we'd like to do the UNGEGN version &lt; <a href="http://www.eki.ee/wgrs/rom1_th.pdf">http://www.eki.ee/wgrs/rom1_th.pdf</a>
+        &gt; which is probably more useful (and readable), and follows more
+        closely the Thai standard.</li>
+      <li>Spaces are provided at word-breaks, using the Thai BreakIterator.</li>
+      <li>An inherent vowel (&#7885;) is added, as in UNGEGN. The dot is for
+        disambiguation.
+        <ul>
+          <li><i>Note: if the inherent vowel positions cannot be algorithmically
+            determined, let me know and I will remove them.</i></li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Arabic-Latin.html">Arabic</a>: </b>Generally follows
+    UNGEGN &lt; <a href="http://www.eki.ee/wgrs/rom1_ar.pdf">http://www.eki.ee/wgrs/rom1_ar.pdf</a>
+    &gt;
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>Occasionally deviates in the direction of ISO 233 &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Arabic.pdf">http://homepage.mac.com/sirbinks/pdf/Arabic.pdf</a>
+        &gt;
+        <ul>
+          <li>with underdot instead of cedilla for letter like SAD, since those
+            are explicitly in Unicode for transliteration of Arabic</li>
+          <li>adding extra non-Arabic-language letters, like PEH. Note: not all
+            extended Arabic characters are handled yet.</li>
+        </ul>
+      </li>
+      <li>Does <i>not</i> do assimilation of &quot;al&quot;, nor hyphenation of
+        it.
+        <ul>
+          <li>While it could be done, we need to determine whether a prefix
+            &quot;al&quot; could occur other than as the definite article (since
+            no space is used).</li>
+        </ul>
+      </li>
+      <li>This is transliteration. For <i>transcription</i> one would want an
+        engine that added points appropriately to the Hebrew.</li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Hebrew-Latin.html">Hebrew</a></b><b>: </b>Generally
+    follows UNGEGN &lt; <a href="http://www.eki.ee/wgrs/rom1_he.pdf">http://www.eki.ee/wgrs/rom1_he.pdf</a>
+    &gt;, with some exceptions:
+    <ul>
+      <li>Accents may be added to the Latin for disambiguation.</li>
+      <li>Combinations of dagesh, shin/sin dot that would produce different
+        letters are not yet called out.</li>
+      <li>Note that the final forms are not preserved. Thus, when going from
+        Latin to Hebrew, a character is given final form depending on its
+        position.
+        <ul>
+          <li>E.g. &#1502;&#1501;&#1502;&#1501; =&gt; mmmm =&gt;
+            &#1502;&#1502;&#1502;&#1501;</li>
+        </ul>
+      </li>
+      <li>This is transliteration. For <i>transcription</i> one would want an
+        engine that added points appropriately to the Hebrew.</li>
+      <li>See also &lt; <a href="http://homepage.mac.com/sirbinks/pdf/Hebrew.r1.pdf">http://homepage.mac.com/sirbinks/pdf/Hebrew.r1.pdf</a>
+        &gt; for the ISO version. The Chicago Manual of Style has a clear table
+        of mappings for the vowel marks.</li>
+    </ul>
+  </li>
+  <li><b><a href="Test_Han-Latin.html">Han</a>:</b> Uses the <a href="http://www.mandarintools.com/cedict.html">CEDICT</a>
+    data plus Unicode Unihan <i>kMandarin</i> values for pinyin. Doesn't
+    roundtrip!
+    <ul>
+      <li><i>Note: </i>the Chinese pronunciation of Han characters varies by
+        context and grammar, though nowhere near as much a Japanese.
+        <ul>
+          <li>Ideally we'd have an underlying engine for this. In 2.4 we will
+            have a plug-in interface so that people could add one, such as the
+            IBM engine.</li>
+          <li>The data from CEDICT and Unihan don't list the most frequent
+            choice first, so we will be updating that.</li>
+        </ul>
+      </li>
+    </ul>
+  </li>
+  <li><a href="Test_Greek-Latin_UNGEGN.html"><b>Greek/UNGEGN</b></a>: Uses a
+    modern Greek transliteration, based on the UNGEGN rules at &lt; <a href="http://www.eki.ee/wgrs/rom1_el.pdf">http://www.eki.ee/wgrs/rom1_el.pdf</a>
+    &gt;. This version will not roundtrip ancient Greek.</li>
+  <li><a href="Test_Greek-Latin.html"><b>Greek</b></a>: Uses a classic Greek
+    transliteration. This version will not roundtrip modern Greek.</li>
+</ul>
+<h3><b>Notes</b></h3>
+<ol>
+  <li>For readability, the files have a few other things besides just the
+    transliteration:
+    <ul>
+      <li>The first word of the sentences are titlecased, as are names (where we
+        have a name-list, such as in Thai).</li>
+      <li>The Latin in the original is mapped to the private-use zone before
+        conversion, and then again after conversion. This does have the downside
+        that any rules (such as in Han) that need to know the context (e.g. for
+        inserting spaces or capitalization) will gum up a little bit. This is
+        just an artifact of the test display.</li>
+    </ul>
+  </li>
+  <li>I don't think that ISO 11940 is a particularly good way to romanize, but
+    it is at least complete and a standard. So what I am interested in just for
+    now is whether the samples in the file follow it (with the above
+    exceptions).</li>
+  <li>Some of the files also have a set of characters at the end, one character
+    per row, with a following row listing the hex and name.</li>
+  <li>The source rules for all of these is in the following URL. So if you want
+    to know the details of how the characters are handled, that is the place to
+    look.
+    <ul>
+      <li><a href="http://source.icu-project.org/repos/icu/icu/trunk/source/data/translit/">http://source.icu-project.org/repos/icu/icu/trunk/source/data/translit/</a></li>
+    </ul>
+  </li>
+</ol>
+
+</body>
+
+</html>
diff --git a/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt b/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
new file mode 100644
index 0000000..631f191
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
@@ -0,0 +1,69 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+Unicode คืออะไร?
+Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ
+โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด
+ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด
+และไม่ว่าจะเป็นภาษาใด
+
+โดยพื้นฐานแล้ว, คอมพิวเตอร์จะเกี่ยวข้องกับเรื่องของตัวเลข. คอมพิวเตอร์จัดเก็บตัวอักษรและอักขระอื่นๆ โดยการกำหนดหมายเลขให้สำหรับแต่ละตัว. ก่อนหน้าที่๊ Unicode จะถูกสร้างขึ้น, ได้มีระบบ encoding อยู่หลายร้อยระบบสำหรับการกำหนดหมายเลขเหล่านี้. ไม่มี encoding ใดที่มีจำนวนตัวอักขระมากเพียงพอ: ยกตัวอย่างเช่น, เฉพาะในกลุ่มสหภาพยุโรปเพียงแห่งเดียว ก็ต้องการหลาย encoding ในการครอบคลุมทุกภาษาในกลุ่ม. หรือแม้แต่ในภาษาเดี่ยว เช่น ภาษาอังกฤษ ก็ไม่มี encoding ใดที่เพียงพอสำหรับทุกตัวอักษร, เครื่องหมายวรรคตอน และสัญลักษณ์ทางเทคนิคที่ใช้กันอยู่ทั่วไป. 
+
+ระบบ encoding เหล่านี้ยังขัดแย้งซึ่งกันและกัน. นั่นก็คือ, ในสอง encoding สามารถใช้หมายเลขเดียวกันสำหรับตัวอักขระสองตัวที่แตกต่างกัน,หรือใช้หมายเลขต่างกันสำหรับอักขระตัวเดียวกัน. ในระบบคอมพิวเตอร์ (โดยเฉพาะเซิร์ฟเวอร์) ต้องมีการสนับสนุนหลาย encoding; และเมื่อข้อมูลที่ผ่านไปมาระหว่างการเข้ารหัสหรือแพล็ตฟอร์มที่ต่างกัน, ข้อมูลนั้นจะเสี่ยงต่อการผิดพลาดเสียหาย.
+
+Unicode จะเปลี่ยนแปลงสิ่งเหล่านั้นทั้งหมด!
+Unicode กำหนดหมายเลขเฉพาะสำหรับแต่ละอักขระ, โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด, ไม่ขึ้นกับว่าจะเป็นโปรแกรมใดและไม่ว่าจะเป็นภาษาใด. มาตรฐาน Unicode ได้ถูกนำไปใช้โดยผู้นำในอุตสาหกรรม เช่น Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys และอื่นๆ อีกมาก. Unicode เป็นสิ่งที่จำเป็นสำหรับมาตรฐานใหม่ๆ เช่น XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML ฯลฯ., และเป็นแนวทางอย่างเป็นทางการในการทำ ISO/IEC 10646. Unicode ได้รับการสนับสนุนในระบบปฏิบัติการจำนวนมาก, บราวเซอร์ใหม่ๆ ทกตัว, และผลิตภัณฑ์อื่นๆ อีกมาก. การเกิดขึ้นของ Unicode Standard และทูลส์ต่างๆ ที่มีในการสนับสนุน Unicode, เป็นหนึ่งในแนวโน้มทางเทคโนโลยีซอฟต์แวร์ระดับโลกที่มีความสำคัญที่สุด.
+
+การรวม Unicode เข้าไปในระบบไคลเอ็นต์-เซิร์ฟเวอร์ หรือแอ็พพลิเคชันแบบ multi-tiered และเว็บไซต์ จะทำให้เกิดการประหยัดค่าใช้จ่ายมากกว่าการใช้ชุดอักขระแบบเดิม. Unicode ทำให้ผลิตภัณฑ์ซอฟต์แวร์หนึ่งเดียว หรือเว็บไซต์แห่งเดียว รองรับได้หลายแพล็ตฟอร์ม, หลายภาษาและหลายประเทศโดยไม่ต้องทำการรื้อปรับระบบ. Unicode ยังทำให้ข้อมูลสามารถเคลื่อนย้ายไปมาในหลายๆ ระบบโดยไม่เกิดความผิดพลาดเสียหาย.
+
+เกี่ยวกับ Unicode Consortium
+Unicode Consortium เป็นองค์กรไม่แสวงหากำไรที่ก่อตั้งขึ้นเพื่อพัฒนา, ขยายและส่งเสริมการใช้ Unicode Standard, ซึ่งกำหนดรูปแบบการแทนค่าของข้อความในผลิตภัณฑ์ซอฟต์แวร์และมาตรฐานใหม่ๆ. สมาชิกของสมาคมเป็นตัวแทนจากบริษัทและองค์กรในอุตสาหกรรมคอมพิวเตอร์และการประมวลผลสารสนเทศ. สมาคมได้รับการสนับสนุนทางการเงินผ่านทางค่าธรรมเนียมของการเป็นสมาชิกเท่านั้น. สมาชิกภาพของ Unicode Consortium เปิดกว้างสำหรับองค์กรหรือบุคคลใดๆ ในโลกที่ต้องการสนับสนุน Unicode Standard และช่วยเหลือการขยายตัวและการนำ Unicode ไปใช้งาน. 
+
+สำหรับข้อมูลเพิ่มเติม, ให้ดูที่ Glossary, Sample Unicode-Enabled Products, Technical Introduction และ Useful Resources.
+
+เป็นมนุษย์สุดประเสริฐเลิศคุณค่า
+กว่าบรรดาฝูงสัตว์เดรัจฉาน
+จงฝ่าฟันพัฒนาวิชาการ
+อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
+ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า
+หัดอภัยเหมือนกีฬาอัชฌาสัย
+ปฏิบัติประพฤติกฎกำหนดใจ
+พูดจาให้จ๊ะ ๆ จ๋า ๆ น่าฟังเอยฯ
+
+แหล่งที่มา : สมาคมคอมพิวเตอร์แห่งประเทศไทย
+
+ฅนฃวด kho khuat and kho khon
+@TITLECASE@
+ก๊กเฮง แซ่แต้
+กชกร ศราทธทัต
+กติกา อังคสุภณ
+กนก ธรรมประทีป
+กนก วงศ์ทองศรี
+กนกกร ช้างเย็นฉ่ำ
+กนกฉัตร์ ถาวรนันท์
+กนกนวล โปษยะนันทน์
+กนกพร คมคาย
+กนกพร ตีรเลิศพานิช
+กนกพร พันทร
+กนกพร ศรีบัณฑิต
+กนกพร อติวรรณาพัฒน์
+กนกพรรณ ศรีวนาภิรมย์
+กนกรัตน์ เกียรติยิ่งอังศุลี
+กนกรัตน์ สุธรรมพิทักษ์
+กนกวรรณ คงคาประเสริฐ
+กนกวรรณ แซ่เตียว
+กนกวรรณ บุญประเสริฐ
+กนกวรรณ รักทรัพย์
+กนกวรรณ สัจจพงษ์
+กนกวรรณ อุ้ยวงศ์ไพศาล
+กนกศักดิ์ ยิ่งยง
+กนกแก้ว กรสมิต
+กนิษฐา ทนุถนอมราษฎร์
+กนิษฐา หวังวิบูลย์กิจ
+กมล กาญจนโรจน์
+กมล คัมภีร์
+กมล เจตน์มงคลรัตน์
+กมล ชูตระกูลธรรม
+@SET [[:thai:] \u0E01-\u0E3A\u0E40-\u0E5B]
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java b/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
new file mode 100644
index 0000000..a1e6e07
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
@@ -0,0 +1,255 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+
+import java.awt.event.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.demo.impl.*;
+
+/**
+ * A subclass of {@link DumbTextComponent} that passes key events through
+ * a {@link com.ibm.icu.text.Transliterator}.
+ *
+ * @author Alan Liu
+ */
+public class TransliteratingTextComponent extends DumbTextComponent {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -8672128213174154047L;
+
+    private static boolean DEBUG = false;
+
+    private Transliterator translit = null;
+    
+    // NOTE: DISABLE THE START AND CURSOR UNTIL WE CAN GET IT TO WORK AT ALL
+
+    // Index into getText() where the start of transliteration is.
+    // As we commit text during transliteration, we advance
+    // this.
+    //private int start = 0;
+
+    // Index into getText() where the cursor is; cursor >= start
+    //private int cursor = 0;
+
+//    private static final String COPYRIGHT =
+//        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Constructor.
+     */
+    public TransliteratingTextComponent() {
+        super();
+        /*
+        addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                // We get an ActionEvent only when the selection changes
+                resetTransliterationStart();
+            }
+        });
+        */
+    }
+
+    /**
+     * {@link DumbTextComponent} API.  Framework method that is called
+     * when a <code>KeyEvent</code> is received.  This implementation
+     * runs the new character through the current
+     * <code>Transliterator</code>, if one is set, and inserts the
+     * transliterated text into the buffer.
+     */
+    protected void handleKeyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+        
+        if (translit == null) {
+            setKeyStart(-1);
+            super.handleKeyTyped(e);
+            return;
+        }
+
+        transliterate(ch, false);
+    }
+    
+    public void flush() {
+        if (translit != null) transliterate('\uFFFF', true);
+    }
+    
+    
+    protected void transliterate(char ch, boolean flush) {
+
+        // ------------------------------------------------------------
+        // The following case motivates the two lines that recompute
+        // start and cursor below.
+
+        //      "     "   
+        // a b c q r|s t u m m
+        // 0 1 2 3 4 5 6 7 8 9
+        //       0 1 2
+
+        // start 3, cursor 5, sel 6 -> { 0, 3, 2 }
+        // : new int[] { 0, sel - start, cursor - start };
+        
+        // sz>99|9
+
+        //      "     {   "
+        // a b c q r 9 9|9 t u m m
+        // 0 1 2 3 4 5 6 7 8 9 a b
+        //       0 1 2 3 4
+
+        // { 3, 5, 4 } -> start 6, cursor 7, sel 8
+        // : start += index[0];
+        // : cursor = start + index[2] - index[0];
+        // ------------------------------------------------------------
+
+        // Need to save start because calls to replaceRange will update
+        // start and cursor.
+        //int saveStart = start;
+
+        int end = flush ? getSelectionEnd() : getSelectionStart();
+        String sourceText = getText().substring(0,end);
+        ReplaceableString buf = new ReplaceableString(sourceText);
+        /*buf.replace(0, 1, getText().substring(start,
+                                              getSelectionStart()));*/
+
+        Transliterator.Position index = new Transliterator.Position();
+        index.contextLimit = buf.length();
+        index.contextStart = 0;
+        index.start = getKeyStart();
+        if (index.start == -1) index.start = getSelectionStart();
+        index.limit = buf.length();
+
+      //  StringBuffer log = null;
+        if (DEBUG) {
+            System.out.println("Transliterator: " + translit.getID());
+            System.out.println("From:\t" + '"' + buf.toString() + '"'
+                + "; {cs: " + index.contextStart
+                + ", s: " + index.start
+                + ", l: " + index.limit
+                + ", cl: " + index.contextLimit 
+                + "}" + "; '" + ch + "'"
+                + " " + getKeyStart()
+            );
+        }
+
+        if (flush) {
+            translit.finishTransliteration(buf, index);
+        } else {
+            translit.transliterate(buf, index, ch);
+        }
+        
+        if (DEBUG) {
+            System.out.println("To:\t" + '"' + buf.toString() + '"'
+                + "; {cs: " + index.contextStart
+                + ", s: " + index.start
+                + ", l: " + index.limit
+                + ", cl: " + index.contextLimit 
+                + "}"
+                );
+            System.out.println();
+        }
+        /*
+        buf.replace(buf.length(), buf.length(), String.valueOf(ch));
+        translit.transliterate(buf);
+        */
+        
+        String result = buf.toString();
+        //if (result.equals(sourceText + ch)) return;
+        
+        replaceRange(result, 0, getSelectionEnd());
+        setKeyStart(index.start);
+        
+        // At this point start has been changed by the callback to
+        // resetTransliteratorStart() via replaceRange() -- so use our
+        // local copy, saveStart.
+
+        // The START index is zero-based.  On entry to transliterate(),
+        // it was zero.  We can therefore just add it to our original
+        // getText()-based index value of start (in saveStart) to get
+        // the new getText()-based start.
+//        start = saveStart + index.contextStart;
+
+        // Make the cursor getText()-based.  The CURSOR index is zero-based.
+//        cursor = start + index.start - index.contextStart;
+
+/*
+        if (DEBUG) {
+            String out = buf.toString();
+            log.append(out.substring(0, index.contextStart)).
+                append('{').
+                append(out.substring(index.contextStart, index.start)).
+                append('|').
+                append(out.substring(index.start)).
+                append('"');
+            log.append(", {" + index.contextStart + ", " + index.contextLimit + ", " + index.start + "}, ");
+//            log.append("start " + start + ", cursor " + cursor);
+            log.append(", sel " + getSelectionStart());
+            System.out.println(escape(log.toString()));
+        }
+        */
+    }
+    
+    /**
+     * Set the {@link com.ibm.icu.text.Transliterator} and direction to
+     * use to process incoming <code>KeyEvent</code>s.
+     * @param t the {@link com.ibm.icu.text.Transliterator} to use
+     */
+    public void setTransliterator(Transliterator t) {
+        /*
+        if (translit != t) { // [sic] pointer compare ok; singletons
+            resetTransliterationStart();
+        }
+        */
+        translit = t;
+    }
+
+    public Transliterator getTransliterator() {
+        return translit;
+    }
+
+    /**
+     * Reset the start point at which transliteration begins.  This
+     * needs to be done when the user moves the cursor or when the
+     * current {@link com.ibm.icu.text.Transliterator} is changed. 
+     */
+     /*
+    private void resetTransliterationStart() {
+        start = getSelectionStart();
+        cursor = start;
+    }
+    */
+
+    /**
+     * Escape non-ASCII characters as Unicode.
+     * JUST FOR DEBUGGING OUTPUT.
+     */
+    public static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c <= 0x007F) {
+                if (c == '\\') {
+                    buf.append("\\\\"); // That is, "\\"
+                } else {
+                    buf.append(c);
+                }
+            } else {
+                buf.append("\\u");
+                if (c < 0x1000) {
+                    buf.append('0');
+                    if (c < 0x100) {
+                        buf.append('0');
+                        if (c < 0x10) {
+                            buf.append('0');
+                        }
+                    }
+                }
+                buf.append(Integer.toHexString(c));
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java b/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java
new file mode 100644
index 0000000..b487ea0
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java
@@ -0,0 +1,285 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.demo.translit;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.impl.Utility;
+
+import java.util.*;
+import java.io.*;
+
+public class TransliterationChart {
+    public static void main(String[] args) throws IOException {
+        System.out.println("Start");
+        UnicodeSet lengthMarks = new UnicodeSet("[\u09D7\u0B56-\u0B57\u0BD7\u0C56\u0CD5-\u0CD6\u0D57\u0C55\u0CD5]");
+        int[] indicScripts = {
+            UScript.LATIN,
+            UScript.DEVANAGARI,
+            UScript.BENGALI,
+            UScript.GURMUKHI,
+            UScript.GUJARATI,
+            UScript.ORIYA,
+            UScript.TAMIL,
+            UScript.TELUGU,
+            UScript.KANNADA,
+            UScript.MALAYALAM,
+        };
+        String[] names = new String[indicScripts.length];
+        UnicodeSet[] sets = new UnicodeSet[indicScripts.length];
+        Transliterator[] fallbacks = new Transliterator[indicScripts.length];
+        for (int i = 0; i < indicScripts.length; ++i) {
+            names[i] = UScript.getName(indicScripts[i]);
+            sets[i] = new UnicodeSet("[[:" + names[i] + ":]&[[:L:][:M:]]&[:age=3.1:]]");
+            fallbacks[i] = Transliterator.getInstance("any-" + names[i]);
+        }
+        EquivClass eq = new EquivClass(new ReverseComparator());
+        PrintWriter pw = openPrintWriter("transChart.html");
+        pw.println("<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
+        pw.println("<title>Indic Transliteration Chart</title><style>");
+        pw.println("td { text-align: Center; font-size: 200% }");
+        pw.println("tt { font-size: 50% }");
+        pw.println("td.miss { background-color: #CCCCFF }");
+        pw.println("</style></head><body bgcolor='#FFFFFF'>");
+
+        Transliterator anyToLatin = Transliterator.getInstance("any-latin");
+        
+        String testString = "\u0946\u093E";
+        
+        UnicodeSet failNorm = new UnicodeSet();
+        Set latinFail = new TreeSet();
+        
+        for (int i = 0; i < indicScripts.length; ++i) {
+            if (indicScripts[i] == UScript.LATIN) continue;
+            String source = names[i];
+            System.out.println(source);
+            UnicodeSet sourceChars = sets[i];
+
+            for (int j = 0; j < indicScripts.length; ++j) {
+                if (i == j) continue;
+                String target = names[j];
+                Transliterator forward = Transliterator.getInstance(source + '-' + target);
+                Transliterator backward = forward.getInverse();
+                UnicodeSetIterator it = new UnicodeSetIterator(sourceChars);
+                while (it.next()) {
+                    if (lengthMarks.contains(it.codepoint)) continue;
+                    String s = Normalizer.normalize(it.codepoint,Normalizer.NFC,0);
+                    //if (!Normalizer.isNormalized(s,Normalizer.NFC,0)) continue;
+                    if (!s.equals(Normalizer.normalize(s,Normalizer.NFD,0))) {
+                        failNorm.add(it.codepoint);
+                    } 
+                    String t = fix(forward.transliterate(s));
+                    if (t.equals(testString)) {
+                        System.out.println("debug");
+                    }
+
+                    String r = fix(backward.transliterate(t));
+                    if (Normalizer.compare(s,r,0) == 0) {
+                        if (indicScripts[j] != UScript.LATIN) eq.add(s,t);
+                    } else {
+                        if (indicScripts[j] == UScript.LATIN) {
+                            latinFail.add(s + " - " + t + " - " + r);
+                        }
+                    }
+                }
+            }
+        }
+        // collect equivalents
+        pw.println("<table border='1' cellspacing='0'><tr>");
+        for (int i = 0; i < indicScripts.length; ++i) {
+            pw.print("<th width='10%'>" + names[i].substring(0,3) + "</th>");
+        }
+        pw.println("</tr>");
+
+        Iterator rit = eq.getSetIterator(new MyComparator());
+        while(rit.hasNext()) {
+            Set equivs = (Set)rit.next();
+            pw.print("<tr>");
+            Iterator sit = equivs.iterator();
+            String source = (String)sit.next();
+            String item = anyToLatin.transliterate(source);
+            if (item.equals("") || source.equals(item)) item = "&nbsp;";
+            pw.print("<td>" + item + "</td>");
+            for (int i = 1; i < indicScripts.length; ++i) {
+                sit = equivs.iterator();
+                item = "";
+                while (sit.hasNext()) {
+                    String trial = (String)sit.next();
+                    if (!sets[i].containsAll(trial)) continue;
+                    item = trial;
+                    break;
+                }
+                String classString = "";
+                if (item.equals("")) {
+                    classString = " class='miss'";
+                    String temp = fallbacks[i].transliterate(source);
+                    if (!temp.equals("") && !temp.equals(source)) item = temp;
+                } 
+                String backup = item.equals("") ? "&nbsp;" : item;
+                pw.print("<td" + classString + " title='" + getName(item, "; ") + "'>" 
+                    + backup + "<br><tt>" + Utility.hex(item) + "</tt></td>");
+            }
+            /*
+            Iterator sit = equivs.iterator();
+            while (sit.hasNext()) {
+                String item = (String)sit.next();
+                pw.print("<td>" + item + "</td>");
+            }
+            */
+            pw.println("</tr>");
+        }
+        pw.println("</table>");
+        if (true) {
+            pw.println("<h2>Failed Normalization</h2>");
+    
+            UnicodeSetIterator it = new UnicodeSetIterator(failNorm);
+            UnicodeSet pieces = new UnicodeSet();
+            while (it.next()) {
+                String s = UTF16.valueOf(it.codepoint);
+                String d = Normalizer.normalize(s,Normalizer.NFD,0);
+                pw.println("Norm:" + s + ", " + Utility.hex(s) + " " + UCharacter.getName(it.codepoint)
+                     + "; " + d + ", " + Utility.hex(d) + ", ");
+                pw.println(UCharacter.getName(d.charAt(1)) + "<br>");
+                if (UCharacter.getName(d.charAt(1)).indexOf("LENGTH") >= 0) pieces.add(d.charAt(1));
+            }
+            pw.println(pieces);
+            
+            pw.println("<h2>Failed Round-Trip</h2>");
+            Iterator cit = latinFail.iterator();
+            while (cit.hasNext()) {
+                pw.println(cit.next() + "<br>");
+            }
+        } 
+
+        pw.println("</table></body></html>");
+        pw.close();     
+        System.out.println("Done");
+    }
+    
+    public static String fix(String s) {
+        if (s.equals("\u0946\u093E")) return "\u094A";
+        if (s.equals("\u0C46\u0C3E")) return "\u0C4A";
+        if (s.equals("\u0CC6\u0CBE")) return "\u0CCA";
+
+        if (s.equals("\u0947\u093E")) return "\u094B";
+        if (s.equals("\u0A47\u0A3E")) return "\u0A4B";
+        if (s.equals("\u0AC7\u0ABE")) return "\u0ACB";
+        if (s.equals("\u0C47\u0C3E")) return "\u0C4B";
+        if (s.equals("\u0CC7\u0CBE")) return "\u0CCB";
+       
+        //return Normalizer.normalize(s,Normalizer.NFD,0);
+        return s;
+    }
+    
+    public static PrintWriter openPrintWriter(String fileName) throws IOException {
+        File lf = new File(fileName);
+        System.out.println("Creating file: " + lf.getAbsoluteFile());
+    
+        return new PrintWriter(
+                new BufferedWriter(
+                    new OutputStreamWriter(
+                        new FileOutputStream(fileName), "UTF8"), 4*1024));
+    }
+
+    
+    public static String getName(String s, String separator) {
+        int cp;
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s,i);
+            if (i != 0) sb.append(separator);
+            sb.append(UCharacter.getName(cp));
+        }
+        return sb.toString();
+    }
+    
+    static class MyComparator implements Comparator {
+       public int compare(Object o1, Object o2) {
+            Iterator i1 = ((TreeSet) o1).iterator();
+            Iterator i2 = ((TreeSet) o2).iterator();
+            while (i1.hasNext() && i2.hasNext()) {
+                String a = (String)i1.next();
+                String b = (String)i2.next();
+                int result = a.compareTo(b);
+                if (result != 0) return result;
+            }
+            if (i1.hasNext()) return 1;
+            if (i2.hasNext()) return -1;
+            return 0;
+        }
+        
+    }
+    static class ReverseComparator implements Comparator {
+        public int compare(Object o1, Object o2) {
+            String a = o1.toString();
+            char a1 = a.charAt(0);
+            String b = o2.toString();
+            char b1 = b.charAt(0);
+            if (a1 < 0x900 && b1 > 0x900) return -1;
+            if (a1 > 0x900 && b1 < 0x900) return +1;
+            return a.compareTo(b);
+        }       
+    }
+      
+    static class EquivClass {
+        EquivClass(Comparator c) {
+            comparator = c;
+        }
+        private HashMap itemToSet = new HashMap();
+        private Comparator comparator;
+        
+        void add(Object a, Object b) {
+            Set sa = (Set)itemToSet.get(a);
+            Set sb = (Set)itemToSet.get(b);
+            if (sa == null && sb == null) { // new set!
+                Set s = new TreeSet(comparator);
+                s.add(a);
+                s.add(b);
+                itemToSet.put(a, s);
+                itemToSet.put(b, s);
+            } else if (sa == null) {
+                sb.add(a);
+            } else if (sb == null) {
+                sa.add(b);
+            } else { // merge sets, dumping sb
+                sa.addAll(sb);
+                Iterator it = sb.iterator();
+                while (it.hasNext()) {
+                    itemToSet.put(it.next(), sa);
+                }
+            }
+        }
+        
+        private class MyIterator implements Iterator {
+            private Iterator it;
+            MyIterator (Comparator comp) {
+                TreeSet values = new TreeSet(comp);
+                values.addAll(itemToSet.values());
+                it = values.iterator();
+            }
+        
+            public boolean hasNext() {
+                return it.hasNext();
+            }
+            public Object next() {
+                return it.next();
+            }
+            public void remove() {
+                throw new IllegalArgumentException("can't remove");
+            }        
+        }
+
+        public Iterator getSetIterator (Comparator comp) {
+            return new MyIterator(comp);
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/demo.bat b/src/com/ibm/icu/dev/demo/translit/demo.bat
new file mode 100755
index 0000000..dd9c205
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/demo.bat
@@ -0,0 +1,13 @@
+REM /*
+REM *******************************************************************************
+REM  * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+REM  * others. All Rights Reserved.                                                *
+REM  *******************************************************************************
+REM  */
+REM For best results, run the demo as an applet inside of Netscape
+REM with Bitstream Cyberbit installed.
+
+REM setup your JDK 1.1.x path and classpath here:
+call JDK11
+set CLASSPATH=../translit.jar;%CLASSPATH%
+javaw Demo
diff --git a/src/com/ibm/icu/dev/demo/translit/demo.html b/src/com/ibm/icu/dev/demo/translit/demo.html
new file mode 100644
index 0000000..2a7ee5b
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/demo.html
@@ -0,0 +1,34 @@
+<!-- 
+/**
+ *******************************************************************************
+ * Copyright (C) 1999-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<HTML>
+<HEAD>
+<TITLE>Transliteration Demo</TITLE>
+</HEAD>
+<BODY>
+<APPLET CODE="com.ibm.demo.translit.DemoApplet.class" WIDTH=140 HEIGHT=33></APPLET>
+
+<HR>
+
+If you don't see a button above, then your browser is failing to
+locate the necessary Java class files.
+
+<P>
+
+One way to make this work is to copy this HTML file to
+<code>icu4j/src</code>, and make sure the Java files in the directories
+under <code>icu4j/src/com</code> are built.  Then open this HTML file
+using a browser or appletviewer.
+
+<P>
+
+For best results, run this demo as an applet within Netscape with
+Bitstream Cyberbit installed.
+
+</BODY>
+</HTML>
diff --git a/src/com/ibm/icu/dev/demo/translit/package.html b/src/com/ibm/icu/dev/demo/translit/package.html
new file mode 100644
index 0000000..8355d1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Transliterator demo appliation.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
new file mode 100644
index 0000000..8f7c21d
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
@@ -0,0 +1,20365 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Generated: Fri Jan 26 15:14:48 2001
+# Tool: ..\..\tools\translit\hanpinyin.pl
+#--------------------------------------------------------------------
+
+# Han-Pinyin
+
+# Mechanically derived from \desk\Unihan.txt (ftp.unicode.org), version:
+#
+#	Name:             Unihan database
+#	Unicode version:  3.0b1
+#	Table version:    1.1
+#	Date:             2 July 1999
+#
+#	Copyright (c) 1996-1999 Unicode, Inc.  All Rights reserved.
+
+丁 > dīng; #4E01
+丂 > kăo; #4E02
+七 > qī; #4E03
+丄 > shàng; #4E04
+丅 > xià; #4E05
+万 > mò; #4E07
+丈 > zhàng; #4E08
+三 > sān; #4E09
+上 > shàng; #4E0A
+下 > xià; #4E0B
+丌 > jī; #4E0C
+不 > bù; #4E0D
+与 > yŭ; #4E0E
+丏 > miăn; #4E0F
+丐 > gài; #4E10
+丑 > chŏu; #4E11
+丒 > chŏu; #4E12
+专 > zhuān; #4E13
+且 > qiĕ; #4E14
+丕 > pī; #4E15
+世 > shì; #4E16
+丗 > shì; #4E17
+丘 > qīu; #4E18
+丙 > bĭng; #4E19
+业 > yè; #4E1A
+丛 > cóng; #4E1B
+东 > dōng; #4E1C
+丝 > sī; #4E1D
+丞 > chéng; #4E1E
+丟 > dīu; #4E1F
+丠 > qīu; #4E20
+両 > liăng; #4E21
+丢 > dīu; #4E22
+丣 > yŏu; #4E23
+两 > liăng; #4E24
+严 > yán; #4E25
+並 > bìng; #4E26
+丧 > sāng; #4E27
+丨 > gŭn; #4E28
+丩 > jīu; #4E29
+个 > gè; #4E2A
+丫 > yā; #4E2B
+丬 > qiáng; #4E2C
+中 > zhōng; #4E2D
+丮 > jĭ; #4E2E
+丯 > jiè; #4E2F
+丰 > fēng; #4E30
+丱 > guàn; #4E31
+串 > chuàn; #4E32
+丳 > chăn; #4E33
+临 > lín; #4E34
+丵 > zhŭo; #4E35
+丶 > zhŭ; #4E36
+丸 > wán; #4E38
+丹 > dān; #4E39
+为 > wèi; #4E3A
+主 > zhŭ; #4E3B
+丼 > jĭng; #4E3C
+丽 > lì; #4E3D
+举 > jŭ; #4E3E
+丿 > piĕ; #4E3F
+乀 > fú; #4E40
+乁 > yí; #4E41
+乂 > yì; #4E42
+乃 > năi; #4E43
+久 > jĭu; #4E45
+乆 > jĭu; #4E46
+乇 > zhé; #4E47
+么 > yāo; #4E48
+义 > yì; #4E49
+之 > zhī; #4E4B
+乌 > wū; #4E4C
+乍 > zhà; #4E4D
+乎 > hū; #4E4E
+乏 > fá; #4E4F
+乐 > lè; #4E50
+乑 > zhòng; #4E51
+乒 > pīng; #4E52
+乓 > pang; #4E53
+乔 > qiáo; #4E54
+乕 > hŭ; #4E55
+乖 > guāi; #4E56
+乗 > chéng; #4E57
+乘 > chéng; #4E58
+乙 > yĭ; #4E59
+乚 > yĭn; #4E5A
+乜 > miē; #4E5C
+九 > jĭu; #4E5D
+乞 > qĭ; #4E5E
+也 > yĕ; #4E5F
+习 > xí; #4E60
+乡 > xiāng; #4E61
+乢 > gài; #4E62
+乣 > dīu; #4E63
+书 > shū; #4E66
+乨 > shĭ; #4E68
+乩 > jī; #4E69
+乪 > nāng; #4E6A
+乫 > jiā; #4E6B
+乭 > shí; #4E6D
+买 > măi; #4E70
+乱 > luàn; #4E71
+乳 > rŭ; #4E73
+乴 > xué; #4E74
+乵 > yăn; #4E75
+乶 > fŭ; #4E76
+乷 > shā; #4E77
+乸 > nă; #4E78
+乹 > gān; #4E79
+乾 > gān; #4E7E
+乿 > chì; #4E7F
+亀 > gūi; #4E80
+亁 > gān; #4E81
+亂 > luàn; #4E82
+亃 > lín; #4E83
+亄 > yì; #4E84
+亅 > jué; #4E85
+了 > liăo; #4E86
+予 > yú; #4E88
+争 > zhēng; #4E89
+亊 > shì; #4E8A
+事 > shì; #4E8B
+二 > èr; #4E8C
+亍 > chù; #4E8D
+于 > yú; #4E8E
+亏 > yú; #4E8F
+亐 > yú; #4E90
+云 > yún; #4E91
+互 > hù; #4E92
+亓 > qí; #4E93
+五 > wŭ; #4E94
+井 > jĭng; #4E95
+亖 > sì; #4E96
+亗 > sùi; #4E97
+亘 > gèn; #4E98
+亙 > gèn; #4E99
+亚 > yà; #4E9A
+些 > xiē; #4E9B
+亜 > yà; #4E9C
+亝 > qí; #4E9D
+亞 > yà; #4E9E
+亟 > jí; #4E9F
+亠 > tóu; #4EA0
+亡 > wáng; #4EA1
+亢 > kàng; #4EA2
+亣 > tà; #4EA3
+交 > jiāo; #4EA4
+亥 > hài; #4EA5
+亦 > yì; #4EA6
+产 > chăn; #4EA7
+亨 > hēng; #4EA8
+亩 > mŭ; #4EA9
+享 > xiăng; #4EAB
+京 > jīng; #4EAC
+亭 > tíng; #4EAD
+亮 > liàng; #4EAE
+亯 > xiăng; #4EAF
+亰 > jīng; #4EB0
+亱 > yè; #4EB1
+亲 > qīn; #4EB2
+亳 > bó; #4EB3
+亴 > yòu; #4EB4
+亵 > xiè; #4EB5
+亶 > dăn; #4EB6
+亷 > lián; #4EB7
+亸 > dŭo; #4EB8
+亹 > wĕi; #4EB9
+人 > rén; #4EBA
+亻 > rén; #4EBB
+亼 > jí; #4EBC
+亾 > wáng; #4EBE
+亿 > yì; #4EBF
+什 > shí; #4EC0
+仁 > rén; #4EC1
+仂 > lè; #4EC2
+仃 > dīng; #4EC3
+仄 > zè; #4EC4
+仅 > jĭn; #4EC5
+仆 > pū; #4EC6
+仇 > chóu; #4EC7
+仈 > bā; #4EC8
+仉 > zhăng; #4EC9
+今 > jīn; #4ECA
+介 > jiè; #4ECB
+仌 > bīng; #4ECC
+仍 > réng; #4ECD
+从 > cóng; #4ECE
+仏 > fó; #4ECF
+仐 > săn; #4ED0
+仑 > lún; #4ED1
+仓 > cāng; #4ED3
+仔 > zĭ; #4ED4
+仕 > shì; #4ED5
+他 > tā; #4ED6
+仗 > zhàng; #4ED7
+付 > fù; #4ED8
+仙 > xiān; #4ED9
+仚 > xiān; #4EDA
+仛 > tūo; #4EDB
+仜 > hóng; #4EDC
+仝 > tóng; #4EDD
+仞 > rèn; #4EDE
+仟 > qiān; #4EDF
+仠 > gán; #4EE0
+仡 > yì; #4EE1
+仢 > dí; #4EE2
+代 > dài; #4EE3
+令 > lìng; #4EE4
+以 > yĭ; #4EE5
+仦 > chào; #4EE6
+仧 > cháng; #4EE7
+仨 > sā; #4EE8
+仪 > yí; #4EEA
+仫 > mù; #4EEB
+们 > men; #4EEC
+仭 > rèn; #4EED
+仮 > jiă; #4EEE
+仯 > chào; #4EEF
+仰 > yăng; #4EF0
+仱 > qián; #4EF1
+仲 > zhòng; #4EF2
+仳 > pĭ; #4EF3
+仴 > wàn; #4EF4
+仵 > wŭ; #4EF5
+件 > jiàn; #4EF6
+价 > jiè; #4EF7
+仸 > yăo; #4EF8
+仹 > fēng; #4EF9
+仺 > cāng; #4EFA
+任 > rèn; #4EFB
+仼 > wáng; #4EFC
+份 > fèn; #4EFD
+仾 > dī; #4EFE
+仿 > făng; #4EFF
+伀 > zhōng; #4F00
+企 > qĭ; #4F01
+伂 > pèi; #4F02
+伃 > yú; #4F03
+伄 > diào; #4F04
+伅 > dùn; #4F05
+伆 > wèn; #4F06
+伇 > yì; #4F07
+伈 > xĭn; #4F08
+伉 > kàng; #4F09
+伊 > yī; #4F0A
+伋 > jí; #4F0B
+伌 > ài; #4F0C
+伍 > wŭ; #4F0D
+伎 > jì; #4F0E
+伏 > fú; #4F0F
+伐 > fá; #4F10
+休 > xīu; #4F11
+伒 > jìn; #4F12
+伓 > bēi; #4F13
+伔 > dăn; #4F14
+伕 > fū; #4F15
+伖 > tăng; #4F16
+众 > zhòng; #4F17
+优 > yōu; #4F18
+伙 > hŭo; #4F19
+会 > hùi; #4F1A
+伛 > yŭ; #4F1B
+伜 > cùi; #4F1C
+伝 > chuán; #4F1D
+伞 > săn; #4F1E
+伟 > wĕi; #4F1F
+传 > chuán; #4F20
+伡 > chē; #4F21
+伢 > yá; #4F22
+伣 > xiàn; #4F23
+伤 > shāng; #4F24
+伥 > chāng; #4F25
+伦 > lún; #4F26
+伧 > cāng; #4F27
+伨 > xùn; #4F28
+伩 > xìn; #4F29
+伪 > wĕi; #4F2A
+伫 > zhù; #4F2B
+伭 > xuán; #4F2D
+伮 > nú; #4F2E
+伯 > bó; #4F2F
+估 > gū; #4F30
+伱 > nĭ; #4F31
+伲 > nĭ; #4F32
+伳 > xiè; #4F33
+伴 > bàn; #4F34
+伵 > xù; #4F35
+伶 > líng; #4F36
+伷 > zhòu; #4F37
+伸 > shēn; #4F38
+伹 > qū; #4F39
+伺 > sì; #4F3A
+伻 > bēng; #4F3B
+似 > sì; #4F3C
+伽 > jiā; #4F3D
+伾 > pī; #4F3E
+伿 > yì; #4F3F
+佀 > sì; #4F40
+佁 > ăi; #4F41
+佂 > zhēng; #4F42
+佃 > diàn; #4F43
+佄 > hán; #4F44
+佅 > mài; #4F45
+但 > dàn; #4F46
+佇 > zhù; #4F47
+佈 > bù; #4F48
+佉 > qū; #4F49
+佊 > bĭ; #4F4A
+佋 > shào; #4F4B
+佌 > cĭ; #4F4C
+位 > wèi; #4F4D
+低 > dī; #4F4E
+住 > zhù; #4F4F
+佐 > zŭo; #4F50
+佑 > yòu; #4F51
+佒 > yāng; #4F52
+体 > tĭ; #4F53
+佔 > zhàn; #4F54
+何 > hé; #4F55
+佖 > bì; #4F56
+佗 > tūo; #4F57
+佘 > shé; #4F58
+余 > yú; #4F59
+佚 > yì; #4F5A
+佛 > fó; #4F5B
+作 > zùo; #4F5C
+佝 > kòu; #4F5D
+佞 > nìng; #4F5E
+佟 > tóng; #4F5F
+你 > nĭ; #4F60
+佡 > xuān; #4F61
+佢 > qú; #4F62
+佣 > yòng; #4F63
+佤 > wă; #4F64
+佥 > qiān; #4F65
+佧 > kă; #4F67
+佩 > pèi; #4F69
+佪 > huái; #4F6A
+佫 > hè; #4F6B
+佬 > lăo; #4F6C
+佭 > xiáng; #4F6D
+佮 > gé; #4F6E
+佯 > yáng; #4F6F
+佰 > băi; #4F70
+佱 > fă; #4F71
+佲 > míng; #4F72
+佳 > jia; #4F73
+佴 > èr; #4F74
+併 > bìng; #4F75
+佶 > jí; #4F76
+佷 > hĕn; #4F77
+佸 > húo; #4F78
+佹 > gŭi; #4F79
+佺 > quán; #4F7A
+佻 > tiāo; #4F7B
+佼 > jiăo; #4F7C
+佽 > cì; #4F7D
+佾 > yì; #4F7E
+使 > shĭ; #4F7F
+侀 > xíng; #4F80
+侁 > shēn; #4F81
+侂 > tūo; #4F82
+侃 > kăn; #4F83
+侄 > zhí; #4F84
+侅 > gāi; #4F85
+來 > lái; #4F86
+侇 > yí; #4F87
+侈 > chĭ; #4F88
+侉 > kuā; #4F89
+侊 > guāng; #4F8A
+例 > lì; #4F8B
+侌 > yīn; #4F8C
+侍 > shì; #4F8D
+侎 > mĭ; #4F8E
+侏 > zhū; #4F8F
+侐 > xù; #4F90
+侑 > yòu; #4F91
+侒 > ān; #4F92
+侓 > lù; #4F93
+侔 > móu; #4F94
+侕 > ér; #4F95
+侖 > lún; #4F96
+侗 > tóng; #4F97
+侘 > chà; #4F98
+侙 > chì; #4F99
+侚 > xùn; #4F9A
+供 > gōng; #4F9B
+侜 > zhōu; #4F9C
+依 > yī; #4F9D
+侞 > rŭ; #4F9E
+侟 > jiàn; #4F9F
+侠 > xiá; #4FA0
+価 > jià; #4FA1
+侢 > zài; #4FA2
+侣 > lǚ; #4FA3
+侥 > jiăo; #4FA5
+侦 > zhēn; #4FA6
+侧 > cè; #4FA7
+侨 > qiáo; #4FA8
+侩 > kuài; #4FA9
+侪 > chái; #4FAA
+侫 > nìng; #4FAB
+侬 > nóng; #4FAC
+侭 > jĭn; #4FAD
+侮 > wŭ; #4FAE
+侯 > hóu; #4FAF
+侰 > jĭong; #4FB0
+侱 > chĕng; #4FB1
+侲 > zhèn; #4FB2
+侳 > zùo; #4FB3
+侴 > chŏu; #4FB4
+侵 > qīn; #4FB5
+侶 > lǚ; #4FB6
+侷 > jú; #4FB7
+侸 > shù; #4FB8
+侹 > tĭng; #4FB9
+侺 > shèn; #4FBA
+侻 > tūo; #4FBB
+侼 > bó; #4FBC
+侽 > nán; #4FBD
+侾 > hāo; #4FBE
+便 > biàn; #4FBF
+俀 > tŭi; #4FC0
+俁 > yŭ; #4FC1
+係 > xì; #4FC2
+促 > cù; #4FC3
+俄 > é; #4FC4
+俅 > qíu; #4FC5
+俆 > xú; #4FC6
+俇 > kuăng; #4FC7
+俈 > kù; #4FC8
+俉 > wù; #4FC9
+俊 > jùn; #4FCA
+俋 > yì; #4FCB
+俌 > fŭ; #4FCC
+俍 > láng; #4FCD
+俎 > zŭ; #4FCE
+俏 > qiào; #4FCF
+俐 > lì; #4FD0
+俑 > yŏng; #4FD1
+俒 > hùn; #4FD2
+俓 > jìng; #4FD3
+俔 > xiàn; #4FD4
+俕 > sàn; #4FD5
+俖 > păi; #4FD6
+俗 > sú; #4FD7
+俘 > fú; #4FD8
+俙 > xī; #4FD9
+俚 > lĭ; #4FDA
+俛 > fŭ; #4FDB
+俜 > pīng; #4FDC
+保 > băo; #4FDD
+俞 > yú; #4FDE
+俟 > sì; #4FDF
+俠 > xiá; #4FE0
+信 > xìn; #4FE1
+俢 > xīu; #4FE2
+俣 > yŭ; #4FE3
+俤 > tì; #4FE4
+俥 > chē; #4FE5
+俦 > chóu; #4FE6
+俨 > yăn; #4FE8
+俩 > liă; #4FE9
+俪 > lì; #4FEA
+俫 > lái; #4FEB
+俭 > jiăn; #4FED
+修 > xīu; #4FEE
+俯 > fŭ; #4FEF
+俰 > hè; #4FF0
+俱 > jù; #4FF1
+俲 > xiào; #4FF2
+俳 > pái; #4FF3
+俴 > jiàn; #4FF4
+俵 > biào; #4FF5
+俶 > chù; #4FF6
+俷 > fèi; #4FF7
+俸 > fèng; #4FF8
+俹 > yà; #4FF9
+俺 > ăn; #4FFA
+俻 > bèi; #4FFB
+俼 > yù; #4FFC
+俽 > xīn; #4FFD
+俾 > bĭ; #4FFE
+俿 > jiàn; #4FFF
+倀 > chāng; #5000
+倁 > chí; #5001
+倂 > bìng; #5002
+倃 > zán; #5003
+倄 > yáo; #5004
+倅 > cùi; #5005
+倆 > liă; #5006
+倇 > wăn; #5007
+倈 > lái; #5008
+倉 > cāng; #5009
+倊 > zòng; #500A
+個 > gè; #500B
+倌 > guān; #500C
+倍 > bèi; #500D
+倎 > tiān; #500E
+倏 > shū; #500F
+倐 > shū; #5010
+們 > men; #5011
+倒 > dăo; #5012
+倓 > tán; #5013
+倔 > jué; #5014
+倕 > chúi; #5015
+倖 > xìng; #5016
+倗 > péng; #5017
+倘 > tăng; #5018
+候 > hòu; #5019
+倚 > yĭ; #501A
+倛 > qī; #501B
+倜 > tì; #501C
+倝 > gàn; #501D
+倞 > jìng; #501E
+借 > jiè; #501F
+倠 > sūi; #5020
+倡 > chàng; #5021
+倢 > jié; #5022
+倣 > făng; #5023
+値 > zhí; #5024
+倥 > kōng; #5025
+倦 > juàn; #5026
+倧 > zōng; #5027
+倨 > jù; #5028
+倩 > qiàn; #5029
+倪 > ní; #502A
+倫 > lún; #502B
+倬 > zhūo; #502C
+倭 > wēi; #502D
+倮 > lŭo; #502E
+倯 > sōng; #502F
+倰 > léng; #5030
+倱 > hùn; #5031
+倲 > dōng; #5032
+倳 > zì; #5033
+倴 > bèn; #5034
+倵 > wŭ; #5035
+倶 > jù; #5036
+倷 > nài; #5037
+倸 > căi; #5038
+倹 > jiăn; #5039
+债 > zhài; #503A
+倻 > yē; #503B
+值 > zhí; #503C
+倽 > shà; #503D
+倾 > qīng; #503E
+偀 > yīng; #5040
+偁 > chēng; #5041
+偂 > jiān; #5042
+偃 > yăn; #5043
+偄 > nuàn; #5044
+偅 > zhòng; #5045
+偆 > chŭn; #5046
+假 > jiă; #5047
+偈 > jié; #5048
+偉 > wĕi; #5049
+偊 > yŭ; #504A
+偋 > bĭng; #504B
+偌 > rùo; #504C
+偍 > tí; #504D
+偎 > wēi; #504E
+偏 > piān; #504F
+偐 > yàn; #5050
+偑 > fēng; #5051
+偒 > tăng; #5052
+偓 > wò; #5053
+偔 > è; #5054
+偕 > xié; #5055
+偖 > chĕ; #5056
+偗 > shĕng; #5057
+偘 > kăn; #5058
+偙 > dì; #5059
+做 > zùo; #505A
+偛 > chā; #505B
+停 > tíng; #505C
+偝 > bèi; #505D
+偞 > yè; #505E
+偟 > huáng; #505F
+偠 > yăo; #5060
+偡 > zhàn; #5061
+偢 > chŏu; #5062
+偣 > yān; #5063
+偤 > yŏu; #5064
+健 > jiàn; #5065
+偦 > xū; #5066
+偧 > zhā; #5067
+偨 > cī; #5068
+偩 > fù; #5069
+偪 > bī; #506A
+偫 > zhì; #506B
+偬 > zŏng; #506C
+偭 > miăn; #506D
+偮 > jí; #506E
+偯 > yĭ; #506F
+偰 > xiè; #5070
+偱 > xún; #5071
+偲 > sī; #5072
+偳 > duān; #5073
+側 > cè; #5074
+偵 > zhēn; #5075
+偶 > ŏu; #5076
+偷 > tōu; #5077
+偸 > tōu; #5078
+偹 > bèi; #5079
+偺 > zá; #507A
+偻 > lǚ; #507B
+偼 > jié; #507C
+偽 > wĕi; #507D
+偾 > fèn; #507E
+偿 > cháng; #507F
+傀 > gūi; #5080
+傁 > sŏu; #5081
+傂 > zhì; #5082
+傃 > sù; #5083
+傄 > xiā; #5084
+傅 > fù; #5085
+傆 > yuàn; #5086
+傇 > rŏng; #5087
+傈 > lì; #5088
+傉 > rù; #5089
+傊 > yŭn; #508A
+傋 > gòu; #508B
+傌 > mà; #508C
+傍 > bàng; #508D
+傎 > diān; #508E
+傏 > táng; #508F
+傐 > hào; #5090
+傑 > jié; #5091
+傒 > xī; #5092
+傓 > shàn; #5093
+傔 > qiàn; #5094
+傕 > jué; #5095
+傖 > cāng; #5096
+傗 > chù; #5097
+傘 > săn; #5098
+備 > bèi; #5099
+傚 > xiào; #509A
+傛 > yŏng; #509B
+傜 > yáo; #509C
+傝 > tàn; #509D
+傞 > sūo; #509E
+傟 > yăng; #509F
+傠 > fā; #50A0
+傡 > bìng; #50A1
+傢 > jiā; #50A2
+傣 > dăi; #50A3
+傤 > zài; #50A4
+傥 > tăng; #50A5
+傧 > bìn; #50A7
+储 > chŭ; #50A8
+傩 > núo; #50A9
+傪 > cān; #50AA
+傫 > lĕi; #50AB
+催 > cūi; #50AC
+傭 > yōng; #50AD
+傮 > zāo; #50AE
+傯 > zŏng; #50AF
+傰 > péng; #50B0
+傱 > sŏng; #50B1
+傲 > ào; #50B2
+傳 > chuán; #50B3
+傴 > yŭ; #50B4
+債 > zhài; #50B5
+傶 > còu; #50B6
+傷 > shāng; #50B7
+傸 > qiăng; #50B8
+傹 > jìng; #50B9
+傺 > chì; #50BA
+傻 > shă; #50BB
+傼 > hàn; #50BC
+傽 > zhāng; #50BD
+傾 > qīng; #50BE
+傿 > yàn; #50BF
+僀 > dì; #50C0
+僁 > xī; #50C1
+僂 > lǚ; #50C2
+僃 > bèi; #50C3
+僄 > piào; #50C4
+僅 > jĭn; #50C5
+僆 > lián; #50C6
+僇 > lù; #50C7
+僈 > màn; #50C8
+僉 > qiān; #50C9
+僊 > xiān; #50CA
+僋 > tàn; #50CB
+僌 > yíng; #50CC
+働 > dòng; #50CD
+僎 > zhuàn; #50CE
+像 > xiàng; #50CF
+僐 > shàn; #50D0
+僑 > qiáo; #50D1
+僒 > jĭong; #50D2
+僓 > tŭi; #50D3
+僔 > zŭn; #50D4
+僕 > pú; #50D5
+僖 > xī; #50D6
+僗 > láo; #50D7
+僘 > chăng; #50D8
+僙 > guāng; #50D9
+僚 > liáo; #50DA
+僛 > qī; #50DB
+僜 > dèng; #50DC
+僝 > chán; #50DD
+僞 > wĕi; #50DE
+僟 > jī; #50DF
+僠 > fān; #50E0
+僡 > hùi; #50E1
+僢 > chuăn; #50E2
+僣 > jiàn; #50E3
+僤 > dàn; #50E4
+僥 > jiăo; #50E5
+僦 > jìu; #50E6
+僧 > sēng; #50E7
+僨 > fèn; #50E8
+僩 > xiàn; #50E9
+僪 > jué; #50EA
+僫 > è; #50EB
+僬 > jiāo; #50EC
+僭 > jiàn; #50ED
+僮 > tóng; #50EE
+僯 > lĭn; #50EF
+僰 > bó; #50F0
+僱 > gù; #50F1
+僳 > sù; #50F3
+僴 > xiàn; #50F4
+僵 > jiāng; #50F5
+僶 > mĭn; #50F6
+僷 > yè; #50F7
+僸 > jìn; #50F8
+價 > jià; #50F9
+僺 > qiào; #50FA
+僻 > pì; #50FB
+僼 > fēng; #50FC
+僽 > zhòu; #50FD
+僾 > ài; #50FE
+僿 > sài; #50FF
+儀 > yí; #5100
+儁 > jùn; #5101
+儂 > nóng; #5102
+儃 > chán; #5103
+億 > yì; #5104
+儅 > dāng; #5105
+儆 > jĭng; #5106
+儇 > xuān; #5107
+儈 > kuài; #5108
+儉 > jiăn; #5109
+儊 > chù; #510A
+儋 > dān; #510B
+儌 > jiăo; #510C
+儍 > shă; #510D
+儎 > zài; #510E
+儐 > bìn; #5110
+儑 > àn; #5111
+儒 > rú; #5112
+儓 > tái; #5113
+儔 > chóu; #5114
+儕 > chái; #5115
+儖 > lán; #5116
+儗 > nĭ; #5117
+儘 > jĭn; #5118
+儙 > qiàn; #5119
+儚 > méng; #511A
+儛 > wŭ; #511B
+儜 > níng; #511C
+儝 > qíong; #511D
+儞 > nĭ; #511E
+償 > cháng; #511F
+儠 > liè; #5120
+儡 > lĕi; #5121
+儢 > lǚ; #5122
+儣 > kuàng; #5123
+儤 > bào; #5124
+儥 > dú; #5125
+儦 > biāo; #5126
+儧 > zăn; #5127
+儨 > zhí; #5128
+儩 > sì; #5129
+優 > yōu; #512A
+儫 > háo; #512B
+儬 > chèn; #512C
+儭 > chèn; #512D
+儮 > lì; #512E
+儯 > téng; #512F
+儰 > wĕi; #5130
+儱 > lŏng; #5131
+儲 > chŭ; #5132
+儳 > chàn; #5133
+儴 > ráng; #5134
+儵 > shū; #5135
+儶 > hùi; #5136
+儷 > lì; #5137
+儸 > lúo; #5138
+儹 > zăn; #5139
+儺 > núo; #513A
+儻 > tăng; #513B
+儼 > yăn; #513C
+儽 > lĕi; #513D
+儾 > nàng; #513E
+儿 > ér; #513F
+兀 > wù; #5140
+允 > yŭn; #5141
+兂 > zān; #5142
+元 > yuán; #5143
+兄 > xīong; #5144
+充 > chōng; #5145
+兆 > zhào; #5146
+兇 > xīong; #5147
+先 > xiān; #5148
+光 > guāng; #5149
+兊 > dùi; #514A
+克 > kè; #514B
+兌 > dùi; #514C
+免 > miăn; #514D
+兎 > tù; #514E
+兏 > cháng; #514F
+児 > ér; #5150
+兑 > dùi; #5151
+兒 > ér; #5152
+兓 > xīn; #5153
+兔 > tù; #5154
+兕 > sì; #5155
+兖 > yăn; #5156
+兗 > yăn; #5157
+兘 > shĭ; #5158
+兙 > shí' 'kè; #5159
+党 > dăng; #515A
+兛 > qiān; #515B
+兜 > dōu; #515C
+兝 > fēn; #515D
+兞 > máo; #515E
+兟 > shēn; #515F
+兠 > dōu; #5160
+兡 > băi' 'kè; #5161
+兢 > jīng; #5162
+兣 > lĭ; #5163
+兤 > huáng; #5164
+入 > rù; #5165
+兦 > wáng; #5166
+內 > nèi; #5167
+全 > quán; #5168
+兩 > liăng; #5169
+兪 > yú; #516A
+八 > bā; #516B
+公 > gōng; #516C
+六 > lìu; #516D
+兮 > xī; #516E
+兰 > lán; #5170
+共 > gòng; #5171
+兲 > tiān; #5172
+关 > guān; #5173
+兴 > xīng; #5174
+兵 > bīng; #5175
+其 > qí; #5176
+具 > jù; #5177
+典 > diăn; #5178
+兹 > zī; #5179
+养 > yăng; #517B
+兼 > jiān; #517C
+兽 > shòu; #517D
+兾 > jì; #517E
+兿 > yì; #517F
+冀 > jì; #5180
+冁 > chăn; #5181
+冂 > jīong; #5182
+冃 > mao; #5183
+冄 > răn; #5184
+内 > nèi; #5185
+円 > yuan; #5186
+冇 > măo; #5187
+冈 > gāng; #5188
+冉 > răn; #5189
+冊 > cè; #518A
+冋 > jīong; #518B
+册 > cè; #518C
+再 > zài; #518D
+冎 > guă; #518E
+冏 > jĭong; #518F
+冐 > mào; #5190
+冑 > zhòu; #5191
+冒 > mòu; #5192
+冓 > gòu; #5193
+冔 > xŭ; #5194
+冕 > miăn; #5195
+冖 > mì; #5196
+冗 > rŏng; #5197
+冘 > yín; #5198
+写 > xiĕ; #5199
+冚 > kăn; #519A
+军 > jūn; #519B
+农 > nóng; #519C
+冝 > yí; #519D
+冞 > mí; #519E
+冟 > shì; #519F
+冠 > guān; #51A0
+冡 > méng; #51A1
+冢 > zhŏng; #51A2
+冣 > jù; #51A3
+冤 > yuān; #51A4
+冥 > míng; #51A5
+冦 > kòu; #51A6
+冨 > fù; #51A8
+冩 > xiĕ; #51A9
+冪 > mì; #51AA
+冫 > bīng; #51AB
+冬 > dōng; #51AC
+冭 > tái; #51AD
+冮 > gāng; #51AE
+冯 > féng; #51AF
+冰 > bīng; #51B0
+冱 > hù; #51B1
+冲 > chōng; #51B2
+决 > jué; #51B3
+冴 > hù; #51B4
+况 > kuàng; #51B5
+冶 > yĕ; #51B6
+冷 > lĕng; #51B7
+冸 > pàn; #51B8
+冹 > fú; #51B9
+冺 > mĭn; #51BA
+冻 > dòng; #51BB
+冼 > xiăn; #51BC
+冽 > liè; #51BD
+冾 > xiá; #51BE
+冿 > jiān; #51BF
+净 > jìng; #51C0
+凁 > shù; #51C1
+凂 > mĕi; #51C2
+凃 > tú; #51C3
+凄 > qī; #51C4
+凅 > gù; #51C5
+准 > zhŭn; #51C6
+凇 > sòng; #51C7
+凈 > jìng; #51C8
+凉 > liáng; #51C9
+凊 > qìng; #51CA
+凋 > diāo; #51CB
+凌 > líng; #51CC
+凍 > dòng; #51CD
+凎 > gàn; #51CE
+减 > jiăn; #51CF
+凐 > yīn; #51D0
+凑 > còu; #51D1
+凒 > yí; #51D2
+凓 > lì; #51D3
+凔 > cāng; #51D4
+凕 > mĭng; #51D5
+凖 > zhuĕn; #51D6
+凗 > cúi; #51D7
+凘 > sī; #51D8
+凙 > dúo; #51D9
+凚 > jìn; #51DA
+凛 > lĭn; #51DB
+凜 > lĭn; #51DC
+凝 > níng; #51DD
+凞 > xī; #51DE
+凟 > dú; #51DF
+几 > jī; #51E0
+凡 > fán; #51E1
+凢 > fán; #51E2
+凣 > fán; #51E3
+凤 > fèng; #51E4
+凥 > jū; #51E5
+処 > chŭ; #51E6
+凨 > fēng; #51E8
+凫 > fú; #51EB
+凬 > fēng; #51EC
+凭 > píng; #51ED
+凮 > fēng; #51EE
+凯 > kăi; #51EF
+凰 > huáng; #51F0
+凱 > kăi; #51F1
+凲 > gān; #51F2
+凳 > dèng; #51F3
+凴 > píng; #51F4
+凵 > qū; #51F5
+凶 > xīong; #51F6
+凷 > kuài; #51F7
+凸 > tū; #51F8
+凹 > āo; #51F9
+出 > chū; #51FA
+击 > jí; #51FB
+凼 > dàng; #51FC
+函 > hán; #51FD
+凾 > hán; #51FE
+凿 > záo; #51FF
+刀 > dāo; #5200
+刁 > diāo; #5201
+刂 > dāo; #5202
+刃 > rèn; #5203
+刄 > rèn; #5204
+刅 > chuāng; #5205
+分 > fēn; #5206
+切 > qiē; #5207
+刈 > yì; #5208
+刉 > jī; #5209
+刊 > kān; #520A
+刋 > qiàn; #520B
+刌 > cŭn; #520C
+刍 > chú; #520D
+刎 > wĕn; #520E
+刏 > jī; #520F
+刐 > dăn; #5210
+刑 > xíng; #5211
+划 > huá; #5212
+刓 > wán; #5213
+刔 > jué; #5214
+刕 > lí; #5215
+刖 > yuè; #5216
+列 > liè; #5217
+刘 > líu; #5218
+则 > zé; #5219
+刚 > gāng; #521A
+创 > chuàng; #521B
+刜 > fú; #521C
+初 > chū; #521D
+刞 > qù; #521E
+刟 > jū; #521F
+删 > shān; #5220
+刡 > mĭn; #5221
+刢 > líng; #5222
+刣 > zhōng; #5223
+判 > pàn; #5224
+別 > bié; #5225
+刦 > jié; #5226
+刧 > jié; #5227
+刨 > bào; #5228
+利 > lì; #5229
+刪 > shān; #522A
+别 > bié; #522B
+刬 > chăn; #522C
+刭 > jĭng; #522D
+刮 > guā; #522E
+刯 > gēn; #522F
+到 > dào; #5230
+刱 > chuàng; #5231
+刲 > kūi; #5232
+刳 > kū; #5233
+刴 > dùo; #5234
+刵 > èr; #5235
+制 > zhì; #5236
+刷 > shuā; #5237
+券 > quàn; #5238
+刹 > chà; #5239
+刺 > cì; #523A
+刻 > kè; #523B
+刼 > jié; #523C
+刽 > gùi; #523D
+刾 > cì; #523E
+刿 > gùi; #523F
+剀 > kăi; #5240
+剁 > dùo; #5241
+剂 > jì; #5242
+剃 > tì; #5243
+剄 > jĭng; #5244
+剅 > lóu; #5245
+剆 > gēn; #5246
+則 > zé; #5247
+剈 > yuān; #5248
+剉 > cùo; #5249
+削 > xuē; #524A
+剋 > kè; #524B
+剌 > là; #524C
+前 > qián; #524D
+剎 > chà; #524E
+剏 > chuàng; #524F
+剐 > guă; #5250
+剑 > jiàn; #5251
+剒 > cùo; #5252
+剓 > lí; #5253
+剔 > tī; #5254
+剕 > fèi; #5255
+剖 > pōu; #5256
+剗 > chăn; #5257
+剘 > qí; #5258
+剙 > chuàng; #5259
+剚 > zì; #525A
+剛 > gāng; #525B
+剜 > wān; #525C
+剝 > bō; #525D
+剞 > jī; #525E
+剟 > dūo; #525F
+剠 > qíng; #5260
+剡 > yăn; #5261
+剢 > zhúo; #5262
+剣 > jiàn; #5263
+剤 > jì; #5264
+剥 > bō; #5265
+剦 > yān; #5266
+剧 > jù; #5267
+剨 > hùo; #5268
+剩 > shèng; #5269
+剪 > jiăn; #526A
+剫 > dúo; #526B
+剬 > duān; #526C
+剭 > wū; #526D
+剮 > guă; #526E
+副 > fù; #526F
+剰 > shèng; #5270
+剱 > jiàn; #5271
+割 > gē; #5272
+剳 > zhā; #5273
+剴 > kăi; #5274
+創 > chuàng; #5275
+剶 > juān; #5276
+剷 > chăn; #5277
+剸 > tuán; #5278
+剹 > lù; #5279
+剺 > lí; #527A
+剻 > fóu; #527B
+剼 > shān; #527C
+剽 > piào; #527D
+剾 > kōu; #527E
+剿 > jiăo; #527F
+劀 > guā; #5280
+劁 > qiāo; #5281
+劂 > jué; #5282
+劃 > huà; #5283
+劄 > zhá; #5284
+劅 > zhùo; #5285
+劆 > lián; #5286
+劇 > jù; #5287
+劈 > pī; #5288
+劉 > líu; #5289
+劊 > gùi; #528A
+劋 > jiăo; #528B
+劌 > gùi; #528C
+劍 > jiàn; #528D
+劎 > jiàn; #528E
+劏 > tāng; #528F
+劐 > hūo; #5290
+劑 > jì; #5291
+劒 > jiàn; #5292
+劓 > yì; #5293
+劔 > jiàn; #5294
+劕 > zhí; #5295
+劖 > chán; #5296
+劗 > cuán; #5297
+劘 > mó; #5298
+劙 > lí; #5299
+劚 > zhú; #529A
+力 > lì; #529B
+劜 > yā; #529C
+劝 > quàn; #529D
+办 > bàn; #529E
+功 > gōng; #529F
+加 > jiā; #52A0
+务 > wù; #52A1
+劢 > mài; #52A2
+劣 > liè; #52A3
+劤 > jìn; #52A4
+劥 > kēng; #52A5
+劦 > xié; #52A6
+劧 > zhĭ; #52A7
+动 > dòng; #52A8
+助 > zhù; #52A9
+努 > nŭ; #52AA
+劫 > jié; #52AB
+劬 > qú; #52AC
+劭 > shào; #52AD
+劮 > yì; #52AE
+劯 > zhū; #52AF
+劰 > miăo; #52B0
+励 > lì; #52B1
+劲 > jìng; #52B2
+劳 > láo; #52B3
+労 > láo; #52B4
+劵 > juàn; #52B5
+劶 > kŏu; #52B6
+劷 > yáng; #52B7
+劸 > wā; #52B8
+効 > xiào; #52B9
+劺 > móu; #52BA
+劻 > kuāng; #52BB
+劼 > jié; #52BC
+劽 > liè; #52BD
+劾 > hé; #52BE
+势 > shì; #52BF
+勀 > kè; #52C0
+勁 > jìng; #52C1
+勂 > háo; #52C2
+勃 > bó; #52C3
+勄 > mĭn; #52C4
+勅 > chì; #52C5
+勆 > láng; #52C6
+勇 > yŏng; #52C7
+勈 > yŏng; #52C8
+勉 > miăn; #52C9
+勊 > kè; #52CA
+勋 > xūn; #52CB
+勌 > juàn; #52CC
+勍 > qíng; #52CD
+勎 > lù; #52CE
+勏 > pŏu; #52CF
+勐 > mĕng; #52D0
+勑 > lài; #52D1
+勒 > lè; #52D2
+勓 > kài; #52D3
+勔 > miăn; #52D4
+動 > dòng; #52D5
+勖 > xù; #52D6
+勗 > xù; #52D7
+勘 > kān; #52D8
+務 > wù; #52D9
+勚 > yì; #52DA
+勛 > xūn; #52DB
+勜 > wĕng; #52DC
+勝 > shèng; #52DD
+勞 > láo; #52DE
+募 > mù; #52DF
+勠 > lù; #52E0
+勡 > piào; #52E1
+勢 > shì; #52E2
+勣 > jī; #52E3
+勤 > qín; #52E4
+勥 > qiăng; #52E5
+勦 > jiăo; #52E6
+勧 > quàn; #52E7
+勨 > yăng; #52E8
+勩 > yì; #52E9
+勪 > jué; #52EA
+勫 > fán; #52EB
+勬 > juàn; #52EC
+勭 > tóng; #52ED
+勮 > jù; #52EE
+勯 > dān; #52EF
+勰 > xié; #52F0
+勱 > mài; #52F1
+勲 > xūn; #52F2
+勳 > xūn; #52F3
+勴 > lǜ; #52F4
+勵 > lì; #52F5
+勶 > chè; #52F6
+勷 > ráng; #52F7
+勸 > quàn; #52F8
+勹 > bāo; #52F9
+勺 > sháo; #52FA
+勻 > yún; #52FB
+勼 > jīu; #52FC
+勽 > bào; #52FD
+勾 > gōu; #52FE
+勿 > wù; #52FF
+匀 > yún; #5300
+匃 > gài; #5303
+匄 > gài; #5304
+包 > bāo; #5305
+匆 > cōng; #5306
+匈 > xīong; #5308
+匉 > pēng; #5309
+匊 > jú; #530A
+匋 > táo; #530B
+匌 > gé; #530C
+匍 > pú; #530D
+匎 > àn; #530E
+匏 > páo; #530F
+匐 > fú; #5310
+匑 > gōng; #5311
+匒 > dá; #5312
+匓 > jìu; #5313
+匔 > qīong; #5314
+匕 > bĭ; #5315
+化 > huà; #5316
+北 > bĕi; #5317
+匘 > năo; #5318
+匙 > chí; #5319
+匚 > fāng; #531A
+匛 > jìu; #531B
+匜 > yí; #531C
+匝 > zā; #531D
+匞 > jiàng; #531E
+匟 > kàng; #531F
+匠 > jiàng; #5320
+匡 > kuāng; #5321
+匢 > hū; #5322
+匣 > xiá; #5323
+匤 > qū; #5324
+匥 > biàn; #5325
+匦 > gŭi; #5326
+匧 > qiè; #5327
+匨 > zāng; #5328
+匩 > kuāng; #5329
+匪 > fĕi; #532A
+匫 > hū; #532B
+匬 > tóu; #532C
+匭 > gŭi; #532D
+匮 > gùi; #532E
+匯 > hùi; #532F
+匰 > dān; #5330
+匱 > gùi; #5331
+匲 > lián; #5332
+匳 > lián; #5333
+匴 > suăn; #5334
+匵 > dú; #5335
+匶 > jìu; #5336
+匷 > qú; #5337
+匸 > xĭ; #5338
+匹 > pĭ; #5339
+区 > qū; #533A
+医 > yì; #533B
+匼 > qià; #533C
+匽 > yăn; #533D
+匾 > biăn; #533E
+匿 > nì; #533F
+區 > qū; #5340
+十 > shí; #5341
+卂 > xìn; #5342
+千 > qiān; #5343
+卄 > niàn; #5344
+卅 > sà; #5345
+卆 > zú; #5346
+升 > shēng; #5347
+午 > wŭ; #5348
+卉 > hùi; #5349
+半 > bàn; #534A
+卋 > shì; #534B
+卌 > xì; #534C
+卍 > wàn; #534D
+华 > huá; #534E
+协 > xié; #534F
+卐 > wàn; #5350
+卑 > bēi; #5351
+卒 > zú; #5352
+卓 > zhūo; #5353
+協 > xié; #5354
+单 > dān; #5355
+卖 > mài; #5356
+南 > nán; #5357
+単 > dān; #5358
+卙 > jí; #5359
+博 > bó; #535A
+卛 > shuài; #535B
+卜 > bŭ; #535C
+卝 > kuàng; #535D
+卞 > biàn; #535E
+卟 > bŭ; #535F
+占 > zhān; #5360
+卡 > qiă; #5361
+卢 > lú; #5362
+卣 > yŏu; #5363
+卤 > lŭ; #5364
+卥 > xī; #5365
+卦 > guà; #5366
+卧 > wò; #5367
+卨 > xiè; #5368
+卩 > jié; #5369
+卪 > jié; #536A
+卫 > wèi; #536B
+卬 > áng; #536C
+卭 > qíong; #536D
+卮 > zhī; #536E
+卯 > măo; #536F
+印 > yìn; #5370
+危 > wēi; #5371
+卲 > shào; #5372
+即 > jí; #5373
+却 > què; #5374
+卵 > luăn; #5375
+卶 > shì; #5376
+卷 > juàn; #5377
+卸 > xiè; #5378
+卹 > xù; #5379
+卺 > jĭn; #537A
+卻 > què; #537B
+卼 > wù; #537C
+卽 > jí; #537D
+卾 > è; #537E
+卿 > qīng; #537F
+厀 > xī; #5380
+厂 > hàn; #5382
+厃 > zhān; #5383
+厄 > è; #5384
+厅 > tīng; #5385
+历 > lì; #5386
+厇 > zhé; #5387
+厈 > hăn; #5388
+厉 > lì; #5389
+厊 > yă; #538A
+压 > yā; #538B
+厌 > yàn; #538C
+厍 > shè; #538D
+厎 > zhĭ; #538E
+厏 > zhă; #538F
+厐 > páng; #5390
+厒 > hé; #5392
+厓 > yá; #5393
+厔 > zhì; #5394
+厕 > cè; #5395
+厖 > páng; #5396
+厗 > tí; #5397
+厘 > lí; #5398
+厙 > shè; #5399
+厚 > hòu; #539A
+厛 > tīng; #539B
+厜 > zūi; #539C
+厝 > cùo; #539D
+厞 > fèi; #539E
+原 > yuán; #539F
+厠 > cè; #53A0
+厡 > yuán; #53A1
+厢 > xiāng; #53A2
+厣 > yăn; #53A3
+厤 > lì; #53A4
+厥 > jué; #53A5
+厦 > shà; #53A6
+厧 > diān; #53A7
+厨 > chú; #53A8
+厩 > jìu; #53A9
+厪 > qín; #53AA
+厫 > áo; #53AB
+厬 > gŭi; #53AC
+厭 > yàn; #53AD
+厮 > sī; #53AE
+厯 > lì; #53AF
+厰 > chăng; #53B0
+厱 > lán; #53B1
+厲 > lì; #53B2
+厳 > yán; #53B3
+厴 > yăn; #53B4
+厵 > yuán; #53B5
+厶 > sī; #53B6
+厷 > gōng; #53B7
+厸 > lín; #53B8
+厹 > qíu; #53B9
+厺 > qù; #53BA
+去 > qù; #53BB
+厽 > lĕi; #53BD
+厾 > dū; #53BE
+县 > xiàn; #53BF
+叀 > zhuān; #53C0
+叁 > sān; #53C1
+参 > cān; #53C2
+參 > cān; #53C3
+叄 > cān; #53C4
+叅 > cān; #53C5
+叆 > ài; #53C6
+叇 > dài; #53C7
+又 > yòu; #53C8
+叉 > cha; #53C9
+及 > jí; #53CA
+友 > yŏu; #53CB
+双 > shuāng; #53CC
+反 > făn; #53CD
+収 > shōu; #53CE
+叏 > guài; #53CF
+叐 > bá; #53D0
+发 > fā; #53D1
+叒 > rùo; #53D2
+叓 > shì; #53D3
+叔 > shū; #53D4
+叕 > zhúo; #53D5
+取 > qū; #53D6
+受 > shòu; #53D7
+变 > biàn; #53D8
+叙 > xù; #53D9
+叚 > jiă; #53DA
+叛 > pàn; #53DB
+叜 > sŏu; #53DC
+叝 > gào; #53DD
+叞 > wèi; #53DE
+叟 > sŏu; #53DF
+叠 > dié; #53E0
+叡 > rùi; #53E1
+叢 > cóng; #53E2
+口 > kŏu; #53E3
+古 > gŭ; #53E4
+句 > jù; #53E5
+另 > lìng; #53E6
+叧 > guă; #53E7
+叨 > tāo; #53E8
+叩 > kòu; #53E9
+只 > zhĭ; #53EA
+叫 > jiào; #53EB
+召 > zhào; #53EC
+叭 > bā; #53ED
+叮 > dīng; #53EE
+可 > kĕ; #53EF
+台 > tái; #53F0
+叱 > chì; #53F1
+史 > shĭ; #53F2
+右 > yòu; #53F3
+叴 > qíu; #53F4
+叵 > pŏ; #53F5
+叶 > xié; #53F6
+号 > hào; #53F7
+司 > sī; #53F8
+叹 > tàn; #53F9
+叺 > chĭ; #53FA
+叻 > lè; #53FB
+叼 > diāo; #53FC
+叽 > jī; #53FD
+叿 > hōng; #53FF
+吀 > miē; #5400
+吁 > xū; #5401
+吂 > máng; #5402
+吃 > chī; #5403
+各 > gè; #5404
+吅 > xuān; #5405
+吆 > yāo; #5406
+吇 > zĭ; #5407
+合 > hé; #5408
+吉 > jí; #5409
+吊 > diào; #540A
+吋 > cùn; #540B
+同 > tóng; #540C
+名 > míng; #540D
+后 > hòu; #540E
+吏 > lì; #540F
+吐 > tŭ; #5410
+向 > xiàng; #5411
+吒 > zhà; #5412
+吓 > xià; #5413
+吔 > yĕ; #5414
+吕 > lǚ; #5415
+吖 > ā; #5416
+吗 > ma; #5417
+吘 > ŏu; #5418
+吙 > xuē; #5419
+吚 > yī; #541A
+君 > jūn; #541B
+吜 > chŏu; #541C
+吝 > lìn; #541D
+吞 > tūn; #541E
+吟 > yín; #541F
+吠 > fèi; #5420
+吡 > bĭ; #5421
+吢 > qìn; #5422
+吣 > qìn; #5423
+吤 > jiè; #5424
+吥 > bù; #5425
+否 > fŏu; #5426
+吧 > ba; #5427
+吨 > dūn; #5428
+吩 > fēn; #5429
+吪 > é; #542A
+含 > hán; #542B
+听 > tīng; #542C
+吭 > háng; #542D
+吮 > shŭn; #542E
+启 > qĭ; #542F
+吰 > hóng; #5430
+吱 > zhī; #5431
+吲 > shĕn; #5432
+吳 > wú; #5433
+吴 > wú; #5434
+吵 > chăo; #5435
+吶 > nè; #5436
+吷 > xuè; #5437
+吸 > xī; #5438
+吹 > chūi; #5439
+吺 > dōu; #543A
+吻 > wĕn; #543B
+吼 > hŏu; #543C
+吽 > óu; #543D
+吾 > wú; #543E
+吿 > gào; #543F
+呀 > yā; #5440
+呁 > jùn; #5441
+呂 > lǚ; #5442
+呃 > è; #5443
+呄 > gé; #5444
+呅 > méi; #5445
+呆 > ái; #5446
+呇 > qĭ; #5447
+呈 > chéng; #5448
+呉 > wú; #5449
+告 > gào; #544A
+呋 > fū; #544B
+呌 > jiào; #544C
+呍 > hōng; #544D
+呎 > chĭ; #544E
+呏 > shēng; #544F
+呐 > nè; #5450
+呑 > tūn; #5451
+呒 > fŭ; #5452
+呓 > yì; #5453
+呔 > dāi; #5454
+呕 > ōu; #5455
+呖 > lì; #5456
+呗 > bài; #5457
+员 > yuán; #5458
+呙 > kuāi; #5459
+呛 > qiāng; #545B
+呜 > wū; #545C
+呝 > è; #545D
+呞 > shī; #545E
+呟 > quăn; #545F
+呠 > pēn; #5460
+呡 > wĕn; #5461
+呢 > ní; #5462
+呣 > ḿ; #5463
+呤 > lĭng; #5464
+呥 > răn; #5465
+呦 > yōu; #5466
+呧 > dĭ; #5467
+周 > zhōu; #5468
+呩 > shì; #5469
+呪 > zhòu; #546A
+呫 > tiē; #546B
+呬 > xì; #546C
+呭 > yì; #546D
+呮 > qì; #546E
+呯 > píng; #546F
+呰 > zĭ; #5470
+呱 > gū; #5471
+呲 > zī; #5472
+味 > wèi; #5473
+呴 > xū; #5474
+呵 > hē; #5475
+呶 > náo; #5476
+呷 > xiā; #5477
+呸 > pēi; #5478
+呹 > yì; #5479
+呺 > xiāo; #547A
+呻 > shēn; #547B
+呼 > hū; #547C
+命 > mìng; #547D
+呾 > dá; #547E
+呿 > qū; #547F
+咀 > jŭ; #5480
+咁 > gèm; #5481
+咂 > zā; #5482
+咃 > tūo; #5483
+咄 > dūo; #5484
+咅 > pòu; #5485
+咆 > páo; #5486
+咇 > bì; #5487
+咈 > fú; #5488
+咉 > yāng; #5489
+咊 > hé; #548A
+咋 > zhà; #548B
+和 > hé; #548C
+咍 > hāi; #548D
+咎 > jìu; #548E
+咏 > yŏng; #548F
+咐 > fù; #5490
+咑 > què; #5491
+咒 > zhòu; #5492
+咓 > wă; #5493
+咔 > kă; #5494
+咕 > gū; #5495
+咖 > kā; #5496
+咗 > zŭo; #5497
+咘 > bù; #5498
+咙 > lóng; #5499
+咚 > dōng; #549A
+咛 > níng; #549B
+咝 > sī; #549D
+咞 > xiàn; #549E
+咟 > hùo; #549F
+咠 > qì; #54A0
+咡 > èr; #54A1
+咢 > è; #54A2
+咣 > guāng; #54A3
+咤 > zhà; #54A4
+咥 > xì; #54A5
+咦 > yí; #54A6
+咧 > liĕ; #54A7
+咨 > zī; #54A8
+咩 > miē; #54A9
+咪 > mī; #54AA
+咫 > zhĭ; #54AB
+咬 > yăo; #54AC
+咭 > jī; #54AD
+咮 > zhòu; #54AE
+咯 > gē; #54AF
+咰 > shuài; #54B0
+咱 > zán; #54B1
+咲 > xiào; #54B2
+咳 > ké; #54B3
+咴 > hūi; #54B4
+咵 > kuā; #54B5
+咶 > huài; #54B6
+咷 > táo; #54B7
+咸 > xián; #54B8
+咹 > è; #54B9
+咺 > xuān; #54BA
+咻 > xīu; #54BB
+咼 > wāi; #54BC
+咽 > yān; #54BD
+咾 > lăo; #54BE
+咿 > yī; #54BF
+哀 > āi; #54C0
+品 > pĭn; #54C1
+哂 > shĕn; #54C2
+哃 > tóng; #54C3
+哄 > hōng; #54C4
+哅 > xīong; #54C5
+哆 > chĭ; #54C6
+哇 > wā; #54C7
+哈 > hā; #54C8
+哉 > zāi; #54C9
+哊 > yù; #54CA
+哋 > dì; #54CB
+哌 > pài; #54CC
+响 > xiăng; #54CD
+哎 > āi; #54CE
+哏 > hĕn; #54CF
+哐 > kuāng; #54D0
+哑 > yă; #54D1
+哒 > dā; #54D2
+哓 > xiāo; #54D3
+哔 > bì; #54D4
+哕 > yuĕ; #54D5
+哗 > huā; #54D7
+哙 > kuài; #54D9
+哚 > dŭo; #54DA
+哜 > jì; #54DC
+哝 > nóng; #54DD
+哞 > mōu; #54DE
+哟 > yo; #54DF
+哠 > hào; #54E0
+員 > yuán; #54E1
+哢 > lòng; #54E2
+哣 > pŏu; #54E3
+哤 > máng; #54E4
+哥 > gē; #54E5
+哦 > é; #54E6
+哧 > chī; #54E7
+哨 > shào; #54E8
+哩 > lī; #54E9
+哪 > nă; #54EA
+哫 > zú; #54EB
+哬 > hé; #54EC
+哭 > kū; #54ED
+哮 > xiāo; #54EE
+哯 > xiàn; #54EF
+哰 > láo; #54F0
+哱 > bō; #54F1
+哲 > zhé; #54F2
+哳 > zhā; #54F3
+哴 > liàng; #54F4
+哵 > bā; #54F5
+哶 > miē; #54F6
+哷 > lè; #54F7
+哸 > sūi; #54F8
+哹 > fóu; #54F9
+哺 > bŭ; #54FA
+哻 > hàn; #54FB
+哼 > hēng; #54FC
+哽 > gĕng; #54FD
+哾 > shūo; #54FE
+哿 > gĕ; #54FF
+唀 > yŏu; #5500
+唁 > yàn; #5501
+唂 > gŭ; #5502
+唃 > gŭ; #5503
+唄 > bài; #5504
+唅 > hān; #5505
+唆 > sūo; #5506
+唇 > chún; #5507
+唈 > yì; #5508
+唉 > āi; #5509
+唊 > jiá; #550A
+唋 > tŭ; #550B
+唌 > xián; #550C
+唍 > huăn; #550D
+唎 > lī; #550E
+唏 > xī; #550F
+唐 > táng; #5510
+唑 > zùo; #5511
+唒 > qíu; #5512
+唓 > chē; #5513
+唔 > wú; #5514
+唕 > zào; #5515
+唖 > yă; #5516
+唗 > dōu; #5517
+唘 > qĭ; #5518
+唙 > dí; #5519
+唚 > qìn; #551A
+唛 > mà; #551B
+唝 > hŏng; #551D
+唞 > dŏu; #551E
+唠 > láo; #5520
+唡 > liăng; #5521
+唢 > sŭo; #5522
+唣 > zào; #5523
+唤 > huàn; #5524
+唦 > shā; #5526
+唧 > jī; #5527
+唨 > zŭo; #5528
+唩 > wō; #5529
+唪 > fĕng; #552A
+唫 > yín; #552B
+唬 > hŭ; #552C
+唭 > qī; #552D
+售 > shòu; #552E
+唯 > wéi; #552F
+唰 > shuā; #5530
+唱 > chàng; #5531
+唲 > ér; #5532
+唳 > lì; #5533
+唴 > qiàng; #5534
+唵 > ăn; #5535
+唶 > jiè; #5536
+唷 > yō; #5537
+唸 > niàn; #5538
+唹 > yū; #5539
+唺 > tiăn; #553A
+唻 > lăi; #553B
+唼 > shà; #553C
+唽 > xī; #553D
+唾 > tùo; #553E
+唿 > hū; #553F
+啀 > ái; #5540
+啁 > zhōu; #5541
+啂 > nòu; #5542
+啃 > kĕn; #5543
+啄 > zhúo; #5544
+啅 > zhúo; #5545
+商 > shāng; #5546
+啇 > dí; #5547
+啈 > hèng; #5548
+啉 > lán; #5549
+啊 > a; #554A
+啋 > xiāo; #554B
+啌 > xiāng; #554C
+啍 > tūn; #554D
+啎 > wŭ; #554E
+問 > wèn; #554F
+啐 > cùi; #5550
+啑 > shà; #5551
+啒 > hū; #5552
+啓 > qĭ; #5553
+啔 > qĭ; #5554
+啕 > táo; #5555
+啖 > dàn; #5556
+啗 > dàn; #5557
+啘 > yè; #5558
+啙 > zĭ; #5559
+啚 > bĭ; #555A
+啛 > cùi; #555B
+啜 > chùo; #555C
+啝 > hé; #555D
+啞 > yă; #555E
+啟 > qĭ; #555F
+啠 > zhé; #5560
+啡 > pēi; #5561
+啢 > liăng; #5562
+啣 > xián; #5563
+啤 > pí; #5564
+啥 > shà; #5565
+啦 > la; #5566
+啧 > zé; #5567
+啨 > qīng; #5568
+啩 > guà; #5569
+啪 > pā; #556A
+啫 > zhĕ; #556B
+啬 > sè; #556C
+啭 > zhuàn; #556D
+啮 > niè; #556E
+啯 > guo; #556F
+啰 > lūo; #5570
+啱 > yān; #5571
+啲 > dì; #5572
+啳 > quán; #5573
+啴 > tān; #5574
+啵 > bo; #5575
+啶 > dìng; #5576
+啷 > lāng; #5577
+啸 > xiào; #5578
+啺 > táng; #557A
+啻 > chì; #557B
+啼 > tí; #557C
+啽 > án; #557D
+啾 > jīu; #557E
+啿 > dàn; #557F
+喀 > kè; #5580
+喁 > yóng; #5581
+喂 > wèi; #5582
+喃 > nán; #5583
+善 > shàn; #5584
+喅 > yù; #5585
+喆 > zhé; #5586
+喇 > lă; #5587
+喈 > jiē; #5588
+喉 > hóu; #5589
+喊 > hăn; #558A
+喋 > dié; #558B
+喌 > zhōu; #558C
+喍 > chái; #558D
+喎 > wāi; #558E
+喏 > rĕ; #558F
+喐 > yù; #5590
+喑 > yīn; #5591
+喒 > zán; #5592
+喓 > yāo; #5593
+喔 > wō; #5594
+喕 > miăn; #5595
+喖 > hú; #5596
+喗 > yŭn; #5597
+喘 > chuăn; #5598
+喙 > hùi; #5599
+喚 > huàn; #559A
+喛 > huàn; #559B
+喜 > xĭ; #559C
+喝 > hē; #559D
+喞 > jī; #559E
+喟 > kùi; #559F
+喠 > zhŏng; #55A0
+喡 > wĕi; #55A1
+喢 > shà; #55A2
+喣 > xŭ; #55A3
+喤 > huáng; #55A4
+喥 > dù; #55A5
+喦 > niè; #55A6
+喧 > 1xuān; #55A7
+喨 > liàng; #55A8
+喩 > yù; #55A9
+喪 > sāng; #55AA
+喫 > chī; #55AB
+喬 > qiáo; #55AC
+喭 > yàn; #55AD
+單 > dān; #55AE
+喯 > pēn; #55AF
+喰 > cān; #55B0
+喱 > lí; #55B1
+喲 > yo; #55B2
+喳 > zhā; #55B3
+喴 > wēi; #55B4
+喵 > miāo; #55B5
+営 > yíng; #55B6
+喷 > pēn; #55B7
+喹 > kúi; #55B9
+喺 > xì; #55BA
+喻 > yù; #55BB
+喼 > jié; #55BC
+喽 > lou; #55BD
+喾 > kù; #55BE
+喿 > sào; #55BF
+嗀 > hùo; #55C0
+嗁 > tí; #55C1
+嗂 > yáo; #55C2
+嗃 > hè; #55C3
+嗄 > á; #55C4
+嗅 > xìu; #55C5
+嗆 > qiāng; #55C6
+嗇 > sè; #55C7
+嗈 > yōng; #55C8
+嗉 > sù; #55C9
+嗊 > hŏng; #55CA
+嗋 > xié; #55CB
+嗌 > yì; #55CC
+嗍 > sūo; #55CD
+嗎 > ma; #55CE
+嗏 > chā; #55CF
+嗐 > hài; #55D0
+嗑 > kè; #55D1
+嗒 > tà; #55D2
+嗓 > săng; #55D3
+嗔 > tián; #55D4
+嗕 > rù; #55D5
+嗖 > sōu; #55D6
+嗗 > wā; #55D7
+嗘 > jī; #55D8
+嗙 > păng; #55D9
+嗚 > wū; #55DA
+嗛 > xián; #55DB
+嗜 > shì; #55DC
+嗝 > gé; #55DD
+嗞 > zī; #55DE
+嗟 > jiē; #55DF
+嗠 > lùo; #55E0
+嗡 > wēng; #55E1
+嗢 > wà; #55E2
+嗣 > sì; #55E3
+嗤 > chī; #55E4
+嗥 > háo; #55E5
+嗦 > sūo; #55E6
+嗧 > jiā' 'lún; #55E7
+嗨 > hăi; #55E8
+嗩 > sŭo; #55E9
+嗪 > qín; #55EA
+嗫 > niè; #55EB
+嗬 > hē; #55EC
+嗮 > sài; #55EE
+嗯 > ǹg; #55EF
+嗰 > gè; #55F0
+嗱 > ná; #55F1
+嗲 > diă; #55F2
+嗳 > ài; #55F3
+嗵 > tōng; #55F5
+嗶 > bì; #55F6
+嗷 > áo; #55F7
+嗸 > áo; #55F8
+嗹 > lián; #55F9
+嗺 > cūi; #55FA
+嗻 > zhē; #55FB
+嗼 > mò; #55FC
+嗽 > sòu; #55FD
+嗾 > sŏu; #55FE
+嗿 > tăn; #55FF
+嘀 > dí; #5600
+嘁 > qī; #5601
+嘂 > jiào; #5602
+嘃 > chōng; #5603
+嘄 > jiāo; #5604
+嘅 > kăi; #5605
+嘆 > tàn; #5606
+嘇 > sān; #5607
+嘈 > cáo; #5608
+嘉 > jiā; #5609
+嘊 > ái; #560A
+嘋 > xiāo; #560B
+嘌 > piāo; #560C
+嘍 > lou; #560D
+嘎 > gā; #560E
+嘏 > gŭ; #560F
+嘐 > xiāo; #5610
+嘑 > hū; #5611
+嘒 > hùi; #5612
+嘓 > guo; #5613
+嘔 > ōu; #5614
+嘕 > xiān; #5615
+嘖 > zé; #5616
+嘗 > cháng; #5617
+嘘 > xū; #5618
+嘙 > pó; #5619
+嘚 > dé; #561A
+嘛 > ma; #561B
+嘜 > mà; #561C
+嘝 > hú; #561D
+嘞 > lei; #561E
+嘟 > dū; #561F
+嘠 > gā; #5620
+嘡 > tāng; #5621
+嘢 > yĕ; #5622
+嘣 > bēng; #5623
+嘤 > yīng; #5624
+嘦 > jiào; #5626
+嘧 > mī; #5627
+嘨 > xiào; #5628
+嘩 > huā; #5629
+嘪 > măi; #562A
+嘫 > rán; #562B
+嘬 > zūo; #562C
+嘭 > pēng; #562D
+嘮 > láo; #562E
+嘯 > xiào; #562F
+嘰 > jī; #5630
+嘱 > zhŭ; #5631
+嘲 > cháo; #5632
+嘳 > kùi; #5633
+嘴 > zŭi; #5634
+嘵 > xiāo; #5635
+嘶 > sī; #5636
+嘷 > háo; #5637
+嘸 > fŭ; #5638
+嘹 > liáo; #5639
+嘺 > qiáo; #563A
+嘻 > xī; #563B
+嘼 > xìu; #563C
+嘽 > tān; #563D
+嘾 > tán; #563E
+嘿 > mò; #563F
+噀 > xùn; #5640
+噁 > ĕ; #5641
+噂 > zŭn; #5642
+噃 > fān; #5643
+噄 > chī; #5644
+噅 > hūi; #5645
+噆 > zăn; #5646
+噇 > chuáng; #5647
+噈 > cù; #5648
+噉 > dàn; #5649
+噊 > yù; #564A
+噋 > tūn; #564B
+噌 > chēng; #564C
+噍 > jiào; #564D
+噎 > yē; #564E
+噏 > xī; #564F
+噐 > qì; #5650
+噑 > háo; #5651
+噒 > lián; #5652
+噓 > xū; #5653
+噔 > dēng; #5654
+噕 > hūi; #5655
+噖 > yín; #5656
+噗 > pū; #5657
+噘 > juē; #5658
+噙 > qín; #5659
+噚 > xún; #565A
+噛 > niè; #565B
+噜 > lū; #565C
+噝 > sī; #565D
+噞 > yăn; #565E
+噟 > yìng; #565F
+噠 > dā; #5660
+噡 > dān; #5661
+噢 > yŭ; #5662
+噣 > zhòu; #5663
+噤 > jìn; #5664
+噥 > nóng; #5665
+噦 > yuĕ; #5666
+噧 > hùi; #5667
+器 > qì; #5668
+噩 > è; #5669
+噪 > zào; #566A
+噫 > yī; #566B
+噬 > shì; #566C
+噭 > jiào; #566D
+噮 > yuān; #566E
+噯 > ài; #566F
+噰 > yōng; #5670
+噱 > jué; #5671
+噲 > kuài; #5672
+噳 > yŭ; #5673
+噴 > pēn; #5674
+噵 > dào; #5675
+噶 > gé; #5676
+噷 > xīn; #5677
+噸 > dūn; #5678
+噹 > dāng; #5679
+噻 > sai; #567B
+噼 > pī; #567C
+噽 > pĭ; #567D
+噾 > yīn; #567E
+噿 > zŭi; #567F
+嚀 > níng; #5680
+嚁 > dí; #5681
+嚂 > làn; #5682
+嚃 > tā; #5683
+嚄 > hùo; #5684
+嚅 > rú; #5685
+嚆 > hāo; #5686
+嚇 > xià; #5687
+嚈 > yà; #5688
+嚉 > dūo; #5689
+嚊 > xì; #568A
+嚋 > chóu; #568B
+嚌 > jì; #568C
+嚍 > jìn; #568D
+嚎 > háo; #568E
+嚏 > tì; #568F
+嚐 > cháng; #5690
+嚓 > cā; #5693
+嚔 > tì; #5694
+嚕 > lū; #5695
+嚖 > hùi; #5696
+嚗 > bó; #5697
+嚘 > yōu; #5698
+嚙 > niè; #5699
+嚚 > yín; #569A
+嚛 > hù; #569B
+嚜 > mò; #569C
+嚝 > huāng; #569D
+嚞 > zhé; #569E
+嚟 > lí; #569F
+嚠 > líu; #56A0
+嚢 > náng; #56A2
+嚣 > xiāo; #56A3
+嚤 > mó; #56A4
+嚥 > yàn; #56A5
+嚦 > lì; #56A6
+嚧 > lú; #56A7
+嚨 > lóng; #56A8
+嚩 > fú; #56A9
+嚪 > dàn; #56AA
+嚫 > chèn; #56AB
+嚬 > pín; #56AC
+嚭 > pĭ; #56AD
+嚮 > xiàng; #56AE
+嚯 > hùo; #56AF
+嚰 > mó; #56B0
+嚱 > xì; #56B1
+嚲 > dŭo; #56B2
+嚳 > kù; #56B3
+嚴 > yán; #56B4
+嚵 > chán; #56B5
+嚶 > yīng; #56B6
+嚷 > răng; #56B7
+嚸 > diăn; #56B8
+嚹 > lā; #56B9
+嚺 > tà; #56BA
+嚻 > xiāo; #56BB
+嚼 > jiáo; #56BC
+嚽 > chùo; #56BD
+嚾 > huān; #56BE
+嚿 > hùo; #56BF
+囀 > zhuàn; #56C0
+囁 > niè; #56C1
+囂 > xiāo; #56C2
+囃 > cà; #56C3
+囄 > lí; #56C4
+囅 > chăn; #56C5
+囆 > chài; #56C6
+囇 > lì; #56C7
+囈 > yì; #56C8
+囉 > lūo; #56C9
+囊 > náng; #56CA
+囋 > zàn; #56CB
+囌 > sū; #56CC
+囍 > xĭ; #56CD
+囏 > jiān; #56CF
+囐 > zá; #56D0
+囑 > zhŭ; #56D1
+囒 > lán; #56D2
+囓 > niè; #56D3
+囔 > nāng; #56D4
+囗 > wéi; #56D7
+囘 > húi; #56D8
+囙 > yīn; #56D9
+囚 > qíu; #56DA
+四 > sì; #56DB
+囜 > nín; #56DC
+囝 > jiăn; #56DD
+回 > húi; #56DE
+囟 > xìn; #56DF
+因 > yīn; #56E0
+囡 > nān; #56E1
+团 > tuán; #56E2
+団 > tuán; #56E3
+囤 > dùn; #56E4
+囥 > kàng; #56E5
+囦 > yuān; #56E6
+囧 > jĭong; #56E7
+囨 > piān; #56E8
+囩 > yùn; #56E9
+囪 > cōng; #56EA
+囫 > hú; #56EB
+囬 > húi; #56EC
+园 > yuán; #56ED
+囮 > yóu; #56EE
+囯 > gúo; #56EF
+困 > kùn; #56F0
+囱 > cōng; #56F1
+囲 > wéi; #56F2
+図 > tú; #56F3
+围 > wéi; #56F4
+囵 > lún; #56F5
+囶 > gúo; #56F6
+囷 > qūn; #56F7
+囸 > rì; #56F8
+囹 > líng; #56F9
+固 > gù; #56FA
+囻 > gúo; #56FB
+囼 > tāi; #56FC
+国 > gúo; #56FD
+图 > tú; #56FE
+囿 > yòu; #56FF
+圀 > gúo; #5700
+圁 > yín; #5701
+圂 > hùn; #5702
+圃 > pŭ; #5703
+圄 > yŭ; #5704
+圅 > hán; #5705
+圆 > yuán; #5706
+圇 > lún; #5707
+圈 > quān; #5708
+圉 > yŭ; #5709
+圊 > qīng; #570A
+國 > gúo; #570B
+圌 > chuán; #570C
+圍 > wéi; #570D
+圎 > yuán; #570E
+圏 > quān; #570F
+圐 > kū; #5710
+圑 > fù; #5711
+園 > yuán; #5712
+圓 > yuán; #5713
+圔 > è; #5714
+圕 > tú' 'shū' 'guăn; #5715
+圖 > tú; #5716
+圗 > tú; #5717
+團 > tuán; #5718
+圙 > lǜe; #5719
+圚 > hùi; #571A
+圛 > yì; #571B
+圜 > yuán; #571C
+圝 > luán; #571D
+圞 > luán; #571E
+土 > tŭ; #571F
+圠 > yà; #5720
+圡 > tŭ; #5721
+圢 > tīng; #5722
+圣 > shèng; #5723
+圤 > pŭ; #5724
+圥 > lù; #5725
+圧 > yā; #5727
+在 > zài; #5728
+圩 > wéi; #5729
+圪 > gē; #572A
+圫 > yù; #572B
+圬 > wū; #572C
+圭 > gūi; #572D
+圮 > pĭ; #572E
+圯 > yí; #572F
+地 > dì; #5730
+圱 > qiān; #5731
+圲 > qiān; #5732
+圳 > zhèn; #5733
+圴 > zhúo; #5734
+圵 > dàng; #5735
+圶 > qià; #5736
+圹 > kuàng; #5739
+场 > cháng; #573A
+圻 > qí; #573B
+圼 > niè; #573C
+圽 > mò; #573D
+圾 > jí; #573E
+圿 > jiá; #573F
+址 > zhĭ; #5740
+坁 > zhĭ; #5741
+坂 > băn; #5742
+坃 > xūn; #5743
+坄 > tóu; #5744
+坅 > qĭn; #5745
+坆 > fén; #5746
+均 > jūn; #5747
+坈 > kēng; #5748
+坉 > tún; #5749
+坊 > fāng; #574A
+坋 > fèn; #574B
+坌 > bèn; #574C
+坍 > tān; #574D
+坎 > kăn; #574E
+坏 > pī; #574F
+坐 > zùo; #5750
+坑 > kēng; #5751
+坒 > bì; #5752
+坓 > xíng; #5753
+坔 > dì; #5754
+坕 > jīng; #5755
+坖 > jì; #5756
+块 > kuài; #5757
+坘 > dĭ; #5758
+坙 > jīng; #5759
+坚 > jiān; #575A
+坛 > tán; #575B
+坜 > lì; #575C
+坝 > bà; #575D
+坞 > wù; #575E
+坟 > fén; #575F
+坠 > zhùi; #5760
+坡 > pō; #5761
+坢 > păn; #5762
+坣 > tāng; #5763
+坤 > kūn; #5764
+坥 > qū; #5765
+坦 > tăn; #5766
+坧 > zhī; #5767
+坨 > túo; #5768
+坩 > gān; #5769
+坪 > píng; #576A
+坫 > diàn; #576B
+坬 > guà; #576C
+坭 > ní; #576D
+坮 > tái; #576E
+坯 > pī; #576F
+坰 > jīong; #5770
+坱 > yăng; #5771
+坲 > fó; #5772
+坳 > ào; #5773
+坴 > lìu; #5774
+坵 > qīu; #5775
+坶 > mù; #5776
+坷 > kĕ; #5777
+坸 > gòu; #5778
+坹 > xuè; #5779
+坺 > bá; #577A
+坻 > chí; #577B
+坼 > chè; #577C
+坽 > líng; #577D
+坾 > zhù; #577E
+坿 > fù; #577F
+垀 > hū; #5780
+垁 > zhì; #5781
+垂 > chúi; #5782
+垃 > lā; #5783
+垄 > lŏng; #5784
+垅 > lŏng; #5785
+垆 > lú; #5786
+垇 > ào; #5787
+垉 > páo; #5789
+型 > xíng; #578B
+垌 > dòng; #578C
+垍 > jì; #578D
+垎 > kè; #578E
+垏 > lù; #578F
+垐 > cí; #5790
+垑 > chĭ; #5791
+垒 > lĕi; #5792
+垓 > gāi; #5793
+垔 > yīn; #5794
+垕 > hòu; #5795
+垖 > dūi; #5796
+垗 > zhào; #5797
+垘 > fú; #5798
+垙 > guāng; #5799
+垚 > yáo; #579A
+垛 > dŭo; #579B
+垜 > dŭo; #579C
+垝 > gŭi; #579D
+垞 > chá; #579E
+垟 > yáng; #579F
+垠 > yín; #57A0
+垡 > fá; #57A1
+垢 > gòu; #57A2
+垣 > yuán; #57A3
+垤 > dié; #57A4
+垥 > xié; #57A5
+垦 > kĕn; #57A6
+垧 > jīong; #57A7
+垨 > shŏu; #57A8
+垩 > è; #57A9
+垫 > diàn; #57AB
+垬 > hóng; #57AC
+垭 > wù; #57AD
+垮 > kuă; #57AE
+垱 > dàng; #57B1
+垲 > kăi; #57B2
+垴 > năo; #57B4
+垵 > ăn; #57B5
+垶 > xīng; #57B6
+垷 > xiàn; #57B7
+垸 > huàn; #57B8
+垹 > bāng; #57B9
+垺 > pēi; #57BA
+垻 > bà; #57BB
+垼 > yì; #57BC
+垽 > yìn; #57BD
+垾 > hàn; #57BE
+垿 > xù; #57BF
+埀 > chúi; #57C0
+埁 > cén; #57C1
+埂 > gĕng; #57C2
+埃 > āi; #57C3
+埄 > péng; #57C4
+埅 > fáng; #57C5
+埆 > què; #57C6
+埇 > yŏng; #57C7
+埈 > xùn; #57C8
+埉 > jiá; #57C9
+埊 > dì; #57CA
+埋 > mái; #57CB
+埌 > làng; #57CC
+埍 > xuàn; #57CD
+城 > chéng; #57CE
+埏 > yán; #57CF
+埐 > jīn; #57D0
+埑 > zhé; #57D1
+埒 > lèi; #57D2
+埓 > liè; #57D3
+埔 > bù; #57D4
+埕 > chéng; #57D5
+埗 > bù; #57D7
+埘 > shí; #57D8
+埙 > xūn; #57D9
+埚 > gūo; #57DA
+埛 > jīong; #57DB
+埜 > yĕ; #57DC
+埝 > niàn; #57DD
+埞 > dĭ; #57DE
+域 > yù; #57DF
+埠 > bù; #57E0
+埡 > yà; #57E1
+埢 > juăn; #57E2
+埣 > sùi; #57E3
+埤 > pí; #57E4
+埥 > chēng; #57E5
+埦 > wăn; #57E6
+埧 > jù; #57E7
+埨 > lŭn; #57E8
+埩 > zhēng; #57E9
+埪 > kōng; #57EA
+埫 > chŏng; #57EB
+埬 > dōng; #57EC
+埭 > dài; #57ED
+埮 > tàn; #57EE
+埯 > ăn; #57EF
+埰 > cài; #57F0
+埱 > shú; #57F1
+埲 > bĕng; #57F2
+埳 > kăn; #57F3
+埴 > zhí; #57F4
+埵 > dŭo; #57F5
+埶 > yì; #57F6
+執 > zhí; #57F7
+埸 > yì; #57F8
+培 > péi; #57F9
+基 > jī; #57FA
+埻 > zhŭn; #57FB
+埼 > qí; #57FC
+埽 > sào; #57FD
+埾 > jù; #57FE
+埿 > ní; #57FF
+堀 > kū; #5800
+堁 > kè; #5801
+堂 > táng; #5802
+堃 > kūn; #5803
+堄 > nì; #5804
+堅 > jiān; #5805
+堆 > dūi; #5806
+堇 > jĭn; #5807
+堈 > gāng; #5808
+堉 > yù; #5809
+堊 > è; #580A
+堋 > péng; #580B
+堌 > gù; #580C
+堍 > tù; #580D
+堎 > lèng; #580E
+堐 > yá; #5810
+堑 > qiàn; #5811
+堓 > àn; #5813
+堕 > dùo; #5815
+堖 > năo; #5816
+堗 > tū; #5817
+堘 > chéng; #5818
+堙 > yīn; #5819
+堚 > hún; #581A
+堛 > bì; #581B
+堜 > liàn; #581C
+堝 > gūo; #581D
+堞 > dié; #581E
+堟 > zhuàn; #581F
+堠 > hòu; #5820
+堡 > băo; #5821
+堢 > băo; #5822
+堣 > yú; #5823
+堤 > dī; #5824
+堥 > máo; #5825
+堦 > jiē; #5826
+堧 > ruán; #5827
+堨 > è; #5828
+堩 > gèng; #5829
+堪 > kān; #582A
+堫 > zōng; #582B
+堬 > yú; #582C
+堭 > huáng; #582D
+堮 > è; #582E
+堯 > yáo; #582F
+堰 > yàn; #5830
+報 > bào; #5831
+堲 > jí; #5832
+堳 > méi; #5833
+場 > cháng; #5834
+堵 > dŭ; #5835
+堶 > túo; #5836
+堷 > yìn; #5837
+堸 > féng; #5838
+堹 > zhòng; #5839
+堺 > jiè; #583A
+堻 > zhēn; #583B
+堼 > fēng; #583C
+堽 > gāng; #583D
+堾 > chuăn; #583E
+堿 > jiăn; #583F
+塂 > xiàng; #5842
+塃 > huāng; #5843
+塄 > léng; #5844
+塅 > duàn; #5845
+塇 > xuān; #5847
+塈 > jì; #5848
+塉 > jí; #5849
+塊 > kuài; #584A
+塋 > yíng; #584B
+塌 > tā; #584C
+塍 > chéng; #584D
+塎 > yŏng; #584E
+塏 > kăi; #584F
+塐 > sù; #5850
+塑 > sù; #5851
+塒 > shí; #5852
+塓 > mì; #5853
+塔 > tă; #5854
+塕 > wĕng; #5855
+塖 > chéng; #5856
+塗 > tú; #5857
+塘 > táng; #5858
+塙 > què; #5859
+塚 > zhŏng; #585A
+塛 > lì; #585B
+塜 > péng; #585C
+塝 > bàng; #585D
+塞 > sāi; #585E
+塟 > zàng; #585F
+塠 > dūi; #5860
+塡 > tián; #5861
+塢 > wù; #5862
+塣 > chĕng; #5863
+塤 > xūn; #5864
+塥 > gé; #5865
+塦 > zhèn; #5866
+塧 > ài; #5867
+塨 > gōng; #5868
+塩 > yán; #5869
+塪 > kăn; #586A
+填 > tián; #586B
+塬 > yuán; #586C
+塭 > wēn; #586D
+塮 > xiè; #586E
+塯 > lìu; #586F
+塱 > lăng; #5871
+塲 > cháng; #5872
+塳 > péng; #5873
+塴 > bèng; #5874
+塵 > chén; #5875
+塶 > cù; #5876
+塷 > lŭ; #5877
+塸 > ŏu; #5878
+塹 > qiàn; #5879
+塺 > méi; #587A
+塻 > mò; #587B
+塼 > zhuān; #587C
+塽 > shuăng; #587D
+塾 > shú; #587E
+塿 > lŏu; #587F
+墀 > chí; #5880
+墁 > màn; #5881
+墂 > biāo; #5882
+境 > jìng; #5883
+墄 > qī; #5884
+墅 > shù; #5885
+墆 > dì; #5886
+墇 > zhāng; #5887
+墈 > kàn; #5888
+墉 > yōng; #5889
+墊 > diàn; #588A
+墋 > chĕn; #588B
+墌 > zhī; #588C
+墍 > xì; #588D
+墎 > gūo; #588E
+墏 > qiăng; #588F
+墐 > jìn; #5890
+墑 > dī; #5891
+墒 > shāng; #5892
+墓 > mù; #5893
+墔 > cūi; #5894
+墕 > yàn; #5895
+墖 > tă; #5896
+増 > zēng; #5897
+墘 > qí; #5898
+墙 > qiáng; #5899
+墚 > liáng; #589A
+墜 > zhùi; #589C
+墝 > qiāo; #589D
+增 > zēng; #589E
+墟 > xū; #589F
+墠 > shàn; #58A0
+墡 > shàn; #58A1
+墢 > bá; #58A2
+墣 > pū; #58A3
+墤 > kuài; #58A4
+墥 > dŏng; #58A5
+墦 > fán; #58A6
+墧 > què; #58A7
+墨 > mò; #58A8
+墩 > dūn; #58A9
+墪 > dūn; #58AA
+墫 > dūn; #58AB
+墬 > dì; #58AC
+墭 > shèng; #58AD
+墮 > dùo; #58AE
+墯 > dùo; #58AF
+墰 > tán; #58B0
+墱 > dèng; #58B1
+墲 > wŭ; #58B2
+墳 > fén; #58B3
+墴 > huáng; #58B4
+墵 > tán; #58B5
+墶 > dā; #58B6
+墷 > yè; #58B7
+墺 > yù; #58BA
+墻 > qiáng; #58BB
+墼 > jī; #58BC
+墽 > qiāo; #58BD
+墾 > kĕn; #58BE
+墿 > yì; #58BF
+壀 > pí; #58C0
+壁 > bì; #58C1
+壂 > diàn; #58C2
+壃 > jiāng; #58C3
+壄 > yĕ; #58C4
+壅 > yōng; #58C5
+壆 > bó; #58C6
+壇 > tán; #58C7
+壈 > lăn; #58C8
+壉 > jù; #58C9
+壊 > huài; #58CA
+壋 > dàng; #58CB
+壌 > răng; #58CC
+壍 > qiàn; #58CD
+壎 > xūn; #58CE
+壏 > làn; #58CF
+壐 > xĭ; #58D0
+壑 > hè; #58D1
+壒 > ài; #58D2
+壓 > yā; #58D3
+壔 > dăo; #58D4
+壕 > háo; #58D5
+壖 > ruán; #58D6
+壘 > lĕi; #58D8
+壙 > kuàng; #58D9
+壚 > lú; #58DA
+壛 > yán; #58DB
+壜 > tán; #58DC
+壝 > wéi; #58DD
+壞 > huài; #58DE
+壟 > lŏng; #58DF
+壠 > lŏng; #58E0
+壡 > rùi; #58E1
+壢 > lì; #58E2
+壣 > lín; #58E3
+壤 > răng; #58E4
+壦 > xūn; #58E6
+壧 > yán; #58E7
+壨 > léi; #58E8
+壩 > bà; #58E9
+士 > shì; #58EB
+壬 > rén; #58EC
+壮 > zhuàng; #58EE
+壯 > zhuàng; #58EF
+声 > shēng; #58F0
+壱 > yī; #58F1
+売 > mài; #58F2
+壳 > ké; #58F3
+壴 > zhŭ; #58F4
+壵 > zhuàng; #58F5
+壶 > hú; #58F6
+壷 > hú; #58F7
+壸 > kŭn; #58F8
+壹 > yī; #58F9
+壺 > hú; #58FA
+壻 > xù; #58FB
+壼 > kŭn; #58FC
+壽 > shòu; #58FD
+壾 > măng; #58FE
+壿 > zŭn; #58FF
+夀 > shòu; #5900
+夁 > yī; #5901
+夂 > zhĭ; #5902
+夃 > gū; #5903
+处 > chù; #5904
+夅 > jiàng; #5905
+夆 > fēng; #5906
+备 > bèi; #5907
+変 > biàn; #5909
+夊 > sūi; #590A
+夋 > qūn; #590B
+夌 > líng; #590C
+复 > fù; #590D
+夎 > zùo; #590E
+夏 > xià; #590F
+夐 > xìong; #5910
+夒 > náo; #5912
+夓 > xià; #5913
+夔 > kúi; #5914
+夕 > xī; #5915
+外 > wài; #5916
+夗 > yuàn; #5917
+夘 > măo; #5918
+夙 > sù; #5919
+多 > dūo; #591A
+夛 > dūo; #591B
+夜 > yè; #591C
+夝 > qíng; #591D
+够 > gòu; #591F
+夠 > gòu; #5920
+夡 > qì; #5921
+夢 > mèng; #5922
+夣 > mèng; #5923
+夤 > yín; #5924
+夥 > hŭo; #5925
+夦 > chèn; #5926
+大 > dà; #5927
+夨 > zè; #5928
+天 > tiān; #5929
+太 > tài; #592A
+夫 > fū; #592B
+夬 > guài; #592C
+夭 > yăo; #592D
+央 > yāng; #592E
+夯 > hāng; #592F
+夰 > găo; #5930
+失 > shī; #5931
+夲 > bĕn; #5932
+夳 > tài; #5933
+头 > tóu; #5934
+夵 > yăn; #5935
+夶 > bĭ; #5936
+夷 > yí; #5937
+夸 > kuā; #5938
+夹 > jiā; #5939
+夺 > dúo; #593A
+夼 > kuăng; #593C
+夽 > yùn; #593D
+夾 > jiā; #593E
+夿 > pā; #593F
+奀 > ēn; #5940
+奁 > lián; #5941
+奂 > huàn; #5942
+奃 > dì; #5943
+奄 > yăn; #5944
+奅 > pào; #5945
+奆 > quăn; #5946
+奇 > qí; #5947
+奈 > nài; #5948
+奉 > fèng; #5949
+奊 > xié; #594A
+奋 > fèn; #594B
+奌 > diăn; #594C
+奎 > kúi; #594E
+奏 > zòu; #594F
+奐 > huàn; #5950
+契 > qì; #5951
+奒 > kāi; #5952
+奓 > zhà; #5953
+奔 > bēn; #5954
+奕 > yì; #5955
+奖 > jiăng; #5956
+套 > tào; #5957
+奘 > zàng; #5958
+奙 > bĕn; #5959
+奚 > xī; #595A
+奛 > xiăng; #595B
+奜 > fĕi; #595C
+奝 > diāo; #595D
+奞 > xùn; #595E
+奟 > kēng; #595F
+奠 > diàn; #5960
+奡 > ào; #5961
+奢 > shē; #5962
+奣 > wĕng; #5963
+奤 > păn; #5964
+奥 > ào; #5965
+奦 > wù; #5966
+奧 > ào; #5967
+奨 > jiăng; #5968
+奩 > lián; #5969
+奪 > dúo; #596A
+奫 > yūn; #596B
+奬 > jiăng; #596C
+奭 > shì; #596D
+奮 > fèn; #596E
+奯 > hùo; #596F
+奰 > bì; #5970
+奱 > lián; #5971
+奲 > dŭo; #5972
+女 > nǚ; #5973
+奴 > nú; #5974
+奵 > dīng; #5975
+奶 > năi; #5976
+奷 > qiān; #5977
+奸 > jiān; #5978
+她 > tā; #5979
+奺 > jĭu; #597A
+奻 > nán; #597B
+奼 > chà; #597C
+好 > hăo; #597D
+奾 > xiān; #597E
+奿 > fàn; #597F
+妀 > jĭ; #5980
+妁 > shùo; #5981
+如 > rú; #5982
+妃 > fēi; #5983
+妄 > wàng; #5984
+妅 > hóng; #5985
+妆 > zhuāng; #5986
+妇 > fù; #5987
+妈 > mā; #5988
+妉 > dān; #5989
+妊 > rèn; #598A
+妋 > fū; #598B
+妌 > jìng; #598C
+妍 > yán; #598D
+妎 > xiè; #598E
+妏 > wèn; #598F
+妐 > zhōng; #5990
+妑 > pā; #5991
+妒 > dù; #5992
+妓 > jì; #5993
+妔 > kēng; #5994
+妕 > zhòng; #5995
+妖 > yāo; #5996
+妗 > jìn; #5997
+妘 > yún; #5998
+妙 > miào; #5999
+妚 > pēi; #599A
+妜 > yuè; #599C
+妝 > zhuāng; #599D
+妞 > nīu; #599E
+妟 > yàn; #599F
+妠 > nà; #59A0
+妡 > xīn; #59A1
+妢 > fén; #59A2
+妣 > bĭ; #59A3
+妤 > yú; #59A4
+妥 > tŭo; #59A5
+妦 > fēng; #59A6
+妧 > yuán; #59A7
+妨 > fáng; #59A8
+妩 > wŭ; #59A9
+妪 > yù; #59AA
+妫 > gūi; #59AB
+妬 > dù; #59AC
+妭 > bá; #59AD
+妮 > nī; #59AE
+妯 > zhóu; #59AF
+妰 > zhúo; #59B0
+妱 > zhāo; #59B1
+妲 > dá; #59B2
+妳 > năi; #59B3
+妴 > yuăn; #59B4
+妵 > tŏu; #59B5
+妶 > xuán; #59B6
+妷 > zhí; #59B7
+妸 > ē; #59B8
+妹 > mèi; #59B9
+妺 > mò; #59BA
+妻 > qī; #59BB
+妼 > bì; #59BC
+妽 > shēn; #59BD
+妾 > qiè; #59BE
+妿 > ē; #59BF
+姀 > hé; #59C0
+姁 > xŭ; #59C1
+姂 > fá; #59C2
+姃 > zhēng; #59C3
+姄 > mín; #59C4
+姅 > bàn; #59C5
+姆 > mŭ; #59C6
+姇 > fū; #59C7
+姈 > líng; #59C8
+姉 > zĭ; #59C9
+姊 > zĭ; #59CA
+始 > shĭ; #59CB
+姌 > răn; #59CC
+姍 > shān; #59CD
+姎 > yāng; #59CE
+姏 > mán; #59CF
+姐 > jiĕ; #59D0
+姑 > gū; #59D1
+姒 > sì; #59D2
+姓 > xìng; #59D3
+委 > wĕi; #59D4
+姕 > zī; #59D5
+姖 > jù; #59D6
+姗 > shān; #59D7
+姘 > pīn; #59D8
+姙 > rèn; #59D9
+姚 > yáo; #59DA
+姛 > tŏng; #59DB
+姜 > jiāng; #59DC
+姝 > shū; #59DD
+姞 > jí; #59DE
+姟 > gāi; #59DF
+姠 > shàng; #59E0
+姡 > kùo; #59E1
+姢 > juān; #59E2
+姣 > jiāo; #59E3
+姤 > gòu; #59E4
+姥 > mŭ; #59E5
+姦 > jiān; #59E6
+姧 > jiān; #59E7
+姨 > yí; #59E8
+姩 > niàn; #59E9
+姪 > zhí; #59EA
+姫 > jī; #59EB
+姬 > jī; #59EC
+姭 > xiàn; #59ED
+姮 > héng; #59EE
+姯 > guāng; #59EF
+姰 > jūn; #59F0
+姱 > kuā; #59F1
+姲 > yàn; #59F2
+姳 > mĭng; #59F3
+姴 > liè; #59F4
+姵 > pèi; #59F5
+姶 > yăn; #59F6
+姷 > yòu; #59F7
+姸 > yán; #59F8
+姹 > chà; #59F9
+姺 > shēn; #59FA
+姻 > yīn; #59FB
+姼 > chĭ; #59FC
+姽 > gŭi; #59FD
+姾 > quān; #59FE
+姿 > zī; #59FF
+娀 > sōng; #5A00
+威 > wēi; #5A01
+娂 > hóng; #5A02
+娃 > wá; #5A03
+娄 > lóu; #5A04
+娅 > yà; #5A05
+娆 > răo; #5A06
+娇 > jiāo; #5A07
+娈 > luán; #5A08
+娉 > pīng; #5A09
+娊 > xiàn; #5A0A
+娋 > shào; #5A0B
+娌 > lĭ; #5A0C
+娍 > chéng; #5A0D
+娎 > xiào; #5A0E
+娏 > máng; #5A0F
+娐 > fu; #5A10
+娑 > sūo; #5A11
+娒 > wŭ; #5A12
+娓 > wĕi; #5A13
+娔 > kè; #5A14
+娕 > lài; #5A15
+娖 > chùo; #5A16
+娗 > dìng; #5A17
+娘 > niáng; #5A18
+娙 > xíng; #5A19
+娚 > nán; #5A1A
+娛 > yú; #5A1B
+娜 > núo; #5A1C
+娝 > pēi; #5A1D
+娞 > nĕi; #5A1E
+娟 > juān; #5A1F
+娠 > shēn; #5A20
+娡 > zhì; #5A21
+娢 > hán; #5A22
+娣 > dì; #5A23
+娤 > zhuāng; #5A24
+娥 > é; #5A25
+娦 > pín; #5A26
+娧 > tùi; #5A27
+娨 > hàn; #5A28
+娩 > miăn; #5A29
+娪 > wú; #5A2A
+娫 > yán; #5A2B
+娬 > wŭ; #5A2C
+娭 > xī; #5A2D
+娮 > yán; #5A2E
+娯 > yú; #5A2F
+娰 > sì; #5A30
+娱 > yú; #5A31
+娲 > wā; #5A32
+娴 > xián; #5A34
+娵 > jū; #5A35
+娶 > qŭ; #5A36
+娷 > shùi; #5A37
+娸 > qī; #5A38
+娹 > xián; #5A39
+娺 > zhūi; #5A3A
+娻 > dōng; #5A3B
+娼 > chāng; #5A3C
+娽 > lù; #5A3D
+娾 > ăi; #5A3E
+娿 > ē; #5A3F
+婀 > ē; #5A40
+婁 > lóu; #5A41
+婂 > mián; #5A42
+婃 > cóng; #5A43
+婄 > pŏu; #5A44
+婅 > jú; #5A45
+婆 > pó; #5A46
+婇 > căi; #5A47
+婈 > díng; #5A48
+婉 > wăn; #5A49
+婊 > biăo; #5A4A
+婋 > xiāo; #5A4B
+婌 > shŭ; #5A4C
+婍 > qĭ; #5A4D
+婎 > hūi; #5A4E
+婏 > fù; #5A4F
+婐 > ē; #5A50
+婑 > wŏ; #5A51
+婒 > tán; #5A52
+婓 > fēi; #5A53
+婔 > wei; #5A54
+婕 > jié; #5A55
+婖 > tiān; #5A56
+婗 > ní; #5A57
+婘 > quán; #5A58
+婙 > jìng; #5A59
+婚 > hūn; #5A5A
+婛 > jīng; #5A5B
+婜 > qiān; #5A5C
+婝 > diàn; #5A5D
+婞 > xìng; #5A5E
+婟 > hù; #5A5F
+婠 > wà; #5A60
+婡 > lái; #5A61
+婢 > bì; #5A62
+婣 > yīn; #5A63
+婤 > chōu; #5A64
+婥 > chùo; #5A65
+婦 > fù; #5A66
+婧 > jìng; #5A67
+婨 > lún; #5A68
+婩 > yàn; #5A69
+婪 > lán; #5A6A
+婫 > kūn; #5A6B
+婬 > yín; #5A6C
+婭 > yà; #5A6D
+婮 > ju; #5A6E
+婯 > lì; #5A6F
+婰 > diăn; #5A70
+婱 > xián; #5A71
+婳 > huà; #5A73
+婴 > yīng; #5A74
+婵 > chán; #5A75
+婶 > shĕn; #5A76
+婷 > tíng; #5A77
+婸 > dàng; #5A78
+婹 > yăo; #5A79
+婺 > wù; #5A7A
+婻 > nàn; #5A7B
+婼 > rùo; #5A7C
+婽 > jiă; #5A7D
+婾 > tōu; #5A7E
+婿 > xù; #5A7F
+媀 > yú; #5A80
+媁 > wēi; #5A81
+媂 > tí; #5A82
+媃 > róu; #5A83
+媄 > mĕi; #5A84
+媅 > dān; #5A85
+媆 > ruăn; #5A86
+媇 > qīn; #5A87
+媈 > hui; #5A88
+媉 > wū; #5A89
+媊 > qián; #5A8A
+媋 > chūn; #5A8B
+媌 > máo; #5A8C
+媍 > fù; #5A8D
+媎 > jiĕ; #5A8E
+媏 > duān; #5A8F
+媐 > xī; #5A90
+媑 > zhòng; #5A91
+媒 > méi; #5A92
+媓 > huáng; #5A93
+媔 > mián; #5A94
+媕 > ān; #5A95
+媖 > yīng; #5A96
+媗 > xuān; #5A97
+媘 > jie; #5A98
+媙 > wēi; #5A99
+媚 > mèi; #5A9A
+媛 > yuàn; #5A9B
+媜 > zhēn; #5A9C
+媝 > qīu; #5A9D
+媞 > tí; #5A9E
+媟 > xiè; #5A9F
+媠 > tŭo; #5AA0
+媡 > liàn; #5AA1
+媢 > mào; #5AA2
+媣 > răn; #5AA3
+媤 > sī; #5AA4
+媥 > piān; #5AA5
+媦 > wèi; #5AA6
+媧 > wā; #5AA7
+媨 > jìu; #5AA8
+媩 > hú; #5AA9
+媪 > ăo; #5AAA
+媭 > xū; #5AAD
+媮 > tōu; #5AAE
+媯 > gūi; #5AAF
+媰 > zōu; #5AB0
+媱 > yáo; #5AB1
+媲 > pì; #5AB2
+媳 > xí; #5AB3
+媴 > yuán; #5AB4
+媵 > yìng; #5AB5
+媶 > róng; #5AB6
+媷 > rù; #5AB7
+媸 > chī; #5AB8
+媹 > líu; #5AB9
+媺 > mĕi; #5ABA
+媻 > pán; #5ABB
+媼 > ăo; #5ABC
+媽 > mā; #5ABD
+媾 > gòu; #5ABE
+媿 > kùi; #5ABF
+嫀 > qín; #5AC0
+嫁 > jià; #5AC1
+嫂 > săo; #5AC2
+嫃 > zhēn; #5AC3
+嫄 > yuán; #5AC4
+嫅 > chā; #5AC5
+嫆 > yóng; #5AC6
+嫇 > míng; #5AC7
+嫈 > yīng; #5AC8
+嫉 > jí; #5AC9
+嫊 > sù; #5ACA
+嫋 > niăo; #5ACB
+嫌 > xián; #5ACC
+嫍 > tāo; #5ACD
+嫎 > páng; #5ACE
+嫏 > láng; #5ACF
+嫐 > năo; #5AD0
+嫑 > báo; #5AD1
+嫒 > ài; #5AD2
+嫓 > pì; #5AD3
+嫔 > pín; #5AD4
+嫕 > yì; #5AD5
+嫖 > piào; #5AD6
+嫗 > yù; #5AD7
+嫘 > léi; #5AD8
+嫙 > xuán; #5AD9
+嫚 > màn; #5ADA
+嫛 > yī; #5ADB
+嫜 > zhāng; #5ADC
+嫝 > kāng; #5ADD
+嫞 > yóng; #5ADE
+嫟 > nì; #5ADF
+嫠 > lí; #5AE0
+嫡 > dí; #5AE1
+嫢 > gūi; #5AE2
+嫣 > yān; #5AE3
+嫤 > jìn; #5AE4
+嫥 > zhuān; #5AE5
+嫦 > cháng; #5AE6
+嫧 > cè; #5AE7
+嫨 > hān; #5AE8
+嫩 > nèn; #5AE9
+嫪 > lào; #5AEA
+嫫 > mó; #5AEB
+嫬 > zhē; #5AEC
+嫭 > hù; #5AED
+嫮 > hù; #5AEE
+嫯 > ào; #5AEF
+嫰 > nèn; #5AF0
+嫱 > qiáng; #5AF1
+嫳 > piè; #5AF3
+嫴 > gū; #5AF4
+嫵 > wŭ; #5AF5
+嫶 > jiáo; #5AF6
+嫷 > tŭo; #5AF7
+嫸 > zhăn; #5AF8
+嫹 > máo; #5AF9
+嫺 > xián; #5AFA
+嫻 > xián; #5AFB
+嫼 > mò; #5AFC
+嫽 > liáo; #5AFD
+嫾 > lián; #5AFE
+嫿 > huà; #5AFF
+嬀 > gūi; #5B00
+嬁 > dēng; #5B01
+嬂 > zhī; #5B02
+嬃 > xū; #5B03
+嬄 > yi; #5B04
+嬅 > huá; #5B05
+嬆 > xī; #5B06
+嬇 > hùi; #5B07
+嬈 > răo; #5B08
+嬉 > xī; #5B09
+嬊 > yàn; #5B0A
+嬋 > chán; #5B0B
+嬌 > jiāo; #5B0C
+嬍 > mĕi; #5B0D
+嬎 > fàn; #5B0E
+嬏 > fān; #5B0F
+嬐 > xiān; #5B10
+嬑 > yì; #5B11
+嬒 > wèi; #5B12
+嬓 > jiào; #5B13
+嬔 > fù; #5B14
+嬕 > shì; #5B15
+嬖 > bì; #5B16
+嬗 > shàn; #5B17
+嬘 > sùi; #5B18
+嬙 > qiáng; #5B19
+嬚 > liăn; #5B1A
+嬛 > huán; #5B1B
+嬜 > xin; #5B1C
+嬝 > niăo; #5B1D
+嬞 > dŏng; #5B1E
+嬟 > yì; #5B1F
+嬠 > cán; #5B20
+嬡 > ài; #5B21
+嬢 > niáng; #5B22
+嬣 > néng; #5B23
+嬤 > mā; #5B24
+嬥 > tiăo; #5B25
+嬦 > chóu; #5B26
+嬧 > jìn; #5B27
+嬨 > cí; #5B28
+嬩 > yú; #5B29
+嬪 > pín; #5B2A
+嬫 > yong; #5B2B
+嬬 > xū; #5B2C
+嬭 > năi; #5B2D
+嬮 > yān; #5B2E
+嬯 > tái; #5B2F
+嬰 > yīng; #5B30
+嬱 > cán; #5B31
+嬲 > niăo; #5B32
+嬳 > wo; #5B33
+嬴 > yíng; #5B34
+嬵 > mián; #5B35
+嬷 > mā; #5B37
+嬸 > shĕn; #5B38
+嬹 > xìng; #5B39
+嬺 > nì; #5B3A
+嬻 > dú; #5B3B
+嬼 > lĭu; #5B3C
+嬽 > yuān; #5B3D
+嬾 > lăn; #5B3E
+嬿 > yàn; #5B3F
+孀 > shuāng; #5B40
+孁 > líng; #5B41
+孂 > jiăo; #5B42
+孃 > niáng; #5B43
+孄 > lăn; #5B44
+孅 > xiān; #5B45
+孆 > yīng; #5B46
+孇 > shuāng; #5B47
+孈 > shuāi; #5B48
+孉 > quán; #5B49
+孊 > mĭ; #5B4A
+孋 > lí; #5B4B
+孌 > luán; #5B4C
+孍 > yán; #5B4D
+孎 > zhŭ; #5B4E
+孏 > lăn; #5B4F
+子 > zĭ; #5B50
+孑 > jié; #5B51
+孒 > jué; #5B52
+孓 > jué; #5B53
+孔 > kŏng; #5B54
+孕 > yùn; #5B55
+孖 > zī; #5B56
+字 > zì; #5B57
+存 > cún; #5B58
+孙 > sūn; #5B59
+孚 > fú; #5B5A
+孛 > bèi; #5B5B
+孜 > zī; #5B5C
+孝 > xiào; #5B5D
+孞 > xìn; #5B5E
+孟 > mèng; #5B5F
+孠 > sì; #5B60
+孡 > tāi; #5B61
+孢 > bāo; #5B62
+季 > jì; #5B63
+孤 > gū; #5B64
+孥 > nú; #5B65
+学 > xué; #5B66
+孨 > zhuăn; #5B68
+孩 > hái; #5B69
+孪 > luán; #5B6A
+孫 > sūn; #5B6B
+孬 > huài; #5B6C
+孭 > miē; #5B6D
+孮 > cóng; #5B6E
+孯 > qiān; #5B6F
+孰 > shú; #5B70
+孱 > chán; #5B71
+孲 > yā; #5B72
+孳 > zī; #5B73
+孴 > nĭ; #5B74
+孵 > fū; #5B75
+孶 > zī; #5B76
+孷 > lí; #5B77
+學 > xué; #5B78
+孹 > bò; #5B79
+孺 > rú; #5B7A
+孻 > lái; #5B7B
+孼 > niè; #5B7C
+孽 > niè; #5B7D
+孾 > yīng; #5B7E
+孿 > luán; #5B7F
+宀 > mián; #5B80
+宁 > zhù; #5B81
+宂 > rŏng; #5B82
+它 > tā; #5B83
+宄 > gŭi; #5B84
+宅 > zhái; #5B85
+宆 > qíong; #5B86
+宇 > yŭ; #5B87
+守 > shŏu; #5B88
+安 > ān; #5B89
+宊 > tú; #5B8A
+宋 > sòng; #5B8B
+完 > wán; #5B8C
+宍 > ròu; #5B8D
+宎 > yăo; #5B8E
+宏 > hóng; #5B8F
+宐 > yí; #5B90
+宑 > jĭng; #5B91
+宒 > zhūn; #5B92
+宓 > mì; #5B93
+宔 > zhŭ; #5B94
+宕 > dàng; #5B95
+宖 > hóng; #5B96
+宗 > zōng; #5B97
+官 > guān; #5B98
+宙 > zhòu; #5B99
+定 > dìng; #5B9A
+宛 > wăn; #5B9B
+宜 > yí; #5B9C
+宝 > băo; #5B9D
+实 > shí; #5B9E
+実 > shí; #5B9F
+宠 > chŏng; #5BA0
+审 > shĕn; #5BA1
+客 > kè; #5BA2
+宣 > xuān; #5BA3
+室 > shì; #5BA4
+宥 > yòu; #5BA5
+宦 > huàn; #5BA6
+宧 > yí; #5BA7
+宨 > tiăo; #5BA8
+宩 > shĭ; #5BA9
+宪 > xiàn; #5BAA
+宫 > gōng; #5BAB
+宬 > chéng; #5BAC
+宭 > qún; #5BAD
+宮 > gōng; #5BAE
+宯 > xiāo; #5BAF
+宰 > zăi; #5BB0
+宱 > zhà; #5BB1
+宲 > băo; #5BB2
+害 > hài; #5BB3
+宴 > yàn; #5BB4
+宵 > xiāo; #5BB5
+家 > jiā; #5BB6
+宷 > shĕn; #5BB7
+宸 > chén; #5BB8
+容 > róng; #5BB9
+宺 > huăng; #5BBA
+宻 > mì; #5BBB
+宼 > kòu; #5BBC
+宽 > kuān; #5BBD
+宾 > bīn; #5BBE
+宿 > sù; #5BBF
+寀 > cài; #5BC0
+寁 > zăn; #5BC1
+寂 > jì; #5BC2
+寃 > yuān; #5BC3
+寄 > jì; #5BC4
+寅 > yín; #5BC5
+密 > mì; #5BC6
+寇 > kòu; #5BC7
+寈 > qīng; #5BC8
+寉 > què; #5BC9
+寊 > zhēn; #5BCA
+寋 > jiăn; #5BCB
+富 > fù; #5BCC
+寍 > níng; #5BCD
+寎 > bìng; #5BCE
+寏 > huán; #5BCF
+寐 > mèi; #5BD0
+寑 > qĭn; #5BD1
+寒 > hán; #5BD2
+寓 > yù; #5BD3
+寔 > shí; #5BD4
+寕 > níng; #5BD5
+寖 > qìn; #5BD6
+寗 > níng; #5BD7
+寘 > zhì; #5BD8
+寙 > yŭ; #5BD9
+寚 > băo; #5BDA
+寛 > kuān; #5BDB
+寜 > níng; #5BDC
+寝 > qĭn; #5BDD
+寞 > mò; #5BDE
+察 > chá; #5BDF
+寠 > jù; #5BE0
+寡 > guă; #5BE1
+寢 > qĭn; #5BE2
+寣 > hū; #5BE3
+寤 > wù; #5BE4
+寥 > liáo; #5BE5
+實 > shí; #5BE6
+寧 > zhù; #5BE7
+寨 > zhài; #5BE8
+審 > shĕn; #5BE9
+寪 > wĕi; #5BEA
+寫 > xiĕ; #5BEB
+寬 > kuān; #5BEC
+寭 > hùi; #5BED
+寮 > liáo; #5BEE
+寯 > jùn; #5BEF
+寰 > huán; #5BF0
+寱 > yì; #5BF1
+寲 > yí; #5BF2
+寳 > băo; #5BF3
+寴 > qìn; #5BF4
+寵 > chŏng; #5BF5
+寶 > băo; #5BF6
+寷 > fēng; #5BF7
+寸 > cùn; #5BF8
+对 > dùi; #5BF9
+寺 > sì; #5BFA
+寻 > xún; #5BFB
+导 > dăo; #5BFC
+寽 > lǜ; #5BFD
+対 > dùi; #5BFE
+寿 > shòu; #5BFF
+尀 > pŏ; #5C00
+封 > fēng; #5C01
+専 > zhuān; #5C02
+尃 > fū; #5C03
+射 > shè; #5C04
+尅 > kè; #5C05
+将 > jiāng; #5C06
+將 > jiāng; #5C07
+專 > zhuān; #5C08
+尉 > wèi; #5C09
+尊 > zūn; #5C0A
+尋 > xún; #5C0B
+尌 > shù; #5C0C
+對 > dùi; #5C0D
+導 > dăo; #5C0E
+小 > xiăo; #5C0F
+尐 > jī; #5C10
+少 > shăo; #5C11
+尒 > ĕr; #5C12
+尓 > ĕr; #5C13
+尔 > ĕr; #5C14
+尕 > gă; #5C15
+尖 > jiān; #5C16
+尗 > shú; #5C17
+尘 > chén; #5C18
+尙 > shàng; #5C19
+尚 > shàng; #5C1A
+尛 > mo; #5C1B
+尜 > gá; #5C1C
+尝 > cháng; #5C1D
+尞 > liào; #5C1E
+尟 > xiăn; #5C1F
+尠 > xiăn; #5C20
+尢 > wāng; #5C22
+尣 > wāng; #5C23
+尤 > yóu; #5C24
+尥 > liào; #5C25
+尦 > liào; #5C26
+尧 > yáo; #5C27
+尨 > máng; #5C28
+尩 > wāng; #5C29
+尪 > wāng; #5C2A
+尫 > wāng; #5C2B
+尬 > gà; #5C2C
+尭 > yáo; #5C2D
+尮 > dùo; #5C2E
+尯 > kùi; #5C2F
+尰 > zhŏng; #5C30
+就 > jìu; #5C31
+尲 > gān; #5C32
+尳 > gŭ; #5C33
+尴 > gān; #5C34
+尵 > túi; #5C35
+尶 > gān; #5C36
+尷 > gān; #5C37
+尸 > shī; #5C38
+尹 > yĭn; #5C39
+尺 > chĭ; #5C3A
+尻 > kāo; #5C3B
+尼 > ní; #5C3C
+尽 > jĭn; #5C3D
+尾 > wĕi; #5C3E
+尿 > niào; #5C3F
+局 > jú; #5C40
+屁 > pì; #5C41
+层 > céng; #5C42
+屃 > xì; #5C43
+屄 > bī; #5C44
+居 > jū; #5C45
+屆 > jiè; #5C46
+屇 > tián; #5C47
+屈 > qū; #5C48
+屉 > tì; #5C49
+届 > jiè; #5C4A
+屋 > wū; #5C4B
+屌 > diăo; #5C4C
+屍 > shī; #5C4D
+屎 > shĭ; #5C4E
+屏 > píng; #5C4F
+屐 > jī; #5C50
+屑 > xiè; #5C51
+屒 > chén; #5C52
+屓 > xì; #5C53
+屔 > ní; #5C54
+展 > zhăn; #5C55
+屖 > xī; #5C56
+屘 > măn; #5C58
+屙 > ē; #5C59
+屚 > lòu; #5C5A
+屛 > píng; #5C5B
+屜 > tì; #5C5C
+屝 > fèi; #5C5D
+属 > shŭ; #5C5E
+屟 > xiè; #5C5F
+屠 > tú; #5C60
+屡 > lǚ; #5C61
+屢 > lǚ; #5C62
+屣 > xĭ; #5C63
+層 > céng; #5C64
+履 > lǚ; #5C65
+屦 > jù; #5C66
+屧 > xiè; #5C67
+屨 > jù; #5C68
+屩 > juē; #5C69
+屪 > liáo; #5C6A
+屫 > jué; #5C6B
+屬 > shŭ; #5C6C
+屭 > xì; #5C6D
+屮 > chè; #5C6E
+屯 > tún; #5C6F
+屰 > nì; #5C70
+山 > shān; #5C71
+屳 > xiān; #5C73
+屴 > lì; #5C74
+屵 > xuē; #5C75
+屸 > lóng; #5C78
+屹 > yì; #5C79
+屺 > qĭ; #5C7A
+屻 > rèn; #5C7B
+屼 > wù; #5C7C
+屽 > hàn; #5C7D
+屾 > shēn; #5C7E
+屿 > yŭ; #5C7F
+岀 > chū; #5C80
+岁 > sùi; #5C81
+岂 > qĭ; #5C82
+岄 > yuè; #5C84
+岅 > băn; #5C85
+岆 > yăo; #5C86
+岇 > áng; #5C87
+岈 > yá; #5C88
+岉 > wù; #5C89
+岊 > jié; #5C8A
+岋 > è; #5C8B
+岌 > jí; #5C8C
+岍 > qiān; #5C8D
+岎 > fēn; #5C8E
+岏 > yuán; #5C8F
+岐 > qí; #5C90
+岑 > cén; #5C91
+岒 > qián; #5C92
+岓 > qí; #5C93
+岔 > chà; #5C94
+岕 > jiè; #5C95
+岖 > qū; #5C96
+岗 > găng; #5C97
+岘 > xiàn; #5C98
+岙 > ào; #5C99
+岚 > lán; #5C9A
+岛 > dăo; #5C9B
+岜 > bā; #5C9C
+岝 > zùo; #5C9D
+岞 > zùo; #5C9E
+岟 > yăng; #5C9F
+岠 > jù; #5CA0
+岡 > gāng; #5CA1
+岢 > kĕ; #5CA2
+岣 > gŏu; #5CA3
+岤 > xuè; #5CA4
+岥 > bēi; #5CA5
+岦 > lì; #5CA6
+岧 > tiáo; #5CA7
+岨 > jū; #5CA8
+岩 > yán; #5CA9
+岪 > fú; #5CAA
+岫 > xìu; #5CAB
+岬 > jiă; #5CAC
+岭 > líng; #5CAD
+岮 > túo; #5CAE
+岯 > pēi; #5CAF
+岰 > yŏu; #5CB0
+岱 > dài; #5CB1
+岲 > kuàng; #5CB2
+岳 > yuè; #5CB3
+岴 > qū; #5CB4
+岵 > hù; #5CB5
+岶 > pò; #5CB6
+岷 > mín; #5CB7
+岸 > àn; #5CB8
+岹 > tiáo; #5CB9
+岺 > líng; #5CBA
+岻 > chí; #5CBB
+岽 > dōng; #5CBD
+岿 > kūi; #5CBF
+峀 > xìu; #5CC0
+峁 > măo; #5CC1
+峂 > tóng; #5CC2
+峃 > xué; #5CC3
+峄 > yì; #5CC4
+峆 > hē; #5CC6
+峇 > kē; #5CC7
+峈 > lùo; #5CC8
+峉 > ē; #5CC9
+峊 > fù; #5CCA
+峋 > xún; #5CCB
+峌 > dié; #5CCC
+峍 > lù; #5CCD
+峎 > ān; #5CCE
+峏 > ĕr; #5CCF
+峐 > gāi; #5CD0
+峑 > quán; #5CD1
+峒 > tóng; #5CD2
+峓 > yí; #5CD3
+峔 > mŭ; #5CD4
+峕 > shí; #5CD5
+峖 > ān; #5CD6
+峗 > wéi; #5CD7
+峘 > hū; #5CD8
+峙 > zhì; #5CD9
+峚 > mì; #5CDA
+峛 > lĭ; #5CDB
+峜 > jī; #5CDC
+峝 > tóng; #5CDD
+峞 > wéi; #5CDE
+峟 > yòu; #5CDF
+峡 > xiá; #5CE1
+峢 > lĭ; #5CE2
+峣 > yáo; #5CE3
+峤 > jiào; #5CE4
+峥 > zhēng; #5CE5
+峦 > luán; #5CE6
+峧 > jiāo; #5CE7
+峨 > é; #5CE8
+峩 > é; #5CE9
+峪 > yù; #5CEA
+峫 > yé; #5CEB
+峬 > bū; #5CEC
+峭 > qiào; #5CED
+峮 > qūn; #5CEE
+峯 > fēng; #5CEF
+峰 > fēng; #5CF0
+峱 > náo; #5CF1
+峲 > lĭ; #5CF2
+峳 > yóu; #5CF3
+峴 > xiàn; #5CF4
+峵 > hóng; #5CF5
+島 > dăo; #5CF6
+峷 > shēn; #5CF7
+峸 > chéng; #5CF8
+峹 > tú; #5CF9
+峺 > gĕng; #5CFA
+峻 > jùn; #5CFB
+峼 > hào; #5CFC
+峽 > xiá; #5CFD
+峾 > yīn; #5CFE
+峿 > yŭ; #5CFF
+崀 > làng; #5D00
+崁 > kăn; #5D01
+崂 > láo; #5D02
+崃 > lái; #5D03
+崄 > xiăn; #5D04
+崅 > què; #5D05
+崆 > kōng; #5D06
+崇 > chóng; #5D07
+崈 > chóng; #5D08
+崉 > tà; #5D09
+崊 > lin; #5D0A
+崋 > huá; #5D0B
+崌 > jū; #5D0C
+崍 > lái; #5D0D
+崎 > qí; #5D0E
+崏 > mín; #5D0F
+崐 > kūn; #5D10
+崑 > kūn; #5D11
+崒 > zú; #5D12
+崓 > gù; #5D13
+崔 > cūi; #5D14
+崕 > yá; #5D15
+崖 > yá; #5D16
+崗 > găng; #5D17
+崘 > lún; #5D18
+崙 > lún; #5D19
+崚 > léng; #5D1A
+崛 > jué; #5D1B
+崜 > dūo; #5D1C
+崝 > zhēng; #5D1D
+崞 > gūo; #5D1E
+崟 > yín; #5D1F
+崠 > dōng; #5D20
+崡 > hán; #5D21
+崢 > zhēng; #5D22
+崣 > wĕi; #5D23
+崤 > yáo; #5D24
+崥 > pĭ; #5D25
+崦 > yān; #5D26
+崧 > sōng; #5D27
+崨 > jié; #5D28
+崩 > bēng; #5D29
+崪 > zú; #5D2A
+崫 > jué; #5D2B
+崬 > dōng; #5D2C
+崭 > zhăn; #5D2D
+崮 > gù; #5D2E
+崯 > yín; #5D2F
+崱 > zé; #5D31
+崲 > huáng; #5D32
+崳 > yú; #5D33
+崴 > wēi; #5D34
+崵 > yáng; #5D35
+崶 > fēng; #5D36
+崷 > qíu; #5D37
+崸 > dùn; #5D38
+崹 > tí; #5D39
+崺 > yĭ; #5D3A
+崻 > zhì; #5D3B
+崼 > shì; #5D3C
+崽 > zăi; #5D3D
+崾 > yăo; #5D3E
+崿 > è; #5D3F
+嵀 > zhù; #5D40
+嵁 > kān; #5D41
+嵂 > lǜ; #5D42
+嵃 > yăn; #5D43
+嵄 > mĕi; #5D44
+嵅 > gān; #5D45
+嵆 > jī; #5D46
+嵇 > jī; #5D47
+嵈 > huăn; #5D48
+嵉 > tíng; #5D49
+嵊 > shèng; #5D4A
+嵋 > méi; #5D4B
+嵌 > qiàn; #5D4C
+嵍 > wù; #5D4D
+嵎 > yú; #5D4E
+嵏 > zōng; #5D4F
+嵐 > lán; #5D50
+嵑 > jué; #5D51
+嵒 > yán; #5D52
+嵓 > yán; #5D53
+嵔 > wĕi; #5D54
+嵕 > zōng; #5D55
+嵖 > chá; #5D56
+嵗 > sùi; #5D57
+嵘 > róng; #5D58
+嵚 > qīn; #5D5A
+嵛 > yú; #5D5B
+嵝 > lŏu; #5D5D
+嵞 > tú; #5D5E
+嵟 > dūi; #5D5F
+嵠 > xī; #5D60
+嵡 > wēng; #5D61
+嵢 > cāng; #5D62
+嵣 > dāng; #5D63
+嵤 > hóng; #5D64
+嵥 > jié; #5D65
+嵦 > ái; #5D66
+嵧 > líu; #5D67
+嵨 > wŭ; #5D68
+嵩 > sōng; #5D69
+嵪 > qiāo; #5D6A
+嵫 > zī; #5D6B
+嵬 > wéi; #5D6C
+嵭 > bēng; #5D6D
+嵮 > diān; #5D6E
+嵯 > cúo; #5D6F
+嵰 > qiăn; #5D70
+嵱 > yŏng; #5D71
+嵲 > niè; #5D72
+嵳 > cúo; #5D73
+嵴 > jí; #5D74
+嵷 > sŏng; #5D77
+嵸 > zōng; #5D78
+嵹 > jiàng; #5D79
+嵺 > liáo; #5D7A
+嵻 > kang; #5D7B
+嵼 > chăn; #5D7C
+嵽 > dié; #5D7D
+嵾 > cēn; #5D7E
+嵿 > dĭng; #5D7F
+嶀 > tū; #5D80
+嶁 > lŏu; #5D81
+嶂 > zhàng; #5D82
+嶃 > zhăn; #5D83
+嶄 > zhăn; #5D84
+嶅 > áo; #5D85
+嶆 > cáo; #5D86
+嶇 > qū; #5D87
+嶈 > qiāng; #5D88
+嶉 > zūi; #5D89
+嶊 > zŭi; #5D8A
+嶋 > dăo; #5D8B
+嶌 > dăo; #5D8C
+嶍 > xí; #5D8D
+嶎 > yù; #5D8E
+嶏 > bó; #5D8F
+嶐 > lóng; #5D90
+嶑 > xiăng; #5D91
+嶒 > céng; #5D92
+嶓 > bō; #5D93
+嶔 > qīn; #5D94
+嶕 > jiāo; #5D95
+嶖 > yăn; #5D96
+嶗 > láo; #5D97
+嶘 > zhàn; #5D98
+嶙 > lín; #5D99
+嶚 > liáo; #5D9A
+嶛 > liáo; #5D9B
+嶜 > jīn; #5D9C
+嶝 > dèng; #5D9D
+嶞 > dùo; #5D9E
+嶟 > zūn; #5D9F
+嶠 > jiào; #5DA0
+嶡 > gùi; #5DA1
+嶢 > yáo; #5DA2
+嶣 > qiáo; #5DA3
+嶤 > yáo; #5DA4
+嶥 > jué; #5DA5
+嶦 > zhān; #5DA6
+嶧 > yì; #5DA7
+嶨 > xué; #5DA8
+嶩 > náo; #5DA9
+嶪 > yè; #5DAA
+嶫 > yè; #5DAB
+嶬 > yí; #5DAC
+嶭 > è; #5DAD
+嶮 > xiăn; #5DAE
+嶯 > jí; #5DAF
+嶰 > xiè; #5DB0
+嶱 > kĕ; #5DB1
+嶲 > xī; #5DB2
+嶳 > dì; #5DB3
+嶴 > ào; #5DB4
+嶵 > zŭi; #5DB5
+嶷 > nì; #5DB7
+嶸 > róng; #5DB8
+嶹 > dăo; #5DB9
+嶺 > lĭng; #5DBA
+嶻 > zá; #5DBB
+嶼 > yŭ; #5DBC
+嶽 > yuè; #5DBD
+嶾 > yĭn; #5DBE
+巀 > jiē; #5DC0
+巁 > lì; #5DC1
+巂 > sŭi; #5DC2
+巃 > lóng; #5DC3
+巄 > lóng; #5DC4
+巅 > diān; #5DC5
+巆 > yíng; #5DC6
+巇 > xī; #5DC7
+巈 > jú; #5DC8
+巉 > chán; #5DC9
+巊 > yĭng; #5DCA
+巋 > kūi; #5DCB
+巌 > yán; #5DCC
+巍 > wēi; #5DCD
+巎 > náo; #5DCE
+巏 > quán; #5DCF
+巐 > chăo; #5DD0
+巑 > cuán; #5DD1
+巒 > luán; #5DD2
+巓 > diān; #5DD3
+巔 > diān; #5DD4
+巖 > yán; #5DD6
+巗 > yán; #5DD7
+巘 > yăn; #5DD8
+巙 > náo; #5DD9
+巚 > yăn; #5DDA
+巛 > chuān; #5DDB
+巜 > gùi; #5DDC
+川 > chuān; #5DDD
+州 > zhōu; #5DDE
+巟 > huāng; #5DDF
+巠 > jīng; #5DE0
+巡 > xún; #5DE1
+巢 > cháo; #5DE2
+巣 > cháo; #5DE3
+巤 > liē; #5DE4
+工 > gōng; #5DE5
+左 > zŭo; #5DE6
+巧 > qiăo; #5DE7
+巨 > jù; #5DE8
+巩 > gŏng; #5DE9
+巫 > wū; #5DEB
+差 > chāi; #5DEE
+巯 > qíu; #5DEF
+巰 > qíu; #5DF0
+己 > jĭ; #5DF1
+已 > yĭ; #5DF2
+巳 > sì; #5DF3
+巴 > bā; #5DF4
+巵 > zhī; #5DF5
+巶 > zhāo; #5DF6
+巷 > xiàng; #5DF7
+巸 > yí; #5DF8
+巹 > jĭn; #5DF9
+巺 > xùn; #5DFA
+巻 > juàn; #5DFB
+巽 > xùn; #5DFD
+巾 > jīn; #5DFE
+巿 > fú; #5DFF
+帀 > zā; #5E00
+币 > bì; #5E01
+市 > shì; #5E02
+布 > bù; #5E03
+帄 > dīng; #5E04
+帅 > shuài; #5E05
+帆 > fān; #5E06
+帇 > niè; #5E07
+师 > shī; #5E08
+帉 > fēn; #5E09
+帊 > pà; #5E0A
+帋 > zhĭ; #5E0B
+希 > xī; #5E0C
+帍 > hù; #5E0D
+帎 > dàn; #5E0E
+帏 > wéi; #5E0F
+帐 > zhàng; #5E10
+帑 > tăng; #5E11
+帒 > dài; #5E12
+帓 > mà; #5E13
+帔 > pèi; #5E14
+帕 > pà; #5E15
+帖 > tiē; #5E16
+帗 > fú; #5E17
+帘 > lián; #5E18
+帙 > zhì; #5E19
+帚 > zhŏu; #5E1A
+帛 > bó; #5E1B
+帜 > zhì; #5E1C
+帝 > dì; #5E1D
+帞 > mò; #5E1E
+帟 > yì; #5E1F
+帠 > yì; #5E20
+帡 > píng; #5E21
+帢 > qià; #5E22
+帣 > juàn; #5E23
+帤 > rú; #5E24
+帥 > shuài; #5E25
+带 > dài; #5E26
+帧 > zhèng; #5E27
+帨 > shùi; #5E28
+帩 > qiào; #5E29
+帪 > zhēn; #5E2A
+師 > shī; #5E2B
+帬 > qún; #5E2C
+席 > xí; #5E2D
+帮 > bāng; #5E2E
+帯 > dài; #5E2F
+帰 > gūi; #5E30
+帱 > chóu; #5E31
+帲 > píng; #5E32
+帳 > zhàng; #5E33
+帴 > shā; #5E34
+帵 > wān; #5E35
+帶 > dài; #5E36
+帷 > wéi; #5E37
+常 > cháng; #5E38
+帹 > shà; #5E39
+帺 > qí; #5E3A
+帻 > zé; #5E3B
+帼 > gúo; #5E3C
+帽 > mào; #5E3D
+帾 > dŭ; #5E3E
+帿 > hóu; #5E3F
+幀 > zhèng; #5E40
+幁 > xū; #5E41
+幂 > mì; #5E42
+幃 > wéi; #5E43
+幄 > wò; #5E44
+幅 > fú; #5E45
+幆 > yì; #5E46
+幇 > bāng; #5E47
+幈 > píng; #5E48
+幊 > gōng; #5E4A
+幋 > pán; #5E4B
+幌 > huăng; #5E4C
+幍 > dāo; #5E4D
+幎 > mì; #5E4E
+幏 > jiā; #5E4F
+幐 > téng; #5E50
+幑 > hūi; #5E51
+幒 > zhōng; #5E52
+幓 > shān; #5E53
+幔 > màn; #5E54
+幕 > mù; #5E55
+幖 > biāo; #5E56
+幗 > gúo; #5E57
+幘 > zé; #5E58
+幙 > mù; #5E59
+幚 > bāng; #5E5A
+幛 > zhàng; #5E5B
+幜 > jĭong; #5E5C
+幝 > chăn; #5E5D
+幞 > fú; #5E5E
+幟 > zhì; #5E5F
+幠 > hū; #5E60
+幡 > fān; #5E61
+幢 > chuáng; #5E62
+幣 > bì; #5E63
+幦 > mì; #5E66
+幧 > qiāo; #5E67
+幨 > chān; #5E68
+幩 > fén; #5E69
+幪 > méng; #5E6A
+幫 > bāng; #5E6B
+幬 > chóu; #5E6C
+幭 > miè; #5E6D
+幮 > chú; #5E6E
+幯 > jié; #5E6F
+幰 > xiăn; #5E70
+幱 > lán; #5E71
+干 > gān; #5E72
+平 > píng; #5E73
+年 > nián; #5E74
+幵 > qiān; #5E75
+并 > bìng; #5E76
+幷 > bìng; #5E77
+幸 > xìng; #5E78
+幹 > gàn; #5E79
+幺 > yāo; #5E7A
+幻 > huàn; #5E7B
+幼 > yòu; #5E7C
+幽 > yōu; #5E7D
+幾 > jĭ; #5E7E
+广 > yăn; #5E7F
+庀 > pĭ; #5E80
+庁 > tīng; #5E81
+庂 > zè; #5E82
+広 > guăng; #5E83
+庄 > zhuāng; #5E84
+庅 > mo; #5E85
+庆 > qìng; #5E86
+庇 > bì; #5E87
+庈 > qín; #5E88
+庉 > dùn; #5E89
+床 > chuáng; #5E8A
+庋 > gŭi; #5E8B
+庌 > yă; #5E8C
+庍 > bài; #5E8D
+庎 > jiè; #5E8E
+序 > xù; #5E8F
+庐 > lú; #5E90
+庑 > wŭ; #5E91
+库 > kù; #5E93
+应 > yìng; #5E94
+底 > dĭ; #5E95
+庖 > páo; #5E96
+店 > diàn; #5E97
+庘 > yā; #5E98
+庙 > miào; #5E99
+庚 > gēng; #5E9A
+庛 > cī; #5E9B
+府 > fŭ; #5E9C
+庝 > tóng; #5E9D
+庞 > páng; #5E9E
+废 > fèi; #5E9F
+庠 > xiáng; #5EA0
+庡 > yĭ; #5EA1
+庢 > zhì; #5EA2
+庣 > tiāo; #5EA3
+庤 > zhì; #5EA4
+庥 > xīu; #5EA5
+度 > dù; #5EA6
+座 > zùo; #5EA7
+庨 > xiāo; #5EA8
+庩 > tú; #5EA9
+庪 > gŭi; #5EAA
+庫 > kù; #5EAB
+庬 > páng; #5EAC
+庭 > tíng; #5EAD
+庮 > yŏu; #5EAE
+庯 > bū; #5EAF
+庰 > dīng; #5EB0
+庱 > chĕng; #5EB1
+庲 > lái; #5EB2
+庳 > bēi; #5EB3
+庴 > jí; #5EB4
+庵 > ān; #5EB5
+庶 > shù; #5EB6
+康 > kāng; #5EB7
+庸 > yōng; #5EB8
+庹 > tŭo; #5EB9
+庺 > sōng; #5EBA
+庻 > shù; #5EBB
+庼 > qĭng; #5EBC
+庽 > yù; #5EBD
+庾 > yŭ; #5EBE
+庿 > miào; #5EBF
+廀 > sōu; #5EC0
+廁 > cè; #5EC1
+廂 > xiāng; #5EC2
+廃 > fèi; #5EC3
+廄 > jìu; #5EC4
+廅 > hé; #5EC5
+廆 > hùi; #5EC6
+廇 > lìu; #5EC7
+廈 > shà; #5EC8
+廉 > lián; #5EC9
+廊 > láng; #5ECA
+廋 > sōu; #5ECB
+廌 > jiàn; #5ECC
+廍 > pŏu; #5ECD
+廎 > qĭng; #5ECE
+廏 > jìu; #5ECF
+廐 > jìu; #5ED0
+廑 > qín; #5ED1
+廒 > áo; #5ED2
+廓 > kùo; #5ED3
+廔 > lóu; #5ED4
+廕 > yīn; #5ED5
+廖 > liào; #5ED6
+廗 > dài; #5ED7
+廘 > lù; #5ED8
+廙 > yì; #5ED9
+廚 > chú; #5EDA
+廛 > chán; #5EDB
+廜 > tū; #5EDC
+廝 > sī; #5EDD
+廞 > xīn; #5EDE
+廟 > miào; #5EDF
+廠 > chăng; #5EE0
+廡 > wŭ; #5EE1
+廢 > fèi; #5EE2
+廣 > guăng; #5EE3
+廥 > kuài; #5EE5
+廦 > bì; #5EE6
+廧 > qiáng; #5EE7
+廨 > xiè; #5EE8
+廩 > lĭn; #5EE9
+廪 > lĭn; #5EEA
+廫 > liáo; #5EEB
+廬 > lú; #5EEC
+廮 > yíng; #5EEE
+廯 > xiān; #5EEF
+廰 > tīng; #5EF0
+廱 > yōng; #5EF1
+廲 > lí; #5EF2
+廳 > tīng; #5EF3
+廴 > yĭn; #5EF4
+廵 > xún; #5EF5
+延 > yán; #5EF6
+廷 > tíng; #5EF7
+廸 > dí; #5EF8
+廹 > pò; #5EF9
+建 > jiàn; #5EFA
+廻 > húi; #5EFB
+廼 > năi; #5EFC
+廽 > húi; #5EFD
+廾 > gòng; #5EFE
+廿 > niàn; #5EFF
+开 > kāi; #5F00
+弁 > biàn; #5F01
+异 > yì; #5F02
+弃 > qì; #5F03
+弄 > nòng; #5F04
+弅 > fén; #5F05
+弆 > jŭ; #5F06
+弇 > yăn; #5F07
+弈 > yì; #5F08
+弉 > zàng; #5F09
+弊 > bì; #5F0A
+弋 > yì; #5F0B
+弌 > yī; #5F0C
+弍 > èr; #5F0D
+弎 > sān; #5F0E
+式 > shì; #5F0F
+弐 > èr; #5F10
+弑 > shì; #5F11
+弒 > shì; #5F12
+弓 > gōng; #5F13
+弔 > diào; #5F14
+引 > yĭn; #5F15
+弖 > hù; #5F16
+弗 > fú; #5F17
+弘 > hóng; #5F18
+弙 > wū; #5F19
+弚 > túi; #5F1A
+弛 > chí; #5F1B
+弜 > jiàng; #5F1C
+弝 > bà; #5F1D
+弞 > shĕn; #5F1E
+弟 > dì; #5F1F
+张 > zhāng; #5F20
+弡 > jué; #5F21
+弢 > tāo; #5F22
+弣 > fŭ; #5F23
+弤 > dĭ; #5F24
+弥 > mí; #5F25
+弦 > xián; #5F26
+弧 > hú; #5F27
+弨 > chāo; #5F28
+弩 > nŭ; #5F29
+弪 > jìng; #5F2A
+弫 > zhĕn; #5F2B
+弬 > yí; #5F2C
+弭 > mĭ; #5F2D
+弮 > quān; #5F2E
+弯 > wān; #5F2F
+弰 > shāo; #5F30
+弱 > rùo; #5F31
+弲 > xuān; #5F32
+弳 > jìng; #5F33
+弴 > dūn; #5F34
+張 > zhāng; #5F35
+弶 > jiàng; #5F36
+強 > qiáng; #5F37
+弸 > péng; #5F38
+弹 > dàn; #5F39
+强 > qiáng; #5F3A
+弻 > bì; #5F3B
+弼 > bì; #5F3C
+弽 > shè; #5F3D
+弾 > dàn; #5F3E
+弿 > jiăn; #5F3F
+彀 > gòu; #5F40
+彂 > fā; #5F42
+彃 > bì; #5F43
+彄 > kōu; #5F44
+彆 > biè; #5F46
+彇 > xiāo; #5F47
+彈 > dàn; #5F48
+彉 > kùo; #5F49
+彊 > qiáng; #5F4A
+彋 > hóng; #5F4B
+彌 > mí; #5F4C
+彍 > kùo; #5F4D
+彎 > wān; #5F4E
+彏 > jué; #5F4F
+彐 > jì; #5F50
+彑 > jì; #5F51
+归 > gūi; #5F52
+当 > dāng; #5F53
+彔 > lù; #5F54
+录 > lù; #5F55
+彖 > tuàn; #5F56
+彗 > hùi; #5F57
+彘 > zhì; #5F58
+彙 > hùi; #5F59
+彚 > hùi; #5F5A
+彛 > yí; #5F5B
+彜 > yí; #5F5C
+彝 > yí; #5F5D
+彞 > yí; #5F5E
+彟 > hùo; #5F5F
+彠 > hùo; #5F60
+彡 > shān; #5F61
+形 > xíng; #5F62
+彣 > wén; #5F63
+彤 > tóng; #5F64
+彥 > yàn; #5F65
+彦 > yàn; #5F66
+彧 > yù; #5F67
+彨 > chī; #5F68
+彩 > căi; #5F69
+彪 > biāo; #5F6A
+彫 > diāo; #5F6B
+彬 > bīn; #5F6C
+彭 > péng; #5F6D
+彮 > yŏng; #5F6E
+彯 > piāo; #5F6F
+彰 > zhāng; #5F70
+影 > yĭng; #5F71
+彲 > chī; #5F72
+彳 > chì; #5F73
+彴 > zhúo; #5F74
+彵 > tŭo; #5F75
+彶 > jí; #5F76
+彷 > páng; #5F77
+彸 > zhōng; #5F78
+役 > yì; #5F79
+彺 > wáng; #5F7A
+彻 > chè; #5F7B
+彼 > bĭ; #5F7C
+彽 > chí; #5F7D
+彾 > lĭng; #5F7E
+彿 > fú; #5F7F
+往 > wăng; #5F80
+征 > zhēng; #5F81
+徂 > cú; #5F82
+徃 > wăng; #5F83
+径 > jìng; #5F84
+待 > dài; #5F85
+徆 > xī; #5F86
+徇 > xùn; #5F87
+很 > hĕn; #5F88
+徉 > yáng; #5F89
+徊 > huái; #5F8A
+律 > lǜ; #5F8B
+後 > hòu; #5F8C
+徍 > wā; #5F8D
+徎 > chĕng; #5F8E
+徏 > zhì; #5F8F
+徐 > xú; #5F90
+徑 > jìng; #5F91
+徒 > tú; #5F92
+従 > cóng; #5F93
+徕 > lái; #5F95
+徖 > cóng; #5F96
+得 > dé; #5F97
+徘 > pái; #5F98
+徙 > xĭ; #5F99
+徛 > qì; #5F9B
+徜 > cháng; #5F9C
+徝 > zhì; #5F9D
+從 > cóng; #5F9E
+徟 > zhōu; #5F9F
+徠 > lái; #5FA0
+御 > yù; #5FA1
+徢 > xiè; #5FA2
+徣 > jiè; #5FA3
+徤 > jiàn; #5FA4
+徥 > chí; #5FA5
+徦 > jiă; #5FA6
+徧 > biàn; #5FA7
+徨 > huáng; #5FA8
+復 > fù; #5FA9
+循 > xún; #5FAA
+徫 > wĕi; #5FAB
+徬 > páng; #5FAC
+徭 > yáo; #5FAD
+微 > wēi; #5FAE
+徯 > xī; #5FAF
+徰 > zhēng; #5FB0
+徱 > piào; #5FB1
+徲 > chí; #5FB2
+徳 > dé; #5FB3
+徴 > zhēng; #5FB4
+徵 > zhēng; #5FB5
+徶 > biè; #5FB6
+德 > dé; #5FB7
+徸 > chōng; #5FB8
+徹 > chè; #5FB9
+徺 > jiăo; #5FBA
+徻 > wèi; #5FBB
+徼 > jiào; #5FBC
+徽 > hūi; #5FBD
+徾 > méi; #5FBE
+徿 > lòng; #5FBF
+忀 > xiāng; #5FC0
+忁 > bào; #5FC1
+忂 > qú; #5FC2
+心 > xīn; #5FC3
+忄 > shù' 'xīn' 'páng; #5FC4
+必 > bì; #5FC5
+忆 > yì; #5FC6
+忇 > lè; #5FC7
+忈 > rén; #5FC8
+忉 > dāo; #5FC9
+忊 > dìng; #5FCA
+忋 > găi; #5FCB
+忌 > jì; #5FCC
+忍 > rĕn; #5FCD
+忎 > rén; #5FCE
+忏 > chàn; #5FCF
+忐 > tăn; #5FD0
+忑 > tè; #5FD1
+忒 > tè; #5FD2
+忓 > gān; #5FD3
+忔 > qì; #5FD4
+忕 > shì; #5FD5
+忖 > cŭn; #5FD6
+志 > zhì; #5FD7
+忘 > wàng; #5FD8
+忙 > máng; #5FD9
+忚 > xī; #5FDA
+忛 > fán; #5FDB
+応 > yīng; #5FDC
+忝 > tiăn; #5FDD
+忞 > mín; #5FDE
+忟 > mín; #5FDF
+忠 > zhōng; #5FE0
+忡 > chōng; #5FE1
+忢 > wù; #5FE2
+忣 > jí; #5FE3
+忤 > wŭ; #5FE4
+忥 > xì; #5FE5
+忦 > yè; #5FE6
+忧 > yōu; #5FE7
+忨 > wàn; #5FE8
+忩 > cōng; #5FE9
+忪 > zhōng; #5FEA
+快 > kuài; #5FEB
+忬 > yù; #5FEC
+忭 > biàn; #5FED
+忮 > zhì; #5FEE
+忯 > qí; #5FEF
+忰 > cùi; #5FF0
+忱 > chén; #5FF1
+忲 > tài; #5FF2
+忳 > tún; #5FF3
+忴 > qián; #5FF4
+念 > niàn; #5FF5
+忶 > hún; #5FF6
+忷 > xīong; #5FF7
+忸 > nĭu; #5FF8
+忹 > wăng; #5FF9
+忺 > xiān; #5FFA
+忻 > xīn; #5FFB
+忼 > kāng; #5FFC
+忽 > hū; #5FFD
+忾 > kài; #5FFE
+忿 > fèn; #5FFF
+怀 > huái; #6000
+态 > tài; #6001
+怂 > sŏng; #6002
+怃 > wŭ; #6003
+怄 > òu; #6004
+怅 > chàng; #6005
+怆 > chuàng; #6006
+怇 > jù; #6007
+怈 > yì; #6008
+怉 > băo; #6009
+怊 > chāo; #600A
+怋 > mín; #600B
+怌 > pēi; #600C
+怍 > zùo; #600D
+怎 > zĕn; #600E
+怏 > yàng; #600F
+怐 > kòu; #6010
+怑 > bàn; #6011
+怒 > nù; #6012
+怓 > náo; #6013
+怔 > zhēng; #6014
+怕 > pà; #6015
+怖 > bù; #6016
+怗 > tiē; #6017
+怘 > gù; #6018
+怙 > hù; #6019
+怚 > jù; #601A
+怛 > dá; #601B
+怜 > lián; #601C
+思 > sī; #601D
+怞 > chōu; #601E
+怟 > dì; #601F
+怠 > dài; #6020
+怡 > yí; #6021
+怢 > tú; #6022
+怣 > yóu; #6023
+怤 > fū; #6024
+急 > jí; #6025
+怦 > pēng; #6026
+性 > xìng; #6027
+怨 > yuàn; #6028
+怩 > ní; #6029
+怪 > guài; #602A
+怫 > fú; #602B
+怬 > xì; #602C
+怭 > bì; #602D
+怮 > yōu; #602E
+怯 > qiè; #602F
+怰 > xuàn; #6030
+怱 > cōng; #6031
+怲 > bĭng; #6032
+怳 > huăng; #6033
+怴 > xù; #6034
+怵 > chù; #6035
+怶 > pī; #6036
+怷 > xī; #6037
+怸 > xī; #6038
+怹 > tān; #6039
+总 > zŏng; #603B
+怼 > dùi; #603C
+怿 > yì; #603F
+恀 > chĭ; #6040
+恁 > rèn; #6041
+恂 > xún; #6042
+恃 > shì; #6043
+恄 > xì; #6044
+恅 > lăo; #6045
+恆 > héng; #6046
+恇 > kuāng; #6047
+恈 > mú; #6048
+恉 > zhĭ; #6049
+恊 > xié; #604A
+恋 > liàn; #604B
+恌 > tiāo; #604C
+恍 > huăng; #604D
+恎 > dié; #604E
+恏 > hăo; #604F
+恐 > kŏng; #6050
+恑 > gŭi; #6051
+恒 > héng; #6052
+恓 > xī; #6053
+恔 > xiào; #6054
+恕 > shù; #6055
+恖 > sī; #6056
+恗 > kuă; #6057
+恘 > qīu; #6058
+恙 > yàng; #6059
+恚 > hùi; #605A
+恛 > húi; #605B
+恜 > chì; #605C
+恝 > jiá; #605D
+恞 > yí; #605E
+恟 > xīong; #605F
+恠 > guài; #6060
+恡 > lìn; #6061
+恢 > hūi; #6062
+恣 > zì; #6063
+恤 > xù; #6064
+恥 > chĭ; #6065
+恦 > xiàng; #6066
+恧 > nǜ; #6067
+恨 > hèn; #6068
+恩 > ēn; #6069
+恪 > kè; #606A
+恫 > tōng; #606B
+恬 > tián; #606C
+恭 > gōng; #606D
+恮 > quán; #606E
+息 > xī; #606F
+恰 > qià; #6070
+恱 > yuè; #6071
+恲 > pēng; #6072
+恳 > kĕn; #6073
+恴 > dé; #6074
+恵 > hùi; #6075
+恶 > è; #6076
+恸 > tòng; #6078
+恹 > yàn; #6079
+恺 > kăi; #607A
+恻 > cè; #607B
+恼 > năo; #607C
+恽 > yùn; #607D
+恾 > máng; #607E
+恿 > yŏng; #607F
+悀 > yŏng; #6080
+悁 > yuān; #6081
+悂 > pī; #6082
+悃 > kŭn; #6083
+悄 > qiăo; #6084
+悅 > yuè; #6085
+悆 > yù; #6086
+悇 > yù; #6087
+悈 > jiè; #6088
+悉 > xī; #6089
+悊 > zhé; #608A
+悋 > lìn; #608B
+悌 > tì; #608C
+悍 > hàn; #608D
+悎 > hào; #608E
+悏 > qiè; #608F
+悐 > tì; #6090
+悑 > bù; #6091
+悒 > yì; #6092
+悓 > qiàn; #6093
+悔 > hŭi; #6094
+悕 > xī; #6095
+悖 > bèi; #6096
+悗 > mán; #6097
+悘 > yī; #6098
+悙 > hēng; #6099
+悚 > sŏng; #609A
+悛 > quān; #609B
+悜 > chĕng; #609C
+悝 > hūi; #609D
+悞 > wù; #609E
+悟 > wù; #609F
+悠 > yōu; #60A0
+悡 > lí; #60A1
+悢 > liàng; #60A2
+患 > huàn; #60A3
+悤 > cōng; #60A4
+悥 > yì; #60A5
+悦 > yuè; #60A6
+悧 > lì; #60A7
+您 > nín; #60A8
+悩 > năo; #60A9
+悪 > è; #60AA
+悫 > què; #60AB
+悬 > xuán; #60AC
+悭 > qiān; #60AD
+悮 > wù; #60AE
+悯 > mĭn; #60AF
+悰 > cóng; #60B0
+悱 > fĕi; #60B1
+悲 > bēi; #60B2
+悳 > dúo; #60B3
+悴 > cùi; #60B4
+悵 > chàng; #60B5
+悶 > mèn; #60B6
+悷 > lì; #60B7
+悸 > jì; #60B8
+悹 > guàn; #60B9
+悺 > guàn; #60BA
+悻 > xìng; #60BB
+悼 > dào; #60BC
+悽 > qī; #60BD
+悾 > kōng; #60BE
+悿 > tiăn; #60BF
+惀 > lún; #60C0
+惁 > xī; #60C1
+惂 > kăn; #60C2
+惃 > kūn; #60C3
+惄 > nì; #60C4
+情 > qíng; #60C5
+惆 > chóu; #60C6
+惇 > dūn; #60C7
+惈 > gŭo; #60C8
+惉 > chān; #60C9
+惊 > liáng; #60CA
+惋 > wăn; #60CB
+惌 > yuān; #60CC
+惍 > jīn; #60CD
+惎 > jì; #60CE
+惏 > lín; #60CF
+惐 > yù; #60D0
+惑 > hùo; #60D1
+惒 > hé; #60D2
+惓 > quán; #60D3
+惔 > tán; #60D4
+惕 > tì; #60D5
+惖 > tì; #60D6
+惗 > niē; #60D7
+惘 > wăng; #60D8
+惙 > chùo; #60D9
+惚 > bū; #60DA
+惛 > hūn; #60DB
+惜 > xī; #60DC
+惝 > tăng; #60DD
+惞 > xīn; #60DE
+惟 > wéi; #60DF
+惠 > hùi; #60E0
+惡 > è; #60E1
+惢 > rŭi; #60E2
+惣 > zŏng; #60E3
+惤 > jiān; #60E4
+惥 > yŏng; #60E5
+惦 > diàn; #60E6
+惧 > jù; #60E7
+惨 > căn; #60E8
+惩 > chéng; #60E9
+惪 > dé; #60EA
+惫 > bèi; #60EB
+惬 > qiè; #60EC
+惭 > cán; #60ED
+惮 > dàn; #60EE
+惯 > guàn; #60EF
+惰 > dùo; #60F0
+惱 > năo; #60F1
+惲 > yùn; #60F2
+想 > xiăng; #60F3
+惴 > zhùi; #60F4
+惵 > diè; #60F5
+惶 > huáng; #60F6
+惷 > chŭn; #60F7
+惸 > qíong; #60F8
+惹 > rĕ; #60F9
+惺 > xīng; #60FA
+惻 > cè; #60FB
+惼 > biăn; #60FC
+惽 > hūn; #60FD
+惾 > zōng; #60FE
+惿 > tí; #60FF
+愀 > qiăo; #6100
+愁 > chóu; #6101
+愂 > bèi; #6102
+愃 > xuān; #6103
+愄 > wēi; #6104
+愅 > gé; #6105
+愆 > qiān; #6106
+愇 > wĕi; #6107
+愈 > yù; #6108
+愉 > yú; #6109
+愊 > bì; #610A
+愋 > xuān; #610B
+愌 > huàn; #610C
+愍 > mĭn; #610D
+愎 > bì; #610E
+意 > yì; #610F
+愐 > miăn; #6110
+愑 > yŏng; #6111
+愒 > kài; #6112
+愓 > dàng; #6113
+愔 > yīn; #6114
+愕 > è; #6115
+愖 > chén; #6116
+愗 > mòu; #6117
+愘 > kè; #6118
+愙 > kè; #6119
+愚 > yú; #611A
+愛 > ài; #611B
+愜 > qiè; #611C
+愝 > yăn; #611D
+愞 > nùo; #611E
+感 > găn; #611F
+愠 > yùn; #6120
+愡 > zŏng; #6121
+愢 > sāi; #6122
+愣 > léng; #6123
+愤 > fèn; #6124
+愦 > kùi; #6126
+愧 > kùi; #6127
+愨 > què; #6128
+愩 > gōng; #6129
+愪 > yún; #612A
+愫 > sù; #612B
+愬 > sù; #612C
+愭 > qí; #612D
+愮 > yáo; #612E
+愯 > sŏng; #612F
+愰 > huăng; #6130
+愱 > jí; #6131
+愲 > gŭ; #6132
+愳 > jù; #6133
+愴 > chuàng; #6134
+愵 > nì; #6135
+愶 > xié; #6136
+愷 > kăi; #6137
+愸 > zhĕng; #6138
+愹 > yŏng; #6139
+愺 > căo; #613A
+愻 > sùn; #613B
+愼 > shèn; #613C
+愽 > bó; #613D
+愾 > kài; #613E
+愿 > yuàn; #613F
+慀 > xié; #6140
+慁 > hùn; #6141
+慂 > yŏng; #6142
+慃 > yăng; #6143
+慄 > lì; #6144
+慅 > sāo; #6145
+慆 > tāo; #6146
+慇 > yīn; #6147
+慈 > cí; #6148
+慉 > xù; #6149
+慊 > qiàn; #614A
+態 > tài; #614B
+慌 > huāng; #614C
+慍 > yùn; #614D
+慎 > shèn; #614E
+慏 > mĭng; #614F
+慑 > shè; #6151
+慒 > cóng; #6152
+慓 > piào; #6153
+慔 > mò; #6154
+慕 > mù; #6155
+慖 > gúo; #6156
+慗 > chì; #6157
+慘 > căn; #6158
+慙 > cán; #6159
+慚 > cán; #615A
+慛 > cúi; #615B
+慜 > mĭn; #615C
+慝 > tè; #615D
+慞 > zhāng; #615E
+慟 > tòng; #615F
+慠 > ào; #6160
+慡 > shuăng; #6161
+慢 > màn; #6162
+慣 > guàn; #6163
+慤 > què; #6164
+慥 > zào; #6165
+慦 > jìu; #6166
+慧 > hùi; #6167
+慨 > kăi; #6168
+慩 > lián; #6169
+慪 > òu; #616A
+慫 > sŏng; #616B
+慬 > jĭn; #616C
+慭 > yìn; #616D
+慮 > lǜ; #616E
+慯 > shāng; #616F
+慰 > wèi; #6170
+慱 > tuán; #6171
+慲 > mán; #6172
+慳 > qiān; #6173
+慴 > shè; #6174
+慵 > yōng; #6175
+慶 > qìng; #6176
+慷 > kāng; #6177
+慸 > dì; #6178
+慹 > zhí; #6179
+慺 > lóu; #617A
+慻 > juàn; #617B
+慼 > qī; #617C
+慽 > qī; #617D
+慾 > yù; #617E
+慿 > píng; #617F
+憀 > liáo; #6180
+憁 > cōng; #6181
+憂 > yōu; #6182
+憃 > chōng; #6183
+憄 > zhì; #6184
+憅 > tòng; #6185
+憆 > chēng; #6186
+憇 > qì; #6187
+憈 > qū; #6188
+憉 > péng; #6189
+憊 > bèi; #618A
+憋 > biē; #618B
+憌 > chún; #618C
+憍 > jiāo; #618D
+憎 > zēng; #618E
+憏 > chì; #618F
+憐 > lián; #6190
+憑 > píng; #6191
+憒 > kùi; #6192
+憓 > hùi; #6193
+憔 > qiáo; #6194
+憕 > chéng; #6195
+憖 > yìn; #6196
+憗 > yìn; #6197
+憘 > xĭ; #6198
+憙 > xĭ; #6199
+憚 > dàn; #619A
+憛 > tán; #619B
+憜 > dŭo; #619C
+憝 > dùi; #619D
+憞 > dùi; #619E
+憟 > sù; #619F
+憠 > jué; #61A0
+憡 > cè; #61A1
+憢 > xiāo; #61A2
+憣 > fán; #61A3
+憤 > fèn; #61A4
+憥 > láo; #61A5
+憦 > lào; #61A6
+憧 > chōng; #61A7
+憨 > hān; #61A8
+憩 > qì; #61A9
+憪 > xián; #61AA
+憫 > mĭn; #61AB
+憬 > jĭng; #61AC
+憭 > liăo; #61AD
+憮 > wŭ; #61AE
+憯 > căn; #61AF
+憰 > jué; #61B0
+憱 > cù; #61B1
+憲 > xiàn; #61B2
+憳 > tăn; #61B3
+憴 > shéng; #61B4
+憵 > pī; #61B5
+憶 > yì; #61B6
+憷 > chŭ; #61B7
+憸 > xiān; #61B8
+憹 > náo; #61B9
+憺 > dàn; #61BA
+憻 > tăn; #61BB
+憼 > jĭng; #61BC
+憽 > sōng; #61BD
+憾 > hàn; #61BE
+憿 > jiāo; #61BF
+懀 > wài; #61C0
+懁 > huán; #61C1
+懂 > dŏng; #61C2
+懃 > qín; #61C3
+懄 > qín; #61C4
+懅 > qú; #61C5
+懆 > căo; #61C6
+懇 > kĕn; #61C7
+懈 > xiè; #61C8
+應 > yìng; #61C9
+懊 > ào; #61CA
+懋 > mào; #61CB
+懌 > yì; #61CC
+懍 > lĭn; #61CD
+懎 > sè; #61CE
+懏 > jùn; #61CF
+懐 > huái; #61D0
+懑 > mèn; #61D1
+懒 > lăn; #61D2
+懓 > ài; #61D3
+懔 > lĭn; #61D4
+懕 > yān; #61D5
+懖 > guā; #61D6
+懗 > xià; #61D7
+懘 > chì; #61D8
+懙 > yŭ; #61D9
+懚 > yìn; #61DA
+懛 > dāi; #61DB
+懜 > mèng; #61DC
+懝 > ài; #61DD
+懞 > méng; #61DE
+懟 > dùi; #61DF
+懠 > qí; #61E0
+懡 > mŏ; #61E1
+懢 > lán; #61E2
+懣 > mèn; #61E3
+懤 > chóu; #61E4
+懥 > zhì; #61E5
+懦 > nùo; #61E6
+懧 > nùo; #61E7
+懨 > yān; #61E8
+懩 > yăng; #61E9
+懪 > bó; #61EA
+懫 > zhí; #61EB
+懬 > kuàng; #61EC
+懭 > kuàng; #61ED
+懮 > yŏu; #61EE
+懯 > fū; #61EF
+懰 > líu; #61F0
+懱 > miè; #61F1
+懲 > chéng; #61F2
+懴 > chàn; #61F4
+懵 > méng; #61F5
+懶 > lăn; #61F6
+懷 > huái; #61F7
+懸 > xuán; #61F8
+懹 > ràng; #61F9
+懺 > chàn; #61FA
+懻 > jì; #61FB
+懼 > jù; #61FC
+懽 > huān; #61FD
+懾 > shè; #61FE
+懿 > yì; #61FF
+戀 > liàn; #6200
+戁 > năn; #6201
+戂 > mí; #6202
+戃 > tăng; #6203
+戄 > jué; #6204
+戅 > gàng; #6205
+戆 > gàng; #6206
+戇 > gàng; #6207
+戈 > gē; #6208
+戉 > yuè; #6209
+戊 > wù; #620A
+戋 > jiān; #620B
+戌 > xū; #620C
+戍 > shù; #620D
+戎 > róng; #620E
+戏 > xì; #620F
+成 > chéng; #6210
+我 > wŏ; #6211
+戒 > jiè; #6212
+戓 > gē; #6213
+戔 > jiān; #6214
+戕 > qiāng; #6215
+或 > hùo; #6216
+戗 > qiāng; #6217
+战 > zhàn; #6218
+戙 > dòng; #6219
+戚 > qī; #621A
+戛 > jiá; #621B
+戜 > dié; #621C
+戝 > zéi; #621D
+戞 > jiá; #621E
+戟 > jĭ; #621F
+戠 > shì; #6220
+戡 > kān; #6221
+戢 > jí; #6222
+戣 > kúi; #6223
+戤 > gài; #6224
+戥 > dĕng; #6225
+戦 > zhàn; #6226
+戧 > chuāng; #6227
+戨 > gē; #6228
+戩 > jiăn; #6229
+截 > jié; #622A
+戫 > yù; #622B
+戬 > jiăn; #622C
+戭 > yăn; #622D
+戮 > lù; #622E
+戯 > xì; #622F
+戰 > zhàn; #6230
+戱 > xì; #6231
+戲 > xì; #6232
+戳 > chūo; #6233
+戴 > dài; #6234
+戵 > qú; #6235
+戶 > hù; #6236
+户 > hù; #6237
+戸 > hù; #6238
+戹 > è; #6239
+戺 > shì; #623A
+戻 > lì; #623B
+戼 > măo; #623C
+戽 > hù; #623D
+戾 > lì; #623E
+房 > fáng; #623F
+所 > sŭo; #6240
+扁 > biăn; #6241
+扂 > diàn; #6242
+扃 > jīong; #6243
+扄 > shăng; #6244
+扅 > yí; #6245
+扆 > yĭ; #6246
+扇 > shàn; #6247
+扈 > hù; #6248
+扉 > fēi; #6249
+扊 > yăn; #624A
+手 > shŏu; #624B
+扌 > t̄' 'shŏu' 'páng; #624C
+才 > cái; #624D
+扎 > zhā; #624E
+扏 > qíu; #624F
+扐 > lè; #6250
+扑 > bū; #6251
+扒 > bā; #6252
+打 > dă; #6253
+扔 > rēng; #6254
+払 > fú; #6255
+扗 > zài; #6257
+托 > tūo; #6258
+扙 > zhàng; #6259
+扚 > diāo; #625A
+扛 > káng; #625B
+扜 > yū; #625C
+扝 > kū; #625D
+扞 > hàn; #625E
+扟 > shēn; #625F
+扠 > chā; #6260
+扡 > yĭ; #6261
+扢 > gŭ; #6262
+扣 > kòu; #6263
+扤 > wù; #6264
+扥 > tūo; #6265
+扦 > qiān; #6266
+执 > zhí; #6267
+扨 > rèn; #6268
+扩 > kùo; #6269
+扪 > mén; #626A
+扫 > săo; #626B
+扬 > yáng; #626C
+扭 > nĭu; #626D
+扮 > bàn; #626E
+扯 > chĕ; #626F
+扰 > răo; #6270
+扱 > xī; #6271
+扲 > qián; #6272
+扳 > bān; #6273
+扴 > jiá; #6274
+扵 > yú; #6275
+扶 > fú; #6276
+扷 > ào; #6277
+扸 > xī; #6278
+批 > pī; #6279
+扺 > zhĭ; #627A
+扻 > zì; #627B
+扼 > è; #627C
+扽 > dùn; #627D
+找 > zhăo; #627E
+承 > chéng; #627F
+技 > jì; #6280
+抁 > yăn; #6281
+抂 > kuáng; #6282
+抃 > biàn; #6283
+抄 > chāo; #6284
+抅 > jū; #6285
+抆 > wèn; #6286
+抇 > hú; #6287
+抈 > yuè; #6288
+抉 > jué; #6289
+把 > bă; #628A
+抋 > qìn; #628B
+抌 > zhĕn; #628C
+抍 > zhĕng; #628D
+抎 > yŭn; #628E
+抏 > wán; #628F
+抐 > nù; #6290
+抑 > yì; #6291
+抒 > shū; #6292
+抓 > zhuā; #6293
+抔 > póu; #6294
+投 > tóu; #6295
+抖 > dŏu; #6296
+抗 > kàng; #6297
+折 > zhé; #6298
+抙 > póu; #6299
+抚 > fŭ; #629A
+抛 > pāo; #629B
+抜 > bá; #629C
+抝 > ăo; #629D
+択 > zé; #629E
+抟 > tuán; #629F
+抠 > kōu; #62A0
+抡 > lún; #62A1
+抢 > qiăng; #62A2
+护 > hù; #62A4
+报 > bào; #62A5
+抦 > bĭng; #62A6
+抧 > zhĭ; #62A7
+抨 > pēng; #62A8
+抩 > tān; #62A9
+抪 > pū; #62AA
+披 > pī; #62AB
+抬 > tái; #62AC
+抭 > yăo; #62AD
+抮 > zhĕn; #62AE
+抯 > zhā; #62AF
+抰 > yăng; #62B0
+抱 > bào; #62B1
+抲 > hē; #62B2
+抳 > nĭ; #62B3
+抴 > yì; #62B4
+抵 > dĭ; #62B5
+抶 > chì; #62B6
+抷 > pī; #62B7
+抸 > zā; #62B8
+抹 > mŏ; #62B9
+抺 > mŏ; #62BA
+抻 > shèn; #62BB
+押 > yā; #62BC
+抽 > chōu; #62BD
+抾 > qū; #62BE
+抿 > mĭn; #62BF
+拀 > chù; #62C0
+拁 > jiā; #62C1
+拂 > fú; #62C2
+拃 > zhăn; #62C3
+拄 > zhŭ; #62C4
+担 > dàn; #62C5
+拆 > chāi; #62C6
+拇 > mŭ; #62C7
+拈 > nián; #62C8
+拉 > lā; #62C9
+拊 > fŭ; #62CA
+拋 > pāo; #62CB
+拌 > bàn; #62CC
+拍 > pāi; #62CD
+拎 > līng; #62CE
+拏 > ná; #62CF
+拐 > guăi; #62D0
+拑 > qián; #62D1
+拒 > jù; #62D2
+拓 > tùo; #62D3
+拔 > bá; #62D4
+拕 > tūo; #62D5
+拖 > tūo; #62D6
+拗 > ăo; #62D7
+拘 > jū; #62D8
+拙 > zhúo; #62D9
+拚 > pàn; #62DA
+招 > zhāo; #62DB
+拜 > bài; #62DC
+拝 > bài; #62DD
+拞 > dĭ; #62DE
+拟 > nĭ; #62DF
+拠 > jù; #62E0
+拡 > kùo; #62E1
+拢 > lŏng; #62E2
+拣 > jiăn; #62E3
+拥 > yŏng; #62E5
+拦 > lán; #62E6
+拧 > níng; #62E7
+拨 > bō; #62E8
+择 > zé; #62E9
+拪 > qiān; #62EA
+拫 > hén; #62EB
+括 > guā; #62EC
+拭 > shì; #62ED
+拮 > jié; #62EE
+拯 > zhĕng; #62EF
+拰 > nĭn; #62F0
+拱 > gŏng; #62F1
+拲 > gŏng; #62F2
+拳 > quán; #62F3
+拴 > shuān; #62F4
+拵 > cún; #62F5
+拶 > zăn; #62F6
+拷 > kăo; #62F7
+拸 > chĭ; #62F8
+拹 > xié; #62F9
+拺 > cè; #62FA
+拻 > hūi; #62FB
+拼 > pīn; #62FC
+拽 > zhuāi; #62FD
+拾 > shí; #62FE
+拿 > ná; #62FF
+挀 > bò; #6300
+持 > chí; #6301
+挂 > guà; #6302
+挃 > zhì; #6303
+挄 > kùo; #6304
+挅 > dŭo; #6305
+挆 > dŭo; #6306
+指 > zhĭ; #6307
+挈 > qiè; #6308
+按 > àn; #6309
+挊 > nòng; #630A
+挋 > zhèn; #630B
+挌 > gé; #630C
+挍 > jiào; #630D
+挎 > kū; #630E
+挏 > dòng; #630F
+挐 > rú; #6310
+挑 > tiāo; #6311
+挒 > liè; #6312
+挓 > zhā; #6313
+挔 > lǚ; #6314
+挕 > dié; #6315
+挖 > wā; #6316
+挗 > jué; #6317
+挙 > jŭ; #6319
+挚 > zhì; #631A
+挛 > luán; #631B
+挜 > yà; #631C
+挝 > zhuā; #631D
+挞 > tà; #631E
+挟 > xié; #631F
+挠 > náo; #6320
+挡 > dăng; #6321
+挢 > jiăo; #6322
+挣 > zhēng; #6323
+挤 > jĭ; #6324
+挥 > hūi; #6325
+挦 > xún; #6326
+挨 > āi; #6328
+挩 > tūo; #6329
+挪 > núo; #632A
+挫 > cùo; #632B
+挬 > bó; #632C
+挭 > gĕng; #632D
+挮 > tĭ; #632E
+振 > zhèn; #632F
+挰 > chéng; #6330
+挱 > sūo; #6331
+挲 > sūo; #6332
+挳 > kēng; #6333
+挴 > mĕi; #6334
+挵 > lòng; #6335
+挶 > jú; #6336
+挷 > péng; #6337
+挸 > jiăn; #6338
+挹 > yì; #6339
+挺 > tĭng; #633A
+挻 > shān; #633B
+挼 > nùo; #633C
+挽 > wăn; #633D
+挾 > xié; #633E
+挿 > chā; #633F
+捀 > fēng; #6340
+捁 > jiăo; #6341
+捂 > wŭ; #6342
+捃 > jùn; #6343
+捄 > jìu; #6344
+捅 > tŏng; #6345
+捆 > kŭn; #6346
+捇 > hùo; #6347
+捈 > tú; #6348
+捉 > zhūo; #6349
+捊 > póu; #634A
+捋 > lè; #634B
+捌 > bā; #634C
+捍 > hàn; #634D
+捎 > shāo; #634E
+捏 > niē; #634F
+捐 > juān; #6350
+捑 > zé; #6351
+捒 > sŏng; #6352
+捓 > yé; #6353
+捔 > jué; #6354
+捕 > bŭ; #6355
+捖 > huán; #6356
+捗 > bù; #6357
+捘 > zùn; #6358
+捙 > yì; #6359
+捚 > zhāi; #635A
+捛 > lǚ; #635B
+捜 > sōu; #635C
+捝 > tūo; #635D
+捞 > lāo; #635E
+损 > sŭn; #635F
+捠 > bāng; #6360
+捡 > jiăn; #6361
+换 > huàn; #6362
+捣 > dăo; #6363
+捥 > wàn; #6365
+捦 > qín; #6366
+捧 > pĕng; #6367
+捨 > shĕ; #6368
+捩 > liè; #6369
+捪 > mín; #636A
+捫 > mén; #636B
+捬 > fŭ; #636C
+捭 > băi; #636D
+据 > jù; #636E
+捯 > dăo; #636F
+捰 > wŏ; #6370
+捱 > ái; #6371
+捲 > juăn; #6372
+捳 > yuè; #6373
+捴 > zŏng; #6374
+捵 > chĕn; #6375
+捶 > chúi; #6376
+捷 > jié; #6377
+捸 > tū; #6378
+捹 > bèn; #6379
+捺 > nà; #637A
+捻 > niăn; #637B
+捼 > núo; #637C
+捽 > zú; #637D
+捾 > wò; #637E
+捿 > xī; #637F
+掀 > xiān; #6380
+掁 > chéng; #6381
+掂 > diān; #6382
+掃 > săo; #6383
+掄 > lún; #6384
+掅 > qìng; #6385
+掆 > gāng; #6386
+掇 > dúo; #6387
+授 > shòu; #6388
+掉 > diào; #6389
+掊 > póu; #638A
+掋 > dĭ; #638B
+掌 > zhăng; #638C
+掍 > gŭn; #638D
+掎 > jĭ; #638E
+掏 > tāo; #638F
+掐 > qiā; #6390
+掑 > qí; #6391
+排 > pái; #6392
+掓 > shú; #6393
+掔 > qiān; #6394
+掕 > lìng; #6395
+掖 > yì; #6396
+掗 > yà; #6397
+掘 > jué; #6398
+掙 > zhēng; #6399
+掚 > liăng; #639A
+掛 > guà; #639B
+掜 > yĭ; #639C
+掝 > hùo; #639D
+掞 > shàn; #639E
+掟 > zhĕng; #639F
+掠 > lǜe; #63A0
+採 > căi; #63A1
+探 > tàn; #63A2
+掣 > chè; #63A3
+掤 > bīng; #63A4
+接 > jiē; #63A5
+掦 > tì; #63A6
+控 > kòng; #63A7
+推 > tūi; #63A8
+掩 > yăn; #63A9
+措 > cùo; #63AA
+掫 > zōu; #63AB
+掬 > jú; #63AC
+掭 > tiàn; #63AD
+掮 > qián; #63AE
+掯 > kèn; #63AF
+掰 > bāi; #63B0
+掱 > shŏu; #63B1
+掲 > jiē; #63B2
+掳 > lŭ; #63B3
+掴 > gúo; #63B4
+掷 > zhí; #63B7
+掸 > dăn; #63B8
+掺 > xiān; #63BA
+掻 > sāo; #63BB
+掼 > guàn; #63BC
+掽 > pèng; #63BD
+掾 > yuàn; #63BE
+掿 > nùo; #63BF
+揀 > jiăn; #63C0
+揁 > zhēn; #63C1
+揂 > jīu; #63C2
+揃 > jiān; #63C3
+揄 > yú; #63C4
+揅 > yán; #63C5
+揆 > kúi; #63C6
+揇 > năn; #63C7
+揈 > hōng; #63C8
+揉 > róu; #63C9
+揊 > pì; #63CA
+揋 > wēi; #63CB
+揌 > sāi; #63CC
+揍 > zòu; #63CD
+揎 > xuān; #63CE
+描 > miáo; #63CF
+提 > tí; #63D0
+揑 > niē; #63D1
+插 > chā; #63D2
+揓 > shì; #63D3
+揔 > zŏng; #63D4
+揕 > zhèn; #63D5
+揖 > yī; #63D6
+揗 > shŭn; #63D7
+揘 > héng; #63D8
+揙 > biàn; #63D9
+揚 > yáng; #63DA
+換 > huàn; #63DB
+揜 > yăn; #63DC
+揝 > zuàn; #63DD
+揞 > ăn; #63DE
+揟 > xū; #63DF
+揠 > yà; #63E0
+握 > wò; #63E1
+揢 > kè; #63E2
+揣 > chuăi; #63E3
+揤 > jí; #63E4
+揥 > tì; #63E5
+揦 > lá; #63E6
+揧 > là; #63E7
+揨 > chéng; #63E8
+揩 > kāi; #63E9
+揪 > jīu; #63EA
+揫 > jīu; #63EB
+揬 > tú; #63EC
+揭 > jiē; #63ED
+揮 > hūi; #63EE
+揯 > gēng; #63EF
+揰 > chòng; #63F0
+揱 > shùo; #63F1
+揲 > shé; #63F2
+揳 > xiè; #63F3
+援 > yuán; #63F4
+揵 > qián; #63F5
+揶 > yé; #63F6
+揷 > chā; #63F7
+揸 > zhā; #63F8
+揹 > bēi; #63F9
+揺 > yáo; #63FA
+揽 > lăn; #63FD
+揾 > wèn; #63FE
+揿 > qìn; #63FF
+搀 > chān; #6400
+搁 > gē; #6401
+搂 > lŏu; #6402
+搃 > zŏng; #6403
+搄 > gēng; #6404
+搅 > jiăo; #6405
+搆 > gòu; #6406
+搇 > qìn; #6407
+搈 > yŏng; #6408
+搉 > què; #6409
+搊 > chōu; #640A
+搋 > chĭ; #640B
+搌 > zhăn; #640C
+損 > sŭn; #640D
+搎 > sūn; #640E
+搏 > bó; #640F
+搐 > chù; #6410
+搑 > rŏng; #6411
+搒 > bèng; #6412
+搓 > cūo; #6413
+搔 > sāo; #6414
+搕 > kè; #6415
+搖 > yáo; #6416
+搗 > dăo; #6417
+搘 > zhī; #6418
+搙 > nù; #6419
+搚 > xié; #641A
+搛 > jiān; #641B
+搜 > sōu; #641C
+搝 > qĭu; #641D
+搞 > găo; #641E
+搟 > xiăn; #641F
+搠 > shùo; #6420
+搡 > săng; #6421
+搢 > jìn; #6422
+搣 > miè; #6423
+搤 > è; #6424
+搥 > chúi; #6425
+搦 > nùo; #6426
+搧 > shān; #6427
+搨 > tà; #6428
+搩 > jié; #6429
+搪 > táng; #642A
+搫 > pán; #642B
+搬 > bān; #642C
+搭 > dā; #642D
+搮 > lì; #642E
+搯 > tāo; #642F
+搰 > hú; #6430
+搱 > zhì; #6431
+搲 > wā; #6432
+搳 > xiá; #6433
+搴 > qiān; #6434
+搵 > wèn; #6435
+搶 > qiăng; #6436
+搷 > tián; #6437
+搸 > zhēn; #6438
+搹 > è; #6439
+携 > xī; #643A
+搻 > nùo; #643B
+搼 > quán; #643C
+搽 > chá; #643D
+搾 > zhà; #643E
+搿 > gé; #643F
+摀 > wŭ; #6440
+摁 > èn; #6441
+摂 > shè; #6442
+摃 > káng; #6443
+摄 > shè; #6444
+摅 > shū; #6445
+摆 > băi; #6446
+摇 > yáo; #6447
+摈 > bìn; #6448
+摉 > sōu; #6449
+摊 > tān; #644A
+摋 > sà; #644B
+摌 > chăn; #644C
+摍 > sūo; #644D
+摎 > liáo; #644E
+摏 > chōng; #644F
+摐 > chuāng; #6450
+摑 > gúo; #6451
+摒 > bìng; #6452
+摓 > féng; #6453
+摔 > shuāi; #6454
+摕 > dì; #6455
+摖 > qì; #6456
+摗 > sou; #6457
+摘 > zhāi; #6458
+摙 > liăn; #6459
+摚 > táng; #645A
+摛 > chī; #645B
+摜 > guàn; #645C
+摝 > lù; #645D
+摞 > lúo; #645E
+摟 > lŏu; #645F
+摠 > zŏng; #6460
+摡 > gài; #6461
+摢 > hù; #6462
+摣 > zhā; #6463
+摤 > chuăng; #6464
+摥 > tàng; #6465
+摦 > huà; #6466
+摧 > cūi; #6467
+摨 > nái; #6468
+摩 > mó; #6469
+摪 > jiāng; #646A
+摫 > gūi; #646B
+摬 > yìng; #646C
+摭 > zhí; #646D
+摮 > áo; #646E
+摯 > zhì; #646F
+摰 > niè; #6470
+摱 > mán; #6471
+摲 > shàn; #6472
+摳 > kōu; #6473
+摴 > shū; #6474
+摵 > sŭo; #6475
+摶 > tuán; #6476
+摷 > jiăo; #6477
+摸 > mō; #6478
+摹 > mó; #6479
+摺 > zhé; #647A
+摻 > xiān; #647B
+摼 > kēng; #647C
+摽 > piăo; #647D
+摾 > jiàng; #647E
+摿 > yīn; #647F
+撀 > gòu; #6480
+撁 > qiān; #6481
+撂 > lǜe; #6482
+撃 > jí; #6483
+撄 > yīng; #6484
+撅 > juē; #6485
+撆 > piē; #6486
+撇 > piĕ; #6487
+撈 > lāo; #6488
+撉 > dūn; #6489
+撊 > xiàn; #648A
+撋 > ruán; #648B
+撌 > kùi; #648C
+撍 > zăn; #648D
+撎 > yì; #648E
+撏 > xún; #648F
+撐 > chēng; #6490
+撑 > chēng; #6491
+撒 > să; #6492
+撓 > náo; #6493
+撔 > hèng; #6494
+撕 > sī; #6495
+撖 > qiăn; #6496
+撗 > huáng; #6497
+撘 > dā; #6498
+撙 > zŭn; #6499
+撚 > niăn; #649A
+撛 > lĭn; #649B
+撜 > zhĕng; #649C
+撝 > hūi; #649D
+撞 > zhuàng; #649E
+撟 > jiăo; #649F
+撠 > jĭ; #64A0
+撡 > cāo; #64A1
+撢 > dăn; #64A2
+撣 > dăn; #64A3
+撤 > chè; #64A4
+撥 > bō; #64A5
+撦 > chĕ; #64A6
+撧 > jué; #64A7
+撨 > xiāo; #64A8
+撩 > liáo; #64A9
+撪 > bèn; #64AA
+撫 > fŭ; #64AB
+撬 > qiào; #64AC
+播 > bò; #64AD
+撮 > cūo; #64AE
+撯 > zhúo; #64AF
+撰 > zhuàn; #64B0
+撱 > tŭo; #64B1
+撲 > pū; #64B2
+撳 > qìn; #64B3
+撴 > dūn; #64B4
+撵 > niăn; #64B5
+撷 > xié; #64B7
+撸 > lŭ; #64B8
+撹 > jiăo; #64B9
+撺 > cuān; #64BA
+撻 > tà; #64BB
+撼 > hàn; #64BC
+撽 > qiào; #64BD
+撾 > zhuā; #64BE
+撿 > jiăn; #64BF
+擀 > găn; #64C0
+擁 > yŏng; #64C1
+擂 > léi; #64C2
+擃 > kŭo; #64C3
+擄 > lŭ; #64C4
+擅 > shàn; #64C5
+擆 > zhúo; #64C6
+擇 > zé; #64C7
+擈 > pū; #64C8
+擉 > chùo; #64C9
+擊 > jí; #64CA
+擋 > dăng; #64CB
+擌 > sŭo; #64CC
+操 > cāo; #64CD
+擎 > qíng; #64CE
+擏 > jìng; #64CF
+擐 > huàn; #64D0
+擑 > jiē; #64D1
+擒 > qín; #64D2
+擓 > kuăi; #64D3
+擔 > dān; #64D4
+擕 > xī; #64D5
+擖 > gĕ; #64D6
+擗 > pì; #64D7
+擘 > bò; #64D8
+擙 > ào; #64D9
+據 > jù; #64DA
+擛 > yè; #64DB
+擞 > sŏu; #64DE
+擟 > mí; #64DF
+擠 > jĭ; #64E0
+擡 > tái; #64E1
+擢 > zhúo; #64E2
+擣 > dăo; #64E3
+擤 > xĭng; #64E4
+擥 > lăn; #64E5
+擦 > cā; #64E6
+擧 > jŭ; #64E7
+擨 > yé; #64E8
+擩 > rŭ; #64E9
+擪 > yè; #64EA
+擫 > yè; #64EB
+擬 > nĭ; #64EC
+擭 > hù; #64ED
+擮 > jí; #64EE
+擯 > bìn; #64EF
+擰 > níng; #64F0
+擱 > gē; #64F1
+擲 > zhí; #64F2
+擳 > jié; #64F3
+擴 > kùo; #64F4
+擵 > mó; #64F5
+擶 > jiàn; #64F6
+擷 > xié; #64F7
+擸 > liè; #64F8
+擹 > tān; #64F9
+擺 > băi; #64FA
+擻 > sŏu; #64FB
+擼 > lŭ; #64FC
+擽 > lǜe; #64FD
+擾 > răo; #64FE
+擿 > zhí; #64FF
+攀 > pān; #6500
+攁 > yăng; #6501
+攂 > lèi; #6502
+攃 > sà; #6503
+攄 > shū; #6504
+攅 > zăn; #6505
+攆 > niăn; #6506
+攇 > xiăn; #6507
+攈 > jùn; #6508
+攉 > hùo; #6509
+攊 > lì; #650A
+攋 > là; #650B
+攌 > hàn; #650C
+攍 > yíng; #650D
+攎 > lú; #650E
+攏 > lŏng; #650F
+攐 > qiān; #6510
+攑 > qiān; #6511
+攒 > zăn; #6512
+攓 > qiān; #6513
+攔 > lán; #6514
+攕 > sān; #6515
+攖 > yīng; #6516
+攗 > méi; #6517
+攘 > ráng; #6518
+攙 > chān; #6519
+攛 > cuān; #651B
+攜 > xī; #651C
+攝 > shè; #651D
+攞 > lŭo; #651E
+攟 > jùn; #651F
+攠 > mí; #6520
+攡 > lí; #6521
+攢 > zăn; #6522
+攣 > lǘan; #6523
+攤 > tān; #6524
+攥 > zuàn; #6525
+攦 > lì; #6526
+攧 > diān; #6527
+攨 > wā; #6528
+攩 > dăng; #6529
+攪 > jiăo; #652A
+攫 > jué; #652B
+攬 > lăn; #652C
+攭 > lì; #652D
+攮 > năng; #652E
+支 > zhī; #652F
+攰 > gùi; #6530
+攱 > gŭi; #6531
+攲 > qī; #6532
+攳 > xín; #6533
+攴 > pū; #6534
+攵 > sūi; #6535
+收 > shōu; #6536
+攷 > káo; #6537
+攸 > yōu; #6538
+改 > găi; #6539
+攺 > yĭ; #653A
+攻 > gōng; #653B
+攼 > gān; #653C
+攽 > bān; #653D
+放 > fàng; #653E
+政 > zhèng; #653F
+敀 > bó; #6540
+敁 > diān; #6541
+敂 > kòu; #6542
+敃 > mĭn; #6543
+敄 > wù; #6544
+故 > gù; #6545
+敆 > hé; #6546
+敇 > cè; #6547
+效 > xiào; #6548
+敉 > mĭ; #6549
+敊 > chù; #654A
+敋 > gé; #654B
+敌 > dí; #654C
+敍 > xù; #654D
+敎 > jiào; #654E
+敏 > mĭn; #654F
+敐 > chén; #6550
+救 > jìu; #6551
+敒 > zhèn; #6552
+敓 > dúo; #6553
+敔 > yŭ; #6554
+敕 > chì; #6555
+敖 > áo; #6556
+敗 > bài; #6557
+敘 > xù; #6558
+教 > jiào; #6559
+敚 > dúo; #655A
+敛 > liàn; #655B
+敜 > niè; #655C
+敝 > bì; #655D
+敞 > chăng; #655E
+敟 > diăn; #655F
+敠 > dúo; #6560
+敡 > yì; #6561
+敢 > găn; #6562
+散 > sàn; #6563
+敤 > kĕ; #6564
+敥 > yàn; #6565
+敦 > dūn; #6566
+敧 > qĭ; #6567
+敨 > dŏu; #6568
+敩 > xiào; #6569
+敪 > dúo; #656A
+敫 > jiào; #656B
+敬 > jìng; #656C
+敭 > yáng; #656D
+敮 > xiá; #656E
+敯 > mín; #656F
+数 > shù; #6570
+敱 > ái; #6571
+敲 > qiāo; #6572
+敳 > ái; #6573
+整 > zhĕng; #6574
+敵 > dí; #6575
+敶 > zhèn; #6576
+敷 > fū; #6577
+數 > shù; #6578
+敹 > liáo; #6579
+敺 > qū; #657A
+敻 > xìong; #657B
+敼 > xĭ; #657C
+敽 > jiăo; #657D
+敿 > jiăo; #657F
+斀 > zhúo; #6580
+斁 > yì; #6581
+斂 > liàn; #6582
+斃 > bì; #6583
+斄 > lì; #6584
+斅 > xiào; #6585
+斆 > xiào; #6586
+文 > wén; #6587
+斈 > xué; #6588
+斉 > qí; #6589
+斊 > qí; #658A
+斋 > zhāi; #658B
+斌 > bīn; #658C
+斍 > jué; #658D
+斎 > zhāi; #658E
+斐 > fĕi; #6590
+斑 > bān; #6591
+斒 > bān; #6592
+斓 > lán; #6593
+斔 > yŭ; #6594
+斕 > lán; #6595
+斖 > wĕi; #6596
+斗 > dŏu; #6597
+斘 > shēng; #6598
+料 > liào; #6599
+斚 > jiă; #659A
+斛 > hú; #659B
+斜 > xié; #659C
+斝 > jiă; #659D
+斞 > yŭ; #659E
+斟 > zhēn; #659F
+斠 > jiào; #65A0
+斡 > wò; #65A1
+斢 > tŏu; #65A2
+斣 > chù; #65A3
+斤 > jīn; #65A4
+斥 > chì; #65A5
+斦 > yín; #65A6
+斧 > fŭ; #65A7
+斨 > qiāng; #65A8
+斩 > zhăn; #65A9
+斪 > qú; #65AA
+斫 > zhúo; #65AB
+斬 > zhăn; #65AC
+断 > duàn; #65AD
+斮 > zhúo; #65AE
+斯 > sī; #65AF
+新 > xīn; #65B0
+斱 > zhúo; #65B1
+斲 > zhúo; #65B2
+斳 > qín; #65B3
+斴 > lín; #65B4
+斵 > zhúo; #65B5
+斶 > chù; #65B6
+斷 > duàn; #65B7
+斸 > zhŭ; #65B8
+方 > fāng; #65B9
+斺 > xiè; #65BA
+斻 > háng; #65BB
+於 > yú; #65BC
+施 > shī; #65BD
+斾 > pèi; #65BE
+斿 > yóu; #65BF
+旁 > páng; #65C1
+旂 > qí; #65C2
+旃 > zhān; #65C3
+旄 > máo; #65C4
+旅 > lǚ; #65C5
+旆 > pèi; #65C6
+旇 > pī; #65C7
+旈 > líu; #65C8
+旉 > fū; #65C9
+旊 > făng; #65CA
+旋 > xuán; #65CB
+旌 > jīng; #65CC
+旍 > jīng; #65CD
+旎 > nĭ; #65CE
+族 > zú; #65CF
+旐 > zhào; #65D0
+旑 > yĭ; #65D1
+旒 > líu; #65D2
+旓 > shāo; #65D3
+旔 > jiàn; #65D4
+旖 > yĭ; #65D6
+旗 > qí; #65D7
+旘 > zhì; #65D8
+旙 > fān; #65D9
+旚 > piāo; #65DA
+旛 > fān; #65DB
+旜 > zhān; #65DC
+旝 > guài; #65DD
+旞 > sùi; #65DE
+旟 > yú; #65DF
+无 > wú; #65E0
+旡 > jì; #65E1
+既 > jì; #65E2
+旣 > jì; #65E3
+旤 > hùo; #65E4
+日 > rì; #65E5
+旦 > dàn; #65E6
+旧 > jìu; #65E7
+旨 > zhĭ; #65E8
+早 > zăo; #65E9
+旪 > xié; #65EA
+旫 > tiāo; #65EB
+旬 > xún; #65EC
+旭 > xù; #65ED
+旮 > xù; #65EE
+旯 > xù; #65EF
+旰 > gàn; #65F0
+旱 > hàn; #65F1
+旲 > tái; #65F2
+旳 > dì; #65F3
+旴 > xū; #65F4
+旵 > chăn; #65F5
+时 > shí; #65F6
+旷 > kuàng; #65F7
+旸 > yáng; #65F8
+旹 > shí; #65F9
+旺 > wàng; #65FA
+旻 > mín; #65FB
+旼 > mín; #65FC
+旽 > tūn; #65FD
+旾 > chūn; #65FE
+旿 > wŭ; #65FF
+昀 > yún; #6600
+昁 > bèi; #6601
+昂 > áng; #6602
+昃 > zè; #6603
+昄 > băn; #6604
+昅 > jié; #6605
+昆 > kūn; #6606
+昇 > shēng; #6607
+昈 > hù; #6608
+昉 > făng; #6609
+昊 > hào; #660A
+昋 > gùi; #660B
+昌 > chāng; #660C
+昍 > xuān; #660D
+明 > míng; #660E
+昏 > hūn; #660F
+昐 > fēn; #6610
+昑 > qĭn; #6611
+昒 > hū; #6612
+易 > yì; #6613
+昔 > xí; #6614
+昕 > xīn; #6615
+昖 > yán; #6616
+昗 > zè; #6617
+昘 > făng; #6618
+昙 > tán; #6619
+昚 > shèn; #661A
+昛 > jù; #661B
+昜 > yáng; #661C
+昝 > zăn; #661D
+昞 > bĭng; #661E
+星 > xīng; #661F
+映 > yìng; #6620
+昡 > xuàn; #6621
+昢 > pĕi; #6622
+昣 > zhĕn; #6623
+昤 > līng; #6624
+春 > chūn; #6625
+昦 > hào; #6626
+昧 > mèi; #6627
+昨 > zúo; #6628
+昩 > mò; #6629
+昪 > biàn; #662A
+昫 > xŭ; #662B
+昬 > hūn; #662C
+昭 > zhāo; #662D
+昮 > zòng; #662E
+是 > shì; #662F
+昰 > shì; #6630
+昱 > yù; #6631
+昲 > fèi; #6632
+昳 > dié; #6633
+昴 > măo; #6634
+昵 > nì; #6635
+昶 > chăng; #6636
+昷 > wēn; #6637
+昸 > dōng; #6638
+昹 > ăi; #6639
+昺 > bĭng; #663A
+昻 > áng; #663B
+昼 > zhòu; #663C
+昽 > lóng; #663D
+显 > xiăn; #663E
+昿 > kuàng; #663F
+晀 > tiăo; #6640
+晁 > cháo; #6641
+時 > shí; #6642
+晃 > huăng; #6643
+晄 > huăng; #6644
+晅 > xuān; #6645
+晆 > kúi; #6646
+晇 > xū; #6647
+晈 > jiăo; #6648
+晉 > jìn; #6649
+晊 > zhĭ; #664A
+晋 > jìn; #664B
+晌 > shăng; #664C
+晍 > tóng; #664D
+晎 > hŏng; #664E
+晏 > yàn; #664F
+晐 > gāi; #6650
+晑 > xiăng; #6651
+晒 > shài; #6652
+晓 > xiăo; #6653
+晔 > yē; #6654
+晕 > yūn; #6655
+晖 > hūi; #6656
+晗 > hán; #6657
+晘 > hàn; #6658
+晙 > jùn; #6659
+晚 > wăn; #665A
+晛 > xiàn; #665B
+晜 > kūn; #665C
+晝 > zhòu; #665D
+晞 > xī; #665E
+晟 > chéng; #665F
+晠 > shéng; #6660
+晡 > bū; #6661
+晢 > zhē; #6662
+晣 > zhē; #6663
+晤 > wù; #6664
+晥 > hàn; #6665
+晦 > hùi; #6666
+晧 > hào; #6667
+晨 > chén; #6668
+晩 > wăn; #6669
+晪 > tiăn; #666A
+晫 > zhúo; #666B
+晬 > zùi; #666C
+晭 > zhŏu; #666D
+普 > pŭ; #666E
+景 > jĭng; #666F
+晰 > xī; #6670
+晱 > shăn; #6671
+晲 > yĭ; #6672
+晳 > xì; #6673
+晴 > qíng; #6674
+晵 > qĭ; #6675
+晶 > jīng; #6676
+晷 > gŭi; #6677
+晸 > zhĕn; #6678
+晹 > yì; #6679
+智 > zhì; #667A
+晻 > ăn; #667B
+晼 > wăn; #667C
+晽 > lín; #667D
+晾 > liàng; #667E
+晿 > chāng; #667F
+暀 > wăng; #6680
+暁 > xiăo; #6681
+暂 > zàn; #6682
+暄 > xuān; #6684
+暅 > xuăn; #6685
+暆 > yí; #6686
+暇 > xiá; #6687
+暈 > yūn; #6688
+暉 > hūi; #6689
+暊 > fŭ; #668A
+暋 > mĭn; #668B
+暌 > kúi; #668C
+暍 > hè; #668D
+暎 > yìng; #668E
+暏 > dŭ; #668F
+暐 > wĕi; #6690
+暑 > shŭ; #6691
+暒 > qíng; #6692
+暓 > mào; #6693
+暔 > nán; #6694
+暕 > jiăn; #6695
+暖 > nuăn; #6696
+暗 > àn; #6697
+暘 > yáng; #6698
+暙 > chūn; #6699
+暚 > yáo; #669A
+暛 > sŭo; #669B
+暜 > jìn; #669C
+暝 > míng; #669D
+暞 > jiăo; #669E
+暟 > kăi; #669F
+暠 > găo; #66A0
+暡 > wĕng; #66A1
+暢 > chàng; #66A2
+暣 > qì; #66A3
+暤 > hào; #66A4
+暥 > yàn; #66A5
+暦 > lì; #66A6
+暧 > ài; #66A7
+暨 > jì; #66A8
+暩 > gùi; #66A9
+暪 > mĕn; #66AA
+暫 > zàn; #66AB
+暬 > xiè; #66AC
+暭 > hào; #66AD
+暮 > mù; #66AE
+暯 > mò; #66AF
+暰 > cōng; #66B0
+暱 > nì; #66B1
+暲 > zhāng; #66B2
+暳 > hùi; #66B3
+暴 > bào; #66B4
+暵 > hàn; #66B5
+暶 > xuán; #66B6
+暷 > chuán; #66B7
+暸 > liáo; #66B8
+暹 > xiān; #66B9
+暺 > dàn; #66BA
+暻 > jĭng; #66BB
+暼 > piē; #66BC
+暽 > lín; #66BD
+暾 > tūn; #66BE
+暿 > xĭ; #66BF
+曀 > yì; #66C0
+曁 > jì; #66C1
+曂 > huàng; #66C2
+曃 > tài; #66C3
+曄 > yè; #66C4
+曅 > yè; #66C5
+曆 > lì; #66C6
+曇 > tán; #66C7
+曈 > tóng; #66C8
+曉 > xiăo; #66C9
+曊 > fèi; #66CA
+曋 > qĭn; #66CB
+曌 > zhào; #66CC
+曍 > hào; #66CD
+曎 > yì; #66CE
+曏 > xiàng; #66CF
+曐 > xīng; #66D0
+曑 > sēn; #66D1
+曒 > jiăo; #66D2
+曓 > bào; #66D3
+曔 > jìng; #66D4
+曕 > yiàn; #66D5
+曖 > ài; #66D6
+曗 > yè; #66D7
+曘 > rú; #66D8
+曙 > shù; #66D9
+曚 > méng; #66DA
+曛 > xūn; #66DB
+曜 > yào; #66DC
+曝 > pù; #66DD
+曞 > lì; #66DE
+曟 > chén; #66DF
+曠 > kuàng; #66E0
+曡 > dié; #66E1
+曣 > yàn; #66E3
+曤 > hùo; #66E4
+曥 > lú; #66E5
+曦 > xī; #66E6
+曧 > róng; #66E7
+曨 > lóng; #66E8
+曩 > năng; #66E9
+曪 > lŭo; #66EA
+曫 > luán; #66EB
+曬 > shài; #66EC
+曭 > tăng; #66ED
+曮 > yăn; #66EE
+曯 > chú; #66EF
+曰 > yuē; #66F0
+曱 > yuē; #66F1
+曲 > qŭ; #66F2
+曳 > yì; #66F3
+更 > gèng; #66F4
+曵 > yè; #66F5
+曶 > hū; #66F6
+曷 > hé; #66F7
+書 > shū; #66F8
+曹 > cáo; #66F9
+曺 > cáo; #66FA
+曼 > màn; #66FC
+曽 > cēng; #66FD
+曾 > céng; #66FE
+替 > tì; #66FF
+最 > zùi; #6700
+朁 > căn; #6701
+朂 > xù; #6702
+會 > hùi; #6703
+朄 > yìn; #6704
+朅 > qiè; #6705
+朆 > fēn; #6706
+朇 > pí; #6707
+月 > yuè; #6708
+有 > yŏu; #6709
+朊 > ruăn; #670A
+朋 > péng; #670B
+朌 > bān; #670C
+服 > fú; #670D
+朎 > líng; #670E
+朏 > fĕi; #670F
+朐 > qú; #6710
+朒 > nǜ; #6712
+朓 > tiào; #6713
+朔 > shùo; #6714
+朕 > zhèn; #6715
+朖 > lăng; #6716
+朗 > lăng; #6717
+朘 > juān; #6718
+朙 > míng; #6719
+朚 > huāng; #671A
+望 > wàng; #671B
+朜 > tūn; #671C
+朝 > zhāo; #671D
+朞 > jī; #671E
+期 > qí; #671F
+朠 > yīng; #6720
+朡 > zōng; #6721
+朢 > wàng; #6722
+朣 > tóng; #6723
+朤 > lăng; #6724
+朦 > méng; #6726
+朧 > lóng; #6727
+木 > mù; #6728
+朩 > dĕng; #6729
+未 > wèi; #672A
+末 > mò; #672B
+本 > bĕn; #672C
+札 > zhá; #672D
+朮 > zhú; #672E
+术 > zhú; #672F
+朱 > zhū; #6731
+朲 > rén; #6732
+朳 > bā; #6733
+朴 > pò; #6734
+朵 > dŭo; #6735
+朶 > dŭo; #6736
+朷 > dāo; #6737
+朸 > lì; #6738
+朹 > qíu; #6739
+机 > jī; #673A
+朻 > jīu; #673B
+朼 > bĭ; #673C
+朽 > xĭu; #673D
+朾 > tíng; #673E
+朿 > cì; #673F
+杀 > shā; #6740
+杂 > zá; #6742
+权 > quán; #6743
+杄 > qiān; #6744
+杅 > yú; #6745
+杆 > gān; #6746
+杇 > wū; #6747
+杈 > chā; #6748
+杉 > shān; #6749
+杊 > xún; #674A
+杋 > fān; #674B
+杌 > wù; #674C
+杍 > zĭ; #674D
+李 > lĭ; #674E
+杏 > xìng; #674F
+材 > cái; #6750
+村 > cūn; #6751
+杒 > rèn; #6752
+杓 > sháo; #6753
+杔 > tūo; #6754
+杕 > dì; #6755
+杖 > zhàng; #6756
+杗 > máng; #6757
+杘 > chì; #6758
+杙 > yì; #6759
+杚 > gŭ; #675A
+杛 > gōng; #675B
+杜 > dù; #675C
+杝 > yí; #675D
+杞 > qĭ; #675E
+束 > shù; #675F
+杠 > gāng; #6760
+条 > tiáo; #6761
+来 > lái; #6765
+杧 > máng; #6767
+杨 > yáng; #6768
+杩 > mà; #6769
+杪 > miăo; #676A
+杫 > sì; #676B
+杬 > yuán; #676C
+杭 > háng; #676D
+杮 > fèi; #676E
+杯 > bēi; #676F
+杰 > jié; #6770
+東 > dōng; #6771
+杲 > găo; #6772
+杳 > yăo; #6773
+杴 > xiān; #6774
+杵 > chŭ; #6775
+杶 > qūn; #6776
+杷 > pá; #6777
+杸 > shū; #6778
+杹 > huà; #6779
+杺 > xīn; #677A
+杻 > chŏu; #677B
+杼 > zhù; #677C
+杽 > chŏu; #677D
+松 > sōng; #677E
+板 > băn; #677F
+枀 > sōng; #6780
+极 > jí; #6781
+枂 > yuè; #6782
+枃 > jìn; #6783
+构 > gōu; #6784
+枅 > jī; #6785
+枆 > máo; #6786
+枇 > pí; #6787
+枈 > bì; #6788
+枉 > wăng; #6789
+枊 > àng; #678A
+枋 > fāng; #678B
+枌 > fén; #678C
+枍 > yì; #678D
+枎 > fú; #678E
+枏 > nán; #678F
+析 > xī; #6790
+枑 > hù; #6791
+枒 > yá; #6792
+枓 > dŏu; #6793
+枔 > xún; #6794
+枕 > zhĕn; #6795
+枖 > yāo; #6796
+林 > lín; #6797
+枘 > rùi; #6798
+枙 > é; #6799
+枚 > méi; #679A
+枛 > zhào; #679B
+果 > gŭo; #679C
+枝 > zhī; #679D
+枞 > cōng; #679E
+枟 > yùn; #679F
+枡 > dŏu; #67A1
+枢 > shū; #67A2
+枣 > zăo; #67A3
+枥 > lì; #67A5
+枧 > jiàn; #67A7
+枨 > chéng; #67A8
+枪 > qiāng; #67AA
+枫 > fēng; #67AB
+枬 > nán; #67AC
+枭 > xiāo; #67AD
+枮 > xiān; #67AE
+枯 > kū; #67AF
+枰 > píng; #67B0
+枱 > yí; #67B1
+枲 > xĭ; #67B2
+枳 > zhī; #67B3
+枴 > guăi; #67B4
+枵 > xiāo; #67B5
+架 > jià; #67B6
+枷 > jiā; #67B7
+枸 > gŏu; #67B8
+枹 > fū; #67B9
+枺 > mò; #67BA
+枻 > yì; #67BB
+枼 > yè; #67BC
+枽 > yè; #67BD
+枾 > shì; #67BE
+枿 > niè; #67BF
+柀 > bĭ; #67C0
+柁 > dùo; #67C1
+柂 > yí; #67C2
+柃 > líng; #67C3
+柄 > bĭng; #67C4
+柅 > nĭ; #67C5
+柆 > lā; #67C6
+柇 > hé; #67C7
+柈 > pán; #67C8
+柉 > fán; #67C9
+柊 > zhōng; #67CA
+柋 > dài; #67CB
+柌 > cí; #67CC
+柍 > yāng; #67CD
+柎 > fū; #67CE
+柏 > bó; #67CF
+某 > mŏu; #67D0
+柑 > gān; #67D1
+柒 > qī; #67D2
+染 > răn; #67D3
+柔 > róu; #67D4
+柕 > mào; #67D5
+柖 > zhāo; #67D6
+柗 > sōng; #67D7
+柘 > zhè; #67D8
+柙 > xiá; #67D9
+柚 > yòu; #67DA
+柛 > shēn; #67DB
+柜 > jŭ; #67DC
+柝 > tùo; #67DD
+柞 > zùo; #67DE
+柟 > nán; #67DF
+柠 > níng; #67E0
+柡 > yŏng; #67E1
+柢 > dĭ; #67E2
+柣 > zhí; #67E3
+柤 > zhā; #67E4
+查 > chá; #67E5
+柦 > dàn; #67E6
+柧 > gū; #67E7
+柨 > pu; #67E8
+柩 > jìu; #67E9
+柪 > āo; #67EA
+柫 > fú; #67EB
+柬 > jiăn; #67EC
+柭 > bō; #67ED
+柮 > dùo; #67EE
+柯 > kē; #67EF
+柰 > nài; #67F0
+柱 > zhù; #67F1
+柲 > bì; #67F2
+柳 > lĭu; #67F3
+柴 > chái; #67F4
+柵 > zhà; #67F5
+柶 > sì; #67F6
+柷 > zhù; #67F7
+柸 > pēi; #67F8
+柹 > shì; #67F9
+柺 > guăi; #67FA
+査 > chá; #67FB
+柼 > yăo; #67FC
+柽 > jué; #67FD
+柾 > jìu; #67FE
+柿 > shì; #67FF
+栀 > zhī; #6800
+栁 > lĭu; #6801
+栂 > méi; #6802
+栄 > róng; #6804
+栅 > zhà; #6805
+标 > biāo; #6807
+栈 > zhàn; #6808
+栉 > jié; #6809
+栊 > lóng; #680A
+栋 > dòng; #680B
+栌 > lú; #680C
+栎 > lì; #680E
+栏 > lán; #680F
+栐 > yŏng; #6810
+树 > shù; #6811
+栒 > xún; #6812
+栓 > shuān; #6813
+栔 > qì; #6814
+栕 > zhēn; #6815
+栖 > qī; #6816
+栗 > lì; #6817
+栘 > yĭ; #6818
+栙 > xiáng; #6819
+栚 > zhèn; #681A
+栛 > lì; #681B
+栜 > sù; #681C
+栝 > guā; #681D
+栞 > kān; #681E
+栟 > bīng; #681F
+栠 > rĕn; #6820
+校 > xiào; #6821
+栢 > bó; #6822
+栣 > rĕn; #6823
+栤 > bìng; #6824
+栥 > zī; #6825
+栦 > chóu; #6826
+栧 > yì; #6827
+栨 > jié; #6828
+栩 > xŭ; #6829
+株 > zhū; #682A
+栫 > jiàn; #682B
+栬 > zùi; #682C
+栭 > ér; #682D
+栮 > ĕr; #682E
+栯 > yŏu; #682F
+栰 > fá; #6830
+栱 > gŏng; #6831
+栲 > kăo; #6832
+栳 > lăo; #6833
+栴 > zhān; #6834
+栵 > lì; #6835
+栶 > yin; #6836
+样 > yáng; #6837
+核 > hé; #6838
+根 > gēn; #6839
+栺 > zhĭ; #683A
+栻 > chì; #683B
+格 > gé; #683C
+栽 > zāi; #683D
+栾 > luán; #683E
+栿 > fú; #683F
+桀 > jié; #6840
+桁 > háng; #6841
+桂 > gùi; #6842
+桃 > táo; #6843
+桄 > guàng; #6844
+桅 > wéi; #6845
+框 > kuàng; #6846
+桇 > rú; #6847
+案 > àn; #6848
+桉 > àn; #6849
+桊 > juàn; #684A
+桋 > yí; #684B
+桌 > zhūo; #684C
+桍 > kū; #684D
+桎 > zhí; #684E
+桏 > qíong; #684F
+桐 > tóng; #6850
+桑 > sāng; #6851
+桒 > sāng; #6852
+桓 > huán; #6853
+桔 > jié; #6854
+桕 > jìu; #6855
+桖 > xuè; #6856
+桗 > dùo; #6857
+桘 > zhùi; #6858
+桙 > yú; #6859
+桚 > zăn; #685A
+桜 > yīng; #685C
+桟 > zhàn; #685F
+桠 > yá; #6860
+桡 > náo; #6861
+桢 > zhēn; #6862
+档 > dăng; #6863
+桤 > qī; #6864
+桥 > qiáo; #6865
+桦 > huà; #6866
+桧 > kuài; #6867
+桨 > jiăng; #6868
+桩 > zhuāng; #6869
+桪 > xún; #686A
+桫 > sūo; #686B
+桬 > shā; #686C
+桭 > zhēn; #686D
+桮 > bēi; #686E
+桯 > tīng; #686F
+桰 > guā; #6870
+桱 > jìng; #6871
+桲 > bó; #6872
+桳 > bèn; #6873
+桴 > fú; #6874
+桵 > rŭi; #6875
+桶 > tŏng; #6876
+桷 > jué; #6877
+桸 > xī; #6878
+桹 > láng; #6879
+桺 > lĭu; #687A
+桻 > fēng; #687B
+桼 > qī; #687C
+桽 > wĕn; #687D
+桾 > jūn; #687E
+桿 > găn; #687F
+梀 > cù; #6880
+梁 > liáng; #6881
+梂 > qíu; #6882
+梃 > tĭng; #6883
+梄 > yŏu; #6884
+梅 > méi; #6885
+梆 > bāng; #6886
+梇 > lòng; #6887
+梈 > pēng; #6888
+梉 > zhuāng; #6889
+梊 > dì; #688A
+梋 > xuān; #688B
+梌 > tú; #688C
+梍 > zào; #688D
+梎 > āo; #688E
+梏 > gù; #688F
+梐 > bì; #6890
+梑 > dí; #6891
+梒 > hán; #6892
+梓 > zĭ; #6893
+梔 > zhī; #6894
+梕 > rèn; #6895
+梖 > bèi; #6896
+梗 > gĕng; #6897
+梘 > jiàn; #6898
+梙 > huàn; #6899
+梚 > wăn; #689A
+梛 > núo; #689B
+梜 > jiá; #689C
+條 > tiáo; #689D
+梞 > jì; #689E
+梟 > xiāo; #689F
+梠 > lǚ; #68A0
+梡 > huán; #68A1
+梢 > shāo; #68A2
+梣 > cén; #68A3
+梤 > fén; #68A4
+梥 > sōng; #68A5
+梦 > mèng; #68A6
+梧 > wú; #68A7
+梨 > lí; #68A8
+梩 > lí; #68A9
+梪 > dòu; #68AA
+梫 > cēn; #68AB
+梬 > yĭng; #68AC
+梭 > sūo; #68AD
+梮 > jú; #68AE
+梯 > tī; #68AF
+械 > jiè; #68B0
+梱 > kŭn; #68B1
+梲 > zhúo; #68B2
+梳 > shū; #68B3
+梴 > chān; #68B4
+梵 > fàn; #68B5
+梶 > wĕi; #68B6
+梷 > jìng; #68B7
+梸 > lí; #68B8
+梹 > bīng; #68B9
+梼 > táo; #68BC
+梽 > zhì; #68BD
+梾 > lái; #68BE
+梿 > lián; #68BF
+检 > jiăn; #68C0
+棁 > zhúo; #68C1
+棂 > líng; #68C2
+棃 > lí; #68C3
+棄 > qì; #68C4
+棅 > bìng; #68C5
+棆 > zhūn; #68C6
+棇 > cōng; #68C7
+棈 > qiàn; #68C8
+棉 > mián; #68C9
+棊 > qí; #68CA
+棋 > qí; #68CB
+棌 > căi; #68CC
+棍 > gùn; #68CD
+棎 > chán; #68CE
+棏 > tè; #68CF
+棐 > fĕi; #68D0
+棑 > pái; #68D1
+棒 > bàng; #68D2
+棓 > pŏu; #68D3
+棔 > hūn; #68D4
+棕 > zōng; #68D5
+棖 > chéng; #68D6
+棗 > zăo; #68D7
+棘 > jí; #68D8
+棙 > lì; #68D9
+棚 > péng; #68DA
+棛 > yù; #68DB
+棜 > yù; #68DC
+棝 > gù; #68DD
+棞 > hún; #68DE
+棟 > dòng; #68DF
+棠 > táng; #68E0
+棡 > gāng; #68E1
+棢 > wăng; #68E2
+棣 > dì; #68E3
+棤 > xí; #68E4
+棥 > fán; #68E5
+棦 > chēng; #68E6
+棧 > zhàn; #68E7
+棨 > qĭ; #68E8
+棩 > yuān; #68E9
+棪 > yăn; #68EA
+棫 > yù; #68EB
+棬 > quān; #68EC
+棭 > yì; #68ED
+森 > sēn; #68EE
+棯 > rĕn; #68EF
+棰 > chúi; #68F0
+棱 > léng; #68F1
+棲 > qī; #68F2
+棳 > zhúo; #68F3
+棴 > fú; #68F4
+棵 > kē; #68F5
+棶 > lái; #68F6
+棷 > zōu; #68F7
+棸 > zōu; #68F8
+棹 > zhūo; #68F9
+棺 > guān; #68FA
+棻 > fén; #68FB
+棼 > fén; #68FC
+棽 > chēn; #68FD
+棾 > qíong; #68FE
+棿 > niè; #68FF
+椀 > wăn; #6900
+椁 > gŭo; #6901
+椂 > lù; #6902
+椃 > háo; #6903
+椄 > jiē; #6904
+椅 > yĭ; #6905
+椆 > chóu; #6906
+椇 > jŭ; #6907
+椈 > jú; #6908
+椉 > chéng; #6909
+椊 > zúo; #690A
+椋 > liáng; #690B
+椌 > qiāng; #690C
+植 > zhí; #690D
+椎 > zhūi; #690E
+椏 > yā; #690F
+椐 > jū; #6910
+椑 > bēi; #6911
+椒 > jiāo; #6912
+椓 > zhúo; #6913
+椔 > zī; #6914
+椕 > bīn; #6915
+椖 > péng; #6916
+椗 > dìng; #6917
+椘 > chŭ; #6918
+検 > jiăn; #691C
+椝 > gūi; #691D
+椞 > xì; #691E
+椟 > dú; #691F
+椠 > qiàn; #6920
+椤 > lúo; #6924
+椥 > zhī; #6925
+椪 > pèng; #692A
+椫 > zhăn; #692B
+椭 > tŭo; #692D
+椮 > sēn; #692E
+椯 > dúo; #692F
+椰 > yé; #6930
+椱 > fòu; #6931
+椲 > wĕi; #6932
+椳 > wēi; #6933
+椴 > duàn; #6934
+椵 > jiă; #6935
+椶 > zōng; #6936
+椷 > jiān; #6937
+椸 > yí; #6938
+椹 > shèn; #6939
+椺 > xí; #693A
+椻 > yàn; #693B
+椼 > yăn; #693C
+椽 > chuán; #693D
+椾 > zhàn; #693E
+椿 > chūn; #693F
+楀 > yŭ; #6940
+楁 > hé; #6941
+楂 > zhā; #6942
+楃 > wò; #6943
+楄 > pián; #6944
+楅 > bì; #6945
+楆 > yāo; #6946
+楇 > hùo; #6947
+楈 > xū; #6948
+楉 > rùo; #6949
+楊 > yáng; #694A
+楋 > là; #694B
+楌 > yán; #694C
+楍 > bĕn; #694D
+楎 > hún; #694E
+楏 > kúi; #694F
+楐 > jiè; #6950
+楑 > kúi; #6951
+楒 > sī; #6952
+楓 > fēng; #6953
+楔 > xiè; #6954
+楕 > tŭo; #6955
+楖 > zhì; #6956
+楗 > jiàn; #6957
+楘 > mù; #6958
+楙 > mào; #6959
+楚 > chŭ; #695A
+楛 > hù; #695B
+楜 > hú; #695C
+楝 > liàn; #695D
+楞 > léng; #695E
+楟 > tíng; #695F
+楠 > nán; #6960
+楡 > yú; #6961
+楢 > yóu; #6962
+楣 > méi; #6963
+楤 > sŏng; #6964
+楥 > xuàn; #6965
+楦 > xuàn; #6966
+楧 > yīng; #6967
+楨 > zhēn; #6968
+楩 > pián; #6969
+楪 > yè; #696A
+楫 > jí; #696B
+楬 > jié; #696C
+業 > yè; #696D
+楮 > chŭ; #696E
+楯 > shŭn; #696F
+楰 > yú; #6970
+楱 > còu; #6971
+楲 > wēi; #6972
+楳 > méi; #6973
+楴 > dì; #6974
+極 > jí; #6975
+楶 > jié; #6976
+楷 > kăi; #6977
+楸 > qīu; #6978
+楹 > yíng; #6979
+楺 > róu; #697A
+楻 > héng; #697B
+楼 > lóu; #697C
+楽 > lè; #697D
+榀 > pĭn; #6980
+概 > gài; #6982
+榃 > tán; #6983
+榄 > lăn; #6984
+榅 > yún; #6985
+榆 > yú; #6986
+榇 > chèn; #6987
+榈 > lǘ; #6988
+榉 > jŭ; #6989
+榍 > xiè; #698D
+榎 > jiă; #698E
+榏 > yì; #698F
+榐 > zhăn; #6990
+榑 > fù; #6991
+榒 > nài; #6992
+榓 > mì; #6993
+榔 > láng; #6994
+榕 > róng; #6995
+榖 > gŭ; #6996
+榗 > jiàn; #6997
+榘 > jŭ; #6998
+榙 > tă; #6999
+榚 > yăo; #699A
+榛 > zhēn; #699B
+榜 > băng; #699C
+榝 > shā; #699D
+榞 > yuán; #699E
+榟 > zĭ; #699F
+榠 > mīng; #69A0
+榡 > sù; #69A1
+榢 > jià; #69A2
+榣 > yáo; #69A3
+榤 > jié; #69A4
+榥 > huăng; #69A5
+榦 > gàn; #69A6
+榧 > fĕi; #69A7
+榨 > zhà; #69A8
+榩 > qián; #69A9
+榪 > mà; #69AA
+榫 > sŭn; #69AB
+榬 > yuán; #69AC
+榭 > xiè; #69AD
+榮 > róng; #69AE
+榯 > shí; #69AF
+榰 > zhī; #69B0
+榱 > cūi; #69B1
+榲 > yún; #69B2
+榳 > tíng; #69B3
+榴 > líu; #69B4
+榵 > róng; #69B5
+榶 > táng; #69B6
+榷 > què; #69B7
+榸 > zhāi; #69B8
+榹 > sī; #69B9
+榺 > shèng; #69BA
+榻 > tà; #69BB
+榼 > kè; #69BC
+榽 > xī; #69BD
+榾 > gù; #69BE
+榿 > qī; #69BF
+槀 > kăo; #69C0
+槁 > găo; #69C1
+槂 > sūn; #69C2
+槃 > pán; #69C3
+槄 > tāo; #69C4
+槅 > gé; #69C5
+槆 > xún; #69C6
+槇 > diān; #69C7
+槈 > nòu; #69C8
+槉 > jí; #69C9
+槊 > shùo; #69CA
+構 > gòu; #69CB
+槌 > chúi; #69CC
+槍 > qiāng; #69CD
+槎 > chā; #69CE
+槏 > qiăn; #69CF
+槐 > huái; #69D0
+槑 > méi; #69D1
+槒 > xù; #69D2
+槓 > gàng; #69D3
+槔 > gāo; #69D4
+槕 > zhúo; #69D5
+槖 > tùo; #69D6
+様 > yàng; #69D8
+槙 > diān; #69D9
+槚 > jiă; #69DA
+槛 > jiàn; #69DB
+槜 > zùi; #69DC
+槟 > bīn; #69DF
+槠 > zhū; #69E0
+槢 > xí; #69E2
+槣 > qĭ; #69E3
+槤 > lián; #69E4
+槥 > hùi; #69E5
+槦 > yóng; #69E6
+槧 > qiàn; #69E7
+槨 > gŭo; #69E8
+槩 > gài; #69E9
+槪 > gài; #69EA
+槫 > tuán; #69EB
+槬 > huà; #69EC
+槭 > cù; #69ED
+槮 > sēn; #69EE
+槯 > cūi; #69EF
+槰 > bèng; #69F0
+槱 > yŏu; #69F1
+槲 > hú; #69F2
+槳 > jiăng; #69F3
+槴 > hù; #69F4
+槵 > huàn; #69F5
+槶 > kùi; #69F6
+槷 > yì; #69F7
+槸 > niè; #69F8
+槹 > gāo; #69F9
+槺 > kāng; #69FA
+槻 > gūi; #69FB
+槼 > gūi; #69FC
+槽 > cáo; #69FD
+槾 > mán; #69FE
+槿 > jĭn; #69FF
+樀 > dì; #6A00
+樁 > zhuāng; #6A01
+樂 > lè; #6A02
+樃 > láng; #6A03
+樄 > chén; #6A04
+樅 > cōng; #6A05
+樆 > lí; #6A06
+樇 > xīu; #6A07
+樈 > qíng; #6A08
+樉 > shuăng; #6A09
+樊 > fán; #6A0A
+樋 > tōng; #6A0B
+樌 > guàn; #6A0C
+樍 > jī; #6A0D
+樎 > sūo; #6A0E
+樏 > lĕi; #6A0F
+樐 > lŭ; #6A10
+樑 > liáng; #6A11
+樒 > mì; #6A12
+樓 > lóu; #6A13
+樔 > cháo; #6A14
+樕 > sù; #6A15
+樖 > kē; #6A16
+樗 > shū; #6A17
+樘 > táng; #6A18
+標 > biāo; #6A19
+樚 > lù; #6A1A
+樛 > jīu; #6A1B
+樜 > shù; #6A1C
+樝 > zhā; #6A1D
+樞 > shū; #6A1E
+樟 > zhāng; #6A1F
+樠 > mén; #6A20
+模 > mó; #6A21
+樢 > niăo; #6A22
+樣 > yàng; #6A23
+樤 > tiáo; #6A24
+樥 > péng; #6A25
+樦 > zhù; #6A26
+樧 > shā; #6A27
+樨 > xī; #6A28
+権 > quán; #6A29
+横 > héng; #6A2A
+樫 > jiān; #6A2B
+樬 > cōng; #6A2C
+樯 > qiáng; #6A2F
+樱 > yīng; #6A31
+樲 > èr; #6A32
+樳 > xín; #6A33
+樴 > zhí; #6A34
+樵 > qiáo; #6A35
+樶 > zūi; #6A36
+樷 > cōng; #6A37
+樸 > pú; #6A38
+樹 > shù; #6A39
+樺 > huà; #6A3A
+樻 > kùi; #6A3B
+樼 > zhēn; #6A3C
+樽 > zūn; #6A3D
+樾 > yuè; #6A3E
+樿 > zhăn; #6A3F
+橀 > xī; #6A40
+橁 > xún; #6A41
+橂 > diàn; #6A42
+橃 > fā; #6A43
+橄 > găn; #6A44
+橅 > mó; #6A45
+橆 > wŭ; #6A46
+橇 > qiāo; #6A47
+橈 > náo; #6A48
+橉 > lìn; #6A49
+橊 > líu; #6A4A
+橋 > qiáo; #6A4B
+橌 > xiàn; #6A4C
+橍 > rùn; #6A4D
+橎 > fán; #6A4E
+橏 > zhăn; #6A4F
+橐 > tùo; #6A50
+橑 > lăo; #6A51
+橒 > yún; #6A52
+橓 > shùn; #6A53
+橔 > túi; #6A54
+橕 > chēng; #6A55
+橖 > táng; #6A56
+橗 > méng; #6A57
+橘 > jú; #6A58
+橙 > chéng; #6A59
+橚 > sù; #6A5A
+橛 > jué; #6A5B
+橜 > jué; #6A5C
+橝 > tān; #6A5D
+橞 > hùi; #6A5E
+機 > jī; #6A5F
+橠 > nŭo; #6A60
+橡 > xiàng; #6A61
+橢 > tŭo; #6A62
+橣 > nĭng; #6A63
+橤 > rŭi; #6A64
+橥 > zhū; #6A65
+橦 > chuáng; #6A66
+橧 > zēng; #6A67
+橨 > fén; #6A68
+橩 > qíong; #6A69
+橪 > răn; #6A6A
+橫 > héng; #6A6B
+橬 > cén; #6A6C
+橭 > gū; #6A6D
+橮 > lĭu; #6A6E
+橯 > lào; #6A6F
+橰 > gāo; #6A70
+橱 > chú; #6A71
+橶 > jí; #6A76
+橷 > dōu; #6A77
+橹 > lŭ; #6A79
+橼 > yuán; #6A7C
+橽 > tà; #6A7D
+橾 > shū; #6A7E
+橿 > jiāng; #6A7F
+檀 > tán; #6A80
+檁 > lĭn; #6A81
+檂 > nóng; #6A82
+檃 > yĭn; #6A83
+檄 > xí; #6A84
+檅 > sùi; #6A85
+檆 > shān; #6A86
+檇 > zùi; #6A87
+檈 > xuán; #6A88
+檉 > chēng; #6A89
+檊 > gàn; #6A8A
+檋 > jū; #6A8B
+檌 > zùi; #6A8C
+檍 > yì; #6A8D
+檎 > qín; #6A8E
+檏 > pŭ; #6A8F
+檐 > yán; #6A90
+檑 > léi; #6A91
+檒 > fēng; #6A92
+檓 > hŭi; #6A93
+檔 > dăng; #6A94
+檕 > jì; #6A95
+檖 > sùi; #6A96
+檗 > bò; #6A97
+檘 > bì; #6A98
+檙 > dĭng; #6A99
+檚 > chŭ; #6A9A
+檛 > zhuā; #6A9B
+檜 > kuài; #6A9C
+檝 > jí; #6A9D
+檞 > jiĕ; #6A9E
+檟 > jiă; #6A9F
+檠 > qíng; #6AA0
+檡 > zhè; #6AA1
+檢 > jiăn; #6AA2
+檣 > qiáng; #6AA3
+檤 > dào; #6AA4
+檥 > yĭ; #6AA5
+檦 > biăo; #6AA6
+檧 > sōng; #6AA7
+檨 > shē; #6AA8
+檩 > lĭn; #6AA9
+檫 > chá; #6AAB
+檬 > méng; #6AAC
+檭 > yín; #6AAD
+檮 > táo; #6AAE
+檯 > tái; #6AAF
+檰 > mián; #6AB0
+檱 > qí; #6AB1
+檲 > tóan; #6AB2
+檳 > bīn; #6AB3
+檴 > hùo; #6AB4
+檵 > jì; #6AB5
+檶 > qiān; #6AB6
+檷 > mí; #6AB7
+檸 > níng; #6AB8
+檹 > yī; #6AB9
+檺 > găo; #6ABA
+檻 > jiàn; #6ABB
+檼 > yìn; #6ABC
+檽 > ér; #6ABD
+檾 > qĭng; #6ABE
+檿 > yăn; #6ABF
+櫀 > qí; #6AC0
+櫁 > mì; #6AC1
+櫂 > zhào; #6AC2
+櫃 > gùi; #6AC3
+櫄 > chūn; #6AC4
+櫅 > jī; #6AC5
+櫆 > kúi; #6AC6
+櫇 > pó; #6AC7
+櫈 > dèng; #6AC8
+櫉 > chú; #6AC9
+櫋 > mián; #6ACB
+櫌 > yōu; #6ACC
+櫍 > zhì; #6ACD
+櫎 > guàng; #6ACE
+櫏 > qiān; #6ACF
+櫐 > lĕi; #6AD0
+櫑 > lĕi; #6AD1
+櫒 > sà; #6AD2
+櫓 > lŭ; #6AD3
+櫔 > lì; #6AD4
+櫕 > cuán; #6AD5
+櫖 > lǘ; #6AD6
+櫗 > miè; #6AD7
+櫘 > hùi; #6AD8
+櫙 > ōu; #6AD9
+櫚 > lǘ; #6ADA
+櫛 > jié; #6ADB
+櫜 > gāo; #6ADC
+櫝 > dú; #6ADD
+櫞 > yuán; #6ADE
+櫟 > lì; #6ADF
+櫠 > fèi; #6AE0
+櫡 > zhúo; #6AE1
+櫢 > sŏu; #6AE2
+櫣 > lián; #6AE3
+櫥 > chú; #6AE5
+櫧 > zhū; #6AE7
+櫨 > lú; #6AE8
+櫩 > yán; #6AE9
+櫪 > lì; #6AEA
+櫫 > zhū; #6AEB
+櫬 > chèn; #6AEC
+櫭 > jié; #6AED
+櫮 > è; #6AEE
+櫯 > sū; #6AEF
+櫰 > huái; #6AF0
+櫱 > niè; #6AF1
+櫲 > yù; #6AF2
+櫳 > lóng; #6AF3
+櫴 > lài; #6AF4
+櫶 > xiăn; #6AF6
+櫸 > jŭ; #6AF8
+櫹 > xiāo; #6AF9
+櫺 > líng; #6AFA
+櫻 > yīng; #6AFB
+櫼 > jiān; #6AFC
+櫽 > yĭn; #6AFD
+櫾 > yóu; #6AFE
+櫿 > yíng; #6AFF
+欀 > xiāng; #6B00
+欁 > nóng; #6B01
+欂 > bó; #6B02
+欃 > chán; #6B03
+欄 > lán; #6B04
+欅 > jŭ; #6B05
+欆 > shuāng; #6B06
+欇 > shè; #6B07
+欈 > wéi; #6B08
+欉 > còng; #6B09
+權 > quán; #6B0A
+欋 > qú; #6B0B
+欎 > yù; #6B0E
+欏 > lúo; #6B0F
+欐 > lĭ; #6B10
+欑 > zàn; #6B11
+欒 > luán; #6B12
+欓 > dăng; #6B13
+欔 > jué; #6B14
+欖 > lăn; #6B16
+欗 > lán; #6B17
+欘 > zhŭ; #6B18
+欙 > léi; #6B19
+欚 > lĭ; #6B1A
+欛 > bà; #6B1B
+欜 > náng; #6B1C
+欝 > yù; #6B1D
+欞 > líng; #6B1E
+欠 > qiàn; #6B20
+次 > cì; #6B21
+欢 > huān; #6B22
+欣 > xīn; #6B23
+欤 > yú; #6B24
+欥 > yù; #6B25
+欦 > qiān; #6B26
+欧 > ōu; #6B27
+欨 > xū; #6B28
+欩 > chāo; #6B29
+欪 > chù; #6B2A
+欫 > chī; #6B2B
+欬 > kài; #6B2C
+欭 > yì; #6B2D
+欮 > jué; #6B2E
+欯 > xí; #6B2F
+欰 > xū; #6B30
+欱 > xià; #6B31
+欲 > yù; #6B32
+欳 > kuài; #6B33
+欴 > láng; #6B34
+欵 > kuăn; #6B35
+欶 > shùo; #6B36
+欷 > xī; #6B37
+欸 > ăi; #6B38
+欹 > yī; #6B39
+欺 > qī; #6B3A
+欻 > hū; #6B3B
+欼 > chĭ; #6B3C
+欽 > qīn; #6B3D
+款 > kuăn; #6B3E
+欿 > kăn; #6B3F
+歀 > kuăn; #6B40
+歁 > kăn; #6B41
+歂 > chuán; #6B42
+歃 > shà; #6B43
+歄 > gua; #6B44
+歅 > yīn; #6B45
+歆 > xīn; #6B46
+歇 > xiē; #6B47
+歈 > yú; #6B48
+歉 > qiàn; #6B49
+歊 > xiāo; #6B4A
+歋 > yí; #6B4B
+歌 > gē; #6B4C
+歍 > wū; #6B4D
+歎 > tàn; #6B4E
+歏 > jìn; #6B4F
+歐 > ōu; #6B50
+歑 > hū; #6B51
+歒 > tì; #6B52
+歓 > huān; #6B53
+歔 > xū; #6B54
+歕 > pèn; #6B55
+歖 > xī; #6B56
+歗 > xiào; #6B57
+歘 > xū; #6B58
+歙 > xì; #6B59
+歛 > liàn; #6B5B
+歜 > chù; #6B5C
+歝 > yì; #6B5D
+歞 > kăn; #6B5E
+歟 > yú; #6B5F
+歠 > chùo; #6B60
+歡 > huān; #6B61
+止 > zhĭ; #6B62
+正 > zhèng; #6B63
+此 > cĭ; #6B64
+步 > bù; #6B65
+武 > wŭ; #6B66
+歧 > qí; #6B67
+歨 > bù; #6B68
+歩 > bù; #6B69
+歪 > wāi; #6B6A
+歫 > jù; #6B6B
+歬 > qián; #6B6C
+歭 > chí; #6B6D
+歮 > sè; #6B6E
+歯 > chĭ; #6B6F
+歰 > sè; #6B70
+歱 > zhŏng; #6B71
+歲 > sùi; #6B72
+歳 > sùi; #6B73
+歴 > lì; #6B74
+歵 > cùo; #6B75
+歶 > yú; #6B76
+歷 > lì; #6B77
+歸 > gūi; #6B78
+歹 > dăi; #6B79
+歺 > dăi; #6B7A
+死 > sĭ; #6B7B
+歼 > jiān; #6B7C
+歽 > zhé; #6B7D
+歾 > mò; #6B7E
+歿 > mò; #6B7F
+殀 > yăo; #6B80
+殁 > mò; #6B81
+殂 > cú; #6B82
+殃 > yāng; #6B83
+殄 > tiăn; #6B84
+殅 > shēng; #6B85
+殆 > dài; #6B86
+殇 > shāng; #6B87
+殈 > xù; #6B88
+殉 > xùn; #6B89
+殊 > shū; #6B8A
+残 > cán; #6B8B
+殌 > jué; #6B8C
+殍 > piăo; #6B8D
+殎 > qià; #6B8E
+殏 > qìu; #6B8F
+殐 > sù; #6B90
+殑 > qíng; #6B91
+殒 > yŭn; #6B92
+殓 > liàn; #6B93
+殔 > yì; #6B94
+殕 > fŏu; #6B95
+殖 > zhí; #6B96
+殗 > yè; #6B97
+殘 > cán; #6B98
+殙 > hūn; #6B99
+殚 > dān; #6B9A
+殛 > jí; #6B9B
+殜 > yè; #6B9C
+殝 > zhen; #6B9D
+殞 > yŭn; #6B9E
+殟 > wēn; #6B9F
+殠 > chòu; #6BA0
+殡 > bìn; #6BA1
+殢 > tì; #6BA2
+殣 > jĭn; #6BA3
+殤 > shāng; #6BA4
+殥 > yín; #6BA5
+殦 > diāo; #6BA6
+殧 > cù; #6BA7
+殨 > hùi; #6BA8
+殩 > cuàn; #6BA9
+殪 > yì; #6BAA
+殫 > dān; #6BAB
+殬 > dù; #6BAC
+殭 > jiāng; #6BAD
+殮 > liàn; #6BAE
+殯 > bìn; #6BAF
+殰 > dú; #6BB0
+殲 > jiān; #6BB2
+殳 > shū; #6BB3
+殴 > ōu; #6BB4
+段 > duàn; #6BB5
+殶 > zhù; #6BB6
+殷 > yīn; #6BB7
+殸 > qìng; #6BB8
+殹 > yì; #6BB9
+殺 > shā; #6BBA
+殻 > què; #6BBB
+殼 > ké; #6BBC
+殽 > yáo; #6BBD
+殾 > jùn; #6BBE
+殿 > diàn; #6BBF
+毀 > hŭi; #6BC0
+毁 > hŭi; #6BC1
+毂 > gŭ; #6BC2
+毃 > què; #6BC3
+毄 > jī; #6BC4
+毅 > yì; #6BC5
+毆 > ōu; #6BC6
+毇 > hŭi; #6BC7
+毈 > duàn; #6BC8
+毉 > yī; #6BC9
+毊 > xiāo; #6BCA
+毋 > wú; #6BCB
+毌 > guàn; #6BCC
+母 > mŭ; #6BCD
+毎 > mĕi; #6BCE
+每 > mĕi; #6BCF
+毐 > ăi; #6BD0
+毑 > zŭo; #6BD1
+毒 > dú; #6BD2
+毓 > yù; #6BD3
+比 > bĭ; #6BD4
+毕 > bì; #6BD5
+毖 > bì; #6BD6
+毗 > pí; #6BD7
+毘 > pí; #6BD8
+毙 > bì; #6BD9
+毚 > chán; #6BDA
+毛 > máo; #6BDB
+毞 > pú; #6BDE
+毠 > jiā; #6BE0
+毡 > zhān; #6BE1
+毢 > sāi; #6BE2
+毣 > mù; #6BE3
+毤 > tùo; #6BE4
+毥 > xún; #6BE5
+毦 > èr; #6BE6
+毧 > róng; #6BE7
+毨 > xiăn; #6BE8
+毩 > jú; #6BE9
+毪 > mú; #6BEA
+毫 > háo; #6BEB
+毬 > qíu; #6BEC
+毭 > dòu; #6BED
+毯 > tăn; #6BEF
+毰 > péi; #6BF0
+毱 > jú; #6BF1
+毲 > dúo; #6BF2
+毳 > cùi; #6BF3
+毴 > bī; #6BF4
+毵 > sān; #6BF5
+毷 > mào; #6BF7
+毸 > sūi; #6BF8
+毹 > yū; #6BF9
+毺 > yū; #6BFA
+毻 > tùo; #6BFB
+毼 > hé; #6BFC
+毽 > jiàn; #6BFD
+毾 > tà; #6BFE
+毿 > sān; #6BFF
+氀 > lǘ; #6C00
+氁 > mú; #6C01
+氂 > lí; #6C02
+氃 > tóng; #6C03
+氄 > rŏng; #6C04
+氅 > chăng; #6C05
+氆 > pŭ; #6C06
+氇 > lúo; #6C07
+氈 > zhān; #6C08
+氉 > sào; #6C09
+氊 > zhān; #6C0A
+氋 > méng; #6C0B
+氌 > lúo; #6C0C
+氍 > qú; #6C0D
+氎 > dié; #6C0E
+氏 > shì; #6C0F
+氐 > dĭ; #6C10
+民 > mín; #6C11
+氒 > jué; #6C12
+氓 > máng; #6C13
+气 > qì; #6C14
+氕 > piē; #6C15
+氖 > năi; #6C16
+気 > qì; #6C17
+氘 > dāo; #6C18
+氙 > xiān; #6C19
+氚 > chuān; #6C1A
+氛 > fēn; #6C1B
+氜 > rì; #6C1C
+氝 > nèi; #6C1D
+氟 > fú; #6C1F
+氠 > shēn; #6C20
+氡 > dōng; #6C21
+氢 > qīng; #6C22
+氣 > qì; #6C23
+氤 > yīn; #6C24
+氥 > xī; #6C25
+氦 > hài; #6C26
+氧 > yăng; #6C27
+氨 > ān; #6C28
+氩 > yà; #6C29
+氪 > kè; #6C2A
+氫 > qīng; #6C2B
+氬 > yà; #6C2C
+氭 > dōng; #6C2D
+氮 > dàn; #6C2E
+氯 > lǜ; #6C2F
+氰 > qīng; #6C30
+氱 > yăng; #6C31
+氲 > yūn; #6C32
+氳 > yūn; #6C33
+水 > shŭi; #6C34
+氵 > sān' 'diăn' 'shŭi; #6C35
+氶 > zhĕng; #6C36
+氷 > bīng; #6C37
+永 > yŏng; #6C38
+氹 > dàng; #6C39
+氻 > lè; #6C3B
+氼 > nì; #6C3C
+氽 > tŭn; #6C3D
+氾 > fàn; #6C3E
+氿 > gŭi; #6C3F
+汀 > tīng; #6C40
+汁 > zhī; #6C41
+求 > qíu; #6C42
+汃 > bīn; #6C43
+汄 > zè; #6C44
+汅 > miăn; #6C45
+汆 > cuān; #6C46
+汇 > hùi; #6C47
+汈 > diāo; #6C48
+汉 > yì; #6C49
+汊 > chà; #6C4A
+汋 > zhúo; #6C4B
+汌 > chuàn; #6C4C
+汍 > wán; #6C4D
+汎 > fàn; #6C4E
+汏 > dài; #6C4F
+汐 > xì; #6C50
+汑 > tūo; #6C51
+汒 > máng; #6C52
+汓 > qíu; #6C53
+汔 > qì; #6C54
+汕 > shàn; #6C55
+汖 > pài; #6C56
+汗 > hàn; #6C57
+汘 > qiān; #6C58
+汙 > wū; #6C59
+汚 > wū; #6C5A
+汛 > xùn; #6C5B
+汜 > sì; #6C5C
+汝 > rŭ; #6C5D
+汞 > gŏng; #6C5E
+江 > jiāng; #6C5F
+池 > chí; #6C60
+污 > wū; #6C61
+汤 > tāng; #6C64
+汥 > zhī; #6C65
+汦 > chí; #6C66
+汧 > qiān; #6C67
+汨 > mì; #6C68
+汩 > yù; #6C69
+汪 > wāng; #6C6A
+汫 > qìng; #6C6B
+汬 > jĭng; #6C6C
+汭 > rùi; #6C6D
+汮 > jūn; #6C6E
+汯 > hóng; #6C6F
+汰 > tài; #6C70
+汱 > quăn; #6C71
+汲 > jí; #6C72
+汳 > biàn; #6C73
+汴 > biàn; #6C74
+汵 > gàn; #6C75
+汶 > wèn; #6C76
+汷 > zhōng; #6C77
+汸 > fāng; #6C78
+汹 > xīong; #6C79
+決 > jué; #6C7A
+汻 > hăng; #6C7B
+汼 > niōu; #6C7C
+汽 > qì; #6C7D
+汾 > fén; #6C7E
+汿 > xù; #6C7F
+沀 > xù; #6C80
+沁 > qìn; #6C81
+沂 > yí; #6C82
+沃 > wò; #6C83
+沄 > yún; #6C84
+沅 > yuán; #6C85
+沆 > háng; #6C86
+沇 > yăn; #6C87
+沈 > chén; #6C88
+沉 > chén; #6C89
+沊 > dàn; #6C8A
+沋 > yóu; #6C8B
+沌 > dùn; #6C8C
+沍 > hù; #6C8D
+沎 > hùo; #6C8E
+沏 > qiē; #6C8F
+沐 > mù; #6C90
+沑 > róu; #6C91
+沒 > méi; #6C92
+沓 > tà; #6C93
+沔 > miăn; #6C94
+沕 > wù; #6C95
+沖 > chōng; #6C96
+沗 > tiān; #6C97
+沘 > bĭ; #6C98
+沙 > shā; #6C99
+沚 > zhĭ; #6C9A
+沛 > pèi; #6C9B
+沜 > pàn; #6C9C
+沝 > zhŭi; #6C9D
+沞 > zā; #6C9E
+沟 > gōu; #6C9F
+沠 > líu; #6CA0
+没 > méi; #6CA1
+沢 > zé; #6CA2
+沣 > fēng; #6CA3
+沤 > òu; #6CA4
+沥 > lì; #6CA5
+沦 > lún; #6CA6
+沧 > cāng; #6CA7
+沨 > féng; #6CA8
+沩 > wéi; #6CA9
+沪 > hù; #6CAA
+沫 > mò; #6CAB
+沬 > mèi; #6CAC
+沭 > shù; #6CAD
+沮 > jū; #6CAE
+沯 > zăn; #6CAF
+沰 > tūo; #6CB0
+沱 > túo; #6CB1
+沲 > túo; #6CB2
+河 > hé; #6CB3
+沴 > lì; #6CB4
+沵 > mĭ; #6CB5
+沶 > yí; #6CB6
+沷 > fā; #6CB7
+沸 > fèi; #6CB8
+油 > yóu; #6CB9
+沺 > tián; #6CBA
+治 > zhì; #6CBB
+沼 > zhăo; #6CBC
+沽 > gū; #6CBD
+沾 > zhān; #6CBE
+沿 > yán; #6CBF
+泀 > sī; #6CC0
+況 > kuàng; #6CC1
+泂 > jĭong; #6CC2
+泃 > jù; #6CC3
+泄 > xiè; #6CC4
+泅 > qíu; #6CC5
+泆 > yī; #6CC6
+泇 > jiā; #6CC7
+泈 > zhōng; #6CC8
+泉 > quán; #6CC9
+泊 > bó; #6CCA
+泋 > hùi; #6CCB
+泌 > mì; #6CCC
+泍 > bēn; #6CCD
+泎 > zhúo; #6CCE
+泏 > chù; #6CCF
+泐 > lè; #6CD0
+泑 > yŏu; #6CD1
+泒 > gū; #6CD2
+泓 > hóng; #6CD3
+泔 > gān; #6CD4
+法 > fă; #6CD5
+泖 > măo; #6CD6
+泗 > sì; #6CD7
+泘 > hū; #6CD8
+泙 > píng; #6CD9
+泚 > cĭ; #6CDA
+泛 > fàn; #6CDB
+泜 > chí; #6CDC
+泝 > sù; #6CDD
+泞 > nìng; #6CDE
+泟 > chēng; #6CDF
+泠 > líng; #6CE0
+泡 > pào; #6CE1
+波 > bō; #6CE2
+泣 > qì; #6CE3
+泤 > sì; #6CE4
+泥 > ní; #6CE5
+泦 > jú; #6CE6
+泧 > yuè; #6CE7
+注 > zhù; #6CE8
+泩 > shēng; #6CE9
+泪 > lèi; #6CEA
+泫 > xuàn; #6CEB
+泬 > xuè; #6CEC
+泭 > fū; #6CED
+泮 > pàn; #6CEE
+泯 > mĭn; #6CEF
+泰 > tài; #6CF0
+泱 > yāng; #6CF1
+泲 > jĭ; #6CF2
+泳 > yŏng; #6CF3
+泴 > guàn; #6CF4
+泵 > bèng; #6CF5
+泶 > xué; #6CF6
+泷 > lóng; #6CF7
+泸 > lú; #6CF8
+泺 > bó; #6CFA
+泻 > xiè; #6CFB
+泼 > pō; #6CFC
+泽 > zé; #6CFD
+泾 > jīng; #6CFE
+泿 > yín; #6CFF
+洀 > zhōu; #6D00
+洁 > jí; #6D01
+洂 > yì; #6D02
+洃 > hūi; #6D03
+洄 > húi; #6D04
+洅 > zŭi; #6D05
+洆 > chéng; #6D06
+洇 > yīn; #6D07
+洈 > wéi; #6D08
+洉 > hòu; #6D09
+洊 > jiàn; #6D0A
+洋 > yáng; #6D0B
+洌 > liè; #6D0C
+洍 > sì; #6D0D
+洎 > jì; #6D0E
+洏 > ér; #6D0F
+洐 > xíng; #6D10
+洑 > fú; #6D11
+洒 > să; #6D12
+洓 > sŭo; #6D13
+洔 > zhĭ; #6D14
+洕 > yīn; #6D15
+洖 > wú; #6D16
+洗 > xĭ; #6D17
+洘 > kăo; #6D18
+洙 > zhū; #6D19
+洚 > jiàng; #6D1A
+洛 > lùo; #6D1B
+洝 > àn; #6D1D
+洞 > dòng; #6D1E
+洟 > yí; #6D1F
+洠 > móu; #6D20
+洡 > lĕi; #6D21
+洢 > yī; #6D22
+洣 > mĭ; #6D23
+洤 > quán; #6D24
+津 > jīn; #6D25
+洦 > mò; #6D26
+洧 > wĕi; #6D27
+洨 > xiáo; #6D28
+洩 > xiè; #6D29
+洪 > hóng; #6D2A
+洫 > xù; #6D2B
+洬 > shùo; #6D2C
+洭 > kuāng; #6D2D
+洮 > tāo; #6D2E
+洯 > qiè; #6D2F
+洰 > jù; #6D30
+洱 > ĕr; #6D31
+洲 > zhōu; #6D32
+洳 > rù; #6D33
+洴 > píng; #6D34
+洵 > xún; #6D35
+洶 > xīong; #6D36
+洷 > zhì; #6D37
+洸 > guāng; #6D38
+洹 > huán; #6D39
+洺 > míng; #6D3A
+活 > húo; #6D3B
+洼 > wā; #6D3C
+洽 > qià; #6D3D
+派 > pài; #6D3E
+洿 > wū; #6D3F
+浀 > qŭ; #6D40
+流 > líu; #6D41
+浂 > yì; #6D42
+浃 > jiá; #6D43
+浄 > jìng; #6D44
+浅 > qiăn; #6D45
+浆 > jiāng; #6D46
+浇 > jiāo; #6D47
+浈 > chéng; #6D48
+浉 > shī; #6D49
+浊 > zhúo; #6D4A
+测 > cè; #6D4B
+浍 > kuài; #6D4D
+济 > jì; #6D4E
+浏 > líu; #6D4F
+浐 > chăn; #6D50
+浑 > hún; #6D51
+浒 > hŭ; #6D52
+浓 > nóng; #6D53
+浔 > xún; #6D54
+浕 > jìn; #6D55
+浖 > liè; #6D56
+浗 > qíu; #6D57
+浘 > wĕi; #6D58
+浙 > zhè; #6D59
+浚 > jùn; #6D5A
+浛 > hàn; #6D5B
+浜 > bāng; #6D5C
+浝 > máng; #6D5D
+浞 > zhúo; #6D5E
+浟 > yóu; #6D5F
+浠 > xī; #6D60
+浡 > bó; #6D61
+浢 > dòu; #6D62
+浣 > wăn; #6D63
+浤 > hóng; #6D64
+浥 > yì; #6D65
+浦 > pŭ; #6D66
+浧 > yĭng; #6D67
+浨 > lăn; #6D68
+浩 > hào; #6D69
+浪 > làng; #6D6A
+浫 > hăn; #6D6B
+浬 > lĭ; #6D6C
+浭 > gēng; #6D6D
+浮 > fú; #6D6E
+浯 > wú; #6D6F
+浰 > liàn; #6D70
+浱 > chún; #6D71
+浲 > féng; #6D72
+浳 > yì; #6D73
+浴 > yù; #6D74
+浵 > tóng; #6D75
+浶 > láo; #6D76
+海 > hăi; #6D77
+浸 > jìn; #6D78
+浹 > jiá; #6D79
+浺 > chōng; #6D7A
+浻 > wĕng; #6D7B
+浼 > mĕi; #6D7C
+浽 > sūi; #6D7D
+浾 > chēng; #6D7E
+浿 > pèi; #6D7F
+涀 > xiàn; #6D80
+涁 > shèn; #6D81
+涂 > tú; #6D82
+涃 > kùn; #6D83
+涄 > pīn; #6D84
+涅 > niè; #6D85
+涆 > hàn; #6D86
+涇 > jīng; #6D87
+消 > xiāo; #6D88
+涉 > shè; #6D89
+涊 > niàn; #6D8A
+涋 > tū; #6D8B
+涌 > yŏng; #6D8C
+涍 > xiào; #6D8D
+涎 > xián; #6D8E
+涏 > tĭng; #6D8F
+涐 > é; #6D90
+涑 > sù; #6D91
+涒 > tūn; #6D92
+涓 > juān; #6D93
+涔 > cén; #6D94
+涕 > tì; #6D95
+涖 > lì; #6D96
+涗 > shùi; #6D97
+涘 > sì; #6D98
+涙 > lèi; #6D99
+涚 > shùi; #6D9A
+涛 > tāo; #6D9B
+涜 > dú; #6D9C
+涝 > lào; #6D9D
+涞 > lái; #6D9E
+涟 > lián; #6D9F
+涠 > wéi; #6DA0
+涡 > wō; #6DA1
+涢 > yún; #6DA2
+涣 > huàn; #6DA3
+涤 > dí; #6DA4
+润 > rùn; #6DA6
+涧 > jiàn; #6DA7
+涨 > zhăng; #6DA8
+涩 > sè; #6DA9
+涪 > fú; #6DAA
+涫 > guàn; #6DAB
+涬 > xìng; #6DAC
+涭 > shòu; #6DAD
+涮 > shuàn; #6DAE
+涯 > yá; #6DAF
+涰 > chùo; #6DB0
+涱 > zhàng; #6DB1
+液 > yè; #6DB2
+涳 > kōng; #6DB3
+涴 > wò; #6DB4
+涵 > hán; #6DB5
+涶 > tūo; #6DB6
+涷 > dōng; #6DB7
+涸 > hé; #6DB8
+涹 > wō; #6DB9
+涺 > jū; #6DBA
+涻 > gàn; #6DBB
+涼 > liáng; #6DBC
+涽 > hūn; #6DBD
+涾 > tà; #6DBE
+涿 > zhúo; #6DBF
+淀 > diàn; #6DC0
+淁 > qiè; #6DC1
+淂 > dé; #6DC2
+淃 > juàn; #6DC3
+淄 > zī; #6DC4
+淅 > xī; #6DC5
+淆 > yáo; #6DC6
+淇 > qí; #6DC7
+淈 > gŭ; #6DC8
+淉 > gŭo; #6DC9
+淊 > hàn; #6DCA
+淋 > lín; #6DCB
+淌 > tăng; #6DCC
+淍 > zhōu; #6DCD
+淎 > pĕng; #6DCE
+淏 > hào; #6DCF
+淐 > chāng; #6DD0
+淑 > shú; #6DD1
+淒 > qī; #6DD2
+淓 > fāng; #6DD3
+淔 > chì; #6DD4
+淕 > lù; #6DD5
+淖 > nào; #6DD6
+淗 > jú; #6DD7
+淘 > táo; #6DD8
+淙 > cóng; #6DD9
+淚 > lèi; #6DDA
+淛 > zhì; #6DDB
+淜 > péng; #6DDC
+淝 > féi; #6DDD
+淞 > sōng; #6DDE
+淟 > tiăn; #6DDF
+淠 > pì; #6DE0
+淡 > dàn; #6DE1
+淢 > yù; #6DE2
+淣 > ní; #6DE3
+淤 > yū; #6DE4
+淥 > lù; #6DE5
+淦 > gàn; #6DE6
+淧 > mì; #6DE7
+淨 > jìng; #6DE8
+淩 > líng; #6DE9
+淪 > lún; #6DEA
+淫 > yín; #6DEB
+淬 > cùi; #6DEC
+淭 > qú; #6DED
+淮 > huái; #6DEE
+淯 > yù; #6DEF
+淰 > niàn; #6DF0
+深 > shēn; #6DF1
+淲 > piáo; #6DF2
+淳 > chún; #6DF3
+淴 > wà; #6DF4
+淵 > yuān; #6DF5
+淶 > lái; #6DF6
+混 > hŭn; #6DF7
+淸 > qīng; #6DF8
+淹 > yān; #6DF9
+淺 > qiăn; #6DFA
+添 > tiān; #6DFB
+淼 > miăo; #6DFC
+淽 > zhĭ; #6DFD
+淾 > yĭn; #6DFE
+淿 > mì; #6DFF
+渀 > bēn; #6E00
+渁 > yuān; #6E01
+渂 > wèn; #6E02
+渃 > rè; #6E03
+渄 > fēi; #6E04
+清 > qīng; #6E05
+渆 > yuān; #6E06
+渇 > kĕ; #6E07
+済 > jì; #6E08
+渉 > shè; #6E09
+渊 > yuān; #6E0A
+渌 > lù; #6E0C
+渍 > zì; #6E0D
+渎 > dú; #6E0E
+渐 > jiàn; #6E10
+渑 > mĭn; #6E11
+渒 > pì; #6E12
+渔 > yú; #6E14
+渕 > yuān; #6E15
+渖 > shĕn; #6E16
+渗 > shèn; #6E17
+渘 > róu; #6E18
+渙 > huàn; #6E19
+渚 > zhŭ; #6E1A
+減 > jiăn; #6E1B
+渜 > nuăn; #6E1C
+渝 > yú; #6E1D
+渞 > qíu; #6E1E
+渟 > tíng; #6E1F
+渠 > qú; #6E20
+渡 > dù; #6E21
+渢 > féng; #6E22
+渣 > zhā; #6E23
+渤 > bó; #6E24
+渥 > wò; #6E25
+渦 > wō; #6E26
+渧 > dì; #6E27
+渨 > wēi; #6E28
+温 > wēn; #6E29
+渪 > rú; #6E2A
+渫 > xiè; #6E2B
+測 > cè; #6E2C
+渭 > wèi; #6E2D
+渮 > gē; #6E2E
+港 > găng; #6E2F
+渰 > yăn; #6E30
+渱 > hóng; #6E31
+渲 > xuàn; #6E32
+渳 > mĭ; #6E33
+渴 > kĕ; #6E34
+渵 > máo; #6E35
+渶 > yīng; #6E36
+渷 > yăn; #6E37
+游 > yóu; #6E38
+渹 > hōng; #6E39
+渺 > miăo; #6E3A
+渻 > xĭng; #6E3B
+渼 > mĕi; #6E3C
+渽 > zāi; #6E3D
+渾 > hún; #6E3E
+渿 > nài; #6E3F
+湀 > kúi; #6E40
+湁 > shí; #6E41
+湂 > è; #6E42
+湃 > pài; #6E43
+湄 > méi; #6E44
+湅 > liàn; #6E45
+湆 > qì; #6E46
+湇 > qì; #6E47
+湈 > méi; #6E48
+湉 > tián; #6E49
+湊 > còu; #6E4A
+湋 > wéi; #6E4B
+湌 > cān; #6E4C
+湍 > tuān; #6E4D
+湎 > miăn; #6E4E
+湏 > hùi; #6E4F
+湐 > mò; #6E50
+湑 > xŭ; #6E51
+湒 > jí; #6E52
+湓 > pén; #6E53
+湔 > jiān; #6E54
+湕 > jiăn; #6E55
+湖 > hú; #6E56
+湗 > fèng; #6E57
+湘 > xiāng; #6E58
+湙 > yì; #6E59
+湚 > yìn; #6E5A
+湛 > zhàn; #6E5B
+湜 > shí; #6E5C
+湝 > jiē; #6E5D
+湞 > chéng; #6E5E
+湟 > huáng; #6E5F
+湠 > tàn; #6E60
+湡 > yú; #6E61
+湢 > bì; #6E62
+湣 > mĭn; #6E63
+湤 > shī; #6E64
+湥 > tú; #6E65
+湦 > shēng; #6E66
+湧 > yŏng; #6E67
+湨 > qù; #6E68
+湩 > zhòng; #6E69
+湪 > suèi; #6E6A
+湫 > jīu; #6E6B
+湬 > jiăo; #6E6C
+湭 > qióu; #6E6D
+湮 > yīn; #6E6E
+湯 > tāng; #6E6F
+湰 > lóng; #6E70
+湱 > hùo; #6E71
+湲 > yuán; #6E72
+湳 > năn; #6E73
+湴 > bàn; #6E74
+湵 > yŏu; #6E75
+湶 > quán; #6E76
+湷 > chúi; #6E77
+湸 > liàng; #6E78
+湹 > chán; #6E79
+湺 > yán; #6E7A
+湻 > chún; #6E7B
+湼 > niè; #6E7C
+湽 > zī; #6E7D
+湾 > wān; #6E7E
+湿 > shī; #6E7F
+満 > măn; #6E80
+溁 > yíng; #6E81
+溃 > kùi; #6E83
+溅 > jiàn; #6E85
+溆 > xù; #6E86
+溇 > lǚ; #6E87
+溈 > gūi; #6E88
+溉 > gài; #6E89
+溌 > pō; #6E8C
+溍 > jìn; #6E8D
+溎 > gùi; #6E8E
+溏 > táng; #6E8F
+源 > yuán; #6E90
+溑 > sŭo; #6E91
+溒 > yuán; #6E92
+溓 > lián; #6E93
+溔 > yăo; #6E94
+溕 > mèng; #6E95
+準 > zhŭn; #6E96
+溗 > shéng; #6E97
+溘 > kè; #6E98
+溙 > tài; #6E99
+溚 > dá; #6E9A
+溛 > wā; #6E9B
+溜 > līu; #6E9C
+溝 > gōu; #6E9D
+溞 > sāo; #6E9E
+溟 > míng; #6E9F
+溠 > zhà; #6EA0
+溡 > shí; #6EA1
+溢 > yì; #6EA2
+溣 > lún; #6EA3
+溤 > mă; #6EA4
+溥 > pŭ; #6EA5
+溦 > wéi; #6EA6
+溧 > lì; #6EA7
+溨 > cái; #6EA8
+溩 > wù; #6EA9
+溪 > xī; #6EAA
+溫 > wēn; #6EAB
+溬 > qiāng; #6EAC
+溭 > zé; #6EAD
+溮 > shī; #6EAE
+溯 > sù; #6EAF
+溰 > yī; #6EB0
+溱 > zhēn; #6EB1
+溲 > sōu; #6EB2
+溳 > yún; #6EB3
+溴 > xìu; #6EB4
+溵 > yīn; #6EB5
+溶 > róng; #6EB6
+溷 > hùn; #6EB7
+溸 > sù; #6EB8
+溹 > sù; #6EB9
+溺 > nì; #6EBA
+溻 > tà; #6EBB
+溼 > shī; #6EBC
+溽 > rù; #6EBD
+溾 > wēi; #6EBE
+溿 > pàn; #6EBF
+滀 > chù; #6EC0
+滁 > chú; #6EC1
+滂 > pāng; #6EC2
+滃 > wĕng; #6EC3
+滄 > cāng; #6EC4
+滅 > miè; #6EC5
+滆 > hé; #6EC6
+滇 > diān; #6EC7
+滈 > hào; #6EC8
+滉 > huăng; #6EC9
+滊 > xì; #6ECA
+滋 > zī; #6ECB
+滌 > dí; #6ECC
+滍 > zhĭ; #6ECD
+滎 > yíng; #6ECE
+滏 > fŭ; #6ECF
+滐 > jié; #6ED0
+滑 > huá; #6ED1
+滒 > gē; #6ED2
+滓 > zĭ; #6ED3
+滔 > tāo; #6ED4
+滕 > téng; #6ED5
+滖 > sūi; #6ED6
+滗 > bĭ; #6ED7
+滘 > jiào; #6ED8
+滙 > hùi; #6ED9
+滚 > gŭn; #6EDA
+滛 > yín; #6EDB
+滜 > gāo; #6EDC
+滝 > lóng; #6EDD
+滞 > zhì; #6EDE
+滟 > yàn; #6EDF
+滠 > shè; #6EE0
+满 > măn; #6EE1
+滢 > yìng; #6EE2
+滣 > chún; #6EE3
+滤 > lǜ; #6EE4
+滥 > làn; #6EE5
+滦 > luán; #6EE6
+滨 > bīn; #6EE8
+滩 > tān; #6EE9
+滪 > yù; #6EEA
+滫 > sŏu; #6EEB
+滬 > hù; #6EEC
+滭 > bì; #6EED
+滮 > biāo; #6EEE
+滯 > zhì; #6EEF
+滰 > jiăng; #6EF0
+滱 > kòu; #6EF1
+滲 > shèn; #6EF2
+滳 > shāng; #6EF3
+滴 > dī; #6EF4
+滵 > mì; #6EF5
+滶 > áo; #6EF6
+滷 > lŭ; #6EF7
+滸 > hŭ; #6EF8
+滹 > hū; #6EF9
+滺 > yóu; #6EFA
+滻 > chăn; #6EFB
+滼 > fàn; #6EFC
+滽 > yóng; #6EFD
+滾 > gŭn; #6EFE
+滿 > măn; #6EFF
+漀 > qìng; #6F00
+漁 > yú; #6F01
+漂 > piāo; #6F02
+漃 > jí; #6F03
+漄 > yá; #6F04
+漅 > jiăo; #6F05
+漆 > qī; #6F06
+漇 > xĭ; #6F07
+漈 > jì; #6F08
+漉 > lù; #6F09
+漊 > lǚ; #6F0A
+漋 > lóng; #6F0B
+漌 > jĭn; #6F0C
+漍 > gúo; #6F0D
+漎 > cóng; #6F0E
+漏 > lòu; #6F0F
+漐 > zhí; #6F10
+漑 > gài; #6F11
+漒 > qiáng; #6F12
+漓 > lí; #6F13
+演 > yăn; #6F14
+漕 > cáo; #6F15
+漖 > jiào; #6F16
+漗 > cōng; #6F17
+漘 > qún; #6F18
+漙 > tuán; #6F19
+漚 > òu; #6F1A
+漛 > téng; #6F1B
+漜 > yĕ; #6F1C
+漝 > xí; #6F1D
+漞 > mì; #6F1E
+漟 > táng; #6F1F
+漠 > mò; #6F20
+漡 > shāng; #6F21
+漢 > hàn; #6F22
+漣 > lián; #6F23
+漤 > lăn; #6F24
+漥 > wā; #6F25
+漦 > lí; #6F26
+漧 > qián; #6F27
+漨 > féng; #6F28
+漩 > xuán; #6F29
+漪 > yī; #6F2A
+漫 > màn; #6F2B
+漬 > zì; #6F2C
+漭 > măng; #6F2D
+漮 > kāng; #6F2E
+漯 > lĕi; #6F2F
+漰 > pēng; #6F30
+漱 > shù; #6F31
+漲 > zhăng; #6F32
+漳 > zhāng; #6F33
+漴 > chóng; #6F34
+漵 > xù; #6F35
+漶 > huàn; #6F36
+漷 > kùo; #6F37
+漸 > jiàn; #6F38
+漹 > yān; #6F39
+漺 > chuăng; #6F3A
+漻 > liáo; #6F3B
+漼 > cŭi; #6F3C
+漽 > tí; #6F3D
+漾 > yàng; #6F3E
+漿 > jiāng; #6F3F
+潀 > cóng; #6F40
+潁 > yĭng; #6F41
+潂 > hóng; #6F42
+潃 > xún; #6F43
+潄 > shù; #6F44
+潅 > guàn; #6F45
+潆 > yíng; #6F46
+潇 > xiāo; #6F47
+潊 > xù; #6F4A
+潋 > liàn; #6F4B
+潌 > zhì; #6F4C
+潍 > wéi; #6F4D
+潎 > pì; #6F4E
+潏 > jué; #6F4F
+潐 > jiào; #6F50
+潑 > pō; #6F51
+潒 > dàng; #6F52
+潓 > hùi; #6F53
+潔 > jié; #6F54
+潕 > wŭ; #6F55
+潖 > pá; #6F56
+潗 > jí; #6F57
+潘 > pān; #6F58
+潙 > gúi; #6F59
+潚 > xiāo; #6F5A
+潛 > qián; #6F5B
+潜 > qián; #6F5C
+潝 > xī; #6F5D
+潞 > lù; #6F5E
+潟 > xì; #6F5F
+潠 > xuàn; #6F60
+潡 > dùn; #6F61
+潢 > huáng; #6F62
+潣 > mĭn; #6F63
+潤 > rùn; #6F64
+潥 > sù; #6F65
+潦 > liáo; #6F66
+潧 > zhēn; #6F67
+潨 > zhōng; #6F68
+潩 > yì; #6F69
+潪 > dí; #6F6A
+潫 > wān; #6F6B
+潬 > dàn; #6F6C
+潭 > tán; #6F6D
+潮 > cháo; #6F6E
+潯 > xún; #6F6F
+潰 > kùi; #6F70
+潱 > yie; #6F71
+潲 > shào; #6F72
+潳 > tú; #6F73
+潴 > zhū; #6F74
+潵 > sàn; #6F75
+潶 > hēi; #6F76
+潷 > bĭ; #6F77
+潸 > shān; #6F78
+潹 > chán; #6F79
+潺 > chán; #6F7A
+潻 > shŭ; #6F7B
+潼 > tóng; #6F7C
+潽 > pŭ; #6F7D
+潾 > lín; #6F7E
+潿 > wéi; #6F7F
+澀 > sè; #6F80
+澁 > sè; #6F81
+澂 > chéng; #6F82
+澃 > jìong; #6F83
+澄 > chéng; #6F84
+澅 > huà; #6F85
+澆 > jiāo; #6F86
+澇 > lào; #6F87
+澈 > chè; #6F88
+澉 > găn; #6F89
+澊 > cūn; #6F8A
+澋 > hèng; #6F8B
+澌 > sī; #6F8C
+澍 > shù; #6F8D
+澎 > péng; #6F8E
+澏 > hàn; #6F8F
+澐 > yún; #6F90
+澑 > lìu; #6F91
+澒 > hòng; #6F92
+澓 > fú; #6F93
+澔 > hào; #6F94
+澕 > hé; #6F95
+澖 > xiān; #6F96
+澗 > jiàn; #6F97
+澘 > shān; #6F98
+澙 > xì; #6F99
+澜 > lán; #6F9C
+澞 > yú; #6F9E
+澟 > lĭn; #6F9F
+澠 > mĭn; #6FA0
+澡 > zăo; #6FA1
+澢 > dāng; #6FA2
+澣 > wăn; #6FA3
+澤 > zé; #6FA4
+澥 > xiè; #6FA5
+澦 > yù; #6FA6
+澧 > lĭ; #6FA7
+澨 > shì; #6FA8
+澩 > xué; #6FA9
+澪 > líng; #6FAA
+澫 > màn; #6FAB
+澬 > zī; #6FAC
+澭 > yōng; #6FAD
+澮 > kuài; #6FAE
+澯 > càn; #6FAF
+澰 > liàn; #6FB0
+澱 > diàn; #6FB1
+澲 > yè; #6FB2
+澳 > ào; #6FB3
+澴 > huán; #6FB4
+澵 > zhēn; #6FB5
+澶 > chán; #6FB6
+澷 > màn; #6FB7
+澸 > dăn; #6FB8
+澹 > dàn; #6FB9
+澺 > yì; #6FBA
+澻 > sùi; #6FBB
+澼 > pì; #6FBC
+澽 > jù; #6FBD
+澾 > tà; #6FBE
+澿 > qín; #6FBF
+激 > jī; #6FC0
+濁 > zhúo; #6FC1
+濂 > lián; #6FC2
+濃 > nóng; #6FC3
+濄 > gūo; #6FC4
+濅 > jìn; #6FC5
+濆 > fén; #6FC6
+濇 > sè; #6FC7
+濈 > jí; #6FC8
+濉 > sūi; #6FC9
+濊 > hùi; #6FCA
+濋 > chŭ; #6FCB
+濌 > tà; #6FCC
+濍 > sōng; #6FCD
+濎 > dĭng; #6FCE
+濐 > zhŭ; #6FD0
+濑 > lài; #6FD1
+濒 > bīn; #6FD2
+濓 > lián; #6FD3
+濔 > mĭ; #6FD4
+濕 > shī; #6FD5
+濖 > shù; #6FD6
+濗 > mì; #6FD7
+濘 > nìng; #6FD8
+濙 > yíng; #6FD9
+濚 > yíng; #6FDA
+濛 > méng; #6FDB
+濜 > jìn; #6FDC
+濝 > qí; #6FDD
+濞 > pì; #6FDE
+濟 > jì; #6FDF
+濠 > háo; #6FE0
+濡 > rú; #6FE1
+濢 > zŭi; #6FE2
+濣 > wò; #6FE3
+濤 > tāo; #6FE4
+濥 > yìn; #6FE5
+濦 > yĭn; #6FE6
+濧 > dùi; #6FE7
+濨 > cí; #6FE8
+濩 > hùo; #6FE9
+濪 > jìng; #6FEA
+濫 > làn; #6FEB
+濬 > jùn; #6FEC
+濭 > ài; #6FED
+濮 > pū; #6FEE
+濯 > zhúo; #6FEF
+濰 > wéi; #6FF0
+濱 > bīn; #6FF1
+濲 > gŭ; #6FF2
+濳 > qián; #6FF3
+濴 > xíng; #6FF4
+濶 > kùo; #6FF6
+濷 > fèi; #6FF7
+濺 > jiàn; #6FFA
+濻 > wĕi; #6FFB
+濼 > lùo; #6FFC
+濽 > zàn; #6FFD
+濾 > lǜ; #6FFE
+濿 > lì; #6FFF
+瀀 > yōu; #7000
+瀁 > yàng; #7001
+瀂 > lŭ; #7002
+瀃 > sì; #7003
+瀄 > jié; #7004
+瀅 > yìng; #7005
+瀆 > dú; #7006
+瀇 > wăng; #7007
+瀈 > hūi; #7008
+瀉 > xiè; #7009
+瀊 > pán; #700A
+瀋 > shĕn; #700B
+瀌 > biāo; #700C
+瀍 > chán; #700D
+瀎 > mò; #700E
+瀏 > líu; #700F
+瀐 > jiān; #7010
+瀑 > pù; #7011
+瀒 > sè; #7012
+瀓 > chéng; #7013
+瀔 > gŭ; #7014
+瀕 > bīn; #7015
+瀖 > hùo; #7016
+瀗 > xiàn; #7017
+瀘 > lú; #7018
+瀙 > qīn; #7019
+瀚 > hàn; #701A
+瀛 > yíng; #701B
+瀜 > yōng; #701C
+瀝 > lì; #701D
+瀞 > jìng; #701E
+瀟 > xiāo; #701F
+瀠 > yíng; #7020
+瀡 > sŭi; #7021
+瀢 > wéi; #7022
+瀣 > xiè; #7023
+瀤 > huái; #7024
+瀥 > hào; #7025
+瀦 > zhū; #7026
+瀧 > lóng; #7027
+瀨 > lài; #7028
+瀩 > dùi; #7029
+瀪 > fán; #702A
+瀫 > hú; #702B
+瀬 > lài; #702C
+瀯 > yíng; #702F
+瀰 > mí; #7030
+瀱 > jì; #7031
+瀲 > liàn; #7032
+瀳 > jiàn; #7033
+瀴 > yĭng; #7034
+瀵 > fèn; #7035
+瀶 > lín; #7036
+瀷 > yì; #7037
+瀸 > jiān; #7038
+瀹 > yuè; #7039
+瀺 > chán; #703A
+瀻 > dài; #703B
+瀼 > ráng; #703C
+瀽 > jiăn; #703D
+瀾 > lán; #703E
+瀿 > fán; #703F
+灀 > shuàng; #7040
+灁 > yuān; #7041
+灂 > zhúo; #7042
+灃 > fēng; #7043
+灄 > shè; #7044
+灅 > lĕi; #7045
+灆 > lán; #7046
+灇 > cóng; #7047
+灈 > qú; #7048
+灉 > yōng; #7049
+灊 > qián; #704A
+灋 > fă; #704B
+灌 > guàn; #704C
+灍 > què; #704D
+灎 > yàn; #704E
+灏 > hào; #704F
+灑 > să; #7051
+灒 > zàn; #7052
+灓 > luán; #7053
+灔 > yàn; #7054
+灕 > lí; #7055
+灖 > mĭ; #7056
+灗 > shàn; #7057
+灘 > tān; #7058
+灙 > dăng; #7059
+灚 > jiăo; #705A
+灛 > chăn; #705B
+灝 > hào; #705D
+灞 > bà; #705E
+灟 > zhú; #705F
+灠 > lăn; #7060
+灡 > lán; #7061
+灢 > năng; #7062
+灣 > wān; #7063
+灤 > luán; #7064
+灥 > xún; #7065
+灦 > xiăn; #7066
+灧 > yàn; #7067
+灨 > găn; #7068
+灩 > yàn; #7069
+灪 > yù; #706A
+火 > hŭo; #706B
+灬 > sì' 'diăn' 'hŭo; #706C
+灭 > miè; #706D
+灮 > guāng; #706E
+灯 > dēng; #706F
+灰 > hūi; #7070
+灱 > xiāo; #7071
+灲 > xiāo; #7072
+灳 > hū1; #7073
+灴 > hóng; #7074
+灵 > líng; #7075
+灶 > zào; #7076
+灷 > zhuàn; #7077
+灸 > jĭu; #7078
+灹 > zhà; #7079
+灺 > xiè; #707A
+灻 > chì; #707B
+灼 > zhúo; #707C
+災 > zāi; #707D
+灾 > zāi; #707E
+灿 > càn; #707F
+炀 > yáng; #7080
+炁 > qì; #7081
+炂 > zhōng; #7082
+炃 > fén; #7083
+炄 > nĭu; #7084
+炅 > jĭong; #7085
+炆 > wén; #7086
+炇 > pò; #7087
+炈 > yì; #7088
+炉 > lú; #7089
+炊 > chūi; #708A
+炋 > pī; #708B
+炌 > kài; #708C
+炍 > pàn; #708D
+炎 > yán; #708E
+炏 > kài; #708F
+炐 > pàng; #7090
+炑 > mù; #7091
+炒 > chăo; #7092
+炓 > liào; #7093
+炔 > gùi; #7094
+炕 > kàng; #7095
+炖 > tūn; #7096
+炗 > guāng; #7097
+炘 > xīn; #7098
+炙 > zhì; #7099
+炚 > guang; #709A
+炛 > guāng; #709B
+炜 > wĕi; #709C
+炝 > qiàng; #709D
+炟 > dá; #709F
+炠 > xiá; #70A0
+炡 > zhēng; #70A1
+炢 > zhú; #70A2
+炣 > kĕ; #70A3
+炤 > zhào; #70A4
+炥 > fú; #70A5
+炦 > bá; #70A6
+炧 > dùo; #70A7
+炨 > dùo; #70A8
+炩 > lìng; #70A9
+炪 > zhúo; #70AA
+炫 > xuàn; #70AB
+炬 > jù; #70AC
+炭 > tàn; #70AD
+炮 > pào; #70AE
+炯 > jĭong; #70AF
+炰 > páo; #70B0
+炱 > tái; #70B1
+炲 > tái; #70B2
+炳 > bĭng; #70B3
+炴 > yăng; #70B4
+炵 > tōng; #70B5
+炶 > hān; #70B6
+炷 > zhù; #70B7
+炸 > zhà; #70B8
+点 > diăn; #70B9
+為 > wèi; #70BA
+炻 > shí; #70BB
+炼 > liàn; #70BC
+炽 > chì; #70BD
+炾 > huăng; #70BE
+烀 > hū; #70C0
+烁 > shùo; #70C1
+烂 > làn; #70C2
+烃 > jĭng; #70C3
+烄 > jiăo; #70C4
+烅 > xù; #70C5
+烆 > xíng; #70C6
+烇 > quàn; #70C7
+烈 > liè; #70C8
+烉 > huàn; #70C9
+烊 > yáng; #70CA
+烋 > xiāo; #70CB
+烌 > xīu; #70CC
+烍 > xiăn; #70CD
+烎 > yín; #70CE
+烏 > wū; #70CF
+烐 > zhōu; #70D0
+烑 > yáo; #70D1
+烒 > shì; #70D2
+烓 > wēi; #70D3
+烔 > tóng; #70D4
+烕 > xuè; #70D5
+烖 > zāi; #70D6
+烗 > kài; #70D7
+烘 > hōng; #70D8
+烙 > lùo; #70D9
+烚 > xiá; #70DA
+烛 > zhú; #70DB
+烜 > xuăn; #70DC
+烝 > zhēng; #70DD
+烞 > pò; #70DE
+烟 > yān; #70DF
+烠 > hŭi; #70E0
+烡 > guāng; #70E1
+烢 > zhè; #70E2
+烣 > hūi; #70E3
+烤 > kăo; #70E4
+烦 > fán; #70E6
+烧 > shāo; #70E7
+烨 > yè; #70E8
+烩 > hùi; #70E9
+烫 > tàng; #70EB
+烬 > jìn; #70EC
+热 > rè; #70ED
+烯 > xī; #70EF
+烰 > fú; #70F0
+烱 > jĭong; #70F1
+烲 > chè; #70F2
+烳 > pŭ; #70F3
+烴 > jĭng; #70F4
+烵 > zhúo; #70F5
+烶 > tĭng; #70F6
+烷 > wán; #70F7
+烸 > hăi; #70F8
+烹 > pēng; #70F9
+烺 > lăng; #70FA
+烻 > shān; #70FB
+烼 > hū; #70FC
+烽 > fēng; #70FD
+烾 > chì; #70FE
+烿 > róng; #70FF
+焀 > hú; #7100
+焁 > xi; #7101
+焂 > shú; #7102
+焃 > hè; #7103
+焄 > xūn; #7104
+焅 > kù; #7105
+焆 > jué; #7106
+焇 > xiāo; #7107
+焈 > xī; #7108
+焉 > yān; #7109
+焊 > hàn; #710A
+焋 > zhuàng; #710B
+焌 > jùn; #710C
+焍 > dì; #710D
+焎 > xiè; #710E
+焏 > jí; #710F
+焐 > wù; #7110
+焓 > hán; #7113
+焔 > yàn; #7114
+焕 > huàn; #7115
+焖 > mèn; #7116
+焗 > jú; #7117
+焘 > chóu; #7118
+焙 > bèi; #7119
+焚 > fén; #711A
+焛 > lìn; #711B
+焜 > kūn; #711C
+焝 > hùn; #711D
+焞 > tūn; #711E
+焟 > xí; #711F
+焠 > cùi; #7120
+無 > wú; #7121
+焢 > hōng; #7122
+焣 > jù; #7123
+焤 > fŭ; #7124
+焥 > wò; #7125
+焦 > jiāo; #7126
+焧 > cōng; #7127
+焨 > fèng; #7128
+焩 > pīng; #7129
+焪 > qīong; #712A
+焫 > rùo; #712B
+焬 > xí; #712C
+焭 > qíong; #712D
+焮 > xìn; #712E
+焯 > zhúo; #712F
+焰 > yàn; #7130
+焱 > yàn; #7131
+焲 > yì; #7132
+焳 > jué; #7133
+焴 > yù; #7134
+焵 > gàng; #7135
+然 > rán; #7136
+焷 > pí; #7137
+焸 > gŭ; #7138
+焺 > shēng; #713A
+焻 > chàng; #713B
+焼 > shāo; #713C
+煁 > chén; #7141
+煂 > hè; #7142
+煃 > kŭi; #7143
+煄 > zhōng; #7144
+煅 > duàn; #7145
+煆 > xiā; #7146
+煇 > hūi; #7147
+煈 > fèng; #7148
+煉 > liàn; #7149
+煊 > xuān; #714A
+煋 > xīng; #714B
+煌 > huáng; #714C
+煍 > jiăo; #714D
+煎 > jiān; #714E
+煏 > bì; #714F
+煐 > yīng; #7150
+煑 > zhŭ; #7151
+煒 > wĕi; #7152
+煓 > tuān; #7153
+煔 > tiàn; #7154
+煕 > xī; #7155
+煖 > nuăn; #7156
+煗 > nuăn; #7157
+煘 > chán; #7158
+煙 > yān; #7159
+煚 > jĭong; #715A
+煛 > jĭong; #715B
+煜 > yù; #715C
+煝 > mèi; #715D
+煞 > shà; #715E
+煟 > wèi; #715F
+煠 > yè; #7160
+煡 > xìn; #7161
+煢 > qíong; #7162
+煣 > rŏu; #7163
+煤 > méi; #7164
+煥 > huàn; #7165
+煦 > xŭ; #7166
+照 > zhào; #7167
+煨 > wēi; #7168
+煩 > fán; #7169
+煪 > qíu; #716A
+煫 > sùi; #716B
+煬 > yáng; #716C
+煭 > liè; #716D
+煮 > zhŭ; #716E
+煯 > jie; #716F
+煰 > gào; #7170
+煱 > guā; #7171
+煲 > bào; #7172
+煳 > hú; #7173
+煴 > yūn; #7174
+煵 > xiā; #7175
+煸 > biān; #7178
+煹 > gòu; #7179
+煺 > tùi; #717A
+煻 > táng; #717B
+煼 > chăo; #717C
+煽 > shān; #717D
+煾 > n; #717E
+煿 > bó; #717F
+熀 > huăng; #7180
+熁 > xié; #7181
+熂 > xì; #7182
+熃 > wù; #7183
+熄 > xí; #7184
+熅 > yún; #7185
+熆 > hé; #7186
+熇 > hè; #7187
+熈 > xī; #7188
+熉 > yún; #7189
+熊 > xíong; #718A
+熋 > nái; #718B
+熌 > shàn; #718C
+熍 > qiong; #718D
+熎 > yào; #718E
+熏 > xūn; #718F
+熐 > mì; #7190
+熑 > lián; #7191
+熒 > yíng; #7192
+熓 > wèn; #7193
+熔 > róng; #7194
+熗 > qiàng; #7197
+熘 > līu; #7198
+熙 > xī; #7199
+熚 > bì; #719A
+熛 > biāo; #719B
+熜 > zŏng; #719C
+熝 > lù; #719D
+熞 > jiān; #719E
+熟 > shóu; #719F
+熠 > yì; #71A0
+熡 > lóu; #71A1
+熢 > fēng; #71A2
+熣 > sūi; #71A3
+熤 > yì; #71A4
+熥 > tōng; #71A5
+熦 > jué; #71A6
+熧 > zōng; #71A7
+熨 > yùn; #71A8
+熩 > hù; #71A9
+熪 > yí; #71AA
+熫 > zhì; #71AB
+熬 > áo; #71AC
+熭 > wèi; #71AD
+熮 > liáo; #71AE
+熯 > hàn; #71AF
+熰 > ōu; #71B0
+熱 > rè; #71B1
+熲 > jĭong; #71B2
+熳 > màn; #71B3
+熵 > shāng; #71B5
+熶 > cuàn; #71B6
+熷 > zēng; #71B7
+熸 > jiān; #71B8
+熹 > xī; #71B9
+熺 > xī; #71BA
+熻 > xī; #71BB
+熼 > yì; #71BC
+熽 > xiào; #71BD
+熾 > chì; #71BE
+熿 > huáng; #71BF
+燀 > chăn; #71C0
+燁 > yè; #71C1
+燂 > qián; #71C2
+燃 > rán; #71C3
+燄 > yàn; #71C4
+燅 > xián; #71C5
+燆 > qiáo; #71C6
+燇 > zùn; #71C7
+燈 > dēng; #71C8
+燉 > dùn; #71C9
+燊 > shēn; #71CA
+燋 > jiāo; #71CB
+燌 > fén; #71CC
+燍 > sī; #71CD
+燎 > liào; #71CE
+燏 > yù; #71CF
+燐 > lín; #71D0
+燑 > tóng; #71D1
+燒 > shāo; #71D2
+燓 > fēn; #71D3
+燔 > fán; #71D4
+燕 > yàn; #71D5
+燖 > xún; #71D6
+燗 > làn; #71D7
+燘 > mĕi; #71D8
+燙 > tàng; #71D9
+燚 > yī; #71DA
+燛 > jĭng; #71DB
+燜 > mèn; #71DC
+營 > yíng; #71DF
+燠 > yù; #71E0
+燡 > yì; #71E1
+燢 > xué; #71E2
+燣 > lán; #71E3
+燤 > tài; #71E4
+燥 > zào; #71E5
+燦 > càn; #71E6
+燧 > sùi; #71E7
+燨 > xī; #71E8
+燩 > què; #71E9
+燪 > cōng; #71EA
+燫 > lián; #71EB
+燬 > hŭi; #71EC
+燭 > zhú; #71ED
+燮 > xiè; #71EE
+燯 > líng; #71EF
+燰 > wēi; #71F0
+燱 > yì; #71F1
+燲 > xié; #71F2
+燳 > zhào; #71F3
+燴 > hùi; #71F4
+燷 > lán; #71F7
+燸 > rú; #71F8
+燹 > xiăn; #71F9
+燺 > kăo; #71FA
+燻 > xūn; #71FB
+燼 > jìn; #71FC
+燽 > chóu; #71FD
+燾 > chóu; #71FE
+燿 > yào; #71FF
+爀 > hè; #7200
+爁 > làn; #7201
+爂 > biāo; #7202
+爃 > róng; #7203
+爄 > lì; #7204
+爅 > mò; #7205
+爆 > bào; #7206
+爇 > rùo; #7207
+爈 > lǘ; #7208
+爉 > là; #7209
+爊 > áo; #720A
+爋 > xùn; #720B
+爌 > kuàng; #720C
+爍 > shùo; #720D
+爏 > lì; #720F
+爐 > lú; #7210
+爑 > jué; #7211
+爒 > liào; #7212
+爓 > yàn; #7213
+爔 > xī; #7214
+爕 > xiè; #7215
+爖 > lóng; #7216
+爗 > yè; #7217
+爙 > răng; #7219
+爚 > yuè; #721A
+爛 > làn; #721B
+爜 > cóng; #721C
+爝 > jué; #721D
+爞 > tóng; #721E
+爟 > guàn; #721F
+爡 > chè; #7221
+爢 > mí; #7222
+爣 > tăng; #7223
+爤 > làn; #7224
+爥 > zhú; #7225
+爧 > líng; #7227
+爨 > cuàn; #7228
+爩 > yù; #7229
+爪 > zhuă; #722A
+爬 > pá; #722C
+爭 > zhēng; #722D
+爮 > páo; #722E
+爯 > chēng; #722F
+爰 > yuán; #7230
+爱 > ài; #7231
+爲 > wèi; #7232
+爴 > jué; #7234
+爵 > jué; #7235
+父 > fù; #7236
+爷 > yé; #7237
+爸 > bà; #7238
+爹 > diē; #7239
+爺 > yé; #723A
+爻 > yáo; #723B
+爼 > zŭ; #723C
+爽 > shuăng; #723D
+爾 > ĕr; #723E
+爿 > qiáng; #723F
+牀 > chuáng; #7240
+牁 > gē; #7241
+牂 > zāng; #7242
+牃 > dié; #7243
+牄 > qiāng; #7244
+牅 > yóng; #7245
+牆 > qiáng; #7246
+片 > piàn; #7247
+版 > băn; #7248
+牉 > pàn; #7249
+牊 > sháo; #724A
+牋 > jiān; #724B
+牌 > pái; #724C
+牍 > dú; #724D
+牎 > chuāng; #724E
+牏 > tóu; #724F
+牐 > zhá; #7250
+牑 > biān; #7251
+牒 > dié; #7252
+牓 > băng; #7253
+牔 > bó; #7254
+牕 > chuāng; #7255
+牖 > yŏu; #7256
+牘 > dú; #7258
+牙 > yá; #7259
+牚 > chèng; #725A
+牛 > níu; #725B
+牝 > pìn; #725D
+牞 > jīu; #725E
+牟 > móu; #725F
+牠 > tūo; #7260
+牡 > mŭ; #7261
+牢 > láo; #7262
+牣 > rèn; #7263
+牤 > máng; #7264
+牥 > fāng; #7265
+牦 > máo; #7266
+牧 > mù; #7267
+牨 > gāng; #7268
+物 > wù; #7269
+牪 > yàn; #726A
+牫 > gē; #726B
+牬 > bèi; #726C
+牭 > sì; #726D
+牮 > jiàn; #726E
+牯 > gŭ; #726F
+牰 > yòu; #7270
+牱 > gē; #7271
+牲 > shēng; #7272
+牳 > mŭ; #7273
+牴 > dĭ; #7274
+牵 > qiān; #7275
+牶 > quàn; #7276
+牷 > quán; #7277
+牸 > zì; #7278
+特 > tè; #7279
+牺 > xī; #727A
+牻 > máng; #727B
+牼 > kēng; #727C
+牽 > qiān; #727D
+牾 > wú; #727E
+牿 > gù; #727F
+犀 > xī; #7280
+犁 > lí; #7281
+犂 > lí; #7282
+犃 > pŏu; #7283
+犄 > jī; #7284
+犅 > gāng; #7285
+犆 > zhí; #7286
+犇 > bēn; #7287
+犈 > quán; #7288
+犉 > rún; #7289
+犊 > dú; #728A
+犋 > jù; #728B
+犌 > jiā; #728C
+犍 > jiān; #728D
+犎 > fēng; #728E
+犏 > piān; #728F
+犐 > kē; #7290
+犑 > jú; #7291
+犒 > kào; #7292
+犓 > chú; #7293
+犔 > xì; #7294
+犕 > bèi; #7295
+犖 > lùo; #7296
+犗 > jiè; #7297
+犘 > má; #7298
+犙 > sān; #7299
+犚 > wèi; #729A
+犛 > lí; #729B
+犜 > dūn; #729C
+犝 > tóng; #729D
+犟 > jiàng; #729F
+犡 > lì; #72A1
+犢 > dú; #72A2
+犣 > liè; #72A3
+犤 > pí; #72A4
+犥 > piăo; #72A5
+犦 > bào; #72A6
+犧 > xī; #72A7
+犨 > chōu; #72A8
+犩 > wèi; #72A9
+犪 > kúi; #72AA
+犫 > chōu; #72AB
+犬 > quăn; #72AC
+犭 > făn' 'quăn' 'páng; #72AD
+犮 > bá; #72AE
+犯 > fàn; #72AF
+犰 > qíu; #72B0
+犱 > jĭ; #72B1
+犲 > cái; #72B2
+犳 > chúo; #72B3
+犴 > àn; #72B4
+犵 > jié; #72B5
+状 > zhuàng; #72B6
+犷 > guăng; #72B7
+犸 > mà; #72B8
+犹 > yóu; #72B9
+犺 > kàng; #72BA
+犻 > bó; #72BB
+犼 > hŏu; #72BC
+犽 > yá; #72BD
+犾 > yín; #72BE
+犿 > huān; #72BF
+狀 > zhuàng; #72C0
+狁 > yŭn; #72C1
+狂 > kuáng; #72C2
+狃 > nĭu; #72C3
+狄 > dí; #72C4
+狅 > qīng; #72C5
+狆 > zhòng; #72C6
+狇 > mù; #72C7
+狈 > bèi; #72C8
+狉 > pī; #72C9
+狊 > jú; #72CA
+狋 > ní; #72CB
+狌 > shēng; #72CC
+狍 > páo; #72CD
+狎 > xiá; #72CE
+狏 > túo; #72CF
+狐 > hú; #72D0
+狑 > líng; #72D1
+狒 > fèi; #72D2
+狓 > pī; #72D3
+狔 > nĭ; #72D4
+狕 > ăo; #72D5
+狖 > yòu; #72D6
+狗 > gŏu; #72D7
+狘 > yuè; #72D8
+狙 > jū; #72D9
+狚 > dàn; #72DA
+狛 > pò; #72DB
+狜 > gŭ; #72DC
+狝 > xiăn; #72DD
+狞 > níng; #72DE
+狟 > huán; #72DF
+狠 > hĕn; #72E0
+狡 > jiăo; #72E1
+狢 > hé; #72E2
+狣 > zhào; #72E3
+狤 > jí; #72E4
+狥 > xùn; #72E5
+狦 > shān; #72E6
+狧 > tà; #72E7
+狨 > róng; #72E8
+狩 > shòu; #72E9
+狪 > tōng; #72EA
+狫 > lăo; #72EB
+独 > dú; #72EC
+狭 > xiá; #72ED
+狮 > shī; #72EE
+狯 > huá; #72EF
+狰 > zhēng; #72F0
+狱 > yù; #72F1
+狲 > sūn; #72F2
+狳 > yú; #72F3
+狴 > bì; #72F4
+狵 > máng; #72F5
+狶 > xĭ; #72F6
+狷 > juàn; #72F7
+狸 > lí; #72F8
+狹 > xiá; #72F9
+狺 > yín; #72FA
+狻 > suān; #72FB
+狼 > láng; #72FC
+狽 > bèi; #72FD
+狾 > zhì; #72FE
+狿 > yán; #72FF
+猀 > shā; #7300
+猁 > lì; #7301
+猂 > hàn; #7302
+猃 > xiăn; #7303
+猄 > jīng; #7304
+猅 > pái; #7305
+猆 > fēi; #7306
+猇 > yáo; #7307
+猈 > bà; #7308
+猉 > qí; #7309
+猊 > ní; #730A
+猋 > biāo; #730B
+猌 > yìn; #730C
+猍 > lái; #730D
+猎 > xí; #730E
+猏 > jiān; #730F
+猐 > qiāng; #7310
+猑 > kūn; #7311
+猒 > yān; #7312
+猓 > gŭo; #7313
+猔 > zòng; #7314
+猕 > mí; #7315
+猖 > chāng; #7316
+猗 > yī; #7317
+猘 > zhì; #7318
+猙 > zhēng; #7319
+猚 > yá; #731A
+猛 > mĕng; #731B
+猜 > cāi; #731C
+猝 > cù; #731D
+猞 > shè; #731E
+猡 > lúo; #7321
+猢 > hú; #7322
+猣 > zōng; #7323
+猤 > jì; #7324
+猥 > wĕi; #7325
+猦 > fēng; #7326
+猧 > wō; #7327
+猨 > yuán; #7328
+猩 > xīng; #7329
+猪 > zhū; #732A
+猫 > māo; #732B
+猬 > wèi; #732C
+猭 > yuán; #732D
+献 > xiàn; #732E
+猯 > tuān; #732F
+猰 > yà; #7330
+猱 > náo; #7331
+猲 > xiē; #7332
+猳 > jiā; #7333
+猴 > hóu; #7334
+猵 > biān; #7335
+猶 > yóu; #7336
+猷 > yóu; #7337
+猸 > méi; #7338
+猹 > zhā; #7339
+猺 > yáo; #733A
+猻 > sūn; #733B
+猼 > bó; #733C
+猽 > míng; #733D
+猾 > huá; #733E
+猿 > yuán; #733F
+獀 > sōu; #7340
+獁 > mà; #7341
+獂 > yuán; #7342
+獃 > dāi; #7343
+獄 > yù; #7344
+獅 > shī; #7345
+獆 > háo; #7346
+獈 > yì; #7348
+獉 > zhēn; #7349
+獊 > chuàng; #734A
+獋 > háo; #734B
+獌 > màn; #734C
+獍 > jìng; #734D
+獎 > jiăng; #734E
+獏 > mú; #734F
+獐 > zhāng; #7350
+獑 > chán; #7351
+獒 > áo; #7352
+獓 > áo; #7353
+獔 > háo; #7354
+獕 > cūi; #7355
+獖 > fén; #7356
+獗 > jué; #7357
+獘 > bì; #7358
+獙 > bì; #7359
+獚 > huáng; #735A
+獛 > pú; #735B
+獜 > lín; #735C
+獝 > yù; #735D
+獞 > tóng; #735E
+獟 > yào; #735F
+獠 > liáo; #7360
+獡 > shùo; #7361
+獢 > xiāo; #7362
+獥 > xí; #7365
+獦 > gé; #7366
+獧 > juàn; #7367
+獨 > dú; #7368
+獩 > hùi; #7369
+獪 > kuài; #736A
+獫 > xiăn; #736B
+獬 > xiè; #736C
+獭 > tà; #736D
+獮 > xiăn; #736E
+獯 > xūn; #736F
+獰 > níng; #7370
+獱 > pín; #7371
+獲 > hùo; #7372
+獳 > nòu; #7373
+獴 > méng; #7374
+獵 > liè; #7375
+獶 > náo; #7376
+獷 > guăng; #7377
+獸 > shòu; #7378
+獹 > lú; #7379
+獺 > tà; #737A
+獻 > xiàn; #737B
+獼 > mí; #737C
+獽 > ráng; #737D
+獾 > huān; #737E
+獿 > náo; #737F
+玀 > lúo; #7380
+玁 > xiăn; #7381
+玂 > qí; #7382
+玃 > jué; #7383
+玄 > xuán; #7384
+玅 > miào; #7385
+玆 > zī; #7386
+率 > lǜ; #7387
+玈 > lú; #7388
+玉 > yù; #7389
+玊 > sù; #738A
+王 > wáng; #738B
+玌 > qíu; #738C
+玍 > gă; #738D
+玎 > dīng; #738E
+玏 > lè; #738F
+玐 > bā; #7390
+玑 > jī; #7391
+玒 > hóng; #7392
+玓 > dì; #7393
+玔 > quàn; #7394
+玕 > gān; #7395
+玖 > jĭu; #7396
+玗 > yú; #7397
+玘 > jĭ; #7398
+玙 > yú; #7399
+玚 > yáng; #739A
+玛 > mă; #739B
+玜 > gōng; #739C
+玝 > wŭ; #739D
+玞 > fū; #739E
+玟 > wén; #739F
+玠 > jiè; #73A0
+玡 > yà; #73A1
+玢 > fén; #73A2
+玣 > biàn; #73A3
+玤 > bĕng; #73A4
+玥 > yuè; #73A5
+玦 > jué; #73A6
+玧 > yŭn; #73A7
+玨 > jué; #73A8
+玩 > wán; #73A9
+玪 > jiān; #73AA
+玫 > méi; #73AB
+玬 > dăn; #73AC
+玭 > pí; #73AD
+玮 > wĕi; #73AE
+环 > huán; #73AF
+现 > xiàn; #73B0
+玱 > qiāng; #73B1
+玲 > líng; #73B2
+玳 > dài; #73B3
+玴 > yì; #73B4
+玵 > án; #73B5
+玶 > píng; #73B6
+玷 > diàn; #73B7
+玸 > fú; #73B8
+玹 > xuán; #73B9
+玺 > xĭ; #73BA
+玻 > bō; #73BB
+玼 > cĭ; #73BC
+玽 > gŏu; #73BD
+玾 > jiă; #73BE
+玿 > sháo; #73BF
+珀 > pò; #73C0
+珁 > cí; #73C1
+珂 > kē; #73C2
+珃 > răn; #73C3
+珄 > shēng; #73C4
+珅 > shēn; #73C5
+珆 > yí; #73C6
+珇 > zŭ; #73C7
+珈 > jiā; #73C8
+珉 > mín; #73C9
+珊 > shān; #73CA
+珋 > lĭu; #73CB
+珌 > bì; #73CC
+珍 > zhēn; #73CD
+珎 > zhēn; #73CE
+珏 > jué; #73CF
+珐 > fà; #73D0
+珑 > lóng; #73D1
+珒 > jīn; #73D2
+珓 > jiào; #73D3
+珔 > jiàn; #73D4
+珕 > lì; #73D5
+珖 > guāng; #73D6
+珗 > xiān; #73D7
+珘 > zhōu; #73D8
+珙 > gŏng; #73D9
+珚 > yān; #73DA
+珛 > xìu; #73DB
+珜 > yáng; #73DC
+珝 > xŭ; #73DD
+珞 > lùo; #73DE
+珟 > sù; #73DF
+珠 > zhū; #73E0
+珡 > qín; #73E1
+珢 > kèn; #73E2
+珣 > xún; #73E3
+珤 > băo; #73E4
+珥 > ĕr; #73E5
+珦 > xiàng; #73E6
+珧 > yáo; #73E7
+珨 > xiá; #73E8
+珩 > héng; #73E9
+珪 > gūi; #73EA
+珫 > chōng; #73EB
+珬 > xù; #73EC
+班 > bān; #73ED
+珮 > pèi; #73EE
+珰 > dāng; #73F0
+珲 > hún; #73F2
+珳 > wén; #73F3
+珴 > é; #73F4
+珵 > chéng; #73F5
+珶 > tí; #73F6
+珷 > wŭ; #73F7
+珸 > wú; #73F8
+珹 > chéng; #73F9
+珺 > jùn; #73FA
+珻 > méi; #73FB
+珼 > bèi; #73FC
+珽 > tĭng; #73FD
+現 > xiàn; #73FE
+珿 > chùo; #73FF
+琀 > hán; #7400
+琁 > xuan; #7401
+琂 > yán; #7402
+球 > qíu; #7403
+琄 > quăn; #7404
+琅 > láng; #7405
+理 > lĭ; #7406
+琇 > xìu; #7407
+琈 > fú; #7408
+琉 > líu; #7409
+琊 > yé; #740A
+琋 > xī; #740B
+琌 > líng; #740C
+琍 > lì; #740D
+琎 > jìn; #740E
+琏 > lián; #740F
+琐 > sŭo; #7410
+琓 > wán; #7413
+琔 > diàn; #7414
+琕 > pín; #7415
+琖 > zhăn; #7416
+琗 > cùi; #7417
+琘 > mín; #7418
+琙 > yù; #7419
+琚 > jū; #741A
+琛 > chēn; #741B
+琜 > lái; #741C
+琝 > wén; #741D
+琞 > shèng; #741E
+琟 > wéi; #741F
+琠 > diăn; #7420
+琡 > chù; #7421
+琢 > zhúo; #7422
+琣 > pĕi; #7423
+琤 > chēng; #7424
+琥 > hŭ; #7425
+琦 > qí; #7426
+琧 > è; #7427
+琨 > kūn; #7428
+琩 > chāng; #7429
+琪 > qí; #742A
+琫 > bĕng; #742B
+琬 > wăn; #742C
+琭 > lù; #742D
+琮 > cóng; #742E
+琯 > guăn; #742F
+琰 > yăn; #7430
+琱 > diāo; #7431
+琲 > bèi; #7432
+琳 > lín; #7433
+琴 > qín; #7434
+琵 > pí; #7435
+琶 > pá; #7436
+琷 > què; #7437
+琸 > zhúo; #7438
+琹 > qín; #7439
+琺 > fà; #743A
+琼 > qíong; #743C
+琽 > dŭ; #743D
+琾 > jiè; #743E
+琿 > hún; #743F
+瑀 > yŭ; #7440
+瑁 > mào; #7441
+瑂 > méi; #7442
+瑃 > chun; #7443
+瑄 > xuān; #7444
+瑅 > tí; #7445
+瑆 > xīng; #7446
+瑇 > dài; #7447
+瑈 > róu; #7448
+瑉 > mín; #7449
+瑊 > zhēn; #744A
+瑋 > wĕi; #744B
+瑌 > ruăn; #744C
+瑍 > huàn; #744D
+瑎 > jiē; #744E
+瑏 > chuān; #744F
+瑐 > jiăn; #7450
+瑑 > zhuàn; #7451
+瑒 > yáng; #7452
+瑓 > liàn; #7453
+瑔 > quán; #7454
+瑕 > xiá; #7455
+瑖 > duàn; #7456
+瑗 > yuàn; #7457
+瑘 > yé; #7458
+瑙 > năo; #7459
+瑚 > hú; #745A
+瑛 > yīng; #745B
+瑜 > yú; #745C
+瑝 > huáng; #745D
+瑞 > rùi; #745E
+瑟 > sè; #745F
+瑠 > líu; #7460
+瑡 > shi; #7461
+瑢 > róng; #7462
+瑣 > sŭo; #7463
+瑤 > yáo; #7464
+瑥 > wēn; #7465
+瑦 > wū; #7466
+瑧 > jīn; #7467
+瑨 > jìn; #7468
+瑩 > yíng; #7469
+瑪 > mă; #746A
+瑫 > tāo; #746B
+瑬 > líu; #746C
+瑭 > táng; #746D
+瑮 > lì; #746E
+瑯 > láng; #746F
+瑰 > gūi; #7470
+瑱 > zhèn; #7471
+瑲 > qiāng; #7472
+瑳 > cŭo; #7473
+瑴 > jué; #7474
+瑵 > zhăo; #7475
+瑶 > yáo; #7476
+瑷 > ài; #7477
+瑸 > bīn; #7478
+瑹 > tú; #7479
+瑺 > cháng; #747A
+瑻 > kūn; #747B
+瑼 > zhuān; #747C
+瑽 > cōng; #747D
+瑾 > jĭn; #747E
+瑿 > yī; #747F
+璀 > cŭi; #7480
+璁 > cōng; #7481
+璂 > qí; #7482
+璃 > lí; #7483
+璄 > yĭng; #7484
+璅 > sŭo; #7485
+璆 > qíu; #7486
+璇 > xuán; #7487
+璈 > áo; #7488
+璉 > lián; #7489
+璊 > mán; #748A
+璋 > zhāng; #748B
+璌 > yín; #748C
+璎 > yīng; #748E
+璏 > zhì; #748F
+璐 > lù; #7490
+璑 > wú; #7491
+璒 > dēng; #7492
+璓 > xiòu; #7493
+璔 > zēng; #7494
+璕 > xún; #7495
+璖 > qú; #7496
+璗 > dàng; #7497
+璘 > lín; #7498
+璙 > liáo; #7499
+璚 > qíong; #749A
+璛 > sù; #749B
+璜 > huáng; #749C
+璝 > gūi; #749D
+璞 > pú; #749E
+璟 > jĭng; #749F
+璠 > fán; #74A0
+璡 > jìn; #74A1
+璢 > líu; #74A2
+璣 > jī; #74A3
+璥 > jĭng; #74A5
+璦 > ài; #74A6
+璧 > bì; #74A7
+璨 > càn; #74A8
+璩 > qú; #74A9
+璪 > zăo; #74AA
+璫 > dāng; #74AB
+璬 > jiăo; #74AC
+璭 > gùn; #74AD
+璮 > tăn; #74AE
+璯 > hùi; #74AF
+環 > huán; #74B0
+璱 > sè; #74B1
+璲 > sùi; #74B2
+璳 > tián; #74B3
+璵 > yú; #74B5
+璶 > jìn; #74B6
+璷 > lú; #74B7
+璸 > bīn; #74B8
+璹 > shòu; #74B9
+璺 > wèn; #74BA
+璻 > zŭi; #74BB
+璼 > lán; #74BC
+璽 > xĭ; #74BD
+璾 > jì; #74BE
+璿 > xuán; #74BF
+瓀 > ruăn; #74C0
+瓁 > hùo; #74C1
+瓂 > gài; #74C2
+瓃 > léi; #74C3
+瓄 > dú; #74C4
+瓅 > lì; #74C5
+瓆 > zhí; #74C6
+瓇 > róu; #74C7
+瓈 > lí; #74C8
+瓉 > zàn; #74C9
+瓊 > qíong; #74CA
+瓋 > zhé; #74CB
+瓌 > gūi; #74CC
+瓍 > sùi; #74CD
+瓎 > là; #74CE
+瓏 > lóng; #74CF
+瓐 > lú; #74D0
+瓑 > lì; #74D1
+瓒 > zàn; #74D2
+瓓 > làn; #74D3
+瓔 > yīng; #74D4
+瓕 > mí; #74D5
+瓖 > xiāng; #74D6
+瓗 > xī; #74D7
+瓘 > guàn; #74D8
+瓙 > dào; #74D9
+瓚 > zàn; #74DA
+瓛 > huán; #74DB
+瓜 > guā; #74DC
+瓝 > bó; #74DD
+瓞 > dié; #74DE
+瓟 > báo; #74DF
+瓠 > hù; #74E0
+瓡 > zhí; #74E1
+瓢 > piáo; #74E2
+瓣 > bàn; #74E3
+瓤 > ráng; #74E4
+瓥 > lì; #74E5
+瓦 > wă; #74E6
+瓨 > jiāng; #74E8
+瓩 > qián' 'wă; #74E9
+瓪 > făn; #74EA
+瓫 > pén; #74EB
+瓬 > făng; #74EC
+瓭 > dăn; #74ED
+瓮 > wèng; #74EE
+瓯 > ōu; #74EF
+瓳 > hú; #74F3
+瓴 > líng; #74F4
+瓵 > yí; #74F5
+瓶 > píng; #74F6
+瓷 > cí; #74F7
+瓹 > juàn; #74F9
+瓺 > cháng; #74FA
+瓻 > chī; #74FB
+瓽 > dàng; #74FD
+瓾 > mĕng; #74FE
+瓿 > pŏu; #74FF
+甀 > zhùi; #7500
+甁 > píng; #7501
+甂 > biān; #7502
+甃 > zhòu; #7503
+甄 > zhēn; #7504
+甆 > cí; #7506
+甇 > yīng; #7507
+甈 > qì; #7508
+甉 > xián; #7509
+甊 > lŏu; #750A
+甋 > dì; #750B
+甌 > ōu; #750C
+甍 > méng; #750D
+甎 > zhuān; #750E
+甏 > pèng; #750F
+甐 > lín; #7510
+甑 > zèng; #7511
+甒 > wŭ; #7512
+甓 > pì; #7513
+甔 > dān; #7514
+甕 > wèng; #7515
+甖 > yīng; #7516
+甗 > yăn; #7517
+甘 > gān; #7518
+甙 > dài; #7519
+甚 > shén; #751A
+甛 > tián; #751B
+甜 > tián; #751C
+甝 > hān; #751D
+甞 > cháng; #751E
+生 > shēng; #751F
+甠 > qíng; #7520
+甡 > shēng; #7521
+產 > chăn; #7522
+産 > chăn; #7523
+甤 > rúi; #7524
+甥 > shēng; #7525
+甦 > sū; #7526
+甧 > sēn; #7527
+用 > yòng; #7528
+甩 > shuăi; #7529
+甪 > lù; #752A
+甫 > fŭ; #752B
+甬 > yŏng; #752C
+甭 > béng; #752D
+甮 > fèng; #752E
+甯 > níng; #752F
+田 > tián; #7530
+由 > yóu; #7531
+甲 > jiă; #7532
+申 > shēn; #7533
+甴 > zhá; #7534
+电 > diàn; #7535
+甶 > fú; #7536
+男 > nán; #7537
+甸 > diàn; #7538
+甹 > píng; #7539
+町 > tĭng; #753A
+画 > huà; #753B
+甼 > tĭng; #753C
+甽 > quăn; #753D
+甾 > zī; #753E
+甿 > méng; #753F
+畀 > bì; #7540
+畁 > qí; #7541
+畂 > lìu; #7542
+畃 > xún; #7543
+畄 > líu; #7544
+畅 > chàng; #7545
+畆 > mŭ; #7546
+畇 > yún; #7547
+畈 > fàn; #7548
+畉 > fú; #7549
+畊 > gēng; #754A
+畋 > tián; #754B
+界 > jiè; #754C
+畍 > jiè; #754D
+畎 > quăn; #754E
+畏 > wèi; #754F
+畐 > fú; #7550
+畑 > tián; #7551
+畒 > mŭ; #7552
+畔 > pàn; #7554
+畕 > jiāng; #7555
+畖 > wā; #7556
+畗 > dá; #7557
+畘 > nán; #7558
+留 > líu; #7559
+畚 > bĕn; #755A
+畛 > zhĕn; #755B
+畜 > chù; #755C
+畝 > mŭ; #755D
+畞 > mŭ; #755E
+畟 > cè; #755F
+畡 > gāi; #7561
+畢 > bì; #7562
+畣 > dá; #7563
+畤 > zhì; #7564
+略 > lǜe; #7565
+畦 > qí; #7566
+畧 > lǜe; #7567
+畨 > pān; #7568
+番 > fān; #756A
+畫 > huà; #756B
+畬 > yú; #756C
+畭 > yú; #756D
+畮 > mŭ; #756E
+畯 > jùn; #756F
+異 > yì; #7570
+畱 > líu; #7571
+畲 > yú; #7572
+畳 > dié; #7573
+畴 > chóu; #7574
+畵 > huà; #7575
+當 > dāng; #7576
+畷 > chùo; #7577
+畸 > jī; #7578
+畹 > wăn; #7579
+畺 > jiāng; #757A
+畻 > shéng; #757B
+畼 > chàng; #757C
+畽 > tuăn; #757D
+畾 > léi; #757E
+畿 > jī; #757F
+疀 > chā; #7580
+疁 > líu; #7581
+疃 > tuăn; #7583
+疄 > lín; #7584
+疅 > jiāng; #7585
+疆 > jiāng; #7586
+疇 > chóu; #7587
+疈 > bò; #7588
+疉 > dié; #7589
+疊 > dié; #758A
+疋 > pĭ; #758B
+疌 > niè; #758C
+疍 > dàn; #758D
+疎 > shū; #758E
+疏 > shū; #758F
+疐 > zhì; #7590
+疑 > yí; #7591
+疒 > chuáng; #7592
+疓 > năi; #7593
+疔 > dīng; #7594
+疕 > bĭ; #7595
+疖 > jié; #7596
+疗 > liáo; #7597
+疘 > gōng; #7598
+疙 > gē; #7599
+疚 > jìu; #759A
+疛 > zhŏu; #759B
+疜 > xià; #759C
+疝 > shàn; #759D
+疞 > xū; #759E
+疟 > nǜe; #759F
+疠 > lì; #75A0
+疡 > yáng; #75A1
+疢 > chèn; #75A2
+疣 > yóu; #75A3
+疤 > bā; #75A4
+疥 > jiè; #75A5
+疦 > jué; #75A6
+疧 > zhī; #75A7
+疨 > xiā; #75A8
+疩 > cùi; #75A9
+疪 > bì; #75AA
+疫 > yì; #75AB
+疬 > lì; #75AC
+疭 > zòng; #75AD
+疮 > chuāng; #75AE
+疯 > fēng; #75AF
+疰 > zhù; #75B0
+疱 > pào; #75B1
+疲 > pí; #75B2
+疳 > gān; #75B3
+疴 > kē; #75B4
+疵 > cī; #75B5
+疶 > xiè; #75B6
+疷 > qí; #75B7
+疸 > dăn; #75B8
+疹 > zhĕn; #75B9
+疺 > fá; #75BA
+疻 > zhĭ; #75BB
+疼 > téng; #75BC
+疽 > jū; #75BD
+疾 > jí; #75BE
+疿 > fèi; #75BF
+痀 > qú; #75C0
+痁 > diàn; #75C1
+痂 > jiā; #75C2
+痃 > xián; #75C3
+痄 > chá; #75C4
+病 > bìng; #75C5
+痆 > nì; #75C6
+症 > zhèng; #75C7
+痈 > yōng; #75C8
+痉 > jìng; #75C9
+痊 > quán; #75CA
+痋 > chóng; #75CB
+痌 > tōng; #75CC
+痍 > yí; #75CD
+痎 > kāi; #75CE
+痏 > wĕi; #75CF
+痐 > húi; #75D0
+痑 > dŭo; #75D1
+痒 > yăng; #75D2
+痓 > chì; #75D3
+痔 > zhì; #75D4
+痕 > hén; #75D5
+痖 > yă; #75D6
+痗 > mèi; #75D7
+痘 > dòu; #75D8
+痙 > jìng; #75D9
+痚 > xiāo; #75DA
+痛 > tòng; #75DB
+痜 > tū; #75DC
+痝 > máng; #75DD
+痞 > pĭ; #75DE
+痟 > xiāo; #75DF
+痠 > suān; #75E0
+痡 > pū; #75E1
+痢 > lì; #75E2
+痣 > zhì; #75E3
+痤 > cúo; #75E4
+痥 > dúo; #75E5
+痦 > wù; #75E6
+痧 > shā; #75E7
+痨 > láo; #75E8
+痩 > shòu; #75E9
+痪 > huàn; #75EA
+痫 > xián; #75EB
+痬 > yì; #75EC
+痭 > péng; #75ED
+痮 > zhàng; #75EE
+痯 > guăn; #75EF
+痰 > tán; #75F0
+痱 > fèi; #75F1
+痲 > má; #75F2
+痳 > lín; #75F3
+痴 > chī; #75F4
+痵 > jì; #75F5
+痶 > diăn; #75F6
+痷 > ān; #75F7
+痸 > chì; #75F8
+痹 > bì; #75F9
+痺 > bēi; #75FA
+痻 > mín; #75FB
+痼 > gū; #75FC
+痽 > dūi; #75FD
+痾 > ē; #75FE
+痿 > wĕi; #75FF
+瘀 > yū; #7600
+瘁 > cùi; #7601
+瘂 > yă; #7602
+瘃 > zhŭ; #7603
+瘄 > cù; #7604
+瘅 > dàn; #7605
+瘆 > shèn; #7606
+瘇 > zhŭng; #7607
+瘈 > jì; #7608
+瘉 > yù; #7609
+瘊 > hóu; #760A
+瘋 > fēng; #760B
+瘌 > là; #760C
+瘍 > yáng; #760D
+瘎 > shèn; #760E
+瘏 > tú; #760F
+瘐 > yŭ; #7610
+瘑 > guā; #7611
+瘒 > wén; #7612
+瘓 > huàn; #7613
+瘔 > kù; #7614
+瘕 > jiă; #7615
+瘖 > yīn; #7616
+瘗 > yì; #7617
+瘘 > lǘ; #7618
+瘙 > sāo; #7619
+瘚 > jué; #761A
+瘛 > chì; #761B
+瘜 > xí; #761C
+瘝 > guān; #761D
+瘞 > yì; #761E
+瘟 > wēn; #761F
+瘠 > jí; #7620
+瘡 > chuāng; #7621
+瘢 > bān; #7622
+瘣 > lĕi; #7623
+瘤 > líu; #7624
+瘥 > chài; #7625
+瘦 > shòu; #7626
+瘧 > nǜe; #7627
+瘨 > diān; #7628
+瘩 > dā; #7629
+瘪 > piē; #762A
+瘫 > tān; #762B
+瘬 > zhàng; #762C
+瘭 > biāo; #762D
+瘮 > shen; #762E
+瘯 > cù; #762F
+瘰 > lŭo; #7630
+瘱 > yì; #7631
+瘲 > zòng; #7632
+瘳 > chōu; #7633
+瘴 > zhàng; #7634
+瘵 > zhài; #7635
+瘶 > sòu; #7636
+瘷 > sŭo; #7637
+瘸 > qué; #7638
+瘹 > diào; #7639
+瘺 > lòu; #763A
+瘻 > lǘ; #763B
+瘼 > mò; #763C
+瘽 > jìn; #763D
+瘾 > yĭn; #763E
+瘿 > yĭng; #763F
+癀 > huáng; #7640
+癁 > fú; #7641
+療 > liáo; #7642
+癃 > lóng; #7643
+癄 > qiáo; #7644
+癅 > líu; #7645
+癆 > láo; #7646
+癇 > xián; #7647
+癈 > fèi; #7648
+癉 > dàn; #7649
+癊 > yìn; #764A
+癋 > hè; #764B
+癌 > yán; #764C
+癍 > bān; #764D
+癎 > xián; #764E
+癏 > guān; #764F
+癐 > guài; #7650
+癑 > nóng; #7651
+癒 > yù; #7652
+癓 > wéi; #7653
+癔 > yì; #7654
+癕 > yōng; #7655
+癖 > pĭ; #7656
+癗 > lĕi; #7657
+癘 > lì; #7658
+癙 > shŭ; #7659
+癚 > dàn; #765A
+癛 > lĭn; #765B
+癜 > diàn; #765C
+癝 > lĭn; #765D
+癞 > lài; #765E
+癟 > piē; #765F
+癠 > jì; #7660
+癡 > chī; #7661
+癢 > yăng; #7662
+癣 > xiăn; #7663
+癤 > jié; #7664
+癥 > zhēng; #7665
+癧 > lì; #7667
+癨 > hùo; #7668
+癩 > lài; #7669
+癫 > diān; #766B
+癬 > xiăn; #766C
+癭 > yĭng; #766D
+癮 > yĭn; #766E
+癯 > qú; #766F
+癰 > yōng; #7670
+癱 > tān; #7671
+癲 > diān; #7672
+癳 > lŭo; #7673
+癴 > lǘan; #7674
+癵 > luán; #7675
+癶 > bō; #7676
+癸 > gŭi; #7678
+癹 > pō; #7679
+発 > fā; #767A
+登 > dēng; #767B
+發 > fā; #767C
+白 > bái; #767D
+百 > băi; #767E
+癿 > qié; #767F
+皀 > bī; #7680
+皁 > zào; #7681
+皂 > zào; #7682
+皃 > mào; #7683
+的 > de; #7684
+皅 > pā; #7685
+皆 > jiē; #7686
+皇 > huáng; #7687
+皈 > gūi; #7688
+皉 > cĭ; #7689
+皊 > líng; #768A
+皋 > gāo; #768B
+皌 > mò; #768C
+皍 > jí; #768D
+皎 > jiăo; #768E
+皏 > pĕng; #768F
+皐 > gāo; #7690
+皑 > ái; #7691
+皒 > é; #7692
+皓 > hào; #7693
+皔 > hàn; #7694
+皕 > bī; #7695
+皖 > wăn; #7696
+皗 > chóu; #7697
+皘 > qiàn; #7698
+皙 > xī; #7699
+皚 > ái; #769A
+皛 > jĭong; #769B
+皜 > hào; #769C
+皝 > huăng; #769D
+皞 > hào; #769E
+皟 > zé; #769F
+皠 > cŭi; #76A0
+皡 > hào; #76A1
+皢 > xiăo; #76A2
+皣 > yè; #76A3
+皤 > pó; #76A4
+皥 > hào; #76A5
+皦 > jiăo; #76A6
+皧 > ài; #76A7
+皨 > xīng; #76A8
+皩 > huàng; #76A9
+皪 > lì; #76AA
+皫 > piăo; #76AB
+皬 > hè; #76AC
+皭 > jiào; #76AD
+皮 > pí; #76AE
+皯 > găn; #76AF
+皰 > pào; #76B0
+皱 > zhòu; #76B1
+皲 > jūn; #76B2
+皳 > qíu; #76B3
+皴 > cūn; #76B4
+皵 > què; #76B5
+皶 > zhā; #76B6
+皷 > gŭ; #76B7
+皸 > jūn; #76B8
+皹 > jūn; #76B9
+皺 > zhòu; #76BA
+皻 > zhā; #76BB
+皼 > gŭ; #76BC
+皽 > zhăn; #76BD
+皾 > dú; #76BE
+皿 > mĭn; #76BF
+盀 > qĭ; #76C0
+盁 > yíng; #76C1
+盂 > yú; #76C2
+盃 > bēi; #76C3
+盄 > zhāo; #76C4
+盅 > zhōng; #76C5
+盆 > pén; #76C6
+盇 > hé; #76C7
+盈 > yíng; #76C8
+盉 > hé; #76C9
+益 > yì; #76CA
+盋 > bō; #76CB
+盌 > wăn; #76CC
+盍 > hé; #76CD
+盎 > àng; #76CE
+盏 > zhăn; #76CF
+盐 > yán; #76D0
+监 > jiān; #76D1
+盒 > hé; #76D2
+盓 > yū; #76D3
+盔 > kūi; #76D4
+盕 > fàn; #76D5
+盖 > gài; #76D6
+盗 > dào; #76D7
+盘 > pán; #76D8
+盙 > fŭ; #76D9
+盚 > qíu; #76DA
+盛 > shèng; #76DB
+盜 > dào; #76DC
+盝 > lù; #76DD
+盞 > zhăn; #76DE
+盟 > méng; #76DF
+盠 > lĭ; #76E0
+盡 > jìn; #76E1
+盢 > xù; #76E2
+監 > jiān; #76E3
+盤 > pán; #76E4
+盥 > guàn; #76E5
+盦 > ān; #76E6
+盧 > lú; #76E7
+盨 > shŭ; #76E8
+盩 > zhōu; #76E9
+盪 > dàng; #76EA
+盫 > ān; #76EB
+盬 > gŭ; #76EC
+盭 > lì; #76ED
+目 > mù; #76EE
+盯 > chéng; #76EF
+盰 > găn; #76F0
+盱 > xū; #76F1
+盲 > máng; #76F2
+盳 > máng; #76F3
+直 > zhí; #76F4
+盵 > qì; #76F5
+盶 > ruăn; #76F6
+盷 > tián; #76F7
+相 > xiāng; #76F8
+盹 > dùn; #76F9
+盺 > xīn; #76FA
+盻 > xì; #76FB
+盼 > pàn; #76FC
+盽 > fēng; #76FD
+盾 > dùn; #76FE
+盿 > mín; #76FF
+眀 > míng; #7700
+省 > shĕng; #7701
+眂 > shì; #7702
+眃 > yún; #7703
+眄 > miăn; #7704
+眅 > pān; #7705
+眆 > făng; #7706
+眇 > miăo; #7707
+眈 > dān; #7708
+眉 > méi; #7709
+眊 > mào; #770A
+看 > kàn; #770B
+県 > xiàn; #770C
+眍 > ōu; #770D
+眎 > shì; #770E
+眏 > yāng; #770F
+眐 > zhēng; #7710
+眑 > yăo; #7711
+眒 > shèn; #7712
+眓 > hùo; #7713
+眔 > dà; #7714
+眕 > zhĕn; #7715
+眖 > kuàng; #7716
+眗 > jū; #7717
+眘 > shèn; #7718
+眙 > chì; #7719
+眚 > shĕng; #771A
+眛 > mèi; #771B
+眜 > mò; #771C
+眝 > zhù; #771D
+眞 > zhēn; #771E
+真 > zhēn; #771F
+眠 > mián; #7720
+眡 > dī; #7721
+眢 > yuān; #7722
+眣 > dié; #7723
+眤 > yí; #7724
+眥 > zì; #7725
+眦 > zì; #7726
+眧 > chăo; #7727
+眨 > zhă; #7728
+眩 > xuàn; #7729
+眪 > bĭng; #772A
+眫 > mĭ; #772B
+眬 > lóng; #772C
+眭 > sūi; #772D
+眮 > dòng; #772E
+眯 > mĭ; #772F
+眰 > dié; #7730
+眱 > yí; #7731
+眲 > èr; #7732
+眳 > mĭng; #7733
+眴 > xuàn; #7734
+眵 > chī; #7735
+眶 > kuàng; #7736
+眷 > juàn; #7737
+眸 > móu; #7738
+眹 > zhèn; #7739
+眺 > tiào; #773A
+眻 > yáng; #773B
+眼 > yăn; #773C
+眽 > mò; #773D
+眾 > zhòng; #773E
+眿 > mài; #773F
+着 > zháo; #7740
+睁 > zhēng; #7741
+睂 > méi; #7742
+睃 > jùn; #7743
+睄 > shào; #7744
+睅 > hàn; #7745
+睆 > huăn; #7746
+睇 > dì; #7747
+睈 > chĕng; #7748
+睉 > cūo; #7749
+睊 > juàn; #774A
+睋 > é; #774B
+睌 > wăn; #774C
+睍 > xiàn; #774D
+睎 > xī; #774E
+睏 > kùn; #774F
+睐 > lài; #7750
+睑 > jiăn; #7751
+睒 > shăn; #7752
+睓 > tiăn; #7753
+睔 > hŭn; #7754
+睕 > wăn; #7755
+睖 > líng; #7756
+睗 > shì; #7757
+睘 > qíong; #7758
+睙 > liè; #7759
+睚 > yái; #775A
+睛 > jīng; #775B
+睜 > zhēng; #775C
+睝 > lí; #775D
+睞 > lài; #775E
+睟 > sùi; #775F
+睠 > juàn; #7760
+睡 > shùi; #7761
+睢 > sūi; #7762
+督 > dū; #7763
+睤 > bì; #7764
+睥 > bì; #7765
+睦 > mù; #7766
+睧 > hūn; #7767
+睨 > nì; #7768
+睩 > lù; #7769
+睪 > yì; #776A
+睫 > jié; #776B
+睬 > căi; #776C
+睭 > zhŏu; #776D
+睮 > yú; #776E
+睯 > hūn; #776F
+睰 > mà; #7770
+睱 > xià; #7771
+睲 > xĭng; #7772
+睳 > xī; #7773
+睴 > gùn; #7774
+睵 > cai; #7775
+睶 > chŭn; #7776
+睷 > jiān; #7777
+睸 > mèi; #7778
+睹 > dŭ; #7779
+睺 > hóu; #777A
+睻 > xuān; #777B
+睼 > tì; #777C
+睽 > kúi; #777D
+睾 > gāo; #777E
+睿 > rùi; #777F
+瞀 > mòu; #7780
+瞁 > xù; #7781
+瞂 > fā; #7782
+瞃 > wēn; #7783
+瞄 > miáo; #7784
+瞅 > chŏu; #7785
+瞆 > kùi; #7786
+瞇 > mī; #7787
+瞈 > wĕng; #7788
+瞉 > kòu; #7789
+瞊 > dàng; #778A
+瞋 > chēn; #778B
+瞌 > kē; #778C
+瞍 > sŏu; #778D
+瞎 > xiā; #778E
+瞏 > qíong; #778F
+瞐 > mào; #7790
+瞑 > míng; #7791
+瞒 > mán; #7792
+瞓 > shùi; #7793
+瞔 > zé; #7794
+瞕 > zhàng; #7795
+瞖 > yì; #7796
+瞗 > diāo; #7797
+瞘 > ōu; #7798
+瞙 > mò; #7799
+瞚 > shùn; #779A
+瞛 > cōng; #779B
+瞜 > lōu; #779C
+瞝 > chī; #779D
+瞞 > mán; #779E
+瞟 > piăo; #779F
+瞠 > chēng; #77A0
+瞡 > jì; #77A1
+瞢 > méng; #77A2
+瞤 > rún; #77A4
+瞥 > piē; #77A5
+瞦 > xī; #77A6
+瞧 > qiáo; #77A7
+瞨 > pú; #77A8
+瞩 > zhŭ; #77A9
+瞪 > dèng; #77AA
+瞫 > shĕn; #77AB
+瞬 > shùn; #77AC
+瞭 > liăo; #77AD
+瞮 > chè; #77AE
+瞯 > xián; #77AF
+瞰 > kàn; #77B0
+瞱 > yè; #77B1
+瞲 > xù; #77B2
+瞳 > tóng; #77B3
+瞴 > móu; #77B4
+瞵 > lín; #77B5
+瞶 > kùi; #77B6
+瞷 > xián; #77B7
+瞸 > yè; #77B8
+瞹 > ài; #77B9
+瞺 > hùi; #77BA
+瞻 > zhān; #77BB
+瞼 > jiăn; #77BC
+瞽 > gŭ; #77BD
+瞾 > zhào; #77BE
+瞿 > qū; #77BF
+矀 > wéi; #77C0
+矁 > chŏu; #77C1
+矂 > sào; #77C2
+矃 > nĭng; #77C3
+矄 > xūn; #77C4
+矅 > yào; #77C5
+矆 > hùo; #77C6
+矇 > méng; #77C7
+矈 > mián; #77C8
+矉 > bīn; #77C9
+矊 > mián; #77CA
+矋 > lì; #77CB
+矌 > kuàng; #77CC
+矍 > jué; #77CD
+矎 > xuān; #77CE
+矏 > mián; #77CF
+矐 > hùo; #77D0
+矑 > lú; #77D1
+矒 > méng; #77D2
+矓 > lóng; #77D3
+矔 > guàn; #77D4
+矕 > măn; #77D5
+矖 > xĭ; #77D6
+矗 > chù; #77D7
+矘 > tăng; #77D8
+矙 > kàn; #77D9
+矚 > zhŭ; #77DA
+矛 > máo; #77DB
+矜 > jīn; #77DC
+矝 > lín; #77DD
+矞 > yù; #77DE
+矟 > shùo; #77DF
+矠 > cè; #77E0
+矡 > jué; #77E1
+矢 > shĭ; #77E2
+矣 > yĭ; #77E3
+矤 > shĕn; #77E4
+知 > zhī; #77E5
+矦 > hóu; #77E6
+矧 > shĕn; #77E7
+矨 > yĭng; #77E8
+矩 > jŭ; #77E9
+矪 > zhōu; #77EA
+矫 > jiăo; #77EB
+矬 > cúo; #77EC
+短 > duăn; #77ED
+矮 > ăi; #77EE
+矯 > jiăo; #77EF
+矰 > zēng; #77F0
+矱 > hùo; #77F1
+矲 > băi; #77F2
+石 > shí; #77F3
+矴 > dìng; #77F4
+矵 > qì; #77F5
+矶 > jī; #77F6
+矷 > zĭ; #77F7
+矸 > gān; #77F8
+矹 > wù; #77F9
+矺 > tūo; #77FA
+矻 > kù; #77FB
+矼 > qiāng; #77FC
+矽 > xì; #77FD
+矾 > fán; #77FE
+矿 > kuàng; #77FF
+砀 > dàng; #7800
+码 > mă; #7801
+砂 > shā; #7802
+砃 > dān; #7803
+砄 > jué; #7804
+砅 > lì; #7805
+砆 > fū; #7806
+砇 > mín; #7807
+砈 > nŭo; #7808
+砉 > hùo; #7809
+砊 > kàng; #780A
+砋 > zhĭ; #780B
+砌 > qì; #780C
+砍 > kăn; #780D
+砎 > jiè; #780E
+砏 > fēn; #780F
+砐 > è; #7810
+砑 > yà; #7811
+砒 > pī; #7812
+砓 > zhé; #7813
+研 > yán; #7814
+砕 > sùi; #7815
+砖 > zhuān; #7816
+砗 > chē; #7817
+砘 > dùn; #7818
+砙 > pān; #7819
+砚 > yàn; #781A
+砜 > fēng; #781C
+砝 > fá; #781D
+砞 > mò; #781E
+砟 > zhà; #781F
+砠 > qū; #7820
+砡 > yù; #7821
+砢 > lŭo; #7822
+砣 > túo; #7823
+砤 > túo; #7824
+砥 > dĭ; #7825
+砦 > zhài; #7826
+砧 > zhēn; #7827
+砨 > ài; #7828
+砩 > fèi; #7829
+砪 > mŭ; #782A
+砫 > zhŭ; #782B
+砬 > lì; #782C
+砭 > biān; #782D
+砮 > nŭ; #782E
+砯 > pīng; #782F
+砰 > pēng; #7830
+砱 > líng; #7831
+砲 > pào; #7832
+砳 > lè; #7833
+破 > pò; #7834
+砵 > bō; #7835
+砶 > pò; #7836
+砷 > shēn; #7837
+砸 > zá; #7838
+砹 > nŭo; #7839
+砺 > lì; #783A
+砻 > lóng; #783B
+砼 > tóng; #783C
+砾 > lì; #783E
+础 > chŭ; #7840
+硁 > kēng; #7841
+硂 > quán; #7842
+硃 > zhū; #7843
+硄 > kuāng; #7844
+硅 > hùo; #7845
+硆 > è; #7846
+硇 > náo; #7847
+硈 > jiá; #7848
+硉 > lù; #7849
+硊 > wĕi; #784A
+硋 > ài; #784B
+硌 > lùo; #784C
+硍 > kèn; #784D
+硎 > xíng; #784E
+硏 > yán; #784F
+硐 > tóng; #7850
+硑 > pēng; #7851
+硒 > xī; #7852
+硔 > hóng; #7854
+硕 > shùo; #7855
+硖 > xiá; #7856
+硗 > qiāo; #7857
+硙 > wèi; #7859
+硚 > qiáo; #785A
+硜 > kēng; #785C
+硝 > xiāo; #785D
+硞 > què; #785E
+硟 > chàn; #785F
+硠 > lăng; #7860
+硡 > hóng; #7861
+硢 > yú; #7862
+硣 > xiāo; #7863
+硤 > xiá; #7864
+硥 > măng; #7865
+硦 > lòng; #7866
+硧 > ĭong; #7867
+硨 > chē; #7868
+硩 > chè; #7869
+硪 > é; #786A
+硫 > líu; #786B
+硬 > yìng; #786C
+硭 > máng; #786D
+确 > què; #786E
+硯 > yàn; #786F
+硰 > shā; #7870
+硱 > kŭn; #7871
+硲 > yù; #7872
+硵 > lŭ; #7875
+硶 > chĕn; #7876
+硷 > jiăn; #7877
+硸 > nuè; #7878
+硹 > sōng; #7879
+硺 > zhúo; #787A
+硻 > kēng; #787B
+硼 > péng; #787C
+硽 > yăn; #787D
+硾 > zhùi; #787E
+硿 > kōng; #787F
+碀 > céng; #7880
+碁 > qí; #7881
+碂 > zòng; #7882
+碃 > qìng; #7883
+碄 > lín; #7884
+碅 > jūn; #7885
+碆 > bō; #7886
+碇 > dìng; #7887
+碈 > mín; #7888
+碉 > diāo; #7889
+碊 > jiān; #788A
+碋 > hè; #788B
+碌 > lù; #788C
+碍 > ài; #788D
+碎 > sùi; #788E
+碏 > què; #788F
+碐 > líng; #7890
+碑 > bēi; #7891
+碒 > yín; #7892
+碓 > dùi; #7893
+碔 > wŭ; #7894
+碕 > qí; #7895
+碖 > lùn; #7896
+碗 > wăn; #7897
+碘 > diăn; #7898
+碙 > gāng; #7899
+碚 > péi; #789A
+碛 > qì; #789B
+碜 > chĕn; #789C
+碝 > ruăn; #789D
+碞 > yán; #789E
+碟 > dié; #789F
+碠 > dìng; #78A0
+碡 > dú; #78A1
+碢 > túo; #78A2
+碣 > jié; #78A3
+碤 > yīng; #78A4
+碥 > biăn; #78A5
+碦 > kè; #78A6
+碧 > bì; #78A7
+碨 > wēi; #78A8
+碩 > shùo; #78A9
+碪 > zhēn; #78AA
+碫 > duàn; #78AB
+碬 > xiá; #78AC
+碭 > dàng; #78AD
+碮 > tí; #78AE
+碯 > năo; #78AF
+碰 > pèng; #78B0
+碱 > jiăn; #78B1
+碲 > dì; #78B2
+碳 > tàn; #78B3
+碴 > chá; #78B4
+碶 > qì; #78B6
+碸 > fēng; #78B8
+碹 > xuàn; #78B9
+確 > què; #78BA
+碻 > què; #78BB
+碼 > mă; #78BC
+碽 > gōng; #78BD
+碾 > niàn; #78BE
+碿 > sù; #78BF
+磀 > é; #78C0
+磁 > cí; #78C1
+磂 > lìu; #78C2
+磃 > sī; #78C3
+磄 > táng; #78C4
+磅 > bàng; #78C5
+磆 > huá; #78C6
+磇 > pī; #78C7
+磈 > wĕi; #78C8
+磉 > săng; #78C9
+磊 > lĕi; #78CA
+磋 > cūo; #78CB
+磌 > zhēn; #78CC
+磍 > xiá; #78CD
+磎 > qī; #78CE
+磏 > lián; #78CF
+磐 > pán; #78D0
+磑 > wèi; #78D1
+磒 > yŭn; #78D2
+磓 > dūi; #78D3
+磔 > zhé; #78D4
+磕 > kē; #78D5
+磖 > lā; #78D6
+磘 > qìng; #78D8
+磙 > gŭn; #78D9
+磚 > zhuān; #78DA
+磛 > chán; #78DB
+磜 > qì; #78DC
+磝 > áo; #78DD
+磞 > pēng; #78DE
+磟 > lù; #78DF
+磠 > lŭ; #78E0
+磡 > kàn; #78E1
+磢 > qiăng; #78E2
+磣 > chĕn; #78E3
+磤 > yĭn; #78E4
+磥 > lĕi; #78E5
+磦 > biāo; #78E6
+磧 > qì; #78E7
+磨 > mó; #78E8
+磩 > qī; #78E9
+磪 > cūi; #78EA
+磫 > zōng; #78EB
+磬 > qìng; #78EC
+磭 > chùo; #78ED
+磯 > jī; #78EF
+磰 > shàn; #78F0
+磱 > láo; #78F1
+磲 > qú; #78F2
+磳 > zēng; #78F3
+磴 > dèng; #78F4
+磵 > jiàn; #78F5
+磶 > xì; #78F6
+磷 > lìn; #78F7
+磸 > dìng; #78F8
+磹 > diàn; #78F9
+磺 > huáng; #78FA
+磻 > pán; #78FB
+磼 > zá; #78FC
+磽 > qiāo; #78FD
+磾 > dī; #78FE
+磿 > lì; #78FF
+礁 > jiāo; #7901
+礃 > zhăng; #7903
+礄 > qiáo; #7904
+礅 > dūn; #7905
+礆 > xiăn; #7906
+礇 > yù; #7907
+礈 > zhùi; #7908
+礉 > hé; #7909
+礊 > hùo; #790A
+礋 > zhái; #790B
+礌 > lèi; #790C
+礍 > kĕ; #790D
+礎 > chŭ; #790E
+礏 > jí; #790F
+礐 > què; #7910
+礑 > dàng; #7911
+礒 > yĭ; #7912
+礓 > jiāng; #7913
+礔 > pì; #7914
+礕 > pī; #7915
+礖 > yù; #7916
+礗 > pīn; #7917
+礘 > qì; #7918
+礙 > ài; #7919
+礚 > kài; #791A
+礛 > jiān; #791B
+礜 > yù; #791C
+礝 > ruăn; #791D
+礞 > méng; #791E
+礟 > pào; #791F
+礠 > cí; #7920
+礣 > miè; #7923
+礤 > că; #7924
+礥 > xián; #7925
+礦 > kuàng; #7926
+礧 > lèi; #7927
+礨 > lĕi; #7928
+礩 > zhì; #7929
+礪 > lì; #792A
+礫 > lì; #792B
+礬 > fán; #792C
+礭 > què; #792D
+礮 > pào; #792E
+礯 > yīng; #792F
+礰 > lì; #7930
+礱 > lóng; #7931
+礲 > lóng; #7932
+礳 > mò; #7933
+礴 > bó; #7934
+礵 > shuāng; #7935
+礶 > guàn; #7936
+礷 > lán; #7937
+礸 > zăn; #7938
+礹 > yán; #7939
+示 > shì; #793A
+礻 > shì' 'zì' 'páng; #793B
+礼 > lĭ; #793C
+礽 > réng; #793D
+社 > shè; #793E
+礿 > yuè; #793F
+祀 > sì; #7940
+祁 > qí; #7941
+祂 > tā; #7942
+祃 > mà; #7943
+祄 > xiè; #7944
+祅 > xiān; #7945
+祆 > xiān; #7946
+祇 > zhī; #7947
+祈 > qí; #7948
+祉 > zhĭ; #7949
+祊 > bēng; #794A
+祋 > dùi; #794B
+祌 > zhòng; #794C
+祎 > yī; #794E
+祏 > shí; #794F
+祐 > yòu; #7950
+祑 > zhì; #7951
+祒 > tiáo; #7952
+祓 > fú; #7953
+祔 > fù; #7954
+祕 > mì; #7955
+祖 > zŭ; #7956
+祗 > zhī; #7957
+祘 > suàn; #7958
+祙 > mèi; #7959
+祚 > zùo; #795A
+祛 > qū; #795B
+祜 > hù; #795C
+祝 > zhù; #795D
+神 > shén; #795E
+祟 > sùi; #795F
+祠 > cí; #7960
+祡 > chái; #7961
+祢 > mí; #7962
+祣 > lǚ; #7963
+祤 > yŭ; #7964
+祥 > xiáng; #7965
+祦 > wú; #7966
+祧 > tiāo; #7967
+票 > piào; #7968
+祩 > zhū; #7969
+祪 > gŭi; #796A
+祫 > xiá; #796B
+祬 > zhī; #796C
+祭 > jì; #796D
+祮 > gào; #796E
+祯 > zhēn; #796F
+祰 > gào; #7970
+祱 > shùi; #7971
+祲 > jīn; #7972
+祳 > chĕn; #7973
+祴 > gāi; #7974
+祵 > kŭn; #7975
+祶 > dì; #7976
+祷 > dăo; #7977
+祸 > hùo; #7978
+祹 > táo; #7979
+祺 > qí; #797A
+祻 > gù; #797B
+祼 > guàn; #797C
+祽 > zùi; #797D
+祾 > líng; #797E
+祿 > lù; #797F
+禀 > bĭng; #7980
+禁 > jìn; #7981
+禂 > dăo; #7982
+禃 > zhí; #7983
+禄 > lù; #7984
+禅 > shàn; #7985
+禆 > bēi; #7986
+禇 > zhĕ; #7987
+禈 > hūi; #7988
+禉 > yŏu; #7989
+禊 > xì; #798A
+禋 > yīn; #798B
+禌 > zī; #798C
+禍 > hùo; #798D
+禎 > zhēn; #798E
+福 > fú; #798F
+禐 > yuàn; #7990
+禑 > wú; #7991
+禒 > xiăn; #7992
+禓 > yáng; #7993
+禔 > tí; #7994
+禕 > yī; #7995
+禖 > méi; #7996
+禗 > sī; #7997
+禘 > dì; #7998
+禚 > zhúo; #799A
+禛 > zhēn; #799B
+禜 > yŏng; #799C
+禝 > jí; #799D
+禞 > gào; #799E
+禟 > táng; #799F
+禠 > sī; #79A0
+禡 > mà; #79A1
+禢 > tā; #79A2
+禤 > xuān; #79A4
+禥 > qí; #79A5
+禦 > yù; #79A6
+禧 > xī; #79A7
+禨 > jī; #79A8
+禩 > sì; #79A9
+禪 > chán; #79AA
+禫 > tăn; #79AB
+禬 > kuài; #79AC
+禭 > sùi; #79AD
+禮 > lĭ; #79AE
+禯 > nóng; #79AF
+禰 > nĭ; #79B0
+禱 > dăo; #79B1
+禲 > lì; #79B2
+禳 > ráng; #79B3
+禴 > yuè; #79B4
+禵 > tí; #79B5
+禶 > zăn; #79B6
+禷 > lèi; #79B7
+禸 > róu; #79B8
+禹 > yŭ; #79B9
+禺 > yú; #79BA
+离 > chī; #79BB
+禼 > xiè; #79BC
+禽 > qín; #79BD
+禾 > hé; #79BE
+禿 > tū; #79BF
+秀 > xìu; #79C0
+私 > sī; #79C1
+秂 > rén; #79C2
+秃 > tū; #79C3
+秄 > zĭ; #79C4
+秅 > chá; #79C5
+秆 > găn; #79C6
+秇 > yì; #79C7
+秈 > xiān; #79C8
+秉 > bĭng; #79C9
+秊 > nián; #79CA
+秋 > qīu; #79CB
+秌 > qīu; #79CC
+种 > chóng; #79CD
+秎 > fén; #79CE
+秏 > hào; #79CF
+秐 > yún; #79D0
+科 > kē; #79D1
+秒 > miăo; #79D2
+秓 > zhī; #79D3
+秔 > gēng; #79D4
+秕 > bĭ; #79D5
+秖 > zhī; #79D6
+秗 > yù; #79D7
+秘 > mì; #79D8
+秙 > kù; #79D9
+秚 > bàn; #79DA
+秛 > pī; #79DB
+秜 > ní; #79DC
+秝 > lì; #79DD
+秞 > yóu; #79DE
+租 > zū; #79DF
+秠 > pī; #79E0
+秡 > bá; #79E1
+秢 > líng; #79E2
+秣 > mò; #79E3
+秤 > chèng; #79E4
+秥 > nián; #79E5
+秦 > qín; #79E6
+秧 > yāng; #79E7
+秨 > zúo; #79E8
+秩 > zhì; #79E9
+秪 > zhī; #79EA
+秫 > shú; #79EB
+秬 > jù; #79EC
+秭 > zĭ; #79ED
+秮 > húo; #79EE
+积 > jī; #79EF
+称 > chēng; #79F0
+秱 > tóng; #79F1
+秲 > zhì; #79F2
+秳 > húo; #79F3
+秴 > hé; #79F4
+秵 > yīn; #79F5
+秶 > zī; #79F6
+秷 > zhí; #79F7
+秸 > jiē; #79F8
+秹 > rĕn; #79F9
+秺 > dù; #79FA
+移 > yí; #79FB
+秼 > zhū; #79FC
+秽 > hùi; #79FD
+秾 > nóng; #79FE
+秿 > fŭ; #79FF
+稀 > xī; #7A00
+稁 > kăo; #7A01
+稂 > láng; #7A02
+稃 > fū; #7A03
+稄 > zè; #7A04
+稅 > shùi; #7A05
+稆 > lǚ; #7A06
+稇 > kŭn; #7A07
+稈 > găn; #7A08
+稉 > gēng; #7A09
+稊 > tí; #7A0A
+程 > chéng; #7A0B
+稌 > tú; #7A0C
+稍 > shāo; #7A0D
+税 > shùi; #7A0E
+稏 > yà; #7A0F
+稐 > lŭn; #7A10
+稑 > lù; #7A11
+稒 > gù; #7A12
+稓 > zúo; #7A13
+稔 > rĕn; #7A14
+稕 > zhùn; #7A15
+稖 > bàng; #7A16
+稗 > bài; #7A17
+稘 > jī; #7A18
+稙 > zhí; #7A19
+稚 > zhì; #7A1A
+稛 > kŭn; #7A1B
+稜 > léng; #7A1C
+稝 > péng; #7A1D
+稞 > kē; #7A1E
+稟 > bĭng; #7A1F
+稠 > chóu; #7A20
+稡 > zú; #7A21
+稢 > yù; #7A22
+稣 > sū; #7A23
+稤 > lǜe; #7A24
+稦 > yī; #7A26
+稧 > xì; #7A27
+稨 > biān; #7A28
+稩 > jì; #7A29
+稪 > fù; #7A2A
+稫 > bī; #7A2B
+稬 > nùo; #7A2C
+稭 > jiē; #7A2D
+種 > zhŏng; #7A2E
+稯 > zōng; #7A2F
+稰 > xū; #7A30
+稱 > chēng; #7A31
+稲 > dào; #7A32
+稳 > wĕn; #7A33
+稴 > lián; #7A34
+稵 > zī; #7A35
+稶 > yù; #7A36
+稷 > jì; #7A37
+稸 > xù; #7A38
+稹 > zhĕn; #7A39
+稺 > zhì; #7A3A
+稻 > dào; #7A3B
+稼 > jià; #7A3C
+稽 > jī; #7A3D
+稾 > găo; #7A3E
+稿 > găo; #7A3F
+穀 > gŭ; #7A40
+穁 > róng; #7A41
+穂 > sùi; #7A42
+穄 > jì; #7A44
+穅 > kāng; #7A45
+穆 > mù; #7A46
+穇 > shān; #7A47
+穈 > mén; #7A48
+穉 > zhì; #7A49
+穊 > jì; #7A4A
+穋 > lù; #7A4B
+穌 > sū; #7A4C
+積 > jī; #7A4D
+穎 > yĭng; #7A4E
+穏 > wĕn; #7A4F
+穐 > qīu; #7A50
+穑 > sè; #7A51
+穓 > yì; #7A53
+穔 > huáng; #7A54
+穕 > qiè; #7A55
+穖 > jĭ; #7A56
+穗 > sùi; #7A57
+穘 > xiāo; #7A58
+穙 > pú; #7A59
+穚 > jiāo; #7A5A
+穛 > zhūo; #7A5B
+穜 > tóng; #7A5C
+穞 > lǚ; #7A5E
+穟 > sùi; #7A5F
+穠 > nóng; #7A60
+穡 > sè; #7A61
+穢 > hùi; #7A62
+穣 > ráng; #7A63
+穤 > nùo; #7A64
+穥 > yù; #7A65
+穦 > bin; #7A66
+穧 > jì; #7A67
+穨 > túi; #7A68
+穩 > wĕn; #7A69
+穪 > chēng; #7A6A
+穫 > hùo; #7A6B
+穬 > gŏng; #7A6C
+穭 > lǚ; #7A6D
+穮 > biāo; #7A6E
+穰 > ráng; #7A70
+穱 > zhūo; #7A71
+穲 > lí; #7A72
+穳 > zàn; #7A73
+穴 > xuè; #7A74
+穵 > wā; #7A75
+究 > jìu; #7A76
+穷 > qíong; #7A77
+穸 > xì; #7A78
+穹 > qīong; #7A79
+空 > kōng; #7A7A
+穻 > yū; #7A7B
+穼 > sēn; #7A7C
+穽 > jĭng; #7A7D
+穾 > yào; #7A7E
+穿 > chuān; #7A7F
+窀 > zhūn; #7A80
+突 > tú; #7A81
+窂 > láo; #7A82
+窃 > qiè; #7A83
+窄 > zhăi; #7A84
+窅 > yăo; #7A85
+窆 > biăn; #7A86
+窇 > báo; #7A87
+窈 > yăo; #7A88
+窉 > bĭng; #7A89
+窊 > wā; #7A8A
+窋 > zhú; #7A8B
+窌 > jiào; #7A8C
+窍 > qiào; #7A8D
+窎 > diào; #7A8E
+窏 > wū; #7A8F
+窐 > gūi; #7A90
+窑 > yáo; #7A91
+窒 > zhì; #7A92
+窓 > chuāng; #7A93
+窔 > yăo; #7A94
+窕 > tiăo; #7A95
+窖 > jiào; #7A96
+窗 > chuāng; #7A97
+窘 > jĭong; #7A98
+窙 > xiāo; #7A99
+窚 > chéng; #7A9A
+窛 > kòu; #7A9B
+窜 > cuàn; #7A9C
+窝 > wō; #7A9D
+窞 > dàn; #7A9E
+窟 > kū; #7A9F
+窠 > kē; #7AA0
+窡 > zhùi; #7AA1
+窢 > xù; #7AA2
+窣 > sù; #7AA3
+窤 > guan; #7AA4
+窥 > kūi; #7AA5
+窦 > dòu; #7AA6
+窨 > yìn; #7AA8
+窩 > wō; #7AA9
+窪 > wā; #7AAA
+窫 > yà; #7AAB
+窬 > yú; #7AAC
+窭 > jù; #7AAD
+窮 > qíong; #7AAE
+窯 > yáo; #7AAF
+窰 > yáo; #7AB0
+窱 > tiào; #7AB1
+窲 > cháo; #7AB2
+窳 > yŭ; #7AB3
+窴 > tián; #7AB4
+窵 > diào; #7AB5
+窶 > jù; #7AB6
+窷 > liáo; #7AB7
+窸 > xī; #7AB8
+窹 > wù; #7AB9
+窺 > kūi; #7ABA
+窻 > chuāng; #7ABB
+窼 > zhāo; #7ABC
+窾 > kuăn; #7ABE
+窿 > lóng; #7ABF
+竀 > chēng; #7AC0
+竁 > cùi; #7AC1
+竂 > piáo; #7AC2
+竃 > zào; #7AC3
+竄 > cuàn; #7AC4
+竅 > qiào; #7AC5
+竆 > qíong; #7AC6
+竇 > dòu; #7AC7
+竈 > zào; #7AC8
+竉 > lŏng; #7AC9
+竊 > qiè; #7ACA
+立 > lì; #7ACB
+竌 > chù; #7ACC
+竍 > shí' 'gōng' 'shēng; #7ACD
+竎 > fòu; #7ACE
+竏 > qiān' 'gōng' 'shēng; #7ACF
+竐 > chù; #7AD0
+竑 > hóng; #7AD1
+竒 > qí; #7AD2
+竓 > qiān' 'fēn' 'zhī' 'yī' 'gōng' 'shēng; #7AD3
+竔 > gōng' 'shēng; #7AD4
+竕 > shí' 'fēn' 'zhī' 'yī' 'gōng' 'shēng; #7AD5
+竖 > shù; #7AD6
+竗 > miào; #7AD7
+竘 > jŭ; #7AD8
+站 > zhàn; #7AD9
+竚 > zhù; #7ADA
+竛 > líng; #7ADB
+竜 > lóng; #7ADC
+竝 > bìng; #7ADD
+竞 > jìng; #7ADE
+竟 > jìng; #7ADF
+章 > zhāng; #7AE0
+竡 > yī' 'gōng' 'shēng' 'de' 'yī' 'băi' 'bèi; #7AE1
+竢 > sì; #7AE2
+竣 > jùn; #7AE3
+竤 > hóng; #7AE4
+童 > tóng; #7AE5
+竦 > sŏng; #7AE6
+竧 > jìng; #7AE7
+竨 > diào; #7AE8
+竩 > yì; #7AE9
+竪 > shù; #7AEA
+竫 > jìng; #7AEB
+竬 > qŭ; #7AEC
+竭 > jié; #7AED
+竮 > píng; #7AEE
+端 > duān; #7AEF
+竰 > sháo; #7AF0
+竱 > zhuăn; #7AF1
+竲 > céng; #7AF2
+竳 > dēng; #7AF3
+竴 > cūi; #7AF4
+竵 > huāi; #7AF5
+競 > jìng; #7AF6
+竷 > kàn; #7AF7
+竸 > jìng; #7AF8
+竹 > zhú; #7AF9
+竺 > zhú; #7AFA
+竻 > lè; #7AFB
+竼 > péng; #7AFC
+竽 > yú; #7AFD
+竾 > chí; #7AFE
+竿 > gān; #7AFF
+笀 > máng; #7B00
+笁 > zhú; #7B01
+笃 > dŭ; #7B03
+笄 > jī; #7B04
+笅 > xiáo; #7B05
+笆 > bā; #7B06
+笇 > suàn; #7B07
+笈 > jí; #7B08
+笉 > zhĕn; #7B09
+笊 > zhào; #7B0A
+笋 > sŭn; #7B0B
+笌 > yá; #7B0C
+笍 > zhùi; #7B0D
+笎 > yuán; #7B0E
+笏 > hù; #7B0F
+笐 > gāng; #7B10
+笑 > xiào; #7B11
+笒 > cén; #7B12
+笓 > pí; #7B13
+笔 > bĭ; #7B14
+笕 > jiăn; #7B15
+笖 > yĭ; #7B16
+笗 > dōng; #7B17
+笘 > shān; #7B18
+笙 > shēng; #7B19
+笚 > xiá; #7B1A
+笛 > dí; #7B1B
+笜 > zhú; #7B1C
+笝 > nà; #7B1D
+笞 > chī; #7B1E
+笟 > gū; #7B1F
+笠 > lì; #7B20
+笡 > qiè; #7B21
+笢 > mĭn; #7B22
+笣 > bāo; #7B23
+笤 > tiáo; #7B24
+笥 > sì; #7B25
+符 > fú; #7B26
+笧 > cè; #7B27
+笨 > bèn; #7B28
+笩 > pèi; #7B29
+笪 > dá; #7B2A
+笫 > zĭ; #7B2B
+第 > dì; #7B2C
+笭 > líng; #7B2D
+笮 > zé; #7B2E
+笯 > nú; #7B2F
+笰 > fú; #7B30
+笱 > gŏu; #7B31
+笲 > fān; #7B32
+笳 > jiā; #7B33
+笴 > gĕ; #7B34
+笵 > fàn; #7B35
+笶 > shĭ; #7B36
+笷 > măo; #7B37
+笸 > pŏ; #7B38
+笺 > jiān; #7B3A
+笻 > qíong; #7B3B
+笼 > lóng; #7B3C
+笾 > biān; #7B3E
+笿 > lùo; #7B3F
+筀 > gùi; #7B40
+筁 > qŭ; #7B41
+筂 > chí; #7B42
+筃 > yīn; #7B43
+筄 > yào; #7B44
+筅 > xiăn; #7B45
+筆 > bĭ; #7B46
+筇 > qíong; #7B47
+筈 > guā; #7B48
+等 > dĕng; #7B49
+筊 > jiăo; #7B4A
+筋 > jīn; #7B4B
+筌 > quán; #7B4C
+筍 > sŭn; #7B4D
+筎 > rú; #7B4E
+筏 > fá; #7B4F
+筐 > kuāng; #7B50
+筑 > zhú; #7B51
+筒 > tŏng; #7B52
+筓 > jī; #7B53
+答 > dá; #7B54
+筕 > xíng; #7B55
+策 > cè; #7B56
+筗 > zhòng; #7B57
+筘 > kòu; #7B58
+筙 > lái; #7B59
+筚 > bì; #7B5A
+筛 > shāi; #7B5B
+筜 > dāng; #7B5C
+筝 > zhēng; #7B5D
+筞 > cè; #7B5E
+筟 > fū; #7B5F
+筠 > yún; #7B60
+筡 > tú; #7B61
+筢 > pá; #7B62
+筣 > lì; #7B63
+筤 > láng; #7B64
+筥 > jŭ; #7B65
+筦 > guăn; #7B66
+筧 > jiăn; #7B67
+筨 > hán; #7B68
+筩 > tóng; #7B69
+筪 > xiá; #7B6A
+筫 > zhì; #7B6B
+筬 > chéng; #7B6C
+筭 > suàn; #7B6D
+筮 > shì; #7B6E
+筯 > zhù; #7B6F
+筰 > zúo; #7B70
+筱 > xiăo; #7B71
+筲 > shāo; #7B72
+筳 > tíng; #7B73
+筴 > cè; #7B74
+筵 > yán; #7B75
+筶 > găo; #7B76
+筷 > kuài; #7B77
+筸 > gān; #7B78
+筹 > chóu; #7B79
+筻 > gàng; #7B7B
+筼 > yún; #7B7C
+签 > qiān; #7B7E
+筿 > xiăo; #7B7F
+简 > jiăn; #7B80
+箁 > pú; #7B81
+箂 > lái; #7B82
+箃 > zōu; #7B83
+箄 > bì; #7B84
+箅 > bì; #7B85
+箆 > bì; #7B86
+箇 > gè; #7B87
+箈 > chí; #7B88
+箉 > guăi; #7B89
+箊 > yū; #7B8A
+箋 > jiān; #7B8B
+箌 > zhào; #7B8C
+箍 > gū; #7B8D
+箎 > chí; #7B8E
+箏 > zhēng; #7B8F
+箐 > jīng; #7B90
+箑 > shà; #7B91
+箒 > zhŏu; #7B92
+箓 > lù; #7B93
+箔 > bó; #7B94
+箕 > jī; #7B95
+箖 > lín; #7B96
+算 > suàn; #7B97
+箘 > jùn; #7B98
+箙 > fú; #7B99
+箚 > zhá; #7B9A
+箛 > gū; #7B9B
+箜 > kōng; #7B9C
+箝 > qián; #7B9D
+箞 > quān; #7B9E
+箟 > jùn; #7B9F
+箠 > chúi; #7BA0
+管 > guăn; #7BA1
+箢 > yuān; #7BA2
+箣 > cè; #7BA3
+箤 > jú; #7BA4
+箥 > bŏ; #7BA5
+箦 > zé; #7BA6
+箧 > qiè; #7BA7
+箨 > tùo; #7BA8
+箩 > lúo; #7BA9
+箪 > dān; #7BAA
+箫 > xiāo; #7BAB
+箬 > rùo; #7BAC
+箭 > jiàn; #7BAD
+箮 > xuan; #7BAE
+箯 > biān; #7BAF
+箰 > sŭn; #7BB0
+箱 > xiāng; #7BB1
+箲 > xiăn; #7BB2
+箳 > píng; #7BB3
+箴 > zhēn; #7BB4
+箵 > shĕng; #7BB5
+箶 > hú; #7BB6
+箷 > shī; #7BB7
+箸 > zhù; #7BB8
+箹 > yuē; #7BB9
+箺 > chŭn; #7BBA
+箻 > lǜ; #7BBB
+箼 > wū; #7BBC
+箽 > dŏng; #7BBD
+箾 > xiāo; #7BBE
+箿 > jí; #7BBF
+節 > jié; #7BC0
+篁 > huáng; #7BC1
+篂 > xīng; #7BC2
+篃 > méi; #7BC3
+範 > fàn; #7BC4
+篅 > chúi; #7BC5
+篆 > zhuàn; #7BC6
+篇 > piān; #7BC7
+篈 > fēng; #7BC8
+築 > zhú; #7BC9
+篊 > hóng; #7BCA
+篋 > qiè; #7BCB
+篌 > hóu; #7BCC
+篍 > qīu; #7BCD
+篎 > miăo; #7BCE
+篏 > qiàn; #7BCF
+篑 > kùi; #7BD1
+篓 > lŏu; #7BD3
+篔 > yún; #7BD4
+篕 > hé; #7BD5
+篖 > táng; #7BD6
+篗 > yuè; #7BD7
+篘 > chōu; #7BD8
+篙 > gāo; #7BD9
+篚 > fĕi; #7BDA
+篛 > rùo; #7BDB
+篜 > zhēng; #7BDC
+篝 > gōu; #7BDD
+篞 > niè; #7BDE
+篟 > qiàn; #7BDF
+篠 > xiăo; #7BE0
+篡 > cuàn; #7BE1
+篢 > gōng; #7BE2
+篣 > páng; #7BE3
+篤 > dŭ; #7BE4
+篥 > lì; #7BE5
+篦 > bì; #7BE6
+篧 > zhúo; #7BE7
+篨 > chú; #7BE8
+篩 > shāi; #7BE9
+篪 > chí; #7BEA
+篫 > zhú; #7BEB
+篬 > qiāng; #7BEC
+篭 > lóng; #7BED
+篮 > lán; #7BEE
+篯 > jiān; #7BEF
+篰 > bù; #7BF0
+篱 > lí; #7BF1
+篲 > hùi; #7BF2
+篳 > bì; #7BF3
+篴 > dí; #7BF4
+篵 > cōng; #7BF5
+篶 > yān; #7BF6
+篷 > péng; #7BF7
+篸 > sēn; #7BF8
+篹 > zhuàn; #7BF9
+篺 > pái; #7BFA
+篻 > piào; #7BFB
+篼 > dōu; #7BFC
+篽 > yŭ; #7BFD
+篾 > miè; #7BFE
+篿 > zhuān; #7BFF
+簀 > zé; #7C00
+簁 > xĭ; #7C01
+簂 > gúo; #7C02
+簃 > yí; #7C03
+簄 > hù; #7C04
+簅 > chăn; #7C05
+簆 > kòu; #7C06
+簇 > cù; #7C07
+簈 > píng; #7C08
+簉 > chòu; #7C09
+簊 > jī; #7C0A
+簋 > gŭi; #7C0B
+簌 > sù; #7C0C
+簍 > lŏu; #7C0D
+簎 > zhà; #7C0E
+簏 > lù; #7C0F
+簐 > niăn; #7C10
+簑 > sūo; #7C11
+簒 > cuàn; #7C12
+簔 > sūo; #7C14
+簕 > lè; #7C15
+簖 > duàn; #7C16
+簘 > xiāo; #7C18
+簙 > bó; #7C19
+簚 > mì; #7C1A
+簛 > sī; #7C1B
+簜 > dàng; #7C1C
+簝 > liáo; #7C1D
+簞 > dān; #7C1E
+簟 > diàn; #7C1F
+簠 > fŭ; #7C20
+簡 > jiăn; #7C21
+簢 > mĭn; #7C22
+簣 > kùi; #7C23
+簤 > dài; #7C24
+簥 > qiáo; #7C25
+簦 > dēng; #7C26
+簧 > huáng; #7C27
+簨 > sŭn; #7C28
+簩 > láo; #7C29
+簪 > zān; #7C2A
+簫 > xiāo; #7C2B
+簬 > dù; #7C2C
+簭 > shì; #7C2D
+簮 > zān; #7C2E
+簰 > pái; #7C30
+簲 > pái; #7C32
+簳 > gàn; #7C33
+簴 > jù; #7C34
+簵 > dù; #7C35
+簶 > lù; #7C36
+簷 > yán; #7C37
+簸 > bò; #7C38
+簹 > dāng; #7C39
+簺 > sài; #7C3A
+簻 > kē; #7C3B
+簼 > lóng; #7C3C
+簽 > qiān; #7C3D
+簾 > lián; #7C3E
+簿 > bó; #7C3F
+籀 > zhòu; #7C40
+籁 > lài; #7C41
+籃 > lán; #7C43
+籄 > kùi; #7C44
+籅 > yú; #7C45
+籆 > yuè; #7C46
+籇 > háo; #7C47
+籈 > zhēn; #7C48
+籉 > tái; #7C49
+籊 > tì; #7C4A
+籋 > mí; #7C4B
+籌 > chóu; #7C4C
+籍 > jí; #7C4D
+籐 > téng; #7C50
+籑 > zhuàn; #7C51
+籒 > zhòu; #7C52
+籓 > fān; #7C53
+籔 > sŏu; #7C54
+籕 > zhòu; #7C55
+籗 > zhúo; #7C57
+籘 > téng; #7C58
+籙 > lù; #7C59
+籚 > lú; #7C5A
+籛 > jiān; #7C5B
+籜 > tùo; #7C5C
+籝 > yíng; #7C5D
+籞 > yù; #7C5E
+籟 > lài; #7C5F
+籠 > lóng; #7C60
+籢 > lián; #7C62
+籣 > lán; #7C63
+籤 > qiān; #7C64
+籥 > yuè; #7C65
+籦 > zhōng; #7C66
+籧 > qú; #7C67
+籨 > lián; #7C68
+籩 > biān; #7C69
+籪 > duàn; #7C6A
+籫 > zuăn; #7C6B
+籬 > lí; #7C6C
+籭 > sī; #7C6D
+籮 > lúo; #7C6E
+籯 > yíng; #7C6F
+籰 > yuè; #7C70
+籱 > zhúo; #7C71
+籲 > xū; #7C72
+米 > mĭ; #7C73
+籴 > dí; #7C74
+籵 > fán; #7C75
+籶 > shēn; #7C76
+籷 > zhé; #7C77
+籸 > shēn; #7C78
+籹 > nǚ; #7C79
+籺 > xié; #7C7A
+类 > lèi; #7C7B
+籼 > xiān; #7C7C
+籽 > zĭ; #7C7D
+籾 > ní; #7C7E
+籿 > cùn; #7C7F
+粁 > qiān; #7C81
+粃 > bĭ; #7C83
+粄 > băn; #7C84
+粅 > wù; #7C85
+粆 > shā; #7C86
+粇 > kāng; #7C87
+粈 > rŏu; #7C88
+粉 > fĕn; #7C89
+粊 > bì; #7C8A
+粋 > cùi; #7C8B
+粍 > lí; #7C8D
+粎 > chĭ; #7C8E
+粑 > bā; #7C91
+粒 > lì; #7C92
+粓 > gān; #7C93
+粔 > jù; #7C94
+粕 > pò; #7C95
+粖 > mò; #7C96
+粗 > cū; #7C97
+粘 > nián; #7C98
+粙 > zhòu; #7C99
+粚 > lí; #7C9A
+粛 > sù; #7C9B
+粜 > tiào; #7C9C
+粝 > lì; #7C9D
+粞 > qī; #7C9E
+粟 > sù; #7C9F
+粠 > hóng; #7CA0
+粡 > tóng; #7CA1
+粢 > zī; #7CA2
+粣 > cè; #7CA3
+粤 > yuè; #7CA4
+粥 > zhōu; #7CA5
+粦 > lìn; #7CA6
+粧 > zhuāng; #7CA7
+粨 > băi; #7CA8
+粪 > fèn; #7CAA
+粮 > liáng; #7CAE
+粯 > xiàn; #7CAF
+粰 > fú; #7CB0
+粱 > liáng; #7CB1
+粲 > càn; #7CB2
+粳 > gēng; #7CB3
+粴 > lĭ; #7CB4
+粵 > yuè; #7CB5
+粶 > lù; #7CB6
+粷 > jú; #7CB7
+粸 > qí; #7CB8
+粹 > cùi; #7CB9
+粺 > bài; #7CBA
+粻 > zhāng; #7CBB
+粼 > lín; #7CBC
+粽 > zòng; #7CBD
+精 > jīng; #7CBE
+粿 > gŭo; #7CBF
+糁 > sān; #7CC1
+糂 > săn; #7CC2
+糃 > táng; #7CC3
+糄 > biān; #7CC4
+糅 > rŏu; #7CC5
+糆 > miàn; #7CC6
+糇 > hóu; #7CC7
+糈 > xŭ; #7CC8
+糉 > zòng; #7CC9
+糊 > hú; #7CCA
+糋 > jiàn; #7CCB
+糌 > zán; #7CCC
+糍 > cí; #7CCD
+糎 > lí; #7CCE
+糏 > xiè; #7CCF
+糐 > fū; #7CD0
+糑 > nì; #7CD1
+糒 > bèi; #7CD2
+糓 > gŭ; #7CD3
+糔 > xĭu; #7CD4
+糕 > gāo; #7CD5
+糖 > táng; #7CD6
+糗 > qĭu; #7CD7
+糙 > cāo; #7CD9
+糚 > zhuāng; #7CDA
+糛 > táng; #7CDB
+糜 > mí; #7CDC
+糝 > sān; #7CDD
+糞 > fèn; #7CDE
+糟 > zāo; #7CDF
+糠 > kāng; #7CE0
+糡 > jiàng; #7CE1
+糢 > mó; #7CE2
+糣 > săn; #7CE3
+糤 > săn; #7CE4
+糥 > nùo; #7CE5
+糦 > xī; #7CE6
+糧 > liáng; #7CE7
+糨 > jiàng; #7CE8
+糩 > kuài; #7CE9
+糪 > bó; #7CEA
+糫 > huán; #7CEB
+糭 > zòng; #7CED
+糮 > xiàn; #7CEE
+糯 > nùo; #7CEF
+糰 > tuán; #7CF0
+糱 > niè; #7CF1
+糲 > lì; #7CF2
+糳 > zùo; #7CF3
+糴 > dí; #7CF4
+糵 > niè; #7CF5
+糶 > tiào; #7CF6
+糷 > lán; #7CF7
+糸 > mì; #7CF8
+糹 > jiăo' 'sī' 'páng; #7CF9
+糺 > jīu; #7CFA
+系 > xì; #7CFB
+糼 > gōng; #7CFC
+糽 > zhĕng; #7CFD
+糾 > jīu; #7CFE
+糿 > yòu; #7CFF
+紀 > jì; #7D00
+紁 > chà; #7D01
+紂 > zhòu; #7D02
+紃 > xún; #7D03
+約 > yuē; #7D04
+紅 > hóng; #7D05
+紆 > yū; #7D06
+紇 > hé; #7D07
+紈 > wán; #7D08
+紉 > rèn; #7D09
+紊 > wèn; #7D0A
+紋 > wén; #7D0B
+紌 > qíu; #7D0C
+納 > nà; #7D0D
+紎 > zī; #7D0E
+紏 > tŏu; #7D0F
+紐 > nĭu; #7D10
+紑 > fóu; #7D11
+紒 > jiè; #7D12
+紓 > shū; #7D13
+純 > chún; #7D14
+紕 > pí; #7D15
+紖 > yĭn; #7D16
+紗 > shā; #7D17
+紘 > hóng; #7D18
+紙 > zhĭ; #7D19
+級 > jí; #7D1A
+紛 > fēn; #7D1B
+紜 > yún; #7D1C
+紝 > rén; #7D1D
+紞 > dăn; #7D1E
+紟 > jīn; #7D1F
+素 > sù; #7D20
+紡 > făng; #7D21
+索 > sŭo; #7D22
+紣 > cùi; #7D23
+紤 > jĭu; #7D24
+紥 > zhá; #7D25
+紧 > jĭn; #7D27
+紨 > fù; #7D28
+紩 > zhì; #7D29
+紪 > cĭ; #7D2A
+紫 > zĭ; #7D2B
+紬 > chóu; #7D2C
+紭 > hóng; #7D2D
+紮 > zhá; #7D2E
+累 > lèi; #7D2F
+細 > xì; #7D30
+紱 > fú; #7D31
+紲 > xiè; #7D32
+紳 > shēn; #7D33
+紴 > bèi; #7D34
+紵 > zhù; #7D35
+紶 > qŭ; #7D36
+紷 > líng; #7D37
+紸 > zhù; #7D38
+紹 > shào; #7D39
+紺 > gàn; #7D3A
+紻 > yāng; #7D3B
+紼 > fú; #7D3C
+紽 > túo; #7D3D
+紾 > zhĕn; #7D3E
+紿 > dài; #7D3F
+絀 > zhúo; #7D40
+絁 > shī; #7D41
+終 > zhōng; #7D42
+絃 > xián; #7D43
+組 > zŭ; #7D44
+絅 > jĭong; #7D45
+絆 > bàn; #7D46
+絇 > jù; #7D47
+絈 > mò; #7D48
+絉 > shù; #7D49
+絊 > zùi; #7D4A
+経 > jīng; #7D4C
+絍 > rén; #7D4D
+絎 > hèng; #7D4E
+絏 > xiè; #7D4F
+結 > jié; #7D50
+絑 > zhū; #7D51
+絒 > chóu; #7D52
+絓 > guà; #7D53
+絔 > băi; #7D54
+絕 > jué; #7D55
+絖 > kuàng; #7D56
+絗 > hú; #7D57
+絘 > cì; #7D58
+絙 > gēng; #7D59
+絚 > gēng; #7D5A
+絛 > tāo; #7D5B
+絜 > xié; #7D5C
+絝 > kù; #7D5D
+絞 > jiăo; #7D5E
+絟 > quān; #7D5F
+絠 > găi; #7D60
+絡 > lùo; #7D61
+絢 > xuàn; #7D62
+絣 > bīng; #7D63
+絤 > xiàn; #7D64
+絥 > fú; #7D65
+給 > gĕi; #7D66
+絧 > tóng; #7D67
+絨 > róng; #7D68
+絩 > tiào; #7D69
+絪 > yīn; #7D6A
+絫 > lĕi; #7D6B
+絬 > xiè; #7D6C
+絭 > quàn; #7D6D
+絮 > xù; #7D6E
+絯 > lǜn; #7D6F
+絰 > dié; #7D70
+統 > tŏng; #7D71
+絲 > sī; #7D72
+絳 > jiàng; #7D73
+絴 > xiáng; #7D74
+絵 > hùi; #7D75
+絶 > jué; #7D76
+絷 > zhí; #7D77
+絸 > jiăn; #7D78
+絹 > juàn; #7D79
+絺 > chī; #7D7A
+絻 > miăn; #7D7B
+絼 > zhĕn; #7D7C
+絽 > lǚ; #7D7D
+絾 > chéng; #7D7E
+絿 > qíu; #7D7F
+綀 > shū; #7D80
+綁 > băng; #7D81
+綂 > tŏng; #7D82
+綃 > xiāo; #7D83
+綄 > wàn; #7D84
+綅 > qīn; #7D85
+綆 > gĕng; #7D86
+綇 > xĭu; #7D87
+綈 > tí; #7D88
+綉 > xìu; #7D89
+綊 > xié; #7D8A
+綋 > hóng; #7D8B
+綌 > xì; #7D8C
+綍 > fú; #7D8D
+綎 > tīng; #7D8E
+綏 > sūi; #7D8F
+綐 > dùi; #7D90
+綑 > kŭn; #7D91
+綒 > fū; #7D92
+經 > jīng; #7D93
+綔 > hù; #7D94
+綕 > zhī; #7D95
+綖 > yán; #7D96
+綗 > jĭong; #7D97
+綘 > féng; #7D98
+継 > jì; #7D99
+綜 > zòng; #7D9C
+綝 > lín; #7D9D
+綞 > dŭo; #7D9E
+綟 > lì; #7D9F
+綠 > lǜ; #7DA0
+綡 > liáng; #7DA1
+綢 > chóu; #7DA2
+綣 > quăn; #7DA3
+綤 > shào; #7DA4
+綥 > qì; #7DA5
+綦 > qí; #7DA6
+綧 > zhŭn; #7DA7
+綨 > qí; #7DA8
+綩 > wăn; #7DA9
+綪 > qiàn; #7DAA
+綫 > xiàn; #7DAB
+綬 > shòu; #7DAC
+維 > wéi; #7DAD
+綮 > qĭ; #7DAE
+綯 > táo; #7DAF
+綰 > wăn; #7DB0
+綱 > gāng; #7DB1
+網 > wăng; #7DB2
+綳 > bēng; #7DB3
+綴 > zhùi; #7DB4
+綵 > căi; #7DB5
+綶 > gŭo; #7DB6
+綷 > cùi; #7DB7
+綸 > lún; #7DB8
+綹 > lĭu; #7DB9
+綺 > qĭ; #7DBA
+綻 > zhàn; #7DBB
+綼 > bēi; #7DBC
+綽 > chùo; #7DBD
+綾 > líng; #7DBE
+綿 > mián; #7DBF
+緀 > qī; #7DC0
+緁 > qiè; #7DC1
+緂 > tān; #7DC2
+緃 > zōng; #7DC3
+緄 > gŭn; #7DC4
+緅 > zōu; #7DC5
+緆 > yì; #7DC6
+緇 > zī; #7DC7
+緈 > xìng; #7DC8
+緉 > liăng; #7DC9
+緊 > jĭn; #7DCA
+緋 > fēi; #7DCB
+緌 > rúi; #7DCC
+緍 > mín; #7DCD
+緎 > yù; #7DCE
+総 > zŏng; #7DCF
+緐 > fán; #7DD0
+緑 > lǜ; #7DD1
+緒 > xù; #7DD2
+緓 > yingl; #7DD3
+緔 > zhàng; #7DD4
+緖 > xù; #7DD6
+緗 > xiāng; #7DD7
+緘 > jiān; #7DD8
+緙 > kè; #7DD9
+線 > xiàn; #7DDA
+緛 > ruăn; #7DDB
+緜 > mián; #7DDC
+緝 > qì; #7DDD
+緞 > duàn; #7DDE
+緟 > zhòng; #7DDF
+締 > dì; #7DE0
+緡 > mín; #7DE1
+緢 > miáo; #7DE2
+緣 > yuán; #7DE3
+緤 > xiè; #7DE4
+緥 > băo; #7DE5
+緦 > sī; #7DE6
+緧 > qīu; #7DE7
+編 > biān; #7DE8
+緩 > huăn; #7DE9
+緪 > gēng; #7DEA
+緫 > cōng; #7DEB
+緬 > miăn; #7DEC
+緭 > wèi; #7DED
+緮 > fù; #7DEE
+緯 > wĕi; #7DEF
+緰 > yú; #7DF0
+緱 > gōu; #7DF1
+緲 > miăo; #7DF2
+緳 > xié; #7DF3
+練 > liàn; #7DF4
+緵 > zōng; #7DF5
+緶 > biàn; #7DF6
+緷 > yùn; #7DF7
+緸 > yīn; #7DF8
+緹 > tí; #7DF9
+緺 > guā; #7DFA
+緻 > zhì; #7DFB
+緼 > yūn; #7DFC
+緽 > chēng; #7DFD
+緾 > chán; #7DFE
+緿 > dài; #7DFF
+縀 > xiá; #7E00
+縁 > yuán; #7E01
+縂 > zŏng; #7E02
+縃 > xū; #7E03
+縆 > gēng; #7E06
+縈 > yíng; #7E08
+縉 > jìn; #7E09
+縊 > yì; #7E0A
+縋 > zhùi; #7E0B
+縌 > nì; #7E0C
+縍 > bāng; #7E0D
+縎 > gŭ; #7E0E
+縏 > pán; #7E0F
+縐 > zhòu; #7E10
+縑 > jiān; #7E11
+縒 > cŭo; #7E12
+縓 > quăn; #7E13
+縔 > shuăng; #7E14
+縕 > yūn; #7E15
+縖 > xiá; #7E16
+縗 > shuāi; #7E17
+縘 > xī; #7E18
+縙 > róng; #7E19
+縚 > tāo; #7E1A
+縛 > fú; #7E1B
+縜 > yún; #7E1C
+縝 > zhēn; #7E1D
+縞 > găo; #7E1E
+縟 > rù; #7E1F
+縠 > hú; #7E20
+縡 > zăi; #7E21
+縢 > téng; #7E22
+縣 > xiàn; #7E23
+縤 > sù; #7E24
+縥 > zhĕn; #7E25
+縦 > zòng; #7E26
+縧 > tāo; #7E27
+縩 > cài; #7E29
+縪 > bì; #7E2A
+縫 > féng; #7E2B
+縬 > cù; #7E2C
+縭 > lí; #7E2D
+縮 > sūo; #7E2E
+縯 > yĭn; #7E2F
+縰 > xĭ; #7E30
+縱 > zòng; #7E31
+縲 > léi; #7E32
+縳 > zhuàn; #7E33
+縴 > qiān; #7E34
+縵 > màn; #7E35
+縶 > zhí; #7E36
+縷 > lǚ; #7E37
+縸 > mò; #7E38
+縹 > piăo; #7E39
+縺 > lián; #7E3A
+縻 > mí; #7E3B
+縼 > xuàn; #7E3C
+總 > zŏng; #7E3D
+績 > jī; #7E3E
+縿 > shān; #7E3F
+繀 > sùi; #7E40
+繁 > fán; #7E41
+繂 > shuài; #7E42
+繃 > bēng; #7E43
+繄 > yī; #7E44
+繅 > sāo; #7E45
+繆 > móu; #7E46
+繇 > zhòu; #7E47
+繈 > qiăng; #7E48
+繉 > hún; #7E49
+繋 > xì; #7E4B
+繍 > xìu; #7E4D
+繎 > rán; #7E4E
+繏 > xuàn; #7E4F
+繐 > hùi; #7E50
+繑 > qiāo; #7E51
+繒 > zēng; #7E52
+繓 > zŭo; #7E53
+織 > zhī; #7E54
+繕 > shàn; #7E55
+繖 > săn; #7E56
+繗 > lín; #7E57
+繘 > yù; #7E58
+繙 > fān; #7E59
+繚 > liáo; #7E5A
+繛 > chùo; #7E5B
+繜 > zūn; #7E5C
+繝 > jiàn; #7E5D
+繞 > rào; #7E5E
+繟 > chăn; #7E5F
+繠 > rŭi; #7E60
+繡 > xìu; #7E61
+繢 > hùi; #7E62
+繣 > huà; #7E63
+繤 > zuăn; #7E64
+繥 > xī; #7E65
+繦 > qiăng; #7E66
+繨 > dá; #7E68
+繩 > shéng; #7E69
+繪 > hùi; #7E6A
+繫 > xì; #7E6B
+繬 > sè; #7E6C
+繭 > jiăn; #7E6D
+繮 > jiāng; #7E6E
+繯 > huán; #7E6F
+繰 > zăo; #7E70
+繱 > cōng; #7E71
+繲 > jiè; #7E72
+繳 > jiăo; #7E73
+繴 > bò; #7E74
+繵 > chán; #7E75
+繶 > yì; #7E76
+繷 > náo; #7E77
+繸 > sùi; #7E78
+繹 > yì; #7E79
+繺 > shăi; #7E7A
+繻 > xū; #7E7B
+繼 > jì; #7E7C
+繽 > bīn; #7E7D
+繾 > qiăn; #7E7E
+繿 > lán; #7E7F
+纀 > pú; #7E80
+纁 > xūn; #7E81
+纂 > zuăn; #7E82
+纃 > qí; #7E83
+纄 > péng; #7E84
+纅 > lì; #7E85
+纆 > mò; #7E86
+纇 > lèi; #7E87
+纈 > xié; #7E88
+纉 > zuăn; #7E89
+纊 > kuàng; #7E8A
+纋 > yōu; #7E8B
+續 > xù; #7E8C
+纍 > léi; #7E8D
+纎 > xiān; #7E8E
+纏 > chán; #7E8F
+纑 > lú; #7E91
+纒 > chán; #7E92
+纓 > yīng; #7E93
+纔 > cái; #7E94
+纕 > xiāng; #7E95
+纖 > xiān; #7E96
+纗 > zūi; #7E97
+纘 > zuăn; #7E98
+纙 > lùo; #7E99
+纚 > xĭ; #7E9A
+纛 > dào; #7E9B
+纜 > làn; #7E9C
+纝 > léi; #7E9D
+纞 > liàn; #7E9E
+纟 > sī; #7E9F
+纠 > jīu; #7EA0
+纡 > yū; #7EA1
+红 > hóng; #7EA2
+纣 > zhòu; #7EA3
+纤 > xiān; #7EA4
+纥 > hé; #7EA5
+约 > yuē; #7EA6
+级 > jí; #7EA7
+纨 > wán; #7EA8
+纩 > kuàng; #7EA9
+纪 > jì; #7EAA
+纫 > rèn; #7EAB
+纬 > wĕi; #7EAC
+纭 > yún; #7EAD
+纮 > hóng; #7EAE
+纯 > chún; #7EAF
+纰 > pí; #7EB0
+纱 > shā; #7EB1
+纲 > gāng; #7EB2
+纳 > nà; #7EB3
+纴 > rén; #7EB4
+纵 > zòng; #7EB5
+纶 > lún; #7EB6
+纷 > fēn; #7EB7
+纸 > zhĭ; #7EB8
+纹 > wén; #7EB9
+纺 > făng; #7EBA
+纻 > zhù; #7EBB
+纼 > yĭn; #7EBC
+纽 > nĭu; #7EBD
+纾 > shū; #7EBE
+线 > xiàn; #7EBF
+绀 > gàn; #7EC0
+绁 > xiè; #7EC1
+绂 > fú; #7EC2
+练 > liàn; #7EC3
+组 > zŭ; #7EC4
+绅 > shēn; #7EC5
+细 > xì; #7EC6
+织 > zhī; #7EC7
+终 > zhōng; #7EC8
+绉 > zhòu; #7EC9
+绊 > bàn; #7ECA
+绋 > fú; #7ECB
+绌 > zhúo; #7ECC
+绍 > shào; #7ECD
+绎 > yì; #7ECE
+经 > jīng; #7ECF
+绐 > dài; #7ED0
+绑 > băng; #7ED1
+绒 > róng; #7ED2
+结 > jié; #7ED3
+绔 > kù; #7ED4
+绕 > rào; #7ED5
+绖 > dié; #7ED6
+绗 > hèng; #7ED7
+绘 > hùi; #7ED8
+给 > gĕi; #7ED9
+绚 > xuàn; #7EDA
+绛 > jiàng; #7EDB
+络 > lùo; #7EDC
+绝 > jué; #7EDD
+绞 > jiăo; #7EDE
+统 > tŏng; #7EDF
+绠 > gĕng; #7EE0
+绡 > xiāo; #7EE1
+绢 > juàn; #7EE2
+绣 > xìu; #7EE3
+绤 > xì; #7EE4
+绥 > sūi; #7EE5
+绦 > tāo; #7EE6
+继 > jì; #7EE7
+绨 > tí; #7EE8
+绩 > jī; #7EE9
+绪 > xù; #7EEA
+绫 > líng; #7EEB
+续 > xù; #7EED
+绮 > qĭ; #7EEE
+绯 > fēi; #7EEF
+绰 > chùo; #7EF0
+绱 > zhăng; #7EF1
+绲 > gŭn; #7EF2
+绳 > shéng; #7EF3
+维 > wéi; #7EF4
+绵 > mián; #7EF5
+绶 > shòu; #7EF6
+绷 > bēng; #7EF7
+绸 > chóu; #7EF8
+绹 > táo; #7EF9
+绺 > lĭu; #7EFA
+绻 > quăn; #7EFB
+综 > zòng; #7EFC
+绽 > zhàn; #7EFD
+绾 > wăn; #7EFE
+绿 > lǜ; #7EFF
+缀 > zhùi; #7F00
+缁 > zī; #7F01
+缂 > kè; #7F02
+缃 > xiāng; #7F03
+缄 > jiān; #7F04
+缅 > miăn; #7F05
+缆 > làn; #7F06
+缇 > tí; #7F07
+缈 > miăo; #7F08
+缉 > qì; #7F09
+缊 > yūn; #7F0A
+缋 > hùi; #7F0B
+缌 > sī; #7F0C
+缍 > dŭo; #7F0D
+缎 > duàn; #7F0E
+缏 > biàn; #7F0F
+缐 > xiàn; #7F10
+缑 > gōu; #7F11
+缒 > zhùi; #7F12
+缓 > huăn; #7F13
+缔 > dì; #7F14
+缕 > lǚ; #7F15
+编 > biān; #7F16
+缗 > mín; #7F17
+缘 > yuán; #7F18
+缙 > jìn; #7F19
+缚 > fú; #7F1A
+缛 > rù; #7F1B
+缜 > zhēn; #7F1C
+缝 > féng; #7F1D
+缞 > shuāi; #7F1E
+缟 > găo; #7F1F
+缠 > chán; #7F20
+缡 > lí; #7F21
+缢 > yì; #7F22
+缣 > jiān; #7F23
+缤 > bīn; #7F24
+缥 > piăo; #7F25
+缦 > màn; #7F26
+缧 > léi; #7F27
+缨 > yīng; #7F28
+缩 > sūo; #7F29
+缪 > móu; #7F2A
+缫 > sāo; #7F2B
+缬 > xié; #7F2C
+缭 > liáo; #7F2D
+缮 > shàn; #7F2E
+缯 > zēng; #7F2F
+缰 > jiāng; #7F30
+缱 > qiăn; #7F31
+缲 > zăo; #7F32
+缳 > huán; #7F33
+缴 > jiăo; #7F34
+缵 > zuăn; #7F35
+缶 > fŏu; #7F36
+缷 > xiè; #7F37
+缸 > gāng; #7F38
+缹 > fŏu; #7F39
+缺 > quē; #7F3A
+缻 > fŏu; #7F3B
+缽 > bō; #7F3D
+缾 > píng; #7F3E
+缿 > hòu; #7F3F
+罁 > gāng; #7F41
+罂 > yīng; #7F42
+罃 > yīng; #7F43
+罄 > qìng; #7F44
+罅 > xià; #7F45
+罆 > guàn; #7F46
+罇 > zūn; #7F47
+罈 > tán; #7F48
+罊 > qì; #7F4A
+罋 > wèng; #7F4B
+罌 > yīng; #7F4C
+罍 > léi; #7F4D
+罎 > tán; #7F4E
+罏 > lú; #7F4F
+罐 > guàn; #7F50
+网 > wăng; #7F51
+罒 > wăng; #7F52
+罓 > gāng; #7F53
+罔 > wăng; #7F54
+罕 > hăn; #7F55
+罗 > lūo; #7F57
+罘 > fú; #7F58
+罙 > mí; #7F59
+罚 > fá; #7F5A
+罛 > gū; #7F5B
+罜 > zhŭ; #7F5C
+罝 > jū; #7F5D
+罞 > máo; #7F5E
+罟 > gŭ; #7F5F
+罠 > mín; #7F60
+罡 > gāng; #7F61
+罢 > bà; #7F62
+罣 > guà; #7F63
+罤 > tí; #7F64
+罥 > juàn; #7F65
+罦 > fū; #7F66
+罧 > lín; #7F67
+罨 > yăn; #7F68
+罩 > zhào; #7F69
+罪 > zùi; #7F6A
+罫 > guà; #7F6B
+罬 > zhúo; #7F6C
+罭 > yù; #7F6D
+置 > zhì; #7F6E
+罯 > ăn; #7F6F
+罰 > fá; #7F70
+罱 > năn; #7F71
+署 > shŭ; #7F72
+罳 > sī; #7F73
+罴 > pí; #7F74
+罵 > mà; #7F75
+罶 > lĭu; #7F76
+罷 > bà; #7F77
+罸 > fá; #7F78
+罹 > lí; #7F79
+罺 > chāo; #7F7A
+罻 > wèi; #7F7B
+罼 > bì; #7F7C
+罽 > jì; #7F7D
+罾 > zēng; #7F7E
+罿 > tóng; #7F7F
+羀 > lĭu; #7F80
+羁 > jī; #7F81
+羂 > juàn; #7F82
+羃 > mì; #7F83
+羄 > zhào; #7F84
+羅 > lúo; #7F85
+羆 > pí; #7F86
+羇 > jī; #7F87
+羈 > jī; #7F88
+羉 > luán; #7F89
+羊 > yáng; #7F8A
+羋 > miē; #7F8B
+羌 > qiāng; #7F8C
+羍 > tà; #7F8D
+美 > mĕi; #7F8E
+羏 > yáng; #7F8F
+羐 > yŏu; #7F90
+羑 > yŏu; #7F91
+羒 > fén; #7F92
+羓 > bā; #7F93
+羔 > gāo; #7F94
+羕 > yàng; #7F95
+羖 > gŭ; #7F96
+羗 > qiāng; #7F97
+羘 > zāng; #7F98
+羙 > gāo; #7F99
+羚 > líng; #7F9A
+羛 > yì; #7F9B
+羜 > zhù; #7F9C
+羝 > dī; #7F9D
+羞 > xīu; #7F9E
+羟 > qiān; #7F9F
+羠 > yí; #7FA0
+羡 > xiàn; #7FA1
+羢 > róng; #7FA2
+羣 > qún; #7FA3
+群 > qún; #7FA4
+羥 > qiān; #7FA5
+羦 > huán; #7FA6
+羧 > zūi; #7FA7
+羨 > xiàn; #7FA8
+義 > yì; #7FA9
+羫 > qiāng; #7FAB
+羬 > xián; #7FAC
+羭 > yú; #7FAD
+羮 > gēng; #7FAE
+羯 > jié; #7FAF
+羰 > tāng; #7FB0
+羱 > yuán; #7FB1
+羲 > xī; #7FB2
+羳 > fán; #7FB3
+羴 > shān; #7FB4
+羵 > fĕn; #7FB5
+羶 > shān; #7FB6
+羷 > liăn; #7FB7
+羸 > léi; #7FB8
+羹 > gēng; #7FB9
+羺 > nóu; #7FBA
+羻 > qiàng; #7FBB
+羼 > chàn; #7FBC
+羽 > yŭ; #7FBD
+羾 > gòng; #7FBE
+羿 > yì; #7FBF
+翀 > chóng; #7FC0
+翁 > wēng; #7FC1
+翂 > fēn; #7FC2
+翃 > hóng; #7FC3
+翄 > chì; #7FC4
+翅 > chì; #7FC5
+翆 > cùi; #7FC6
+翇 > fú; #7FC7
+翈 > xiá; #7FC8
+翉 > pĕn; #7FC9
+翊 > yì; #7FCA
+翋 > lā; #7FCB
+翌 > yì; #7FCC
+翍 > pī; #7FCD
+翎 > líng; #7FCE
+翏 > lìu; #7FCF
+翐 > zhì; #7FD0
+翑 > qú; #7FD1
+習 > xí; #7FD2
+翓 > xié; #7FD3
+翔 > xiáng; #7FD4
+翕 > xì; #7FD5
+翖 > xì; #7FD6
+翗 > qí; #7FD7
+翘 > qiáo; #7FD8
+翙 > hùi; #7FD9
+翚 > hūi; #7FDA
+翛 > xiāo; #7FDB
+翜 > sè; #7FDC
+翝 > hóng; #7FDD
+翞 > jiāng; #7FDE
+翟 > dí; #7FDF
+翠 > cùi; #7FE0
+翡 > fĕi; #7FE1
+翢 > tāo; #7FE2
+翣 > shà; #7FE3
+翤 > chì; #7FE4
+翥 > zhù; #7FE5
+翦 > jiăn; #7FE6
+翧 > xuān; #7FE7
+翨 > shì; #7FE8
+翩 > piān; #7FE9
+翪 > zōng; #7FEA
+翫 > wàn; #7FEB
+翬 > hūi; #7FEC
+翭 > hóu; #7FED
+翮 > hé; #7FEE
+翯 > hè; #7FEF
+翰 > hàn; #7FF0
+翱 > áo; #7FF1
+翲 > piāo; #7FF2
+翳 > yì; #7FF3
+翴 > lián; #7FF4
+翵 > qú; #7FF5
+翷 > lín; #7FF7
+翸 > pĕn; #7FF8
+翹 > qiáo; #7FF9
+翺 > áo; #7FFA
+翻 > fān; #7FFB
+翼 > yì; #7FFC
+翽 > hùi; #7FFD
+翾 > xuān; #7FFE
+翿 > dào; #7FFF
+耀 > yào; #8000
+老 > lăo; #8001
+考 > kăo; #8003
+耄 > mào; #8004
+者 > zhĕ; #8005
+耆 > qí; #8006
+耇 > gŏu; #8007
+耈 > gŏu; #8008
+耉 > gŏu; #8009
+耊 > diè; #800A
+耋 > diè; #800B
+而 > ér; #800C
+耍 > shuă; #800D
+耎 > ruăn; #800E
+耏 > ér; #800F
+耐 > nài; #8010
+耑 > zhuān; #8011
+耒 > lĕi; #8012
+耓 > tīng; #8013
+耔 > zĭ; #8014
+耕 > gēng; #8015
+耖 > chào; #8016
+耗 > hào; #8017
+耘 > yún; #8018
+耙 > pá; #8019
+耚 > pī; #801A
+耛 > chí; #801B
+耜 > sì; #801C
+耝 > chú; #801D
+耞 > jiā; #801E
+耟 > jù; #801F
+耠 > hé; #8020
+耡 > chú; #8021
+耢 > lào; #8022
+耣 > lŭn; #8023
+耤 > jí; #8024
+耥 > tăng; #8025
+耦 > ŏu; #8026
+耧 > lóu; #8027
+耨 > nòu; #8028
+耩 > gōu; #8029
+耪 > păng; #802A
+耫 > zé; #802B
+耬 > lóu; #802C
+耭 > jī; #802D
+耮 > lào; #802E
+耯 > hùo; #802F
+耰 > yōu; #8030
+耱 > mò; #8031
+耲 > huái; #8032
+耳 > ĕr; #8033
+耴 > zhé; #8034
+耵 > tīng; #8035
+耶 > yé; #8036
+耷 > dā; #8037
+耸 > sŏng; #8038
+耹 > qín; #8039
+耺 > yún; #803A
+耻 > chĭ; #803B
+耼 > dān; #803C
+耽 > dān; #803D
+耾 > hóng; #803E
+耿 > gĕng; #803F
+聀 > zhí; #8040
+聂 > niè; #8042
+聃 > dān; #8043
+聄 > zhĕn; #8044
+聅 > chè; #8045
+聆 > líng; #8046
+聇 > zhēng; #8047
+聈 > yŏu; #8048
+聉 > wā; #8049
+聊 > liáo; #804A
+聋 > lóng; #804B
+职 > zhí; #804C
+聍 > níng; #804D
+聎 > tiāo; #804E
+聏 > ér; #804F
+聐 > yà; #8050
+聑 > dié; #8051
+聒 > guā; #8052
+联 > lián; #8054
+聕 > hào; #8055
+聖 > shèng; #8056
+聗 > liè; #8057
+聘 > pìn; #8058
+聙 > jīng; #8059
+聚 > jù; #805A
+聛 > bì; #805B
+聜 > dĭ; #805C
+聝 > gúo; #805D
+聞 > wén; #805E
+聟 > xù; #805F
+聠 > píng; #8060
+聡 > cōng; #8061
+聤 > tíng; #8064
+聥 > yŭ; #8065
+聦 > cōng; #8066
+聧 > kúi; #8067
+聩 > kùi; #8069
+聪 > cōng; #806A
+聫 > lián; #806B
+聬 > wĕng; #806C
+聭 > kùi; #806D
+聮 > lián; #806E
+聯 > lián; #806F
+聰 > cōng; #8070
+聱 > áo; #8071
+聲 > shēng; #8072
+聳 > sŏng; #8073
+聴 > tīng; #8074
+聵 > kùi; #8075
+聶 > niè; #8076
+職 > zhí; #8077
+聸 > dān; #8078
+聹 > níng; #8079
+聺 > qie; #807A
+聻 > jī; #807B
+聼 > tīng; #807C
+聽 > tīng; #807D
+聾 > lóng; #807E
+聿 > yù; #807F
+肀 > yù; #8080
+肁 > zhào; #8081
+肂 > sì; #8082
+肃 > sù; #8083
+肄 > yì; #8084
+肅 > sù; #8085
+肆 > sì; #8086
+肇 > zhào; #8087
+肈 > zhào; #8088
+肉 > ròu; #8089
+肊 > yì; #808A
+肋 > lè; #808B
+肌 > jī; #808C
+肍 > qíu; #808D
+肎 > kĕn; #808E
+肏 > cào; #808F
+肐 > gē; #8090
+肑 > dì; #8091
+肒 > huán; #8092
+肓 > huāng; #8093
+肔 > yĭ; #8094
+肕 > rèn; #8095
+肖 > xiào; #8096
+肗 > rŭ; #8097
+肘 > zhŏu; #8098
+肙 > yuān; #8099
+肚 > dù; #809A
+肛 > gāng; #809B
+肜 > róng; #809C
+肝 > gān; #809D
+肞 > chā; #809E
+肟 > wò; #809F
+肠 > cháng; #80A0
+股 > gŭ; #80A1
+肢 > zhī; #80A2
+肣 > hán; #80A3
+肤 > fū; #80A4
+肥 > féi; #80A5
+肦 > fén; #80A6
+肧 > pēi; #80A7
+肨 > pàng; #80A8
+肩 > jiān; #80A9
+肪 > fáng; #80AA
+肫 > zhūn; #80AB
+肬 > yóu; #80AC
+肭 > nà; #80AD
+肮 > háng; #80AE
+肯 > kĕn; #80AF
+肰 > rán; #80B0
+肱 > gōng; #80B1
+育 > yù; #80B2
+肳 > wĕn; #80B3
+肴 > yáo; #80B4
+肵 > jìn; #80B5
+肶 > pí; #80B6
+肷 > qiān; #80B7
+肸 > xì; #80B8
+肹 > xī; #80B9
+肺 > fèi; #80BA
+肻 > kĕn; #80BB
+肼 > jĭng; #80BC
+肽 > tài; #80BD
+肾 > shèn; #80BE
+肿 > zhŏng; #80BF
+胀 > zhàng; #80C0
+胁 > xié; #80C1
+胂 > shēn; #80C2
+胃 > wèi; #80C3
+胄 > zhòu; #80C4
+胅 > dié; #80C5
+胆 > dăn; #80C6
+胇 > fèi; #80C7
+胈 > bá; #80C8
+胉 > bó; #80C9
+胊 > qú; #80CA
+胋 > tián; #80CB
+背 > bèi; #80CC
+胍 > guā; #80CD
+胎 > tāi; #80CE
+胏 > zĭ; #80CF
+胐 > kū; #80D0
+胑 > zhī; #80D1
+胒 > nì; #80D2
+胓 > píng; #80D3
+胔 > zì; #80D4
+胕 > fù; #80D5
+胖 > pàng; #80D6
+胗 > zhēn; #80D7
+胘 > xián; #80D8
+胙 > zùo; #80D9
+胚 > pēi; #80DA
+胛 > jiă; #80DB
+胜 > shèng; #80DC
+胝 > zhī; #80DD
+胞 > bāo; #80DE
+胟 > mŭ; #80DF
+胠 > qū; #80E0
+胡 > hú; #80E1
+胢 > kē; #80E2
+胣 > yĭ; #80E3
+胤 > yìn; #80E4
+胥 > xū; #80E5
+胦 > yāng; #80E6
+胧 > lóng; #80E7
+胨 > dòng; #80E8
+胩 > kă; #80E9
+胪 > lú; #80EA
+胫 > jìng; #80EB
+胬 > nŭ; #80EC
+胭 > yān; #80ED
+胮 > páng; #80EE
+胯 > kuà; #80EF
+胰 > yí; #80F0
+胱 > guāng; #80F1
+胲 > gāi; #80F2
+胳 > gē; #80F3
+胴 > dòng; #80F4
+胵 > zhì; #80F5
+胶 > xiáo; #80F6
+胷 > xīong; #80F7
+胸 > xīong; #80F8
+胹 > ér; #80F9
+胺 > è; #80FA
+胻 > xíng; #80FB
+胼 > pián; #80FC
+能 > néng; #80FD
+胾 > zì; #80FE
+胿 > gui; #80FF
+脀 > chéng; #8100
+脁 > tiào; #8101
+脂 > zhī; #8102
+脃 > cùi; #8103
+脄 > méi; #8104
+脅 > xié; #8105
+脆 > cùi; #8106
+脇 > xié; #8107
+脈 > mò; #8108
+脉 > mài; #8109
+脊 > jí; #810A
+脍 > kuài; #810D
+脎 > sà; #810E
+脏 > zāng; #810F
+脐 > qí; #8110
+脑 > năo; #8111
+脒 > mĭ; #8112
+脓 > nóng; #8113
+脔 > luán; #8114
+脕 > wăn; #8115
+脖 > bó; #8116
+脗 > wĕn; #8117
+脘 > guăn; #8118
+脙 > qíu; #8119
+脚 > jiăo; #811A
+脛 > jìng; #811B
+脜 > róu; #811C
+脝 > hēng; #811D
+脞 > cŭo; #811E
+脟 > liè; #811F
+脠 > shān; #8120
+脡 > tĭng; #8121
+脢 > méi; #8122
+脣 > chún; #8123
+脤 > shèn; #8124
+脥 > xié; #8125
+脦 > de; #8126
+脧 > zūi; #8127
+脨 > cù; #8128
+脩 > xīu; #8129
+脪 > xìn; #812A
+脫 > tūo; #812B
+脬 > pāo; #812C
+脭 > chéng; #812D
+脮 > nĕi; #812E
+脯 > fŭ; #812F
+脰 > dòu; #8130
+脱 > tūo; #8131
+脲 > niào; #8132
+脴 > pĭ; #8134
+脵 > gŭ; #8135
+脶 > guā; #8136
+脷 > lì; #8137
+脸 > liăn; #8138
+脹 > zhàng; #8139
+脺 > cùi; #813A
+脻 > jié; #813B
+脼 > liăng; #813C
+脽 > zhōu; #813D
+脾 > pí; #813E
+脿 > biāo; #813F
+腀 > lún; #8140
+腁 > pián; #8141
+腂 > gùo; #8142
+腃 > kùi; #8143
+腄 > chúi; #8144
+腅 > dàn; #8145
+腆 > tiăn; #8146
+腇 > nĕi; #8147
+腈 > jīng; #8148
+腉 > jiē; #8149
+腊 > là; #814A
+腋 > yì; #814B
+腌 > ān; #814C
+腍 > rĕn; #814D
+腎 > shèn; #814E
+腏 > chùo; #814F
+腐 > fŭ; #8150
+腑 > fŭ; #8151
+腒 > jū; #8152
+腓 > féi; #8153
+腔 > qiāng; #8154
+腕 > wàn; #8155
+腖 > dòng; #8156
+腗 > pí; #8157
+腘 > gúo; #8158
+腙 > zōng; #8159
+腚 > dìng; #815A
+腛 > wū; #815B
+腜 > méi; #815C
+腝 > ruăn; #815D
+腞 > zhuàn; #815E
+腟 > zhì; #815F
+腠 > còu; #8160
+腡 > guā; #8161
+腢 > ŏu; #8162
+腣 > dì; #8163
+腤 > ān; #8164
+腥 > xīng; #8165
+腦 > năo; #8166
+腧 > yú; #8167
+腨 > chuăn; #8168
+腩 > năn; #8169
+腪 > yùn; #816A
+腫 > zhŏng; #816B
+腬 > róu; #816C
+腭 > è; #816D
+腮 > sāi; #816E
+腯 > tú; #816F
+腰 > yāo; #8170
+腱 > jiàn; #8171
+腲 > wĕi; #8172
+腳 > jiăo; #8173
+腴 > yú; #8174
+腵 > jiā; #8175
+腶 > duàn; #8176
+腷 > bì; #8177
+腸 > cháng; #8178
+腹 > fù; #8179
+腺 > xiàn; #817A
+腻 > nì; #817B
+腼 > miăn; #817C
+腽 > wà; #817D
+腾 > téng; #817E
+腿 > tŭi; #817F
+膀 > băng; #8180
+膁 > qiān; #8181
+膂 > lǚ; #8182
+膃 > wà; #8183
+膄 > sòu; #8184
+膅 > táng; #8185
+膆 > sù; #8186
+膇 > zhùi; #8187
+膈 > gé; #8188
+膉 > yì; #8189
+膊 > bó; #818A
+膋 > liáo; #818B
+膌 > jí; #818C
+膍 > pí; #818D
+膎 > xié; #818E
+膏 > gāo; #818F
+膐 > lǚ; #8190
+膑 > bìn; #8191
+膒 > ou; #8192
+膓 > cháng; #8193
+膔 > lù; #8194
+膕 > gúo; #8195
+膖 > pāng; #8196
+膗 > chuái; #8197
+膘 > piăo; #8198
+膙 > jiăng; #8199
+膚 > fū; #819A
+膛 > táng; #819B
+膜 > mò; #819C
+膝 > xī; #819D
+膞 > zhuān; #819E
+膟 > lǜ; #819F
+膠 > jiāo; #81A0
+膡 > yìng; #81A1
+膢 > lǘ; #81A2
+膣 > zhì; #81A3
+膥 > chūn; #81A5
+膦 > liăn; #81A6
+膧 > tóng; #81A7
+膨 > péng; #81A8
+膩 > nì; #81A9
+膪 > zhà; #81AA
+膫 > liáo; #81AB
+膬 > cùi; #81AC
+膭 > gūi; #81AD
+膮 > xiāo; #81AE
+膯 > tēng; #81AF
+膰 > fán; #81B0
+膱 > zhí; #81B1
+膲 > jiāo; #81B2
+膳 > shàn; #81B3
+膴 > wú; #81B4
+膵 > cùi; #81B5
+膶 > rùn; #81B6
+膷 > xiāng; #81B7
+膸 > sŭi; #81B8
+膹 > fèn; #81B9
+膺 > yīng; #81BA
+膻 > tăn; #81BB
+膼 > zhuā; #81BC
+膽 > dăn; #81BD
+膾 > kuài; #81BE
+膿 > nóng; #81BF
+臀 > tún; #81C0
+臁 > lián; #81C1
+臂 > bì; #81C2
+臃 > yŏng; #81C3
+臄 > jué; #81C4
+臅 > chù; #81C5
+臆 > yì; #81C6
+臇 > juăn; #81C7
+臈 > là; #81C8
+臉 > liăn; #81C9
+臊 > sāo; #81CA
+臋 > tún; #81CB
+臌 > gŭ; #81CC
+臍 > qí; #81CD
+臎 > cùi; #81CE
+臏 > bìn; #81CF
+臐 > xūn; #81D0
+臑 > rú; #81D1
+臒 > hùo; #81D2
+臓 > zàng; #81D3
+臔 > xiàn; #81D4
+臕 > biāo; #81D5
+臖 > xìng; #81D6
+臗 > kuān; #81D7
+臘 > là; #81D8
+臙 > yān; #81D9
+臚 > lú; #81DA
+臛 > hùo; #81DB
+臜 > zāng; #81DC
+臝 > lŭo; #81DD
+臞 > qú; #81DE
+臟 > zàng; #81DF
+臠 > luán; #81E0
+臡 > ní; #81E1
+臢 > zāng; #81E2
+臣 > chén; #81E3
+臤 > qiān; #81E4
+臥 > wò; #81E5
+臦 > guàng; #81E6
+臧 > záng; #81E7
+臨 > lín; #81E8
+臩 > guàng; #81E9
+自 > zì; #81EA
+臫 > jiăo; #81EB
+臬 > niè; #81EC
+臭 > chòu; #81ED
+臮 > jì; #81EE
+臯 > gāo; #81EF
+臰 > chòu; #81F0
+臱 > mián; #81F1
+臲 > niè; #81F2
+至 > zhì; #81F3
+致 > zhì; #81F4
+臵 > gé; #81F5
+臶 > jiàn; #81F6
+臷 > dié; #81F7
+臸 > zhì; #81F8
+臹 > xīu; #81F9
+臺 > tái; #81FA
+臻 > zhēn; #81FB
+臼 > jìu; #81FC
+臽 > xiàn; #81FD
+臾 > yú; #81FE
+臿 > chā; #81FF
+舀 > yăo; #8200
+舁 > yú; #8201
+舂 > chōng; #8202
+舃 > xì; #8203
+舄 > xì; #8204
+舅 > jìu; #8205
+舆 > yú; #8206
+與 > yŭ; #8207
+興 > xīng; #8208
+舉 > jŭ; #8209
+舊 > jìu; #820A
+舋 > xìn; #820B
+舌 > shé; #820C
+舍 > shè; #820D
+舏 > jĭu; #820F
+舐 > shì; #8210
+舑 > tān; #8211
+舒 > shū; #8212
+舓 > shì; #8213
+舔 > tiăn; #8214
+舕 > dàn; #8215
+舖 > pù; #8216
+舗 > pù; #8217
+舘 > guăn; #8218
+舙 > huà; #8219
+舚 > tān; #821A
+舛 > chuăn; #821B
+舜 > shùn; #821C
+舝 > xiá; #821D
+舞 > wŭ; #821E
+舟 > zhōu; #821F
+舠 > dāo; #8220
+舡 > gāng; #8221
+舢 > shān; #8222
+舣 > yĭ; #8223
+舥 > pā; #8225
+舦 > tài; #8226
+舧 > fán; #8227
+舨 > băn; #8228
+舩 > chuán; #8229
+航 > háng; #822A
+舫 > făng; #822B
+般 > bān; #822C
+舭 > què; #822D
+舯 > zhōng; #822F
+舰 > jiàn; #8230
+舱 > cāng; #8231
+舲 > líng; #8232
+舳 > zhú; #8233
+舴 > zé; #8234
+舵 > dùo; #8235
+舶 > bó; #8236
+舷 > xián; #8237
+舸 > gĕ; #8238
+船 > chuán; #8239
+舺 > jiá; #823A
+舻 > lŭ; #823B
+舼 > hóng; #823C
+舽 > páng; #823D
+舾 > xī; #823E
+艀 > fú; #8240
+艁 > zào; #8241
+艂 > féng; #8242
+艃 > lí; #8243
+艄 > shāo; #8244
+艅 > yú; #8245
+艆 > láng; #8246
+艇 > tĭng; #8247
+艉 > wĕi; #8249
+艊 > bó; #824A
+艋 > mĕng; #824B
+艌 > niàn; #824C
+艍 > jū; #824D
+艎 > huáng; #824E
+艏 > shŏu; #824F
+艐 > zōng; #8250
+艑 > biàn; #8251
+艒 > mào; #8252
+艓 > dié; #8253
+艕 > bàng; #8255
+艖 > chā; #8256
+艗 > yì; #8257
+艘 > sāo; #8258
+艙 > cāng; #8259
+艚 > cáo; #825A
+艛 > lóu; #825B
+艜 > dài; #825C
+艞 > yào; #825E
+艟 > tóng; #825F
+艡 > dāng; #8261
+艢 > tán; #8262
+艣 > lŭ; #8263
+艤 > yĭ; #8264
+艥 > jiè; #8265
+艦 > jiàn; #8266
+艧 > hùo; #8267
+艨 > méng; #8268
+艩 > qí; #8269
+艪 > lŭ; #826A
+艫 > lú; #826B
+艬 > chán; #826C
+艭 > shuāng; #826D
+艮 > gèn; #826E
+良 > liáng; #826F
+艰 > jiān; #8270
+艱 > jiān; #8271
+色 > sè; #8272
+艳 > yàn; #8273
+艴 > fú; #8274
+艵 > píng; #8275
+艶 > yàn; #8276
+艷 > yàn; #8277
+艸 > căo; #8278
+艹 > căo' 'zì' 'tóu; #8279
+艺 > yì; #827A
+艻 > lè; #827B
+艼 > tīng; #827C
+艽 > qíu; #827D
+艾 > ài; #827E
+艿 > năi; #827F
+芀 > tiáo; #8280
+芁 > jiāo; #8281
+节 > jié; #8282
+芃 > péng; #8283
+芄 > wán; #8284
+芅 > yì; #8285
+芆 > chāi; #8286
+芇 > mián; #8287
+芈 > miē; #8288
+芉 > gān; #8289
+芊 > qiān; #828A
+芋 > yù; #828B
+芌 > yù; #828C
+芍 > shùo; #828D
+芎 > qīong; #828E
+芏 > tŭ; #828F
+芐 > xià; #8290
+芑 > qĭ; #8291
+芒 > máng; #8292
+芓 > zĭ; #8293
+芔 > hŭi; #8294
+芕 > sūi; #8295
+芖 > zhì; #8296
+芗 > xiāng; #8297
+芘 > bī; #8298
+芙 > fú; #8299
+芚 > tún; #829A
+芛 > wĕi; #829B
+芜 > wú; #829C
+芝 > zhī; #829D
+芞 > qĭ; #829E
+芟 > shān; #829F
+芠 > wén; #82A0
+芡 > qiàn; #82A1
+芢 > rén; #82A2
+芣 > fŏu; #82A3
+芤 > kōu; #82A4
+芥 > jiè; #82A5
+芦 > lú; #82A6
+芧 > xù; #82A7
+芨 > jí; #82A8
+芩 > qín; #82A9
+芪 > qí; #82AA
+芫 > yuán; #82AB
+芬 > fēn; #82AC
+芭 > bā; #82AD
+芮 > rùi; #82AE
+芯 > xīn; #82AF
+芰 > jì; #82B0
+花 > huā; #82B1
+芲 > huā; #82B2
+芳 > fāng; #82B3
+芴 > wù; #82B4
+芵 > jué; #82B5
+芶 > gōu; #82B6
+芷 > zhĭ; #82B7
+芸 > yún; #82B8
+芹 > qín; #82B9
+芺 > ăo; #82BA
+芻 > chú; #82BB
+芼 > mào; #82BC
+芽 > yá; #82BD
+芾 > fèi; #82BE
+芿 > rèng; #82BF
+苀 > háng; #82C0
+苁 > cōng; #82C1
+苂 > yín; #82C2
+苃 > yŏu; #82C3
+苄 > biàn; #82C4
+苅 > yì; #82C5
+苇 > wĕi; #82C7
+苈 > lì; #82C8
+苉 > pĭ; #82C9
+苊 > è; #82CA
+苋 > xiàn; #82CB
+苌 > cháng; #82CC
+苍 > cāng; #82CD
+苎 > méng; #82CE
+苏 > sū; #82CF
+苐 > yí; #82D0
+苑 > yuàn; #82D1
+苒 > răn; #82D2
+苓 > líng; #82D3
+苔 > tái; #82D4
+苕 > tiáo; #82D5
+苖 > dĭ; #82D6
+苗 > miáo; #82D7
+苘 > qĭong; #82D8
+苙 > lì; #82D9
+苚 > yòng; #82DA
+苛 > kē; #82DB
+苜 > mù; #82DC
+苝 > pèi; #82DD
+苞 > bāo; #82DE
+苟 > gŏu; #82DF
+苠 > mín; #82E0
+苡 > yĭ; #82E1
+苢 > yĭ; #82E2
+苣 > jù; #82E3
+苤 > pĭ; #82E4
+若 > rùo; #82E5
+苦 > kŭ; #82E6
+苧 > zhù; #82E7
+苨 > nĭ; #82E8
+苩 > bó; #82E9
+苪 > bĭng; #82EA
+苫 > shān; #82EB
+苬 > qíu; #82EC
+苭 > yăo; #82ED
+苮 > xiān; #82EE
+苯 > bĕn; #82EF
+苰 > hóng; #82F0
+英 > yīng; #82F1
+苲 > zhă; #82F2
+苳 > dōng; #82F3
+苴 > jū; #82F4
+苵 > dié; #82F5
+苶 > nié; #82F6
+苷 > gān; #82F7
+苸 > hū; #82F8
+苹 > píng; #82F9
+苺 > méi; #82FA
+苻 > fú; #82FB
+苼 > shēng; #82FC
+苽 > gū; #82FD
+苾 > bì; #82FE
+苿 > wèi; #82FF
+茀 > fú; #8300
+茁 > zhúo; #8301
+茂 > mào; #8302
+范 > fàn; #8303
+茄 > qié; #8304
+茅 > máo; #8305
+茆 > măo; #8306
+茇 > bá; #8307
+茈 > zĭ; #8308
+茉 > mò; #8309
+茊 > zī; #830A
+茋 > dĭ; #830B
+茌 > chí; #830C
+茍 > jì; #830D
+茎 > jīng; #830E
+茏 > lóng; #830F
+茑 > niăo; #8311
+茓 > xué; #8313
+茔 > yíng; #8314
+茕 > qíong; #8315
+茖 > gé; #8316
+茗 > mĭng; #8317
+茘 > lì; #8318
+茙 > róng; #8319
+茚 > yìn; #831A
+茛 > gèn; #831B
+茜 > qiàn; #831C
+茝 > chăi; #831D
+茞 > chén; #831E
+茟 > yù; #831F
+茠 > xīu; #8320
+茡 > zì; #8321
+茢 > liè; #8322
+茣 > wú; #8323
+茤 > jì; #8324
+茥 > kūi; #8325
+茦 > cè; #8326
+茧 > chóng; #8327
+茨 > cí; #8328
+茩 > gŏu; #8329
+茪 > guāng; #832A
+茫 > máng; #832B
+茬 > chí; #832C
+茭 > jiāo; #832D
+茮 > jiāo; #832E
+茯 > fú; #832F
+茰 > yú; #8330
+茱 > zhū; #8331
+茲 > zī; #8332
+茳 > jiāng; #8333
+茴 > húi; #8334
+茵 > yīn; #8335
+茶 > chá; #8336
+茷 > fá; #8337
+茸 > róng; #8338
+茹 > rú; #8339
+茺 > chōng; #833A
+茻 > măng; #833B
+茼 > tóng; #833C
+茽 > zhòng; #833D
+茿 > zhú; #833F
+荀 > xún; #8340
+荁 > huán; #8341
+荂 > kuā; #8342
+荃 > quán; #8343
+荄 > gāi; #8344
+荅 > dā; #8345
+荆 > jīng; #8346
+荇 > xìng; #8347
+荈 > quàn; #8348
+草 > căo; #8349
+荊 > jīng; #834A
+荋 > ér; #834B
+荌 > àn; #834C
+荍 > shōu; #834D
+荎 > chí; #834E
+荏 > rĕn; #834F
+荐 > jiàn; #8350
+荑 > tí; #8351
+荒 > huāng; #8352
+荓 > píng; #8353
+荔 > lì; #8354
+荕 > jīn; #8355
+荖 > lăo; #8356
+荗 > shù; #8357
+荘 > zhuāng; #8358
+荙 > dá; #8359
+荚 > jiá; #835A
+荛 > ráo; #835B
+荜 > bì; #835C
+荝 > zé; #835D
+荞 > qiáo; #835E
+荟 > hùi; #835F
+荠 > qí; #8360
+荡 > dàng; #8361
+荣 > róng; #8363
+荤 > hūn; #8364
+荥 > yíng; #8365
+荦 > lùo; #8366
+荧 > yíng; #8367
+荨 > xún; #8368
+荩 > jìn; #8369
+荪 > sūn; #836A
+荫 > yìn; #836B
+荬 > măi; #836C
+荭 > hóng; #836D
+荮 > zhòu; #836E
+药 > yào; #836F
+荰 > dù; #8370
+荱 > wĕi; #8371
+荲 > chù; #8372
+荳 > dòu; #8373
+荴 > fū; #8374
+荵 > rĕn; #8375
+荶 > yín; #8376
+荷 > hé; #8377
+荸 > bí; #8378
+荹 > bù; #8379
+荺 > yún; #837A
+荻 > dí; #837B
+荼 > tú; #837C
+荽 > sūi; #837D
+荾 > sūi; #837E
+荿 > chéng; #837F
+莀 > chén; #8380
+莁 > wú; #8381
+莂 > bié; #8382
+莃 > xī; #8383
+莄 > gĕng; #8384
+莅 > lì; #8385
+莆 > fŭ; #8386
+莇 > zhù; #8387
+莈 > mò; #8388
+莉 > lì; #8389
+莊 > zhuāng; #838A
+莋 > jí; #838B
+莌 > dúo; #838C
+莍 > qíu; #838D
+莎 > shā; #838E
+莏 > sūo; #838F
+莐 > chén; #8390
+莑 > fēng; #8391
+莒 > jŭ; #8392
+莓 > méi; #8393
+莔 > méng; #8394
+莕 > xìng; #8395
+莖 > jīng; #8396
+莗 > chē; #8397
+莘 > xīn; #8398
+莙 > jūn; #8399
+莚 > yán; #839A
+莛 > tíng; #839B
+莜 > diào; #839C
+莝 > cùo; #839D
+莞 > wăn; #839E
+莟 > hàn; #839F
+莠 > yŏu; #83A0
+莡 > cùo; #83A1
+莢 > jiá; #83A2
+莣 > wáng; #83A3
+莤 > yóu; #83A4
+莥 > nĭu; #83A5
+莦 > shāo; #83A6
+莧 > xiàn; #83A7
+莨 > láng; #83A8
+莩 > fú; #83A9
+莪 > é; #83AA
+莫 > mò; #83AB
+莬 > wèn; #83AC
+莭 > jié; #83AD
+莮 > nán; #83AE
+莯 > mù; #83AF
+莰 > kăn; #83B0
+莱 > lái; #83B1
+莲 > lián; #83B2
+莳 > shí; #83B3
+莴 > wō; #83B4
+莶 > liăn; #83B6
+获 > hùo; #83B7
+莸 > yóu; #83B8
+莹 > yíng; #83B9
+莺 > yīng; #83BA
+莼 > chún; #83BC
+莽 > măng; #83BD
+莾 > măng; #83BE
+莿 > cì; #83BF
+菀 > wăn; #83C0
+菁 > jīng; #83C1
+菂 > dī; #83C2
+菃 > qú; #83C3
+菄 > dōng; #83C4
+菅 > jiān; #83C5
+菆 > zōu; #83C6
+菇 > gū; #83C7
+菈 > lā; #83C8
+菉 > lù; #83C9
+菊 > jú; #83CA
+菋 > wèi; #83CB
+菌 > jùn; #83CC
+菍 > niè; #83CD
+菎 > kūn; #83CE
+菏 > hé; #83CF
+菐 > pú; #83D0
+菑 > zī; #83D1
+菒 > găo; #83D2
+菓 > gŭo; #83D3
+菔 > fú; #83D4
+菕 > lún; #83D5
+菖 > chāng; #83D6
+菗 > chóu; #83D7
+菘 > sōng; #83D8
+菙 > chúi; #83D9
+菚 > zhàn; #83DA
+菛 > mén; #83DB
+菜 > cài; #83DC
+菝 > bá; #83DD
+菞 > lí; #83DE
+菟 > tù; #83DF
+菠 > bō; #83E0
+菡 > hàn; #83E1
+菢 > bào; #83E2
+菣 > qìn; #83E3
+菤 > juăn; #83E4
+菥 > xī; #83E5
+菦 > qín; #83E6
+菧 > dĭ; #83E7
+菨 > jiē; #83E8
+菩 > pú; #83E9
+菪 > dàng; #83EA
+菫 > jĭn; #83EB
+菬 > zhăo; #83EC
+菭 > tái; #83ED
+菮 > gēng; #83EE
+華 > huá; #83EF
+菰 > gū; #83F0
+菱 > líng; #83F1
+菲 > fēi; #83F2
+菳 > jīn; #83F3
+菴 > ān; #83F4
+菵 > wăng; #83F5
+菶 > bĕng; #83F6
+菷 > zhŏu; #83F7
+菸 > yān; #83F8
+菹 > jū; #83F9
+菺 > jiān; #83FA
+菻 > lĭn; #83FB
+菼 > tăn; #83FC
+菽 > shú; #83FD
+菾 > tián; #83FE
+菿 > dào; #83FF
+萀 > hŭ; #8400
+萁 > qí; #8401
+萂 > hé; #8402
+萃 > cùi; #8403
+萄 > táo; #8404
+萅 > chūn; #8405
+萆 > bēi; #8406
+萇 > cháng; #8407
+萈 > huán; #8408
+萉 > féi; #8409
+萊 > lái; #840A
+萋 > qī; #840B
+萌 > méng; #840C
+萍 > píng; #840D
+萎 > wēi; #840E
+萏 > dàn; #840F
+萐 > shà; #8410
+萑 > huán; #8411
+萒 > yăn; #8412
+萓 > yí; #8413
+萔 > tiáo; #8414
+萕 > qí; #8415
+萖 > wăn; #8416
+萗 > cè; #8417
+萘 > nài; #8418
+萚 > tùo; #841A
+萛 > jīu; #841B
+萜 > tiē; #841C
+萝 > lúo; #841D
+萠 > méng; #8420
+萤 > yíng; #8424
+营 > yíng; #8425
+萦 > yíng; #8426
+萧 > xiāo; #8427
+萨 > sà; #8428
+萩 > qīu; #8429
+萪 > kē; #842A
+萫 > xiàng; #842B
+萬 > wàn; #842C
+萭 > yŭ; #842D
+萮 > yù; #842E
+萯 > fù; #842F
+萰 > liàn; #8430
+萱 > xuān; #8431
+萲 > yuán; #8432
+萳 > nán; #8433
+萴 > zé; #8434
+萵 > wō; #8435
+萶 > chŭn; #8436
+萷 > xiāo; #8437
+萸 > yú; #8438
+萹 > piān; #8439
+萺 > mào; #843A
+萻 > ān; #843B
+萼 > è; #843C
+落 > lùo; #843D
+萾 > yíng; #843E
+萿 > húo; #843F
+葀 > guā; #8440
+葁 > jiāng; #8441
+葂 > miăn; #8442
+葃 > zúo; #8443
+葄 > zùo; #8444
+葅 > jū; #8445
+葆 > băo; #8446
+葇 > róu; #8447
+葈 > xĭ; #8448
+葉 > xié; #8449
+葊 > ān; #844A
+葋 > qú; #844B
+葌 > jiān; #844C
+葍 > fú; #844D
+葎 > lǜ; #844E
+葏 > jīng; #844F
+葐 > pén; #8450
+葑 > fēng; #8451
+葒 > hóng; #8452
+葓 > hóng; #8453
+葔 > hóu; #8454
+葕 > yán; #8455
+葖 > tú; #8456
+著 > zhù; #8457
+葘 > zī; #8458
+葙 > xiāng; #8459
+葚 > shèn; #845A
+葛 > gĕ; #845B
+葜 > jié; #845C
+葝 > jìng; #845D
+葞 > mĭ; #845E
+葟 > huáng; #845F
+葠 > shēn; #8460
+葡 > pú; #8461
+葢 > gài; #8462
+董 > dŏng; #8463
+葤 > zhòu; #8464
+葥 > qián; #8465
+葦 > wĕi; #8466
+葧 > bó; #8467
+葨 > wēi; #8468
+葩 > pā; #8469
+葪 > jì; #846A
+葫 > hú; #846B
+葬 > zàng; #846C
+葭 > jiā; #846D
+葮 > duàn; #846E
+葯 > yào; #846F
+葰 > jùn; #8470
+葱 > cōng; #8471
+葲 > quán; #8472
+葳 > wēi; #8473
+葴 > xián; #8474
+葵 > kúi; #8475
+葶 > tíng; #8476
+葷 > hūn; #8477
+葸 > xĭ; #8478
+葹 > shī; #8479
+葺 > qì; #847A
+葻 > lán; #847B
+葼 > zōng; #847C
+葽 > yāo; #847D
+葾 > yuān; #847E
+葿 > méi; #847F
+蒀 > yūn; #8480
+蒁 > shù; #8481
+蒂 > dì; #8482
+蒃 > zhuàn; #8483
+蒄 > guān; #8484
+蒆 > xuē; #8486
+蒇 > chăn; #8487
+蒈 > kăi; #8488
+蒉 > kùi; #8489
+蒋 > jiăng; #848B
+蒌 > lóu; #848C
+蒍 > wéi; #848D
+蒎 > pài; #848E
+蒐 > sōu; #8490
+蒑 > yīn; #8491
+蒒 > shī; #8492
+蒓 > chún; #8493
+蒔 > shí; #8494
+蒕 > yūn; #8495
+蒖 > zhēn; #8496
+蒗 > làng; #8497
+蒘 > nú; #8498
+蒙 > méng; #8499
+蒚 > hé; #849A
+蒛 > quē; #849B
+蒜 > suàn; #849C
+蒝 > yuán; #849D
+蒞 > lì; #849E
+蒟 > jŭ; #849F
+蒠 > xí; #84A0
+蒡 > páng; #84A1
+蒢 > chú; #84A2
+蒣 > xú; #84A3
+蒤 > tú; #84A4
+蒥 > líu; #84A5
+蒦 > wò; #84A6
+蒧 > zhēn; #84A7
+蒨 > qiàn; #84A8
+蒩 > zū; #84A9
+蒪 > pò; #84AA
+蒫 > cūo; #84AB
+蒬 > yuān; #84AC
+蒭 > chú; #84AD
+蒮 > yù; #84AE
+蒯 > kuăi; #84AF
+蒰 > pán; #84B0
+蒱 > pú; #84B1
+蒲 > pú; #84B2
+蒳 > nà; #84B3
+蒴 > shùo; #84B4
+蒵 > xī; #84B5
+蒶 > fén; #84B6
+蒷 > yún; #84B7
+蒸 > zhēng; #84B8
+蒹 > jiān; #84B9
+蒺 > jí; #84BA
+蒻 > rùo; #84BB
+蒼 > cāng; #84BC
+蒽 > ēn; #84BD
+蒾 > mí; #84BE
+蒿 > hāo; #84BF
+蓀 > sūn; #84C0
+蓁 > zhēn; #84C1
+蓂 > míng; #84C2
+蓃 > sou; #84C3
+蓄 > xù; #84C4
+蓅 > líu; #84C5
+蓆 > xí; #84C6
+蓇 > gŭ; #84C7
+蓈 > láng; #84C8
+蓉 > róng; #84C9
+蓊 > wĕng; #84CA
+蓋 > gài; #84CB
+蓌 > cùo; #84CC
+蓍 > shī; #84CD
+蓎 > táng; #84CE
+蓏 > lŭo; #84CF
+蓐 > rù; #84D0
+蓑 > sūo; #84D1
+蓒 > xiān; #84D2
+蓓 > bèi; #84D3
+蓔 > yăo; #84D4
+蓕 > gùi; #84D5
+蓖 > bī; #84D6
+蓗 > zŏng; #84D7
+蓘 > gŭn; #84D8
+蓚 > xīu; #84DA
+蓛 > cè; #84DB
+蓝 > lán; #84DD
+蓟 > jì; #84DF
+蓠 > lí; #84E0
+蓡 > cān; #84E1
+蓢 > láng; #84E2
+蓣 > yù; #84E3
+蓥 > yìng; #84E5
+蓦 > mò; #84E6
+蓧 > diào; #84E7
+蓨 > tiāo; #84E8
+蓩 > mào; #84E9
+蓪 > tōng; #84EA
+蓫 > zhú; #84EB
+蓬 > péng; #84EC
+蓭 > ān; #84ED
+蓮 > lián; #84EE
+蓯 > cōng; #84EF
+蓰 > xĭ; #84F0
+蓱 > píng; #84F1
+蓲 > qīu; #84F2
+蓳 > jìn; #84F3
+蓴 > chún; #84F4
+蓵 > jié; #84F5
+蓶 > wĕi; #84F6
+蓷 > tūi; #84F7
+蓸 > cáo; #84F8
+蓹 > yŭ; #84F9
+蓺 > yì; #84FA
+蓻 > jí; #84FB
+蓼 > liăo; #84FC
+蓽 > bì; #84FD
+蓾 > lŭ; #84FE
+蓿 > sù; #84FF
+蔀 > bù; #8500
+蔁 > zhāng; #8501
+蔂 > lúo; #8502
+蔃 > jiàng; #8503
+蔄 > màn; #8504
+蔅 > yán; #8505
+蔆 > líng; #8506
+蔇 > jì; #8507
+蔈 > piăo; #8508
+蔉 > gŭn; #8509
+蔊 > hăn; #850A
+蔋 > dí; #850B
+蔌 > sù; #850C
+蔍 > lù; #850D
+蔎 > shè; #850E
+蔏 > shāng; #850F
+蔐 > dí; #8510
+蔑 > miè; #8511
+蔒 > xūn; #8512
+蔓 > màn; #8513
+蔔 > bó; #8514
+蔕 > dì; #8515
+蔖 > cúo; #8516
+蔗 > zhè; #8517
+蔘 > sēn; #8518
+蔙 > xuàn; #8519
+蔚 > wèi; #851A
+蔛 > hú; #851B
+蔜 > áo; #851C
+蔝 > mĭ; #851D
+蔞 > lóu; #851E
+蔟 > cù; #851F
+蔠 > zhōng; #8520
+蔡 > cài; #8521
+蔢 > pó; #8522
+蔣 > jiăng; #8523
+蔤 > mì; #8524
+蔥 > cōng; #8525
+蔦 > niăo; #8526
+蔧 > hùi; #8527
+蔨 > jùn; #8528
+蔩 > yín; #8529
+蔪 > jiàn; #852A
+蔫 > yān; #852B
+蔬 > shū; #852C
+蔭 > yìn; #852D
+蔮 > kùi; #852E
+蔯 > chén; #852F
+蔰 > hù; #8530
+蔱 > shā; #8531
+蔲 > kòu; #8532
+蔳 > qiàn; #8533
+蔴 > má; #8534
+蔵 > zāng; #8535
+蔷 > qiáng; #8537
+蔸 > dōu; #8538
+蔹 > liàn; #8539
+蔺 > lìn; #853A
+蔻 > kòu; #853B
+蔼 > ăi; #853C
+蔽 > bì; #853D
+蔾 > lí; #853E
+蔿 > wéi; #853F
+蕀 > jí; #8540
+蕁 > xún; #8541
+蕂 > shèng; #8542
+蕃 > fán; #8543
+蕄 > méng; #8544
+蕅 > ŏu; #8545
+蕆 > chăn; #8546
+蕇 > diăn; #8547
+蕈 > xùn; #8548
+蕉 > jiāo; #8549
+蕊 > rŭi; #854A
+蕋 > rŭi; #854B
+蕌 > lĕi; #854C
+蕍 > yú; #854D
+蕎 > qiáo; #854E
+蕏 > chú; #854F
+蕐 > huá; #8550
+蕑 > jiān; #8551
+蕒 > măi; #8552
+蕓 > yún; #8553
+蕔 > bāo; #8554
+蕕 > yóu; #8555
+蕖 > qú; #8556
+蕗 > lù; #8557
+蕘 > ráo; #8558
+蕙 > hùi; #8559
+蕚 > è; #855A
+蕛 > téng; #855B
+蕜 > fĕi; #855C
+蕝 > jué; #855D
+蕞 > zùi; #855E
+蕟 > fà; #855F
+蕠 > rú; #8560
+蕡 > fén; #8561
+蕢 > kùi; #8562
+蕣 > shùn; #8563
+蕤 > rúi; #8564
+蕥 > yă; #8565
+蕦 > xū; #8566
+蕧 > fù; #8567
+蕨 > jué; #8568
+蕩 > dàng; #8569
+蕪 > wú; #856A
+蕫 > tóng; #856B
+蕬 > sī; #856C
+蕭 > xiāo; #856D
+蕮 > xì; #856E
+蕯 > lóng; #856F
+蕰 > yùn; #8570
+蕲 > qí; #8572
+蕳 > jiān; #8573
+蕴 > yùn; #8574
+蕵 > sūn; #8575
+蕶 > líng; #8576
+蕷 > yù; #8577
+蕸 > xiá; #8578
+蕹 > yōng; #8579
+蕺 > jí; #857A
+蕻 > hòng; #857B
+蕼 > sì; #857C
+蕽 > nóng; #857D
+蕾 > lĕi; #857E
+蕿 > xuān; #857F
+薀 > yùn; #8580
+薁 > yù; #8581
+薂 > xí; #8582
+薃 > hào; #8583
+薄 > bó; #8584
+薅 > hāo; #8585
+薆 > ài; #8586
+薇 > wéi; #8587
+薈 > hùi; #8588
+薉 > wèi; #8589
+薊 > jì; #858A
+薋 > cī; #858B
+薌 > xiāng; #858C
+薍 > luàn; #858D
+薎 > miè; #858E
+薏 > yì; #858F
+薐 > léng; #8590
+薑 > jiāng; #8591
+薒 > càn; #8592
+薓 > shēn; #8593
+薔 > qiáng; #8594
+薕 > lián; #8595
+薖 > kē; #8596
+薗 > yuán; #8597
+薘 > dá; #8598
+薙 > tì; #8599
+薚 > táng; #859A
+薛 > xiē; #859B
+薜 > bì; #859C
+薝 > zhán; #859D
+薞 > sūn; #859E
+薟 > liăn; #859F
+薠 > fán; #85A0
+薡 > dĭng; #85A1
+薢 > jiē; #85A2
+薣 > gŭ; #85A3
+薤 > xiè; #85A4
+薥 > shŭ; #85A5
+薦 > jiàn; #85A6
+薧 > kăo; #85A7
+薨 > hōng; #85A8
+薩 > sà; #85A9
+薪 > xīn; #85AA
+薫 > xūn; #85AB
+薬 > yào; #85AC
+薮 > sŏu; #85AE
+薯 > shŭ; #85AF
+薰 > xūn; #85B0
+薱 > dùi; #85B1
+薲 > pín; #85B2
+薳 > wĕi; #85B3
+薴 > néng; #85B4
+薵 > chóu; #85B5
+薶 > mái; #85B6
+薷 > rú; #85B7
+薸 > piāo; #85B8
+薹 > tái; #85B9
+薺 > qí; #85BA
+薻 > zăo; #85BB
+薼 > chén; #85BC
+薽 > zhēn; #85BD
+薾 > ĕr; #85BE
+薿 > nĭ; #85BF
+藀 > yíng; #85C0
+藁 > găo; #85C1
+藂 > còng; #85C2
+藃 > xiāo; #85C3
+藄 > qí; #85C4
+藅 > fá; #85C5
+藆 > jiăn; #85C6
+藇 > xù; #85C7
+藈 > kūi; #85C8
+藉 > jiè; #85C9
+藊 > biăn; #85CA
+藋 > diào; #85CB
+藌 > mì; #85CC
+藍 > lán; #85CD
+藎 > jìn; #85CE
+藏 > cáng; #85CF
+藐 > miăo; #85D0
+藑 > qíong; #85D1
+藒 > qiè; #85D2
+藓 > xiăn; #85D3
+藕 > ŏu; #85D5
+藖 > xián; #85D6
+藗 > sù; #85D7
+藘 > lǘ; #85D8
+藙 > yì; #85D9
+藚 > xù; #85DA
+藛 > xiĕ; #85DB
+藜 > lí; #85DC
+藝 > yì; #85DD
+藞 > lă; #85DE
+藟 > lĕi; #85DF
+藠 > xiào; #85E0
+藡 > dí; #85E1
+藢 > zhĭ; #85E2
+藣 > bēi; #85E3
+藤 > téng; #85E4
+藥 > yào; #85E5
+藦 > mò; #85E6
+藧 > huăn; #85E7
+藨 > piăo; #85E8
+藩 > fán; #85E9
+藪 > sŏu; #85EA
+藫 > tán; #85EB
+藬 > tūi; #85EC
+藭 > qíong; #85ED
+藮 > qiáo; #85EE
+藯 > wèi; #85EF
+藰 > líu; #85F0
+藱 > hùi; #85F1
+藳 > găo; #85F3
+藴 > yùn; #85F4
+藶 > lì; #85F6
+藷 > shŭ; #85F7
+藸 > chú; #85F8
+藹 > ăi; #85F9
+藺 > lìn; #85FA
+藻 > zăo; #85FB
+藼 > xuān; #85FC
+藽 > chèn; #85FD
+藾 > lài; #85FE
+藿 > hùo; #85FF
+蘀 > tùo; #8600
+蘁 > wù; #8601
+蘂 > rŭi; #8602
+蘃 > rŭi; #8603
+蘄 > qí; #8604
+蘅 > héng; #8605
+蘆 > lú; #8606
+蘇 > sū; #8607
+蘈 > túi; #8608
+蘉 > máng; #8609
+蘊 > yùn; #860A
+蘋 > pín; #860B
+蘌 > yŭ; #860C
+蘍 > xūn; #860D
+蘎 > jì; #860E
+蘏 > jīong; #860F
+蘐 > xiān; #8610
+蘑 > mó; #8611
+蘓 > sū; #8613
+蘔 > jīong; #8614
+蘖 > niè; #8616
+蘗 > bò; #8617
+蘘 > ráng; #8618
+蘙 > yì; #8619
+蘚 > xiăn; #861A
+蘛 > yú; #861B
+蘜 > jú; #861C
+蘝 > liàn; #861D
+蘞 > liàn; #861E
+蘟 > yĭn; #861F
+蘠 > qiáng; #8620
+蘡 > yīng; #8621
+蘢 > lóng; #8622
+蘣 > tòng; #8623
+蘤 > wĕi; #8624
+蘥 > yuè; #8625
+蘦 > líng; #8626
+蘧 > qú; #8627
+蘨 > yáo; #8628
+蘩 > fán; #8629
+蘪 > mí; #862A
+蘫 > lán; #862B
+蘬 > kūi; #862C
+蘭 > lán; #862D
+蘮 > jì; #862E
+蘯 > dàng; #862F
+蘱 > lèi; #8631
+蘲 > léi; #8632
+蘳 > huă; #8633
+蘴 > fēng; #8634
+蘵 > zhí; #8635
+蘶 > wèi; #8636
+蘷 > kúi; #8637
+蘸 > zhàn; #8638
+蘹 > huài; #8639
+蘺 > lí; #863A
+蘻 > jì; #863B
+蘼 > mí; #863C
+蘽 > lĕi; #863D
+蘾 > huài; #863E
+蘿 > lúo; #863F
+虀 > jī; #8640
+虁 > kúi; #8641
+虂 > lù; #8642
+虃 > jiān; #8643
+虆 > léi; #8646
+虇 > quăn; #8647
+虈 > xiāo; #8648
+虉 > yì; #8649
+虊 > luán; #864A
+虋 > mén; #864B
+虌 > biē; #864C
+虍 > hū; #864D
+虎 > hŭ; #864E
+虏 > lŭ; #864F
+虐 > nǜe; #8650
+虑 > lǜ; #8651
+虒 > sī; #8652
+虓 > xiāo; #8653
+虔 > qián; #8654
+處 > chù; #8655
+虖 > hū; #8656
+虗 > xū; #8657
+虘 > cúo; #8658
+虙 > fú; #8659
+虚 > xū; #865A
+虛 > xū; #865B
+虜 > lŭ; #865C
+虝 > hŭ; #865D
+虞 > yú; #865E
+號 > hào; #865F
+虠 > jiăo; #8660
+虡 > jù; #8661
+虢 > gúo; #8662
+虣 > bào; #8663
+虤 > yán; #8664
+虥 > zhàn; #8665
+虦 > zhàn; #8666
+虧 > kūi; #8667
+虨 > bān; #8668
+虩 > xì; #8669
+虪 > shú; #866A
+虫 > chóng; #866B
+虬 > qíu; #866C
+虭 > diāo; #866D
+虮 > jī; #866E
+虯 > qíu; #866F
+虰 > chéng; #8670
+虱 > shī; #8671
+虳 > dì; #8673
+虴 > zhé; #8674
+虵 > shé; #8675
+虶 > yū; #8676
+虷 > gān; #8677
+虸 > zĭ; #8678
+虹 > hóng; #8679
+虺 > hŭi; #867A
+虻 > méng; #867B
+虼 > gè; #867C
+虽 > sūi; #867D
+虾 > xiā; #867E
+虿 > chài; #867F
+蚀 > shí; #8680
+蚁 > yĭ; #8681
+蚂 > mă; #8682
+蚃 > xiàng; #8683
+蚄 > fāng; #8684
+蚅 > è; #8685
+蚆 > pā; #8686
+蚇 > chĭ; #8687
+蚈 > qiān; #8688
+蚉 > wén; #8689
+蚊 > wén; #868A
+蚋 > rùi; #868B
+蚌 > bàng; #868C
+蚍 > bĭ; #868D
+蚎 > yuè; #868E
+蚏 > yuè; #868F
+蚐 > jūn; #8690
+蚑 > qí; #8691
+蚒 > rán; #8692
+蚓 > yĭn; #8693
+蚔 > qí; #8694
+蚕 > tiăn; #8695
+蚖 > yuán; #8696
+蚗 > jué; #8697
+蚘 > húi; #8698
+蚙 > qín; #8699
+蚚 > qí; #869A
+蚛 > zhòng; #869B
+蚜 > yá; #869C
+蚝 > cì; #869D
+蚞 > mù; #869E
+蚟 > wáng; #869F
+蚠 > fén; #86A0
+蚡 > fén; #86A1
+蚢 > háng; #86A2
+蚣 > gōng; #86A3
+蚤 > zăo; #86A4
+蚥 > fŭ; #86A5
+蚦 > rán; #86A6
+蚧 > jiè; #86A7
+蚨 > fú; #86A8
+蚩 > chī; #86A9
+蚪 > dŏu; #86AA
+蚫 > piáo; #86AB
+蚬 > xiàn; #86AC
+蚭 > ní; #86AD
+蚮 > tè; #86AE
+蚯 > qīu; #86AF
+蚰 > yóu; #86B0
+蚱 > zhà; #86B1
+蚲 > píng; #86B2
+蚳 > chí; #86B3
+蚴 > yŏu; #86B4
+蚵 > hé; #86B5
+蚶 > hān; #86B6
+蚷 > jù; #86B7
+蚸 > lì; #86B8
+蚹 > fù; #86B9
+蚺 > rán; #86BA
+蚻 > zhá; #86BB
+蚼 > gŏu; #86BC
+蚽 > pí; #86BD
+蚾 > bŏ; #86BE
+蚿 > xián; #86BF
+蛀 > zhù; #86C0
+蛁 > diāo; #86C1
+蛂 > biĕ; #86C2
+蛃 > bĭng; #86C3
+蛄 > gū; #86C4
+蛅 > rán; #86C5
+蛆 > qū; #86C6
+蛇 > shé; #86C7
+蛈 > tiè; #86C8
+蛉 > líng; #86C9
+蛊 > gŭ; #86CA
+蛋 > dàn; #86CB
+蛌 > gŭ; #86CC
+蛍 > yíng; #86CD
+蛎 > lì; #86CE
+蛏 > chēng; #86CF
+蛐 > qū; #86D0
+蛑 > móu; #86D1
+蛒 > gé; #86D2
+蛓 > cì; #86D3
+蛔 > húi; #86D4
+蛕 > húi; #86D5
+蛖 > máng; #86D6
+蛗 > fù; #86D7
+蛘 > yáng; #86D8
+蛙 > wā; #86D9
+蛚 > liè; #86DA
+蛛 > zhū; #86DB
+蛜 > yī; #86DC
+蛝 > xián; #86DD
+蛞 > kùo; #86DE
+蛟 > jiāo; #86DF
+蛠 > lì; #86E0
+蛡 > yì; #86E1
+蛢 > píng; #86E2
+蛣 > jī; #86E3
+蛤 > há; #86E4
+蛥 > shé; #86E5
+蛦 > yí; #86E6
+蛧 > wăng; #86E7
+蛨 > mò; #86E8
+蛩 > qíong; #86E9
+蛪 > qiè; #86EA
+蛫 > gŭi; #86EB
+蛬 > gŏng; #86EC
+蛭 > zhì; #86ED
+蛮 > mán; #86EE
+蛰 > zhí; #86F0
+蛱 > jiá; #86F1
+蛲 > ráo; #86F2
+蛳 > sī; #86F3
+蛴 > qí; #86F4
+蛵 > xīng; #86F5
+蛶 > liè; #86F6
+蛷 > qíu; #86F7
+蛸 > shāo; #86F8
+蛹 > yŏng; #86F9
+蛺 > jiá; #86FA
+蛻 > shùi; #86FB
+蛼 > chē; #86FC
+蛽 > bài; #86FD
+蛾 > é; #86FE
+蛿 > hàn; #86FF
+蜀 > shŭ; #8700
+蜁 > xuán; #8701
+蜂 > fēng; #8702
+蜃 > shèn; #8703
+蜄 > zhèn; #8704
+蜅 > fŭ; #8705
+蜆 > xiàn; #8706
+蜇 > zhé; #8707
+蜈 > wú; #8708
+蜉 > fú; #8709
+蜊 > lí; #870A
+蜋 > láng; #870B
+蜌 > bì; #870C
+蜍 > chú; #870D
+蜎 > yuān; #870E
+蜏 > yŏu; #870F
+蜐 > jié; #8710
+蜑 > dàn; #8711
+蜒 > yán; #8712
+蜓 > tíng; #8713
+蜔 > diàn; #8714
+蜕 > shùi; #8715
+蜖 > húi; #8716
+蜗 > guā; #8717
+蜘 > zhī; #8718
+蜙 > sōng; #8719
+蜚 > fēi; #871A
+蜛 > jū; #871B
+蜜 > mì; #871C
+蜝 > qí; #871D
+蜞 > qí; #871E
+蜟 > yù; #871F
+蜠 > jŭn; #8720
+蜡 > zhà; #8721
+蜢 > mĕng; #8722
+蜣 > qiāng; #8723
+蜤 > sī; #8724
+蜥 > xī; #8725
+蜦 > lún; #8726
+蜧 > lì; #8727
+蜨 > dié; #8728
+蜩 > tiáo; #8729
+蜪 > tāo; #872A
+蜫 > kūn; #872B
+蜬 > gān; #872C
+蜭 > hàn; #872D
+蜮 > yù; #872E
+蜯 > bàng; #872F
+蜰 > féi; #8730
+蜱 > pí; #8731
+蜲 > wĕi; #8732
+蜳 > dūn; #8733
+蜴 > yì; #8734
+蜵 > yuān; #8735
+蜶 > sù; #8736
+蜷 > quán; #8737
+蜸 > qiăn; #8738
+蜹 > rùi; #8739
+蜺 > ní; #873A
+蜻 > qīng; #873B
+蜼 > wèi; #873C
+蜽 > liăng; #873D
+蜾 > gŭo; #873E
+蜿 > wān; #873F
+蝀 > dōng; #8740
+蝁 > è; #8741
+蝂 > băn; #8742
+蝃 > dì; #8743
+蝄 > wăng; #8744
+蝅 > cán; #8745
+蝆 > yăng; #8746
+蝇 > yíng; #8747
+蝈 > gūo; #8748
+蝉 > chán; #8749
+蝋 > là; #874B
+蝌 > kē; #874C
+蝍 > jí; #874D
+蝎 > hé; #874E
+蝏 > tíng; #874F
+蝐 > mài; #8750
+蝑 > xū; #8751
+蝒 > mián; #8752
+蝓 > yú; #8753
+蝔 > jiē; #8754
+蝕 > shí; #8755
+蝖 > xuān; #8756
+蝗 > huáng; #8757
+蝘 > yăn; #8758
+蝙 > biān; #8759
+蝚 > róu; #875A
+蝛 > wēi; #875B
+蝜 > fù; #875C
+蝝 > yuán; #875D
+蝞 > mèi; #875E
+蝟 > wèi; #875F
+蝠 > fú; #8760
+蝡 > ruăn; #8761
+蝢 > xié; #8762
+蝣 > yóu; #8763
+蝤 > qíu; #8764
+蝥 > máo; #8765
+蝦 > xiā; #8766
+蝧 > yīng; #8767
+蝨 > shī; #8768
+蝩 > chóng; #8769
+蝪 > tāng; #876A
+蝫 > zhū; #876B
+蝬 > zōng; #876C
+蝭 > tí; #876D
+蝮 > fù; #876E
+蝯 > yuán; #876F
+蝰 > hŭi; #8770
+蝱 > méng; #8771
+蝲 > là; #8772
+蝳 > dú; #8773
+蝴 > hú; #8774
+蝵 > qīu; #8775
+蝶 > dié; #8776
+蝷 > lì; #8777
+蝸 > guā; #8778
+蝹 > yūn; #8779
+蝺 > jŭ; #877A
+蝻 > năn; #877B
+蝼 > lóu; #877C
+蝽 > qŭn; #877D
+蝾 > róng; #877E
+蝿 > yíng; #877F
+螀 > jiāng; #8780
+螂 > láng; #8782
+螃 > páng; #8783
+螄 > sī; #8784
+螅 > xī; #8785
+螆 > cì; #8786
+螇 > xī; #8787
+螈 > yuán; #8788
+螉 > wēng; #8789
+螊 > lián; #878A
+螋 > sōu; #878B
+螌 > bān; #878C
+融 > róng; #878D
+螎 > róng; #878E
+螏 > jí; #878F
+螐 > wū; #8790
+螑 > qìu; #8791
+螒 > hàn; #8792
+螓 > qín; #8793
+螔 > yí; #8794
+螕 > bī; #8795
+螖 > huá; #8796
+螗 > táng; #8797
+螘 > yĭ; #8798
+螙 > dù; #8799
+螚 > nài; #879A
+螛 > hé; #879B
+螜 > hú; #879C
+螝 > hùi; #879D
+螞 > mă; #879E
+螟 > míng; #879F
+螠 > yì; #87A0
+螡 > wén; #87A1
+螢 > yíng; #87A2
+螣 > téng; #87A3
+螤 > yŭ; #87A4
+螥 > cāng; #87A5
+螨 > măn; #87A8
+螪 > shāng; #87AA
+螫 > zhē; #87AB
+螬 > cáo; #87AC
+螭 > chī; #87AD
+螮 > dì; #87AE
+螯 > áo; #87AF
+螰 > lù; #87B0
+螱 > wèi; #87B1
+螲 > zhì; #87B2
+螳 > táng; #87B3
+螴 > chén; #87B4
+螵 > piāo; #87B5
+螶 > qú; #87B6
+螷 > pí; #87B7
+螸 > yú; #87B8
+螹 > jiàn; #87B9
+螺 > lúo; #87BA
+螻 > lóu; #87BB
+螼 > qĭn; #87BC
+螽 > zhōng; #87BD
+螾 > yĭn; #87BE
+螿 > jiāng; #87BF
+蟀 > shuài; #87C0
+蟁 > wén; #87C1
+蟂 > jiāo; #87C2
+蟃 > wàn; #87C3
+蟄 > zhí; #87C4
+蟅 > zhè; #87C5
+蟆 > má; #87C6
+蟇 > má; #87C7
+蟈 > gūo; #87C8
+蟉 > líu; #87C9
+蟊 > máo; #87CA
+蟋 > xī; #87CB
+蟌 > cōng; #87CC
+蟍 > lí; #87CD
+蟎 > măn; #87CE
+蟏 > xiāo; #87CF
+蟑 > zhāng; #87D1
+蟒 > măng; #87D2
+蟓 > xiàng; #87D3
+蟔 > mò; #87D4
+蟕 > zūi; #87D5
+蟖 > sī; #87D6
+蟗 > qīu; #87D7
+蟘 > tè; #87D8
+蟙 > zhí; #87D9
+蟚 > péng; #87DA
+蟛 > péng; #87DB
+蟜 > jiăo; #87DC
+蟝 > qú; #87DD
+蟞 > bié; #87DE
+蟟 > liáo; #87DF
+蟠 > pán; #87E0
+蟡 > gŭi; #87E1
+蟢 > xĭ; #87E2
+蟣 > jĭ; #87E3
+蟤 > zhuān; #87E4
+蟥 > huáng; #87E5
+蟦 > fèi; #87E6
+蟧 > láo; #87E7
+蟨 > jué; #87E8
+蟩 > jué; #87E9
+蟪 > hùi; #87EA
+蟫 > yín; #87EB
+蟬 > chán; #87EC
+蟭 > jiāo; #87ED
+蟮 > shàn; #87EE
+蟯 > ráo; #87EF
+蟰 > xiāo; #87F0
+蟱 > móu; #87F1
+蟲 > chóng; #87F2
+蟳 > xún; #87F3
+蟴 > sī; #87F4
+蟶 > chēng; #87F6
+蟷 > dāng; #87F7
+蟸 > lĭ; #87F8
+蟹 > xiè; #87F9
+蟺 > shàn; #87FA
+蟻 > yĭ; #87FB
+蟼 > jĭng; #87FC
+蟽 > dá; #87FD
+蟾 > chán; #87FE
+蟿 > qì; #87FF
+蠀 > cī; #8800
+蠁 > xiàng; #8801
+蠂 > shè; #8802
+蠃 > lŭo; #8803
+蠄 > qín; #8804
+蠅 > yíng; #8805
+蠆 > chài; #8806
+蠇 > lì; #8807
+蠈 > zé; #8808
+蠉 > xuān; #8809
+蠊 > lián; #880A
+蠋 > zhú; #880B
+蠌 > zé; #880C
+蠍 > xiē; #880D
+蠎 > măng; #880E
+蠏 > xiè; #880F
+蠐 > qí; #8810
+蠑 > róng; #8811
+蠒 > jiăn; #8812
+蠓 > mĕng; #8813
+蠔 > háo; #8814
+蠕 > ruăn; #8815
+蠖 > hùo; #8816
+蠗 > zhúo; #8817
+蠘 > jié; #8818
+蠙 > bīn; #8819
+蠚 > hè; #881A
+蠛 > miè; #881B
+蠜 > fán; #881C
+蠝 > léi; #881D
+蠞 > jié; #881E
+蠟 > là; #881F
+蠠 > mì; #8820
+蠡 > lĭ; #8821
+蠢 > chŭn; #8822
+蠣 > lì; #8823
+蠤 > qīu; #8824
+蠥 > niè; #8825
+蠦 > lú; #8826
+蠧 > dù; #8827
+蠨 > xiāo; #8828
+蠩 > zhū; #8829
+蠪 > lóng; #882A
+蠫 > lì; #882B
+蠬 > lóng; #882C
+蠭 > fēng; #882D
+蠮 > yē; #882E
+蠯 > bèng; #882F
+蠰 > shàng; #8830
+蠱 > gŭ; #8831
+蠲 > juān; #8832
+蠳 > yīng; #8833
+蠵 > xī; #8835
+蠶 > cán; #8836
+蠷 > qú; #8837
+蠸 > quán; #8838
+蠹 > dù; #8839
+蠺 > cán; #883A
+蠻 > mán; #883B
+蠼 > jué; #883C
+蠽 > jié; #883D
+蠾 > zhú; #883E
+蠿 > zhá; #883F
+血 > xiĕ; #8840
+衁 > huāng; #8841
+衂 > nìu; #8842
+衃 > pēi; #8843
+衄 > nǜ; #8844
+衅 > xìn; #8845
+衆 > zhòng; #8846
+衇 > mò; #8847
+衈 > èr; #8848
+衉 > kè; #8849
+衊 > miè; #884A
+衋 > xì; #884B
+行 > xíng; #884C
+衍 > yăn; #884D
+衎 > kàn; #884E
+衏 > yuàn; #884F
+衑 > líng; #8851
+衒 > xuàn; #8852
+術 > shù; #8853
+衔 > xián; #8854
+衕 > tòng; #8855
+衖 > lòng; #8856
+街 > jiē; #8857
+衘 > xián; #8858
+衙 > yá; #8859
+衚 > hú; #885A
+衛 > wèi; #885B
+衜 > dào; #885C
+衝 > chōng; #885D
+衞 > wèi; #885E
+衟 > dào; #885F
+衠 > zhūn; #8860
+衡 > héng; #8861
+衢 > qú; #8862
+衣 > yī; #8863
+衤 > yī' 'zì' 'páng; #8864
+补 > bŭ; #8865
+衦 > găn; #8866
+衧 > yú; #8867
+表 > biăo; #8868
+衩 > chà; #8869
+衪 > yĭ; #886A
+衫 > shān; #886B
+衬 > chèn; #886C
+衭 > fū; #886D
+衮 > gŭn; #886E
+衯 > fēn; #886F
+衰 > shuāi; #8870
+衱 > jié; #8871
+衲 > nà; #8872
+衳 > zhōng; #8873
+衴 > dăn; #8874
+衵 > rì; #8875
+衶 > zhòng; #8876
+衷 > zhōng; #8877
+衸 > xiè; #8878
+衹 > qí; #8879
+衺 > xié; #887A
+衻 > rán; #887B
+衼 > zhī; #887C
+衽 > rèn; #887D
+衾 > qīn; #887E
+衿 > jīn; #887F
+袀 > jūn; #8880
+袁 > yuán; #8881
+袂 > mèi; #8882
+袃 > chài; #8883
+袄 > ăo; #8884
+袅 > niăo; #8885
+袆 > hūi; #8886
+袇 > rán; #8887
+袈 > jiā; #8888
+袉 > túo; #8889
+袊 > lĭng; #888A
+袋 > dài; #888B
+袌 > bào; #888C
+袍 > páo; #888D
+袎 > yào; #888E
+袏 > zùo; #888F
+袐 > bì; #8890
+袑 > shào; #8891
+袒 > tăn; #8892
+袓 > jŭ; #8893
+袔 > hè; #8894
+袕 > shù; #8895
+袖 > xìu; #8896
+袗 > zhĕn; #8897
+袘 > yí; #8898
+袙 > pà; #8899
+袚 > bō; #889A
+袛 > dī; #889B
+袜 > wà; #889C
+袝 > fù; #889D
+袞 > gŭn; #889E
+袟 > zhì; #889F
+袠 > zhì; #88A0
+袡 > rán; #88A1
+袢 > pàn; #88A2
+袣 > yì; #88A3
+袤 > mào; #88A4
+袥 > tuo; #88A5
+袦 > nà; #88A6
+袧 > kōu; #88A7
+袨 > xiàn; #88A8
+袩 > chān; #88A9
+袪 > qū; #88AA
+被 > bèi; #88AB
+袬 > gŭn; #88AC
+袭 > xí; #88AD
+袯 > bó; #88AF
+袱 > fú; #88B1
+袲 > yí; #88B2
+袳 > chĭ; #88B3
+袴 > kù; #88B4
+袵 > rèn; #88B5
+袶 > jiàng; #88B6
+袷 > jiá; #88B7
+袸 > cún; #88B8
+袹 > mò; #88B9
+袺 > jié; #88BA
+袻 > ér; #88BB
+袼 > lùo; #88BC
+袽 > rú; #88BD
+袾 > zhū; #88BE
+袿 > gūi; #88BF
+裀 > yīn; #88C0
+裁 > cái; #88C1
+裂 > liè; #88C2
+装 > zhuāng; #88C5
+裆 > dāng; #88C6
+裈 > kūn; #88C8
+裉 > kèn; #88C9
+裊 > niăo; #88CA
+裋 > shù; #88CB
+裌 > jiá; #88CC
+裍 > kŭn; #88CD
+裎 > chéng; #88CE
+裏 > lĭ; #88CF
+裐 > juān; #88D0
+裑 > shēn; #88D1
+裒 > póu; #88D2
+裓 > gé; #88D3
+裔 > yì; #88D4
+裕 > yù; #88D5
+裖 > zhĕn; #88D6
+裗 > líu; #88D7
+裘 > qíu; #88D8
+裙 > qún; #88D9
+裚 > jì; #88DA
+裛 > yì; #88DB
+補 > bŭ; #88DC
+裝 > zhuāng; #88DD
+裞 > shùi; #88DE
+裟 > shā; #88DF
+裠 > qún; #88E0
+裡 > lĭ; #88E1
+裢 > lián; #88E2
+裣 > liàn; #88E3
+裤 > kù; #88E4
+裥 > jiăn; #88E5
+裦 > fóu; #88E6
+裧 > chān; #88E7
+裨 > bì; #88E8
+裩 > gūn; #88E9
+裪 > táo; #88EA
+裫 > yuàn; #88EB
+裬 > líng; #88EC
+裭 > chĭ; #88ED
+裮 > chāng; #88EE
+裯 > chóu; #88EF
+裰 > dúo; #88F0
+裱 > biăo; #88F1
+裲 > liăng; #88F2
+裳 > cháng; #88F3
+裴 > péi; #88F4
+裵 > péi; #88F5
+裶 > fēi; #88F6
+裷 > yuān; #88F7
+裸 > lŭo; #88F8
+裹 > gŭo; #88F9
+裺 > yăn; #88FA
+裻 > dŭ; #88FB
+裼 > xí; #88FC
+製 > zhì; #88FD
+裾 > jū; #88FE
+裿 > qĭ; #88FF
+褀 > jì; #8900
+褁 > zhí; #8901
+褂 > guà; #8902
+褃 > kèn; #8903
+褅 > tì; #8905
+褆 > tí; #8906
+複 > fù; #8907
+褈 > chóng; #8908
+褉 > xiē; #8909
+褊 > biăn; #890A
+褋 > dié; #890B
+褌 > kūn; #890C
+褍 > duān; #890D
+褎 > xìu; #890E
+褏 > xìu; #890F
+褐 > hé; #8910
+褑 > yuàn; #8911
+褒 > bāo; #8912
+褓 > băo; #8913
+褔 > fù; #8914
+褕 > yú; #8915
+褖 > tuàn; #8916
+褗 > yăn; #8917
+褘 > hūi; #8918
+褙 > bèi; #8919
+褚 > chŭ; #891A
+褛 > lǚ; #891B
+褞 > yŭn; #891E
+褟 > dá; #891F
+褠 > gōu; #8920
+褡 > dā; #8921
+褢 > huái; #8922
+褣 > róng; #8923
+褤 > yuàn; #8924
+褥 > rù; #8925
+褦 > nài; #8926
+褧 > jĭong; #8927
+褨 > sŭo; #8928
+褩 > bān; #8929
+褪 > tùn; #892A
+褫 > chĭ; #892B
+褬 > săng; #892C
+褭 > niăo; #892D
+褮 > yīng; #892E
+褯 > jiè; #892F
+褰 > qiān; #8930
+褱 > huái; #8931
+褲 > kù; #8932
+褳 > lián; #8933
+褴 > băo; #8934
+褵 > lí; #8935
+褶 > zhé; #8936
+褷 > shī; #8937
+褸 > lǚ; #8938
+褹 > yì; #8939
+褺 > dié; #893A
+褻 > xiè; #893B
+褼 > xiān; #893C
+褽 > wèi; #893D
+褾 > biăo; #893E
+褿 > cáo; #893F
+襀 > jī; #8940
+襁 > jiăng; #8941
+襂 > sēn; #8942
+襃 > bāo; #8943
+襄 > xiāng; #8944
+襆 > pú; #8946
+襇 > jiăn; #8947
+襈 > zhuàn; #8948
+襉 > jiàn; #8949
+襊 > zùi; #894A
+襋 > jí; #894B
+襌 > dān; #894C
+襍 > zá; #894D
+襎 > fán; #894E
+襏 > bó; #894F
+襐 > xiàng; #8950
+襑 > xín; #8951
+襒 > bié; #8952
+襓 > ráo; #8953
+襔 > măn; #8954
+襕 > lán; #8955
+襖 > ăo; #8956
+襗 > dúo; #8957
+襘 > gùi; #8958
+襙 > cào; #8959
+襚 > sùi; #895A
+襛 > nóng; #895B
+襜 > chān; #895C
+襝 > liàn; #895D
+襞 > bì; #895E
+襟 > jīn; #895F
+襠 > dāng; #8960
+襡 > shú; #8961
+襢 > tăn; #8962
+襣 > bì; #8963
+襤 > lán; #8964
+襥 > pú; #8965
+襦 > rú; #8966
+襧 > zhĭ; #8967
+襩 > shŭ; #8969
+襪 > wà; #896A
+襫 > shì; #896B
+襬 > băi; #896C
+襭 > xié; #896D
+襮 > bó; #896E
+襯 > chèn; #896F
+襰 > lài; #8970
+襱 > lóng; #8971
+襲 > xí; #8972
+襳 > xiān; #8973
+襴 > lán; #8974
+襵 > zhé; #8975
+襶 > dài; #8976
+襸 > zàn; #8978
+襹 > shī; #8979
+襺 > jiăn; #897A
+襻 > pàn; #897B
+襼 > yì; #897C
+襾 > yà; #897E
+西 > xī; #897F
+覀 > xī; #8980
+要 > yào; #8981
+覂 > fĕng; #8982
+覃 > tán; #8983
+覅 > biào; #8985
+覆 > fù; #8986
+覇 > bà; #8987
+覈 > hé; #8988
+覉 > jī; #8989
+覊 > jī; #898A
+見 > jiàn; #898B
+覌 > guān; #898C
+覍 > biàn; #898D
+覎 > yàn; #898E
+規 > gūi; #898F
+覐 > jué; #8990
+覑 > piăn; #8991
+覒 > máo; #8992
+覓 > mì; #8993
+覔 > mì; #8994
+覕 > miè; #8995
+視 > shì; #8996
+覗 > sī; #8997
+覘 > zhān; #8998
+覙 > lúo; #8999
+覚 > jué; #899A
+覛 > mì; #899B
+覜 > tiào; #899C
+覝 > lián; #899D
+覞 > yào; #899E
+覟 > zhì; #899F
+覠 > jūn; #89A0
+覡 > xí; #89A1
+覢 > shăn; #89A2
+覣 > wēi; #89A3
+覤 > xì; #89A4
+覥 > tiăn; #89A5
+覦 > yú; #89A6
+覧 > lăn; #89A7
+覨 > è; #89A8
+覩 > dŭ; #89A9
+親 > qīn; #89AA
+覫 > păng; #89AB
+覬 > jì; #89AC
+覭 > míng; #89AD
+覮 > yíng; #89AE
+覯 > gòu; #89AF
+覰 > qù; #89B0
+覱 > zhàn; #89B1
+覲 > jĭn; #89B2
+観 > guān; #89B3
+覴 > dēng; #89B4
+覵 > jiàn; #89B5
+覶 > lúo; #89B6
+覷 > qù; #89B7
+覸 > jiàn; #89B8
+覹 > wéi; #89B9
+覺 > jué; #89BA
+覻 > qù; #89BB
+覼 > lúo; #89BC
+覽 > lăn; #89BD
+覾 > shĕn; #89BE
+覿 > dí; #89BF
+觀 > guān; #89C0
+见 > jiàn; #89C1
+观 > guān; #89C2
+觃 > yàn; #89C3
+规 > gūi; #89C4
+觅 > mì; #89C5
+视 > shì; #89C6
+觇 > zhān; #89C7
+览 > lăn; #89C8
+觉 > jué; #89C9
+觊 > jì; #89CA
+觋 > xí; #89CB
+觌 > dí; #89CC
+觍 > tiăn; #89CD
+觎 > yú; #89CE
+觏 > gòu; #89CF
+觐 > jĭn; #89D0
+觑 > qù; #89D1
+角 > jiăo; #89D2
+觓 > jīu; #89D3
+觔 > jīn; #89D4
+觕 > cū; #89D5
+觖 > jué; #89D6
+觗 > zhì; #89D7
+觘 > chào; #89D8
+觙 > jí; #89D9
+觚 > gū; #89DA
+觛 > dàn; #89DB
+觜 > zŭi; #89DC
+觝 > dĭ; #89DD
+觞 > shāng; #89DE
+觟 > huà; #89DF
+觠 > quán; #89E0
+觡 > gé; #89E1
+觢 > chì; #89E2
+解 > jiĕ; #89E3
+觤 > gŭi; #89E4
+觥 > gōng; #89E5
+触 > hóng; #89E6
+觧 > jiĕ; #89E7
+觨 > hùn; #89E8
+觩 > qíu; #89E9
+觪 > xīng; #89EA
+觫 > sù; #89EB
+觬 > ní; #89EC
+觭 > jī; #89ED
+觮 > lù; #89EE
+觯 > zhì; #89EF
+觰 > zhā; #89F0
+觱 > bì; #89F1
+觲 > xīng; #89F2
+觳 > hú; #89F3
+觴 > shāng; #89F4
+觵 > gōng; #89F5
+觶 > zhì; #89F6
+觷 > xué; #89F7
+觸 > chù; #89F8
+觹 > xī; #89F9
+觺 > yí; #89FA
+觻 > lù; #89FB
+觼 > jué; #89FC
+觽 > xī; #89FD
+觾 > yàn; #89FE
+觿 > xī; #89FF
+言 > yán; #8A00
+訁 > yán' 'zì' 'páng; #8A01
+訂 > dìng; #8A02
+訃 > fù; #8A03
+訄 > qíu; #8A04
+訅 > qíu; #8A05
+訆 > jiào; #8A06
+訇 > hōng; #8A07
+計 > jì; #8A08
+訉 > fàn; #8A09
+訊 > xùn; #8A0A
+訋 > diào; #8A0B
+訌 > hóng; #8A0C
+訍 > chà; #8A0D
+討 > tăo; #8A0E
+訏 > xū; #8A0F
+訐 > jié; #8A10
+訑 > yí; #8A11
+訒 > rèn; #8A12
+訓 > xùn; #8A13
+訔 > yín; #8A14
+訕 > shàn; #8A15
+訖 > qì; #8A16
+託 > tūo; #8A17
+記 > jì; #8A18
+訙 > xùn; #8A19
+訚 > yín; #8A1A
+訛 > é; #8A1B
+訜 > fēn; #8A1C
+訝 > yà; #8A1D
+訞 > yāo; #8A1E
+訟 > sòng; #8A1F
+訠 > shĕn; #8A20
+訡 > yín; #8A21
+訢 > xīn; #8A22
+訣 > jué; #8A23
+訤 > xiáo; #8A24
+訥 > nè; #8A25
+訦 > chén; #8A26
+訧 > yóu; #8A27
+訨 > zhĭ; #8A28
+訩 > xīong; #8A29
+訪 > făng; #8A2A
+訫 > xìn; #8A2B
+訬 > chāo; #8A2C
+設 > shè; #8A2D
+訮 > xiān; #8A2E
+訯 > shă; #8A2F
+訰 > tún; #8A30
+許 > xŭ; #8A31
+訲 > yì; #8A32
+訳 > yì; #8A33
+訴 > sù; #8A34
+訵 > chī; #8A35
+訶 > hē; #8A36
+訷 > shēn; #8A37
+訸 > hé; #8A38
+訹 > xù; #8A39
+診 > zhĕn; #8A3A
+註 > zhù; #8A3B
+証 > zhèng; #8A3C
+訽 > gòu; #8A3D
+訾 > zĭ; #8A3E
+訿 > zĭ; #8A3F
+詀 > zhān; #8A40
+詁 > gŭ; #8A41
+詂 > fù; #8A42
+詃 > quăn; #8A43
+詄 > dié; #8A44
+詅 > líng; #8A45
+詆 > dĭ; #8A46
+詇 > yàng; #8A47
+詈 > lì; #8A48
+詉 > náo; #8A49
+詊 > pàn; #8A4A
+詋 > zhòu; #8A4B
+詌 > gàn; #8A4C
+詍 > yì; #8A4D
+詎 > jù; #8A4E
+詏 > ào; #8A4F
+詐 > zhà; #8A50
+詑 > túo; #8A51
+詒 > yí; #8A52
+詓 > qŭ; #8A53
+詔 > zhào; #8A54
+評 > píng; #8A55
+詖 > bì; #8A56
+詗 > xìong; #8A57
+詘 > qù; #8A58
+詙 > bá; #8A59
+詚 > dá; #8A5A
+詛 > zŭ; #8A5B
+詜 > tāo; #8A5C
+詝 > zhŭ; #8A5D
+詞 > cí; #8A5E
+詟 > zhé; #8A5F
+詠 > yŏng; #8A60
+詡 > xŭ; #8A61
+詢 > xún; #8A62
+詣 > yì; #8A63
+詤 > huăng; #8A64
+詥 > hé; #8A65
+試 > shì; #8A66
+詧 > chá; #8A67
+詨 > jiāo; #8A68
+詩 > shī; #8A69
+詪 > hĕn; #8A6A
+詫 > chà; #8A6B
+詬 > gòu; #8A6C
+詭 > gŭi; #8A6D
+詮 > quán; #8A6E
+詯 > hùi; #8A6F
+詰 > jié; #8A70
+話 > huà; #8A71
+該 > gāi; #8A72
+詳 > xiáng; #8A73
+詴 > wēi; #8A74
+詵 > shēn; #8A75
+詶 > chóu; #8A76
+詷 > tóng; #8A77
+詸 > mí; #8A78
+詹 > zhān; #8A79
+詺 > mìng; #8A7A
+詻 > è; #8A7B
+詼 > hūi; #8A7C
+詽 > yán; #8A7D
+詾 > xīong; #8A7E
+詿 > guà; #8A7F
+誀 > èr; #8A80
+誁 > bĕng; #8A81
+誂 > tiăo; #8A82
+誃 > chĭ; #8A83
+誄 > lĕi; #8A84
+誅 > zhū; #8A85
+誆 > kuāng; #8A86
+誇 > kuā; #8A87
+誈 > wú; #8A88
+誉 > yù; #8A89
+誊 > téng; #8A8A
+誋 > jì; #8A8B
+誌 > zhì; #8A8C
+認 > rèn; #8A8D
+誎 > sù; #8A8E
+誏 > lăng; #8A8F
+誐 > é; #8A90
+誑 > kuáng; #8A91
+誒 > è; #8A92
+誓 > shì; #8A93
+誔 > tĭng; #8A94
+誕 > dàn; #8A95
+誖 > bó; #8A96
+誗 > chán; #8A97
+誘 > yòu; #8A98
+誙 > héng; #8A99
+誚 > qiào; #8A9A
+誛 > qīn; #8A9B
+誜 > shuà; #8A9C
+誝 > ān; #8A9D
+語 > yŭ; #8A9E
+誟 > xiào; #8A9F
+誠 > chéng; #8AA0
+誡 > jiè; #8AA1
+誢 > xiàn; #8AA2
+誣 > wú; #8AA3
+誤 > wù; #8AA4
+誥 > gào; #8AA5
+誦 > sòng; #8AA6
+誧 > pŭ; #8AA7
+誨 > hùi; #8AA8
+誩 > jìng; #8AA9
+說 > shūo; #8AAA
+誫 > zhèn; #8AAB
+説 > shūo; #8AAC
+読 > dú; #8AAD
+誯 > chàng; #8AAF
+誰 > shúi; #8AB0
+誱 > jié; #8AB1
+課 > kè; #8AB2
+誳 > qū; #8AB3
+誴 > cóng; #8AB4
+誵 > xiáo; #8AB5
+誶 > sùi; #8AB6
+誷 > wăng; #8AB7
+誸 > xuán; #8AB8
+誹 > fĕi; #8AB9
+誺 > chī; #8ABA
+誻 > tà; #8ABB
+誼 > yí; #8ABC
+誽 > ná; #8ABD
+誾 > yín; #8ABE
+調 > diào; #8ABF
+諀 > pĭ; #8AC0
+諁 > chùo; #8AC1
+諂 > chăn; #8AC2
+諃 > chēn; #8AC3
+諄 > zhūn; #8AC4
+諅 > jī; #8AC5
+諆 > qī; #8AC6
+談 > tán; #8AC7
+諈 > zhùi; #8AC8
+諉 > wĕi; #8AC9
+諊 > jú; #8ACA
+請 > qĭng; #8ACB
+諌 > jiàn; #8ACC
+諍 > zhēng; #8ACD
+諎 > zé; #8ACE
+諏 > zōu; #8ACF
+諐 > qiān; #8AD0
+諑 > zhúo; #8AD1
+諒 > liàng; #8AD2
+諓 > jiàn; #8AD3
+諔 > zhù; #8AD4
+諕 > háo; #8AD5
+論 > lùn; #8AD6
+諗 > shĕn; #8AD7
+諘 > biăo; #8AD8
+諙 > huài; #8AD9
+諚 > pián; #8ADA
+諛 > yú; #8ADB
+諜 > dié; #8ADC
+諝 > xŭ; #8ADD
+諞 > pián; #8ADE
+諟 > shì; #8ADF
+諠 > xuān; #8AE0
+諡 > shì; #8AE1
+諢 > hùn; #8AE2
+諣 > huà; #8AE3
+諤 > è; #8AE4
+諥 > zhòng; #8AE5
+諦 > dì; #8AE6
+諧 > xié; #8AE7
+諨 > fú; #8AE8
+諩 > pŭ; #8AE9
+諪 > tíng; #8AEA
+諫 > jiàn; #8AEB
+諬 > qĭ; #8AEC
+諭 > yù; #8AED
+諮 > zī; #8AEE
+諯 > chuán; #8AEF
+諰 > xĭ; #8AF0
+諱 > hùi; #8AF1
+諲 > yīn; #8AF2
+諳 > ān; #8AF3
+諴 > xián; #8AF4
+諵 > nán; #8AF5
+諶 > chén; #8AF6
+諷 > fēng; #8AF7
+諸 > zhū; #8AF8
+諹 > yáng; #8AF9
+諺 > yàn; #8AFA
+諻 > hēng; #8AFB
+諼 > xuān; #8AFC
+諽 > gé; #8AFD
+諾 > nùo; #8AFE
+諿 > qì; #8AFF
+謀 > móu; #8B00
+謁 > yè; #8B01
+謂 > wèi; #8B02
+謄 > téng; #8B04
+謅 > zōu; #8B05
+謆 > shàn; #8B06
+謇 > jiăn; #8B07
+謈 > bó; #8B08
+謉 > kù1; #8B09
+謊 > huăng; #8B0A
+謋 > hùo; #8B0B
+謌 > gē; #8B0C
+謍 > yíng; #8B0D
+謎 > mí; #8B0E
+謏 > xiăo; #8B0F
+謐 > mì; #8B10
+謑 > xì; #8B11
+謒 > qiāng; #8B12
+謓 > chēn; #8B13
+謔 > nǜe; #8B14
+謕 > tí; #8B15
+謖 > sù; #8B16
+謗 > bàng; #8B17
+謘 > chí; #8B18
+謙 > qiān; #8B19
+謚 > shì; #8B1A
+講 > jiăng; #8B1B
+謜 > yuàn; #8B1C
+謝 > xiè; #8B1D
+謞 > xuè; #8B1E
+謟 > tāo; #8B1F
+謠 > yáo; #8B20
+謡 > yáo; #8B21
+謣 > yú; #8B23
+謤 > biāo; #8B24
+謥 > còng; #8B25
+謦 > qìng; #8B26
+謧 > lí; #8B27
+謨 > mó; #8B28
+謩 > mò; #8B29
+謪 > shāng; #8B2A
+謫 > zhé; #8B2B
+謬 > mìu; #8B2C
+謭 > jiăn; #8B2D
+謮 > zé; #8B2E
+謯 > jiē; #8B2F
+謰 > lián; #8B30
+謱 > lóu; #8B31
+謲 > cān; #8B32
+謳 > ōu; #8B33
+謴 > guàn; #8B34
+謵 > xí; #8B35
+謶 > zhúo; #8B36
+謷 > áo; #8B37
+謸 > áo; #8B38
+謹 > jĭn; #8B39
+謺 > zhé; #8B3A
+謻 > yí; #8B3B
+謼 > hù; #8B3C
+謽 > jiàng; #8B3D
+謾 > mán; #8B3E
+謿 > cháo; #8B3F
+譀 > hàn; #8B40
+譁 > huá; #8B41
+譂 > chăn; #8B42
+譃 > xū; #8B43
+譄 > zēng; #8B44
+譅 > sè; #8B45
+譆 > xī; #8B46
+譇 > shē; #8B47
+譈 > dùi; #8B48
+證 > zhèng; #8B49
+譊 > náo; #8B4A
+譋 > lán; #8B4B
+譌 > é; #8B4C
+譍 > yìng; #8B4D
+譎 > jué; #8B4E
+譏 > jī; #8B4F
+譐 > zŭn; #8B50
+譑 > jiăo; #8B51
+譒 > bò; #8B52
+譓 > hùi; #8B53
+譔 > zhuàn; #8B54
+譕 > mú; #8B55
+譖 > zèn; #8B56
+譗 > zhá; #8B57
+識 > shì; #8B58
+譙 > qiáo; #8B59
+譚 > tán; #8B5A
+譛 > zèn; #8B5B
+譜 > pŭ; #8B5C
+譝 > shéng; #8B5D
+譞 > xuān; #8B5E
+譟 > zào; #8B5F
+譠 > tān; #8B60
+譡 > dăng; #8B61
+譢 > sùi; #8B62
+譣 > qiān; #8B63
+譤 > jī; #8B64
+譥 > jiào; #8B65
+警 > jĭng; #8B66
+譧 > lián; #8B67
+譨 > nóu; #8B68
+譩 > yī; #8B69
+譪 > ài; #8B6A
+譫 > zhān; #8B6B
+譬 > pì; #8B6C
+譭 > hŭi; #8B6D
+譮 > huà; #8B6E
+譯 > yì; #8B6F
+議 > yì; #8B70
+譱 > shàn; #8B71
+譲 > ràng; #8B72
+譳 > nòu; #8B73
+譴 > qiăn; #8B74
+譵 > zhùi; #8B75
+譶 > tà; #8B76
+護 > hù; #8B77
+譸 > zhōu; #8B78
+譹 > háo; #8B79
+譺 > yè; #8B7A
+譻 > yīng; #8B7B
+譼 > jiàn; #8B7C
+譽 > yù; #8B7D
+譾 > jiăn; #8B7E
+譿 > hùi; #8B7F
+讀 > dú; #8B80
+讁 > zhé; #8B81
+讂 > xuàn; #8B82
+讃 > zàn; #8B83
+讄 > lĕi; #8B84
+讅 > shĕn; #8B85
+讆 > wèi; #8B86
+讇 > chăn; #8B87
+讈 > lì; #8B88
+讉 > yí; #8B89
+變 > biàn; #8B8A
+讋 > zhé; #8B8B
+讌 > yàn; #8B8C
+讍 > è; #8B8D
+讎 > chóu; #8B8E
+讏 > wèi; #8B8F
+讐 > chóu; #8B90
+讑 > yào; #8B91
+讒 > chán; #8B92
+讓 > ràng; #8B93
+讔 > yĭn; #8B94
+讕 > lán; #8B95
+讖 > chèn; #8B96
+讗 > hùo; #8B97
+讘 > zhé; #8B98
+讙 > huān; #8B99
+讚 > zàn; #8B9A
+讛 > yì; #8B9B
+讜 > dăng; #8B9C
+讝 > zhān; #8B9D
+讞 > yàn; #8B9E
+讟 > dú; #8B9F
+讠 > yán; #8BA0
+计 > jì; #8BA1
+订 > dìng; #8BA2
+讣 > fù; #8BA3
+认 > rèn; #8BA4
+讥 > jī; #8BA5
+讦 > jié; #8BA6
+讧 > hóng; #8BA7
+讨 > tăo; #8BA8
+让 > ràng; #8BA9
+讪 > shàn; #8BAA
+讫 > qì; #8BAB
+讬 > tūo; #8BAC
+训 > xùn; #8BAD
+议 > yì; #8BAE
+讯 > xùn; #8BAF
+记 > jì; #8BB0
+讱 > rèn; #8BB1
+讲 > jiăng; #8BB2
+讳 > hùi; #8BB3
+讴 > ōu; #8BB4
+讵 > jù; #8BB5
+讶 > yà; #8BB6
+讷 > nè; #8BB7
+许 > xŭ; #8BB8
+讹 > é; #8BB9
+论 > lùn; #8BBA
+讻 > xīong; #8BBB
+讼 > sòng; #8BBC
+讽 > fēng; #8BBD
+设 > shè; #8BBE
+访 > făng; #8BBF
+诀 > jué; #8BC0
+证 > zhèng; #8BC1
+诂 > gŭ; #8BC2
+诃 > hē; #8BC3
+评 > píng; #8BC4
+诅 > zŭ; #8BC5
+识 > shì; #8BC6
+诇 > xìong; #8BC7
+诈 > zhà; #8BC8
+诉 > sù; #8BC9
+诊 > zhĕn; #8BCA
+诋 > dĭ; #8BCB
+诌 > zōu; #8BCC
+词 > cí; #8BCD
+诎 > qù; #8BCE
+诏 > zhào; #8BCF
+诐 > bì; #8BD0
+译 > yì; #8BD1
+诒 > yí; #8BD2
+诓 > kuāng; #8BD3
+诔 > lĕi; #8BD4
+试 > shì; #8BD5
+诖 > guà; #8BD6
+诗 > shī; #8BD7
+诘 > jié; #8BD8
+诙 > hūi; #8BD9
+诚 > chéng; #8BDA
+诛 > zhū; #8BDB
+诜 > shēn; #8BDC
+话 > huà; #8BDD
+诞 > dàn; #8BDE
+诟 > gòu; #8BDF
+诠 > quán; #8BE0
+诡 > gŭi; #8BE1
+询 > xún; #8BE2
+诣 > yì; #8BE3
+诤 > zhēng; #8BE4
+该 > gāi; #8BE5
+详 > xiáng; #8BE6
+诧 > chà; #8BE7
+诨 > hùn; #8BE8
+诩 > xŭ; #8BE9
+诪 > zhōu; #8BEA
+诫 > jiè; #8BEB
+诬 > wú; #8BEC
+语 > yŭ; #8BED
+诮 > qiào; #8BEE
+误 > wù; #8BEF
+诰 > gào; #8BF0
+诱 > yòu; #8BF1
+诲 > hùi; #8BF2
+诳 > kuáng; #8BF3
+说 > shūo; #8BF4
+诵 > sòng; #8BF5
+诶 > āi; #8BF6
+请 > qĭng; #8BF7
+诸 > zhū; #8BF8
+诹 > zōu; #8BF9
+诺 > nùo; #8BFA
+读 > dú; #8BFB
+诼 > zhúo; #8BFC
+诽 > fĕi; #8BFD
+课 > kè; #8BFE
+诿 > wĕi; #8BFF
+谀 > yú; #8C00
+谁 > shúi; #8C01
+谂 > shĕn; #8C02
+调 > diào; #8C03
+谄 > chăn; #8C04
+谅 > liàng; #8C05
+谆 > zhūn; #8C06
+谇 > sùi; #8C07
+谈 > tán; #8C08
+谉 > shĕn; #8C09
+谊 > yí; #8C0A
+谋 > móu; #8C0B
+谌 > chén; #8C0C
+谍 > dié; #8C0D
+谎 > huăng; #8C0E
+谏 > jiàn; #8C0F
+谐 > xié; #8C10
+谑 > nǜe; #8C11
+谒 > yè; #8C12
+谓 > wèi; #8C13
+谔 > è; #8C14
+谕 > yù; #8C15
+谖 > xuān; #8C16
+谗 > chán; #8C17
+谘 > zī; #8C18
+谙 > ān; #8C19
+谚 > yàn; #8C1A
+谛 > dì; #8C1B
+谜 > mí; #8C1C
+谝 > pián; #8C1D
+谞 > xŭ; #8C1E
+谟 > mó; #8C1F
+谠 > dăng; #8C20
+谡 > sù; #8C21
+谢 > xiè; #8C22
+谣 > yáo; #8C23
+谤 > bàng; #8C24
+谥 > shì; #8C25
+谦 > qiān; #8C26
+谧 > mì; #8C27
+谨 > jĭn; #8C28
+谩 > mán; #8C29
+谪 > zhé; #8C2A
+谫 > jiăn; #8C2B
+谬 > mìu; #8C2C
+谭 > tán; #8C2D
+谮 > zèn; #8C2E
+谯 > qiáo; #8C2F
+谰 > lán; #8C30
+谱 > pŭ; #8C31
+谲 > jué; #8C32
+谳 > yàn; #8C33
+谴 > qiăn; #8C34
+谵 > zhān; #8C35
+谶 > chèn; #8C36
+谷 > gŭ; #8C37
+谸 > qiān; #8C38
+谹 > hóng; #8C39
+谺 > xiā; #8C3A
+谻 > jué; #8C3B
+谼 > hóng; #8C3C
+谽 > hān; #8C3D
+谾 > hōng; #8C3E
+谿 > xī; #8C3F
+豀 > xī; #8C40
+豁 > hùo; #8C41
+豂 > liáo; #8C42
+豃 > hăn; #8C43
+豄 > dú; #8C44
+豅 > lóng; #8C45
+豆 > dòu; #8C46
+豇 > jiāng; #8C47
+豈 > qĭ; #8C48
+豉 > shì; #8C49
+豊 > lĭ; #8C4A
+豋 > dēng; #8C4B
+豌 > wān; #8C4C
+豍 > bī; #8C4D
+豎 > shù; #8C4E
+豏 > xiàn; #8C4F
+豐 > fēng; #8C50
+豑 > zhì; #8C51
+豒 > zhì; #8C52
+豓 > yàn; #8C53
+豔 > yàn; #8C54
+豕 > shĭ; #8C55
+豖 > chù; #8C56
+豗 > hūi; #8C57
+豘 > tún; #8C58
+豙 > yì; #8C59
+豚 > tún; #8C5A
+豛 > yì; #8C5B
+豜 > jiān; #8C5C
+豝 > bā; #8C5D
+豞 > hòu; #8C5E
+豟 > è; #8C5F
+豠 > cú; #8C60
+象 > xiàng; #8C61
+豢 > huàn; #8C62
+豣 > jiān; #8C63
+豤 > kĕn; #8C64
+豥 > gāi; #8C65
+豦 > qú; #8C66
+豧 > fū; #8C67
+豨 > xī; #8C68
+豩 > bīn; #8C69
+豪 > háo; #8C6A
+豫 > yù; #8C6B
+豬 > zhū; #8C6C
+豭 > jiā; #8C6D
+豯 > xī; #8C6F
+豰 > bó; #8C70
+豱 > wēn; #8C71
+豲 > huán; #8C72
+豳 > bīn; #8C73
+豴 > dí; #8C74
+豵 > zōng; #8C75
+豶 > fén; #8C76
+豷 > yì; #8C77
+豸 > zhì; #8C78
+豹 > bào; #8C79
+豺 > chái; #8C7A
+豻 > hàn; #8C7B
+豼 > pí; #8C7C
+豽 > nà; #8C7D
+豾 > pī; #8C7E
+豿 > gŏu; #8C7F
+貀 > nà; #8C80
+貁 > yòu; #8C81
+貂 > diāo; #8C82
+貃 > mò; #8C83
+貄 > sì; #8C84
+貅 > xīu; #8C85
+貆 > huán; #8C86
+貇 > kūn; #8C87
+貈 > hé; #8C88
+貉 > hé; #8C89
+貊 > mò; #8C8A
+貋 > hàn; #8C8B
+貌 > mào; #8C8C
+貍 > lí; #8C8D
+貎 > ní; #8C8E
+貏 > bĭ; #8C8F
+貐 > yŭ; #8C90
+貑 > jiā; #8C91
+貒 > tuān; #8C92
+貓 > māo; #8C93
+貔 > pí; #8C94
+貕 > xī; #8C95
+貖 > è; #8C96
+貗 > jù; #8C97
+貘 > mò; #8C98
+貙 > chū; #8C99
+貚 > tán; #8C9A
+貛 > huān; #8C9B
+貜 > jué; #8C9C
+貝 > bèi; #8C9D
+貞 > zhēn; #8C9E
+貟 > yuán; #8C9F
+負 > fù; #8CA0
+財 > cái; #8CA1
+貢 > gòng; #8CA2
+貣 > tè; #8CA3
+貤 > yí; #8CA4
+貥 > háng; #8CA5
+貦 > wàn; #8CA6
+貧 > pín; #8CA7
+貨 > hùo; #8CA8
+販 > fàn; #8CA9
+貪 > tān; #8CAA
+貫 > guàn; #8CAB
+責 > zé; #8CAC
+貭 > zhí; #8CAD
+貮 > èr; #8CAE
+貯 > zhŭ; #8CAF
+貰 > shì; #8CB0
+貱 > bì; #8CB1
+貲 > zī; #8CB2
+貳 > èr; #8CB3
+貴 > gùi; #8CB4
+貵 > piăn; #8CB5
+貶 > biăn; #8CB6
+買 > măi; #8CB7
+貸 > dài; #8CB8
+貹 > shèng; #8CB9
+貺 > kuàng; #8CBA
+費 > fèi; #8CBB
+貼 > tiē; #8CBC
+貽 > yí; #8CBD
+貾 > chí; #8CBE
+貿 > mào; #8CBF
+賀 > hè; #8CC0
+賁 > bì; #8CC1
+賂 > lù; #8CC2
+賃 > rèn; #8CC3
+賄 > hùi; #8CC4
+賅 > gāi; #8CC5
+賆 > pián; #8CC6
+資 > zī; #8CC7
+賈 > jiă; #8CC8
+賉 > xù; #8CC9
+賊 > zéi; #8CCA
+賋 > jiăo; #8CCB
+賌 > gài; #8CCC
+賍 > zāng; #8CCD
+賎 > jiàn; #8CCE
+賏 > yìng; #8CCF
+賐 > xùn; #8CD0
+賑 > zhèn; #8CD1
+賒 > shē; #8CD2
+賓 > bīn; #8CD3
+賔 > bīn; #8CD4
+賕 > qíu; #8CD5
+賖 > shē; #8CD6
+賗 > chuàn; #8CD7
+賘 > zāng; #8CD8
+賙 > zhōu; #8CD9
+賚 > lài; #8CDA
+賛 > zàn; #8CDB
+賜 > sì; #8CDC
+賝 > chēn; #8CDD
+賞 > shăng; #8CDE
+賟 > tiăn; #8CDF
+賠 > péi; #8CE0
+賡 > gēng; #8CE1
+賢 > xián; #8CE2
+賣 > mài; #8CE3
+賤 > jiàn; #8CE4
+賥 > sùi; #8CE5
+賦 > fù; #8CE6
+賧 > tàn; #8CE7
+賨 > cóng; #8CE8
+賩 > cóng; #8CE9
+質 > zhí; #8CEA
+賫 > jī; #8CEB
+賬 > zhàng; #8CEC
+賭 > dŭ; #8CED
+賮 > jìn; #8CEE
+賯 > xīong; #8CEF
+賰 > shŭn; #8CF0
+賱 > yŭn; #8CF1
+賲 > băo; #8CF2
+賳 > zāi; #8CF3
+賴 > lài; #8CF4
+賵 > fèng; #8CF5
+賶 > càng; #8CF6
+賷 > jī; #8CF7
+賸 > shèng; #8CF8
+賹 > ài; #8CF9
+賺 > zhuàn; #8CFA
+賻 > fù; #8CFB
+購 > gòu; #8CFC
+賽 > sài; #8CFD
+賾 > zé; #8CFE
+賿 > liáo; #8CFF
+贀 > wèi; #8D00
+贁 > bài; #8D01
+贂 > chĕn; #8D02
+贃 > zhuàn; #8D03
+贄 > zhì; #8D04
+贅 > zhùi; #8D05
+贆 > biāo; #8D06
+贇 > yūn; #8D07
+贈 > zèng; #8D08
+贉 > tăn; #8D09
+贊 > zàn; #8D0A
+贋 > yàn; #8D0B
+贍 > shàn; #8D0D
+贎 > wàn; #8D0E
+贏 > yíng; #8D0F
+贐 > jìn; #8D10
+贑 > găn; #8D11
+贒 > xián; #8D12
+贓 > zāng; #8D13
+贔 > bì; #8D14
+贕 > dú; #8D15
+贖 > shú; #8D16
+贗 > yàn; #8D17
+贙 > xuàn; #8D19
+贚 > lòng; #8D1A
+贛 > gàn; #8D1B
+贜 > zāng; #8D1C
+贝 > bèi; #8D1D
+贞 > zhēn; #8D1E
+负 > fù; #8D1F
+贠 > yuán; #8D20
+贡 > gòng; #8D21
+财 > cái; #8D22
+责 > zé; #8D23
+贤 > xián; #8D24
+败 > bài; #8D25
+账 > zhàng; #8D26
+货 > hùo; #8D27
+质 > zhí; #8D28
+贩 > fàn; #8D29
+贪 > tān; #8D2A
+贫 > pín; #8D2B
+贬 > biăn; #8D2C
+购 > gòu; #8D2D
+贮 > zhŭ; #8D2E
+贯 > guàn; #8D2F
+贰 > èr; #8D30
+贱 > jiàn; #8D31
+贲 > bì; #8D32
+贳 > shì; #8D33
+贴 > tiē; #8D34
+贵 > gùi; #8D35
+贶 > kuàng; #8D36
+贷 > dài; #8D37
+贸 > mào; #8D38
+费 > fèi; #8D39
+贺 > hè; #8D3A
+贻 > yí; #8D3B
+贼 > zéi; #8D3C
+贽 > zhì; #8D3D
+贾 > jiă; #8D3E
+贿 > hùi; #8D3F
+赀 > zī; #8D40
+赁 > rèn; #8D41
+赂 > lù; #8D42
+赃 > zāng; #8D43
+资 > zī; #8D44
+赅 > gāi; #8D45
+赆 > jìn; #8D46
+赇 > qíu; #8D47
+赈 > zhèn; #8D48
+赉 > lài; #8D49
+赊 > shē; #8D4A
+赋 > fù; #8D4B
+赌 > dŭ; #8D4C
+赍 > jī; #8D4D
+赎 > shú; #8D4E
+赏 > shăng; #8D4F
+赐 > sì; #8D50
+赑 > bì; #8D51
+赒 > zhōu; #8D52
+赓 > gēng; #8D53
+赔 > péi; #8D54
+赕 > tàn; #8D55
+赖 > lài; #8D56
+赗 > fèng; #8D57
+赘 > zhùi; #8D58
+赙 > fù; #8D59
+赚 > zhuàn; #8D5A
+赛 > sài; #8D5B
+赜 > zé; #8D5C
+赝 > yàn; #8D5D
+赞 > zàn; #8D5E
+赟 > yūn; #8D5F
+赠 > zèng; #8D60
+赡 > shàn; #8D61
+赢 > yíng; #8D62
+赣 > gàn; #8D63
+赤 > chì; #8D64
+赥 > xì; #8D65
+赦 > shè; #8D66
+赧 > năn; #8D67
+赨 > xíong; #8D68
+赩 > xì; #8D69
+赪 > chēng; #8D6A
+赫 > hè; #8D6B
+赬 > chēng; #8D6C
+赭 > zhĕ; #8D6D
+赮 > xiá; #8D6E
+赯 > táng; #8D6F
+走 > zŏu; #8D70
+赱 > zŏu; #8D71
+赲 > lì; #8D72
+赳 > jĭu; #8D73
+赴 > fù; #8D74
+赵 > zhào; #8D75
+赶 > găn; #8D76
+起 > qĭ; #8D77
+赸 > shàn; #8D78
+赹 > qíong; #8D79
+赺 > qín; #8D7A
+赻 > xiăn; #8D7B
+赼 > cī; #8D7C
+赽 > jué; #8D7D
+赾 > qĭn; #8D7E
+赿 > chí; #8D7F
+趀 > cī; #8D80
+趁 > chèn; #8D81
+趂 > chèn; #8D82
+趃 > dié; #8D83
+趄 > jū; #8D84
+超 > chāo; #8D85
+趆 > dī; #8D86
+趇 > sè; #8D87
+趈 > zhān; #8D88
+趉 > zhú; #8D89
+越 > yuè; #8D8A
+趋 > qū; #8D8B
+趌 > jié; #8D8C
+趍 > chí; #8D8D
+趎 > chú; #8D8E
+趏 > guā; #8D8F
+趐 > xuè; #8D90
+趑 > cī; #8D91
+趒 > tiáo; #8D92
+趓 > dŭo; #8D93
+趔 > liè; #8D94
+趕 > găn; #8D95
+趖 > sūo; #8D96
+趗 > cù; #8D97
+趘 > xí; #8D98
+趙 > zhào; #8D99
+趚 > sù; #8D9A
+趛 > yĭn; #8D9B
+趜 > jú; #8D9C
+趝 > jiàn; #8D9D
+趞 > què; #8D9E
+趟 > tàng; #8D9F
+趠 > chùo; #8DA0
+趡 > cŭi; #8DA1
+趢 > lù; #8DA2
+趣 > qù; #8DA3
+趤 > dàng; #8DA4
+趥 > qīu; #8DA5
+趦 > zī; #8DA6
+趧 > tí; #8DA7
+趨 > qū; #8DA8
+趩 > chì; #8DA9
+趪 > huáng; #8DAA
+趫 > qiáo; #8DAB
+趬 > qiáo; #8DAC
+趭 > yào; #8DAD
+趮 > zào; #8DAE
+趯 > tì; #8DAF
+趱 > zăn; #8DB1
+趲 > zăn; #8DB2
+足 > zú; #8DB3
+趴 > pā; #8DB4
+趵 > bào; #8DB5
+趶 > kù; #8DB6
+趷 > kē; #8DB7
+趸 > dŭn; #8DB8
+趹 > jué; #8DB9
+趺 > fū; #8DBA
+趻 > chĕn; #8DBB
+趼 > jiăn; #8DBC
+趽 > fàng; #8DBD
+趾 > zhĭ; #8DBE
+趿 > sà; #8DBF
+跀 > yuè; #8DC0
+跁 > pá; #8DC1
+跂 > qí; #8DC2
+跃 > yuè; #8DC3
+跄 > qiāng; #8DC4
+跅 > tùo; #8DC5
+跆 > tái; #8DC6
+跇 > yì; #8DC7
+跈 > niăn; #8DC8
+跉 > líng; #8DC9
+跊 > mèi; #8DCA
+跋 > bá; #8DCB
+跌 > diē; #8DCC
+跍 > kū; #8DCD
+跎 > túo; #8DCE
+跏 > jiā; #8DCF
+跐 > cĭ; #8DD0
+跑 > păo; #8DD1
+跒 > qiă; #8DD2
+跓 > zhù; #8DD3
+跔 > jū; #8DD4
+跕 > dié; #8DD5
+跖 > zhī; #8DD6
+跗 > fū; #8DD7
+跘 > pán; #8DD8
+跙 > jŭ; #8DD9
+跚 > shān; #8DDA
+跛 > bŏ; #8DDB
+跜 > ní; #8DDC
+距 > jù; #8DDD
+跞 > lì; #8DDE
+跟 > gēn; #8DDF
+跠 > yí; #8DE0
+跡 > jī; #8DE1
+跢 > dài; #8DE2
+跣 > xiăn; #8DE3
+跤 > jiāo; #8DE4
+跥 > dùo; #8DE5
+跦 > zhū; #8DE6
+跧 > zhuān; #8DE7
+跨 > kuà; #8DE8
+跩 > zhuăi; #8DE9
+跪 > gùi; #8DEA
+跫 > qíong; #8DEB
+跬 > kŭi; #8DEC
+跭 > xiáng; #8DED
+跮 > chì; #8DEE
+路 > lù; #8DEF
+跰 > bèng; #8DF0
+跱 > zhì; #8DF1
+跲 > jiá; #8DF2
+跳 > tiào; #8DF3
+跴 > căi; #8DF4
+践 > jiàn; #8DF5
+跶 > tà; #8DF6
+跷 > qiāo; #8DF7
+跸 > bì; #8DF8
+跹 > xiān; #8DF9
+跺 > dùo; #8DFA
+跻 > jī; #8DFB
+跼 > jú; #8DFC
+跽 > jì; #8DFD
+跾 > shú; #8DFE
+跿 > tú; #8DFF
+踀 > chù; #8E00
+踁 > jìng; #8E01
+踂 > niè; #8E02
+踃 > xiāo; #8E03
+踄 > bó; #8E04
+踅 > chì; #8E05
+踆 > qūn; #8E06
+踇 > mŏu; #8E07
+踈 > shū; #8E08
+踉 > láng; #8E09
+踊 > yŏng; #8E0A
+踋 > jiăo; #8E0B
+踌 > chóu; #8E0C
+踍 > qiāo; #8E0D
+踏 > tà; #8E0F
+踐 > jiàn; #8E10
+踑 > qí; #8E11
+踒 > wō; #8E12
+踓 > wĕi; #8E13
+踔 > zhúo; #8E14
+踕 > jié; #8E15
+踖 > jí; #8E16
+踗 > niē; #8E17
+踘 > jú; #8E18
+踙 > jū; #8E19
+踚 > lún; #8E1A
+踛 > lù; #8E1B
+踜 > lèng; #8E1C
+踝 > huái; #8E1D
+踞 > jù; #8E1E
+踟 > chí; #8E1F
+踠 > wăn; #8E20
+踡 > quán; #8E21
+踢 > tī; #8E22
+踣 > bó; #8E23
+踤 > zú; #8E24
+踥 > qiè; #8E25
+踦 > jĭ; #8E26
+踧 > cù; #8E27
+踨 > zōng; #8E28
+踩 > căi; #8E29
+踪 > zōng; #8E2A
+踫 > pèng; #8E2B
+踬 > zhì; #8E2C
+踭 > zhēng; #8E2D
+踮 > diăn; #8E2E
+踯 > zhí; #8E2F
+踰 > yú; #8E30
+踱 > dùo; #8E31
+踲 > dùn; #8E32
+踳 > chŭn; #8E33
+踴 > yŏng; #8E34
+踵 > zhŏng; #8E35
+踶 > dì; #8E36
+踷 > zhĕ; #8E37
+踸 > chĕn; #8E38
+踹 > chuài; #8E39
+踺 > jiàn; #8E3A
+踻 > guā; #8E3B
+踼 > táng; #8E3C
+踽 > jŭ; #8E3D
+踾 > fú; #8E3E
+踿 > zú; #8E3F
+蹀 > dié; #8E40
+蹁 > pián; #8E41
+蹂 > róu; #8E42
+蹃 > nùo; #8E43
+蹄 > tí; #8E44
+蹅 > chă; #8E45
+蹆 > tŭi; #8E46
+蹇 > jiăn; #8E47
+蹈 > dào; #8E48
+蹉 > cūo; #8E49
+蹊 > xī; #8E4A
+蹋 > tà; #8E4B
+蹌 > qiāng; #8E4C
+蹍 > zhăn; #8E4D
+蹎 > diān; #8E4E
+蹏 > tí; #8E4F
+蹐 > jí; #8E50
+蹑 > niè; #8E51
+蹒 > mán; #8E52
+蹓 > līu; #8E53
+蹔 > zhàn; #8E54
+蹕 > bì; #8E55
+蹖 > chōng; #8E56
+蹗 > lù; #8E57
+蹘 > liáo; #8E58
+蹙 > cù; #8E59
+蹚 > tāng; #8E5A
+蹛 > dài; #8E5B
+蹜 > sūo; #8E5C
+蹝 > xĭ; #8E5D
+蹞 > kŭi; #8E5E
+蹟 > jī; #8E5F
+蹠 > zhí; #8E60
+蹡 > qiāng; #8E61
+蹢 > dí; #8E62
+蹣 > mán; #8E63
+蹤 > zōng; #8E64
+蹥 > lián; #8E65
+蹦 > bèng; #8E66
+蹧 > zāo; #8E67
+蹨 > niăn; #8E68
+蹩 > bié; #8E69
+蹪 > túi; #8E6A
+蹫 > jú; #8E6B
+蹬 > dèng; #8E6C
+蹭 > cèng; #8E6D
+蹮 > xiān; #8E6E
+蹯 > fán; #8E6F
+蹰 > chú; #8E70
+蹱 > zhōng; #8E71
+蹲 > dūn; #8E72
+蹳 > bō; #8E73
+蹴 > cù; #8E74
+蹵 > zú; #8E75
+蹶 > jué; #8E76
+蹷 > jué; #8E77
+蹸 > lìn; #8E78
+蹹 > tà; #8E79
+蹺 > qiāo; #8E7A
+蹻 > qiāo; #8E7B
+蹼 > pú; #8E7C
+蹽 > liāo; #8E7D
+蹾 > dūn; #8E7E
+蹿 > cuān; #8E7F
+躀 > kuàng; #8E80
+躁 > zào; #8E81
+躂 > tà; #8E82
+躃 > bì; #8E83
+躄 > bì; #8E84
+躅 > zhú; #8E85
+躆 > jù; #8E86
+躇 > chú; #8E87
+躈 > qiào; #8E88
+躉 > dŭn; #8E89
+躊 > chóu; #8E8A
+躋 > jī; #8E8B
+躌 > wŭ; #8E8C
+躍 > yuè; #8E8D
+躎 > niăn; #8E8E
+躏 > lìn; #8E8F
+躐 > liè; #8E90
+躑 > zhí; #8E91
+躒 > lì; #8E92
+躓 > zhì; #8E93
+躔 > chán; #8E94
+躕 > chú; #8E95
+躖 > duàn; #8E96
+躗 > wèi; #8E97
+躘 > lóng; #8E98
+躙 > lìn; #8E99
+躚 > xiān; #8E9A
+躛 > wèi; #8E9B
+躜 > zuān; #8E9C
+躝 > lán; #8E9D
+躞 > xiè; #8E9E
+躟 > ráng; #8E9F
+躠 > xiĕ; #8EA0
+躡 > niè; #8EA1
+躢 > tà; #8EA2
+躣 > qú; #8EA3
+躤 > jiè; #8EA4
+躥 > cuān; #8EA5
+躦 > zuān; #8EA6
+躧 > xĭ; #8EA7
+躨 > kúi; #8EA8
+躩 > jué; #8EA9
+躪 > lìn; #8EAA
+身 > shēn; #8EAB
+躬 > gōng; #8EAC
+躭 > dān; #8EAD
+躯 > qū; #8EAF
+躰 > tĭ; #8EB0
+躱 > dŭo; #8EB1
+躲 > dŭo; #8EB2
+躳 > gōng; #8EB3
+躴 > láng; #8EB4
+躶 > lŭo; #8EB6
+躷 > ăi; #8EB7
+躸 > jī; #8EB8
+躹 > jú; #8EB9
+躺 > tăng; #8EBA
+躽 > yăn; #8EBD
+躿 > kāng; #8EBF
+軀 > qū; #8EC0
+軁 > lóu; #8EC1
+軂 > lào; #8EC2
+軃 > tŭo; #8EC3
+軄 > zhí; #8EC4
+軆 > tĭ; #8EC6
+軇 > dào; #8EC7
+軉 > yù; #8EC9
+車 > chē; #8ECA
+軋 > yà; #8ECB
+軌 > gŭi; #8ECC
+軍 > jūn; #8ECD
+軎 > wèi; #8ECE
+軏 > yuè; #8ECF
+軐 > xìn; #8ED0
+軑 > dì; #8ED1
+軒 > xuān; #8ED2
+軓 > fàn; #8ED3
+軔 > rèn; #8ED4
+軕 > shān; #8ED5
+軖 > qiáng; #8ED6
+軗 > shū; #8ED7
+軘 > tún; #8ED8
+軙 > chén; #8ED9
+軚 > dài; #8EDA
+軛 > è; #8EDB
+軜 > nà; #8EDC
+軝 > qí; #8EDD
+軞 > máo; #8EDE
+軟 > ruăn; #8EDF
+軠 > rèn; #8EE0
+軡 > făn; #8EE1
+転 > zhuăn; #8EE2
+軣 > hōng; #8EE3
+軤 > hū; #8EE4
+軥 > qú; #8EE5
+軦 > huàng; #8EE6
+軧 > dĭ; #8EE7
+軨 > líng; #8EE8
+軩 > dài; #8EE9
+軪 > āo; #8EEA
+軫 > zhĕn; #8EEB
+軬 > fàn; #8EEC
+軭 > kuāng; #8EED
+軮 > ăng; #8EEE
+軯 > pēng; #8EEF
+軰 > bèi; #8EF0
+軱 > gū; #8EF1
+軲 > kū; #8EF2
+軳 > páo; #8EF3
+軴 > zhù; #8EF4
+軵 > rŏng; #8EF5
+軶 > è; #8EF6
+軷 > bá; #8EF7
+軸 > zhóu; #8EF8
+軹 > zhĭ; #8EF9
+軺 > yáo; #8EFA
+軻 > kē; #8EFB
+軼 > yì; #8EFC
+軽 > qīng; #8EFD
+軾 > shì; #8EFE
+軿 > píng; #8EFF
+輀 > ér; #8F00
+輁 > qíong; #8F01
+輂 > jú; #8F02
+較 > jiào; #8F03
+輄 > guāng; #8F04
+輅 > lù; #8F05
+輆 > kăi; #8F06
+輇 > quán; #8F07
+輈 > zhōu; #8F08
+載 > zài; #8F09
+輊 > zhì; #8F0A
+輋 > shē; #8F0B
+輌 > liàng; #8F0C
+輍 > yù; #8F0D
+輎 > shāo; #8F0E
+輏 > yóu; #8F0F
+輐 > huăn; #8F10
+輑 > yŭn; #8F11
+輒 > zhé; #8F12
+輓 > wăn; #8F13
+輔 > fŭ; #8F14
+輕 > qīng; #8F15
+輖 > zhōu; #8F16
+輗 > ní; #8F17
+輘 > líng; #8F18
+輙 > zhé; #8F19
+輚 > zhàn; #8F1A
+輛 > liàng; #8F1B
+輜 > zī; #8F1C
+輝 > hūi; #8F1D
+輞 > wăng; #8F1E
+輟 > chùo; #8F1F
+輠 > gŭo; #8F20
+輡 > kăn; #8F21
+輢 > yĭ; #8F22
+輣 > péng; #8F23
+輤 > qiàn; #8F24
+輥 > gŭn; #8F25
+輦 > niăn; #8F26
+輧 > pián; #8F27
+輨 > guăn; #8F28
+輩 > bèi; #8F29
+輪 > lún; #8F2A
+輫 > pái; #8F2B
+輬 > liáng; #8F2C
+輭 > ruăn; #8F2D
+輮 > róu; #8F2E
+輯 > jí; #8F2F
+輰 > yáng; #8F30
+輱 > xián; #8F31
+輲 > chuán; #8F32
+輳 > còu; #8F33
+輴 > qūn; #8F34
+輵 > gé; #8F35
+輶 > yóu; #8F36
+輷 > hōng; #8F37
+輸 > shū; #8F38
+輹 > fù; #8F39
+輺 > zī; #8F3A
+輻 > fú; #8F3B
+輼 > wēn; #8F3C
+輽 > bèn; #8F3D
+輾 > zhăn; #8F3E
+輿 > yú; #8F3F
+轀 > wēn; #8F40
+轁 > tāo; #8F41
+轂 > gŭ; #8F42
+轃 > zhēn; #8F43
+轄 > xiá; #8F44
+轅 > yuán; #8F45
+轆 > lù; #8F46
+轇 > jīu; #8F47
+轈 > cháo; #8F48
+轉 > zhuăn; #8F49
+轊 > wèi; #8F4A
+轋 > hún; #8F4B
+轍 > chè; #8F4D
+轎 > jiào; #8F4E
+轏 > zhàn; #8F4F
+轐 > pú; #8F50
+轑 > lăo; #8F51
+轒 > fén; #8F52
+轓 > fān; #8F53
+轔 > lín; #8F54
+轕 > gé; #8F55
+轖 > sè; #8F56
+轗 > kăn; #8F57
+轘 > huàn; #8F58
+轙 > yĭ; #8F59
+轚 > jí; #8F5A
+轛 > dùi; #8F5B
+轜 > ér; #8F5C
+轝 > yú; #8F5D
+轞 > xiàn; #8F5E
+轟 > hōng; #8F5F
+轠 > lĕi; #8F60
+轡 > pèi; #8F61
+轢 > lì; #8F62
+轣 > lì; #8F63
+轤 > lú; #8F64
+轥 > lìn; #8F65
+车 > chē; #8F66
+轧 > yà; #8F67
+轨 > gŭi; #8F68
+轩 > xuān; #8F69
+轪 > dì; #8F6A
+轫 > rèn; #8F6B
+转 > zhuăn; #8F6C
+轭 > è; #8F6D
+轮 > lún; #8F6E
+软 > ruăn; #8F6F
+轰 > hōng; #8F70
+轱 > kū; #8F71
+轲 > kē; #8F72
+轳 > lú; #8F73
+轴 > zhóu; #8F74
+轵 > zhĭ; #8F75
+轶 > yì; #8F76
+轷 > hū; #8F77
+轸 > zhĕn; #8F78
+轹 > lì; #8F79
+轺 > yáo; #8F7A
+轻 > qīng; #8F7B
+轼 > shì; #8F7C
+载 > zài; #8F7D
+轾 > zhì; #8F7E
+轿 > jiào; #8F7F
+辀 > zhōu; #8F80
+辁 > quán; #8F81
+辂 > lù; #8F82
+较 > jiào; #8F83
+辄 > zhé; #8F84
+辅 > fŭ; #8F85
+辆 > liàng; #8F86
+辇 > niăn; #8F87
+辈 > bèi; #8F88
+辉 > hūi; #8F89
+辊 > gŭn; #8F8A
+辋 > wăng; #8F8B
+辌 > liáng; #8F8C
+辍 > chùo; #8F8D
+辎 > zī; #8F8E
+辏 > còu; #8F8F
+辐 > fú; #8F90
+辑 > jí; #8F91
+辒 > wēn; #8F92
+输 > shū; #8F93
+辔 > pèi; #8F94
+辕 > yuán; #8F95
+辖 > xiá; #8F96
+辗 > zhăn; #8F97
+辘 > lù; #8F98
+辙 > chè; #8F99
+辚 > lín; #8F9A
+辛 > xīn; #8F9B
+辜 > gū; #8F9C
+辝 > cí; #8F9D
+辞 > cí; #8F9E
+辟 > pì; #8F9F
+辠 > zùi; #8FA0
+辡 > biàn; #8FA1
+辢 > là; #8FA2
+辣 > là; #8FA3
+辤 > cí; #8FA4
+辥 > xuē; #8FA5
+辦 > bàn; #8FA6
+辧 > biàn; #8FA7
+辨 > biàn; #8FA8
+辩 > biàn; #8FA9
+辫 > biàn; #8FAB
+辬 > bān; #8FAC
+辭 > cí; #8FAD
+辮 > biàn; #8FAE
+辯 > biàn; #8FAF
+辰 > chén; #8FB0
+辱 > rù; #8FB1
+農 > nóng; #8FB2
+辳 > nóng; #8FB3
+辴 > zhĕn; #8FB4
+辵 > chùo; #8FB5
+辶 > chùo; #8FB6
+辸 > réng; #8FB8
+边 > biān; #8FB9
+辺 > biān; #8FBA
+辽 > liáo; #8FBD
+达 > dá; #8FBE
+辿 > chān; #8FBF
+迀 > gān; #8FC0
+迁 > qiān; #8FC1
+迂 > yū; #8FC2
+迃 > yū; #8FC3
+迄 > qì; #8FC4
+迅 > xùn; #8FC5
+迆 > yĭ; #8FC6
+过 > gùo; #8FC7
+迈 > mài; #8FC8
+迉 > qí; #8FC9
+迊 > zā; #8FCA
+迋 > wàng; #8FCB
+迌 > jia; #8FCC
+迍 > zhūn; #8FCD
+迎 > yíng; #8FCE
+迏 > tì; #8FCF
+运 > yùn; #8FD0
+近 > jìn; #8FD1
+迒 > háng; #8FD2
+迓 > yà; #8FD3
+返 > făn; #8FD4
+迕 > wù; #8FD5
+迖 > dá; #8FD6
+迗 > é; #8FD7
+还 > huán; #8FD8
+这 > zhè; #8FD9
+进 > jìn; #8FDB
+远 > yuăn; #8FDC
+违 > wéi; #8FDD
+连 > lián; #8FDE
+迟 > chí; #8FDF
+迠 > chè; #8FE0
+迡 > nì; #8FE1
+迢 > tiáo; #8FE2
+迣 > zhì; #8FE3
+迤 > yĭ; #8FE4
+迥 > jĭong; #8FE5
+迦 > jiā; #8FE6
+迧 > chén; #8FE7
+迨 > dài; #8FE8
+迩 > ĕr; #8FE9
+迪 > dí; #8FEA
+迫 > pò; #8FEB
+迬 > wăng; #8FEC
+迭 > dié; #8FED
+迮 > zé; #8FEE
+迯 > táo; #8FEF
+述 > shù; #8FF0
+迱 > túo; #8FF1
+迳 > jìng; #8FF3
+迴 > húi; #8FF4
+迵 > tóng; #8FF5
+迶 > yòu; #8FF6
+迷 > mí; #8FF7
+迸 > bèng; #8FF8
+迹 > jī; #8FF9
+迺 > năi; #8FFA
+迻 > yí; #8FFB
+迼 > jié; #8FFC
+追 > zhūi; #8FFD
+迾 > liè; #8FFE
+迿 > xùn; #8FFF
+退 > tùi; #9000
+送 > sòng; #9001
+适 > guā; #9002
+逃 > táo; #9003
+逄 > páng; #9004
+逅 > hòu; #9005
+逆 > nì; #9006
+逇 > dùn; #9007
+逈 > jĭong; #9008
+选 > xuăn; #9009
+逊 > xùn; #900A
+逋 > bū; #900B
+逌 > yóu; #900C
+逍 > xiāo; #900D
+逎 > qíu; #900E
+透 > tòu; #900F
+逐 > zhú; #9010
+逑 > qíu; #9011
+递 > dì; #9012
+逓 > dì; #9013
+途 > tú; #9014
+逕 > jìng; #9015
+逖 > tì; #9016
+逗 > dòu; #9017
+逘 > yĭ; #9018
+這 > zhè; #9019
+通 > tōng; #901A
+逛 > guàng; #901B
+逜 > wù; #901C
+逝 > shì; #901D
+逞 > chĕng; #901E
+速 > sù; #901F
+造 > zào; #9020
+逡 > qūn; #9021
+逢 > féng; #9022
+連 > lián; #9023
+逤 > sùo; #9024
+逥 > húi; #9025
+逦 > lĭ; #9026
+逨 > lái; #9028
+逩 > bèn; #9029
+逪 > cùo; #902A
+逫 > jué; #902B
+逬 > bèng; #902C
+逭 > huàn; #902D
+逮 > dài; #902E
+逯 > lù; #902F
+逰 > yóu; #9030
+週 > zhōu; #9031
+進 > jìn; #9032
+逳 > yù; #9033
+逴 > chùo; #9034
+逵 > kúi; #9035
+逶 > wēi; #9036
+逷 > tì; #9037
+逸 > yì; #9038
+逹 > dá; #9039
+逺 > yuăn; #903A
+逻 > lúo; #903B
+逼 > bī; #903C
+逽 > nùo; #903D
+逾 > yú; #903E
+逿 > dàng; #903F
+遀 > súi; #9040
+遁 > dùn; #9041
+遂 > sùi; #9042
+遃 > yăn; #9043
+遄 > chuán; #9044
+遅 > chí; #9045
+遆 > tí; #9046
+遇 > yù; #9047
+遈 > shí; #9048
+遉 > zhēn; #9049
+遊 > yóu; #904A
+運 > yùn; #904B
+遌 > è; #904C
+遍 > biàn; #904D
+過 > gùo; #904E
+遏 > è; #904F
+遐 > xiá; #9050
+遑 > huáng; #9051
+遒 > qíu; #9052
+道 > dào; #9053
+達 > dá; #9054
+違 > wéi; #9055
+遗 > yí; #9057
+遘 > gòu; #9058
+遙 > yáo; #9059
+遚 > chù; #905A
+遛 > líu; #905B
+遜 > xùn; #905C
+遝 > tà; #905D
+遞 > dì; #905E
+遟 > chí; #905F
+遠 > yuăn; #9060
+遡 > sù; #9061
+遢 > tà; #9062
+遣 > qiăn; #9063
+遥 > yáo; #9065
+遦 > guàn; #9066
+遧 > zhāng; #9067
+遨 > áo; #9068
+適 > shì; #9069
+遪 > cè; #906A
+遫 > chì; #906B
+遬 > sù; #906C
+遭 > zāo; #906D
+遮 > zhē; #906E
+遯 > dùn; #906F
+遰 > dì; #9070
+遱 > lóu; #9071
+遲 > chí; #9072
+遳 > cūo; #9073
+遴 > lín; #9074
+遵 > zūn; #9075
+遶 > rào; #9076
+遷 > qiān; #9077
+選 > xuăn; #9078
+遹 > yù; #9079
+遺 > yí; #907A
+遻 > wù; #907B
+遼 > liáo; #907C
+遽 > jù; #907D
+遾 > shì; #907E
+避 > bì; #907F
+邀 > yāo; #9080
+邁 > mài; #9081
+邂 > xiè; #9082
+邃 > sùi; #9083
+還 > huán; #9084
+邅 > zhān; #9085
+邆 > téng; #9086
+邇 > ĕr; #9087
+邈 > miăo; #9088
+邉 > biān; #9089
+邊 > biān; #908A
+邋 > lá; #908B
+邌 > lí; #908C
+邍 > yuán; #908D
+邎 > yáo; #908E
+邏 > lúo; #908F
+邐 > lĭ; #9090
+邑 > yì; #9091
+邒 > tíng; #9092
+邓 > dèng; #9093
+邔 > qĭ; #9094
+邕 > yōng; #9095
+邖 > shān; #9096
+邗 > hán; #9097
+邘 > yú; #9098
+邙 > máng; #9099
+邚 > rú; #909A
+邛 > qíong; #909B
+邝 > kuàng; #909D
+邞 > fū; #909E
+邟 > kàng; #909F
+邠 > bīn; #90A0
+邡 > fāng; #90A1
+邢 > xíng; #90A2
+那 > nà; #90A3
+邤 > xin; #90A4
+邥 > shĕn; #90A5
+邦 > bāng; #90A6
+邧 > yuán; #90A7
+邨 > cūn; #90A8
+邩 > hŭo; #90A9
+邪 > xié; #90AA
+邫 > bāng; #90AB
+邬 > wū; #90AC
+邭 > jù; #90AD
+邮 > yóu; #90AE
+邯 > hán; #90AF
+邰 > tái; #90B0
+邱 > qīu; #90B1
+邲 > bì; #90B2
+邳 > péi; #90B3
+邴 > bĭng; #90B4
+邵 > shào; #90B5
+邶 > bèi; #90B6
+邷 > wă; #90B7
+邸 > dĭ; #90B8
+邹 > zōu; #90B9
+邺 > yè; #90BA
+邻 > lín; #90BB
+邼 > kuāng; #90BC
+邽 > gūi; #90BD
+邾 > zhū; #90BE
+邿 > shī; #90BF
+郀 > kū; #90C0
+郁 > yù; #90C1
+郂 > gāi; #90C2
+郃 > gé; #90C3
+郄 > xì; #90C4
+郅 > zhì; #90C5
+郆 > jí; #90C6
+郇 > xún; #90C7
+郈 > hòu; #90C8
+郉 > xíng; #90C9
+郊 > jiāo; #90CA
+郋 > xí; #90CB
+郌 > gūi; #90CC
+郍 > núo; #90CD
+郎 > láng; #90CE
+郏 > jiá; #90CF
+郐 > kuài; #90D0
+郑 > zhèng; #90D1
+郓 > yùn; #90D3
+郔 > yán; #90D4
+郕 > chéng; #90D5
+郖 > dōu; #90D6
+郗 > chī; #90D7
+郘 > lǚ; #90D8
+郙 > fŭ; #90D9
+郚 > wú; #90DA
+郛 > fú; #90DB
+郜 > gào; #90DC
+郝 > hăo; #90DD
+郞 > láng; #90DE
+郟 > jiá; #90DF
+郠 > gĕng; #90E0
+郡 > jùn; #90E1
+郢 > yĭng; #90E2
+郣 > bó; #90E3
+郤 > xì; #90E4
+郥 > bèi; #90E5
+郦 > lì; #90E6
+郧 > yún; #90E7
+部 > bù; #90E8
+郩 > xiáo; #90E9
+郪 > qī; #90EA
+郫 > pí; #90EB
+郬 > qīng; #90EC
+郭 > gūo; #90ED
+郮 > zhou; #90EE
+郯 > tán; #90EF
+郰 > zōu; #90F0
+郱 > píng; #90F1
+郲 > lái; #90F2
+郳 > ní; #90F3
+郴 > chēn; #90F4
+郵 > yóu; #90F5
+郶 > bù; #90F6
+郷 > xiāng; #90F7
+郸 > dān; #90F8
+郹 > jú; #90F9
+郺 > yōng; #90FA
+郻 > qiāo; #90FB
+郼 > yī; #90FC
+都 > dū; #90FD
+郾 > yăn; #90FE
+郿 > méi; #90FF
+鄀 > rùo; #9100
+鄁 > bèi; #9101
+鄂 > è; #9102
+鄃 > yú; #9103
+鄄 > juàn; #9104
+鄅 > yŭ; #9105
+鄆 > yùn; #9106
+鄇 > hòu; #9107
+鄈 > kúi; #9108
+鄉 > xiāng; #9109
+鄊 > xiāng; #910A
+鄋 > sōu; #910B
+鄌 > táng; #910C
+鄍 > míng; #910D
+鄎 > xì; #910E
+鄏 > rù; #910F
+鄐 > chù; #9110
+鄑 > zī; #9111
+鄒 > zōu; #9112
+鄓 > jú; #9113
+鄔 > wū; #9114
+鄕 > xiāng; #9115
+鄖 > yún; #9116
+鄗 > hào; #9117
+鄘 > yōng; #9118
+鄙 > bĭ; #9119
+鄚 > mò; #911A
+鄛 > cháo; #911B
+鄜 > fū; #911C
+鄝 > liăo; #911D
+鄞 > yín; #911E
+鄟 > zhuān; #911F
+鄠 > hù; #9120
+鄡 > qiāo; #9121
+鄢 > yān; #9122
+鄣 > zhāng; #9123
+鄤 > fàn; #9124
+鄥 > qiāo; #9125
+鄦 > xŭ; #9126
+鄧 > dèng; #9127
+鄨 > bì; #9128
+鄩 > xín; #9129
+鄪 > bì; #912A
+鄫 > céng; #912B
+鄬 > wéi; #912C
+鄭 > zhèng; #912D
+鄮 > mào; #912E
+鄯 > shàn; #912F
+鄰 > lín; #9130
+鄱 > pó; #9131
+鄲 > dān; #9132
+鄳 > méng; #9133
+鄴 > yè; #9134
+鄵 > cāo; #9135
+鄶 > kuài; #9136
+鄷 > fēng; #9137
+鄸 > méng; #9138
+鄹 > zōu; #9139
+鄺 > kuàng; #913A
+鄻 > lián; #913B
+鄼 > zàn; #913C
+鄽 > chán; #913D
+鄾 > yōu; #913E
+鄿 > qí; #913F
+酀 > yān; #9140
+酁 > chán; #9141
+酂 > zàn; #9142
+酃 > líng; #9143
+酄 > huān; #9144
+酅 > xī; #9145
+酆 > fēng; #9146
+酇 > zàn; #9147
+酈 > lì; #9148
+酉 > yŏu; #9149
+酊 > dĭng; #914A
+酋 > qíu; #914B
+酌 > zhúo; #914C
+配 > pèi; #914D
+酎 > zhòu; #914E
+酏 > yí; #914F
+酐 > hăng; #9150
+酑 > yŭ; #9151
+酒 > jĭu; #9152
+酓 > yăn; #9153
+酔 > zùi; #9154
+酕 > máo; #9155
+酖 > dān; #9156
+酗 > xù; #9157
+酘 > tóu; #9158
+酙 > zhēn; #9159
+酚 > fēn; #915A
+酝 > yùn; #915D
+酞 > tài; #915E
+酟 > tiān; #915F
+酠 > qiă; #9160
+酡 > túo; #9161
+酢 > zùo; #9162
+酣 > hān; #9163
+酤 > gū; #9164
+酥 > sū; #9165
+酦 > pò; #9166
+酧 > chóu; #9167
+酨 > zài; #9168
+酩 > míng; #9169
+酪 > lùo; #916A
+酫 > chùo; #916B
+酬 > chóu; #916C
+酭 > yòu; #916D
+酮 > tóng; #916E
+酯 > zhĭ; #916F
+酰 > xiān; #9170
+酱 > jiàng; #9171
+酲 > chéng; #9172
+酳 > yìn; #9173
+酴 > tú; #9174
+酵 > xiào; #9175
+酶 > méi; #9176
+酷 > kù; #9177
+酸 > suān; #9178
+酹 > lèi; #9179
+酺 > pú; #917A
+酻 > zùi; #917B
+酼 > hăi; #917C
+酽 > yàn; #917D
+酾 > xĭ; #917E
+酿 > niàng; #917F
+醀 > wéi; #9180
+醁 > lù; #9181
+醂 > lăn; #9182
+醃 > yān; #9183
+醄 > táo; #9184
+醅 > pēi; #9185
+醆 > zhăn; #9186
+醇 > chún; #9187
+醈 > tán; #9188
+醉 > zùi; #9189
+醊 > chùo; #918A
+醋 > cù; #918B
+醌 > kūn; #918C
+醍 > tí; #918D
+醎 > mián; #918E
+醏 > dū; #918F
+醐 > hú; #9190
+醑 > xŭ; #9191
+醒 > xĭng; #9192
+醓 > tăn; #9193
+醔 > jīu; #9194
+醕 > chún; #9195
+醖 > yùn; #9196
+醗 > pò; #9197
+醘 > kè; #9198
+醙 > sōu; #9199
+醚 > mí; #919A
+醛 > quán; #919B
+醜 > chŏu; #919C
+醝 > cúo; #919D
+醞 > yùn; #919E
+醟 > yòng; #919F
+醠 > àng; #91A0
+醡 > zhà; #91A1
+醢 > hăi; #91A2
+醣 > táng; #91A3
+醤 > jiàng; #91A4
+醥 > piăo; #91A5
+醦 > shăn; #91A6
+醧 > yù; #91A7
+醨 > lí; #91A8
+醩 > záo; #91A9
+醪 > láo; #91AA
+醫 > yī; #91AB
+醬 > jiàng; #91AC
+醭 > pū; #91AD
+醮 > jiào; #91AE
+醯 > xī; #91AF
+醰 > tán; #91B0
+醱 > pò; #91B1
+醲 > nóng; #91B2
+醳 > yì; #91B3
+醴 > lĭ; #91B4
+醵 > jù; #91B5
+醶 > jiào; #91B6
+醷 > yì; #91B7
+醸 > niàng; #91B8
+醹 > rú; #91B9
+醺 > xūn; #91BA
+醻 > chóu; #91BB
+醼 > yàn; #91BC
+醽 > líng; #91BD
+醾 > mí; #91BE
+醿 > mí; #91BF
+釀 > niàng; #91C0
+釁 > xìn; #91C1
+釂 > jiào; #91C2
+釃 > xĭ; #91C3
+釄 > mí; #91C4
+釅 > yàn; #91C5
+釆 > biàn; #91C6
+采 > căi; #91C7
+釈 > shì; #91C8
+釉 > yòu; #91C9
+释 > shì; #91CA
+釋 > shì; #91CB
+里 > lĭ; #91CC
+重 > zhòng; #91CD
+野 > yĕ; #91CE
+量 > liàng; #91CF
+釐 > lí; #91D0
+金 > jīn; #91D1
+釒 > jīn' 'zì' 'páng; #91D2
+釓 > qíu; #91D3
+釔 > yĭ; #91D4
+釕 > diăo; #91D5
+釖 > dāo; #91D6
+釗 > zhāo; #91D7
+釘 > dīng; #91D8
+釙 > pò; #91D9
+釚 > qíu; #91DA
+釛 > hé; #91DB
+釜 > fŭ; #91DC
+針 > zhēn; #91DD
+釞 > zhí; #91DE
+釟 > bā; #91DF
+釠 > luàn; #91E0
+釡 > fŭ; #91E1
+釢 > nái; #91E2
+釣 > diào; #91E3
+釤 > shàn; #91E4
+釥 > qiăo; #91E5
+釦 > kòu; #91E6
+釧 > chuàn; #91E7
+釨 > zĭ; #91E8
+釩 > fán; #91E9
+釪 > yú; #91EA
+釫 > huá; #91EB
+釬 > hàn; #91EC
+釭 > gōng; #91ED
+釮 > qí; #91EE
+釯 > máng; #91EF
+釰 > rì; #91F0
+釱 > dì; #91F1
+釲 > sì; #91F2
+釳 > xì; #91F3
+釴 > yì; #91F4
+釵 > chāi; #91F5
+釶 > shī; #91F6
+釷 > tŭ; #91F7
+釸 > xì; #91F8
+釹 > nǚ; #91F9
+釺 > qiān; #91FA
+釼 > jiàn; #91FC
+釽 > pī; #91FD
+釾 > yé; #91FE
+釿 > yín; #91FF
+鈀 > bă; #9200
+鈁 > fāng; #9201
+鈂 > chén; #9202
+鈃 > xíng; #9203
+鈄 > tŏu; #9204
+鈅 > yuè; #9205
+鈆 > yán; #9206
+鈇 > fū; #9207
+鈈 > pī; #9208
+鈉 > nà; #9209
+鈊 > xīn; #920A
+鈋 > é; #920B
+鈌 > jué; #920C
+鈍 > dùn; #920D
+鈎 > gōu; #920E
+鈏 > yĭn; #920F
+鈐 > qián; #9210
+鈑 > băn; #9211
+鈒 > jí; #9212
+鈓 > rén; #9213
+鈔 > chāo; #9214
+鈕 > nĭu; #9215
+鈖 > fēn; #9216
+鈗 > yŭn; #9217
+鈘 > jĭ; #9218
+鈙 > qín; #9219
+鈚 > pí; #921A
+鈛 > gūo; #921B
+鈜 > hóng; #921C
+鈝 > yín; #921D
+鈞 > jūn; #921E
+鈟 > shī; #921F
+鈠 > yì; #9220
+鈡 > zhōng; #9221
+鈢 > niē; #9222
+鈣 > gài; #9223
+鈤 > rì; #9224
+鈥 > húo; #9225
+鈦 > tài; #9226
+鈧 > kàng; #9227
+鈬 > dúo; #922C
+鈭 > zī; #922D
+鈮 > nĭ; #922E
+鈯 > tú; #922F
+鈰 > shì; #9230
+鈱 > mín; #9231
+鈲 > gū; #9232
+鈳 > ē; #9233
+鈴 > líng; #9234
+鈵 > bìng; #9235
+鈶 > yí; #9236
+鈷 > gū; #9237
+鈸 > bá; #9238
+鈹 > pī; #9239
+鈺 > yù; #923A
+鈻 > sì; #923B
+鈼 > zúo; #923C
+鈽 > bù; #923D
+鈾 > yóu; #923E
+鈿 > diàn; #923F
+鉀 > jiă; #9240
+鉁 > zhēn; #9241
+鉂 > shĭ; #9242
+鉃 > shì; #9243
+鉄 > tiĕ; #9244
+鉅 > jù; #9245
+鉆 > zhān; #9246
+鉇 > shī; #9247
+鉈 > shé; #9248
+鉉 > xuàn; #9249
+鉊 > zhāo; #924A
+鉋 > bào; #924B
+鉌 > hé; #924C
+鉍 > bì; #924D
+鉎 > shēng; #924E
+鉏 > chú; #924F
+鉐 > shí; #9250
+鉑 > bó; #9251
+鉒 > zhù; #9252
+鉓 > chì; #9253
+鉔 > zā; #9254
+鉕 > pō; #9255
+鉖 > tóng; #9256
+鉗 > qián; #9257
+鉘 > fú; #9258
+鉙 > zhăi; #9259
+鉚 > lĭu; #925A
+鉛 > qiān; #925B
+鉜 > fú; #925C
+鉝 > lì; #925D
+鉞 > yuè; #925E
+鉟 > pī; #925F
+鉠 > yāng; #9260
+鉡 > bàn; #9261
+鉢 > bō; #9262
+鉣 > jié; #9263
+鉤 > gōu; #9264
+鉥 > shù; #9265
+鉦 > zhēng; #9266
+鉧 > mŭ; #9267
+鉨 > nĭ; #9268
+鉩 > niē; #9269
+鉪 > dì; #926A
+鉫 > jiā; #926B
+鉬 > mù; #926C
+鉭 > dàn; #926D
+鉮 > shēn; #926E
+鉯 > yĭ; #926F
+鉰 > sī; #9270
+鉱 > kuàng; #9271
+鉲 > kă; #9272
+鉳 > bĕi; #9273
+鉴 > jiàn; #9274
+鉵 > tóng; #9275
+鉶 > xíng; #9276
+鉷 > hóng; #9277
+鉸 > jiăo; #9278
+鉹 > chĭ; #9279
+鉺 > èr; #927A
+鉻 > gè; #927B
+鉼 > bĭng; #927C
+鉽 > shì; #927D
+鉾 > móu; #927E
+鉿 > jiá; #927F
+銀 > yín; #9280
+銁 > jūn; #9281
+銂 > zhōu; #9282
+銃 > chòng; #9283
+銄 > shàng; #9284
+銅 > tóng; #9285
+銆 > mò; #9286
+銇 > lèi; #9287
+銈 > jī; #9288
+銉 > yù; #9289
+銊 > xù; #928A
+銋 > rén; #928B
+銌 > zùn; #928C
+銍 > zhì; #928D
+銎 > qīong; #928E
+銏 > shàn; #928F
+銐 > chì; #9290
+銑 > xiăn; #9291
+銒 > xíng; #9292
+銓 > quán; #9293
+銔 > pī; #9294
+銕 > tiĕ; #9295
+銖 > zhū; #9296
+銗 > hóu; #9297
+銘 > míng; #9298
+銙 > kuă; #9299
+銚 > yáo; #929A
+銛 > xiān; #929B
+銜 > xián; #929C
+銝 > xīu; #929D
+銞 > jūn; #929E
+銟 > chā; #929F
+銠 > lăo; #92A0
+銡 > jí; #92A1
+銢 > pĭ; #92A2
+銣 > rŭ; #92A3
+銤 > mĭ; #92A4
+銥 > yĭ; #92A5
+銦 > yīn; #92A6
+銧 > guāng; #92A7
+銨 > ān; #92A8
+銩 > diōu; #92A9
+銪 > yŏu; #92AA
+銫 > sè; #92AB
+銬 > kào; #92AC
+銭 > qián; #92AD
+銮 > luán; #92AE
+銰 > āi; #92B0
+銱 > diào; #92B1
+銲 > hàn; #92B2
+銳 > rùi; #92B3
+銴 > shì; #92B4
+銵 > kēng; #92B5
+銶 > qíu; #92B6
+銷 > xiāo; #92B7
+銸 > zhé; #92B8
+銹 > xìu; #92B9
+銺 > zàng; #92BA
+銻 > tì; #92BB
+銼 > cùo; #92BC
+銽 > guā; #92BD
+銾 > gŏng; #92BE
+銿 > zhōng; #92BF
+鋀 > dòu; #92C0
+鋁 > lǚ; #92C1
+鋂 > méi; #92C2
+鋃 > láng; #92C3
+鋄 > wăn; #92C4
+鋅 > xīn; #92C5
+鋆 > yún; #92C6
+鋇 > bèi; #92C7
+鋈 > wù; #92C8
+鋉 > sù; #92C9
+鋊 > yù; #92CA
+鋋 > chán; #92CB
+鋌 > tĭng; #92CC
+鋍 > bó; #92CD
+鋎 > hàn; #92CE
+鋏 > jiá; #92CF
+鋐 > hóng; #92D0
+鋑 > cuān; #92D1
+鋒 > fēng; #92D2
+鋓 > chān; #92D3
+鋔 > wăn; #92D4
+鋕 > zhì; #92D5
+鋖 > sī; #92D6
+鋗 > xuān; #92D7
+鋘 > wú; #92D8
+鋙 > wú; #92D9
+鋚 > tiáo; #92DA
+鋛 > gŏng; #92DB
+鋜 > zhúo; #92DC
+鋝 > lǜe; #92DD
+鋞 > xíng; #92DE
+鋟 > qiān; #92DF
+鋠 > shèn; #92E0
+鋡 > hán; #92E1
+鋢 > lǜe; #92E2
+鋣 > xié; #92E3
+鋤 > chú; #92E4
+鋥 > zhèng; #92E5
+鋦 > jú; #92E6
+鋧 > xiàn; #92E7
+鋨 > tiĕ; #92E8
+鋩 > máng; #92E9
+鋪 > pū; #92EA
+鋫 > lí; #92EB
+鋬 > pàn; #92EC
+鋭 > rùi; #92ED
+鋮 > chéng; #92EE
+鋯 > gào; #92EF
+鋰 > lĭ; #92F0
+鋱 > tè; #92F1
+鋳 > zhù; #92F3
+鋵 > tū; #92F5
+鋶 > lĭu; #92F6
+鋷 > zùi; #92F7
+鋸 > jù; #92F8
+鋹 > chăng; #92F9
+鋺 > yuān; #92FA
+鋻 > jiàn; #92FB
+鋼 > gāng; #92FC
+鋽 > diào; #92FD
+鋾 > táo; #92FE
+鋿 > cháng; #92FF
+錀 > lún; #9300
+錁 > kuă; #9301
+錂 > líng; #9302
+錃 > bēi; #9303
+錄 > lù; #9304
+錅 > lí; #9305
+錆 > qiāng; #9306
+錇 > póu; #9307
+錈 > juàn; #9308
+錉 > mín; #9309
+錊 > zùi; #930A
+錋 > péng; #930B
+錌 > àn; #930C
+錍 > pí; #930D
+錎 > xiàn; #930E
+錏 > yà; #930F
+錐 > zhūi; #9310
+錑 > lèi; #9311
+錒 > ā; #9312
+錓 > kōng; #9313
+錔 > tà; #9314
+錕 > kūn; #9315
+錖 > dŭ; #9316
+錗 > wèi; #9317
+錘 > chúi; #9318
+錙 > zī; #9319
+錚 > zhēng; #931A
+錛 > bēn; #931B
+錜 > niē; #931C
+錝 > cóng; #931D
+錞 > qún; #931E
+錟 > tán; #931F
+錠 > dìng; #9320
+錡 > qí; #9321
+錢 > qián; #9322
+錣 > zhúo; #9323
+錤 > qí; #9324
+錥 > yù; #9325
+錦 > jĭn; #9326
+錧 > guăn; #9327
+錨 > máo; #9328
+錩 > chāng; #9329
+錪 > tiăn; #932A
+錫 > xí; #932B
+錬 > liàn; #932C
+錭 > táo; #932D
+錮 > gù; #932E
+錯 > cùo; #932F
+錰 > shù; #9330
+錱 > zhēn; #9331
+録 > lù; #9332
+錳 > mĕng; #9333
+錴 > lù; #9334
+錵 > huā; #9335
+錶 > biăo; #9336
+錷 > gá; #9337
+錸 > lái; #9338
+錹 > kĕn; #9339
+錼 > nài; #933C
+錽 > wăn; #933D
+錾 > zàn; #933E
+鍀 > dé; #9340
+鍁 > xiān; #9341
+鍃 > hūo; #9343
+鍄 > liàng; #9344
+鍆 > mén; #9346
+鍇 > kăi; #9347
+鍈 > yīng; #9348
+鍉 > dī; #9349
+鍊 > liàn; #934A
+鍋 > gūo; #934B
+鍌 > xiăn; #934C
+鍍 > dù; #934D
+鍎 > tú; #934E
+鍏 > wéi; #934F
+鍐 > cōng; #9350
+鍑 > fù; #9351
+鍒 > róu; #9352
+鍓 > jí; #9353
+鍔 > è; #9354
+鍕 > róu; #9355
+鍖 > chĕn; #9356
+鍗 > tí; #9357
+鍘 > zhá; #9358
+鍙 > hòng; #9359
+鍚 > yáng; #935A
+鍛 > duàn; #935B
+鍜 > xiā; #935C
+鍝 > yú; #935D
+鍞 > kēng; #935E
+鍟 > xīng; #935F
+鍠 > huáng; #9360
+鍡 > wĕi; #9361
+鍢 > fù; #9362
+鍣 > zhāo; #9363
+鍤 > chá; #9364
+鍥 > qiè; #9365
+鍦 > shé; #9366
+鍧 > hōng; #9367
+鍨 > kúi; #9368
+鍩 > tiăn; #9369
+鍪 > móu; #936A
+鍫 > qiāo; #936B
+鍬 > qiāo; #936C
+鍭 > hóu; #936D
+鍮 > tōu; #936E
+鍯 > cōng; #936F
+鍰 > huán; #9370
+鍱 > yè; #9371
+鍲 > mín; #9372
+鍳 > jiàn; #9373
+鍴 > duān; #9374
+鍵 > jiàn; #9375
+鍶 > sōng; #9376
+鍷 > kūi; #9377
+鍸 > hú; #9378
+鍹 > xuān; #9379
+鍺 > dŭo; #937A
+鍻 > jié; #937B
+鍼 > zhēn; #937C
+鍽 > biān; #937D
+鍾 > zhōng; #937E
+鍿 > zī; #937F
+鎀 > xīu; #9380
+鎁 > yé; #9381
+鎂 > mĕi; #9382
+鎃 > pài; #9383
+鎄 > āi; #9384
+鎅 > jiè; #9385
+鎇 > méi; #9387
+鎈 > chūo; #9388
+鎉 > tà; #9389
+鎊 > bàng; #938A
+鎋 > xiá; #938B
+鎌 > lián; #938C
+鎍 > sŭo; #938D
+鎎 > xì; #938E
+鎏 > líu; #938F
+鎐 > zú; #9390
+鎑 > yè; #9391
+鎒 > nòu; #9392
+鎓 > wēng; #9393
+鎔 > róng; #9394
+鎕 > táng; #9395
+鎖 > sŭo; #9396
+鎗 > qiāng; #9397
+鎘 > gé; #9398
+鎙 > shùo; #9399
+鎚 > chúi; #939A
+鎛 > bó; #939B
+鎜 > pán; #939C
+鎝 > sà; #939D
+鎞 > bì; #939E
+鎟 > săng; #939F
+鎠 > gāng; #93A0
+鎡 > zī; #93A1
+鎢 > wù; #93A2
+鎣 > yìng; #93A3
+鎤 > huăng; #93A4
+鎥 > tiáo; #93A5
+鎦 > líu; #93A6
+鎧 > kăi; #93A7
+鎨 > sŭn; #93A8
+鎩 > shā; #93A9
+鎪 > sōu; #93AA
+鎫 > wàn; #93AB
+鎬 > hào; #93AC
+鎭 > zhèn; #93AD
+鎮 > zhèn; #93AE
+鎯 > lŭo; #93AF
+鎰 > yì; #93B0
+鎱 > yuán; #93B1
+鎲 > tăng; #93B2
+鎳 > niè; #93B3
+鎴 > xí; #93B4
+鎵 > jiā; #93B5
+鎶 > gē; #93B6
+鎷 > mă; #93B7
+鎸 > juān; #93B8
+鎻 > sŭo; #93BB
+鎿 > ná; #93BF
+鏀 > lŭ; #93C0
+鏁 > sŭo; #93C1
+鏂 > ōu; #93C2
+鏃 > zú; #93C3
+鏄 > tuán; #93C4
+鏅 > xīu; #93C5
+鏆 > guàn; #93C6
+鏇 > xuàn; #93C7
+鏈 > liàn; #93C8
+鏉 > shòu; #93C9
+鏊 > áo; #93CA
+鏋 > măn; #93CB
+鏌 > mò; #93CC
+鏍 > lúo; #93CD
+鏎 > bì; #93CE
+鏏 > wèi; #93CF
+鏐 > líu; #93D0
+鏑 > dí; #93D1
+鏒 > qiāo; #93D2
+鏓 > cōng; #93D3
+鏔 > yí; #93D4
+鏕 > lù; #93D5
+鏖 > áo; #93D6
+鏗 > kēng; #93D7
+鏘 > qiāng; #93D8
+鏙 > cūi; #93D9
+鏚 > qì; #93DA
+鏛 > cháng; #93DB
+鏜 > tāng; #93DC
+鏝 > màn; #93DD
+鏞 > yōng; #93DE
+鏟 > chăn; #93DF
+鏠 > fēng; #93E0
+鏡 > jìng; #93E1
+鏢 > biāo; #93E2
+鏣 > shù; #93E3
+鏤 > lòu; #93E4
+鏥 > xìu; #93E5
+鏦 > cōng; #93E6
+鏧 > lóng; #93E7
+鏨 > zàn; #93E8
+鏩 > jiàn; #93E9
+鏪 > cáo; #93EA
+鏫 > lí; #93EB
+鏬 > xià; #93EC
+鏭 > xī; #93ED
+鏮 > kāng; #93EE
+鏰 > bèng; #93F0
+鏳 > zhēng; #93F3
+鏴 > lù; #93F4
+鏵 > huá; #93F5
+鏶 > jí; #93F6
+鏷 > pú; #93F7
+鏸 > hùi; #93F8
+鏹 > qiāng; #93F9
+鏺 > pō; #93FA
+鏻 > lín; #93FB
+鏼 > sŭo; #93FC
+鏽 > xìu; #93FD
+鏾 > săn; #93FE
+鏿 > chēng; #93FF
+鐀 > kùi; #9400
+鐁 > sī; #9401
+鐂 > lìu; #9402
+鐃 > náo; #9403
+鐄 > héng; #9404
+鐅 > piĕ; #9405
+鐆 > sùi; #9406
+鐇 > fán; #9407
+鐈 > qiáo; #9408
+鐉 > quān; #9409
+鐊 > yáng; #940A
+鐋 > tàng; #940B
+鐌 > xiàng; #940C
+鐍 > jué; #940D
+鐎 > jiāo; #940E
+鐏 > zūn; #940F
+鐐 > liáo; #9410
+鐑 > jié; #9411
+鐒 > láo; #9412
+鐓 > dùi; #9413
+鐔 > tán; #9414
+鐕 > zān; #9415
+鐖 > jī; #9416
+鐗 > jiăn; #9417
+鐘 > zhōng; #9418
+鐙 > dēng; #9419
+鐚 > yà; #941A
+鐛 > yìng; #941B
+鐜 > dùi; #941C
+鐝 > jué; #941D
+鐞 > nòu; #941E
+鐟 > tì; #941F
+鐠 > pŭ; #9420
+鐡 > tiĕ; #9421
+鐤 > dĭng; #9424
+鐥 > shàn; #9425
+鐦 > kāi; #9426
+鐧 > jiăn; #9427
+鐨 > fèi; #9428
+鐩 > sùi; #9429
+鐪 > lŭ; #942A
+鐫 > juān; #942B
+鐬 > hùi; #942C
+鐭 > yù; #942D
+鐮 > lián; #942E
+鐯 > zhúo; #942F
+鐰 > qiāo; #9430
+鐱 > qiān; #9431
+鐲 > zhúo; #9432
+鐳 > léi; #9433
+鐴 > bì; #9434
+鐵 > tiĕ; #9435
+鐶 > huán; #9436
+鐷 > yè; #9437
+鐸 > dúo; #9438
+鐹 > gŭo; #9439
+鐺 > dāng; #943A
+鐻 > jù; #943B
+鐼 > fén; #943C
+鐽 > dá; #943D
+鐾 > bèi; #943E
+鐿 > yì; #943F
+鑀 > ài; #9440
+鑁 > zōng; #9441
+鑂 > xùn; #9442
+鑃 > diào; #9443
+鑄 > zhù; #9444
+鑅 > héng; #9445
+鑆 > zhùi; #9446
+鑇 > jī; #9447
+鑈 > niē; #9448
+鑉 > tà; #9449
+鑊 > hùo; #944A
+鑋 > qìng; #944B
+鑌 > bīn; #944C
+鑍 > yīng; #944D
+鑎 > kùi; #944E
+鑏 > níng; #944F
+鑐 > xū; #9450
+鑑 > jiàn; #9451
+鑒 > jiàn; #9452
+鑔 > chă; #9454
+鑕 > zhì; #9455
+鑖 > miè; #9456
+鑗 > lí; #9457
+鑘 > léi; #9458
+鑙 > jī; #9459
+鑚 > zuàn; #945A
+鑛 > kuàng; #945B
+鑜 > shàng; #945C
+鑝 > péng; #945D
+鑞 > là; #945E
+鑟 > dú; #945F
+鑠 > shùo; #9460
+鑡 > chùo; #9461
+鑢 > lǜ; #9462
+鑣 > biāo; #9463
+鑤 > bào; #9464
+鑥 > lŭ; #9465
+鑨 > lóng; #9468
+鑩 > è; #9469
+鑪 > lú; #946A
+鑫 > xīn; #946B
+鑬 > jiàn; #946C
+鑭 > làn; #946D
+鑮 > bó; #946E
+鑯 > jiān; #946F
+鑰 > yào; #9470
+鑱 > chán; #9471
+鑲 > xiāng; #9472
+鑳 > jiàn; #9473
+鑴 > xī; #9474
+鑵 > guàn; #9475
+鑶 > cáng; #9476
+鑷 > niè; #9477
+鑸 > lĕi; #9478
+鑹 > cuàn; #9479
+鑺 > qú; #947A
+鑻 > pàn; #947B
+鑼 > lúo; #947C
+鑽 > zuàn; #947D
+鑾 > luán; #947E
+鑿 > záo; #947F
+钀 > niè; #9480
+钁 > jué; #9481
+钂 > tăng; #9482
+钃 > shŭ; #9483
+钄 > lán; #9484
+钅 > jīn; #9485
+钆 > qíu; #9486
+钇 > yĭ; #9487
+针 > zhēn; #9488
+钉 > dīng; #9489
+钊 > zhāo; #948A
+钋 > pò; #948B
+钌 > diăo; #948C
+钍 > tŭ; #948D
+钎 > qiān; #948E
+钏 > chuàn; #948F
+钐 > shàn; #9490
+钑 > jí; #9491
+钒 > fán; #9492
+钓 > diào; #9493
+钔 > mén; #9494
+钕 > nǚ; #9495
+钖 > xí; #9496
+钗 > chāi; #9497
+钘 > xíng; #9498
+钙 > gài; #9499
+钚 > bù; #949A
+钛 > tài; #949B
+钜 > jù; #949C
+钝 > dùn; #949D
+钞 > chāo; #949E
+钟 > zhōng; #949F
+钠 > nà; #94A0
+钡 > bèi; #94A1
+钢 > gāng; #94A2
+钣 > băn; #94A3
+钤 > qián; #94A4
+钥 > yào; #94A5
+钦 > qīn; #94A6
+钧 > jūn; #94A7
+钨 > wù; #94A8
+钩 > gōu; #94A9
+钪 > kàng; #94AA
+钫 > fāng; #94AB
+钬 > húo; #94AC
+钭 > tŏu; #94AD
+钮 > nĭu; #94AE
+钯 > bă; #94AF
+钰 > yù; #94B0
+钱 > qián; #94B1
+钲 > zhēng; #94B2
+钳 > qián; #94B3
+钴 > gū; #94B4
+钵 > bō; #94B5
+钶 > ē; #94B6
+钷 > pō; #94B7
+钸 > bù; #94B8
+钹 > bá; #94B9
+钺 > yuè; #94BA
+钻 > zuàn; #94BB
+钼 > mù; #94BC
+钽 > dàn; #94BD
+钾 > jiă; #94BE
+钿 > diàn; #94BF
+铀 > yóu; #94C0
+铁 > tiĕ; #94C1
+铂 > bó; #94C2
+铃 > líng; #94C3
+铄 > shùo; #94C4
+铅 > qiān; #94C5
+铆 > lĭu; #94C6
+铇 > bào; #94C7
+铈 > shì; #94C8
+铉 > xuàn; #94C9
+铊 > shé; #94CA
+铋 > bì; #94CB
+铌 > nĭ; #94CC
+铍 > pī; #94CD
+铎 > dúo; #94CE
+铏 > xíng; #94CF
+铐 > kào; #94D0
+铑 > lăo; #94D1
+铒 > èr; #94D2
+铓 > máng; #94D3
+铔 > yà; #94D4
+铕 > yŏu; #94D5
+铖 > chéng; #94D6
+铗 > jiá; #94D7
+铘 > yé; #94D8
+铙 > náo; #94D9
+铚 > zhì; #94DA
+铛 > dāng; #94DB
+铜 > tóng; #94DC
+铝 > lǚ; #94DD
+铞 > diào; #94DE
+铟 > yīn; #94DF
+铠 > kăi; #94E0
+铡 > zhá; #94E1
+铢 > zhū; #94E2
+铣 > xiăn; #94E3
+铤 > tĭng; #94E4
+铥 > dīu; #94E5
+铦 > xiān; #94E6
+铧 > huá; #94E7
+铨 > quán; #94E8
+铩 > shā; #94E9
+铪 > jiá; #94EA
+铫 > yáo; #94EB
+铬 > gè; #94EC
+铭 > míng; #94ED
+铮 > zhēng; #94EE
+铯 > sè; #94EF
+铰 > jiăo; #94F0
+铱 > yĭ; #94F1
+铲 > chăn; #94F2
+铳 > chòng; #94F3
+铴 > tàng; #94F4
+铵 > ān; #94F5
+银 > yín; #94F6
+铷 > rŭ; #94F7
+铸 > zhù; #94F8
+铹 > láo; #94F9
+铺 > pū; #94FA
+铻 > wú; #94FB
+铼 > lái; #94FC
+铽 > tè; #94FD
+链 > liàn; #94FE
+铿 > kēng; #94FF
+销 > xiāo; #9500
+锁 > sŭo; #9501
+锂 > lĭ; #9502
+锃 > zhèng; #9503
+锄 > chú; #9504
+锅 > gūo; #9505
+锆 > gào; #9506
+锇 > tiĕ; #9507
+锈 > xìu; #9508
+锉 > cùo; #9509
+锊 > lǜe; #950A
+锋 > fēng; #950B
+锌 > xīn; #950C
+锍 > lĭu; #950D
+锎 > kāi; #950E
+锏 > jiăn; #950F
+锐 > rùi; #9510
+锑 > tì; #9511
+锒 > láng; #9512
+锓 > qiān; #9513
+锔 > jú; #9514
+锕 > ā; #9515
+锖 > qiāng; #9516
+锗 > dŭo; #9517
+锘 > tiăn; #9518
+错 > cùo; #9519
+锚 > máo; #951A
+锛 > bēn; #951B
+锜 > qí; #951C
+锝 > dé; #951D
+锞 > kuă; #951E
+锟 > kūn; #951F
+锠 > chāng; #9520
+锡 > xí; #9521
+锢 > gù; #9522
+锣 > lúo; #9523
+锤 > chúi; #9524
+锥 > zhūi; #9525
+锦 > jĭn; #9526
+锧 > zhì; #9527
+锨 > xiān; #9528
+锩 > juàn; #9529
+锪 > hūo; #952A
+锫 > póu; #952B
+锬 > tán; #952C
+锭 > dìng; #952D
+键 > jiàn; #952E
+锯 > jù; #952F
+锰 > mĕng; #9530
+锱 > zī; #9531
+锲 > qiè; #9532
+锳 > yīng; #9533
+锴 > kăi; #9534
+锵 > qiāng; #9535
+锶 > sōng; #9536
+锷 > è; #9537
+锸 > chá; #9538
+锹 > qiāo; #9539
+锺 > zhōng; #953A
+锻 > duàn; #953B
+锼 > sōu; #953C
+锽 > huáng; #953D
+锾 > huán; #953E
+锿 > āi; #953F
+镀 > dù; #9540
+镁 > mĕi; #9541
+镂 > lòu; #9542
+镃 > zī; #9543
+镄 > fèi; #9544
+镅 > méi; #9545
+镆 > mò; #9546
+镇 > zhèn; #9547
+镈 > bó; #9548
+镉 > gé; #9549
+镊 > niè; #954A
+镋 > tăng; #954B
+镌 > juān; #954C
+镍 > niè; #954D
+镎 > ná; #954E
+镏 > líu; #954F
+镐 > hào; #9550
+镑 > bàng; #9551
+镒 > yì; #9552
+镓 > jiā; #9553
+镔 > bīn; #9554
+镕 > róng; #9555
+镖 > biāo; #9556
+镗 > tāng; #9557
+镘 > màn; #9558
+镙 > lúo; #9559
+镚 > bèng; #955A
+镛 > yōng; #955B
+镜 > jìng; #955C
+镝 > dí; #955D
+镞 > zú; #955E
+镟 > xuàn; #955F
+镠 > líu; #9560
+镡 > tán; #9561
+镢 > jué; #9562
+镣 > liáo; #9563
+镤 > pú; #9564
+镥 > lŭ; #9565
+镦 > dùi; #9566
+镧 > làn; #9567
+镨 > pŭ; #9568
+镩 > cuàn; #9569
+镪 > qiāng; #956A
+镫 > dēng; #956B
+镬 > hùo; #956C
+镭 > léi; #956D
+镮 > huán; #956E
+镯 > zhúo; #956F
+镰 > lián; #9570
+镱 > yì; #9571
+镲 > chă; #9572
+镳 > biāo; #9573
+镴 > là; #9574
+镵 > chán; #9575
+镶 > xiāng; #9576
+長 > cháng; #9577
+镸 > cháng; #9578
+镹 > jĭu; #9579
+镺 > ăo; #957A
+镻 > dié; #957B
+镼 > qū; #957C
+镽 > liăo; #957D
+镾 > mí; #957E
+长 > cháng; #957F
+門 > mén; #9580
+閁 > mà; #9581
+閂 > shuān; #9582
+閃 > shăn; #9583
+閄 > hùo; #9584
+閅 > mén; #9585
+閆 > yàn; #9586
+閇 > bì; #9587
+閈 > hàn; #9588
+閉 > bì; #9589
+開 > kāi; #958B
+閌 > kàng; #958C
+閍 > bēng; #958D
+閎 > hóng; #958E
+閏 > rùn; #958F
+閐 > sàn; #9590
+閑 > xián; #9591
+閒 > xián; #9592
+間 > jiān; #9593
+閔 > mĭn; #9594
+閕 > xiā; #9595
+閗 > dòu; #9597
+閘 > zhá; #9598
+閙 > nào; #9599
+閚 > jian; #959A
+閛 > pēng; #959B
+閜 > xiă; #959C
+閝 > líng; #959D
+閞 > biàn; #959E
+閟 > bì; #959F
+閠 > rùn; #95A0
+閡 > hé; #95A1
+関 > guān; #95A2
+閣 > gé; #95A3
+閤 > gé; #95A4
+閥 > fá; #95A5
+閦 > chù; #95A6
+閧 > hòng; #95A7
+閨 > gūi; #95A8
+閩 > mĭn; #95A9
+閫 > kŭn; #95AB
+閬 > lăng; #95AC
+閭 > lǘ; #95AD
+閮 > tíng; #95AE
+閯 > shà; #95AF
+閰 > jú; #95B0
+閱 > yuè; #95B1
+閲 > yuè; #95B2
+閳 > chăn; #95B3
+閴 > qù; #95B4
+閵 > lìn; #95B5
+閶 > chāng; #95B6
+閷 > shài; #95B7
+閸 > kŭn; #95B8
+閹 > yān; #95B9
+閺 > mín; #95BA
+閻 > yán; #95BB
+閼 > è; #95BC
+閽 > hūn; #95BD
+閾 > yù; #95BE
+閿 > wén; #95BF
+闀 > xiàng; #95C0
+闁 > bao; #95C1
+闂 > xiàng; #95C2
+闃 > qù; #95C3
+闄 > yăo; #95C4
+闅 > wén; #95C5
+闆 > băn; #95C6
+闇 > àn; #95C7
+闈 > wéi; #95C8
+闉 > yīn; #95C9
+闊 > kùo; #95CA
+闋 > què; #95CB
+闌 > lán; #95CC
+闍 > dū; #95CD
+闐 > tián; #95D0
+闑 > niè; #95D1
+闒 > tà; #95D2
+闓 > kăi; #95D3
+闔 > hé; #95D4
+闕 > què; #95D5
+闖 > chuăng; #95D6
+闗 > guān; #95D7
+闘 > dòu; #95D8
+闙 > qĭ; #95D9
+闚 > kūi; #95DA
+闛 > táng; #95DB
+關 > guān; #95DC
+闝 > piáo; #95DD
+闞 > kàn; #95DE
+闟 > xì; #95DF
+闠 > hùi; #95E0
+闡 > chăn; #95E1
+闢 > pì; #95E2
+闣 > dàng; #95E3
+闤 > huán; #95E4
+闥 > tà; #95E5
+闦 > wén; #95E6
+门 > mén; #95E8
+闩 > shuān; #95E9
+闪 > shăn; #95EA
+闫 > yàn; #95EB
+闬 > hàn; #95EC
+闭 > bì; #95ED
+问 > wèn; #95EE
+闯 > chuăng; #95EF
+闰 > rùn; #95F0
+闱 > wéi; #95F1
+闲 > xián; #95F2
+闳 > hóng; #95F3
+间 > jiān; #95F4
+闵 > mĭn; #95F5
+闶 > kàng; #95F6
+闷 > mèn; #95F7
+闸 > zhá; #95F8
+闹 > nào; #95F9
+闺 > gūi; #95FA
+闻 > wén; #95FB
+闼 > tà; #95FC
+闽 > mĭn; #95FD
+闾 > lǘ; #95FE
+闿 > kăi; #95FF
+阀 > fá; #9600
+阁 > gé; #9601
+阂 > hé; #9602
+阃 > kŭn; #9603
+阄 > jīu; #9604
+阅 > yuè; #9605
+阆 > lăng; #9606
+阇 > dū; #9607
+阈 > yù; #9608
+阉 > yān; #9609
+阊 > chāng; #960A
+阋 > xì; #960B
+阌 > wén; #960C
+阍 > hūn; #960D
+阎 > yán; #960E
+阏 > è; #960F
+阐 > chăn; #9610
+阑 > lán; #9611
+阒 > qù; #9612
+阓 > hùi; #9613
+阔 > kùo; #9614
+阕 > què; #9615
+阖 > gé; #9616
+阗 > tián; #9617
+阘 > tà; #9618
+阙 > què; #9619
+阚 > kàn; #961A
+阛 > huán; #961B
+阜 > fù; #961C
+阝 > fù; #961D
+阞 > lè; #961E
+队 > dùi; #961F
+阠 > xìn; #9620
+阡 > qiān; #9621
+阢 > wù; #9622
+阣 > yì; #9623
+阤 > túo; #9624
+阥 > yīn; #9625
+阦 > yáng; #9626
+阧 > dŏu; #9627
+阨 > è; #9628
+阩 > shēng; #9629
+阪 > băn; #962A
+阫 > péi; #962B
+阬 > kēng; #962C
+阭 > yŭn; #962D
+阮 > ruăn; #962E
+阯 > zhĭ; #962F
+阰 > pí; #9630
+阱 > jĭng; #9631
+防 > fáng; #9632
+阳 > yáng; #9633
+阴 > yīn; #9634
+阵 > zhèn; #9635
+阶 > jiē; #9636
+阷 > chēng; #9637
+阸 > è; #9638
+阹 > qū; #9639
+阺 > dĭ; #963A
+阻 > zŭ; #963B
+阼 > zùo; #963C
+阽 > diàn; #963D
+阾 > lĭng; #963E
+阿 > ā; #963F
+陀 > túo; #9640
+陁 > túo; #9641
+陂 > pō; #9642
+陃 > bĭng; #9643
+附 > fù; #9644
+际 > jì; #9645
+陆 > lù; #9646
+陇 > lŏng; #9647
+陈 > chén; #9648
+陉 > xíng; #9649
+陊 > dùo; #964A
+陋 > lòu; #964B
+陌 > mò; #964C
+降 > jiàng; #964D
+陎 > shū; #964E
+陏 > dùo; #964F
+限 > xiàn; #9650
+陑 > ér; #9651
+陒 > gŭi; #9652
+陓 > yū; #9653
+陔 > gāi; #9654
+陕 > shăn; #9655
+陖 > xùn; #9656
+陗 > qiào; #9657
+陘 > xíng; #9658
+陙 > chún; #9659
+陚 > fù; #965A
+陛 > bì; #965B
+陜 > xiá; #965C
+陝 > shăn; #965D
+陞 > shēng; #965E
+陟 > zhì; #965F
+陠 > pū; #9660
+陡 > dŏu; #9661
+院 > yuàn; #9662
+陣 > zhèn; #9663
+除 > chú; #9664
+陥 > xiàn; #9665
+陧 > niè; #9667
+陨 > yŭn; #9668
+险 > xiăn; #9669
+陪 > péi; #966A
+陫 > péi; #966B
+陬 > zōu; #966C
+陭 > yī; #966D
+陮 > dŭi; #966E
+陯 > lún; #966F
+陰 > yīn; #9670
+陱 > jū; #9671
+陲 > chúi; #9672
+陳 > chén; #9673
+陴 > pí; #9674
+陵 > líng; #9675
+陶 > táo; #9676
+陷 > xiàn; #9677
+陸 > lù; #9678
+陹 > sheng; #9679
+険 > xiăn; #967A
+陻 > yīn; #967B
+陼 > zhŭ; #967C
+陽 > yáng; #967D
+陾 > réng; #967E
+陿 > shăn; #967F
+隀 > chóng; #9680
+隁 > yàn; #9681
+隂 > yīn; #9682
+隃 > yú; #9683
+隄 > tí; #9684
+隅 > yú; #9685
+隆 > lóng; #9686
+隇 > wēi; #9687
+隈 > wēi; #9688
+隉 > niè; #9689
+隊 > dùi; #968A
+隋 > súi; #968B
+隌 > ăn; #968C
+隍 > huáng; #968D
+階 > jiē; #968E
+随 > súi; #968F
+隐 > yĭn; #9690
+隑 > gāi; #9691
+隒 > yăn; #9692
+隓 > hūi; #9693
+隔 > gé; #9694
+隕 > yŭn; #9695
+隖 > wù; #9696
+隗 > wĕi; #9697
+隘 > ài; #9698
+隙 > xì; #9699
+隚 > táng; #969A
+際 > jì; #969B
+障 > zhàng; #969C
+隝 > dăo; #969D
+隞 > áo; #969E
+隟 > xì; #969F
+隠 > yĭn; #96A0
+隢 > rào; #96A2
+隣 > lín; #96A3
+隤 > túi; #96A4
+隥 > dèng; #96A5
+隦 > pĭ; #96A6
+隧 > sùi; #96A7
+隨 > súi; #96A8
+隩 > yù; #96A9
+險 > xiăn; #96AA
+隫 > fēn; #96AB
+隬 > nĭ; #96AC
+隭 > ér; #96AD
+隮 > jī; #96AE
+隯 > dăo; #96AF
+隰 > xí; #96B0
+隱 > yĭn; #96B1
+隲 > é; #96B2
+隳 > hūi; #96B3
+隴 > lŏng; #96B4
+隵 > xī; #96B5
+隶 > lì; #96B6
+隷 > lì; #96B7
+隸 > lì; #96B8
+隹 > zhūi; #96B9
+隺 > hè; #96BA
+隻 > zhī; #96BB
+隼 > zhŭn; #96BC
+隽 > jùn; #96BD
+难 > nán; #96BE
+隿 > yì; #96BF
+雀 > què; #96C0
+雁 > yàn; #96C1
+雂 > qián; #96C2
+雃 > yă; #96C3
+雄 > xíong; #96C4
+雅 > yă; #96C5
+集 > jí; #96C6
+雇 > gù; #96C7
+雈 > huán; #96C8
+雉 > zhì; #96C9
+雊 > gòu; #96CA
+雋 > jùn; #96CB
+雌 > cí; #96CC
+雍 > yōng; #96CD
+雎 > jū; #96CE
+雏 > chú; #96CF
+雐 > hū; #96D0
+雑 > zá; #96D1
+雒 > lùo; #96D2
+雓 > yú; #96D3
+雔 > chóu; #96D4
+雕 > diāo; #96D5
+雖 > sūi; #96D6
+雗 > hàn; #96D7
+雘 > hùo; #96D8
+雙 > shuāng; #96D9
+雚 > guàn; #96DA
+雛 > chú; #96DB
+雜 > zá; #96DC
+雝 > yōng; #96DD
+雞 > jī; #96DE
+雟 > xī; #96DF
+雠 > chóu; #96E0
+雡 > lìu; #96E1
+離 > lí; #96E2
+難 > nán; #96E3
+雤 > xué; #96E4
+雥 > zá; #96E5
+雦 > jí; #96E6
+雧 > jí; #96E7
+雨 > yŭ; #96E8
+雩 > yú; #96E9
+雪 > xuĕ; #96EA
+雫 > nă; #96EB
+雬 > fŏu; #96EC
+雭 > sè; #96ED
+雮 > mù; #96EE
+雯 > wén; #96EF
+雰 > fēn; #96F0
+雱 > páng; #96F1
+雲 > yún; #96F2
+雳 > lì; #96F3
+雴 > lì; #96F4
+雵 > ăng; #96F5
+零 > líng; #96F6
+雷 > léi; #96F7
+雸 > án; #96F8
+雹 > báo; #96F9
+雺 > méng; #96FA
+電 > diàn; #96FB
+雼 > dàng; #96FC
+雽 > xíng; #96FD
+雾 > wù; #96FE
+雿 > zhào; #96FF
+需 > xū; #9700
+霁 > jì; #9701
+霂 > mù; #9702
+霃 > chén; #9703
+霄 > xiāo; #9704
+霅 > zhá; #9705
+霆 > tíng; #9706
+震 > zhèn; #9707
+霈 > pèi; #9708
+霉 > méi; #9709
+霊 > líng; #970A
+霋 > qī; #970B
+霌 > chōu; #970C
+霍 > hùo; #970D
+霎 > shà; #970E
+霏 > fēi; #970F
+霐 > wēng; #9710
+霑 > zhān; #9711
+霒 > yīn; #9712
+霓 > ní; #9713
+霔 > chòu; #9714
+霕 > tún; #9715
+霖 > lín; #9716
+霘 > dòng; #9718
+霙 > yīng; #9719
+霚 > wù; #971A
+霛 > líng; #971B
+霜 > shuāng; #971C
+霝 > líng; #971D
+霞 > xiá; #971E
+霟 > hóng; #971F
+霠 > yīn; #9720
+霡 > mò; #9721
+霢 > mài; #9722
+霣 > yŭn; #9723
+霤 > lìu; #9724
+霥 > mèng; #9725
+霦 > bīn; #9726
+霧 > wù; #9727
+霨 > wèi; #9728
+霩 > hùo; #9729
+霪 > yín; #972A
+霫 > xí; #972B
+霬 > yì; #972C
+霭 > ăi; #972D
+霮 > dàn; #972E
+霯 > dèng; #972F
+霰 > xiàn; #9730
+霱 > yù; #9731
+露 > lù; #9732
+霳 > lóng; #9733
+霴 > dài; #9734
+霵 > jí; #9735
+霶 > páng; #9736
+霷 > yáng; #9737
+霸 > bà; #9738
+霹 > pī; #9739
+霺 > wéi; #973A
+霼 > xĭ; #973C
+霽 > jì; #973D
+霾 > mái; #973E
+霿 > mèng; #973F
+靀 > méng; #9740
+靁 > léi; #9741
+靂 > lì; #9742
+靃 > hùo; #9743
+靄 > ăi; #9744
+靅 > fèi; #9745
+靆 > dài; #9746
+靇 > lóng; #9747
+靈 > líng; #9748
+靉 > ài; #9749
+靊 > fēng; #974A
+靋 > lì; #974B
+靌 > băo; #974C
+靎 > hè; #974E
+靏 > hè; #974F
+靐 > bìng; #9750
+靑 > qīng; #9751
+青 > qīng; #9752
+靓 > jìng; #9753
+靔 > tiān; #9754
+靕 > zhēn; #9755
+靖 > jìng; #9756
+靗 > chèng; #9757
+靘 > qìng; #9758
+静 > jìng; #9759
+靚 > jìng; #975A
+靛 > diàn; #975B
+靜 > jìng; #975C
+靝 > tiān; #975D
+非 > fēi; #975E
+靟 > fēi; #975F
+靠 > kào; #9760
+靡 > mĭ; #9761
+面 > miàn; #9762
+靣 > miàn; #9763
+靤 > pào; #9764
+靥 > yè; #9765
+靦 > tiăn; #9766
+靧 > hùi; #9767
+靨 > yè; #9768
+革 > gé; #9769
+靪 > dīng; #976A
+靫 > chā; #976B
+靬 > jiān; #976C
+靭 > rèn; #976D
+靮 > dí; #976E
+靯 > dù; #976F
+靰 > wù; #9770
+靱 > rèn; #9771
+靲 > qín; #9772
+靳 > jìn; #9773
+靴 > xuē; #9774
+靵 > nĭu; #9775
+靶 > bă; #9776
+靷 > yĭn; #9777
+靸 > să; #9778
+靹 > nà; #9779
+靺 > mò; #977A
+靻 > zŭ; #977B
+靼 > dá; #977C
+靽 > bàn; #977D
+靾 > yì; #977E
+靿 > yào; #977F
+鞀 > táo; #9780
+鞁 > túo; #9781
+鞂 > jiá; #9782
+鞃 > hóng; #9783
+鞄 > páo; #9784
+鞅 > yăng; #9785
+鞇 > yīn; #9787
+鞈 > jiá; #9788
+鞉 > táo; #9789
+鞊 > jí; #978A
+鞋 > xié; #978B
+鞌 > ān; #978C
+鞍 > ān; #978D
+鞎 > hén; #978E
+鞏 > gŏng; #978F
+鞑 > dá; #9791
+鞒 > qiāo; #9792
+鞓 > tīng; #9793
+鞔 > wăn; #9794
+鞕 > yìng; #9795
+鞖 > sūi; #9796
+鞗 > tiáo; #9797
+鞘 > qiào; #9798
+鞙 > xuàn; #9799
+鞚 > kòng; #979A
+鞛 > bĕng; #979B
+鞜 > tà; #979C
+鞝 > zhăng; #979D
+鞞 > bĭng; #979E
+鞟 > kùo; #979F
+鞠 > jú; #97A0
+鞡 > la; #97A1
+鞢 > xiè; #97A2
+鞣 > róu; #97A3
+鞤 > bāng; #97A4
+鞥 > yì; #97A5
+鞦 > qīu; #97A6
+鞧 > qīu; #97A7
+鞨 > hé; #97A8
+鞩 > xiào; #97A9
+鞪 > mù; #97AA
+鞫 > jú; #97AB
+鞬 > jiān; #97AC
+鞭 > biān; #97AD
+鞮 > dī; #97AE
+鞯 > jiān; #97AF
+鞱 > tāo; #97B1
+鞲 > gōu; #97B2
+鞳 > tà; #97B3
+鞴 > bèi; #97B4
+鞵 > xié; #97B5
+鞶 > pán; #97B6
+鞷 > gé; #97B7
+鞸 > bì; #97B8
+鞹 > kùo; #97B9
+鞺 > tang; #97BA
+鞻 > lóu; #97BB
+鞼 > gùi; #97BC
+鞽 > qiáo; #97BD
+鞾 > xuē; #97BE
+鞿 > jī; #97BF
+韀 > jiān; #97C0
+韁 > jiāng; #97C1
+韂 > chàn; #97C2
+韃 > dá; #97C3
+韄 > hùo; #97C4
+韅 > xiăn; #97C5
+韆 > qiān; #97C6
+韇 > dú; #97C7
+韈 > wà; #97C8
+韉 > jiān; #97C9
+韊 > lán; #97CA
+韋 > wéi; #97CB
+韌 > rèn; #97CC
+韍 > fú; #97CD
+韎 > mèi; #97CE
+韏 > juàn; #97CF
+韐 > gé; #97D0
+韑 > wĕi; #97D1
+韒 > qiào; #97D2
+韓 > hán; #97D3
+韔 > chàng; #97D4
+韖 > róu; #97D6
+韗 > xùn; #97D7
+韘 > shè; #97D8
+韙 > wĕi; #97D9
+韚 > gé; #97DA
+韛 > bèi; #97DB
+韜 > tāo; #97DC
+韝 > gōu; #97DD
+韞 > yùn; #97DE
+韠 > bì; #97E0
+韡 > wĕi; #97E1
+韢 > hùi; #97E2
+韣 > dú; #97E3
+韤 > wà; #97E4
+韥 > dú; #97E5
+韦 > wéi; #97E6
+韧 > rèn; #97E7
+韨 > fú; #97E8
+韩 > hán; #97E9
+韪 > wĕi; #97EA
+韫 > yùn; #97EB
+韬 > tāo; #97EC
+韭 > jĭu; #97ED
+韮 > jĭu; #97EE
+韯 > xiān; #97EF
+韰 > xiè; #97F0
+韱 > xiān; #97F1
+韲 > jī; #97F2
+音 > yīn; #97F3
+韴 > zá; #97F4
+韵 > yùn; #97F5
+韶 > sháo; #97F6
+韷 > lè; #97F7
+韸 > péng; #97F8
+韹 > héng; #97F9
+韺 > yīng; #97FA
+韻 > yùn; #97FB
+韼 > péng; #97FC
+韽 > yīn; #97FD
+韾 > yīn; #97FE
+響 > xiăng; #97FF
+頀 > hù; #9800
+頁 > yè; #9801
+頂 > dĭng; #9802
+頃 > qĭng; #9803
+頄 > pàn; #9804
+項 > xiàng; #9805
+順 > shùn; #9806
+頇 > hān; #9807
+須 > xū; #9808
+頉 > yí; #9809
+頊 > xù; #980A
+頋 > gù; #980B
+頌 > sòng; #980C
+頍 > kŭi; #980D
+頎 > qí; #980E
+頏 > háng; #980F
+預 > yù; #9810
+頑 > wán; #9811
+頒 > bān; #9812
+頓 > dùn; #9813
+頔 > dí; #9814
+頕 > dān; #9815
+頖 > pàn; #9816
+頗 > pŏ; #9817
+領 > lĭng; #9818
+頙 > cè; #9819
+頚 > jĭng; #981A
+頛 > lĕi; #981B
+頜 > hé; #981C
+頝 > qiāo; #981D
+頞 > è; #981E
+頟 > é; #981F
+頠 > wĕi; #9820
+頡 > jié; #9821
+頢 > guā; #9822
+頣 > shĕn; #9823
+頤 > yí; #9824
+頥 > shĕn; #9825
+頦 > hái; #9826
+頧 > dūi; #9827
+頨 > piān; #9828
+頩 > pīng; #9829
+頪 > lèi; #982A
+頫 > fŭ; #982B
+頬 > jiá; #982C
+頭 > tóu; #982D
+頮 > hùi; #982E
+頯 > kúi; #982F
+頰 > jiá; #9830
+頱 > lè; #9831
+頲 > tian; #9832
+頳 > chēng; #9833
+頴 > yĭng; #9834
+頵 > jūn; #9835
+頶 > hú; #9836
+頷 > hàn; #9837
+頸 > jĭng; #9838
+頹 > túi; #9839
+頺 > túi; #983A
+頻 > pín; #983B
+頼 > lài; #983C
+頽 > túi; #983D
+頾 > zī; #983E
+頿 > zī; #983F
+顀 > chúi; #9840
+顁 > dìng; #9841
+顂 > lài; #9842
+顃 > yán; #9843
+顄 > hàn; #9844
+顅 > jiān; #9845
+顆 > kē; #9846
+顇 > cùi; #9847
+顈 > jĭong; #9848
+顉 > qīn; #9849
+顊 > yí; #984A
+顋 > sāi; #984B
+題 > tí; #984C
+額 > é; #984D
+顎 > è; #984E
+顏 > yán; #984F
+顐 > hún; #9850
+顑 > kăn; #9851
+顒 > yóng; #9852
+顓 > zhuān; #9853
+顔 > yán; #9854
+顕 > xiăn; #9855
+顖 > xìn; #9856
+顗 > yĭ; #9857
+願 > yuàn; #9858
+顙 > săng; #9859
+顚 > diān; #985A
+顛 > diān; #985B
+顜 > jiăng; #985C
+顝 > kū; #985D
+類 > lèi; #985E
+顟 > liáo; #985F
+顠 > piào; #9860
+顡 > yì; #9861
+顢 > mán; #9862
+顣 > qī; #9863
+顤 > rào; #9864
+顥 > hào; #9865
+顦 > qiáo; #9866
+顧 > gù; #9867
+顨 > xùn; #9868
+顩 > qiān; #9869
+顪 > hūi; #986A
+顫 > zhàn; #986B
+顬 > rú; #986C
+顭 > hōng; #986D
+顮 > bīn; #986E
+顯 > xiăn; #986F
+顰 > pín; #9870
+顱 > lú; #9871
+顲 > lăn; #9872
+顳 > niè; #9873
+顴 > quán; #9874
+页 > yè; #9875
+顶 > dĭng; #9876
+顷 > qĭng; #9877
+顸 > hān; #9878
+项 > xiàng; #9879
+顺 > shùn; #987A
+须 > xū; #987B
+顼 > xù; #987C
+顽 > wán; #987D
+顾 > gù; #987E
+顿 > dùn; #987F
+颀 > qí; #9880
+颁 > bān; #9881
+颂 > sòng; #9882
+颃 > háng; #9883
+预 > yù; #9884
+颅 > lú; #9885
+领 > lĭng; #9886
+颇 > pŏ; #9887
+颈 > jĭng; #9888
+颉 > jié; #9889
+颊 > jiá; #988A
+颋 > tian; #988B
+颌 > hàn; #988C
+颍 > yĭng; #988D
+颎 > jĭong; #988E
+颏 > hái; #988F
+颐 > yí; #9890
+频 > pín; #9891
+颒 > hùi; #9892
+颓 > túi; #9893
+颔 > hàn; #9894
+颕 > yĭng; #9895
+颖 > yĭng; #9896
+颗 > kē; #9897
+题 > tí; #9898
+颙 > yóng; #9899
+颚 > è; #989A
+颛 > zhuān; #989B
+颜 > yán; #989C
+额 > é; #989D
+颞 > niè; #989E
+颟 > mán; #989F
+颠 > diān; #98A0
+颡 > săng; #98A1
+颢 > hào; #98A2
+颣 > lèi; #98A3
+颤 > zhàn; #98A4
+颥 > rú; #98A5
+颦 > pín; #98A6
+颧 > quán; #98A7
+風 > fēng; #98A8
+颩 > biāo; #98A9
+颫 > fú; #98AB
+颬 > xiā; #98AC
+颭 > zhăn; #98AD
+颮 > biāo; #98AE
+颯 > sà; #98AF
+颰 > bá; #98B0
+颱 > tái; #98B1
+颲 > liè; #98B2
+颳 > guā; #98B3
+颴 > xuàn; #98B4
+颵 > shào; #98B5
+颶 > jù; #98B6
+颷 > bī; #98B7
+颸 > sī; #98B8
+颹 > wĕi; #98B9
+颺 > yáng; #98BA
+颻 > yáo; #98BB
+颼 > sōu; #98BC
+颽 > kăi; #98BD
+颾 > sāo; #98BE
+颿 > fán; #98BF
+飀 > líu; #98C0
+飁 > xí; #98C1
+飂 > liáo; #98C2
+飃 > piāo; #98C3
+飄 > piāo; #98C4
+飅 > líu; #98C5
+飆 > biāo; #98C6
+飇 > biāo; #98C7
+飈 > biăo; #98C8
+飉 > liáo; #98C9
+飋 > sè; #98CB
+飌 > fēng; #98CC
+飍 > biāo; #98CD
+风 > fēng; #98CE
+飏 > yáng; #98CF
+飐 > zhăn; #98D0
+飑 > biāo; #98D1
+飒 > sà; #98D2
+飓 > jù; #98D3
+飔 > sī; #98D4
+飕 > sōu; #98D5
+飖 > yáo; #98D6
+飗 > líu; #98D7
+飘 > piāo; #98D8
+飙 > biāo; #98D9
+飚 > biāo; #98DA
+飛 > fēi; #98DB
+飜 > fān; #98DC
+飝 > fēi; #98DD
+飞 > fēi; #98DE
+食 > shí; #98DF
+飠 > shí; #98E0
+飡 > cān; #98E1
+飢 > jī; #98E2
+飣 > dìng; #98E3
+飤 > sì; #98E4
+飥 > tūo; #98E5
+飦 > zhān; #98E6
+飧 > sūn; #98E7
+飨 > xiăng; #98E8
+飩 > tún; #98E9
+飪 > rèn; #98EA
+飫 > yù; #98EB
+飬 > juàn; #98EC
+飭 > chì; #98ED
+飮 > yĭn; #98EE
+飯 > fàn; #98EF
+飰 > fàn; #98F0
+飱 > sūn; #98F1
+飲 > yĭn; #98F2
+飳 > zhù; #98F3
+飴 > yí; #98F4
+飵 > zhăi; #98F5
+飶 > bì; #98F6
+飷 > jiĕ; #98F7
+飸 > tāo; #98F8
+飹 > lĭu; #98F9
+飺 > cí; #98FA
+飻 > tiè; #98FB
+飼 > sì; #98FC
+飽 > băo; #98FD
+飾 > shì; #98FE
+飿 > dùo; #98FF
+餀 > hài; #9900
+餁 > rèn; #9901
+餂 > tiăn; #9902
+餃 > jiăo; #9903
+餄 > jiá; #9904
+餅 > bĭng; #9905
+餆 > yáo; #9906
+餇 > tóng; #9907
+餈 > cí; #9908
+餉 > xiăng; #9909
+養 > yăng; #990A
+餋 > yăng; #990B
+餌 > ĕr; #990C
+餍 > yàn; #990D
+餎 > le; #990E
+餏 > yī; #990F
+餐 > cān; #9910
+餑 > bó; #9911
+餒 > nĕi; #9912
+餓 > è; #9913
+餔 > bū; #9914
+餕 > jùn; #9915
+餖 > dòu; #9916
+餗 > sù; #9917
+餘 > yú; #9918
+餙 > shì; #9919
+餚 > yáo; #991A
+餛 > hún; #991B
+餜 > gŭo; #991C
+餝 > shì; #991D
+餞 > jiàn; #991E
+餟 > zhùi; #991F
+餠 > bĭng; #9920
+餡 > xiàn; #9921
+餢 > bù; #9922
+餣 > yè; #9923
+餤 > tán; #9924
+餥 > fĕi; #9925
+餦 > zhāng; #9926
+餧 > wèi; #9927
+館 > guăn; #9928
+餩 > è; #9929
+餪 > nuăn; #992A
+餫 > hún; #992B
+餬 > hú; #992C
+餭 > huáng; #992D
+餮 > tiè; #992E
+餯 > hùi; #992F
+餰 > jiān; #9930
+餱 > hóu; #9931
+餲 > hé; #9932
+餳 > xíng; #9933
+餴 > fēn; #9934
+餵 > wèi; #9935
+餶 > gŭ; #9936
+餷 > chā; #9937
+餸 > sòng; #9938
+餹 > táng; #9939
+餺 > bó; #993A
+餻 > gāo; #993B
+餼 > xì; #993C
+餽 > kùi; #993D
+餾 > lìu; #993E
+餿 > sōu; #993F
+饀 > táo; #9940
+饁 > yè; #9941
+饂 > yún; #9942
+饃 > mó; #9943
+饄 > táng; #9944
+饅 > mán; #9945
+饆 > bì; #9946
+饇 > yù; #9947
+饈 > xīu; #9948
+饉 > jĭn; #9949
+饊 > săn; #994A
+饋 > kùi; #994B
+饌 > zhuàn; #994C
+饍 > shàn; #994D
+饎 > chì; #994E
+饏 > dàn; #994F
+饐 > yì; #9950
+饑 > jī; #9951
+饒 > ráo; #9952
+饓 > chēng; #9953
+饔 > yōng; #9954
+饕 > tāo; #9955
+饖 > hùi; #9956
+饗 > xiăng; #9957
+饘 > zhān; #9958
+饙 > fēn; #9959
+饚 > hài; #995A
+饛 > méng; #995B
+饜 > yàn; #995C
+饝 > mó; #995D
+饞 > chán; #995E
+饟 > xiăng; #995F
+饠 > lúo; #9960
+饡 > zuàn; #9961
+饢 > năng; #9962
+饣 > shí; #9963
+饤 > dìng; #9964
+饥 > jī; #9965
+饦 > tūo; #9966
+饧 > xíng; #9967
+饨 > tún; #9968
+饩 > xì; #9969
+饪 > rèn; #996A
+饫 > yù; #996B
+饬 > chì; #996C
+饭 > fàn; #996D
+饮 > yĭn; #996E
+饯 > jiàn; #996F
+饰 > shì; #9970
+饱 > băo; #9971
+饲 > sì; #9972
+饳 > dùo; #9973
+饴 > yí; #9974
+饵 > ĕr; #9975
+饶 > ráo; #9976
+饷 > xiăng; #9977
+饸 > jiá; #9978
+饹 > le; #9979
+饺 > jiăo; #997A
+饻 > yī; #997B
+饼 > bĭng; #997C
+饽 > bó; #997D
+饾 > dòu; #997E
+饿 > è; #997F
+馀 > yú; #9980
+馁 > nĕi; #9981
+馂 > jùn; #9982
+馃 > gŭo; #9983
+馄 > hún; #9984
+馅 > xiàn; #9985
+馆 > guăn; #9986
+馇 > chā; #9987
+馈 > kùi; #9988
+馉 > gŭ; #9989
+馊 > sōu; #998A
+馋 > chán; #998B
+馌 > yè; #998C
+馍 > mó; #998D
+馎 > bó; #998E
+馏 > lìu; #998F
+馐 > xīu; #9990
+馑 > jĭn; #9991
+馒 > mán; #9992
+馓 > săn; #9993
+馔 > zhuàn; #9994
+馕 > năng; #9995
+首 > shŏu; #9996
+馗 > kúi; #9997
+馘 > gúo; #9998
+香 > xiāng; #9999
+馚 > fén; #999A
+馛 > bá; #999B
+馜 > nĭ; #999C
+馝 > bì; #999D
+馞 > bó; #999E
+馟 > tú; #999F
+馠 > hān; #99A0
+馡 > fēi; #99A1
+馢 > jiān; #99A2
+馣 > ān; #99A3
+馤 > ăi; #99A4
+馥 > fù; #99A5
+馦 > xiān; #99A6
+馧 > wēn; #99A7
+馨 > xīn; #99A8
+馩 > fén; #99A9
+馪 > bīn; #99AA
+馫 > xīng; #99AB
+馬 > mă; #99AC
+馭 > yù; #99AD
+馮 > féng; #99AE
+馯 > hàn; #99AF
+馰 > dì; #99B0
+馱 > túo; #99B1
+馲 > tūo; #99B2
+馳 > chí; #99B3
+馴 > xún; #99B4
+馵 > zhù; #99B5
+馶 > zhī; #99B6
+馷 > pèi; #99B7
+馸 > xìn; #99B8
+馹 > rì; #99B9
+馺 > sà; #99BA
+馻 > yĭn; #99BB
+馼 > wén; #99BC
+馽 > zhí; #99BD
+馾 > dàn; #99BE
+馿 > lǘ; #99BF
+駀 > yóu; #99C0
+駁 > bó; #99C1
+駂 > băo; #99C2
+駃 > kuài; #99C3
+駄 > túo; #99C4
+駅 > yì; #99C5
+駆 > qū; #99C6
+駈 > qū; #99C8
+駉 > jīong; #99C9
+駊 > bŏ; #99CA
+駋 > zhāo; #99CB
+駌 > yuān; #99CC
+駍 > pēng; #99CD
+駎 > zhòu; #99CE
+駏 > jù; #99CF
+駐 > zhù; #99D0
+駑 > nú; #99D1
+駒 > jū; #99D2
+駓 > pí; #99D3
+駔 > zăng; #99D4
+駕 > jià; #99D5
+駖 > líng; #99D6
+駗 > zhēn; #99D7
+駘 > tái; #99D8
+駙 > fù; #99D9
+駚 > yăng; #99DA
+駛 > shĭ; #99DB
+駜 > bì; #99DC
+駝 > túo; #99DD
+駞 > túo; #99DE
+駟 > sì; #99DF
+駠 > líu; #99E0
+駡 > mà; #99E1
+駢 > pián; #99E2
+駣 > táo; #99E3
+駤 > zhì; #99E4
+駥 > róng; #99E5
+駦 > téng; #99E6
+駧 > dòng; #99E7
+駨 > xún; #99E8
+駩 > quán; #99E9
+駪 > shēn; #99EA
+駫 > jīong; #99EB
+駬 > ĕr; #99EC
+駭 > hài; #99ED
+駮 > bó; #99EE
+駯 > zhu; #99EF
+駰 > yīn; #99F0
+駱 > lùo; #99F1
+駳 > dàn; #99F3
+駴 > xiè; #99F4
+駵 > líu; #99F5
+駶 > jú; #99F6
+駷 > sŏng; #99F7
+駸 > qīn; #99F8
+駹 > máng; #99F9
+駺 > liáng; #99FA
+駻 > hàn; #99FB
+駼 > tú; #99FC
+駽 > xuàn; #99FD
+駾 > tùi; #99FE
+駿 > jùn; #99FF
+騀 > é; #9A00
+騁 > chĕng; #9A01
+騂 > xīn; #9A02
+騃 > ái; #9A03
+騄 > lù; #9A04
+騅 > zhūi; #9A05
+騆 > zhōu; #9A06
+騇 > shĕ; #9A07
+騈 > pián; #9A08
+騉 > kūn; #9A09
+騊 > táo; #9A0A
+騋 > lái; #9A0B
+騌 > zōng; #9A0C
+騍 > kè; #9A0D
+騎 > qí; #9A0E
+騏 > qí; #9A0F
+騐 > yàn; #9A10
+騑 > fēi; #9A11
+騒 > sāo; #9A12
+験 > yăn; #9A13
+騔 > jié; #9A14
+騕 > yăo; #9A15
+騖 > wù; #9A16
+騗 > piàn; #9A17
+騘 > cōng; #9A18
+騙 > piàn; #9A19
+騚 > qián; #9A1A
+騛 > fēi; #9A1B
+騜 > huáng; #9A1C
+騝 > jiān; #9A1D
+騞 > hùo; #9A1E
+騟 > yù; #9A1F
+騠 > tí; #9A20
+騡 > quán; #9A21
+騢 > xiá; #9A22
+騣 > zōng; #9A23
+騤 > kúi; #9A24
+騥 > róu; #9A25
+騦 > sī; #9A26
+騧 > guā; #9A27
+騨 > túo; #9A28
+騩 > kùi; #9A29
+騪 > sōu; #9A2A
+騫 > qiān; #9A2B
+騬 > chéng; #9A2C
+騭 > zhì; #9A2D
+騮 > líu; #9A2E
+騯 > páng; #9A2F
+騰 > téng; #9A30
+騱 > xī; #9A31
+騲 > căo; #9A32
+騳 > dú; #9A33
+騴 > yàn; #9A34
+騵 > yuán; #9A35
+騶 > zōu; #9A36
+騷 > sāo; #9A37
+騸 > shàn; #9A38
+騹 > lí; #9A39
+騺 > zhì; #9A3A
+騻 > shuăng; #9A3B
+騼 > lù; #9A3C
+騽 > xí; #9A3D
+騾 > lúo; #9A3E
+騿 > zhāng; #9A3F
+驀 > mò; #9A40
+驁 > áo; #9A41
+驂 > cān; #9A42
+驃 > piào; #9A43
+驄 > cōng; #9A44
+驅 > qū; #9A45
+驆 > bì; #9A46
+驇 > zhì; #9A47
+驈 > yù; #9A48
+驉 > xū; #9A49
+驊 > huá; #9A4A
+驋 > bō; #9A4B
+驌 > sù; #9A4C
+驍 > xiāo; #9A4D
+驎 > lín; #9A4E
+驏 > chăn; #9A4F
+驐 > dūn; #9A50
+驑 > líu; #9A51
+驒 > túo; #9A52
+驓 > zēng; #9A53
+驔 > tán; #9A54
+驕 > jiāo; #9A55
+驖 > tiĕ; #9A56
+驗 > yàn; #9A57
+驘 > lúo; #9A58
+驙 > zhān; #9A59
+驚 > jīng; #9A5A
+驛 > yì; #9A5B
+驜 > yè; #9A5C
+驝 > tūo; #9A5D
+驞 > bīn; #9A5E
+驟 > zòu; #9A5F
+驠 > yàn; #9A60
+驡 > péng; #9A61
+驢 > lǘ; #9A62
+驣 > téng; #9A63
+驤 > xiāng; #9A64
+驥 > jì; #9A65
+驦 > shuāng; #9A66
+驧 > jú; #9A67
+驨 > xī; #9A68
+驩 > huān; #9A69
+驪 > lí; #9A6A
+驫 > biāo; #9A6B
+马 > mă; #9A6C
+驭 > yù; #9A6D
+驮 > túo; #9A6E
+驯 > xún; #9A6F
+驰 > chí; #9A70
+驱 > qū; #9A71
+驲 > rì; #9A72
+驳 > bó; #9A73
+驴 > lǘ; #9A74
+驵 > zăng; #9A75
+驶 > shĭ; #9A76
+驷 > sì; #9A77
+驸 > fù; #9A78
+驹 > jū; #9A79
+驺 > zōu; #9A7A
+驻 > zhù; #9A7B
+驼 > túo; #9A7C
+驽 > nú; #9A7D
+驾 > jià; #9A7E
+驿 > yì; #9A7F
+骀 > tái; #9A80
+骁 > xiāo; #9A81
+骂 > mà; #9A82
+骃 > yīn; #9A83
+骄 > jiāo; #9A84
+骅 > huá; #9A85
+骆 > lùo; #9A86
+骇 > hài; #9A87
+骈 > pián; #9A88
+骉 > biāo; #9A89
+骊 > lí; #9A8A
+骋 > chĕng; #9A8B
+验 > yàn; #9A8C
+骍 > xīn; #9A8D
+骎 > qīn; #9A8E
+骏 > jùn; #9A8F
+骐 > qí; #9A90
+骑 > qí; #9A91
+骒 > kè; #9A92
+骓 > zhūi; #9A93
+骔 > zōng; #9A94
+骕 > sù; #9A95
+骖 > cān; #9A96
+骗 > piàn; #9A97
+骘 > zhì; #9A98
+骙 > kúi; #9A99
+骚 > sāo; #9A9A
+骛 > wù; #9A9B
+骜 > áo; #9A9C
+骝 > líu; #9A9D
+骞 > qiān; #9A9E
+骟 > shàn; #9A9F
+骠 > piào; #9AA0
+骡 > lúo; #9AA1
+骢 > cōng; #9AA2
+骣 > chăn; #9AA3
+骤 > zòu; #9AA4
+骥 > jì; #9AA5
+骦 > shuāng; #9AA6
+骧 > xiāng; #9AA7
+骨 > gŭ; #9AA8
+骩 > wĕi; #9AA9
+骪 > wĕi; #9AAA
+骫 > wĕi; #9AAB
+骬 > yú; #9AAC
+骭 > gàn; #9AAD
+骮 > yì; #9AAE
+骯 > āng; #9AAF
+骰 > tóu; #9AB0
+骱 > xiè; #9AB1
+骲 > bāo; #9AB2
+骳 > bì; #9AB3
+骴 > chī; #9AB4
+骵 > tĭ; #9AB5
+骶 > dĭ; #9AB6
+骷 > kū; #9AB7
+骸 > hái; #9AB8
+骹 > qiāo; #9AB9
+骺 > gòu; #9ABA
+骻 > kuà; #9ABB
+骼 > gé; #9ABC
+骽 > tŭi; #9ABD
+骾 > gĕng; #9ABE
+骿 > pián; #9ABF
+髀 > bì; #9AC0
+髁 > kē; #9AC1
+髂 > kà; #9AC2
+髃 > yú; #9AC3
+髄 > sŭi; #9AC4
+髅 > lóu; #9AC5
+髆 > bó; #9AC6
+髇 > xiāo; #9AC7
+髈 > páng; #9AC8
+髉 > bō; #9AC9
+髊 > cī; #9ACA
+髋 > kuān; #9ACB
+髌 > bìn; #9ACC
+髍 > mó; #9ACD
+髎 > liáo; #9ACE
+髏 > lóu; #9ACF
+髐 > náo; #9AD0
+髑 > dú; #9AD1
+髒 > zāng; #9AD2
+髓 > sŭi; #9AD3
+體 > tĭ; #9AD4
+髕 > bìn; #9AD5
+髖 > kuān; #9AD6
+髗 > lú; #9AD7
+高 > gāo; #9AD8
+髙 > gāo; #9AD9
+髚 > qiào; #9ADA
+髛 > kāo; #9ADB
+髜 > qiāo; #9ADC
+髝 > lào; #9ADD
+髞 > zào; #9ADE
+髟 > biāo; #9ADF
+髠 > kūn; #9AE0
+髡 > kūn; #9AE1
+髢 > tì; #9AE2
+髣 > făng; #9AE3
+髤 > xīu; #9AE4
+髥 > rán; #9AE5
+髦 > máo; #9AE6
+髧 > dàn; #9AE7
+髨 > kūn; #9AE8
+髩 > bìn; #9AE9
+髪 > fà; #9AEA
+髫 > tiáo; #9AEB
+髬 > peng; #9AEC
+髭 > zī; #9AED
+髮 > fă; #9AEE
+髯 > rán; #9AEF
+髰 > tì; #9AF0
+髱 > pào; #9AF1
+髲 > pī; #9AF2
+髳 > máo; #9AF3
+髴 > fú; #9AF4
+髵 > ér; #9AF5
+髶 > róng; #9AF6
+髷 > qū; #9AF7
+髸 > gong; #9AF8
+髹 > xīu; #9AF9
+髺 > guà; #9AFA
+髻 > jì; #9AFB
+髼 > péng; #9AFC
+髽 > zhuā; #9AFD
+髾 > shāo; #9AFE
+髿 > shā; #9AFF
+鬀 > tì; #9B00
+鬁 > lì; #9B01
+鬂 > bìn; #9B02
+鬃 > zōng; #9B03
+鬄 > tì; #9B04
+鬅 > péng; #9B05
+鬆 > sōng; #9B06
+鬇 > zhēng; #9B07
+鬈 > quán; #9B08
+鬉 > zōng; #9B09
+鬊 > shùn; #9B0A
+鬋 > jiān; #9B0B
+鬌 > dŭo; #9B0C
+鬍 > hú; #9B0D
+鬎 > là; #9B0E
+鬏 > jīu; #9B0F
+鬐 > qí; #9B10
+鬑 > lián; #9B11
+鬒 > zhĕn; #9B12
+鬓 > bìn; #9B13
+鬔 > péng; #9B14
+鬕 > mò; #9B15
+鬖 > sān; #9B16
+鬗 > màn; #9B17
+鬘 > mán; #9B18
+鬙 > sēng; #9B19
+鬚 > xū; #9B1A
+鬛 > liè; #9B1B
+鬜 > qiān; #9B1C
+鬝 > qiān; #9B1D
+鬞 > nóng; #9B1E
+鬟 > huán; #9B1F
+鬠 > kuài; #9B20
+鬡 > níng; #9B21
+鬢 > bìn; #9B22
+鬣 > liè; #9B23
+鬤 > ráng; #9B24
+鬥 > dòu; #9B25
+鬦 > dòu; #9B26
+鬧 > nào; #9B27
+鬨 > hōng; #9B28
+鬩 > xì; #9B29
+鬪 > dòu; #9B2A
+鬫 > hăn; #9B2B
+鬬 > dòu; #9B2C
+鬭 > dòu; #9B2D
+鬮 > jīu; #9B2E
+鬯 > chàng; #9B2F
+鬰 > yù; #9B30
+鬱 > yù; #9B31
+鬲 > lì; #9B32
+鬳 > juàn; #9B33
+鬴 > fŭ; #9B34
+鬵 > qián; #9B35
+鬶 > gūi; #9B36
+鬷 > zōng; #9B37
+鬸 > lìu; #9B38
+鬹 > gūi; #9B39
+鬺 > shāng; #9B3A
+鬻 > yù; #9B3B
+鬼 > gŭi; #9B3C
+鬽 > mèi; #9B3D
+鬾 > jì; #9B3E
+鬿 > qí; #9B3F
+魀 > jiè; #9B40
+魁 > kúi; #9B41
+魂 > hún; #9B42
+魃 > bá; #9B43
+魄 > pò; #9B44
+魅 > mèi; #9B45
+魆 > xù; #9B46
+魇 > yăn; #9B47
+魈 > xiāo; #9B48
+魉 > liăng; #9B49
+魊 > yù; #9B4A
+魋 > túi; #9B4B
+魌 > qī; #9B4C
+魍 > wăng; #9B4D
+魎 > liăng; #9B4E
+魏 > wèi; #9B4F
+魐 > jiān; #9B50
+魑 > chī; #9B51
+魒 > piāo; #9B52
+魓 > bì; #9B53
+魔 > mó; #9B54
+魕 > jĭ; #9B55
+魖 > xū; #9B56
+魗 > chŏu; #9B57
+魘 > yăn; #9B58
+魙 > zhăn; #9B59
+魚 > yú; #9B5A
+魛 > dāo; #9B5B
+魜 > rén; #9B5C
+魝 > jì; #9B5D
+魟 > gōng; #9B5F
+魠 > túo; #9B60
+魡 > diào; #9B61
+魢 > jĭ; #9B62
+魣 > xù; #9B63
+魤 > é; #9B64
+魥 > è; #9B65
+魦 > shā; #9B66
+魧 > háng; #9B67
+魨 > tún; #9B68
+魩 > mò; #9B69
+魪 > jiè; #9B6A
+魫 > shĕn; #9B6B
+魬 > făn; #9B6C
+魭 > yuán; #9B6D
+魮 > bí; #9B6E
+魯 > lŭ; #9B6F
+魰 > wén; #9B70
+魱 > hú; #9B71
+魲 > lú; #9B72
+魳 > zá; #9B73
+魴 > fáng; #9B74
+魵 > fén; #9B75
+魶 > nà; #9B76
+魷 > yóu; #9B77
+魺 > hé; #9B7A
+魻 > xiá; #9B7B
+魼 > qū; #9B7C
+魽 > hān; #9B7D
+魾 > pí; #9B7E
+魿 > líng; #9B7F
+鮀 > túo; #9B80
+鮁 > bō; #9B81
+鮂 > qíu; #9B82
+鮃 > píng; #9B83
+鮄 > fú; #9B84
+鮅 > bì; #9B85
+鮆 > jì; #9B86
+鮇 > wèi; #9B87
+鮈 > jū; #9B88
+鮉 > diāo; #9B89
+鮊 > bó; #9B8A
+鮋 > yóu; #9B8B
+鮌 > gŭn; #9B8C
+鮍 > pī; #9B8D
+鮎 > nián; #9B8E
+鮏 > xīng; #9B8F
+鮐 > tái; #9B90
+鮑 > bào; #9B91
+鮒 > fù; #9B92
+鮓 > zhă; #9B93
+鮔 > jù; #9B94
+鮕 > gū; #9B95
+鮙 > tà; #9B99
+鮚 > jié; #9B9A
+鮛 > shù; #9B9B
+鮜 > hòu; #9B9C
+鮝 > xiăng; #9B9D
+鮞 > ér; #9B9E
+鮟 > àn; #9B9F
+鮠 > wéi; #9BA0
+鮡 > tiāo; #9BA1
+鮢 > zhū; #9BA2
+鮣 > yìn; #9BA3
+鮤 > liè; #9BA4
+鮥 > lùo; #9BA5
+鮦 > tóng; #9BA6
+鮧 > yí; #9BA7
+鮨 > qí; #9BA8
+鮩 > bìng; #9BA9
+鮪 > wĕi; #9BAA
+鮫 > jiăo; #9BAB
+鮬 > bù; #9BAC
+鮭 > gūi; #9BAD
+鮮 > xiān; #9BAE
+鮯 > gé; #9BAF
+鮰 > húi; #9BB0
+鮳 > kăo; #9BB3
+鮵 > dúo; #9BB5
+鮶 > jūn; #9BB6
+鮷 > tí; #9BB7
+鮸 > măn; #9BB8
+鮹 > xiāo; #9BB9
+鮺 > ză; #9BBA
+鮻 > shā; #9BBB
+鮼 > qīn; #9BBC
+鮽 > yú; #9BBD
+鮾 > nĕi; #9BBE
+鮿 > zhé; #9BBF
+鯀 > gŭn; #9BC0
+鯁 > gĕng; #9BC1
+鯂 > su; #9BC2
+鯃 > wú; #9BC3
+鯄 > qíu; #9BC4
+鯅 > tíng; #9BC5
+鯆 > fŭ; #9BC6
+鯇 > wăn; #9BC7
+鯈 > yóu; #9BC8
+鯉 > lĭ; #9BC9
+鯊 > shā; #9BCA
+鯋 > shā; #9BCB
+鯌 > gào; #9BCC
+鯍 > méng; #9BCD
+鯒 > yŏng; #9BD2
+鯓 > ní; #9BD3
+鯔 > zī; #9BD4
+鯕 > qí; #9BD5
+鯖 > qīng; #9BD6
+鯗 > xiăng; #9BD7
+鯘 > nĕi; #9BD8
+鯙 > chún; #9BD9
+鯚 > jì; #9BDA
+鯛 > diāo; #9BDB
+鯜 > qiè; #9BDC
+鯝 > gù; #9BDD
+鯞 > zhŏu; #9BDE
+鯟 > dōng; #9BDF
+鯠 > lái; #9BE0
+鯡 > fēi; #9BE1
+鯢 > ní; #9BE2
+鯣 > yì; #9BE3
+鯤 > kūn; #9BE4
+鯥 > lù; #9BE5
+鯦 > jìu; #9BE6
+鯧 > chāng; #9BE7
+鯨 > jīng; #9BE8
+鯩 > lún; #9BE9
+鯪 > líng; #9BEA
+鯫 > zōu; #9BEB
+鯬 > lí; #9BEC
+鯭 > mĕng; #9BED
+鯮 > zōng; #9BEE
+鯯 > zhì; #9BEF
+鯰 > nián; #9BF0
+鯴 > shī; #9BF4
+鯵 > shēn; #9BF5
+鯶 > hŭn; #9BF6
+鯷 > shì; #9BF7
+鯸 > hóu; #9BF8
+鯹 > xīng; #9BF9
+鯺 > zhū; #9BFA
+鯻 > là; #9BFB
+鯼 > zōng; #9BFC
+鯽 > jì; #9BFD
+鯾 > biān; #9BFE
+鯿 > biān; #9BFF
+鰀 > huàn; #9C00
+鰁 > quán; #9C01
+鰂 > zé; #9C02
+鰃 > wēi; #9C03
+鰄 > wēi; #9C04
+鰅 > yú; #9C05
+鰆 > qūn; #9C06
+鰇 > róu; #9C07
+鰈 > dié; #9C08
+鰉 > huáng; #9C09
+鰊 > liàn; #9C0A
+鰋 > yăn; #9C0B
+鰌 > qíu; #9C0C
+鰍 > qīu; #9C0D
+鰎 > jiàn; #9C0E
+鰏 > bì; #9C0F
+鰐 > è; #9C10
+鰑 > yáng; #9C11
+鰒 > fù; #9C12
+鰓 > sāi; #9C13
+鰔 > jiăn; #9C14
+鰕 > xiá; #9C15
+鰖 > tŭo; #9C16
+鰗 > hú; #9C17
+鰙 > rùo; #9C19
+鰛 > wēn; #9C1B
+鰜 > jiān; #9C1C
+鰝 > hào; #9C1D
+鰞 > wū; #9C1E
+鰟 > fáng; #9C1F
+鰠 > sāo; #9C20
+鰡 > líu; #9C21
+鰢 > mă; #9C22
+鰣 > shí; #9C23
+鰤 > shī; #9C24
+鰥 > yín; #9C25
+鰦 > z̄; #9C26
+鰧 > téng; #9C27
+鰨 > tà; #9C28
+鰩 > yáo; #9C29
+鰪 > gé; #9C2A
+鰫 > róng; #9C2B
+鰬 > qián; #9C2C
+鰭 > qí; #9C2D
+鰮 > wēn; #9C2E
+鰯 > rùo; #9C2F
+鰱 > lián; #9C31
+鰲 > áo; #9C32
+鰳 > lè; #9C33
+鰴 > hūi; #9C34
+鰵 > mĭn; #9C35
+鰶 > jì; #9C36
+鰷 > tiáo; #9C37
+鰸 > qū; #9C38
+鰹 > jiān; #9C39
+鰺 > sāo; #9C3A
+鰻 > mán; #9C3B
+鰼 > xí; #9C3C
+鰽 > qíu; #9C3D
+鰾 > biào; #9C3E
+鰿 > jī; #9C3F
+鱀 > jì; #9C40
+鱁 > zhú; #9C41
+鱂 > jiāng; #9C42
+鱃 > qīu; #9C43
+鱄 > zhuān; #9C44
+鱅 > yóng; #9C45
+鱆 > zhāng; #9C46
+鱇 > kāng; #9C47
+鱈 > xuĕ; #9C48
+鱉 > biē; #9C49
+鱊 > jué; #9C4A
+鱋 > qū; #9C4B
+鱌 > xiàng; #9C4C
+鱍 > bō; #9C4D
+鱎 > jiāo; #9C4E
+鱏 > xún; #9C4F
+鱐 > sù; #9C50
+鱑 > huáng; #9C51
+鱒 > zùn; #9C52
+鱓 > shàn; #9C53
+鱔 > shàn; #9C54
+鱕 > fān; #9C55
+鱖 > jué; #9C56
+鱗 > lín; #9C57
+鱘 > xún; #9C58
+鱙 > miáo; #9C59
+鱚 > xĭ; #9C5A
+鱝 > fèn; #9C5D
+鱞 > guān; #9C5E
+鱟 > hòu; #9C5F
+鱠 > kuài; #9C60
+鱡 > zéi; #9C61
+鱢 > sāo; #9C62
+鱣 > zhān; #9C63
+鱤 > găn; #9C64
+鱥 > gùi; #9C65
+鱦 > shéng; #9C66
+鱧 > lĭ; #9C67
+鱨 > cháng; #9C68
+鱬 > rú; #9C6C
+鱭 > jì; #9C6D
+鱮 > xù; #9C6E
+鱯 > hùo; #9C6F
+鱱 > lì; #9C71
+鱲 > liè; #9C72
+鱳 > lì; #9C73
+鱴 > miè; #9C74
+鱵 > zhēn; #9C75
+鱶 > xiăng; #9C76
+鱷 > è; #9C77
+鱸 > lú; #9C78
+鱹 > guàn; #9C79
+鱺 > lí; #9C7A
+鱻 > xiān; #9C7B
+鱼 > yú; #9C7C
+鱽 > dāo; #9C7D
+鱾 > jĭ; #9C7E
+鱿 > yóu; #9C7F
+鲀 > tún; #9C80
+鲁 > lŭ; #9C81
+鲂 > fáng; #9C82
+鲃 > bā; #9C83
+鲄 > hé; #9C84
+鲅 > bō; #9C85
+鲆 > píng; #9C86
+鲇 > nián; #9C87
+鲈 > lú; #9C88
+鲉 > yóu; #9C89
+鲊 > zhă; #9C8A
+鲋 > fù; #9C8B
+鲌 > bó; #9C8C
+鲍 > bào; #9C8D
+鲎 > hòu; #9C8E
+鲏 > pī; #9C8F
+鲐 > tái; #9C90
+鲑 > gūi; #9C91
+鲒 > jié; #9C92
+鲓 > kăo; #9C93
+鲔 > wĕi; #9C94
+鲕 > ér; #9C95
+鲖 > tóng; #9C96
+鲗 > zé; #9C97
+鲘 > hòu; #9C98
+鲙 > kuài; #9C99
+鲚 > jì; #9C9A
+鲛 > jiăo; #9C9B
+鲜 > xiān; #9C9C
+鲝 > ză; #9C9D
+鲞 > xiăng; #9C9E
+鲟 > xún; #9C9F
+鲠 > gĕng; #9CA0
+鲡 > lí; #9CA1
+鲢 > lián; #9CA2
+鲣 > jiān; #9CA3
+鲤 > lĭ; #9CA4
+鲥 > shí; #9CA5
+鲦 > tiáo; #9CA6
+鲧 > gŭn; #9CA7
+鲨 > shā; #9CA8
+鲩 > wăn; #9CA9
+鲪 > jūn; #9CAA
+鲫 > jì; #9CAB
+鲬 > yŏng; #9CAC
+鲭 > qīng; #9CAD
+鲮 > líng; #9CAE
+鲯 > qí; #9CAF
+鲰 > zōu; #9CB0
+鲱 > fēi; #9CB1
+鲲 > kūn; #9CB2
+鲳 > chāng; #9CB3
+鲴 > gù; #9CB4
+鲵 > ní; #9CB5
+鲶 > nián; #9CB6
+鲷 > diāo; #9CB7
+鲸 > jīng; #9CB8
+鲹 > shēn; #9CB9
+鲺 > shī; #9CBA
+鲻 > zī; #9CBB
+鲼 > fèn; #9CBC
+鲽 > dié; #9CBD
+鲾 > bì; #9CBE
+鲿 > cháng; #9CBF
+鳀 > shì; #9CC0
+鳁 > wēn; #9CC1
+鳂 > wēi; #9CC2
+鳃 > sāi; #9CC3
+鳄 > è; #9CC4
+鳅 > qīu; #9CC5
+鳆 > fù; #9CC6
+鳇 > huáng; #9CC7
+鳈 > quán; #9CC8
+鳉 > jiāng; #9CC9
+鳊 > biān; #9CCA
+鳋 > sāo; #9CCB
+鳌 > áo; #9CCC
+鳍 > qí; #9CCD
+鳎 > tà; #9CCE
+鳏 > yín; #9CCF
+鳐 > yáo; #9CD0
+鳑 > fáng; #9CD1
+鳒 > jiān; #9CD2
+鳓 > lè; #9CD3
+鳔 > biào; #9CD4
+鳕 > xuĕ; #9CD5
+鳖 > biē; #9CD6
+鳗 > mán; #9CD7
+鳘 > mĭn; #9CD8
+鳙 > yóng; #9CD9
+鳚 > wèi; #9CDA
+鳛 > xí; #9CDB
+鳜 > jué; #9CDC
+鳝 > shàn; #9CDD
+鳞 > lín; #9CDE
+鳟 > zùn; #9CDF
+鳠 > hùo; #9CE0
+鳡 > găn; #9CE1
+鳢 > lĭ; #9CE2
+鳣 > zhān; #9CE3
+鳤 > guăn; #9CE4
+鳥 > niăo; #9CE5
+鳦 > yĭ; #9CE6
+鳧 > fú; #9CE7
+鳨 > lì; #9CE8
+鳩 > jīu; #9CE9
+鳪 > bŭ; #9CEA
+鳫 > yàn; #9CEB
+鳬 > fú; #9CEC
+鳭 > diāo; #9CED
+鳮 > jī; #9CEE
+鳯 > fèng; #9CEF
+鳱 > gān; #9CF1
+鳲 > shī; #9CF2
+鳳 > fèng; #9CF3
+鳴 > míng; #9CF4
+鳵 > băo; #9CF5
+鳶 > yuān; #9CF6
+鳷 > zhī; #9CF7
+鳸 > hù; #9CF8
+鳹 > qín; #9CF9
+鳺 > fū; #9CFA
+鳻 > fēn; #9CFB
+鳼 > wén; #9CFC
+鳽 > jiān; #9CFD
+鳾 > shī; #9CFE
+鳿 > yù; #9CFF
+鴀 > fŏu; #9D00
+鴁 > yiāo; #9D01
+鴂 > juè; #9D02
+鴃 > jué; #9D03
+鴄 > pī; #9D04
+鴅 > huān; #9D05
+鴆 > zhèn; #9D06
+鴇 > băo; #9D07
+鴈 > yàn; #9D08
+鴉 > yā; #9D09
+鴊 > zhèng; #9D0A
+鴋 > fāng; #9D0B
+鴌 > fèng; #9D0C
+鴍 > wén; #9D0D
+鴎 > ōu; #9D0E
+鴏 > tè; #9D0F
+鴐 > jiā; #9D10
+鴑 > nú; #9D11
+鴒 > líng; #9D12
+鴓 > miè; #9D13
+鴔 > fú; #9D14
+鴕 > túo; #9D15
+鴖 > wén; #9D16
+鴗 > lì; #9D17
+鴘 > biàn; #9D18
+鴙 > zhì; #9D19
+鴚 > gē; #9D1A
+鴛 > yuān; #9D1B
+鴜 > zī; #9D1C
+鴝 > qú; #9D1D
+鴞 > xiāo; #9D1E
+鴟 > zhī; #9D1F
+鴠 > dàn; #9D20
+鴡 > jū; #9D21
+鴢 > yòu; #9D22
+鴣 > gū; #9D23
+鴤 > zhōng; #9D24
+鴥 > yù; #9D25
+鴦 > yāng; #9D26
+鴧 > ròng; #9D27
+鴨 > yā; #9D28
+鴩 > tiĕ; #9D29
+鴪 > yù; #9D2A
+鴬 > yīng; #9D2C
+鴭 > zhūi; #9D2D
+鴮 > wū; #9D2E
+鴯 > ér; #9D2F
+鴰 > guā; #9D30
+鴱 > ài; #9D31
+鴲 > zhī; #9D32
+鴳 > yàn; #9D33
+鴴 > héng; #9D34
+鴵 > jiāo; #9D35
+鴶 > jí; #9D36
+鴷 > liè; #9D37
+鴸 > zhū; #9D38
+鴹 > rén; #9D39
+鴺 > yí; #9D3A
+鴻 > hóng; #9D3B
+鴼 > lùo; #9D3C
+鴽 > rú; #9D3D
+鴾 > móu; #9D3E
+鴿 > gē; #9D3F
+鵀 > rèn; #9D40
+鵁 > jiāo; #9D41
+鵂 > xīu; #9D42
+鵃 > zhōu; #9D43
+鵄 > zhī; #9D44
+鵅 > lùo; #9D45
+鵉 > luán; #9D49
+鵊 > jiá; #9D4A
+鵋 > jì; #9D4B
+鵌 > yú; #9D4C
+鵍 > huān; #9D4D
+鵎 > tŭo; #9D4E
+鵏 > bū; #9D4F
+鵐 > wú; #9D50
+鵑 > juān; #9D51
+鵒 > yù; #9D52
+鵓 > bó; #9D53
+鵔 > xùn; #9D54
+鵕 > xùn; #9D55
+鵖 > bì; #9D56
+鵗 > xī; #9D57
+鵘 > jùn; #9D58
+鵙 > jú; #9D59
+鵚 > tú; #9D5A
+鵛 > jīng; #9D5B
+鵜 > tí; #9D5C
+鵝 > é; #9D5D
+鵞 > é; #9D5E
+鵟 > kuáng; #9D5F
+鵠 > hú; #9D60
+鵡 > wŭ; #9D61
+鵢 > shēn; #9D62
+鵣 > lài; #9D63
+鵦 > lù; #9D66
+鵧 > píng; #9D67
+鵨 > shū; #9D68
+鵩 > fú; #9D69
+鵪 > ān; #9D6A
+鵫 > zhào; #9D6B
+鵬 > péng; #9D6C
+鵭 > qín; #9D6D
+鵮 > qiān; #9D6E
+鵯 > bēi; #9D6F
+鵰 > diāo; #9D70
+鵱 > lù; #9D71
+鵲 > què; #9D72
+鵳 > jiān; #9D73
+鵴 > jú; #9D74
+鵵 > tù; #9D75
+鵶 > yā; #9D76
+鵷 > yuān; #9D77
+鵸 > qí; #9D78
+鵹 > lí; #9D79
+鵺 > yè; #9D7A
+鵻 > zhūi; #9D7B
+鵼 > kōng; #9D7C
+鵽 > zhùi; #9D7D
+鵾 > kūn; #9D7E
+鵿 > shēng; #9D7F
+鶀 > qí; #9D80
+鶁 > jīng; #9D81
+鶂 > yì; #9D82
+鶃 > yì; #9D83
+鶄 > jīng; #9D84
+鶅 > zī; #9D85
+鶆 > lái; #9D86
+鶇 > dōng; #9D87
+鶈 > qī; #9D88
+鶉 > chún; #9D89
+鶊 > gēng; #9D8A
+鶋 > jū; #9D8B
+鶌 > qū; #9D8C
+鶏 > jī; #9D8F
+鶐 > shù; #9D90
+鶒 > chì; #9D92
+鶓 > miáo; #9D93
+鶔 > róu; #9D94
+鶕 > ān; #9D95
+鶖 > qīu; #9D96
+鶗 > tí; #9D97
+鶘 > hú; #9D98
+鶙 > tí; #9D99
+鶚 > è; #9D9A
+鶛 > jiē; #9D9B
+鶜 > máo; #9D9C
+鶝 > fú; #9D9D
+鶞 > chūn; #9D9E
+鶟 > tú; #9D9F
+鶠 > yăn; #9DA0
+鶡 > hé; #9DA1
+鶢 > yuán; #9DA2
+鶣 > piān; #9DA3
+鶤 > yùn; #9DA4
+鶥 > méi; #9DA5
+鶦 > hú; #9DA6
+鶧 > yīng; #9DA7
+鶨 > dùn; #9DA8
+鶩 > mù; #9DA9
+鶪 > jú; #9DAA
+鶬 > cāng; #9DAC
+鶭 > făng; #9DAD
+鶮 > gù; #9DAE
+鶯 > yīng; #9DAF
+鶰 > yuán; #9DB0
+鶱 > xuān; #9DB1
+鶲 > wēng; #9DB2
+鶳 > shī; #9DB3
+鶴 > hè; #9DB4
+鶵 > chú; #9DB5
+鶶 > táng; #9DB6
+鶷 > xià; #9DB7
+鶸 > rùo; #9DB8
+鶹 > líu; #9DB9
+鶺 > jí; #9DBA
+鶻 > gú; #9DBB
+鶼 > jiān; #9DBC
+鶽 > zhŭn; #9DBD
+鶾 > hàn; #9DBE
+鶿 > zī; #9DBF
+鷀 > zī; #9DC0
+鷁 > nì; #9DC1
+鷂 > yào; #9DC2
+鷃 > yàn; #9DC3
+鷄 > jī; #9DC4
+鷅 > lì; #9DC5
+鷆 > tián; #9DC6
+鷇 > kòu; #9DC7
+鷈 > tī; #9DC8
+鷉 > tī; #9DC9
+鷊 > nì; #9DCA
+鷋 > tú; #9DCB
+鷌 > mă; #9DCC
+鷍 > jiāo; #9DCD
+鷎 > gāo; #9DCE
+鷏 > tián; #9DCF
+鷐 > chén; #9DD0
+鷑 > lì; #9DD1
+鷒 > zhuān; #9DD2
+鷓 > zhè; #9DD3
+鷔 > áo; #9DD4
+鷕 > yăo; #9DD5
+鷖 > yī; #9DD6
+鷗 > ōu; #9DD7
+鷘 > chì; #9DD8
+鷙 > zhì; #9DD9
+鷚 > liáo; #9DDA
+鷛 > róng; #9DDB
+鷜 > lóu; #9DDC
+鷝 > bì; #9DDD
+鷞 > shuāng; #9DDE
+鷟 > zhúo; #9DDF
+鷠 > yú; #9DE0
+鷡 > wú; #9DE1
+鷢 > jué; #9DE2
+鷣 > yín; #9DE3
+鷤 > quán; #9DE4
+鷥 > sī; #9DE5
+鷦 > jiāo; #9DE6
+鷧 > yì; #9DE7
+鷨 > huā; #9DE8
+鷩 > bì; #9DE9
+鷪 > yīng; #9DEA
+鷫 > sù; #9DEB
+鷬 > huáng; #9DEC
+鷭 > fán; #9DED
+鷮 > jiāo; #9DEE
+鷯 > liáo; #9DEF
+鷰 > yàn; #9DF0
+鷱 > kāo; #9DF1
+鷲 > jìu; #9DF2
+鷳 > xián; #9DF3
+鷴 > xián; #9DF4
+鷵 > tú; #9DF5
+鷶 > măi; #9DF6
+鷷 > zūn; #9DF7
+鷸 > yù; #9DF8
+鷹 > yīng; #9DF9
+鷺 > lù; #9DFA
+鷻 > tuán; #9DFB
+鷼 > xián; #9DFC
+鷽 > xué; #9DFD
+鷾 > yì; #9DFE
+鷿 > pì; #9DFF
+鸀 > shú; #9E00
+鸁 > lúo; #9E01
+鸂 > qī; #9E02
+鸃 > yí; #9E03
+鸄 > jí; #9E04
+鸅 > zhé; #9E05
+鸆 > yú; #9E06
+鸇 > zhān; #9E07
+鸈 > yè; #9E08
+鸉 > yáng; #9E09
+鸊 > pì; #9E0A
+鸋 > níng; #9E0B
+鸌 > hùo; #9E0C
+鸍 > mí; #9E0D
+鸎 > yīng; #9E0E
+鸏 > méng; #9E0F
+鸐 > dí; #9E10
+鸑 > yuè; #9E11
+鸒 > yú; #9E12
+鸓 > lĕi; #9E13
+鸔 > bào; #9E14
+鸕 > lú; #9E15
+鸖 > hè; #9E16
+鸗 > lóng; #9E17
+鸘 > shuāng; #9E18
+鸙 > yuè; #9E19
+鸚 > yīng; #9E1A
+鸛 > guàn; #9E1B
+鸜 > qú; #9E1C
+鸝 > lí; #9E1D
+鸞 > luán; #9E1E
+鸟 > niăo; #9E1F
+鸠 > jīu; #9E20
+鸡 > jī; #9E21
+鸢 > yuān; #9E22
+鸣 > míng; #9E23
+鸤 > shī; #9E24
+鸥 > ōu; #9E25
+鸦 > yā; #9E26
+鸧 > cāng; #9E27
+鸨 > băo; #9E28
+鸩 > zhèn; #9E29
+鸪 > gū; #9E2A
+鸫 > dōng; #9E2B
+鸬 > lú; #9E2C
+鸭 > yā; #9E2D
+鸮 > xiāo; #9E2E
+鸯 > yāng; #9E2F
+鸰 > líng; #9E30
+鸱 > zhī; #9E31
+鸲 > qú; #9E32
+鸳 > yuān; #9E33
+鸴 > xué; #9E34
+鸵 > túo; #9E35
+鸶 > sī; #9E36
+鸷 > zhì; #9E37
+鸸 > ér; #9E38
+鸹 > guā; #9E39
+鸺 > xīu; #9E3A
+鸻 > héng; #9E3B
+鸼 > zhōu; #9E3C
+鸽 > gē; #9E3D
+鸾 > luán; #9E3E
+鸿 > hóng; #9E3F
+鹀 > wú; #9E40
+鹁 > bó; #9E41
+鹂 > lí; #9E42
+鹃 > juān; #9E43
+鹄 > hú; #9E44
+鹅 > é; #9E45
+鹆 > yù; #9E46
+鹇 > xián; #9E47
+鹈 > tí; #9E48
+鹉 > wŭ; #9E49
+鹊 > què; #9E4A
+鹋 > miáo; #9E4B
+鹌 > ān; #9E4C
+鹍 > kūn; #9E4D
+鹎 > bēi; #9E4E
+鹏 > péng; #9E4F
+鹐 > qiān; #9E50
+鹑 > chún; #9E51
+鹒 > gēng; #9E52
+鹓 > yuān; #9E53
+鹔 > sù; #9E54
+鹕 > hú; #9E55
+鹖 > hé; #9E56
+鹗 > è; #9E57
+鹘 > gú; #9E58
+鹙 > qīu; #9E59
+鹚 > zī; #9E5A
+鹛 > méi; #9E5B
+鹜 > mù; #9E5C
+鹝 > nì; #9E5D
+鹞 > yào; #9E5E
+鹟 > wēng; #9E5F
+鹠 > líu; #9E60
+鹡 > jí; #9E61
+鹢 > nì; #9E62
+鹣 > jiān; #9E63
+鹤 > hè; #9E64
+鹥 > yī; #9E65
+鹦 > yīng; #9E66
+鹧 > zhè; #9E67
+鹨 > liáo; #9E68
+鹩 > liáo; #9E69
+鹪 > jiāo; #9E6A
+鹫 > jìu; #9E6B
+鹬 > yù; #9E6C
+鹭 > lù; #9E6D
+鹮 > xuán; #9E6E
+鹯 > zhān; #9E6F
+鹰 > yīng; #9E70
+鹱 > hùo; #9E71
+鹲 > méng; #9E72
+鹳 > guàn; #9E73
+鹴 > shuāng; #9E74
+鹵 > lŭ; #9E75
+鹶 > jīn; #9E76
+鹷 > líng; #9E77
+鹸 > jiăn; #9E78
+鹹 > xián; #9E79
+鹺 > cúo; #9E7A
+鹻 > jiăn; #9E7B
+鹼 > jiăn; #9E7C
+鹽 > yán; #9E7D
+鹾 > cúo; #9E7E
+鹿 > lù; #9E7F
+麀 > yōu; #9E80
+麁 > cū; #9E81
+麂 > jĭ; #9E82
+麃 > biāo; #9E83
+麄 > cū; #9E84
+麅 > biāo; #9E85
+麆 > zhù; #9E86
+麇 > jūn; #9E87
+麈 > zhŭ; #9E88
+麉 > jiān; #9E89
+麊 > mí; #9E8A
+麋 > mí; #9E8B
+麌 > wú; #9E8C
+麍 > líu; #9E8D
+麎 > chén; #9E8E
+麏 > jūn; #9E8F
+麐 > lín; #9E90
+麑 > ní; #9E91
+麒 > qí; #9E92
+麓 > lù; #9E93
+麔 > jìu; #9E94
+麕 > jūn; #9E95
+麖 > jīng; #9E96
+麗 > lì; #9E97
+麘 > xiāng; #9E98
+麙 > yán; #9E99
+麚 > jiā; #9E9A
+麛 > mí; #9E9B
+麜 > lì; #9E9C
+麝 > shè; #9E9D
+麞 > zhāng; #9E9E
+麟 > lín; #9E9F
+麠 > jīng; #9EA0
+麡 > jī; #9EA1
+麢 > líng; #9EA2
+麣 > yán; #9EA3
+麤 > cū; #9EA4
+麥 > mài; #9EA5
+麦 > mài; #9EA6
+麧 > gē; #9EA7
+麨 > chăo; #9EA8
+麩 > fū; #9EA9
+麪 > miăn; #9EAA
+麫 > miăn; #9EAB
+麬 > fū; #9EAC
+麭 > pào; #9EAD
+麮 > qù; #9EAE
+麯 > qú; #9EAF
+麰 > móu; #9EB0
+麱 > fū; #9EB1
+麲 > xiàn; #9EB2
+麳 > lái; #9EB3
+麴 > qú; #9EB4
+麵 > miàn; #9EB5
+麷 > fēng; #9EB7
+麸 > fū; #9EB8
+麹 > qú; #9EB9
+麺 > miàn; #9EBA
+麻 > má; #9EBB
+麼 > mo; #9EBC
+麽 > mo; #9EBD
+麾 > hūi; #9EBE
+黀 > zōu; #9EC0
+黁 > nēn; #9EC1
+黂 > fén; #9EC2
+黃 > huáng; #9EC3
+黄 > huáng; #9EC4
+黅 > jīn; #9EC5
+黆 > guāng; #9EC6
+黇 > tiān; #9EC7
+黈 > tŏu; #9EC8
+黉 > héng; #9EC9
+黊 > xī; #9ECA
+黋 > kuăng; #9ECB
+黌 > héng; #9ECC
+黍 > shŭ; #9ECD
+黎 > lí; #9ECE
+黏 > nián; #9ECF
+黐 > chī; #9ED0
+黑 > hēi; #9ED1
+黒 > hēi; #9ED2
+黓 > yì; #9ED3
+黔 > qián; #9ED4
+黕 > dān; #9ED5
+黖 > xì; #9ED6
+黗 > tuăn; #9ED7
+默 > mò; #9ED8
+黙 > mò; #9ED9
+黚 > qián; #9EDA
+黛 > dài; #9EDB
+黜 > chù; #9EDC
+黝 > yŏu; #9EDD
+點 > diăn; #9EDE
+黟 > yī; #9EDF
+黠 > xiá; #9EE0
+黡 > yăn; #9EE1
+黢 > qū; #9EE2
+黣 > mĕi; #9EE3
+黤 > yăn; #9EE4
+黥 > jīng; #9EE5
+黦 > yù; #9EE6
+黧 > lí; #9EE7
+黨 > dăng; #9EE8
+黩 > dú; #9EE9
+黪 > căn; #9EEA
+黫 > yīn; #9EEB
+黬 > àn; #9EEC
+黭 > yān; #9EED
+黮 > tăn; #9EEE
+黯 > àn; #9EEF
+黰 > zhĕn; #9EF0
+黱 > dài; #9EF1
+黲 > căn; #9EF2
+黳 > yī; #9EF3
+黴 > méi; #9EF4
+黵 > dăn; #9EF5
+黶 > yăn; #9EF6
+黷 > dú; #9EF7
+黸 > lú; #9EF8
+黹 > zhĭ; #9EF9
+黺 > fĕn; #9EFA
+黻 > fù; #9EFB
+黼 > fŭ; #9EFC
+黽 > mĭn; #9EFD
+黾 > mĭn; #9EFE
+黿 > yuán; #9EFF
+鼀 > cù; #9F00
+鼁 > qù; #9F01
+鼂 > cháo; #9F02
+鼃 > wā; #9F03
+鼄 > zhū; #9F04
+鼅 > zhī; #9F05
+鼆 > máng; #9F06
+鼇 > áo; #9F07
+鼈 > biē; #9F08
+鼉 > túo; #9F09
+鼊 > bì; #9F0A
+鼋 > yuán; #9F0B
+鼌 > cháo; #9F0C
+鼍 > túo; #9F0D
+鼎 > dĭng; #9F0E
+鼏 > mì; #9F0F
+鼐 > nài; #9F10
+鼑 > dĭng; #9F11
+鼒 > zī; #9F12
+鼓 > gŭ; #9F13
+鼔 > gŭ; #9F14
+鼕 > dōng; #9F15
+鼖 > fén; #9F16
+鼗 > táo; #9F17
+鼘 > yuān; #9F18
+鼙 > pí; #9F19
+鼚 > chāng; #9F1A
+鼛 > gāo; #9F1B
+鼜 > qì; #9F1C
+鼝 > yuān; #9F1D
+鼞 > tāng; #9F1E
+鼟 > tēng; #9F1F
+鼠 > shŭ; #9F20
+鼡 > shŭ; #9F21
+鼢 > fén; #9F22
+鼣 > fèi; #9F23
+鼤 > wén; #9F24
+鼥 > bá; #9F25
+鼦 > diāo; #9F26
+鼧 > túo; #9F27
+鼨 > tóng; #9F28
+鼩 > qú; #9F29
+鼪 > shēng; #9F2A
+鼫 > shí; #9F2B
+鼬 > yòu; #9F2C
+鼭 > shí; #9F2D
+鼮 > tíng; #9F2E
+鼯 > wú; #9F2F
+鼰 > niàn; #9F30
+鼱 > jīng; #9F31
+鼲 > hún; #9F32
+鼳 > jú; #9F33
+鼴 > yăn; #9F34
+鼵 > tú; #9F35
+鼶 > tí; #9F36
+鼷 > xī; #9F37
+鼸 > xiăn; #9F38
+鼹 > yăn; #9F39
+鼺 > léi; #9F3A
+鼻 > bí; #9F3B
+鼼 > yăo; #9F3C
+鼽 > qíu; #9F3D
+鼾 > hān; #9F3E
+鼿 > wū; #9F3F
+齀 > wù; #9F40
+齁 > hóu; #9F41
+齂 > xì; #9F42
+齃 > gé; #9F43
+齄 > zhā; #9F44
+齅 > xìu; #9F45
+齆 > wèng; #9F46
+齇 > zhā; #9F47
+齈 > nóng; #9F48
+齉 > nàng; #9F49
+齊 > qí; #9F4A
+齋 > zhāi; #9F4B
+齌 > jì; #9F4C
+齍 > zī; #9F4D
+齎 > jī; #9F4E
+齏 > jī; #9F4F
+齐 > qí; #9F50
+齑 > jī; #9F51
+齒 > chĭ; #9F52
+齓 > chèn; #9F53
+齔 > chèn; #9F54
+齕 > hé; #9F55
+齖 > yá; #9F56
+齗 > kĕn; #9F57
+齘 > xiè; #9F58
+齙 > páo; #9F59
+齚 > cùo; #9F5A
+齛 > shì; #9F5B
+齜 > zī; #9F5C
+齝 > chī; #9F5D
+齞 > niàn; #9F5E
+齟 > jŭ; #9F5F
+齠 > tiáo; #9F60
+齡 > líng; #9F61
+齢 > líng; #9F62
+齣 > chū; #9F63
+齤 > quán; #9F64
+齥 > xiè; #9F65
+齦 > kĕn; #9F66
+齧 > niè; #9F67
+齨 > jìu; #9F68
+齩 > yăo; #9F69
+齪 > chùo; #9F6A
+齫 > kŭn; #9F6B
+齬 > yŭ; #9F6C
+齭 > chŭ; #9F6D
+齮 > yĭ; #9F6E
+齯 > ní; #9F6F
+齰 > cùo; #9F70
+齱 > zōu; #9F71
+齲 > qŭ; #9F72
+齳 > nĕn; #9F73
+齴 > xiăn; #9F74
+齵 > óu; #9F75
+齶 > è; #9F76
+齷 > wò; #9F77
+齸 > yì; #9F78
+齹 > chūo; #9F79
+齺 > zōu; #9F7A
+齻 > diān; #9F7B
+齼 > chŭ; #9F7C
+齽 > jìn; #9F7D
+齾 > yà; #9F7E
+齿 > chĭ; #9F7F
+龀 > chèn; #9F80
+龁 > hé; #9F81
+龂 > kĕn; #9F82
+龃 > jŭ; #9F83
+龄 > líng; #9F84
+龅 > páo; #9F85
+龆 > tiáo; #9F86
+龇 > zī; #9F87
+龈 > kĕn; #9F88
+龉 > yŭ; #9F89
+龊 > chùo; #9F8A
+龋 > qŭ; #9F8B
+龌 > wò; #9F8C
+龍 > lóng; #9F8D
+龎 > páng; #9F8E
+龏 > gōng; #9F8F
+龐 > páng; #9F90
+龑 > yăn; #9F91
+龒 > lóng; #9F92
+龓 > lóng; #9F93
+龔 > gōng; #9F94
+龕 > kān; #9F95
+龖 > tà; #9F96
+龗 > líng; #9F97
+龘 > tà; #9F98
+龙 > lóng; #9F99
+龚 > gōng; #9F9A
+龛 > kān; #9F9B
+龜 > gūi; #9F9C
+龝 > qīu; #9F9D
+龞 > biē; #9F9E
+龟 > gūi; #9F9F
+龠 > yuè; #9FA0
+龡 > chùi; #9FA1
+龢 > hé; #9FA2
+龣 > jué; #9FA3
+龤 > xié; #9FA4
+龥 > yù; #9FA5
+癩 > là; #F90E
+兀 > wù; #FA0C
+嗀 > hùo; #FA0D
+塚 > zhŏng; #FA10
+晴 > qíng; #FA12
+凞 > xī; #FA15
+猪 > zhū; #FA16
+益 > yì; #FA17
+礼 > lĭ; #FA18
+神 > shén; #FA19
+祥 > xiáng; #FA1A
+福 > fú; #FA1B
+靖 > jìng; #FA1C
+精 > jīng; #FA1D
+羽 > yŭ; #FA1E
+諸 > zhū; #FA22
+逸 > yì; #FA25
+都 > dū; #FA26
+飯 > fàn; #FA2A
+飼 > sì; #FA2B
+館 > guăn; #FA2C
+鶴 > hè; #FA2D
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
new file mode 100644
index 0000000..fe353f3
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
@@ -0,0 +1,6366 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Date: Tue Jan 23 12:42:02 2001
+#--------------------------------------------------------------------
+
+# Kanji-English
+
+丁>'[male adult]';
+七>'[seven]';
+万>'[ten thousand]';
+丈>'[unit of length equal 3.3 meters]';
+三>'[three]';
+上>'[top]';
+下>'[under]';
+不>'[no]';
+与>'[and]';
+丐>'[beggar]';
+丑>'[clown]';
+且>'[moreover]';
+丕>'[great]';
+世>'[generation]';
+丗>'[thirty]';
+丘>'[hill]';
+丙>'[third of heavenly stems]';
+丞>'[assist]';
+両>'[two]';
+並>'[equal to]';
+个>'[numerary adjunct]';
+中>'[central]';
+丱>'[child''s hairstyle bound in two tufts]';
+串>'[string]';
+丶>'[dot]';
+丸>'[small round object]';
+丹>'[cinnabar (native HgS)]';
+主>'[master]';
+丼>'[bowl of food]';
+丿>'[line]';
+乂>'[govern]';
+乃>'[then]';
+久>'[long time (ago)]';
+之>'[''s (marks preceding phrase as modifier of following phrase)]';
+乍>'[suddenly]';
+乎>'[interrogative or exclamatory final particle]';
+乏>'[lack]';
+乕>'[tiger]';
+乖>'[rebel]';
+乗>'[ride]';
+乘>'[ride]';
+乙>'[second heaven''s stem]';
+九>'[nine]';
+乞>'[beg]';
+也>'[also]';
+乢>'[lid]';
+乱>'[confusion]';
+乳>'[breast]';
+乾>'[dry]';
+亀>'[turtle or tortoise]';
+亂>'[confusion]';
+亅>'[hook]';
+了>'[to finish]';
+予>'[I]';
+争>'[dispute]';
+亊>'[affair]';
+事>'[affair]';
+二>'[two]';
+于>'[in]';
+云>'[say]';
+互>'[mutually]';
+五>'[five]';
+井>'[well]';
+亘>'[extend across]';
+亙>'[extend across]';
+些>'[little]';
+亜>'[asia]';
+亞>'[asia]';
+亟>'[urgently]';
+亠>'[head]';
+亡>'[death]';
+亢>'[high]';
+交>'[mix]';
+亥>'[last of 12 earth branches]';
+亦>'[also]';
+亨>'[smoothly]';
+享>'[enjoy]';
+京>'[capital city]';
+亭>'[pavilion]';
+亮>'[bright]';
+亰>'[capital city]';
+亳>'[name of district in Anhui]';
+亶>'[sincere]';
+人>'[man]';
+什>'[file of ten soldiers]';
+仁>'[humaneness]';
+仂>'[surplus or excess]';
+仄>'[slanting]';
+仆>'[fall forward]';
+仇>'[enemy]';
+今>'[now]';
+介>'[forerunner]';
+仍>'[yet]';
+从>'[from]';
+仏>'[buddha]';
+仔>'[small thing]';
+仕>'[official]';
+他>'[other]';
+仗>'[rely upon]';
+付>'[give]';
+仙>'[Taoist super-being]';
+仝>'[together]';
+仞>'[ancient unit of measure (8 feet)]';
+仟>'[one thousand]';
+代>'[replace]';
+令>'[command]';
+以>'[by means of]';
+仭>'[ancient unit of measure (8 feet)]';
+仮>'[falsehood]';
+仰>'[raise the head to look]';
+仲>'[middle brother]';
+件>'[numerary adjunct for article]';
+价>'[price]';
+任>'[trust to]';
+企>'[plan a project]';
+伉>'[compare]';
+伊>'[third person pronoun]';
+伍>'[five]';
+伎>'[talent]';
+伏>'[crouch]';
+伐>'[cut down]';
+休>'[rest]';
+会>'[assemble]';
+伜>'[deputy]';
+伝>'[summon]';
+伯>'[older brother]';
+估>'[merchant]';
+伴>'[companion]';
+伶>'[lonely]';
+伸>'[extend]';
+伺>'[serve]';
+似>'[resemble]';
+伽>'[transcription of sanskrit gha in buddhist texts ('ëmâæ' \"samgha\")]';
+佃>'[tenant farmer]';
+但>'[only]';
+佇>'[wait]';
+位>'[throne]';
+低>'[low]';
+住>'[reside]';
+佐>'[assist]';
+佑>'[help]';
+体>'[body]';
+何>'[what]';
+佗>'[other]';
+余>'[I]';
+佚>'[indulge in pleasures]';
+佛>'[buddha (contraction of MC 'bhiêtdha')]';
+作>'[make]';
+佝>'[rickets]';
+佞>'[flattery]';
+佩>'[belt ornament]';
+佯>'[pretend]';
+佰>'[hundred]';
+佳>'[good]';
+併>'[combine]';
+佶>'[strong]';
+佻>'[frivolous]';
+佼>'[beautiful]';
+使>'[cause]';
+侃>'[upright and strong]';
+來>'[come]';
+侈>'[luxurious]';
+例>'[precedent]';
+侍>'[serve]';
+侏>'[small]';
+侑>'[help]';
+侖>'[logical reasons]';
+侘>'[disappointed]';
+供>'[supply]';
+依>'[rely on]';
+侠>'[chivalrous person]';
+価>'[price]';
+侫>'[flattery]';
+侭>'[complete]';
+侮>'[insult]';
+侯>'[marquis]';
+侵>'[invade]';
+侶>'[companion]';
+便>'[convenience]';
+係>'[bind]';
+促>'[urge]';
+俄>'[sudden(ly)]';
+俊>'[talented]';
+俎>'[chopping board or block]';
+俐>'[smooth]';
+俑>'[wooden figure buried with dead]';
+俔>'[like]';
+俗>'[social customs]';
+俘>'[prisoner of war]';
+俚>'[rustic]';
+俛>'[make effort]';
+保>'[protect]';
+俟>'[wait for]';
+信>'[trust]';
+俣>'[big]';
+#"俣>'[big]'",
+俥>'[rickshaw]';
+修>'[study]';
+俯>'[bow down]';
+俳>'[actor]';
+俵>'[divide]';
+俶>'[start]';
+俸>'[wages]';
+俺>'[personal pronoun]';
+俾>'[so that]';
+倅>'[deputy]';
+倆>'[clever]';
+倉>'[granary]';
+個>'[numerary adjunct]';
+倍>'[times]';
+倏>'[hastily]';
+們>'[adjunct pronoun indicate plural]';
+倒>'[fall over]';
+倔>'[stubborn]';
+倖>'[lucky]';
+候>'[wait]';
+倚>'[rely on]';
+借>'[borrow]';
+倡>'[guide]';
+倣>'[imitate]';
+値>'[price]';
+倥>'[boorish]';
+倦>'[be tired of]';
+倨>'[arrogant]';
+倩>'[beautiful]';
+倪>'[feeble]';
+倫>'[normal human relationships]';
+倬>'[noticeable]';
+倭>'[dwarf]';
+倶>'[all]';
+倹>'[temperate]';
+偃>'[cease]';
+假>'[falsehood]';
+偈>'[brave]';
+偉>'[great]';
+偏>'[inclined one side]';
+偐>'[false]';
+偕>'[together]';
+偖>'[rip up]';
+做>'[work]';
+停>'[stop]';
+健>'[strong]';
+偬>'[urgent]';
+偲>'[talented]';
+側>'[side]';
+偵>'[spy]';
+偶>'[accidentally]';
+偸>'[to steal]';
+偽>'[false]';
+傀>'[great]';
+傅>'[tutor]';
+傍>'[by side of]';
+傑>'[hero]';
+傘>'[umbrella]';
+備>'[prepare]';
+傚>'[imitate]';
+催>'[press]';
+傭>'[hire]';
+傲>'[proud]';
+傳>'[summon]';
+傴>'[humpback]';
+債>'[debt]';
+傷>'[wound]';
+傾>'[upset]';
+僂>'[humpback]';
+僅>'[only]';
+僉>'[all]';
+僊>'[Taoist super-being]';
+働>'[labor]';
+像>'[picture]';
+僑>'[sojourn]';
+僕>'[slave]';
+僖>'[joy]';
+僚>'[companion]';
+僞>'[false]';
+僣>'[assume]';
+僥>'[be lucky]';
+僧>'[buddhist priest]';
+僭>'[assume]';
+僮>'[page]';
+僵>'[stiff and motionless]';
+價>'[price]';
+僻>'[out-of-the-way]';
+儀>'[ceremony]';
+儁>'[outstanding]';
+儂>'[I]';
+億>'[hundred million]';
+儉>'[temperate]';
+儒>'[confucian scholar]';
+儔>'[companion]';
+儕>'[a company]';
+#"儕>'[a company]'",
+儘>'[utmost]';
+#"儘>'[utmost]'",
+償>'[repay]';
+儡>'[puppet]';
+優>'[superior]';
+儲>'[save money]';
+儷>'[spouse]';
+儺>'[rich]';
+儻>'[if]';
+儼>'[grave]';
+儿>'[son]';
+兀>'[to cut off the feet]';
+允>'[to grant]';
+元>'[first]';
+兄>'[elder brother]';
+充>'[fill]';
+兆>'[omen]';
+兇>'[atrocious]';
+先>'[first]';
+光>'[light]';
+克>'[gram]';
+兌>'[cash]';
+免>'[spare]';
+兎>'[rabbit]';
+児>'[son]';
+兒>'[son]';
+兔>'[rabbit]';
+党>'[political party]';
+兜>'[pouch]';
+兢>'[fearful]';
+入>'[enter]';
+全>'[maintain]';
+兩>'[two]';
+兪>'[surname]';
+八>'[eight]';
+公>'[fair]';
+六>'[number six]';
+兮>'[exclamatory particle]';
+共>'[together with]';
+兵>'[soldier]';
+其>'[his]';
+具>'[tool]';
+典>'[law]';
+兼>'[unite]';
+冀>'[hope for]';
+冂>'[wide]';
+内>'[inside]';
+円>'[yen]';
+冉>'[tender]';
+冊>'[book]';
+册>'[book]';
+再>'[again]';
+冏>'[[not found in dictionary]]';
+冐>'[risk]';
+冑>'[helmet]';
+冒>'[risk]';
+冓>'[a secluded place]';
+冕>'[crown]';
+冖>'[cover]';
+冗>'[excessive]';
+写>'[write]';
+冠>'[cap]';
+冢>'[burial mound]';
+冤>'[grievance]';
+冥>'[dark]';
+冦>'[bandits]';
+冨>'[abundant]';
+冩>'[write]';
+冪>'[cover-cloth]';
+冫>'[ice]';
+冬>'[winter]';
+冰>'[ice]';
+冱>'[freezing]';
+冲>'[soar]';
+决>'[decide]';
+冴>'[freezing]';
+况>'[condition]';
+冶>'[smelt]';
+冷>'[cold]';
+冽>'[cold and raw]';
+凄>'[bitter cold]';
+凅>'[dried up]';
+准>'[approve]';
+凉>'[cool]';
+凋>'[be withered]';
+凌>'[pure]';
+凍>'[freeze]';
+凖>'[rule]';
+凛>'[to shiver with cold or fear]';
+凜>'[shiver with cold or fear]';
+凝>'[coagulate]';
+几>'[small table]';
+凡>'[all]';
+処>'[place]';
+凧>'[kite]';
+凩>'[wintry wind]';
+凪>'[calm]';
+凭>'[lean on]';
+凰>'[female phoenix]';
+凱>'[triumphant]';
+凵>'[receptacle]';
+凶>'[culprit]';
+凸>'[protrude]';
+凹>'[concave]';
+出>'[go out]';
+函>'[correspondence]';
+凾>'[correspondence]';
+刀>'[knife]';
+刃>'[edged tool]';
+刄>'[edged tool]';
+分>'[divide]';
+切>'[cut]';
+刈>'[cut off]';
+刊>'[publication]';
+刋>'[publication]';
+刎>'[behead]';
+刑>'[punishment]';
+刔>'[scoop out]';
+列>'[line]';
+初>'[beginning]';
+判>'[judge]';
+別>'[separate]';
+刧>'[disaster]';
+利>'[gains]';
+刪>'[to cut]';
+刮>'[shave]';
+到>'[go to]';
+刳>'[cut out]';
+制>'[system]';
+刷>'[brush]';
+券>'[certificate]';
+刹>'[temple]';
+刺>'[stab]';
+刻>'[carve]';
+剃>'[shave]';
+剄>'[cut throat]';
+則>'[rule]';
+削>'[scrape off]';
+剋>'[subdue]';
+剌>'[slash]';
+前>'[in front]';
+剏>'[establish]';
+剔>'[pick out]';
+剖>'[split in two]';
+剛>'[hard]';
+剞>'[carving or engraving knife]';
+剣>'[sword]';
+剤>'[medicinal preparation]';
+剥>'[peel]';
+剩>'[leftovers]';
+剪>'[scissors]';
+副>'[assist]';
+剰>'[leftovers]';
+剱>'[sword]';
+割>'[cut]';
+剳>'[brief note]';
+剴>'[sharpen]';
+創>'[establish]';
+剽>'[rob]';
+剿>'[destroy]';
+劃>'[divide]';
+劇>'[theatrical plays]';
+劈>'[cut apart]';
+劉>'[surname]';
+劍>'[sword]';
+劑>'[medicinal preparation]';
+劒>'[sword]';
+劔>'[sword]';
+力>'[power]';
+功>'[achievement]';
+加>'[add to]';
+劣>'[bad]';
+助>'[help]';
+努>'[exert]';
+劫>'[take by force]';
+劬>'[be diligent]';
+劭>'[encourage]';
+励>'[strive]';
+労>'[labor]';
+劵>'[certificate]';
+効>'[efficacious]';
+劼>'[be discreet]';
+劾>'[examine into]';
+勁>'[strong]';
+勃>'[suddenly]';
+勅>'[imperial degree]';
+勇>'[brave]';
+勉>'[endeavor]';
+勍>'[strong]';
+勒>'[strangle]';
+動>'[move]';
+勗>'[enjoin]';
+勘>'[investigate]';
+務>'[affairs]';
+勝>'[victory]';
+勞>'[labor]';
+募>'[levy]';
+勠>'[join forces]';
+勢>'[power]';
+勣>'[achievements]';
+勤>'[industrious]';
+勦>'[destroy]';
+勧>'[recommend]';
+勲>'[meritorious deed]';
+勳>'[meritorious deed]';
+勵>'[strive]';
+勸>'[recommend]';
+勹>'[wrap]';
+勺>'[spoon]';
+勾>'[hook]';
+勿>'[must not]';
+匁>'[Japanese unit of weight (1/1000 of a kan)]';
+匂>'[fragrance]';
+包>'[wrap]';
+匆>'[hastily]';
+匈>'[breast]';
+匍>'[crawl]';
+匏>'[gourd]';
+匐>'[fall prostrate]';
+匕>'[spoon]';
+化>'[change]';
+北>'[north]';
+匙>'[spoon]';
+匚>'[box]';
+匝>'[full circle]';
+匠>'[craftsman]';
+匡>'[correct]';
+匣>'[small box]';
+匪>'[bandits]';
+匯>'[concourse]';
+匱>'[to lack]';
+匳>'[ladies toilet case with mirror]';
+匸>'[box]';
+匹>'[bolt of cloth]';
+区>'[area]';
+医>'[cure]';
+匿>'[hide]';
+區>'[area]';
+十>'[ten]';
+千>'[thousand]';
+卅>'[thirty]';
+卆>'[soldier]';
+升>'[arise]';
+午>'[noon]';
+卉>'[general term for plants]';
+半>'[half]';
+卍>'[swastika - fourth of auspicious]';
+卑>'[humble]';
+卒>'[soldier]';
+卓>'[profound]';
+協>'[be united]';
+南>'[south]';
+#"南>'[south]'",
+博>'[gamble]';
+卜>'[fortune telling]';
+卞>'[be impatient]';
+占>'[divine]';
+卦>'[fortune telling]';
+卩>'[seal]';
+卮>'[measuring cup]';
+卯>'[4th of Earth Branches]';
+印>'[print]';
+危>'[dangerous]';
+即>'[promptly]';
+却>'[still]';
+卵>'[egg]';
+卷>'[scroll]';
+卸>'[lay down]';
+卻>'[still]';
+卿>'[noble]';
+厂>'[factory]';
+厄>'[adversity]';
+厖>'[bulky]';
+厘>'[thousandth part of tael]';
+厚>'[thick]';
+原>'[source]';
+厠>'[mingle with]';
+厥>'[personal pronoun - he]';
+厦>'[big building]';
+厨>'[kitchen]';
+厩>'[stable]';
+厭>'[dislike]';
+厮>'[servant]';
+厰>'[factory]';
+厳>'[strict]';
+厶>'[private]';
+去>'[go away]';
+参>'[take part in]';
+參>'[take part in]';
+又>'[and]';
+叉>'[crotch]';
+及>'[extend]';
+友>'[friend]';
+双>'[set of two]';
+反>'[reverse]';
+収>'[gather together]';
+叔>'[father''s younger brother]';
+取>'[take]';
+受>'[receive]';
+叙>'[express]';
+叛>'[rebel]';
+叟>'[old man]';
+叡>'[astute]';
+叢>'[bush]';
+口>'[mouth]';
+古>'[old]';
+句>'[sentence]';
+叨>'[talkative]';
+叩>'[knock]';
+只>'[only]';
+叫>'[cry]';
+召>'[imperial decree]';
+叭>'[trumpet]';
+叮>'[exhort or enjoin repeatedly]';
+可>'[may]';
+台>'[platform]';
+叱>'[scold]';
+史>'[history]';
+右>'[right]';
+叶>'[to harmonize]';
+号>'[mark]';
+司>'[take charge of]';
+#"叹>'[sigh]'",
+吁>'[interjection \"Alas!\"]';
+吃>'[eat]';
+各>'[each]';
+合>'[combine]';
+吉>'[lucky]';
+吊>'[condole]';
+吋>'[inch]';
+同>'[same]';
+名>'[name]';
+后>'[queen]';
+吏>'[government official]';
+吐>'[vomit]';
+向>'[toward]';
+君>'[sovereign]';
+吝>'[stingy]';
+吟>'[sing]';
+吠>'[bark]';
+否>'[not]';
+吩>'[order]';
+含>'[hold in mouth]';
+听>'[hear]';
+吭>'[throat]';
+吮>'[suck with mouth]';
+吶>'[raise voice]';
+吸>'[inhale]';
+吹>'[blow]';
+吻>'[kiss]';
+吼>'[roar]';
+吽>'[\"OM\"]';
+吾>'[i]';
+呀>'[particle used express surprise]';
+呂>'[surname]';
+呆>'[dull]';
+呈>'[submit]';
+呉>'[one of warring states]';
+告>'[tell]';
+呎>'[foot]';
+呑>'[swallow]';
+#"呜>'[sound of crying]'",
+周>'[zhou dynasty]';
+呪>'[curse]';
+#"呰>'[................................]'",
+呱>'[wail]';
+味>'[taste]';
+呵>'[scold]';
+呶>'[talkative]';
+呷>'[suck]';
+呻>'[groan]';
+呼>'[breathe sigh]';
+命>'[life]';
+咀>'[suck]';
+咄>'[noise of rage]';
+咆>'[roar]';
+咋>'[why? how? what?]';
+和>'[harmony]';
+咎>'[fault]';
+咏>'[sing song or poem]';
+咐>'[instruct]';
+咒>'[curse]';
+咢>'[sound]';
+咤>'[scold]';
+咥>'[sound of cat]';
+咨>'[inquire]';
+咫>'[foot measure of Zhou dynasty]';
+咬>'[bite]';
+咯>'[final particle]';
+咲>'[smile]';
+咳>'[cough]';
+咸>'[together]';
+咼>'[chat]';
+咽>'[throat]';
+咾>'[a noise]';
+哀>'[sad]';
+品>'[article]';
+哂>'[smile]';
+哄>'[coax]';
+哇>'[vomit]';
+哈>'[sound of laughter]';
+哉>'[final exclamatory particle]';
+#"哗>'[rushing sound]'",
+員>'[member]';
+哢>'[syllable]';
+哥>'[elder brother]';
+哦>'[oh? really? is that so?]';
+哨>'[whistle]';
+哩>'[mile]';
+哭>'[weep]';
+哮>'[cough]';
+哲>'[wise]';
+哺>'[chew food]';
+哽>'[choke]';
+唄>'[final particle of assertion pathaka]';
+唆>'[make mischief]';
+唇>'[lips]';
+唏>'[weep or sob]';
+唐>'[tang dynasty]';
+唔>'[hold in mouth]';
+唖>'[dumb]';
+售>'[sell]';
+唯>'[only]';
+唱>'[sing]';
+唳>'[cry of bird]';
+唸>'[recite]';
+唹>'[to smile at]';
+唾>'[spit]';
+啀>'[gnaw]';
+啄>'[to peck]';
+#"啄>'[to peck]'",
+商>'[commerce]';
+啌>'[animal disease]';
+問>'[ask (about)]';
+啓>'[open]';
+啖>'[eat]';
+啗>'[eat]';
+啜>'[sip]';
+#"啜>'[sip]'",
+啣>'[hold in mouth]';
+啻>'[only]';
+啼>'[weep]';
+啾>'[wailing of child]';
+喀>'[vomit]';
+喃>'[keep talking]';
+善>'[good]';
+喇>'[horn]';
+喉>'[throat]';
+喊>'[shout]';
+喋>'[nag]';
+喘>'[pant]';
+喙>'[beak]';
+喚>'[call]';
+喜>'[like]';
+喝>'[drink]';
+喞>'[chirping of insects]';
+喟>'[heave sigh]';
+喧>'[lively]';
+喨>'[wail]';
+喩>'[metaphor]';
+喪>'[mourning]';
+喫>'[eat]';
+喬>'[tall]';
+單>'[single]';
+喰>'[to eat]';
+営>'[encampment]';
+嗄>'[hoarse of voice]';
+嗅>'[smell]';
+嗇>'[miserly]';
+嗔>'[be angry at]';
+嗚>'[sound of crying]';
+嗜>'[be fond of]';
+嗟>'[sigh]';
+嗣>'[to connect]';
+嗤>'[laugh at]';
+嗷>'[loud clamor]';
+嗹>'[chatter]';
+嗽>'[cough]';
+嗾>'[to set a dog on]';
+嘆>'[sigh]';
+嘉>'[excellent]';
+嘔>'[vomit]';
+嘖>'[interjection of approval or admi]';
+嘗>'[taste]';
+嘘>'[exhale]';
+嘛>'[final exclamatory particle]';
+嘩>'[rushing sound]';
+嘯>'[roar]';
+嘱>'[order]';
+嘲>'[ridicule]';
+嘴>'[mouth]';
+嘶>'[neighing of a horse]';
+嘸>'[unclear]';
+噂>'[meet]';
+噌>'[scold]';
+噎>'[choke]';
+噐>'[receptacle]';
+噛>'[bite]';
+噤>'[close]';
+器>'[receptacle]';
+噪>'[be noisy]';
+噫>'[belch]';
+噬>'[bite]';
+噴>'[spurt]';
+噸>'[metric ton]';
+噺>'[story]';
+嚀>'[enjoin]';
+嚆>'[give forth sound]';
+嚇>'[scare]';
+嚊>'[to pant]';
+嚏>'[sneeze]';
+嚔>'[sneeze]';
+#"嚜>'[be silent]'",
+嚢>'[bag]';
+嚥>'[swallow]';
+嚮>'[guide]';
+嚴>'[strict]';
+嚶>'[seek friends]';
+嚼>'[prattle]';
+囀>'[sing]';
+囁>'[move lip when speaking]';
+囂>'[be noisy]';
+#"囂>'[be noisy]'",
+囈>'[talk in one''s sleep]';
+#"囍>'[double happiness]'",
+囑>'[order]';
+囓>'[gnaw]';
+囗>'[erect]';
+囘>'[return]';
+囚>'[prisoner]';
+四>'[four]';
+回>'[return]';
+因>'[cause]';
+団>'[sphere]';
+囮>'[inveigle]';
+困>'[surround]';
+囲>'[surround]';
+図>'[diagram]';
+囹>'[prison]';
+固>'[become solid]';
+国>'[nation]';
+囿>'[pen up]';
+圀>'[nation]';
+圃>'[garden]';
+圄>'[prison]';
+圈>'[to circle]';
+圉>'[stable]';
+國>'[nation]';
+圍>'[surround]';
+圏>'[to circle]';
+園>'[garden]';
+圓>'[circle]';
+圖>'[diagram]';
+團>'[sphere]';
+圜>'[circle]';
+土>'[soil]';
+圦>'[(kokuji) water gate]';
+#"圦>'[(kokuji) water gate]'",
+在>'[be at]';
+圭>'[jade pointed at top]';
+地>'[earth]';
+#"圳>'[furrow in field]'",
+#"圳>'[furrow in field]'",
+圻>'[border]';
+址>'[site]';
+坂>'[hillside]';
+均>'[equal]';
+坊>'[neighborhood]';
+坎>'[pit]';
+坏>'[rotten]';
+坐>'[sit]';
+坑>'[pit]';
+坡>'[slope]';
+坤>'[earth]';
+坦>'[flat]';
+坩>'[earthenware]';
+坪>'[level ground]';
+坿>'[mound]';
+垂>'[let down]';
+#"垆>'[black clods of earth]'",
+#"垉>'[................................]'",
+型>'[pattern]';
+垓>'[border]';
+垠>'[boundary]';
+垢>'[dirt]';
+垣>'[low wall]';
+垤>'[ant-hill]';
+#"垩>'[holy]'",
+#"垮>'[be defeated]'",
+#"垲>'[high and dry place]'",
+埀>'[let down]';
+埃>'[fine dust]';
+埆>'[stony]';
+埋>'[bury]';
+城>'[castle]';
+埒>'[enclosure]';
+埓>'[enclosure]';
+埔>'[plain]';
+#"埔>'[plain]'",
+埜>'[open country]';
+域>'[district]';
+埠>'[port city]';
+#"埣>'[................................]'",
+埴>'[soil with large clay content]';
+執>'[hold in hand]';
+培>'[bank up with dirt]';
+基>'[foundation]';
+埼>'[headland]';
+堀>'[cave]';
+堂>'[hall]';
+堅>'[hard]';
+堆>'[heap]';
+堊>'[white earth]';
+堋>'[bury]';
+堕>'[fall]';
+堙>'[bury]';
+堝>'[crucible]';
+堡>'[fort]';
+堤>'[dike]';
+堪>'[adequately capable of]';
+堯>'[a legendary ancient emperor-sage]';
+堰>'[dam]';
+報>'[report]';
+場>'[open space]';
+堵>'[wall]';
+堺>'[person''s name]';
+堽>'[mound]';
+塀>'[wall]';
+塁>'[rampart]';
+塊>'[piece]';
+塋>'[grave]';
+塑>'[model in clay]';
+塒>'[roost]';
+塔>'[tower]';
+塗>'[smear]';
+塘>'[pond]';
+塙>'[truly]';
+塚>'[cemetery]';
+塞>'[stop up]';
+塢>'[entrenchment]';
+塩>'[salt]';
+填>'[fill in]';
+#"塭>'[[not found in any dictionary]]'",
+塲>'[open space]';
+塵>'[dust]';
+塹>'[moat]';
+塾>'[village school]';
+境>'[boundery]';
+墅>'[villa]';
+墓>'[grave]';
+増>'[increase]';
+墜>'[fall down]';
+墟>'[high mound]';
+墨>'[ink]';
+墫>'[cup]';
+墮>'[fall]';
+墳>'[grave]';
+#"墳>'[grave]'",
+#"墳>'[grave]'",
+墺>'[4 walls]';
+墻>'[wall]';
+墾>'[cultivate]';
+壁>'[partition wall]';
+壅>'[to obstruct]';
+壇>'[altar]';
+壊>'[bad]';
+壌>'[soil]';
+壑>'[bed of torrent]';
+壓>'[press]';
+壕>'[trench]';
+#"壖>'[open space along water]'",
+壘>'[rampart]';
+壙>'[tomb]';
+壜>'[earthen jar or jug]';
+壞>'[bad]';
+壟>'[grave]';
+壤>'[soil]';
+#"壥>'[................................]'",
+士>'[scholar]';
+壬>'[ninth of ten celestial stems]';
+壮>'[big]';
+壯>'[big]';
+声>'[sound]';
+壱>'[number one]';
+売>'[sell]';
+壷>'[jar]';
+壹>'[number one]';
+壺>'[jar]';
+壻>'[son-in-law]';
+壼>'[palace corridor or passageway]';
+壽>'[old age]';
+夂>'[go]';
+変>'[change]';
+夊>'[Radical No. 35]';
+夏>'[summer]';
+夐>'[long]';
+夕>'[evening]';
+外>'[out]';
+夘>'[4th of Earth Branches]';
+夙>'[early in morning]';
+多>'[much]';
+夛>'[much]';
+夜>'[night]';
+夢>'[dream]';
+夥>'[companion]';
+大>'[big]';
+天>'[sky]';
+太>'[very]';
+夫>'[man]';
+夬>'[parted]';
+夭>'[young]';
+央>'[center]';
+失>'[lose]';
+夲>'[advance quickly]';
+夷>'[ancient barbarian tribes]';
+夸>'[extravagant]';
+夾>'[be wedged or inserted between]';
+奄>'[ere long]';
+奇>'[strange]';
+奈>'[but]';
+奉>'[offer]';
+奎>'[stride of man]';
+奏>'[memorialize emperor]';
+奐>'[be numerous]';
+契>'[deed]';
+奔>'[run fast]';
+奕>'[in sequence]';
+套>'[case]';
+奘>'[large]';
+奚>'[where? what? how? why?]';
+奠>'[pay respect]';
+奢>'[extravagant]';
+奥>'[mysterious]';
+奧>'[mysterious]';
+奨>'[prize]';
+奩>'[lady''s vanity case]';
+奪>'[take by force]';
+奬>'[prize]';
+奮>'[strive]';
+女>'[woman]';
+奴>'[slave]';
+奸>'[crafty]';
+好>'[good]';
+妁>'[act as go-between]';
+如>'[if]';
+妃>'[wife]';
+妄>'[absurd]';
+妊>'[conceive]';
+妍>'[beautiful]';
+妓>'[prostitute]';
+妖>'[strange]';
+妙>'[mysterious]';
+#"妙>'[mysterious]'",
+妝>'[adorn oneself]';
+妣>'[one''s deceased mother]';
+妥>'[satisfactory]';
+妨>'[interfere with]';
+妬>'[jealous]';
+妲>'[concubine of last ruler of shang]';
+妹>'[younger sister]';
+妻>'[wife]';
+妾>'[concubine]';
+姆>'[child''s governess]';
+姉>'[elder sister]';
+始>'[begin]';
+姐>'[elder sister]';
+姑>'[father''s sister]';
+姓>'[one''s family name]';
+委>'[appoint]';
+姙>'[conceive]';
+姚>'[handsome]';
+姜>'[surname]';
+姥>'[maternal grandmother]';
+姦>'[adultery]';
+姨>'[mother/wife''s sister]';
+姪>'[niece]';
+姫>'[beauty]';
+#"姱>'[beautiful]'",
+姻>'[relatives by marriage]';
+姿>'[one''s manner]';
+威>'[pomp]';
+娃>'[baby]';
+娉>'[beautiful]';
+娑>'[dance]';
+娘>'[mother]';
+#"娚>'[................................]'",
+娜>'[elegant]';
+娟>'[beautiful]';
+娠>'[pregnant]';
+娥>'[be beautiful]';
+娩>'[give birth child]';
+娯>'[pleasure]';
+娵>'[star]';
+娶>'[marry]';
+娼>'[prostitute]';
+婀>'[be beautiful]';
+婁>'[surname]';
+婆>'[old woman]';
+婉>'[amiable]';
+婚>'[get married]';
+婢>'[servant girl]';
+婦>'[married women]';
+婪>'[covet]';
+婬>'[obscene]';
+婿>'[son-in-law]';
+媒>'[go-between]';
+媚>'[charming]';
+媛>'[beauty]';
+媼>'[old woman]';
+媽>'[mother]';
+媾>'[marry]';
+嫁>'[marry]';
+嫂>'[sister-in-law]';
+嫉>'[jealousy]';
+嫋>'[slender and delicate]';
+嫌>'[hate]';
+嫐>'[frolic]';
+嫖>'[patronize prostitutes]';
+嫗>'[old woman]';
+嫡>'[legal wife]';
+嫣>'[charming]';
+嫦>'[name of a moon goddess]';
+嫩>'[soft]';
+嫺>'[refined]';
+嫻>'[elegant]';
+嬉>'[enjoy]';
+嬋>'[beautiful]';
+嬌>'[seductive and loveable]';
+嬖>'[favorite]';
+嬢>'[troubled]';
+嬪>'[court lady]';
+嬬>'[mistress]';
+嬰>'[baby]';
+嬲>'[frolic]';
+#"嬴>'[to win]'",
+嬾>'[lazy]';
+孀>'[widow]';
+孃>'[troubled]';
+孅>'[slender]';
+子>'[offspring]';
+孑>'[remaining]';
+孔>'[opening]';
+孕>'[be pregnant]';
+字>'[letter]';
+存>'[exist]';
+孚>'[brood over eggs]';
+孛>'[comet]';
+孜>'[be as diligent as possible]';
+孝>'[filial piety]';
+孟>'[first in series]';
+季>'[quarter of year]';
+孤>'[orphan]';
+孥>'[one''s children]';
+学>'[learning]';
+孩>'[baby]';
+孫>'[grandchild]';
+孰>'[who? which? what? which one?]';
+孱>'[weak]';
+孳>'[breed in large numbers]';
+孵>'[sit on eggs]';
+學>'[learning]';
+孺>'[child]';
+宀>'[roof]';
+它>'[it]';
+宅>'[residence]';
+宇>'[house]';
+守>'[defend]';
+安>'[peaceful]';
+宋>'[Song dynasty]';
+完>'[complete]';
+宍>'[flesh]';
+宏>'[wide]';
+宕>'[stone quarry]';
+宗>'[lineage]';
+官>'[official]';
+宙>'[time as concept]';
+定>'[decide]';
+宛>'[seem]';
+宜>'[suitable]';
+宝>'[treasure]';
+実>'[real]';
+客>'[guest]';
+宣>'[declare]';
+室>'[room]';
+宥>'[forgive]';
+宦>'[officialdom]';
+宮>'[palace]';
+宰>'[to slaughter]';
+害>'[injure]';
+宴>'[entertain]';
+宵>'[night]';
+家>'[house]';
+宸>'[imperial]';
+容>'[looks]';
+宿>'[stop]';
+寂>'[still]';
+寃>'[grievance]';
+寄>'[send]';
+寅>'[respect]';
+密>'[dense]';
+寇>'[bandits]';
+#"寉>'[................................]'",
+富>'[abundant]';
+寐>'[sleep]';
+寒>'[cold]';
+寓>'[residence]';
+寔>'[real]';
+寛>'[broad]';
+寝>'[sleep]';
+寞>'[silent]';
+察>'[examine]';
+寡>'[widowed]';
+寢>'[sleep]';
+寤>'[few]';
+寥>'[few]';
+實>'[real]';
+寧>'[repose]';
+寨>'[stockade]';
+審>'[examine]';
+寫>'[write]';
+寮>'[shanty]';
+寰>'[great domain]';
+寳>'[treasure]';
+寵>'[favorite]';
+寶>'[treasure]';
+寸>'[inch]';
+寺>'[court]';
+対>'[correct]';
+寿>'[old age]';
+封>'[letter]';
+専>'[monopolize]';
+射>'[shoot]';
+尅>'[subdue]';
+将>'[will]';
+將>'[will]';
+專>'[monopolize]';
+尉>'[officer]';
+尊>'[respect]';
+尋>'[seek]';
+對>'[correct]';
+導>'[direct]';
+小>'[small]';
+少>'[few]';
+尓>'[you]';
+尖>'[sharp]';
+尚>'[still]';
+尠>'[very few]';
+尢>'[weak]';
+尤>'[especially]';
+尨>'[shaggy haired dog]';
+尭>'[a legendary ancient emperor-sage]';
+就>'[just]';
+尸>'[corpse]';
+尹>'[govern]';
+尺>'[chinese measure approx. \"foot\"]';
+尻>'[end of spine]';
+尼>'[buddhist nun]';
+尽>'[exhaust]';
+尾>'[tail]';
+尿>'[urine]';
+局>'[bureau]';
+屁>'[break wind]';
+居>'[live]';
+屆>'[numerary adjunct for time]';
+屈>'[bend]';
+届>'[numerary adjunct for time]';
+屋>'[house]';
+屍>'[corpse]';
+屎>'[excrement]';
+屏>'[folding screen]';
+屐>'[wooden shoes]';
+屑>'[bits]';
+屓>'[gigantic strength]';
+展>'[open]';
+属>'[class]';
+屠>'[butcher]';
+屡>'[frequently]';
+層>'[storey]';
+履>'[footwear]';
+屬>'[class]';
+屮>'[sprout]';
+屯>'[village]';
+山>'[mountain]';
+屶>'[lofty]';
+屹>'[to rise high]';
+岌>'[perilous]';
+岐>'[high]';
+岑>'[steep]';
+岔>'[diverge]';
+岡>'[ridge or crest of hill]';
+岨>'[uneven]';
+岩>'[cliff]';
+岫>'[mountain peak]';
+岬>'[cape]';
+岱>'[daishan one of five sacred mount]';
+岳>'[mountain peak]';
+#"岶>'[................................]'",
+岷>'[min mountain]';
+岸>'[bank]';
+#"岺>'[mountain ridge]'",
+#"岺>'[mountain ridge]'",
+岾>'[mountain pass (korean)]';
+#"峄>'[range of peaks]'",
+峇>'[cave]';
+峙>'[stand erect]';
+峠>'[mountain pass]';
+峡>'[gorge]';
+峨>'[lofty]';
+峩>'[lofty]';
+峪>'[valley]';
+峭>'[steep]';
+峯>'[peak]';
+峰>'[peak]';
+島>'[island]';
+#"峺>'[................................]'",
+峻>'[high]';
+峽>'[gorge]';
+崇>'[esteem]';
+崋>'[flowery]';
+崎>'[rough]';
+崑>'[Kunlun mountains in Jiang Su province.]';
+崔>'[high]';
+崕>'[cliff]';
+崖>'[cliff]';
+崗>'[post]';
+崘>'[kunlun mountains in jiangsu]';
+崙>'[kunlun mountains in jiangsu]';
+崚>'[hilly]';
+崛>'[towering]';
+崟>'[cliffs]';
+崢>'[high]';
+崩>'[rupture]';
+嵋>'[omei mountain in sichuan]';
+嵌>'[inlay]';
+嵎>'[mountain recess]';
+嵐>'[mountain mist]';
+嵒>'[cliff]';
+嵜>'[rough]';
+嵩>'[high]';
+嵬>'[high]';
+嵯>'[high]';
+嵳>'[high]';
+嵶>'[low part of a mountain]';
+嶂>'[cliff]';
+嶄>'[high]';
+嶇>'[steep]';
+嶋>'[island]';
+嶌>'[island]';
+#"嶐>'[................................]'",
+嶝>'[path leading up a mountain]';
+嶢>'[high or tall]';
+#"嶬>'[................................]'",
+嶮>'[high]';
+嶷>'[range of mountains in hunan prov]';
+嶺>'[mountain ridge]';
+嶼>'[island]';
+嶽>'[mountain peak]';
+巉>'[steep]';
+巌>'[cliff]';
+巍>'[high]';
+巒>'[mountain range]';
+巓>'[summit of mountain]';
+巖>'[cliff]';
+巛>'[river]';
+川>'[stream]';
+州>'[administrative division]';
+巡>'[patrol]';
+巣>'[nest]';
+工>'[labor]';
+左>'[left]';
+巧>'[skillful]';
+巨>'[large]';
+巫>'[wizard]';
+差>'[differ]';
+己>'[self]';
+已>'[already]';
+巳>'[sixth of twelve branches]';
+巴>'[greatly desire]';
+巵>'[measuring cup]';
+巷>'[alley]';
+巻>'[scroll]';
+巽>'[5th of the 8 trigrams]';
+巾>'[kerchief]';
+市>'[market]';
+布>'[cotton cloth]';
+帆>'[sail]';
+帋>'[paper]';
+希>'[rare]';
+帑>'[a treasury]';
+帖>'[invitation card]';
+帙>'[book cover]';
+帚>'[broom]';
+帛>'[silks]';
+帝>'[supreme ruler]';
+帥>'[commander]';
+師>'[teacher]';
+席>'[seat]';
+帯>'[belt]';
+帰>'[return]';
+帳>'[tent]';
+帶>'[belt]';
+帷>'[tent]';
+常>'[common]';
+帽>'[hat]';
+幀>'[picture]';
+幃>'[curtain that forms wall]';
+幄>'[tent]';
+幅>'[piece]';
+幇>'[help]';
+幌>'[curtain]';
+幎>'[cover-cloth]';
+幔>'[curtain]';
+幕>'[curtain]';
+幗>'[women''s headgear]';
+幟>'[flag]';
+幡>'[pennant]';
+幢>'[carriage curtain]';
+幣>'[currency]';
+幤>'[evil]';
+干>'[oppose]';
+平>'[flat]';
+年>'[year]';
+幵>'[even level. to raise in both hands]';
+并>'[combine]';
+幸>'[luck(ily)]';
+幹>'[trunk of tree or of human body]';
+幺>'[one]';
+幻>'[illusion]';
+幼>'[infant]';
+幽>'[quiet]';
+幾>'[how many? how much? (a)few]';
+广>'[wide]';
+庁>'[hall]';
+広>'[broad]';
+庄>'[village]';
+庇>'[cover]';
+床>'[bed]';
+序>'[series]';
+底>'[bottom]';
+庖>'[kitchen]';
+店>'[shop]';
+庚>'[seventh of ten cyclical stems]';
+府>'[prefecture]';
+庠>'[village school]';
+度>'[degree]';
+座>'[seat]';
+庫>'[armory]';
+庭>'[courtyard]';
+庵>'[buddhist monastery or nunnery]';
+庶>'[numerous]';
+康>'[peaceful]';
+庸>'[usual]';
+廁>'[toilet]';
+廂>'[side-room]';
+廃>'[abrogate]';
+廈>'[big building]';
+廉>'[upright]';
+廊>'[corridor]';
+廏>'[stable]';
+廐>'[stable]';
+廓>'[broad]';
+廖>'[surname]';
+廚>'[kitchen]';
+廛>'[store]';
+廝>'[servant]';
+廟>'[temple]';
+廠>'[factory]';
+廡>'[corridor]';
+廢>'[abrogate]';
+廣>'[broad]';
+廨>'[government office]';
+廩>'[granary]';
+廬>'[hut]';
+廰>'[hall]';
+廱>'[harmonious]';
+廳>'[hall]';
+廴>'[go]';
+延>'[delay]';
+廷>'[court]';
+廸>'[enlighten]';
+建>'[build]';
+廻>'[circle around]';
+廼>'[then]';
+廾>'[two hands]';
+廿>'[twenty]';
+弁>'[conical cap worn under zhou dyna]';
+弃>'[reject]';
+弄>'[do]';
+弉>'[large]';
+弊>'[evil]';
+弋>'[catch]';
+弌>'[number one]';
+弍>'[number two]';
+式>'[style]';
+弐>'[number two]';
+弑>'[to kill one''s superior]';
+弓>'[bow]';
+弔>'[condole]';
+引>'[pull]';
+弖>'[phonetic for \"te\" (Japanese)]';
+弗>'[not]';
+弘>'[enlarge]';
+弛>'[loosen]';
+弟>'[young brother]';
+弥>'[extensive]';
+弦>'[string]';
+弧>'[wooden bow]';
+弩>'[cross-bow]';
+弭>'[stop]';
+弯>'[bend]';
+弱>'[weak]';
+張>'[stretch]';
+強>'[strong]';
+弸>'[bow stretched full]';
+弼>'[aid]';
+#"弼>'[aid]'",
+#"彁>'[................................]'",
+彈>'[pellet]';
+彊>'[stubborn]';
+彌>'[extensive]';
+彎>'[bend]';
+彑>'[snout]';
+当>'[bear]';
+彖>'[a hog]';
+彗>'[broomstick]';
+彙>'[collect]';
+彜>'[yi]';
+彝>'[yi]';
+彡>'[hair]';
+形>'[form]';
+彦>'[elegant]';
+彩>'[hue]';
+彪>'[tiger]';
+彫>'[carve]';
+彬>'[cultivated]';
+彭>'[name of ancient country]';
+彰>'[clear]';
+影>'[shadow]';
+彳>'[step with left foot]';
+彷>'[like]';
+役>'[service]';
+彼>'[that]';
+彿>'[resembling]';
+往>'[go]';
+征>'[invade]';
+徂>'[go]';
+徃>'[go]';
+径>'[narrow path]';
+待>'[treat]';
+徇>'[comply with]';
+很>'[very]';
+徊>'[linger]';
+律>'[statute]';
+後>'[behind]';
+徐>'[slowly]';
+徑>'[narrow path]';
+徒>'[disciple]';
+従>'[from]';
+得>'[obtain]';
+徘>'[walk back and forth]';
+徙>'[move one''s abode]';
+從>'[from]';
+徠>'[induce]';
+御>'[drive]';
+徨>'[doubtful]';
+復>'[return]';
+循>'[obey]';
+徭>'[conscript labor]';
+微>'[small]';
+徳>'[virtue]';
+徴>'[summon]';
+徹>'[penetrate]';
+徼>'[frontier]';
+徽>'[a badge]';
+心>'[heart]';
+必>'[surely]';
+忌>'[jealous]';
+忍>'[endure]';
+忖>'[guess]';
+志>'[purpose]';
+忘>'[forget]';
+忙>'[busy]';
+応>'[should]';
+忝>'[disgrace]';
+忠>'[loyalty]';
+忤>'[insubordinate]';
+快>'[rapid]';
+忰>'[suffer]';
+忱>'[truth]';
+念>'[think of]';
+忸>'[blush]';
+忻>'[delightful]';
+忽>'[suddenly]';
+忿>'[get angry]';
+怎>'[what? why? how?]';
+怏>'[discontented]';
+#"怐>'[................................]'",
+怒>'[anger]';
+怕>'[fear]';
+怖>'[terror]';
+怙>'[rely on]';
+怛>'[grieved]';
+怜>'[pity]';
+思>'[think]';
+怠>'[idle]';
+怡>'[harmony]';
+急>'[quick]';
+怦>'[eager]';
+性>'[nature]';
+怨>'[hatred]';
+怩>'[shy]';
+怪>'[strange]';
+怫>'[sorry]';
+怯>'[lacking in courage]';
+怱>'[hastily]';
+怺>'[to endure]';
+恁>'[that]';
+恂>'[careful]';
+恃>'[rely on]';
+恆>'[constant]';
+恊>'[be united]';
+恋>'[love]';
+恍>'[seemingly]';
+恐>'[fear]';
+恒>'[constant]';
+恕>'[forgive]';
+恙>'[illness]';
+恚>'[anger]';
+恟>'[scared]';
+恠>'[strange]';
+恢>'[restore]';
+恣>'[indulge oneself]';
+恤>'[show pity]';
+恥>'[shame]';
+恨>'[hatred]';
+恩>'[kindness]';
+恪>'[respectful]';
+恫>'[in pain]';
+恬>'[quiet]';
+恭>'[respectful]';
+息>'[rest]';
+恰>'[just]';
+恵>'[favor]';
+#"恶>'[evil]'",
+悁>'[irritable]';
+悃>'[sincere]';
+悄>'[silent]';
+悉>'[know]';
+悋>'[stingy]';
+悌>'[brotherly]';
+悍>'[courageous]';
+悒>'[sorrowful]';
+悔>'[repent]';
+悖>'[be contradictory to]';
+#"悖>'[be contradictory to]'",
+悚>'[be afraid]';
+悛>'[repent]';
+悟>'[apprehend]';
+悠>'[long]';
+患>'[suffer]';
+悦>'[pleased]';
+悧>'[smooth]';
+悩>'[angered]';
+悪>'[evil]';
+悲>'[sorrow]';
+悳>'[ethics]';
+悴>'[suffer]';
+悵>'[disappointed]';
+悶>'[gloomy]';
+悸>'[fearful]';
+悼>'[grieve]';
+悽>'[sorrowful]';
+情>'[feeling]';
+惆>'[distressed]';
+惇>'[be kind]';
+惑>'[confuse]';
+惓>'[careful]';
+惘>'[disconcerted]';
+惚>'[absent-minded]';
+惜>'[pity]';
+惟>'[but]';
+惠>'[favor]';
+惡>'[evil]';
+惣>'[overall [questionable variant]]';
+惧>'[fear]';
+惨>'[sad]';
+惰>'[indolent]';
+惱>'[angered]';
+想>'[think]';
+惴>'[afraid]';
+惶>'[fearful]';
+惷>'[wriggle]';
+惹>'[irritate]';
+惺>'[intelligent]';
+惻>'[feel anguish]';
+愀>'[change one''s countenance]';
+愁>'[anxiety]';
+愃>'[relax]';
+愆>'[fault]';
+愈>'[more and more]';
+愉>'[pleasant]';
+愍>'[pity]';
+愎>'[obstinate]';
+意>'[thought]';
+愕>'[startled]';
+愚>'[stupid]';
+愛>'[love]';
+感>'[feel]';
+愡>'[absent-minded]';
+愧>'[ashamed]';
+愨>'[sincerity]';
+愬>'[accuse]';
+愴>'[sad]';
+愼>'[act with care]';
+愽>'[gamble]';
+愾>'[anger]';
+愿>'[sincere]';
+慂>'[urge]';
+慄>'[shiver]';
+慇>'[careful]';
+慈>'[kind]';
+慊>'[to resent]';
+態>'[manner]';
+慌>'[nervous]';
+慍>'[angry]';
+慎>'[act with care]';
+#"慓>'[................................]'",
+慕>'[long for]';
+慘>'[sad]';
+慙>'[ashamed]';
+慚>'[ashamed]';
+慝>'[do evil in secret]';
+慟>'[sadness]';
+慢>'[slow(ly)]';
+慣>'[habit]';
+慥>'[sincere]';
+慧>'[bright]';
+慨>'[sigh]';
+慫>'[to alarm]';
+慮>'[be concerned]';
+#"慯>'[................................]'",
+慰>'[comfort]';
+慱>'[sad]';
+慳>'[miserly]';
+慴>'[fear]';
+慵>'[indolent]';
+慶>'[congratulate]';
+慷>'[ardent]';
+慾>'[lust]';
+憂>'[sad]';
+憇>'[rest]';
+憊>'[tired]';
+憎>'[hate]';
+憐>'[pity]';
+憑>'[lean on]';
+憔>'[be worn-out]';
+憖>'[cautious]';
+憙>'[like]';
+憚>'[dread]';
+憤>'[resent]';
+憧>'[irresolute]';
+憩>'[rest]';
+憫>'[pity]';
+憬>'[rouse]';
+憮>'[regretful]';
+憲>'[constitution]';
+憶>'[remember]';
+憺>'[peace]';
+憾>'[regret]';
+懃>'[courteous]';
+懆>'[anxious]';
+懇>'[sincere]';
+懈>'[idle]';
+應>'[should]';
+懊>'[vexed]';
+懋>'[splendid]';
+懌>'[enjoy]';
+懍>'[be afraid of]';
+懐>'[bosom]';
+懣>'[be sick at heart]';
+懦>'[weak]';
+懲>'[punish]';
+懴>'[regret]';
+懶>'[lazy]';
+懷>'[bosom]';
+懸>'[hang]';
+懺>'[regret]';
+懼>'[fear]';
+懽>'[happy]';
+懾>'[afraid]';
+懿>'[virtuous]';
+戀>'[love]';
+戈>'[halberd]';
+戉>'[a battle-axe]';
+戊>'[fifth of ten celestial stems]';
+戌>'[eleventh of terrestrial branches]';
+戍>'[defend borders]';
+戎>'[arms]';
+成>'[completed]';
+我>'[our]';
+戒>'[warn]';
+戔>'[small]';
+或>'[or]';
+戚>'[relative]';
+戛>'[lance]';
+戝>'[pirate]';
+戞>'[lance]';
+戟>'[halberd with crescent blade]';
+戡>'[subjugate]';
+戦>'[war]';
+截>'[cut off]';
+戮>'[kill]';
+戯>'[theatrical play]';
+戰>'[war]';
+戲>'[theatrical play]';
+戳>'[prick]';
+戴>'[wear on top]';
+戸>'[door]';
+戻>'[perverse]';
+房>'[house]';
+所>'[place]';
+扁>'[flat]';
+扇>'[fan]';
+扈>'[escort]';
+扉>'[door panel]';
+手>'[hand]';
+才>'[talent]';
+扎>'[pull up]';
+打>'[strike]';
+払>'[shake off]';
+托>'[hold up with palm]';
+扛>'[carry on shoulders]';
+扞>'[ward off]';
+扠>'[pick up with fork or pincers]';
+扣>'[knock]';
+扨>'[pick up with fork or pincers]';
+扮>'[dress up]';
+扱>'[collect]';
+扶>'[support]';
+批>'[comment]';
+扼>'[grasp]';
+找>'[search]';
+承>'[inherit]';
+技>'[skill]';
+#"抂>'[................................]'",
+抃>'[to clap hands]';
+抄>'[copy]';
+抉>'[choose]';
+把>'[hold]';
+抑>'[press down]';
+抒>'[express]';
+抓>'[scratch]';
+抔>'[take or hold up in both hands]';
+投>'[throw]';
+抖>'[tremble]';
+抗>'[resist]';
+折>'[break off]';
+抛>'[throw (away)]';
+抜>'[uproot]';
+択>'[select]';
+披>'[wear]';
+抬>'[lift]';
+抱>'[embrace]';
+抵>'[resist]';
+抹>'[smear]';
+抻>'[pull]';
+押>'[mortgage]';
+抽>'[draw out]';
+拂>'[shake off]';
+担>'[carry]';
+拆>'[break up]';
+拇>'[thumb]';
+拈>'[pick up with fingers]';
+拉>'[pull]';
+拊>'[slap]';
+拌>'[mix]';
+拍>'[clap]';
+拏>'[take]';
+拐>'[kidnap]';
+拑>'[to clamp]';
+拒>'[ward off with hand]';
+拓>'[expand]';
+拔>'[uproot]';
+拗>'[obstinate]';
+拘>'[restrain]';
+拙>'[stupid]';
+招>'[beckon]';
+拜>'[do obeisance]';
+拝>'[do obeisance]';
+拠>'[occupy]';
+拡>'[expand]';
+括>'[include]';
+拭>'[wipe away stains with cloth]';
+拮>'[laboring hard]';
+拯>'[help]';
+拱>'[fold hands on breast]';
+拳>'[fist]';
+#"拴>'[bind with rope]'",
+拶>'[press]';
+拷>'[torture and interrogate]';
+拾>'[pick up]';
+拿>'[take]';
+持>'[sustain]';
+挂>'[hang]';
+指>'[finger]';
+挈>'[assist]';
+按>'[put hand on]';
+挌>'[fight]';
+挑>'[load carried on shoulders]';
+挙>'[raise]';
+挟>'[clasp under arm]';
+#"挥>'[direct]'",
+挨>'[near]';
+挫>'[push down]';
+振>'[raise]';
+挺>'[stand upright]';
+挽>'[pull]';
+挾>'[clasp under arm]';
+挿>'[insert]';
+捉>'[grasp]';
+捌>'[break open]';
+捍>'[ward off]';
+捏>'[pick with fingers]';
+捐>'[contribute]';
+捕>'[arrest]';
+捗>'[make progress]';
+捜>'[search]';
+捧>'[hold up in two hands]';
+捨>'[discard]';
+捩>'[twist with hands]';
+捫>'[stoke]';
+据>'[occupy]';
+捲>'[curl]';
+捶>'[strike with stick]';
+捷>'[win]';
+捺>'[press down heavily with fringers]';
+捻>'[twist with fingers]';
+掀>'[lift]';
+掃>'[sweep]';
+授>'[give to]';
+掉>'[turn]';
+掌>'[palm of hand]';
+掎>'[drag aside]';
+掏>'[take out]';
+排>'[row]';
+掖>'[stick in]';
+掘>'[dig]';
+掛>'[hang]';
+#"掟>'[................................]'",
+掠>'[rob]';
+採>'[gather]';
+探>'[find]';
+掣>'[drag]';
+接>'[receive]';
+控>'[accuse]';
+推>'[push]';
+掩>'[cover]';
+措>'[place]';
+掫>'[be on night watch]';
+掬>'[grasp with both hands]';
+#"掱>'[pickpocket]'",
+掴>'[box one''s ears]';
+#"掴>'[box one''s ears]'",
+掻>'[scratch lightly]';
+掾>'[a general designation of officials]';
+揀>'[choose]';
+揃>'[shear]';
+揄>'[lift]';
+揆>'[prime minister]';
+揉>'[rub]';
+描>'[copy]';
+提>'[hold in hand]';
+插>'[insert]';
+揖>'[salute]';
+揚>'[scatter]';
+換>'[change]';
+握>'[grasp]';
+揣>'[put things under clothes]';
+揩>'[rub and wipe]';
+揮>'[direct]';
+援>'[aid]';
+揶>'[make fun of]';
+揺>'[wag]';
+搆>'[pull]';
+損>'[diminish]';
+搏>'[seize]';
+搓>'[trample]';
+搖>'[wag]';
+搗>'[hull]';
+搜>'[search]';
+搦>'[grasp]';
+搨>'[rub]';
+搬>'[transfer]';
+搭>'[join together]';
+搴>'[extract]';
+搶>'[plunder]';
+携>'[lead by hand]';
+搾>'[press]';
+摂>'[take in]';
+摎>'[to strangle]';
+摘>'[pluck]';
+摧>'[destroy]';
+摩>'[rub]';
+摯>'[sincere]';
+摶>'[roll around with hand]';
+摸>'[gently touch with hand]';
+摺>'[fold]';
+撃>'[strike]';
+撈>'[scoop out of water]';
+撒>'[release]';
+撓>'[scratch]';
+撕>'[rip]';
+撚>'[twirl in fingers]';
+撞>'[knock against]';
+撤>'[omit]';
+撥>'[move]';
+撩>'[lift up]';
+撫>'[pat]';
+播>'[sow]';
+撮>'[little bit]';
+撰>'[compose]';
+撲>'[pound]';
+撹>'[disturb]';
+撻>'[flog]';
+撼>'[move]';
+擁>'[embrace]';
+擂>'[rub]';
+擅>'[monopolize]';
+擇>'[select]';
+操>'[conduct]';
+擒>'[catch]';
+擔>'[carry]';
+擘>'[thumb]';
+據>'[occupy]';
+擠>'[crowd]';
+擡>'[carry]';
+擢>'[pull up]';
+擣>'[hull]';
+擦>'[wipe]';
+擧>'[raise]';
+擬>'[draft]';
+擯>'[exclude]';
+擱>'[place]';
+擲>'[throw]';
+擴>'[expand]';
+#"擶>'[................................]'",
+擺>'[put]';
+擽>'[tickle]';
+擾>'[disturb]';
+攀>'[climb]';
+攅>'[save]';
+攘>'[seize]';
+攜>'[lead by hand]';
+攝>'[take in]';
+攣>'[tangled]';
+攤>'[spread out]';
+攪>'[disturb]';
+攫>'[snatch away]';
+攬>'[grasp]';
+支>'[disperse]';
+攴>'[rap]';
+攵>'[rap]';
+收>'[gather together]';
+攷>'[examine]';
+攸>'[distant]';
+改>'[change]';
+攻>'[attack]';
+放>'[put]';
+政>'[government]';
+故>'[ancient]';
+效>'[result]';
+敍>'[express]';
+敏>'[fast]';
+救>'[save]';
+敕>'[an imperial order or decree]';
+敖>'[ramble]';
+敗>'[be defeated]';
+敘>'[express]';
+教>'[teach]';
+敝>'[break]';
+敞>'[roomy]';
+敢>'[dare]';
+散>'[scatter]';
+敦>'[esteem]';
+敬>'[respect]';
+数>'[number]';
+敲>'[strike]';
+整>'[orderly]';
+敵>'[enemy]';
+敷>'[spread]';
+數>'[number]';
+斂>'[draw back]';
+斃>'[kill]';
+文>'[literature]';
+斈>'[learning]';
+斉>'[even]';
+斌>'[refined]';
+斎>'[vegetarian diet]';
+斐>'[graceful]';
+斑>'[mottled]';
+斗>'[chinese peck]';
+料>'[consider]';
+斛>'[dry measure 10 or 5 times of dou]';
+斜>'[slanting]';
+斟>'[pour wine or tea into cup]';
+斡>'[revolve]';
+斤>'[catty]';
+斥>'[scold]';
+斧>'[axe]';
+斫>'[cut]';
+斬>'[cut]';
+断>'[sever]';
+斯>'[this]';
+新>'[new]';
+斷>'[sever]';
+方>'[square]';
+於>'[in]';
+施>'[grant]';
+旁>'[side]';
+旃>'[silk banner with bent pole]';
+旄>'[a kind of ancient flag]';
+旅>'[trip]';
+旆>'[flag ornament]';
+旋>'[revolve]';
+旌>'[banner or flag adorned with feat]';
+族>'[family clan]';
+旒>'[fringes of pearls on crowns]';
+旗>'[banner]';
+旙>'[a pennant]';
+旛>'[a pennant]';
+无>'[negative]';
+旡>'[choke on something eaten]';
+既>'[already]';
+日>'[sun]';
+旦>'[dawn]';
+旧>'[old]';
+旨>'[purpose]';
+早>'[early]';
+旬>'[ten-day period]';
+旭>'[rising sun]';
+旱>'[drought]';
+旺>'[prosper]';
+旻>'[heaven]';
+昂>'[rise]';
+昃>'[afternoon]';
+昆>'[elder brother]';
+昇>'[rise]';
+昊>'[summer time]';
+昌>'[light of sun]';
+明>'[bright]';
+昏>'[dusk]';
+易>'[change]';
+昔>'[formerly]';
+昜>'[to open out]';
+星>'[star]';
+映>'[project]';
+春>'[spring]';
+昧>'[obscure]';
+昨>'[yesterday]';
+昭>'[bright]';
+是>'[indeed]';
+昴>'[one of the 28 constellations]';
+昵>'[intimate]';
+昶>'[a long day. bright. extended. clear]';
+昼>'[daytime]';
+昿>'[extensive]';
+晁>'[morning]';
+時>'[time]';
+晃>'[bright]';
+晄>'[bright]';
+晉>'[advance]';
+晋>'[advance]';
+晏>'[peaceful]';
+晒>'[dry in sun]';
+晝>'[daytime]';
+晞>'[dry]';
+晟>'[clear]';
+晢>'[light of stars]';
+晤>'[have interview with]';
+晦>'[dark]';
+晧>'[daybreak]';
+晨>'[early morning]';
+晩>'[night]';
+普>'[universal]';
+景>'[scenery]';
+晰>'[clear]';
+晴>'[clear weather]';
+晶>'[crystal]';
+智>'[wisdom]';
+暁>'[dawn]';
+#"暂>'[temporary]'",
+暄>'[warm]';
+暇>'[leisure]';
+暈>'[halo in sky]';
+暉>'[sunshine]';
+暎>'[sun beginning decline]';
+暑>'[hot]';
+暖>'[warm]';
+暗>'[dark]';
+暘>'[rising sun]';
+暝>'[dark]';
+暢>'[smoothly]';
+暦>'[calendar]';
+暫>'[temporary]';
+暮>'[evening]';
+暴>'[violent]';
+暸>'[bright]';
+暹>'[rise]';
+暼>'[take fleeting glance at]';
+暾>'[morning sun]';
+曁>'[and]';
+曄>'[bright]';
+曇>'[become cloudy]';
+曉>'[dawn]';
+曖>'[obscure]';
+曙>'[bright]';
+曚>'[twilight just before sun rises]';
+曜>'[glorious]';
+曝>'[sun]';
+曠>'[extensive]';
+曦>'[sunlight]';
+曩>'[in ancient times]';
+曰>'[say]';
+曲>'[crooked]';
+曳>'[trail]';
+更>'[more]';
+曵>'[trail]';
+曷>'[why? what? where?]';
+書>'[book]';
+曹>'[ministry officials]';
+曼>'[long]';
+曽>'[already]';
+曾>'[already]';
+替>'[change]';
+最>'[most]';
+會>'[assemble]';
+月>'[moon]';
+有>'[have]';
+朋>'[friend]';
+服>'[clothes]';
+朏>'[light of crescent moon]';
+朔>'[first day of lunar month]';
+朕>'[pronoun \"i\"]';
+朖>'[clear]';
+朗>'[clear]';
+望>'[look at or forward]';
+朝>'[dynasty]';
+朞>'[full year]';
+期>'[period of time]';
+朦>'[condition or appearance of moon]';
+朧>'[condition or appearance of moon]';
+木>'[tree]';
+未>'[not yet]';
+末>'[final]';
+本>'[root]';
+札>'[letter]';
+朮>'[skill]';
+朱>'[cinnabar]';
+朴>'[simple]';
+朶>'[cluster of flowers]';
+#"朶>'[cluster of flowers]'",
+#"朶>'[cluster of flowers]'",
+机>'[desk]';
+朽>'[decayed]';
+朿>'[stab]';
+#"杀>'[kill]'",
+杆>'[pole]';
+杉>'[various species of pine and fir]';
+李>'[plum]';
+杏>'[apricot]';
+材>'[material]';
+村>'[village]';
+杓>'[handle of cup]';
+杖>'[cane]';
+杙>'[a tiny wooden post]';
+杜>'[stop]';
+杞>'[willow]';
+束>'[bind]';
+杠>'[lever]';
+条>'[clause]';
+杢>'[woodworker]';
+#"杢>'[woodworker]'",
+杤>'[type of oak]';
+来>'[come]';
+杪>'[tip of twig]';
+杭>'[cross stream]';
+杯>'[cup]';
+杰>'[hero]';
+東>'[east]';
+杲>'[bright sun]';
+杳>'[obscure]';
+杵>'[pestle]';
+杷>'[loquat]';
+杼>'[shuttle of loom]';
+松>'[pine tree]';
+板>'[plank]';
+#"枅>'[................................]'",
+枇>'[loquat]';
+枉>'[useless]';
+枋>'[sandalwood]';
+枌>'[variety of elm with small seeds]';
+析>'[split wood]';
+枕>'[pillow]';
+林>'[forest]';
+枚>'[stalk of shrub]';
+果>'[fruit]';
+枝>'[branches]';
+#"枟>'[wood streaks]'",
+#"枟>'[wood streaks]'",
+枢>'[door hinge]';
+#"枦>'[................................]'",
+枩>'[pine tree]';
+枯>'[dried out]';
+枳>'[trifoliate orange]';
+枴>'[cane]';
+架>'[rack]';
+枷>'[cangue scaffold]';
+枸>'[kind of aspen found in sichuan]';
+枹>'[drumstick]';
+柁>'[large tie-beams]';
+柄>'[handle]';
+#"柆>'[................................]'",
+#"柈>'[container]'",
+柎>'[calyx of flower]';
+柏>'[cypress]';
+某>'[certain thing or person]';
+柑>'[tangerine]';
+染>'[dye]';
+柔>'[soft]';
+柘>'[a thorny tree]';
+柚>'[pumelo]';
+柝>'[watchman''s rattle]';
+柞>'[oak]';
+柢>'[root]';
+柤>'[hawthorn]';
+#"柧>'[................................]'",
+柩>'[coffin which contains corpse]';
+柬>'[letter]';
+柮>'[flat pieces of wood]';
+柯>'[axe-handle]';
+柱>'[pillar]';
+柳>'[willow tree]';
+柴>'[firewood]';
+柵>'[fence]';
+査>'[investigate]';
+柾>'[straight grain]';
+柿>'[persimmon]';
+栂>'[a kind of evergreen tree]';
+栃>'[type of oak]';
+栄>'[glory]';
+栓>'[wooden peg]';
+栖>'[perch]';
+栗>'[chestnut tree]';
+栞>'[publication]';
+校>'[school]';
+栢>'[cypress]';
+栩>'[species of oak]';
+株>'[numerary adjunct for trees]';
+栫>'[fence]';
+栲>'[mangrove]';
+栴>'[sandalwood]';
+核>'[seed]';
+根>'[root]';
+格>'[pattern]';
+栽>'[cultivate]';
+桀>'[chicken roost]';
+桁>'[cross-beams of roof]';
+桂>'[cassia or cinnamon]';
+桃>'[peach]';
+框>'[frame]';
+案>'[table]';
+#"桍>'[................................]'",
+桎>'[fetters]';
+桐>'[name applied various trees]';
+桑>'[mulberry tree]';
+桓>'[variety of tree]';
+桔>'[chinese bellflower]';
+#"桙>'[................................]'",
+桜>'[cherry]';
+桝>'[................]';
+#"桝>'[................]'",
+档>'[shelf]';
+桧>'[chinese cypress]';
+桴>'[raft]';
+桶>'[pail]';
+桷>'[rafter]';
+#"桾>'[................................]'",
+桿>'[pole]';
+梁>'[bridge]';
+梃>'[a club]';
+梅>'[plums]';
+梍>'[tree name]';
+梏>'[handcuffs]';
+梓>'[catalpa ovata]';
+梔>'[gardenia]';
+梗>'[stem of flower]';
+#"梘>'[bamboo tube]'",
+條>'[clause]';
+梟>'[owl thus]';
+梠>'[small beam supporting rafters at]';
+梢>'[pointed tip of something long like a branch]';
+梦>'[dream]';
+梧>'[sterculia platanifolia]';
+梨>'[pear]';
+梭>'[weaver''s shuttle]';
+梯>'[ladder]';
+械>'[weapons]';
+梱>'[doorsill]';
+梳>'[comb]';
+梵>'[buddhist]';
+梶>'[oar]';
+梹>'[the areca-nut]';
+#"梹>'[the areca-nut]'",
+梼>'[block of wood]';
+棄>'[reject]';
+#"棆>'[................................]'",
+棉>'[cotton]';
+棊>'[chess]';
+棋>'[chess]';
+棍>'[stick]';
+棒>'[stick]';
+#"棔>'[................................]'",
+棕>'[hemp palm]';
+棗>'[date tree]';
+棘>'[jujube tree]';
+棚>'[tent]';
+棟>'[main beams supporting house]';
+棠>'[crab apple tree]';
+#"棡>'[................................]'",
+棣>'[kerria japonica plant]';
+棧>'[warehouse]';
+森>'[forest]';
+棯>'[jujube tree]';
+棲>'[perch]';
+棹>'[oar]';
+棺>'[coffin]';
+椀>'[bowl]';
+椁>'[outer-coffin]';
+椄>'[to graft]';
+椅>'[chair]';
+椈>'[cedar]';
+椋>'[fruit]';
+椌>'[instrument]';
+植>'[plant]';
+椎>'[hammer]';
+椏>'[the forking branch of a tree]';
+椒>'[pepper]';
+#"椓>'[strike]'",
+#"椚>'[................................]'",
+椛>'[type of birch]';
+検>'[check]';
+#"椡>'[................................]'",
+#"椢>'[................................]'",
+#"椣>'[................................]'",
+#"椥>'[................................]'",
+#"椦>'[................................]'",
+#"椨>'[................................]'",
+椪>'[machilus nanmu]';
+椰>'[palm tree]';
+椴>'[poplar]';
+椶>'[palm tree]';
+椹>'[a chopping board]';
+椽>'[beams]';
+椿>'[father]';
+楊>'[willow]';
+楓>'[maple tree]';
+楔>'[wedge]';
+楕>'[oval-shaped]';
+楙>'[name of plant]';
+楚>'[name of feudal state]';
+#"楜>'[................................]'",
+楝>'[melia japonica]';
+楞>'[used for ceylon in buddhist text]';
+楠>'[name of tree]';
+楡>'[elm tree]';
+楢>'[tinder]';
+楪>'[small dish]';
+楫>'[oar]';
+業>'[profession]';
+楮>'[mulberry]';
+楯>'[shield]';
+楳>'[plums]';
+#"楴>'[................................]'",
+極>'[extreme]';
+楷>'[model style of chinese writing]';
+楸>'[mallotus japonicus]';
+楹>'[column]';
+楼>'[building of two or more stories]';
+楽>'[happy]';
+#"楽>'[happy]'",
+#"榀>'[[not found in dictionary]]'",
+概>'[generally]';
+#"榉>'[type of elm]'",
+榎>'[small evergreen shrub]';
+#"榑>'[................................]'",
+榔>'[betel-nut tree]';
+榕>'[banyan tree]';
+榛>'[hazelnut]';
+榜>'[placard]';
+#"榠>'[................................]'",
+榧>'[type of yew]';
+榮>'[glory]';
+榱>'[rafter]';
+榲>'[pillar]';
+榴>'[pomegranate]';
+榻>'[cot]';
+榾>'[pieces of wood]';
+榿>'[alder]';
+槁>'[wither]';
+槃>'[tray]';
+槇>'[tip of a tree]';
+槊>'[spear]';
+構>'[frame]';
+槌>'[hammer]';
+槍>'[spear]';
+槎>'[raft]';
+槐>'[locust tree]';
+槓>'[lever]';
+様>'[shape]';
+#"様>'[shape]'",
+#"槛>'[threshold]'",
+#"槛>'[threshold]'",
+槧>'[wooden tablet]';
+槨>'[outer-coffin]';
+#"槫>'[................................]'",
+槭>'[maple]';
+槲>'[type of oak]';
+槹>'[spar]';
+槻>'[zelkova tree]';
+槽>'[trough]';
+槿>'[hibiscus]';
+樂>'[happy]';
+樅>'[fir tree]';
+樊>'[a railing]';
+樋>'[tree name]';
+#"樌>'[................................]'",
+#"樒>'[................................]'",
+樓>'[building of two or more stories]';
+#"樓>'[building of two or more stories]'",
+樗>'[kind of tree with useless timber]';
+標>'[mark]';
+樛>'[bending branches]';
+樞>'[door hinge]';
+樟>'[camphor tree]';
+模>'[model]';
+#"樢>'[................................]'",
+樣>'[shape]';
+権>'[power]';
+横>'[across]';
+#"横>'[across]'",
+#"横>'[across]'",
+樵>'[woodcutter]';
+樶>'[c]';
+樸>'[simple]';
+樹>'[tree]';
+樺>'[type of birch]';
+樽>'[goblet]';
+橄>'[olive]';
+橇>'[a sledge for transportation]';
+橈>'[bent or twisted piece of wood]';
+橋>'[bridge]';
+橘>'[orange]';
+橙>'[orange]';
+機>'[machine]';
+橡>'[chestnut oak]';
+橢>'[oval-shaped]';
+橦>'[tree]';
+#"橱>'[cabinet]'",
+#"橵>'[wood placed under roof tiles]'",
+#"橿>'[................................]'",
+檀>'[sandalwood]';
+檄>'[call arms]';
+檍>'[ilex]';
+檎>'[small red apple]';
+檐>'[eaves of house]';
+檗>'[tree]';
+檜>'[chinese cypress]';
+檠>'[stand for lamp]';
+檢>'[check]';
+檣>'[mast]';
+檪>'[chestnut-leaved oak]';
+檬>'[type of locust oracacia]';
+檮>'[block of wood]';
+檳>'[betelnut]';
+檸>'[lemon]';
+檻>'[threshold]';
+#"櫁>'[................................]'",
+櫂>'[oar]';
+櫃>'[cupboard]';
+#"櫑>'[................................]'",
+櫓>'[oar]';
+櫚>'[palm]';
+櫛>'[comb out]';
+櫞>'[citrus]';
+櫟>'[chestnut-leaved oak]';
+櫨>'[supporting block]';
+櫪>'[type of oak]';
+櫺>'[carved or patterned window sills]';
+櫻>'[cherry]';
+欄>'[railing]';
+欅>'[zelkova]';
+權>'[power]';
+欒>'[name of tree]';
+欖>'[olive]';
+欝>'[luxuriant]';
+#"欞>'[the lattice of a window a sill]'",
+欠>'[owe]';
+次>'[order]';
+欣>'[happy]';
+欧>'[translit.: europe]';
+欲>'[desire]';
+欷>'[sob]';
+欸>'[sighs]';
+欹>'[fierce dog]';
+欺>'[cheat]';
+欽>'[respect]';
+款>'[item]';
+歃>'[smear one''s mouth with blood of a victim when taking an oath]';
+歇>'[rest]';
+歉>'[deficient]';
+歌>'[song]';
+歎>'[sigh]';
+歐>'[translit.: europe]';
+歓>'[happy]';
+歔>'[blow through nose]';
+歙>'[to suck]';
+歛>'[draw back]';
+歟>'[final particle used express ques]';
+歡>'[happy]';
+止>'[stop]';
+正>'[right]';
+此>'[this]';
+武>'[military]';
+歩>'[step]';
+歪>'[slant]';
+歯>'[teeth]';
+歳>'[year]';
+歴>'[take place]';
+歸>'[return]';
+歹>'[bad]';
+死>'[die]';
+歿>'[die]';
+殀>'[die young]';
+殃>'[misfortune]';
+殄>'[to end]';
+殆>'[dangerous]';
+殉>'[die for cause]';
+殊>'[different]';
+残>'[injure]';
+殍>'[to starve to death]';
+殕>'[[not found in dictionary]]';
+殖>'[breed]';
+殘>'[injure]';
+殞>'[die]';
+殤>'[die young]';
+殪>'[die]';
+殫>'[utmost]';
+殯>'[encoffin]';
+殱>'[annihilate]';
+殲>'[annihilate]';
+殳>'[name of old weapon]';
+殴>'[beat]';
+段>'[section]';
+殷>'[many]';
+殺>'[kill]';
+殻>'[casing]';
+殼>'[casing]';
+殿>'[hall]';
+毀>'[destroy]';
+毅>'[resolute]';
+毆>'[beat]';
+毋>'[do not]';
+母>'[mother]';
+毎>'[every]';
+毒>'[poison]';
+毓>'[give birth to]';
+比>'[compare]';
+毘>'[help]';
+毛>'[hair]';
+#"毟>'[................................]'",
+毫>'[fine hair]';
+毬>'[ball]';
+毯>'[rug]';
+毳>'[fine hair or fur on animals]';
+氈>'[felt]';
+氏>'[clan]';
+民>'[people]';
+氓>'[people]';
+气>'[steam]';
+気>'[air]';
+氛>'[gas]';
+氣>'[air]';
+氤>'[hanging fog]';
+水>'[water]';
+氷>'[ice]';
+永>'[long]';
+氾>'[overflow]';
+汀>'[sandbar]';
+汁>'[juice]';
+求>'[seek]';
+汎>'[float]';
+汐>'[night tides]';
+汕>'[basket for catching fish]';
+汗>'[perspiration]';
+汚>'[filthy]';
+汝>'[you]';
+汞>'[element mercury]';
+江>'[large river]';
+池>'[pool]';
+#"汢>'[................................]'",
+汨>'[Mi(luo) river in hunan province where Qu Yuan drowned himself]';
+汪>'[vast]';
+汰>'[excessive]';
+汲>'[draw water from well]';
+#"汲>'[draw water from well]'",
+決>'[decide]';
+汽>'[steam]';
+汾>'[river in shanxi province]';
+沁>'[soak into]';
+沂>'[river in southeast shandong flow]';
+沃>'[water]';
+沈>'[sink]';
+沌>'[chaotic]';
+沍>'[freezing]';
+沐>'[bathe]';
+沒>'[not]';
+沓>'[connected]';
+沖>'[pour]';
+沙>'[sand]';
+沚>'[islet in stream]';
+沛>'[abundant]';
+没>'[not]';
+沢>'[marsh]';
+沫>'[froth]';
+沮>'[stop]';
+沱>'[rivers]';
+河>'[river]';
+沸>'[boil]';
+油>'[oil]';
+沺>'[turbulent]';
+治>'[govern]';
+沼>'[lake]';
+沽>'[buy and sell]';
+沾>'[moisten]';
+沿>'[follow course]';
+況>'[condition]';
+泄>'[leak]';
+泅>'[swim]';
+泉>'[spring]';
+泊>'[anchor vessel]';
+泌>'[to seep out]';
+泓>'[clear]';
+法>'[law]';
+泗>'[mucous]';
+泙>'[roar]';
+泛>'[drift]';
+泝>'[go upstream]';
+泡>'[bubbles]';
+波>'[waves]';
+泣>'[cry]';
+泥>'[mud]';
+注>'[concentrate]';
+泪>'[tears]';
+泯>'[destroy]';
+泰>'[great]';
+泱>'[great]';
+泳>'[dive]';
+洋>'[ocean]';
+洌>'[clear]';
+洒>'[sprinkle]';
+洗>'[wash]';
+洙>'[name of a river in shandong]';
+洛>'[river in shaanxi province]';
+洞>'[cave]';
+洟>'[snivel]';
+津>'[ferry]';
+洩>'[leak]';
+洪>'[vast]';
+洫>'[to ditch]';
+洲>'[continent]';
+洳>'[damp]';
+洵>'[true]';
+洶>'[the rush of water]';
+洸>'[sparkle]';
+活>'[live]';
+洽>'[spread]';
+派>'[school of thought]';
+流>'[flow]';
+浄>'[pure]';
+浅>'[shallow]';
+浙>'[zhejiang province]';
+浚>'[dredge]';
+浜>'[creek]';
+浣>'[to wash]';
+浤>'[beating of ocean]';
+浦>'[bank of river]';
+浩>'[great]';
+浪>'[wave]';
+浬>'[nautical mile]';
+浮>'[float]';
+浴>'[bathe]';
+海>'[sea]';
+浸>'[soak]';
+浹>'[saturate]';
+涅>'[blacken]';
+消>'[vanish]';
+涌>'[surge up]';
+涎>'[saliva]';
+涓>'[brook]';
+涕>'[tear]';
+涙>'[tears]';
+涛>'[large waves]';
+涜>'[ditch]';
+涯>'[shore]';
+液>'[sap]';
+涵>'[soak]';
+涸>'[dried up]';
+涼>'[cool]';
+淀>'[shallow water]';
+淅>'[water used wash rice]';
+淆>'[confused]';
+淇>'[river in henan province]';
+淋>'[drip]';
+淌>'[trickle]';
+淑>'[good]';
+淒>'[bitter cold]';
+#"淕>'[................................]'",
+淘>'[wash in sieve]';
+淙>'[gurgling sound of water]';
+淞>'[name of a river in Jiangsu]';
+淡>'[weak]';
+淤>'[mud]';
+淦>'[river in jiangxi province: water]';
+淨>'[pure]';
+淪>'[be lost]';
+淫>'[obscene]';
+淬>'[temper]';
+淮>'[river in anhui province]';
+深>'[deep]';
+淳>'[cyanogen]';
+淵>'[gulf]';
+混>'[mix]';
+淹>'[drown]';
+淺>'[shallow]';
+添>'[append]';
+清>'[clear]';
+渇>'[thirsty]';
+済>'[help]';
+渉>'[ford stream]';
+渊>'[surge up]';
+渋>'[astringent]';
+渓>'[mountain stream]';
+渕>'[surge up]';
+渙>'[scatter]';
+渚>'[small sand bank]';
+減>'[decrease]';
+渝>'[change]';
+渟>'[(of water) not flowing]';
+渠>'[ditch]';
+渡>'[cross]';
+渣>'[refuse]';
+渤>'[swelling]';
+渥>'[moisten]';
+渦>'[swirl]';
+温>'[lukewarm]';
+渫>'[beating of ocean]';
+測>'[measure]';
+渭>'[name of a river in shaanxi]';
+渮>'[river in shandong province]';
+港>'[port]';
+游>'[swim]';
+渺>'[endlessly long]';
+渾>'[muddy]';
+湃>'[sound of waves]';
+湊>'[piece together]';
+湍>'[rapid water current]';
+湎>'[flushed with drink]';
+湖>'[lake]';
+湘>'[hunan province]';
+湛>'[deep]';
+湟>'[river in qinghai province]';
+湧>'[well up]';
+湫>'[a small pond]';
+湮>'[bury]';
+湯>'[hot water]';
+湲>'[flow]';
+#"湳>'[[not found in dictionary]]'",
+湾>'[bay]';
+湿>'[wet]';
+#"湿>'[wet]'",
+#"湿>'[wet]'",
+溌>'[pour]';
+溏>'[pool]';
+源>'[spring]';
+準>'[rule]';
+溘>'[abruptly]';
+溜>'[slide]';
+溝>'[ditch]';
+溟>'[drizzling rain]';
+溢>'[overflow]';
+溥>'[big]';
+溪>'[mountain stream]';
+溯>'[go upstream]';
+溲>'[urinate]';
+溶>'[melt]';
+溷>'[privy]';
+溺>'[drown]';
+溽>'[moist]';
+滂>'[torrential]';
+滄>'[blue]';
+滅>'[extinguish]';
+滉>'[deep]';
+滋>'[grow]';
+滌>'[wash]';
+滑>'[slip]';
+滓>'[sediment]';
+滔>'[overflow]';
+滕>'[<arch> county in shandong province]';
+滝>'[raining]';
+滞>'[block up]';
+滬>'[shanghai]';
+滯>'[block up]';
+滲>'[soak through]';
+滴>'[drip]';
+滷>'[thick gravy]';
+滸>'[riverbank]';
+滾>'[turn]';
+滿>'[fill]';
+漁>'[to fish]';
+漂>'[float]';
+漆>'[varnish]';
+漉>'[filter]';
+漏>'[leak]';
+漑>'[water]';
+漓>'[river in guangxi province]';
+演>'[perform]';
+漕>'[transport by water]';
+漠>'[desert]';
+漢>'[chinese people]';
+漣>'[flowing water]';
+漫>'[overflow of water]';
+漬>'[soak]';
+漱>'[gargle]';
+漲>'[rise in price]';
+漸>'[gradually]';
+漾>'[overflow]';
+漿>'[any thick fluid]';
+潁>'[river in anhui]';
+潅>'[pour]';
+潔>'[clean]';
+潘>'[surname]';
+潛>'[hide]';
+潜>'[hide]';
+潟>'[land inundated with salt from ti]';
+潤>'[soft]';
+潦>'[to flood]';
+潭>'[deep pool]';
+潮>'[tide]';
+潯>'[steep bank by stream]';
+潰>'[flooding river]';
+潴>'[pond]';
+潸>'[weep]';
+潺>'[sound of flowing water]';
+潼>'[high]';
+澀>'[astringent]';
+澁>'[astringent]';
+澂>'[clear and still water]';
+澄>'[purify water by allowing sedimen]';
+澆>'[spray]';
+澎>'[splatter]';
+澑>'[slide]';
+澗>'[brook]';
+澡>'[wash]';
+澣>'[cleanse]';
+澤>'[marsh]';
+#"澪>'[................................]'",
+澱>'[sediment]';
+澳>'[inlet]';
+澹>'[calm]';
+激>'[arouse]';
+濁>'[muddy]';
+濂>'[waterfall]';
+濃>'[thick]';
+濆>'[river bank]';
+濔>'[many]';
+濕>'[wet]';
+濘>'[mud]';
+濛>'[drizzling]';
+濟>'[help]';
+濠>'[moat]';
+濡>'[immerse]';
+濤>'[large waves]';
+濫>'[flood]';
+濬>'[dredge]';
+濮>'[county in Henan province]';
+濯>'[wash out]';
+濱>'[beach]';
+濳>'[hide]';
+濶>'[broad]';
+濺>'[sprinkle]';
+濾>'[strain out]';
+瀁>'[waves]';
+瀉>'[drain off]';
+瀋>'[juice]';
+瀏>'[clear]';
+瀑>'[waterfall]';
+瀕>'[approach]';
+瀘>'[river in jiangxi province]';
+瀚>'[vast]';
+瀛>'[sea]';
+瀝>'[trickle]';
+瀞>'[pool in a river]';
+瀟>'[sound of beating wind and rain]';
+瀦>'[pond]';
+瀧>'[raining]';
+瀬>'[swift current]';
+瀰>'[overflow]';
+瀲>'[waves]';
+瀾>'[overflowing]';
+灌>'[pour]';
+灑>'[sprinkle]';
+灘>'[bank]';
+灣>'[bay]';
+火>'[fire]';
+灯>'[lantern]';
+灰>'[ashes]';
+灸>'[cauterize with moxa]';
+灼>'[burn]';
+災>'[calamity]';
+炉>'[fireplace]';
+炊>'[cook]';
+炎>'[flame]';
+炒>'[fry]';
+炙>'[roast]';
+炬>'[torch]';
+炭>'[charcoal]';
+炮>'[large gun]';
+炯>'[bright]';
+炳>'[bright]';
+炸>'[fry in oil]';
+点>'[dot]';
+為>'[do]';
+烈>'[fiery]';
+烋>'[boast]';
+烏>'[crow]';
+烙>'[brand]';
+烝>'[rise]';
+烟>'[smoke]';
+烱>'[bright]';
+烹>'[boil]';
+烽>'[signal fire]';
+焉>'[thereupon]';
+焔>'[flame]';
+焙>'[dry over slow fire]';
+焚>'[burn]';
+焜>'[fire]';
+無>'[negative]';
+焦>'[burned]';
+然>'[yes]';
+焼>'[burn]';
+煉>'[smelt]';
+煌>'[bright]';
+煎>'[fry in fat or oil]';
+煕>'[bright]';
+煖>'[warm]';
+煙>'[smoke]';
+煢>'[alone]';
+煤>'[coal]';
+煥>'[shining]';
+煦>'[kind]';
+照>'[shine]';
+煩>'[bother]';
+煬>'[roast]';
+煮>'[cook]';
+煽>'[stir up]';
+熄>'[put out]';
+熈>'[bright]';
+熊>'[bear]';
+熏>'[smoke]';
+熔>'[melt]';
+#"熕>'[................................]'",
+熙>'[bright]';
+熟>'[well cooked]';
+熨>'[iron]';
+熬>'[cook down]';
+熱>'[hot]';
+熹>'[dim light]';
+熾>'[burning hot]';
+燃>'[burn]';
+燈>'[lantern]';
+燉>'[heat with fire]';
+燎>'[burn]';
+燐>'[phosphorus]';
+燒>'[burn]';
+燔>'[to roast]';
+燕>'[swallow (bird)]';
+#"燗>'[................................]'",
+營>'[encampment]';
+燠>'[warm]';
+燥>'[dry]';
+燦>'[vivid]';
+燧>'[flintstone]';
+燬>'[burn down]';
+燭>'[candle]';
+燮>'[harmonize]';
+#"燵>'[................................]'",
+燹>'[fire]';
+燻>'[smoke]';
+燼>'[cinders]';
+燿>'[shine]';
+爆>'[crackle]';
+爍>'[shine]';
+爐>'[fireplace]';
+爛>'[rotten]';
+爨>'[oven]';
+爪>'[claw]';
+爬>'[crawl]';
+爭>'[dispute]';
+爰>'[lead on to]';
+爲>'[do]';
+爵>'[feudal title or rank]';
+父>'[father]';
+爺>'[father]';
+爻>'[diagrams for divination]';
+爼>'[chopping board or block]';
+爽>'[happy]';
+爾>'[you]';
+爿>'[half of tree trunk]';
+牀>'[bed]';
+牆>'[wall]';
+片>'[slice]';
+版>'[printing blocks]';
+牋>'[memorandum]';
+牌>'[signboard]';
+牒>'[documents]';
+牘>'[writing tablet]';
+牙>'[tooth]';
+牛>'[cow]';
+牝>'[female of species]';
+牟>'[make]';
+牡>'[male of animals]';
+牢>'[prison]';
+牧>'[tend cattle]';
+物>'[thing]';
+牲>'[sacrificial animal]';
+牴>'[gore]';
+特>'[special]';
+牽>'[drag]';
+牾>'[to oppose]';
+犀>'[rhinoceros]';
+犁>'[plow]';
+犂>'[plow]';
+犇>'[run fast]';
+犒>'[entertain victorious soldiers]';
+犖>'[brindled ox]';
+犠>'[sacrifice]';
+犢>'[calf]';
+犧>'[sacrifice]';
+犬>'[dog]';
+犯>'[commit crime]';
+犲>'[wolf]';
+状>'[form]';
+犹>'[like]';
+狂>'[insane]';
+狃>'[to covet]';
+狄>'[tribe from northern china]';
+狆>'[pekinese dog]';
+狎>'[be familiar with]';
+狐>'[species of fox]';
+狒>'[baboon]';
+狗>'[dog]';
+狙>'[ape]';
+#"狛>'[................................]'",
+狠>'[vicious]';
+狡>'[cunning]';
+狢>'[animal name]';
+狩>'[winter hunting]';
+独>'[alone]';
+狭>'[narrow]';
+狷>'[rash]';
+狸>'[fox]';
+狹>'[narrow]';
+狼>'[wolf]';
+狽>'[legendary animal with short fore]';
+猊>'[lion]';
+猖>'[mad]';
+猗>'[exclamation of admiration]';
+猛>'[violent]';
+猜>'[guess]';
+猝>'[abruptly]';
+猟>'[hunt]';
+猥>'[vulgar]';
+猩>'[species of orangutan]';
+猪>'[pig]';
+猫>'[cat]';
+献>'[offer]';
+#"猯>'[................................]'",
+猴>'[monkey]';
+猶>'[like]';
+猷>'[plan]';
+猾>'[crafty]';
+猿>'[ape]';
+獄>'[prison]';
+獅>'[lion]';
+獎>'[prize]';
+獏>'[the panther]';
+獗>'[unruly]';
+獣>'[beast]';
+獨>'[alone]';
+獪>'[sly]';
+獰>'[ferocious appearance]';
+獲>'[obtain]';
+獵>'[hunt]';
+獸>'[beast]';
+獺>'[otter]';
+獻>'[offer]';
+玄>'[deep]';
+率>'[to lead]';
+玉>'[jade]';
+王>'[king]';
+玖>'[black-colored jade]';
+玩>'[play with]';
+玲>'[tinkling of jade]';
+玳>'[tortoise shell]';
+玻>'[glass]';
+珀>'[amber]';
+珂>'[inferior kind of jade]';
+珈>'[ornament attached woman''s hairpi]';
+珊>'[coral]';
+珍>'[precious]';
+珎>'[precious]';
+珞>'[kind of necklace]';
+珠>'[precious stone]';
+珥>'[ear ornament]';
+珪>'[jade table conferred upon feudal]';
+班>'[class]';
+珮>'[jade ornament]';
+珱>'[necklace made of precious stones]';
+#"珸>'[................................]'",
+現>'[appear]';
+球>'[ball]';
+琅>'[variety of white carnelian]';
+理>'[reason]';
+琉>'[sparkling stone]';
+琢>'[polish jade]';
+琥>'[jewel in shape of tiger]';
+琲>'[necklace]';
+琳>'[beautiful jade]';
+琴>'[chinese lute or guitar]';
+琵>'[guitar-like instrument]';
+琶>'[guitar-like instrument]';
+琺>'[enamel]';
+琿>'[bright]';
+瑁>'[fine piece of jade]';
+瑕>'[flaw in gem]';
+瑙>'[agate]';
+瑚>'[coral]';
+瑛>'[luster of gem]';
+瑜>'[flawless gem or jewel]';
+瑞>'[felicitous omen]';
+瑟>'[large stringed musical instrument]';
+瑠>'[precious stone]';
+瑣>'[fragments]';
+瑤>'[precious jade]';
+瑩>'[lustre of gems]';
+瑪>'[agate]';
+瑯>'[kind of white cornelian]';
+瑰>'[extraordinary]';
+瑳>'[luster of gem]';
+瑶>'[precious jade]';
+瑾>'[brilliance of gems]';
+璃>'[glass]';
+璋>'[jade plaything]';
+璞>'[unpolished gem]';
+璢>'[precious stone]';
+璧>'[piece of jade with hole in it]';
+環>'[jade ring or bracelet]';
+璽>'[imperial signet]';
+瓊>'[jade]';
+瓏>'[gem cut like dragon]';
+瓔>'[necklace made of precious stones]';
+瓜>'[melon]';
+瓠>'[bottle gourd]';
+瓢>'[ladle made from dried gourd]';
+瓣>'[petal]';
+瓦>'[tile]';
+瓧>'[decagram]';
+瓩>'[kilowatt]';
+瓮>'[earthen jar]';
+瓰>'[[not found in dictionary]]';
+瓱>'[milligram]';
+#"瓲>'[................................]'",
+瓶>'[jug]';
+瓷>'[crockery]';
+瓸>'[hectogram]';
+甃>'[brick wall of a well]';
+甄>'[examine]';
+甅>'[centigram]';
+甌>'[bowl]';
+甍>'[rafters supporting roof tiles]';
+甎>'[brick]';
+甑>'[boiler for steaming rice]';
+甓>'[glazed tiles]';
+甕>'[earthen jar]';
+甘>'[sweetness]';
+甚>'[great extent]';
+甜>'[sweet]';
+甞>'[taste]';
+生>'[life]';
+産>'[give birth]';
+甥>'[sister''s child]';
+甦>'[be reborn]';
+用>'[use]';
+甫>'[begin]';
+甬>'[path]';
+田>'[field]';
+由>'[cause]';
+甲>'[armor]';
+申>'[to state to a superior]';
+男>'[male]';
+甸>'[suburbs of capital]';
+町>'[raised path between fields]';
+画>'[painting]';
+甼>'[raised path between fields]';
+畄>'[stop]';
+畆>'[chinese land measure]';
+#"畉>'[................................]'",
+畊>'[plow]';
+畋>'[till land]';
+界>'[boundary]';
+#"畍>'[................................]'",
+畏>'[fear]';
+畑>'[dry (as opposed to rice) field]';
+畔>'[boundary path dividing fields]';
+留>'[stop]';
+畚>'[straw basket]';
+畛>'[border]';
+畜>'[livestock]';
+畝>'[chinese land measure]';
+畠>'[garden]';
+畢>'[end]';
+畤>'[place for worshipping the haven]';
+略>'[approximately]';
+畦>'[sections in vegetable farm]';
+畧>'[approximately]';
+#"畩>'[................................]'",
+番>'[take turns]';
+畫>'[delineate]';
+#"畭>'[................................]'",
+異>'[different]';
+畳>'[repeat]';
+畴>'[farmland]';
+當>'[bear]';
+畷>'[raised path between fields]';
+畸>'[odd]';
+畿>'[imperial domain]';
+疂>'[repeat]';
+疆>'[boundary]';
+疇>'[farmland]';
+疉>'[repeat]';
+疊>'[repeat]';
+疋>'[roll]';
+疎>'[neglect]';
+疏>'[neglect]';
+疑>'[doubt]';
+疔>'[carbuncle]';
+疚>'[chronic disease]';
+疝>'[hernia]';
+疣>'[wart]';
+疥>'[scabies]';
+疫>'[epidemic]';
+疱>'[acne]';
+疲>'[feel tired]';
+疳>'[childhood diseases]';
+疵>'[flaw]';
+疸>'[jaundice]';
+疹>'[measles]';
+疼>'[aches]';
+疽>'[ulcer]';
+疾>'[illness]';
+痂>'[scab]';
+痃>'[indigestion]';
+病>'[illness]';
+症>'[disease]';
+痊>'[be healed]';
+痍>'[wound]';
+痒>'[itch]';
+痔>'[hemorrhoids]';
+痕>'[scar]';
+痘>'[smallpox]';
+痙>'[convulsions]';
+痛>'[pain]';
+痞>'[dyspepsia]';
+痢>'[dysentry]';
+痣>'[spots]';
+痩>'[thin]';
+痰>'[phlegm]';
+痲>'[pock-marked]';
+痳>'[pock-marked]';
+痴>'[foolish]';
+痺>'[paralysis]';
+痼>'[chronic disease]';
+痾>'[chronic illness]';
+痿>'[paralysis]';
+瘁>'[feel tired]';
+瘉>'[get well]';
+瘋>'[crazy]';
+瘍>'[ulcers]';
+瘟>'[epidemic]';
+瘠>'[thin]';
+瘡>'[tumor]';
+瘢>'[scar]';
+瘤>'[tumor]';
+瘧>'[intermittent fever]';
+瘰>'[scrofula]';
+瘴>'[malaria pestilential vapors]';
+瘻>'[fistula]';
+療>'[be healed]';
+癆>'[consumption]';
+癇>'[epilepsy]';
+癈>'[abrogate]';
+癌>'[cancer]';
+癒>'[get well]';
+癖>'[craving]';
+癘>'[sore]';
+癜>'[erythema]';
+癡>'[silly]';
+癢>'[itch]';
+癧>'[scrofulous lumps or swellings]';
+癨>'[quickly]';
+癩>'[leprosy]';
+癪>'[spasms]';
+癬>'[ringworms]';
+癰>'[carbuncle]';
+癲>'[crazy]';
+癶>'[legs]';
+癸>'[last of ten celestial stems]';
+発>'[issue]';
+登>'[rise]';
+發>'[issue]';
+白>'[white]';
+百>'[one hundred]';
+皀>'[kernel]';
+皃>'[countenance]';
+的>'[possessive]';
+皆>'[all]';
+皇>'[royal]';
+皈>'[follow]';
+皋>'[the high land along a river]';
+皎>'[white]';
+皐>'[the high land along a river]';
+皓>'[bright]';
+皖>'[anhui province]';
+皙>'[white]';
+皚>'[brilliant white]';
+皮>'[skin]';
+皰>'[pimples]';
+皴>'[chapped]';
+皷>'[drum]';
+皸>'[crack]';
+皹>'[crack]';
+皺>'[wrinkles]';
+皿>'[shallow container]';
+盂>'[basin]';
+盃>'[glass]';
+盆>'[basin]';
+盈>'[fill]';
+益>'[profit]';
+盍>'[what? why not? correspond]';
+盒>'[small box or case]';
+盖>'[cover]';
+盗>'[rob]';
+盛>'[abundant]';
+盜>'[rob]';
+盞>'[small cup or container]';
+盟>'[swear]';
+盡>'[exhaust]';
+監>'[supervise]';
+盤>'[tray]';
+盥>'[wash]';
+盧>'[cottage]';
+盪>'[to toss about]';
+目>'[eye]';
+盲>'[blind]';
+直>'[straight]';
+相>'[mutual]';
+盻>'[glare]';
+盾>'[shield]';
+省>'[province]';
+眄>'[to look askance]';
+眇>'[blind in one eye]';
+眈>'[gloat]';
+眉>'[eyebrows]';
+看>'[look]';
+県>'[county]';
+眛>'[dim]';
+#"眞>'[real]'",
+真>'[real]';
+眠>'[close eyes]';
+#"眤>'[................................]'",
+眥>'[eye sockets]';
+眦>'[corner of the eyes]';
+眩>'[confuse]';
+眷>'[take interest in]';
+眸>'[pupil of eye]';
+眺>'[look at]';
+眼>'[eye]';
+着>'[make move]';
+睇>'[look at]';
+睚>'[corner of eye]';
+睛>'[eyeball]';
+睡>'[sleep]';
+督>'[supervise]';
+睥>'[look askance at]';
+睦>'[friendly]';
+睨>'[look askance at]';
+睫>'[eyelashes]';
+睹>'[look at]';
+睾>'[testicle]';
+睿>'[shrewd]';
+瞋>'[glare with anger]';
+瞎>'[blind]';
+瞑>'[close eyes]';
+瞞>'[deceive]';
+瞠>'[look at]';
+瞥>'[take fleeting glance at]';
+瞬>'[wink]';
+瞭>'[bright]';
+瞰>'[watch]';
+瞳>'[pupil of eye]';
+瞶>'[dim]';
+#"瞶>'[dim]'",
+瞻>'[look]';
+瞼>'[eyelid]';
+瞽>'[blind]';
+瞿>'[surname]';
+矇>'[stupid]';
+矍>'[look about in firght or alarm]';
+矗>'[straight]';
+矚>'[watch carefully]';
+矛>'[spear]';
+矜>'[pity]';
+矢>'[arrow]';
+矣>'[particle of completed action]';
+知>'[know]';
+矧>'[much more]';
+矩>'[carpenter''s square]';
+短>'[short]';
+矮>'[short]';
+矯>'[correct]';
+石>'[stone]';
+矼>'[stone bridge]';
+砂>'[sand]';
+砌>'[stone steps]';
+砒>'[arsenic]';
+研>'[grind]';
+砕>'[break]';
+砠>'[rocky]';
+砥>'[whetstone]';
+砦>'[stockade]';
+砧>'[anvil]';
+砲>'[gun]';
+破>'[break]';
+砺>'[whetstone]';
+砿>'[mine]';
+硅>'[silicon]';
+硝>'[saltpeter]';
+硫>'[sulfur]';
+硬>'[hard]';
+硯>'[inkstone]';
+#"硲>'[................................]'",
+#"硴>'[................................]'",
+硼>'[borax]';
+碁>'[chess]';
+碆>'[arrow-tip]';
+碇>'[anchor]';
+碌>'[rough]';
+碍>'[obstruct]';
+碎>'[break]';
+碑>'[stone tablet]';
+碓>'[pestle]';
+#"碕>'[................................]'",
+碗>'[bowl]';
+碚>'[suburb]';
+碣>'[stone tablet]';
+碧>'[jade]';
+碩>'[great]';
+碪>'[stone slab used for washing clot]';
+碯>'[agate]';
+#"碵>'[................................]'",
+確>'[sure]';
+碼>'[number]';
+碾>'[roller]';
+磁>'[magnetic]';
+磅>'[pound]';
+#"磆>'[................................]'",
+磊>'[pile of rocks or stones]';
+磋>'[polish]';
+磐>'[large rock]';
+磑>'[stone mill]';
+磔>'[downward stroke slanting righ]';
+磚>'[tile]';
+磧>'[sand and gravel]';
+磨>'[grind]';
+磬>'[musical instrument]';
+磯>'[jetty]';
+磴>'[steps on ledge]';
+磽>'[barren land]';
+礁>'[reef]';
+#"礇>'[................................]'",
+礎>'[foundation stone]';
+#"礎>'[foundation stone]'",
+#"礒>'[................................]'",
+礙>'[obstruct]';
+礦>'[mine]';
+礪>'[whetstone]';
+礫>'[gravel]';
+礬>'[alum]';
+示>'[show]';
+礼>'[social custom]';
+社>'[god of the soil and altars to him]';
+祀>'[to sacrifice]';
+祁>'[pray]';
+祇>'[only]';
+祈>'[pray]';
+祉>'[happiness]';
+祐>'[divine intervention]';
+祓>'[exorcise]';
+祕>'[mysterious]';
+祖>'[ancestor]';
+祗>'[respect]';
+祚>'[throne]';
+祝>'[pray for happiness or blessings]';
+神>'[spirit]';
+祟>'[evil spirit]';
+祠>'[ancestral temple]';
+祢>'[one''s deceased father]';
+祥>'[good luck]';
+票>'[slip of paper or bamboo]';
+祭>'[sacrifice to]';
+祷>'[pray]';
+祺>'[good luck]';
+祿>'[blessing]';
+禀>'[report to]';
+禁>'[restrict]';
+禄>'[blessing]';
+禅>'[meditation]';
+禊>'[semi-annual ceremony of purifica]';
+禍>'[misfortune]';
+禎>'[lucky]';
+福>'[happiness]';
+禝>'[[not found in dictionary]]';
+禦>'[defend]';
+禧>'[happiness]';
+禪>'[meditation]';
+禮>'[social custom]';
+禰>'[one''s deceased father]';
+禳>'[pray or sacrifice]';
+禹>'[legendary hsia dynasty founder]';
+禺>'[district]';
+禽>'[birds]';
+禾>'[grain still on stalk]';
+禿>'[bald]';
+秀>'[ear of grain]';
+私>'[private]';
+秉>'[grasp]';
+秋>'[autumn]';
+科>'[section]';
+秒>'[beard of grain or corn]';
+秕>'[empty grain or rice husk]';
+秘>'[secret]';
+租>'[rent]';
+#"秡>'[................................]'",
+秣>'[fodder]';
+秤>'[balance]';
+秦>'[feudal state of qin]';
+秧>'[rice seedlings]';
+秩>'[order]';
+秬>'[black millet]';
+称>'[call]';
+移>'[change place]';
+稀>'[rare]';
+稈>'[stalk of grain]';
+程>'[journey]';
+稍>'[little]';
+税>'[taxes]';
+稔>'[ripe grain]';
+稗>'[darnels]';
+#"稘>'[................................]'",
+稙>'[grain ready for grinding]';
+稚>'[young]';
+稜>'[corner]';
+稟>'[report to]';
+稠>'[dense]';
+種>'[seed]';
+稱>'[call]';
+稲>'[rice growing in field]';
+稷>'[god of cereals]';
+稻>'[rice growing in field]';
+稼>'[sow grain]';
+稽>'[examine]';
+稾>'[draft]';
+稿>'[draft]';
+穀>'[corn]';
+穂>'[ear of grain]';
+#"穃>'[................................]'",
+穆>'[majestic]';
+穉>'[young grain]';
+積>'[accumulate]';
+穎>'[rice tassel]';
+#"穎>'[rice tassel]'",
+穐>'[fall]';
+穗>'[ear of grain]';
+穡>'[farm]';
+穢>'[dirty]';
+穣>'[stalks of grain]';
+穩>'[stable]';
+穫>'[harvest]';
+穰>'[stalks of grain]';
+穴>'[cave]';
+究>'[examine]';
+穹>'[high and vast]';
+空>'[empty]';
+穽>'[hole]';
+穿>'[penetrate]';
+突>'[suddenly]';
+窃>'[secretly]';
+窄>'[narrow]';
+窈>'[obscure]';
+窒>'[stop up]';
+窓>'[window]';
+窕>'[slender]';
+窖>'[pit]';
+窗>'[window]';
+窘>'[embrassassed]';
+窟>'[hole]';
+窩>'[nest]';
+窪>'[hollow]';
+窮>'[poor]';
+窯>'[kiln]';
+窰>'[kiln]';
+窶>'[poor]';
+窺>'[peep]';
+窿>'[mine shaft]';
+竃>'[furnace]';
+竄>'[run away]';
+竅>'[hole]';
+竇>'[surname]';
+竈>'[furnace]';
+竊>'[secretly]';
+立>'[stand]';
+竍>'[decaliter]';
+竏>'[kiloliter]';
+竒>'[strange]';
+竓>'[milliliter]';
+竕>'[deciliter]';
+站>'[stand up]';
+竚>'[stand and wait for long time]';
+竜>'[dragon]';
+竝>'[combine]';
+竟>'[finally]';
+章>'[composition]';
+竡>'[hectoliter]';
+竢>'[wait for]';
+竣>'[terminate]';
+童>'[child]';
+竦>'[revere]';
+竪>'[perpendicular]';
+竭>'[put forth great effort]';
+端>'[end]';
+竰>'[centiliter]';
+競>'[contend]';
+竸>'[contend]';
+竹>'[bamboo]';
+竺>'[india]';
+竿>'[bamboo pole]';
+#"笂>'[................................]'",
+笄>'[hairpin]';
+笆>'[bamboo fence]';
+笈>'[bamboo box used carry books]';
+笊>'[ladle]';
+笋>'[bamboo shoots]';
+笏>'[tablet held by someone having au]';
+笑>'[smile]';
+#"笘>'[................................]'",
+笙>'[small gourd-shaped musical instrument]';
+笛>'[bamboo flute]';
+笞>'[bamboo rod used for beatings]';
+笠>'[bamboo hat]';
+笥>'[a hamper]';
+符>'[i.d. tag]';
+笨>'[foolish]';
+第>'[sequence]';
+笳>'[a reed leaf whistle]';
+笵>'[a bamboo form]';
+#"笶>'[................................]'",
+笹>'[small bamboo]';
+筅>'[bamboo brush]';
+筆>'[writing brush]';
+筈>'[arrow end]';
+等>'[rank]';
+筋>'[muscles]';
+筌>'[bamboo fish trap]';
+筍>'[bamboo shoot]';
+筏>'[raft]';
+筐>'[bamboo basket or chest]';
+筑>'[ancient lute]';
+筒>'[thick piece of bamboo]';
+答>'[answer]';
+策>'[scheme]';
+筝>'[stringed musical instrument]';
+筥>'[round-shaped bamboo basket for]';
+筧>'[bamboo water pipe]';
+筬>'[reed of a loom]';
+筮>'[divination with stalks of plants]';
+筰>'[cable]';
+筱>'[dwarf bamboo]';
+筴>'[type of grass used in divination]';
+筵>'[bamboo mat]';
+筺>'[bamboo basket or chest]';
+箆>'[fine-toothed comb]';
+箇>'[numerary adjunct]';
+箋>'[note]';
+箍>'[hoop]';
+箏>'[stringed musical instrument]';
+箒>'[broom]';
+箔>'[reed screen]';
+箕>'[sieve]';
+算>'[count]';
+箘>'[fine bamboo]';
+箙>'[quiver]';
+箚>'[brief note]';
+箜>'[ancient string music instrument]';
+箝>'[tweezers]';
+#"箟>'[................................]'",
+管>'[pipe]';
+箪>'[small bamboo basket for holding]';
+箭>'[arrow]';
+箱>'[case]';
+箴>'[needle]';
+箸>'[chopsticks]';
+節>'[knot]';
+篁>'[bamboo grove]';
+範>'[pattern]';
+篆>'[seal script]';
+篇>'[chapter]';
+築>'[build]';
+篋>'[ratton box]';
+篌>'[ancient music instrument]';
+篏>'[inlay]';
+篝>'[bamboo basket]';
+篠>'[dwarf bamboo]';
+篤>'[deep]';
+篥>'[bulgle]';
+篦>'[fine-toothed comb]';
+篩>'[sieve]';
+篭>'[cage]';
+篳>'[wicker]';
+#"篶>'[................................]'",
+篷>'[awning]';
+簀>'[bed mat]';
+簇>'[swarm]';
+簍>'[bamboo basket]';
+簑>'[a coir raincoat]';
+簒>'[usurp]';
+#"簓>'[................................]'",
+簔>'[a coir raincoat]';
+#"簗>'[................................]'",
+簟>'[bamboo mat]';
+簡>'[simple]';
+簣>'[bamboo basket for carrying earth]';
+簧>'[reed of woodwind instrument]';
+簪>'[hairpin]';
+簫>'[musical instrument like pan-pipes]';
+簷>'[eaves of house]';
+簸>'[winnower]';
+簽>'[sign]';
+簾>'[a blind]';
+簿>'[register]';
+籀>'[recite]';
+籃>'[basket]';
+籌>'[chip]';
+籍>'[record]';
+籏>'[flag]';
+籐>'[climbing plants]';
+籔>'[bamboo basket]';
+籖>'[tally]';
+籘>'[climbing plants]';
+籟>'[bamboo flute]';
+籠>'[cage]';
+籤>'[tally]';
+籥>'[key]';
+籬>'[bamboo or wooden fence]';
+米>'[hulled or husked uncooked rice]';
+籵>'[dm]';
+籾>'[unhulled rice]';
+粁>'[km]';
+粂>'[surname]';
+粃>'[empty husks of grain]';
+粉>'[powder]';
+粋>'[pure]';
+粍>'[mm]';
+#"粐>'[................................]'",
+粒>'[grain]';
+粕>'[lees]';
+粗>'[rough]';
+粘>'[viscous]';
+粛>'[pay respects]';
+粟>'[unhusked millet]';
+#"粡>'[................................]'",
+粢>'[grain offered in ritual sacrific]';
+粤>'[Guangdong and Guangxi provinces]';
+粥>'[rice gruel]';
+粧>'[toilet]';
+粨>'[hm]';
+#"粫>'[................................]'",
+#"粭>'[................................]'",
+粮>'[food]';
+粱>'[better varieties of millet]';
+粲>'[polish]';
+粳>'[non-glutinous rice]';
+粹>'[pure]';
+粽>'[dumpling made of glutinous rice]';
+精>'[essence]';
+#"糀>'[................................]'",
+#"糂>'[................................]'",
+糅>'[blend]';
+糊>'[paste]';
+糎>'[mm]';
+糒>'[food for a journey]';
+糖>'[sugar]';
+#"糘>'[................................]'",
+糜>'[rice gruel]';
+糞>'[manure]';
+糟>'[sediment]';
+糠>'[chaff]';
+糢>'[rice snacks]';
+糧>'[food]';
+糯>'[glutinous rice]';
+糲>'[unpolished rice]';
+糴>'[purchase grains]';
+糶>'[sell grains]';
+糸>'[silk]';
+糺>'[to collaborate]';
+系>'[system]';
+糾>'[investigate]';
+紀>'[record]';
+紂>'[name of an emperor]';
+約>'[treaty]';
+紅>'[red]';
+紆>'[bend]';
+紊>'[confused]';
+紋>'[line]';
+納>'[admit]';
+紐>'[knot]';
+純>'[pure]';
+紕>'[spoiled silk]';
+紗>'[gauze]';
+紘>'[string]';
+紙>'[paper]';
+級>'[level]';
+紛>'[in disorder]';
+紜>'[confused]';
+素>'[white (silk)]';
+紡>'[spin]';
+索>'[large rope]';
+紫>'[purple]';
+紬>'[kind of thin silk]';
+紮>'[tie]';
+累>'[tired]';
+細>'[fine]';
+紲>'[bridle]';
+紳>'[girdle]';
+紵>'[ramie]';
+紹>'[continue]';
+紺>'[dark blue color]';
+紿>'[cheat]';
+終>'[end]';
+絃>'[string on musical instrument]';
+組>'[class]';
+絅>'[unlined garment]';
+絆>'[loop]';
+#"絋>'[................................]'",
+経>'[classic works]';
+絎>'[baste]';
+絏>'[rope]';
+結>'[knot]';
+絖>'[fine silks]';
+絛>'[silk braid]';
+絞>'[twist]';
+絡>'[enmesh]';
+絢>'[variegated]';
+絣>'[to baste for sewing]';
+給>'[give]';
+絨>'[silk]';
+絮>'[waste cotton]';
+統>'[govern]';
+絲>'[silk]';
+絳>'[deep red]';
+絵>'[draw]';
+絶>'[cut]';
+絹>'[kind of thick stiff silk]';
+#"絽>'[................................]'",
+綉>'[embroider]';
+綏>'[soothe]';
+經>'[classic works]';
+継>'[continue]';
+続>'[continue]';
+#"綛>'[................................]'",
+綜>'[arrange threads for weaving]';
+#"綟>'[................................]'",
+綢>'[silk cloth]';
+綣>'[affectionate]';
+綫>'[line]';
+綬>'[silk ribbon attached as a seal]';
+維>'[maintain]';
+綮>'[embroidered banner]';
+綯>'[braid]';
+綰>'[to string together]';
+綱>'[heavy rope]';
+網>'[net]';
+綴>'[patch together]';
+綵>'[varicolored silk]';
+綸>'[green silk thread or tassel]';
+綺>'[fine thin silk]';
+綻>'[ripped seam]';
+綽>'[graceful]';
+綾>'[thin silk]';
+綿>'[cotton wad]';
+緇>'[black silk]';
+緊>'[tense]';
+緋>'[scarlet]';
+総>'[collect]';
+緑>'[green]';
+緒>'[end of thread]';
+#"緕>'[................................]'",
+緘>'[seal]';
+線>'[thread]';
+緜>'[cotton wad]';
+緝>'[to sew in close stitches]';
+緞>'[satin]';
+締>'[tie]';
+緡>'[fishing-line]';
+緤>'[cord]';
+編>'[knit]';
+緩>'[slow]';
+緬>'[distant]';
+緯>'[woof]';
+緲>'[indistinct]';
+練>'[practice]';
+緻>'[delicate]';
+縁>'[hem]';
+縄>'[rope]';
+#"縄>'[rope]'",
+縉>'[red silk]';
+縊>'[hang]';
+縋>'[climd down rope]';
+#"縑>'[fine silk]'",
+縛>'[to tie]';
+縞>'[white raw silk]';
+縟>'[decorative]';
+縡>'[matter]';
+縢>'[bind]';
+縣>'[county]';
+縦>'[indulge in]';
+縫>'[sew]';
+縮>'[contract]';
+縱>'[indulge in]';
+縲>'[chain or rope used bind criminal]';
+縵>'[plain silk]';
+縷>'[thread]';
+縹>'[light blue silk]';
+#"縺>'[................................]'",
+縻>'[halter for ox]';
+總>'[collect]';
+績>'[spin]';
+繁>'[complicated]';
+繃>'[bind]';
+繆>'[wind around]';
+繊>'[fine]';
+繋>'[attach]';
+繍>'[embroider]';
+織>'[weave]';
+繕>'[repair]';
+繖>'[umbrella]';
+繙>'[interpret]';
+繚>'[wind round]';
+#"繝>'[................................]'",
+繞>'[entwine]';
+繦>'[string of copper coins]';
+#"繧>'[................................]'",
+繩>'[rope]';
+繪>'[draw]';
+繭>'[cocoon]';
+繰>'[to reel silk from cocoons]';
+繹>'[unravel or unreel silk]';
+繻>'[fine silk guaze]';
+繼>'[continue]';
+繽>'[flourishing]';
+#"繿>'[................................]'",
+纂>'[edit]';
+#"纃>'[................................]'",
+纈>'[patterned silk]';
+#"纉>'[................................]'",
+續>'[continue]';
+纎>'[fine]';
+纏>'[wrap]';
+#"纐>'[................................]'",
+纒>'[wrap]';
+纓>'[chin strap]';
+纔>'[talent]';
+纖>'[fine]';
+纛>'[a banner]';
+纜>'[hawser]';
+缶>'[earthen crock or jar]';
+缸>'[earthen jug]';
+缺>'[be short of]';
+罅>'[crack]';
+罌>'[long necked jar or bottle]';
+罍>'[large earthenware wine jar]';
+罎>'[an earthenware jar]';
+罐>'[jar]';
+网>'[net]';
+罔>'[net]';
+罕>'[rare]';
+罘>'[screen used in ancient times]';
+罟>'[net]';
+罠>'[animal trap]';
+#"罧>'[................................]'",
+罨>'[medical compress]';
+罩>'[basket for catching fish]';
+罪>'[crime]';
+罫>'[hinder]';
+置>'[place]';
+罰>'[penalty]';
+署>'[public office]';
+罵>'[accuse]';
+罷>'[cease]';
+罸>'[penalty]';
+罹>'[sorrow]';
+#"羂>'[................................]'",
+羃>'[cover-cloth]';
+羅>'[net for catching birds]';
+羆>'[brown bear]';
+羇>'[inn]';
+羈>'[halter]';
+羊>'[sheep]';
+羌>'[qiang nationality]';
+美>'[beautiful]';
+羔>'[lamb]';
+羚>'[species of antelope]';
+羝>'[ram]';
+羞>'[disgrace]';
+羣>'[group]';
+群>'[group]';
+羨>'[envy]';
+義>'[right conduct]';
+羮>'[soup]';
+羯>'[wether]';
+羲>'[ancient emperor]';
+羶>'[rank odor]';
+羸>'[weak]';
+羹>'[soup]';
+羽>'[feather]';
+翁>'[old man]';
+翅>'[wings]';
+翆>'[color green]';
+翊>'[flying]';
+翌>'[bright]';
+習>'[practice]';
+翔>'[soar]';
+翕>'[agree]';
+翠>'[color green]';
+翡>'[kingfisher]';
+翦>'[scissors]';
+翩>'[fly]';
+翫>'[careless]';
+翰>'[writing brush]';
+翳>'[shade]';
+翹>'[turn up]';
+翻>'[flip over]';
+翼>'[wings]';
+耀>'[shine]';
+老>'[old]';
+考>'[examine]';
+耄>'[elderly person]';
+者>'[that which]';
+耆>'[man of sixty]';
+耋>'[aged]';
+而>'[and]';
+耐>'[endure]';
+耒>'[handle of plow]';
+耕>'[plow]';
+耗>'[consume]';
+耘>'[weed]';
+耙>'[rake]';
+耜>'[spade-shaped tool]';
+耡>'[hoe]';
+耨>'[hoe]';
+耳>'[ear]';
+耶>'[used in transliteration]';
+耻>'[shame]';
+耽>'[indulge in]';
+耿>'[bright]';
+聆>'[listen]';
+聊>'[somewhat]';
+聒>'[clamor]';
+聖>'[holy]';
+聘>'[engage]';
+聚>'[assemble]';
+聞>'[hear]';
+聟>'[son-in-law]';
+聡>'[intelligent]';
+#"聢>'[................................]'",
+聨>'[connect]';
+聯>'[connect]';
+聰>'[intelligent]';
+聲>'[sound]';
+聳>'[urge on]';
+聴>'[hear]';
+聶>'[whisper]';
+職>'[duty]';
+聹>'[earwax]';
+聽>'[hear]';
+聾>'[deaf]';
+聿>'[writing brush]';
+肄>'[learn]';
+肅>'[pay respects]';
+肆>'[indulge]';
+肇>'[begin]';
+肉>'[flesh]';
+肋>'[ribs]';
+肌>'[muscle tissue]';
+肓>'[region between heart and diaphragm]';
+肖>'[look like]';
+肘>'[elbow]';
+肚>'[belly]';
+肛>'[anus]';
+肝>'[liver]';
+股>'[thighs]';
+肢>'[human limbs]';
+肥>'[fat]';
+肩>'[shoulders]';
+肪>'[animal fat]';
+肬>'[wart]';
+肭>'[fat]';
+肯>'[willing]';
+肱>'[forearm]';
+育>'[produce]';
+肴>'[cooked or prepared meat]';
+肺>'[lungs]';
+胃>'[stomach]';
+胄>'[helmet]';
+胆>'[gall bladder]';
+背>'[back]';
+胎>'[unborn child]';
+胖>'[fat]';
+胙>'[food offered in sacrificial serv]';
+胚>'[embryo]';
+胛>'[the shoulder]';
+胝>'[callous]';
+胞>'[womb]';
+胡>'[recklessly]';
+胤>'[heir]';
+胥>'[all]';
+胯>'[pelvis]';
+胱>'[bladder]';
+胴>'[the large intestine]';
+胸>'[breast]';
+胼>'[callus]';
+能>'[be able]';
+脂>'[fat]';
+脅>'[ribs]';
+脆>'[crisp]';
+脇>'[ribs]';
+脈>'[blood vessels]';
+脉>'[blood vessels]';
+脊>'[spine]';
+脚>'[leg]';
+脛>'[shinbone]';
+脣>'[lips]';
+脩>'[dried meat (used as teachers payment in ancient times)]';
+脯>'[dried meat]';
+脱>'[take off]';
+脳>'[brain]';
+脹>'[swell]';
+脾>'[spleen]';
+腆>'[prosperous]';
+腋>'[armpit]';
+腎>'[kidneys]';
+腐>'[rot]';
+腑>'[bowels]';
+腓>'[calf]';
+腔>'[chest cavity]';
+腕>'[wrist]';
+腟>'[vagina]';
+腥>'[raw meat]';
+腦>'[brain]';
+腫>'[swell]';
+腮>'[lower part of face]';
+腰>'[waist]';
+腱>'[tendons]';
+腴>'[fat]';
+腸>'[intestines]';
+腹>'[stomach]';
+腺>'[gland]';
+腿>'[legs]';
+膀>'[upper arm]';
+膂>'[backbone]';
+膃>'[fat]';
+膈>'[diaphragm]';
+膊>'[shoulders]';
+膏>'[grease]';
+膓>'[intestines]';
+膕>'[hollow]';
+膚>'[skin]';
+膜>'[membrane]';
+膝>'[knee]';
+膠>'[glue]';
+膣>'[vagina]';
+#"膤>'[................................]'",
+膨>'[swell]';
+膩>'[greasy]';
+膰>'[cook meat for sacrifice or offer]';
+膳>'[meals]';
+膵>'[pancreas]';
+#"膸>'[................................]'",
+膺>'[breast]';
+膽>'[gall bladder]';
+膾>'[minced meat or fish]';
+膿>'[pus]';
+臀>'[buttocks]';
+臂>'[arm]';
+臆>'[chest]';
+臈>'[year end sacrifice]';
+臉>'[face]';
+臍>'[abdominal area of crab]';
+臑>'[soft]';
+臓>'[internal organs]';
+臘>'[year end sacrifice]';
+臙>'[rouge]';
+臚>'[arrange in order]';
+臟>'[internal organs]';
+臠>'[small lump of meat]';
+臣>'[minister]';
+臥>'[lie down]';
+臧>'[good]';
+臨>'[draw near]';
+自>'[self]';
+臭>'[smell]';
+至>'[reach]';
+致>'[send]';
+臺>'[tower]';
+臻>'[reach]';
+臼>'[mortar]';
+臾>'[moment]';
+舁>'[carry on one''s shoulder]';
+舂>'[grind in mortar]';
+舅>'[mother''s brother]';
+與>'[and]';
+興>'[thrive]';
+舉>'[raise]';
+舊>'[old]';
+舌>'[tongue]';
+舍>'[house]';
+舎>'[house]';
+舐>'[lick with tongue]';
+舒>'[open up]';
+舖>'[store]';
+舗>'[store]';
+舘>'[a mansion]';
+舛>'[oppose]';
+舜>'[legendary ruler]';
+舞>'[dance]';
+舟>'[boat]';
+舩>'[boat]';
+航>'[sail]';
+舫>'[fancy boat]';
+般>'[sort]';
+舮>'[bow or prow of boat]';
+舳>'[stern of ship]';
+舵>'[rudder]';
+舶>'[large]';
+舷>'[sides of boat]';
+舸>'[large boat]';
+船>'[ship]';
+艀>'[[not found in dictionary]]';
+艇>'[small boat]';
+艘>'[counter for ships]';
+艙>'[hold of ship]';
+艚>'[ship]';
+#"艝>'[................................]'",
+艟>'[ancient warship]';
+艢>'[a mast]';
+艤>'[to moor a boat to the bank]';
+艦>'[warship]';
+艨>'[long and narrow war-boat]';
+艪>'[oar]';
+艫>'[bow or prow of boat]';
+艮>'[seventh of eight diagrams]';
+良>'[good]';
+艱>'[difficult]';
+色>'[color]';
+艶>'[beautiful]';
+艷>'[beautiful]';
+艸>'[grass]';
+艾>'[artemisia]';
+芋>'[taro]';
+芍>'[peony]';
+芒>'[miscanthus sinensis]';
+芙>'[hibiscus]';
+芝>'[purplish mushroom thought promot]';
+芟>'[mow]';
+芥>'[mustard plant]';
+芦>'[rushes]';
+芫>'[daphne genkwa]';
+芬>'[fragrance]';
+芭>'[plantain or banana palm]';
+芯>'[pith from rush (juncus effusus)]';
+花>'[flower]';
+芳>'[fragrant]';
+芸>'[rue]';
+芹>'[celery]';
+芻>'[mow]';
+芽>'[bud]';
+苅>'[cut off]';
+苑>'[pasture]';
+苒>'[lush]';
+苓>'[fungus]';
+苔>'[moss]';
+苗>'[sprouts]';
+苙>'[pigsty]';
+苛>'[small]';
+苜>'[clover]';
+苞>'[variety of rush]';
+苟>'[careless]';
+苡>'[barley]';
+苣>'[kind of lettuce]';
+若>'[if]';
+苦>'[bitter]';
+苧>'[china grass]';
+苫>'[rush or straw matting]';
+英>'[petal]';
+#"苳>'[................................]'",
+苴>'[sackcloth]';
+苹>'[artemisia]';
+苺>'[berries]';
+苻>'[kind of herb]';
+茂>'[thick]';
+范>'[surname]';
+茄>'[eggplant]';
+茅>'[reeds]';
+茆>'[species of grass]';
+茉>'[white jasmine]';
+茎>'[stem]';
+茖>'[allium victorialis]';
+茗>'[tea]';
+#"茗>'[tea]'",
+茜>'[madder]';
+#"茣>'[................................]'",
+茨>'[caltrop]';
+茫>'[vast]';
+茯>'[china root]';
+茱>'[dogwood]';
+茲>'[now]';
+茴>'[fennel]';
+茵>'[cushion]';
+茶>'[tea]';
+茸>'[soft]';
+茹>'[roots]';
+荀>'[surname]';
+荅>'[answer: small bean]';
+草>'[grass]';
+荊>'[thorns]';
+荏>'[beans]';
+荐>'[repeat]';
+荒>'[wasteland]';
+荘>'[village]';
+荳>'[beans]';
+#"荵>'[................................]'",
+荷>'[lotus]';
+荻>'[reed]';
+荼>'[bitter vegetable]';
+莅>'[attend]';
+#"莇>'[................................]'",
+莉>'[white jasmine]';
+莊>'[village]';
+莎>'[kind of sedge grass]';
+莓>'[moss]';
+莖>'[stem]';
+莚>'[bamboo mat]';
+莞>'[smiling]';
+#"莟>'[................................]'",
+莠>'[weeds]';
+莢>'[pods of leguminous plants]';
+莨>'[herb]';
+莪>'[artemisia]';
+莫>'[do not]';
+莱>'[goosefoot]';
+莵>'[dodder]';
+莽>'[thicket]';
+菁>'[flower of leek family]';
+菅>'[coarse grass]';
+菊>'[chrysanthemum]';
+菌>'[mushroom]';
+菎>'[beautiful jade]';
+菓>'[fruits]';
+菖>'[iris]';
+菘>'[celery]';
+菜>'[vegetables]';
+菟>'[dodder]';
+菠>'[spinach and similar greens]';
+菩>'[herb]';
+菫>'[celery]';
+華>'[flowery]';
+菰>'[wild rice]';
+菱>'[water-chestnut]';
+菲>'[fragrant]';
+菴>'[small buddhist monastery]';
+#"菷>'[................................]'",
+菻>'[artemisia]';
+菽>'[beans and peas]';
+萃>'[dense]';
+萄>'[grapes]';
+萇>'[averrhora carambola]';
+萋>'[luxuriant foliage]';
+萌>'[bud]';
+萍>'[duckweed]';
+萎>'[wither]';
+#"萓>'[................................]'",
+萠>'[bud]';
+#"萢>'[................................]'",
+萩>'[scandent hop]';
+#"萪>'[................................]'",
+萬>'[ten thousand]';
+萱>'[day-lily]';
+萵>'[lettuce]';
+萸>'[dogwood]';
+萼>'[calyx of flower]';
+落>'[fall]';
+葆>'[reserve]';
+葉>'[leaf]';
+#"葎>'[................................]'",
+著>'[manifest]';
+葛>'[edible bean]';
+葡>'[grapes]';
+葢>'[cover]';
+董>'[direct]';
+葦>'[reed]';
+葩>'[flowers]';
+葫>'[bottle-gourd]';
+葬>'[bury]';
+葭>'[bulrush]';
+#"葭>'[bulrush]'",
+葯>'[leaf of angelica plant]';
+葱>'[scallions]';
+葵>'[sunflower]';
+葷>'[meat diet]';
+葹>'[kind of chrysanthemum]';
+葺>'[thatch]';
+蒂>'[peduncle or stem of plants]';
+#"蒄>'[................................]'",
+蒋>'[surname]';
+蒐>'[collect]';
+蒔>'[transplant]';
+蒙>'[cover]';
+蒜>'[garlic]';
+蒟>'[betel pepper]';
+蒡>'[burdock]';
+蒭>'[to cutgrass]';
+蒲>'[type of rush]';
+蒸>'[steam]';
+蒹>'[reed]';
+蒻>'[rushes]';
+蒼>'[blue]';
+蒿>'[mugwort]';
+蓁>'[abundant]';
+蓄>'[store]';
+蓆>'[straw mat]';
+蓉>'[hibiscus]';
+蓊>'[luxuriant vegetation]';
+蓋>'[cover]';
+蓍>'[milfoil]';
+蓐>'[straw bed mat]';
+蓑>'[rain coat made of straw]';
+蓖>'[castor-oil plant]';
+#"蓙>'[................................]'",
+蓚>'[oxalic (used in compounds)]';
+蓬>'[type of raspberry]';
+蓮>'[lotus]';
+蓴>'[edible water plant]';
+蓼>'[smartweed]';
+蓿>'[clover]';
+蔀>'[screen]';
+蔆>'[water-chestnut]';
+蔑>'[disdain]';
+蔓>'[creeping plants]';
+蔔>'[radish]';
+蔕>'[peduncle or stem of plants]';
+蔗>'[sugar cane]';
+蔘>'[ginsen]';
+蔚>'[luxuriant]';
+蔟>'[frame on which silkworms spin]';
+蔡>'[surname]';
+蔦>'[parasitic plants]';
+蔬>'[vegetables]';
+蔭>'[shade]';
+蔵>'[hide]';
+蔽>'[cover]';
+#"蕀>'[................................]'",
+蕁>'[nettle]';
+蕃>'[foreign things]';
+蕈>'[mushrooms]';
+蕉>'[banana]';
+蕊>'[unopened flowers]';
+蕋>'[unopened flowers]';
+蕎>'[buckwheat]';
+蕕>'[caryopteris divaricata]';
+#"蕗>'[................................]'",
+蕘>'[fuel]';
+蕚>'[calyx of flower]';
+蕣>'[hibiscus]';
+蕨>'[pteris aquilina]';
+蕩>'[pond]';
+蕪>'[luxurious growth of weeds]';
+蕭>'[common artemisia]';
+蕷>'[yam]';
+蕾>'[buds]';
+薀>'[the hippuris or mare''s tail plant]';
+薄>'[thin]';
+薇>'[osmunda regalis]';
+薈>'[luxuriant]';
+薊>'[circium]';
+薐>'[spinach]';
+薑>'[ginger]';
+薔>'[rose]';
+薗>'[garden]';
+薙>'[weed]';
+薛>'[kind of marsh grass]';
+薜>'[evergreen shrubs]';
+薤>'[allium bakeri]';
+薦>'[offer]';
+薨>'[death of prince]';
+薩>'[transliteration of \"sat\" of boddhisattva etc.]';
+薪>'[fuel]';
+薫>'[a medicinal herb]';
+薬>'[drugs]';
+薮>'[marsh]';
+薯>'[yam]';
+薹>'[cyperus rotundus]';
+薺>'[water-chestnuts]';
+藁>'[straw]';
+藉>'[mat]';
+藍>'[blue]';
+藏>'[hide]';
+藐>'[disregard]';
+藕>'[lotus root]';
+藜>'[chenopodium album]';
+藝>'[art]';
+藤>'[rattan]';
+藥>'[drugs]';
+藩>'[fence]';
+藪>'[marsh]';
+藷>'[yam]';
+藹>'[lush]';
+藺>'[rush used in making mats]';
+藻>'[splendid]';
+藾>'[shade]';
+蘂>'[stamen or pistil]';
+蘆>'[rushes]';
+蘇>'[thyme]';
+蘊>'[collect]';
+蘋>'[apple]';
+蘓>'[thyme]';
+蘖>'[stump]';
+蘗>'[stump]';
+蘚>'[moss]';
+蘢>'[tall grass]';
+蘭>'[orchid]';
+蘯>'[to toss about]';
+#"蘯>'[to toss about]'",
+蘿>'[type of creeping plant]';
+虍>'[tiger]';
+虎>'[tiger]';
+虐>'[cruel]';
+虔>'[act with reverence]';
+處>'[place]';
+虚>'[false]';
+虜>'[capture]';
+虞>'[concerned about]';
+號>'[mark]';
+虧>'[lose]';
+虫>'[insects]';
+虱>'[louse]';
+虹>'[rainbow]';
+虻>'[horsefly]';
+蚊>'[mosquito]';
+蚋>'[gnat]';
+蚌>'[oysters]';
+蚓>'[earthworm]';
+蚕>'[silkworms]';
+蚣>'[centipede]';
+蚤>'[flea]';
+蚩>'[worm]';
+蚪>'[tadpole]';
+蚫>'[abalone]';
+蚯>'[earthworm]';
+蚰>'[millipede]';
+蚶>'[kind of clam]';
+蛄>'[mole cricket]';
+蛆>'[maggots]';
+蛇>'[snake]';
+蛉>'[dragonfly]';
+蛋>'[eggs]';
+蛍>'[glow-worm]';
+蛎>'[oyster]';
+蛔>'[tapeworm]';
+蛙>'[frog]';
+蛛>'[spider]';
+蛞>'[snail]';
+蛟>'[scaly dragon with four legs]';
+蛤>'[clam]';
+蛩>'[cricket]';
+#"蛩>'[cricket]'",
+蛭>'[leech]';
+蛮>'[barbarians]';
+蛯>'[shrimp]';
+蛸>'[long legged spider]';
+蛹>'[chrysalis]';
+蛻>'[molt]';
+蛾>'[moth]';
+蜀>'[name of an ancient state]';
+蜂>'[bee]';
+蜃>'[marine monster which can change its shape]';
+蜆>'[a variety of bivalves]';
+蜈>'[centipede]';
+蜉>'[mayfly]';
+蜊>'[clam]';
+蜍>'[toad]';
+蜑>'[egg]';
+蜒>'[millipede]';
+蜘>'[spider]';
+蜚>'[cockroach]';
+蜜>'[honey]';
+蜥>'[lizard]';
+蜩>'[cicada]';
+蜴>'[lizard]';
+蜷>'[creep like worm]';
+蜻>'[dragonfly]';
+蜿>'[creep]';
+蝉>'[cicada]';
+蝋>'[wax]';
+蝌>'[tadpole]';
+蝎>'[scorpion]';
+蝓>'[snail]';
+蝕>'[nibble away]';
+蝗>'[kind of locust]';
+蝙>'[bat]';
+蝟>'[hedgehog]';
+蝠>'[kind of bat]';
+蝣>'[mayfly]';
+蝦>'[shrimp]';
+蝨>'[louse]';
+#"蝨>'[louse]'",
+蝮>'[venomous snake]';
+蝴>'[butterfly]';
+蝶>'[butterfly]';
+蝸>'[snail]';
+蝿>'[flies]';
+螂>'[mantis]';
+融>'[melt]';
+螟>'[kind of caterpillar]';
+螢>'[glow-worm]';
+螫>'[poison]';
+螯>'[nippers]';
+螳>'[mantis]';
+螺>'[spiral shell]';
+螻>'[gryllotalpa africana]';
+螽>'[katydid]';
+蟀>'[cricket]';
+蟄>'[to hibernate]';
+蟆>'[frog]';
+蟇>'[frog]';
+蟋>'[cricket]';
+#"蟋>'[cricket]'",
+蟒>'[python]';
+蟠>'[coil]';
+蟯>'[worms]';
+蟲>'[worms]';
+蟶>'[razor clam]';
+蟷>'[mantis]';
+蟹>'[crab]';
+蟻>'[ants]';
+蟾>'[toad]';
+蠅>'[flies]';
+蠍>'[scorpion]';
+蠎>'[python]';
+蠏>'[crab]';
+蠑>'[lizard]';
+蠕>'[eumenes polifomis]';
+蠖>'[measuring worm]';
+蠡>'[wood-boring insect]';
+蠢>'[wriggle]';
+蠣>'[oyster]';
+蠧>'[moth]';
+蠱>'[posion]';
+蠶>'[silkworms]';
+蠹>'[moth]';
+蠻>'[barbarians]';
+血>'[blood]';
+衂>'[to be defeated]';
+衄>'[epistaxis]';
+衆>'[multitude]';
+行>'[go]';
+衍>'[overflow]';
+衒>'[brag]';
+術>'[art]';
+街>'[street]';
+衙>'[public office]';
+衛>'[guard]';
+衝>'[rush against]';
+衞>'[guard]';
+衡>'[measure]';
+衢>'[highway]';
+衣>'[clothes]';
+表>'[show]';
+衫>'[shirt]';
+衰>'[decline]';
+衲>'[mend]';
+衵>'[chemise]';
+衷>'[heart]';
+衽>'[lapel]';
+衾>'[coverlet]';
+衿>'[collar or lapel of garment]';
+袁>'[robe]';
+袂>'[sleeves]';
+袈>'[buddhist cassock]';
+袋>'[pocket]';
+袍>'[long gown]';
+袒>'[strip]';
+袖>'[sleeve]';
+袗>'[unlined garments]';
+#"袙>'[................................]'",
+袞>'[ceremonial dress worn by emperor]';
+袢>'[robe]';
+袤>'[longitude]';
+被>'[passive indicator \"by\"]';
+#"袮>'[................................]'",
+#"袰>'[................................]'",
+袱>'[piece of cloth used wrap bundles]';
+袴>'[pants]';
+袵>'[lapel]';
+袷>'[lined garment]';
+袿>'[gown]';
+裁>'[cut out]';
+裂>'[split]';
+#"裂>'[split]'",
+#"裂>'[split]'",
+装>'[dress]';
+裏>'[inside]';
+裔>'[progeny]';
+裕>'[abundant]';
+裘>'[fur garments]';
+裙>'[skirt]';
+補>'[mend]';
+裝>'[dress]';
+裟>'[a cassock or robe of a monk]';
+裡>'[inside]';
+裨>'[aid]';
+裲>'[waistcoat]';
+裳>'[clothes]';
+裴>'[surname]';
+裸>'[bare]';
+裹>'[wrap]';
+裼>'[to take off one''s top]';
+製>'[make]';
+裾>'[lapel]';
+褂>'[jacket]';
+#"褃>'[a seam in a garment]'",
+複>'[repeat]';
+褊>'[cramped]';
+褌>'[trousers]';
+褐>'[coarse woolen cloth]';
+褒>'[praise]';
+褓>'[swaddling cloth]';
+褝>'[unlined garment]';
+#"褞>'[................................]'",
+褥>'[mattress]';
+褪>'[strip]';
+褫>'[strip]';
+褶>'[pleat]';
+褸>'[lapel]';
+褻>'[dirty]';
+襁>'[swaddling clothes]';
+襃>'[commend]';
+襄>'[aid]';
+襌>'[unlined garment]';
+襍>'[mixed]';
+襖>'[outer garments]';
+襞>'[fold]';
+襟>'[lapel]';
+襠>'[crotch or seat of pants]';
+襤>'[ragged]';
+襦>'[short coat]';
+襪>'[socks]';
+襭>'[tuck up hem of garment and wrap]';
+襯>'[underwear]';
+襲>'[raid]';
+襴>'[a one piece garment]';
+#"襶>'[ignorant]'",
+襾>'[cover]';
+西>'[west(ern)]';
+要>'[necessary]';
+覃>'[reach to]';
+覆>'[cover]';
+覇>'[rule by might rather than right]';
+覈>'[investigate]';
+覊>'[halter]';
+見>'[see]';
+規>'[rules]';
+覓>'[seek]';
+視>'[look at]';
+覗>'[peek]';
+覘>'[peek]';
+覚>'[wake up from sleep]';
+覡>'[wizard]';
+覦>'[desire strongly]';
+覧>'[look at]';
+覩>'[see]';
+親>'[relatives]';
+覬>'[covet]';
+覯>'[meet or see unexpectedly]';
+覲>'[have imperial audience]';
+観>'[see]';
+覺>'[wake up from sleep]';
+覽>'[look at]';
+覿>'[see]';
+觀>'[see]';
+角>'[horn]';
+觚>'[jug]';
+觜>'[beak]';
+觝>'[gore]';
+解>'[loosen]';
+触>'[butt]';
+觧>'[loosen]';
+觴>'[wine vessel]';
+觸>'[touch]';
+言>'[words]';
+訂>'[draw up agreement]';
+訃>'[obituary]';
+計>'[plan]';
+訊>'[inquire]';
+訌>'[confusion]';
+討>'[ask for]';
+訐>'[expose other''s secrets]';
+訓>'[teach]';
+訖>'[finish]';
+託>'[entrust]';
+記>'[record]';
+訛>'[swindle]';
+訝>'[express surprise]';
+訟>'[accuse]';
+訣>'[take leave of]';
+訥>'[slow of speech]';
+訪>'[visit]';
+設>'[build]';
+許>'[allow]';
+訳>'[translate]';
+訴>'[accuse]';
+訶>'[scold loudly]';
+診>'[examine patient]';
+註>'[explain]';
+証>'[prove]';
+詁>'[exegesis]';
+詆>'[slander]';
+詈>'[scold]';
+詐>'[cheat]';
+詑>'[cheat]';
+詒>'[bequeath]';
+詔>'[decree]';
+評>'[appraise]';
+詛>'[curse]';
+詞>'[words]';
+詠>'[sing]';
+詢>'[inquire into]';
+詣>'[reach]';
+試>'[test]';
+詩>'[poetry]';
+詫>'[be surprised]';
+詬>'[abuse]';
+詭>'[deceive]';
+詮>'[explain]';
+詰>'[question]';
+話>'[speech]';
+該>'[should]';
+詳>'[detailed]';
+詼>'[tease]';
+誂>'[tempt]';
+誄>'[eulogize]';
+誅>'[execute]';
+誇>'[exaggerate]';
+誉>'[fame]';
+誌>'[write down]';
+認>'[recognize]';
+誑>'[deceive]';
+誓>'[swear]';
+誕>'[bear children]';
+誘>'[persuade]';
+誚>'[criticize]';
+語>'[language]';
+誠>'[sincere]';
+誡>'[warn]';
+誣>'[make false accusation]';
+誤>'[err]';
+誥>'[inform]';
+誦>'[recite]';
+誨>'[teach]';
+説>'[speak]';
+読>'[read]';
+誰>'[who? whom? whose? anyone?]';
+課>'[lesson]';
+誹>'[slander]';
+誼>'[friendship]';
+調>'[transfer]';
+諂>'[flatter]';
+諄>'[patient]';
+談>'[talk]';
+請>'[ask]';
+諌>'[remonstrate]';
+諍>'[to expostulate]';
+諏>'[consult]';
+諒>'[excuse]';
+論>'[debate]';
+諚>'[(kokuji) command]';
+諛>'[flatter]';
+諜>'[intelligence report]';
+諞>'[brag]';
+諠>'[noisy]';
+諡>'[posthumous name]';
+諢>'[jokes]';
+諤>'[honest speech]';
+諦>'[careful]';
+諧>'[harmonize]';
+諫>'[remonstrate]';
+諭>'[proclaim]';
+諮>'[consult]';
+諱>'[conceal]';
+諳>'[versed in]';
+諷>'[recite]';
+諸>'[several]';
+諺>'[proverb]';
+諾>'[promise]';
+謀>'[plan]';
+謁>'[visit]';
+謂>'[say]';
+謄>'[copy]';
+謇>'[stutter]';
+謌>'[slander]';
+謎>'[riddle]';
+謐>'[calm]';
+謔>'[jeer]';
+謖>'[rise up]';
+謗>'[slander]';
+謙>'[humble]';
+謚>'[to confer posthumous titles]';
+講>'[explain]';
+謝>'[thank]';
+謠>'[sing]';
+謡>'[sing]';
+謦>'[t speak softly]';
+謨>'[scheme]';
+謫>'[charge]';
+謬>'[error]';
+謳>'[sing]';
+謹>'[prudent]';
+謾>'[deceive]';
+譁>'[noise]';
+證>'[proof]';
+譌>'[false]';
+譎>'[cunning]';
+譏>'[ridicule]';
+譖>'[to slander]';
+識>'[recognize]';
+譚>'[surname]';
+譛>'[to slander]';
+譜>'[register]';
+譟>'[clamor]';
+警>'[guard]';
+譫>'[talkative]';
+譬>'[metaphor]';
+譯>'[translate]';
+議>'[consult]';
+#"譱>'[................................]'",
+譲>'[allow]';
+譴>'[reprimand]';
+護>'[protect]';
+譽>'[fame]';
+讀>'[read]';
+讃>'[praise]';
+變>'[change]';
+讌>'[feast]';
+讎>'[enemy]';
+讐>'[enemy]';
+讒>'[slander]';
+讓>'[allow]';
+讖>'[prophecy]';
+讙>'[cheer]';
+讚>'[praise]';
+谷>'[valley]';
+谺>'[the mouth of a valley]';
+谿>'[valley]';
+豁>'[open up]';
+豆>'[beans]';
+豈>'[how? what?]';
+豊>'[abundant]';
+豌>'[peas]';
+豎>'[vertical]';
+豐>'[abundant]';
+豕>'[pigs]';
+豚>'[small pig]';
+象>'[elephant]';
+豢>'[domestic animals]';
+豪>'[brave]';
+豫>'[relaxed]';
+豬>'[pig]';
+豸>'[radical 153]';
+豹>'[leopard]';
+豺>'[wolf]';
+豼>'[fox]';
+貂>'[marten]';
+貅>'[brave]';
+貉>'[badger]';
+貊>'[leopard]';
+貌>'[countenance]';
+貍>'[a fox-like animal]';
+貎>'[lion]';
+貔>'[fox]';
+貘>'[the panther]';
+貝>'[sea shell]';
+貞>'[virtuous]';
+負>'[load]';
+財>'[wealth]';
+貢>'[offer tribute]';
+貧>'[poor]';
+貨>'[goods]';
+販>'[peddler]';
+貪>'[greedy]';
+貫>'[string of 1000 coins]';
+責>'[one''s responsibility]';
+貭>'[matter]';
+貮>'[number two]';
+貯>'[store]';
+貰>'[borrow]';
+貲>'[property]';
+貳>'[number two]';
+貴>'[expensive]';
+貶>'[decrease]';
+買>'[buy]';
+貸>'[lend]';
+費>'[expenses]';
+貼>'[paste to]';
+貽>'[give to]';
+貿>'[trade]';
+賀>'[congratulate]';
+賁>'[forge ahead]';
+賂>'[bribe]';
+賃>'[rent]';
+賄>'[bribe]';
+資>'[property]';
+賈>'[surname]';
+賊>'[thief]';
+賍>'[booty]';
+賎>'[mean]';
+賑>'[relieve]';
+賓>'[guest]';
+賚>'[give]';
+賛>'[help]';
+賜>'[give]';
+賞>'[reward]';
+賠>'[indemnify]';
+賢>'[virtuous]';
+賣>'[sell]';
+賤>'[mean]';
+賦>'[tax]';
+質>'[matter]';
+賭>'[bet]';
+賺>'[make money]';
+賻>'[gift of money help pay funeral]';
+購>'[buy]';
+賽>'[compete]';
+贄>'[gift superior]';
+贅>'[unnecessary]';
+贇>'[affable]';
+贈>'[give present]';
+贊>'[help]';
+贋>'[false]';
+贍>'[support]';
+贏>'[win]';
+贐>'[farewell present]';
+贓>'[booty]';
+贔>'[strong]';
+贖>'[buy]';
+赤>'[red]';
+赦>'[forgive]';
+赧>'[blush]';
+赫>'[bright]';
+赭>'[reddish brown]';
+走>'[walk]';
+赱>'[walk]';
+赳>'[grand]';
+赴>'[go to]';
+起>'[rise]';
+趁>'[take advantage of]';
+超>'[jump over]';
+越>'[exceed]';
+趙>'[surname]';
+趣>'[what attracts one''s attention]';
+趨>'[hasten]';
+足>'[foot]';
+趺>'[sit cross-legged]';
+趾>'[toe]';
+跂>'[creeping]';
+跋>'[go by foot]';
+跌>'[stumble]';
+跏>'[sit cross-legged]';
+跖>'[sole (of the foot)]';
+跚>'[stagger]';
+跛>'[lame]';
+距>'[distance]';
+跟>'[heel]';
+跡>'[search]';
+跣>'[bare footed]';
+跨>'[straddle]';
+跪>'[kneel]';
+跫>'[sound of footsteps]';
+路>'[road]';
+跳>'[jump]';
+践>'[trample]';
+跼>'[bent]';
+#"跿>'[................................]'",
+踈>'[neglect]';
+踉>'[hop]';
+踊>'[leap]';
+踏>'[step on]';
+踐>'[trample]';
+踝>'[ankle]';
+踞>'[crouch]';
+踟>'[hesitate]';
+踪>'[footprints]';
+踰>'[exceed]';
+踴>'[leap]';
+踵>'[heel]';
+蹂>'[trample under foot]';
+蹄>'[hoof]';
+蹇>'[lame]';
+蹈>'[stamp feet]';
+蹉>'[error]';
+蹊>'[footpath]';
+蹌>'[walk rapidly]';
+蹐>'[take short steps]';
+蹕>'[clear way]';
+蹙>'[urgent]';
+蹟>'[trace]';
+蹠>'[step on]';
+蹣>'[to jump over]';
+蹤>'[footprints]';
+蹲>'[squat]';
+蹴>'[kick]';
+蹶>'[stumble]';
+蹼>'[webbed feet of waterfowl]';
+躁>'[tense]';
+躄>'[cripple]';
+躅>'[walk carefully]';
+躇>'[hesitate]';
+躊>'[hesitate]';
+躋>'[ascend]';
+躍>'[skip]';
+躑>'[waver]';
+躓>'[stumble]';
+躔>'[follow in]';
+躙>'[trample down]';
+躡>'[tread]';
+躪>'[trample down]';
+身>'[body]';
+躬>'[body]';
+躯>'[body]';
+躰>'[body]';
+躱>'[hide]';
+#"躺>'[lie down]'",
+#"軄>'[to govern]'",
+軆>'[body]';
+#"軆>'[body]'",
+車>'[cart]';
+軋>'[crush by weight]';
+軌>'[track]';
+軍>'[army]';
+軒>'[carriage]';
+軛>'[yoke]';
+軟>'[soft]';
+転>'[shift]';
+軣>'[rumble]';
+軫>'[cross board at rear of carriage]';
+軸>'[axle]';
+軻>'[axle]';
+軼>'[rush forth]';
+軽>'[light]';
+軾>'[horizontal wooden bar in front of a sedan chair]';
+較>'[compare]';
+輅>'[chariot]';
+載>'[load]';
+輊>'[low rear portion of cart]';
+輌>'[numerary adjunct for vehicles]';
+輒>'[sides of chariot where weapons]';
+輓>'[mourn]';
+輔>'[cheek bone]';
+輕>'[light]';
+輙>'[sides of chariot were weapons]';
+輛>'[numerary adjunct for vehicles]';
+輜>'[supply cart]';
+輝>'[brightness]';
+輟>'[stop]';
+輦>'[hand-cart]';
+輩>'[generation]';
+輪>'[wheel]';
+輯>'[gather up]';
+輳>'[hubs of wheel]';
+輸>'[transport]';
+輹>'[two pieces of wood underneath ca]';
+輻>'[spokes of wheel]';
+輾>'[turn over]';
+輿>'[cart]';
+轂>'[hub of wheel]';
+轄>'[linchpin of wheel]';
+轅>'[axle]';
+轆>'[windlass]';
+轉>'[shift]';
+轌>'[sled]';
+轍>'[wagon ruts]';
+轎>'[sedan-chair]';
+轗>'[fail]';
+轜>'[hearse]';
+轟>'[rumble]';
+轡>'[bridle of horse]';
+轢>'[run over something with vehicle]';
+#"轣>'[................................]'",
+轤>'[pulley]';
+辛>'[bitter]';
+辜>'[crime]';
+辞>'[words]';
+辟>'[law]';
+辣>'[peppery]';
+辧>'[manage]';
+辨>'[distinguish]';
+辭>'[words]';
+辮>'[braid]';
+辯>'[dispute]';
+辰>'[early morning]';
+辱>'[humiliate]';
+農>'[agriculture]';
+辷>'[smooth]';
+辺>'[edge]';
+辻>'[crossroads]';
+込>'[crowd into]';
+辿>'[follow]';
+迂>'[doctrinaire]';
+迄>'[extend]';
+迅>'[quick]';
+迎>'[receive]';
+近>'[near]';
+返>'[return]';
+迚>'[very]';
+迢>'[far]';
+迥>'[distant]';
+迦>'[character for transliteration]';
+迩>'[be near]';
+迪>'[enlighten]';
+迫>'[coerce]';
+迭>'[repeatedly]';
+迯>'[escape]';
+述>'[narrate]';
+迴>'[revolve]';
+迷>'[bewitch]';
+迸>'[gush out]';
+迹>'[traces]';
+迺>'[then]';
+追>'[pursue]';
+退>'[step back]';
+送>'[see off]';
+逃>'[escape]';
+逅>'[meet unexpectedly]';
+逆>'[disobey]';
+逋>'[flee]';
+逍>'[ramble]';
+逎>'[strong]';
+透>'[penetrate]';
+逐>'[chase]';
+逑>'[collect]';
+逓>'[hand over]';
+途>'[way]';
+逕>'[pass by]';
+逖>'[far]';
+逗>'[tempt]';
+這>'[this]';
+通>'[pass through]';
+逝>'[pass away]';
+逞>'[indulge oneself]';
+速>'[quick]';
+造>'[construct]';
+逡>'[retreat]';
+逢>'[come upon]';
+連>'[join]';
+#"逦>'[meandering]'",
+逮>'[seize]';
+週>'[week]';
+進>'[advance]';
+逵>'[thoroughfare]';
+逶>'[winding]';
+逸>'[flee]';
+逹>'[arrive at]';
+逼>'[compel]';
+逾>'[go over]';
+遁>'[hide]';
+遂>'[comply with]';
+遅>'[late]';
+遇>'[meet]';
+遉>'[spy]';
+遊>'[wander]';
+運>'[luck]';
+遍>'[everywhere]';
+過>'[pass]';
+遏>'[stop]';
+遐>'[afar]';
+遑>'[leisure]';
+遒>'[strong]';
+道>'[path]';
+達>'[arrive at]';
+違>'[disobey]';
+#"違>'[disobey]'",
+遘>'[to meet]';
+遙>'[far away]';
+遜>'[humble]';
+遞>'[hand over]';
+遠>'[distant]';
+遡>'[go upstream]';
+遣>'[send]';
+遥>'[far away]';
+遨>'[ramble]';
+適>'[match]';
+遭>'[come across]';
+遮>'[cover]';
+遯>'[deceive]';
+遲>'[late]';
+遵>'[obey]';
+遶>'[entwine]';
+遷>'[move]';
+選>'[choose]';
+遺>'[lose]';
+遼>'[distant]';
+遽>'[suddenly]';
+避>'[avoid]';
+邀>'[invite]';
+邁>'[take a big stride]';
+邂>'[unexpected meeting]';
+邃>'[profound]';
+還>'[still]';
+邇>'[be near]';
+邉>'[edge]';
+邊>'[edge]';
+邏>'[patrol]';
+邑>'[area]';
+那>'[that]';
+邦>'[nation]';
+邨>'[village]';
+邪>'[wrong]';
+邯>'[city in hebei province]';
+邱>'[surname]';
+邵>'[surname]';
+邸>'[official residence]';
+郁>'[sweet smelling]';
+郊>'[suburbs]';
+郎>'[gentleman]';
+郛>'[outer walls of city]';
+郡>'[administrative division]';
+郢>'[state in today''s hubei province]';
+郤>'[crack]';
+部>'[part]';
+郭>'[outer part (of a city)]';
+郵>'[postal]';
+郷>'[country]';
+都>'[metropolis]';
+鄂>'[hubei province]';
+鄒>'[name of an ancient state]';
+鄙>'[mean]';
+鄭>'[state in today''s henan]';
+鄰>'[neighbor]';
+鄲>'[county in hebei proincev]';
+酉>'[tenth in series of twelve cyclic]';
+酊>'[drunk]';
+酋>'[chief of tribe]';
+酌>'[serve wine]';
+配>'[match]';
+酎>'[double-fermented wine]';
+酒>'[wine]';
+酔>'[intoxicated]';
+酖>'[wine with bird poison added]';
+#"酘>'[................................]'",
+酢>'[toast one''s host with wine]';
+酣>'[enjoy intoxicants]';
+酥>'[butter]';
+酩>'[drunk]';
+酪>'[cream]';
+酬>'[toast]';
+酲>'[hangover]';
+#"酲>'[hangover]'",
+酵>'[yeast]';
+酷>'[strong]';
+酸>'[tart]';
+#"醁>'[a kind of green-colored wine]'",
+醇>'[rich]';
+醉>'[intoxicated]';
+醋>'[vinegar]';
+醍>'[essential oil of butter]';
+醐>'[purest cream]';
+醒>'[wake up]';
+醗>'[to brew for the second time]';
+醜>'[ugly looking]';
+醢>'[minced pickled meat]';
+醤>'[any jam-like or paste-like food]';
+醪>'[unclear wine]';
+醫>'[cure]';
+醯>'[vinegar]';
+醴>'[sweet wine]';
+醵>'[contribute for drinks]';
+醸>'[brew]';
+醺>'[get drunk]';
+釀>'[brew]';
+釁>'[smear with blood in sacrifice]';
+釆>'[distinguish]';
+采>'[collect]';
+釈>'[interprete]';
+釉>'[glaze]';
+釋>'[interprete]';
+里>'[unit of distance]';
+重>'[heavy]';
+野>'[open country]';
+量>'[measure]';
+釐>'[manage]';
+金>'[gold]';
+釖>'[knife]';
+釘>'[nail]';
+#"釛>'[................................]'",
+釜>'[cauldron]';
+針>'[needle]';
+#"釟>'[................................]'",
+釡>'[cauldron]';
+釣>'[fish]';
+釦>'[button]';
+釧>'[bracelet]';
+釵>'[ornamental hairpin]';
+#"釶>'[................................]'",
+釼>'[sword]';
+#"釿>'[................................]'",
+鈍>'[blunt]';
+鈎>'[hook]';
+鈑>'[plate]';
+鈔>'[paper money]';
+鈕>'[button]';
+鈞>'[unit of measure equivalent thirt]';
+鈩>'[fireplace]';
+鈬>'[bell]';
+鈴>'[bell]';
+鈷>'[cobalt]';
+鈿>'[hairpin]';
+鉄>'[iron]';
+鉅>'[steel]';
+鉈>'[thallium]';
+鉉>'[device for carrying a tripod]';
+鉋>'[carpenter''s plane]';
+#"鉐>'[................................]'",
+鉗>'[pincers]';
+鉚>'[rivet]';
+鉛>'[lead plumbum]';
+鉞>'[broad-axe]';
+鉢>'[earthenware basin]';
+鉤>'[hook]';
+鉦>'[kind of gong used in ancient tim]';
+鉱>'[mine]';
+鉾>'[spear]';
+銀>'[silver]';
+銃>'[ancient weapon]';
+銅>'[copper]';
+銑>'[mill]';
+銓>'[weigh]';
+銕>'[iron]';
+銖>'[unit of weight]';
+銘>'[inscribe]';
+銚>'[large hoe]';
+銛>'[sharp]';
+銜>'[bit]';
+銭>'[money]';
+銷>'[melt]';
+銹>'[rust]';
+鋏>'[tongs]';
+鋒>'[point of spear]';
+鋤>'[hoe]';
+鋩>'[point of sword]';
+鋪>'[spread out]';
+鋭>'[sharp]';
+鋲>'[rivet]';
+鋳>'[melt]';
+鋸>'[a saw]';
+#"鋺>'[................................]'",
+鋼>'[steel]';
+錆>'[the color of a mineral]';
+錏>'[soft steel]';
+錐>'[gimlet]';
+錘>'[balance weight on scale]';
+錙>'[8 oz]';
+錚>'[clanging sound]';
+錠>'[spindle]';
+錢>'[money]';
+#"錣>'[................................]'",
+錦>'[brocade]';
+錨>'[anchor]';
+錫>'[tin]';
+錬>'[smelt metals]';
+錮>'[run metal into cracks]';
+錯>'[error]';
+録>'[copy]';
+#"錵>'[................................]'",
+#"錺>'[................................]'",
+#"錻>'[................................]'",
+#"鍄>'[................................]'",
+鍋>'[cooking-pot]';
+鍍>'[plate]';
+鍔>'[high]';
+#"鍖>'[................................]'",
+鍛>'[forge metal]';
+#"鍜>'[................................]'",
+鍠>'[weapon]';
+鍬>'[shovel]';
+鍮>'[brass]';
+鍵>'[door bolt]';
+鍼>'[needle]';
+鍾>'[cup]';
+鎌>'[sickle]';
+鎔>'[fuse]';
+鎖>'[lock]';
+鎗>'[rifle]';
+鎚>'[hammer]';
+鎧>'[armor]';
+鎬>'[stove]';
+鎭>'[town]';
+鎮>'[town]';
+鎰>'[measure of weight for gold]';
+#"鎹>'[................................]'",
+鏃>'[arrowhead]';
+鏈>'[chain]';
+鏐>'[pure gold]';
+鏑>'[dysprosium the barb of an arrow]';
+鏖>'[fight end]';
+鏗>'[strike]';
+鏘>'[tinkle]';
+鏝>'[trowel]';
+鏡>'[mirror]';
+鏤>'[carve]';
+鏥>'[rust]';
+鏨>'[engraving tool]';
+鐃>'[cymbals]';
+鐇>'[vanadium]';
+鐐>'[fetters]';
+鐓>'[ferrule]';
+鐔>'[dagger]';
+鐘>'[clock]';
+鐙>'[lamp]';
+鐚>'[soft steel]';
+鐡>'[iron]';
+鐫>'[engraving tool]';
+鐵>'[iron]';
+鐶>'[metal ring]';
+鐸>'[bell]';
+鐺>'[frying pan]';
+#"鑁>'[................................]'",
+鑄>'[melt]';
+鑑>'[mirror]';
+鑒>'[mirror]';
+鑓>'[spear]';
+鑚>'[drill]';
+鑛>'[mine]';
+鑞>'[solder]';
+鑠>'[melt]';
+鑢>'[file]';
+鑪>'[fireplace]';
+鑰>'[key]';
+鑵>'[jar]';
+鑷>'[tweezers]';
+鑼>'[gong]';
+鑽>'[drill]';
+鑾>'[bells hung on horse]';
+鑿>'[chisel]';
+钁>'[a mattock]';
+長>'[long]';
+門>'[gate]';
+閂>'[bolt]';
+閃>'[flash]';
+閇>'[shut]';
+閉>'[shut]';
+#"閉>'[shut]'",
+開>'[open]';
+閏>'[intercalary]';
+閑>'[fence]';
+間>'[interval]';
+閔>'[mourn]';
+#"閔>'[mourn]'",
+閘>'[sluice]';
+閙>'[quarrel]';
+閠>'[intercalary]';
+関>'[frontier pass]';
+閣>'[chamber]';
+閤>'[small side door]';
+閥>'[powerful and influential group]';
+閧>'[boisterous]';
+閨>'[small entrance]';
+閭>'[village of twenty-five families]';
+閲>'[examine]';
+閹>'[castrate]';
+閻>'[village gate]';
+閼>'[block]';
+閾>'[threshold]';
+闃>'[alone]';
+闇>'[close]';
+闊>'[broad]';
+闌>'[door screen]';
+闍>'[tower over city gate]';
+闔>'[close]';
+闕>'[watch tower]';
+闖>'[rush in]';
+闘>'[struggle]';
+關>'[frontier pass]';
+闡>'[explain]';
+闢>'[open]';
+闥>'[door]';
+阜>'[mound]';
+阡>'[footpaths between fields]';
+阨>'[in distress]';
+阪>'[hillside farmland]';
+阮>'[ancient musical instrument: surname]';
+阯>'[foundation]';
+防>'[defend]';
+阻>'[impede]';
+阿>'[prefix to name]';
+陀>'[steep bank]';
+陂>'[dam]';
+附>'[adhere to]';
+陋>'[narrow]';
+陌>'[foot path between rice fields]';
+降>'[descend]';
+#"降>'[descend]'",
+限>'[boundary]';
+陛>'[steps leading throne]';
+陜>'[narrow]';
+陝>'[mountain pass]';
+陞>'[promote]';
+陟>'[climb]';
+院>'[courtyard]';
+陣>'[column]';
+除>'[eliminate]';
+陥>'[submerge]';
+#"陥>'[submerge]'",
+陪>'[accompany]';
+陬>'[corner]';
+陰>'[\"female\" principle]';
+陲>'[frontier]';
+陳>'[exhibit]';
+陵>'[hill]';
+陶>'[pottery]';
+陷>'[submerge]';
+陸>'[land]';
+険>'[narrow pass]';
+陽>'[\"male\" principle]';
+隅>'[corner]';
+隆>'[prosperous]';
+隈>'[cove]';
+隊>'[team]';
+隋>'[Sui dynasty]';
+隍>'[dry ditch]';
+階>'[stairs]';
+随>'[follow]';
+隔>'[separate]';
+隕>'[fall]';
+隗>'[high]';
+隘>'[narrow]';
+隙>'[crack]';
+際>'[border]';
+障>'[separate]';
+#"障>'[separate]'",
+隣>'[neighbor]';
+隧>'[tunnel]';
+隨>'[follow]';
+險>'[narrow pass]';
+隰>'[low]';
+隱>'[hide]';
+隲>'[stallion]';
+隴>'[mountain located between shaanxi]';
+隶>'[subservient]';
+隷>'[be subservient to]';
+隸>'[be subservient to]';
+隹>'[bird]';
+隻>'[single]';
+隼>'[aquiline (nose)]';
+雀>'[sparrow]';
+雁>'[wild goose]';
+雄>'[male of species]';
+雅>'[elegant]';
+集>'[assemble]';
+雇>'[employ]';
+雉>'[pheasant]';
+雋>'[superior]';
+雌>'[female]';
+雍>'[harmony]';
+雎>'[osprey]';
+雑>'[mixed]';
+雕>'[engrave]';
+雖>'[although]';
+雙>'[set of two]';
+雛>'[chick]';
+雜>'[mixed]';
+離>'[leave]';
+難>'[difficult]';
+雨>'[rain]';
+雪>'[snow]';
+#"雫>'[................................]'",
+雰>'[atmosphere]';
+雲>'[clouds]';
+零>'[zero]';
+雷>'[thunder]';
+雹>'[hail]';
+電>'[electricity]';
+需>'[need]';
+霄>'[sky]';
+霆>'[a sudden peal of thunder]';
+震>'[shake]';
+霈>'[torrential rains]';
+霊>'[spirit]';
+霍>'[quickly]';
+霎>'[light rain]';
+霏>'[falling of snow and rain]';
+霑>'[be moistened]';
+霓>'[rainbow]';
+霖>'[long spell of rain]';
+霙>'[sleet]';
+霜>'[frost]';
+霞>'[rosy clouds]';
+霤>'[drip]';
+霧>'[fog]';
+霪>'[long and heavy rain]';
+霰>'[hail]';
+露>'[dew]';
+霸>'[rule by might rather than right]';
+霹>'[thunder]';
+霽>'[clear up after rain cease be ang]';
+霾>'[misty]';
+靂>'[thunderclap]';
+靄>'[cloudy sky]';
+靆>'[cloudy sky]';
+靈>'[spirit]';
+靉>'[cloudy sky]';
+青>'[blue]';
+靖>'[pacify]';
+静>'[quiet]';
+靜>'[quiet]';
+非>'[not]';
+靠>'[lean on]';
+靡>'[divide]';
+面>'[face]';
+#"靤>'[................................]'",
+靦>'[timid]';
+靨>'[dimples]';
+革>'[leather]';
+靫>'[strong and pliable]';
+靭>'[strong and pliable]';
+靱>'[strong and pliable]';
+靴>'[boots]';
+#"靹>'[................................]'",
+靺>'[stocking]';
+靼>'[tartars]';
+#"鞁>'[................................]'",
+鞄>'[to work hides]';
+鞅>'[leather strap over horse''s neck]';
+#"鞅>'[leather strap over horse''s neck]'",
+鞋>'[shoes]';
+鞍>'[saddle]';
+鞏>'[bind]';
+#"鞏>'[bind]'",
+鞘>'[scabbard]';
+#"鞜>'[................................]'",
+鞠>'[bow]';
+鞣>'[tan]';
+鞦>'[leather stap]';
+鞨>'[tribe]';
+鞫>'[interrogate]';
+鞭>'[whip]';
+#"鞳>'[................................]'",
+鞴>'[saddle up horse]';
+韃>'[tatars]';
+韆>'[swing]';
+韈>'[socks]';
+韋>'[tanned leather]';
+韓>'[fence]';
+韜>'[sheath]';
+韭>'[scallion]';
+韮>'[scallion]';
+韲>'[break or smash into pieces]';
+音>'[sound]';
+韵>'[rhyme]';
+韶>'[music of emperor Shun]';
+韻>'[rhyme]';
+響>'[make sound]';
+頁>'[page]';
+頂>'[top]';
+頃>'[moment]';
+項>'[neck]';
+順>'[obey]';
+須>'[must]';
+頌>'[laud]';
+頏>'[fly down or downward]';
+預>'[prepare]';
+頑>'[obstinate]';
+頒>'[confer]';
+頓>'[pause]';
+頗>'[lean one side]';
+領>'[neck]';
+頚>'[neck]';
+頡>'[fly upward]';
+頤>'[cheeks]';
+頬>'[cheeks]';
+頭>'[head]';
+頴>'[rice tassel]';
+頷>'[chin]';
+頸>'[neck]';
+頻>'[frequently]';
+頼>'[rely]';
+頽>'[ruined]';
+顆>'[grain]';
+顋>'[lower part of face]';
+題>'[forehead]';
+額>'[forehead]';
+顎>'[jaw]';
+顏>'[face]';
+顔>'[face]';
+顕>'[manifest]';
+願>'[desire]';
+顛>'[top]';
+類>'[class]';
+顧>'[look back]';
+顫>'[shiver]';
+顯>'[manifest]';
+顰>'[frown]';
+顱>'[skull]';
+顳>'[the temporal bone]';
+顴>'[cheek bones]';
+風>'[wind]';
+#"風>'[wind]'",
+颯>'[sound of wind]';
+颱>'[taiphoon]';
+颶>'[cyclone]';
+飃>'[whirlwind]';
+飄>'[whirlwind]';
+飆>'[whirlwind]';
+飛>'[fly]';
+飜>'[flip over]';
+食>'[eat]';
+飢>'[hunger]';
+飩>'[stuffed dumplings]';
+飫>'[surfeited]';
+飭>'[order]';
+飮>'[drink]';
+飯>'[cooked rice]';
+飲>'[drink]';
+飴>'[sweet-meats]';
+飼>'[raise animals]';
+飽>'[eat heartily]';
+飾>'[decorate]';
+餃>'[stuffed dumplings]';
+餅>'[rice-cakes]';
+餉>'[rations and pay for soldiers]';
+養>'[raise]';
+餌>'[bait]';
+餐>'[eat]';
+餒>'[hungry]';
+餓>'[be hungry]';
+餔>'[eat]';
+餘>'[surplus]';
+#"餝>'[................................]'",
+餞>'[farewell party]';
+餠>'[rice-cakes]';
+餡>'[pastry filling]';
+餤>'[incite]';
+館>'[public building]';
+餬>'[porridge]';
+餮>'[a legendary animal]';
+餽>'[make present of food]';
+餾>'[distill]';
+#"饁>'[carry meal to workers in field]'",
+饅>'[steamed bread]';
+饉>'[time of famine or crop failure]';
+饋>'[offer food superior]';
+饌>'[feed]';
+饐>'[spoiled]';
+饑>'[starve]';
+饒>'[bountiful]';
+饕>'[gluttonous]';
+饗>'[host banquet]';
+首>'[head]';
+馗>'[cheekbone]';
+馘>'[cut off left ear]';
+香>'[fragrant]';
+馥>'[fragrance]';
+馨>'[fragrant]';
+馬>'[horse]';
+馭>'[drive]';
+馮>'[surname]';
+馳>'[go quickly or swiftly]';
+馴>'[tame]';
+#"馼>'[................................]'",
+駁>'[varicolored]';
+#"駃>'[gallop]'",
+駅>'[relay station]';
+駆>'[spur horse on]';
+駈>'[spur horse on]';
+駐>'[to be stationed at]';
+駑>'[tired]';
+駒>'[colt]';
+駕>'[drive]';
+駘>'[tired]';
+駛>'[sail]';
+駝>'[camel]';
+駟>'[team of four horses]';
+駢>'[team of horses]';
+駭>'[terrify]';
+駮>'[a kind of fierce animal]';
+駱>'[white horse w. black mane]';
+#"駱>'[white horse w. black mane]'",
+駸>'[galloping]';
+#"駻>'[................................]'",
+駿>'[excellent horse]';
+騁>'[gallop horse]';
+騅>'[piebald horse]';
+騎>'[ride horseback]';
+騏>'[piebald horse]';
+騒>'[harass]';
+験>'[test]';
+騙>'[swindle]';
+騨>'[dappled]';
+騫>'[raise]';
+騰>'[fly]';
+騷>'[harass]';
+騾>'[mule]';
+驀>'[suddenly]';
+驂>'[two outside ones in three horse]';
+驃>'[charger]';
+驅>'[spur horse on]';
+驍>'[excellent horse]';
+驕>'[spirited horse]';
+驗>'[test]';
+驚>'[frighten]';
+驛>'[relay station]';
+驟>'[procedure]';
+驢>'[donkey]';
+驤>'[gallop about with head uplifted]';
+驥>'[thoroughbred horse]';
+驩>'[happy]';
+驪>'[pure black horse]';
+驫>'[horses]';
+骨>'[bone]';
+骭>'[shin bone]';
+骰>'[die]';
+骸>'[skelton]';
+骼>'[bone]';
+髀>'[buttocks]';
+髄>'[bone marrow]';
+髏>'[skull]';
+髑>'[skull]';
+髓>'[bone marrow]';
+體>'[body]';
+高>'[high]';
+髞>'[high]';
+髟>'[hair]';
+髢>'[wig]';
+髣>'[similar to]';
+髦>'[flowing hair of young child]';
+髪>'[hair]';
+髫>'[children''s hair style]';
+髭>'[mustache]';
+髮>'[hair]';
+髯>'[beard]';
+#"髱>'[................................]'",
+髴>'[disheveled hair]';
+#"髷>'[................................]'",
+髻>'[hair rolled up in a bun]';
+鬆>'[lax]';
+鬘>'[beautiful hair]';
+鬚>'[beard]';
+鬟>'[dress hair in coiled knot]';
+鬢>'[hair on temples]';
+鬣>'[horse''s mane]';
+鬥>'[struggle]';
+鬧>'[quarrel]';
+鬨>'[boisterous]';
+鬩>'[feud]';
+鬪>'[struggle]';
+鬮>'[lots (to be drawn)]';
+鬯>'[sacrificial wine]';
+鬱>'[luxuriant]';
+鬲>'[type of caldron]';
+鬻>'[sell]';
+鬼>'[ghost]';
+魁>'[chief]';
+魂>'[soul]';
+魃>'[drought demon]';
+魄>'[vigor]';
+魅>'[kind of forest demon]';
+魍>'[demons]';
+魎>'[a kind of monster]';
+魏>'[kingdom of wei]';
+魑>'[a montain demon resembling tiger]';
+魔>'[demon]';
+魘>'[nightmare]';
+魚>'[fish]';
+魯>'[foolish]';
+魴>'[bream]';
+#"鮁>'[the bonito]'",
+鮎>'[sheatfish]';
+鮑>'[abalone]';
+鮒>'[carp]';
+鮓>'[minced and salted fish]';
+#"鮓>'[minced and salted fish]'",
+#"鮓>'[minced and salted fish]'",
+鮟>'[anglerfish]';
+鮠>'[a kind of shad with a head like a sturgeon]';
+#"鮨>'[................................]'",
+鮪>'[kind of sturgeon]';
+鮫>'[shark]';
+鮭>'[salmon]';
+鮮>'[fresh]';
+#"鮴>'[................................]'",
+#"鮹>'[................................]'",
+鯀>'[giant fish]';
+鯆>'[the skate or ray]';
+鯉>'[carp]';
+鯊>'[shark]';
+鯏>'[a dialect........ name of fish]';
+#"鯑>'[................................]'",
+#"鯒>'[................................]'",
+鯔>'[mullet]';
+鯖>'[mackerel]';
+鯛>'[pagrosomus major]';
+鯡>'[herring]';
+鯢>'[cryptobranchus japonicus]';
+#"鯣>'[................................]'",
+鯤>'[spawn]';
+鯨>'[whale]';
+鯰>'[sheat]';
+#"鯱>'[................................]'",
+#"鯱>'[................................]'",
+#"鯱>'[................................]'",
+#"鰄>'[................................]'",
+#"鰆>'[................................]'",
+鰈>'[flatfish]';
+鰉>'[sturgeon]';
+#"鰊>'[................................]'",
+鰌>'[loach]';
+鰍>'[loach]';
+鰐>'[alligator]';
+鰒>'[abalone]';
+鰓>'[fish gills]';
+#"鰔>'[................................]'",
+鰕>'[shrimp]';
+鰛>'[sardine]';
+#"鰡>'[................................]'",
+#"鰤>'[................................]'",
+鰥>'[huge fish]';
+鰭>'[fin]';
+鰮>'[sardine]';
+#"鰯>'[................................]'",
+#"鰯>'[................................]'",
+鰲>'[huge sea turtle]';
+鰹>'[skipjack]';
+#"鰺>'[................................]'",
+鰻>'[eel]';
+鰾>'[swimming bladder of fish]';
+#"鱆>'[................................]'",
+鱇>'[anglerfish]';
+鱈>'[codfish]';
+鱒>'[barbel]';
+鱗>'[fish scales]';
+#"鱘>'[sturgeon]'",
+鱠>'[minced fish]';
+鱧>'[snakehead]';
+#"鱶>'[................................]'",
+鱸>'[sea perch]';
+鳥>'[bird]';
+鳧>'[wild duck]';
+鳩>'[pigeon]';
+鳫>'[wild goose]';
+鳬>'[wild duck]';
+#"鳰>'[................................]'",
+鳳>'[male phoenix]';
+鳴>'[cry of bird or animal]';
+鳶>'[kite]';
+鴃>'[shrike]';
+鴆>'[bird resembling secretary falcon]';
+鴇>'[bustard]';
+鴈>'[wild goose]';
+鴉>'[crow]';
+鴎>'[seagull]';
+鴒>'[species of lark]';
+鴕>'[ostrich]';
+鴛>'[male mandarin duck]';
+鴟>'[kite]';
+鴣>'[species of taiwan pigeon]';
+鴦>'[female mandarin duck]';
+鴨>'[duck]';
+鴪>'[swoop]';
+鴫>'[a snipe]';
+鴬>'[oriole]';
+鴻>'[species of wild swan]';
+#"鴾>'[................................]'",
+鴿>'[pigeon]';
+#"鵁>'[................................]'",
+鵄>'[kite]';
+#"鵄>'[kite]'",
+#"鵄>'[kite]'",
+#"鵐>'[................................]'",
+鵑>'[cuckoo]';
+鵙>'[a shrike]';
+鵜>'[pelican]';
+鵝>'[goose]';
+鵞>'[goose]';
+鵠>'[target]';
+鵡>'[species of parrot]';
+#"鵡>'[species of parrot]'",
+鵬>'[fabulous bird of enormous size]';
+鵯>'[bird]';
+鵲>'[magpie]';
+#"鵺>'[................................]'",
+鶇>'[thrush]';
+鶉>'[quail]';
+鶏>'[chicken]';
+鶚>'[osprey]';
+#"鶤>'[................................]'",
+鶩>'[duck]';
+鶫>'[thrush]';
+鶯>'[oriole]';
+#"鶱>'[soar]'",
+鶴>'[crane]';
+鶸>'[[not found in any dictionary]]';
+鶺>'[wagtail]';
+鶻>'[a kind of pigeon]';
+鷁>'[fishhawk bow or prow]';
+鷂>'[sparrow hawk]';
+鷄>'[chicken]';
+鷆>'[bird name]';
+鷏>'[bird name]';
+鷓>'[partridge]';
+鷙>'[hawk]';
+鷦>'[wren]';
+#"鷫>'[turquoise kingfisher]'",
+鷯>'[wren]';
+鷲>'[condor]';
+鷸>'[snipe]';
+鷹>'[eagle]';
+鷺>'[heron]';
+鷽>'[oriental bullfinch]';
+鸚>'[species of parrot]';
+鸛>'[crane]';
+鸞>'[fabulous bird]';
+鹵>'[saline soil]';
+鹸>'[alkaline]';
+鹹>'[salty]';
+鹽>'[salt]';
+鹿>'[deer]';
+麁>'[rough]';
+麈>'[species of deer]';
+麋>'[elk]';
+麌>'[stag]';
+麑>'[fawn]';
+麒>'[legendary auspicious animal]';
+麓>'[foot of hill]';
+麕>'[muntjac deer]';
+麗>'[beautiful]';
+麝>'[musk deer]';
+麟>'[female of chinese unicorn]';
+麥>'[wheat]';
+麦>'[wheat]';
+麩>'[bran]';
+麪>'[flour]';
+#"麫>'[flour]'",
+麸>'[bran]';
+麹>'[yeast]';
+麺>'[flour]';
+麻>'[hemp]';
+麼>'[interrogative final particle]';
+麾>'[pennant]';
+麿>'[I]';
+黄>'[yellow]';
+黌>'[school]';
+黍>'[glutinous millet]';
+黎>'[surname]';
+黏>'[stick to]';
+黐>'[stick]';
+黒>'[black]';
+黔>'[black]';
+默>'[silent]';
+黙>'[silent]';
+黛>'[blacken eyebrows]';
+黜>'[dismiss]';
+黝>'[black]';
+點>'[dot]';
+黠>'[sly]';
+黥>'[tattooing face]';
+黨>'[political party]';
+黯>'[dark]';
+黴>'[mold]';
+黶>'[mole]';
+黷>'[dishonor]';
+黹>'[embroidery]';
+黻>'[special pattern of embroidery]';
+黼>'[embroidered official or sacrific]';
+黽>'[to strive]';
+鼇>'[huge sea turtle]';
+鼈>'[fresh water turtle]';
+鼎>'[large]';
+鼓>'[drum]';
+鼕>'[rattle of drums]';
+鼠>'[rat]';
+鼡>'[rat]';
+鼬>'[weasel]';
+鼻>'[nose]';
+鼾>'[snore loudly]';
+齊>'[even]';
+齋>'[vegetarian diet]';
+齎>'[take in both hands and offer to]';
+齏>'[break or smash into pieces]';
+齒>'[teeth]';
+齔>'[lose baby teeth and get adult te]';
+齟>'[irregular teeth]';
+齠>'[lose baby teeth and get adult teeth]';
+齡>'[age]';
+齢>'[age]';
+齣>'[act]';
+齦>'[gums]';
+齧>'[bite]';
+齪>'[narrow]';
+齬>'[uneven teeth]';
+齲>'[tooth decay]';
+齶>'[palate]';
+齷>'[narrow]';
+龍>'[dragon]';
+龕>'[niche]';
+龜>'[turtle or tortoise]';
+龝>'[autumn]';
+龠>'[flute]';
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
new file mode 100644
index 0000000..7435913
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
@@ -0,0 +1,6216 @@
+#--------------------------------------------------------------------
+# Copyright (c) 1999-2001, International Business Machines
+# Corporation and others.  All Rights Reserved.
+#--------------------------------------------------------------------
+# Date: Tue Jan 23 12:42:03 2001
+#--------------------------------------------------------------------
+
+# Kanji-OnRomaji
+
+丁>Tei;
+七>Shichi;
+万>Man;
+丈>Jou;
+三>San;
+上>Jou;
+下>Ka;
+不>Fu;
+与>Yo;
+丐>Kai;
+丑>Chuu;
+且>Sha;
+丕>Hi;
+世>Se;
+丗>Sei;
+丘>Kyuu;
+丙>Hei;
+丞>Shou;
+両>Ryou;
+並>Hei;
+个>Ka;
+中>Chuu;
+丱>Kan;
+串>Sen;
+丶>Chu;
+丸>Gan;
+丹>Tan;
+主>Shu;
+丼>Sei;
+丿>Hetsu;
+乂>Gai;
+乃>Dai;
+久>Kyuu;
+之>Shi;
+乍>Saku;
+乎>Ko;
+乏>Bou;
+乕>Ko;
+乖>Kai;
+乗>Jou;
+乘>Jou;
+乙>Otsu;
+九>Kyuu;
+乞>Kotsu;
+也>Ya;
+乢>Gai;
+乱>Ran;
+乳>Nyuu;
+乾>Kan;
+亀>Ki;
+亂>Ran;
+亅>Ketsu;
+了>Ryou;
+予>Yo;
+争>Sou;
+亊>Ji;
+事>Ji;
+二>Ni;
+于>U;
+云>Un;
+互>Go;
+五>Go;
+井>Sei;
+亘>Sen;
+亙>Kou;
+些>Sa;
+亜>A;
+亞>A;
+亟>Kyoku;
+亠>Tou;
+亡>Bou;
+亢>Kou;
+交>Kou;
+亥>Gai;
+亦>Eki;
+亨>Kyou;
+享>Kyou;
+京>Kyou;
+亭>Tei;
+亮>Ryou;
+亰>Kei;
+亳>Haku;
+亶>Tan;
+人>Jin;
+什>Shuu;
+仁>Jin;
+仂>Roku;
+仄>Soku;
+仆>Fu;
+仇>Kyuu;
+今>Kon;
+介>Kai;
+仍>Jou;
+从>Juu;
+仏>Butsu;
+仔>Shi;
+仕>Shi;
+他>Ta;
+仗>Jou;
+付>Fu;
+仙>Sen;
+仝>Dou;
+仞>Jin;
+仟>Sen;
+代>Dai;
+令>Rei;
+以>I;
+仭>Jin;
+仮>Ka;
+仰>Gyou;
+仲>Chuu;
+件>Ken;
+价>Kai;
+任>Nin;
+企>Ki;
+伉>Kou;
+伊>I;
+伍>Go;
+伎>Ki;
+伏>Fuku;
+伐>Batsu;
+休>Kyuu;
+会>Kai;
+伜>Sai;
+伝>Den;
+伯>Haku;
+估>Ko;
+伴>Han;
+伶>Rei;
+伸>Shin;
+伺>Shi;
+似>Ji;
+伽>Kya;
+佃>Ten;
+但>Tan;
+佇>Cho;
+位>I;
+低>Tei;
+住>Juu;
+佐>Sa;
+佑>Yuu;
+体>Tei;
+何>Ka;
+佗>Ta;
+余>Yo;
+佚>Itsu;
+佛>Butsu;
+作>Saku;
+佝>Kou;
+佞>Nei;
+佩>Hai;
+佯>You;
+佰>Haku;
+佳>Ka;
+併>Hei;
+佶>Kitsu;
+佻>Chou;
+佼>Kou;
+使>Shi;
+侃>Kan;
+來>Rai;
+侈>Shi;
+例>Rei;
+侍>Ji;
+侏>Shu;
+侑>Yuu;
+侖>Ron;
+侘>Ta;
+供>Kyou;
+依>I;
+侠>Kyou;
+価>Ka;
+侫>Nei;
+侭>Jin;
+侮>Bu;
+侯>Kou;
+侵>Shin;
+侶>Ryo;
+便>Ben;
+係>Kei;
+促>Soku;
+俄>Ga;
+俊>Shun;
+俎>Sho;
+俐>Ri;
+俑>You;
+俔>Ken;
+俗>Zoku;
+俘>Fu;
+俚>Ri;
+俛>Ben;
+保>Ho;
+俟>Shi;
+信>Shin;
+修>Shuu;
+俯>Fu;
+俳>Hai;
+俵>Hyou;
+俶>Shuku;
+俸>Hou;
+俺>En;
+俾>Hi;
+倅>Sai;
+倆>Ryou;
+倉>Sou;
+個>Ko;
+倍>Bai;
+倏>Shuku;
+們>Mon;
+倒>Tou;
+倔>Kutsu;
+倖>Kou;
+候>Kou;
+倚>I;
+借>Shaku;
+倡>Shou;
+倣>Hou;
+値>Chi;
+倥>Kou;
+倦>Ken;
+倨>Kyo;
+倩>Sen;
+倪>Gei;
+倫>Rin;
+倬>Taku;
+倭>I;
+倶>Ku;
+倹>Ken;
+偃>En;
+假>Ka;
+偈>Ketsu;
+偉>I;
+偏>Hen;
+偐>Gan;
+偕>Kai;
+偖>Sha;
+做>Saku;
+停>Tei;
+健>Ken;
+偬>Sou;
+偲>Shi;
+側>Soku;
+偵>Tei;
+偶>Guu;
+偸>Chuu;
+偽>Gi;
+傀>Kai;
+傅>Fu;
+傍>Bou;
+傑>Ketsu;
+傘>San;
+備>Bi;
+傚>Kou;
+催>Sai;
+傭>You;
+傲>Gou;
+傳>Den;
+傴>U;
+債>Sai;
+傷>Shou;
+傾>Kei;
+僂>Rou;
+僅>Kin;
+僉>Sen;
+僊>Sen;
+働>Dou;
+像>Zou;
+僑>Kyou;
+僕>Boku;
+僖>Ki;
+僚>Ryou;
+僞>Gi;
+僣>Sen;
+僥>Kyou;
+僧>Sou;
+僭>Sen;
+僮>Dou;
+僵>Kyou;
+價>Ka;
+僻>Heki;
+儀>Gi;
+儁>Shun;
+儂>Dou;
+億>Oku;
+儉>Ken;
+儒>Ju;
+儔>Chuu;
+儕>Sei;
+儖>Ran;
+儘>Jin;
+儚>Bou;
+償>Shou;
+儡>Rai;
+優>Yuu;
+儲>Cho;
+儷>Rei;
+儺>Da;
+儻>Tou;
+儼>Gen;
+儿>Jin;
+兀>Kotsu;
+允>In;
+元>Gen;
+兄>Kei;
+充>Juu;
+兆>Chou;
+兇>Kyou;
+先>Sen;
+光>Kou;
+克>Koku;
+兌>Da;
+免>Men;
+兎>To;
+児>Ji;
+兒>Ji;
+兔>To;
+党>Tou;
+兜>Tou;
+兢>Kyou;
+入>Nyuu;
+全>Zen;
+兩>Ryou;
+兪>Yu;
+八>Hachi;
+公>Kou;
+六>Roku;
+兮>Kei;
+共>Kyou;
+兵>Hei;
+其>Ki;
+具>Gu;
+典>Ten;
+兼>Ken;
+冀>Ki;
+冂>Kei;
+内>Dai;
+円>En;
+冉>Nen;
+冊>Satsu;
+册>Satsu;
+再>Sai;
+冏>Kei;
+冐>Bou;
+冑>Chuu;
+冒>Bou;
+冓>Kou;
+冕>Ben;
+冖>Beki;
+冗>Jou;
+写>Sha;
+冠>Kan;
+冢>Chou;
+冤>En;
+冥>Mei;
+冦>Kou;
+冨>Fu;
+冩>Sha;
+冪>Beki;
+冫>Hyou;
+冬>Tou;
+冰>Hyou;
+冱>Go;
+冲>Chuu;
+决>Ketsu;
+冴>Go;
+况>Kyou;
+冶>Ya;
+冷>Rei;
+冽>Retsu;
+凄>Sei;
+凅>Ko;
+准>Jun;
+凉>Ryou;
+凋>Chou;
+凌>Ryou;
+凍>Tou;
+凖>Jun;
+凛>Rin;
+凜>Rin;
+凝>Gyou;
+几>Ki;
+凡>Bon;
+処>Sho;
+凭>Hyou;
+凰>Kou;
+凱>Gai;
+凵>Kan;
+凶>Kyou;
+凸>Totsu;
+凹>Ou;
+出>Shutsu;
+函>Kan;
+凾>Kan;
+刀>Tou;
+刃>Jin;
+刄>Jin;
+分>Bun;
+切>Setsu;
+刈>Gai;
+刊>Kan;
+刋>Sen;
+刎>Fun;
+刑>Kei;
+刔>Ketsu;
+列>Retsu;
+初>Sho;
+判>Han;
+別>Betsu;
+刧>Gou;
+利>Ri;
+刪>San;
+刮>Katsu;
+到>Tou;
+刳>Ko;
+制>Sei;
+刷>Satsu;
+券>Ken;
+刹>Satsu;
+刺>Shi;
+刻>Koku;
+剃>Tei;
+剄>Kei;
+則>Soku;
+削>Saku;
+剋>Koku;
+剌>Ratsu;
+前>Zen;
+剏>Sou;
+剔>Teki;
+剖>Bou;
+剛>Gou;
+剞>Ki;
+剣>Ken;
+剤>Zai;
+剥>Haku;
+剩>Jou;
+剪>Sen;
+副>Fuku;
+剰>Jou;
+剱>Ken;
+割>Katsu;
+剳>Tou;
+剴>Gai;
+創>Sou;
+剽>Hyou;
+剿>Shou;
+劃>Kaku;
+劇>Geki;
+劈>Heki;
+劉>Ru;
+劍>Ken;
+劑>Zai;
+劒>Ken;
+劔>Ken;
+力>Ryoku;
+功>Kou;
+加>Ka;
+劣>Retsu;
+助>Jo;
+努>Do;
+劫>Gou;
+劬>Ku;
+劭>Shou;
+励>Rei;
+労>Rou;
+劵>Ken;
+効>Kou;
+劼>Katsu;
+劾>Gai;
+勁>Kei;
+勃>Botsu;
+勅>Choku;
+勇>Yuu;
+勉>Ben;
+勍>Kei;
+勒>Roku;
+動>Dou;
+勗>Bou;
+勘>Kan;
+務>Mu;
+勝>Shou;
+勞>Rou;
+募>Bo;
+勠>Riku;
+勢>Sei;
+勣>Seki;
+勤>Kin;
+勦>Sou;
+勧>Kan;
+勲>Kun;
+勳>Kun;
+勵>Rei;
+勸>Kan;
+勹>Hou;
+勺>Shaku;
+勾>Kou;
+勿>Butsu;
+包>Hou;
+匆>Sou;
+匈>Kyou;
+匍>Ho;
+匏>Hou;
+匐>Hoku;
+匕>Hi;
+化>Ka;
+北>Hoku;
+匙>Shi;
+匚>Hou;
+匝>Sou;
+匠>Shou;
+匡>Kyou;
+匣>Kou;
+匪>Hi;
+匯>Wai;
+匱>Ki;
+匳>Ren;
+匸>Kei;
+匹>Hitsu;
+区>Ku;
+医>I;
+匿>Toku;
+區>Ku;
+十>Juu;
+千>Sen;
+卅>Sou;
+卆>Sotsu;
+升>Shou;
+午>Go;
+卉>Ki;
+半>Han;
+卍>Ban;
+卑>Hi;
+卒>Sotsu;
+卓>Taku;
+協>Kyou;
+南>Nan;
+単>Tan;
+博>Haku;
+卜>Boku;
+卞>Hen;
+占>Sen;
+卦>Ka;
+卩>Setsu;
+卮>Shi;
+卯>Bou;
+印>In;
+危>Ki;
+即>Soku;
+却>Kyaku;
+卵>Ran;
+卷>Kan;
+卸>Sha;
+卻>Kyaku;
+卿>Kyou;
+厂>Kan;
+厄>Yaku;
+厖>Bou;
+厘>Rin;
+厚>Kou;
+原>Gen;
+厠>Shi;
+厥>Ketsu;
+厦>Ka;
+厨>Zu;
+厩>Kyuu;
+厭>En;
+厮>Shi;
+厰>Shou;
+厳>Gen;
+厶>Shi;
+去>Kyo;
+参>San;
+參>San;
+又>Yuu;
+叉>Sha;
+及>Kyuu;
+友>Yuu;
+双>Sou;
+反>Han;
+収>Shuu;
+叔>Shuku;
+取>Shu;
+受>Ju;
+叙>Jo;
+叛>Han;
+叟>Sou;
+叡>Ei;
+叢>Sou;
+口>Kou;
+古>Ko;
+句>Ku;
+叨>Tou;
+叩>Kou;
+只>Shi;
+叫>Kyou;
+召>Shou;
+叭>Hatsu;
+叮>Tei;
+可>Ka;
+台>Dai;
+叱>Shitsu;
+史>Shi;
+右>U;
+叶>Kyou;
+号>Gou;
+司>Shi;
+吁>Ku;
+吃>Kitsu;
+各>Kaku;
+合>Gou;
+吉>Kichi;
+吊>Chou;
+吋>Sun;
+同>Dou;
+名>Mei;
+后>Kou;
+吏>Ri;
+吐>To;
+向>Kou;
+君>Kun;
+吝>Rin;
+吟>Gin;
+吠>Hai;
+否>Hi;
+吩>Fun;
+含>Gan;
+听>Kin;
+吭>Kou;
+吮>Sen;
+吶>Totsu;
+吸>Kyuu;
+吹>Sui;
+吻>Fun;
+吼>Kou;
+吽>In;
+吾>Go;
+呀>Ga;
+呂>Ryo;
+呆>Bou;
+呈>Tei;
+呉>Go;
+告>Koku;
+呎>Seki;
+呑>Don;
+呟>Gen;
+周>Shuu;
+呪>Ju;
+呰>Shi;
+呱>Ko;
+味>Mi;
+呵>Ka;
+呶>Do;
+呷>Kou;
+呻>Shin;
+呼>Ko;
+命>Mei;
+咀>So;
+咄>Totsu;
+咆>Hou;
+咋>Saku;
+和>Wa;
+咎>Kyuu;
+咏>Ei;
+咐>Ho;
+咒>Shu;
+咢>Gaku;
+咤>Ta;
+咥>Ki;
+咨>Shi;
+咫>Shi;
+咬>Kou;
+咯>Kaku;
+咲>Shou;
+咳>Gai;
+咸>Kan;
+咼>Ka;
+咽>In;
+咾>Rou;
+哀>Ai;
+品>Hin;
+哂>Shin;
+哄>Kou;
+哇>Ai;
+哈>Gou;
+哉>Sai;
+員>In;
+哢>Rou;
+哥>Ka;
+哦>Ga;
+哨>Shou;
+哩>Ri;
+哭>Koku;
+哮>Kou;
+哲>Tetsu;
+哺>Ho;
+哽>Kou;
+唄>Bai;
+唆>Sa;
+唇>Shin;
+唏>Ki;
+唐>Tou;
+唔>Go;
+唖>A;
+售>Shuu;
+唯>Yui;
+唱>Shou;
+唳>Rei;
+唸>Ten;
+唹>Yo;
+唾>Da;
+啀>Gai;
+啄>Taku;
+啅>Taku;
+商>Shou;
+啌>Kou;
+問>Mon;
+啓>Kei;
+啖>Tan;
+啗>Tan;
+啜>Setsu;
+啝>Ka;
+啣>Kan;
+啻>Shi;
+啼>Tei;
+啾>Shuu;
+喀>Kaku;
+喃>Nan;
+善>Zen;
+喇>Ratsu;
+喉>Kou;
+喊>Kan;
+喋>Chou;
+喘>Zen;
+喙>Kai;
+喚>Kan;
+喜>Ki;
+喝>Katsu;
+喞>Soku;
+喟>Ki;
+喧>Ken;
+喨>Ryou;
+喩>Yu;
+喪>Sou;
+喫>Kitsu;
+喬>Kyou;
+單>Tan;
+営>Ei;
+嗄>Sa;
+嗅>Kyuu;
+嗇>Shoku;
+嗔>Shin;
+嗚>O;
+嗜>Shi;
+嗟>Sa;
+嗣>Shi;
+嗤>Shi;
+嗷>Gou;
+嗹>Ren;
+嗽>Soku;
+嗾>Sou;
+嘆>Tan;
+嘉>Ka;
+嘔>Ou;
+嘖>Saku;
+嘗>Shou;
+嘘>Kyo;
+嘛>Ma;
+嘩>Ka;
+嘯>Shou;
+嘱>Shoku;
+嘲>Tou;
+嘴>Shi;
+嘶>Sei;
+嘸>Bu;
+噂>Son;
+噌>Sou;
+噎>Itsu;
+噐>Ki;
+噛>Gou;
+噤>Kin;
+器>Ki;
+噪>Sou;
+噫>I;
+噬>Zei;
+噴>Fun;
+噸>Ton;
+嚀>Dei;
+嚆>Kou;
+嚇>Kaku;
+嚊>Hi;
+嚏>Tei;
+嚔>Tei;
+嚠>Ryuu;
+嚢>Nou;
+嚥>En;
+嚮>Kou;
+嚴>Gen;
+嚶>Ou;
+嚼>Shaku;
+囀>Ten;
+囁>Shou;
+囂>Gou;
+囃>Sou;
+囈>Gei;
+囎>So;
+囑>Shoku;
+囓>Ketsu;
+囗>I;
+囘>Kai;
+囚>Shuu;
+四>Shi;
+回>Kai;
+因>In;
+団>Dan;
+囮>Ka;
+困>Kon;
+囲>I;
+図>To;
+囹>Rei;
+固>Ko;
+国>Koku;
+囿>Yuu;
+圀>Koku;
+圃>Ho;
+圄>Gyo;
+圈>Ken;
+圉>Gyo;
+國>Koku;
+圍>I;
+圏>Ken;
+園>En;
+圓>En;
+圖>To;
+團>Dan;
+圜>Kan;
+土>Do;
+圧>Atsu;
+在>Zai;
+圭>Kei;
+地>Chi;
+圻>Ki;
+址>Shi;
+坂>Han;
+均>Kin;
+坊>Bou;
+坎>Kan;
+坏>Hai;
+坐>Za;
+坑>Kou;
+坡>Ha;
+坤>Kon;
+坦>Tan;
+坩>Kan;
+坪>Hei;
+坿>Fu;
+垂>Sui;
+垈>Tai;
+垉>Hou;
+型>Kei;
+垓>Gai;
+垠>Gin;
+垢>Kou;
+垣>En;
+垤>Tetsu;
+埀>Sui;
+埃>Ai;
+埆>Kaku;
+埋>Mai;
+城>Jou;
+埒>Rachi;
+埓>Rachi;
+埔>Ho;
+埜>Sho;
+域>Iki;
+埠>Fu;
+埣>Sai;
+埴>Shoku;
+執>Shitsu;
+培>Bai;
+基>Ki;
+埼>Ki;
+堀>Kutsu;
+堂>Dou;
+堅>Ken;
+堆>Tai;
+堊>A;
+堋>Hou;
+堕>Da;
+堙>In;
+堝>Ka;
+堡>Hou;
+堤>Tei;
+堪>Kan;
+堯>Gyou;
+堰>En;
+報>Hou;
+場>Jou;
+堵>To;
+堺>Kai;
+堽>Kou;
+塁>Rui;
+塊>Kai;
+塋>Ei;
+塑>So;
+塒>Shi;
+塔>Tou;
+塗>To;
+塘>Tou;
+塙>Kaku;
+塚>Chou;
+塞>Soku;
+塢>O;
+塩>En;
+填>Ten;
+塲>Jou;
+塵>Jin;
+塹>Zan;
+塾>Juku;
+境>Kyou;
+墅>Sho;
+墓>Bo;
+増>Zou;
+墜>Tsui;
+墟>Kyo;
+墨>Boku;
+墫>Shun;
+墮>Da;
+墳>Fun;
+墸>Sho;
+墺>Ou;
+墻>Shou;
+墾>Kon;
+壁>Heki;
+壅>You;
+壇>Dan;
+壊>Kai;
+壌>Jou;
+壑>Gaku;
+壓>Atsu;
+壕>Gou;
+壘>Rui;
+壙>Kou;
+壜>Tan;
+壞>Kai;
+壟>Ryou;
+壤>Jou;
+壥>Ten;
+士>Shi;
+壬>Jin;
+壮>Sou;
+壯>Sou;
+声>Sei;
+壱>Ichi;
+売>Bai;
+壷>Ko;
+壹>Ichi;
+壺>Ko;
+壻>Sei;
+壼>Kon;
+壽>Ju;
+夂>Chi;
+変>Hen;
+夊>Sui;
+夏>Ka;
+夐>Kei;
+夕>Seki;
+外>Gai;
+夘>Bou;
+夙>Shuku;
+多>Ta;
+夛>Ta;
+夜>Ya;
+夢>Mu;
+夥>Ka;
+大>Tai;
+天>Ten;
+太>Ta;
+夫>Fu;
+夬>Ketsu;
+夭>You;
+央>Ou;
+失>Shitsu;
+夲>Tou;
+夷>I;
+夸>Ko;
+夾>Kou;
+奄>En;
+奇>Ki;
+奈>Na;
+奉>Hou;
+奎>Kei;
+奏>Sou;
+奐>Kan;
+契>Setsu;
+奔>Hon;
+奕>Eki;
+套>Tou;
+奘>Jou;
+奚>Kei;
+奠>Ten;
+奢>Sha;
+奥>Ou;
+奧>Ou;
+奨>Shou;
+奩>Ren;
+奪>Datsu;
+奬>Shou;
+奮>Fun;
+女>Jo;
+奴>Do;
+奸>Kan;
+好>Kou;
+妁>Shaku;
+如>Jo;
+妃>Hi;
+妄>Bou;
+妊>Nin;
+妍>Ken;
+妓>Ki;
+妖>You;
+妙>Myou;
+妛>Shi;
+妝>Sou;
+妣>Hi;
+妥>Da;
+妨>Bou;
+妬>To;
+妲>Datsu;
+妹>Mai;
+妻>Sai;
+妾>Shou;
+姆>Bo;
+姉>Shi;
+始>Shi;
+姐>So;
+姑>Ko;
+姓>Sei;
+委>I;
+姙>Nin;
+姚>You;
+姜>Kyou;
+姥>Bo;
+姦>Kan;
+姨>I;
+姪>Tetsu;
+姫>Ki;
+姶>Ou;
+姻>In;
+姿>Shi;
+威>I;
+娃>A;
+娉>Hei;
+娑>Sha;
+娘>Jou;
+娚>Nan;
+娜>Da;
+娟>Ken;
+娠>Shin;
+娥>Ga;
+娩>Ben;
+娯>Go;
+娵>Shu;
+娶>Shu;
+娼>Shou;
+婀>A;
+婁>Rou;
+婆>Ba;
+婉>En;
+婚>Kon;
+婢>Hi;
+婦>Fu;
+婪>Ran;
+婬>In;
+婿>Sei;
+媒>Bai;
+媚>Bi;
+媛>En;
+媼>Ou;
+媽>Bo;
+媾>Kou;
+嫁>Ka;
+嫂>Sou;
+嫉>Shitsu;
+嫋>Jou;
+嫌>Ken;
+嫐>Jou;
+嫖>Hyou;
+嫗>Ou;
+嫡>Chaku;
+嫣>En;
+嫦>Kou;
+嫩>Don;
+嫺>Kan;
+嫻>Kan;
+嬉>Ki;
+嬋>Sen;
+嬌>Kyou;
+嬖>Hei;
+嬢>Jou;
+嬪>Hin;
+嬬>Shu;
+嬰>Ei;
+嬲>Jou;
+嬾>Ran;
+孀>Sou;
+孃>Jou;
+孅>Sen;
+子>Shi;
+孑>Getsu;
+孔>Kou;
+孕>You;
+字>Ji;
+存>Son;
+孚>Fu;
+孛>Botsu;
+孜>Shi;
+孝>Kou;
+孟>Mou;
+季>Ki;
+孤>Ko;
+孥>Do;
+学>Gaku;
+孩>Kai;
+孫>Son;
+孰>Juku;
+孱>Sen;
+孳>Shi;
+孵>Fu;
+學>Gaku;
+孺>Ju;
+宀>Ben;
+它>Ta;
+宅>Taku;
+宇>U;
+守>Shu;
+安>An;
+宋>Sou;
+完>Kan;
+宍>Niku;
+宏>Kou;
+宕>Tou;
+宗>Shuu;
+官>Kan;
+宙>Chuu;
+定>Tei;
+宛>En;
+宜>Gi;
+宝>Hou;
+実>Jitsu;
+客>Kyaku;
+宣>Sen;
+室>Shitsu;
+宥>Yuu;
+宦>Kan;
+宮>Kyuu;
+宰>Sai;
+害>Gai;
+宴>En;
+宵>Shou;
+家>Ka;
+宸>Shin;
+容>You;
+宿>Shuku;
+寂>Jaku;
+寃>En;
+寄>Ki;
+寅>In;
+密>Mitsu;
+寇>Kou;
+寉>Kaku;
+富>Fu;
+寐>Bi;
+寒>Kan;
+寓>Guu;
+寔>Shoku;
+寛>Kan;
+寝>Shin;
+寞>Baku;
+察>Satsu;
+寡>Ka;
+寢>Shin;
+寤>Go;
+寥>Ryou;
+實>Jitsu;
+寧>Nei;
+寨>Sai;
+審>Shin;
+寫>Sha;
+寮>Ryou;
+寰>Kan;
+寳>Hou;
+寵>Chou;
+寶>Hou;
+寸>Sun;
+寺>Ji;
+対>Tai;
+寿>Ju;
+封>Fuu;
+専>Sen;
+射>Sha;
+尅>Koku;
+将>Shou;
+將>Shou;
+專>Sen;
+尉>I;
+尊>Son;
+尋>Jin;
+對>Tai;
+導>Dou;
+小>Shou;
+少>Shou;
+尓>Ji;
+尖>Sen;
+尚>Shou;
+尠>Sen;
+尢>Ou;
+尤>Yuu;
+尨>Bou;
+尭>Gyou;
+就>Shuu;
+尸>Shi;
+尹>In;
+尺>Shaku;
+尻>Kou;
+尼>Ni;
+尽>Jin;
+尾>Bi;
+尿>Nyou;
+局>Kyoku;
+屁>Hi;
+居>Kyo;
+屆>Kai;
+屈>Kutsu;
+届>Kai;
+屋>Oku;
+屍>Shi;
+屎>Shi;
+屏>Hei;
+屐>Geki;
+屑>Setsu;
+屓>Ki;
+展>Ten;
+属>Zoku;
+屠>To;
+屡>Ru;
+層>Sou;
+履>Ri;
+屬>Zoku;
+屮>Sa;
+屯>Ton;
+山>San;
+屹>Kitsu;
+岌>Kyuu;
+岐>Ki;
+岑>Shin;
+岔>Sa;
+岡>Kou;
+岨>So;
+岩>Gan;
+岫>Shuu;
+岬>Kou;
+岱>Tai;
+岳>Gaku;
+岶>Haku;
+岷>Bin;
+岸>Gan;
+岻>Ji;
+岾>Sen;
+峇>Kou;
+峙>Ji;
+峡>Kyou;
+峨>Ga;
+峩>Ga;
+峪>Yoku;
+峭>Shou;
+峯>Hou;
+峰>Hou;
+島>Tou;
+峺>Kou;
+峻>Shun;
+峽>Kyou;
+崇>Suu;
+崋>Ka;
+崎>Ki;
+崑>Kon;
+崔>Sai;
+崕>Gai;
+崖>Gai;
+崗>Kou;
+崘>Ron;
+崙>Ron;
+崚>Ryou;
+崛>Kutsu;
+崟>Gin;
+崢>Sou;
+崩>Hou;
+嵋>Bi;
+嵌>Kan;
+嵎>Guu;
+嵐>Ran;
+嵒>Gan;
+嵜>Ki;
+嵩>Suu;
+嵬>Kai;
+嵯>Sa;
+嵳>Sa;
+嶂>Shou;
+嶄>San;
+嶇>Ku;
+嶋>Tou;
+嶌>Tou;
+嶐>Ryuu;
+嶝>Tou;
+嶢>Gyou;
+嶬>Gi;
+嶮>Ken;
+嶷>Gi;
+嶺>Rei;
+嶼>Sho;
+嶽>Gaku;
+巉>San;
+巌>Gan;
+巍>Gi;
+巒>Ran;
+巓>Ten;
+巖>Gan;
+巛>Sen;
+川>Sen;
+州>Shuu;
+巡>Jun;
+巣>Sou;
+工>Kou;
+左>Sa;
+巧>Kou;
+巨>Kyo;
+巫>Fu;
+差>Shi;
+己>Ki;
+已>I;
+巳>Shi;
+巴>Ha;
+巵>Shi;
+巷>Kou;
+巻>Kan;
+巽>Son;
+巾>Kin;
+市>Shi;
+布>Fu;
+帆>Han;
+帋>Shi;
+希>Ki;
+帑>Do;
+帖>Jou;
+帙>Chitsu;
+帚>Sou;
+帛>Haku;
+帝>Tei;
+帥>Sotsu;
+師>Shi;
+席>Seki;
+帯>Tai;
+帰>Ki;
+帳>Chou;
+帶>Tai;
+帷>I;
+常>Jou;
+帽>Bou;
+幀>Tei;
+幃>I;
+幄>Aku;
+幅>Fuku;
+幇>Hou;
+幌>Kou;
+幎>Beki;
+幔>Ban;
+幕>Maku;
+幗>Kaku;
+幟>Shi;
+幡>Han;
+幢>Tou;
+幣>Hei;
+幤>Hei;
+干>Kan;
+平>Hei;
+年>Nen;
+幵>Ken;
+并>Hei;
+幸>Kou;
+幹>Kan;
+幺>You;
+幻>Gen;
+幼>You;
+幽>Yuu;
+幾>Ki;
+广>Gen;
+庁>Chou;
+広>Kou;
+庄>Sou;
+庇>Hi;
+床>Shou;
+序>Jo;
+底>Tei;
+庖>Hou;
+店>Ten;
+庚>Kou;
+府>Fu;
+庠>Shou;
+度>Taku;
+座>Za;
+庫>Ko;
+庭>Tei;
+庵>An;
+庶>Sho;
+康>Kou;
+庸>You;
+廁>Shi;
+廂>Shou;
+廃>Hai;
+廈>Ka;
+廉>Ren;
+廊>Rou;
+廐>Kyuu;
+廓>Kaku;
+廖>Ryou;
+廚>Zu;
+廛>Ten;
+廝>Shi;
+廟>Byou;
+廠>Shou;
+廡>Bu;
+廢>Hai;
+廣>Kou;
+廨>Kai;
+廩>Rin;
+廬>Ryo;
+廰>Chou;
+廱>You;
+廳>Chou;
+廴>In;
+延>En;
+廷>Tei;
+廸>Teki;
+建>Ken;
+廻>Kai;
+廼>Dai;
+廾>Kyou;
+廿>Juu;
+弁>Ben;
+弃>Ki;
+弄>Rou;
+弉>Jou;
+弊>Hei;
+弋>Yoku;
+弌>Itsu;
+弍>Ni;
+式>Shiki;
+弐>Ni;
+弑>Shi;
+弓>Kyuu;
+弔>Chou;
+引>In;
+弗>Futsu;
+弘>Kou;
+弛>Shi;
+弟>Tei;
+弥>Mi;
+弦>Gen;
+弧>Ko;
+弩>Do;
+弭>Bi;
+弯>Wan;
+弱>Jaku;
+張>Chou;
+強>Kyou;
+弸>Hou;
+弼>Hitsu;
+弾>Dan;
+彁>Sei;
+彈>Dan;
+彊>Kyou;
+彌>Bi;
+彎>Wan;
+彑>Kei;
+当>Tou;
+彖>Tan;
+彗>Sui;
+彙>I;
+彜>I;
+彝>I;
+彡>San;
+形>Kei;
+彦>Gen;
+彩>Sai;
+彪>Hyou;
+彫>Chou;
+彬>Hin;
+彭>Hou;
+彰>Shou;
+影>Ei;
+彳>Teki;
+彷>Hou;
+役>Yaku;
+彼>Hi;
+彿>Futsu;
+往>Ou;
+征>Sei;
+徂>So;
+徃>Ou;
+径>Kei;
+待>Tai;
+徇>Shun;
+很>Kon;
+徊>Kai;
+律>Ritsu;
+後>Go;
+徐>Jo;
+徑>Kei;
+徒>To;
+従>Juu;
+得>Toku;
+徘>Hai;
+徙>Shi;
+從>Juu;
+徠>Rai;
+御>Gyo;
+徨>Kou;
+復>Fuku;
+循>Jun;
+徭>You;
+微>Bi;
+徳>Toku;
+徴>Chou;
+徹>Tetsu;
+徼>Kyou;
+徽>Ki;
+心>Shin;
+必>Hitsu;
+忌>Ki;
+忍>Nin;
+忖>Son;
+志>Shi;
+忘>Bou;
+忙>Bou;
+応>Ou;
+忝>Ten;
+忠>Chuu;
+忤>Go;
+快>Kai;
+忰>Sui;
+忱>Shin;
+念>Nen;
+忸>Jiku;
+忻>Kin;
+忽>Kotsu;
+忿>Fun;
+怎>Shin;
+怏>You;
+怐>Kou;
+怒>Do;
+怕>Ha;
+怖>Fu;
+怙>Ko;
+怛>Datsu;
+怜>Rei;
+思>Shi;
+怠>Tai;
+怡>I;
+急>Kyuu;
+怦>Hou;
+性>Sei;
+怨>En;
+怩>Ji;
+怪>Kai;
+怫>Futsu;
+怯>Kyou;
+怱>Sou;
+恁>In;
+恂>Jun;
+恃>Ji;
+恆>Kou;
+恊>Kyou;
+恋>Ren;
+恍>Kou;
+恐>Kyou;
+恒>Kou;
+恕>Jo;
+恙>You;
+恚>I;
+恟>Kyou;
+恠>Kai;
+恢>Kai;
+恣>Shi;
+恤>Jutsu;
+恥>Chi;
+恨>Kon;
+恩>On;
+恪>Kaku;
+恫>Dou;
+恬>Ten;
+恭>Kyou;
+息>Soku;
+恰>Kou;
+恵>Kei;
+恷>Kyuu;
+悁>En;
+悃>Kon;
+悄>Shou;
+悉>Shitsu;
+悋>Rin;
+悌>Tei;
+悍>Kan;
+悒>Yuu;
+悔>Kai;
+悖>Hai;
+悗>Ban;
+悚>Shou;
+悛>Sen;
+悟>Go;
+悠>Yuu;
+患>Kan;
+悦>Etsu;
+悧>Ri;
+悩>Nou;
+悪>Aku;
+悲>Hi;
+悳>Toku;
+悴>Sui;
+悵>Chou;
+悶>Mon;
+悸>Ki;
+悼>Tou;
+悽>Sei;
+情>Jou;
+惆>Chuu;
+惇>Ton;
+惑>Waku;
+惓>Ken;
+惘>Bou;
+惚>Kotsu;
+惜>Seki;
+惟>I;
+惠>Kei;
+惡>O;
+惣>Sou;
+惧>Ku;
+惨>San;
+惰>Da;
+惱>Nou;
+想>Sou;
+惴>Zui;
+惶>Kou;
+惷>Shun;
+惹>Ja;
+惺>Sei;
+惻>Soku;
+愀>Shou;
+愁>Shuu;
+愃>Ken;
+愆>Ken;
+愈>Yu;
+愉>Yu;
+愍>Bin;
+愎>Hyoku;
+意>I;
+愕>Gaku;
+愚>Gu;
+愛>Ai;
+感>Kan;
+愡>Sou;
+愧>Ki;
+愨>Kaku;
+愬>So;
+愴>Sou;
+愼>Shin;
+愽>Haku;
+愾>Ki;
+愿>Gen;
+慂>You;
+慄>Ritsu;
+慇>In;
+慈>Ji;
+慊>Ken;
+態>Tai;
+慌>Kou;
+慍>Un;
+慎>Shin;
+慓>Hyou;
+慕>Bo;
+慘>San;
+慙>Zan;
+慚>Zan;
+慝>Toku;
+慟>Dou;
+慢>Man;
+慣>Kan;
+慥>Zou;
+慧>Kei;
+慨>Gai;
+慫>Shou;
+慮>Ryo;
+慯>Shou;
+慰>I;
+慱>Tan;
+慳>Kan;
+慴>Shou;
+慵>You;
+慶>Kei;
+慷>Kou;
+慾>Yoku;
+憂>Yuu;
+憇>Kei;
+憊>Hai;
+憎>Zou;
+憐>Ren;
+憑>Hyou;
+憔>Shou;
+憖>Gin;
+憙>Ki;
+憚>Tan;
+憤>Fun;
+憧>Dou;
+憩>Kei;
+憫>Bin;
+憬>Kei;
+憮>Bu;
+憲>Ken;
+憶>Oku;
+憺>Tan;
+憾>Kan;
+懃>Kin;
+懆>Sou;
+懇>Kon;
+懈>Kai;
+應>You;
+懊>Ou;
+懋>Bou;
+懌>Eki;
+懍>Rin;
+懐>Kai;
+懣>Mon;
+懦>Da;
+懲>Chou;
+懴>Zan;
+懶>Ran;
+懷>Kai;
+懸>Ken;
+懺>Zan;
+懼>Ku;
+懽>Kan;
+懾>Shou;
+懿>I;
+戀>Ren;
+戈>Ka;
+戉>Etsu;
+戊>Bo;
+戌>Jutsu;
+戍>Ju;
+戎>Juu;
+成>Sei;
+我>Ga;
+戒>Kai;
+戔>San;
+或>Waku;
+戚>Seki;
+戛>Katsu;
+戝>Zoku;
+戞>Katsu;
+戟>Geki;
+戡>Kan;
+戦>Sen;
+截>Setsu;
+戮>Riku;
+戯>Gi;
+戰>Sen;
+戲>Gi;
+戳>Taku;
+戴>Tai;
+戸>Ko;
+戻>Rei;
+房>Bou;
+所>Sho;
+扁>Hen;
+扇>Sen;
+扈>Ko;
+扉>Hi;
+手>Shu;
+才>Sai;
+扎>Satsu;
+打>Da;
+払>Futsu;
+托>Taku;
+扛>Kou;
+扞>Kan;
+扠>Sa;
+扣>Kou;
+扮>Fun;
+扱>Sou;
+扶>Fu;
+批>Hi;
+扼>Aku;
+找>Ka;
+承>Shou;
+技>Gi;
+抂>Kyou;
+抃>Ben;
+抄>Shou;
+抉>Ketsu;
+把>Ha;
+抑>Yoku;
+抒>Jo;
+抓>Sou;
+抔>Hou;
+投>Tou;
+抖>Tou;
+抗>Kou;
+折>Setsu;
+抛>Hou;
+抜>Batsu;
+択>Taku;
+披>Hi;
+抬>Tai;
+抱>Hou;
+抵>Tei;
+抹>Matsu;
+抻>Shin;
+押>Ou;
+抽>Chuu;
+拂>Futsu;
+担>Tan;
+拆>Taku;
+拇>Bo;
+拈>Den;
+拉>Ratsu;
+拊>Fu;
+拌>Han;
+拍>Haku;
+拏>Da;
+拐>Kai;
+拑>Kan;
+拒>Kyo;
+拓>Taku;
+拔>Batsu;
+拗>Ou;
+拘>Kou;
+拙>Setsu;
+招>Shou;
+拜>Hai;
+拝>Hai;
+拠>Kyo;
+拡>Kaku;
+括>Katsu;
+拭>Shiki;
+拮>Kitsu;
+拯>Jou;
+拱>Kyou;
+拳>Ken;
+拵>Son;
+拶>Satsu;
+拷>Gou;
+拾>Shuu;
+拿>Da;
+持>Ji;
+挂>Kei;
+指>Shi;
+挈>Ketsu;
+按>An;
+挌>Kaku;
+挑>Chou;
+挙>Kyo;
+挟>Kyou;
+挧>Ku;
+挨>Ai;
+挫>Za;
+振>Shin;
+挺>Tei;
+挽>Ban;
+挾>Kyou;
+挿>Sou;
+捉>Soku;
+捌>Hatsu;
+捍>Kan;
+捏>Detsu;
+捐>En;
+捕>Ho;
+捗>Ho;
+捜>Sou;
+捧>Hou;
+捨>Sha;
+捩>Retsu;
+捫>Mon;
+据>Kyo;
+捲>Ken;
+捶>Sui;
+捷>Shou;
+捺>Natsu;
+捻>Nen;
+掀>Kin;
+掃>Sou;
+授>Ju;
+掉>Tou;
+掌>Shou;
+掎>Ki;
+掏>Tou;
+排>Hai;
+掖>Eki;
+掘>Kutsu;
+掛>Ka;
+掟>Tou;
+掠>Ryaku;
+採>Sai;
+探>Tan;
+掣>Sei;
+接>Setsu;
+控>Kou;
+推>Sui;
+掩>En;
+措>So;
+掫>Sou;
+掬>Kiku;
+掲>Kei;
+掴>Kaku;
+掻>Sou;
+掾>En;
+揀>Kan;
+揃>Sen;
+揄>Yu;
+揆>Ki;
+揉>Juu;
+描>Byou;
+提>Tei;
+插>Sou;
+揖>Yuu;
+揚>You;
+換>Kan;
+握>Aku;
+揣>Shi;
+揩>Kai;
+揮>Ki;
+援>En;
+揶>Ya;
+揺>You;
+搆>Kou;
+損>Son;
+搏>Haku;
+搓>Sa;
+搖>You;
+搗>Tou;
+搜>Sou;
+搦>Jaku;
+搨>Tou;
+搬>Han;
+搭>Tou;
+搴>Ken;
+搶>Shou;
+携>Kei;
+搾>Saku;
+摂>Setsu;
+摎>Kyuu;
+摘>Teki;
+摧>Sai;
+摩>Ma;
+摯>Shi;
+摶>Tan;
+摸>Mo;
+摺>Shou;
+撃>Geki;
+撈>Rou;
+撒>San;
+撓>Dou;
+撕>Sei;
+撚>Nen;
+撞>Shu;
+撤>Tetsu;
+撥>Hatsu;
+撩>Ryou;
+撫>Bu;
+播>Ha;
+撮>Satsu;
+撰>San;
+撲>Boku;
+撹>Kaku;
+撻>Tachi;
+撼>Kan;
+擁>You;
+擂>Rai;
+擅>Sen;
+擇>Taku;
+操>Sou;
+擒>Kin;
+擔>Tan;
+擘>Haku;
+據>Kyo;
+擠>Sei;
+擡>Tai;
+擢>Teki;
+擣>Tou;
+擦>Satsu;
+擧>Kyo;
+擬>Gi;
+擯>Hin;
+擱>Kaku;
+擲>Teki;
+擴>Kaku;
+擶>Sen;
+擺>Hai;
+擽>Ryaku;
+擾>Jou;
+攀>Han;
+攅>San;
+攘>Jou;
+攜>Kei;
+攝>Setsu;
+攣>Ren;
+攤>Tan;
+攪>Kaku;
+攫>Kaku;
+攬>Ran;
+支>Shi;
+攴>Hoku;
+攵>Boku;
+收>Shuu;
+攷>Kou;
+攸>Yuu;
+改>Kai;
+攻>Kou;
+放>Hou;
+政>Sei;
+故>Ko;
+效>Kou;
+敍>Jo;
+敏>Bin;
+救>Kyuu;
+敕>Choku;
+敖>Gou;
+敗>Hai;
+敘>Jo;
+教>Kyou;
+敝>Hei;
+敞>Shou;
+敢>Kan;
+散>San;
+敦>Ton;
+敬>Kei;
+数>Suu;
+敲>Kou;
+整>Sei;
+敵>Teki;
+敷>Fu;
+數>Suu;
+斂>Ren;
+斃>Hei;
+文>Bun;
+斈>Gaku;
+斉>Sei;
+斌>Hin;
+斎>Sai;
+斐>Hi;
+斑>Han;
+斗>To;
+料>Ryou;
+斛>Koku;
+斜>Sha;
+斟>Shin;
+斡>Atsu;
+斤>Kin;
+斥>Seki;
+斧>Fu;
+斫>Shaku;
+斬>Zan;
+断>Dan;
+斯>Shi;
+新>Shin;
+斷>Dan;
+方>Hou;
+於>O;
+施>Shi;
+旁>Hou;
+旃>Sen;
+旄>Bou;
+旅>Ryo;
+旆>Hai;
+旋>Sen;
+旌>Sei;
+族>Zoku;
+旒>Ryuu;
+旗>Ki;
+旙>Han;
+旛>Han;
+无>Bu;
+旡>Ki;
+既>Ki;
+日>Nichi;
+旦>Tan;
+旧>Kyuu;
+旨>Shi;
+早>Sou;
+旬>Jun;
+旭>Kyoku;
+旱>Kan;
+旺>Ou;
+旻>Bin;
+昂>Kou;
+昃>Soku;
+昆>Kon;
+昇>Shou;
+昊>Kou;
+昌>Shou;
+明>Mei;
+昏>Kon;
+易>Eki;
+昔>Seki;
+昜>You;
+星>Sei;
+映>Ei;
+春>Shun;
+昧>Mai;
+昨>Saku;
+昭>Shou;
+是>Ze;
+昴>Bou;
+昵>Jitsu;
+昶>Chou;
+昼>Chuu;
+昿>Kou;
+晁>Chou;
+時>Ji;
+晃>Kou;
+晄>Kou;
+晉>Shin;
+晋>Shin;
+晏>An;
+晒>Sai;
+晝>Chuu;
+晞>Ki;
+晟>Sei;
+晢>Setsu;
+晤>Go;
+晦>Kai;
+晧>Kou;
+晨>Shin;
+晩>Ban;
+普>Fu;
+景>Kei;
+晰>Seki;
+晴>Sei;
+晶>Shou;
+智>Chi;
+暁>Gyou;
+暃>Hi;
+暄>Ken;
+暇>Ka;
+暈>Un;
+暉>Ki;
+暎>Ei;
+暑>Sho;
+暖>Dan;
+暗>An;
+暘>You;
+暝>Mei;
+暢>Chou;
+暦>Reki;
+暫>Zan;
+暮>Bo;
+暴>Bou;
+暸>Ryou;
+暹>Sen;
+暼>Hetsu;
+暾>Ton;
+曁>Ki;
+曄>You;
+曇>Don;
+曉>Gyou;
+曖>Ai;
+曙>Sho;
+曚>Bou;
+曜>You;
+曝>Baku;
+曠>Kou;
+曦>Gi;
+曩>Dou;
+曰>Etsu;
+曲>Kyoku;
+曳>Ei;
+更>Kou;
+曵>Ei;
+曷>Katsu;
+書>Sho;
+曹>Sou;
+曼>Ban;
+曽>Zo;
+曾>So;
+替>Tai;
+最>Sai;
+會>Kai;
+月>Getsu;
+有>Yuu;
+朋>Hou;
+服>Fuku;
+朏>Hi;
+朔>Saku;
+朕>Chin;
+朖>Rou;
+朗>Rou;
+望>Bou;
+朝>Chou;
+朞>Ki;
+期>Ki;
+朦>Bou;
+朧>Rou;
+木>Boku;
+未>Mi;
+末>Matsu;
+本>Hon;
+札>Satsu;
+朮>Jutsu;
+朱>Shu;
+朴>Boku;
+朶>Da;
+朷>Tou;
+朸>Ryoku;
+机>Ki;
+朽>Kyuu;
+朿>Shi;
+杆>Kan;
+杉>San;
+李>Ri;
+杏>Kyou;
+材>Zai;
+村>Son;
+杓>Hyou;
+杖>Jou;
+杙>Yoku;
+杜>Do;
+杞>Ko;
+束>Soku;
+杠>Kou;
+条>Jou;
+来>Rai;
+杪>Byou;
+杭>Kou;
+杯>Hai;
+杰>Ketsu;
+東>Tou;
+杲>Kou;
+杳>You;
+杵>Sho;
+杷>Ha;
+杼>Cho;
+松>Shou;
+板>Han;
+枅>Kei;
+枇>Hi;
+枉>Ou;
+枋>Hou;
+枌>Fun;
+析>Seki;
+枕>Chin;
+林>Rin;
+枚>Mai;
+果>Ka;
+枝>Shi;
+枢>Suu;
+枦>Ro;
+枩>Shou;
+枯>Ko;
+枳>Ki;
+枴>Kai;
+架>Ka;
+枷>Ka;
+枸>Ku;
+枹>Hou;
+柁>Ta;
+柄>Hei;
+柆>Rou;
+柊>Shuu;
+柎>Fu;
+柏>Haku;
+某>Bou;
+柑>Kan;
+染>Sen;
+柔>Nyuu;
+柘>Sha;
+柚>Yuu;
+柝>Taku;
+柞>Saku;
+柢>Tei;
+柤>Sa;
+柧>Ko;
+柩>Kyuu;
+柬>Kan;
+柮>Totsu;
+柯>Ka;
+柱>Chuu;
+柳>Ryuu;
+柴>Sai;
+柵>Saku;
+査>Sa;
+柾>Kyuu;
+柿>Shi;
+栄>Ei;
+栓>Sen;
+栖>Sei;
+栗>Ritsu;
+栞>Kan;
+校>Kou;
+栢>Haku;
+栩>Ku;
+株>Chu;
+栫>Son;
+栲>Gou;
+栴>Sen;
+核>Kaku;
+根>Kon;
+格>Kou;
+栽>Sai;
+桀>Ketsu;
+桁>Kou;
+桂>Kei;
+桃>Tou;
+框>Kyou;
+案>An;
+桍>Ko;
+桎>Shitsu;
+桐>Dou;
+桑>Sou;
+桓>Kan;
+桔>Kitsu;
+桙>U;
+桜>Ou;
+桟>San;
+档>Tou;
+桧>Kai;
+桴>Fu;
+桶>Tou;
+桷>Kaku;
+桾>Kun;
+桿>Kan;
+梁>Ryou;
+梃>Tei;
+梅>Bai;
+梍>Sou;
+梏>Koku;
+梓>Shi;
+梔>Shi;
+梗>Kou;
+梛>Da;
+條>Jou;
+梟>Kyou;
+梠>Ryo;
+梢>Shou;
+梦>Mu;
+梧>Go;
+梨>Ri;
+梭>Sa;
+梯>Tei;
+械>Kai;
+梱>Kon;
+梳>So;
+梵>Fuu;
+梶>Bi;
+梹>Bin;
+梼>Tou;
+棄>Ki;
+棆>Rin;
+棉>Men;
+棊>Ki;
+棋>Ki;
+棍>Kon;
+棒>Bou;
+棔>Kon;
+棕>Shu;
+棗>Sou;
+棘>Kyoku;
+棚>Hou;
+棟>Tou;
+棠>Tou;
+棡>Kou;
+棣>Tei;
+棧>San;
+森>Shin;
+棯>Jin;
+棲>Sei;
+棹>Tou;
+棺>Kan;
+椀>Wan;
+椁>Kaku;
+椄>Setsu;
+椅>I;
+椈>Kiku;
+椋>Ryou;
+椌>Kou;
+植>Shoku;
+椎>Tsui;
+椏>A;
+椒>Shou;
+検>Ken;
+椢>Kai;
+椦>Ken;
+椰>Ya;
+椴>Tan;
+椶>Shu;
+椹>Chin;
+椽>Ten;
+椿>Chin;
+楊>You;
+楓>Fuu;
+楔>Setsu;
+楕>Da;
+楙>Bou;
+楚>So;
+楜>Ko;
+楝>Ren;
+楞>Rou;
+楠>Nan;
+楡>Yu;
+楢>Shuu;
+楪>You;
+楫>Shuu;
+業>Gyou;
+楮>Cho;
+楯>Jun;
+楳>Bai;
+楴>Tei;
+極>Goku;
+楷>Kai;
+楸>Shuu;
+楹>Ei;
+楼>Rou;
+楽>Gaku;
+概>Gai;
+榎>Ka;
+榑>Fu;
+榔>Rou;
+榕>You;
+榛>Shin;
+榜>Bou;
+榠>Bei;
+榧>Hi;
+榮>Ei;
+榱>Sui;
+榲>Otsu;
+榴>Ryuu;
+榻>Tou;
+榾>Kotsu;
+榿>Ki;
+槁>Kou;
+槃>Han;
+槇>Ten;
+槊>Saku;
+構>Kou;
+槌>Tsui;
+槍>Sou;
+槎>Sa;
+槐>Kai;
+槓>Kou;
+様>You;
+槙>Ten;
+槝>Tou;
+槞>Rou;
+槧>San;
+槨>Kaku;
+槫>Tan;
+槭>Shuku;
+槲>Koku;
+槹>Kou;
+槻>Ki;
+槽>Sou;
+槿>Kin;
+樂>Gaku;
+樅>Shou;
+樊>Han;
+樋>Tou;
+樌>Kan;
+樒>Mitsu;
+樓>Rou;
+樔>Sou;
+樗>Cho;
+標>Hyou;
+樛>Kyuu;
+樞>Suu;
+樟>Shou;
+模>Mo;
+樢>Boku;
+樣>You;
+権>Ken;
+横>Ou;
+樵>Shou;
+樶>Sai;
+樸>Boku;
+樹>Ju;
+樺>Ka;
+樽>Son;
+橄>Kan;
+橇>Zei;
+橈>Dou;
+橋>Kyou;
+橘>Kitsu;
+橙>Tou;
+機>Ki;
+橡>Shou;
+橢>Da;
+橦>Tou;
+橸>Shou;
+橿>Kyou;
+檀>Tan;
+檄>Geki;
+檍>Yoku;
+檎>Go;
+檐>En;
+檗>Haku;
+檜>Kai;
+檠>Kei;
+檢>Ken;
+檣>Shou;
+檪>Reki;
+檬>Bou;
+檮>Tou;
+檳>Bin;
+檸>Nei;
+檻>Kan;
+櫁>Mitsu;
+櫂>Tou;
+櫃>Ki;
+櫑>Rai;
+櫓>Ro;
+櫚>Ryo;
+櫛>Shitsu;
+櫞>En;
+櫟>Reki;
+櫨>Ro;
+櫪>Reki;
+櫺>Rei;
+櫻>Ou;
+欄>Ran;
+欅>Kyo;
+權>Ken;
+欒>Ran;
+欖>Ran;
+欝>Utsu;
+欠>Ketsu;
+次>Ji;
+欣>Gon;
+欧>Ou;
+欲>Yoku;
+欷>Ki;
+欸>Ai;
+欹>I;
+欺>Gi;
+欽>Kin;
+款>Kan;
+歃>Sou;
+歇>Ketsu;
+歉>Ken;
+歌>Ka;
+歎>Tan;
+歐>Ou;
+歓>Kan;
+歔>Kyo;
+歙>Kyuu;
+歛>Kan;
+歟>Yo;
+歡>Kan;
+止>Shi;
+正>Sei;
+此>Shi;
+武>Bu;
+歩>Ho;
+歪>Wai;
+歯>Shi;
+歳>Sei;
+歴>Reki;
+歸>Ki;
+歹>Gatsu;
+死>Shi;
+歿>Botsu;
+殀>You;
+殃>You;
+殄>Ten;
+殆>Tai;
+殉>Jun;
+殊>Shu;
+残>Zan;
+殍>Hyou;
+殕>Fuu;
+殖>Shoku;
+殘>Zan;
+殞>In;
+殤>Shou;
+殪>Ei;
+殫>Tan;
+殯>Hin;
+殱>Sen;
+殲>Sen;
+殳>Shu;
+殴>Ou;
+段>Dan;
+殷>In;
+殺>Satsu;
+殻>Kaku;
+殼>Kaku;
+殿>Ten;
+毀>Ki;
+毅>Ki;
+毆>Ou;
+毋>Bu;
+母>Bo;
+毎>Mai;
+毒>Doku;
+毓>Iku;
+比>Hi;
+毘>Hi;
+毛>Mou;
+毫>Kou;
+毬>Kyuu;
+毯>Tan;
+毳>Zei;
+氈>Sen;
+氏>Shi;
+民>Min;
+氓>Bou;
+气>Ki;
+気>Ki;
+氛>Fun;
+氣>Ki;
+氤>In;
+水>Sui;
+氷>Hyou;
+永>Ei;
+氾>Han;
+汀>Tei;
+汁>Juu;
+求>Kyuu;
+汎>Han;
+汐>Seki;
+汕>San;
+汗>Kan;
+汚>O;
+汝>Jo;
+汞>Kou;
+江>Kou;
+池>Chi;
+汨>Beki;
+汪>Ou;
+汰>Ta;
+汲>Kyuu;
+汳>Hen;
+決>Ketsu;
+汽>Ki;
+汾>Fun;
+沁>Shin;
+沂>Ki;
+沃>Yoku;
+沈>Chin;
+沌>Ton;
+沍>Go;
+沐>Boku;
+沒>Botsu;
+沓>Tou;
+沖>Chuu;
+沙>Sa;
+沚>Shi;
+沛>Hai;
+没>Botsu;
+沢>Taku;
+沫>Matsu;
+沮>Sho;
+沱>Ta;
+河>Ka;
+沸>Futsu;
+油>Yu;
+沺>Ten;
+治>Ji;
+沼>Shou;
+沽>Ko;
+沾>Ten;
+沿>En;
+況>Kyou;
+泄>Ei;
+泅>Shuu;
+泉>Sen;
+泊>Haku;
+泌>Hitsu;
+泓>Ou;
+法>Hou;
+泗>Shi;
+泙>Hou;
+泛>Han;
+泝>So;
+泡>Hou;
+波>Ha;
+泣>Kyuu;
+泥>Dei;
+注>Chuu;
+泪>Rui;
+泯>Bin;
+泰>Tai;
+泱>Ou;
+泳>Ei;
+洋>You;
+洌>Retsu;
+洒>Sei;
+洗>Sen;
+洙>Shu;
+洛>Raku;
+洞>Dou;
+洟>I;
+津>Shin;
+洩>Ei;
+洪>Kou;
+洫>Kyoku;
+洲>Shuu;
+洳>Jo;
+洵>Shun;
+洶>Kyou;
+洸>Kou;
+活>Katsu;
+洽>Kou;
+派>Ha;
+流>Ryuu;
+浄>Jou;
+浅>Sen;
+浙>Setsu;
+浚>Shun;
+浜>Hin;
+浣>Kan;
+浤>Kou;
+浦>Ho;
+浩>Kou;
+浪>Rou;
+浬>Ri;
+浮>Fu;
+浴>Yoku;
+海>Kai;
+浸>Shin;
+浹>Shou;
+涅>Netsu;
+消>Shou;
+涌>Yuu;
+涎>Sen;
+涓>Ken;
+涕>Tei;
+涙>Rui;
+涛>Tou;
+涜>Toku;
+涯>Gai;
+液>Eki;
+涵>Kan;
+涸>Ko;
+涼>Ryou;
+淀>Ten;
+淅>Seki;
+淆>Kou;
+淇>Ki;
+淋>Rin;
+淌>Shou;
+淑>Shuku;
+淒>Sei;
+淕>Riku;
+淘>Tou;
+淙>Sou;
+淞>Shou;
+淡>Tan;
+淤>Yo;
+淦>Kan;
+淨>Jou;
+淪>Rin;
+淫>In;
+淬>Sai;
+淮>Wai;
+深>Shin;
+淳>Shun;
+淵>En;
+混>Kon;
+淹>En;
+淺>Sen;
+添>Ten;
+清>Sei;
+渇>Katsu;
+済>Sai;
+渉>Shou;
+渊>En;
+渋>Juu;
+渓>Kei;
+渕>En;
+渙>Kan;
+渚>Sho;
+減>Gen;
+渝>Yu;
+渟>Tei;
+渠>Kyo;
+渡>To;
+渣>Sa;
+渤>Botsu;
+渥>Aku;
+渦>Ka;
+温>On;
+渫>Setsu;
+測>Soku;
+渭>I;
+渮>Ka;
+港>Kou;
+游>Yuu;
+渺>Byou;
+渾>Kon;
+湃>Hai;
+湊>Sou;
+湍>Tan;
+湎>Ben;
+湖>Ko;
+湘>Shou;
+湛>Tan;
+湟>Kou;
+湧>Yuu;
+湫>Shou;
+湮>In;
+湯>Tou;
+湲>Kan;
+湶>Sen;
+湾>Wan;
+湿>Shitsu;
+満>Man;
+溂>Ratsu;
+溌>Hatsu;
+溏>Tou;
+源>Gen;
+準>Jun;
+溘>Kou;
+溜>Ryuu;
+溝>Kou;
+溟>Mei;
+溢>Itsu;
+溥>Ho;
+溪>Kei;
+溯>So;
+溲>Sou;
+溶>You;
+溷>Kon;
+溺>Deki;
+溽>Joku;
+滂>Bou;
+滄>Sou;
+滅>Metsu;
+滉>Kou;
+滋>Ji;
+滌>Deki;
+滑>Katsu;
+滓>Sai;
+滔>Tou;
+滕>Tou;
+滝>Sou;
+滞>Tai;
+滬>Ko;
+滯>Tai;
+滲>Shin;
+滴>Teki;
+滷>Ro;
+滸>Ko;
+滾>Kon;
+滿>Man;
+漁>Ryou;
+漂>Hyou;
+漆>Shitsu;
+漉>Roku;
+漏>Rou;
+漑>Gai;
+漓>Ri;
+演>En;
+漕>Sou;
+漠>Baku;
+漢>Kan;
+漣>Ran;
+漫>Man;
+漬>Shi;
+漱>Sou;
+漲>Chou;
+漸>Zen;
+漾>You;
+漿>Shou;
+潁>Ei;
+潅>Kan;
+潔>Ketsu;
+潘>Han;
+潛>Sen;
+潜>Sen;
+潟>Seki;
+潤>Jun;
+潦>Rou;
+潭>Tan;
+潮>Chou;
+潯>Jin;
+潰>Kai;
+潴>Cho;
+潸>San;
+潺>San;
+潼>Dou;
+澀>Juu;
+澁>Juu;
+澂>Chou;
+澄>Chou;
+澆>Gyou;
+澎>Hou;
+澑>Ryuu;
+澗>Kan;
+澡>Sou;
+澣>Kan;
+澤>Taku;
+澪>Rei;
+澱>Ten;
+澳>Iku;
+澹>Tan;
+激>Geki;
+濁>Daku;
+濂>Ren;
+濃>Nou;
+濆>Fun;
+濔>Dei;
+濕>Shitsu;
+濘>Nei;
+濟>Sai;
+濠>Gou;
+濡>Ju;
+濤>Tou;
+濫>Ran;
+濬>Shun;
+濮>Hoku;
+濯>Taku;
+濱>Hin;
+濳>Sen;
+濶>Katsu;
+濺>Sen;
+濾>Ryo;
+瀁>You;
+瀉>Sha;
+瀋>Shin;
+瀏>Ryuu;
+瀑>Baku;
+瀕>Hin;
+瀘>Ro;
+瀚>Kan;
+瀛>Ei;
+瀝>Reki;
+瀞>Jou;
+瀟>Shou;
+瀦>Cho;
+瀧>Sou;
+瀬>Rai;
+瀰>Bi;
+瀲>Ren;
+瀾>Ran;
+灌>Kan;
+灑>Sai;
+灘>Dan;
+灣>Wan;
+火>Ka;
+灯>Tou;
+灰>Kai;
+灸>Kyuu;
+灼>Shaku;
+災>Sai;
+炉>Ro;
+炊>Sui;
+炎>En;
+炒>Sou;
+炙>Sha;
+炬>Ko;
+炭>Tan;
+炮>Hou;
+炯>Kei;
+炳>Hei;
+炸>Saku;
+点>Ten;
+為>I;
+烈>Retsu;
+烋>Kou;
+烏>U;
+烙>Raku;
+烝>Jou;
+烟>En;
+烱>Kei;
+烹>Hou;
+烽>Hou;
+焉>En;
+焔>En;
+焙>Hou;
+焚>Fun;
+焜>Kon;
+無>Mu;
+焦>Shou;
+然>Zen;
+焼>Shou;
+煉>Ren;
+煌>Kou;
+煎>Sen;
+煕>Ki;
+煖>Dan;
+煙>En;
+煢>Kei;
+煤>Bai;
+煥>Kan;
+煦>Ku;
+照>Shou;
+煩>Han;
+煬>You;
+煮>Sha;
+煽>Sen;
+熄>Soku;
+熈>Ki;
+熊>Yuu;
+熏>Kun;
+熔>You;
+熕>Kou;
+熙>Ki;
+熟>Juku;
+熨>I;
+熬>Gou;
+熱>Netsu;
+熹>Ki;
+熾>Shi;
+燃>Nen;
+燈>Tou;
+燉>Ton;
+燎>Ryou;
+燐>Rin;
+燒>Shou;
+燔>Han;
+燕>En;
+燗>Ran;
+營>Ei;
+燠>Iku;
+燥>Sou;
+燦>San;
+燧>Sui;
+燬>Ki;
+燭>Shoku;
+燮>Shou;
+燵>Tatsu;
+燹>Sen;
+燻>Kun;
+燼>Jin;
+燿>You;
+爆>Baku;
+爍>Shaku;
+爐>Ro;
+爛>Ran;
+爨>San;
+爪>Sou;
+爬>Ha;
+爭>Sou;
+爰>En;
+爲>I;
+爵>Shaku;
+父>Fu;
+爺>Ya;
+爻>Kou;
+爼>Sho;
+爽>Sou;
+爾>Ji;
+爿>Shou;
+牀>Sou;
+牆>Shou;
+片>Hen;
+版>Han;
+牋>Sen;
+牌>Hai;
+牒>Chou;
+牘>Toku;
+牙>Ga;
+牛>Gyuu;
+牝>Hin;
+牟>Bou;
+牡>Bo;
+牢>Rou;
+牧>Boku;
+物>Motsu;
+牲>Sei;
+牴>Tei;
+特>Toku;
+牽>Ken;
+牾>Go;
+犀>Sei;
+犁>Ri;
+犂>Ri;
+犇>Hon;
+犒>Kou;
+犖>Raku;
+犠>Gi;
+犢>Toku;
+犧>Gi;
+犬>Ken;
+犯>Han;
+犲>Sai;
+状>Jou;
+犹>Yuu;
+狂>Kyou;
+狃>Juu;
+狄>Teki;
+狆>Chuu;
+狎>Kou;
+狐>Ko;
+狒>Hi;
+狗>Kou;
+狙>Sho;
+狛>Haku;
+狠>Gan;
+狡>Kou;
+狢>Kaku;
+狩>Shu;
+独>Doku;
+狭>Kyou;
+狷>Ken;
+狸>Ri;
+狹>Kyou;
+狼>Rou;
+狽>Hai;
+猊>Gei;
+猖>Shou;
+猗>I;
+猛>Mou;
+猜>Sai;
+猝>Sotsu;
+猟>Ryou;
+猥>Wai;
+猩>Sei;
+猪>Cho;
+猫>Byou;
+献>Ken;
+猯>Tan;
+猴>Kou;
+猶>Yuu;
+猷>Yuu;
+猾>Katsu;
+猿>En;
+獄>Goku;
+獅>Shi;
+獎>Shou;
+獏>Baku;
+獗>Ketsu;
+獣>Juu;
+獨>Doku;
+獪>Kai;
+獰>Dou;
+獲>Kaku;
+獵>Ryou;
+獸>Juu;
+獺>Datsu;
+獻>Ken;
+玄>Gen;
+率>Ritsu;
+玉>Gyoku;
+王>Ou;
+玖>Kyuu;
+玩>Gan;
+玲>Rei;
+玳>Tai;
+玻>Ha;
+珀>Haku;
+珂>Ka;
+珈>Ka;
+珊>San;
+珍>Chin;
+珎>Chin;
+珞>Raku;
+珠>Shu;
+珥>Ji;
+珪>Kei;
+班>Han;
+珮>Hai;
+珱>Ei;
+珸>Go;
+現>Gen;
+球>Kyuu;
+琅>Rou;
+理>Ri;
+琉>Ryuu;
+琢>Taku;
+琥>Ko;
+琲>Hai;
+琳>Rin;
+琴>Kin;
+琵>Bi;
+琶>Ha;
+琺>Hou;
+琿>Kon;
+瑁>Bou;
+瑕>Ka;
+瑙>Dou;
+瑚>Ko;
+瑛>Ei;
+瑜>Yu;
+瑞>Zui;
+瑟>Shitsu;
+瑠>Ryuu;
+瑣>Sa;
+瑤>You;
+瑩>Ei;
+瑪>Ba;
+瑯>Rou;
+瑰>Kai;
+瑳>Sa;
+瑶>You;
+瑾>Kin;
+璃>Ri;
+璋>Shou;
+璞>Haku;
+璢>Ryuu;
+璧>Heki;
+環>Kan;
+璽>Ji;
+瓊>Kei;
+瓏>Rou;
+瓔>Ei;
+瓜>Ka;
+瓠>Ko;
+瓢>Hyou;
+瓣>Ben;
+瓦>Ga;
+瓮>Ou;
+瓶>Hei;
+瓷>Shi;
+甃>Shuu;
+甄>Ken;
+甌>Ou;
+甍>Bou;
+甎>Sen;
+甑>Sou;
+甓>Heki;
+甕>Ou;
+甘>Kan;
+甚>Shin;
+甜>Ten;
+甞>Shou;
+生>Sei;
+産>San;
+甥>Sei;
+甦>So;
+用>You;
+甫>Ho;
+甬>You;
+田>Den;
+由>Yuu;
+甲>Kou;
+申>Shin;
+男>Dan;
+甸>Ten;
+町>Chou;
+画>Ga;
+甼>Chou;
+畄>Ryuu;
+畆>Ho;
+畉>Fu;
+畊>Kou;
+畋>Ten;
+界>Kai;
+畍>Kai;
+畏>I;
+畔>Han;
+留>Ryuu;
+畚>Hon;
+畛>Shin;
+畜>Chiku;
+畝>Ho;
+畢>Hitsu;
+畤>Shi;
+略>Ryaku;
+畦>Kei;
+畧>Ryaku;
+番>Ban;
+畫>Kaku;
+畭>Yo;
+異>I;
+畳>Jou;
+畴>Chuu;
+當>Tou;
+畷>Tetsu;
+畸>Ki;
+畿>Ki;
+疂>Jou;
+疆>Kyou;
+疇>Chuu;
+疉>Jou;
+疊>Jou;
+疋>So;
+疎>So;
+疏>So;
+疑>Gi;
+疔>Chou;
+疚>Kyuu;
+疝>San;
+疣>Yuu;
+疥>Kai;
+疫>Eki;
+疱>Hou;
+疲>Hi;
+疳>Kan;
+疵>Shi;
+疸>Tan;
+疹>Shin;
+疼>Tou;
+疽>Sho;
+疾>Shitsu;
+痂>Ka;
+痃>Ken;
+病>Byou;
+症>Shou;
+痊>Sen;
+痍>I;
+痒>You;
+痔>Ji;
+痕>Kon;
+痘>Tou;
+痙>Kei;
+痛>Ts;
+痞>Hi;
+痢>Ri;
+痣>Shi;
+痩>Sou;
+痰>Tan;
+痲>Ma;
+痳>Rin;
+痴>Chi;
+痺>Hi;
+痼>Ko;
+痾>A;
+痿>I;
+瘁>Sui;
+瘉>Yu;
+瘋>Fuu;
+瘍>You;
+瘟>On;
+瘠>Seki;
+瘡>Sou;
+瘢>Han;
+瘤>Ryuu;
+瘧>Gyaku;
+瘰>Rui;
+瘴>Shou;
+瘻>Rou;
+療>Ryou;
+癆>Rou;
+癇>Kan;
+癈>Hai;
+癌>Gan;
+癒>Yu;
+癖>Heki;
+癘>Rei;
+癜>Den;
+癡>Chi;
+癢>You;
+癧>Reki;
+癨>Kaku;
+癩>Rai;
+癪>Shaku;
+癬>Sen;
+癰>You;
+癲>Ten;
+癶>Hatsu;
+癸>Ki;
+発>Hotsu;
+登>Tou;
+發>Hotsu;
+白>Haku;
+百>Hyaku;
+皀>Hyuu;
+皃>Bou;
+的>Teki;
+皆>Kai;
+皇>Kou;
+皈>Ki;
+皋>Kou;
+皎>Kou;
+皐>Kou;
+皓>Kou;
+皖>Kan;
+皙>Seki;
+皚>Gai;
+皮>Hi;
+皰>Hou;
+皴>Shun;
+皷>Ko;
+皸>Kun;
+皹>Kun;
+皺>Suu;
+皿>Bai;
+盂>U;
+盃>Hai;
+盆>Bon;
+盈>Ei;
+益>Eki;
+盍>Kou;
+盒>Kou;
+盖>Gai;
+盗>Tou;
+盛>Sei;
+盜>Tou;
+盞>San;
+盟>Mei;
+盡>Jin;
+監>Kan;
+盤>Ban;
+盥>Kan;
+盧>Ro;
+盪>Tou;
+目>Moku;
+盲>Mou;
+直>Choku;
+相>Shou;
+盻>Kei;
+盾>Jun;
+省>Sei;
+眄>Ben;
+眇>Byou;
+眈>Tan;
+眉>Bi;
+看>Kan;
+県>Ken;
+眛>Mai;
+眞>Shin;
+真>Shin;
+眠>Min;
+眤>Tei;
+眥>Sei;
+眦>Sei;
+眩>Gen;
+眷>Ken;
+眸>Bou;
+眺>Chou;
+眼>Gan;
+着>Chaku;
+睇>Tei;
+睚>Gai;
+睛>Sei;
+睡>Sui;
+督>Toku;
+睥>Hei;
+睦>Boku;
+睨>Gei;
+睫>Shou;
+睹>To;
+睾>Kou;
+睿>Ei;
+瞋>Shin;
+瞎>Katsu;
+瞑>Mei;
+瞞>Ban;
+瞠>Dou;
+瞥>Betsu;
+瞬>Shun;
+瞭>Ryou;
+瞰>Kan;
+瞳>Dou;
+瞶>Ki;
+瞹>Ai;
+瞻>Sen;
+瞼>Ken;
+瞽>Ko;
+瞿>Ku;
+矇>Mou;
+矍>Kaku;
+矗>Chiku;
+矚>Shoku;
+矛>Mu;
+矜>Kin;
+矢>Shi;
+矣>I;
+知>Chi;
+矧>Shin;
+矩>Ku;
+短>Tan;
+矮>Wai;
+矯>Kyou;
+石>Shaku;
+矼>Kou;
+砂>Sa;
+砌>Sei;
+砒>Hi;
+研>Ken;
+砕>Sai;
+砠>Sho;
+砥>Shi;
+砦>Sai;
+砧>Chin;
+砲>Hou;
+破>Ha;
+砺>Rei;
+砿>Kou;
+硅>Kei;
+硝>Shou;
+硫>Ryuu;
+硬>Kou;
+硯>Ken;
+硼>Hou;
+碁>Go;
+碆>Ha;
+碇>Tei;
+碌>Roku;
+碍>Gai;
+碎>Sai;
+碑>Hi;
+碓>Tai;
+碕>Ki;
+碗>Wan;
+碚>Hai;
+碣>Ketsu;
+碧>Heki;
+碩>Seki;
+碪>Chin;
+碯>Dou;
+碵>Seki;
+確>Kaku;
+碼>Ba;
+碾>Ten;
+磁>Ji;
+磅>Hou;
+磆>Katsu;
+磊>Rai;
+磋>Sa;
+磐>Han;
+磑>Gai;
+磔>Taku;
+磚>Sen;
+磧>Seki;
+磨>Ma;
+磬>Kei;
+磯>Ki;
+磴>Tou;
+磽>Kou;
+礁>Shou;
+礇>Iku;
+礎>So;
+礑>Tou;
+礒>Gi;
+礙>Gai;
+礦>Kou;
+礪>Rei;
+礫>Reki;
+礬>Ban;
+示>Shi;
+礼>Rei;
+社>Sha;
+祀>Shi;
+祁>Ki;
+祇>Ki;
+祈>Ki;
+祉>Shi;
+祐>Yuu;
+祓>Futsu;
+祕>Hi;
+祖>So;
+祗>Shi;
+祚>So;
+祝>Shuku;
+神>Shin;
+祟>Sui;
+祠>Shi;
+祢>Dei;
+祥>Shou;
+票>Hyou;
+祭>Sai;
+祷>Tou;
+祺>Ki;
+祿>Roku;
+禀>Rin;
+禁>Kin;
+禄>Roku;
+禅>Zen;
+禊>Kei;
+禍>Ka;
+禎>Tei;
+福>Fuku;
+禝>Shoku;
+禦>Gyo;
+禧>Ki;
+禪>Zen;
+禮>Rei;
+禰>Dei;
+禳>Jou;
+禹>U;
+禺>Guu;
+禽>Kin;
+禾>Ka;
+禿>Toku;
+秀>Shuu;
+私>Shi;
+秉>Hei;
+秋>Shuu;
+科>Ka;
+秒>Byou;
+秕>Hi;
+秘>Hi;
+租>So;
+秡>Hatsu;
+秣>Matsu;
+秤>Shou;
+秦>Shin;
+秧>Ou;
+秩>Chitsu;
+秬>Kyo;
+称>Shou;
+移>I;
+稀>Ki;
+稈>Kan;
+程>Tei;
+稍>Sou;
+税>Zei;
+稔>Jin;
+稗>Hai;
+稘>Ki;
+稙>Choku;
+稚>Chi;
+稜>Ryou;
+稟>Rin;
+稠>Chuu;
+種>Shu;
+稱>Shou;
+稲>Tou;
+稷>Shoku;
+稻>Tou;
+稼>Ka;
+稽>Kei;
+稾>Kou;
+稿>Kou;
+穀>Koku;
+穂>Sui;
+穃>You;
+穆>Boku;
+穉>Chi;
+積>Seki;
+穎>Ei;
+穏>On;
+穐>Shuu;
+穗>Sui;
+穡>Shoku;
+穢>Ai;
+穣>Jou;
+穩>On;
+穫>Kaku;
+穰>Jou;
+穴>Ketsu;
+究>Kyuu;
+穹>Kyuu;
+空>Kuu;
+穽>Sei;
+穿>Sen;
+突>Totsu;
+窃>Setsu;
+窄>Saku;
+窈>You;
+窒>Chitsu;
+窓>Sou;
+窕>Chou;
+窖>Kou;
+窗>Sou;
+窘>Kin;
+窟>Kutsu;
+窩>Ka;
+窪>Wa;
+窮>Kyuu;
+窯>You;
+窰>You;
+窶>Ku;
+窺>Ki;
+窿>Ryuu;
+竃>Sou;
+竄>Zan;
+竅>Kyou;
+竇>Tou;
+竈>Sou;
+竊>Setsu;
+立>Ritsu;
+竒>Ki;
+站>Tan;
+竚>Cho;
+竜>Ryuu;
+竝>Hei;
+竟>Kei;
+章>Shou;
+竢>Shi;
+竣>Shun;
+童>Dou;
+竦>Shou;
+竪>Ju;
+竭>Ketsu;
+端>Tan;
+競>Kyou;
+竸>Kei;
+竹>Chiku;
+竺>Toku;
+竿>Kan;
+笄>Kei;
+笆>Ha;
+笈>Kyuu;
+笊>Sou;
+笋>Jun;
+笏>Kotsu;
+笑>Shou;
+笘>Sen;
+笙>Sou;
+笛>Teki;
+笞>Chi;
+笠>Ryuu;
+笥>Shi;
+符>Fu;
+笨>Hon;
+第>Dai;
+笳>Ka;
+笵>Han;
+笶>Shi;
+筅>Sen;
+筆>Hitsu;
+筈>Katsu;
+等>Tou;
+筋>Kin;
+筌>Sen;
+筍>Jun;
+筏>Batsu;
+筐>Kyou;
+筑>Chiku;
+筒>Tou;
+答>Tou;
+策>Saku;
+筝>Sou;
+筥>Kyo;
+筧>Ken;
+筬>Sei;
+筮>Sei;
+筰>Saku;
+筱>Shou;
+筴>Kyou;
+筵>En;
+筺>Kyou;
+箆>Hei;
+箇>Ka;
+箋>Sen;
+箍>Ko;
+箏>Sou;
+箒>Sou;
+箔>Haku;
+箕>Ki;
+算>San;
+箘>Kin;
+箙>Fuku;
+箚>Satsu;
+箜>Kou;
+箝>Kan;
+箟>Kin;
+管>Kan;
+箪>Tan;
+箭>Sen;
+箱>Shou;
+箴>Shin;
+箸>Cho;
+節>Setsu;
+篁>Kou;
+範>Han;
+篆>Ten;
+篇>Hen;
+築>Chiku;
+篋>Kyou;
+篌>Kou;
+篏>Kan;
+篝>Kou;
+篠>Shou;
+篤>Toku;
+篥>Ritsu;
+篦>Hei;
+篩>Shi;
+篭>Rou;
+篳>Hitsu;
+篶>En;
+篷>Hou;
+簀>Saku;
+簇>Sou;
+簍>Rou;
+簑>Sa;
+簒>San;
+簓>Sen;
+簔>Sa;
+簟>Ten;
+簡>Kan;
+簣>Ki;
+簧>Kou;
+簪>Shin;
+簫>Shou;
+簷>En;
+簸>Ha;
+簽>Sen;
+簾>Ren;
+簿>Bo;
+籀>Chuu;
+籃>Ran;
+籌>Chuu;
+籍>Seki;
+籐>Tou;
+籔>Su;
+籖>Sen;
+籘>Tou;
+籟>Rai;
+籠>Rou;
+籤>Sen;
+籥>Yaku;
+籬>Ri;
+米>Bei;
+粃>Hi;
+粉>Fun;
+粋>Sui;
+粐>Ro;
+粒>Ryuu;
+粕>Haku;
+粗>So;
+粘>Nen;
+粛>Shuku;
+粟>Zoku;
+粡>Tou;
+粢>Shi;
+粤>Etsu;
+粥>Shuku;
+粧>Shou;
+粫>Ji;
+粮>Ryou;
+粱>Ryou;
+粲>San;
+粳>Kou;
+粹>Sui;
+粽>Sou;
+精>Sei;
+糂>San;
+糅>Juu;
+糊>Ko;
+糒>Hi;
+糖>Tou;
+糜>Bi;
+糞>Fun;
+糟>Sou;
+糠>Kou;
+糢>Bo;
+糧>Ryou;
+糯>Da;
+糲>Rei;
+糴>Teki;
+糶>Chou;
+糸>Shi;
+糺>Kyuu;
+系>Kei;
+糾>Kyuu;
+紀>Ki;
+紂>Chuu;
+約>Yaku;
+紅>Ku;
+紆>U;
+紊>Bin;
+紋>Mon;
+納>Tou;
+紐>Chuu;
+純>Shun;
+紕>Hi;
+紗>Sa;
+紘>Kou;
+紙>Shi;
+級>Kyuu;
+紛>Fun;
+紜>Un;
+素>So;
+紡>Bou;
+索>Saku;
+紫>Shi;
+紬>Chuu;
+紮>Satsu;
+累>Rui;
+細>Sei;
+紲>Setsu;
+紳>Shin;
+紵>Cho;
+紹>Shou;
+紺>Kon;
+紿>Tai;
+終>Shuu;
+絃>Gen;
+組>So;
+絅>Kei;
+絆>Ban;
+絋>Kou;
+経>Kei;
+絎>Kou;
+絏>Setsu;
+結>Ketsu;
+絖>Kou;
+絛>Jou;
+絞>Kou;
+絡>Raku;
+絢>Ken;
+絣>Hou;
+給>Kyuu;
+絨>Juu;
+絮>Jo;
+統>Tou;
+絲>Shi;
+絳>Kou;
+絵>Kai;
+絶>Zetsu;
+絹>Ken;
+絽>Ryo;
+綉>Tou;
+綏>Sui;
+經>Kei;
+継>Kei;
+続>Zoku;
+綜>Sou;
+綟>Rei;
+綢>Chuu;
+綣>Ken;
+綫>Sen;
+綬>Ju;
+維>I;
+綮>Kei;
+綯>Tou;
+綰>Wan;
+綱>Kou;
+網>Mou;
+綴>Tei;
+綵>Sai;
+綸>Rin;
+綺>Ki;
+綻>Tan;
+綽>Shaku;
+綾>Ryou;
+綿>Men;
+緇>Shi;
+緊>Kin;
+緋>Hi;
+総>Sou;
+緑>Ryoku;
+緒>Sho;
+緘>Kan;
+線>Sen;
+緜>Ben;
+緝>Shuu;
+緞>Tan;
+締>Tei;
+緡>Bin;
+緤>Setsu;
+編>Hen;
+緩>Kan;
+緬>Men;
+緯>I;
+緲>Byou;
+練>Ren;
+緻>Chi;
+縁>En;
+縄>Jou;
+縉>Shin;
+縊>Ei;
+縋>Tsui;
+縒>Shi;
+縛>Baku;
+縞>Kou;
+縟>Joku;
+縡>Sai;
+縢>Tou;
+縣>Ken;
+縦>Juu;
+縫>Hou;
+縮>Shuku;
+縱>Juu;
+縲>Rui;
+縵>Ban;
+縷>Ru;
+縹>Hyou;
+縺>Ren;
+縻>Bi;
+總>Sou;
+績>Seki;
+繁>Han;
+繃>Hou;
+繆>Kyuu;
+繊>Sen;
+繋>Kei;
+繍>Shuu;
+織>Shoku;
+繕>Zen;
+繖>San;
+繙>Han;
+繚>Ryou;
+繝>Kan;
+繞>Jou;
+繦>Kyou;
+繧>Un;
+繩>Jou;
+繪>Kai;
+繭>Ken;
+繰>Sou;
+繹>Eki;
+繻>Ju;
+繼>Kei;
+繽>Hin;
+繿>Ran;
+纂>San;
+纈>Ketsu;
+纉>San;
+續>Zoku;
+纎>Sen;
+纏>Ten;
+纒>Ten;
+纓>Ei;
+纔>San;
+纖>Sen;
+纛>Tou;
+纜>Ran;
+缶>Kan;
+缸>Kou;
+缺>Ketsu;
+罅>Ka;
+罌>Ou;
+罍>Rai;
+罎>Tan;
+罐>Kan;
+网>Bou;
+罔>Bou;
+罕>Kan;
+罘>Fu;
+罟>Ko;
+罠>Bin;
+罧>Shin;
+罨>An;
+罩>Tou;
+罪>Zai;
+罫>Kei;
+置>Chi;
+罰>Batsu;
+署>Sho;
+罵>Ba;
+罷>Hi;
+罸>Batsu;
+罹>Ri;
+羂>Ken;
+羃>Beki;
+羅>Ra;
+羆>Hi;
+羇>Ki;
+羈>Ki;
+羊>You;
+羌>Kyou;
+美>Bi;
+羔>Kou;
+羚>Rei;
+羝>Tei;
+羞>Shuu;
+羣>Gun;
+群>Gun;
+羨>Sen;
+義>Gi;
+羮>Kou;
+羯>Katsu;
+羲>Gi;
+羶>Sen;
+羸>Rui;
+羹>Kou;
+羽>U;
+翁>Ou;
+翅>Shi;
+翆>Sui;
+翊>Yoku;
+翌>Yoku;
+習>Shuu;
+翔>Shou;
+翕>Kyuu;
+翠>Sui;
+翡>Hi;
+翦>Sen;
+翩>Hen;
+翫>Gan;
+翰>Kan;
+翳>Ei;
+翹>Gyou;
+翻>Hon;
+翼>Yoku;
+耀>You;
+老>Rou;
+考>Kou;
+耄>Mou;
+者>Sha;
+耆>Ki;
+耋>Tetsu;
+而>Ji;
+耐>Tai;
+耒>Rai;
+耕>Kou;
+耗>Mou;
+耘>Un;
+耙>Ha;
+耜>Shi;
+耡>Jo;
+耨>Dou;
+耳>Ji;
+耶>Ya;
+耻>Chi;
+耽>Tan;
+耿>Kou;
+聆>Rei;
+聊>Ryou;
+聒>Katsu;
+聖>Sei;
+聘>Hei;
+聚>Shuu;
+聞>Bun;
+聟>Sei;
+聡>Sou;
+聨>Ren;
+聯>Ren;
+聰>Sou;
+聲>Sei;
+聳>Shou;
+聴>Chou;
+聶>Jou;
+職>Shoku;
+聹>Dei;
+聽>Chou;
+聾>Rou;
+聿>Itsu;
+肄>I;
+肅>Shuku;
+肆>Shi;
+肇>Chou;
+肉>Niku;
+肋>Roku;
+肌>Ki;
+肓>Kou;
+肖>Shou;
+肘>Chuu;
+肚>To;
+肛>Kou;
+肝>Kan;
+股>Ko;
+肢>Shi;
+肥>Hi;
+肩>Ken;
+肪>Bou;
+肬>Yuu;
+肭>Dotsu;
+肯>Kou;
+肱>Kou;
+育>Iku;
+肴>Kou;
+肺>Hai;
+胃>I;
+胄>Chuu;
+胆>Tan;
+背>Hai;
+胎>Tai;
+胖>Han;
+胙>So;
+胚>Hai;
+胛>Kou;
+胝>Chi;
+胞>Hou;
+胡>Ko;
+胤>In;
+胥>Sho;
+胯>Ko;
+胱>Kou;
+胴>Dou;
+胸>Kyou;
+胼>Hen;
+能>Nou;
+脂>Shi;
+脅>Kyou;
+脆>Zei;
+脇>Kyou;
+脈>Myaku;
+脉>Myaku;
+脊>Seki;
+脚>Kyaku;
+脛>Kei;
+脣>Shin;
+脩>Shuu;
+脯>Ho;
+脱>Datsu;
+脳>Nou;
+脹>Chou;
+脾>Hi;
+腆>Ten;
+腋>Eki;
+腎>Jin;
+腐>Fu;
+腑>Fu;
+腓>Hi;
+腔>Kou;
+腕>Wan;
+腟>Chitsu;
+腥>Sei;
+腦>Nou;
+腫>Shou;
+腮>Sai;
+腰>You;
+腱>Ken;
+腴>Yu;
+腸>Chou;
+腹>Fuku;
+腺>Sen;
+腿>Tai;
+膀>Hou;
+膂>Ryo;
+膃>Otsu;
+膈>Kaku;
+膊>Haku;
+膏>Kou;
+膓>Chou;
+膕>Kaku;
+膚>Fu;
+膜>Maku;
+膝>Shitsu;
+膠>Kou;
+膣>Chitsu;
+膨>Bou;
+膩>Ji;
+膰>Han;
+膳>Sen;
+膵>Sui;
+膸>Zui;
+膺>You;
+膽>Tan;
+膾>Kai;
+膿>Dou;
+臀>Den;
+臂>Hi;
+臆>Oku;
+臈>Rou;
+臉>Ren;
+臍>Sei;
+臑>Dau;
+臓>Zou;
+臘>Rou;
+臙>En;
+臚>Ryo;
+臟>Zou;
+臠>Ren;
+臣>Shin;
+臥>Ga;
+臧>Zou;
+臨>Rin;
+自>Shi;
+臭>Shuu;
+至>Shi;
+致>Chi;
+臺>Tai;
+臻>Shin;
+臼>Kyuu;
+臾>Yu;
+舁>Yo;
+舂>Shou;
+舅>Kyuu;
+與>Yo;
+興>Kyou;
+舉>Kyo;
+舊>Kyuu;
+舌>Zetsu;
+舍>Sha;
+舎>Sha;
+舐>Shi;
+舒>Jo;
+舖>Ho;
+舗>Ho;
+舘>Kan;
+舛>Sen;
+舜>Shun;
+舞>Bu;
+舟>Shuu;
+舩>Sen;
+航>Kou;
+舫>Hou;
+般>Han;
+舮>Ro;
+舳>Chiku;
+舵>Ta;
+舶>Haku;
+舷>Ken;
+舸>Ka;
+船>Sen;
+艀>Fu;
+艇>Tei;
+艘>Sou;
+艙>Sou;
+艚>Sou;
+艟>Dou;
+艢>Shou;
+艤>Gi;
+艦>Kan;
+艨>Mou;
+艪>Ro;
+艫>Ro;
+艮>Kon;
+良>Ryou;
+艱>Kan;
+色>Shoku;
+艶>En;
+艷>En;
+艸>Sou;
+艾>Gai;
+芋>U;
+芍>Shaku;
+芒>Bou;
+芙>Fu;
+芝>Shi;
+芟>San;
+芥>Kai;
+芦>Ro;
+芫>Gen;
+芬>Fun;
+芭>Ba;
+芯>Shin;
+花>Ka;
+芳>Hou;
+芸>Gei;
+芹>Kin;
+芻>Suu;
+芽>Ga;
+苅>Gai;
+苑>En;
+苒>Zen;
+苓>Rei;
+苔>Tai;
+苗>Byou;
+苙>Ryuu;
+苛>Ka;
+苜>Boku;
+苞>Hou;
+苟>Kou;
+苡>I;
+苣>Kyo;
+若>Jaku;
+苦>Ku;
+苧>Cho;
+苫>Sen;
+英>Ei;
+苳>Tou;
+苴>So;
+苹>Hei;
+苺>Mai;
+苻>Fu;
+茂>Mo;
+范>Han;
+茄>Ka;
+茅>Bou;
+茆>Bou;
+茉>Matsu;
+茎>Kei;
+茖>Kaku;
+茗>Mei;
+茘>Ri;
+茜>Sen;
+茣>Go;
+茨>Shi;
+茫>Bou;
+茯>Fuku;
+茱>Shu;
+茲>Ji;
+茴>Kai;
+茵>In;
+茶>Cha;
+茸>Jou;
+茹>Jo;
+荀>Jun;
+荅>Tou;
+草>Sou;
+荊>Kei;
+荏>Jin;
+荐>Sen;
+荒>Kou;
+荘>Sou;
+荳>Tou;
+荵>Jin;
+荷>Ka;
+荻>Teki;
+荼>To;
+莅>Ri;
+莇>Cho;
+莉>Chi;
+莊>Sou;
+莎>Sa;
+莓>Mai;
+莖>Kei;
+莚>En;
+莞>Kan;
+莟>Kan;
+莠>Yuu;
+莢>Kyou;
+莨>Rou;
+莪>Ga;
+莫>Bo;
+莱>Rai;
+莵>To;
+莽>Bou;
+菁>Sei;
+菅>Kan;
+菊>Kiku;
+菌>Kin;
+菎>Kon;
+菓>Ka;
+菖>Shou;
+菘>Suu;
+菜>Sai;
+菟>To;
+菠>Ha;
+菩>Hai;
+菫>Kin;
+華>Ka;
+菰>Ko;
+菱>Ryou;
+菲>Hi;
+菴>An;
+菷>Sou;
+菻>Rin;
+菽>Shuku;
+萃>Sui;
+萄>Tou;
+萇>Chou;
+萋>Sei;
+萌>Hou;
+萍>Hei;
+萎>I;
+萓>Gi;
+萠>Hou;
+萩>Shuu;
+萪>Kuwa;
+萬>Man;
+萱>Ken;
+萵>Wa;
+萸>Yu;
+萼>Gaku;
+落>Raku;
+葆>Ho;
+葉>You;
+葎>Ritsu;
+著>Cho;
+葛>Katsu;
+葡>Ho;
+葢>Gai;
+董>Tou;
+葦>I;
+葩>Ha;
+葫>Ko;
+葬>Sou;
+葭>Ka;
+葮>Tan;
+葯>Yaku;
+葱>Sou;
+葵>Ki;
+葷>Gun;
+葹>Shi;
+葺>Shuu;
+蒂>Tei;
+蒄>Kan;
+蒋>Shou;
+蒐>Shuu;
+蒔>Shi;
+蒙>Bou;
+蒜>San;
+蒟>Kon;
+蒡>Hou;
+蒭>Suu;
+蒲>Ho;
+蒸>Jou;
+蒹>Ken;
+蒻>Jaku;
+蒼>Sou;
+蒿>Kou;
+蓁>Shin;
+蓄>Chiku;
+蓆>Seki;
+蓉>You;
+蓊>Ou;
+蓋>Gai;
+蓍>Shi;
+蓐>Joku;
+蓑>Sa;
+蓖>Hi;
+蓚>Chou;
+蓬>Hou;
+蓮>Ren;
+蓴>Shun;
+蓼>Ryou;
+蓿>Shuku;
+蔀>Hou;
+蔆>Ryou;
+蔑>Betsu;
+蔓>Ban;
+蔔>Fuku;
+蔕>Tei;
+蔗>Sho;
+蔘>Shin;
+蔚>Utsu;
+蔟>Zoku;
+蔡>Sai;
+蔦>Chou;
+蔬>So;
+蔭>In;
+蔵>Zou;
+蔽>Hei;
+蕀>Kyoku;
+蕁>Jin;
+蕃>Ban;
+蕈>Shin;
+蕉>Shou;
+蕊>Zui;
+蕋>Zui;
+蕎>Kyou;
+蕕>Yuu;
+蕗>Ro;
+蕘>Jou;
+蕚>Gaku;
+蕣>Shun;
+蕨>Ketsu;
+蕩>Tou;
+蕪>Bu;
+蕭>Shou;
+蕷>Yo;
+蕾>Rai;
+薀>Un;
+薄>Haku;
+薇>Bi;
+薈>Kai;
+薊>Kei;
+薐>Rou;
+薑>Kyou;
+薔>Shoku;
+薗>En;
+薙>Tei;
+薛>Setsu;
+薜>Heki;
+薤>Kai;
+薦>Sen;
+薨>Kou;
+薩>Satsu;
+薪>Shin;
+薫>Kun;
+薬>Yaku;
+薮>Sou;
+薯>Sho;
+薹>Tai;
+薺>Sei;
+藁>Kou;
+藉>Sha;
+藍>Ran;
+藏>Zou;
+藐>Baku;
+藕>Guu;
+藜>Rei;
+藝>Gei;
+藤>Tou;
+藥>Yaku;
+藩>Han;
+藪>Sou;
+藷>Sho;
+藹>Ai;
+藺>Rin;
+藻>Sou;
+藾>Rai;
+蘂>Zui;
+蘆>Ro;
+蘇>So;
+蘊>Un;
+蘋>Hin;
+蘓>So;
+蘖>Getsu;
+蘗>Haku;
+蘚>Sen;
+蘢>Rou;
+蘭>Ran;
+蘯>Tou;
+蘿>Ra;
+虍>Ko;
+虎>Ko;
+虐>Gyaku;
+虔>Ken;
+處>Sho;
+虚>Kyo;
+虜>Ryo;
+虞>Gu;
+號>Gou;
+虧>Ki;
+虫>Chuu;
+虱>Shitsu;
+虹>Kou;
+虻>Bou;
+蚊>Bun;
+蚋>Zei;
+蚌>Hou;
+蚓>In;
+蚕>San;
+蚣>Kou;
+蚤>Sou;
+蚩>Shi;
+蚪>Tou;
+蚫>Hou;
+蚯>Kyuu;
+蚰>Yuu;
+蚶>Kan;
+蛄>Ko;
+蛆>Sho;
+蛇>Ja;
+蛉>Rei;
+蛋>Tan;
+蛍>Kei;
+蛎>Rei;
+蛔>Kai;
+蛙>A;
+蛛>Shu;
+蛞>Katsu;
+蛟>Kou;
+蛤>Kou;
+蛩>Kyou;
+蛬>Kyou;
+蛭>Shitsu;
+蛮>Ban;
+蛸>Sou;
+蛹>You;
+蛻>Zei;
+蛾>Ga;
+蜀>Shoku;
+蜂>Hou;
+蜃>Shin;
+蜆>Ken;
+蜈>Go;
+蜉>Fu;
+蜊>Ri;
+蜍>Sho;
+蜑>Tan;
+蜒>En;
+蜘>Chi;
+蜚>Hi;
+蜜>Mitsu;
+蜥>Seki;
+蜩>Chou;
+蜴>Eki;
+蜷>Ken;
+蜻>Sei;
+蜿>En;
+蝉>Sen;
+蝋>Rou;
+蝌>Ka;
+蝎>Katsu;
+蝓>Yu;
+蝕>Shoku;
+蝗>Kou;
+蝙>Hen;
+蝟>I;
+蝠>Fuku;
+蝣>Yuu;
+蝦>Ka;
+蝨>Shitsu;
+蝪>Tou;
+蝮>Fuku;
+蝴>Ko;
+蝶>Chou;
+蝸>Ka;
+蝿>You;
+螂>Rou;
+融>Yuu;
+螟>Mei;
+螢>Kei;
+螫>Seki;
+螯>Gou;
+螳>Tou;
+螺>Ra;
+螻>Rou;
+螽>Shuu;
+蟀>Shutsu;
+蟄>Chitsu;
+蟆>Ba;
+蟇>Ba;
+蟋>Shitsu;
+蟐>Tou;
+蟒>Bou;
+蟠>Han;
+蟯>Gyou;
+蟲>Ki;
+蟶>Tei;
+蟷>Tou;
+蟹>Kai;
+蟻>Gi;
+蟾>Sen;
+蠅>You;
+蠍>Katsu;
+蠎>Bou;
+蠏>Kai;
+蠑>Ei;
+蠕>Da;
+蠖>Kaku;
+蠡>Rei;
+蠢>Shun;
+蠣>Rei;
+蠧>To;
+蠱>Ko;
+蠶>San;
+蠹>To;
+蠻>Ban;
+血>Ketsu;
+衂>Jiku;
+衄>Jiku;
+衆>Shuu;
+行>Kou;
+衍>En;
+衒>Ken;
+術>Jutsu;
+街>Gai;
+衙>Gyo;
+衛>Ei;
+衝>Shou;
+衞>Ei;
+衡>Kou;
+衢>Ku;
+衣>I;
+表>Hyou;
+衫>San;
+衰>Sa;
+衲>Dou;
+衵>Jitsu;
+衷>Chuu;
+衽>Jin;
+衾>Kin;
+衿>Kin;
+袁>En;
+袂>Bei;
+袈>Ka;
+袋>Tai;
+袍>Hou;
+袒>Tan;
+袖>Shuu;
+袗>Shin;
+袙>Ha;
+袞>Kon;
+袢>Han;
+袤>Bou;
+被>Hi;
+袮>Ne;
+袱>Fuku;
+袴>Ko;
+袵>Jin;
+袷>Kou;
+袿>Kei;
+裁>Sai;
+裂>Retsu;
+装>Sou;
+裏>Ri;
+裔>Ei;
+裕>Yuu;
+裘>Kyuu;
+裙>Kun;
+補>Ho;
+裝>Sou;
+裟>Sa;
+裡>Ri;
+裨>Hi;
+裲>Ryou;
+裳>Shou;
+裴>Hai;
+裸>Ra;
+裹>Ka;
+裼>Seki;
+製>Sei;
+裾>Kyo;
+褂>Kai;
+複>Fuku;
+褊>Hen;
+褌>Kon;
+褐>Katsu;
+褒>Hou;
+褓>Ho;
+褝>Tan;
+褞>On;
+褥>Joku;
+褪>Tai;
+褫>Chi;
+褶>Chou;
+褸>Rou;
+褻>Setsu;
+襁>Kyou;
+襃>Hou;
+襄>Jou;
+襌>Tan;
+襍>Zatsu;
+襖>Ou;
+襞>Heki;
+襟>Kin;
+襠>Tou;
+襤>Ran;
+襦>Ju;
+襪>Betsu;
+襭>Ketsu;
+襯>Shin;
+襲>Shuu;
+襴>Ran;
+襾>Aka;
+西>Sei;
+要>You;
+覃>Tan;
+覆>Fuku;
+覇>Ha;
+覈>Kaku;
+覊>Ki;
+見>Ken;
+規>Ki;
+覓>Beki;
+視>Shi;
+覗>Shi;
+覘>Ten;
+覚>Kaku;
+覡>Geki;
+覦>Yu;
+覧>Ran;
+覩>To;
+親>Shin;
+覬>Ki;
+覯>Kou;
+覲>Kin;
+観>Kan;
+覺>Kaku;
+覽>Ran;
+覿>Teki;
+觀>Kan;
+角>Kaku;
+觚>Ko;
+觜>Shi;
+觝>Tei;
+解>Kai;
+触>Shoku;
+觧>Kai;
+觴>Shou;
+觸>Shoku;
+言>Gen;
+訂>Tei;
+訃>Fu;
+計>Kei;
+訊>Jin;
+訌>Kou;
+討>Tou;
+訐>Ketsu;
+訓>Kun;
+訖>Kitsu;
+託>Taku;
+記>Ki;
+訛>Ka;
+訝>Ga;
+訟>Shou;
+訣>Ketsu;
+訥>Totsu;
+訪>Hou;
+設>Setsu;
+許>Kyo;
+訳>Yaku;
+訴>So;
+訶>Ka;
+診>Shin;
+註>Chuu;
+証>Shou;
+詁>Ko;
+詆>Tei;
+詈>Ri;
+詐>Sa;
+詑>Ta;
+詒>Tai;
+詔>Shou;
+評>Hyou;
+詛>So;
+詞>Shi;
+詠>Ei;
+詢>Jun;
+詣>Kei;
+試>Shi;
+詩>Shi;
+詫>Ta;
+詬>Kou;
+詭>Ki;
+詮>Sen;
+詰>Kitsu;
+話>Wa;
+該>Gai;
+詳>Shou;
+詼>Kai;
+誂>Chou;
+誄>Rui;
+誅>Chuu;
+誇>Ko;
+誉>Yo;
+誌>Shi;
+認>Nin;
+誑>Kyou;
+誓>Sei;
+誕>Tan;
+誘>Yuu;
+誚>Shou;
+語>Go;
+誠>Sei;
+誡>Kai;
+誣>Fu;
+誤>Go;
+誥>Kou;
+誦>Shou;
+誨>Kai;
+説>Setsu;
+読>Toku;
+誰>Sui;
+課>Ka;
+誹>Hi;
+誼>Gi;
+調>Chou;
+諂>Ten;
+諄>Jun;
+談>Dan;
+請>Sei;
+諌>Kan;
+諍>Sou;
+諏>Shu;
+諒>Ryou;
+論>Ron;
+諚>Jou;
+諛>Yu;
+諜>Chou;
+諞>Hen;
+諠>Ken;
+諡>Shi;
+諢>Kon;
+諤>Gaku;
+諦>Tei;
+諧>Kai;
+諫>Kan;
+諭>Yu;
+諮>Shi;
+諱>Ki;
+諳>An;
+諷>Fuu;
+諸>Sho;
+諺>Gen;
+諾>Daku;
+謀>Bou;
+謁>Etsu;
+謂>I;
+謄>Tou;
+謇>Ken;
+謌>Ka;
+謎>Mei;
+謐>Hitsu;
+謔>Gyaku;
+謖>Shoku;
+謗>Bou;
+謙>Ken;
+謚>Shi;
+講>Kou;
+謝>Sha;
+謠>You;
+謡>You;
+謦>Kei;
+謨>Bo;
+謫>Taku;
+謬>Byou;
+謳>Ou;
+謹>Kin;
+謾>Ban;
+譁>Ka;
+證>Shou;
+譌>Ka;
+譎>Kitsu;
+譏>Ki;
+譖>Shin;
+識>Shiki;
+譚>Tan;
+譛>Shin;
+譜>Fu;
+譟>Sou;
+警>Kei;
+譫>Sen;
+譬>Hi;
+譯>Yaku;
+議>Gi;
+譱>Zen;
+譲>Jou;
+譴>Ken;
+護>Go;
+譽>Yo;
+讀>Toku;
+讃>San;
+變>Hen;
+讌>En;
+讎>Shuu;
+讐>Shuu;
+讒>San;
+讓>Jou;
+讖>Shin;
+讙>Kan;
+讚>San;
+谷>Koku;
+谺>Ka;
+谿>Kei;
+豁>Katsu;
+豆>Tou;
+豈>Ki;
+豊>Hou;
+豌>En;
+豎>Ju;
+豐>Hou;
+豕>Shi;
+豚>Ton;
+象>Shou;
+豢>Ken;
+豪>Gou;
+豫>Yo;
+豬>Cho;
+豸>Chi;
+豹>Hou;
+豺>Sai;
+豼>Hi;
+貂>Chou;
+貅>Kyuu;
+貉>Kaku;
+貊>Haku;
+貌>Bou;
+貍>Ri;
+貎>Gei;
+貔>Hi;
+貘>Baku;
+貝>Bai;
+貞>Tei;
+負>Fu;
+財>Zai;
+貢>Kou;
+貧>Hin;
+貨>Ka;
+販>Han;
+貪>Don;
+貫>Kan;
+責>Seki;
+貭>Shitsu;
+貮>Ni;
+貯>Cho;
+貰>Sei;
+貲>Shi;
+貳>Ni;
+貴>Ki;
+貶>Hen;
+買>Bai;
+貸>Tai;
+費>Hi;
+貼>Ten;
+貽>I;
+貿>Bou;
+賀>Ga;
+賁>Hi;
+賂>Ro;
+賃>Chin;
+賄>Wai;
+資>Shi;
+賈>Ko;
+賊>Zoku;
+賍>Sou;
+賎>Sen;
+賑>Shin;
+賓>Hin;
+賚>Rai;
+賛>San;
+賜>Shi;
+賞>Shou;
+賠>Bai;
+賢>Ken;
+賣>Bai;
+賤>Sen;
+賦>Fu;
+質>Shitsu;
+賭>To;
+賺>Tan;
+賻>Fu;
+購>Kou;
+賽>Sai;
+贄>Shi;
+贅>Zei;
+贇>In;
+贈>Zou;
+贊>San;
+贋>Gan;
+贍>Sen;
+贏>Ei;
+贐>Shin;
+贓>Zou;
+贔>Hi;
+贖>Shoku;
+赤>Seki;
+赦>Sha;
+赧>Tan;
+赫>Kaku;
+赭>Sha;
+走>Sou;
+赱>Sou;
+赳>Kyuu;
+赴>Fu;
+起>Ki;
+趁>Chin;
+超>Chou;
+越>Etsu;
+趙>Chou;
+趣>Shu;
+趨>Suu;
+足>Soku;
+趺>Fu;
+趾>Shi;
+跂>Ki;
+跋>Batsu;
+跌>Tetsu;
+跏>Ka;
+跖>Seki;
+跚>San;
+跛>Ha;
+距>Kyo;
+跟>Kon;
+跡>Seki;
+跣>Sen;
+跨>Ko;
+跪>Ki;
+跫>Kyou;
+路>Ro;
+跳>Chou;
+践>Sen;
+跼>Kyoku;
+跿>To;
+踈>Sho;
+踉>Ryou;
+踊>You;
+踏>Tou;
+踐>Sen;
+踝>Ka;
+踞>Kyo;
+踟>Chi;
+踪>Shou;
+踰>Yu;
+踴>You;
+踵>Shou;
+蹂>Juu;
+蹄>Tei;
+蹇>Ken;
+蹈>Tou;
+蹉>Sa;
+蹊>Kei;
+蹌>Shou;
+蹐>Seki;
+蹕>Hitsu;
+蹙>Shuku;
+蹟>Seki;
+蹠>Seki;
+蹣>Man;
+蹤>Shou;
+蹲>Son;
+蹴>Shuu;
+蹶>Ketsu;
+蹼>Boku;
+躁>Sou;
+躄>Heki;
+躅>Choku;
+躇>Cho;
+躊>Chuu;
+躋>Sei;
+躍>Yaku;
+躑>Teki;
+躓>Chi;
+躔>Ten;
+躙>Rin;
+躡>Jou;
+躪>Rin;
+身>Shin;
+躬>Kyuu;
+躯>Ku;
+躰>Tei;
+躱>Ta;
+軆>Tei;
+車>Sha;
+軋>Atsu;
+軌>Ki;
+軍>Gun;
+軒>Ken;
+軛>Aku;
+軟>Nan;
+転>Ten;
+軣>Gou;
+軫>Shin;
+軸>Jiku;
+軻>Ka;
+軼>Itsu;
+軽>Kei;
+軾>Shoku;
+較>Kaku;
+輅>Ro;
+載>Sai;
+輊>Chi;
+輌>Ryou;
+輒>Chou;
+輓>Ban;
+輔>Fu;
+輕>Kei;
+輙>Chou;
+輛>Ryou;
+輜>Shi;
+輝>Ki;
+輟>Tetsu;
+輦>Ren;
+輩>Hai;
+輪>Rin;
+輯>Shuu;
+輳>Sou;
+輸>Yu;
+輹>Fuku;
+輻>Fuku;
+輾>Ten;
+輿>Yo;
+轂>Koku;
+轄>Katsu;
+轅>En;
+轆>Roku;
+轉>Ten;
+轍>Tetsu;
+轎>Kyou;
+轗>Kan;
+轜>Ji;
+轟>Gou;
+轡>Hi;
+轢>Reki;
+轣>Reki;
+轤>Ro;
+辛>Shin;
+辜>Ko;
+辞>Ji;
+辟>Heki;
+辣>Ratsu;
+辧>Ben;
+辨>Ben;
+辭>Ji;
+辮>Hen;
+辯>Ben;
+辰>Shin;
+辱>Joku;
+農>Nou;
+辺>Hen;
+辿>Ten;
+迂>U;
+迄>Kitsu;
+迅>Jin;
+迎>Gei;
+近>Kin;
+返>Hen;
+迢>Chou;
+迥>Kei;
+迦>Ka;
+迩>Ji;
+迪>Teki;
+迫>Haku;
+迭>Tetsu;
+迯>Tou;
+述>Jutsu;
+迴>Kai;
+迷>Mei;
+迸>Hou;
+迹>Seki;
+迺>Dai;
+追>Tsui;
+退>Tai;
+送>Sou;
+逃>Tou;
+逅>Kou;
+逆>Gyaku;
+逋>Ho;
+逍>Shou;
+逎>Shuu;
+透>Tou;
+逐>Chiku;
+逑>Kyuu;
+逓>Tei;
+途>To;
+逕>Kei;
+逖>Teki;
+逗>Tou;
+這>Gen;
+通>Ts;
+逝>Sei;
+逞>Tei;
+速>Soku;
+造>Zou;
+逡>Shun;
+逢>Hou;
+連>Ren;
+逮>Tai;
+週>Shuu;
+進>Shin;
+逵>Ki;
+逶>I;
+逸>Itsu;
+逹>Tatsu;
+逼>Hitsu;
+逾>Yu;
+遁>Ton;
+遂>Sui;
+遅>Chi;
+遇>Guu;
+遉>Tei;
+遊>Yuu;
+運>Un;
+遍>Hen;
+過>Ka;
+遏>Atsu;
+遐>Ka;
+遑>Kou;
+遒>Shuu;
+道>Dou;
+達>Tatsu;
+違>I;
+遘>Kou;
+遙>You;
+遜>Son;
+遞>Tei;
+遠>En;
+遡>So;
+遣>Ken;
+遥>You;
+遨>Gou;
+適>Teki;
+遭>Sou;
+遮>Sha;
+遯>Ton;
+遲>Chi;
+遵>Jun;
+遶>Jou;
+遷>Sen;
+選>Sen;
+遺>I;
+遼>Ryou;
+遽>Kyo;
+避>Hi;
+邀>You;
+邁>Bai;
+邂>Kai;
+邃>Sui;
+還>Kan;
+邇>Ji;
+邉>Hen;
+邊>Hen;
+邏>Ra;
+邑>Yuu;
+那>Da;
+邦>Hou;
+邨>Son;
+邪>Ya;
+邯>Kan;
+邱>Kyuu;
+邵>Shou;
+邸>Tei;
+郁>Iku;
+郊>Kou;
+郎>Rou;
+郛>Fu;
+郡>Gun;
+郢>Ei;
+郤>Geki;
+部>Bu;
+郭>Kaku;
+郵>Yuu;
+郷>Kyou;
+都>To;
+鄂>Gaku;
+鄒>Suu;
+鄙>Hi;
+鄭>Tei;
+鄰>Rin;
+鄲>Tan;
+酉>Yuu;
+酊>Tei;
+酋>Shuu;
+酌>Shaku;
+配>Hai;
+酎>Chuu;
+酒>Shu;
+酔>Sui;
+酖>Tan;
+酘>Tou;
+酢>Saku;
+酣>Kan;
+酥>So;
+酩>Mei;
+酪>Raku;
+酬>Shuu;
+酲>Tei;
+酳>In;
+酵>Kou;
+酷>Koku;
+酸>San;
+醂>Rin;
+醇>Shun;
+醉>Sui;
+醋>Saku;
+醍>Tei;
+醐>Ko;
+醒>Sei;
+醗>Hatsu;
+醜>Shuu;
+醢>Kai;
+醤>Shou;
+醪>Rou;
+醫>I;
+醯>Kei;
+醴>Rei;
+醵>Kyo;
+醸>Jou;
+醺>Kun;
+釀>Jou;
+釁>Kin;
+釆>Han;
+采>Sai;
+釈>Shaku;
+釉>Yuu;
+釋>Shaku;
+里>Ri;
+重>Chou;
+野>Ya;
+量>Ryou;
+釐>Ri;
+金>Kin;
+釖>Tou;
+釘>Tei;
+釛>Koku;
+釜>Fu;
+針>Shin;
+釟>Hatsu;
+釡>Fu;
+釣>Chou;
+釦>Kou;
+釧>Sen;
+釵>Sa;
+釶>Shi;
+釼>Ken;
+釿>Kin;
+鈍>Don;
+鈎>Kou;
+鈑>Han;
+鈔>Shou;
+鈕>Chuu;
+鈞>Kin;
+鈩>Ro;
+鈬>Taku;
+鈴>Rei;
+鈷>Ko;
+鈿>Ten;
+鉄>Tetsu;
+鉅>Kyo;
+鉈>Sha;
+鉉>Ken;
+鉋>Hou;
+鉐>Seki;
+鉗>Kan;
+鉚>Ryuu;
+鉛>En;
+鉞>Etsu;
+鉢>Hachi;
+鉤>Kou;
+鉦>Sei;
+鉱>Kou;
+鉾>Bou;
+銀>Gin;
+銃>Juu;
+銅>Dou;
+銑>Sen;
+銓>Sen;
+銕>Tetsu;
+銖>Shu;
+銘>Mei;
+銚>You;
+銛>Sen;
+銜>Kan;
+銭>Sen;
+銷>Shou;
+銹>Shuu;
+鋏>Kyou;
+鋒>Hou;
+鋤>Jo;
+鋩>Bou;
+鋪>Ho;
+鋭>Ei;
+鋳>Chuu;
+鋸>Kyo;
+鋺>En;
+鋼>Kou;
+錆>Sei;
+錏>A;
+錐>Sui;
+錘>Tsui;
+錙>Shi;
+錚>Sou;
+錠>Jou;
+錢>Sen;
+錣>Tei;
+錦>Kin;
+錨>Byou;
+錫>Seki;
+錬>Ren;
+錮>Ko;
+錯>Saku;
+録>Roku;
+錻>Bu;
+鍄>Kei;
+鍋>Ka;
+鍍>To;
+鍔>Gaku;
+鍖>Chin;
+鍛>Tan;
+鍜>Ka;
+鍠>Kou;
+鍬>Shuu;
+鍮>Chuu;
+鍵>Ken;
+鍼>Shin;
+鍾>Shou;
+鎌>Ren;
+鎔>You;
+鎖>Sa;
+鎗>Sou;
+鎚>Tsui;
+鎧>Gai;
+鎬>Kou;
+鎭>Chin;
+鎮>Chin;
+鎰>Itsu;
+鏃>Zoku;
+鏈>Ren;
+鏐>Ryuu;
+鏑>Teki;
+鏖>Ou;
+鏗>Kou;
+鏘>Shou;
+鏝>Man;
+鏡>Kyou;
+鏤>Rou;
+鏥>Shuu;
+鏨>San;
+鐃>Dou;
+鐇>Han;
+鐐>Ryou;
+鐓>Tai;
+鐔>Shin;
+鐘>Shou;
+鐙>Tou;
+鐚>A;
+鐡>Tetsu;
+鐫>Sen;
+鐵>Tetsu;
+鐶>Kan;
+鐸>Taku;
+鐺>Tou;
+鑁>Ban;
+鑄>Chuu;
+鑑>Kan;
+鑒>Kan;
+鑚>San;
+鑛>Kou;
+鑞>Rou;
+鑠>Shaku;
+鑢>Ryo;
+鑪>Ro;
+鑰>Yaku;
+鑵>Kan;
+鑷>Jou;
+鑼>Ra;
+鑽>San;
+鑾>Ran;
+鑿>Saku;
+钁>Kaku;
+長>Chou;
+門>Mon;
+閂>San;
+閃>Sen;
+閇>Hei;
+閉>Hei;
+開>Kai;
+閏>Jun;
+閑>Kan;
+間>Kan;
+閔>Bin;
+閘>Kou;
+閙>Tou;
+関>Kan;
+閣>Kaku;
+閤>Kou;
+閥>Batsu;
+閧>Kou;
+閨>Kei;
+閭>Ro;
+閲>Etsu;
+閹>En;
+閻>En;
+閼>A;
+閾>Yoku;
+闃>Geki;
+闇>An;
+闊>Katsu;
+闌>Ran;
+闍>To;
+闔>Kou;
+闕>Ketsu;
+闖>Chin;
+闘>Tou;
+關>Kan;
+闡>Sen;
+闢>Heki;
+闥>Tatsu;
+阜>Fu;
+阡>Sen;
+阨>Aku;
+阪>Han;
+阮>Gen;
+阯>Shi;
+防>Bou;
+阻>So;
+阿>A;
+陀>Da;
+陂>Ha;
+附>Fu;
+陋>Rou;
+陌>Haku;
+降>Kou;
+陏>Ta;
+限>Gen;
+陛>Hei;
+陜>Kou;
+陝>Sen;
+陞>Shou;
+陟>Choku;
+院>In;
+陣>Jin;
+除>Jo;
+陥>Kan;
+陦>Tou;
+陪>Bai;
+陬>Suu;
+陰>In;
+陲>Sui;
+陳>Chin;
+陵>Ryou;
+陶>Tou;
+陷>Kan;
+陸>Riku;
+険>Ken;
+陽>You;
+隅>Guu;
+隆>Ryuu;
+隈>Wai;
+隊>Tai;
+隋>Ta;
+隍>Kou;
+階>Kai;
+随>Zui;
+隔>Kaku;
+隕>In;
+隗>Kai;
+隘>Ai;
+隙>Geki;
+際>Sai;
+障>Shou;
+隠>In;
+隣>Rin;
+隧>Sui;
+隨>Zui;
+險>Ken;
+隰>Shitsu;
+隱>In;
+隲>Shitsu;
+隴>Rou;
+隶>Tai;
+隷>Rei;
+隸>Rei;
+隹>Sui;
+隻>Seki;
+隼>Jun;
+雀>Jaku;
+雁>Gan;
+雄>Yuu;
+雅>Ga;
+集>Shuu;
+雇>Ko;
+雉>Chi;
+雋>Sen;
+雌>Shi;
+雍>You;
+雎>Sho;
+雑>Zatsu;
+雕>Chou;
+雖>Sui;
+雙>Sou;
+雛>Suu;
+雜>Zatsu;
+離>Ri;
+難>Nan;
+雨>U;
+雪>Setsu;
+雫>Da;
+雰>Fun;
+雲>Un;
+零>Rei;
+雷>Rai;
+雹>Haku;
+電>Den;
+需>Ju;
+霄>Shou;
+霆>Tei;
+震>Shin;
+霈>Hai;
+霊>Rei;
+霍>Kaku;
+霎>Sou;
+霏>Hi;
+霑>Ten;
+霓>Gei;
+霖>Rin;
+霙>Ei;
+霜>Sou;
+霞>Ka;
+霤>Ryuu;
+霧>Mu;
+霪>In;
+霰>San;
+露>Ro;
+霸>Haku;
+霹>Heki;
+霽>Sei;
+霾>Bai;
+靂>Reki;
+靄>Ai;
+靆>Tai;
+靈>Rei;
+靉>Ai;
+青>Sei;
+靖>Sei;
+静>Sei;
+靜>Sei;
+非>Hi;
+靠>Kou;
+靡>Hi;
+面>Men;
+靤>Hou;
+靦>Ten;
+靨>You;
+革>Kaku;
+靫>Sai;
+靭>Jin;
+靱>Jin;
+靴>Ka;
+靹>Ketsu;
+靺>Matsu;
+靼>Tan;
+鞁>Hi;
+鞄>Hou;
+鞅>Ou;
+鞋>Ai;
+鞍>An;
+鞏>Kyou;
+鞘>Sou;
+鞜>Tou;
+鞠>Kiku;
+鞣>Juu;
+鞦>Shuu;
+鞨>Katsu;
+鞫>Kiku;
+鞭>Hen;
+鞳>Tou;
+鞴>Fuku;
+韃>Datsu;
+韆>Sen;
+韈>Betsu;
+韋>I;
+韓>Kan;
+韜>Tou;
+韭>Kyuu;
+韮>Kyou;
+韲>Sei;
+音>On;
+韵>In;
+韶>Shou;
+韻>In;
+響>Kyou;
+頁>Ketsu;
+頂>Chou;
+頃>Kei;
+項>Kou;
+順>Jun;
+須>Shu;
+頌>Shou;
+頏>Kou;
+預>Yo;
+頑>Gan;
+頒>Han;
+頓>Ton;
+頗>Ha;
+領>Ryou;
+頚>Kei;
+頡>Kitsu;
+頤>I;
+頬>Kyou;
+頭>Tou;
+頴>Ei;
+頷>Kan;
+頸>Kei;
+頻>Hin;
+頼>Rai;
+頽>Tai;
+顆>Ka;
+顋>Sai;
+題>Dai;
+額>Gaku;
+顎>Gaku;
+顏>Gan;
+顔>Gan;
+顕>Ken;
+願>Gan;
+顛>Ten;
+類>Rui;
+顧>Ko;
+顫>Sen;
+顯>Ken;
+顰>Hin;
+顱>Ro;
+顳>Shou;
+顴>Kan;
+風>Fuu;
+颯>Satsu;
+颱>Tai;
+颶>Ku;
+飃>Hyou;
+飄>Hyou;
+飆>Hyou;
+飛>Hi;
+飜>Hon;
+食>Shoku;
+飢>Ki;
+飩>Ton;
+飫>Yo;
+飭>Choku;
+飮>In;
+飯>Han;
+飲>In;
+飴>I;
+飼>Shi;
+飽>Hou;
+飾>Shoku;
+餃>Kou;
+餅>Hei;
+餉>Shou;
+養>You;
+餌>Ji;
+餐>San;
+餒>Dai;
+餓>Ga;
+餔>Ho;
+餘>Yo;
+餝>Shoku;
+餞>Sen;
+餠>Hei;
+餡>Kan;
+餤>Tan;
+館>Kan;
+餬>Ko;
+餮>Tetsu;
+餽>Ki;
+餾>Ryuu;
+饂>Un;
+饅>Man;
+饉>Kin;
+饋>Ki;
+饌>Sen;
+饐>I;
+饑>Ki;
+饒>Jou;
+饕>Tou;
+饗>Kyou;
+首>Shu;
+馗>Ki;
+馘>Kaku;
+香>Kou;
+馥>Fuku;
+馨>Kei;
+馬>Ba;
+馭>Gyo;
+馮>Hyou;
+馳>Chi;
+馴>Shun;
+馼>Bun;
+駁>Baku;
+駄>Ta;
+駅>Eki;
+駆>Ku;
+駈>Ku;
+駐>Chuu;
+駑>Do;
+駒>Ku;
+駕>Ga;
+駘>Tai;
+駛>Shi;
+駝>Ta;
+駟>Shi;
+駢>Hen;
+駭>Kai;
+駮>Haku;
+駱>Raku;
+駸>Shin;
+駻>Kan;
+駿>Shun;
+騁>Tei;
+騅>Sui;
+騎>Ki;
+騏>Ki;
+騒>Sou;
+験>Ken;
+騙>Hen;
+騨>Tan;
+騫>Ken;
+騰>Tou;
+騷>Sou;
+騾>Ra;
+驀>Baku;
+驂>San;
+驃>Hyou;
+驅>Ku;
+驍>Gyou;
+驕>Kyou;
+驗>Ken;
+驚>Kyou;
+驛>Eki;
+驟>Shuu;
+驢>Ryo;
+驤>Jou;
+驥>Ki;
+驩>Kan;
+驪>Ri;
+驫>Hyuu;
+骨>Kotsu;
+骭>Kan;
+骰>Tou;
+骸>Kai;
+骼>Kaku;
+髀>Hi;
+髄>Zui;
+髏>Rou;
+髑>Toku;
+髓>Zui;
+體>Tei;
+高>Kou;
+髞>Sou;
+髟>Hyou;
+髢>Tei;
+髣>Hou;
+髦>Bou;
+髪>Hatsu;
+髫>Chou;
+髭>Shi;
+髮>Hatsu;
+髯>Zen;
+髱>Hou;
+髴>Futsu;
+髷>Kyoku;
+髻>Kei;
+鬆>Shou;
+鬘>Ban;
+鬚>Shu;
+鬟>Kan;
+鬢>Hin;
+鬣>Ryou;
+鬥>Tou;
+鬧>Tou;
+鬨>Kou;
+鬩>Geki;
+鬪>Tou;
+鬮>Kyuu;
+鬯>Chou;
+鬱>Utsu;
+鬲>Reki;
+鬻>Shuku;
+鬼>Ki;
+魁>Kai;
+魂>Kon;
+魃>Batsu;
+魄>Haku;
+魅>Mi;
+魍>Bou;
+魎>Ryou;
+魏>Gi;
+魑>Chi;
+魔>Ma;
+魘>En;
+魚>Gyo;
+魯>Ro;
+魴>Hou;
+鮃>Hyou;
+鮎>Nen;
+鮑>Hou;
+鮒>Fu;
+鮓>Sa;
+鮟>An;
+鮠>Gai;
+鮨>Shi;
+鮪>I;
+鮫>Kou;
+鮭>Kei;
+鮮>Sen;
+鮹>Sou;
+鯀>Kon;
+鯆>Ho;
+鯉>Ri;
+鯊>Sa;
+鯔>Shi;
+鯖>Sei;
+鯛>Chou;
+鯡>Hi;
+鯢>Gei;
+鯣>Eki;
+鯤>Kon;
+鯨>Gei;
+鯰>Nen;
+鯵>Sou;
+鰄>I;
+鰆>Shun;
+鰈>Chou;
+鰉>Kou;
+鰊>Ren;
+鰌>Shuu;
+鰍>Shuu;
+鰐>Gaku;
+鰒>Fuku;
+鰓>Sai;
+鰔>Kan;
+鰕>Ka;
+鰛>On;
+鰡>Ryuu;
+鰤>Shi;
+鰥>Kan;
+鰭>Ki;
+鰮>On;
+鰲>Gou;
+鰹>Ken;
+鰺>Sou;
+鰻>Ban;
+鰾>Hyou;
+鱆>Shou;
+鱇>Kou;
+鱈>Setsu;
+鱒>Son;
+鱗>Rin;
+鱠>Kai;
+鱧>Rei;
+鱶>Shou;
+鱸>Ro;
+鳥>Chou;
+鳧>Fu;
+鳩>Kyuu;
+鳫>Gan;
+鳬>Fu;
+鳳>Hou;
+鳴>Mei;
+鳶>En;
+鴃>Ketsu;
+鴆>Chin;
+鴇>Hou;
+鴈>Gan;
+鴉>A;
+鴎>Ou;
+鴒>Rei;
+鴕>Ta;
+鴛>En;
+鴟>Shi;
+鴣>Ko;
+鴦>You;
+鴨>Ou;
+鴪>Itsu;
+鴬>Ou;
+鴻>Kou;
+鴾>Bou;
+鴿>Kou;
+鵁>Kou;
+鵄>Shi;
+鵐>Bu;
+鵑>Ken;
+鵙>Geki;
+鵜>Tei;
+鵝>Ga;
+鵞>Ga;
+鵠>Koku;
+鵡>Bu;
+鵬>Hou;
+鵯>Hi;
+鵲>Jaku;
+鵺>Ya;
+鶇>Tou;
+鶉>Shun;
+鶏>Kei;
+鶚>Gaku;
+鶤>Kon;
+鶩>Boku;
+鶯>Ou;
+鶲>Ou;
+鶴>Kaku;
+鶸>Jaku;
+鶺>Seki;
+鶻>Kotsu;
+鷁>Geki;
+鷂>You;
+鷄>Kei;
+鷆>Ten;
+鷏>Ten;
+鷓>Sha;
+鷙>Shi;
+鷦>Shou;
+鷭>Ban;
+鷯>Ryou;
+鷲>Shuu;
+鷸>Itsu;
+鷹>You;
+鷺>Ro;
+鷽>Kaku;
+鸚>Ou;
+鸛>Kan;
+鸞>Ran;
+鹵>Ro;
+鹸>Ken;
+鹹>Kan;
+鹽>En;
+鹿>Roku;
+麁>So;
+麈>Shu;
+麋>Bi;
+麌>Gu;
+麑>Gei;
+麒>Ki;
+麓>Roku;
+麕>Kin;
+麗>Rei;
+麝>Sha;
+麟>Rin;
+麥>Baku;
+麦>Baku;
+麩>Fu;
+麪>Men;
+麭>Hou;
+麸>Fu;
+麹>Kiku;
+麺>Men;
+麻>Ma;
+麼>Ma;
+麾>Ki;
+麿>Ro;
+黄>Kou;
+黌>Kou;
+黍>Sho;
+黎>Rei;
+黏>Nen;
+黐>Chi;
+黒>Koku;
+黔>Ken;
+默>Moku;
+黙>Moku;
+黛>Tai;
+黜>Chutsu;
+黝>Yuu;
+點>Ten;
+黠>Katsu;
+黥>Gei;
+黨>Tou;
+黯>An;
+黴>Bai;
+黶>En;
+黷>Toku;
+黹>Chi;
+黻>Futsu;
+黼>Ho;
+黽>Bou;
+鼇>Gou;
+鼈>Betsu;
+鼎>Tei;
+鼓>Ko;
+鼕>Tou;
+鼠>So;
+鼡>Sho;
+鼬>Yuu;
+鼻>Bi;
+鼾>Kan;
+齊>Sei;
+齋>Sai;
+齎>Sei;
+齏>Sei;
+齒>Shi;
+齔>Shin;
+齟>So;
+齠>Chou;
+齡>Rei;
+齢>Rei;
+齣>Shutsu;
+齦>Gin;
+齧>Ketsu;
+齪>Soku;
+齬>Gyo;
+齲>Ku;
+齶>Gaku;
+齷>Aku;
+龍>Ryuu;
+龕>Gan;
+龜>Ki;
+龝>Shuu;
+龠>Yaku;
+
+# eof
diff --git a/src/com/ibm/icu/dev/demo/translit/thai_test.txt b/src/com/ibm/icu/dev/demo/translit/thai_test.txt
new file mode 100644
index 0000000..ef5f90c
--- /dev/null
+++ b/src/com/ibm/icu/dev/demo/translit/thai_test.txt
@@ -0,0 +1,55 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+@UPPERFILTER@
+Unicode คืออะไร?
+Unicode กำหนดหมายเลขเฉพาะสำหรับทุกอักขระ
+โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด
+ไม่ขึ้นกับว่าจะเป็นโปรแกรมใด
+และไม่ว่าจะเป็นภาษาใด
+
+โดยพื้นฐานแล้ว, คอมพิวเตอร์จะเกี่ยวข้องกับเรื่องของตัวเลข. คอมพิวเตอร์จัดเก็บตัวอักษรและอักขระอื่นๆ โดยการกำหนดหมายเลขให้สำหรับแต่ละตัว. ก่อนหน้าที่๊ Unicode จะถูกสร้างขึ้น, ได้มีระบบ encoding อยู่หลายร้อยระบบสำหรับการกำหนดหมายเลขเหล่านี้. ไม่มี encoding ใดที่มีจำนวนตัวอักขระมากเพียงพอ: ยกตัวอย่างเช่น, เฉพาะในกลุ่มสหภาพยุโรปเพียงแห่งเดียว ก็ต้องการหลาย encoding ในการครอบคลุมทุกภาษาในกลุ่ม. หรือแม้แต่ในภาษาเดี่ยว เช่น ภาษาอังกฤษ ก็ไม่มี encoding ใดที่เพียงพอสำหรับทุกตัวอักษร, เครื่องหมายวรรคตอน และสัญลักษณ์ทางเทคนิคที่ใช้กันอยู่ทั่วไป. 
+
+ระบบ encoding เหล่านี้ยังขัดแย้งซึ่งกันและกัน. นั่นก็คือ, ในสอง encoding สามารถใช้หมายเลขเดียวกันสำหรับตัวอักขระสองตัวที่แตกต่างกัน,หรือใช้หมายเลขต่างกันสำหรับอักขระตัวเดียวกัน. ในระบบคอมพิวเตอร์ (โดยเฉพาะเซิร์ฟเวอร์) ต้องมีการสนับสนุนหลาย encoding; และเมื่อข้อมูลที่ผ่านไปมาระหว่างการเข้ารหัสหรือแพล็ตฟอร์มที่ต่างกัน, ข้อมูลนั้นจะเสี่ยงต่อการผิดพลาดเสียหาย.
+
+Unicode จะเปลี่ยนแปลงสิ่งเหล่านั้นทั้งหมด!
+Unicode กำหนดหมายเลขเฉพาะสำหรับแต่ละอักขระ, โดยไม่สนใจว่าเป็นแพล็ตฟอร์มใด, ไม่ขึ้นกับว่าจะเป็นโปรแกรมใดและไม่ว่าจะเป็นภาษาใด. มาตรฐาน Unicode ได้ถูกนำไปใช้โดยผู้นำในอุตสาหกรรม เช่น Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys และอื่นๆ อีกมาก. Unicode เป็นสิ่งที่จำเป็นสำหรับมาตรฐานใหม่ๆ เช่น XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML ฯลฯ., และเป็นแนวทางอย่างเป็นทางการในการทำ ISO/IEC 10646. Unicode ได้รับการสนับสนุนในระบบปฏิบัติการจำนวนมาก, บราวเซอร์ใหม่ๆ ทกตัว, และผลิตภัณฑ์อื่นๆ อีกมาก. การเกิดขึ้นของ Unicode Standard และทูลส์ต่างๆ ที่มีในการสนับสนุน Unicode, เป็นหนึ่งในแนวโน้มทางเทคโนโลยีซอฟต์แวร์ระดับโลกที่มีความสำคัญที่สุด.
+
+การรวม Unicode เข้าไปในระบบไคลเอ็นต์-เซิร์ฟเวอร์ หรือแอ็พพลิเคชันแบบ multi-tiered และเว็บไซต์ จะทำให้เกิดการประหยัดค่าใช้จ่ายมากกว่าการใช้ชุดอักขระแบบเดิม. Unicode ทำให้ผลิตภัณฑ์ซอฟต์แวร์หนึ่งเดียว หรือเว็บไซต์แห่งเดียว รองรับได้หลายแพล็ตฟอร์ม, หลายภาษาและหลายประเทศโดยไม่ต้องทำการรื้อปรับระบบ. Unicode ยังทำให้ข้อมูลสามารถเคลื่อนย้ายไปมาในหลายๆ ระบบโดยไม่เกิดความผิดพลาดเสียหาย.
+
+เกี่ยวกับ Unicode Consortium
+Unicode Consortium เป็นองค์กรไม่แสวงหากำไรที่ก่อตั้งขึ้นเพื่อพัฒนา, ขยายและส่งเสริมการใช้ Unicode Standard, ซึ่งกำหนดรูปแบบการแทนค่าของข้อความในผลิตภัณฑ์ซอฟต์แวร์และมาตรฐานใหม่ๆ. สมาชิกของสมาคมเป็นตัวแทนจากบริษัทและองค์กรในอุตสาหกรรมคอมพิวเตอร์และการประมวลผลสารสนเทศ. สมาคมได้รับการสนับสนุนทางการเงินผ่านทางค่าธรรมเนียมของการเป็นสมาชิกเท่านั้น. สมาชิกภาพของ Unicode Consortium เปิดกว้างสำหรับองค์กรหรือบุคคลใดๆ ในโลกที่ต้องการสนับสนุน Unicode Standard และช่วยเหลือการขยายตัวและการนำ Unicode ไปใช้งาน. 
+
+สำหรับข้อมูลเพิ่มเติม, ให้ดูที่ Glossary, Sample Unicode-Enabled Products, Technical Introduction และ Useful Resources.
+@TITLECASE@
+ก๊กเฮง แซ่แต้
+กชกร ศราทธทัต
+กติกา อังคสุภณ
+กนก ธรรมประทีป
+กนก วงศ์ทองศรี
+กนกกร ช้างเย็นฉ่ำ
+กนกฉัตร์ ถาวรนันท์
+กนกนวล โปษยะนันทน์
+กนกพร คมคาย
+กนกพร ตีรเลิศพานิช
+กนกพร พันทร
+กนกพร ศรีบัณฑิต
+กนกพร อติวรรณาพัฒน์
+กนกพรรณ ศรีวนาภิรมย์
+กนกรัตน์ เกียรติยิ่งอังศุลี
+กนกรัตน์ สุธรรมพิทักษ์
+กนกวรรณ คงคาประเสริฐ
+กนกวรรณ แซ่เตียว
+กนกวรรณ บุญประเสริฐ
+กนกวรรณ รักทรัพย์
+กนกวรรณ สัจจพงษ์
+กนกวรรณ อุ้ยวงศ์ไพศาล
+กนกศักดิ์ ยิ่งยง
+กนกแก้ว กรสมิต
+กนิษฐา ทนุถนอมราษฎร์
+กนิษฐา หวังวิบูลย์กิจ
+กมล กาญจนโรจน์
+กมล คัมภีร์
+กมล เจตน์มงคลรัตน์
+กมล ชูตระกูลธรรม
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/.project b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/.project
new file mode 100644
index 0000000..7f1208b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.base-feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/build.properties b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/build.properties
new file mode 100644
index 0000000..ea9d11f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes =\
+epl-v10.html,\
+eclipse_update_120.jpg,\
+feature.xml,\
+feature.properties,\
+license.html
+outputUpdateJars = true
+
+generate.plugin@com.ibm.icu.base.source=com.ibm.icu.base
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/feature.xml b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/feature.xml
new file mode 100644
index 0000000..c6921c2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.base/feature.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="com.ibm.icu.base"
+      label="com.ibm.icu.base"
+      version="@BUILD_VERSION@"
+      provider-name="IBM">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="com.ibm.icu.base"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+   <plugin
+         id="com.ibm.icu.base.source"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+</feature>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/.project b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/.project
new file mode 100644
index 0000000..82740eb
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.jse4-feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/build.properties b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/build.properties
new file mode 100644
index 0000000..6da5b4b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/build.properties
@@ -0,0 +1,21 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes =\
+epl-v10.html,\
+eclipse_update_120.jpg,\
+feature.xml,\
+feature.properties,\
+license.html
+outputUpdateJars = true
+
+generate.plugin@com.ibm.icu.jse4.source=com.ibm.icu.jse4
+
+
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/feature.xml b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/feature.xml
new file mode 100644
index 0000000..9e8e716
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu.jse4/feature.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="com.ibm.icu.jse4"
+      label="com.ibm.icu.jse4"
+      version="@BUILD_VERSION@"
+      provider-name="IBM">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="com.ibm.icu.jse4"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         fragment="true"
+         unpack="false"/>
+
+   <plugin
+         id="com.ibm.icu.jse4.source"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+</feature>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/.project b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/.project
new file mode 100644
index 0000000..d407fa0
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu-feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/build.properties b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/build.properties
new file mode 100644
index 0000000..e9000a4
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/build.properties
@@ -0,0 +1,20 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+bin.includes =\
+epl-v10.html,\
+eclipse_update_120.jpg,\
+feature.xml,\
+feature.properties,\
+license.html
+outputUpdateJars = true
+
+generate.plugin@com.ibm.icu.source=com.ibm.icu
+
diff --git a/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/feature.xml b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/feature.xml
new file mode 100644
index 0000000..417e65b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/features/com.ibm.icu/feature.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="com.ibm.icu"
+      label="com.ibm.icu"
+      version="@BUILD_VERSION@">
+
+   <description url="http://www.example.com/description">
+      [Enter Feature Description here.]
+   </description>
+
+   <copyright url="http://www.example.com/copyright">
+      [Enter Copyright Description here.]
+   </copyright>
+
+   <license url="http://www.example.com/license">
+      [Enter License Description here.]
+   </license>
+
+   <plugin
+         id="com.ibm.icu"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+   <plugin
+         id="com.ibm.icu.source"
+         download-size="0"
+         install-size="0"
+         version="@BUILD_VERSION@"
+         unpack="false"/>
+
+</feature>
diff --git a/src/com/ibm/icu/dev/eclipse/misc/ICUConfig.properties b/src/com/ibm/icu/dev/eclipse/misc/ICUConfig.properties
new file mode 100644
index 0000000..26dad40
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/misc/ICUConfig.properties
@@ -0,0 +1,12 @@
+#******************************************************************************
+# Copyright (C) 2008-2009, International Business Machines Corporation and    *
+# others. All Rights Reserved.                                                *
+#******************************************************************************
+# This is the properties contains ICU runtime configuration for eclispe plug-in
+#
+
+#
+# The default TimeZone implementation type used by the ICU TimeZone
+# factory method. [ ICU | JDK ]
+#
+com.ibm.icu.util.TimeZone.DefaultTimeZoneType = JDK
diff --git a/src/com/ibm/icu/dev/eclipse/misc/about_icu.html b/src/com/ibm/icu/dev/eclipse/misc/about_icu.html
new file mode 100644
index 0000000..cddd060
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/misc/about_icu.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>July 2, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+
+		<p><strong>ICU4J 4.0</strong> <br/><br/>
+		The plug-in includes software (&quot;ICU4J&quot;) developed by International Business Machines
+		Corporation and others.
+		<br/><br/>
+		ICU4J is:
+		<blockquote>
+		Copyright (c) 1995-2008 International Business Machines Corporation and others<br/>
+		All rights reserved. 
+		</blockquote>
+		<p>
+		Your use of ICU4J is subject to the terms and conditions of the ICU4J license.  A copy of the
+		license is contained in the file <a href="about_files/license.html" target="_blank">about_files/license.html</a>.</p>
+		<p>
+		ICU4J bundles data files imported from the Unicode Character Database and the Locale Data.  A copy of the
+		Unicode Data and Software license is contained in the file <a href="about_files/ucdterms.txt"/>about_files/ucdterms.txt</a>.</p>
+		<p>
+		The project information including source code, documentations and demo programs are available on
+		the <a href="http://icu-project.org">ICU public web site</a>.</p>
+
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/eclipse/misc/about_icu_base.html b/src/com/ibm/icu/dev/eclipse/misc/about_icu_base.html
new file mode 100644
index 0000000..d2703b8
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/misc/about_icu_base.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>January 9, 2009</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+		
+		<h3>Third Party Content</h3>
+		<p>The Content includes items that have been sourced from third parties as set out below. If you 
+		did not receive this Content directly from the Eclipse Foundation, the following is provided 
+		for informational purposes only, and you should look to the Redistributor's license for 
+		terms and conditions of use.</p>
+
+		<p><strong>ICU4J 4.0.1</strong> <br/><br/>
+		The plug-in includes software (&quot;ICU4J&quot;) developed by International Business Machines
+		Corporation and others.
+		<br/><br/>
+		ICU4J is:
+		<blockquote>
+		Copyright (c) 1995-2009 International Business Machines Corporation and others<br/>
+		All rights reserved. 
+		</blockquote>
+		<p>
+		Your use of ICU4J is subject to the terms and conditions of the ICU4J license.  A copy of the
+		license is contained in the file <a href="about_files/license.html" target="_blank">about_files/license.html</a>.</p>
+		<p>
+		The project information including source code, documentations and demo programs are available on
+		the <a href="http://icu-project.org">ICU public web site</a>.</p>
+
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/eclipse/pdebuild/allElements.xml b/src/com/ibm/icu/dev/eclipse/pdebuild/allElements.xml
new file mode 100644
index 0000000..e4d6613
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/pdebuild/allElements.xml
@@ -0,0 +1,28 @@
+<project name="allElements Delegator">
+	
+ 	<!-- ===================================================================== -->
+ 	<!-- Run a given ${target} on all elements being built                     -->
+ 	<!-- Replace element.id with the id of the top level element being built.    -->
+	<!-- If element.id does not exist in ${buildDirectory}/features/element.id   -->
+	<!-- or ${baseLocation}/features/element.id, then you must provide the       -->
+	<!-- location by setting the property "pluginPath"                           -->
+ 	<!-- Add on <ant> task for each top level element being built.             -->
+ 	<!-- ===================================================================== -->
+ 	<target name="allElementsDelegator">
+ 		<ant antfile="${genericTargets}" target="${target}">
+	 		<property name="type" value="feature" />
+	 		<property name="id" value="@PLUGIN_ID@" />
+ 		</ant>
+ 	</target>
+ 
+ 	<!-- ===================================================================== -->
+ 	<!-- Targets to assemble the built elements for particular configurations  -->
+ 	<!-- These generally call the generated assemble scripts (named in         -->
+ 	<!-- ${assembleScriptName}) but may also add pre and post processing       -->
+ 	<!-- Add one target for each root element and each configuration           -->
+ 	<!-- Replace element.id with the id of the top level element being built   -->
+ 	<!-- ===================================================================== -->
+ 	<target name="assemble.@PLUGIN_ID@">
+ 		<ant antfile="${assembleScriptName}" dir="${buildDirectory}"/>
+ 	</target>
+</project>
diff --git a/src/com/ibm/icu/dev/eclipse/pdebuild/build.properties b/src/com/ibm/icu/dev/eclipse/pdebuild/build.properties
new file mode 100644
index 0000000..50fc9cb
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/pdebuild/build.properties
@@ -0,0 +1,220 @@
+###############################################################################
+# Copyright (c) 2003-2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+#####################
+# Parameters describing how and where to execute the build.
+# Typical users need only update the following properties:
+#    baseLocation - where things you are building against are installed
+#    bootclasspath - The base jars to compile against (typicaly rt.jar)
+#    configs - the list of {os, ws, arch} configurations to build.  
+#
+# Of course any of the settings here can be overridden by spec'ing 
+# them on the command line (e.g., -DbaseLocation=d:/eclipse
+
+############# PRODUCT/PACKAGING CONTROL #############
+product=/plugin or feature id/path/to/.product
+runPackager=true
+
+#Set the name of the archive that will result from the product build.
+#archiveNamePrefix=
+
+# The prefix that will be used in the generated archive.
+#archivePrefix=<output archive root>
+archivePrefix=
+
+# The location underwhich all of the build output will be collected.
+collectingFolder=${archivePrefix}
+
+# The list of {os, ws, arch} configurations to build.  This 
+# value is a '&' separated list of ',' separate triples.  For example, 
+#     configs=win32,win32,x86 & linux,motif,x86
+# By default the value is *,*,*
+#configs=win32, win32, x86 & \
+#	linux, gtk, ppc &\
+# linux, gtk, x86 & \
+#	linux, gtk, x86_64 & \
+#	linux, motif, x86 & \
+#	solaris, motif, sparc & \
+#	solaris, gtk, sparc & \
+#	aix, motif, ppc & \
+#	hpux, motif, PA_RISC & \
+#	macosx, carbon, ppc
+
+# By default PDE creates one archive (result) per entry listed in the configs property.
+# Setting this value to try will cause PDE to only create one output containing all 
+# artifacts for all the platforms listed in the configs property.
+#groupConfigurations=true
+
+#The format of the archive. By default a zip is created using antZip.
+#The list can only contain the configuration for which the desired format is different than zip.
+#archivesFormat=win32, win32, x86 - antZip& \
+#	linux, gtk, ppc - antZip &\
+#    linux, gtk, x86 - antZip& \
+#	linux, gtk, x86_64 - antZip& \
+# linux, motif, x86 - antZip& \
+#	solaris, motif, sparc - antZip& \
+#	solaris, gtk, sparc - antZip& \
+#	aix, motif, ppc - antZip& \
+#	hpux, motif, PA_RISC - antZip& \
+#	macosx, carbon, ppc - antZip
+	
+#Set to true if you want the output to be ready for an update jar (no site.xml generated)
+#outputUpdateJars = false
+
+#Set to true for Jnlp generation
+#codebase should be a URL that will be used as the root of all relative URLs in the output.
+#generateJnlp=false
+#jnlp.codebase=<codebase url>
+#jnlp.j2se=<j2se version>
+#jnlp.locale=<a locale>
+
+#Set to true if you want to sign jars
+#signJars=false
+#sign.alias=<alias>
+#sign.keystore=<keystore location>
+#sign.storepass=<keystore password>
+
+#Arguments to send to the zip executable
+zipargs=
+
+#Arguments to send to the tar executable
+tarargs=
+
+#Control the creation of a file containing the version included in each configuration - on by default 
+#generateVersionsLists=false
+
+############## BUILD NAMING CONTROL ################
+# The directory into which the build elements are fetched and where
+# the build takes place.
+buildDirectory=@BUILD_DIR@
+
+# Type of build.  Used in naming the build output.  Typically this value is
+# one of I, N, M, S, ...
+buildType=@BUILD_TYPE@
+
+# ID of the build.  Used in naming the build output.
+buildId=@BUILD_ID@
+
+# Label for the build.  Used in naming the build output
+buildLabel=${buildType}.${buildId}
+
+# Timestamp for the build.  Used in naming the build output
+timestamp=007
+
+#The value to be used for the qualifier of a plugin or feature when you want to override the value computed by pde.
+#The value will only be applied to plugin or features indicating build.properties, qualifier = context 
+#forceContextQualifier=<the value for the qualifier>
+
+#Enable / disable the generation of a suffix for the features that use .qualifier. 
+#The generated suffix is computed according to the content of the feature   
+#generateFeatureVersionSuffix=true
+
+############# BASE CONTROL #############
+# Settings for the base Eclipse components and Java class libraries 
+# against which you are building.
+# Base location for anything the build needs to compile against.  For example,
+# in most RCP app or a plug-in,  the baseLocation should be the location of a previously
+# installed Eclipse against which the application or plug-in code will be compiled and the RCP delta pack.
+
+base=<path/to/parent/of/eclipse>
+#baseLocation=${base}/eclipse
+baseLocation=@BASE_LOCATION@
+#Os/Ws/Arch/nl of the eclipse specified by baseLocation
+baseos=@BASE_OS@
+basews=@BASE_WS@
+basearch=@BASE_ARCH@
+
+#this property indicates whether you want the set of plug-ins and features to be considered during the build to be limited to the ones reachable from the features / plugins being built
+filteredDependencyCheck=false
+
+#pluginPath is a list of locations in which to find plugins and features.  This list is separated by the platform file separator (; or :)
+#a location is one of:  
+#- the location of the jar or folder that is the plugin or feature : /path/to/foo.jar or /path/to/foo
+#- a directory that contains a /plugins or /features subdirectory
+#- the location of a feature.xml, or for 2.1 style plugins, the plugin.xml or fragment.xml
+#pluginPath=
+
+skipBase=true
+eclipseURL=<url for eclipse download site>
+eclipseBuildId=<Id of Eclipse build to get>
+eclipseBaseURL=${eclipseURL}/eclipse-platform-${eclipseBuildId}-win32.zip
+
+
+############# MAP FILE CONTROL ################
+# This section defines CVS tags to use when fetching the map files from the repository.
+# If you want to fetch the map file from repository / location, change the getMapFiles target in the customTargets.xml
+
+skipMaps=true
+mapsRepo=:pserver:anonymous@example.com/path/to/repo
+mapsRoot=path/to/maps
+mapsCheckoutTag=HEAD
+
+#tagMaps=true
+mapsTagTag=v${buildId}
+
+
+############ REPOSITORY CONTROL ###############
+# This section defines properties parameterizing the repositories where plugins, fragments
+# bundles and features are being obtained from. 
+
+# The tags to use when fetching elements to build.
+# By default thebuilder will use whatever is in the maps.  
+# This value takes the form of a comma separated list of repository identifier (like used in the map files) and the 
+# overriding value
+# For example fetchTag=CVS=HEAD, SVN=v20050101
+# fetchTag=HEAD
+skipFetch=true
+
+
+############# JAVA COMPILER OPTIONS ##############
+# The location of the Java jars to compile against.  Typically the rt.jar for your JDK/JRE
+#bootclasspath=${java.home}/lib/rt.jar
+
+# specific JRE locations to compile against. These values are used to compile bundles specifying a 
+# Bundle-RequiredExecutionEnvironment. Uncomment and set values for environments that you support
+#CDC-1.0/Foundation-1.0= /path/to/rt.jar
+#CDC-1.1/Foundation-1.1=
+#OSGi/Minimum-1.0=
+#OSGi/Minimum-1.1=
+#JRE-1.1=
+#J2SE-1.2=
+#J2SE-1.3=
+#J2SE-1.4=
+#J2SE-1.5=
+#JavaSE-1.6=
+#PersonalJava-1.1=
+#PersonalJava-1.2=
+#CDC-1.0/PersonalBasis-1.0=
+#CDC-1.0/PersonalJava-1.0=
+#CDC-1.1/PersonalBasis-1.1=
+#CDC-1.1/PersonalJava-1.1=
+
+# Specify the output format of the compiler log when eclipse jdt is used
+logExtension=.log
+
+# Whether or not to include debug info in the output jars
+javacDebugInfo=true
+
+# Whether or not to fail the build if there are compiler errors
+javacFailOnError=true
+
+# Enable or disable verbose mode of the compiler
+javacVerbose=true
+
+# Extra arguments for the compiler. These are specific to the java compiler being used.
+compilerArg=-inlineJSR -enableJavadoc -encoding ISO-8859-1
+
+# Default value for the version of the source code. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacSource in build.properties
+javacSource=1.3
+
+# Default value for the version of the byte code targeted. This value is used when compiling plug-ins that do not set the Bundle-RequiredExecutionEnvironment or set javacTarget in build.properties.
+javacTarget=1.1
+
+individualSourceBundles=true
diff --git a/src/com/ibm/icu/dev/eclipse/pdebuild/customTargets.xml b/src/com/ibm/icu/dev/eclipse/pdebuild/customTargets.xml
new file mode 100644
index 0000000..ae4266d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/pdebuild/customTargets.xml
@@ -0,0 +1,161 @@
+<project name="Build specific targets and properties" default="noDefault">
+
+	<!-- ===================================================================== -->
+	<!-- Run a given ${target} on all elements being built -->
+	<!-- Add on <ant> task for each top level element being built. -->
+	<!-- ===================================================================== -->
+	<property name="allElementsFile" value="${builder}/allElements.xml"/>
+	<import file="${allElementsFile}" />
+	<target name="allElements">
+		<antcall target="allElementsDelegator" />
+	</target>
+	
+	<!-- ===================================================================== -->
+	<!-- ===================================================================== -->
+	<target name="getBaseComponents" depends="checkLocalBase" unless="skipBase">
+		<get src="${eclipseBaseURL}" dest="${buildDirectory}/../temp-base.zip" />
+		<unzip dest="${base}" overwrite="true" src="${buildDirectory}/../temp-base.zip" />
+	</target>
+
+	<target name="checkLocalBase">
+		<available file="${base}" property="skipBase" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Check out map files from correct repository -->
+	<!-- Replace values for mapsCheckoutTag as desired. -->
+	<!-- ===================================================================== -->
+	<target name="getMapFiles" depends="checkLocalMaps" unless="skipMaps">
+		<property name="mapsCheckoutTag" value="HEAD" />
+		<cvs cvsRoot="${mapsRepo}" package="${mapsRoot}" dest="${buildDirectory}/maps" tag="${mapsCheckoutTag}" />
+	</target>
+
+	<target name="checkLocalMaps">
+		<available property="skipMaps" file="${buildDirectory}/maps" />
+	</target>
+
+	<target name="tagMapFiles" if="tagMaps">
+		<cvs dest="${buildDirectory}/maps/${mapsRoot}" command="tag ${mapsTagTag}" />
+	</target>
+
+	<!-- ===================================================================== -->
+
+	<target name="clean" unless="noclean">
+		<antcall target="allElements">
+			<param name="target" value="cleanElement" />
+		</antcall>
+	</target>
+
+	<target name="gatherLogs">
+		<mkdir dir="${buildDirectory}/${buildLabel}/compilelogs" />
+		<antcall target="allElements">
+			<param name="target" value="gatherLogs" />
+		</antcall>
+		<unzip dest="${buildDirectory}/${buildLabel}/compilelogs" overwrite="true">
+			<fileset dir="${buildDirectory}/features">
+				<include name="**/*.log.zip" />
+			</fileset>
+		</unzip>
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before setup -->
+	<!-- ===================================================================== -->
+	<target name="preSetup">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after setup but before starting the build proper -->
+	<!-- ===================================================================== -->
+	<target name="postSetup">
+		<antcall target="getBaseComponents" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before fetching the build elements -->
+	<!-- ===================================================================== -->
+	<target name="preFetch">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after fetching the build elements -->
+	<!-- ===================================================================== -->
+	<target name="postFetch">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before generating the build scripts. -->
+	<!-- ===================================================================== -->
+	<target name="preGenerate">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after generating the build scripts. -->
+	<!-- ===================================================================== -->
+	<target name="postGenerate">
+		<antcall target="clean" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before running the build.xmls for the elements being built. -->
+	<!-- ===================================================================== -->
+	<target name="preProcess">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after running the build.xmls for the elements being built. -->
+	<!-- ===================================================================== -->
+	<target name="postProcess">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before running assemble. -->
+	<!-- ===================================================================== -->
+	<target name="preAssemble">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after  running assemble. -->
+	<!-- ===================================================================== -->
+	<target name="postAssemble">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do before running package. -->
+	<!-- ===================================================================== -->
+	<target name="prePackage">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after  running package. -->
+	<!-- ===================================================================== -->
+	<target name="postPackage">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do after the build is done. -->
+	<!-- ===================================================================== -->
+	<target name="postBuild">
+		<antcall target="gatherLogs" />
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do to test the build results -->
+	<!-- ===================================================================== -->
+	<target name="test">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Steps to do to publish the build results -->
+	<!-- ===================================================================== -->
+	<target name="publish">
+	</target>
+
+	<!-- ===================================================================== -->
+	<!-- Default target                                                        -->
+	<!-- ===================================================================== -->
+	<target name="noDefault">
+		<echo message="You must specify a target when invoking this file" />
+	</target>
+
+</project>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.project
new file mode 100644
index 0000000..848567c
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.base.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..40047e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:50:44 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..34e9838
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:50:44 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4f50419
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ICU4J Base test fragment
+Bundle-SymbolicName: com.ibm.icu.base.tests
+Bundle-Version: 1.0.0
+Bundle-Vendor: IBM
+Bundle-Copyright: @COPYRIGHT@
+Fragment-Host: com.ibm.icu.base;bundle-version="[4.0.0,4.2.0)"
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.3,
+ CDC-1.0/Foundation-1.0
+Require-Bundle: org.junit
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java
new file mode 100644
index 0000000..0bbc8b1
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java
@@ -0,0 +1,359 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.util.ULocale;
+
+public class BreakIteratorTest extends ICUTestCase {
+    // ICU behaves a bit differently with this text, but the tested values aren't
+    // affected.  If Java changes behavior they might need to change.
+    private static final String text = "Mr. and Mrs. Mumblety-Peg paid $35.97 for a new 12\" cockatoo. " +
+        "When they got home they both cooed \"Isn't it lovely?\" and sighed softly. " +
+        "\"Let's name it u\u0308\u5098!\" they said with glee.";
+    private static int pos = text.indexOf("sn't");
+    private static BreakIterator cbr;
+    private static BreakIterator wbr;
+    private static BreakIterator lbr;
+    private static BreakIterator sbr;
+        
+    static {
+        cbr = BreakIterator.getCharacterInstance();
+        cbr.setText(text);
+        wbr = BreakIterator.getWordInstance();
+        wbr.setText(text);
+        lbr = BreakIterator.getLineInstance();
+        lbr.setText(text);
+        sbr = BreakIterator.getSentenceInstance();
+        sbr.setText(text);
+                
+        // diagnostic
+        //              dump(cbr);
+        //              dump(wbr);
+        //              dump(lbr);
+        //              dump(sbr);
+    }
+        
+    //      private static void dump(BreakIterator bi) {
+    //              for (int ix = bi.first(), lim = text.length(); ix != lim;) {
+    //                      int nx = bi.next();
+    //                      if (nx < 0) nx = lim;
+    //                      System.out.println(Integer.toString(ix) + ": " + text.substring(ix, nx));
+    //                      ix = nx;
+    //              }
+    //      }
+        
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.hashCode()'
+     */
+    public void testHashCode() {
+        BreakIterator br = BreakIterator.getWordInstance();
+        br.setText(text);
+        BreakIterator brne = BreakIterator.getWordInstance();
+        brne.setText(text + "X");
+        wbr.first();
+        testEHCS(br, wbr, brne);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.BreakIterator(BreakIterator)'
+     */
+    public void testBreakIterator() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.first()'
+     */
+    public void testFirst() {
+        assertEquals(0, cbr.first());
+        assertEquals(0, wbr.first());
+        assertEquals(0, lbr.first());
+        assertEquals(0, sbr.first());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.last()'
+     */
+    public void testLast() {
+        assertEquals(text.length(), cbr.last());
+        assertEquals(text.length(), wbr.last());
+        assertEquals(text.length(), lbr.last());
+        assertEquals(text.length(), sbr.last());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.next(int)'
+     */
+    public void testNextInt() {
+        cbr.first();
+        wbr.first();
+        lbr.first();
+        sbr.first();
+        assertEquals(2, cbr.next(2));
+        assertEquals(3, wbr.next(2));
+        assertEquals(8, lbr.next(2));
+        assertEquals(62, sbr.next(2));
+                
+        cbr.last();
+        wbr.last();
+        lbr.last();
+        sbr.last();
+        assertEquals(174, cbr.next(-2));
+        assertEquals(171, wbr.next(-2));
+        assertEquals(166, lbr.next(-2));
+        assertEquals(135, sbr.next(-2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.next()'
+     */
+    public void testNext() {
+        cbr.first();
+        wbr.first();
+        lbr.first();
+        sbr.first();
+        assertEquals(1, cbr.next());
+        assertEquals(2, wbr.next());
+        assertEquals(4, lbr.next());
+        assertEquals(13, sbr.next());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.previous()'
+     */
+    public void testPrevious() {
+        cbr.last();
+        wbr.last();
+        lbr.last();
+        sbr.last();
+        assertEquals(175, cbr.previous());
+        assertEquals(175, wbr.previous());
+        assertEquals(171, lbr.previous());
+        assertEquals(156, sbr.previous());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.following(int)'
+     */
+    public void testFollowing() {
+        assertEquals(100, cbr.following(pos));
+        assertEquals(103, wbr.following(pos));
+        assertEquals(104, lbr.following(pos));
+        assertEquals(116, sbr.following(pos));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.preceding(int)'
+     */
+    public void testPreceding() {
+        assertEquals(98, cbr.preceding(pos));
+        assertEquals(98, wbr.preceding(pos));
+        assertEquals(97, lbr.preceding(pos));
+        assertEquals(62, sbr.preceding(pos));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.isBoundary(int)'
+     */
+    public void testIsBoundary() {
+        assertTrue(cbr.isBoundary(pos));
+        assertFalse(wbr.isBoundary(pos));
+        assertFalse(lbr.isBoundary(pos));
+        assertFalse(sbr.isBoundary(pos));
+
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.current()'
+     */
+    public void testCurrent() {
+        cbr.following(pos);
+        wbr.following(pos);
+        lbr.following(pos);
+        sbr.following(pos);
+        assertEquals(100, cbr.current());
+        assertEquals(103, wbr.current());
+        assertEquals(104, lbr.current());
+        assertEquals(116, sbr.current());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getText()'
+     */
+    public void testGetText() {
+        CharacterIterator ci = cbr.getText();
+        StringBuffer buf = new StringBuffer(ci.getEndIndex() - ci.getBeginIndex());
+        for (char c = ci.first(); c != CharacterIterator.DONE; c = ci.next()) {
+            buf.append(c);
+        }
+        String result = buf.toString();
+        assertEquals(text, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.setText(String)'
+     */
+    public void testSetTextString() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.setText(CharacterIterator)'
+     */
+    public void testSetTextCharacterIterator() {
+        CharacterIterator ci = new StringCharacterIterator(text, pos);
+        BreakIterator bi = BreakIterator.getWordInstance();
+        bi.setText(ci);
+        assertEquals(2, bi.next());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance()'
+     */
+    public void testGetWordInstance() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance(Locale)'
+     */
+    public void testGetWordInstanceLocale() {
+        assertNotNull(BreakIterator.getWordInstance(Locale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getWordInstance(ULocale)'
+     */
+    public void testGetWordInstanceULocale() {
+        assertNotNull(BreakIterator.getWordInstance(ULocale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance()'
+     */
+    public void testGetLineInstance() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance(Locale)'
+     */
+    public void testGetLineInstanceLocale() {
+        assertNotNull(BreakIterator.getLineInstance(Locale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getLineInstance(ULocale)'
+     */
+    public void testGetLineInstanceULocale() {
+        assertNotNull(BreakIterator.getLineInstance(ULocale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance()'
+     */
+    public void testGetCharacterInstance() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance(Locale)'
+     */
+    public void testGetCharacterInstanceLocale() {
+        assertNotNull(BreakIterator.getCharacterInstance(Locale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getCharacterInstance(ULocale)'
+     */
+    public void testGetCharacterInstanceULocale() {
+        assertNotNull(BreakIterator.getCharacterInstance(ULocale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance()'
+     */
+    public void testGetSentenceInstance() {
+        // implicitly tested
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance(Locale)'
+     */
+    public void testGetSentenceInstanceLocale() {
+        assertNotNull(BreakIterator.getSentenceInstance(Locale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getSentenceInstance(ULocale)'
+     */
+    public void testGetSentenceInstanceULocale() {
+        assertNotNull(BreakIterator.getSentenceInstance(ULocale.JAPAN));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance()'
+     */
+    public void testGetTitleInstance() {
+        // not implemented
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance(Locale)'
+     */
+    public void testGetTitleInstanceLocale() {
+        // not implemented
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getTitleInstance(ULocale)'
+     */
+    public void testGetTitleInstanceULocale() {
+        // not implemented
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        assertNotNull(BreakIterator.getAvailableLocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.getAvailableULocales()'
+     */
+    public void testGetAvailableULocales() {
+        assertNotNull(BreakIterator.getAvailableULocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.toString()'
+     */
+    public void testToString() {
+        assertNotNull(cbr.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.clone()'
+     */
+    public void testClone() {
+        // see testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.BreakIterator.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // see testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java
new file mode 100644
index 0000000..fddf539
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java
@@ -0,0 +1,559 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class CalendarTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.hashCode()'
+     */
+    public void testHashCode() {
+        Calendar cal1 = Calendar.getInstance();
+        Calendar cal2 = Calendar.getInstance();
+        Calendar cal3 = Calendar.getInstance();
+        cal3.setMinimalDaysInFirstWeek(cal3.getMinimalDaysInFirstWeek()+1);
+        testEHCS(cal1, cal2, cal3);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.Calendar(Calendar)'
+     */
+    public void testCalendar() {
+        // tested implicitly everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance()'
+     */
+    public void testGetInstance() {
+        // tested by testEHCS
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone)'
+     */
+    public void testGetInstanceTimeZone() {
+        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+        Calendar cal = Calendar.getInstance(tz);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+        assertEquals(tz, cal.getTimeZone());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(Locale)'
+     */
+    public void testGetInstanceLocale() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(ULocale)'
+     */
+    public void testGetInstanceULocale() {
+        Calendar cal = Calendar.getInstance(ULocale.US);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, Locale)'
+     */
+    public void testGetInstanceTimeZoneLocale() {
+        TimeZone tz = TimeZone.getTimeZone("America/New_York");
+        Calendar cal = Calendar.getInstance(tz, Locale.US);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getInstance(TimeZone, ULocale)'
+     */
+    public void testGetInstanceTimeZoneULocale() {
+        TimeZone tz = TimeZone.getTimeZone("America/New_York");
+        Calendar cal = Calendar.getInstance(tz, ULocale.US);
+        assertNotNull(cal);
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        assertNotNull(Calendar.getAvailableLocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getAvailableULocales()'
+     */
+    public void testGetAvailableULocales() {
+        assertNotNull(Calendar.getAvailableULocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getTime()'
+     */
+    public void testGetTime() {
+        Calendar cal = Calendar.getInstance();
+        assertNotNull(cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setTime(Date)'
+     */
+    public void testSetTime() {
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2006, 0, 20, 9, 30, 0);
+        Date date = cal.getTime();
+        cal = Calendar.getInstance();
+        cal.setTime(date);
+        assertEquals(date, cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getTimeInMillis()'
+     */
+    public void testGetTimeInMillis() {
+        Calendar cal = Calendar.getInstance();
+        assertTrue(0 != cal.getTimeInMillis());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setTimeInMillis(long)'
+     */
+    public void testSetTimeInMillis() {
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2006, 0, 20, 9, 30, 0);
+        long millis = cal.getTimeInMillis();
+        Date date = cal.getTime();
+        
+        cal = Calendar.getInstance();
+        cal.setTimeInMillis(millis);
+        
+        assertEquals(date, cal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.get(int)'
+     */
+    public void testGet() {
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2006, 0, 20, 9, 30, 0);
+        assertEquals(0, cal.get(Calendar.MONTH));
+        assertEquals(20, cal.get(Calendar.DAY_OF_MONTH));
+        assertEquals(30, cal.get(Calendar.MINUTE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.set(int, int)'
+     */
+    public void testSetIntInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1977);
+        assertEquals(1977, cal.get(Calendar.YEAR));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int)'
+     */
+    public void testSetIntIntInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15);
+        assertEquals(15, cal.get(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int)'
+     */
+    public void testSetIntIntIntIntInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15, 14, 25);
+        assertEquals(25, cal.get(Calendar.MINUTE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.set(int, int, int, int, int, int)'
+     */
+    public void testSetIntIntIntIntIntInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15, 14, 25, 51);
+        assertEquals(51, cal.get(Calendar.SECOND));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.clear()'
+     */
+    public void testClear() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15, 14, 25, 51);
+        cal.clear();
+        assertEquals(0, cal.get(Calendar.MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.clear(int)'
+     */
+    public void testClearInt() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, 9, 15, 14, 25, 51);
+        assertTrue(cal.isSet(Calendar.DAY_OF_MONTH));
+        cal.clear(Calendar.DAY_OF_MONTH);
+        assertFalse(cal.isSet(Calendar.DAY_OF_MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isSet(int)'
+     */
+    public void testIsSet() {
+        // see testClearInt
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested by testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isEquivalentTo(Calendar)'
+     */
+    public void testIsEquivalentTo() {
+        Calendar cal = Calendar.getInstance();
+        Calendar cal2 = Calendar.getInstance();
+        cal2.set(1994, 6, 21, 8, 7);
+        assertTrue(cal.isEquivalentTo(cal2));
+        cal.setTimeZone(TimeZone.getTimeZone("CST"));
+        cal2.setTimeZone(TimeZone.getTimeZone("PDT"));
+        assertFalse(cal.isEquivalentTo(cal2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.before(Object)'
+     */
+    public void testBefore() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1990);
+        assertTrue(cal.before(new Date()));
+        assertTrue(cal.before(Calendar.getInstance()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.after(Object)'
+     */
+    public void testAfter() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 3058);
+        assertTrue(cal.after(new Date()));
+        assertTrue(cal.after(Calendar.getInstance()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getActualMaximum(int)'
+     */
+    public void testGetActualMaximum() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertEquals(11, cal.getActualMaximum(Calendar.MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getActualMinimum(int)'
+     */
+    public void testGetActualMinimum() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertEquals(0, cal.getActualMinimum(Calendar.MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.roll(int, boolean)'
+     */
+    public void testRollIntBoolean() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(1997, 1, 27);
+        cal.roll(Calendar.DATE, true);
+        assertEquals(28, cal.get(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.roll(int, int)'
+     */
+    public void testRollIntInt() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(1997, 1, 27);
+        cal.roll(Calendar.DATE, 3);
+        assertEquals(2, cal.get(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.add(int, int)'
+     */
+    public void testAdd() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(1997, 1, 27);
+        cal.add(Calendar.DATE, 3);
+        assertEquals(2, cal.get(Calendar.DATE));
+        assertEquals(2, cal.get(Calendar.MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(Locale)'
+     */
+    public void testGetDisplayNameLocale() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals("Calendar", cal.getDisplayName(Locale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDisplayName(ULocale)'
+     */
+    public void testGetDisplayNameULocale() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals("Calendar", cal.getDisplayName(ULocale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.compareTo(Calendar)'
+     */
+    public void testCompareToCalendar() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1990);
+        assertTrue(0 > cal.compareTo(Calendar.getInstance()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.compareTo(Object)'
+     */
+    public void testCompareToObject() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1990);
+        assertTrue(0 > cal.compareTo((Object)Calendar.getInstance()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, Locale)'
+     */
+    public void testGetDateTimeFormatIntIntLocale() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1990, 8, 16, 20, 3);
+        DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, Locale.US);
+        assertEquals("September 16, 1990 8:03 PM", df.format(cal));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDateTimeFormat(int, int, ULocale)'
+     */
+    public void testGetDateTimeFormatIntIntULocale() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1990, 8, 16, 20, 3);
+        DateFormat df = cal.getDateTimeFormat(DateFormat.LONG, DateFormat.SHORT, ULocale.US);
+        assertEquals("September 16, 1990 8:03 PM", df.format(cal));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.fieldDifference(Date, int)'
+     */
+    public void testFieldDifference() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.DAY_OF_MONTH, 0);
+        Date date = cal.getTime();
+        cal.add(Calendar.DAY_OF_MONTH, 5);
+        assertEquals(-5, cal.fieldDifference(date, Calendar.DAY_OF_MONTH));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getTimeZone()'
+     */
+    public void testGetTimeZone() {
+        Calendar cal = Calendar.getInstance();
+        assertNotNull(cal.getTimeZone());
+    }
+    
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setTimeZone(TimeZone)'
+     */
+    public void testSetTimeZone() {
+        Calendar cal = Calendar.getInstance();
+        TimeZone value1 = cal.getTimeZone();
+        String tzn = "PDT".equals(value1.getID()) ? "CST" : "PDT";
+        TimeZone value2 = TimeZone.getTimeZone(tzn);
+        cal.setTimeZone(value2);
+        TimeZone result = cal.getTimeZone();
+        assertNotEqual(value1, result);
+        assertEquals(value2, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setLenient(boolean)'
+     */
+    public void testSetLenient() {
+        Calendar cal = Calendar.getInstance();
+        boolean lenient = cal.isLenient();
+        cal.setLenient(!lenient);
+        assertFalse(lenient == cal.isLenient());
+        
+        // not testing if it has the expected effect
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isLenient()'
+     */
+    public void testIsLenient() {
+        // tested by testSetLenient
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setFirstDayOfWeek(int)'
+     */
+    public void testSetFirstDayOfWeek() {
+        Calendar cal = Calendar.getInstance();
+        int firstDay = cal.getFirstDayOfWeek();
+        cal.setFirstDayOfWeek(firstDay+1);
+        assertEquals(firstDay+1, cal.getFirstDayOfWeek());
+
+        // don't test functionality
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getFirstDayOfWeek()'
+     */
+    public void testGetFirstDayOfWeek() {
+        // tested by testSetFirstDayOfWeek
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.setMinimalDaysInFirstWeek(int)'
+     */
+    public void testSetMinimalDaysInFirstWeek() {
+        Calendar cal = Calendar.getInstance();
+        int firstDay = cal.getMinimalDaysInFirstWeek();
+        cal.setMinimalDaysInFirstWeek(firstDay+1);
+        assertEquals(firstDay+1, cal.getMinimalDaysInFirstWeek());
+
+        // don't test functionality
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getMinimalDaysInFirstWeek()'
+     */
+    public void testGetMinimalDaysInFirstWeek() {
+        // tested by testSetMinimalDaysInFirstWeek
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getMinimum(int)'
+     */
+    public void testGetMinimum() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals(1, cal.getMinimum(Calendar.DAY_OF_WEEK));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getMaximum(int)'
+     */
+    public void testGetMaximum() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals(7, cal.getMaximum(Calendar.DAY_OF_WEEK));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getGreatestMinimum(int)'
+     */
+    public void testGetGreatestMinimum() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals(1, cal.getGreatestMinimum(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getLeastMaximum(int)'
+     */
+    public void testGetLeastMaximum() {
+        Calendar cal = Calendar.getInstance();
+        assertEquals(28, cal.getLeastMaximum(Calendar.DATE));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getDayOfWeekType(int)'
+     */
+    public void testGetDayOfWeekType() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertEquals(Calendar.WEEKDAY, cal.getDayOfWeekType(Calendar.FRIDAY));
+        assertEquals(Calendar.WEEKEND, cal.getDayOfWeekType(Calendar.SATURDAY));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getWeekendTransition(int)'
+     */
+    public void testGetWeekendTransition() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        try {
+            cal.getWeekendTransition(Calendar.WEEKEND_ONSET);
+            fail("expected IllegalArgumentException from getWeekendTransition");
+        }
+        catch (IllegalArgumentException e) {
+            // ok
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isWeekend(Date)'
+     */
+    public void testIsWeekendDate() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+        assertTrue(cal.isWeekend(cal.getTime()));
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
+        assertFalse(cal.isWeekend(cal.getTime()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.isWeekend()'
+     */
+    public void testIsWeekend() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
+        assertTrue(cal.isWeekend());
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
+        assertFalse(cal.isWeekend());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.clone()'
+     */
+    public void testClone() {
+        // tested by testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.toString()'
+     */
+    public void testToString() {
+        Calendar cal = Calendar.getInstance();
+        assertNotNull(cal.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.Calendar.getType()'
+     */
+    public void testGetType() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+        assertEquals("gregorian", cal.getType());
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java
new file mode 100644
index 0000000..9638984
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java
@@ -0,0 +1,102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+
+public class CollationKeyTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.hashCode()'
+     */
+    public void testHashCode() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        CollationKey k2 = c.getCollationKey("this");
+        c.setStrength(Collator.TERTIARY);
+        CollationKey kn = c.getCollationKey("this");
+        testEHCS(k1, k2, kn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.CollationKey(CollationKey)'
+     */
+    public void testCollationKey() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.compareTo(CollationKey)'
+     */
+    public void testCompareToCollationKey() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        CollationKey k2 = c.getCollationKey("this");
+        c.setStrength(Collator.TERTIARY);
+        CollationKey k3 = c.getCollationKey("this");
+        assertTrue(0 == k1.compareTo(k2));
+        assertFalse(0 == k1.compareTo(k3));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.compareTo(Object)'
+     */
+    public void testCompareToObject() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        CollationKey k2 = c.getCollationKey("this");
+        assertTrue(0 == k1.compareTo((Object)k2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.equals(Object)'
+     */
+    public void testEqualsObject() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        CollationKey k2 = c.getCollationKey("this");
+        assertTrue(k1.equals((Object)k2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.toString()'
+     */
+    public void testToString() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        assertNotNull(k1.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.getSourceString()'
+     */
+    public void testGetSourceString() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        assertEquals("This", k1.getSourceString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.CollationKey.toByteArray()'
+     */
+    public void testToByteArray() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey("This");
+        byte[] key = k1.toByteArray();
+        assertNotNull(key);
+        assertTrue(0 < key.length);
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java
new file mode 100644
index 0000000..7321d57
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java
@@ -0,0 +1,205 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+public class CollatorTest extends ICUTestCase {
+    private static final String s1 = "Fu\u0308nf"; // capital F + u + diaresis
+    private static final String s2 = "fu\u0308nf"; // u + diaresis
+    private static final String s3 = "f\u00fcnf"; // u-umlaut
+    private static final String s4 = "fu\u0308\u0316nf"; // u + diaresis above + grave below
+    private static final String s5 = "fu\u0316\u0308nf"; // u + grave below + diaresis above
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.hashCode()'
+     */
+    public void testHashCode() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.SECONDARY);
+        Collator c2 = Collator.getInstance();
+        c2.setStrength(Collator.SECONDARY);
+        Collator cn = Collator.getInstance();
+        cn.setStrength(Collator.TERTIARY);
+        testEHCS(c, c2, cn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.Collator(Collator)'
+     */
+    public void testCollator() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.setStrength(int)'
+     */
+    public void testSetStrength() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertTrue(0 == c.compare(s1, s2));
+        c.setStrength(Collator.SECONDARY);
+        assertTrue(0 == c.compare(s1, s2));
+        c.setStrength(Collator.TERTIARY);
+        assertTrue(0 < c.compare(s1, s2));
+        assertTrue(0 == c.compare(s2, s3));
+        c.setStrength(Collator.QUATERNARY);
+        assertTrue(0 > c.compare(s2, s3));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.setDecomposition(int)'
+     */
+    public void testSetDecomposition() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.TERTIARY);
+        assertTrue(0 != c.compare(s4, s5));
+        c.setDecomposition(Collator.IDENTICAL);
+        assertTrue(0 == c.compare(s4, s5));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getInstance()'
+     */
+    public void testGetInstance() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getInstance(ULocale)'
+     */
+    public void testGetInstanceULocale() {
+        Collator c = Collator.getInstance(ULocale.GERMANY);
+        assertNotNull(c);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getInstance(Locale)'
+     */
+    public void testGetInstanceLocale() {
+        Collator c = Collator.getInstance(Locale.GERMANY);
+        assertNotNull(c);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        assertNotNull(Collator.getAvailableLocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getAvailableULocales()'
+     */
+    public void testGetAvailableULocales() {
+        assertNotNull(Collator.getAvailableULocales());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getKeywords()'
+     */
+    public void testGetKeywords() {
+        assertEquals(0, Collator.getKeywords().length);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getKeywordValues(String)'
+     */
+    public void testGetKeywordValues() {
+        assertEquals(0, Collator.getKeywordValues("").length);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getStrength()'
+     */
+    public void testGetStrength() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertEquals(Collator.PRIMARY, c.getStrength());
+        c.setStrength(Collator.SECONDARY);
+        assertEquals(Collator.SECONDARY, c.getStrength());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getDecomposition()'
+     */
+    public void testGetDecomposition() {
+        Collator c = Collator.getInstance();
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        assertEquals(Collator.CANONICAL_DECOMPOSITION, c.getDecomposition());
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+        assertEquals(Collator.NO_DECOMPOSITION, c.getDecomposition());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.compare(Object, Object)'
+     */
+    public void testCompareObjectObject() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertTrue(0 == c.compare((Object)s1, (Object)s2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.equals(String, String)'
+     */
+    public void testEqualsStringString() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertTrue(c.equals(s1, s2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.compare(String, String)'
+     */
+    public void testCompareStringString() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        assertTrue(0 == c.compare(s1, s2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.getCollationKey(String)'
+     */
+    public void testGetCollationKey() {
+        Collator c = Collator.getInstance();
+        c.setStrength(Collator.PRIMARY);
+        CollationKey k1 = c.getCollationKey(s1);
+        CollationKey k2 = c.getCollationKey(s2);
+        assertTrue(k1.equals(k2));
+        c.setStrength(Collator.TERTIARY);
+        k1 = c.getCollationKey(s1);
+        k2 = c.getCollationKey(s2);
+        assertFalse(k1.equals(k2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.toString()'
+     */
+    public void testToString() {
+        assertNotNull(Collator.getInstance().toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.clone()'
+     */
+    public void testClone() {
+        // tested above
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.Collator.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested above
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java
new file mode 100644
index 0000000..b7ffad5
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java
@@ -0,0 +1,257 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.util.ULocale;
+
+public class DateFormatSymbolsTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.hashCode()'
+     */
+    public void testHashCode() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        DateFormatSymbols dfs2 = new DateFormatSymbols(ULocale.US);
+        DateFormatSymbols dfsn = new DateFormatSymbols(Locale.US);
+        dfsn.setAmPmStrings(new String[] { "sw", "xw" });
+        testEHCS(dfs, dfs2, dfsn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(DateFormatSymbols)'
+     */
+    public void testDateFormatSymbolsDateFormatSymbols() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols()'
+     */
+    public void testDateFormatSymbols() {
+        DateFormatSymbols dfs = new DateFormatSymbols();
+        assertNotNull(dfs.getWeekdays());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(Locale)'
+     */
+    public void testDateFormatSymbolsLocale() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getWeekdays());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.DateFormatSymbols(ULocale)'
+     */
+    public void testDateFormatSymbolsULocale() {
+        DateFormatSymbols dfs = new DateFormatSymbols(ULocale.US);
+        assertNotNull(dfs.getWeekdays());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getEras()'
+     */
+    public void testGetEras() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getEras());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setEras(String[])'
+     */
+    public void testSetEras() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getEras();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setEras(newvalue);
+        String[] result = dfs.getEras();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getMonths()'
+     */
+    public void testGetMonths() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getMonths());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setMonths(String[])'
+     */
+    public void testSetMonths() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getMonths();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setMonths(newvalue);
+        String[] result = dfs.getMonths();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getShortMonths()'
+     */
+    public void testGetShortMonths() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getShortMonths());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setShortMonths(String[])'
+     */
+    public void testSetShortMonths() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getShortMonths();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setShortMonths(newvalue);
+        String[] result = dfs.getShortMonths();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getWeekdays()'
+     */
+    public void testGetWeekdays() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getShortMonths());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setWeekdays(String[])'
+     */
+    public void testSetWeekdays() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getWeekdays();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setWeekdays(newvalue);
+        String[] result = dfs.getWeekdays();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getShortWeekdays()'
+     */
+    public void testGetShortWeekdays() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getShortWeekdays());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setShortWeekdays(String[])'
+     */
+    public void testSetShortWeekdays() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getShortWeekdays();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setShortWeekdays(newvalue);
+        String[] result = dfs.getShortWeekdays();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getAmPmStrings()'
+     */
+    public void testGetAmPmStrings() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getAmPmStrings());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setAmPmStrings(String[])'
+     */
+    public void testSetAmPmStrings() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[] oldvalue = dfs.getAmPmStrings();
+        String[] newvalue = (String[])oldvalue.clone();
+        newvalue[0] = newvalue[0] + "!";
+        dfs.setAmPmStrings(newvalue);
+        String[] result = dfs.getAmPmStrings();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getZoneStrings()'
+     */
+    public void testGetZoneStrings() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getZoneStrings());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setZoneStrings(String[][])'
+     */
+    public void testSetZoneStrings() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String[][] oldvalue = dfs.getZoneStrings();
+        String[][] newvalue = (String[][])cloneComplex(oldvalue);
+        newvalue[0][0] = newvalue[0][0] + "!";
+        dfs.setZoneStrings(newvalue);
+        String[][] result = dfs.getZoneStrings();
+        assertArraysNotEqual(oldvalue, result);
+        assertArraysEqual(newvalue, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.getLocalPatternChars()'
+     */
+    public void testGetLocalPatternChars() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.getLocalPatternChars());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.setLocalPatternChars(String)'
+     */
+    public void testSetLocalPatternChars() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        String pat = dfs.getLocalPatternChars();
+        StringBuffer buf = new StringBuffer(pat);
+        buf.setCharAt(0, (char)(pat.charAt(0) + 1));
+        String pat2 = buf.toString();
+        dfs.setLocalPatternChars(pat2);
+        String pat3 = dfs.getLocalPatternChars();
+        assertNotEqual(pat, pat2);
+        assertEquals(pat2, pat3);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.toString()'
+     */
+    public void testToString() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        assertNotNull(dfs.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.clone()'
+     */
+    public void testClone() {
+        // tested by testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormatSymbols.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested by testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java
new file mode 100644
index 0000000..4a4c040
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java
@@ -0,0 +1,443 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class DateFormatTest extends ICUTestCase {
+    private Calendar aCal;
+    private Calendar anESTCal;
+    private Date aDate;
+    private String aDateString;
+    private String aTimeString;
+    private String anESTTimeString;
+    private String aDateTimeString;
+    private String aShortDateTimeString;
+    private String aDefaultESTDateTimeString;
+    private DateFormat aDF;
+    private StringBuffer aBuf;
+    private FieldPosition anFP;
+        
+    protected void setUp() throws Exception {
+        super.setUp();
+                
+        java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
+        gcal.clear();
+        gcal.set(java.util.GregorianCalendar.YEAR, 1990);
+        gcal.set(java.util.GregorianCalendar.MONTH, java.util.GregorianCalendar.DECEMBER);
+        gcal.set(java.util.GregorianCalendar.DATE, 17);
+        gcal.set(java.util.GregorianCalendar.HOUR, 5);
+        gcal.set(java.util.GregorianCalendar.MINUTE, 17);
+        aCal = new Calendar(gcal);
+        anESTCal = Calendar.getInstance();
+        anESTCal.setTimeZone(TimeZone.getTimeZone("EST"));
+        aDate = gcal.getTime();
+        aDateString = "Dec 17, 1990"; // medium -- the default
+        aTimeString = "5:17:00 AM"; // medium
+        anESTTimeString = "8:17:00 AM";
+        aDateTimeString = "Dec 17, 1990 5:17:00 AM"; // medium, medium
+        aDefaultESTDateTimeString = "Dec 17, 1990 8:17 AM"; // medium, short -- the default
+        aShortDateTimeString = "12/17/90 5:17 AM"; // short, short
+        aDF = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US);
+        aBuf = new StringBuffer();
+        anFP = new FieldPosition(0);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.hashCode()'
+     */
+    public final void testHashCode() {
+        DateFormat df = DateFormat.getInstance();
+        DateFormat eq = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
+        testEHCS(df, eq, aDF);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.DateFormat(DateFormat)'
+     */
+    public final void testDateFormat() {
+        DateFormat df = new DateFormat(java.text.DateFormat.getInstance());
+        assertEquals(DateFormat.getInstance(), df);
+    }
+
+    private void assertEqualDateString(StringBuffer buf) {
+        assertEquals(aDateTimeString, buf.toString());
+    }
+        
+    private void assertEqualDateString(String str) {
+        assertEquals(aDateTimeString, str);
+    }
+        
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.format(Object, StringBuffer, FieldPosition)'
+     */
+    public final void testFormatObjectStringBufferFieldPosition() {
+        assertEqualDateString(aDF.format(aDate, aBuf, anFP));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.format(Calendar, StringBuffer, FieldPosition)'
+     */
+    public final void testFormatCalendarStringBufferFieldPosition() {
+        assertEqualDateString(aDF.format(aCal, aBuf, anFP));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.format(Date, StringBuffer, FieldPosition)'
+     */
+    public final void testFormatDateStringBufferFieldPosition() {
+        assertEqualDateString(aDF.format(aDate, aBuf, anFP));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.format(Date)'
+     */
+    public final void testFormatDate() {
+        assertEqualDateString(aDF.format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.parse(String)'
+     */
+    public final void testParseString() throws Exception {
+        assertEquals(aDate, aDF.parse(aDateTimeString));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.parse(String, Calendar, ParsePosition)'
+     */
+    public final void testParseStringCalendarParsePosition() {
+        aDF.parse(aDateTimeString, aCal, new ParsePosition(0));
+        assertEquals(aDate, aCal.getTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.parse(String, ParsePosition)'
+     */
+    public final void testParseStringParsePosition() {
+        assertEquals(aDate, aDF.parse(aDateTimeString, new ParsePosition(0)));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.parseObject(String, ParsePosition)'
+     */
+    public final void testParseObjectStringParsePosition() {
+        assertEquals(aDate, aDF.parseObject(aDateTimeString, new ParsePosition(0)));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance()'
+     */
+    public final void testGetTimeInstance() {
+        assertEquals(aTimeString, DateFormat.getTimeInstance().format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int)'
+     */
+    public final void testGetTimeInstanceInt() {
+        assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, Locale)'
+     */
+    public final void testGetTimeInstanceIntLocale() {
+        assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(int, ULocale)'
+     */
+    public final void testGetTimeInstanceIntULocale() {
+        assertEquals(aTimeString, DateFormat.getTimeInstance(DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance()'
+     */
+    public final void testGetDateInstance() {
+        assertEquals(aDateString, DateFormat.getDateInstance().format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int)'
+     */
+    public final void testGetDateInstanceInt() {
+        assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, Locale)'
+     */
+    public final void testGetDateInstanceIntLocale() {
+        assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(int, ULocale)'
+     */
+    public final void testGetDateInstanceIntULocale() {
+        assertEquals(aDateString, DateFormat.getDateInstance(DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance()'
+     */
+    public final void testGetDateTimeInstance() {
+        assertEquals(aDateTimeString, DateFormat.getDateTimeInstance().format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int)'
+     */
+    public final void testGetDateTimeInstanceIntInt() {
+        assertEquals(aDateTimeString, 
+                     DateFormat.getDateTimeInstance(
+                                                    DateFormat.MEDIUM, DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, Locale)'
+     */
+    public final void testGetDateTimeInstanceIntIntLocale() {
+        assertEquals(aDateTimeString, 
+                     DateFormat.getDateTimeInstance(
+                                                    DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(int, int, ULocale)'
+     */
+    public final void testGetDateTimeInstanceIntIntULocale() {
+        assertEquals(aDateTimeString, 
+                     DateFormat.getDateTimeInstance(
+                                                    DateFormat.MEDIUM, DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getInstance()'
+     */
+    public final void testGetInstance() {
+        assertEquals(aShortDateTimeString, DateFormat.getInstance().format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getAvailableLocales()'
+     */
+    public final void testGetAvailableLocales() {
+        Locale[] locales = DateFormat.getAvailableLocales();
+        if (ICUTestCase.testingWrapper) {
+            ICUTestCase.assertArraysEqual(java.text.DateFormat.getAvailableLocales(), locales);
+        } else {
+            assertNotNull(locales);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.setCalendar(Calendar)'
+     */
+    public final void testSetCalendar() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("EST"));
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        df.setCalendar(cal);
+        assertEquals("8:17 AM", df.format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getCalendar()'
+     */
+    public final void testGetCalendar() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("EST"));
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        df.setCalendar(cal);
+        assertEquals(cal, df.getCalendar());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.setNumberFormat(NumberFormat)'
+     */
+    public final void testSetNumberFormat() {
+        // no easy way to test effect of setting the number format
+        NumberFormat nf = NumberFormat.getInstance();
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        df.setNumberFormat(nf);
+        // note, can't actually USE the dateformat since it changes the calendar
+        assertEquals(nf, df.getNumberFormat());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getNumberFormat()'
+     */
+    public final void testGetNumberFormat() {
+        // see testSetNumberFormat
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.setTimeZone(TimeZone)'
+     */
+    public final void testSetTimeZone() {
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        TimeZone tz = TimeZone.getTimeZone("EST");
+        df.setTimeZone(tz);
+        assertEquals("8:17 AM", df.format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeZone()'
+     */
+    public final void testGetTimeZone() {
+        DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
+        TimeZone tz = TimeZone.getTimeZone("EST");
+        df.setTimeZone(tz);
+        assertEquals(tz, df.getTimeZone());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.setLenient(boolean)'
+     */
+    public final void testSetLenient() throws Exception {
+        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+        df.parse("2/31/90"); // succeeds, default is lenient
+        df.setLenient(false);
+        try {
+            df.parse("2/31/90");
+            throw new Exception("strict parse should have failed");
+        }
+        catch (ParseException e) {
+            // ok, this is what we expect
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.isLenient()'
+     */
+    public final void testIsLenient() {
+        DateFormat df = DateFormat.getInstance();
+        assertTrue(df.isLenient());
+        df.setLenient(false);
+        assertFalse(df.isLenient());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, Locale)'
+     */
+    public final void testGetDateInstanceCalendarIntLocale() {
+        assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int, ULocale)'
+     */
+    public final void testGetDateInstanceCalendarIntULocale() {
+        assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, Locale)'
+     */
+    public final void testGetTimeInstanceCalendarIntLocale() {
+        assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int, ULocale)'
+     */
+    public final void testGetTimeInstanceCalendarIntULocale() {
+        assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, Locale)'
+     */
+    public final void testGetDateTimeInstanceCalendarIntIntLocale() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int, ULocale)'
+     */
+    public final void testGetDateTimeInstanceCalendarIntIntULocale() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, Locale)'
+     */
+    public final void testGetInstanceCalendarLocale() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, Locale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar, ULocale)'
+     */
+    public final void testGetInstanceCalendarULocale() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal, ULocale.US).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getInstance(Calendar)'
+     */
+    public final void testGetInstanceCalendar() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getInstance(anESTCal).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateInstance(Calendar, int)'
+     */
+    public final void testGetDateInstanceCalendarInt() {
+        assertEquals(aDateString, DateFormat.getDateInstance(aCal, DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getTimeInstance(Calendar, int)'
+     */
+    public final void testGetTimeInstanceCalendarInt() {
+        assertEquals(anESTTimeString, DateFormat.getTimeInstance(anESTCal, DateFormat.MEDIUM).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.getDateTimeInstance(Calendar, int, int)'
+     */
+    public final void testGetDateTimeInstanceCalendarIntInt() {
+        assertEquals(aDefaultESTDateTimeString, DateFormat.getDateTimeInstance(anESTCal, DateFormat.MEDIUM, DateFormat.SHORT).format(aDate));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.toString()'
+     */
+    public final void testToString() {
+        assertNotNull(aDF.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.clone()'
+     */
+    public final void testClone() {
+        // see testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DateFormat.equals(Object)'
+     */
+    public final void testEqualsObject() {
+        // see testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java
new file mode 100644
index 0000000..5e9c87a
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java
@@ -0,0 +1,344 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.ULocale;
+
+public class DecimalFormatSymbolsTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.hashCode()'
+     */
+    public void testHashCode() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+        DecimalFormatSymbols dfs2 = new DecimalFormatSymbols(ULocale.US);
+        DecimalFormatSymbols dfsn = new DecimalFormatSymbols(Locale.FRANCE);
+        testEHCS(dfs, dfs2, dfsn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(DecimalFormatSymbols)'
+     */
+    public void testDecimalFormatSymbolsDecimalFormatSymbols() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols()'
+     */
+    public void testDecimalFormatSymbols() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
+        assertTrue(-1 != dfs.getDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(Locale)'
+     */
+    public void testDecimalFormatSymbolsLocale() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(Locale.US);
+        assertTrue(-1 != dfs.getDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.DecimalFormatSymbols(ULocale)'
+     */
+    public void testDecimalFormatSymbolsULocale() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertTrue(-1 != dfs.getDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getZeroDigit()'
+     */
+    public void testGetZeroDigit() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('0', dfs.getZeroDigit());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setZeroDigit(char)'
+     */
+    public void testSetZeroDigit() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getZeroDigit();
+        char value1 = (char)(value + 1);
+        dfs.setZeroDigit(value1);
+        char result = dfs.getZeroDigit();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getGroupingSeparator()'
+     */
+    public void testGetGroupingSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals(',', dfs.getGroupingSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setGroupingSeparator(char)'
+     */
+    public void testSetGroupingSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getGroupingSeparator();
+        char value1 = (char)(value + 1);
+        dfs.setGroupingSeparator(value1);
+        char result = dfs.getGroupingSeparator();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getDecimalSeparator()'
+     */
+    public void testGetDecimalSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('.', dfs.getDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setDecimalSeparator(char)'
+     */
+    public void testSetDecimalSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getDecimalSeparator();
+        char value1 = (char)(value + 1);
+        dfs.setDecimalSeparator(value1);
+        char result = dfs.getDecimalSeparator();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPerMill()'
+     */
+    public void testGetPerMill() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('\u2030', dfs.getPerMill());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPerMill(char)'
+     */
+    public void testSetPerMill() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getPerMill();
+        char value1 = (char)(value + 1);
+        dfs.setPerMill(value1);
+        char result = dfs.getPerMill();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPercent()'
+     */
+    public void testGetPercent() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('%', dfs.getPercent());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPercent(char)'
+     */
+    public void testSetPercent() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getPercent();
+        char value1 = (char)(value + 1);
+        dfs.setPercent(value1);
+        char result = dfs.getPercent();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getDigit()'
+     */
+    public void testGetDigit() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('#', dfs.getDigit());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setDigit(char)'
+     */
+    public void testSetDigit() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getDigit();
+        char value1 = (char)(value + 1);
+        dfs.setDigit(value1);
+        char result = dfs.getDigit();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getPatternSeparator()'
+     */
+    public void testGetPatternSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals(';', dfs.getPatternSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setPatternSeparator(char)'
+     */
+    public void testSetPatternSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getPatternSeparator();
+        char value1 = (char)(value + 1);
+        dfs.setPatternSeparator(value1);
+        char result = dfs.getPatternSeparator();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getInfinity()'
+     */
+    public void testGetInfinity() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals("\u221e", dfs.getInfinity());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setInfinity(String)'
+     */
+    public void testSetInfinity() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        String value = dfs.getInfinity();
+        String value1 = value + "!";
+        dfs.setInfinity(value1);
+        String result = dfs.getInfinity();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getNaN()'
+     */
+    public void testGetNaN() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertNotNull(dfs.getNaN()); // java returns missing character???
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setNaN(String)'
+     */
+    public void testSetNaN() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        String value = dfs.getNaN();
+        String value1 = value + "!";
+        dfs.setNaN(value1);
+        String result = dfs.getNaN();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getMinusSign()'
+     */
+    public void testGetMinusSign() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('-', dfs.getMinusSign());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setMinusSign(char)'
+     */
+    public void testSetMinusSign() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getMinusSign();
+        char value1 = (char)(value + 1);
+        dfs.setMinusSign(value1);
+        char result = dfs.getMinusSign();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getCurrencySymbol()'
+     */
+    public void testGetCurrencySymbol() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals("$", dfs.getCurrencySymbol());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setCurrencySymbol(String)'
+     */
+    public void testSetCurrencySymbol() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        String value = dfs.getCurrencySymbol();
+        String value1 = value + "!";
+        dfs.setCurrencySymbol(value1);
+        String result = dfs.getCurrencySymbol();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getInternationalCurrencySymbol()'
+     */
+    public void testGetInternationalCurrencySymbol() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals("USD", dfs.getInternationalCurrencySymbol());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setInternationalCurrencySymbol(String)'
+     */
+    public void testSetInternationalCurrencySymbol() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        String value = dfs.getInternationalCurrencySymbol();
+        String value1 = value + "!";
+        dfs.setInternationalCurrencySymbol(value1);
+        String result = dfs.getInternationalCurrencySymbol();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.getMonetaryDecimalSeparator()'
+     */
+    public void testGetMonetaryDecimalSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        assertEquals('.', dfs.getMonetaryDecimalSeparator());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.setMonetaryDecimalSeparator(char)'
+     */
+    public void testSetMonetaryDecimalSeparator() {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(ULocale.US);
+        char value = dfs.getMonetaryDecimalSeparator();
+        char value1 = (char)(value + 1);
+        dfs.setMonetaryDecimalSeparator(value1);
+        char result = dfs.getMonetaryDecimalSeparator();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.clone()'
+     */
+    public void testClone() {
+        // tested in testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormatSymbols.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested in testHashcode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java
new file mode 100644
index 0000000..a1a9f1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java
@@ -0,0 +1,242 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Locale;
+
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+
+public class DecimalFormatTest extends ICUTestCase {
+    private static final long lmax = Long.MAX_VALUE;
+    private static final double dsmall = 23.33;
+        
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.clone()'
+     */
+    public void testClone() {
+        DecimalFormat df = new DecimalFormat("#,#0.00");
+        DecimalFormat df2 = new DecimalFormat("#,#0.00");
+        DecimalFormat dfn = new DecimalFormat("#,#0.00");
+        dfn.setNegativePrefix(dfn.getNegativePrefix() + '!');
+        testEHCS(df, df2, dfn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(DecimalFormat)'
+     */
+    public void testDecimalFormatDecimalFormat() {
+        // tested implicitly
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat()'
+     */
+    public void testDecimalFormat() {
+        DecimalFormat df = new DecimalFormat();
+        assertEquals("9,223,372,036,854,775,807", df.format(lmax));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(String)'
+     */
+    public void testDecimalFormatString() {
+        DecimalFormat df = new DecimalFormat("#,##0.000");
+        assertEquals("23.330", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.DecimalFormat(String, DecimalFormatSymbols)'
+     */
+    public void testDecimalFormatStringDecimalFormatSymbols() {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.FRANCE);
+        DecimalFormat df = new DecimalFormat("#,##0.000", sym);
+        assertEquals("23,330", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getDecimalFormatSymbols()'
+     */
+    public void testGetDecimalFormatSymbols() {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.FRANCE);
+        DecimalFormat df = new DecimalFormat("#,##0.000", sym);
+        assertEquals(sym, df.getDecimalFormatSymbols());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setDecimalFormatSymbols(DecimalFormatSymbols)'
+     */
+    public void testSetDecimalFormatSymbols() {
+        DecimalFormat df = new DecimalFormat();
+        df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.FRANCE));
+        assertEquals("23,33", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getPositivePrefix()'
+     */
+    public void testGetPositivePrefix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        assertEquals("+", df.getPositivePrefix());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setPositivePrefix(String)'
+     */
+    public void testSetPositivePrefix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        df.setPositivePrefix("?");
+        assertEquals("?23.3", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getNegativePrefix()'
+     */
+    public void testGetNegativePrefix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        assertEquals("-", df.getNegativePrefix());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setNegativePrefix(String)'
+     */
+    public void testSetNegativePrefix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        df.setNegativePrefix("~");
+        assertEquals("~23.3", df.format(-dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getPositiveSuffix()'
+     */
+    public void testGetPositiveSuffix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#**;-#,##0.#~~");
+        assertEquals("**", df.getPositiveSuffix());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setPositiveSuffix(String)'
+     */
+    public void testSetPositiveSuffix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        df.setPositiveSuffix("**");
+        assertEquals("+23.3**", df.format(dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getNegativeSuffix()'
+     */
+    public void testGetNegativeSuffix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#**;-#,##0.#~~");
+        assertEquals("~~", df.getNegativeSuffix());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setNegativeSuffix(String)'
+     */
+    public void testSetNegativeSuffix() {
+        DecimalFormat df = new DecimalFormat("+#,##0.#;-#,##0.#");
+        df.setNegativeSuffix("~~");
+        assertEquals("-23.3~~", df.format(-dsmall));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getMultiplier()'
+     */
+    public void testGetMultiplier() {
+        DecimalFormat df = new DecimalFormat("%000");
+        df.setMultiplier(1000);
+        assertEquals(1000, df.getMultiplier());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setMultiplier(int)'
+     */
+    public void testSetMultiplier() {
+        DecimalFormat df = new DecimalFormat("%000");
+        assertEquals("%012", df.format(.123));
+        df.setMultiplier(1000);
+        assertEquals("%123", df.format(.123));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.getGroupingSize()'
+     */
+    public void testGetGroupingSize() {
+        DecimalFormat df = new DecimalFormat("#,#0.#");
+        assertEquals(2, df.getGroupingSize());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setGroupingSize(int)'
+     */
+    public void testSetGroupingSize() {
+        DecimalFormat df = new DecimalFormat("#,##0.##");
+        assertEquals("1,234,567.89", df.format(1234567.89));
+        df.setGroupingSize(2);
+        assertEquals("1,23,45,67.89", df.format(1234567.89));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.isDecimalSeparatorAlwaysShown()'
+     */
+    public void testIsDecimalSeparatorAlwaysShown() {
+        DecimalFormat df = new DecimalFormat("#.#");
+        df.setDecimalSeparatorAlwaysShown(false);
+        assertEquals("1", df.format(1));
+        assertEquals("1.2", df.format(1.2));
+        df.setDecimalSeparatorAlwaysShown(true);
+        assertEquals("1.", df.format(1));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.setDecimalSeparatorAlwaysShown(boolean)'
+     */
+    public void testSetDecimalSeparatorAlwaysShown() {
+        DecimalFormat df = new DecimalFormat("#.#");
+        df.setDecimalSeparatorAlwaysShown(false);
+        assertFalse(df.isDecimalSeparatorAlwaysShown());
+        df.setDecimalSeparatorAlwaysShown(true);
+        assertTrue(df.isDecimalSeparatorAlwaysShown());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.toPattern()'
+     */
+    public void testToPattern() {
+        DecimalFormat df = new DecimalFormat("#,##0.##");
+        assertEquals("#,##0.##", df.toPattern());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.toLocalizedPattern()'
+     */
+    public void testToLocalizedPattern() {
+        DecimalFormat df = new DecimalFormat("#,##0.##", new DecimalFormatSymbols(Locale.FRANCE));
+        assertEquals("#,##0.##", df.toPattern());
+        assertEquals("#\u00a0##0,##", df.toLocalizedPattern());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.applyPattern(String)'
+     */
+    public void testApplyPattern() {
+        DecimalFormat df = new DecimalFormat("#,##0.##");
+        df.applyPattern("#,0.#");
+        assertEquals("1,2,3.4", df.format(123.4));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.DecimalFormat.applyLocalizedPattern(String)'
+     */
+    public void testApplyLocalizedPattern() {
+        DecimalFormat df = new DecimalFormat("#,##0.##", new DecimalFormatSymbols(Locale.FRANCE));
+        df.applyLocalizedPattern("#\u00a00,#");
+        assertEquals("1\u00a02\u00a03,4", df.format(123.4));
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java
new file mode 100644
index 0000000..13f2003
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java
@@ -0,0 +1,286 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Locale;
+
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+import junit.framework.TestCase;
+
+/**
+ * Implement boilerplate tests.
+ * Currently there is only one method, testEHCS, which tests equals, hashCode, 
+ * clone, and serialization.
+ */
+public abstract class ICUTestCase extends TestCase {
+    private static final Object[] EMPTY_ARGS = {};
+    private static final Class[] EMPTY_CLASSES = {};
+        
+    private static final Locale oldLocale = Locale.getDefault();
+    private static final ULocale oldULocale = ULocale.getDefault();
+    private static final java.util.TimeZone oldJTimeZone = java.util.TimeZone.getDefault();
+    private static final TimeZone oldITimeZone = TimeZone.getDefault();
+                
+    // TODO: what's the best way to check this?
+    public static final boolean testingWrapper = true;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        Locale.setDefault(Locale.US);
+        ULocale.setDefault(ULocale.US);
+        java.util.TimeZone.setDefault(java.util.TimeZone.getTimeZone("PST"));
+        TimeZone.setDefault(TimeZone.getTimeZone("PST"));
+    }
+        
+    protected void tearDown() throws Exception {
+        ULocale.setDefault(oldULocale);
+        Locale.setDefault(oldLocale);
+        TimeZone.setDefault(oldITimeZone);
+        java.util.TimeZone.setDefault(oldJTimeZone);
+        super.tearDown();
+    }
+
+    private static final Object test = new Object();
+        
+    /**
+     * Assert that two objects are _not_ equal.  Curiously missing from Assert.
+     * @param lhs an object to test, may be null
+     * @param rhs an object to test, may be null
+     */
+    public static void assertNotEqual(Object lhs, Object rhs) {
+        if (lhs == null) {
+            if (rhs == null) fail("null equals null");
+        } else {
+            if (lhs.equals(rhs)) {
+                fail(lhs.toString() + " equals " + rhs);
+            }
+        }
+    }
+        
+    public static void assertNotEqual(long lhs, long rhs) {
+        if (lhs == rhs) {
+            fail("values are equal: " + lhs);
+        }
+    }
+        
+    /**
+     * Test whether equality, hashCode, clone, and serialization work as expected.  
+     * Equals(Object) is assumed to return false (not throw an exception) if passed 
+     * null or an object of an incompatible class.
+     * Hashcodes must be equal iff the two objects compare equal.  No attempt is made to
+     * evaluate the quality of the hashcode distribution, so (in particular) degenerate 
+     * hashcode implementations will pass this test.
+     * Clone will be tested if the method "clone" is public on the class of obj.  
+     * It is assumed to return an object that compares equal to obj.
+     * Serialization will be tested if object implements Serializable or Externalizable.
+     * It is assumed the serialized/deserialized object compares equal to obj.
+     * @param obj the object to test
+     * @param eq an object that should compare equal to, but is not the same as, obj.  
+     *     it should be assignable to the class of obj.
+     * @param neq a non-null object that should not compare equal to obj.  
+     *     it should be assignable to the class of obj.
+     */
+    public static void testEHCS(Object obj, Object eq, Object neq) {
+        if (obj == null || eq == null || neq == null) {
+            throw new NullPointerException();
+        }
+        Class cls = obj.getClass();
+        if (!(cls.isAssignableFrom(eq.getClass()) && cls.isAssignableFrom(neq.getClass()))) {
+            throw new IllegalArgumentException("unassignable classes");
+        }
+                
+        // reflexive
+        assertEquals(obj, obj);
+                
+        // should return false, not throw exception
+        assertNotEqual(obj, test);
+        assertNotEqual(obj, null);
+                
+        // commutative
+        assertEquals(obj, eq);
+        assertEquals(eq, obj);
+                
+        assertNotEqual(obj, neq);
+        assertNotEqual(neq, obj);
+                
+        // equal objects MUST have equal hashes, unequal objects MAY have equal hashes
+        assertEquals(obj.hashCode(), eq.hashCode());
+                
+        Object clone = null;
+        try {
+            // look for public clone method and call it if available
+            Method method_clone = cls.getMethod("clone", EMPTY_CLASSES);
+            clone = method_clone.invoke(obj, EMPTY_ARGS);
+            assertNotNull(clone);
+        }
+        catch(NoSuchMethodException e) {
+            // ok
+        }
+        catch(InvocationTargetException e) {
+            // ok
+        }
+        catch(IllegalAccessException e) {
+            // ok
+        }
+                
+        if (clone != null) {
+            assertEquals(obj, clone);
+            assertEquals(clone, obj);
+        }
+                
+        if (obj instanceof Serializable || obj instanceof Externalizable) {
+            Object ser = null;
+            try {
+                ByteArrayOutputStream bos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(bos);
+                oos.writeObject(clone);
+                oos.close();
+                                
+                ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+                ObjectInputStream ois = new ObjectInputStream(bis);
+                ser = ois.readObject();
+                ois.close();
+            }
+            catch(IOException e) {
+                System.err.println(e.getMessage());
+                throw new RuntimeException(e);
+            }
+            catch(ClassNotFoundException e) {
+                System.err.println(e.getMessage());
+                throw new RuntimeException(e);
+            }
+                        
+            if (ser != null) {
+                assertEquals(obj, ser);
+                assertEquals(ser, obj);
+                assertEquals(obj.hashCode(), ser.hashCode());
+            }
+        }
+    }
+
+    /**
+     * Fail if the arrays are not equal.  To be equal, the arrays must
+     * be the same length, and each element in the left array must compare
+     * equal to the corresponding element of the right array.
+     * Also fails if one of the objects is not an array.
+     * @param lhs the left array
+     * @param rhs the right array
+     */
+    public static void assertArraysEqual(Object lhs, Object rhs) {
+        Class lcls = lhs.getClass();
+        Class rcls = rhs.getClass();
+        if (!(lcls.isArray() && rcls.isArray())) {
+            fail("objects are not arrays");
+        }
+        String result = arraysAreEqual(lhs, rhs);
+        if (result != null) {
+            fail(result);
+        }
+    }
+
+    /**
+     * Fail if the arrays are equal.  Also fails if one or the other 
+     * argument is not an array.
+     * @param lhs the left array
+     * @param rhs the right array
+     */
+    public static void assertArraysNotEqual(Object lhs, Object rhs) {
+        Class lcls = lhs.getClass();
+        Class rcls = rhs.getClass();
+        if (!(lcls.isArray() && rcls.isArray())) {
+            fail("objects are not arrays");
+        }
+        String result = arraysAreEqual(lhs, rhs);
+        if (result == null) {
+            fail("arrays are equal");
+        }
+    }
+        
+    // slow but general
+    private static String arraysAreEqual(Object lhsa, Object rhsa) {
+        int lhsl = Array.getLength(lhsa);
+        int rhsl = Array.getLength(rhsa);
+        if (lhsl != rhsl) {
+            return "length " + lhsl + " != " + rhsl;
+        }
+        boolean lhsaA = lhsa.getClass().getComponentType().isArray();
+        boolean rhsaA = rhsa.getClass().getComponentType().isArray();
+        if (lhsaA != rhsaA) {
+            return (lhsaA ? "" : "non-") + "array != " + (rhsaA ? "" : "non-") + "array";
+        }
+        for (int i = 0; i < lhsl; ++i) {
+            Object lhse = Array.get(lhsa, i);
+            Object rhse = Array.get(rhsa, i);
+            if (lhse == null) {
+                if (rhse != null) {
+                    return "null != " + rhse;
+                }
+            } else {
+                if (lhsaA) {
+                    String result = arraysAreEqual(lhse, rhse);
+                    if (result != null) {
+                        if (result.charAt(0) != '[') {
+                            result = " " + result;
+                        }
+                        return "[" + i + "]" + result;
+                    }
+                } else {
+                    if (!lhse.equals(rhse)) {
+                        return lhse.toString() + " != " + rhse;
+                    }
+                }
+            }
+        }
+        return null;
+    }
+        
+    // much more painful and slow than it should be... partly because of the
+    // oddness of clone, partly because arrays don't provide a Method for 
+    // 'clone' despite the fact that they implement it and make it public.
+    public static Object cloneComplex(Object obj) {
+        Object result = null;
+        if (obj != null) {
+            Class cls = obj.getClass();
+            if (cls.isArray()) {
+                int len = Array.getLength(obj);
+                Class typ = cls.getComponentType();
+                result = Array.newInstance(typ, len);
+                boolean prim = typ.isPrimitive();
+                for (int i = 0; i < len; ++i) {
+                    Object elem = Array.get(obj, i);
+                    Array.set(result, i, prim ? elem : cloneComplex(elem));
+                }
+            } else {
+                result = obj; // default
+                try {
+                    Method cloneM = cls.getMethod("clone", null);
+                    result = cloneM.invoke(obj, null);
+                }
+                catch (NoSuchMethodException e) {
+                }
+                catch (IllegalAccessException e) {
+                }
+                catch (InvocationTargetException e) {
+                }
+            }
+        }
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java
new file mode 100644
index 0000000..c839050
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java
@@ -0,0 +1,307 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.tests;
+
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.ULocale;
+
+public class MessageFormatTest extends ICUTestCase {
+    private final String pattern = "Deleted {0,number} files at {1,time,short} on {1,date}.";
+    private final String altPattern = "Deleted {0,  number } files at {1, time, short} on {1, date}.";
+    private final Date date = new Date(716698890835L);
+    private final Number num = new Long(3456);
+    private final Object[] args = { num, date };
+    private final Date dateOnly = new Date(716626800000L);
+    private final String englishTarget = "Deleted 3,456 files at 8:01 PM on Sep 16, 1992.";
+    private final String germanTarget = "Deleted 3.456 files at 20:01 on 16.09.1992.";
+    private final String modifiedTarget = "Deleted 3,456 files at 8:01:30 PM PDT on Sep 16, 1992.";
+    
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.hashCode()'
+     */
+    public void testHashCode() {
+        MessageFormat mf = new MessageFormat(pattern);
+        MessageFormat eq = new MessageFormat(altPattern);
+        MessageFormat ne = new MessageFormat("Deleted (0, number, currency} files at {1, time} on {1, date}.");
+        testEHCS(mf, eq, ne);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(MessageFormat)'
+     */
+    public void testMessageFormatMessageFormat() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String)'
+     */
+    public void testMessageFormatString() {
+        MessageFormat mf = new MessageFormat(pattern);
+        assertEquals(englishTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String, Locale)'
+     */
+    public void testMessageFormatStringLocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        assertEquals(englishTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.MessageFormat(String, ULocale)'
+     */
+    public void testMessageFormatStringULocale() {
+        MessageFormat mf = new MessageFormat(pattern, ULocale.US);
+        assertEquals(englishTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setLocale(Locale)'
+     */
+    public void testSetLocaleLocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setLocale(Locale.GERMANY);
+        mf.applyPattern(pattern);
+        assertEquals(germanTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setLocale(ULocale)'
+     */
+    public void testSetLocaleULocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setLocale(ULocale.GERMANY);
+        mf.applyPattern(pattern);
+        assertEquals(germanTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.getLocale()'
+     */
+    public void testGetLocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setLocale(Locale.GERMANY);
+        assertEquals(Locale.GERMANY, mf.getLocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.getULocale()'
+     */
+    public void testGetULocale() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setLocale(ULocale.GERMANY);
+        assertEquals(ULocale.GERMANY, mf.getULocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.applyPattern(String)'
+     */
+    public void testApplyPattern() {
+        MessageFormat mf = new MessageFormat("foo");
+        mf.applyPattern(pattern);
+        assertEquals(englishTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.toPattern()'
+     */
+    public void testToPattern() {
+        MessageFormat mf = new MessageFormat(altPattern);
+        assertEquals(pattern, mf.toPattern());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setFormatsByArgumentIndex(Format[])'
+    public void testSetFormatsByArgumentIndex() {
+        // this api is broken.  if the same argument is used twice with two different
+        // formats, this can't be used, since it sets only one format per argument.
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        Format[] formats = {
+            NumberFormat.getIntegerInstance(),
+            DateFormat.getTimeInstance(DateFormat.SHORT),
+            DateFormat.getDateInstance(),
+        };
+        mf.setFormatsByArgumentIndex(formats);
+        assertEquals(brokenButConformantTarget, mf.format(args));
+    }
+     */
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setFormats(Format[])'
+     */
+    public void testSetFormats() {
+        // this api, while it has the problem that the order of formats depends
+        // on the order in the string, at least lets you set all the formats.
+        
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        Format[] formats = {
+            NumberFormat.getIntegerInstance(),
+            DateFormat.getTimeInstance(DateFormat.SHORT),
+            DateFormat.getDateInstance(),
+        };
+        mf.setFormats(formats);
+        assertEquals(englishTarget, mf.format(args));
+   }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setFormatByArgumentIndex(int, Format)'
+     public void testSetFormatByArgumentIndex() {
+        // same problem, once you set a format for an argument, you've set all of them
+        
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setFormatByArgumentIndex(1, DateFormat.getTimeInstance(DateFormat.SHORT));
+        assertEquals(brokenButConformantTarget, mf.format(args));
+
+    }
+    */
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.setFormat(int, Format)'
+     */
+    public void testSetFormat() {
+        // and ok again        
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        mf.setFormat(1, DateFormat.getTimeInstance(DateFormat.LONG));
+        assertEquals(modifiedTarget, mf.format(args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.getFormatsByArgumentIndex()'
+    public void testGetFormatsByArgumentIndex() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        Format[] formats = mf.getFormatsByArgumentIndex();
+        NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
+        assertEquals(formats[0], nf);
+        DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.US);
+        assertEquals(formats[1], df);
+    }
+     */
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.getFormats()'
+     */
+    public void testGetFormats() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        Format[] formats = mf.getFormats();
+        NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
+        assertEquals(formats[0], nf);
+        DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US);
+        assertEquals(formats[1], tf);
+        DateFormat df = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.US);
+        assertEquals(formats[2], df);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.format(Object[], StringBuffer, FieldPosition)'
+     */
+    public void testFormatObjectArrayStringBufferFieldPosition() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        mf.format(args, buf, fp);
+        assertEquals(englishTarget, buf.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.format(String, Object[])'
+     */
+    public void testFormatStringObjectArray() {
+        assertEquals(englishTarget, MessageFormat.format(pattern, args));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.format(Object, StringBuffer, FieldPosition)'
+     */
+    public void testFormatObjectStringBufferFieldPosition() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        mf.format((Object)args, buf, fp);
+        assertEquals(englishTarget, buf.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.parse(String, ParsePosition)'
+     */
+    public void testParseStringParsePosition() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        ParsePosition pp = new ParsePosition(1);
+        Object[] result = mf.parse("!" + englishTarget, pp);
+        assertEquals(num, result[0]);
+        assertEquals(dateOnly, result[1]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.parse(String)'
+     */
+    public void testParseString() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        try {
+            Object[] result = mf.parse(englishTarget);
+            assertEquals(num, result[0]);
+            assertEquals(dateOnly, result[1]);
+        }
+        catch (ParseException e) {
+            fail(e.getMessage());
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.parseObject(String, ParsePosition)'
+     */
+    public void testParseObjectStringParsePosition() {
+        MessageFormat mf = new MessageFormat(pattern, Locale.US);
+        ParsePosition pp = new ParsePosition(0);
+        Object result = mf.parseObject(englishTarget, pp);
+        assertEquals(num, ((Object[])result)[0]);
+        assertEquals(dateOnly, ((Object[])result)[1]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.autoQuoteApostrophe(String)'
+     */
+    public void testAutoQuoteApostrophe() {
+        String str = "Let's meet at {1,time,h 'o'' clock'} at l'Orange Bleue";
+        String pat = MessageFormat.autoQuoteApostrophe(str);
+        MessageFormat mf = new MessageFormat(pat, Locale.US);
+        String result = mf.format(args);
+        assertEquals("Let's meet at 8 o' clock at l'Orange Bleue", result);
+        assertEquals("Let''s meet at {1,time,h 'o'' clock'} at l''Orange Bleue", pat);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.clone()'
+     */
+    public void testClone() {
+        // tested already in testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested already in testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.MessageFormat.toString()'
+     */
+    public void testToString() {
+        // no need to test
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java
new file mode 100644
index 0000000..100b52c
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java
@@ -0,0 +1,441 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.ULocale;
+
+public class NumberFormatTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.NumberFormat(NumberFormat)'
+     */
+    public void testNumberFormat() {
+        NumberFormat nf = new NumberFormat(java.text.NumberFormat.getInstance());
+        assertEquals(nf, NumberFormat.getInstance());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(Object, StringBuffer, FieldPosition)'
+     */
+    public void testFormatObjectStringBufferFieldPosition() {
+        Number num = new Long(1234L);
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        NumberFormat.getInstance().format(num, buf, fp);
+        assertEquals("1,234", buf.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.parseObject(String, ParsePosition)'
+     */
+    public void testParseObjectStringParsePosition() {
+        ParsePosition pp = new ParsePosition(0);
+        Object result = NumberFormat.getInstance().parse("1,234", pp);
+        assertEquals(result, new Long(1234));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double)'
+     */
+    public void testFormatDouble() {
+        assertEquals("1,234.567", NumberFormat.getInstance().format(1234.567));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long)'
+     */
+    public void testFormatLong() {
+        assertEquals("1,234", NumberFormat.getInstance().format(1234L));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger)'
+     */
+    public void testFormatBigInteger() {
+        // note, java doesn't handle biginteger with full precision.
+        BigInteger bi = new BigInteger("123456");
+        assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(double, StringBuffer, FieldPosition)'
+     */
+    public void testFormatDoubleStringBufferFieldPosition() {
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        assertEquals("123,456.789", NumberFormat.getInstance().format(123456.789, buf, fp).toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(long, StringBuffer, FieldPosition)'
+     */
+    public void testFormatLongStringBufferFieldPosition() {
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        assertEquals("123,456", NumberFormat.getInstance().format(123456L, buf, fp).toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.format(BigInteger, StringBuffer, FieldPosition)'
+     */
+    public void testFormatBigIntegerStringBufferFieldPosition() {
+        // note, java doesn't handle biginteger with full precision.
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        BigInteger bi = new BigInteger("123456");
+        assertEquals("123,456", java.text.NumberFormat.getInstance().format(bi, buf, fp).toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String, ParsePosition)'
+     */
+    public void testParseStringParsePosition() {
+        ParsePosition pp = new ParsePosition(3);
+        assertEquals(new Long(123456), NumberFormat.getInstance().parse("xxx123,456yyy", pp));
+        assertEquals(10, pp.getIndex());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.parse(String)'
+     */
+    public void testParseString() throws ParseException {
+        Number result = NumberFormat.getInstance().parse("123,456,yyy");
+        assertEquals(new Long(123456), result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.isParseIntegerOnly()'
+     */
+    public void testIsParseIntegerOnly() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setParseIntegerOnly(true);
+        assertTrue(nf.isParseIntegerOnly());
+        nf.setParseIntegerOnly(false);
+        assertFalse(nf.isParseIntegerOnly());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setParseIntegerOnly(boolean)'
+     */
+    public void testSetParseIntegerOnly() throws ParseException {
+        String str = "123.456,yyy";
+        NumberFormat nf = NumberFormat.getInstance();
+        assertEquals(new Double(123.456), nf.parse(str));
+        nf.setParseIntegerOnly(true);
+        assertEquals(new Long(123), nf.parse(str));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance()'
+     */
+    public void testGetInstance() {
+        // used everywhere, no need to test
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(Locale)'
+     */
+    public void testGetInstanceLocale() {
+        NumberFormat nf = NumberFormat.getInstance(Locale.GERMANY);
+        assertEquals("123,456", nf.format(123.456));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getInstance(ULocale)'
+     */
+    public void testGetInstanceULocale() {
+        NumberFormat nf = NumberFormat.getInstance(ULocale.GERMANY);
+        assertEquals("123,456", nf.format(123.456));            
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance()'
+     */
+    public void testGetNumberInstance() {
+        NumberFormat nf = NumberFormat.getNumberInstance();
+        assertEquals("123,456.789", nf.format(123456.789));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(Locale)'
+     */
+    public void testGetNumberInstanceLocale() {
+        NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMANY);
+        assertEquals("123.456,789", nf.format(123456.789));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getNumberInstance(ULocale)'
+     */
+    public void testGetNumberInstanceULocale() {
+        NumberFormat nf = NumberFormat.getNumberInstance(ULocale.GERMANY);
+        assertEquals("123.456,789", nf.format(123456.789));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance()'
+     */
+    public void testGetIntegerInstance() {
+        NumberFormat nf = NumberFormat.getIntegerInstance();
+        assertEquals("123,457", nf.format(123456.789)); // rounds
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(Locale)'
+     */
+    public void testGetIntegerInstanceLocale() {
+        NumberFormat nf = NumberFormat.getIntegerInstance(Locale.GERMANY);
+        assertEquals("123.457", nf.format(123456.789)); // rounds
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getIntegerInstance(ULocale)'
+     */
+    public void testGetIntegerInstanceULocale() {
+        NumberFormat nf = NumberFormat.getIntegerInstance(ULocale.GERMANY);
+        assertEquals("123.457", nf.format(123456.789)); // rounds
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance()'
+     */
+    public void testGetCurrencyInstance() {
+        NumberFormat nf = NumberFormat.getCurrencyInstance();
+        assertEquals("$123,456.99", nf.format(123456.99));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(Locale)'
+     */
+    public void testGetCurrencyInstanceLocale() {
+        NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.GERMANY);
+        assertEquals("123.456,99 \u20AC", nf.format(123456.99));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getCurrencyInstance(ULocale)'
+     */
+    public void testGetCurrencyInstanceULocale() {
+        NumberFormat nf = NumberFormat.getCurrencyInstance(ULocale.GERMANY);
+        assertEquals("123.456,99 \u20AC", nf.format(123456.99));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance()'
+     */
+    public void testGetPercentInstance() {
+        NumberFormat nf = NumberFormat.getPercentInstance();
+        assertEquals("123,456%", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(Locale)'
+     */
+    public void testGetPercentInstanceLocale() {
+        NumberFormat nf = NumberFormat.getPercentInstance(Locale.GERMANY);
+        assertEquals("123.456%", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getPercentInstance(ULocale)'
+     */
+    public void testGetPercentInstanceULocale() {
+        NumberFormat nf = NumberFormat.getPercentInstance(ULocale.GERMANY);
+        assertEquals("123.456%", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance()'
+     */
+    public void testGetScientificInstance() {
+        NumberFormat nf = NumberFormat.getScientificInstance();
+        assertEquals(".123456E4", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(Locale)'
+     */
+    public void testGetScientificInstanceLocale() {
+        NumberFormat nf = NumberFormat.getScientificInstance(Locale.GERMANY);
+        assertEquals(",123456E4", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getScientificInstance(ULocale)'
+     */
+    public void testGetScientificInstanceULocale() {
+        NumberFormat nf = NumberFormat.getScientificInstance(ULocale.GERMANY);
+        assertEquals(",123456E4", nf.format(1234.56));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        Locale[] ilocales = NumberFormat.getAvailableLocales();
+        if (ICUTestCase.testingWrapper) {
+            Locale[] jlocales = java.text.NumberFormat.getAvailableLocales();
+            for (int i = 0; i < ilocales.length; ++i) {
+                assertEquals(jlocales[i], ilocales[i]);
+            }
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getAvailableULocales()'
+     */
+    public void testGetAvailableULocales() {
+        ULocale[] ulocales = NumberFormat.getAvailableULocales();
+        if (ICUTestCase.testingWrapper) {
+            Locale[] jlocales = java.text.NumberFormat.getAvailableLocales();
+            for (int i = 0; i < ulocales.length; ++i) {
+                assertEquals(jlocales[i], ulocales[i].toLocale());
+            }
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.isGroupingUsed()'
+     */
+    public void testIsGroupingUsed() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setGroupingUsed(true);
+        assertTrue(nf.isGroupingUsed());
+        nf.setGroupingUsed(false);
+        assertFalse(nf.isGroupingUsed());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setGroupingUsed(boolean)'
+     */
+    public void testSetGroupingUsed() {
+        NumberFormat nf = NumberFormat.getInstance();
+        assertEquals("123,456,789", nf.format(123456789));
+        nf.setGroupingUsed(false);
+        assertEquals("123456789", nf.format(123456789));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumIntegerDigits()'
+     */
+    public void testGetMaximumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumIntegerDigits(4);
+        assertEquals(4, nf.getMaximumIntegerDigits());
+        nf.setMaximumIntegerDigits(6);
+        assertEquals(6, nf.getMaximumIntegerDigits());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumIntegerDigits(int)'
+     */
+    public void testSetMaximumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumIntegerDigits(4);
+        assertEquals("3,456", nf.format(123456)); // high digits truncated
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumIntegerDigits()'
+     */
+    public void testGetMinimumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMinimumIntegerDigits(4);
+        assertEquals(4, nf.getMinimumIntegerDigits());
+        nf.setMinimumIntegerDigits(6);
+        assertEquals(6, nf.getMinimumIntegerDigits());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumIntegerDigits(int)'
+     */
+    public void testSetMinimumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMinimumIntegerDigits(4);
+        assertEquals("0,012", nf.format(12)); // pad out with zero, grouping still used
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getMaximumFractionDigits()'
+     */
+    public void testGetMaximumFractionDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(4);
+        assertEquals(4, nf.getMaximumFractionDigits());
+        nf.setMaximumFractionDigits(6);
+        assertEquals(6, nf.getMaximumFractionDigits());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setMaximumFractionDigits(int)'
+     */
+    public void testSetMaximumFractionDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(4);
+        assertEquals("1.2346", nf.format(1.2345678)); // low digits rounded
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.getMinimumFractionDigits()'
+     */
+    public void testGetMinimumFractionDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMinimumFractionDigits(4);
+        assertEquals(4, nf.getMinimumFractionDigits());
+        nf.setMinimumFractionDigits(6);
+        assertEquals(6, nf.getMinimumFractionDigits());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.setMinimumFractionDigits(int)'
+     */
+    public void testSetMinimumFractionDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMinimumFractionDigits(4);
+        assertEquals("1.2000", nf.format(1.2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.toString()'
+     */
+    public void testToString() {
+        assertNotNull(NumberFormat.getInstance().toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.hashCode()'
+     */
+    public void testHashCode() {
+        NumberFormat nf = NumberFormat.getInstance();
+        NumberFormat eq = NumberFormat.getInstance(Locale.US);
+        NumberFormat neq = NumberFormat.getInstance(Locale.GERMANY);
+                
+        ICUTestCase.testEHCS(nf, eq, neq);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.clone()'
+     */
+    public void testClone() {
+        // see testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.text.NumberFormat.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // see testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java
new file mode 100644
index 0000000..6e09027
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java
@@ -0,0 +1,202 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class SimpleDateFormatTest extends ICUTestCase {
+    private static final String mdy = "MMM dd yyyy";
+    private static final String md2 = "MMM dd yy";
+    private static final String hmz = "'The time is' HH:mm:ss zzz";
+    private static final String hmzmdy = hmz + " 'on' " + mdy;
+    private static final String hmzmdyStr = "The time is 15:05:20 CST on Jan 10 2006";
+        
+    private static final TimeZone tzc = TimeZone.getTimeZone("CST");
+    private static final TimeZone tzp = TimeZone.getTimeZone("PST");
+    private static final Calendar cal = Calendar.getInstance(tzc);
+    private static final Date date;
+    static {
+        cal.clear();
+        cal.set(2006, 0, 10, 15, 5, 20); // arrgh, doesn't clear millis
+        date = cal.getTime();
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.format(Calendar, StringBuffer, FieldPosition)'
+     */
+    public void testFormatCalendarStringBufferFieldPosition() {
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fp = new FieldPosition(0);
+        SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
+        sdf.format(cal, buf, fp);
+        assertEquals(hmzmdyStr, buf.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.parse(String, Calendar, ParsePosition)'
+     */
+    public void testParseStringCalendarParsePosition() {
+        Calendar cal = Calendar.getInstance(tzp);
+        cal.clear();
+        ParsePosition pp = new ParsePosition(0);
+        SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
+        sdf.parse(hmzmdyStr, cal, pp);
+        assertEquals(date, cal.getTime());
+        // note: java doesn't return the parsed time zone
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.clone()'
+     */
+    public void testClone() {
+
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat()'
+     */
+    public void testSimpleDateFormat() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat();
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String)'
+     */
+    public void testSimpleDateFormatString() {
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy);
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy);
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, Locale)'
+     */
+    public void testSimpleDateFormatStringLocale() {
+        Locale l = Locale.JAPAN;
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy, l);
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l);
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, ULocale)'
+     */
+    public void testSimpleDateFormatStringULocale() {
+        ULocale l = ULocale.JAPAN;
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy, l);
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, l.toLocale());
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.SimpleDateFormat(String, DateFormatSymbols)'
+     */
+    public void testSimpleDateFormatStringDateFormatSymbols() {
+        Locale l = Locale.US;
+        DateFormatSymbols dfs = new DateFormatSymbols(l);
+        java.text.DateFormatSymbols jdfs = new java.text.DateFormatSymbols(l);
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs);
+        java.text.SimpleDateFormat jsdf = new java.text.SimpleDateFormat(mdy, jdfs);
+        assertEquals(jsdf.format(date), sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.set2DigitYearStart(Date)'
+     */
+    public void testSet2DigitYearStart() {
+        SimpleDateFormat sdf = new SimpleDateFormat(md2);
+        sdf.set2DigitYearStart(date);
+        try {
+            Date d = sdf.parse("Jan 15 04");
+            assertNotEqual(-1, d.toString().indexOf("2104"));
+        }
+        catch (ParseException pe) {
+            fail(pe.getMessage());
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.get2DigitYearStart()'
+     */
+    public void testGet2DigitYearStart() {
+        SimpleDateFormat sdf = new SimpleDateFormat(md2);
+        sdf.set2DigitYearStart(date);
+        assertEquals(date, sdf.get2DigitYearStart());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.toPattern()'
+     */
+    public void testToPattern() {
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy);
+        assertEquals(mdy, sdf.toPattern());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.toLocalizedPattern()'
+     */
+    public void testToLocalizedPattern() {
+        Locale l = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy);
+        assertEquals(mdy, sdf.toLocalizedPattern());
+        Locale.setDefault(l);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyPattern(String)'
+     */
+    public void testApplyPattern() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        sdf.setTimeZone(tzc);
+        sdf.applyPattern(hmzmdy);
+        assertEquals(hmzmdyStr, sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.applyLocalizedPattern(String)'
+     */
+    public void testApplyLocalizedPattern() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        sdf.setTimeZone(tzc);
+        sdf.applyLocalizedPattern(hmzmdy);
+        assertEquals(hmzmdyStr, sdf.format(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.getDateFormatSymbols()'
+     */
+    public void testGetDateFormatSymbols() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
+        SimpleDateFormat sdf = new SimpleDateFormat(mdy, dfs);
+        assertEquals(dfs, sdf.getDateFormatSymbols());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.text.SimpleDateFormat.setDateFormatSymbols(DateFormatSymbols)'
+     */
+    public void testSetDateFormatSymbols() {
+        DateFormatSymbols dfs = new DateFormatSymbols(Locale.JAPAN);
+        SimpleDateFormat sdf = new SimpleDateFormat(hmzmdy);
+        sdf.setDateFormatSymbols(dfs);
+        // assumes Japanese symbols do not have gregorian month names
+        assertEquals(-1, sdf.format(date).indexOf("Jan"));
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java
new file mode 100644
index 0000000..547a208
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java
@@ -0,0 +1,235 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class TimeZoneTest extends ICUTestCase {
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.hashCode()'
+     */
+    public void testHashCode() {
+        TimeZone tz1 = TimeZone.getTimeZone("PST");
+        TimeZone tz2 = TimeZone.getTimeZone("PST");
+        TimeZone tzn = TimeZone.getTimeZone("CST");
+        testEHCS(tz1, tz2, tzn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.TimeZone(TimeZone)'
+     */
+    public void testTimeZone() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getOffset(int, int, int, int, int, int)'
+     */
+    public void testGetOffset() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        int offset = tz.getOffset(1, 2004, 0, 01, 1, 0);
+        assertEquals(-28800000, offset);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.setRawOffset(int)'
+     */
+    public void testSetRawOffset() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        int value = tz.getRawOffset();
+        int value1 = value + 100000;
+        tz.setRawOffset(value1);
+        int result = tz.getRawOffset();
+        assertNotEqual(value, result);
+        assertEquals(value1, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getRawOffset()'
+     */
+    public void testGetRawOffset() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        int offset = tz.getRawOffset();
+        assertEquals(-28800000, offset);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getID()'
+     */
+    public void testGetID() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("PST", tz.getID());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.setID(String)'
+     */
+    public void testSetID() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        String value1 = tz.getID();
+        String value2 = value1 + "!";
+        tz.setID(value2);
+        String result = tz.getID();
+        assertNotEqual(value1, result);
+        assertEquals(value2, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName()'
+     */
+    public void testGetDisplayName() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("Pacific Standard Time", tz.getDisplayName());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(Locale)'
+     */
+    public void testGetDisplayNameLocale() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("Pacific Standard Time", tz.getDisplayName(Locale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(ULocale)'
+     */
+    public void testGetDisplayNameULocale() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("Pacific Standard Time", tz.getDisplayName(ULocale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int)'
+     */
+    public void testGetDisplayNameBooleanInt() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT));
+        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int, Locale)'
+     */
+    public void testGetDisplayNameBooleanIntLocale() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT, Locale.US));
+        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG, Locale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDisplayName(boolean, int, ULocale)'
+     */
+    public void testGetDisplayNameBooleanIntULocale() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals("PDT", tz.getDisplayName(true, TimeZone.SHORT, ULocale.US));
+        assertEquals("Pacific Daylight Time", tz.getDisplayName(true, TimeZone.LONG, ULocale.US));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDSTSavings()'
+     */
+    public void testGetDSTSavings() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertEquals(3600000, tz.getDSTSavings());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.useDaylightTime()'
+     */
+    public void testUseDaylightTime() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        assertTrue(tz.useDaylightTime());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.inDaylightTime(Date)'
+     */
+    public void testInDaylightTime() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        Calendar cal = Calendar.getInstance();
+        cal.set(2005, 0, 17);
+        Date date = cal.getTime();
+        assertFalse(tz.inDaylightTime(date));
+        cal.set(2005, 6, 17);
+        date = cal.getTime();
+        assertTrue(tz.inDaylightTime(date));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getTimeZone(String)'
+     */
+    public void testGetTimeZone() {
+        // implicitly tested everywhere
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getAvailableIDs(int)'
+     */
+    public void testGetAvailableIDsInt() {
+        String[] ids = TimeZone.getAvailableIDs(-28800000);
+        assertNotNull(ids);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getAvailableIDs()'
+     */
+    public void testGetAvailableIDs() {
+        String[] ids = TimeZone.getAvailableIDs();
+        assertNotNull(ids);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.getDefault()'
+     */
+    public void testGetDefault() {
+        TimeZone tz = TimeZone.getDefault();
+        assertNotNull(tz);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.setDefault(TimeZone)'
+     */
+    public void testSetDefault() {
+        TimeZone tz1 = TimeZone.getDefault();
+        String newCode = "PDT".equals(tz1.getID()) ? "CST" : "PDT";
+        TimeZone tz2 = TimeZone.getTimeZone(newCode);
+        TimeZone.setDefault(tz2);
+        TimeZone result = TimeZone.getDefault();
+        assertNotEqual(tz1, result);
+        assertEquals(tz2, result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.hasSameRules(TimeZone)'
+     */
+    public void testHasSameRules() {
+        TimeZone tz1 = TimeZone.getTimeZone("PST");
+        TimeZone tz2 = TimeZone.getTimeZone("America/Los_Angeles");
+        assertTrue(tz1.hasSameRules(tz2));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.clone()'
+     */
+    public void testClone() {
+        // tested by testHashCode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.util.TimeZone.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // tested by testHashCode
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java
new file mode 100644
index 0000000..8730d66
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java
@@ -0,0 +1,748 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.tests;
+
+import java.util.Iterator;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+public class ULocaleTest extends ICUTestCase {
+    private String sampleName;
+    private String longULocaleName;
+    private String longULocaleBasename;
+    private String nonNormalizedName;
+    private ULocale longULocale;
+    private Locale sampleLocale;
+        
+    /**
+     * @Override
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+                
+        sampleName = "ll_CC_VVVV";
+        longULocaleName = "ll_Ssss_CC_VVVV@collation=phonebook;key=value";
+        longULocaleBasename = longULocaleName.substring(0, longULocaleName.indexOf('@'));
+        nonNormalizedName = "LL_ssss_cc_VVVV@ Key = value ; Collation = phonebook ; ";
+        longULocale = new ULocale(longULocaleName);
+        sampleLocale = new ULocale(sampleName).toLocale();
+    }
+        
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.hashCode()'
+     */
+    public void testHashCode() {
+        ULocale obj = ULocale.GERMANY;
+        ULocale eq = new ULocale("de_DE");
+        ULocale neq = new ULocale("de_DE_FRENCH");
+                
+        ICUTestCase.testEHCS(obj, eq, neq);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.forLocale(Locale)'
+     */
+    public void testForLocale() {
+        assertEquals(ULocale.GERMANY, ULocale.forLocale(Locale.GERMANY));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String)'
+     */
+    public void testULocaleString() {
+        assertEquals(ULocale.GERMAN, new ULocale("de"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String, String)'
+     */
+    public void testULocaleStringString() {
+        assertEquals(ULocale.GERMANY, new ULocale("de", "DE"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.ULocale(String, String, String)'
+     */
+    public void testULocaleStringStringString() {
+        assertEquals(sampleLocale, new ULocale("ll", "cc", "VVVV").toLocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.createCanonical(String)'
+     */
+    public void testCreateCanonical() {
+        ULocale result = ULocale.createCanonical("de__PHONEBOOK");
+        assertEquals(new ULocale("de@collation=phonebook"), result);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.toLocale()'
+     */
+    public void testToLocale() {
+        assertEquals(sampleLocale, new ULocale("ll", "cc", "VVVV").toLocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDefault()'
+     */
+    public void testGetDefault() {
+        assertEquals(Locale.getDefault(), ULocale.getDefault().toLocale());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.setDefault(ULocale)'
+     */
+    public void testSetDefault() {
+        Locale oldLocale = Locale.getDefault();
+        ULocale oldULocale = ULocale.getDefault();
+        try {
+            ULocale.setDefault(longULocale);
+            ICUTestCase.assertNotEqual(Locale.getDefault(), oldLocale);
+            ICUTestCase.assertNotEqual(ULocale.getDefault(), oldULocale);
+            assertEquals(longULocale, ULocale.getDefault());
+            assertEquals(sampleLocale, Locale.getDefault());
+        }
+        finally {
+            ULocale.setDefault(oldULocale);
+            Locale.setDefault(oldLocale); // in case of some error
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.clone()'
+     */
+    public void testClone() {
+        // see testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.equals(Object)'
+     */
+    public void testEqualsObject() {
+        // see testHashcode
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getAvailableLocales()'
+     */
+    public void testGetAvailableLocales() {
+        ULocale[] ulocales = ULocale.getAvailableLocales();
+        if (ICUTestCase.testingWrapper) {
+            Locale[] locales = Locale.getAvailableLocales();
+            for (int i = 0; i < ulocales.length; ++i) {
+                assertEquals(ulocales[i].toLocale(), locales[i]);
+            }
+        }
+        // else nothing to test except that the function returned.
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISOCountries()'
+     */
+    public void testGetISOCountries() {
+        String[] ucountries = ULocale.getISOCountries();
+        assertNotNull(ucountries);
+        if (ICUTestCase.testingWrapper) {
+            // keep our own data for now
+            // our data doesn't match java's so this test would fail
+            // TODO: enable if we decide to use java's data
+            // String[] countries = Locale.getISOCountries();
+            // TestBoilerplate.assertArraysEqual(ucountries, countries);
+        }
+        // else nothing to test except that the function returned.
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISOLanguages()'
+     */
+    public void testGetISOLanguages() {
+        String[] ulanguages = ULocale.getISOLanguages();
+        assertNotNull(ulanguages);
+        if (ICUTestCase.testingWrapper) {
+            // keep our own data for now
+            // our data doesn't match java's so this test would fail
+            // TODO: enable if we decide to use java's data
+            // String[] languages = Locale.getISOLanguages();
+            // TestBoilerplate.assertArraysEqual(ulanguages, languages);
+        }
+        // else nothing to test except that the function returned.
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getLanguage()'
+     */
+    public void testGetLanguage() {
+        assertEquals("ll", longULocale.getLanguage());
+        assertEquals("ll", longULocale.toLocale().getLanguage());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getLanguage(String)'
+     */
+    public void testGetLanguageString() {
+        assertEquals("ll", ULocale.getLanguage(longULocale.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getScript()'
+     */
+    public void testGetScript() {
+        assertEquals("Ssss", longULocale.getScript());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getScript(String)'
+     */
+    public void testGetScriptString() {
+        assertEquals("Ssss", ULocale.getScript(longULocale.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getCountry()'
+     */
+    public void testGetCountry() {
+        assertEquals("CC", longULocale.getCountry());
+        assertEquals("CC", longULocale.toLocale().getCountry());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getCountry(String)'
+     */
+    public void testGetCountryString() {
+        assertEquals("CC", ULocale.getCountry(longULocale.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getVariant()'
+     */
+    public void testGetVariant() {
+        assertEquals("VVVV", longULocale.getVariant());
+        assertEquals("VVVV", longULocale.toLocale().getVariant());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getVariant(String)'
+     */
+    public void testGetVariantString() {
+        assertEquals("VVVV", ULocale.getVariant(longULocale.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getFallback(String)'
+     */
+    public void testGetFallbackString() {
+        assertEquals(ULocale.GERMAN, ULocale.getFallback(ULocale.GERMANY.getName()));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getFallback()'
+     */
+    public void testGetFallback() {
+        assertEquals(ULocale.GERMAN, ULocale.GERMANY.getFallback());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getBaseName()'
+     */
+    public void testGetBaseName() {
+        assertEquals(longULocaleBasename, longULocale.getBaseName());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getBaseName(String)'
+     */
+    public void testGetBaseNameString() {
+        assertEquals(longULocaleBasename, longULocale.getBaseName());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getName()'
+     */
+    public void testGetName() {
+        assertEquals(longULocaleName, longULocale.getName());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getName(String)'
+     */
+    public void testGetNameString() {
+        assertEquals(longULocaleName, ULocale.getName(nonNormalizedName));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.toString()'
+     */
+    public void testToString() {
+        assertEquals(longULocaleName, longULocale.toString());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getKeywords()'
+     */
+    public void testGetKeywords() {
+        Iterator iter = longULocale.getKeywords();
+        assertEquals(iter.next(), "collation");
+        assertEquals(iter.next(), "key");
+        assertFalse(iter.hasNext());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getKeywords(String)'
+     */
+    public void testGetKeywordsString() {
+        Iterator iter = ULocale.getKeywords(nonNormalizedName);
+        assertEquals(iter.next(), "collation");
+        assertEquals(iter.next(), "key");
+        assertFalse(iter.hasNext());
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getKeywordValue(String)'
+     */
+    public void testGetKeywordValueString() {
+        assertEquals("value", longULocale.getKeywordValue("key"));
+        assertEquals("phonebook", longULocale.getKeywordValue("collation"));
+        assertNull(longULocale.getKeywordValue("zzyzx"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getKeywordValue(String, String)'
+     */
+    public void testGetKeywordValueStringString() {
+        assertEquals("value", ULocale.getKeywordValue(longULocaleName, "key"));
+        assertEquals("phonebook", ULocale.getKeywordValue(longULocaleName, "collation"));
+        assertNull(ULocale.getKeywordValue(longULocaleName, "zzyzx"));
+
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.canonicalize(String)'
+     */
+    public void testCanonicalize() {
+        assertEquals("de@collation=phonebook", ULocale.canonicalize("de__PHONEBOOK"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.setKeywordValue(String, String)'
+     */
+    public void testSetKeywordValueStringString() {
+        ULocale munged = longULocale.setKeywordValue("key", "C#");
+        assertEquals("C#", munged.getKeywordValue("key"));
+        munged = munged.setKeywordValue("zzyzx", "grue");
+        assertEquals("grue", munged.getKeywordValue("zzyzx"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.setKeywordValue(String, String, String)'
+     */
+    public void testSetKeywordValueStringStringString() {
+        String munged = ULocale.setKeywordValue(longULocaleName, "key", "C#");
+        assertEquals("C#", ULocale.getKeywordValue(munged, "key"));
+        munged = ULocale.setKeywordValue(munged, "zzyzx", "grue");
+        assertEquals("grue", ULocale.getKeywordValue(munged, "zzyzx"));
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Language()'
+     */
+    public void testGetISO3Language() {
+        String il = ULocale.GERMANY.getISO3Language();
+        String jl = Locale.GERMANY.getISO3Language();
+        assertEquals(il, jl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Language(String)'
+     */
+    public void testGetISO3LanguageString() {
+        String il = ULocale.getISO3Language(ULocale.GERMANY.getName());
+        String jl = Locale.GERMANY.getISO3Language();
+        assertEquals(il, jl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Country()'
+     */
+    public void testGetISO3Country() {
+        String ic = ULocale.GERMANY.getISO3Country();
+        String jc = Locale.GERMANY.getISO3Country();
+        assertEquals(ic, jc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getISO3Country(String)'
+     */
+    public void testGetISO3CountryString() {
+        String ic = ULocale.getISO3Country(ULocale.GERMANY.getName());
+        String jc = Locale.GERMANY.getISO3Country();
+        assertEquals(ic, jc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage()'
+     */
+    public void testGetDisplayLanguage() {
+        String idl = ULocale.GERMANY.getDisplayLanguage();
+        String jdl = Locale.GERMANY.getDisplayLanguage();
+        assertEquals(idl, jdl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(ULocale)'
+     */
+    public void testGetDisplayLanguageULocale() {
+        String idl = ULocale.GERMANY.getDisplayLanguage(ULocale.GERMANY);
+        String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY);
+        assertEquals(idl, jdl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(String, String)'
+     */
+    public void testGetDisplayLanguageStringString() {
+        String idl = ULocale.getDisplayLanguage(ULocale.GERMANY.getName(), "de_DE");
+        String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY);
+        assertEquals(idl, jdl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayLanguage(String, ULocale)'
+     */
+    public void testGetDisplayLanguageStringULocale() {
+        String idl = ULocale.getDisplayLanguage(ULocale.GERMANY.getName(), ULocale.GERMANY);
+        String jdl = Locale.GERMANY.getDisplayLanguage(Locale.GERMANY);
+        assertEquals(idl, jdl);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript()'
+     */
+    public void testGetDisplayScript() {
+        String is = ULocale.TRADITIONAL_CHINESE.getDisplayScript();
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("Hant", is);
+        } else {
+            assertEquals("Traditional Chinese", is);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(ULocale)'
+     */
+    public void testGetDisplayScriptULocale() {
+        String is = ULocale.TRADITIONAL_CHINESE.getDisplayScript(ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("Hant", is);
+        } else {
+            // TODO: look up expected value
+            assertEquals("Hant", is);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(String, String)'
+     */
+    public void testGetDisplayScriptStringString() {
+        String is = ULocale.getDisplayScript("zh_Hant", "de_DE");
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("Hant", is);
+        } else {
+            // TODO: look up expected value
+            assertEquals("Hant", is);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayScript(String, ULocale)'
+     */
+    public void testGetDisplayScriptStringULocale() {
+        String is = ULocale.getDisplayScript("zh_Hant", ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("Hant", is);
+        } else {
+            // TODO: look up expected value
+            assertEquals("Hant", is);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry()'
+     */
+    public void testGetDisplayCountry() {
+        String idc = ULocale.GERMANY.getDisplayCountry();
+        String jdc = Locale.GERMANY.getDisplayCountry();
+        assertEquals(idc, jdc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(ULocale)'
+     */
+    public void testGetDisplayCountryULocale() {
+        String idc = ULocale.GERMANY.getDisplayCountry(ULocale.GERMANY);
+        String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY);
+        assertEquals(idc, jdc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(String, String)'
+     */
+    public void testGetDisplayCountryStringString() {
+        String idc = ULocale.getDisplayCountry("de_DE", "de_DE");
+        String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY);
+        assertEquals(idc, jdc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayCountry(String, ULocale)'
+     */
+    public void testGetDisplayCountryStringULocale() {
+        String idc = ULocale.getDisplayCountry("de_DE", ULocale.GERMANY);
+        String jdc = Locale.GERMANY.getDisplayCountry(Locale.GERMANY);
+        assertEquals(idc, jdc);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant()'
+     */
+    public void testGetDisplayVariant() {
+        String idv = new ULocale("de_DE_PHONEBOOK").getDisplayVariant();
+        String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant();
+        assertEquals(jdv, idv);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(ULocale)'
+     */
+    public void testGetDisplayVariantULocale() {
+        String idv = new ULocale("de_DE_PHONEBOOK").getDisplayVariant(ULocale.GERMANY);
+        String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY);
+        assertEquals(jdv, idv);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(String, String)'
+     */
+    public void testGetDisplayVariantStringString() {
+        String idv = ULocale.getDisplayVariant("de_DE_PHONEBOOK", "de_DE");
+        String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY);
+        assertEquals(jdv, idv);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayVariant(String, ULocale)'
+     */
+    public void testGetDisplayVariantStringULocale() {
+        String idv = ULocale.getDisplayVariant("de_DE_PHONEBOOK", ULocale.GERMANY);
+        String jdv = new Locale("de", "DE", "PHONEBOOK").getDisplayVariant(Locale.GERMANY);
+        assertEquals(jdv, idv);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String)'
+     */
+    public void testGetDisplayKeywordString() {
+        String idk = ULocale.getDisplayKeyword("collation");
+        assertEquals("collation", idk);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String, String)'
+     */
+    public void testGetDisplayKeywordStringString() {
+        String idk = ULocale.getDisplayKeyword("collation", "de_DE");
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("collation", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("collation", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeyword(String, ULocale)'
+     */
+    public void testGetDisplayKeywordStringULocale() {
+        String idk = ULocale.getDisplayKeyword("collation", ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("collation", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("collation", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String)'
+     */
+    public void testGetDisplayKeywordValueString() {
+        ULocale ul = new ULocale("de_DE@collation=phonebook");
+        String idk = ul.getDisplayKeywordValue("collation");
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("phonebook", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("phonebook", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, ULocale)'
+     */
+    public void testGetDisplayKeywordValueStringULocale() {
+        ULocale ul = new ULocale("de_DE@collation=phonebook");
+        String idk = ul.getDisplayKeywordValue("collation", ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("phonebook", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("phonebook", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, String, String)'
+     */
+    public void testGetDisplayKeywordValueStringStringString() {
+        String idk = ULocale.getDisplayKeywordValue("de_DE@collation=phonebook", "collation", "de_DE");
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("phonebook", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("phonebook", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayKeywordValue(String, String, ULocale)'
+     */
+    public void testGetDisplayKeywordValueStringStringULocale() {
+        String idk = ULocale.getDisplayKeywordValue("de_DE@collation=phonebook", "collation", ULocale.GERMANY);
+        if (ICUTestCase.testingWrapper) {
+            assertEquals("phonebook", idk);
+        } else {
+            // TODO: find real value
+            assertEquals("phonebook", idk);
+        }
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName()'
+     */
+    public void testGetDisplayName() {
+        String idn = ULocale.GERMANY.getDisplayName();
+        String jdn = Locale.GERMANY.getDisplayName();
+        assertEquals(idn, jdn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(ULocale)'
+     */
+    public void testGetDisplayNameULocale() {
+        String idn = ULocale.GERMANY.getDisplayName(ULocale.GERMANY);
+        String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY);
+        assertEquals(idn, jdn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(String, String)'
+     */
+    public void testGetDisplayNameStringString() {
+        String idn = ULocale.getDisplayName("de_DE", "de_DE");
+        String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY);
+        assertEquals(idn, jdn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.getDisplayName(String, ULocale)'
+     */
+    public void testGetDisplayNameStringULocale() {
+        String idn = ULocale.getDisplayName("de_DE", ULocale.GERMANY);
+        String jdn = Locale.GERMANY.getDisplayName(Locale.GERMANY);
+        assertEquals(idn, jdn);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(String, ULocale[], boolean[])'
+     */
+    public void testAcceptLanguageStringULocaleArrayBooleanArray() {
+        boolean[] fallback = new boolean[1];
+        ULocale[] locales = { 
+            new ULocale("en_CA"), 
+            new ULocale("es_US"), 
+        };
+        ULocale result = ULocale.acceptLanguage("en-US, en-GB, en-CA, es-US", locales, fallback);
+        assertEquals(new ULocale("en_CA"), result);
+        assertFalse(fallback[0]);
+        result = ULocale.acceptLanguage("en-US, en-GB, es-US-NEWMEXICO", locales, fallback);
+        assertEquals(new ULocale("es_US"), result);
+        assertTrue(fallback[0]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(ULocale[], ULocale[], boolean[])'
+     */
+    public void testAcceptLanguageULocaleArrayULocaleArrayBooleanArray() {
+        boolean[] fallback = new boolean[1];
+        ULocale[] locales = { 
+            new ULocale("en_CA"), 
+            new ULocale("es_US"), 
+        };
+        ULocale[] accept_locales = {
+            new ULocale("en_US"),
+            new ULocale("en_GB"),
+            new ULocale("en_CA"),
+            new ULocale("es_US"),
+        };
+        ULocale[] accept_locales2 = {
+            new ULocale("en_US"),
+            new ULocale("en_GB"),
+            new ULocale("es_US_NEWMEXICO"),
+        };
+        ULocale result = ULocale.acceptLanguage(accept_locales, locales, fallback);
+        assertEquals(new ULocale("en_CA"), result);
+        assertFalse(fallback[0]);
+        result = ULocale.acceptLanguage(accept_locales2, locales, fallback);
+        assertEquals(new ULocale("es_US"), result);
+        assertTrue(fallback[0]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(String, boolean[])'
+     */
+    public void testAcceptLanguageStringBooleanArray() {
+        boolean[] fallback = new boolean[1];
+        ULocale result = ULocale.acceptLanguage("en-CA, en-GB, es-US", fallback);
+        assertEquals(new ULocale("en_CA"), result);
+        assertFalse(fallback[0]);
+        result = ULocale.acceptLanguage("es-US-NEWMEXICO", fallback);
+        assertNotNull(result); // actual result depends on jdk
+        assertTrue(fallback[0]);
+    }
+
+    /*
+     * Test method for 'com.ibm.icu.x.util.ULocale.acceptLanguage(ULocale[], boolean[])'
+     */
+    public void testAcceptLanguageULocaleArrayBooleanArray() {
+        boolean[] fallback = new boolean[1];
+        ULocale[] accept_locales = {
+            new ULocale("en_CA"),
+            new ULocale("en_GB"),
+            new ULocale("es_US"),
+        };
+        ULocale[] accept_locales2 = {
+            new ULocale("es_US_NEWMEXICO"),
+        };
+        ULocale result = ULocale.acceptLanguage(accept_locales, fallback);
+        assertEquals(new ULocale("en_CA"), result);
+        assertFalse(fallback[0]);
+        result = ULocale.acceptLanguage(accept_locales2, fallback);
+        assertNotNull(result); // actual result depends on jdk
+        assertTrue(fallback[0]);
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.project
new file mode 100644
index 0000000..24d73b3
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.base</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c87a86d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:50:27 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..96ae609
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:50:27 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2cc2322
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: com.ibm.icu.base; singleton:=true
+Bundle-Version: @BUILD_VERSION@
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-Copyright: @COPYRIGHT@
+Export-Package: com.ibm.icu.text;base=true;version="@IMPL_VERSION@",
+ com.ibm.icu.util;base=true;version="@IMPL_VERSION@"
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,
+ J2SE-1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/build.properties
new file mode 100644
index 0000000..8c108f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+src.includes = about.html,\
+               about_files/
+bin.includes = .,\
+               about.html,\
+               about_files/,\
+               plugin.properties,\
+               META-INF/
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/plugin.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/plugin.properties
new file mode 100644
index 0000000..b33400d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials 
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+pluginName = International Components for Unicode for Java (ICU4J) Replacement plug-in
+providerName = IBM Corporation
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java
new file mode 100644
index 0000000..c95e217
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java
@@ -0,0 +1,661 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * A class that locates boundaries in text.  This class defines a protocol for
+ * objects that break up a piece of natural-language text according to a set
+ * of criteria.  Instances or subclasses of BreakIterator can be provided, for
+ * example, to break a piece of text into words, sentences, or logical characters
+ * according to the conventions of some language or group of languages.
+ *
+ * We provide five built-in types of BreakIterator:
+ * <ul><li>getTitleInstance() returns a BreakIterator that locates boundaries
+ * between title breaks.
+ * <li>getSentenceInstance() returns a BreakIterator that locates boundaries
+ * between sentences.  This is useful for triple-click selection, for example.
+ * <li>getWordInstance() returns a BreakIterator that locates boundaries between
+ * words.  This is useful for double-click selection or "find whole words" searches.
+ * This type of BreakIterator makes sure there is a boundary position at the
+ * beginning and end of each legal word.  (Numbers count as words, too.)  Whitespace
+ * and punctuation are kept separate from real words.
+ * <li>getLineInstance() returns a BreakIterator that locates positions where it is
+ * legal for a text editor to wrap lines.  This is similar to word breaking, but
+ * not the same: punctuation and whitespace are generally kept with words (you don't
+ * want a line to start with whitespace, for example), and some special characters
+ * can force a position to be considered a line-break position or prevent a position
+ * from being a line-break position.
+ * <li>getCharacterInstance() returns a BreakIterator that locates boundaries between
+ * logical characters.  Because of the structure of the Unicode encoding, a logical
+ * character may be stored internally as more than one Unicode code point.  (A with an
+ * umlaut may be stored as an a followed by a separate combining umlaut character,
+ * for example, but the user still thinks of it as one character.)  This iterator allows
+ * various processes (especially text editors) to treat as characters the units of text
+ * that a user would think of as characters, rather than the units of text that the
+ * computer sees as "characters".</ul>
+ *
+ * BreakIterator's interface follows an "iterator" model (hence the name), meaning it
+ * has a concept of a "current position" and methods like first(), last(), next(),
+ * and previous() that update the current position.  All BreakIterators uphold the
+ * following invariants:
+ * <ul><li>The beginning and end of the text are always treated as boundary positions.
+ * <li>The current position of the iterator is always a boundary position (random-
+ * access methods move the iterator to the nearest boundary position before or
+ * after the specified position, not _to_ the specified position).
+ * <li>DONE is used as a flag to indicate when iteration has stopped.  DONE is only
+ * returned when the current position is the end of the text and the user calls next(),
+ * or when the current position is the beginning of the text and the user calls
+ * previous().
+ * <li>Break positions are numbered by the positions of the characters that follow
+ * them.  Thus, under normal circumstances, the position before the first character
+ * is 0, the position after the first character is 1, and the position after the
+ * last character is 1 plus the length of the string.
+ * <li>The client can change the position of an iterator, or the text it analyzes,
+ * at will, but cannot change the behavior.  If the user wants different behavior, he
+ * must instantiate a new iterator.</ul>
+ *
+ * BreakIterator accesses the text it analyzes through a CharacterIterator, which makes
+ * it possible to use BreakIterator to analyze text in any text-storage vehicle that
+ * provides a CharacterIterator interface.
+ *
+ * <b>NOTE:</b>  Some types of BreakIterator can take a long time to create, and
+ * instances of BreakIterator are not currently cached by the system.  For
+ * optimal performance, keep instances of BreakIterator around as long as makes
+ * sense.  For example, when word-wrapping a document, don't create and destroy a
+ * new BreakIterator for each line.  Create one break iterator for the whole document
+ * (or whatever stretch of text you're wrapping) and use it to do the whole job of
+ * wrapping the text.
+ *
+ * <P>
+ * <strong>Examples</strong>:<P>
+ * Creating and using text boundaries
+ * <blockquote>
+ * <pre>
+ * public static void main(String args[]) {
+ *      if (args.length == 1) {
+ *          String stringToExamine = args[0];
+ *          //print each word in order
+ *          BreakIterator boundary = BreakIterator.getWordInstance();
+ *          boundary.setText(stringToExamine);
+ *          printEachForward(boundary, stringToExamine);
+ *          //print each sentence in reverse order
+ *          boundary = BreakIterator.getSentenceInstance(Locale.US);
+ *          boundary.setText(stringToExamine);
+ *          printEachBackward(boundary, stringToExamine);
+ *          printFirst(boundary, stringToExamine);
+ *          printLast(boundary, stringToExamine);
+ *      }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in order
+ * <blockquote>
+ * <pre>
+ * public static void printEachForward(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     for (int end = boundary.next();
+ *          end != BreakIterator.DONE;
+ *          start = end, end = boundary.next()) {
+ *          System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in reverse order
+ * <blockquote>
+ * <pre>
+ * public static void printEachBackward(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     for (int start = boundary.previous();
+ *          start != BreakIterator.DONE;
+ *          end = start, start = boundary.previous()) {
+ *         System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print first element
+ * <blockquote>
+ * <pre>
+ * public static void printFirst(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     int end = boundary.next();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print last element
+ * <blockquote>
+ * <pre>
+ * public static void printLast(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print the element at a specified position
+ * <blockquote>
+ * <pre>
+ * public static void printAt(BreakIterator boundary, int pos, String source) {
+ *     int end = boundary.following(pos);
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Find the next word
+ * <blockquote>
+ * <pre>
+ * public static int nextWordStartAfter(int pos, String text) {
+ *     BreakIterator wb = BreakIterator.getWordInstance();
+ *     wb.setText(text);
+ *     int last = wb.following(pos);
+ *     int current = wb.next();
+ *     while (current != BreakIterator.DONE) {
+ *         for (int p = last; p < current; p++) {
+ *             if (Character.isLetter(text.charAt(p))
+ *                 return last;
+ *         }
+ *         last = current;
+ *         current = wb.next();
+ *     }
+ *     return BreakIterator.DONE;
+ * }
+ * </pre>
+ * (The iterator returned by BreakIterator.getWordInstance() is unique in that
+ * the break positions it returns don't represent both the start and end of the
+ * thing being iterated over.  That is, a sentence-break iterator returns breaks
+ * that each represent the end of one sentence and the beginning of the next.
+ * With the word-break iterator, the characters between two boundaries might be a
+ * word, or they might be the punctuation or whitespace between two words.  The
+ * above code uses a simple heuristic to determine which boundary is the beginning
+ * of a word: If the characters between this boundary and the next boundary
+ * include at least one letter (this can be an alphabetical letter, a CJK ideograph,
+ * a Hangul syllable, a Kana character, etc.), then the text between this boundary
+ * and the next is a word; otherwise, it's the material between words.)
+ * </blockquote>
+ *
+ * @see CharacterIterator
+ * @stable ICU 2.0
+ *
+ */
+public abstract class BreakIterator implements Cloneable {
+
+    protected BreakIterator() {
+    }
+
+    /**
+     * Create a copy of this iterator
+     * @return A copy of this
+     */
+    public Object clone() {
+        // this is here for subclass use.  we must override it ourselves, though.
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * DONE is returned by previous() and next() after all valid
+     * boundaries have been returned.
+     * @stable ICU 2.0
+     */
+    public static final int DONE = -1;
+        
+    /**
+     * Return the first boundary position.  This is always the beginning
+     * index of the text this iterator iterates over.  For example, if
+     * the iterator iterates over a whole string, this function will
+     * always return 0.  This function also updates the iteration position
+     * to point to the beginning of the text.
+     * @return The character offset of the beginning of the stretch of text
+     * being broken.
+     * @stable ICU 2.0
+     */
+    public abstract int first();
+        
+    /**
+     * Return the last boundary position.  This is always the "past-the-end"
+     * index of the text this iterator iterates over.  For example, if the
+     * iterator iterates over a whole string (call it "text"), this function
+     * will always return text.length().  This function also updated the
+     * iteration position to point to the end of the text.
+     * @return The character offset of the end of the stretch of text
+     * being broken.
+     * @stable ICU 2.0
+     */
+    public abstract int last();
+        
+    /**
+     * Advances the specified number of steps forward in the text (a negative
+     * number, therefore, advances backwards).  If this causes the iterator
+     * to advance off either end of the text, this function returns DONE;
+     * otherwise, this function returns the position of the appropriate
+     * boundary.  Calling this function is equivalent to calling next() or
+     * previous() n times.
+     * @param n The number of boundaries to advance over (if positive, moves
+     * forward; if negative, moves backwards).
+     * @return The position of the boundary n boundaries from the current
+     * iteration position, or DONE if moving n boundaries causes the iterator
+     * to advance off either end of the text.
+     * @stable ICU 2.0
+     */
+    public abstract int next(int n);
+        
+    /**
+     * Advances the iterator forward one boundary.  The current iteration
+     * position is updated to point to the next boundary position after the
+     * current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by last(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the first boundary position following the
+     * iteration position.
+     * @stable ICU 2.0
+     */
+    public abstract int next();
+        
+    /**
+     * Advances the iterator backward one boundary.  The current iteration
+     * position is updated to point to the last boundary position before
+     * the current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by first(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the last boundary position preceding the
+     * iteration position.
+     * @stable ICU 2.0
+     */
+    public abstract int previous();
+        
+    /**
+     * Sets the iterator's current iteration position to be the first
+     * boundary position following the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * first boundary after the specified position.)  If the specified
+     * position is the past-the-end position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the first boundary position following
+     * "offset" (whether or not "offset" itself is a boundary position),
+     * or DONE if "offset" is the past-the-end offset.
+     * @stable ICU 2.0
+     */
+    public abstract int following(int offset);
+        
+    /**
+     * Sets the iterator's current iteration position to be the last
+     * boundary position preceding the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * last boundary before the specified position.)  If the specified
+     * position is the starting position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the last boundary position preceding
+     * "offset" (whether of not "offset" itself is a boundary position),
+     * or DONE if "offset" is the starting offset of the iterator.
+     * @stable ICU 2.0
+     */
+    public int preceding(int offset) {
+        int pos = following(offset);
+        while (pos >= offset && pos != DONE) {
+            pos = previous();
+        }
+        return pos;
+    }
+        
+    /**
+     * Return true if the specfied position is a boundary position.  If the
+     * function returns true, the current iteration position is set to the
+     * specified position; if the function returns false, the current
+     * iteration position is set as though following() had been called.
+     * @param offset the offset to check.
+     * @return True if "offset" is a boundary position.
+     * @stable ICU 2.0
+     */
+    public boolean isBoundary(int offset) {
+        return offset == 0 || following(offset - 1) == offset;
+    }
+        
+    /**
+     * Return the iterator's current position.
+     * @return The iterator's current position.
+     * @stable ICU 2.0
+     */
+    public abstract int current();
+        
+    /**
+     * Returns a CharacterIterator over the text being analyzed.
+     * For at least some subclasses of BreakIterator, this is a reference
+     * to the <b>actual iterator being used</b> by the BreakIterator,
+     * and therefore, this function's return value should be treated as
+     * <tt>const</tt>.  No guarantees are made about the current position
+     * of this iterator when it is returned.  If you need to move that
+     * position to examine the text, clone this function's return value first.
+     * @return A CharacterIterator over the text being analyzed.
+     * @stable ICU 2.0
+     */
+    public abstract CharacterIterator getText();
+        
+    /**
+     * Sets the iterator to analyze a new piece of text.  The new
+     * piece of text is passed in as a String, and the current
+     * iteration position is reset to the beginning of the string.
+     * (The old text is dropped.)
+     * @param newText A String containing the text to analyze with
+     * this BreakIterator.
+     * @stable ICU 2.0
+     */
+    public void setText(String newText) {
+        setText(new StringCharacterIterator(newText));
+    }
+        
+    /**
+     * Sets the iterator to analyze a new piece of text.  The
+     * BreakIterator is passed a CharacterIterator through which
+     * it will access the text itself.  The current iteration
+     * position is reset to the CharacterIterator's start index.
+     * (The old iterator is dropped.)
+     * @param newText A CharacterIterator referring to the text
+     * to analyze with this BreakIterator (the iterator's current
+     * position is ignored, but its other state is significant).
+     * @stable ICU 2.0
+     */
+    public abstract void setText(CharacterIterator newText);
+        
+    /** @stable ICU 2.4 */
+    public static final int KIND_CHARACTER = 0;
+    /** @stable ICU 2.4 */
+    public static final int KIND_WORD = 1;
+    /** @stable ICU 2.4 */
+    public static final int KIND_LINE = 2;
+    /** @stable ICU 2.4 */
+    public static final int KIND_SENTENCE = 3;
+    /** @stable ICU 2.4 */
+    public static final int KIND_TITLE = 4;
+        
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * This function assumes that the text being analyzed is in the default
+     * locale's language.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getWordInstance() {
+        return getWordInstance(Locale.getDefault());
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getWordInstance(Locale where) {
+        return getBreakInstance(where, KIND_WORD);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 3.4.3
+     */
+    public static BreakIterator getWordInstance(ULocale where) {
+        return getBreakInstance(where.toLocale(), KIND_WORD);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.  This function assumes the text being broken
+     * is in the default locale's language.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getLineInstance() {
+        return getLineInstance(Locale.getDefault());
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getLineInstance(Locale where) {
+        return getBreakInstance(where, KIND_LINE);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 3.4.3
+     */
+    public static BreakIterator getLineInstance(ULocale where) {
+        return getBreakInstance(where.toLocale(), KIND_LINE);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.  This function assumes that the text being analyzed is
+     * in the default locale's language.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getCharacterInstance() {
+        return getCharacterInstance(Locale.getDefault());
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getCharacterInstance(Locale where) {
+        return getBreakInstance(where, KIND_CHARACTER);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getCharacterInstance(ULocale where) {
+        return getBreakInstance(where.toLocale(), KIND_CHARACTER);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getSentenceInstance() {
+        return getSentenceInstance(Locale.getDefault());
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getSentenceInstance(Locale where) {
+        return getBreakInstance(where, KIND_SENTENCE);
+    }
+        
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 3.4.3
+     */
+    public static BreakIterator getSentenceInstance(ULocale where) {
+        return getBreakInstance(where.toLocale(), KIND_SENTENCE);
+    }
+        
+    private static BreakIterator getBreakInstance(Locale where, int kind) {
+        java.text.BreakIterator br = null;
+        switch(kind) {
+        case KIND_CHARACTER: br = java.text.BreakIterator.getCharacterInstance(where); break;
+        case KIND_WORD: br = java.text.BreakIterator.getWordInstance(where); break;
+        case KIND_LINE: br = java.text.BreakIterator.getLineInstance(where); break;
+        case KIND_SENTENCE: br = java.text.BreakIterator.getSentenceInstance(where); break;             
+        case KIND_TITLE: throw new UnsupportedOperationException();
+        }
+        return new BreakIteratorHandle(br);
+    }
+        
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of Locales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     * @stable ICU 3.4.3
+     */
+    public static synchronized Locale[] getAvailableLocales() {
+        return java.text.BreakIterator.getAvailableLocales();
+    }
+        
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of ULocales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     * @stable ICU 3.4.3
+     */
+    public static synchronized ULocale[] getAvailableULocales() {
+        Locale[] locales = java.text.BreakIterator.getAvailableLocales();
+        ULocale[] ulocales = new ULocale[locales.length];
+        for (int i = 0; i < locales.length; ++i) {
+            ulocales[i] = ULocale.forLocale(locales[i]);
+        }
+        return ulocales;
+    }
+    
+    // forwarding implementation class
+    static final class BreakIteratorHandle extends BreakIterator {
+        /**
+         * @internal
+         */
+        public final java.text.BreakIterator breakIterator;
+
+        /**
+         * @internal
+         * @param delegate the BreakIterator to which to delegate
+         */
+        public BreakIteratorHandle(java.text.BreakIterator delegate) {
+            this.breakIterator = delegate;
+        }
+
+        public int first() {
+            return breakIterator.first();
+        }
+        public int last() {
+            return breakIterator.last();
+        }
+        public int next(int n) {
+            return breakIterator.next(n);
+        }
+        public int next() {
+            return breakIterator.next();
+        }
+        public int previous() {
+            return breakIterator.previous();
+        }
+        public int following(int offset) {
+            return breakIterator.following(offset);
+        }
+        public int preceding(int offset) {
+            return breakIterator.preceding(offset);
+        }
+        public boolean isBoundary(int offset) {
+            return breakIterator.isBoundary(offset);
+        }
+        public int current() {
+            return breakIterator.current();
+        }
+        public CharacterIterator getText() {
+            return breakIterator.getText();
+        }
+        public void setText(CharacterIterator newText) {
+            breakIterator.setText(newText);
+        }
+
+        /**
+         * Return a string suitable for debugging.
+         * @return a string suitable for debugging
+         * @stable ICU 3.4.3
+         */
+        public String toString() {
+            return breakIterator.toString();
+        }
+
+        /**
+         * Return a clone of this BreakIterator.
+         * @return a clone of this BreakIterator
+         * @stable ICU 3.4.3
+         */
+        public Object clone() {
+            return new BreakIteratorHandle((java.text.BreakIterator)breakIterator.clone());
+        }
+
+        /**
+         * Return true if rhs is a BreakIterator with the same break behavior as this.
+         * @return true if rhs equals this
+         * @stable ICU 3.4.3
+         */
+        public boolean equals(Object rhs) {
+            try {
+                return breakIterator.equals(((BreakIteratorHandle)rhs).breakIterator);
+            }
+            catch (Exception e) {
+                return false;
+            }
+        }
+
+        /**
+         * Return a hashCode.
+         * @return a hashCode
+         * @stable ICU 3.4.3
+         */
+        public int hashCode() {
+            return breakIterator.hashCode();
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java
new file mode 100644
index 0000000..fde7b4c
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java
@@ -0,0 +1,250 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * <p>A <code>CollationKey</code> represents a <code>String</code>
+ * under the rules of a specific <code>Collator</code>
+ * object. Comparing two <code>CollationKey</code>s returns the
+ * relative order of the <code>String</code>s they represent.</p>
+ *
+ * <p>Since the rule set of <code>Collator</code>s can differ, the
+ * sort orders of the same string under two different
+ * <code>Collator</code>s might differ.  Hence comparing
+ * <code>CollationKey</code>s generated from different
+ * <code>Collator</code>s can give incorrect results.</p>
+ 
+ * <p>Both the method
+ * <code>CollationKey.compareTo(CollationKey)</code> and the method
+ * <code>Collator.compare(String, String)</code> compare two strings
+ * and returns their relative order.  The performance characterictics
+ * of these two approaches can differ.</p>
+ *
+ * <p>During the construction of a <code>CollationKey</code>, the
+ * entire source string is examined and processed into a series of
+ * bits terminated by a null, that are stored in the <code>CollationKey</code>. 
+ * When <code>CollationKey.compareTo(CollationKey)</code> executes, it
+ * performs bitwise comparison on the bit sequences.  This can incurs
+ * startup cost when creating the <code>CollationKey</code>, but once
+ * the key is created, binary comparisons are fast.  This approach is
+ * recommended when the same strings are to be compared over and over
+ * again.</p>
+ *
+ * <p>On the other hand, implementations of
+ * <code>Collator.compare(String, String)</code> can examine and
+ * process the strings only until the first characters differing in
+ * order.  This approach is recommended if the strings are to be
+ * compared only once.</p>
+ * 
+ * <p>More information about the composition of the bit sequence can
+ * be found in the 
+ * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+ * user guide</a>.</p>
+ *
+ * <p>The following example shows how <code>CollationKey</code>s can be used
+ * to sort a list of <code>String</code>s.</p>
+ * <blockquote>
+ * <pre>
+ * // Create an array of CollationKeys for the Strings to be sorted.
+ * Collator myCollator = Collator.getInstance();
+ * CollationKey[] keys = new CollationKey[3];
+ * keys[0] = myCollator.getCollationKey("Tom");
+ * keys[1] = myCollator.getCollationKey("Dick");
+ * keys[2] = myCollator.getCollationKey("Harry");
+ * sort( keys );
+ * <br>
+ * //...
+ * <br>
+ * // Inside body of sort routine, compare keys this way
+ * if( keys[i].compareTo( keys[j] ) > 0 )
+ *    // swap keys[i] and keys[j]
+ * <br>
+ * //...
+ * <br>
+ * // Finally, when we've returned from sort.
+ * System.out.println( keys[0].getSourceString() );
+ * System.out.println( keys[1].getSourceString() );
+ * System.out.println( keys[2].getSourceString() );
+ * </pre>
+ * </blockquote>
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @see Collator
+ * @see RuleBasedCollator
+ * @stable ICU 2.8 
+ */
+public final class CollationKey implements Comparable {
+    /**
+     * @internal
+     */
+    final java.text.CollationKey key;
+
+    /**
+     * @internal
+     */
+    CollationKey(java.text.CollationKey delegate) {
+        this.key = delegate;
+    }
+
+    /**
+     * Return the source string that this CollationKey represents.
+     * @return source string that this CollationKey represents
+     * @stable ICU 2.8
+     */
+    public String getSourceString() {
+        return key.getSourceString();
+    }
+    
+    /**
+     * <p>Duplicates and returns the value of this CollationKey as a sequence 
+     * of big-endian bytes terminated by a null.</p> 
+     *
+     * <p>If two CollationKeys can be legitimately compared, then one can
+     * compare the byte arrays of each to obtain the same result, e.g.
+     * <pre>
+     * byte key1[] = collationkey1.toByteArray();
+     * byte key2[] = collationkey2.toByteArray();
+     * int key, targetkey;
+     * int i = 0;
+     * do {
+     *       key = key1[i] & 0xFF;
+     *     targetkey = key2[i] & 0xFF;
+     *     if (key &lt; targetkey) {
+     *         System.out.println("String 1 is less than string 2");
+     *         return;
+     *     }
+     *     if (targetkey &lt; key) {
+     *         System.out.println("String 1 is more than string 2");
+     *     }
+     *     i ++;
+     * } while (key != 0 && targetKey != 0);
+     *
+     * System.out.println("Strings are equal.");
+     * </pre>
+     * </p>  
+     * @return CollationKey value in a sequence of big-endian byte bytes 
+     *         terminated by a null.
+     * @stable ICU 2.8
+     */
+    public byte[] toByteArray() {
+        return key.toByteArray();
+    }
+
+    /**
+     * <p>Compare this CollationKey to another CollationKey.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     *
+     * <p><strong>Note:</strong> Comparison between CollationKeys
+     * created by different Collators might return incorrect
+     * results.  See class documentation.</p>
+     *
+     * @param target target CollationKey
+     * @return an integer value.  If the value is less than zero this CollationKey
+     *         is less than than target, if the value is zero they are equal, and
+     *         if the value is greater than zero this CollationKey is greater 
+     *         than target.
+     * @exception NullPointerException is thrown if argument is null.
+     * @see Collator#compare(String, String)
+     * @stable ICU 2.8 
+     */
+    public int compareTo(CollationKey target) {
+        return key.compareTo(target.key);
+    }
+
+    /**
+     * <p>Compare this CollationKey with the specified Object.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     * 
+     * <p>See note in compareTo(CollationKey) for warnings about possible
+     * incorrect results.</p>
+     *
+     * @param obj the Object to be compared to.
+     * @return Returns a negative integer, zero, or a positive integer 
+     *         respectively if this CollationKey is less than, equal to, or 
+     *         greater than the given Object.
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @see #compareTo(CollationKey)
+     * @stable ICU 2.8 
+     */
+    public int compareTo(Object o) {
+        return compareTo((CollationKey)o);
+    }
+
+    /**
+     * <p>Compare this CollationKey and the specified Object for
+     * equality.  The collation rules of the Collator that created
+     * this key are applied.</p>
+     *
+     * <p>See note in compareTo(CollationKey) for warnings about
+     * possible incorrect results.</p>
+     *
+     * @param target the object to compare to.
+     * @return true if the two keys compare as equal, false otherwise.
+     * @see #compareTo(CollationKey)
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @stable ICU 2.8 
+     */
+    public boolean equals(Object target) {
+        try {
+            return key.equals(((CollationKey)target).key);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * <p>
+     * Compare this CollationKey and the argument target CollationKey for 
+     * equality.
+     * The collation 
+     * rules of the Collator object which created these objects are applied.
+     * </p>
+     * <p>
+     * See note in compareTo(CollationKey) for warnings of incorrect results
+     * </p>
+     * @param target the CollationKey to compare to.
+     * @return true if two objects are equal, false otherwise.
+     * @exception NullPointerException is thrown when the argument is null.
+     * @stable ICU 2.8
+     */
+    public boolean equals(CollationKey target) {
+            return key.equals(target.key);
+    }
+    
+    /**
+     * <p>Returns a hash code for this CollationKey. The hash value is calculated 
+     * on the key itself, not the String from which the key was created. Thus 
+     * if x and y are CollationKeys, then x.hashCode(x) == y.hashCode() 
+     * if x.equals(y) is true. This allows language-sensitive comparison in a 
+     * hash table.
+     * </p>
+     * @return the hash value.
+     * @stable ICU 2.8
+     */
+    public int hashCode() {
+        return key.hashCode();
+    }
+
+    /**
+     * Return a description of the CollationKey.
+     * @return a description of the CollationKey, used for debugging
+     * @stable ICU 3.4.2
+     */
+    public String toString() {
+        return key.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java
new file mode 100644
index 0000000..38f680d
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java
@@ -0,0 +1,565 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.Comparator;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+* <p>Collator performs locale-sensitive string comparison.</p>
+*
+* <p>Following the <a href=http://www.unicode.org>Unicode
+* Consortium</a>'s specifications for the
+* <a href="http://www.unicode.org/unicode/reports/tr10/"> Unicode Collation
+* Algorithm (UCA)</a>, there are 5 different levels of strength used
+* in comparisons:
+*
+* <ul>
+* <li>PRIMARY strength: Typically, this is used to denote differences between
+*     base characters (for example, "a" &lt; "b").
+*     It is the strongest difference. For example, dictionaries are divided
+*     into different sections by base character.
+* <li>SECONDARY strength: Accents in the characters are considered secondary
+*     differences (for example, "as" &lt; "&agrave;s" &lt; "at"). Other
+*     differences
+*     between letters can also be considered secondary differences, depending
+*     on the language. A secondary difference is ignored when there is a
+*     primary difference anywhere in the strings.
+* <li>TERTIARY strength: Upper and lower case differences in characters are
+*     distinguished at tertiary strength (for example, "ao" &lt; "Ao" &lt;
+*     "a&ograve;"). In addition, a variant of a letter differs from the base
+*     form on the tertiary strength (such as "A" and "&#9398;"). Another
+*     example is the
+*     difference between large and small Kana. A tertiary difference is ignored
+*     when there is a primary or secondary difference anywhere in the strings.
+* <li>QUATERNARY strength: When punctuation is ignored
+*     <a href="http://www.icu-project.org/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+*     (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY
+*     strength, an additional strength level can
+*     be used to distinguish words with and without punctuation (for example,
+*     "ab" &lt; "a-b" &lt; "aB").
+*     This difference is ignored when there is a PRIMARY, SECONDARY or TERTIARY
+*     difference. The QUATERNARY strength should only be used if ignoring
+*     punctuation is required.
+* <li>IDENTICAL strength:
+*     When all other strengths are equal, the IDENTICAL strength is used as a
+*     tiebreaker. The Unicode code point values of the NFD form of each string
+*     are compared, just in case there is no difference.
+*     For example, Hebrew cantellation marks are only distinguished at this
+*     strength. This strength should be used sparingly, as only code point
+*     value differences between two strings is an extremely rare occurrence.
+*     Using this strength substantially decreases the performance for both
+*     comparison and collation key generation APIs. This strength also
+*     increases the size of the collation key.
+* </ul>
+*
+* Unlike the JDK, ICU4J's Collator deals only with 2 decomposition modes,
+* the canonical decomposition mode and one that does not use any decomposition.
+* The compatibility decomposition mode, java.text.Collator.FULL_DECOMPOSITION
+* is not supported here. If the canonical
+* decomposition mode is set, the Collator handles un-normalized text properly,
+* producing the same results as if the text were normalized in NFD. If
+* canonical decomposition is turned off, it is the user's responsibility to
+* ensure that all text is already in the appropriate form before performing
+* a comparison or before getting a CollationKey.</p>
+*
+* <p>For more information about the collation service see the
+* <a href="http://www.icu-project.org/userguide/Collate_Intro.html">users
+* guide</a>.</p>
+*
+* <p>Examples of use
+* <pre>
+* // Get the Collator for US English and set its strength to PRIMARY
+* Collator usCollator = Collator.getInstance(Locale.US);
+* usCollator.setStrength(Collator.PRIMARY);
+* if (usCollator.compare("abc", "ABC") == 0) {
+*     System.out.println("Strings are equivalent");
+* }
+*
+* The following example shows how to compare two strings using the
+* Collator for the default locale.
+*
+* // Compare two strings in the default locale
+* Collator myCollator = Collator.getInstance();
+* myCollator.setDecomposition(NO_DECOMPOSITION);
+* if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*     System.out.println("&agrave;&#92;u0325 is not equals to a&#92;u0325&#768; without decomposition");
+*     myCollator.setDecomposition(CANONICAL_DECOMPOSITION);
+*     if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*         System.out.println("Error: &agrave;&#92;u0325 should be equals to a&#92;u0325&#768; with decomposition");
+*     }
+*     else {
+*         System.out.println("&agrave;&#92;u0325 is equals to a&#92;u0325&#768; with decomposition");
+*     }
+* }
+* else {
+*     System.out.println("Error: &agrave;&#92;u0325 should be not equals to a&#92;u0325&#768; without decomposition");
+* }
+* </pre>
+* </p>
+* @see CollationKey
+* @author Syn Wee Quek
+* @stable ICU 2.8
+*/
+public class Collator implements Comparator, Cloneable
+{
+    /**
+     * @internal
+     */
+    private final java.text.Collator collator;
+
+    /**
+     * @internal
+     */
+    private Collator(java.text.Collator delegate) {
+        this.collator = delegate;
+    }
+
+    /**
+     * Create a collator with a null delegate.
+     * For use by possible subclassers.  This is present since
+     * the original Collator is abstract, and so, in theory
+     * subclassable.  All member APIs must be overridden.
+     */
+    protected Collator() {
+        this.collator = null;
+    }
+
+    // public data members ---------------------------------------------------
+
+    /**
+     * Strongest collator strength value. Typically used to denote differences
+     * between base characters. See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int PRIMARY = java.text.Collator.PRIMARY;
+
+    /**
+     * Second level collator strength value.
+     * Accents in the characters are considered secondary differences.
+     * Other differences between letters can also be considered secondary
+     * differences, depending on the language.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int SECONDARY = java.text.Collator.SECONDARY;
+
+    /**
+     * Third level collator strength value.
+     * Upper and lower case differences in characters are distinguished at this
+     * strength level. In addition, a variant of a letter differs from the base
+     * form on the tertiary level.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int TERTIARY = java.text.Collator.TERTIARY;
+
+    /**
+     * Fourth level collator strength value.
+     * When punctuation is ignored
+     * <a href="http://www.icu-project.org/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+     * (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY
+     * strength, an additional strength level can
+     * be used to distinguish words with and without punctuation.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int QUATERNARY = java.text.Collator.IDENTICAL;
+
+    /**
+     * <p>
+     * Smallest Collator strength value. When all other strengths are equal,
+     * the IDENTICAL strength is used as a tiebreaker. The Unicode code point
+     * values of the NFD form of each string are compared, just in case there
+     * is no difference.
+     * See class documentation for more explanation.
+     * </p>
+     * <p>
+     * Note this value is different from JDK's
+     * </p>
+     * @stable ICU 2.8
+     */
+    public final static int IDENTICAL = java.text.Collator.FULL_DECOMPOSITION;
+
+    /**
+     * This is for backwards compatibility with Java APIs only.  It
+     * should not be used, IDENTICAL should be used instead.  ICU's
+     * collation does not support Java's FULL_DECOMPOSITION mode.
+     * @stable ICU 3.4
+     * @deprecated Backwards compatibility with Java only.
+     */
+    public final static int FULL_DECOMPOSITION = java.text.Collator.FULL_DECOMPOSITION;
+
+    /**
+     * <p>Decomposition mode value. With NO_DECOMPOSITION set, Strings
+     * will not be decomposed for collation. This is the default
+     * decomposition setting unless otherwise specified by the locale
+     * used to create the Collator.</p>
+     *
+     * <p><strong>Note</strong> this value is different from the JDK's.</p>
+     * @see #CANONICAL_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @stable ICU 2.8
+     */
+    public final static int NO_DECOMPOSITION = java.text.Collator.NO_DECOMPOSITION;
+
+    /**
+     * <p>Decomposition mode value. With CANONICAL_DECOMPOSITION set,
+     * characters that are canonical variants according to the Unicode standard
+     * will be decomposed for collation.</p>
+     *
+     * <p>CANONICAL_DECOMPOSITION corresponds to Normalization Form D as
+     * described in <a href="http://www.unicode.org/unicode/reports/tr15/">
+     * Unicode Technical Report #15</a>.
+     * </p>
+     * @see #NO_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @stable ICU 2.8
+     */
+    public final static int CANONICAL_DECOMPOSITION = java.text.Collator.CANONICAL_DECOMPOSITION;
+
+    // public methods --------------------------------------------------------
+
+    // public setters --------------------------------------------------------
+
+    /**
+     * <p>Sets this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant
+     * during comparison.</p>
+     *
+     * <p>The default strength for the Collator is TERTIARY, unless specified
+     * otherwise by the locale used to create the Collator.</p>
+     *
+     * <p>See the Collator class description for an example of use.</p>
+     * @param newStrength the new strength value.
+     * @see #getStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @exception IllegalArgumentException if the new strength value is not one
+     *                of PRIMARY, SECONDARY, TERTIARY, QUATERNARY or IDENTICAL.
+     * @stable ICU 2.8
+     */
+    public void setStrength(int newStrength) {
+        collator.setStrength(newStrength);
+    }
+
+    /**
+     * <p>Set the decomposition mode of this Collator.  Setting this
+     * decomposition property with CANONICAL_DECOMPOSITION allows the
+     * Collator to handle un-normalized text properly, producing the
+     * same results as if the text were normalized. If
+     * NO_DECOMPOSITION is set, it is the user's responsibility to
+     * insure that all text is already in the appropriate form before
+     * a comparison or before getting a CollationKey. Adjusting
+     * decomposition mode allows the user to select between faster and
+     * more complete collation behavior.</p>
+     *
+     * <p>Since a great many of the world's languages do not require
+     * text normalization, most locales set NO_DECOMPOSITION as the
+     * default decomposition mode.</p>
+     *
+     * The default decompositon mode for the Collator is
+     * NO_DECOMPOSITON, unless specified otherwise by the locale used
+     * to create the Collator.</p>
+     *
+     * <p>See getDecomposition for a description of decomposition
+     * mode.</p>
+     *
+     * @param decomposition the new decomposition mode
+     * @see #getDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @exception IllegalArgumentException If the given value is not a valid
+     *            decomposition mode.
+     * @stable ICU 2.8
+     */
+    public void setDecomposition(int decomposition) {
+        collator.setDecomposition(decomposition);
+    }
+
+    // public getters --------------------------------------------------------
+
+    /**
+     * Gets the Collator for the current default locale.
+     * The default locale is determined by java.util.Locale.getDefault().
+     * @return the Collator for the default locale (for example, en_US) if it
+     *         is created successfully. Otherwise if there is no Collator
+     *         associated with the current locale, the default UCA collator
+     *         will be returned.
+     * @see java.util.Locale#getDefault()
+     * @see #getInstance(Locale)
+     * @stable ICU 2.8
+     */
+    public static final Collator getInstance() {
+        return new Collator(java.text.Collator.getInstance());
+    }
+
+     /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance(Locale)
+     * @see #getInstance()
+     * @stable ICU 3.4.3
+     */
+    public static final Collator getInstance(ULocale locale) {
+        return getInstance(locale.toLocale());
+    }
+
+    /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance(ULocale)
+     * @see #getInstance()
+     * @stable ICU 2.8
+     */
+    public static final Collator getInstance(Locale locale) {
+        return new Collator(java.text.Collator.getInstance(locale));
+    }
+
+     /**
+     * Get the set of locales, as Locale objects, for which collators
+     * are installed.  Note that Locale objects do not support RFC 3066.
+     * @return the list of locales in which collators are installed.
+     * This list includes any that have been registered, in addition to
+     * those that are installed with ICU4J.
+     * @stable ICU 2.4
+     */
+    public static Locale[] getAvailableLocales() {
+        return java.text.Collator.getAvailableLocales();
+    }
+
+    /**
+     * Get the set of locales, as ULocale objects, for which collators
+     * are installed.  ULocale objects support RFC 3066.
+     * @return the list of locales in which collators are installed.
+     * This list includes any that have been registered, in addition to
+     * those that are installed with ICU4J.
+     * @stable ICU 3.4.3
+     */
+    public static final ULocale[] getAvailableULocales() {
+        Locale[] locales = java.text.Collator.getAvailableLocales();
+        ULocale[] ulocales = new ULocale[locales.length];
+        for (int i = 0; i < locales.length; ++i) {
+            ulocales[i] = ULocale.forLocale(locales[i]);
+        }
+        return ulocales;
+    }
+ 
+    /**
+     * Return an array of all possible keywords that are relevant to
+     * collation. At this point, the only recognized keyword for this
+     * service is "collation".
+     * @return an array of valid collation keywords.
+     * @see #getKeywordValues
+     * @stable ICU 3.0
+     */
+    public static final String[] getKeywords() {
+        return new String[0];
+    }
+    
+    /**
+     * Given a keyword, return an array of all values for
+     * that keyword that are currently in use.
+     * @param keyword one of the keywords returned by getKeywords.
+     * @see #getKeywords
+     * @stable ICU 3.0
+     */
+    public static final String[] getKeywordValues(String keyword) {
+        return new String[0];
+    }
+
+    /**
+     * <p>Returns this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return this Collator's current strength property.
+     * @see #setStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @stable ICU 2.8
+     */
+    public int getStrength() {
+        return collator.getStrength();
+    }
+
+    /**
+     * <p>
+     * Get the decomposition mode of this Collator. Decomposition mode
+     * determines how Unicode composed characters are handled.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return the decomposition mode
+     * @see #setDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @stable ICU 2.8
+     */
+    public int getDecomposition() {
+        return collator.getDecomposition();
+    }
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     *            IllegalArgumentException thrown if either source or target is
+     *            not of the class String.
+     * @stable ICU 2.8
+     */
+    public int compare(Object source, Object target) {
+        return collator.compare(source, target);
+    }
+
+    // public other methods -------------------------------------------------
+
+    /**
+     * Convenience method for comparing the equality of two text Strings using
+     * this Collator's rules, strength and decomposition mode.
+     * @param source the source string to be compared.
+     * @param target the target string to be compared.
+     * @return true if the strings are equal according to the collation
+     *         rules, otherwise false.
+     * @see #compare
+     * @exception NullPointerException thrown if either arguments is null.
+     * @stable ICU 2.8
+     */
+    public boolean equals(String source, String target) {
+        return (compare(source, target) == 0);
+    }
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     * @stable ICU 2.8
+     */
+    public int compare(String source, String target) {
+        return collator.compare(source, target);
+    }
+
+    /**
+     * <p>
+     * Transforms the String into a CollationKey suitable for efficient
+     * repeated comparison.  The resulting key depends on the collator's
+     * rules, strength and decomposition mode.
+     * </p>
+     * <p>See the CollationKey class documentation for more information.</p>
+     * @param source the string to be transformed into a CollationKey.
+     * @return the CollationKey for the given String based on this Collator's
+     *         collation rules. If the source String is null, a null
+     *         CollationKey is returned.
+     * @see CollationKey
+     * @see #compare(String, String)
+     * @stable ICU 2.8
+     */
+    public CollationKey getCollationKey(String source) {
+        return new CollationKey(collator.getCollationKey(source));
+    }
+    
+    /**
+     * Return a string suitable for debugging.
+     * @return a string suitable for debugging
+     * @stable ICU 3.4.3
+     */
+    public String toString() {
+        return collator.toString();
+    }
+
+   /**
+     * Clone the collator.
+     * @return a clone of this collator.
+     * @stable ICU 2.6
+     */
+    public Object clone() throws CloneNotSupportedException {
+        return new Collator((java.text.Collator)collator.clone());
+    }
+
+    /**
+     * Return true if rhs is a Collator and compares the same as this.
+     * @return true if rhs equals this
+     * @stable ICU 3.4.3
+     */
+    public boolean equals(Object rhs) {
+        try {
+            return collator.equals(((Collator)rhs).collator);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * Return a hashCode.
+     * @return a hashCode
+     * @stable ICU 3.4.3
+     */
+    public int hashCode() {
+        return collator.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java
new file mode 100644
index 0000000..dce51f1
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java
@@ -0,0 +1,983 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * DateFormat is an abstract class for date/time formatting subclasses which
+ * formats and parses dates or time in a language-independent manner.
+ * The date/time formatting subclass, such as SimpleDateFormat, allows for
+ * formatting (i.e., date -> text), parsing (text -> date), and
+ * normalization.  The date is represented as a <code>Date</code> object or
+ * as the milliseconds since January 1, 1970, 00:00:00 GMT.
+ *
+ * <p>DateFormat provides many class methods for obtaining default date/time
+ * formatters based on the default or a given loacle and a number of formatting
+ * styles. The formatting styles include FULL, LONG, MEDIUM, and SHORT. More
+ * detail and examples of using these styles are provided in the method
+ * descriptions.
+ *
+ * <p>DateFormat helps you to format and parse dates for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * months, days of the week, or even the calendar format: lunar vs. solar.
+ *
+ * <p>To format a date for the current Locale, use one of the
+ * static factory methods:
+ * <pre>
+ *  myString = DateFormat.getDateInstance().format(myDate);
+ * </pre>
+ * <p>If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance();
+ *  for (int i = 0; i < a.length; ++i) {
+ *    output.println(df.format(myDate[i]) + "; ");
+ *  }
+ * </pre>
+ * <p>To format a number for a different Locale, specify it in the
+ * call to getDateInstance().
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
+ * </pre>
+ * <p>You can use a DateFormat to parse also.
+ * <pre>
+ *  myDate = df.parse(myString);
+ * </pre>
+ * <p>Use getDateInstance to get the normal date format for that country.
+ * There are other static factory methods available.
+ * Use getTimeInstance to get the time format for that country.
+ * Use getDateTimeInstance to get a date and time format. You can pass in 
+ * different options to these factory methods to control the length of the
+ * result; from SHORT to MEDIUM to LONG to FULL. The exact result depends
+ * on the locale, but generally:
+ * <ul><li>SHORT is completely numeric, such as 12.13.52 or 3:30pm
+ * <li>MEDIUM is longer, such as Jan 12, 1952
+ * <li>LONG is longer, such as January 12, 1952 or 3:30:32pm
+ * <li>FULL is pretty completely specified, such as
+ * Tuesday, April 12, 1952 AD or 3:30:42pm PST.
+ * </ul>
+ *
+ * <p>You can also set the time zone on the format if you wish.
+ * If you want even more control over the format or parsing,
+ * (or want to give your users more control),
+ * you can try casting the DateFormat you get from the factory methods
+ * to a SimpleDateFormat. This will work for the majority
+ * of countries; just remember to put it in a try block in case you
+ * encounter an unusual one.
+ *
+ * <p>You can also use forms of the parse and format methods with
+ * ParsePosition and FieldPosition to
+ * allow you to
+ * <ul><li>progressively parse through pieces of a string.
+ * <li>align any particular field, or find out where it is for selection
+ * on the screen.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate 
+ * format instances for each thread. If multiple threads access a format 
+ * concurrently, it must be synchronized externally. 
+ *
+ * @see          UFormat
+ * @see          NumberFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class DateFormat extends Format {
+    private static final long serialVersionUID = 1;
+
+    /**
+     * @internal
+     */
+    public final java.text.DateFormat dateFormat;
+        
+    /**
+     * @internal
+     * @param delegate the DateFormat to which to delegate
+     */
+    public DateFormat(java.text.DateFormat delegate) {
+        this.dateFormat = delegate;
+    }
+    
+    /**
+     * For subclass use.  Subclasses will generally not
+     * work correctly unless they manipulate the delegate.
+     */
+    protected DateFormat() {
+        this.dateFormat = java.text.DateFormat.getInstance();
+    }
+
+    /**
+     * FieldPosition selector for 'G' field alignment,
+     * corresponding to the {@link Calendar#ERA} field.
+     * @stable ICU 2.0
+     */
+    public final static int ERA_FIELD = 0;
+
+    /**
+     * FieldPosition selector for 'y' field alignment,
+     * corresponding to the {@link Calendar#YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int YEAR_FIELD = 1;
+
+    /**
+     * FieldPosition selector for 'M' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int MONTH_FIELD = 2;
+
+    /**
+     * FieldPosition selector for 'd' field alignment,
+     * corresponding to the {@link Calendar#DATE} field.
+     * @stable ICU 2.0
+     */
+    public final static int DATE_FIELD = 3;
+
+    /**
+     * FieldPosition selector for 'k' field alignment,
+     * corresponding to the {@link Calendar#HOUR_OF_DAY} field.
+     * HOUR_OF_DAY1_FIELD is used for the one-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 24:59.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY1_FIELD = 4;
+
+    /**
+     * FieldPosition selector for 'H' field alignment,
+     * corresponding to the {@link Calendar#HOUR_OF_DAY} field.
+     * HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 00:59.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY0_FIELD = 5;
+
+    /**
+     * FieldPosition selector for 'm' field alignment,
+     * corresponding to the {@link Calendar#MINUTE} field.
+     * @stable ICU 2.0
+     */
+    public final static int MINUTE_FIELD = 6;
+
+    /**
+     * FieldPosition selector for 's' field alignment,
+     * corresponding to the {@link Calendar#SECOND} field.
+     * @stable ICU 2.0
+     */
+    public final static int SECOND_FIELD = 7;
+
+    /**
+     * FieldPosition selector for 'S' field alignment,
+     * corresponding to the {@link Calendar#MILLISECOND} field.
+     * @stable ICU 3.0
+     */
+    public final static int FRACTIONAL_SECOND_FIELD = 8;
+
+    /**
+     * Alias for FRACTIONAL_SECOND_FIELD.
+     * @stable ICU 3.4.3
+     */
+    public final static int MILLISECOND_FIELD = FRACTIONAL_SECOND_FIELD;
+
+    /**
+     * FieldPosition selector for 'E' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_FIELD = 9;
+
+    /**
+     * FieldPosition selector for 'D' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_YEAR_FIELD = 10;
+
+    /**
+     * FieldPosition selector for 'F' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK_IN_MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH_FIELD = 11;
+
+    /**
+     * FieldPosition selector for 'w' field alignment,
+     * corresponding to the {@link Calendar#WEEK_OF_YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_YEAR_FIELD = 12;
+
+    /**
+     * FieldPosition selector for 'W' field alignment,
+     * corresponding to the {@link Calendar#WEEK_OF_MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_MONTH_FIELD = 13;
+
+    /**
+     * FieldPosition selector for 'a' field alignment,
+     * corresponding to the {@link Calendar#AM_PM} field.
+     * @stable ICU 2.0
+     */
+    public final static int AM_PM_FIELD = 14;
+
+    /**
+     * FieldPosition selector for 'h' field alignment,
+     * corresponding to the {@link Calendar#HOUR} field.
+     * HOUR1_FIELD is used for the one-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 12:30 AM.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR1_FIELD = 15;
+
+    /**
+     * FieldPosition selector for 'K' field alignment,
+     * corresponding to the {@link Calendar#HOUR} field.
+     * HOUR0_FIELD is used for the zero-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 00:30 AM.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR0_FIELD = 16;
+
+    /**
+     * FieldPosition selector for 'z' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.
+     * @stable ICU 2.0
+     */
+    public final static int TIMEZONE_FIELD = 17;
+
+    /**
+     * Overrides Format.
+     * Formats a time object into a time string. Examples of time objects
+     * are a time value expressed in milliseconds and a Date object.
+     * @param obj must be a Number or a Date or a Calendar.
+     * @param toAppendTo the string buffer for the returning time string.
+     * @return the formatted time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @see java.text.Format
+     * @stable ICU 2.0
+     */
+    public final StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+        if (obj instanceof Calendar) {
+            return format((Calendar)obj, toAppendTo, fieldPosition);
+        } else if (obj instanceof Date) {
+            return format((Date)obj, toAppendTo, fieldPosition);
+        } else if (obj instanceof Number) {
+            return format(new Date(((Number)obj).longValue()), toAppendTo, fieldPosition );
+        } else {
+            throw new IllegalArgumentException("Cannot format given Object as a Date");
+        }
+    }
+
+    /**
+     * Formats a date into a date/time string.
+     * @param cal a Calendar set to the date and time to be formatted
+     * into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+        return format(cal.getTime(), toAppendTo, fieldPosition);
+    }
+    
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date a Date to be formatted into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+        return dateFormat.format(date, toAppendTo, fieldPosition);
+    }
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date the time value to be formatted into a time string.
+     * @return the formatted time string.
+     * @stable ICU 2.0
+     */
+    public final String format(Date date) {
+        return dateFormat.format(date);
+    }
+
+    /**
+     * Parse a date/time string.
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @return      A Date, or null if the input could not be parsed
+     *
+     * @exception  ParseException  If the given string cannot be parsed as a date.
+     *
+     * @see #parse(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Date parse(String text) throws ParseException {
+        return dateFormat.parse(text);
+    }
+
+    /**
+     * Parse a date/time string according to the given parse position.
+     * For example, a time text "07/10/96 4:5 PM, PDT" will be parsed
+     * into a Calendar that is equivalent to Date(837039928046).  The
+     * caller should clear the calendar before calling this method,
+     * unless existing field information is to be kept.
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param cal   The calendar into which parsed data will be stored.
+     *              In general, this should be cleared before calling this
+     *              method.  If this parse fails, the calendar may still
+     *              have been modified.
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     * @stable ICU 2.0
+     */
+    public void parse(String text, Calendar cal, ParsePosition pos) {
+        Date result = dateFormat.parse(text, pos);
+        cal.setTime(result);
+    }
+
+    /**
+     * Parse a date/time string according to the given parse position.  For
+     * example, a time text "07/10/96 4:5 PM, PDT" will be parsed into a Date
+     * that is equivalent to Date(837039928046).
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     *
+     * @return      A Date, or null if the input could not be parsed
+     * @stable ICU 2.0
+     */
+    public Date parse(String text, ParsePosition pos) {
+        return dateFormat.parse(text, pos);
+    }
+
+    /**
+     * Parse a date/time string into an Object.  This convenience method simply
+     * calls parse(String, ParsePosition).
+     *
+     * @see #parse(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        return parse(source, pos);
+    }
+
+    /**
+     * Constant for full style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int FULL = 0;
+
+    /**
+     * Constant for long style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int LONG = 1;
+
+    /**
+     * Constant for medium style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int MEDIUM = 2;
+
+    /**
+     * Constant for short style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int SHORT = 3;
+
+    /**
+     * Constant for default style pattern.  Its value is MEDIUM.
+     * @stable ICU 2.0
+     */
+    public static final int DEFAULT = MEDIUM;
+
+    /**
+     * Gets the time formatter with the default formatting style
+     * for the default locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance() {
+        return new DateFormat(java.text.DateFormat.getTimeInstance());
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance(int style) {
+        return new DateFormat(java.text.DateFormat.getTimeInstance(style));
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param aLocale the given locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance(int style, Locale aLocale) {
+        return new DateFormat(java.text.DateFormat.getTimeInstance(style, aLocale));
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param aLocale the given locale.
+     * @return a time formatter.
+     * @stable ICU 3.2
+     */
+    public final static DateFormat getTimeInstance(int style, ULocale aLocale) {
+        return new DateFormat(java.text.DateFormat.getTimeInstance(style, aLocale.toLocale()));
+    }
+
+    /**
+     * Gets the date formatter with the default formatting style
+     * for the default locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance() {
+        return new DateFormat(java.text.DateFormat.getDateInstance());
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance(int style) {
+        return new DateFormat(java.text.DateFormat.getDateInstance(style));
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param aLocale the given locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance(int style, Locale aLocale) {
+        return new DateFormat(java.text.DateFormat.getDateInstance(style, aLocale));
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param aLocale the given locale.
+     * @return a date formatter.
+     * @stable ICU 3.4.3
+     */
+    public final static DateFormat getDateInstance(int style, ULocale aLocale) {
+        return new DateFormat(java.text.DateFormat.getDateInstance(style, aLocale.toLocale()));
+    }
+
+    /**
+     * Gets the date/time formatter with the default formatting style
+     * for the default locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance() {
+        return new DateFormat(java.text.DateFormat.getDateTimeInstance());
+    }
+
+    /**
+     * Gets the date/time formatter with the given date and time
+     * formatting styles for the default locale.
+     * @param dateStyle the given date formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param timeStyle the given time formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle) {
+        return new DateFormat(java.text.DateFormat.getDateTimeInstance(dateStyle, timeStyle));
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param aLocale the given locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale) {
+        return new DateFormat(java.text.DateFormat.getDateTimeInstance(dateStyle, timeStyle, aLocale));
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param aLocale the given locale.
+     * @return a date/time formatter.
+     * @stable ICU 3.4.3
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, ULocale aLocale) {
+        return new DateFormat(java.text.DateFormat.getDateTimeInstance(dateStyle, timeStyle, aLocale.toLocale()));
+    }
+
+    /**
+     * Get a default date/time formatter that uses the SHORT style for both the
+     * date and the time.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getInstance() {
+        return new DateFormat(java.text.DateFormat.getInstance());
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales() {
+        return java.text.DateFormat.getAvailableLocales();
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     * @stable ICU 3.4.3
+     */
+    public static ULocale[] getAvailableULocales() {
+        Locale[] locales = java.text.DateFormat.getAvailableLocales();
+        ULocale[] ulocales = new ULocale[locales.length];
+        for (int i = 0; i < locales.length; ++i) {
+            ulocales[i] = ULocale.forLocale(locales[i]);
+        }
+        return ulocales;
+    }
+
+    /**
+     * Set the calendar to be used by this date format.  Initially, the default
+     * calendar for the specified or default locale is used.
+     * @param newCalendar the new Calendar to be used by the date format
+     * @stable ICU 2.0
+     */
+    public void setCalendar(Calendar newCalendar) {
+        dateFormat.setCalendar(newCalendar.calendar);
+    }
+
+    /**
+     * Gets the calendar associated with this date/time formatter.
+     * @return the calendar associated with this date/time formatter.
+     * @stable ICU 2.0
+     */
+    public Calendar getCalendar() {
+        return new Calendar(dateFormat.getCalendar());
+    }
+
+    /**
+     * Allows you to set the number formatter.
+     * @param newNumberFormat the given new NumberFormat.
+     * @stable ICU 2.0
+     */
+    public void setNumberFormat(NumberFormat newNumberFormat) {
+        dateFormat.setNumberFormat(newNumberFormat.numberFormat);
+    }
+
+    /**
+     * Gets the number formatter which this date/time formatter uses to
+     * format and parse a time.
+     * @return the number formatter which this date/time formatter uses.
+     * @stable ICU 2.0
+     */
+    public NumberFormat getNumberFormat() {
+        return new NumberFormat(dateFormat.getNumberFormat());
+    }
+
+    /**
+     * Sets the time zone for the calendar of this DateFormat object.
+     * @param zone the given new time zone.
+     * @stable ICU 2.0
+     */
+    public void setTimeZone(TimeZone zone) {
+        dateFormat.setTimeZone(zone.timeZone);
+    }
+
+    /**
+     * Gets the time zone.
+     * @return the time zone associated with the calendar of DateFormat.
+     * @stable ICU 2.0
+     */
+    public TimeZone getTimeZone() {
+        return new TimeZone(dateFormat.getTimeZone());
+    }
+
+    /**
+     * Specify whether or not date/time parsing is to be lenient.  With
+     * lenient parsing, the parser may use heuristics to interpret inputs that
+     * do not precisely match this object's format.  With strict parsing,
+     * inputs must match this object's format.
+     * @param lenient when true, parsing is lenient
+     * @see com.ibm.icu.util.Calendar#setLenient
+     * @stable ICU 2.0
+     */
+    public void setLenient(boolean lenient) {
+        dateFormat.setLenient(lenient);
+    }
+
+    /**
+     * Tell whether date/time parsing is to be lenient.
+     * @stable ICU 2.0
+     */
+    public boolean isLenient() {
+        return dateFormat.isLenient();
+    }
+   
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, Locale locale) {
+        DateFormat df = getDateInstance(dateStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, ULocale locale) {
+        DateFormat df = getDateInstance(dateStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+      
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, Locale locale) {
+        DateFormat df = getTimeInstance(timeStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, ULocale locale) {
+        DateFormat df = getTimeInstance(timeStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+       
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                       int timeStyle, Locale locale) {
+        DateFormat df = getDateTimeInstance(dateStyle, timeStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                       int timeStyle, ULocale locale) {
+        DateFormat df = getDateTimeInstance(dateStyle, timeStyle, locale);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getInstance(Calendar cal, Locale locale) {
+        return getDateTimeInstance(cal, MEDIUM, SHORT, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 3.2
+     */
+    public static final DateFormat getInstance(Calendar cal, ULocale locale) {
+        return getDateTimeInstance(cal, MEDIUM, SHORT, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    public static final DateFormat getInstance(Calendar cal) {
+        return getDateTimeInstance(cal, MEDIUM, SHORT, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    public static final DateFormat getDateInstance(Calendar cal, int dateStyle) {
+        DateFormat df = getDateInstance(dateStyle);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle) {
+        DateFormat df = getTimeInstance(timeStyle);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle, int timeStyle) {
+        DateFormat df = getDateTimeInstance(dateStyle, timeStyle);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    /**
+     * Return a string suitable for debugging.
+     * @return a string suitable for debugging
+     * @stable ICU 3.4.3
+     */
+    public String toString() {
+        return dateFormat.toString();
+    }
+        
+    /**
+     * Return a clone of this DateFormat.
+     * @return a clone of this DateFormat
+     * @stable ICU 3.4.3
+     */
+    public Object clone() {
+        return new DateFormat((java.text.DateFormat)dateFormat.clone());
+    }
+
+    /**
+     * Return true if rhs is a DateFormatSymbols and has the same symbols as this.
+     * @return true if rhs equals this
+     * @stable ICU 3.4.3
+     */
+    public boolean equals(Object arg0) {
+        try {
+            return dateFormat.equals(((DateFormat)arg0).dateFormat);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Return a hashCode.
+     * @return a hashCode
+     * @stable ICU 3.4.3
+     */
+    public int hashCode() {
+        return dateFormat.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java
new file mode 100644
index 0000000..76319cd
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java
@@ -0,0 +1,302 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.Serializable;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>DateFormatSymbols</code> is a public class for encapsulating
+ * localizable date-time formatting data, such as the names of the
+ * months, the names of the days of the week, and the time zone data.
+ * <code>DateFormat</code> and <code>SimpleDateFormat</code> both use
+ * <code>DateFormatSymbols</code> to encapsulate this information.
+ *
+ * <p>
+ * Typically you shouldn't use <code>DateFormatSymbols</code> directly.
+ * Rather, you are encouraged to create a date-time formatter with the
+ * <code>DateFormat</code> class's factory methods: <code>getTimeInstance</code>,
+ * <code>getDateInstance</code>, or <code>getDateTimeInstance</code>.
+ * These methods automatically create a <code>DateFormatSymbols</code> for
+ * the formatter so that you don't have to. After the
+ * formatter is created, you may modify its format pattern using the
+ * <code>setPattern</code> method. For more information about
+ * creating formatters using <code>DateFormat</code>'s factory methods,
+ * see {@link DateFormat}.
+ *
+ * <p>
+ * If you decide to create a date-time formatter with a specific
+ * format pattern for a specific locale, you can do so with:
+ * <blockquote>
+ * <pre>
+ * new SimpleDateFormat(aPattern, new DateFormatSymbols(aLocale)).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * <code>DateFormatSymbols</code> objects are clonable. When you obtain
+ * a <code>DateFormatSymbols</code> object, feel free to modify the
+ * date-time formatting data. For instance, you can replace the localized
+ * date-time format pattern characters with the ones that you feel easy
+ * to remember. Or you can change the representative cities
+ * to your favorite ones.
+ *
+ * <p>
+ * New <code>DateFormatSymbols</code> subclasses may be added to support
+ * <code>SimpleDateFormat</code> for date-time formatting for additional locales.
+
+ * @see          DateFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.SimpleTimeZone
+ * @author       Chen-Lieh Huang
+ * @stable ICU 2.0
+ */
+public class DateFormatSymbols implements Serializable, Cloneable {
+    private static final long serialVersionUID = 1;
+        
+    /** @internal */
+    public java.text.DateFormatSymbols dfs;
+        
+    /** @internal */
+    public DateFormatSymbols(java.text.DateFormatSymbols delegate) {
+        this.dfs = delegate;
+    }
+        
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the default locale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the default locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols() {
+        this(new java.text.DateFormatSymbols());
+    }
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given locale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the specified locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols(Locale locale) {
+        this(new java.text.DateFormatSymbols(locale));
+    }
+        
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given ulocale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the specified locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(ULocale locale) {
+        this(new java.text.DateFormatSymbols(locale.toLocale()));
+    }
+
+    /**
+     * Gets era strings. For example: "AD" and "BC".
+     * @return the era strings.
+     * @stable ICU 2.0
+     */
+    public String[] getEras() {
+        return dfs.getEras();
+    }
+
+    /**
+     * Sets era strings. For example: "AD" and "BC".
+     * @param newEras the new era strings.
+     * @stable ICU 2.0
+     */
+    public void setEras(String[] newEras) {
+        dfs.setEras(newEras);
+    }
+
+    /**
+     * Gets month strings. For example: "January", "February", etc.
+     * @return the month strings.
+     * @stable ICU 2.0
+     */
+    public String[] getMonths() {
+        return dfs.getMonths();
+    }
+
+    /**
+     * Sets month strings. For example: "January", "February", etc.
+     * @param newMonths the new month strings.
+     * @stable ICU 2.0
+     */
+    public void setMonths(String[] newMonths) {
+        dfs.setMonths(newMonths);
+    }
+            
+    /**
+     * Gets short month strings. For example: "Jan", "Feb", etc.
+     * @return the short month strings.
+     * @stable ICU 2.0
+     */
+    public String[] getShortMonths() {
+        return dfs.getShortMonths();
+    }
+
+    /**
+     * Sets short month strings. For example: "Jan", "Feb", etc.
+     * @param newShortMonths the new short month strings.
+     * @stable ICU 2.0
+     */
+    public void setShortMonths(String[] newShortMonths) {
+        dfs.setShortMonths(newShortMonths);
+    }
+
+    /**
+     * Gets weekday strings. For example: "Sunday", "Monday", etc.
+     * @return the weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @stable ICU 2.0
+     */
+    public String[] getWeekdays() {
+        return dfs.getWeekdays();
+    }
+
+    /**
+     * Sets weekday strings. For example: "Sunday", "Monday", etc.
+     * @param newWeekdays the new weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * @stable ICU 2.0
+     */
+    public void setWeekdays(String[] newWeekdays) {
+        dfs.setWeekdays(newWeekdays);
+    }
+
+    /**
+     * Gets short weekday strings. For example: "Sun", "Mon", etc.
+     * @return the short weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @stable ICU 2.0
+     */
+    public String[] getShortWeekdays() {
+        return dfs.getShortWeekdays();
+    }
+
+    /**
+     * Sets short weekday strings. For example: "Sun", "Mon", etc.
+     * @param newShortWeekdays the new short weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * @stable ICU 2.0
+     */
+    public void setShortWeekdays(String[] newShortWeekdays) {
+        dfs.setShortWeekdays(newShortWeekdays);
+    }
+
+    /**
+     * Gets ampm strings. For example: "AM" and "PM".
+     * @return the weekday strings.
+     * @stable ICU 2.0
+     */
+    public String[] getAmPmStrings() {
+        return dfs.getAmPmStrings();
+    }
+
+    /**
+     * Sets ampm strings. For example: "AM" and "PM".
+     * @param newAmpms the new ampm strings.
+     * @stable ICU 2.0
+     */
+    public void setAmPmStrings(String[] newAmpms) {
+        dfs.setAmPmStrings(newAmpms);
+    }
+
+    /**
+     * Gets timezone strings.
+     * @return the timezone strings.
+     * @stable ICU 2.0
+     */
+    public String[][] getZoneStrings() {
+        return dfs.getZoneStrings();
+    }
+
+    /**
+     * Sets timezone strings.
+     * @param newZoneStrings the new timezone strings.
+     * @stable ICU 2.0
+     */
+    public void setZoneStrings(String[][] newZoneStrings) {
+        dfs.setZoneStrings(newZoneStrings);
+    }
+
+    /**
+     * Gets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @return the localized date-time pattern characters.
+     * @stable ICU 2.0
+     */
+    public String getLocalPatternChars() {
+        return dfs.getLocalPatternChars();
+    }
+
+    /**
+     * Sets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @param newLocalPatternChars the new localized date-time
+     * pattern characters.
+     * @stable ICU 2.0
+     */
+    public void setLocalPatternChars(String newLocalPatternChars) {
+        dfs.setLocalPatternChars(newLocalPatternChars);
+    }
+
+    /**
+     * Return a string suitable for debugging.
+     * @return a string suitable for debugging
+     * @stable ICU 3.4.2
+     */
+    public String toString() {
+        return dfs.toString();
+    }
+        
+    /**
+     * Return a clone of this DateFormatSymbols.
+     * @return a clone of this DateFormatSymbols
+     * @stable ICU 3.4.2
+     */
+    public Object clone() {
+        return new DateFormatSymbols((java.text.DateFormatSymbols)dfs.clone());
+    }
+
+    /**
+     * Return true if rhs is a DateFormatSymbols and has the same symbols as this.
+     * @return true if rhs equals this
+     * @stable ICU 3.4.2
+     */
+    public boolean equals(Object rhs) {
+        try {
+            return dfs.equals(((DateFormatSymbols)rhs).dfs);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Return a hashCode.
+     * @return a hashCode
+     * @stable ICU 3.4.2
+     */
+    public int hashCode() {
+        return dfs.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java
new file mode 100644
index 0000000..8a4494f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java
@@ -0,0 +1,903 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * <code>DecimalFormat</code> is a concrete subclass of
+ * {@link NumberFormat} that formats decimal numbers.
+ *
+ * <p>To obtain a {@link NumberFormat} for a specific locale (including the
+ * default locale) call one of <code>NumberFormat</code>'s factory methods such
+ * as {@link NumberFormat#getInstance}. Do not call the <code>DecimalFormat</code>
+ * constructors directly, unless you know what you are doing, since the
+ * {@link NumberFormat} factory methods may return subclasses other than
+ * <code>DecimalFormat</code>. If you need to customize the format object, do
+ * something like this:
+ *
+ * <blockquote><pre>
+ * NumberFormat f = NumberFormat.getInstance(loc);
+ * if (f instanceof DecimalFormat) {
+ *     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
+ * }</pre></blockquote>
+ *
+ * <p><strong>Example Usage</strong>
+ *
+ * <blockquote><pre>
+ * <strong>// Print out a number using the localized number, currency,
+ * // and percent format for each locale</strong>
+ * Locale[] locales = NumberFormat.getAvailableLocales();
+ * double myNumber = -1234.56;
+ * NumberFormat format;
+ * for (int j=0; j<3; ++j) {
+ *     System.out.println("FORMAT");
+ *     for (int i = 0; i < locales.length; ++i) {
+ *         if (locales[i].getCountry().length() == 0) {
+ *            // Skip language-only locales
+ *            continue;
+ *         }
+ *         System.out.print(locales[i].getDisplayName());
+ *         switch (j) {
+ *         case 0:
+ *             format = NumberFormat.getInstance(locales[i]); break;
+ *         case 1:
+ *             format = NumberFormat.getCurrencyInstance(locales[i]); break;
+ *         default:
+ *             format = NumberFormat.getPercentInstance(locales[i]); break;
+ *         }
+ *         try {
+ *             // Assume format is a DecimalFormat
+ *             System.out.print(": " + ((DecimalFormat) format).toPattern()
+ *                              + " -> " + form.format(myNumber));
+ *         } catch (Exception e) {}
+ *         try {
+ *             System.out.println(" -> " + format.parse(form.format(myNumber)));
+ *         } catch (ParseException e) {}
+ *     }
+ * }</pre></blockquote>
+ *
+ * <h4>Patterns</h4>
+ *
+ * <p>A <code>DecimalFormat</code> consists of a <em>pattern</em> and a set of
+ * <em>symbols</em>.  The pattern may be set directly using
+ * {@link #applyPattern}, or indirectly using other API methods which
+ * manipulate aspects of the pattern, such as the minimum number of integer
+ * digits.  The symbols are stored in a {@link DecimalFormatSymbols}
+ * object.  When using the {@link NumberFormat} factory methods, the
+ * pattern and symbols are read from ICU's locale data.
+ * 
+ * <h4>Special Pattern Characters</h4>
+ *
+ * <p>Many characters in a pattern are taken literally; they are matched during
+ * parsing and output unchanged during formatting.  Special characters, on the
+ * other hand, stand for other characters, strings, or classes of characters.
+ * For example, the '#' character is replaced by a localized digit.  Often the
+ * replacement character is the same as the pattern character; in the U.S. locale,
+ * the ',' grouping character is replaced by ','.  However, the replacement is
+ * still happening, and if the symbols are modified, the grouping character
+ * changes.  Some special characters affect the behavior of the formatter by
+ * their presence; for example, if the percent character is seen, then the
+ * value is multiplied by 100 before being displayed.
+ *
+ * <p>To insert a special character in a pattern as a literal, that is, without
+ * any special meaning, the character must be quoted.  There are some exceptions to
+ * this which are noted below.
+ *
+ * <p>The characters listed here are used in non-localized patterns.  Localized
+ * patterns use the corresponding characters taken from this formatter's
+ * {@link DecimalFormatSymbols} object instead, and these characters lose
+ * their special status.  Two exceptions are the currency sign and quote, which
+ * are not localized.
+ *
+ * <blockquote>
+ * <table border=0 cellspacing=3 cellpadding=0 summary="Chart showing symbol,
+ *  location, localized, and meaning.">
+ *   <tr bgcolor="#ccccff">
+ *     <th align=left>Symbol
+ *     <th align=left>Location
+ *     <th align=left>Localized?
+ *     <th align=left>Meaning
+ *   <tr valign=top>
+ *     <td><code>0</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Digit
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>1-9</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         '1' through '9' indicate rounding.
+ *   <tr valign=top>
+ *     <td><code>@</code>
+ *     <td>Number
+ *     <td>No
+ *     <td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         Significant digit
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>#</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Digit, zero shows as absent
+ *   <tr valign=top>
+ *     <td><code>.</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Decimal separator or monetary decimal separator
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>-</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Minus sign
+ *   <tr valign=top>
+ *     <td><code>,</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Grouping separator
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>E</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Separates mantissa and exponent in scientific notation.
+ *         <em>Need not be quoted in prefix or suffix.</em>
+ *   <tr valign=top>
+ *     <td><code>+</code>
+ *     <td>Exponent
+ *     <td>Yes
+ *     <td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         Prefix positive exponents with localized plus sign.
+ *         <em>Need not be quoted in prefix or suffix.</em>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>;</code>
+ *     <td>Subpattern boundary
+ *     <td>Yes
+ *     <td>Separates positive and negative subpatterns
+ *   <tr valign=top>
+ *     <td><code>%</code>
+ *     <td>Prefix or suffix
+ *     <td>Yes
+ *     <td>Multiply by 100 and show as percentage
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>&#92;u2030</code>
+ *     <td>Prefix or suffix
+ *     <td>Yes
+ *     <td>Multiply by 1000 and show as per mille
+ *   <tr valign=top>
+ *     <td><code>&#164;</code> (<code>&#92;u00A4</code>)
+ *     <td>Prefix or suffix
+ *     <td>No
+ *     <td>Currency sign, replaced by currency symbol.  If
+ *         doubled, replaced by international currency symbol.
+ *         If present in a pattern, the monetary decimal separator
+ *         is used instead of the decimal separator.
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>'</code>
+ *     <td>Prefix or suffix
+ *     <td>No
+ *     <td>Used to quote special characters in a prefix or suffix,
+ *         for example, <code>"'#'#"</code> formats 123 to
+ *         <code>"#123"</code>.  To create a single quote
+ *         itself, use two in a row: <code>"# o''clock"</code>.
+ *   <tr valign=top>
+ *     <td><code>*</code>
+ *     <td>Prefix or suffix boundary
+ *     <td>Yes
+ *     <td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         Pad escape, precedes pad character
+ * </table>
+ * </blockquote>
+ *
+ * <p>A <code>DecimalFormat</code> pattern contains a postive and negative
+ * subpattern, for example, "#,##0.00;(#,##0.00)".  Each subpattern has a
+ * prefix, a numeric part, and a suffix.  If there is no explicit negative
+ * subpattern, the negative subpattern is the localized minus sign prefixed to the
+ * positive subpattern. That is, "0.00" alone is equivalent to "0.00;-0.00".  If there
+ * is an explicit negative subpattern, it serves only to specify the negative
+ * prefix and suffix; the number of digits, minimal digits, and other
+ * characteristics are ignored in the negative subpattern. That means that
+ * "#,##0.0#;(#)" has precisely the same result as "#,##0.0#;(#,##0.0#)".
+ *
+ * <p>The prefixes, suffixes, and various symbols used for infinity, digits,
+ * thousands separators, decimal separators, etc. may be set to arbitrary
+ * values, and they will appear properly during formatting.  However, care must
+ * be taken that the symbols and strings do not conflict, or parsing will be
+ * unreliable.  For example, either the positive and negative prefixes or the
+ * suffixes must be distinct for {@link #parse} to be able
+ * to distinguish positive from negative values.  Another example is that the
+ * decimal separator and thousands separator should be distinct characters, or
+ * parsing will be impossible.
+ *
+ * <p>The <em>grouping separator</em> is a character that separates clusters of
+ * integer digits to make large numbers more legible.  It commonly used for
+ * thousands, but in some locales it separates ten-thousands.  The <em>grouping
+ * size</em> is the number of digits between the grouping separators, such as 3
+ * for "100,000,000" or 4 for "1 0000 0000". There are actually two different
+ * grouping sizes: One used for the least significant integer digits, the
+ * <em>primary grouping size</em>, and one used for all others, the
+ * <em>secondary grouping size</em>.  In most locales these are the same, but
+ * sometimes they are different. For example, if the primary grouping interval
+ * is 3, and the secondary is 2, then this corresponds to the pattern
+ * "#,##,##0", and the number 123456789 is formatted as "12,34,56,789".  If a
+ * pattern contains multiple grouping separators, the interval between the last
+ * one and the end of the integer defines the primary grouping size, and the
+ * interval between the last two defines the secondary grouping size. All others
+ * are ignored, so "#,##,###,####" == "###,###,####" == "##,#,###,####".
+ *
+ * <p>Illegal patterns, such as "#.#.#" or "#.###,###", will cause
+ * <code>DecimalFormat</code> to throw an {@link IllegalArgumentException}
+ * with a message that describes the problem.
+ *
+ * <h4>Pattern BNF</h4>
+ *
+ * <pre>
+ * pattern    := subpattern (';' subpattern)?
+ * subpattern := prefix? number exponent? suffix?
+ * number     := (integer ('.' fraction)?) | sigDigits
+ * prefix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * suffix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * integer    := '#'* '0'* '0'
+ * fraction   := '0'* '#'*
+ * sigDigits  := '#'* '@' '@'* '#'*
+ * exponent   := 'E' '+'? '0'* '0'
+ * padSpec    := '*' padChar
+ * padChar    := '&#92;u0000'..'&#92;uFFFD' - quote
+ * &#32;
+ * Notation:
+ *   X*       0 or more instances of X
+ *   X?       0 or 1 instances of X
+ *   X|Y      either X or Y
+ *   C..D     any character from C up to D, inclusive
+ *   S-T      characters in S, except those in T
+ * </pre>
+ * The first subpattern is for positive numbers. The second (optional)
+ * subpattern is for negative numbers.
+ * 
+ * <p>Not indicated in the BNF syntax above:
+ *
+ * <ul><li>The grouping separator ',' can occur inside the integer and
+ * sigDigits elements, between any two pattern characters of that
+ * element, as long as the integer or sigDigits element is not
+ * followed by the exponent element.
+ *
+ * <li><font color=red face=helvetica><strong>NEW</strong></font>
+ *     Two grouping intervals are recognized: That between the
+ *     decimal point and the first grouping symbol, and that
+ *     between the first and second grouping symbols. These
+ *     intervals are identical in most locales, but in some
+ *     locales they differ. For example, the pattern
+ *     &quot;#,##,###&quot; formats the number 123456789 as
+ *     &quot;12,34,56,789&quot;.</li>
+ * 
+ * <li>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * The pad specifier <code>padSpec</code> may appear before the prefix,
+ * after the prefix, before the suffix, after the suffix, or not at all.
+ *
+ * <li>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * In place of '0', the digits '1' through '9' may be used to
+ * indicate a rounding increment.
+ * </ul>
+ *
+ * <h4>Parsing</h4>
+ *
+ * <p><code>DecimalFormat</code> parses all Unicode characters that represent
+ * decimal digits, as defined by {@link UCharacter#digit}.  In addition,
+ * <code>DecimalFormat</code> also recognizes as digits the ten consecutive
+ * characters starting with the localized zero digit defined in the
+ * {@link DecimalFormatSymbols} object.  During formatting, the
+ * {@link DecimalFormatSymbols}-based digits are output.
+ *
+ * <p>During parsing, grouping separators are ignored.
+ *
+ * <p>If {@link #parse(String, ParsePosition)} fails to parse
+ * a string, it returns <code>null</code> and leaves the parse position
+ * unchanged.  The convenience method {@link #parse(String)}
+ * indicates parse failure by throwing a {@link java.text.ParseException}.
+ *
+ * <h4>Formatting</h4>
+ *
+ * <p>Formatting is guided by several parameters, all of which can be
+ * specified either using a pattern or using the API.  The following
+ * description applies to formats that do not use <a href="#sci">scientific
+ * notation</a> or <a href="#sigdig">significant digits</a>.
+ *
+ * <ul><li>If the number of actual integer digits exceeds the
+ * <em>maximum integer digits</em>, then only the least significant
+ * digits are shown.  For example, 1997 is formatted as "97" if the
+ * maximum integer digits is set to 2.
+ *
+ * <li>If the number of actual integer digits is less than the
+ * <em>minimum integer digits</em>, then leading zeros are added.  For
+ * example, 1997 is formatted as "01997" if the minimum integer digits
+ * is set to 5.
+ *
+ * <li>If the number of actual fraction digits exceeds the <em>maximum
+ * fraction digits</em>, then half-even rounding it performed to the
+ * maximum fraction digits.  For example, 0.125 is formatted as "0.12"
+ * if the maximum fraction digits is 2.  This behavior can be changed
+ * by specifying a rounding increment and a rounding mode.
+ *
+ * <li>If the number of actual fraction digits is less than the
+ * <em>minimum fraction digits</em>, then trailing zeros are added.
+ * For example, 0.125 is formatted as "0.1250" if the mimimum fraction
+ * digits is set to 4.
+ *
+ * <li>Trailing fractional zeros are not displayed if they occur
+ * <em>j</em> positions after the decimal, where <em>j</em> is less
+ * than the maximum fraction digits. For example, 0.10004 is
+ * formatted as "0.1" if the maximum fraction digits is four or less.
+ * </ul>
+ * 
+ * <p><strong>Special Values</strong>
+ *
+ * <p><code>NaN</code> is represented as a single character, typically
+ * <code>&#92;uFFFD</code>.  This character is determined by the
+ * {@link DecimalFormatSymbols} object.  This is the only value for which
+ * the prefixes and suffixes are not used.
+ *
+ * <p>Infinity is represented as a single character, typically
+ * <code>&#92;u221E</code>, with the positive or negative prefixes and suffixes
+ * applied.  The infinity character is determined by the
+ * {@link DecimalFormatSymbols} object.
+ *
+ * <a name="sci"><h4>Scientific Notation</h4></a>
+ *
+ * <p>Numbers in scientific notation are expressed as the product of a mantissa
+ * and a power of ten, for example, 1234 can be expressed as 1.234 x 10<sup>3</sup>. The
+ * mantissa is typically in the half-open interval [1.0, 10.0) or sometimes [0.0, 1.0),
+ * but it need not be.  <code>DecimalFormat</code> supports arbitrary mantissas.
+ * <code>DecimalFormat</code> can be instructed to use scientific
+ * notation through the API or through the pattern.  In a pattern, the exponent
+ * character immediately followed by one or more digit characters indicates
+ * scientific notation.  Example: "0.###E0" formats the number 1234 as
+ * "1.234E3".
+ *
+ * <ul>
+ * <li>The number of digit characters after the exponent character gives the
+ * minimum exponent digit count.  There is no maximum.  Negative exponents are
+ * formatted using the localized minus sign, <em>not</em> the prefix and suffix
+ * from the pattern.  This allows patterns such as "0.###E0 m/s".  To prefix
+ * positive exponents with a localized plus sign, specify '+' between the
+ * exponent and the digits: "0.###E+0" will produce formats "1E+1", "1E+0",
+ * "1E-1", etc.  (In localized patterns, use the localized plus sign rather than
+ * '+'.)
+ *
+ * <li>The minimum number of integer digits is achieved by adjusting the
+ * exponent.  Example: 0.00123 formatted with "00.###E0" yields "12.3E-4".  This
+ * only happens if there is no maximum number of integer digits.  If there is a
+ * maximum, then the minimum number of integer digits is fixed at one.
+ *
+ * <li>The maximum number of integer digits, if present, specifies the exponent
+ * grouping.  The most common use of this is to generate <em>engineering
+ * notation</em>, in which the exponent is a multiple of three, e.g.,
+ * "##0.###E0".  The number 12345 is formatted using "##0.####E0" as "12.345E3".
+ *
+ * <li>When using scientific notation, the formatter controls the
+ * digit counts using significant digits logic.  The maximum number of
+ * significant digits limits the total number of integer and fraction
+ * digits that will be shown in the mantissa; it does not affect
+ * parsing.  For example, 12345 formatted with "##0.##E0" is "12.3E3".
+ * See the section on significant digits for more details.
+ *
+ * <li>The number of significant digits shown is determined as
+ * follows: If areSignificantDigitsUsed() returns false, then the
+ * minimum number of significant digits shown is one, and the maximum
+ * number of significant digits shown is the sum of the <em>minimum
+ * integer</em> and <em>maximum fraction</em> digits, and is
+ * unaffected by the maximum integer digits.  If this sum is zero,
+ * then all significant digits are shown.  If
+ * areSignificantDigitsUsed() returns true, then the significant digit
+ * counts are specified by getMinimumSignificantDigits() and
+ * getMaximumSignificantDigits().  In this case, the number of
+ * integer digits is fixed at one, and there is no exponent grouping.
+ *
+ * <li>Exponential patterns may not contain grouping separators.
+ * </ul>
+ *
+ * <a name="sigdig"><h4>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * Significant Digits</h4></a>
+ *
+ * <code>DecimalFormat</code> has two ways of controlling how many
+ * digits are shows: (a) significant digits counts, or (b) integer and
+ * fraction digit counts.  Integer and fraction digit counts are
+ * described above.  When a formatter is using significant digits
+ * counts, the number of integer and fraction digits is not specified
+ * directly, and the formatter settings for these counts are ignored.
+ * Instead, the formatter uses however many integer and fraction
+ * digits are required to display the specified number of significant
+ * digits.  Examples:
+ *
+ * <blockquote>
+ * <table border=0 cellspacing=3 cellpadding=0>
+ *   <tr bgcolor="#ccccff">
+ *     <th align=left>Pattern
+ *     <th align=left>Minimum significant digits
+ *     <th align=left>Maximum significant digits
+ *     <th align=left>Number
+ *     <th align=left>Output of format()
+ *   <tr valign=top>
+ *     <td><code>@@@</code>
+ *     <td>3
+ *     <td>3
+ *     <td>12345
+ *     <td><code>12300</code>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>@@@</code>
+ *     <td>3
+ *     <td>3
+ *     <td>0.12345
+ *     <td><code>0.123</code>
+ *   <tr valign=top>
+ *     <td><code>@@##</code>
+ *     <td>2
+ *     <td>4
+ *     <td>3.14159
+ *     <td><code>3.142</code>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>@@##</code>
+ *     <td>2
+ *     <td>4
+ *     <td>1.23004
+ *     <td><code>1.23</code>
+ * </table>
+ * </blockquote>
+ *
+ * <ul>
+ * <li>Significant digit counts may be expressed using patterns that
+ * specify a minimum and maximum number of significant digits.  These
+ * are indicated by the <code>'@'</code> and <code>'#'</code>
+ * characters.  The minimum number of significant digits is the number
+ * of <code>'@'</code> characters.  The maximum number of significant
+ * digits is the number of <code>'@'</code> characters plus the number
+ * of <code>'#'</code> characters following on the right.  For
+ * example, the pattern <code>"@@@"</code> indicates exactly 3
+ * significant digits.  The pattern <code>"@##"</code> indicates from
+ * 1 to 3 significant digits.  Trailing zero digits to the right of
+ * the decimal separator are suppressed after the minimum number of
+ * significant digits have been shown.  For example, the pattern
+ * <code>"@##"</code> formats the number 0.1203 as
+ * <code>"0.12"</code>.
+ *
+ * <li>If a pattern uses significant digits, it may not contain a
+ * decimal separator, nor the <code>'0'</code> pattern character.
+ * Patterns such as <code>"@00"</code> or <code>"@.###"</code> are
+ * disallowed.
+ *
+ * <li>Any number of <code>'#'</code> characters may be prepended to
+ * the left of the leftmost <code>'@'</code> character.  These have no
+ * effect on the minimum and maximum significant digits counts, but
+ * may be used to position grouping separators.  For example,
+ * <code>"#,#@#"</code> indicates a minimum of one significant digits,
+ * a maximum of two significant digits, and a grouping size of three.
+ *
+ * <li>In order to enable significant digits formatting, use a pattern
+ * containing the <code>'@'</code> pattern character.  Alternatively,
+ * call {@link #setSignificantDigitsUsed setSignificantDigitsUsed(true)}.
+ *
+ * <li>In order to disable significant digits formatting, use a
+ * pattern that does not contain the <code>'@'</code> pattern
+ * character. Alternatively, call {@link #setSignificantDigitsUsed
+ * setSignificantDigitsUsed(false)}.
+ *
+ * <li>The number of significant digits has no effect on parsing.
+ *
+ * <li>Significant digits may be used together with exponential notation. Such
+ * patterns are equivalent to a normal exponential pattern with a minimum and
+ * maximum integer digit count of one, a minimum fraction digit count of
+ * <code>getMinimumSignificantDigits() - 1</code>, and a maximum fraction digit
+ * count of <code>getMaximumSignificantDigits() - 1</code>. For example, the
+ * pattern <code>"@@###E0"</code> is equivalent to <code>"0.0###E0"</code>.
+ *
+ * <li>If signficant digits are in use, then the integer and fraction
+ * digit counts, as set via the API, are ignored.  If significant
+ * digits are not in use, then the signficant digit counts, as set via
+ * the API, are ignored.
+ *
+ * </ul>
+ * 
+ * <h4>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * Padding</h4>
+ *
+ * <p><code>DecimalFormat</code> supports padding the result of
+ * {@link #format} to a specific width.  Padding may be specified either
+ * through the API or through the pattern syntax.  In a pattern the pad escape
+ * character, followed by a single pad character, causes padding to be parsed
+ * and formatted.  The pad escape character is '*' in unlocalized patterns, and
+ * can be localized using {@link DecimalFormatSymbols#setPadEscape}.  For
+ * example, <code>"$*x#,##0.00"</code> formats 123 to <code>"$xx123.00"</code>,
+ * and 1234 to <code>"$1,234.00"</code>.
+ *
+ * <ul>
+ * <li>When padding is in effect, the width of the positive subpattern,
+ * including prefix and suffix, determines the format width.  For example, in
+ * the pattern <code>"* #0 o''clock"</code>, the format width is 10.
+ *
+ * <li>The width is counted in 16-bit code units (Java <code>char</code>s).
+ *
+ * <li>Some parameters which usually do not matter have meaning when padding is
+ * used, because the pattern width is significant with padding.  In the pattern
+ * "* ##,##,#,##0.##", the format width is 14.  The initial characters "##,##,"
+ * do not affect the grouping size or maximum integer digits, but they do affect
+ * the format width.
+ *
+ * <li>Padding may be inserted at one of four locations: before the prefix,
+ * after the prefix, before the suffix, or after the suffix.  If padding is
+ * specified in any other location, {@link #applyPattern} throws an {@link
+ * IllegalArgumentException}.  If there is no prefix, before the
+ * prefix and after the prefix are equivalent, likewise for the suffix.
+ *
+ * <li>When specified in a pattern, the 16-bit <code>char</code> immediately
+ * following the pad escape is the pad character. This may be any character,
+ * including a special pattern character. That is, the pad escape
+ * <em>escapes</em> the following character. If there is no character after
+ * the pad escape, then the pattern is illegal.
+ *
+ * </ul>
+ *
+ * <p>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * <strong>Rounding</strong>
+ *
+ * <p><code>DecimalFormat</code> supports rounding to a specific increment.  For
+ * example, 1230 rounded to the nearest 50 is 1250.  1.234 rounded to the
+ * nearest 0.65 is 1.3.  The rounding increment may be specified through the API
+ * or in a pattern.  To specify a rounding increment in a pattern, include the
+ * increment in the pattern itself.  "#,#50" specifies a rounding increment of
+ * 50.  "#,##0.05" specifies a rounding increment of 0.05.
+ *
+ * <ul>
+ * <li>Rounding only affects the string produced by formatting.  It does
+ * not affect parsing or change any numerical values.
+ *
+ * <li>A <em>rounding mode</em> determines how values are rounded; see the
+ * {@link com.ibm.icu.math.BigDecimal} documentation for a description of the
+ * modes.  Rounding increments specified in patterns use the default mode,
+ * {@link com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN}.
+ *
+ * <li>Some locales use rounding in their currency formats to reflect the
+ * smallest currency denomination.
+ *
+ * <li>In a pattern, digits '1' through '9' specify rounding, but otherwise
+ * behave identically to digit '0'.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * <p><code>DecimalFormat</code> objects are not synchronized.  Multiple
+ * threads should not access one formatter concurrently.
+ *
+ * @see          java.text.Format
+ * @see          NumberFormat
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+public class DecimalFormat extends NumberFormat {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * @internal
+     * @param delegate the NumberFormat to which to delegate
+     */
+    public DecimalFormat(java.text.DecimalFormat delegate) {
+        super(delegate);
+    }
+        
+    /**
+     * Create a DecimalFormat using the default pattern and symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @stable ICU 2.0
+     */
+    public DecimalFormat() {
+        this(new java.text.DecimalFormat());
+    }
+        
+    /**
+     * Create a DecimalFormat from the given pattern and the symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @param pattern A non-localized pattern string.
+     * @exception IllegalArgumentException if the given pattern is invalid.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @stable ICU 2.0
+     */
+    public DecimalFormat(String pattern) {
+        this(new java.text.DecimalFormat(pattern));
+    }
+        
+        
+    /**
+     * Create a DecimalFormat from the given pattern and symbols.
+     * Use this constructor when you need to completely customize the
+     * behavior of the format.
+     * <p>
+     * To obtain standard formats for a given
+     * locale, use the factory methods on NumberFormat such as
+     * getInstance or getCurrencyInstance. If you need only minor adjustments
+     * to a standard format, you can modify the format returned by
+     * a NumberFormat factory method.
+     * @param pattern a non-localized pattern string
+     * @param symbols the set of symbols to be used
+     * @exception IllegalArgumentException if the given pattern is invalid
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public DecimalFormat(String pattern, DecimalFormatSymbols symbols) {
+        this(new java.text.DecimalFormat(pattern, symbols.dfs));
+    }
+        
+    /**
+     * Returns a copy of the decimal format symbols used by this format.
+     * @return desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols getDecimalFormatSymbols() {
+        return new DecimalFormatSymbols(((java.text.DecimalFormat)numberFormat).getDecimalFormatSymbols());
+    }
+        
+    /**
+     * Sets the decimal format symbols used by this format.  The
+     * format uses a copy of the provided symbols.
+     * @param newSymbols desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) {
+        ((java.text.DecimalFormat)numberFormat).setDecimalFormatSymbols(newSymbols.dfs);
+    }
+        
+        
+    /**
+     * Get the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     * @stable ICU 2.0
+     */
+    public String getPositivePrefix() {
+        return ((java.text.DecimalFormat)numberFormat).getPositivePrefix();
+    }
+        
+    /**
+     * Set the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     * @stable ICU 2.0
+     */
+    public void setPositivePrefix(String newValue) {
+        ((java.text.DecimalFormat)numberFormat).setPositivePrefix(newValue);
+    }
+        
+    /**
+     * Get the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     * @stable ICU 2.0
+     */
+    public String getNegativePrefix () {
+        return ((java.text.DecimalFormat)numberFormat).getNegativePrefix();
+    }
+        
+    /**
+     * Set the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     * @stable ICU 2.0
+     */
+    public void setNegativePrefix (String newValue) {
+        ((java.text.DecimalFormat)numberFormat).setNegativePrefix(newValue);
+    }
+        
+    /**
+     * Get the positive suffix.
+     * <P>Example: 123%
+     * @stable ICU 2.0
+     */
+    public String getPositiveSuffix () {
+        return ((java.text.DecimalFormat)numberFormat).getPositiveSuffix();
+    }
+        
+    /**
+     * Set the positive suffix.
+     * <P>Example: 123%
+     * @stable ICU 2.0
+     */
+    public void setPositiveSuffix (String newValue) {
+        ((java.text.DecimalFormat)numberFormat).setPositiveSuffix(newValue);
+    }
+        
+    /**
+     * Get the negative suffix.
+     * <P>Examples: -123%, ($123) (with positive suffixes)
+     * @stable ICU 2.0
+     */
+    public String getNegativeSuffix () {
+        return ((java.text.DecimalFormat)numberFormat).getNegativeSuffix();
+    }
+        
+    /**
+     * Set the positive suffix.
+     * <P>Examples: 123%
+     * @stable ICU 2.0
+     */
+    public void setNegativeSuffix (String newValue) {
+        ((java.text.DecimalFormat)numberFormat).setNegativeSuffix(newValue);
+    }
+        
+    /**
+     * Get the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     * @stable ICU 2.0
+     */
+    public int getMultiplier () {
+        return ((java.text.DecimalFormat)numberFormat).getMultiplier();
+    }
+        
+    /**
+     * Set the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     * @stable ICU 2.0
+     */
+    public void setMultiplier (int newValue) {
+        ((java.text.DecimalFormat)numberFormat).setMultiplier(newValue);
+    }
+        
+    /**
+     * Return the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #setGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     * @see DecimalFormatSymbols#getGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public int getGroupingSize () {
+        return ((java.text.DecimalFormat)numberFormat).getGroupingSize();
+    }
+        
+    /**
+     * Set the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #getGroupingSize
+     * @see NumberFormat#setGroupingUsed
+     * @see DecimalFormatSymbols#setGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public void setGroupingSize (int newValue) {
+        ((java.text.DecimalFormat)numberFormat).setGroupingSize(newValue);
+    }
+        
+    /**
+     * Allows you to get the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     * @stable ICU 2.0
+     */
+    public boolean isDecimalSeparatorAlwaysShown() {
+        return ((java.text.DecimalFormat)numberFormat).isDecimalSeparatorAlwaysShown();
+    }
+        
+    /**
+     * Allows you to set the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     *
+     * <p>This only affects formatting, and only where
+     * there might be no digits after the decimal point, e.g.,
+     * if true,  3456.00 -> "3,456."
+     * if false, 3456.00 -> "3456"
+     * This is independent of parsing.  If you want parsing to stop at the decimal
+     * point, use setParseIntegerOnly.
+     *
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     * @stable ICU 2.0
+     */
+    public void setDecimalSeparatorAlwaysShown(boolean newValue) {
+        ((java.text.DecimalFormat)numberFormat).setDecimalSeparatorAlwaysShown(newValue);
+    }
+        
+    /**
+     * Standard override; no change in semantics.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new DecimalFormatSymbols((java.text.DecimalFormatSymbols)numberFormat.clone());
+    }
+        
+    /**
+     * Synthesizes a pattern string that represents the current state
+     * of this Format object.
+     * @see #applyPattern
+     * @stable ICU 2.0
+     */
+    public String toPattern() {
+        return ((java.text.DecimalFormat)numberFormat).toPattern();
+    }
+        
+    /**
+     * Synthesizes a localized pattern string that represents the current
+     * state of this Format object.
+     * @see #applyPattern
+     * @stable ICU 2.0
+     */
+    public String toLocalizedPattern() {
+        return ((java.text.DecimalFormat)numberFormat).toLocalizedPattern();
+    }
+        
+        
+    /**
+     * Apply the given pattern to this Format object.  A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     * @stable ICU 2.0
+     */
+    public void applyPattern(String pattern) {
+        ((java.text.DecimalFormat)numberFormat).applyPattern(pattern);
+    }
+        
+    /**
+     * Apply the given pattern to this Format object.  The pattern
+     * is assumed to be in a localized notation. A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     * @stable ICU 2.0
+     */
+    public void applyLocalizedPattern(String pattern) {
+        ((java.text.DecimalFormat)numberFormat).applyLocalizedPattern(pattern);
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java
new file mode 100644
index 0000000..0ccbe3b
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -0,0 +1,349 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+
+import java.io.Serializable;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * This class represents the set of symbols (such as the decimal separator, the
+ * grouping separator, and so on) needed by <code>DecimalFormat</code> to format
+ * numbers. <code>DecimalFormat</code> creates for itself an instance of
+ * <code>DecimalFormatSymbols</code> from its locale data.  If you need to
+ * change any of these symbols, you can get the
+ * <code>DecimalFormatSymbols</code> object from your <code>DecimalFormat</code>
+ * and modify it.
+ *
+ * <p><strong>This is an enhanced version of <code>DecimalFormatSymbols</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong>.</strong>
+ *
+ * @see          java.util.Locale
+ * @see          DecimalFormat
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+final public class DecimalFormatSymbols implements Cloneable, Serializable {
+    private static final long serialVersionUID =1L;
+        
+    /**
+     * @internal
+     */
+    public final java.text.DecimalFormatSymbols dfs;
+        
+    /**
+     * @internal
+     */
+    public DecimalFormatSymbols(java.text.DecimalFormatSymbols delegate) {
+        this.dfs = delegate;
+    }
+        
+    /**
+     * Create a DecimalFormatSymbols object for the default locale.
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols() {
+        this(new java.text.DecimalFormatSymbols());
+    }
+        
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols(Locale locale) {
+        this(new java.text.DecimalFormatSymbols(locale));
+    }
+        
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+    public DecimalFormatSymbols(ULocale locale) {
+        this(new java.text.DecimalFormatSymbols(locale.toLocale()));
+    }
+        
+    /**
+     * Return the character used for zero. Different for Arabic, etc.
+     * @return the character
+     * @stable ICU 2.0
+     */
+    public char getZeroDigit() {
+        return dfs.getZeroDigit();
+    }
+        
+    /**
+     * Set the character used for zero.
+     * @param zeroDigit the zero character.
+     * @stable ICU 2.0
+     */
+    public void setZeroDigit(char zeroDigit) {
+        dfs.setZeroDigit(zeroDigit);
+    }
+        
+    /**
+     * Return the character used for thousands separator. Different for French, etc.
+     * @return the thousands character
+     * @stable ICU 2.0
+     */
+    public char getGroupingSeparator() {
+        return dfs.getGroupingSeparator();
+    }
+        
+    /**
+     * Set the character used for thousands separator. Different for French, etc.
+     * @param groupingSeparator the thousands character
+     * @stable ICU 2.0
+     */
+    public void setGroupingSeparator(char groupingSeparator) {
+        dfs.setGroupingSeparator(groupingSeparator);
+    }
+        
+    /**
+     * Return the character used for decimal sign. Different for French, etc.
+     * @return the decimal character
+     * @stable ICU 2.0
+     */
+    public char getDecimalSeparator() {
+        return dfs.getDecimalSeparator();
+    }
+        
+    /**
+     * Set the character used for decimal sign. Different for French, etc.
+     * @param decimalSeparator the decimal character
+     * @stable ICU 2.0
+     */
+    public void setDecimalSeparator(char decimalSeparator) {
+        dfs.setDecimalSeparator(decimalSeparator);
+    }
+        
+    /**
+     * Return the character used for mille percent sign. Different for Arabic, etc.
+     * @return the mille percent character
+     * @stable ICU 2.0
+     */
+    public char getPerMill() {
+        return dfs.getPerMill();
+    }
+        
+    /**
+     * Set the character used for mille percent sign. Different for Arabic, etc.
+     * @param perMill the mille percent character
+     * @stable ICU 2.0
+     */
+    public void setPerMill(char perMill) {
+        dfs.setPerMill(perMill);
+    }
+        
+    /**
+     * Return the character used for percent sign. Different for Arabic, etc.
+     * @return the percent character
+     * @stable ICU 2.0
+     */
+    public char getPercent() {
+        return dfs.getPercent();
+    }
+        
+    /**
+     * Set the character used for percent sign. Different for Arabic, etc.
+     * @param percent the percent character
+     * @stable ICU 2.0
+     */
+    public void setPercent(char percent) {
+        dfs.setPercent(percent);
+    }
+        
+    /**
+     * Return the character used for a digit in a pattern.
+     * @return the digit pattern character
+     * @stable ICU 2.0
+     */
+    public char getDigit() {
+        return dfs.getDigit();
+    }
+        
+    /**
+     * Set the character used for a digit in a pattern.
+     * @param digit the digit pattern character
+     * @stable ICU 2.0
+     */
+    public void setDigit(char digit) {
+        dfs.setDigit(digit);
+    }
+        
+    /**
+     * Return the character used to separate positive and negative subpatterns
+     * in a pattern.
+     * @return the pattern separator character
+     * @stable ICU 2.0
+     */
+    public char getPatternSeparator() {
+        return dfs.getPatternSeparator();
+    }
+        
+    /**
+     * Set the character used to separate positive and negative subpatterns
+     * in a pattern.
+     * @param patternSeparator the pattern separator character
+     * @stable ICU 2.0
+     */
+    public void setPatternSeparator(char patternSeparator) {
+        dfs.setPatternSeparator(patternSeparator);
+    }
+        
+    /**
+     * Return the String used to represent infinity. Almost always left
+     * unchanged.
+     * @return the Infinity string
+     * @stable ICU 2.0
+     */
+    public String getInfinity() {
+        return dfs.getInfinity();
+    }
+        
+    /**
+     * Set the String used to represent infinity. Almost always left
+     * unchanged.
+     * @param infinity the Infinity String
+     * @stable ICU 2.0
+     */
+    public void setInfinity(String infinity) {
+        dfs.setInfinity(infinity);
+    }
+        
+    /**
+     * Return the String used to represent NaN. Almost always left
+     * unchanged.
+     * @return the NaN String
+     * @stable ICU 2.0
+     */
+    public String getNaN() {
+        return dfs.getNaN();
+    }
+        
+    /**
+     * Set the String used to represent NaN. Almost always left
+     * unchanged.
+     * @param NaN the NaN String
+     * @stable ICU 2.0
+     */
+    public void setNaN(String NaN) {
+        dfs.setNaN(NaN);
+    }
+        
+    /**
+     * Return the character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     * @return the minus sign character
+     * @stable ICU 2.0
+     */
+    public char getMinusSign() {
+        return dfs.getMinusSign();
+    }
+        
+    /**
+     * Set the character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     * @param minusSign the minus sign character
+     * @stable ICU 2.0
+     */
+    public void setMinusSign(char minusSign) {
+        dfs.setMinusSign(minusSign);
+    }
+        
+    /**
+     * Return the string denoting the local currency.
+     * @return the local currency String.
+     * @stable ICU 2.0
+     */
+    public String getCurrencySymbol() {
+        return dfs.getCurrencySymbol();
+    }
+        
+    /**
+     * Set the string denoting the local currency.
+     * @param currency the local currency String.
+     * @stable ICU 2.0
+     */
+    public void setCurrencySymbol(String currency) {
+        dfs.setCurrencySymbol(currency);
+    }
+        
+    /**
+     * Return the international string denoting the local currency.
+     * @return the international string denoting the local currency
+     * @stable ICU 2.0
+     */
+    public String getInternationalCurrencySymbol() {
+        return dfs.getInternationalCurrencySymbol();
+    }
+        
+    /**
+     * Set the international string denoting the local currency.
+     * @param currency the international string denoting the local currency.
+     * @stable ICU 2.0
+     */
+    public void setInternationalCurrencySymbol(String currency) {
+        dfs.setInternationalCurrencySymbol(currency);
+    }
+        
+    /**
+     * Return the monetary decimal separator.
+     * @return the monetary decimal separator character
+     * @stable ICU 2.0
+     */
+    public char getMonetaryDecimalSeparator() {
+        return dfs.getMonetaryDecimalSeparator();
+    }
+        
+    /**
+     * Set the monetary decimal separator.
+     * @param sep the monetary decimal separator character
+     * @stable ICU 2.0
+     */
+    public void setMonetaryDecimalSeparator(char sep) {
+        dfs.setMonetaryDecimalSeparator(sep);
+    }
+        
+    /**
+     * Standard override.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new DecimalFormatSymbols((java.text.DecimalFormatSymbols)dfs.clone());
+    }
+        
+    /**
+     * Override equals.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        try {
+            return dfs.equals(((DecimalFormatSymbols)obj).dfs);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Override hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return dfs.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java
new file mode 100644
index 0000000..67e6300
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java
@@ -0,0 +1,1042 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>MessageFormat</code> provides a means to produce concatenated
+ * messages in language-neutral way. Use this to construct messages
+ * displayed for end users.
+ *
+ * <p>
+ * <code>MessageFormat</code> takes a set of objects, formats them, then
+ * inserts the formatted strings into the pattern at the appropriate places.
+ *
+ * <p>
+ * <strong>Note:</strong>
+ * <code>MessageFormat</code> differs from the other <code>Format</code>
+ * classes in that you create a <code>MessageFormat</code> object with one
+ * of its constructors (not with a <code>getInstance</code> style factory
+ * method). The factory methods aren't necessary because <code>MessageFormat</code>
+ * itself doesn't implement locale specific behavior. Any locale specific
+ * behavior is defined by the pattern that you provide as well as the
+ * subformats used for inserted arguments.
+ *
+ * <h4><a name="patterns">Patterns and Their Interpretation</a></h4>
+ *
+ * <code>MessageFormat</code> uses patterns of the following form:
+ * <blockquote><pre>
+ * <i>MessageFormatPattern:</i>
+ *         <i>String</i>
+ *         <i>MessageFormatPattern</i> <i>FormatElement</i> <i>String</i>
+ *
+ * <i>FormatElement:</i>
+ *         { <i>ArgumentIndex</i> }
+ *         { <i>ArgumentIndex</i> , <i>FormatType</i> }
+ *         { <i>ArgumentIndex</i> , <i>FormatType</i> , <i>FormatStyle</i> }
+ *
+ * <i>FormatType: one of </i>
+ *         number date time choice
+ *
+ * <i>FormatStyle:</i>
+ *         short
+ *         medium
+ *         long
+ *         full
+ *         integer
+ *         currency
+ *         percent
+ *         <i>SubformatPattern</i>
+ *
+ * <i>String:</i>
+ *         <i>StringPart<sub>opt</sub></i>
+ *         <i>String</i> <i>StringPart</i>
+ *
+ * <i>StringPart:</i>
+ *         ''
+ *         ' <i>QuotedString</i> '
+ *         <i>UnquotedString</i>
+ *
+ * <i>SubformatPattern:</i>
+ *         <i>SubformatPatternPart<sub>opt</sub></i>
+ *         <i>SubformatPattern</i> <i>SubformatPatternPart</i>
+ *
+ * <i>SubFormatPatternPart:</i>
+ *         ' <i>QuotedPattern</i> '
+ *         <i>UnquotedPattern</i>
+ * </pre></blockquote>
+ *
+ * <p>
+ * Within a <i>String</i>, <code>"''"</code> represents a single
+ * quote. A <i>QuotedString</i> can contain arbitrary characters
+ * except single quotes; the surrounding single quotes are removed.
+ * An <i>UnquotedString</i> can contain arbitrary characters
+ * except single quotes and left curly brackets. Thus, a string that
+ * should result in the formatted message "'{0}'" can be written as
+ * <code>"'''{'0}''"</code> or <code>"'''{0}'''"</code>.
+ * <p>
+ * Within a <i>SubformatPattern</i>, different rules apply.
+ * A <i>QuotedPattern</i> can contain arbitrary characters
+ * except single quotes; but the surrounding single quotes are
+ * <strong>not</strong> removed, so they may be interpreted by the
+ * subformat. For example, <code>"{1,number,$'#',##}"</code> will
+ * produce a number format with the pound-sign quoted, with a result
+ * such as: "$#31,45".
+ * An <i>UnquotedPattern</i> can contain arbitrary characters
+ * except single quotes, but curly braces within it must be balanced.
+ * For example, <code>"ab {0} de"</code> and <code>"ab '}' de"</code>
+ * are valid subformat patterns, but <code>"ab {0'}' de"</code> and
+ * <code>"ab } de"</code> are not.
+ * <p>
+ * <dl><dt><b>Warning:</b><dd>The rules for using quotes within message
+ * format patterns unfortunately have shown to be somewhat confusing.
+ * In particular, it isn't always obvious to localizers whether single
+ * quotes need to be doubled or not. Make sure to inform localizers about
+ * the rules, and tell them (for example, by using comments in resource
+ * bundle source files) which strings will be processed by MessageFormat.
+ * Note that localizers may need to use single quotes in translated
+ * strings where the original version doesn't have them.
+ * <br>Note also that the simplest way to avoid the problem is to
+ * use the real apostrophe (single quote) character \u2019 (') for
+ * human-readable text, and to use the ASCII apostrophe (\u0027 ' )
+ * only in program syntax, like quoting in MessageFormat.
+ * See the annotations for U+0027 Apostrophe in The Unicode Standard.</p>
+ * </dl>
+ * <p>
+ * The <i>ArgumentIndex</i> value is a non-negative integer written
+ * using the digits '0' through '9', and represents an index into the
+ * <code>arguments</code> array passed to the <code>format</code> methods
+ * or the result array returned by the <code>parse</code> methods.
+ * <p>
+ * The <i>FormatType</i> and <i>FormatStyle</i> values are used to create
+ * a <code>Format</code> instance for the format element. The following
+ * table shows how the values map to Format instances. Combinations not
+ * shown in the table are illegal. A <i>SubformatPattern</i> must
+ * be a valid pattern string for the Format subclass used.
+ * <p>
+ * <table border=1>
+ *    <tr>
+ *       <th>Format Type
+ *       <th>Format Style
+ *       <th>Subformat Created
+ *    <tr>
+ *       <td colspan=2><i>(none)</i>
+ *       <td><code>null</code>
+ *    <tr>
+ *       <td rowspan=5><code>number</code>
+ *       <td><i>(none)</i>
+ *       <td><code>NumberFormat.getInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>integer</code>
+ *       <td><code>NumberFormat.getIntegerInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>currency</code>
+ *       <td><code>NumberFormat.getCurrencyInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>percent</code>
+ *       <td><code>NumberFormat.getPercentInstance(getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new DecimalFormat(subformatPattern, new DecimalFormatSymbols(getLocale()))</code>
+ *    <tr>
+ *       <td rowspan=6><code>date</code>
+ *       <td><i>(none)</i>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>short</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())</code>
+ *    <tr>
+ *       <td><code>medium</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>long</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.LONG, getLocale())</code>
+ *    <tr>
+ *       <td><code>full</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.FULL, getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new SimpleDateFormat(subformatPattern, getLocale())
+ *    <tr>
+ *       <td rowspan=6><code>time</code>
+ *       <td><i>(none)</i>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>short</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())</code>
+ *    <tr>
+ *       <td><code>medium</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>long</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())</code>
+ *    <tr>
+ *       <td><code>full</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new SimpleDateFormat(subformatPattern, getLocale())
+ *    <tr>
+ *       <td><code>choice</code>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new ChoiceFormat(subformatPattern)</code>
+ * </table>
+ * <p>
+ *
+ * <h4>Usage Information</h4>
+ *
+ * <p>
+ * Here are some examples of usage:
+ * <blockquote>
+ * <pre>
+ * Object[] arguments = {
+ *     new Integer(7),
+ *     new Date(System.currentTimeMillis()),
+ *     "a disturbance in the Force"
+ * };
+ *
+ * String result = MessageFormat.format(
+ *     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
+ *     arguments);
+ *
+ * <em>output</em>: At 12:30 PM on Jul 3, 2053, there was a disturbance
+ *           in the Force on planet 7.
+ *
+ * </pre>
+ * </blockquote>
+ * Typically, the message format will come from resources, and the
+ * arguments will be dynamically set at runtime.
+ *
+ * <p>
+ * Example 2:
+ * <blockquote>
+ * <pre>
+ * Object[] testArgs = {new Long(3), "MyDisk"};
+ *
+ * MessageFormat form = new MessageFormat(
+ *     "The disk \"{1}\" contains {0} file(s).");
+ *
+ * System.out.println(form.format(testArgs));
+ *
+ * // output, with different testArgs
+ * <em>output</em>: The disk "MyDisk" contains 0 file(s).
+ * <em>output</em>: The disk "MyDisk" contains 1 file(s).
+ * <em>output</em>: The disk "MyDisk" contains 1,273 file(s).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * For more sophisticated patterns, you can use a <code>ChoiceFormat</code> to get
+ * output such as:
+ * <blockquote>
+ * <pre>
+ * MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
+ * double[] filelimits = {0,1,2};
+ * String[] filepart = {"no files","one file","{0,number} files"};
+ * ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+ * form.setFormatByArgumentIndex(0, fileform);
+ *
+ * Object[] testArgs = {new Long(12373), "MyDisk"};
+ *
+ * System.out.println(form.format(testArgs));
+ *
+ * // output, with different testArgs
+ * output: The disk "MyDisk" contains no files.
+ * output: The disk "MyDisk" contains one file.
+ * output: The disk "MyDisk" contains 1,273 files.
+ * </pre>
+ * </blockquote>
+ * You can either do this programmatically, as in the above example,
+ * or by using a pattern (see
+ * {@link ChoiceFormat}
+ * for more information) as in:
+ * <blockquote>
+ * <pre>
+ * form.applyPattern(
+ *    "There {0,choice,0#are no files|1#is one file|1&lt;are {0,number,integer} files}.");
+ * </pre>
+ * </blockquote>
+ * <p>
+ * <strong>Note:</strong> As we see above, the string produced
+ * by a <code>ChoiceFormat</code> in <code>MessageFormat</code> is treated specially;
+ * occurances of '{' are used to indicated subformats, and cause recursion.
+ * If you create both a <code>MessageFormat</code> and <code>ChoiceFormat</code>
+ * programmatically (instead of using the string patterns), then be careful not to
+ * produce a format that recurses on itself, which will cause an infinite loop.
+ * <p>
+ * When a single argument is parsed more than once in the string, the last match
+ * will be the final result of the parsing.  For example,
+ * <pre>
+ * MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}");
+ * Object[] objs = {new Double(3.1415)};
+ * String result = mf.format( objs );
+ * // result now equals "3.14, 3.1"
+ * objs = null;
+ * objs = mf.parse(result, new ParsePosition(0));
+ * // objs now equals {new Double(3.1)}
+ * </pre>
+ * <p>
+ * Likewise, parsing with a MessageFormat object using patterns containing
+ * multiple occurances of the same argument would return the last match.  For
+ * example,
+ * <pre>
+ * MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
+ * String forParsing = "x, y, z";
+ * Object[] objs = mf.parse(forParsing, new ParsePosition(0));
+ * // result now equals {new String("z")}
+ * </pre>
+ *
+ * <h4><a name="synchronization">Synchronization</a></h4>
+ *
+ * <p>
+ * Message formats are not synchronized.
+ * It is recommended to create separate format instances for each thread.
+ * If multiple threads access a format concurrently, it must be synchronized
+ * externally.
+ *
+ * @see          java.util.Locale
+ * @see          Format
+ * @see          NumberFormat
+ * @see          DecimalFormat
+ * @see          ChoiceFormat
+ * @author       Mark Davis
+ * @stable ICU 3.0
+ */
+public class MessageFormat extends Format {
+    static final long serialVersionUID = 1L;
+
+    /**
+     * @internal
+     */
+    public final java.text.MessageFormat messageFormat;
+        
+    /**
+     * @internal
+     * @param delegate the DateFormat to which to delegate
+     */
+    public MessageFormat(java.text.MessageFormat delegate) {
+        this.messageFormat = delegate;
+    }
+
+    /**
+     * Constructs a MessageFormat for the default locale and the
+     * specified pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public MessageFormat(String pattern) {
+        this(new java.text.MessageFormat(pattern));
+    }
+
+    /**
+     * Constructs a MessageFormat for the specified locale and
+     * pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @param locale the locale for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public MessageFormat(String pattern, Locale locale) {
+        // locale is ignored
+        this(new java.text.MessageFormat(pattern));
+    }
+
+    /**
+     * Constructs a MessageFormat for the specified locale and
+     * pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @param locale the locale for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.2
+     */
+    public MessageFormat(String pattern, ULocale locale) {
+        // locale is ignored
+        this(pattern);
+    }
+
+    /**
+     * Sets the locale to be used when creating or comparing subformats.
+     * This affects subsequent calls to the {@link #applyPattern applyPattern}
+     * and {@link #toPattern toPattern} methods as well as to the
+     * <code>format</code> and
+     * {@link #formatToCharacterIterator formatToCharacterIterator} methods.
+     *
+     * @param locale the locale to be used when creating or comparing subformats
+     * @stable ICU 3.0
+     */
+    public void setLocale(Locale locale) {
+        messageFormat.setLocale(locale);
+    }
+
+    /**
+     * Sets the locale to be used when creating or comparing subformats.
+     * This affects subsequent calls to the {@link #applyPattern applyPattern}
+     * and {@link #toPattern toPattern} methods as well as to the
+     * <code>format</code> and
+     * {@link #formatToCharacterIterator formatToCharacterIterator} methods.
+     *
+     * @param locale the locale to be used when creating or comparing subformats
+     * @stable ICU 3.2
+     */
+    public void setLocale(ULocale locale) {
+        messageFormat.setLocale(locale.toLocale());
+    }
+
+    /**
+     * Gets the locale that's used when creating or comparing subformats.
+     *
+     * @return the locale used when creating or comparing subformats
+     * @stable ICU 3.0
+     */
+    public Locale getLocale() {
+        return messageFormat.getLocale();
+    }
+
+    /**
+     * Gets the locale that's used when creating or comparing subformats.
+     *
+     * @return the locale used when creating or comparing subformats
+     * @stable ICU 3.2
+     */
+    public ULocale getULocale() {
+        return ULocale.forLocale(messageFormat.getLocale());
+    }
+
+    /**
+     * Sets the pattern used by this message format.
+     * The method parses the pattern and creates a list of subformats
+     * for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     * 
+     * @param pattern the pattern for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+   public void applyPattern(String pattern) {
+       messageFormat.applyPattern(pattern);
+   }
+
+   /**
+    * Returns a pattern representing the current state of the message format.
+    * The string is constructed from internal information and therefore
+    * does not necessarily equal the previously applied pattern. 
+    *
+    * @return a pattern representing the current state of the message format
+    * @stable ICU 3.0
+    */
+   public String toPattern() {
+       return messageFormat.toPattern();
+   }
+ 
+   /**
+    * Sets the formats to use for the values passed into
+    * <code>format</code> methods or returned from <code>parse</code>
+    * methods. The indices of elements in <code>newFormats</code>
+    * correspond to the argument indices used in the previously set
+    * pattern string.
+    * The order of formats in <code>newFormats</code> thus corresponds to
+    * the order of elements in the <code>arguments</code> array passed
+    * to the <code>format</code> methods or the result array returned
+    * by the <code>parse</code> methods.
+    * <p>
+    * If an argument index is used for more than one format element
+    * in the pattern string, then the corresponding new format is used
+    * for all such format elements. If an argument index is not used
+    * for any format element in the pattern string, then the
+    * corresponding new format is ignored. If fewer formats are provided
+    * than needed, then only the formats for argument indices less
+    * than <code>newFormats.length</code> are replaced.
+    *
+    * @param newFormats the new formats to use
+    * @exception NullPointerException if <code>newFormats</code> is null
+    * @stable ICU 3.0
+    * @throws UnsupportedOperationException if the underlying JVM does not
+    * support this method.
+    */
+   public void setFormatsByArgumentIndex(Format[] newFormats) {
+       if (sfsbai == null) {
+           synchronized (missing) {
+               try {
+                   Class[] params = { Format[].class };
+                   sfsbai = java.text.MessageFormat.class.getMethod("setFormatsByArgumentIndex", params);
+               }
+               catch (NoSuchMethodException e) {
+                   sfsbai = missing;
+               }
+           }
+       }
+       if (sfsbai != missing) {
+           try {
+               Format[] unwrapped = new Format[newFormats.length];
+               for (int i = 0; i < newFormats.length; ++i) {
+                   unwrapped[i] = unwrap(newFormats[i]);
+               }
+               Object[] args = { unwrapped };
+               ((Method)sfsbai).invoke(messageFormat, args);
+               return;
+           }
+           catch (IllegalAccessException e) {
+               // can't happen
+           }
+           catch (InvocationTargetException e) {
+               // can't happen
+           }
+       }
+       throw new UnsupportedOperationException();
+    }
+   private static Object sfsbai;
+   
+   /**
+    * Sets the formats to use for the format elements in the
+    * previously set pattern string.
+    * The order of formats in <code>newFormats</code> corresponds to
+    * the order of format elements in the pattern string.
+    * <p>
+    * If more formats are provided than needed by the pattern string,
+    * the remaining ones are ignored. If fewer formats are provided
+    * than needed, then only the first <code>newFormats.length</code>
+    * formats are replaced.
+    * <p>
+    * Since the order of format elements in a pattern string often
+    * changes during localization, it is generally better to use the
+    * {@link #setFormatsByArgumentIndex setFormatsByArgumentIndex}
+    * method, which assumes an order of formats corresponding to the
+    * order of elements in the <code>arguments</code> array passed to
+    * the <code>format</code> methods or the result array returned by
+    * the <code>parse</code> methods.
+    *
+    * @param newFormats the new formats to use
+    * @exception NullPointerException if <code>newFormats</code> is null
+    * @stable ICU 3.0
+    */
+   public void setFormats(Format[] newFormats) {
+       messageFormat.setFormats(newFormats);
+   }
+
+   /**
+    * Sets the format to use for the format elements within the
+    * previously set pattern string that use the given argument
+    * index.
+    * The argument index is part of the format element definition and
+    * represents an index into the <code>arguments</code> array passed
+    * to the <code>format</code> methods or the result array returned
+    * by the <code>parse</code> methods.
+    * <p>
+    * If the argument index is used for more than one format element
+    * in the pattern string, then the new format is used for all such
+    * format elements. If the argument index is not used for any format
+    * element in the pattern string, then the new format is ignored.
+    *
+    * @param argumentIndex the argument index for which to use the new format
+    * @param newFormat the new format to use
+    * @stable ICU 3.0
+    * @throws UnsupportedOperationException if the underlying JVM does not
+    * support this method.
+    */
+   public void setFormatByArgumentIndex(int argumentIndex, Format newFormat) {
+       if (sfbai == null) {
+           synchronized (missing) {
+               try {
+                   Class[] params = { Integer.TYPE, Format.class };
+                   sfbai = java.text.MessageFormat.class.getMethod("setFormatByArgumentIndex", params);
+               }
+               catch (NoSuchMethodException e) {
+                   sfbai = missing;
+               }
+           }
+       }
+       if (sfbai != missing) {
+           try {
+               Object[] args = { new Integer(argumentIndex), newFormat };
+               ((Method)sfbai).invoke(messageFormat, args);
+               return;
+           }
+           catch (IllegalAccessException e) {
+               // can't happen
+           }
+           catch (InvocationTargetException e) {
+               // can't happen
+           }
+       }
+       throw new UnsupportedOperationException();
+   }
+   private static Object sfbai;
+
+   /**
+    * Sets the format to use for the format element with the given
+    * format element index within the previously set pattern string.
+    * The format element index is the zero-based number of the format
+    * element counting from the start of the pattern string.
+    * <p>
+    * Since the order of format elements in a pattern string often
+    * changes during localization, it is generally better to use the
+    * {@link #setFormatByArgumentIndex setFormatByArgumentIndex}
+    * method, which accesses format elements based on the argument
+    * index they specify.
+    *
+    * @param formatElementIndex the index of a format element within the pattern
+    * @param newFormat the format to use for the specified format element
+    * @exception ArrayIndexOutOfBoundsException if formatElementIndex is equal to or
+    *            larger than the number of format elements in the pattern string
+    * @stable ICU 3.0
+    */
+   public void setFormat(int formatElementIndex, Format newFormat) {
+       messageFormat.setFormat(formatElementIndex, unwrap(newFormat));
+   }
+
+   /**
+    * Gets the formats used for the values passed into
+    * <code>format</code> methods or returned from <code>parse</code>
+    * methods. The indices of elements in the returned array
+    * correspond to the argument indices used in the previously set
+    * pattern string.
+    * The order of formats in the returned array thus corresponds to
+    * the order of elements in the <code>arguments</code> array passed
+    * to the <code>format</code> methods or the result array returned
+    * by the <code>parse</code> methods.
+    * <p>
+    * If an argument index is used for more than one format element
+    * in the pattern string, then the format used for the last such
+    * format element is returned in the array. If an argument index
+    * is not used for any format element in the pattern string, then
+    * null is returned in the array.
+    *
+    * @return the formats used for the arguments within the pattern
+    * @stable ICU 3.0
+    * @throws UnsupportedOperationException if the underlying JVM does not 
+    * support this method.
+    */
+   public Format[] getFormatsByArgumentIndex() {
+       if (gfbai == null) {
+           synchronized (missing) {
+               try {
+                   gfbai = java.text.MessageFormat.class.getMethod("getFormatsByArgumentIndex", null);
+               }
+               catch (NoSuchMethodException e) {
+                   gfbai = missing;
+               }
+           }
+       }
+       if (gfbai != missing) {
+           try {
+               Format[] result = (Format[])((Method)gfbai).invoke(messageFormat, null);
+               for (int i = 0; i < result.length; ++i) {
+                   result[i] = wrap(result[i]);
+               }
+               return result;
+           }
+           catch (IllegalAccessException e) {
+               // can't happen
+           }
+           catch (InvocationTargetException e) {
+               // can't happen
+           }
+       }
+       throw new UnsupportedOperationException();
+   }
+   private static Object gfbai;
+   private static final Object missing = new Object();
+
+   /**
+    * Gets the formats used for the format elements in the
+    * previously set pattern string.
+    * The order of formats in the returned array corresponds to
+    * the order of format elements in the pattern string.
+    * <p>
+    * Since the order of format elements in a pattern string often
+    * changes during localization, it's generally better to use the
+    * {@link #getFormatsByArgumentIndex getFormatsByArgumentIndex}
+    * method, which assumes an order of formats corresponding to the
+    * order of elements in the <code>arguments</code> array passed to
+    * the <code>format</code> methods or the result array returned by
+    * the <code>parse</code> methods.
+    *
+    * @return the formats used for the format elements in the pattern
+    * @stable ICU 3.0
+    */
+   public Format[] getFormats() {
+       Format[] result = messageFormat.getFormats();
+       for (int i = 0; i < result.length; ++i) {
+           result[i] = wrap(result[i]);
+       }
+       return result;
+   }
+
+   /**
+    * Formats an array of objects and appends the <code>MessageFormat</code>'s
+    * pattern, with format elements replaced by the formatted objects, to the
+    * provided <code>StringBuffer</code>.
+    * <p>
+    * The text substituted for the individual format elements is derived from
+    * the current subformat of the format element and the
+    * <code>arguments</code> element at the format element's argument index
+    * as indicated by the first matching line of the following table. An
+    * argument is <i>unavailable</i> if <code>arguments</code> is
+    * <code>null</code> or has fewer than argumentIndex+1 elements.
+    * <p>
+    * <table border=1>
+    *    <tr>
+    *       <th>Subformat
+    *       <th>Argument
+    *       <th>Formatted Text
+    *    <tr>
+    *       <td><i>any</i>
+    *       <td><i>unavailable</i>
+    *       <td><code>"{" + argumentIndex + "}"</code>
+    *    <tr>
+    *       <td><i>any</i>
+    *       <td><code>null</code>
+    *       <td><code>"null"</code>
+    *    <tr>
+    *       <td><code>instanceof ChoiceFormat</code>
+    *       <td><i>any</i>
+    *       <td><code>subformat.format(argument).indexOf('{') >= 0 ?<br>
+    *           (new MessageFormat(subformat.format(argument), getLocale())).format(argument) :
+    *           subformat.format(argument)</code>
+    *    <tr>
+    *       <td><code>!= null</code>
+    *       <td><i>any</i>
+    *       <td><code>subformat.format(argument)</code>
+    *    <tr>
+    *       <td><code>null</code>
+    *       <td><code>instanceof Number</code>
+    *       <td><code>NumberFormat.getInstance(getLocale()).format(argument)</code>
+    *    <tr>
+    *       <td><code>null</code>
+    *       <td><code>instanceof Date</code>
+    *       <td><code>DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, getLocale()).format(argument)</code>
+    *    <tr>
+    *       <td><code>null</code>
+    *       <td><code>instanceof String</code>
+    *       <td><code>argument</code>
+    *    <tr>
+    *       <td><code>null</code>
+    *       <td><i>any</i>
+    *       <td><code>argument.toString()</code>
+    * </table>
+    * <p>
+    * If <code>pos</code> is non-null, and refers to
+    * <code>Field.ARGUMENT</code>, the location of the first formatted
+    * string will be returned.
+    *
+    * @param arguments an array of objects to be formatted and substituted.
+    * @param result where text is appended.
+    * @param pos On input: an alignment field, if desired.
+    *            On output: the offsets of the alignment field.
+    * @exception IllegalArgumentException if an argument in the
+    *            <code>arguments</code> array is not of the type
+    *            expected by the format element(s) that use it.
+    * @stable ICU 3.0
+    */
+   public final StringBuffer format(Object[] arguments, StringBuffer result,
+       FieldPosition pos)
+   {
+       return messageFormat.format(arguments, result, pos);
+   }
+
+   /**
+    * Creates a MessageFormat with the given pattern and uses it
+    * to format the given arguments. This is equivalent to
+    * <blockquote>
+    *     <code>(new {@link #MessageFormat(String) MessageFormat}(pattern)).{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}(arguments, new StringBuffer(), null).toString()</code>
+    * </blockquote>
+    *
+    * @exception IllegalArgumentException if the pattern is invalid,
+    *            or if an argument in the <code>arguments</code> array
+    *            is not of the type expected by the format element(s)
+    *            that use it.
+    * @stable ICU 3.0
+    */
+   public static String format(String pattern, Object[] arguments) {
+       return java.text.MessageFormat.format(pattern, arguments);
+   }
+
+   // Overrides
+   /**
+    * Formats an array of objects and appends the <code>MessageFormat</code>'s
+    * pattern, with format elements replaced by the formatted objects, to the
+    * provided <code>StringBuffer</code>.
+    * This is equivalent to
+    * <blockquote>
+    *     <code>{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}((Object[]) arguments, result, pos)</code>
+    * </blockquote>
+    *
+    * @param arguments an array of objects to be formatted and substituted.
+    * @param result where text is appended.
+    * @param pos On input: an alignment field, if desired.
+    *            On output: the offsets of the alignment field.
+    * @exception IllegalArgumentException if an argument in the
+    *            <code>arguments</code> array is not of the type
+    *            expected by the format element(s) that use it.
+    * @stable ICU 3.0
+    */
+   public final StringBuffer format(Object arguments, StringBuffer result,
+       FieldPosition pos)
+   {
+       return messageFormat.format(arguments, result, pos);
+   }
+
+
+   /**
+    * Parses the string.
+    *
+    * <p>Caveats: The parse may fail in a number of circumstances.
+    * For example:
+    * <ul>
+    * <li>If one of the arguments does not occur in the pattern.
+    * <li>If the format of an argument loses information, such as
+    *     with a choice format where a large number formats to "many".
+    * <li>Does not yet handle recursion (where
+    *     the substituted strings contain {n} references.)
+    * <li>Will not always find a match (or the correct match)
+    *     if some part of the parse is ambiguous.
+    *     For example, if the pattern "{1},{2}" is used with the
+    *     string arguments {"a,b", "c"}, it will format as "a,b,c".
+    *     When the result is parsed, it will return {"a", "b,c"}.
+    * <li>If a single argument is parsed more than once in the string,
+    *     then the later parse wins.
+    * </ul>
+    * When the parse fails, use ParsePosition.getErrorIndex() to find out
+    * where in the string did the parsing failed.  The returned error
+    * index is the starting offset of the sub-patterns that the string
+    * is comparing with.  For example, if the parsing string "AAA {0} BBB"
+    * is comparing against the pattern "AAD {0} BBB", the error index is
+    * 0. When an error occurs, the call to this method will return null.
+    * If the source is null, return an empty array.
+    * @stable ICU 3.0
+    */
+   public Object[] parse(String source, ParsePosition pos) {
+       return messageFormat.parse(source, pos);
+   }
+
+   /**
+    * Parses text from the beginning of the given string to produce an object
+    * array.
+    * The method may not use the entire text of the given string.
+    * <p>
+    * See the {@link #parse(String, ParsePosition)} method for more information
+    * on message parsing.
+    *
+    * @param source A <code>String</code> whose beginning should be parsed.
+    * @return An <code>Object</code> array parsed from the string.
+    * @exception ParseException if the beginning of the specified string
+    *            cannot be parsed.
+    * @stable ICU 3.0
+    */
+   public Object[] parse(String source) throws ParseException {
+       return messageFormat.parse(source);
+   }
+
+   /**
+    * Parses text from a string to produce an object array.
+    * <p>
+    * The method attempts to parse text starting at the index given by
+    * <code>pos</code>.
+    * If parsing succeeds, then the index of <code>pos</code> is updated
+    * to the index after the last character used (parsing does not necessarily
+    * use all characters up to the end of the string), and the parsed
+    * object array is returned. The updated <code>pos</code> can be used to
+    * indicate the starting point for the next call to this method.
+    * If an error occurs, then the index of <code>pos</code> is not
+    * changed, the error index of <code>pos</code> is set to the index of
+    * the character where the error occurred, and null is returned.
+    * <p>
+    * See the {@link #parse(String, ParsePosition)} method for more information
+    * on message parsing.
+    *
+    * @param source A <code>String</code>, part of which should be parsed.
+    * @param pos A <code>ParsePosition</code> object with index and error
+    *            index information as described above.
+    * @return An <code>Object</code> array parsed from the string. In case of
+    *         error, returns null.
+    * @exception NullPointerException if <code>pos</code> is null.
+    * @stable ICU 3.0
+    */
+   public Object parseObject(String source, ParsePosition pos) {
+       return messageFormat.parse(source, pos);
+   }
+
+   /**
+    * Convert an 'apostrophe-friendly' pattern into a standard
+    * pattern.  Standard patterns treat all apostrophes as
+    * quotes, which is problematic in some languages, e.g. 
+    * French, where apostrophe is commonly used.  This utility
+    * assumes that only an unpaired apostrophe immediately before
+    * a brace is a true quote.  Other unpaired apostrophes are paired,
+    * and the resulting standard pattern string is returned.
+    *
+    * <p><b>Note</b> it is not guaranteed that the returned pattern
+    * is indeed a valid pattern.  The only effect is to convert
+    * between patterns having different quoting semantics.
+    *
+    * @param pattern the 'apostrophe-friendly' patttern to convert
+    * @return the standard equivalent of the original pattern
+    * @stable ICU 3.4
+    */
+   public static String autoQuoteApostrophe(String pattern) {
+       StringBuffer buf = new StringBuffer(pattern.length()*2);
+       int state = STATE_INITIAL;
+       int braceCount = 0;
+       for (int i = 0, j = pattern.length(); i < j; ++i) {
+           char c = pattern.charAt(i);
+           switch (state) {
+           case STATE_INITIAL:
+               switch (c) {
+               case SINGLE_QUOTE:
+                   state = STATE_SINGLE_QUOTE;
+                   break;
+               case CURLY_BRACE_LEFT:
+                   state = STATE_MSG_ELEMENT;
+                   ++braceCount;
+                   break;
+               }
+               break;
+           case STATE_SINGLE_QUOTE:
+               switch (c) {
+               case SINGLE_QUOTE:
+                   state = STATE_INITIAL;
+                   break;
+               case CURLY_BRACE_LEFT:
+               case CURLY_BRACE_RIGHT:
+                   state = STATE_IN_QUOTE;
+                   break;
+               default:
+                   buf.append(SINGLE_QUOTE);
+               state = STATE_INITIAL;
+               break;
+               }
+               break;
+           case STATE_IN_QUOTE:
+               switch (c) {
+               case SINGLE_QUOTE:
+                   state = STATE_INITIAL;
+                   break;
+               }
+               break;
+           case STATE_MSG_ELEMENT:
+               switch (c) {
+               case CURLY_BRACE_LEFT:
+                   ++braceCount;
+                   break;
+               case CURLY_BRACE_RIGHT:
+                   if (--braceCount == 0) {
+                       state = STATE_INITIAL;
+                   }
+                   break;
+               }
+               break;
+           default: // Never happens.
+               break;
+           }
+           buf.append(c);
+       }
+       // End of scan
+       if (state == STATE_SINGLE_QUOTE || state == STATE_IN_QUOTE) {
+           buf.append(SINGLE_QUOTE);
+       }
+       return new String(buf);
+   }
+   
+   /**
+    * Creates and returns a copy of this object.
+    *
+    * @return a clone of this instance.
+    * @stable ICU 3.0
+    */
+   public Object clone() {
+       return new MessageFormat((java.text.MessageFormat)messageFormat.clone());
+   }
+
+   /**
+    * Equality comparison between two message format objects
+    * @stable ICU 3.0
+    */
+   public boolean equals(Object obj) {
+       try {
+           return messageFormat.equals(((MessageFormat)obj).messageFormat);
+       }
+       catch (Exception e) {
+           return false;
+       }
+   }
+
+   /**
+    * Generates a hash code for the message format object.
+    * @stable ICU 3.0
+    */
+   public int hashCode() {
+       return messageFormat.hashCode();
+   }
+
+   /**
+    * Return a string suitable for debugging.
+    * @return a string suitable for debugging
+    * @stable ICU 3.4.2
+    */
+   public String toString() {
+       return messageFormat.toPattern();
+   }
+
+   private static Format unwrap(Format f) {
+       if (f instanceof DateFormat) {
+           return ((DateFormat)f).dateFormat;
+       } else if (f instanceof NumberFormat) {
+           return ((NumberFormat)f).numberFormat;
+       } else if (f instanceof MessageFormat) {
+           return ((MessageFormat)f).messageFormat;
+       } else {
+           return f;
+       }
+   }
+
+   private static Format wrap(Format f) {
+       if (f instanceof java.text.DateFormat) {
+           return new DateFormat((java.text.DateFormat)f);
+       } else if (f instanceof java.text.DecimalFormat) {
+           return new DecimalFormat((java.text.DecimalFormat)f);
+       } else if (f instanceof java.text.MessageFormat) {
+           return new MessageFormat((java.text.MessageFormat)f);
+       } else {
+           return f;
+       }
+   }
+
+   private static final char SINGLE_QUOTE = '\'';
+   private static final char CURLY_BRACE_LEFT = '{';
+   private static final char CURLY_BRACE_RIGHT = '}';
+
+   private static final int STATE_INITIAL = 0;
+   private static final int STATE_SINGLE_QUOTE = 1;
+   private static final int STATE_IN_QUOTE = 2;
+   private static final int STATE_MSG_ELEMENT = 3;
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java
new file mode 100644
index 0000000..f825a94
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java
@@ -0,0 +1,778 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+package com.ibm.icu.text;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.math.BigInteger;
+import java.text.DecimalFormatSymbols;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>NumberFormat</code> is the abstract base class for all number
+ * formats. This class provides the interface for formatting and parsing
+ * numbers. <code>NumberFormat</code> also provides methods for determining
+ * which locales have number formats, and what their names are.
+ *
+ * <p><strong>This is an enhanced version of <code>NumberFormat</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong> or
+ * <strong><font face=helvetica color=red>CHANGED</font></strong>.</strong>
+ *
+ * <p>
+ * <code>NumberFormat</code> helps you to format and parse numbers for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * decimal points, thousands-separators, or even the particular decimal
+ * digits used, or whether the number format is even decimal.
+ *
+ * <p>
+ * To format a number for the current Locale, use one of the factory
+ * class methods:
+ * <blockquote>
+ * <pre>
+ *  myString = NumberFormat.getInstance().format(myNumber);
+ * </pre>
+ * </blockquote>
+ * If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance();
+ * for (int i = 0; i < a.length; ++i) {
+ *     output.println(nf.format(myNumber[i]) + "; ");
+ * }
+ * </pre>
+ * </blockquote>
+ * To format a number for a different Locale, specify it in the
+ * call to <code>getInstance</code>.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
+ * </pre>
+ * </blockquote>
+ * You can also use a <code>NumberFormat</code> to parse numbers:
+ * <blockquote>
+ * <pre>
+ * myNumber = nf.parse(myString);
+ * </pre>
+ * </blockquote>
+ * Use <code>getInstance</code> or <code>getNumberInstance</code> to get the
+ * normal number format. Use <code>getIntegerInstance</code> to get an
+ * integer number format. Use <code>getCurrencyInstance</code> to get the
+ * currency number format. And use <code>getPercentInstance</code> to get a
+ * format for displaying percentages. With this format, a fraction like
+ * 0.53 is displayed as 53%.
+ *
+ * <p>
+ * You can also control the display of numbers with such methods as
+ * <code>setMinimumFractionDigits</code>.
+ * If you want even more control over the format or parsing,
+ * or want to give your users more control,
+ * you can try casting the <code>NumberFormat</code> you get from the factory methods
+ * to a <code>DecimalFormat</code>. This will work for the vast majority
+ * of locales; just remember to put it in a <code>try</code> block in case you
+ * encounter an unusual one.
+ *
+ * <p>
+ * NumberFormat is designed such that some controls
+ * work for formatting and others work for parsing.  The following is
+ * the detailed description for each these control methods,
+ * <p>
+ * setParseIntegerOnly : only affects parsing, e.g.
+ * if true,  "3456.78" -> 3456 (and leaves the parse position just after '6')
+ * if false, "3456.78" -> 3456.78 (and leaves the parse position just after '8')
+ * This is independent of formatting.  If you want to not show a decimal point
+ * where there might be no digits after the decimal point, use
+ * setDecimalSeparatorAlwaysShown on DecimalFormat.
+ * <p>
+ * You can also use forms of the <code>parse</code> and <code>format</code>
+ * methods with <code>ParsePosition</code> and <code>FieldPosition</code> to
+ * allow you to:
+ * <ul>
+ * <li> progressively parse through pieces of a string
+ * <li> align the decimal point and other areas
+ * </ul>
+ * For example, you can align numbers in two ways:
+ * <ol>
+ * <li> If you are using a monospaced font with spacing for alignment,
+ *      you can pass the <code>FieldPosition</code> in your format call, with
+ *      <code>field</code> = <code>INTEGER_FIELD</code>. On output,
+ *      <code>getEndIndex</code> will be set to the offset between the
+ *      last character of the integer and the decimal. Add
+ *      (desiredSpaceCount - getEndIndex) spaces at the front of the string.
+ *
+ * <li> If you are using proportional fonts,
+ *      instead of padding with spaces, measure the width
+ *      of the string in pixels from the start to <code>getEndIndex</code>.
+ *      Then move the pen by
+ *      (desiredPixelWidth - widthToAlignmentPoint) before drawing the text.
+ *      It also works where there is no decimal, but possibly additional
+ *      characters at the end, e.g., with parentheses in negative
+ *      numbers: "(12)" for -12.
+ * </ol>
+ *
+ * <h4>Synchronization</h4>
+ * <p>
+ * Number formats are generally not synchronized. It is recommended to create 
+ * separate format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally. 
+ * <p>
+ *
+ * <h4>DecimalFormat</h4>
+ * <p>DecimalFormat is the concrete implementation of NumberFormat, and the
+ * NumberFormat API is essentially an abstraction from DecimalFormat's API.
+ * Refer to DecimalFormat for more information about this API.</p>
+ *
+ * see          DecimalFormat
+ * see          java.text.ChoiceFormat
+ * @author       Mark Davis
+ * @author       Helena Shih
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+public class NumberFormat extends Format {
+    private static final long serialVersionUID = 1;
+
+    /**
+     * @internal
+     */
+    public final java.text.NumberFormat numberFormat;
+        
+    /**
+     * @internal
+     * @param delegate the NumberFormat to which to delegate
+     */
+    public NumberFormat(java.text.NumberFormat delegate) {
+        this.numberFormat = delegate;
+    }
+    
+    /**
+     * Default constructor to mirror Java's default public
+     * constructor.  Java's is not callable as a public API, since
+     * their NumberFormat is abstract, so this is only useful to
+     * subclasses.  In general, subclasses will not work unless
+     * they manipulate the delegate.
+     */
+    public NumberFormat() {
+        this.numberFormat = java.text.NumberFormat.getInstance();
+    }
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the integer part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     * @stable ICU 2.0
+     */
+    public static final int INTEGER_FIELD = 0;
+        
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the fraction part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     * @stable ICU 2.0
+     */
+    public static final int FRACTION_FIELD = 1;
+        
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Format an object.  Change: recognizes <code>BigInteger</code>
+     * and <code>BigDecimal</code> objects.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) {
+        return numberFormat.format(number, toAppendTo, pos);
+    }
+        
+    /**
+     * @stable ICU 2.0
+     */
+    public final Object parseObject(String source, ParsePosition parsePosition) {
+        return numberFormat.parse(source, parsePosition);
+    }
+        
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object)
+     * @stable ICU 2.0
+     */
+    public final String format(double number) {
+        return numberFormat.format(number);
+    }
+        
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object)
+     * @stable ICU 2.0
+     */
+    public final String format(long number) {
+        return numberFormat.format(number);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Convenience method to format a BigInteger.
+     * @stable ICU 2.0
+     */
+    public final String format(BigInteger number) {
+        return numberFormat.format(number);
+    }
+        
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return numberFormat.format(number, toAppendTo, pos);
+    }
+        
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
+        return numberFormat.format(number, toAppendTo, pos);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigInteger.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {
+        return numberFormat.format(number, toAppendTo, pos);
+    }
+    /**
+     * Returns a Long if possible (e.g., within the range [Long.MIN_VALUE,
+     * Long.MAX_VALUE] and with no decimals), otherwise a Double.
+     * If IntegerOnly is set, will stop at a decimal
+     * point (or equivalent; e.g., for rational numbers "1 2/3", will stop
+     * after the 1).
+     * Does not throw an exception; if no object can be parsed, index is
+     * unchanged!
+     * @see #isParseIntegerOnly
+     * @see java.text.Format#parseObject(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+        return numberFormat.parse(text, parsePosition);
+    }
+        
+    /**
+     * Parses text from the beginning of the given string to produce a number.
+     * The method might not use the entire text of the given string.
+     *
+     * @param text A String whose beginning should be parsed.
+     * @return A Number parsed from the string.
+     * @exception ParseException if the beginning of the specified string 
+     * cannot be parsed.
+     * @see #format
+     * @stable ICU 2.0
+     */
+    public Number parse(String text) throws ParseException {
+        return numberFormat.parse(text);
+    }
+    /**
+     * Returns true if this format will parse numbers as integers only.
+     * For example in the English locale, with ParseIntegerOnly true, the
+     * string "1234." would be parsed as the integer value 1234 and parsing
+     * would stop at the "." character.  The decimal separator accepted
+     * by the parse operation is locale-dependent and determined by the
+     * subclass.
+     * @return true if this will parse integers only
+     * @stable ICU 2.0
+     */
+    public boolean isParseIntegerOnly() {
+        return numberFormat.isParseIntegerOnly();
+    }
+        
+    /**
+     * Sets whether or not numbers should be parsed as integers only.
+     * @param value true if this should parse integers only
+     * @see #isParseIntegerOnly
+     * @stable ICU 2.0
+     */
+    public void setParseIntegerOnly(boolean value) {
+        numberFormat.setParseIntegerOnly(value);
+    }
+        
+    //============== Locale Stuff =====================
+        
+    /**
+     * Returns the default number format for the current default locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getIntegerInstance,
+     * getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getInstance() {
+        return getInstance(ULocale.getDefault(), NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getInstance(ULocale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns a general-purpose number format for the current default locale.
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getNumberInstance() {
+        return getInstance(ULocale.getDefault(), NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getNumberInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getNumberInstance(ULocale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+        
+    /**
+     * Returns an integer number format for the current default locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @return a number format for integer values
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getIntegerInstance() {
+        return getInstance(ULocale.getDefault(), INTEGERSTYLE);
+    }
+        
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getIntegerInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), INTEGERSTYLE);
+    }
+        
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getIntegerInstance(ULocale inLocale) {
+        return getInstance(inLocale, INTEGERSTYLE);
+    }
+        
+    /**
+     * Returns a currency format for the current default locale.
+     * @return a number format for currency
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getCurrencyInstance() {
+        return getInstance(ULocale.getDefault(), CURRENCYSTYLE);
+    }
+        
+    /**
+     * Returns a currency format for the specified locale.
+     * @return a number format for currency
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getCurrencyInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), CURRENCYSTYLE);
+    }
+        
+    /**
+     * Returns a currency format for the specified locale.
+     * @return a number format for currency
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getCurrencyInstance(ULocale inLocale) {
+        return getInstance(inLocale, CURRENCYSTYLE);
+    }
+        
+    /**
+     * Returns a percentage format for the current default locale.
+     * @return a number format for percents
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getPercentInstance() {
+        return getInstance(ULocale.getDefault(), PERCENTSTYLE);
+    }
+        
+    /**
+     * Returns a percentage format for the specified locale.
+     * @return a number format for percents
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getPercentInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), PERCENTSTYLE);
+    }
+        
+    /**
+     * Returns a percentage format for the specified locale.
+     * @return a number format for percents
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getPercentInstance(ULocale inLocale) {
+        return getInstance(inLocale, PERCENTSTYLE);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the current default locale.
+     * @return a scientific number format
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getScientificInstance() {
+        return getInstance(ULocale.getDefault(), SCIENTIFICSTYLE);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the specified locale.
+     * @return a scientific number format
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getScientificInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), SCIENTIFICSTYLE);
+    }
+        
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the specified locale.
+     * @return a scientific number format
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getScientificInstance(ULocale inLocale) {
+        return getInstance(inLocale, SCIENTIFICSTYLE);
+    }
+        
+    /**
+     * Get the list of Locales for which NumberFormats are available.
+     * @return the available locales
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales() {
+        return java.text.NumberFormat.getAvailableLocales();
+    }
+        
+    /**
+     * Get the list of Locales for which NumberFormats are available.
+     * @return the available locales
+     * @draft ICU 3.2 (retain)
+     */
+    public static ULocale[] getAvailableULocales() {
+        if (availableULocales == null) {
+            Locale[] locales = java.text.NumberFormat.getAvailableLocales();
+            ULocale[] ulocales = new ULocale[locales.length];
+            for (int i = 0; i < locales.length; ++i) {
+                ulocales[i] = ULocale.forLocale(locales[i]);
+            }
+            availableULocales = ulocales;
+        }
+        return (ULocale[])availableULocales.clone();
+    }
+    private static ULocale[] availableULocales;
+        
+        
+    /**
+     * Returns true if grouping is used in this format. For example, in the
+     * en_US locale, with grouping on, the number 1234567 will be formatted
+     * as "1,234,567". The grouping separator as well as the size of each group
+     * is locale-dependent and is determined by subclasses of NumberFormat.
+     * Grouping affects both parsing and formatting.
+     * @return true if grouping is used
+     * @see #setGroupingUsed
+     * @stable ICU 2.0
+     */
+    public boolean isGroupingUsed() {
+        return numberFormat.isGroupingUsed();
+    }
+        
+    /**
+     * Sets whether or not grouping will be used in this format.  Grouping
+     * affects both parsing and formatting.
+     * @see #isGroupingUsed
+     * @param newValue true to use grouping.
+     * @stable ICU 2.0
+     */
+    public void setGroupingUsed(boolean newValue) {
+        numberFormat.setGroupingUsed(newValue);
+    }
+        
+    /**
+     * Returns the maximum number of digits allowed in the integer portion of a
+     * number.  The default value is 40, which subclasses can override.
+     * When formatting, the exact behavior when this value is exceeded is
+     * subclass-specific.  When parsing, this has no effect.
+     * @return the maximum number of integer digits
+     * @see #setMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public int getMaximumIntegerDigits() {
+        return numberFormat.getMaximumIntegerDigits();
+    }
+        
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. This must be >= minimumIntegerDigits.  If the
+     * new value for maximumIntegerDigits is less than the current value
+     * of minimumIntegerDigits, then minimumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of integer digits to be shown; if
+     * less than zero, then zero is used.  Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        numberFormat.setMaximumIntegerDigits(newValue);
+    }
+        
+    /**
+     * Returns the minimum number of digits allowed in the integer portion of a
+     * number.  The default value is 1, which subclasses can override.
+     * When formatting, if this value is not reached, numbers are padded on the
+     * left with the locale-specific '0' character to ensure at least this
+     * number of integer digits.  When parsing, this has no effect.
+     * @return the minimum number of integer digits
+     * @see #setMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public int getMinimumIntegerDigits() {
+        return numberFormat.getMinimumIntegerDigits();
+    }
+        
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number.  This must be <= maximumIntegerDigits.  If the
+     * new value for minimumIntegerDigits is more than the current value
+     * of maximumIntegerDigits, then maximumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of integer digits to be shown; if
+     * less than zero, then zero is used. Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        numberFormat.setMinimumIntegerDigits(newValue);
+    }
+        
+    /**
+     * Returns the maximum number of digits allowed in the fraction
+     * portion of a number.  The default value is 3, which subclasses
+     * can override.  When formatting, the exact behavior when this
+     * value is exceeded is subclass-specific.  When parsing, this has 
+     * no effect.
+     * @return the maximum number of fraction digits
+     * @see #setMaximumFractionDigits
+     * @stable ICU 2.0 
+     */
+    public int getMaximumFractionDigits() {
+        return numberFormat.getMaximumFractionDigits();
+    }
+        
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. This must be >= minimumFractionDigits.  If the
+     * new value for maximumFractionDigits is less than the current value
+     * of minimumFractionDigits, then minimumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of fraction digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        numberFormat.setMaximumFractionDigits(newValue);
+    }
+        
+    /**
+     * Returns the minimum number of digits allowed in the fraction portion of a
+     * number.  The default value is 0, which subclasses can override.
+     * When formatting, if this value is not reached, numbers are padded on
+     * the right with the locale-specific '0' character to ensure at least
+     * this number of fraction digits.  When parsing, this has no effect.
+     * @return the minimum number of fraction digits
+     * @see #setMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public int getMinimumFractionDigits() {
+        return numberFormat.getMinimumFractionDigits();
+    }
+        
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number.  This must be <= maximumFractionDigits.  If the
+     * new value for minimumFractionDigits exceeds the current value
+     * of maximumFractionDigits, then maximumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of fraction digits to be shown; if
+     * less than zero, then zero is used.  Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        numberFormat.setMinimumFractionDigits(newValue);
+    }
+
+    /**
+     * Return a string suitable for debugging.
+     * @return a string suitable for debugging
+     * @stable ICU 3.4.2
+     */
+    public String toString() {
+        return numberFormat.toString();
+    }
+        
+    /**
+     * Overrides Cloneable.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new NumberFormat((java.text.NumberFormat)numberFormat.clone());
+    }
+        
+    /**
+     * Overrides equals.  Two NumberFormats are equal if they are of the same class
+     * and the settings (groupingUsed, parseIntegerOnly, maximumIntegerDigits, etc.
+     * are equal.
+     * @param obj the object to compare against
+     * @return true if the object is equal to this.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        try {
+            return numberFormat.equals(((NumberFormat)obj).numberFormat);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Overrides hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return numberFormat.hashCode();
+    }
+
+    // =======================privates===============================
+        
+    private static NumberFormat getInstance(ULocale desiredLocale, int choice) {
+        Locale locale = desiredLocale.toLocale();
+        java.text.NumberFormat nf = null;
+        switch (choice) {
+        case NUMBERSTYLE: nf = java.text.NumberFormat.getInstance(locale); break;
+        case CURRENCYSTYLE: nf = java.text.NumberFormat.getCurrencyInstance(locale); break;
+        case PERCENTSTYLE: nf = java.text.NumberFormat.getPercentInstance(locale); break;
+        case SCIENTIFICSTYLE: nf = new java.text.DecimalFormat("#E0", new DecimalFormatSymbols(locale)); 
+            nf.setMaximumFractionDigits(10);
+            break;
+        case INTEGERSTYLE: 
+            if (unchecked) {
+                unchecked = false;
+                try {
+                    Class[] args = { java.util.Locale.class };
+                    integer14API = java.text.NumberFormat.class.getMethod("getIntegerInstance", args);
+                }
+                catch (Exception e) {
+                }
+            }
+            if (integer14API != null) {
+                try {
+                    Object[] args = { locale };
+                    nf = (java.text.NumberFormat)integer14API.invoke(null, args);
+                }
+                catch (IllegalAccessException e) {
+                    integer14API = null;
+                }
+                catch (InvocationTargetException e) {
+                    integer14API = null;
+                }
+                catch (Exception e) {
+                    // shouldn't happen, but locale might be null, for example
+                    // and we don't want to throw away our method because someone
+                    // called us with a bad parameter
+                }
+            }
+            if (nf == null) {
+                nf = java.text.NumberFormat.getNumberInstance(locale); 
+                nf.setMaximumFractionDigits(0);
+                nf.setParseIntegerOnly(true);
+            }
+            break;
+        }
+        return new NumberFormat(nf);
+    }
+    
+    private static boolean unchecked = true;
+    private static Method integer14API;
+    
+    private static final int NUMBERSTYLE = 0;
+    private static final int CURRENCYSTYLE = 1;
+    private static final int PERCENTSTYLE = 2;
+    private static final int SCIENTIFICSTYLE = 3;
+    private static final int INTEGERSTYLE = 4;
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java
new file mode 100644
index 0000000..ddf0300
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java
@@ -0,0 +1,382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>SimpleDateFormat</code> is a concrete class for formatting and
+ * parsing dates in a locale-sensitive manner. It allows for formatting
+ * (date -> text), parsing (text -> date), and normalization.
+ *
+ * <p>
+ * <code>SimpleDateFormat</code> allows you to start by choosing
+ * any user-defined patterns for date-time formatting. However, you
+ * are encouraged to create a date-time formatter with either
+ * <code>getTimeInstance</code>, <code>getDateInstance</code>, or
+ * <code>getDateTimeInstance</code> in <code>DateFormat</code>. Each
+ * of these class methods can return a date/time formatter initialized
+ * with a default format pattern. You may modify the format pattern
+ * using the <code>applyPattern</code> methods as desired.
+ * For more information on using these methods, see
+ * {@link DateFormat}.
+ *
+ * <p>
+ * <strong>Time Format Syntax:</strong>
+ * <p>
+ * To specify the time format use a <em>time pattern</em> string.
+ * In this pattern, all ASCII letters are reserved as pattern letters,
+ * which are defined as the following:
+ * <blockquote>
+ * <pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        era designator          (Text)              AD
+ * y&#x2020;       year                    (Number)            1996
+ * Y*       year (week of year)     (Number)            1997
+ * u*       extended year           (Number)            4601
+ * M        month in year           (Text & Number)     July & 07
+ * d        day in month            (Number)            10
+ * h        hour in am/pm (1~12)    (Number)            12
+ * H        hour in day (0~23)      (Number)            0
+ * m        minute in hour          (Number)            30
+ * s        second in minute        (Number)            55
+ * S        fractional second       (Number)            978
+ * E        day of week             (Text)              Tuesday
+ * e*       day of week (local 1~7) (Number)            2
+ * D        day in year             (Number)            189
+ * F        day of week in month    (Number)            2 (2nd Wed in July)
+ * w        week in year            (Number)            27
+ * W        week in month           (Number)            2
+ * a        am/pm marker            (Text)              PM
+ * k        hour in day (1~24)      (Number)            24
+ * K        hour in am/pm (0~11)    (Number)            0
+ * z        time zone               (Text)              Pacific Standard Time
+ * Z        time zone (RFC 822)     (Number)            -0800
+ * v        time zone (generic)     (Text)              Pacific Time
+ * g*       Julian day              (Number)            2451334
+ * A*       milliseconds in day     (Number)            69540000
+ * '        escape for text         (Delimiter)         'Date='
+ * ''       single quote            (Literal)           'o''clock'
+ * </pre>
+ * </blockquote>
+ * <tt><b>*</b></tt> These items are not supported by Java's SimpleDateFormat.<br>
+ * <tt><b>&#x2020;</b></tt> ICU interprets a single 'y' differently than Java.</p>
+ * <p>
+ * The count of pattern letters determine the format.
+ * <p>
+ * <strong>(Text)</strong>: 4 or more pattern letters--use full form,
+ * &lt; 4--use short or abbreviated form if one exists.
+ * <p>
+ * <strong>(Number)</strong>: the minimum number of digits. Shorter
+ * numbers are zero-padded to this amount. Year is handled specially;
+ * that is, if the count of 'y' is 2, the Year will be truncated to 2 digits.
+ * (e.g., if "yyyy" produces "1997", "yy" produces "97".)
+ * Unlike other fields, fractional seconds are padded on the right with zero.
+ * <p>
+ * <strong>(Text & Number)</strong>: 3 or over, use text, otherwise use number.
+ * <p>
+ * Any characters in the pattern that are not in the ranges of ['a'..'z']
+ * and ['A'..'Z'] will be treated as quoted text. For instance, characters
+ * like ':', '.', ' ', '#' and '@' will appear in the resulting time text
+ * even they are not embraced within single quotes.
+ * <p>
+ * A pattern containing any invalid pattern letter will result in a thrown
+ * exception during formatting or parsing.
+ *
+ * <p>
+ * <strong>Examples Using the US Locale:</strong>
+ * <blockquote>
+ * <pre>
+ * Format Pattern                         Result
+ * --------------                         -------
+ * "yyyy.MM.dd G 'at' HH:mm:ss vvvv" ->>  1996.07.10 AD at 15:08:56 Pacific Time
+ * "EEE, MMM d, ''yy"                ->>  Wed, July 10, '96
+ * "h:mm a"                          ->>  12:08 PM
+ * "hh 'o''clock' a, zzzz"           ->>  12 o'clock PM, Pacific Daylight Time
+ * "K:mm a, vvv"                     ->>  0:00 PM, PT
+ * "yyyyy.MMMMM.dd GGG hh:mm aaa"    ->>  01996.July.10 AD 12:08 PM
+ * </pre>
+ * </blockquote>
+ * <strong>Code Sample:</strong>
+ * <blockquote>
+ * <pre>
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000);
+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);
+ * <br>
+ * // Format the current time.
+ * SimpleDateFormat formatter
+ *     = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz");
+ * Date currentTime_1 = new Date();
+ * String dateString = formatter.format(currentTime_1);
+ * <br>
+ * // Parse the previous string back into a Date.
+ * ParsePosition pos = new ParsePosition(0);
+ * Date currentTime_2 = formatter.parse(dateString, pos);
+ * </pre>
+ * </blockquote>
+ * In the example, the time value <code>currentTime_2</code> obtained from
+ * parsing will be equal to <code>currentTime_1</code>. However, they may not be
+ * equal if the am/pm marker 'a' is left out from the format pattern while
+ * the "hour in am/pm" pattern symbol is used. This information loss can
+ * happen when formatting the time in PM.
+ *
+ * <p>
+ * When parsing a date string using the abbreviated year pattern ("yy"),
+ * SimpleDateFormat must interpret the abbreviated year
+ * relative to some century.  It does this by adjusting dates to be
+ * within 80 years before and 20 years after the time the SimpleDateFormat
+ * instance is created. For example, using a pattern of "MM/dd/yy" and a
+ * SimpleDateFormat instance created on Jan 1, 1997,  the string
+ * "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64"
+ * would be interpreted as May 4, 1964.
+ * During parsing, only strings consisting of exactly two digits, as defined by
+ * {@link java.lang.Character#isDigit(char)}, will be parsed into the default
+ * century.
+ * Any other numeric string, such as a one digit string, a three or more digit
+ * string, or a two digit string that isn't all digits (for example, "-1"), is
+ * interpreted literally.  So "01/02/3" or "01/02/003" are parsed, using the
+ * same pattern, as Jan 2, 3 AD.  Likewise, "01/02/-3" is parsed as Jan 2, 4 BC.
+ *
+ * <p>
+ * If the year pattern does not have exactly two 'y' characters, the year is
+ * interpreted literally, regardless of the number of digits.  So using the
+ * pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D.
+ *
+ * <p>
+ * When numeric fields abut one another directly, with no intervening delimiter
+ * characters, they constitute a run of abutting numeric fields.  Such runs are
+ * parsed specially.  For example, the format "HHmmss" parses the input text
+ * "123456" to 12:34:56, parses the input text "12345" to 1:23:45, and fails to
+ * parse "1234".  In other words, the leftmost field of the run is flexible,
+ * while the others keep a fixed width.  If the parse fails anywhere in the run,
+ * then the leftmost field is shortened by one character, and the entire run is
+ * parsed again. This is repeated until either the parse succeeds or the
+ * leftmost field is one character in length.  If the parse still fails at that
+ * point, the parse of the run fails.
+ *
+ * <p>
+ * For time zones that have no names, use strings GMT+hours:minutes or
+ * GMT-hours:minutes.
+ *
+ * <p>
+ * The calendar defines what is the first day of the week, the first week
+ * of the year, whether hours are zero based or not (0 vs 12 or 24), and the
+ * time zone. There is one common decimal format to handle all the numbers;
+ * the digit count is handled programmatically according to the pattern.
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate
+ * format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally.
+ *
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @see          DateFormat
+ * @see          DateFormatSymbols
+ * @see          DecimalFormat
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class SimpleDateFormat extends DateFormat {
+    private static final long serialVersionUID = 1;
+       
+    /**
+     * Construct a SimpleDateFormat using the default pattern for the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     *
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat() {
+        super(new java.text.SimpleDateFormat());
+    }
+        
+    /**
+     * Construct a SimpleDateFormat using the given pattern in the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @param pattern the pattern to use
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern) {
+        super(new java.text.SimpleDateFormat(pattern));
+    }
+        
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @param pattern the pattern to use
+     * @param loc the locale to use for localization
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern, Locale loc) {
+        super(new java.text.SimpleDateFormat(pattern, loc));
+    }
+        
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @param pattern the pattern to use
+     * @param loc the ulocale to use for localization
+     * @stable ICU 3.2
+     */
+    public SimpleDateFormat(String pattern, ULocale loc) {
+        this(pattern, loc.toLocale());
+    }
+        
+    /**
+     * Construct a SimpleDateFormat using the given pattern and
+     * locale-specific symbol data.
+     * Warning: uses default locale for digits!
+     * @param pattern the pattern to use
+     * @param formatData the symbols to use for localization
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern, DateFormatSymbols formatData) {
+        super(new java.text.SimpleDateFormat(pattern, formatData.dfs));
+    }
+        
+    /**
+     * Sets the 100-year period 2-digit years will be interpreted as being in
+     * to begin on the date the user specifies.
+     * @param startDate During parsing, two digit years will be placed in the range
+     * <code>startDate</code> to <code>startDate + 100 years</code>.
+     * @stable ICU 2.0
+     */
+    public void set2DigitYearStart(Date startDate) {
+        ((java.text.SimpleDateFormat)dateFormat).set2DigitYearStart(startDate);
+    }
+        
+    /**
+     * Returns the beginning date of the 100-year period 2-digit years are interpreted
+     * as being within.
+     * @return the start of the 100-year period into which two digit years are
+     * parsed
+     * @stable ICU 2.0
+     */
+    public Date get2DigitYearStart() {
+        return ((java.text.SimpleDateFormat)dateFormat).get2DigitYearStart();
+    }
+        
+    /**
+     * Overrides DateFormat.
+     * <p>Formats a date or time, which is the standard millis
+     * since January 1, 1970, 00:00:00 GMT.
+     * <p>Example: using the US locale:
+     * "yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
+     * @param cal the calendar whose date-time value is to be formatted into a date-time string
+     * @param toAppendTo where the new date-time text is to be appended
+     * @param pos the formatting position. On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field.
+     * @return the formatted date-time string.
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo, FieldPosition pos) {
+        StringBuffer result;
+        synchronized(dateFormat) {
+            java.util.Calendar oldCal = dateFormat.getCalendar();
+            dateFormat.setCalendar(cal.calendar);
+            result = dateFormat.format(cal.getTime(), toAppendTo, pos);
+            dateFormat.setCalendar(oldCal);
+        }
+        return result;
+    }
+        
+    /**
+     * Overrides DateFormat
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public void parse(String text, Calendar cal, ParsePosition parsePos) {
+        // TODO: cannot set the parsed timezone, document?
+        cal.setTime(dateFormat.parse(text, parsePos));
+    }
+        
+    /**
+     * Return a pattern string describing this date format.
+     * @stable ICU 2.0
+     */
+    public String toPattern() {
+        return ((java.text.SimpleDateFormat)dateFormat).toPattern();
+    }
+        
+    /**
+     * Return a localized pattern string describing this date format.
+     * @stable ICU 2.0
+     */
+    public String toLocalizedPattern() {
+        return ((java.text.SimpleDateFormat)dateFormat).toLocalizedPattern();
+    }
+        
+    /**
+     * Apply the given unlocalized pattern string to this date format.
+     * @stable ICU 2.0
+     */
+    public void applyPattern(String pattern) {
+        ((java.text.SimpleDateFormat)dateFormat).applyPattern(pattern);
+    }
+        
+    /**
+     * Apply the given localized pattern string to this date format.
+     * @stable ICU 2.0
+     */
+    public void applyLocalizedPattern(String pattern) {
+        ((java.text.SimpleDateFormat)dateFormat).applyLocalizedPattern(pattern);
+    }
+        
+    /**
+     * Gets the date/time formatting data.
+     * @return a copy of the date-time formatting data associated
+     * with this date-time formatter.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols getDateFormatSymbols() {
+        return new DateFormatSymbols(((java.text.SimpleDateFormat)dateFormat).getDateFormatSymbols());
+    }
+        
+    /**
+     * Allows you to set the date/time formatting data.
+     * @param newFormatSymbols the new symbols
+     * @stable ICU 2.0
+     */
+    public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) {
+        ((java.text.SimpleDateFormat)dateFormat).setDateFormatSymbols(newFormatSymbols.dfs);
+    }
+        
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new SimpleDateFormat((java.text.SimpleDateFormat)dateFormat.clone());
+    }
+        
+    /**
+     * For clone to use
+     * @param sdf
+     */
+    private SimpleDateFormat(java.text.SimpleDateFormat sdf) {
+        super(sdf);
+    }
+        
+    // hashCode, equals, clone use DateFormat implementation.
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java
new file mode 100644
index 0000000..18d4e02
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java
@@ -0,0 +1,2118 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+
+/**
+ * <code>Calendar</code> is an abstract base class for converting between
+ * a <code>Date</code> object and a set of integer fields such as
+ * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
+ * and so on. (A <code>Date</code> object represents a specific instant in
+ * time with millisecond precision. See
+ * {@link Date}
+ * for information about the <code>Date</code> class.)
+ *
+ * <p><b>Note:</b>  This class is similar, but not identical, to the class
+ * <code>java.util.Calendar</code>.  Changes are detailed below.
+ *
+ * <p>
+ * Subclasses of <code>Calendar</code> interpret a <code>Date</code>
+ * according to the rules of a specific calendar system.  ICU4J contains
+ * several subclasses implementing different international calendar systems.
+ *
+ * <p>
+ * Like other locale-sensitive classes, <code>Calendar</code> provides a
+ * class method, <code>getInstance</code>, for getting a generally useful
+ * object of this type. <code>Calendar</code>'s <code>getInstance</code> method
+ * returns a calendar of a type appropriate to the locale, whose
+ * time fields have been initialized with the current date and time:
+ * <blockquote>
+ * <pre>Calendar rightNow = Calendar.getInstance()</pre>
+ * </blockquote>
+ *
+ * <p>When a <code>ULocale</code> is used by <code>getInstance</code>, its
+ * '<code>calendar</code>' tag and value are retrieved if present.  If a recognized
+ * value is supplied, a calendar is provided and configured as appropriate.
+ * Currently recognized tags are "buddhist", "chinese", "coptic", "ethiopic", 
+ * "gregorian", "hebrew", "islamic", "islamic-civil", and "japanese".  For
+ * example: <blockquote>
+ * <pre>Calendar cal = Calendar.getInstance(new ULocale("en_US@calendar=japanese"));</pre>
+ * </blockquote> will return an instance of JapaneseCalendar (using en_US conventions for
+ * minimum days in first week, start day of week, et cetera).
+ *
+ * <p>A <code>Calendar</code> object can produce all the time field values
+ * needed to implement the date-time formatting for a particular language and
+ * calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
+ * <code>Calendar</code> defines the range of values returned by certain fields,
+ * as well as their meaning.  For example, the first month of the year has value
+ * <code>MONTH</code> == <code>JANUARY</code> for all calendars.  Other values
+ * are defined by the concrete subclass, such as <code>ERA</code> and
+ * <code>YEAR</code>.  See individual field documentation and subclass
+ * documentation for details.
+ *
+ * <p>When a <code>Calendar</code> is <em>lenient</em>, it accepts a wider range
+ * of field values than it produces.  For example, a lenient
+ * <code>GregorianCalendar</code> interprets <code>MONTH</code> ==
+ * <code>JANUARY</code>, <code>DAY_OF_MONTH</code> == 32 as February 1.  A
+ * non-lenient <code>GregorianCalendar</code> throws an exception when given
+ * out-of-range field settings.  When calendars recompute field values for
+ * return by <code>get()</code>, they normalize them.  For example, a
+ * <code>GregorianCalendar</code> always produces <code>DAY_OF_MONTH</code>
+ * values between 1 and the length of the month.
+ *
+ * <p><code>Calendar</code> defines a locale-specific seven day week using two
+ * parameters: the first day of the week and the minimal days in first week
+ * (from 1 to 7).  These numbers are taken from the locale resource data when a
+ * <code>Calendar</code> is constructed.  They may also be specified explicitly
+ * through the API.
+ *
+ * <p>When setting or getting the <code>WEEK_OF_MONTH</code> or
+ * <code>WEEK_OF_YEAR</code> fields, <code>Calendar</code> must determine the
+ * first week of the month or year as a reference point.  The first week of a
+ * month or year is defined as the earliest seven day period beginning on
+ * <code>getFirstDayOfWeek()</code> and containing at least
+ * <code>getMinimalDaysInFirstWeek()</code> days of that month or year.  Weeks
+ * numbered ..., -1, 0 precede the first week; weeks numbered 2, 3,... follow
+ * it.  Note that the normalized numbering returned by <code>get()</code> may be
+ * different.  For example, a specific <code>Calendar</code> subclass may
+ * designate the week before week 1 of a year as week <em>n</em> of the previous
+ * year.
+ *
+ * <p> When computing a <code>Date</code> from time fields, two special
+ * circumstances may arise: there may be insufficient information to compute the
+ * <code>Date</code> (such as only year and month but no day in the month), or
+ * there may be inconsistent information (such as "Tuesday, July 15, 1996" --
+ * July 15, 1996 is actually a Monday).
+ *
+ * <p>
+ * <strong>Insufficient information.</strong> The calendar will use default
+ * information to specify the missing fields. This may vary by calendar; for
+ * the Gregorian calendar, the default for a field is the same as that of the
+ * start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc.
+ *
+ * <p>
+ * <strong>Inconsistent information.</strong> If fields conflict, the calendar
+ * will give preference to fields set more recently. For example, when
+ * determining the day, the calendar will look for one of the following
+ * combinations of fields.  The most recent combination, as determined by the
+ * most recently set single field, will be used.
+ *
+ * <blockquote>
+ * <pre>
+ * MONTH + DAY_OF_MONTH
+ * MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ * MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
+ * DAY_OF_YEAR
+ * DAY_OF_WEEK + WEEK_OF_YEAR</pre>
+ * </blockquote>
+ *
+ * For the time of day:
+ *
+ * <blockquote>
+ * <pre>
+ * HOUR_OF_DAY
+ * AM_PM + HOUR</pre>
+ * </blockquote>
+ *
+ * <p>
+ * <strong>Note:</strong> for some non-Gregorian calendars, different
+ * fields may be necessary for complete disambiguation. For example, a full
+ * specification of the historial Arabic astronomical calendar requires year,
+ * month, day-of-month <em>and</em> day-of-week in some cases.
+ *
+ * <p>
+ * <strong>Note:</strong> There are certain possible ambiguities in
+ * interpretation of certain singular times, which are resolved in the
+ * following ways:
+ * <ol>
+ *     <li> 24:00:00 "belongs" to the following day. That is,
+ *          23:59 on Dec 31, 1969 &lt; 24:00 on Jan 1, 1970 &lt; 24:01:00 on Jan 1, 1970
+ *
+ *     <li> Although historically not precise, midnight also belongs to "am",
+ *          and noon belongs to "pm", so on the same day,
+ *          12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm
+ * </ol>
+ *
+ * <p>
+ * The date or time format strings are not part of the definition of a
+ * calendar, as those must be modifiable or overridable by the user at
+ * runtime. Use {@link DateFormat}
+ * to format dates.
+ *
+ * <p><strong>Field manipulation methods</strong></p>
+ *
+ * <p><code>Calendar</code> fields can be changed using three methods:
+ * <code>set()</code>, <code>add()</code>, and <code>roll()</code>.</p>
+ *
+ * <p><strong><code>set(f, value)</code></strong> changes field
+ * <code>f</code> to <code>value</code>.  In addition, it sets an
+ * internal member variable to indicate that field <code>f</code> has
+ * been changed. Although field <code>f</code> is changed immediately,
+ * the calendar's milliseconds is not recomputed until the next call to
+ * <code>get()</code>, <code>getTime()</code>, or
+ * <code>getTimeInMillis()</code> is made. Thus, multiple calls to
+ * <code>set()</code> do not trigger multiple, unnecessary
+ * computations. As a result of changing a field using
+ * <code>set()</code>, other fields may also change, depending on the
+ * field, the field value, and the calendar system. In addition,
+ * <code>get(f)</code> will not necessarily return <code>value</code>
+ * after the fields have been recomputed. The specifics are determined by
+ * the concrete calendar class.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>set(Calendar.MONTH,
+ * Calendar.SEPTEMBER)</code> sets the calendar to September 31,
+ * 1999. This is a temporary internal representation that resolves to
+ * October 1, 1999 if <code>getTime()</code>is then called. However, a
+ * call to <code>set(Calendar.DAY_OF_MONTH, 30)</code> before the call to
+ * <code>getTime()</code> sets the calendar to September 30, 1999, since
+ * no recomputation occurs after <code>set()</code> itself.</p>
+ *
+ * <p><strong><code>add(f, delta)</code></strong> adds <code>delta</code>
+ * to field <code>f</code>.  This is equivalent to calling <code>set(f,
+ * get(f) + delta)</code> with two adjustments:</p>
+ *
+ * <blockquote>
+ *   <p><strong>Add rule 1</strong>. The value of field <code>f</code>
+ *   after the call minus the value of field <code>f</code> before the
+ *   call is <code>delta</code>, modulo any overflow that has occurred in
+ *   field <code>f</code>. Overflow occurs when a field value exceeds its
+ *   range and, as a result, the next larger field is incremented or
+ *   decremented and the field value is adjusted back into its range.</p>
+ *
+ *   <p><strong>Add rule 2</strong>. If a smaller field is expected to be
+ *   invariant, but &nbsp; it is impossible for it to be equal to its
+ *   prior value because of changes in its minimum or maximum after field
+ *   <code>f</code> is changed, then its value is adjusted to be as close
+ *   as possible to its expected value. A smaller field represents a
+ *   smaller unit of time. <code>HOUR</code> is a smaller field than
+ *   <code>DAY_OF_MONTH</code>. No adjustment is made to smaller fields
+ *   that are not expected to be invariant. The calendar system
+ *   determines what fields are expected to be invariant.</p>
+ * </blockquote>
+ *
+ * <p>In addition, unlike <code>set()</code>, <code>add()</code> forces
+ * an immediate recomputation of the calendar's milliseconds and all
+ * fields.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>add(Calendar.MONTH,
+ * 13)</code> sets the calendar to September 30, 2000. <strong>Add rule
+ * 1</strong> sets the <code>MONTH</code> field to September, since
+ * adding 13 months to August gives September of the next year. Since
+ * <code>DAY_OF_MONTH</code> cannot be 31 in September in a
+ * <code>GregorianCalendar</code>, <strong>add rule 2</strong> sets the
+ * <code>DAY_OF_MONTH</code> to 30, the closest possible value. Although
+ * it is a smaller field, <code>DAY_OF_WEEK</code> is not adjusted by
+ * rule 2, since it is expected to change when the month changes in a
+ * <code>GregorianCalendar</code>.</p>
+ *
+ * <p><strong><code>roll(f, delta)</code></strong> adds
+ * <code>delta</code> to field <code>f</code> without changing larger
+ * fields. This is equivalent to calling <code>add(f, delta)</code> with
+ * the following adjustment:</p>
+ *
+ * <blockquote>
+ *   <p><strong>Roll rule</strong>. Larger fields are unchanged after the
+ *   call. A larger field represents a larger unit of
+ *   time. <code>DAY_OF_MONTH</code> is a larger field than
+ *   <code>HOUR</code>.</p>
+ * </blockquote>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>roll(Calendar.MONTH,
+ * 8)</code> sets the calendar to April 30, <strong>1999</strong>.  Add
+ * rule 1 sets the <code>MONTH</code> field to April. Using a
+ * <code>GregorianCalendar</code>, the <code>DAY_OF_MONTH</code> cannot
+ * be 31 in the month April. Add rule 2 sets it to the closest possible
+ * value, 30. Finally, the <strong>roll rule</strong> maintains the
+ * <code>YEAR</code> field value of 1999.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to Sunday June 6, 1999. Calling
+ * <code>roll(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Tuesday June 1, 1999, whereas calling
+ * <code>add(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Sunday May 30, 1999. This is because the roll rule imposes an
+ * additional constraint: The <code>MONTH</code> must not change when the
+ * <code>WEEK_OF_MONTH</code> is rolled. Taken together with add rule 1,
+ * the resultant date must be between Tuesday June 1 and Saturday June
+ * 5. According to add rule 2, the <code>DAY_OF_WEEK</code>, an invariant
+ * when changing the <code>WEEK_OF_MONTH</code>, is set to Tuesday, the
+ * closest possible value to Sunday (where Sunday is the first day of the
+ * week).</p>
+ *
+ * <p><strong>Usage model</strong>. To motivate the behavior of
+ * <code>add()</code> and <code>roll()</code>, consider a user interface
+ * component with increment and decrement buttons for the month, day, and
+ * year, and an underlying <code>GregorianCalendar</code>. If the
+ * interface reads January 31, 1999 and the user presses the month
+ * increment button, what should it read? If the underlying
+ * implementation uses <code>set()</code>, it might read March 3, 1999. A
+ * better result would be February 28, 1999. Furthermore, if the user
+ * presses the month increment button again, it should read March 31,
+ * 1999, not March 28, 1999. By saving the original date and using either
+ * <code>add()</code> or <code>roll()</code>, depending on whether larger
+ * fields should be affected, the user interface can behave as most users
+ * will intuitively expect.</p>
+ *
+ * <p><b>Note:</b> You should always use {@link #roll roll} and {@link #add add} rather
+ * than attempting to perform arithmetic operations directly on the fields
+ * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+ * to have fields with non-linear behavior, for example missing months
+ * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+ * methods will take this into account, while simple arithmetic manipulations
+ * may give invalid results.
+ *
+ * <p><big><big><b>Calendar Architecture in ICU4J</b></big></big></p>
+ *
+ * <p>Recently the implementation of <code>Calendar</code> has changed
+ * significantly in order to better support subclassing. The original
+ * <code>Calendar</code> class was designed to support subclassing, but
+ * it had only one implemented subclass, <code>GregorianCalendar</code>.
+ * With the implementation of several new calendar subclasses, including
+ * the <code>BuddhistCalendar</code>, <code>ChineseCalendar</code>,
+ * <code>HebrewCalendar</code>, <code>IslamicCalendar</code>, and
+ * <code>JapaneseCalendar</code>, the subclassing API has been reworked
+ * thoroughly. This section details the new subclassing API and other
+ * ways in which <code>com.ibm.icu.util.Calendar</code> differs from
+ * <code>java.util.Calendar</code>.
+ * </p>
+ *
+ * <p><big><b>Changes</b></big></p>
+ *
+ * <p>Overview of changes between the classic <code>Calendar</code>
+ * architecture and the new architecture.
+ *
+ * <ul>
+ *
+ *   <li>The <code>fields[]</code> array is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses must access it
+ *     using the methods {@link #internalSet} and
+ *     {@link #internalGet}.  <b>Motivation:</b> Subclasses should
+ *     not directly access data members.</li>
+ *
+ *   <li>The <code>time</code> long word is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses may access it using
+ *     the method {@link #internalGetTimeInMillis}, which does not
+ *     provoke an update. <b>Motivation:</b> Subclasses should not
+ *     directly access data members.</li>
+ *
+ *   <li>The scope of responsibility of subclasses has been drastically
+ *     reduced. As much functionality as possible is implemented in the
+ *     <code>Calendar</code> base class. As a result, it is much easier
+ *     to subclass <code>Calendar</code>. <b>Motivation:</b> Subclasses
+ *     should not have to reimplement common code. Certain behaviors are
+ *     common across calendar systems: The definition and behavior of
+ *     week-related fields and time fields, the arithmetic
+ *     ({@link #add(int, int) add} and {@link #roll(int, int) roll}) behavior of many
+ *     fields, and the field validation system.</li>
+ *
+ *   <li>The subclassing API has been completely redesigned.</li>
+ *
+ *   <li>The <code>Calendar</code> base class contains some Gregorian
+ *     calendar algorithmic support that subclasses can use (specifically
+ *     in {@link #handleComputeFields}).  Subclasses can use the
+ *     methods <code>getGregorianXxx()</code> to obtain precomputed
+ *     values. <b>Motivation:</b> This is required by all
+ *     <code>Calendar</code> subclasses in order to implement consistent
+ *     time zone behavior, and Gregorian-derived systems can use the
+ *     already computed data.</li>
+ *
+ *   <li>The <code>FIELD_COUNT</code> constant has been removed. Use
+ *     {@link #getFieldCount}.  In addition, framework API has been
+ *     added to allow subclasses to define additional fields.
+ *     <b>Motivation: </b>The number of fields is not constant across
+ *     calendar systems.</li>
+ *
+ *   <li>The range of handled dates has been narrowed from +/-
+ *     ~300,000,000 years to +/- ~5,000,000 years. In practical terms
+ *     this should not affect clients. However, it does mean that client
+ *     code cannot be guaranteed well-behaved results with dates such as
+ *     <code>Date(Long.MIN_VALUE)</code> or
+ *     <code>Date(Long.MAX_VALUE)</code>. Instead, the
+ *     <code>Calendar</code> constants {@link #MIN_DATE},
+ *     {@link #MAX_DATE}, {@link #MIN_MILLIS},
+ *     {@link #MAX_MILLIS}, {@link #MIN_JULIAN}, and
+ *     {@link #MAX_JULIAN} should be used. <b>Motivation:</b> With
+ *     the addition of the {@link #JULIAN_DAY} field, Julian day
+ *     numbers must be restricted to a 32-bit <code>int</code>.  This
+ *     restricts the overall supported range. Furthermore, restricting
+ *     the supported range simplifies the computations by removing
+ *     special case code that was used to accomodate arithmetic overflow
+ *     at millis near <code>Long.MIN_VALUE</code> and
+ *     <code>Long.MAX_VALUE</code>.</li>
+ *
+ *   <li>New fields are implemented: {@link #JULIAN_DAY} defines
+ *     single-field specification of the
+ *     date. {@link #MILLISECONDS_IN_DAY} defines a single-field
+ *     specification of the wall time. {@link #DOW_LOCAL} and
+ *     {@link #YEAR_WOY} implement localized day-of-week and
+ *     week-of-year behavior.</li>
+ *
+ *   <li>Subclasses can access millisecond constants
+ *     {@link #ONE_SECOND}, {@link #ONE_MINUTE},
+ *     {@link #ONE_HOUR}, {@link #ONE_DAY}, and
+ *     {@link #ONE_WEEK} defined in <code>Calendar</code>.</li>
+ *
+ *   <li>New API has been added to suport calendar-specific subclasses
+ *     of <code>DateFormat</code>.</li>
+ *
+ *   <li>Several subclasses have been implemented, representing
+ *     various international calendar systems.</li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Subclass API</b></big></p>
+ *
+ * <p>The original <code>Calendar</code> API was based on the experience
+ * of implementing a only a single subclass,
+ * <code>GregorianCalendar</code>. As a result, all of the subclassing
+ * kinks had not been worked out. The new subclassing API has been
+ * refined based on several implemented subclasses. This includes methods
+ * that must be overridden and methods for subclasses to call. Subclasses
+ * no longer have direct access to <code>fields</code> and
+ * <code>stamp</code>. Instead, they have new API to access
+ * these. Subclasses are able to allocate the <code>fields</code> array
+ * through a protected framework method; this allows subclasses to
+ * specify additional fields. </p>
+ *
+ * <p>More functionality has been moved into the base class. The base
+ * class now contains much of the computational machinery to support the
+ * Gregorian calendar. This is based on two things: (1) Many calendars
+ * are based on the Gregorian calendar (such as the Buddhist and Japanese
+ * imperial calendars). (2) <em>All</em> calendars require basic
+ * Gregorian support in order to handle timezone computations. </p>
+ *
+ * <p>Common computations have been moved into
+ * <code>Calendar</code>. Subclasses no longer compute the week related
+ * fields and the time related fields. These are commonly handled for all
+ * calendars by the base class. </p>
+ *
+ * <p><b>Subclass computation of time <tt>=&gt;</tt> fields</b>
+ *
+ * <p>The {@link #ERA}, {@link #YEAR},
+ * {@link #EXTENDED_YEAR}, {@link #MONTH},
+ * {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields are
+ * computed by the subclass, based on the Julian day. All other fields
+ * are computed by <code>Calendar</code>.
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleComputeFields}
+ *     to compute the {@link #ERA}, {@link #YEAR},
+ *     {@link #EXTENDED_YEAR}, {@link #MONTH},
+ *     {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields,
+ *     based on the value of the {@link #JULIAN_DAY} field. If there
+ *     are calendar-specific fields not defined by <code>Calendar</code>,
+ *     they must also be computed. These are the only fields that the
+ *     subclass should compute. All other fields are computed by the base
+ *     class, so time and week fields behave in a consistent way across
+ *     all calendars. The default version of this method in
+ *     <code>Calendar</code> implements a proleptic Gregorian
+ *     calendar. Within this method, subclasses may call
+ *     <code>getGregorianXxx()</code> to obtain the Gregorian calendar
+ *     month, day of month, and extended year for the given date.</li>
+ *
+ * </ul>
+ *
+ * <p><b>Subclass computation of fields <tt>=&gt;</tt> time</b>
+ *
+ * <p>The interpretation of most field values is handled entirely by
+ * <code>Calendar</code>. <code>Calendar</code> determines which fields
+ * are set, which are not, which are set more recently, and so on. In
+ * addition, <code>Calendar</code> handles the computation of the time
+ * from the time fields and handles the week-related fields. The only
+ * thing the subclass must do is determine the extended year, based on
+ * the year fields, and then, given an extended year and a month, it must
+ * return a Julian day number.
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleGetExtendedYear}
+ *     to return the extended year for this calendar system, based on the
+ *     {@link #YEAR}, {@link #EXTENDED_YEAR}, and any fields that
+ *     the calendar system uses that are larger than a year, such as
+ *     {@link #ERA}.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleComputeMonthStart}
+ *     to return the Julian day number
+ *     associated with a month and extended year. This is the Julian day
+ *     number of the day before the first day of the month. The month
+ *     number is zero-based. This computation should not depend on any
+ *     field values.</li>
+ *
+ * </ul>
+ *
+ * <p><b>Other methods</b>
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleGetMonthLength}
+ *     to return the number of days in a
+ *     given month of a given extended year. The month number, as always,
+ *     is zero-based.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleGetYearLength}
+ *     to return the number of days in the given
+ *     extended year. This method is used by
+ *     <tt>computeWeekFields</tt> to compute the
+ *     {@link #WEEK_OF_YEAR} and {@link #YEAR_WOY} fields.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleGetLimit}
+ *     to return the {@link #MINIMUM},
+ *     {@link #GREATEST_MINIMUM}, {@link #LEAST_MAXIMUM}, or
+ *     {@link #MAXIMUM} of a field, depending on the value of
+ *     <code>limitType</code>. This method only needs to handle the
+ *     fields {@link #ERA}, {@link #YEAR}, {@link #MONTH},
+ *     {@link #WEEK_OF_YEAR}, {@link #WEEK_OF_MONTH},
+ *     {@link #DAY_OF_MONTH}, {@link #DAY_OF_YEAR},
+ *     {@link #DAY_OF_WEEK_IN_MONTH}, {@link #YEAR_WOY}, and
+ *     {@link #EXTENDED_YEAR}.  Other fields are invariant (with
+ *     respect to calendar system) and are handled by the base
+ *     class.</li>
+ *
+ *   <li>Optionally, subclasses may override {@link #validateField}
+ *     to check any subclass-specific fields. If the
+ *     field's value is out of range, the method should throw an
+ *     <code>IllegalArgumentException</code>. The method may call
+ *     <code>super.validateField(field)</code> to handle fields in a
+ *     generic way, that is, to compare them to the range
+ *     <code>getMinimum(field)</code>..<code>getMaximum(field)</code>.</li>
+ *
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleCreateFields} to create an <code>int[]</code>
+ *     array large enough to hold the calendar's fields. This is only
+ *     necessary if the calendar defines additional fields beyond those
+ *     defined by <code>Calendar</code>. The length of the result must be
+ *     at least {@link #BASE_FIELD_COUNT} and no more than
+ *     {@link #MAX_FIELD_COUNT}.</li>
+ *
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleGetDateFormat} to create a
+ *     <code>DateFormat</code> appropriate to this calendar. This is only
+ *     required if a calendar subclass redefines the use of a field (for
+ *     example, changes the {@link #ERA} field from a symbolic field
+ *     to a numeric one) or defines an additional field.</li>
+ *
+ *   <li>Optionally, subclasses may override {@link #roll roll} and
+ *     {@link #add add} to handle fields that are discontinuous. For
+ *     example, in the Hebrew calendar the month &quot;Adar I&quot; only
+ *     occurs in leap years; in other years the calendar jumps from
+ *     Shevat (month #4) to Adar (month #6). The {@link
+ *     HebrewCalendar#add HebrewCalendar.add} and {@link
+ *     HebrewCalendar#roll HebrewCalendar.roll} methods take this into
+ *     account, so that adding 1 month to Shevat gives the proper result
+ *     (Adar) in a non-leap year. The protected utility method {@link
+ *     #pinField pinField} is often useful when implementing these two
+ *     methods. </li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Normalized behavior</b></big>
+ *
+ * <p>The behavior of certain fields has been made consistent across all
+ * calendar systems and implemented in <code>Calendar</code>.
+ *
+ * <ul>
+ *
+ *   <li>Time is normalized. Even though some calendar systems transition
+ *     between days at sunset or at other times, all ICU4J calendars
+ *     transition between days at <em>local zone midnight</em>.  This
+ *     allows ICU4J to centralize the time computations in
+ *     <code>Calendar</code> and to maintain basic correpsondences
+ *     between calendar systems. Affected fields: {@link #AM_PM},
+ *     {@link #HOUR}, {@link #HOUR_OF_DAY}, {@link #MINUTE},
+ *     {@link #SECOND}, {@link #MILLISECOND},
+ *     {@link #ZONE_OFFSET}, and {@link #DST_OFFSET}.</li>
+ *
+ *   <li>DST behavior is normalized. Daylight savings time behavior is
+ *     computed the same for all calendar systems, and depends on the
+ *     value of several <code>GregorianCalendar</code> fields: the
+ *     {@link #YEAR}, {@link #MONTH}, and
+ *     {@link #DAY_OF_MONTH}. As a result, <code>Calendar</code>
+ *     always computes these fields, even for non-Gregorian calendar
+ *     systems. These fields are available to subclasses.</li>
+ *
+ *   <li>Weeks are normalized. Although locales define the week
+ *     differently, in terms of the day on which it starts, and the
+ *     designation of week number one of a month or year, they all use a
+ *     common mechanism. Furthermore, the day of the week has a simple
+ *     and consistent definition throughout history. For example,
+ *     although the Gregorian calendar introduced a discontinuity when
+ *     first instituted, the day of week was not disrupted. For this
+ *     reason, the fields {@link #DAY_OF_WEEK}, <code>WEEK_OF_YEAR,
+ *     WEEK_OF_MONTH</code>, {@link #DAY_OF_WEEK_IN_MONTH},
+ *     {@link #DOW_LOCAL}, {@link #YEAR_WOY} are all computed in
+ *     a consistent way in the base class, based on the
+ *     {@link #EXTENDED_YEAR}, {@link #DAY_OF_YEAR},
+ *     {@link #MONTH}, and {@link #DAY_OF_MONTH}, which are
+ *     computed by the subclass.</li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Supported range</b></big>
+ *
+ * <p>The allowable range of <code>Calendar</code> has been
+ * narrowed. <code>GregorianCalendar</code> used to attempt to support
+ * the range of dates with millisecond values from
+ * <code>Long.MIN_VALUE</code> to <code>Long.MAX_VALUE</code>. This
+ * introduced awkward constructions (hacks) which slowed down
+ * performance. It also introduced non-uniform behavior at the
+ * boundaries. The new <code>Calendar</code> protocol specifies the
+ * maximum range of supportable dates as those having Julian day numbers
+ * of <code>-0x7F000000</code> to <code>+0x7F000000</code>. This
+ * corresponds to years from ~5,000,000 BCE to ~5,000,000 CE. Programmers
+ * should use the constants {@link #MIN_DATE} (or
+ * {@link #MIN_MILLIS} or {@link #MIN_JULIAN}) and
+ * {@link #MAX_DATE} (or {@link #MAX_MILLIS} or
+ * {@link #MAX_JULIAN}) in <code>Calendar</code> to specify an
+ * extremely early or extremely late date.</p>
+ *
+ * <p><big><b>General notes</b></big>
+ *
+ * <ul>
+ *
+ *   <li>Calendars implementations are <em>proleptic</em>. For example,
+ *     even though the Gregorian calendar was not instituted until the
+ *     16th century, the <code>GregorianCalendar</code> class supports
+ *     dates before the historical onset of the calendar by extending the
+ *     calendar system backward in time. Similarly, the
+ *     <code>HebrewCalendar</code> extends backward before the start of
+ *     its epoch into zero and negative years. Subclasses do not throw
+ *     exceptions because a date precedes the historical start of a
+ *     calendar system. Instead, they implement
+ *     {@link #handleGetLimit} to return appropriate limits on
+ *     {@link #YEAR}, {@link #ERA}, etc. fields. Then, if the
+ *     calendar is set to not be lenient, out-of-range field values will
+ *     trigger an exception.</li>
+ *
+ *   <li>Calendar system subclasses compute a <em>extended
+ *     year</em>. This differs from the {@link #YEAR} field in that
+ *     it ranges over all integer values, including zero and negative
+ *     values, and it encapsulates the information of the
+ *     {@link #YEAR} field and all larger fields.  Thus, for the
+ *     Gregorian calendar, the {@link #EXTENDED_YEAR} is computed as
+ *     <code>ERA==AD ? YEAR : 1-YEAR</code>. Another example is the Mayan
+ *     long count, which has years (<code>KUN</code>) and nested cycles
+ *     of years (<code>KATUN</code> and <code>BAKTUN</code>). The Mayan
+ *     {@link #EXTENDED_YEAR} is computed as <code>TUN + 20 * (KATUN
+ *     + 20 * BAKTUN)</code>. The <code>Calendar</code> base class uses
+ *     the {@link #EXTENDED_YEAR} field to compute the week-related
+ *     fields.</li>
+ *
+ * </ul>
+ *
+ * @see          Date
+ * @see          GregorianCalendar
+ * @see          TimeZone
+ * @see          DateFormat
+ * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu, Laura Werner
+ * @stable ICU 2.0
+ */
+public class Calendar implements Serializable, Cloneable, Comparable {
+    private static final long serialVersionUID = 1;
+        
+    /**
+     * @internal
+     */
+    public final java.util.Calendar calendar;
+        
+    /**
+     * @internal
+     * @param delegate the Calendar to which to delegate
+     */
+    public Calendar(java.util.Calendar delegate) {
+        this.calendar = delegate;
+    }
+        
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * era, e.g., AD or BC in the Julian calendar. This is a calendar-specific
+     * value; see subclass documentation.
+     * @see GregorianCalendar#AD
+     * @see GregorianCalendar#BC
+     * @stable ICU 2.0
+     */
+    public final static int ERA = 0;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * year. This is a calendar-specific value; see subclass documentation.
+     * @stable ICU 2.0
+     */
+    public final static int YEAR = 1;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * month. This is a calendar-specific value. The first month of the year is
+     * <code>JANUARY</code>; the last depends on the number of months in a year.
+     * @see #JANUARY
+     * @see #FEBRUARY
+     * @see #MARCH
+     * @see #APRIL
+     * @see #MAY
+     * @see #JUNE
+     * @see #JULY
+     * @see #AUGUST
+     * @see #SEPTEMBER
+     * @see #OCTOBER
+     * @see #NOVEMBER
+     * @see #DECEMBER
+     * @see #UNDECIMBER
+     * @stable ICU 2.0
+     */
+    public final static int MONTH = 2;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current year.  The first week of the year, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_YEAR</code> for days before the first week of
+     * the year.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_YEAR = 3;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current month.  The first week of the month, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_MONTH</code> for days before the first week of
+     * the month.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_MONTH = 4;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DAY_OF_MONTH</code>.
+     * The first day of the month has value 1.
+     * @see #DAY_OF_MONTH
+     * @stable ICU 2.0
+     */
+    public final static int DATE = 5;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DATE</code>.
+     * The first day of the month has value 1.
+     * @see #DATE
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_MONTH = 5;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * number within the current year.  The first day of the year has value 1.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_YEAR = 6;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * of the week.  This field takes values <code>SUNDAY</code>,
+     * <code>MONDAY</code>, <code>TUESDAY</code>, <code>WEDNESDAY</code>,
+     * <code>THURSDAY</code>, <code>FRIDAY</code>, and <code>SATURDAY</code>.
+     * @see #SUNDAY
+     * @see #MONDAY
+     * @see #TUESDAY
+     * @see #WEDNESDAY
+     * @see #THURSDAY
+     * @see #FRIDAY
+     * @see #SATURDAY
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK = 7;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * ordinal number of the day of the week within the current month. Together
+     * with the <code>DAY_OF_WEEK</code> field, this uniquely specifies a day
+     * within a month.  Unlike <code>WEEK_OF_MONTH</code> and
+     * <code>WEEK_OF_YEAR</code>, this field's value does <em>not</em> depend on
+     * <code>getFirstDayOfWeek()</code> or
+     * <code>getMinimalDaysInFirstWeek()</code>.  <code>DAY_OF_MONTH 1</code>
+     * through <code>7</code> always correspond to <code>DAY_OF_WEEK_IN_MONTH
+     * 1</code>; <code>8</code> through <code>15</code> correspond to
+     * <code>DAY_OF_WEEK_IN_MONTH 2</code>, and so on.
+     * <code>DAY_OF_WEEK_IN_MONTH 0</code> indicates the week before
+     * <code>DAY_OF_WEEK_IN_MONTH 1</code>.  Negative values count back from the
+     * end of the month, so the last Sunday of a month is specified as
+     * <code>DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1</code>.  Because
+     * negative values count backward they will usually be aligned differently
+     * within the month than positive values.  For example, if a month has 31
+     * days, <code>DAY_OF_WEEK_IN_MONTH -1</code> will overlap
+     * <code>DAY_OF_WEEK_IN_MONTH 5</code> and the end of <code>4</code>.
+     * @see #DAY_OF_WEEK
+     * @see #WEEK_OF_MONTH
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH = 8;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating
+     * whether the <code>HOUR</code> is before or after noon.
+     * E.g., at 10:04:15.250 PM the <code>AM_PM</code> is <code>PM</code>.
+     * @see #AM
+     * @see #PM
+     * @see #HOUR
+     * @stable ICU 2.0
+     */
+    public final static int AM_PM = 9;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the morning or afternoon. <code>HOUR</code> is used for the 12-hour
+     * clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR</code> is 10.
+     * @see #AM_PM
+     * @see #HOUR_OF_DAY
+     * @stable ICU 2.0
+     */
+    public final static int HOUR = 10;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the day. <code>HOUR_OF_DAY</code> is used for the 24-hour clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR_OF_DAY</code> is 22.
+     * @see #HOUR
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY = 11;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * minute within the hour.
+     * E.g., at 10:04:15.250 PM the <code>MINUTE</code> is 4.
+     * @stable ICU 2.0
+     */
+    public final static int MINUTE = 12;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * second within the minute.
+     * E.g., at 10:04:15.250 PM the <code>SECOND</code> is 15.
+     * @stable ICU 2.0
+     */
+    public final static int SECOND = 13;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * millisecond within the second.
+     * E.g., at 10:04:15.250 PM the <code>MILLISECOND</code> is 250.
+     * @stable ICU 2.0
+     */
+    public final static int MILLISECOND = 14;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * raw offset from GMT in milliseconds.
+     * @stable ICU 2.0
+     */
+    public final static int ZONE_OFFSET = 15;
+        
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * daylight savings offset in milliseconds.
+     * @stable ICU 2.0
+     */
+    public final static int DST_OFFSET = 16;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year corresponding to the
+     * <code>WEEK_OF_YEAR</code> field.  This may be one greater or less
+     * than the value of <code>EXTENDED_YEAR</code>.
+     * @stable ICU 2.0
+     */
+    public static final int YEAR_WOY = 17;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the localized day of week.  This will be a value from 1
+     * to 7 inclusive, with 1 being the localized first day of the week.
+     * @stable ICU 2.0
+     */
+    public static final int DOW_LOCAL = 18;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year.  This is a single number designating
+     * the year of this calendar system, encompassing all supra-year
+     * fields.  For example, for the Julian calendar system, year numbers
+     * are positive, with an era of BCE or CE.  An extended year value for
+     * the Julian calendar system assigns positive values to CE years and
+     * negative values to BCE years, with 1 BCE being year 0.
+     * @stable ICU 2.0
+     */
+    public static final int EXTENDED_YEAR = 19;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the modified Julian day number.  This is different from
+     * the conventional Julian day number in two regards.  First, it
+     * demarcates days at local zone midnight, rather than noon GMT.
+     * Second, it is a local number; that is, it depends on the local time
+     * zone.  It can be thought of as a single number that encompasses all
+     * the date-related fields.
+     * @stable ICU 2.0
+     */
+    public static final int JULIAN_DAY = 20;
+        
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the milliseconds in the day.  This ranges from 0 to
+     * 23:59:59.999 (regardless of DST).  This field behaves
+     * <em>exactly</em> like a composite of all time-related fields, not
+     * including the zone fields.  As such, it also reflects
+     * discontinuities of those fields on DST transition days.  On a day of
+     * DST onset, it will jump forward.  On a day of DST cessation, it will
+     * jump backward.  This reflects the fact that is must be combined with
+     * the DST_OFFSET field to obtain a unique local time value.
+     * @stable ICU 2.0
+     */
+    public static final int MILLISECONDS_IN_DAY = 21;
+        
+    /**
+     * The number of fields defined by this class.  Subclasses may define
+     * addition fields starting with this number.
+     * @stable ICU 2.0
+     */
+    protected static final int BASE_FIELD_COUNT = 22;
+        
+    /**
+     * The maximum number of fields possible.  Subclasses must not define
+     * more total fields than this number.
+     * @stable ICU 2.0
+     */
+    protected static final int MAX_FIELD_COUNT = 32;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Sunday.
+     * @stable ICU 2.0
+     */
+    public final static int SUNDAY = 1;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Monday.
+     * @stable ICU 2.0
+     */
+    public final static int MONDAY = 2;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Tuesday.
+     * @stable ICU 2.0
+     */
+    public final static int TUESDAY = 3;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Wednesday.
+     * @stable ICU 2.0
+     */
+    public final static int WEDNESDAY = 4;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Thursday.
+     * @stable ICU 2.0
+     */
+    public final static int THURSDAY = 5;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Friday.
+     * @stable ICU 2.0
+     */
+    public final static int FRIDAY = 6;
+        
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Saturday.
+     * @stable ICU 2.0
+     */
+    public final static int SATURDAY = 7;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * first month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JANUARY = 0;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * second month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int FEBRUARY = 1;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * third month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int MARCH = 2;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fourth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int APRIL = 3;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fifth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int MAY = 4;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * sixth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JUNE = 5;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * seventh month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JULY = 6;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eighth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int AUGUST = 7;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * ninth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int SEPTEMBER = 8;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * tenth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int OCTOBER = 9;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eleventh month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int NOVEMBER = 10;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * twelfth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int DECEMBER = 11;
+        
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * thirteenth month of the year. Although <code>GregorianCalendar</code>
+     * does not use this value, lunar calendars do.
+     * @stable ICU 2.0
+     */
+    public final static int UNDECIMBER = 12;
+        
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from midnight to just before noon.
+     * @stable ICU 2.0
+     */
+    public final static int AM = 0;
+        
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from noon to just before midnight.
+     * @stable ICU 2.0
+     */
+    public final static int PM = 1;
+        
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekday.
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKDAY = 0;
+        
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekend day.
+     * @see #WEEKDAY
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND = 1;
+        
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as a weekday and transitions to the weekend.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND_ONSET = 2;
+        
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as the weekend and transitions to a weekday.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND_CEASE = 3;
+    /**
+     * Gets a calendar using the default time zone and locale.
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance() {
+        return new Calendar(java.util.Calendar.getInstance());
+    }
+        
+    /**
+     * Gets a calendar using the specified time zone and default locale.
+     * @param zone the time zone to use
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(TimeZone zone) {
+        return new Calendar(java.util.Calendar.getInstance(zone.timeZone));
+    }
+        
+    /**
+     * Gets a calendar using the default time zone and specified locale.
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(Locale aLocale) {
+        return new Calendar(java.util.Calendar.getInstance(aLocale));
+    }
+        
+    /**
+     * Gets a calendar using the default time zone and specified locale.  
+     * @param locale the ulocale for the week data
+     * @return a Calendar.
+     * @stable ICU 3.2
+     */
+    public static synchronized Calendar getInstance(ULocale locale)     {
+        return new Calendar(java.util.Calendar.getInstance(locale.toLocale()));
+    }
+        
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(TimeZone zone, Locale aLocale) {
+        return new Calendar(java.util.Calendar.getInstance(zone.timeZone, aLocale));
+    }
+        
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param locale the ulocale for the week data
+     * @return a Calendar.
+     * @stable ICU 3.2
+     */
+    public static synchronized Calendar getInstance(TimeZone zone, ULocale locale) {
+        return new Calendar(java.util.Calendar.getInstance(zone.timeZone, locale.toLocale()));
+    }
+        
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales() {
+        return java.util.Calendar.getAvailableLocales();
+    }
+        
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     * @draft ICU 3.2 (retain)
+     */
+    public static ULocale[] getAvailableULocales() {
+        if (availableULocales == null) {
+            Locale[] locales = java.util.Calendar.getAvailableLocales();
+            ULocale[] ulocales = new ULocale[locales.length];
+            for (int i = 0; i < locales.length; ++i) {
+                ulocales[i] = ULocale.forLocale(locales[i]);
+            }
+            availableULocales = ulocales;
+        }
+        return (ULocale[])availableULocales.clone();
+    }
+    private static ULocale[] availableULocales;
+        
+    /**
+     * Gets this Calendar's current time.
+     * @return the current time.
+     * @stable ICU 2.0
+     */
+    public final Date getTime() {
+        return calendar.getTime();
+    }
+        
+    /**
+     * Sets this Calendar's current time with the given Date.
+     * <p>
+     * Note: Calling <code>setTime()</code> with
+     * <code>Date(Long.MAX_VALUE)</code> or <code>Date(Long.MIN_VALUE)</code>
+     * may yield incorrect field values from <code>get()</code>.
+     * @param date the given Date.
+     * @stable ICU 2.0
+     */
+    public final void setTime(Date date) {
+        calendar.setTime(date);
+    }
+        
+    /**
+     * Gets this Calendar's current time as a long.
+     * @return the current time as UTC milliseconds from the epoch.
+     * @stable ICU 2.0
+     */
+    public long getTimeInMillis() {
+        return calendar.getTime().getTime();
+    }
+        
+    /**
+     * Sets this Calendar's current time from the given long value.
+     * @param millis the new time in UTC milliseconds from the epoch.
+     * @stable ICU 2.0
+     */
+    public void setTimeInMillis(long millis) {
+        calendar.setTime(new Date(millis));
+    }
+        
+    /**
+     * Gets the value for a given time field.
+     * @param field the given time field.
+     * @return the value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int get(int field) {
+        return calendar.get(field);
+    }
+                
+    /**
+     * Sets the time field with the given value.
+     * @param field the given time field.
+     * @param value the value to be set for the given time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int field, int value) {
+        calendar.set(field, value);
+    }
+        
+    /**
+     * Sets the values for the fields year, month, and date.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date) {
+        calendar.set(year, month, date);
+    }
+        
+    /**
+     * Sets the values for the fields year, month, date, hour, and minute.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date, int hour, int minute) {
+        calendar.set(year, month, date, hour, minute);
+    }
+        
+    /**
+     * Sets the values for the fields year, month, date, hour, minute, and second.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @param second the value used to set the SECOND time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date, int hour, int minute, int second) {
+        calendar.set(year, month, date, hour, minute, second);
+    }
+        
+    /**
+     * Clears the values of all the time fields.
+     * @stable ICU 2.0
+     */
+    public final void clear() {
+        calendar.clear();
+    }
+        
+    /**
+     * Clears the value in the given time field.
+     * @param field the time field to be cleared.
+     * @stable ICU 2.0
+     */
+    public final void clear(int field) {
+        calendar.clear(field);
+    }
+        
+    /**
+     * Determines if the given time field has a value set.
+     * @return true if the given time field has a value set; false otherwise.
+     * @stable ICU 2.0
+     */
+    public final boolean isSet(int field) {
+        return calendar.isSet(field);
+    }
+                
+    /**
+     * Compares this calendar to the specified object.
+     * The result is <code>true</code> if and only if the argument is
+     * not <code>null</code> and is a <code>Calendar</code> object that
+     * represents the same calendar as this object.
+     * @param obj the object to compare with.
+     * @return <code>true</code> if the objects are the same;
+     * <code>false</code> otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        try {
+            return calendar.equals(((Calendar)obj).calendar);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+        
+    /**
+     * Returns true if the given Calendar object is equivalent to this
+     * one.  An equivalent Calendar will behave exactly as this one
+     * does, but it may be set to a different time.  By contrast, for
+     * the equals() method to return true, the other Calendar must
+     * be set to the same time.
+     *
+     * @param other the Calendar to be compared with this Calendar
+     * @stable ICU 2.4
+     */
+    public boolean isEquivalentTo(Calendar other) {
+        return this.getClass() == other.getClass() &&
+            isLenient() == other.isLenient() &&
+            getFirstDayOfWeek() == other.getFirstDayOfWeek() &&
+            getMinimalDaysInFirstWeek() == other.getMinimalDaysInFirstWeek() &&
+            getTimeZone().equals(other.getTimeZone());
+    }
+        
+    /**
+     * Returns a hash code for this calendar.
+     * @return a hash code value for this object.
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return calendar.hashCode();
+    }
+        
+    /**
+     * Return the difference in milliseconds between the moment this
+     * calendar is set to and the moment the given calendar or Date object
+     * is set to.
+     */
+    private long compare(Object that) {
+        long thatMs;
+        if (that instanceof Calendar) {
+            thatMs = ((Calendar)that).getTimeInMillis();
+        } else if (that instanceof Date) {
+            thatMs = ((Date)that).getTime();
+        } else {
+            throw new IllegalArgumentException(that + "is not a Calendar or Date");
+        }
+        return getTimeInMillis() - thatMs;
+    }
+        
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is before
+     * the time of Calendar when; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean before(Object when) {
+        return compare(when) < 0;
+    }
+        
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is after
+     * the time of Calendar when; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean after(Object when) {
+        return compare(when) > 0;
+    }
+        
+    /**
+     * Return the maximum value that this field could have, given the
+     * current date.  For example, with the Gregorian date February 3, 1997
+     * and the {@link #DAY_OF_MONTH DAY_OF_MONTH} field, the actual maximum
+     * is 28; for February 3, 1996 it is 29.
+     *
+     * <p>The actual maximum computation ignores smaller fields and the
+     * current value of like-sized fields.  For example, the actual maximum
+     * of the DAY_OF_YEAR or MONTH depends only on the year and supra-year
+     * fields.  The actual maximum of the DAY_OF_MONTH depends, in
+     * addition, on the MONTH field and any other fields at that
+     * granularity (such as ChineseCalendar.IS_LEAP_MONTH).  The
+     * DAY_OF_WEEK_IN_MONTH field does not depend on the current
+     * DAY_OF_WEEK; it returns the maximum for any day of week in the
+     * current month.  Likewise for the WEEK_OF_MONTH and WEEK_OF_YEAR
+     * fields.
+     *
+     * @param field the field whose maximum is desired
+     * @return the maximum of the given field for the current date of this calendar
+     * @see #getMaximum
+     * @see #getLeastMaximum
+     * @stable ICU 2.0
+     */
+    public int getActualMaximum(int field) {
+        return calendar.getActualMaximum(field);
+    }
+        
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For most fields, this is the same as {@link #getMinimum getMinimum}
+     * and {@link #getGreatestMinimum getGreatestMinimum}.  However, some fields,
+     * especially those related to week number, are more complicated.
+     * <p>
+     * For example, assume {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     * returns 4 and {@link #getFirstDayOfWeek getFirstDayOfWeek} returns SUNDAY.
+     * If the first day of the month is Sunday, Monday, Tuesday, or Wednesday
+     * there will be four or more days in the first week, so it will be week number 1,
+     * and <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 1.  However,
+     * if the first of the month is a Thursday, Friday, or Saturday, there are
+     * <em>not</em> four days in that week, so it is week number 0, and
+     * <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 0.
+     * <p>
+     * @param field the field whose actual minimum value is desired.
+     * @return the minimum of the given field for the current date of this calendar
+     *
+     * @see #getMinimum
+     * @see #getGreatestMinimum
+     * @stable ICU 2.0
+     */
+    public int getActualMinimum(int field) {
+        return calendar.getActualMinimum(field);
+    }
+        
+        
+    /**
+     * Rolls (up/down) a single unit of time on the given field.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling. For
+     * example, to roll the current date up by one day, you can call:
+     * <p>
+     * <code>roll({@link #DATE}, true)</code>
+     * <p>
+     * When rolling on the {@link #YEAR} field, it will roll the year
+     * value in the range between 1 and the value returned by calling
+     * {@link #getMaximum getMaximum}({@link #YEAR}).
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the <code>MONTH</code> field
+     * for the Gregorian date 1/31/96 upward, the <code>DAY_OF_MONTH</code> field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * <b>Note:</b> Calling <tt>roll(field, true)</tt> N times is <em>not</em>
+     * necessarily equivalent to calling <tt>roll(field, N)</tt>.  For example,
+     * imagine that you start with the date Gregorian date January 31, 1995.  If you call
+     * <tt>roll(Calendar.MONTH, 2)</tt>, the result will be March 31, 1995.
+     * But if you call <tt>roll(Calendar.MONTH, true)</tt>, the result will be
+     * February 28, 1995.  Calling it one more time will give March 28, 1995, which
+     * is usually not the desired result.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * @param field the calendar field to roll.
+     *
+     * @param up    indicates if the value of the specified time field is to be
+     *              rolled up or rolled down. Use <code>true</code> if rolling up,
+     *              <code>false</code> otherwise.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @see #add
+     * @stable ICU 2.0
+     */
+    public final void roll(int field, boolean up) {
+        calendar.roll(field, up);
+    }
+        
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Gregorian calendar set to 4/25/96 will result in the date 4/5/96.
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96 by +1, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>roll</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and {@link #getActualMaximum getActualMaximum}.
+     * For most such fields, simple addition, subtraction, and modulus operations
+     * are sufficient to perform the roll.  For week-related fields,
+     * the results of {@link #getFirstDayOfWeek getFirstDayOfWeek} and
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} are also necessary.
+     * Subclasses can override these two methods if their values differ from the defaults.
+     * <p>
+     * Subclasses that have fields for which the assumption of continuity breaks
+     * down must overide <code>roll</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The
+     * {@link HebrewCalendar#roll HebrewCalendar.roll} method takes this into account,
+     * so that rolling the month of Shevat by one gives the proper result (Adar) in a
+     * non-leap year.
+     * <p>
+     * @param field     the calendar field to roll.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, boolean)
+     * @see #add
+     * @stable ICU 2.0
+     */
+    public void roll(int field, int amount) {
+        calendar.roll(field, amount);
+    }
+        
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>.
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>add</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>add</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum}.
+     * For such fields, simple arithmetic operations are sufficient to
+     * perform the add.
+     * <p>
+     * Subclasses that have fields for which this assumption of continuity breaks
+     * down must overide <code>add</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The
+     * {@link HebrewCalendar#add HebrewCalendar.add} method takes this into account,
+     * so that adding one month
+     * to a date in Shevat gives the proper result (Adar) in a non-leap year.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @stable ICU 2.0
+     */
+    public void add(int field, int amount) {
+        calendar.add(field, amount);
+    }
+        
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     * @stable ICU 2.0
+     */
+    public String getDisplayName(Locale loc) {
+        return "Calendar";
+    }
+        
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     * @stable ICU 3.2
+     */
+    public String getDisplayName(ULocale loc) {
+        return "Calendar";
+    }
+        
+    /**
+     * Compares the times (in millis) represented by two
+     * <code>Calendar</code> objects.
+     *
+     * @param that the <code>Calendar</code> to compare to this.
+     * @return <code>0</code> if the time represented by 
+     * this <code>Calendar</code> is equal to the time represented 
+     * by that <code>Calendar</code>, a value less than 
+     * <code>0</code> if the time represented by this is before
+     * the time represented by that, and a value greater than
+     * <code>0</code> if the time represented by this
+     * is after the time represented by that.
+     * @throws NullPointerException if that 
+     * <code>Calendar</code> is null.
+     * @throws IllegalArgumentException if the time of that 
+     * <code>Calendar</code> can't be obtained because of invalid
+     * calendar values.
+     * @stable ICU 3.4
+     */
+    public int compareTo(Calendar that) {
+        long v = getTimeInMillis() - that.getTimeInMillis();
+        return v < 0 ? -1 : (v > 0 ? 1 : 0);
+    }
+        
+    /**
+     * Implement comparable API as a convenience override of
+     * {@link #compareTo(Calendar)}.
+     * @stable ICU 3.4
+     */
+    public int compareTo(Object that) {
+        return compareTo((Calendar)that);
+    }
+        
+    //-------------------------------------------------------------------------
+    // Interface for creating custon DateFormats for different types of Calendars
+    //-------------------------------------------------------------------------
+        
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * @stable ICU 2.0
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, Locale loc) {
+        return formatHelper(this, loc, dateStyle, timeStyle);
+    }
+        
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * @stable ICU 3.2
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, ULocale loc) {
+        return formatHelper(this, loc.toLocale(), dateStyle, timeStyle);
+    }
+        
+    /*
+     * Utility for formatting.
+     */
+    private static DateFormat formatHelper(Calendar cal, Locale loc, int dateStyle, int timeStyle) {
+        // Assume there is only one kind of calendar.  In Java 6 there will also be Japanese
+        // calendars, but we'll worry about that when it happens.
+        DateFormat df = DateFormat.getDateTimeInstance(dateStyle, timeStyle, loc);
+        df.setCalendar(cal);
+        return df;
+    }
+
+    //-------------------------------------------------------------------------
+    // Constants
+    //-------------------------------------------------------------------------
+        
+    /**
+     * [NEW]
+     * Return the difference between the given time and the time this
+     * calendar object is set to.  If this calendar is set
+     * <em>before</em> the given time, the returned value will be
+     * positive.  If this calendar is set <em>after</em> the given
+     * time, the returned value will be negative.  The
+     * <code>field</code> parameter specifies the units of the return
+     * value.  For example, if <code>fieldDifference(when,
+     * Calendar.MONTH)</code> returns 3, then this calendar is set to
+     * 3 months before <code>when</code>, and possibly some additional
+     * time less than one month.
+     *
+     * <p>As a side effect of this call, this calendar is advanced
+     * toward <code>when</code> by the given amount.  That is, calling
+     * this method has the side effect of calling <code>add(field,
+     * n)</code>, where <code>n</code> is the return value.
+     *
+     * <p>Usage: To use this method, call it first with the largest
+     * field of interest, then with progressively smaller fields.  For
+     * example:
+     *
+     * <pre>
+     * int y = cal.fieldDifference(when, Calendar.YEAR);
+     * int m = cal.fieldDifference(when, Calendar.MONTH);
+     * int d = cal.fieldDifference(when, Calendar.DATE);</pre>
+     *
+     * computes the difference between <code>cal</code> and
+     * <code>when</code> in years, months, and days.
+     *
+     * <p>Note: <code>fieldDifference()</code> is
+     * <em>asymmetrical</em>.  That is, in the following code:
+     *
+     * <pre>
+     * cal.setTime(date1);
+     * int m1 = cal.fieldDifference(date2, Calendar.MONTH);
+     * int d1 = cal.fieldDifference(date2, Calendar.DATE);
+     * cal.setTime(date2);
+     * int m2 = cal.fieldDifference(date1, Calendar.MONTH);
+     * int d2 = cal.fieldDifference(date1, Calendar.DATE);</pre>
+     *
+     * one might expect that <code>m1 == -m2 && d1 == -d2</code>.
+     * However, this is not generally the case, because of
+     * irregularities in the underlying calendar system (e.g., the
+     * Gregorian calendar has a varying number of days per month).
+     *
+     * @param when the date to compare this calendar's time to
+     * @param field the field in which to compute the result
+     * @return the difference, either positive or negative, between
+     * this calendar's time and <code>when</code>, in terms of
+     * <code>field</code>.
+     * @stable ICU 2.0
+     */
+    public int fieldDifference(Date when, int field) {
+        int min = 0;
+        long startMs = getTimeInMillis();
+        long targetMs = when.getTime();
+        // Always add from the start millis.  This accomodates
+        // operations like adding years from February 29, 2000 up to
+        // February 29, 2004.  If 1, 1, 1, 1 is added to the year
+        // field, the DOM gets pinned to 28 and stays there, giving an
+        // incorrect DOM difference of 1.  We have to add 1, reset, 2,
+        // reset, 3, reset, 4.
+        if (startMs < targetMs) {
+            int max = 1;
+            // Find a value that is too large
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms > targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max < 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((max - min) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms > targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        } else if (startMs > targetMs) {
+            if (false) {
+                // This works, and makes the code smaller, but costs
+                // an extra object creation and an extra couple cycles
+                // of calendar computation.
+                setTimeInMillis(targetMs);
+                min = -fieldDifference(new Date(startMs), field);
+            }
+            int max = -1;
+            // Find a value that is too small
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms < targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max == 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((min - max) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms < targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        }
+        // Set calendar to end point
+        setTimeInMillis(startMs);
+        add(field, min);
+        return min;
+    }
+        
+    /**
+     * Sets the time zone with the given time zone value.
+     * @param value the given time zone.
+     * @stable ICU 2.0
+     */
+    public void setTimeZone(TimeZone value) {
+        calendar.setTimeZone(value.timeZone);
+    }
+        
+    /**
+     * Gets the time zone.
+     * @return the time zone object associated with this calendar.
+     * @stable ICU 2.0
+     */
+    public TimeZone getTimeZone() {
+        return new TimeZone(calendar.getTimeZone());
+    }
+        
+    /**
+     * Specify whether or not date/time interpretation is to be lenient.  With
+     * lenient interpretation, a date such as "February 942, 1996" will be
+     * treated as being equivalent to the 941st day after February 1, 1996.
+     * With strict interpretation, such dates will cause an exception to be
+     * thrown.
+     *
+     * @see DateFormat#setLenient
+     * @stable ICU 2.0
+     */
+    public void setLenient(boolean lenient)     {
+        calendar.setLenient(lenient);
+    }
+        
+    /**
+     * Tell whether date/time interpretation is to be lenient.
+     * @stable ICU 2.0
+     */
+    public boolean isLenient() {
+        return calendar.isLenient();
+    }
+        
+    /**
+     * Sets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @param value the given first day of the week.
+     * @stable ICU 2.0
+     */
+    public void setFirstDayOfWeek(int value) {
+        calendar.setFirstDayOfWeek(value);
+    }
+        
+    /**
+     * Gets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @return the first day of the week.
+     * @stable ICU 2.0
+     */
+    public int getFirstDayOfWeek() {
+        return calendar.getFirstDayOfWeek();
+    }
+        
+    /**
+     * Sets what the minimal days required in the first week of the year are.
+     * For example, if the first week is defined as one that contains the first
+     * day of the first month of a year, call the method with value 1. If it
+     * must be a full week, use value 7.
+     * @param value the given minimal days required in the first week
+     * of the year.
+     * @stable ICU 2.0
+     */
+    public void setMinimalDaysInFirstWeek(int value) {
+        calendar.setMinimalDaysInFirstWeek(value);
+    }
+        
+    /**
+     * Gets what the minimal days required in the first week of the year are;
+     * e.g., if the first week is defined as one that contains the first day
+     * of the first month of a year, getMinimalDaysInFirstWeek returns 1. If
+     * the minimal days required must be a full week, getMinimalDaysInFirstWeek
+     * returns 7.
+     * @return the minimal days required in the first week of the year.
+     * @stable ICU 2.0
+     */
+    public int getMinimalDaysInFirstWeek() {
+        return calendar.getMinimalDaysInFirstWeek();
+    }
+        
+    /**
+     * Gets the minimum value for the given time field.
+     * e.g., for Gregorian DAY_OF_MONTH, 1.
+     * @param field the given time field.
+     * @return the minimum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getMinimum(int field) {
+        return calendar.getMinimum(field);
+    }
+        
+    /**
+     * Gets the maximum value for the given time field.
+     * e.g. for Gregorian DAY_OF_MONTH, 31.
+     * @param field the given time field.
+     * @return the maximum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getMaximum(int field) {
+        return calendar.getMaximum(field);
+    }
+        
+    /**
+     * Gets the highest minimum value for the given field if varies.
+     * Otherwise same as getMinimum(). For Gregorian, no difference.
+     * @param field the given time field.
+     * @return the highest minimum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getGreatestMinimum(int field) {
+        return calendar.getGreatestMinimum(field);
+    }
+        
+    /**
+     * Gets the lowest maximum value for the given field if varies.
+     * Otherwise same as getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
+     * @param field the given time field.
+     * @return the lowest maximum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getLeastMaximum(int field) {
+        return calendar.getLeastMaximum(field);
+    }
+        
+    //-------------------------------------------------------------------------
+    // Weekend support -- determining which days of the week are the weekend
+    // in a given locale
+    //-------------------------------------------------------------------------
+        
+    /**
+     * Return whether the given day of the week is a weekday, a
+     * weekend day, or a day that transitions from one to the other,
+     * in this calendar system.  If a transition occurs at midnight,
+     * then the days before and after the transition will have the
+     * type WEEKDAY or WEEKEND.  If a transition occurs at a time
+     * other than midnight, then the day of the transition will have
+     * the type WEEKEND_ONSET or WEEKEND_CEASE.  In this case, the
+     * method getWeekendTransition() will return the point of
+     * transition.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return either WEEKDAY, WEEKEND, WEEKEND_ONSET, or
+     * WEEKEND_CEASE
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * between SUNDAY and SATURDAY, inclusive
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public int getDayOfWeekType(int dayOfWeek) {
+        // weekend always full saturday and sunday
+        if (dayOfWeek < 1 || dayOfWeek > 7) {
+            throw new IllegalArgumentException("illegal day of week: " + dayOfWeek);
+        }
+        return dayOfWeek >= SATURDAY ? WEEKEND : WEEKDAY;
+    }
+        
+    /**
+     * Return the time during the day at which the weekend begins or end in
+     * this calendar system.  If getDayOfWeekType(dayOfWeek) ==
+     * WEEKEND_ONSET return the time at which the weekend begins.  If
+     * getDayOfWeekType(dayOfWeek) == WEEKEND_CEASE return the time at
+     * which the weekend ends.  If getDayOfWeekType(dayOfWeek) has some
+     * other value, then throw an exception.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return the milliseconds after midnight at which the
+     * weekend begins or ends
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * WEEKEND_ONSET or WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public int getWeekendTransition(int dayOfWeek) {
+        throw new IllegalArgumentException("Not weekend transition day");
+    }
+        
+    /**
+     * Return true if the given date and time is in the weekend in
+     * this calendar system.  Equivalent to calling setTime() followed
+     * by isWeekend().  Note: This method changes the time this
+     * calendar is set to.
+     * @param date the date and time
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public boolean isWeekend(Date date) {
+        calendar.setTime(date);
+        return isWeekend();
+    }
+        
+    /**
+     * Return true if this Calendar's current date and time is in the
+     * weekend in this calendar system.
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @stable ICU 2.0
+     */
+    public boolean isWeekend() {
+        return calendar.get(Calendar.DAY_OF_WEEK) >= SATURDAY;
+    }
+        
+    //-------------------------------------------------------------------------
+    // End of weekend support
+    //-------------------------------------------------------------------------
+        
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new Calendar((java.util.Calendar)calendar.clone());
+    }
+        
+    /**
+     * Return a string representation of this calendar. This method
+     * is intended to be used only for debugging purposes, and the
+     * format of the returned string may vary between implementations.
+     * The returned string may be empty but may not be <code>null</code>.
+     *
+     * @return  a string representation of this calendar.
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        return calendar.toString();
+    }
+
+    /**
+     * Return the current Calendar type.
+     * Note, in 3.0 this function will return 'gregorian' in Calendar to emulate legacy behavior
+     * @return type of calendar (gregorian, etc)
+     * @internal ICU 3.0
+     */
+    public String getType() {
+        return "gregorian";
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java
new file mode 100644
index 0000000..878afeb
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java
@@ -0,0 +1,432 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
+ * savings.
+ *
+ * <p>
+ * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
+ * which creates a <code>TimeZone</code> based on the time zone where the program
+ * is running. For example, for a program running in Japan, <code>getDefault</code>
+ * creates a <code>TimeZone</code> object based on Japanese Standard Time.
+ *
+ * <p>
+ * You can also get a <code>TimeZone</code> using <code>getTimeZone</code>
+ * along with a time zone ID. For instance, the time zone ID for the
+ * U.S. Pacific Time zone is "America/Los_Angeles". So, you can get a
+ * U.S. Pacific Time <code>TimeZone</code> object with:
+ * <blockquote>
+ * <pre>
+ * TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+ * </pre>
+ * </blockquote>
+ * You can use <code>getAvailableIDs</code> method to iterate through
+ * all the supported time zone IDs. You can then choose a
+ * supported ID to get a <code>TimeZone</code>.
+ * If the time zone you want is not represented by one of the
+ * supported IDs, then you can create a custom time zone ID with
+ * the following syntax:
+ *
+ * <blockquote>
+ * <pre>
+ * GMT[+|-]hh[[:]mm]
+ * </pre>
+ * </blockquote>
+ *
+ * For example, you might specify GMT+14:00 as a custom
+ * time zone ID.  The <code>TimeZone</code> that is returned
+ * when you specify a custom time zone ID does not include
+ * daylight savings time.
+ * <p>
+ * For compatibility with JDK 1.1.x, some other three-letter time zone IDs
+ * (such as "PST", "CTT", "AST") are also supported. However, <strong>their
+ * use is deprecated</strong> because the same abbreviation is often used
+ * for multiple time zones (for example, "CST" could be U.S. "Central Standard
+ * Time" and "China Standard Time"), and the Java platform can then only
+ * recognize one of them.
+ *
+ * @see          Calendar
+ * @see          GregorianCalendar
+ * @see          SimpleTimeZone
+ * @author       Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class TimeZone implements Serializable, Cloneable {
+    private static final long serialVersionUID = 1;
+        
+    /**
+     * @internal
+     */
+    public final java.util.TimeZone timeZone;
+        
+    /**
+     * @internal
+     * @param delegate the TimeZone to which to delegate
+     */
+    public TimeZone(java.util.TimeZone delegate) {
+        this.timeZone = delegate;
+    }
+
+    /**
+     * Default constructor to mirror Java's public
+     * constructor.  Java's is not callable as a public API, since
+     * their TimeZone is abstract, so this is only useful to
+     * subclasses.  In general, subclasses will not work unless
+     * they manipulate the delegate.
+     */
+    public TimeZone() {
+        this.timeZone = java.util.TimeZone.getDefault();
+    }
+    
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a short name, such as "PST."
+     * @see #LONG
+     * @stable ICU 2.0
+     */
+    public static final int SHORT = 0;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a long name, such as "Pacific Standard Time."
+     * @see #SHORT
+     * @stable ICU 2.0
+     */
+    public static final int LONG  = 1;
+
+    /**
+     * Gets the time zone offset, for current date, modified in case of
+     * daylight savings. This is the offset to add *to* UTC to get local time.
+     * @param era the era of the given date.
+     * @param year the year in the given date.
+     * @param month the month in the given date.
+     * Month is 0-based. e.g., 0 for January.
+     * @param day the day-in-month of the given date.
+     * @param dayOfWeek the day-of-week of the given date.
+     * @param milliseconds the millis in day in <em>standard</em> local time.
+     * @return the offset to add *to* GMT to get local time.
+     * @stable ICU 2.0
+     */
+    public int getOffset(int era, int year, int month, int day,
+                         int dayOfWeek, int milliseconds) {
+        return timeZone.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    /**
+     * Returns the offset of this time zone from UTC at the specified
+     * date. If Daylight Saving Time is in effect at the specified
+     * date, the offset value is adjusted with the amount of daylight
+     * saving.
+     *
+     * @param date the date represented in milliseconds since January 1, 1970 00:00:00 GMT
+     * @return the amount of time in milliseconds to add to UTC to get local time.
+     *
+     * @see Calendar#ZONE_OFFSET
+     * @see Calendar#DST_OFFSET
+     * @see #getOffset(long, boolean, int[])
+     * @stable ICU 2.8
+     */
+    public int getOffset(long date) {
+        if (inDaylightTime(new Date(date))) {
+            return getRawOffset() + getDSTSavings();
+        }
+        return getRawOffset();
+    }
+
+   /**
+     * Sets the base time zone offset to GMT.
+     * This is the offset to add *to* UTC to get local time.
+     * @param offsetMillis the given base time zone offset to GMT.
+     * @stable ICU 2.0
+     */
+    public void setRawOffset(int offsetMillis) {
+        timeZone.setRawOffset(offsetMillis);
+    }
+
+    /**
+     * Gets unmodified offset, NOT modified in case of daylight savings.
+     * This is the offset to add *to* UTC to get local time.
+     * @return the unmodified offset to add *to* UTC to get local time.
+     * @stable ICU 2.0
+     */
+    public int getRawOffset() {
+        return timeZone.getRawOffset();
+    }
+
+    /**
+     * Gets the ID of this time zone.
+     * @return the ID of this time zone.
+     * @stable ICU 2.0
+     */
+    public String getID() {
+        return timeZone.getID();
+    }
+
+    /**
+     * Sets the time zone ID. This does not change any other data in
+     * the time zone object.
+     * @param ID the new time zone ID.
+     * @stable ICU 2.0
+     */
+    public void setID(String ID) {
+        timeZone.setID(ID);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * This method returns the long generic name.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @return the human-readable name of this time zone in the default locale.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName() {
+        return timeZone.getDisplayName();
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long generic name.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName(Locale locale) {
+        return timeZone.getDisplayName(locale);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long name, not including daylight savings.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @param locale the ulocale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default ulocale if the given ulocale is not recognized.
+     * @stable ICU 3.2
+     */
+    public final String getDisplayName(ULocale locale) {
+        return timeZone.getDisplayName(locale.toLocale());
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @return the human-readable name of this time zone in the default locale.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName(boolean daylight, int style) {
+        return timeZone.getDisplayName(daylight, style);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @stable ICU 2.0
+     */
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        return timeZone.getDisplayName(daylight, style, locale);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @stable ICU 3.2
+     */
+    public String getDisplayName(boolean daylight, int style, ULocale locale) {
+        return timeZone.getDisplayName(daylight, style, locale.toLocale());
+    }
+
+    /**
+     * Returns the amount of time to be added to local standard time
+     * to get local wall clock time.
+     * <p>
+     * The default implementation always returns 3600000 milliseconds
+     * (i.e., one hour) if this time zone observes Daylight Saving
+     * Time. Otherwise, 0 (zero) is returned.
+     * <p>
+     * If an underlying TimeZone implementation subclass supports
+     * historical Daylight Saving Time changes, this method returns
+     * the known latest daylight saving value.
+     *
+     * @return the amount of saving time in milliseconds
+     * @stable ICU 2.8
+     */
+    public int getDSTSavings() {
+        if (useDaylightTime()) {
+            return 3600000;
+        }
+        return 0;
+    }
+
+    /**
+     * Queries if this time zone uses daylight savings time.
+     * @return true if this time zone uses daylight savings time,
+     * false, otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean useDaylightTime() {
+        return timeZone.useDaylightTime();
+    }
+
+    /**
+     * Queries if the given date is in daylight savings time in
+     * this time zone.
+     * @param date the given Date.
+     * @return true if the given date is in daylight savings time,
+     * false, otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean inDaylightTime(Date date) {
+        return timeZone.inDaylightTime(date);
+    }
+
+    /**
+     * Gets the <code>TimeZone</code> for the given ID.
+     *
+     * @param ID the ID for a <code>TimeZone</code>, either an abbreviation
+     * such as "PST", a full name such as "America/Los_Angeles", or a custom
+     * ID such as "GMT-8:00". Note that the support of abbreviations is
+     * for JDK 1.1.x compatibility only and full names should be used.
+     *
+     * @return the specified <code>TimeZone</code>, or the GMT zone if the given ID
+     * cannot be understood.
+     * @stable ICU 2.0
+     */
+    public static TimeZone getTimeZone(String ID) {
+        return new TimeZone(java.util.TimeZone.getTimeZone(ID));
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * with the given raw offset from GMT.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param rawOffset the offset in milliseconds from GMT
+     * @return an array of IDs for system TimeZones with the given
+     * raw offset.  If there are none, return a zero-length array.
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs(int rawOffset) {
+        return java.util.TimeZone.getAvailableIDs(rawOffset);
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs.
+     * These IDs (and only these IDs) may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @return an array of all system TimeZone IDs
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs() {
+        return java.util.TimeZone.getAvailableIDs();
+    }
+  
+    /**
+     * Gets the default <code>TimeZone</code> for this host.
+     * The source of the default <code>TimeZone</code> 
+     * may vary with implementation.
+     * @return a default <code>TimeZone</code>.
+     * @stable ICU 2.0
+     */
+    public static TimeZone getDefault() {
+        return new TimeZone(java.util.TimeZone.getDefault());
+    }
+
+    /**
+     * Sets the <code>TimeZone</code> that is
+     * returned by the <code>getDefault</code> method.  If <code>zone</code>
+     * is null, reset the default to the value it had originally when the
+     * VM first started.
+     * @param tz the new default time zone
+     * @stable ICU 2.0
+     */
+    public static void setDefault(TimeZone tz) {
+        java.util.TimeZone.setDefault(tz.timeZone);
+    }
+        
+    /**
+     * Returns true if this zone has the same rule and offset as another zone.
+     * That is, if this zone differs only in ID, if at all.  Returns false
+     * if the other zone is null.
+     * @param other the <code>TimeZone</code> object to be compared with
+     * @return true if the other zone is not null and is the same as this one,
+     * with the possible exception of the ID
+     * @stable ICU 2.0
+     */
+    public boolean hasSameRules(TimeZone other) {
+        return timeZone.hasSameRules(other.timeZone);
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return new TimeZone((java.util.TimeZone)timeZone.clone());
+    }
+    
+    /**
+     * Return true if rhs is a TimeZone and has the same time rules as this.
+     * @return true if rhs equals this
+     * @stable ICU 3.4.2
+     */
+    public boolean equals(Object rhs){
+        try {
+            return timeZone.equals(((TimeZone)rhs).timeZone);
+        }
+        catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * Return a hashCode.
+     * @return a hashCode
+     * @stable ICU 3.4.2
+     */
+    public int hashCode(){
+        return timeZone.hashCode();
+    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java
new file mode 100644
index 0000000..ea9a603
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java
@@ -0,0 +1,3822 @@
+/*
+******************************************************************************
+* Copyright (C) 2003-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.lang.ref.SoftReference;
+import java.text.ParseException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.TreeMap;
+
+//import com.ibm.icu.impl.SimpleCache;
+//import com.ibm.icu.impl.ICUResourceBundle;
+//import com.ibm.icu.impl.LocaleUtility;
+
+/**
+ * A class analogous to {@link java.util.Locale} that provides additional
+ * support for ICU protocol.  In ICU 3.0 this class is enhanced to support
+ * RFC 3066 language identifiers.
+ *
+ * <p>Many classes and services in ICU follow a factory idiom, in
+ * which a factory method or object responds to a client request with
+ * an object.  The request includes a locale (the <i>requested</i>
+ * locale), and the returned object is constructed using data for that
+ * locale.  The system may lack data for the requested locale, in
+ * which case the locale fallback mechanism will be invoked until a
+ * populated locale is found (the <i>valid</i> locale).  Furthermore,
+ * even when a populated locale is found (the <i>valid</i> locale),
+ * further fallback may be required to reach a locale containing the
+ * specific data required by the service (the <i>actual</i> locale).
+ *
+ * <p>ULocale performs <b>'normalization'</b> and <b>'canonicalization'</b> of locale ids.
+ * Normalization 'cleans up' ICU locale ids as follows:
+ * <ul>
+ * <li>language, script, country, variant, and keywords are properly cased<br>
+ * (lower, title, upper, upper, and lower case respectively)</li>
+ * <li>hyphens used as separators are converted to underscores</li>
+ * <li>three-letter language and country ids are converted to two-letter
+ * equivalents where available</li>
+ * <li>surrounding spaces are removed from keywords and values</li>
+ * <li>if there are multiple keywords, they are put in sorted order</li>
+ * </ul>
+ * Canonicalization additionally performs the following:
+ * <ul>
+ * <li>POSIX ids are converted to ICU format IDs</li>
+ * <li>'grandfathered' 3066 ids are converted to ICU standard form</li>
+ * <li>'PREEURO' and 'EURO' variants are converted to currency keyword form, with the currency
+ * id appropriate to the country of the locale (for PREEURO) or EUR (for EURO).
+ * </ul>
+ * All ULocale constructors automatically normalize the locale id.  To handle
+ * POSIX ids, <code>canonicalize</code> can be called to convert the id
+ * to canonical form, or the <code>canonicalInstance</code> factory method
+ * can be called.</p>
+ *
+ * <p>This class provides selectors {@link #VALID_LOCALE} and {@link
+ * #ACTUAL_LOCALE} intended for use in methods named
+ * <tt>getLocale()</tt>.  These methods exist in several ICU classes,
+ * including {@link com.ibm.icu.util.Calendar}, {@link
+ * com.ibm.icu.util.Currency}, {@link com.ibm.icu.text.UFormat},
+ * {@link com.ibm.icu.text.BreakIterator}, {@link
+ * com.ibm.icu.text.Collator}, {@link
+ * com.ibm.icu.text.DateFormatSymbols}, and {@link
+ * com.ibm.icu.text.DecimalFormatSymbols} and their subclasses, if
+ * any.  Once an object of one of these classes has been created,
+ * <tt>getLocale()</tt> may be called on it to determine the valid and
+ * actual locale arrived at during the object's construction.
+ *
+ * <p>Note: The <tt>getLocale()</tt> method will be implemented in ICU
+ * 3.0; ICU 2.8 contains a partial preview implementation.  The
+ * <i>actual</i> locale is returned correctly, but the <i>valid</i>
+ * locale is not, in most cases.
+ *
+ * @see java.util.Locale
+ * @author weiv
+ * @author Alan Liu
+ * @author Ram Viswanadha
+ * @stable ICU 2.8 
+ */
+public final class ULocale implements Serializable {
+    // using serialver from jdk1.4.2_05
+    private static final long serialVersionUID = 3715177670352309217L;
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ENGLISH = new ULocale("en", Locale.ENGLISH);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale FRENCH = new ULocale("fr", Locale.FRENCH);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale GERMAN = new ULocale("de", Locale.GERMAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ITALIAN = new ULocale("it", Locale.ITALIAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale JAPANESE = new ULocale("ja", Locale.JAPANESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale KOREAN = new ULocale("ko", Locale.KOREAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CHINESE = new ULocale("zh", Locale.CHINESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale SIMPLIFIED_CHINESE = new ULocale("zh_Hans", Locale.CHINESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale TRADITIONAL_CHINESE = new ULocale("zh_Hant", Locale.CHINESE);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale FRANCE = new ULocale("fr_FR", Locale.FRANCE);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale GERMANY = new ULocale("de_DE", Locale.GERMANY);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ITALY = new ULocale("it_IT", Locale.ITALY);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale JAPAN = new ULocale("ja_JP", Locale.JAPAN);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale KOREA = new ULocale("ko_KR", Locale.KOREA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CHINA = new ULocale("zh_Hans_CN", Locale.CHINA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale PRC = CHINA;
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale TAIWAN = new ULocale("zh_Hant_TW", Locale.TAIWAN);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale UK = new ULocale("en_GB", Locale.UK);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale US = new ULocale("en_US", Locale.US);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CANADA = new ULocale("en_CA", Locale.CANADA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CANADA_FRENCH = new ULocale("fr_CA", Locale.CANADA_FRENCH);
+
+    /**
+     * Handy constant.
+     */
+    private static final String EMPTY_STRING = "";
+
+    // Used in both ULocale and IDParser, so moved up here.
+    private static final char UNDERSCORE            = '_';
+
+    // default empty locale
+    private static final Locale EMPTY_LOCALE = new Locale("", "");
+
+    /**
+     * The root ULocale.
+     * @stable ICU 2.8
+     */ 
+    public static final ULocale ROOT = new ULocale("root", EMPTY_LOCALE);
+    
+//    private static final SimpleCache CACHE = new SimpleCache();
+    private static final HashMap CACHE = new HashMap(20);
+
+    /**
+     * Cache the locale.
+     */
+    private transient Locale locale;
+
+    /**
+     * The raw localeID that we were passed in.
+     */
+    private String localeID;
+
+    /**
+     * Tables used in normalizing portions of the id.
+     */
+    /* tables updated per http://lcweb.loc.gov/standards/iso639-2/ 
+       to include the revisions up to 2001/7/27 *CWB*/
+    /* The 3 character codes are the terminology codes like RFC 3066.  
+       This is compatible with prior ICU codes */
+    /* "in" "iw" "ji" "jw" & "sh" have been withdrawn but are still in 
+       the table but now at the end of the table because 
+       3 character codes are duplicates.  This avoids bad searches
+       going from 3 to 2 character codes.*/
+    /* The range qaa-qtz is reserved for local use. */
+
+    private static String[] _languages;
+    private static String[] _replacementLanguages;
+    private static String[] _obsoleteLanguages;
+    private static String[] _languages3;
+    private static String[] _obsoleteLanguages3;
+
+    // Avoid initializing languages tables unless we have to.
+    private static void initLanguageTables() {
+        if (_languages == null) {
+
+            /* This list MUST be in sorted order, and MUST contain the two-letter codes
+               if one exists otherwise use the three letter code */
+            String[] tempLanguages = {
+                "aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "af",  "afa",
+                "afh", "ak",  "akk", "ale", "alg", "am",  "an",  "ang", "apa",
+                "ar",  "arc", "arn", "arp", "art", "arw", "as",  "ast",
+                "ath", "aus", "av",  "awa", "ay",  "az",  "ba",  "bad",
+                "bai", "bal", "ban", "bas", "bat", "be",  "bej",
+                "bem", "ber", "bg",  "bh",  "bho", "bi",  "bik", "bin",
+                "bla", "bm",  "bn",  "bnt", "bo",  "br",  "bra", "bs",
+                "btk", "bua", "bug", "byn", "ca",  "cad", "cai", "car", "cau",
+                "ce",  "ceb", "cel", "ch",  "chb", "chg", "chk", "chm",
+                "chn", "cho", "chp", "chr", "chy", "cmc", "co",  "cop",
+                "cpe", "cpf", "cpp", "cr",  "crh", "crp", "cs",  "csb", "cu",  "cus",
+                "cv",  "cy",  "da",  "dak", "dar", "day", "de",  "del", "den",
+                "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv",  "dyu",
+                "dz",  "ee",  "efi", "egy", "eka", "el",  "elx", "en",
+                "enm", "eo",  "es",  "et",  "eu",  "ewo", "fa",
+                "fan", "fat", "ff",  "fi",  "fiu", "fj",  "fo",  "fon",
+                "fr",  "frm", "fro", "fur", "fy",  "ga",  "gaa", "gay",
+                "gba", "gd",  "gem", "gez", "gil", "gl",  "gmh", "gn",
+                "goh", "gon", "gor", "got", "grb", "grc", "gu",  "gv",
+                "gwi", "ha",  "hai", "haw", "he",  "hi",  "hil", "him",
+                "hit", "hmn", "ho",  "hr",  "hsb", "ht",  "hu",  "hup", "hy",  "hz",
+                "ia",  "iba", "id",  "ie",  "ig",  "ii",  "ijo", "ik",
+                "ilo", "inc", "ine", "inh", "io",  "ira", "iro", "is",  "it",
+                "iu",  "ja",  "jbo", "jpr", "jrb", "jv",  "ka",  "kaa", "kab",
+                "kac", "kam", "kar", "kaw", "kbd", "kg",  "kha", "khi",
+                "kho", "ki",  "kj",  "kk",  "kl",  "km",  "kmb", "kn",
+                "ko",  "kok", "kos", "kpe", "kr",  "krc", "kro", "kru", "ks",
+                "ku",  "kum", "kut", "kv",  "kw",  "ky",  "la",  "lad",
+                "lah", "lam", "lb",  "lez", "lg",  "li",  "ln",  "lo",  "lol",
+                "loz", "lt",  "lu",  "lua", "lui", "lun", "luo", "lus",
+                "lv",  "mad", "mag", "mai", "mak", "man", "map", "mas",
+                "mdf", "mdr", "men", "mg",  "mga", "mh",  "mi",  "mic", "min",
+                "mis", "mk",  "mkh", "ml",  "mn",  "mnc", "mni", "mno",
+                "mo",  "moh", "mos", "mr",  "ms",  "mt",  "mul", "mun",
+                "mus", "mwr", "my",  "myn", "myv", "na",  "nah", "nai", "nap",
+                "nb",  "nd",  "nds", "ne",  "new", "ng",  "nia", "nic",
+                "niu", "nl",  "nn",  "no",  "nog", "non", "nr",  "nso", "nub",
+                "nv",  "nwc", "ny",  "nym", "nyn", "nyo", "nzi", "oc",  "oj",
+                "om",  "or",  "os",  "osa", "ota", "oto", "pa",  "paa",
+                "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",
+                "pi",  "pl",  "pon", "pra", "pro", "ps",  "pt",  "qu",
+                "raj", "rap", "rar", "rm",  "rn",  "ro",  "roa", "rom",
+                "ru",  "rup", "rw",  "sa",  "sad", "sah", "sai", "sal", "sam",
+                "sas", "sat", "sc",  "sco", "sd",  "se",  "sel", "sem",
+                "sg",  "sga", "sgn", "shn", "si",  "sid", "sio", "sit",
+                "sk",  "sl",  "sla", "sm",  "sma", "smi", "smj", "smn",
+                "sms", "sn",  "snk", "so",  "sog", "son", "sq",  "sr",
+                "srr", "ss",  "ssa", "st",  "su",  "suk", "sus", "sux",
+                "sv",  "sw",  "syr", "ta",  "tai", "te",  "tem", "ter",
+                "tet", "tg",  "th",  "ti",  "tig", "tiv", "tk",  "tkl",
+                "tl",  "tlh", "tli", "tmh", "tn",  "to",  "tog", "tpi", "tr",
+                "ts",  "tsi", "tt",  "tum", "tup", "tut", "tvl", "tw",
+                "ty",  "tyv", "udm", "ug",  "uga", "uk",  "umb", "und", "ur",
+                "uz",  "vai", "ve",  "vi",  "vo",  "vot", "wa",  "wak",
+                "wal", "war", "was", "wen", "wo",  "xal", "xh",  "yao", "yap",
+                "yi",  "yo",  "ypk", "za",  "zap", "zen", "zh",  "znd",
+                "zu",  "zun", 
+            };
+
+            String[] tempReplacementLanguages = {
+                "id", "he", "yi", "jv", "sr", "nb",/* replacement language codes */
+            };
+
+            String[] tempObsoleteLanguages = {
+                "in", "iw", "ji", "jw", "sh", "no",    /* obsolete language codes */         
+            };
+
+            /* This list MUST contain a three-letter code for every two-letter code in the
+               list above, and they MUST ne in the same order (i.e., the same language must
+               be in the same place in both lists)! */
+            String[] tempLanguages3 = {
+                /*"aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "af",  "afa",    */
+                "aar", "abk", "ace", "ach", "ada", "ady", "ave", "afr", "afa",
+                /*"afh", "ak",  "akk", "ale", "alg", "am",  "an",  "ang", "apa",    */
+                "afh", "aka", "akk", "ale", "alg", "amh", "arg", "ang", "apa",
+                /*"ar",  "arc", "arn", "arp", "art", "arw", "as",  "ast",    */
+                "ara", "arc", "arn", "arp", "art", "arw", "asm", "ast",
+                /*"ath", "aus", "av",  "awa", "ay",  "az",  "ba",  "bad",    */
+                "ath", "aus", "ava", "awa", "aym", "aze", "bak", "bad",
+                /*"bai", "bal", "ban", "bas", "bat", "be",  "bej",    */
+                "bai", "bal", "ban", "bas", "bat", "bel", "bej",
+                /*"bem", "ber", "bg",  "bh",  "bho", "bi",  "bik", "bin",    */
+                "bem", "ber", "bul", "bih", "bho", "bis", "bik", "bin",
+                /*"bla", "bm",  "bn",  "bnt", "bo",  "br",  "bra", "bs",     */
+                "bla", "bam",  "ben", "bnt", "bod", "bre", "bra", "bos",
+                /*"btk", "bua", "bug", "byn", "ca",  "cad", "cai", "car", "cau",    */
+                "btk", "bua", "bug", "byn", "cat", "cad", "cai", "car", "cau",
+                /*"ce",  "ceb", "cel", "ch",  "chb", "chg", "chk", "chm",    */
+                "che", "ceb", "cel", "cha", "chb", "chg", "chk", "chm",
+                /*"chn", "cho", "chp", "chr", "chy", "cmc", "co",  "cop",    */
+                "chn", "cho", "chp", "chr", "chy", "cmc", "cos", "cop",
+                /*"cpe", "cpf", "cpp", "cr",  "crh", "crp", "cs",  "csb", "cu",  "cus",    */
+                "cpe", "cpf", "cpp", "cre", "crh", "crp", "ces", "csb", "chu", "cus",
+                /*"cv",  "cy",  "da",  "dak", "dar", "day", "de",  "del", "den",    */
+                "chv", "cym", "dan", "dak", "dar", "day", "deu", "del", "den",
+                /*"dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv",  "dyu",    */
+                "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "div", "dyu",
+                /*"dz",  "ee",  "efi", "egy", "eka", "el",  "elx", "en",     */
+                "dzo", "ewe", "efi", "egy", "eka", "ell", "elx", "eng",
+                /*"enm", "eo",  "es",  "et",  "eu",  "ewo", "fa",     */
+                "enm", "epo", "spa", "est", "eus", "ewo", "fas",
+                /*"fan", "fat", "ff",  "fi",  "fiu", "fj",  "fo",  "fon",    */
+                "fan", "fat", "ful", "fin", "fiu", "fij", "fao", "fon",
+                /*"fr",  "frm", "fro", "fur", "fy",  "ga",  "gaa", "gay",    */
+                "fra", "frm", "fro", "fur", "fry", "gle", "gaa", "gay",
+                /*"gba", "gd",  "gem", "gez", "gil", "gl",  "gmh", "gn",     */
+                "gba", "gla", "gem", "gez", "gil", "glg", "gmh", "grn",
+                /*"goh", "gon", "gor", "got", "grb", "grc", "gu",  "gv",     */
+                "goh", "gon", "gor", "got", "grb", "grc", "guj", "glv",
+                /*"gwi", "ha",  "hai", "haw", "he",  "hi",  "hil", "him",    */
+                "gwi", "hau", "hai", "haw", "heb", "hin", "hil", "him",
+                /*"hit", "hmn", "ho",  "hr",  "hsb", "ht",  "hu",  "hup", "hy",  "hz",     */
+                "hit", "hmn", "hmo", "hrv", "hsb", "hat", "hun", "hup", "hye", "her",
+                /*"ia",  "iba", "id",  "ie",  "ig",  "ii",  "ijo", "ik",     */
+                "ina", "iba", "ind", "ile", "ibo", "iii", "ijo", "ipk",
+                /*"ilo", "inc", "ine", "inh", "io",  "ira", "iro", "is",  "it",      */
+                "ilo", "inc", "ine", "inh", "ido", "ira", "iro", "isl", "ita",
+                /*"iu",  "ja",  "jbo", "jpr", "jrb", "jv",  "ka",  "kaa", "kab",   */
+                "iku", "jpn", "jbo", "jpr", "jrb", "jaw", "kat", "kaa", "kab",
+                /*"kac", "kam", "kar", "kaw", "kbd", "kg",  "kha", "khi",    */
+                "kac", "kam", "kar", "kaw", "kbd", "kon", "kha", "khi",
+                /*"kho", "ki",  "kj",  "kk",  "kl",  "km",  "kmb", "kn",     */
+                "kho", "kik", "kua", "kaz", "kal", "khm", "kmb", "kan",
+                /*"ko",  "kok", "kos", "kpe", "kr",  "krc", "kro", "kru", "ks",     */
+                "kor", "kok", "kos", "kpe", "kau", "krc", "kro", "kru", "kas",
+                /*"ku",  "kum", "kut", "kv",  "kw",  "ky",  "la",  "lad",    */
+                "kur", "kum", "kut", "kom", "cor", "kir", "lat", "lad",
+                /*"lah", "lam", "lb",  "lez", "lg",  "li",  "ln",  "lo",  "lol",    */
+                "lah", "lam", "ltz", "lez", "lug", "lim", "lin", "lao", "lol",
+                /*"loz", "lt",  "lu",  "lua", "lui", "lun", "luo", "lus",    */
+                "loz", "lit", "lub", "lua", "lui", "lun", "luo", "lus",
+                /*"lv",  "mad", "mag", "mai", "mak", "man", "map", "mas",    */
+                "lav", "mad", "mag", "mai", "mak", "man", "map", "mas",
+                /*"mdf", "mdr", "men", "mg",  "mga", "mh",  "mi",  "mic", "min",    */
+                "mdf", "mdr", "men", "mlg", "mga", "mah", "mri", "mic", "min",
+                /*"mis", "mk",  "mkh", "ml",  "mn",  "mnc", "mni", "mno",    */
+                "mis", "mkd", "mkh", "mal", "mon", "mnc", "mni", "mno",
+                /*"mo",  "moh", "mos", "mr",  "ms",  "mt",  "mul", "mun",    */
+                "mol", "moh", "mos", "mar", "msa", "mlt", "mul", "mun",
+                /*"mus", "mwr", "my",  "myn", "myv", "na",  "nah", "nai", "nap",    */
+                "mus", "mwr", "mya", "myn", "myv", "nau", "nah", "nai", "nap",
+                /*"nb",  "nd",  "nds", "ne",  "new", "ng",  "nia", "nic",    */
+                "nob", "nde", "nds", "nep", "new", "ndo", "nia", "nic",
+                /*"niu", "nl",  "nn",  "no",  "nog", "non", "nr",  "nso", "nub",    */
+                "niu", "nld", "nno", "nor", "nog", "non", "nbl", "nso", "nub",
+                /*"nv",  "nwc", "ny",  "nym", "nyn", "nyo", "nzi", "oc",  "oj",     */
+                "nav", "nwc", "nya", "nym", "nyn", "nyo", "nzi", "oci", "oji",
+                /*"om",  "or",  "os",  "osa", "ota", "oto", "pa",  "paa",    */
+                "orm", "ori", "oss", "osa", "ota", "oto", "pan", "paa",
+                /*"pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",    */
+                "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",
+                /*"pi",  "pl",  "pon", "pra", "pro", "ps",  "pt",  "qu",     */
+                "pli", "pol", "pon", "pra", "pro", "pus", "por", "que",
+                /*"raj", "rap", "rar", "rm",  "rn",  "ro",  "roa", "rom",    */
+                "raj", "rap", "rar", "roh", "run", "ron", "roa", "rom",
+                /*"ru",  "rup", "rw",  "sa",  "sad", "sah", "sai", "sal", "sam",    */
+                "rus", "rup", "kin", "san", "sad", "sah", "sai", "sal", "sam",
+                /*"sas", "sat", "sc",  "sco", "sd",  "se",  "sel", "sem",    */
+                "sas", "sat", "srd", "sco", "snd", "sme", "sel", "sem",
+                /*"sg",  "sga", "sgn", "shn", "si",  "sid", "sio", "sit",    */
+                "sag", "sga", "sgn", "shn", "sin", "sid", "sio", "sit",
+                /*"sk",  "sl",  "sla", "sm",  "sma", "smi", "smj", "smn",    */
+                "slk", "slv", "sla", "smo", "sma", "smi", "smj", "smn",
+                /*"sms", "sn",  "snk", "so",  "sog", "son", "sq",  "sr",     */
+                "sms", "sna", "snk", "som", "sog", "son", "sqi", "srp",
+                /*"srr", "ss",  "ssa", "st",  "su",  "suk", "sus", "sux",    */
+                "srr", "ssw", "ssa", "sot", "sun", "suk", "sus", "sux",
+                /*"sv",  "sw",  "syr", "ta",  "tai", "te",  "tem", "ter",    */
+                "swe", "swa", "syr", "tam", "tai", "tel", "tem", "ter",
+                /*"tet", "tg",  "th",  "ti",  "tig", "tiv", "tk",  "tkl",    */
+                "tet", "tgk", "tha", "tir", "tig", "tiv", "tuk", "tkl",
+                /*"tl",  "tlh", "tli", "tmh", "tn",  "to",  "tog", "tpi", "tr",     */
+                "tgl", "tlh", "tli", "tmh", "tsn", "ton", "tog", "tpi", "tur",
+                /*"ts",  "tsi", "tt",  "tum", "tup", "tut", "tvl", "tw",     */
+                "tso", "tsi", "tat", "tum", "tup", "tut", "tvl", "twi",
+                /*"ty",  "tyv", "udm", "ug",  "uga", "uk",  "umb", "und", "ur",     */
+                "tah", "tyv", "udm", "uig", "uga", "ukr", "umb", "und", "urd",
+                /*"uz",  "vai", "ve",  "vi",  "vo",  "vot", "wa",  "wak",    */
+                "uzb", "vai", "ven", "vie", "vol", "vot", "wln", "wak",
+                /*"wal", "war", "was", "wen", "wo",  "xal", "xh",  "yao", "yap",    */
+                "wal", "war", "was", "wen", "wol", "xal", "xho", "yao", "yap",
+                /*"yi",  "yo",  "ypk", "za",  "zap", "zen", "zh",  "znd",    */
+                "yid", "yor", "ypk", "zha", "zap", "zen", "zho", "znd",
+                /*"zu",  "zun",                                              */
+                "zul", "zun",  
+            };
+    
+            String[] tempObsoleteLanguages3 = {
+                /* "in",  "iw",  "ji",  "jw",  "sh", */
+                "ind", "heb", "yid", "jaw", "srp", 
+            };
+
+            synchronized (ULocale.class) {
+                if (_languages == null) {
+                    _languages = tempLanguages;
+                    _replacementLanguages = tempReplacementLanguages;
+                    _obsoleteLanguages = tempObsoleteLanguages;
+                    _languages3 = tempLanguages3;
+                    _obsoleteLanguages3 = tempObsoleteLanguages3;
+                }
+            }
+        }
+    }
+
+    private static String[] _countries;
+    private static String[] _deprecatedCountries;
+    private static String[] _replacementCountries;
+    private static String[] _obsoleteCountries;
+    private static String[] _countries3;
+    private static String[] _obsoleteCountries3;  
+
+    // Avoid initializing country tables unless we have to.
+    private static void initCountryTables() {    
+        if (_countries == null) {
+            /* ZR(ZAR) is now CD(COD) and FX(FXX) is PS(PSE) as per
+               http://www.evertype.com/standards/iso3166/iso3166-1-en.html 
+               added new codes keeping the old ones for compatibility
+               updated to include 1999/12/03 revisions *CWB*/
+    
+            /* RO(ROM) is now RO(ROU) according to 
+               http://www.iso.org/iso/en/prods-services/iso3166ma/03updates-on-iso-3166/nlv3e-rou.html
+            */
+    
+            /* This list MUST be in sorted order, and MUST contain only two-letter codes! */
+            String[] tempCountries = {
+                "AD",  "AE",  "AF",  "AG",  "AI",  "AL",  "AM",  "AN",
+                "AO",  "AQ",  "AR",  "AS",  "AT",  "AU",  "AW",  "AX",  "AZ",
+                "BA",  "BB",  "BD",  "BE",  "BF",  "BG",  "BH",  "BI",
+                "BJ",  "BL",  "BM",  "BN",  "BO",  "BR",  "BS",  "BT",  "BV",
+                "BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",
+                "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",
+                "CU",  "CV",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",
+                "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",
+                "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",
+                "GA",  "GB",  "GD",  "GE",  "GF",  "GG",  "GH",  "GI",  "GL",
+                "GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",
+                "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",
+                "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS",
+                "IT",  "JE",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",
+                "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",
+                "LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",
+                "LV",  "LY",  "MA",  "MC",  "MD",  "ME",  "MF",  "MG",  "MH",  "MK",
+                "ML",  "MM",  "MN",  "MO",  "MP",  "MQ",  "MR",  "MS",
+                "MT",  "MU",  "MV",  "MW",  "MX",  "MY",  "MZ",  "NA",
+                "NC",  "NE",  "NF",  "NG",  "NI",  "NL",  "NO",  "NP",
+                "NR",  "NU",  "NZ",  "OM",  "PA",  "PE",  "PF",  "PG",
+                "PH",  "PK",  "PL",  "PM",  "PN",  "PR",  "PS",  "PT",
+                "PW",  "PY",  "QA",  "RE",  "RO",  "RS",  "RU",  "RW",  "SA",
+                "SB",  "SC",  "SD",  "SE",  "SG",  "SH",  "SI",  "SJ",
+                "SK",  "SL",  "SM",  "SN",  "SO",  "SR",  "ST",  "SV",
+                "SY",  "SZ",  "TC",  "TD",  "TF",  "TG",  "TH",  "TJ",
+                "TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",
+                "TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",
+                "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",
+                "WS",  "YE",  "YT",  "ZA",  "ZM",  "ZW",
+            };
+
+            /* this table is used for 3 letter codes */
+            String[] tempObsoleteCountries = {
+                "FX",  "CS",  "RO",  "TP",  "YU",  "ZR",  /* obsolete country codes */      
+            };
+            
+            String[] tempDeprecatedCountries = {
+               "BU", "CS", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" /* deprecated country list */
+            };
+            String[] tempReplacementCountries = {
+           /*  "BU", "CS", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" */
+               "MM", "RS", "BJ", "FR", "BF", "VU", "ZW", "TL", "RS", "CD",   /* replacement country codes */      
+            };
+    
+            /* This list MUST contain a three-letter code for every two-letter code in
+               the above list, and they MUST be listed in the same order! */
+            String[] tempCountries3 = {
+                /*  "AD",  "AE",  "AF",  "AG",  "AI",  "AL",  "AM",  "AN",     */
+                    "AND", "ARE", "AFG", "ATG", "AIA", "ALB", "ARM", "ANT",
+                /*  "AO",  "AQ",  "AR",  "AS",  "AT",  "AU",  "AW",  "AX",  "AZ",     */
+                    "AGO", "ATA", "ARG", "ASM", "AUT", "AUS", "ABW", "ALA", "AZE",
+                /*  "BA",  "BB",  "BD",  "BE",  "BF",  "BG",  "BH",  "BI",     */
+                    "BIH", "BRB", "BGD", "BEL", "BFA", "BGR", "BHR", "BDI",
+                /*  "BJ",  "BL",  "BM",  "BN",  "BO",  "BR",  "BS",  "BT",  "BV",     */
+                    "BEN", "BLM", "BMU", "BRN", "BOL", "BRA", "BHS", "BTN", "BVT",
+                /*  "BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",     */
+                    "BWA", "BLR", "BLZ", "CAN", "CCK", "COD", "CAF", "COG",
+                /*  "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",     */
+                    "CHE", "CIV", "COK", "CHL", "CMR", "CHN", "COL", "CRI",
+                /*  "CU",  "CV",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",     */
+                    "CUB", "CPV", "CXR", "CYP", "CZE", "DEU", "DJI", "DNK",
+                /*  "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",     */
+                    "DMA", "DOM", "DZA", "ECU", "EST", "EGY", "ESH", "ERI",
+                /*  "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",     */
+                    "ESP", "ETH", "FIN", "FJI", "FLK", "FSM", "FRO", "FRA",
+                /*  "GA",  "GB",  "GD",  "GE",  "GF",  "GG",  "GH",  "GI",  "GL",     */
+                    "GAB", "GBR", "GRD", "GEO", "GUF", "GGY", "GHA", "GIB", "GRL",
+                /*  "GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",     */
+                    "GMB", "GIN", "GLP", "GNQ", "GRC", "SGS", "GTM", "GUM",
+                /*  "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",     */
+                    "GNB", "GUY", "HKG", "HMD", "HND", "HRV", "HTI", "HUN",
+                /*  "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS" */
+                    "IDN", "IRL", "ISR", "IMN", "IND", "IOT", "IRQ", "IRN", "ISL",
+                /*  "IT",  "JE",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",     */
+                    "ITA", "JEY", "JAM", "JOR", "JPN", "KEN", "KGZ", "KHM", "KIR",
+                /*  "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",     */
+                    "COM", "KNA", "PRK", "KOR", "KWT", "CYM", "KAZ", "LAO",
+                /*  "LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",     */
+                    "LBN", "LCA", "LIE", "LKA", "LBR", "LSO", "LTU", "LUX",
+                /*  "LV",  "LY",  "MA",  "MC",  "MD",  "ME",  "MF",  "MG",  "MH",  "MK",     */
+                    "LVA", "LBY", "MAR", "MCO", "MDA", "MNE", "MAF", "MDG", "MHL", "MKD",
+                /*  "ML",  "MM",  "MN",  "MO",  "MP",  "MQ",  "MR",  "MS",     */
+                    "MLI", "MMR", "MNG", "MAC", "MNP", "MTQ", "MRT", "MSR",
+                /*  "MT",  "MU",  "MV",  "MW",  "MX",  "MY",  "MZ",  "NA",     */
+                    "MLT", "MUS", "MDV", "MWI", "MEX", "MYS", "MOZ", "NAM",
+                /*  "NC",  "NE",  "NF",  "NG",  "NI",  "NL",  "NO",  "NP",     */
+                    "NCL", "NER", "NFK", "NGA", "NIC", "NLD", "NOR", "NPL",
+                /*  "NR",  "NU",  "NZ",  "OM",  "PA",  "PE",  "PF",  "PG",     */
+                    "NRU", "NIU", "NZL", "OMN", "PAN", "PER", "PYF", "PNG",
+                /*  "PH",  "PK",  "PL",  "PM",  "PN",  "PR",  "PS",  "PT",     */
+                    "PHL", "PAK", "POL", "SPM", "PCN", "PRI", "PSE", "PRT",
+                /*  "PW",  "PY",  "QA",  "RE",  "RO",  "RS",  "RU",  "RW",  "SA",     */
+                    "PLW", "PRY", "QAT", "REU", "ROU", "SRB", "RUS", "RWA", "SAU",
+                /*  "SB",  "SC",  "SD",  "SE",  "SG",  "SH",  "SI",  "SJ",     */
+                    "SLB", "SYC", "SDN", "SWE", "SGP", "SHN", "SVN", "SJM",
+                /*  "SK",  "SL",  "SM",  "SN",  "SO",  "SR",  "ST",  "SV",     */
+                    "SVK", "SLE", "SMR", "SEN", "SOM", "SUR", "STP", "SLV",
+                /*  "SY",  "SZ",  "TC",  "TD",  "TF",  "TG",  "TH",  "TJ",     */
+                    "SYR", "SWZ", "TCA", "TCD", "ATF", "TGO", "THA", "TJK",
+                /*  "TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",     */
+                    "TKL", "TLS", "TKM", "TUN", "TON", "TUR", "TTO", "TUV",
+                /*  "TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",     */
+                    "TWN", "TZA", "UKR", "UGA", "UMI", "USA", "URY", "UZB",
+                /*  "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",     */
+                    "VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF",
+                /*  "WS",  "YE",  "YT",  "ZA",  "ZM",  "ZW"          */
+                    "WSM", "YEM", "MYT", "ZAF", "ZMB", "ZWE",
+            };
+    
+            String[] tempObsoleteCountries3 = {
+                /*"FX",  "CS",  "RO",  "TP",  "YU",  "ZR",   */
+                "FXX", "SCG", "ROM", "TMP", "YUG", "ZAR",    
+            };
+
+            synchronized (ULocale.class) {
+                if (_countries == null) {
+                    _countries = tempCountries;
+                    _deprecatedCountries = tempDeprecatedCountries;
+                    _replacementCountries = tempReplacementCountries;
+                    _obsoleteCountries = tempObsoleteCountries;
+                    _countries3 = tempCountries3;
+                    _obsoleteCountries3 = tempObsoleteCountries3;
+                }
+            }
+        }
+    }
+
+    private static String[][] CANONICALIZE_MAP;
+    private static String[][] variantsToKeywords;
+
+    private static void initCANONICALIZE_MAP() {
+        if (CANONICALIZE_MAP == null) {
+            /**
+             * This table lists pairs of locale ids for canonicalization.  The
+             * The 1st item is the normalized id. The 2nd item is the
+             * canonicalized id. The 3rd is the keyword. The 4th is the keyword value.
+             */
+            String[][] tempCANONICALIZE_MAP = {
+//              { EMPTY_STRING,     "en_US_POSIX", null, null }, /* .NET name */
+                { "C",              "en_US_POSIX", null, null }, /* POSIX name */
+                { "art_LOJBAN",     "jbo", null, null }, /* registered name */
+                { "az_AZ_CYRL",     "az_Cyrl_AZ", null, null }, /* .NET name */
+                { "az_AZ_LATN",     "az_Latn_AZ", null, null }, /* .NET name */
+                { "ca_ES_PREEURO",  "ca_ES", "currency", "ESP" },
+                { "cel_GAULISH",    "cel__GAULISH", null, null }, /* registered name */
+                { "de_1901",        "de__1901", null, null }, /* registered name */
+                { "de_1906",        "de__1906", null, null }, /* registered name */
+                { "de__PHONEBOOK",  "de", "collation", "phonebook" }, /* Old ICU name */
+                { "de_AT_PREEURO",  "de_AT", "currency", "ATS" },
+                { "de_DE_PREEURO",  "de_DE", "currency", "DEM" },
+                { "de_LU_PREEURO",  "de_LU", "currency", "EUR" },
+                { "el_GR_PREEURO",  "el_GR", "currency", "GRD" },
+                { "en_BOONT",       "en__BOONT", null, null }, /* registered name */
+                { "en_SCOUSE",      "en__SCOUSE", null, null }, /* registered name */
+                { "en_BE_PREEURO",  "en_BE", "currency", "BEF" },
+                { "en_IE_PREEURO",  "en_IE", "currency", "IEP" },
+                { "es__TRADITIONAL", "es", "collation", "traditional" }, /* Old ICU name */
+                { "es_ES_PREEURO",  "es_ES", "currency", "ESP" },
+                { "eu_ES_PREEURO",  "eu_ES", "currency", "ESP" },
+                { "fi_FI_PREEURO",  "fi_FI", "currency", "FIM" },
+                { "fr_BE_PREEURO",  "fr_BE", "currency", "BEF" },
+                { "fr_FR_PREEURO",  "fr_FR", "currency", "FRF" },
+                { "fr_LU_PREEURO",  "fr_LU", "currency", "LUF" },
+                { "ga_IE_PREEURO",  "ga_IE", "currency", "IEP" },
+                { "gl_ES_PREEURO",  "gl_ES", "currency", "ESP" },
+                { "hi__DIRECT",     "hi", "collation", "direct" }, /* Old ICU name */
+                { "it_IT_PREEURO",  "it_IT", "currency", "ITL" },
+                { "ja_JP_TRADITIONAL", "ja_JP", "calendar", "japanese" },
+//              { "nb_NO_NY",       "nn_NO", null, null },
+                { "nl_BE_PREEURO",  "nl_BE", "currency", "BEF" },
+                { "nl_NL_PREEURO",  "nl_NL", "currency", "NLG" },
+                { "pt_PT_PREEURO",  "pt_PT", "currency", "PTE" },
+                { "sl_ROZAJ",       "sl__ROZAJ", null, null }, /* registered name */
+                { "sr_SP_CYRL",     "sr_Cyrl_RS", null, null }, /* .NET name */
+                { "sr_SP_LATN",     "sr_Latn_RS", null, null }, /* .NET name */
+                { "sr_YU_CYRILLIC", "sr_Cyrl_RS", null, null }, /* Linux name */
+                { "th_TH_TRADITIONAL", "th_TH", "calendar", "buddhist" }, /* Old ICU name */
+                { "uz_UZ_CYRILLIC", "uz_Cyrl_UZ", null, null }, /* Linux name */
+                { "uz_UZ_CYRL",     "uz_Cyrl_UZ", null, null }, /* .NET name */
+                { "uz_UZ_LATN",     "uz_Latn_UZ", null, null }, /* .NET name */
+                { "zh_CHS",         "zh_Hans", null, null }, /* .NET name */
+                { "zh_CHT",         "zh_Hant", null, null }, /* .NET name */
+                { "zh_GAN",         "zh__GAN", null, null }, /* registered name */
+                { "zh_GUOYU",       "zh", null, null }, /* registered name */
+                { "zh_HAKKA",       "zh__HAKKA", null, null }, /* registered name */
+                { "zh_MIN",         "zh__MIN", null, null }, /* registered name */
+                { "zh_MIN_NAN",     "zh__MINNAN", null, null }, /* registered name */
+                { "zh_WUU",         "zh__WUU", null, null }, /* registered name */
+                { "zh_XIANG",       "zh__XIANG", null, null }, /* registered name */
+                { "zh_YUE",         "zh__YUE", null, null } /* registered name */
+            };
+    
+            synchronized (ULocale.class) {
+                if (CANONICALIZE_MAP == null) {
+                    CANONICALIZE_MAP = tempCANONICALIZE_MAP;
+                }
+            }
+        }
+        if (variantsToKeywords == null) {
+            /**
+             * This table lists pairs of locale ids for canonicalization.  The
+             * The first item is the normalized variant id.
+             */
+            String[][] tempVariantsToKeywords = {
+                    { "EURO",   "currency", "EUR" },
+                    { "PINYIN", "collation", "pinyin" }, /* Solaris variant */
+                    { "STROKE", "collation", "stroke" }  /* Solaris variant */
+            };
+    
+            synchronized (ULocale.class) {
+                if (variantsToKeywords == null) {
+                    variantsToKeywords = tempVariantsToKeywords;
+                }
+            }
+        }
+    }
+
+    /*
+     * This table is used for mapping between ICU and special Java
+     * locales.  When an ICU locale matches <minumum base> with
+     * <keyword>/<value>, the ICU locale is mapped to <Java> locale.
+     * For example, both ja_JP@calendar=japanese and ja@calendar=japanese
+     * are mapped to Java locale "ja_JP_JP".  ICU locale "nn" is mapped
+     * to Java locale "no_NO_NY".
+     */
+    private static final String[][] _javaLocaleMap = {
+    //  { <Java>,       <ICU base>, <keyword>,  <value>,    <minimum base>
+        { "ja_JP_JP",   "ja_JP",    "calendar", "japanese", "ja"},
+        { "no_NO_NY",   "nn_NO",    null,       null,       "nn"},
+    //  { "th_TH_TH",   "th_TH",    ??,         ??,         "th"} //TODO
+    };
+
+    /**
+     * Private constructor used by static initializers.
+     */
+    private ULocale(String localeID, Locale locale) {
+        this.localeID = localeID;
+        this.locale = locale;
+    }
+
+    /**
+     * Construct a ULocale object from a {@link java.util.Locale}.
+     * @param loc a JDK locale
+     * @stable ICU 2.8
+     * @internal
+     */
+    private ULocale(Locale loc) {
+        this.localeID = getName(forLocale(loc).toString());
+        this.locale = loc;
+    }
+
+    /**
+     * Return a ULocale object for a {@link java.util.Locale}.
+     * The ULocale is canonicalized.
+     * @param loc a JDK locale
+     * @stable ICU 3.2
+     */
+    public static ULocale forLocale(Locale loc) {
+        if (loc == null) {
+            return null;
+        }
+        ULocale result = (ULocale)CACHE.get(loc);
+        if (result == null) {
+            if (defaultULocale != null && loc == defaultULocale.locale) {
+            result = defaultULocale;
+        } else {
+                String locStr = loc.toString();
+                if (locStr.length() == 0) {
+                    result = ROOT;
+                } else {
+                    for (int i = 0; i < _javaLocaleMap.length; i++) {
+                        if (_javaLocaleMap[i][0].equals(locStr)) {
+                            IDParser p = new IDParser(_javaLocaleMap[i][1]);
+                            p.setKeywordValue(_javaLocaleMap[i][2], _javaLocaleMap[i][3]);
+                            locStr = p.getName();
+                            break;
+                        }
+                    }
+                    result = new ULocale(locStr, loc);
+                }
+            }
+            CACHE.put(loc, result);
+        }
+        return result;
+    }
+
+    /**
+     * Construct a ULocale from a RFC 3066 locale ID. The locale ID consists
+     * of optional language, script, country, and variant fields in that order, 
+     * separated by underscores, followed by an optional keyword list.  The
+     * script, if present, is four characters long-- this distinguishes it
+     * from a country code, which is two characters long.  Other fields
+     * are distinguished by position as indicated by the underscores.  The
+     * start of the keyword list is indicated by '@', and consists of two
+     * or more keyword/value pairs separated by semicolons(';').
+     * <p>
+     * This constructor does not canonicalize the localeID.  So, for
+     * example, "zh__pinyin" remains unchanged instead of converting
+     * to "zh@collation=pinyin".  By default ICU only recognizes the
+     * latter as specifying pinyin collation.  Use {@link #createCanonical}
+     * or {@link #canonicalize} if you need to canonicalize the localeID.
+     * 
+     * @param localeID string representation of the locale, e.g:
+     * "en_US", "sy_Cyrl_YU", "zh__pinyin", "es_ES@currency=EUR;collation=traditional"
+     * @stable ICU 2.8
+     */ 
+    public ULocale(String localeID) {
+        this.localeID = getName(localeID);
+    }
+
+    /**
+     * Convenience overload of ULocale(String, String, String) for 
+     * compatibility with java.util.Locale.
+     * @see #ULocale(String, String, String)
+     * @stable ICU 3.4
+     */
+    public ULocale(String a, String b) {
+        this(a, b, null);
+    }
+
+    /**
+     * Construct a ULocale from a localeID constructed from the three 'fields' a, b, and c.  These
+     * fields are concatenated using underscores to form a localeID of
+     * the form a_b_c, which is then handled like the localeID passed
+     * to <code>ULocale(String localeID)</code>.  
+     *
+     * <p>Java locale strings consisting of language, country, and
+     * variant will be handled by this form, since the country code
+     * (being shorter than four letters long) will not be interpreted
+     * as a script code.  If a script code is present, the final
+     * argument ('c') will be interpreted as the country code.  It is
+     * recommended that this constructor only be used to ease porting,
+     * and that clients instead use the single-argument constructor
+     * when constructing a ULocale from a localeID.
+     * @param a first component of the locale id
+     * @param b second component of the locale id
+     * @param c third component of the locale id
+     * @see #ULocale(String)
+     * @stable ICU 3.0 
+     */
+    public ULocale(String a, String b, String c) {
+        localeID = getName(lscvToID(a, b, c, EMPTY_STRING));
+    }
+
+    /**
+     * Create a ULocale from the id by first canonicalizing the id.
+     * @param nonCanonicalID the locale id to canonicalize
+     * @return the locale created from the canonical version of the ID.
+     * @stable ICU 3.0
+     */
+    public static ULocale createCanonical(String nonCanonicalID) {
+        return new ULocale(canonicalize(nonCanonicalID), (Locale)null);
+    }
+
+    private static String lscvToID(String lang, String script, String country, String variant) {
+        StringBuffer buf = new StringBuffer();
+     
+        if (lang != null && lang.length() > 0) {
+            buf.append(lang);
+        }
+        if (script != null && script.length() > 0) {
+            buf.append(UNDERSCORE);
+            buf.append(script);
+        }
+        if (country != null && country.length() > 0) {
+            buf.append(UNDERSCORE);
+            buf.append(country);
+        }
+        if (variant != null && variant.length() > 0) {
+            if (country == null || country.length() == 0) {
+                buf.append(UNDERSCORE);
+            }
+            buf.append(UNDERSCORE);
+            buf.append(variant);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert this ULocale object to a {@link java.util.Locale}.
+     * @return a JDK locale that either exactly represents this object
+     * or is the closest approximation.
+     * @stable ICU 2.8
+     */
+    public Locale toLocale() {
+        if (locale == null) {
+            IDParser p = new IDParser(localeID);
+            String base = p.getBaseName();
+            for (int i = 0; i < _javaLocaleMap.length; i++) {
+                if (base.equals(_javaLocaleMap[i][1]) || base.equals(_javaLocaleMap[i][4])) {
+                    if (_javaLocaleMap[i][2] != null) {
+                        String val = p.getKeywordValue(_javaLocaleMap[i][2]);
+                        if (val != null && val.equals(_javaLocaleMap[i][3])) {
+                            p = new IDParser(_javaLocaleMap[i][0]);
+                            break;
+                        }
+                    } else {
+                        p = new IDParser(_javaLocaleMap[i][0]);
+                        break;
+                    }
+                }
+            }
+            String[] names = p.getLanguageScriptCountryVariant();
+            locale = new Locale(names[0], names[2], names[3]);
+        }
+        return locale;
+    }
+
+    private static Locale toLocale(String localeID) {
+        IDParser p = new IDParser(localeID);
+        String base = p.getBaseName();
+        for (int i = 0; i < _javaLocaleMap.length; i++) {
+            if (base.equals(_javaLocaleMap[i][1]) || base.equals(_javaLocaleMap[i][4])) {
+                if (_javaLocaleMap[i][2] != null) {
+                    String val = p.getKeywordValue(_javaLocaleMap[i][2]);
+                    if (val != null && val.equals(_javaLocaleMap[i][3])) {
+                        p = new IDParser(_javaLocaleMap[i][0]);
+                        break;
+                    }
+                } else {
+                    p = new IDParser(_javaLocaleMap[i][0]);
+                    break;
+                }
+            }
+        }
+        String[] names = p.getLanguageScriptCountryVariant();
+        return new Locale(names[0], names[2], names[3]);
+    }
+
+
+    private static SoftReference nameCacheRef = new SoftReference(Collections.synchronizedMap(new HashMap()));
+    /**
+     * Keep our own default ULocale.
+     */
+    private static Locale defaultLocale = Locale.getDefault();
+    private static ULocale defaultULocale = new ULocale(defaultLocale);
+
+    /**
+     * Returns the current default ULocale.
+     * @stable ICU 2.8
+     */ 
+    public static ULocale getDefault() {
+        synchronized (ULocale.class) {
+            Locale currentDefault = Locale.getDefault();
+            if (defaultLocale != currentDefault) {
+                defaultLocale = currentDefault;
+                defaultULocale = new ULocale(defaultLocale);
+            }
+            return defaultULocale;
+        }
+    }
+
+    /**
+     * Sets the default ULocale.  This also sets the default Locale.
+     * If the caller does not have write permission to the
+     * user.language property, a security exception will be thrown,
+     * and the default ULocale will remain unchanged.
+     * @param newLocale the new default locale
+     * @throws SecurityException
+     *        if a security manager exists and its
+     *        <code>checkPermission</code> method doesn't allow the operation.
+     * @throws NullPointerException if <code>newLocale</code> is null
+     * @see SecurityManager#checkPermission(java.security.Permission)
+     * @see java.util.PropertyPermission
+     * @stable ICU 3.0 
+     */
+    public static synchronized void setDefault(ULocale newLocale){
+        Locale.setDefault(newLocale.toLocale());
+        defaultULocale = newLocale;
+    }
+    
+    /**
+     * This is for compatibility with Locale-- in actuality, since ULocale is
+     * immutable, there is no reason to clone it, so this API returns 'this'.
+     * @stable ICU 3.0
+     */
+    public Object clone() {
+        return this;
+    }
+
+    /**
+     * Returns the hashCode.
+     * @stable ICU 3.0
+     */
+    public int hashCode() {
+        return localeID.hashCode();
+    }
+    
+    /**
+     * Returns true if the other object is another ULocale with the
+     * same full name, or is a String localeID that matches the full name.
+     * Note that since names are not canonicalized, two ULocales that
+     * function identically might not compare equal.
+     *
+     * @return true if this Locale is equal to the specified object.
+     * @stable ICU 3.0 
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof String) {
+            return localeID.equals((String)obj);   
+        }
+        if (obj instanceof ULocale) {
+            return localeID.equals(((ULocale)obj).localeID);
+        }
+        return false;
+    }
+
+    private static ULocale[] ulocales;
+
+    /**
+     * Returns a list of all installed locales.
+     * @stable ICU 3.0
+     */
+    public static ULocale[] getAvailableLocales() {
+//        return ICUResourceBundle.getAvailableULocales();
+        if (ulocales == null) {
+            Locale[] locales = Locale.getAvailableLocales();
+            ULocale[] ul = new ULocale[locales.length];
+            for (int i = 0; i < locales.length; ++i) {
+                    ul[i] = ULocale.forLocale(locales[i]);
+            }
+            ulocales = ul;
+        }
+        return (ULocale[])ulocales.clone();
+    }
+
+    /**
+     * Returns a list of all 2-letter country codes defined in ISO 3166.
+     * Can be used to create Locales.
+     * @stable ICU 3.0
+     */
+    public static String[] getISOCountries() {
+        initCountryTables();
+        return (String[])_countries.clone();
+    }
+
+    /**
+     * Returns a list of all 2-letter language codes defined in ISO 639.
+     * Can be used to create Locales.
+     * [NOTE:  ISO 639 is not a stable standard-- some languages' codes have changed.
+     * The list this function returns includes both the new and the old codes for the
+     * languages whose codes have changed.]
+     * @stable ICU 3.0
+     */
+    public static String[] getISOLanguages() {
+        initLanguageTables();
+        return (String[])_languages.clone();
+    }
+
+    /**
+     * Returns the language code for this locale, which will either be the empty string
+     * or a lowercase ISO 639 code.
+     * @see #getDisplayLanguage()
+     * @see #getDisplayLanguage(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getLanguage() {
+        return getLanguage(localeID);
+    }
+    
+    /**
+     * Returns the language code for the locale ID,
+     * which will either be the empty string
+     * or a lowercase ISO 639 code.
+     * @see #getDisplayLanguage()
+     * @see #getDisplayLanguage(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getLanguage(String localeID) {
+        return new IDParser(localeID).getLanguage();
+    }
+     
+    /**
+     * Returns the script code for this locale, which might be the empty string.
+     * @see #getDisplayScript()
+     * @see #getDisplayScript(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getScript() {
+        return getScript(localeID);
+    }
+
+    /**
+     * Returns the script code for the specified locale, which might be the empty string.
+     * @see #getDisplayScript()
+     * @see #getDisplayScript(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getScript(String localeID) {
+        return new IDParser(localeID).getScript();
+    }
+    
+    /**
+     * Returns the country/region code for this locale, which will either be the empty string
+     * or an uppercase ISO 3166 2-letter code.
+     * @see #getDisplayCountry()
+     * @see #getDisplayCountry(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getCountry() {
+        return getCountry(localeID);
+    }
+
+    /**
+     * Returns the country/region code for this locale, which will either be the empty string
+     * or an uppercase ISO 3166 2-letter code.
+     * @param localeID
+     * @see #getDisplayCountry()
+     * @see #getDisplayCountry(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getCountry(String localeID) {
+        return new IDParser(localeID).getCountry();
+    }
+    
+    /**
+     * Returns the variant code for this locale, which might be the empty string.
+     * @see #getDisplayVariant()
+     * @see #getDisplayVariant(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getVariant() {
+        return getVariant(localeID);
+    }
+
+    /**
+     * Returns the variant code for the specified locale, which might be the empty string.
+     * @see #getDisplayVariant()
+     * @see #getDisplayVariant(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getVariant(String localeID) {
+        return new IDParser(localeID).getVariant();
+    }
+
+    /**
+     * Returns the fallback locale for the specified locale, which might be the empty string.
+     * @stable ICU 3.2
+     */
+    public static String getFallback(String localeID) {
+        return getFallbackString(getName(localeID));
+    }
+
+    /**
+     * Returns the fallback locale for this locale.  If this locale is root, returns null.
+     * @stable ICU 3.2
+     */
+    public ULocale getFallback() {
+        if (localeID.length() == 0 || localeID.charAt(0) == '@') {
+            return null;
+        }
+        return new ULocale(getFallbackString(localeID), (Locale)null);
+    }
+
+    /**
+     * Return the given (canonical) locale id minus the last part before the tags.
+     */
+    private static String getFallbackString(String fallback) {
+        int limit = fallback.indexOf('@');
+        if (limit == -1) {
+            limit = fallback.length();
+        }
+        int start = fallback.lastIndexOf('_', limit);
+        if (start == -1) {
+            start = 0;
+        }
+        return fallback.substring(0, start) + fallback.substring(limit);
+    }
+
+    /**
+     * Returns the (normalized) base name for this locale.
+     * @return the base name as a String.
+     * @stable ICU 3.0
+     */
+    public String getBaseName() {
+        return getBaseName(localeID);
+    }
+    
+    /**
+     * Returns the (normalized) base name for the specified locale.
+     * @param localeID the locale ID as a string
+     * @return the base name as a String.
+     * @stable ICU 3.0
+     */
+    public static String getBaseName(String localeID){
+        if (localeID.indexOf('@') == -1) {
+            return localeID;
+        }
+        return new IDParser(localeID).getBaseName();
+    }
+
+    /**
+     * Returns the (normalized) full name for this locale.
+     *
+     * @return String the full name of the localeID
+     * @stable ICU 3.0
+     */ 
+    public String getName() {
+        return localeID; // always normalized
+    }
+
+    /**
+     * Returns the (normalized) full name for the specified locale.
+     *
+     * @param localeID the localeID as a string
+     * @return String the full name of the localeID
+     * @stable ICU 3.0
+     */
+    public static String getName(String localeID){
+        Map cache = (Map)nameCacheRef.get();
+        if (cache == null) {
+            cache = Collections.synchronizedMap(new HashMap());
+            nameCacheRef = new SoftReference(cache);
+        }
+        String name = (String)cache.get(localeID);
+        if (name == null) {
+            name = new IDParser(localeID).getName();
+            cache.put(localeID, name);
+        }
+        return name;
+    }
+
+    /**
+     * Returns a string representation of this object.
+     * @stable ICU 3.0
+     */
+    public String toString() {
+        return localeID;
+    }
+
+    /**
+     * Returns an iterator over keywords for this locale.  If there 
+     * are no keywords, returns null.
+     * @return iterator over keywords, or null if there are no keywords.
+     * @stable ICU 3.0
+     */
+    public Iterator getKeywords() {
+        return getKeywords(localeID);
+    }
+
+    /**
+     * Returns an iterator over keywords for the specified locale.  If there 
+     * are no keywords, returns null.
+     * @return an iterator over the keywords in the specified locale, or null
+     * if there are no keywords.
+     * @stable ICU 3.0
+     */
+    public static Iterator getKeywords(String localeID){
+        return new IDParser(localeID).getKeywords();
+    }
+
+    /**
+     * Returns the value for a keyword in this locale. If the keyword is not defined, returns null.
+     * @param keywordName name of the keyword whose value is desired. Case insensitive.
+     * @return the value of the keyword, or null.
+     * @stable ICU 3.0
+     */
+    public String getKeywordValue(String keywordName){
+        return getKeywordValue(localeID, keywordName);
+    }
+    
+    /**
+     * Returns the value for a keyword in the specified locale. If the keyword is not defined, returns null. 
+     * The locale name does not need to be normalized.
+     * @param keywordName name of the keyword whose value is desired. Case insensitive.
+     * @return String the value of the keyword as a string
+     * @stable ICU 3.0
+     */
+    public static String getKeywordValue(String localeID, String keywordName) {
+        return new IDParser(localeID).getKeywordValue(keywordName);
+    }
+
+    /**
+     * Utility class to parse and normalize locale ids (including POSIX style)
+     */
+    private static final class IDParser {
+        private char[] id;
+        private int index;
+        private char[] buffer;
+        private int blen;
+        // um, don't handle POSIX ids unless we request it.  why not?  well... because.
+        private boolean canonicalize;
+        private boolean hadCountry;
+
+        // used when canonicalizing
+        Map keywords;
+        String baseName;
+
+        /**
+         * Parsing constants.
+         */
+        private static final char KEYWORD_SEPARATOR     = '@';
+        private static final char HYPHEN                = '-';
+        private static final char KEYWORD_ASSIGN        = '=';
+        private static final char COMMA                 = ',';
+        private static final char ITEM_SEPARATOR        = ';';
+        private static final char DOT                   = '.';
+
+        private IDParser(String localeID) {
+            this(localeID, false);
+        }
+
+        private IDParser(String localeID, boolean canonicalize) {
+            id = localeID.toCharArray();
+            index = 0;
+            buffer = new char[id.length + 5];
+            blen = 0;
+            this.canonicalize = canonicalize;
+        }
+
+        private void reset() {
+            index = blen = 0;
+        }
+
+        // utilities for working on text in the buffer
+
+        /**
+         * Append c to the buffer.
+         */
+        private void append(char c) {
+            try {
+                buffer[blen] = c;
+            }
+            catch (IndexOutOfBoundsException e) {
+                if (buffer.length > 512) {
+                    // something is seriously wrong, let this go
+                    throw e;
+                }
+                char[] nbuffer = new char[buffer.length * 2];
+                System.arraycopy(buffer, 0, nbuffer, 0, buffer.length);
+                nbuffer[blen] = c;
+                buffer = nbuffer;
+            }
+            ++blen;
+        }
+
+        private void addSeparator() {
+            append(UNDERSCORE);
+        }
+
+        /**
+         * Returns the text in the buffer from start to blen as a String.
+         */
+        private String getString(int start) {
+            if (start == blen) {
+                return EMPTY_STRING;
+            }
+            return new String(buffer, start, blen-start);
+        }
+
+        /**
+         * Set the length of the buffer to pos, then append the string.
+         */
+        private void set(int pos, String s) {
+            this.blen = pos; // no safety
+            append(s);
+        }
+
+        /**
+         * Append the string to the buffer.
+         */
+        private void append(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                append(s.charAt(i));
+            }
+        }
+
+        // utilities for parsing text out of the id
+
+        /**
+         * Character to indicate no more text is available in the id.
+         */
+        private static final char DONE = '\uffff';
+
+        /**
+         * Returns the character at index in the id, and advance index.  The returned character
+         * is DONE if index was at the limit of the buffer.  The index is advanced regardless
+         * so that decrementing the index will always 'unget' the last character returned.
+         */
+        private char next() {
+            if (index == id.length) {
+                index++;
+                return DONE; 
+            }
+
+            return id[index++];
+        }
+
+        /**
+         * Advance index until the next terminator or id separator, and leave it there.
+         */
+        private void skipUntilTerminatorOrIDSeparator() {
+            while (!isTerminatorOrIDSeparator(next())) {
+            }
+            --index;
+        }
+
+        /**
+         * Returns true if the character at index in the id is a terminator.
+         */
+        private boolean atTerminator() {
+            return index >= id.length || isTerminator(id[index]);
+        }
+
+        /*
+         * Returns true if the character is an id separator (underscore or hyphen).
+         */
+/*        private boolean isIDSeparator(char c) {
+            return c == UNDERSCORE || c == HYPHEN;
+        }*/
+
+        /**
+         * Returns true if the character is a terminator (keyword separator, dot, or DONE).
+         * Dot is a terminator because of the POSIX form, where dot precedes the codepage.
+         */
+        private boolean isTerminator(char c) {
+            // always terminate at DOT, even if not handling POSIX.  It's an error...
+            return c == KEYWORD_SEPARATOR || c == DONE || c == DOT;
+        }
+
+        /**
+         * Returns true if the character is a terminator or id separator.
+         */
+        private boolean isTerminatorOrIDSeparator(char c) {
+            return c == KEYWORD_SEPARATOR || c == UNDERSCORE || c == HYPHEN || 
+                c == DONE || c == DOT;   
+        }
+
+        /**
+         * Returns true if the start of the buffer has an experimental or private language 
+         * prefix, the pattern '[ixIX][-_].' shows the syntax checked.
+         */
+        private boolean haveExperimentalLanguagePrefix() {
+            if (id.length > 2) {
+                char c = id[1];
+                if (c == HYPHEN || c == UNDERSCORE) {
+                    c = id[0];
+                    return c == 'x' || c == 'X' || c == 'i' || c == 'I';
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Returns true if a value separator occurs at or after index.
+         */
+        private boolean haveKeywordAssign() {
+            // assume it is safe to start from index
+            for (int i = index; i < id.length; ++i) {
+                if (id[i] == KEYWORD_ASSIGN) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Advance index past language, and accumulate normalized language code in buffer.
+         * Index must be at 0 when this is called.  Index is left at a terminator or id 
+         * separator.  Returns the start of the language code in the buffer.
+         */
+        private int parseLanguage() {
+            if (haveExperimentalLanguagePrefix()) {
+                append(Character.toLowerCase(id[0]));
+                append(HYPHEN);
+                index = 2;
+            }
+        
+            char c;
+            while(!isTerminatorOrIDSeparator(c = next())) {
+                append(Character.toLowerCase(c));
+            }
+            --index; // unget
+
+            if (blen == 3) {
+                initLanguageTables();
+
+                /* convert 3 character code to 2 character code if possible *CWB*/
+                String lang = getString(0);
+                int offset = findIndex(_languages3, lang);
+                if (offset >= 0) {
+                    set(0, _languages[offset]);
+                } else {
+                    offset = findIndex(_obsoleteLanguages3, lang);
+                    if (offset >= 0) {
+                        set(0, _obsoleteLanguages[offset]);
+                    }
+                }
+            }
+
+            return 0;
+        }
+
+        /**
+         * Advance index past language.  Index must be at 0 when this is called.  Index
+         * is left at a terminator or id separator.
+         */
+        private void skipLanguage() {
+            if (haveExperimentalLanguagePrefix()) {
+                index = 2;
+            }
+            skipUntilTerminatorOrIDSeparator();
+        }
+
+        /**
+         * Advance index past script, and accumulate normalized script in buffer.
+         * Index must be immediately after the language.
+         * If the item at this position is not a script (is not four characters
+         * long) leave index and buffer unchanged.  Otherwise index is left at
+         * a terminator or id separator.  Returns the start of the script code
+         * in the buffer (this may be equal to the buffer length, if there is no
+         * script).
+         */
+        private int parseScript() {
+            if (!atTerminator()) {
+                int oldIndex = index; // save original index
+                ++index;
+
+                int oldBlen = blen; // get before append hyphen, if we truncate everything is undone
+                char c;
+                while(!isTerminatorOrIDSeparator(c = next())) {
+                    if (blen == oldBlen) { // first pass
+                        addSeparator();
+                        append(Character.toUpperCase(c));
+                    } else {
+                        append(Character.toLowerCase(c));
+                    }
+                }
+                --index; // unget
+
+                /* If it's not exactly 4 characters long, then it's not a script. */
+                if (index - oldIndex != 5) { // +1 to account for separator
+                    index = oldIndex;
+                    blen = oldBlen;
+                } else {
+                    oldBlen++; // index past hyphen, for clients who want to extract just the script
+                }
+
+                return oldBlen;
+            }
+            return blen;
+        }
+
+        /**
+         * Advance index past script.
+         * Index must be immediately after the language and IDSeparator.
+         * If the item at this position is not a script (is not four characters
+         * long) leave index.  Otherwise index is left at a terminator or
+         * id separator.
+         */
+        private void skipScript() {
+            if (!atTerminator()) {
+                int oldIndex = index;
+                ++index;
+
+                skipUntilTerminatorOrIDSeparator();
+                if (index - oldIndex != 5) { // +1 to account for separator
+                    index = oldIndex;
+                }
+            }
+        }
+
+        /**
+         * Advance index past country, and accumulate normalized country in buffer.
+         * Index must be immediately after the script (if there is one, else language)
+         * and IDSeparator.  Return the start of the country code in the buffer.
+         */
+        private int parseCountry() {
+            if (!atTerminator()) {
+                int oldIndex = index;
+                ++index;
+
+                int oldBlen = blen;
+                char c;
+                while (!isTerminatorOrIDSeparator(c = next())) {
+                    if (oldBlen == blen) { // first, add hyphen
+                        hadCountry = true; // we have a country, let variant parsing know
+                        addSeparator();
+                        ++oldBlen; // increment past hyphen
+                    }
+                    append(Character.toUpperCase(c));
+                }
+                --index; // unget
+
+                int charsAppended = blen - oldBlen;
+
+                if (charsAppended == 0) {
+                    // Do nothing.
+                }
+                else if (charsAppended < 2 || charsAppended > 3) {
+                    // It's not a country, so return index and blen to
+                    // their previous values.
+                    index = oldIndex;
+                    --oldBlen;
+                    blen = oldBlen;
+                    hadCountry = false;
+                }
+                else if (charsAppended == 3) {
+                    initCountryTables();
+
+                    /* convert 3 character code to 2 character code if possible *CWB*/
+                    int offset = findIndex(_countries3, getString(oldBlen));
+                    if (offset >= 0) {
+                        set(oldBlen, _countries[offset]);
+                    } else {
+                        offset = findIndex(_obsoleteCountries3, getString(oldBlen));
+                        if (offset >= 0) {
+                            set(oldBlen, _obsoleteCountries[offset]);
+                        }
+                    }
+                }
+
+                return oldBlen;
+            }
+
+            return blen;
+        }  
+
+        /**
+         * Advance index past country.
+         * Index must be immediately after the script (if there is one, else language)
+         * and IDSeparator.
+         */
+        private void skipCountry() {
+            if (!atTerminator()) {
+                ++index;
+                /* 
+                 * Save the index point after the separator, since the format
+                 * requires two separators if the country is not present.
+                 */
+                int oldIndex = index;
+
+                skipUntilTerminatorOrIDSeparator();
+                int charsSkipped = index - oldIndex;
+                if (charsSkipped < 2 || charsSkipped > 3) {
+                    index = oldIndex;
+                }
+            }
+        }
+
+        /**
+         * Advance index past variant, and accumulate normalized variant in buffer.  This ignores
+         * the codepage information from POSIX ids.  Index must be immediately after the country
+         * or script.  Index is left at the keyword separator or at the end of the text.  Return
+         * the start of the variant code in the buffer.
+         *
+         * In standard form, we can have the following forms:
+         * ll__VVVV
+         * ll_CC_VVVV
+         * ll_Ssss_VVVV
+         * ll_Ssss_CC_VVVV
+         *
+         * This also handles POSIX ids, which can have the following forms (pppp is code page id):
+         * ll_CC.pppp          --> ll_CC
+         * ll_CC.pppp@VVVV     --> ll_CC_VVVV
+         * ll_CC@VVVV          --> ll_CC_VVVV
+         *
+         * We identify this use of '@' in POSIX ids by looking for an '=' following
+         * the '@'.  If there is one, we consider '@' to start a keyword list, instead of
+         * being part of a POSIX id.
+         *
+         * Note:  since it was decided that we want an option to not handle POSIX ids, this
+         * becomes a bit more complex.
+         */
+        private int parseVariant() {
+            int oldBlen = blen;
+
+            boolean start = true;
+            boolean needSeparator = true;
+            boolean skipping = false;
+            char c;
+            while ((c = next()) != DONE) {
+                if (c == DOT) {
+                    start = false;
+                    skipping = true;
+                } else if (c == KEYWORD_SEPARATOR) {
+                    if (haveKeywordAssign()) {
+                        break;
+                    }
+                    skipping = false;
+                    start = false;
+                    needSeparator = true; // add another underscore if we have more text
+                } else if (start) {
+                    start = false;
+                } else if (!skipping) {
+                    if (needSeparator) {
+                        boolean incOldBlen = blen == oldBlen; // need to skip separators
+                        needSeparator = false;
+                        if (incOldBlen && !hadCountry) { // no country, we'll need two
+                            addSeparator();
+                            ++oldBlen; // for sure
+                        }
+                        addSeparator();
+                        if (incOldBlen) { // only for the first separator
+                            ++oldBlen;
+                        }
+                    }
+                    c = Character.toUpperCase(c);
+                    if (c == HYPHEN || c == COMMA) {
+                        c = UNDERSCORE;
+                    }
+                    append(c);
+                }
+            }
+            --index; // unget
+            
+            return oldBlen;
+        }
+
+        // no need for skipvariant, to get the keywords we'll just scan directly for 
+        // the keyword separator
+
+        /**
+         * Returns the normalized language id, or the empty string.
+         */
+        public String getLanguage() {
+            reset();
+            return getString(parseLanguage());
+        }
+   
+        /**
+         * Returns the normalized script id, or the empty string.
+         */
+        public String getScript() {
+            reset();
+            skipLanguage();
+            return getString(parseScript());
+        }
+    
+        /**
+         * return the normalized country id, or the empty string.
+         */
+        public String getCountry() {
+            reset();
+            skipLanguage();
+            skipScript();
+            return getString(parseCountry());
+        }
+
+        /**
+         * Returns the normalized variant id, or the empty string.
+         */
+        public String getVariant() {
+            reset();
+            skipLanguage();
+            skipScript();
+            skipCountry();
+            return getString(parseVariant());
+        }
+
+        /**
+         * Returns the language, script, country, and variant as separate strings.
+         */
+        public String[] getLanguageScriptCountryVariant() {
+            reset();
+            return new String[] {
+                getString(parseLanguage()),
+                getString(parseScript()),
+                getString(parseCountry()),
+                getString(parseVariant())
+            };
+        }
+
+        public void setBaseName(String baseName) {
+            this.baseName = baseName;
+        }
+
+        public void parseBaseName() {
+            if (baseName != null) {
+                set(0, baseName);
+            } else {
+                reset();
+                parseLanguage();
+                parseScript();
+                parseCountry();
+                parseVariant();
+            
+                // catch unwanted trailing underscore after country if there was no variant
+                if (blen > 1 && buffer[blen-1] == UNDERSCORE) {
+                    --blen;
+                }
+            }
+        }
+
+        /**
+         * Returns the normalized base form of the locale id.  The base
+         * form does not include keywords.
+         */
+        public String getBaseName() {
+            if (baseName != null) {
+                return baseName;
+            }
+            parseBaseName();
+            return getString(0);
+        }
+
+        /**
+         * Returns the normalized full form of the locale id.  The full
+         * form includes keywords if they are present.
+         */
+        public String getName() {
+            parseBaseName();
+            parseKeywords();
+            return getString(0);
+        }
+
+        // keyword utilities
+
+        /**
+         * If we have keywords, advance index to the start of the keywords and return true, 
+         * otherwise return false.
+         */
+        private boolean setToKeywordStart() {
+            for (int i = index; i < id.length; ++i) {
+                if (id[i] == KEYWORD_SEPARATOR) {
+                    if (canonicalize) {
+                        for (int j = ++i; j < id.length; ++j) { // increment i past separator for return
+                            if (id[j] == KEYWORD_ASSIGN) {
+                                index = i;
+                                return true;
+                            }
+                        }
+                    } else {
+                        if (++i < id.length) {
+                            index = i;
+                            return true;
+                        }
+                    }
+                    break;
+                }
+            }
+            return false;
+        }
+        
+        private static boolean isDoneOrKeywordAssign(char c) {
+            return c == DONE || c == KEYWORD_ASSIGN;
+        }
+
+        private static boolean isDoneOrItemSeparator(char c) {
+            return c == DONE || c == ITEM_SEPARATOR;
+        }
+
+        private String getKeyword() {
+            int start = index;
+            while (!isDoneOrKeywordAssign(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim().toLowerCase();
+        }
+
+        private String getValue() {
+            int start = index;
+            while (!isDoneOrItemSeparator(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim(); // leave case alone
+        }
+
+        private Comparator getKeyComparator() {
+            final Comparator comp = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        return ((String)lhs).compareTo((String)rhs);
+                    }
+                };
+            return comp;
+        }
+
+        /**
+         * Returns a map of the keywords and values, or null if there are none.
+         */
+        private Map getKeywordMap() {
+            if (keywords == null) {
+                TreeMap m = null;
+                if (setToKeywordStart()) {
+                    // trim spaces and convert to lower case, both keywords and values.
+                    do {
+                        String key = getKeyword();
+                        if (key.length() == 0) {
+                            break;
+                        }
+                        char c = next();
+                        if (c != KEYWORD_ASSIGN) {
+                            // throw new IllegalArgumentException("key '" + key + "' missing a value.");
+                            if (c == DONE) {
+                                break;
+                            } else {
+                                continue;
+                            }
+                        }
+                        String value = getValue();
+                        if (value.length() == 0) {
+                            // throw new IllegalArgumentException("key '" + key + "' missing a value.");
+                            continue;
+                        }
+                        if (m == null) {
+                            m = new TreeMap(getKeyComparator());
+                        } else if (m.containsKey(key)) {
+                            // throw new IllegalArgumentException("key '" + key + "' already has a value.");
+                            continue;
+                        }
+                        m.put(key, value);
+                    } while (next() == ITEM_SEPARATOR);
+                }               
+                keywords = m != null ? m : Collections.EMPTY_MAP;
+            }
+
+            return keywords;
+        }
+
+        /**
+         * Parse the keywords and return start of the string in the buffer.
+         */
+        private int parseKeywords() {
+            int oldBlen = blen;
+            Map m = getKeywordMap();
+            if (!m.isEmpty()) {
+                Iterator iter = m.entrySet().iterator();
+                boolean first = true;
+                while (iter.hasNext()) {
+                    append(first ? KEYWORD_SEPARATOR : ITEM_SEPARATOR);
+                    first = false;
+                    Map.Entry e = (Map.Entry)iter.next();
+                    append((String)e.getKey());
+                    append(KEYWORD_ASSIGN);
+                    append((String)e.getValue());
+                }
+                if (blen != oldBlen) {
+                    ++oldBlen;
+                }
+            }
+            return oldBlen;
+        }
+
+        /**
+         * Returns an iterator over the keywords, or null if we have an empty map.
+         */
+        public Iterator getKeywords() {
+            Map m = getKeywordMap();
+            return m.isEmpty() ? null : m.keySet().iterator();
+        }
+
+        /**
+         * Returns the value for the named keyword, or null if the keyword is not
+         * present.
+         */
+        public String getKeywordValue(String keywordName) {
+            Map m = getKeywordMap();
+            return m.isEmpty() ? null : (String)m.get(keywordName.trim().toLowerCase());
+        }
+
+        /**
+         * Set the keyword value only if it is not already set to something else.
+         */
+        public void defaultKeywordValue(String keywordName, String value) {
+            setKeywordValue(keywordName, value, false);
+        }
+            
+        /**
+         * Set the value for the named keyword, or unset it if value is null.  If
+         * keywordName itself is null, unset all keywords.  If keywordName is not null,
+         * value must not be null.
+         */
+        public void setKeywordValue(String keywordName, String value) {
+            setKeywordValue(keywordName, value, true);
+        }
+
+        /**
+         * Set the value for the named keyword, or unset it if value is null.  If
+         * keywordName itself is null, unset all keywords.  If keywordName is not null,
+         * value must not be null.  If reset is true, ignore any previous value for 
+         * the keyword, otherwise do not change the keyword (including removal of
+         * one or all keywords).
+         */
+        private void setKeywordValue(String keywordName, String value, boolean reset) {
+            if (keywordName == null) {
+                if (reset) {
+                    // force new map, ignore value
+                    keywords = Collections.EMPTY_MAP;
+                }
+            } else {
+                keywordName = keywordName.trim().toLowerCase();
+                if (keywordName.length() == 0) {
+                    throw new IllegalArgumentException("keyword must not be empty");
+                }
+                if (value != null) {
+                    value = value.trim();
+                    if (value.length() == 0) {
+                        throw new IllegalArgumentException("value must not be empty");
+                    }
+                }
+                Map m = getKeywordMap();
+                if (m.isEmpty()) { // it is EMPTY_MAP
+                    if (value != null) {
+                        // force new map
+                        keywords = new TreeMap(getKeyComparator());
+                        keywords.put(keywordName, value.trim());
+                    }
+                } else {
+                    if (reset || !m.containsKey(keywordName)) {
+                        if (value != null) {
+                            m.put(keywordName, value);
+                        } else {
+                            m.remove(keywordName);
+                            if (m.isEmpty()) {
+                                // force new map
+                                keywords = Collections.EMPTY_MAP;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * linear search of the string array. the arrays are unfortunately ordered by the
+     * two-letter target code, not the three-letter search code, which seems backwards.
+     */
+    private static int findIndex(String[] array, String target){
+        for (int i = 0; i < array.length; i++) {
+            if (target.equals(array[i])) {
+                return i;
+            }
+        }
+        return -1;
+    }    
+
+    /**
+     * Returns the canonical name for the specified locale ID.  This is used to convert POSIX
+     * and other grandfathered IDs to standard ICU form.
+     * @param localeID the locale id
+     * @return the canonicalized id
+     * @stable ICU 3.0
+     */
+    public static String canonicalize(String localeID){
+        IDParser parser = new IDParser(localeID, true);
+        String baseName = parser.getBaseName();
+        boolean foundVariant = false;
+      
+        // formerly, we always set to en_US_POSIX if the basename was empty, but
+        // now we require that the entire id be empty, so that "@foo=bar"
+        // will pass through unchanged.
+        // {dlf} I'd rather keep "" unchanged.
+        if (localeID.equals("")) {
+            return "";
+//              return "en_US_POSIX";
+        }
+
+        // we have an ID in the form xx_Yyyy_ZZ_KKKKK
+
+        initCANONICALIZE_MAP();
+
+        /* convert the variants to appropriate ID */
+        for (int i = 0; i < variantsToKeywords.length; i++) {
+            String[] vals = variantsToKeywords[i];
+            int idx = baseName.lastIndexOf("_" + vals[0]);
+            if (idx > -1) {
+                foundVariant = true;
+
+                baseName = baseName.substring(0, idx);
+                if (baseName.endsWith("_")) {
+                    baseName = baseName.substring(0, --idx);
+                }
+                parser.setBaseName(baseName);
+                parser.defaultKeywordValue(vals[1], vals[2]);
+                break;
+            }
+        }
+
+        /* See if this is an already known locale */
+        for (int i = 0; i < CANONICALIZE_MAP.length; i++) {
+            if (CANONICALIZE_MAP[i][0].equals(baseName)) {
+                foundVariant = true;
+
+                String[] vals = CANONICALIZE_MAP[i];
+                parser.setBaseName(vals[1]);
+                if (vals[2] != null) {
+                    parser.defaultKeywordValue(vals[2], vals[3]);
+                }
+                break;
+            }
+        }
+
+        /* total mondo hack for Norwegian, fortunately the main NY case is handled earlier */
+        if (!foundVariant) {
+            if (parser.getLanguage().equals("nb") && parser.getVariant().equals("NY")) {
+                parser.setBaseName(lscvToID("nn", parser.getScript(), parser.getCountry(), null));
+            }
+        }
+
+        return parser.getName();
+    }
+    
+    /**
+     * Given a keyword and a value, return a new locale with an updated
+     * keyword and value.  If keyword is null, this removes all keywords from the locale id.
+     * Otherwise, if the value is null, this removes the value for this keyword from the
+     * locale id.  Otherwise, this adds/replaces the value for this keyword in the locale id.
+     * The keyword and value must not be empty.
+     * @param keyword the keyword to add/remove, or null to remove all keywords.
+     * @param value the value to add/set, or null to remove this particular keyword.
+     * @return the updated locale
+     * @stable ICU 3.2
+     */
+    public ULocale setKeywordValue(String keyword, String value) {
+        return new ULocale(setKeywordValue(localeID, keyword, value), (Locale)null);
+    }
+
+    /**
+     * Given a locale id, a keyword, and a value, return a new locale id with an updated
+     * keyword and value.  If keyword is null, this removes all keywords from the locale id.
+     * Otherwise, if the value is null, this removes the value for this keyword from the
+     * locale id.  Otherwise, this adds/replaces the value for this keyword in the locale id.
+     * The keyword and value must not be empty.
+     * @param localeID the locale id to modify
+     * @param keyword the keyword to add/remove, or null to remove all keywords.
+     * @param value the value to add/set, or null to remove this particular keyword.
+     * @return the updated locale id
+     * @stable ICU 3.2
+     */
+    public static String setKeywordValue(String localeID, String keyword, String value) {
+        IDParser parser = new IDParser(localeID);
+        parser.setKeywordValue(keyword, value);
+        return parser.getName();
+    }
+
+    /*
+     * Given a locale id, a keyword, and a value, return a new locale id with an updated
+     * keyword and value, if the keyword does not already have a value.  The keyword and
+     * value must not be null or empty.
+     * @param localeID the locale id to modify
+     * @param keyword the keyword to add, if not already present
+     * @param value the value to add, if not already present
+     * @return the updated locale id
+     * @internal
+     */
+/*    private static String defaultKeywordValue(String localeID, String keyword, String value) {
+        IDParser parser = new IDParser(localeID);
+        parser.defaultKeywordValue(keyword, value);
+        return parser.getName();
+    }*/
+
+    /**
+     * Returns a three-letter abbreviation for this locale's language.  If the locale
+     * doesn't specify a language, returns the empty string.  Otherwise, returns
+     * a lowercase ISO 639-2/T language code.
+     * The ISO 639-2 language codes can be found on-line at
+     *   <a href="ftp://dkuug.dk/i18n/iso-639-2.txt"><code>ftp://dkuug.dk/i18n/iso-639-2.txt</code></a>
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter language abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public String getISO3Language(){
+        return getISO3Language(localeID);
+    }
+
+    /**
+     * Returns a three-letter abbreviation for this locale's language.  If the locale
+     * doesn't specify a language, returns the empty string.  Otherwise, returns
+     * a lowercase ISO 639-2/T language code.
+     * The ISO 639-2 language codes can be found on-line at
+     *   <a href="ftp://dkuug.dk/i18n/iso-639-2.txt"><code>ftp://dkuug.dk/i18n/iso-639-2.txt</code></a>
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter language abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public static String getISO3Language(String localeID){
+        initLanguageTables();
+
+        String language = getLanguage(localeID);
+        int offset = findIndex(_languages, language);
+        if(offset>=0){
+            return _languages3[offset];
+        } else {
+            offset = findIndex(_obsoleteLanguages, language);
+            if (offset >= 0) {
+                return _obsoleteLanguages3[offset];
+            }
+        }
+        return EMPTY_STRING;
+    }
+    
+    /**
+     * Returns a three-letter abbreviation for this locale's country/region.  If the locale
+     * doesn't specify a country, returns the empty string.  Otherwise, returns
+     * an uppercase ISO 3166 3-letter country code.
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter country abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public String getISO3Country(){
+        return getISO3Country(localeID);
+    }
+    /**
+     * Returns a three-letter abbreviation for this locale's country/region.  If the locale
+     * doesn't specify a country, returns the empty string.  Otherwise, returns
+     * an uppercase ISO 3166 3-letter country code.
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter country abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public static String getISO3Country(String localeID){
+        initCountryTables();
+
+        String country = getCountry(localeID);
+        int offset = findIndex(_countries, country);
+        if(offset>=0){
+            return _countries3[offset];
+        }else{
+            offset = findIndex(_obsoleteCountries, country);
+            if(offset>=0){
+                return _obsoleteCountries3[offset];   
+            }
+        }
+        return EMPTY_STRING;
+    }
+    
+    // display names
+
+//    /**
+//     * Utility to fetch locale display data from resource bundle tables.
+//     */
+//    private static String getTableString(String tableName, String subtableName, String item, String displayLocaleID) {
+//        if (item.length() > 0) {
+//            try {
+//                ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.
+//                  getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, displayLocaleID);
+//                return getTableString(tableName, subtableName, item, bundle);
+//            } catch (Exception e) {
+////              System.out.println("gtsu: " + e.getMessage());
+//            }
+//        }
+//        return item;
+//    }
+//        
+//    /**
+//     * Utility to fetch locale display data from resource bundle tables.
+//     */
+//    private static String getTableString(String tableName, String subtableName, String item, ICUResourceBundle bundle) {
+////      System.out.println("gts table: " + tableName + 
+////                         " subtable: " + subtableName +
+////                         " item: " + item +
+////                         " bundle: " + bundle.getULocale());
+//        try {
+//            for (;;) {
+//                // special case currency
+//                if ("currency".equals(subtableName)) {
+//                    ICUResourceBundle table = bundle.getWithFallback("Currencies");
+//                    table = table.getWithFallback(item);
+//                    return table.getString(1);
+//                } else {
+//                    ICUResourceBundle table = bundle.getWithFallback(tableName);
+//                    try {
+//                        if (subtableName != null) {
+//                            table = table.getWithFallback(subtableName);
+//                        }
+//                        return table.getStringWithFallback(item);
+//                    }
+//                    catch (MissingResourceException e) {
+//                        
+//                        if(subtableName==null){
+//                            try{
+//                                // may be a deprecated code
+//                                String currentName = null;
+//                                if(tableName.equals("Countries")){
+//                                    currentName = getCurrentCountryID(item);
+//                                }else if(tableName.equals("Languages")){
+//                                    currentName = getCurrentLanguageID(item);
+//                                }
+//                                return table.getStringWithFallback(currentName);
+//                            }catch (MissingResourceException ex){/* fall through*/}
+//                        }
+//                        
+//                        // still can't figure out ?.. try the fallback mechanism
+//                        String fallbackLocale = table.getWithFallback("Fallback").getString();
+//                        if (fallbackLocale.length() == 0) {
+//                            fallbackLocale = "root";
+//                        }
+////                      System.out.println("bundle: " + bundle.getULocale() + " fallback: " + fallbackLocale);
+//                        if(fallbackLocale.equals(table.getULocale().localeID)){
+//                            return item;
+//                        }
+//                        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, 
+//                                                                                      fallbackLocale);
+////                          System.out.println("fallback from " + table.getULocale() + " to " + fallbackLocale + 
+////                                             ", got bundle " + bundle.getULocale());                      
+//                    }
+//                }
+//            }
+//        }
+//        catch (Exception e) {
+////          System.out.println("gtsi: " + e.getMessage());
+//        }
+//        return item;
+//    }
+
+    /**
+     * Returns this locale's language localized for display in the default locale.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayLanguage() {
+        return getDisplayLanguageInternal(localeID, getDefault().localeID);
+    }
+
+    /**
+     * Returns this locale's language localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayLanguage(ULocale displayLocale) {
+        return getDisplayLanguageInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose language will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayLanguage(String localeID, String displayLocaleID) {
+        return getDisplayLanguageInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose language will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayLanguage(String localeID, ULocale displayLocale) {
+        return getDisplayLanguageInternal(localeID, displayLocale.localeID);
+    } 
+
+    static String getCurrentCountryID(String oldID){
+        initCountryTables();
+        int offset = findIndex(_deprecatedCountries, oldID);
+        if (offset >= 0) {
+            return _replacementCountries[offset];
+        }
+        return oldID;
+    }
+    static String getCurrentLanguageID(String oldID){
+        initLanguageTables();
+        int offset = findIndex(_obsoleteLanguages, oldID);
+        if (offset >= 0) {
+            return _replacementLanguages[offset];
+        }
+        return oldID;        
+    }
+
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayLanguageInternal(String localeID, String displayLocaleID) {
+//        return getTableString("Languages", null, new IDParser(localeID).getLanguage(), displayLocaleID);
+        return toLocale(localeID).getDisplayLanguage(toLocale(displayLocaleID));
+    }
+ 
+    /**
+     * Returns this locale's script localized for display in the default locale.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayScript() {
+        return getDisplayScriptInternal(localeID, getDefault().localeID);
+    }
+
+    /**
+     * Returns this locale's script localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayScript(ULocale displayLocale) {
+        return getDisplayScriptInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns a locale's script localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose script will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayScript(String localeID, String displayLocaleID) {
+        return getDisplayScriptInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's script localized for display in the provided locale.
+     * @param localeID the id of the locale whose script will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayScript(String localeID, ULocale displayLocale) {
+        return getDisplayScriptInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayScriptInternal(String localeID, String displayLocaleID) {
+//        return getTableString("Scripts", null, new IDParser(localeID).getScript(), displayLocaleID);
+        return new IDParser(localeID).getScript();
+    }
+
+    /**
+     * Returns this locale's country localized for display in the default locale.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayCountry() {
+        return getDisplayCountryInternal(localeID, getDefault().localeID);
+    }
+    
+    /**
+     * Returns this locale's country localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayCountry(ULocale displayLocale){
+        return getDisplayCountryInternal(localeID, displayLocale.localeID);   
+    }
+    
+    /**
+     * Returns a locale's country localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose country will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayCountry(String localeID, String displayLocaleID) {
+        return getDisplayCountryInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's country localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose country will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayCountry(String localeID, ULocale displayLocale) {
+        return getDisplayCountryInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayCountryInternal(String localeID, String displayLocaleID) {
+//        return getTableString("Countries", null,  new IDParser(localeID).getCountry(), displayLocaleID);
+        return toLocale(localeID).getDisplayCountry(toLocale(displayLocaleID));
+    }
+    
+    /**
+     * Returns this locale's variant localized for display in the default locale.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayVariant() {
+        return getDisplayVariantInternal(localeID, getDefault().localeID);   
+    }
+
+    /**
+     * Returns this locale's variant localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayVariant(ULocale displayLocale) {
+        return getDisplayVariantInternal(localeID, displayLocale.localeID);   
+    }
+    
+    /**
+     * Returns a locale's variant localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose variant will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayVariant(String localeID, String displayLocaleID){
+        return getDisplayVariantInternal(localeID, getName(displayLocaleID));
+    }
+    
+    /**
+     * Returns a locale's variant localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose variant will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayVariant(String localeID, ULocale displayLocale) {
+        return getDisplayVariantInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayVariantInternal(String localeID, String displayLocaleID) {
+//        return getTableString("Variants", null, new IDParser(localeID).getVariant(), displayLocaleID);
+        return toLocale(localeID).getDisplayVariant(toLocale(displayLocaleID));
+    }
+
+    /**
+     * Returns a keyword localized for display in the default locale.
+     * @param keyword the keyword to be displayed.
+     * @return the localized keyword name.
+     * @see #getKeywords()
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword) {
+        return getDisplayKeywordInternal(keyword, getDefault().localeID);   
+    }
+    
+    /**
+     * Returns a keyword localized for display in the specified locale.
+     * @param keyword the keyword to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the keyword.
+     * @return the localized keyword name.
+     * @see #getKeywords(String)
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword, String displayLocaleID) {
+        return getDisplayKeywordInternal(keyword, getName(displayLocaleID));   
+    }
+
+    /**
+     * Returns a keyword localized for display in the specified locale.
+     * @param keyword the keyword to be displayed.
+     * @param displayLocale the locale in which to display the keyword.
+     * @return the localized keyword name.
+     * @see #getKeywords(String)
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword, ULocale displayLocale) {
+        return getDisplayKeywordInternal(keyword, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayKeywordInternal(String keyword, String displayLocaleID) {
+//        return getTableString("Keys", null, keyword.trim().toLowerCase(), displayLocaleID);
+        return keyword.trim().toLowerCase(); 
+    }
+
+    /**
+     * Returns a keyword value localized for display in the default locale.
+     * @param keyword the keyword whose value is to be displayed.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayKeywordValue(String keyword) {
+        return getDisplayKeywordValueInternal(localeID, keyword, getDefault().localeID);
+    }
+    
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocale the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayKeywordValue(String keyword, ULocale displayLocale) {
+        return getDisplayKeywordValueInternal(localeID, keyword, displayLocale.localeID);   
+    }
+
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose keyword value is to be displayed.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeywordValue(String localeID, String keyword, String displayLocaleID) {
+        return getDisplayKeywordValueInternal(localeID, keyword, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose keyword value is to be displayed.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocale the id of the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeywordValue(String localeID, String keyword, ULocale displayLocale) {
+        return getDisplayKeywordValueInternal(localeID, keyword, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayKeywordValueInternal(String localeID, String keyword, String displayLocaleID) {
+        keyword = keyword.trim().toLowerCase();
+        String value = new IDParser(localeID).getKeywordValue(keyword);
+//        return getTableString("Types", keyword, value, displayLocaleID);
+        return value;
+    }
+    
+    /**
+     * Returns this locale name localized for display in the default locale.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayName() {
+        return getDisplayNameInternal(localeID, getDefault().localeID);
+    }
+    
+    /**
+     * Returns this locale name localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayName(ULocale displayLocale) {
+        return getDisplayNameInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the locale whose name is to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayName(String localeID, String displayLocaleID) {
+        return getDisplayNameInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the locale whose name is to be displayed.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayName(String localeID, ULocale displayLocale) {
+        return getDisplayNameInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayNameInternal(String localeID, String displayLocaleID) {
+        // lang
+        // lang (script, country, variant, keyword=value, ...)
+        // script, country, variant, keyword=value, ...
+
+//        final String[] tableNames = { "Languages", "Scripts", "Countries", "Variants" };
+//
+//        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, displayLocaleID);
+
+        StringBuffer buf = new StringBuffer();
+
+        IDParser parser = new IDParser(localeID);
+        String[] names = parser.getLanguageScriptCountryVariant();
+
+        Locale locale = toLocale(localeID);
+        Locale dispLocale = toLocale(displayLocaleID);
+
+        boolean haveLanguage = names[0].length() > 0;
+        boolean openParen = false;
+        for (int i = 0; i < names.length; ++i) {
+            String name = names[i];
+            if (name.length() > 0) {
+//                name = getTableString(tableNames[i], null, name, bundle);
+
+                switch (i) {
+                case 0: name = locale.getDisplayLanguage(dispLocale); break;
+                case 1: break;
+                case 2: name = locale.getDisplayCountry(dispLocale); break;
+                case 3: name = locale.getDisplayVariant(dispLocale); break;
+                }
+
+                if (buf.length() > 0) { // need a separator
+                    if (haveLanguage & !openParen) {
+                        buf.append(" (");
+                        openParen = true;
+                    } else {
+                        buf.append(", ");
+                    }
+                }
+                buf.append(name);
+            }
+        }
+
+        Map m = parser.getKeywordMap();
+        if (!m.isEmpty()) {
+            Iterator keys = m.entrySet().iterator();
+            while (keys.hasNext()) {
+                if (buf.length() > 0) {
+                    if (haveLanguage & !openParen) {
+                        buf.append(" (");
+                        openParen = true;
+                    } else {
+                        buf.append(", ");
+                    }
+                }
+                Map.Entry e = (Map.Entry)keys.next();
+                String key = (String)e.getKey();
+                String val = (String)e.getValue();
+//                buf.append(getTableString("Keys", null, key, bundle));
+//                buf.append("=");
+//                buf.append(getTableString("Types", key, val, bundle));
+                buf.append(key);
+                buf.append("=");
+                buf.append(val);
+            }
+        }
+
+        if (openParen) {
+            buf.append(")");
+        }
+            
+        return buf.toString();
+    }
+
+//    /**
+//     * Returns this locale's layout orientation for characters.  The possible
+//     * values are "left-to-right", "right-to-left", "top-to-bottom" or
+//     * "bottom-to-top".
+//     * @return The locale's layout orientation for characters.
+//     * @draft ICU 4.0
+//     * @provisional This API might change or be removed in a future release.
+//     */
+//    public String getCharacterOrientation() {
+//        return getTableString("layout", null, "characters", getName());
+//    }
+//
+//    /**
+//     * Returns this locale's layout orientation for lines.  The possible
+//     * values are "left-to-right", "right-to-left", "top-to-bottom" or
+//     * "bottom-to-top".
+//     * @return The locale's layout orientation for lines.
+//     * @draft ICU 4.0
+//     * @provisional This API might change or be removed in a future release.
+//     */
+//    public String getLineOrientation() {
+//        return getTableString("layout", null, "lines", getName());
+//    }
+
+    /** 
+     * Selector for <tt>getLocale()</tt> indicating the locale of the
+     * resource containing the data.  This is always at or above the
+     * valid locale.  If the valid locale does not contain the
+     * specific data being requested, then the actual locale will be
+     * above the valid locale.  If the object was not constructed from
+     * locale data, then the valid locale is <i>null</i>.
+     *
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Type ACTUAL_LOCALE = new Type();
+
+    /** 
+     * Selector for <tt>getLocale()</tt> indicating the most specific
+     * locale for which any data exists.  This is always at or above
+     * the requested locale, and at or below the actual locale.  If
+     * the requested locale does not correspond to any resource data,
+     * then the valid locale will be above the requested locale.  If
+     * the object was not constructed from locale data, then the
+     * actual locale is <i>null</i>.
+     *
+     * <p>Note: The valid locale will be returned correctly in ICU
+     * 3.0 or later.  In ICU 2.8, it is not returned correctly.
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */ 
+    public static Type VALID_LOCALE = new Type();
+
+    /**
+     * Opaque selector enum for <tt>getLocale()</tt>.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @draft ICU 2.8 (retainAll)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final class Type {
+        private Type() {}
+    }
+
+  /**
+    * Based on a HTTP formatted list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * @param acceptLanguageList list in HTTP "Accept-Language:" format of acceptable locales
+    * @param availableLocales list of available locales. One of these will be returned.
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the availableLocales list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(String acceptLanguageList, ULocale[] availableLocales, 
+                                         boolean[] fallback) {
+        if (acceptLanguageList == null) {
+            throw new NullPointerException();
+        }
+        ULocale acceptList[] = null;
+        try {
+            acceptList = parseAcceptLanguage(acceptLanguageList, true);
+        } catch (ParseException pe) {
+            acceptList = null;
+        }
+        if (acceptList == null) {
+            return null;
+        }
+        return acceptLanguage(acceptList, availableLocales, fallback);
+    }
+
+    /**
+    * Based on a list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * @param acceptLanguageList list of acceptable locales
+    * @param availableLocales list of available locales. One of these will be returned.
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the availableLocales list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(ULocale[] acceptLanguageList, ULocale[]
+    availableLocales, boolean[] fallback) {
+        // fallbacklist
+        int i,j;
+        if(fallback != null) {
+            fallback[0]=true;
+        }
+        for(i=0;i<acceptLanguageList.length;i++) {
+            ULocale aLocale = acceptLanguageList[i];
+            boolean[] setFallback = fallback;
+            do {
+                for(j=0;j<availableLocales.length;j++) {
+                    if(availableLocales[j].equals(aLocale)) {
+                        if(setFallback != null) {
+                            setFallback[0]=false; // first time with this locale - not a fallback.
+                        }
+                        return availableLocales[j];
+                    }
+                }
+                Locale loc = aLocale.toLocale();
+//                Locale parent = LocaleUtility.fallback(loc);
+                Locale parent = fallback(loc);
+                if(parent != null) {
+                    aLocale = new ULocale(parent);
+                } else {
+                    aLocale = null;
+                }
+                setFallback = null; // Do not set fallback in later iterations
+            } while (aLocale != null);
+        }
+        return null;
+    }
+
+    // copied from com.ibm.icu.impl.LocaleUtility
+    private static Locale fallback(Locale loc) {
+
+        // Split the locale into parts and remove the rightmost part
+        String[] parts = new String[]
+            { loc.getLanguage(), loc.getCountry(), loc.getVariant() };
+        int i;
+        for (i=2; i>=0; --i) {
+            if (parts[i].length() != 0) {
+                parts[i] = "";
+                break;
+            }
+        }
+        if (i<0) {
+            return null; // All parts were empty
+        }
+        return new Locale(parts[0], parts[1], parts[2]);
+    }
+
+    /**
+    * Based on a HTTP formatted list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * This function will choose a locale from the ULocale.getAvailableLocales() list as available.
+    * @param acceptLanguageList list in HTTP "Accept-Language:" format of acceptable locales
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the ULocale.getAvailableLocales() list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(String acceptLanguageList, boolean[] fallback) {
+        return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(),
+                                fallback);
+    }
+
+   /**
+    * Based on an ordered array of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * This function will choose a locale from the ULocale.getAvailableLocales() list as available.
+    * @param acceptLanguageList ordered array of acceptable locales (preferred are listed first)
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the ULocale.getAvailableLocales() list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(ULocale[] acceptLanguageList, boolean[]
+                                         fallback) {
+        return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(),
+                fallback);
+    }
+
+    /**
+     * Package local method used for parsing Accept-Language string
+     * @internal ICU 3.8
+     */
+    static ULocale[] parseAcceptLanguage(String acceptLanguage, boolean isLenient) throws ParseException {
+        /**
+         * @internal ICU 3.4
+         */
+        class ULocaleAcceptLanguageQ implements Comparable {
+            private double q;
+            private double serial;
+            public ULocaleAcceptLanguageQ(double theq, int theserial) {
+                q = theq;
+                serial = theserial;
+            }
+            public int compareTo(Object o) {
+                ULocaleAcceptLanguageQ other = (ULocaleAcceptLanguageQ) o;
+                if (q > other.q) { // reverse - to sort in descending order
+                    return -1;
+                } else if (q < other.q) {
+                    return 1;
+                }
+                if (serial < other.serial) {
+                    return -1;
+                } else if (serial > other.serial) {
+                    return 1;
+                } else {
+                    return 0; // same object
+                }
+            }
+        }
+
+        // parse out the acceptLanguage into an array
+        TreeMap map = new TreeMap();
+        StringBuffer languageRangeBuf = new StringBuffer();
+        StringBuffer qvalBuf = new StringBuffer();
+        int state = 0;
+        acceptLanguage += ","; // append comma to simplify the parsing code
+        int n;
+        boolean subTag = false;
+        boolean q1 = false;
+        for (n = 0; n < acceptLanguage.length(); n++) {
+            boolean gotLanguageQ = false;
+            char c = acceptLanguage.charAt(n);
+            switch (state) {
+            case 0: // before language-range start
+                if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
+                    // in language-range
+                    languageRangeBuf.append(c);
+                    state = 1;
+                    subTag = false;
+                } else if (c == '*') {
+                    languageRangeBuf.append(c);
+                    state = 2;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid character
+                    state = -1;
+                }
+                break;
+            case 1: // in language-range
+                if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
+                    languageRangeBuf.append(c);
+                } else if (c == '-') {
+                    subTag = true;
+                    languageRangeBuf.append(c);
+                } else if (c == '_') {
+                    if (isLenient) {
+                        subTag = true;
+                        languageRangeBuf.append(c);
+                    } else {
+                        state = -1;
+                    }
+                } else if ('0' <= c && c <= '9') {
+                    if (subTag) {
+                        languageRangeBuf.append(c);                        
+                    } else {
+                        // DIGIT is allowed only in language sub tag
+                        state = -1;
+                    }
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // language-range end
+                    state = 3;
+                } else if (c == ';') {
+                    // before q
+                    state = 4;
+                } else {
+                    // invalid character for language-range
+                    state = -1;
+                }
+                break;
+            case 2: // saw wild card range
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // language-range end
+                    state = 3;
+                } else if (c == ';') {
+                    // before q
+                    state = 4;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 3: // language-range end
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ';') {
+                    // before q
+                    state =4;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 4: // before q
+                if (c == 'q') {
+                    // before equal
+                    state = 5;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 5: // before equal
+                if (c == '=') {
+                    // before q value
+                    state = 6;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 6: // before q value
+                if (c == '0') {
+                    // q value start with 0
+                    q1 = false;
+                    qvalBuf.append(c);
+                    state = 7;
+                } else if (c == '1') {
+                    // q value start with 1
+                    qvalBuf.append(c);
+                    state = 7;
+                } else if (c == '.') {
+                    if (isLenient) {
+                        qvalBuf.append(c);
+                        state = 8;
+                    } else {
+                        state = -1;
+                    }
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 7: // q value start
+                if (c == '.') {
+                    // before q value fraction part
+                    qvalBuf.append(c);
+                    state = 8;
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // after q value
+                    state = 10;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 8: // before q value fraction part
+                if ('0' <= c || c <= '9') {
+                    if (q1 && c != '0' && !isLenient) {
+                        // if q value starts with 1, the fraction part must be 0
+                        state = -1;
+                    } else {
+                        // in q value fraction part
+                        qvalBuf.append(c);
+                        state = 9;
+                    }
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 9: // in q value fraction part
+                if ('0' <= c && c <= '9') {
+                    if (q1 && c != '0') {
+                        // if q value starts with 1, the fraction part must be 0
+                        state = -1;
+                    } else {
+                        qvalBuf.append(c);
+                    }
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // after q value
+                    state = 10;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 10: // after q value
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            }
+            if (state == -1) {
+                // error state
+                throw new ParseException("Invalid Accept-Language", n);
+            }
+            if (gotLanguageQ) {
+                double q = 1.0;
+                if (qvalBuf.length() != 0) {
+                    try {
+                        q = Double.parseDouble(qvalBuf.toString());
+                    } catch (NumberFormatException nfe) {
+                        // Already validated, so it should never happen
+                        q = 1.0;
+                    }
+                    if (q > 1.0) {
+                        q = 1.0;
+                    }
+                }
+                if (languageRangeBuf.charAt(0) != '*') {
+                    int serial = map.size();
+                    ULocaleAcceptLanguageQ entry = new ULocaleAcceptLanguageQ(q, serial);
+                    map.put(entry, new ULocale(canonicalize(languageRangeBuf.toString()))); // sort in reverse order..   1.0, 0.9, 0.8 .. etc                    
+                }
+
+                // reset buffer and parse state
+                languageRangeBuf.setLength(0);
+                qvalBuf.setLength(0);
+                state = 0;
+            }
+        }
+        if (state != 0) {
+            // Well, the parser should handle all cases.  So just in case.
+            throw new ParseException("Invalid AcceptlLanguage", n);
+        }
+
+        // pull out the map 
+        ULocale acceptList[] = (ULocale[])map.values().toArray(new ULocale[map.size()]);
+        return acceptList;
+    }
+
+//    private static final String UNDEFINED_LANGUAGE = "und";
+//    private static final String UNDEFINED_SCRIPT = "Zzzz";
+//    private static final String UNDEFINED_REGION = "ZZ";
+//
+//    /**
+//     * Supply most likely subtags to the given locale
+//     * @param loc The input locale
+//     * @return A ULocale with most likely subtags filled in.
+//     * @internal
+//     * @deprecated This API is ICU internal only.
+//     */
+//    public static ULocale addLikelySubtag(ULocale loc) {
+//        return addLikelySubtags(loc);
+//    }
+//
+//    /**
+//     * Add the likely subtags for a provided locale ID, per the algorithm described
+//     * in the following CLDR technical report:
+//     *
+//     *   http://www.unicode.org/reports/tr35/#Likely_Subtags
+//     *
+//     * If the provided ULocale instance is already in the maximal form, or there is no
+//     * data available available for maximization, it will be returned.  For example,
+//     * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+//     * Otherwise, a new ULocale instance with the maximal form is returned.
+//     * 
+//     * Examples:
+//     *
+//     * "en" maximizes to "en_Latn_US"
+//     *
+//     * "de" maximizes to "de_Latn_US"
+//     *
+//     * "sr" maximizes to "sr_Cyrl_RS"
+//     *
+//     * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
+//     *
+//     * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
+//     *
+//     * @param loc The ULocale to maximize
+//     * @return The maximized ULocale instance.
+//     * @draft ICU 4.0
+//     * @provisional This API might change or be removed in a future release.
+//     */
+//    public static ULocale
+//    addLikelySubtags(ULocale loc)
+//    {
+//        String[] tags = new String[3];
+//        String trailing = null;
+//  
+//        int trailingIndex = parseTagString(
+//            loc.localeID,
+//            tags);
+//
+//        if (trailingIndex < loc.localeID.length()) {
+//            trailing = loc.localeID.substring(trailingIndex);
+//        }
+//
+//        String newLocaleID =
+//            createLikelySubtagsString(
+//                (String)tags[0],
+//                (String)tags[1],
+//                (String)tags[2],
+//                trailing);
+//
+//        return newLocaleID == null ? loc : new ULocale(newLocaleID);
+//    }
+//
+//    /**
+//     * Minimize the subtags for a provided locale ID, per the algorithm described
+//     * in the following CLDR technical report:
+//     *
+//     *   http://www.unicode.org/reports/tr35/#Likely_Subtags
+//     *
+//     * If the provided ULocale instance is already in the minimal form, or there
+//     * is no data available for minimization, it will be returned.  Since the
+//     * minimization algorithm relies on proper maximization, see the comments
+//     * for addLikelySubtags for reasons why there might not be any data.
+//     *
+//     * Examples:
+//     *
+//     * "en_Latn_US" minimizes to "en"
+//     *
+//     * "de_Latn_US" minimizes to "de"
+//     *
+//     * "sr_Cyrl_RS" minimizes to "sr"
+//     *
+//     * "zh_Hant_TW" minimizes to "zh_TW" (The region is preferred to the
+//     * script, and minimizing to "zh" would imply "zh_Hans_CN".)
+//     *
+//     * @param loc The ULocale to minimize
+//     * @return The minimized ULocale instance.
+//     * @draft ICU 4.0
+//     * @provisional This API might change or be removed in a future release.
+//     */
+//    public static ULocale
+//    minimizeSubtags(ULocale loc)
+//    {
+//        String[] tags = new String[3];
+//
+//        int trailingIndex = parseTagString(
+//                loc.localeID,
+//                tags);
+//
+//        String originalLang = (String)tags[0];
+//        String originalScript = (String)tags[1];
+//        String originalRegion = (String)tags[2];
+//        String originalTrailing = null;
+//
+//        if (trailingIndex < loc.localeID.length()) {
+//            /*
+//             * Create a String that contains everything
+//             * after the language, script, and region.
+//             */
+//            originalTrailing = loc.localeID.substring(trailingIndex);
+//        }
+//
+//        /**
+//         * First, we need to first get the maximization
+//         * by adding any likely subtags.
+//         **/
+//        String maximizedLocaleID =
+//            createLikelySubtagsString(
+//                originalLang,
+//                originalScript,
+//                originalRegion,
+//                null);
+//
+//        /**
+//         * If maximization fails, there's nothing
+//         * we can do.
+//         **/
+//        if (isEmptyString(maximizedLocaleID)) {
+//            return loc;
+//        }
+//        else {
+//            /**
+//             * Start first with just the language.
+//             **/
+//            String tag =
+//                createLikelySubtagsString(
+//                    originalLang,
+//                    null,
+//                    null,
+//                    null);
+//
+//            if (tag.equals(maximizedLocaleID)) {
+//                String newLocaleID =
+//                    createTagString(
+//                        originalLang,
+//                        null,
+//                        null,
+//                        originalTrailing);
+//
+//                return new ULocale(newLocaleID);
+//            }
+//        }
+//
+//        /**
+//         * Next, try the language and region.
+//         **/
+//        if (originalRegion.length() != 0) {
+//
+//            String tag =
+//                createLikelySubtagsString(
+//                    originalLang,
+//                    null,
+//                    originalRegion,
+//                    null);
+//
+//            if (tag.equals(maximizedLocaleID)) {
+//                String newLocaleID =
+//                    createTagString(
+//                        originalLang,
+//                        null,
+//                        originalRegion,
+//                        originalTrailing);
+//
+//                return new ULocale(newLocaleID);
+//            }
+//        }
+//
+//        /**
+//         * Finally, try the language and script.  This is our last chance,
+//         * since trying with all three subtags would only yield the
+//         * maximal version that we already have.
+//         **/
+//        if (originalRegion.length() != 0 &&
+//            originalScript.length() != 0) {
+//
+//            String tag =
+//                createLikelySubtagsString(
+//                    originalLang,
+//                    originalScript,
+//                    null,
+//                    null);
+//
+//            if (tag.equals(maximizedLocaleID)) {
+//                String newLocaleID =
+//                    createTagString(
+//                        originalLang,
+//                        originalScript,
+//                        null,
+//                        originalTrailing);
+//
+//                return new ULocale(newLocaleID);
+//            }
+//        }
+//
+//        return loc;
+//    }
+//
+//    /**
+//     * A trivial utility function that checks for a null
+//     * reference or checks the length of the supplied String.
+//     *
+//     *   @param string The string to check
+//     *
+//     *   @return true if the String is empty, or if the reference is null.
+//     */
+//    private static boolean isEmptyString(String string) {
+//      return string == null || string.length() == 0;
+//    }
+//    
+//    /**
+//     * Append a tag to a StringBuffer, adding the separator if necessary.The tag must
+//     * not be a zero-length string.
+//     *
+//     * @param tag The tag to add.
+//     * @param buffer The output buffer.
+//     **/
+//    private static void
+//    appendTag(
+//        String tag,
+//        StringBuffer buffer) {
+//    
+//        if (buffer.length() != 0) {
+//            buffer.append(UNDERSCORE);
+//        }
+//    
+//        buffer.append(tag);
+//    }
+//    
+//    /**
+//     * Create a tag string from the supplied parameters.  The lang, script and region
+//     * parameters may be null references.
+//     *
+//     * If any of the language, script or region parameters are empty, and the alternateTags
+//     * parameter is not null, it will be parsed for potential language, script and region tags
+//     * to be used when constructing the new tag.  If the alternateTags parameter is null, or
+//     * it contains no language tag, the default tag for the unknown language is used.
+//     *
+//     * @param lang The language tag to use.
+//     * @param script The script tag to use.
+//     * @param region The region tag to use.
+//     * @param trailing Any trailing data to append to the new tag.
+//     * @param alternateTags A string containing any alternate tags.
+//     * @return The new tag string.
+//     **/
+//    private static String
+//    createTagString(
+//        String lang,
+//        String script,
+//        String region,
+//        String trailing,
+//        String alternateTags) {
+//
+//        IDParser parser = null;
+//        boolean regionAppended = false;
+//
+//        StringBuffer tag = new StringBuffer();
+//    
+//        if (!isEmptyString(lang)) {
+//            appendTag(
+//                lang,
+//                tag);
+//        }
+//        else if (isEmptyString(alternateTags)) {
+//            /*
+//             * Append the value for an unknown language, if
+//             * we found no language.
+//             */
+//            appendTag(
+//                UNDEFINED_LANGUAGE,
+//                tag);
+//        }
+//        else {
+//            parser = new IDParser(alternateTags);
+//    
+//            String alternateLang = parser.getLanguage();
+//    
+//            /*
+//             * Append the value for an unknown language, if
+//             * we found no language.
+//             */
+//            appendTag(
+//                !isEmptyString(alternateLang) ? alternateLang : UNDEFINED_LANGUAGE,
+//                tag);
+//        }
+//    
+//        if (!isEmptyString(script)) {
+//            appendTag(
+//                script,
+//                tag);
+//        }
+//        else if (!isEmptyString(alternateTags)) {
+//            /*
+//             * Parse the alternateTags string for the script.
+//             */
+//            if (parser == null) {
+//                parser = new IDParser(alternateTags);
+//            }
+//    
+//            String alternateScript = parser.getScript();
+//    
+//            if (!isEmptyString(alternateScript)) {
+//                appendTag(
+//                    alternateScript,
+//                    tag);
+//            }
+//        }
+//    
+//        if (!isEmptyString(region)) {
+//            appendTag(
+//                region,
+//                tag);
+//
+//            regionAppended = true;
+//        }
+//        else if (!isEmptyString(alternateTags)) {
+//            /*
+//             * Parse the alternateTags string for the region.
+//             */
+//            if (parser == null) {
+//                parser = new IDParser(alternateTags);
+//            }
+//    
+//            String alternateRegion = parser.getCountry();
+//    
+//            if (!isEmptyString(alternateRegion)) {
+//                appendTag(
+//                    alternateRegion,
+//                    tag);
+//
+//                regionAppended = true;
+//            }
+//        }
+//    
+//        if (trailing != null && trailing.length() > 1) {
+//            /*
+//             * The current ICU format expects two underscores
+//             * will separate the variant from the preceeding
+//             * parts of the tag, if there is no region.
+//             */
+//            int separators = 0;
+//
+//            if (trailing.charAt(0) == UNDERSCORE) { 
+//                if (trailing.charAt(1) == UNDERSCORE) {
+//                    separators = 2;
+//                }
+//                }
+//                else {
+//                    separators = 1;
+//                }
+//
+//            if (regionAppended) {
+//                /*
+//                 * If we appended a region, we may need to strip
+//                 * the extra separator from the variant portion.
+//                 */
+//                if (separators == 2) {
+//                    tag.append(trailing.substring(1));
+//                }
+//                else {
+//                    tag.append(trailing);
+//                }
+//            }
+//            else {
+//                /*
+//                 * If we did not append a region, we may need to add
+//                 * an extra separator to the variant portion.
+//                 */
+//                if (separators == 1) {
+//                    tag.append(UNDERSCORE);
+//                }
+//                tag.append(trailing);
+//            }
+//        }
+//    
+//        return tag.toString();
+//    }
+//    
+//    /**
+//     * Create a tag string from the supplied parameters.  The lang, script and region
+//     * parameters may be null references.If the lang parameter is an empty string, the
+//     * default value for an unknown language is written to the output buffer.
+//     *
+//     * @param lang The language tag to use.
+//     * @param script The script tag to use.
+//     * @param region The region tag to use.
+//     * @param trailing Any trailing data to append to the new tag.
+//     * @return The new String.
+//     **/
+//    static String
+//    createTagString(
+//            String lang,
+//            String script,
+//            String region,
+//            String trailing) {
+//    
+//        return createTagString(
+//                    lang,
+//                    script,
+//                    region,
+//                    trailing,
+//                    null);
+//    }
+//    
+//    /**
+//     * Parse the language, script, and region subtags from a tag string, and return the results.
+//     *
+//     * This function does not return the canonical strings for the unknown script and region.
+//     *
+//     * @param localeID The locale ID to parse.
+//     * @param tags An array of three String references to return the subtag strings.
+//     * @return The number of chars of the localeID parameter consumed.
+//     **/
+//    private static int
+//    parseTagString(
+//        String localeID,
+//        String tags[])
+//    {
+//        IDParser parser = new IDParser(localeID);
+//    
+//        String lang = parser.getLanguage();
+//        String script = parser.getScript();
+//        String region = parser.getCountry();
+//    
+//        if (isEmptyString(lang)) {
+//            tags[0] = UNDEFINED_LANGUAGE;
+//        }
+//        else {
+//            tags[0] = lang;
+//        }
+//    
+//        if (script.equals(UNDEFINED_SCRIPT)) {
+//            tags[1] = "";
+//        }
+//        else {
+//            tags[1] = script;
+//        }
+//        
+//        if (region.equals(UNDEFINED_REGION)) {
+//            tags[2] = "";
+//        }
+//        else {
+//            tags[2] = region;
+//        }
+//    
+//        /*
+//         * Search for the variant.  If there is one, then return the index of
+//         * the preceeding separator.
+//         * If there's no variant, search for the keyword delimiter,
+//         * and return its index.  Otherwise, return the length of the
+//         * string.
+//         * 
+//         * $TOTO(dbertoni) we need to take into account that we might
+//         * find a part of the language as the variant, since it can
+//         * can have a variant portion that is long enough to contain
+//         * the same characters as the variant. 
+//         */
+//        String variant = parser.getVariant();
+//    
+//        if (!isEmptyString(variant)){
+//            int index = localeID.indexOf(variant); 
+//
+//            
+//            return  index > 0 ? index - 1 : index;
+//        }
+//        else
+//        {
+//            int index = localeID.indexOf('@');
+//    
+//            return index == -1 ? localeID.length() : index;
+//        }
+//    }
+//    
+//    private static String
+//    lookupLikelySubtags(String localeId) {
+//        UResourceBundle bundle =
+//            UResourceBundle.getBundleInstance(
+//                    ICUResourceBundle.ICU_BASE_NAME, "likelySubtags");
+//        try {
+//            return bundle.getString(localeId);
+//        }
+//        catch(MissingResourceException e) {
+//            return null;
+//        }
+//    }
+//
+//    private static String
+//    createLikelySubtagsString(
+//        String lang,
+//        String script,
+//        String region,
+//        String variants) {
+//    
+//        /**
+//         * Try the language with the script and region first.
+//         **/
+//        if (!isEmptyString(script) && !isEmptyString(region)) {
+//    
+//            String searchTag =
+//                createTagString(
+//                    lang,
+//                    script,
+//                    region,
+//                    null);
+//    
+//            String likelySubtags = lookupLikelySubtags(searchTag);
+//
+//            /*
+//            if (likelySubtags == null) {
+//                if (likelySubtags2 != null) {
+//                    System.err.println("Tag mismatch: \"(null)\" \"" + likelySubtags2 + "\"");
+//                }
+//            }
+//            else if (likelySubtags2 == null) {
+//                System.err.println("Tag mismatch: \"" + likelySubtags + "\" \"(null)\"");
+//            }
+//            else if (!likelySubtags.equals(likelySubtags2)) {
+//                System.err.println("Tag mismatch: \"" + likelySubtags + "\" \"" + likelySubtags2 + "\"");
+//            }
+//            */
+//            if (likelySubtags != null) {
+//                // Always use the language tag from the
+//                // maximal string, since it may be more
+//                // specific than the one provided.
+//                return createTagString(
+//                            null,
+//                            null,
+//                            null,
+//                            variants,
+//                            likelySubtags);
+//            }
+//        }
+//    
+//        /**
+//         * Try the language with just the script.
+//         **/
+//        if (!isEmptyString(script)) {
+//    
+//            String searchTag =
+//                createTagString(
+//                    lang,
+//                    script,
+//                    null,
+//                    null);
+//    
+//            String likelySubtags = lookupLikelySubtags(searchTag);    
+//            if (likelySubtags != null) {
+//                // Always use the language tag from the
+//                // maximal string, since it may be more
+//                // specific than the one provided.
+//                return createTagString(
+//                            null,
+//                            null,
+//                            region,
+//                            variants,
+//                            likelySubtags);
+//            }
+//        }
+//    
+//        /**
+//         * Try the language with just the region.
+//         **/
+//        if (!isEmptyString(region)) {
+//    
+//            String searchTag =
+//                createTagString(
+//                    lang,
+//                    null,
+//                    region,
+//                    null);
+//    
+//            String likelySubtags = lookupLikelySubtags(searchTag);    
+//    
+//            if (likelySubtags != null) {
+//                // Always use the language tag from the
+//                // maximal string, since it may be more
+//                // specific than the one provided.
+//                return createTagString(
+//                            null,
+//                            script,
+//                            null,
+//                            variants,
+//                            likelySubtags);
+//            }
+//        }
+//    
+//        /**
+//         * Finally, try just the language.
+//         **/
+//        {
+//            String searchTag =
+//                createTagString(
+//                    lang,
+//                    null,
+//                    null,
+//                    null);
+//    
+//            String likelySubtags = lookupLikelySubtags(searchTag);    
+//  
+//            if (likelySubtags != null) {
+//                // Always use the language tag from the
+//                // maximal string, since it may be more
+//                // specific than the one provided.
+//                return createTagString(
+//                            null,
+//                            script,
+//                            region,
+//                            variants,
+//                            likelySubtags);
+//            }
+//        }
+//    
+//        return null;
+//    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.project
new file mode 100644
index 0000000..4a1190f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.jse4</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3c5b959
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:50:53 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..fb60652
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:50:53 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bc617bb
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %fragmentName
+Bundle-SymbolicName: com.ibm.icu.jse4
+Bundle-Version: @BUILD_VERSION@
+Bundle-Vendor: %providerName
+Fragment-Host: com.ibm.icu;bundle-version="[3.9.0,4.1.0)"
+Bundle-Copyright: @COPYRIGHT@
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-Localization: fragment-icu-jse4
+Bundle-Classpath: icu-jse4.jar
+Eclipse-PatchFragment: true
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/build.properties
new file mode 100644
index 0000000..a321eae
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+source.icu-jse4.jar = src/
+src.includes = about.html,\
+               about_files/
+bin.includes = META-INF/,\
+               icu-jse4.jar,\
+               about.html,\
+               about_files/,\
+               fragment-icu-jse4.properties,\
+               fragment.xml
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties
new file mode 100644
index 0000000..427917f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2006-2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+fragmentName = International Components for Unicode for Java (ICU4J), Foundation Fragment
+providerName = IBM Corporation
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.classpath
new file mode 100644
index 0000000..2b69d81
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry exported="true" sourcepath="icu4jtsrc.zip" kind="lib" path="icu4jtests.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.project
new file mode 100644
index 0000000..b406f25
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..93763f6
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:51:01 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..1c69cb6
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:51:01 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..84eb0d0
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ICU Test Fragment
+Bundle-SymbolicName: com.ibm.icu.tests
+Bundle-Version: 1.0.0
+Bundle-Vendor: IBM
+Fragment-Host: com.ibm.icu;bundle-version="[4.0.0,4.2.0)"
+Bundle-Copyright: @COPYRIGHT@
+Require-Bundle: org.junit
+Bundle-ClassPath: .,icu4jtests.jar
+Bundle-RequiredExecutionEnvironment: J2SE-1.3,
+ CDC-1.0/Foundation-1.0
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/build.properties
new file mode 100644
index 0000000..2d0d402
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               ./icu4jtests.jar,\
+               .classpath,\
+               bin/,\
+               build.properties,\
+               .project
+src.includes = src/,\
+               build.properties,\
+               .classpath,\
+               .project,\
+               META-INF/
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java
new file mode 100644
index 0000000..cc2871a
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java
@@ -0,0 +1,159 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+package com.ibm.icu.tests;
+
+import junit.framework.TestCase;
+import com.ibm.icu.dev.test.TestAll;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestFmwk.TestParams;
+
+//import com.ibm.icu.text.DateFormat;
+//import com.ibm.icu.util.Calendar;
+//import com.ibm.icu.util.GregorianCalendar;
+//import com.ibm.icu.util.TimeZone;
+//import com.ibm.icu.util.ULocale;
+
+public class UnitTest extends TestCase {
+    
+    public void testBidi() throws Exception {
+        runUtility("Bidi");
+    }
+
+    public void testCalendar() throws Exception {
+        runUtility("Calendar");
+    }
+
+    public void testCollator() throws Exception {
+        runUtility("Collator");
+    }
+
+    public void testCompression() throws Exception {
+        runUtility("Compression");
+    }
+
+    public void testDuration() throws Exception {
+        runUtility("Duration");
+    }
+
+    public void testDiagBigDecimal() throws Exception {
+        runUtility("DiagBigDecimal");
+    }
+
+    public void testFormat() throws Exception {
+        runUtility("Format");
+    }
+
+    public void testImpl() throws Exception {
+        runUtility("Impl");
+    }
+
+    public void testNormalizer() throws Exception {
+        runUtility("Normalizer");
+    }
+
+    public void testProperty() throws Exception {
+        runUtility("Property");
+    }
+
+    public void testRBBI() throws Exception {
+        runUtility("RBBI");
+    }
+
+    public void testSearchTest() throws Exception {
+        runUtility("SearchTest");
+    }
+
+    public void testStringPrep() throws Exception {
+        runUtility("StringPrep");
+    }
+
+    public void testTestCharsetDetector() throws Exception {
+        runUtility("TestCharsetDetector");
+    }
+
+    public void testTestUCharacterIterator() throws Exception {
+        runUtility("TestUCharacterIterator");
+    }
+
+    public void testTimeScale() throws Exception {
+        runUtility("TimeScale");
+    }
+
+    public void testTimeZone() throws Exception {
+        runUtility("TimeZone");
+    }
+
+    public void testTranslit() throws Exception {
+        runUtility("Translit");
+    }
+
+    public void testUtil() throws Exception {
+        runUtility("Util");
+    }
+
+    public void runUtility(String testname) throws Exception {
+        TestParams params = TestParams.create("-n", null);
+        TestFmwk test = new TestAll();
+        test.resolveTarget(params, testname).run();
+        if (params.errorCount > 0) {
+            fail(params.errorSummary.toString());
+        }
+    }
+
+    // sample tests from ICU4J test suite
+
+    // Calendar
+//    public void testCalendarSimple() throws Exception {
+//        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+//        GregorianCalendar gc = new GregorianCalendar(tz);
+//        gc.set(2005,9,17,14,15,33);
+//        Date time = gc.getTime();
+//        
+//        final String[] calendars = {
+//            "buddhist", "chinese", "coptic", "ethiopic", "gregorian", 
+//            "hebrew", "islamic", "islamic-civil", "japanese"
+//        };
+//        final String[] ustimes = {
+//            "Monday, October 17, 2548 BE 2:15:33 PM PDT",
+//            "Monday 22x78-9-15 2:15:33 PM PDT",
+//            "Monday, Baba 7, 1722 2:15:33 PM PDT",
+//            "Monday, Tekemt 7, 1998 2:15:33 PM PDT",
+//            "Monday, October 17, 2005 2:15:33 PM PDT",
+//            "Monday, Tishri 14, 5766 2:15:33 PM PDT",
+//            "Monday, Ramadan 14, 1426 2:15:33 PM PDT",
+//            "Monday, Ramadan 14, 1426 2:15:33 PM PDT",
+//            "Monday, October 17, 17 Heisei 2:15:33 PM PDT",
+//        };
+//        final String[] detimes = {
+//            "Montag, Oktober 17, 2548 BE 2:15:33 nachm. GMT-07:00",
+//            "Montag 22x78-9-15 2:15:33 nachm. GMT-07:00",
+//            "Montag, 7. Baba 1722 14:15 Uhr GMT-07:00",
+//            "Montag, 7. Tekemt 1998 14:15 Uhr GMT-07:00",
+//            "Montag, 17. Oktober 2005 14:15 Uhr GMT-07:00",
+//            "Montag, 14. Tishri 5766 14:15 Uhr GMT-07:00",
+//            "Montag, 14. Ramadan 1426 14:15 Uhr GMT-07:00",
+//            "Montag, 14. Ramadan 1426 14:15 Uhr GMT-07:00",
+//            "Montag, Oktober 17, 17 Heisei 2:15:33 nachm. GMT-07:00",
+//        };
+//        
+//        ULocale[] locales = {ULocale.US, ULocale.GERMANY };
+//        String[][] times = { ustimes, detimes };
+//        for (int j = 0; j < locales.length; ++j) {
+//            ULocale ul = new ULocale("en_US");
+//            for (int i = 0; i < calendars.length; ++i) {
+//                ul = ul.setKeywordValue("calendar", calendars[i]);
+//                Calendar cal = Calendar.getInstance(ul);
+//                DateFormat fmt = cal.getDateTimeFormat(DateFormat.FULL, DateFormat.FULL, locales[j]);
+//                String result = fmt.format(time);
+//                System.out.println(calendars[i] + ": " + result);
+//                if (!result.equals(times[j][i])) {
+//                    fail("calendar: " + calendars[i]);
+//                }
+//            }
+//        }
+//    }
+}
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.classpath b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.project b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.project
new file mode 100644
index 0000000..e73714f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>com.ibm.icu</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..6b3fe56
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Dec 14 11:50:17 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.3
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..5693f2f
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Thu Dec 14 11:50:17 EST 2006
+eclipse.preferences.version=1
+internal.default.compliance=default
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f1e278
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: com.ibm.icu; singleton:=true
+Bundle-Version: @BUILD_VERSION@
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-Copyright: @COPYRIGHT@
+Export-Package: com.ibm.icu.lang;base=true;full=true;version="@IMPL_VERSION@",
+ com.ibm.icu.math;base=true;full=true;version="@IMPL_VERSION@",
+ com.ibm.icu.text;base=true;full=true;version="@IMPL_VERSION@",
+ com.ibm.icu.util;base=true;full=true;version="@IMPL_VERSION@",
+ com.ibm.icu.impl;x-internal:=true,
+ com.ibm.icu.impl.data;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b.brkitr;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b.coll;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b.rbnf;x-internal:=true,
+ com.ibm.icu.impl.data.icudt@DATA_VERSION_NUMBER@b.translit;x-internal:=true
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,
+ J2SE-1.3
+Bundle-ClassPath: icu-jse4.jar,icu-data.jar,.
+Eclipse-ExtensibleAPI: true
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/build.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/build.properties
new file mode 100644
index 0000000..8c108f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/build.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+src.includes = about.html,\
+               about_files/
+bin.includes = .,\
+               about.html,\
+               about_files/,\
+               plugin.properties,\
+               META-INF/
diff --git a/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/plugin.properties b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/plugin.properties
new file mode 100644
index 0000000..9fe7037
--- /dev/null
+++ b/src/com/ibm/icu/dev/eclipse/plugins/com.ibm.icu/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2000, 2008 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials 
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+pluginName = International Components for Unicode for Java (ICU4J)
+providerName = IBM Corporation
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/AbstractTestLog.java b/src/com/ibm/icu/dev/test/AbstractTestLog.java
new file mode 100644
index 0000000..87081d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/AbstractTestLog.java
@@ -0,0 +1,107 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.Date;
+
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.VersionInfo;
+
+public abstract class AbstractTestLog implements TestLog {
+
+    public static boolean dontSkipForVersion = false;
+    public boolean skipIfBeforeICU(int major, int minor, int micro) {
+        if (dontSkipForVersion || VersionInfo.ICU_VERSION.compareTo(VersionInfo.getInstance(major, minor, micro)) > 0) {
+            return false;
+        } 
+        logln("Test skipped before ICU release " + major + "." + minor);
+        return true;
+    }
+
+    
+    /**
+     * Add a message.
+     */
+    public final void log(String message) {
+        msg(message, LOG, true, false);
+    }
+
+    /**
+     * Add a message and newline.
+     */
+    public final void logln(String message) {
+        msg(message, LOG, true, true);
+    }
+
+    /**
+     * Report an error.
+     */
+    public final void err(String message) {
+        msg(message, ERR, true, false);
+    }
+
+    /**
+     * Report an error and newline.
+     */
+    public final void errln(String message) {
+        msg(message, ERR, true, true);
+    }
+
+    /**
+     * Report a warning (generally missing tests or data).
+     */
+    public final void warn(String message) {
+        msg(message, WARN, true, false);
+    }
+
+    /**
+     * Report a warning (generally missing tests or data) and newline.
+     */
+    public final void warnln(String message) {
+        msg(message, WARN, true, true);
+    }
+
+    /**
+     * Vector for logging.  Callers can force the logging system to
+     * not increment the error or warning level by passing false for incCount.
+     *
+     * @param message the message to output.
+     * @param level the message level, either LOG, WARN, or ERR.
+     * @param incCount if true, increments the warning or error count
+     * @param newln if true, forces a newline after the message
+     */
+    public abstract void msg(String message, int level, boolean incCount, boolean newln);
+
+    /**
+     * Not sure if this class is useful.  This lets you log without first testing
+     * if logging is enabled.  The Delegating log will either silently ignore the
+     * message, if the delegate is null, or forward it to the delegate.
+     */
+    public static final class DelegatingLog extends AbstractTestLog {
+        private TestLog delegate;
+
+        public DelegatingLog(TestLog delegate) {
+            this.delegate = delegate;
+        }
+
+        public void msg(String message, int level, boolean incCount, boolean newln) {
+            if (delegate != null) {
+                delegate.msg(message, level, incCount, newln);
+            }
+        }
+    }
+    public boolean isDateAtLeast(int year, int month, int day){
+        Date now = new Date();
+        Calendar c = new GregorianCalendar(year, month, day);
+        Date dt = c.getTime();
+        if(now.compareTo(dt)>=0){
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/ModuleTest.java b/src/com/ibm/icu/dev/test/ModuleTest.java
new file mode 100644
index 0000000..684df98
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/ModuleTest.java
@@ -0,0 +1,169 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.lang.reflect.Method;
+import java.util.Iterator;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.dev.test.TestDataModule.DataModuleFormatError;
+import com.ibm.icu.dev.test.TestDataModule.Factory;
+import com.ibm.icu.dev.test.TestDataModule.TestData;
+
+/**
+ * Ray: An adapter class for TestDataMoule to make it like TestFmwk
+ * 
+ * A convenience extension of TestFmwk for use by data module-driven tests.
+ * 
+ * Tests can implement this if they make extensive use of information in a
+ * TestDataModule.
+ * 
+ * Subclasses can allow for test methods that don't use data from the module by
+ * overriding validateMethod to return true for these methods. Tests are also
+ * free to instantiate their own modules and run from them, though care should
+ * be taken not to interfere with the methods in this class.
+ * 
+ * See CollationTest for an example.
+ */
+public abstract class ModuleTest extends TestFmwk {
+    private TestDataModule m;
+
+    protected TestData t = null;
+
+    private String localeName = null;
+
+    private String baseName = null;
+
+    abstract protected void processModules();
+
+    protected ModuleTest(String baseName, String locName) {
+        localeName = locName;
+        this.baseName = baseName;
+    }
+
+    protected Target getTargets(String targetName) {
+        if (params.doMethods()) {
+            Target target = null;
+            if (!validate()) {
+                return null;
+            }
+            Iterator testData = m.getTestDataIterator();
+            if (testData != null) {
+                try {
+                    Method method = getClass()
+                            .getMethod("processModules", (Class[])null);
+                    while (testData.hasNext()) {
+                        target = new MethodTarget(((TestData) testData.next())
+                                .getName(), method).setNext(target);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw new IllegalStateException(e.getMessage());
+                }
+            }
+            return target;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * 
+     * TestFmwk calls this before trying to run a suite of tests. The test suite
+     * if valid if a module whose name is the name of this class + "Data" can be
+     * opened. Subclasses can override this if there are different or additional
+     * data required.
+     */
+    protected boolean validate() {
+        try {
+            m = Factory.get(baseName, localeName);
+        } catch (DataModuleFormatError e) {
+            e.printStackTrace();
+            m = null;
+        } catch(MissingResourceException e){
+            warnln("Could not load data: "+e.getMessage());
+        }
+        return m != null;
+    }
+
+    /**
+     * TestFmwk calls this before trying to invoke a test method. The method is
+     * valid if there is test data with the name of this method in the module.
+     * Subclasses can override this to allow for tests that do not require test
+     * data from the module, or if there are different or additional data
+     * required.
+     */
+    protected boolean validateMethod(String methodName) {
+        return openTestData(methodName);
+    }
+
+    /**
+     * Override of TestFmwk method to get the test suite description from the
+     * DESCRIPTION field of the module info.
+     */
+    protected String getDescription() {
+        DataMap info = moduleInfo();
+        if (info != null) {
+            // return info.getString(TestDataModule.DESCRIPTION);
+        }
+        return null;
+    }
+
+    /**
+     * Override of TestFmwk method to get the test method description from the
+     * DESCRIPTION field of the test info.
+     */
+    protected String getMethodDescription(String methodName) {
+        if (openTestData(methodName)) {
+            DataMap info = testInfo();
+            if (info != null) {
+                // return info.getString(TestDataModule.DESCRIPTION);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Open the test data in the module with the given name, and return true if
+     * success. The current test is reset.
+     * 
+     * @throws DataModuleFormatError
+     */
+    protected boolean openTestData(String name) {
+        try {
+            t = m == null ? null : m.getTestData(name);
+        } catch (DataModuleFormatError e) {
+            return false;
+        }
+        return t != null;
+    }
+
+    /**
+     * Get information on this module. Returns null if no module open or no info
+     * for the module.
+     */
+    private DataMap moduleInfo() {
+        return m == null ? null : m.getInfo();
+    }
+
+    /**
+     * Get information on this test. Returns null if no module open or no test
+     * open or not info for this test.
+     */
+    private DataMap testInfo() {
+        return t == null ? null : t.getInfo();
+    }
+
+    public void msg(String message, int level, boolean incCount, boolean newln) {
+        if (level == ERR && t != null) {
+           //t.stopIteration();
+        }
+        super.msg(message, level, incCount, newln);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/ResourceModule.java b/src/com/ibm/icu/dev/test/ResourceModule.java
new file mode 100644
index 0000000..1ed1ca0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/ResourceModule.java
@@ -0,0 +1,421 @@
+//##header J2SE15
+/*
+ **********************************************************************
+ * Copyright (c) 2006-2007, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Created on 2006-4-21
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.NoSuchElementException;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+/**
+ * Represents a collection of test data described in a UResourceBoundle file. 
+ * 
+ * The root of the UResourceBoundle file is a table resource, and it has one 
+ * Info and one TestData sub-resources. The Info describes the data module
+ * itself. The TestData, which is a table resource, has a collection of test 
+ * data.
+ * 
+ * The test data is a named table resource which has Info, Settings, Headers,
+ * and Cases sub-resources. 
+ * 
+ * <pre>
+ * DataModule:table(nofallback){ 
+ *   Info:table {} 
+ *   TestData:table {
+ *     entry_name:table{
+ *       Info:table{}
+ *       Settings:array{}
+ *       Headers:array{}
+ *       Cases:array{}
+ *     }
+ *   } 
+ * }
+ * </pre>
+ * 
+ * The test data is expected to be fed to test code by following sequence 
+ *
+ *   for each setting in Setting{
+ *       prepare the setting
+ *     for each test data in Cases{
+ *       perform the test
+ *     }
+ *   }
+ * 
+ * For detail of the specification, please refer to the code. The code is 
+ * initially ported from "icu4c/source/tools/ctestfw/unicode/tstdtmod.h"
+ * and should be maintained parallelly.
+ * 
+ * @author Raymond Yang
+ */
+class ResourceModule implements TestDataModule {
+    private static final String INFO = "Info";
+//    private static final String DESCRIPTION = "Description";
+//    private static final String LONG_DESCRIPTION = "LongDescription";
+    private static final String TEST_DATA = "TestData";
+    private static final String SETTINGS = "Settings";
+    private static final String HEADER = "Headers";
+    private static final String DATA = "Cases";
+
+    
+    UResourceBundle res;
+    UResourceBundle info;
+    UResourceBundle defaultHeader;
+    UResourceBundle testData;
+    
+    ResourceModule(String baseName, String localeName) throws DataModuleFormatError{
+
+        res = (UResourceBundle) UResourceBundle.getBundleInstance(baseName, localeName);
+        info = getFromTable(res, INFO, UResourceBundle.TABLE);
+        testData = getFromTable(res, TEST_DATA, UResourceBundle.TABLE);
+
+        try {
+            // unfortunately, actually, data can be either ARRAY or STRING
+            defaultHeader = getFromTable(info, HEADER, new int[]{UResourceBundle.ARRAY, UResourceBundle.STRING});
+        } catch (MissingResourceException e){
+            defaultHeader = null;
+        }
+    }
+
+    public String getName() {
+        return res.getKey();
+    }
+
+    public DataMap getInfo() {
+        return new UTableResource(info);
+    }
+
+    public TestData getTestData(String testName) throws DataModuleFormatError {
+        return new UResourceTestData(defaultHeader, testData.get(testName));
+    }
+
+    public Iterator getTestDataIterator() {
+        return new IteratorAdapter(testData){
+            protected Object prepareNext(UResourceBundle nextRes) throws DataModuleFormatError {
+                return new UResourceTestData(defaultHeader, nextRes);
+            }
+        };
+    }
+
+    /**
+     * To make UResourceBundleIterator works like Iterator
+     * and return various data-driven test object for next() call
+     * 
+     * @author Raymond Yang
+     */
+    private abstract static class IteratorAdapter implements Iterator{
+        private UResourceBundle res;
+        private UResourceBundleIterator itr;
+        private Object preparedNextElement = null;
+        // fix a strange behavior for UResourceBundleIterator for 
+        // UResourceBundle.STRING. It support hasNext(), but does 
+        // not support next() now. 
+        // 
+        // Use the iterated resource itself as the result from next() call
+        private boolean isStrRes = false;
+        private boolean isStrResPrepared = false; // for STRING resouce, we only prepare once
+
+        IteratorAdapter(UResourceBundle theRes) {
+            assert_not (theRes == null);
+            res = theRes;
+            itr = ((ICUResourceBundle)res).getIterator();
+            isStrRes = res.getType() == UResourceBundle.STRING;
+        }
+        
+        public void remove() {
+            // do nothing
+        }
+
+        private boolean hasNextForStrRes(){
+            assert_is (isStrRes);
+            assert_not (!isStrResPrepared && preparedNextElement != null);
+            if (isStrResPrepared && preparedNextElement != null) return true;
+            if (isStrResPrepared && preparedNextElement == null) return false; // only prepare once
+            assert_is (!isStrResPrepared && preparedNextElement == null);
+            
+            try {
+                preparedNextElement = prepareNext(res);
+                assert_not (preparedNextElement == null, "prepareNext() should not return null");
+                isStrResPrepared = true; // toggle the tag
+                return true;
+            } catch (DataModuleFormatError e) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                throw new RuntimeException(e.getMessage());
+//#else
+                throw new RuntimeException(e.getMessage(),e);
+//#endif
+            }            
+        }
+        public boolean hasNext() {
+            if (isStrRes) return hasNextForStrRes();
+            
+            if (preparedNextElement != null) return true;
+            UResourceBundle t = null;
+            if (itr.hasNext()) {
+                // Notice, other RuntimeException may be throwed
+                t = itr.next();
+            } else {
+                return false;
+            }
+
+            try {
+                preparedNextElement = prepareNext(t);
+                assert_not (preparedNextElement == null, "prepareNext() should not return null");
+                return true;
+            } catch (DataModuleFormatError e) {
+                // Sadly, we throw RuntimeException also
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                throw new RuntimeException(e.getMessage());
+//#else
+                throw new RuntimeException(e.getMessage(),e);
+//#endif
+            }
+        }
+
+        public Object next(){
+            if (hasNext()) {
+                Object t = preparedNextElement;
+                preparedNextElement = null;
+                return t;
+            } else {
+                throw new NoSuchElementException();
+            }
+        }
+        /**
+         * To prepare data-driven test object for next() call, should not return null
+         */
+        abstract protected Object prepareNext(UResourceBundle nextRes) throws DataModuleFormatError;
+    }
+    
+    
+    /**
+     * Avoid use Java 1.4 language new assert keyword 
+     */
+    static void assert_is(boolean eq, String msg){
+        if (!eq) throw new Error("test code itself has error: " + msg);
+    }
+    static void assert_is(boolean eq){
+        if (!eq) throw new Error("test code itself has error.");
+    }
+    static void assert_not(boolean eq, String msg){
+        assert_is(!eq, msg);
+    }
+    static void assert_not(boolean eq){
+        assert_is(!eq);
+    }
+            
+    /**
+     * Internal helper function to get resource with following add-on 
+     * 
+     * 1. Assert the returned resource is never null.
+     * 2. Check the type of resource. 
+     * 
+     * The UResourceTypeMismatchException for various get() method is a 
+     * RuntimeException which can be silently bypassed. This behavior is a 
+     * trouble. One purpose of the class is to enforce format checking for 
+     * resource file. We don't want to the exceptions are silently bypassed 
+     * and spreaded to our customer's code. 
+     * 
+     * Notice, the MissingResourceException for get() method is also a
+     * RuntimeException. The caller functions should avoid sepread the execption
+     * silently also. The behavior is modified because some resource are 
+     * optional and can be missed.
+     */
+    static UResourceBundle getFromTable(UResourceBundle res, String key, int expResType) throws DataModuleFormatError{
+        return getFromTable(res, key, new int[]{expResType});
+    }
+    
+    static UResourceBundle getFromTable(UResourceBundle res, String key, int[] expResTypes) throws DataModuleFormatError{
+        assert_is (res != null && key != null && res.getType() == UResourceBundle.TABLE);
+        UResourceBundle t = res.get(key); 
+      
+        assert_not (t ==null);
+        int type = t.getType();
+        Arrays.sort(expResTypes);
+        if (Arrays.binarySearch(expResTypes, type) >= 0) {
+            return t;
+        } else {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            throw new DataModuleFormatError("Actual type " + t.getType() + " != expected types " + expResTypes + ".");
+//#else
+            throw new DataModuleFormatError(new UResourceTypeMismatchException("Actual type " + t.getType() + " != expected types " + expResTypes + "."));
+//#endif
+        }
+    }
+    
+    /**
+     * Unfortunately, UResourceBundle is unable to treat one string as string array.
+     * This function return a String[] from UResourceBundle, regardless it is an array or a string 
+     */
+    static String[] getStringArrayHelper(UResourceBundle res, String key) throws DataModuleFormatError{
+        UResourceBundle t = getFromTable(res, key, new int[]{UResourceBundle.ARRAY, UResourceBundle.STRING});
+        return getStringArrayHelper(t);
+    }
+
+    static String[] getStringArrayHelper(UResourceBundle res) throws DataModuleFormatError{
+        try{
+            int type = res.getType();
+            switch (type) {
+            case UResourceBundle.ARRAY:
+                return res.getStringArray();
+            case UResourceBundle.STRING:
+                return new String[]{res.getString()};
+            default:
+                throw new UResourceTypeMismatchException("Only accept ARRAY and STRING types.");
+            }
+        } catch (UResourceTypeMismatchException e){
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            throw new DataModuleFormatError(e.getMessage());
+//#else
+            throw new DataModuleFormatError(e);
+//#endif
+        }
+    }
+    
+    public static void main(String[] args){
+        try {
+            TestDataModule m = new ResourceModule("com/ibm/icu/dev/data/testdata/","DataDrivenCollationTest");
+        System.out.println("hello: " + m.getName());
+        m.getInfo();
+        m.getTestDataIterator();
+        } catch (DataModuleFormatError e) {
+            // TODO Auto-generated catch block
+            System.out.println("???");
+            e.printStackTrace();
+        }
+    }
+
+    private static class UResourceTestData implements TestData{
+        private UResourceBundle res;
+        private UResourceBundle info;
+        private UResourceBundle settings; 
+        private UResourceBundle header;
+        private UResourceBundle data;
+
+        UResourceTestData(UResourceBundle defaultHeader, UResourceBundle theRes) throws DataModuleFormatError{
+            
+            assert_is (theRes != null && theRes.getType() == UResourceBundle.TABLE);
+            res = theRes;
+            // unfortunately, actually, data can be either ARRAY or STRING
+            data = getFromTable(res, DATA, new int[]{UResourceBundle.ARRAY, UResourceBundle.STRING});
+       
+
+            
+            try {
+                // unfortunately, actually, data can be either ARRAY or STRING
+                header = getFromTable(res, HEADER, new int[]{UResourceBundle.ARRAY, UResourceBundle.STRING});
+            } catch (MissingResourceException e){
+                if (defaultHeader == null) {
+                    throw new DataModuleFormatError("Unable to find a header for test data '" + res.getKey() + "' and no default header exist.");
+                } else {
+                    header = defaultHeader;
+                }
+            }
+         try{
+                settings = getFromTable(res, SETTINGS, UResourceBundle.ARRAY);
+                info = getFromTable(res, INFO, UResourceBundle.TABLE);
+            } catch (MissingResourceException e){
+                // do nothing, left them null;
+                settings = data;
+            }
+        }
+        
+        public String getName() {
+            return res.getKey();
+        }
+
+        public DataMap getInfo() {
+            return info == null ? null : new UTableResource(info);
+        }
+
+        public Iterator getSettingsIterator() {
+            assert_is (settings.getType() == UResourceBundle.ARRAY);
+            return new IteratorAdapter(settings){
+                protected Object prepareNext(UResourceBundle nextRes) throws DataModuleFormatError {
+                    return new UTableResource(nextRes);
+                }
+            };
+        }
+
+        public Iterator getDataIterator() {
+            // unfortunately,
+            assert_is (data.getType() == UResourceBundle.ARRAY 
+                 || data.getType() == UResourceBundle.STRING);
+            return new IteratorAdapter(data){
+                protected Object prepareNext(UResourceBundle nextRes) throws DataModuleFormatError {
+                    return new UArrayResource(header, nextRes);
+                }
+            };
+        }
+    }
+        
+    private static class UTableResource implements DataMap{
+        private UResourceBundle res;
+
+        UTableResource(UResourceBundle theRes){
+            res = theRes;
+        }
+        public String getString(String key) {
+            String t;
+            try{
+                t = res.getString(key);
+            } catch (MissingResourceException e){
+                t = null;
+            }
+            return t;
+        }
+         public Object getObject(String key) {
+            
+            return res.get(key);
+        }
+    }
+    
+    private static class UArrayResource implements DataMap{
+        private Map theMap; 
+        UArrayResource(UResourceBundle theHeader, UResourceBundle theData) throws DataModuleFormatError{
+            assert_is (theHeader != null && theData != null);
+            String[] header;
+         
+            header = getStringArrayHelper(theHeader);
+            if (theData.getSize() != header.length) 
+                throw new DataModuleFormatError("The count of Header and Data is mismatch.");
+            theMap = new HashMap();
+            for (int i = 0; i < header.length; i++) {
+                if(theData.getType()==UResourceBundle.ARRAY){
+                    theMap.put(header[i], theData.get(i));
+                }else if(theData.getType()==UResourceBundle.STRING){
+                    theMap.put(header[i], theData.getString());
+                }else{
+                    throw new DataModuleFormatError("Did not get the expected data!");                   
+                }
+            }
+            
+        }
+        
+        public String getString(String key) {
+            Object o = theMap.get(key);
+            UResourceBundle rb;
+            if(o instanceof UResourceBundle) {
+                // unpack ResourceBundle strings
+                rb = (UResourceBundle)o;
+                return rb.getString();
+            }
+            return (String)o;
+        }
+        public Object getObject(String key) {
+            return theMap.get(key);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/TestAll.java b/src/com/ibm/icu/dev/test/TestAll.java
new file mode 100644
index 0000000..4343097
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestAll.java
@@ -0,0 +1,54 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "com.ibm.icu.dev.test.format.TestAll",
+                  "com.ibm.icu.dev.test.compression.TestAll",
+                  "com.ibm.icu.dev.test.rbbi.TestAll",
+                  "com.ibm.icu.dev.test.translit.TestAll",
+                  "com.ibm.icu.dev.test.search.SearchTest", // not a group
+                  "com.ibm.icu.dev.test.collator.TestAll",
+                  "com.ibm.icu.dev.test.shaping.ArabicShapingRegTest",
+                  "com.ibm.icu.dev.test.calendar.TestAll",
+                  "com.ibm.icu.dev.test.timezone.TestAll",
+                  "com.ibm.icu.dev.test.lang.TestAll",
+                  "com.ibm.icu.dev.test.normalizer.TestAll",
+                  "com.ibm.icu.dev.test.util.TestAll",
+                  "com.ibm.icu.dev.test.iterator.TestUCharacterIterator", // not a group
+                  "com.ibm.icu.dev.test.bigdec.DiagBigDecimal", // not a group
+                  "com.ibm.icu.dev.test.impl.TestAll",
+                  "com.ibm.icu.dev.test.stringprep.TestAll",
+                  "com.ibm.icu.dev.test.timescale.TestAll",
+                  "com.ibm.icu.dev.test.charsetdet.TestCharsetDetector",
+                  "com.ibm.icu.dev.test.bidi.TestAll",
+                  "com.ibm.icu.dev.test.duration.TestAll",
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                  "com.ibm.icu.dev.test.charset.TestAll",
+                  "com.ibm.icu.dev.test.serializable.SerializableTest" // *is* a group
+//#endif
+              },
+              "All tests in ICU");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "ICU";
+}
diff --git a/src/com/ibm/icu/dev/test/TestBoilerplate.java b/src/com/ibm/icu/dev/test/TestBoilerplate.java
new file mode 100644
index 0000000..abc8126
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestBoilerplate.java
@@ -0,0 +1,192 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * To use, override the abstract and the protected methods as necessary.
+ * Tests boilerplate invariants:
+ * <br>a.equals(a)
+ * <br>!a.equals(null)
+ * <br>if a.equals(b) then 
+ * <br>(1) a.hashCode() == b.hashCode  // note: the reverse is not necessarily true.
+ * <br>(2) a functions in all aspects as equivalent to b
+ * <br>(3) b.equals(a)
+ * <br>if b = clone(a)
+ * <br>(1) b.equals(a), and the above checks
+ * <br>(2) if mutable(a), then a.clone() != a // note: the reverse is not necessarily true.
+ * @author Davis
+ */
+public abstract class TestBoilerplate extends TestFmwk {
+
+    public final void TestMain() throws Exception {
+        List list = new LinkedList();
+        while (_addTestObject(list)) {
+        }
+        Object[] testArray = list.toArray();
+        for (int i = 0; i < testArray.length; ++i) {
+            //logln("Testing " + i);
+            Object a = testArray[i];
+            int aHash = a.hashCode();
+            if (a.equals(null)) {
+                errln("Equality/Null invariant fails: " + i);
+            }
+            if (!a.equals(a)) {
+                errln("Self-Equality invariant fails: " + i);
+            }
+            Object b;                
+            if (_canClone(a)) {
+                b = _clone(a);
+                if (b == a) {
+                    if (_isMutable(a)) {
+                        errln("Clone/Mutability invariant fails: " + i);
+                    }
+                } else {
+                    if (!a.equals(b)) {
+                        errln("Clone/Equality invariant fails: " + i);
+                    }
+                }
+                _checkEquals(i, -1, a, aHash, b);
+            }
+            for (int j = i; j < testArray.length; ++j) {
+                b = testArray[j];
+                if (a.equals(b)) _checkEquals(i, j, a, aHash, b);
+            }
+        }
+    }
+
+    private void _checkEquals(int i, int j, Object a, int aHash, Object b) {
+        int bHash = b.hashCode();
+        if (!b.equals(a)) errln("Equality/Symmetry",i, j);
+        if (aHash != bHash) errln("Equality/Hash",i, j);
+        if (a != b && !_hasSameBehavior(a,b)) {
+            errln("Equality/Equivalence",i, j);
+        }
+    }
+
+    private void errln(String title, int i, int j) {
+        if (j < 0) errln("Clone/" + title + "invariant fails: " + i);
+        else errln(title + "invariant fails: " + i + "," + j);
+    }
+
+    /**
+     * Must be overridden to check whether a and be behave the same
+     */
+    protected abstract boolean _hasSameBehavior(Object a, Object b);
+
+    /**
+     * This method will be called multiple times until false is returned.
+     * The results should be a mixture of different objects of the same
+     * type: some equal and most not equal.
+     * The subclasser controls how many are produced (recommend about 
+     * 100, based on the size of the objects and how costly they are
+     * to run this test on. The running time grows with the square of the
+     * count.
+     * NOTE: this method will only be called if the objects test as equal.
+     */
+    protected abstract boolean _addTestObject(List c);
+    /**
+     * Override if the tested objects are mutable.
+     * <br>Since Java doesn't tell us, we need a function to tell if so.
+     * The default is true, so must be overridden if not.
+     */
+    protected boolean _isMutable(Object a) {
+        return true;
+    }
+    /**
+     * Override if the tested objects can be cloned.
+     */
+    protected boolean _canClone(Object a) {
+        return true;
+    }
+    /**
+     * Produce a clone of the object. Tries two methods
+     * (a) clone
+     * (b) constructor
+     * Must be overridden if _canClone returns true and
+     * the above methods don't work.
+     * @param a
+     * @return clone
+     */
+    protected Object _clone(Object a) throws Exception {
+        Class aClass = a.getClass();
+        try {
+            Method cloner = aClass.getMethod("clone", (Class[])null);
+            return cloner.invoke(a,(Object[])null);
+        } catch (NoSuchMethodException e) {
+            Constructor constructor = aClass.getConstructor(new Class[] {aClass});
+            return constructor.newInstance(new Object[]{a});
+        }
+    }
+    
+    /* Utilities */
+    public static boolean verifySetsIdentical(AbstractTestLog here, UnicodeSet set1, UnicodeSet set2) {
+        if (set1.equals(set2)) return true;
+        here.errln("Sets differ:");
+        here.errln("UnicodeMap - HashMap");
+        here.errln(new UnicodeSet(set1).removeAll(set2).toPattern(true));
+        here.errln("HashMap - UnicodeMap");
+        here.errln(new UnicodeSet(set2).removeAll(set1).toPattern(true));
+        return false;
+    }
+
+    public static boolean verifySetsIdentical(AbstractTestLog here, Set values1, Set values2) {
+        if (values1.equals(values2)) return true;
+        Set temp;
+        here.errln("Values differ:");
+        here.errln("UnicodeMap - HashMap");
+        temp = new TreeSet(values1);
+        temp.removeAll(values2);
+        here.errln(show(temp));
+        here.errln("HashMap - UnicodeMap");
+        temp = new TreeSet(values2);
+        temp.removeAll(values1);
+        here.errln(show(temp));
+        return false;
+    }
+    
+    public static String show(Map m) {
+        StringBuffer buffer = new StringBuffer();
+        for (Iterator it = m.keySet().iterator(); it.hasNext();) {
+            Object key = it.next();
+            buffer.append(key + "=>" + m.get(key) + "\r\n");
+        }
+        return buffer.toString();
+    }
+    
+    public static UnicodeSet getSet(Map m, Object value) {
+        UnicodeSet result = new UnicodeSet();
+        for (Iterator it = m.keySet().iterator(); it.hasNext();) {
+            Object key = it.next();
+            Object val = m.get(key);
+            if (!val.equals(value)) continue;
+            result.add(((Integer)key).intValue());
+        }
+        return result;
+    }
+    
+    public static String show(Collection c) {
+        StringBuffer buffer = new StringBuffer();
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            buffer.append(it.next() + "\r\n");
+        }
+        return buffer.toString();
+    }
+    
+
+}
diff --git a/src/com/ibm/icu/dev/test/TestDataModule.java b/src/com/ibm/icu/dev/test/TestDataModule.java
new file mode 100644
index 0000000..648bd0d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestDataModule.java
@@ -0,0 +1,111 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.Iterator;
+
+/**
+ * Represents a collection of test data described in a file.
+ * 
+ */
+public interface TestDataModule {
+    /**
+     * Return the name of this test data module.
+     */
+    public String getName();
+
+    /**
+     * Get additional data related to the module, e.g. DESCRIPTION,
+     * global settings.  Might be null.
+     */
+    public DataMap getInfo();
+
+    /**
+     * Returns the TestData corresponding to name, or null if name not
+     * found in this module.  Throw error if name is not found.  
+     * @throws DataModuleFormatError
+     */
+    public TestData getTestData(String name) throws DataModuleFormatError;
+
+    /**
+     * @return Iterator<TestData>
+     */
+    public Iterator getTestDataIterator();
+
+    public static class Factory{
+
+        static final TestDataModule get(String baseName, String localeName) throws DataModuleFormatError {
+            return new ResourceModule(baseName, localeName);
+        }
+    }
+
+    public static class DataModuleFormatError extends Exception{
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 4312521272388482529L;
+        public DataModuleFormatError(String msg){
+            super(msg);
+        }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        public DataModuleFormatError(String msg, Throwable cause){
+            super(msg, cause);
+        }
+        public DataModuleFormatError(Throwable cause) {
+            super(cause);
+        }
+//#endif
+    }
+    
+    /**
+     * Represents a single test in the module.
+     */
+    public static interface TestData {
+        public String getName();
+        /**
+         * Get additional data related to the test data, e.g. DESCRIPTION,
+         * global settings.  Might be null.
+         */
+        public DataMap getInfo();
+        /**
+         * @return Iterator<DataMap>
+         */
+        public Iterator getSettingsIterator();
+        /**
+         * @return Iterator<DataMap>
+         */
+        public Iterator getDataIterator();
+    }
+
+    /**
+     * Map-like interface for accessing key-value pairs by key.
+     * If the vaule is not found by given key, return null. 
+     * The behavior is analogous the get() method of the Map interface.
+     * 
+     * @author Raymond Yang
+     */
+    public interface DataMap {
+//    public abstract boolean    isDefined(String key);
+//
+    public abstract Object     getObject(String key);
+    public abstract String     getString(String key);
+//    public abstract char       getChar(String key);
+//    public abstract int        getInt(String key);
+//    public abstract byte       getByte(String key);
+//    public abstract boolean    getBoolean(String key);
+//
+//    public abstract Object[]   getObjectArray(String key);
+//    public abstract String[]   getStringArray(String key);
+//    public abstract char[]     getCharArray(String key);
+//    public abstract int[]      getIntArray(String key);
+//    public abstract byte[]     getByteArray(String key);
+//    public abstract boolean[]  getBooleanArray(String key);
+    }
+}
+    
diff --git a/src/com/ibm/icu/dev/test/TestFmwk.java b/src/com/ibm/icu/dev/test/TestFmwk.java
new file mode 100644
index 0000000..ad05a9d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestFmwk.java
@@ -0,0 +1,1866 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Random;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//## import com.ibm.icu.impl.Utility;
+//#endif
+/**
+ * TestFmwk is a base class for tests that can be run conveniently from the
+ * command line as well as under the Java test harness.
+ * <p>
+ * Sub-classes implement a set of methods named Test <something>. Each of these
+ * methods performs some test. Test methods should indicate errors by calling
+ * either err or errln. This will increment the errorCount field and may
+ * optionally print a message to the log. Debugging information may also be
+ * added to the log via the log and logln methods. These methods will add their
+ * arguments to the log only if the test is being run in verbose mode.
+ */
+public class TestFmwk extends AbstractTestLog {
+    /**
+     * The default time zone for all of our tests. Used in Target.run();
+     */
+    private final static TimeZone defaultTimeZone = TimeZone.getTimeZone("PST");
+
+    /**
+     * The default locale used for all of our tests. Used in Target.run();
+     */
+    private final static Locale defaultLocale = Locale.US;
+
+    public static final class TestFmwkException extends Exception {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = -3051148210247229194L;
+
+        TestFmwkException(String msg) {
+            super(msg);
+        }
+    }
+    protected void handleException(Throwable e){
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    Throwable ex = null;
+//#else
+        Throwable ex = e.getCause();
+//#endif
+        if(ex==null){
+            ex = e;
+        }
+        if(ex instanceof ExceptionInInitializerError){
+            ex = ((ExceptionInInitializerError)ex).getException();
+        }
+        String msg = ex.getMessage();
+        if(msg==null){
+            msg = "";
+        }
+        //System.err.println("TF handleException msg: " + msg);
+        if (ex instanceof MissingResourceException || ex instanceof NoClassDefFoundError || msg.indexOf("java.util.MissingResourceException")>=0) {
+            if (params.warnings || params.nodata) {
+                warnln(msg);
+            } else if (params.nothrow) {
+                errln(msg);
+                ex.printStackTrace();
+            } else {
+                ex.printStackTrace();
+                throw new RuntimeException(msg);
+            }
+        } else {
+            if (params.nothrow) {
+                errln(msg);
+                ex.printStackTrace();
+            } else {
+                errln(msg);
+                ex.printStackTrace();
+                throw new RuntimeException(msg);
+            }
+        }
+    }
+    // use this instead of new random so we get a consistent seed
+    // for our tests
+    protected Random createRandom() {
+        return new Random(params.seed);
+    }
+
+    /**
+     * A test that has no test methods itself, but instead runs other tests.
+     * 
+     * This overrides methods are getTargets and getSubtest from TestFmwk.
+     * 
+     * If you want the default behavior, pass an array of class names and an
+     * optional description to the constructor. The named classes must extend
+     * TestFmwk. If a provided name doesn't include a ".", package name is
+     * prefixed to it (the package of the current test is used if none was
+     * provided in the constructor). The resulting full name is used to
+     * instantiate an instance of the class using the default constructor.
+     * 
+     * Class names are resolved to classes when getTargets or getSubtest is
+     * called. This allows instances of TestGroup to be compiled and run without
+     * all the targets they would normally invoke being available.
+     */
+    public static abstract class TestGroup extends TestFmwk {
+        private String defaultPackage;
+        private String[] names;
+        private String description;
+
+        private Class[] tests; // deferred init
+
+        /**
+         * Constructor that takes a default package name and a list of class
+         * names. Adopts and modifies the classname list
+         */
+        protected TestGroup(String defaultPackage, String[] classnames,
+                String description) {
+            if (classnames == null) {
+                throw new IllegalStateException("classnames must not be null");
+            }
+
+            if (defaultPackage == null) {
+                defaultPackage = getClass().getPackage().getName();
+            }
+            defaultPackage = defaultPackage + ".";
+
+            this.defaultPackage = defaultPackage;
+            this.names = classnames;
+            this.description = description;
+        }
+
+        /**
+         * Constructor that takes a list of class names and a description, and
+         * uses the package for this class as the default package.
+         */
+        protected TestGroup(String[] classnames, String description) {
+            this(null, classnames, description);
+        }
+
+        /**
+         * Constructor that takes a list of class names, and uses the package
+         * for this class as the default package.
+         */
+        protected TestGroup(String[] classnames) {
+            this(null, classnames, null);
+        }
+
+        protected String getDescription() {
+            return description;
+        }
+
+        protected Target getTargets(String targetName) {
+            Target target = null;
+            if (targetName != null) {
+                finishInit(); // hmmm, want to get subtest without initializing
+                              // all tests
+
+                try {
+                    TestFmwk test = getSubtest(targetName);
+                    if (test != null) {
+                        target = test.new ClassTarget();
+                    } else {
+                        target = this.new Target(targetName);
+                    }
+                } catch (TestFmwkException e) {
+                    target = this.new Target(targetName);
+                }
+            } else if (params.doRecurse()) {
+                finishInit();
+                boolean groupOnly = params.doRecurseGroupsOnly();
+                for (int i = names.length; --i >= 0;) {
+                    Target newTarget = null;
+                    Class cls = tests[i];
+                    if (cls == null) { // hack no warning for missing tests
+                        if (params.warnings) {
+                            continue;
+                        }
+                        newTarget = this.new Target(names[i]);
+                    } else {
+                        TestFmwk test = getSubtest(i, groupOnly);
+                        if (test != null) {
+                            newTarget = test.new ClassTarget();
+                        } else {
+                            if (groupOnly) {
+                                newTarget = this.new EmptyTarget(names[i]);
+                            } else {
+                                newTarget = this.new Target(names[i]);
+                            }
+                        }
+                    }
+                    if (newTarget != null) {
+                        newTarget.setNext(target);
+                        target = newTarget;
+                    }
+                }
+            }
+
+            return target;
+        }
+        protected TestFmwk getSubtest(String testName) throws TestFmwkException {
+            finishInit();
+
+            for (int i = 0; i < names.length; ++i) {
+                if (names[i].equalsIgnoreCase(testName)) { // allow
+                                                           // case-insensitive
+                                                           // matching
+                    return getSubtest(i, false);
+                }
+            }
+            throw new TestFmwkException(testName);
+        }
+
+        private TestFmwk getSubtest(int i, boolean groupOnly) {
+            Class cls = tests[i];
+            if (cls != null) {
+                if (groupOnly && !TestGroup.class.isAssignableFrom(cls)) {
+                    return null;
+                }
+
+                try {
+                    TestFmwk subtest = (TestFmwk) cls.newInstance();
+                    subtest.params = params;
+                    return subtest;
+                } catch (InstantiationException e) {
+                    throw new IllegalStateException(e.getMessage());
+                } catch (IllegalAccessException e) {
+                    throw new IllegalStateException(e.getMessage());
+                }
+            }
+            return null;
+        }
+
+        private void finishInit() {
+            if (tests == null) {
+                tests = new Class[names.length];
+
+                for (int i = 0; i < names.length; ++i) {
+                    String name = names[i];
+                    if (name.indexOf('.') == -1) {
+                        name = defaultPackage + name;
+                    }
+                    try {
+                        Class cls = Class.forName(name);
+                        if (!TestFmwk.class.isAssignableFrom(cls)) {
+                            throw new IllegalStateException("class " + name
+                                    + " does not extend TestFmwk");
+                        }
+
+                        tests[i] = cls;
+                        names[i] = getClassTargetName(cls);
+                    } catch (ClassNotFoundException e) {
+                        // leave tests[i] null and name as classname
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * The default target is invalid.
+     */
+    public class Target {
+        private Target next;
+        public final String name;
+
+        public Target(String name) {
+            this.name = name;
+        }
+
+        public Target setNext(Target next) {
+            this.next = next;
+            return this;
+        }
+
+        public Target getNext() {
+            return next;
+        }
+
+        public Target append(Target targets) {
+            Target t = this;
+            while(t.next != null) {
+                t = t.next;
+            }
+            t.next = targets;
+            return this;
+        }
+
+        public void run() throws Exception {
+            int f = filter();
+            if (f == -1) {
+                ++params.invalidCount;
+            } else {
+                Locale.setDefault(defaultLocale);
+                TimeZone.setDefault(defaultTimeZone);
+
+                if (!validate()) {
+                    params.writeTestInvalid(name, params.nodata);
+                } else {
+                    params.push(name, getDescription(), f == 1);
+                    execute();
+                    params.pop();
+                }
+            }
+        }
+
+        protected int filter() {
+            return params.filter(name);
+        }
+
+        protected boolean validate() {
+            return false;
+        }
+
+        protected String getDescription() {
+            return null;
+        }
+
+        protected void execute() throws Exception{
+        }
+    }
+
+    public class EmptyTarget extends Target {
+        public EmptyTarget(String name) {
+            super(name);
+        }
+
+        protected boolean validate() {
+            return true;
+        }
+    }
+
+    public class MethodTarget extends Target {
+        private Method testMethod;
+
+        public MethodTarget(String name, Method method) {
+            super(name);
+            testMethod = method;
+        }
+
+        protected boolean validate() {
+            return testMethod != null && validateMethod(name);
+        }
+
+        protected String getDescription() {
+            return getMethodDescription(name);
+        }
+
+        protected void execute() throws Exception{
+            if (params.inDocMode()) {
+                // nothing to execute
+            } else if (!params.stack.included) {
+                ++params.invalidCount;
+            } else {
+                final Object[] NO_ARGS = new Object[0];
+                try {
+                    ++params.testCount;
+                    init();
+                    testMethod.invoke(TestFmwk.this, NO_ARGS);
+                } catch (IllegalAccessException e) {
+                    errln("Can't access test method " + testMethod.getName());
+                }catch (ExceptionInInitializerError e){
+                    handleException(e);
+                } catch (InvocationTargetException e) {
+                    //e.printStackTrace();
+                    handleException(e);
+                }catch (MissingResourceException e) {
+                    handleException(e);
+                }catch (NoClassDefFoundError e) {
+                    handleException(e);
+                }catch (Exception e){
+                    /*errln("Encountered: "+ e.toString());
+                    e.printStackTrace(System.err);
+                    */
+                    handleException(e);
+                }
+            }
+            // If non-exhaustive, check if the method target
+            // takes excessive time.
+            if (params.inclusion <= 5) {
+                double deltaSec = (double)(System.currentTimeMillis() - params.stack.millis)/1000;
+                if (deltaSec > params.maxTargetSec) {
+                    if (params.timeLog == null) {
+                        params.timeLog = new StringBuffer();
+                    }
+                    params.stack.appendPath(params.timeLog);
+                    params.timeLog.append(" (" + deltaSec + "s" + ")\n");
+                }
+            }
+        }
+
+        protected String getStackTrace(InvocationTargetException e) {
+            ByteArrayOutputStream bs = new ByteArrayOutputStream();
+            PrintStream ps = new PrintStream(bs);
+            e.getTargetException().printStackTrace(ps);
+            return bs.toString();
+        }
+    }
+
+    public class ClassTarget extends Target {
+        String targetName;
+
+        public ClassTarget() {
+            this(null);
+        }
+
+        public ClassTarget(String targetName) {
+            super(getClassTargetName(TestFmwk.this.getClass()));
+            this.targetName = targetName;
+        }
+
+        protected boolean validate() {
+            return TestFmwk.this.validate();
+        }
+
+        protected String getDescription() {
+            return TestFmwk.this.getDescription();
+        }
+
+        protected void execute() throws Exception {
+            params.indentLevel++;
+            Target target = randomize(getTargets(targetName));
+            while (target != null) {
+                target.run();
+                target = target.next;
+            }
+            params.indentLevel--;
+        }
+
+        private Target randomize(Target t) {
+            if (t != null && t.getNext() != null) {
+                ArrayList list = new ArrayList();
+                while (t != null) {
+                    list.add(t);
+                    t = t.getNext();
+                }
+
+                Target[] arr = (Target[]) list.toArray(new Target[list.size()]);
+
+                if (true) { // todo - add to params?
+                    // different jvms return class methods in different orders,
+                    // so we sort them (always, and then randomize them, so that
+                    // forcing a seed will also work across jvms).
+                    Arrays.sort(arr, new Comparator() {
+                        public int compare(Object lhs, Object rhs) {
+                            // sort in reverse order, later we link up in
+                            // forward order
+                            return ((Target) rhs).name
+                                    .compareTo(((Target) lhs).name);
+                        }
+                    });
+
+                    // t is null to start, ends up as first element
+                    // (arr[arr.length-1])
+                    for (int i = 0; i < arr.length; ++i) {
+                        t = arr[i].setNext(t); // relink in forward order
+                    }
+                }
+
+                if (params.random != null) {
+                    t = null; // reset t to null
+                    Random r = params.random;
+                    for (int i = arr.length; --i >= 1;) {
+                        int x = r.nextInt(i + 1);
+                        t = arr[x].setNext(t);
+                        arr[x] = arr[i];
+                    }
+
+                    t = arr[0].setNext(t); // new first element
+                }
+            }
+
+            return t;
+        }
+    }
+
+    //------------------------------------------------------------------------
+    // Everything below here is boilerplate code that makes it possible
+    // to add a new test by simply adding a function to an existing class
+    //------------------------------------------------------------------------
+
+    protected TestFmwk() {
+    }
+    
+    protected void init() throws Exception{
+    }
+    
+    /**
+     * Parse arguments into a TestParams object and a collection of target
+     * paths. If there was an error parsing the TestParams, print usage and exit
+     * with -1. Otherwise, call resolveTarget(TestParams, String) for each path,
+     * and run the returned target. After the last test returns, if prompt is
+     * set, prompt and wait for input from stdin. Finally, exit with number of
+     * errors.
+     * 
+     * This method never returns, since it always exits with System.exit();
+     */
+    public void run(String[] args) {
+        System.exit(run(args, new PrintWriter(System.out)));
+     }
+    
+    /**
+     * Like run(String[]) except this allows you to specify the error log.
+     * Unlike run(String[]) this returns the error code as a result instead of
+     * calling System.exit().
+     */
+    public int run(String[] args, PrintWriter log) {
+        boolean prompt = false;
+        int wx = 0;
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-p") || arg.equals("-prompt")) {
+                prompt = true;
+            } else {
+                if (wx < i) {
+                    args[wx] = arg;
+                }
+                wx++;
+            }
+        }
+        while (wx < args.length) {
+            args[wx++] = null;
+        }
+        
+        TestParams localParams = TestParams.create(args, log);
+        if (localParams == null) {
+            return -1;
+        }
+        
+        int errorCount = runTests(localParams, args);
+        
+        if (localParams.seed != 0) {
+            localParams.log.println("-random:" + localParams.seed);
+            localParams.log.flush();
+        }
+
+        if (localParams.errorSummary != null && localParams.errorSummary.length() > 0) {
+            localParams.log.println("\nError summary:");
+            localParams.log.println(localParams.errorSummary.toString());
+        }
+
+        if (localParams.timeLog != null && localParams.timeLog.length() > 0) {
+            localParams.log.println("\nTest cases taking excessive time (>" +
+                    localParams.maxTargetSec + "s):");
+            localParams.log.println(localParams.timeLog.toString());
+        }
+
+        if (prompt) {
+            System.out.println("Hit RETURN to exit...");
+            System.out.flush();
+            try {
+                System.in.read();
+            } catch (IOException e) {
+                localParams.log.println("Exception: " + e.toString() + e.getMessage());
+            }
+        }
+
+        return errorCount;
+    }
+
+    public int runTests(TestParams _params, String[] tests) {
+        int ec = 0;
+        
+        StringBuffer summary = null;
+        try {
+            if (tests.length == 0 || tests[0] == null) { // no args
+                _params.init();
+                resolveTarget(_params).run();
+                ec = _params.errorCount;
+            } else {
+                for (int i = 0; i < tests.length ; ++i) {
+                    if (tests[i] == null) continue;
+                    
+                    if (i > 0) {
+                        _params.log.println();
+                    }
+
+                    _params.init();
+                    resolveTarget(_params, tests[i]).run();
+                    ec += _params.errorCount;
+                    
+                    if (_params.errorSummary != null && _params.errorSummary.length() > 0) {
+                        if (summary == null) {
+                            summary = new StringBuffer();
+                        }
+                        summary.append("\nTest Root: " + tests[i] + "\n");
+                        summary.append(_params.errorSummary());
+                    }
+                }
+                _params.errorSummary = summary;
+            }
+        } catch (Exception e) {
+            e.printStackTrace(_params.log);
+            _params.log.println(e.getMessage());
+            _params.log.println("encountered exception, exiting");
+        }
+        
+        return ec;
+    }
+    
+    /**
+     * Return a ClassTarget for this test. Params is set on this test.
+     */
+    public Target resolveTarget(TestParams paramsArg) {
+        this.params = paramsArg;
+        return new ClassTarget();
+    }
+
+    /**
+     * Resolve a path from this test to a target. If this test has subtests, and
+     * the path contains '/', the portion before the '/' is resolved to a
+     * subtest, until the path is consumed or the test has no subtests. Returns
+     * a ClassTarget created using the resolved test and remaining path (which
+     * ought to be null or a method name). Params is set on the target's test.
+     */
+    public Target resolveTarget(TestParams paramsArg, String targetPath) {
+        TestFmwk test = this;
+        test.params = paramsArg;
+
+        if (targetPath != null) {
+            if (targetPath.length() == 0) {
+                targetPath = null;
+            } else {
+                int p = 0;
+                int e = targetPath.length();
+
+                // trim all leading and trailing '/'
+                while (targetPath.charAt(p) == '/') {
+                    ++p;
+                }
+                while (e > p && targetPath.charAt(e - 1) == '/') {
+                    --e;
+                }
+                if (p > 0 || e < targetPath.length()) {
+                    targetPath = targetPath.substring(p, e - p);
+                    p = 0;
+                    e = targetPath.length();
+                }
+
+                try {
+                    for (;;) {
+                        int n = targetPath.indexOf('/');
+                        String prefix = n == -1 ? targetPath : targetPath
+                                .substring(0, n);
+                        TestFmwk subtest = test.getSubtest(prefix);
+
+                        if (subtest == null) {
+                            break;
+                        }
+
+                        test = subtest;
+
+                        if (n == -1) {
+                            targetPath = null;
+                            break;
+                        }
+
+                        targetPath = targetPath.substring(n + 1);
+                    }
+                } catch (TestFmwkException ex) {
+                    return test.new Target(targetPath);
+                }
+            }
+        }
+
+        return test.new ClassTarget(targetPath);
+    }
+
+    /**
+     * Return true if we can run this test (allows test to inspect jvm,
+     * environment, params before running)
+     */
+    protected boolean validate() {
+        return true;
+    }
+
+    /**
+     * Return the targets for this test. If targetName is null, return all
+     * targets, otherwise return a target for just that name. The returned
+     * target can be null.
+     * 
+     * The default implementation returns a MethodTarget for each public method
+     * of the object's class whose name starts with "Test" or "test".
+     */
+    protected Target getTargets(String targetName) {
+        return getClassTargets(getClass(), targetName);
+    }
+
+    protected Target getClassTargets(Class cls, String targetName) {
+        if (cls == null) {
+            return null;
+        }
+
+        Target target = null;
+        if (targetName != null) {
+            try {
+                Method method = cls.getMethod(targetName, (Class[])null);
+                target = new MethodTarget(targetName, method);
+            } catch (NoSuchMethodException e) {
+        if (!inheritTargets()) {
+            return new Target(targetName); // invalid target
+        }
+            } catch (SecurityException e) {
+                return null;
+            }
+        } else {
+            if (params.doMethods()) {
+                Method[] methods = cls.getDeclaredMethods();
+                for (int i = methods.length; --i >= 0;) {
+                    String name = methods[i].getName();
+                    if (name.startsWith("Test") || name.startsWith("test")) {
+                        target = new MethodTarget(name, methods[i])
+                                .setNext(target);
+                    }
+                }
+            }
+        }
+
+        if (inheritTargets()) {
+          Target parentTarget = getClassTargets(cls.getSuperclass(), targetName);
+          if (parentTarget == null) {
+            return target;
+          }
+          if (target == null) {
+            return parentTarget;
+          }
+          return parentTarget.append(target);
+        }
+
+        return target;
+    }
+
+    protected boolean inheritTargets() {
+        return false;
+    }
+
+    protected String getDescription() {
+        return null;
+    }
+
+    protected boolean validateMethod(String name) {
+        return true;
+    }
+
+    protected String getMethodDescription(String name) {
+        return null;
+    }
+
+    // method tests have no subtests, group tests override
+    protected TestFmwk getSubtest(String prefix) throws TestFmwkException {
+        return null;
+    }
+
+    public boolean isVerbose() {
+        return params.verbose;
+    }
+
+    public boolean noData() {
+        return params.nodata;
+    }
+
+    public boolean isTiming() {
+        return params.timing < Long.MAX_VALUE;
+    }
+
+    public boolean isMemTracking() {
+        return params.memusage;
+    }
+
+    /**
+     * 0 = fewest tests, 5 is normal build, 10 is most tests
+     */
+    public int getInclusion() {
+        return params.inclusion;
+    }
+
+    public boolean isModularBuild() {
+        return params.warnings;
+    }
+
+    public boolean isQuick() {
+        return params.inclusion == 0;
+    }
+
+    public void msg(String message, int level, boolean incCount, boolean newln) {
+        params.msg(message, level, incCount, newln);
+    }
+
+    protected int getErrorCount() {
+        return params.errorCount;
+    }
+
+    public String getProperty(String key) {
+        String val = null;
+        if (key != null && key.length() > 0 && params.props != null) {
+            val = (String)params.props.get(key.toLowerCase());
+        }
+        return val;
+    }
+
+    protected TimeZone safeGetTimeZone(String id) {
+        TimeZone tz = TimeZone.getTimeZone(id);
+        if (tz == null) {
+            // should never happen
+            errln("FAIL: TimeZone.getTimeZone(" + id + ") => null");
+        }
+        if (!tz.getID().equals(id)) {
+            warnln("FAIL: TimeZone.getTimeZone(" + id + ") => " + tz.getID());
+        }
+        return tz;
+    }
+
+    /**
+     * Print a usage message for this test class.
+     */
+    public void usage() {
+        usage(new PrintWriter(System.out), getClass().getName());
+    }
+    
+    public static void usage(PrintWriter pw, String className) {
+        pw.println("Usage: " + className + " option* target*");
+        pw.println();
+        pw.println("Options:");
+        pw.println(" -d[escribe] Print a short descriptive string for this test and all");
+        pw.println("       listed targets.");
+        pw.println(" -e<n> Set exhaustiveness from 0..10.  Default is 0, fewest tests.\n"
+                 + "       To run all tests, specify -e10.  Giving -e with no <n> is\n"
+                 + "       the same as -e5.");
+        pw.println(" -filter:<str> Only tests matching filter will be run or listed.\n"
+                 + "       <str> is of the form ['^']text[','['^']text].\n"
+                 + "       Each string delimited by ',' is a separate filter argument.\n"
+                 + "       If '^' is prepended to an argument, its matches are excluded.\n"
+                 + "       Filtering operates on test groups as well as tests, if a test\n"
+                 + "       group is included, all its subtests that are not excluded will\n"
+                 + "       be run.  Examples:\n"
+                 + "    -filter:A -- only tests matching A are run.  If A matches a group,\n"
+                 + "       all subtests of this group are run.\n"
+                 + "    -filter:^A -- all tests except those matching A are run.  If A matches\n"
+                 + "        a group, no subtest of that group will be run.\n"
+                 + "    -filter:A,B,^C,^D -- tests matching A or B and not C and not D are run\n"
+                 + "       Note: Filters are case insensitive.");
+        pw.println(" -h[elp] Print this help text and exit.");
+        pw.println(" -l[ist] List immediate targets of this test");
+        pw.println("   -la, -listAll List immediate targets of this test, and all subtests");
+        pw.println("   -le, -listExaustive List all subtests and targets");
+        // don't know how to get useful numbers for memory usage using java API
+        // calls
+        //      pw.println(" -m[emory] print memory usage and force gc for
+        // each test");
+        pw.println(" -n[othrow] Message on test failure rather than exception");
+        pw.println(" -p[rompt] Prompt before exiting");
+        pw.println(" -prop:<key>=<value> Set optional property used by this test");
+        pw.println(" -q[uiet] Do not show warnings");
+        pw.println(" -r[andom][:<n>] If present, randomize targets.  If n is present,\n"
+                        + "       use it as the seed.  If random is not set, targets will\n"
+                        + "       be in alphabetical order to ensure cross-platform consistency.");
+        pw.println(" -s[ilent] No output except error summary or exceptions.");
+        pw.println(" -tfilter:<str> Transliterator Test filter of ids.");
+        pw.println(" -t[ime][:<n>] Print elapsed time for each test.  if n is present\n"
+                        + "       only print times >= n milliseconds.");
+        pw.println(" -v[erbose] Show log messages");
+        pw.println(" -u[nicode] Don't escape error or log messages");
+        pw.println(" -w[arning] Continue in presence of warnings, and disable missing test warnings.");
+        pw.println(" -nodata | -nd Do not warn if resource data is not present.");
+        pw.println();
+        pw.println(" If a list or describe option is provided, no tests are run.");
+        pw.println();
+        pw.println("Targets:");
+        pw.println(" If no target is specified, all targets for this test are run.");
+        pw.println(" If a target contains no '/' characters, and matches a target");
+        pw.println(" of this test, the target is run.  Otherwise, the part before the");
+        pw.println(" '/' is used to match a subtest, which then evaluates the");
+        pw.println(" remainder of the target as above.  Target matching is case-insensitive.");
+        pw.println();
+        pw.println(" If multiple targets are provided, each is executed in order.");
+        pw.flush();
+    }
+    public static String hex(char[] s){
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length; ++i) {
+            if (i != 0) result.append(',');
+            result.append(hex(s[i]));
+        }
+        return result.toString();
+    }
+    public static String hex(byte[] s){
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length; ++i) {
+            if (i != 0) result.append(',');
+            result.append(hex(s[i]));
+        }
+        return result.toString();
+    }
+    public static String hex(char ch) {
+        StringBuffer result = new StringBuffer();
+        String foo = Integer.toString(ch, 16).toUpperCase();
+        for (int i = foo.length(); i < 4; ++i) {
+            result.append('0');
+        }
+        return result + foo;
+    }
+
+    public static String hex(int ch) {
+        StringBuffer result = new StringBuffer();
+        String foo = Integer.toString(ch, 16).toUpperCase();
+        for (int i = foo.length(); i < 4; ++i) {
+            result.append('0');
+        }
+        return result + foo;
+    }
+
+    public static String hex(String s) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0)
+                result.append(',');
+            result.append(hex(s.charAt(i)));
+        }
+        return result.toString();
+    }
+
+    public static String hex(StringBuffer s) {
+        return hex(s.toString());
+    }
+    public static String prettify(String s) {
+        StringBuffer result = new StringBuffer();
+        int ch;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(ch)) {
+            ch = UTF16.charAt(s, i);
+            if (ch > 0xfffff) {
+                result.append("\\U00");
+                result.append(hex(ch));
+            } else if (ch > 0xffff) {
+                result.append("\\U000");
+                result.append(hex(ch));
+            } else if (ch > 0x7f) {
+                result.append("\\u");
+                result.append(hex(ch));
+            } else {
+                result.append((char) ch);
+            }
+
+        }
+        return result.toString();
+    }
+    public static String prettify(StringBuffer s) {
+        return prettify(s.toString());
+    }
+
+    private static java.util.GregorianCalendar cal;
+
+    /**
+     * Return a Date given a year, month, and day of month. This is similar to
+     * new Date(y-1900, m, d). It uses the default time zone at the time this
+     * method is first called.
+     * 
+     * @param year
+     *            use 2000 for 2000, unlike new Date()
+     * @param month
+     *            use Calendar.JANUARY etc.
+     * @param dom
+     *            day of month, 1-based
+     * @return a Date object for the given y/m/d
+     */
+    protected static synchronized java.util.Date getDate(int year, int month,
+            int dom) {
+        if (cal == null) {
+            cal = new java.util.GregorianCalendar();
+        }
+        cal.clear();
+        cal.set(year, month, dom);
+        return cal.getTime();
+    }
+
+    public static class NullWriter extends PrintWriter {
+        public NullWriter() {
+            super(System.out, false);
+        }
+        public void write(int c) {
+        }
+        public void write(char[] buf, int off, int len) {
+        }
+        public void write(String s, int off, int len) {
+        }
+        public void println() {
+        }
+    }
+
+    public static class ASCIIWriter extends PrintWriter {
+        private StringBuffer buffer = new StringBuffer();
+
+        // Characters that we think are printable but that escapeUnprintable
+        // doesn't
+        private static final String PRINTABLES = "\t\n\r";
+
+        public ASCIIWriter(Writer w, boolean autoFlush) {
+            super(w, autoFlush);
+        }
+
+        public ASCIIWriter(OutputStream os, boolean autoFlush) {
+            super(os, autoFlush);
+        }
+
+        public void write(int c) {
+            synchronized (lock) {
+                buffer.setLength(0);
+                if (PRINTABLES.indexOf(c) < 0
+                        && TestUtil.escapeUnprintable(buffer, c)) {
+                    super.write(buffer.toString());
+                } else {
+                    super.write(c);
+                }
+            }
+        }
+
+        public void write(char[] buf, int off, int len) {
+            synchronized (lock) {
+                buffer.setLength(0);
+                int limit = off + len;
+                while (off < limit) {
+                    int c = UTF16Util.charAt(buf, 0, buf.length, off);
+                    off += UTF16Util.getCharCount(c);
+                    if (PRINTABLES.indexOf(c) < 0
+                            && TestUtil.escapeUnprintable(buffer, c)) {
+                        super.write(buffer.toString());
+                        buffer.setLength(0);
+                    } else {
+                        super.write(c);
+                    }
+                }
+            }
+        }
+
+        public void write(String s, int off, int len) {
+            write(s.substring(off, off + len).toCharArray(), 0, len);
+        }
+    }
+
+    // filters
+    // match against the entire hierarchy
+    // A;B;!C;!D --> (A ||B) && (!C && !D)
+    // positive, negative, unknown matches
+    // positive -- known to be included, negative- known to be excluded
+    // positive only if no excludes, and matches at least one include, if any
+    // negative only if matches at least one exclude
+    // otherwise, we wait
+
+    public static class TestParams {
+        public boolean prompt;
+        public boolean nothrow;
+        public boolean verbose;
+        public boolean quiet;
+        public int listlevel;
+        public boolean describe;
+        public boolean warnings;
+        public boolean nodata;
+        public long timing = Long.MAX_VALUE;
+        public boolean memusage;
+        public int inclusion;
+        public String filter;
+        public long seed;
+        public String tfilter; // for transliterator tests
+
+        public State stack;
+
+        public StringBuffer errorSummary;
+        private StringBuffer timeLog;
+
+        public PrintWriter log;
+        public int indentLevel;
+        private boolean needLineFeed;
+        private boolean suppressIndent;
+        public int errorCount;
+        public int warnCount;
+        public int invalidCount;
+        public int testCount;
+        private NumberFormat tformat;
+        public Random random;
+        public int maxTargetSec = 10;
+        public HashMap props;
+
+        private TestParams() {
+        }
+        
+        public static TestParams create(String arglist, PrintWriter log) {
+            String[] args = null;
+            if (arglist != null && arglist.length() > 0) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            args = Utility.split(arglist, '\u0020');
+//#else
+                args = arglist.split("\\s");
+//#endif
+            }
+            return create(args, log);
+        }
+        
+        /**
+         * Create a TestParams from a list of arguments.  If successful, return the params object,
+         * else return null.  Error messages will be reported on errlog if it is not null.
+         * Arguments and values understood by this method will be removed from the args array
+         * and existing args will be shifted down, to be filled by nulls at the end.
+         * @param args the list of arguments
+         * @param log the error log, or null if no error log is desired
+         * @return the new TestParams object, or null if error
+         */
+        public static TestParams create(String[] args, PrintWriter log) {
+            TestParams params = new TestParams();
+            
+            if(log == null){
+                params.log = new NullWriter();
+            }else{
+                params.log =  new ASCIIWriter(log, true);
+            }
+            
+            boolean usageError = false;
+            String filter = null;
+            int wx = 0; // write argets.
+            if (args != null) {
+                for (int i = 0; i < args.length; i++) {
+                    String arg = args[i];
+                    if (arg == null || arg.length() == 0) {
+                        continue;
+                    }
+                    if (arg.charAt(0) == '-') {
+                        arg = arg.toLowerCase();
+                        if (arg.equals("-verbose") || arg.equals("-v")) {
+                            params.verbose = true;
+                            params.quiet = false;
+                        } else if (arg.equals("-quiet") || arg.equals("-q")) {
+                            params.quiet = true;
+                            params.verbose = false;
+                        } else if (arg.equals("-help") || arg.equals("-h")) {
+                            usageError = true;
+                        } else if (arg.equals("-warning") || arg.equals("-w")) {
+                            params.warnings = true;
+                        } else if (arg.equals("-nodata") || arg.equals("-nd")) {
+                            params.nodata = true;
+                        } else if (arg.equals("-list") || arg.equals("-l")) {
+                            params.listlevel = 1;
+                        } else if (arg.equals("-listall") || arg.equals("-la")) {
+                            params.listlevel = 2;
+                        } else if (arg.equals("-listexaustive") || arg.equals("-le")) {
+                            params.listlevel = 3;
+                        } else if (arg.equals("-memory") || arg.equals("-m")) {
+                            params.memusage = true;
+                        } else if (arg.equals("-nothrow") || arg.equals("-n")) {
+                            params.nothrow = true;
+                            params.errorSummary = new StringBuffer();
+                        } else if (arg.equals("-describe") || arg.equals("-d")) {
+                            params.describe = true;
+                        } else if (arg.startsWith("-r")) {
+                            String s = null;
+                            int n = arg.indexOf(':');
+                            if (n != -1) {
+                                s = arg.substring(n + 1);
+                                arg = arg.substring(0, n);
+                            }
+
+                            if (arg.equals("-r") || arg.equals("-random")) {
+                                if (s == null) {
+                                    params.seed = System.currentTimeMillis();
+                                } else {
+                                    params.seed = Long.parseLong(s);
+                                }
+                            } else {
+                                log.println("*** Error: unrecognized argument: " + arg);
+                                usageError = true;
+                                break;
+                            }
+                        } else if (arg.startsWith("-e")) {
+                            // see above
+                            params.inclusion = (arg.length() == 2) 
+                                ? 5 
+                                : Integer.parseInt(arg.substring(2));
+                            if (params.inclusion < 0 || params.inclusion > 10) {
+                                usageError = true;
+                                break;
+                            }
+                        } else if (arg.startsWith("-tfilter:")) {
+                            params.tfilter = arg.substring(8);
+                        } else if (arg.startsWith("-time") || arg.startsWith("-t")) {
+                            long val = 0;
+                            int inx = arg.indexOf(':');
+                            if (inx > 0) {
+                                String num = arg.substring(inx + 1);
+                                try {
+                                    val = Long.parseLong(num);
+                                } catch (Exception e) {
+                                    log.println("*** Error: could not parse time threshold '"
+                                                + num + "'");
+                                    usageError = true;
+                                    break;
+                                }
+                            }
+                            params.timing = val;
+                            String fmt = "#,00s";
+                            if (val <= 10) {
+                                fmt = "#,##0.000s";
+                            } else if (val <= 100) {
+                                fmt = "#,##0.00s";
+                            } else if (val <= 1000) {
+                                fmt = "#,##0.0s";
+                            }
+                            params.tformat = new DecimalFormat(fmt);
+                        } else if (arg.startsWith("-filter:")) {
+                            String temp = arg.substring(8).toLowerCase();
+                            filter = filter == null ? temp : filter + "," + temp;
+                        } else if (arg.startsWith("-f:")) {
+                            String temp = arg.substring(3).toLowerCase();
+                            filter = filter == null ? temp : filter + "," + temp;
+                        } else if (arg.startsWith("-s")) {
+                            params.log = new NullWriter();
+                        } else if (arg.startsWith("-u")) {
+                            if (params.log instanceof ASCIIWriter) {
+                                params.log = log;
+                            }
+                        } else if (arg.startsWith("-prop:")) {
+                            String temp = arg.substring(6);
+                            int eql = temp.indexOf('=');
+                            if (eql <= 0) {
+                                log.println("*** Error: could not parse custom property '" + arg + "'");
+                                usageError = true;
+                                break;
+                            }
+                            if (params.props == null) {
+                                params.props = new HashMap();
+                            }
+                            params.props.put(temp.substring(0, eql), temp.substring(eql+1));
+                        } else {
+                            log.println("*** Error: unrecognized argument: "
+                                        + args[i]);
+                            usageError = true;
+                            break;
+                        }
+                    } else {
+                        args[wx++] = arg; // shift down
+                    }
+                }
+
+                while (wx < args.length) {
+                    args[wx++] = null;
+                }
+            }
+            
+            if (usageError) {
+                usage(log, "TestAll");
+                return null;
+            }
+
+            if (filter != null) {
+                params.filter = filter.toLowerCase();
+            }
+
+            params.init();
+            
+            return params;
+        }
+        
+        public String errorSummary() {
+            return errorSummary == null ? "" : errorSummary.toString();
+        }
+
+        public void init() {
+            indentLevel = 0;
+            needLineFeed = false;
+            suppressIndent = false;
+            errorCount = 0;
+            warnCount = 0;
+            invalidCount = 0;
+            testCount = 0;
+            random = seed == 0 ? null : new Random(seed);
+        }
+
+        public class State {
+            State link;
+            String name;
+            StringBuffer buffer;
+            int level;
+            int ec;
+            int wc;
+            int ic;
+            int tc;
+            boolean flushed;
+            public boolean included;
+            long mem;
+            long millis;
+
+            public State(State link, String name, boolean included) {
+                this.link = link;
+                this.name = name;
+                if (link == null) {
+                    this.level = 0;
+                    this.included = included;
+                } else {
+                    this.level = link.level + 1;
+                    this.included = included || link.included;
+                }
+                this.ec = errorCount;
+                this.wc = warnCount;
+                this.ic = invalidCount;
+                this.tc = testCount;
+
+                if (link == null || this.included) {
+                    flush();
+                }
+
+                mem = getmem();
+                millis = System.currentTimeMillis();
+            }
+
+            void flush() {
+                if (!flushed) {
+                    if (link != null) {
+                        link.flush();
+                    }
+
+                    indent(level);
+                    log.print(name);
+                    log.flush();
+
+                    flushed = true;
+
+                    needLineFeed = true;
+                }
+            }
+
+            void appendPath(StringBuffer buf) {
+                if (this.link != null) {
+                    this.link.appendPath(buf);
+                    buf.append('/');
+                }
+                buf.append(name);
+            }
+        }
+
+        public void push(String name, String description, boolean included) {
+            if (inDocMode() && describe && description != null) {
+                name += ": " + description;
+            }
+            stack = new State(stack, name, included);
+        }
+
+        public void pop() {
+            if (stack != null) {
+                writeTestResult();
+                stack = stack.link;
+            }
+        }
+
+        public boolean inDocMode() {
+            return describe || listlevel != 0;
+        }
+
+        public boolean doMethods() {
+            return !inDocMode() || listlevel == 3
+                    || (indentLevel == 1 && listlevel > 0);
+        }
+
+        public boolean doRecurse() {
+            return !inDocMode() || listlevel > 1
+                    || (indentLevel == 1 && listlevel > 0);
+        }
+
+        public boolean doRecurseGroupsOnly() {
+            return inDocMode()
+                    && (listlevel == 2 || (indentLevel == 1 && listlevel > 0));
+        }
+
+        // return 0, -1, or 1
+        // 1: run this test
+        // 0: might run this test, no positive include or exclude on this group
+        // -1: exclude this test
+        public int filter(String testName) {
+            int result = 0;
+            if (filter == null) {
+                result = 1;
+            } else {
+                boolean noIncludes = true;
+                boolean noExcludes = filter.indexOf('^') == -1;
+                testName = testName.toLowerCase();
+                int ix = 0;
+                while (ix < filter.length()) {
+                    int nix = filter.indexOf(',', ix);
+                    if (nix == -1) {
+                        nix = filter.length();
+                    }
+                    if (filter.charAt(ix) == '^') {
+                        if (testName.indexOf(filter.substring(ix + 1, nix)) != -1) {
+                            result = -1;
+                            break;
+                        }
+                    } else {
+                        noIncludes = false;
+                        if (testName.indexOf(filter.substring(ix, nix)) != -1) {
+                            result = 1;
+                            if (noExcludes) {
+                                break;
+                            }
+                        }
+                    }
+
+                    ix = nix + 1;
+                }
+                if (result == 0 && noIncludes) {
+                    result = 1;
+                }
+            }
+            //              System.out.println("filter: " + testName + " returns: " +
+            // result);
+            return result;
+        }
+
+        /**
+         * Log access.
+         * @param msg The string message to write
+         */
+        public void write(String msg) {
+            write(msg, false);
+        }
+        
+        public void writeln(String msg) {
+            write(msg, true);
+        }
+        
+        private void write(String msg, boolean newln) {
+            if (!suppressIndent) {
+                if (needLineFeed) {
+                    log.println();
+                    needLineFeed = false;
+                }
+                log.print(spaces.substring(0, indentLevel * 2));
+            }
+            log.print(msg);
+            if (newln) {
+                log.println(); 
+            }
+            log.flush();
+            suppressIndent = !newln;
+        }
+        
+        private void msg(String message, int level, boolean incCount,
+                boolean newln) {
+            if (level == WARN && (!warnings && !nodata)){
+                level = ERR;
+            }
+
+            if (incCount) {
+                if (level == WARN) {
+                    warnCount++;
+                    invalidCount++;
+                } else if (level == ERR) {
+                    errorCount++;
+                }
+            }
+
+            // should roll indentation stuff into log ???
+            if (verbose || level > (quiet ? WARN : LOG)) {
+                if (!suppressIndent) {
+                    indent(indentLevel + 1);
+                    final String[] MSGNAMES = {"", "Warning: ", "Error: "};
+                    log.print(MSGNAMES[level]);
+                }
+
+                log.print(message);
+                if (newln) {
+                    log.println();
+                }
+                log.flush();
+            }
+
+            if (level == ERR) {
+                if (!nothrow) {
+                    throw new RuntimeException(message);
+                }
+                if (!suppressIndent && errorSummary != null && stack !=null 
+                        && (errorCount == stack.ec + 1)) {
+                    stack.appendPath(errorSummary);
+                    errorSummary.append("\n");
+                }
+            }
+
+            suppressIndent = !newln;
+        }
+
+        private void writeTestInvalid(String name, boolean nodataArg) {
+            //              msg("***" + name + "*** not found or not valid.", WARN, true,
+            // true);
+            if (inDocMode()) {
+                if (!warnings) {
+                    if (stack != null) {
+                        stack.flush();
+                    }
+                    log.println(" *** Target not found or not valid.");
+                    log.flush();
+                    needLineFeed = false;
+                }
+            } else {
+                if(!nodataArg){
+                    msg("Test " + name + " not found or not valid.", WARN, true,
+                        true);
+                }
+            }
+        }
+
+        long getmem() {
+            long newmem = 0;
+            if (memusage) {
+                Runtime rt = Runtime.getRuntime();
+                long lastmem = Long.MAX_VALUE;
+                do {
+                    rt.gc();
+                    rt.gc();
+                    try {
+                        Thread.sleep(50);
+                    } catch (Exception e) {
+                        break;
+                    }
+                    lastmem = newmem;
+                    newmem = rt.totalMemory() - rt.freeMemory();
+                } while (newmem < lastmem);
+            }
+            return newmem;
+        }
+
+        private void writeTestResult() {
+            if (inDocMode()) {
+                if (needLineFeed) {
+                    log.println();
+                    log.flush();
+                }
+                needLineFeed = false;
+                return;
+            }
+
+            long dmem = getmem() - stack.mem;
+            long dtime = System.currentTimeMillis() - stack.millis;
+
+            int testDelta = testCount - stack.tc;
+            if (testDelta == 0) {
+                return;
+            }
+
+            int errorDelta = errorCount - stack.ec;
+            int invalidDelta = invalidCount - stack.ic;
+
+            stack.flush();
+
+            if (!needLineFeed) {
+                indent(indentLevel);
+                log.print("}");
+            }
+            needLineFeed = false;
+
+            if (memusage || dtime >= timing) {
+                log.print(" (");
+                if (memusage) {
+                    log.print("dmem: " + dmem);
+                }
+                if (dtime >= timing) {
+                    if (memusage) {
+                        log.print(", ");
+                    }
+                    log.print(tformat.format(dtime / 1000f));
+                }
+                log.print(")");
+            }
+
+            if (errorDelta != 0) {
+                log.println(" FAILED ("
+                        + errorDelta
+                        + " failures"
+                        + ((invalidDelta != 0) ? ", " + invalidDelta
+                                + " tests skipped)" : ")"));
+            } else if (invalidDelta != 0) {
+                log.println(" Qualified (" + invalidDelta + " tests skipped)");
+            } else {
+                log.println(" Passed");
+            }
+        }
+
+        private final void indent(int distance) {
+            boolean idm = inDocMode();
+            if (needLineFeed) {
+                if (idm) {
+                    log.println();
+                } else {
+                    log.println(" {");
+                }
+                needLineFeed = false;
+            }
+
+            log.print(spaces.substring(0, distance * (idm ? 3 : 2)));
+
+            if (idm) {
+                log.print("-- ");
+            }
+        }
+    }
+
+    public String getTranslitTestFilter() {
+        return params.tfilter;
+    }
+
+    /**
+     * Return the target name for a test class. This is either the end of the
+     * class name, or if the class declares a public static field
+     * CLASS_TARGET_NAME, the value of that field.
+     */
+    private static String getClassTargetName(Class testClass) {
+        String name = testClass.getName();
+        try {
+            Field f = testClass.getField("CLASS_TARGET_NAME");
+            name = (String) f.get(null);
+        } catch (IllegalAccessException e) {
+            throw new IllegalStateException(
+                    "static field CLASS_TARGET_NAME must be accessible");
+        } catch (NoSuchFieldException e) {
+            int n = Math.max(name.lastIndexOf('.'), name.lastIndexOf('$'));
+            if (n != -1) {
+                name = name.substring(n + 1);
+            }
+        }
+        return name;
+    }
+
+    /**
+     * Check the given array to see that all the strings in the expected array
+     * are present.
+     * 
+     * @param msg
+     *            string message, for log output
+     * @param array
+     *            array of strings to check
+     * @param expected
+     *            array of strings we expect to see, or null
+     * @return the length of 'array', or -1 on error
+     */
+    protected int checkArray(String msg, String array[], String expected[]) {
+        int explen = (expected != null) ? expected.length : 0;
+        if (!(explen >= 0 && explen < 31)) { // [sic] 31 not 32
+            errln("Internal error");
+            return -1;
+        }
+        int i = 0;
+        StringBuffer buf = new StringBuffer();
+        int seenMask = 0;
+        for (; i < array.length; ++i) {
+            String s = array[i];
+            if (i != 0)
+                buf.append(", ");
+            buf.append(s);
+            // check expected list
+            for (int j = 0, bit = 1; j < explen; ++j, bit <<= 1) {
+                if ((seenMask & bit) == 0) {
+                    if (s.equals(expected[j])) {
+                        seenMask |= bit;
+                        logln("Ok: \"" + s + "\" seen");
+                    }
+                }
+            }
+        }
+        logln(msg + " = [" + buf + "] (" + i + ")");
+        // did we see all expected strings?
+        if (((1 << explen) - 1) != seenMask) {
+            for (int j = 0, bit = 1; j < expected.length; ++j, bit <<= 1) {
+                if ((seenMask & bit) == 0) {
+                    errln("\"" + expected[j] + "\" not seen");
+                }
+            }
+        }
+        return array.length;
+    }
+
+    /**
+     * Check the given array to see that all the locales in the expected array
+     * are present.
+     * 
+     * @param msg
+     *            string message, for log output
+     * @param array
+     *            array of locales to check
+     * @param expected
+     *            array of locales names we expect to see, or null
+     * @return the length of 'array'
+     */
+    protected int checkArray(String msg, Locale array[], String expected[]) {
+        String strs[] = new String[array.length];
+        for (int i = 0; i < array.length; ++i)
+            strs[i] = array[i].toString();
+        return checkArray(msg, strs, expected);
+    }
+
+    /**
+     * Check the given array to see that all the locales in the expected array
+     * are present.
+     * 
+     * @param msg
+     *            string message, for log output
+     * @param array
+     *            array of locales to check
+     * @param expected
+     *            array of locales names we expect to see, or null
+     * @return the length of 'array'
+     */
+    protected int checkArray(String msg, ULocale array[], String expected[]) {
+        String strs[] = new String[array.length];
+        for (int i = 0; i < array.length; ++i)
+            strs[i] = array[i].toString();
+        return checkArray(msg, strs, expected);
+    }
+
+    // JUnit-like assertions.
+
+    protected boolean assertTrue(String message, boolean condition) {
+        return handleAssert(condition, message, "true", null);
+    }
+
+    protected boolean assertFalse(String message, boolean condition) {
+        return handleAssert(!condition, message, "false", null);
+    }
+
+    protected boolean assertEquals(String message, boolean expected,
+            boolean actual) {
+        return handleAssert(expected == actual, message, String
+                .valueOf(expected), String.valueOf(actual));
+    }
+
+    protected boolean assertEquals(String message, long expected, long actual) {
+        return handleAssert(expected == actual, message, String
+                .valueOf(expected), String.valueOf(actual));
+    }
+
+    // do NaN and range calculations to precision of float, don't rely on
+    // promotion to double
+    protected boolean assertEquals(String message, float expected,
+            float actual, double error) {
+        boolean result = Float.isInfinite(expected)
+                ? expected == actual
+                : !(Math.abs(expected - actual) > error); // handles NaN
+        return handleAssert(result, message, String.valueOf(expected)
+                + (error == 0 ? "" : " (within " + error + ")"), String
+                .valueOf(actual));
+    }
+
+    protected boolean assertEquals(String message, double expected,
+            double actual, double error) {
+        boolean result = Double.isInfinite(expected)
+                ? expected == actual
+                : !(Math.abs(expected - actual) > error); // handles NaN
+        return handleAssert(result, message, String.valueOf(expected)
+                + (error == 0 ? "" : " (within " + error + ")"), String
+                .valueOf(actual));
+    }
+
+    protected boolean assertEquals(String message, Object expected,
+            Object actual) {
+        boolean result = expected == null ? actual == null : expected
+                .equals(actual);
+        return handleAssert(result, message, stringFor(expected),
+                stringFor(actual));
+    }
+
+    protected boolean assertNotEquals(String message, Object expected,
+            Object actual) {
+        boolean result = !(expected == null ? actual == null : expected
+                .equals(actual));
+        return handleAssert(result, message, stringFor(expected),
+                stringFor(actual), "not equal to", true);
+    }
+
+    protected boolean assertSame(String message, Object expected, Object actual) {
+        return handleAssert(expected == actual, message, stringFor(expected),
+                stringFor(actual), "==", false);
+    }
+
+    protected boolean assertNotSame(String message, Object expected,
+            Object actual) {
+        return handleAssert(expected != actual, message, stringFor(expected),
+                stringFor(actual), "!=", true);
+    }
+
+    protected boolean assertNull(String message, Object actual) {
+        return handleAssert(actual == null, message, null, stringFor(actual));
+    }
+
+    protected boolean assertNotNull(String message, Object actual) {
+        return handleAssert(actual != null, message, null, stringFor(actual),
+                "!=", true);
+    }
+
+    protected void fail(String message) {
+        errln(message);
+    }
+
+    private boolean handleAssert(boolean result, String message,
+            String expected, String actual) {
+        return handleAssert(result, message, expected, actual, null, false);
+    }
+
+    private boolean handleAssert(boolean result, String message,
+            String expected, String actual, String relation, boolean flip) {
+        if (!result || isVerbose()) {
+            message = message == null ? "" : " " + message;
+            relation = relation == null ? ", got " : " " + relation + " ";
+            if (result) {
+                logln("OK" + message + ": "
+                        + (flip ? expected + relation + actual : expected));
+            } else {
+                // assert must assume errors are true errors and not just warnings
+                // so cannot warnln here
+                errln(message
+                        + ": expected"
+                        + (flip ? relation + expected : " " + expected
+                                + (actual != null ? relation + actual : "")));
+            }
+        }
+        return result;
+    }
+
+    private final String stringFor(Object obj) {
+        if (obj == null)
+            return "null";
+        if (obj instanceof String)
+            return "\"" + obj + '"';
+        return obj.getClass().getName() + "<" + obj + ">";
+    }
+
+    // End JUnit-like assertions
+
+    // PrintWriter support
+
+    public PrintWriter getErrorLogPrintWriter() {
+        return new PrintWriter(new TestLogWriter(this, TestLog.ERR));
+    }
+
+    public PrintWriter getLogPrintWriter() {
+        return new PrintWriter(new TestLogWriter(this, TestLog.LOG));
+    }
+
+    // end PrintWriter support
+
+    protected TestParams params = null;
+
+    private final static String spaces = "                                          ";
+    
+}
diff --git a/src/com/ibm/icu/dev/test/TestLog.java b/src/com/ibm/icu/dev/test/TestLog.java
new file mode 100644
index 0000000..d152c49
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestLog.java
@@ -0,0 +1,38 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+public interface TestLog {
+
+    /**
+     * Adds given string to the log if we are in verbose mode.
+     */
+    void log(String message);
+
+    void logln(String message);
+
+    /**
+     * Report an error
+     */
+    void err(String message);
+
+    void errln(String message);
+
+    /**
+     * Warn about missing tests or data.
+     */
+    void warn(String message);
+    
+    void warnln(String message);
+
+
+    public static final int LOG = 0;
+    public static final int WARN = 1;
+    public static final int ERR = 2;
+
+    void msg(String message, int level, boolean incCount, boolean newln);
+}
diff --git a/src/com/ibm/icu/dev/test/TestLogWriter.java b/src/com/ibm/icu/dev/test/TestLogWriter.java
new file mode 100644
index 0000000..e2a3095
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestLogWriter.java
@@ -0,0 +1,43 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.io.IOException;
+import java.io.Writer;
+
+public final class TestLogWriter extends Writer {
+    private TestLog log;
+    private int level;
+    private boolean closed;
+
+    public TestLogWriter(TestLog log, int level) {
+    this.log = log;
+    this.level = level;
+    }
+
+    public void write(char cbuf[], int off, int len) throws IOException {
+        write(new String(cbuf, off, len));
+    }
+
+    public void write(String str) throws IOException {
+        if (closed) {
+            throw new IOException("stream closed");
+        }
+        if ("\r\n".indexOf(str) != -1) {
+            log.msg("", level, level == TestLog.ERR, true);
+        } else {
+            log.msg(str, level, level == TestLog.ERR, false);
+        }
+    }
+
+    public void flush() throws IOException {
+    }
+
+    public void close() throws IOException {
+        closed = true;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/TestUtil.java b/src/com/ibm/icu/dev/test/TestUtil.java
new file mode 100644
index 0000000..eda7b11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/TestUtil.java
@@ -0,0 +1,252 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.File;
+
+public final class TestUtil {
+    /**
+     * Path to test data in icu4jtest.jar
+     */
+    public static final String LOCAL_DATA_PATH = "/com/ibm/icu/dev/data/";
+
+    /**
+     * Standard path to the test data in the file system.
+     */
+    public static final String DATA_PATH = "/src" + LOCAL_DATA_PATH;
+
+    /**
+     * Property for user-defined data path.
+     */
+    public static final String DATA_PATH_PROPERTY = "ICUDataPath";
+
+    /**
+     * Property for modular build.
+     */
+    public static final String DATA_MODULAR_BUILD_PROPERTY = "ICUModularBuild";
+
+    /**
+     * Compute a full data path using the ICUDataPath, if defined, or the user.dir, if we
+     * are allowed access to it.
+     */
+    private static final String dataPath(String fileName) {
+        String s = System.getProperty(DATA_PATH_PROPERTY);
+        if (s == null) {
+            // assume user.dir is directly above src directory
+            // data path must end in '/' or '\', fileName should not start with one
+            s = System.getProperty("user.dir"); // protected property
+            s = s + DATA_PATH;
+        }
+        return s + fileName;
+    }
+
+    /**
+     * Return an input stream on the data file at path 'name' rooted at the data path
+     */
+    public static final InputStream getDataStream(String name) throws IOException {
+        InputStream is = null;
+        try {
+            is = new FileInputStream(dataPath(name));
+        } catch (Throwable e) {
+            try {
+                is = TestUtil.class.getResourceAsStream(LOCAL_DATA_PATH + name);
+            } catch (Throwable t) {
+                IOException ex =
+                    new IOException("data resource '" + name + "' not found");
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            t.printStackTrace();
+//#else
+                //initCause API was introduced in JDK 1.4
+                ex.initCause(t);
+//#endif
+               
+                throw ex;
+            }
+        }
+        return is;
+    }
+
+    /**
+     * Return a buffered reader on the data file at path 'name' rooted at the data path.
+     */
+    public static final BufferedReader getDataReader(String name, String charset) throws IOException {
+        InputStream is = getDataStream(name);
+        InputStreamReader isr =
+            charset == null
+                ? new InputStreamReader(is)
+                : new InputStreamReader(is, charset);
+        return new BufferedReader(isr);
+    }
+
+    /**
+     * Return a buffered reader on the data file at path 'name' rooted at the data path,
+     * using the provided encoding.
+     */
+    public static final BufferedReader getDataReader(String name)
+        throws IOException {
+        return getDataReader(name, null);
+    }
+
+    static final char DIGITS[] =
+        {
+            '0',
+            '1',
+            '2',
+            '3',
+            '4',
+            '5',
+            '6',
+            '7',
+            '8',
+            '9',
+            'A',
+            'B',
+            'C',
+            'D',
+            'E',
+            'F',
+            'G',
+            'H',
+            'I',
+            'J',
+            'K',
+            'L',
+            'M',
+            'N',
+            'O',
+            'P',
+            'Q',
+            'R',
+            'S',
+            'T',
+            'U',
+            'V',
+            'W',
+            'X',
+            'Y',
+            'Z' };
+    /**
+     * Return true if the character is NOT printable ASCII.  The tab,
+     * newline and linefeed characters are considered unprintable.
+     */
+    public static boolean isUnprintable(int c) {
+        return !(c >= 0x20 && c <= 0x7E);
+    }
+    /**
+     * Escape unprintable characters using <backslash>uxxxx notation
+     * for U+0000 to U+FFFF and <backslash>Uxxxxxxxx for U+10000 and
+     * above.  If the character is printable ASCII, then do nothing
+     * and return FALSE.  Otherwise, append the escaped notation and
+     * return TRUE.
+     */
+    public static boolean escapeUnprintable(StringBuffer result, int c) {
+        if (isUnprintable(c)) {
+            result.append('\\');
+            if ((c & ~0xFFFF) != 0) {
+                result.append('U');
+                result.append(DIGITS[0xF & (c >> 28)]);
+                result.append(DIGITS[0xF & (c >> 24)]);
+                result.append(DIGITS[0xF & (c >> 20)]);
+                result.append(DIGITS[0xF & (c >> 16)]);
+            } else {
+                result.append('u');
+            }
+            result.append(DIGITS[0xF & (c >> 12)]);
+            result.append(DIGITS[0xF & (c >> 8)]);
+            result.append(DIGITS[0xF & (c >> 4)]);
+            result.append(DIGITS[0xF & c]);
+            return true;
+        }
+        return false;
+    }
+
+    static class Lock {
+        private int count;
+
+        synchronized void inc() {
+            ++count;
+        }
+
+        synchronized void dec() {
+            --count;
+        }
+
+        synchronized int count() {
+            return count;
+        }
+
+        void go() {
+            try {
+                while (count() > 0) {
+                    synchronized (this) {
+                        notifyAll();
+                    }
+                    Thread.sleep(50);
+                }
+            } catch (InterruptedException e) {
+            }
+        }
+    }
+
+    static class TestThread extends Thread {
+        Lock lock;
+        Runnable target;
+
+        TestThread(Lock lock, Runnable target) {
+            this.lock = lock;
+            this.target = target;
+
+            lock.inc();
+        }
+
+        public void run() {
+            try {
+                synchronized (lock) {
+                    lock.wait();
+                }
+                target.run();
+            } catch (InterruptedException e) {
+            }
+
+            lock.dec();
+        }
+    }
+
+    public static void runUntilDone(Runnable[] targets) {
+        if (targets == null) {
+            throw new IllegalArgumentException("targets is null");
+        }
+        if (targets.length == 0) {
+            return;
+        }
+
+        Lock lock = new Lock();
+        for (int i = 0; i < targets.length; ++i) {
+            new TestThread(lock, targets[i]).start();
+        }
+
+        lock.go();
+    }
+    public static BufferedReader openUTF8Reader(String dir, String filename) throws IOException {
+        return openReader(dir,filename,"UTF-8");
+    }
+    public static BufferedReader openReader(String dir, String filename, String encoding) throws IOException {
+        File file = new File(dir + filename);
+        return new BufferedReader(
+            new InputStreamReader(
+                new FileInputStream(file),
+                encoding),
+            4*1024);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/UTF16Util.java b/src/com/ibm/icu/dev/test/UTF16Util.java
new file mode 100644
index 0000000..9da512c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/UTF16Util.java
@@ -0,0 +1,377 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.dev.test;
+
+/**
+ * Utility class for supplementary code point 
+ * support. This one is written purely for updating
+ * Normalization sample from the unicode.org site.
+ * If you want the real thing, use UTF16 class
+ * from ICU4J
+ * @author Vladimir Weinstein, Markus Scherer
+ */
+public class UTF16Util {
+    static final int suppOffset = (0xd800 << 10) + 0xdc00 - 0x10000;
+
+    /**
+     * Method nextCodePoint. Returns the next code point
+     * in a string. 
+     * @param s String in question
+     * @param i index from which we want a code point
+     * @return int codepoint at index i
+     */
+    public static final int nextCodePoint(String s, int i) {
+        int ch = s.charAt(i);
+        if (0xd800 <= ch && ch <= 0xdbff && ++i < s.length()) {
+            int ch2 = s.charAt(i);
+            if (0xdc00 <= ch2 && ch2 <= 0xdfff) {
+                ch = (ch << 10) + ch2 - suppOffset;
+            }
+        }
+        return ch;
+    }
+
+    /**
+     * Method prevCodePoint. Gets the code point preceding
+     * index i (predecrement). 
+     * @param s String in question
+     * @param i index in string
+     * @return int codepoint at index --i
+     */
+    public static final int prevCodePoint(String s, int i) {
+        int ch = s.charAt(--i);
+        if (0xdc00 <= ch && ch <= 0xdfff && --i >= 0) {
+            int ch2 = s.charAt(i);
+            if (0xd800 <= ch2 && ch2 <= 0xdbff) {
+                ch = (ch2 << 10) + ch - suppOffset;
+            }
+        }
+        return ch;
+    }
+
+    /**
+     * Method nextCodePoint. Returns the next code point
+     * in a string. 
+     * @param s StringBuffer in question
+     * @param i index from which we want a code point
+     * @return int codepoint at index i
+     */
+    public static final int nextCodePoint(StringBuffer s, int i) {
+        int ch = s.charAt(i);
+        if (0xd800 <= ch && ch <= 0xdbff && ++i < s.length()) {
+            int ch2 = s.charAt(i);
+            if (0xdc00 <= ch2 && ch2 <= 0xdfff) {
+                ch = (ch << 10) + ch2 - suppOffset;
+            }
+        }
+        return ch;
+    }
+
+    /**
+     * Method prevCodePoint. Gets the code point preceding
+     * index i (predecrement). 
+     * @param s StringBuffer in question
+     * @param i index in string
+     * @return int codepoint at index --i
+     */
+    public static final int prevCodePoint(StringBuffer s, int i) {
+        int ch = s.charAt(--i);
+        if (0xdc00 <= ch && ch <= 0xdfff && --i >= 0) {
+            int ch2 = s.charAt(i);
+            if (0xd800 <= ch2 && ch2 <= 0xdbff) {
+                ch = (ch2 << 10) + ch - suppOffset;
+            }
+        }
+        return ch;
+    }
+
+    /**
+     * Method codePointLength. Returns the length 
+     * in UTF-16 code units of a given code point
+     * @param c code point in question
+     * @return int length in UTF-16 code units. Can be 1 or 2
+     */
+    public static final int codePointLength(int c) {
+        return c <= 0xffff ? 1 : 2;
+    }
+
+    /**
+     * Method appendCodePoint. Appends a code point
+     * to a StringBuffer
+     * @param buffer StringBuffer in question
+     * @param ch code point to append
+     */
+    public static final void appendCodePoint(StringBuffer buffer, int ch) {
+        if (ch <= 0xffff) {
+            buffer.append((char)ch);
+        } else {
+            buffer.append((char)(0xd7c0 + (ch >> 10)));
+            buffer.append((char)(0xdc00 + (ch & 0x3ff))); 
+        }
+    }
+
+    /**
+     * Method insertCodePoint. Inserts a code point in
+     * a StringBuffer
+     * @param buffer StringBuffer in question
+     * @param i index at which we want code point to be inserted
+     * @param ch code point to be inserted
+     */
+    public static final void insertCodePoint(StringBuffer buffer, int i, int ch) {
+        if (ch <= 0xffff) {
+            buffer.insert(i, (char)ch);
+        } else {
+            buffer.insert(i, (char)(0xd7c0 + (ch >> 10))).insert(i + 1, (char)(0xdc00 + (ch & 0x3ff))); 
+        }
+    }
+    
+    /**
+     * Method setCodePointAt. Changes a code point at a
+     * given index. Can change the length of the string.
+     * @param buffer StringBuffer in question
+     * @param i index at which we want to change the contents
+     * @param ch replacement code point
+     * @return int difference in resulting StringBuffer length
+     */
+    public static final int setCodePointAt(StringBuffer buffer, int i, int ch) {
+        int cp = nextCodePoint(buffer, i);
+        
+        if (ch <= 0xffff && cp <= 0xffff) { // Both BMP
+            buffer.setCharAt(i, (char)ch);
+            return 0;
+        } else if (ch > 0xffff && cp > 0xffff) { // Both supplementary
+            buffer.setCharAt(i, (char)(0xd7c0 + (ch >> 10)));
+            buffer.setCharAt(i+1, (char)(0xdc00 + (ch & 0x3ff)));
+            return 0;
+        } else if (ch <= 0xffff && cp > 0xffff) { // putting BMP instead of supplementary, buffer shrinks
+            buffer.setCharAt(i, (char)ch);
+            buffer.deleteCharAt(i+1);
+            return -1;
+        } else { //if (ch > 0xffff && cp <= 0xffff) { // putting supplementary instead of BMP, buffer grows
+            buffer.setCharAt(i, (char)(0xd7c0 + (ch >> 10)));
+            buffer.insert(i+1, (char)(0xdc00 + (ch & 0x3ff))); 
+            return 1;           
+        }
+    }
+
+    /**
+     * Method countCodePoint. Counts the UTF-32 code points
+     * in a UTF-16 encoded string.
+     * @param source String in question.
+     * @return int number of code points in this string
+     */
+    public static final int countCodePoint(String source) 
+    {         
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+        
+        for (int i = 0; i < source.length(); ++ i) 
+        {
+            ch = source.charAt(i);
+            if (hadLeadSurrogate && 0xdc00 <= ch && ch <= 0xdfff) {
+                hadLeadSurrogate = false;           // count valid trail as zero
+            }
+            else
+            {
+                hadLeadSurrogate = (0xd800 <= ch && ch <= 0xdbff);
+                ++ result;                          // count others as 1
+            }
+        }
+        
+        return result;
+    }
+    
+    /**
+     * Method countCodePoint. Counts the UTF-32 code points
+     * in a UTF-16 encoded string.
+     * @param source StringBuffer in question.
+     * @return int number of code points in this string
+     */
+    public static final int countCodePoint(StringBuffer source) 
+    {         
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+        
+        for (int i = 0; i < source.length(); ++ i) 
+        {
+            ch = source.charAt(i);
+            if (hadLeadSurrogate && 0xdc00 <= ch && ch <= 0xdfff) {
+                hadLeadSurrogate = false;           // count valid trail as zero
+            }
+            else
+            {
+                hadLeadSurrogate = (0xd800 <= ch && ch <= 0xdbff);
+                ++ result;                          // count others as 1
+            }
+        }
+        
+        return result;
+    }
+    /**
+     * The minimum value for Supplementary code points
+     */
+    public static final int SUPPLEMENTARY_MIN_VALUE  = 0x10000;  
+    /**
+     * Determines how many chars this char32 requires.
+     * If a validity check is required, use <code>
+     * <a href="../UCharacter.html#isLegal(char)">isLegal()</a></code> on 
+     * char32 before calling.
+     * @param char32 the input codepoint.
+     * @return 2 if is in supplementary space, otherwise 1. 
+     */
+    public static int getCharCount(int char32) 
+    {
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            return 1;
+        }
+        return 2;
+    }
+    /**
+     * Lead surrogate maximum value
+     * @stable ICU 2.1
+     */
+    public static final int LEAD_SURROGATE_MAX_VALUE = 0xDBFF;
+    /**
+     * Lead surrogate minimum value
+     * @stable ICU 2.1
+     */
+    public static final int LEAD_SURROGATE_MIN_VALUE = 0xD800;
+    
+    /**
+     * Trail surrogate minimum value
+     * @stable ICU 2.1
+     */
+    public static final int TRAIL_SURROGATE_MIN_VALUE = 0xDC00; 
+    /**
+     * Trail surrogate maximum value
+     * @stable ICU 2.1
+     */
+    public static final int TRAIL_SURROGATE_MAX_VALUE = 0xDFFF;
+    /**
+     * Determines whether the code value is a surrogate.
+     * @param char16 the input character.
+     * @return true iff the input character is a surrogate.
+     * @stable ICU 2.1
+     */
+    public static boolean isSurrogate(char char16) 
+    {
+        return LEAD_SURROGATE_MIN_VALUE <= char16 && 
+            char16 <= TRAIL_SURROGATE_MAX_VALUE;
+    }
+        
+    /**
+     * Determines whether the character is a trail surrogate.
+     * @param char16 the input character.
+     * @return true iff the input character is a trail surrogate.
+     * @stable ICU 2.1
+     */
+    public static boolean isTrailSurrogate(char char16) 
+    {
+        return (TRAIL_SURROGATE_MIN_VALUE <= char16 && 
+                char16 <= TRAIL_SURROGATE_MAX_VALUE);
+    }
+        
+    /**
+     * Determines whether the character is a lead surrogate.
+     * @param char16 the input character.
+     * @return true iff the input character is a lead surrogate
+     * @stable ICU 2.1
+     */
+    public static boolean isLeadSurrogate(char char16) 
+    {
+        return LEAD_SURROGATE_MIN_VALUE <= char16 && 
+            char16 <= LEAD_SURROGATE_MAX_VALUE;
+    }
+    /**
+     * Extract a single UTF-32 value from a substring.
+     * Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a
+     * validity check is required, use 
+     * <code><a href="../UCharacter.html#isLegal(char)">UCharacter.isLegal()
+     * </a></code> on the return value.
+     * If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is 
+     * not found the incomplete character will be returned
+     * @param source array of UTF-16 chars
+     * @param start offset to substring in the source array for analyzing
+     * @param limit offset to substring in the source array for analyzing
+     * @param offset16 UTF-16 offset relative to start
+     * @return UTF-32 value for the UTF-32 value that contains the char at
+     *         offset16. The boundaries of that codepoint are the same as in
+     *         <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException thrown if offset16 is not within 
+     *            the range of start and limit.
+     * @stable ICU 2.1
+     */
+    public static int charAt(char source[], int start, int limit, 
+                             int offset16)
+    {
+        offset16 += start;
+        if (offset16 < start || offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+            
+        char single = source[offset16];
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is 
+        // low, look both directions.      
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            offset16 ++;
+            if (offset16 >= limit) {
+                return single;
+            }
+            char trail = source[offset16];
+            if (isTrailSurrogate(trail)) {
+                return getRawSupplementary(single, trail);
+            }
+        } 
+        else { // isTrailSurrogate(single), so
+            if (offset16 == start) {
+                return single;
+            }
+            offset16 --;
+            char lead = source[offset16];
+            if (isLeadSurrogate(lead))
+                return getRawSupplementary(lead, single);
+        }
+        return single; // return unmatched surrogate
+    }
+    /**
+     * Shift value for lead surrogate to form a supplementary character.
+     */
+    private static final int LEAD_SURROGATE_SHIFT_ = 10;
+    
+    /** 
+     * Offset to add to combined surrogate pair to avoid msking.
+     */
+    private static final int SURROGATE_OFFSET_ = 
+                           SUPPLEMENTARY_MIN_VALUE - 
+                           (LEAD_SURROGATE_MIN_VALUE << 
+                           LEAD_SURROGATE_SHIFT_) - 
+                           TRAIL_SURROGATE_MIN_VALUE;   
+
+    
+   /**
+    * Forms a supplementary code point from the argument character<br>
+    * Note this is for internal use hence no checks for the validity of the
+    * surrogate characters are done
+    * @param lead lead surrogate character
+    * @param trail trailing surrogate character
+    * @return code point of the supplementary character
+    */
+    public static int getRawSupplementary(char lead, char trail)
+    {
+        return (lead << LEAD_SURROGATE_SHIFT_) + trail + SURROGATE_OFFSET_;
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/BidiTest.java b/src/com/ibm/icu/dev/test/bidi/BidiTest.java
new file mode 100644
index 0000000..19a5fc7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/BidiTest.java
@@ -0,0 +1,493 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Bidi;
+import com.ibm.icu.text.BidiRun;
+
+/**
+ * A base class for the Bidi test suite.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class BidiTest extends TestFmwk {
+
+    protected static final char[] charFromDirProp = {
+         /* L      R    EN    ES    ET     AN    CS    B    S    WS    ON */
+         0x61, 0x5d0, 0x30, 0x2f, 0x25, 0x660, 0x2c, 0xa, 0x9, 0x20, 0x26,
+         /* LRE     LRO     AL     RLE     RLO     PDF    NSM      BN */
+         0x202a, 0x202d, 0x627, 0x202b, 0x202e, 0x202c, 0x308, 0x200c
+    };
+
+    static {
+        initCharFromDirProps();
+    }
+
+    private static void initCharFromDirProps() {
+        final VersionInfo ucd401 =  VersionInfo.getInstance(4, 0, 1, 0);
+        VersionInfo ucdVersion = VersionInfo.getInstance(0, 0, 0, 0);
+
+        /* lazy initialization */
+        if (ucdVersion.getMajor() > 0) {
+            return;
+
+        }
+        ucdVersion = UCharacter.getUnicodeVersion();
+        if (ucdVersion.compareTo(ucd401) >= 0) {
+            /* Unicode 4.0.1 changes bidi classes for +-/ */
+            /* change ES character from / to + */
+            charFromDirProp[TestData.ES] = 0x2b;
+        }
+    }
+
+    protected boolean assertEquals(String message, String expected, String actual,
+                                   String src, String mode, String option,
+                                   String level) {
+        if (expected == null || actual == null) {
+            return super.assertEquals(message, expected, actual);
+        }
+        if (expected.equals(actual)) {
+            return true;
+        }
+        errln("");
+        errcontln(message);
+        if (src != null) {
+            errcontln("source            : \"" + Utility.escape(src) + "\"");
+        }
+        errcontln("expected          : \"" + Utility.escape(expected) + "\"");
+        errcontln("actual            : \"" + Utility.escape(actual) + "\"");
+        if (mode != null) {
+            errcontln("reordering mode   : " + mode);
+        }
+        if (option != null) {
+            errcontln("reordering option : " + option);
+        }
+        if (level != null) {
+            errcontln("paragraph level   : " + level);
+        }
+        return false;
+    }
+
+    protected static String valueOf(int[] array) {
+        StringBuffer result = new StringBuffer(array.length * 4);
+        for (int i = 0; i < array.length; i++) {
+            result.append(' ');
+            result.append(array[i]);
+        }
+        return result.toString();
+    }
+
+    private static final String[] modeDescriptions = {
+        "REORDER_DEFAULT",
+        "REORDER_NUMBERS_SPECIAL",
+        "REORDER_GROUP_NUMBERS_WITH_R",
+        "REORDER_RUNS_ONLY",
+        "REORDER_INVERSE_NUMBERS_AS_L",
+        "REORDER_INVERSE_LIKE_DIRECT",
+        "REORDER_INVERSE_FOR_NUMBERS_SPECIAL"
+    };
+
+    protected static String modeToString(int mode) {
+        if (mode < Bidi.REORDER_DEFAULT ||
+            mode > Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL) {
+            return "INVALID";
+        }
+        return modeDescriptions[mode];
+    }
+
+    private static final short SETPARA_MASK = Bidi.OPTION_INSERT_MARKS |
+        Bidi.OPTION_REMOVE_CONTROLS | Bidi.OPTION_STREAMING;
+
+    private static final String[] setParaDescriptions = {
+        "OPTION_INSERT_MARKS",
+        "OPTION_REMOVE_CONTROLS",
+        "OPTION_STREAMING"
+    };
+
+    protected static String spOptionsToString(int option) {
+        return optionToString(option, SETPARA_MASK, setParaDescriptions);
+    }
+
+    private static final int MAX_WRITE_REORDERED_OPTION = Bidi.OUTPUT_REVERSE;
+    private static final int REORDER_MASK = (MAX_WRITE_REORDERED_OPTION << 1) - 1;
+
+    private static final String[] writeReorderedDescriptions = {
+        "KEEP_BASE_COMBINING",      //  1
+        "DO_MIRRORING",             //  2
+        "INSERT_LRM_FOR_NUMERIC",   //  4
+        "REMOVE_BIDI_CONTROLS",     //  8
+        "OUTPUT_REVERSE"            // 16
+    };
+
+    public static String wrOptionsToString(int option) {
+        return optionToString(option, REORDER_MASK, writeReorderedDescriptions);
+    }
+    public static String optionToString(int option, int mask,
+                                        String[] descriptions) {
+        StringBuffer desc = new StringBuffer(50);
+
+        if ((option &= mask) == 0) {
+            return "0";
+        }
+        desc.setLength(0);
+
+        for (int i = 0; option > 0; i++, option >>= 1) {
+            if ((option & 1) != 0) {
+                if (desc.length() > 0) {
+                    desc.append(" | ");
+                }
+                desc.append(descriptions[i]);
+            }
+        }
+        return desc.toString();
+    }
+
+    static final String columnString =
+        "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+    static final char[] columns = columnString.toCharArray();
+    private static final int TABLE_SIZE = 256;
+    private static boolean tablesInitialized = false;
+    private static char[] pseudoToUChar;
+    private static char[] UCharToPseudo;    /* used for Unicode chars < 0x0100 */
+    private static char[] UCharToPseud2;    /* used for Unicode chars >=0x0100 */
+
+    static void buildPseudoTables()
+    /*
+        The rules for pseudo-Bidi are as follows:
+        - [ == LRE
+        - ] == RLE
+        - { == LRO
+        - } == RLO
+        - ^ == PDF
+        - @ == LRM
+        - & == RLM
+        - A-F == Arabic Letters 0631-0636
+        - G-V == Hebrew letters 05d7-05ea
+        - W-Z == Unassigned RTL 08d0-08d3
+        - 0-5 == western digits 0030-0035
+        - 6-9 == Arabic-Indic digits 0666-0669
+        - ` == Combining Grave Accent 0300 (NSM)
+        - ~ == Delete 007f (BN)
+        - | == Paragraph Separator 2029 (B)
+        - _ == Info Separator 1 001f (S)
+        All other characters represent themselves as Latin-1, with the corresponding
+        Bidi properties.
+    */
+    {
+        int     i;
+        char    uchar;
+        char    c;
+
+        /* initialize all tables to unknown */
+        pseudoToUChar = new char[TABLE_SIZE];
+        UCharToPseudo = new char[TABLE_SIZE];
+        UCharToPseud2 = new char[TABLE_SIZE];
+        for (i = 0; i < TABLE_SIZE; i++) {
+            pseudoToUChar[i] = 0xFFFD;
+            UCharToPseudo[i] = '?';
+            UCharToPseud2[i] = '?';
+        }
+        /* initialize non letters or digits */
+        pseudoToUChar[ 0 ] = 0x0000;    UCharToPseudo[0x00] =  0 ;
+        pseudoToUChar[' '] = 0x0020;    UCharToPseudo[0x20] = ' ';
+        pseudoToUChar['!'] = 0x0021;    UCharToPseudo[0x21] = '!';
+        pseudoToUChar['"'] = 0x0022;    UCharToPseudo[0x22] = '"';
+        pseudoToUChar['#'] = 0x0023;    UCharToPseudo[0x23] = '#';
+        pseudoToUChar['$'] = 0x0024;    UCharToPseudo[0x24] = '$';
+        pseudoToUChar['%'] = 0x0025;    UCharToPseudo[0x25] = '%';
+        pseudoToUChar['\'']= 0x0027;    UCharToPseudo[0x27] = '\'';
+        pseudoToUChar['('] = 0x0028;    UCharToPseudo[0x28] = '(';
+        pseudoToUChar[')'] = 0x0029;    UCharToPseudo[0x29] = ')';
+        pseudoToUChar['*'] = 0x002A;    UCharToPseudo[0x2A] = '*';
+        pseudoToUChar['+'] = 0x002B;    UCharToPseudo[0x2B] = '+';
+        pseudoToUChar[','] = 0x002C;    UCharToPseudo[0x2C] = ',';
+        pseudoToUChar['-'] = 0x002D;    UCharToPseudo[0x2D] = '-';
+        pseudoToUChar['.'] = 0x002E;    UCharToPseudo[0x2E] = '.';
+        pseudoToUChar['/'] = 0x002F;    UCharToPseudo[0x2F] = '/';
+        pseudoToUChar[':'] = 0x003A;    UCharToPseudo[0x3A] = ':';
+        pseudoToUChar[';'] = 0x003B;    UCharToPseudo[0x3B] = ';';
+        pseudoToUChar['<'] = 0x003C;    UCharToPseudo[0x3C] = '<';
+        pseudoToUChar['='] = 0x003D;    UCharToPseudo[0x3D] = '=';
+        pseudoToUChar['>'] = 0x003E;    UCharToPseudo[0x3E] = '>';
+        pseudoToUChar['?'] = 0x003F;    UCharToPseudo[0x3F] = '?';
+        pseudoToUChar['\\']= 0x005C;    UCharToPseudo[0x5C] = '\\';
+        /* initialize specially used characters */
+        pseudoToUChar['`'] = 0x0300;    UCharToPseud2[0x00] = '`';  /* NSM */
+        pseudoToUChar['@'] = 0x200E;    UCharToPseud2[0x0E] = '@';  /* LRM */
+        pseudoToUChar['&'] = 0x200F;    UCharToPseud2[0x0F] = '&';  /* RLM */
+        pseudoToUChar['_'] = 0x001F;    UCharToPseudo[0x1F] = '_';  /* S   */
+        pseudoToUChar['|'] = 0x2029;    UCharToPseud2[0x29] = '|';  /* B   */
+        pseudoToUChar['['] = 0x202A;    UCharToPseud2[0x2A] = '[';  /* LRE */
+        pseudoToUChar[']'] = 0x202B;    UCharToPseud2[0x2B] = ']';  /* RLE */
+        pseudoToUChar['^'] = 0x202C;    UCharToPseud2[0x2C] = '^';  /* PDF */
+        pseudoToUChar['{'] = 0x202D;    UCharToPseud2[0x2D] = '{';  /* LRO */
+        pseudoToUChar['}'] = 0x202E;    UCharToPseud2[0x2E] = '}';  /* RLO */
+        pseudoToUChar['~'] = 0x007F;    UCharToPseudo[0x7F] = '~';  /* BN  */
+        /* initialize western digits */
+        for (i = 0, uchar = 0x0030; i < 6; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseudo[uchar & 0x00ff] = c;
+        }
+        /* initialize Hindi digits */
+        for (i = 6, uchar = 0x0666; i < 10; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseud2[uchar & 0x00ff] = c;
+        }
+        /* initialize Arabic letters */
+        for (i = 10, uchar = 0x0631; i < 16; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseud2[uchar & 0x00ff] = c;
+        }
+        /* initialize Hebrew letters */
+        for (i = 16, uchar = 0x05D7; i < 32; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseud2[uchar & 0x00ff] = c;
+        }
+        /* initialize Unassigned code points */
+        for (i = 32, uchar = 0x08D0; i < 36; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseud2[uchar & 0x00ff] = c;
+        }
+        /* initialize Latin lower case letters */
+        for (i = 36, uchar = 0x0061; i < 62; i++, uchar++) {
+            c = columns[i];
+            pseudoToUChar[c] = uchar;
+            UCharToPseudo[uchar & 0x00ff] = c;
+        }
+        tablesInitialized = true;
+    }
+
+    /*----------------------------------------------------------------------*/
+
+    static String pseudoToU16(String input)
+    /*  This function converts a pseudo-Bidi string into a char string.
+        It returns the char string.
+    */
+    {
+        int len = input.length();
+        char[] output = new char[len];
+        int i;
+        if (!tablesInitialized) {
+            buildPseudoTables();
+        }
+        for (i = 0; i < len; i++)
+            output[i] = pseudoToUChar[input.charAt(i)];
+        return new String(output);
+    }
+
+    /*----------------------------------------------------------------------*/
+
+    static String u16ToPseudo(String input)
+    /*  This function converts a char string into a pseudo-Bidi string.
+        It returns the pseudo-Bidi string.
+    */
+    {
+        int len = input.length();
+        char[] output = new char[len];
+        int i;
+        char uchar;
+        if (!tablesInitialized) {
+            buildPseudoTables();
+        }
+        for (i = 0; i < len; i++)
+        {
+            uchar = input.charAt(i);
+            output[i] = uchar < 0x0100 ? UCharToPseudo[uchar] :
+                                         UCharToPseud2[uchar & 0x00ff];
+        }
+        return new String(output);
+    }
+
+    void errcont(String message) {
+        msg(message, ERR, false, false);
+    }
+
+    void errcontln(String message) {
+        msg(message, ERR, false, true);
+    }
+
+    void printCaseInfo(Bidi bidi, String src, String dst)
+    {
+        int length = bidi.getProcessedLength();
+        byte[] levels = bidi.getLevels();
+        char[] levelChars  = new char[length];
+        byte lev;
+        int runCount = bidi.countRuns();
+        errcontln("========================================");
+        errcontln("Processed length: " + length);
+        for (int i = 0; i < length; i++) {
+            lev = levels[i];
+            if (lev < 0) {
+                levelChars[i] = '-';
+            } else if (lev < columns.length) {
+                levelChars[i] = columns[lev];
+            } else {
+                levelChars[i] = '+';
+            }
+        }
+        errcontln("Levels: " + new String(levelChars));
+        errcontln("Source: " + src);
+        errcontln("Result: " + dst);
+        errcontln("Direction: " + bidi.getDirection());
+        errcontln("paraLevel: " + Byte.toString(bidi.getParaLevel()));
+        errcontln("reorderingMode: " + modeToString(bidi.getReorderingMode()));
+        errcontln("reorderingOptions: " + spOptionsToString(bidi.getReorderingOptions()));
+        errcont("Runs: " + runCount + " => logicalStart.length/level: ");
+        for (int i = 0; i < runCount; i++) {
+            BidiRun run;
+            run = bidi.getVisualRun(i);
+            errcont(" " + run.getStart() + "." + run.getLength() + "/" +
+                    run.getEmbeddingLevel());
+        }
+        errcont("\n");
+    }
+
+    static final String mates1 = "<>()[]{}";
+    static final String mates2 = "><)(][}{";
+    static final char[] mates1Chars = mates1.toCharArray();
+    static final char[] mates2Chars = mates2.toCharArray();
+
+    boolean matchingPair(Bidi bidi, int i, char c1, char c2)
+    {
+        if (c1 == c2) {
+            return true;
+        }
+        /* For REORDER_RUNS_ONLY, it would not be correct to check levels[i],
+           so we use the appropriate run's level, which is good for all cases.
+         */
+        if (bidi.getLogicalRun(i).getDirection() == 0) {
+            return false;
+        }
+        for (int k = 0; k < mates1Chars.length; k++) {
+            if ((c1 == mates1Chars[k]) && (c2 == mates2Chars[k])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    boolean checkWhatYouCan(Bidi bidi, String src, String dst)
+    {
+        int i, idx, logLimit, visLimit;
+        boolean testOK, errMap, errDst;
+        char[] srcChars = src.toCharArray();
+        char[] dstChars = dst.toCharArray();
+        int[] visMap = bidi.getVisualMap();
+        int[] logMap = bidi.getLogicalMap();
+
+        testOK = true;
+        errMap = errDst = false;
+        logLimit = bidi.getProcessedLength();
+        visLimit = bidi.getResultLength();
+        if (visLimit > dstChars.length) {
+            visLimit = dstChars.length;
+        }
+        char[] accumSrc = new char[logLimit];
+        char[] accumDst = new char[visLimit];
+        Arrays.fill(accumSrc, '?');
+        Arrays.fill(accumDst, '?');
+
+        if (logMap.length != logLimit) {
+            errMap = true;
+        }
+        for (i = 0; i < logLimit; i++) {
+            idx = bidi.getVisualIndex(i);
+            if (idx != logMap[i]) {
+                errMap = true;
+            }
+            if (idx == Bidi.MAP_NOWHERE) {
+                continue;
+            }
+            if (idx >= visLimit) {
+                continue;
+            }
+            accumDst[idx] = srcChars[i];
+            if (!matchingPair(bidi, i, srcChars[i], dstChars[idx])) {
+                errDst = true;
+            }
+        }
+        if (errMap) {
+            if (testOK) {
+                printCaseInfo(bidi, src, dst);
+                testOK = false;
+            }
+            errln("Mismatch between getLogicalMap() and getVisualIndex()");
+            errcont("Map    :" + valueOf(logMap));
+            errcont("\n");
+            errcont("Indexes:");
+            for (i = 0; i < logLimit; i++) {
+                errcont(" " + bidi.getVisualIndex(i));
+            }
+            errcont("\n");
+        }
+        if (errDst) {
+            if (testOK) {
+                printCaseInfo(bidi, src, dst);
+                testOK = false;
+            }
+            errln("Source does not map to Result");
+            errcontln("We got: " + new String(accumDst));
+        }
+
+        errMap = errDst = false;
+        if (visMap.length != visLimit) {
+            errMap = true;
+        }
+        for (i = 0; i < visLimit; i++) {
+            idx = bidi.getLogicalIndex(i);
+            if (idx != visMap[i]) {
+                errMap = true;
+            }
+            if (idx == Bidi.MAP_NOWHERE) {
+                continue;
+            }
+            if (idx >= logLimit) {
+                continue;
+            }
+            accumSrc[idx] = dstChars[i];
+            if (!matchingPair(bidi, idx, srcChars[idx], dstChars[i])) {
+                errDst = true;
+            }
+        }
+        if (errMap) {
+            if (testOK) {
+                printCaseInfo(bidi, src, dst);
+                testOK = false;
+            }
+            errln("Mismatch between getVisualMap() and getLogicalIndex()");
+            errcont("Map    :" + valueOf(visMap));
+            errcont("\n");
+            errcont("Indexes:");
+            for (i = 0; i < visLimit; i++) {
+                errcont(" " + bidi.getLogicalIndex(i));
+            }
+            errcont("\n");
+        }
+        if (errDst) {
+            if (testOK) {
+                printCaseInfo(bidi, src, dst);
+                testOK = false;
+            }
+            errln("Result does not map to Source");
+            errcontln("We got: " + new String(accumSrc));
+        }
+        return testOK;
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestAll.java b/src/com/ibm/icu/dev/test/bidi/TestAll.java
new file mode 100644
index 0000000..e5ec5eb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestAll.java
@@ -0,0 +1,44 @@
+//##header J2SE15
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "com.ibm.icu.dev.test.bidi.TestCharFromDirProp",
+                  "com.ibm.icu.dev.test.bidi.TestBidi",
+                  "com.ibm.icu.dev.test.bidi.TestInverse",
+                  "com.ibm.icu.dev.test.bidi.TestReorder",
+                  "com.ibm.icu.dev.test.bidi.TestFailureRecovery",
+                  "com.ibm.icu.dev.test.bidi.TestMultipleParagraphs",
+                  "com.ibm.icu.dev.test.bidi.TestReorderingMode",
+                  "com.ibm.icu.dev.test.bidi.TestReorderRunsOnly",
+                  "com.ibm.icu.dev.test.bidi.TestStreaming",
+                  "com.ibm.icu.dev.test.bidi.TestClassOverride",
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                  "com.ibm.icu.dev.test.bidi.TestCompatibility",
+//#endif
+              },
+              "Bidi tests");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "Bidi";
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestBidi.java b/src/com/ibm/icu/dev/test/bidi/TestBidi.java
new file mode 100644
index 0000000..84cfc47
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestBidi.java
@@ -0,0 +1,532 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.text.Bidi;
+import com.ibm.icu.text.BidiRun;
+
+/**
+ * Regression test for Bidi class override.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestBidi extends BidiTest {
+
+    private static final int MAXLEN = 256;
+    private static final String levelString = "............................";
+
+    public void testBidi() {
+        Bidi bidi;
+        Bidi bidiLine;
+
+        logln("\nEntering TestBidi");
+        bidi = new Bidi(MAXLEN, 0);
+        bidiLine = new Bidi();
+
+        doTests(bidi, bidiLine, false);
+        doTests(bidi, bidiLine, true);
+        doMisc();
+        logln("\nExiting TestBidi");
+    }
+
+    private void doTests(Bidi bidi, Bidi bidiLine, boolean countRunsFirst) {
+        int testNumber;
+        String string;
+        int lineStart;
+        byte paraLevel;
+        int bidiTestCount = TestData.testCount();
+
+        for (testNumber = 0; testNumber < bidiTestCount; ++testNumber) {
+            TestData test = TestData.getTestData(testNumber);
+            string = getStringFromDirProps(test.dirProps);
+            paraLevel = test.paraLevel;
+            try {
+                bidi.setPara(string, paraLevel, null);
+                logln("Bidi.setPara(tests[" + testNumber + "] OK, direction "
+                        + bidi.getDirection() + " paraLevel "
+                        + paraLevel);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "] failed, direction "
+                        + bidi.getDirection() + " paraLevel "
+                        + paraLevel);
+            }
+            lineStart = test.lineStart;
+            if (lineStart == -1) {
+                doTest(bidi, testNumber, test, 0, countRunsFirst);
+            } else {
+                try {
+                    bidiLine = bidi.setLine(lineStart, test.lineLimit);
+                    logln("Bidi.setLine(" + lineStart + ", " + test.lineLimit
+                            + "), in tests[" + testNumber + "] OK, direction "
+                            + bidiLine.getDirection() + " paraLevel "
+                            + bidiLine.getBaseLevel());
+                    doTest(bidiLine, testNumber, test, lineStart, countRunsFirst);
+                } catch (Exception e)  {
+                    errln("Bidi.setLine(" + lineStart + ", " + test.lineLimit
+                            + "), in runAll test[" + testNumber + "] failed");
+                }
+                /* do it again using createLineBidi instead of setLine */
+                try {
+                    bidiLine = bidi.createLineBidi(lineStart, test.lineLimit);
+                    logln("Bidi.createLineBidi(" + lineStart + ", " + test.lineLimit
+                            + "), in tests[" + testNumber + "] OK, direction "
+                            + bidiLine.getDirection() + " paraLevel "
+                            + bidiLine.getBaseLevel());
+                    doTest(bidiLine, testNumber, test, lineStart, countRunsFirst);
+                } catch (Exception e)  {
+                    errln("Bidi.createLineBidi(" + lineStart + ", " + test.lineLimit
+                            + "), in runAll test[" + testNumber + "] failed");
+                }
+            }
+        }
+    }
+
+    private void doTest(Bidi bidi, int testNumber, TestData test,
+                        int lineStart, boolean countRunsFirst) {
+        short[] dirProps = test.dirProps;
+        byte[] levels = test.levels;
+        int[] visualMap = test.visualMap;
+        int i, len = bidi.getLength(), logicalIndex = -1, runCount = 0;
+        byte level, level2;
+
+        if (countRunsFirst) {
+            logln("Calling Bidi.countRuns() first.");
+            try {
+                runCount = bidi.countRuns();
+            } catch (IllegalStateException e) {
+                errln("Bidi.countRuns(test[" + testNumber + "]) failed");
+            }
+        } else {
+            logln("Calling Bidi.getLogicalMap() first.");
+        }
+
+        _testReordering(bidi, testNumber);
+
+        for (i = 0; i < len; ++i) {
+            logln(i + "  " + bidi.getLevelAt(i) + "  " + levelString
+                    + TestData.dirPropNames[dirProps[lineStart + i]] + "  "
+                    + bidi.getVisualIndex(i));
+        }
+
+        log("\n-----levels:");
+        for (i = 0; i < len; ++i) {
+            if (i > 0) {
+                log(",");
+            }
+            log(" " + bidi.getLevelAt(i));
+        }
+
+        log("\n--reordered:");
+        for (i = 0; i < len; ++i) {
+            if (i > 0) {
+                log(",");
+            }
+            log(" " + bidi.getVisualIndex(i));
+        }
+        log("\n");
+
+        assertEquals("\nFailure in Bidi.getDirection(test[" + testNumber + "])",
+                     test.direction, bidi.getDirection());
+        assertEquals("\nFailure in Bidi.getParaLevel(test[" + testNumber + "])",
+                     test.resultLevel, bidi.getParaLevel());
+
+        for (i = 0; i < len; ++i) {
+            assertEquals("\nFailure in Bidi.getLevelAt(" + i +
+                         ") in test[" + testNumber + "]",
+                         levels[i], bidi.getLevelAt(i));
+        }
+
+        for (i = 0; i < len; ++i) {
+            try {
+                logicalIndex = bidi.getVisualIndex(i);
+            } catch (Throwable th) {
+                errln("Bidi.getVisualIndex(" + i + ") in test[" + testNumber
+                        + "] failed");
+            }
+            if(visualMap[i] != logicalIndex) {
+                assertEquals("\nFailure in Bidi.getVisualIndex(" + i +
+                             ") in test[" + testNumber + "])",
+                             visualMap[i], logicalIndex);
+            }
+        }
+
+        if (!countRunsFirst) {
+            try {
+                runCount = bidi.countRuns();
+            } catch (IllegalStateException e) {
+                errln("Bidi.countRuns(test[" + testNumber + "]) failed");
+            }
+        }
+
+        BidiRun run;
+
+        for (logicalIndex = 0; logicalIndex < len; ) {
+            level = bidi.getLevelAt(logicalIndex);
+            run = bidi.getLogicalRun(logicalIndex);
+            logicalIndex = run.getLimit();
+            level2 = run.getEmbeddingLevel();
+            assertEquals("Logical " + run.toString() +
+                         " in test[" + testNumber + "]: wrong level",
+                         level, level2);
+            if (--runCount < 0) {
+                errln("Bidi.getLogicalRun(test[" + testNumber
+                      + "]): wrong number of runs compared to Bidi.countRuns() = "
+                      + bidi.countRuns());
+            }
+        }
+        if (runCount != 0) {
+            errln("Bidi.getLogicalRun(test[" + testNumber
+                    + "]): wrong number of runs compared to Bidi.countRuns() = "
+                    + bidi.countRuns());
+        }
+
+        log("\n\n");
+    }
+
+    private void _testReordering(Bidi bidi, int testNumber) {
+        int[] logicalMap1;
+        int[] logicalMap2;
+        int[] logicalMap3;
+        int[] visualMap1;
+        int[] visualMap2;
+        int[] visualMap3;
+        int[] visualMap4 = new int[MAXLEN];
+        byte[] levels;
+        int i, length = bidi.getLength(),
+               destLength = bidi.getResultLength();
+        int runCount, visualIndex, logicalIndex = -1, logicalStart, runLength;
+        boolean odd;
+
+        if(length <= 0) {
+            return;
+        }
+        /* get the logical and visual maps from the object */
+        logicalMap1 = bidi.getLogicalMap();
+        if (logicalMap1 == null) {
+            errln("getLogicalMap in test " + testNumber + " is null");
+            logicalMap1 = new int[0];
+        }
+
+        visualMap1 = bidi.getVisualMap();
+
+        if (visualMap1 == null) {
+            errln("getVisualMap() in test " + testNumber + " is null");
+            visualMap1 = new int[0];
+        }
+
+        /* invert them both */
+        visualMap2 = Bidi.invertMap(logicalMap1);
+        logicalMap2 = Bidi.invertMap(visualMap1);
+
+        /* get them from the levels array, too */
+        levels = bidi.getLevels();
+
+        if (levels == null || levels.length != length) {
+            errln("getLevels() in test " + testNumber + " failed");
+        }
+
+        logicalMap3 = Bidi.reorderLogical(levels);
+        visualMap3 = Bidi.reorderVisual(levels);
+
+        /* get the visual map from the runs, too */
+        try {
+            runCount = bidi.countRuns();
+        } catch (IllegalStateException e) {
+            errln("countRuns() in test " + testNumber + " failed");
+            runCount = 0;
+        }
+
+        logln("\n---- " + runCount + " runs");
+        visualIndex = 0;
+        BidiRun run;
+        for (i = 0; i < runCount; ++i) {
+            run = bidi.getVisualRun(i);
+            if (run == null) {
+                errln("null visual run encountered at index " + i +
+                      ", in test " + testNumber);
+                continue;
+            }
+            odd = run.isOddRun();
+            logicalStart = run.getStart();
+            runLength = run.getLength();
+            log("(" + (run.isOddRun() ? "R" : "L"));
+            log(" @" + run.getStart() + '[' + run.getLength() + "])\n");
+            if (!odd) {
+                do {    /* LTR */
+                    visualMap4[visualIndex++] = logicalStart++;
+                } while (--runLength > 0);
+            } else {
+                logicalStart += runLength;  /* logicalLimit */
+                do {    /* RTL */
+                    visualMap4[visualIndex++] = --logicalStart;
+                } while (--runLength > 0);
+            }
+        }
+        log("\n");
+
+        /* print all the maps */
+        logln("logical maps:");
+        for (i = 0; i < length; ++i) {
+            log(logicalMap1[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < length; ++i) {
+            log(logicalMap2[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < length; ++i) {
+            log(logicalMap3[i] + " ");
+        }
+
+        log("\nvisual maps:\n");
+        for (i = 0; i < destLength; ++i) {
+            log(visualMap1[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < destLength; ++i) {
+            log(visualMap2[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < length; ++i) {
+            log(visualMap3[i] + " ");
+        }
+        log("\n");
+        for (i = 0; i < length; ++i) {
+            log(visualMap4[i] + " ");
+        }
+        log("\n");
+
+        /* check that the indexes are the same between these and Bidi.getLogical/VisualIndex() */
+        for (i = 0; i < length; ++i) {
+            if (logicalMap1[i] != logicalMap2[i]) {
+                errln("Error in tests[" + testNumber + "]: (logicalMap1[" + i +
+                      "] == " + logicalMap1[i] + ") != (logicalMap2[" + i +
+                      "] == " + logicalMap2[i] + ")");
+            }
+            if (logicalMap1[i] != logicalMap3[i]) {
+                errln("Error in tests[" + testNumber + "]: (logicalMap1[" + i +
+                      "] == " + logicalMap1[i] + ") != (logicalMap3[" + i +
+                      "] == " + logicalMap3[i] + ")");
+            }
+            if (visualMap1[i] != visualMap2[i]) {
+                errln("Error in tests[" + testNumber + "]: (visualMap1[" + i +
+                      "] == " + visualMap1[i] + ") != (visualMap2[" + i +
+                      "] == " + visualMap2[i] + ")");
+            }
+            if (visualMap1[i] != visualMap3[i]) {
+                errln("Error in tests[" + testNumber + "]: (visualMap1[" + i +
+                      "] == " + visualMap1[i] + ") != (visualMap3[" + i +
+                      "] == " + visualMap3[i] + ")");
+            }
+            if (visualMap1[i] != visualMap4[i]) {
+                errln("Error in tests[" + testNumber + "]: (visualMap1[" + i +
+                      "] == " + visualMap1[i] + ") != (visualMap4[" + i +
+                      "] == " + visualMap4[i] + ")");
+            }
+            try {
+                visualIndex = bidi.getVisualIndex(i);
+            } catch (Exception e) {
+                errln("Bidi.getVisualIndex(" + i + ") failed in tests[" +
+                      testNumber + "]");
+            }
+            if (logicalMap1[i] != visualIndex) {
+                errln("Error in tests[" + testNumber + "]: (logicalMap1[" + i +
+                      "] == " + logicalMap1[i] + ") != (Bidi.getVisualIndex(" + i +
+                      ") == " + visualIndex + ")");
+            }
+            try {
+                logicalIndex = bidi.getLogicalIndex(i);
+            } catch (Exception e) {
+                errln("Bidi.getLogicalIndex(" + i + ") failed in tests[" +
+                      testNumber + "]");
+            }
+            if (visualMap1[i] != logicalIndex) {
+                errln("Error in tests[" + testNumber + "]: (visualMap1[" + i +
+                      "] == " + visualMap1[i] + ") != (Bidi.getLogicalIndex(" + i +
+                      ") == " + logicalIndex + ")");
+            }
+        }
+    }
+
+    private String getStringFromDirProps(short[] dirProps) {
+        int i;
+
+        if (dirProps == null) {
+            return null;
+        }
+        int length = dirProps.length;
+        char[] buffer = new char[length];
+
+        /* this part would have to be modified for UTF-x */
+        for (i = 0; i < length; ++i) {
+            buffer[i] = charFromDirProp[dirProps[i]];
+        }
+        return new String(buffer);
+    }
+
+    private void doMisc() {
+    /* Miscellaneous tests to exercize less popular code paths */
+        Bidi bidi = new Bidi(120, 66), bidiLine;
+
+        assertEquals("\nwriteReverse should return an empty string",
+                     "", Bidi.writeReverse("", 0));
+
+        bidi.setPara("", Bidi.LTR, null);
+        assertEquals("\nwriteReordered should return an empty string",
+                     "", bidi.writeReordered(0));
+
+        bidi.setPara("abc", Bidi.LTR, null);
+        assertEquals("\ngetRunStart should return 0",
+                     0, bidi.getRunStart(0));
+        assertEquals("\ngetRunLimit should return 3",
+                     3, bidi.getRunLimit(0));
+
+        bidi.setPara("abc          ", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        for (int i = 3; i < 6; i++) {
+            assertEquals("\nTrailing space at " + i + " should get paragraph level",
+                         Bidi.RTL, bidiLine.getLevelAt(i));
+        }
+
+        bidi.setPara("abc       def", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        for (int i = 3; i < 6; i++) {
+            assertEquals("\nTrailing space at " + i + " should get paragraph level",
+                         Bidi.RTL, bidiLine.getLevelAt(i));
+        }
+
+        bidi.setPara("abcdefghi    ", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        for (int i = 3; i < 6; i++) {
+            assertEquals("\nTrailing char at " + i + " should get level 2",
+                         2, bidiLine.getLevelAt(i));
+        }
+
+        bidi.setReorderingOptions(Bidi.OPTION_REMOVE_CONTROLS);
+        bidi.setPara("\u200eabc       def", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        assertEquals("\nWrong result length", 5, bidiLine.getResultLength());
+
+        bidi.setPara("abcdefghi", Bidi.LTR, null);
+        bidiLine = bidi.setLine(0, 6);
+        assertEquals("\nWrong direction #1", Bidi.LTR, bidiLine.getDirection());
+
+        bidi.setPara("", Bidi.LTR, null);
+        byte[] levels = bidi.getLevels();
+        assertEquals("\nWrong number of level elements", 0, levels.length);
+        assertEquals("\nWrong number of runs #1", 0, bidi.countRuns());
+
+        bidi.setPara("          ", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        assertEquals("\nWrong number of runs #2", 1, bidiLine.countRuns());
+
+        bidi.setPara("a\u05d0        bc", Bidi.RTL, null);
+        bidiLine = bidi.setLine(0, 6);
+        assertEquals("\nWrong direction #2", Bidi.MIXED, bidi.getDirection());
+        assertEquals("\nWrong direction #3", Bidi.MIXED, bidiLine.getDirection());
+        assertEquals("\nWrong number of runs #3", 2, bidiLine.countRuns());
+
+        int[] map = Bidi.reorderLogical(null);
+        assertTrue("\nWe should have got a null map #1", map == null);
+        map = Bidi.reorderLogical(new byte[] {0,99,99});
+        assertTrue("\nWe should have got a null map #2", map == null);
+        map = Bidi.reorderVisual(null);
+        assertTrue("\nWe should have got a null map #3", map == null);
+
+        map = Bidi.invertMap(null);
+        assertTrue("\nWe should have got a null map #4", map == null);
+        map = Bidi.invertMap(new int[] {0,1,-1,5,4});
+        assertTrue("\nUnexpected inverted Map",
+                   Arrays.equals(map, new int[] {0,1,-1,-1,4,3}));
+
+        bidi.setPara("", Bidi.LTR, null);
+        map = bidi.getLogicalMap();
+        assertTrue("\nMap should have length==0 #1", map.length == 0);
+        map = bidi.getVisualMap();
+        assertTrue("\nMap should have length==0 #2", map.length == 0);
+
+        /* test BidiRun.toString and allocation of run memory > 1 */
+        bidi.setPara("abc", Bidi.LTR, null);
+        assertEquals("\nWrong run display", "BidiRun 0 - 3 @ 0",
+                     bidi.getLogicalRun(0).toString());
+
+        /* test REMOVE_BIDI_CONTROLS together with DO_MIRRORING */
+        bidi.setPara("abc\u200e", Bidi.LTR, null);
+        String out = bidi.writeReordered(Bidi.REMOVE_BIDI_CONTROLS | Bidi.DO_MIRRORING);
+        assertEquals("\nWrong result #1", "abc", out);
+
+        /* test inverse Bidi with marks and contextual orientation */
+        bidi.setReorderingMode(Bidi.REORDER_INVERSE_LIKE_DIRECT);
+        bidi.setReorderingOptions(Bidi.OPTION_INSERT_MARKS);
+        bidi.setPara("", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #2", "", out);
+        bidi.setPara("   ", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #3", "   ", out);
+        bidi.setPara("abc", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #4", "abc", out);
+        bidi.setPara("\u05d0\u05d1", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #5", "\u05d1\u05d0", out);
+        bidi.setPara("abc \u05d0\u05d1", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #6", "\u05d1\u05d0 abc", out);
+        bidi.setPara("\u05d0\u05d1 abc", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #7", "\u200fabc \u05d1\u05d0", out);
+        bidi.setPara("\u05d0\u05d1 abc .-=", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #8", "\u200f=-. abc \u05d1\u05d0", out);
+        bidi.orderParagraphsLTR(true);
+        bidi.setPara("\n\r   \n\rabc\n\u05d0\u05d1\rabc \u05d2\u05d3\n\r" +
+                     "\u05d4\u05d5 abc\n\u05d6\u05d7 abc .-=\r\n" +
+                     "-* \u05d8\u05d9 abc .-=", Bidi.LEVEL_DEFAULT_RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #9",
+                     "\n\r   \n\rabc\n\u05d1\u05d0\r\u05d3\u05d2 abc\n\r" +
+                     "\u200fabc \u05d5\u05d4\n\u200f=-. abc \u05d7\u05d6\r\n" +
+                     "\u200f=-. abc \u05d9\u05d8 *-", out);
+
+        bidi.setPara("\u05d0 \t", Bidi.LTR, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #10", "\u05D0\u200e \t", out);
+        bidi.setPara("\u05d0 123 \t\u05d1 123 \u05d2", Bidi.LTR, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #11", "\u05d0 \u200e123\u200e \t\u05d2 123 \u05d1", out);
+        bidi.setPara("\u05d0 123 \u0660\u0661 ab", Bidi.LTR, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #12", "\u05d0 \u200e123 \u200e\u0660\u0661 ab", out);
+        bidi.setPara("ab \t", Bidi.RTL, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nWrong result #13", "\u200f\t ab", out);
+
+        /* check exceeding para level */
+        bidi = new Bidi();
+        bidi.setPara("A\u202a\u05d0\u202aC\u202c\u05d1\u202cE", (byte)(Bidi.MAX_EXPLICIT_LEVEL - 1), null);
+        assertEquals("\nWrong level at index 2", 61, bidi.getLevelAt(2));
+
+        /* check 1-char runs with RUNS_ONLY */
+        bidi.setReorderingMode(Bidi.REORDER_RUNS_ONLY);
+        bidi.setPara("a \u05d0 b \u05d1 c \u05d2 d ", Bidi.LTR, null);
+        assertEquals("\nWrong number of runs #4", 14, bidi.countRuns());
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestBidi().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java b/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java
new file mode 100644
index 0000000..966c0d5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java
@@ -0,0 +1,44 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * Regression test for Bidi charFromDirProp
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestCharFromDirProp extends BidiTest {
+
+    /* verify that the exemplar characters have the expected bidi classes */
+    public void testCharFromDirProp() {
+
+        logln("\nEntering TestCharFromDirProp");
+        int i = UCharacterDirection.CHAR_DIRECTION_COUNT;
+        while (i-- > 0) {
+            char c = charFromDirProp[i];
+            int dir = UCharacter.getDirection(c);
+            assertEquals("UCharacter.getDirection(TestData.charFromDirProp[" + i
+                    + "] == U+" + Utility.hex(c) + ") failed", i, dir);
+        }
+        logln("\nExiting TestCharFromDirProp");
+    }
+
+    public static void main(String[] args) {
+        try {
+            new TestCharFromDirProp().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java b/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
new file mode 100644
index 0000000..1c396f7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
@@ -0,0 +1,144 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+import com.ibm.icu.text.BidiClassifier;
+
+/**
+ * Regression test for Bidi class override.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestClassOverride extends BidiTest {
+
+    private static final int DEF = TestData.DEF;
+    private static final int L   = TestData.L;
+    private static final int R   = TestData.R;
+    private static final int AL  = TestData.AL;
+    private static final int AN  = TestData.AN;
+    private static final int EN  = TestData.EN;
+    private static final int LRE = TestData.LRE;
+    private static final int RLE = TestData.RLE;
+    private static final int LRO = TestData.LRO;
+    private static final int RLO = TestData.RLO;
+    private static final int PDF = TestData.PDF;
+    private static final int NSM = TestData.NSM;
+    private static final int B   = TestData.B;
+    private static final int S   = TestData.S;
+    private static final int BN  = TestData.BN;
+
+    private static final int[] customClasses = {
+    /*  0/8    1/9    2/A    3/B    4/C    5/D    6/E    7/F  */
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //00-07
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //08-0F
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //10-17
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //18-1F
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,     R,   DEF, //20-27
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //28-2F
+         EN,    EN,    EN,    EN,    EN,    EN,    AN,    AN, //30-37
+         AN,    AN,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //38-3F
+          L,    AL,    AL,    AL,    AL,    AL,    AL,     R, //40-47
+          R,     R,     R,     R,     R,     R,     R,     R, //48-4F
+          R,     R,     R,     R,     R,     R,     R,     R, //50-57
+          R,     R,     R,   LRE,   DEF,   RLE,   PDF,     S, //58-5F
+        NSM,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //60-67
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //68-6F
+        DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF,   DEF, //70-77
+        DEF,   DEF,   DEF,   LRO,     B,   RLO,    BN,   DEF  //78-7F
+    };
+    static final int nEntries = customClasses.length;
+
+    static final String textIn  = "JIH.>12->a \u05d0\u05d1 6 ABC78";
+    static final String textOut = "12<.HIJ->a 78CBA 6 \u05d1\u05d0";
+
+    protected static class CustomClassifier extends BidiClassifier {
+
+        public CustomClassifier(Object context) {
+          super(context);
+        }
+        public int classify(int c) {
+            // some (meaningless) action - just for testing purposes
+            return (this.context != null ? ((Integer)context).intValue()
+                            : c >= nEntries ? super.classify(c)
+                            : customClasses[c]);
+        }
+    }
+
+    private void verifyClassifier(Bidi bidi) {
+        BidiClassifier actualClassifier = bidi.getCustomClassifier();
+
+        if (this.classifier == null) {
+            if (actualClassifier != null) {
+                errln("Bidi classifier is not yet set, but reported as not null");
+            }
+        } else {
+            Class expectedClass = this.classifier.getClass();
+            assertTrue("null Bidi classifier", actualClassifier != null);
+            if (actualClassifier == null) {
+                return;
+            }
+            if (expectedClass.isInstance(actualClassifier)) {
+                Object context = classifier.getContext();
+                if (context == null) {
+                    if (actualClassifier.getContext() != null) {
+                        errln("Unexpected context, should be null");
+                    }
+                } else {
+                    assertEquals("Unexpected classifier context", context,
+                                 actualClassifier.getContext());
+                    assertEquals("Unexpected context's content",
+                                 ((Integer)context).intValue(),
+                                 bidi.getCustomizedClass('a'));
+                }
+            } else {
+                errln("Bidi object reports classifier is an instance of " +
+                      actualClassifier.getClass().getName() +
+                      ",\nwhile the expected classifier should be an " +
+                      "instance of " + expectedClass);
+            }
+        }
+    }
+
+    CustomClassifier classifier = null;
+
+    public void testClassOverride()
+    {
+        Bidi bidi;
+
+        logln("\nEntering TestClassOverride\n");
+
+        bidi = new Bidi();
+        verifyClassifier(bidi);
+
+        classifier = new CustomClassifier(new Integer(TestData.R));
+        bidi.setCustomClassifier(classifier);
+        verifyClassifier(bidi);
+
+        classifier.setContext(null);
+        verifyClassifier(bidi);
+
+        bidi.setPara(textIn, Bidi.LTR, null);
+
+        String out = bidi.writeReordered(Bidi.DO_MIRRORING);
+        assertEquals("Actual and expected output mismatch", textOut, out);
+
+        logln("\nExiting TestClassOverride\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestClassOverride().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java b/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
new file mode 100644
index 0000000..65c1b9a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
@@ -0,0 +1,297 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+import java.text.AttributedString;
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.awt.font.NumericShaper;
+
+/**
+ * Regression test for java.text.Bidi compatibility
+ *
+ * @author Matitiahu Allouche
+ */
+
+public class TestCompatibility extends BidiTest {
+
+    void compareBidi(Bidi bidi, java.text.Bidi jbidi)
+    {
+        byte paraLevel = bidi.getParaLevel();
+        if (bidi.baseIsLeftToRight() != jbidi.baseIsLeftToRight()) {
+            errln("Discrepancy in baseIsLeftToRight for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.baseIsLeftToRight() +
+                  "\n   jbidi: " + jbidi.baseIsLeftToRight());
+        }
+        if (bidi.getBaseLevel() != jbidi.getBaseLevel()) {
+            errln("Discrepancy in getBaseLevel for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.getBaseLevel() +
+                  "\n   jbidi: " + jbidi.getBaseLevel());
+        }
+        if (bidi.getLength() != jbidi.getLength()) {
+            errln("Discrepancy in getLength for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.getLength() +
+                  "\n   jbidi: " + jbidi.getLength());
+        }
+        int len = bidi.getLength();
+        for (int i = 0; i < len; i++) {
+            if (bidi.getLevelAt(i) != jbidi.getLevelAt(i)) {
+                errln("Discrepancy in getLevelAt for offset " + i +
+                      " of case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getLevelAt(i) +
+                      "\n   jbidi: " + jbidi.getLevelAt(i));
+            }
+        }
+        if (bidi.getRunCount() != jbidi.getRunCount()) {
+            if (!(len == 0 && jbidi.getRunCount() == 1)) {
+                errln("Discrepancy in getRunCount for case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getRunCount() +
+                      "\n   jbidi: " + jbidi.getRunCount());
+            }
+        }
+        int runCount = bidi.getRunCount();
+        for (int i = 0; i < runCount; i++) {
+            if (bidi.getRunLevel(i) != jbidi.getRunLevel(i)) {
+                errln("Discrepancy in getRunLevel for run " + i +
+                      " of case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getRunLevel(i) +
+                      "\n   jbidi: " + jbidi.getRunLevel(i));
+            }
+            if (bidi.getRunLimit(i) != jbidi.getRunLimit(i)) {
+                errln("Discrepancy in getRunLimit for run " + i +
+                      " of case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getRunLimit(i) +
+                      "\n   jbidi: " + jbidi.getRunLimit(i));
+            }
+            if (bidi.getRunStart(i) != jbidi.getRunStart(i)) {
+                errln("Discrepancy in getRunStart for run " + i +
+                      " of case " +
+                      "(level=" + paraLevel + "): " +
+                      u16ToPseudo(bidi.getTextAsString()) +
+                      "\n    bidi: " + bidi.getRunStart(i) +
+                      "\n   jbidi: " + jbidi.getRunStart(i));
+            }
+        }
+        if (bidi.isLeftToRight() != jbidi.isLeftToRight()) {
+            errln("Discrepancy in isLeftToRight for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.isLeftToRight() +
+                  "\n   jbidi: " + jbidi.isLeftToRight());
+        }
+        if (bidi.isMixed() != jbidi.isMixed()) {
+            errln("Discrepancy in isMixed for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.isMixed() +
+                  "\n   jbidi: " + jbidi.isMixed());
+        }
+        if (bidi.isRightToLeft() != jbidi.isRightToLeft()) {
+            errln("Discrepancy in isRightToLeft for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + bidi.isRightToLeft() +
+                  "\n   jbidi: " + jbidi.isRightToLeft());
+        }
+        char[] text = bidi.getText();
+        if (Bidi.requiresBidi(text, 0, text.length) !=
+            java.text.Bidi.requiresBidi(text, 0, text.length)) {
+            errln("Discrepancy in requiresBidi for case " +
+                  u16ToPseudo(bidi.getTextAsString()) +
+                  "\n    bidi: " + Bidi.requiresBidi(text, 0, text.length) +
+                  "\n   jbidi: " + java.text.Bidi.requiresBidi(text, 0, text.length));
+        }
+        /* skip the next test, since the toString implementation are
+         * not compatible
+        if (!bidi.toString().equals(jbidi.toString())) {
+            errln("Discrepancy in toString for case " +
+                  "(level=" + paraLevel + "): " +
+                  u16ToPseudo(bidi.getTextAsString() +
+                  "\n    bidi: " + bidi.toString() +
+                  "\n   jbidi: " + jbidi.toString()));
+        }
+         */
+    }
+
+    public void testCompatibility()
+    {
+        // This test case does not work well on Java 1.4/1.4.1 environment,
+        // because of insufficient Bidi implementation in these versions.
+        String javaVersion = System.getProperty("java.version");
+        if (javaVersion.startsWith("1.4.0") || javaVersion.startsWith("1.4.1")) {
+            logln("\nSkipping TestCompatibility.  The test case is known to fail on Java "
+                    + javaVersion + "\n");
+            return;
+        }
+        logln("\nEntering TestCompatibility\n");
+        /* check constant field values */
+        int val;
+        val = Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT;
+        val = Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT;
+        val = Bidi.DIRECTION_LEFT_TO_RIGHT;
+        val = Bidi.DIRECTION_RIGHT_TO_LEFT;
+        logln("last val = " + val);
+
+        String[] data = {"",
+                         /* the following 2 cases are skipped, because
+                          * java.text.Bidi has bugs which cause discrepancies
+                         "abc",
+                         "ABC",
+                          */
+                         "abc def",
+                         "ABC DEF",
+                         "abc 123 def",
+                         "ABC 123 DEF",
+                         "abc DEF ghi",
+                         "abc DEF 123 xyz",
+                         "abc GHIJ 12345 def KLM"
+                        };
+        int dataCnt = data.length;
+        Bidi bidi;
+        java.text.Bidi jbidi;
+        for (int i = 0; i < dataCnt; i++) {
+            String src = pseudoToU16(data[i]);
+            bidi = new Bidi(src, Bidi.DIRECTION_LEFT_TO_RIGHT);
+            jbidi = new java.text.Bidi(src, java.text.Bidi.DIRECTION_LEFT_TO_RIGHT);
+            compareBidi(bidi, jbidi);
+            bidi = new Bidi(src, Bidi.DIRECTION_RIGHT_TO_LEFT);
+            jbidi = new java.text.Bidi(src, java.text.Bidi.DIRECTION_RIGHT_TO_LEFT);
+            compareBidi(bidi, jbidi);
+            char[] chars = src.toCharArray();
+            bidi = new Bidi(chars, 0, null, 0, chars.length, Bidi.DIRECTION_LEFT_TO_RIGHT);
+            jbidi = new java.text.Bidi(chars, 0, null, 0, chars.length, java.text.Bidi.DIRECTION_LEFT_TO_RIGHT);
+            compareBidi(bidi, jbidi);
+        }
+        /* check bogus flags */
+        bidi = new Bidi("abc", 999);
+        assertEquals("\nDirection should be LTR", Bidi.LTR, bidi.getDirection());
+        /* check constructor with overriding embeddings */
+        bidi = new Bidi(new char[] { 's', 's', 's' }, 0,
+                        new byte[] {(byte) -7, (byte) -2, (byte) -3 },
+                        0, 3, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+        jbidi = new java.text.Bidi(new char[] { 's', 's', 's' }, 0,
+                        new byte[] {(byte) -7, (byte) -2, (byte) -3 },
+                        0, 3, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+
+        AttributedString as = new AttributedString("HEBREW 123 english MOREHEB");
+        as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
+        as.addAttribute(TextAttribute.NUMERIC_SHAPING, NumericShaper.getShaper(NumericShaper.ARABIC));
+        as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(1), 0, 26);
+        as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(-1), 0, 6);
+        as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(-1), 19, 26);
+        AttributedCharacterIterator aci = as.getIterator();
+        bidi = new Bidi(aci);
+        jbidi = new java.text.Bidi(aci);
+        compareBidi(bidi, jbidi);
+        String out = bidi.writeReordered(0);
+        logln("Output #1 of Bidi(AttributedCharacterIterator): " + out);
+
+        as = new AttributedString("HEBREW 123 english MOREHEB");
+        as.addAttribute(TextAttribute.RUN_DIRECTION, TextAttribute.RUN_DIRECTION_RTL);
+        as.addAttribute(TextAttribute.BIDI_EMBEDDING, new Integer(0), 0, 26);
+        aci = as.getIterator();
+        bidi = new Bidi(aci);
+        jbidi = new java.text.Bidi(aci);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output #2 of Bidi(AttributedCharacterIterator): " + out);
+
+        as = new AttributedString("HEBREW 123 english MOREHEB");
+        aci = as.getIterator();
+        bidi = new Bidi(aci);
+        jbidi = new java.text.Bidi(aci);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output #3 of Bidi(AttributedCharacterIterator): " + out);
+
+        char[] text = "abc==(123)==>def".toCharArray();
+        bidi = new Bidi(text, 3, null, 0, 10, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+        jbidi = new java.text.Bidi(text, 3, null, 0, 10, java.text.Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output of Bidi(abc==(123)==>def,3,null,0,10, DEFAULT_LTR): " + out);
+        bidi = new Bidi(text, 3, null, 0, 10, Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
+        jbidi = new java.text.Bidi(text, 3, null, 0, 10, java.text.Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output of Bidi(abc==(123)==>def,3,null,0,10, DEFAULT_RTL): " + out);
+        byte[] levels = new byte[] {0,0,0,-1,-1,-1,0,0,0,0};
+        bidi = new Bidi(text, 3, levels, 0, 10, Bidi.DIRECTION_LEFT_TO_RIGHT);
+        jbidi = new java.text.Bidi(text, 3, levels, 0, 10, java.text.Bidi.DIRECTION_LEFT_TO_RIGHT);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output of Bidi(abc==(123)==>def,3,levels,0,10, LTR): " + out);
+        bidi = new Bidi(text, 3, levels, 0, 10, Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
+        jbidi = new java.text.Bidi(text, 3, levels, 0, 10, java.text.Bidi.DIRECTION_DEFAULT_RIGHT_TO_LEFT);
+        compareBidi(bidi, jbidi);
+        out = bidi.writeReordered(0);
+        logln("Output of Bidi(abc==(123)==>def,3,levels,0,10, DEFAULT_RTL): " + out);
+
+        /* test reorderVisually */
+        byte[] myLevels = new byte[] {1,2,0,1,2,1,2,0,1,2};
+        Character[] objects = new Character[10];
+        levels = new byte[objects.length];
+        for (int i = 0; i < objects.length; i++) {
+            objects[i] = new Character((char)('a'+i));
+            levels[i] = myLevels[i];
+        }
+        Bidi.reorderVisually(levels, 3, objects, 3, 7);
+        String strbidi = "";
+        for (int i = 0; i < objects.length; i++) {
+            strbidi += objects[i].toString();
+        }
+        for (int i = 0; i < objects.length; i++) {
+            objects[i] = new Character((char)('a'+i));
+            levels[i] = myLevels[i];
+        }
+        java.text.Bidi.reorderVisually(levels, 3, objects, 3, 7);
+        String strjbidi = "";
+        for (int i = 0; i < objects.length; i++) {
+            strjbidi += objects[i].toString();
+        }
+        if (!strjbidi.equals(strbidi)) {
+            errln("Discrepancy in reorderVisually " +
+                  "\n      bidi: " + strbidi +
+                  "\n     jbidi: " + strjbidi);
+        } else {
+            logln("Correct match in reorderVisually " +
+                  "\n      bidi: " + strbidi +
+                  "\n     jbidi: " + strjbidi);
+        }
+
+        logln("\nExiting TestCompatibility\n");
+    }
+
+    public static void main(String[] args) {
+        try {
+            new TestCompatibility().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/bidi/TestData.java b/src/com/ibm/icu/dev/test/bidi/TestData.java
new file mode 100644
index 0000000..19ed4d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestData.java
@@ -0,0 +1,258 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.text.Bidi;
+
+
+/**
+ * Data and helper methods for Bidi regression tests
+ *
+ * Ported from C by Lina Kemmel, Matitiahu Allouche
+ *
+ */
+public class TestData {
+    protected static final int L   = UCharacterDirection.LEFT_TO_RIGHT;
+    protected static final int R   = UCharacterDirection.RIGHT_TO_LEFT;
+    protected static final int EN  = UCharacterDirection.EUROPEAN_NUMBER;
+    protected static final int ES  = UCharacterDirection.EUROPEAN_NUMBER_SEPARATOR;
+    protected static final int ET  = UCharacterDirection.EUROPEAN_NUMBER_TERMINATOR;
+    protected static final int AN  = UCharacterDirection.ARABIC_NUMBER;
+    protected static final int CS  = UCharacterDirection.COMMON_NUMBER_SEPARATOR;
+    protected static final int B   = UCharacterDirection.BLOCK_SEPARATOR;
+    protected static final int S   = UCharacterDirection.SEGMENT_SEPARATOR;
+    protected static final int WS  = UCharacterDirection.WHITE_SPACE_NEUTRAL;
+    protected static final int ON  = UCharacterDirection.OTHER_NEUTRAL;
+    protected static final int LRE = UCharacterDirection.LEFT_TO_RIGHT_EMBEDDING;
+    protected static final int LRO = UCharacterDirection.LEFT_TO_RIGHT_OVERRIDE;
+    protected static final int AL  = UCharacterDirection.RIGHT_TO_LEFT_ARABIC;
+    protected static final int RLE = UCharacterDirection.RIGHT_TO_LEFT_EMBEDDING;
+    protected static final int RLO = UCharacterDirection.RIGHT_TO_LEFT_OVERRIDE;
+    protected static final int PDF = UCharacterDirection.POP_DIRECTIONAL_FORMAT;
+    protected static final int NSM = UCharacterDirection.DIR_NON_SPACING_MARK;
+    protected static final int BN  = UCharacterDirection.BOUNDARY_NEUTRAL;
+    protected static final int DEF = Bidi.CLASS_DEFAULT;
+
+    protected static final String[] dirPropNames = {
+        "L", "R", "EN", "ES", "ET", "AN", "CS", "B", "S", "WS", "ON",
+        "LRE", "LRO", "AL", "RLE", "RLO", "PDF", "NSM", "BN"
+    };
+    protected static final short[][] testDirProps = {
+        { L, L, WS, L, WS, EN, L, B },                                          // 0
+        { R, AL, WS, R, AL, WS, R },                                            // 1
+        { L, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L },                         // 2
+        { L, AL, AL, AL, L, AL, AL, L, WS, EN, CS, WS, EN, CS, EN, WS, L, L },  // 3
+        { AL, R, AL, WS, EN, CS, WS, EN, CS, EN, WS, R, R, WS, L, L },          // 4
+        { R, EN, NSM, ET },                                                     // 5
+        { RLE, WS, R, R, R, WS, PDF, WS, B },                                   // 6
+        { LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
+            LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
+            LRE, LRE, LRE, AN, RLO, NSM, LRE, PDF, RLE, ES, EN, ON },           // 7
+        { LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
+            LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE, LRE,
+            LRE, LRE, LRE, LRE, BN, CS, RLO, S, PDF, EN, LRO, AN, ES },         // 8
+        { S, WS, NSM, RLE, WS, L, L, L, WS, LRO, WS, R, R, R, WS, RLO, WS, L, L,
+            L, WS, LRE, WS, R, R, R, WS, PDF, WS, L, L, L, WS, PDF, WS, AL, AL,
+            AL, WS, PDF, WS, L, L, L, WS, PDF, WS, L, L, L, WS, PDF, ON, PDF,
+            BN, BN, ON, PDF },                                                  // 9
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 10
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 11
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 12
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 13
+        { NSM, WS, L, L, L, L, L, L, L, WS, L, L, L, L, WS, R, R, R, R, R, WS,
+            L, L, L, L, L, L, L, WS, WS, AL, AL, AL, AL, WS, EN, EN, ES, EN,
+            EN, CS, S, EN, EN, CS, WS, EN, EN, WS, AL, AL, AL, AL, AL, B, L, L,
+            L, L, L, L, L, L, WS, AN, AN, CS, AN, AN, WS },                     // 14
+        { ON, L, RLO, CS, R, WS, AN, AN, PDF, LRE, R, L, LRO, WS, BN, ON, S,
+            LRE, LRO, B },                                                      // 15
+        { ON, L, RLO, CS, R, WS, AN, AN, PDF, LRE, R, L, LRO, WS, BN, ON, S,
+            LRE, LRO, B },                                                      // 16
+        { RLO, RLO, AL, AL, WS, EN, ES, ON, WS, S, S, PDF, LRO, WS, AL, ET, RLE,
+            ON, EN, B },                                                        // 17
+        { R, L, CS, L },                                                        // 18
+        { L, L, L, WS, L, L, L, WS, L, L, L },                                  // 19
+        { R, R, R, WS, R, R, R, WS, R, R, R },                                  // 20
+        { L },                                                                  // 21
+        null                                                                    // 22
+    };
+
+    protected static final byte[][] testLevels = {
+        { 0, 0, 0, 0, 0, 0, 0, 0 },                                             // 0
+        { 1, 1, 1, 1, 1, 1, 1 },                                                // 1
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },                                 // 2
+        { 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },               // 3
+        { 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2 },                     // 4
+        { 1, 2, 2, 2 },                                                         // 5
+        { 1, 1, 1, 1, 1, 1, 1, 1, 1 },                                          // 6
+        { 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
+            62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 61, 61,
+            61, 61, 61, 61, 61, 61 },                                           // 7
+        { 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+            60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 0,
+            0, 62, 62, 62, 62, 60 },                                            // 8
+        { 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4,
+            5, 5, 5, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },                               // 9
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,
+            2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,
+            0 },                                                                // 10
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,
+            2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,
+            0 },                                                                // 11
+        { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2,
+            2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 3, 4, 4, 3, 2, 4, 4, 3, 3,
+            4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4,
+            2 },                                                                // 12
+        { 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6,
+            6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 6, 6, 5, 5, 6, 6, 5, 5,
+            6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6,
+            5 },                                                                // 13
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 2, 2, 1, 1,
+            2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,
+            0 },                                                                // 14
+        { 0, 0, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 4, 4, 4, 4, 0, 0, 0, 0 },         // 15
+        { 0, 0, 1, 1, 1, 0 },                                                   // 16
+        { 1 },                                                                  // 17
+        { 2 },                                                                  // 18
+        { 2, 2, 2, 2, 2, 2, 2, 1 },                                             // 19
+        { 1, 1, 1, 1, 1, 1, 1, 0 },                                             // 20
+        { 2 },                                                                  // 21
+        null                                                                    // 22
+    };
+
+    protected static final int[][] testVisualMaps = {
+        { 0, 1, 2, 3, 4, 5, 6, 7 },                                             // 0
+        { 6, 5, 4, 3, 2, 1, 0 },                                                // 1
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },                               // 2
+        { 0, 3, 2, 1, 4, 6, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },       // 3
+        { 15, 14, 13, 12, 11, 10, 9, 6, 7, 8, 5, 4, 3, 2, 0, 1 },               // 4
+        { 3, 0, 1, 2 },                                                         // 5
+        { 8, 7, 6, 5, 4, 3, 2, 1, 0 },                                          // 6
+        { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+            26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 7, 6, 5, 4, 3,
+            2, 1, 0 },                                                          // 7
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+            37, 38, 39 },                                                       // 8
+        { 0, 1, 2, 44, 43, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 31, 30, 29, 28, 27,
+            26, 20, 21, 24, 23, 22, 25, 19, 18, 17, 16, 15, 14, 32, 33, 34, 35,
+            36, 37, 38, 39, 40, 41, 42, 3, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+            54, 55, 56, 57 },                                                   // 9
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,
+            33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,
+            54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 10
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,
+            33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,
+            54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 11
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,
+            33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,
+            54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 12
+        { 69, 68, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 55, 54, 53,
+            52, 51, 50, 49, 42, 43, 44, 45, 46, 47, 48, 41, 40, 39, 38, 37, 36,
+            35, 33, 34, 32, 30, 31, 29, 28, 26, 27, 25, 24, 22, 23, 21, 20, 19,
+            18, 17, 16, 15, 7, 8, 9, 10, 11, 12, 13, 14, 6, 1, 2, 3, 4, 5, 0 }, // 13
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 18, 17, 16, 15,
+            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 40, 39, 38, 37, 36, 34, 35,
+            33, 31, 32, 30, 41, 52, 53, 51, 50, 48, 49, 47, 46, 45, 44, 43, 42,
+            54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 },   // 14
+        { 0, 1, 15, 14, 13, 12, 11, 10, 4, 3, 2, 5, 6, 7, 8, 9, 16, 17, 18, 19 }, // 15
+        { 0, 1, 4, 3, 2, 5 },                                                   // 16
+        { 0 },                                                                  // 17
+        { 0 },                                                                  // 18
+        { 1, 2, 3, 4, 5, 6, 7, 0 },                                             // 19
+        { 6, 5, 4, 3, 2, 1, 0, 7 },                                             // 20
+        { 0 },                                                                  // 21
+        null                                                                    // 22
+    };
+
+    protected static final byte[] testParaLevels = {
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_RTL,
+        2, 5, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR,
+        Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_LTR, Bidi.RTL, Bidi.LTR, Bidi.RTL,
+        Bidi.LEVEL_DEFAULT_LTR
+    };
+
+    protected static final byte[] testDirections = {
+        Bidi.LTR, Bidi.RTL, Bidi.LTR, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED,
+        Bidi.RTL, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED,
+        Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.RTL,
+        Bidi.LTR, Bidi.MIXED, Bidi.MIXED, Bidi.MIXED, Bidi.LTR
+    };
+
+    protected static final byte[] testResultLevels = new byte[] {
+        Bidi.LTR, Bidi.RTL, Bidi.LTR, Bidi.LTR, Bidi.RTL, Bidi.RTL, Bidi.RTL,
+        Bidi.LTR, Bidi.LTR, Bidi.LTR, Bidi.LTR, Bidi.LTR, 2, 5, Bidi.LTR,
+        Bidi.LTR, Bidi.LTR, Bidi.RTL, 2, Bidi.RTL, Bidi.LTR, Bidi.RTL, Bidi.LTR
+    };
+
+    protected static final byte[] testLineStarts = {
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 13,
+        2, 0, 0, -1, -1
+    };
+
+    protected static final byte[] testLineLimits = {
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 14,
+        3, 8, 8, -1, -1
+    };
+
+    protected short[] dirProps;
+    protected int lineStart;
+    protected int lineLimit;
+    protected byte direction;
+    protected byte paraLevel;
+    protected byte resultLevel;
+    protected byte[] levels;
+    protected int[] visualMap;
+
+    private TestData(short[] dirProps, int lineStart, int lineLimit,
+            byte direction, byte paraLevel, byte resultLevel, byte[] levels,
+            int[] visualMap) {
+        this.dirProps = dirProps;
+        this.lineStart = lineStart;
+        this.lineLimit = lineLimit;
+        this.direction = direction;
+        this.paraLevel = paraLevel;
+        this.resultLevel = resultLevel;
+        this.levels = levels;
+        this.visualMap = visualMap;
+    }
+
+    protected static TestData getTestData(int testNumber) {
+        return new TestData(testDirProps[testNumber],
+                testLineStarts[testNumber], testLineLimits[testNumber],
+                testDirections[testNumber], testParaLevels[testNumber],
+                testResultLevels[testNumber], testLevels[testNumber],
+                testVisualMaps[testNumber]);
+    }
+
+    protected static int testCount() {
+        return testDirProps.length;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java b/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
new file mode 100644
index 0000000..e9726fe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
@@ -0,0 +1,127 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for Bidi failure recovery
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestFailureRecovery extends BidiTest {
+
+    public void testFailureRecovery()
+    {
+        logln("\nEntering TestFailureRecovery\n");
+        Bidi bidi = new Bidi();
+        try {
+            bidi.setPara("abc", (byte)(Bidi.LEVEL_DEFAULT_LTR - 1), null);
+            errln("Bidi.setPara did not fail when passed too big para level");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for bidi.setPara(..., Bidi.LEVEL_DEFAULT_LTR - 1, ...)"
+                    + " as expected: " + e.getMessage());
+        }
+        try {
+            bidi.setPara("abc", (byte)(-1), null);
+            errln("Bidi.setPara did not fail when passed negative para level");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for bidi.setPara(..., -1, ...)"
+                    + " as expected: " + e.getMessage());
+        }
+        try {
+            Bidi.writeReverse(null, 0);
+            errln("Bidi.writeReverse did not fail when passed a null string");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for Bidi.writeReverse(null) as expected: "
+                  + e.getMessage());
+        }
+        bidi = new Bidi();
+        try {
+            bidi.setLine(0, 1);
+            errln("bidi.setLine did not fail when called before valid setPara()");
+        } catch (IllegalStateException e) {
+            logln("OK: Got exception for Bidi.setLine(0, 1) as expected: "
+                  + e.getMessage());
+        }
+        try {
+            bidi.getDirection();
+            errln("bidi.getDirection did not fail when called before valid setPara()");
+        } catch (IllegalStateException e) {
+            logln("OK: Got exception for Bidi.getDirection() as expected: "
+                  + e.getMessage());
+        }
+        bidi.setPara("abc", Bidi.LTR, null);
+        try {
+            bidi.getLevelAt(3);
+            errln("bidi.getLevelAt did not fail when called with bad argument");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for Bidi.getLevelAt(3) as expected: "
+                  + e.getMessage());
+        }
+        try {
+            bidi = new Bidi(-1, 0);
+            errln("Bidi constructor did not fail when called with bad argument");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for Bidi(-1,0) as expected: "
+                  + e.getMessage());
+        }
+        bidi = new Bidi(2, 1);
+        try {
+            bidi.setPara("abc", Bidi.LTR, null);
+            errln("setPara did not fail when called with text too long");
+        } catch (OutOfMemoryError e) {
+            logln("OK: Got exception for setPara(\"abc\") as expected: "
+                  + e.getMessage());
+        }
+        try {
+            bidi.setPara("=2", Bidi.RTL, null);
+            bidi.countRuns();
+            errln("countRuns did not fail when called for too many runs");
+        } catch (OutOfMemoryError e) {
+            logln("OK: Got exception for countRuns as expected: "
+                  + e.getMessage());
+        }
+        int rm = bidi.getReorderingMode();
+        bidi.setReorderingMode(Bidi.REORDER_DEFAULT - 1);
+        if (rm != bidi.getReorderingMode()) {
+            errln("setReorderingMode with bad argument #1 should have no effect");
+        }
+        bidi.setReorderingMode(9999);
+        if (rm != bidi.getReorderingMode()) {
+            errln("setReorderingMode with bad argument #2 should have no effect");
+        }
+        /* Try a surrogate char */
+        bidi = new Bidi();
+        bidi.setPara("\uD800\uDC00", Bidi.RTL, null);
+        if (bidi.getDirection() != Bidi.MIXED) {
+            errln("getDirection for 1st surrogate char should be MIXED");
+        }
+        byte[] levels = new byte[] {6,5,4};
+        try {
+            bidi.setPara("abc", (byte)5, levels);
+            errln("setPara did not fail when called with bad levels");
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for setPara(..., levels) as expected: "
+                  + e.getMessage());
+        }
+
+        logln("\nExiting TestFailureRecovery\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestFailureRecovery().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestInverse.java b/src/com/ibm/icu/dev/test/bidi/TestInverse.java
new file mode 100644
index 0000000..0af1f95
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestInverse.java
@@ -0,0 +1,272 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for the basic "inverse" Bidi mode.
+ *
+ * ported from C by Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestInverse extends BidiTest {
+
+    private int countRoundtrips = 0;
+    private int countNonRoundtrips = 0;
+
+    static final String[] testCases = {
+        "\u006c\u0061\u0028\u0074\u0069\u006e\u0020\u05d0\u05d1\u0029\u05d2\u05d3",
+        "\u006c\u0061\u0074\u0020\u05d0\u05d1\u05d2\u0020\u0031\u0032\u0033",
+        "\u006c\u0061\u0074\u0020\u05d0\u0028\u05d1\u05d2\u0020\u0031\u0029\u0032\u0033",
+        "\u0031\u0032\u0033\u0020\u05d0\u05d1\u05d2\u0020\u0034\u0035\u0036",
+        "\u0061\u0062\u0020\u0061\u0062\u0020\u0661\u0662"
+    };
+
+    public void testInverse() {
+        Bidi bidi;
+        int i;
+
+        logln("\nEntering TestInverse\n");
+        bidi = new Bidi();
+        log("inverse Bidi: testInverse(L) with " + testCases.length +
+            " test cases ---\n");
+        for(i = 0; i < testCases.length; ++i) {
+            logln("Testing case " + i);
+            _testInverseBidi(bidi, testCases[i], Bidi.DIRECTION_LEFT_TO_RIGHT);
+        }
+
+        log("inverse Bidi: testInverse(R) with " + testCases.length +
+            " test cases ---\n");
+        for (i = 0; i < testCases.length; ++i) {
+            logln("Testing case " + i);
+            _testInverseBidi(bidi, testCases[i], Bidi.DIRECTION_RIGHT_TO_LEFT);
+        }
+
+        _testManyInverseBidi(bidi, Bidi.DIRECTION_LEFT_TO_RIGHT);
+        _testManyInverseBidi(bidi, Bidi.DIRECTION_RIGHT_TO_LEFT);
+
+        logln("inverse Bidi: rountrips: " + countRoundtrips +
+              "   non-roundtrips: " + countNonRoundtrips);
+
+        _testWriteReverse();
+
+        _testManyAddedPoints();
+
+        _testMisc();
+
+        logln("\nExiting TestInverse\n");
+    }
+
+    private static final char[][] repeatSegments = {
+        { 0x61, 0x62 },     /* L */
+        { 0x5d0, 0x5d1 },   /* R */
+        { 0x627, 0x628 },   /* AL */
+        { 0x31, 0x32 },     /* EN */
+        { 0x661, 0x662 },   /* AN */
+        { 0x20, 0x20 }      /* WS (N) */
+    };
+    private static final int COUNT_REPEAT_SEGMENTS = 6;
+
+    private void _testManyInverseBidi(Bidi bidi, int direction) {
+        char[] text = { 0, 0, 0x20, 0, 0, 0x20, 0, 0 };
+        int i, j, k;
+
+        log("inverse Bidi: testManyInverseBiDi(" +
+            (direction == Bidi.DIRECTION_LEFT_TO_RIGHT ? 'L' : 'R') +
+            ") - test permutations of text snippets ---\n");
+        for (i = 0; i < COUNT_REPEAT_SEGMENTS; ++i) {
+            text[0] = repeatSegments[i][0];
+            text[1] = repeatSegments[i][1];
+            for (j = 0; j < COUNT_REPEAT_SEGMENTS; ++j) {
+                text[3] = repeatSegments[j][0];
+                text[4] = repeatSegments[j][1];
+                for (k = 0; k < COUNT_REPEAT_SEGMENTS; ++k) {
+                    text[6] = repeatSegments[k][0];
+                    text[7] = repeatSegments[k][1];
+
+                    log("inverse Bidi: testManyInverseBiDi()[" +
+                        i + " " + j + " " + k + "]\n");
+                    _testInverseBidi(bidi, new String(text), direction);
+                }
+            }
+        }
+    }
+
+    private void _testInverseBidi(Bidi bidi, String src, int direction) {
+        String visualLTR, logicalDest, visualDest;
+        try {
+            if (direction == Bidi.DIRECTION_LEFT_TO_RIGHT) {
+                log("inverse Bidi: testInverse(L)\n");
+
+                /* convert visual to logical */
+                bidi.setInverse(true);
+                if (!bidi.isInverse()) {
+                    err("Error while doing setInverse(true)\n");
+                }
+                bidi.setPara(src, Bidi.LTR, null);
+                if (!Arrays.equals(src.toCharArray(), bidi.getText())) {
+                    err("Wrong value returned by getText\n");
+                }
+                if (!src.equals(bidi.getTextAsString())) {
+                    err("Wrong value returned by getTextAsString\n");
+                }
+                logicalDest = bidi.writeReordered(Bidi.DO_MIRRORING |
+                                                  Bidi.INSERT_LRM_FOR_NUMERIC);
+                log("  v ");
+                printUnicode(src.toCharArray(), bidi.getLevels());
+                log("\n");
+
+                /* convert back to visual LTR */
+                bidi.setInverse(false);
+                if (bidi.isInverse()) {
+                    err("Error while doing setInverse(false)\n");
+                }
+                bidi.setPara(logicalDest, Bidi.LTR, null);
+                visualDest = bidi.writeReordered(Bidi.DO_MIRRORING |
+                                                 Bidi.REMOVE_BIDI_CONTROLS);
+            } else {
+                logln("inverse Bidi: testInverse(R)\n");
+
+                /* reverse visual from RTL to LTR */
+                visualLTR = Bidi.writeReverse(src, 0);
+                log("  vr");
+                printUnicode(src.toCharArray(), null);
+                log("\n");
+
+                /* convert visual RTL to logical */
+                bidi.setInverse(true);
+                bidi.setPara(visualLTR, Bidi.LTR, null);
+                logicalDest = bidi.writeReordered(Bidi.DO_MIRRORING |
+                                                  Bidi.INSERT_LRM_FOR_NUMERIC);
+                log("  vl");
+                printUnicode(visualLTR.toCharArray(), bidi.getLevels());
+                log("\n");
+
+                /* convert back to visual RTL */
+                bidi.setInverse(false);
+                bidi.setPara(logicalDest, Bidi.LTR, null);
+                visualDest = bidi.writeReordered(Bidi.DO_MIRRORING |
+                             Bidi.REMOVE_BIDI_CONTROLS | Bidi.OUTPUT_REVERSE);
+            }
+            log("  l ");
+            printUnicode(logicalDest.toCharArray(), bidi.getLevels());
+            log("\n");
+            log("  v ");
+            printUnicode(visualDest.toCharArray(), null);
+            log("\n");
+        } catch (Exception e) {
+            errln("inverse Bidi: *** failed");
+            visualDest = null;
+        }
+
+        /* check and print results */
+        if (src.equals(visualDest)) {
+            ++countRoundtrips;
+            log(" + roundtripped\n");
+        } else {
+            ++countNonRoundtrips;
+            log(" * did not roundtrip\n");
+        }
+    }
+
+    private void _testWriteReverse() {
+        /* U+064e and U+0650 are combining marks (Mn) */
+        final String
+            forward = "\u200f\u0627\u064e\u0650\u0020\u0028\u0031\u0029",
+            reverseKeepCombining =
+                "\u0029\u0031\u0028\u0020\u0627\u064e\u0650\u200f",
+            reverseRemoveControlsKeepCombiningDoMirror =
+                "\u0028\u0031\u0029\u0020\u0627\u064e\u0650";
+
+        String reverse;
+
+        /* test Bidi.writeReverse() with "interesting" options */
+        try {
+            reverse = Bidi.writeReverse(forward, Bidi.KEEP_BASE_COMBINING);
+        } catch (Exception e) {
+            errln("Failure in Bidi.writeReverse(KEEP_BASE_COMBINING)");
+            reverse = null;
+        }
+        assertEquals("\nFailure in " + getClass().toString() +
+                     " in Bidi.writeReverse", reverseKeepCombining,
+                     reverse, forward, null, "KEEP_BASE_COMBINING", null);
+
+        try {
+            reverse = Bidi.writeReverse(forward, Bidi.REMOVE_BIDI_CONTROLS |
+                                        Bidi.DO_MIRRORING | Bidi.KEEP_BASE_COMBINING);
+        } catch (Exception e) {
+            errln("Failure in Bidi.writeReverse(KEEP_BASE_COMBINING)");
+        }
+        assertEquals("\nFailure in " + getClass().toString() +
+                     " in Bidi.writeReverse",
+                     reverseRemoveControlsKeepCombiningDoMirror,
+                     reverse, forward, null,
+                     "REMOVE_BIDI_CONTROLS|DO_MIRRORING|KEEP_BASE_COMBINING",
+                     null);
+    }
+
+    private void printUnicode(char[] chars, byte[] levels) {
+        int i;
+
+        log("{ ");
+        for (i = 0; i < chars.length; ++i) {
+            log("0x" + Utility.hex(chars[i]));
+            if (levels != null) {
+                log("." + levels[i]);
+            }
+            log("   ");
+        }
+        log(" }");
+    }
+
+    private void _testManyAddedPoints() {
+        Bidi bidi = new Bidi();
+        char[] text = new char[90];
+        for (int i = 0; i < text.length; i+=3) {
+            text[i] = 'a';
+            text[i+1] = '\u05d0';
+            text[i+2] = '3';
+        }
+        bidi.setReorderingMode(Bidi.REORDER_INVERSE_LIKE_DIRECT);
+        bidi.setReorderingOptions(Bidi.OPTION_INSERT_MARKS);
+        bidi.setPara(text, Bidi.LTR, null);
+        String out = bidi.writeReordered(0);
+        char[] expected = new char[120];
+        for (int i = 0; i < expected.length; i+=4) {
+            expected[i] = 'a';
+            expected[i+1] = '\u05d0';
+            expected[i+2] = '\u200e';
+            expected[i+3] = '3';
+        }
+        assertEquals("\nInvalid output with many added points",
+                     new String(expected), out);
+    }
+
+    private void _testMisc() {
+        Bidi bidi = new Bidi();
+        bidi.setInverse(true);
+        bidi.setPara("   ", Bidi.RTL, null);
+        String out = bidi.writeReordered(Bidi.OUTPUT_REVERSE | Bidi.INSERT_LRM_FOR_NUMERIC);
+        assertEquals("\nInvalid output with RLM at both sides",
+                     "\u200f   \u200f", out);
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestInverse().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java b/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java
new file mode 100644
index 0000000..a84bde1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java
@@ -0,0 +1,461 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Bidi;
+import com.ibm.icu.text.BidiRun;
+
+/**
+ * Regression test for Bidi multiple paragraphs
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestMultipleParagraphs extends BidiTest {
+
+    private static final String text =
+        "__ABC\u001c"                  /* Para #0 offset 0 */
+        + "__\u05d0DE\u001c"           /*       1        6 */
+        + "__123\u001c"                /*       2       12 */
+        + "\r\n"                       /*       3       18 */
+        + "FG\r"                       /*       4       20 */
+        + "\r"                         /*       5       23 */
+        + "HI\r\n"                     /*       6       24 */
+        + "\r\n"                       /*       7       28 */
+        + "\n"                         /*       8       30 */
+        + "\n"                         /*       9       31 */
+        + "JK\u001c";                  /*      10       32 */
+    private static final int paraCount = 11;
+    private static final int[] paraBounds = {
+        0, 6, 12, 18, 20, 23, 24, 28, 30, 31, 32, 35
+    };
+    private static final byte[] paraLevels = {
+        Bidi.LTR, Bidi.RTL, Bidi.LEVEL_DEFAULT_LTR, Bidi.LEVEL_DEFAULT_RTL, 22, 23
+    };
+    private static final byte[][] multiLevels = {
+        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+        {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
+        {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+        {0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0},
+        {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22},
+        {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}
+    };
+    private static final String text2 = "\u05d0 1-2\u001c\u0630 1-2\u001c1-2";
+    private static final byte[] levels2 = {
+        1, 1, 2, 2, 2, 0, 1, 1, 2, 1, 2, 0, 2, 2, 2
+    };
+    private static final char[] multiparaTestString = {
+        0x5de, 0x5e0, 0x5e1, 0x5d4, 0x20,  0x5e1, 0x5e4, 0x5da,
+        0x20,  0xa,   0xa,   0x41,  0x72,  0x74,  0x69,  0x73,
+        0x74,  0x3a,  0x20,  0x5de, 0x5e0, 0x5e1, 0x5d4, 0x20,
+        0x5e1, 0x5e4, 0x5da, 0x20,  0xa,   0xa,   0x41,  0x6c,
+        0x62,  0x75,  0x6d,  0x3a,  0x20,  0x5de, 0x5e0, 0x5e1,
+        0x5d4, 0x20,  0x5e1, 0x5e4, 0x5da, 0x20,  0xa,   0xa,
+        0x54,  0x69,  0x6d,  0x65,  0x3a,  0x20,  0x32,  0x3a,
+        0x32,  0x37,  0xa,  0xa
+    };
+    private static final byte[] multiparaTestLevels = {
+        1, 1, 1, 1, 1, 1, 1, 1,
+        1, 1, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 1, 1, 1, 1, 1,
+        1, 1, 1, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 1, 1, 1,
+        1, 1, 1, 1, 1, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0
+    };
+
+    public void testMultipleParagraphs()
+    {
+        byte gotLevel;
+        byte[] gotLevels;
+        boolean orderParagraphsLTR;
+        String src;
+        Bidi bidi = new Bidi();
+        Bidi bidiLine;
+        int count, paraStart, paraLimit, paraIndex, length;
+        int i, j, k;
+
+        logln("\nEntering TestMultipleParagraphs\n");
+        try {
+            bidi.setPara(text, Bidi.LTR, null);
+        } catch (IllegalArgumentException e) {
+            errln("1st Bidi.setPara failed, paraLevel = " + Bidi.LTR);
+        }
+
+        /* check paragraph count and boundaries */
+        if (paraCount != (count = bidi.countParagraphs())) {
+            errln("1st Bidi.countParagraphs returned " + count + ", should be " +
+                  paraCount);
+        }
+        BidiRun run;
+        for (i = 0; i < paraCount; i++) {
+            run = bidi.getParagraphByIndex(i);
+            paraStart = run.getStart();
+            paraLimit = run.getLimit();
+            if ((paraStart != paraBounds[i]) ||
+                (paraLimit != paraBounds[i + 1])) {
+                errln("Found boundaries of paragraph " + i + ": " +
+                      paraStart + "-" + paraLimit + "; expected: " +
+                      paraBounds[i] + "-" + paraBounds[i + 1]);
+            }
+        }
+
+        /* check with last paragraph not terminated by B */
+        char[] chars = text.toCharArray();
+        chars[chars.length - 1] = 'L';
+        src = new String(chars);
+        try {
+            bidi.setPara(src, Bidi.LTR, null);
+        } catch (IllegalArgumentException e) {
+            errln("2nd Bidi.setPara failed, paraLevel = " + Bidi.LTR);
+        }
+        if (paraCount != (count = bidi.countParagraphs())) {
+            errln("2nd Bidi.countParagraphs returned " + count +
+                  ", should be " + paraCount);
+        }
+        i = paraCount - 1;
+        run = bidi.getParagraphByIndex(i);
+        paraStart = run.getStart();
+        paraLimit = run.getLimit();
+        if ((paraStart != paraBounds[i]) ||
+            (paraLimit != paraBounds[i + 1])) {
+            errln("2nd Found boundaries of paragraph " + i + ": " +
+                  paraStart + "-" + paraLimit + "; expected: " +
+                  paraBounds[i] + "-" + paraBounds[i + 1]);
+        }
+
+        /* check paraLevel for all paragraphs under various paraLevel specs */
+        for (k = 0; k < 6; k++) {
+            try {
+                bidi.setPara(src, paraLevels[k], null);
+            } catch (IllegalArgumentException e) {
+                errln("3nd Bidi.setPara failed, paraLevel = " + paraLevels[k]);
+            }
+            for (i = 0; i < paraCount; i++) {
+                paraIndex = bidi.getParagraphIndex(paraBounds[i]);
+                run = bidi.getParagraph(paraBounds[i]);
+                if (paraIndex != i) {
+                    errln("#1 For paraLevel = " + paraLevels[k] +
+                          " paragraph = " + i + ", found paragraph" +
+                          " index = " + paraIndex + " expected = " + i);
+                }
+                gotLevel = run.getEmbeddingLevel();
+                if (gotLevel != multiLevels[k][i]) {
+                    errln("#2 For paraLevel = " + paraLevels[k] +
+                          " paragraph = " + i + ", found level = " + gotLevel +
+                          ", expected = " + multiLevels[k][i]);
+                }
+            }
+            gotLevel = bidi.getParaLevel();
+            if (gotLevel != multiLevels[k][0]) {
+                errln("#3 For paraLevel = " + paraLevels[k] +
+                      " getParaLevel = " + gotLevel + ", expected " +
+                      multiLevels[k][0]);
+            }
+        }
+
+        /* check that the result of Bidi.getParaLevel changes if the first
+         * paragraph has a different level
+         */
+        chars[0] = '\u05d2';            /* Hebrew letter Gimel */
+        src = new String(chars);
+        try {
+            bidi.setPara(src, Bidi.LEVEL_DEFAULT_LTR, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.LEVEL_DEFAULT_LTR);
+        }
+        gotLevel = bidi.getParaLevel();
+        if (gotLevel != Bidi.RTL) {
+            errln("#4 For paraLevel = Bidi.LEVEL_DEFAULT_LTR getParaLevel = " +
+                  gotLevel + ", expected = " + Bidi.RTL);
+        }
+
+        /* check that line cannot overlap paragraph boundaries */
+        bidiLine = new Bidi();
+        i = paraBounds[1];
+        k = paraBounds[2] + 1;
+        try {
+            bidiLine = bidi.setLine(i, k);
+            errln("For line limits " + i + "-" + k
+                    + " got success, while expected failure");
+        } catch (Exception e) {}
+
+        i = paraBounds[1];
+        k = paraBounds[2];
+        try {
+            bidiLine = bidi.setLine(i, k);
+        } catch (Exception e) {
+            errln("For line limits " + i + "-" + k + " got failure");
+        }
+
+        /* check level of block separator at end of paragraph when orderParagraphsLTR==FALSE */
+        try {
+            bidi.setPara(src, Bidi.RTL, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.RTL);
+        }
+        /* get levels through para Bidi block */
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on Bidi.getLevels");
+            gotLevels = new byte[bidi.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        for (i = 26; i < 32; i++) {
+            if (gotLevels[i] != Bidi.RTL) {
+                errln("For char " + i + "(0x" + Utility.hex(chars[i]) +
+                      "), level = " + gotLevels[i] + ", expected = " + Bidi.RTL);
+            }
+        }
+        /* get levels through para Line block */
+        i = paraBounds[1];
+        k = paraBounds[2];
+        try {
+            bidiLine = bidi.setLine(i, k);
+        } catch (Exception e) {
+            errln("For line limits " + i + "-" + k + " got failure");
+            return;
+        }
+        paraIndex = bidiLine.getParagraphIndex(i);
+        run = bidiLine.getParagraph(i);
+        try {
+            gotLevels = bidiLine.getLevels();
+        } catch (Exception e) {
+            errln("Error on bidiLine.getLevels");
+            gotLevels = new byte[bidiLine.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        length = bidiLine.getLength();
+        gotLevel = run.getEmbeddingLevel();
+        if ((gotLevel != Bidi.RTL) || (gotLevels[length - 1] != Bidi.RTL)) {
+            errln("For paragraph " + paraIndex + " with limits " +
+                  run.getStart() + "-" + run.getLimit() +
+                  ", paraLevel = " + gotLevel +
+                  "expected = " + Bidi.RTL +
+                  ", level of separator = " + gotLevels[length - 1] +
+                  " expected = " + Bidi.RTL);
+        }
+        orderParagraphsLTR = bidi.isOrderParagraphsLTR();
+        assertFalse("orderParagraphsLTR is true", orderParagraphsLTR);
+        bidi.orderParagraphsLTR(true);
+        orderParagraphsLTR = bidi.isOrderParagraphsLTR();
+        assertTrue("orderParagraphsLTR is false", orderParagraphsLTR);
+
+        /* check level of block separator at end of paragraph when orderParagraphsLTR==TRUE */
+        try {
+            bidi.setPara(src, Bidi.RTL, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.RTL);
+        }
+        /* get levels through para Bidi block */
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on Bidi.getLevels");
+            gotLevels = new byte[bidi.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        for (i = 26; i < 32; i++) {
+            if (gotLevels[i] != 0) {
+                errln("For char " + i + "(0x" + Utility.hex(chars[i]) +
+                      "), level = "+ gotLevels[i] + ", expected = 0");
+            }
+        }
+        /* get levels through para Line block */
+        i = paraBounds[1];
+        k = paraBounds[2];
+        paraStart = run.getStart();
+        paraLimit = run.getLimit();
+        try {
+            bidiLine = bidi.setLine(paraStart, paraLimit);
+        } catch (Exception e) {
+            errln("For line limits " + paraStart + "-" + paraLimit +
+                  " got failure");
+        }
+        paraIndex = bidiLine.getParagraphIndex(i);
+        run = bidiLine.getParagraph(i);
+        try {
+            gotLevels = bidiLine.getLevels();
+        } catch (Exception e) {
+            errln("Error on bidiLine.getLevels");
+            gotLevels = new byte[bidiLine.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        length = bidiLine.getLength();
+        gotLevel = run.getEmbeddingLevel();
+        if ((gotLevel != Bidi.RTL) || (gotLevels[length - 1] != 0)) {
+            err("\nFor paragraph " + paraIndex + " with limits " +
+                run.getStart() + "-" + run.getLimit() +
+                ", paraLevel = " + gotLevel + "expected = " + Bidi.RTL +
+                ", level of separator = " + gotLevels[length - 1] +
+                " expected = 0\nlevels = ");
+            for (count = 0; count < length; count++) {
+                errcont(gotLevels[count] + "  ");
+            }
+            errcont("\n");
+        }
+
+        /* test that the concatenation of separate invocations of the bidi code
+         * on each individual paragraph in order matches the levels array that
+         * results from invoking bidi once over the entire multiparagraph tests
+         * (with orderParagraphsLTR false, of course)
+         */
+        src = text;                     /* restore original content */
+        bidi.orderParagraphsLTR(false);
+        try {
+            bidi.setPara(src, Bidi.LEVEL_DEFAULT_RTL, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.LEVEL_DEFAULT_RTL);
+        }
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on bidiLine.getLevels");
+            gotLevels = new byte[bidi.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        for (i = 0; i < paraCount; i++) {
+            /* use pLine for individual paragraphs */
+            paraStart = paraBounds[i];
+            length = paraBounds[i + 1] - paraStart;
+            try {
+                bidiLine.setPara(src.substring(paraStart, paraStart + length),
+                                 Bidi.LEVEL_DEFAULT_RTL, null);
+            } catch (IllegalArgumentException e) {
+                errln("Bidi.setPara failed, paraLevel = " + Bidi.LEVEL_DEFAULT_RTL);
+            }
+            for (j = 0; j < length; j++) {
+                if ((k = bidiLine.getLevelAt(j)) !=
+                        (gotLevel = gotLevels[paraStart + j])) {
+                    errln("Checking paragraph concatenation: for paragraph[" +
+                          i + "], char[" + j + "] = 0x" +
+                          Utility.hex(src.charAt(paraStart + j)) +
+                          ", level = " + k + ", expected = " + gotLevel);
+                }
+            }
+        }
+
+        /* ensure that leading numerics in a paragraph are not treated as arabic
+           numerals because of arabic text in a preceding paragraph
+         */
+        src = text2;
+        bidi.orderParagraphsLTR(true);
+        try {
+            bidi.setPara(src, Bidi.RTL, null);
+        } catch (IllegalArgumentException e) {
+            errln("Bidi.setPara failed, paraLevel = " + Bidi.RTL);
+        }
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on Bidi.getLevels");
+            gotLevels = new byte[bidi.getLength()];
+            Arrays.fill(gotLevels, (byte)-1);
+        }
+        for (i = 0, length = src.length(); i < length; i++) {
+            if (gotLevels[i] != levels2[i]) {
+                errln("Checking leading numerics: for char " + i + "(0x" +
+                      Utility.hex(src.charAt(i)) + "), level = " +
+                      gotLevels[i] + ", expected = " + levels2[i]);
+            }
+        }
+
+        /* check handling of whitespace before end of paragraph separator when
+         * orderParagraphsLTR==TRUE, when last paragraph has, and lacks, a terminating B
+         */
+        chars = src.toCharArray();
+        Arrays.fill(chars, '\u0020');
+        bidi.orderParagraphsLTR(true);
+        for (i = 0x001c; i <= 0x0020; i += (0x0020-0x001c)) {
+            chars[4] = (char)i;         /* with and without terminating B */
+            for (j = 0x0041; j <= 0x05d0; j += (0x05d0-0x0041)) {
+                chars[0] = (char)j;     /* leading 'A' or Alef */
+                src = new String(chars);
+                for (gotLevel = 4; gotLevel <= 5; gotLevel++) {
+                    /* test even and odd paraLevel */
+                    try {
+                        bidi.setPara(src, gotLevel, null);
+                    } catch (IllegalArgumentException e) {
+                        errln("Bidi.setPara failed, paraLevel = " + gotLevel);
+                    }
+                    try {
+                        gotLevels = bidi.getLevels();
+                    } catch (Exception e) {
+                        errln("Error on Bidi.getLevels");
+                        gotLevels = new byte[bidi.getLength()];
+                        Arrays.fill(gotLevels, (byte)-1);
+                    }
+                    for (k = 1; k <= 3; k++) {
+                        if (gotLevels[k] != gotLevel) {
+                            errln("Checking trailing spaces for leading char 0x" +
+                                  Utility.hex(chars[0]) + ", last_char = " +
+                                  Utility.hex(chars[4]) + ", index = " + k +
+                                  "level = " + gotLevels[k] +
+                                  ", expected = " + gotLevel);
+                        }
+                    }
+                }
+            }
+        }
+
+        /* check default orientation when inverse bidi and paragraph starts
+         * with LTR strong char and ends with RTL strong char, with and without
+         * a terminating B
+         */
+        bidi.setReorderingMode(Bidi.REORDER_INVERSE_LIKE_DIRECT);
+        bidi.setPara("abc \u05d2\u05d1\n", Bidi.LEVEL_DEFAULT_LTR, null);
+        String out = bidi.writeReordered(0);
+        assertEquals("\nInvalid output", "\u05d1\u05d2 abc\n", out);
+        bidi.setPara("abc \u05d2\u05d1", Bidi.LEVEL_DEFAULT_LTR, null);
+        out = bidi.writeReordered(0);
+        assertEquals("\nInvalid output #1", "\u05d1\u05d2 abc", out);
+
+        /* check multiple paragraphs together with explicit levels
+         */
+        bidi.setReorderingMode(Bidi.REORDER_DEFAULT);
+        gotLevels = new byte[] {0,0,0,0,0,0,0,0,0,0};
+        bidi.setPara("ab\u05d1\u05d2\n\u05d3\u05d4123", Bidi.LTR, gotLevels);
+        out = bidi.writeReordered(0);
+        assertEquals("\nInvalid output #2", "ab\u05d2\u05d1\n123\u05d4\u05d3", out);
+        assertEquals("\nInvalid number of paras", 2, bidi.countParagraphs());
+
+        logln("\nExiting TestMultipleParagraphs\n");
+
+        /* check levels in multiple paragraphs with default para level
+         */
+        bidi = new Bidi();
+        bidi.setPara(multiparaTestString, Bidi.LEVEL_DEFAULT_LTR, null);
+        try {
+            gotLevels = bidi.getLevels();
+        } catch (Exception e) {
+            errln("Error on Bidi.getLevels for multiparaTestString");
+            return;
+        }
+        for (i = 0; i < multiparaTestString.length; i++) {
+            if (gotLevels[i] != multiparaTestLevels[i]) {
+                errln("Error on level for multiparaTestString at index " + i +
+                      ", expected=" + multiparaTestLevels[i] +
+                      ", actual=" + gotLevels[i]);
+            }
+        }
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestMultipleParagraphs().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestReorder.java b/src/com/ibm/icu/dev/test/bidi/TestReorder.java
new file mode 100644
index 0000000..a9436e2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestReorder.java
@@ -0,0 +1,261 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+
+
+/**
+ * Regression test for the UBA implementation.
+ *
+ * ported from C by Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestReorder extends BidiTest {
+
+    private static final String[] logicalOrder = {
+        "del(KC)add(K.C.&)",
+        "del(QDVT) add(BVDL)",
+        "del(PQ)add(R.S.)T)U.&",
+        "del(LV)add(L.V.) L.V.&",
+        "day  0  R  DPDHRVR dayabbr",
+        "day  1  H  DPHPDHDA dayabbr",
+        "day  2   L  DPBLENDA dayabbr",
+        "day  3  J  DPJQVM  dayabbr",
+        "day  4   I  DPIQNF    dayabbr",
+        "day  5  M  DPMEG  dayabbr",
+        "helloDPMEG",
+        "hello WXYZ"
+    };
+
+    private static final String[] visualOrder = {
+        "del(CK)add(&.C.K)",
+        "del(TVDQ) add(LDVB)",
+        "del(QP)add(&.U(T(.S.R",
+        "del(VL)add(&.V.L (.V.L",
+        "day  0  RVRHDPD  R dayabbr",
+        "day  1  ADHDPHPD  H dayabbr",
+        "day  2   ADNELBPD  L dayabbr",
+        "day  3  MVQJPD  J  dayabbr",
+        "day  4   FNQIPD  I    dayabbr",
+        "day  5  GEMPD  M  dayabbr",
+        "helloGEMPD",
+        "hello ZYXW"
+    };
+
+    private static final String[] visualOrder1 = {
+        ")K.C.&(dda)KC(led",
+        ")BVDL(dda )QDVT(led",
+        "R.S.(T(U.&(dda)PQ(led",
+        "L.V.( L.V.&(dda)LV(led",
+        "rbbayad R  DPDHRVR  0  yad",
+        "rbbayad H  DPHPDHDA  1  yad",
+        "rbbayad L  DPBLENDA   2  yad",
+        "rbbayad  J  DPJQVM  3  yad",
+        "rbbayad    I  DPIQNF   4  yad",
+        "rbbayad  M  DPMEG  5  yad",
+        "DPMEGolleh",
+        "WXYZ olleh"
+    };
+
+    private static final String[] visualOrder2 = {
+        "@)@K.C.&@(dda)@KC@(led",
+        "@)@BVDL@(dda )@QDVT@(led",
+        "R.S.)T)U.&@(dda)@PQ@(led",
+        "L.V.) L.V.&@(dda)@LV@(led",
+        "rbbayad @R  DPDHRVR@  0  yad",
+        "rbbayad @H  DPHPDHDA@  1  yad",
+        "rbbayad @L  DPBLENDA@   2  yad",
+        "rbbayad  @J  DPJQVM@  3  yad",
+        "rbbayad    @I  DPIQNF@   4  yad",
+        "rbbayad  @M  DPMEG@  5  yad",
+        "DPMEGolleh",
+        "WXYZ@ olleh"
+    };
+
+    private static final String[] visualOrder3 = {
+        ")K.C.&(KC)dda(led",
+        ")BVDL(ddaQDVT) (led",
+        "R.S.)T)U.&(PQ)dda(led",
+        "L.V.) L.V.&(LV)dda(led",
+        "rbbayad DPDHRVR   R  0 yad",
+        "rbbayad DPHPDHDA   H  1 yad",
+        "rbbayad DPBLENDA     L 2 yad",
+        "rbbayad  DPJQVM   J  3 yad",
+        "rbbayad    DPIQNF     I 4 yad",
+        "rbbayad  DPMEG   M  5 yad",
+        "DPMEGolleh",
+        "WXYZ olleh"
+    };
+
+    private static final String[] visualOrder4 = {
+        "del(add(CK(.C.K)",
+        "del( (TVDQadd(LDVB)",
+        "del(add(QP(.U(T(.S.R",
+        "del(add(VL(.V.L (.V.L",
+        "day 0  R   RVRHDPD dayabbr",
+        "day 1  H   ADHDPHPD dayabbr",
+        "day 2 L     ADNELBPD dayabbr",
+        "day 3  J   MVQJPD  dayabbr",
+        "day 4 I     FNQIPD    dayabbr",
+        "day 5  M   GEMPD  dayabbr",
+        "helloGEMPD",
+        "hello ZYXW"
+    };
+
+    public void testReorder() {
+        Bidi bidi = new Bidi();
+        int testNumber;
+        int nTests = logicalOrder.length;
+        String src, srcU16, dest = "";
+
+        logln("\nEntering TestReorder\n");
+
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing L2V #1 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(tests[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            if (!visualOrder[testNumber].equals(dest)) {
+                assertEquals("Failure #1 in Bidi.writeReordered(), test number " +
+                             testNumber, visualOrder[testNumber], dest, src, null,
+                             "Bidi.DO_MIRRORING", "Bidi.LEVEL_DEFAULT_LTR");
+            }
+            checkWhatYouCan(bidi, src, dest);
+        }
+
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing L2V #2 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING +
+                                                       Bidi.OUTPUT_REVERSE));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel "
+                        + Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            assertEquals("Failure #2 in Bidi.writeReordered() at index " +
+                         testNumber, visualOrder1[testNumber], dest,
+                         logicalOrder[testNumber], null,
+                         "DO_MIRRORING + OUTPUT_REVERSE",
+                         "Bidi.LEVEL_DEFAULT_LTR");
+        }
+
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing V2L #3 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            bidi.setInverse(true);
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, null);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.OUTPUT_REVERSE |
+                                                       Bidi.INSERT_LRM_FOR_NUMERIC));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            assertEquals("Failure #3 in Bidi.writeReordered(test[" + testNumber +
+                         "])", visualOrder2[testNumber], dest,
+                         logicalOrder[testNumber], null,
+                         "INSERT_LRM_FOR_NUMERIC + OUTPUT_REVERSE",
+                         "Bidi.LEVEL_DEFAULT_LTR");
+        }
+
+        /* Max Explicit level */
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing V2L #4 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            byte[] levels = new byte[Bidi.MAX_EXPLICIT_LEVEL];
+            for (int i = 0; i < 10; i++) {
+                levels[i] = (byte)(i + 1);
+            }
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, levels);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber +
+                      "], paraLevel = MAX_EXPLICIT_LEVEL = " +
+                      Bidi.MAX_EXPLICIT_LEVEL + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.OUTPUT_REVERSE));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel " +
+                      Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            assertEquals("Failure #4 in Bidi.writeReordered(test[" + testNumber +
+                         "])", visualOrder3[testNumber], dest,
+                         logicalOrder[testNumber], null,
+                         "OUTPUT_REVERSE", "Bidi.LEVEL_DEFAULT_LTR");
+        }
+
+        for (testNumber = 0; testNumber < nTests; testNumber++) {
+            logln("Testing V2L #5 for case " + testNumber);
+            src = logicalOrder[testNumber];
+            srcU16 = pseudoToU16(src);
+            byte[] levels = new byte[Bidi.MAX_EXPLICIT_LEVEL];
+            for (int i = 0; i < 10; i++) {
+                levels[i] = (byte)(i + 1);
+            }
+            try {
+                bidi.setPara(srcU16, Bidi.LEVEL_DEFAULT_LTR, levels);
+            } catch (Exception e) {
+                errln("Bidi.setPara(tests[" + testNumber + "], paraLevel " +
+                      Bidi.MAX_EXPLICIT_LEVEL + " failed.");
+            }
+            try {
+                dest = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING |
+                                                       Bidi.REMOVE_BIDI_CONTROLS));
+            } catch (Exception e) {
+                errln("Bidi.writeReordered(test[" + testNumber + "], paraLevel "
+                        + Bidi.LEVEL_DEFAULT_LTR + " failed.");
+            }
+            assertEquals("Failure #5 in Bidi.writeReordered(test[" + testNumber +
+                         "])", visualOrder4[testNumber], dest,
+                         logicalOrder[testNumber], null,
+                         "DO_MIRRORING + REMOVE_BIDI_CONTROLS",
+                         "Bidi.LEVEL_DEFAULT_LTR");
+        }
+
+        logln("\nExiting TestReorder\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestReorder().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java b/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java
new file mode 100644
index 0000000..b239b07
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java
@@ -0,0 +1,190 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for variants to the UBA.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestReorderRunsOnly extends BidiTest {
+
+
+    static class TestCase {
+        String textIn;
+        String textOut[][];
+        int noroundtrip[];
+
+        TestCase(String in, String[][] out, int[] nrd) {
+            this.textIn = in;
+            this.textOut = out;
+            this.noroundtrip = nrd;
+        }
+    }
+
+    static final TestCase testCases[] = {
+        new TestCase("ab 234 896 de",   // 0
+                     new String[][] {{"de 896 ab 234", "de 896 ab 234"},
+                                     {"ab 234 @896@ de", "de 896 ab 234"}},
+                     new int[] {0, 0}),
+        new TestCase("abcGHI",          // 1
+                     new String[][] {{"GHIabc", "GHIabc"}, {"GHIabc", "GHIabc"}},
+                     new int[] {0, 0}),
+        new TestCase("a.>67->",         // 2
+                     new String[][] {{"<-67<.a", "<-67<.a"}, {"<-67<.a", "<-67<.a"}},
+                     new int[] {0, 0}),
+        new TestCase("-=%$123/ *",      // 3
+                     new String[][] {{"* /%$123=-", "* /%$123=-"},
+                                     {"* /%$123=-", "* /%$123=-"}},
+                     new int[] {0, 0}),
+        new TestCase("abc->12..>JKL",   // 4
+                     new String[][] {{"JKL<..12<-abc", "JKL<..abc->12"},
+                                     {"JKL<..12<-abc", "JKL<..abc->12"}},
+                     new int[] {0, 0}),
+        new TestCase("JKL->12..>abc",   // 5
+                     new String[][] {{"abc<..JKL->12", "abc<..12<-JKL"},
+                                     {"abc<..JKL->12", "abc<..12<-JKL"}},
+                     new int[] {0, 0}),
+        new TestCase("123->abc",        // 6
+                     new String[][] {{"abc<-123", "abc<-123"},
+                                     {"abc&<-123", "abc<-123"}},
+                     new int[] {1, 0}),
+        new TestCase("123->JKL",        // 7
+                     new String[][] {{"JKL<-123", "123->JKL"},
+                                     {"JKL<-123", "JKL<-@123"}},
+                     new int[] {0, 1}),
+        new TestCase("*>12.>34->JKL",   // 8
+                     new String[][] {{"JKL<-34<.12<*", "12.>34->JKL<*"},
+                                     {"JKL<-34<.12<*", "JKL<-@34<.12<*"}},
+                     new int[] {0, 1}),
+        new TestCase("*>67.>89->JKL",   // 9
+                     new String[][] {{"67.>89->JKL<*", "67.>89->JKL<*"},
+                                     {"67.>89->JKL<*", "67.>89->JKL<*"}},
+                     new int[] {0, 0}),
+        new TestCase("* /abc-=$%123",   // 10
+                     new String[][] {{"$%123=-abc/ *", "abc-=$%123/ *"},
+                                     {"$%123=-abc/ *", "abc-=$%123/ *"}},
+                     new int[] {0, 0}),
+        new TestCase("* /$%def-=123",   // 11
+                     new String[][] {{"123=-def%$/ *", "def-=123%$/ *"},
+                                     {"123=-def%$/ *", "def-=123%$/ *"}},
+                     new int[] {0, 0}),
+        new TestCase("-=GHI* /123%$",   // 12
+                     new String[][] {{"GHI* /123%$=-", "123%$/ *GHI=-"},
+                                     {"GHI* /123%$=-", "123%$/ *GHI=-"}},
+                     new int[] {0, 0}),
+        new TestCase("-=%$JKL* /123",   // 13
+                     new String[][] {{"JKL* /%$123=-", "123/ *JKL$%=-"},
+                                     {"JKL* /%$123=-", "123/ *JKL$%=-"}},
+                     new int[] {0, 0}),
+        new TestCase("ab =#CD *?450",   // 14
+                     new String[][] {{"CD *?450#= ab", "450?* CD#= ab"},
+                                     {"CD *?450#= ab", "450?* CD#= ab"}},
+                     new int[] {0, 0}),
+        new TestCase("ab 234 896 de",   // 15
+                     new String[][] {{"de 896 ab 234", "de 896 ab 234"},
+                                     {"ab 234 @896@ de", "de 896 ab 234"}},
+                     new int[] {0, 0}),
+        new TestCase("abc-=%$LMN* /123",// 16
+                     new String[][] {{"LMN* /%$123=-abc", "123/ *LMN$%=-abc"},
+                                     {"LMN* /%$123=-abc", "123/ *LMN$%=-abc"}},
+                     new int[] {0, 0}),
+        new TestCase("123->JKL&MN&P",   // 17
+                     new String[][] {{"JKLMNP<-123", "123->JKLMNP"},
+                                     {"JKLMNP<-123", "JKLMNP<-@123"}},
+                     new int[] {0, 1}),
+        new TestCase("123",             // 18   just one run
+                     new String[][] {{"123", "123"},
+                                     {"123", "123"}},
+                     new int[] {0, 0})
+    };
+
+    public void testReorderRunsOnly() {
+
+        Bidi bidi = new Bidi();
+        Bidi bidiL2V = new Bidi();
+        String src, dest, visual1, visual2;
+        String srcU16, destU16, visual1U16, visual2U16;
+        int option, i, j, nCases;
+        byte level;
+
+        logln("\nEntering TestReorderRunsOnly\n");
+        bidi.setReorderingMode(Bidi.REORDER_RUNS_ONLY);
+        bidiL2V.setReorderingOptions(Bidi.OPTION_REMOVE_CONTROLS);
+
+        for (option = 0; option < 2; option++) {
+            bidi.setReorderingOptions(option == 0 ? Bidi.OPTION_REMOVE_CONTROLS
+                                                  : Bidi.OPTION_INSERT_MARKS);
+            for (i = 0, nCases = testCases.length; i < nCases; i++) {
+                src = testCases[i].textIn;
+                srcU16 = pseudoToU16(src);
+                for (j = 0; j < 2; j++) {
+                    logln("Now doing test for option " + option +
+                          ", case " + i + ", level " + j);
+                    level = (byte)j;
+                    bidi.setPara(srcU16, level, null);
+                    destU16 = bidi.writeReordered(Bidi.DO_MIRRORING);
+                    dest = u16ToPseudo(destU16);
+                    checkWhatYouCan(bidi, src, dest);
+                    assertEquals("Reorder runs only failed for case " + i,
+                                 testCases[i].textOut[option][level],
+                                 dest, src, null, null, Byte.toString(level));
+
+                    if ((option == 0) && (testCases[i].noroundtrip[level] > 0)) {
+                        continue;
+                    }
+                    bidiL2V.setPara(srcU16, level, null);
+                    visual1U16 = bidiL2V.writeReordered(Bidi.DO_MIRRORING);
+                    visual1 = u16ToPseudo(visual1U16);
+                    checkWhatYouCan(bidiL2V, src, visual1);
+                    bidiL2V.setPara(destU16, (byte)(level^1), null);
+                    visual2U16 = bidiL2V.writeReordered(Bidi.DO_MIRRORING);
+                    visual2 = u16ToPseudo(visual2U16);
+                    checkWhatYouCan(bidiL2V, dest, visual2);
+                    assertEquals("Round trip failed for case " + i,
+                                 visual1, visual2, src,
+                                 "REORDER_RUNS_ONLY (2)",
+                                 option == 0 ? "0" : "OPTION_INSERT_MARKS",
+                                 Byte.toString(level));
+                }
+            }
+        }
+
+        /* test with null or empty text */
+        int paras;
+        bidi.setPara((String)null, Bidi.LTR, null);
+        paras = bidi.countParagraphs();
+        assertEquals("\nInvalid number of paras #1 (should be 0): ", 0, paras);
+        bidi.setPara((char[])null, Bidi.LTR, null);
+        paras = bidi.countParagraphs();
+        assertEquals("\nInvalid number of paras #2 (should be 0): ", 0, paras);
+        bidi.setPara("", Bidi.LTR, null);
+        paras = bidi.countParagraphs();
+        assertEquals("\nInvalid number of paras #3 (should be 0): ", 0, paras);
+        bidi.setPara(new char[0], Bidi.LTR, null);
+        paras = bidi.countParagraphs();
+        assertEquals("\nInvalid number of paras #4 (should be 0): ", 0, paras);
+
+        logln("\nExiting TestReorderRunsOnly\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestReorderRunsOnly().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
+
diff --git a/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java b/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java
new file mode 100644
index 0000000..9c17d4e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java
@@ -0,0 +1,712 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.util.Arrays;
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for variants to the UBA.
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestReorderingMode extends BidiTest {
+
+    static final String[] textIn = {
+    /* (0) 123 */
+        "123",
+    /* (1) .123->4.5 */
+        ".123->4.5",
+    /* (2) 678 */
+        "678",
+    /* (3) .678->8.9 */
+        ".678->8.9",
+    /* (4) JIH1.2,3MLK */
+        "JIH1.2,3MLK",
+    /* (5) FE.>12-> */
+        "FE.>12->",
+    /* (6) JIH.>12->a */
+        "JIH.>12->a",
+    /* (7) CBA.>67->89=a */
+        "CBA.>67->89=a",
+    /* (8) CBA.123->xyz */
+        "CBA.123->xyz",
+    /* (9) .>12->xyz */
+        ".>12->xyz",
+    /* (10) a.>67->xyz */
+        "a.>67->xyz",
+    /* (11) 123JIH */
+        "123JIH",
+    /* (12) 123 JIH */
+        "123 JIH"
+    };
+
+    static final String[] textOut = {
+    /* TC 0: 123 */
+        "123",                                                              /* (0) */
+    /* TC 1: .123->4.5 */
+        ".123->4.5",                                                        /* (1) */
+        "4.5<-123.",                                                        /* (2) */
+    /* TC 2: 678 */
+        "678",                                                              /* (3) */
+    /* TC 3: .678->8.9 */
+        ".8.9<-678",                                                        /* (4) */
+        "8.9<-678.",                                                        /* (5) */
+        ".678->8.9",                                                        /* (6) */
+    /* TC 4: MLK1.2,3JIH */
+        "KLM1.2,3HIJ",                                                      /* (7) */
+    /* TC 5: FE.>12-> */
+        "12<.EF->",                                                         /* (8) */
+        "<-12<.EF",                                                         /* (9) */
+        "EF.>@12->",                                                        /* (10) */
+    /* TC 6: JIH.>12->a */
+        "12<.HIJ->a",                                                       /* (11) */
+        "a<-12<.HIJ",                                                       /* (12) */
+        "HIJ.>@12->a",                                                      /* (13) */
+        "a&<-12<.HIJ",                                                      /* (14) */
+    /* TC 7: CBA.>67->89=a */
+        "ABC.>@67->89=a",                                                   /* (15) */
+        "a=89<-67<.ABC",                                                    /* (16) */
+        "a&=89<-67<.ABC",                                                   /* (17) */
+        "89<-67<.ABC=a",                                                    /* (18) */
+    /* TC 8: CBA.123->xyz */
+        "123.ABC->xyz",                                                     /* (19) */
+        "xyz<-123.ABC",                                                     /* (20) */
+        "ABC.@123->xyz",                                                    /* (21) */
+        "xyz&<-123.ABC",                                                    /* (22) */
+    /* TC 9: .>12->xyz */
+        ".>12->xyz",                                                        /* (23) */
+        "xyz<-12<.",                                                        /* (24) */
+        "xyz&<-12<.",                                                       /* (25) */
+    /* TC 10: a.>67->xyz */
+        "a.>67->xyz",                                                       /* (26) */
+        "a.>@67@->xyz",                                                     /* (27) */
+        "xyz<-67<.a",                                                       /* (28) */
+    /* TC 11: 123JIH */
+        "123HIJ",                                                           /* (29) */
+        "HIJ123",                                                           /* (30) */
+    /* TC 12: 123 JIH */
+        "123 HIJ",                                                          /* (31) */
+        "HIJ 123",                                                          /* (32) */
+    };
+
+    static final int[][][][] outIndices = {
+        { /* TC 0: 123 */
+            {{ 0,  0}, { 0,  0}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 0,  0}, { 0,  0}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  0}, { 0,  0}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 0,  0}, { 0,  0}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 1: .123->4.5 */
+            {{ 1,  2}, { 1,  2}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  2}, { 1,  2}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  2}, { 1,  2}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  2}, { 1,  2}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 2: 678 */
+            {{ 3,  3}, { 3,  3}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 3,  3}, { 3,  3}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 3,  3}, { 3,  3}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 3,  3}, { 3,  3}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 3: .678->8.9 */
+            {{ 6,  5}, { 6,  5}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 4,  5}, { 4,  5}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 6,  5}, { 6,  5}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 6,  5}, { 6,  5}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 4: MLK1.2,3JIH */
+            {{ 7,  7}, { 7,  7}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 7,  7}, { 7,  7}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 7,  7}, { 7,  7}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 7,  7}, { 7,  7}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 5: FE.>12-> */
+            {{ 8,  9}, { 8,  9}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{10,  9}, { 8,  9}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 8,  9}, { 8,  9}}, /* REORDER_NUMBERS_SPECIAL */
+            {{10,  9}, { 8,  9}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 6: JIH.>12->a */
+            {{11, 12}, {11, 12}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{13, 14}, {11, 12}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{11, 12}, {11, 12}}, /* REORDER_NUMBERS_SPECIAL */
+            {{13, 14}, {11, 12}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 7: CBA.>67->89=a */
+            {{18, 16}, {18, 16}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{18, 17}, {18, 16}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{18, 16}, {18, 16}}, /* REORDER_NUMBERS_SPECIAL */
+            {{15, 17}, {18, 16}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 8: CBA.>124->xyz */
+            {{19, 20}, {19, 20}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{21, 22}, {19, 20}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{19, 20}, {19, 20}}, /* REORDER_NUMBERS_SPECIAL */
+            {{21, 22}, {19, 20}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 9: .>12->xyz */
+            {{23, 24}, {23, 24}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{23, 25}, {23, 24}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{23, 24}, {23, 24}}, /* REORDER_NUMBERS_SPECIAL */
+            {{23, 25}, {23, 24}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 10: a.>67->xyz */
+            {{26, 26}, {26, 26}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{26, 27}, {26, 28}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{26, 28}, {26, 28}}, /* REORDER_NUMBERS_SPECIAL */
+            {{26, 27}, {26, 28}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 11: 124JIH */
+            {{30, 30}, {30, 30}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{29, 30}, {29, 30}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{30, 30}, {30, 30}}, /* REORDER_NUMBERS_SPECIAL */
+            {{30, 30}, {30, 30}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        },
+        { /* TC 12: 124 JIH */
+            {{32, 32}, {32, 32}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{31, 32}, {31, 32}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{31, 32}, {31, 32}}, /* REORDER_NUMBERS_SPECIAL */
+            {{31, 32}, {31, 32}}  /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+        }
+    };
+
+    static final short[] modes = {
+        Bidi.REORDER_GROUP_NUMBERS_WITH_R,
+        Bidi.REORDER_INVERSE_LIKE_DIRECT,
+        Bidi.REORDER_NUMBERS_SPECIAL,
+        Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL,
+        Bidi.REORDER_INVERSE_NUMBERS_AS_L
+    };
+
+    static final int[] options = { Bidi.OPTION_INSERT_MARKS, 0 };
+
+    static final byte[] paraLevels = { Bidi.LTR, Bidi.RTL };
+
+    static final int TC_COUNT = textIn.length;
+    static final int MODES_COUNT = modes.length;
+    static final int OPTIONS_COUNT = options.length;
+    static final int LEVELS_COUNT = paraLevels.length;
+
+    public void testReorderingMode() {
+
+        String src, dest;
+        Bidi bidi = new Bidi();
+        Bidi bidi2 = new Bidi();
+        Bidi bidi3 = new Bidi();
+        int tc, mode, option, level;
+        int modeValue, modeBack;
+        int optionValue, optionBack;
+        int index;
+        String expected;
+        boolean testOK = true;
+
+        logln("\nEntering TestReorderingMode\n");
+
+        bidi2.setInverse(true);
+
+        for (tc = 0; tc < TC_COUNT; tc++) {
+            src = textIn[tc];
+
+            for (mode = 0; mode < MODES_COUNT; mode++) {
+                modeValue = modes[mode];
+                bidi.setReorderingMode(modeValue);
+                modeBack = bidi.getReorderingMode();
+                if (modeValue != modeBack) {
+                    errln("Error while setting reordering mode to " +
+                    modeValue + ", returned " + modeBack);
+                }
+
+                for (option = 0; option < OPTIONS_COUNT; option++) {
+                    optionValue = options[option];
+                    bidi.setReorderingOptions(optionValue);
+                    optionBack = bidi.getReorderingOptions();
+                    if (optionValue != optionBack) {
+                        errln("Error while setting reordering options to " +
+                        modeValue + ", returned " + modeBack);
+                    }
+
+                    for (level = 0; level < LEVELS_COUNT; level++) {
+                        logln("starting test " + tc + " mode=" + modeValue +
+                            " option=" + optionValue + " level=" + level);
+                        bidi.setPara(pseudoToU16(src), paraLevels[level], null);
+
+                        dest = bidi.writeReordered(Bidi.DO_MIRRORING);
+                        dest = u16ToPseudo(dest);
+                        if (!((modeValue == Bidi.REORDER_INVERSE_NUMBERS_AS_L) &&
+                              (optionValue == Bidi.OPTION_INSERT_MARKS))) {
+                            checkWhatYouCan(bidi, src, dest);
+                        }
+                        String modeDesc = modeToString(modeValue);
+                        String optDesc = spOptionsToString(optionValue);
+
+                        if (modeValue == Bidi.REORDER_INVERSE_NUMBERS_AS_L) {
+                            index = -1;
+                            expected = inverseBasic(bidi2, src, optionValue,
+                                                    paraLevels[level]);
+                        }
+                        else {
+                            index = outIndices[tc][mode][option][level];
+                            expected = textOut[index];
+                        }
+                        if (!assertEquals("Actual and expected output mismatch",
+                                          expected, dest, src, modeDesc, optDesc,
+                                          String.valueOf(level))) {
+                            testOK = false;
+                            continue;
+                        }
+                        if ((optionValue == Bidi.OPTION_INSERT_MARKS) &&
+                            !assertRoundTrip(bidi3, tc, index, src, dest,
+                                             mode, option,
+                                             paraLevels[level])) {
+                            testOK = false;
+                            continue;
+                        }
+                        if (!checkResultLength(bidi, src, dest, modeDesc, optDesc,
+                                               paraLevels[level])) {
+                            testOK = false;
+                            continue;
+                        }
+                        if ((index > -1) &&
+                            !checkMaps(bidi, index, src, dest, modeDesc, optDesc,
+                                       paraLevels[level], true)) {
+                            testOK = false;
+                        }
+                    }
+                }
+            }
+        }
+        if (testOK) {
+            logln("Reordering mode test OK");
+        }
+
+        logln("\nExiting TestReorderingMode\n");
+    }
+
+    String inverseBasic(Bidi bidi, String src, int option, byte level) {
+        String dest2;
+
+        if (bidi == null || src == null) {
+            return null;
+        }
+        bidi.setReorderingOptions(option);
+        bidi.setPara(pseudoToU16(src), level, null);
+        dest2 = u16ToPseudo(bidi.writeReordered(Bidi.DO_MIRRORING));
+        if (!(option == Bidi.OPTION_INSERT_MARKS)) {
+            checkWhatYouCan(bidi, src, dest2);
+        }
+        return dest2;
+    }
+
+    static final byte roundtrip[][][][] =
+    {
+        { /* TC 0: 123 */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 1: .123->4.5 */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 2: 678 */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 3: .678->8.9 */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 0,  0}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 4: MLK1.2,3JIH */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 5: FE.>12-> */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 6: JIH.>12->a */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  0}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 7: CBA.>67->89=a */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 0,  0}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 8: CBA.>123->xyz */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 0,  0}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 9: .>12->xyz */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  0}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 10: a.>67->xyz */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  0}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 11: 123JIH */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        },
+        { /* TC 12: 123 JIH */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_GROUP_NUMBERS_WITH_R */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_LIKE_DIRECT */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}, /* REORDER_INVERSE_FOR_NUMBERS_SPECIAL */
+            {{ 1,  1}, { 1,  1}}  /* REORDER_INVERSE_NUMBERS_AS_L */
+        }
+    };
+
+    private boolean assertRoundTrip(Bidi bidi, int tc, int outIndex,
+                                    String src, String dest,
+                                    int mode, int option, byte level) {
+        String descMode, descOption;
+        String dest2;
+
+        switch (modes[mode]) {
+            case Bidi.REORDER_NUMBERS_SPECIAL:
+                bidi.setReorderingMode(Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL);
+                break;
+            case Bidi.REORDER_GROUP_NUMBERS_WITH_R:
+                bidi.setReorderingMode(Bidi.REORDER_GROUP_NUMBERS_WITH_R);
+                break;
+            case Bidi.REORDER_RUNS_ONLY:
+                bidi.setReorderingMode(Bidi.REORDER_RUNS_ONLY);
+                break;
+            case Bidi.REORDER_INVERSE_NUMBERS_AS_L:
+                bidi.setReorderingMode(Bidi.REORDER_DEFAULT);
+                break;
+            case Bidi.REORDER_INVERSE_LIKE_DIRECT:
+                bidi.setReorderingMode(Bidi.REORDER_DEFAULT);
+                break;
+            case Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL:
+                bidi.setReorderingMode(Bidi.REORDER_NUMBERS_SPECIAL);
+                break;
+            default:
+                bidi.setReorderingMode(Bidi.REORDER_INVERSE_LIKE_DIRECT);
+                break;
+        }
+        bidi.setReorderingOptions(Bidi.OPTION_REMOVE_CONTROLS);
+
+        bidi.setPara(pseudoToU16(dest), level, null);
+        dest2 = bidi.writeReordered(Bidi.DO_MIRRORING);
+
+        dest2 = u16ToPseudo(dest2);
+        checkWhatYouCan(bidi, dest, dest2);
+        descMode = modeToString(modes[mode]);
+        descOption = spOptionsToString(options[option]);
+        if (!src.equals(dest2)) {
+            if (roundtrip[tc][mode][option][level] == 1) {
+                errln("\nRound trip failed for case=" + tc +
+                      " mode=" + mode + " option=" + option +
+                      "\nOriginal text:      " + src +
+                      "\nRound-tripped text: " + dest2 +
+                      "\nIntermediate text:  " + dest +
+                      "\nReordering mode:    " + descMode +
+                      "\nReordering option:  " + descOption +
+                      "\nParagraph level:    " + level);
+            } else {
+                logln("\nExpected round trip failure for case=" + tc +
+                      " mode=" + mode + " option=" + option +
+                      "\nOriginal text:      " + src +
+                      "\nRound-tripped text: " + dest2 +
+                      "\nIntermediate text:  " + dest +
+                      "\nReordering mode:    " + descMode +
+                      "\nReordering option:  " + descOption +
+                      "\nParagraph level:    " + level);
+            }
+            return false;
+        }
+        if (!checkResultLength(bidi, dest, dest2, descMode,
+                               "OPTION_REMOVE_CONTROLS", level)) {
+            return false;
+        }
+        if ((outIndex > -1) &&
+            !checkMaps(bidi, outIndex, src, dest, descMode,
+                       "OPTION_REMOVE_CONTROLS", level, false)) {
+            return false;
+        }
+        return true;
+    }
+
+    private boolean checkResultLength(Bidi bidi, String src, String dest,
+                                   String mode, String option, byte level) {
+        int actualLen;
+        if (mode.equals("REORDER_INVERSE_NUMBERS_AS_L"))
+            actualLen = dest.length();
+        else
+            actualLen = bidi.getResultLength();
+        if (actualLen != dest.length()) {
+            errln("\nBidi.getResultLength failed." +
+                  "\nExpected:           " + dest.length() +
+                  "\nActual:             " + actualLen +
+                  "\nInput:              " + src +
+                  "\nOutput:             " + dest +
+                  "\nReordering mode:    " + mode +
+                  "\nReordering option:  " + option +
+                  "\nParagraph level:    " + level);
+            return false;
+        }
+        return true;
+    }
+
+    static String formatMap(int[] map)
+    {
+        char[] buffer = new char[map.length];
+        int i, k;
+        char c;
+        for (i = 0; i < map.length; i++) {
+            k = map[i];
+            if (k < 0)
+                c = '-';
+            else if (k >= columns.length)
+                c = '+';
+            else
+                c = columns[k];
+            buffer[i] = c;
+        }
+        return new String(buffer);
+    }
+
+    static final int NO = Bidi.MAP_NOWHERE;
+
+    static final int forwardMap[][] = {
+    /* TC 0: 123 */
+        { 0, 1, 2 },                                                    /* (0) */
+    /* TC 1: .123->4.5 */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (1) */
+        { 8, 5, 6, 7, 4, 3, 0, 1, 2 },                                  /* (2) */
+    /* TC 2: 678 */
+        { 0, 1, 2 },                                                    /* (3) */
+    /* TC 3: .678->8.9 */
+        { 0, 6, 7, 8, 5, 4, 1, 2, 3 },                                  /* (4) */
+        { 8, 5, 6, 7, 4, 3, 0, 1, 2 },                                  /* (5) */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (6) */
+    /* TC 4: MLK1.2,3JIH */
+        { 10, 9, 8, 3, 4, 5, 6, 7, 2, 1, 0 },                           /* (7) */
+    /* TC 5: FE.>12-> */
+        { 5, 4, 3, 2, 0, 1, 6, 7 },                                     /* (8) */
+        { 7, 6, 5, 4, 2, 3, 1, 0 },                                     /* (9) */
+        { 1, 0, 2, 3, 5, 6, 7, 8 },                                     /* (10) */
+    /* TC 6: JIH.>12->a */
+        { 6, 5, 4, 3, 2, 0, 1, 7, 8, 9 },                               /* (11) */
+        { 9, 8, 7, 6, 5, 3, 4, 2, 1, 0 },                               /* (12) */
+        { 2, 1, 0, 3, 4, 6, 7, 8, 9, 10 },                              /* (13) */
+        { 10, 9, 8, 7, 6, 4, 5, 3, 2, 0 },                              /* (14) */
+    /* TC 7: CBA.>67->89=a */
+        { 2, 1, 0, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13 },                  /* (15) */
+        { 12, 11, 10, 9, 8, 6, 7, 5, 4, 2, 3, 1, 0 },                   /* (16) */
+        { 13, 12, 11, 10, 9, 7, 8, 6, 5, 3, 4, 2, 0 },                  /* (17) */
+        { 10, 9, 8, 7, 6, 4, 5, 3, 2, 0, 1, 11, 12 },                   /* (18) */
+    /* TC 8: CBA.123->xyz */
+        { 6, 5, 4, 3, 0, 1, 2, 7, 8, 9, 10, 11 },                       /* (19) */
+        { 11, 10, 9, 8, 5, 6, 7, 4, 3, 0, 1, 2 },                       /* (20) */
+        { 2, 1, 0, 3, 5, 6, 7, 8, 9, 10, 11, 12 },                      /* (21) */
+        { 12, 11, 10, 9, 6, 7, 8, 5, 4, 0, 1, 2 },                      /* (22) */
+    /* TC 9: .>12->xyz */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (23) */
+        { 8, 7, 5, 6, 4, 3, 0, 1, 2 },                                  /* (24) */
+        { 9, 8, 6, 7, 5, 4, 0, 1, 2 },                                  /* (25) */
+    /* TC 10: a.>67->xyz */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },                               /* (26) */
+        { 0, 1, 2, 4, 5, 7, 8, 9, 10, 11 },                             /* (27) */
+        { 9, 8, 7, 5, 6, 4, 3, 0, 1, 2 },                               /* (28) */
+    /* TC 11: 123JIH */
+        { 0, 1, 2, 5, 4, 3 },                                           /* (29) */
+        { 3, 4, 5, 2, 1, 0 },                                           /* (30) */
+    /* TC 12: 123 JIH */
+        { 0, 1, 2, 3, 6, 5, 4 },                                        /* (31) */
+        { 4, 5, 6, 3, 2, 1, 0 },                                        /* (32) */
+    };
+    static final int inverseMap[][] = {
+    /* TC 0: 123 */
+        { 0, 1, 2 },                                                    /* (0) */
+    /* TC 1: .123->4.5 */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (1) */
+        { 6, 7, 8, 5, 4, 1, 2, 3, 0 },                                  /* (2) */
+    /* TC 2: 678 */
+        { 0, 1, 2 },                                                    /* (3) */
+    /* TC 3: .678->8.9 */
+        { 0, 6, 7, 8, 5, 4, 1, 2, 3 },                                  /* (4) */
+        { 6, 7, 8, 5, 4, 1, 2, 3, 0 },                                  /* (5) */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (6) */
+    /* TC 4: MLK1.2,3JIH */
+        { 10, 9, 8, 3, 4, 5, 6, 7, 2, 1, 0 },                           /* (7) */
+    /* TC 5: FE.>12-> */
+        { 4, 5, 3, 2, 1, 0, 6, 7 },                                     /* (8) */
+        { 7, 6, 4, 5, 3, 2, 1, 0 },                                     /* (9) */
+        { 1, 0, 2, 3, NO, 4, 5, 6, 7 },                                 /* (10) */
+    /* TC 6: JIH.>12->a */
+        { 5, 6, 4, 3, 2, 1, 0, 7, 8, 9 },                               /* (11) */
+        { 9, 8, 7, 5, 6, 4, 3, 2, 1, 0 },                               /* (12) */
+        { 2, 1, 0, 3, 4, NO, 5, 6, 7, 8, 9 },                           /* (13) */
+        { 9, NO, 8, 7, 5, 6, 4, 3, 2, 1, 0 },                           /* (14) */
+    /* TC 7: CBA.>67->89=a */
+        { 2, 1, 0, 3, 4, NO, 5, 6, 7, 8, 9, 10, 11, 12 },               /* (15) */
+        { 12, 11, 9, 10, 8, 7, 5, 6, 4, 3, 2, 1, 0 },                   /* (16) */
+        { 12, NO, 11, 9, 10, 8, 7, 5, 6, 4, 3, 2, 1, 0 },               /* (17) */
+        { 9, 10, 8, 7, 5, 6, 4, 3, 2, 1, 0, 11, 12 },                   /* (18) */
+    /* TC 8: CBA.123->xyz */
+        { 4, 5, 6, 3, 2, 1, 0, 7, 8, 9, 10, 11 },                       /* (19) */
+        { 9, 10, 11, 8, 7, 4, 5, 6, 3, 2, 1, 0 },                       /* (20) */
+        { 2, 1, 0, 3, NO, 4, 5, 6, 7, 8, 9, 10, 11 },                   /* (21) */
+        { 9, 10, 11, NO, 8, 7, 4, 5, 6, 3, 2, 1, 0 },                   /* (22) */
+    /* TC 9: .>12->xyz */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8 },                                  /* (23) */
+        { 6, 7, 8, 5, 4, 2, 3, 1, 0 },                                  /* (24) */
+        { 6, 7, 8, NO, 5, 4, 2, 3, 1, 0 },                              /* (25) */
+    /* TC 10: a.>67->xyz */
+        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },                               /* (26) */
+        { 0, 1, 2, NO, 3, 4, NO, 5, 6, 7, 8, 9 },                       /* (27) */
+        { 7, 8, 9, 6, 5, 3, 4, 2, 1, 0 },                               /* (28) */
+    /* TC 11: 123JIH */
+        { 0, 1, 2, 5, 4, 3 },                                           /* (29) */
+        { 5, 4, 3, 0, 1, 2 },                                           /* (30) */
+    /* TC 12: 123 JIH */
+        { 0, 1, 2, 3, 6, 5, 4 },                                        /* (31) */
+        { 6, 5, 4, 3, 0, 1, 2 },                                        /* (32) */
+    };
+
+    private boolean checkMaps(Bidi bidi, int stringIndex, String src, String dest,
+            String mode, String option, byte level, boolean forward) {
+
+        int[] actualLogicalMap;
+        int[] actualVisualMap;
+        int[] getIndexMap;
+        int i, srcLen, resLen, index;
+        int[] expectedLogicalMap, expectedVisualMap;
+        boolean testOK = true;
+
+        if (forward) {
+            expectedLogicalMap = forwardMap[stringIndex];
+            expectedVisualMap  = inverseMap[stringIndex];
+        } else {
+            expectedLogicalMap = inverseMap[stringIndex];
+            expectedVisualMap  = forwardMap[stringIndex];
+        }
+        actualLogicalMap = bidi.getLogicalMap();
+        srcLen = bidi.getProcessedLength();
+        if (!Arrays.equals(expectedLogicalMap, actualLogicalMap)) {
+            err("Bidi.getLogicalMap returned unexpected map for output " +
+                "string index " + stringIndex + "\n" +
+                "source: " + src + "\n" +
+                "dest  : " + dest + "\n" +
+                "Scale : " + columnString + "\n" +
+                "ExpMap: " + formatMap(expectedLogicalMap) + "\n" +
+                "Actual: " + formatMap(actualLogicalMap) + "\n" +
+                "Paragraph level  : " + level + " == " + bidi.getParaLevel() + "\n" +
+                "Reordering mode  : " + mode + " == " + bidi.getReorderingMode() + "\n" +
+                "Reordering option: " + option + " == " + bidi.getReorderingOptions() + "\n" +
+                "Forward flag     : " + forward + "\n");
+            testOK = false;
+        }
+        resLen = bidi.getResultLength();
+        actualVisualMap = bidi.getVisualMap();
+        if (!Arrays.equals(expectedVisualMap, actualVisualMap)) {
+            err("Bidi.getVisualMap returned unexpected map for output " +
+                "string index " + stringIndex + "\n" +
+                "source: " + src + "\n" +
+                "dest  : " + dest + "\n" +
+                "Scale : " + columnString + "\n" +
+                "ExpMap: " + formatMap(expectedVisualMap) + "\n" +
+                "Actual: " + formatMap(actualVisualMap) + "\n" +
+                "Paragraph level  : " + level + " == " + bidi.getParaLevel() + "\n" +
+                "Reordering mode  : " + mode + " == " + bidi.getReorderingMode() + "\n" +
+                "Reordering option: " + option + " == " + bidi.getReorderingOptions() + "\n" +
+                "Forward flag     : " + forward + "\n");
+            testOK = false;
+        }
+        getIndexMap = new int[srcLen];
+        for (i = 0; i < srcLen; i++) {
+            index = bidi.getVisualIndex(i);
+            getIndexMap[i] = index;
+        }
+        if (!Arrays.equals(actualLogicalMap, getIndexMap)) {
+            err("Mismatch between getLogicalMap and getVisualIndex for output " +
+                "string index " + stringIndex + "\n" +
+                "source: " + src + "\n" +
+                "dest  : " + dest + "\n" +
+                "Scale : " + columnString + "\n" +
+                "ActMap: " + formatMap(actualLogicalMap) + "\n" +
+                "IdxMap: " + formatMap(getIndexMap) + "\n" +
+                "Paragraph level  : " + level + " == " + bidi.getParaLevel() + "\n" +
+                "Reordering mode  : " + mode + " == " + bidi.getReorderingMode() + "\n" +
+                "Reordering option: " + option + " == " + bidi.getReorderingOptions() + "\n" +
+                "Forward flag     : " + forward + "\n");
+            testOK = false;
+        }
+        getIndexMap = new int[resLen];
+        for (i = 0; i < resLen; i++) {
+            index = bidi.getLogicalIndex(i);
+            getIndexMap[i] = index;
+        }
+        if (!Arrays.equals(actualVisualMap, getIndexMap)) {
+            err("Mismatch between getVisualMap and getLogicalIndex for output " +
+                "string index " + stringIndex + "\n" +
+                "source: " + src + "\n" +
+                "dest  : " + dest + "\n" +
+                "Scale : " + columnString + "\n" +
+                "ActMap: " + formatMap(actualVisualMap) + "\n" +
+                "IdxMap: " + formatMap(getIndexMap) + "\n" +
+                "Paragraph level  : " + level + " == " + bidi.getParaLevel() + "\n" +
+                "Reordering mode  : " + mode + " == " + bidi.getReorderingMode() + "\n" +
+                "Reordering option: " + option + " == " + bidi.getReorderingOptions() + "\n" +
+                "Forward flag     : " + forward + "\n");
+            testOK = false;
+        }
+        return testOK;
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestReorderingMode().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bidi/TestStreaming.java b/src/com/ibm/icu/dev/test/bidi/TestStreaming.java
new file mode 100644
index 0000000..6b015a0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bidi/TestStreaming.java
@@ -0,0 +1,149 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Bidi;
+
+/**
+ * Regression test for streaming mode
+ *
+ * @author Lina Kemmel, Matitiahu Allouche
+ */
+
+public class TestStreaming extends BidiTest {
+
+    static final int MAXPORTIONS = 10;
+
+    static class TestCase {
+        String textIn;
+        int chunk;
+        int[] nPortions;
+        int[][] portionLens;
+        String[] message;
+
+        public TestCase(String in, int ch, int[] np, int[][] lens, String[] msg) {
+            this.textIn = in;
+            this.chunk = ch;
+            this.nPortions = np;
+            this.portionLens = lens;
+            this.message = msg;
+        }
+    }
+
+    static final TestCase[] testCases = {
+        new TestCase("123\n"    +
+                     "abc45\r"  +
+                     "67890\n"  +
+                     "\r"       +
+                     "02468\r"  +
+                     "ghi",
+            6, new int[] { 6, 6 },
+            new int[][] {{ 6, 4, 6, 1, 6, 3}, { 4, 6, 6, 1, 6, 3 }},
+            new String[] {"6, 4, 6, 1, 6, 3", "4, 6, 6, 1, 6, 3"}
+        ),
+        new TestCase("abcd\nfgh\r12345\n456",
+            6, new int[] { 4, 4 },
+            new int[][] {{ 6, 3, 6, 3 }, { 5, 4, 6, 3 }},
+            new String[] {"6, 3, 6, 3", "5, 4, 6, 3"}
+        ),
+        new TestCase("abcd\nfgh\r12345\n45\r",
+            6, new int[] { 4, 4 },
+            new int[][] {{ 6, 3, 6, 3 }, { 5, 4, 6, 3 }},
+            new String[] {"6, 3, 6, 3", "5, 4, 6, 3"}
+        ),
+        new TestCase("abcde\nfghi",
+            10, new int[] { 1, 2 },
+            new int[][] {{ 10 }, { 6, 4 }},
+            new String[] {"10", "6, 4"}
+        )
+    };
+    static final int MAXLOOPS = 20;
+    static final byte[] paraLevels = { Bidi.LTR, Bidi.RTL };
+
+    public void testStreaming()
+    {
+        String src, subsrc;
+        Bidi bidi;
+        int srcLen, processedLen, chunk, len, nPortions, offset;
+        int i, j, levelIndex;
+        byte level;
+        int nTests = testCases.length, nLevels = paraLevels.length;
+        boolean mismatch, testOK = true;
+        StringBuffer processedLenStr = new StringBuffer(MAXLOOPS * 5);
+
+        logln("\nEntering TestStreaming\n");
+
+        bidi = new Bidi();
+
+        bidi.orderParagraphsLTR(true);
+
+        for (levelIndex = 0; levelIndex < nLevels; levelIndex++) {
+            for (i = 0; i < nTests; i++) {
+                src = testCases[i].textIn;
+                srcLen = src.length();
+                chunk = testCases[i].chunk;
+                nPortions = testCases[i].nPortions[levelIndex];
+                level = paraLevels[levelIndex];
+                processedLenStr.setLength(0);
+                logln("Testing level " + level + ", case " + i);
+
+                mismatch = false;
+
+                bidi.setReorderingOptions(Bidi.OPTION_STREAMING);
+                for (j = 0; j < MAXPORTIONS && srcLen > 0; j++) {
+                    len = chunk < srcLen ? chunk : srcLen;
+                    offset = src.length() - srcLen;
+                    subsrc = src.substring(offset, offset + len);
+                    bidi.setPara(subsrc, level, null);
+
+                    processedLen = bidi.getProcessedLength();
+                    if (processedLen == 0) {
+                        bidi.setReorderingOptions(Bidi.OPTION_DEFAULT);
+                        j--;
+                        continue;
+                    }
+                    bidi.setReorderingOptions(Bidi.OPTION_STREAMING);
+
+                    mismatch |= j >= nPortions ||
+                               processedLen != testCases[i].portionLens[levelIndex][j];
+
+                    processedLenStr.append(Integer.toString(processedLen) + " ");
+                    srcLen -= processedLen;
+                }
+
+                if (mismatch || j != nPortions) {
+                    testOK = false;
+                    errln("\nProcessed lengths mismatch for" +
+                          "\n\tParagraph level = " + level +
+                          "\n\tInput string: " + Utility.escape(src) +
+                          "\n\tChunk = " + chunk +
+                          "\n\tActually processed portion lengths: { " +
+                                processedLenStr + " }" +
+                          "\n\tExpected portion lengths          : { " +
+                                testCases[i].message[levelIndex] + " }\n");
+                }
+            }
+        }
+        if (testOK) {
+            logln("\nBidi streaming test OK");
+        }
+        logln("\nExiting TestStreaming\n");
+    }
+
+
+    public static void main(String[] args) {
+        try {
+            new TestStreaming().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java b/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
new file mode 100644
index 0000000..87498e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
@@ -0,0 +1,5624 @@
+//##header J2SE15
+/* Generated from 'DiagBigDecimal.nrx' 27 Mar 2000 22:38:44 [v1.162] */
+/* Options: Binary Comments Crossref Format Java Logo Trace1 Verbose3 */
+package com.ibm.icu.dev.test.bigdec;
+
+import java.math.BigInteger;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.VersionInfo;
+
+/* ------------------------------------------------------------------ */
+/* Decimal diagnostic tests mfc */
+/* Copyright (c) IBM Corporation 1996-2007. All Rights Reserved. */
+/* ------------------------------------------------------------------ */
+/* DiagBigDecimal */
+/*                                                                    */
+/* A class that tests the BigDecimal and MathContext classes. */
+/*                                                                    */
+/* The tests here are derived from or cover the same paths as: */
+/* -- ANSI X3-274 testcases */
+/* -- Java JCK testcases */
+/* -- NetRexx testcases */
+/* -- VM/CMS S/370 REXX implementation testcases [1981+] */
+/* -- IBM Vienna Laboratory Rexx compiler testcases [1988+] */
+/* -- New testcases */
+/*                                                                    */
+/* The authoritative sources for how the underlying technology */
+/* (arithmetic) should work are: */
+/* -- for digits=0 (fixed point): java.math.BigDecimal */
+/* -- for digits>0 (floating point): ANSI X3.274-1996 + errata */
+/*                                                                    */
+/* ------------------------------------------------------------------ */
+/* Change list */
+/* 1997.09.05 Initial implementation, from DiagRexx [NetRexx tests] */
+/* 1998.05.02 0.07 changes (e.g., compareTo) */
+/* 1998.06.06 Rounding modes and format additions */
+/* 1998.06.25 Rename from DiagDecimal; make stand-alone [add */
+/* DiagException as a Minor class] */
+/* 1998.06.27 Start adding testcases for DIGITS=0/FORM=PLAIN cases */
+/* Reorganize for faster trace compilation */
+/* 1998.06.28 new: valueof, scale, movePointX, unscaledValue, etc. */
+/* 1998.07.07 Scaled divide */
+/* 1998.07.08 setScale */
+/* 1998.07.15 new scaffolding (Minor Test class) -- see diagabs */
+/* 1998.12.14 add toBigDecimal and BigDecimal(java.math.BigDecimal) */
+/* 1999.02.04 number preparation rounds instead of digits+1 trunc */
+/* 1999.02.09 format method now only has two signatures */
+/* 1999.02.27 no longer use Rexx class or RexxIO class */
+/* 1999.03.05 add MathContext tests */
+/* 1999.03.05 update for 0.96 [no null settings, etc.] */
+/* drop sundry constructors; no blanks; char[] gets ints */
+/* drop sundry converters, add Exact converters */
+/* 1999.05.27 additional tests for scaled arithmetic */
+/* 1999.06.29 additional tests for exponent overflows */
+/* 1999.07.03 add 'continue' option */
+/* 1999.07.10 additional tests for scaled arithmetic */
+/* 1999.07.18 randomly-generated tests added for base operators */
+/* 1999.10.28 weird intValueExact bad cases */
+/* 1999.12.21 multiplication fast path failure and edge cases */
+/* 2000.01.01 copyright update */
+/* 2000.03.26 cosmetic updates; add extra format() testcases */
+/* 2000.03.27 1.00 move to com.ibm.icu.math package; open source release; */
+/* change to javadoc comments */
+/* ------------------------------------------------------------------ */
+
+// note BINARY for conversions checking
+
+/**
+ * The <code>DiagBigDecimal</code> class forms a standalone test suite for the
+ * <code>com.ibm.icu.math.BigDecimal</code> and
+ * <code>com.ibm.icu.math.MathContext</code> classes (or, by changing the
+ * <code>package</code> statement, other classes of the same names and
+ * definition in other packages). It may also be used as a constructed object to
+ * embed the tests in an external test harness.
+ * <p>
+ * The tests are collected into <i>groups</i>, each corresponding to a tested
+ * method or a more general grouping. By default, when run from the static
+ * {@link #main(java.lang.String[])} method, the run will end if any test fails
+ * in a group. The <code>continue</code> argument may be specified to force
+ * the tests to run to completion.
+ * <p>
+ * Two minor (inner) classes are used; {@link DiagBigDecimal.DiagException} is
+ * used to signal the failure of a test group, and {@link DiagBigDecimal.Test},
+ * a dependent minor class, is used to register tests so that a summary of
+ * failures (or success) can be presented as each group is completed.
+ * 
+ * @see com.ibm.icu.math.BigDecimal
+ * @see com.ibm.icu.math.MathContext
+ * @version 1.00 2000.03.27
+ * @author Mike Cowlishaw
+ */
+
+public class DiagBigDecimal extends TestFmwk {
+    //private static final java.lang.String $0 = "DiagBigDecimal.nrx";
+
+    /* properties shared */
+    java.util.Vector Tests = new java.util.Vector(100); // scaffolding
+
+    /* properties private */
+    private int totalcount = 0; // counts tests run
+
+    /* properties constant private */
+
+    /* Count of test groups */
+    private static final int testcount = 38;
+
+    private static final com.ibm.icu.math.BigDecimal zero = com.ibm.icu.math.BigDecimal.ZERO;
+    private static final com.ibm.icu.math.BigDecimal one = com.ibm.icu.math.BigDecimal.ONE;
+    private static final com.ibm.icu.math.BigDecimal two = new com.ibm.icu.math.BigDecimal(2);
+    private static final com.ibm.icu.math.BigDecimal ten = com.ibm.icu.math.BigDecimal.TEN;
+    private static final com.ibm.icu.math.BigDecimal tenlong = new com.ibm.icu.math.BigDecimal((long) 1234554321); // 10-digiter
+
+    /* Some context objects -- [some of these are checked later] */
+    private static final com.ibm.icu.math.MathContext mcdef = com.ibm.icu.math.MathContext.DEFAULT;
+    private static final com.ibm.icu.math.MathContext mc3 = new com.ibm.icu.math.MathContext(3);
+    private static final com.ibm.icu.math.MathContext mc6 = new com.ibm.icu.math.MathContext(6);
+    private static final com.ibm.icu.math.MathContext mc9 = new com.ibm.icu.math.MathContext(9);
+    private static final com.ibm.icu.math.MathContext mc50 = new com.ibm.icu.math.MathContext(50);
+    private static final com.ibm.icu.math.MathContext mcs = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC);
+    private static final com.ibm.icu.math.MathContext mce = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.ENGINEERING);
+    private static final com.ibm.icu.math.MathContext mcld = new com.ibm.icu.math.MathContext(9, com.ibm.icu.math.MathContext.SCIENTIFIC, true); // lost digits
+    private static final com.ibm.icu.math.MathContext mcld0 = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.SCIENTIFIC, true); // lost digits, digits=0
+    private static final com.ibm.icu.math.MathContext mcfd = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.PLAIN); // fixed decimal style
+
+    /* boundary primitive values */
+    private static final byte bmin = -128;
+    private static final byte bmax = 127;
+    private static final byte bzer = 0;
+    private static final byte bneg = -1;
+    private static final byte bpos = 1;
+    private static final int imin = -2147483648;
+    private static final int imax = 2147483647;
+    private static final int izer = 0;
+    private static final int ineg = -1;
+    private static final int ipos = 1;
+    private static final long lmin = -9223372036854775808L;
+    private static final long lmax = 9223372036854775807L;
+    private static final long lzer = (long) 0;
+    private static final long lneg = (long) -1;
+    private static final long lpos = (long) 1;
+    private static final short smin = -32768;
+    private static final short smax = 32767;
+    private static final short szer = (short) 0;
+    private static final short sneg = (short) (-1);
+    private static final short spos = (short) 1;
+
+    /**
+     * Constructs a <code>DiagBigDecimal</code> test suite.
+     * <p>
+     * Invoke its {@link #diagrun} method to run the tests.
+     */
+
+    public DiagBigDecimal() {
+        super();
+    }
+
+    static final boolean isJDK15OrLater = VersionInfo.javaVersion().compareTo(
+            VersionInfo.getInstance(1, 5)) >= 0;
+
+    /**
+     * Run the tests in the test suite.
+     * 
+     * @param isContinue
+     *            The <code>boolean</code> which determines whether to stop
+     *            running after a group fails. If 1 (true) then the tests should
+     *            be run to completion if possible; if 0 (false) then the run
+     *            will end if a group fails.
+     * @return an <code>int</code> which is 0 if all tests were successful, >0
+     *         (the count of failures) if some failures were detected, or <0 if
+     *         an unexpected Exception was signalled.
+     */
+
+    public int diagrun(boolean isContinue) {
+        int fails;
+        int num = 0;
+        DiagException de = null;
+        java.lang.RuntimeException e = null;
+        java.lang.String rest = null;
+
+        fails = 0; // count of failures
+        try {
+            num = 1;
+            num: for (; num <= testcount; num++) { // [testcount is constant
+                                                    // set above]
+                try {
+                    dotest(num);
+                } catch (DiagException $1) {
+                    de = $1;
+                    say();
+                    errln("**** Failed:" + " " + de.getMessage() + " " + "****");
+                    say();
+                    fails = fails + de.failcount;
+                    if ((!isContinue))
+                        break num;
+                }
+            }
+        } catch (java.lang.RuntimeException $2) {
+            e = $2; // any other exception is total failure; just show trace and
+                    // quit
+            say();
+            errln("**** Failed: unexpected exception ****");
+            e.printStackTrace();
+            return -1;
+        }/* num */
+
+        if (fails == 0)
+            say("--- All OK ---" + " "
+                    + right("[" + totalcount + " " + "tests]", 15));
+        else {
+            if (isContinue) {
+                if (fails > 1)
+                    rest = "tests";
+                else
+                    rest = "test";
+                say("--- All run ---" + " "
+                        + right("[" + totalcount + " " + "tests,", 14) + " "
+                        + "failed" + " " + fails + " " + rest + "]");
+
+            }
+        }
+
+        return fails;
+    }
+
+    /* Run test by number -- method for development/private switching */
+
+    private void dotest(int num) {
+        {/* select */
+            switch (num) {
+            /* -------------------------------------------------------------- */
+            /* MathContext */
+            /* -------------------------------------------------------------- */
+            case 1:
+                diagmathcontext();
+                break;
+
+            /* -------------------------------------------------------------- */
+            /* Constructors */
+            /* -------------------------------------------------------------- */
+            case 2:
+                diagconstructors();
+                break;
+
+            /* -------------------------------------------------------------- */
+            /* Operator methods */
+            /* -------------------------------------------------------------- */
+            case 3:
+                diagabs();
+                break;
+            case 4:
+                diagadd();
+                break;
+            case 5:
+                diagcompareto();
+                break;
+            case 6:
+                diagdivide();
+                break;
+            case 7:
+                diagdivideInteger();
+                break;
+            case 8:
+                diagmax();
+                break;
+            case 9:
+                diagmin();
+                break;
+            case 10:
+                diagmultiply();
+                break;
+            case 11:
+                diagnegate();
+                break;
+            case 12:
+                diagplus();
+                break;
+            case 13:
+                diagpow();
+                break;
+            case 14:
+                diagremainder();
+                break;
+            case 15:
+                diagsubtract();
+                break;
+            case 16:
+                diagmath();
+                break; // general math
+
+            /* -------------------------------------------------------------- */
+            /* Other methods */
+            /* -------------------------------------------------------------- */
+            case 17:
+                diagbyteValue();
+                break;
+            case 18:
+                diagcomparetoObj();
+                break;
+            case 19:
+                diagdoublevalue();
+                break;
+            case 20:
+                diagequals();
+                break;
+            case 21:
+                diagfloatvalue();
+                break;
+            case 22:
+                diagformat();
+                break;
+            case 23:
+                diaghashcode();
+                break;
+            case 24:
+                diagintvalue();
+                break;
+            case 25:
+                diaglongvalue();
+                break;
+            case 26:
+                diagmovepointleft();
+                break;
+            case 27:
+                diagmovepointright();
+                break;
+            case 28:
+                diagscale();
+                break;
+            case 29:
+                diagsetscale();
+                break;
+            case 30:
+                diagshortvalue();
+                break;
+            case 31:
+                diagsignum();
+                break;
+            case 32:
+                diagtobigdecimal();
+                break;
+            case 33:
+                diagtobiginteger();
+                break;
+            case 34:
+                diagtochararray();
+                break;
+            case 35:
+                diagtostring();
+                break;
+            case 36:
+                diagunscaledvalue();
+                break;
+            case 37:
+                diagvalueof();
+                break;
+
+            /* -------------------------------------------------------------- */
+            /* Mutation test [must be the last test] */
+            /* -------------------------------------------------------------- */
+            case 38:
+                diagmutation();
+                break;
+            // if any more, increase testcount above
+            default: {
+                say("*** dotest case not found:" + " " + num + " " + "***");
+            }
+            }
+        }
+        return;
+    }
+
+    /*--------------------------------------------------------------------*/
+    /* Diagnostic group methods */
+    /*--------------------------------------------------------------------*/
+
+    /** Test constructors (and {@link #toString()} for equalities). */
+
+    public void diagconstructors() {
+        boolean flag = false;
+        java.lang.String num;
+        java.math.BigInteger bip;
+        java.math.BigInteger biz;
+        java.math.BigInteger bin;
+        com.ibm.icu.math.BigDecimal bda;
+        com.ibm.icu.math.BigDecimal bdb;
+        com.ibm.icu.math.BigDecimal bmc;
+        com.ibm.icu.math.BigDecimal bmd;
+        com.ibm.icu.math.BigDecimal bme;
+        java.lang.RuntimeException e = null;
+        char ca[];
+        double dzer;
+        double dpos;
+        double dneg;
+        double dpos5;
+        double dneg5;
+        double dmin;
+        double dmax;
+        double d;
+        java.lang.String badstrings[];
+        int i = 0;
+
+        // constants [statically-called constructors]
+        (new Test("con001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");
+        (new Test("con002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");
+        (new Test("con003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");
+        (new Test("con004")).ok = (com.ibm.icu.math.BigDecimal.ZERO.intValueExact()) == 0;
+        (new Test("con005")).ok = (com.ibm.icu.math.BigDecimal.ONE.intValueExact()) == 1;
+        (new Test("con006")).ok = (com.ibm.icu.math.BigDecimal.TEN.intValueExact()) == 10;
+
+        // [java.math.] BigDecimal
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        (new Test("cbd001")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0"))).toString()).equals("0");
+        (new Test("cbd002")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1"))).toString()).equals("1");
+        (new Test("cbd003")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10"))).toString()).equals("10");
+        (new Test("cbd004")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("1000"))).toString()).equals("1000");
+        (new Test("cbd005")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.0"))).toString()).equals("10.0");
+        (new Test("cbd006")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("10.1"))).toString()).equals("10.1");
+        (new Test("cbd007")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-1.1"))).toString()).equals("-1.1");
+        (new Test("cbd008")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("-9.0"))).toString()).equals("-9.0");
+        (new Test("cbd009")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal("0.9"))).toString()).equals("0.9");
+
+        num = "123456789.123456789";
+        (new Test("cbd010")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+        num = "123456789.000000000";
+        (new Test("cbd011")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+        num = "123456789000000000";
+        (new Test("cbd012")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+        num = "0.00000123456789";
+        (new Test("cbd013")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+        num = "0.000000123456789";
+
+        // ignore format change issues with 1.5
+        if (!isJDK15OrLater)
+            (new Test("cbd014")).ok = ((new com.ibm.icu.math.BigDecimal(new java.math.BigDecimal(num))).toString()).equals(num);
+
+        try {
+            new com.ibm.icu.math.BigDecimal((java.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $3) {
+            flag = true;
+        }/* checknull */
+        (new Test("cbi015")).ok = flag;
+//#endif
+
+        // BigInteger
+        bip = new BigInteger("987654321987654321987654321"); // biggie +ve
+        biz = new BigInteger("0"); // biggie 0
+        bin = new BigInteger("-12345678998765432112345678"); // biggie -ve
+        (new Test("cbi001")).ok = ((new com.ibm.icu.math.BigDecimal(bip)).toString()).equals(bip.toString());
+        (new Test("cbi002")).ok = ((new com.ibm.icu.math.BigDecimal(biz)).toString()).equals("0");
+        (new Test("cbi003")).ok = ((new com.ibm.icu.math.BigDecimal(bin)).toString()).equals(bin.toString());
+        try {
+            new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $4) {
+            flag = true;
+        }/* checknull */
+        (new Test("cbi004")).ok = flag;
+
+        // BigInteger with scale
+        bip = new BigInteger("123456789"); // bigish
+        bda = new com.ibm.icu.math.BigDecimal(bip);
+        bdb = new com.ibm.icu.math.BigDecimal(bip, 5);
+        bmc = new com.ibm.icu.math.BigDecimal(bip, 15);
+        (new Test("cbs001")).ok = (bda.toString()).equals("123456789");
+        (new Test("cbs002")).ok = (bdb.toString()).equals("1234.56789");
+        (new Test("cbs003")).ok = (bmc.toString()).equals("0.000000123456789");
+        bip = new BigInteger("123456789123456789123456789"); // biggie
+        bda = new com.ibm.icu.math.BigDecimal(bip);
+        bdb = new com.ibm.icu.math.BigDecimal(bip, 7);
+        bmc = new com.ibm.icu.math.BigDecimal(bip, 13);
+        bmd = new com.ibm.icu.math.BigDecimal(bip, 19);
+        bme = new com.ibm.icu.math.BigDecimal(bip, 29);
+        (new Test("cbs011")).ok = (bda.toString()).equals("123456789123456789123456789");
+        (new Test("cbs012")).ok = (bdb.toString()).equals("12345678912345678912.3456789");
+        (new Test("cbs013")).ok = (bmc.toString()).equals("12345678912345.6789123456789");
+        (new Test("cbs014")).ok = (bmd.toString()).equals("12345678.9123456789123456789");
+        (new Test("cbs015")).ok = (bme.toString()).equals("0.00123456789123456789123456789");
+        try {
+            new com.ibm.icu.math.BigDecimal((java.math.BigInteger) null, 1);
+            flag = false;
+        } catch (java.lang.NullPointerException $5) {
+            flag = true;
+        }/* checknull */
+        (new Test("cbs004")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal(bip, -8);
+            flag = false;
+        } catch (java.lang.RuntimeException $6) {
+            e = $6;
+            flag = (e.getMessage()).equals("Negative scale: -8");
+        }/* checkscale */
+        (new Test("cbs005")).ok = flag;
+
+        // char[]
+        // We just test it's there
+        // Functionality is tested by BigDecimal(String).
+        ca = ("123.45").toCharArray();
+        (new Test("cca001")).ok = ((new com.ibm.icu.math.BigDecimal(ca))
+                .toString()).equals("123.45");
+        try {
+            new com.ibm.icu.math.BigDecimal((char[]) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $7) {
+            flag = true;
+        }/* checknull */
+        (new Test("cca010")).ok = flag;
+
+        // char[],int,int
+        // We just test it's there, and that offsets work.
+        // Functionality is tested by BigDecimal(String).
+        ca = ("123.45").toCharArray();
+        (new Test("cca101")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 6)).toString()).equals("123.45");
+        (new Test("cca102")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 5)).toString()).equals("23.45");
+        (new Test("cca103")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 4)).toString()).equals("3.45");
+        (new Test("cca104")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 3)).toString()).equals("0.45");
+        (new Test("cca105")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 2)).toString()).equals("45");
+        (new Test("cca106")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 5, 1)).toString()).equals("5");
+
+        (new Test("cca110")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 1)).toString()).equals("1");
+        (new Test("cca111")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");
+        (new Test("cca112")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 1)).toString()).equals("3");
+        (new Test("cca113")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");
+
+        (new Test("cca120")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 2)).toString()).equals("12");
+        (new Test("cca121")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 2)).toString()).equals("23");
+        (new Test("cca122")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 2)).toString()).equals("3");
+        (new Test("cca123")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 3, 2)).toString()).equals("0.4");
+
+        (new Test("cca130")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 3)).toString()).equals("123");
+        (new Test("cca131")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 3)).toString()).equals("23");
+        (new Test("cca132")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 3)).toString()).equals("3.4");
+
+        (new Test("cca140")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 4)).toString()).equals("123");
+        (new Test("cca141")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");
+
+        (new Test("cca150")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 5)).toString()).equals("123.4");
+
+        // a couple of oddies
+        ca = ("x23.4x").toCharArray();
+        (new Test("cca160")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 4)).toString()).equals("23.4");
+        (new Test("cca161")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 1)).toString()).equals("2");
+        (new Test("cca162")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 4, 1)).toString()).equals("4");
+
+        ca = ("0123456789.9876543210").toCharArray();
+        (new Test("cca163")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 0, 21)).toString()).equals("123456789.9876543210");
+        (new Test("cca164")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 1, 20)).toString()).equals("123456789.9876543210");
+        (new Test("cca165")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 19)).toString()).equals("23456789.9876543210");
+        (new Test("cca166")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 18)).toString()).equals("23456789.987654321");
+        (new Test("cca167")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 17)).toString()).equals("23456789.98765432");
+        (new Test("cca168")).ok = ((new com.ibm.icu.math.BigDecimal(ca, 2, 16)).toString()).equals("23456789.9876543");
+
+        try {
+            new com.ibm.icu.math.BigDecimal((char[]) null, 0, 1);
+            flag = false;
+        } catch (java.lang.NullPointerException $8) {
+            flag = true;
+        }/* checknull */
+        (new Test("cca200")).ok = flag;
+
+        try {
+            new com.ibm.icu.math.BigDecimal("123".toCharArray(), 0, 0);
+            flag = false;
+        } catch (java.lang.NumberFormatException $9) {
+            flag = true;
+        }/* checklen */
+        (new Test("cca201")).ok = flag;
+
+        try {
+            new com.ibm.icu.math.BigDecimal("123".toCharArray(), 2, 4);
+            flag = false;
+        } catch (java.lang.RuntimeException $10) { // anything OK
+            flag = true;
+        }/* checkbound */
+        (new Test("cca202")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal("123".toCharArray(), -1, 2);
+            flag = false;
+        } catch (java.lang.RuntimeException $11) { // anything OK
+            flag = true;
+        }/* checkbound2 */
+        (new Test("cca203")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal("123".toCharArray(), 1, -2);
+            flag = false;
+        } catch (java.lang.RuntimeException $12) { // anything OK
+            flag = true;
+        }/* checkbound3 */
+        (new Test("cca204")).ok = flag;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        // double [deprecated]
+        // Note that many of these differ from the valueOf(double) results.
+        dzer = (double) 0;
+        dpos = (double) 1;
+        dpos = dpos / ((double) 10);
+        dneg = (double) -dpos;
+        (new Test("cdo001")).ok = ((new com.ibm.icu.math.BigDecimal(dneg)).toString()).equals("-0.1000000000000000055511151231257827021181583404541015625");
+
+        (new Test("cdo002")).ok = ((new com.ibm.icu.math.BigDecimal(dzer)).toString()).equals("0"); // NB, not '0.0'
+        (new Test("cdo003")).ok = ((new com.ibm.icu.math.BigDecimal(dpos)).toString()).equals("0.1000000000000000055511151231257827021181583404541015625");
+
+        dpos5 = (double) 0.5D;
+        dneg5 = (double) -dpos5;
+        (new Test("cdo004")).ok = ((new com.ibm.icu.math.BigDecimal(dneg5)).toString()).equals("-0.5");
+        (new Test("cdo005")).ok = ((new com.ibm.icu.math.BigDecimal(dpos5)).toString()).equals("0.5");
+        dmin = java.lang.Double.MIN_VALUE;
+        dmax = java.lang.Double.MAX_VALUE;
+        if (!isJDK15OrLater) // for some reason we format using scientific
+                                // notation on 1.5 after 30 decimals or so
+            (new Test("cdo006")).ok = ((new com.ibm.icu.math.BigDecimal(dmin)).toString()).equals("0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625");
+
+        (new Test("cdo007")).ok = ((new com.ibm.icu.math.BigDecimal(dmax)).toString()).equals("179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368");
+
+        // nasties
+        d = (double) 9;
+        d = d / ((double) 10);
+        (new Test("cdo010")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.90000000000000002220446049250313080847263336181640625");
+
+        d = d / ((double) 10);
+        (new Test("cdo011")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0899999999999999966693309261245303787291049957275390625");
+
+        d = d / ((double) 10);
+        (new Test("cdo012")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00899999999999999931998839741709161899052560329437255859375");
+
+        d = d / ((double) 10);
+        (new Test("cdo013")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00089999999999999997536692664112933925935067236423492431640625");
+
+        d = d / ((double) 10);
+        (new Test("cdo014")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00008999999999999999211568180168541175589780323207378387451171875");
+
+        d = d / ((double) 10);
+        (new Test("cdo015")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.00000899999999999999853394182236510090433512232266366481781005859375");
+
+        d = d / ((double) 10);
+        if (!isJDK15OrLater)
+            (new Test("cdo016")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000899999999999999853394182236510090433512232266366481781005859375");
+
+        d = d / ((double) 10);
+        if (!isJDK15OrLater)
+            (new Test("cdo017")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.0000000899999999999999853394182236510090433512232266366481781005859375");
+
+        d = d / ((double) 10);
+        if (!isJDK15OrLater)
+            (new Test("cdo018")).ok = ((new com.ibm.icu.math.BigDecimal(d)).toString()).equals("0.000000008999999999999997872197332322678764437995369007694534957408905029296875");
+//#endif
+
+        try {
+            new com.ibm.icu.math.BigDecimal(
+                    java.lang.Double.POSITIVE_INFINITY);
+            flag = false;
+        } catch (java.lang.NumberFormatException $13) {
+            flag = true;
+        }/* checkpin */
+        (new Test("cdo101")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal(
+                    java.lang.Double.NEGATIVE_INFINITY);
+            flag = false;
+        } catch (java.lang.NumberFormatException $14) {
+            flag = true;
+        }/* checknin */
+        (new Test("cdo102")).ok = flag;
+        try {
+            new com.ibm.icu.math.BigDecimal(java.lang.Double.NaN);
+            flag = false;
+        } catch (java.lang.NumberFormatException $15) {
+            flag = true;
+        }/* checknan */
+        (new Test("cdo103")).ok = flag;
+
+        // int
+        (new Test("cin001")).ok = ((new com.ibm.icu.math.BigDecimal(imin)).toString()).equals("-2147483648");
+        (new Test("cin002")).ok = ((new com.ibm.icu.math.BigDecimal(imax)).toString()).equals("2147483647");
+        (new Test("cin003")).ok = ((new com.ibm.icu.math.BigDecimal(ineg)).toString()).equals("-1");
+        (new Test("cin004")).ok = ((new com.ibm.icu.math.BigDecimal(izer)).toString()).equals("0");
+        (new Test("cin005")).ok = ((new com.ibm.icu.math.BigDecimal(ipos)).toString()).equals("1");
+        (new Test("cin006")).ok = ((new com.ibm.icu.math.BigDecimal(10)).toString()).equals("10");
+        (new Test("cin007")).ok = ((new com.ibm.icu.math.BigDecimal(9)).toString()).equals("9");
+        (new Test("cin008")).ok = ((new com.ibm.icu.math.BigDecimal(5)).toString()).equals("5");
+        (new Test("cin009")).ok = ((new com.ibm.icu.math.BigDecimal(2)).toString()).equals("2");
+        (new Test("cin010")).ok = ((new com.ibm.icu.math.BigDecimal(-2)).toString()).equals("-2");
+        (new Test("cin011")).ok = ((new com.ibm.icu.math.BigDecimal(-5)).toString()).equals("-5");
+        (new Test("cin012")).ok = ((new com.ibm.icu.math.BigDecimal(-9)).toString()).equals("-9");
+        (new Test("cin013")).ok = ((new com.ibm.icu.math.BigDecimal(-10)).toString()).equals("-10");
+        (new Test("cin014")).ok = ((new com.ibm.icu.math.BigDecimal(-11)).toString()).equals("-11");
+        (new Test("cin015")).ok = ((new com.ibm.icu.math.BigDecimal(-99)).toString()).equals("-99");
+        (new Test("cin016")).ok = ((new com.ibm.icu.math.BigDecimal(-100)).toString()).equals("-100");
+        (new Test("cin017")).ok = ((new com.ibm.icu.math.BigDecimal(-999)).toString()).equals("-999");
+        (new Test("cin018")).ok = ((new com.ibm.icu.math.BigDecimal(-1000)).toString()).equals("-1000");
+
+        (new Test("cin019")).ok = ((new com.ibm.icu.math.BigDecimal(11)).toString()).equals("11");
+        (new Test("cin020")).ok = ((new com.ibm.icu.math.BigDecimal(99)).toString()).equals("99");
+        (new Test("cin021")).ok = ((new com.ibm.icu.math.BigDecimal(100)).toString()).equals("100");
+        (new Test("cin022")).ok = ((new com.ibm.icu.math.BigDecimal(999)).toString()).equals("999");
+        (new Test("cin023")).ok = ((new com.ibm.icu.math.BigDecimal(1000)).toString()).equals("1000");
+
+        // long
+        (new Test("clo001")).ok = ((new com.ibm.icu.math.BigDecimal(lmin)).toString()).equals("-9223372036854775808");
+        (new Test("clo002")).ok = ((new com.ibm.icu.math.BigDecimal(lmax)).toString()).equals("9223372036854775807");
+        (new Test("clo003")).ok = ((new com.ibm.icu.math.BigDecimal(lneg)).toString()).equals("-1");
+        (new Test("clo004")).ok = ((new com.ibm.icu.math.BigDecimal(lzer)).toString()).equals("0");
+        (new Test("clo005")).ok = ((new com.ibm.icu.math.BigDecimal(lpos)).toString()).equals("1");
+
+        // String [many more examples are elsewhere]
+        // strings without E cannot generate E in result
+        (new Test("cst001")).ok = ((new com.ibm.icu.math.BigDecimal("12")).toString()).equals("12");
+        (new Test("cst002")).ok = ((new com.ibm.icu.math.BigDecimal("-76")).toString()).equals("-76");
+        (new Test("cst003")).ok = ((new com.ibm.icu.math.BigDecimal("12.76")).toString()).equals("12.76");
+        (new Test("cst004")).ok = ((new com.ibm.icu.math.BigDecimal("+12.76")).toString()).equals("12.76");
+        (new Test("cst005")).ok = ((new com.ibm.icu.math.BigDecimal("012.76")).toString()).equals("12.76");
+        (new Test("cst006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.003")).toString()).equals("0.003");
+        (new Test("cst007")).ok = ((new com.ibm.icu.math.BigDecimal("17.")).toString()).equals("17");
+        (new Test("cst008")).ok = ((new com.ibm.icu.math.BigDecimal(".5")).toString()).equals("0.5");
+        (new Test("cst009")).ok = ((new com.ibm.icu.math.BigDecimal("044")).toString()).equals("44");
+        (new Test("cst010")).ok = ((new com.ibm.icu.math.BigDecimal("0044")).toString()).equals("44");
+        (new Test("cst011")).ok = ((new com.ibm.icu.math.BigDecimal("0.0005")).toString()).equals("0.0005");
+        (new Test("cst012")).ok = ((new com.ibm.icu.math.BigDecimal("00.00005")).toString()).equals("0.00005");
+        (new Test("cst013")).ok = ((new com.ibm.icu.math.BigDecimal("0.000005")).toString()).equals("0.000005");
+        (new Test("cst014")).ok = ((new com.ibm.icu.math.BigDecimal("0.0000005")).toString()).equals("0.0000005"); // \NR
+        (new Test("cst015")).ok = ((new com.ibm.icu.math.BigDecimal("0.00000005")).toString()).equals("0.00000005"); // \NR
+        (new Test("cst016")).ok = ((new com.ibm.icu.math.BigDecimal("12345678.876543210")).toString()).equals("12345678.876543210");
+        (new Test("cst017")).ok = ((new com.ibm.icu.math.BigDecimal("2345678.876543210")).toString()).equals("2345678.876543210");
+        (new Test("cst018")).ok = ((new com.ibm.icu.math.BigDecimal("345678.876543210")).toString()).equals("345678.876543210");
+        (new Test("cst019")).ok = ((new com.ibm.icu.math.BigDecimal("0345678.87654321")).toString()).equals("345678.87654321");
+        (new Test("cst020")).ok = ((new com.ibm.icu.math.BigDecimal("345678.8765432")).toString()).equals("345678.8765432");
+        (new Test("cst021")).ok = ((new com.ibm.icu.math.BigDecimal("+345678.8765432")).toString()).equals("345678.8765432");
+        (new Test("cst022")).ok = ((new com.ibm.icu.math.BigDecimal("+0345678.8765432")).toString()).equals("345678.8765432");
+        (new Test("cst023")).ok = ((new com.ibm.icu.math.BigDecimal("+00345678.8765432")).toString()).equals("345678.8765432");
+        (new Test("cst024")).ok = ((new com.ibm.icu.math.BigDecimal("-345678.8765432")).toString()).equals("-345678.8765432");
+        (new Test("cst025")).ok = ((new com.ibm.icu.math.BigDecimal("-0345678.8765432")).toString()).equals("-345678.8765432");
+        (new Test("cst026")).ok = ((new com.ibm.icu.math.BigDecimal("-00345678.8765432")).toString()).equals("-345678.8765432");
+
+        // exotics --
+        (new Test("cst035")).ok = ((new com.ibm.icu.math.BigDecimal("\u0e57.\u0e50")).toString()).equals("7.0");
+        (new Test("cst036")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66.\u0b67")).toString()).equals("0.1");
+        (new Test("cst037")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b66\u0b66")).toString()).equals("0");
+        (new Test("cst038")).ok = ((new com.ibm.icu.math.BigDecimal("\u0b6a\u0b66")).toString()).equals("40");
+
+        // strings with E
+        (new Test("cst040")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");
+        (new Test("cst041")).ok = ((new com.ibm.icu.math.BigDecimal("1e+09")).toString()).equals("1E+9");
+        (new Test("cst042")).ok = ((new com.ibm.icu.math.BigDecimal("1E+90")).toString()).equals("1E+90");
+        (new Test("cst043")).ok = ((new com.ibm.icu.math.BigDecimal("+1E+009")).toString()).equals("1E+9");
+        (new Test("cst044")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");
+        (new Test("cst045")).ok = ((new com.ibm.icu.math.BigDecimal("1E+9")).toString()).equals("1E+9");
+        (new Test("cst046")).ok = ((new com.ibm.icu.math.BigDecimal("1E+09")).toString()).equals("1E+9");
+        (new Test("cst047")).ok = ((new com.ibm.icu.math.BigDecimal("1e+90")).toString()).equals("1E+90");
+        (new Test("cst048")).ok = ((new com.ibm.icu.math.BigDecimal("1E+009")).toString()).equals("1E+9");
+        (new Test("cst049")).ok = ((new com.ibm.icu.math.BigDecimal("0E+9")).toString()).equals("0");
+        (new Test("cst050")).ok = ((new com.ibm.icu.math.BigDecimal("1E9")).toString()).equals("1E+9");
+        (new Test("cst051")).ok = ((new com.ibm.icu.math.BigDecimal("1e09")).toString()).equals("1E+9");
+        (new Test("cst052")).ok = ((new com.ibm.icu.math.BigDecimal("1E90")).toString()).equals("1E+90");
+        (new Test("cst053")).ok = ((new com.ibm.icu.math.BigDecimal("1E009")).toString()).equals("1E+9");
+        (new Test("cst054")).ok = ((new com.ibm.icu.math.BigDecimal("0E9")).toString()).equals("0");
+        (new Test("cst055")).ok = ((new com.ibm.icu.math.BigDecimal("0.000e+0")).toString()).equals("0");
+        (new Test("cst056")).ok = ((new com.ibm.icu.math.BigDecimal("0.000E-1")).toString()).equals("0");
+        (new Test("cst057")).ok = ((new com.ibm.icu.math.BigDecimal("4E+9")).toString()).equals("4E+9");
+        (new Test("cst058")).ok = ((new com.ibm.icu.math.BigDecimal("44E+9")).toString()).equals("4.4E+10");
+        (new Test("cst059")).ok = ((new com.ibm.icu.math.BigDecimal("0.73e-7")).toString()).equals("7.3E-8");
+        (new Test("cst060")).ok = ((new com.ibm.icu.math.BigDecimal("00E+9")).toString()).equals("0");
+        (new Test("cst061")).ok = ((new com.ibm.icu.math.BigDecimal("00E-9")).toString()).equals("0");
+        (new Test("cst062")).ok = ((new com.ibm.icu.math.BigDecimal("10E+9")).toString()).equals("1.0E+10");
+        (new Test("cst063")).ok = ((new com.ibm.icu.math.BigDecimal("10E+09")).toString()).equals("1.0E+10");
+        (new Test("cst064")).ok = ((new com.ibm.icu.math.BigDecimal("10e+90")).toString()).equals("1.0E+91");
+        (new Test("cst065")).ok = ((new com.ibm.icu.math.BigDecimal("10E+009")).toString()).equals("1.0E+10");
+        (new Test("cst066")).ok = ((new com.ibm.icu.math.BigDecimal("100e+9")).toString()).equals("1.00E+11");
+        (new Test("cst067")).ok = ((new com.ibm.icu.math.BigDecimal("100e+09")).toString()).equals("1.00E+11");
+        (new Test("cst068")).ok = ((new com.ibm.icu.math.BigDecimal("100E+90")).toString()).equals("1.00E+92");
+        (new Test("cst069")).ok = ((new com.ibm.icu.math.BigDecimal("100e+009")).toString()).equals("1.00E+11");
+
+        (new Test("cst070")).ok = ((new com.ibm.icu.math.BigDecimal("1.265")).toString()).equals("1.265");
+        (new Test("cst071")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-20")).toString()).equals("1.265E-20");
+        (new Test("cst072")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-8")).toString()).equals("1.265E-8");
+        (new Test("cst073")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-4")).toString()).equals("1.265E-4");
+        (new Test("cst074")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-3")).toString()).equals("1.265E-3");
+        (new Test("cst075")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-2")).toString()).equals("1.265E-2");
+        (new Test("cst076")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-1")).toString()).equals("1.265E-1");
+        (new Test("cst077")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E-0")).toString()).equals("1.265");
+        (new Test("cst078")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+1")).toString()).equals("1.265E+1");
+        (new Test("cst079")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+2")).toString()).equals("1.265E+2");
+        (new Test("cst080")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+3")).toString()).equals("1.265E+3");
+        (new Test("cst081")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+4")).toString()).equals("1.265E+4");
+        (new Test("cst082")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+8")).toString()).equals("1.265E+8");
+        (new Test("cst083")).ok = ((new com.ibm.icu.math.BigDecimal("1.265E+20")).toString()).equals("1.265E+20");
+
+        (new Test("cst090")).ok = ((new com.ibm.icu.math.BigDecimal("12.65")).toString()).equals("12.65");
+        (new Test("cst091")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-20")).toString()).equals("1.265E-19");
+        (new Test("cst092")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-8")).toString()).equals("1.265E-7");
+        (new Test("cst093")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-4")).toString()).equals("1.265E-3");
+        (new Test("cst094")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-3")).toString()).equals("1.265E-2");
+        (new Test("cst095")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-2")).toString()).equals("1.265E-1");
+        (new Test("cst096")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-1")).toString()).equals("1.265");
+        (new Test("cst097")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E-0")).toString()).equals("1.265E+1");
+        (new Test("cst098")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+1")).toString()).equals("1.265E+2");
+        (new Test("cst099")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+2")).toString()).equals("1.265E+3");
+        (new Test("cst100")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+3")).toString()).equals("1.265E+4");
+        (new Test("cst101")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+4")).toString()).equals("1.265E+5");
+        (new Test("cst102")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+8")).toString()).equals("1.265E+9");
+        (new Test("cst103")).ok = ((new com.ibm.icu.math.BigDecimal("12.65E+20")).toString()).equals("1.265E+21");
+
+        (new Test("cst110")).ok = ((new com.ibm.icu.math.BigDecimal("126.5")).toString()).equals("126.5");
+        (new Test("cst111")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-20")).toString()).equals("1.265E-18");
+        (new Test("cst112")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-8")).toString()).equals("1.265E-6");
+        (new Test("cst113")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-4")).toString()).equals("1.265E-2");
+        (new Test("cst114")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-3")).toString()).equals("1.265E-1");
+        (new Test("cst115")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-2")).toString()).equals("1.265");
+        (new Test("cst116")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-1")).toString()).equals("1.265E+1");
+        (new Test("cst117")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E-0")).toString()).equals("1.265E+2");
+        (new Test("cst118")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+1")).toString()).equals("1.265E+3");
+        (new Test("cst119")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+2")).toString()).equals("1.265E+4");
+        (new Test("cst120")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+3")).toString()).equals("1.265E+5");
+        (new Test("cst121")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+4")).toString()).equals("1.265E+6");
+        (new Test("cst122")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+8")).toString()).equals("1.265E+10");
+        (new Test("cst123")).ok = ((new com.ibm.icu.math.BigDecimal("126.5E+20")).toString()).equals("1.265E+22");
+
+        (new Test("cst130")).ok = ((new com.ibm.icu.math.BigDecimal("1265")).toString()).equals("1265");
+        (new Test("cst131")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-20")).toString()).equals("1.265E-17");
+        (new Test("cst132")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-8")).toString()).equals("1.265E-5");
+        (new Test("cst133")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-4")).toString()).equals("1.265E-1");
+        (new Test("cst134")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-3")).toString()).equals("1.265");
+        (new Test("cst135")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-2")).toString()).equals("1.265E+1");
+        (new Test("cst136")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-1")).toString()).equals("1.265E+2");
+        (new Test("cst137")).ok = ((new com.ibm.icu.math.BigDecimal("1265E-0")).toString()).equals("1.265E+3");
+        (new Test("cst138")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+1")).toString()).equals("1.265E+4");
+        (new Test("cst139")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+2")).toString()).equals("1.265E+5");
+        (new Test("cst140")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+3")).toString()).equals("1.265E+6");
+        (new Test("cst141")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+4")).toString()).equals("1.265E+7");
+        (new Test("cst142")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+8")).toString()).equals("1.265E+11");
+        (new Test("cst143")).ok = ((new com.ibm.icu.math.BigDecimal("1265E+20")).toString()).equals("1.265E+23");
+
+        (new Test("cst150")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265")).toString()).equals("0.1265");
+        (new Test("cst151")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-20")).toString()).equals("1.265E-21");
+        (new Test("cst152")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-8")).toString()).equals("1.265E-9");
+        (new Test("cst153")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-4")).toString()).equals("1.265E-5");
+        (new Test("cst154")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-3")).toString()).equals("1.265E-4");
+        (new Test("cst155")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-2")).toString()).equals("1.265E-3");
+        (new Test("cst156")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-1")).toString()).equals("1.265E-2");
+        (new Test("cst157")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E-0")).toString()).equals("1.265E-1");
+        (new Test("cst158")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+1")).toString()).equals("1.265");
+        (new Test("cst159")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+2")).toString()).equals("1.265E+1");
+        (new Test("cst160")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+3")).toString()).equals("1.265E+2");
+        (new Test("cst161")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+4")).toString()).equals("1.265E+3");
+        (new Test("cst162")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+8")).toString()).equals("1.265E+7");
+        (new Test("cst163")).ok = ((new com.ibm.icu.math.BigDecimal("0.1265E+20")).toString()).equals("1.265E+19");
+
+        (new Test("cst170")).ok = ((new com.ibm.icu.math.BigDecimal("0.09e999999999")).toString()).equals("9E+999999997");
+        (new Test("cst171")).ok = ((new com.ibm.icu.math.BigDecimal("0.9e999999999")).toString()).equals("9E+999999998");
+        (new Test("cst172")).ok = ((new com.ibm.icu.math.BigDecimal("9e999999999")).toString()).equals("9E+999999999");
+        (new Test("cst173")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e999999999")).toString()).equals("9.9E+999999999");
+        (new Test("cst174")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e999999999")).toString()).equals("9.99E+999999999");
+        (new Test("cst175")).ok = ((new com.ibm.icu.math.BigDecimal("9.99e-999999999")).toString()).equals("9.99E-999999999");
+        (new Test("cst176")).ok = ((new com.ibm.icu.math.BigDecimal("9.9e-999999999")).toString()).equals("9.9E-999999999");
+        (new Test("cst177")).ok = ((new com.ibm.icu.math.BigDecimal("9e-999999999")).toString()).equals("9E-999999999");
+        (new Test("cst179")).ok = ((new com.ibm.icu.math.BigDecimal("99e-999999999")).toString()).equals("9.9E-999999998");
+        (new Test("cst180")).ok = ((new com.ibm.icu.math.BigDecimal("999e-999999999")).toString()).equals("9.99E-999999997");
+
+        // baddies --
+        badstrings = new java.lang.String[] { "1..2", ".", "..", "++1", "--1",
+                "-+1", "+-1", "12e", "12e++", "12f4", " +1", "+ 1", "12 ",
+                " + 1", " - 1 ", "x", "-1-", "12-", "3+", "", "1e-",
+                "7e1000000000", "", "e100", "\u0e5a", "\u0b65", "99e999999999",
+                "999e999999999", "0.9e-999999999", "0.09e-999999999",
+                "0.1e1000000000", "10e-1000000000", "0.9e9999999999",
+                "99e-9999999999", "111e9999999999",
+                "1111e-9999999999" + " " + "111e*123", "111e123-", "111e+12+",
+                "111e1-3-", "111e1*23", "111e1e+3", "1e1.0", "1e123e", "ten",
+                "ONE", "1e.1", "1e1.", "1ee", "e+1" }; // 200-203
+        // 204-207
+        // 208-211
+        // 211-214
+        // 215-219
+        // 220-222
+        // 223-224
+        // 225-226
+        // 227-228
+        // 229-230
+        // 231-232
+        // 233-234
+        // 235-237
+        // 238-240
+        // 241-244
+        // 245-248
+
+        // watch out for commas on continuation lines
+
+        {
+            int $16 = badstrings.length;
+            i = 0;
+            for (; $16 > 0; $16--, i++) {
+                try {
+                    new com.ibm.icu.math.BigDecimal(badstrings[i]);
+                    say(">>> cst"+(200+i)+":"+" "+badstrings[i]+" "+(new com.ibm.icu.math.BigDecimal(badstrings[i])).toString());
+                    flag = false;
+                } catch (java.lang.NumberFormatException $17) {
+                    flag = true;
+                }
+                (new Test("cst" + (200 + i))).ok = flag;
+            }
+        }/* i */
+
+        try {
+            new com.ibm.icu.math.BigDecimal((java.lang.String) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $18) {
+            flag = true;
+        }/* checknull */
+        (new Test("cst301")).ok = flag;
+
+        summary("Constructors");
+        return;
+    }
+
+    /** Mutation tests (checks that contents of constant objects are unchanged). */
+
+    public void diagmutation() {
+        /* ---------------------------------------------------------------- */
+        /* Final tests -- check constants haven't mutated */
+        /* -- also that MC objects haven't mutated */
+        /* ---------------------------------------------------------------- */
+        (new Test("cuc001")).ok = (com.ibm.icu.math.BigDecimal.ZERO.toString()).equals("0");
+        (new Test("cuc002")).ok = (com.ibm.icu.math.BigDecimal.ONE.toString()).equals("1");
+        (new Test("cuc003")).ok = (com.ibm.icu.math.BigDecimal.TEN.toString()).equals("10");
+
+        (new Test("cuc010")).ok = com.ibm.icu.math.BigDecimal.ROUND_CEILING == com.ibm.icu.math.MathContext.ROUND_CEILING;
+        (new Test("cuc011")).ok = com.ibm.icu.math.BigDecimal.ROUND_DOWN == com.ibm.icu.math.MathContext.ROUND_DOWN;
+        (new Test("cuc012")).ok = com.ibm.icu.math.BigDecimal.ROUND_FLOOR == com.ibm.icu.math.MathContext.ROUND_FLOOR;
+        (new Test("cuc013")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_DOWN == com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;
+        (new Test("cuc014")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_EVEN == com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;
+        (new Test("cuc015")).ok = com.ibm.icu.math.BigDecimal.ROUND_HALF_UP == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        (new Test("cuc016")).ok = com.ibm.icu.math.BigDecimal.ROUND_UNNECESSARY == com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;
+        (new Test("cuc017")).ok = com.ibm.icu.math.BigDecimal.ROUND_UP == com.ibm.icu.math.MathContext.ROUND_UP;
+
+        (new Test("cuc020")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getDigits()) == 9;
+        (new Test("cuc021")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("cuc022")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getLostDigits() ? 1 : 0) == 0;
+        (new Test("cuc023")).ok = (com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+
+        // mc9 =MathContext(9)
+        // mcld =MathContext(9, SCIENTIFIC, 1)
+        // mcfd =MathContext(0, PLAIN)
+        (new Test("cuc030")).ok = (mc9.getDigits()) == 9;
+        (new Test("cuc031")).ok = (mc9.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("cuc032")).ok = (mc9.getLostDigits() ? 1 : 0) == 0;
+        (new Test("cuc033")).ok = (mc9.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        (new Test("cuc034")).ok = (mcld.getDigits()) == 9;
+        (new Test("cuc035")).ok = (mcld.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("cuc036")).ok = (mcld.getLostDigits() ? 1 : 0) == 1;
+        (new Test("cuc037")).ok = (mcld.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        (new Test("cuc038")).ok = (mcfd.getDigits()) == 0;
+        (new Test("cuc039")).ok = (mcfd.getForm()) == com.ibm.icu.math.MathContext.PLAIN;
+        (new Test("cuc040")).ok = (mcfd.getLostDigits() ? 1 : 0) == 0;
+        (new Test("cuc041")).ok = (mcfd.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+
+        summary("No mutation");
+    }
+
+
+    /* ----------------------------------------------------------------- */
+    /* Operator test methods */
+    /* ----------------------------------------------------------------- */
+    // The use of context in these tests are primarily to show that they
+    // are correctly passed to the methods, except that we check that
+    // each method checks for lostDigits.
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#abs} method. */
+
+    public void diagabs() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        // most of the function of this is tested by add
+        (new Test("abs001")).ok = ((new com.ibm.icu.math.BigDecimal("2")).abs().toString()).equals("2");
+        (new Test("abs002")).ok = ((new com.ibm.icu.math.BigDecimal("-2")).abs().toString()).equals("2");
+        (new Test("abs003")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs().toString()).equals("0.000");
+        (new Test("abs004")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs().toString()).equals("0.000");
+        (new Test("abs005")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs().toString()).equals("0.000");
+        (new Test("abs006")).ok = ((new com.ibm.icu.math.BigDecimal("+0.000")).abs(mcdef).toString()).equals("0");
+        (new Test("abs007")).ok = ((new com.ibm.icu.math.BigDecimal("00.000")).abs(mcdef).toString()).equals("0");
+        (new Test("abs008")).ok = ((new com.ibm.icu.math.BigDecimal("-0.000")).abs(mcdef).toString()).equals("0");
+        (new Test("abs009")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs().toString()).equals("2000000");
+        (new Test("abs010")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mcdef).toString()).equals("2000000");
+        (new Test("abs011")).ok = ((new com.ibm.icu.math.BigDecimal("-2000000")).abs(mc6).toString()).equals("2.00000E+6");
+        (new Test("abs012")).ok = ((new com.ibm.icu.math.BigDecimal("2000000")).abs(mc6).toString()).equals("2.00000E+6");
+        (new Test("abs013")).ok = ((new com.ibm.icu.math.BigDecimal("0.2")).abs().toString()).equals("0.2");
+        (new Test("abs014")).ok = ((new com.ibm.icu.math.BigDecimal("-0.2")).abs().toString()).equals("0.2");
+        (new Test("abs015")).ok = ((new com.ibm.icu.math.BigDecimal("0.01")).abs().toString()).equals("0.01");
+        (new Test("abs016")).ok = ((new com.ibm.icu.math.BigDecimal("-0.01")).abs().toString()).equals("0.01");
+        try {
+            tenlong.abs(mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $19) {
+            ae = $19;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("abs020")).ok = flag;
+        // check lostdigits not raised if digits=0 [monadic method]
+        try {
+            tenlong.abs(mcld0);
+            flag = true;
+        } catch (java.lang.ArithmeticException $20) {
+            ae = $20;
+            flag = false;
+        }/* checkdigits */
+        (new Test("abs021")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.TEN
+                    .abs((com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $21) {
+            flag = true;
+        }/* checknull */
+        (new Test("abs022")).ok = flag;
+
+        summary("abs");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#add} method. */
+
+    public void diagadd() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal alhs;
+        com.ibm.icu.math.BigDecimal arhs;
+        java.lang.ArithmeticException ae = null;
+
+        // [first group are 'quick confidence check']
+        (new Test("add001")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("5");
+        (new Test("add003")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("9.05");
+        (new Test("add004")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("2");
+        (new Test("add005")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-8");
+        (new Test("add006")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-4.5");
+        (new Test("add007")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");
+        (new Test("add008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("2.50");
+        (new Test("add009")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("2.23456789");
+        
+        (new Test("add010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011"),mcdef).toString()).equals("2.23456800");
+        
+        
+        (new Test("add011")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");
+        
+        (new Test("add012")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555"),mcdef).toString()).equals("1.00000000");
+        
+        (new Test("add013")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550"),mcdef).toString()).equals("0.999999999");
+        
+        (new Test("add014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");
+        
+        (new Test("add015")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");
+        
+        
+        (new Test("add016")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add017")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add018")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add019")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000001E+13");
+        
+        (new Test("add020")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("1.00000007E+13");
+        
+        
+        // [Now the same group with fixed arithmetic]
+        (new Test("add030")).ok=((new com.ibm.icu.math.BigDecimal(2)).add(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("5");
+        (new Test("add031")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).add(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("9.05");
+        (new Test("add032")).ok=((new com.ibm.icu.math.BigDecimal("5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("2");
+        (new Test("add033")).ok=((new com.ibm.icu.math.BigDecimal("-5")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-8");
+        (new Test("add034")).ok=((new com.ibm.icu.math.BigDecimal("-7")).add(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-4.5");
+        (new Test("add035")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).add(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");
+        (new Test("add036")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).add(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("2.50");
+        (new Test("add037")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("2.23456789");
+        
+        (new Test("add038")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).add(new com.ibm.icu.math.BigDecimal("1.00000011")).toString()).equals("2.23456800");
+        
+        
+        (new Test("add039")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999999");
+        
+        (new Test("add040")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444440")).add(new com.ibm.icu.math.BigDecimal("0.5555555555")).toString()).equals("0.9999999995");
+        
+        (new Test("add041")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).add(new com.ibm.icu.math.BigDecimal("0.5555555550")).toString()).equals("0.9999999994");
+        
+        (new Test("add042")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");
+        
+        (new Test("add043")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).add(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");
+        
+        
+        (new Test("add044")).ok=((new com.ibm.icu.math.BigDecimal("70")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000070");
+        
+        (new Test("add045")).ok=((new com.ibm.icu.math.BigDecimal("700")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000000700");
+        
+        (new Test("add046")).ok=((new com.ibm.icu.math.BigDecimal("7000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000007000");
+        
+        (new Test("add047")).ok=((new com.ibm.icu.math.BigDecimal("70000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000070000");
+        
+        (new Test("add048")).ok=((new com.ibm.icu.math.BigDecimal("700000")).add(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("10000000700000");
+        
+
+        // symmetry:
+        (new Test("add049")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add050")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add051")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("add052")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");
+        
+        (new Test("add053")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("1.00000007E+13");
+        
+        
+        (new Test("add054")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("10000000000070");
+        
+        (new Test("add055")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("10000000000700");
+        
+        (new Test("add056")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("10000000007000");
+        
+        (new Test("add057")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("10000000070000");
+        
+        (new Test("add058")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("10000000700000");
+
+        // some rounding effects
+        (new Test("add059")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0000")).toString()).equals("0.9998");
+        
+        (new Test("add060")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0001")).toString()).equals("0.9999");
+        
+        (new Test("add061")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0002")).toString()).equals("1.0000");
+        
+        (new Test("add062")).ok=((new com.ibm.icu.math.BigDecimal("0.9998")).add(new com.ibm.icu.math.BigDecimal("0.0003")).toString()).equals("1.0001");
+
+
+        // MC
+        (new Test("add070")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcfd).toString()).equals("10000000070000");
+        
+        (new Test("add071")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("1.00000001E+13");
+        
+        (new Test("add072")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).add(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");
+
+
+        // zero preservation
+        (new Test("add080")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0001"),mc6).toString()).equals("1.0001");
+        
+        (new Test("add081")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00001"),mc6).toString()).equals("1.00001");
+        
+        (new Test("add082")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.000001"),mc6).toString()).equals("1.00000");
+        
+        (new Test("add083")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.0000001"),mc6).toString()).equals("1.00000");
+        
+        (new Test("add084")).ok=(com.ibm.icu.math.BigDecimal.ONE.add(new com.ibm.icu.math.BigDecimal("0.00000001"),mc6).toString()).equals("1.00000");
+
+
+        // more fixed, LHS swaps
+        (new Test("add090")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).add(zero).toString()).equals("-0.0000056267");
+        (new Test("add091")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-6")).add(zero).toString()).equals("-0.056267");
+        (new Test("add092")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).add(zero).toString()).equals("-0.56267");
+        (new Test("add093")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-4")).add(zero).toString()).equals("-5.6267");
+        (new Test("add094")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-3")).add(zero).toString()).equals("-56.267");
+        (new Test("add095")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).add(zero).toString()).equals("-562.67");
+        (new Test("add096")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).add(zero).toString()).equals("-5626.7");
+        (new Test("add097")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).add(zero).toString()).equals("-56267");
+        (new Test("add098")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");
+        (new Test("add099")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");
+        (new Test("add100")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");
+        (new Test("add101")).ok=((new com.ibm.icu.math.BigDecimal("-5E-10")).add(zero).toString()).equals("-0.0000000005");
+        (new Test("add102")).ok=((new com.ibm.icu.math.BigDecimal("-5E-5")).add(zero).toString()).equals("-0.00005");
+        (new Test("add103")).ok=((new com.ibm.icu.math.BigDecimal("-5E-1")).add(zero).toString()).equals("-0.5");
+        (new Test("add104")).ok=((new com.ibm.icu.math.BigDecimal("-5E10")).add(zero).toString()).equals("-50000000000");
+        (new Test("add105")).ok=((new com.ibm.icu.math.BigDecimal("-5E5")).add(zero).toString()).equals("-500000");
+        (new Test("add106")).ok=((new com.ibm.icu.math.BigDecimal("-5E1")).add(zero).toString()).equals("-50");
+        (new Test("add107")).ok=((new com.ibm.icu.math.BigDecimal("-5E0")).add(zero).toString()).equals("-5");
+
+        // more fixed, RHS swaps
+        (new Test("add108")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-10")).toString()).equals("-0.0000056267");
+        (new Test("add109")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-6")).toString()).equals("-0.056267");
+        (new Test("add110")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-5")).toString()).equals("-0.56267");
+        (new Test("add111")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-4")).toString()).equals("-5.6267");
+        (new Test("add112")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-3")).toString()).equals("-56.267");
+        (new Test("add113")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-2")).toString()).equals("-562.67");
+        (new Test("add114")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-1")).toString()).equals("-5626.7");
+        (new Test("add115")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-56267E-0")).toString()).equals("-56267");
+        (new Test("add116")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");
+        (new Test("add117")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");
+        (new Test("add118")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");
+        (new Test("add129")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-10")).toString()).equals("-0.0000000005");
+        (new Test("add130")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-5")).toString()).equals("-0.00005");
+        (new Test("add131")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E-1")).toString()).equals("-0.5");
+        (new Test("add132")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E10")).toString()).equals("-50000000000");
+        (new Test("add133")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E5")).toString()).equals("-500000");
+        (new Test("add134")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E1")).toString()).equals("-50");
+        (new Test("add135")).ok=(zero.add(new com.ibm.icu.math.BigDecimal("-5E0")).toString()).equals("-5");
+
+        // [some of the next group are really constructor tests]
+        (new Test("add140")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");
+        (new Test("add141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");
+        (new Test("add142")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+        (new Test("add143")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+        (new Test("add144")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.3");
+        (new Test("add145")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("3.30");
+        (new Test("add146")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");
+        (new Test("add147")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("6");
+        (new Test("add148")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("0");
+        (new Test("add149")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03"),mcdef).toString()).equals("0");
+        
+        (new Test("add150")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).add(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");
+        (new Test("add151")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).add(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");
+        (new Test("add152")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+        (new Test("add153")).ok=((new com.ibm.icu.math.BigDecimal("3.")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+        (new Test("add154")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.3");
+        (new Test("add155")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).add(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("3.30");
+        (new Test("add156")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");
+        (new Test("add157")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("6");
+        (new Test("add158")).ok=((new com.ibm.icu.math.BigDecimal("3")).add(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("0");
+        (new Test("add159")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).add(new com.ibm.icu.math.BigDecimal("-0.3")).toString()).equals("0.0");
+        (new Test("add160")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).add(new com.ibm.icu.math.BigDecimal("-0.03")).toString()).equals("0.00");
+        (new Test("add161")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("-1"),mcfd).toString()).equals("6999999999999");
+        
+        (new Test("add162")).ok=((new com.ibm.icu.math.BigDecimal("7E+12")).add(new com.ibm.icu.math.BigDecimal("1.11"),mcfd).toString()).equals("7000000000001.11");
+        
+        (new Test("add163")).ok=((new com.ibm.icu.math.BigDecimal("1.11")).add(new com.ibm.icu.math.BigDecimal("7E+12"),mcfd).toString()).equals("7000000000001.11");
+        
+
+        // input preparation tests
+        alhs=new com.ibm.icu.math.BigDecimal("12345678900000");
+        arhs=new com.ibm.icu.math.BigDecimal("9999999999999");
+        (new Test("add170")).ok=(alhs.add(arhs,mc3).toString()).equals("2.23E+13");
+        (new Test("add171")).ok=(arhs.add(alhs,mc3).toString()).equals("2.23E+13");
+        (new Test("add172")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3456"),mc3).toString()).equals("1.55E+4");
+        // next was 1.54E+4 under old [truncate to digits+1] rules
+        (new Test("add173")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3446"),mc3).toString()).equals("1.55E+4");
+        (new Test("add174")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3454"),mc3).toString()).equals("1.55E+4");
+        (new Test("add175")).ok=((new com.ibm.icu.math.BigDecimal("12E+3")).add(new com.ibm.icu.math.BigDecimal("3444"),mc3).toString()).equals("1.54E+4");
+        
+        (new Test("add176")).ok=((new com.ibm.icu.math.BigDecimal("3456")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+        // next was 1.54E+4 under old [truncate to digits+1] rules
+        (new Test("add177")).ok=((new com.ibm.icu.math.BigDecimal("3446")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+        (new Test("add178")).ok=((new com.ibm.icu.math.BigDecimal("3454")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.55E+4");
+        (new Test("add179")).ok=((new com.ibm.icu.math.BigDecimal("3444")).add(new com.ibm.icu.math.BigDecimal("12E+3"),mc3).toString()).equals("1.54E+4");
+
+        try {
+            ten.add((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $22) {
+            flag = true;
+        }/* checknull */
+        (new Test("add200")).ok = flag;
+        try {
+            ten.add(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $23) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("add201")).ok = flag;
+
+        try {
+            tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $24) {
+            ae = $24;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("add202")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $25) {
+            ae = $25;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("add203")).ok = flag;
+
+        // check lostdigits not raised if digits=0 [dyadic method]
+        try {
+            tenlong.add(com.ibm.icu.math.BigDecimal.ZERO, mcld0);
+            flag = true;
+        } catch (java.lang.ArithmeticException $26) {
+            ae = $26;
+            flag = false;
+        }/* checkdigits */
+        (new Test("add204")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ZERO.add(tenlong, mcld0);
+            flag = true;
+        } catch (java.lang.ArithmeticException $27) {
+            ae = $27;
+            flag = false;
+        }/* checkdigits */
+        (new Test("add205")).ok = flag;
+
+        summary("add");
+    }
+
+    /* ----------------------------------------------------------------- */
+    /**
+     * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(BigDecimal)}
+     * method.
+     */
+
+    public void diagcompareto() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+        // we assume add/subtract test function; this just
+        // tests existence, exceptions, and possible results
+
+        (new Test("cpt001")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("2")))==1;
+        (new Test("cpt002")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==0;
+        (new Test("cpt003")).ok=((new com.ibm.icu.math.BigDecimal("5")).compareTo(new com.ibm.icu.math.BigDecimal("5.00")))==0;
+        (new Test("cpt004")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).compareTo(new com.ibm.icu.math.BigDecimal("0.5")))==0;
+        (new Test("cpt005")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5")))==(-1);
+        (new Test("cpt006")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcdef))==(-1);
+        (new Test("cpt007")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mc6))==(-1);
+        (new Test("cpt008")).ok=((new com.ibm.icu.math.BigDecimal("2")).compareTo(new com.ibm.icu.math.BigDecimal("5"),mcfd))==(-1);
+        try {
+            ten.compareTo((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $28) {
+            flag = true;
+        }/* checknull */
+        (new Test("cpt100")).ok = flag;
+        try {
+            ten.compareTo(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $29) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("cpt101")).ok = flag;
+
+        try {
+            tenlong.compareTo(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $30) {
+            ae = $30;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("cpt102")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.compareTo(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $31) {
+            ae = $31;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("cpt103")).ok = flag;
+
+        summary("compareTo");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#divide} method. */
+
+    public void diagdivide() {
+        boolean flag = false;
+        com.ibm.icu.math.MathContext rmcd;
+        int rhu;
+        int rd;
+        int ru;
+        java.lang.RuntimeException e = null;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("div301")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.333333333");
+        (new Test("div302")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0.666666667");
+        (new Test("div303")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+        (new Test("div304")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("-2.4");
+        (new Test("div305")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("-2.4");
+        (new Test("div306")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("2.4");
+        (new Test("div307")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+        (new Test("div308")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2.4");
+        (new Test("div309")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");
+        (new Test("div310")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1.2");
+        (new Test("div311")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("div312")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20"),mcdef).toString()).equals("1");
+        (new Test("div313")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187"),mcdef).toString()).equals("1");
+        (new Test("div314")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.5");
+        (new Test("div315")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0"),mcdef).toString()).equals("2.5");
+        (new Test("div316")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("2.5");
+        (new Test("div317")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200"),mcdef).toString()).equals("25");
+        (new Test("div318")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+        (new Test("div319")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+        (new Test("div320")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+        (new Test("div321")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+        (new Test("div322")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1E+9");
+        (new Test("div323")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-50")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");
+        // MC
+        (new Test("div325")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("999999999");
+        (new Test("div326")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+9");
+        (new Test("div327")).ok=((new com.ibm.icu.math.BigDecimal("9999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("1E+7");
+        (new Test("div328")).ok=((new com.ibm.icu.math.BigDecimal("999999")).divide(new com.ibm.icu.math.BigDecimal("1"),mc6).toString()).equals("999999");
+
+        // check rounding explicitly [note: digits+1 truncation]
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_CEILING);
+        (new Test("div330")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div331")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");
+        (new Test("div332")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_DOWN);
+        (new Test("div333")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div334")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+        (new Test("div335")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div336")).ok=((new com.ibm.icu.math.BigDecimal("1.59")).divide(one,rmcd).toString()).equals("1.5");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);
+        (new Test("div337")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");
+        (new Test("div338")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div339")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.5");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+        (new Test("div340")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.4");
+        (new Test("div341")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div342")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);
+        (new Test("div343")).ok=((new com.ibm.icu.math.BigDecimal("1.45")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div344")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div345")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+        rmcd=new com.ibm.icu.math.MathContext(2,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_UP);
+        (new Test("div346")).ok=((new com.ibm.icu.math.BigDecimal("1.50")).divide(one,rmcd).toString()).equals("1.5");
+        (new Test("div347")).ok=((new com.ibm.icu.math.BigDecimal("1.51")).divide(one,rmcd).toString()).equals("1.6");
+        (new Test("div348")).ok=((new com.ibm.icu.math.BigDecimal("1.55")).divide(one,rmcd).toString()).equals("1.6");
+
+        // fixed point...
+        (new Test("div350")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+        (new Test("div351")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+        (new Test("div352")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.4");
+        (new Test("div353")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("-2.4");
+        (new Test("div354")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("-2.4");
+        (new Test("div355")).ok=((new com.ibm.icu.math.BigDecimal("-2.4")).divide(new com.ibm.icu.math.BigDecimal("-1")).toString()).equals("2.4");
+        (new Test("div356")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.40");
+        (new Test("div357")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2.400");
+        (new Test("div358")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.2");
+        (new Test("div359")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1.200");
+        (new Test("div360")).ok=((new com.ibm.icu.math.BigDecimal("2.")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("div361")).ok=((new com.ibm.icu.math.BigDecimal("20")).divide(new com.ibm.icu.math.BigDecimal("20")).toString()).equals("1");
+        (new Test("div362")).ok=((new com.ibm.icu.math.BigDecimal("187")).divide(new com.ibm.icu.math.BigDecimal("187")).toString()).equals("1");
+        (new Test("div363")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("3");
+        (new Test("div364")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("3");
+        (new Test("div365")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("3");
+        (new Test("div366")).ok=((new com.ibm.icu.math.BigDecimal("5")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25");
+        (new Test("div367")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.5");
+        (new Test("div368")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.0")).toString()).equals("2.5");
+        (new Test("div369")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("2.5");
+        (new Test("div370")).ok=((new com.ibm.icu.math.BigDecimal("5.0")).divide(new com.ibm.icu.math.BigDecimal("0.200")).toString()).equals("25.0");
+        (new Test("div371")).ok=((new com.ibm.icu.math.BigDecimal("999999999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999");
+        (new Test("div372")).ok=((new com.ibm.icu.math.BigDecimal("999999999.4")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.4");
+        (new Test("div373")).ok=((new com.ibm.icu.math.BigDecimal("999999999.5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.5");
+        (new Test("div374")).ok=((new com.ibm.icu.math.BigDecimal("999999999.9")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.9");
+        (new Test("div375")).ok=((new com.ibm.icu.math.BigDecimal("999999999.999")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("999999999.999");
+        (new Test("div376")).ok=((new com.ibm.icu.math.BigDecimal("0.0000E-5")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");
+        (new Test("div377")).ok=((new com.ibm.icu.math.BigDecimal("0.000000000")).divide(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0.000000000");
+
+        // - Fixed point; explicit scales & rounds [old BigDecimal divides]
+        rhu = com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        rd = com.ibm.icu.math.MathContext.ROUND_DOWN;
+        (new Test("div001")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+        (new Test("div002")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");
+        (new Test("div003")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");
+        (new Test("div004")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.0");
+        (new Test("div005")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.00");
+        (new Test("div006")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.000");
+        (new Test("div007")).ok=((new com.ibm.icu.math.BigDecimal("0")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.0000");
+        (new Test("div008")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+        (new Test("div009")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("0");
+        (new Test("div010")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("0");
+        (new Test("div011")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.3");
+        (new Test("div012")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.33");
+        (new Test("div013")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.333");
+        (new Test("div014")).ok=((new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.3333");
+        (new Test("div015")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+        (new Test("div016")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),rhu).toString()).equals("1");
+        (new Test("div017")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rhu).toString()).equals("1");
+        (new Test("div018")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rhu).toString()).equals("0.7");
+        (new Test("div019")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rhu).toString()).equals("0.67");
+        (new Test("div020")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rhu).toString()).equals("0.667");
+        (new Test("div021")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rhu).toString()).equals("0.6667");
+        
+        (new Test("div030")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),4,rhu).toString()).equals("0.5000");
+        (new Test("div031")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),3,rhu).toString()).equals("0.500");
+        (new Test("div032")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),2,rhu).toString()).equals("0.50");
+        (new Test("div033")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),1,rhu).toString()).equals("0.5");
+        (new Test("div034")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("2000"),0,rhu).toString()).equals("1");
+        
+        (new Test("div035")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,rhu).toString()).equals("0.0200");
+        (new Test("div036")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,rhu).toString()).equals("0.020");
+        (new Test("div037")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,rhu).toString()).equals("0.02");
+        (new Test("div038")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,rhu).toString()).equals("0.0");
+        (new Test("div039")).ok=((new com.ibm.icu.math.BigDecimal("100")).divide(new com.ibm.icu.math.BigDecimal("5000"),0,rhu).toString()).equals("0");
+        
+        (new Test("div040")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),4,rhu).toString()).equals("1.0227");
+        (new Test("div041")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),4,rhu).toString()).equals("1.0227");
+        (new Test("div042")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),4,rhu).toString()).equals("1.0227");
+        (new Test("div043")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div044")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div045")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div046")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div047")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div048")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),4,rhu).toString()).equals("0.9778");
+        (new Test("div049")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),4,rhu).toString()).equals("0.9780");
+        (new Test("div050")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),4,rhu).toString()).equals("0.9798");
+        (new Test("div051")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),4,rhu).toString()).equals("1.0000");
+        
+        (new Test("div060")).ok=((new com.ibm.icu.math.BigDecimal("9.99999999")).divide(new com.ibm.icu.math.BigDecimal("9.77777777"),rhu).toString()).equals("1.02272727");
+        (new Test("div061")).ok=((new com.ibm.icu.math.BigDecimal("9.9999999")).divide(new com.ibm.icu.math.BigDecimal("9.7777777"),rhu).toString()).equals("1.0227273");
+        (new Test("div062")).ok=((new com.ibm.icu.math.BigDecimal("9.999999")).divide(new com.ibm.icu.math.BigDecimal("9.777777"),rhu).toString()).equals("1.022727");
+        (new Test("div063")).ok=((new com.ibm.icu.math.BigDecimal("9.77777777")).divide(new com.ibm.icu.math.BigDecimal("9.99999999"),rhu).toString()).equals("0.97777778");
+        (new Test("div064")).ok=((new com.ibm.icu.math.BigDecimal("9.7777777")).divide(new com.ibm.icu.math.BigDecimal("9.9999999"),rhu).toString()).equals("0.9777778");
+        (new Test("div065")).ok=((new com.ibm.icu.math.BigDecimal("9.777777")).divide(new com.ibm.icu.math.BigDecimal("9.999999"),rhu).toString()).equals("0.977778");
+        (new Test("div066")).ok=((new com.ibm.icu.math.BigDecimal("9.77777")).divide(new com.ibm.icu.math.BigDecimal("9.99999"),rhu).toString()).equals("0.97778");
+        (new Test("div067")).ok=((new com.ibm.icu.math.BigDecimal("9.7777")).divide(new com.ibm.icu.math.BigDecimal("9.9999"),rhu).toString()).equals("0.9778");
+        (new Test("div068")).ok=((new com.ibm.icu.math.BigDecimal("9.777")).divide(new com.ibm.icu.math.BigDecimal("9.999"),rhu).toString()).equals("0.978");
+        (new Test("div069")).ok=((new com.ibm.icu.math.BigDecimal("9.77")).divide(new com.ibm.icu.math.BigDecimal("9.99"),rhu).toString()).equals("0.98");
+        (new Test("div070")).ok=((new com.ibm.icu.math.BigDecimal("9.7")).divide(new com.ibm.icu.math.BigDecimal("9.9"),rhu).toString()).equals("1.0");
+        (new Test("div071")).ok=((new com.ibm.icu.math.BigDecimal("9.")).divide(new com.ibm.icu.math.BigDecimal("9."),rhu).toString()).equals("1");
+        
+        rd=com.ibm.icu.math.MathContext.ROUND_DOWN; // test this is actually being used
+        (new Test("div080")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),0,rd).toString()).equals("0");
+        (new Test("div081")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),1,rd).toString()).equals("0.6");
+        (new Test("div082")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),2,rd).toString()).equals("0.66");
+        (new Test("div083")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),3,rd).toString()).equals("0.666");
+        (new Test("div084")).ok=((new com.ibm.icu.math.BigDecimal("2")).divide(new com.ibm.icu.math.BigDecimal("3"),4,rd).toString()).equals("0.6666");
+        
+        ru=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; // check for some 0 residues
+        (new Test("div090")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5"),4,ru).toString()).equals("200.0000");
+        (new Test("div091")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("50"),4,ru).toString()).equals("20.0000");
+        (new Test("div092")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("500"),4,ru).toString()).equals("2.0000");
+        (new Test("div093")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),4,ru).toString()).equals("0.2000");
+        (new Test("div094")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),3,ru).toString()).equals("0.200");
+        (new Test("div095")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),2,ru).toString()).equals("0.20");
+        (new Test("div096")).ok=((new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"),1,ru).toString()).equals("0.2");
+
+        // check rounding explicitly
+        (new Test("div101")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.06");
+        (new Test("div102")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");
+        (new Test("div103")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");
+        (new Test("div104")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.05");
+        (new Test("div105")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");
+        (new Test("div106")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");
+        (new Test("div107")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.05");
+        (new Test("div108")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");
+        (new Test("div109")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");
+        
+        (new Test("div110")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.04");
+        (new Test("div111")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+        (new Test("div112")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+        (new Test("div113")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");
+        (new Test("div114")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+        (new Test("div115")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+        (new Test("div116")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.05");
+        (new Test("div117")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.1");
+        (new Test("div118")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+        
+        (new Test("div120")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.04");
+        (new Test("div121")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+        (new Test("div122")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("div123")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.05");
+        (new Test("div124")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+        (new Test("div125")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("div126")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.15");
+        (new Test("div127")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.2");
+        (new Test("div128")).ok=((new com.ibm.icu.math.BigDecimal("0.150")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("div129")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.06");
+        (new Test("div130")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.1");
+        (new Test("div131")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        
+        (new Test("div140")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");
+        (new Test("div141")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+        (new Test("div142")).ok=((new com.ibm.icu.math.BigDecimal("0.045")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("div143")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.05");
+        (new Test("div144")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+        (new Test("div145")).ok=((new com.ibm.icu.math.BigDecimal("0.050")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("div146")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.06");
+        (new Test("div147")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+        (new Test("div148")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        
+        (new Test("div150")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.06");
+        (new Test("div151")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");
+        (new Test("div52.")).ok=((new com.ibm.icu.math.BigDecimal("0.055")).divide(one,0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");
+
+        // - error conditions ---
+        try {
+            ten.divide((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $32) {
+            flag = true;
+        }/* checknull */
+        (new Test("div201")).ok = flag;
+        try {
+            ten.divide(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $33) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("div202")).ok = flag;
+
+        try {
+            (new com.ibm.icu.math.BigDecimal("1")).divide(new com.ibm.icu.math.BigDecimal("3"), -8, 0);
+            flag = false;
+        } catch (java.lang.RuntimeException $34) {
+            e = $34;
+            flag = flag & (e.getMessage()).equals("Negative scale: -8");
+        }/* checkscale */
+        (new Test("div203")).ok = flag;
+
+        try {
+            (new com.ibm.icu.math.BigDecimal("1000")).divide(new com.ibm.icu.math.BigDecimal("5000"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $35) {
+            ae = $35;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div204")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("10"), 0, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $36) {
+            ae = $36;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div205")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal("1001")).divide(new com.ibm.icu.math.BigDecimal("100"), 1, com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $37) {
+            ae = $37;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div206")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal("10001")).divide(
+                    new com.ibm.icu.math.BigDecimal("10000"), 1,
+                    com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $38) {
+            ae = $38;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div207")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal("1.0001")).divide(
+                    new com.ibm.icu.math.BigDecimal("1"), 1,
+                    com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+                flag = false;
+        } catch (java.lang.ArithmeticException $39) {
+            ae = $39;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }/* rounn */
+        (new Test("div208")).ok = flag;
+
+        try {
+            (new com.ibm.icu.math.BigDecimal("5"))
+                    .divide(new com.ibm.icu.math.BigDecimal("0.00"));
+            flag = false;
+        } catch (java.lang.ArithmeticException $40) {
+            ae = $40;
+            flag = (ae.getMessage()).equals("Divide by 0");
+        }/* div0 */
+        (new Test("div209")).ok = flag;
+
+        try {
+            tenlong.divide(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $41) {
+            ae = $41;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("div210")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.divide(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $42) {
+            ae = $42;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("div211")).ok = flag;
+
+        summary("divide");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#divideInteger} method. */
+
+    public void diagdivideInteger() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("dvI001")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");
+        (new Test("dvI002")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("101");
+        (new Test("dvI003")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");
+        (new Test("dvI004")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("33");
+        (new Test("dvI005")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");
+        (new Test("dvI006")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("2");
+        (new Test("dvI007")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18"),mcdef).toString()).equals("1");
+        (new Test("dvI008")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("1");
+        (new Test("dvI009")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("dvI010")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("dvI011")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000"),mcdef).toString()).equals("0");
+        (new Test("dvI012")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("1");
+        (new Test("dvI013")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2");
+        (new Test("dvI014")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+        (new Test("dvI015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+        // MC
+        (new Test("dvI016")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mce).toString()).equals("2");
+        (new Test("dvI017")).ok = ((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2"), mc6).toString()).equals("2");
+
+        // Fixed --
+        (new Test("dvI021")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");
+        (new Test("dvI022")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("101");
+        (new Test("dvI023")).ok=((new com.ibm.icu.math.BigDecimal("101.3")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");
+        (new Test("dvI024")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).divideInteger(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("33");
+        (new Test("dvI025")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");
+        (new Test("dvI026")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("2");
+        (new Test("dvI027")).ok=((new com.ibm.icu.math.BigDecimal("18")).divideInteger(new com.ibm.icu.math.BigDecimal("18")).toString()).equals("1");
+        (new Test("dvI028")).ok=((new com.ibm.icu.math.BigDecimal("1120")).divideInteger(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("1");
+        (new Test("dvI029")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("dvI030")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("dvI031")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).divideInteger(new com.ibm.icu.math.BigDecimal("2.000")).toString()).equals("0");
+        (new Test("dvI032")).ok=((new com.ibm.icu.math.BigDecimal("8.005")).divideInteger(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("1");
+        (new Test("dvI033")).ok=((new com.ibm.icu.math.BigDecimal("5")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");
+        (new Test("dvI034")).ok=((new com.ibm.icu.math.BigDecimal("0")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+        (new Test("dvI035")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).divideInteger(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+
+        try {
+            ten.divideInteger((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $43) {
+            flag = true;
+        }/* checknull */
+        (new Test("dvI101")).ok = flag;
+        try {
+            ten.divideInteger(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $44) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("dvI102")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.divideInteger(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $45) {
+            ae = $45;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("dvI103")).ok = flag;
+
+        try {
+            tenlong.divideInteger(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $46) {
+            ae = $46;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("dvI104")).ok = flag;
+
+        summary("divideInteger");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#max} method. */
+
+    public void diagmax() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        // we assume add/subtract test function; this and min just
+        // test existence and test the truth table
+        (new Test("max001")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("5");
+        (new Test("max002")).ok=((new com.ibm.icu.math.BigDecimal("5")).max(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");
+        (new Test("max003")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("7");
+        (new Test("max004")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("7");
+        (new Test("max005")).ok=((new com.ibm.icu.math.BigDecimal("2")).max(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("7");
+        (new Test("max006")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2000");
+        (new Test("max007")).ok=((new com.ibm.icu.math.BigDecimal("2E+3")).max(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("2E+3");
+        (new Test("max008")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3")).toString()).equals("2000");
+        (new Test("max009")).ok=((new com.ibm.icu.math.BigDecimal("7")).max(new com.ibm.icu.math.BigDecimal("2E+3"),mc3).toString()).equals("2E+3");
+        try {
+            ten.max((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $47) {
+            flag = true;
+        }/* checknull */
+        (new Test("max010")).ok = flag;
+        try {
+            ten.max(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $48) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("max011")).ok = flag;
+        try {
+            tenlong.max(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $49) {
+            ae = $49;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("max012")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.max(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $50) {
+            ae = $50;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("max013")).ok = flag;
+        summary("max");
+    }
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#min} method. */
+
+    public void diagmin() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal minx = null;
+        java.lang.ArithmeticException ae = null;
+        // we assume add/subtract test function; this and max just
+        // test existence and test the truth table
+
+        (new Test("min001")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2");
+        (new Test("min002")).ok=((new com.ibm.icu.math.BigDecimal("5")).min(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("5");
+        (new Test("min003")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("2");
+        (new Test("min004")).ok=((new com.ibm.icu.math.BigDecimal("2")).min(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("2");
+        (new Test("min005")).ok=((new com.ibm.icu.math.BigDecimal("1")).min(new com.ibm.icu.math.BigDecimal("7"),mc6).toString()).equals("1");
+        (new Test("min006")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("-2000");
+        (new Test("min007")).ok=((new com.ibm.icu.math.BigDecimal("-2E+3")).min(new com.ibm.icu.math.BigDecimal("7"),mc3).toString()).equals("-2E+3");
+        (new Test("min008")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3")).toString()).equals("-2000");
+        (new Test("min009")).ok=((new com.ibm.icu.math.BigDecimal("7")).min(new com.ibm.icu.math.BigDecimal("-2E+3"),mc3).toString()).equals("-2E+3");
+        try {
+            minx = ten;
+            minx.min((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $51) {
+            flag = true;
+        }/* checknull */
+        (new Test("min010")).ok = flag;
+        try {
+            minx = ten;
+            minx.min(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $52) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("min011")).ok = flag;
+
+        try {
+            tenlong.min(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $53) {
+            ae = $53;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("min012")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal(9)).min(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $54) {
+            ae = $54;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("min013")).ok = flag;
+        summary("min");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#multiply} method. */
+
+    public void diagmultiply() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal l9;
+        com.ibm.icu.math.BigDecimal l77e;
+        com.ibm.icu.math.BigDecimal l12345;
+        com.ibm.icu.math.BigDecimal edge;
+        com.ibm.icu.math.BigDecimal tenedge;
+        com.ibm.icu.math.BigDecimal hunedge;
+        com.ibm.icu.math.BigDecimal opo;
+        com.ibm.icu.math.BigDecimal d1 = null;
+        com.ibm.icu.math.BigDecimal d2 = null;
+        java.lang.ArithmeticException oe = null;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("mul001")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("6");
+        (new Test("mul002")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("5");
+        (new Test("mul003")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("10");
+        (new Test("mul004")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("2.40");
+        (new Test("mul005")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");
+        (new Test("mul006")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("-2.40");
+        (new Test("mul007")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("-2.40");
+        (new Test("mul008")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0");
+        (new Test("mul009")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("2.40");
+        (new Test("mul010")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1"),mcdef).toString()).equals("36.139");
+        (new Test("mul011")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.0");
+        (new Test("mul012")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");
+        (new Test("mul013")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("1.23456789");
+        
+        (new Test("mul014")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mcdef).toString()).equals("100.000000");
+        
+        (new Test("mul015")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mcdef).toString()).equals("10.00");
+        (new Test("mul016")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4"),mc6).toString()).equals("10.00");
+        (new Test("mul017")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999"),mc6).toString()).equals("100.000");
+        
+        
+        (new Test("mul020")).ok=((new com.ibm.icu.math.BigDecimal("2")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("6");
+        (new Test("mul021")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("5");
+        (new Test("mul022")).ok=((new com.ibm.icu.math.BigDecimal("5")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("10");
+        (new Test("mul023")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("2.40");
+        (new Test("mul024")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");
+        (new Test("mul025")).ok=((new com.ibm.icu.math.BigDecimal("1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("-2.40");
+        (new Test("mul026")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("-2.40");
+        (new Test("mul027")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.00");
+        (new Test("mul028")).ok=((new com.ibm.icu.math.BigDecimal("-1.20")).multiply(new com.ibm.icu.math.BigDecimal("-2")).toString()).equals("2.40");
+        (new Test("mul029")).ok=((new com.ibm.icu.math.BigDecimal("5.09")).multiply(new com.ibm.icu.math.BigDecimal("7.1")).toString()).equals("36.139");
+        (new Test("mul030")).ok=((new com.ibm.icu.math.BigDecimal("2.5")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.0");
+        (new Test("mul031")).ok=((new com.ibm.icu.math.BigDecimal("2.50")).multiply(new com.ibm.icu.math.BigDecimal("4")).toString()).equals("10.00");
+        (new Test("mul032")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).multiply(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("1.2345678900000000");
+        
+        (new Test("mul033")).ok=((new com.ibm.icu.math.BigDecimal("1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("-1000.00000")).toString()).equals("-1234567.8900000000");
+        
+        (new Test("mul034")).ok=((new com.ibm.icu.math.BigDecimal("-1234.56789")).multiply(new com.ibm.icu.math.BigDecimal("1000.00000")).toString()).equals("-1234567.8900000000");
+        
+        (new Test("mul035")).ok=((new com.ibm.icu.math.BigDecimal("9.999999999")).multiply(new com.ibm.icu.math.BigDecimal("9.999999999")).toString()).equals("99.999999980000000001");
+        
+        (new Test("mul036")).ok=((new com.ibm.icu.math.BigDecimal("5.00")).multiply(new com.ibm.icu.math.BigDecimal("1E-3")).toString()).equals("0.00500");
+        (new Test("mul037")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0.000")).toString()).equals("0.00000");
+        (new Test("mul038")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).multiply(new com.ibm.icu.math.BigDecimal("0E-3")).toString()).equals("0.00"); // rhs is '0'
+        // 1999.12.21: next one is a edge case if intermediate longs are used
+        (new Test("mul039")).ok = ((new com.ibm.icu.math.BigDecimal("999999999999")).multiply(new com.ibm.icu.math.BigDecimal("9765625")).toString()).equals("9765624999990234375");
+
+        l9 = new com.ibm.icu.math.BigDecimal("123456789E+10");
+        l77e = new com.ibm.icu.math.BigDecimal("77E-20");
+        (new Test("mul040")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757")).toString()).equals("4267601195732730000000000");
+        (new Test("mul041")).ok = (l9.multiply(new com.ibm.icu.math.BigDecimal("3456757"), mc3).toString()).equals("4.26E+24");
+        (new Test("mul042")).ok = (l9.multiply(l77e).toString()).equals("0.95061727530000000000");
+        (new Test("mul043")).ok = (l9.multiply(l77e, mc3).toString()).equals("0.947");
+        (new Test("mul044")).ok = (l77e.multiply(l9, mc3).toString()).equals("0.947");
+
+        l12345 = new com.ibm.icu.math.BigDecimal("123.45");
+        (new Test("mul050")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcdef).toString()).equals("1.2345E+13");
+        (new Test("mul051")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mcs).toString()).equals("1.2345E+13");
+        (new Test("mul052")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e+9"),mce).toString()).equals("123.45E+9");
+        (new Test("mul053")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e10"),mce).toString()).equals("1.2345E+12");
+        (new Test("mul054")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e11"),mce).toString()).equals("12.345E+12");
+        (new Test("mul055")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e12"),mce).toString()).equals("123.45E+12");
+        (new Test("mul056")).ok=(l12345.multiply(new com.ibm.icu.math.BigDecimal("1e13"),mce).toString()).equals("1.2345E+15");
+
+        // test some cases that are close to exponent overflow
+        (new Test("mul060")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mcs).toString()).equals("9E+999999999");
+        (new Test("mul061")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mcs).toString()).equals("9.9E+999999999");
+        (new Test("mul062")).ok=(one.multiply(new com.ibm.icu.math.BigDecimal("9.99e999999999"),mcs).toString()).equals("9.99E+999999999");
+        (new Test("mul063")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9e999999999"),mce).toString()).equals("90E+999999999");
+        (new Test("mul064")).ok=(ten.multiply(new com.ibm.icu.math.BigDecimal("9.9e999999999"),mce).toString()).equals("99.0E+999999999");
+        edge = new com.ibm.icu.math.BigDecimal("9.999e999999999");
+        tenedge = ten.multiply(edge, mce);
+        (new Test("mul065")).ok=(tenedge.toString()).equals("99.990E+999999999");
+        hunedge = ten.multiply(tenedge, mce);
+        (new Test("mul066")).ok = (hunedge.toString()).equals("999.900E+999999999");
+        opo = new com.ibm.icu.math.BigDecimal("0.1"); // one tenth
+        (new Test("mul067")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mcs).toString()).equals("9E-999999999");
+        (new Test("mul068")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mcs).toString()).equals("9.9E-999999998");
+        (new Test("mul069")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mcs).toString()).equals("9.99E-999999997");
+
+        (new Test("mul070")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9e-999999998"),mce).toString()).equals("9E-999999999");
+        (new Test("mul071")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99e-999999998"),mce).toString()).equals("99E-999999999");
+        (new Test("mul072")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999998"),mce).toString()).equals("999E-999999999");
+        (new Test("mul073")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("999e-999999997"),mce).toString()).equals("9.99E-999999996");
+        (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("9999e-999999997"),mce).toString()).equals("99.99E-999999996");
+        (new Test("mul074")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("99999e-999999997"),mce).toString()).equals("999.99E-999999996");
+
+        // test some intermediate lengths
+        (new Test("mul080")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcs).toString()).equals("12345678.9");
+        (new Test("mul081")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcs).toString()).equals("1.23456789E+12");
+        (new Test("mul082")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcs).toString()).equals("1.23456789E+16");
+        (new Test("mul083")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789"),mcfd).toString()).equals("12345678.9");
+        (new Test("mul084")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("12345678901234"),mcfd).toString()).equals("1234567890123.4");
+        (new Test("mul085")).ok=(opo.multiply(new com.ibm.icu.math.BigDecimal("123456789123456789"),mcfd).toString()).equals("12345678912345678.9");
+
+        (new Test("mul090")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcs).toString()).equals("12345678.9");
+        (new Test("mul091")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcs).toString()).equals("1.23456789E+12");
+        (new Test("mul092")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcs).toString()).equals("1.23456789E+16");
+        (new Test("mul093")).ok=((new com.ibm.icu.math.BigDecimal("123456789")).multiply(opo,mcfd).toString()).equals("12345678.9");
+        (new Test("mul094")).ok=((new com.ibm.icu.math.BigDecimal("12345678901234")).multiply(opo,mcfd).toString()).equals("1234567890123.4");
+        (new Test("mul095")).ok=((new com.ibm.icu.math.BigDecimal("123456789123456789")).multiply(opo,mcfd).toString()).equals("12345678912345678.9");
+
+        // test some more edge cases and carries
+        (new Test("mul101")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9")).toString()).equals("81");
+        (new Test("mul102")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90")).toString()).equals("810");
+        (new Test("mul103")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900")).toString()).equals("8100");
+        (new Test("mul104")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000")).toString()).equals("81000");
+        (new Test("mul105")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000")).toString()).equals("810000");
+        (new Test("mul106")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000")).toString()).equals("8100000");
+        (new Test("mul107")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000")).toString()).equals("81000000");
+        (new Test("mul108")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000")).toString()).equals("810000000");
+        (new Test("mul109")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000")).toString()).equals("8100000000");
+        (new Test("mul110")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000")).toString()).equals("81000000000");
+        (new Test("mul111")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000")).toString()).equals("810000000000");
+        (new Test("mul112")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000")).toString()).equals("8100000000000");
+        (new Test("mul113")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000")).toString()).equals("81000000000000");
+        (new Test("mul114")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000")).toString()).equals("810000000000000");
+        (new Test("mul115")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000")).toString()).equals("8100000000000000");
+        (new Test("mul116")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000")).toString()).equals("81000000000000000");
+        (new Test("mul117")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000")).toString()).equals("810000000000000000");
+        (new Test("mul118")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000")).toString()).equals("8100000000000000000");
+        (new Test("mul119")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000")).toString()).equals("81000000000000000000");
+        (new Test("mul120")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000")).toString()).equals("810000000000000000000");
+        (new Test("mul121")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("900000000000000000000")).toString()).equals("8100000000000000000000");
+        (new Test("mul122")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("9000000000000000000000")).toString()).equals("81000000000000000000000");
+        (new Test("mul123")).ok=((new com.ibm.icu.math.BigDecimal("9")).multiply(new com.ibm.icu.math.BigDecimal("90000000000000000000000")).toString()).equals("810000000000000000000000");
+        // test some more edge cases without carries
+        (new Test("mul131")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("9");
+        (new Test("mul132")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30")).toString()).equals("90");
+        (new Test("mul133")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300")).toString()).equals("900");
+        (new Test("mul134")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000")).toString()).equals("9000");
+        (new Test("mul135")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000")).toString()).equals("90000");
+        (new Test("mul136")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000")).toString()).equals("900000");
+        (new Test("mul137")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000")).toString()).equals("9000000");
+        (new Test("mul138")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000")).toString()).equals("90000000");
+        (new Test("mul139")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000")).toString()).equals("900000000");
+        (new Test("mul140")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000")).toString()).equals("9000000000");
+        (new Test("mul141")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000")).toString()).equals("90000000000");
+        (new Test("mul142")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000")).toString()).equals("900000000000");
+        (new Test("mul143")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000")).toString()).equals("9000000000000");
+        (new Test("mul144")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000")).toString()).equals("90000000000000");
+        (new Test("mul145")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000")).toString()).equals("900000000000000");
+        (new Test("mul146")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000")).toString()).equals("9000000000000000");
+        (new Test("mul147")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000")).toString()).equals("90000000000000000");
+        (new Test("mul148")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000")).toString()).equals("900000000000000000");
+        (new Test("mul149")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000")).toString()).equals("9000000000000000000");
+        (new Test("mul150")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000")).toString()).equals("90000000000000000000");
+        (new Test("mul151")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("300000000000000000000")).toString()).equals("900000000000000000000");
+        (new Test("mul152")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("3000000000000000000000")).toString()).equals("9000000000000000000000");
+        (new Test("mul153")).ok=((new com.ibm.icu.math.BigDecimal("3")).multiply(new com.ibm.icu.math.BigDecimal("30000000000000000000000")).toString()).equals("90000000000000000000000");
+
+        try {
+            ten.multiply((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $55) {
+            flag = true;
+        }/* checknull */
+        (new Test("mul200")).ok = flag;
+        try {
+            ten.multiply(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $56) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("mul201")).ok = flag;
+
+        try {
+            d1 = new com.ibm.icu.math.BigDecimal("-1.23456789012345E-0");
+            d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");
+            d1.multiply(d2, mcdef); // marginal overflow
+            flag = false;
+        } catch (java.lang.ArithmeticException $57) {
+            oe = $57;
+            flag = (oe.getMessage()).equals("Exponent Overflow: 1000000000");
+        }/* checkover */
+        (new Test("mul202")).ok = flag;
+        try {
+            d1 = new com.ibm.icu.math.BigDecimal("112");
+            d2 = new com.ibm.icu.math.BigDecimal("9E+999999999");
+            d1.multiply(d2, mce); // marginal overflow, engineering
+            flag = false;
+        } catch (java.lang.ArithmeticException $58) {
+            oe = $58;
+            flag = (oe.getMessage()).equals("Exponent Overflow: 1000000002");
+        }/* checkover */
+        (new Test("mul203")).ok = flag;
+
+        try {
+            d1 = new com.ibm.icu.math.BigDecimal("0.9");
+            d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");
+            d1.multiply(d2, mcdef); // marginal negative overflow
+            flag = false;
+        } catch (java.lang.ArithmeticException $59) {
+            oe = $59;
+            flag = (oe.getMessage()).equals("Exponent Overflow: -1000000000");
+        }/* checkover */
+        (new Test("mul204")).ok = flag;
+        try {
+            d1 = new com.ibm.icu.math.BigDecimal("0.9");
+            d2 = new com.ibm.icu.math.BigDecimal("1E-999999999");
+            d1.multiply(d2, mce); // marginal negative overflow,
+                                    // engineering
+            flag = false;
+        } catch (java.lang.ArithmeticException $60) {
+            oe = $60;
+            flag = (oe.getMessage()).equals("Exponent Overflow: -1000000002");
+        }/* checkover */
+        (new Test("mul205")).ok = flag;
+
+        try {
+            tenlong.multiply(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $61) {
+            ae = $61;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("mul206")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.TEN.multiply(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $62) {
+            ae = $62;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("mul207")).ok = flag;
+
+        summary("multiply");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#negate} method. */
+
+    public void diagnegate() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("neg001")).ok=((new com.ibm.icu.math.BigDecimal("2")).negate().toString()).equals("-2");
+        (new Test("neg002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).negate().toString()).equals("2");
+        (new Test("neg003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate(mcdef).toString()).equals("-2.00");
+        (new Test("neg004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate(mcdef).toString()).equals("2.00");
+        (new Test("neg005")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate(mcdef).toString()).equals("0");
+        (new Test("neg006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate(mcdef).toString()).equals("0");
+        (new Test("neg007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate(mcdef).toString()).equals("0");
+        (new Test("neg008")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate(mcdef).toString()).equals("0");
+        
+        (new Test("neg010")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).negate().toString()).equals("-2.00");
+        (new Test("neg011")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).negate().toString()).equals("2.00");
+        (new Test("neg012")).ok=((new com.ibm.icu.math.BigDecimal("0")).negate().toString()).equals("0");
+        (new Test("neg013")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).negate().toString()).equals("0.00");
+        (new Test("neg014")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).negate().toString()).equals("0.0");
+        (new Test("neg015")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).negate().toString()).equals("0.00");
+        (new Test("neg016")).ok=((new com.ibm.icu.math.BigDecimal("00")).negate().toString()).equals("0");
+        
+        (new Test("neg020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate().toString()).equals("2000000");
+        (new Test("neg021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mcdef).toString()).equals("2000000");
+        (new Test("neg022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).negate(mc6).toString()).equals("2.00000E+6");
+        (new Test("neg023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).negate(mc6).toString()).equals("-2.00000E+6");
+
+        try {
+            ten.negate((com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $63) {
+            flag = true;
+        }/* checknull */
+        (new Test("neg100")).ok = flag;
+
+        try {
+            tenlong.negate(mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $64) {
+            ae = $64;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("neg101")).ok = flag;
+        summary("negate");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#plus} method. */
+
+    public void diagplus() {
+        boolean flag = false;
+        com.ibm.icu.math.MathContext mche1;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("plu001")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus(mcdef).toString()).equals("2");
+        (new Test("plu002")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus(mcdef).toString()).equals("-2");
+        (new Test("plu003")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus(mcdef).toString()).equals("2.00");
+        (new Test("plu004")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus(mcdef).toString()).equals("-2.00");
+        (new Test("plu005")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus(mcdef).toString()).equals("0");
+        (new Test("plu006")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus(mcdef).toString()).equals("0");
+        (new Test("plu007")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus(mcdef).toString()).equals("0");
+        (new Test("plu008")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus(mcdef).toString()).equals("0");
+        
+        (new Test("plu010")).ok=((new com.ibm.icu.math.BigDecimal("2")).plus().toString()).equals("2");
+        (new Test("plu011")).ok=((new com.ibm.icu.math.BigDecimal("-2")).plus().toString()).equals("-2");
+        (new Test("plu012")).ok=((new com.ibm.icu.math.BigDecimal("2.00")).plus().toString()).equals("2.00");
+        (new Test("plu013")).ok=((new com.ibm.icu.math.BigDecimal("-2.00")).plus().toString()).equals("-2.00");
+        (new Test("plu014")).ok=((new com.ibm.icu.math.BigDecimal("0")).plus().toString()).equals("0");
+        (new Test("plu015")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).plus().toString()).equals("0.00");
+        (new Test("plu016")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).plus().toString()).equals("0.0");
+        (new Test("plu017")).ok=((new com.ibm.icu.math.BigDecimal("00.00")).plus().toString()).equals("0.00");
+        (new Test("plu018")).ok=((new com.ibm.icu.math.BigDecimal("00")).plus().toString()).equals("0");
+        
+        (new Test("plu020")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus().toString()).equals("-2000000");
+        (new Test("plu021")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mcdef).toString()).equals("-2000000");
+        (new Test("plu022")).ok=((new com.ibm.icu.math.BigDecimal("-2000000")).plus(mc6).toString()).equals("-2.00000E+6");
+        (new Test("plu023")).ok=((new com.ibm.icu.math.BigDecimal("2000000")).plus(mc6).toString()).equals("2.00000E+6");
+
+        // try some exotic but silly rounding [format checks more varieties]
+        // [this mostly ensures we can set up and pass the setting]
+        mche1=new com.ibm.icu.math.MathContext(1,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+        (new Test("plu030")).ok=((new com.ibm.icu.math.BigDecimal("0.24")).plus(mche1).toString()).equals("0.2");
+        (new Test("plu031")).ok=((new com.ibm.icu.math.BigDecimal("0.25")).plus(mche1).toString()).equals("0.2");
+        (new Test("plu032")).ok=((new com.ibm.icu.math.BigDecimal("0.26")).plus(mche1).toString()).equals("0.3");
+        (new Test("plu033")).ok=((new com.ibm.icu.math.BigDecimal("0.14")).plus(mche1).toString()).equals("0.1");
+        (new Test("plu034")).ok=((new com.ibm.icu.math.BigDecimal("0.15")).plus(mche1).toString()).equals("0.2");
+        (new Test("plu035")).ok=((new com.ibm.icu.math.BigDecimal("0.16")).plus(mche1).toString()).equals("0.2");
+        
+        (new Test("plu040")).ok=((new com.ibm.icu.math.BigDecimal("0.251")).plus(mche1).toString()).equals("0.3");
+        (new Test("plu041")).ok=((new com.ibm.icu.math.BigDecimal("0.151")).plus(mche1).toString()).equals("0.2");
+        
+        (new Test("plu050")).ok=((new com.ibm.icu.math.BigDecimal("-0.24")).plus(mche1).toString()).equals("-0.2");
+        (new Test("plu051")).ok=((new com.ibm.icu.math.BigDecimal("-0.25")).plus(mche1).toString()).equals("-0.2");
+        (new Test("plu052")).ok=((new com.ibm.icu.math.BigDecimal("-0.26")).plus(mche1).toString()).equals("-0.3");
+        (new Test("plu053")).ok=((new com.ibm.icu.math.BigDecimal("-0.14")).plus(mche1).toString()).equals("-0.1");
+        (new Test("plu054")).ok=((new com.ibm.icu.math.BigDecimal("-0.15")).plus(mche1).toString()).equals("-0.2");
+        (new Test("plu055")).ok=((new com.ibm.icu.math.BigDecimal("-0.16")).plus(mche1).toString()).equals("-0.2");
+
+        // more fixed, potential LHS swaps if done by add 0
+        (new Test("plu060")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).plus().toString()).equals("-0.0000056267");
+        (new Test("plu061")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).plus().toString()).equals("-0.56267");
+        (new Test("plu062")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).plus().toString()).equals("-562.67");
+        (new Test("plu063")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).plus().toString()).equals("-5626.7");
+        (new Test("plu065")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).plus().toString()).equals("-56267");
+
+        try {
+            ten.plus((com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $65) {
+            flag = true;
+        }/* checknull */
+        (new Test("plu100")).ok = flag;
+
+        try {
+            tenlong.plus(mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $66) {
+            ae = $66;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("plu101")).ok = flag;
+        summary("plus");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#pow} method. */
+
+    public void diagpow() {
+        boolean flag;
+        com.ibm.icu.math.BigDecimal x;
+        com.ibm.icu.math.BigDecimal temp;
+        int n = 0;
+        com.ibm.icu.math.BigDecimal vx;
+        com.ibm.icu.math.BigDecimal vn;
+        java.lang.ArithmeticException ae = null;
+        flag = true;
+        (new Test("pow001")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());
+        (new Test("pow002")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());
+        (new Test("pow003")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00"),mcdef).toString());
+        (new Test("pow004")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00"),mcdef).toString());
+        (new Test("pow005")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.000000000"),mcdef).toString());
+        (new Test("pow006")).ok=("1E-8").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-8"),mcdef).toString());
+        (new Test("pow007")).ok=("1E-7").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-7"),mcdef).toString());
+        (new Test("pow008")).ok="0.000001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-6"),mcdef).toString());
+        (new Test("pow009")).ok="0.00001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-5"),mcdef).toString());
+        (new Test("pow010")).ok="0.0001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());
+        (new Test("pow011")).ok="0.001".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString());
+        (new Test("pow012")).ok="0.01".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());
+        (new Test("pow013")).ok="0.1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());
+        (new Test("pow014")).ok="1".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString());
+        (new Test("pow015")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString());
+        (new Test("pow016")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8"),mcdef).toString());
+        (new Test("pow017")).ok=("1E+9").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9"),mcdef).toString());
+        (new Test("pow018")).ok=("1E+99").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("99"),mcdef).toString());
+        (new Test("pow019")).ok=("1E+999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString());
+        (new Test("pow020")).ok=("1E+999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString());
+        (new Test("pow021")).ok=("1E+999999997").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString());
+        (new Test("pow022")).ok=("1E+333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString());
+        (new Test("pow023")).ok=("1E-333333333").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-333333333"),mcdef).toString());
+        (new Test("pow024")).ok=("1E-999999998").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999998"),mcdef).toString());
+        (new Test("pow025")).ok=("1E-999999999").equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-999999999"),mcdef).toString());
+        (new Test("pow026")).ok="0.5".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString());
+        (new Test("pow027")).ok="0.25".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString());
+        (new Test("pow028")).ok="0.0625".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString());
+        
+        (new Test("pow050")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+        (new Test("pow051")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("0");
+        (new Test("pow052")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0");
+        (new Test("pow053")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+        (new Test("pow054")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1"),mcdef).toString()).equals("1");
+        (new Test("pow055")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("pow056")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("1");
+        (new Test("pow057")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999999"),mcdef).toString()).equals("1E+999999999");
+        (new Test("pow058")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999998"),mcdef).toString()).equals("1E+999999998");
+        (new Test("pow059")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("999999997"),mcdef).toString()).equals("1E+999999997");
+        (new Test("pow060")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("333333333"),mcdef).toString()).equals("1E+333333333");
+        (new Test("pow061")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("77"),mcdef).toString()).equals("1E+77");
+        (new Test("pow062")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("22"),mcdef).toString()).equals("1E+22");
+        (new Test("pow063")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-77"),mcdef).toString()).equals("1E-77");
+        (new Test("pow064")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("-22"),mcdef).toString()).equals("1E-22");
+        (new Test("pow065")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-1"),mcdef).toString()).equals("0.5");
+        (new Test("pow066")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-2"),mcdef).toString()).equals("0.25");
+        (new Test("pow067")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("-4"),mcdef).toString()).equals("0.0625");
+        (new Test("pow068")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("36");
+        (new Test("pow069")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("9");/* from book */
+        (new Test("pow070")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2"),mcdef).pow(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("64");/* from book */
+
+        // 1998.12.14 Next test removed as pow() no longer rounds RHS [as per ANSI]
+        // Test('pow071').ok=BigDecimal('2').pow(BigDecimal('2.000000001'),mcdef).toString == '4'/* check input rounding */
+
+        /* General tests from original Rexx diagnostics */
+        x = new com.ibm.icu.math.BigDecimal("0.5");
+        temp = com.ibm.icu.math.BigDecimal.ONE;
+        flag = true;
+        {
+            n = 1;
+            for (; n <= 10; n++) {
+                temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);
+                flag = flag
+                        & (x.pow(new com.ibm.icu.math.BigDecimal(n), mcdef)
+                                .toString()).equals(temp.toString());
+            }
+        }/* n */
+        (new Test("pow080")).ok = flag;
+
+        x = new com.ibm.icu.math.BigDecimal("2");
+        temp = com.ibm.icu.math.BigDecimal.ONE;
+        flag = true;
+        {
+            n = 1;
+            for (; n <= 29; n++) {
+                temp = temp.multiply(x).divide(com.ibm.icu.math.BigDecimal.ONE);
+                flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal(n),mcdef).toString()).equals(temp.toString());
+                flag=flag&(x.pow(new com.ibm.icu.math.BigDecimal((int)-n),mcdef).toString()).equals(com.ibm.icu.math.BigDecimal.ONE.divide(temp,mcdef).toString());
+                /* Note that rounding errors are possible for larger "n" */
+                /* due to the information content of the exponent */
+            }
+        }/* n */
+        (new Test("pow081")).ok = flag;
+
+        /* The Vienna case. Checks both setup and 1/acc working precision */
+        // Modified 1998.12.14 as RHS no longer rounded before use (must fit)
+        // Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
+        vx=new com.ibm.icu.math.BigDecimal("123456789E+10"); // lhs .. rounded to 1.23E+18
+        vn=new com.ibm.icu.math.BigDecimal("-1.23000e+2"); // rhs .. [was: -1.23455e+2, rounds to -123]
+        (new Test("pow090")).ok=(vx.pow(vn,mc3).toString()).equals("8.74E-2226");
+
+        // - fixed point versions ---
+        (new Test("pow101")).ok="1".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());
+        (new Test("pow102")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());
+        (new Test("pow103")).ok="0.3".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("1.00")).toString());
+        (new Test("pow104")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString());
+        (new Test("pow105")).ok="0.09".equals((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("2.00")).toString());
+        (new Test("pow106")).ok="10".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("1")).toString());
+        (new Test("pow107")).ok="100000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());
+        (new Test("pow108")).ok="1000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("9")).toString());
+        (new Test("pow109")).ok="10000000000".equals((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());
+        (new Test("pow110")).ok="1".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("0")).toString());
+        (new Test("pow111")).ok="16".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("4")).toString());
+        (new Test("pow112")).ok="256".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("8")).toString());
+        (new Test("pow113")).ok="1024".equals((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("10")).toString());
+        (new Test("pow114")).ok="1.0510100501".equals((new com.ibm.icu.math.BigDecimal("1.01")).pow(new com.ibm.icu.math.BigDecimal("5")).toString());
+
+        (new Test("pow120")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+        (new Test("pow121")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("0");
+        (new Test("pow122")).ok=((new com.ibm.icu.math.BigDecimal("0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0");
+        (new Test("pow123")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+        (new Test("pow144")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("1")).toString()).equals("1");
+        (new Test("pow125")).ok=((new com.ibm.icu.math.BigDecimal("1")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("pow126")).ok=((new com.ibm.icu.math.BigDecimal("0.3")).pow(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("1");
+        (new Test("pow127")).ok=((new com.ibm.icu.math.BigDecimal("10")).pow(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("10000000");
+        (new Test("pow128")).ok=((new com.ibm.icu.math.BigDecimal("6.0")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.00");
+        (new Test("pow129")).ok=((new com.ibm.icu.math.BigDecimal("6.00")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.0000");
+        (new Test("pow130")).ok=((new com.ibm.icu.math.BigDecimal("6.000")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("36.000000");
+        (new Test("pow131")).ok=((new com.ibm.icu.math.BigDecimal("-3")).pow(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("9");
+        (new Test("pow132")).ok=((new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("2")).pow(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("64");
+
+        /* errors */
+        try {
+            ten.pow((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $67) {
+            flag = true;
+        }/* checknull */
+        (new Test("pow150")).ok = flag;
+        try {
+            ten.pow(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $68) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("pow151")).ok = flag;
+
+        flag = true;
+        try {
+            tenlong.pow(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $69) {
+            ae = $69;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("pow152")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $70) {
+            ae = $70;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("pow153")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE
+                    .pow(new com.ibm.icu.math.BigDecimal("-71"));
+            flag = false;
+        } catch (java.lang.ArithmeticException $71) {
+            ae = $71;
+            flag = (ae.getMessage()).equals("Negative power: -71");
+        }/* checkpos */
+        (new Test("pow154")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("1234"), mc3);
+            flag = false;
+        } catch (java.lang.ArithmeticException $72) {
+            ae = $72;
+            flag = (ae.getMessage()).equals("Too many digits: 1234");
+        }/* checkwhole */
+        (new Test("pow155")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("12.34e+2"), mc3);
+            flag = false;
+        } catch (java.lang.ArithmeticException $73) {
+            ae = $73;
+            flag = (ae.getMessage()).equals("Too many digits: 1.234E+3");
+        }/* checkwhole1 */
+        (new Test("pow156")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("12.4"), mcdef);
+            flag = false;
+        } catch (java.lang.ArithmeticException $74) {
+            ae = $74;
+            flag = (ae.getMessage()).equals("Decimal part non-zero: 12.4");
+        }/* checkwhole2 */
+        (new Test("pow157")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("1.01"), mcdef);
+            flag = false;
+        } catch (java.lang.ArithmeticException $75) {
+            ae = $75;
+            flag = (ae.getMessage()).equals("Decimal part non-zero: 1.01");
+        }/* checkwhole3 */
+        (new Test("pow158")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("1.000000001"), mcdef);
+            flag = false;
+        } catch (java.lang.ArithmeticException $76) {
+            ae = $76;
+            flag = (ae.getMessage())
+                    .equals("Decimal part non-zero: 1.000000001");
+        }/* checkwhole4 */
+        (new Test("pow159")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.pow(
+                    new com.ibm.icu.math.BigDecimal("1.000000001"), mc3);
+            flag = false;
+        } catch (java.lang.ArithmeticException $77) {
+            ae = $77;
+            flag = (ae.getMessage())
+                    .equals("Decimal part non-zero: 1.000000001");
+        }/* checkwhole5 */
+        (new Test("pow160")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE
+                    .pow(
+                            new com.ibm.icu.math.BigDecimal(
+                                    "5.67E-987654321"), mc3);
+            flag = false;
+        } catch (java.lang.ArithmeticException $78) {
+            ae = $78;
+            flag = (ae.getMessage())
+                    .equals("Decimal part non-zero: 5.67E-987654321");
+        }/* checkwhole6 */
+        (new Test("pow161")).ok = flag;
+
+        summary("pow");
+    }
+
+    /*--------------------------------------------------------------------*/
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#remainder} method. */
+
+    public void diagremainder() {
+        boolean flag = false;
+        java.lang.ArithmeticException ae = null;
+
+        (new Test("rem001")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("1");
+        (new Test("rem002")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5"),mcdef).toString()).equals("0");
+        (new Test("rem003")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10"),mcdef).toString()).equals("3");
+        (new Test("rem004")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50"),mcdef).toString()).equals("13");
+        (new Test("rem005")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100"),mcdef).toString()).equals("13");
+        (new Test("rem006")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000"),mcdef).toString()).equals("13");
+        (new Test("rem007")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");
+        (new Test("rem008")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");
+        (new Test("rem009")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");
+        (new Test("rem010")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");
+        (new Test("rem011")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");
+        (new Test("rem012")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");
+        (new Test("rem013")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");
+        (new Test("rem014")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+        (new Test("rem015")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+        (new Test("rem016")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50),mcdef).toString()).equals("33");
+        (new Test("rem017")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("2.0");
+        (new Test("rem018")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("0");
+        (new Test("rem019")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("1.0");
+        (new Test("rem020")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");
+        (new Test("rem021")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");
+        (new Test("rem022")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");
+        (new Test("rem023")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.4");
+        (new Test("rem024")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+        (new Test("rem025")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");
+        (new Test("rem026")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30"),mcdef).toString()).equals("0.10");
+        (new Test("rem027")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300"),mcdef).toString()).equals("0.100");
+        (new Test("rem028")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000"),mcdef).toString()).equals("0.1000");
+        (new Test("rem029")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1");
+        (new Test("rem030")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.10");
+        (new Test("rem031")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.100");
+        (new Test("rem032")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.1000");
+        (new Test("rem033")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001"),mcdef).toString()).equals("0.5");
+        
+        (new Test("rem040")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000001"),mcdef).toString()).equals("0.5");
+        (new Test("rem041")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000001"),mcdef).toString()).equals("0.5");
+        (new Test("rem042")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001"),mcdef).toString()).equals("0.5");
+        (new Test("rem043")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001"),mcdef).toString()).equals("0");
+        (new Test("rem044")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.50000000001"),mcdef).toString()).equals("0");
+        (new Test("rem045")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999"),mcdef).toString()).equals("1E-7");
+        (new Test("rem046")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999"),mcdef).toString()).equals("1E-8");
+        (new Test("rem047")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.499999999"),mcdef).toString()).equals("1E-9");
+        (new Test("rem048")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.4999999999"),mcdef).toString()).equals("0");
+        (new Test("rem049")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.49999999999"),mcdef).toString()).equals("0");
+        
+        (new Test("rem050")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7"),mcdef).toString()).equals("0.03");
+        (new Test("rem051")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1");
+        (new Test("rem052")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.1");
+        (new Test("rem053")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.01");
+        (new Test("rem054")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.001");
+        (new Test("rem055")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.0001");
+        (new Test("rem056")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.00001");
+        (new Test("rem057")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("0.000001");
+        (new Test("rem058")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2"),mcdef).toString()).equals("1E-7");
+        
+        (new Test("rem060")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345"),mcdef).toString()).equals("0.4655");
+        (new Test("rem061")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.8");
+        (new Test("rem062")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2"),mcdef).toString()).equals("0");
+        (new Test("rem063")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.2");
+        (new Test("rem064")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12"),mcdef).toString()).equals("0.800");
+        (new Test("rem065")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7"),mcdef).toString()).equals("0.800");
+        (new Test("rem066")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+
+        // MC --
+        (new Test("rem071")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mc6).toString()).equals("0.400");
+        (new Test("rem072")).ok=((new com.ibm.icu.math.BigDecimal("12345678900000")).remainder(new com.ibm.icu.math.BigDecimal("12e+12"),mc3).toString()).equals("3E+11");
+
+        // Fixed --
+        (new Test("rem101")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("1");
+        (new Test("rem102")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("5")).toString()).equals("0");
+        (new Test("rem103")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("10")).toString()).equals("3");
+        (new Test("rem104")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("50")).toString()).equals("13");
+        (new Test("rem105")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("100")).toString()).equals("13");
+        (new Test("rem106")).ok=((new com.ibm.icu.math.BigDecimal("13")).remainder(new com.ibm.icu.math.BigDecimal("1000")).toString()).equals("13");
+        (new Test("rem107")).ok=((new com.ibm.icu.math.BigDecimal(".13")).remainder(one).toString()).equals("0.13");
+        (new Test("rem108")).ok=((new com.ibm.icu.math.BigDecimal("0.133")).remainder(one).toString()).equals("0.133");
+        (new Test("rem109")).ok=((new com.ibm.icu.math.BigDecimal("0.1033")).remainder(one).toString()).equals("0.1033");
+        (new Test("rem110")).ok=((new com.ibm.icu.math.BigDecimal("1.033")).remainder(one).toString()).equals("0.033");
+        (new Test("rem111")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(one).toString()).equals("0.33");
+        (new Test("rem112")).ok=((new com.ibm.icu.math.BigDecimal("10.33")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("0.33");
+        (new Test("rem113")).ok=((new com.ibm.icu.math.BigDecimal("103.3")).remainder(com.ibm.icu.math.BigDecimal.ONE).toString()).equals("0.3");
+        (new Test("rem114")).ok=((new com.ibm.icu.math.BigDecimal("133")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+        (new Test("rem115")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(com.ibm.icu.math.BigDecimal.TEN).toString()).equals("3");
+        (new Test("rem116")).ok=((new com.ibm.icu.math.BigDecimal("1033")).remainder(new com.ibm.icu.math.BigDecimal(50)).toString()).equals("33");
+        (new Test("rem117")).ok=((new com.ibm.icu.math.BigDecimal("101.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("2.0");
+        (new Test("rem118")).ok=((new com.ibm.icu.math.BigDecimal("102.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("0");
+        (new Test("rem119")).ok=((new com.ibm.icu.math.BigDecimal("103.0")).remainder(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("1.0");
+        (new Test("rem120")).ok=((new com.ibm.icu.math.BigDecimal("2.40")).remainder(one).toString()).equals("0.40");
+        (new Test("rem121")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(one).toString()).equals("0.400");
+        (new Test("rem122")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(one).toString()).equals("0.4");
+        (new Test("rem123")).ok=((new com.ibm.icu.math.BigDecimal("2.4")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.4");
+        (new Test("rem124")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2)).toString()).equals("0.400");
+        (new Test("rem125")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");
+        (new Test("rem126")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.30")).toString()).equals("0.10");
+        (new Test("rem127")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.300")).toString()).equals("0.100");
+        (new Test("rem128")).ok=((new com.ibm.icu.math.BigDecimal("1")).remainder(new com.ibm.icu.math.BigDecimal("0.3000")).toString()).equals("0.1000");
+        (new Test("rem129")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1");
+        (new Test("rem130")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.10");
+        (new Test("rem131")).ok=((new com.ibm.icu.math.BigDecimal("1.000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.100");
+        (new Test("rem132")).ok=((new com.ibm.icu.math.BigDecimal("1.0000")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.1000");
+        (new Test("rem133")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("2.001")).toString()).equals("0.5");
+        (new Test("rem134")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.500000001")).toString()).equals("0.5");
+        (new Test("rem135")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).remainder(new com.ibm.icu.math.BigDecimal("0.5000000001")).toString()).equals("0.5");
+        (new Test("rem136")).ok=((new com.ibm.icu.math.BigDecimal("0.03")).remainder(new com.ibm.icu.math.BigDecimal("7")).toString()).equals("0.03");
+        (new Test("rem137")).ok=((new com.ibm.icu.math.BigDecimal("5")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("1");
+        (new Test("rem138")).ok=((new com.ibm.icu.math.BigDecimal("4.1")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.1");
+        (new Test("rem139")).ok=((new com.ibm.icu.math.BigDecimal("4.01")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.01");
+        (new Test("rem140")).ok=((new com.ibm.icu.math.BigDecimal("4.001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.001");
+        (new Test("rem141")).ok=((new com.ibm.icu.math.BigDecimal("4.0001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0001");
+        (new Test("rem142")).ok=((new com.ibm.icu.math.BigDecimal("4.00001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.00001");
+        (new Test("rem143")).ok=((new com.ibm.icu.math.BigDecimal("4.000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.000001");
+        (new Test("rem144")).ok=((new com.ibm.icu.math.BigDecimal("4.0000001")).remainder(new com.ibm.icu.math.BigDecimal("2")).toString()).equals("0.0000001"); // 1E-7, plain
+        (new Test("rem145")).ok=((new com.ibm.icu.math.BigDecimal("1.2")).remainder(new com.ibm.icu.math.BigDecimal("0.7345")).toString()).equals("0.4655");
+        (new Test("rem146")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.8");
+        (new Test("rem147")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.2")).toString()).equals("0");
+        (new Test("rem148")).ok=((new com.ibm.icu.math.BigDecimal("0.8")).remainder(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.2");
+        (new Test("rem149")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("12")).toString()).equals("0.800");
+        (new Test("rem150")).ok=((new com.ibm.icu.math.BigDecimal("0.800")).remainder(new com.ibm.icu.math.BigDecimal("1.7")).toString()).equals("0.800");
+        (new Test("rem151")).ok=((new com.ibm.icu.math.BigDecimal("2.400")).remainder(new com.ibm.icu.math.BigDecimal(2),mcdef).toString()).equals("0.400");
+
+
+        try {
+            ten.remainder((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $79) {
+            flag = true;
+        }/* checknull */
+        (new Test("rem200")).ok = flag;
+        try {
+            ten.remainder(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $80) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("rem201")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.remainder(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $81) {
+            ae = $81;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("rem202")).ok = flag;
+
+        try {
+            tenlong.remainder(one, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $82) {
+            ae = $82;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("rem203")).ok = flag;
+
+        summary("remainder");
+    }
+
+    /*--------------------------------------------------------------------*/
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#subtract} method. */
+
+    public void diagsubtract() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal alhs;
+        com.ibm.icu.math.BigDecimal arhs;
+        java.lang.ArithmeticException ae = null;
+
+        // [first group are 'quick confidence check']
+        (new Test("sub301")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3),mcdef).toString()).equals("-1");
+        (new Test("sub302")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3"),mcdef).toString()).equals("2.45");
+        (new Test("sub303")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("8");
+        (new Test("sub304")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("-2");
+        (new Test("sub305")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5"),mcdef).toString()).equals("-9.5");
+        (new Test("sub306")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("0.4");
+        (new Test("sub307")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3"),mcdef).toString()).equals("1.0");
+        (new Test("sub308")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25"),mcdef).toString()).equals("0");
+        (new Test("sub309")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000"),mcdef).toString()).equals("0.23456789");
+        
+        (new Test("sub310")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089"),mcdef).toString()).equals("0.23456700");
+        
+        (new Test("sub311")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001"),mcdef).toString()).equals("0.555555556");
+        
+        (new Test("sub312")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005"),mcdef).toString()).equals("0.555555556");
+        
+        (new Test("sub313")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111"),mcdef).toString()).equals("0.333333333");
+        
+        (new Test("sub314")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001"),mcdef).toString()).equals("0.99999999");
+        
+        (new Test("sub315")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444444");
+        
+        (new Test("sub316")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0"),mcdef).toString()).equals("0.444444445");
+        
+        
+        (new Test("sub317")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+        
+        (new Test("sub318")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+        
+        (new Test("sub319")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-1.00000000E+13");
+        
+        (new Test("sub320")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999999E+12");
+        
+        (new Test("sub321")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9"),mcdef).toString()).equals("-9.9999993E+12");
+
+        // symmetry:
+        (new Test("sub322")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("sub323")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("sub324")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000"),mcdef).toString()).equals("1.00000000E+13");
+        
+        (new Test("sub325")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");
+        
+        (new Test("sub326")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000"),mcdef).toString()).equals("9.9999993E+12");
+
+
+        // [same with fixed point arithmetic]
+        (new Test("sub001")).ok=((new com.ibm.icu.math.BigDecimal(2)).subtract(new com.ibm.icu.math.BigDecimal(3)).toString()).equals("-1");
+        (new Test("sub002")).ok=((new com.ibm.icu.math.BigDecimal("5.75")).subtract(new com.ibm.icu.math.BigDecimal("3.3")).toString()).equals("2.45");
+        (new Test("sub003")).ok=((new com.ibm.icu.math.BigDecimal("5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("8");
+        (new Test("sub004")).ok=((new com.ibm.icu.math.BigDecimal("-5")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("-2");
+        (new Test("sub005")).ok=((new com.ibm.icu.math.BigDecimal("-7")).subtract(new com.ibm.icu.math.BigDecimal("2.5")).toString()).equals("-9.5");
+        (new Test("sub006")).ok=((new com.ibm.icu.math.BigDecimal("0.7")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("0.4");
+        (new Test("sub007")).ok=((new com.ibm.icu.math.BigDecimal("1.3")).subtract(new com.ibm.icu.math.BigDecimal("0.3")).toString()).equals("1.0");
+        (new Test("sub008")).ok=((new com.ibm.icu.math.BigDecimal("1.25")).subtract(new com.ibm.icu.math.BigDecimal("1.25")).toString()).equals("0.00");
+        (new Test("sub009")).ok=((new com.ibm.icu.math.BigDecimal("0.02")).subtract(new com.ibm.icu.math.BigDecimal("0.02")).toString()).equals("0.00");
+        
+        (new Test("sub010")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000000")).toString()).equals("0.23456789");
+        
+        (new Test("sub011")).ok=((new com.ibm.icu.math.BigDecimal("1.23456789")).subtract(new com.ibm.icu.math.BigDecimal("1.00000089")).toString()).equals("0.23456700");
+        
+        (new Test("sub012")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000001")).toString()).equals("0.5555555558");
+        
+        (new Test("sub013")).ok=((new com.ibm.icu.math.BigDecimal("0.5555555559")).subtract(new com.ibm.icu.math.BigDecimal("0.0000000005")).toString()).equals("0.5555555554");
+        
+        (new Test("sub014")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444")).subtract(new com.ibm.icu.math.BigDecimal("0.1111111111")).toString()).equals("0.3333333333");
+        
+        (new Test("sub015")).ok=((new com.ibm.icu.math.BigDecimal("1.0000000000")).subtract(new com.ibm.icu.math.BigDecimal("0.00000001")).toString()).equals("0.9999999900");
+        
+        (new Test("sub016")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444444999")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444444999");
+        
+        (new Test("sub017")).ok=((new com.ibm.icu.math.BigDecimal("0.4444444445000")).subtract(new com.ibm.icu.math.BigDecimal("0")).toString()).equals("0.4444444445000");
+        
+        
+        (new Test("sub018")).ok=((new com.ibm.icu.math.BigDecimal("70")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999930");
+        
+        (new Test("sub019")).ok=((new com.ibm.icu.math.BigDecimal("700")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999999300");
+        
+        (new Test("sub020")).ok=((new com.ibm.icu.math.BigDecimal("7000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999993000");
+        
+        (new Test("sub021")).ok=((new com.ibm.icu.math.BigDecimal("70000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999930000");
+        
+        (new Test("sub022")).ok=((new com.ibm.icu.math.BigDecimal("700000")).subtract(new com.ibm.icu.math.BigDecimal("10000e+9")).toString()).equals("-9999999300000");
+
+        // symmetry:
+        (new Test("sub023")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70")).toString()).equals("9999999999930");
+        
+        (new Test("sub024")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700")).toString()).equals("9999999999300");
+        
+        (new Test("sub025")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("7000")).toString()).equals("9999999993000");
+        
+        (new Test("sub026")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000")).toString()).equals("9999999930000");
+        
+        (new Test("sub027")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("700000")).toString()).equals("9999999300000");
+
+        // MC
+        (new Test("sub030")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mcdef).toString()).equals("9.9999999E+12");
+        
+        (new Test("sub031")).ok=((new com.ibm.icu.math.BigDecimal("10000e+9")).subtract(new com.ibm.icu.math.BigDecimal("70000"),mc6).toString()).equals("1.00000E+13");
+
+
+        // some of the next group are really constructor tests
+        (new Test("sub040")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.0")).toString()).equals("0.0");
+        (new Test("sub041")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00")).toString()).equals("0.00");
+        (new Test("sub042")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0")).toString()).equals("0.00");
+        (new Test("sub043")).ok=((new com.ibm.icu.math.BigDecimal("00.0")).subtract(new com.ibm.icu.math.BigDecimal("0.00"),mcdef).toString()).equals("0");
+        (new Test("sub044")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("00.0"),mcdef).toString()).equals("0");
+        (new Test("sub045")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+        (new Test("sub046")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+        (new Test("sub047")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.7");
+        (new Test("sub048")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3"),mcdef).toString()).equals("2.70");
+        (new Test("sub049")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3"),mcdef).toString()).equals("0");
+        (new Test("sub050")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3"),mcdef).toString()).equals("0");
+        (new Test("sub051")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3"),mcdef).toString()).equals("6");
+        (new Test("sub052")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+        (new Test("sub053")).ok=((new com.ibm.icu.math.BigDecimal("3.")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+        (new Test("sub054")).ok=((new com.ibm.icu.math.BigDecimal("3.0")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.7");
+        (new Test("sub055")).ok=((new com.ibm.icu.math.BigDecimal("3.00")).subtract(new com.ibm.icu.math.BigDecimal(".3")).toString()).equals("2.70");
+        (new Test("sub056")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("3")).toString()).equals("0");
+        (new Test("sub057")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("+3")).toString()).equals("0");
+        (new Test("sub058")).ok=((new com.ibm.icu.math.BigDecimal("3")).subtract(new com.ibm.icu.math.BigDecimal("-3")).toString()).equals("6");
+
+        // the above all from add; massaged and extended. Now some new ones...
+        // [particularly important for comparisons]
+        // NB: -1E-7 below were non-exponents pre-ANSI
+        (new Test("sub080")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub081")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub082")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub083")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub084")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub085")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub086")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub087")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub088")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456792")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub089")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456793")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub090")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456794")).subtract(new com.ibm.icu.math.BigDecimal("10.23456789"),mcdef).toString());
+        (new Test("sub091")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456781")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub092")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456782")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub093")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456783")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub094")).ok=("-1E-7").equals((new com.ibm.icu.math.BigDecimal("10.23456784")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub095")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456785")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub096")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456786")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub097")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456787")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub098")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456788")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub099")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456789")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub100")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456790")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub101")).ok="0".equals((new com.ibm.icu.math.BigDecimal("10.23456791")).subtract(new com.ibm.icu.math.BigDecimal("10.23456786"),mcdef).toString());
+        (new Test("sub102")).ok="0".equals(com.ibm.icu.math.BigDecimal.ONE.subtract(new com.ibm.icu.math.BigDecimal("0.999999999"),mcdef).toString());
+        (new Test("sub103")).ok="0".equals((new com.ibm.icu.math.BigDecimal("0.999999999")).subtract(com.ibm.icu.math.BigDecimal.ONE,mcdef).toString());
+
+        alhs = new com.ibm.icu.math.BigDecimal("12345678900000");
+        arhs = new com.ibm.icu.math.BigDecimal("9999999999999");
+        (new Test("sub110")).ok = (alhs.subtract(arhs, mc3).toString()).equals("2.3E+12");
+        (new Test("sub111")).ok = (arhs.subtract(alhs, mc3).toString()).equals("-2.3E+12");
+        (new Test("sub112")).ok = (alhs.subtract(arhs).toString()).equals("2345678900001");
+        (new Test("sub113")).ok = (arhs.subtract(alhs).toString()).equals("-2345678900001");
+
+        // additional scaled arithmetic tests [0.97 problem]
+        (new Test("sub120")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".1")).toString()).equals("-0.1");
+        (new Test("sub121")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".97983")).toString()).equals("-0.97983");
+        (new Test("sub122")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".9")).toString()).equals("-0.9");
+        (new Test("sub123")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.102")).toString()).equals("-0.102");
+        (new Test("sub124")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".4")).toString()).equals("-0.4");
+        (new Test("sub125")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".307")).toString()).equals("-0.307");
+        (new Test("sub126")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".43822")).toString()).equals("-0.43822");
+        (new Test("sub127")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".911")).toString()).equals("-0.911");
+        (new Test("sub128")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".02")).toString()).equals("-0.02");
+        (new Test("sub129")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal(".392")).toString()).equals("-0.392");
+        (new Test("sub130")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".26")).toString()).equals("-0.26");
+        (new Test("sub131")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("0.51")).toString()).equals("-0.51");
+        (new Test("sub132")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2234")).toString()).equals("-0.2234");
+        (new Test("sub133")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal(".2")).toString()).equals("-0.2");
+        (new Test("sub134")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal(".0008")).toString()).equals("-0.0008");
+        // 0. on left
+        (new Test("sub140")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");
+        (new Test("sub141")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");
+        (new Test("sub142")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");
+        (new Test("sub143")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");
+        (new Test("sub144")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");
+        (new Test("sub145")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");
+        (new Test("sub146")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");
+        (new Test("sub147")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");
+        (new Test("sub148")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");
+        (new Test("sub149")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");
+        (new Test("sub150")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");
+        (new Test("sub151")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");
+        (new Test("sub152")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");
+        (new Test("sub153")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");
+        (new Test("sub154")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");
+        // negatives of same
+        (new Test("sub160")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.1")).toString()).equals("0.1");
+        (new Test("sub161")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.97983")).toString()).equals("0.97983");
+        (new Test("sub162")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.9")).toString()).equals("0.9");
+        (new Test("sub163")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.102")).toString()).equals("0.102");
+        (new Test("sub164")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.4")).toString()).equals("0.4");
+        (new Test("sub165")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.307")).toString()).equals("0.307");
+        (new Test("sub166")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.43822")).toString()).equals("0.43822");
+        (new Test("sub167")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.911")).toString()).equals("0.911");
+        (new Test("sub168")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.02")).toString()).equals("0.02");
+        (new Test("sub169")).ok=((new com.ibm.icu.math.BigDecimal("00")).subtract(new com.ibm.icu.math.BigDecimal("-.392")).toString()).equals("0.392");
+        (new Test("sub170")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.26")).toString()).equals("0.26");
+        (new Test("sub171")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-0.51")).toString()).equals("0.51");
+        (new Test("sub172")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2234")).toString()).equals("0.2234");
+        (new Test("sub173")).ok=((new com.ibm.icu.math.BigDecimal("0")).subtract(new com.ibm.icu.math.BigDecimal("-.2")).toString()).equals("0.2");
+        (new Test("sub174")).ok=((new com.ibm.icu.math.BigDecimal(".0")).subtract(new com.ibm.icu.math.BigDecimal("-.0008")).toString()).equals("0.0008");
+
+        // more fixed, LHS swaps [really same as testcases under add]
+        (new Test("sub180")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-10")).subtract(zero).toString()).equals("-0.0000056267");
+        (new Test("sub181")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-5")).subtract(zero).toString()).equals("-0.56267");
+        (new Test("sub182")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-2")).subtract(zero).toString()).equals("-562.67");
+        (new Test("sub183")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-1")).subtract(zero).toString()).equals("-5626.7");
+        (new Test("sub185")).ok=((new com.ibm.icu.math.BigDecimal("-56267E-0")).subtract(zero).toString()).equals("-56267");
+
+        try {
+            ten.subtract((com.ibm.icu.math.BigDecimal) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $83) {
+            flag = true;
+        }/* checknull */
+        (new Test("sub200")).ok = flag;
+        try {
+            ten.subtract(ten, (com.ibm.icu.math.MathContext) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $84) {
+            flag = true;
+        }/* checknull2 */
+        (new Test("sub201")).ok = flag;
+
+        try {
+            com.ibm.icu.math.BigDecimal.ONE.subtract(tenlong, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $85) {
+            ae = $85;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("sub202")).ok = flag;
+        try {
+            tenlong.subtract(com.ibm.icu.math.BigDecimal.ONE, mcld);
+            flag = false;
+        } catch (java.lang.ArithmeticException $86) {
+            ae = $86;
+            flag = (ae.getMessage()).equals("Too many digits:" + " "
+                    + tenlong.toString());
+        }/* checkdigits */
+        (new Test("sub203")).ok = flag;
+        summary("subtract");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /* ----------------------------------------------------------------- */
+    /* Other methods */
+    /* ----------------------------------------------------------------- */
+
+    /** Test the <code>BigDecimal.byteValue()</code> method. */
+
+    public void diagbyteValue() {
+        boolean flag = false;
+        java.lang.String v = null;
+        java.lang.ArithmeticException ae = null;
+        java.lang.String badstrings[];
+        int i = 0;
+        java.lang.String norm = null;
+
+        (new Test("byv001")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValue());
+        (new Test("byv002")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValue());
+        (new Test("byv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValue());
+        (new Test("byv004")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValue());
+        (new Test("byv005")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValue());
+        (new Test("byv006")).ok=((-128))==((new com.ibm.icu.math.BigDecimal("128")).byteValue());
+        (new Test("byv007")).ok=((-127))==((new com.ibm.icu.math.BigDecimal("129")).byteValue());
+        (new Test("byv008")).ok=((127))==((new com.ibm.icu.math.BigDecimal("-129")).byteValue());
+        (new Test("byv009")).ok=((126))==((new com.ibm.icu.math.BigDecimal("-130")).byteValue());
+        (new Test("byv010")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValue());
+        (new Test("byv011")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValue());
+        (new Test("byv012")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValue());
+        (new Test("byv013")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValue());
+        (new Test("byv014")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValue());
+        (new Test("byv015")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmax+1)).byteValue());
+        (new Test("byv016")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmin-1)).byteValue());
+        
+        (new Test("byv021")).ok=((((byte)-128)))==((new com.ibm.icu.math.BigDecimal("-128")).byteValueExact());
+        (new Test("byv022")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).byteValueExact());
+        (new Test("byv023")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).byteValueExact());
+        (new Test("byv024")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).byteValueExact());
+        (new Test("byv025")).ok=((127))==((new com.ibm.icu.math.BigDecimal("127")).byteValueExact());
+        (new Test("byv026")).ok=((bmax))==((new com.ibm.icu.math.BigDecimal(bmax)).byteValueExact());
+        (new Test("byv027")).ok=((bmin))==((new com.ibm.icu.math.BigDecimal(bmin)).byteValueExact());
+        (new Test("byv028")).ok=((bneg))==((new com.ibm.icu.math.BigDecimal(bneg)).byteValueExact());
+        (new Test("byv029")).ok=((bzer))==((new com.ibm.icu.math.BigDecimal(bzer)).byteValueExact());
+        (new Test("byv030")).ok=((bpos))==((new com.ibm.icu.math.BigDecimal(bpos)).byteValueExact());
+        try {
+            v = "-129";
+            (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $87) {
+            ae = $87;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("byv100")).ok = flag;
+        try {
+            v = "128";
+            (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $88) {
+            ae = $88;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("byv101")).ok = flag;
+        try {
+            v = "1.5";
+            (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $89) {
+            ae = $89;
+            flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
+        }
+        (new Test("byv102")).ok = flag;
+
+        badstrings = new java.lang.String[] {
+                "1234",
+                (new com.ibm.icu.math.BigDecimal(bmax)).add(one).toString(),
+                (new com.ibm.icu.math.BigDecimal(bmin)).subtract(one)
+                        .toString(),
+                "170",
+                "270",
+                "370",
+                "470",
+                "570",
+                "670",
+                "770",
+                "870",
+                "970",
+                "-170",
+                "-270",
+                "-370",
+                "-470",
+                "-570",
+                "-670",
+                "-770",
+                "-870",
+                "-970",
+                (new com.ibm.icu.math.BigDecimal(bmin)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(bmax)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(bmin)).multiply(ten)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(bmax)).multiply(ten)
+                        .toString(), "-1234" }; // 220
+        // 221
+        // 222
+        // 223
+        // 224
+        // 225
+        // 226
+        // 227
+        // 228
+        // 229
+        // 230
+        // 231
+        // 232
+        // 233
+        // 234
+        // 235
+        // 236
+        // 237
+        // 238
+        // 239
+        // 240
+        // 241
+        // 242
+        // 243
+        // 244
+        // 245
+        {
+            int $90 = badstrings.length;
+            i = 0;
+            for (; $90 > 0; $90--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).byteValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $91) {
+                    ae = $91;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("byv" + (220 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("byteValue+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /**
+     * Test the {@link com.ibm.icu.math.BigDecimal#compareTo(java.lang.Object)}
+     * method.
+     */
+
+    public void diagcomparetoObj() {
+        boolean flag = false;
+        com.ibm.icu.math.BigDecimal d;
+        com.ibm.icu.math.BigDecimal long1;
+        com.ibm.icu.math.BigDecimal long2;
+
+        d = new com.ibm.icu.math.BigDecimal(17);
+        (new Test("cto001")).ok = (d
+                .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(
+                        66)))) == (-1);
+        (new Test("cto002")).ok = (d
+                .compareTo((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(
+                        10)).add(new com.ibm.icu.math.BigDecimal(7))))) == 0;
+        (new Test("cto003")).ok = (d
+                .compareTo((java.lang.Object) (new com.ibm.icu.math.BigDecimal(
+                        10)))) == 1;
+        long1 = new com.ibm.icu.math.BigDecimal("12345678903");
+        long2 = new com.ibm.icu.math.BigDecimal("12345678900");
+        (new Test("cto004")).ok = (long1.compareTo((java.lang.Object) long2)) == 1;
+        (new Test("cto005")).ok = (long2.compareTo((java.lang.Object) long1)) == (-1);
+        (new Test("cto006")).ok = (long2.compareTo((java.lang.Object) long2)) == 0;
+        try {
+            d.compareTo((java.lang.Object) null);
+            flag = false;
+        } catch (java.lang.NullPointerException $92) {
+            flag = true; // should get here
+        }
+        (new Test("cto101")).ok = flag;
+        try {
+            d.compareTo((java.lang.Object) "foo");
+            flag = false;
+        } catch (java.lang.ClassCastException $93) {
+            flag = true; // should get here
+        }
+        (new Test("cto102")).ok = flag;
+        summary("compareTo(Obj)");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#doubleValue} method. */
+
+    public void diagdoublevalue() {
+        java.lang.String val;
+        // 1999.03.07 Infinities no longer errors
+        val = "-1";
+        (new Test("dov001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "-0.1";
+        (new Test("dov002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "0";
+        (new Test("dov003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "0.1";
+        (new Test("dov004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "1";
+        (new Test("dov005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == ((new java.lang.Double(val)).doubleValue());
+        val = "1e1000";
+        (new Test("dov006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.POSITIVE_INFINITY;
+        val = "-1e1000";
+        (new Test("dov007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).doubleValue()) == java.lang.Double.NEGATIVE_INFINITY;
+        summary("doubleValue");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#equals} method. */
+
+    public void diagequals() {
+        com.ibm.icu.math.BigDecimal d;
+        d = new com.ibm.icu.math.BigDecimal(17);
+        (new Test("equ001")).ok = (!(d.equals((java.lang.Object) null)));
+        (new Test("equ002")).ok = (!(d.equals((java.lang.Object) "foo")));
+        (new Test("equ003")).ok = (!(d
+                .equals((java.lang.Object) (new com.ibm.icu.math.BigDecimal(66)))));
+        (new Test("equ004")).ok = d.equals((java.lang.Object) d);
+        (new Test("equ005")).ok = d
+                .equals((java.lang.Object) ((new com.ibm.icu.math.BigDecimal(10))
+                        .add(new com.ibm.icu.math.BigDecimal(7))));
+        summary("equals");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#floatValue} method. */
+
+    public void diagfloatvalue() {
+        java.lang.String val;
+        // 1999.03.07 Infinities no longer errors
+        val = "-1";
+        (new Test("flv001")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "-0.1";
+        (new Test("flv002")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "0";
+        (new Test("flv003")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "0.1";
+        (new Test("flv004")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "1";
+        (new Test("flv005")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == ((new java.lang.Float(val)).floatValue());
+        val = "1e200";
+        (new Test("flv006")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;
+        val = "-1e200";
+        (new Test("flv007")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;
+        val = "1e1000";
+        (new Test("flv008")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.POSITIVE_INFINITY;
+        val = "-1e1000";
+        (new Test("flv009")).ok = ((new com.ibm.icu.math.BigDecimal(val)).floatValue()) == java.lang.Float.NEGATIVE_INFINITY;
+        summary("floatValue");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#format} method. */
+
+    public void diagformat() {
+        boolean flag = false;
+        int eng;
+        int sci;
+        com.ibm.icu.math.BigDecimal d04;
+        com.ibm.icu.math.BigDecimal d05;
+        com.ibm.icu.math.BigDecimal d06;
+        com.ibm.icu.math.BigDecimal d15;
+        java.lang.IllegalArgumentException iae = null;
+        com.ibm.icu.math.BigDecimal d050;
+        com.ibm.icu.math.BigDecimal d150;
+        com.ibm.icu.math.BigDecimal m050;
+        com.ibm.icu.math.BigDecimal m150;
+        com.ibm.icu.math.BigDecimal d051;
+        com.ibm.icu.math.BigDecimal d151;
+        com.ibm.icu.math.BigDecimal d000;
+        com.ibm.icu.math.BigDecimal d500;
+        java.lang.ArithmeticException ae = null;
+        // 1999.02.09 now only two signatures for format(), so some tests below
+        // may now be redundant
+
+        (new Test("for001")).ok=((new com.ibm.icu.math.BigDecimal("12.3")).format(-1,-1)).equals("12.3");
+        (new Test("for002")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,-1)).equals("-12.73");
+        (new Test("for003")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).format(-1,-1)).equals("0.000");
+        (new Test("for004")).ok=((new com.ibm.icu.math.BigDecimal("3E+3")).format(-1,-1)).equals("3000");
+        (new Test("for005")).ok=((new com.ibm.icu.math.BigDecimal("3")).format(4,-1)).equals("   3");
+        (new Test("for006")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,0)).equals("   2");
+        (new Test("for007")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,1)).equals("   1.7");
+        (new Test("for008")).ok=((new com.ibm.icu.math.BigDecimal("1.75")).format(4,1)).equals("   1.8");
+        (new Test("for009")).ok=((new com.ibm.icu.math.BigDecimal("0.5")).format(4,1)).equals("   0.5");
+        (new Test("for010")).ok=((new com.ibm.icu.math.BigDecimal("0.05")).format(4,1)).equals("   0.1");
+        (new Test("for011")).ok=((new com.ibm.icu.math.BigDecimal("0.04")).format(4,1)).equals("   0.0");
+        (new Test("for012")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,0)).equals("   0");
+        (new Test("for013")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,1)).equals("   0.0");
+        (new Test("for014")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,2)).equals("   0.00");
+        (new Test("for015")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,3)).equals("   0.000");
+        (new Test("for016")).ok=((new com.ibm.icu.math.BigDecimal("0")).format(4,4)).equals("   0.0000");
+        (new Test("for017")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,0)).equals("   0");
+        (new Test("for018")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,1)).equals("   0.0");
+        (new Test("for019")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,2)).equals("   0.01");
+        (new Test("for020")).ok=((new com.ibm.icu.math.BigDecimal("0.004")).format(4,2)).equals("   0.00");
+        (new Test("for021")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,3)).equals("   0.005");
+        (new Test("for022")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).format(4,4)).equals("   0.0050");
+        
+        (new Test("for023")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,2)).equals("   1.73");
+        (new Test("for024")).ok=((new com.ibm.icu.math.BigDecimal("1.73")).format(4,3)).equals("   1.730");
+        (new Test("for025")).ok=((new com.ibm.icu.math.BigDecimal("-.76")).format(4,1)).equals("  -0.8");
+        (new Test("for026")).ok=((new com.ibm.icu.math.BigDecimal("-12.73")).format(-1,4)).equals("-12.7300");
+        
+        (new Test("for027")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1)).equals("   3.03");
+        (new Test("for028")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,1)).equals("   3.0");
+        (new Test("for029")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(4,-1,3,-1,-1,-1)).equals("   3.03     ");
+        (new Test("for030")).ok=((new com.ibm.icu.math.BigDecimal("3.03")).format(-1,-1,3,-1,-1,-1)).equals("3.03     ");
+        (new Test("for031")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,4,-1,-1)).equals("1.234573E+4");
+        (new Test("for032")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,5,-1,-1)).equals("12345.73");
+        (new Test("for033")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,-1,6,-1,-1)).equals("12345.73");
+        
+        (new Test("for034")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,8,-1,3,-1,-1)).equals("1.23457300E+4");
+        (new Test("for035")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,7,-1,3,-1,-1)).equals("1.2345730E+4");
+        (new Test("for036")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,6,-1,3,-1,-1)).equals("1.234573E+4");
+        (new Test("for037")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,5,-1,3,-1,-1)).equals("1.23457E+4");
+        (new Test("for038")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,4,-1,3,-1,-1)).equals("1.2346E+4");
+        (new Test("for039")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,3,-1,-1)).equals("1.235E+4");
+        (new Test("for040")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,2,-1,3,-1,-1)).equals("1.23E+4");
+        (new Test("for041")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,1,-1,3,-1,-1)).equals("1.2E+4");
+        (new Test("for042")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,0,-1,3,-1,-1)).equals("1E+4");
+        
+        (new Test("for043")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,6,-1,3,-1,-1)).equals("9.999999E+4");
+        (new Test("for044")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,5,-1,3,-1,-1)).equals("1.00000E+5");
+        (new Test("for045")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,2,-1,3,-1,-1)).equals("1.00E+5");
+        (new Test("for046")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(-1,0,-1,3,-1,-1)).equals("1E+5");
+        (new Test("for047")).ok=((new com.ibm.icu.math.BigDecimal("99999.99")).format(3,0,-1,3,-1,-1)).equals("  1E+5");
+        
+        (new Test("for048")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,2,2,-1,-1)).equals("1.234573E+04");
+        (new Test("for049")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,3,-1,0,-1,-1)).equals("1.235E+4");
+        (new Test("for050")).ok=((new com.ibm.icu.math.BigDecimal("1.234573")).format(-1,3,-1,0,-1,-1)).equals("1.235");
+        (new Test("for051")).ok=((new com.ibm.icu.math.BigDecimal("123.45")).format(-1,3,2,0,-1,-1)).equals("1.235E+02");
+        
+        (new Test("for052")).ok=((new com.ibm.icu.math.BigDecimal("0.444")).format(-1,0)).equals("0");
+        (new Test("for053")).ok=((new com.ibm.icu.math.BigDecimal("-0.444")).format(-1,0)).equals("0");
+        (new Test("for054")).ok=((new com.ibm.icu.math.BigDecimal("0.4")).format(-1,0)).equals("0");
+        (new Test("for055")).ok=((new com.ibm.icu.math.BigDecimal("-0.4")).format(-1,0)).equals("0");
+
+        eng = com.ibm.icu.math.MathContext.ENGINEERING;
+        sci = com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("for060")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(-1,3,2,0,eng,-1)).equals("1.235E+03");
+        (new Test("for061")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,eng,-1)).equals("12.345E+003");
+        (new Test("for062")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(-1,3,3,0,sci,-1)).equals("1.235E+004");
+        (new Test("for063")).ok=((new com.ibm.icu.math.BigDecimal("1234.5")).format(4,3,2,0,eng,-1)).equals("   1.235E+03");
+        (new Test("for064")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(5,3,3,0,eng,-1)).equals("   12.345E+003");
+        (new Test("for065")).ok=((new com.ibm.icu.math.BigDecimal("12345")).format(6,3,3,0,sci,-1)).equals("     1.235E+004");
+
+        (new Test("for066")).ok=((new com.ibm.icu.math.BigDecimal("1.2345")).format(-1,3,2,0,-1,-1)).equals("1.235    ");
+        (new Test("for067")).ok=((new com.ibm.icu.math.BigDecimal("12345.73")).format(-1,-1,3,6,-1,-1)).equals("12345.73     ");
+        (new Test("for068")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,0)).equals("1234500000");
+        (new Test("for069")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,1)).equals("1234500000.0");
+        (new Test("for070")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,2)).equals("1234500000.00");
+        (new Test("for071")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,3)).equals("1234500000.000");
+        (new Test("for072")).ok=((new com.ibm.icu.math.BigDecimal("12345e+5")).format(-1,4)).equals("1234500000.0000");
+
+        // some from ANSI Dallas [Nov 1998]
+        (new Test("for073")).ok=((new com.ibm.icu.math.BigDecimal("99.999")).format(-1,2,-1,2,-1,-1)).equals("100.00");
+        (new Test("for074")).ok=((new com.ibm.icu.math.BigDecimal("0.99999")).format(-1,4,2,2,-1,-1)).equals("1.0000    ");
+
+        // try some rounding modes [default ROUND_HALF_UP widely tested above]
+        // the first few also tests that defaults are accepted for the others
+        d04 = new com.ibm.icu.math.BigDecimal("0.04");
+        d05 = new com.ibm.icu.math.BigDecimal("0.05");
+        d06 = new com.ibm.icu.math.BigDecimal("0.06");
+        d15 = new com.ibm.icu.math.BigDecimal("0.15");
+        (new Test("for080")).ok = (d05.format(-1, 1)).equals("0.1");
+        (new Test("for081")).ok = (d05.format(-1, 1, -1, -1, -1,
+                com.ibm.icu.math.MathContext.ROUND_HALF_UP)).equals("0.1");
+        (new Test("for082")).ok = (d05.format(-1, 1, -1, -1, -1, -1))
+                .equals("0.1");
+        (new Test("for083")).ok = (d05.format(-1, -1, -1, -1, -1, -1))
+                .equals("0.05");
+        (new Test("for084")).ok = (d05.format(-1, -1)).equals("0.05");
+        try {
+            d05.format(-1, -1, -1, -1, -1, 30); // bad mode
+            flag = false; // shouldn't get here
+        } catch (java.lang.IllegalArgumentException $94) {
+            iae = $94;
+            flag = (iae.getMessage()).equals("Bad argument 6 to format: 30");
+        }
+        (new Test("for085")).ok = flag;
+
+        (new Test("for090")).ok=(d04.format(-1,1)).equals("0.0");
+        (new Test("for091")).ok=(d06.format(-1,1)).equals("0.1");
+        (new Test("for092")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");
+        (new Test("for093")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.0");
+        (new Test("for094")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN)).equals("0.1");
+
+        (new Test("for095")).ok=(d04.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+        (new Test("for096")).ok=(d05.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+        (new Test("for097")).ok=(d06.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");
+        (new Test("for098")).ok=(d15.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+        d050 = new com.ibm.icu.math.BigDecimal("0.050");
+        d150 = new com.ibm.icu.math.BigDecimal("0.150");
+        (new Test("for099")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+        (new Test("for100")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+        m050 = new com.ibm.icu.math.BigDecimal("-0.050");
+        m150 = new com.ibm.icu.math.BigDecimal("-0.150");
+        (new Test("for101")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.0");
+        (new Test("for102")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("-0.2");
+        d051 = new com.ibm.icu.math.BigDecimal("0.051");
+        d151 = new com.ibm.icu.math.BigDecimal("0.151");
+        (new Test("for103")).ok=(d051.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.1");
+        (new Test("for104")).ok=(d151.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN)).equals("0.2");
+        
+        (new Test("for105")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.0");
+        (new Test("for106")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("-0.1");
+        (new Test("for107")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.1");
+        (new Test("for108")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_CEILING)).equals("0.2");
+        
+        (new Test("for109")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.1");
+        (new Test("for110")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("-0.2");
+        (new Test("for111")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.0");
+        (new Test("for112")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_FLOOR)).equals("0.1");
+        
+        (new Test("for113")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.1");
+        (new Test("for114")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("-0.2");
+        (new Test("for115")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.1");
+        (new Test("for116")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UP)).equals("0.2");
+        
+        (new Test("for117")).ok=(m050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");
+        (new Test("for118")).ok=(m150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("-0.1");
+        (new Test("for119")).ok=(d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.0");
+        (new Test("for120")).ok=(d150.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_DOWN)).equals("0.1");
+
+        d000 = new com.ibm.icu.math.BigDecimal("0.000");
+        d500 = new com.ibm.icu.math.BigDecimal("0.500");
+        (new Test("for121")).ok=(d000.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.0");
+        (new Test("for122")).ok=(d000.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.00");
+        (new Test("for123")).ok=(d000.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.000");
+        try { // this should trap..
+            d050.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+            flag = false;
+        } catch (java.lang.ArithmeticException $95) {
+            ae = $95;
+            flag = (ae.getMessage()).equals("Rounding necessary");
+        }
+        (new Test("for124")).ok=flag;
+        (new Test("for125")).ok=(d050.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.05");
+        (new Test("for126")).ok=(d050.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.050");
+        (new Test("for127")).ok=(d500.format(-1,1,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.5");
+        (new Test("for128")).ok=(d500.format(-1,2,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.50");
+        (new Test("for129")).ok=(d500.format(-1,3,-1,-1,-1,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY)).equals("0.500");
+
+        // bad negs --
+        try {
+            d050.format(-2, -1, -1, -1, -1, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $96) {
+            flag = true;
+        }
+        (new Test("for131")).ok = flag;
+        try {
+            d050.format(-1, -2, -1, -1, -1, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $97) {
+            flag = true;
+        }
+        (new Test("for132")).ok = flag;
+        try {
+            d050.format(-1, -1, -2, -1, -1, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $98) {
+            flag = true;
+        }
+        (new Test("for133")).ok = flag;
+        try {
+            d050.format(-1, -1, -1, -2, -1, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $99) {
+            flag = true;
+        }
+        (new Test("for134")).ok = flag;
+        try {
+            d050.format(-1, -1, -1, -1, -2, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $100) {
+            flag = true;
+        }
+        (new Test("for135")).ok = flag;
+        try {
+            d050.format(-1, -1, -1, -1, -1, -2);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $101) {
+            flag = true;
+        }
+        (new Test("for136")).ok = flag;
+
+        summary("format");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#hashCode} method. */
+
+    public void diaghashcode() {
+        java.lang.String hs;
+        com.ibm.icu.math.BigDecimal d;
+        hs = "27827817";
+        d = new com.ibm.icu.math.BigDecimal(hs);
+        (new Test("has001")).ok = (d.hashCode()) == (hs.hashCode());
+        hs = "1.265E+200";
+        d = new com.ibm.icu.math.BigDecimal(hs);
+        (new Test("has002")).ok = (d.hashCode()) == (hs.hashCode());
+        hs = "126.5E+200";
+        d = new com.ibm.icu.math.BigDecimal(hs);
+        (new Test("has003")).ok = (d.hashCode()) != (hs.hashCode());
+        summary("hashCode");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#intValue} method. */
+
+    public void diagintvalue() {
+        boolean flag = false;
+        java.lang.String v = null;
+        java.lang.ArithmeticException ae = null;
+        java.lang.String badstrings[];
+        int i = 0;
+        java.lang.String norm = null;
+        com.ibm.icu.math.BigDecimal dimax;
+        com.ibm.icu.math.BigDecimal num = null;
+        com.ibm.icu.math.BigDecimal dv = null;
+        com.ibm.icu.math.BigDecimal dimin;
+
+        // intValue --
+
+        (new Test("inv001")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValue());
+        (new Test("inv002")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());
+        (new Test("inv003")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());
+        (new Test("inv004")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());
+        (new Test("inv005")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());
+        (new Test("inv006")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());
+        (new Test("inv007")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());
+        (new Test("inv008")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());
+        (new Test("inv009")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.3")).intValue());
+        (new Test("inv010")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.5")).intValue());
+        (new Test("inv011")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.7")).intValue());
+        (new Test("inv012")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.9")).intValue());
+        (new Test("inv013")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());
+        (new Test("inv014")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).intValue());
+        (new Test("inv015")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).intValue());
+        (new Test("inv016")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).intValue());
+        (new Test("inv017")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).intValue());
+        (new Test("inv018")).ok=((new com.ibm.icu.math.BigDecimal("88888888888")).intValue())==(-1305424328); // ugh
+        (new Test("inv019")).ok=((new com.ibm.icu.math.BigDecimal("-88888888888")).intValue())==1305424328; // ugh
+        (new Test("inv020")).ok=((imin))==((new com.ibm.icu.math.BigDecimal((((long)imax))+1)).intValue());
+        (new Test("inv021")).ok=((imax))==((new com.ibm.icu.math.BigDecimal((((long)imin))-1)).intValue());
+
+        // intValueExact --
+
+        (new Test("inv101")).ok=imin==((new com.ibm.icu.math.BigDecimal(imin)).intValueExact());
+        (new Test("inv102")).ok=((99))==((new com.ibm.icu.math.BigDecimal("99")).intValue());
+        (new Test("inv103")).ok=((1))==((new com.ibm.icu.math.BigDecimal("1")).intValue());
+        (new Test("inv104")).ok=((0))==((new com.ibm.icu.math.BigDecimal("0")).intValue());
+        (new Test("inv105")).ok=((-1))==((new com.ibm.icu.math.BigDecimal("-1")).intValue());
+        (new Test("inv106")).ok=((-99))==((new com.ibm.icu.math.BigDecimal("-99")).intValue());
+        (new Test("inv107")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValue());
+        (new Test("inv108")).ok=((5))==((new com.ibm.icu.math.BigDecimal("5.0")).intValue());
+        (new Test("inv109")).ok=((-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).intValue());
+        (new Test("inv110")).ok=imax==((new com.ibm.icu.math.BigDecimal(imax)).intValueExact());
+
+        try {
+            v = "-88588688888";
+            (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $102) {
+            ae = $102;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("inv200")).ok = flag;
+
+        // this one could raise either overflow or bad decimal part
+        try {
+            v = "88088818888.00001";
+            (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $103) {
+            flag = true;
+        }
+        (new Test("inv201")).ok = flag;
+
+        // 1999.10.28: the testcases marked '*' failed
+        badstrings = new java.lang.String[] {
+                "12345678901",
+                (new com.ibm.icu.math.BigDecimal(imax)).add(one).toString(),
+                (new com.ibm.icu.math.BigDecimal(imin)).subtract(one)
+                        .toString(),
+                "3731367293",
+                "4731367293",
+                "5731367293",
+                "6731367293",
+                "7731367293",
+                "8731367293",
+                "9731367293",
+                "-3731367293",
+                "-4731367293",
+                "-5731367293",
+                "-6731367293",
+                "-7731367293",
+                "-8731367293",
+                "-9731367293",
+                (new com.ibm.icu.math.BigDecimal(imin)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(imax)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(imin)).multiply(ten)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(imax)).multiply(ten)
+                        .toString(), "4731367293", "4831367293", "4931367293",
+                "5031367293", "5131367293", "5231367293", "5331367293",
+                "5431367293", "5531367293", "5631367293", "5731367293",
+                "5831367293", "5931367293", "6031367293", "6131367293",
+                "6231367293", "6331367293", "6431367293", "6531367293",
+                "6631367293", "6731367293", "2200000000", "2300000000",
+                "2400000000", "2500000000", "2600000000", "2700000000",
+                "2800000000", "2900000000", "-2200000000", "-2300000000",
+                "-2400000000", "-2500000000", "-2600000000", "-2700000000",
+                "-2800000000", "-2900000000", "25E+8", "-25E+8", "-12345678901" }; // 220
+        // 221
+        // 222
+        // 223
+        // 224
+        // 225 *
+        // 226
+        // 227
+        // 228
+        // 229 *
+        // 230
+        // 231
+        // 232 *
+        // 233
+        // 234
+        // 235
+        // 236 *
+        // 237
+        // 238
+        // 239
+        // 240
+        // 241
+        // 242 *
+        // 243 *
+        // 244 *
+        // 245 *
+        // 246 *
+        // 247 *
+        // 248 *
+        // 249 *
+        // 250 *
+        // 251 *
+        // 252 *
+        // 253 *
+        // 254 *
+        // 255 *
+        // 256 *
+        // 257 *
+        // 258 *
+        // 259
+        // 260
+        // 261
+        // 262
+        // 263
+        // 264
+        // 265
+        // 266
+        // 267
+        // 268
+        // 269
+        // 270
+        // 271
+        // 272
+        // 273
+        // 274
+        // 275
+        // 276
+        // 277
+        // 278
+        // 279
+        // 280
+        {
+            int $104 = badstrings.length;
+            i = 0;
+            for (; $104 > 0; $104--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $105) {
+                    ae = $105;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("inv" + (220 + i))).ok = flag;
+            }
+        }/* i */
+
+        // now slip in some single bits...
+        dimax = new com.ibm.icu.math.BigDecimal(imax);
+        {
+            i = 0;
+            for (; i <= 49; i++) {
+                try {
+                    num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
+                    dv = dimax.add(num, mc50);
+                    dv.intValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $106) {
+                    ae = $106;
+                    norm = dv.toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("inv" + (300 + i))).ok = flag;
+            }
+        }/* i */
+        dimin = new com.ibm.icu.math.BigDecimal(imin);
+        {
+            i = 50;
+            for (; i <= 99; i++) {
+                try {
+                    num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
+                    dv = dimin.subtract(num, mc50);
+                    dv.intValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $107) {
+                    ae = $107;
+                    norm = dv.toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("inv" + (300 + i))).ok = flag;
+            }
+        }/* i */
+
+        // the following should all raise bad-decimal-part exceptions
+        badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",
+                "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",
+                "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",
+                "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",
+                "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.5" }; // 400-403
+        // 404-407
+        // 408-411
+        // 412-416
+        // 417-420
+        // 421-424
+        // 425-428
+
+        {
+            int $108 = badstrings.length;
+            i = 0;
+            for (; $108 > 0; $108--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).intValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $109) {
+                    ae = $109;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Decimal part non-zero:"
+                            + " " + norm);
+                }
+                (new Test("inv" + (400 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("intValue+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#longValue} method. */
+
+    public void diaglongvalue() {
+        boolean flag = false;
+        java.lang.String v = null;
+        java.lang.ArithmeticException ae = null;
+        java.lang.String badstrings[];
+        int i = 0;
+        java.lang.String norm = null;
+        com.ibm.icu.math.BigDecimal dlmax;
+        com.ibm.icu.math.BigDecimal num = null;
+        com.ibm.icu.math.BigDecimal dv = null;
+        com.ibm.icu.math.BigDecimal dlmin;
+
+        // longValue --
+
+        (new Test("lov001")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());
+        (new Test("lov002")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());
+        (new Test("lov003")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());
+        (new Test("lov004")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());
+        (new Test("lov005")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());
+        (new Test("lov006")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());
+        (new Test("lov007")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());
+        (new Test("lov008")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());
+        (new Test("lov009")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.3")).longValue());
+        (new Test("lov010")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.5")).longValue());
+        (new Test("lov011")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.7")).longValue());
+        (new Test("lov012")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.9")).longValue());
+        (new Test("lov013")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());
+        (new Test("lov014")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.3")).longValue());
+        (new Test("lov015")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.5")).longValue());
+        (new Test("lov016")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.7")).longValue());
+        (new Test("lov017")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.9")).longValue());
+        (new Test("lov018")).ok=((new com.ibm.icu.math.BigDecimal("888888888899999999998")).longValue())==3445173361941522430L; // ugh
+        (new Test("lov019")).ok=((new com.ibm.icu.math.BigDecimal("-888888888899999999998")).longValue())==(-3445173361941522430L); // ugh
+
+        // longValueExact --
+
+        (new Test("lov101")).ok=lmin==((new com.ibm.icu.math.BigDecimal(lmin)).longValue());
+        (new Test("lov102")).ok=(((long)99))==((new com.ibm.icu.math.BigDecimal("99")).longValue());
+        (new Test("lov103")).ok=(((long)1))==((new com.ibm.icu.math.BigDecimal("1")).longValue());
+        (new Test("lov104")).ok=(((long)0))==((new com.ibm.icu.math.BigDecimal("0")).longValue());
+        (new Test("lov105")).ok=(((long)-1))==((new com.ibm.icu.math.BigDecimal("-1")).longValue());
+        (new Test("lov106")).ok=(((long)-99))==((new com.ibm.icu.math.BigDecimal("-99")).longValue());
+        (new Test("lov107")).ok=lmax==((new com.ibm.icu.math.BigDecimal(lmax)).longValue());
+        (new Test("lov108")).ok=(((long)5))==((new com.ibm.icu.math.BigDecimal("5.0")).longValue());
+        (new Test("lov109")).ok=(((long)-5))==((new com.ibm.icu.math.BigDecimal("-5.0")).longValue());
+
+        try {
+            v = "-888888888899999999998";
+            (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $110) {
+            ae = $110;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("lov200")).ok = flag;
+        try {
+            v = "88888887487487479488888";
+            (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $111) {
+            ae = $111;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("lov201")).ok = flag;
+        try {
+            v = "1.5";
+            (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $112) {
+            ae = $112;
+            flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
+        }
+        (new Test("lov202")).ok = flag;
+
+        badstrings = new java.lang.String[] {
+                "1234567890110987654321",
+                "-1234567890110987654321",
+                (new com.ibm.icu.math.BigDecimal(lmax)).add(one).toString(),
+                (new com.ibm.icu.math.BigDecimal(lmin)).subtract(one)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(lmin)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(lmax)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(lmin)).multiply(ten)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(lmax)).multiply(ten)
+                        .toString(), "9223372036854775818",
+                "9323372036854775818", "9423372036854775818",
+                "9523372036854775818", "9623372036854775818",
+                "9723372036854775818", "9823372036854775818",
+                "9923372036854775818", "-9223372036854775818",
+                "-9323372036854775818", "-9423372036854775818",
+                "-9523372036854775818", "-9623372036854775818",
+                "-9723372036854775818", "-9823372036854775818",
+                "-9923372036854775818", "12345678901234567890" }; // 220
+        // 221
+        // 222
+        // 223
+        // 224
+        // 225
+        // 226
+        // 227
+        // 228
+        // 229
+        // 230
+        // 231
+        // 232
+        // 233
+        // 234
+        // 235
+        // 236
+        // 237
+        // 238
+        // 239
+        // 240
+        // 241
+        // 242
+        // 243
+        // 244
+        {
+            int $113 = badstrings.length;
+            i = 0;
+            for (; $113 > 0; $113--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).longValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $114) {
+                    ae = $114;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("lov" + (220 + i))).ok = flag;
+            }
+        }/* i */
+
+        // now slip in some single bits...
+        dlmax = new com.ibm.icu.math.BigDecimal(lmax);
+        {
+            i = 0;
+            for (; i <= 99; i++) {
+                try {
+                    num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
+                    dv = dlmax.add(num, mc50);
+                    dv.longValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $115) {
+                    ae = $115;
+                    norm = dv.toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("lov" + (300 + i))).ok = flag;
+            }
+        }/* i */
+        dlmin = new com.ibm.icu.math.BigDecimal(lmin);
+        {
+            i = 0;
+            for (; i <= 99; i++) {
+                try {
+                    num = two.pow(new com.ibm.icu.math.BigDecimal(i), mc50);
+                    dv = dlmin.subtract(num, mc50);
+                    dv.longValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $116) {
+                    ae = $116;
+                    norm = dv.toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("lov" + (400 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("longValue+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#movePointLeft} method. */
+
+    public void diagmovepointleft() {
+        (new Test("mpl001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-10).toString()).equals("-10000000000");
+        (new Test("mpl002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-5).toString()).equals("-100000");
+        (new Test("mpl003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(-1).toString()).equals("-10");
+        (new Test("mpl004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(0).toString()).equals("-1");
+        (new Test("mpl005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+1).toString()).equals("-0.1");
+        (new Test("mpl006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+5).toString()).equals("-0.00001");
+        (new Test("mpl007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointLeft(+10).toString()).equals("-0.0000000001");
+        
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-10).toString()).equals("0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-5).toString()).equals("0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(-1).toString()).equals("0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(0).toString()).equals("0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+1).toString()).equals("0.0");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+5).toString()).equals("0.00000");
+        (new Test("mpl010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointLeft(+10).toString()).equals("0.0000000000");
+        
+        (new Test("mpl020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-10).toString()).equals("10000000000");
+        (new Test("mpl021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-5).toString()).equals("100000");
+        (new Test("mpl022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(-1).toString()).equals("10");
+        (new Test("mpl023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(0).toString()).equals("1");
+        (new Test("mpl024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+1).toString()).equals("0.1");
+        (new Test("mpl025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+5).toString()).equals("0.00001");
+        (new Test("mpl026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointLeft(+10).toString()).equals("0.0000000001");
+        
+        (new Test("mpl030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-10).toString()).equals("50000000000");
+        (new Test("mpl031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-5).toString()).equals("500000");
+        (new Test("mpl032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(-1).toString()).equals("50");
+        (new Test("mpl033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(0).toString()).equals("5");
+        (new Test("mpl034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+1).toString()).equals("0.5");
+        (new Test("mpl035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+5).toString()).equals("0.00005");
+        (new Test("mpl036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointLeft(+10).toString()).equals("0.0000000005");
+
+        summary("movePointLeft");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#movePointRight} method. */
+
+    public void diagmovepointright() {
+        (new Test("mpr001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+10).toString()).equals("-10000000000");
+        (new Test("mpr002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+5).toString()).equals("-100000");
+        (new Test("mpr003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(+1).toString()).equals("-10");
+        (new Test("mpr004")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(0).toString()).equals("-1");
+        (new Test("mpr005")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-1).toString()).equals("-0.1");
+        (new Test("mpr006")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-5).toString()).equals("-0.00001");
+        (new Test("mpr007")).ok=((new com.ibm.icu.math.BigDecimal("-1")).movePointRight(-10).toString()).equals("-0.0000000001");
+        
+        (new Test("mpr010")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+10).toString()).equals("0");
+        (new Test("mpr011")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+5).toString()).equals("0");
+        (new Test("mpr012")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(+1).toString()).equals("0");
+        (new Test("mpr013")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(0).toString()).equals("0");
+        (new Test("mpr014")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-1).toString()).equals("0.0");
+        (new Test("mpr015")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-5).toString()).equals("0.00000");
+        (new Test("mpr016")).ok=((new com.ibm.icu.math.BigDecimal("0")).movePointRight(-10).toString()).equals("0.0000000000");
+        
+        (new Test("mpr020")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+10).toString()).equals("10000000000");
+        (new Test("mpr021")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+5).toString()).equals("100000");
+        (new Test("mpr022")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(+1).toString()).equals("10");
+        (new Test("mpr023")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(0).toString()).equals("1");
+        (new Test("mpr024")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-1).toString()).equals("0.1");
+        (new Test("mpr025")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-5).toString()).equals("0.00001");
+        (new Test("mpr026")).ok=((new com.ibm.icu.math.BigDecimal("+1")).movePointRight(-10).toString()).equals("0.0000000001");
+        
+        (new Test("mpr030")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+10).toString()).equals("50000000000");
+        (new Test("mpr031")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+5).toString()).equals("500000");
+        (new Test("mpr032")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(+1).toString()).equals("50");
+        (new Test("mpr033")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(0).toString()).equals("5");
+        (new Test("mpr034")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-1).toString()).equals("0.5");
+        (new Test("mpr035")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-5).toString()).equals("0.00005");
+        (new Test("mpr036")).ok=((new com.ibm.icu.math.BigDecimal("0.5E+1")).movePointRight(-10).toString()).equals("0.0000000005");
+
+        summary("movePointRight");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#scale} method. */
+
+    public void diagscale() {
+        (new Test("sca001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).scale())==0;
+        (new Test("sca002")).ok=((new com.ibm.icu.math.BigDecimal("-10")).scale())==0;
+        (new Test("sca003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).scale())==0;
+        (new Test("sca004")).ok=((new com.ibm.icu.math.BigDecimal("+10")).scale())==0;
+        (new Test("sca005")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).scale())==0;
+        (new Test("sca006")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).scale())==10;
+        (new Test("sca007")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).scale())==0;
+        (new Test("sca008")).ok=((new com.ibm.icu.math.BigDecimal("0.000")).scale())==3;
+        (new Test("sca009")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).scale())==2;
+        (new Test("sca010")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).scale())==1;
+        (new Test("sca011")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).scale())==1;
+        (new Test("sca012")).ok=((new com.ibm.icu.math.BigDecimal("0.12")).scale())==2;
+        (new Test("sca013")).ok=((new com.ibm.icu.math.BigDecimal("0.123")).scale())==3;
+        (new Test("sca014")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).scale())==1;
+        (new Test("sca015")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).scale())==1;
+        (new Test("sca016")).ok=((new com.ibm.icu.math.BigDecimal("-0.12")).scale())==2;
+        (new Test("sca017")).ok=((new com.ibm.icu.math.BigDecimal("-0.123")).scale())==3;
+        summary("scale");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#setScale} method. */
+
+    public void diagsetscale() {
+        boolean flag = false;
+        java.lang.RuntimeException e = null;
+
+        (new Test("ssc001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0).toString()).equals("-1");
+        (new Test("ssc002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1).toString()).equals("-1.0");
+        (new Test("ssc003")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2).toString()).equals("-1.00");
+        (new Test("ssc004")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0).toString()).equals("0");
+        (new Test("ssc005")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1).toString()).equals("0.0");
+        (new Test("ssc006")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2).toString()).equals("0.00");
+        (new Test("ssc007")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0).toString()).equals("1");
+        (new Test("ssc008")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1).toString()).equals("1.0");
+        (new Test("ssc009")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2).toString()).equals("1.00");
+        (new Test("ssc010")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1");
+        (new Test("ssc011")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.0");
+        (new Test("ssc012")).ok=((new com.ibm.icu.math.BigDecimal("-1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-1.00");
+        (new Test("ssc013")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("ssc014")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+        (new Test("ssc015")).ok=((new com.ibm.icu.math.BigDecimal("0")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+        (new Test("ssc016")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+        (new Test("ssc017")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");
+        (new Test("ssc018")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");
+        
+        (new Test("ssc020")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.040");
+        (new Test("ssc021")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.04");
+        (new Test("ssc022")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.0");
+        (new Test("ssc023")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+        (new Test("ssc024")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.050");
+        (new Test("ssc025")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.05");
+        (new Test("ssc026")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");
+        (new Test("ssc027")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+        (new Test("ssc028")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.050");
+        (new Test("ssc029")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.05");
+        (new Test("ssc030")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1.0");
+        (new Test("ssc031")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("1");
+        (new Test("ssc032")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(3,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.060");
+        (new Test("ssc033")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.06");
+        (new Test("ssc034")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.1");
+        (new Test("ssc035")).ok=((new com.ibm.icu.math.BigDecimal("1.06")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1");
+        
+        (new Test("ssc040")).ok=((new com.ibm.icu.math.BigDecimal("-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("-10.00");
+        (new Test("ssc041")).ok=((new com.ibm.icu.math.BigDecimal("+1")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("1.00");
+        (new Test("ssc042")).ok=((new com.ibm.icu.math.BigDecimal("+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10.00");
+        (new Test("ssc043")).ok=((new com.ibm.icu.math.BigDecimal("1E+10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("10000000000.00");
+        (new Test("ssc044")).ok=((new com.ibm.icu.math.BigDecimal("1E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+        (new Test("ssc045")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");
+        (new Test("ssc046")).ok=((new com.ibm.icu.math.BigDecimal("0E-10")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.00");
+
+        // check rounding
+        (new Test("ssc050")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.01");
+        (new Test("ssc051")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("0.1");
+        (new Test("ssc052")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_CEILING).toString()).equals("1");
+        (new Test("ssc053")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.00");
+        (new Test("ssc054")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0.0");
+        (new Test("ssc055")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_DOWN).toString()).equals("0");
+        (new Test("ssc056")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.00");
+        (new Test("ssc057")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0.0");
+        (new Test("ssc058")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_FLOOR).toString()).equals("0");
+        (new Test("ssc059")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.00");
+        (new Test("ssc060")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0.0");
+        (new Test("ssc061")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN).toString()).equals("0");
+        (new Test("ssc062")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.00");
+        (new Test("ssc063")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+        (new Test("ssc064")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("ssc065")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.02");
+        (new Test("ssc066")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0.0");
+        (new Test("ssc067")).ok=((new com.ibm.icu.math.BigDecimal("0.015")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN).toString()).equals("0");
+        (new Test("ssc068")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.01");
+        (new Test("ssc069")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.0");
+        (new Test("ssc070")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("ssc071")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(2,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.10");
+        (new Test("ssc072")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(1,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0.1");
+        (new Test("ssc073")).ok=((new com.ibm.icu.math.BigDecimal("0.095")).setScale(0,com.ibm.icu.math.MathContext.ROUND_HALF_UP).toString()).equals("0");
+        (new Test("ssc074")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(2,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.01");
+        (new Test("ssc075")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(1,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("0.1");
+        (new Test("ssc076")).ok=((new com.ibm.icu.math.BigDecimal("0.005")).setScale(0,com.ibm.icu.math.MathContext.ROUND_UP).toString()).equals("1");
+
+        try {
+            (new com.ibm.icu.math.BigDecimal(1)).setScale(-8);
+            flag = false;
+        } catch (java.lang.RuntimeException $117) {
+            e = $117;
+            flag = (e.getMessage()).equals("Negative scale: -8");
+        }/* checkscale */
+        (new Test("ssc100")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal(1.0001D)).setScale(3);
+            flag = false;
+        } catch (java.lang.RuntimeException $118) {
+            e = $118;
+            flag = (e.getMessage()).equals("Rounding necessary");
+        }/* checkrunn */
+        (new Test("ssc101")).ok = flag;
+        try {
+            (new com.ibm.icu.math.BigDecimal(1E-8D)).setScale(3);
+            flag = false;
+        } catch (java.lang.RuntimeException $119) {
+            e = $119;
+            flag = (e.getMessage()).equals("Rounding necessary");
+        }/* checkrunn */
+        (new Test("ssc102")).ok = flag;
+        summary("setScale");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the <code>BigDecimal.shortValue()</code> method. */
+
+    public void diagshortvalue() {
+        boolean flag = false;
+        java.lang.String v = null;
+        java.lang.ArithmeticException ae = null;
+        java.lang.String badstrings[];
+        int i = 0;
+        java.lang.String norm = null;
+
+        (new Test("shv002")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValue());
+        (new Test("shv003")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValue());
+        (new Test("shv004")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValue());
+        (new Test("shv006")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValue());
+        (new Test("shv007")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValue());
+        (new Test("shv008")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValue());
+        (new Test("shv009")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValue());
+        (new Test("shv010")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValue());
+        (new Test("shv011")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smax+1)).shortValue());
+        (new Test("shv012")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smin-1)).shortValue());
+
+        (new Test("shv022")).ok=(((short)0))==((new com.ibm.icu.math.BigDecimal("0")).shortValueExact());
+        (new Test("shv023")).ok=(((short)1))==((new com.ibm.icu.math.BigDecimal("1")).shortValueExact());
+        (new Test("shv024")).ok=(((short)99))==((new com.ibm.icu.math.BigDecimal("99")).shortValueExact());
+        (new Test("shv026")).ok=((smax))==((new com.ibm.icu.math.BigDecimal(smax)).shortValueExact());
+        (new Test("shv027")).ok=((smin))==((new com.ibm.icu.math.BigDecimal(smin)).shortValueExact());
+        (new Test("shv028")).ok=((sneg))==((new com.ibm.icu.math.BigDecimal(sneg)).shortValueExact());
+        (new Test("shv029")).ok=((szer))==((new com.ibm.icu.math.BigDecimal(szer)).shortValueExact());
+        (new Test("shv030")).ok=((spos))==((new com.ibm.icu.math.BigDecimal(spos)).shortValueExact());
+        try {
+            v = "-88888888888";
+            (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $120) {
+            ae = $120;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("shv100")).ok = flag;
+        try {
+            v = "88888888888";
+            (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $121) {
+            ae = $121;
+            flag = (ae.getMessage()).equals("Conversion overflow:" + " " + v);
+        }
+        (new Test("shv101")).ok = flag;
+        try {
+            v = "1.5";
+            (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+            flag = false;
+        } catch (java.lang.ArithmeticException $122) {
+            ae = $122;
+            flag = (ae.getMessage()).equals("Decimal part non-zero:" + " " + v);
+        }
+        (new Test("shv102")).ok = flag;
+
+        badstrings = new java.lang.String[] {
+                "123456",
+                (new com.ibm.icu.math.BigDecimal(smax)).add(one).toString(),
+                (new com.ibm.icu.math.BigDecimal(smin)).subtract(one)
+                        .toString(),
+                "71111",
+                "81111",
+                "91111",
+                "-71111",
+                "-81111",
+                "-91111",
+                (new com.ibm.icu.math.BigDecimal(smin)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(smax)).multiply(two)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(smin)).multiply(ten)
+                        .toString(),
+                (new com.ibm.icu.math.BigDecimal(smax)).multiply(ten)
+                        .toString(), "-123456" }; // 220
+        // 221
+        // 222
+        // 223
+        // 224
+        // 225
+        // 226
+        // 227
+        // 228
+        // 229
+        // 230
+        // 231
+        // 232
+        // 233
+        {
+            int $123 = badstrings.length;
+            i = 0;
+            for (; $123 > 0; $123--, i++) {
+                try {
+                    v = badstrings[i];
+                    (new com.ibm.icu.math.BigDecimal(v)).shortValueExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $124) {
+                    ae = $124;
+                    norm = (new com.ibm.icu.math.BigDecimal(v)).toString();
+                    flag = (ae.getMessage()).equals("Conversion overflow:"
+                            + " " + norm);
+                }
+                (new Test("shv" + (220 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("shortValue+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#signum} method. */
+
+    public void diagsignum() {
+        // necessarily checks some obscure constructions, too
+        (new Test("sig001")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-1")).signum());
+        (new Test("sig002")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.0010")).signum());
+        (new Test("sig003")).ok=(-1)==((new com.ibm.icu.math.BigDecimal("-0.001")).signum());
+        (new Test("sig004")).ok=0==((new com.ibm.icu.math.BigDecimal("-0.00")).signum());
+        (new Test("sig005")).ok=0==((new com.ibm.icu.math.BigDecimal("-0")).signum());
+        (new Test("sig006")).ok=0==((new com.ibm.icu.math.BigDecimal("0")).signum());
+        (new Test("sig007")).ok=0==((new com.ibm.icu.math.BigDecimal("00")).signum());
+        (new Test("sig008")).ok=0==((new com.ibm.icu.math.BigDecimal("00.0")).signum());
+        (new Test("sig009")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());
+        (new Test("sig010")).ok=1==((new com.ibm.icu.math.BigDecimal("00.01")).signum());
+        (new Test("sig011")).ok=1==((new com.ibm.icu.math.BigDecimal("00.010")).signum());
+        (new Test("sig012")).ok=1==((new com.ibm.icu.math.BigDecimal("01.01")).signum());
+        (new Test("sig013")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.01")).signum());
+        (new Test("sig014")).ok=1==((new com.ibm.icu.math.BigDecimal("+0.001")).signum());
+        (new Test("sig015")).ok=1==((new com.ibm.icu.math.BigDecimal("1")).signum());
+        (new Test("sig016")).ok=1==((new com.ibm.icu.math.BigDecimal("1e+12")).signum());
+        (new Test("sig017")).ok=0==((new com.ibm.icu.math.BigDecimal("00e+12")).signum());
+        summary("signum");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#toBigDecimal} method. */
+
+    public void diagtobigdecimal() {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        (new Test("tbd001")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigDecimal().toString()).equals("0");
+        (new Test("tbd002")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigDecimal().toString()).equals("-1");
+        (new Test("tbd003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigDecimal().toString()).equals("1");
+        (new Test("tbd004")).ok=((new com.ibm.icu.math.BigDecimal("1")).toBigDecimal().toString()).equals("1");
+        (new Test("tbd005")).ok=((new com.ibm.icu.math.BigDecimal("1E+2")).toBigDecimal().toString()).equals("100");
+        (new Test("tbd006")).ok=((new com.ibm.icu.math.BigDecimal("1E-2")).toBigDecimal().toString()).equals("0.01");
+        if (!isJDK15OrLater) {
+            (new Test("tbd007")).ok=((new com.ibm.icu.math.BigDecimal("1E-8")).toBigDecimal().toString()).equals("0.00000001");
+        }
+        if (!isJDK15OrLater) {
+            (new Test("tbd008")).ok=((new com.ibm.icu.math.BigDecimal("1E-9")).toBigDecimal().toString()).equals("0.000000001");
+        }
+        (new Test("tbd009")).ok=((new com.ibm.icu.math.BigDecimal("1E10")).toBigDecimal().toString()).equals("10000000000");
+        (new Test("tbd010")).ok=((new com.ibm.icu.math.BigDecimal("1E12")).toBigDecimal().toString()).equals("1000000000000");
+        summary("toBigDecimal");
+//#endif
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#toBigInteger} method. */
+
+    public void diagtobiginteger() {
+        boolean flag = false;
+        java.lang.String badstrings[];
+        int i = 0;
+        (new Test("tbi001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi002")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigInteger().toString()).equals("0");
+        (new Test("tbi003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigInteger().toString()).equals("1");
+        (new Test("tbi004")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigInteger().toString()).equals("10");
+        (new Test("tbi005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigInteger().toString()).equals("1000");
+        (new Test("tbi006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigInteger().toString()).equals("0");
+        (new Test("tbi008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigInteger().toString()).equals("1");
+        (new Test("tbi009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigInteger().toString()).equals("10");
+        (new Test("tbi010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigInteger().toString()).equals("1000");
+        (new Test("tbi011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigInteger().toString()).equals("0");
+        (new Test("tbi012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).toBigInteger().toString()).equals("0");
+        (new Test("tbi013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigInteger().toString()).equals("0");
+        (new Test("tbi014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).toBigInteger().toString()).equals("0");
+        (new Test("tbi015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigInteger().toString()).equals("0");
+        (new Test("tbi016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).toBigInteger().toString()).equals("0");
+        (new Test("tbi017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigInteger().toString()).equals("0");
+        (new Test("tbi018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).toBigInteger().toString()).equals("0");
+        (new Test("tbi019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigInteger().toString()).equals("1");
+        (new Test("tbi020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).toBigInteger().toString()).equals("1");
+        (new Test("tbi021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigInteger().toString()).equals("1");
+        (new Test("tbi022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).toBigInteger().toString()).equals("1");
+        (new Test("tbi023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).toBigInteger().toString()).equals("-111");
+        (new Test("tbi028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).toBigInteger().toString()).equals("111");
+        (new Test("tbi029")).ok=((new com.ibm.icu.math.BigDecimal("0.09")).toBigInteger().toString()).equals("0");
+        (new Test("tbi030")).ok=((new com.ibm.icu.math.BigDecimal("0.9")).toBigInteger().toString()).equals("0");
+        (new Test("tbi031")).ok=((new com.ibm.icu.math.BigDecimal("1.09")).toBigInteger().toString()).equals("1");
+        (new Test("tbi032")).ok=((new com.ibm.icu.math.BigDecimal("1.05")).toBigInteger().toString()).equals("1");
+        (new Test("tbi033")).ok=((new com.ibm.icu.math.BigDecimal("1.04")).toBigInteger().toString()).equals("1");
+        (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.99")).toBigInteger().toString()).equals("1");
+        (new Test("tbi034")).ok=((new com.ibm.icu.math.BigDecimal("1.9")).toBigInteger().toString()).equals("1");
+        (new Test("tbi035")).ok=((new com.ibm.icu.math.BigDecimal("1.5")).toBigInteger().toString()).equals("1");
+        (new Test("tbi036")).ok=((new com.ibm.icu.math.BigDecimal("1.4")).toBigInteger().toString()).equals("1");
+        (new Test("tbi037")).ok=((new com.ibm.icu.math.BigDecimal("-1.09")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi038")).ok=((new com.ibm.icu.math.BigDecimal("-1.05")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi039")).ok=((new com.ibm.icu.math.BigDecimal("-1.04")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi040")).ok=((new com.ibm.icu.math.BigDecimal("-1.99")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi041")).ok=((new com.ibm.icu.math.BigDecimal("-1.9")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi042")).ok=((new com.ibm.icu.math.BigDecimal("-1.5")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi043")).ok=((new com.ibm.icu.math.BigDecimal("-1.4")).toBigInteger().toString()).equals("-1");
+        (new Test("tbi044")).ok=((new com.ibm.icu.math.BigDecimal("1E-1000")).toBigInteger().toString()).equals("0");
+        (new Test("tbi045")).ok=((new com.ibm.icu.math.BigDecimal("-1E-1000")).toBigInteger().toString()).equals("0");
+
+        // Exact variety --
+        (new Test("tbi101")).ok=((new com.ibm.icu.math.BigDecimal("-1")).toBigIntegerExact().toString()).equals("-1");
+        (new Test("tbi102")).ok=((new com.ibm.icu.math.BigDecimal("0")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi103")).ok=((new com.ibm.icu.math.BigDecimal("+1")).toBigIntegerExact().toString()).equals("1");
+        (new Test("tbi104")).ok=((new com.ibm.icu.math.BigDecimal("10")).toBigIntegerExact().toString()).equals("10");
+        (new Test("tbi105")).ok=((new com.ibm.icu.math.BigDecimal("1000")).toBigIntegerExact().toString()).equals("1000");
+        (new Test("tbi106")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).toBigIntegerExact().toString()).equals("-1");
+        (new Test("tbi107")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi108")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).toBigIntegerExact().toString()).equals("1");
+        (new Test("tbi109")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).toBigIntegerExact().toString()).equals("10");
+        (new Test("tbi110")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).toBigIntegerExact().toString()).equals("1000");
+        (new Test("tbi111")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi112")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi113")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi114")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).toBigIntegerExact().toString()).equals("0");
+        (new Test("tbi115")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).toBigIntegerExact().toString()).equals("1");
+        (new Test("tbi116")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).toBigIntegerExact().toString()).equals("1");
+        (new Test("tbi117")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).toBigIntegerExact().toString()).equals("-1");
+        (new Test("tbi118")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).toBigIntegerExact().toString()).equals("-1");
+        (new Test("tbi119")).ok=((new com.ibm.icu.math.BigDecimal("1.00000000000000000000000000000")).toBigIntegerExact().toString()).equals("1");
+
+
+        // the following should all raise exceptions
+
+        badstrings = new java.lang.String[] { "0.09", "0.9", "0.01", "0.1",
+                "-0.01", "-0.1", "1.01", "-1.01", "-1.1", "-111.111",
+                "+111.111", "1.09", "1.05", "1.04", "1.99", "1.9", "1.5",
+                "1.4", "-1.09", "-1.05", "-1.04", "-1.99", "-1.9", "-1.5",
+                "-1.4", "1E-1000", "-1E-1000", "11E-1", "1.1",
+                "127623156123656561356123512315631231551312356.000001",
+                "0.000000000000000000000000000000000000000000000001" }; // 300-303
+        // 304-307
+        // 308-311
+        // 312-316
+        // 317-320
+        // 321-324
+        // 325-328
+        // 329
+        // 330
+
+        {
+            int $125 = badstrings.length;
+            i = 0;
+            for (; $125 > 0; $125--, i++) {
+                try {
+                    (new com.ibm.icu.math.BigDecimal(badstrings[i]))
+                            .toBigIntegerExact();
+                    flag = false;
+                } catch (java.lang.ArithmeticException $126) {
+                    flag = true;
+                }
+                (new Test("tbi" + (300 + i))).ok = flag;
+            }
+        }/* i */
+
+        summary("toBigInteger+");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#toCharArray} method. */
+
+    public void diagtochararray() {
+        java.lang.String str;
+        char car[];
+        com.ibm.icu.math.BigDecimal d;
+        char ca[];
+        // the function of this has been tested above, this is simply an
+        // existence proof and type-check
+        str = "-123.45";
+        car = (str).toCharArray();
+        d = new com.ibm.icu.math.BigDecimal(str);
+        ca = d.toCharArray();
+        (new Test("tca001")).ok = ca.length == car.length;
+        (new Test("tca002")).ok = (new java.lang.String(ca))
+                .equals((java.lang.Object) (new java.lang.String(car)));
+        (new Test("tca003")).ok = (d.toCharArray() instanceof char[]);
+        (new Test("tca004")).ok = (ca instanceof char[]);
+        summary("toCharArray");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#toString} method. */
+
+    public void diagtostring() {
+        java.lang.String str;
+        char car[];
+        com.ibm.icu.math.BigDecimal d;
+        char ca[];
+        java.lang.String cs;
+        // the function of this has been tested above, this is simply an
+        // existence proof and type-check
+        str = "123.45";
+        car = (str).toCharArray();
+        d = new com.ibm.icu.math.BigDecimal(car, 0, car.length);
+        ca = d.toCharArray();
+        cs = d.toString();
+        (new Test("tos001")).ok = (str.toCharArray().length) == ca.length;
+        (new Test("tos002")).ok = (str.length()) == (cs.length());
+        (new Test("tos003")).ok = str
+                .equals((java.lang.Object) (new java.lang.String(ca)));
+        (new Test("tos004")).ok = str.equals((java.lang.Object) cs);
+        (new Test("tos005")).ok = (cs instanceof java.lang.String);
+        (new Test("tos006")).ok = (d.toString() instanceof java.lang.String);
+        summary("toString");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.BigDecimal#unscaledValue} method. */
+
+    public void diagunscaledvalue() {
+        // just like toBigInteger, but scaly bits are preserved [without dots]
+        (new Test("uns001")).ok=((new com.ibm.icu.math.BigDecimal("-1")).unscaledValue().toString()).equals("-1");
+        (new Test("uns002")).ok=((new com.ibm.icu.math.BigDecimal("0")).unscaledValue().toString()).equals("0");
+        (new Test("uns003")).ok=((new com.ibm.icu.math.BigDecimal("+1")).unscaledValue().toString()).equals("1");
+        (new Test("uns004")).ok=((new com.ibm.icu.math.BigDecimal("10")).unscaledValue().toString()).equals("10");
+        (new Test("uns005")).ok=((new com.ibm.icu.math.BigDecimal("1000")).unscaledValue().toString()).equals("1000");
+        (new Test("uns006")).ok=((new com.ibm.icu.math.BigDecimal("-1E+0")).unscaledValue().toString()).equals("-1");
+        (new Test("uns007")).ok=((new com.ibm.icu.math.BigDecimal("0E+0")).unscaledValue().toString()).equals("0");
+        (new Test("uns008")).ok=((new com.ibm.icu.math.BigDecimal("+1E+0")).unscaledValue().toString()).equals("1");
+        (new Test("uns009")).ok=((new com.ibm.icu.math.BigDecimal("10E+0")).unscaledValue().toString()).equals("10");
+        (new Test("uns010")).ok=((new com.ibm.icu.math.BigDecimal("1E+3")).unscaledValue().toString()).equals("1000");
+        (new Test("uns011")).ok=((new com.ibm.icu.math.BigDecimal("0.00")).unscaledValue().toString()).equals("0");
+        (new Test("uns012")).ok=((new com.ibm.icu.math.BigDecimal("0.01")).unscaledValue().toString()).equals("1");
+        (new Test("uns013")).ok=((new com.ibm.icu.math.BigDecimal("0.0")).unscaledValue().toString()).equals("0");
+        (new Test("uns014")).ok=((new com.ibm.icu.math.BigDecimal("0.1")).unscaledValue().toString()).equals("1");
+        (new Test("uns015")).ok=((new com.ibm.icu.math.BigDecimal("-0.00")).unscaledValue().toString()).equals("0");
+        (new Test("uns016")).ok=((new com.ibm.icu.math.BigDecimal("-0.01")).unscaledValue().toString()).equals("-1");
+        (new Test("uns017")).ok=((new com.ibm.icu.math.BigDecimal("-0.0")).unscaledValue().toString()).equals("0");
+        (new Test("uns018")).ok=((new com.ibm.icu.math.BigDecimal("-0.1")).unscaledValue().toString()).equals("-1");
+        (new Test("uns019")).ok=((new com.ibm.icu.math.BigDecimal("1.00")).unscaledValue().toString()).equals("100");
+        (new Test("uns020")).ok=((new com.ibm.icu.math.BigDecimal("1.01")).unscaledValue().toString()).equals("101");
+        (new Test("uns021")).ok=((new com.ibm.icu.math.BigDecimal("1.0")).unscaledValue().toString()).equals("10");
+        (new Test("uns022")).ok=((new com.ibm.icu.math.BigDecimal("1.1")).unscaledValue().toString()).equals("11");
+        (new Test("uns023")).ok=((new com.ibm.icu.math.BigDecimal("-1.00")).unscaledValue().toString()).equals("-100");
+        (new Test("uns024")).ok=((new com.ibm.icu.math.BigDecimal("-1.01")).unscaledValue().toString()).equals("-101");
+        (new Test("uns025")).ok=((new com.ibm.icu.math.BigDecimal("-1.0")).unscaledValue().toString()).equals("-10");
+        (new Test("uns026")).ok=((new com.ibm.icu.math.BigDecimal("-1.1")).unscaledValue().toString()).equals("-11");
+        (new Test("uns027")).ok=((new com.ibm.icu.math.BigDecimal("-111.111")).unscaledValue().toString()).equals("-111111");
+        (new Test("uns028")).ok=((new com.ibm.icu.math.BigDecimal("+111.111")).unscaledValue().toString()).equals("111111");
+        summary("unscaledValue");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /**
+     * Test the {@link com.ibm.icu.math.BigDecimal#valueOf} method [long and
+     * double].
+     */
+
+    public void diagvalueof() {
+        boolean flag = false;
+        java.lang.NumberFormatException e = null;
+        double dzer;
+        double dpos;
+        double dneg;
+        double dpos5;
+        double dneg5;
+        double dmin;
+        double dmax;
+        double d;
+
+        // valueOf(long [,scale]) --
+
+        (new Test("val001")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-2)).toString()).equals("-2");
+        (new Test("val002")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-1)).toString()).equals("-1");
+        (new Test("val003")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)-0)).toString()).equals("0");
+        (new Test("val004")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+1)).toString()).equals("1");
+        (new Test("val005")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)+2)).toString()).equals("2");
+        (new Test("val006")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)10)).toString()).equals("10");
+        (new Test("val007")).ok=(com.ibm.icu.math.BigDecimal.valueOf((long)((byte)11)).toString()).equals("11");
+        (new Test("val008")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin).toString()).equals("-9223372036854775808");
+        (new Test("val009")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax).toString()).equals("9223372036854775807");
+        (new Test("val010")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg).toString()).equals("-1");
+        (new Test("val011")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer).toString()).equals("0");
+        (new Test("val012")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos).toString()).equals("1");
+        (new Test("val013")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,0).toString()).equals("-9223372036854775808");
+        (new Test("val014")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,0).toString()).equals("9223372036854775807");
+        (new Test("val015")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lneg,0).toString()).equals("-1");
+        (new Test("val016")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lpos,0).toString()).equals("1");
+        
+        (new Test("val017")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,0).toString()).equals("0");
+        (new Test("val018")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,1).toString()).equals("0.0");
+        (new Test("val019")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,2).toString()).equals("0.00");
+        (new Test("val020")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,3).toString()).equals("0.000");
+        (new Test("val021")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lzer,10).toString()).equals("0.0000000000");
+        
+        (new Test("val022")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmin,7).toString()).equals("-922337203685.4775808");
+        (new Test("val023")).ok=(com.ibm.icu.math.BigDecimal.valueOf(lmax,11).toString()).equals("92233720.36854775807");
+
+        try {
+            com.ibm.icu.math.BigDecimal.valueOf((long) 23, -8);
+            flag = false;
+        } catch (java.lang.NumberFormatException $127) {
+            e = $127;
+            flag = (e.getMessage()).equals("Negative scale: -8");
+        }/* checkscale */
+        (new Test("val100")).ok = flag;
+
+        // valueOf(double) --
+
+        dzer = (double) 0;
+        dpos = (double) 1;
+        dpos = dpos / ((double) 10);
+        dneg = (double) -dpos;
+        (new Test("val201")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg).toString()).equals("-0.1");
+        (new Test("val202")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dzer).toString()).equals("0.0"); // cf. constructor
+        (new Test("val203")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos).toString()).equals("0.1");
+        dpos5 = (double) 0.5D;
+        dneg5 = (double) -dpos5;
+        (new Test("val204")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dneg5).toString()).equals("-0.5");
+        (new Test("val205")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dpos5).toString()).equals("0.5");
+        dmin = java.lang.Double.MIN_VALUE;
+        dmax = java.lang.Double.MAX_VALUE;
+        (new Test("val206")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmin).toString()).equals("4.9E-324");
+        (new Test("val207")).ok=(com.ibm.icu.math.BigDecimal.valueOf(dmax).toString()).equals("1.7976931348623157E+308");
+
+        // nasties
+        d = (double) 9;
+        d = d / ((double) 10);
+        (new Test("val210")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.9");
+        d = d / ((double) 10);
+        (new Test("val211")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.09");
+        d = d / ((double) 10);
+        (new Test("val212")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("0.0090");
+        d = d / ((double) 10);
+        (new Test("val213")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("9.0E-4");
+        d = d / ((double) 10);
+        (new Test("val214")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-5");
+        d = d / ((double) 10);
+        (new Test("val215")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-6");
+        d = d / ((double) 10);
+        (new Test("val216")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-7");
+        d = d / ((double) 10);
+        (new Test("val217")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999999E-8");
+        d = d / ((double) 10);
+        (new Test("val218")).ok = (com.ibm.icu.math.BigDecimal.valueOf(d).toString()).equals("8.999999999999998E-9");
+
+        try {
+            com.ibm.icu.math.BigDecimal
+                    .valueOf(java.lang.Double.POSITIVE_INFINITY);
+            flag = false;
+        } catch (java.lang.NumberFormatException $128) {
+            flag = true;
+        }/* checkpin */
+        (new Test("val301")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal
+                    .valueOf(java.lang.Double.NEGATIVE_INFINITY);
+            flag = false;
+        } catch (java.lang.NumberFormatException $129) {
+            flag = true;
+        }/* checknin */
+        (new Test("val302")).ok = flag;
+        try {
+            com.ibm.icu.math.BigDecimal.valueOf(java.lang.Double.NaN);
+            flag = false;
+        } catch (java.lang.NumberFormatException $130) {
+            flag = true;
+        }/* checknan */
+        (new Test("val303")).ok = flag;
+
+        summary("valueOf");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** Test the {@link com.ibm.icu.math.MathContext} class. */
+
+    public void diagmathcontext() {
+        com.ibm.icu.math.MathContext mccon1;
+        com.ibm.icu.math.MathContext mccon2;
+        com.ibm.icu.math.MathContext mccon3;
+        com.ibm.icu.math.MathContext mccon4;
+        com.ibm.icu.math.MathContext mcrmc;
+        com.ibm.icu.math.MathContext mcrmd;
+        com.ibm.icu.math.MathContext mcrmf;
+        com.ibm.icu.math.MathContext mcrmhd;
+        com.ibm.icu.math.MathContext mcrmhe;
+        com.ibm.icu.math.MathContext mcrmhu;
+        com.ibm.icu.math.MathContext mcrmun;
+        com.ibm.icu.math.MathContext mcrmu;
+        boolean flag = false;
+        java.lang.IllegalArgumentException e = null;
+        // these tests are mostly existence checks
+        (new Test("mcn001")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getDigits())==9;
+        (new Test("mcn002")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("mcn003")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.ENGINEERING;
+        (new Test("mcn004")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getForm())!=com.ibm.icu.math.MathContext.PLAIN;
+        (new Test("mcn005")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getLostDigits()?1:0)==0;
+        (new Test("mcn006")).ok=(com.ibm.icu.math.MathContext.DEFAULT.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        
+        (new Test("mcn010")).ok=com.ibm.icu.math.MathContext.ROUND_CEILING>=0;
+        (new Test("mcn011")).ok=com.ibm.icu.math.MathContext.ROUND_DOWN>=0;
+        (new Test("mcn012")).ok=com.ibm.icu.math.MathContext.ROUND_FLOOR>=0;
+        (new Test("mcn013")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN>=0;
+        (new Test("mcn014")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN>=0;
+        (new Test("mcn015")).ok=com.ibm.icu.math.MathContext.ROUND_HALF_UP>=0;
+        (new Test("mcn016")).ok=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY>=0;
+        (new Test("mcn017")).ok=com.ibm.icu.math.MathContext.ROUND_UP>=0;
+        
+        mccon1=new com.ibm.icu.math.MathContext(111);
+        (new Test("mcn021")).ok=(mccon1.getDigits())==111;
+        (new Test("mcn022")).ok=(mccon1.getForm())==com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("mcn023")).ok=(mccon1.getLostDigits()?1:0)==0;
+        (new Test("mcn024")).ok=(mccon1.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        
+        mccon2=new com.ibm.icu.math.MathContext(78,com.ibm.icu.math.MathContext.ENGINEERING);
+        (new Test("mcn031")).ok=(mccon2.getDigits())==78;
+        (new Test("mcn032")).ok=(mccon2.getForm())==com.ibm.icu.math.MathContext.ENGINEERING;
+        (new Test("mcn033")).ok=(mccon2.getLostDigits()?1:0)==0;
+        (new Test("mcn034")).ok=(mccon2.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        
+        mccon3=new com.ibm.icu.math.MathContext(5,com.ibm.icu.math.MathContext.PLAIN,true);
+        (new Test("mcn041")).ok=(mccon3.getDigits())==5;
+        (new Test("mcn042")).ok=(mccon3.getForm())==com.ibm.icu.math.MathContext.PLAIN;
+        (new Test("mcn043")).ok=(mccon3.getLostDigits()?1:0)==1;
+        (new Test("mcn044")).ok=(mccon3.getRoundingMode())==com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+        
+        mccon4=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.SCIENTIFIC,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+        (new Test("mcn051")).ok = (mccon4.getDigits()) == 0;
+        (new Test("mcn052")).ok = (mccon4.getForm()) == com.ibm.icu.math.MathContext.SCIENTIFIC;
+        (new Test("mcn053")).ok = (mccon4.getLostDigits() ? 1 : 0) == 0;
+        (new Test("mcn054")).ok = (mccon4.getRoundingMode()) == com.ibm.icu.math.MathContext.ROUND_FLOOR;
+
+        (new Test("mcn061")).ok=(mccon1.toString()).equals("digits=111 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP");
+        
+        (new Test("mcn062")).ok=(mccon2.toString()).equals("digits=78 form=ENGINEERING lostDigits=0 roundingMode=ROUND_HALF_UP");
+        
+        (new Test("mcn063")).ok=(mccon3.toString()).equals("digits=5 form=PLAIN lostDigits=1 roundingMode=ROUND_HALF_UP");
+        
+        (new Test("mcn064")).ok=(mccon4.toString()).equals("digits=0 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_FLOOR");
+
+        // complete testing rounding modes round trips
+        mcrmc=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_CEILING);
+        mcrmd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_DOWN);
+        mcrmf=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_FLOOR);
+        mcrmhd=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_DOWN);
+        mcrmhe=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_EVEN);
+        mcrmhu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_HALF_UP);
+        mcrmun=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UNNECESSARY);
+        mcrmu=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,com.ibm.icu.math.MathContext.ROUND_UP);
+
+        (new Test("mcn071")).ok = (mcrmc.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_CEILING");
+
+        (new Test("mcn072")).ok = (mcrmd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_DOWN");
+
+        (new Test("mcn073")).ok = (mcrmf.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_FLOOR");
+
+        (new Test("mcn074")).ok = (mcrmhd.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_DOWN");
+
+        (new Test("mcn075")).ok = (mcrmhe.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_EVEN");
+
+        (new Test("mcn076")).ok = (mcrmhu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_HALF_UP");
+
+        (new Test("mcn077")).ok = (mcrmun.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UNNECESSARY");
+
+        (new Test("mcn078")).ok = (mcrmu.toString()).equals("digits=0 form=PLAIN lostDigits=0 roundingMode=ROUND_UP");
+
+        // [get methods tested already]
+
+        // errors...
+
+        try {
+            new com.ibm.icu.math.MathContext(-1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $131) {
+            e = $131;
+            flag = (e.getMessage()).equals("Digits too small: -1");
+        }/* checkdig */
+        (new Test("mcn101")).ok = flag;
+        try {
+            new com.ibm.icu.math.MathContext(1000000000);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $132) {
+            e = $132;
+            flag = (e.getMessage()).equals("Digits too large: 1000000000");
+        }/* checkdigbig */
+        (new Test("mcn102")).ok = flag;
+
+        try {
+            new com.ibm.icu.math.MathContext(0, 5);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $133) {
+            e = $133;
+            flag = (e.getMessage()).equals("Bad form value: 5");
+        }/* checkform */
+        (new Test("mcn111")).ok = flag;
+        try {
+            new com.ibm.icu.math.MathContext(0, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $134) {
+            e = $134;
+            flag = (e.getMessage()).equals("Bad form value: -1");
+        }/* checkformneg */
+        (new Test("mcn112")).ok = flag;
+
+        // [lostDigits cannot be invalid]
+
+        try {
+            new com.ibm.icu.math.MathContext(0,
+                    com.ibm.icu.math.MathContext.PLAIN, false, 12);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $135) {
+            e = $135;
+            flag = (e.getMessage()).equals("Bad roundingMode value: 12");
+        }/* checkround */
+        (new Test("mcn121")).ok = flag;
+        try {
+            new com.ibm.icu.math.MathContext(0,
+                    com.ibm.icu.math.MathContext.PLAIN, false, -1);
+            flag = false;
+        } catch (java.lang.IllegalArgumentException $136) {
+            e = $136;
+            flag = (e.getMessage()).equals("Bad roundingMode value: -1");
+        }/* checkroundneg */
+        (new Test("mcn122")).ok = flag;
+
+        summary("MathContext");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /**
+     * Test general arithmetic (base operators).
+     * <p>
+     * Unlike the specific method tests, these tests were randomly generated by
+     * an IBM Object Rexx procedure, then manually corrected for known
+     * differences from ANSI X3-274. These differences are:
+     * <ol>
+     * <li>the trigger point in exponential notation is fixed in ANSI X3-274
+     * but varies with DIGITS in Classic and Object Rexx
+     * <li>some trailing zeros were missing (e.g., 1.3 + 1E-60 should show
+     * seven trailing zeros)
+     * <li>the power operator is less accurate in Object Rexx
+     * <li>ANSI X3-274 [errata 1999] rounds input numbers to DIGITS (rather
+     * than truncating to DIGITS+1).
+     * </ol>
+     */
+
+    public void diagmath() {
+        com.ibm.icu.math.MathContext def;
+        def = com.ibm.icu.math.MathContext.DEFAULT;
+        mathtest(1,def,"-9375284.42","5516.99832E+27276984","5.51699832E+27276987","-5.51699832E+27276987","-5.17234284E+27276994","-1.69934516E-27276981","0","-9375284.42","6.79057752E+41");
+        mathtest(2,def,"-410.832710","99.3588243E-502740862","-410.832710","-410.832710","-4.08198550E-502740858","-4.13483868E+502740862","","","1.36977786E+26");
+        mathtest(3,def,"80025.2340","-8.03097581","80017.2030","80033.2650","-642680.718","-9964.57167","-9964","4.59102916","5.94544517E-40");
+        mathtest(4,def,"81052020.2","-464525495","-383473475","545577515","-3.76507298E+16","-0.17448347","0","81052020.2","");
+        mathtest(5,def,"715.069294E-26923151","85.4404128E+796388557","8.54404128E+796388558","-8.54404128E+796388558","6.10958157E+769465410","8.36921628E-823311708","0","7.15069294E-26923149","4.88802213E-242308334");
+        mathtest(6,def,"-21971575.0E+31454441","-70944960.3E+111238221","-7.09449603E+111238228","7.09449603E+111238228","1.55877252E+142692677","3.09698884E-79783781","0","-2.19715750E+31454448","-4.04549502E-220181139");
+        mathtest(7,def,"682.25316","54470185.6","54470867.9","-54469503.4","3.71624563E+10","0.0000125252586","0","682.25316","3.48578699E+154365541");
+        mathtest(8,def,"-257586757.","2082888.71","-255503868","-259669646","-5.36524548E+14","-123.668036","-123","-1391445.67","-1.26879515E+17519020");
+        mathtest(9,def,"319577540.E+242599761","60.7124561","3.19577540E+242599769","3.19577540E+242599769","1.94023374E+242599771","5.26378869E+242599767","","","");
+        mathtest(10,def,"-13769977.0","24371.3381","-13745605.7","-13794348.3","-3.35592765E+11","-565.007015","-565","-170.9735","-8.73734001E+173982");
+        mathtest(11,def,"-475.434972E-725464311","-3.22214066E-865476836","-4.75434972E-725464309","-4.75434972E-725464309","","1.47552519E+140012527","","","");
+        mathtest(12,def,"842.01250","197199893","197200735","-197199051","1.66044775E+11","0.00000426984258","0","842.01250","7.00674164E+576872502");
+        mathtest(13,def,"572.173103E+280128428","-7140.19428","5.72173103E+280128430","5.72173103E+280128430","-4.08542712E+280128434","-8.01341085E+280128426","","","");
+        mathtest(14,def,"674235.954E+476135291","9684.82245","6.74235954E+476135296","6.74235954E+476135296","6.52985550E+476135300","6.96177919E+476135292","","","");
+        mathtest(15,def,"-360557.921E+437116514","930428850","-3.60557921E+437116519","-3.60557921E+437116519","-3.35473492E+437116528","-3.87517993E+437116510","","","");
+        mathtest(16,def,"957165918E-394595705","1676.59073E-829618944","9.57165918E-394595697","9.57165918E-394595697","","5.70900161E+435023244","","","9.16166595E-789191393");
+        mathtest(17,def,"-2610864.40","31245912.7","28635048.3","-33856777.1","-8.15788411E+13","-0.0835585897","0","-2610864.40","-3.12008905E+200498284");
+        mathtest(18,def,"959.548461","98.994577E+776775426","9.89945770E+776775427","-9.89945770E+776775427","9.49900940E+776775430","9.69293965E-776775426","0","959.548461","6.61712185E+29");
+        mathtest(19,def,"-41085.0268","3115477.61","3074392.58","-3156562.64","-1.27999481E+11","-0.0131873927","0","-41085.0268","4.73844173E+14373829");
+        mathtest(20,def,"-723420285.","2681660.35","-720738625","-726101945","-1.93996749E+15","-269.765813","-269","-2053650.85","4.14324113E+23757873");
+        mathtest(21,def,"63542018.0E-817732230","-8836243.22","-8836243.22","8836243.22","-5.61472726E-817732216","-7.19106711E-817732230","0","6.35420180E-817732223","");
+        mathtest(22,def,"-96051.7108","-291201.955","-387253.666","195150.244","2.79704460E+10","0.329845694","0","-96051.7108","3.53617153E-1450916");
+        mathtest(23,def,"108490.853","91685996.5","91794487.4","-91577505.7","9.94709197E+12","0.00118328706","0","108490.853","6.98124265E+461675038");
+        mathtest(24,def,"-27489.1735","-9835835.4E-506411649","-27489.1735","-27489.1735","2.70378986E-506411638","2.79479804E+506411646","","","4.05866472E-45");
+        mathtest(25,def,"-89220406.6","993391.008E-611041175","-89220406.6","-89220406.6","-8.86307496E-611041162","-8.98139865E+611041176","","","3.19625913E+79");
+        mathtest(26,def,"4.75502020","-17089144.9","-17089140.2","17089149.7","-81259229.2","-2.78247989E-7","0","4.75502020","1.0630191E-11571955");
+        mathtest(27,def,"68027916.2","-796883.839","67231032.4","68824800.0","-5.42103470E+13","-85.3674185","-85","292789.885","8.29415374E-6241744");
+        mathtest(28,def,"-8.01969439E+788605478","92154156.0","-8.01969439E+788605478","-8.01969439E+788605478","-7.39048168E+788605486","-8.70247717E+788605470","","","");
+        mathtest(29,def,"-8012.98341","96188.8651","88175.8817","-104201.849","-770759780","-0.0833046881","0","-8012.98341","-1.16010156E+375502");
+        mathtest(30,def,"21761476E+592330677","-9.70744506","2.17614760E+592330684","2.17614760E+592330684","-2.11248333E+592330685","-2.24173053E+592330683","","","");
+        mathtest(31,def,"-9840778.51","-17907.219","-9858685.73","-9822871.29","1.76220976E+11","549.542534","549","-9715.279","-6.62997437E-125225");
+        mathtest(32,def,"-4.1097614","-819.225776E-145214751","-4.10976140","-4.10976140","3.36682247E-145214748","5.01664074E+145214748","","","0.0000122876018");
+        mathtest(33,def,"-448.880985","-394.087374E-442511435","-448.880985","-448.880985","1.76898329E-442511430","1.13903925E+442511435","","","2.46306099E-11");
+        mathtest(34,def,"779.445304E+882688544","-797868519","7.79445304E+882688546","7.79445304E+882688546","-6.21894870E+882688555","-9.7690946E+882688537","","","");
+        mathtest(35,def,"799995477","-6.23675208E+156309440","-6.23675208E+156309440","6.23675208E+156309440","-4.98937346E+156309449","-1.28271169E-156309432","0","799995477","3.81482667E-54");
+        mathtest(36,def,"-51932.8170","591840275E-278480289","-51932.8170","-51932.8170","-3.07359327E-278480276","-8.7748028E+278480284","","","1.96178443E+28");
+        mathtest(37,def,"70.3552392","-4228656.73","-4228586.38","4228727.09","-297508156","-0.0000166377277","0","70.3552392","9.14742382E-7811584");
+        mathtest(38,def,"1588359.34","-12232799.2","-10644439.9","13821158.5","-1.94300809E+13","-0.129844307","0","1588359.34","1.56910086E-75854960");
+        mathtest(39,def,"2842.16206","-3.23234345","2838.92972","2845.39440","-9186.84392","-879.288388","-879","0.93216745","4.35565514E-11");
+        mathtest(40,def,"29960.2305","45.2735747E-95205475","29960.2305","29960.2305","1.35640673E-95205469","6.61759773E+95205477","","","2.413936E+22");
+        mathtest(41,def,"2916565.77","1151935.43E-787118724","2916565.77","2916565.77","3.35969544E-787118712","2.53188303E+787118724","","","2916565.77");
+        mathtest(42,def,"-52723012.9E-967143787","79.4088237","79.4088237","-79.4088237","-4.18667244E-967143778","-6.63944011E-967143782","0","-5.27230129E-967143780","");
+        mathtest(43,def,"-167473465","793646.597","-166679819","-168267112","-1.32914746E+14","-211.017682","-211","-14033.033","-1.19053789E+6526910");
+        mathtest(44,def,"-31769071.0","133.4360","-31768937.6","-31769204.4","-4.23913776E+9","-238084.707","-238084","-94.3760","-5.84252432E+997");
+        mathtest(45,def,"45960.6383","-93352.7468","-47392.1085","139313.385","-4.29055183E+9","-0.492333004","0","45960.6383","1.88335323E-435248");
+        mathtest(46,def,"606.175648","5.28528458E-981983620","606.175648","606.175648","3.20381081E-981983617","1.14691203E+981983622","","","8.18450516E+13");
+        mathtest(47,def,"171578.617E+643006110","-407774.293","1.71578617E+643006115","1.71578617E+643006115","-6.99653492E+643006120","-4.20768597E+643006109","","","");
+        mathtest(48,def,"-682286332.","-464.871699","-682286797","-682285867","3.17175606E+11","1467687.39","1467687","-182.709787","-1.6050843E-4108");
+        mathtest(49,def,"492088.428","653.72170","492742.150","491434.706","321688884","752.74911","752","489.70960","3.94658596E+3722");
+        mathtest(50,def,"74303782.5","1141.68058","74304924.2","74302640.8","8.48311855E+10","65082.812","65082","926.99244","4.94849869E+8988");
+        mathtest(51,def,"74.7794084E+119375329","-34799355.6","7.47794084E+119375330","7.47794084E+119375330","-2.60227522E+119375338","-2.14887337E+119375323","","","");
+        mathtest(52,def,"-9432.08369","33735.5058","24303.4221","-43167.5895","-318196114","-0.279589218","0","-9432.08369","2.309567E+134087");
+        mathtest(53,def,"4249198.78E-112433155","418673051.","418673051","-418673051","1.77902502E-112433140","1.01492054E-112433157","0","4.24919878E-112433149","");
+        mathtest(54,def,"-2960933.02","-207933.38","-3168866.40","-2752999.64","6.15676811E+11","14.2398158","14","-49865.70","-2.75680397E-1345624");
+        mathtest(55,def,"29317.7519E+945600035","1.43555750","2.93177519E+945600039","2.93177519E+945600039","4.20873186E+945600039","2.04225549E+945600039","","","2.93177519E+945600039");
+        mathtest(56,def,"-51.1693770","-638055.414","-638106.583","638004.245","32648898.0","0.0000801958198","0","-51.1693770","-3.48266075E-1090443");
+        mathtest(57,def,"-756343055.","-68.9248344E+217100975","-6.89248344E+217100976","6.89248344E+217100976","5.21308198E+217100985","1.09734475E-217100968","0","-756343055","-7.06265897E-63");
+        mathtest(58,def,"2538.80406E+694185197","-3386499.65","2.53880406E+694185200","2.53880406E+694185200","-8.59765906E+694185206","-7.49683839E+694185193","","","");
+        mathtest(59,def,"-54344.0672","-8086.45235","-62430.5196","-46257.6149","439450710","6.72038427","6","-5825.35310","3.62916861E-38289");
+        mathtest(60,def,"3.31600054","217481648","217481651","-217481645","721169262","1.5247266E-8","0","3.31600054","3.73134969E+113224119");
+        mathtest(61,def,"681832.671","320341.161E+629467560","3.20341161E+629467565","-3.20341161E+629467565","2.18419069E+629467571","2.12845789E-629467560","0","681832.671","3.16981139E+17");
+        mathtest(62,def,"832689481","348040024E-882122501","832689481","832689481","2.89809267E-882122484","2.3925107E+882122501","","","5.77363381E+26");
+        mathtest(63,def,"14.5512326E+257500811","60.9979577E-647314724","1.45512326E+257500812","1.45512326E+257500812","8.87595471E-389813911","2.38552784E+904815534","","","");
+        mathtest(64,def,"-901.278844","449461667.","449460766","-449462568","-4.05090292E+11","-0.00000200524074","0","-901.278844","");
+        mathtest(65,def,"-5.32627675","-738860216E-238273224","-5.32627675","-5.32627675","3.93537399E-238273215","7.20877459E+238273215","","","-0.00000822306838");
+        mathtest(66,def,"-505383463.","3.18756328","-505383460","-505383466","-1.61094177E+9","-158548527","-158548527","-0.23671144","-1.29081226E+26");
+        mathtest(67,def,"769241.44E-720927320","-145382631.","-145382631","145382631","-1.11834344E-720927306","-5.29115091E-720927323","0","7.6924144E-720927315","");
+        mathtest(68,def,"-6.45038910","56736.4411E+440937167","5.67364411E+440937171","-5.67364411E+440937171","-3.65972121E+440937172","-1.13690407E-440937171","0","-6.45038910","72030.3421");
+        mathtest(69,def,"58.4721075","-712186829","-712186771","712186887","-4.16430648E+10","-8.21022028E-8","0","58.4721075","");
+        mathtest(70,def,"8244.08357","245.302828E+652007959","2.45302828E+652007961","-2.45302828E+652007961","2.02229701E+652007965","3.36077804E-652007958","0","8244.08357","67964913.9");
+        mathtest(71,def,"45.5361397","-76579063.9","-76579018.4","76579109.4","-3.48711495E+9","-5.94629098E-7","0","45.5361397","3.98335374E-126995367");
+        mathtest(72,def,"594420.54E+685263039","-952420.179","5.94420540E+685263044","5.94420540E+685263044","-5.66138117E+685263050","-6.24115861E+685263038","","","");
+        mathtest(73,def,"-841310701.","9398110.4","-831912591","-850708811","-7.90673085E+15","-89.5191337","-89","-4878875.4","1.30001466E+83877722");
+        mathtest(74,def,"904392146E-140100276","168116093.","168116093","-168116093","1.52042874E-140100259","5.37956914E-140100276","0","9.04392146E-140100268","");
+        mathtest(75,def,"-907324792E+685539670","-15.6902171","-9.07324792E+685539678","-9.07324792E+685539678","1.42361230E+685539680","5.78274211E+685539677","","","");
+        mathtest(76,def,"987013606.","-26818.3572E+560907442","-2.68183572E+560907446","2.68183572E+560907446","-2.64700834E+560907455","-3.68036565E-560907438","0","987013606","1.0399934E-27");
+        mathtest(77,def,"-741317564","630.241530E-212782946","-741317564","-741317564","-4.67209116E-212782935","-1.1762436E+212782952","","","1.65968527E+53");
+        mathtest(78,def,"61867907.2","-139204670","-77336763","201072577","-8.61230161E+15","-0.444438446","0","61867907.2","");
+        mathtest(79,def,"-273.622743E+531282717","-4543.68684","-2.73622743E+531282719","-2.73622743E+531282719","1.24325606E+531282723","6.02204229E+531282715","","","");
+        mathtest(80,def,"-383588949.","-428640583.","-812229532","45051634","1.64421791E+17","0.89489648","0","-383588949","");
+        mathtest(81,def,"-56182.2686","32.7741649","-56149.4944","-56215.0428","-1841326.94","-1714.22426","-1714","-7.3499614","-5.45476402E+156");
+        mathtest(82,def,"-6366384.30","332014.980","-6034369.32","-6698399.28","-2.11373496E+12","-19.1749911","-19","-58099.680","-3.05392399E+2258994");
+        mathtest(83,def,"-1.27897702","-8213776.03E-686519123","-1.27897702","-1.27897702","1.05052308E-686519116","1.55711212E+686519116","","","0.139668371");
+        mathtest(84,def,"65.4059036","401162145E+884155506","4.01162145E+884155514","-4.01162145E+884155514","2.62383726E+884155516","1.63041066E-884155513","0","65.4059036","18300704.1");
+        mathtest(85,def,"-20630916.8","158987411.E-480500612","-20630916.8","-20630916.8","-3.28005605E-480500597","-1.29764468E+480500611","","","4.25634728E+14");
+        mathtest(86,def,"-4.72705853","-97626742.4","-97626747.1","97626737.7","461487325","4.84197097E-8","0","-4.72705853","2.92654449E-65858120");
+        mathtest(87,def,"8.43528169","-4573.45752","-4565.02224","4581.89280","-38578.4025","-0.00184439927","0","8.43528169","8.84248688E-4236");
+        mathtest(88,def,"1.91075189","-704247089.","-704247087","704247091","-1.34564146E+9","-2.71318394E-9","0","1.91075189","6.84547494E-198037309");
+        mathtest(89,def,"31997198E-551746308","326.892584","326.892584","-326.892584","1.04596467E-551746298","9.78829119E-551746304","0","3.1997198E-551746301","");
+        mathtest(90,def,"127589.213","84184304.","84311893.2","-84056714.8","1.07410091E+13","0.00151559385","0","127589.213","2.87917042E+429829394");
+        mathtest(91,def,"714494248","-7025063.59","707469185","721519312","-5.01936753E+15","-101.706446","-101","4962825.41","1.65018516E-62199908");
+        mathtest(92,def,"-52987680.2E+279533503","-42014114.8","-5.29876802E+279533510","-5.29876802E+279533510","2.22623048E+279533518","1.26118759E+279533503","","","");
+        mathtest(93,def,"-8795.0513","-225294.394E-884414238","-8795.05130","-8795.05130","1.98147575E-884414229","3.90380388E+884414236","","","1.2927759E-8");
+        mathtest(94,def,"83280.1394","161566354.","161649634","-161483074","1.34552685E+13","0.000515454718","0","83280.1394","5.30774809E+794993940");
+        mathtest(95,def,"112.877897","-9.96481666","102.913080","122.842714","-1124.80755","-11.3276441","-11","3.26491374","2.97790545E-21");
+        mathtest(96,def,"-572542.121E+847487397","433.843420","-5.72542121E+847487402","-5.72542121E+847487402","-2.48393632E+847487405","-1.3196976E+847487400","","","");
+        mathtest(97,def,"4709649.89","20949266.4","25658916.3","-16239616.5","9.86637102E+13","0.224812163","0","4709649.89","4.85293644E+139794213");
+        mathtest(98,def,"-9475.19322","-30885.2475E+584487341","-3.08852475E+584487345","3.08852475E+584487345","2.92643688E+584487349","3.06787026E-584487342","0","-9475.19322","-1.17553557E-12");
+        mathtest(99,def,"-213230447.","864.815822E+127783046","8.64815822E+127783048","-8.64815822E+127783048","-1.84405064E+127783057","-2.46561686E-127783041","0","-213230447","-9.11261361E+74");
+        mathtest(100,def,"-89.1168786E+403375873","6464.05744","-8.91168786E+403375874","-8.91168786E+403375874","-5.76056622E+403375878","-1.37865233E+403375871","","","");
+        mathtest(101,def,"61774.4958","-14000.7706","47773.7252","75775.2664","-864890545","-4.41222112","-4","5771.4134","7.59030407E-67077");
+        mathtest(102,def,"1.60731414","7.04330293E-427033419","1.60731414","1.60731414","1.13208004E-427033418","2.28204602E+427033418","","","27.7143921");
+        mathtest(103,def,"7955012.51","-230117662.","-222162650","238072675","-1.83058888E+15","-0.0345693261","0","7955012.51","");
+        mathtest(104,def,"4086661.08","1.77621994","4086662.86","4086659.30","7258808.90","2300762.98","2300762","1.73840572","1.67007988E+13");
+        mathtest(105,def,"-610.076931","-207.658306","-817.735237","-402.418625","126687.542","2.93788841","2","-194.760319","4.36518377E-580");
+        mathtest(106,def,"-98.6353697","-99253.3899E-716309653","-98.6353697","-98.6353697","9.78989481E-716309647","9.93773309E+716309649","","","1.14729007E-20");
+        mathtest(107,def,"-959923730","409.125542E-900295528","-959923730","-959923730","-3.92729316E-900295517","-2.3462816E+900295534","","","8.49076677E+35");
+        mathtest(108,def,"379965133","-8.15869657","379965125","379965141","-3.10002023E+9","-46571793.6","-46571793","5.19214999","2.30170697E-69");
+        mathtest(109,def,"833.646797","1389499.46E-443407251","833.646797","833.646797","1.15835177E-443407242","5.99961944E+443407247","","","833.646797");
+        mathtest(110,def,"2314933.4E-646489194","-7401538.17","-7401538.17","7401538.17","-1.71340679E-646489181","-3.12763826E-646489195","0","2.3149334E-646489188","");
+        mathtest(111,def,"808525347","-5959.74667E+58232168","-5.95974667E+58232171","5.95974667E+58232171","-4.81860624E+58232180","-1.35664382E-58232163","0","808525347","3.5796302E-54");
+        mathtest(112,def,"-17220490.6E+726428704","19.9855688","-1.72204906E+726428711","-1.72204906E+726428711","-3.44161300E+726428712","-8.61646259E+726428709","","","");
+        mathtest(113,def,"59015.9705","-72070405.4E+322957279","-7.20704054E+322957286","7.20704054E+322957286","-4.25330492E+322957291","-8.18865527E-322957283","0","59015.9705","4.01063488E-34");
+        mathtest(114,def,"16411470E+578192008","497470.005E-377473621","1.64114700E+578192015","1.64114700E+578192015","8.16421406E+200718399","3.29898684E+955665630","","","");
+        mathtest(115,def,"-107.353544E+609689808","-659.50136E-456711743","-1.07353544E+609689810","-1.07353544E+609689810","7.07998083E+152978069","","","","");
+        mathtest(116,def,"786.134163","-53.0292275E-664419768","786.134163","786.134163","-4.16880874E-664419764","-1.48245449E+664419769","","","3.33055532E-15");
+        mathtest(117,def,"23.5414714","5000786.91","5000810.45","-5000763.37","117725882","0.0000047075534","0","23.5414714","4.4895618E+6860247");
+        mathtest(118,def,"-69775.6113","561292120.","561222344","-561361896","-3.91645008E+13","-0.000124312473","0","-69775.6113","");
+        mathtest(119,def,"919043.871","-71606613.7","-70687569.8","72525657.6","-6.58096194E+13","-0.0128346227","0","919043.871","3.05862429E-427014317");
+        mathtest(120,def,"-27667.1915","-293455.107E-789181924","-27667.1915","-27667.1915","8.11907864E-789181915","9.42808315E+789181922","","","-4.72176938E-14");
+        mathtest(121,def,"-908603625.","-982.409273E+449441134","-9.82409273E+449441136","9.82409273E+449441136","8.92620627E+449441145","9.2487281E-449441129","0","-908603625","2.60768632E-90");
+        mathtest(122,def,"847.113351","5.71511268","852.828464","841.398238","4841.34825","148.223386","148","1.27667436","3.69529538E+17");
+        mathtest(123,def,"-992140475","3.82918218","-992140471","-992140479","-3.79908663E+9","-259099836","-259099836","-0.14787752","9.68930595E+35");
+        mathtest(124,def,"-12606437.5","268123145E+362798858","2.68123145E+362798866","-2.68123145E+362798866","-3.38007767E+362798873","-4.70173416E-362798860","0","-12606437.5","-2.00344362E+21");
+        mathtest(125,def,"3799470.64","-264.703992","3799205.94","3799735.34","-1.00573505E+9","-14353.6583","-14353","174.242824","2.3625466E-1744");
+        mathtest(126,def,"-8.11070247","-931284056.E-654288974","-8.11070247","-8.11070247","7.55336789E-654288965","8.70916067E+654288965","","","-6.58375662E-9");
+        mathtest(127,def,"-242660177.","-6.09832715E-943742415","-242660177","-242660177","1.47982115E-943742406","3.97912692E+943742422","","","4.89788901E-51");
+        mathtest(128,def,"76.1463803","-45.6758006E-636907996","76.1463803","76.1463803","-3.47804688E-636907993","-1.66710554E+636907996","","","3.90619287E-10");
+        mathtest(129,def,"761185.862","-70878470.9E+221214712","-7.08784709E+221214719","7.08784709E+221214719","-5.39516900E+221214725","-1.07393099E-221214714","0","761185.862","6.75406144E-42");
+        mathtest(130,def,"6203606.54","-195.92748E-833512061","6203606.54","6203606.54","-1.21545700E-833512052","-3.1662769E+833512065","","","2.59843292E-14");
+        mathtest(131,def,"-163274837.","95.0448550E+887876533","9.50448550E+887876534","-9.50448550E+887876534","-1.55184332E+887876543","-1.71787139E-887876527","0","-163274837","1.34645731E+82");
+        mathtest(132,def,"2.38638190","-807986179.","-807986177","807986181","-1.92816359E+9","-2.95349347E-9","0","2.38638190","1.19029305E-305208656");
+        mathtest(133,def,"-109022296E-811981158","7.19685680","7.19685680","-7.19685680","-7.84617852E-811981150","-1.51485988E-811981151","0","-1.09022296E-811981150","");
+        mathtest(134,def,"-559250.780E-273710421","-393780811.","-393780811","393780811","2.20222226E-273710407","1.42020831E-273710424","0","-5.59250780E-273710416","");
+        mathtest(135,def,"-88021.9966E+555334642","7599686.64E+818884053","7.59968664E+818884059","-7.59968664E+818884059","","-1.15823192E-263549413","0","-8.80219966E+555334646","");
+        mathtest(136,def,"194.317648E-197450009","-930.979064","-930.979064","930.979064","-1.80905662E-197450004","-2.08723972E-197450010","0","1.94317648E-197450007","");
+        mathtest(137,def,"9495479.65","7405697.96","16901177.6","2089781.69","7.03206543E+13","1.28218565","1","2089781.69","1.0135446E+51673383");
+        mathtest(138,def,"-1656.28925","-163050511E-682882380","-1656.28925","-1656.28925","2.70058809E-682882369","1.01581359E+682882375","","","3.64525265E-7");
+        mathtest(139,def,"95581.3784E+64262149","-99.2879365","9.55813784E+64262153","9.55813784E+64262153","-9.49007783E+64262155","-9.62668596E+64262151","","","");
+        mathtest(140,def,"643761.452","3.73446939","643765.186","643757.718","2404107.44","172383.647","172383","2.41514363","1.71751236E+23");
+        mathtest(141,def,"7960.49866E-129827423","3220.22850","3220.22850","-3220.22850","2.56346247E-129827416","2.47202913E-129827423","0","7.96049866E-129827420","");
+        mathtest(142,def,"-6356.64112E-707203818","1805054.98","1805054.98","-1805054.98","-1.14740867E-707203808","-3.52157756E-707203821","0","-6.35664112E-707203815","");
+        mathtest(143,def,"2.3904042","8476.52006","8478.91046","-8474.12966","20262.3092","0.000282003013","0","2.3904042","2.00251752E+3208");
+        mathtest(144,def,"-713298.658","-957.782729","-714256.441","-712340.875","683185135","744.739528","744","-708.307624","3.68122321E-5608");
+        mathtest(145,def,"607779233.E-820497365","-20.1188742E-857318323","6.07779233E-820497357","6.07779233E-820497357","","-3.02094057E+36820965","","","");
+        mathtest(146,def,"-205888251","-908.792922E+250680613","-9.08792922E+250680615","9.08792922E+250680615","1.87109785E+250680624","2.26551336E-250680608","0","-205888251","-1.5042358E-75");
+        mathtest(147,def,"51542399.1","-23212.2414","51519186.9","51565611.3","-1.19641461E+12","-2220.4835","-2220","11223.1920","1.71641348E-179015");
+        mathtest(148,def,"4.44287230","158923023","158923027","-158923019","706074697","2.79561275E-8","0","4.44287230","7.12573416E+102928693");
+        mathtest(149,def,"-79123682.6","-3.8571770","-79123686.5","-79123678.8","305194049","20513365.8","20513365","-2.9293950","2.55137345E-32");
+        mathtest(150,def,"-80.3324347E-569715030","883142.351","883142.351","-883142.351","-7.09449752E-569715023","-9.09620455E-569715035","0","-8.03324347E-569715029","");
+        mathtest(151,def,"13637.483","-52798.5631","-39161.0801","66436.0461","-720039507","-0.258292692","0","13637.483","1.47163791E-218310");
+        mathtest(152,def,"6.42934843E-276476458","84057440.0E-388039782","6.42934843E-276476458","6.42934843E-276476458","5.40434570E-664516232","7.64875593E+111563316","","","");
+        mathtest(153,def,"-5.64133087","-17401297.","-17401302.6","17401291.4","98166473.9","3.24190253E-7","0","-5.64133087","-1.25908916E-13075014");
+        mathtest(154,def,"95469.7057E+865733824","198.829749","9.54697057E+865733828","9.54697057E+865733828","1.89822176E+865733831","4.80158056E+865733826","","","");
+        mathtest(155,def,"-416466.209","-930153427","-930569893","929736961","3.87377472E+14","0.000447739262","0","-416466.209","");
+        mathtest(156,def,"-1541733.85","-1.99208708","-1541735.84","-1541731.86","3071268.08","773928.944","773928","-1.88034976","4.20708401E-13");
+        mathtest(157,def,"-39152691.8","-645131748.","-684284440","605979056","2.52586445E+16","0.0606894513","0","-39152691.8","");
+        mathtest(158,def,"113.939979","-58282550.4","-58282436.5","58282664.3","-6.64071257E+9","-0.0000019549587","0","113.939979","2.106557E-119868330");
+        mathtest(159,def,"-324971.736","-9517.15154","-334488.888","-315454.585","3.09280526E+9","34.1459033","34","-1388.58364","-5.82795263E-52457");
+        mathtest(160,def,"-76.9436744","-9548122.75E-273599728","-76.9436744","-76.9436744","7.34667648E-273599720","8.05851332E+273599722","","","1.37489895E-19");
+        mathtest(161,def,"-430393.282","-70.2551505","-430463.537","-430323.027","30237344.8","6126.14561","6126","-10.2300370","4.26006409E-395");
+        mathtest(162,def,"-3308051.90","-349433799.E+397813188","-3.49433799E+397813196","3.49433799E+397813196","1.15594514E+397813203","9.46689161E-397813191","0","-3308051.90","-2.76237768E-20");
+        mathtest(163,def,"23.1543212E-655822712","5848.20853","5848.20853","-5848.20853","1.35411299E-655822707","3.95921607E-655822715","0","2.31543212E-655822711","");
+        mathtest(164,def,"-174.261308E-82902077","-200096204.","-200096204","200096204","3.48690262E-82902067","8.70887626E-82902084","0","-1.74261308E-82902075","");
+        mathtest(165,def,"-50669105.2","9105789.01E+609889700","9.10578901E+609889706","-9.10578901E+609889706","-4.61382181E+609889714","-5.56449366E-609889700","0","-50669105.2","-2.20135008E+69");
+        mathtest(166,def,"424768856.","-971.71757","424767884","424769828","-4.12755361E+11","-437132.012","-437132","11.19076","2.72651473E-8387");
+        mathtest(167,def,"7181.2767","999117.918","1006299.19","-991936.641","7.17494223E+9","0.00718761677","0","7181.2767","3.09655124E+3852800");
+        mathtest(168,def,"8096417.07E-433694528","-68.4863363","-68.4863363","68.4863363","-5.54493942E-433694520","-1.18219451E-433694523","0","8.09641707E-433694522","");
+        mathtest(169,def,"1236287.5","-7119.97299E-176200498","1236287.50","1236287.50","-8.80233361E-176200489","-1.73636544E+176200500","","","2.26549784E-43");
+        mathtest(170,def,"-752995833E-654401067","-15.2736930E+803939983","-1.52736930E+803939984","1.52736930E+803939984","1.15010272E+149538926","","0","-7.52995833E-654401059","");
+        mathtest(171,def,"702992.459","-312.689474","702679.770","703305.148","-219818342","-2248.21274","-2248","66.521448","8.02493322E-1831");
+        mathtest(172,def,"-4414.38805","-17680.4630E-584364536","-4414.38805","-4414.38805","7.80484246E-584364529","2.49676044E+584364535","","","5.13167312E-8");
+        mathtest(173,def,"9.46350807","7826.65424","7836.11775","-7817.19073","74067.6056","0.00120913839","0","9.46350807","3.63271495E+7639");
+        mathtest(174,def,"2078153.7","-16934607.3E+233594439","-1.69346073E+233594446","1.69346073E+233594446","-3.51927168E+233594452","-1.2271638E-233594440","0","2078153.7","2.31549939E-13");
+        mathtest(175,def,"-9359.74629","7.07761788E+252457696","7.07761788E+252457696","-7.07761788E+252457696","-6.62447077E+252457700","-1.32244301E-252457693","0","-9359.74629","-6.29286677E+27");
+        mathtest(176,def,"66.2319284E+730468479","25.9391685E+221147044","6.62319284E+730468480","6.62319284E+730468480","1.71800115E+951615526","2.55335588E+509321435","","","");
+        mathtest(177,def,"317997088.E-90968742","-977426.461","-977426.461","977426.461","-3.10818768E-90968728","-3.2534119E-90968740","0","3.17997088E-90968734","");
+        mathtest(178,def,"227473386","-6759.61390","227466626","227480146","-1.53763226E+12","-33651.8312","-33651","5618.65110","1.40992627E-56493");
+        mathtest(179,def,"-392019.462","-245456.503","-637475.965","-146562.959","9.62237263E+10","1.59710359","1","-146562.959","-3.08656533E-1372917");
+        mathtest(180,def,"-3619556.28E+587673583","-3.45236972","-3.61955628E+587673589","-3.61955628E+587673589","1.24960465E+587673590","1.04842661E+587673589","","","");
+        mathtest(181,def,"-249.400704E-923930848","831102.919","831102.919","-831102.919","-2.07277653E-923930840","-3.00084019E-923930852","0","-2.49400704E-923930846","");
+        mathtest(182,def,"65234.2739E+154949914","-694581895","6.52342739E+154949918","6.52342739E+154949918","-4.53105456E+154949927","-9.39187652E+154949909","","","");
+        mathtest(183,def,"45.2316213","-88775083.4","-88775038.2","88775128.6","-4.01544095E+9","-5.09508069E-7","0","45.2316213","1.92314254E-146962015");
+        mathtest(184,def,"331100375.","442.343378","331100817","331099933","1.46460058E+11","748514.37","748514","163.759708","6.64011043E+3765");
+        mathtest(185,def,"81.8162765","5.61239515E+467372163","5.61239515E+467372163","-5.61239515E+467372163","4.59185273E+467372165","1.45777826E-467372162","0","81.8162765","2.99942677E+11");
+        mathtest(186,def,"-5738.13069E+789464078","33969715.0","-5.73813069E+789464081","-5.73813069E+789464081","-1.94922664E+789464089","-1.68919012E+789464074","","","");
+        mathtest(187,def,"-7413.03911","2.70630320E-254858264","-7413.03911","-7413.03911","-2.00619315E-254858260","-2.73917539E+254858267","","","-4.07369842E+11");
+        mathtest(188,def,"-417696.182","27400.6002","-390295.582","-445096.782","-1.14451261E+10","-15.2440523","-15","-6687.1790","-1.58020334E+154017");
+        mathtest(189,def,"68.8538735E+655647287","3198.17933E-132454826","6.88538735E+655647288","6.88538735E+655647288","2.20207035E+523192466","2.15290846E+788102111","","","");
+        mathtest(190,def,"-6817.04246","434420.439","427603.397","-441237.481","-2.96146258E+9","-0.0156922692","0","-6817.04246","5.94143518E+1665390");
+        mathtest(191,def,"8578.27511","647042.341E-490924334","8578.27511","8578.27511","5.55050721E-490924325","1.3257672E+490924332","","","3.98473846E+23");
+        mathtest(192,def,"4124.11615E+733109424","597385828E+375928745","4.12411615E+733109427","4.12411615E+733109427","","6.9036056E+357180673","","","");
+        mathtest(193,def,"102.714400","-919017.468","-918914.754","919120.182","-94396327.8","-0.000111765449","0","102.714400","4.04295689E-1848724");
+        mathtest(194,def,"-4614.33015E+996778733","-433.560812E+22860599","-4.61433015E+996778736","-4.61433015E+996778736","","1.06428672E+973918135","","","");
+        mathtest(195,def,"457455170.","3709230.48E+677010879","3.70923048E+677010885","-3.70923048E+677010885","1.69680666E+677010894","1.23328861E-677010877","0","457455170","4.37919376E+34");
+        mathtest(196,def,"-2522468.15","-48482043.5","-51004511.7","45959575.4","1.22294411E+14","0.0520289156","0","-2522468.15","1.42348178E-310373595");
+        mathtest(197,def,"-659811384","62777.6118","-659748606","-659874162","-4.14213829E+13","-10510.2976","-10510","-18683.9820","3.4393524E+553665");
+        mathtest(198,def,"4424.94176","-825848.20","-821423.258","830273.142","-3.65433019E+9","-0.00535805704","0","4424.94176","3.42152775E-3010966");
+        mathtest(199,def,"43.6441884","-6509.89663E-614169377","43.6441884","43.6441884","-2.84119155E-614169372","-6.70428286E+614169374","","","3.31524056E-12");
+        mathtest(200,def,"897.388381E-843864876","84195.1369","84195.1369","-84195.1369","7.55557376E-843864869","1.06584348E-843864878","0","8.97388381E-843864874","");
+        mathtest(201,def,"796199825","496.76834","796200322","796199328","3.95526865E+11","1602758.79","1602758","393.91828","6.42647264E+4423");
+        mathtest(202,def,"573583582","1598.69521","573585181","573581983","9.16985325E+11","358782.323","358782","517.16578","9.91156302E+14004");
+        mathtest(203,def,"-783144270.","6347.71496","-783137922","-783150618","-4.97117660E+12","-123374.202","-123374","-1284.52496","1.28110803E+56458");
+        mathtest(204,def,"26909234.7","52411.5081","26961646.2","26856823.2","1.41035357E+12","513.422255","513","22131.0447","9.75836528E+389415");
+        mathtest(205,def,"8.21915282","24859.7841E-843282959","8.21915282","8.21915282","2.04326365E-843282954","3.30620443E+843282955","","","67.5544731");
+        mathtest(206,def,"-688.387710","82783.5207E-831870858","-688.387710","-688.387710","-5.69871582E-831870851","-8.31551623E+831870855","","","5.04272012E+22");
+        mathtest(207,def,"-9792232.","-1749.01166","-9793981.01","-9790482.99","1.71267279E+10","5598.72311","5598","-1264.72732","-8.86985674E-12228");
+        mathtest(208,def,"-130.765600","8.67437427","-122.091226","-139.439974","-1134.30976","-15.0749317","-15","-0.64998595","-1.11799947E+19");
+        mathtest(209,def,"917.259102","-368640.426","-367723.167","369557.685","-338138786","-0.00248822169","0","917.259102","8.67104255E-1092094");
+        mathtest(210,def,"-4.9725631","-294563717.","-294563722","294563712","1.46473667E+9","1.6881112E-8","0","-4.9725631","-6.27962584E-205187284");
+        mathtest(211,def,"-60962887.2E-514249661","-243021.407","-243021.407","243021.407","1.48152866E-514249648","2.5085398E-514249659","0","-6.09628872E-514249654","");
+        mathtest(212,def,"-55389219.8","-3772200E+981866393","-3.77220000E+981866399","3.77220000E+981866399","2.08939215E+981866407","1.46835321E-981866392","0","-55389219.8","1.06242678E-31");
+        mathtest(213,def,"681.666010","626886700","626887382","-626886018","4.27327356E+11","0.00000108738311","0","681.666010","");
+        mathtest(214,def,"6.42652138","53465894.5","53465900.9","-53465888.1","343599714","1.2019852E-7","0","6.42652138","4.61155532E+43199157");
+        mathtest(215,def,"561546656","651408.476","562198064","560895248","3.65796251E+14","862.049968","862","32549.688","8.6052377E+5699419");
+        mathtest(216,def,"7845778.36E-79951139","9.45859047","9.45859047","-9.45859047","7.42100044E-79951132","8.29487056E-79951134","0","7.84577836E-79951133","1.12648216E-719560189");
+        mathtest(217,def,"54486.2112","10.7565078","54496.9677","54475.4547","586081.356","5065.41828","5065","4.4991930","1.25647168E+52");
+        mathtest(218,def,"16576482.5","-2217720.83","14358761.7","18794203.3","-3.67620105E+13","-7.47455779","-7","1052436.69","1.38259374E-16010820");
+        mathtest(219,def,"61.2793787E-392070111","6.22575651","6.22575651","-6.22575651","3.81510491E-392070109","9.84288072E-392070111","0","6.12793787E-392070110","");
+        mathtest(220,def,"5115136.39","-653674372.","-648559236","658789508","-3.34363357E+15","-0.00782520565","0","5115136.39","");
+        mathtest(221,def,"-7.84238366E-416477339","-37432758.9E+97369393","-3.74327589E+97369400","3.74327589E+97369400","2.93562057E-319107938","2.09505895E-513846739","0","-7.84238366E-416477339","");
+        mathtest(222,def,"-387781.3E+284108380","-218085.592","-3.87781300E+284108385","-3.87781300E+284108385","8.45695144E+284108390","1.77811517E+284108380","","","");
+        mathtest(223,def,"-5353.17736","3.39332346E+546685359","3.39332346E+546685359","-3.39332346E+546685359","-1.81650623E+546685363","-1.57756177E-546685356","0","-5353.17736","-1.53403369E+11");
+        mathtest(224,def,"-20837.2900E-168652772","-8236.78305E-712819173","-2.08372900E-168652768","-2.08372900E-168652768","1.71632237E-881471937","2.52978497E+544166401","","","");
+        mathtest(225,def,"-98573.8722E+829022366","309011.007","-9.85738722E+829022370","-9.85738722E+829022370","-3.04604115E+829022376","-3.18997932E+829022365","","","");
+        mathtest(226,def,"49730750.7","-5315.10636E-299586991","49730750.7","49730750.7","-2.64324229E-299586980","-9.35649211E+299586994","","","3.28756936E-39");
+        mathtest(227,def,"1539523.40","-962388.581","577134.82","2501911.98","-1.48161974E+12","-1.59969001","-1","577134.819","3.10144834E-5954673");
+        mathtest(228,def,"81596.2121","-37600.9653","43995.2468","119197.177","-3.06809634E+9","-2.17005631","-2","6394.2815","1.97878299E-184684");
+        mathtest(229,def,"590146199","-1425404.61","588720794","591571604","-8.41197113E+14","-414.020128","-414","28690.46","2.04650994E-12502170");
+        mathtest(230,def,"196.05543","505.936305","701.991735","-309.880875","99191.5598","0.387510104","0","196.05543","8.78437397E+1159");
+        mathtest(231,def,"77.8058449","-642.275274","-564.469429","720.081119","-49972.7704","-0.121140963","0","77.8058449","9.33582626E-1215");
+        mathtest(232,def,"1468.60684","10068.138","11536.7448","-8599.5312","14786136.3","0.145866777","0","1468.60684","2.54122484E+31884");
+        mathtest(233,def,"4.98774767E-387968632","4.41731439E-578812376","4.98774767E-387968632","4.98774767E-387968632","2.20324496E-966781007","1.12913577E+190843744","","","");
+        mathtest(234,def,"981.091059","-92238.9930","-91257.9020","93220.0841","-90494851.3","-0.0106364025","0","981.091059","5.29943342E-275953");
+        mathtest(235,def,"-3606.24992","8290224.70","8286618.45","-8293830.95","-2.98966222E+10","-0.000435000262","0","-3606.24992","-1.23747107E+29488793");
+        mathtest(236,def,"-8978571.35","92243.4796","-8886327.87","-9070814.83","-8.28214663E+11","-97.3355666","-97","-30953.8288","-4.95762813E+641384");
+        mathtest(237,def,"-61968.1992E+810060478","474294671.E+179263414","-6.19681992E+810060482","-6.19681992E+810060482","-2.93911867E+989323905","-1.30653374E+630797060","","","");
+        mathtest(238,def,"61298431.6E-754429041","-2584862.79","-2584862.79","2584862.79","-1.58448035E-754429027","-2.37143851E-754429040","0","6.12984316E-754429034","");
+        mathtest(239,def,"621039.064","-5351539.62","-4730500.56","5972578.68","-3.32351516E+12","-0.116048672","0","621039.064","2.41163312E-31002108");
+        mathtest(240,def,"-19.6007605","-57905696.","-57905715.6","57905676.4","1.13499568E+9","3.38494515E-7","0","-19.6007605","1.05663646E-74829963");
+        mathtest(241,def,"3626.13109E+687030346","189.896004","3.62613109E+687030349","3.62613109E+687030349","6.88587804E+687030351","1.90953523E+687030347","","","");
+        mathtest(242,def,"-249334.026","-7.54735834E-14137188","-249334.026","-249334.026","1.88181324E-14137182","3.30359332E+14137192","","","6.69495408E-44");
+        mathtest(243,def,"417613928.","-925213.216","416688715","418539141","-3.86381925E+14","-451.370474","-451","342767.584","8.38430085E-7976054");
+        mathtest(244,def,"23.8320309","-50074996.1","-50074972.3","50075019.9","-1.19338885E+9","-4.75926765E-7","0","23.8320309","5.81466387E-68961335");
+        mathtest(245,def,"49789677.7","-131827812E+156412534","-1.31827812E+156412542","1.31827812E+156412542","-6.56366427E+156412549","-3.77687204E-156412535","0","49789677.7","2.00844843E-8");
+        mathtest(246,def,"-8907163.61E-741867246","773651.288E-472033282","7.73651288E-472033277","-7.73651288E-472033277","","-1.15131504E-269833963","0","-8.90716361E-741867240","");
+        mathtest(247,def,"514021711.E+463536646","617441659.","5.14021711E+463536654","5.14021711E+463536654","3.17378418E+463536663","8.32502478E+463536645","","","");
+        mathtest(248,def,"998175750","2.39285478","998175752","998175748","2.38848961E+9","417148487","417148486","1.30513692","9.96354828E+17");
+        mathtest(249,def,"873575426.","647853.152E+497450781","6.47853152E+497450786","-6.47853152E+497450786","5.65948593E+497450795","1.3484158E-497450778","0","873575426","4.44429064E+53");
+        mathtest(250,def,"4352626.8","-130338048.E-744560911","4352626.80","4352626.80","-5.67312881E-744560897","-3.33949055E+744560909","","","2.29746322E-7");
+        mathtest(251,def,"437.286960","7.37560835","444.662568","429.911352","3225.25735","59.2882565","59","2.12606735","3.05749452E+18");
+        mathtest(252,def,"8498280.45E+220511522","588617612","8.49828045E+220511528","8.49828045E+220511528","5.00223754E+220511537","1.44376931E+220511520","","","");
+        mathtest(253,def,"-5320387.77","-7673237.46","-12993625.2","2352849.69","4.08245987E+13","0.693369363","0","-5320387.77","-1.30113745E-51609757");
+        mathtest(254,def,"587655375","-4.9748366","587655370","587655380","-2.92348947E+9","-118125563","-118125563","0.7919942","1.42687667E-44");
+        mathtest(255,def,"1266098.44","-2661.64904E-642601142","1266098.44","1266098.44","-3.36990970E-642601133","-4.75681963E+642601144","","","4.92717036E-19");
+        mathtest(256,def,"3.92737463E+482873483","-685.522747","3.92737463E+482873483","3.92737463E+482873483","-2.69230464E+482873486","-5.72902161E+482873480","","","");
+        mathtest(257,def,"22826494.1","986189474.","1.00901597E+9","-963362980","2.25112482E+16","0.0231461547","0","22826494.1","");
+        mathtest(258,def,"-647342.380","-498816386","-499463728","498169044","3.22904986E+14","0.00129775685","0","-647342.380","");
+        mathtest(259,def,"393092373.","-25.7226822","393092347","393092399","-1.01113902E+10","-15281935.6","-15281935","15.5939430","3.49252839E-224");
+        mathtest(260,def,"2.96253492","20.7444888","23.7070237","-17.7819539","61.4562725","0.142810698","0","2.96253492","8.03402246E+9");
+        mathtest(261,def,"53553.3750E+386955423","-732470876","5.35533750E+386955427","5.35533750E+386955427","-3.92262875E+386955436","-7.31133165E+386955418","","","");
+        mathtest(262,def,"-696451.406E-286535917","-73086090.8","-73086090.8","73086090.8","5.09009107E-286535904","9.52919219E-286535920","0","-6.96451406E-286535912","");
+        mathtest(263,def,"1551.29957","-580358622.E+117017265","-5.80358622E+117017273","5.80358622E+117017273","-9.00310081E+117017276","-2.67300168E-117017271","0","1551.29957","7.17506711E-20");
+        mathtest(264,def,"-205123006.E-213752799","-78638468.6","-78638468.6","78638468.6","1.61305591E-213752783","2.60843083E-213752799","0","-2.05123006E-213752791","");
+        mathtest(265,def,"77632.8073","-3378542.88E+677441319","-3.37854288E+677441325","3.37854288E+677441325","-2.62285768E+677441330","-2.29781921E-677441321","0","77632.8073","2.13729331E-15");
+        mathtest(266,def,"3068999.37","2.21006212","3069001.58","3068997.16","6782679.25","1388648.46","1388648","1.02718624","9.41875713E+12");
+        mathtest(267,def,"625524274.","55.2468624","625524329","625524219","3.45582535E+10","11322349.3","11322349","16.7522224","6.21482943E+483");
+        mathtest(268,def,"61269134.9","-845761303.","-784492168","907030438","-5.18190634E+16","-0.0724425848","0","61269134.9","");
+        mathtest(269,def,"-2840.12099","-2856.76731E-82743650","-2840.12099","-2840.12099","8.11356480E-82743644","9.94173022E+82743649","","","-4.36505254E-11");
+        mathtest(270,def,"8.9538781","-7.56603391","1.38784419","16.5199120","-67.7453453","-1.18343087","-1","1.38784419","2.42053061E-8");
+        mathtest(271,def,"-56233547.2","509752530","453518983","-565986077","-2.86651930E+16","-0.110315386","0","-56233547.2","");
+        mathtest(272,def,"-3167.47853E-854859497","-110852115","-110852115","110852115","3.51121694E-854859486","2.85739116E-854859502","0","-3.16747853E-854859494","");
+        mathtest(273,def,"-5652.52092","-632243244.","-632248897","632237592","3.57376816E+12","0.00000894042123","0","-5652.52092","");
+        mathtest(274,def,"-946.009928","820090.66E-589278015","-946.009928","-946.009928","-7.75813906E-589278007","-1.15354311E+589278012","","","6.41454053E+23");
+        mathtest(275,def,"-367.757758","-959.626016","-1327.38377","591.868258","352909.912","0.383230292","0","-367.757758","1.14982199E-2463");
+        mathtest(276,def,"809926721.E-744611554","-67.6560549","-67.6560549","67.6560549","-5.47964467E-744611544","-1.19712378E-744611547","0","8.09926721E-744611546","");
+        mathtest(277,def,"-1725.08555","75586.3031","73861.2176","-77311.3887","-130392839","-0.0228227269","0","-1725.08555","3.70540587E+244657");
+        mathtest(278,def,"2659.84191E+29314492","-74372.4551E+518196680","-7.43724551E+518196684","7.43724551E+518196684","-1.97818973E+547511180","-3.5763804E-488882190","0","2.65984191E+29314495","1.06171811E-205201468");
+        mathtest(279,def,"-91.1431113","12147507.0","12147415.9","-12147598.1","-1.10716158E+9","-0.00000750303015","0","-91.1431113","-1.52417006E+23805759");
+        mathtest(280,def,"-1136778.91E+697783878","-801552569.","-1.13677891E+697783884","-1.13677891E+697783884","9.11188056E+697783892","1.41822128E+697783875","","","");
+        mathtest(281,def,"73123773.0E+433334149","63.3548930","7.31237730E+433334156","7.31237730E+433334156","4.63274881E+433334158","1.15419298E+433334155","","","");
+        mathtest(282,def,"-9765484.8","7979.90802E-234029715","-9765484.80","-9765484.80","-7.79276705E-234029705","-1.22375907E+234029718","","","8.27085614E+55");
+        mathtest(283,def,"-695010288","-8.26582820","-695010296","-695010280","5.74483564E+9","84082353.4","84082353","-3.45024540","1.83683495E-71");
+        mathtest(284,def,"23975643.3E-155955264","-505547.692E+137258948","-5.05547692E+137258953","5.05547692E+137258953","-1.21208311E-18696303","-4.7425087E-293214211","0","2.39756433E-155955257","1.26225952E+779776283");
+        mathtest(285,def,"2862.95921","-32601248.6E-605861333","2862.95921","2862.95921","-9.33360449E-605861323","-8.78174712E+605861328","","","4.26142175E-11");
+        mathtest(286,def,"-13.133518E+246090516","-8.71269925E-945092108","-1.31335180E+246090517","-1.31335180E+246090517","1.14428392E-699001590","","","","");
+        mathtest(287,def,"-34671.2232","817710.762","783039.539","-852381.985","-2.83510323E+10","-0.0424003508","0","-34671.2232","-5.30788828E+3712382");
+        mathtest(288,def,"-22464769","62.4366060","-22464706.6","-22464831.4","-1.40262393E+9","-359801.252","-359801","-15.7245940","6.21042536E+455");
+        mathtest(289,def,"-9458.60887E-563051963","5676056.01","5676056.01","-5676056.01","-5.36875937E-563051953","-1.66640513E-563051966","0","-9.45860887E-563051960","");
+        mathtest(290,def,"-591.924123E-95331874","-134.596188","-134.596188","134.596188","7.96707305E-95331870","4.39777777E-95331874","0","-5.91924123E-95331872","");
+        mathtest(291,def,"-182566085.E+68870646","-960345993.","-1.82566085E+68870654","-1.82566085E+68870654","1.75326608E+68870663","1.9010449E+68870645","","","");
+        mathtest(292,def,"8232.54893","-99822004E+891979845","-9.98220040E+891979852","9.98220040E+891979852","-8.21789532E+891979856","-8.24722867E-891979850","0","8232.54893","6.99289156E-40");
+        mathtest(293,def,"-4336.94317","-819373.601E+563233430","-8.19373601E+563233435","8.19373601E+563233435","3.55357674E+563233439","5.29299841E-563233433","0","-4336.94317","7.98969405E-30");
+        mathtest(294,def,"-2.09044362E-876527908","-6515463.33","-6515463.33","6515463.33","1.36202087E-876527901","3.20843433E-876527915","0","-2.09044362E-876527908","");
+        mathtest(295,def,"-194343.344","1.95929977","-194341.385","-194345.303","-380776.869","-99190.2041","-99190","-0.39981370","3.77693354E+10");
+        mathtest(296,def,"-326002.927","4215.99030","-321786.937","-330218.917","-1.37442518E+9","-77.3253503","-77","-1371.67390","5.51875821E+23243");
+        mathtest(297,def,"-12037.8590E+876429044","314.81827","-1.20378590E+876429048","-1.20378590E+876429048","-3.78973794E+876429050","-3.82374854E+876429045","","","");
+        mathtest(298,def,"21036045.4E-162804809","-91.7149219","-91.7149219","91.7149219","-1.92931926E-162804800","-2.2936339E-162804804","0","2.10360454E-162804802","");
+        mathtest(299,def,"-947019.534","9916.29280","-937103.241","-956935.827","-9.39092299E+9","-95.5013686","-95","-4971.71800","3.76029022E+59261");
+        mathtest(300,def,"-5985.84136","-12.4090184E-12364204","-5985.84136","-5985.84136","7.42784156E-12364200","4.82378313E+12364206","","","-0.000167060893");
+        mathtest(301,def,"-85344379.4","-6783.08669E+218840215","-6.78308669E+218840218","6.78308669E+218840218","5.78898324E+218840226","1.25819385E-218840211","0","-85344379.4","-3.03232347E-56");
+        mathtest(302,def,"-94.1947070E-938257103","15003.240","15003.2400","-15003.2400","-1.41322580E-938257097","-6.27829102E-938257106","0","-9.41947070E-938257102","");
+        mathtest(303,def,"-4846233.6","-8289769.76","-13136003.4","3443536.16","4.01741607E+13","0.584604125","0","-4846233.6","4.25077524E-55420465");
+        mathtest(304,def,"67.9147198","-108373645.E+291715415","-1.08373645E+291715423","1.08373645E+291715423","-7.36016573E+291715424","-6.26671916E-291715422","0","67.9147198","0.0147243485");
+        mathtest(305,def,"1958.77994","5.57285137E+690137826","5.57285137E+690137826","-5.57285137E+690137826","1.09159895E+690137830","3.51486126E-690137824","0","1958.77994","5.64824968E+19");
+        mathtest(306,def,"22780314.3","8805279.83","31585594.1","13975034.5","2.00587042E+14","2.58711986","2","5169754.64","2.39132169E+64785373");
+        mathtest(307,def,"596745.184","197602423.","198199168","-197005678","1.17918294E+14","0.00301992848","0","596745.184","");
+        mathtest(308,def,"171.340497","-480349.924","-480178.584","480521.264","-82303394.7","-0.000356699332","0","171.340497","2.17914102E-1073035");
+        mathtest(309,def,"824.65555","-379287.530","-378462.875","380112.186","-312781567","-0.00217422268","0","824.65555","6.35829256E-1106108");
+        mathtest(310,def,"19.3164031","-9207644.24E+988115069","-9.20764424E+988115075","9.20764424E+988115075","-1.77858568E+988115077","-2.09786592E-988115075","0","19.3164031","2.67093711E-12");
+        mathtest(311,def,"-3123.77646E+177814265","973284435.E+383256112","9.73284435E+383256120","-9.73284435E+383256120","-3.04032301E+561070389","-3.20952062E-205441853","0","-3.12377646E+177814268","");
+        mathtest(312,def,"-850.123915E+662955309","6774849.81E-846576865","-8.50123915E+662955311","-8.50123915E+662955311","-5.75946184E-183621547","","","","");
+        mathtest(313,def,"-23349.7724","2921.35355","-20428.4189","-26271.1260","-68212940.5","-7.99279238","-7","-2900.29755","-5.6705546E+12759");
+        mathtest(314,def,"18886653.3","568707476.","587594129","-549820823","1.07409809E+16","0.0332097855","0","18886653.3","");
+        mathtest(315,def,"-90552818.0","-542.03563E-986606878","-90552818.0","-90552818.0","4.90828538E-986606868","1.67060638E+986606883","","","-1.64244241E-40");
+        mathtest(316,def,"41501126.1E+791838765","-69.6651675E+204268348","4.15011261E+791838772","4.15011261E+791838772","-2.89118290E+996107122","-5.95722763E+587570422","","","");
+        mathtest(317,def,"76783193.3E-271488154","3765.01829E-520346003","7.67831933E-271488147","7.67831933E-271488147","2.89090127E-791834146","2.03938434E+248857853","","","");
+        mathtest(318,def,"4192.9928","987822007E-146560989","4192.99280","4192.99280","4.14193056E-146560977","4.24468454E+146560983","","","1.67973653E+36");
+        mathtest(319,def,"-891845.629","48277955.","47386109.4","-49169800.6","-4.30564831E+13","-0.0184731443","0","-891845.629","-6.32964147E+287267817");
+        mathtest(320,def,"334.901176","-7609296.55E+447340228","-7.60929655E+447340234","7.60929655E+447340234","-2.54836236E+447340237","-4.40121073E-447340233","0","334.901176","6.31926575E-21");
+        mathtest(321,def,"4.49868636","-341880896E-447251873","4.49868636","4.49868636","-1.53801492E-447251864","-1.31586363E+447251865","","","0.010983553");
+        mathtest(322,def,"807615.58","-314286480","-313478865","315094096","-2.53822658E+14","-0.00256967968","0","807615.58","");
+        mathtest(323,def,"-37.7457954","53277.8129E-859225538","-37.7457954","-37.7457954","-2.01101343E-859225532","-7.08471188E+859225534","","","-76620134.1");
+        mathtest(324,def,"-28671081.","98.8819623","-28670982.1","-28671179.9","-2.83505275E+9","-289952.589","-289952","-58.2671904","-1.93625566E+738");
+        mathtest(325,def,"-89752.2106E-469496896","99.9879961","99.9879961","-99.9879961","-8.97414368E-469496890","-8.97629857E-469496894","0","-8.97522106E-469496892","");
+        mathtest(326,def,"-497983567E-13538052","39.4578742","39.4578742","-39.4578742","-1.96493729E-13538042","-1.26206385E-13538045","0","-4.97983567E-13538044","-1.55376543E-527983689");
+        mathtest(327,def,"845739221E-654202565","-33313.1551","-33313.1551","33313.1551","-2.81742418E-654202552","-2.53875449E-654202561","0","8.45739221E-654202557","");
+        mathtest(328,def,"742.332067E+537827843","-4532.70023E-855387414","7.42332067E+537827845","7.42332067E+537827845","-3.36476873E-317559565","","","","");
+        mathtest(329,def,"-893.48654","670389960","670389067","-670390853","-5.98984406E+11","-0.00000133278628","0","-893.48654","");
+        mathtest(330,def,"1.37697162","-915.737474E-351578724","1.37697162","1.37697162","-1.26094451E-351578721","-1.50367508E+351578721","","","0.0561920784");
+        mathtest(331,def,"-65.2839808E+550288403","-121389.306","-6.52839808E+550288404","-6.52839808E+550288404","7.92477712E+550288409","5.37806689E+550288399","","","");
+        mathtest(332,def,"-30346603.E+346067390","792661.544","-3.03466030E+346067397","-3.03466030E+346067397","-2.40545852E+346067403","-3.82844396E+346067391","","","");
+        mathtest(333,def,"-61170.7065","-453731131.","-453792302","453669960","2.77550538E+13","0.000134817081","0","-61170.7065","");
+        mathtest(334,def,"6569.51133","13.8706351E+399434914","1.38706351E+399434915","-1.38706351E+399434915","9.11232944E+399434918","4.73627291E-399434912","0","6569.51133","6569.51133");
+        mathtest(335,def,"300703925.","-3156736.8","297547188","303860662","-9.49243146E+14","-95.2578387","-95","813929.0","4.18609114E-26763256");
+        mathtest(336,def,"192138216E+353011592","-473.080633","1.92138216E+353011600","1.92138216E+353011600","-9.08968688E+353011602","-4.06142637E+353011597","","","");
+        mathtest(337,def,"8607.64794","-34740.3367","-26132.6888","43347.9846","-299032588","-0.247770999","0","8607.64794","1.29604519E-136698");
+        mathtest(338,def,"-67913.8241","-93815.4229","-161729.247","25901.5988","6.37136413E+9","0.723908948","0","-67913.8241","-6.96355203E-453311");
+        mathtest(339,def,"34.5559455","-998799398.","-998799364","998799433","-3.45144576E+10","-3.45974833E-8","0","34.5559455","");
+        mathtest(340,def,"387995.328","990199543.E-124623607","387995.328","387995.328","3.84192796E-124623593","3.91835495E+124623603","","","7.73152138E+55");
+        mathtest(341,def,"-471.09166E-83521919","-441222368","-441222368","441222368","2.07856178E-83521908","1.06769669E-83521925","0","-4.7109166E-83521917","");
+        mathtest(342,def,"-97834.3858","70779789.8E+502166065","7.07797898E+502166072","-7.07797898E+502166072","-6.92469726E+502166077","-1.38223617E-502166068","0","-97834.3858","-8.57907886E+34");
+        mathtest(343,def,"7732331.06","-952719.482E+115325505","-9.52719482E+115325510","9.52719482E+115325510","-7.36674244E+115325517","-8.11606271E-115325505","0","7732331.06","1.30886724E-69");
+        mathtest(344,def,"23.2745547","2.23194245E-221062592","23.2745547","23.2745547","5.19474666E-221062591","1.04279368E+221062593","","","541.704896");
+        mathtest(345,def,"671.083363E-218324205","-787150031","-787150031","787150031","-5.28243290E-218324194","-8.52548227E-218324212","0","6.71083363E-218324203","");
+        mathtest(346,def,"365167.80","-80263.6516","284904.148","445431.452","-2.93097011E+10","-4.54960362","-4","44113.1936","1.27052227E-446468");
+        mathtest(347,def,"-1.43297604E-65129780","56.598733E-135581942","-1.43297604E-65129780","-1.43297604E-65129780","-8.11046283E-200711721","-2.53181646E+70452160","","","8.65831881E-390778680");
+        mathtest(348,def,"416998859.","260.220323E-349285593","416998859","416998859","1.08511578E-349285582","1.60248383E+349285599","","","7.25111178E+25");
+        mathtest(349,def,"7267.17611E+862630607","4021.56861","7.26717611E+862630610","7.26717611E+862630610","2.92254473E+862630614","1.80705014E+862630607","","","");
+        mathtest(350,def,"12.2142434E+593908740","5.27236571E-396050748","1.22142434E+593908741","1.22142434E+593908741","6.43979581E+197857993","2.3166533E+989959488","","","");
+        mathtest(351,def,"-28.591932","-1.79153238E-817064576","-28.5919320","-28.5919320","5.12233720E-817064575","1.59594838E+817064577","","","0.00122324372");
+        mathtest(352,def,"590.849666","753424.306E+277232744","7.53424306E+277232749","-7.53424306E+277232749","4.45160500E+277232752","7.84219014E-277232748","0","590.849666","1.48530607E+22");
+        mathtest(353,def,"1.7270628","-1325026.67","-1325024.94","1325028.40","-2288404.27","-0.00000130341739","0","1.7270628","2.09260036E-314440");
+        mathtest(354,def,"33402118.","-5534.83745","33396583.2","33407652.8","-1.84875294E+11","-6034.8869","-6034","4908.82670","8.14473913E-41645");
+        mathtest(355,def,"-439842.506","-775110.807","-1214953.31","335268.301","3.40926680E+11","0.567457584","0","-439842.506","-1.84678472E-4374182");
+        mathtest(356,def,"-248664.779","-440890.44E+666433944","-4.40890440E+666433949","4.40890440E+666433949","1.09633924E+666433955","5.64005831E-666433945","0","-248664.779","2.61542877E-22");
+        mathtest(357,def,"-14161.9142","8306.49493","-5855.4193","-22468.4091","-117635869","-1.70492059","-1","-5855.41927","1.65573372E+34479");
+        mathtest(358,def,"-6417227.13","16679.8842","-6400547.25","-6433907.01","-1.07038605E+11","-384.728518","-384","-12151.5972","3.58767978E+113546");
+        mathtest(359,def,"514825024.","-25.0446345E-103809457","514825024","514825024","-1.28936046E-103809447","-2.05563002E+103809464","","","7.32860062E-27");
+        mathtest(360,def,"525948196","219450390","745398586","306497806","1.15419537E+17","2.39666102","2","87047416","");
+        mathtest(361,def,"-638509.181","45580189.0E+269212559","4.55801890E+269212566","-4.55801890E+269212566","-2.91033691E+269212572","-1.40084803E-269212561","0","-638509.181","-1.06129405E+29");
+        mathtest(362,def,"330590422","74.359928E+535377965","7.43599280E+535377966","-7.43599280E+535377966","2.45826800E+535377975","4.44581418E-535377959","0","330590422","4.31550742E+59");
+        mathtest(363,def,"-3.48593871E-940579904","-20265.9640E-322988987","-2.02659640E-322988983","2.02659640E-322988983","","1.72009519E-617590921","0","-3.48593871E-940579904","");
+        mathtest(364,def,"-328103480.","-721.949371E-923938665","-328103480","-328103480","2.36874101E-923938654","4.54468822E+923938670","","","-2.4430038E-60");
+        mathtest(365,def,"-1857.01448","19081578.1","19079721.1","-19083435.1","-3.54347668E+10","-0.0000973197537","0","-1857.01448","8.44397087E+62374153");
+        mathtest(366,def,"347.28720E+145930771","-62821.9906E-676564106","3.47287200E+145930773","3.47287200E+145930773","-2.18172732E-530633328","-5.52811518E+822494874","","","5.69990135E-875584642");
+        mathtest(367,def,"-643.211399E+441807003","-50733419.2","-6.43211399E+441807005","-6.43211399E+441807005","3.26323135E+441807013","1.26782584E+441806998","","","");
+        mathtest(368,def,"-53991661.4E-843339554","20718.7346","20718.7346","-20718.7346","-1.11863890E-843339542","-2.60593431E-843339551","0","-5.39916614E-843339547","");
+        mathtest(369,def,"-900181424","-105763982.","-1.00594541E+9","-794417442","9.52067719E+16","8.51122856","8","-54069568","1.32627061E-947045602");
+        mathtest(370,def,"94218.7462E+563233951","19262.6382E+765263890","1.92626382E+765263894","-1.92626382E+765263894","","4.89126906E-202029939","0","9.42187462E+563233955","");
+        mathtest(371,def,"28549.271E+921331828","-2150590.40","2.85492710E+921331832","2.85492710E+921331832","-6.13977881E+921331838","-1.32750853E+921331826","","","");
+        mathtest(372,def,"810.7080E+779625763","5957.94044","8.10708000E+779625765","8.10708000E+779625765","4.83014998E+779625769","1.36071854E+779625762","","","");
+        mathtest(373,def,"-23.7357549E+77116908","351.100649E+864348022","3.51100649E+864348024","-3.51100649E+864348024","-8.33363895E+941464933","-6.7603848E-787231116","0","-2.37357549E+77116909","3.17403853E+308467637");
+        mathtest(374,def,"40216102.2E+292724544","661.025962","4.02161022E+292724551","4.02161022E+292724551","2.65838876E+292724554","6.08389148E+292724548","","","");
+        mathtest(375,def,"22785024.3E+783719168","399.505989E+137478666","2.27850243E+783719175","2.27850243E+783719175","9.10275367E+921197843","5.70329981E+646240506","","","");
+        mathtest(376,def,"515.591819E+821371364","-692137914.E-149498690","5.15591819E+821371366","5.15591819E+821371366","-3.56860646E+671872685","-7.44926421E+970870047","","","");
+        mathtest(377,def,"-536883072E+477911251","624996.301","-5.36883072E+477911259","-5.36883072E+477911259","-3.35549934E+477911265","-8.59017999E+477911253","","","");
+        mathtest(378,def,"-399492.914E-334369192","5202119.87E+442442258","5.20211987E+442442264","-5.20211987E+442442264","-2.07821003E+108073078","-7.67942539E-776811452","0","-3.99492914E-334369187","");
+        mathtest(379,def,"762.071184","9851631.37","9852393.44","-9850869.30","7.50764438E+9","0.0000773548213","0","762.071184","4.02198436E+28392356");
+        mathtest(380,def,"5626.12471","72989818.3","72995444.4","-72984192.2","4.10649820E+11","0.0000770809524","0","5626.12471","1.79814757E+273727098");
+        mathtest(381,def,"-47207260.1","-2073.3152","-47209333.4","-47205186.8","9.78755299E+10","22768.9741","22768","-2019.6264","-6.02238319E-15909");
+        mathtest(382,def,"207.740860","-51.0390090","156.701851","258.779869","-10602.8876","-4.07023694","-4","3.5848240","6.40297515E-119");
+        mathtest(383,def,"-572.812464E-745934021","-182805872.E+604508681","-1.82805872E+604508689","1.82805872E+604508689","1.04713482E-141425329","","0","-5.72812464E-745934019","");
+        mathtest(384,def,"-6418504E+3531407","8459416.1","-6.41850400E+3531413","-6.41850400E+3531413","-5.42967961E+3531420","-7.58740784E+3531406","","","");
+        mathtest(385,def,"280689.531","-128212543","-127931854","128493233","-3.59879186E+13","-0.00218925173","0","280689.531","1.42173809E-698530938");
+        mathtest(386,def,"15.803551E-783422793","239108038E-489186308","2.39108038E-489186300","-2.39108038E-489186300","","6.60937672E-294236493","0","1.5803551E-783422792","");
+        mathtest(387,def,"26.515922","-9418242.96E-105481628","26.5159220","26.5159220","-2.49733396E-105481620","-2.81537885E+105481622","","","1.54326108E-13");
+        mathtest(388,def,"-88.1094557","-54029934.1","-54030022.2","54029846.0","4.76054809E+9","0.0000016307526","0","-88.1094557","5.05289826E-105089439");
+        mathtest(389,def,"6770.68602E-498420397","-6.11248908E-729616908","6.77068602E-498420394","6.77068602E-498420394","","-1.10768067E+231196514","","","");
+        mathtest(390,def,"-892973818.E-781904441","555201299.","555201299","-555201299","-4.95780224E-781904424","-1.60837847E-781904441","0","-8.92973818E-781904433","");
+        mathtest(391,def,"670175802E+135430680","27355195.4","6.70175802E+135430688","6.70175802E+135430688","1.83327900E+135430696","2.44990318E+135430681","","","");
+        mathtest(392,def,"-440950.26","205.477469E-677345561","-440950.260","-440950.260","-9.06053434E-677345554","-2.14597864E+677345564","","","1.94437132E+11");
+        mathtest(393,def,"-8.2335779","573665010E+742722075","5.73665010E+742722083","-5.73665010E+742722083","-4.72331555E+742722084","-1.43525886E-742722083","0","-8.2335779","311552.753");
+        mathtest(394,def,"452943.863","7022.23629","459966.099","445921.627","3.18067883E+9","64.5013703","64","3520.74044","5.54158976E+39716");
+        mathtest(395,def,"62874.1079","-52719654.1","-52656780.0","52782528.2","-3.31470122E+12","-0.0011926123","0","62874.1079","1.18819936E-252973775");
+        mathtest(396,def,"-7428.41741E+609772037","-46024819.3","-7.42841741E+609772040","-7.42841741E+609772040","3.41891569E+609772048","1.61400251E+609772033","","","");
+        mathtest(397,def,"2.27959297","41937.019","41939.2986","-41934.7394","95599.3337","0.0000543575348","0","2.27959297","2.89712423E+15007");
+        mathtest(398,def,"508692408E-671967782","8491989.20","8491989.20","-8491989.20","4.31981043E-671967767","5.99026207E-671967781","0","5.08692408E-671967774","");
+        mathtest(399,def,"940.533705E-379310421","-4.01176961E+464620037","-4.01176961E+464620037","4.01176961E+464620037","-3.77320453E+85309619","-2.34443599E-843930456","0","9.40533705E-379310419","");
+        mathtest(400,def,"97.0649652","-92.4485649E-151989098","97.0649652","97.0649652","-8.97351673E-151989095","-1.0499348E+151989098","","","1.30748728E-18");
+        mathtest(401,def,"297544.536E+360279473","8.80275007","2.97544536E+360279478","2.97544536E+360279478","2.61921019E+360279479","3.38013159E+360279477","","","");
+        mathtest(402,def,"-28861028.","82818.820E+138368758","8.28188200E+138368762","-8.28188200E+138368762","-2.39023628E+138368770","-3.48483932E-138368756","0","-28861028","4.81387013E+59");
+        mathtest(403,def,"36.2496238E+68828039","49243.00","3.62496238E+68828040","3.62496238E+68828040","1.78504022E+68828045","7.36137599E+68828035","","","");
+        mathtest(404,def,"22.447828E-476014683","-56067.5520","-56067.5520","56067.5520","-1.25859476E-476014677","-4.00371109E-476014687","0","2.2447828E-476014682","");
+        mathtest(405,def,"282688.791E+75011952","5.99789051","2.82688791E+75011957","2.82688791E+75011957","1.69553642E+75011958","4.7131369E+75011956","","","5.10330507E+450071744");
+        mathtest(406,def,"-981.860310E-737387002","-994046289","-994046289","994046289","9.76014597E-737386991","9.87741035E-737387009","0","-9.81860310E-737387000","");
+        mathtest(407,def,"-702.91210","-6444903.55","-6445606.46","6444200.64","4.53020069E+9","0.000109064797","0","-702.91210","1.70866703E-18348004");
+        mathtest(408,def,"972456720E-17536823","16371.2590","16371.2590","-16371.2590","1.59203408E-17536810","5.94002404E-17536819","0","9.72456720E-17536815","");
+        mathtest(409,def,"71471.2045","-74303278.4","-74231807.2","74374749.6","-5.31054481E+12","-0.00096188494","0","71471.2045","2.14535374E-360677853");
+        mathtest(410,def,"643.103951E+439708441","788251925.","6.43103951E+439708443","6.43103951E+439708443","5.06927927E+439708452","8.15860933E+439708434","","","");
+        mathtest(411,def,"4.30838663","-7.43110827","-3.12272164","11.7394949","-32.0160875","-0.579777131","0","4.30838663","0.0000362908645");
+        mathtest(412,def,"823.678025","-513.581840E-324453141","823.678025","823.678025","-4.23026076E-324453136","-1.60379118E+324453141","","","2.63762228E-15");
+        mathtest(413,def,"4461.81162","3.22081680","4465.03244","4458.59080","14370.6778","1385.30438","1385","0.98035200","8.8824688E+10");
+        mathtest(414,def,"-4458527.10","-99072605","-103531132","94614077.9","4.41717894E+14","0.0450026231","0","-4458527.10","-6.23928099E-658752715");
+        mathtest(415,def,"-577964618","487424368.","-90540250","-1.06538899E+9","-2.81714039E+17","-1.18575241","-1","-90540250","");
+        mathtest(416,def,"-867.036184","-57.1768608","-924.213045","-809.859323","49574.4072","15.1641096","15","-9.3832720","-3.40312837E-168");
+        mathtest(417,def,"771871921E-330504770","5.34285236","5.34285236","-5.34285236","4.12399771E-330504761","1.44468136E-330504762","0","7.71871921E-330504762","");
+        mathtest(418,def,"-338683.062E-728777518","166441931","166441931","-166441931","-5.63710628E-728777505","-2.03484218E-728777521","0","-3.38683062E-728777513","");
+        mathtest(419,def,"-512568743","-416376887.E-965945295","-512568743","-512568743","2.13421778E-965945278","1.23102112E+965945295","","","1.44874358E-35");
+        mathtest(420,def,"7447181.99","5318438.52","12765620.5","2128743.47","3.96073796E+13","1.40025723","1","2128743.47","1.21634782E+36548270");
+        mathtest(421,def,"54789.8207","93165435.2","93220225.0","-93110645.4","5.10451749E+12","0.000588091716","0","54789.8207","3.80769825E+441483035");
+        mathtest(422,def,"41488.5960","146.797094","41635.3931","41341.7989","6090405.33","282.625459","282","91.815492","6.84738153E+678");
+        mathtest(423,def,"785741.663E+56754529","-461.531732","7.85741663E+56754534","7.85741663E+56754534","-3.62644711E+56754537","-1.70246509E+56754532","","","");
+        mathtest(424,def,"-4.95436786","-3132.4233","-3137.37767","3127.46893","15519.1773","0.0015816406","0","-4.95436786","1.98062422E-2177");
+        mathtest(425,def,"77321.8478E+404626874","82.4797688","7.73218478E+404626878","7.73218478E+404626878","6.37748813E+404626880","9.3746441E+404626876","","","");
+        mathtest(426,def,"-7.99307725","-29153.7273","-29161.7204","29145.7342","233027.994","0.000274169994","0","-7.99307725","1.88688028E-26318");
+        mathtest(427,def,"-61.6337401E+474999517","5254.87092","-6.16337401E+474999518","-6.16337401E+474999518","-3.23877349E+474999522","-1.1728878E+474999515","","","");
+        mathtest(428,def,"-16.4043088","35.0064812","18.6021724","-51.4107900","-574.257128","-0.468607762","0","-16.4043088","-3.33831843E+42");
+        mathtest(429,def,"-8.41156520","-56508958.9","-56508967.3","56508950.5","475328792","1.48853657E-7","0","-8.41156520","-8.86365458E-52263827");
+        mathtest(430,def,"-360165.79E+503559835","-196688.515","-3.60165790E+503559840","-3.60165790E+503559840","7.08404744E+503559845","1.83114805E+503559835","","","");
+        mathtest(431,def,"-653236480.E+565648495","-930.445274","-6.53236480E+565648503","-6.53236480E+565648503","6.07800796E+565648506","7.02068674E+565648500","","","");
+        mathtest(432,def,"-3.73342903","855.029289","851.295860","-858.762718","-3192.19117","-0.00436643408","0","-3.73342903","-1.41988961E+489");
+        mathtest(433,def,"-5.14890532E+562048011","10847127.8E-390918910","-5.14890532E+562048011","-5.14890532E+562048011","-5.58508340E+171129108","-4.74679142E+952966914","","","-5.14890532E+562048011");
+        mathtest(434,def,"653311907","-810.036965E+744537823","-8.10036965E+744537825","8.10036965E+744537825","-5.29206794E+744537834","-8.06521104E-744537818","0","653311907","3.01325171E-71");
+        mathtest(435,def,"-1.31557907","98.9139300E-579281802","-1.31557907","-1.31557907","-1.30129096E-579281800","-1.33002406E+579281800","","","15.529932");
+        mathtest(436,def,"-875192389","-72071565.6","-947263955","-803120823","6.30764857E+16","12.1433797","12","-10333601.8","1.25564408E-644471405");
+        mathtest(437,def,"-72838078.8","-391.398423","-72838470.2","-72837687.4","2.85087092E+10","186097.017","186097","-6.474969","-6.574057E-3075");
+        mathtest(438,def,"29186560.9","-79.7419988","29186481.2","29186640.6","-2.32739470E+9","-366012.407","-366012","32.4352144","6.10050869E-598");
+        mathtest(439,def,"-329801660E-730249465","-6489.9256","-6489.92560","6489.92560","2.14038824E-730249453","5.08174793E-730249461","0","-3.29801660E-730249457","");
+        mathtest(440,def,"91.8429117E+103164883","7131455.16","9.18429117E+103164884","9.18429117E+103164884","6.54973607E+103164891","1.28785654E+103164878","","","");
+        mathtest(441,def,"3943866.38E+150855113","-31927007.3","3.94386638E+150855119","3.94386638E+150855119","-1.25915851E+150855127","-1.23527594E+150855112","","","");
+        mathtest(442,def,"-7002.0468E-795962156","-5937891.05","-5937891.05","5937891.05","4.15773910E-795962146","1.17921443E-795962159","0","-7.0020468E-795962153","");
+        mathtest(443,def,"696504605.","54506.4617","696559111","696450099","3.79640016E+13","12778.386","12778","21037.3974","2.6008532E+481992");
+        mathtest(444,def,"-5115.76467","690.960979E+815126701","6.90960979E+815126703","-6.90960979E+815126703","-3.53479376E+815126707","-7.4038402E-815126701","0","-5115.76467","-9.17009655E+25");
+        mathtest(445,def,"-261.279392","-613.079357","-874.358749","351.799965","160185.002","0.426175484","0","-261.279392","-2.06318841E-1482");
+        mathtest(446,def,"-591407763","-80145822.8","-671553586","-511261940","4.73988618E+16","7.37914644","7","-30387003.4","-2.79334522E-703030105");
+        mathtest(447,def,"615630407","-69.4661869","615630338","615630476","-4.27654969E+10","-8862303.15","-8862303","10.4375693","3.44283102E-607");
+        mathtest(448,def,"1078757.50","27402569.0E-713742082","1078757.50","1078757.50","2.95607268E-713742069","3.93670207E+713742080","","","1.25536924E+18");
+        mathtest(449,def,"-4865.60358E-401116515","66952.5315","66952.5315","-66952.5315","-3.25764477E-401116507","-7.26724363E-401116517","0","-4.86560358E-401116512","");
+        mathtest(450,def,"-87805.3921E-934896690","-1875.14745","-1875.14745","1875.14745","1.64648057E-934896682","4.68258601E-934896689","0","-8.78053921E-934896686","");
+        mathtest(451,def,"-232540609.E+602702520","68.0834223","-2.32540609E+602702528","-2.32540609E+602702528","-1.58321605E+602702530","-3.41552468E+602702526","","","");
+        mathtest(452,def,"-320610803.","-863871235.","-1.18448204E+9","543260432","2.76966450E+17","0.37113263","0","-320610803","");
+        mathtest(453,def,"-303956364E+278139979","229537.920E+479603725","2.29537920E+479603730","-2.29537920E+479603730","-6.97695116E+757743717","-1.3242098E-201463743","0","-3.03956364E+278139987","9.23894712E+556279974");
+        mathtest(454,def,"-439.747348","74.9494457E-353117582","-439.747348","-439.747348","-3.29588200E-353117578","-5.86725284E+353117582","","","-3.17996693E+18");
+        mathtest(455,def,"-89702231.9","1.28993993","-89702230.6","-89702233.2","-115710491","-69539852.1","-69539852","-0.07890964","-89702231.9");
+        mathtest(456,def,"-5856939.14","-6743375.34","-12600314.5","886436.20","3.94955390E+13","0.868547107","0","-5856939.14","-3.29213248E-45636942");
+        mathtest(457,def,"733317.669E+100381349","-13832.6792E+174055607","-1.38326792E+174055611","1.38326792E+174055611","-1.01437481E+274436966","-5.30134227E-73674257","0","7.33317669E+100381354","1.36366549E-100381355");
+        mathtest(458,def,"87.4798787E-80124704","108497.32","108497.320","-108497.320","9.49133239E-80124698","8.06286079E-80124708","0","8.74798787E-80124703","");
+        mathtest(459,def,"-694562052","310681.319E+549445264","3.10681319E+549445269","-3.10681319E+549445269","-2.15787454E+549445278","-2.23560932E-549445261","0","-694562052","-3.35068155E+26");
+        mathtest(460,def,"-9744135.85","1797016.04","-7947119.81","-11541151.9","-1.75103684E+13","-5.42239782","-5","-759055.65","3.83848006E+12558883");
+        mathtest(461,def,"3625.87308","-50.2208536E+658627487","-5.02208536E+658627488","5.02208536E+658627488","-1.82094441E+658627492","-7.21985554E-658627486","0","3625.87308","1.5956477E-18");
+        mathtest(462,def,"365347.52","-3655414.47","-3290066.95","4020761.99","-1.33549661E+12","-0.099946948","0","365347.52","1.02663257E-20333994");
+        mathtest(463,def,"-19706333.6E-816923050","-383858032.","-383858032","383858032","7.56443443E-816923035","5.1337557E-816923052","0","-1.97063336E-816923043","");
+        mathtest(464,def,"-86346.2616","-98.8063785","-86445.0680","-86247.4552","8531561.41","873.893598","873","-88.2931695","-2.05064086E-489");
+        mathtest(465,def,"-445588.160E-496592215","328.822976","328.822976","-328.822976","-1.46519625E-496592207","-1.35510044E-496592212","0","-4.45588160E-496592210","");
+        mathtest(466,def,"-9709213.71","-34.6690137","-9709248.38","-9709179.04","336608863","280054.512","280054","-17.7472602","-2.80903974E-245");
+        mathtest(467,def,"742395536.","-43533.6889","742352002","742439070","-3.23192163E+13","-17053.3569","-17053","15539.1883","5.7622734E-386175");
+        mathtest(468,def,"-878849193.","-5842982.47E-972537342","-878849193","-878849193","5.13510043E-972537327","1.50411061E+972537344","","","2.17027042E-54");
+        mathtest(469,def,"-78014142.1","-624658.522","-78638800.6","-77389483.6","4.87321987E+13","124.890863","124","-556485.372","-7.86063865E-4929918");
+        mathtest(470,def,"857039.371","454.379672","857493.751","856584.991","389421268","1886.17454","1886","79.309608","3.82253101E+2693");
+        mathtest(471,def,"166534010.","-173.012236","166533837","166534183","-2.88124214E+10","-962556.255","-962556","44.164784","4.78620664E-1423");
+        mathtest(472,def,"-810.879063","43776.610","42965.7309","-44587.4891","-35497536.5","-0.0185231123","0","-810.879063","-2.34758691E+127345");
+        mathtest(473,def,"-327.127935","93458944","93458616.9","-93459271.1","-3.05730314E+10","-0.00000350023145","0","-327.127935","2.29323021E+235022854");
+        mathtest(474,def,"539295218.","-9587941.10E-309643098","539295218","539295218","-5.17073079E-309643083","-5.62472394E+309643099","","","4.80545269E-88");
+        mathtest(475,def,"-3862702.65","879616.733","-2983085.92","-4742319.38","-3.39769789E+12","-4.3913474","-4","-344235.718","-3.50650167E+5793941");
+        mathtest(476,def,"-8.25290500","992.091584E+256070257","9.92091584E+256070259","-9.92091584E+256070259","-8.18763759E+256070260","-8.31869268E-256070260","0","-8.25290500","1.46577888E+9");
+        mathtest(477,def,"546875205.","447.52857E+557357101","4.47528570E+557357103","-4.47528570E+557357103","2.44742278E+557357112","1.22198948E-557357095","0","546875205","8.94443542E+34");
+        mathtest(478,def,"177623437","-7779116.14","169844321","185402553","-1.38175335E+15","-22.83337","-22","6482881.92","2.90085309E-64173820");
+        mathtest(479,def,"377204735.","13768.1401","377218503","377190967","5.19340764E+12","27396.9274","27396","12768.8204","2.06065297E+118082");
+        mathtest(480,def,"-2435.49239","-11732.0640E-23331504","-2435.49239","-2435.49239","2.85733526E-23331497","2.07592832E+23331503","","","-0.00041059459");
+        mathtest(481,def,"-6128465.14E-137123294","-5742264.27","-5742264.27","5742264.27","3.51912664E-137123281","1.06725585E-137123294","0","-6.12846514E-137123288","");
+        mathtest(482,def,"-2898065.44","-5.11638105","-2898070.56","-2898060.32","14827607.1","566428.773","566428","-3.95461060","-4.89169151E-33");
+        mathtest(483,def,"1851395.31E+594383160","-550301.475","1.85139531E+594383166","1.85139531E+594383166","-1.01882557E+594383172","-3.36432918E+594383160","","","");
+        mathtest(484,def,"536412589.E+379583977","899.601161","5.36412589E+379583985","5.36412589E+379583985","4.82557388E+379583988","5.96278231E+379583982","","","");
+        mathtest(485,def,"185.85297","867419480.","867419666","-867419294","1.61212487E+11","2.14259622E-7","0","185.85297","");
+        mathtest(486,def,"-5.26631053","-3815941.35E+183291763","-3.81594135E+183291769","3.81594135E+183291769","2.00959321E+183291770","1.38008162E-183291769","0","-5.26631053","0.00130009218");
+        mathtest(487,def,"-8.11587021E-245942806","4553.06753E+943412048","4.55306753E+943412051","-4.55306753E+943412051","-3.69521051E+697469246","","0","-8.11587021E-245942806","");
+        mathtest(488,def,"-405765.352","854963231","854557466","-855368996","-3.46914456E+14","-0.000474599769","0","-405765.352","");
+        mathtest(489,def,"-159.609757","-43356.7567","-43516.3665","43197.1470","6920161.40","0.00368131219","0","-159.609757","-8.95397849E-95519");
+        mathtest(490,def,"-564240.241E-501316672","-557.781977","-557.781977","557.781977","3.14723037E-501316664","1.01157847E-501316669","0","-5.64240241E-501316667","");
+        mathtest(491,def,"318847.270","582107878.E+399633412","5.82107878E+399633420","-5.82107878E+399633420","1.85603508E+399633426","5.47746014E-399633416","0","318847.270","1.0507423E+33");
+        mathtest(492,def,"-4426.59663","95.1096765","-4331.48695","-4521.70631","-421012.173","-46.5420217","-46","-51.5515110","-2.38037379E+346");
+        mathtest(493,def,"6037.28310","578264.105","584301.388","-572226.822","3.49114411E+9","0.010440356","0","6037.28310","3.57279483E+2186324");
+        mathtest(494,def,"-66.9556692","-53.8519404","-120.807610","-13.1037288","3605.69271","1.24332881","1","-13.1037288","2.55554086E-99");
+        mathtest(495,def,"-92486.0222","-59935.8544","-152421.877","-32550.1678","5.54322876E+9","1.5430834","1","-32550.1678","1.83152656E-297647");
+        mathtest(496,def,"852136219.E+917787351","9246221.91","8.52136219E+917787359","8.52136219E+917787359","7.87904058E+917787366","9.21604767E+917787352","","","");
+        mathtest(497,def,"-2120096.16E-269253718","9437.00514","9437.00514","-9437.00514","-2.00073584E-269253708","-2.24657731E-269253716","0","-2.12009616E-269253712","");
+        mathtest(498,def,"-524653.169E-865784226","228054.698","228054.698","-228054.698","-1.19649620E-865784215","-2.30055848E-865784226","0","-5.24653169E-865784221","");
+        mathtest(499,def,"-288193133","-312268737.","-600461870","24075604","8.99937057E+16","0.922901011","0","-288193133","");
+        mathtest(500,def,"-373484759E-113589964","844101958E-852538240","-3.73484759E-113589956","-3.73484759E-113589956","-3.15259216E-966128187","-4.42464036E+738948275","","","3.78602147E-908719644");
+
+        summary("Arithmetic");
+    }
+
+    /* mathtest -- general arithmetic test routine
+     Arg1  is test number
+     Arg2  is MathContext
+     Arg3  is left hand side (LHS)
+     Arg4  is right hand side (RHS)
+     Arg5  is the expected result for add
+     Arg6  is the expected result for subtract
+     Arg7  is the expected result for multiply
+     Arg8  is the expected result for divide
+     Arg9  is the expected result for integerDivide
+     Arg10 is the expected result for remainder
+     Arg11 is the expected result for power
+     
+     For power RHS, 0 is added to the number, any exponent is removed and
+     the number is then rounded to an integer, using format(rhs+0,,0)
+     
+     If an error should result for an operation, the 'expected result' is
+     an empty string.
+     */
+
+    private void mathtest(int test, com.ibm.icu.math.MathContext mc,
+            java.lang.String slhs, java.lang.String srhs, java.lang.String add,
+            java.lang.String sub, java.lang.String mul, java.lang.String div,
+            java.lang.String idv, java.lang.String rem, java.lang.String pow) {
+        com.ibm.icu.math.BigDecimal lhs;
+        com.ibm.icu.math.BigDecimal rhs;
+        java.lang.String res = null;
+        java.lang.String sn = null;
+        int e = 0;
+
+        lhs = new com.ibm.icu.math.BigDecimal(slhs);
+        rhs = new com.ibm.icu.math.BigDecimal(srhs);
+
+        try {
+            res = lhs.add(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $137) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "add", res, add);
+
+        try {
+            res = lhs.subtract(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $138) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "sub", res, sub);
+
+        try {
+            res = lhs.multiply(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $139) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "mul", res, mul);
+
+        try {
+            res = lhs.divide(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $140) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "div", res, div);
+
+        try {
+            res = lhs.divideInteger(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $141) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "idv", res, idv);
+
+        try {
+            res = lhs.remainder(rhs, mc).toString();
+        } catch (java.lang.ArithmeticException $142) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "rem", res, rem);
+
+        try {
+            // prepare an integer from the rhs
+            // in Rexx:
+            //   n=rhs+0
+            //   e=pos('E', n)
+            //   if e>0 then n=left(n,e-1)
+            //   n=format(n,,0)
+
+            sn = rhs.plus(mc).toString();
+            e = sn.indexOf("E", 0);
+            if (e > 0)
+                sn = sn.substring(0, e);
+            sn = (new com.ibm.icu.math.BigDecimal(sn)).format(-1, 0);
+
+            res = lhs.pow(new com.ibm.icu.math.BigDecimal(sn), mc).toString();
+        } catch (java.lang.ArithmeticException $143) {
+            res = "";
+        }
+        mathtestcheck(test, lhs, rhs, "pow", res, pow);
+        return;
+    }
+
+    /* mathtestcheck -- check for general mathtest error
+     Arg1  is test number
+     Arg2  is left hand side (LHS)
+     Arg3  is right hand side (RHS)
+     Arg4  is the operation
+     Arg5  is the actual result
+     Arg6  is the expected result
+     Show error message if a problem, otherwise return quietly
+     */
+
+    private void mathtestcheck(int test, com.ibm.icu.math.BigDecimal lhs,
+            com.ibm.icu.math.BigDecimal rhs, java.lang.String op,
+            java.lang.String got, java.lang.String want) {
+        boolean flag;
+        java.lang.String testnum;
+
+        flag = want.equals((java.lang.Object) got);
+
+        if ((!flag))
+            say(">" + test + ">" + " " + lhs.toString() + " " + op + " "
+                    + rhs.toString() + " " + "=" + " " + want + " " + "[got"
+                    + " " + got + "]");
+
+        testnum = "gen"
+                + right((new com.ibm.icu.math.BigDecimal(test + 1000))
+                        .toString(), 3);
+
+        (new Test(testnum)).ok = flag;
+        return;
+    }
+
+    /* ------------------------------------------------------------------ */
+    /* Support routines and minor classes follow                          */
+    /* ------------------------------------------------------------------ */
+
+    /* ----------------------------------------------------------------- */
+    /* Method called to summarise pending tests                          */
+    /* ----------------------------------------------------------------- */
+    /* Arg1 is section name */
+
+    private void summary(java.lang.String section) {
+        int bad;
+        int count;
+        int i = 0;
+        Test item = null;
+        bad = 0;
+        count = Tests.size();
+        {
+            int $144 = count;
+            i = 0;
+            for (; $144 > 0; $144--, i++) {
+                item = (Test) (Tests.elementAt(i));
+                if ((!item.ok))
+                {
+                    bad++;
+                    errln("Failed:" + " " + item.name);
+                }
+            }
+        }/*i*/
+        totalcount = totalcount + count;
+        Tests = new java.util.Vector(100); // reinitialize
+        if (bad == 0)
+            say("OK" + " " + left(section, 14) + " "
+                    + right("[" + count + " " + "tests]", 12));
+        else
+            throw new DiagException(section + " " + "[failed" + " " + bad + " "
+                    + "of" + " " + count + " " + "tests]", bad);
+    }
+
+    /* ----------------------------------------------------------------- */
+    /* right - Utility to do a 'right' on a Java String                  */
+    /* ----------------------------------------------------------------- */
+    /* Arg1 is string to right-justify */
+    /* Arg2 is desired length */
+
+    private static java.lang.String right(java.lang.String s, int len) {
+        int slen;
+        slen = s.length();
+        if (slen == len)
+            return s; // length just right
+        if (slen > len)
+            return s.substring(slen - len); // truncate on left
+        // too short
+        return (new java.lang.String(new char[len - slen]))
+                .replace('\000', ' ').concat(s);
+    }
+
+    /* ----------------------------------------------------------------- */
+    /* left - Utility to do a 'left' on a Java String                    */
+    /* ----------------------------------------------------------------- */
+    /* Arg1 is string to left-justify */
+    /* Arg2 is desired length */
+
+    private static java.lang.String left(java.lang.String s, int len) {
+        int slen;
+        slen = s.length();
+        if (slen == len)
+            return s; // length just right
+        if (slen > len)
+            return s.substring(0, len); // truncate on right
+        // too short
+        return s.concat((new java.lang.String(new char[len - slen])).replace(
+                '\000', ' '));
+    }
+
+    /* ----------------------------------------------------------------- */
+    /* say - Utility to do a display                                     */
+    /* ----------------------------------------------------------------- */
+    /* Arg1 is string to display, omitted if none */
+    /*         [null or omitted gives blank line] */
+    // this version doesn't heed continuation final character
+    private void say() {
+        say((java.lang.String) null);
+        return;
+    }
+
+    private void say(java.lang.String s) {
+        if (s == null)
+            s = "  ";
+        logln(s);
+    }
+
+    /* ----------------------------------------------------------------- */
+    /* Scaffolding for stand-alone run                                   */
+    /* ----------------------------------------------------------------- */
+    /** Entry point for stand-alone run.  It constructs a
+     *  <code>DiagBigDecimal</code> object and then invokes its
+     *  {@link #diagrun(boolean)} method to run the test
+     *  suite.
+     *
+     * @param args The command line argument string array.
+     *   if the first word is '<code>continue</code>' then try and run
+     *   all tests, otherwise stop after the first failing test group.
+     */
+    public static void main(String[] args) throws Exception {
+        new DiagBigDecimal().run(args);
+    }
+
+    public void TestBigDecimal() {
+        boolean $continue;
+        int fails;
+        $continue = false;
+        fails = diagrun($continue); // and run the tests
+        if (fails != 0) {
+            errln("Diagnostic Tests for math failed. Number of errors: "
+                    + fails);
+        }
+    }
+
+    /* ------------------------------------------------------------------ */
+    /* Test -- represents a test and its status                           */
+    /* ------------------------------------------------------------------ */
+    /* Copyright IBM Corporation 1998, 2000.  All rights reserved.        */
+    /* Author: Mike Cowlishaw                                             */
+    /* ------------------------------------------------------------------ */
+    /* 1998.07.15 Initial version                                         */
+    /* 2000.03.27 Change to javadoc comments                              */
+
+    /**
+     * The <code>Test</code> class is used to record a specific test.
+     * When constructed, it notes the name of the test and adds the test
+     * to the list of tests held by the parent.
+     *
+     * Its <code>ok</flag> is assigned directly to record whether the
+     * test succeeded (1) or failed (0).
+     *
+     * @see     com.ibm.icu.math.BigDecimal
+     * @version 1.00 2000.03.27
+     * @author  Mike Cowlishaw
+     */
+
+    public class Test {
+        //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";
+
+        /* properties shared transient */
+        /** The name of the test. */
+        transient java.lang.String name;
+
+        /** Success flag; will be set to 1 (true) if the test succeeded, or 0
+         * (false) if the test failed.
+         */
+        transient boolean ok;
+
+        /**
+         * Constructs a new <code>Test</code> with a specified name.
+         *
+         * @param testname The <code>String</code> naming the test.
+         */
+
+        public Test(java.lang.String testname) {
+            super();
+            name = testname; // save the name
+            DiagBigDecimal.this.Tests.addElement((java.lang.Object) this); // and add to parent's list
+        }
+    }
+
+    /* ------------------------------------------------------------------ */
+    /* DiagException                                                      */
+    /* ------------------------------------------------------------------ */
+    /* Copyright IBM Corporation 1996, 2000.  All rights reserved.        */
+    /* Author: Mike Cowlishaw                                             */
+    /* ------------------------------------------------------------------ */
+    /* 1996.05.27 Initial version in NetRexx (as DiagX)                   */
+    /* 1998.06.25 Copied from NetRexx test suite                          */
+    /* 1999.07.03 Add fail count                                          */
+    /* 2000.03.27 Change to javadoc comments                              */
+
+    /**
+     * The <code>DiagException</code> class is used to signal the failure
+     * of a test group.  It records the number of failures in the group.
+     *
+     * @see     com.ibm.icu.math.BigDecimal
+     * @version 1.00 2000.03.27
+     * @author  Mike Cowlishaw
+     */
+
+    public static class DiagException extends java.lang.RuntimeException {
+        //private final transient java.lang.String $0 = "DiagBigDecimal.nrx";
+
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 755873172220249188L;
+        /* properties shared transient */
+        /** the count of failed tests in the group which signalled this
+         * exception.
+         */
+        transient int failcount = 0;
+
+        // number of tests which failed
+
+        /**
+         * Constructs a new <code>DiagException</code> with a message and
+         * failure count.  This is thrown when a group of tests fails.
+         *
+         * @param message The <code>String</code> message describing the group.
+         * @param fails   The <code>int</code> number of failed tests in the  group.
+         */
+
+        public DiagException(java.lang.String message, int fails) {
+            super(message);
+            failcount = fails;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/AstroTest.java b/src/com/ibm/icu/dev/test/calendar/AstroTest.java
new file mode 100644
index 0000000..f007bcd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/AstroTest.java
@@ -0,0 +1,382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+// AstroTest
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.util.*;
+import com.ibm.icu.impl.CalendarAstronomer;
+import com.ibm.icu.impl.CalendarAstronomer.*;
+import com.ibm.icu.text.DateFormat;
+
+// TODO: try finding next new moon after  07/28/1984 16:00 GMT
+
+public class AstroTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new AstroTest().run(args);
+    }
+
+    static final double PI = Math.PI;
+
+    public void TestSolarLongitude() {
+        GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+        CalendarAstronomer astro = new CalendarAstronomer();
+        // year, month, day, hour, minute, longitude (radians), ascension(radians), declination(radians)
+        final double tests[][] = {
+            { 1980, 7, 27, 00, 00, 2.166442986535465, 2.2070499713207730, 0.3355704075759270 },
+            { 1988, 7, 27, 00, 00, 2.167484927693959, 2.2081183335606176, 0.3353093444275315 },
+        };
+        logln("");
+        for (int i = 0; i < tests.length; i++) {
+            gc.clear();
+            gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
+
+            astro.setDate(gc.getTime());
+
+            double longitude = astro.getSunLongitude();
+            if (longitude != tests[i][5]) {
+                if ((float)longitude == (float)tests[i][5]) {
+                    logln("longitude(" + longitude +
+                            ") !=  tests[i][5](" + tests[i][5] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: longitude(" + longitude +
+                            ") !=  tests[i][5](" + tests[i][5] +
+                            ") for test " + i);
+                }
+            }
+            Equatorial result = astro.getSunPosition();
+            if (result.ascension != tests[i][6]) {
+                if ((float)result.ascension == (float)tests[i][6]) {
+                    logln("result.ascension(" + result.ascension +
+                            ") !=  tests[i][6](" + tests[i][6] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: result.ascension(" + result.ascension +
+                            ") !=  tests[i][6](" + tests[i][6] +
+                            ") for test " + i);
+                }
+            }
+            if (result.declination != tests[i][7]) {
+                if ((float)result.declination == (float)tests[i][7]) {
+                    logln("result.declination(" + result.declination +
+                            ") !=  tests[i][7](" + tests[i][7] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: result.declination(" + result.declination +
+                            ") !=  tests[i][7](" + tests[i][7] +
+                            ") for test " + i);
+                }
+            }
+        }
+    }
+
+    public void TestLunarPosition() {
+        GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+        CalendarAstronomer astro = new CalendarAstronomer();
+        // year, month, day, hour, minute, ascension(radians), declination(radians)
+        final double tests[][] = {
+            { 1979, 2, 26, 16, 00, -0.3778379118188744, -0.1399698825594198 },
+        };
+        logln("");
+
+        for (int i = 0; i < tests.length; i++) {
+            gc.clear();
+            gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
+            astro.setDate(gc.getTime());
+
+            Equatorial result = astro.getMoonPosition();
+            if (result.ascension != tests[i][5]) {
+                if ((float)result.ascension == (float)tests[i][5]) {
+                    logln("result.ascension(" + result.ascension +
+                            ") !=  tests[i][5](" + tests[i][5] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: result.ascension(" + result.ascension +
+                            ") !=  tests[i][5](" + tests[i][5] +
+                            ") for test " + i);
+                }
+            }
+            if (result.declination != tests[i][6]) {
+                if ((float)result.declination == (float)tests[i][6]) {
+                    logln("result.declination(" + result.declination +
+                            ") !=  tests[i][6](" + tests[i][6] +
+                            ") in double for test " + i);
+                } else {
+                    errln("FAIL: result.declination(" + result.declination +
+                            ") !=  tests[i][6](" + tests[i][6] +
+                            ") for test " + i);
+                }
+            }
+        }
+    }
+
+    public void TestCoordinates() {
+        CalendarAstronomer astro = new CalendarAstronomer();
+        Equatorial result = astro.eclipticToEquatorial(139.686111 * PI/ 180.0, 4.875278* PI / 180.0);
+        logln("result is " + result + ";  " + result.toHmsString());
+    }
+
+    public void TestCoverage() {
+        GregorianCalendar cal = new GregorianCalendar(1958, Calendar.AUGUST, 15);
+        Date then = cal.getTime();
+        CalendarAstronomer myastro = new CalendarAstronomer(then);
+
+        //Latitude:  34 degrees 05' North
+        //Longitude:  118 degrees 22' West
+        double laLat = 34 + 5d/60, laLong = 360 - (118 + 22d/60);
+        CalendarAstronomer myastro2 = new CalendarAstronomer(laLong, laLat);
+
+        double eclLat = laLat * Math.PI / 360;
+        double eclLong = laLong * Math.PI / 360;
+        Ecliptic ecl = new Ecliptic(eclLat, eclLong);
+        logln("ecliptic: " + ecl);
+
+        CalendarAstronomer myastro3 = new CalendarAstronomer();
+        myastro3.setJulianDay((4713 + 2000) * 365.25);
+
+        CalendarAstronomer[] astronomers = {
+            myastro, myastro2, myastro3, myastro2 // check cache
+
+        };
+
+        for (int i = 0; i < astronomers.length; ++i) {
+            CalendarAstronomer astro = astronomers[i];
+
+            logln("astro: " + astro);
+            logln("   time: " + astro.getTime());
+            logln("   date: " + astro.getDate());
+            logln("   cent: " + astro.getJulianCentury());
+            logln("   gw sidereal: " + astro.getGreenwichSidereal());
+            logln("   loc sidereal: " + astro.getLocalSidereal());
+            logln("   equ ecl: " + astro.eclipticToEquatorial(ecl));
+            logln("   equ long: " + astro.eclipticToEquatorial(eclLong));
+            logln("   horiz: " + astro.eclipticToHorizon(eclLong));
+            logln("   sunrise: " + new Date(astro.getSunRiseSet(true)));
+            logln("   sunset: " + new Date(astro.getSunRiseSet(false)));
+            logln("   moon phase: " + astro.getMoonPhase());
+            logln("   moonrise: " + new Date(astro.getMoonRiseSet(true)));
+            logln("   moonset: " + new Date(astro.getMoonRiseSet(false)));
+            logln("   prev summer solstice: " + new Date(astro.getSunTime(CalendarAstronomer.SUMMER_SOLSTICE, false)));
+            logln("   next summer solstice: " + new Date(astro.getSunTime(CalendarAstronomer.SUMMER_SOLSTICE, true)));
+            logln("   prev full moon: " + new Date(astro.getMoonTime(CalendarAstronomer.FULL_MOON, false)));
+            logln("   next full moon: " + new Date(astro.getMoonTime(CalendarAstronomer.FULL_MOON, true)));
+        }
+
+    }
+
+    static final long DAY_MS = 24*60*60*1000L;
+
+    public void TestSunriseTimes() {
+
+        //        logln("Sunrise/Sunset times for San Jose, California, USA");
+        //        CalendarAstronomer astro = new CalendarAstronomer(-121.55, 37.20);
+        //        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+
+        // We'll use a table generated by the UNSO website as our reference
+        // From: http://aa.usno.navy.mil/
+        //-Location: W079 25, N43 40
+        //-Rise and Set for the Sun for 2001
+        //-Zone:  4h West of Greenwich
+        int[] USNO = {
+             6,59, 19,45,
+             6,57, 19,46,
+             6,56, 19,47,
+             6,54, 19,48,
+             6,52, 19,49,
+             6,50, 19,51,
+             6,48, 19,52,
+             6,47, 19,53,
+             6,45, 19,54,
+             6,43, 19,55,
+             6,42, 19,57,
+             6,40, 19,58,
+             6,38, 19,59,
+             6,36, 20, 0,
+             6,35, 20, 1,
+             6,33, 20, 3,
+             6,31, 20, 4,
+             6,30, 20, 5,
+             6,28, 20, 6,
+             6,27, 20, 7,
+             6,25, 20, 8,
+             6,23, 20,10,
+             6,22, 20,11,
+             6,20, 20,12,
+             6,19, 20,13,
+             6,17, 20,14,
+             6,16, 20,16,
+             6,14, 20,17,
+             6,13, 20,18,
+             6,11, 20,19,
+        };
+
+        logln("Sunrise/Sunset times for Toronto, Canada");
+        CalendarAstronomer astro = new CalendarAstronomer(-(79+25/60), 43+40/60);
+
+        // As of ICU4J 2.8 the ICU4J time zones implement pass-through
+        // to the underlying JDK.  Because of variation in the
+        // underlying JDKs, we have to use a fixed-offset
+        // SimpleTimeZone to get consistent behavior between JDKs.
+        // The offset we want is [-18000000, 3600000] (raw, dst).
+        // [aliu 10/15/03]
+
+        // TimeZone tz = TimeZone.getTimeZone("America/Montreal");
+        TimeZone tz = new SimpleTimeZone(-18000000 + 3600000, "Montreal(FIXED)");
+
+        GregorianCalendar cal = new GregorianCalendar(tz, Locale.US);
+        GregorianCalendar cal2 = new GregorianCalendar(tz, Locale.US);
+        cal.clear();
+        cal.set(Calendar.YEAR, 2001);
+        cal.set(Calendar.MONTH, Calendar.APRIL);
+        cal.set(Calendar.DAY_OF_MONTH, 1);
+        cal.set(Calendar.HOUR_OF_DAY, 12); // must be near local noon for getSunRiseSet to work
+
+        DateFormat df = DateFormat.getTimeInstance(cal, DateFormat.MEDIUM, Locale.US);
+        DateFormat df2 = DateFormat.getDateTimeInstance(cal, DateFormat.MEDIUM, DateFormat.MEDIUM, Locale.US);
+        DateFormat day = DateFormat.getDateInstance(cal, DateFormat.MEDIUM, Locale.US);
+
+        for (int i=0; i < 30; i++) {
+            astro.setDate(cal.getTime());
+
+            Date sunrise = new Date(astro.getSunRiseSet(true));
+            Date sunset = new Date(astro.getSunRiseSet(false));
+
+            cal2.setTime(cal.getTime());
+            cal2.set(Calendar.SECOND,      0);
+            cal2.set(Calendar.MILLISECOND, 0);
+
+            cal2.set(Calendar.HOUR_OF_DAY, USNO[4*i+0]);
+            cal2.set(Calendar.MINUTE,      USNO[4*i+1]);
+            Date exprise = cal2.getTime();
+            cal2.set(Calendar.HOUR_OF_DAY, USNO[4*i+2]);
+            cal2.set(Calendar.MINUTE,      USNO[4*i+3]);
+            Date expset = cal2.getTime();
+            // Compute delta of what we got to the USNO data, in seconds
+            int deltarise = Math.abs((int)(sunrise.getTime() - exprise.getTime()) / 1000);
+            int deltaset = Math.abs((int)(sunset.getTime() - expset.getTime()) / 1000);
+
+            // Allow a deviation of 0..MAX_DEV seconds
+            // It would be nice to get down to 60 seconds, but at this
+            // point that appears to be impossible without a redo of the
+            // algorithm using something more advanced than Duffett-Smith.
+            final int MAX_DEV = 180;
+            if (deltarise > MAX_DEV || deltaset > MAX_DEV) {
+                if (deltarise > MAX_DEV) {
+                    errln("FAIL: " + day.format(cal.getTime()) +
+                          ", Sunrise: " + df2.format(sunrise) +
+                          " (USNO " + df.format(exprise) +
+                          " d=" + deltarise + "s)");
+                } else {
+                    logln(day.format(cal.getTime()) +
+                          ", Sunrise: " + df.format(sunrise) +
+                          " (USNO " + df.format(exprise) + ")");
+                }
+                if (deltaset > MAX_DEV) {
+                    errln("FAIL: " + day.format(cal.getTime()) +
+                          ", Sunset: " + df2.format(sunset) +
+                          " (USNO " + df.format(expset) +
+                          " d=" + deltaset + "s)");
+                } else {
+                    logln(day.format(cal.getTime()) +
+                          ", Sunset: " + df.format(sunset) +
+                          " (USNO " + df.format(expset) + ")");
+                }
+            } else {
+                logln(day.format(cal.getTime()) +
+                      ", Sunrise: " + df.format(sunrise) +
+                      " (USNO " + df.format(exprise) + ")" +
+                      ", Sunset: " + df.format(sunset) +
+                      " (USNO " + df.format(expset) + ")");
+            }
+            cal.add(Calendar.DATE, 1);
+        }
+
+//        CalendarAstronomer a = new CalendarAstronomer(-(71+5/60), 42+37/60);
+//        cal.clear();
+//        cal.set(cal.YEAR, 1986);
+//        cal.set(cal.MONTH, cal.MARCH);
+//        cal.set(cal.DATE, 10);
+//        cal.set(cal.YEAR, 1988);
+//        cal.set(cal.MONTH, cal.JULY);
+//        cal.set(cal.DATE, 27);
+//        a.setDate(cal.getTime());
+//        long r = a.getSunRiseSet2(true);
+    }
+
+    public void TestBasics() {
+        // Check that our JD computation is the same as the book's (p. 88)
+        CalendarAstronomer astro = new CalendarAstronomer();
+        GregorianCalendar cal3 = new GregorianCalendar(TimeZone.getTimeZone("GMT"), Locale.US);
+        DateFormat d3 = DateFormat.getDateTimeInstance(cal3, DateFormat.MEDIUM,DateFormat.MEDIUM,Locale.US);
+        cal3.clear();
+        cal3.set(Calendar.YEAR, 1980);
+        cal3.set(Calendar.MONTH, Calendar.JULY);
+        cal3.set(Calendar.DATE, 27);
+        astro.setDate(cal3.getTime());
+        double jd = astro.getJulianDay() - 2447891.5;
+        double exp = -3444;
+        if (jd == exp) {
+            logln(d3.format(cal3.getTime()) + " => " + jd);
+        } else {
+            errln("FAIL: " + d3.format(cal3.getTime()) + " => " + jd +
+                  ", expected " + exp);
+        }
+
+
+//        cal3.clear();
+//        cal3.set(cal3.YEAR, 1990);
+//        cal3.set(cal3.MONTH, Calendar.JANUARY);
+//        cal3.set(cal3.DATE, 1);
+//        cal3.add(cal3.DATE, -1);
+//        astro.setDate(cal3.getTime());
+//        astro.foo();
+    }
+    
+    public void TestMoonAge(){
+        GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0,"GMT"));
+        CalendarAstronomer calastro = new CalendarAstronomer();
+        // more testcases are around the date 05/20/2012
+        //ticket#3785  UDate ud0 = 1337557623000.0;
+        double testcase[][] = {{2012, 5, 20 , 16 , 48, 59},
+                {2012, 5, 20 , 16 , 47, 34},
+                {2012, 5, 21, 00, 00, 00},
+                {2012, 5, 20, 14, 55, 59},
+                {2012, 5, 21, 7, 40, 40},
+                {2023, 9, 25, 10,00, 00},
+                {2008, 7, 7, 15, 00, 33}, 
+                {1832, 9, 24, 2, 33, 41 },
+                {2016, 1, 31, 23, 59, 59},
+                {2099, 5, 20, 14, 55, 59}
+        };
+        // Moon phase angle - Got from http://www.moonsystem.to/checkupe.htm
+        double angle[] = {356.8493418421329, 356.8386760059673, 0.09625415252237701, 355.9986960782416, 3.5714026601303317, 124.26906744384183, 59.80247650195558, 357.54163205513123, 268.41779281511094, 4.82340276581624};
+        double precision = PI/32;
+        for(int i=0; i<testcase.length; i++){
+            gc.clear();
+            String testString = "CASE["+i+"]: Year "+(int)testcase[i][0]+" Month "+(int)testcase[i][1]+" Day "+
+                                    (int)testcase[i][2]+" Hour "+(int)testcase[i][3]+" Minutes "+(int)testcase[i][4]+
+                                    " Seconds "+(int)testcase[i][5];
+            gc.set((int)testcase[i][0],(int)testcase[i][1]-1,(int)testcase[i][2],(int)testcase[i][3],(int)testcase[i][4], (int)testcase[i][5]);
+            calastro.setDate(gc.getTime());
+            double expectedAge = (angle[i]*PI)/180;
+            double got = calastro.getMoonAge();
+            logln(testString);
+            if(!(got>expectedAge-precision && got<expectedAge+precision)){
+                errln("FAIL: expected " + expectedAge +
+                        " got " + got);
+            }else{
+                logln("PASS: expected " + expectedAge +
+                        " got " + got);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java b/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
new file mode 100644
index 0000000..125d4bf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
@@ -0,0 +1,2224 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.*;
+
+/**
+ * @test 1.32 99/11/14
+ * @bug 4031502 4035301 4040996 4051765 4059654 4061476 4070502 4071197 4071385
+ * 4073929 4083167 4086724 4092362 4095407 4096231 4096539 4100311 4103271
+ * 4106136 4108764 4114578 4118384 4125881 4125892 4136399 4141665 4142933
+ * 4145158 4145983 4147269 4149677 4162587 4165343 4166109 4167060 4173516
+ * 4174361 4177484 4197699 4209071 4288792
+ */
+public class CalendarRegression extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CalendarRegression().run(args);
+    }
+    static final String[] FIELD_NAME = {
+            "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+            "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+            "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+            "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+            "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+            "JULIAN_DAY", "MILLISECONDS_IN_DAY"
+        };
+
+
+    /*
+      Synopsis: java.sql.Timestamp constructor works wrong on Windows 95
+
+      ==== Here is the test ==== 
+      public static void main (String args[]) { 
+        java.sql.Timestamp t= new java.sql.Timestamp(0,15,5,5,8,13,123456700); 
+        logln("expected=1901-04-05 05:08:13.1234567"); 
+        logln(" result="+t); 
+      } 
+      
+      ==== Here is the output of the test on Solaris or NT ==== 
+      expected=1901-04-05 05:08:13.1234567 
+      result=1901-04-05 05:08:13.1234567 
+      
+      ==== Here is the output of the test on Windows95 ==== 
+      expected=1901-04-05 05:08:13.1234567 
+      result=1901-04-05 06:08:13.1234567 
+      */
+
+    public void Test4031502() {
+        try{
+            // This bug actually occurs on Windows NT as well, and doesn't
+            // require the host zone to be set; it can be set in Java.
+            String[] ids = TimeZone.getAvailableIDs();
+            boolean bad = false;
+            for (int i=0; i<ids.length; ++i) {
+                TimeZone zone = TimeZone.getTimeZone(ids[i]);
+                GregorianCalendar cal = new GregorianCalendar(zone);
+                cal.clear();
+                cal.set(1900, 15, 5, 5, 8, 13);
+                if (cal.get(Calendar.HOUR) != 5) {
+                    logln("Fail: " + zone.getID() + " " +
+                          zone.useDaylightTime() + "; DST_OFFSET = " +
+                          cal.get(Calendar.DST_OFFSET) / (60*60*1000.0) + "; ZONE_OFFSET = " +
+                          cal.get(Calendar.ZONE_OFFSET) / (60*60*1000.0) + "; getRawOffset() = " +
+                          zone.getRawOffset() / (60*60*1000.0) +
+                          "; HOUR = " + cal.get(Calendar.HOUR));
+                    cal.clear();
+                    cal.set(1900, 15, 5, 5, 8, 13);
+                    if (cal.get(Calendar.HOUR) != 5) {
+                        logln("Fail: " + zone.getID() + " " +
+                              zone.useDaylightTime() + "; DST_OFFSET = " +
+                              cal.get(Calendar.DST_OFFSET) / (60*60*1000.0) + "; ZONE_OFFSET = " +
+                              cal.get(Calendar.ZONE_OFFSET) / (60*60*1000.0) + "; getRawOffset() = " +
+                              zone.getRawOffset() / (60*60*1000.0) +
+                              "; HOUR = " + cal.get(Calendar.HOUR));
+                        cal.clear();
+                        cal.set(1900, 15, 5, 5, 8, 13);
+                        logln("ms = " + cal.getTime() + " (" + cal.getTime().getTime() + ")");
+                        cal.get(Calendar.HOUR);
+                        java.util.GregorianCalendar cal2 = new java.util.GregorianCalendar(java.util.TimeZone.getTimeZone(ids[i]));
+                        cal2.clear();
+                        cal2.set(1900, 15, 5, 5, 8, 13);
+                        cal2.get(Calendar.HOUR);
+                        logln("java.util.GC: " + zone.getID() + " " +
+                            zone.useDaylightTime() + "; DST_OFFSET = " +
+                            cal2.get(Calendar.DST_OFFSET) / (60*60*1000.0) + "; ZONE_OFFSET = " +
+                            cal2.get(Calendar.ZONE_OFFSET) / (60*60*1000.0) + "; getRawOffset() = " +
+                            zone.getRawOffset() / (60*60*1000.0) +
+                            "; HOUR = " + cal.get(Calendar.HOUR));
+                        logln("ms = " + cal2.getTime() + " (" + cal2.getTime().getTime() + ")");
+                        bad = true;
+                    } else if (false) { // Change to true to debug
+                        logln("OK: " + zone.getID() + " " +
+                              zone.useDaylightTime() + " " +
+                              cal.get(Calendar.DST_OFFSET) / (60*60*1000) + " " +
+                              zone.getRawOffset() / (60*60*1000) +
+                              ": HOUR = " + cal.get(Calendar.HOUR));
+                    }
+                }
+                if (bad) errln("TimeZone problems with GC");
+            }
+        } catch (MissingResourceException e) {
+            warnln("Could not load data. "+ e.getMessage());
+        }
+    }
+
+    public void Test4035301() {
+        
+        try {
+            GregorianCalendar c = new GregorianCalendar(98, 8, 7);
+            GregorianCalendar d = new GregorianCalendar(98, 8, 7);
+            if (c.after(d) ||
+                c.after(c) ||
+                c.before(d) ||
+                c.before(c) ||
+                !c.equals(c) ||
+                !c.equals(d))
+                errln("Fail");
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            warnln("Could not load data. "+ e.getMessage());
+        }
+    }
+
+    public void Test4040996() {
+        try {
+            String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
+            SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
+            pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+            pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+            Calendar calendar = new GregorianCalendar(pdt);
+
+            calendar.set(Calendar.MONTH,3);
+            calendar.set(Calendar.DAY_OF_MONTH,18);
+            calendar.set(Calendar.SECOND, 30);
+
+            logln("MONTH: " + calendar.get(Calendar.MONTH));
+            logln("DAY_OF_MONTH: " + 
+                               calendar.get(Calendar.DAY_OF_MONTH));
+            logln("MINUTE: " + calendar.get(Calendar.MINUTE));
+            logln("SECOND: " + calendar.get(Calendar.SECOND));
+
+            calendar.add(Calendar.SECOND,6);
+            //This will print out todays date for MONTH and DAY_OF_MONTH
+            //instead of the date it was set to.
+            //This happens when adding MILLISECOND or MINUTE also
+            logln("MONTH: " + calendar.get(Calendar.MONTH));
+            logln("DAY_OF_MONTH: " + 
+                               calendar.get(Calendar.DAY_OF_MONTH));
+            logln("MINUTE: " + calendar.get(Calendar.MINUTE));
+            logln("SECOND: " + calendar.get(Calendar.SECOND));
+            if (calendar.get(Calendar.MONTH) != 3 ||
+                calendar.get(Calendar.DAY_OF_MONTH) != 18 ||
+                calendar.get(Calendar.SECOND) != 36)
+                errln("Fail: Calendar.add misbehaves");
+        } catch (Exception e) {
+            warnln("Could not load data. "+ e.getMessage());
+        }
+    }
+
+    public void Test4051765() {
+        try {
+            Calendar cal = Calendar.getInstance();
+            cal.setLenient(false);
+            cal.set(Calendar.DAY_OF_WEEK, 0);
+            try {
+                cal.getTime();
+                errln("Fail: DAY_OF_WEEK 0 should be disallowed");
+            }
+            catch (IllegalArgumentException e) {
+                return;
+            }
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            warnln("Could not load data. "+ e.getMessage());
+        }
+    }
+    
+    /*
+     * User error - no bug here public void Test4059524() { // Create calendar
+     * for April 10, 1997 GregorianCalendar calendar = new GregorianCalendar(); //
+     * print out a bunch of interesting things logln("ERA: " +
+     * calendar.get(calendar.ERA)); logln("YEAR: " +
+     * calendar.get(calendar.YEAR)); logln("MONTH: " +
+     * calendar.get(calendar.MONTH)); logln("WEEK_OF_YEAR: " +
+     * calendar.get(calendar.WEEK_OF_YEAR)); logln("WEEK_OF_MONTH: " +
+     * calendar.get(calendar.WEEK_OF_MONTH)); logln("DATE: " +
+     * calendar.get(calendar.DATE)); logln("DAY_OF_MONTH: " +
+     * calendar.get(calendar.DAY_OF_MONTH)); logln("DAY_OF_YEAR: " +
+     * calendar.get(calendar.DAY_OF_YEAR)); logln("DAY_OF_WEEK: " +
+     * calendar.get(calendar.DAY_OF_WEEK)); logln("DAY_OF_WEEK_IN_MONTH: " +
+     * calendar.get(calendar.DAY_OF_WEEK_IN_MONTH)); logln("AM_PM: " +
+     * calendar.get(calendar.AM_PM)); logln("HOUR: " +
+     * calendar.get(calendar.HOUR)); logln("HOUR_OF_DAY: " +
+     * calendar.get(calendar.HOUR_OF_DAY)); logln("MINUTE: " +
+     * calendar.get(calendar.MINUTE)); logln("SECOND: " +
+     * calendar.get(calendar.SECOND)); logln("MILLISECOND: " +
+     * calendar.get(calendar.MILLISECOND)); logln("ZONE_OFFSET: " +
+     * (calendar.get(calendar.ZONE_OFFSET)/(60*60*1000))); logln("DST_OFFSET: " +
+     * (calendar.get(calendar.DST_OFFSET)/(60*60*1000))); calendar = new
+     * GregorianCalendar(1997,3,10); calendar.getTime(); logln("April 10,
+     * 1997"); logln("ERA: " + calendar.get(calendar.ERA)); logln("YEAR: " +
+     * calendar.get(calendar.YEAR)); logln("MONTH: " +
+     * calendar.get(calendar.MONTH)); logln("WEEK_OF_YEAR: " +
+     * calendar.get(calendar.WEEK_OF_YEAR)); logln("WEEK_OF_MONTH: " +
+     * calendar.get(calendar.WEEK_OF_MONTH)); logln("DATE: " +
+     * calendar.get(calendar.DATE)); logln("DAY_OF_MONTH: " +
+     * calendar.get(calendar.DAY_OF_MONTH)); logln("DAY_OF_YEAR: " +
+     * calendar.get(calendar.DAY_OF_YEAR)); logln("DAY_OF_WEEK: " +
+     * calendar.get(calendar.DAY_OF_WEEK)); logln("DAY_OF_WEEK_IN_MONTH: " +
+     * calendar.get(calendar.DAY_OF_WEEK_IN_MONTH)); logln("AM_PM: " +
+     * calendar.get(calendar.AM_PM)); logln("HOUR: " +
+     * calendar.get(calendar.HOUR)); logln("HOUR_OF_DAY: " +
+     * calendar.get(calendar.HOUR_OF_DAY)); logln("MINUTE: " +
+     * calendar.get(calendar.MINUTE)); logln("SECOND: " +
+     * calendar.get(calendar.SECOND)); logln("MILLISECOND: " +
+     * calendar.get(calendar.MILLISECOND)); logln("ZONE_OFFSET: " +
+     * (calendar.get(calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
+     * logln("DST_OFFSET: " + (calendar.get(calendar.DST_OFFSET)/(60*60*1000))); //
+     * in hours }
+     */
+
+    public void Test4059654() {
+   //     try {
+            // work around bug for jdk1.4 on solaris 2.6, which uses funky
+            // timezone names
+            // jdk1.4.1 will drop support for 2.6 so we should be ok when it
+            // comes out
+            java.util.TimeZone javazone = java.util.TimeZone.getTimeZone("GMT");
+            TimeZone icuzone = TimeZone.getTimeZone("GMT");
+
+            GregorianCalendar gc = new GregorianCalendar(icuzone);
+            
+            gc.set(1997, 3, 1, 15, 16, 17); // April 1, 1997
+
+            gc.set(Calendar.HOUR, 0);
+            gc.set(Calendar.AM_PM, Calendar.AM);
+            gc.set(Calendar.MINUTE, 0);
+            gc.set(Calendar.SECOND, 0);
+            gc.set(Calendar.MILLISECOND, 0);
+
+            Date cd = gc.getTime();
+            java.util.Calendar cal = java.util.Calendar.getInstance(javazone);
+            cal.clear();
+            cal.set(1997, 3, 1, 0, 0, 0);
+            Date exp = cal.getTime();
+            if (!cd.equals(exp))
+                errln("Fail: Calendar.set broken. Got " + cd + " Want " + exp);
+   //     } catch (RuntimeException e) {
+            // TODO Auto-generated catch block
+   //         e.printStackTrace();
+  //      }
+    }
+
+    public void Test4061476() {
+        SimpleDateFormat fmt = new SimpleDateFormat("ddMMMyy", Locale.UK);
+        Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"), 
+                                                     Locale.UK);
+        fmt.setCalendar(cal);
+        try
+            {
+                Date date = fmt.parse("29MAY97");
+                cal.setTime(date);
+            }
+        catch (Exception e) {
+            System.out.print("");
+        }
+        cal.set(Calendar.HOUR_OF_DAY, 13);
+        logln("Hour: "+cal.get(Calendar.HOUR_OF_DAY));
+        cal.add(Calendar.HOUR_OF_DAY, 6);
+        logln("Hour: "+cal.get(Calendar.HOUR_OF_DAY));
+        if (cal.get(Calendar.HOUR_OF_DAY) != 19)
+            errln("Fail: Want 19 Got " + cal.get(Calendar.HOUR_OF_DAY));
+    }
+
+    public void Test4070502() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, 0, 30);
+        Date d = getAssociatedDate(tempcal.getTime());
+        Calendar cal = new GregorianCalendar();
+        cal.setTime(d);
+        if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY ||
+            cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
+            errln("Fail: Want weekday Got " + d);
+    }
+
+    /**
+     * Get the associated date starting from a specified date NOTE: the
+     * unnecessary "getTime()'s" below are a work-around for a bug in jdk 1.1.3
+     * (and probably earlier versions also)
+     * <p>
+     * 
+     * @param d
+     *            The date to start from
+     */
+    public static Date getAssociatedDate(Date d) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setTime(d);
+        //cal.add(field, amount); //<-- PROBLEM SEEN WITH field = DATE,MONTH
+        // cal.getTime(); // <--- REMOVE THIS TO SEE BUG
+        while (true) {
+            int wd = cal.get(Calendar.DAY_OF_WEEK);
+            if (wd == Calendar.SATURDAY || wd == Calendar.SUNDAY) {
+                cal.add(Calendar.DATE, 1);
+                // cal.getTime();
+            }
+            else
+                break;
+        }
+        return cal.getTime();
+    }
+
+    public void Test4071197() {
+        dowTest(false);
+        dowTest(true);
+    }
+
+    void dowTest(boolean lenient) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.set(1997, Calendar.AUGUST, 12); // Wednesday
+        // cal.getTime(); // Force update
+        cal.setLenient(lenient);
+        cal.set(1996, Calendar.DECEMBER, 1); // Set the date to be December 1,
+                                             // 1996
+        int dow = cal.get(Calendar.DAY_OF_WEEK);
+        int min = cal.getMinimum(Calendar.DAY_OF_WEEK);
+        int max = cal.getMaximum(Calendar.DAY_OF_WEEK);
+        logln(cal.getTime().toString());
+        if (min != Calendar.SUNDAY || max != Calendar.SATURDAY)
+            errln("FAIL: Min/max bad");
+        if (dow < min || dow > max) 
+            errln("FAIL: Day of week " + dow + " out of range");
+        if (dow != Calendar.SUNDAY) 
+            errln("FAIL: Day of week should be SUNDAY Got " + dow);
+    }
+
+    public void Test4071385() {
+    // work around bug for jdk1.4 on solaris 2.6, which uses funky timezone
+    // names
+    // jdk1.4.1 will drop support for 2.6 so we should be ok when it comes out
+    java.util.TimeZone javazone = java.util.TimeZone.getTimeZone("GMT");
+    TimeZone icuzone = TimeZone.getTimeZone("GMT");
+
+        Calendar cal = Calendar.getInstance(icuzone);
+        java.util.Calendar tempcal = java.util.Calendar.getInstance(javazone);
+        tempcal.clear();
+        tempcal.set(1998, Calendar.JUNE, 24);
+        cal.setTime(tempcal.getTime());
+        cal.set(Calendar.MONTH, Calendar.NOVEMBER); // change a field
+        logln(cal.getTime().toString());
+        tempcal.set(1998, Calendar.NOVEMBER, 24);
+        if (!cal.getTime().equals(tempcal.getTime()))
+            errln("Fail");
+    }
+
+    public void Test4073929() {
+        GregorianCalendar foo1 = new GregorianCalendar(1997, 8, 27);
+        foo1.add(Calendar.DAY_OF_MONTH, +1);
+        int testyear = foo1.get(Calendar.YEAR);
+        int testmonth = foo1.get(Calendar.MONTH);
+        int testday = foo1.get(Calendar.DAY_OF_MONTH);
+        if (testyear != 1997 ||
+            testmonth != 8 ||
+            testday != 28)
+            errln("Fail: Calendar not initialized");
+    }
+
+    public void Test4083167() {
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+            Date firstDate = new Date();
+            Calendar cal = new GregorianCalendar();
+            cal.setTime(firstDate);
+            long firstMillisInDay = cal.get(Calendar.HOUR_OF_DAY) * 3600000L +
+                cal.get(Calendar.MINUTE) * 60000L +
+                cal.get(Calendar.SECOND) * 1000L +
+                cal.get(Calendar.MILLISECOND);
+            
+            logln("Current time: " + firstDate.toString());
+
+            for (int validity=0; validity<30; validity++) {
+                Date lastDate = new Date(firstDate.getTime() +
+                                         (long)validity*1000*24*60*60);
+                cal.setTime(lastDate);
+                long millisInDay = cal.get(Calendar.HOUR_OF_DAY) * 3600000L +
+                    cal.get(Calendar.MINUTE) * 60000L +
+                    cal.get(Calendar.SECOND) * 1000L +
+                    cal.get(Calendar.MILLISECOND);
+                if (firstMillisInDay != millisInDay) 
+                    errln("Day has shifted " + lastDate);
+            }
+        }
+        finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+
+    public void Test4086724() {
+        SimpleDateFormat date;
+        TimeZone saveZone = TimeZone.getDefault();
+        Locale saveLocale = Locale.getDefault();
+        try {
+            Locale.setDefault(Locale.UK); 
+            TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
+            date=new SimpleDateFormat("dd MMM yyy (zzzz) 'is in week' ww"); 
+            Calendar cal=Calendar.getInstance(); 
+            cal.set(1997,Calendar.SEPTEMBER,30); 
+            Date now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1997,Calendar.JANUARY,1); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1997,Calendar.JANUARY,8); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+            cal.set(1996,Calendar.DECEMBER,31); 
+            now=cal.getTime(); 
+            logln(date.format(now)); 
+        }
+        finally {
+            Locale.setDefault(saveLocale);
+            TimeZone.setDefault(saveZone);
+        }
+        logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+    }
+
+    public void Test4092362() {
+        GregorianCalendar cal1 = new GregorianCalendar(1997, 10, 11, 10, 20, 40); 
+        /*
+         * cal1.set( Calendar.YEAR, 1997 ); cal1.set( Calendar.MONTH, 10 );
+         * cal1.set( Calendar.DATE, 11 ); cal1.set( Calendar.HOUR, 10 );
+         * cal1.set( Calendar.MINUTE, 20 ); cal1.set( Calendar.SECOND, 40 );
+         */
+
+        logln( " Cal1 = " + cal1.getTime().getTime() ); 
+        logln( " Cal1 time in ms = " + cal1.get(Calendar.MILLISECOND) ); 
+        for( int k = 0; k < 100 ; k++ ) {
+            System.out.print(""); 
+        }
+
+        GregorianCalendar cal2 = new GregorianCalendar(1997, 10, 11, 10, 20, 40); 
+        /*
+         * cal2.set( Calendar.YEAR, 1997 ); cal2.set( Calendar.MONTH, 10 );
+         * cal2.set( Calendar.DATE, 11 ); cal2.set( Calendar.HOUR, 10 );
+         * cal2.set( Calendar.MINUTE, 20 ); cal2.set( Calendar.SECOND, 40 );
+         */
+
+        logln( " Cal2 = " + cal2.getTime().getTime() ); 
+        logln( " Cal2 time in ms = " + cal2.get(Calendar.MILLISECOND) ); 
+        if( !cal1.equals( cal2 ) ) 
+            errln("Fail: Milliseconds randomized");
+    }
+
+    public void Test4095407() {
+        GregorianCalendar a = new GregorianCalendar(1997,Calendar.NOVEMBER, 13);
+        int dow = a.get(Calendar.DAY_OF_WEEK);
+        if (dow != Calendar.THURSDAY)
+            errln("Fail: Want THURSDAY Got " + dow);
+    }
+
+    public void Test4096231() {
+        TimeZone GMT = TimeZone.getTimeZone("GMT");
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int sec = 0, min = 0, hr = 0, day = 1, month = 10, year = 1997;
+                            
+        Calendar cal1 = new GregorianCalendar(PST);
+        cal1.setTime(new Date(880698639000L));
+        int p;
+        logln("PST 1 is: " + (p=cal1.get(Calendar.HOUR_OF_DAY)));
+        cal1.setTimeZone(GMT);
+        // Issue 1: Changing the timezone doesn't change the
+        //          represented time.
+        int h1,h2;
+        logln("GMT 1 is: " + (h1=cal1.get(Calendar.HOUR_OF_DAY)));
+        cal1.setTime(new Date(880698639000L));
+        logln("GMT 2 is: " + (h2=cal1.get(Calendar.HOUR_OF_DAY)));
+        // Note: This test had a bug in it. It wanted h1!=h2, when
+        // what was meant was h1!=p. Fixed this concurrent with fix
+        // to 4177484.
+        if (p == h1 || h1 != h2)
+            errln("Fail: Hour same in different zones");
+
+        Calendar cal2 = new GregorianCalendar(GMT);
+        Calendar cal3 = new GregorianCalendar(PST);
+        cal2.set(Calendar.MILLISECOND, 0);
+        cal3.set(Calendar.MILLISECOND, 0);
+
+        cal2.set(cal1.get(Calendar.YEAR),
+                 cal1.get(Calendar.MONTH),
+                 cal1.get(Calendar.DAY_OF_MONTH),
+                 cal1.get(Calendar.HOUR_OF_DAY),
+                 cal1.get(Calendar.MINUTE),
+                 cal1.get(Calendar.SECOND));
+
+        long t1,t2,t3,t4;
+        logln("RGMT 1 is: " + (t1=cal2.getTime().getTime()));
+        cal3.set(year, month, day, hr, min, sec);
+        logln("RPST 1 is: " + (t2=cal3.getTime().getTime()));
+        cal3.setTimeZone(GMT);
+        logln("RGMT 2 is: " + (t3=cal3.getTime().getTime()));
+        cal3.set(cal1.get(Calendar.YEAR),
+                 cal1.get(Calendar.MONTH),
+                 cal1.get(Calendar.DAY_OF_MONTH),
+                 cal1.get(Calendar.HOUR_OF_DAY),
+                 cal1.get(Calendar.MINUTE),
+                 cal1.get(Calendar.SECOND));
+        // Issue 2: Calendar continues to use the timezone in its
+        //          constructor for set() conversions, regardless
+        //          of calls to setTimeZone()
+        logln("RGMT 3 is: " + (t4=cal3.getTime().getTime()));
+        if (t1 == t2 ||
+            t1 != t4 ||
+            t2 != t3)
+            errln("Fail: Calendar zone behavior faulty");
+    }
+
+    public void Test4096539() {
+        int[] y = {31,28,31,30,31,30,31,31,30,31,30,31};
+
+        for (int x=0;x<12;x++) {
+            GregorianCalendar gc = new 
+                GregorianCalendar(1997,x,y[x]);
+            int m1,m2;
+            log((m1=gc.get(Calendar.MONTH)+1)+"/"+
+                             gc.get(Calendar.DATE)+"/"+gc.get(Calendar.YEAR)+
+                             " + 1mo = ");
+
+            gc.add(Calendar.MONTH, 1);
+            logln((m2=gc.get(Calendar.MONTH)+1)+"/"+
+                               gc.get(Calendar.DATE)+"/"+gc.get(Calendar.YEAR)
+                               );
+            int m = (m1 % 12) + 1;
+            if (m2 != m)
+                errln("Fail: Want " + m + " Got " + m2);
+        }
+        
+    }
+
+    public void Test4100311() {
+        GregorianCalendar cal = (GregorianCalendar)Calendar.getInstance();
+        cal.set(Calendar.YEAR, 1997);
+        cal.set(Calendar.DAY_OF_YEAR, 1);
+        Date d = cal.getTime();             // Should be Jan 1
+        logln(d.toString());
+        if (cal.get(Calendar.DAY_OF_YEAR) != 1)
+            errln("Fail: DAY_OF_YEAR not set");
+    }
+
+    public void Test4103271() {
+        SimpleDateFormat sdf = new SimpleDateFormat(); 
+        int numYears=40, startYear=1997, numDays=15; 
+        String output, testDesc; 
+        GregorianCalendar testCal = (GregorianCalendar)Calendar.getInstance(); 
+        testCal.clear();
+        sdf.setCalendar(testCal); 
+        sdf.applyPattern("d MMM yyyy"); 
+        boolean fail = false;
+        for (int firstDay=1; firstDay<=2; firstDay++) { 
+            for (int minDays=1; minDays<=7; minDays++) { 
+                testCal.setMinimalDaysInFirstWeek(minDays); 
+                testCal.setFirstDayOfWeek(firstDay); 
+                testDesc = ("Test" + String.valueOf(firstDay) + String.valueOf(minDays)); 
+                logln(testDesc + " => 1st day of week=" +
+                                   String.valueOf(firstDay) +
+                                   ", minimum days in first week=" +
+                                   String.valueOf(minDays)); 
+                for (int j=startYear; j<=startYear+numYears; j++) { 
+                    testCal.set(j,11,25); 
+                    for(int i=0; i<numDays; i++) { 
+                        testCal.add(Calendar.DATE,1); 
+                        String calWOY; 
+                        int actWOY = testCal.get(Calendar.WEEK_OF_YEAR);
+                        if (actWOY < 1 || actWOY > 53) {
+                            Date d = testCal.getTime(); 
+                            calWOY = String.valueOf(actWOY); 
+                            output = testDesc + " - " + sdf.format(d) + "\t"; 
+                            output = output + "\t" + calWOY; 
+                            logln(output); 
+                            fail = true;
+                        }
+                    } 
+                } 
+            } 
+        } 
+
+        int[] DATA = {
+            3, 52, 52, 52, 52, 52, 52, 52,
+                1,  1,  1,  1,  1,  1,  1,
+                2,  2,  2,  2,  2,  2,  2,
+            4, 52, 52, 52, 52, 52, 52, 52,
+               53, 53, 53, 53, 53, 53, 53,
+                1,  1,  1,  1,  1,  1,  1,
+        };
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int j=0; j<DATA.length; j+=22) {
+            logln("Minimal days in first week = " + DATA[j] +
+                               "  Week starts on Sunday");
+            testCal.setMinimalDaysInFirstWeek(DATA[j]);
+            testCal.set(1997, Calendar.DECEMBER, 21);
+            for (int i=0; i<21; ++i) {
+                int woy = testCal.get(Calendar.WEEK_OF_YEAR);
+                log(testCal.getTime() + " " + woy);
+                if (woy != DATA[j + 1 + i]) {
+                    log(" ERROR");
+                    fail = true;
+                }
+                //logln();
+                
+                // Now compute the time from the fields, and make sure we
+                // get the same answer back. This is a round-trip test.
+                Date save = testCal.getTime();
+                testCal.clear();
+                testCal.set(Calendar.YEAR, DATA[j+1+i] < 25 ? 1998 : 1997);
+                testCal.set(Calendar.WEEK_OF_YEAR, DATA[j+1+i]);
+                testCal.set(Calendar.DAY_OF_WEEK, (i%7) + Calendar.SUNDAY);
+                if (!testCal.getTime().equals(save)) {
+                    logln("  Parse failed: " + testCal.getTime());
+                    fail= true;
+                }
+
+                testCal.setTime(save);
+                testCal.add(Calendar.DAY_OF_MONTH, 1);
+            }
+        }
+
+        Date d[] = new Date[8];
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[0] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 10);
+        d[1] = tempcal.getTime();
+        tempcal.set(1998, Calendar.DECEMBER, 31);
+        d[2] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 1);
+        d[3] = tempcal.getTime();
+        // Test field disambiguation with a few special hard-coded cases.
+        // This shouldn't fail if the above cases aren't failing.
+        Object[] DISAM = {
+            new Integer(1998), new Integer(1), new Integer(Calendar.SUNDAY),
+                d[0],
+            new Integer(1998), new Integer(2), new Integer(Calendar.SATURDAY),
+                d[1],
+            new Integer(1998), new Integer(53), new Integer(Calendar.THURSDAY),
+                d[2],
+            new Integer(1998), new Integer(53), new Integer(Calendar.FRIDAY),
+                d[3],
+        };
+        testCal.setMinimalDaysInFirstWeek(3);
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int i=0; i<DISAM.length; i+=4) {
+            int y = ((Integer)DISAM[i]).intValue();
+            int woy = ((Integer)DISAM[i+1]).intValue();
+            int dow = ((Integer)DISAM[i+2]).intValue();
+            Date exp = (Date)DISAM[i+3];
+            testCal.clear();
+            testCal.set(Calendar.YEAR, y);
+            testCal.set(Calendar.WEEK_OF_YEAR, woy);
+            testCal.set(Calendar.DAY_OF_WEEK, dow);
+            log(y + "-W" + woy +
+                             "-DOW" + dow + " expect:" + exp +
+                             " got:" + testCal.getTime());
+            if (!testCal.getTime().equals(exp)) {
+                log("  FAIL");
+                fail = true;
+            }
+            //logln();
+        }
+
+        // Now try adding and rolling
+        Object ADD = new Object();
+        Object ROLL = new Object();
+        tempcal.set(1998, Calendar.DECEMBER, 25);
+        d[0] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 1);
+        d[1] = tempcal.getTime();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[2] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 4);
+        d[3] = tempcal.getTime();
+        tempcal.set(1998, Calendar.DECEMBER, 27);
+        d[4] = tempcal.getTime();
+        tempcal.set(1997, Calendar.DECEMBER, 28);
+        d[5] = tempcal.getTime();
+        tempcal.set(1999, Calendar.JANUARY, 2);
+        d[6] = tempcal.getTime();
+        tempcal.set(1998, Calendar.JANUARY, 3);
+        d[7] = tempcal.getTime();
+        
+        Object[] ADDROLL = {
+            ADD, new Integer(1), d[0], d[1],
+            ADD, new Integer(1), d[2], d[3],
+            ROLL, new Integer(1), d[4], d[5],
+            ROLL, new Integer(1), d[6], d[7],
+        };
+        testCal.setMinimalDaysInFirstWeek(3);
+        testCal.setFirstDayOfWeek(Calendar.SUNDAY);
+        for (int i=0; i<ADDROLL.length; i+=4) {
+            int amount = ((Integer)ADDROLL[i+1]).intValue();
+            Date before = (Date)ADDROLL[i+2];
+            Date after = (Date)ADDROLL[i+3];
+
+            testCal.setTime(before);
+            if (ADDROLL[i] == ADD) testCal.add(Calendar.WEEK_OF_YEAR, amount);
+            else testCal.roll(Calendar.WEEK_OF_YEAR, amount);
+            log((ADDROLL[i]==ADD?"add(WOY,":"roll(WOY,") +
+                             amount + ") " + before + " => " +
+                             testCal.getTime());
+            if (!after.equals(testCal.getTime())) {
+                logln("  exp:" + after + "  FAIL");
+                fail = true;
+            }
+            else logln(" ok");
+
+            testCal.setTime(after);
+            if (ADDROLL[i] == ADD) testCal.add(Calendar.WEEK_OF_YEAR, -amount);
+            else testCal.roll(Calendar.WEEK_OF_YEAR, -amount);
+            log((ADDROLL[i]==ADD?"add(WOY,":"roll(WOY,") +
+                             (-amount) + ") " + after + " => " +
+                             testCal.getTime());
+            if (!before.equals(testCal.getTime())) {
+                logln("  exp:" + before + "  FAIL");
+                fail = true;
+            }
+            else logln(" ok");
+        }
+
+        if (fail) errln("Fail: Week of year misbehaving");
+    } 
+
+    public void Test4106136() {
+        Locale saveLocale = Locale.getDefault();
+        String[] names = { "Calendar", "DateFormat", "NumberFormat" };
+        try {
+            Locale[] locales = { Locale.CHINESE, Locale.CHINA };
+            for (int i=0; i<locales.length; ++i) {
+                Locale.setDefault(locales[i]);
+                int[] n = {
+                    Calendar.getAvailableLocales().length,
+                    DateFormat.getAvailableLocales().length,
+                    NumberFormat.getAvailableLocales().length
+                };
+                for (int j=0; j<n.length; ++j) {
+                    if (n[j] == 0)
+                        errln("Fail: " + names[j] + " has no locales for " + locales[i]);
+                }
+            }
+        }
+        finally {
+            Locale.setDefault(saveLocale);
+        }
+    }
+
+    public void Test4108764() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, Calendar.FEBRUARY, 15, 12, 00, 00);
+        Date d00 = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 15, 12, 00, 56);
+        Date d01 = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 15, 12, 34, 00);
+        Date d10 = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 15, 12, 34, 56);
+        Date d11 = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 15, 12, 34, 56);
+        Date dM  = tempcal.getTime();
+        tempcal.clear();
+        tempcal.set(1970, Calendar.JANUARY, 1);
+        Date epoch = tempcal.getTime();
+
+        Calendar cal = Calendar.getInstance(); 
+        cal.setTime(d11);
+
+        cal.clear( Calendar.MINUTE ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d01)) {
+            errln("Fail: " + d11 + " clear(MINUTE) => expect " +
+                  d01 + ", got " + cal.getTime());
+        }
+
+        cal.set( Calendar.SECOND, 0 ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d00))
+            errln("Fail: set(SECOND, 0) broken");
+
+        cal.setTime(d11);
+        cal.set( Calendar.SECOND, 0 ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d10))
+            errln("Fail: set(SECOND, 0) broken #2");
+
+        cal.clear( Calendar.MINUTE ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(d00))
+            errln("Fail: clear(MINUTE) broken #2");
+
+        cal.clear();
+        logln(cal.getTime().toString());
+        if (!cal.getTime().equals(epoch))
+            errln("Fail: after clear() expect " + epoch + ", got " + cal.getTime());
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        // This test case does not work well with JRE1.3 with
+//##        // the timezone update for US 2007 rule.  Java 1.3 only
+//##        // supports single DST rule for all years.  March 15
+//##        // was not in DST before, but with the new rule, it is
+//##        // in DST.
+//#else
+        cal.setTime(d11);
+        cal.clear( Calendar.MONTH ); 
+        logln(cal.getTime().toString()); 
+        if (!cal.getTime().equals(dM)) {
+            errln("Fail: " + d11 + " clear(MONTH) => expect " +
+                  dM + ", got " + cal.getTime());
+        }
+//#endif
+    }
+
+    public void Test4114578() {
+        int ONE_HOUR = 60*60*1000;
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("PST"));
+        
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, Calendar.APRIL, 5, 1, 0);
+        long onset = tempcal.getTime().getTime() + ONE_HOUR;
+        tempcal.set(1998, Calendar.OCTOBER, 25, 0, 0);
+        long cease = tempcal.getTime().getTime() + 2*ONE_HOUR;
+
+        boolean fail = false;
+        
+        final int ADD = 1;
+        final int ROLL = 2;
+
+        long[] DATA = {
+            // Start Action Amt Expected_change
+            onset - ONE_HOUR,   ADD,      1,     ONE_HOUR,
+            onset,              ADD,     -1,    -ONE_HOUR,
+            onset - ONE_HOUR,   ROLL,     1,     ONE_HOUR,
+            onset,              ROLL,    -1,    -ONE_HOUR,
+            cease - ONE_HOUR,   ADD,      1,     ONE_HOUR,
+            cease,              ADD,     -1,    -ONE_HOUR,
+            cease - ONE_HOUR,   ROLL,     1,     ONE_HOUR,
+            cease,              ROLL,    -1,    -ONE_HOUR,
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            Date date = new Date(DATA[i]);
+            int amt = (int) DATA[i+2];
+            long expectedChange = DATA[i+3];
+            
+            log(date.toString());
+            cal.setTime(date);
+
+            switch ((int) DATA[i+1]) {
+            case ADD:
+                log(" add (HOUR," + (amt<0?"":"+")+amt + ")= ");
+                cal.add(Calendar.HOUR, amt);
+                break;
+            case ROLL:
+                log(" roll(HOUR," + (amt<0?"":"+")+amt + ")= ");
+                cal.roll(Calendar.HOUR, amt);
+                break;
+            }
+
+            log(cal.getTime().toString());
+
+            long change = cal.getTime().getTime() - date.getTime();
+            if (change != expectedChange) {
+                fail = true;
+                logln(" FAIL");
+            }
+            else logln(" OK");
+        }
+
+        if (fail) errln("Fail: roll/add misbehaves around DST onset/cease");
+    }
+
+    /**
+     * Make sure maximum for HOUR field is 11, not 12.
+     */
+    public void Test4118384() {
+        Calendar cal = Calendar.getInstance();
+        if (cal.getMaximum(Calendar.HOUR) != 11 ||
+            cal.getLeastMaximum(Calendar.HOUR) != 11 ||
+            cal.getActualMaximum(Calendar.HOUR) != 11)
+            errln("Fail: maximum of HOUR field should be 11");
+    }
+
+    /**
+     * Check isLeapYear for BC years.
+     */
+    public void Test4125881() {
+        GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
+        DateFormat fmt = new SimpleDateFormat("MMMM d, yyyy G");
+        cal.clear();
+        for (int y=-20; y<=10; ++y) {
+            cal.set(Calendar.ERA, y < 1 ? GregorianCalendar.BC : GregorianCalendar.AD);
+            cal.set(Calendar.YEAR, y < 1 ? 1 - y : y);
+            logln(y + " = " + fmt.format(cal.getTime()) + " " +
+                               cal.isLeapYear(y));
+            if (cal.isLeapYear(y) != ((y+40)%4 == 0))
+                errln("Leap years broken");
+        }
+    }
+
+    // I am disabling this test -- it is currently failing because of a bug
+    // in Sun's latest change to STZ.getOffset(). I have filed a Sun bug
+    // against this problem.
+
+    // Re-enabled after 'porting' TZ and STZ from java.util to com.ibm.icu.util.
+    /**
+     * Prove that GregorianCalendar is proleptic (it used to cut off at 45 BC,
+     * and not have leap years before then).
+     */
+    public void Test4125892() {
+        GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
+        //DateFormat fmt = new SimpleDateFormat("MMMM d, yyyy G");
+        //fmt = null;
+        cal.clear();
+        cal.set(Calendar.ERA, GregorianCalendar.BC);
+        cal.set(Calendar.YEAR, 81); // 81 BC is a leap year (proleptically)
+        cal.set(Calendar.MONTH, Calendar.FEBRUARY);
+        cal.set(Calendar.DATE, 28);
+        cal.add(Calendar.DATE, 1);
+        if (cal.get(Calendar.DATE) != 29 ||
+            !cal.isLeapYear(-80)) // -80 == 81 BC
+            errln("Calendar not proleptic");
+    }
+
+    /**
+     * Calendar and GregorianCalendar hashCode() methods need improvement.
+     * Calendar needs a good implementation that subclasses can override, and
+     * GregorianCalendar should use that implementation.
+     */
+    public void Test4136399() {
+        /*
+         * Note: This test is actually more strict than it has to be.
+         * Technically, there is no requirement that unequal objects have
+         * unequal hashes. We only require equal objects to have equal hashes.
+         * It is desirable for unequal objects to have distributed hashes, but
+         * there is no hard requirement here.
+         * 
+         * In this test we make assumptions about certain attributes of calendar
+         * objects getting represented in the hash, which need not always be the
+         * case (although it does work currently with the given test).
+         */
+        Calendar a = Calendar.getInstance();
+        Calendar b = (Calendar)a.clone();
+        if (a.hashCode() != b.hashCode()) {
+            errln("Calendar hash code unequal for cloned objects");
+        }
+        TimeZone atz1 = a.getTimeZone();
+        TimeZone atz2 = (TimeZone)atz1.clone();
+        if(!atz1.equals(atz2)){
+            errln("The clone timezones are not equal");
+        }
+        if(atz1.hashCode()!=atz2.hashCode()){
+            errln("TimeZone hash code unequal for cloned objects");
+        }
+        b.setMinimalDaysInFirstWeek(7 - a.getMinimalDaysInFirstWeek());
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores minimal days in first week");
+        }
+        b.setMinimalDaysInFirstWeek(a.getMinimalDaysInFirstWeek());
+
+        b.setFirstDayOfWeek((a.getFirstDayOfWeek() % 7) + 1); // Next day
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores first day of week");
+        }
+        b.setFirstDayOfWeek(a.getFirstDayOfWeek());
+
+        b.setLenient(!a.isLenient());
+        if (a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores lenient setting");
+        }
+        b.setLenient(a.isLenient());
+        
+        // Assume getTimeZone() returns a reference, not a clone
+        // of a reference -- this is true as of this writing
+        TimeZone atz = a.getTimeZone();
+        TimeZone btz = b.getTimeZone();
+
+        btz.setRawOffset(atz.getRawOffset() + 60*60*1000);
+        if(atz.hashCode()== btz.hashCode()){
+            errln(atz.hashCode()+"=="+btz.hashCode());
+        }
+        if (a.getTimeZone()!= b.getTimeZone() && a.hashCode() == b.hashCode()) {
+            errln("Calendar hash code ignores zone");
+        }
+        b.getTimeZone().setRawOffset(a.getTimeZone().getRawOffset());
+
+        GregorianCalendar c = new GregorianCalendar();
+        GregorianCalendar d = (GregorianCalendar)c.clone();
+        if (c.hashCode() != d.hashCode()) {
+            errln("GregorianCalendar hash code unequal for clones objects");
+        }
+        Date cutover = c.getGregorianChange();
+        d.setGregorianChange(new Date(cutover.getTime() + 24*60*60*1000));
+        if (c.hashCode() == d.hashCode()) {
+            errln("GregorianCalendar hash code ignores cutover");
+        }        
+    }
+
+    /**
+     * GregorianCalendar.equals() ignores cutover date
+     */
+    public void Test4141665() {
+        GregorianCalendar cal = new GregorianCalendar();
+        GregorianCalendar cal2 = (GregorianCalendar)cal.clone();
+        Date cut = cal.getGregorianChange();
+        Date cut2 = new Date(cut.getTime() + 100*24*60*60*1000L); // 100 days
+                                                                  // later
+        if (!cal.equals(cal2)) {
+            errln("Cloned GregorianCalendars not equal");
+        }
+        cal2.setGregorianChange(cut2);
+        if (cal.equals(cal2)) {
+            errln("GregorianCalendar.equals() ignores cutover");
+        }
+    }
+    
+    /**
+     * Bug states that ArrayIndexOutOfBoundsException is thrown by
+     * GregorianCalendar.roll() when IllegalArgumentException should be.
+     */
+    public void Test4142933() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        try {
+            calendar.roll(-1, true);
+            errln("Test failed, no exception trown");
+        }
+        catch (IllegalArgumentException e) {
+            // OK: Do nothing
+            // logln("Test passed");
+            System.out.print("");
+        }
+        catch (Exception e) {
+            errln("Test failed. Unexpected exception is thrown: " + e);
+            e.printStackTrace();
+        } 
+    }
+
+    /**
+     * GregorianCalendar handling of Dates Long.MIN_VALUE and Long.MAX_VALUE is
+     * confusing; unless the time zone has a raw offset of zero, one or the
+     * other of these will wrap. We've modified the test given in the bug report
+     * to therefore only check the behavior of a calendar with a zero raw offset
+     * zone.
+     */
+    public void Test4145158() {
+        GregorianCalendar calendar = new GregorianCalendar();
+
+        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+        calendar.setTime(new Date(Long.MIN_VALUE));
+        int year1 = calendar.get(Calendar.YEAR);
+        int era1 = calendar.get(Calendar.ERA);
+        
+        calendar.setTime(new Date(Long.MAX_VALUE));
+        int year2 = calendar.get(Calendar.YEAR);
+        int era2 = calendar.get(Calendar.ERA);
+        
+        if (year1 == year2 && era1 == era2) {
+            errln("Fail: Long.MIN_VALUE or Long.MAX_VALUE wrapping around");
+        }
+    }
+
+    /**
+     * Maximum value for YEAR field wrong.
+     */
+    public void Test4145983() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+        Date[] DATES = { new Date(Long.MAX_VALUE), new Date(Long.MIN_VALUE) };
+        for (int i=0; i<DATES.length; ++i) {
+            calendar.setTime(DATES[i]);
+            int year = calendar.get(Calendar.YEAR);
+            int maxYear = calendar.getMaximum(Calendar.YEAR);
+            if (year > maxYear) {
+                errln("Failed for "+DATES[i].getTime()+" ms: year=" +
+                      year + ", maxYear=" + maxYear);
+            }
+        }
+    }
+
+    /**
+     * This is a bug in the validation code of GregorianCalendar. As reported,
+     * the bug seems worse than it really is, due to a bug in the way the bug
+     * report test was written. In reality the bug is restricted to the
+     * DAY_OF_YEAR field. - liu 6/29/98
+     */
+    public void Test4147269() {
+        GregorianCalendar calendar = new GregorianCalendar();
+        calendar.setLenient(false);
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1996, Calendar.JANUARY, 3); // Arbitrary date
+        Date date = tempcal.getTime(); 
+        for (int field = 0; field < calendar.getFieldCount(); field++) {
+            calendar.setTime(date);
+            // Note: In the bug report, getActualMaximum() was called instead
+            // of getMaximum() -- this was an error. The validation code doesn't
+            // use getActualMaximum(), since that's too costly.
+            int max = calendar.getMaximum(field);
+            int value = max+1;
+            calendar.set(field, value); 
+            try {
+                calendar.getTime(); // Force time computation
+                // We expect an exception to be thrown. If we fall through
+                // to the next line, then we have a bug.
+                errln("Test failed with field " + FIELD_NAME[field] +
+                      ", date before: " + date +
+                      ", date after: " + calendar.getTime() +
+                      ", value: " + value + " (max = " + max +")");
+            } catch (IllegalArgumentException e) {
+                System.out.print("");
+            } 
+        }
+    }
+
+    /**
+     * Reported bug is that a GregorianCalendar with a cutover of
+     * Date(Long.MAX_VALUE) doesn't behave as a pure Julian calendar. CANNOT
+     * REPRODUCE THIS BUG
+     */
+    public void Test4149677() {
+        TimeZone[] zones = { TimeZone.getTimeZone("GMT"),
+                             TimeZone.getTimeZone("PST"),
+                             TimeZone.getTimeZone("EAT") };
+        for (int i=0; i<zones.length; ++i) {
+            GregorianCalendar calendar = new GregorianCalendar(zones[i]);
+
+            // Make sure extreme values don't wrap around
+            calendar.setTime(new Date(Long.MIN_VALUE));
+            if (calendar.get(Calendar.ERA) != GregorianCalendar.BC) {
+                errln("Fail: Long.MIN_VALUE ms has an AD year");
+            }
+            calendar.setTime(new Date(Long.MAX_VALUE));
+            if (calendar.get(Calendar.ERA) != GregorianCalendar.AD) {
+                errln("Fail: Long.MAX_VALUE ms has a BC year");
+            }
+
+            calendar.setGregorianChange(new Date(Long.MAX_VALUE));
+            // to obtain a pure Julian calendar
+            
+            boolean is100Leap = calendar.isLeapYear(100);
+            if (!is100Leap) {
+                errln("test failed with zone " + zones[i].getID());
+                errln(" cutover date is Calendar.MAX_DATE");
+                errln(" isLeapYear(100) returns: " + is100Leap);
+            }
+        }
+    }
+
+    /**
+     * Calendar and Date HOUR broken. If HOUR is out-of-range, Calendar and Date
+     * classes will misbehave.
+     */
+    public void Test4162587() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        TimeZone.setDefault(tz);
+        GregorianCalendar cal = new GregorianCalendar(tz);
+        Date d;
+        
+        for (int i=0; i<5; ++i) {
+            if (i>0) logln("---");
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 5, i, 0);
+            d = cal.getTime();
+            String s0 = d.toString();
+            logln("0 " + i + ": " + s0);
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 4, i+24, 0);
+            d = cal.getTime();
+            String sPlus = d.toString();
+            logln("+ " + i + ": " + sPlus);
+
+            cal.clear();
+            cal.set(1998, Calendar.APRIL, 6, i-24, 0);
+            d = cal.getTime();
+            String sMinus = d.toString();
+            logln("- " + i + ": " + sMinus);
+
+            if (!s0.equals(sPlus) || !s0.equals(sMinus)) {
+                errln("Fail: All three lines must match");
+            }
+        }
+    }
+
+    /**
+     * Adding 12 months behaves differently from adding 1 year
+     */
+    public void Test4165343() {
+        GregorianCalendar calendar = new GregorianCalendar(1996, Calendar.FEBRUARY, 29);
+        Date start = calendar.getTime();
+        logln("init date: " + start);
+        calendar.add(Calendar.MONTH, 12); 
+        Date date1 = calendar.getTime();
+        logln("after adding 12 months: " + date1);
+        calendar.setTime(start);
+        calendar.add(Calendar.YEAR, 1);
+        Date date2 = calendar.getTime();
+        logln("after adding one year : " + date2);
+        if (date1.equals(date2)) {
+            logln("Test passed");
+        } else {
+            errln("Test failed");
+        }
+    }
+
+    /**
+     * GregorianCalendar.getActualMaximum() does not account for first day of
+     * week.
+     */
+    public void Test4166109() {
+        /*
+         * Test month:
+         * 
+         * March 1998 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+         * 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
+         */
+        boolean passed = true;
+        int field = Calendar.WEEK_OF_MONTH;
+
+        GregorianCalendar calendar = new GregorianCalendar(Locale.US);
+        calendar.set(1998, Calendar.MARCH, 1);
+        calendar.setMinimalDaysInFirstWeek(1);
+        logln("Date:  " + calendar.getTime());
+
+        int firstInMonth = calendar.get(Calendar.DAY_OF_MONTH);
+
+        for (int firstInWeek = Calendar.SUNDAY; firstInWeek <= Calendar.SATURDAY; firstInWeek++) {
+            calendar.setFirstDayOfWeek(firstInWeek);
+            int returned = calendar.getActualMaximum(field);
+            int expected = (31 + ((firstInMonth - firstInWeek + 7)% 7) + 6) / 7;
+
+            logln("First day of week = " + firstInWeek +
+                  "  getActualMaximum(WEEK_OF_MONTH) = " + returned +
+                  "  expected = " + expected +
+                  ((returned == expected) ? "  ok" : "  FAIL"));
+
+            if (returned != expected) {
+                passed = false;
+            }
+        }
+        if (!passed) {
+            errln("Test failed");
+        }
+    }
+
+    /**
+     * Calendar.getActualMaximum(YEAR) works wrong.
+     */
+    public void Test4167060() {
+        int field = Calendar.YEAR;
+        DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy G",
+                                                 Locale.US);
+
+        GregorianCalendar calendars[] = {
+            new GregorianCalendar(100, Calendar.NOVEMBER, 1),
+            new GregorianCalendar(-99 /* 100BC */, Calendar.JANUARY, 1),
+            new GregorianCalendar(1996, Calendar.FEBRUARY, 29),
+        };
+
+        String[] id = { "Hybrid", "Gregorian", "Julian" };
+
+        for (int k=0; k<3; ++k) {
+            logln("--- " + id[k] + " ---");
+
+            for (int j=0; j<calendars.length; ++j) {
+                GregorianCalendar calendar = calendars[j];
+                if (k == 1) {
+                    calendar.setGregorianChange(new Date(Long.MIN_VALUE));
+                } else if (k == 2) {
+                    calendar.setGregorianChange(new Date(Long.MAX_VALUE));
+                }
+
+                format.setCalendar((Calendar)calendar.clone());
+
+                Date dateBefore = calendar.getTime();
+
+                int maxYear = calendar.getActualMaximum(field);
+                logln("maxYear: " + maxYear + " for " + format.format(calendar.getTime()));
+                logln("date before: " + format.format(dateBefore));
+
+                int years[] = {2000, maxYear-1, maxYear, maxYear+1};
+
+                for (int i = 0; i < years.length; i++) {
+                    boolean valid = years[i] <= maxYear;
+                    calendar.set(field, years[i]);
+                    Date dateAfter = calendar.getTime();
+                    int newYear = calendar.get(field);
+                    calendar.setTime(dateBefore); // restore calendar for next
+                                                  // use
+
+                    logln(" Year " + years[i] + (valid? " ok " : " bad") +
+                          " => " + format.format(dateAfter));
+                    if (valid && newYear != years[i]) {
+                        errln("  FAIL: " + newYear + " should be valid; date, month and time shouldn't change");
+                    } else if (!valid && newYear == years[i]) {
+                        // We no longer require strict year maxima. That is, the
+                        // calendar
+                        // algorithm may work for values > the stated maximum.
+                        //errln(" FAIL: " + newYear + " should be invalid");
+                        logln("  Note: " + newYear + " > maximum, but still valid");
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Calendar.roll broken This bug relies on the TimeZone bug 4173604 to also
+     * be fixed.
+     */
+    public void Test4173516() {
+        int fieldsList[][] = {
+            { 1997, Calendar.FEBRUARY,  1, 10, 45, 15, 900 },
+            { 1999, Calendar.DECEMBER, 22, 23, 59, 59, 999 }
+        };
+        int limit = 40;
+        GregorianCalendar cal = new GregorianCalendar();
+
+        cal.setTime(new Date(0));
+        cal.roll(Calendar.HOUR,  0x7F000000);
+        cal.roll(Calendar.HOUR, -0x7F000000);
+        if (cal.getTime().getTime() != 0) {
+            errln("Hour rolling broken");
+        }
+
+        for (int op=0; op<2; ++op) {
+            logln("Testing GregorianCalendar " +
+                  (op==0 ? "add" : "roll"));
+            for (int field=0; field < cal.getFieldCount(); ++field) {
+                if (field != Calendar.ZONE_OFFSET &&
+                    field != Calendar.DST_OFFSET) {
+                    for (int j=0; j<fieldsList.length; ++j) {
+                        int fields[] = fieldsList[j];
+                        cal.clear();
+                        cal.set(fields[0], fields[1], fields[2],
+                                fields[3], fields[4], fields[5]);
+                        cal.set(Calendar.MILLISECOND, fields[6]);
+                        for (int i = 0; i < 2*limit; i++) {
+                            if (op == 0) {
+                                cal.add(field, i < limit ? 1 : -1);
+                            } else {
+                                cal.roll(field, i < limit ? 1 : -1);
+                            }
+                        }
+                        if (cal.get(Calendar.YEAR) != fields[0] ||
+                            cal.get(Calendar.MONTH) != fields[1] ||
+                            cal.get(Calendar.DATE) != fields[2] ||
+                            cal.get(Calendar.HOUR_OF_DAY) != fields[3] ||
+                            cal.get(Calendar.MINUTE) != fields[4] ||
+                            cal.get(Calendar.SECOND) != fields[5] ||
+                            cal.get(Calendar.MILLISECOND) != fields[6]) {
+                            errln("Field " + field +
+                                  " (" + FIELD_NAME[field] +
+                                  ") FAIL, expected " +
+                                  fields[0] +
+                                  "/" + (fields[1] + 1) +
+                                  "/" + fields[2] +
+                                  " " + fields[3] +
+                                  ":" + fields[4] +
+                                  ":" + fields[5] +
+                                  "." + fields[6] +
+                                  ", got " + cal.get(Calendar.YEAR) +
+                                  "/" + (cal.get(Calendar.MONTH) + 1) +
+                                  "/" + cal.get(Calendar.DATE) +
+                                  " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                  ":" + cal.get(Calendar.MINUTE) +
+                                  ":" + cal.get(Calendar.SECOND) +
+                                  "." + cal.get(Calendar.MILLISECOND));
+                            cal.clear();
+                            cal.set(fields[0], fields[1], fields[2],
+                                    fields[3], fields[4], fields[5]);
+                            cal.set(Calendar.MILLISECOND, fields[6]);
+                            logln("Start date: " + cal.get(Calendar.YEAR) +
+                                  "/" + (cal.get(Calendar.MONTH) + 1) +
+                                  "/" + cal.get(Calendar.DATE) +
+                                  " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                  ":" + cal.get(Calendar.MINUTE) +
+                                  ":" + cal.get(Calendar.SECOND) +
+                                  "." + cal.get(Calendar.MILLISECOND));
+                            long prev = cal.getTime().getTime();
+                            for (int i = 0; i < 2*limit; i++) {
+                                if (op == 0) {
+                                    cal.add(field, i < limit ? 1 : -1);
+                                } else {
+                                    cal.roll(field, i < limit ? 1 : -1);
+                                }
+                                long t = cal.getTime().getTime();
+                                long delta = t - prev;
+                                prev = t;
+                                logln((op == 0 ? "add(" : "roll(") + FIELD_NAME[field] +
+                                      (i < limit ? ", +1) => " : ", -1) => ") +
+                                      cal.get(Calendar.YEAR) +
+                                      "/" + (cal.get(Calendar.MONTH) + 1) +
+                                      "/" + cal.get(Calendar.DATE) +
+                                      " " + cal.get(Calendar.HOUR_OF_DAY) +
+                                      ":" + cal.get(Calendar.MINUTE) +
+                                      ":" + cal.get(Calendar.SECOND) +
+                                      "." + cal.get(Calendar.MILLISECOND) +
+                                      " delta=" + delta + " ms");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public void Test4174361() {
+        GregorianCalendar calendar = new GregorianCalendar(1996, 1, 29);
+
+        calendar.add(Calendar.MONTH, 10); 
+        //Date date1 = calendar.getTime();
+        //date1 = null;
+        int d1 = calendar.get(Calendar.DAY_OF_MONTH);
+
+        calendar = new GregorianCalendar(1996, 1, 29);
+        calendar.add(Calendar.MONTH, 11); 
+        //Date date2 = calendar.getTime();
+        //date2 = null;
+        int d2 = calendar.get(Calendar.DAY_OF_MONTH);
+
+        if (d1 != d2) {
+            errln("adding months to Feb 29 broken");
+        }
+    }
+
+    /**
+     * Calendar does not update field values when setTimeZone is called.
+     */
+    public void Test4177484() {
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        TimeZone EST = TimeZone.getTimeZone("EST");
+
+        Calendar cal = Calendar.getInstance(PST, Locale.US);
+        cal.clear();
+        cal.set(1999, 3, 21, 15, 5, 0); // Arbitrary
+        int h1 = cal.get(Calendar.HOUR_OF_DAY);
+        cal.setTimeZone(EST);
+        int h2 = cal.get(Calendar.HOUR_OF_DAY);
+        if (h1 == h2) {
+            errln("FAIL: Fields not updated after setTimeZone");
+        }
+
+        // getTime() must NOT change when time zone is changed.
+        // getTime() returns zone-independent time in ms.
+        cal.clear();
+        cal.setTimeZone(PST);
+        cal.set(Calendar.HOUR_OF_DAY, 10);
+        Date pst10 = cal.getTime();
+        cal.setTimeZone(EST);
+        Date est10 = cal.getTime();
+        if (!pst10.equals(est10)) {
+            errln("FAIL: setTimeZone changed time");
+        }
+    }
+
+    /**
+     * Week of year is wrong at the start and end of the year.
+     */
+    public void Test4197699() {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setFirstDayOfWeek(Calendar.MONDAY);
+        cal.setMinimalDaysInFirstWeek(4);
+        DateFormat fmt = new SimpleDateFormat("E dd MMM yyyy  'DOY='D 'WOY='w");
+        fmt.setCalendar(cal);
+
+        int[] DATA = {
+            2000,  Calendar.JANUARY,   1,   52,
+            2001,  Calendar.DECEMBER,  31,  1,
+        };
+
+        for (int i=0; i<DATA.length; ) {
+            cal.set(DATA[i++], DATA[i++], DATA[i++]);
+            int expWOY = DATA[i++];
+            int actWOY = cal.get(Calendar.WEEK_OF_YEAR);
+            if (expWOY == actWOY) {
+                logln("Ok: " + fmt.format(cal.getTime()));
+            } else {
+                errln("FAIL: " + fmt.format(cal.getTime())
+                      + ", expected WOY=" + expWOY);
+                cal.add(Calendar.DATE, -8);
+                for (int j=0; j<14; ++j) {
+                    cal.add(Calendar.DATE, 1);
+                    logln(fmt.format(cal.getTime()));
+                }
+            }
+        }
+    }
+
+    /**
+     * Calendar DAY_OF_WEEK_IN_MONTH fields->time broken. The problem is in the
+     * field disambiguation code in GregorianCalendar. This code is supposed to
+     * choose the most recent set of fields among the following:
+     * 
+     * MONTH + DAY_OF_MONTH MONTH + WEEK_OF_MONTH + DAY_OF_WEEK MONTH +
+     * DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK DAY_OF_YEAR WEEK_OF_YEAR + DAY_OF_WEEK
+     */
+    public void Test4209071() {
+        Calendar cal = Calendar.getInstance(Locale.US);
+
+        // General field setting test
+        int Y = 1995;
+        
+        Date d[] = new Date[13];
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(Y, Calendar.JANUARY, 1);
+        d[0] = tempcal.getTime();
+        tempcal.set(Y, Calendar.MARCH, 1);
+        d[1] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 4);
+        d[2] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 18);
+        d[3] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 18);
+        d[4] = tempcal.getTime();
+        tempcal.set(Y-1, Calendar.DECEMBER, 22);
+        d[5] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 26);
+        d[6] = tempcal.getTime();
+        tempcal.set(Y, Calendar.JANUARY, 26);
+        d[7] = tempcal.getTime();
+        tempcal.set(Y, Calendar.MARCH, 1);
+        d[8] = tempcal.getTime();
+        tempcal.set(Y, Calendar.OCTOBER, 6);
+        d[9] = tempcal.getTime();
+        tempcal.set(Y, Calendar.OCTOBER, 13);
+        d[10] = tempcal.getTime();
+        tempcal.set(Y, Calendar.AUGUST, 10);
+        d[11] = tempcal.getTime();
+        tempcal.set(Y, Calendar.DECEMBER, 7);
+        d[12] = tempcal.getTime();
+
+        Object[] FIELD_DATA = {
+            // Add new test cases as needed.
+
+            // 0
+            new int[] {}, d[0],
+            // 1
+            new int[] { Calendar.MONTH, Calendar.MARCH }, d[1],
+            // 2
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY }, d[2],
+            // 3
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.THURSDAY,
+                        Calendar.DAY_OF_MONTH, 18, }, d[3],
+            // 4
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[4],
+            // 5 (WOM -1 is in previous month)
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.WEEK_OF_MONTH, -1,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[5],
+            // 6
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.WEEK_OF_MONTH, 4,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[6],
+            // 7 (DIM -1 is in same month)
+            new int[] { Calendar.DAY_OF_MONTH, 18,
+                        Calendar.DAY_OF_WEEK_IN_MONTH, -1,
+                        Calendar.DAY_OF_WEEK, Calendar.THURSDAY, }, d[7],
+            // 8
+            new int[] { Calendar.WEEK_OF_YEAR, 9,
+                        Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY, }, d[8],
+            // 9
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.DAY_OF_WEEK_IN_MONTH, 1,
+                        Calendar.DAY_OF_WEEK, Calendar.FRIDAY, }, d[9],
+            // 10
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.WEEK_OF_MONTH, 2,
+                        Calendar.DAY_OF_WEEK, Calendar.FRIDAY, }, d[10],
+            // 11
+            new int[] { Calendar.MONTH, Calendar.OCTOBER,
+                        Calendar.DAY_OF_MONTH, 15,
+                        Calendar.DAY_OF_YEAR, 222, }, d[11],
+            // 12
+            new int[] { Calendar.DAY_OF_WEEK, Calendar.THURSDAY,
+                        Calendar.MONTH, Calendar.DECEMBER, }, d[12],
+        };
+
+        for (int i=0; i<FIELD_DATA.length; i+=2) {
+            int[] fields = (int[]) FIELD_DATA[i];
+            Date exp = (Date) FIELD_DATA[i+1];
+            
+            cal.clear();
+            cal.set(Calendar.YEAR, Y);
+            for (int j=0; j<fields.length; j+=2) {
+                cal.set(fields[j], fields[j+1]);
+            }
+            
+            Date act = cal.getTime();
+            if (!act.equals(exp)) {
+                errln("FAIL: Test " + (i/2) + " got " + act +
+                      ", want " + exp +
+                      " (see test/java/util/Calendar/CalendarRegression.java");
+            }
+        }
+
+        tempcal.set(1997, Calendar.JANUARY, 5);
+        d[0] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 26);
+        d[1] = tempcal.getTime();
+        tempcal.set(1997, Calendar.FEBRUARY, 23);
+        d[2] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 26);
+        d[3] = tempcal.getTime();
+        tempcal.set(1997, Calendar.JANUARY, 5);
+        d[4] = tempcal.getTime();
+        tempcal.set(1996, Calendar.DECEMBER, 8);
+        d[5] = tempcal.getTime();
+        // Test specific failure reported in bug
+        Object[] DATA = { 
+            new Integer(1), d[0], new Integer(4), d[1],
+            new Integer(8), d[2], new Integer(-1), d[3],
+            new Integer(-4), d[4], new Integer(-8), d[5],
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            cal.clear();
+            cal.set(Calendar.DAY_OF_WEEK_IN_MONTH,
+                    ((Number) DATA[i]).intValue());
+            cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+            cal.set(Calendar.MONTH, Calendar.JANUARY);
+            cal.set(Calendar.YEAR, 1997);
+            Date actual = cal.getTime();
+            if (!actual.equals(DATA[i+1])) {
+                errln("FAIL: Sunday " + DATA[i] +
+                      " of Jan 1997 -> " + actual +
+                      ", want " + DATA[i+1]);
+            }
+        }
+    }
+
+    /**
+     * WEEK_OF_YEAR computed incorrectly. A failure of this test can indicate a
+     * problem in several different places in the
+     */
+    public void Test4288792() throws Exception 
+    {
+    TimeZone savedTZ = TimeZone.getDefault();
+    TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
+    GregorianCalendar cal = new GregorianCalendar();
+        
+    for (int i = 1900; i < 2100; i++) {
+        for (int j1 = 1; j1 <= 7; j1++) {
+        // Loop for MinimalDaysInFirstWeek: 1..7
+        for (int j = Calendar.SUNDAY; j <= Calendar.SATURDAY; j++) {
+            // Loop for FirstDayOfWeek: SUNDAY..SATURDAY
+            cal.clear();
+            cal.setMinimalDaysInFirstWeek(j1);
+            cal.setFirstDayOfWeek(j);
+                    // Set the calendar to the first day of the last week
+                    // of the year. This may overlap some of the start of
+                    // the next year; that is, the last week of 1999 may
+                    // include some of January 2000. Use the add() method
+                    // to advance through the week. For each day, call
+                    // get(WEEK_OF_YEAR). The result should be the same
+                    // for the whole week. Note that a bug in
+                    // getActualMaximum() will break this test.
+            cal.set(Calendar.YEAR, i);
+            int maxWeek = cal.getActualMaximum(Calendar.WEEK_OF_YEAR);
+            cal.set(Calendar.WEEK_OF_YEAR, maxWeek);
+            cal.set(Calendar.DAY_OF_WEEK, j);
+            for (int k = 1; k < 7; k++) {
+            cal.add(Calendar.DATE, 1);
+            int WOY = cal.get(Calendar.WEEK_OF_YEAR);
+            if (WOY != maxWeek) {
+                errln(cal.getTime() + ",got=" + WOY
+                  + ",expected=" + maxWeek 
+                  + ",min=" + j1 + ",first=" + j);
+            }
+            }
+                    // Now advance the calendar one more day. This should
+                    // put it at the first day of week 1 of the next year.
+            cal.add(Calendar.DATE, 1);
+            int WOY = cal.get(Calendar.WEEK_OF_YEAR);
+            if (WOY != 1) {
+            errln(cal.getTime() + ",got=" + WOY 
+                  + ",expected=1,min=" + j1 + ",first" + j);
+            }
+        }
+        }
+    }
+    TimeZone.setDefault(savedTZ);
+    }
+
+    /**
+     * Test fieldDifference().
+     */
+    public void TestJ438() throws Exception {
+        int DATA[] = {
+            2000, Calendar.JANUARY, 20,   2010, Calendar.JUNE, 15,
+            2010, Calendar.JUNE, 15,      2000, Calendar.JANUARY, 20,
+            1964, Calendar.SEPTEMBER, 7,  1999, Calendar.JUNE, 4,
+            1999, Calendar.JUNE, 4,       1964, Calendar.SEPTEMBER, 7,
+        };
+        Calendar cal = Calendar.getInstance(Locale.US);
+        for (int i=0; i<DATA.length; i+=6) {
+            int y1 = DATA[i];
+            int m1 = DATA[i+1];
+            int d1 = DATA[i+2];
+            int y2 = DATA[i+3];
+            int m2 = DATA[i+4];
+            int d2 = DATA[i+5];
+
+            cal.clear();
+            cal.set(y1, m1, d1);
+            Date date1 = cal.getTime();
+            cal.set(y2, m2, d2);
+            Date date2 = cal.getTime();
+
+            cal.setTime(date1);
+            int dy = cal.fieldDifference(date2, Calendar.YEAR);
+            int dm = cal.fieldDifference(date2, Calendar.MONTH);
+            int dd = cal.fieldDifference(date2, Calendar.DATE);
+
+            logln("" + date2 + " - " + date1 + " = " +
+                  dy + "y " + dm + "m " + dd + "d");
+
+            cal.setTime(date1);
+            cal.add(Calendar.YEAR, dy);
+            cal.add(Calendar.MONTH, dm);
+            cal.add(Calendar.DATE, dd);
+            Date date22 = cal.getTime();
+            if (!date2.equals(date22)) {
+                errln("FAIL: " + date1 + " + " +
+                      dy + "y " + dm + "m " + dd + "d = " +
+                      date22 + ", exp " + date2);
+            } else {
+                logln("Ok: " + date1 + " + " +
+                      dy + "y " + dm + "m " + dd + "d = " +
+                      date22);
+            }
+        }
+    }
+    
+    public void TestT5555() throws Exception
+    {
+        Calendar cal = Calendar.getInstance();
+        
+        // Set date to Wednesday, February 21, 2007
+        cal.set(2007, Calendar.FEBRUARY, 21);
+
+        try {
+            // Advance month by three years
+            cal.add(Calendar.MONTH, 36);
+            
+            // Move to last Wednesday of month.
+            cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, -1);
+            
+            cal.getTime();
+        } catch (Exception e) {
+            errln("Got an exception calling getTime().");
+        }
+        
+        int yy, mm, dd, ee;
+        
+        yy = cal.get(Calendar.YEAR);
+        mm = cal.get(Calendar.MONTH);
+        dd = cal.get(Calendar.DATE);
+        ee = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);
+        
+        if (yy != 2010 || mm != Calendar.FEBRUARY || dd != 24 || ee != Calendar.WEDNESDAY) {
+            errln("Got date " + yy + "/" + (mm + 1) + "/" + dd + ", expected 2010/2/24");
+        }
+    }
+
+    /**
+     * Set behavior of DST_OFFSET field. ICU4J Jitterbug 9.
+     */
+    public void TestJ9() {
+        int HOURS = 60*60*1000;
+        Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("PST"),
+                                             Locale.US);
+
+        final int END_FIELDS = 0x1234;
+
+        int[] DATA = {
+            // With no explicit ZONE/DST expect 12:00 am
+            Calendar.MONTH, Calendar.JUNE,
+            END_FIELDS,
+            0, 0, // expected hour, min
+
+            // Normal ZONE/DST for June 1 Pacific is 8:00/1:00
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            Calendar.DST_OFFSET, HOURS,
+            END_FIELDS,
+            0, 0, // expected hour, min
+
+            // With ZONE/DST of 8:00/0:30 expect time of 12:30 am
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            Calendar.DST_OFFSET, HOURS/2,
+            END_FIELDS,
+            0, 30, // expected hour, min
+
+            // With ZONE/DST of 8:00/UNSET expect time of 1:00 am
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.ZONE_OFFSET, -8*HOURS,
+            END_FIELDS,
+            1, 0, // expected hour, min
+
+            // With ZONE/DST of UNSET/0:30 expect 4:30 pm (day before)
+            Calendar.MONTH, Calendar.JUNE,
+            Calendar.DST_OFFSET, HOURS/2,
+            END_FIELDS,
+            16, 30, // expected hour, min
+        };
+
+        for (int i=0; i<DATA.length; ) {
+            int start = i;
+            cal.clear();
+
+            // Set fields
+            while (DATA[i] != END_FIELDS) {
+                cal.set(DATA[i++], DATA[i++]);
+            }
+            ++i; // skip over END_FIELDS
+
+            // Get hour/minute
+            int h = cal.get(Calendar.HOUR_OF_DAY);
+            int m = cal.get(Calendar.MINUTE);
+
+            // Check
+            if (h != DATA[i] || m != DATA[i+1]) {
+                errln("Fail: expected " + DATA[i] + ":" + DATA[i+1] +
+                      ", got " + h + ":" + m + " after:");
+                while (DATA[start] != END_FIELDS) {
+                    logln("set(" + FIELD_NAME[DATA[start++]] +
+                          ", " + DATA[start++] + ");");
+                }
+            }
+
+            i += 2; // skip over expected hour, min
+        }
+    }
+
+    /**
+     * DateFormat class mistakes date style and time style as follows: -
+     * DateFormat.getDateTimeInstance takes date style as time style, and time
+     * style as date style - If a Calendar is passed to
+     * DateFormat.getDateInstance, it returns time instance - If a Calendar is
+     * passed to DateFormat.getTimeInstance, it returns date instance
+     */
+    public void TestDateFormatFactoryJ26() {
+        TimeZone zone = TimeZone.getDefault();
+        try {
+            Locale loc = Locale.US;
+            TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.set(2001, Calendar.APRIL, 5, 17, 43, 53);
+            Date date = tempcal.getTime();
+            Calendar cal = Calendar.getInstance(loc);
+            Object[] DATA = {
+                DateFormat.getDateInstance(DateFormat.SHORT, loc),
+                "DateFormat.getDateInstance(DateFormat.SHORT, loc)",
+                "4/5/01",
+
+                DateFormat.getTimeInstance(DateFormat.SHORT, loc),
+                "DateFormat.getTimeInstance(DateFormat.SHORT, loc)",
+                "5:43 PM",
+
+                DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, loc),
+                "DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Thursday, April 5, 2001 5:43 PM",
+
+                DateFormat.getDateInstance(cal, DateFormat.SHORT, loc),
+                "DateFormat.getDateInstance(cal, DateFormat.SHORT, loc)",
+                "4/5/01",
+
+                DateFormat.getTimeInstance(cal, DateFormat.SHORT, loc),
+                "DateFormat.getTimeInstance(cal, DateFormat.SHORT, loc)",
+                "5:43 PM",
+
+                DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.SHORT, loc),
+                "DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Thursday, April 5, 2001 5:43 PM",
+            
+                cal.getDateTimeFormat(DateFormat.SHORT, DateFormat.FULL, loc),
+                "cal.getDateTimeFormat(DateFormat.SHORT, DateFormat.FULL, loc)",
+                "4/5/01 5:43:53 PM PT",
+
+                cal.getDateTimeFormat(DateFormat.FULL, DateFormat.SHORT, loc),
+                "cal.getDateTimeFormat(DateFormat.FULL, DateFormat.SHORT, loc)",
+                "Thursday, April 5, 2001 5:43 PM",
+            };
+            for (int i=0; i<DATA.length; i+=3) {
+                DateFormat df = (DateFormat) DATA[i];
+                String desc = (String) DATA[i+1];
+                String exp = (String) DATA[i+2];
+                String got = df.format(date);
+                if (got.equals(exp)) {
+                    logln("Ok: " + desc + " => " + got);
+                } else {
+                    errln("FAIL: " + desc + " => " + got + ", expected " + exp);
+                }
+            }
+        } finally {
+            TimeZone.setDefault(zone);
+        }
+    }
+
+    public void TestRegistration() {
+        /*
+         * Set names = Calendar.getCalendarFactoryNames();
+         * 
+         * TimeZone tz = TimeZone.getDefault(); Locale loc =
+         * Locale.getDefault(); Iterator iter = names.iterator(); while
+         * (iter.hasNext()) { String name = (String)iter.next(); logln("Testing
+         * factory: " + name);
+         * 
+         * Calendar cal = Calendar.getInstance(tz, loc, name); logln("Calendar
+         * class: " + cal.getClass());
+         * 
+         * DateFormat fmt = cal.getDateTimeFormat(DateFormat.LONG,
+         * DateFormat.LONG, loc);
+         * 
+         * logln("Date: " + fmt.format(cal.getTime())); }
+         *  // register new default for our locale logln("\nTesting
+         * registration"); loc = new Locale("en", "US"); Object key =
+         * Calendar.register(JapaneseCalendar.factory(), loc, true);
+         * 
+         * loc = new Locale("en", "US", "TEST"); Calendar cal =
+         * Calendar.getInstance(loc); logln("Calendar class: " +
+         * cal.getClass()); DateFormat fmt =
+         * cal.getDateTimeFormat(DateFormat.LONG, DateFormat.LONG, loc);
+         * logln("Date: " + fmt.format(cal.getTime()));
+         *  // force to use other default anyway logln("\nOverride
+         * registration"); cal = Calendar.getInstance(tz, loc, "Gregorian"); fmt =
+         * cal.getDateTimeFormat(DateFormat.LONG, DateFormat.LONG, loc);
+         * logln("Date: " + fmt.format(cal.getTime()));
+         *  // unregister default logln("\nUnregistration"); logln("Unregister
+         * returned: " + Calendar.unregister(key)); cal =
+         * Calendar.getInstance(tz, loc, "Gregorian"); fmt =
+         * cal.getDateTimeFormat(DateFormat.LONG, DateFormat.LONG, loc);
+         * logln("Date: " + fmt.format(cal.getTime()));
+         */
+    }
+
+    /**
+     * test serialize-and-modify.
+     * @throws ClassNotFoundException 
+     */
+    public void TestSerialization3474() {
+        try {
+            ByteArrayOutputStream icuStream = new ByteArrayOutputStream();
+    
+            logln("icu Calendar");
+            
+            com.ibm.icu.util.GregorianCalendar icuCalendar =
+                new com.ibm.icu.util.GregorianCalendar();
+            
+            icuCalendar.setTimeInMillis(1187912555931L);
+            long expectMillis = 1187912520931L; // with seconds (not ms) cleared.
+            
+            logln("instantiated: "+icuCalendar);
+            logln("getMillis: "+icuCalendar.getTimeInMillis());
+            icuCalendar.set(com.ibm.icu.util.GregorianCalendar.SECOND, 0);
+            logln("setSecond=0: "+icuCalendar);
+            {
+                long gotMillis = icuCalendar.getTimeInMillis();
+                if(gotMillis != expectMillis) {
+                    errln("expect millis "+expectMillis+" but got "+gotMillis);
+                } else {
+                    logln("getMillis: "+gotMillis);
+                }
+            }
+            ObjectOutputStream icuOut =
+                new ObjectOutputStream(icuStream);
+            icuOut.writeObject(icuCalendar);
+            icuOut.flush();
+            icuOut.close();
+            
+            ObjectInputStream icuIn =
+                new ObjectInputStream(new ByteArrayInputStream(icuStream.toByteArray()));
+            icuCalendar = null;
+            icuCalendar = (com.ibm.icu.util.GregorianCalendar)icuIn.readObject();
+            
+            logln("serialized back in: "+icuCalendar);
+            {
+                long gotMillis = icuCalendar.getTimeInMillis();
+                if(gotMillis != expectMillis) {
+                    errln("expect millis "+expectMillis+" but got "+gotMillis);
+                } else {
+                    logln("getMillis: "+gotMillis);
+                }
+            }
+            
+            icuCalendar.set(com.ibm.icu.util.GregorianCalendar.SECOND, 0);
+                    
+            logln("setSecond=0: "+icuCalendar);
+            {
+                long gotMillis = icuCalendar.getTimeInMillis();
+                if(gotMillis != expectMillis) {
+                    errln("expect millis "+expectMillis+" after stream and setSecond but got "+gotMillis);
+                } else {
+                    logln("getMillis after stream and setSecond: "+gotMillis);
+                }
+            }
+        } catch(IOException e) {
+            errln(e.toString());
+            e.printStackTrace();
+        } catch(ClassNotFoundException cnf) {
+            errln(cnf.toString());
+            cnf.printStackTrace();
+        }
+
+        // JDK works correctly, etc etc.  
+//        ByteArrayOutputStream jdkStream = new ByteArrayOutputStream();
+
+//        logln("\nSUN Calendar");
+//        
+//        java.util.GregorianCalendar sunCalendar =
+//            new java.util.GregorianCalendar();
+//        
+//        logln("instanzieren: "+sunCalendar);
+//        logln("getMillis: "+sunCalendar.getTimeInMillis());
+//        sunCalendar.set(java.util.GregorianCalendar.SECOND, 0);
+//        logln("setSecond=0: "+sunCalendar);
+//        logln("getMillis: "+sunCalendar.getTimeInMillis());
+//        
+//        ObjectOutputStream sunOut =
+//            new ObjectOutputStream(jdkStream);
+//        sunOut.writeObject(sunCalendar);
+//        sunOut.flush();
+//        sunOut.close();
+//        
+//        ObjectInputStream sunIn =
+//            new ObjectInputStream(new ByteArrayInputStream(jdkStream.toByteArray()));
+//        sunCalendar = null;
+//        sunCalendar = (java.util.GregorianCalendar)sunIn.readObject();
+//        
+//        logln("serialized: "+sunCalendar);
+//        logln("getMillis: "+sunCalendar.getTimeInMillis());
+//        
+//        sunCalendar.set(java.util.GregorianCalendar.SECOND, 0);
+//        logln("setSecond=0: "+sunCalendar);
+//        logln("getMillis: "+sunCalendar.getTimeInMillis());
+        
+    }
+
+    public void TestYearJump3279() {
+        final long time = 1041148800000L;
+        Calendar c = new GregorianCalendar();
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US);
+
+        c.setTimeInMillis(time);
+        int year1 = c.get(Calendar.YEAR);
+        
+        logln("time: " + fmt.format(new Date(c.getTimeInMillis())));
+
+        logln("setting DOW to " + c.getFirstDayOfWeek());
+        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
+        logln("week: " + c.getTime());
+        logln("week adjust: " + fmt.format(new Date(c.getTimeInMillis())));
+        int year2 = c.get(Calendar.YEAR);
+        
+        if(year1 != year2) {
+            errln("Error: adjusted day of week, and year jumped from " + year1 + " to " + year2);
+        } else {
+            logln("Year remained " + year2 + " - PASS.");
+        }
+    }
+    
+    public void TestGetKeywordValues(){
+        ArrayList got = new ArrayList();
+        ArrayList expected = new ArrayList();
+        
+        String expectedResult = "";
+        String gotResult = "";
+        
+        String inputLocale[] = {
+                "zh__PINYIN",
+                "zh_TW_STROKE",
+                "zh_MO",
+                "zh",
+                "zh_Hant_MO",
+                "uk_UA",
+                "sr_Latn_ME",
+                "sr_Latn",
+                "sr",
+                "de",
+                "de__PHONEBOOK",
+                "no_NO",
+                "pa_Guru_IN",
+                "es",
+                "es__TRADITIONAL",
+                "ko_KR",
+                "kok",
+                "ms_MY",
+                "ab_AA_jdhdj@collation=xyz",
+                "de__PHONEBOOK@calendar=japanese",
+            };
+        
+        String commonlyUsedCalendar[][] = {
+                {"gregorian","chinese"},
+                {"gregorian","chinese","roc"},
+                {"gregorian","chinese"},
+                {"gregorian","chinese"},
+                {"gregorian","chinese"},
+                {"gregorian"},
+                {"gregorian"},
+                {"gregorian"},
+                {"gregorian"},
+                {"gregorian"},
+                {"gregorian"},
+                {"gregorian"},
+                {"gregorian","indian"},
+                {"gregorian"},
+                {"gregorian"},
+                {"gregorian"},
+                {"gregorian","indian"},
+                {"gregorian"},
+                {"gregorian"},
+                {"japanese"}
+        };
+        
+        String calendar[]={
+                "roc",
+                "persian",
+                "islamic-civil",
+                "islamic",
+                "hebrew",
+                "buddhist",
+                "indian",
+                "japanese",
+                "gregorian",
+                "ethiopic",
+                "chinese",
+                "coptic",
+        };
+        
+        logln("Starting all available calendar keyword value test");
+        
+        for(int i=0;i<inputLocale.length;i++){
+            ULocale loc = new ULocale(inputLocale[i]);
+            for(int j=0;j<calendar.length;j++){
+                expected.add(calendar[j]);
+                expectedResult += calendar[j]+" ";
+            }
+            String[] s = Calendar.getKeywordValues("calendar", loc, false);
+            String s1;
+            for(int j=0;j<s.length;j++){
+                got.add((s1=s[j]));
+                gotResult +=s1+" ";
+            }
+            
+            Collections.sort(got);
+            Collections.sort(expected);
+            if(got.equals(expected)){
+                logln("PASS: Locale :"+inputLocale[i]);
+                logln("EXPECTED :"+expectedResult);
+                logln("GOT      :"+gotResult);
+            }else{
+                errln("FAIL: Locale :"+inputLocale[i]+" EXPECTED :"+expectedResult+" GOT :"+gotResult);
+            }
+            gotResult=expectedResult="";
+            got.clear();
+            expected.clear();
+        }
+        
+        logln("Starting preferred calendar keyword value test");
+        
+        for(int i=0;i<inputLocale.length;i++){
+            ULocale loc = new ULocale(inputLocale[i]);
+            for(int j=0;j<commonlyUsedCalendar[i].length;j++){
+                expected.add(commonlyUsedCalendar[i][j]);
+                expectedResult += commonlyUsedCalendar[i][j]+" ";
+               
+            }
+            String[] s = Calendar.getKeywordValues("calendar", loc, true);
+            String s1;
+            for(int j=0;j<s.length;j++){
+                got.add((s1=s[j]));
+                gotResult +=s1+" ";
+            }
+            Collections.sort(got);
+            Collections.sort(expected);
+            if(got.equals(expected)){
+                logln("PASS: Locale :"+inputLocale[i]);
+                logln("EXPECTED :"+expectedResult);
+                logln("GOT      :"+gotResult);
+            }else{
+                errln("FAIL: Locale :"+inputLocale[i]+" EXPECTED :"+expectedResult+" GOT :"+gotResult);
+            }
+            gotResult=expectedResult="";
+            got.clear();
+            expected.clear();
+            
+        } 
+    }
+
+   
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/calendar/CalendarTest.java b/src/com/ibm/icu/dev/test/calendar/CalendarTest.java
new file mode 100644
index 0000000..c25c6e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CalendarTest.java
@@ -0,0 +1,442 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.calendar;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Hashtable;
+import java.util.Enumeration;
+
+import com.ibm.icu.util.*;
+
+/**
+ * A base class for classes that test individual Calendar subclasses.
+ * Defines various useful utility methods and constants
+ */
+public class CalendarTest extends TestFmwk {
+    
+    // Constants for use by subclasses, solely to save typing
+    public final static int SUN = Calendar.SUNDAY;
+    public final static int MON = Calendar.MONDAY;
+    public final static int TUE = Calendar.TUESDAY;
+    public final static int WED = Calendar.WEDNESDAY;
+    public final static int THU = Calendar.THURSDAY;
+    public final static int FRI = Calendar.FRIDAY;
+    public final static int SAT = Calendar.SATURDAY;
+
+    public final static int ERA     = Calendar.ERA;
+    public final static int YEAR    = Calendar.YEAR;
+    public final static int MONTH   = Calendar.MONTH;
+    public final static int DATE    = Calendar.DATE;
+    public final static int HOUR    = Calendar.HOUR;
+    public final static int MINUTE  = Calendar.MINUTE;
+    public final static int SECOND  = Calendar.SECOND;
+    public final static int DOY     = Calendar.DAY_OF_YEAR;
+    public final static int WOY     = Calendar.WEEK_OF_YEAR;
+    public final static int WOM     = Calendar.WEEK_OF_MONTH;
+    public final static int DOW     = Calendar.DAY_OF_WEEK;
+    public final static int DOWM    = Calendar.DAY_OF_WEEK_IN_MONTH;
+    
+    public final static SimpleTimeZone UTC = new SimpleTimeZone(0, "GMT");
+
+    private static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+        "IS_LEAP_MONTH" // (ChineseCalendar only)
+    };
+
+    public static final String fieldName(int f) {
+        return (f>=0 && f<FIELD_NAME.length) ?
+            FIELD_NAME[f] : ("<Field " + f + ">");
+    }
+
+    /**
+     * Iterates through a list of calendar <code>TestCase</code> objects and
+     * makes sure that the time-to-fields and fields-to-time calculations work
+     * correnctly for the values in each test case.
+     */
+    public void doTestCases(TestCase[] cases, Calendar cal)
+    {
+        cal.setTimeZone(UTC);
+        
+        // Get a format to use for printing dates in the calendar system we're testing
+        DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.SHORT, -1, Locale.getDefault());
+
+        final String pattern = (cal instanceof ChineseCalendar) ?
+            "E MMl/dd/y G HH:mm:ss.S z" :
+            "E, MM/dd/yyyy G HH:mm:ss.S z";
+    
+        ((SimpleDateFormat)format).applyPattern(pattern);
+
+        // This format is used for printing Gregorian dates.
+        DateFormat gregFormat = new SimpleDateFormat(pattern);
+        gregFormat.setTimeZone(UTC);
+
+        GregorianCalendar pureGreg = new GregorianCalendar(UTC);
+        pureGreg.setGregorianChange(new Date(Long.MIN_VALUE));
+        DateFormat pureGregFmt = new SimpleDateFormat("E M/d/yyyy G");
+        pureGregFmt.setCalendar(pureGreg);
+        
+        // Now iterate through the test cases and see what happens
+        for (int i = 0; i < cases.length; i++)
+        {
+            logln("\ntest case: " + i);
+            TestCase test = cases[i];
+            
+            //
+            // First we want to make sure that the millis -> fields calculation works
+            // test.applyTime will call setTime() on the calendar object, and
+            // test.fieldsEqual will retrieve all of the field values and make sure
+            // that they're the same as the ones in the testcase
+            //
+            test.applyTime(cal);
+            if (!test.fieldsEqual(cal, this)) {
+                errln("Fail: (millis=>fields) " +
+                      gregFormat.format(test.getTime()) + " => " +
+                      format.format(cal.getTime()) +
+                      ", expected " + test);
+            }
+
+            //
+            // If that was OK, check the fields -> millis calculation
+            // test.applyFields will set all of the calendar's fields to 
+            // match those in the test case.
+            //
+            cal.clear();
+            test.applyFields(cal);
+            if (!test.equals(cal)) {
+                errln("Fail: (fields=>millis) " + test + " => " +
+                      pureGregFmt.format(cal.getTime()) +
+                      ", expected " + pureGregFmt.format(test.getTime()));
+            }
+        }
+    }
+    
+    static public final boolean ROLL = true;
+    static public final boolean ADD = false;
+    
+    /**
+     * Process test cases for <code>add</code> and <code>roll</code> methods.
+     * Each test case is an array of integers, as follows:
+     * <ul>
+     *  <li>0: input year
+     *  <li>1:       month  (zero-based)
+     *  <li>2:       day
+     *  <li>3: field to roll or add to
+     *  <li>4: amount to roll or add
+     *  <li>5: result year
+     *  <li>6:        month (zero-based)
+     *  <li>7:        day
+     * </ul>
+     * For example:
+     * <pre>
+     *   //       input                add by          output
+     *   //  year  month     day     field amount    year  month     day
+     *   {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },
+     * </pre>
+     *
+     * @param roll  <code>true</code> or <code>ROLL</code> to test the <code>roll</code> method;
+     *              <code>false</code> or <code>ADD</code> to test the <code>add</code method
+     */
+    public void doRollAdd(boolean roll, Calendar cal, int[][] tests)
+    {
+        String name = roll ? "rolling" : "adding";
+        
+        for (int i = 0; i < tests.length; i++) {
+            int[] test = tests[i];
+
+            cal.clear();
+            if (cal instanceof ChineseCalendar) {
+                cal.set(Calendar.EXTENDED_YEAR, test[0]);
+                cal.set(Calendar.MONTH, test[1]);
+                cal.set(Calendar.DAY_OF_MONTH, test[2]);
+            } else {
+                cal.set(test[0], test[1], test[2]);
+            }
+            double day0 = getJulianDay(cal);
+            if (roll) {
+                cal.roll(test[3], test[4]);
+            } else {
+                cal.add(test[3], test[4]);
+            }
+            int y = cal.get(cal instanceof ChineseCalendar ?
+                            Calendar.EXTENDED_YEAR : YEAR);
+            if (y != test[5] || cal.get(MONTH) != test[6]
+                    || cal.get(DATE) != test[7])
+            {
+                errln("Fail: " + name + " "+ ymdToString(test[0], test[1], test[2])
+                    + " (" + day0 + ")"
+                    + " " + FIELD_NAME[test[3]] + " by " + test[4]
+                    + ": expected " + ymdToString(test[5], test[6], test[7])
+                    + ", got " + ymdToString(cal));
+            } else if (isVerbose()) {
+                logln("OK: " + name + " "+ ymdToString(test[0], test[1], test[2])
+                    + " (" + day0 + ")"
+                    + " " + FIELD_NAME[test[3]] + " by " + test[4]
+                    + ": got " + ymdToString(cal));
+            }
+        }
+    }
+
+    /**
+     * Test the functions getXxxMinimum() and getXxxMaximum() by marching a
+     * test calendar 'cal' through 'numberOfDays' sequential days starting
+     * with 'startDate'.  For each date, read a field value along with its
+     * reported actual minimum and actual maximum.  These values are
+     * checked against one another as well as against getMinimum(),
+     * getGreatestMinimum(), getLeastMaximum(), and getMaximum().  We
+     * expect to see:
+     *
+     * 1. minimum <= actualMinimum <= greatestMinimum <=
+     *    leastMaximum <= actualMaximum <= maximum
+     *
+     * 2. actualMinimum <= value <= actualMaximum
+     *
+     * Note: In addition to outright failures, this test reports some
+     * results as warnings.  These are not generally of concern, but they
+     * should be evaluated by a human.  To see these, run this test in
+     * verbose mode.
+     * @param cal the calendar to be tested
+     * @param fieldsToTest an array of field values to be tested, e.g., new
+     * int[] { Calendar.MONTH, Calendar.DAY_OF_MONTH }.  It only makes
+     * sense to test the day fields; the time fields are not tested by this
+     * method.  If null, then test all standard fields.
+     * @param startDate the first date to test
+     * @param testDuration if positive, the number of days to be tested.
+     * If negative, the number of seconds to run the test.
+     */
+    public void doLimitsTest(Calendar cal, int[] fieldsToTest,
+                                Date startDate, int testDuration) {
+        GregorianCalendar greg = new GregorianCalendar();
+        greg.setTime(startDate);
+        logln("Start: " + startDate);
+
+        if (fieldsToTest == null) {
+            fieldsToTest = new int[] {
+                Calendar.ERA, Calendar.YEAR, Calendar.MONTH,
+                Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH,
+                Calendar.DAY_OF_MONTH, Calendar.DAY_OF_YEAR,
+                Calendar.DAY_OF_WEEK_IN_MONTH, Calendar.YEAR_WOY,
+                Calendar.EXTENDED_YEAR
+            };
+        }
+
+        // Keep a record of minima and maxima that we actually see.
+        // These are kept in an array of arrays of hashes.
+        Hashtable[][] limits = new Hashtable[fieldsToTest.length][2];
+        Object nub = new Object(); // Meaningless placeholder
+
+        // This test can run for a long time; show progress.
+        long millis = System.currentTimeMillis();
+        long mark = millis + 5000; // 5 sec
+        millis -= testDuration * 1000; // stop time if testDuration<0
+
+        for (int i=0;
+             testDuration>0 ? i<testDuration
+                            : System.currentTimeMillis()<millis;
+             ++i) {
+            if (System.currentTimeMillis() >= mark) {
+                logln("(" + i + " days)");
+                mark += 5000; // 5 sec
+            }
+            cal.setTimeInMillis(greg.getTimeInMillis());
+            for (int j=0; j<fieldsToTest.length; ++j) {
+                int f = fieldsToTest[j];
+                int v = cal.get(f);
+                int minActual = cal.getActualMinimum(f);
+                int maxActual = cal.getActualMaximum(f);
+                int minLow = cal.getMinimum(f);
+                int minHigh = cal.getGreatestMinimum(f);
+                int maxLow = cal.getLeastMaximum(f);
+                int maxHigh = cal.getMaximum(f);
+
+                // Fetch the hash for this field and keep track of the
+                // minima and maxima.
+                Hashtable[] h = limits[j];
+                if (h[0] == null) {
+                    h[0] = new Hashtable();
+                    h[1] = new Hashtable();
+                }
+                h[0].put(new Integer(minActual), nub);
+                h[1].put(new Integer(maxActual), nub);
+
+                if (minActual < minLow || minActual > minHigh) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " Range for min of " + FIELD_NAME[f] + "(" + f +
+                          ")=" + minLow + ".." + minHigh +
+                          ", actual_min=" + minActual);
+                }
+                if (maxActual < maxLow || maxActual > maxHigh) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " Range for max of " + FIELD_NAME[f] + "(" + f +
+                          ")=" + maxLow + ".." + maxHigh +
+                          ", actual_max=" + maxActual);
+                }
+                if (v < minActual || v > maxActual) {
+                    errln("Fail: " + ymdToString(cal) +
+                          " " + FIELD_NAME[f] + "(" + f + ")=" + v +
+                          ", actual range=" + minActual + ".." + maxActual +
+                          ", allowed=(" + minLow + ".." + minHigh + ")..(" +
+                          maxLow + ".." + maxHigh + ")");
+                }
+            }
+            greg.add(Calendar.DAY_OF_YEAR, 1);
+        }
+
+        // Check actual maxima and minima seen against ranges returned
+        // by API.
+        StringBuffer buf = new StringBuffer();
+        for (int j=0; j<fieldsToTest.length; ++j) {
+            int f = fieldsToTest[j];
+            buf.setLength(0);
+            buf.append(FIELD_NAME[f]);
+            Hashtable[] h = limits[j];
+            boolean fullRangeSeen = true;
+            for (int k=0; k<2; ++k) {
+                int rangeLow = (k==0) ?
+                    cal.getMinimum(f) : cal.getLeastMaximum(f);
+                int rangeHigh = (k==0) ?
+                    cal.getGreatestMinimum(f) : cal.getMaximum(f);
+                // If either the top of the range or the bottom was never
+                // seen, then there may be a problem.
+                if (h[k].get(new Integer(rangeLow)) == null ||
+                    h[k].get(new Integer(rangeHigh)) == null) {
+                    fullRangeSeen = false;
+                }
+                buf.append(k==0 ? " minima seen=(" : "; maxima seen=(");
+                for (Enumeration e=h[k].keys(); e.hasMoreElements(); ) {
+                    int v = ((Integer) e.nextElement()).intValue();
+                    buf.append(" " + v);
+                }
+                buf.append(") range=" + rangeLow + ".." + rangeHigh);
+            }
+            if (fullRangeSeen) {
+                logln("OK: " + buf.toString());
+            } else {
+                // This may or may not be an error -- if the range of dates
+                // we scan over doesn't happen to contain a minimum or
+                // maximum, it doesn't mean some other range won't.
+                logln("Warning: " + buf.toString());
+            }
+        }
+
+        logln("End: " + greg.getTime());
+    }
+
+    /**
+     * doLimitsTest with default test duration
+     */
+    public void doLimitsTest(Calendar cal, int[] fieldsToTest, Date startDate) {
+        int testTime = getInclusion() <= 5 ? -3 : -120; // in seconds
+        doLimitsTest(cal, fieldsToTest, startDate, testTime);
+    }
+    
+    /**
+     * Test the functions getMaximum/getGeratestMinimum logically correct.
+     * This method assumes day of week cycle is consistent.
+     * @param cal The calendar instance to be tested.
+     * @param leapMonth true if the calendar system has leap months
+     */
+    public void doTheoreticalLimitsTest(Calendar cal, boolean leapMonth) {
+        int nDOW = cal.getMaximum(Calendar.DAY_OF_WEEK);
+        int maxDOY = cal.getMaximum(Calendar.DAY_OF_YEAR);
+        int lmaxDOW = cal.getLeastMaximum(Calendar.DAY_OF_YEAR);
+        int maxWOY = cal.getMaximum(Calendar.WEEK_OF_YEAR);
+        int lmaxWOY = cal.getLeastMaximum(Calendar.WEEK_OF_YEAR);
+        int maxM = cal.getMaximum(Calendar.MONTH) + 1;
+        int lmaxM = cal.getLeastMaximum(Calendar.MONTH) + 1;
+        int maxDOM = cal.getMaximum(Calendar.DAY_OF_MONTH);
+        int lmaxDOM = cal.getLeastMaximum(Calendar.DAY_OF_MONTH);
+        int maxDOWIM = cal.getMaximum(Calendar.DAY_OF_WEEK_IN_MONTH);
+        int lmaxDOWIM = cal.getLeastMaximum(Calendar.DAY_OF_WEEK_IN_MONTH);
+        int maxWOM = cal.getMaximum(Calendar.WEEK_OF_MONTH);
+        int lmaxWOM = cal.getLeastMaximum(Calendar.WEEK_OF_MONTH);
+        int minDaysInFirstWeek = cal.getMinimalDaysInFirstWeek();
+
+        // Day of year
+        int expected;
+        if (!leapMonth) {
+            expected = maxM*maxDOM;
+            if (maxDOY > expected) {
+                errln("FAIL: Maximum value of DAY_OF_YEAR is too big: " + maxDOY + "/expected: <=" + expected);
+            }
+            expected = lmaxM*lmaxDOM;
+            if (lmaxDOW < expected) {
+                errln("FAIL: Least maximum value of DAY_OF_YEAR is too small: " + lmaxDOW + "/expected: >=" + expected);
+            }
+        }
+
+        // Week of year
+        expected = maxDOY/nDOW + 1;
+        if (maxWOY > expected) {
+            errln("FAIL: Maximum value of WEEK_OF_YEAR is too big: " + maxWOY + "/expected: <=" + expected);
+        }
+        expected = lmaxDOW/nDOW;
+        if (lmaxWOY < expected) {
+            errln("FAIL: Least maximum value of WEEK_OF_YEAR is too small: " + lmaxWOY + "/expected >=" + expected);
+        }
+
+        // Day of week in month
+        expected = (maxDOM + nDOW - 1)/nDOW;
+        if (maxDOWIM != expected) {
+            errln("FAIL: Maximum value of DAY_OF_WEEK_IN_MONTH is incorrect: " + maxDOWIM + "/expected: " + expected);
+        }
+        expected = (lmaxDOM + nDOW - 1)/nDOW;
+        if (lmaxDOWIM != expected) {
+            errln("FAIL: Least maximum value of DAY_OF_WEEK_IN_MONTH is incorrect: " + lmaxDOWIM + "/expected: " + expected);
+        }
+
+        // Week of month
+        expected = (maxDOM + (nDOW - 1) + (nDOW - minDaysInFirstWeek)) / nDOW;
+        if (maxWOM != expected) {
+            errln("FAIL: Maximum value of WEEK_OF_MONTH is incorrect: " + maxWOM + "/expected: " + expected);
+        }
+        expected = (lmaxDOM + (nDOW - minDaysInFirstWeek)) / nDOW;
+        if (lmaxWOM != expected) {
+            errln("FAIL: Least maximum value of WEEK_OF_MONTH is incorrect: " + lmaxWOM + "/expected: " + expected);
+        }
+    }
+    
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     * On input the month value is zero-based, but in the result string it is one-based.
+     */
+    static public String ymdToString(int year, int month, int day) {
+        return "" + year + "/" + (month+1) + "/" + day;
+    }
+
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     */
+    static public String ymdToString(Calendar cal) {
+        double day = getJulianDay(cal);
+        if (cal instanceof ChineseCalendar) {
+            return "" + cal.get(Calendar.EXTENDED_YEAR) + "/" +
+                (cal.get(Calendar.MONTH)+1) +
+                (cal.get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") + "/" +
+                cal.get(Calendar.DATE) + " (" + day + ", time=" + cal.getTimeInMillis() + ")";
+        }
+        return ymdToString(cal.get(Calendar.EXTENDED_YEAR),
+                            cal.get(MONTH), cal.get(DATE)) +
+                            " (" + day + ", time=" + cal.getTimeInMillis() + ")";
+    }
+
+    static double getJulianDay(Calendar cal) {
+        return (cal.getTime().getTime() - JULIAN_EPOCH) / DAY_MS;
+    }
+
+    static final double DAY_MS = 24*60*60*1000.0;
+    static final long JULIAN_EPOCH = -210866760000000L;   // 1/1/4713 BC 12:00
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/ChineseTest.java b/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
new file mode 100644
index 0000000..148d328
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
@@ -0,0 +1,684 @@
+/*********************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import com.ibm.icu.text.*;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Test of ChineseCalendar.
+ *
+ * Leap months in this century:
+ * Wed May 23 2001 = 4638-04*-01, Year 18, Cycle 78
+ * Sun Mar 21 2004 = 4641-02*-01, Year 21, Cycle 78
+ * Thu Aug 24 2006 = 4643-07*-01, Year 23, Cycle 78
+ * Tue Jun 23 2009 = 4646-05*-01, Year 26, Cycle 78
+ * Mon May 21 2012 = 4649-04*-01, Year 29, Cycle 78
+ * Fri Oct 24 2014 = 4651-09*-01, Year 31, Cycle 78
+ * Sun Jul 23 2017 = 4654-06*-01, Year 34, Cycle 78
+ * Sat May 23 2020 = 4657-04*-01, Year 37, Cycle 78
+ * Wed Mar 22 2023 = 4660-02*-01, Year 40, Cycle 78
+ * Fri Jul 25 2025 = 4662-06*-01, Year 42, Cycle 78
+ * Fri Jun 23 2028 = 4665-05*-01, Year 45, Cycle 78
+ * Tue Apr 22 2031 = 4668-03*-01, Year 48, Cycle 78
+ * Thu Dec 22 2033 = 4670-11*-01, Year 50, Cycle 78
+ * Wed Jul 23 2036 = 4673-06*-01, Year 53, Cycle 78
+ * Wed Jun 22 2039 = 4676-05*-01, Year 56, Cycle 78
+ * Sat Mar 22 2042 = 4679-02*-01, Year 59, Cycle 78
+ * Tue Aug 23 2044 = 4681-07*-01, Year 01, Cycle 79
+ * Sun Jun 23 2047 = 4684-05*-01, Year 04, Cycle 79
+ * Thu Apr 21 2050 = 4687-03*-01, Year 07, Cycle 79
+ * Mon Sep 23 2052 = 4689-08*-01, Year 09, Cycle 79
+ * Sat Jul 24 2055 = 4692-06*-01, Year 12, Cycle 79
+ * Wed May 22 2058 = 4695-04*-01, Year 15, Cycle 79
+ * Wed Apr 20 2061 = 4698-03*-01, Year 18, Cycle 79
+ * Fri Aug 24 2063 = 4700-07*-01, Year 20, Cycle 79
+ * Wed Jun 23 2066 = 4703-05*-01, Year 23, Cycle 79
+ * Tue May 21 2069 = 4706-04*-01, Year 26, Cycle 79
+ * Thu Sep 24 2071 = 4708-08*-01, Year 28, Cycle 79
+ * Tue Jul 24 2074 = 4711-06*-01, Year 31, Cycle 79
+ * Sat May 22 2077 = 4714-04*-01, Year 34, Cycle 79
+ * Sat Apr 20 2080 = 4717-03*-01, Year 37, Cycle 79
+ * Mon Aug 24 2082 = 4719-07*-01, Year 39, Cycle 79
+ * Fri Jun 22 2085 = 4722-05*-01, Year 42, Cycle 79
+ * Fri May 21 2088 = 4725-04*-01, Year 45, Cycle 79
+ * Sun Sep 24 2090 = 4727-08*-01, Year 47, Cycle 79
+ * Thu Jul 23 2093 = 4730-06*-01, Year 50, Cycle 79
+ * Tue May 22 2096 = 4733-04*-01, Year 53, Cycle 79
+ * Sun Mar 22 2099 = 4736-02*-01, Year 56, Cycle 79
+ */
+public class ChineseTest extends CalendarTest {
+
+    public static void main(String args[]) throws Exception {
+        new ChineseTest().run(args);
+    }
+
+    /**
+     * Test basic mapping to and from Gregorian.
+     */
+    public void TestMapping() {
+
+        final int[] DATA = {
+            // (Note: months are 1-based)
+            // Gregorian    Chinese
+            1964,  9,  4,   4601,  7,0, 28,
+            1964,  9,  5,   4601,  7,0, 29,
+            1964,  9,  6,   4601,  8,0,  1,
+            1964,  9,  7,   4601,  8,0,  2,
+            1961, 12, 25,   4598, 11,0, 18,
+            1999,  6,  4,   4636,  4,0, 21,
+            
+            1990,  5, 23,   4627,  4,0, 29,
+            1990,  5, 24,   4627,  5,0,  1,
+            1990,  6, 22,   4627,  5,0, 30,
+            1990,  6, 23,   4627,  5,1,  1,
+            1990,  7, 20,   4627,  5,1, 28,
+            1990,  7, 21,   4627,  5,1, 29,
+            1990,  7, 22,   4627,  6,0,  1,
+        };
+
+        ChineseCalendar cal = new ChineseCalendar();
+        StringBuffer buf = new StringBuffer();
+
+        logln("Gregorian -> Chinese");
+        //java.util.Calendar grego = java.util.Calendar.getInstance();
+        Calendar grego = Calendar.getInstance();
+        grego.clear();
+        for (int i=0; i<DATA.length; ) {
+            grego.set(DATA[i++], DATA[i++]-1, DATA[i++]);
+            Date date = grego.getTime();
+            cal.setTime(date);
+            int y = cal.get(Calendar.EXTENDED_YEAR);
+            int m = cal.get(Calendar.MONTH)+1; // 0-based -> 1-based
+            int L = cal.get(ChineseCalendar.IS_LEAP_MONTH);
+            int d = cal.get(Calendar.DAY_OF_MONTH);
+            int yE = DATA[i++]; // Expected y, m, isLeapMonth, d
+            int mE = DATA[i++]; // 1-based
+            int LE = DATA[i++];
+            int dE = DATA[i++];
+            buf.setLength(0);
+            buf.append(date + " -> ");
+            buf.append(y + "/" + m + (L==1?"(leap)":"") + "/" + d);
+            if (y == yE && m == mE && L == LE && d == dE) {
+                logln("OK: " + buf.toString());
+            } else {
+                errln("Fail: " + buf.toString() + ", expected " +
+                      yE + "/" + mE + (LE==1?"(leap)":"") + "/" + dE);
+            }
+        }
+
+        logln("Chinese -> Gregorian");
+        for (int i=0; i<DATA.length; ) {
+            grego.set(DATA[i++], DATA[i++]-1, DATA[i++]);
+            Date dexp = grego.getTime();
+            int cyear = DATA[i++];
+            int cmonth = DATA[i++];
+            int cisleapmonth = DATA[i++];
+            int cdayofmonth = DATA[i++];
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, cyear);
+            cal.set(Calendar.MONTH, cmonth-1);
+            cal.set(ChineseCalendar.IS_LEAP_MONTH, cisleapmonth);
+            cal.set(Calendar.DAY_OF_MONTH, cdayofmonth);
+            Date date = cal.getTime();
+            buf.setLength(0);
+            buf.append(cyear + "/" + cmonth +
+                       (cisleapmonth==1?"(leap)":"") + "/" + cdayofmonth);
+            buf.append(" -> " + date);
+            if (date.equals(dexp)) {
+                logln("OK: " + buf.toString());
+            } else {
+                errln("Fail: " + buf.toString() + ", expected " + dexp);
+            }
+        }
+    }
+
+    /**
+     * Make sure no Gregorian dates map to Chinese 1-based day of
+     * month zero.  This was a problem with some of the astronomical
+     * new moon determinations.
+     */
+    public void TestZeroDOM() {
+        ChineseCalendar cal = new ChineseCalendar();
+        GregorianCalendar greg = new GregorianCalendar(1989, Calendar.SEPTEMBER, 1);
+        logln("Start: " + greg.getTime());
+        for (int i=0; i<1000; ++i) {
+            cal.setTimeInMillis(greg.getTimeInMillis());
+            if (cal.get(Calendar.DAY_OF_MONTH) == 0) {
+                errln("Fail: " + greg.getTime() + " -> " +
+                      cal.get(Calendar.EXTENDED_YEAR) + "/" +
+                      cal.get(Calendar.MONTH) +
+                      (cal.get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") +
+                      "/" + cal.get(Calendar.DAY_OF_MONTH));
+            }
+            greg.add(Calendar.DAY_OF_YEAR, 1);
+        }
+        logln("End: " + greg.getTime());
+    }
+
+    /**
+     * Test minimum and maximum functions.
+     */
+    public void TestLimits() {
+        // The number of days and the start date can be adjusted
+        // arbitrarily to either speed up the test or make it more
+        // thorough, but try to test at least a full year, preferably a
+        // full non-leap and a full leap year.
+
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1989, Calendar.NOVEMBER, 1);
+        ChineseCalendar chinese = new ChineseCalendar();
+        doLimitsTest(chinese, null, tempcal.getTime());
+        doTheoreticalLimitsTest(chinese, true);
+    }
+
+    /**
+     * Run through several standard tests from Dershowitz & Reingold.
+     */
+    public void TestJulianDayMapping() {
+
+        final TestCase[] tests = {
+            //
+            // From Dershowitz & Reingold, "Calendrical Calculations".
+            //
+            // The months in this table are 1-based rather than 0-based.
+            //
+            // * Failing fields->millis
+            // ** Millis->fields gives 0-based month -1
+            // These failures were fixed by changing the start search date
+            // for the winter solstice from Dec 15 to Dec 1.
+            // 
+            //                  Julian Day   Era  Year Month  Leap   DOM WkDay
+            new ChineseTestCase(1507231.5,   35,   11,    6, false,   12,  SUN),
+            new ChineseTestCase(1660037.5,   42,    9,   10, false,   27,  WED),
+            new ChineseTestCase(1746893.5,   46,    7,    8, false,    4,  WED),
+            new ChineseTestCase(1770641.5,   47,   12,    8, false,    9,  SUN),
+            new ChineseTestCase(1892731.5,   52,   46,   11, false,   20,  WED),
+            new ChineseTestCase(1931579.5,   54,   33,    4, false,    5,  MON),
+            new ChineseTestCase(1974851.5,   56,   31,   10, false,   15,  SAT),
+            new ChineseTestCase(2091164.5,   61,   50,    3, false,    7,  SUN),
+            new ChineseTestCase(2121509.5,   63,   13,    4, false,   24,  SUN),
+            new ChineseTestCase(2155779.5,   64,   47,    2, false,    9,  FRI),
+            new ChineseTestCase(2174029.5,   65,   37,    2, false,    9,  SAT),
+            new ChineseTestCase(2191584.5,   66,   25,    2, false,   23,  FRI),
+            new ChineseTestCase(2195261.5,   66,   35,    3, false,    9,  SUN), //*
+            new ChineseTestCase(2229274.5,   68,    8,    5, false,    2,  SUN), //*
+            new ChineseTestCase(2245580.5,   68,   53,    1, false,    8,  WED), //**
+            new ChineseTestCase(2266100.5,   69,   49,    3, false,    4,  SAT), 
+            new ChineseTestCase(2288542.5,   70,   50,    8, false,    2,  SAT), //*
+            new ChineseTestCase(2290901.5,   70,   57,    1, false,   29,  SAT), //*
+            new ChineseTestCase(2323140.5,   72,   25,    4,  true,   20,  WED), //*
+            new ChineseTestCase(2334848.5,   72,   57,    6, false,    5,  SUN),
+            new ChineseTestCase(2348020.5,   73,   33,    6, false,    6,  FRI),
+            new ChineseTestCase(2366978.5,   74,   25,    5, false,    5,  SUN),
+            new ChineseTestCase(2385648.5,   75,   16,    6, false,   12,  MON),
+            new ChineseTestCase(2392825.5,   75,   36,    2, false,   13,  WED),
+            new ChineseTestCase(2416223.5,   76,   40,    3, false,   22,  SUN),
+            new ChineseTestCase(2425848.5,   77,    6,    7, false,   21,  SUN),
+            new ChineseTestCase(2430266.5,   77,   18,    8, false,    9,  MON),
+            new ChineseTestCase(2430833.5,   77,   20,    3, false,   15,  MON),
+            new ChineseTestCase(2431004.5,   77,   20,    9, false,    9,  THU),
+            new ChineseTestCase(2448698.5,   78,    9,    2, false,   14,  TUE),
+            new ChineseTestCase(2450138.5,   78,   13,    1, false,    7,  SUN),
+            new ChineseTestCase(2465737.5,   78,   55,   10, false,   14,  WED),
+            new ChineseTestCase(2486076.5,   79,   51,    6, false,    7,  SUN),
+
+            // Additional tests not from D&R
+            new ChineseTestCase(2467496.5,   78,   60,    8, false,    2,  FRI), // year 60
+        };
+
+        ChineseCalendar cal = new ChineseCalendar();
+        cal.setLenient(true);
+        doTestCases(tests, cal);
+    }
+
+    /**
+     * Test formatting.
+     */
+    public void TestFormat() {
+        ChineseCalendar cal = new ChineseCalendar();
+        DateFormat fmt = DateFormat.getDateTimeInstance(cal,
+                                    DateFormat.DEFAULT, DateFormat.DEFAULT);
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        
+        Date[] DATA = new Date[2];
+        tempcal.set(2001, Calendar.MAY, 22);
+        DATA[0] = tempcal.getTime();
+        tempcal.set(2001, Calendar.MAY, 23);
+        DATA[1] = tempcal.getTime();
+        // Wed May 23 2001 = Month 4(leap), Day 1, Year 18, Cycle 78
+        
+        for (int i=0; i<DATA.length; ++i) {
+            String s = fmt.format(DATA[i]);
+            try {
+                Date e = fmt.parse(s);
+                if (e.equals(DATA[i])) {
+                    logln("Ok: " + DATA[i] + " -> " + s + " -> " + e);
+                } else {
+                    errln("FAIL: " + DATA[i] + " -> " + s + " -> " + e);
+                }
+            } catch (java.text.ParseException e) {
+                errln("Fail: " + s + " -> parse failure at " + e.getErrorOffset());
+                errln(e.toString());
+            }
+        }
+    }
+
+    /**
+     * Make sure IS_LEAP_MONTH participates in field resolution.
+     */
+    public void TestResolution() {
+        ChineseCalendar cal = new ChineseCalendar();
+        DateFormat fmt = DateFormat.getDateInstance(cal, DateFormat.DEFAULT);
+
+        // May 22 2001 = y4638 m4 d30 doy119
+        // May 23 2001 = y4638 m4* d1 doy120
+
+        final int THE_YEAR = 4638;
+        final int END = -1;
+
+        int[] DATA = {
+            // Format:
+            // (field, value)+, END, exp.month, exp.isLeapMonth, exp.DOM
+            // Note: exp.month is ONE-BASED
+
+            // If we set DAY_OF_YEAR only, that should be used
+            Calendar.DAY_OF_YEAR, 1,
+            END,
+            1,0,1, // Expect 1-1
+            
+            // If we set MONTH only, that should be used
+            ChineseCalendar.IS_LEAP_MONTH, 1,
+            Calendar.DAY_OF_MONTH, 1,
+            Calendar.MONTH, 3,
+            END,
+            4,1,1, // Expect 4*-1
+            
+            // If we set the DOY last, that should take precedence
+            Calendar.MONTH, 1, // Should ignore
+            ChineseCalendar.IS_LEAP_MONTH, 1, // Should ignore
+            Calendar.DAY_OF_MONTH, 1, // Should ignore
+            Calendar.DAY_OF_YEAR, 121,
+            END,
+            4,1,2, // Expect 4*-2
+            
+            // I've disabled this test because it doesn't work this way,
+            // not even with a GregorianCalendar!  MONTH alone isn't enough
+            // to supersede DAY_OF_YEAR.  Some other month-related field is
+            // also required. - Liu 11/28/00
+            //! // If we set MONTH last, that should take precedence
+            //! ChineseCalendar.IS_LEAP_MONTH, 1,
+            //! Calendar.DAY_OF_MONTH, 1,
+            //! Calendar.DAY_OF_YEAR, 5, // Should ignore
+            //! Calendar.MONTH, 3,
+            //! END,
+            //! 4,1,1, // Expect 4*-1
+            
+            // If we set IS_LEAP_MONTH last, that should take precedence
+            Calendar.MONTH, 3,
+            Calendar.DAY_OF_MONTH, 1,
+            Calendar.DAY_OF_YEAR, 5, // Should ignore
+            ChineseCalendar.IS_LEAP_MONTH, 1,
+            END,
+            4,1,1, // Expect 4*-1
+        };
+
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<DATA.length; ) {
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, THE_YEAR);
+            buf.setLength(0);
+            buf.append("EXTENDED_YEAR=" + THE_YEAR);
+            while (DATA[i] != END) {
+                cal.set(DATA[i++], DATA[i++]);
+                buf.append(" " + fieldName(DATA[i-2]) + "=" + DATA[i-1]);
+            }
+            ++i; // Skip over END mark
+            int expMonth = DATA[i++]-1;
+            int expIsLeapMonth = DATA[i++];
+            int expDOM = DATA[i++];
+            int month = cal.get(Calendar.MONTH);
+            int isLeapMonth = cal.get(ChineseCalendar.IS_LEAP_MONTH);
+            int dom = cal.get(Calendar.DAY_OF_MONTH);
+            if (expMonth == month && expIsLeapMonth == isLeapMonth &&
+                dom == expDOM) {
+                logln("OK: " + buf + " => " + fmt.format(cal.getTime()));
+            } else {
+                String s = fmt.format(cal.getTime());
+                cal.clear();
+                cal.set(Calendar.EXTENDED_YEAR, THE_YEAR);
+                cal.set(Calendar.MONTH, expMonth);
+                cal.set(ChineseCalendar.IS_LEAP_MONTH, expIsLeapMonth);
+                cal.set(Calendar.DAY_OF_MONTH, expDOM);
+                errln("Fail: " + buf + " => " + s +
+                      "=" + (month+1) + "," + isLeapMonth + "," + dom +
+                      ", expected " + fmt.format(cal.getTime()) +
+                      "=" + (expMonth+1) + "," + expIsLeapMonth + "," + expDOM);
+            }
+        }
+    }
+
+    /**
+     * Test the behavior of fields that are out of range.
+     */
+    public void TestOutOfRange() {
+        int[] DATA = new int[] {
+            // Input       Output
+            4638, 13,  1,   4639,  1,  1,
+            4638, 18,  1,   4639,  6,  1,
+            4639,  0,  1,   4638, 12,  1,
+            4639, -6,  1,   4638,  6,  1,
+            4638,  1, 32,   4638,  2,  2, // 1-4638 has 30 days
+            4638,  2, -1,   4638,  1, 29,
+        };
+        ChineseCalendar cal = new ChineseCalendar();
+        for (int i=0; i<DATA.length; ) {
+            int y1 = DATA[i++];
+            int m1 = DATA[i++]-1;
+            int d1 = DATA[i++];
+            int y2 = DATA[i++];
+            int m2 = DATA[i++]-1;
+            int d2 = DATA[i++];
+            cal.clear();
+            cal.set(Calendar.EXTENDED_YEAR, y1);
+            cal.set(MONTH, m1);
+            cal.set(DATE, d1);
+            int y = cal.get(Calendar.EXTENDED_YEAR);
+            int m = cal.get(MONTH);
+            int d = cal.get(DATE);
+            if (y!=y2 || m!=m2 || d!=d2) {
+                errln("Fail: " + y1 + "/" + (m1+1) + "/" + d1 + " resolves to " +
+                      y + "/" + (m+1) + "/" + d + ", expected " +
+                      y2 + "/" + (m2+1) + "/" + d2);
+            } else  if (isVerbose()) {
+                logln("OK: " + y1 + "/" + (m1+1) + "/" + d1 + " resolves to " +
+                      y + "/" + (m+1) + "/" + d);
+            }
+        }
+    }
+
+    /**
+     * Test the behavior of ChineseCalendar.add().  The only real
+     * nastiness with roll is the MONTH field around leap months.
+     */
+    public void TestAdd() {
+        int[][] tests = new int[][] {
+            // MONTHS ARE 1-BASED HERE
+            // input               add           output
+            // year  mon    day    field amount  year  mon    day
+            {  4642,   3,0,  15,   MONTH,   3,   4642,   6,0,  15 }, // normal
+            {  4639,  12,0,  15,   MONTH,   1,   4640,   1,0,  15 }, // across year
+            {  4640,   1,0,  15,   MONTH,  -1,   4639,  12,0,  15 }, // across year
+            {  4638,   3,0,  15,   MONTH,   3,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,   2,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH,   1,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH,   1,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,0,  30,   MONTH,   1,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,   2,   4638,   5,0,  30 }, // no dom pin
+            {  4638,   4,0,  30,   MONTH,   3,   4638,   6,0,  29 }, // dom should pin
+        };
+       
+        ChineseCalendar cal = new ChineseCalendar();
+        doRollAdd(ADD, cal, tests);
+    }
+
+    /**
+     * Test the behavior of ChineseCalendar.roll().  The only real
+     * nastiness with roll is the MONTH field around leap months.
+     */
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            // MONTHS ARE 1-BASED HERE
+            // input               add           output
+            // year  mon    day    field amount  year  mon    day
+            {  4642,   3,0,  15,   MONTH,   3,   4642,   6,0,  15 }, // normal
+            {  4642,   3,0,  15,   MONTH,  11,   4642,   2,0,  15 }, // normal
+            {  4639,  12,0,  15,   MONTH,   1,   4639,   1,0,  15 }, // across year
+            {  4640,   1,0,  15,   MONTH,  -1,   4640,  12,0,  15 }, // across year
+            {  4638,   3,0,  15,   MONTH,   3,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,  16,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,   2,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   3,0,  15,   MONTH,  28,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH,   1,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,0,  15,   MONTH, -12,   4638,   4,1,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH,   1,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,1,  15,   MONTH, -25,   4638,   5,0,  15 }, // 4=leap
+            {  4638,   4,0,  30,   MONTH,   1,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,  14,   4638,   4,1,  29 }, // dom should pin
+            {  4638,   4,0,  30,   MONTH,  15,   4638,   5,0,  30 }, // no dom pin
+            {  4638,   4,0,  30,   MONTH, -10,   4638,   6,0,  29 }, // dom should pin
+        };
+       
+        ChineseCalendar cal = new ChineseCalendar();
+        doRollAdd(ROLL, cal, tests);
+    }
+    
+    void doRollAdd(boolean roll, ChineseCalendar cal, int[][] tests) {
+        String name = roll ? "rolling" : "adding";
+        
+        for (int i = 0; i < tests.length; i++) {
+            int[] test = tests[i];
+
+            cal.clear();
+                cal.set(Calendar.EXTENDED_YEAR, test[0]);
+                cal.set(Calendar.MONTH, test[1]-1);
+                cal.set(ChineseCalendar.IS_LEAP_MONTH, test[2]);
+                cal.set(Calendar.DAY_OF_MONTH, test[3]);
+            if (roll) {
+                cal.roll(test[4], test[5]);
+            } else {
+                cal.add(test[4], test[5]);
+            }
+            if (cal.get(Calendar.EXTENDED_YEAR) != test[6] ||
+                cal.get(MONTH) != (test[7]-1) ||
+                cal.get(ChineseCalendar.IS_LEAP_MONTH) != test[8] ||
+                cal.get(DATE) != test[9]) {
+                errln("Fail: " + name + " " +
+                      ymdToString(test[0], test[1]-1, test[2], test[3])
+                      + " " + fieldName(test[4]) + " by " + test[5]
+                      + ": expected " +
+                      ymdToString(test[6], test[7]-1, test[8], test[9])
+                      + ", got " + ymdToString(cal));
+            } else if (isVerbose()) {
+                logln("OK: " + name + " " +
+                      ymdToString(test[0], test[1]-1, test[2], test[3])
+                    + " " + fieldName(test[4]) + " by " + test[5]
+                    + ": got " + ymdToString(cal));
+            }
+        }
+    }
+
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     * On input the month value is zero-based, but in the result string it is one-based.
+     */
+    static public String ymdToString(int year, int month, int isLeapMonth, int day) {
+        return "" + year + "/" + (month+1) +
+            ((isLeapMonth!=0)?"(leap)":"") +
+            "/" + day;
+    }
+
+//    public void TestFindLeapMonths() {
+//        ChineseCalendar cal = new ChineseCalendar();
+//        cal.setTime(new Date(2000-1900, Calendar.JANUARY, 1));
+//        long end = new Date(2100-1900, Calendar.JANUARY, 1).getTime();
+//        ChineseDateFormat fmt = (ChineseDateFormat) DateFormat.getInstance(cal);
+//        fmt.applyPattern("u-MMl-dd, 'Year' y, 'Cycle' G");
+//        while (cal.getTimeInMillis() < end) {
+//            if (cal.get(ChineseCalendar.IS_LEAP_MONTH) != 0) {
+//                cal.set(Calendar.DAY_OF_MONTH, 1);
+//                logln(cal.getTime() + " = " + fmt.format(cal.getTime()));
+//                cal.set(Calendar.DAY_OF_MONTH, 29);
+//            }
+//            cal.add(Calendar.DAY_OF_YEAR, 25);
+//        }
+//    }
+
+    public void TestCoverage() {
+        // Coverage for constructors
+        {
+            // new ChineseCalendar(Date)
+            ChineseCalendar cal = new ChineseCalendar(new Date());
+            if(cal == null){
+                errln("could not create ChineseCalendar with Date");
+            }
+        }
+
+        {
+            // new ChineseCalendar(int year, int month, int isLeapMonth, int date)
+            ChineseCalendar cal = new ChineseCalendar(23, Calendar.JULY, 1, 2);
+            if(cal == null){
+                errln("could not create ChineseCalendar with year,month,isLeapMonth,date");
+            }
+            // Make sure the given values are properly set
+            if (cal.get(Calendar.YEAR) != 23 || cal.get(Calendar.MONTH) != Calendar.JULY
+                    || cal.get(ChineseCalendar.IS_LEAP_MONTH) != 1 || cal.get(Calendar.DATE) != 2
+                    || cal.get(Calendar.MILLISECONDS_IN_DAY) != 0) {
+                errln("ChineseCalendar was initialized incorrectly with year,month,isLeapMonth,date");
+            }
+        }
+
+        {
+            // new ChineseCalendar(int year, int month, int isLeapMonth, int date, int hour, int minute, int second)
+            ChineseCalendar cal = new ChineseCalendar(23, Calendar.JULY, 1, 2, 12, 34, 56);
+            if(cal == null){
+                errln("could not create ChineseCalendar with year,month,isLeapMonth,date,hour,minute,second");
+            }
+            // Make sure the given values are properly set
+            if (cal.get(Calendar.YEAR) != 23 || cal.get(Calendar.MONTH) != Calendar.JULY
+                    || cal.get(ChineseCalendar.IS_LEAP_MONTH) != 1 || cal.get(Calendar.DATE) != 2
+                    || cal.get(Calendar.HOUR_OF_DAY) != 12 || cal.get(Calendar.MINUTE) != 34
+                    || cal.get(Calendar.SECOND) != 56 || cal.get(Calendar.MILLISECOND) != 0) {
+                errln("ChineseCalendar was initialized incorrectly with year,month,isLeapMonth,date,hour,minute,second");
+            }
+        }
+
+        {
+            // new ChineseCalendar(Locale)
+            ChineseCalendar cal = new ChineseCalendar(Locale.getDefault());
+            if(cal == null){
+                errln("could not create ChineseCalendar with Locale");
+            }
+        }
+
+        {
+            // new ChineseCalendar(ULocale)
+            ChineseCalendar cal = new ChineseCalendar(ULocale.getDefault());
+            if(cal == null){
+                errln("could not create ChineseCalendar with ULocale");
+            }
+        }
+        
+
+        {
+            // new ChineseCalendar(TimeZone)
+            ChineseCalendar cal = new ChineseCalendar(TimeZone.getDefault()); 
+            if(cal == null){
+                errln("could not create ChineseCalendar with TimeZone");
+            }
+        }
+
+        {
+            // new ChineseCalendar(TimeZone, Locale)
+            ChineseCalendar cal = new ChineseCalendar(TimeZone.getDefault(), Locale.getDefault());
+            if(cal == null){
+                errln("could not create ChineseCalendar with TimeZone,Locale");
+            }
+        }
+
+        {
+            // new ChineseCalendar(TimeZone, ULocale)
+            ChineseCalendar cal = new ChineseCalendar(TimeZone.getDefault(), ULocale.getDefault());
+            if(cal == null){
+                errln("could not create ChineseCalendar with TimeZone,ULocale");
+            }
+        }
+
+        ChineseCalendar cal = new ChineseCalendar();
+        DateFormat format = DateFormat.getInstance(cal);
+        if(!(format instanceof ChineseDateFormat)){
+            errln("DateFormat.getInstance("+cal+") did not return a ChineseDateFormat");
+        }
+        ChineseDateFormat fmt = (ChineseDateFormat)format;
+        fmt.applyPattern("llyyll");
+        Date time = getDate(2100, Calendar.JANUARY, 1);
+        String str = fmt.format(time);
+        try {
+            Date e = fmt.parse(str);
+            logln("chinese calendar time: " + time + " result: " + str + " --> " + e);
+        } catch (java.text.ParseException ex) {
+            logln(ex.getMessage()); // chinese calendar can't parse this, no error for now
+        }
+
+        //new ChineseCalendar(TimeZone,ULocale)
+        ChineseCalendar ccal2 = new ChineseCalendar(TimeZone.getDefault(),
+                                                   ULocale.CHINA);
+        if(ccal2==null){
+            errln("could not create ChineseCalendar with TimeZone ULocale");
+        } else {
+            fmt = (ChineseDateFormat)DateFormat.getDateInstance(ccal2, DateFormat.DEFAULT, ULocale.CHINA);
+            time = getDate(2001, Calendar.MAY, 23);
+            str = fmt.format(time);
+            logln("Chinese calendar time: " + time + " result: " + str);
+        }
+    }
+    public void TestScratch(){
+        String[] strMonths = {"Januari", "Pebruari", "Maret", "April", "Mei", "Juni",
+                "Juli", "Agustus", "September", "Oktober", "Nopember", "Desember"};
+        String[] strShortMonths = {"Jan", "Peb", "Mar", "Apr", "Mei", "Jun",
+                     "Jul", "Agt", "Sep", "Okt", "Nop", "Des"};
+        String[] strWeeks = {"", "Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
+        DateFormatSymbols dfsDate = new DateFormatSymbols(new Locale("id", "ID"));
+        dfsDate.setMonths(strMonths);
+        dfsDate.setShortMonths(strShortMonths);
+        dfsDate.setWeekdays(strWeeks);
+        ULocale uloInd = dfsDate.getLocale(ULocale.ACTUAL_LOCALE);
+        if(uloInd==null){
+            errln("did not get the expected ULocale");
+        }
+        logln(uloInd.toString());
+        Locale locInd = uloInd.toLocale();
+        if(locInd==null){
+            errln("did not get the expected result");
+        }
+        logln(locInd.toString());
+    }
+
+    public void TestInitWithCurrentTime() {
+        // jb4555
+        // if the chinese calendar current millis isn't called, the default year is wrong.
+        // this test is assuming the 'year' is the current cycle
+        // so when we cross a cycle boundary, the target will need to change
+        // that shouldn't be for awhile yet... 
+
+        ChineseCalendar cc = new ChineseCalendar();
+        cc.set(Calendar.YEAR, 22);
+        cc.set(Calendar.MONTH, 0);
+         // need to set leap month flag off, otherwise, the test case always fails when
+         // current time is in a leap month
+        cc.set(ChineseCalendar.IS_LEAP_MONTH, 0);
+        cc.set(Calendar.DATE, 19);
+        cc.set(Calendar.HOUR_OF_DAY, 0);
+        cc.set(Calendar.MINUTE, 0);
+        cc.set(Calendar.SECOND, 0);
+        cc.set(Calendar.MILLISECOND, 0);
+
+        cc.add(Calendar.DATE, 1);
+ 
+        Calendar cal = new GregorianCalendar(2005, Calendar.FEBRUARY, 28);
+        Date target = cal.getTime();
+        Date result = cc.getTime();
+
+        assertEquals("chinese and gregorian date should match", target, result);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java b/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
new file mode 100644
index 0000000..924b6aa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
@@ -0,0 +1,53 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import java.util.Date;
+
+public class ChineseTestCase extends TestCase {
+
+    /**
+     * Initialize an object using a Julian day number and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param era the ERA field of tested calendar on the given Julian
+     * day
+     * @param year the YEAR field of tested calendar on the given
+     * Julian day
+     * @param month the MONTH (1-based) field of tested calendar on
+     * the given Julian day
+     * @param isLeapMonth if true, treat month as a leap month
+     * @param dayOfMonth the DAY_OF_MONTH field of tested calendar on the
+     * given Julian day
+     * @param dayOfWeek the DAY_OF_WEEK field of tested calendar on given
+     * Julian day
+     */
+    public ChineseTestCase(double julian,
+                           int era, int year, int month,
+                           boolean isLeapMonth, int dayOfMonth, int dayOfWeek) {
+
+        setTime(new Date(JULIAN_EPOCH + (long)(ONE_DAY * julian)));
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(ChineseCalendar.IS_LEAP_MONTH, isLeapMonth?1:0);
+        set(Calendar.DAY_OF_MONTH, dayOfMonth);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+    }
+
+    /**
+     * Return a String representation of this test case's time.
+     */
+    public String toString() {
+        return dowToString(get(Calendar.DAY_OF_WEEK)) +
+            get(Calendar.YEAR) + "of" + get(Calendar.ERA) +
+            "/" + (get(Calendar.MONTH)+1) +
+            (get(ChineseCalendar.IS_LEAP_MONTH)==1?"(leap)":"") + "/" +
+            get(Calendar.DAY_OF_MONTH);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java b/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
new file mode 100644
index 0000000..cad7a16
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
@@ -0,0 +1,1125 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.util.*;
+import com.ibm.icu.text.DateFormat;
+
+import java.util.Date;
+import java.util.Locale;
+import java.io.*;
+
+public class CompatibilityTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String argv[]) throws Exception {
+        new CompatibilityTest().run(argv);
+    }
+
+    static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+    };
+
+    /**
+     * Test the behavior of the GregorianCalendar around the changeover.
+     */
+    public void TestGregorianChangeover() {
+    
+        java.util.TimeZone jdkGMT = java.util.TimeZone.getTimeZone("GMT");
+        java.util.Calendar jdkCal = java.util.Calendar.getInstance(jdkGMT);
+        jdkCal.clear();
+        jdkCal.set(1582, Calendar.OCTOBER, 15);
+        
+//      if(jdkCal instanceof java.util.GregorianCalendar) {
+//          logln("jdk IS grego");
+//          java.util.GregorianCalendar jdkgc = (java.util.GregorianCalendar)
+//          jdkCal;
+//          logln("jdk change at: " + jdkgc.getGregorianChange() + "(" + jdkgc.getGregorianChange().getTime() +")" );
+//      } else {
+//          logln("jdk NOT grego");
+//      }
+
+        long a = jdkCal.getTime().getTime();
+        Date c = jdkCal.getTime();
+        c.toString();
+        long b = c.getTime();
+        if(a!=b) {
+            logln(" " + a + " != " + b);
+            logln("JDK has Gregorian cutover anomaly (1.5?) - skipping this test.");
+            return;
+        }
+
+        Date co = jdkCal.getTime();
+        logln("Change over (Oct 15 1582) = " + co + " (" + co.getTime() + ")");
+        final int ONE_DAY = 24*60*60*1000;
+        TimeZone gmt = TimeZone.getTimeZone("GMT");
+        GregorianCalendar cal = new GregorianCalendar(gmt);
+        /*
+          Changeover -7 days: 1582/9/28 dow=6
+          Changeover -6 days: 1582/9/29 dow=7
+          Changeover -5 days: 1582/9/30 dow=1
+          Changeover -4 days: 1582/10/1 dow=2
+          Changeover -3 days: 1582/10/2 dow=3
+          Changeover -2 days: 1582/10/3 dow=4
+          Changeover -1 days: 1582/10/4 dow=5
+          Changeover +0 days: 1582/10/15 dow=6
+          Changeover +1 days: 1582/10/16 dow=7
+          Changeover +2 days: 1582/10/17 dow=1
+          Changeover +3 days: 1582/10/18 dow=2
+          Changeover +4 days: 1582/10/19 dow=3
+          Changeover +5 days: 1582/10/20 dow=4
+          Changeover +6 days: 1582/10/21 dow=5
+          Changeover +7 days: 1582/10/22 dow=6
+          */
+        int MON[] = {  9,  9,  9,10,10,10,10, 10, 10, 10, 10, 10, 10, 10, 10 };
+        int DOM[] = { 28, 29, 30, 1, 2, 3, 4, 15, 16, 17, 18, 19, 20, 21, 22 };
+        int DOW[] = {  6,  7,  1, 2, 3, 4, 5,  6,  7,  1,  2,  3,  4,  5,  6 };
+        //                                     ^ <-Changeover Fri Oct 15 1582
+        int j=0;
+        for (int i=-7; i<=7; ++i, ++j) {
+            Date d = new Date(co.getTime() + i*ONE_DAY);
+            cal.setTime(d);
+            int y = cal.get(Calendar.YEAR), mon = cal.get(Calendar.MONTH)+1-Calendar.JANUARY,
+                dom = cal.get(Calendar.DATE), dow = cal.get(Calendar.DAY_OF_WEEK);
+            logln("Changeover " + (i>=0?"+":"") +
+                  i + " days: " + y + "/" + mon + "/" + dom + " dow=" + dow);
+            if (y != 1582 || mon != MON[j] || dom != DOM[j] || dow != DOW[j])
+                errln(" Fail: Above line is wrong");
+        }
+    }
+
+    /**
+     * Test the mapping between millis and fields.  For the purposes
+     * of this test, we don't care about timezones and week data
+     * (first day of week, minimal days in first week).
+     */
+    public void TestMapping() {
+        if (false) {
+            Date PURE_GREGORIAN = new Date(Long.MIN_VALUE);
+            Date PURE_JULIAN = new Date(Long.MAX_VALUE);
+            GregorianCalendar cal =
+                new GregorianCalendar(TimeZone.getTimeZone("UTC"));
+            final int EPOCH_JULIAN = 2440588;
+            final long ONE_DAY = 24*60*60*1000L;
+            com.ibm.icu.text.SimpleDateFormat fmt =
+                new com.ibm.icu.text.SimpleDateFormat("EEE MMM dd yyyy G");
+                /*HH:mm:ss.SSS z*/
+
+            for (int type=0; type<2; ++type) {
+                System.out.println(type==0 ? "Gregorian" : "Julian");
+                cal.setGregorianChange(type==0 ? PURE_GREGORIAN : PURE_JULIAN);
+                fmt.setCalendar(cal);
+                int[] J = {
+                    0x7FFFFFFF,
+                    0x7FFFFFF0,
+                    0x7F000000,
+                    0x78000000,
+                    0x70000000,
+                    0x60000000,
+                    0x50000000,
+                    0x40000000,
+                    0x30000000,
+                    0x20000000,
+                    0x10000000,
+                };
+                for (int i=0; i<J.length; ++i) {
+                    String[] lim = new String[2];
+                    long[] ms = new long[2];
+                    int jd = J[i];
+                    for (int sign=0; sign<2; ++sign) {
+                        int julian = jd;
+                        if (sign==0) julian = -julian;
+                        long millis = ((long)julian - EPOCH_JULIAN) * ONE_DAY;
+                        ms[sign] = millis;
+                        cal.setTime(new Date(millis));
+                        lim[sign] = fmt.format(cal.getTime());
+                    }
+                    System.out.println("JD +/-" +
+                                       Long.toString(jd, 16) +
+                                       ": " + ms[0] + ".." + ms[1] +
+                                       ": " + lim[0] + ".." + lim[1]);
+                }
+            }
+        }
+
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
+            //NEWCAL
+            Date PURE_GREGORIAN = new Date(Long.MIN_VALUE);
+            Date PURE_JULIAN = new Date(Long.MAX_VALUE);
+            GregorianCalendar cal = new GregorianCalendar();
+            final int EPOCH_JULIAN = 2440588;
+            final long ONE_DAY = 24*60*60*1000L;
+            int[] DATA = {
+                // Julian#   Year  Month               DOM   JULIAN:Year, Month,       DOM
+                2440588,     1970, Calendar.JANUARY,   1,    1969, Calendar.DECEMBER,  19, 
+                2415080,     1900, Calendar.MARCH,     1,    1900, Calendar.FEBRUARY,  17,
+                2451604,     2000, Calendar.FEBRUARY,  29,   2000, Calendar.FEBRUARY,  16,
+                2452269,     2001, Calendar.DECEMBER,  25,   2001, Calendar.DECEMBER,  12,
+                2416526,     1904, Calendar.FEBRUARY,  15,   1904, Calendar.FEBRUARY,  2,
+                2416656,     1904, Calendar.JUNE,      24,   1904, Calendar.JUNE,      11,
+                1721426,        1, Calendar.JANUARY,   1,       1, Calendar.JANUARY,   3,
+                2000000,      763, Calendar.SEPTEMBER, 18,    763, Calendar.SEPTEMBER, 14,
+                4000000,     6239, Calendar.JULY,      12,   6239, Calendar.MAY,       28,
+                8000000,    17191, Calendar.FEBRUARY,  26,  17190, Calendar.OCTOBER,   22,
+                10000000,   22666, Calendar.DECEMBER,  20,  22666, Calendar.JULY,      5,
+            };
+            for (int i=0; i<DATA.length; i+=7) {
+                int julian = DATA[i];
+                int year = DATA[i+1];
+                int month = DATA[i+2];
+                int dom = DATA[i+3];
+                int year2, month2, dom2;
+                long millis = (julian - EPOCH_JULIAN) * ONE_DAY;
+                String s;
+
+                // Test Gregorian computation
+                cal.setGregorianChange(PURE_GREGORIAN);
+                cal.clear();
+                cal.set(year, month, dom);
+                long calMillis = cal.getTime().getTime();
+                long delta = calMillis - millis;
+                cal.setTime(new Date(millis));
+                year2 = cal.get(Calendar.YEAR);
+                month2 = cal.get(Calendar.MONTH);
+                dom2 = cal.get(Calendar.DAY_OF_MONTH);
+                s = "G " + year + "-" + (month+1-Calendar.JANUARY) + "-" + dom +
+                    " => " + calMillis +
+                    " (" + ((float)delta/ONE_DAY) + " day delta) => " +
+                    year2 + "-" + (month2+1-Calendar.JANUARY) + "-" + dom2;
+                if (delta != 0 || year != year2 || month != month2 ||
+                    dom != dom2) errln(s + " FAIL");
+                else logln(s);
+                
+                // Test Julian computation
+                year = DATA[i+4];
+                month = DATA[i+5];
+                dom = DATA[i+6];
+                cal.setGregorianChange(PURE_JULIAN);
+                cal.clear();
+                cal.set(year, month, dom);
+                calMillis = cal.getTime().getTime();
+                delta = calMillis - millis;
+                cal.setTime(new Date(millis));
+                year2 = cal.get(Calendar.YEAR);
+                month2 = cal.get(Calendar.MONTH);
+                dom2 = cal.get(Calendar.DAY_OF_MONTH);
+                s = "J " + year + "-" + (month+1-Calendar.JANUARY) + "-" + dom +
+                    " => " + calMillis +
+                    " (" + ((float)delta/ONE_DAY) + " day delta) => " +
+                    year2 + "-" + (month2+1-Calendar.JANUARY) + "-" + dom2;
+                if (delta != 0 || year != year2 || month != month2 ||
+                    dom != dom2) errln(s + " FAIL");
+                else logln(s);
+            }
+
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.clear();
+            tempcal.set(1582, Calendar.OCTOBER, 15);
+            cal.setGregorianChange(tempcal.getTime());
+            auxMapping(cal, 1582, Calendar.OCTOBER, 4);
+            auxMapping(cal, 1582, Calendar.OCTOBER, 15);
+            auxMapping(cal, 1582, Calendar.OCTOBER, 16);
+            for (int y=800; y<3000; y+=1+(int)(100*Math.random())) {
+                for (int m=Calendar.JANUARY; m<=Calendar.DECEMBER; ++m) {
+                    auxMapping(cal, y, m, 15);
+                }
+            }
+        }
+        finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+    private void auxMapping(Calendar cal, int y, int m, int d) {
+        cal.clear();
+        cal.set(y, m, d);
+        long millis = cal.getTime().getTime();
+        cal.setTime(new Date(millis));
+        int year2 = cal.get(Calendar.YEAR);
+        int month2 = cal.get(Calendar.MONTH);
+        int dom2 = cal.get(Calendar.DAY_OF_MONTH);
+        if (y != year2 || m != month2 || dom2 != d)
+            errln("Round-trip failure: " + y + "-" + (m+1) + "-"+d+" =>ms=> " +
+                  year2 + "-" + (month2+1) + "-" + dom2);
+    }
+
+    public void TestGenericAPI() {
+        // not used String str;
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1990, Calendar.APRIL, 15);
+        Date when = tempcal.getTime();
+
+        String tzid = "TestZone";
+        int tzoffset = 123400;
+
+        SimpleTimeZone zone = new SimpleTimeZone(tzoffset, tzid);
+        Calendar cal = (Calendar)Calendar.getInstance((SimpleTimeZone)zone.clone());
+
+        if (!zone.equals(cal.getTimeZone())) errln("FAIL: Calendar.getTimeZone failed");
+
+        Calendar cal2 = Calendar.getInstance(cal.getTimeZone());
+
+        cal.setTime(when);
+        cal2.setTime(when);
+
+        if (!(cal.equals(cal2))) errln("FAIL: Calendar.operator== failed");
+        // if ((*cal != *cal2))  errln("FAIL: Calendar.operator!= failed");
+        if (!cal.equals(cal2) ||
+            cal.before(cal2) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        cal2.setTime(new Date(when.getTime() + 1000));
+        if (cal.equals(cal2) ||
+            cal2.before(cal) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        cal.roll(Calendar.SECOND, true);
+        if (!cal.equals(cal2) ||
+            cal.before(cal2) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        // Roll back to January
+        cal.roll(Calendar.MONTH, (int)(1 + Calendar.DECEMBER - cal.get(Calendar.MONTH)));
+        if (cal.equals(cal2) ||
+            cal2.before(cal) ||
+            cal.after(cal2)) errln("FAIL: equals/before/after failed");
+
+        // C++ only
+        /* TimeZone z = cal.orphanTimeZone();
+           if (z.getID(str) != tzid ||
+           z.getRawOffset() != tzoffset)
+           errln("FAIL: orphanTimeZone failed");
+           */
+
+        for (int i=0; i<2; ++i) {
+            boolean lenient = ( i > 0 );
+            cal.setLenient(lenient);
+            if (lenient != cal.isLenient()) errln("FAIL: setLenient/isLenient failed");
+            // Later: Check for lenient behavior
+        }
+
+        int i;
+        for (i=Calendar.SUNDAY; i<=Calendar.SATURDAY; ++i) {
+            cal.setFirstDayOfWeek(i);
+            if (cal.getFirstDayOfWeek() != i) errln("FAIL: set/getFirstDayOfWeek failed");
+        }
+
+        for (i=1; i<=7; ++i) {
+            cal.setMinimalDaysInFirstWeek(i);
+            if (cal.getMinimalDaysInFirstWeek() != i) errln("FAIL: set/getFirstDayOfWeek failed");
+        }
+
+        for (i=0; i<cal.getFieldCount(); ++i) {
+            if (cal.getMinimum(i) > cal.getGreatestMinimum(i))
+                errln("FAIL: getMinimum larger than getGreatestMinimum for field " + i);
+            if (cal.getLeastMaximum(i) > cal.getMaximum(i))
+                errln("FAIL: getLeastMaximum larger than getMaximum for field " + i);
+            if (cal.getMinimum(i) >= cal.getMaximum(i))
+                errln("FAIL: getMinimum not less than getMaximum for field " + i);
+        }
+
+        cal.setTimeZone(TimeZone.getDefault());
+        cal.clear();
+        cal.set(1984, 5, 24);
+        tempcal.clear();
+        tempcal.set(1984, 5, 24);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(3 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        // This test case does not work well with JRE1.3 with
+//##        // the timezone update for US 2007 rule.  Java 1.3 only
+//##        // supports single DST rule for all years.  April 2, 1985
+//##        // was actually not in DST, but with the new rule, the date
+//##        // is in DST (which is actually wrong).
+//#else
+        cal.clear();
+        cal.set(1985, 2, 2, 11, 49);
+        tempcal.clear();
+        tempcal.set(1985, 2, 2, 11, 49);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(5 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+//#endif
+
+        cal.clear();
+        cal.set(1995, 9, 12, 1, 39, 55);
+        tempcal.clear();
+        tempcal.set(1995, 9, 12, 1, 39, 55);
+        if (cal.getTime().getTime() != tempcal.getTime().getTime()) {
+            errln("FAIL: Calendar.set(6 args) failed");
+            logln(" Got: " + cal.getTime() + "  Expected: " + tempcal.getTime());
+        }
+
+        cal.getTime();
+        // This test is strange -- why do we expect certain fields to be set, and
+        // others not to be?  Revisit the appropriateness of this.  - Alan NEWCAL
+        for (i=0; i<cal.getFieldCount(); ++i) {
+            switch(i) {
+            case Calendar.YEAR: case Calendar.MONTH: case Calendar.DATE:
+            case Calendar.HOUR_OF_DAY: case Calendar.MINUTE: case Calendar.SECOND:
+            case Calendar.EXTENDED_YEAR:
+                if (!cal.isSet(i)) errln("FAIL: " + FIELD_NAME[i] + " is not set");
+                break;
+            default:
+                if (cal.isSet(i)) errln("FAIL: " + FIELD_NAME[i] + " is set");
+            }
+            cal.clear(i);
+            if (cal.isSet(i)) errln("FAIL: Calendar.clear/isSet failed");
+        }
+
+        // delete cal;
+        // delete cal2;
+
+        Locale[] loc = Calendar.getAvailableLocales();
+        long count = loc.length;
+        if (count < 1 || loc == null) {
+            errln("FAIL: getAvailableLocales failed");
+        }
+        else {
+            for (i=0; i<count; ++i) {
+                cal = Calendar.getInstance(loc[i]);
+                // delete cal;
+            }
+        }
+
+        cal = Calendar.getInstance(TimeZone.getDefault(), Locale.ENGLISH);
+        // delete cal;
+
+        cal = Calendar.getInstance(zone, Locale.ENGLISH);
+        // delete cal;
+
+        GregorianCalendar gc = new GregorianCalendar(zone);
+        // delete gc;
+
+        gc = new GregorianCalendar(Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(zone, Locale.ENGLISH);
+        // delete gc;
+
+        gc = new GregorianCalendar(zone);
+        // delete gc;
+
+        gc = new GregorianCalendar(1998, 10, 14, 21, 43);
+        tempcal.clear();
+        tempcal.set(1998, 10, 14, 21, 43);
+        if (gc.getTime().getTime() != tempcal.getTime().getTime())
+            errln("FAIL: new GregorianCalendar(ymdhm) failed");
+        // delete gc;
+
+        gc = new GregorianCalendar(1998, 10, 14, 21, 43, 55);
+        tempcal.clear();
+        tempcal.set(1998, 10, 14, 21, 43, 55);
+        if (gc.getTime().getTime() != tempcal.getTime().getTime())
+            errln("FAIL: new GregorianCalendar(ymdhms) failed");
+
+        // C++ only:
+        // GregorianCalendar gc2 = new GregorianCalendar(Locale.ENGLISH);
+        // gc2 = gc;
+        // if (gc2 != gc || !(gc2 == gc)) errln("FAIL: GregorianCalendar assignment/operator==/operator!= failed");
+        // delete gc;
+        // delete z;
+    }
+
+    // Verify Roger Webster's bug
+    public void TestRog() {
+        GregorianCalendar gc = new GregorianCalendar();
+
+        int year = 1997, month = Calendar.APRIL, date = 1;
+        gc.set(year, month, date); // April 1, 1997
+
+        gc.set(Calendar.HOUR_OF_DAY, 23);
+        gc.set(Calendar.MINUTE, 0);
+        gc.set(Calendar.SECOND, 0);
+        gc.set(Calendar.MILLISECOND, 0);
+
+        for (int i = 0; i < 9; i++, gc.add(Calendar.DATE, 1)) {
+            if (gc.get(Calendar.YEAR) != year ||
+                gc.get(Calendar.MONTH) != month ||
+                gc.get(Calendar.DATE) != (date + i))
+                errln("FAIL: Date " + gc.getTime() + " wrong");
+        }
+    }
+
+    // Verify DAY_OF_WEEK
+    public void TestDOW943() {
+        dowTest(false);
+        dowTest(true);
+    }
+
+    void dowTest(boolean lenient) {
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.set(1997, Calendar.AUGUST, 12); // Wednesday
+        cal.getTime(); // Force update
+        cal.setLenient(lenient);
+        cal.set(1996, Calendar.DECEMBER, 1); // Set the date to be December 1, 1996
+        int dow = cal.get(Calendar.DAY_OF_WEEK);
+        int min = cal.getMinimum(Calendar.DAY_OF_WEEK);
+        int max = cal.getMaximum(Calendar.DAY_OF_WEEK);
+        if (dow < min || dow > max) errln("FAIL: Day of week " + dow + " out of range");
+        if (dow != Calendar.SUNDAY) {
+            errln("FAIL2: Day of week should be SUNDAY; is " + dow + ": " + cal.getTime());
+        }
+        if (min != Calendar.SUNDAY || max != Calendar.SATURDAY) errln("FAIL: Min/max bad");
+    }
+
+    // Verify that the clone method produces distinct objects with no
+    // unintentionally shared fields.
+    public void TestClonesUnique908() {
+        Calendar c = Calendar.getInstance();
+        Calendar d = (Calendar)c.clone();
+        c.set(Calendar.MILLISECOND, 123);
+        d.set(Calendar.MILLISECOND, 456);
+        if (c.get(Calendar.MILLISECOND) != 123 ||
+            d.get(Calendar.MILLISECOND) != 456) {
+            errln("FAIL: Clones share fields");
+        }
+    }
+
+    // Verify effect of Gregorian cutoff value
+    public void TestGregorianChange768() {
+        boolean b;
+        GregorianCalendar c = new GregorianCalendar();
+        logln("With cutoff " + c.getGregorianChange());
+        logln(" isLeapYear(1800) = " + (b=c.isLeapYear(1800)));
+        logln(" (should be FALSE)");
+        if (b != false) errln("FAIL");
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1900, 0, 1);
+        c.setGregorianChange(tempcal.getTime()); // Jan 1 1900
+        logln("With cutoff " + c.getGregorianChange());
+        logln(" isLeapYear(1800) = " + (b=c.isLeapYear(1800)));
+        logln(" (should be TRUE)");
+        if (b != true) errln("FAIL");
+    }
+
+    // Test the correct behavior of the disambiguation algorithm.
+    public void TestDisambiguation765() throws Exception {
+        Calendar c = Calendar.getInstance();
+        c.setLenient(false);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DATE, 3);
+
+        verify765("1997 third day of June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
+        verify765("1997 first Tuesday in June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.DAY_OF_WEEK_IN_MONTH, -1);
+        verify765("1997 last Tuesday in June = ", c, 1997, Calendar.JUNE, 24);
+
+        IllegalArgumentException e = null;
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.MONTH, Calendar.JUNE);
+            c.set(Calendar.DAY_OF_WEEK_IN_MONTH, 0);
+            c.getTime();
+        }
+        catch (IllegalArgumentException ex) {
+            e = ex;
+        }
+        verify765("1997 zero-th Tuesday in June = ", e, c);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.WEEK_OF_MONTH, 1);
+        verify765("1997 Tuesday in week 1 of June = ", c, 1997, Calendar.JUNE, 3);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.MONTH, Calendar.JUNE);
+        c.set(Calendar.WEEK_OF_MONTH, 5);
+        verify765("1997 Tuesday in week 5 of June = ", c, 1997, Calendar.JULY, 1);
+
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.MONTH, Calendar.JUNE);
+            c.set(Calendar.WEEK_OF_MONTH, 0);
+            c.getTime();
+        }
+        catch (IllegalArgumentException ex) {
+            e = ex;
+        }
+        verify765("1997 Tuesday in week 0 of June = ", e, c);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.WEEK_OF_YEAR, 1);
+        verify765("1997 Tuesday in week 1 of year = ", c, 1996, Calendar.DECEMBER, 31);
+
+        c.clear();
+        c.set(Calendar.YEAR, 1997);
+        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+        c.set(Calendar.WEEK_OF_YEAR, 10);
+        verify765("1997 Tuesday in week 10 of year = ", c, 1997, Calendar.MARCH, 4);
+
+        e = null;
+        try {
+            c.clear();
+            c.set(Calendar.YEAR, 1997);
+            c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
+            c.set(Calendar.WEEK_OF_YEAR, 0);
+            c.getTime();
+        }
+        catch (IllegalArgumentException ex) {
+            e = ex;
+        }
+        verify765("1997 Tuesday in week 0 of year = ", e, c);
+    }
+    void verify765(String msg, Calendar c, int year, int month, int day) {
+        int cy = c.get(Calendar.YEAR); // NEWCAL
+        int cm = c.get(Calendar.MONTH);
+        int cd = c.get(Calendar.DATE);
+        if (cy == year &&
+            cm == month &&
+            cd == day) {
+            logln("PASS: " + msg + c.getTime());
+        }
+        else {
+            errln("FAIL: " + msg + cy + "/" + (cm+1) + "/" + cd +
+                  "=" + c.getTime() +
+                  "; expected " +
+                  year + "/" + (month+1) + "/" + day);
+        }
+    }
+    // Called when e expected to be non-null
+    void verify765(String msg, IllegalArgumentException e, Calendar c) {
+        if (e == null) errln("FAIL: No IllegalArgumentException for " + msg +
+                             c.getTime());
+        else logln("PASS: " + msg + "IllegalArgument as expected");
+    }
+
+    // Test the behavior of GMT vs. local time
+    public void TestGMTvsLocal4064654() {
+        // Sample output 1:
+        // % /usr/local/java/jdk1.1.3/solaris/bin/java test 1997 1 1 12 0 0
+        // date = Wed Jan 01 04:00:00 PST 1997
+        // offset for Wed Jan 01 04:00:00 PST 1997= -8hr
+        aux4064654(1997, 1, 1, 12, 0, 0);
+
+        // Sample output 2:
+        // % /usr/local/java/jdk1.1.3/solaris/bin/java test 1997 4 16 18 30 0
+        // date = Wed Apr 16 10:30:00 PDT 1997
+        // offset for Wed Apr 16 10:30:00 PDT 1997= -7hr
+
+        // Note that in sample output 2 according to the offset, the gmt time
+        // of the result would be 1997 4 16 17 30 0 which is different from the
+        // input of 1997 4 16 18 30 0.
+        aux4064654(1997, 4, 16, 18, 30, 0);
+    }
+    void aux4064654(int yr, int mo, int dt, int hr, int mn, int sc) {
+        Date date;
+        Calendar gmtcal = Calendar.getInstance();
+        gmtcal.setTimeZone(TimeZone.getTimeZone("Africa/Casablanca"));
+        gmtcal.set(yr, mo-1, dt, hr, mn, sc);
+        gmtcal.set(Calendar.MILLISECOND, 0);
+
+        date = gmtcal.getTime();
+        logln("date = "+date);
+
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeZone(TimeZone.getTimeZone("America/Los_Angels"));
+        cal.setTime(date);
+
+        int offset = cal.getTimeZone().getOffset(cal.get(Calendar.ERA),
+                                                 cal.get(Calendar.YEAR),
+                                                 cal.get(Calendar.MONTH),
+                                                 cal.get(Calendar.DATE),
+                                                 cal.get(Calendar.DAY_OF_WEEK),
+                                                 cal.get(Calendar.MILLISECOND));
+
+        logln("offset for "+date+"= "+(offset/1000/60/60.0) + "hr");
+
+        int utc = ((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+                    cal.get(Calendar.MINUTE)) * 60 +
+                   cal.get(Calendar.SECOND)) * 1000 +
+            cal.get(Calendar.MILLISECOND) - offset;
+
+        int expected = ((hr * 60 + mn) * 60 + sc) * 1000;
+
+        if (utc != expected)
+            errln("FAIL: Discrepancy of " +
+                  (utc - expected) + " millis = " +
+                  ((utc-expected)/1000/60/60.0) + " hr");
+    }
+
+    // Verify that add and set work regardless of the order in which
+    // they are called.
+    public void TestAddSetOrder621() {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1997, 4, 14, 13, 23, 45);
+        Date d = tempcal.getTime();
+
+        Calendar cal = Calendar.getInstance ();
+        cal.setTime (d);
+        cal.add (Calendar.DATE, -5);
+        cal.set (Calendar.HOUR_OF_DAY, 0);
+        cal.set (Calendar.MINUTE, 0);
+        cal.set (Calendar.SECOND, 0);
+        // ma feb 03 00:00:00 GMT+00:00 1997
+        String s = cal.getTime ().toString ();
+
+        cal = Calendar.getInstance ();
+        cal.setTime (d);
+        cal.set (Calendar.HOUR_OF_DAY, 0);
+        cal.set (Calendar.MINUTE, 0);
+        cal.set (Calendar.SECOND, 0);
+        cal.add (Calendar.DATE, -5);
+        // ma feb 03 13:11:06 GMT+00:00 1997
+        String s2 = cal.getTime ().toString ();
+
+        if (s.equals(s2))
+            logln("Pass: " + s + " == " + s2);
+        else
+            errln("FAIL: " + s + " != " + s2);
+    }
+
+    // Verify that add works.
+    public void TestAdd520() {
+        int y = 1997, m = Calendar.FEBRUARY, d = 1;
+        GregorianCalendar temp = new GregorianCalendar( y, m, d );
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.YEAR, 1 );
+        y++;
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.MONTH, 1 );
+        m++;
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.DATE, 1 );
+        d++;
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.DATE, 2 );
+        d += 2;
+        check520(temp, y, m, d);
+
+        temp.add( Calendar.DATE, 28 );
+        d = 1; ++m;
+        check520(temp, y, m, d);
+    }
+    void check520(Calendar c, int y, int m, int d) {
+        if (c.get(Calendar.YEAR) != y ||
+            c.get(Calendar.MONTH) != m ||
+            c.get(Calendar.DATE) != d) {
+            errln("FAILURE: Expected YEAR/MONTH/DATE of " +
+                  y + "/" + (m+1) + "/" + d +
+                  "; got " +
+                  c.get(Calendar.YEAR) + "/" +
+                  (c.get(Calendar.MONTH)+1) + "/" +
+                  c.get(Calendar.DATE));
+        }
+        else logln("Confirmed: " +
+                   y + "/" + (m+1) + "/" + d);
+    }
+
+    // Verify that setting fields works.  This test fails when an exception is thrown.
+    public void TestFieldSet4781() {
+        try {
+            GregorianCalendar g = new GregorianCalendar();
+            GregorianCalendar g2 = new GregorianCalendar();
+            // At this point UTC value is set, various fields are not.
+            // Now set to noon.
+            g2.set(Calendar.HOUR, 12);
+            g2.set(Calendar.MINUTE, 0);
+            g2.set(Calendar.SECOND, 0);
+            // At this point the object thinks UTC is NOT set, but fields are set.
+            // The following line will result in IllegalArgumentException because
+            // it thinks the YEAR is set and it is NOT.
+            if (g2.equals(g))
+                logln("Same");
+            else
+                logln("Different");
+        }
+        catch (IllegalArgumentException e) {
+            errln("Unexpected exception seen: " + e);
+        }
+    }
+
+    // Test serialization of a Calendar object
+    public void TestSerialize337() {
+        Calendar cal = Calendar.getInstance();
+
+        boolean ok = false;
+
+        try {
+            ByteArrayOutputStream f = new ByteArrayOutputStream();
+            ObjectOutput s = new ObjectOutputStream(f);
+            s.writeObject(PREFIX);
+            s.writeObject(cal);
+            s.writeObject(POSTFIX);
+            f.close();
+
+            ByteArrayInputStream in = new ByteArrayInputStream(f.toByteArray());
+            ObjectInputStream t = new ObjectInputStream(in);
+            String pre = (String)t.readObject();
+            Calendar c = (Calendar)t.readObject();
+            String post = (String)t.readObject();
+            in.close();
+
+            ok = pre.equals(PREFIX) &&
+                post.equals(POSTFIX) &&
+                cal.equals(c);
+        }
+        catch (IOException e) {
+            errln("FAIL: Exception received:");
+            // e.printStackTrace(log);
+        }
+        catch (ClassNotFoundException e) {
+            errln("FAIL: Exception received:");
+            // e.printStackTrace(log);
+        }
+
+        if (!ok) errln("Serialization of Calendar object failed.");
+    }
+    static final String PREFIX = "abc";
+    static final String POSTFIX = "def";
+    static final String FILENAME = "tmp337.bin";
+
+    // Try to zero out the seconds field
+    public void TestSecondsZero121() {
+        Calendar        cal = new GregorianCalendar();
+        // Initialize with current date/time
+        cal.setTime(new Date());
+        // Round down to minute
+        cal.set(Calendar.SECOND, 0);
+        Date    d = cal.getTime();
+        String s = d.toString();
+        if (s.indexOf(":00 ") < 0) errln("Expected to see :00 in " + s);
+    }
+
+    // Try various sequences of add, set, and get method calls.
+    public void TestAddSetGet0610() {
+        //
+        // Error case 1:
+        // - Upon initialization calendar fields, millis = System.currentTime
+        // - After set is called fields are initialized, time is not
+        // - Addition uses millis which are still *now*
+        //
+        {
+            Calendar calendar = new GregorianCalendar( ) ;
+            calendar.set( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "1A) " + value( calendar ) ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "1B) " + v );
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+
+        //
+        // Error case 2:
+        // - Upon initialization calendar fields set, millis = 0
+        // - Addition uses millis which are still 1970, 0, 1
+        //
+
+        {
+            Calendar calendar = new GregorianCalendar( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "2A) " + value( calendar ) ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "2B) " + v );
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+
+        //
+        // Error case 3:
+        // - Upon initialization calendar fields, millis = 0
+        // - getTime( ) is called which forces the millis to be set
+        // - Addition uses millis which are correct
+        //
+
+        {
+            Calendar calendar = new GregorianCalendar( 1993, Calendar.JANUARY, 4 ) ;
+            logln( "3A) " + value( calendar ) ) ;
+            calendar.getTime( ) ;
+            calendar.add( Calendar.DATE, 1 ) ;
+            String v = value(calendar);
+            logln( "3B) " + v ) ;
+            logln( "--) 1993/0/5" ) ;
+            if (!v.equals(EXPECTED_0610)) errln("Expected " + EXPECTED_0610 +
+                                                "; saw " + v);
+        }
+    }
+    static String value( Calendar calendar ) {
+        return( calendar.get( Calendar.YEAR )  + "/" +
+                calendar.get( Calendar.MONTH ) + "/" +
+                calendar.get( Calendar.DATE ) ) ;
+    }
+    static String EXPECTED_0610 = "1993/0/5";
+
+    // Test that certain fields on a certain date are as expected.
+    public void TestFields060() {
+        int year = 1997;
+        int month = java.util.Calendar.OCTOBER;  //october
+        int dDate = 22;   //DAYOFWEEK should return 3 for Wednesday
+        GregorianCalendar calendar = null;
+
+        calendar = new GregorianCalendar( year, month, dDate);
+        for (int i=0; i<EXPECTED_FIELDS.length; ) {
+            int field = EXPECTED_FIELDS[i++];
+            int expected = EXPECTED_FIELDS[i++];
+            if (calendar.get(field) != expected) {
+                errln("Expected field " + field + " to have value " + expected +
+                      "; received " + calendar.get(field) + " instead");
+            }
+        }
+    }
+    static int EXPECTED_FIELDS[] = {
+        Calendar.YEAR, 1997,
+        Calendar.MONTH, Calendar.OCTOBER,
+        Calendar.DAY_OF_MONTH, 22,
+        Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY,
+        Calendar.DAY_OF_WEEK_IN_MONTH, 4,
+        Calendar.DAY_OF_YEAR, 295
+    };
+
+    // Verify that the fields are as expected (mostly zero) at the epoch start.
+    // Note that we adjust for the default timezone to get most things to zero.
+    public void TestEpochStartFields() {
+        TimeZone z = TimeZone.getDefault();
+        Calendar c = Calendar.getInstance();
+        Date d = new Date(-z.getRawOffset());
+        if (z.inDaylightTime(d)) {
+            logln("Warning: Skipping test because " + d +
+                  " is in DST.");
+        }
+        else {
+            c.setTime(d);
+            for (int i=0; i<Calendar.ZONE_OFFSET; ++i) {
+                if (c.get(i) != EPOCH_FIELDS[i])
+                    errln("Expected field " + i + " to have value " + EPOCH_FIELDS[i] +
+                          "; saw " + c.get(i) + " instead");
+            }
+            if (c.get(Calendar.ZONE_OFFSET) != z.getRawOffset())
+                errln("Expected field ZONE_OFFSET to have value " + z.getRawOffset() +
+                      "; saw " + c.get(Calendar.ZONE_OFFSET) + " instead");
+            if (c.get(Calendar.DST_OFFSET) != 0)
+                errln("Expected field DST_OFFSET to have value 0" +
+                      "; saw " + c.get(Calendar.DST_OFFSET) + " instead");
+        }
+    }
+    // These are the fields at the epoch start
+    static int EPOCH_FIELDS[] = { 1, 1970, 0, 1, 1, 1, 1, 5, 1, 0, 0, 0, 0, 0, 0, -28800000, 0 };
+
+    // Verify that as you add days to the calendar (e.g., 24 day periods),
+    // the day of the week shifts in the expected pattern.
+    public void TestDOWProgression() {
+        Calendar cal =
+            new GregorianCalendar(1972, Calendar.OCTOBER, 26);
+        marchByDelta(cal, 24); // Last parameter must be != 0 modulo 7
+    }
+
+    // Supply a delta which is not a multiple of 7.
+    void marchByDelta(Calendar cal, int delta) {
+        Calendar cur = (Calendar)cal.clone();
+        int initialDOW = cur.get(Calendar.DAY_OF_WEEK);
+        int DOW, newDOW = initialDOW;
+        do {
+            DOW = newDOW;
+            logln("DOW = " + DOW + "  " + cur.getTime());
+
+            cur.add(Calendar.DAY_OF_WEEK, delta);
+            newDOW = cur.get(Calendar.DAY_OF_WEEK);
+            int expectedDOW = 1 + (DOW + delta - 1) % 7;
+            if (newDOW != expectedDOW) {
+                errln("Day of week should be " + expectedDOW +
+                      " instead of " + newDOW + " on " + cur.getTime());
+                return;
+            }
+        }
+        while (newDOW != initialDOW);
+    }
+
+    public void TestActualMinMax() {
+        Calendar cal = new GregorianCalendar(1967, Calendar.MARCH, 10);
+        cal.setFirstDayOfWeek(Calendar.SUNDAY);
+        cal.setMinimalDaysInFirstWeek(3);
+
+        if (cal.getActualMinimum(Calendar.DAY_OF_MONTH) != 1)
+            errln("Actual minimum date for 3/10/1967 should have been 1; got " +
+                  cal.getActualMinimum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 31)
+            errln("Actual maximum date for 3/10/1967 should have been 31; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+
+        cal.set(Calendar.MONTH, Calendar.FEBRUARY);
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 28)
+            errln("Actual maximum date for 2/10/1967 should have been 28; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_YEAR) != 365)
+            errln("Number of days in 1967 should have been 365; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_YEAR));
+
+        cal.set(Calendar.YEAR, 1968);
+        if (cal.getActualMaximum(Calendar.DAY_OF_MONTH) != 29)
+            errln("Actual maximum date for 2/10/1968 should have been 29; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+        if (cal.getActualMaximum(Calendar.DAY_OF_YEAR) != 366)
+            errln("Number of days in 1968 should have been 366; got " +
+                  cal.getActualMaximum(Calendar.DAY_OF_YEAR));
+        // Using week settings of SUNDAY/3 (see above)
+        if (cal.getActualMaximum(Calendar.WEEK_OF_YEAR) != 52)
+            errln("Number of weeks in 1968 should have been 52; got " +
+                  cal.getActualMaximum(Calendar.WEEK_OF_YEAR));
+
+        cal.set(Calendar.YEAR, 1976);
+        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); // Added - Liu 11/6/00
+        // Using week settings of SUNDAY/3 (see above)
+        if (cal.getActualMaximum(Calendar.WEEK_OF_YEAR) != 53)
+            errln("Number of weeks in 1976 should have been 53; got " +
+                  cal.getActualMaximum(Calendar.WEEK_OF_YEAR));
+    }
+
+    public void TestRoll() {
+        Calendar cal = new GregorianCalendar(1997, Calendar.JANUARY, 31);
+
+        int[] dayValues = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31 };
+        for (int i = 0; i < dayValues.length; i++) {
+            Calendar cal2 = (Calendar)cal.clone();
+            cal2.roll(Calendar.MONTH, i);
+            if (cal2.get(Calendar.DAY_OF_MONTH) != dayValues[i])
+                errln("Rolling the month in 1/31/1997 up by " + i + " should have yielded "
+                      + ((i + 1) % 12) + "/" + dayValues[i] + "/1997, but actually yielded "
+                      + ((i + 1) % 12) + "/" + cal2.get(Calendar.DAY_OF_MONTH) + "/1997.");
+        }
+
+        cal.set(1996, Calendar.FEBRUARY, 29);
+
+        //int[] monthValues = { 1, 2, 2, 2, 1, 2, 2, 2, 1, 2 };
+        //int[] dayValues2 = { 29, 1, 1, 1, 29, 1, 1, 1, 29, 1 };
+
+        // I've revised the expected values to make more sense -- rolling
+        // the year should pin the DAY_OF_MONTH. - Liu 11/6/00
+        int[] monthValues = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+        int[] dayValues2 = { 29, 28, 28, 28, 29, 28, 28, 28, 29, 28 };
+
+        for (int i = 0; i < dayValues2.length; i++) {
+            Calendar cal2 = (Calendar)cal.clone();
+            cal2.roll(Calendar.YEAR, i);
+            if (cal2.get(Calendar.DAY_OF_MONTH) != dayValues2[i] || cal2.get(Calendar.MONTH)
+                != monthValues[i])
+                errln("Roll 2/29/1996 by " + i + " year: expected "
+                      + (monthValues[i] + 1) + "/" + dayValues2[i] + "/"
+                      + (1996 + i) + ", got "
+                      + (cal2.get(Calendar.MONTH) + 1) + "/" +
+                      cal2.get(Calendar.DAY_OF_MONTH) + "/" + cal2.get(Calendar.YEAR));
+        }
+
+        // Test rolling hour of day
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.roll(Calendar.HOUR_OF_DAY, -2);
+        int f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 22) errln("Rolling HOUR_OF_DAY=0 delta=-2 gave " + f + " Wanted 22");
+        cal.roll(Calendar.HOUR_OF_DAY, 5);
+        f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 3) errln("Rolling HOUR_OF_DAY=22 delta=5 gave " + f + " Wanted 3");
+        cal.roll(Calendar.HOUR_OF_DAY, 21);
+        f = cal.get(Calendar.HOUR_OF_DAY);
+        if (f != 0) errln("Rolling HOUR_OF_DAY=3 delta=21 gave " + f + " Wanted 0");
+
+        // Test rolling hour
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.roll(Calendar.HOUR, -2);
+        f = cal.get(Calendar.HOUR);
+        if (f != 10) errln("Rolling HOUR=0 delta=-2 gave " + f + " Wanted 10");
+        cal.roll(Calendar.HOUR, 5);
+        f = cal.get(Calendar.HOUR);
+        if (f != 3) errln("Rolling HOUR=10 delta=5 gave " + f + " Wanted 3");
+        cal.roll(Calendar.HOUR, 9);
+        f = cal.get(Calendar.HOUR);
+        if (f != 0) errln("Rolling HOUR=3 delta=9 gave " + f + " Wanted 0");
+    }
+
+    public void TestComputeJulianDay4406() {
+        // jb4406 is probably not a bug, this is to document the behavior
+        GregorianCalendar cal = new GregorianCalendar();
+        final int MILLIS_IN_DAY = 1000 * 60 * 60 * 24;
+        
+        logln("julian day value jumps at changeover");
+        for (int day = 12; day < 18; ++day) {
+            cal.set(1582, 9, day);
+            logln("[" + day + "] " + (cal.getTimeInMillis()/MILLIS_IN_DAY));
+        }
+
+        logln("\njulian days not accurate before 1 March 0004");
+        for (int day = 1; day < 3; ++day) {
+            cal.set(1, 0, day);
+            logln("[" + day + "] " + (cal.getTimeInMillis()/MILLIS_IN_DAY));
+        }
+
+        DateFormat fmt = cal.getDateTimeFormat(DateFormat.LONG, 0, Locale.getDefault());
+
+        logln("\nswitchover in 1582");
+        cal.set(1582, 9, 4);
+        logln(fmt.format(cal));
+        cal.add(Calendar.DATE, 1);
+        logln(fmt.format(cal));
+        cal.set(Calendar.JULIAN_DAY, 1721426);
+        logln(fmt.format(cal));
+
+        logln("\nlate switchover - proleptic Julian");
+        cal.set(1582, 9, 4);
+        cal.setGregorianChange(new Date(Long.MAX_VALUE));
+        logln(fmt.format(cal));
+        cal.add(Calendar.DATE, 1);
+        logln(fmt.format(cal));
+        cal.set(Calendar.JULIAN_DAY, 1721426);
+        logln(fmt.format(cal));
+
+        logln("\nearly switchover - proleptic Gregorian");
+        cal.set(1582, 9, 4);
+        cal.setGregorianChange(new Date(Long.MIN_VALUE));
+        logln(fmt.format(cal));
+        cal.add(Calendar.DATE, 1);
+        logln(fmt.format(cal));
+        cal.set(Calendar.JULIAN_DAY, 1721426);
+        logln(fmt.format(cal));
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/calendar/CopticTest.java b/src/com/ibm/icu/dev/test/calendar/CopticTest.java
new file mode 100644
index 0000000..4d4567b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/CopticTest.java
@@ -0,0 +1,334 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.CopticCalendar;
+import com.ibm.icu.util.EthiopicCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>CopticCalendar</code> class.
+ */
+public class CopticTest extends CalendarTest 
+{
+    public static void main(String args[]) throws Exception {
+        new CopticTest().run(args);
+    }
+
+    /** Constants to save typing. */
+    public static final int TOUT      = CopticCalendar.TOUT;
+    public static final int BABA      = CopticCalendar.BABA;
+    public static final int HATOR     = CopticCalendar.HATOR;
+    public static final int KIAHK     = CopticCalendar.KIAHK;
+    public static final int TOBA      = CopticCalendar.TOBA;
+    public static final int AMSHIR    = CopticCalendar.AMSHIR;
+    public static final int BARAMHAT  = CopticCalendar.BARAMHAT;
+    public static final int BARAMOUDA = CopticCalendar.BARAMOUDA;
+    public static final int BASHANS   = CopticCalendar.BASHANS;
+    public static final int PAONA     = CopticCalendar.PAONA;
+    public static final int EPEP      = CopticCalendar.EPEP;
+    public static final int MESRA     = CopticCalendar.MESRA;
+    public static final int NASIE     = CopticCalendar.NASIE;
+
+    /* Test dates from:
+     * "The Amharic Letters of Emperor Theodore of Ethiopia to Queen Victoria and
+     * Her Special Envoy", David Appleyard, Girma Selasse Asfaw, Oxford University Press, 
+     * June 1 1979, ISBN: 0856726605, Longwood Pr Ltd
+     *  
+     * Coptic         Gregorian    JD
+     * 20/02/1579     29/10/1862  2401443 
+     * 29/10/1581     05/07/1865  2402423
+     * 22/05/1582     29/01/1866  2402631
+     * 10/08/1582     17/04/1866  2402709
+     * 28/04/1583     05/01/1867  2402972
+     * 05/05/1584     13/01/1868  2403345
+     * 
+     * --------------------------------------------------
+     * 
+     * From the Calendrica applet:  http://emr.cs.iit.edu/home/reingold/calendar-book/Calendrica.html
+     * 
+     * Coptic         Gregorian    JD
+     * 07/05/-284     01/01/0000  1721060
+     * 08/05/-283     01/01/0001  1721426
+     * 06/13/-1       29/08/0283  1824664
+     * 
+     * 01/01/0000     30/08/0283  1824665
+     * 01/01/0001     29/08/0284  1825030
+     * 01/01/0002     29/08/0285  1825395
+     * 01/01/0003     29/08/0286  1825760
+     * 01/01/0004     30/08/0287  1826126
+     * 05/13/0000     28/08/0284  1825029 
+     * 05/13/0001     28/08/0285  1825394
+     * 05/13/0002     28/08/0286  1825759
+     * 05/13/0003     28/08/0287  1826124
+     * 06/13/0003     29/08/0287  1826125  first coptic leap year
+     * 05/13/0004     28/08/0288  1826490
+     * 
+     * 06/02/1299     13/10/1582  2299159
+     * 07/02/1299     14/10/1582  2299160  Julian 04/10/1582
+     * 08/02/1299     15/10/1582  2299161
+     * 09/02/1299     16/10/1582  2299162
+     * 
+     * 23/04/1616     01/01/1900  2415021
+     * 23/04/1721     01/01/2005  2453372 
+     * 05/13/2000     12/09/2284  2555529
+     */
+
+    
+    /** A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the civil calendar.
+     */
+    public void TestCases()
+    {
+        final TestCase[] tests = {
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                      Coptic
+            //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+            //
+            // Dates from "Emporer Theodore..."
+
+            new TestCase(2401442.5,  1,  1579,    2,  20,  WED,    0,  0,  0), // Gregorian: 20/10/1862
+            new TestCase(2402422.5,  1,  1581,   10,  29,  WED,    0,  0,  0), // Gregorian: 05/07/1865
+            new TestCase(2402630.5,  1,  1582,    5,  22,  MON,    0,  0,  0), // Gregorian: 29/01/1866
+            new TestCase(2402708.5,  1,  1582,    8,  10,  TUE,    0,  0,  0), // Gregorian: 17/04/1866
+            new TestCase(2402971.5,  1,  1583,    4,  28,  SAT,    0,  0,  0), // Gregorian: 05/01/1867
+            new TestCase(2403344.5,  1,  1584,    5,   5,  MON,    0,  0,  0), // Gregorian: 13/01/1868
+            new TestCase(1721059.5,  0,   285,    5,   7,  SAT,    0,  0,  0), // Gregorian: 01/01/0000
+            new TestCase(1721425.5,  0,   284,    5,   8,  MON,    0,  0,  0), // Gregorian: 01/01/0001
+            new TestCase(1824663.5,  0,     2,   13,   6,  WED,    0,  0,  0), // Gregorian: 29/08/0283
+            new TestCase(1824664.5,  0,     1,    1,   1,  THU,    0,  0,  0), // Gregorian: 30/08/0283
+            new TestCase(1825029.5,  1,     1,    1,   1,  FRI,    0,  0,  0), // Gregorian: 29/08/0284
+            new TestCase(1825394.5,  1,     2,    1,   1,  SAT,    0,  0,  0), // Gregorian: 29/08/0285
+            new TestCase(1825759.5,  1,     3,    1,   1,  SUN,    0,  0,  0), // Gregorian: 29/08/0286
+            new TestCase(1826125.5,  1,     4,    1,   1,  TUE,    0,  0,  0), // Gregorian: 30/08/0287
+            new TestCase(1825028.5,  0,     1,   13,   5,  THU,    0,  0,  0), // Gregorian: 28/08/0284
+            new TestCase(1825393.5,  1,     1,   13,   5,  FRI,    0,  0,  0), // Gregorian: 28/08/0285
+            new TestCase(1825758.5,  1,     2,   13,   5,  SAT,    0,  0,  0), // Gregorian: 28/08/0286
+            new TestCase(1826123.5,  1,     3,   13,   5,  SUN,    0,  0,  0), // Gregorian: 28/08/0287
+            new TestCase(1826124.5,  1,     3,   13,   6,  MON,    0,  0,  0), // Gregorian: 29/08/0287
+                          // above is first coptic leap year
+            new TestCase(1826489.5,  1,     4,   13,   5,  TUE,    0,  0,  0), // Gregorian: 28/08/0288
+            new TestCase(2299158.5,  1,  1299,    2,   6,  WED,    0,  0,  0), // Gregorian: 13/10/1582
+            new TestCase(2299159.5,  1,  1299,    2,   7,  THU,    0,  0,  0), // Gregorian: 14/10/1582
+
+            new TestCase(2299160.5,  1,  1299,    2,   8,  FRI,    0,  0,  0), // Gregorian: 15/10/1582
+            new TestCase(2299161.5,  1,  1299,    2,   9,  SAT,    0,  0,  0), // Gregorian: 16/10/1582
+
+            new TestCase(2415020.5,  1,  1616,    4,  23,  MON,    0,  0,  0), // Gregorian: 01/01/1900
+            new TestCase(2453371.5,  1,  1721,    4,  23,  SAT,    0,  0,  0), // Gregorian: 01/01/2005
+            new TestCase(2555528.5,  1,  2000,   13,   5,  FRI,    0,  0,  0), // Gregorian: 12/09/2284
+        };
+        
+        CopticCalendar testCalendar = new CopticCalendar();
+        testCalendar.setLenient(true);
+        doTestCases(tests, testCalendar);
+    }
+
+    // basic sanity check that the conversion algorithm round-trips
+    public void TestCopticToJD() {
+        CopticCalendar cal = new CopticCalendar();
+        cal.clear();
+        for (int y = -2; y < 3; ++y) {
+            for (int m = 0; m < 12; ++m) { // don't understand rules for 13th month
+                for (int d = 1; d < 25; d += 3) { // play it safe on days per month
+                    int jd = CopticCalendar.copticToJD(y, m, d);
+                    cal.set(Calendar.JULIAN_DAY, jd);
+                    int eyear = cal.get(Calendar.EXTENDED_YEAR);
+                    int month = cal.get(Calendar.MONTH);
+                    int day = cal.get(Calendar.DAY_OF_MONTH);
+                    if (!(y == eyear &&
+                          m == month &&
+                          d == day)) {
+                        errln("y: " + y +
+                              " m: " + m + 
+                              " d: " + d + 
+                              " --> jd: " + jd +
+                              " --> y: " + eyear +
+                              " m: " + month +
+                              " d: " + day);
+                    }
+                }
+            }
+        }
+    }
+
+    // basic check to see that we print out eras ok
+    // eventually should modify to use locale strings and formatter appropriate to coptic calendar
+    public void TestEraStart() {
+        SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd, yyyy GG");
+
+        CopticCalendar cal = new CopticCalendar(1, 0, 1);
+        assertEquals("Coptic Date", "Fri Jan 01, 0001 AD", fmt.format(cal));
+        assertEquals("Gregorian Date", "Fri Aug 29, 0284 AD", fmt.format(cal.getTime()));
+
+        cal.set(Calendar.ERA, 0);
+        cal.set(Calendar.YEAR, 1);
+        assertEquals("Coptic Date", "Thu Jan 01, 0001 BC", fmt.format(cal));
+        assertEquals("Gregorian Date", "Thu Aug 30, 0283 AD", fmt.format(cal.getTime()));
+    }
+
+    public void TestBasic() {
+        CopticCalendar cal = new CopticCalendar();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30-> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+
+    /**
+     * Test limits of the Coptic calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        CopticCalendar coptic = new CopticCalendar();
+        doLimitsTest(coptic, null, cal.getTime());
+        doTheoreticalLimitsTest(coptic, true);
+    }
+
+    public void TestCoverage() {
+
+        {
+            // new CopticCalendar(TimeZone)
+            CopticCalendar cal = new CopticCalendar(TimeZone.getDefault()); 
+            if(cal == null){
+                errln("could not create CopticCalendar with TimeZone");
+            }
+        }
+
+        {
+            // new CopticCalendar(ULocale)
+            CopticCalendar cal = new CopticCalendar(ULocale.getDefault());
+            if(cal == null){
+                errln("could not create CopticCalendar with ULocale");
+            }
+        }
+        
+        {
+            // new CopticCalendar(Locale)
+            CopticCalendar cal = new CopticCalendar(Locale.getDefault());
+            if(cal == null){
+                errln("could not create CopticCalendar with Locale");
+            }
+        }
+        
+        {                                                                                       
+            // new CopticCalendar(TimeZone, Locale)                                             
+            CopticCalendar cal = new CopticCalendar(TimeZone.getDefault(),Locale.getDefault()); 
+            if(cal == null){                                                                    
+                errln("could not create CopticCalendar with TimeZone, Locale");                 
+            }                                                                                   
+        }                                                                                       
+                                                                                                
+        {                                                                                       
+            // new CopticCalendar(TimeZone, ULocale)                                            
+            CopticCalendar cal = new CopticCalendar(TimeZone.getDefault(),ULocale.getDefault());
+            if(cal == null){                                                                    
+                errln("could not create CopticCalendar with TimeZone, ULocale");                
+            }                                                                                   
+        }                                                                                       
+        
+        {
+            // new CopticCalendar(Date)
+            CopticCalendar cal = new CopticCalendar(new Date());
+            if(cal == null){
+                errln("could not create CopticCalendar with Date");
+            }
+        }
+
+        {
+            // new CopticCalendar(int year, int month, int date)
+            CopticCalendar cal = new CopticCalendar(1997, CopticCalendar.TOUT, 1);
+            if(cal == null){
+                errln("could not create CopticCalendar with year,month,date");
+            }
+        }
+
+        {
+            // new CopticCalendar(int year, int month, int date, int hour, int minute, int second)
+            CopticCalendar cal = new CopticCalendar(1997, CopticCalendar.TOUT, 1, 1, 1, 1);
+            if(cal == null){
+                errln("could not create CopticCalendar with year,month,date,hour,minute,second");
+            }
+        }
+    
+        {
+            // data
+            CopticCalendar cal = new CopticCalendar(1997, CopticCalendar.TOUT, 1);
+            Date time = cal.getTime();
+
+            String[] calendarLocales = {
+                "am_ET", "gez_ET", "ti_ET"
+            };
+
+            String[] formatLocales = {
+                "en", "am", "am_ET", "gez", "ti"
+            };
+            for (int i = 0; i < calendarLocales.length; ++i) {
+                String calLocName = calendarLocales[i];
+                Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+                cal = new CopticCalendar(calLocale);
+
+                for (int j = 0; j < formatLocales.length; ++j) {
+                    String locName = formatLocales[j];
+                    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                    logln(calLocName + "/" + locName + " --> " + format.format(time));
+                }
+            }
+        }
+    }
+
+    public void TestYear() {
+        // Gregorian Calendar
+        Calendar gCal= new GregorianCalendar();
+        Date gToday=gCal.getTime();
+        gCal.add(GregorianCalendar.MONTH,2);
+        Date gFuture=gCal.getTime();
+        DateFormat gDF = DateFormat.getDateInstance(gCal,DateFormat.FULL);
+        logln("gregorian calendar: " + gDF.format(gToday) +
+              " + 2 months = " + gDF.format(gFuture));
+
+        // Coptic Calendar
+        CopticCalendar cCal= new CopticCalendar();
+        Date cToday=cCal.getTime();
+        cCal.add(CopticCalendar.MONTH,2);
+        Date cFuture=cCal.getTime();
+        DateFormat cDF = DateFormat.getDateInstance(cCal,DateFormat.FULL);
+        logln("coptic calendar: " + cDF.format(cToday) +
+              " + 2 months = " + cDF.format(cFuture));
+
+        // EthiopicCalendar
+        EthiopicCalendar eCal= new EthiopicCalendar();
+        Date eToday=eCal.getTime();
+        eCal.add(EthiopicCalendar.MONTH,2); // add 2 months
+        eCal.setAmeteAlemEra(false);
+        Date eFuture=eCal.getTime();
+        DateFormat eDF = DateFormat.getDateInstance(eCal,DateFormat.FULL);
+        logln("ethiopic calendar: " + eDF.format(eToday) +
+              " + 2 months = " + eDF.format(eFuture));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java b/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java
new file mode 100644
index 0000000..15342f5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java
@@ -0,0 +1,296 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Iterator;
+
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestDataModule;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.dev.test.util.CalendarFieldsSet;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author srl
+ * 
+ * analog of dadrcal.cpp
+ *
+ */
+public class DataDrivenCalendarTest extends ModuleTest {
+
+    public DataDrivenCalendarTest() {
+        super("com/ibm/icu/dev/data/testdata/", "calendar");
+    }
+        
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.ModuleTest#processModules()
+     */
+    public void processModules() {
+        //String testName = t.getName().toString();
+
+        for (Iterator siter = t.getSettingsIterator(); siter.hasNext();) {
+            // Iterate through and get each of the test case to process
+            DataMap settings = (DataMap) siter.next();
+            
+            String type = settings.getString("Type");
+            
+            if(type.equals("convert_fwd")) {
+                testConvert(t, settings, true);
+            } else if(type.equals("convert_rev")) {
+                testConvert(t, settings, false);
+            } else if(type.equals("ops")) {
+                testOps(t, settings);
+            } else {
+                errln("Unknown type: " + type);
+            }
+        }
+    }
+    
+
+    void testConvert(String caseString,
+             CalendarFieldsSet fromSet, Calendar fromCalendar,
+             CalendarFieldsSet toSet, Calendar toCalendar, boolean forward) {
+        String thisString = caseString+(forward ? "forward"
+                : "reverse")+" "+fromCalendar.getType()+"->"+toCalendar.getType()+" ";
+
+        fromCalendar.clear();
+
+        fromSet.setOnCalendar(fromCalendar);
+
+        CalendarFieldsSet diffSet = new CalendarFieldsSet();
+
+        diffSet.clear();
+        // Is the calendar sane at the first?
+        if (!fromSet.matches(fromCalendar, diffSet)) {
+            String diffs = diffSet.diffFrom(fromSet);
+            errln((String)"FAIL: "+thisString
+                    +", SOURCE calendar was not set: Differences: "+ diffs);
+        } else {
+            logln("PASS: "+thisString+" SOURCE calendar match.");
+        }
+
+        //logln("Set Source calendar: " + from);
+
+        Date fromTime = fromCalendar.getTime();
+
+        diffSet.clear();
+        // Is the calendar sane after being set?
+        if (!fromSet.matches(fromCalendar, diffSet)) {
+            String diffs = diffSet.diffFrom(fromSet);
+            errln((String)"FAIL: "+thisString
+                    +", SET SOURCE calendar was not set: Differences: "+ diffs);
+        } else {
+            logln("PASS: "+thisString+" SET SOURCE calendar match.");
+        }
+
+        toCalendar.clear();
+        toCalendar.setTime(fromTime);
+
+        diffSet.clear();
+        if (!toSet.matches(toCalendar, diffSet)) {
+            String diffs = diffSet.diffFrom(toSet);
+            errln((String)"FAIL: "+thisString+", Differences: "+ diffs);
+            DateFormat fmt = new SimpleDateFormat(new String("EEE MMM dd yyyy G"));
+            String fromString = fmt.format(fromTime);
+            logln("Source Time: "+fromString+", Source Calendar: "
+                    +fromCalendar.getType());
+        } else {
+            logln("PASS: "+thisString+" match.");
+        }
+    }
+
+
+    
+    private void testConvert(TestDataModule.TestData testData, DataMap settings, boolean forward) {
+        Calendar toCalendar= null;
+        // build to calendar
+        String testSetting = settings.getString("ToCalendar");
+        ULocale loc = new ULocale(testSetting);
+        toCalendar = Calendar.getInstance(loc);
+        CalendarFieldsSet fromSet = new CalendarFieldsSet(), toSet = new CalendarFieldsSet();
+//        DateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
+        // Start the processing
+        int n = 0;
+        for (Iterator iter = testData.getDataIterator(); iter.hasNext();) {
+            ++n;
+            DataMap currentCase = (DataMap) iter.next();
+            
+            String caseString = "["+testData.getName()+"#"+n+" "+"]";
+             String locale = testSetting = currentCase.getString("locale");
+            ULocale fromLoc = new ULocale(testSetting);
+            Calendar fromCalendar = Calendar.getInstance(fromLoc);
+            
+            fromSet.clear();
+            toSet.clear();
+
+            String from = currentCase.getString("from");
+            fromSet.parseFrom(from);
+            String to = currentCase.getString("to");
+            toSet.parseFrom(to, fromSet);
+
+            // now, do it.
+            if (forward) {
+                logln(caseString +" "+locale+"/"+from+" >>> "+loc+"/"
+                        +to);
+                testConvert(caseString, fromSet, fromCalendar, toSet, toCalendar, forward);
+            } else {
+                logln(caseString +" "+locale+"/"+from+" <<< "+loc+"/"
+                        +to);
+                testConvert(caseString, toSet, toCalendar, fromSet, fromCalendar, forward);
+            }
+        }
+    }
+    
+    private static final String kADD = "add";
+    private static final String kROLL = "roll";
+    private static final String kMILLIS = "MILLIS=";
+    
+    private void testOps(TestDataModule.TestData testData, DataMap settings) {
+        // Get 'from' time 
+        CalendarFieldsSet fromSet = new CalendarFieldsSet(), toSet = new CalendarFieldsSet(), paramsSet = new CalendarFieldsSet(), diffSet = new CalendarFieldsSet();
+//        DateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
+        // Start the processing
+        int n = 0;
+        long fromDate = 0;
+        long toDate = 0;
+        
+        boolean useDate = false;
+        
+        for (Iterator iter = testData.getDataIterator(); iter.hasNext();) {
+            ++n;
+            DataMap currentCase = (DataMap) iter.next();
+            
+            String caseString = "[case "+n+"]";
+            // build to calendar
+            //             Headers { "locale","from","operation","params","to" }
+            // #1 locale
+            String param = "locale";
+            String locale;
+            String testSetting = currentCase.getString(param);
+            locale = testSetting;
+            ULocale loc = new ULocale(locale);
+            Calendar fromCalendar = Calendar.getInstance(loc);
+
+            fromSet.clear();
+            // #2 'from' info
+            param = "from";
+            String from = testSetting=currentCase.getString(param);
+            if(from.startsWith(kMILLIS)){
+                useDate = true;
+                fromDate = Long.parseLong(from.substring(kMILLIS.length()));
+            }else{
+                fromSet.parseFrom(testSetting);
+            }
+//            System.err.println("fromset: ["+testSetting+"] >> " + fromSet);
+
+            // #4 'operation' info
+            param = "operation";
+            String operation = testSetting=currentCase.getString(param);
+            paramsSet.clear();
+            // #3 'params' info
+            param = "params";
+            String paramsData = testSetting =  currentCase.getString(param);
+            paramsSet.parseFrom(paramsData); // parse with inheritance.
+//            System.err.println("paramsSet: ["+testSetting+"] >> " + paramsSet);
+            
+            toSet.clear();
+            // #4 'to' info
+            param = "to";
+            String to = testSetting=currentCase.getString(param);
+           if(to.startsWith(kMILLIS)){
+                useDate = true;
+                toDate = Long.parseLong(to.substring(kMILLIS.length()));
+            }else{ 
+                toSet.parseFrom(testSetting, fromSet);
+           }
+            //toSet.parseFrom(testSetting, fromSet); // parse with inheritance.
+//            System.err.println("toSet: ["+testSetting+"] >> " + toSet);
+
+            String caseContentsString = locale+":  from "+from+": "
+                    +operation +" [[[ "+paramsSet+" ]]]   >>> "+to;
+            logln(caseString+": "+caseContentsString);
+
+            // ------
+            // now, do it.
+
+            /// prepare calendar
+            if(useDate){
+                fromCalendar.setTimeInMillis(fromDate);
+            }else {
+                fromSet.setOnCalendar(fromCalendar);
+            }
+            
+            // from calendar:  'starting date'
+            
+            diffSet.clear();
+            
+            // Is the calendar sane after being set?
+            if (!fromSet.matches(fromCalendar, diffSet)) {
+                String diffs = diffSet.diffFrom(fromSet);
+                errln((String)"FAIL: "+caseString
+                        +", SET SOURCE calendar was not set: Differences: "+ diffs);
+            }  else {
+                logln(" "+caseString+" SET SOURCE calendar match."); // verifies that the requested fields were set.
+            }
+            
+            // to calendar - copy of from calendar
+            Calendar toCalendar = (Calendar)fromCalendar.clone();
+
+            /// perform op on 'to calendar'
+            for (int q=0; q<paramsSet.fieldCount(); q++) {
+                if (paramsSet.isSet(q)) {
+                    if (operation.equals(kROLL)) {
+                        toCalendar.roll(q,
+                                paramsSet.get(q));
+                    } else if (operation.equals(kADD)) {
+                        toCalendar.add(q,
+                                paramsSet.get(q));
+                    } else {
+                        errln(caseString+ " FAIL: unknown operation "+ operation);
+                    }
+                    logln(operation + " of "+ paramsSet.get(q));
+                }
+            }
+            // now - what's the result?
+            diffSet.clear();
+
+            // toset contains 'expected'
+            
+            if(useDate) {
+                    if(toCalendar.getTimeInMillis()==toDate) {
+                        logln(caseString + " SUCCESS: got=expected="+toDate);
+                        logln("PASS: "+caseString+" matched! ");
+                    } else {
+                        errln(caseString + " FAIL: got " + 
+                                toCalendar.getTimeInMillis() + "  expected " + 
+                                toDate);
+                    }
+            }else if (!toSet.matches(toCalendar, diffSet)) {
+                String diffs = diffSet.diffFrom(toSet);
+                errln((String)"FAIL: "+caseString+" - , "+caseContentsString
+                        +" Differences: "+ diffs );
+            } else{
+                logln("PASS: "+caseString+" matched! ");
+            }
+            
+        }
+    }
+
+   
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) throws Exception {
+        new DataDrivenCalendarTest().run(args);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java b/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
new file mode 100644
index 0000000..43c3b70
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
@@ -0,0 +1,419 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.EthiopicCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>EthiopicCalendar</code> class.
+ */
+public class EthiopicTest extends CalendarTest 
+{
+    public static void main(String args[]) throws Exception {
+        new EthiopicTest().run(args);
+    }
+
+    /** Constants to save typing. */
+    public static final int MESKEREM = EthiopicCalendar.MESKEREM;
+    public static final int TEKEMT   = EthiopicCalendar.TEKEMT;
+    public static final int HEDAR    = EthiopicCalendar.HEDAR;
+    public static final int TAHSAS   = EthiopicCalendar.TAHSAS;
+    public static final int TER      = EthiopicCalendar.TER;
+    public static final int YEKATIT  = EthiopicCalendar.YEKATIT;
+    public static final int MEGABIT  = EthiopicCalendar.MEGABIT;
+    public static final int MIAZIA   = EthiopicCalendar.MIAZIA;
+    public static final int GENBOT   = EthiopicCalendar.GENBOT;
+    public static final int SENE     = EthiopicCalendar.SENE;
+    public static final int HAMLE    = EthiopicCalendar.HAMLE;
+    public static final int NEHASSE  = EthiopicCalendar.NEHASSE;
+    public static final int PAGUMEN  = EthiopicCalendar.PAGUMEN;
+
+    /* DY[20050507]  I don't know what this is for yet: 
+       public void TestRoll() {
+       int[][] tests = new int[][] {
+       //       input                roll by          output
+       //  year  month     day     field amount    year  month     day
+    
+       {   0001, QIDAH,     2,     MONTH,   1,     0001, HIJJAH,    2 },   // non-leap years
+       {   0001, QIDAH,     2,     MONTH,   2,     0001, MUHARRAM,  2 },
+       {   0001, QIDAH,     2,     MONTH,  -1,     0001, SHAWWAL,   2 },
+       {   0001, MUHARRAM,  2,     MONTH,  12,     0001, MUHARRAM,  2 },
+       {   0001, MUHARRAM,  2,     MONTH,  13,     0001, SAFAR,     2 },
+
+       {   0001, HIJJAH,    1,     DATE,   30,     0001, HIJJAH,    2 },   // 29-day month
+       {   0002, HIJJAH,    1,     DATE,   31,     0002, HIJJAH,    2 },   // 30-day month
+
+       // Try some rolls that require other fields to be adjusted
+       {   0001, MUHARRAM, 30,     MONTH,   1,     0001, SAFAR,    29 },
+       {   0002, HIJJAH,   30,     YEAR,   -1,     0001, HIJJAH,   29 },
+       };
+       
+       EthiopicCalendar cal = newCivil();
+
+       doRollAdd(ROLL, cal, tests);
+       }
+    */
+
+    /* Test dates from:
+     * "The Amharic Letters of Emperor Theodore of Ethiopia to Queen Victoria and
+     * Her Special Envoy", David Appleyard, Girma Selasse Asfaw, Oxford University Press, 
+     * June 1 1979, ISBN: 0856726605, Longwood Pr Ltd
+     *  
+     * Ethiopic       Gregorian    JD
+     * 20/02/1855     29/10/1862  2401443
+     * 29/10/1857     05/07/1865  2402423
+     * 22/05/1858     29/01/1866  2402631
+     * 10/08/1858     17/04/1866  2402709
+     * 28/04/1859     05/01/1867  2402972
+     * 05/05/1860     13/01/1868  2403345
+     * 
+     * --------------------------------------------------
+     * 
+     * From the Calendrica applet:  http://emr.cs.iit.edu/home/reingold/calendar-book/Calendrica.html
+     * 
+     * Ethiopic       Gregorian    JD
+     * 07/05/-8       01/01/0000  1721060
+     * 08/05/-7       01/01/0001  1721426
+     * 06/13/-1       27/08/0007  1723855
+     * 
+     * 01/01/0000     28/08/0007  1723856
+     * 01/01/0001     27/08/0008  1724221
+     * 01/01/0002     27/08/0009  1724586
+     * 01/01/0003     27/08/0010  1724951
+     * 01/01/0004     28/08/0011  1724537
+     * 05/13/0000     26/08/0008  1724220
+     * 05/13/0001     26/08/0009  1724585
+     * 05/13/0002     26/08/0010  1724950
+     * 05/13/0003     26/08/0011  1725315
+     * 06/13/0003     27/08/0011  1725316  first ethiopian leap year
+     * 05/13/0004     26/08/0012  1725561
+     * 
+     * 06/02/1575     13/10/1582  2299159
+     * 07/02/1575     14/10/1582  2299160  Julian 04/10/1582
+     * 08/02/1575     15/10/1582  2299161
+     * 09/02/1575     16/10/1582  2299162
+     * 
+     * 23/04/1892     01/01/1900  2415021
+     * 23/04/1997     01/01/2005  2453372
+     * 05/13/2000     10/09/2008  2454720
+     */
+    
+    /** A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the civil calendar.
+     */
+    public void TestCases()
+    {
+        final TestCase[] tests = {
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                      Ethiopic
+            //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+            //
+            // Dates from "Emporer Theodore..."
+
+            new TestCase(2401442.5,  1,  1855,    2,  20,  WED,   0,  0,  0), // Gregorian: 29/10/1862
+            new TestCase(2402422.5,  1,  1857,   10,  29,  WED,   0,  0,  0), // Gregorian: 05/07/1865
+            new TestCase(2402630.5,  1,  1858,    5,  22,  MON,   0,  0,  0), // Gregorian: 29/01/1866
+            new TestCase(2402708.5,  1,  1858,    8,  10,  TUE,   0,  0,  0), // Gregorian: 17/04/1866
+            new TestCase(2402971.5,  1,  1859,    4,  28,  SAT,   0,  0,  0), // Gregorian: 05/01/1867
+            new TestCase(2403344.5,  1,  1860,    5,   5,  MON,   0,  0,  0), // Gregorian: 13/01/1868
+                        
+            // Miscellaneous:
+            /* Skip these tests until JD bug fixed in the Gregorian calendar:
+             * http://www.jtcsv.com/cgibin/icu-bugs/incoming?id=4406;page=2;user=guest
+             */
+            new TestCase(1721059.5,  0,  5492,    5,   7,  SAT,   0,  0,  0), // Gregorian: 01/01/0000
+            new TestCase(1721425.5,  0,  5493,    5,   8,  MON,   0,  0,  0), // Gregorian: 01/01/0001
+            new TestCase(1723854.5,  0,  5499,   13,   6,  MON,   0,  0,  0), // Gregorian: 27/08/0007
+
+            new TestCase(1723855.5,  0,  5500,    1,   1,  TUE,   0,  0,  0), // Gregorian: 28/08/0007
+            new TestCase(1724220.5,  1,     1,    1,   1,  WED,   0,  0,  0), // Gregorian: 27/08/0008
+            new TestCase(1724585.5,  1,     2,    1,   1,  THU,   0,  0,  0), // Gregorian: 27/08/0009
+            new TestCase(1724950.5,  1,     3,    1,   1,  FRI,   0,  0,  0), // Gregorian: 27/08/0010
+
+            // new TestCase(1724536.5,  1,     4,    1,   1,  SUN,   0,  0,  0), // Gregorian: 28/08/0011
+            new TestCase(1725316.5,  1,     4,    1,   1,  SUN,   0,  0,  0), // Gregorian: 28/08/0011 - dlf
+            new TestCase(1724219.5,  0,  5500,   13,   5,  TUE,   0,  0,  0), // Gregorian: 26/08/0008
+            new TestCase(1724584.5,  1,     1,   13,   5,  WED,   0,  0,  0), // Gregorian: 26/08/0009
+            new TestCase(1724949.5,  1,     2,   13,   5,  THU,   0,  0,  0), // Gregorian: 26/08/0010
+            new TestCase(1725314.5,  1,     3,   13,   5,  FRI,   0,  0,  0), // Gregorian: 26/08/0011
+            new TestCase(1725315.5,  1,     3,   13,   6,  SAT,   0,  0,  0), // Gregorian: 27/08/0011 - first ethiopic leap year
+            // new TestCase(1725560.5,  1,     4,   13,   5,  SUN,   0,  0,  0), // Gregorian: 26/08/0012 - dlf
+            new TestCase(1725680.5,  1,     4,   13,   5,  SUN,   0,  0,  0), // Gregorian: 26/08/0012
+            new TestCase(2299158.5,  1,  1575,    2,   6,  WED,   0,  0,  0), // Gregorian: 13/10/1582  
+            new TestCase(2299159.5,  1,  1575,    2,   7,  THU,   0,  0,  0), // Gregorian: 14/10/1582  Julian 04/10/1582
+
+            new TestCase(2299160.5,  1,  1575,    2,   8,  FRI,   0,  0,  0), // Gregorian: 15/10/1582
+            new TestCase(2299161.5,  1,  1575,    2,   9,  SAT,   0,  0,  0), // Gregorian: 16/10/1582
+
+            new TestCase(2415020.5,  1,  1892,    4,  23,  MON,   0,  0,  0), // Gregorian: 01/01/1900
+            new TestCase(2453371.5,  1,  1997,    4,  23,  SAT,   0,  0,  0), // Gregorian: 01/01/2005
+            new TestCase(2454719.5,  1,  2000,   13,   5,  WED,   0,  0,  0), // Gregorian: 10/09/2008
+        };
+
+        final TestCase[] testsAmeteAlem = {
+                //
+                // The months in this table are 1-based rather than 0-based,
+                // because it's easier to edit that way.
+                //                      Ethiopic
+                //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+                //
+                // Dates from "Emporer Theodore..."
+
+                new TestCase(2401442.5,  0,  7355,    2,  20,  WED,   0,  0,  0), // Gregorian: 29/10/1862
+                new TestCase(2402422.5,  0,  7357,   10,  29,  WED,   0,  0,  0), // Gregorian: 05/07/1865
+                new TestCase(2402630.5,  0,  7358,    5,  22,  MON,   0,  0,  0), // Gregorian: 29/01/1866
+                new TestCase(2402708.5,  0,  7358,    8,  10,  TUE,   0,  0,  0), // Gregorian: 17/04/1866
+                new TestCase(2402971.5,  0,  7359,    4,  28,  SAT,   0,  0,  0), // Gregorian: 05/01/1867
+                new TestCase(2403344.5,  0,  7360,    5,   5,  MON,   0,  0,  0), // Gregorian: 13/01/1868
+                            
+                // Miscellaneous:
+                /* Skip these tests until JD bug fixed in the Gregorian calendar:
+                 * http://www.jtcsv.com/cgibin/icu-bugs/incoming?id=4406;page=2;user=guest
+                 */
+                new TestCase(1721059.5,  0,  5492,    5,   7,  SAT,   0,  0,  0), // Gregorian: 01/01/0000
+                new TestCase(1721425.5,  0,  5493,    5,   8,  MON,   0,  0,  0), // Gregorian: 01/01/0001
+                new TestCase(1723854.5,  0,  5499,   13,   6,  MON,   0,  0,  0), // Gregorian: 27/08/0007
+
+                new TestCase(1723855.5,  0,  5500,    1,   1,  TUE,   0,  0,  0), // Gregorian: 28/08/0007
+                new TestCase(1724220.5,  0,  5501,    1,   1,  WED,   0,  0,  0), // Gregorian: 27/08/0008
+                new TestCase(1724585.5,  0,  5502,    1,   1,  THU,   0,  0,  0), // Gregorian: 27/08/0009
+                new TestCase(1724950.5,  0,  5503,    1,   1,  FRI,   0,  0,  0), // Gregorian: 27/08/0010
+
+                // new TestCase(1724536.5,  0,  5504,    1,   1,  SUN,   0,  0,  0), // Gregorian: 28/08/0011
+                new TestCase(1725316.5,  0,  5504,    1,   1,  SUN,   0,  0,  0), // Gregorian: 28/08/0011 - dlf
+                new TestCase(1724219.5,  0,  5500,   13,   5,  TUE,   0,  0,  0), // Gregorian: 26/08/0008
+                new TestCase(1724584.5,  0,  5501,   13,   5,  WED,   0,  0,  0), // Gregorian: 26/08/0009
+                new TestCase(1724949.5,  0,  5502,   13,   5,  THU,   0,  0,  0), // Gregorian: 26/08/0010
+                new TestCase(1725314.5,  0,  5503,   13,   5,  FRI,   0,  0,  0), // Gregorian: 26/08/0011
+                new TestCase(1725315.5,  0,  5503,   13,   6,  SAT,   0,  0,  0), // Gregorian: 27/08/0011 - first ethiopic leap year
+                // new TestCase(1725560.5,  0,  5504,   13,   5,  SUN,   0,  0,  0), // Gregorian: 26/08/0012 - dlf
+                new TestCase(1725680.5,  0,  5504,   13,   5,  SUN,   0,  0,  0), // Gregorian: 26/08/0012
+                new TestCase(2299158.5,  0,  7075,    2,   6,  WED,   0,  0,  0), // Gregorian: 13/10/1582  
+                new TestCase(2299159.5,  0,  7075,    2,   7,  THU,   0,  0,  0), // Gregorian: 14/10/1582  Julian 04/10/1582
+
+                new TestCase(2299160.5,  0,  7075,    2,   8,  FRI,   0,  0,  0), // Gregorian: 15/10/1582
+                new TestCase(2299161.5,  0,  7075,    2,   9,  SAT,   0,  0,  0), // Gregorian: 16/10/1582
+
+                new TestCase(2415020.5,  0,  7392,    4,  23,  MON,   0,  0,  0), // Gregorian: 01/01/1900
+                new TestCase(2453371.5,  0,  7497,    4,  23,  SAT,   0,  0,  0), // Gregorian: 01/01/2005
+                new TestCase(2454719.5,  0,  7500,   13,   5,  WED,   0,  0,  0), // Gregorian: 10/09/2008
+            };
+
+        EthiopicCalendar testCalendar = new EthiopicCalendar();
+        testCalendar.setLenient(true);
+        doTestCases(tests, testCalendar);
+
+        // Testing Amete Alem mode
+
+        EthiopicCalendar testCalendarAmeteAlem = new EthiopicCalendar();
+        testCalendarAmeteAlem.setAmeteAlemEra(true);
+        testCalendarAmeteAlem.setLenient(true);
+        doTestCases(testsAmeteAlem, testCalendarAmeteAlem);
+    }
+
+    // basic check to see that we print out eras ok
+    // eventually should modify to use locale strings and formatter appropriate to coptic calendar
+    public void TestEraStart() {
+        SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd, yyyy GG");
+        EthiopicCalendar cal = new EthiopicCalendar(1, 0, 1);
+        assertEquals("Ethiopic Date", "Wed Jan 01, 0001 AD", fmt.format(cal));
+
+        cal.set(Calendar.ERA, 0);
+        cal.set(Calendar.YEAR, 5500);
+        assertEquals("Ethiopic Date", "Tue Jan 01, 5500 BC", fmt.format(cal));
+
+        // The gregorian calendar gets off by two days when
+        // the date gets low, unless the gregorian changeover is set to 
+        // very early.  The funny thing is, it's ok for dates in the year
+        // 283, but not in the year 7, and it claims to be ok until the year 4.
+        // should track down when the dates start to differ...
+        
+        GregorianCalendar gc = new GregorianCalendar();
+        gc.setGregorianChange(new Date(Long.MIN_VALUE)); // act like proleptic Gregorian
+        gc.setTime(cal.getTime());
+        assertEquals("Gregorian Date", "Tue Aug 28, 0007 AD", fmt.format(gc));
+    }
+
+    public void TestBasic() {
+        EthiopicCalendar cal = new EthiopicCalendar();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30-> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+    
+    public void TestJD(){
+        int jd = EthiopicCalendar.EthiopicToJD(1567,8,9);
+        EthiopicCalendar cal = new EthiopicCalendar();
+        cal.clear();
+        cal.set(Calendar.JULIAN_DAY, jd);
+        if (cal.get(Calendar.EXTENDED_YEAR) == 1567 &&
+            cal.get(Calendar.MONTH) == 8 &&
+            cal.get(Calendar.DAY_OF_MONTH) == 9){
+            logln("EthiopicCalendar.getDateFromJD tested");
+        } else {
+            errln("EthiopicCalendar.getDateFromJD failed");
+        }
+    }
+
+    /**
+     * Test limits of the Coptic calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        EthiopicCalendar ethiopic = new EthiopicCalendar();
+        doLimitsTest(ethiopic, null, cal.getTime());
+        doTheoreticalLimitsTest(ethiopic, true);
+    }
+
+    
+    public void TestCoverage() {
+
+        {
+            // new EthiopicCalendar(TimeZone)
+            EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault()); 
+            if(cal == null){
+                errln("could not create EthiopicCalendar with TimeZone");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(ULocale)
+            EthiopicCalendar cal = new EthiopicCalendar(ULocale.getDefault());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with ULocale");
+            }
+        }
+        
+        {
+            // new EthiopicCalendar(Locale)
+            EthiopicCalendar cal = new EthiopicCalendar(Locale.getDefault());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with Locale");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(TimeZone, Locale)
+            EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault(), Locale.getDefault());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with TimeZone,Locale");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(TimeZone, ULocale)
+            EthiopicCalendar cal = new EthiopicCalendar(TimeZone.getDefault(), ULocale.getDefault());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with TimeZone,ULocale");
+            }
+        }
+        
+        {
+            // new EthiopicCalendar(Date)
+            EthiopicCalendar cal = new EthiopicCalendar(new Date());
+            if(cal == null){
+                errln("could not create EthiopicCalendar with Date");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(int year, int month, int date)
+            EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1);
+            if(cal == null){
+                errln("could not create EthiopicCalendar with year,month,date");
+            }
+        }
+
+        {
+            // new EthiopicCalendar(int year, int month, int date, int hour, int minute, int second)
+            EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1, 1, 1, 1);
+            if(cal == null){
+                errln("could not create EthiopicCalendar with year,month,date,hour,minute,second");
+            }
+        }
+
+        {
+            // setCivil/isCivil
+            // operations on non-civil calendar
+            EthiopicCalendar cal = newAmeteAlemEraCalendar();
+            cal.setAmeteAlemEra(false);
+            if (cal.isAmeteAlemEra()) {
+                errln("EthiopicCalendar calendar is old system");
+            }
+
+            Date now = new Date();
+            cal.setTime(now);
+
+            Date then = cal.getTime();
+            if (!now.equals(then)) {
+                errln("get/set time failed with non-civil EthiopicCalendar calendar");
+            }
+
+            logln(then.toString());
+
+            cal.add(Calendar.MONTH, 1);
+            cal.add(Calendar.DAY_OF_MONTH, 1);
+            cal.add(Calendar.YEAR, 1);
+
+            logln(cal.getTime().toString());
+        }
+    
+        {
+            // data
+            EthiopicCalendar cal = new EthiopicCalendar(1997, EthiopicCalendar.MESKEREM, 1);
+            Date time = cal.getTime();
+
+            String[] calendarLocales = {
+                "am_ET", "gez_ET", "ti_ET"
+            };
+
+            String[] formatLocales = {
+                "en", "am", "gez", "ti"
+            };
+            for (int i = 0; i < calendarLocales.length; ++i) {
+                String calLocName = calendarLocales[i];
+                Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+                cal = new EthiopicCalendar(calLocale);
+
+                for (int j = 0; j < formatLocales.length; ++j) {
+                    String locName = formatLocales[j];
+                    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                    logln(calLocName + "/" + locName + " --> " + format.format(time));
+                }
+            }
+        }
+    }
+    
+    private static EthiopicCalendar newAmeteAlemEraCalendar() {
+        EthiopicCalendar alemawiCalendar = new EthiopicCalendar();
+        alemawiCalendar.setAmeteAlemEra(true);
+        return alemawiCalendar;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/HebrewTest.java b/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
new file mode 100644
index 0000000..e3a3914
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
@@ -0,0 +1,462 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.calendar;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>HebrewCalendar</code> class.
+ */
+public class HebrewTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new HebrewTest().run(args);
+    }
+
+    // Constants to save typing.
+    public static final int TISHRI  = HebrewCalendar.TISHRI;
+    public static final int HESHVAN = HebrewCalendar.HESHVAN;
+    public static final int KISLEV  = HebrewCalendar.KISLEV;
+    public static final int TEVET   = HebrewCalendar.TEVET;
+    public static final int SHEVAT  = HebrewCalendar.SHEVAT;
+    public static final int ADAR_1  = HebrewCalendar.ADAR_1;
+    public static final int ADAR    = HebrewCalendar.ADAR;
+    public static final int NISAN   = HebrewCalendar.NISAN;
+    public static final int IYAR    = HebrewCalendar.IYAR;
+    public static final int SIVAN   = HebrewCalendar.SIVAN;
+    public static final int TAMUZ   = HebrewCalendar.TAMUZ;
+    public static final int AV      = HebrewCalendar.AV;
+    public static final int ELUL    = HebrewCalendar.ELUL;
+
+    /**
+     * Test the behavior of HebrewCalendar.roll
+     * The only real nastiness with roll is the MONTH field, since a year can
+     * have a variable number of months.
+     */
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            //       input                roll by          output
+            //  year  month     day     field amount    year  month     day
+    
+            {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },   // non-leap years
+            {   5759, SHEVAT,    2,     MONTH,   1,     5759, ADAR,      2 },
+            {   5759, SHEVAT,    2,     MONTH,   2,     5759, NISAN,     2 },
+            {   5759, SHEVAT,    2,     MONTH,  12,     5759, SHEVAT,    2 },
+            {   5759, AV,        1,     MONTH,  12,     5759, AV,        1 }, // Alan
+
+            {   5757, HESHVAN,   2,     MONTH,   1,     5757, KISLEV,    2 },   // leap years
+            {   5757, SHEVAT,    2,     MONTH,   1,     5757, ADAR_1,    2 },
+            {   5757, SHEVAT,    2,     MONTH,   2,     5757, ADAR,      2 },
+            {   5757, SHEVAT,    2,     MONTH,   3,     5757, NISAN,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  12,     5757, TEVET,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  13,     5757, SHEVAT,    2 },
+            {   5757, AV,        1,     MONTH,  12,     5757, TAMUZ,     1 }, // Alan
+            
+            {   5757, KISLEV,    1,     DATE,   30,     5757, KISLEV,    2 },   // 29-day month
+            {   5758, KISLEV,    1,     DATE,   31,     5758, KISLEV,    2 },   // 30-day month
+            
+            // Try some other fields too
+            {   5757, TISHRI,    1,     YEAR,    1,     5758, TISHRI,    1 },
+   
+
+            // Try some rolls that require other fields to be adjusted
+            {   5757, TISHRI,   30,     MONTH,   1,     5757, HESHVAN,  29 },
+            {   5758, KISLEV,   30,     YEAR,   -1,     5757, KISLEV,   29 },
+        };
+//        try{
+            HebrewCalendar cal = new HebrewCalendar(UTC, Locale.getDefault());
+    
+            doRollAdd(ROLL, cal, tests);
+ //       }catch(MissingResourceException ex){
+//            warnln("Got Exception: "+ ex.getMessage());
+ //       }
+    }
+    
+    /**
+     * Test the behavior of HebrewCalendar.roll
+     * The only real nastiness with roll is the MONTH field, since a year can
+     * have a variable number of months.
+     */
+    public void TestAdd() {
+        int[][] tests = new int[][] {
+            //       input                add by          output
+            //  year  month     day     field amount    year  month     day
+            {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },   // non-leap years
+            {   5759, SHEVAT,    2,     MONTH,   1,     5759, ADAR,      2 },
+            {   5759, SHEVAT,    2,     MONTH,   2,     5759, NISAN,     2 },
+            {   5759, SHEVAT,    2,     MONTH,  12,     5760, SHEVAT,    2 },
+
+            {   5757, HESHVAN,   2,     MONTH,   1,     5757, KISLEV,    2 },   // leap years
+            {   5757, SHEVAT,    2,     MONTH,   1,     5757, ADAR_1,    2 },
+            {   5757, SHEVAT,    2,     MONTH,   2,     5757, ADAR,      2 },
+            {   5757, SHEVAT,    2,     MONTH,   3,     5757, NISAN,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  12,     5758, TEVET,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  13,     5758, SHEVAT,    2 },
+            
+            {   5762, AV,        1,     MONTH,   1,     5762, ELUL,      1 },   // JB#2327
+            {   5762, AV,       30,     DATE,    1,     5762, ELUL,      1 },   // JB#2327
+            {   5762, ELUL,      1,     DATE,   -1,     5762, AV,       30 },   // JB#2327
+            {   5762, ELUL,      1,     MONTH,  -1,     5762, AV,        1 },   // JB#2327
+            
+            {   5757, KISLEV,    1,     DATE,   30,     5757, TEVET,     2 },   // 29-day month
+            {   5758, KISLEV,    1,     DATE,   31,     5758, TEVET,     2 },   // 30-day month
+        };
+        try{
+            HebrewCalendar cal = new HebrewCalendar(UTC, Locale.getDefault());
+    
+            doRollAdd(ADD, cal, tests);
+        }catch( MissingResourceException ex){
+            warnln("Could not load the locale data");
+        }
+    }
+
+    /**
+     * A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data.
+     */
+    public void TestCases() {
+        try{
+            final TestCase[] testCases = {
+                    //
+                    // Most of these test cases were taken from the back of
+                    // "Calendrical Calculations", with some extras added to help
+                    // debug a few of the problems that cropped up in development.
+                    //
+                    // The months in this table are 1-based rather than 0-based,
+                    // because it's easier to edit that way.
+                    //
+                    //         Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+                    new TestCase(1507231.5,  0,  3174,   12,  10,  SUN,   0,  0,  0),
+                    new TestCase(1660037.5,  0,  3593,    3,  25,  WED,   0,  0,  0),
+                    new TestCase(1746893.5,  0,  3831,    1,   3,  WED,   0,  0,  0),
+                    new TestCase(1770641.5,  0,  3896,    1,   9,  SUN,   0,  0,  0),
+                    new TestCase(1892731.5,  0,  4230,    4,  18,  WED,   0,  0,  0),
+                    new TestCase(1931579.5,  0,  4336,   10,   4,  MON,   0,  0,  0),
+                    new TestCase(1974851.5,  0,  4455,    2,  13,  SAT,   0,  0,  0),
+                    new TestCase(2091164.5,  0,  4773,    9,   6,  SUN,   0,  0,  0),
+                    new TestCase(2121509.5,  0,  4856,    9,  23,  SUN,   0,  0,  0),
+                    new TestCase(2155779.5,  0,  4950,    8,   7,  FRI,   0,  0,  0),
+                    new TestCase(2174029.5,  0,  5000,    7,   8,  SAT,   0,  0,  0),
+                    new TestCase(2191584.5,  0,  5048,    8,  21,  FRI,   0,  0,  0),
+                    new TestCase(2195261.5,  0,  5058,    9,   7,  SUN,   0,  0,  0),
+                    new TestCase(2229274.5,  0,  5151,   11,   1,  SUN,   0,  0,  0),
+                    new TestCase(2245580.5,  0,  5196,    5,   7,  WED,   0,  0,  0),
+                    new TestCase(2266100.5,  0,  5252,    8,   3,  SAT,   0,  0,  0),
+                    new TestCase(2288542.5,  0,  5314,    1,   1,  SAT,   0,  0,  0),
+                    new TestCase(2290901.5,  0,  5320,    6,  27,  SAT,   0,  0,  0),
+                    new TestCase(2323140.5,  0,  5408,   10,  20,  WED,   0,  0,  0),
+                    new TestCase(2334551.5,  0,  5440,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(2334581.5,  0,  5440,    2,   1,  SAT,   0,  0,  0),
+                    new TestCase(2334610.5,  0,  5440,    3,   1,  SUN,   0,  0,  0),
+                    new TestCase(2334639.5,  0,  5440,    4,   1,  MON,   0,  0,  0),
+                    new TestCase(2334668.5,  0,  5440,    5,   1,  TUE,   0,  0,  0),
+                    new TestCase(2334698.5,  0,  5440,    6,   1,  THU,   0,  0,  0),
+                    new TestCase(2334728.5,  0,  5440,    7,   1,  SAT,   0,  0,  0),
+                    new TestCase(2334757.5,  0,  5440,    8,   1,  SUN,   0,  0,  0),
+                    new TestCase(2334787.5,  0,  5440,    9,   1,  TUE,   0,  0,  0),
+                    new TestCase(2334816.5,  0,  5440,   10,   1,  WED,   0,  0,  0),
+                    new TestCase(2334846.5,  0,  5440,   11,   1,  FRI,   0,  0,  0),
+                    new TestCase(2334848.5,  0,  5440,   11,   3,  SUN,   0,  0,  0),
+                    new TestCase(2334934.5,  0,  5441,    1,   1,  TUE,   0,  0,  0),
+                    new TestCase(2348020.5,  0,  5476,   12,   5,  FRI,   0,  0,  0),
+                    new TestCase(2366978.5,  0,  5528,   11,   4,  SUN,   0,  0,  0),
+                    new TestCase(2385648.5,  0,  5579,   12,  11,  MON,   0,  0,  0),
+                    new TestCase(2392825.5,  0,  5599,    8,  12,  WED,   0,  0,  0),
+                    new TestCase(2416223.5,  0,  5663,    8,  22,  SUN,   0,  0,  0),
+                    new TestCase(2425848.5,  0,  5689,   12,  19,  SUN,   0,  0,  0),
+                    new TestCase(2430266.5,  0,  5702,    1,   8,  MON,   0,  0,  0),
+                    new TestCase(2430833.5,  0,  5703,    8,  14,  MON,   0,  0,  0),
+                    new TestCase(2431004.5,  0,  5704,    1,   8,  THU,   0,  0,  0),
+                    new TestCase(2448698.5,  0,  5752,    7,  12,  TUE,   0,  0,  0),
+                    new TestCase(2450138.5,  0,  5756,    7,   5,  SUN,   0,  0,  0),
+                    new TestCase(2465737.5,  0,  5799,    2,  12,  WED,   0,  0,  0),
+                    new TestCase(2486076.5,  0,  5854,   12,   5,  SUN,   0,  0,  0),
+
+                    // Additional test cases for bugs found during development
+                    //           G.YY/MM/DD  Era  Year  Month Day  WkDay Hour Min Sec
+                    new TestCase(1013, 9, 8, 0,  4774,    1,   1,  TUE,   0,  0,  0),
+                    new TestCase(1239, 9, 1, 0,  5000,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(1240, 9,18, 0,  5001,    1,   1,  TUE,   0,  0,  0),
+
+                    // Test cases taken from a table of 14 "year types" in the Help file
+                    // of the application "Hebrew Calendar"
+                    new TestCase(2456187.5,  0,  5773,    1,   1,  MON,   0,  0,  0),
+                    new TestCase(2459111.5,  0,  5781,    1,   1,  SAT,   0,  0,  0),
+                    new TestCase(2453647.5,  0,  5766,    1,   1,  TUE,   0,  0,  0),
+                    new TestCase(2462035.5,  0,  5789,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(2458756.5,  0,  5780,    1,   1,  MON,   0,  0,  0),
+                    new TestCase(2460586.5,  0,  5785,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(2463864.5,  0,  5794,    1,   1,  SAT,   0,  0,  0),
+                    new TestCase(2463481.5,  0,  5793,    1,   1,  MON,   0,  0,  0),
+                    new TestCase(2470421.5,  0,  5812,    1,   1,  THU,   0,  0,  0),
+                    new TestCase(2460203.5,  0,  5784,    1,   1,  SAT,   0,  0,  0),
+                    new TestCase(2459464.5,  0,  5782,    1,   1,  TUE,   0,  0,  0),
+                    new TestCase(2467142.5,  0,  5803,    1,   1,  MON,   0,  0,  0),
+                    new TestCase(2455448.5,  0,  5771,    1,   1,  THU,   0,  0,  0),
+                
+                    // Test cases for JB#2327        
+                    // http://www.fourmilab.com/documents/calendar/
+                    // http://www.calendarhome.com/converter/
+//                2452465.5, 2002, JULY, 10, 5762, AV, 1,
+//                2452494.5, 2002, AUGUST, 8, 5762, AV, 30,
+//                2452495.5, 2002, AUGUST, 9, 5762, ELUL, 1,
+//                2452523.5, 2002, SEPTEMBER, 6, 5762, ELUL, 29,
+//                2452524.5, 2002, SEPTEMBER, 7, 5763, TISHRI, 1,
+                    //         Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+                    new TestCase(2452465.5,  0,  5762,    AV+1,  1,  WED,   0,  0,  0),
+                    new TestCase(2452494.5,  0,  5762,    AV+1, 30,  THU,   0,  0,  0),
+                    new TestCase(2452495.5,  0,  5762,  ELUL+1,  1,  FRI,   0,  0,  0),
+                    new TestCase(2452523.5,  0,  5762,  ELUL+1, 29,  FRI,   0,  0,  0),
+                    new TestCase(2452524.5,  0,  5763,TISHRI+1,  1,  SAT,   0,  0,  0),
+                };
+                doTestCases(testCases, new HebrewCalendar());
+   
+        }catch(MissingResourceException ex){
+            warnln("Got Exception: "+ ex.getMessage());
+        }
+    }
+
+    /**
+     * Problem reported by Armand Bendanan in which setting of the MONTH
+     * field in a Hebrew calendar causes the time fields to go negative.
+     */
+    public void TestTimeFields() {
+        try{
+            HebrewCalendar calendar = new HebrewCalendar(5761, 0, 11, 12, 28, 15);
+            calendar.set(Calendar.YEAR, 5717);
+            calendar.set(Calendar.MONTH, 2);
+            calendar.set(Calendar.DAY_OF_MONTH, 23);
+            if (calendar.get(Calendar.HOUR_OF_DAY) != 12) {
+                errln("Fail: HebrewCalendar HOUR_OF_DAY = " + calendar.get(Calendar.HOUR_OF_DAY));
+            }
+        }catch(MissingResourceException ex){
+            warnln("Got Exception: "+ ex.getMessage());
+        }
+    }
+
+    /**
+     * Problem reported by Armand Bendanan (armand.bendanan@free.fr)
+     * in which setting of the MONTH field in a Hebrew calendar to
+     * ELUL on non leap years causes the date to be set on TISHRI next year.
+     */
+    public void TestElulMonth() {
+        try{
+            HebrewCalendar cal = new HebrewCalendar();
+            // Leap years are:
+            // 3 6 8 11 14 17 19 (and so on - 19-year cycle)
+            for (int year=1; year<50; year++) {
+                // I hope that year = 0 does not exists
+                // because the test fails for it !
+                cal.clear();
+                
+                cal.set(Calendar.YEAR, year);
+                cal.set(Calendar.MONTH, ELUL);
+                cal.set(Calendar.DAY_OF_MONTH, 1);
+                
+                int yact = cal.get(Calendar.YEAR);
+                int mact = cal.get(Calendar.MONTH);
+                
+                if (year != yact || ELUL != mact) {
+                    errln("Fail: " + ELUL + "/" + year +
+                          " -> " +
+                          mact + "/" + yact);
+                }
+            }
+        }catch(MissingResourceException ex){
+            warnln("Got Exception: "+ ex.getMessage());
+        }   
+    }
+    
+    /**
+     * Test of the behavior of the month field.  This requires special
+     * handling in the Hebrew calendar because of the pattern of leap
+     * years.
+     */
+    public void TestMonthMovement() {
+        try{
+            HebrewCalendar cal = new HebrewCalendar();
+            // Leap years are:
+            // 3 6 8 11 14 17 19 (and so on - 19-year cycle)
+            // We can't test complete() on some lines below because of ADAR_1 -- if
+            // the calendar is set to ADAR_1 on a non-leap year, the result is undefined.
+            int[] DATA = {
+                // m1/y1 - month/year before (month is 1-based) 
+                // delta - amount to add to month field
+                // m2/y2 - month/year after add(MONTH, delta)
+                // m3/y3 - month/year after set(MONTH, m1+delta)
+              //m1  y1 delta  m2  y2  m3  y3
+                10,  2,  +24,  9,  4,  9,  4,
+                10,  2,  +60,  8,  7,  8,  7,
+                1 ,  2,  +12,  1,  3, 13,  2, //*set != add; also see '*' below
+                3 , 18,  -24,  4, 16,  4, 16,
+                1 ,  6,  -24,  1,  4,  1,  4,
+                4 ,  3,   +2,  6,  3,  6,  3, // Leap year - no skip 4,5,6,7,8
+                8 ,  3,   -2,  6,  3,  6,  3, // Leap year - no skip
+                4 ,  2,   +2,  7,  2,  7,  2, // Skip leap month 4,5,(6),7,8
+                8 ,  2,   -2,  5,  2,  7,  2, //*Skip leap month going backward
+            };
+            for (int i=0; i<DATA.length; ) {
+                int m = DATA[i++], y = DATA[i++];
+                int monthDelta = DATA[i++];
+                int m2 = DATA[i++], y2 = DATA[i++];
+                int m3 = DATA[i++], y3 = DATA[i++];
+                int mact, yact;
+    
+                cal.clear();
+                cal.set(Calendar.YEAR, y);
+                cal.set(Calendar.MONTH, m-1);
+                cal.add(Calendar.MONTH, monthDelta);
+                yact = cal.get(Calendar.YEAR); mact = cal.get(Calendar.MONTH) + 1;
+                if (y2 != yact || m2 != mact) {
+                    errln("Fail: " + m + "/" + y +
+                          " -> add(MONTH, " + monthDelta + ") -> " +
+                          mact + "/" + yact + ", expected " +
+                          m2 + "/" + y2);
+                    cal.clear();
+                    cal.set(Calendar.YEAR, y);
+                    cal.set(Calendar.MONTH, m-1);
+                    logln("Start: " + m + "/" + y);
+                    int delta = monthDelta > 0 ? 1 : -1;
+                    for (int c=0; c!=monthDelta; c+=delta) {
+                        cal.add(Calendar.MONTH, delta);
+                        logln("+ " + delta + " MONTH -> " +
+                              (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.YEAR));
+                    }
+                }
+                
+                cal.clear();
+                cal.set(Calendar.YEAR, y);
+                cal.set(Calendar.MONTH, m + monthDelta - 1);
+                yact = cal.get(Calendar.YEAR); mact = cal.get(Calendar.MONTH) + 1;
+                if (y3 != yact || m3 != mact) {
+                    errln("Fail: " + (m+monthDelta) + "/" + y +
+                          " -> complete() -> " +
+                          mact + "/" + yact + ", expected " +
+                          m3 + "/" + y3);
+                }
+            }
+        }catch(MissingResourceException ex){
+            warnln("Got Exception: "+ ex.getMessage());
+        }
+    }
+
+    /**
+     * Test handling of ADAR_1.
+     */
+    /*
+    public void TestAdar1() {
+        HebrewCalendar cal = new HebrewCalendar();
+        cal.clear();
+        cal.set(Calendar.YEAR, 1903); // leap
+        cal.set(Calendar.MONTH, HebrewCalendar.ADAR_1);
+        logln("1903(leap)/ADAR_1 => " +
+              cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH)+1));
+
+        cal.clear();
+        cal.set(Calendar.YEAR, 1904); // non-leap
+        cal.set(Calendar.MONTH, HebrewCalendar.ADAR_1);
+        logln("1904(non-leap)/ADAR_1 => " +
+              cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH)+1));
+    }
+    */
+
+    /**
+     * With no fields set, the calendar should use default values.
+     */
+    public void TestDefaultFieldValues() {
+        try{
+            HebrewCalendar cal = new HebrewCalendar();
+            cal.clear();
+            logln("cal.clear() -> " + cal.getTime());
+        }catch(MissingResourceException ex){
+            warnln("could not load the locale data");
+        }
+    }
+
+    /**
+     * Test limits of the Hebrew calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        HebrewCalendar hebrew = new HebrewCalendar();
+        doLimitsTest(hebrew, null, cal.getTime());
+        doTheoreticalLimitsTest(hebrew, true);
+    }
+
+    public void TestCoverage() {
+        try{
+            {
+                // new HebrewCalendar(TimeZone)
+                HebrewCalendar cal = new HebrewCalendar(TimeZone.getDefault());
+                if(cal == null){
+                    errln("could not create HebrewCalendar with TimeZone");
+                }
+            }
+    
+            {
+                // new HebrewCalendar(ULocale)
+                HebrewCalendar cal = new HebrewCalendar(ULocale.getDefault());
+                if(cal == null){
+                    errln("could not create HebrewCalendar with ULocale");
+                }
+            }
+                
+            {
+                // new HebrewCalendar(Locale)
+                HebrewCalendar cal = new HebrewCalendar(Locale.getDefault());
+                if(cal == null){
+                    errln("could not create HebrewCalendar with locale");
+                }
+            }
+        
+            {
+                // new HebrewCalendar(Date)
+                HebrewCalendar cal = new HebrewCalendar(new Date());
+                if(cal == null){
+                    errln("could not create HebrewCalendar with date");
+                }
+            }
+        
+            {
+                // data
+                HebrewCalendar cal = new HebrewCalendar(2800, HebrewCalendar.SHEVAT, 1);
+                Date time = cal.getTime();
+        
+                String[] calendarLocales = {
+                "iw_IL"
+                };
+        
+                String[] formatLocales = {
+                "en", "fi", "fr", "hu", "iw", "nl"
+                };
+                for (int i = 0; i < calendarLocales.length; ++i) {
+                    String calLocName = calendarLocales[i];
+                    Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+                    cal = new HebrewCalendar(calLocale);
+            
+                    for (int j = 0; j < formatLocales.length; ++j) {
+                        String locName = formatLocales[j];
+                        Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                        DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                        logln(calLocName + "/" + locName + " --> " + format.format(time));
+                    }
+                }
+            }
+        }catch( MissingResourceException ex){
+            warnln("Could not load the locale data. "+ ex.getMessage());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/HolidayTest.java b/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
new file mode 100644
index 0000000..5611e26
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
@@ -0,0 +1,227 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.EasterHoliday;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.Holiday;
+import com.ibm.icu.util.RangeDateRule;
+import com.ibm.icu.util.SimpleDateRule;
+import com.ibm.icu.util.SimpleHoliday;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>Holiday</code> class.
+ */
+public class HolidayTest extends TestFmwk {
+    public static void main(String args[]) throws Exception {
+        new HolidayTest().run(args);
+    }
+    protected void init()throws Exception{
+        if(cal==null){
+            cal = new GregorianCalendar(1, 0, 1);
+            longTimeAgo = cal.getTime();
+            now = new Date();
+        }
+    }
+    static  Calendar cal;
+    static  Date longTimeAgo;
+    static  Date now;
+    static  long awhile = 3600L * 24 * 28; // 28 days
+
+    public void TestAPI() {
+        {
+            // getHolidays
+            Holiday[] holidays = Holiday.getHolidays();
+            exerciseHolidays(holidays, Locale.getDefault());
+        }
+
+        {
+            // getHolidays(Locale)
+            String[] localeNames =
+            {
+                "en_US",
+                "da",
+                "da_DK",
+                "de",
+                "de_AT",
+                "de_DE",
+                "el",
+                "el_GR",
+                "en",
+                "en_CA",
+                "en_GB",
+                "es",
+                "es_MX",
+                "fr",
+                "fr_CA",
+                "fr_FR",
+                "it",
+                "it_IT",
+                "iw",
+                "iw_IL",
+                "ja",
+                "ja_JP",
+            };
+
+            for (int i = 0; i < localeNames.length; ++i) {
+                Locale locale = LocaleUtility.getLocaleFromName(localeNames[i]);
+                Holiday[] holidays = Holiday.getHolidays(locale);
+                exerciseHolidays(holidays, locale);
+            }
+        }
+    }
+
+    void exerciseHolidays(Holiday[] holidays, Locale locale) {
+        for (int i = 0; i < holidays.length; ++i) {
+            exerciseHoliday(holidays[i], locale);
+        }
+    }
+
+    void exerciseHoliday(Holiday h, Locale locale) {
+        logln("holiday: " + h.getDisplayName());
+        logln("holiday in " + locale + ": " + h.getDisplayName(locale));
+
+        Date first = h.firstAfter(longTimeAgo);
+        logln("firstAfter: " + longTimeAgo + " is " + first);
+        if (first == null) {
+            first = longTimeAgo;
+        }
+        first.setTime(first.getTime() + awhile);
+
+        Date second = h.firstBetween(first, now);
+        logln("firstBetween: " + first + " and " + now + " is " + second);
+        if (second == null) {
+            second = now;
+        }
+
+        logln("is on " + first + ": " + h.isOn(first));
+        logln("is on " + now + ": " + h.isOn(now));
+        logln(
+              "is between "
+              + first
+              + " and "
+              + now
+              + ": "
+              + h.isBetween(first, now));
+        logln(
+              "is between "
+              + first
+              + " and "
+              + second
+              + ": "
+              + h.isBetween(first, second));
+
+        //        logln("rule: " + h.getRule().toString());
+
+        //        h.setRule(h.getRule());
+    }
+    
+    public void TestCoverage(){
+        Holiday[] h = { new EasterHoliday("Ram's Easter"),
+                        new SimpleHoliday(2, 29, 0, "Leap year", 1900, 2100)};
+        exerciseHolidays(h, Locale.getDefault());
+
+        RangeDateRule rdr = new RangeDateRule();
+        rdr.add(new SimpleDateRule(7, 10));
+        Date mbd = getDate(1953, Calendar.JULY, 10);
+        Date dbd = getDate(1958, Calendar.AUGUST, 15);
+        Date nbd = getDate(1990, Calendar.DECEMBER, 17);
+        Date abd = getDate(1992, Calendar.SEPTEMBER, 16);
+        Date xbd = getDate(1976, Calendar.JULY, 4);
+        Date ybd = getDate(2003, Calendar.DECEMBER, 8);
+        rdr.add(new SimpleDateRule(Calendar.JULY, 10, Calendar.MONDAY, false));
+        rdr.add(dbd, new SimpleDateRule(Calendar.AUGUST, 15, Calendar.WEDNESDAY, true));
+        rdr.add(xbd, null);
+        rdr.add(nbd, new SimpleDateRule(Calendar.DECEMBER, 17, Calendar.MONDAY, false));
+        rdr.add(ybd, null);
+
+        logln("first after " + mbd + " is " + rdr.firstAfter(mbd));
+        logln("first between " + mbd + " and " + dbd + " is " + rdr.firstBetween(mbd, dbd));
+        logln("first between " + dbd + " and " + nbd + " is " + rdr.firstBetween(dbd, nbd));
+        logln("first between " + nbd + " and " + abd + " is " + rdr.firstBetween(nbd, abd));
+        logln("first between " + abd + " and " + xbd + " is " + rdr.firstBetween(abd, xbd));
+        logln("first between " + abd + " and " + null + " is " + rdr.firstBetween(abd, null));
+        logln("first between " + xbd + " and " + null + " is " + rdr.firstBetween(xbd, null));
+        
+        //getRule, setRule
+        logln("The rule in the holiday: " + h[1].getRule());
+        exerciseHoliday(h[1], Locale.getDefault());
+        h[1].setRule(rdr);
+        logln("Set the new rule to the SimpleHoliday ...");
+        if (!rdr.equals(h[1].getRule())) {
+            errln("FAIL: getRule and setRule not matched.");
+        }
+        exerciseHoliday(h[1], Locale.getDefault());
+    }
+
+    public void TestIsOn() {
+        // jb 1901
+        SimpleHoliday sh = new SimpleHoliday(Calendar.AUGUST, 15, "Doug's Day", 1958, 2058);
+        
+        Calendar gcal = new GregorianCalendar();
+        gcal.clear();
+        gcal.set(Calendar.YEAR, 2000);
+        gcal.set(Calendar.MONTH, Calendar.AUGUST);
+        gcal.set(Calendar.DAY_OF_MONTH, 15);
+        
+        Date d0 = gcal.getTime();
+        gcal.add(Calendar.SECOND, 1);
+        Date d1 = gcal.getTime();
+        gcal.add(Calendar.SECOND, -2);
+        Date d2 = gcal.getTime();
+        gcal.add(Calendar.DAY_OF_MONTH, 1);
+        Date d3 = gcal.getTime();
+        gcal.add(Calendar.SECOND, 1);
+        Date d4 = gcal.getTime();
+        gcal.add(Calendar.SECOND, -2);
+        gcal.set(Calendar.YEAR, 1957);
+        Date d5 = gcal.getTime();
+        gcal.set(Calendar.YEAR, 1958);
+        Date d6 = gcal.getTime();
+        gcal.set(Calendar.YEAR, 2058);
+        Date d7 = gcal.getTime();
+        gcal.set(Calendar.YEAR, 2059);
+        Date d8 = gcal.getTime();
+
+        Date[] dates = { d0, d1, d2, d3, d4, d5, d6, d7, d8 };
+        boolean[] isOns = { true, true, false, true, false, false, true, true, false };
+        for (int i = 0; i < dates.length; ++i) {
+            Date d = dates[i];
+            logln("\ndate: " + d);
+            boolean isOn = sh.isOn(d);
+            logln("isOnDate: " + isOn);
+            if (isOn != isOns[i]) {
+                errln("date: " + d + " should be on Doug's Day!");
+            }
+            Date h = sh.firstAfter(d);
+            logln("firstAfter: " + h);
+        }
+    }
+    
+    public void TestDisplayName() {
+        Holiday[] holidays = Holiday.getHolidays(ULocale.US);
+        for (int i = 0; i < holidays.length; ++i) {
+            Holiday h = holidays[i];
+            // only need to test one
+            // if the display names differ, we're using our data.  We know these names
+            // should differ for this holiday (not all will).
+            if ("Christmas".equals(h.getDisplayName(ULocale.US))) {
+                if ("Christmas".equals(h.getDisplayName(ULocale.GERMANY))) {
+                    errln("Using default name for holidays");
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java b/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
new file mode 100644
index 0000000..eaefad3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
@@ -0,0 +1,998 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+import java.text.ParseException;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.impl.CalendarAstronomer;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.*;
+
+/**
+ * @summary Tests of new functionality in IBMCalendar
+ */
+public class IBMCalendarTest extends CalendarTest {
+
+    public static void main(String[] args) throws Exception {
+        new IBMCalendarTest().run(args);
+    }
+
+    /**
+     * Test weekend support in IBMCalendar.
+     *
+     * NOTE: This test will have to be updated when the isWeekend() etc.
+     *       API is finalized later.
+     *
+     *       In particular, the test will have to be rewritten to instantiate
+     *       a Calendar in the given locale (using getInstance()) and call
+     *       that Calendar's isWeekend() etc. methods.
+     */
+    public void TestWeekend() {
+        SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd yyyy G HH:mm:ss.SSS");
+
+        // NOTE
+        // This test tests for specific locale data.  This is probably okay
+        // as far as US data is concerned, but if the Arabic/Yemen data
+        // changes, this test will have to be updated.
+
+        // Test specific days
+        Object[] DATA1 = {
+            Locale.US, new int[] { // Saturday:Sunday
+                2000, Calendar.MARCH, 17, 23,  0, 0, // Fri 23:00
+                2000, Calendar.MARCH, 18,  0, -1, 0, // Fri 23:59:59.999
+                2000, Calendar.MARCH, 18,  0,  0, 1, // Sat 00:00
+                2000, Calendar.MARCH, 18, 15,  0, 1, // Sat 15:00
+                2000, Calendar.MARCH, 19, 23,  0, 1, // Sun 23:00
+                2000, Calendar.MARCH, 20,  0, -1, 1, // Sun 23:59:59.999
+                2000, Calendar.MARCH, 20,  0,  0, 0, // Mon 00:00
+                2000, Calendar.MARCH, 20,  8,  0, 0, // Mon 08:00
+            },
+            new Locale("ar", "YE"), new int[] { // Thursday:Friday
+                2000, Calendar.MARCH, 15, 23,  0, 0, // Wed 23:00
+                2000, Calendar.MARCH, 16,  0, -1, 0, // Wed 23:59:59.999
+                2000, Calendar.MARCH, 16,  0,  0, 1, // Thu 00:00
+                2000, Calendar.MARCH, 16, 15,  0, 1, // Thu 15:00
+                2000, Calendar.MARCH, 17, 23,  0, 1, // Fri 23:00
+                2000, Calendar.MARCH, 18,  0, -1, 1, // Fri 23:59:59.999
+                2000, Calendar.MARCH, 18,  0,  0, 0, // Sat 00:00
+                2000, Calendar.MARCH, 18,  8,  0, 0, // Sat 08:00
+            },
+        };
+
+        // Test days of the week
+        Object[] DATA2 = {
+            Locale.US, new int[] {
+                Calendar.MONDAY,   Calendar.WEEKDAY,
+                Calendar.FRIDAY,   Calendar.WEEKDAY,
+                Calendar.SATURDAY, Calendar.WEEKEND,
+                Calendar.SUNDAY,   Calendar.WEEKEND_CEASE,
+            },
+            new Locale("ar", "YE"), new int[] { // Thursday:Friday
+                Calendar.WEDNESDAY,Calendar.WEEKDAY,
+                Calendar.SATURDAY, Calendar.WEEKDAY,
+                Calendar.THURSDAY, Calendar.WEEKEND,
+                Calendar.FRIDAY,   Calendar.WEEKEND_CEASE,
+            },
+        };
+
+        // We only test the getDayOfWeekType() and isWeekend() APIs.
+        // The getWeekendTransition() API is tested indirectly via the
+        // isWeekend() API, which calls it.
+
+        for (int i1=0; i1<DATA1.length; i1+=2) {
+            Locale loc = (Locale)DATA1[i1];
+            int[] data = (int[]) DATA1[i1+1];
+            Calendar cal = Calendar.getInstance(loc);
+            logln("Locale: " + loc);
+            for (int i=0; i<data.length; i+=6) {
+                cal.clear();
+                cal.set(data[i], data[i+1], data[i+2], data[i+3], 0, 0);
+                if (data[i+4] != 0) {
+                    cal.setTime(new Date(cal.getTime().getTime() + data[i+4]));
+                }
+                boolean isWeekend = cal.isWeekend();
+                boolean ok = isWeekend == (data[i+5] != 0);
+                if (ok) {
+                    logln("Ok:   " + fmt.format(cal.getTime()) + " isWeekend=" + isWeekend);
+                } else {
+                    errln("FAIL: " + fmt.format(cal.getTime()) + " isWeekend=" + isWeekend +
+                          ", expected=" + (!isWeekend));
+                }
+            }
+        }
+
+        for (int i2=0; i2<DATA2.length; i2+=2) {
+            Locale loc = (Locale)DATA2[i2];
+            int[] data = (int[]) DATA2[i2+1];
+            logln("Locale: " + loc);
+            Calendar cal = Calendar.getInstance(loc);
+            for (int i=0; i<data.length; i+=2) {
+                int type = cal.getDayOfWeekType(data[i]);
+                int exp  = data[i+1];
+                if (type == exp) {
+                    logln("Ok:   DOW " + data[i] + " type=" + type);
+                } else {
+                    errln("FAIL: DOW " + data[i] + " type=" + type +
+                          ", expected=" + exp);
+                }
+            }
+        }
+    }
+
+    /**
+     * Run a test of a quasi-Gregorian calendar.  This is a calendar
+     * that behaves like a Gregorian but has different year/era mappings.
+     * The int[] data array should have the format:
+     *
+     * { era, year, gregorianYear, month, dayOfMonth, ... }
+     */
+    void quasiGregorianTest(Calendar cal, int[] data) {
+        // As of JDK 1.4.1_01, using the Sun JDK GregorianCalendar as
+        // a reference throws us off by one hour.  This is most likely
+        // due to the JDK 1.4 incorporation of historical time zones.
+        //java.util.Calendar grego = java.util.Calendar.getInstance();
+        Calendar grego = Calendar.getInstance();
+        for (int i=0; i<data.length; ) {
+            int era = data[i++];
+            int year = data[i++];
+            int gregorianYear = data[i++];
+            int month = data[i++];
+            int dayOfMonth = data[i++];
+
+            grego.clear();
+            grego.set(gregorianYear, month, dayOfMonth);
+            Date D = grego.getTime();
+
+            cal.clear();
+            cal.set(Calendar.ERA, era);
+            cal.set(year, month, dayOfMonth);
+            Date d = cal.getTime();
+            if (d.equals(D)) {
+                logln("OK: " + era + ":" + year + "/" + (month+1) + "/" + dayOfMonth +
+                      " => " + d);
+            } else {
+                errln("Fail: " + era + ":" + year + "/" + (month+1) + "/" + dayOfMonth +
+                      " => " + d + ", expected " + D);
+            }
+
+            cal.clear();
+            cal.setTime(D);
+            int e = cal.get(Calendar.ERA);
+            int y = cal.get(Calendar.YEAR);
+            if (y == year && e == era) {
+                logln("OK: " + D + " => " + cal.get(Calendar.ERA) + ":" +
+                      cal.get(Calendar.YEAR) + "/" +
+                      (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.DATE));
+            } else {
+                logln("Fail: " + D + " => " + cal.get(Calendar.ERA) + ":" +
+                      cal.get(Calendar.YEAR) + "/" +
+                      (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.DATE) +
+                      ", expected " + era + ":" + year + "/" + (month+1) + "/" +
+                      dayOfMonth);
+            }
+        }
+    }
+
+    /**
+     * Verify that BuddhistCalendar shifts years to Buddhist Era but otherwise
+     * behaves like GregorianCalendar.
+     */
+    public void TestBuddhist() {
+        quasiGregorianTest(new BuddhistCalendar(),
+                           new int[] {
+                               // BE 2542 == 1999 CE
+                               0, 2542, 1999, Calendar.JUNE, 4
+                           });
+    }
+
+    public void TestBuddhistCoverage() {
+    {
+        // new BuddhistCalendar(ULocale)
+        BuddhistCalendar cal = new BuddhistCalendar(ULocale.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with ULocale");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(TimeZone,ULocale)
+        BuddhistCalendar cal = new BuddhistCalendar(TimeZone.getDefault(),ULocale.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with TimeZone ULocale");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(TimeZone)
+        BuddhistCalendar cal = new BuddhistCalendar(TimeZone.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with TimeZone");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(Locale)
+        BuddhistCalendar cal = new BuddhistCalendar(Locale.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with Locale");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(TimeZone, Locale)
+        BuddhistCalendar cal = new BuddhistCalendar(TimeZone.getDefault(), Locale.getDefault());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with TimeZone and Locale");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(Date)
+        BuddhistCalendar cal = new BuddhistCalendar(new Date());
+        if(cal == null){
+            errln("could not create BuddhistCalendar with Date");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(int year, int month, int date)
+        BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22);
+        if(cal == null){
+            errln("could not create BuddhistCalendar with year,month,data");
+        }
+    }
+
+    {
+        // new BuddhistCalendar(int year, int month, int date, int hour, int minute, int second)
+        BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22, 1, 1, 1);
+        if(cal == null){
+            errln("could not create BuddhistCalendar with year,month,date,hour,minute,second");
+        }
+    }
+
+    {
+        // data
+        BuddhistCalendar cal = new BuddhistCalendar(2543, Calendar.MAY, 22);
+        Date time = cal.getTime();
+
+        String[] calendarLocales = {
+        "th_TH"
+        };
+
+        String[] formatLocales = {
+        "en", "ar", "hu", "th"
+        };
+
+        for (int i = 0; i < calendarLocales.length; ++i) {
+        String calLocName = calendarLocales[i];
+        Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+        cal = new BuddhistCalendar(calLocale);
+
+        for (int j = 0; j < formatLocales.length; ++j) {
+            String locName = formatLocales[j];
+            Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+            DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+            logln(calLocName + "/" + locName + " --> " + format.format(time));
+        }
+        }
+    }
+    }
+
+    /**
+     * Test limits of the Buddhist calendar.
+     */
+    public void TestBuddhistLimits() {
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        BuddhistCalendar buddhist = new BuddhistCalendar();
+        doLimitsTest(buddhist, null, cal.getTime());
+        doTheoreticalLimitsTest(buddhist, false);
+    }
+
+    /**
+     * Default calendar for Thai (Ticket#6302)
+     */
+    public void TestThaiDefault() {
+        // Buddhist calendar is used as the default calendar for
+        // Thai locale
+        Calendar cal = Calendar.getInstance(new ULocale("th_TH"));
+        String type = cal.getType();
+        if (!type.equals("buddhist")) {
+            errln("FAIL: Buddhist calendar is not returned for locale " + cal.toString());
+        }
+    }
+    
+    /**
+     * Verify that TaiwanCalendar shifts years to Minguo Era but otherwise
+     * behaves like GregorianCalendar.
+     */
+    public void TestTaiwan() {
+        quasiGregorianTest(new TaiwanCalendar(),
+                           new int[] {
+                               TaiwanCalendar.BEFORE_MINGUO, 8, 1904, Calendar.FEBRUARY, 29,
+                               TaiwanCalendar.MINGUO, 1, 1912, Calendar.JUNE, 4,
+                               TaiwanCalendar.MINGUO, 3, 1914, Calendar.FEBRUARY, 12,
+                               TaiwanCalendar.MINGUO, 96,2007, Calendar.FEBRUARY, 12,
+                           });
+    }
+
+    /**
+     * Test limits of the Taiwan calendar.
+     */
+    public void TestTaiwanLimits() {
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        TaiwanCalendar taiwan = new TaiwanCalendar();
+        doLimitsTest(taiwan, null, cal.getTime());
+        doTheoreticalLimitsTest(taiwan, false);
+    }
+
+    public void TestTaiwanCoverage() {
+    {
+        // new TaiwanCalendar(ULocale)
+        TaiwanCalendar cal = new TaiwanCalendar(ULocale.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with ULocale");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(TimeZone,ULocale)
+        TaiwanCalendar cal = new TaiwanCalendar(TimeZone.getDefault(),ULocale.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with TimeZone ULocale");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(TimeZone)
+        TaiwanCalendar cal = new TaiwanCalendar(TimeZone.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with TimeZone");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(Locale)
+        TaiwanCalendar cal = new TaiwanCalendar(Locale.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with Locale");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(TimeZone, Locale)
+        TaiwanCalendar cal = new TaiwanCalendar(TimeZone.getDefault(), Locale.getDefault());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with TimeZone and Locale");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(Date)
+        TaiwanCalendar cal = new TaiwanCalendar(new Date());
+        if(cal == null){
+            errln("could not create TaiwanCalendar with Date");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(int year, int month, int date)
+        TaiwanCalendar cal = new TaiwanCalendar(34, Calendar.MAY, 22);
+        if(cal == null){
+            errln("could not create TaiwanCalendar with year,month,data");
+        }
+    }
+
+    {
+        // new TaiwanCalendar(int year, int month, int date, int hour, int minute, int second)
+        TaiwanCalendar cal = new TaiwanCalendar(34, Calendar.MAY, 22, 1, 1, 1);
+        if(cal == null){
+            errln("could not create TaiwanCalendar with year,month,date,hour,minute,second");
+        }
+    }
+
+    {
+        // data
+        TaiwanCalendar cal = new TaiwanCalendar(34, Calendar.MAY, 22);
+        Date time = cal.getTime();
+
+        String[] calendarLocales = {
+        "en","zh"
+        };
+
+        String[] formatLocales = {
+        "en", "ar", "hu", "th"
+        };
+
+        for (int i = 0; i < calendarLocales.length; ++i) {
+        String calLocName = calendarLocales[i];
+        Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+        cal = new TaiwanCalendar(calLocale);
+
+        for (int j = 0; j < formatLocales.length; ++j) {
+            String locName = formatLocales[j];
+            Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+            DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+            logln(calLocName + "/" + locName + " --> " + format.format(time));
+        }
+        }
+    }
+    }
+
+    /**
+     * Verify that JapaneseCalendar shifts years to Japanese Eras but otherwise
+     * behaves like GregorianCalendar.
+     */
+    public void TestJapanese() {
+        // First make sure this test works for GregorianCalendar
+        int[] control = {
+            GregorianCalendar.AD, 1868, 1868, Calendar.SEPTEMBER, 8,
+            GregorianCalendar.AD, 1868, 1868, Calendar.SEPTEMBER, 9,
+            GregorianCalendar.AD, 1869, 1869, Calendar.JUNE, 4,
+            GregorianCalendar.AD, 1912, 1912, Calendar.JULY, 29,
+            GregorianCalendar.AD, 1912, 1912, Calendar.JULY, 30,
+            GregorianCalendar.AD, 1912, 1912, Calendar.AUGUST, 1,
+        };
+        quasiGregorianTest(new GregorianCalendar(), control);
+
+        int[] data = {
+            JapaneseCalendar.MEIJI, 1, 1868, Calendar.SEPTEMBER, 8,
+            JapaneseCalendar.MEIJI, 1, 1868, Calendar.SEPTEMBER, 9,
+            JapaneseCalendar.MEIJI, 2, 1869, Calendar.JUNE, 4,
+            JapaneseCalendar.MEIJI, 45, 1912, Calendar.JULY, 29,
+            JapaneseCalendar.TAISHO, 1, 1912, Calendar.JULY, 30,
+            JapaneseCalendar.TAISHO, 1, 1912, Calendar.AUGUST, 1,
+        };
+        quasiGregorianTest(new JapaneseCalendar(), data);
+    }
+
+    /**
+     * Test limits of the Gregorian calendar.
+     */
+    public void TestGregorianLimits() {
+        // Final parameter is either number of days, if > 0, or test
+        // duration in seconds, if < 0.
+        Calendar cal = Calendar.getInstance();
+        cal.set(2004, Calendar.JANUARY, 1);
+        GregorianCalendar gregorian = new GregorianCalendar();
+        doLimitsTest(gregorian, null, cal.getTime());
+        doTheoreticalLimitsTest(gregorian, false);
+    }
+
+    /**
+     * Test behavior of fieldDifference around leap years.  Also test a large
+     * field difference to check binary search.
+     */
+    public void TestLeapFieldDifference() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2004, Calendar.FEBRUARY, 29);
+        Date date2004 = cal.getTime();
+        cal.set(2000, Calendar.FEBRUARY, 29);
+        Date date2000 = cal.getTime();
+        int y = cal.fieldDifference(date2004, Calendar.YEAR);
+        int d = cal.fieldDifference(date2004, Calendar.DAY_OF_YEAR);
+        if (d == 0) {
+            logln("Ok: 2004/Feb/29 - 2000/Feb/29 = " + y + " years, " + d + " days");
+        } else {
+            errln("FAIL: 2004/Feb/29 - 2000/Feb/29 = " + y + " years, " + d + " days");
+        }
+        cal.setTime(date2004);
+        y = cal.fieldDifference(date2000, Calendar.YEAR);
+        d = cal.fieldDifference(date2000, Calendar.DAY_OF_YEAR);
+        if (d == 0) {
+            logln("Ok: 2000/Feb/29 - 2004/Feb/29 = " + y + " years, " + d + " days");
+        } else {
+            errln("FAIL: 2000/Feb/29 - 2004/Feb/29 = " + y + " years, " + d + " days");
+        }
+        // Test large difference
+        cal.set(2001, Calendar.APRIL, 5); // 2452005
+        Date ayl = cal.getTime();
+        cal.set(1964, Calendar.SEPTEMBER, 7); // 2438646
+        Date asl = cal.getTime();
+        d = cal.fieldDifference(ayl, Calendar.DAY_OF_MONTH);
+        cal.setTime(ayl);
+        int d2 = cal.fieldDifference(asl, Calendar.DAY_OF_MONTH);
+        if (d == -d2 && d == 13359) {
+            logln("Ok: large field difference symmetrical " + d);
+        } else {
+            logln("FAIL: large field difference incorrect " + d + ", " + d2 +
+                  ", expect +/- 13359");
+        }
+    }
+
+    /**
+     * Test ms_MY "Malay (Malaysia)" locale.  Bug 1543.
+     */
+    public void TestMalaysianInstance() {
+        Locale loc = new Locale("ms", "MY");  // Malay (Malaysia)
+        Calendar cal = Calendar.getInstance(loc);
+        if(cal == null){
+            errln("could not create Malaysian instance");
+        }
+    }
+
+    /**
+     * setFirstDayOfWeek and setMinimalDaysInFirstWeek may change the
+     * field <=> time mapping, since they affect the interpretation of
+     * the WEEK_OF_MONTH or WEEK_OF_YEAR fields.
+     */
+    public void TestWeekShift() {
+        Calendar cal = new GregorianCalendar(
+                             TimeZone.getTimeZone("America/Los_Angeles"),
+                             new Locale("en", "US"));
+        cal.setTime(new Date(997257600000L)); // Wed Aug 08 01:00:00 PDT 2001
+        // In pass one, change the first day of week so that the weeks
+        // shift in August 2001.  In pass two, change the minimal days
+        // in the first week so that the weeks shift in August 2001.
+        //     August 2001
+        // Su Mo Tu We Th Fr Sa
+        //           1  2  3  4
+        //  5  6  7  8  9 10 11
+        // 12 13 14 15 16 17 18
+        // 19 20 21 22 23 24 25
+        // 26 27 28 29 30 31
+        for (int pass=0; pass<2; ++pass) {
+            if (pass==0) {
+                cal.setFirstDayOfWeek(Calendar.WEDNESDAY);
+                cal.setMinimalDaysInFirstWeek(4);
+            } else {
+                cal.setFirstDayOfWeek(Calendar.SUNDAY);
+                cal.setMinimalDaysInFirstWeek(4);
+            }
+            cal.add(Calendar.DATE, 1); // Force recalc
+            cal.add(Calendar.DATE, -1);
+
+            Date time1 = cal.getTime(); // Get time -- should not change
+
+            // Now change a week parameter and then force a recalc.
+            // The bug is that the recalc should not be necessary --
+            // calendar should do so automatically.
+            if (pass==0) {
+                cal.setFirstDayOfWeek(Calendar.THURSDAY);
+            } else {
+                cal.setMinimalDaysInFirstWeek(5);
+            }
+
+            int woy1 = cal.get(Calendar.WEEK_OF_YEAR);
+            int wom1 = cal.get(Calendar.WEEK_OF_MONTH);
+
+            cal.add(Calendar.DATE, 1); // Force recalc
+            cal.add(Calendar.DATE, -1);
+
+            int woy2 = cal.get(Calendar.WEEK_OF_YEAR);
+            int wom2 = cal.get(Calendar.WEEK_OF_MONTH);
+
+            Date time2 = cal.getTime();
+
+            if (!time1.equals(time2)) {
+                errln("FAIL: shifting week should not alter time");
+            } else {
+                logln(time1.toString());
+            }
+            if (woy1 == woy2 && wom1 == wom2) {
+                logln("Ok: WEEK_OF_YEAR: " + woy1 +
+                      ", WEEK_OF_MONTH: " + wom1);
+            } else {
+                errln("FAIL: WEEK_OF_YEAR: " + woy1 + " => " + woy2 +
+                      ", WEEK_OF_MONTH: " + wom1 + " => " + wom2 +
+                      " after week shift");
+            }
+        }
+    }
+
+    /**
+     * Make sure that when adding a day, we actually wind up in a
+     * different day.  The DST adjustments we use to keep the hour
+     * constant across DST changes can backfire and change the day.
+     */
+    public void TestTimeZoneTransitionAdd() {
+        Locale locale = Locale.US; // could also be CHINA
+        SimpleDateFormat dateFormat =
+            new SimpleDateFormat("MM/dd/yyyy HH:mm z", locale);
+
+        String tz[] = TimeZone.getAvailableIDs();
+
+        for (int z=0; z<tz.length; ++z) {
+            TimeZone t = TimeZone.getTimeZone(tz[z]);
+            dateFormat.setTimeZone(t);
+
+            Calendar cal = Calendar.getInstance(t, locale);
+            cal.clear();
+            // Scan the year 2003, overlapping the edges of the year
+            cal.set(Calendar.YEAR, 2002);
+            cal.set(Calendar.MONTH, Calendar.DECEMBER);
+            cal.set(Calendar.DAY_OF_MONTH, 25);
+
+            for (int i=0; i<365+10; ++i) {
+                Date yesterday = cal.getTime();
+                int yesterday_day = cal.get(Calendar.DAY_OF_MONTH);
+                cal.add(Calendar.DAY_OF_MONTH, 1);
+                if (yesterday_day == cal.get(Calendar.DAY_OF_MONTH)) {
+                    errln(tz[z] + " " +
+                          dateFormat.format(yesterday) + " +1d= " +
+                          dateFormat.format(cal.getTime()));
+                }
+            }
+        }
+    }
+
+    public void TestJB1684() {
+        class TestData {
+            int year;
+            int month;
+            int date;
+            int womyear;
+            int wommon;
+            int wom;
+            int dow;
+            String data;
+            String normalized;
+
+            public TestData(int year, int month, int date,
+                            int womyear, int wommon, int wom, int dow,
+                            String data, String normalized) {
+                this.year = year;
+                this.month = month-1;
+                this.date = date;
+                this.womyear = womyear;
+                this.wommon = wommon-1;
+                this.wom = wom;
+                this.dow = dow;
+                this.data = data; // year, month, week of month, day
+                this.normalized = data;
+                if (normalized != null) this.normalized = normalized;
+            }
+        }
+
+        //      July 2001            August 2001           January 2002
+        // Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
+        //  1  2  3  4  5  6  7            1  2  3  4         1  2  3  4  5
+        //  8  9 10 11 12 13 14   5  6  7  8  9 10 11   6  7  8  9 10 11 12
+        // 15 16 17 18 19 20 21  12 13 14 15 16 17 18  13 14 15 16 17 18 19
+        // 22 23 24 25 26 27 28  19 20 21 22 23 24 25  20 21 22 23 24 25 26
+        // 29 30 31              26 27 28 29 30 31     27 28 29 30 31
+        TestData[] tests = {
+            new TestData(2001, 8,  6,  2001,8,2,Calendar.MONDAY,    "2001 08 02 Mon", null),
+            new TestData(2001, 8,  7,  2001,8,2,Calendar.TUESDAY,   "2001 08 02 Tue", null),
+            new TestData(2001, 8,  5,/*12,*/ 2001,8,2,Calendar.SUNDAY,    "2001 08 02 Sun", null),
+            new TestData(2001, 8,6, /*7,  30,*/ 2001,7,6,Calendar.MONDAY,    "2001 07 06 Mon", "2001 08 02 Mon"),
+            new TestData(2001, 8,7, /*7,  31,*/ 2001,7,6,Calendar.TUESDAY,   "2001 07 06 Tue", "2001 08 02 Tue"),
+            new TestData(2001, 8,  5,  2001,7,6,Calendar.SUNDAY,    "2001 07 06 Sun", "2001 08 02 Sun"),
+            new TestData(2001, 7,  30, 2001,8,1,Calendar.MONDAY,    "2001 08 01 Mon", "2001 07 05 Mon"),
+            new TestData(2001, 7,  31, 2001,8,1,Calendar.TUESDAY,   "2001 08 01 Tue", "2001 07 05 Tue"),
+            new TestData(2001, 7,29, /*8,  5,*/  2001,8,1,Calendar.SUNDAY,    "2001 08 01 Sun", "2001 07 05 Sun"),
+            new TestData(2001, 12, 31, 2001,12,6,Calendar.MONDAY,   "2001 12 06 Mon", null),
+            new TestData(2002, 1,  1,  2002,1,1,Calendar.TUESDAY,   "2002 01 01 Tue", null),
+            new TestData(2002, 1,  2,  2002,1,1,Calendar.WEDNESDAY, "2002 01 01 Wed", null),
+            new TestData(2002, 1,  3,  2002,1,1,Calendar.THURSDAY,  "2002 01 01 Thu", null),
+            new TestData(2002, 1,  4,  2002,1,1,Calendar.FRIDAY,    "2002 01 01 Fri", null),
+            new TestData(2002, 1,  5,  2002,1,1,Calendar.SATURDAY,  "2002 01 01 Sat", null),
+            new TestData(2001,12,30, /*2002, 1,  6,*/  2002,1,1,Calendar.SUNDAY,    "2002 01 01 Sun", "2001 12 06 Sun"),
+        };
+
+        int pass = 0, error = 0, warning = 0;
+
+        final String pattern = "yyyy MM WW EEE";
+        GregorianCalendar cal = new GregorianCalendar();
+        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+        sdf.setCalendar(cal);
+
+        cal.setFirstDayOfWeek(Calendar.SUNDAY);
+        cal.setMinimalDaysInFirstWeek(1);
+
+        for (int i = 0; i < tests.length; ++i) {
+            TestData test = tests[i];
+            log("\n-----\nTesting round trip of " + test.year +
+                  " " + (test.month + 1) +
+                  " " + test.date +
+                  " (written as) " + test.data);
+
+            cal.clear();
+            cal.set(test.year, test.month, test.date);
+            Date ms = cal.getTime();
+
+            cal.clear();
+            cal.set(Calendar.YEAR, test.womyear);
+            cal.set(Calendar.MONTH, test.wommon);
+            cal.set(Calendar.WEEK_OF_MONTH, test.wom);
+            cal.set(Calendar.DAY_OF_WEEK, test.dow);
+            Date ms2 = cal.getTime();
+
+            if (!ms2.equals(ms)) {
+                log("\nError: GregorianCalendar.DOM gave " + ms +
+                    "\n       GregorianCalendar.WOM gave " + ms2);
+                error++;
+            } else {
+                pass++;
+            }
+
+            ms2 = null;
+            try {
+                ms2 = sdf.parse(test.data);
+            }
+            catch (ParseException e) {
+                errln("parse exception: " + e);
+            }
+
+            if (!ms2.equals(ms)) {
+                log("\nError: GregorianCalendar gave      " + ms +
+                    "\n       SimpleDateFormat.parse gave " + ms2);
+                error++;
+            } else {
+                pass++;
+            }
+
+            String result = sdf.format(ms);
+            if (!result.equals(test.normalized)) {
+                log("\nWarning: format of '" + test.data + "' gave" +
+                    "\n                   '" + result + "'" +
+                    "\n          expected '" + test.normalized + "'");
+                warning++;
+            } else {
+                pass++;
+            }
+
+            Date ms3 = null;
+            try {
+                ms3 = sdf.parse(result);
+            }
+            catch (ParseException e) {
+                errln("parse exception 2: " + e);
+            }
+
+            if (!ms3.equals(ms)) {
+                error++;
+                log("\nError: Re-parse of '" + result + "' gave time of " +
+                    "\n        " + ms3 +
+                    "\n    not " + ms);
+            } else {
+                pass++;
+            }
+        }
+        String info = "\nPassed: " + pass + ", Warnings: " + warning + ", Errors: " + error;
+        if (error > 0) {
+            errln(info);
+        } else {
+            logln(info);
+        }
+    }
+
+    /**
+     * Test the ZoneMeta API.
+     */
+    public void TestZoneMeta() {
+        // Test index by country API
+
+        // Format: {country, zone1, zone2, ..., zoneN}
+        String COUNTRY[][] = { {""},
+                               {"US", "America/Los_Angeles", "PST"} };
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<COUNTRY.length; ++i) {
+            String[] a = ZoneMeta.getAvailableIDs(COUNTRY[i][0]);
+            buf.setLength(0);
+            buf.append("Country \"" + COUNTRY[i][0] + "\": [");
+            // Use bitmask to track which of the expected zones we see
+            int mask = 0;
+            for (int j=0; j<a.length; ++j) {
+                if (j!=0) buf.append(", ");
+                buf.append(a[j]);
+                for (int k=1; k<COUNTRY[i].length; ++k) {
+                    if ((mask & (1<<k)) == 0 &&
+                        a[j].equals(COUNTRY[i][k])) {
+                        mask |= (1<<k);
+                    }
+                }
+            }
+            buf.append("]");
+            mask >>= 1;
+            // Check bitmask to see if we saw all expected zones
+            if (mask == (1 << (COUNTRY[i].length-1))-1) {
+                logln(buf.toString());
+            } else {
+                errln(buf.toString());
+            }
+        }
+
+        // Test equivalent IDs API
+
+        int n = ZoneMeta.countEquivalentIDs("PST");
+        boolean ok = false;
+        buf.setLength(0);
+        buf.append("Equivalent to PST: ");
+        for (int i=0; i<n; ++i) {
+            String id = ZoneMeta.getEquivalentID("PST", i);
+            if (id.equals("America/Los_Angeles")) {
+                ok = true;
+            }
+            if (i!=0) buf.append(", ");
+            buf.append(id);
+        }
+        if (ok) {
+            logln(buf.toString());
+        } else {
+            errln(buf.toString());
+        }
+    }
+
+    public void TestComparable() {
+    GregorianCalendar c0 = new GregorianCalendar();
+    GregorianCalendar c1 = new GregorianCalendar();
+    c1.add(Calendar.DAY_OF_MONTH, 1);
+    if (c0.compareTo(c1) >= 0) {
+        errln("calendar " + c0 + " not < " + c1);
+    }
+    c0.add(Calendar.MONTH, 1);
+    if (c0.compareTo(c1) <= 0) {
+        errln("calendar " + c0 + " not > " + c1);
+    }
+
+    c0.setTimeInMillis(c1.getTimeInMillis());
+    if (c0.compareTo(c1) != 0) {
+        errln("calendar " + c0 + " not == " + c1);
+    }
+
+    // coverage
+    try {
+        c0.compareTo((Object)null);
+        errln("calendar.compareTo didn't object to null arg");
+    }
+    catch (NullPointerException npe) {
+        logln("PASS: calendar.compareTo objected to null arg");
+    }
+    }
+
+    /**
+     * Miscellaneous tests to increase coverage.
+     */
+    public void TestCoverage() {
+        // BuddhistCalendar
+        BuddhistCalendar bcal = new BuddhistCalendar();
+        /*int i =*/ bcal.getMinimum(Calendar.ERA);
+        bcal.add(Calendar.YEAR, 1);
+        bcal.add(Calendar.MONTH, 1);
+        /*Date d = */bcal.getTime();
+
+        // CalendarAstronomer
+        // (This class should probably be made package-private.)
+        CalendarAstronomer astro = new CalendarAstronomer();
+        /*String s = */astro.local(0);
+
+        // ChineseCalendar
+        ChineseCalendar ccal = new ChineseCalendar(TimeZone.getDefault(),
+                                                   Locale.getDefault());
+        ccal.add(Calendar.MONTH, 1);
+        ccal.add(Calendar.YEAR, 1);
+        ccal.roll(Calendar.MONTH, 1);
+        ccal.roll(Calendar.YEAR, 1);
+        ccal.getTime();
+
+        // ICU 2.6
+        Calendar cal = Calendar.getInstance(Locale.US);
+        logln(cal.toString());
+        logln(cal.getDisplayName(Locale.US));
+        int weekendOnset=-1;
+        int weekendCease=-1;
+        for (int i=Calendar.SUNDAY; i<=Calendar.SATURDAY; ++i) {
+            if (cal.getDayOfWeekType(i) == Calendar.WEEKEND_ONSET) {
+                weekendOnset = i;
+            }
+            if (cal.getDayOfWeekType(i) == Calendar.WEEKEND_CEASE) {
+                weekendCease = i;
+            }
+        }
+        // can't call this unless we get a transition day (unusual),
+        // but make the call anyway for coverage reasons
+        try {
+            /*int x=*/ cal.getWeekendTransition(weekendOnset);
+            /*int x=*/ cal.getWeekendTransition(weekendCease);
+        } catch (IllegalArgumentException e) {}
+        /*int x=*/ cal.isWeekend(new Date());
+
+        // new GregorianCalendar(ULocale)
+        GregorianCalendar gcal = new GregorianCalendar(ULocale.getDefault());
+        if(gcal==null){
+            errln("could not create GregorianCalendar with ULocale");
+        } else {
+            logln("Calendar display name: " + gcal.getDisplayName(ULocale.getDefault()));
+        }
+
+        //cover getAvailableULocales
+        final ULocale[] locales = Calendar.getAvailableULocales();
+        long count = locales.length;
+        if (count == 0)
+            errln("getAvailableULocales return empty list");
+        logln("" + count + " available ulocales in Calendar.");
+
+        // Jitterbug 4451, for coverage
+        class StubCalendar extends Calendar{
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = -4558903444622684759L;
+            protected int handleGetLimit(int field, int limitType) {return 0;}
+            protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {return 0;}
+            protected int handleGetExtendedYear() {return 0;}
+            public void run(){
+                if (Calendar.gregorianPreviousMonthLength(2000,2) != 29){
+                    errln("Year 2000 Feb should have 29 days.");
+                }
+                long millis = Calendar.julianDayToMillis(Calendar.MAX_JULIAN);
+                if(millis != Calendar.MAX_MILLIS){
+                    errln("Did not get the expected value from julianDayToMillis. Got:" + millis);
+                }
+                DateFormat df = handleGetDateFormat("",Locale.getDefault());
+                if (!df.equals(handleGetDateFormat("",ULocale.getDefault()))){
+                    errln ("Calendar.handleGetDateFormat(String, Locale) should delegate to ( ,ULocale)");
+                }
+                if (!getType().equals("gregorian")){
+                    errln ("Calendar.getType() should be 'gregorian'");
+                }
+            }
+        }
+        StubCalendar stub = new StubCalendar();
+        stub.run();
+    }
+
+    // Tests for jb 4541
+    public void TestJB4541() {
+        ULocale loc = new ULocale("en_US");
+
+        // !!! Shouldn't we have an api like this?
+        // !!! Question: should this reflect those actually available in this copy of ICU, or 
+        // the list of types we assume is available?
+        // String[] calTypes = Calendar.getAvailableTypes();
+        final String[] calTypes = {
+            "buddhist", "chinese", "coptic", "ethiopic", "gregorian", "hebrew", 
+            "islamic", "islamic-civil", "japanese", "roc"
+        };
+        
+        // constructing a DateFormat with a locale indicating a calendar type should construct a
+        // date format appropriate to that calendar
+        final Date time = new Date();
+        for (int i = 0; i < calTypes.length; ++i) {
+            ULocale aLoc = loc.setKeywordValue("calendar", calTypes[i]);
+            logln("locale: " + aLoc);
+
+            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL,
+                                                           DateFormat.FULL,
+                                                           aLoc);
+
+            logln("df type: " + df.getClass().getName() + " loc: " + df.getLocale(ULocale.VALID_LOCALE));
+
+            Calendar cal = df.getCalendar();
+            // todo, what about variants of calendars, we have a type for islamic-civil, should we also have a type
+            // for variants of other calendars?
+            assertEquals("calendar types", cal.getType(), calTypes[i].equals("islamic-civil") ? "islamic" : calTypes[i]);
+            DateFormat df2 = cal.getDateTimeFormat(DateFormat.FULL, DateFormat.FULL, ULocale.US);
+            logln("df2 type: " + df2.getClass().getName() + " loc: " + df2.getLocale(ULocale.VALID_LOCALE));
+            assertEquals("format results", df.format(time), df2.format(time));
+        }
+
+        // dateFormat.setCalendar should throw exception if wrong format for calendar
+        if (false) {
+            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, 
+                                                           DateFormat.FULL, 
+                                                           new ULocale("en_US@calendar=chinese"));
+
+            logln("dateformat type: " + df.getClass().getName());
+
+            Calendar cal = Calendar.getInstance(new ULocale("en_US@calendar=chinese"));
+                                                
+            logln("calendar type: " + cal.getClass().getName());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/IndianTest.java b/src/com/ibm/icu/dev/test/calendar/IndianTest.java
new file mode 100644
index 0000000..0e6e3fc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/IndianTest.java
@@ -0,0 +1,243 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.IndianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>IndianCalendar</code> class.
+ */
+public class IndianTest extends CalendarTest 
+{
+    public static void main(String args[]) throws Exception {
+        new IndianTest().run(args);
+    }
+    // Months in indian calendar are 0-based. Here taking 1-based names:
+    public static final int CHAITRA = IndianCalendar.CHAITRA + 1; 
+    public static final int VAISAKHA = IndianCalendar.VAISAKHA + 1;
+    public static final int JYAISTHA = IndianCalendar.JYAISTHA + 1;
+    public static final int ASADHA = IndianCalendar.ASADHA + 1;
+    public static final int SRAVANA = IndianCalendar.SRAVANA + 1 ;
+    public static final int BHADRA = IndianCalendar.BHADRA + 1 ;
+    public static final int  ASVINA = IndianCalendar.ASVINA  + 1 ;
+    public static final int KARTIKA = IndianCalendar.KARTIKA + 1 ;
+    public static final int AGRAHAYANA = IndianCalendar.AGRAHAYANA + 1 ;
+    public static final int PAUSA = IndianCalendar.PAUSA + 1 ;
+    public static final int MAGHA = IndianCalendar.MAGHA + 1 ;
+    public static final int PHALGUNA = IndianCalendar.PHALGUNA + 1 ;
+
+    /** Constants to save typing. */
+    /* Test dates generated from:
+     * http://www.fourmilab.ch/documents/calendar/ 
+    
+    /** A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the Indian civil calendar.
+     */
+    public void TestCases()
+    {
+        final TestCase[] tests = {
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                      Indian
+            //          Julian Day  Era  Year   Month Day    WkDay Hour Min Sec
+           new TestCase(1770641.5,  0,    57,    ASVINA,       10,  SUN,   0,  0,  0),
+           new TestCase(1892731.5,  0,   391,    PAUSA,        18,  WED,   0,  0,  0),
+           new TestCase(1931579.5,  0,   498,    VAISAKHA,     30,  MON,   0,  0,  0),
+           new TestCase(1974851.5,  0,   616,    KARTIKA,      19,  SAT,   0,  0,  0),
+           new TestCase(2091164.5,  0,   935,    VAISAKHA,      5,  SUN,   0,  0,  0),
+           new TestCase(2121509.5,  0,  1018,    JYAISTHA,      3,  SUN,   0,  0,  0),
+           new TestCase(2155779.5,  0,  1112,    CHAITRA,       2,  FRI,   0,  0,  0),
+           new TestCase(2174029.5,  0,  1161,    PHALGUNA,     20,  SAT,   0,  0,  0),
+           new TestCase(2191584.5,  0,  1210,    CHAITRA,      13,  FRI,   0,  0,  0),
+           new TestCase(2195261.5,  0,  1220,    VAISAKHA,      7,  SUN,   0,  0,  0),
+           new TestCase(2229274.5,  0,  1313,    JYAISTHA,     22,  SUN,   0,  0,  0),
+           new TestCase(2245580.5,  0,  1357,    MAGHA,        14,  WED,   0,  0,  0),
+           new TestCase(2266100.5,  0,  1414,    CHAITRA,      20,  SAT,   0,  0,  0),
+           new TestCase(2288542.5,  0,  1475,    BHADRA,       28,  SAT,   0,  0,  0),
+           new TestCase(2290901.5,  0,  1481,    PHALGUNA,     15,  SAT,   0,  0,  0),
+           new TestCase(2323140.5,  0,  1570,    JYAISTHA,     20,  WED,   0,  0,  0),
+           new TestCase(2334551.5,  0,  1601,    BHADRA,       16,  THU,   0,  0,  0),
+           new TestCase(2334581.5,  0,  1601,    ASVINA,       15,  SAT,   0,  0,  0),
+           new TestCase(2334610.5,  0,  1601,    KARTIKA,      14,  SUN,   0,  0,  0),
+           new TestCase(2334639.5,  0,  1601,    AGRAHAYANA,   13,  MON,   0,  0,  0),
+           new TestCase(2334668.5,  0,  1601,    PAUSA,        12,  TUE,   0,  0,  0),
+           new TestCase(2334698.5,  0,  1601,    MAGHA,        12,  THU,   0,  0,  0),
+           new TestCase(2334728.5,  0,  1601,    PHALGUNA,     12,  SAT,   0,  0,  0),
+           new TestCase(2334757.5,  0,  1602,    CHAITRA,      11,  SUN,   0,  0,  0),
+           new TestCase(2334787.5,  0,  1602,    VAISAKHA,     10,  TUE,   0,  0,  0),
+           new TestCase(2334816.5,  0,  1602,    JYAISTHA,      8,  WED,   0,  0,  0),
+           new TestCase(2334846.5,  0,  1602,    ASADHA,        7,  FRI,   0,  0,  0),
+           new TestCase(2334848.5,  0,  1602,    ASADHA,        9,  SUN,   0,  0,  0),
+           new TestCase(2348020.5,  0,  1638,    SRAVANA,       2,  FRI,   0,  0,  0),
+           new TestCase(2334934.5,  0,  1602,    ASVINA,        2,  TUE,   0,  0,  0),
+           new TestCase(2366978.5,  0,  1690,    JYAISTHA,     29,  SUN,   0,  0,  0),
+           new TestCase(2385648.5,  0,  1741,    SRAVANA,      11,  MON,   0,  0,  0),
+           new TestCase(2392825.5,  0,  1761,    CHAITRA,       6,  WED,   0,  0,  0),
+           new TestCase(2416223.5,  0,  1825,    CHAITRA,      29,  SUN,   0,  0,  0),
+           new TestCase(2425848.5,  0,  1851,    BHADRA,        3,  SUN,   0,  0,  0),
+           new TestCase(2430266.5,  0,  1863,    ASVINA,        7,  MON,   0,  0,  0),
+           new TestCase(2430833.5,  0,  1865,    CHAITRA,      29,  MON,   0,  0,  0),
+           new TestCase(2431004.5,  0,  1865,    ASVINA,       15,  THU,   0,  0,  0),
+           new TestCase(2448698.5,  0,  1913,    PHALGUNA,     27,  TUE,   0,  0,  0),
+           new TestCase(2450138.5,  0,  1917,    PHALGUNA,      6,  SUN,   0,  0,  0),
+           new TestCase(2465737.5,  0,  1960,    KARTIKA,      19,  WED,   0,  0,  0),
+           new TestCase(2486076.5,  0,  2016,    ASADHA,       27,  SUN,   0,  0,  0),
+        };
+        
+        IndianCalendar testCalendar = new IndianCalendar();
+        testCalendar.setLenient(true);
+        doTestCases(tests, testCalendar);
+    }
+
+    public void TestBasic() {
+        IndianCalendar cal = new IndianCalendar();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30-> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+
+    public void TestCoverage() {
+
+        {
+            // new IndianCalendar(TimeZone)
+            IndianCalendar cal = new IndianCalendar(TimeZone.getDefault()); 
+            if(cal == null){
+                errln("could not create IndianCalendar with TimeZone");
+            }
+        }
+
+        {
+            // new IndianCalendar(ULocale)
+            IndianCalendar cal = new IndianCalendar(ULocale.getDefault());
+            if(cal == null){
+                errln("could not create IndianCalendar with ULocale");
+            }
+        }
+        
+        {
+            // new IndianCalendar(Locale)
+            IndianCalendar cal = new IndianCalendar(Locale.getDefault());
+            if(cal == null){
+                errln("could not create IndianCalendar with Locale");
+            }
+        }
+        
+        {                                                                                       
+            // new IndianCalendar(TimeZone, Locale)                                             
+            IndianCalendar cal = new IndianCalendar(TimeZone.getDefault(),Locale.getDefault()); 
+            if(cal == null){                                                                    
+                errln("could not create IndianCalendar with TimeZone, Locale");                 
+            }                                                                                   
+        }                                                                                       
+                                                                                                
+        {                                                                                       
+            // new IndianCalendar(TimeZone, ULocale)                                            
+            IndianCalendar cal = new IndianCalendar(TimeZone.getDefault(),ULocale.getDefault());
+            if(cal == null){                                                                    
+                errln("could not create IndianCalendar with TimeZone, ULocale");                
+            }                                                                                   
+        }                                                                                       
+        
+        {
+            // new IndianCalendar(Date)
+            IndianCalendar cal = new IndianCalendar(new Date());
+            if(cal == null){
+                errln("could not create IndianCalendar with Date");
+            }
+        }
+        {
+            // new IndianCalendar(int year, int month, int date)
+            IndianCalendar cal = new IndianCalendar(1917, IndianCalendar.CHAITRA, 1);
+            if(cal == null){
+                errln("could not create IndianCalendar with year,month,date");
+            }
+        }
+        {
+            // new IndianCalendar(int year, int month, int date, int hour, int minute, int second)
+            IndianCalendar cal = new IndianCalendar(1917, IndianCalendar.CHAITRA, 1, 1, 1, 1);
+            if(cal == null){
+                errln("could not create IndianCalendar with year,month,date,hour,minute,second");
+            }
+        }
+    
+        {
+            // data
+            String[] calendarLocales = {
+                "bn_IN", "gu_IN", "hi_IN", "kn_IN", "ml_IN", "or_IN", "pa_IN", "ta_IN", "te_IN"
+            };
+
+            String[] formatLocales = {
+                "en", "fr", "bn", "gu", "hi", "kn", "ml", "or", "pa", "ta", "te"
+            };
+
+            for (int i = 0; i < calendarLocales.length; ++i) {
+                String calLocName = calendarLocales[i];
+                Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+                IndianCalendar cal = new IndianCalendar(calLocale);
+                cal.set(-1039, 9, 21);
+
+                for (int j = 0; j < formatLocales.length; j++  ) {
+                    String locName = formatLocales[j];
+                    Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                    DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                    logln(calLocName + "/" + locName + " --> " + format.format(cal));
+                }
+            }
+        }
+    }
+
+    public void TestYear() {
+        // Gregorian Calendar
+        Calendar gCal= new GregorianCalendar();
+        Date gToday=gCal.getTime();
+        gCal.add(GregorianCalendar.MONTH,2);
+        Date gFuture=gCal.getTime();
+        DateFormat gDF = DateFormat.getDateInstance(gCal,DateFormat.FULL);
+        logln("gregorian calendar: " + gDF.format(gToday) +
+              " + 2 months = " + gDF.format(gFuture));
+
+        // Indian Calendar
+        IndianCalendar iCal= new IndianCalendar();
+        Date iToday=iCal.getTime();
+        iCal.add(IndianCalendar.MONTH,2);
+        Date iFuture=iCal.getTime();
+        DateFormat iDF = DateFormat.getDateInstance(iCal,DateFormat.FULL);
+        logln("Indian calendar: " + iDF.format(iToday) +
+              " + 2 months = " + iDF.format(iFuture));
+
+    }
+
+    /**
+     * Test limits of the Indian calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        IndianCalendar indian = new IndianCalendar();
+        doLimitsTest(indian, null, cal.getTime());
+        doTheoreticalLimitsTest(indian, true);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/IslamicTest.java b/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
new file mode 100644
index 0000000..60f7606
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
@@ -0,0 +1,257 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>IslamicCalendar</code> class.
+ */
+public class IslamicTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new IslamicTest().run(args);
+    }
+
+    /** Constants to save typing. */
+    public static final int MUHARRAM = IslamicCalendar.MUHARRAM;
+    public static final int SAFAR =  IslamicCalendar.SAFAR;
+    public static final int RABI_1 =  IslamicCalendar.RABI_1;
+    public static final int RABI_2 =  IslamicCalendar.RABI_2;
+    public static final int JUMADA_1 =  IslamicCalendar.JUMADA_1;
+    public static final int JUMADA_2 =  IslamicCalendar.JUMADA_2;
+    public static final int RAJAB =  IslamicCalendar.RAJAB;
+    public static final int SHABAN =  IslamicCalendar.SHABAN;
+    public static final int RAMADAN =  IslamicCalendar.RAMADAN;
+    public static final int SHAWWAL =  IslamicCalendar.SHAWWAL;
+    public static final int QIDAH =  IslamicCalendar.DHU_AL_QIDAH;
+    public static final int HIJJAH =  IslamicCalendar.DHU_AL_HIJJAH;
+
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            //       input                roll by          output
+            //  year  month     day     field amount    year  month     day
+    
+            {   0001, QIDAH,     2,     MONTH,   1,     0001, HIJJAH,    2 },   // non-leap years
+            {   0001, QIDAH,     2,     MONTH,   2,     0001, MUHARRAM,  2 },
+            {   0001, QIDAH,     2,     MONTH,  -1,     0001, SHAWWAL,   2 },
+            {   0001, MUHARRAM,  2,     MONTH,  12,     0001, MUHARRAM,  2 },
+            {   0001, MUHARRAM,  2,     MONTH,  13,     0001, SAFAR,     2 },
+
+            {   0001, HIJJAH,    1,     DATE,   30,     0001, HIJJAH,    2 },   // 29-day month
+            {   0002, HIJJAH,    1,     DATE,   31,     0002, HIJJAH,    2 },   // 30-day month
+
+            // Try some rolls that require other fields to be adjusted
+            {   0001, MUHARRAM, 30,     MONTH,   1,     0001, SAFAR,    29 },
+            {   0002, HIJJAH,   30,     YEAR,   -1,     0001, HIJJAH,   29 },
+        };
+       
+        IslamicCalendar cal = newCivil();
+
+        doRollAdd(ROLL, cal, tests);
+    }
+
+    /**
+     * A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the civil calendar.
+     */
+    public void TestCivilCases()
+    {
+        final TestCase[] tests = {
+            //
+            // Most of these test cases were taken from the back of
+            // "Calendrical Calculations", with some extras added to help
+            // debug a few of the problems that cropped up in development.
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                       Islamic
+            //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+            new TestCase(1507231.5,  0, -1245,   12,   9,  SUN,   0,  0,  0),
+            new TestCase(1660037.5,  0,  -813,    2,  23,  WED,   0,  0,  0),
+            new TestCase(1746893.5,  0,  -568,    4,   1,  WED,   0,  0,  0),
+            new TestCase(1770641.5,  0,  -501,    4,   6,  SUN,   0,  0,  0),
+            new TestCase(1892731.5,  0,  -157,   10,  17,  WED,   0,  0,  0),
+            new TestCase(1931579.5,  0,   -47,    6,   3,  MON,   0,  0,  0),
+            new TestCase(1974851.5,  0,    75,    7,  13,  SAT,   0,  0,  0),
+            new TestCase(2091164.5,  0,   403,   10,   5,  SUN,   0,  0,  0),
+            new TestCase(2121509.5,  0,   489,    5,  22,  SUN,   0,  0,  0),
+            new TestCase(2155779.5,  0,   586,    2,   7,  FRI,   0,  0,  0),
+            new TestCase(2174029.5,  0,   637,    8,   7,  SAT,   0,  0,  0),
+            new TestCase(2191584.5,  0,   687,    2,  20,  FRI,   0,  0,  0),
+            new TestCase(2195261.5,  0,   697,    7,   7,  SUN,   0,  0,  0),
+            new TestCase(2229274.5,  0,   793,    7,   1,  SUN,   0,  0,  0),
+            new TestCase(2245580.5,  0,   839,    7,   6,  WED,   0,  0,  0),
+            new TestCase(2266100.5,  0,   897,    6,   1,  SAT,   0,  0,  0),
+            new TestCase(2288542.5,  0,   960,    9,  30,  SAT,   0,  0,  0),
+            new TestCase(2290901.5,  0,   967,    5,  27,  SAT,   0,  0,  0),
+            new TestCase(2323140.5,  0,  1058,    5,  18,  WED,   0,  0,  0),
+            new TestCase(2334848.5,  0,  1091,    6,   2,  SUN,   0,  0,  0),
+            new TestCase(2348020.5,  0,  1128,    8,   4,  FRI,   0,  0,  0),
+            new TestCase(2366978.5,  0,  1182,    2,   3,  SUN,   0,  0,  0),
+            new TestCase(2385648.5,  0,  1234,   10,  10,  MON,   0,  0,  0),
+            new TestCase(2392825.5,  0,  1255,    1,  11,  WED,   0,  0,  0),
+            new TestCase(2416223.5,  0,  1321,    1,  21,  SUN,   0,  0,  0),
+            new TestCase(2425848.5,  0,  1348,    3,  19,  SUN,   0,  0,  0),
+            new TestCase(2430266.5,  0,  1360,    9,   8,  MON,   0,  0,  0),
+            new TestCase(2430833.5,  0,  1362,    4,  13,  MON,   0,  0,  0),
+            new TestCase(2431004.5,  0,  1362,   10,   7,  THU,   0,  0,  0),
+            new TestCase(2448698.5,  0,  1412,    9,  13,  TUE,   0,  0,  0),
+            new TestCase(2450138.5,  0,  1416,   10,   5,  SUN,   0,  0,  0),
+            new TestCase(2465737.5,  0,  1460,   10,  12,  WED,   0,  0,  0),
+            new TestCase(2486076.5,  0,  1518,    3,   5,  SUN,   0,  0,  0),
+        };
+        
+        IslamicCalendar civilCalendar = newCivil();
+        civilCalendar.setLenient(true);
+        doTestCases(tests, civilCalendar);
+    }
+
+    public void TestBasic() {
+        IslamicCalendar cal = newCivil();
+        cal.clear();
+        cal.set(1000, 0, 30);
+        logln("1000/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+        cal.clear();
+        cal.set(1, 0, 30);
+        logln("1/0/30 -> " +
+              cal.get(YEAR) + "/" +
+              cal.get(MONTH) + "/" + 
+              cal.get(DATE));
+    }
+
+    /**
+     * Test limits of the Islamic calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        IslamicCalendar islamic = newCivil();
+        doLimitsTest(islamic, null, cal.getTime());
+        doTheoreticalLimitsTest(islamic, true);
+    }
+
+    public void TestCoverage() {
+    {
+        // new IslamicCalendar(TimeZone)
+        IslamicCalendar cal = new IslamicCalendar(TimeZone.getDefault());
+        if(cal == null){
+            errln("could not create IslamicCalendar with TimeZone");
+        }
+    }
+
+    {
+        // new IslamicCalendar(ULocale)
+        IslamicCalendar cal = new IslamicCalendar(ULocale.getDefault());
+        if(cal == null){
+            errln("could not create IslamicCalendar with ULocale");
+        }
+    }
+        
+    {
+        // new IslamicCalendar(Locale)
+        IslamicCalendar cal = new IslamicCalendar(Locale.getDefault());
+        if(cal == null){
+            errln("could not create IslamicCalendar with Locale");
+        }
+    }
+
+    {
+        // new IslamicCalendar(Date)
+        IslamicCalendar cal = new IslamicCalendar(new Date());
+        if(cal == null){
+            errln("could not create IslamicCalendar with Date");
+        }
+    }
+
+    {
+        // new IslamicCalendar(int year, int month, int date)
+        IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1);
+        if(cal == null){
+            errln("could not create IslamicCalendar with year,month,date");
+        }
+    }
+
+    {
+        // new IslamicCalendar(int year, int month, int date, int hour, int minute, int second)
+        IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1, 1, 1, 1);
+        if(cal == null){
+            errln("could not create IslamicCalendar with year,month,date,hour,minute,second");
+        }
+    }
+
+    {
+        // setCivil/isCivil
+        // operations on non-civil calendar
+        IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1, 1, 1, 1);
+        cal.setCivil(false);
+        if (cal.isCivil()) {
+        errln("islamic calendar is civil");
+        }
+
+        Date now = new Date();
+        cal.setTime(now);
+
+        Date then = cal.getTime();
+        if (!now.equals(then)) {
+        errln("get/set time failed with non-civil islamic calendar");
+        }
+
+        logln(then.toString());
+
+        cal.add(Calendar.MONTH, 1);
+        cal.add(Calendar.DAY_OF_MONTH, 1);
+        cal.add(Calendar.YEAR, 1);
+
+        logln(cal.getTime().toString());
+    }
+    
+    {
+        // data
+        IslamicCalendar cal = new IslamicCalendar(800, IslamicCalendar.RAMADAN, 1);
+        Date time = cal.getTime();
+
+        String[] calendarLocales = {
+        "ar_AE", "ar_BH", "ar_DZ", "ar_EG", "ar_JO", "ar_KW", "ar_OM", 
+        "ar_QA", "ar_SA", "ar_SY", "ar_YE", "ms_MY"
+        };
+
+        String[] formatLocales = {
+        "en", "ar", "fi", "fr", "hu", "iw", "nl"
+        };
+        for (int i = 0; i < calendarLocales.length; ++i) {
+        String calLocName = calendarLocales[i];
+        Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+        cal = new IslamicCalendar(calLocale);
+
+        for (int j = 0; j < formatLocales.length; ++j) {
+            String locName = formatLocales[j];
+            Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+            DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+            logln(calLocName + "/" + locName + " --> " + format.format(time));
+        }
+        }
+    }
+    }
+
+    private static IslamicCalendar newCivil() {
+        IslamicCalendar civilCalendar = new IslamicCalendar();
+        civilCalendar.setCivil(true);
+        return civilCalendar;
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java b/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
new file mode 100644
index 0000000..78dd274
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
@@ -0,0 +1,371 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Tests for the <code>JapaneseCalendar</code> class.
+ */
+public class JapaneseTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new JapaneseTest().run(args);
+    }
+
+    public void TestCoverage() {
+    {
+        // new JapaneseCalendar(TimeZone)
+        JapaneseCalendar cal = new JapaneseCalendar(TimeZone.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with TimeZone");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(ULocale)
+        JapaneseCalendar cal = new JapaneseCalendar(ULocale.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with ULocale");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(TimeZone, ULocale)
+        JapaneseCalendar cal = new JapaneseCalendar(TimeZone.getDefault(), ULocale.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with TimeZone ULocale");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(Locale)
+        JapaneseCalendar cal = new JapaneseCalendar(Locale.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with Locale");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(TimeZone, Locale)
+        JapaneseCalendar cal = new JapaneseCalendar(TimeZone.getDefault(), Locale.getDefault());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with TimeZone Locale");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(Date)
+        JapaneseCalendar cal = new JapaneseCalendar(new Date());
+        if(cal == null){
+            errln("could not create JapaneseCalendar with Date");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(int year, int month, int date)
+        JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1);
+        if(cal == null){
+            errln("could not create JapaneseCalendar with year,month,date");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(int era, int year, int month, int date)
+        JapaneseCalendar cal = new JapaneseCalendar(JapaneseCalendar.MEIJI, 43, Calendar.JANUARY, 1);
+        if(cal == null){
+            errln("could not create JapaneseCalendar with era,year,month,date");
+        }
+    }
+
+    {
+        // new JapaneseCalendar(int year, int month, int date, int hour, int minute, int second)
+        JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1, 1, 1, 1);
+        if(cal == null){
+            errln("could not create JapaneseCalendar with year,month,date,hour,min,second");
+        }
+    }
+
+    {
+        // limits
+        JapaneseCalendar cal = new JapaneseCalendar();
+        DateFormat fmt = cal.getDateTimeFormat(DateFormat.FULL, DateFormat.FULL, Locale.ENGLISH);
+
+        cal.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+        logln("date: " + cal.getTime());
+        logln("min era: " + cal.getMinimum(Calendar.ERA));
+        logln("min year: " + cal.getMinimum(Calendar.YEAR));
+        cal.set(Calendar.YEAR, cal.getActualMaximum(Calendar.YEAR));
+        logln("date: " + fmt.format(cal.getTime()));
+        cal.add(Calendar.YEAR, 1);
+        logln("date: " + fmt.format(cal.getTime()));
+    }
+
+    {
+        // data
+        JapaneseCalendar cal = new JapaneseCalendar(1868, Calendar.JANUARY, 1);
+        Date time = cal.getTime();
+
+        String[] calendarLocales = {
+        "en", "ja_JP"
+        };
+
+        String[] formatLocales = {
+        "en", "ja"
+        };
+        for (int i = 0; i < calendarLocales.length; ++i) {
+            String calLocName = calendarLocales[i];
+            Locale calLocale = LocaleUtility.getLocaleFromName(calLocName);
+            cal = new JapaneseCalendar(calLocale);
+
+            for (int j = 0; j < formatLocales.length; ++j) {
+                String locName = formatLocales[j];
+                Locale formatLocale = LocaleUtility.getLocaleFromName(locName);
+                DateFormat format = DateFormat.getDateTimeInstance(cal, DateFormat.FULL, DateFormat.FULL, formatLocale);
+                logln(calLocName + "/" + locName + " --> " + format.format(time));
+            }
+        }
+    }
+    }
+    
+    public void Test3860()
+    {
+        ULocale loc = new ULocale("ja_JP@calendar=japanese");
+        Calendar cal = new JapaneseCalendar(loc);
+        DateFormat enjformat = cal.getDateTimeFormat(0,0,new ULocale("en_JP@calendar=japanese"));
+        DateFormat format = cal.getDateTimeFormat(0,0,loc);
+        ((SimpleDateFormat)format).applyPattern("y.M.d");  // Note: just 'y' doesn't work here.
+        ParsePosition pos = new ParsePosition(0);
+        Date aDate = format.parse("1.1.9", pos); // after the start of heisei accession.  Jan 1, 1H wouldn't work  because it is actually showa 64
+        String inEn = enjformat.format(aDate);
+
+        cal.clear();
+        cal.setTime(aDate);
+        int gotYear = cal.get(Calendar.YEAR);
+        int gotEra = cal.get(Calendar.ERA);
+        
+        int expectYear = 1;
+        int expectEra = JapaneseCalendar.CURRENT_ERA;
+        
+        if((gotYear != expectYear) || (gotEra != expectEra)) {
+            errln("Expected year " + expectYear + ", era " + expectEra +", but got year " + gotYear + " and era " + gotEra + ", == " + inEn);
+        } else {
+            logln("Got year " + gotYear + " and era " + gotEra + ", == " + inEn);
+        }
+
+        // Test parse with missing era (should default to current era, heisei)
+        // Test parse with incomplete information
+        logln("Testing parse w/ just year...");
+        Calendar cal2 = new JapaneseCalendar(loc);
+        SimpleDateFormat fmt = new SimpleDateFormat("y", loc);
+        SimpleDateFormat fmt2 = new SimpleDateFormat("HH:mm:ss.S MMMM d, yyyy G", new ULocale("en_US@calendar=gregorian"));
+        cal2.clear();
+        String samplestr = "1";
+        logln("Test Year: " + samplestr);
+        try {
+            aDate = fmt.parse(samplestr);
+        } catch (ParseException pe) {
+            errln("Error parsing " + samplestr);
+        }
+        ParsePosition pp = new ParsePosition(0);
+        fmt.parse(samplestr, cal2, pp);
+        logln("cal2 after 1 parse:");
+        String str = fmt2.format(aDate);
+        logln("as Gregorian Calendar: " + str);
+
+        cal2.setTime(aDate);
+        gotYear = cal2.get(Calendar.YEAR);
+        gotEra = cal2.get(Calendar.ERA);
+        expectYear = 1;
+        expectEra = JapaneseCalendar.CURRENT_ERA;
+        if((gotYear != 1) || (gotEra != expectEra)) {
+            errln("parse "+ samplestr + " of 'y' as Japanese Calendar, expected year " + expectYear + 
+                " and era " + expectEra + ", but got year " + gotYear + " and era " + gotEra + " (Gregorian:" + str +")");
+        } else {            
+            logln(" year: " + gotYear + ", era: " + gotEra);
+        }
+    }
+
+    public void Test5345parse() {
+        // Test parse with incomplete information
+        DateFormat fmt2= DateFormat.getDateInstance(); //DateFormat.LONG, Locale.US);
+        JapaneseCalendar c = new JapaneseCalendar(TimeZone.getDefault(), new ULocale("en_US"));
+        SimpleDateFormat fmt = (SimpleDateFormat)c.getDateTimeFormat(1,1,new ULocale("en_US@calendar=japanese"));
+        fmt.applyPattern("G y");
+        logln("fmt's locale = " + fmt.getLocale(ULocale.ACTUAL_LOCALE));
+        //SimpleDateFormat fmt = new SimpleDateFormat("G y", new Locale("en_US@calendar=japanese"));
+        long aDateLong = -3197120400000L 
+            + 3600000L; // compensate for DST
+        Date aDate = new Date(aDateLong); //08 Sept 1868
+        logln("aDate: " + aDate.toString() +", from " + aDateLong);
+        String str;
+        str = fmt2.format(aDate);
+        logln("Test Date: " + str);
+        str = fmt.format(aDate);
+        logln("as Japanese Calendar: " + str);
+        String expected = "Meiji 1";
+        if(!str.equals(expected)) {
+            errln("FAIL: Expected " + expected + " but got " + str);
+        }
+        Date otherDate;
+        try {
+            otherDate = fmt.parse(expected);
+            if(!otherDate.equals(aDate)) { 
+                String str3;
+    //            ParsePosition pp;
+                Date dd = fmt.parse(expected);
+                str3 = fmt.format(otherDate);
+                long oLong = otherDate.getTime();
+                long aLong = otherDate.getTime();
+                
+                errln("FAIL: Parse incorrect of " + expected + ":  wanted " + aDate + " ("+aLong+"), but got " +  " " +
+                    otherDate + " ("+oLong+") = " + str3 + " not " + dd.toString() );
+
+
+            } else {
+                logln("Parsed OK: " + expected);
+            }
+        } catch(java.text.ParseException pe) {
+            errln("FAIL: ParseException: " + pe.toString());
+            pe.printStackTrace();
+        }
+    }
+
+
+    private void checkExpected(Calendar c, int expected[] ) {
+        final String[] FIELD_NAME = {
+            "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+            "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+            "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+            "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+            "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+            "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+        };
+
+        for(int i= 0;i<expected.length;i += 2) {
+            int fieldNum = expected[i+0];
+            int expectedVal = expected[i+1];
+            int actualVal = c.get(fieldNum);
+            
+            if(expectedVal == actualVal) {
+                logln(FIELD_NAME[fieldNum]+": "+ actualVal);
+            } else {
+                errln("FAIL: "+FIELD_NAME[fieldNum]+": expected "+ expectedVal + " got " +  actualVal);
+            }
+        }
+    }
+
+    public void Test5345calendar() {
+        logln("** testIncompleteCalendar()");
+        // Test calendar with incomplete information
+        JapaneseCalendar c = new JapaneseCalendar(TimeZone.getDefault());
+        logln("test clear");
+        c.clear();
+ 
+        // Showa 45 = Gregorian 1970
+        int expected0[] = {   Calendar.ERA, 234,
+                              Calendar.YEAR, 45 };
+        checkExpected(c, expected0);
+
+        logln("test setting era");
+        c.clear();
+        c.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+        
+        
+        int expectedA[] = {   Calendar.ERA, JapaneseCalendar.MEIJI };
+        checkExpected(c, expectedA);
+
+
+        logln("test setting era and year and month and date");
+        c.clear();
+        c.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+        c.set(Calendar.YEAR, 1);
+        c.set(Calendar.MONTH, Calendar.JANUARY);
+        c.set(Calendar.DATE, 1);
+
+
+        int expectedC[] = {   Calendar.ERA, JapaneseCalendar.MEIJI -1};
+        checkExpected(c, expectedC);
+
+
+        logln("test setting  year and month and date THEN era");
+        c.clear();
+        c.set(Calendar.YEAR, 1);
+        c.set(Calendar.MONTH, Calendar.JANUARY);
+        c.set(Calendar.DATE, 1);
+        c.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+        
+        
+        checkExpected(c, expectedC);
+        
+        
+        logln("test setting era and year");
+        c.clear();
+        c.set(Calendar.YEAR, 1);
+        c.set(Calendar.ERA, JapaneseCalendar.MEIJI);
+
+
+        int expectedB[] = { Calendar.ERA, JapaneseCalendar.MEIJI,
+                            Calendar.YEAR, 1 };
+        checkExpected(c, expectedB);
+
+    }
+
+    
+    public void TestJapaneseYear3282() {
+        Calendar c = Calendar.getInstance(ULocale.ENGLISH);
+        c.set(2003,Calendar.SEPTEMBER,25);
+        JapaneseCalendar jcal = new JapaneseCalendar();
+        //jcal.setTime(new Date(1187906308151L));  alternate value
+        jcal.setTime(c.getTime());
+        logln("Now is: " + jcal.getTime());
+        c.setTime(jcal.getTime());
+        int nowYear = c.get(Calendar.YEAR);
+        logln("Now year: "+nowYear);
+        SimpleDateFormat jdf = (SimpleDateFormat) SimpleDateFormat.getDateInstance(jcal,
+                SimpleDateFormat.DEFAULT, Locale.getDefault());
+        jdf.applyPattern("G yy/MM/dd");
+        String text = jdf.format(jcal.getTime());
+        logln("Now is: " + text + " (in Japan)");
+        try {
+            Date date = jdf.parse(text);
+            logln("But is this not the date?: " + date);
+            c.setTime(date);
+            int thenYear = c.get(Calendar.YEAR);
+            logln("Then year: "+thenYear);
+            if(thenYear != nowYear) {
+                errln("Nowyear "+nowYear +" is not thenyear "+thenYear);
+            } else {
+                logln("Nowyear "+nowYear +" == thenyear "+thenYear);
+            }
+        } catch (java.text.ParseException ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    /**
+     * Test limits of the Japanese calendar
+     */
+    public void TestLimits() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1988, Calendar.DECEMBER, 1);
+        JapaneseCalendar jcal = new JapaneseCalendar();
+        doLimitsTest(jcal, null, cal.getTime());
+        doTheoreticalLimitsTest(jcal, true);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/calendar/TestAll.java b/src/com/ibm/icu/dev/test/calendar/TestAll.java
new file mode 100644
index 0000000..f3f5a7d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/TestAll.java
@@ -0,0 +1,40 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other calendar tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "AstroTest",
+                  "CalendarRegression",
+                  "CompatibilityTest",
+                  "CopticTest",
+                  "EthiopicTest",
+                  "HebrewTest",
+                  "IBMCalendarTest",
+                  "IslamicTest",
+                  "JapaneseTest",
+                  "ChineseTest",
+                  "IndianTest",
+                  "HolidayTest",
+                  "DataDrivenCalendarTest"
+              },
+              "Calendars, Holiday, and Astro tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Calendar";
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/TestCase.java b/src/com/ibm/icu/dev/test/calendar/TestCase.java
new file mode 100644
index 0000000..ff062d7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/TestCase.java
@@ -0,0 +1,241 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * A pseudo <code>Calendar</code> that is useful for testing
+ * new calendars.  A <code>TestCase</code> object is used to hold the
+ * field and millisecond values that the calendar should have at one
+ * particular instant in time.  The applyFields and applyTime
+ * methods are used to apply these settings to the calendar object being
+ * tested, and the equals and fieldsEqual methods are used to ensure
+ * that the calendar has ended up in the right state.
+ */
+public class TestCase {
+
+    //------------------------------------------------------------------
+    // Pseudo-Calendar fields and methods
+    //------------------------------------------------------------------
+
+    protected int[] fields = new int[32];
+    protected boolean[] isSet = new boolean[32];
+    protected long time;
+
+    protected void set(int field, int value) {
+        fields[field] = value;
+        isSet[field] = true;
+    }
+
+    protected int get(int field) {
+        return fields[field];
+    }
+
+    protected boolean isSet(int field) {
+        return isSet[field];
+    }
+
+    protected void setTime(Date d) {
+        time = d.getTime();
+    }
+
+    public Date getTime() {
+        return new Date(time);
+    }
+
+    /**
+     * Return a String representation of this test case's time.
+     */
+    public String toString() {
+        return dowToString(get(Calendar.DAY_OF_WEEK)) + " " +
+            get(Calendar.YEAR) + "/" + (get(Calendar.MONTH)+1) + "/" +
+            get(Calendar.DATE);
+    }
+
+    private static final String[] DOW_NAMES = {
+        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+    };
+
+    public static String dowToString(int dow) {
+        --dow;
+        return (dow < 0 || dow > 6) ?
+            ("<DOW " + dow + ">") : DOW_NAMES[dow];
+    }
+
+    /**
+     * Initialize a TestCase object using a julian day number and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param era       The ERA field of tested calendar on the given julian day
+     * @param year      The YEAR field of tested calendar on the given julian day
+     * @param month     The MONTH (1-based) field of tested calendar on the given julian day
+     * @param day       The DAY_OF_MONTH field of tested calendar on the given julian day
+     * @param dayOfWeek The DAY_OF_WEEK field of tested calendar on the given julian day
+     * @param hour      The HOUR field of tested calendar on the given julian day
+     * @param min       The MINUTE field of tested calendar on the given julian day
+     * @param sec       The SECOND field of tested calendar on the given julian day
+     */
+    public TestCase(double julian,
+                    int era, int year, int month, int day,
+                    int dayOfWeek,
+                    int hour, int min, int sec)
+    {
+        setTime(new Date(JULIAN_EPOCH + (long)(ONE_DAY * julian)));
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(Calendar.DATE, day);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+        set(Calendar.HOUR, hour);
+        set(Calendar.MINUTE, min);
+        set(Calendar.SECOND, sec);
+    }
+
+    /**
+     * Initialize a TestCase object using a Gregorian year/month/day and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param gregYear  The Gregorian year of the date to be tested
+     * @param gregMonth The Gregorian month of the date to be tested
+     * @param gregDay   The Gregorian day of the month of the date to be tested
+     *
+     * @param era       The ERA field of tested calendar on the given gregorian date
+     * @param year      The YEAR field of tested calendar on the given gregorian date
+     * @param month     The MONTH (0-based) field of tested calendar on the given gregorian date
+     * @param day       The DAY_OF_MONTH field of tested calendar on the given gregorian date
+     * @param dayOfWeek The DAY_OF_WEEK field of tested calendar on the given gregorian date
+     * @param hour      The HOUR field of tested calendar on the given gregorian date
+     * @param min       The MINUTE field of tested calendar on the given gregorian date
+     * @param sec       The SECOND field of tested calendar on the given gregorian date
+     */
+    public TestCase(int gregYear, int gregMonth, int gregDay,
+                    int era, int year, int month, int day,
+                    int dayOfWeek,
+                    int hour, int min, int sec)
+    {
+        GregorianCalendar greg = new GregorianCalendar(UTC, Locale.getDefault());
+        greg.clear();
+        greg.set(gregYear, gregMonth-1, gregDay);
+        setTime(greg.getTime());
+        
+        set(Calendar.ERA, era);
+        set(Calendar.YEAR, year);
+        set(Calendar.MONTH, month - 1);
+        set(Calendar.DATE, day);
+        set(Calendar.DAY_OF_WEEK, dayOfWeek);
+        set(Calendar.HOUR, hour);
+        set(Calendar.MINUTE, min);
+        set(Calendar.SECOND, sec);
+    }
+    
+    /**
+     * For subclasses.
+     */
+    protected TestCase() {}
+
+    /**
+     * Apply this test case's field values to another calendar
+     * by calling its set method for each field.  This is useful in combination
+     * with the equal method.
+     *
+     * @see com.ibm.icu.util.Calendar#equals
+     */
+    public void applyFields(Calendar c) {
+        for (int i=0; i < c.getFieldCount(); i++) {
+            if (isSet(i)) {
+                c.set(i, get(i));
+            }
+        }
+    }
+    
+    /**
+     * Apply this test case's time in milliseconds to another calendar
+     * by calling its setTime method.  This is useful in combination
+     * with fieldsEqual
+     *
+     * @see #fieldsEqual
+     */
+    public void applyTime(Calendar c) {
+        c.setTime(new Date(time));
+    }
+
+    /**
+     * Determine whether the fields of this calendar
+     * are the same as that of the other calendar.  This method is useful
+     * for determining whether the other calendar's computeFields method
+     * works properly.  For example:
+     * <pre>
+     *    Calendar testCalendar = ...
+     *    TestCase case = ...
+     *    case.applyTime(testCalendar);
+     *    if (!case.fieldsEqual(testCalendar)) {
+     *        // Error!
+     *    }
+     * </pre>
+     * 
+     * @see #applyTime
+     */
+    public boolean fieldsEqual(Calendar c, TestLog log) {
+        for (int i=0; i < c.getFieldCount(); i++) {
+            if (isSet(i) && get(i) != c.get(i)) {
+                StringBuffer buf = new StringBuffer();
+                buf.append("Fail: " + CalendarTest.fieldName(i) + " = " + c.get(i) +
+                          ", expected " + get(i));
+                for (int j=0; j<c.getFieldCount(); ++j) {
+                    if (isSet(j)) {
+                        if (get(j) == c.get(j)) {
+                            buf.append("\n  ok: " + CalendarTest.fieldName(j) + " = " +
+                                      c.get(j));
+                        } else {
+                            buf.append("\n  fail: " + CalendarTest.fieldName(j) + " = " +
+                                      c.get(j) + ", expected " + get(j));
+                        }
+                    }
+                }
+                log.errln(buf.toString());
+                return false;
+            }
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Determine whether time in milliseconds of this calendar
+     * is the same as that of the other calendar.  This method is useful
+     * for determining whether the other calendar's computeTime method
+     * works properly.  For example:
+     * <pre>
+     *    Calendar testCalendar = ...
+     *    TestCase case = ...
+     *    case.applyFields(testCalendar);
+     *    if (!case.equals(testCalendar)) {
+     *        // Error!
+     *    }
+     * </pre>
+     * 
+     * @see #applyFields
+     */
+    public boolean equals(Object obj) {
+        return time == ((Calendar)obj).getTime().getTime();
+    }
+    
+    protected static final int  ONE_SECOND = 1000;
+    protected static final int  ONE_MINUTE = 60*ONE_SECOND;
+    protected static final int  ONE_HOUR   = 60*ONE_MINUTE;
+    protected static final long ONE_DAY    = 24*ONE_HOUR;
+    protected static final long JULIAN_EPOCH = -210866760000000L;   // 1/1/4713 BC 12:00
+
+    public final static SimpleTimeZone UTC = new SimpleTimeZone(0, "GMT");
+}
diff --git a/src/com/ibm/icu/dev/test/calendar/package.html b/src/com/ibm/icu/dev/test/calendar/package.html
new file mode 100644
index 0000000..ccb8858
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/calendar/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for the calendar classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/charset/TestAll.java b/src/com/ibm/icu/dev/test/charset/TestAll.java
new file mode 100644
index 0000000..3e1ca2f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestAll.java
@@ -0,0 +1,33 @@
+/**
+*******************************************************************************
+* Copyright (C) 2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.charset;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all collation and search tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "TestCharset",
+                  "TestConversion"
+              },
+              "All ICU Charset Tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Charset";
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/charset/TestCharset.java b/src/com/ibm/icu/dev/test/charset/TestCharset.java
new file mode 100644
index 0000000..7822c86
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestCharset.java
@@ -0,0 +1,5283 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.charset;
+
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+import java.nio.charset.UnsupportedCharsetException;
+import java.nio.charset.spi.CharsetProvider;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.SortedMap;
+
+import com.ibm.icu.charset.CharsetCallback;
+import com.ibm.icu.charset.CharsetEncoderICU;
+import com.ibm.icu.charset.CharsetDecoderICU;
+import com.ibm.icu.charset.CharsetICU;
+import com.ibm.icu.charset.CharsetProviderICU;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.UTF16;
+
+public class TestCharset extends TestFmwk {
+    private String m_encoding = "UTF-16";
+    CharsetDecoder m_decoder = null;
+    CharsetEncoder m_encoder = null;
+    Charset m_charset =null;
+    static final String unistr = "abcd\ud800\udc00\u1234\u00a5\u3000\r\n";
+    static final byte[] byteStr ={   
+            (byte) 0x00,(byte) 'a',
+            (byte) 0x00,(byte) 'b',
+            (byte) 0x00,(byte) 'c',
+            (byte) 0x00,(byte) 'd',
+            (byte) 0xd8,(byte) 0x00,
+            (byte) 0xdc,(byte) 0x00,
+            (byte) 0x12,(byte) 0x34,
+            (byte) 0x00,(byte) 0xa5,
+            (byte) 0x30,(byte) 0x00,
+            (byte) 0x00,(byte) 0x0d,
+            (byte) 0x00,(byte) 0x0a };
+    static final byte[] expectedByteStr ={
+        (byte) 0xfe,(byte) 0xff,
+        (byte) 0x00,(byte) 'a',
+        (byte) 0x00,(byte) 'b',
+        (byte) 0x00,(byte) 'c',
+        (byte) 0x00,(byte) 'd',
+        (byte) 0xd8,(byte) 0x00,
+        (byte) 0xdc,(byte) 0x00,
+        (byte) 0x12,(byte) 0x34,
+        (byte) 0x00,(byte) 0xa5,
+        (byte) 0x30,(byte) 0x00,
+        (byte) 0x00,(byte) 0x0d,
+        (byte) 0x00,(byte) 0x0a };
+    
+    protected void init(){
+        try{
+            if ("UTF-16".equals(m_encoding)) {
+                int x = 2;
+                x++;
+            }
+            CharsetProviderICU provider = new CharsetProviderICU();
+            //Charset charset = CharsetICU.forName(encoding);
+            m_charset = provider.charsetForName(m_encoding);
+            m_decoder = (CharsetDecoder) m_charset.newDecoder();
+            m_encoder = (CharsetEncoder) m_charset.newEncoder();   
+        }catch(MissingResourceException ex){
+            warnln("Could not load charset data");
+        }
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new TestCharset().run(args);
+    }
+    public void TestUTF16Converter(){
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset cs1 = icu.charsetForName("UTF-16BE");
+        CharsetEncoder e1 = cs1.newEncoder();
+        CharsetDecoder d1 = cs1.newDecoder();
+        
+        Charset cs2 = icu.charsetForName("UTF-16LE");
+        CharsetEncoder e2 = cs2.newEncoder();
+        CharsetDecoder d2 = cs2.newDecoder();
+        
+        for(int i=0x0000; i<0x10FFFF; i+=0xFF){
+            CharBuffer us = CharBuffer.allocate(0xFF*2);
+            ByteBuffer bs1 = ByteBuffer.allocate(0xFF*8);
+            ByteBuffer bs2 = ByteBuffer.allocate(0xFF*8);
+            for(int j=0;j<0xFF; j++){
+                int c = i+j;
+              
+                if((c>=0xd800&&c<=0xdFFF)||c>0x10FFFF){
+                    continue;
+                }
+
+                if(c>0xFFFF){
+                    char lead = UTF16.getLeadSurrogate(c);
+                    char trail = UTF16.getTrailSurrogate(c);
+                    if(!UTF16.isLeadSurrogate(lead)){
+                        errln("lead is not lead!"+lead+" for cp: \\U"+Integer.toHexString(c));
+                        continue;
+                    }
+                    if(!UTF16.isTrailSurrogate(trail)){
+                        errln("trail is not trail!"+trail);
+                        continue;
+                    }
+                    us.put(lead);
+                    us.put(trail);
+                    bs1.put((byte)(lead>>8));
+                    bs1.put((byte)(lead&0xFF));
+                    bs1.put((byte)(trail>>8));
+                    bs1.put((byte)(trail&0xFF));
+                    
+                    bs2.put((byte)(lead&0xFF));
+                    bs2.put((byte)(lead>>8));
+                    bs2.put((byte)(trail&0xFF));
+                    bs2.put((byte)(trail>>8));
+                }else{
+
+                    if(c<0xFF){
+                        bs1.put((byte)0x00);
+                        bs1.put((byte)(c));
+                        bs2.put((byte)(c));
+                        bs2.put((byte)0x00);
+                    }else{
+                        bs1.put((byte)(c>>8));
+                        bs1.put((byte)(c&0xFF));
+                        
+                        bs2.put((byte)(c&0xFF));
+                        bs2.put((byte)(c>>8));
+                    }
+                    us.put((char)c);
+                }
+            }
+            
+            
+            us.limit(us.position());
+            us.position(0);
+            if(us.length()==0){
+                continue;
+            }
+            
+
+            bs1.limit(bs1.position());
+            bs1.position(0);
+            ByteBuffer newBS = ByteBuffer.allocate(bs1.capacity());
+            //newBS.put((byte)0xFE);
+            //newBS.put((byte)0xFF);
+            newBS.put(bs1);    
+            bs1.position(0);
+            smBufDecode(d1, "UTF-16", bs1, us);
+            smBufEncode(e1, "UTF-16", us, newBS);
+            
+            bs2.limit(bs2.position());
+            bs2.position(0);
+            newBS.clear();
+            //newBS.put((byte)0xFF);
+            //newBS.put((byte)0xFE);
+            newBS.put(bs2);     
+            bs2.position(0);
+            smBufDecode(d2, "UTF16-LE", bs2, us);
+            smBufEncode(e2, "UTF-16LE", us, newBS);
+            
+        }
+    }
+    public void TestUTF32Converter(){
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset cs1 = icu.charsetForName("UTF-32BE");
+        CharsetEncoder e1 = cs1.newEncoder();
+        CharsetDecoder d1 = cs1.newDecoder();
+        
+        Charset cs2 = icu.charsetForName("UTF-32LE");
+        CharsetEncoder e2 = cs2.newEncoder();
+        CharsetDecoder d2 = cs2.newDecoder();
+        
+        for(int i=0x000; i<0x10FFFF; i+=0xFF){
+            CharBuffer us = CharBuffer.allocate(0xFF*2);
+            ByteBuffer bs1 = ByteBuffer.allocate(0xFF*8);
+            ByteBuffer bs2 = ByteBuffer.allocate(0xFF*8);
+            for(int j=0;j<0xFF; j++){
+                int c = i+j;
+              
+                if((c>=0xd800&&c<=0xdFFF)||c>0x10FFFF){
+                    continue;
+                }
+
+                if(c>0xFFFF){
+                    char lead = UTF16.getLeadSurrogate(c);
+                    char trail = UTF16.getTrailSurrogate(c);
+
+                    us.put(lead);
+                    us.put(trail);
+                }else{
+                    us.put((char)c);
+                }
+                bs1.put((byte) (c >>> 24));
+                bs1.put((byte) (c >>> 16)); 
+                bs1.put((byte) (c >>> 8)); 
+                bs1.put((byte) (c & 0xFF));       
+                                
+                bs2.put((byte) (c & 0xFF));  
+                bs2.put((byte) (c >>> 8));
+                bs2.put((byte) (c >>> 16)); 
+                bs2.put((byte) (c >>> 24));
+            }
+            bs1.limit(bs1.position());
+            bs1.position(0);
+            bs2.limit(bs2.position());
+            bs2.position(0);
+            us.limit(us.position());
+            us.position(0);
+            if(us.length()==0){
+                continue;
+            }
+             
+
+            ByteBuffer newBS = ByteBuffer.allocate(bs1.capacity());
+            
+            newBS.put((byte)0x00);
+            newBS.put((byte)0x00);
+            newBS.put((byte)0xFE);
+            newBS.put((byte)0xFF);
+            
+            newBS.put(bs1);
+            bs1.position(0);
+            smBufDecode(d1, "UTF-32", bs1, us);
+            smBufEncode(e1, "UTF-32", us, newBS);
+            
+            
+            newBS.clear();
+            
+            newBS.put((byte)0xFF);
+            newBS.put((byte)0xFE);
+            newBS.put((byte)0x00);
+            newBS.put((byte)0x00);
+            
+            newBS.put(bs2);    
+            bs2.position(0);
+            smBufDecode(d2, "UTF-32LE", bs2, us);
+            smBufEncode(e2, "UTF-32LE", us, newBS);
+
+        }
+    }
+    public void TestASCIIConverter() {
+        runTestASCIIBasedConverter("ASCII", 0x80);
+    }    
+    public void Test88591Converter() {
+        runTestASCIIBasedConverter("iso-8859-1", 0x100);
+    }
+    public void runTestASCIIBasedConverter(String converter, int limit){
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName(converter);
+        CharsetEncoder encoder = icuChar.newEncoder();
+        CharsetDecoder decoder = icuChar.newDecoder();
+        CoderResult cr;
+
+        /* test with and without array-backed buffers */ 
+        
+        byte[] bytes = new byte[0x10000];
+        char[] chars = new char[0x10000];
+        for (int j = 0; j <= 0xffff; j++) {
+            bytes[j] = (byte) j;
+            chars[j] = (char) j;
+        }
+
+        boolean fail = false;
+        boolean arrays = false;
+        boolean decoding = false;
+        int i;
+        
+        // 0 thru limit - 1
+        ByteBuffer bs = ByteBuffer.wrap(bytes, 0, limit);
+        CharBuffer us = CharBuffer.wrap(chars, 0, limit);
+        smBufDecode(decoder, converter, bs, us, true);
+        smBufDecode(decoder, converter, bs, us, false);
+        smBufEncode(encoder, converter, us, bs, true);
+        smBufEncode(encoder, converter, us, bs, false);
+        for (i = 0; i < limit; i++) {
+            bs = ByteBuffer.wrap(bytes, i, 1).slice();
+            us = CharBuffer.wrap(chars, i, 1).slice();
+            try {
+                decoding = true;
+                arrays = true;
+                smBufDecode(decoder, converter, bs, us, true, false, true);
+                
+                decoding = true;
+                arrays = false;
+                smBufDecode(decoder, converter, bs, us, true, false, false);
+                
+                decoding = false;
+                arrays = true;
+                smBufEncode(encoder, converter, us, bs, true, false, true);
+                
+                decoding = false;
+                arrays = false;
+                smBufEncode(encoder, converter, us, bs, true, false, false);
+                
+            } catch (Exception ex) {
+                errln("Failed to fail to " + (decoding ? "decode" : "encode") + " 0x"
+                        + Integer.toHexString(i) + (arrays ? " with arrays" : " without arrays") + " in " + converter);
+                return;
+            }
+        }
+        
+        // decode limit thru 255
+        for (i = limit; i <= 0xff; i++) {
+            bs = ByteBuffer.wrap(bytes, i, 1).slice();
+            us = CharBuffer.wrap(chars, i, 1).slice();
+            try {
+                smBufDecode(decoder, converter, bs, us, true, false, true);
+                fail = true;
+                arrays = true;
+                break;
+            } catch (Exception ex) {
+            }
+            try {
+                smBufDecode(decoder, converter, bs, us, true, false, false);
+                fail = true;
+                arrays = false;
+                break;
+            } catch (Exception ex) {
+            }
+        }
+        if (fail) {
+            errln("Failed to fail to decode 0x" + Integer.toHexString(i)
+                    + (arrays ? " with arrays" : " without arrays") + " in " + converter);
+            return;
+        }
+        
+        // encode limit thru 0xffff, skipping through much of the 1ff to feff range to save
+        // time (it would take too much time to test every possible case)
+        for (i = limit; i <= 0xffff; i = ((i>=0x1ff && i<0xfeff) ? i+0xfd : i+1)) {
+            bs = ByteBuffer.wrap(bytes, i, 1).slice();
+            us = CharBuffer.wrap(chars, i, 1).slice();
+            try {
+                smBufEncode(encoder, converter, us, bs, true, false, true);
+                fail = true;
+                arrays = true;
+                break;
+            } catch (Exception ex) {
+            }
+            try {
+                smBufEncode(encoder, converter, us, bs, true, false, false);
+                fail = true;
+                arrays = false;
+                break;
+            } catch (Exception ex) {
+            }
+        }
+        if (fail) {
+            errln("Failed to fail to encode 0x" + Integer.toHexString(i)
+                    + (arrays ? " with arrays" : " without arrays") + " in " + converter);
+            return;
+        }
+        
+        // test overflow / underflow edge cases
+        outer: for (int n = 1; n <= 3; n++) {
+            for (int m = 0; m < n; m++) {
+                // expecting underflow
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', m).slice();
+                    us = CharBuffer.wrap(chars, 'a', m).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, true);
+                    smBufDecode(decoder, converter, bs, us, true, false, false);
+                    smBufEncode(encoder, converter, us, bs, true, false, true);
+                    smBufEncode(encoder, converter, us, bs, true, false, false);
+                    bs = ByteBuffer.wrap(bytes, 'a', m).slice();
+                    us = CharBuffer.wrap(chars, 'a', n).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, true, m);
+                    smBufDecode(decoder, converter, bs, us, true, false, false, m);
+                    bs = ByteBuffer.wrap(bytes, 'a', n).slice();
+                    us = CharBuffer.wrap(chars, 'a', m).slice();
+                    smBufEncode(encoder, converter, us, bs, true, false, true, m);
+                    smBufEncode(encoder, converter, us, bs, true, false, false, m);
+                    bs = ByteBuffer.wrap(bytes, 'a', n).slice();
+                    us = CharBuffer.wrap(chars, 'a', n).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, true);
+                    smBufDecode(decoder, converter, bs, us, true, false, false);
+                    smBufEncode(encoder, converter, us, bs, true, false, true);
+                    smBufEncode(encoder, converter, us, bs, true, false, false);
+                } catch (Exception ex) {
+                    fail = true;
+                    break outer;
+                }
+                
+                // expecting overflow
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', n).slice();
+                    us = CharBuffer.wrap(chars, 'a', m).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, true);
+                    fail = true;
+                    break;
+                } catch (Exception ex) {
+                    if (!(ex instanceof BufferOverflowException)) {
+                        fail = true;
+                        break outer;
+                    }
+                }
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', n).slice();
+                    us = CharBuffer.wrap(chars, 'a', m).slice();
+                    smBufDecode(decoder, converter, bs, us, true, false, false);
+                    fail = true;
+                } catch (Exception ex) {
+                    if (!(ex instanceof BufferOverflowException)) {
+                        fail = true;
+                        break outer;
+                    }
+                }
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', m).slice();
+                    us = CharBuffer.wrap(chars, 'a', n).slice();
+                    smBufEncode(encoder, converter, us, bs, true, false, true);
+                    fail = true;
+                } catch (Exception ex) {
+                    if (!(ex instanceof BufferOverflowException)) {
+                        fail = true;
+                        break outer;
+                    }
+                }
+                try {
+                    bs = ByteBuffer.wrap(bytes, 'a', m).slice();
+                    us = CharBuffer.wrap(chars, 'a', n).slice();
+                    smBufEncode(encoder, converter, us, bs, true, false, false);
+                    fail = true;
+                } catch (Exception ex) {
+                    if (!(ex instanceof BufferOverflowException)) {
+                        fail = true;
+                        break outer;
+                    }
+                }
+            }
+        }
+        if (fail) {
+            errln("Incorrect result in " + converter + " for underflow / overflow edge cases");
+            return;
+        }
+        
+        // test surrogate combinations in encoding
+        String lead = "\ud888";
+        String trail = "\udc88";
+        String norm = "a";
+        String ext = "\u0275"; // theta
+        String end = "";
+        bs = ByteBuffer.wrap(new byte[] { 0 });
+        String[] input = new String[] { //
+                lead + lead,   // malf(1)
+                lead + trail,  // unmap(2)
+                lead + norm,   // malf(1)
+                lead + ext,    // malf(1)
+                lead + end,    // malf(1)
+                trail + norm,  // malf(1)
+                trail + end,   // malf(1)
+                ext   + norm,  // unmap(1)
+                ext   + end,   // unmap(1)
+        };
+        CoderResult[] result = new CoderResult[] {
+                CoderResult.malformedForLength(1),
+                CoderResult.unmappableForLength(2),
+                CoderResult.malformedForLength(1),
+                CoderResult.malformedForLength(1),
+                CoderResult.malformedForLength(1),
+                CoderResult.malformedForLength(1),
+                CoderResult.malformedForLength(1),
+                CoderResult.unmappableForLength(1),
+                CoderResult.unmappableForLength(1),
+        };
+        
+        for (int index = 0; index < input.length; index++) {
+            CharBuffer source = CharBuffer.wrap(input[index]);
+            cr = encoder.encode(source, bs, true);
+            bs.rewind();
+            encoder.reset();
+
+            // if cr != results[x]
+            if (!((cr.isUnderflow() && result[index].isUnderflow())
+                    || (cr.isOverflow() && result[index].isOverflow())
+                    || (cr.isMalformed() && result[index].isMalformed())
+                    || (cr.isUnmappable() && result[index].isUnmappable()))
+                    || (cr.isError() && cr.length() != result[index].length())) {
+                errln("Incorrect result in " + converter + " for \"" + input[index] + "\"" + ", expected: " + result[index] + ", received:  " + cr);
+                break;
+            }
+
+            source = CharBuffer.wrap(input[index].toCharArray());
+            cr = encoder.encode(source, bs, true);
+            bs.rewind();
+            encoder.reset();
+
+            // if cr != results[x]
+            if (!((cr.isUnderflow() && result[index].isUnderflow())
+                    || (cr.isOverflow() && result[index].isOverflow())
+                    || (cr.isMalformed() && result[index].isMalformed())
+                    || (cr.isUnmappable() && result[index].isUnmappable()))
+                    || (cr.isError() && cr.length() != result[index].length())) {
+                errln("Incorrect result in " + converter + " for \"" + input[index] + "\"" + ", expected: " + result[index] + ", received:  " + cr);
+                break;
+            }
+        }
+    }
+    public void TestUTF8Converter() {
+        String converter = "UTF-8";
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName(converter);
+        CharsetEncoder encoder = icuChar.newEncoder();
+        CharsetDecoder decoder = icuChar.newDecoder();
+        ByteBuffer bs;
+        CharBuffer us;
+        CoderResult cr;
+
+        
+        int[] size = new int[] { 1<<7, 1<<11, 1<<16 }; // # of 1,2,3 byte combinations
+        byte[] bytes = new byte[size[0] + size[1]*2 + size[2]*3];
+        char[] chars = new char[size[0] + size[1] + size[2]];
+        int i = 0;
+        int x, y;
+        
+        // 0 to 1 << 7 (1 byters)
+        for (; i < size[0]; i++) {
+            bytes[i] = (byte) i;
+            chars[i] = (char) i;
+            bs = ByteBuffer.wrap(bytes, i, 1).slice();
+            us = CharBuffer.wrap(chars, i, 1).slice();
+            try {
+                smBufDecode(decoder, converter, bs, us, true, false, true);
+                smBufDecode(decoder, converter, bs, us, true, false, false);
+                smBufEncode(encoder, converter, us, bs, true, false, true);
+                smBufEncode(encoder, converter, us, bs, true, false, false);
+            } catch (Exception ex) {
+                errln("Incorrect result in " + converter + " for 0x"
+                        + Integer.toHexString(i));
+                break;
+            }
+        }
+
+        // 1 << 7 to 1 << 11 (2 byters)
+        for (; i < size[1]; i++) {
+            x = size[0] + i*2;
+            y = size[0] + i;
+            bytes[x + 0] = (byte) (0xc0 | ((i >> 6) & 0x1f));
+            bytes[x + 1] = (byte) (0x80 | ((i >> 0) & 0x3f));
+            chars[y] = (char) i;
+            bs = ByteBuffer.wrap(bytes, x, 2).slice();
+            us = CharBuffer.wrap(chars, y, 1).slice();
+            try {
+                smBufDecode(decoder, converter, bs, us, true, false, true);
+                smBufDecode(decoder, converter, bs, us, true, false, false);
+                smBufEncode(encoder, converter, us, bs, true, false, true);
+                smBufEncode(encoder, converter, us, bs, true, false, false);
+            } catch (Exception ex) {
+                errln("Incorrect result in " + converter + " for 0x"
+                        + Integer.toHexString(i));
+                break;
+            }
+        }
+
+        // 1 << 11 to 1 << 16 (3 byters and surrogates)
+        for (; i < size[2]; i++) {
+            x = size[0] + size[1] * 2 + i * 3;
+            y = size[0] + size[1] + i;
+            bytes[x + 0] = (byte) (0xe0 | ((i >> 12) & 0x0f));
+            bytes[x + 1] = (byte) (0x80 | ((i >> 6) & 0x3f));
+            bytes[x + 2] = (byte) (0x80 | ((i >> 0) & 0x3f));
+            chars[y] = (char) i;
+            if (!UTF16.isSurrogate((char)i)) {
+                bs = ByteBuffer.wrap(bytes, x, 3).slice();
+                us = CharBuffer.wrap(chars, y, 1).slice();
+                try {
+                    smBufDecode(decoder, converter, bs, us, true, false, true);
+                    smBufDecode(decoder, converter, bs, us, true, false, false);
+                    smBufEncode(encoder, converter, us, bs, true, false, true);
+                    smBufEncode(encoder, converter, us, bs, true, false, false);
+                } catch (Exception ex) {
+                    errln("Incorrect result in " + converter + " for 0x"
+                            + Integer.toHexString(i));
+                    break;
+                }
+            } else {
+                bs = ByteBuffer.wrap(bytes, x, 3).slice();
+                us = CharBuffer.wrap(chars, y, 1).slice();
+                
+                decoder.reset();
+                cr = decoder.decode(bs, us, true);
+                bs.rewind();
+                us.rewind();
+                if (!cr.isMalformed() || cr.length() != 3) {
+                    errln("Incorrect result in " + converter + " decoder for 0x"
+                            + Integer.toHexString(i) + " received " + cr);
+                    break;
+                }
+                encoder.reset();
+                cr = encoder.encode(us, bs, true);
+                bs.rewind();
+                us.rewind();
+                if (!cr.isMalformed() || cr.length() != 1) {
+                    errln("Incorrect result in " + converter + " encoder for 0x"
+                            + Integer.toHexString(i) + " received " + cr);
+                    break;
+                }
+                
+                bs = ByteBuffer.wrap(bytes, x, 3).slice();
+                us = CharBuffer.wrap(new String(chars, y, 1));
+                
+                decoder.reset();
+                cr = decoder.decode(bs, us, true);
+                bs.rewind();
+                us.rewind();
+                if (!cr.isMalformed() || cr.length() != 3) {
+                    errln("Incorrect result in " + converter + " decoder for 0x"
+                            + Integer.toHexString(i) + " received " + cr);
+                    break;
+                }
+                encoder.reset();
+                cr = encoder.encode(us, bs, true);
+                bs.rewind();
+                us.rewind();
+                if (!cr.isMalformed() || cr.length() != 1) {
+                    errln("Incorrect result in " + converter + " encoder for 0x"
+                            + Integer.toHexString(i) + " received " + cr);
+                    break;
+                }
+                
+                
+            }
+        }
+        if (true)
+            return;
+    }
+    
+    public void TestHZ() {
+        /* test input */
+        char[] in = new char[] {
+                0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2014,
+                0xFF5E, 0x2016, 0x2026, 0x007E, 0x997C, 0x70B3, 0x75C5, 0x5E76, 0x73BB, 0x83E0,
+                0x64AD, 0x62E8, 0x94B5, 0x000A, 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94,
+                0x4F2F, 0x5E1B, 0x8236, 0x000A, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355,
+                0x535C, 0x54FA, 0x8865, 0x000A, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8,
+                0x6016, 0x248F, 0x2490, 0x000A, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496,
+                0x2497, 0x2498, 0x2499, 0x000A, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477,
+                0x2478, 0x2479, 0x247A, 0x000A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480,
+                0x2481, 0x2482, 0x2483, 0x000A, 0x0041, 0x0043, 0x0044, 0x0045, 0x0046, 0x007E,
+                0x0048, 0x0049, 0x004A, 0x000A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,
+                0x0051, 0x0052, 0x0053, 0x000A, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+                0x005A, 0x005B, 0x005C, 0x000A
+          };
+        
+        String converter = "HZ";
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName(converter);
+        CharsetEncoder encoder = icuChar.newEncoder();
+        CharsetDecoder decoder = icuChar.newDecoder();
+        try {
+            CharBuffer start = CharBuffer.wrap(in);
+            ByteBuffer bytes = encoder.encode(start);
+            CharBuffer finish = decoder.decode(bytes);
+            
+            if (!equals(start, finish)) {
+                errln(converter + " roundtrip test failed: start does not match finish");
+                
+                char[] finishArray = new char[finish.limit()];
+                for (int i=0; i<finishArray.length; i++)
+                    finishArray[i] = finish.get(i);
+                
+                logln("start:  " + hex(in));
+                logln("finish: " + hex(finishArray));
+            }
+        } catch (CharacterCodingException ex) {
+            errln(converter + " roundtrip test failed: " + ex.getMessage());
+            ex.printStackTrace(System.err);
+        }
+        
+        /* For better code coverage */
+        CoderResult result = CoderResult.UNDERFLOW;
+        byte byteout[] = {
+                (byte)0x7e, (byte)0x7d, (byte)0x41,
+                (byte)0x7e, (byte)0x7b, (byte)0x21,
+        };
+        char charin[] = {
+                (char)0x0041, (char)0x0042, (char)0x3000
+        };
+        ByteBuffer bb = ByteBuffer.wrap(byteout);
+        CharBuffer cb = CharBuffer.wrap(charin);
+        int testLoopSize = 5;
+        int bbLimits[] = { 0, 1, 3, 4, 6};
+        int bbPositions[] = { 0, 0, 0, 3, 3 };
+        int ccPositions[] = { 0, 0, 0, 2, 2 };
+        for (int i = 0; i < testLoopSize; i++) {
+            encoder.reset();
+            bb.limit(bbLimits[i]);
+            bb.position(bbPositions[i]);
+            cb.position(ccPositions[i]);
+            result = encoder.encode(cb, bb, true);
+            
+            if (i < 3) {
+                if (!result.isOverflow()) {
+                    errln("Overflow buffer error should have occurred while encoding HZ (" + i + ")");
+                }
+            } else {
+                if (result.isError()) {
+                    errln("Error should not have occurred while encoding HZ.(" + i + ")");
+                }
+            }
+        }
+    }
+
+    public void TestUTF8Surrogates() {
+        byte[][] in = new byte[][] {
+            { (byte)0x61, },
+            { (byte)0xc2, (byte)0x80, },
+            { (byte)0xe0, (byte)0xa0, (byte)0x80, },
+            { (byte)0xf0, (byte)0x90, (byte)0x80, (byte)0x80, },
+            { (byte)0xf4, (byte)0x84, (byte)0x8c, (byte)0xa1, },
+            { (byte)0xf0, (byte)0x90, (byte)0x90, (byte)0x81, },
+        };
+
+        /* expected test results */
+        char[][] results = new char[][] {
+            /* number of bytes read, code point */
+            { '\u0061', },
+            { '\u0080', },
+            { '\u0800', },
+            { '\ud800', '\udc00', },      //  10000
+            { '\udbd0', '\udf21', },      // 104321
+            { '\ud801', '\udc01', },      //  10401
+        };
+
+        /* error test input */
+        byte[][] in2 = new byte[][] {
+            { (byte)0x61, },
+            { (byte)0xc0, (byte)0x80,                                     /* illegal non-shortest form */
+            (byte)0xe0, (byte)0x80, (byte)0x80,                           /* illegal non-shortest form */
+            (byte)0xf0, (byte)0x80, (byte)0x80, (byte)0x80,               /* illegal non-shortest form */
+            (byte)0xc0, (byte)0xc0,                                       /* illegal trail byte */
+            (byte)0xf4, (byte)0x90, (byte)0x80, (byte)0x80,               /* 0x110000 out of range */
+            (byte)0xf8, (byte)0x80, (byte)0x80, (byte)0x80, (byte)0x80,   /* too long */
+            (byte)0xfe,                                                   /* illegal byte altogether */
+            (byte)0x62, },
+        };
+
+        /* expected error test results */
+        char[][] results2 = new char[][] {
+            /* number of bytes read, code point */
+            { '\u0062', },
+            { '\u0062', },
+        };
+        
+        String converter = "UTF-8";
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName(converter);
+        CharsetDecoder decoder = icuChar.newDecoder();
+        
+        int i;
+        try {
+            for (i = 0; i < in.length; i++) {
+                ByteBuffer source = ByteBuffer.wrap(in[i]);
+                CharBuffer expected = CharBuffer.wrap(results[i]);
+                smBufDecode(decoder, converter, source, expected, true, false,
+                        true);
+                smBufDecode(decoder, converter, source, expected, true, false,
+                        false);
+            }
+        } catch (Exception ex) {
+            errln("Incorrect result in " + converter);
+        }
+        try {
+            for (i = 0; i < in2.length; i++) {
+                ByteBuffer source = ByteBuffer.wrap(in2[i]);
+                CharBuffer expected = CharBuffer.wrap(results2[i]);
+                decoder.onMalformedInput(CodingErrorAction.IGNORE);
+                smBufDecode(decoder, converter, source, expected, true, false,
+                        true);
+                smBufDecode(decoder, converter, source, expected, true, false,
+                        false);
+            }
+        } catch (Exception ex) {
+            errln("Incorrect result in " + converter);
+        }
+    }
+    
+    public void TestSurrogateBehavior() {
+        CharsetProviderICU icu = new CharsetProviderICU();
+        
+        // get all the converters into an array
+        Object[] converters = CharsetProviderICU.getAvailableNames();
+        
+        String norm = "a";
+        String ext = "\u0275"; // theta
+        String lead = "\ud835";
+        String trail = "\udd04";
+        // lead + trail = \U1d504 (fraktur capital A)
+        
+        String input = 
+                        // error    position
+                ext     // unmap(1) 1
+                + lead  // under    1  
+                + lead  // malf(1)  2
+                + trail // unmap(2) 4
+                + trail // malf(1)  5
+                + ext   // unmap(1) 6
+                + norm  // unmap(1) 7
+        ;
+        CoderResult[] results = new CoderResult[] {
+                CoderResult.unmappableForLength(1), // or underflow
+                CoderResult.UNDERFLOW,
+                CoderResult.malformedForLength(1),
+                CoderResult.unmappableForLength(2), // or underflow
+                CoderResult.malformedForLength(1),
+                CoderResult.unmappableForLength(1), // or underflow
+                CoderResult.unmappableForLength(1), // or underflow
+        };
+        int[] positions = new int[] { 1,1,2,4,5,6,7 };
+        int n = positions.length;
+        
+        int badcount = 0;
+        int goodcount = 0;
+        int[] uhohindices = new int[n];
+        int[] badposindices = new int[n];
+        int[] malfindices = new int[n];
+        int[] unmapindices = new int[n];
+        ArrayList pass = new ArrayList();
+        ArrayList exempt = new ArrayList();
+        
+        outer: for (int conv=0; conv<converters.length; conv++) {
+            String converter = (String)converters[conv];
+            if (converter.equals("x-IMAP-mailbox-name") || converter.equals("UTF-7") || converter.equals("CESU-8") || converter.equals("BOCU-1") ||
+                    converter.equals("x-LMBCS-1")) {
+                exempt.add(converter);
+                continue;
+            }
+            
+            boolean currentlybad = false;
+            Charset icuChar = icu.charsetForName(converter);
+            CharsetEncoder encoder = icuChar.newEncoder();
+            CoderResult cr;
+                
+            CharBuffer source = CharBuffer.wrap(input);
+            ByteBuffer target = ByteBuffer.allocate(30);
+            ByteBuffer expected = null;
+            try {
+                encoder.onUnmappableCharacter(CodingErrorAction.IGNORE);
+                encoder.onMalformedInput(CodingErrorAction.IGNORE);
+                expected = encoder.encode(CharBuffer.wrap(ext + lead + trail + ext + norm));
+                encoder.reset();
+            } catch (CharacterCodingException ex) {
+                errln("Unexpected CharacterCodingException: " + ex.getMessage());
+                return;
+            } catch (RuntimeException ex) {
+                if (!currentlybad) {currentlybad = true; badcount++; logln(""); }
+                errln(converter + " " + ex.getClass().getName() + ": " + ex.getMessage());
+                continue outer;
+            }
+            
+            encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+            encoder.onMalformedInput(CodingErrorAction.REPORT);
+            for (int i=0; i<n; i++) {
+                source.limit(i+1);
+                cr = encoder.encode(source, target, i == n - 1);
+                if (!(equals(cr, results[i])
+                        || (results[i].isUnmappable() && cr.isUnderflow()) // mappability depends on the converter
+                    )) {
+                    if (!currentlybad) {currentlybad = true; badcount++; logln(""); }
+                    if (results[i].isMalformed() && cr.isMalformed()) {
+                        malfindices[i]++;
+                    } else if (results[i].isUnmappable() && cr.isUnmappable()) {
+                        unmapindices[i]++;
+                    } else {
+                        uhohindices[i]++;
+                    }
+                    errln("(index=" + i + ") " + converter + " Received: " + cr + " Expected: " + results[i]);
+                }
+                if (source.position() != positions[i]) {
+                    if (!currentlybad) {currentlybad = true; badcount++; logln(""); }
+                    badposindices[i]++;
+                    errln("(index=" + i + ") " + converter + " Received: " + source.position() + " Expected: " + positions[i]);
+                }
+                    
+            }
+            encoder.reset();
+            
+            //System.out.println("\n" + hex(target.array()));
+            //System.out.println(hex(expected.array()) + "\n" + expected.limit());
+            if (!(equals(target, expected, expected.limit()) && target.position() == expected.limit())) {
+                if (!currentlybad) {currentlybad = true; badcount++; logln(""); }
+                errln(converter + " Received: \"" + hex(target.array()) + "\" Expected: \"" + hex(expected.array()) + "\"");
+            }
+            
+            if (!currentlybad) {
+                goodcount++;
+                pass.add(converter);
+            }
+        }
+        
+        logln("\n" + badcount + " / " + (converters.length - exempt.size()) + "   (" + goodcount + " good, " + badcount + " bad)");
+        log("index\t"); for (int i=0; i<n; i++) log(i + "\t"); logln("");
+        log("unmap\t"); for (int i=0; i<n; i++) log(unmapindices[i] + "\t"); logln("");
+        log("malf \t"); for (int i=0; i<n; i++) log(malfindices[i] + "\t"); logln("");
+        log("pos  \t"); for (int i=0; i<n; i++) log(badposindices[i] + "\t"); logln("");
+        log("uhoh \t"); for (int i=0; i<n; i++) log(uhohindices[i] + "\t"); logln("");
+        logln("");
+        log("The few that passed: "); for (int i=0; i<pass.size(); i++) log(pass.get(i) + ", "); logln(""); 
+        log("The few that are exempt: "); for (int i=0; i<exempt.size(); i++) log(exempt.get(i) + ", "); logln(""); 
+    }
+    
+//    public void TestCharsetCallback() {
+//        String currentTest = "initialization";
+//        try {
+//            Class[] params;
+//            
+//            // get the classes
+//            Class CharsetCallback = Class.forName("com.ibm.icu.charset.CharsetCallback");
+//            Class Decoder = Class.forName("com.ibm.icu.charset.CharsetCallback$Decoder");
+//            Class Encoder = Class.forName("com.ibm.icu.charset.CharsetCallback$Encoder");
+//            
+//            // set up encoderCall
+//            params = new Class[] {CharsetEncoderICU.class, Object.class, 
+//                    CharBuffer.class, ByteBuffer.class, IntBuffer.class, 
+//                    char[].class, int.class, int.class, CoderResult.class };
+//            Method encoderCall = Encoder.getDeclaredMethod("call", params);
+//            
+//            // set up decoderCall
+//            params = new Class[] {CharsetDecoderICU.class, Object.class, 
+//                    ByteBuffer.class, CharBuffer.class, IntBuffer.class,
+//                    char[].class, int.class, CoderResult.class};
+//            Method decoderCall = Decoder.getDeclaredMethod("call", params);
+//            
+//            // get relevant fields
+//            Object SUB_STOP_ON_ILLEGAL = getFieldValue(CharsetCallback, "SUB_STOP_ON_ILLEGAL", null);
+//            
+//            // set up a few arguments
+//            CharsetProvider provider = new CharsetProviderICU();
+//            Charset charset = provider.charsetForName("UTF-8");
+//            CharsetEncoderICU encoder = (CharsetEncoderICU)charset.newEncoder();
+//            CharsetDecoderICU decoder = (CharsetDecoderICU)charset.newDecoder();
+//            CharBuffer chars = CharBuffer.allocate(10);
+//            chars.put('o');
+//            chars.put('k');
+//            ByteBuffer bytes = ByteBuffer.allocate(10);
+//            bytes.put((byte)'o');
+//            bytes.put((byte)'k');
+//            IntBuffer offsets = IntBuffer.allocate(10);
+//            offsets.put(0);
+//            offsets.put(1);
+//            char[] buffer = null;
+//            Integer length = new Integer(2);
+//            Integer cp = new Integer(0);
+//            CoderResult unmap = CoderResult.unmappableForLength(2);
+//            CoderResult malf = CoderResult.malformedForLength(2);
+//            CoderResult under = CoderResult.UNDERFLOW;
+//            
+//            // set up error arrays
+//            Integer invalidCharLength = new Integer(1);
+//            Byte subChar1 = new Byte((byte)0);
+//            Byte subChar1_alternate = new Byte((byte)1); // for TO_U_CALLBACK_SUBSTITUTE
+//            
+//            // set up chars and bytes backups and expected values for certain cases
+//            CharBuffer charsBackup = bufferCopy(chars);
+//            ByteBuffer bytesBackup = bufferCopy(bytes);
+//            IntBuffer offsetsBackup = bufferCopy(offsets);
+//            CharBuffer encoderCharsExpected = bufferCopy(chars);
+//            ByteBuffer encoderBytesExpected = bufferCopy(bytes);
+//            IntBuffer encoderOffsetsExpected = bufferCopy(offsets);
+//            CharBuffer decoderCharsExpected1 = bufferCopy(chars);
+//            CharBuffer decoderCharsExpected2 = bufferCopy(chars);
+//            IntBuffer decoderOffsetsExpected1 = bufferCopy(offsets);
+//            IntBuffer decoderOffsetsExpected2 = bufferCopy(offsets);
+//            
+//            // initialize fields to obtain expected data
+//            setFieldValue(CharsetDecoderICU.class, "invalidCharLength", decoder, invalidCharLength);
+//            setFieldValue(CharsetICU.class, "subChar1", ((CharsetICU) decoder.charset()), subChar1);
+//            
+//            // run cbFromUWriteSub
+//            Method cbFromUWriteSub = CharsetEncoderICU.class.getDeclaredMethod("cbFromUWriteSub", new Class[] { CharsetEncoderICU.class, CharBuffer.class, ByteBuffer.class, IntBuffer.class});
+//            cbFromUWriteSub.setAccessible(true);
+//            CoderResult encoderResultExpected = (CoderResult)cbFromUWriteSub.invoke(encoder, new Object[] {encoder, encoderCharsExpected, encoderBytesExpected, encoderOffsetsExpected});
+//            
+//            // run toUWriteUChars with normal data
+//            Method toUWriteUChars = CharsetDecoderICU.class.getDeclaredMethod("toUWriteUChars", new Class[] { CharsetDecoderICU.class, char[].class, int.class, int.class, CharBuffer.class, IntBuffer.class, int.class});
+//            toUWriteUChars.setAccessible(true);
+//            CoderResult decoderResultExpected1 = (CoderResult)toUWriteUChars.invoke(decoder, new Object[] {decoder, new char[] {0xFFFD}, new Integer(0), new Integer(1), decoderCharsExpected1, decoderOffsetsExpected1, new Integer(bytes.position())});
+//            
+//            // reset certain fields
+//            setFieldValue(CharsetDecoderICU.class, "invalidCharLength", decoder, invalidCharLength);
+//            setFieldValue(CharsetICU.class, "subChar1", ((CharsetICU) decoder.charset()), subChar1_alternate);
+//            
+//            // run toUWriteUChars again
+//            CoderResult decoderResultExpected2 = (CoderResult)toUWriteUChars.invoke(decoder, new Object[] {decoder, new char[] {0x1A}, new Integer(0), new Integer(1), decoderCharsExpected2, decoderOffsetsExpected2, new Integer(bytes.position())});
+//            
+//            // begin creating the tests array
+//            ArrayList tests = new ArrayList();
+//            
+//            // create tests for FROM_U_CALLBACK_SKIP   0
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SKIP", new Object[] { encoder, null, chars, bytes, offsets, buffer, length, cp, null }, under, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SKIP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SKIP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, unmap }, under, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SKIP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL + "xx", chars, bytes, offsets, buffer, length, cp, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            
+//            // create tests for TO_U_CALLBACK_SKIP    4
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SKIP", new Object[] { decoder, null, bytes, chars, offsets, buffer, length, null }, under, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SKIP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL, bytes, chars, offsets, buffer, length, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SKIP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL, bytes, chars, offsets, buffer, length, unmap }, under, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SKIP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL + "xx", bytes, chars, offsets, buffer, length, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            
+//            // create tests for FROM_U_CALLBACK_STOP   8
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_STOP", new Object[] { encoder, null, chars, bytes, offsets, buffer, length, cp, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_STOP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_STOP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, unmap }, unmap, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_STOP", new Object[] { encoder, SUB_STOP_ON_ILLEGAL + "xx", chars, bytes, offsets, buffer, length, cp, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            
+//            // create tests for TO_U_CALLBACK_STOP   12
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_STOP", new Object[] { decoder, null, bytes, chars, offsets, buffer, length, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_STOP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL, bytes, chars, offsets, buffer, length, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_STOP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL, bytes, chars, offsets, buffer, length, unmap }, unmap, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_STOP", new Object[] { decoder, SUB_STOP_ON_ILLEGAL + "xx", bytes, chars, offsets, buffer, length, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { invalidCharLength, subChar1 }});
+//            
+//            // create tests for FROM_U_CALLBACK_SUBSTITUTE  16
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SUBSTITUTE", new Object[] { encoder, null, chars, bytes, offsets, buffer, length, cp, null }, encoderResultExpected, encoderCharsExpected, encoderBytesExpected, encoderOffsetsExpected, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SUBSTITUTE", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, malf }, malf, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SUBSTITUTE", new Object[] { encoder, SUB_STOP_ON_ILLEGAL, chars, bytes, offsets, buffer, length, cp, unmap }, encoderResultExpected, encoderCharsExpected, encoderBytesExpected, encoderOffsetsExpected, new Object[] { }});
+//            tests.add(new Object[] {encoderCall, "FROM_U_CALLBACK_SUBSTITUTE", new Object[] { encoder, SUB_STOP_ON_ILLEGAL + "xx", chars, bytes, offsets, buffer, length, cp, null }, null, charsBackup, bytesBackup, offsetsBackup, new Object[] { }});
+//            
+//            // create tests for TO_U_CALLBACK_SUBSTITUTE   20
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SUBSTITUTE", new Object[] { decoder, null, bytes, chars, offsets, buffer, length, null }, decoderResultExpected1, decoderCharsExpected1, bytesBackup, decoderOffsetsExpected1, new Object[] { invalidCharLength, subChar1 }});
+//            tests.add(new Object[] {decoderCall, "TO_U_CALLBACK_SUBSTITUTE", new Object[] { decoder, null, bytes, chars, offsets, buffer, length, null }, decoderResultExpected2, decoderCharsExpected2, bytesBackup, decoderOffsetsExpected2, new Object[] { invalidCharLength, subChar1_alternate }});
+//            
+//            Iterator iter = tests.iterator();
+//            for (int i=0; iter.hasNext(); i++) {
+//                // get the data out of the map
+//                Object[] next = (Object[])iter.next();
+//                
+//                Method method = (Method)next[0];
+//                String fieldName = (String)next[1];
+//                Object field = getFieldValue(CharsetCallback, fieldName, null);
+//                Object[] args = (Object[])next[2];
+//                CoderResult expected = (CoderResult)next[3];
+//                CharBuffer charsExpected = (CharBuffer)next[4];
+//                ByteBuffer bytesExpected = (ByteBuffer)next[5];
+//                IntBuffer offsetsExpected = (IntBuffer)next[6];
+//                
+//                // set up error arrays and certain fields
+//                Object[] values = (Object[])next[7];
+//                if (method == decoderCall) {
+//                    decoder.reset();
+//                    setFieldValue(CharsetDecoderICU.class, "invalidCharLength", decoder, values[0]);
+//                    setFieldValue(CharsetICU.class, "subChar1", ((CharsetICU) decoder.charset()), values[1]);
+//                } else if (method == encoderCall) {
+//                    encoder.reset();
+//                }
+//                
+//                try {
+//                    // invoke the method
+//                    CoderResult actual = (CoderResult)method.invoke(field, args);
+//                    
+//                    // if expected != actual
+//                    if (!coderResultsEqual(expected, actual)) {
+//                        // case #i refers to the index in the arraylist tests
+//                        errln(fieldName + " failed to return the correct result for case #" + i + ".");
+//                    }
+//                    // if the expected buffers != actual buffers
+//                    else if (!(buffersEqual(chars, charsExpected) && 
+//                            buffersEqual(bytes, bytesExpected) &&
+//                            buffersEqual(offsets, offsetsExpected))) {
+//                        // case #i refers to the index in the arraylist tests
+//                        errln(fieldName + " did not perform the correct operation on the buffers for case #" + i + ".");
+//                    }
+//                } catch (InvocationTargetException ex)  {
+//                    // case #i refers to the index in the arraylist tests
+//                    errln(fieldName + " threw an exception for case #" + i + ": " + ex.getCause());
+//                    //ex.getCause().printStackTrace();
+//                }
+//                
+//                // reset the buffers
+//                System.arraycopy(bytesBackup.array(), 0, bytes.array(), 0, 10);
+//                System.arraycopy(charsBackup.array(), 0, chars.array(), 0, 10);
+//                System.arraycopy(offsetsBackup.array(), 0, offsets.array(), 0, 10);
+//                bytes.position(bytesBackup.position());
+//                chars.position(charsBackup.position());
+//                offsets.position(offsetsBackup.position());
+//            }
+//            
+//        } catch (Exception ex) {
+//            errln("TestCharsetCallback skipped due to " + ex.toString());
+//            ex.printStackTrace();
+//        }
+//    }
+//    
+//    private Object getFieldValue(Class c, String name, Object instance) throws Exception {
+//        Field field = c.getDeclaredField(name);
+//        field.setAccessible(true);
+//        return field.get(instance);
+//    }
+//    private void setFieldValue(Class c, String name, Object instance, Object value) throws Exception {
+//        Field field = c.getDeclaredField(name);
+//        field.setAccessible(true);
+//        if (value instanceof Boolean)
+//            field.setBoolean(instance, ((Boolean)value).booleanValue());
+//        else if (value instanceof Byte)
+//            field.setByte(instance, ((Byte)value).byteValue());
+//        else if (value instanceof Character)
+//            field.setChar(instance, ((Character)value).charValue());
+//        else if (value instanceof Double)
+//            field.setDouble(instance, ((Double)value).doubleValue());
+//        else if (value instanceof Float)
+//            field.setFloat(instance, ((Float)value).floatValue());
+//        else if (value instanceof Integer)
+//            field.setInt(instance, ((Integer)value).intValue());
+//        else if (value instanceof Long)
+//            field.setLong(instance, ((Long)value).longValue());
+//        else if (value instanceof Short)
+//            field.setShort(instance, ((Short)value).shortValue());
+//        else
+//            field.set(instance, value);
+//    }
+//    private boolean coderResultsEqual(CoderResult a, CoderResult b) {
+//        if (a == null && b == null)
+//            return true;
+//        if (a == null || b == null)
+//            return false;
+//        if ((a.isUnderflow() && b.isUnderflow()) || (a.isOverflow() && b.isOverflow()))
+//            return true;
+//        if (a.length() != b.length())
+//            return false;
+//        if ((a.isMalformed() && b.isMalformed()) || (a.isUnmappable() && b.isUnmappable()))
+//            return true;
+//        return false;
+//    }
+//    private boolean buffersEqual(ByteBuffer a, ByteBuffer b) {
+//        if (a.position() != b.position())
+//            return false;
+//        int limit = a.position();
+//        for (int i=0; i<limit; i++)
+//            if (a.get(i) != b.get(i))
+//                return false;
+//        return true;
+//    }
+//    private boolean buffersEqual(CharBuffer a, CharBuffer b) {
+//        if (a.position() != b.position())
+//            return false;
+//        int limit = a.position();
+//        for (int i=0; i<limit; i++)
+//            if (a.get(i) != b.get(i))
+//                return false;
+//        return true;
+//    }
+//    private boolean buffersEqual(IntBuffer a, IntBuffer b) {
+//        if (a.position() != b.position())
+//            return false;
+//        int limit = a.position();
+//        for (int i=0; i<limit; i++)
+//            if (a.get(i) != b.get(i))
+//                return false;
+//        return true;
+//    }
+//    private ByteBuffer bufferCopy(ByteBuffer src) {
+//        ByteBuffer dest = ByteBuffer.allocate(src.limit());
+//        System.arraycopy(src.array(), 0, dest.array(), 0, src.limit());
+//        dest.position(src.position());
+//        return dest;
+//    }
+//    private CharBuffer bufferCopy(CharBuffer src) {
+//        CharBuffer dest = CharBuffer.allocate(src.limit());
+//        System.arraycopy(src.array(), 0, dest.array(), 0, src.limit());
+//        dest.position(src.position());
+//        return dest;
+//    }
+//    private IntBuffer bufferCopy(IntBuffer src) {
+//        IntBuffer dest = IntBuffer.allocate(src.limit());
+//        System.arraycopy(src.array(), 0, dest.array(), 0, src.limit());
+//        dest.position(src.position());
+//        return dest;
+//    }
+    
+
+    public void TestAPISemantics(/*String encoding*/) 
+                throws Exception {
+        int rc;
+        ByteBuffer byes = ByteBuffer.wrap(byteStr);
+        CharBuffer uniVal = CharBuffer.wrap(unistr);
+        ByteBuffer expected = ByteBuffer.wrap(expectedByteStr);
+        
+        rc = 0;
+        if(m_decoder==null){
+            warnln("Could not load decoder.");
+            return;
+        }
+        m_decoder.reset();
+        /* Convert the whole buffer to Unicode */
+        try {
+            CharBuffer chars = CharBuffer.allocate(unistr.length());
+            CoderResult result = m_decoder.decode(byes, chars, false);
+
+            if (result.isError()) {
+                errln("ToChars encountered Error");
+                rc = 1;
+            }
+            if (result.isOverflow()) {
+                errln("ToChars encountered overflow exception");
+                rc = 1;
+            }
+            if (!equals(chars, unistr)) {
+                errln("ToChars does not match");
+                printchars(chars);
+                errln("Expected : ");
+                printchars(unistr);
+                rc = 2;
+            }
+
+        } catch (Exception e) {
+            errln("ToChars - exception in buffer");
+            rc = 5;
+        }
+
+        /* Convert single bytes to Unicode */
+        try {
+            CharBuffer chars = CharBuffer.allocate(unistr.length());
+            ByteBuffer b = ByteBuffer.wrap(byteStr);
+            m_decoder.reset();
+            CoderResult result=null;
+            for (int i = 1; i <= byteStr.length; i++) {
+                b.limit(i);
+                result = m_decoder.decode(b, chars, false);
+                if(result.isOverflow()){
+                    errln("ToChars single threw an overflow exception");
+                }
+                if (result.isError()) {
+                    errln("ToChars single the result is an error "+result.toString());
+                } 
+            }
+            if (unistr.length() != (chars.limit())) {
+                errln("ToChars single len does not match");
+                rc = 3;
+            }
+            if (!equals(chars, unistr)) {
+                errln("ToChars single does not match");
+                printchars(chars);
+                rc = 4;
+            }
+        } catch (Exception e) {
+            errln("ToChars - exception in single");
+            //e.printStackTrace();
+            rc = 6;
+        }
+
+        /* Convert the buffer one at a time to Unicode */
+        try {
+            CharBuffer chars = CharBuffer.allocate(unistr.length());
+            m_decoder.reset();
+            byes.rewind();
+            for (int i = 1; i <= byteStr.length; i++) {
+                byes.limit(i);
+                CoderResult result = m_decoder.decode(byes, chars, false);
+                if (result.isError()) {
+                    errln("Error while decoding: "+result.toString());
+                }
+                if(result.isOverflow()){
+                    errln("ToChars Simple threw an overflow exception");
+                }
+            }
+            if (chars.limit() != unistr.length()) {
+                errln("ToChars Simple buffer len does not match");
+                rc = 7;
+            }
+            if (!equals(chars, unistr)) {
+                errln("ToChars Simple buffer does not match");
+                printchars(chars);
+                err(" Expected : ");
+                printchars(unistr);
+                rc = 8;
+            }
+        } catch (Exception e) {
+            errln("ToChars - exception in single buffer");
+            //e.printStackTrace(System.err);
+            rc = 9;
+        }
+        if (rc != 0) {
+            errln("Test Simple ToChars for encoding : FAILED");
+        }
+
+        rc = 0;
+        /* Convert the whole buffer from unicode */
+        try {
+            ByteBuffer bytes = ByteBuffer.allocate(expectedByteStr.length);
+            m_encoder.reset();
+            CoderResult result = m_encoder.encode(uniVal, bytes, false);
+            if (result.isError()) {
+                errln("FromChars reported error: " + result.toString());
+                rc = 1;
+            }
+            if(result.isOverflow()){
+                errln("FromChars threw an overflow exception");
+            }
+            bytes.position(0);
+            if (!bytes.equals(expected)) {
+                errln("FromChars does not match");
+                printbytes(bytes);
+                printbytes(expected);
+                rc = 2;
+            }
+        } catch (Exception e) {
+            errln("FromChars - exception in buffer");
+            //e.printStackTrace(System.err);
+            rc = 5;
+        }
+
+        /* Convert the buffer one char at a time to unicode */
+        try {
+            ByteBuffer bytes = ByteBuffer.allocate(expectedByteStr.length);
+            CharBuffer c = CharBuffer.wrap(unistr);
+            m_encoder.reset();
+            CoderResult result= null;
+            for (int i = 1; i <= unistr.length(); i++) {
+                c.limit(i);
+                result = m_encoder.encode(c, bytes, false);
+                if(result.isOverflow()){
+                    errln("FromChars single threw an overflow exception");
+                }
+                if(result.isError()){
+                    errln("FromChars single threw an error: "+ result.toString());
+                }
+            }
+            if (expectedByteStr.length != bytes.limit()) {
+                errln("FromChars single len does not match");
+                rc = 3;
+            }
+
+            bytes.position(0);
+            if (!bytes.equals(expected)) {
+                errln("FromChars single does not match");
+                printbytes(bytes);
+                printbytes(expected);
+                rc = 4;
+            }
+
+        } catch (Exception e) {
+            errln("FromChars - exception in single");
+            //e.printStackTrace(System.err);
+            rc = 6;
+        }
+
+        /* Convert one char at a time to unicode */
+        try {
+            ByteBuffer bytes = ByteBuffer.allocate(expectedByteStr.length);
+            m_encoder.reset();
+            char[] temp = unistr.toCharArray();
+            CoderResult result=null;
+            for (int i = 0; i <= temp.length; i++) {
+                uniVal.limit(i);
+                result = m_encoder.encode(uniVal, bytes, false);
+                if(result.isOverflow()){
+                    errln("FromChars simple threw an overflow exception");
+                }
+                if(result.isError()){
+                    errln("FromChars simple threw an error: "+ result.toString());
+                }
+            }
+            if (bytes.limit() != expectedByteStr.length) {
+                errln("FromChars Simple len does not match");
+                rc = 7;
+            }
+            if (!bytes.equals(byes)) {
+                errln("FromChars Simple does not match");
+                printbytes(bytes);
+                printbytes(byes);
+                rc = 8;
+            }
+        } catch (Exception e) {
+            errln("FromChars - exception in single buffer");
+            //e.printStackTrace(System.err);
+            rc = 9;
+        }
+        if (rc != 0) {
+            errln("Test Simple FromChars " + m_encoding + " --FAILED");
+        }
+    }
+
+    void printchars(CharBuffer buf) {
+        int i;
+        char[] chars = new char[buf.limit()];
+        //save the current position
+        int pos = buf.position();
+        buf.position(0);
+        buf.get(chars);
+        //reset to old position
+        buf.position(pos);
+        for (i = 0; i < chars.length; i++) {
+            err(hex(chars[i]) + " ");
+        }
+        errln("");
+    }
+    void printchars(String str) {
+        char[] chars = str.toCharArray();
+        for (int i = 0; i < chars.length; i++) {
+            err(hex(chars[i]) + " ");
+        }
+        errln("");
+    }
+    void printbytes(ByteBuffer buf) {
+        int i;
+        byte[] bytes = new byte[buf.limit()];
+        //save the current position
+        int pos = buf.position();
+        buf.position(0);
+        buf.get(bytes);
+        //reset to old position
+        buf.position(pos);
+        for (i = 0; i < bytes.length; i++) {
+            System.out.print(hex(bytes[i]) + " ");
+        }
+        errln("");
+    }
+
+    public boolean equals(CoderResult a, CoderResult b) {
+        return (a.isUnderflow() && b.isUnderflow())
+                || (a.isOverflow() && b.isOverflow())
+                || (a.isMalformed() && b.isMalformed() && a.length() == b.length())
+                || (a.isUnmappable() && b.isUnmappable() && a.length() == b.length());
+    }
+    public boolean equals(CharBuffer buf, String str) {
+        return equals(buf, str.toCharArray());
+    }
+    public boolean equals(CharBuffer buf, CharBuffer str) {
+        if (buf.limit() != str.limit())
+            return false;
+        int limit = buf.limit();
+        for (int i = 0; i < limit; i++)
+            if (buf.get(i) != str.get(i))
+                return false;
+        return true;
+    }
+    public boolean equals(CharBuffer buf, CharBuffer str, int limit) {
+        if (limit > buf.limit() || limit > str.limit())
+            return false;
+        for (int i = 0; i < limit; i++)
+            if (buf.get(i) != str.get(i))
+                return false;
+        return true;
+    }
+    public boolean equals(CharBuffer buf, char[] compareTo) {
+        char[] chars = new char[buf.limit()];
+        //save the current position
+        int pos = buf.position();
+        buf.position(0);
+        buf.get(chars);
+        //reset to old position
+        buf.position(pos);
+        return equals(chars, compareTo);
+    }
+
+    public boolean equals(char[] chars, char[] compareTo) {
+        if (chars.length != compareTo.length) {
+            errln(
+                "Length does not match chars: "
+                    + chars.length
+                    + " compareTo: "
+                    + compareTo.length);
+            return false;
+        } else {
+            boolean result = true;
+            for (int i = 0; i < chars.length; i++) {
+                if (chars[i] != compareTo[i]) {    
+                    logln(
+                        "Got: "
+                            + hex(chars[i])
+                            + " Expected: "
+                            + hex(compareTo[i])
+                            + " At: "
+                            + i);
+                    result = false;
+                }
+            }
+            return result;
+        }
+    }
+
+    public boolean equals(ByteBuffer buf, byte[] compareTo) {
+        byte[] chars = new byte[buf.limit()];
+        //save the current position
+        int pos = buf.position();
+        buf.position(0);
+        buf.get(chars);
+        //reset to old position
+        buf.position(pos);
+        return equals(chars, compareTo);
+    }
+    public boolean equals(ByteBuffer buf, ByteBuffer compareTo) {
+        if (buf.limit() != compareTo.limit())
+            return false;
+        int limit = buf.limit();
+        for (int i = 0; i < limit; i++)
+            if (buf.get(i) != compareTo.get(i))
+                return false;
+        return true;
+    }
+    public boolean equals(ByteBuffer buf, ByteBuffer compareTo, int limit) {
+        if (limit > buf.limit() || limit > compareTo.limit())
+            return false;
+        for (int i = 0; i < limit; i++)
+            if (buf.get(i) != compareTo.get(i))
+                return false;
+        return true;
+    }
+    public boolean equals(byte[] chars, byte[] compareTo) {
+        if (false/*chars.length != compareTo.length*/) {
+            errln(
+                "Length does not match chars: "
+                    + chars.length
+                    + " compareTo: "
+                    + compareTo.length);
+            return false;
+        } else {
+            boolean result = true;
+            for (int i = 0; i < chars.length; i++) {
+                if (chars[i] != compareTo[i]) {
+                    logln(
+                        "Got: "
+                            + hex(chars[i])
+                            + " Expected: "
+                            + hex(compareTo[i])
+                            + " At: "
+                            + i);
+                    result = false;
+                }
+            }
+            return result;
+        }
+    }
+
+//  TODO
+  /*
+    public void TestCallback(String encoding) throws Exception {
+        
+        byte[] gbSource =
+            {
+                (byte) 0x81,
+                (byte) 0x36,
+                (byte) 0xDE,
+                (byte) 0x36,
+                (byte) 0x81,
+                (byte) 0x36,
+                (byte) 0xDE,
+                (byte) 0x37,
+                (byte) 0x81,
+                (byte) 0x36,
+                (byte) 0xDE,
+                (byte) 0x38,
+                (byte) 0xe3,
+                (byte) 0x32,
+                (byte) 0x9a,
+                (byte) 0x36 };
+
+        char[] subChars = { 'P', 'I' };
+
+        decoder.reset();
+
+        decoder.replaceWith(new String(subChars));
+        ByteBuffer mySource = ByteBuffer.wrap(gbSource);
+        CharBuffer myTarget = CharBuffer.allocate(5);
+
+        decoder.decode(mySource, myTarget, true);
+        char[] expectedResult =
+            { '\u22A6', '\u22A7', '\u22A8', '\u0050', '\u0049', };
+
+        if (!equals(myTarget, new String(expectedResult))) {
+            errln("Test callback GB18030 to Unicode : FAILED");
+        }
+        
+    }
+*/
+    public void TestCanConvert(/*String encoding*/)throws Exception {
+        char[] mySource = { 
+            '\ud800', '\udc00',/*surrogate pair */
+            '\u22A6','\u22A7','\u22A8','\u22A9','\u22AA',
+            '\u22AB','\u22AC','\u22AD','\u22AE','\u22AF',
+            '\u22B0','\u22B1','\u22B2','\u22B3','\u22B4',
+            '\ud800','\udc00',/*surrogate pair */
+            '\u22B5','\u22B6','\u22B7','\u22B8','\u22B9',
+            '\u22BA','\u22BB','\u22BC','\u22BD','\u22BE' 
+            };
+        if(m_encoder==null){
+            warnln("Could not load encoder.");
+            return;
+        }
+        m_encoder.reset();
+        if (!m_encoder.canEncode(new String(mySource))) {
+            errln("Test canConvert() " + m_encoding + " failed. "+m_encoder);
+        }
+
+    }
+    public void TestAvailableCharsets() {
+        SortedMap map = Charset.availableCharsets();
+        Set keySet = map.keySet();
+        Iterator iter = keySet.iterator();
+        while(iter.hasNext()){
+            logln("Charset name: "+iter.next().toString());
+        }
+        Object[] charsets = CharsetProviderICU.getAvailableNames();
+        int mapSize = map.size();
+        if(mapSize < charsets.length){
+            errln("Charset.availableCharsets() returned a number less than the number returned by icu. ICU: " + charsets.length
+                    + " JDK: " + mapSize);
+        }
+        logln("Total Number of chasets = " + map.size());
+    }
+    /* ticket 5580 */
+    public void TestJavaCanonicalNameOnAvailableCharsets() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Iterator allCharsets = provider.charsets();
+        String errorMessage = null;
+        
+        while (allCharsets.hasNext()) {
+            Charset _chset = (Charset)allCharsets.next();
+            Charset chset = Charset.forName(_chset.name());
+            
+            if (!chset.name().equals(_chset.name())) {
+                if (errorMessage == null) {
+                    errorMessage = new String("Error: Charset.forName( " + _chset.name() + " ) returned " + chset + " instead of " + _chset);
+                } else {
+                    errorMessage = errorMessage + "\nError: Charset.forName( " + _chset.name() + " ) returned " + chset + " instead of " + _chset;
+                }
+            }
+        }
+        
+        if (errorMessage != null) {
+            errln(errorMessage);
+        }
+    }
+    
+    public void TestWindows936(){
+        CharsetProviderICU icu = new CharsetProviderICU();
+        Charset cs = icu.charsetForName("windows-936-2000");
+        String canonicalName = cs.name();
+        if(!canonicalName.equals("GBK")){
+            errln("Did not get the expected canonical name. Got: "+canonicalName); //get the canonical name
+        }
+    }
+    
+    public void TestICUAvailableCharsets() {
+        CharsetProviderICU icu = new CharsetProviderICU();
+        Object[] charsets = CharsetProviderICU.getAvailableNames();
+        for(int i=0;i<charsets.length;i++){
+            Charset cs = icu.charsetForName((String)charsets[i]);
+            try{
+                CharsetEncoder encoder = cs.newEncoder();
+                if(encoder!=null){
+                    logln("Creation of encoder succeeded. "+cs.toString());
+                }
+            }catch(Exception ex){
+                errln("Could not instantiate encoder for "+charsets[i]+". Error: "+ex.toString());
+            }
+            try{
+                CharsetDecoder decoder = cs.newDecoder();
+                if(decoder!=null){
+                    logln("Creation of decoder succeeded. "+cs.toString());
+                }
+            }catch(Exception ex){
+                errln("Could not instantiate decoder for "+charsets[i]+". Error: "+ex.toString());
+            }
+        }
+    }
+    /* jitterbug 4312 */
+    public void TestUnsupportedCharset(){
+        CharsetProvider icu = new CharsetProviderICU();
+        Charset icuChar = icu.charsetForName("impossible");
+        if(icuChar != null){
+            errln("ICU does not conform to the spec");
+        }
+    }
+
+
+    public void TestEncoderCreation(){
+        try{
+            Charset cs = Charset.forName("GB_2312-80");
+            CharsetEncoder enc = cs.newEncoder();
+            if(enc!=null && (enc instanceof CharsetEncoderICU) ){
+                logln("Successfully created the encoder: "+ enc);
+            }else{
+                errln("Error creating charset encoder.");
+            }
+        }catch(Exception e){
+            warnln("Error creating charset encoder."+ e.toString());
+           // e.printStackTrace();
+        }
+        try{
+            Charset cs = Charset.forName("x-ibm-971_P100-1995");
+            CharsetEncoder enc = cs.newEncoder();
+            if(enc!=null && (enc instanceof CharsetEncoderICU) ){
+                logln("Successfully created the encoder: "+ enc);
+            }else{
+                errln("Error creating charset encoder.");
+            }
+        }catch(Exception e){
+            warnln("Error creating charset encoder."+ e.toString());
+        }
+    }
+    public void TestSubBytes(){
+        try{
+            //create utf-8 decoder
+            CharsetDecoder decoder = new CharsetProviderICU().charsetForName("utf-8").newDecoder();
+    
+            //create a valid byte array, which can be decoded to " buffer"
+            byte[] unibytes = new byte[] { 0x0020, 0x0062, 0x0075, 0x0066, 0x0066, 0x0065, 0x0072 };
+    
+            ByteBuffer buffer = ByteBuffer.allocate(20);
+    
+            //add a evil byte to make the byte buffer be malformed input
+            buffer.put((byte)0xd8);
+    
+            //put the valid byte array
+            buffer.put(unibytes);
+    
+            //reset postion
+            buffer.flip();  
+            
+            decoder.onMalformedInput(CodingErrorAction.REPLACE);
+            CharBuffer out = decoder.decode(buffer);
+            String expected = "\ufffd buffer";
+            if(!expected.equals(new String(out.array()))){
+                errln("Did not get the expected result for substitution chars. Got: "+
+                       new String(out.array()) + "("+ hex(out.array())+")");
+            }
+            logln("Output: "+  new String(out.array()) + "("+ hex(out.array())+")");
+        }catch (CharacterCodingException ex){
+            errln("Unexpected exception: "+ex.toString());
+        }
+    }
+    /*
+    public void TestImplFlushFailure(){
+   
+       try{
+           CharBuffer in = CharBuffer.wrap("\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F");
+           CharsetEncoder encoder = new CharsetProviderICU().charsetForName("iso-2022-jp").newEncoder();
+           ByteBuffer out = ByteBuffer.allocate(30);
+           encoder.encode(in, out, true);
+           encoder.flush(out);
+           if(out.position()!= 20){
+               errln("Did not get the expected position from flush");
+           }
+           
+       }catch (Exception ex){
+           errln("Could not create encoder for  iso-2022-jp exception: "+ex.toString());
+       } 
+    }
+   */
+    public void TestISO88591() {
+       
+        Charset cs = new CharsetProviderICU().charsetForName("iso-8859-1");
+        if(cs!=null){
+            CharsetEncoder encoder = cs.newEncoder();
+            if(encoder!=null){
+                encoder.canEncode("\uc2a3");
+            }else{
+                errln("Could not create encoder for iso-8859-1");
+            }
+        }else{
+            errln("Could not create Charset for iso-8859-1");
+        }
+        
+    }
+    public void TestUTF8Encode() {
+        CharsetEncoder encoderICU = new CharsetProviderICU().charsetForName("utf-8").newEncoder();
+        ByteBuffer out = ByteBuffer.allocate(30);
+        CoderResult result = encoderICU.encode(CharBuffer.wrap("\ud800"), out, true);
+        
+        if (result.isMalformed()) {
+            logln("\\ud800 is malformed for ICU4JNI utf-8 encoder");
+        } else if (result.isUnderflow()) {
+            errln("\\ud800 is OK for ICU4JNI utf-8 encoder");
+        }
+
+        CharsetEncoder encoderJDK = Charset.forName("utf-8").newEncoder();
+        result = encoderJDK.encode(CharBuffer.wrap("\ud800"), ByteBuffer
+                .allocate(10), true);
+        if (result.isUnderflow()) {
+            errln("\\ud800 is OK for JDK utf-8 encoder");
+        } else if (result.isMalformed()) {
+            logln("\\ud800 is malformed for JDK utf-8 encoder");
+        }
+    }
+
+/*    private void printCB(CharBuffer buf){
+        buf.rewind();
+        while(buf.hasRemaining()){
+            System.out.println(hex(buf.get()));
+        }
+        buf.rewind();
+    }
+*/
+    public void TestUTF8() throws CharacterCodingException{
+           try{
+               CharsetEncoder encoderICU = new CharsetProviderICU().charsetForName("utf-8").newEncoder();
+               encoderICU.encode(CharBuffer.wrap("\ud800"));
+               errln("\\ud800 is OK for ICU4JNI utf-8 encoder");
+           }catch (Exception e) {
+               logln("\\ud800 is malformed for JDK utf-8 encoder");
+              //e.printStackTrace();
+           }
+           
+           CharsetEncoder encoderJDK = Charset.forName("utf-8").newEncoder();
+           try {
+               encoderJDK.encode(CharBuffer.wrap("\ud800"));
+               errln("\\ud800 is OK for JDK utf-8 encoder");
+           } catch (Exception e) {
+               logln("\\ud800 is malformed for JDK utf-8 encoder");
+               //e.printStackTrace();
+           }         
+    }
+    
+    public void TestUTF16Bom(){
+
+        Charset cs = (new CharsetProviderICU()).charsetForName("UTF-16");
+        char[] in = new char[] { 0x1122, 0x2211, 0x3344, 0x4433,
+                                0x5566, 0x6655, 0x7788, 0x8877, 0x9900 };
+        CharBuffer inBuf = CharBuffer.allocate(in.length);
+        inBuf.put(in);
+        CharsetEncoder encoder = cs.newEncoder();
+        ByteBuffer outBuf = ByteBuffer.allocate(in.length*2+2);
+        inBuf.rewind();
+        encoder.encode(inBuf, outBuf, true);
+        outBuf.rewind();
+        if(outBuf.get(0)!= (byte)0xFE && outBuf.get(1)!= (byte)0xFF){
+            errln("The UTF16 encoder did not appended bom. Length returned: " + outBuf.remaining());
+        }
+        while(outBuf.hasRemaining()){
+            logln("0x"+hex(outBuf.get()));
+        }
+        CharsetDecoder decoder = cs.newDecoder();
+        outBuf.rewind();
+        CharBuffer rt = CharBuffer.allocate(in.length);
+        CoderResult cr = decoder.decode(outBuf, rt, true);
+        if(cr.isError()){
+            errln("Decoding with BOM failed. Error: "+ cr.toString());
+        }
+        equals(rt, in);
+        {
+            rt.clear();
+            outBuf.rewind();
+            Charset utf16 = Charset.forName("UTF-16");
+            CharsetDecoder dc = utf16.newDecoder();
+            cr = dc.decode(outBuf, rt, true);
+            equals(rt, in);
+        }
+    }
+     
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target,
+            boolean throwException, boolean flush) throws BufferOverflowException, Exception {
+        smBufDecode(decoder, encoding, source, target, throwException, flush, true);
+    }
+
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target,
+            boolean throwException, boolean flush, boolean backedByArray) throws BufferOverflowException, Exception {
+        smBufDecode(decoder, encoding, source, target, throwException, flush, backedByArray, -1);
+    }
+
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target,
+            boolean throwException, boolean flush, boolean backedByArray, int targetLimit)
+            throws BufferOverflowException, Exception {
+        ByteBuffer mySource;
+        CharBuffer myTarget;
+        if (backedByArray) {
+            mySource = ByteBuffer.allocate(source.capacity());
+            myTarget = CharBuffer.allocate(target.capacity());
+        } else {
+            // this does not guarantee by any means that mySource and myTarget
+            // are not backed by arrays
+            mySource = ByteBuffer.allocateDirect(source.capacity());
+            myTarget = ByteBuffer.allocateDirect(target.capacity() * 2).asCharBuffer();
+        }
+        mySource.position(source.position());
+        for (int i = source.position(); i < source.limit(); i++)
+            mySource.put(i, source.get(i));
+
+        {
+            decoder.reset();
+            myTarget.limit(target.limit());
+            mySource.limit(source.limit());
+            mySource.position(source.position());
+            CoderResult result = CoderResult.UNDERFLOW;
+            result = decoder.decode(mySource, myTarget, true);
+            if (flush) {
+                result = decoder.flush(myTarget);
+            }
+            if (result.isError()) {
+                if (throwException) {
+                    throw new Exception();
+                }
+                errln("Test complete buffers while decoding failed. " + result.toString());
+                return;
+            }
+            if (result.isOverflow()) {
+                if (throwException) {
+                    throw new BufferOverflowException();
+                }
+                errln("Test complete buffers while decoding threw overflow exception");
+                return;
+            }
+            myTarget.limit(myTarget.position());
+            myTarget.position(0);
+            target.position(0);
+            if (result.isUnderflow() && !equals(myTarget, target, targetLimit)) {
+                errln(" Test complete buffers while decoding  " + encoding + " TO Unicode--failed");
+            }
+        }
+        if (isQuick()) {
+            return;
+        }
+        {
+            decoder.reset();
+            myTarget.limit(target.position());
+            mySource.limit(source.position());
+            mySource.position(source.position());
+            myTarget.clear();
+            myTarget.position(0);
+
+            int inputLen = mySource.remaining();
+
+            CoderResult result = CoderResult.UNDERFLOW;
+            for (int i = 1; i <= inputLen; i++) {
+                mySource.limit(i);
+                if (i == inputLen) {
+                    result = decoder.decode(mySource, myTarget, true);
+                } else {
+                    result = decoder.decode(mySource, myTarget, false);
+                }
+                if (result.isError()) {
+                    errln("Test small input buffers while decoding failed. " + result.toString());
+                    break;
+                }
+                if (result.isOverflow()) {
+                    if (throwException) {
+                        throw new BufferOverflowException();
+                    }
+                    errln("Test small input buffers while decoding threw overflow exception");
+                    break;
+                }
+
+            }
+            if (result.isUnderflow() && !equals(myTarget, target, targetLimit)) {
+                errln("Test small input buffers while decoding " + encoding + " TO Unicode--failed");
+            }
+        }
+        {
+            decoder.reset();
+            myTarget.limit(0);
+            mySource.limit(0);
+            mySource.position(source.position());
+            myTarget.clear();
+            while (true) {
+                CoderResult result = decoder.decode(mySource, myTarget, false);
+                if (result.isUnderflow()) {
+                    if (mySource.limit() < source.limit())
+                        mySource.limit(mySource.limit() + 1);
+                } else if (result.isOverflow()) {
+                    if (myTarget.limit() < target.limit())
+                        myTarget.limit(myTarget.limit() + 1);
+                    else
+                        break;
+                } else /*if (result.isError())*/ {
+                    errln("Test small output buffers while decoding " + result.toString());
+                }
+                if (mySource.position() == mySource.limit()) {
+                    result = decoder.decode(mySource, myTarget, true);
+                    if (result.isError()) {
+                        errln("Test small output buffers while decoding " + result.toString());
+                    }
+                    result = decoder.flush(myTarget);
+                    if (result.isError()) {
+                        errln("Test small output buffers while decoding " + result.toString());
+                    }
+                    break;
+                }
+            }
+
+            if (!equals(myTarget, target, targetLimit)) {
+                errln("Test small output buffers " + encoding + " TO Unicode failed");
+            }
+        }
+    }
+
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target,
+            boolean throwException, boolean flush) throws Exception, BufferOverflowException {
+        smBufEncode(encoder, encoding, source, target, throwException, flush, true);
+    }
+
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target,
+            boolean throwException, boolean flush, boolean backedByArray) throws Exception, BufferOverflowException {
+        smBufEncode(encoder, encoding, source, target, throwException, flush, true, -1);
+    }
+
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target,
+            boolean throwException, boolean flush, boolean backedByArray, int targetLimit) throws Exception,
+            BufferOverflowException {
+        logln("Running smBufEncode for " + encoding + " with class " + encoder);
+
+        CharBuffer mySource;
+        ByteBuffer myTarget;
+        if (backedByArray) {
+            mySource = CharBuffer.allocate(source.capacity());
+            myTarget = ByteBuffer.allocate(target.capacity());
+        } else {
+            mySource = ByteBuffer.allocateDirect(source.capacity() * 2).asCharBuffer();
+            myTarget = ByteBuffer.allocateDirect(target.capacity());
+        }
+        mySource.position(source.position());
+        for (int i = source.position(); i < source.limit(); i++)
+            mySource.put(i, source.get(i));
+
+        myTarget.clear();
+        {
+            logln("Running tests on small input buffers for " + encoding);
+            encoder.reset();
+            myTarget.limit(target.limit());
+            mySource.limit(source.limit());
+            mySource.position(source.position());
+            CoderResult result = null;
+
+            result = encoder.encode(mySource, myTarget, true);
+            if (flush) {
+                result = encoder.flush(myTarget);
+            }
+
+            if (result.isError()) {
+                if (throwException) {
+                    throw new Exception();
+                }
+                errln("Test complete while encoding failed. " + result.toString());
+            }
+            if (result.isOverflow()) {
+                if (throwException) {
+                    throw new BufferOverflowException();
+                }
+                errln("Test complete while encoding threw overflow exception");
+            }
+            if (!equals(myTarget, target, targetLimit)) {
+                errln("Test complete buffers while encoding for " + encoding + " failed");
+
+            } else {
+                logln("Tests complete buffers for " + encoding + " passed");
+            }
+        }
+        if (isQuick()) {
+            return;
+        }
+        {
+            logln("Running tests on small input buffers for " + encoding);
+            encoder.reset();
+            myTarget.clear();
+            myTarget.limit(target.limit());
+            mySource.limit(source.limit());
+            mySource.position(source.position());
+            int inputLen = mySource.limit();
+            CoderResult result = null;
+            for (int i = 1; i <= inputLen; i++) {
+                mySource.limit(i);
+                result = encoder.encode(mySource, myTarget, false);
+                if (result.isError()) {
+                    errln("Test small input buffers while encoding failed. " + result.toString());
+                }
+                if (result.isOverflow()) {
+                    if (throwException) {
+                        throw new BufferOverflowException();
+                    }
+                    errln("Test small input buffers while encoding threw overflow exception");
+                }
+            }
+            if (!equals(myTarget, target, targetLimit)) {
+                errln("Test small input buffers " + encoding + " From Unicode failed");
+            } else {
+                logln("Tests on small input buffers for " + encoding + " passed");
+            }
+        }
+        {
+            logln("Running tests on small output buffers for " + encoding);
+            encoder.reset();
+            myTarget.clear();
+            myTarget.limit(target.limit());
+            mySource.limit(source.limit());
+            mySource.position(source.position());
+            mySource.position(0);
+            myTarget.position(0);
+
+            logln("myTarget.limit: " + myTarget.limit() + " myTarget.capcity: " + myTarget.capacity());
+
+            while (true) {
+                int pos = myTarget.position();
+
+                CoderResult result = encoder.encode(mySource, myTarget, false);
+                logln("myTarget.Position: " + pos + " myTarget.limit: " + myTarget.limit());
+                logln("mySource.position: " + mySource.position() + " mySource.limit: " + mySource.limit());
+
+                if (result.isError()) {
+                    errln("Test small output buffers while encoding " + result.toString());
+                }
+                if (mySource.position() == mySource.limit()) {
+                    result = encoder.encode(mySource, myTarget, true);
+                    if (result.isError()) {
+                        errln("Test small output buffers while encoding " + result.toString());
+                    }
+
+                    myTarget.limit(myTarget.capacity());
+                    result = encoder.flush(myTarget);
+                    if (result.isError()) {
+                        errln("Test small output buffers while encoding " + result.toString());
+                    }
+                    break;
+                }
+            }
+            if (!equals(myTarget, target, targetLimit)) {
+                errln("Test small output buffers " + encoding + " From Unicode failed.");
+            }
+            logln("Tests on small output buffers for " + encoding + " passed");
+        }
+    }
+
+    public void convertAllTest(ByteBuffer bSource, CharBuffer uSource) throws Exception {
+        {
+            try {
+                m_decoder.reset();
+                ByteBuffer mySource = bSource.duplicate();
+                CharBuffer myTarget = m_decoder.decode(mySource);
+                if (!equals(myTarget, uSource)) {
+                    errln(
+                        "--Test convertAll() "
+                            + m_encoding
+                            + " to Unicode  --FAILED");
+                }
+            } catch (Exception e) {
+                //e.printStackTrace();
+                errln(e.getMessage());
+            }
+        }
+        {
+            try {
+                m_encoder.reset();
+                CharBuffer mySource = CharBuffer.wrap(uSource);
+                ByteBuffer myTarget = m_encoder.encode(mySource);
+                if (!equals(myTarget, bSource)) {
+                    errln(
+                        "--Test convertAll() "
+                            + m_encoding
+                            + " to Unicode  --FAILED");
+                }
+            } catch (Exception e) {
+                //e.printStackTrace();
+                errln("encoder.encode() failed "+ e.getMessage()+" "+e.toString());
+            }
+        }
+
+    }
+    //TODO
+    /*
+    public void TestString(ByteBuffer bSource, CharBuffer uSource) throws Exception {
+        try {
+            {
+                String source = uSource.toString();
+                byte[] target = source.getBytes(m_encoding);
+                if (!equals(target, bSource.array())) {
+                    errln("encode using string API failed");
+                }
+            }
+            {
+
+                String target = new String(bSource.array(), m_encoding);
+                if (!equals(uSource, target.toCharArray())) {
+                    errln("decode using string API failed");
+                }
+            }
+        } catch (Exception e) {
+            //e.printStackTrace();
+            errln(e.getMessage());
+        }
+    }
+
+    /*private void fromUnicodeTest() throws Exception {
+        
+        logln("Loaded Charset: " + charset.getClass().toString());
+        logln("Loaded CharsetEncoder: " + encoder.getClass().toString());
+        logln("Loaded CharsetDecoder: " + decoder.getClass().toString());
+        
+        ByteBuffer myTarget = ByteBuffer.allocate(gbSource.length);
+        logln("Created ByteBuffer of length: " + uSource.length);
+        CharBuffer mySource = CharBuffer.wrap(uSource);
+        logln("Wrapped ByteBuffer with CharBuffer  ");
+        encoder.reset();
+        logln("Test Unicode to " + encoding );
+        encoder.encode(mySource, myTarget, true);
+        if (!equals(myTarget, gbSource)) {
+            errln("--Test Unicode to " + encoding + ": FAILED");
+        } 
+        logln("Test Unicode to " + encoding +" passed");
+    }
+
+    public void TestToUnicode( ) throws Exception {
+        
+        logln("Loaded Charset: " + charset.getClass().toString());
+        logln("Loaded CharsetEncoder: " + encoder.getClass().toString());
+        logln("Loaded CharsetDecoder: " + decoder.getClass().toString());
+        
+        CharBuffer myTarget = CharBuffer.allocate(uSource.length);
+        ByteBuffer mySource = ByteBuffer.wrap(getByteArray(gbSource));
+        decoder.reset();
+        CoderResult result = decoder.decode(mySource, myTarget, true);
+        if (result.isError()) {
+            errln("Test ToUnicode -- FAILED");
+        }
+        if (!equals(myTarget, uSource)) {
+            errln("--Test " + encoding + " to Unicode :FAILED");
+        }
+    }
+
+    public static byte[] getByteArray(char[] source) {
+        byte[] target = new byte[source.length];
+        int i = source.length;
+        for (; --i >= 0;) {
+            target[i] = (byte) source[i];
+        }
+        return target;
+    }
+    /*
+    private void smBufCharset(Charset charset) {
+        try {
+            ByteBuffer bTarget = charset.encode(CharBuffer.wrap(uSource));
+            CharBuffer uTarget =
+                charset.decode(ByteBuffer.wrap(getByteArray(gbSource)));
+
+            if (!equals(uTarget, uSource)) {
+                errln("Test " + charset.toString() + " to Unicode :FAILED");
+            }
+            if (!equals(bTarget, gbSource)) {
+                errln("Test " + charset.toString() + " from Unicode :FAILED");
+            }
+        } catch (Exception ex) {
+            errln("Encountered exception in smBufCharset");
+        }
+    }
+    
+    public void TestMultithreaded() throws Exception {
+        final Charset cs = Charset.forName(encoding);
+        if (cs == charset) {
+            errln("The objects are equal");
+        }
+        smBufCharset(cs);
+        try {
+            final Thread t1 = new Thread() {
+                public void run() {
+                    // commented out since the mehtods on
+                    // Charset API are supposed to be thread
+                    // safe ... to test it we dont sync
+            
+                    // synchronized(charset){
+                   while (!interrupted()) {
+                        try {
+                            smBufCharset(cs);
+                        } catch (UnsupportedCharsetException ueEx) {
+                            errln(ueEx.toString());
+                        }
+                    }
+
+                    // }
+                }
+            };
+            final Thread t2 = new Thread() {
+                public void run() {
+                        // synchronized(charset){
+                    while (!interrupted()) {
+                        try {
+                            smBufCharset(cs);
+                        } catch (UnsupportedCharsetException ueEx) {
+                            errln(ueEx.toString());
+                        }
+                    }
+
+                    //}
+                }
+            };
+            t1.start();
+            t2.start();
+            int i = 0;
+            for (;;) {
+                if (i > 1000000000) {
+                    try {
+                        t1.interrupt();
+                    } catch (Exception e) {
+                    }
+                    try {
+                        t2.interrupt();
+                    } catch (Exception e) {
+                    }
+                    break;
+                }
+                i++;
+            }
+        } catch (Exception e) {
+            throw e;
+        }
+    }
+
+    public void TestSynchronizedMultithreaded() throws Exception {
+        // Methods on CharsetDecoder and CharsetEncoder classes
+        // are inherently unsafe if accessed by multiple concurrent
+        // thread so we synchronize them
+        final Charset charset = Charset.forName(encoding);
+        final CharsetDecoder decoder = charset.newDecoder();
+        final CharsetEncoder encoder = charset.newEncoder();
+        try {
+            final Thread t1 = new Thread() {
+                public void run() {
+                    while (!interrupted()) {
+                        try {
+                            synchronized (encoder) {
+                                smBufEncode(encoder, encoding);
+                            }
+                            synchronized (decoder) {
+                                smBufDecode(decoder, encoding);
+                            }
+                        } catch (UnsupportedCharsetException ueEx) {
+                            errln(ueEx.toString());
+                        }
+                    }
+
+                }
+            };
+            final Thread t2 = new Thread() {
+                public void run() {
+                    while (!interrupted()) {
+                        try {
+                            synchronized (encoder) {
+                                smBufEncode(encoder, encoding);
+                            }
+                            synchronized (decoder) {
+                                smBufDecode(decoder, encoding);
+                            }
+                        } catch (UnsupportedCharsetException ueEx) {
+                            errln(ueEx.toString());
+                        }
+                    }
+                }
+            };
+            t1.start();
+            t2.start();
+            int i = 0;
+            for (;;) {
+                if (i > 1000000000) {
+                    try {
+                        t1.interrupt();
+                    } catch (Exception e) {
+                    }
+                    try {
+                        t2.interrupt();
+                    } catch (Exception e) {
+                    }
+                    break;
+                }
+                i++;
+            }
+        } catch (Exception e) {
+            throw e;
+        }
+    }
+    */
+    
+    public void TestMBCS(){      
+        {
+            // Encoder: from Unicode conversion
+            CharsetEncoder encoderICU = new CharsetProviderICU().charsetForName("ibm-971").newEncoder();
+            ByteBuffer out = ByteBuffer.allocate(6);
+            encoderICU.onUnmappableCharacter(CodingErrorAction.REPLACE);
+            CoderResult result = encoderICU.encode(CharBuffer.wrap("\u0131\u0061\u00a1"), out, true);
+            if(!result.isError()){
+                byte[] expected = {(byte)0xA9, (byte)0xA5, (byte)0xAF, (byte)0xFE, (byte)0xA2, (byte)0xAE};
+                if(!equals(expected, out.array())){
+                    errln("Did not get the expected result for substitution bytes. Got: "+
+                           hex(out.array()));
+                }
+                logln("Output: "+  hex(out.array()));
+            }else{
+                errln("Encode operation failed for encoder: "+encoderICU.toString());
+            }
+        }
+        {
+            // Decoder: to Unicode conversion
+            CharsetDecoder decoderICU = new CharsetProviderICU().charsetForName("ibm-971").newDecoder();
+            CharBuffer out = CharBuffer.allocate(3);
+            decoderICU.onMalformedInput(CodingErrorAction.REPLACE);
+            CoderResult result = decoderICU.decode(ByteBuffer.wrap(new byte[] { (byte)0xA2, (byte)0xAE, (byte)0x12, (byte)0x34, (byte)0xEF, (byte)0xDC }), out, true);
+            if(!result.isError()){
+                char[] expected = {'\u00a1', '\ufffd', '\u6676'};
+                if(!equals(expected, out.array())){
+                    errln("Did not get the expected result for substitution chars. Got: "+
+                           hex(out.array()));
+                }
+                logln("Output: "+  hex(out.array()));
+            }else{
+                errln("Decode operation failed for encoder: "+decoderICU.toString());
+            }
+        }
+    }
+    
+    public void TestJB4897(){
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset charset = provider.charsetForName("x-abracadabra");  
+        if(charset!=null && charset.canEncode()== true){
+            errln("provider.charsetForName() does not validate the charset names" );
+        }
+    }
+
+    public void TestJB5027() {
+        CharsetProviderICU provider= new CharsetProviderICU();
+
+        Charset fake = provider.charsetForName("doesNotExist");
+        if(fake != null){
+            errln("\"doesNotExist\" returned " + fake);
+        }
+        Charset xfake = provider.charsetForName("x-doesNotExist");
+        if(xfake!=null){
+            errln("\"x-doesNotExist\" returned " + xfake);
+        }
+    }
+    //test to make sure that number of aliases and canonical names are in the charsets that are in
+    public void TestAllNames() {
+        
+        CharsetProviderICU provider= new CharsetProviderICU();
+        Object[] available = CharsetProviderICU.getAvailableNames();
+        for(int i=0; i<available.length;i++){
+            try{
+                String canon  = CharsetProviderICU.getICUCanonicalName((String)available[i]);
+
+                // ',' is not allowed by Java's charset name checker
+                if(canon.indexOf(',')>=0){
+                    continue;
+                }
+                Charset cs = provider.charsetForName((String)available[i]);
+              
+                Object[] javaAliases =  cs.aliases().toArray();
+                //seach for ICU canonical name in javaAliases
+                boolean inAliasList = false;
+                for(int j=0; j<javaAliases.length; j++){
+                    String java = (String) javaAliases[j];
+                    if(java.equals(canon)){
+                        logln("javaAlias: " + java + " canon: " + canon);
+                        inAliasList = true;
+                    }
+                }
+                if(inAliasList == false){
+                    errln("Could not find ICU canonical name: "+canon+ " for java canonical name: "+ available[i]+ " "+ i);
+                }
+            }catch(UnsupportedCharsetException ex){
+                errln("could no load charset "+ available[i]+" "+ex.getMessage());
+                continue;
+            }
+        }
+    }
+    public void TestDecoderImplFlush() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset ics = provider.charsetForName("UTF-16");
+        Charset jcs = Charset.forName("UTF-16"); // Java's UTF-16 charset
+        execDecoder(jcs);
+        execDecoder(ics);
+    }
+    public void TestEncoderImplFlush() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset ics = provider.charsetForName("UTF-16");
+        Charset jcs = Charset.forName("UTF-16"); // Java's UTF-16 charset
+        execEncoder(jcs);
+        execEncoder(ics);
+    }
+    private void execDecoder(Charset cs){
+        CharsetDecoder decoder = cs.newDecoder();
+        decoder.onMalformedInput(CodingErrorAction.REPORT);
+        decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+        CharBuffer out = CharBuffer.allocate(10);
+        CoderResult result = decoder.decode(ByteBuffer.wrap(new byte[] { -1,
+                -2, 32, 0, 98 }), out, false);
+        result = decoder.decode(ByteBuffer.wrap(new byte[] { 98 }), out, true);
+
+        logln(cs.getClass().toString()+ ":" +result.toString());
+        try {
+            result = decoder.flush(out);
+            logln(cs.getClass().toString()+ ":" +result.toString());
+        } catch (Exception e) {
+            errln(e.getMessage()+" "+cs.getClass().toString());
+        }
+    }
+    private void execEncoder(Charset cs){
+        CharsetEncoder encoder = cs.newEncoder();
+        encoder.onMalformedInput(CodingErrorAction.REPORT);
+        encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+        ByteBuffer out = ByteBuffer.allocate(10);
+        CoderResult result = encoder.encode(CharBuffer.wrap(new char[] { '\uFFFF',
+                '\u2345', 32, 98 }), out, false);
+        logln(cs.getClass().toString()+ ":" +result.toString());
+        result = encoder.encode(CharBuffer.wrap(new char[] { 98 }), out, true);
+
+        logln(cs.getClass().toString()+ ":" +result.toString());
+        try {
+            result = encoder.flush(out);
+            logln(cs.getClass().toString()+ ":" +result.toString());
+        } catch (Exception e) {
+            errln(e.getMessage()+" "+cs.getClass().toString());
+        }
+    }
+    public void TestDecodeMalformed() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset ics = provider.charsetForName("UTF-16BE");
+        //Use SUN's charset
+        Charset jcs = Charset.forName("UTF-16");
+        CoderResult ir = execMalformed(ics);
+        CoderResult jr = execMalformed(jcs);
+        if(ir!=jr){
+            errln("ICU's decoder did not return the same result as Sun. ICU: "+ir.toString()+" Sun: "+jr.toString());
+        }
+    }
+    private CoderResult execMalformed(Charset cs){
+        CharsetDecoder decoder = cs.newDecoder();
+        decoder.onMalformedInput(CodingErrorAction.IGNORE);
+        decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+        ByteBuffer in = ByteBuffer.wrap(new byte[] { 0x00, 0x41, 0x00, 0x42, 0x01 });
+        CharBuffer out = CharBuffer.allocate(3);
+        return decoder.decode(in, out, true);
+    }
+    
+    public void TestJavaUTF16Decoder(){
+        CharsetProviderICU provider = new CharsetProviderICU();
+        Charset ics = provider.charsetForName("UTF-16BE");
+        //Use SUN's charset
+        Charset jcs = Charset.forName("UTF-16");
+        Exception ie = execConvertAll(ics);
+        Exception je = execConvertAll(jcs);
+        if(ie!=je){
+            errln("ICU's decoder did not return the same result as Sun. ICU: "+ie.toString()+" Sun: "+je.toString());
+        }
+    }
+    private Exception execConvertAll(Charset cs){
+        ByteBuffer in = ByteBuffer.allocate(400);
+        int i=0;
+        while(in.position()!=in.capacity()){
+            in.put((byte)0xD8);
+            in.put((byte)i);
+            in.put((byte)0xDC);
+            in.put((byte)i);
+            i++;
+        }
+        in.limit(in.position());
+        in.position(0);
+        CharsetDecoder decoder = cs.newDecoder();
+        decoder.onMalformedInput(CodingErrorAction.IGNORE);
+        decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+        try{
+            CharBuffer out = decoder.decode(in);
+            if(out!=null){
+                logln(cs.toString()+" encoing succeeded as expected!");
+            }
+        }catch ( Exception ex){
+            errln("Did not get expected exception for encoding: "+cs.toString());
+            return ex;
+        }
+        return null;
+    }
+    public void TestUTF32BOM(){
+
+        Charset cs = (new CharsetProviderICU()).charsetForName("UTF-32");
+        char[] in = new char[] { 0xd800, 0xdc00, 
+                                 0xd801, 0xdc01,
+                                 0xdbff, 0xdfff, 
+                                 0xd900, 0xdd00, 
+                                 0x0000, 0x0041,
+                                 0x0000, 0x0042,
+                                 0x0000, 0x0043};
+        
+        CharBuffer inBuf = CharBuffer.allocate(in.length);
+        inBuf.put(in);
+        CharsetEncoder encoder = cs.newEncoder();
+        ByteBuffer outBuf = ByteBuffer.allocate(in.length*4+4);
+        inBuf.rewind();
+        encoder.encode(inBuf, outBuf, true);
+        outBuf.rewind();
+        if(outBuf.get(0)!= (byte)0x00 && outBuf.get(1)!= (byte)0x00 && 
+                outBuf.get(2)!= (byte)0xFF && outBuf.get(3)!= (byte)0xFE){
+            errln("The UTF32 encoder did not appended bom. Length returned: " + outBuf.remaining());
+        }
+        while(outBuf.hasRemaining()){
+            logln("0x"+hex(outBuf.get()));
+        }
+        CharsetDecoder decoder = cs.newDecoder();
+        outBuf.limit(outBuf.position());
+        outBuf.rewind();
+        CharBuffer rt = CharBuffer.allocate(in.length);
+        CoderResult cr = decoder.decode(outBuf, rt, true);
+        if(cr.isError()){
+            errln("Decoding with BOM failed. Error: "+ cr.toString());
+        }
+        equals(rt, in);
+        try{
+            rt.clear();
+            outBuf.rewind();
+            Charset utf16 = Charset.forName("UTF-32");
+            CharsetDecoder dc = utf16.newDecoder();
+            cr = dc.decode(outBuf, rt, true);
+            equals(rt, in);
+        }catch(UnsupportedCharsetException ex){
+            // swallow the expection.
+        }
+    }
+    
+    /*
+     *  Michael Ow
+     *  Modified 070424
+     */
+    /*The following two methods provides the option of exceptions when Decoding 
+     * and Encoding if needed for testing purposes.
+     */
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target) {
+        smBufDecode(decoder, encoding, source, target, true);
+    }
+    private void smBufDecode(CharsetDecoder decoder, String encoding, ByteBuffer source, CharBuffer target, boolean backedByArray) {
+        try {
+            smBufDecode(decoder, encoding, source, target, false, false, backedByArray);
+        }    
+        catch (Exception ex) {           
+            System.out.println("!exception!");
+        }
+    }
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target)  {
+        smBufEncode(encoder, encoding, source, target, true);
+    }
+    private void smBufEncode(CharsetEncoder encoder, String encoding, CharBuffer source, ByteBuffer target, boolean backedByArray)  {
+        try {
+            smBufEncode(encoder, encoding, source, target, false, false); 
+        }
+        catch (Exception ex) {
+            System.out.println("!exception!");
+        }
+    }
+    //Test CharsetICUProvider
+    public void TestNullCanonicalName() {
+        String enc = null;
+        String canonicalName = CharsetProviderICU.getICUCanonicalName(enc);
+        
+        if (canonicalName != null) {
+            errln("getICUCanonicalName return a non-null string for given null string");
+        }
+    }
+    public void TestGetAllNames() {
+        String[] names = null;
+        
+        names = CharsetProviderICU.getAllNames();
+        
+        if (names == null) {
+            errln("getAllNames returned a null string.");
+        }
+    }
+    //Test CharsetICU
+    public void TestCharsetContains() {
+        boolean test;
+        
+        CharsetProvider provider = new CharsetProviderICU();     
+        Charset cs1 = provider.charsetForName("UTF-32");
+        Charset cs2 = null;
+        
+        test = cs1.contains(cs2);
+        
+        if (test != false) {
+            errln("Charset.contains returned true for a null charset.");
+        }
+        
+        cs2 = CharsetICU.forNameICU("UTF-32");
+        
+        test = cs1.contains(cs2);
+        
+        if (test != true) {
+            errln("Charset.contains returned false for an identical charset.");
+        }
+        
+        cs2 = provider.charsetForName("UTF-8");
+        
+        test = cs1.contains(cs2);
+        
+        if (test != false) {
+            errln("Charset.contains returned true for a different charset.");
+        }
+    }
+    public void TestCharsetICUNullCharsetName() {
+        String charsetName = null;
+        
+        try {
+            CharsetICU.forNameICU(charsetName);
+            errln("CharsetICU.forName should have thown an exception after getting a null charsetName.");
+        }
+        catch(Exception ex) {          
+        }
+    }
+    
+    //Test CharsetASCII
+    public void TestCharsetASCIIOverFlow() {
+        int byteBufferLimit;
+        int charBufferLimit;
+        
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("ASCII");        
+        CharsetEncoder encoder = cs.newEncoder();
+        CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer charBuffer = CharBuffer.allocate(0x90);
+        ByteBuffer byteBuffer = ByteBuffer.allocate(0x90);
+        
+        CharBuffer charBufferTest = CharBuffer.allocate(0xb0);
+        ByteBuffer byteBufferTest = ByteBuffer.allocate(0xb0);
+        
+        for(int j=0;j<=0x7f; j++){
+           charBuffer.put((char)j);
+           byteBuffer.put((byte)j);
+        }
+        
+        byteBuffer.limit(byteBufferLimit = byteBuffer.position());
+        byteBuffer.position(0);
+        charBuffer.limit(charBufferLimit = charBuffer.position());
+        charBuffer.position(0);
+        
+        //test for overflow
+        byteBufferTest.limit(byteBufferLimit - 5);
+        byteBufferTest.position(0);
+        charBufferTest.limit(charBufferLimit - 5);
+        charBufferTest.position(0);
+        try {
+            smBufDecode(decoder, "ASCII", byteBuffer, charBufferTest, true, false);
+            errln("Overflow exception while decoding ASCII should have been thrown.");
+        }
+        catch(Exception ex) {
+        }
+        try {
+            smBufEncode(encoder, "ASCII", charBuffer, byteBufferTest, true, false);
+            errln("Overflow exception while encoding ASCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        // For better code coverage
+        /* For better code coverage */
+        byte byteout[] = {
+                (byte)0x01
+        };
+        char charin[] = {
+                (char)0x0001, (char)0x0002
+        };
+        ByteBuffer bb = ByteBuffer.wrap(byteout);
+        CharBuffer cb = CharBuffer.wrap(charin);
+        CharBuffer cb2 = CharBuffer.wrap(cb.subSequence(0, 2));
+        encoder.reset();
+        if (!(encoder.encode(cb2, bb, true)).isOverflow()) {
+            errln("Overflow error while encoding ASCII should have occurred.");
+        }
+    }
+    //Test CharsetUTF7
+    public void TestCharsetUTF7() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("UTF-7");        
+        CharsetEncoder encoder = cs.newEncoder();
+        CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x100);
+        ByteBuffer bs = ByteBuffer.allocate(0x100);
+        
+        /* Unicode :  A<not equal to Alpha Lamda>. */
+        /* UTF7: AImIDkQ. */
+        us.put((char)0x41); us.put((char)0x2262); us.put((char)0x391); us.put((char)0x39B); us.put((char)0x2e);
+        bs.put((byte)0x41); bs.put((byte)0x2b); bs.put((byte)0x49); bs.put((byte)0x6d); 
+        bs.put((byte)0x49); bs.put((byte)0x44); bs.put((byte)0x6b); bs.put((byte)0x51); 
+        bs.put((byte)0x4f); bs.put((byte)0x62); bs.put((byte)0x2e);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+
+        smBufDecode(decoder, "UTF-7", bs, us);
+        smBufEncode(encoder, "UTF-7", us, bs);
+        
+        /* ticket 6151 */
+        CharBuffer smallus = CharBuffer.allocate(1);
+        ByteBuffer bigbs = ByteBuffer.allocate(3);
+        bigbs.put((byte)0x41); bigbs.put((byte)0x41); bigbs.put((byte)0x41);
+        bigbs.position(0);
+        try {
+            smBufDecode(decoder, "UTF-7-DE-Overflow", bigbs, smallus, true, false);
+            errln("Buffer Overflow exception should have been thrown while decoding UTF-7.");
+        } catch (Exception ex) {
+        }
+        
+        //The rest of the code in this method is to provide better code coverage
+        CharBuffer ccus = CharBuffer.allocate(0x10);
+        ByteBuffer ccbs = ByteBuffer.allocate(0x10);
+        
+        //start of charset decoder code coverage code
+        //test for accurate illegal and control character checking
+        ccbs.put((byte)0x0D); ccbs.put((byte)0x05);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-1", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal base64 character
+        ccbs.put((byte)0x2b); ccbs.put((byte)0xff);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-2", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal order of the base64 character sequence
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x2d); ccbs.put((byte)0x2b); ccbs.put((byte)0x49); ccbs.put((byte)0x2d);
+        ccus.put((char)0x0000); ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-3", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal order of the base64 character sequence 
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x0a); ccbs.put((byte)0x09);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-4", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal order of the base64 character sequence
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x49); ccbs.put((byte)0x0a);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-5", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for illegal order of the base64 character sequence
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x00);
+        ccus.put((char)0x0000);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-6", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x49);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(0);
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-7", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccbs.put((byte)0x0c); ccbs.put((byte)0x0c);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(0);
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-7-CC-DE-8", ccbs, ccus, true, false);
+            errln("Exception while decoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        //end of charset decoder code coverage code
+        
+        //start of charset encoder code coverage code
+        ccbs.clear();
+        ccus.clear();
+        //test for overflow buffer error
+        ccus.put((char)0x002b);
+        ccbs.put((byte)0x2b); 
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-1", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x002b); ccus.put((char)0x2262);
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x2d); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-2", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        } 
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0049);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-3", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0395);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-4", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0395);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-5", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0395); ccus.put((char)0x0391);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-6", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0395); ccus.put((char)0x0391);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); 
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-7", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x0049); ccus.put((char)0x0048);
+        ccbs.put((byte)0x00); 
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-8", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        } 
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262);
+        ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-9", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        } 
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262); ccus.put((char)0x0049);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-10", ccus, ccbs, true, false);
+            errln("Exception while encoding UTF-7 code coverage test should have been thrown.");
+        }
+        catch (Exception ex) {
+        }  
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        ccus.put((char)0x2262);
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x49); ccbs.put((byte)0x6d); ccbs.put((byte)0x49);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        try {
+            smBufEncode(encoder, "UTF-7-CC-EN-11", ccus, ccbs, false, true);
+        } catch (Exception ex) {
+            errln("Exception while encoding UTF-7 code coverage test should not have been thrown.");
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test for overflow buffer error
+        encoder.reset();
+        ccus.put((char)0x3980); ccus.put((char)0x2715);
+        ccbs.put((byte)0x2b); ccbs.put((byte)0x4f); ccbs.put((byte)0x59);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        result = encoder.encode(ccus, ccbs, true);
+        result = encoder.flush(ccbs);
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while encoding UTF-7 should have occurred.");
+        }
+        //end of charset encoder code coverage code
+    }
+    //Test Charset ISCII
+    public void TestCharsetISCII() {
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("ISCII,version=0");        
+        CharsetEncoder encoder = cs.newEncoder();
+        CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x100);
+        ByteBuffer bs = ByteBuffer.allocate(0x100);
+        ByteBuffer bsr = ByteBuffer.allocate(0x100);
+        
+        //test full range of Devanagari
+        us.put((char)0x0901); us.put((char)0x0902); us.put((char)0x0903); us.put((char)0x0905); us.put((char)0x0906); us.put((char)0x0907);
+        us.put((char)0x0908); us.put((char)0x0909); us.put((char)0x090A); us.put((char)0x090B); us.put((char)0x090E); us.put((char)0x090F);
+        us.put((char)0x0910); us.put((char)0x090D); us.put((char)0x0912); us.put((char)0x0913); us.put((char)0x0914); us.put((char)0x0911);
+        us.put((char)0x0915); us.put((char)0x0916); us.put((char)0x0917); us.put((char)0x0918); us.put((char)0x0919); us.put((char)0x091A);
+        us.put((char)0x091B); us.put((char)0x091C); us.put((char)0x091D); us.put((char)0x091E); us.put((char)0x091F); us.put((char)0x0920);
+        us.put((char)0x0921); us.put((char)0x0922); us.put((char)0x0923); us.put((char)0x0924); us.put((char)0x0925); us.put((char)0x0926); 
+        us.put((char)0x0927); us.put((char)0x0928); us.put((char)0x0929); us.put((char)0x092A); us.put((char)0x092B); us.put((char)0x092C); 
+        us.put((char)0x092D); us.put((char)0x092E); us.put((char)0x092F); us.put((char)0x095F); us.put((char)0x0930); us.put((char)0x0931); 
+        us.put((char)0x0932); us.put((char)0x0933); us.put((char)0x0934); us.put((char)0x0935); us.put((char)0x0936); us.put((char)0x0937); 
+        us.put((char)0x0938); us.put((char)0x0939); us.put((char)0x200D); us.put((char)0x093E); us.put((char)0x093F); us.put((char)0x0940); 
+        us.put((char)0x0941); us.put((char)0x0942); us.put((char)0x0943); us.put((char)0x0946); us.put((char)0x0947); us.put((char)0x0948); 
+        us.put((char)0x0945); us.put((char)0x094A); us.put((char)0x094B); us.put((char)0x094C); us.put((char)0x0949); us.put((char)0x094D); 
+        us.put((char)0x093D); us.put((char)0x0966); us.put((char)0x0967); us.put((char)0x0968); us.put((char)0x0969); us.put((char)0x096A); 
+        us.put((char)0x096B); us.put((char)0x096C); us.put((char)0x096D); us.put((char)0x096E); us.put((char)0x096F); 
+        
+        bs.put((byte)0xEF); bs.put((byte)0x42);
+        bs.put((byte)0xA1); bs.put((byte)0xA2); bs.put((byte)0xA3); bs.put((byte)0xA4); bs.put((byte)0xA5); bs.put((byte)0xA6);
+        bs.put((byte)0xA7); bs.put((byte)0xA8); bs.put((byte)0xA9); bs.put((byte)0xAA); bs.put((byte)0xAB); bs.put((byte)0xAC); 
+        bs.put((byte)0xAD); bs.put((byte)0xAE); bs.put((byte)0xAF); bs.put((byte)0xB0); bs.put((byte)0xB1); bs.put((byte)0xB2); 
+        bs.put((byte)0xB3); bs.put((byte)0xB4); bs.put((byte)0xB5); bs.put((byte)0xB6); bs.put((byte)0xB7); bs.put((byte)0xB8); 
+        bs.put((byte)0xB9); bs.put((byte)0xBA); bs.put((byte)0xBB); bs.put((byte)0xBC); bs.put((byte)0xBD); bs.put((byte)0xBE); 
+        bs.put((byte)0xBF); bs.put((byte)0xC0); bs.put((byte)0xC1); bs.put((byte)0xC2); bs.put((byte)0xC3); bs.put((byte)0xC4); 
+        bs.put((byte)0xC5); bs.put((byte)0xC6); bs.put((byte)0xC7); bs.put((byte)0xC8); bs.put((byte)0xC9); bs.put((byte)0xCA); 
+        bs.put((byte)0xCB); bs.put((byte)0xCC); bs.put((byte)0xCD); bs.put((byte)0xCE); bs.put((byte)0xCF); bs.put((byte)0xD0); 
+        bs.put((byte)0xD1); bs.put((byte)0xD2); bs.put((byte)0xD3); bs.put((byte)0xD4); bs.put((byte)0xD5); bs.put((byte)0xD6); 
+        bs.put((byte)0xD7); bs.put((byte)0xD8); bs.put((byte)0xD9); bs.put((byte)0xDA); bs.put((byte)0xDB); bs.put((byte)0xDC); 
+        bs.put((byte)0xDD); bs.put((byte)0xDE); bs.put((byte)0xDF); bs.put((byte)0xE0); bs.put((byte)0xE1); bs.put((byte)0xE2); 
+        bs.put((byte)0xE3); bs.put((byte)0xE4); bs.put((byte)0xE5); bs.put((byte)0xE6); bs.put((byte)0xE7); bs.put((byte)0xE8); 
+        bs.put((byte)0xEA); bs.put((byte)0xE9); bs.put((byte)0xF1); bs.put((byte)0xF2); bs.put((byte)0xF3); bs.put((byte)0xF4); 
+        bs.put((byte)0xF5); bs.put((byte)0xF6); bs.put((byte)0xF7); bs.put((byte)0xF8); bs.put((byte)0xF9); bs.put((byte)0xFA); 
+        
+        bsr.put((byte)0xA1); bsr.put((byte)0xA2); bsr.put((byte)0xA3); bsr.put((byte)0xA4); bsr.put((byte)0xA5); bsr.put((byte)0xA6);
+        bsr.put((byte)0xA7); bsr.put((byte)0xA8); bsr.put((byte)0xA9); bsr.put((byte)0xAA); bsr.put((byte)0xAB); bsr.put((byte)0xAC); 
+        bsr.put((byte)0xAD); bsr.put((byte)0xAE); bsr.put((byte)0xAF); bsr.put((byte)0xB0); bsr.put((byte)0xB1); bsr.put((byte)0xB2); 
+        bsr.put((byte)0xB3); bsr.put((byte)0xB4); bsr.put((byte)0xB5); bsr.put((byte)0xB6); bsr.put((byte)0xB7); bsr.put((byte)0xB8); 
+        bsr.put((byte)0xB9); bsr.put((byte)0xBA); bsr.put((byte)0xBB); bsr.put((byte)0xBC); bsr.put((byte)0xBD); bsr.put((byte)0xBE); 
+        bsr.put((byte)0xBF); bsr.put((byte)0xC0); bsr.put((byte)0xC1); bsr.put((byte)0xC2); bsr.put((byte)0xC3); bsr.put((byte)0xC4); 
+        bsr.put((byte)0xC5); bsr.put((byte)0xC6); bsr.put((byte)0xC7); bsr.put((byte)0xC8); bsr.put((byte)0xC9); bsr.put((byte)0xCA); 
+        bsr.put((byte)0xCB); bsr.put((byte)0xCC); bsr.put((byte)0xCD); bsr.put((byte)0xCE); bsr.put((byte)0xCF); bsr.put((byte)0xD0); 
+        bsr.put((byte)0xD1); bsr.put((byte)0xD2); bsr.put((byte)0xD3); bsr.put((byte)0xD4); bsr.put((byte)0xD5); bsr.put((byte)0xD6); 
+        bsr.put((byte)0xD7); bsr.put((byte)0xD8); bsr.put((byte)0xD9); bsr.put((byte)0xDA); bsr.put((byte)0xDB); bsr.put((byte)0xDC); 
+        bsr.put((byte)0xDD); bsr.put((byte)0xDE); bsr.put((byte)0xDF); bsr.put((byte)0xE0); bsr.put((byte)0xE1); bsr.put((byte)0xE2); 
+        bsr.put((byte)0xE3); bsr.put((byte)0xE4); bsr.put((byte)0xE5); bsr.put((byte)0xE6); bsr.put((byte)0xE7); bsr.put((byte)0xE8); 
+        bsr.put((byte)0xEA); bsr.put((byte)0xE9); bsr.put((byte)0xF1); bsr.put((byte)0xF2); bsr.put((byte)0xF3); bsr.put((byte)0xF4); 
+        bsr.put((byte)0xF5); bsr.put((byte)0xF6); bsr.put((byte)0xF7); bsr.put((byte)0xF8); bsr.put((byte)0xF9); bsr.put((byte)0xFA); 
+        
+        //test Soft Halant
+        us.put((char)0x0915); us.put((char)0x094d); us.put((char)0x200D);
+        bs.put((byte)0xB3); bs.put((byte)0xE8); bs.put((byte)0xE9);
+        bsr.put((byte)0xB3); bsr.put((byte)0xE8); bsr.put((byte)0xE9);
+        
+        //test explicit halant
+        us.put((char)0x0915); us.put((char)0x094D); us.put((char)0x200C);
+        bs.put((byte)0xB3); bs.put((byte)0xE8); bs.put((byte)0xE8);
+        bsr.put((byte)0xB3); bsr.put((byte)0xE8); bsr.put((byte)0xE8);
+        
+        //test double danda
+        us.put((char)0x0965); 
+        bs.put((byte)0xEA); bs.put((byte)0xEA); 
+        bsr.put((byte)0xEA); bsr.put((byte)0xEA); 
+        
+        //test ASCII
+        us.put((char)0x1B); us.put((char)0x24); us.put((char)0x29); us.put((char)0x47); us.put((char)0x0E); us.put((char)0x23);
+        us.put((char)0x21); us.put((char)0x23); us.put((char)0x22); us.put((char)0x23); us.put((char)0x23); us.put((char)0x23);
+        us.put((char)0x24); us.put((char)0x23); us.put((char)0x25); us.put((char)0x23); us.put((char)0x26); us.put((char)0x23);
+        us.put((char)0x27); us.put((char)0x23); us.put((char)0x28); us.put((char)0x23); us.put((char)0x29); us.put((char)0x23);
+        us.put((char)0x2A); us.put((char)0x23); us.put((char)0x2B); us.put((char)0x0F); us.put((char)0x2F); us.put((char)0x2A);
+        
+        bs.put((byte)0x1B); bs.put((byte)0x24); bs.put((byte)0x29); bs.put((byte)0x47); bs.put((byte)0x0E); bs.put((byte)0x23);
+        bs.put((byte)0x21); bs.put((byte)0x23); bs.put((byte)0x22); bs.put((byte)0x23); bs.put((byte)0x23); bs.put((byte)0x23);
+        bs.put((byte)0x24); bs.put((byte)0x23); bs.put((byte)0x25); bs.put((byte)0x23); bs.put((byte)0x26); bs.put((byte)0x23);
+        bs.put((byte)0x27); bs.put((byte)0x23); bs.put((byte)0x28); bs.put((byte)0x23); bs.put((byte)0x29); bs.put((byte)0x23);
+        bs.put((byte)0x2A); bs.put((byte)0x23); bs.put((byte)0x2B); bs.put((byte)0x0F); bs.put((byte)0x2F); bs.put((byte)0x2A);
+        
+        bsr.put((byte)0x1B); bsr.put((byte)0x24); bsr.put((byte)0x29); bsr.put((byte)0x47); bsr.put((byte)0x0E); bsr.put((byte)0x23);
+        bsr.put((byte)0x21); bsr.put((byte)0x23); bsr.put((byte)0x22); bsr.put((byte)0x23); bsr.put((byte)0x23); bsr.put((byte)0x23);
+        bsr.put((byte)0x24); bsr.put((byte)0x23); bsr.put((byte)0x25); bsr.put((byte)0x23); bsr.put((byte)0x26); bsr.put((byte)0x23);
+        bsr.put((byte)0x27); bsr.put((byte)0x23); bsr.put((byte)0x28); bsr.put((byte)0x23); bsr.put((byte)0x29); bsr.put((byte)0x23);
+        bsr.put((byte)0x2A); bsr.put((byte)0x23); bsr.put((byte)0x2B); bsr.put((byte)0x0F); bsr.put((byte)0x2F); bsr.put((byte)0x2A);
+        
+        //test from Lotus
+        //Some of the Lotus ISCII code points have been changed or commented out.
+        us.put((char)0x0061); us.put((char)0x0915); us.put((char)0x000D); us.put((char)0x000A); us.put((char)0x0996); us.put((char)0x0043);
+        us.put((char)0x0930); us.put((char)0x094D); us.put((char)0x200D); us.put((char)0x0901); us.put((char)0x000D); us.put((char)0x000A);
+        us.put((char)0x0905); us.put((char)0x0985); us.put((char)0x0043); us.put((char)0x0915); us.put((char)0x0921); us.put((char)0x002B);
+        us.put((char)0x095F); 
+        bs.put((byte)0x61); bs.put((byte)0xB3);
+        bs.put((byte)0x0D); bs.put((byte)0x0A); 
+        bs.put((byte)0xEF); bs.put((byte)0x42); 
+        bs.put((byte)0xEF); bs.put((byte)0x43); bs.put((byte)0xB4); bs.put((byte)0x43);
+        bs.put((byte)0xEF); bs.put((byte)0x42); bs.put((byte)0xCF); bs.put((byte)0xE8); bs.put((byte)0xE9); bs.put((byte)0xA1); bs.put((byte)0x0D); bs.put((byte)0x0A); bs.put((byte)0xEF); bs.put((byte)0x42);
+        bs.put((byte)0xA4); bs.put((byte)0xEF); bs.put((byte)0x43); bs.put((byte)0xA4); bs.put((byte)0x43); bs.put((byte)0xEF);
+        bs.put((byte)0x42); bs.put((byte)0xB3); bs.put((byte)0xBF); bs.put((byte)0x2B);
+        bs.put((byte)0xCE);
+        bsr.put((byte)0x61); bsr.put((byte)0xEF); bsr.put((byte)0x42); bsr.put((byte)0xEF); bsr.put((byte)0x30); bsr.put((byte)0xB3);
+        bsr.put((byte)0x0D); bsr.put((byte)0x0A); bsr.put((byte)0xEF); bsr.put((byte)0x43); bsr.put((byte)0xB4); bsr.put((byte)0x43);
+        bsr.put((byte)0xEF); bsr.put((byte)0x42); bsr.put((byte)0xCF); bsr.put((byte)0xE8); bsr.put((byte)0xD9); bsr.put((byte)0xEF);
+        bsr.put((byte)0x42); bsr.put((byte)0xA1); bsr.put((byte)0x0D); bsr.put((byte)0x0A); bsr.put((byte)0xEF); bsr.put((byte)0x42);
+        bsr.put((byte)0xA4); bsr.put((byte)0xEF); bsr.put((byte)0x43); bsr.put((byte)0xA4); bsr.put((byte)0x43); bsr.put((byte)0xEF);
+        bsr.put((byte)0x42); bsr.put((byte)0xB3); bsr.put((byte)0xBF); bsr.put((byte)0x2B); bsr.put((byte)0xEF); bsr.put((byte)0x42);
+        bsr.put((byte)0xCE);
+        //end of test from Lotus
+        
+        //tamil range
+        us.put((char)0x0B86); us.put((char)0x0B87); us.put((char)0x0B88);
+        bs.put((byte)0xEF); bs.put((byte)0x44); bs.put((byte)0xA5); bs.put((byte)0xA6); bs.put((byte)0xA7);
+        bsr.put((byte)0xEF); bsr.put((byte)0x44); bsr.put((byte)0xA5); bsr.put((byte)0xA6); bsr.put((byte)0xA7);
+        
+        //telugu range
+        us.put((char)0x0C05); us.put((char)0x0C02); us.put((char)0x0C03); us.put((char)0x0C31);
+        bs.put((byte)0xEF); bs.put((byte)0x45); bs.put((byte)0xA4); bs.put((byte)0xA2); bs.put((byte)0xA3); bs.put((byte)0xD0);
+        bsr.put((byte)0xEF); bsr.put((byte)0x45); bsr.put((byte)0xA4); bsr.put((byte)0xA2); bsr.put((byte)0xA3); bsr.put((byte)0xD0);
+        
+        //kannada range
+        us.put((char)0x0C85); us.put((char)0x0C82); us.put((char)0x0C83);
+        bs.put((byte)0xEF); bs.put((byte)0x48); bs.put((byte)0xA4); bs.put((byte)0xA2); bs.put((byte)0xA3);
+        bsr.put((byte)0xEF); bsr.put((byte)0x48); bsr.put((byte)0xA4); bsr.put((byte)0xA2); bsr.put((byte)0xA3);  
+        
+        //test Abbr sign and Anudatta
+        us.put((char)0x0970); us.put((char)0x0952); us.put((char)0x0960); us.put((char)0x0944); us.put((char)0x090C); us.put((char)0x0962);
+        us.put((char)0x0961); us.put((char)0x0963); us.put((char)0x0950); us.put((char)0x093D); us.put((char)0x0958); us.put((char)0x0959);
+        us.put((char)0x095A); us.put((char)0x095B); us.put((char)0x095C); us.put((char)0x095D); us.put((char)0x095E); us.put((char)0x0020);
+        us.put((char)0x094D); us.put((char)0x0930); us.put((char)0x0000); us.put((char)0x00A0); 
+        bs.put((byte)0xEF); bs.put((byte)0x42); bs.put((byte)0xF0); bs.put((byte)0xBF); bs.put((byte)0xF0); bs.put((byte)0xB8);
+        bs.put((byte)0xAA); bs.put((byte)0xE9); bs.put((byte)0xDF); bs.put((byte)0xE9); bs.put((byte)0xA6); bs.put((byte)0xE9);
+        bs.put((byte)0xDB); bs.put((byte)0xE9); bs.put((byte)0xA7); bs.put((byte)0xE9); bs.put((byte)0xDC); bs.put((byte)0xE9);
+        bs.put((byte)0xA1); bs.put((byte)0xE9); bs.put((byte)0xEA); bs.put((byte)0xE9); bs.put((byte)0xB3); bs.put((byte)0xE9);
+        bs.put((byte)0xB4); bs.put((byte)0xE9); bs.put((byte)0xB5); bs.put((byte)0xE9); bs.put((byte)0xBA); bs.put((byte)0xE9);
+        bs.put((byte)0xBF); bs.put((byte)0xE9); bs.put((byte)0xC0); bs.put((byte)0xE9); bs.put((byte)0xC9); bs.put((byte)0xE9);
+        bs.put((byte)0x20); bs.put((byte)0xE8); bs.put((byte)0xCF); bs.put((byte)0x00); bs.put((byte)0xA0); 
+        //bs.put((byte)0xEF); bs.put((byte)0x30); 
+        bsr.put((byte)0xEF); bsr.put((byte)0x42); bsr.put((byte)0xF0); bsr.put((byte)0xBF); bsr.put((byte)0xF0); bsr.put((byte)0xB8);
+        bsr.put((byte)0xAA); bsr.put((byte)0xE9); bsr.put((byte)0xDF); bsr.put((byte)0xE9); bsr.put((byte)0xA6); bsr.put((byte)0xE9);
+        bsr.put((byte)0xDB); bsr.put((byte)0xE9); bsr.put((byte)0xA7); bsr.put((byte)0xE9); bsr.put((byte)0xDC); bsr.put((byte)0xE9);
+        bsr.put((byte)0xA1); bsr.put((byte)0xE9); bsr.put((byte)0xEA); bsr.put((byte)0xE9); bsr.put((byte)0xB3); bsr.put((byte)0xE9);
+        bsr.put((byte)0xB4); bsr.put((byte)0xE9); bsr.put((byte)0xB5); bsr.put((byte)0xE9); bsr.put((byte)0xBA); bsr.put((byte)0xE9);
+        bsr.put((byte)0xBF); bsr.put((byte)0xE9); bsr.put((byte)0xC0); bsr.put((byte)0xE9); bsr.put((byte)0xC9); bsr.put((byte)0xE9);
+        bsr.put((byte)0xD9); bsr.put((byte)0xE8); bsr.put((byte)0xCF); bsr.put((byte)0x00); bsr.put((byte)0xA0);  
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        bsr.limit(bsr.position());
+        bsr.position(0);
+        
+        //round trip test
+        try {
+            smBufDecode(decoder, "ISCII-part1", bsr, us, false, true);
+            smBufEncode(encoder, "ISCII-part2", us, bs); 
+            smBufDecode(decoder, "ISCII-part3", bs, us, false, true);
+        } catch (Exception ex) {
+            errln("ISCII round trip test failed.");
+        }
+        
+        //Test new characters in the ISCII charset
+        encoder = provider.charsetForName("ISCII,version=0").newEncoder();
+        decoder = provider.charsetForName("ISCII,version=0").newDecoder();
+        char u_pts[] = {
+                /* DEV */ (char)0x0904,
+                /* PNJ */ (char)0x0A01, (char)0x0A03, (char)0x0A33, (char)0x0A70
+            };
+        byte b_pts[] = {
+                                (byte)0xef, (byte)0x42,
+                /* DEV */ (byte)0xa4, (byte)0xe0,
+                /* PNJ */ (byte)0xef, (byte)0x4b, (byte)0xa1, (byte)0xa3, (byte)0xd2, (byte)0xf0, (byte)0xbf
+            };
+        us = CharBuffer.allocate(u_pts.length);
+        bs = ByteBuffer.allocate(b_pts.length);
+        us.put(u_pts);
+        bs.put(b_pts);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufDecode(decoder, "ISCII-update", bs, us, true, true);         
+            bs.position(0);
+            us.position(0);
+            smBufEncode(encoder, "ISCII-update", us, bs, true, true);
+        } catch (Exception ex) {
+            errln("Error occurred while encoding/decoding ISCII with the new characters.");
+        }
+        
+        //The rest of the code in this method is to provide better code coverage
+        CharBuffer ccus = CharBuffer.allocate(0x10);
+        ByteBuffer ccbs = ByteBuffer.allocate(0x10);
+        
+        //start of charset decoder code coverage code
+        //test overflow buffer
+        ccbs.put((byte)0x49);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(0);
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "ISCII-CC-DE-1", ccbs, ccus, true, false);
+            errln("Exception while decoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test atr overflow buffer
+        ccbs.put((byte)0xEF); ccbs.put((byte)0x40); ccbs.put((byte)0xEF); ccbs.put((byte)0x20);
+        ccus.put((char)0x00);
+        
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        
+        try {
+            smBufDecode(decoder, "ISCII-CC-DE-2", ccbs, ccus, true, false);
+            errln("Exception while decoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        //end of charset decoder code coverage code
+        
+        ccbs.clear();
+        ccus.clear();
+      
+        //start of charset encoder code coverage code
+        //test ascii overflow buffer
+        ccus.put((char)0x41);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(0);
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-1", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test ascii overflow buffer
+        ccus.put((char)0x0A); ccus.put((char)0x0043);
+        ccbs.put((byte)0x00); ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-2", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test surrogate malform
+        ccus.put((char)0x06E3);
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-3", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test surrogate malform
+        ccus.put((char)0xD801); ccus.put((char)0xDD01);
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-4", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test trail surrogate malform
+        ccus.put((char)0xDD01); 
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-5", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccbs.clear();
+        ccus.clear();
+        
+        //test lead surrogates malform
+        ccus.put((char)0xD801); ccus.put((char)0xD802); 
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-6", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        
+        ccus.clear();
+        ccbs.clear();
+        
+        //test overflow buffer
+        ccus.put((char)0x0901); 
+        ccbs.put((byte)0x00);
+        
+        ccus.limit(ccus.position());
+        ccus.position(0);
+        ccbs.limit(ccbs.position());
+        ccbs.position(0);
+           
+        cs = provider.charsetForName("ISCII,version=0");
+        encoder = cs.newEncoder();
+        
+        try {
+            smBufEncode(encoder, "ISCII-CC-EN-7", ccus, ccbs, true, false);
+            errln("Exception while encoding ISCII should have been thrown.");
+        }
+        catch (Exception ex) {
+        }
+        //end of charset encoder code coverage code
+    }
+    
+    //Test for the IMAP Charset
+    public void TestCharsetIMAP() {
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("IMAP-mailbox-name");        
+        CharsetEncoder encoder = cs.newEncoder();
+        CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x20);
+        ByteBuffer bs = ByteBuffer.allocate(0x20);
+        
+        us.put((char)0x00A3); us.put((char)0x2020); us.put((char)0x41);
+        
+        bs.put((byte)0x26); bs.put((byte)0x41); bs.put((byte)0x4B); bs.put((byte)0x4D); bs.put((byte)0x67); bs.put((byte)0x49);
+        bs.put((byte)0x41); bs.put((byte)0x2D); bs.put((byte)0x41);
+        
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+
+        smBufDecode(decoder, "IMAP", bs, us);
+        smBufEncode(encoder, "IMAP", us, bs);
+        
+        //the rest of the code in this method is for better code coverage
+        us.clear();
+        bs.clear();
+        
+        //start of charset encoder code coverage
+        //test buffer overflow
+        us.put((char)0x0026); us.put((char)0x17A9); 
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-1", us, bs, true, false);
+            errln("Exception while encoding IMAP (1) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-2", us, bs, true, false);
+            errln("Exception while encoding IMAP (2) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);   
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-3", us, bs, true, false);
+            errln("Exception while encoding IMAP (3) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941); us.put((char)0x0955);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);      
+        bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-4", us, bs, true, false);
+            errln("Exception while encoding IMAP (4) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941); us.put((char)0x0955);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);  
+        bs.put((byte)0x00); bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-5", us, bs, true, false);
+            errln("Exception while encoding IMAP (5) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941); us.put((char)0x0955); us.put((char)0x0970);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);  
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-6", us, bs, true, false);
+            errln("Exception while encoding IMAP (6) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test buffer overflow
+        us.put((char)0x17A9); us.put((char)0x0941);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);  bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-7", us, bs, true, true);
+            errln("Exception while encoding IMAP (7) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test flushing
+        us.put((char)0x17A9); us.put((char)0x0941); 
+        bs.put((byte)0x26); bs.put((byte)0x46); bs.put((byte)0x36); bs.put((byte)0x6b);  bs.put((byte)0x4a); bs.put((byte)0x51);
+        bs.put((byte)0x51); bs.put((byte)0x2d);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-8", us, bs, true, true);
+        } catch(Exception ex) {
+            errln("Exception while encoding IMAP (8) should not have been thrown.");
+        }
+        
+        us = CharBuffer.allocate(0x08);
+        bs = ByteBuffer.allocate(0x08);
+        
+        //test flushing buffer overflow
+        us.put((char)0x0061);
+        bs.put((byte)0x61); bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "IMAP-EN-9", us, bs, true, true);
+        } catch(Exception ex) {
+            errln("Exception while encoding IMAP (9) should not have been thrown.");
+        }
+        //end of charset encoder code coverage
+        
+        us = CharBuffer.allocate(0x10);
+        bs = ByteBuffer.allocate(0x10);
+        
+        //start of charset decoder code coverage
+        //test malform case 2
+        us.put((char)0x0000); us.put((char)0x0000); 
+        bs.put((byte)0x26); bs.put((byte)0x41); bs.put((byte)0x43); bs.put((byte)0x41);  
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufDecode(decoder, "IMAP-DE-1", bs, us, true, false);
+            errln("Exception while decoding IMAP (1) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform case 5
+        us.put((char)0x0000); us.put((char)0x0000); us.put((char)0x0000);
+        bs.put((byte)0x26); bs.put((byte)0x41); bs.put((byte)0x41); bs.put((byte)0x41); 
+        bs.put((byte)0x41); bs.put((byte)0x49); bs.put((byte)0x41);  
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufDecode(decoder, "IMAP-DE-2", bs, us, true, false);
+            errln("Exception while decoding IMAP (2) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform case 7
+        us.put((char)0x0000); us.put((char)0x0000); us.put((char)0x0000); us.put((char)0x0000);
+        bs.put((byte)0x26); bs.put((byte)0x41); bs.put((byte)0x41); bs.put((byte)0x41); 
+        bs.put((byte)0x41); bs.put((byte)0x41); bs.put((byte)0x41); bs.put((byte)0x42); 
+        bs.put((byte)0x41);  
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufDecode(decoder, "IMAP-DE-3", bs, us, true, false);
+            errln("Exception while decoding IMAP (3) should have been thrown.");
+        } catch(Exception ex) {
+        }
+        //end of charset decoder coder coverage  
+    }
+    
+    //Test for charset UTF32LE to provide better code coverage
+    public void TestCharsetUTF32LE() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("UTF-32LE");        
+        CharsetEncoder encoder = cs.newEncoder();
+        //CharsetDecoder decoder = cs.newDecoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x10);
+        ByteBuffer bs = ByteBuffer.allocate(0x10);
+        
+        
+        //test malform surrogate
+        us.put((char)0xD901);
+        bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF32LE-EN-1", us, bs, true, false);
+            errln("Exception while encoding UTF32LE (1) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test malform surrogate
+        us.put((char)0xD901); us.put((char)0xD902);
+        bs.put((byte)0x00);
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isError() && !result.isOverflow()) {
+            errln("Error while encoding UTF32LE (2) should have occurred.");
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test overflow trail surrogate
+        us.put((char)0xDD01); us.put((char)0xDD0E); us.put((char)0xDD0E);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isError() && !result.isOverflow()) {
+            errln("Error while encoding UTF32LE (3) should have occurred.");
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test malform lead surrogate
+        us.put((char)0xD90D); us.put((char)0xD90E);
+        bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF32LE-EN-4", us, bs, true, false);
+            errln("Exception while encoding UTF32LE (4) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test overflow buffer
+        us.put((char)0x0061);
+        bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF32LE-EN-5", us, bs, true, false);
+            errln("Exception while encoding UTF32LE (5) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        
+        //test malform trail surrogate
+        us.put((char)0xDD01);
+        bs.put((byte)0x00); 
+        
+        bs.limit(bs.position());
+        bs.position(0);
+        us.limit(us.position());
+        us.position(0);
+        
+        try {
+            smBufEncode(encoder, "UTF32LE-EN-6", us, bs, true, false);
+            errln("Exception while encoding UTF32LE (6) should have been thrown.");
+        } catch (Exception ex) {
+        }
+    }
+
+    //Test for charset UTF16LE to provide better code coverage
+    public void TestCharsetUTF16LE() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("UTF-16LE");        
+        CharsetEncoder encoder = cs.newEncoder();
+        //CharsetDecoder decoder = cs.newDecoder();
+        
+        // Test for malform and change fromUChar32 for next call
+        char u_pts1[] = {
+                (char)0xD805, 
+                (char)0xDC01, (char)0xDC02, (char)0xDC03,
+                (char)0xD901, (char)0xD902
+                };
+        byte b_pts1[] = {
+                (byte)0x00, 
+                (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00
+                };
+        
+        CharBuffer us = CharBuffer.allocate(u_pts1.length);
+        ByteBuffer bs = ByteBuffer.allocate(b_pts1.length);
+        
+        us.put(u_pts1);
+        bs.put(b_pts1);
+        
+        us.limit(1);
+        us.position(0);
+        bs.limit(1);
+        bs.position(0);
+       
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isMalformed()) {
+            // LE should not output BOM, so this should be malformed 
+            errln("Malformed while encoding UTF-16LE (1) should have occured.");
+        }
+        
+        // Test for malform surrogate from previous buffer
+        us.limit(4);
+        us.position(1);
+        bs.limit(7);
+        bs.position(1);
+        
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isMalformed()) {
+            errln("Error while encoding UTF-16LE (2) should have occured.");
+        }       
+        
+        // Test for malform trail surrogate
+        encoder.reset();
+        
+        us.limit(1);
+        us.position(0);
+        bs.limit(1);
+        bs.position(0);
+       
+        result = encoder.encode(us, bs, true);    
+        
+        us.limit(6);
+        us.position(4);
+        bs.limit(4);
+        bs.position(1);
+        
+        result = encoder.encode(us, bs, true);
+        
+        if (!result.isMalformed()) {
+            errln("Error while encoding UTF-16LE (3) should have occured.");
+        }          
+    }
+    
+    //provide better code coverage for the generic charset UTF32
+    public void TestCharsetUTF32() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset cs = provider.charsetForName("UTF-32");        
+        CharsetDecoder decoder = cs.newDecoder();
+        CharsetEncoder encoder = cs.newEncoder();
+        
+        //start of decoding code coverage
+        char us_array[] = {
+                0x0000, 0x0000, 0x0000, 0x0000,
+            };
+        
+        byte bs_array1[] = {
+                (byte)0x00, (byte)0x00, (byte)0xFE, (byte)0xFF,
+                (byte)0x00, (byte)0x00, (byte)0x04, (byte)0x43,
+                (byte)0xFF, (byte)0xFE, (byte)0x00, (byte)0x00,
+                (byte)0x43, (byte)0x04, (byte)0x00, (byte)0x00,
+            };
+        
+        byte bs_array2[] = {
+                (byte)0xFF, (byte)0xFE, (byte)0x00, (byte)0x00,
+                (byte)0x43, (byte)0x04, (byte)0x00, (byte)0x00,
+            };
+        
+        CharBuffer us = CharBuffer.allocate(us_array.length);
+        ByteBuffer bs = ByteBuffer.allocate(bs_array1.length);
+        
+        us.put(us_array);
+        bs.put(bs_array1);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+            
+        try {
+            smBufDecode(decoder, "UTF32-DE-1", bs, us, true, false);
+            errln("Malform exception while decoding UTF32 charset (1) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        decoder = cs.newDecoder();
+        
+        bs = ByteBuffer.allocate(bs_array2.length);
+        bs.put(bs_array2);
+        
+        us.limit(4);
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+            
+        try {
+            smBufDecode(decoder, "UTF32-DE-2", bs, us, true, false);
+        } catch (Exception ex) {
+            // should recognize little endian BOM
+            errln("Exception while decoding UTF32 charset (2) should not have been thrown.");
+        }
+        
+        //Test malform exception
+        bs.clear();
+        us.clear();
+        
+        bs.put((byte)0x00); bs.put((byte)0xFE); bs.put((byte)0xFF); bs.put((byte)0x00); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF32-DE-3", bs, us, true, false);
+            errln("Malform exception while decoding UTF32 charset (3) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        //Test BOM testing
+        bs.clear();
+        us.clear();
+        
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xFF); bs.put((byte)0xFE); 
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF32-DE-4", bs, us, true, false);
+        } catch (Exception ex) {
+            // should recognize big endian BOM
+            errln("Exception while decoding UTF32 charset (4) should not have been thrown.");
+        }
+        //end of decoding code coverage
+        
+        //start of encoding code coverage
+        us = CharBuffer.allocate(0x10);
+        bs = ByteBuffer.allocate(0x10);
+        
+        //test wite BOM overflow error
+        us.put((char)0xDC01);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        // must try to output BOM first for UTF-32 (not UTF-32BE or UTF-32LE)
+        if (!result.isOverflow()) {
+            errln("Buffer overflow error while encoding UTF32 charset (1) should have occurred."); 
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform surrogate and store value in fromChar32
+        us.put((char)0xD801); us.put((char)0xD802);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isMalformed()) {
+            errln("Malformed error while encoding UTF32 charset (2) should have occurred.");
+        }    
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform surrogate
+        us.put((char)0x0000); us.put((char)0xD902);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error while encoding UTF32 charset (3) should have occurred.");
+        } 
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform surrogate
+        encoder.reset();
+        us.put((char)0xD801);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+   
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isMalformed()) {
+            errln("Malform error while encoding UTF32 charset (4) should have occurred.");
+        } 
+        
+        us.clear();
+        bs.clear();
+        
+        //test overflow surrogate
+        us.put((char)0x0000); us.put((char)0xDDE1); us.put((char)0xD915); us.put((char)0xDDF2);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); 
+   
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error while encoding UTF32 charset (5) should have occurred.");
+        } 
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform surrogate
+        encoder.reset();
+        us.put((char)0xDDE1);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+   
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        if (!result.isMalformed()) {
+            errln("Malform error while encoding UTF32 charset (6) should have occurred.");
+        } 
+        //end of encoding code coverage
+    }
+    
+    //this method provides better code coverage decoding UTF32 LE/BE
+    public void TestDecodeUTF32LEBE() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder;
+        CharBuffer us = CharBuffer.allocate(0x10);
+        ByteBuffer bs = ByteBuffer.allocate(0x10);
+        
+        //decode UTF32LE
+        decoder = provider.charsetForName("UTF-32LE").newDecoder();
+        //test overflow buffer
+        bs.put((byte)0x41); bs.put((byte)0xFF); bs.put((byte)0x01); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, false);
+            errln("Overflow exception while decoding UTF32LE (1) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        // test overflow buffer handling in CharsetDecoderICU
+        bs.position(0);
+        us.position(0);
+        decoder.reset();
+        result = decoder.decode(bs, us, true);
+        if (result.isOverflow()) {
+            result = decoder.decode(bs, us, true);
+            if (!result.isOverflow()) {
+                errln("Overflow buffer error while decoding UTF32LE should have occurred.");
+            }
+        } else {
+            errln("Overflow buffer error while decoding UTF32LE should have occurred.");
+        }
+        
+        us.clear();
+        bs.clear();
+        //test malform buffer
+        bs.put((byte)0x02); bs.put((byte)0xD9); bs.put((byte)0x00); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, false);
+            errln("Malform exception while decoding UTF32LE (2) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        //test malform buffer
+        bs.put((byte)0xFF); bs.put((byte)0xFE); bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0xFF); bs.put((byte)0xDF); bs.put((byte)0x10); 
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            // must flush in order to exhibit malformed behavior
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, true);
+            errln("Malform exception while decoding UTF32LE (3) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        //test malform buffer
+        bs.put((byte)0xFF); bs.put((byte)0xFE); bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0x02); bs.put((byte)0xD9); bs.put((byte)0x00); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, false);
+            errln("Malform exception while decoding UTF32LE (4) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        us.clear();
+        bs.clear();
+        //test overflow buffer
+        bs.put((byte)0xFF); bs.put((byte)0xFE); bs.put((byte)0x00); bs.put((byte)0x00);
+        bs.put((byte)0xDD); bs.put((byte)0xFF); bs.put((byte)0x10); bs.put((byte)0x00);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32LE", bs, us, true, false);
+            errln("Overflow exception while decoding UTF32LE (5) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        //end of decode UTF32LE
+        
+        bs.clear();
+        us.clear();
+        
+        //decode UTF32BE
+        decoder = provider.charsetForName("UTF-32BE").newDecoder();
+        //test overflow buffer
+        bs.put((byte)0x00); bs.put((byte)0x01); bs.put((byte)0xFF); bs.put((byte)0x41);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, false);
+            errln("Overflow exception while decoding UTF32BE (1) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        //test malform buffer
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xD9); bs.put((byte)0x02);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, false);
+            errln("Malform exception while decoding UTF32BE (2) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        //test malform buffer
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xFE); bs.put((byte)0xFF);
+        bs.put((byte)0x10); bs.put((byte)0xFF); bs.put((byte)0xDF);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            // must flush to exhibit malformed behavior
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, true);
+            errln("Malform exception while decoding UTF32BE (3) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        //test overflow buffer
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xFE); bs.put((byte)0xFF);
+        bs.put((byte)0x00); bs.put((byte)0x10); bs.put((byte)0xFF); bs.put((byte)0xDD);
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, false);
+            errln("Overflow exception while decoding UTF32BE (4) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        
+        bs.clear();
+        us.clear();
+        //test malform buffer
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0xFE); 
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        try {
+            // must flush to exhibit malformed behavior
+            smBufDecode(decoder, "UTF-32BE", bs, us, true, true);
+            errln("Malform exception while decoding UTF32BE (5) should have been thrown.");
+        } catch (Exception ex) {
+        }
+        //end of decode UTF32BE
+    }
+    
+    //provide better code coverage for UTF8
+    public void TestCharsetUTF8() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("UTF-8").newDecoder();
+        CharsetEncoder encoder = provider.charsetForName("UTF-8").newEncoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x10);
+        ByteBuffer bs = ByteBuffer.allocate(0x10);
+        ByteBuffer bs2;
+        CharBuffer us2;
+        int limit_us;
+        int limit_bs;
+        
+        //encode and decode using read only buffer
+        encoder.reset();
+        decoder.reset();
+        us.put((char)0x0041); us.put((char)0x0081); us.put((char)0xEF65); us.put((char)0xD902);
+        bs.put((byte)0x41); bs.put((byte)0xc2); bs.put((byte)0x81); bs.put((byte)0xee); bs.put((byte)0xbd); bs.put((byte)0xa5);
+        bs.put((byte)0x00); 
+        limit_us = us.position();
+        limit_bs = bs.position();
+        
+        us.limit(limit_us);
+        us.position(0);
+        bs.limit(limit_bs);
+        bs.position(0);
+        bs2 = bs.asReadOnlyBuffer();
+        us2 = us.asReadOnlyBuffer();
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isUnderflow() || !equals(us, us2)) {
+            errln("Error while decoding UTF-8 (1) should not have occured.");
+        }
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(limit_bs);
+        bs.position(0);
+        
+        result = encoder.encode(us2, bs, true); 
+        if (!result.isUnderflow() || !equals(bs, bs2)) {
+            errln("Error while encoding UTF-8 (1) should not have occured.");
+        }  
+        
+        us.clear();
+        bs.clear();
+        
+        //test overflow buffer while encoding
+        //readonly buffer
+        encoder.reset();
+        us.put((char)0x0081); us.put((char)0xEF65); 
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        limit_us = us.position();
+        us2 = us.asReadOnlyBuffer();
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(1);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (2).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(1);
+        bs.limit(1);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (3).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(1);
+        bs.limit(2);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (4).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(2);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (5).");
+        }   
+        
+        //not readonly buffer
+        encoder.reset();
+        
+        us.limit(limit_us);
+        us.position(0);
+        bs.limit(1);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (6).");
+        }
+        
+        encoder.reset();
+        
+        us.limit(limit_us);
+        us.position(0);
+        bs.limit(3);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (7).");
+        }
+        
+        encoder.reset();
+        
+        us.limit(limit_us);
+        us.position(1);
+        bs.limit(2);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (8).");
+        }   
+        
+        encoder.reset();
+        
+        us.limit(limit_us + 1);
+        us.position(1);
+        bs.limit(3);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (9).");
+        }  
+        
+        us.clear();
+        bs.clear();
+        
+        //test encoding 4 byte characters
+        encoder.reset();
+        us.put((char)0xD902); us.put((char)0xDD02); us.put((char)0x0041);
+        bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00); bs.put((byte)0x00);
+        limit_us = us.position();
+        us2 = us.asReadOnlyBuffer();
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(1);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (10).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(2);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (11).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(3);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (12).");
+        }
+        
+        encoder.reset();
+        
+        us2.limit(limit_us);
+        us2.position(0);
+        bs.limit(4);
+        bs.position(0);
+        result = encoder.encode(us2, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow Error should have occured while encoding UTF-8 (13).");
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //decoding code coverage
+        //test malform error
+        decoder.reset();
+        bs.put((byte)0xC0); bs.put((byte)0xC0);
+        us.put((char)0x0000);
+        bs2 = bs.asReadOnlyBuffer();
+        
+        us.limit(1);
+        us.position(0);
+        bs2.limit(1);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        result = decoder.flush(us);
+        if (!result.isMalformed()) {
+            errln("Malform error should have occurred while decoding UTF-8 (1).");
+        }    
+        
+        us.limit(1);
+        us.position(0);
+        bs2.limit(1);
+        bs2.position(0);
+        
+        decoder.reset();
+        
+        result = decoder.decode(bs2, us, true);
+        us.limit(1);
+        us.position(0);
+        bs2.limit(2);
+        bs2.position(0);
+        result = decoder.decode(bs2, us, true);
+        if (!result.isMalformed()) {
+            errln("Malform error should have occurred while decoding UTF-8 (2).");
+        }  
+        
+        us.clear();
+        bs.clear();
+        
+        //test overflow buffer
+        bs.put((byte)0x01); bs.put((byte)0x41);
+        us.put((char)0x0000);
+        bs2 = bs.asReadOnlyBuffer();
+        us.limit(1);
+        us.position(0);
+        bs2.limit(2);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (3).");
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        //test malform string
+        decoder.reset();
+        bs.put((byte)0xF5); bs.put((byte)0xB4); bs.put((byte)0x8A); bs.put((byte)0x8C);
+        us.put((char)0x0000);
+        bs2 = bs.asReadOnlyBuffer();
+        us.limit(1);
+        us.position(0);
+        bs2.limit(4);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isMalformed()) {
+            errln("Malform error should have occurred while decoding UTF-8 (4).");
+        }
+        
+        bs.clear();
+        
+        //test overflow
+        decoder.reset();
+        bs.put((byte)0xF3); bs.put((byte)0xB4); bs.put((byte)0x8A); bs.put((byte)0x8C);
+        bs2 = bs.asReadOnlyBuffer();
+        us.limit(1);
+        us.position(0);
+        bs2.limit(4);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (5).");
+        }
+        
+        //test overflow
+        decoder.reset();
+        us.limit(2);
+        us.position(0);
+        bs2.limit(5);
+        bs2.position(0);
+        
+        result = decoder.decode(bs2, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (5).");
+        }
+        
+        //test overflow
+        decoder.reset();
+        us.limit(1);
+        us.position(0);
+        bs.limit(5);
+        bs.position(0);
+        
+        result = decoder.decode(bs, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (6).");
+        }
+      
+        bs.clear();
+        
+        //test overflow
+        decoder.reset();
+        bs.put((byte)0x41); bs.put((byte)0x42);
+        us.limit(1);
+        us.position(0);
+        bs.limit(2);
+        bs.position(0);
+        
+        result = decoder.decode(bs, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow error should have occurred while decoding UTF-8 (7).");
+        }
+        
+    }
+    
+    //provide better code coverage for Charset UTF16
+    public void TestCharsetUTF16() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("UTF-16").newDecoder();
+        CharsetEncoder encoder = provider.charsetForName("UTF-16").newEncoder();
+        
+        CharBuffer us = CharBuffer.allocate(0x10);
+        ByteBuffer bs = ByteBuffer.allocate(0x10);
+        
+        //test flush buffer and malform string
+        bs.put((byte)0xFF); 
+        us.put((char)0x0000);
+        
+        us.limit(us.position());
+        us.position(0);
+        bs.limit(bs.position());
+        bs.position(0);
+        
+        result = decoder.decode(bs, us, true);
+        result = decoder.flush(us);
+        if (!result.isMalformed()) {
+            errln("Malform error while decoding UTF-16 should have occurred.");
+        }
+        
+        us.clear();
+        bs.clear();
+        
+        us.put((char)0xD902); us.put((char)0xDD01); us.put((char)0x0041);
+        
+        us.limit(1);
+        us.position(0);
+        bs.limit(4);
+        bs.position(0);
+        
+        result = encoder.encode(us, bs, true);
+        us.limit(3);
+        us.position(0);
+        bs.limit(3);
+        bs.position(0);
+        result = encoder.encode(us, bs, true);
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while encoding UTF-16 should have occurred.");
+        }   
+        
+        us.clear();
+        bs.clear();
+        
+        //test overflow buffer
+        decoder.reset();
+        decoder = provider.charsetForName("UTF-16BE").newDecoder();
+        
+        bs.put((byte)0xFF); bs.put((byte)0xFE); bs.put((byte)0x41);
+        
+        us.limit(0);
+        us.position(0);
+        bs.limit(3);
+        bs.position(0);
+        
+        result = decoder.decode(bs, us, true);
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while decoding UTF-16 should have occurred.");
+        }        
+    }
+    
+    //provide better code coverage for Charset ISO-2022-KR
+    public void TestCharsetISO2022KR() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("ISO-2022-KR").newDecoder();
+        
+        byte bytearray[] = {
+                (byte)0x1b, (byte)0x24, (byte)0x29, (byte)0x43, (byte)0x41, (byte)0x42,
+        };
+        char chararray[] = {
+                (char)0x0041
+        };
+        ByteBuffer bb = ByteBuffer.wrap(bytearray);
+        CharBuffer cb = CharBuffer.wrap(chararray);
+        
+        result = decoder.decode(bb, cb, true);
+        
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while decoding ISO-2022-KR should have occurred.");
+        }
+        
+        /* This is part of the ambiguous converter test in ICU4C and is used here to provide
+         * better code coverage.
+         */
+        byte [] bytearray2 = {
+                0x61, 0x5b, 0x5c
+        };
+        
+        bb = ByteBuffer.wrap(bytearray2);
+        cb = CharBuffer.allocate(20);
+        
+        result = decoder.decode(bb, cb, true);
+        if (!result.isMalformed()) {
+            errln("Malformed error while decoding ISO-2022-KR should have occurred.");
+        }
+    }
+    
+    //provide better code coverage for Charset ISO-2022-JP
+    public void TestCharsetISO2022JP() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("ISO-2022-JP-2").newDecoder();
+        
+        byte bytearray[] = {
+                (byte)0x1b, (byte)0x24, (byte)0x28, (byte)0x44, (byte)0x0A, (byte)0x41,
+        };
+        char chararray[] = {
+                (char)0x000A
+        };
+        ByteBuffer bb = ByteBuffer.wrap(bytearray);
+        CharBuffer cb = CharBuffer.wrap(chararray);
+        
+        result = decoder.decode(bb, cb, true);
+        
+        if (!result.isOverflow()) {
+            errln("Overflow buffer while decoding ISO-2022-KR should have occurred.");
+        }
+    }
+    
+    //provide better code coverage for Charset ASCII
+    public void TestCharsetASCII() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetDecoder decoder = provider.charsetForName("US-ASCII").newDecoder();
+        
+        byte bytearray[] = {
+                (byte)0x41
+        };
+        char chararray[] = {
+                (char)0x0041
+        };
+        
+        ByteBuffer bb = ByteBuffer.wrap(bytearray);
+        CharBuffer cb = CharBuffer.wrap(chararray);
+        
+        result = decoder.decode(bb, cb, true);
+        result = decoder.flush(cb);
+        
+        if (result.isError()) {
+            errln("Error occurred while decoding US-ASCII.");
+        }
+    }
+    
+    // provide better code coverage for Charset Callbacks
+    /* Different aspects of callbacks are being tested including using different context available */
+    public void TestCharsetCallbacks() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProvider provider = new CharsetProviderICU();       
+        CharsetEncoder encoder = provider.charsetForName("iso-2022-jp").newEncoder();
+        CharsetDecoder decoder = provider.charsetForName("iso-2022-jp").newDecoder();
+        
+        String context3[] = {
+                "i",
+                "J"
+        };
+        
+        // Testing encoder escape callback
+        String context1[] = {
+                "J",
+                "C",
+                "D",
+                null
+        };
+        char chararray[] = {
+                (char)0xd122
+        };
+        ByteBuffer bb = ByteBuffer.allocate(20);
+        CharBuffer cb = CharBuffer.wrap(chararray);
+        
+        ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.OVERFLOW, CharsetCallback.FROM_U_CALLBACK_ESCAPE, null);  // This callback is not valid.
+        for (int i = 0; i < context1.length; i++) {
+            encoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.unmappableForLength(1), CharsetCallback.FROM_U_CALLBACK_ESCAPE, context1[i]); // This callback is valid.
+            
+            result = encoder.encode(cb, bb, true);
+            if (result.isError()) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP encoder.");
+            }
+        }
+        
+        // Testing encoder skip callback
+        for (int i = 0; i < context3.length; i++) {
+            encoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.unmappableForLength(1), CharsetCallback.FROM_U_CALLBACK_SKIP, context3[i]); 
+            
+            result = encoder.encode(cb, bb, true);
+            if (result.isError() && i == 0) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP encoder.");
+            }
+        }
+        
+        // Testing encoder sub callback
+        for (int i = 0; i < context3.length; i++) {
+            encoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.unmappableForLength(1), CharsetCallback.FROM_U_CALLBACK_SUBSTITUTE, context3[i]); 
+            
+            result = encoder.encode(cb, bb, true);
+            if (result.isError() && i == 0) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP encoder.");
+            }
+        }
+        
+        // Testing decoder escape callback
+        String context2[] = {
+                "X",
+                "C",
+                "D",
+                null
+        };
+        byte bytearray[] = {
+                (byte)0x1b, (byte)0x2e, (byte)0x43
+        };
+        bb = ByteBuffer.wrap(bytearray);
+        cb = CharBuffer.allocate(20);
+        
+        ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.OVERFLOW, CharsetCallback.TO_U_CALLBACK_ESCAPE, null);  // This callback is not valid.
+        for (int i = 0; i < context2.length; i++) {
+            decoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.malformedForLength(1), CharsetCallback.TO_U_CALLBACK_ESCAPE, context2[i]); // This callback is valid.
+            
+            result = decoder.decode(bb, cb, true);
+            if (result.isError()) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP decoder.");
+            }
+        }
+        
+        // Testing decoder skip callback
+        for (int i = 0; i < context3.length; i++) {
+            decoder.reset();
+            cb.position(0);
+            bb.position(0);
+            ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.malformedForLength(1), CharsetCallback.TO_U_CALLBACK_SKIP, context3[i]);
+            result = decoder.decode(bb, cb, true);
+            if (!result.isError()) {
+                errln("Error occurred while testing of callbacks for ISO-2022-JP decoder should have occurred.");
+            }
+        }
+    }
+    
+    // Testing invalid input exceptions
+    public void TestInvalidInput() {
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset charset = provider.charsetForName("iso-2022-jp");
+        CharsetEncoder encoder = charset.newEncoder();
+        CharsetDecoder decoder = charset.newDecoder();
+        
+        try {
+            encoder.encode(CharBuffer.allocate(10), null, true);
+            errln("Illegal argument exception should have been thrown due to null target.");
+        } catch (Exception ex) {
+        }
+        
+        try {
+            decoder.decode(ByteBuffer.allocate(10), null, true);
+            errln("Illegal argument exception should have been thrown due to null target.");
+        } catch (Exception ex) {
+        }
+    }
+    
+    // Test java canonical names
+    public void TestGetICUJavaCanonicalNames() {
+        // Ambiguous charset name.
+        String javaCName = CharsetProviderICU.getJavaCanonicalName("windows-1250");
+        String icuCName = CharsetProviderICU.getICUCanonicalName("Windows-1250");
+        if (javaCName == null || icuCName == null) {
+            errln("Unable to get Java or ICU canonical name from ambiguous alias");
+        }
+        
+    }
+    
+    // Port over from ICU4C for test conversion tables (mbcs version 5.x)
+    // Provide better code coverage in CharsetMBCS, CharsetDecoderICU, and CharsetEncoderICU.
+    public void TestCharsetTestData() {
+        CoderResult result = CoderResult.UNDERFLOW;
+        String charsetName = "test4";
+        CharsetProvider provider = new CharsetProviderICU();
+        Charset charset = ((CharsetProviderICU)provider).charsetForName(charsetName, "com/ibm/icu/dev/data/testdata",
+                            this.getClass().getClassLoader());
+        CharsetEncoder encoder = charset.newEncoder();
+        CharsetDecoder decoder = charset.newDecoder();
+        
+        byte bytearray[] = {
+                0x01, 0x02, 0x03, 0x0a,
+                0x01, 0x02, 0x03, 0x0b,
+                0x01, 0x02, 0x03, 0x0d,
+        };
+        
+        // set the callback for overflow errors
+        ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.OVERFLOW, CharsetCallback.TO_U_CALLBACK_STOP, null);
+        
+        ByteBuffer bb = ByteBuffer.wrap(bytearray);
+        CharBuffer cb = CharBuffer.allocate(10);
+        
+        bb.limit(4);
+        cb.limit(1); // Overflow should occur and is expected
+        result = decoder.decode(bb, cb, false);
+        if (result.isError()) {
+            errln("Error occurred while decoding: " + charsetName + " with error: " + result);
+        }
+        
+        bb.limit(8);
+        result = decoder.decode(bb, cb, false);
+        if (result.isError()) {
+            errln("Error occurred while decoding: " + charsetName + " with error: " + result);
+        }
+        
+        bb.limit(12);
+        result = decoder.decode(bb, cb, true);
+        if (result.isError()) {
+            errln("Error occurred while decoding: " + charsetName + " with error: " + result);
+        }
+        
+        char chararray[] = {
+                0xDBC4,0xDE34,0xD900,0xDC05,/* \U00101234\U00050005 */
+                0xD940,     /* first half of \U00060006 or \U00060007 */
+                0xDC07/* second half of \U00060007 */
+        };
+        
+        cb = CharBuffer.wrap(chararray);
+        bb = ByteBuffer.allocate(10);
+        
+        bb.limit(2);
+        cb.limit(4);
+        result = encoder.encode(cb, bb, false);
+        if (result.isError()) {
+            errln("Error occurred while encoding: " + charsetName + " with error: " + result);
+        }
+        cb.limit(5);
+        result = encoder.encode(cb, bb, false);
+        if (result.isError()) {
+            errln("Error occurred while encoding: " + charsetName + " with error: " + result);
+        }
+        cb.limit(6);
+        result = encoder.encode(cb, bb, true);
+        if (!result.isError()) {
+            errln("Error should have occurred while encoding: " + charsetName);
+        }
+    }
+    
+    /* Round trip test of SCSU converter*/
+    public void TestSCSUConverter(){
+        byte allFeaturesSCSU[]={
+            0x41,(byte) 0xdf, 0x12,(byte) 0x81, 0x03, 0x5f, 0x10, (byte)0xdf, 0x1b, 0x03,
+            (byte)0xdf, 0x1c,(byte) 0x88,(byte) 0x80, 0x0b, (byte)0xbf,(byte) 0xff,(byte) 0xff, 0x0d, 0x0a,
+            0x41, 0x10, (byte)0xdf, 0x12, (byte)0x81, 0x03, 0x5f, 0x10, (byte)0xdf, 0x13,
+            (byte)0xdf, 0x14,(byte) 0x80, 0x15, (byte)0xff 
+        }; 
+
+        char allFeaturesUTF16[]={
+            0x0041, 0x00df, 0x0401, 0x015f, 0x00df, 0x01df, 0xf000, 0xdbff,
+            0xdfff, 0x000d, 0x000a, 0x0041, 0x00df, 0x0401, 0x015f, 0x00df,
+            0x01df, 0xf000, 0xdbff, 0xdfff
+        };
+
+        
+        char germanUTF16[]={
+            0x00d6, 0x006c, 0x0020, 0x0066, 0x006c, 0x0069, 0x0065, 0x00df, 0x0074
+        };
+
+        byte germanSCSU[]={
+            (byte)0xd6, 0x6c, 0x20, 0x66, 0x6c, 0x69, 0x65,(byte) 0xdf, 0x74
+        };
+
+       char russianUTF16[]={
+            0x041c, 0x043e, 0x0441, 0x043a, 0x0432, 0x0430
+        };
+
+       byte russianSCSU[]={
+            0x12, (byte)0x9c,(byte)0xbe,(byte) 0xc1, (byte)0xba, (byte)0xb2, (byte)0xb0
+        };
+
+       char japaneseUTF16[]={
+            0x3000, 0x266a, 0x30ea, 0x30f3, 0x30b4, 0x53ef, 0x611b,
+            0x3044, 0x3084, 0x53ef, 0x611b, 0x3044, 0x3084, 0x30ea, 0x30f3,
+            0x30b4, 0x3002, 0x534a, 0x4e16, 0x7d00, 0x3082, 0x524d, 0x306b,
+            0x6d41, 0x884c, 0x3057, 0x305f, 0x300c, 0x30ea, 0x30f3, 0x30b4,
+            0x306e, 0x6b4c, 0x300d, 0x304c, 0x3074, 0x3063, 0x305f, 0x308a,
+            0x3059, 0x308b, 0x304b, 0x3082, 0x3057, 0x308c, 0x306a, 0x3044,
+            0x3002, 0x7c73, 0x30a2, 0x30c3, 0x30d7, 0x30eb, 0x30b3, 0x30f3,
+            0x30d4, 0x30e5, 0x30fc, 0x30bf, 0x793e, 0x306e, 0x30d1, 0x30bd,
+            0x30b3, 0x30f3, 0x300c, 0x30de, 0x30c3, 0x30af, 0xff08, 0x30de,
+            0x30c3, 0x30ad, 0x30f3, 0x30c8, 0x30c3, 0x30b7, 0x30e5, 0xff09,
+            0x300d, 0x3092, 0x3001, 0x3053, 0x3088, 0x306a, 0x304f, 0x611b,
+            0x3059, 0x308b, 0x4eba, 0x305f, 0x3061, 0x306e, 0x3053, 0x3068,
+            0x3060, 0x3002, 0x300c, 0x30a2, 0x30c3, 0x30d7, 0x30eb, 0x4fe1,
+            0x8005, 0x300d, 0x306a, 0x3093, 0x3066, 0x8a00, 0x3044, 0x65b9,
+            0x307e, 0x3067, 0x3042, 0x308b, 0x3002
+        };
+
+        // SCSUEncoder produces a slightly longer result (179B vs. 178B) because of one different choice:
+         //it uses an SQn once where a longer look-ahead could have shown that SCn is more efficient 
+        byte japaneseSCSU[]={
+            0x08, 0x00, 0x1b, 0x4c,(byte) 0xea, 0x16, (byte)0xca, (byte)0xd3,(byte) 0x94, 0x0f, 0x53, (byte)0xef, 0x61, 0x1b, (byte)0xe5,(byte) 0x84,
+            (byte)0xc4, 0x0f, (byte)0x53,(byte) 0xef, 0x61, 0x1b, (byte)0xe5, (byte)0x84, (byte)0xc4, 0x16, (byte)0xca, (byte)0xd3, (byte)0x94, 0x08, 0x02, 0x0f,
+            0x53, 0x4a, 0x4e, 0x16, 0x7d, 0x00, 0x30, (byte)0x82, 0x52, 0x4d, 0x30, 0x6b, 0x6d, 0x41,(byte) 0x88, 0x4c,
+            (byte) 0xe5,(byte) 0x97, (byte)0x9f, 0x08, 0x0c, 0x16,(byte) 0xca,(byte) 0xd3, (byte)0x94, 0x15, (byte)0xae, 0x0e, 0x6b, 0x4c, 0x08, 0x0d,
+            (byte) 0x8c, (byte)0xb4, (byte)0xa3,(byte) 0x9f,(byte) 0xca, (byte)0x99, (byte)0xcb,(byte) 0x8b, (byte)0xc2,(byte) 0x97,(byte) 0xcc,(byte) 0xaa,(byte) 0x84, 0x08, 0x02, 0x0e,
+            0x7c, 0x73, (byte)0xe2, 0x16, (byte)0xa3,(byte) 0xb7, (byte)0xcb, (byte)0x93, (byte)0xd3,(byte) 0xb4,(byte) 0xc5, (byte)0xdc, (byte)0x9f, 0x0e, 0x79, 0x3e,
+            0x06, (byte)0xae, (byte)0xb1, (byte)0x9d,(byte) 0x93, (byte)0xd3, 0x08, 0x0c, (byte)0xbe,(byte) 0xa3, (byte)0x8f, 0x08,(byte) 0x88,(byte) 0xbe,(byte) 0xa3,(byte) 0x8d,
+            (byte)0xd3,(byte) 0xa8, (byte)0xa3, (byte)0x97,(byte) 0xc5, 0x17,(byte) 0x89, 0x08, 0x0d, 0x15,(byte) 0xd2, 0x08, 0x01, (byte)0x93, (byte)0xc8,(byte) 0xaa,
+            (byte)0x8f, 0x0e, 0x61, 0x1b, (byte)0x99,(byte) 0xcb, 0x0e, 0x4e, (byte)0xba, (byte)0x9f, (byte)0xa1,(byte) 0xae,(byte) 0x93, (byte)0xa8,(byte) 0xa0, 0x08,
+            0x02, 0x08, 0x0c, (byte)0xe2, 0x16, (byte)0xa3, (byte)0xb7, (byte)0xcb, 0x0f, 0x4f,(byte) 0xe1,(byte) 0x80, 0x05,(byte) 0xec, 0x60, (byte)0x8d,
+            (byte)0xea, 0x06,(byte) 0xd3,(byte) 0xe6, 0x0f,(byte) 0x8a, 0x00, 0x30, 0x44, 0x65,(byte) 0xb9, (byte)0xe4, (byte)0xfe,(byte) 0xe7,(byte) 0xc2, 0x06,
+            (byte)0xcb, (byte)0x82
+        };
+        
+        CharsetProviderICU cs = new CharsetProviderICU();
+        CharsetICU charset = (CharsetICU)cs.charsetForName("scsu");
+        CharsetDecoder decode = charset.newDecoder();
+        CharsetEncoder encode = charset.newEncoder();
+        
+        //String[] codePoints = {"allFeatures", "german","russian","japanese"};
+        byte[][] fromUnicode={allFeaturesSCSU,germanSCSU,russianSCSU,japaneseSCSU};
+        char[][] toUnicode = {allFeaturesUTF16, germanUTF16,russianUTF16,japaneseUTF16};
+        
+        for(int i=0;i<4;i++){
+            ByteBuffer decoderBuffer = ByteBuffer.wrap(fromUnicode[i]);
+            CharBuffer encoderBuffer = CharBuffer.wrap(toUnicode[i]);
+                           
+            try{
+                // Decoding 
+                CharBuffer decoderResult = decode.decode(decoderBuffer);
+                encoderBuffer.position(0);
+                if(!decoderResult.equals(encoderBuffer)){
+                    errln("Error occured while decoding "+ charset.name());
+                }
+                // Encoding 
+                ByteBuffer encoderResult = encode.encode(encoderBuffer);
+                // RoundTrip Test
+                ByteBuffer roundTrip = encoderResult;
+                CharBuffer roundTripResult = decode.decode(roundTrip);
+                encoderBuffer.position(0);
+                if(!roundTripResult.equals(encoderBuffer)){
+                    errln("Error occured while encoding "+ charset.name());
+                }
+            }catch(Exception e){
+                errln("Exception while converting SCSU thrown: " + e);
+            }
+        }
+    } 
+    
+    /* Test for BOCU1 converter*/
+    public void TestBOCU1Converter(){
+        char expected[]={
+                  0xFEFF, 0x0061, 0x0062, 0x0020, // 0 
+                  0x0063, 0x0061, 0x000D, 0x000A,
+
+                  0x0020, 0x0000, 0x00DF, 0x00E6, // 8 
+                  0x0930, 0x0020, 0x0918, 0x0909,
+
+                  0x3086, 0x304D, 0x0020, 0x3053, // 16 
+                  0x4000, 0x4E00, 0x7777, 0x0020, 
+
+                  0x9FA5, 0x4E00, 0xAC00, 0xBCDE, // 24 
+                  0x0020, 0xD7A3, 0xDC00, 0xD800,
+
+                  0xD800, 0xDC00, 0xD845, 0xDDDD, // 32 
+                  0xDBBB, 0xDDEE, 0x0020, 0xDBFF,
+
+                  0xDFFF, 0x0001, 0x0E40, 0x0020, // 40 
+                  0x0009  
+        };
+        
+        byte sampleText[]={ // from cintltst/bocu1tst.c/TestBOCU1 text 1 
+            (byte) 0xFB,
+            (byte) 0xEE,
+            0x28, // from source offset 0
+            0x24, 0x1E, 0x52, (byte) 0xB2, 0x20,
+            (byte) 0xB3,
+            (byte) 0xB1,
+            0x0D,
+            0x0A,
+
+            0x20, // from 8
+            0x00, (byte) 0xD0, 0x6C, (byte) 0xB6, (byte) 0xD8, (byte) 0xA5,
+            0x20, 0x68,
+            0x59,
+
+            (byte) 0xF9,
+            0x28, // from 16
+            0x6D, 0x20, 0x73, (byte) 0xE0, 0x2D, (byte) 0xDE, 0x43,
+            (byte) 0xD0, 0x33, 0x20,
+
+            (byte) 0xFA,
+            (byte) 0x83, // from 24
+            0x25, 0x01, (byte) 0xFB, 0x16, (byte) 0x87, 0x4B, 0x16, 0x20,
+            (byte) 0xE6, (byte) 0xBD, (byte) 0xEB, 0x5B, 0x4B, (byte) 0xCC,
+
+            (byte) 0xF9,
+            (byte) 0xA2, // from 32
+            (byte) 0xFC, 0x10, 0x3E, (byte) 0xFE, 0x16, 0x3A, (byte) 0x8C,
+            0x20, (byte) 0xFC, 0x03, (byte) 0xAC,
+
+            0x01, /// from 41 
+            (byte) 0xDE, (byte) 0x83, 0x20, 0x09 
+        };
+        
+        CharsetProviderICU cs = new CharsetProviderICU();
+        CharsetICU charset = (CharsetICU)cs.charsetForName("BOCU-1");
+        CharsetDecoder decode = charset.newDecoder();
+        CharsetEncoder encode = charset.newEncoder();
+       
+        ByteBuffer decoderBuffer = ByteBuffer.wrap(sampleText);
+        CharBuffer encoderBuffer = CharBuffer.wrap(expected);
+        try{
+            // Decoding 
+            CharBuffer decoderResult = decode.decode(decoderBuffer);
+            
+            encoderBuffer.position(0);
+            if(!decoderResult.equals(encoderBuffer)){
+                errln("Error occured while decoding "+ charset.name());
+            }
+            // Encoding 
+            ByteBuffer encoderResult = encode.encode(encoderBuffer);
+            // RoundTrip Test
+            ByteBuffer roundTrip = encoderResult;
+            CharBuffer roundTripResult = decode.decode(roundTrip);
+            
+            encoderBuffer.position(0);
+            if(!roundTripResult.equals(encoderBuffer)){
+                errln("Error occured while encoding "+ charset.name());
+            }
+        }catch(Exception e){
+            errln("Exception while converting BOCU-1 thrown: " + e);
+        }
+    }
+    
+    /* Test that ICU4C and ICU4J get the same ICU canonical name when given the same alias. */
+    public void TestICUCanonicalNameConsistency() {
+        String[] alias = {
+                "KSC_5601"
+        };
+        String[] expected = {
+                "windows-949-2000"
+        };
+
+        for (int i = 0; i < alias.length; i++) {
+            String name = CharsetProviderICU.getICUCanonicalName(alias[i]);
+            if (!name.equals(expected[i])) {
+                errln("The ICU canonical name in ICU4J does not match that in ICU4C. Result: " + name + "Expected: " + expected[i]);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/charset/TestConversion.java b/src/com/ibm/icu/dev/test/charset/TestConversion.java
new file mode 100644
index 0000000..c79ecfa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charset/TestConversion.java
@@ -0,0 +1,1159 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.charset;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+import java.util.Iterator;
+
+import com.ibm.icu.charset.CharsetCallback;
+import com.ibm.icu.charset.CharsetEncoderICU;
+import com.ibm.icu.charset.CharsetDecoderICU;
+import com.ibm.icu.charset.CharsetICU;
+import com.ibm.icu.charset.CharsetProviderICU;
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * This maps to convtest.c which tests the test file for data-driven conversion tests. 
+ * 
+ */
+public class TestConversion extends ModuleTest {
+    /**
+     * This maps to the C struct of conversion case in convtest.h that stores the
+     * data for a conversion test
+     * 
+     */
+    private class ConversionCase {
+        int caseNr;                                             // testcase index   
+        String option = null;                                   // callback options
+        CodingErrorAction cbErrorAction = null;                 // callback action type
+        CharBuffer toUnicodeResult = null;
+        ByteBuffer fromUnicodeResult = null;
+        
+        // data retrieved from a test case conversion.txt
+        String charset;                                         // charset
+        String unicode;                                         // unicode string
+        ByteBuffer bytes;                                       // byte
+        int[] offsets;                                          // offsets
+        boolean finalFlush;                                     // flush
+        boolean fallbacks;                                      // fallback
+        String outErrorCode;                                    // errorCode
+        String cbopt;                                           // callback 
+        
+        // TestGetUnicodeSet variables
+        String map;
+        String mapnot;
+        int which;
+        
+        // CharsetCallback encoder and decoder
+        CharsetCallback.Decoder cbDecoder = null;
+        CharsetCallback.Encoder cbEncoder = null;
+        
+        String caseNrAsString() {
+            return "[" + caseNr + "]";
+        }
+    }
+
+    // public methods --------------------------------------------------------
+
+    public static void main(String[] args) throws Exception {
+        new TestConversion().run(args);
+    }
+
+    public TestConversion() {
+        super("com/ibm/icu/dev/data/testdata/", "conversion");
+    }
+
+    /*
+     * This method maps to the convtest.cpp runIndexedTest() method to run each
+     * type of conversion.
+     */
+    public void processModules() {
+        try {
+            int testFromUnicode = 0;
+            int testToUnicode = 0;
+            String testName = t.getName().toString();
+
+            // Iterate through and get each of the test case to process
+            for (Iterator iter = t.getDataIterator(); iter.hasNext();) {
+                DataMap testcase = (DataMap) iter.next();
+
+                if (testName.equalsIgnoreCase("toUnicode")) {
+                    TestToUnicode(testcase, testToUnicode);
+                    testToUnicode++;
+
+                } else if (testName.equalsIgnoreCase("fromUnicode")) {
+                    TestFromUnicode(testcase, testFromUnicode);
+                    testFromUnicode++;
+                } else if (testName.equalsIgnoreCase("getUnicodeSet")) {
+                    TestGetUnicodeSet(testcase);
+                } else {
+                    warnln("Could not load the test cases for conversion");
+                    continue;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    // private methods -------------------------------------------------------
+
+    
+    // fromUnicode test worker functions --------------------------------------- 
+    private void TestFromUnicode(DataMap testcase, int caseNr) {
+        
+        ConversionCase cc = new ConversionCase();
+        
+        try {
+            // retrieve test case data
+            cc.caseNr = caseNr;
+            cc.charset = ((ICUResourceBundle) testcase.getObject("charset")).getString();
+            cc.unicode = ((ICUResourceBundle) testcase.getObject("unicode")).getString();
+            cc.bytes = ((ICUResourceBundle) testcase.getObject("bytes")).getBinary();
+            cc.offsets = ((ICUResourceBundle) testcase.getObject("offsets")).getIntVector();
+            cc.finalFlush = ((ICUResourceBundle) testcase.getObject("flush")).getUInt() != 0;
+            cc.fallbacks = ((ICUResourceBundle) testcase.getObject("fallbacks")).getUInt() != 0;
+            cc.outErrorCode = ((ICUResourceBundle) testcase.getObject("errorCode")).getString();
+            cc.cbopt = ((ICUResourceBundle) testcase.getObject("callback")).getString();
+
+        } catch (Exception e) {
+            errln("Skipping test:");
+            errln("error parsing conversion/toUnicode test case " + cc.caseNr);
+            return;
+        }
+
+        // ----for debugging only
+        logln("");
+        logln("TestFromUnicode[" + caseNr + "] " + cc.charset + " ");
+        logln("Unicode:   " + cc.unicode);
+        logln("Bytes:    " + printbytes(cc.bytes, cc.bytes.limit()));
+        ByteBuffer c = ByteBuffer.wrap(cc.cbopt.getBytes());
+        logln("Callback: " + printbytes(c, c.limit()) + " (" + cc.cbopt + ")");
+        logln("...............................................");
+
+        // process the retrieved test data case
+        if (cc.offsets.length == 0) {
+            cc.offsets = null;
+        } else if (cc.offsets.length != cc.bytes.limit()) {
+            errln("fromUnicode[" + cc.caseNr + "] bytes[" + cc.bytes
+                    + "] and offsets[" + cc.offsets.length
+                    + "] must have the same length");
+            return;
+        }
+
+        // check the callback replacement value
+        if (cc.cbopt.length() > 0) {
+
+            switch ((cc.cbopt).charAt(0)) {
+            case '?':
+                cc.cbErrorAction = CodingErrorAction.REPLACE;
+                break;
+            case '0':
+                cc.cbErrorAction = CodingErrorAction.IGNORE;
+                break;
+            case '.':
+                cc.cbErrorAction = CodingErrorAction.REPORT;
+                break;
+            case '&':
+                cc.cbErrorAction = CodingErrorAction.REPLACE;
+                cc.cbEncoder = CharsetCallback.FROM_U_CALLBACK_ESCAPE;
+                break;
+            default:
+                cc.cbErrorAction = null;
+                break;
+            }
+
+            // check for any options for the callback value -- 
+            cc.option = cc.cbErrorAction == null ? cc.cbopt : cc.cbopt
+                    .substring(1);
+            if (cc.option == null) {
+                cc.option = null;
+            }
+        }
+        FromUnicodeCase(cc);
+    }
+
+    
+    private void FromUnicodeCase(ConversionCase cc) {
+
+        // create charset encoder for conversion test
+        CharsetProviderICU provider = new CharsetProviderICU();
+        CharsetEncoder encoder = null;
+        Charset charset = null;
+        try {
+            // if cc.charset starts with '*', obtain it from com/ibm/icu/dev/data/testdata
+            charset = (cc.charset != null && cc.charset.length() > 0 && cc.charset.charAt(0) == '*')
+                    ? (Charset) provider.charsetForName(cc.charset.substring(1),
+                        "com/ibm/icu/dev/data/testdata", this.getClass().getClassLoader())
+                    : (Charset) provider.charsetForName(cc.charset);
+            encoder = (CharsetEncoder) charset.newEncoder();
+            encoder.onMalformedInput(CodingErrorAction.REPLACE);
+            encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+            if (encoder instanceof CharsetEncoderICU) {
+                ((CharsetEncoderICU)encoder).setFallbackUsed(cc.fallbacks);
+                if (((CharsetEncoderICU)encoder).isFallbackUsed() != cc.fallbacks) {
+                    errln("Fallback could not be set for " + cc.charset);
+                }
+            }
+            
+        } catch (Exception e) {
+            errln(cc.charset + " was not found");
+            return;
+        }
+        
+        // set the callback for the encoder 
+        if (cc.cbErrorAction != null) {
+            if (cc.cbEncoder != null) {
+                ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.malformedForLength(1), cc.cbEncoder, cc.option);
+                ((CharsetEncoderICU)encoder).setFromUCallback(CoderResult.unmappableForLength(1), cc.cbEncoder, cc.option);
+            } else {
+                encoder.onUnmappableCharacter(cc.cbErrorAction);
+                encoder.onMalformedInput(cc.cbErrorAction);
+            }
+
+            // if action has an option, put in the option for the case
+            if (cc.option.equals("i")) {
+                encoder.onMalformedInput(CodingErrorAction.REPORT);
+            }
+
+            // if callback action is replace,
+          //   and there is a subchar
+            // replace the decoder's default replacement value
+            // if substring, skip test due to current api not supporting
+            // substring
+            if (cc.cbErrorAction.equals(CodingErrorAction.REPLACE)) {
+                if (cc.cbopt.length() > 1) {
+                    if (cc.cbopt.length() > 1 && cc.cbopt.charAt(1) == '=') {
+                        logln("Skipping test due to limitation in Java API - substitution string not supported");
+                        return;
+                    } else {
+                        // // read NUL-separated subchar first, if any
+                        // copy the subchar from Latin-1 characters
+                        // start after the NUL
+                        if (cc.cbopt.charAt(1) == 0x00) {
+                            cc.cbopt = cc.cbopt.substring(2);
+
+                            try {
+                                encoder.replaceWith(toByteArray(cc.cbopt));
+                            } catch (Exception e) {
+                                logln("Skipping test due to limitation in Java API - substitution character sequence size error");
+                                return;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        // do charset encoding from unicode
+
+        // testing by steps using charset.encoder(in,out,flush)
+        int resultLength;
+        boolean ok;
+        String steps[][] = { { "0", "bulk" }, // must be first for offsets to be checked
+                { "1", "step=1" }, { "3", "step=3" }, { "7", "step=7" } };
+        int i, step;
+
+        ok = true;
+
+        for (i = 0; i < steps.length && ok; ++i) {
+            step = Integer.parseInt(steps[i][0]);
+
+            logln("Testing step:[" + step + "]");
+            try {
+                resultLength = stepFromUnicode(cc, encoder, step);
+                ok = checkFromUnicode(cc, resultLength);
+            } catch (Exception ex) {
+                errln("Test failed: " + ex.getClass().getName() + " thrown: " + cc.charset+ " [" + cc.caseNr + "]");
+                ex.printStackTrace(System.out);
+                return;
+            }
+
+        }
+        // testing by whole buffer using out = charset.encoder(in)
+        while (ok && cc.finalFlush) {
+            logln("Testing java API charset.encoder(in):");
+            cc.fromUnicodeResult = null;
+            ByteBuffer out = null;
+
+            try {
+                out = encoder.encode(CharBuffer.wrap(cc.unicode.toCharArray()));
+                out.position(out.limit());
+                if (out.limit() != out.capacity() || cc.finalFlush) {
+                    int pos = out.position();
+                    byte[] temp = out.array();
+                    out = ByteBuffer.allocate(temp.length * 4);
+                    out.put(temp);
+                    out.position(pos);
+                    CoderResult cr = encoder.flush(out);
+                    if (cr.isOverflow()) {
+                        logln("Overflow error with flushing encoder");
+                    }
+                }
+                cc.fromUnicodeResult = out;
+
+                ok = checkFromUnicode(cc, out.limit());
+                if (!ok) {
+                    break;
+                }
+            } catch (Exception e) {
+                //check the error code to see if it matches cc.errorCode
+                logln("Encoder returned an error code");
+                logln("ErrorCode expected is: " + cc.outErrorCode);
+                logln("Error Result is: " + e.toString());
+            }
+            break;
+        }
+    }
+    
+    private int stepFromUnicode(ConversionCase cc, CharsetEncoder encoder, int step) {
+        if (step < 0) {
+            errln("Negative step size, test internal error.");
+            return 0;
+        }
+
+        int sourceLen = cc.unicode.length();
+        int targetLen = cc.bytes.capacity() + 20;  // for BOM, and to let failures produce excess output
+        CharBuffer source = CharBuffer.wrap(cc.unicode.toCharArray());
+        ByteBuffer target = ByteBuffer.allocate(targetLen);
+        cc.fromUnicodeResult = null;
+        encoder.reset();
+
+        int currentSourceLimit;
+        int currentTargetLimit;
+        if (step > 0) {
+            currentSourceLimit = Math.min(step, sourceLen);
+            currentTargetLimit = Math.min(step, targetLen);
+        } else {
+            currentSourceLimit = sourceLen;
+            currentTargetLimit = targetLen;
+        }
+        
+        CoderResult cr = null;
+
+        for (;;) {
+            source.limit(currentSourceLimit);
+            target.limit(currentTargetLimit);
+
+            cr = encoder.encode(source, target, currentSourceLimit == sourceLen);
+            
+            if (cr.isUnderflow()) {
+                if (currentSourceLimit == sourceLen) {
+                    if (target.position() == cc.bytes.limit()) {
+                        // target contains the correct number of bytes
+                        break;
+                    }
+                    // Do a final flush for cleanup, then break out
+                    // Encode loop, exits with cr==underflow in normal operation.
+                    //target.limit(targetLen);
+                    target.limit(targetLen);
+                    cr = encoder.flush(target);
+                    if (cr.isUnderflow()) {
+                        // good
+                    } else if (cr.isOverflow()) {
+                        errln(cc.caseNrAsString() + " Flush is producing excessive output");
+                    } else {
+                        errln(cc.caseNrAsString() + " Flush operation failed.  CoderResult = \""
+                                + cr.toString() + "\"");
+                    }
+                    break;
+                }
+                currentSourceLimit = Math.min(currentSourceLimit + step, sourceLen);
+            } else if (cr.isOverflow()) {
+                if (currentTargetLimit == targetLen) {
+                    errln(cc.caseNrAsString() + " encode() is producing excessive output");
+                    break;
+                }
+                currentTargetLimit = Math.min(currentTargetLimit + step, targetLen);
+            } else {
+                // check the error code to see if it matches cc.errorCode
+                logln("Encoder returned an error code");
+                logln("ErrorCode expected is: " + cc.outErrorCode);
+                logln("Error Result is: " + cr.toString());
+                break;
+            }
+
+        }
+        
+        cc.fromUnicodeResult = target;
+        return target.position();
+    }
+    
+    private boolean checkFromUnicode(ConversionCase cc, int resultLength) {
+        return checkResultsFromUnicode(cc, cc.bytes, cc.fromUnicodeResult);
+    }
+
+    // toUnicode test worker functions ----------------------------------------- ***
+
+    private void TestToUnicode(DataMap testcase, int caseNr) {
+        // create Conversion case to store the test case data
+        ConversionCase cc = new ConversionCase();
+        
+        try {
+            // retrieve test case data
+            cc.caseNr = caseNr;
+            cc.charset = ((ICUResourceBundle) testcase.getObject("charset")).getString();
+            cc.bytes = ((ICUResourceBundle) testcase.getObject("bytes")).getBinary();
+            cc.unicode = ((ICUResourceBundle) testcase.getObject("unicode")).getString();
+            cc.offsets = ((ICUResourceBundle) testcase.getObject("offsets")).getIntVector();
+            cc.finalFlush = ((ICUResourceBundle) testcase.getObject("flush")).getUInt() != 0;
+            cc.fallbacks = ((ICUResourceBundle) testcase.getObject("fallbacks")).getUInt() != 0;
+            cc.outErrorCode = ((ICUResourceBundle) testcase.getObject("errorCode")).getString();
+            cc.cbopt = ((ICUResourceBundle) testcase.getObject("callback")).getString();
+
+        } catch (Exception e) {
+            errln("Skipping test: error parsing conversion/toUnicode test case " + cc.caseNr);
+            return;
+        }
+
+        // ----for debugging only
+        logln("");
+        logln("TestToUnicode[" + caseNr + "] " + cc.charset + " ");
+        logln("Unicode:   " + hex(cc.unicode));
+        logln("Bytes:    " + printbytes(cc.bytes, cc.bytes.limit()));
+        ByteBuffer c = ByteBuffer.wrap(cc.cbopt.getBytes());
+        logln("Callback: " + printbytes(c, c.limit()) + " (" + cc.cbopt + ")");
+        logln("...............................................");
+
+        // process the retrieved test data case
+        if (cc.offsets.length == 0) {
+            cc.offsets = null;
+        } else if (cc.offsets.length != cc.unicode.length()) {
+            errln("Skipping test: toUnicode[" + cc.caseNr + "] unicode["
+                    + cc.unicode.length() + "] and offsets["
+                    + cc.offsets.length + "] must have the same length");
+            return;
+        }
+        // check for the callback replacement value for unmappable
+        // characters or malformed errors
+        if (cc.cbopt.length() > 0) {
+            switch ((cc.cbopt).charAt(0)) {
+            case '?': // CALLBACK_SUBSTITUTE
+                cc.cbErrorAction = CodingErrorAction.REPLACE;
+                break;
+            case '0': // CALLBACK_SKIP
+                cc.cbErrorAction = CodingErrorAction.IGNORE;
+                break;
+            case '.': // CALLBACK_STOP
+                cc.cbErrorAction = CodingErrorAction.REPORT;
+                break;
+            case '&': // CALLBACK_ESCAPE
+                cc.cbErrorAction = CodingErrorAction.REPORT;
+                cc.cbDecoder = CharsetCallback.TO_U_CALLBACK_ESCAPE;
+                break;
+            default:
+                cc.cbErrorAction = null;
+                break;
+            }
+        }
+        // check for any options for the callback value
+        cc.option = cc.cbErrorAction == null ? null : cc.cbopt.substring(1);
+        if (cc.option == null) {
+            cc.option = null;
+        }
+
+        ToUnicodeCase(cc);
+
+    }
+
+    private void ToUnicodeCase(ConversionCase cc) {
+
+        // create converter for charset and decoder for each test case
+        CharsetProviderICU provider = new CharsetProviderICU();
+        CharsetDecoder decoder = null;
+        Charset charset = null;
+
+        try {
+            // if cc.charset starts with '*', obtain it from com/ibm/icu/dev/data/testdata
+            charset = (cc.charset != null && cc.charset.length() > 0 && cc.charset.charAt(0) == '*')
+                    ? (Charset) provider.charsetForName(cc.charset.substring(1),
+                        "com/ibm/icu/dev/data/testdata", this.getClass().getClassLoader())
+                    : (Charset) provider.charsetForName(cc.charset);
+            decoder = (CharsetDecoder) charset.newDecoder();
+            decoder.onMalformedInput(CodingErrorAction.REPLACE);
+            decoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+
+        } catch (Exception e) {
+            // TODO implement loading of test data.
+            if (skipIfBeforeICU(4,1,1)) {
+                logln("Skipping test:(" + cc.charset + ") due to ICU Charset not supported at this time");
+            } else {
+                errln(cc.charset + " was not found");
+            }
+            return;
+        }
+
+        // set the callback for the decoder
+        if (cc.cbErrorAction != null) {
+            if (cc.cbDecoder != null) {
+                ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.malformedForLength(1), cc.cbDecoder, cc.option);
+                ((CharsetDecoderICU)decoder).setToUCallback(CoderResult.unmappableForLength(1), cc.cbDecoder, cc.option);
+            } else {
+                decoder.onMalformedInput(cc.cbErrorAction);
+                decoder.onUnmappableCharacter(cc.cbErrorAction);
+            }
+
+            // set the options (if any: SKIP_STOP_ON_ILLEGAL) for callback
+            if (cc.option.equals("i")) {
+                decoder.onMalformedInput(CodingErrorAction.REPORT);
+            }
+
+            // if callback action is replace, and there is a subchar
+            // replace the decoder's default replacement value
+            // if substring, skip test due to current api not supporting
+            // substring replacement
+            if (cc.cbErrorAction.equals(CodingErrorAction.REPLACE)) {
+                if (cc.cbopt.length() > 1) {
+                    if (cc.cbopt.charAt(1) == '=') {
+                        logln("Skipping test due to limitation in Java API - substitution string not supported");
+
+                    } else {
+                        // // read NUL-separated subchar first, if any
+                        // copy the subchar from Latin-1 characters
+                        // start after the NUL
+                        if (cc.cbopt.charAt(1) == 0x00) {
+                            cc.cbopt = cc.cbopt.substring(2);
+
+                            try {
+                                decoder.replaceWith(cc.cbopt);
+                            } catch (Exception e) {
+                                logln("Skipping test due to limitation in Java API - substitution character sequence size error");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        //      Check the step to unicode    
+        boolean ok;
+        int resultLength;
+
+        String steps[][] = { { "0", "bulk" }, // must be first for offsets to be checked
+                { "1", "step=1" }, { "3", "step=3" }, { "7", "step=7" } };
+        /* TODO: currently not supported test steps, getNext API is not supported for now  
+         { "-1", "getNext" },
+         { "-2", "toU(bulk)+getNext" },
+         { "-3", "getNext+toU(bulk)" },
+         { "-4", "toU(1)+getNext" },
+         { "-5", "getNext+toU(1)" },
+         { "-12", "toU(5)+getNext" },
+         { "-13", "getNext+toU(5)" }};*/
+
+        ok = true;
+        int step;
+        // testing by steps using the CoderResult cr = charset.decoder(in,out,flush) api
+        for (int i = 0; i < steps.length && ok; ++i) {
+            step = Integer.parseInt(steps[i][0]);
+
+            if (step < 0 && !cc.finalFlush) {
+                continue;
+            }
+            logln("Testing step:[" + step + "]");
+            
+            try {
+                resultLength = stepToUnicode(cc, decoder, step);
+                ok = checkToUnicode(cc, resultLength);
+            } catch (Exception ex) {
+                errln("Test failed: " + ex.getClass().getName() + " thrown: " + cc.charset+ " [" + cc.caseNr + "]");
+                ex.printStackTrace(System.out);
+                return;
+            }
+        }
+
+        //testing the java's out = charset.decoder(in) api
+        while (ok && cc.finalFlush) {
+            logln("Testing java charset.decoder(in):");
+            cc.toUnicodeResult = null;
+            CharBuffer out = null;
+
+            try {
+                out = decoder.decode(ByteBuffer.wrap(cc.bytes.array()));
+                out.position(out.limit());
+                if (out.limit() < cc.unicode.length()) {
+                    int pos = out.position();
+                    char[] temp = out.array();
+                    out = CharBuffer.allocate(cc.bytes.limit());
+                    out.put(temp);
+                    out.position(pos);
+                    CoderResult cr = decoder.flush(out);
+                    if (cr.isOverflow()) {
+                        logln("Overflow error with flushing decodering");
+                    }
+                }
+
+                cc.toUnicodeResult = out;
+
+                ok = checkToUnicode(cc, out.limit());
+                if (!ok) {
+                    break;
+                }
+            } catch (Exception e) {
+                //check the error code to see if it matches cc.errorCode
+                logln("Decoder returned an error code");
+                logln("ErrorCode expected is: " + cc.outErrorCode);
+                logln("Error Result is: " + e.toString());
+            }
+            break;
+        }
+
+        return;
+    }
+
+
+
+    
+    private int stepToUnicode(ConversionCase cc, CharsetDecoder decoder,
+            int step)
+
+    {
+        ByteBuffer source;
+        CharBuffer target;
+        boolean flush = false;
+        int sourceLen;
+        source = cc.bytes;
+        sourceLen = cc.bytes.limit();
+        source.position(0);
+        target = CharBuffer.allocate(cc.unicode.length() + 4);
+        target.position(0);
+        cc.toUnicodeResult = null;
+        decoder.reset();
+
+        if (step >= 0) {
+
+            int iStep = step;
+            int oStep = step;
+
+            for (;;) {
+
+                if (step != 0) {
+                    source.limit((iStep <= sourceLen) ? iStep : sourceLen);
+                    target.limit((oStep <= target.capacity()) ? oStep : target
+                            .capacity());
+                    flush = (cc.finalFlush && source.limit() == sourceLen);
+
+                } else {
+                    //bulk mode
+                    source.limit(sourceLen);
+                    target.limit(target.capacity());
+                    flush = cc.finalFlush;
+                }
+                // convert 
+                CoderResult cr = null;
+                if (source.hasRemaining()) {
+
+                    cr = decoder.decode(source, target, flush);
+                    // check pointers and errors
+                    if (cr.isOverflow()) {
+                        // the partial target is filled, set a new limit, 
+                        oStep = (target.position() + step);
+                        target.limit((oStep < target.capacity()) ? oStep
+                                : target.capacity());
+                        if (target.limit() > target.capacity()) {
+                            //target has reached its limit, an error occurred or test case has an error code
+                            //check error code
+                            logln("UnExpected error: Target Buffer is larger than capacity");
+                            break;
+                        }
+
+                    } else if (cr.isError()) {
+                        //check the error code to see if it matches cc.errorCode
+                        logln("Decoder returned an error code");
+                        logln("ErrorCode expected is: " + cc.outErrorCode);
+                        logln("Error Result is: " + cr.toString());
+                        break;
+                    }
+
+                } else {
+                    if (source.limit() == sourceLen) {
+
+                        cr = decoder.decode(source, target, true);
+
+                        //due to limitation of the API we need to check for target limit for expected 
+                        if (target.limit() != cc.unicode.length()) {
+                            target.limit(cc.unicode.length());
+                            cr = decoder.flush(target);
+                            if (cr.isError()) {
+                                errln("Flush operation failed");
+                            }
+                        }
+                        break;
+                    }
+                }
+                iStep += step;
+                oStep += step;
+
+            }
+
+        }// if(step ==0)
+
+        //--------------------------------------------------------------------------
+        else /* step<0 */{
+            /*
+             * step==-1: call only ucnv_getNextUChar()
+             * otherwise alternate between ucnv_toUnicode() and ucnv_getNextUChar()
+             *   if step==-2 or -3, then give ucnv_toUnicode() the whole remaining input,
+             *   else give it at most (-step-2)/2 bytes
+             */
+
+            for (;;) {
+                // convert
+                if ((step & 1) != 0 /* odd: -1, -3, -5, ... */) {
+
+                    target.limit(target.position() < target.capacity() ? target
+                            .position() + 1 : target.capacity());
+
+                    // decode behavior is return to output target 1 character
+                    CoderResult cr = null;
+
+                    //similar to getNextUChar() , input is the whole string, while outputs only 1 character
+                    source.limit(sourceLen);
+                    while (target.position() != target.limit()
+                            && source.hasRemaining()) {
+                        cr = decoder.decode(source, target,
+                                source.limit() == sourceLen);
+
+                        if (cr.isOverflow()) {
+
+                            if (target.limit() >= target.capacity()) {
+                                // target has reached its limit, an error occurred 
+                                logln("UnExpected error: Target Buffer is larger than capacity");
+                                break;
+                            } else {
+                                //1 character has been consumed
+                                target.limit(target.position() + 1);
+                                break;
+                            }
+                        } else if (cr.isError()) {
+                            logln("Decoder returned an error code");
+                            logln("ErrorCode expected is: " + cc.outErrorCode);
+                            logln("Error Result is: " + cr.toString());
+
+                            cc.toUnicodeResult = target;
+                            return target.position();
+                        }
+
+                        else {
+                            // one character has been consumed
+                            if (target.limit() == target.position()) {
+                                target.limit(target.position() + 1);
+                                break;
+                            }
+                        }
+
+                    }
+                    if (source.position() == sourceLen) {
+
+                        // due to limitation of the API we need to check
+                        // for target limit for expected
+                        cr = decoder.decode(source, target, true);
+                        if (target.position() != cc.unicode.length()) {
+
+                            target.limit(cc.unicode.length());
+                            cr = decoder.flush(target);
+                            if (cr.isError()) {
+                                errln("Flush operation failed");
+                            }
+                        }
+                        break;
+                    }
+                    // alternate between -n-1 and -n but leave -1 alone
+                    if (step < -1) {
+                        ++step;
+                    }
+                } else {/* step is even */
+                    // allow only one UChar output
+
+                    target.limit(target.position() < target.capacity() ? target
+                            .position() + 1 : target.capacity());
+                    if (step == -2) {
+                        source.limit(sourceLen);
+                    } else {
+                        source.limit(source.position() + (-step - 2) / 2);
+                        if (source.limit() > sourceLen) {
+                            source.limit(sourceLen);
+                        }
+                    }
+                    CoderResult cr = decoder.decode(source, target, source
+                            .limit() == sourceLen);
+                    // check pointers and errors 
+                    if (cr.isOverflow()) {
+                        // one character has been consumed
+                        if (target.limit() >= target.capacity()) {
+                            // target has reached its limit, an error occurred
+                            logln("Unexpected error: Target Buffer is larger than capacity");
+                            break;
+                        }
+                    } else if (cr.isError()) {
+                        logln("Decoder returned an error code");
+                        logln("ErrorCode expected is: " + cc.outErrorCode);
+                        logln("Error Result is: " + cr.toString());
+                        break;
+                    }
+
+                    --step;
+                }
+            }
+        }
+
+        //--------------------------------------------------------------------------
+
+        cc.toUnicodeResult = target;
+        return target.position();
+    }
+
+
+   
+    private boolean checkToUnicode(ConversionCase cc, int resultLength) {
+        return checkResultsToUnicode(cc, cc.unicode, cc.toUnicodeResult);
+    }
+
+    
+    private void TestGetUnicodeSet(DataMap testcase) {
+        /*
+         * charset - will be opened, and ucnv_getUnicodeSet() called on it //
+         * map - set of code points and strings that must be in the returned set //
+         * mapnot - set of code points and strings that must *not* be in the //
+         * returned set // which - numeric UConverterUnicodeSet value Headers {
+         * "charset", "map", "mapnot", "which" }
+         */
+       
+        
+        // retrieve test case data
+        ConversionCase cc = new ConversionCase();
+        CharsetProviderICU provider = new CharsetProviderICU();
+        CharsetICU charset  ;
+       
+             
+        UnicodeSet mapset = new UnicodeSet();
+        UnicodeSet mapnotset = new UnicodeSet();
+        UnicodeSet unicodeset = new UnicodeSet();
+        String ellipsis = "0x2e";
+        cc.charset = ((ICUResourceBundle) testcase.getObject("charset"))
+                .getString();
+        cc.map = ((ICUResourceBundle) testcase.getObject("map")).getString();
+        cc.mapnot = ((ICUResourceBundle) testcase.getObject("mapnot"))
+                .getString();
+        
+     
+        int which = ((ICUResourceBundle) testcase.getObject("which")).getInt(); // only checking for ROUNDTRIP_SET
+        
+        // ----for debugging only
+        logln("");
+        logln("TestGetUnicodeSet[" + cc.charset + "] ");
+        logln("...............................................");
+        
+        try{
+           // if cc.charset starts with '*', obtain it from com/ibm/icu/dev/data/testdata
+           charset = (cc.charset != null && cc.charset.length() > 0 && cc.charset.charAt(0) == '*')
+                    ? (CharsetICU) provider.charsetForName(cc.charset.substring(1),
+                        "com/ibm/icu/dev/data/testdata", this.getClass().getClassLoader())
+                    : (CharsetICU) provider.charsetForName(cc.charset);
+           
+           //checking for converter that are not supported at this point        
+           try{
+               if(charset.name()=="BOCU-1" ||charset.name()== "SCSU"|| charset.name()=="lmbcs1" || charset.name()== "lmbcs2" ||
+                      charset.name()== "lmbcs3" || charset.name()== "lmbcs4" || charset.name()=="lmbcs5" || charset.name()=="lmbcs6" ||
+                      charset.name()== "lmbcs8" || charset.name()=="lmbcs11" || charset.name()=="lmbcs16" || charset.name()=="lmbcs17" || 
+                      charset.name()=="lmbcs18"|| charset.name()=="lmbcs19"){
+                   
+                   logln("Converter not supported at this point :" +charset.displayName());
+                   return;
+               }
+                             
+               if(which==1){
+                   logln("Fallback set not supported at this point for converter : "+charset.displayName());
+                  return;
+               }
+               
+           }catch(Exception e){
+               return;
+           }
+           
+           mapset.clear();
+           mapnotset.clear();
+                   
+           mapset.applyPattern(cc.map,false);
+           mapnotset.applyPattern(cc.mapnot,false);
+           
+           charset.getUnicodeSet(unicodeset, which);
+           UnicodeSet diffset = new UnicodeSet();
+           
+           //are there items that must be in unicodeset but are not?           
+           (diffset = mapset).removeAll(unicodeset);
+           if(!diffset.isEmpty()){
+               StringBuffer s = new StringBuffer(diffset.toPattern(true));
+               if(s.length()>100){
+                   s.replace(0, 0x7fffffff, ellipsis);
+               }
+               errln("error in missing items - conversion/getUnicodeSet test case "+cc.charset + "\n" + s.toString());
+           }
+           
+          //are the items that must not be in unicodeset but are?
+           (diffset=mapnotset).retainAll(unicodeset);
+           if(!diffset.isEmpty()){
+               StringBuffer s = new StringBuffer(diffset.toPattern(true));
+               if(s.length()>100){
+                   s.replace(0, 0x7fffffff, ellipsis);
+               }
+               errln("contains unexpected items - conversion/getUnicodeSet test case "+cc.charset + "\n" + s.toString());
+           }
+         } catch (Exception e) {
+             errln("getUnicodeSet returned an error code");
+             errln("ErrorCode expected is: " + cc.outErrorCode);
+             errln("Error Result is: " + e.toString());
+             return;
+         }
+    }
+
+    /**
+     * This follows ucnv.c method ucnv_detectUnicodeSignature() to detect the
+     * start of the stream for example U+FEFF (the Unicode BOM/signature
+     * character) that can be ignored.
+     * 
+     * Detects Unicode signature byte sequences at the start of the byte stream
+     * and returns number of bytes of the BOM of the indicated Unicode charset.
+     * 0 is returned when no Unicode signature is recognized.
+     * 
+     */
+
+    private String detectUnicodeSignature(ByteBuffer source) {
+        int signatureLength = 0; // number of bytes of the signature
+        final int SIG_MAX_LEN = 5;
+        String sigUniCharset = null; // states what unicode charset is the BOM
+        int i = 0;
+
+        /*
+         * initial 0xa5 bytes: make sure that if we read <SIG_MAX_LEN bytes we
+         * don't misdetect something
+         */
+        byte start[] = { (byte) 0xa5, (byte) 0xa5, (byte) 0xa5, (byte) 0xa5,
+                (byte) 0xa5 };
+
+        while (i < source.limit() && i < SIG_MAX_LEN) {
+            start[i] = source.get(i);
+            i++;
+        }
+
+        if (start[0] == (byte) 0xFE && start[1] == (byte) 0xFF) {
+            signatureLength = 2;
+            sigUniCharset = "UTF-16BE";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0xFF && start[1] == (byte) 0xFE) {
+            if (start[2] == (byte) 0x00 && start[3] == (byte) 0x00) {
+                signatureLength = 4;
+                sigUniCharset = "UTF-32LE";
+                source.position(signatureLength);
+                return sigUniCharset;
+            } else {
+                signatureLength = 2;
+                sigUniCharset = "UTF-16LE";
+                source.position(signatureLength);
+                return sigUniCharset;
+            }
+        } else if (start[0] == (byte) 0xEF && start[1] == (byte) 0xBB
+                && start[2] == (byte) 0xBF) {
+            signatureLength = 3;
+            sigUniCharset = "UTF-8";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0x00 && start[1] == (byte) 0x00
+                && start[2] == (byte) 0xFE && start[3] == (byte) 0xFF) {
+            signatureLength = 4;
+            sigUniCharset = "UTF-32BE";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0x0E && start[1] == (byte) 0xFE
+                && start[2] == (byte) 0xFF) {
+            signatureLength = 3;
+            sigUniCharset = "SCSU";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0xFB && start[1] == (byte) 0xEE
+                && start[2] == (byte) 0x28) {
+            signatureLength = 3;
+            sigUniCharset = "BOCU-1";
+            source.position(signatureLength);
+            return sigUniCharset;
+        } else if (start[0] == (byte) 0x2B && start[1] == (byte) 0x2F
+                && start[2] == (byte) 0x76) {
+
+            if (start[3] == (byte) 0x38 && start[4] == (byte) 0x2D) {
+                signatureLength = 5;
+                sigUniCharset = "UTF-7";
+                source.position(signatureLength);
+                return sigUniCharset;
+            } else if (start[3] == (byte) 0x38 || start[3] == (byte) 0x39
+                    || start[3] == (byte) 0x2B || start[3] == (byte) 0x2F) {
+                signatureLength = 4;
+                sigUniCharset = "UTF-7";
+                source.position(signatureLength);
+                return sigUniCharset;
+            }
+        } else if (start[0] == (byte) 0xDD && start[2] == (byte) 0x73
+                && start[2] == (byte) 0x66 && start[3] == (byte) 0x73) {
+            signatureLength = 4;
+            sigUniCharset = "UTF-EBCDIC";
+            source.position(signatureLength);
+            return sigUniCharset;
+        }
+
+        /* no known Unicode signature byte sequence recognized */
+        return null;
+    }
+
+    String printbytes(ByteBuffer buf, int pos) {
+        int cur = buf.position();
+        String res = " (" + pos + ")==[";
+        for (int i = 0; i < pos; i++) {
+            res += "(" + i + ")" + hex(buf.get(i) & 0xff).substring(2) + " ";
+        }
+        buf.position(cur);
+        return res + "]";
+    }
+
+    String printchars(CharBuffer buf, int pos) {
+        int cur = buf.position();
+        String res = " (" + pos + ")==[";
+        for (int i = 0; i < pos; i++) {
+            res += "(" + i + ")" + hex(buf.get(i)) + " ";
+        }
+        buf.position(cur);
+        return res + "]";
+    }
+
+    private boolean checkResultsFromUnicode(ConversionCase cc, ByteBuffer expected,
+            ByteBuffer output) {
+
+        boolean res = true;
+        expected.rewind();
+        output.limit(output.position());
+        output.rewind();
+        
+        // remove any BOM signature before checking
+        detectUnicodeSignature(output); // sets the position to after the BOM
+        output = output.slice(); // removes anything before the current position
+
+        if (output.limit() != expected.limit()) {
+            errln("Test failed: output length does not match expected for charset: " + cc.charset
+                    + " [" + cc.caseNr + "]");
+            res = false;
+        } else {
+            while (output.hasRemaining()) {
+                if (output.get() != expected.get()) {
+                    errln("Test failed: output does not match expected for charset: " + cc.charset
+                            + " [" + cc.caseNr + "]");
+                    res = false;
+                    break;
+                }
+            }
+        }
+        
+        if (res) {
+            logln("[" + cc.caseNr + "]:" + cc.charset);
+            logln("Input:       " + printchars(CharBuffer.wrap(cc.unicode), cc.unicode.length()));
+            logln("Output:      " + printbytes(output, output.limit()));
+            logln("Expected:    " + printbytes(expected, expected.limit()));
+            logln("Passed");
+        }
+        else {
+            errln("[" + cc.caseNr + "]:" + cc.charset);
+            errln("Input:       " + printchars(CharBuffer.wrap(cc.unicode), cc.unicode.length()));
+            errln("Output:      " + printbytes(output, output.limit()));
+            errln("Expected:    " + printbytes(expected, expected.limit()));
+            errln("Failed");
+        }
+        return res;
+    }
+
+    private boolean checkResultsToUnicode(ConversionCase cc, String expected, CharBuffer output) {
+
+        boolean res = true;
+        output.limit(output.position());
+        output.rewind();
+
+//TODO: Fix Me!  After Ticket#6583 is completed, this code should be removed.
+        boolean ignoreError = (0 <= cc.caseNr && cc.caseNr <= 15) || cc.caseNr == 17 || cc.caseNr == 18;
+//TODO: End
+
+        // test to see if the conversion matches actual results
+        if (output.limit() != expected.length()) {
+//TODO: Remove this
+            if (ignoreError) {
+                logln("Test failed: output length does not match expected for charset: "+cc.charset+ " [" + cc.caseNr + "]");
+            } else {
+                errln("Test failed: output length does not match expected for charset: "+cc.charset+ " [" + cc.caseNr + "]");
+                res = false;
+            }
+//TODO: End
+//            errln("Test failed: output length does not match expected for charset: "+cc.charset+ " [" + cc.caseNr + "]");
+//            res = false;
+        } else {
+            for (int i = 0; i < expected.length(); i++) {
+                if (output.get(i) != expected.charAt(i)) {
+//TODO: Remove this
+                    if (ignoreError) {
+                        logln("Test failed: output does not match expected for charset: " + cc.charset
+                                + " [" + cc.caseNr + "]");
+                    } else {
+                        errln("Test failed: output does not match expected for charset: " + cc.charset
+                                + " [" + cc.caseNr + "]");
+                        res = false;
+                    }
+//TODO: End
+//                    errln("Test failed: output does not match expected for charset: " + cc.charset
+//                            + " [" + cc.caseNr + "]");
+//                    res = false;
+                    break;
+                }
+            }
+        }
+        
+        if (res) {
+            logln("[" + cc.caseNr + "]:" + cc.charset);
+            logln("Input:       " + printbytes(cc.bytes, cc.bytes.limit()));
+            logln("Output:      " + printchars(output, output.limit()));
+            logln("Expected:    " + printchars(CharBuffer.wrap(expected), expected.length()));
+            logln("Passed");
+        }
+        else {
+            errln("[" + cc.caseNr + "]:" + cc.charset);
+            errln("Input:       " + printbytes(cc.bytes, cc.bytes.limit()));
+            errln("Output:      " + printchars(output, output.limit()));
+            errln("Expected:    " + printchars(CharBuffer.wrap(expected), expected.length()));
+            errln("Failed");
+        }
+        return res;
+    }
+
+    private byte[] toByteArray(String str) {
+        byte[] ret = new byte[str.length()];
+        for (int i = 0; i < ret.length; i++) {
+            char ch = str.charAt(i);
+            if (ch <= 0xFF) {
+                ret[i] = (byte) ch;
+            } else {
+                throw new IllegalArgumentException(" byte value out of range: " + ch);
+            }
+        }
+        return ret;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml b/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml
new file mode 100644
index 0000000..9dcbf13
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml
@@ -0,0 +1,551 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Copyright (c) 2005-2007 IBM Corporation and others. All rights reserved -->
+<!-- See individual test cases for their specific copyright. -->
+
+<charset-detection-tests>
+    <test-case id="IUC10-ar" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-6/ar windows-1256/ar">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    أوروبا, برمجيات الحاسوب + انترنيت :
+    تصبح عالميا مع يونيكود
+    IUC10
+    تسجّل الآن لحضور المؤتمر الدولي العاشر ليونيكود, الذي سيعقد في 10-12 آذار 1997 بمدينة ماينتس,
+    ألمانيا. وسيجمع المؤتمر بين خبراء من كافة قطاعات الصناعة على الشبكة العالمية انترنيت ويونيكود, حيث ستتم,
+    على الصعيدين الدولي والمحلي على حد سواء مناقشة سبل استخدام يونكود في النظم القائمة وفيما يخص التطبيقات
+    الحاسوبية, الخطوط, تصميم النصوص والحوسبة متعددة اللغات. 
+
+    Unicode
+    عندما يريد العالم أن يتكلّم, فهو يتحدّث بلغة يونيكود
+
+    </test-case>
+
+    <test-case id="IUC10-da-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1252/da">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + Internet:
+    Bliv global med Unicode
+    IUC10
+    Indskriv dig nu til den tiende internationale Unicode-konference, der holdes den 10-12
+    marts 1997 i Mainz, Tyskland. Konferencen samler eksperter fra hele verden inden for det
+    globale Internet og Unicode, internationalisering og lokalisering, implementering af
+    Unicode i styresystemer og programmer, skrifttyper, tekst-layout og flersproget databehandling.
+
+    Unicode
+    Når verden vil tale, taler den “Unicode.”
+
+    </test-case>
+
+    <test-case id="IUC10-da" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/da">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + Internet:
+    Bliv global med Unicode
+    IUC10
+    Indskriv dig nu til den tiende internationale Unicode-konference, der holdes den 10-12
+    marts 1997 i Mainz, Tyskland. Konferencen samler eksperter fra hele verden inden for det
+    globale Internet og Unicode, internationalisering og lokalisering, implementering af
+    Unicode i styresystemer og programmer, skrifttyper, tekst-layout og flersproget databehandling.
+
+    Unicode
+    Når verden vil tale, taler den Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-de" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/de">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + das Internet:
+    International mit Unicode
+    IUC10
+    Melden Sie sich jetzt für die 10. Internationale Unicode Konferenz an, die in der Zeit vom 10.-12. März 1997 in
+    Mainz stattfinden wird. Die Konferenz ist ein Treffpunkt für Betriebsexperten aus den Bereichen globales
+    Internet und Unicode, Internationalisierung und Lokalisierung, die Implementierung von Unicode in
+    Betriebssystemen und Programmen, sowie für Schriftarten, Textlayout und mehrsprachige Computeranwendungen.
+
+    Unicode
+    Wenn die Welt miteinander spricht, spricht sie Unicode.
+
+    </test-case>
+
+    <!-- No UTF-8 in this test because there are no non-ASCII characters. -->
+    <test-case id="IUC10-en" encodings="UTF-32BE UTF-32LE ISO-8859-1/en">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europe, Software + the Internet:
+    Going Global with Unicode
+    IUC10
+    Register now for the Tenth International Unicode Conference, to be held on March 10-12, 1997,
+    in Mainz, Germany. The Conference will bring together industry-wide experts on the global Internet and
+    Unicode, internationalization and localization, implementation of Unicode in operating systems and applications,
+    fonts, text layout, and multilingual computing.
+
+    Unicode
+    When the world wants to talk, it speaks Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-es" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/es">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + el Internet:
+    Mundializando con Unicode
+    IUC10
+    Inscríbase ahora para la Décima Conferencia Internacional Unicode, que tendrá lugar del 10 al 12 de marzo de
+    1997 en Maguncia, Alemania. La Conferencia reunirá expertos de los sectores de la mundialización del Internet y
+    Unicode, la internacionalización y localización, implementación de Unicode en sistemas operativos y aplicaciones,
+    tipos, composición de texto e informática multilingüe.
+
+    Unicode
+    Cuando el mundo quiere conversar, habla Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-fr" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/fr">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    L'Europe, le logiciel et l'Internet :
+    la mondialisation avec Unicode
+    IUC10
+    Inscrivez-vous dès maintenant à la dixième Conférence internationale sur Unicode, qui se tiendra du 10 au 12
+    mars 1997 à Mayence, en Allemagne. Cette conférence rassemblera des experts de tous les horizons industriels
+    sur les sujets suivants : l'Internet mondial et Unicode, l'internationalisation et l'adaptation locale,
+    l'implémentation d'Unicode dans les systèmes d'exploitation et les applications, les polices de caractères,
+    la disposition de texte, l'informatique plurilingue.
+
+    Unicode
+    Quand le monde veut communiquer, il parle en Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-he" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-8/he">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    אירופה, תוכנה והאינטרנט:
+    Unicode יוצא לשוק העולמי
+    IUC10
+    הירשמו כעת לכנס Unicode הבינלאומי העשירי, שייערך בין התאריכים 12-10 במרץ 1997, במיינץ שבגרמניה. בכנס
+    ישתתפו מומחים מכל ענפי התעשייה בנושא האינטרנט העולמי וה-Unicode, בהתאמה לשוק הבינלאומי והמקומי, ביישום
+    Unicode במערכות הפעלה וביישומים, בגופנים, בפריסת טקסט ובמחשוב רב-לשוני.
+
+    Unicode
+    כאשר העולם רוצה לדבר, הוא מדבר ב-Unicode
+
+    </test-case>
+
+    <test-case id="IUC10-he-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1255/he">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    אירופה, תוכנה והאינטרנט:
+    Unicode יוצא לשוק העולמי
+    IUC10
+    הירשמו כעת לכנס Unicode הבינלאומי העשירי, שייערך בין התאריכים 12-10 במרץ 1997, במיינץ שבגרמניה. בכנס
+    ישתתפו מומחים מכל ענפי התעשייה בנושא האינטרנט העולמי וה-Unicode, בהתאמה לשוק הבינלאומי והמקומי, ביישום
+    Unicode במערכות הפעלה וביישומים, בגופנים, בפריסת טקסט ובמחשוב רב-לשוני.
+
+    Unicode
+    כאשר העולם רוצה לדבר, הוא מדבר -“Unicode.”
+
+    </test-case>
+
+    <test-case id="IUC10-hu" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-2/hu">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Európa, a Szoftver s az Internet -
+    Globálissá Változik a Unicode Által
+    IUC10
+    Iratkozzon már most a Tizedik Nemzetközi Unicode Konferenciára, amely Március 10-12 1997
+    lesz megtartva, Meinz-be, Németországba. Ebben a Konferencián az iparág szerte sok szakértő
+    fog részt venni: a globális Internet s Unicode nemzetközisítése s lokalizálása, a
+    Unicode beteljesítése a működő rendszerekben s alkalmazásokban, fontokba, szöveg
+    térbeosztásba s többnyelvű computerekben.
+
+    Unicode
+    Ha a világ beszélni akar, azt Unicode-ul mondja.
+
+    </test-case>
+
+    <test-case id="IUC10-hu-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1250/hu">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Európa, a Szoftver s az Internet -
+    Globálissá Változik a Unicode Által
+    IUC10
+    Iratkozzon már most a Tizedik Nemzetközi Unicode Konferenciára, amely Március 10-12 1997
+    lesz megtartva, Meinz-be, Németországba. Ebben a Konferencián az iparág szerte sok szakértő
+    fog részt venni: a globális Internet s Unicode nemzetközisítése s lokalizálása, a
+    Unicode beteljesítése a működő rendszerekben s alkalmazásokban, fontokba, szöveg
+    térbeosztásba s többnyelvű computerekben.
+
+    Unicode
+    Ha a világ beszélni akar, azt “Unicode”-ul mondja.
+
+    </test-case>
+
+    <test-case id="IUC10-it" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/it">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, software e Internet:
+    Globalizzazione con Unicode
+    IUC10
+    Iscrivetevi subito alla X Conferenza Internazionale su Unicode, che si terrà dal 10 al 12 marzo 1997 a
+    Mainz in Germania. Alla Conferenza parteciperanno esperti di tutti i settori per discutere di Internet globale e
+    Unicode, internazionalizzazione e localizzazione, implementazione di Unicode in sistemi operativi e applicazioni,
+    caratteri, composizione dei testi ed elaborazione multilingue.
+
+    Unicode
+    Quando il mondo vuole comunicare, parla Unicode.
+
+    </test-case>
+
+    <!-- No EUC-JP in this test because it detects as GB18030 -->
+    <test-case id="IUC10-jp" encodings="UTF-8 UTF-32BE UTF-32LE Shift_JIS/ja ISO-2022-JP">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    ヨーロッパ、ソフトウェア、そしてインターネット:
+    Unicode でグローバル化を狙って
+    IUC10
+    第 10 回の Unicode 会議は 1997 年 3 月 10-12日、ドイツのマインツで開かれます。参加希望の方は今すぐ登録してください。
+    この会議では、グローバルなインタネット、Unicode、ソフトウェアの国際化およびローカリゼーション、OS およびアプリケーションでの
+    Unicode のインプリメンテーション、フォント、テキスト表示、マルチ言語コンピューティングにおける業界の専門家が集まります。
+
+    Unicode
+    世界的に話すなら、Unicode です。
+
+    </test-case>
+
+    <test-case id="IUC10-ko" encodings="UTF-8 UTF-32BE UTF-32LE EUC-KR/ko ISO-2022-KR">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    유럽, 소프트웨어 그리고 인터넷:
+    유니코드와 함께 세계로
+    IUC10
+    제10회 유니코드 국제 회의가 1997년 3월 10일부터 12일까지 독일의 마인즈에서 열립니다. 지금 등록하십시오.
+    이 회의에서는 업계 전반의 전문가들이 함께 모여 다음과 같은 분야를 다룹니다. - 인터넷과 유니코드, 국제화와 지역화,
+    운영 체제와 응용 프로그램에서 유니코드의 구현, 글꼴, 문자 배열, 다국어 컴퓨팅.
+
+    Unicode
+    세계를 향한 대화, 유니코드로 하십시오
+
+    </test-case>
+
+    <!-- No UTF-8 in this test because there are no non-ASCII characters. -->
+    <test-case id="IUC10-nl" encodings="UTF-32BE UTF-32LE ISO-8859-1/nl">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software + het Internet:
+    wereldwijd met Unicode
+    IUC10
+    Meld u nu aan voor de Tiende Internationale Unicode-conferentie, die van 10 tot 12 maart 1997 in
+    Mainz (Duitsland) wordt gehouden. De Conferentie is een ontmoetingsplaats voor experts uit de industrie op het
+    gebied van het wereldwijde Internet en Unicode, internationalisatie en localisatie, implementatie van Unicode in
+    besturingssystemen en applicaties, lettertypes, tekstopmaak en meertalig computergebruik.
+
+    Unicode
+    Als de wereld wil praten, spreekt hij Unicode.
+
+    </test-case>
+
+    <!-- No language for ISO-8859-1 in this test because no-NO is recogonized as Danish... -->
+    <test-case id="IUC10-no-NO" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/da">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Programvare og Internet:
+    Global fokus med Unicode
+    IUC10
+    Registrer deg som deltager på den tiende inernasjonale Unicode konferansen i Mainz, Tyskland, fra 10. til 12. mars,
+    1997. Konferansen vil samle eksperter på Internet, Unicode, internasjonalisering og integrasjon av Unicode i
+    operativsystemer og programmer, fonter, tekst layout og flerspråklig databehandling.
+
+    Unicode
+    Når verden vil snakke, snakker den Unicode
+
+    </test-case>
+
+    <test-case id="IUC10-no-NO-NY" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/no">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, programvare og Internett:
+    Femn verda med Unicode
+    IUC10
+    Meld deg på den 10. internasjonale Unicode-konferansen. Han går føre seg i Mainz i Tyskland i dagane 10.--12. mars
+    1997, og samlar fagkunnige innan konferansetemaet frå heile databransjen. Tema: Det globale Internettet og
+    Unicode, internasjonalisering og nasjonal tilpassing, implementering av Unicode i operativsystem og brukarprogram,
+    skriftsnitt (fontar), tekstutlegg, og fleirspråkleg databehandling.
+
+    Unicode
+    Når verda ønskjer å snakke, talar ho Unicode
+
+    </test-case>
+
+    <test-case id="IUC10-pt-BR" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/pt">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software e a Internet:
+    Globalização com o Unicode
+    IUC10
+    Inscreva-se agora para a Décima Conferência Internacional Sobre O Unicode, realizada entre os dias 10 e 12 de
+    março de 1997 em Mainz na Alemanha. A Conferência reunirá peritos de todas as áreas da indústria especializados
+    em assuntos relacionados com a Internet global e o Unicode, internacionalização e localização de software,
+    implementação do Unicode em sistemas operacionais e aplicativos, fontes, layout de texto e informática multilíngüe.
+
+    Unicode
+    Quando o mundo quer falar, fala Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-pt-PT" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/pt">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software e a Internet:
+    Globalização com o Unicode
+    IUC10
+    Inscreva-se agora para a Décima Conferência Internacional Sobre O Unicode, a ser realizada entre os dias 10 e 12
+    de Março de 1997 em Mainz na Alemanha. A Conferência reunirá peritos de todas as áreas da indústria
+    especializados em assuntos relacionados com a Internet global e o Unicode, internacionalização e localização de
+    software, implementação do Unicode em sistemas operativos e aplicações, tipos de letra, esquematização de
+    texto e informática multilíngue.
+
+    Unicode
+    Quando o mundo quer falar, fala Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-ro" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-2/ro">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, Software şi Internet:
+    Globalizarea cu Unicode
+    IUC10
+    Inscrieţi-vă acum la a Zecea Conferinţă Internaţională "Unicode" ce va avea loc in
+    perioada de 10-12 martie, 1997 în Mainz, Germania. Conferinţa va întruni experţi din
+    variate domenii: Internet global şi Unicode, internaţionalizare şi localizare,
+    implementarede Unicode în sisteme de operare şi aplicaţii, fonturi, aranjare de text în
+    pagină, computerizare multilinguală.
+
+    Unicode
+    Când lumea vrea să comunice, vorbeşte Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-ru" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-5/ru windows-1251/ru KOI8-R/ru">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Европа, Программное обеспечение + Интернет:
+    Unicode в глобальных масштабах
+    IUC10
+    Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Unicode, которая состоится
+    10-12 марта 1997 года в Майнце в Германии. Конференция соберет широкий круг экспертов по и
+    вопросам глобального Интернета и Unicode, локализации и интернационализации, воплощению
+    применению Unicode в различных операционных системах и программных приложениях,
+    шрифтах, верстке и многоязычных компьютерных системах.
+
+    Unicode
+    Когда мир желает общаться, он общается на Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-sv" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-1/sv">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Europa, programvara och Internet:
+    globalisera med Unicode
+    IUC10
+    Anmäl Dig till den tionde internationella Unicode-konferensen, som hålls den 10-12 mars 1997 i Mainz,
+    Tyskland. Vid konferensen kommer experter inom följande områden att delta: det globala Internet och Unicode,
+    internationalisering och lokalisering, implementering av Unicode i operativsystem, tillämpningar, typsnitt,
+    textlayout och mångspråklig datoranvändning.
+
+    Unicode
+    När världen vill tala, så talar den Unicode.
+
+    </test-case>
+
+    <test-case id="IUC10-yi" encodings="UTF-8 UTF-32BE UTF-32LE">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    אײראָפּע: פּראָגראַמװאַרג און די װעלטנעץ:
+    אוניקאָד איבער דער גאָרער װעלט
+    IUC10
+    פֿאַרשרײַבט זיך שױן אױף דער צענטער אינטערנאַציאָנאַלער אוניקאָד-קאָנפֿערענץ, װאָס װעט פֿאָרקומען דעם
+    10טן ביזן 12טן מאַרץ, 1997, אין מײַנץ, דײַטשלאַנד. די קאָנפֿערענץ װעט צוזאַמענברענגן מבֿינים פֿון װעלטנעץ,
+     אוניקאָד, אי אַלװעלטלעכן אי סבֿיבֿהדיקן פּראָגראַמװאַרג, אַרײַנשטעלן אוניקאָד אין אָפּעריר-סיסטעמען און
+    אָנװענדונגען, שריפֿטן, טעקסט-אױסשטעל, און מערשפּראַכיקע קאָמפּיוטערײַ.
+
+    Unicode
+    אַז די װעלט װיל רעדן, רעדט זי אוניקאָד
+
+    </test-case>
+
+    <test-case id="IUC10-zh-Hant" encodings="UTF-8 UTF-32BE UTF-32LE Big5/zh">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    歐洲，軟體及網際網路：
+    讓統一碼（Unicode）領你進入全世界
+    IUC10
+    你現在就應報名將在１９９７年３月１０至１２日於德國美姿城（Mainz）召開的第十屆國際統一碼研討會。
+    本次研討會將邀請多位業界專家研討關於全球網際網路及統一碼發展、國際化及本土化、
+    支援統一碼的作業系統及應用程式、字型、文字排版、電腦多國語文化等多項課題。
+
+    Unicode
+    當世界需要溝通時，請用統一碼（Unicode）
+
+    </test-case>
+
+    <!-- No ISO-2022-CN in this test because Java doesn't support it in both directions :-( -->
+    <test-case id="IUC10-zh-Hans" encodings="UTF-8 UTF-32BE UTF-32LE ISO-2022-CN GB18030/zh">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    欧洲，软件＋互联网
+    用统一码 (Unicode) 走遍世界
+    IUC10
+    将于1997年 3 月10日－12日在德国 Mainz 市举行的第十届统一码国际研讨会现在开始注册。
+    本次会议将汇集各方面的专家。涉及的领域包括：国际互联网和统一码，国际化和本地化，
+    统一码在操作系统和应用软件中的实现，字型，文本格式以及多文种计算等。
+
+    Unicode
+    当世界需要沟通时，请用Unicode！
+
+Conference Program
+    </test-case>
+
+    <test-case id="WIU-cz" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-2/cs">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Co je Unicode?
+
+    Unicode přiřazuje každému znaku jedinečné číslo,
+    nezávisle na platformě,
+    nezávisle na programu,
+    nezávisle na jazyce.
+
+    Počítače, ze své podstaty, pracují pouze s čísly. Písmena a další znaky ukládají tak, že každému z nich
+    přiřadí číslo. Před vznikem Unicode existovaly stovky rozdílných kódovacích systémů pro přiřazování těchto
+    čísel. Žádné z těchto kódování nemohlo obsahovat dostatek znaků: například Evropská unie sama potřebuje
+    několik různých kódování, aby pokryla všechny své jazyky. Dokonce i pro jeden jediný jazyk, jako je angličtina,
+    nevyhovovalo žádné kódování pro všechny písmena, interpunkci a běžně používané technické symboly.
+
+    Tyto kódovací systémy také byly v konfliktu jeden s druhým. To znamená, že dvě kódování mohou používat
+    stejné číslo pro dva různé znaky, nebo používat různá čísla pro stejný znak. Jakýkoli počítač (zvláště servery)
+    musí podporovat mnoho různých kódování; přesto, kdykoli jsou data předávána mezi různými kódováními nebo
+    platformami, hrozí, že tato data budou poškozena.
+
+    </test-case>
+
+    <test-case id="WIU-el" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-7/el">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Τι είναι το Unicode;
+
+    Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα,
+    ανεξάρτητα από το λειτουργικό σύστημα,
+    ανεξάρτητα από το λογισμικό,
+    ανεξάρτητα από την γλώσσα.
+
+    Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και
+    άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία
+    κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω
+    περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν,
+    η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των
+    χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν
+    επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+    Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να
+    χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για
+    τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών
+    κωδικοσελίδων ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή
+    λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+
+    </test-case>
+
+    <test-case id="WIU-el-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1253/el">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Τι είναι το “Unicode”;
+
+    Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα,
+    ανεξάρτητα από το λειτουργικό σύστημα,
+    ανεξάρτητα από το λογισμικό,
+    ανεξάρτητα από την γλώσσα.
+
+    Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και
+    άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία
+    κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω
+    περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν,
+    η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των
+    χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν
+    επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+    Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να
+    χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για
+    τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών
+    κωδικοσελίδων ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή
+    λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+
+    </test-case>
+
+    <test-case id="WIU-pl" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-2/pl">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Czym jest Unikod ?
+
+    Unikod przypisuje unikalny numer każdemu znakowi, niezależny od używanej platformy, programu czy języka.
+
+    Zasadniczo, komputery rozumieją tylko liczby. Zapisują litery i inne znaki przypisując każdemu z nich liczbę.
+    Nim powstał Unikod, było wiele różnych systemów kodowania przypisujących te liczby. Brakowało jednego,
+    który mógłby pomieścić wystarczająco dużą liczbę znaków. Przykładowo, sama Unia Europejska potrzebowała
+    kilku różnych kodowań, by móc używać wszystkich używanych w niej języków. Nawet dla pojedynczego języka
+    takiego jak np. angielski brakowało jednego kodowania, które byłoby odpowiednie dla zaprezentowania
+    wszystkich liter, znaków przestankowych i popularnych symboli technicznych.
+
+    Innym problemem było, że kodowania te kolidowały ze sobą. Dwa, różne kodowania używały jednej liczby dla dwu
+    różnych znaków lub różnych liczb dla tego samego znaku. Wszystkie komputery (między innymi serwery) muszą
+    wspierać wszystkie te kodowania, gdyż dane przesyłane między różnymi systemami operacyjnymi zawsze
+    narażone są na uszkodzenie.
+
+    </test-case>
+
+    <test-case id="WIU-tr" encodings="UTF-8 UTF-32BE UTF-32LE ISO-8859-9/tr">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    Evrensel Kod Nedir?
+
+    Evrensel Kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+    hangi altyapı,
+    hangi yazılım,
+    hangi dil olursa olsun.
+
+    İlke olarak, bilgisayarlar sadece sayılarla işlem yaparlar. Kelimelerin ve yazı karakterlerinin her biri için
+    birer sayı atarlar ve böyle saklarlar. Evrensel Kod keşfedilmeden önce, bu sayıları atamak için birçok şifreleme
+    yöntemi vardı. Ancak, tüm bu dilleri gösterebilecek, örneğin; Avrupa Topluluğu bünyesindeki tüm ülkelerin dillerini
+    kapsayacak bir tek şifreleme yöntemi yoktu. Bunun yanısıra, sadece İngilizcedeki harfleri, noktalama
+    işaretlerini ve teknik sembolleri kapsayan tek bir şifreleme yöntemi de bulunmamaktaydı.
+
+    Bu şifreleme yöntemleri kendi aralarında çelişmektedir. İki farklı şifreleme, aynı sayıyı iki farklı karaktere
+    vermiş olabilir ya da farklı sayılar aynı karekteri kodlayabilir. Bilgisayarlar, özellikle sunucular, birçok
+    şifrelemeyi desteklemek zorundadırlar; veriler, farklı şifreleme ve altyapılardan geçerken bozulma riski taşırlar.
+
+    </test-case>
+
+    <test-case id="WIU-tr-Q" encodings="UTF-8 UTF-32BE UTF-32LE windows-1254/tr">
+    <!-- Copyright © 1991-2005 Unicode, Inc. All rights reserved. -->
+
+    “Evrensel Kod” Nedir?
+
+    Evrensel Kod her yazı karakteri için bir ve yalnız bir sayı şart koşar,
+    hangi altyapı,
+    hangi yazılım,
+    hangi dil olursa olsun.
+
+    İlke olarak, bilgisayarlar sadece sayılarla işlem yaparlar. Kelimelerin ve yazı karakterlerinin her biri için
+    birer sayı atarlar ve böyle saklarlar. Evrensel Kod keşfedilmeden önce, bu sayıları atamak için birçok şifreleme
+    yöntemi vardı. Ancak, tüm bu dilleri gösterebilecek, örneğin; Avrupa Topluluğu bünyesindeki tüm ülkelerin dillerini
+    kapsayacak bir tek şifreleme yöntemi yoktu. Bunun yanısıra, sadece İngilizcedeki harfleri, noktalama
+    işaretlerini ve teknik sembolleri kapsayan tek bir şifreleme yöntemi de bulunmamaktaydı.
+
+    Bu şifreleme yöntemleri kendi aralarında çelişmektedir. İki farklı şifreleme, aynı sayıyı iki farklı karaktere
+    vermiş olabilir ya da farklı sayılar aynı karekteri kodlayabilir. Bilgisayarlar, özellikle sunucular, birçok
+    şifrelemeyi desteklemek zorundadırlar; veriler, farklı şifreleme ve altyapılardan geçerken bozulma riski taşırlar.
+
+    </test-case>
+</charset-detection-tests>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java b/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
new file mode 100644
index 0000000..2e61023
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
@@ -0,0 +1,450 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.charsetdet;
+
+import java.io.ByteArrayInputStream;
+import java.io.Reader;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.CharsetDetector;
+import com.ibm.icu.text.CharsetMatch;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+//#endif
+
+/**
+ * @author andy
+ */
+public class TestCharsetDetector extends TestFmwk
+{
+    
+    /**
+     * Constructor
+     */
+    public TestCharsetDetector()
+    {
+    }
+
+    public static void main(String[] args) {
+        try
+        {
+            TestCharsetDetector test = new TestCharsetDetector();
+            test.run(args);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    private void CheckAssert(boolean exp) {
+        if (exp == false) {
+            String msg;
+            try {
+                throw new Exception();
+            }
+            catch (Exception e) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##           msg = "Test failure  " + e.getMessage() ;
+//#else
+                StackTraceElement failPoint = e.getStackTrace()[1];
+                msg = "Test failure in file " + failPoint.getFileName() +
+                             " at line " + failPoint.getLineNumber();
+//#endif
+            }
+            errln(msg);
+        }
+        
+    }
+    
+    private String stringFromReader(Reader reader)
+    {
+        StringBuffer sb = new StringBuffer();
+        char[] buffer   = new char[1024];
+        int bytesRead   = 0;
+        
+        try {
+            while ((bytesRead = reader.read(buffer, 0, 1024)) >= 0) {
+                sb.append(buffer, 0, bytesRead);
+            }
+            
+            return sb.toString();
+        } catch (Exception e) {
+            errln("stringFromReader() failed: " + e.toString());
+            return null;
+        }
+    }
+    
+    public void TestConstruction() {
+        int i;
+        CharsetDetector  det = new CharsetDetector();
+        if(det==null){
+            errln("Could not construct a charset detector");
+        }
+        String [] charsetNames = CharsetDetector.getAllDetectableCharsets();
+        CheckAssert(charsetNames.length != 0);
+        for (i=0; i<charsetNames.length; i++) {
+            CheckAssert(charsetNames[i].equals("") == false); 
+            // System.out.println("\"" + charsetNames[i] + "\"");
+        }
+     }
+
+    public void TestInputFilter() throws Exception
+    {
+        String s = "<a> <lot> <of> <English> <inside> <the> <markup> Un tr\u00E8s petit peu de Fran\u00E7ais. <to> <confuse> <the> <detector>";
+        byte[] bytes = s.getBytes("ISO-8859-1");
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        
+        det.enableInputFilter(true);
+        if (!det.inputFilterEnabled()){
+            errln("input filter should be enabled");
+        }
+        
+        det.setText(bytes);
+        m = det.detect();
+        
+        if (! m.getLanguage().equals("fr")) {
+            errln("input filter did not strip markup!");
+        }
+        
+        det.enableInputFilter(false);
+        det.setText(bytes);
+        m = det.detect();
+        
+        if (! m.getLanguage().equals("en")) {
+            errln("unfiltered input did not detect as English!");
+        }
+    }
+    
+    public void TestUTF8() throws Exception {
+        
+        String  s = "This is a string with some non-ascii characters that will " +
+                    "be converted to UTF-8, then shoved through the detection process.  " +
+                    "\u0391\u0392\u0393\u0394\u0395" +
+                    "Sure would be nice if our source could contain Unicode directly!";
+        byte [] bytes = s.getBytes("UTF-8");
+        CharsetDetector det = new CharsetDetector();
+        String retrievedS;
+        Reader reader;
+        
+        retrievedS = det.getString(bytes, "UTF-8");
+        CheckAssert(s.equals(retrievedS));
+        
+        reader = det.getReader(new ByteArrayInputStream(bytes), "UTF-8");
+        CheckAssert(s.equals(stringFromReader(reader)));
+        det.setDeclaredEncoding("UTF-8"); // Jitterbug 4451, for coverage
+    }
+    
+    public void TestUTF16() throws Exception
+    {
+        String source = 
+                "u0623\u0648\u0631\u0648\u0628\u0627, \u0628\u0631\u0645\u062c\u064a\u0627\u062a " +
+                "\u0627\u0644\u062d\u0627\u0633\u0648\u0628 \u002b\u0020\u0627\u0646\u062a\u0631\u0646\u064a\u062a";
+        
+        byte[] beBytes = source.getBytes("UnicodeBig");
+        byte[] leBytes = source.getBytes("UnicodeLittle");
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        
+        det.setText(beBytes);
+        m = det.detect();
+        
+        if (! m.getName().equals("UTF-16BE")) {
+            errln("Encoding detection failure: expected UTF-16BE, got " + m.getName());
+        }
+        
+        det.setText(leBytes);
+        m = det.detect();
+        
+        if (! m.getName().equals("UTF-16LE")) {
+            errln("Encoding detection failure: expected UTF-16LE, got " + m.getName());
+        }
+
+        // Jitterbug 4451, for coverage
+        int confidence = m.getConfidence(); 
+        if(confidence != 100){
+            errln("Did not get the expected confidence level " + confidence);
+        }
+        int matchType = m.getMatchType();
+        if(matchType != 0){
+            errln("Did not get the expected matchType level " + matchType);
+        }
+    }
+    
+    public void TestC1Bytes() throws Exception
+    {
+        String sISO =
+            "This is a small sample of some English text. Just enough to be sure that it detects correctly.";
+        
+        String sWindows =
+            "This is another small sample of some English text. Just enough to be sure that it detects correctly. It also includes some \u201CC1\u201D bytes.";
+
+        byte[] bISO     = sISO.getBytes("ISO-8859-1");
+        byte[] bWindows = sWindows.getBytes("windows-1252");
+        
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        
+        det.setText(bWindows);
+        m = det.detect();
+        
+        if (m.getName() != "windows-1252") {
+            errln("Text with C1 bytes not correctly detected as windows-1252.");
+            return;
+        }
+        
+        det.setText(bISO);
+        m = det.detect();
+        
+        if (m.getName() != "ISO-8859-1") {
+            errln("Text without C1 bytes not correctly detected as ISO-8859-1.");
+        }
+    }
+    
+    public void TestShortInput() {
+        // Test that detection with very short byte strings does not crash and burn.
+        // The shortest input that should produce positive detection result is two bytes, 
+        //   a UTF-16 BOM.
+        // TODO:  Detector confidence levels needs to be refined for very short input.
+        //        Too high now, for some charsets that happen to be compatible with a few bytes of input.
+        byte [][]  shortBytes = new byte [][] 
+            {
+                {},
+                {(byte)0x0a},
+                {(byte)'A', (byte)'B'},
+                {(byte)'A', (byte)'B', (byte)'C'},
+                {(byte)'A', (byte)'B', (byte)'C', (byte)'D'}
+            };
+        
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        for (int i=0; i<shortBytes.length; i++) {
+            det.setText(shortBytes[i]);
+            m = det.detect();
+            logln("i=" + i + " -> " + m.getName());
+        }
+    }
+    
+    public void TestBufferOverflow()
+    {
+        byte testStrings[][] = {
+            {(byte) 0x80, (byte) 0x20, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x45, (byte) 0x6E, (byte) 0x67, (byte) 0x6C, (byte) 0x69, (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x1b}, /* A partial ISO-2022 shift state at the end */
+            {(byte) 0x80, (byte) 0x20, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x45, (byte) 0x6E, (byte) 0x67, (byte) 0x6C, (byte) 0x69, (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x1b, (byte) 0x24}, /* A partial ISO-2022 shift state at the end */
+            {(byte) 0x80, (byte) 0x20, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x45, (byte) 0x6E, (byte) 0x67, (byte) 0x6C, (byte) 0x69, (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x1b, (byte) 0x24, (byte) 0x28}, /* A partial ISO-2022 shift state at the end */
+            {(byte) 0x80, (byte) 0x20, (byte) 0x54, (byte) 0x68, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x69, (byte) 0x73, (byte) 0x20, (byte) 0x45, (byte) 0x6E, (byte) 0x67, (byte) 0x6C, (byte) 0x69, (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x1b, (byte) 0x24, (byte) 0x28, (byte) 0x44}, /* A complete ISO-2022 shift state at the end with a bad one at the start */
+            {(byte) 0x1b, (byte) 0x24, (byte) 0x28, (byte) 0x44}, /* A complete ISO-2022 shift state at the end */
+            {(byte) 0xa1}, /* Could be a single byte shift-jis at the end */
+            {(byte) 0x74, (byte) 0x68, (byte) 0xa1}, /* Could be a single byte shift-jis at the end */
+            {(byte) 0x74, (byte) 0x68, (byte) 0x65, (byte) 0xa1} /* Could be a single byte shift-jis at the end, but now we have English creeping in. */
+        };
+        
+        String testResults[] = {
+            "windows-1252",
+            "windows-1252",
+            "windows-1252",
+            "windows-1252",
+            "ISO-2022-JP",
+            null,
+            null,
+            "ISO-8859-1"
+        };
+        
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch match;
+
+        det.setDeclaredEncoding("ISO-2022-JP");
+
+        for (int idx = 0; idx < testStrings.length; idx += 1) {
+            det.setText(testStrings[idx]);
+            match = det.detect();
+
+            if (match == null) {
+                if (testResults[idx] != null) {
+                    errln("Unexpectedly got no results at index " + idx);
+                }
+                else {
+                    logln("Got no result as expected at index " + idx);
+                }
+                continue;
+            }
+
+            if (testResults[idx] == null || ! testResults[idx].equals(match.getName())) {
+                errln("Unexpectedly got " + match.getName() + " instead of " + testResults[idx] +
+                      " at index " + idx + " with confidence " + match.getConfidence());
+                return;
+            }
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public void TestDetection()
+    {
+        //
+        //  Open and read the test data file.
+        //
+        //InputStreamReader isr = null;
+        
+        try {
+            InputStream is = TestCharsetDetector.class.getResourceAsStream("CharsetDetectionTests.xml");
+            if (is == null) {
+                errln("Could not open test data file CharsetDetectionTests.xml");
+                return;
+            }
+            
+            //isr = new InputStreamReader(is, "UTF-8"); 
+
+            // Set up an xml parser.
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            
+            factory.setIgnoringComments(true);
+            
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            
+            // Parse the xml content from the test case file.
+            Document doc = builder.parse(is, null);
+            Element root = doc.getDocumentElement();
+            
+            NodeList testCases = root.getElementsByTagName("test-case");
+            
+            // Process each test case
+            for (int n = 0; n < testCases.getLength(); n += 1) {
+                Node testCase = testCases.item(n);
+                NamedNodeMap attrs = testCase.getAttributes();
+                NodeList testData  = testCase.getChildNodes();
+                StringBuffer testText = new StringBuffer();
+                String id = attrs.getNamedItem("id").getNodeValue();
+                String encodings = attrs.getNamedItem("encodings").getNodeValue();
+                
+                // Collect the test case text.
+                for (int t = 0; t < testData.getLength(); t += 1) {
+                    Node textNode = testData.item(t);
+                    
+                    testText.append(textNode.getNodeValue());                    
+                }
+                
+                // Process test text with each encoding / language pair.
+                String testString = testText.toString();
+                String[] encodingList = encodings.split(" ");
+                for (int e = 0; e < encodingList.length; e += 1) {
+                    checkEncoding(testString, encodingList[e], id);
+                }
+            }
+            
+        } catch (Exception e) {
+            errln("exception while processing test cases: " + e.toString());
+        }
+    }
+
+    private void checkMatch(CharsetDetector det, String testString, String encoding, String language, String id) throws Exception
+    {
+        CharsetMatch m = det.detect();
+        String decoded;
+        
+        if (! m.getName().equals(encoding)) {
+            errln(id + ": encoding detection failure - expected " + encoding + ", got " + m.getName());
+            return;
+        }
+        
+        String charsetMatchLanguage = m.getLanguage();
+        if ((language != null && !charsetMatchLanguage.equals(language))
+            || (language == null && charsetMatchLanguage != null)
+            || (language != null && charsetMatchLanguage == null))
+        {
+            errln(id + ", " + encoding + ": language detection failure - expected " + language + ", got " + m.getLanguage());
+        }
+        
+        if (encoding.startsWith("UTF-32")) {
+            return;
+        }
+        
+        decoded = m.getString();
+        
+        if (! testString.equals(decoded)) {
+            errln(id + ", " + encoding + ": getString() didn't return the original string!");
+        }
+        
+        decoded = stringFromReader(m.getReader());
+        
+        if (! testString.equals(decoded)) {
+            errln(id + ", " + encoding + ": getReader() didn't yield the original string!");
+        }
+    }
+    
+    private void checkEncoding(String testString, String encoding, String id)
+    {
+        String enc = null, lang = null;
+        String[] split = encoding.split("/");
+        
+        enc = split[0];
+        
+        if (split.length > 1) {
+            lang = split[1];
+        }
+
+        try {
+            CharsetDetector det = new CharsetDetector();
+            byte[] bytes;
+            
+            //if (enc.startsWith("UTF-32")) {
+            //    UTF32 utf32 = UTF32.getInstance(enc);
+                
+            //    bytes = utf32.toBytes(testString);
+            //} else {
+                String from = enc;
+
+                while (true) {
+                    try {
+                        bytes = testString.getBytes(from);
+                    } catch (UnsupportedOperationException uoe) {
+                         // In some runtimes, the ISO-2022-CN converter
+                         // only converts *to* Unicode - we have to use
+                         // x-ISO-2022-CN-GB to convert *from* Unicode.
+                        if (from.equals("ISO-2022-CN")) {
+                            from = "x-ISO-2022-CN-GB";
+                            continue;
+                        }
+                        
+                        // Ignore any other converters that can't
+                        // convert from Unicode.
+                        return;
+                    } catch (UnsupportedEncodingException uee) {
+                        // Ignore any encodings that this runtime
+                        // doesn't support.
+                        return;
+                    }
+                    
+                    break;
+                }
+            //}
+        
+            det.setText(bytes);
+            checkMatch(det, testString, enc, lang, id);
+            
+            det.setText(new ByteArrayInputStream(bytes));
+            checkMatch(det, testString, enc, lang, id);
+         } catch (Exception e) {
+            errln(id + ": " + e.toString() + "enc=" + enc);
+            e.printStackTrace();
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/dev/test/cldr/TestAll.java b/src/com/ibm/icu/dev/test/cldr/TestAll.java
new file mode 100644
index 0000000..9dc2ee1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/cldr/TestAll.java
@@ -0,0 +1,29 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.cldr;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all collation and search tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "TestCLDRVsICU",
+              },
+              "All Cldr Vs ICU Tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Cldr";
+}
diff --git a/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java b/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
new file mode 100644
index 0000000..ecdc595
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
@@ -0,0 +1,552 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+**********************************************************************
+* Copyright (c) 2002-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.cldr;
+
+import java.io.File;
+
+//import org.unicode.cldr.util.LanguageTagParser;
+//import org.unicode.cldr.util.Utility;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.Iterator;
+import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+//import org.unicode.cldr.test.CLDRTest;
+//import org.unicode.cldr.tool.GenerateCldrTests;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * This is a file that runs the CLDR tests for ICU4J, to verify that ICU4J implements them
+ * correctly.
+ * WARNING: 
+ * 1. for this to work right, you have to have downloaded the CLDR data, and
+ * then set the CLDR directory correctly, using
+ * -DCLDR_DIRECTORY=<top level of cldr>
+ * 2. You probably also need to increase memory, eg with -Xmx512m
+ * 3. For speed, you should also use -DCLDR_DTD_CACHE=C:\cldrcache\, where
+ * C:\cldrcache\ is a temp directory to keep the program from hitting the net for
+ * each file access.
+ * 4. You may use other environment variables to narrow what you test. Eg
+ * -DXML_MATCH=".*" -DTEST_MATCH="zone.*" -DZONE_MATCH="(?!America/Argentina).*" 
+ *   a. -DXML_MATCH="de.*" (or whatever regex you want) to just
+ *   test certain locales.
+ *   b. -DTEST_MATCH="zone.*" (or whatever regex you want) to just test collation, numbers, etc.
+ *   c. -DZONE_MATCH=".*Moscow.*" (to only test certain zones)
+ * @author medavis
+ */
+public class TestCLDRVsICU extends TestFmwk {
+    static final boolean DEBUG = false;
+
+    //ULocale uLocale = ULocale.ENGLISH;
+    //Locale oLocale = Locale.ENGLISH; // TODO Drop once ICU4J has ULocale everywhere
+    //static PrintWriter log;
+    SAXParser SAX;
+    static Matcher LOCALE_MATCH, TEST_MATCH, ZONE_MATCH;
+    static String CLDR_DIRECTORY;
+    static {
+        System.out.println();
+        LOCALE_MATCH = getEnvironmentRegex("XML_MATCH", ".*");
+        TEST_MATCH = getEnvironmentRegex("TEST_MATCH", ".*");
+        ZONE_MATCH = getEnvironmentRegex("ZONE_MATCH", ".*"); // example
+
+        // WARNING: THIS IS TEMPORARY UNTIL I GET THE FILES STRAIGHTENED OUT
+        CLDR_DIRECTORY = getEnvironmentString("CLDR_DIRECTORY", "C:\\Unicode-CVS2\\cldr\\");
+        System.out.println();
+    }
+
+    private static Matcher getEnvironmentRegex(String key, String defaultValue) {
+        return Pattern.compile(getEnvironmentString(key, defaultValue)).matcher("");
+    }
+
+    private static String getEnvironmentString(String key, String defaultValue) {
+        String temp = System.getProperty(key);
+        if (temp == null) temp = defaultValue;
+        else System.out.print("-D" + key + "=\"" + temp + "\" ");
+        return temp;
+    }
+
+    public static void main(String[] args) throws Exception {
+        new TestCLDRVsICU().run(args);
+    }
+
+     Set allLocales = new TreeSet();
+
+    public void TestFiles() throws SAXException, IOException {
+        // only get ICU's locales
+        Set s = new TreeSet();
+        addLocales(NumberFormat.getAvailableULocales(), s);
+        addLocales(DateFormat.getAvailableULocales(), s);
+        addLocales(Collator.getAvailableULocales(), s);
+
+        // filter, to make tracking down bugs easier
+
+        for (Iterator it = s.iterator(); it.hasNext();) {
+            String locale = (String)it.next();
+            if (!LOCALE_MATCH.reset(locale).matches()) continue;
+            _test(locale);
+        }
+    }
+    
+    public void addLocales(ULocale[] list, Collection s) {
+        for (int i = 0; i < list.length; ++i) {
+            allLocales.add(list[i].toString());
+            s.add(list[i].getLanguage());
+        }
+    }
+
+    public String getLanguage(ULocale uLocale) {
+        String result = uLocale.getLanguage();
+        String script = uLocale.getScript();
+        if (script.length() != 0) result += "_" + script;
+        return result;
+    }
+
+    public void _test(String localeName) throws SAXException, IOException {
+        //uLocale = new ULocale(localeName);
+        //oLocale = uLocale.toLocale();
+
+        File f = new File(CLDR_DIRECTORY + "common\\test\\"+ localeName + ".xml");
+        logln("Testing " + f.getCanonicalPath());
+        SAX.parse(f, DEFAULT_HANDLER);
+    }
+
+    static Transliterator toUnicode = Transliterator.getInstance("any-hex");
+    static public String showString(String in) {
+        return "\u00AB" + in + "\u00BB (" + toUnicode.transliterate(in) + ")";
+    }
+    // ============ SAX Handler Infrastructure ============
+
+    abstract public class Handler {
+        Map settings = new TreeMap();
+        String name;
+        List currentLocales = new ArrayList();
+        int failures = 0;
+
+        void setName(String name) {
+            this.name = name;
+        }
+        void set(String attributeName, String attributeValue) {
+            //if (DEBUG) logln(attributeName + " => " + attributeValue);
+            settings.put(attributeName, attributeValue);
+        }
+        void checkResult(String value) {
+            if ("true".equals(settings.get("draft"))) {
+                return; // skip draft
+            }
+            ULocale ul = new ULocale("xx");
+            try {
+                for (int i = 0; i < currentLocales.size(); ++i) {
+                    ul = (ULocale)currentLocales.get(i);
+                    //loglnSAX("  Checking " + ul + "(" + ul.getDisplayName(ULocale.ENGLISH) + ")" + " for " + name);
+                    handleResult(ul, value);
+                    if (failures != 0) {
+                        errln("\tTotal Failures: " + failures + "\t" + ul + "(" + ul.getDisplayName(ULocale.ENGLISH) + ")");
+                        failures = 0;
+                    }
+                }
+            } catch (Exception e) {
+                StringWriter sw = new StringWriter();
+                PrintWriter pw = new PrintWriter(sw);
+                e.printStackTrace(pw);
+                pw.flush();
+                errln("Exception: Locale: " + ul + ",\tValue: <" + value + ">\r\n" + sw.toString());
+            }
+        }
+        public void loglnSAX(String message) {
+            String temp = message + "\t[" + name;
+            for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                String attributeName = (String) it.next();
+                String attributeValue = (String) settings.get(attributeName);
+                temp += " " + attributeName + "=<" + attributeValue + ">";
+            }
+            logln(temp + "]");
+        }
+        int lookupValue(Object x, Object[] list) {
+            for (int i = 0; i < list.length; ++i) {
+                if (x.equals(list[i])) return i;
+            }
+            loglnSAX("Unknown String: " + x);
+            return -1;
+        }
+        abstract void handleResult(ULocale currentLocale, String value) throws Exception;
+        /**
+         * @param attributes
+         */
+        public void setAttributes(Attributes attributes) {
+            String localeList = attributes.getValue("locales");
+            String[] currentLocaleString = new String[50];
+            com.ibm.icu.impl.Utility.split(localeList, ' ', currentLocaleString);
+            currentLocales.clear();
+            for (int i = 0; i < currentLocaleString.length; ++i) {
+                if (currentLocaleString[i].length() == 0) continue;
+                if (allLocales.contains("")) {
+                    logln("Skipping locale, not in ICU4J: " + currentLocaleString[i]);
+                    continue;
+                }
+                currentLocales.add(new ULocale(currentLocaleString[i]));
+            }
+            if (DEBUG) logln("Setting locales: " + currentLocales);
+        }
+    }
+
+    public Handler getHandler(String name, Attributes attributes) {
+        if (DEBUG) logln("Creating Handler: " + name);
+        Handler result = (Handler) RegisteredHandlers.get(name);
+        if (result == null) logln("Unexpected test type: " + name);
+        else {
+            result.setAttributes(attributes);
+        }
+        return result;
+    }
+
+    public void addHandler(String name, Handler handler) {
+        if (!TEST_MATCH.reset(name).matches()) handler = new NullHandler();
+        handler.setName(name);
+        RegisteredHandlers.put(name, handler);
+    }
+    Map RegisteredHandlers = new HashMap();
+
+    class NullHandler extends Handler {
+        void handleResult(ULocale currentLocale, String value) throws Exception {}        
+    }
+
+    // ============ Statics for Date/Number Support ============
+
+    static TimeZone utc = TimeZone.getTimeZone("GMT");
+    static DateFormat iso = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+    {
+        iso.setTimeZone(utc);
+    }
+    static int[] DateFormatValues = {-1, DateFormat.SHORT, DateFormat.MEDIUM, DateFormat.LONG, DateFormat.FULL};
+    static String[] DateFormatNames = {"none", "short", "medium", "long", "full"};
+
+    static String[] NumberNames = {"standard", "integer", "decimal", "percent", "scientific", "GBP"};
+
+
+    // ============ Handler for Collation ============ 
+    static UnicodeSet controlsAndSpace = new UnicodeSet("[:cc:]");
+    
+    static String remove(String in, UnicodeSet toRemove) {
+        int cp;
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < in.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(in, i);
+            if (!toRemove.contains(cp)) UTF16.append(result, cp);
+        }
+        return result.toString();
+    }
+
+    {
+        addHandler("collation", new Handler() {
+            public void handleResult(ULocale currentLocale, String value) {
+                Collator col = Collator.getInstance(currentLocale);
+                String lastLine = "";
+                int count = 0;
+                for (int pos = 0; pos < value.length();) {
+                    int nextPos = value.indexOf('\n', pos);
+                    if (nextPos < 0)
+                        nextPos = value.length();
+                    String line = value.substring(pos, nextPos);
+                    line = remove(line, controlsAndSpace); // HACK for SAX
+                    if (line.trim().length() != 0) { // HACK for SAX
+                        int comp = col.compare(lastLine, line);
+                        if (comp > 0) {
+                            failures++;
+                            errln("\tLine " + (count + 1) + "\tFailure: "
+                                    + showString(lastLine) + " should be leq "
+                                    + showString(line));
+                        } else if (DEBUG) {
+                            logln("OK: " + line);
+                        }
+                        lastLine = line;
+                    }
+                    pos = nextPos + 1;
+                    count++;
+                }
+            }
+        });
+
+        // ============ Handler for Numbers ============ 
+        addHandler("number", new Handler() {
+            public void handleResult(ULocale locale, String result) {
+                NumberFormat nf = null;
+                double v = Double.NaN;
+                for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                    String attributeName = (String) it.next();
+                    String attributeValue = (String) settings
+                            .get(attributeName);
+                    if (attributeName.equals("input")) {
+                        v = Double.parseDouble(attributeValue);
+                        continue;
+                    }
+                    // must be either numberType at this point
+                    int index = lookupValue(attributeValue, NumberNames);
+                    if (DEBUG) logln("Getting number format for " + locale);
+                    switch(index) {
+                    case 0: nf = NumberFormat.getInstance(locale); break;
+                    case 1: nf = NumberFormat.getIntegerInstance(locale); break;
+                    case 2: nf = NumberFormat.getNumberInstance(locale); break;
+                    case 3: nf = NumberFormat.getPercentInstance(locale); break;
+                    case 4: nf = NumberFormat.getScientificInstance(locale); break;
+                    default: nf = NumberFormat.getCurrencyInstance(locale); 
+                        nf.setCurrency(Currency.getInstance(attributeValue)); break;
+                    }
+                    String temp = nf.format(v).trim();
+                    result = result.trim(); // HACK because of SAX
+                    if (!temp.equals(result)) {
+                        errln("Number: Locale: " + locale
+                                + ", \tType: " + attributeValue
+                                + ", \tDraft: " + settings.get("draft")
+                                + ", \tCLDR: <" + result + ">, ICU: <" + temp + ">");
+                    }
+
+                }
+            }
+        });
+
+        // ============ Handler for Dates ============
+        addHandler("date", new Handler() {
+            public void handleResult(ULocale locale, String result) throws ParseException {
+                int dateFormat = 0;
+                int timeFormat = 0;
+                Date date = new Date();
+                for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                    String attributeName = (String) it.next();
+                    String attributeValue = (String) settings
+                            .get(attributeName);
+                    if (attributeName.equals("input")) {
+                        date = iso.parse(attributeValue);
+                        continue;
+                    }
+                    // must be either dateType or timeType at this point
+                    int index = lookupValue(attributeValue, DateFormatNames);
+                    if (attributeName.equals("dateType"))
+                        dateFormat = index;
+                    else
+                        timeFormat = index;
+
+                }
+                SimpleDateFormat dt = getDateFormat(locale, dateFormat, timeFormat);
+                dt.setTimeZone(utc);
+                String temp = dt.format(date).trim();
+                result = result.trim(); // HACK because of SAX
+                if (!temp.equals(result)) {
+                    errln("DateTime: Locale: " + locale 
+                            + ", \tDate: " + DateFormatNames[dateFormat]
+                            + ", \tTime: " + DateFormatNames[timeFormat]
+                            + ", \tDraft: " + settings.get("draft")
+                            + ", \tCLDR: <" + result + ">, ICU: <" + temp + ">");
+                }
+            }
+
+            private SimpleDateFormat getDateFormat(ULocale locale, int dateFormat, int timeFormat) {
+                if (DEBUG) logln("Getting date/time format for " + locale);
+                if (DEBUG && "ar_EG".equals(locale.toString())) {
+                    System.out.println("debug here");
+                }
+                DateFormat dt;
+                if (dateFormat == 0) {
+                    dt = DateFormat.getTimeInstance(DateFormatValues[timeFormat], locale);
+                    if (DEBUG) System.out.print("getTimeInstance");
+                } else if (timeFormat == 0) {
+                    dt = DateFormat.getDateInstance(DateFormatValues[dateFormat], locale);
+                    if (DEBUG) System.out.print("getDateInstance");
+                } else {
+                    dt = DateFormat.getDateTimeInstance(DateFormatValues[dateFormat], DateFormatValues[timeFormat], locale);
+                    if (DEBUG) System.out.print("getDateTimeInstance");
+                }
+                if (DEBUG) System.out.println("\tinput:\t" + dateFormat + ", " + timeFormat + " => " + ((SimpleDateFormat)dt).toPattern());
+                return (SimpleDateFormat)dt;
+            }
+        });
+
+        // ============ Handler for Zones ============
+        addHandler("zoneFields", new Handler() {
+            String date = "";
+            String zone = "";
+            String parse = "";
+            String pattern = "";
+            
+            public void handleResult(ULocale locale, String result) throws ParseException {
+                for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                    String attributeName = (String) it.next();
+                    String attributeValue = (String) settings.get(attributeName);
+                    if (attributeName.equals("date")) {
+                        date = attributeValue;
+                    } else if (attributeName.equals("field")) {
+                        pattern = attributeValue;
+                    } else if (attributeName.equals("zone")) {
+                        zone = attributeValue;
+                    } else if (attributeName.equals("parse")) {
+                        parse = attributeValue;
+                    }
+                }
+                if (!ZONE_MATCH.reset(zone).matches()) return;
+                Date dateValue = iso.parse(date);
+                SimpleDateFormat field = new SimpleDateFormat(pattern, locale);
+                field.setTimeZone(TimeZone.getTimeZone(zone));
+                String temp = field.format(dateValue).trim();
+                // SKIP PARSE FOR NOW
+                result = result.trim(); // HACK because of SAX
+                if (!temp.equals(result)) {
+                    temp = field.format(dateValue).trim(); // call again for debugging
+                    errln("Zone Format: Locale: " + locale 
+                            + ", \tZone: " + zone
+                            + ", \tDate: " + date
+                            + ", \tField: " + pattern
+                            + ", \tParse: " + parse
+                            + ", \tDraft: " + settings.get("draft")
+                            + ", \tCLDR: <" + result
+                            + ">, \tICU: <" + temp + ">");
+                }
+            }
+        });
+    }
+
+    // ============ Gorp for SAX ============
+
+    {
+        try {
+            SAXParserFactory factory = SAXParserFactory.newInstance();
+            factory.setValidating(true);
+            SAX = factory.newSAXParser();
+        } catch (Exception e) {
+            throw new IllegalArgumentException("can't start");
+        }
+    }
+
+    DefaultHandler DEFAULT_HANDLER = new DefaultHandler() {
+        static final boolean DEBUG = false;
+        StringBuffer lastChars = new StringBuffer();
+        //boolean justPopped = false;
+        Handler handler;
+
+        public void startElement(
+            String uri,
+            String localName,
+            String qName,
+            Attributes attributes)
+            throws SAXException {
+                //data.put(new ContextStack(contextStack), lastChars);
+                //lastChars = "";
+                try {
+                    if (qName.equals("cldrTest")) {
+                     // skip
+                    } else if (qName.equals("result")) {
+                        for (int i = 0; i < attributes.getLength(); ++i) {
+                            handler.set(attributes.getQName(i), attributes.getValue(i));
+                        }
+                    } else {
+                        handler = getHandler(qName, attributes);
+                        //handler.set("locale", uLocale.toString());
+                    }
+                    //if (DEBUG) logln("startElement:\t" + contextStack);
+                    //justPopped = false;
+                } catch (RuntimeException e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+        }
+        public void endElement(String uri, String localName, String qName)
+            throws SAXException {
+                try {
+                    //if (DEBUG) logln("endElement:\t" + contextStack);
+                    if (qName.equals("result")) handler.checkResult(lastChars.toString());
+                    else if (qName.length() != 0) {
+                        //logln("Unexpected contents of: " + qName + ", <" + lastChars + ">");
+                    }
+                    lastChars.setLength(0);
+                    //justPopped = true;
+                } catch (RuntimeException e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+            }
+        // Have to hack around the fact that the character data might be in pieces
+        public void characters(char[] ch, int start, int length)
+            throws SAXException {
+                try {
+                    String value = new String(ch,start,length);
+                    if (DEBUG) logln("characters:\t" + value);
+                    lastChars.append(value);
+                    //justPopped = false;
+                } catch (RuntimeException e) {
+                    e.printStackTrace();
+                    throw e;
+                }
+            }
+
+        // just for debugging
+
+        public void notationDecl (String name, String publicId, String systemId)
+        throws SAXException {
+            logln("notationDecl: " + name
+            + ", " + publicId
+            + ", " + systemId
+            );
+        }
+
+        public void processingInstruction (String target, String data)
+        throws SAXException {
+            logln("processingInstruction: " + target + ", " + data);
+        }
+
+        public void skippedEntity (String name)
+        throws SAXException
+        {
+            logln("skippedEntity: " + name
+            );
+        }
+
+        public void unparsedEntityDecl (String name, String publicId,
+                        String systemId, String notationName)
+        throws SAXException {
+            logln("unparsedEntityDecl: " + name
+            + ", " + publicId
+            + ", " + systemId
+            + ", " + notationName
+            );
+        }
+
+    };
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/collator/CollationAPITest.java b/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
new file mode 100644
index 0000000..d80a134
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
@@ -0,0 +1,1205 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationAPITest
+ * Source File: $ICU4CRoot/source/test/intltest/apicoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Locale;
+import java.util.Arrays;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+import java.util.MissingResourceException;
+
+public class CollationAPITest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationAPITest().run(args);
+        //new CollationAPITest().TestGetTailoredSet();
+    }
+    
+    /**
+     * This tests the collation key related APIs.
+     * - constructor/destructor
+     * - Collator.getCollationKey
+     * - == and != operators
+     * - comparison between collation keys
+     * - creating collation key with a byte array and vice versa
+     */
+    public void TestCollationKey() {
+        logln("testing CollationKey begins...");
+        Collator col = Collator.getInstance();
+        col.setStrength(Collator.TERTIARY);
+    
+        String test1 = "Abcda";
+        String test2 = "abcda";
+    
+        logln("Testing weird arguments");
+        CollationKey sortk1 = col.getCollationKey("");
+        // key gets reset here
+        byte[] bytes = sortk1.toByteArray();
+        doAssert(bytes.length == 3 && bytes[0] == 1 && bytes[1] == 1 
+                 && bytes[2] == 0, 
+                 "Empty string should return an empty collation key");
+        // bogus key returned here
+        sortk1 = col.getCollationKey(null);
+        doAssert(sortk1 == null, "Error code should return bogus collation key");
+
+        logln("Use tertiary comparison level testing ....");
+        sortk1 = col.getCollationKey(test1);
+        CollationKey sortk2 = col.getCollationKey(test2);
+        Object sortk3 = sortk2;
+        doAssert((sortk1.compareTo(sortk2)) > 0 
+                 && (sortk1.compareTo(sortk3)) > 0, "Result should be \"Abcda\" >>> \"abcda\"");
+    
+        CollationKey sortkNew;
+        sortkNew = sortk1;
+        doAssert(!(sortk1.equals(sortk2)) && !(sortk1.equals(sortk3)), 
+                 "The sort keys should be different");
+        doAssert((sortk1.hashCode() != sortk2.hashCode()), "sort key hashCode() failed");
+        doAssert((sortk1.equals(sortkNew)), "The sort keys assignment failed");
+        doAssert((sortk1.hashCode() == sortkNew.hashCode()), "sort key hashCode() failed");
+
+        // check invaliad comparisons
+        Object fake = "fake";
+        try {
+            sortk1.compareTo(fake);
+            errln("Non-CollationKey comparison");
+        }
+        catch (Exception e) {
+                logln("PASS: Non-CollationKey comparison failed as expected");
+        }
+        if (sortk1.equals(fake)) {
+            errln("Non-CollationKey comparison");
+        }
+        
+        // port from apicoll
+        try {
+            col = Collator.getInstance();
+        } catch (Exception e) {
+            errln("Collator.getInstance() failed");
+        }
+        if (col.getStrength() != Collator.TERTIARY){
+            errln("Default collation did not have tertiary strength");
+        }
+
+        // Need to use identical strength
+        col.setStrength(Collator.IDENTICAL);
+
+        byte key2compat[] = {
+            // 3.9 key, UCA 5.1
+            (byte) 0x2c, (byte) 0x2e, (byte) 0x30,
+            (byte) 0x32, (byte) 0x2c, (byte) 0x01,
+            (byte) 0x09, (byte) 0x01, (byte) 0x09,
+            (byte) 0x01, (byte) 0x2b, (byte) 0x01,
+            (byte) 0x92, (byte) 0x93, (byte) 0x94,
+            (byte) 0x95, (byte) 0x92, (byte) 0x00
+
+            // 3.6 key, UCA 5.0
+            /*
+            (byte) 0x29, (byte) 0x2b, (byte) 0x2d,
+            (byte) 0x2f, (byte) 0x29, (byte) 0x01,
+            (byte) 0x09, (byte) 0x01, (byte) 0x09,
+            (byte) 0x01, (byte) 0x28, (byte) 0x01,
+            (byte) 0x92, (byte) 0x93, (byte) 0x94,
+            (byte) 0x95, (byte) 0x92, (byte) 0x00
+            */
+
+            // 3.4 key UCA 4.1
+            /*
+            (byte) 0x28, (byte) 0x2a, (byte) 0x2c, 
+            (byte) 0x2e, (byte) 0x28, (byte) 0x01, 
+            (byte) 0x09, (byte) 0x01, (byte) 0x09, 
+            (byte) 0x01, (byte) 0x27, (byte) 0x01, 
+            (byte) 0x92, (byte) 0x93, (byte) 0x94, 
+            (byte) 0x95, (byte) 0x92, (byte) 0x00        
+            */ 
+            
+            //          2.6.1 key
+            /*
+            0x26, 0x28, 0x2A, 0x2C, 0x26, 0x01, 
+            0x09, 0x01, 0x09, 0x01, 0x25, 0x01, 
+            0x92, 0x93, 0x94, 0x95, 0x92, 0x00 
+            */
+            
+            // 2.2 key
+            /*
+            0x1D, 0x1F, 0x21, 0x23, 0x1D, 0x01,
+            0x09, 0x01, 0x09, 0x01, 0x1C, 0x01,
+            0x92, 0x93, 0x94, 0x95, 0x92, 0x00
+            */
+            
+            // 2.0 key
+            /*
+            0x19, 0x1B, 0x1D, 0x1F, 0x19,
+            0x01, 0x09, 0x01, 0x09, 0x01,
+            0x18, 0x01,
+            0x92, 0x93, 0x94, 0x95, 0x92,
+            0x00
+            */
+            
+            // 1.8.1 key.
+            /*
+            0x19, 0x1B, 0x1D, 0x1F, 0x19,
+            0x01, 0x0A, 0x01, 0x0A, 0x01,
+            0x92, 0x93, 0x94, 0x95, 0x92,
+            0x00 
+            */
+        };
+
+        CollationKey key1 = col.getCollationKey(test1);
+        CollationKey key2 = col.getCollationKey(test2);
+        CollationKey key3 = col.getCollationKey(test2);
+    
+        doAssert(key1.compareTo(key2) > 0, 
+                 "Result should be \"Abcda\" > \"abcda\"");
+        doAssert(key2.compareTo(key1) < 0,
+                "Result should be \"abcda\" < \"Abcda\"");
+        doAssert(key2.compareTo(key3) == 0,
+                "Result should be \"abcda\" ==  \"abcda\"");
+     
+        doAssert(Arrays.equals(key2.toByteArray(), key2compat),
+                 "Binary format for 'abcda' sortkey different for identical strength!");
+    
+        logln("Use secondary comparision level testing ...");
+        col.setStrength(Collator.SECONDARY);
+    
+        key1 = col.getCollationKey(test1);
+        key2 = col.getCollationKey(test2);
+        key3 = col.getCollationKey(test2);
+    
+        doAssert(key1.compareTo(key2) == 0, 
+                "Result should be \"Abcda\" == \"abcda\"");
+        doAssert(key2.compareTo(key3) == 0,
+                "Result should be \"abcda\" ==  \"abcda\"");
+    
+        byte tempkey[] = key2.toByteArray();
+        byte subkey2compat[] = new byte[tempkey.length];
+        System.arraycopy(key2compat, 0, subkey2compat, 0, tempkey.length);
+        subkey2compat[subkey2compat.length - 1] = 0;
+        doAssert(Arrays.equals(tempkey, subkey2compat),
+                 "Binary format for 'abcda' sortkey different for secondary strength!");
+    
+        logln("testing sortkey ends...");
+    }
+    
+    public void TestRawCollationKey()
+    {
+        // testing constructors
+        RawCollationKey key = new RawCollationKey();
+        if (key.bytes != null || key.size != 0) {
+            errln("Empty default constructor expected to leave the bytes null "
+                  + "and size 0"); 
+        }
+        byte array[] = new byte[128];
+        key = new RawCollationKey(array);
+        if (key.bytes != array || key.size != 0) {
+            errln("Constructor taking an array expected to adopt it and "
+                  + "retaining its size 0"); 
+        }
+        try {
+            key = new RawCollationKey(array, 129);
+            errln("Constructor taking an array and a size > array.length "
+                  + "expected to throw an exception"); 
+        } catch (IndexOutOfBoundsException e) {
+                logln("PASS: Constructor failed as expected");
+        }
+        try {
+            key = new RawCollationKey(array, -1);
+            errln("Constructor taking an array and a size < 0 "
+                  + "expected to throw an exception"); 
+        } catch (IndexOutOfBoundsException e) {
+                logln("PASS: Constructor failed as expected");
+        }
+        key = new RawCollationKey(array, array.length >> 1);
+        if (key.bytes != array || key.size != (array.length >> 1)) {
+            errln("Constructor taking an array and a size, "
+                  + "expected to adopt it and take the size specified"); 
+        }
+        key = new RawCollationKey(10);
+        if (key.bytes == null || key.bytes.length != 10 || key.size != 0) {
+            errln("Constructor taking a specified capacity expected to "
+                  + "create a new internal byte array with length 10 and "
+                  + "retain size 0"); 
+        }
+    }
+    
+    void doAssert(boolean conditions, String message) {
+        if (!conditions) {
+            errln(message);
+        }
+    }
+    
+    /**
+     * This tests the comparison convenience methods of a collator object.
+     * - greater than
+     * - greater than or equal to
+     * - equal to
+     */
+    public void TestCompare() {
+        logln("The compare tests begin : ");
+        Collator col = Collator.getInstance(Locale.ENGLISH);
+        
+        String test1 = "Abcda";
+        String test2 = "abcda";
+        logln("Use tertiary comparison level testing ....");
+        
+        Object obj1 = test1;
+        Object obj2 = test2;
+        doAssert((col.compare(obj1, obj2) > 0), "Result should be \"Abcda\" != \"abcda\"");
+        doAssert((!col.equals(test1, test2) ), "Result should be \"Abcda\" != \"abcda\"");
+        doAssert((col.compare(test1, test2) > 0 ), "Result should be \"Abcda\" >>> \"abcda\"");
+    
+        col.setStrength(Collator.SECONDARY);
+        logln("Use secondary comparison level testing ....");
+                    
+        doAssert((col.compare(obj1, obj2) == 0), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.equals(test1, test2) ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.compare(test1, test2) == 0), "Result should be \"Abcda\" == \"abcda\"");
+    
+        col.setStrength(Collator.PRIMARY);
+        logln("Use primary comparison level testing ....");
+        
+        doAssert((col.compare(obj1, obj2) == 0 ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.equals(test1, test2) ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.compare(test1, test2) == 0 ), "Result should be \"Abcda\" == \"abcda\"");
+        logln("The compare tests end.");
+        
+        Integer die = new Integer(1);
+        try {
+            col.compare(die, test1);
+            errln("Non-Strings should fail col.compare(Object, Object)");
+        } catch (Exception e) {
+                logln("PASS: Non-Strings comparison failed as expected");
+        }
+    }
+    
+    /**
+    * Tests decomposition setting
+    */
+    public void TestDecomposition() {
+        Collator en_US = null, el_GR = null, vi_VN = null;
+
+        en_US = Collator.getInstance(new Locale("en", "US"));
+        el_GR = Collator.getInstance(new Locale("el", "GR"));
+        vi_VN = Collator.getInstance(new Locale("vi", "VN"));
+
+        
+        // there is no reason to have canonical decomposition in en_US OR default locale */
+        if (vi_VN.getDecomposition() != Collator.CANONICAL_DECOMPOSITION)
+        {
+            errln("vi_VN collation did not have cannonical decomposition for normalization!");
+        }
+
+        if (el_GR.getDecomposition() != Collator.CANONICAL_DECOMPOSITION)
+        {
+            errln("el_GR collation did not have cannonical decomposition for normalization!");
+        }
+
+        if (en_US.getDecomposition() != Collator.NO_DECOMPOSITION)
+        {
+            errln("en_US collation had cannonical decomposition for normalization!");
+        }
+    }
+    
+    /**
+     * This tests the duplication of a collator object.
+     */
+    public void TestDuplicate() {
+        //Clone does not be implemented 
+        Collator col1 = Collator.getInstance(Locale.ENGLISH);
+        
+        // Collator col2 = (Collator)col1.clone();
+        // doAssert(col1.equals(col2), "Cloned object is not equal to the orginal");
+        String ruleset = "< a, A < b, B < c, C < d, D, e, E";
+        RuleBasedCollator col3 = null;
+        try {
+            col3 = new RuleBasedCollator(ruleset);
+        } catch (Exception e) {
+            errln("Failure creating RuleBasedCollator with rule:" + ruleset);
+            return;
+        }
+        doAssert(!col1.equals(col3), "Cloned object is equal to some dummy");
+        col3 = (RuleBasedCollator)col1;
+        doAssert(col1.equals(col3), "Copied object is not equal to the orginal");
+        
+    }
+    
+    /**
+     * This tests the CollationElementIterator related APIs.
+     * - creation of a CollationElementIterator object
+     * - == and != operators
+     * - iterating forward
+     * - reseting the iterator index
+     * - requesting the order properties(primary, secondary or tertiary)
+     */
+    public void TestElemIter() {
+        // logln("testing sortkey begins...");
+        Collator col = Collator.getInstance(Locale.ENGLISH);
+
+           
+        String testString1 = "XFILE What subset of all possible test cases has the highest probability of detecting the most errors?";
+        String testString2 = "Xf_ile What subset of all possible test cases has the lowest probability of detecting the least errors?";
+        // logln("Constructors and comparison testing....");
+        CollationElementIterator iterator1 = ((RuleBasedCollator)col).getCollationElementIterator(testString1);
+        
+        CharacterIterator chariter=new StringCharacterIterator(testString1);
+        // copy ctor
+        CollationElementIterator iterator2 = ((RuleBasedCollator)col).getCollationElementIterator(chariter);
+        UCharacterIterator uchariter=UCharacterIterator.getInstance(testString2);
+        CollationElementIterator iterator3 = ((RuleBasedCollator)col).getCollationElementIterator(uchariter);
+    
+        int offset = 0;
+        offset = iterator1.getOffset();
+        if (offset != 0) {
+            errln("Error in getOffset for collation element iterator");
+            return;
+        }
+        iterator1.setOffset(6);
+        iterator1.setOffset(0);
+        int order1, order2, order3;
+        
+        order1 = iterator1.next();
+        doAssert(!(iterator1.equals(iterator2)), "The first iterator advance failed");
+        order2 = iterator2.next();
+        
+        doAssert((iterator1.equals(iterator2)), "The second iterator advance failed"); 
+        doAssert((order1 == order2), "The order result should be the same");
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be the same");
+        doAssert((CollationElementIterator.secondaryOrder(order1) == 
+            CollationElementIterator.secondaryOrder(order3)), "The secondary orders should be the same");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) == 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be the same");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be identical");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) != 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be different");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        // invalid test wrong in UCA
+        // doAssert((CollationElementIterator.secondaryOrder(order1) != 
+        //    CollationElementIterator.secondaryOrder(order3)), "The secondary orders should not be the same");
+            
+        doAssert((order1 != CollationElementIterator.NULLORDER), "Unexpected end of iterator reached");
+    
+        iterator1.reset(); 
+        iterator2.reset(); 
+        iterator3.reset();
+        order1 = iterator1.next();
+        
+        doAssert(!(iterator1.equals(iterator2)), "The first iterator advance failed");
+        
+        order2 = iterator2.next();
+        
+        doAssert((iterator1.equals(iterator2)), "The second iterator advance failed");
+        doAssert((order1 == order2), "The order result should be the same");
+    
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be the same");
+        doAssert((CollationElementIterator.secondaryOrder(order1) == 
+            CollationElementIterator.secondaryOrder(order3)), "The secondary orders should be the same");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) == 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be the same");
+    
+        order1 = iterator1.next(); 
+        order2 = iterator2.next(); 
+        order3 = iterator3.next();
+        
+        doAssert((CollationElementIterator.primaryOrder(order1) == 
+            CollationElementIterator.primaryOrder(order3)), "The primary orders should be identical");
+        doAssert((CollationElementIterator.tertiaryOrder(order1) != 
+            CollationElementIterator.tertiaryOrder(order3)), "The tertiary orders should be different");
+    
+        order1 = iterator1.next(); 
+        order3 = iterator3.next();
+        
+        // obsolete invalid test, removed
+        // doAssert((CollationElementIterator.secondaryOrder(order1) != 
+        //    CollationElementIterator.secondaryOrder(order3)), "The secondary orders should not be the same");
+        doAssert((order1 != CollationElementIterator.NULLORDER), "Unexpected end of iterator reached");
+        doAssert(!(iterator2.equals(iterator3)), "The iterators should be different");
+        logln("testing CollationElementIterator ends...");
+    }
+    
+    /**
+     * This tests the hashCode method of a collator object.
+     */
+    public void TestHashCode() {
+        logln("hashCode tests begin.");
+        Collator col1 = Collator.getInstance(Locale.ENGLISH);
+    
+        Collator col2 = null;
+        Locale dk = new Locale("da", "DK", "");
+        try {
+            col2 = Collator.getInstance(dk);
+        } catch (Exception e) {
+            errln("Danish collation creation failed.");
+            return;
+        }
+    
+        Collator col3 = null;
+        try {
+            col3 = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("2nd default collation creation failed.");
+            return;
+        }
+    
+        logln("Collator.hashCode() testing ...");
+        
+        doAssert(col1.hashCode() != col2.hashCode(), "Hash test1 result incorrect" );                 
+        doAssert(!(col1.hashCode() == col2.hashCode()), "Hash test2 result incorrect" );              
+        doAssert(col1.hashCode() == col3.hashCode(), "Hash result not equal" );               
+    
+        logln("hashCode tests end.");
+        
+        String test1 = "Abcda";
+        String test2 = "abcda";
+        
+        CollationKey sortk1, sortk2, sortk3;
+                    
+        sortk1 = col3.getCollationKey(test1);
+        sortk2 = col3.getCollationKey(test2); 
+        sortk3 = col3.getCollationKey(test2); 
+        
+        doAssert(sortk1.hashCode() != sortk2.hashCode(), "Hash test1 result incorrect");               
+        doAssert(sortk2.hashCode() == sortk3.hashCode(), "Hash result not equal" );
+    }
+    
+    /**
+     * This tests the properties of a collator object.
+     * - constructor
+     * - factory method getInstance
+     * - compare and getCollationKey
+     * - get/set decomposition mode and comparison level
+     */
+    public void TestProperty() {
+        /* 
+          All the collations have the same version in an ICU
+          version.
+          ICU 2.0 currVersionArray = {0x18, 0xC0, 0x02, 0x02};
+          ICU 2.1 currVersionArray = {0x19, 0x00, 0x03, 0x03};
+          ICU 2.8 currVersionArray = {0x29, 0x80, 0x00, 0x04};          
+        */    
+        logln("The property tests begin : ");
+        logln("Test ctors : ");
+        Collator col = Collator.getInstance(Locale.ENGLISH);
+
+    
+        logln("Test getVersion");
+        VersionInfo expectedVersion = VersionInfo.getInstance(0x31, 0xC0, 0x00, 0x05);
+        doAssert(col.getVersion().equals(expectedVersion), "Expected version "+expectedVersion.toString()+" got "+col.getVersion().toString());
+        
+        logln("Test getUCAVersion");
+        VersionInfo expectedUCAVersion = VersionInfo.getInstance(0x05, 1, 0, 0);
+        doAssert(col.getUCAVersion().equals(expectedUCAVersion), "Expected UCA version "+expectedUCAVersion.toString()+" got "+col.getUCAVersion().toString());
+        
+        doAssert((col.compare("ab", "abc") < 0), "ab < abc comparison failed");
+        doAssert((col.compare("ab", "AB") < 0), "ab < AB comparison failed");
+        doAssert((col.compare("blackbird", "black-bird") > 0), "black-bird > blackbird comparison failed");
+        doAssert((col.compare("black bird", "black-bird") < 0), "black bird > black-bird comparison failed");
+        doAssert((col.compare("Hello", "hello") > 0), "Hello > hello comparison failed");
+    
+        logln("Test ctors ends.");
+        
+        logln("testing Collator.getStrength() method ...");
+        doAssert((col.getStrength() == Collator.TERTIARY), "collation object has the wrong strength");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+            
+        logln("testing Collator.setStrength() method ...");
+        col.setStrength(Collator.SECONDARY);
+        doAssert((col.getStrength() != Collator.TERTIARY), "collation object's strength is secondary difference");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+        doAssert((col.getStrength() == Collator.SECONDARY), "collation object has the wrong strength");
+    
+        logln("testing Collator.setDecomposition() method ...");
+        col.setDecomposition(Collator.NO_DECOMPOSITION);
+        doAssert((col.getDecomposition() != Collator.CANONICAL_DECOMPOSITION), "Decomposition mode != Collator.CANONICAL_DECOMPOSITION");
+        doAssert((col.getDecomposition() == Collator.NO_DECOMPOSITION), "Decomposition mode = Collator.NO_DECOMPOSITION");
+        
+        
+        RuleBasedCollator rcol = (RuleBasedCollator)Collator.getInstance(new Locale("da", "DK"));
+        doAssert(rcol.getRules().length() != 0, "da_DK rules does not have length 0");
+        
+        try {
+            col = Collator.getInstance(Locale.FRENCH);
+        } catch (Exception e) {
+            errln("Creating French collation failed.");
+            return;
+        }
+    
+        col.setStrength(Collator.PRIMARY);
+        logln("testing Collator.getStrength() method again ...");
+        doAssert((col.getStrength() != Collator.TERTIARY), "collation object has the wrong strength");
+        doAssert((col.getStrength() == Collator.PRIMARY), "collation object's strength is not primary difference");
+            
+        logln("testing French Collator.setStrength() method ...");
+        col.setStrength(Collator.TERTIARY);
+        doAssert((col.getStrength() == Collator.TERTIARY), "collation object's strength is not tertiary difference");
+        doAssert((col.getStrength() != Collator.PRIMARY), "collation object's strength is primary difference");
+        doAssert((col.getStrength() != Collator.SECONDARY), "collation object's strength is secondary difference");
+    
+    }
+    public void TestJunkCollator(){
+        logln("Create junk collation: ");
+        Locale abcd = new Locale("ab", "CD", "");
+        
+        Collator junk = Collator.getInstance(abcd);
+        Collator col = Collator.getInstance();
+
+    
+        String colrules = ((RuleBasedCollator)col).getRules();
+        String junkrules = ((RuleBasedCollator)junk).getRules();
+        doAssert(colrules == junkrules || colrules.equals(junkrules), 
+                   "The default collation should be returned.");
+        Collator frCol = null;
+        try {
+            frCol = Collator.getInstance(Locale.FRANCE);
+        } catch (Exception e) {
+            errln("Creating French collator failed.");
+            return;
+        }
+    
+        doAssert(!(frCol.equals(junk)), "The junk is the same as the French collator.");
+        logln("Collator property test ended.");
+    
+    }
+    /**
+    * This tests the RuleBasedCollator
+    * - constructor/destructor
+    * - getRules
+    */
+    public void TestRuleBasedColl() {
+        RuleBasedCollator col1 = null, col2 = null, col3 = null, col4 = null;
+    
+        String ruleset1 = "&9 < a, A < b, B < c, C; ch, cH, Ch, CH < d, D, e, E"; 
+        String ruleset2 = "&9 < a, A < b, B < c, C < d, D, e, E";
+        String ruleset3 = "&";
+        
+        try {
+            col1 = new RuleBasedCollator(ruleset1);
+        } catch (Exception e) {
+            // only first error needs to be a warning since we exit function 
+            warnln("RuleBased Collator creation failed.");
+            return;
+        }
+    
+        try {
+            col2 = new RuleBasedCollator(ruleset2);
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed.");
+            return;
+        }
+    
+        try {
+            // empty rules fail
+            col3 = new RuleBasedCollator(ruleset3);
+            errln("Failure: Empty rules for the collator should fail");
+            return;
+        } catch (MissingResourceException e) {
+            warnln(e.getMessage());
+        } catch (Exception e) {
+            logln("PASS: Empty rules for the collator failed as expected");
+        }
+        
+        Locale locale = new Locale("aa", "AA");
+        try {
+            col3 = (RuleBasedCollator)Collator.getInstance(locale);
+        } catch (Exception e) {
+            errln("Fallback Collator creation failed.: %s");
+            return;
+        }
+    
+        try {
+            col3 = (RuleBasedCollator)Collator.getInstance();
+        } catch (Exception e) {
+            errln("Default Collator creation failed.: %s");
+            return;
+        }
+    
+        String rule1 = col1.getRules(); 
+        String rule2 = col2.getRules();
+        String rule3 = col3.getRules();
+    
+        doAssert(!rule1.equals(rule2), "Default collator getRules failed");
+        doAssert(!rule2.equals(rule3), "Default collator getRules failed");
+        doAssert(!rule1.equals(rule3), "Default collator getRules failed");
+        
+        try {
+            col4 = new RuleBasedCollator(rule2);
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed.");
+            return;
+        }
+    
+        String rule4 = col4.getRules();
+        doAssert(rule2.equals(rule4), "Default collator getRules failed");
+        // tests that modifier ! is always ignored
+        String exclamationrules = "!&a<b";
+        // java does not allow ! to be the start of the rule
+        String thaistr = "\u0e40\u0e01\u0e2d";
+        try {
+            RuleBasedCollator col5 = new RuleBasedCollator(exclamationrules);
+            RuleBasedCollator encol = (RuleBasedCollator)
+                                        Collator.getInstance(Locale.ENGLISH);
+            CollationElementIterator col5iter 
+                                   = col5.getCollationElementIterator(thaistr);
+            CollationElementIterator encoliter 
+                                   = encol.getCollationElementIterator(
+                                                                      thaistr);
+            while (true) {
+                // testing with en since thai has its own tailoring
+                int ce = col5iter.next();
+                int ce2 = encoliter.next();
+                if (ce2 != ce) {
+                    errln("! modifier test failed");
+                }
+                if (ce == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+            }
+        } catch (Exception e) {
+            errln("RuleBased Collator creation failed for ! modifier.");
+            return;
+        }
+    }
+    
+    /**
+    * This tests the RuleBasedCollator
+    * - getRules
+    */
+    public void TestRules() {
+        RuleBasedCollator coll = (RuleBasedCollator)Collator.getInstance(new Locale("","","")); //root
+            // logln("PASS: RuleBased Collator creation passed");
+
+    
+        String rules = coll.getRules();
+        if (rules != null && rules.length() != 0) {
+            errln("Root tailored rules failed");
+        }
+    }
+    
+    public void TestSafeClone() {
+        String test1 = "abCda";
+        String test2 = "abcda";
+        
+        // one default collator & two complex ones 
+        RuleBasedCollator someCollators[] = {
+            (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH),
+            (RuleBasedCollator)Collator.getInstance(Locale.KOREA),
+            (RuleBasedCollator)Collator.getInstance(Locale.JAPAN)
+        };
+        RuleBasedCollator someClonedCollators[] = new RuleBasedCollator[3];
+        
+        // change orig & clone & make sure they are independent 
+    
+        for (int index = 0; index < someCollators.length; index ++)
+        {
+            try {
+                someClonedCollators[index] 
+                            = (RuleBasedCollator)someCollators[index].clone();
+            } catch (CloneNotSupportedException e) {
+                errln("Error cloning collator");
+            }
+    
+            someClonedCollators[index].setStrength(Collator.TERTIARY);
+            someCollators[index].setStrength(Collator.PRIMARY);
+            someClonedCollators[index].setCaseLevel(false);
+            someCollators[index].setCaseLevel(false);
+            
+            doAssert(someClonedCollators[index].compare(test1, test2) > 0, 
+                     "Result should be \"abCda\" >>> \"abcda\" ");
+            doAssert(someCollators[index].compare(test1, test2) == 0, 
+                     "Result should be \"abCda\" == \"abcda\" ");
+        }
+    }
+
+    public void TestGetTailoredSet() 
+    {
+        logln("testing getTailoredSet...");
+        String rules[] = {
+            "&a < \u212b",             
+            "& S < \u0161 <<< \u0160",
+        };
+        String data[][] = {
+            { "\u212b", "A\u030a", "\u00c5" },        
+            { "\u0161", "s\u030C", "\u0160", "S\u030C" }            
+        };
+    
+        int i = 0, j = 0;
+        
+        RuleBasedCollator coll;
+        UnicodeSet set;
+        
+        for(i = 0; i < rules.length; i++) {
+            try {
+                logln("Instantiating a collator from "+rules[i]);
+                coll = new RuleBasedCollator(rules[i]);
+                set = coll.getTailoredSet();
+                logln("Got set: "+set.toPattern(true));
+                if(set.size() != data[i].length) {
+                    errln("Tailored set size different ("+set.size()+") than expected ("+data[i].length+")");
+                }
+                for(j = 0; j < data[i].length; j++) {
+                    logln("Checking to see whether "+data[i][j]+" is in set");
+                    if(!set.contains(data[i][j])) {
+                        errln("Tailored set doesn't contain "+data[i][j]+"... It should");
+                    }
+                }
+            } catch (Exception e) {
+                warnln("Couldn't open collator with rules "+ rules[i]);
+            }
+        }
+    }
+
+    /** 
+     * Simple test to see if Collator is subclassable
+     */
+    public void TestSubClass() 
+    {
+        class TestCollator extends Collator
+        {
+            public boolean equals(Object that) {
+                return this == that;
+            }
+    
+            public int hashCode() {
+                return 0;
+            }
+            
+            public int compare(String source, String target) {
+                return source.compareTo(target);
+            }
+            
+            public CollationKey getCollationKey(String source)
+            {   return new CollationKey(source, 
+                          getRawCollationKey(source, new RawCollationKey()));
+            }
+            
+            public RawCollationKey getRawCollationKey(String source, 
+                                                      RawCollationKey key)
+            {
+                byte temp1[] = source.getBytes();
+                byte temp2[] = new byte[temp1.length + 1];
+                System.arraycopy(temp1, 0, temp2, 0, temp1.length);
+                temp2[temp1.length] = 0;
+                if (key == null) {
+                    key = new RawCollationKey();
+                }
+                key.bytes = temp2; 
+                key.size = temp2.length;
+                return key;
+            }
+            
+            public void setVariableTop(int ce)
+            {
+            }
+            
+            public int setVariableTop(String str) 
+            {
+                return 0;
+            }
+            
+            public int getVariableTop()
+            {
+                return 0;
+            }
+            public VersionInfo getVersion()
+            {
+                return VersionInfo.getInstance(0);
+            }
+            public VersionInfo getUCAVersion()
+            {
+                return VersionInfo.getInstance(0);
+            }
+        }
+ 
+        Collator col1 = new TestCollator();
+        Collator col2 = new TestCollator();
+        if (col1.equals(col2)) {
+            errln("2 different instance of TestCollator should fail");
+        }
+        if (col1.hashCode() != col2.hashCode()) {
+            errln("Every TestCollator has the same hashcode");
+        }
+        String abc = "abc";
+        String bcd = "bcd";
+        if (col1.compare(abc, bcd) != abc.compareTo(bcd)) {
+            errln("TestCollator compare should be the same as the default " +
+                  "string comparison");
+        }
+        CollationKey key = col1.getCollationKey(abc);
+        byte temp1[] = abc.getBytes();
+        byte temp2[] = new byte[temp1.length + 1];
+        System.arraycopy(temp1, 0, temp2, 0, temp1.length);
+        temp2[temp1.length] = 0;
+        if (!java.util.Arrays.equals(key.toByteArray(), temp2) 
+            || !key.getSourceString().equals(abc)) {
+            errln("TestCollator collationkey API is returning wrong values");
+        }
+        UnicodeSet set = col1.getTailoredSet();
+        if (!set.equals(new UnicodeSet(0, 0x10FFFF))) {
+            errln("Error getting default tailored set");
+        }
+    }
+    
+     /** 
+     * Simple test the collator setter and getters
+     */
+    public void TestSetGet() 
+    {
+        RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance();
+        int decomp = collator.getDecomposition();
+        int strength = collator.getStrength();
+        boolean alt = collator.isAlternateHandlingShifted();
+        boolean caselevel = collator.isCaseLevel();
+        boolean french = collator.isFrenchCollation();
+        boolean hquart = collator.isHiraganaQuaternary();
+        boolean lowercase = collator.isLowerCaseFirst();
+        boolean uppercase = collator.isUpperCaseFirst();
+        
+        collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        if (collator.getDecomposition() != Collator.CANONICAL_DECOMPOSITION) {
+            errln("Setting decomposition failed");
+        }
+        collator.setStrength(Collator.QUATERNARY);
+        if (collator.getStrength() != Collator.QUATERNARY) {
+            errln("Setting strength failed");
+        }
+        collator.setAlternateHandlingShifted(!alt);
+        if (collator.isAlternateHandlingShifted() == alt) {
+            errln("Setting alternate handling failed");
+        }
+        collator.setCaseLevel(!caselevel);
+        if (collator.isCaseLevel() == caselevel) {
+            errln("Setting case level failed");
+        }
+        collator.setFrenchCollation(!french);
+        if (collator.isFrenchCollation() == french) {
+            errln("Setting french collation failed");
+        }
+        collator.setHiraganaQuaternary(!hquart);
+        if (collator.isHiraganaQuaternary() == hquart) {
+            errln("Setting hiragana quartenary failed");
+        }
+        collator.setLowerCaseFirst(!lowercase);
+        if (collator.isLowerCaseFirst() == lowercase) {
+            errln("Setting lower case first failed");
+        }
+        collator.setUpperCaseFirst(!uppercase);
+        if (collator.isUpperCaseFirst() == uppercase) {
+            errln("Setting upper case first failed");
+        }   
+        collator.setDecompositionDefault();
+        if (collator.getDecomposition() != decomp) {
+            errln("Setting decomposition default failed");
+        }
+        collator.setStrengthDefault();
+        if (collator.getStrength() != strength) {
+            errln("Setting strength default failed");
+        }
+        collator.setAlternateHandlingDefault();
+        if (collator.isAlternateHandlingShifted() != alt) {
+            errln("Setting alternate handling default failed");
+        }
+        collator.setCaseLevelDefault();
+        if (collator.isCaseLevel() != caselevel) {
+            errln("Setting case level default failed");
+        }
+        collator.setFrenchCollationDefault();
+        if (collator.isFrenchCollation() != french) {
+            errln("Setting french handling default failed");
+        }
+        collator.setHiraganaQuaternaryDefault();
+        if (collator.isHiraganaQuaternary() != hquart) {
+            errln("Setting Hiragana Quartenary default failed");
+        }
+        collator.setCaseFirstDefault();
+        if (collator.isLowerCaseFirst() != lowercase 
+            || collator.isUpperCaseFirst() != uppercase) {
+            errln("Setting case first handling default failed");
+        }
+    }
+    
+    public void TestBounds() 
+    {
+        Collator coll = Collator.getInstance(new Locale("sh", ""));
+          
+        String test[] = { "John Smith", "JOHN SMITH", 
+                          "john SMITH", "j\u00F6hn sm\u00EFth",
+                          "J\u00F6hn Sm\u00EFth", "J\u00D6HN SM\u00CFTH",
+                          "john smithsonian", "John Smithsonian",
+        };
+      
+        String testStr[] = {
+                          "\u010CAKI MIHALJ", 
+                          "\u010CAKI MIHALJ",
+                          "\u010CAKI PIRO\u0160KA", 
+                          "\u010CABAI ANDRIJA",
+                          "\u010CABAI LAJO\u0160", 
+                          "\u010CABAI MARIJA",
+                          "\u010CABAI STEVAN", 
+                          "\u010CABAI STEVAN",
+                          "\u010CABARKAPA BRANKO", 
+                          "\u010CABARKAPA MILENKO",
+                          "\u010CABARKAPA MIROSLAV", 
+                          "\u010CABARKAPA SIMO",
+                          "\u010CABARKAPA STANKO", 
+                          "\u010CABARKAPA TAMARA",
+                          "\u010CABARKAPA TOMA\u0160", 
+                          "\u010CABDARI\u0106 NIKOLA",
+                          "\u010CABDARI\u0106 ZORICA",
+                          "\u010CABI NANDOR",
+                          "\u010CABOVI\u0106 MILAN",
+                          "\u010CABRADI AGNEZIJA",
+                          "\u010CABRADI IVAN",
+                          "\u010CABRADI JELENA",
+                          "\u010CABRADI LJUBICA",
+                          "\u010CABRADI STEVAN",
+                          "\u010CABRDA MARTIN",
+                          "\u010CABRILO BOGDAN",
+                          "\u010CABRILO BRANISLAV",
+                          "\u010CABRILO LAZAR",
+                          "\u010CABRILO LJUBICA",
+                          "\u010CABRILO SPASOJA",
+                          "\u010CADE\u0160 ZDENKA",
+                          "\u010CADESKI BLAGOJE",
+                          "\u010CADOVSKI VLADIMIR",
+                          "\u010CAGLJEVI\u0106 TOMA",
+                          "\u010CAGOROVI\u0106 VLADIMIR",
+                          "\u010CAJA VANKA",
+                          "\u010CAJI\u0106 BOGOLJUB",
+                          "\u010CAJI\u0106 BORISLAV",
+                          "\u010CAJI\u0106 RADOSLAV",
+                          "\u010CAK\u0160IRAN MILADIN",
+                          "\u010CAKAN EUGEN",
+                          "\u010CAKAN EVGENIJE",
+                          "\u010CAKAN IVAN",
+                          "\u010CAKAN JULIJAN",
+                          "\u010CAKAN MIHAJLO",
+                          "\u010CAKAN STEVAN",
+                          "\u010CAKAN VLADIMIR",
+                          "\u010CAKAN VLADIMIR",
+                          "\u010CAKAN VLADIMIR",
+                          "\u010CAKARA ANA",
+                          "\u010CAKAREVI\u0106 MOMIR",
+                          "\u010CAKAREVI\u0106 NEDELJKO",
+                          "\u010CAKI \u0160ANDOR",
+                          "\u010CAKI AMALIJA",
+                          "\u010CAKI ANDRA\u0160",
+                          "\u010CAKI LADISLAV",
+                          "\u010CAKI LAJO\u0160",
+                          "\u010CAKI LASLO" }; 
+        
+        CollationKey testKey[] = new CollationKey[testStr.length];
+        for (int i = 0; i < testStr.length; i ++) {
+            testKey[i] = coll.getCollationKey(testStr[i]);
+        }
+        
+        Arrays.sort(testKey);
+        for(int i = 0; i < testKey.length - 1; i ++) {
+            CollationKey lower 
+                           = testKey[i].getBound(CollationKey.BoundMode.LOWER,
+                                                 Collator.SECONDARY);
+            for (int j = i + 1; j < testKey.length; j ++) {
+                CollationKey upper 
+                           = testKey[j].getBound(CollationKey.BoundMode.UPPER,
+                                                 Collator.SECONDARY);
+                for (int k = i; k <= j; k ++) {
+                    if (lower.compareTo(testKey[k]) > 0) {
+                        errln("Problem with lower bound at i = " + i + " j = "
+                              + j + " k = " + k);
+                    }
+                    if (upper.compareTo(testKey[k]) <= 0) {
+                        errln("Problem with upper bound at i = " + i + " j = "
+                              + j + " k = " + k);
+                    }
+                }
+            }
+        }
+        
+        for (int i = 0; i < test.length; i ++) 
+        {
+            CollationKey key = coll.getCollationKey(test[i]);
+            CollationKey lower = key.getBound(CollationKey.BoundMode.LOWER,
+                                              Collator.SECONDARY);
+            CollationKey upper = key.getBound(CollationKey.BoundMode.UPPER_LONG,
+                                              Collator.SECONDARY);
+            for (int j = i + 1; j < test.length; j ++) {
+                key = coll.getCollationKey(test[j]);
+                if (lower.compareTo(key) > 0) {
+                    errln("Problem with lower bound i = " + i + " j = " + j);
+                }
+                if (upper.compareTo(key) <= 0) {
+                    errln("Problem with upper bound i = " + i + " j = " + j);
+                }
+            }
+        }
+    }
+    
+    public final void TestGetAll() {
+        Locale[] list = Collator.getAvailableLocales();
+        int errorCount = 0;
+        for (int i = 0; i < list.length; ++i) {
+            log("Locale name: ");
+            log(list[i].toString());
+            log(" , the display name is : ");
+            logln(list[i].getDisplayName());
+            try{
+                logln("     ...... Or display as: " + Collator.getDisplayName(list[i]));
+                logln("     ...... and display in Chinese: " + 
+                      Collator.getDisplayName(list[i],Locale.CHINA)); 
+            }catch(MissingResourceException ex){
+                errorCount++;
+                logln("could not get displayName for " + list[i]);
+            }           
+        }
+        if(errorCount>0){
+          warnln("Could not load the locale data.");
+        }
+    }    
+
+    private void
+    doSetsTest(UnicodeSet ref, UnicodeSet set, String inSet, String outSet) {
+        
+        set.clear();
+        set.applyPattern(inSet);
+        
+        if(!ref.containsAll(set)) {
+            err("Some stuff from "+inSet+" is not present in the set\n");            
+        }
+        
+        set.clear();
+        set.applyPattern(outSet);
+        if(!ref.containsNone(set)) {
+            err("Some stuff from "+outSet+" is present in the set\n");
+        }
+    }
+    
+    public void TestGetContractions()throws Exception {
+        /*        static struct {
+         const char* locale;
+         const char* inConts;
+         const char* outConts;
+         const char* inExp;
+         const char* outExp;
+         const char* unsafeCodeUnits;
+         const char* safeCodeUnits;
+         }
+         */
+        String tests[][] = {
+                { "ru", 
+                    "[{\u0474\u030F}{\u0475\u030F}{\u04D8\u0308}{\u04D9\u0308}{\u04E8\u0308}{\u04E9\u0308}]", 
+                    "[{\u0430\u0306}{\u0410\u0306}{\u0430\u0308}{\u0410\u0306}{\u0433\u0301}{\u0413\u0301}]",
+                    "[\u00e6]",
+                    "[a]",
+                    "[\u0474\u0475\u04d8\u04d9\u04e8\u04e9]",
+                    "[aAbB\u0430\u0410\u0433\u0413]"
+                },
+                { "uk",
+                    "[{\u0474\u030F}{\u0475\u030F}{\u04D8\u0308}{\u04D9\u0308}{\u04E8\u0308}{\u04E9\u0308}"+ 
+                    "{\u0430\u0306}{\u0410\u0306}{\u0430\u0308}{\u0410\u0306}{\u0433\u0301}{\u0413\u0301}]",
+                    "[]",
+                    "[\u00e6]",
+                    "[a]",
+                    "[\u0474\u0475\u04D8\u04D9\u04E8\u04E9\u0430\u0410\u0433\u0413]",
+                    "[aAbBxv]",
+                },
+                { "sh",
+                    "[{C\u0301}{C\u030C}{C\u0341}{DZ\u030C}{Dz\u030C}{D\u017D}{D\u017E}{lj}{nj}]",
+                    "[{\u309d\u3099}{\u30fd\u3099}]",
+                    "[\u00e6]",
+                    "[a]",
+                    "[nlcdzNLCDZ]",
+                    "[jabv]"
+                },
+                { "ja",
+                    "[{\u3053\u3099\u309D}{\u3053\u3099\u309D\u3099}{\u3053\u3099\u309E}{\u3053\u3099\u30FC}{\u3053\u309D}{\u3053\u309D\u3099}{\u3053\u309E}{\u3053\u30FC}{\u30B3\u3099\u30FC}{\u30B3\u3099\u30FD}{\u30B3\u3099\u30FD\u3099}{\u30B3\u3099\u30FE}{\u30B3\u30FC}{\u30B3\u30FD}{\u30B3\u30FD\u3099}{\u30B3\u30FE}]",
+                    "[{\u30FD\u3099}{\u309D\u3099}{\u3053\u3099}{\u30B3\u3099}{lj}{nj}]",
+                    "[\u30FE\u00e6]",
+                    "[a]",
+                    "[\u3099]",
+                    "[]"
+                }
+        };
+        
+        
+        
+        
+        RuleBasedCollator coll = null;
+        int i = 0;
+        UnicodeSet conts = new UnicodeSet();
+        UnicodeSet exp = new UnicodeSet();
+        UnicodeSet set = new UnicodeSet();
+        
+        for(i = 0; i < tests.length; i++) {
+            logln("Testing locale: "+ tests[i][0]);
+            coll = (RuleBasedCollator)Collator.getInstance(new ULocale(tests[i][0]));
+            coll.getContractionsAndExpansions(conts, exp, true);
+            logln("Contractions "+conts.size()+":\n"+conts.toPattern(true));
+            doSetsTest(conts, set, tests[i][1], tests[i][2]);
+            logln("Expansions "+exp.size()+":\n"+exp.toPattern(true));
+            doSetsTest(exp, set, tests[i][3], tests[i][4]);
+            
+            // No unsafe set in ICU4J
+            //noConts = ucol_getUnsafeSet(coll, conts, &status);
+            //doSetsTest(conts, set, tests[i][5], tests[i][6]);
+            //log_verbose("Unsafes "+conts.size()+":\n"+conts.toPattern(true)+"\n");
+        }
+    }
+    private static final String bigone = "One";
+    private static final String littleone = "one";
+    
+    public void TestClone() {
+        logln("\ninit c0");
+        RuleBasedCollator c0 = (RuleBasedCollator)Collator.getInstance();
+        c0.setStrength(Collator.TERTIARY);
+        dump("c0", c0);
+
+        logln("\ninit c1");
+        RuleBasedCollator c1 = (RuleBasedCollator)Collator.getInstance();
+        c1.setStrength(Collator.TERTIARY);
+        c1.setUpperCaseFirst(!c1.isUpperCaseFirst());
+        dump("c0", c0);
+        dump("c1", c1);
+        try{
+            logln("\ninit c2");
+            RuleBasedCollator c2 = (RuleBasedCollator)c1.clone();
+            c2.setUpperCaseFirst(!c2.isUpperCaseFirst());
+            dump("c0", c0);
+            dump("c1", c1);
+            dump("c2", c2);
+            if(c1.equals(c2)){
+                errln("The cloned objects refer to same data");
+            }
+        }catch(CloneNotSupportedException ex){
+            errln("Could not clone the collator");
+        }
+    }
+
+    private void dump(String msg, RuleBasedCollator c) {
+        logln(msg + " " + c.compare(bigone, littleone) +
+                           " s: " + c.getStrength() +
+                           " u: " + c.isUpperCaseFirst());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java b/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java
new file mode 100644
index 0000000..bf7bd16
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java
@@ -0,0 +1,45 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationTurkishTest
+ * Source File: $ICU4CRoot/source/test/intltest/trcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationChineseTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationChineseTest().run(args);
+    }
+    
+    public CollationChineseTest() 
+    {
+    }
+    
+    public void TestPinYin() 
+    {
+        String seq[] 
+            = {"\u963f", "\u554a", "\u54ce", "\u6371", "\u7231", "\u9f98",
+               "\u4e5c", "\u8baa", "\u4e42", "\u53c8"};
+        RuleBasedCollator collator = null;
+        try {
+            collator = (RuleBasedCollator)Collator.getInstance(
+                                            new Locale("zh", "", "PINYIN"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator of zh__PINYIN locale");
+            return;
+        }
+        for (int i = 0; i < seq.length - 1; i ++) {
+            CollationTest.doTest(this, collator, seq[i], seq[i + 1], -1);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java b/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
new file mode 100644
index 0000000..07faa03
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Locale;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+
+/**
+ * 
+ * CollationCreationMethodTest checks to ensure that the collators act the same whether they are created by choosing a 
+ * locale and loading the data from file, or by using rules.
+ * 
+ * @author Brian Rower - IBM - August 2008
+ *
+ */
+public class CollationCreationMethodTest extends TestFmwk 
+{
+    
+	public static void main(String[] args) throws Exception 
+    {
+        new CollationCreationMethodTest().run(args);
+    }
+    
+    public void TestRuleVsLocaleCreationMonkey()
+    {
+    	//create a RBC from a collator reader by reading in a locale collation file
+    	//also create one simply from a rules string (which should be 
+    	//pulled from the locale collation file)
+    	//and then do crazy monkey testing on it to make sure they are the same.
+    	int x,y,z;
+    	Random r = createRandom();
+    	String randString1;
+    	CollationKey key1;
+    	CollationKey key2;
+
+    	
+    	Locale[] locales = Collator.getAvailableLocales();
+    	 
+    	RuleBasedCollator localeCollator;
+    	RuleBasedCollator ruleCollator;
+            	
+        for(z = 0; z < 60; z++)
+        {
+        	x = r.nextInt(locales.length);
+        	
+        	try
+            {
+        		//this is making the assumption that the only type of collator that will be made is RBC
+        		localeCollator = (RuleBasedCollator)Collator.getInstance(locales[x]);
+        		ruleCollator = new RuleBasedCollator(localeCollator.getRules());
+        		logln("Rules are: " + localeCollator.getRules());
+            } 
+        	catch (Exception e) 
+        	{
+                warnln("ERROR: in creation of collator of " + locales[x].getDisplayName() + " locale");
+                return;
+            }
+        	
+        	//do it several times for each collator
+        	int n = 3;
+        	for(y = 0; y < n; y++)
+        	{
+
+            	randString1 = generateNewString(r);
+                                
+                key1 = localeCollator.getCollationKey(randString1);
+                key2 = ruleCollator.getCollationKey(randString1);
+           	
+            	report(locales[x].getDisplayName(), randString1, key1, key2);	
+        	}
+        }
+    }
+    
+    private String generateNewString(Random r)
+    {
+    	int maxCodePoints = 40;
+    	byte[] c = new byte[r.nextInt(maxCodePoints)*2]; //two bytes for each code point
+    	int x;
+    	int z;
+    	String s = "";
+    	
+    	for(x = 0; x < c.length/2; x = x + 2) //once around for each UTF-16 character
+    	{
+    		z = r.nextInt(0x7fff); //the code point...
+    		
+    		c[x + 1] = (byte)z;
+    		c[x] = (byte)(z >>> 4);
+    	}
+    	try
+    	{
+    		s = new String(c, "UTF-16BE");
+    	}
+    	catch(Exception e)
+    	{
+    		warnln("Error creating random strings");
+    	}
+    	return s;
+    	
+    	
+    }
+    
+    
+    private void report(String localeName, String string1, CollationKey k1, CollationKey k2) 
+    {
+        if (!k1.equals(k2)) 
+        {
+            String msg = "";
+            msg += "With " + localeName + "Collator: ";
+            msg += string1; 
+            msg += " failed to produce identical keys on both collators";
+            errln(msg);
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java b/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
new file mode 100644
index 0000000..e66a01a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
@@ -0,0 +1,187 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationCurrencyTest
+ * Source File: $ICU4CRoot/source/test/intltest/currcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationCurrencyTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationCurrencyTest().run(args);
+    }
+    
+    public void TestCurrency() {
+        // All the currency symbols, in collation order
+        char[][] currency = {
+            { 0x00A4 }, /*00A4; L; [14 36, 03, 03]    # [082B.0020.0002] # CURRENCY SIGN*/
+            { 0x00A2 }, /*00A2; L; [14 38, 03, 03]    # [082C.0020.0002] # CENT SIGN*/
+            { 0xFFE0 }, /*FFE0; L; [14 38, 03, 05]    # [082C.0020.0003] # FULLWIDTH CENT SIGN*/
+            { 0x0024 }, /*0024; L; [14 3A, 03, 03]    # [082D.0020.0002] # DOLLAR SIGN*/
+            { 0xFF04 }, /*FF04; L; [14 3A, 03, 05]    # [082D.0020.0003] # FULLWIDTH DOLLAR SIGN*/
+            { 0xFE69 }, /*FE69; L; [14 3A, 03, 1D]    # [082D.0020.000F] # SMALL DOLLAR SIGN*/
+            { 0x00A3 }, /*00A3; L; [14 3C, 03, 03]    # [082E.0020.0002] # POUND SIGN*/
+            { 0xFFE1 }, /*FFE1; L; [14 3C, 03, 05]    # [082E.0020.0003] # FULLWIDTH POUND SIGN*/
+            { 0x00A5 }, /*00A5; L; [14 3E, 03, 03]    # [082F.0020.0002] # YEN SIGN*/
+            { 0xFFE5 }, /*FFE5; L; [14 3E, 03, 05]    # [082F.0020.0003] # FULLWIDTH YEN SIGN*/
+            { 0x09F2 }, /*09F2; L; [14 40, 03, 03]    # [0830.0020.0002] # BENGALI RUPEE MARK*/
+            { 0x09F3 }, /*09F3; L; [14 42, 03, 03]    # [0831.0020.0002] # BENGALI RUPEE SIGN*/
+            { 0x0E3F }, /*0E3F; L; [14 44, 03, 03]    # [0832.0020.0002] # THAI CURRENCY SYMBOL BAHT*/
+            { 0x17DB }, /*17DB; L; [14 46, 03, 03]    # [0833.0020.0002] # KHMER CURRENCY SYMBOL RIEL*/
+            { 0x20A0 }, /*20A0; L; [14 48, 03, 03]    # [0834.0020.0002] # EURO-CURRENCY SIGN*/
+            { 0x20A1 }, /*20A1; L; [14 4A, 03, 03]    # [0835.0020.0002] # COLON SIGN*/
+            { 0x20A2 }, /*20A2; L; [14 4C, 03, 03]    # [0836.0020.0002] # CRUZEIRO SIGN*/
+            { 0x20A3 }, /*20A3; L; [14 4E, 03, 03]    # [0837.0020.0002] # FRENCH FRANC SIGN*/
+            { 0x20A4 }, /*20A4; L; [14 50, 03, 03]    # [0838.0020.0002] # LIRA SIGN*/
+            { 0x20A5 }, /*20A5; L; [14 52, 03, 03]    # [0839.0020.0002] # MILL SIGN*/
+            { 0x20A6 }, /*20A6; L; [14 54, 03, 03]    # [083A.0020.0002] # NAIRA SIGN*/
+            { 0x20A7 }, /*20A7; L; [14 56, 03, 03]    # [083B.0020.0002] # PESETA SIGN*/
+            { 0x20A9 }, /*20A9; L; [14 58, 03, 03]    # [083C.0020.0002] # WON SIGN*/
+            { 0xFFE6 }, /*FFE6; L; [14 58, 03, 05]    # [083C.0020.0003] # FULLWIDTH WON SIGN*/
+            { 0x20AA }, /*20AA; L; [14 5A, 03, 03]    # [083D.0020.0002] # NEW SHEQEL SIGN*/
+            { 0x20AB }, /*20AB; L; [14 5C, 03, 03]    # [083E.0020.0002] # DONG SIGN*/
+            { 0x20AC }, /*20AC; L; [14 5E, 03, 03]    # [083F.0020.0002] # EURO SIGN*/
+            { 0x20AD }, /*20AD; L; [14 60, 03, 03]    # [0840.0020.0002] # KIP SIGN*/
+            { 0x20AE }, /*20AE; L; [14 62, 03, 03]    # [0841.0020.0002] # TUGRIK SIGN*/
+            { 0x20AF } /*20AF; L; [14 64, 03, 03]    # [0842.0020.0002] # DRACHMA SIGN*/
+        };
+    
+        int i, j;
+        int expectedResult = 0;
+        RuleBasedCollator c = (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH);
+        
+        // Compare each currency symbol against all the
+        // currency symbols, including itself
+        String source;
+        String target;
+        
+        for (i = 0; i < currency.length; i += 1) {
+            for (j = 0; j < currency.length; j += 1) {
+                source = new String(currency[i]);
+                target = new String(currency[j]);
+
+                if (i < j) {
+                    expectedResult = -1;
+                } else if ( i == j) {
+                    expectedResult = 0;
+                } else {
+                    expectedResult = 1;
+                }
+
+                int compareResult = c.compare(source, target);
+                CollationKey sourceKey = null;
+            
+                sourceKey = c.getCollationKey(source);
+
+                if (sourceKey == null) {
+                    errln("Couldn't get collationKey for source");
+                    continue;
+                }
+            
+                CollationKey targetKey = null;
+                targetKey = c.getCollationKey(target);
+                if (targetKey == null) {
+                    errln("Couldn't get collationKey for source");
+                    continue;
+                }
+
+                int keyResult = sourceKey.compareTo(targetKey);
+
+                reportCResult( source, target, sourceKey, targetKey, compareResult, keyResult, compareResult, expectedResult );
+            }
+        }
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java b/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
new file mode 100644
index 0000000..13e67cd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
@@ -0,0 +1,513 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationDummyTest
+ * Source File: $ICU4CRoot/source/test/intltest/allcoll.cpp
+ *              $ICU4CRoot/source/test/cintltst/callcoll.c
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+ 
+public class CollationDummyTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationDummyTest().run(args);
+        // new CollationDummyTest().TestVariableTop();
+    }
+    
+    //testSourceCases[][] and testTargetCases[][], testCases[][] are ported from the file callcoll.c in icu4c
+    private static char[][] testSourceCases = {
+        {0x61, 0x62, 0x27, 0x63},
+        {0x63, 0x6f, 0x2d, 0x6f, 0x70},
+        {0x61, 0x62},
+        {0x61, 0x6d, 0x70, 0x65, 0x72, 0x73, 0x61, 0x64},
+        {0x61, 0x6c, 0x6c},
+        {0x66, 0x6f, 0x75, 0x72},
+        {0x66, 0x69, 0x76, 0x65},
+        {0x31},
+        {0x31},
+        {0x31},                                            //  10 
+        {0x32},
+        {0x32},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+        {0x61, 0x3c, 0x62},
+        {0x61, 0x3c, 0x62},
+        {0x61, 0x63, 0x63},
+        {0x61, 0x63, 0x48, 0x63},  //  simple test 
+        {0x70, 0x00EA, 0x63, 0x68, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},                                  //  20 
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x00E6, 0x63},
+        {0x61, 0x63, 0x48, 0x63},  //  primary test 
+        {0x62, 0x6c, 0x61, 0x63, 0x6b},
+        {0x66, 0x6f, 0x75, 0x72},
+        {0x66, 0x69, 0x76, 0x65},
+        {0x31},
+        {0x61, 0x62, 0x63},                                        //  30 
+        {0x61, 0x62, 0x63},                                  
+        {0x61, 0x62, 0x63, 0x48},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x63, 0x48, 0x63},                              //  34 
+        {0x61, 0x63, 0x65, 0x30},
+        {0x31, 0x30},
+        {0x70, 0x00EA,0x30}                                    // 37     
+    };
+
+    private static char[][] testTargetCases = {
+        {0x61, 0x62, 0x63, 0x27},
+        {0x43, 0x4f, 0x4f, 0x50},
+        {0x61, 0x62, 0x63},
+        {0x26},
+        {0x26},
+        {0x34},
+        {0x35},
+        {0x6f, 0x6e, 0x65},
+        {0x6e, 0x6e, 0x65},
+        {0x70, 0x6e, 0x65},                                  //  10 
+        {0x74, 0x77, 0x6f},
+        {0x75, 0x77, 0x6f},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+        {0x61, 0x3c, 0x3d, 0x62},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},  //  simple test 
+        {0x70, 0x00E9, 0x63, 0x68, 0x00E9},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x42, 0x43},                                  //  20 
+        {0x61, 0x62, 0x63, 0x68},
+        {0x61, 0x62, 0x64},
+        {0x00E4, 0x62, 0x63},
+        {0x61, 0x00C6, 0x63},
+        {0x61, 0x43, 0x48, 0x63},  //  primary test 
+        {0x62, 0x6c, 0x61, 0x63, 0x6b, 0x2d, 0x62, 0x69, 0x72, 0x64},
+        {0x34},
+        {0x35},
+        {0x6f, 0x6e, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x61, 0x42, 0x63},                                  //  30 
+        {0x61, 0x62, 0x63, 0x68},
+        {0x61, 0x62, 0x64},
+        {0x61, 0x43, 0x48, 0x63},                                //  34 
+        {0x61, 0x63, 0x65, 0x30},
+        {0x31, 0x30},
+        {0x70, 0x00EB,0x30}                                    // 37 
+    };
+    
+    private static char[][] testCases = {
+        {0x61},
+        {0x41},
+        {0x00e4},
+        {0x00c4},
+        {0x61, 0x65},
+        {0x61, 0x45},
+        {0x41, 0x65},
+        {0x41, 0x45},
+        {0x00e6},
+        {0x00c6},
+        {0x62},
+        {0x63},
+        {0x7a}
+    };
+    
+    int[] results = {
+        -1,
+        -1, //Collator::GREATER,
+        -1,
+        -1,
+        -1,
+        -1,
+        -1,
+        1,
+        1,
+        -1,                                     //  10 
+        1,
+        -1,
+        1,
+        1,
+        -1,
+        -1,
+        -1,
+    //  test primary > 17 
+        0,
+        0,
+        0,                                    //  20 
+        -1,
+        -1,
+        0,
+        0,
+        0,
+        -1,
+    //  test secondary > 26 
+        0,
+        0,
+        0,
+        0,
+        0,                                    //  30 
+        0,
+        -1,
+        0,                                     //  34 
+        0,
+        0,
+        -1 
+    };
+    
+    final int MAX_TOKEN_LEN = 16;
+    
+    public RuleBasedCollator myCollation;
+    
+    public CollationDummyTest() {
+    }
+    protected void init() throws Exception{
+        String ruleset = "& C < ch, cH, Ch, CH & Five, 5 & Four, 4 & one, 1 & Ampersand; '&' & Two, 2 ";
+        // String ruleset = "& Four, 4";
+        myCollation = null;
+        myCollation = new RuleBasedCollator(ruleset);
+    }
+    
+    // perform test with strength tertiary
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 17 ; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    // perform test with strength PRIMARY
+    public void TestPrimary() {
+       // problem in strcollinc for unfinshed contractions 
+       myCollation.setStrength(Collator.PRIMARY);
+        for (int i = 17; i < 26 ; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    //perform test with strength SECONDARY
+    public void TestSecondary() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 26; i < 34; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    // perform extra tests
+    public void TestExtra() {
+        int i, j;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < testCases.length - 1; i++) {
+            for (j = i + 1; j < testCases.length; j += 1) {
+                doTest(myCollation, testCases[i], testCases[j], -1);
+            }
+        }
+    }
+
+    public void TestIdentical() {
+        int i;
+        myCollation.setStrength(Collator.IDENTICAL);
+        for (i= 34; i<37; i++) {
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    public void TestJB581() {
+        String source = "THISISATEST.";
+        String target = "Thisisatest.";
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for : en_US\n");
+            return;
+        }
+
+        int result = coll.compare(source, target);
+        // result is 1, secondary differences only for ignorable space characters
+        if (result != 1) {
+            errln("Comparing two strings with only secondary differences in C failed.\n");
+            return;
+        }
+        
+        // To compare them with just primary differences 
+        coll.setStrength(Collator.PRIMARY);
+        result = coll.compare(source, target);
+        // result is 0 
+        if (result != 0) {
+            errln("Comparing two strings with no differences in C failed.\n");
+            return;
+        } 
+          
+        // Now, do the same comparison with keys 
+        CollationKey sourceKeyOut, targetKeyOut;
+        sourceKeyOut = coll.getCollationKey(source);
+        targetKeyOut = coll.getCollationKey(target);
+        result = sourceKeyOut.compareTo(targetKeyOut);
+        if (result != 0) {
+            errln("Comparing two strings with sort keys in C failed.\n");
+            return;
+        }
+    }
+    
+    //TestSurrogates() is ported from cintltst/callcoll.c
+    
+    /**
+    * Tests surrogate support.
+    */
+    public void TestSurrogates() 
+    {
+        String rules = "&z<'\ud800\udc00'<'\ud800\udc0a\u0308'<A";
+        String source[] = {"z",
+                           "\uD800\uDC00",
+                           "\ud800\udc0a\u0308",
+                           "\ud800\udc02"    
+        };
+        
+        String target[] = {"\uD800\uDC00",
+                           "\ud800\udc0a\u0308",
+                           "A",
+                           "\ud800\udc03"    
+        };
+    
+        // this test is to verify the supplementary sort key order in the english 
+        // collator
+        Collator enCollation;
+        try {
+            enCollation = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;       
+        }
+        
+        myCollation.setStrength(Collator.TERTIARY);
+        int count = 0;
+        // logln("start of english collation supplementary characters test\n");
+        while (count < 2) {
+            doTest(enCollation, source[count], target[count], -1);
+            count ++;
+        }
+        doTest(enCollation, source[count], target[count], 1);
+            
+        // logln("start of tailored collation supplementary characters test\n");
+        count = 0;
+        Collator newCollation;
+        try {
+            newCollation = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for rules");
+            return;       
+        }
+        
+        // tests getting collation elements for surrogates for tailored rules 
+        while (count < 4) {
+            doTest(newCollation, source[count], target[count], -1);
+            count ++;
+        }
+    
+        // tests that \uD801\uDC01 still has the same value, not changed 
+        CollationKey enKey = enCollation.getCollationKey(source[3]);
+        CollationKey newKey = newCollation.getCollationKey(source[3]);
+        int keyResult = enKey.compareTo(newKey);
+        if(keyResult != 0) {
+            errln("Failed : non-tailored supplementary characters should have the same value\n");
+        }
+    }
+    
+    //TestVariableTop() is ported from cintltst/callcoll.c
+    /**
+    * Tests the [variable top] tag in rule syntax. Since the default [alternate]
+    * tag has the value shifted, any codepoints before [variable top] should give
+    * a primary ce of 0.
+    */
+    public void TestVariableTop() {
+        String rule = "&z = [variable top]";
+        Collator  myColl;
+        Collator  enColl;
+        char[] source = new char[1];
+        char ch;
+        int expected[] = {0};
+    
+        try {
+            enColl = Collator.getInstance(Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;
+        }
+        
+        try{
+            myColl = new RuleBasedCollator(rule);
+        } catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + rule);
+            return;
+        }  
+        enColl.setStrength(Collator.PRIMARY);
+        myColl.setStrength(Collator.PRIMARY);
+        
+        ((RuleBasedCollator)enColl).setAlternateHandlingShifted(true);
+        ((RuleBasedCollator)myColl).setAlternateHandlingShifted(true);
+        
+        if(((RuleBasedCollator)enColl).isAlternateHandlingShifted() != true) {
+            errln("ERROR: ALTERNATE_HANDLING value can not be set to SHIFTED\n");
+        }
+        
+        // space is supposed to be a variable 
+        CollationKey key = enColl.getCollationKey(" ");   
+        byte[] result = key.toByteArray(); 
+        
+        for(int i = 0; i < result.length; i++) {
+            if(result[i]!= expected[i]) {
+                errln("ERROR: SHIFTED alternate does not return 0 for primary of space\n");  
+                break;  
+            }
+        }
+        
+        ch = 'a';
+        while (ch < 'z') {
+            source[0] = ch;
+            key = myColl.getCollationKey(new String(source));
+            result = key.toByteArray();
+            
+            for(int i = 0; i < result.length; i++) {
+                if(result[i]!= expected[i]) {
+                    errln("ERROR: SHIFTED alternate does not return 0 for primary of space\n");  
+                    break;  
+                }
+            }
+            ch ++;
+        }
+    }
+    
+    public void TestJB1401() {
+        Collator     myCollator = null;
+        char[] NFD_UnsafeStartChars = {
+            0x0f73,          // Tibetan Vowel Sign II 
+            0x0f75,          // Tibetan Vowel Sign UU 
+            0x0f81,          // Tibetan Vowel Sign Reversed II 
+            0
+        };
+        int i;
+    
+        try{
+            myCollator = Collator.getInstance(Locale.ENGLISH);
+        } catch(Exception e) {
+            errln("ERROR: Failed to create the collator for ENGLISH");
+            return;
+        }
+        myCollator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i=0; ; i++) {
+            // Get the next funny character to be tested, and set up the
+            // three test strings X, Y, Z, consisting of an A-grave + test char,
+            // in original form, NFD, and then NFC form.
+            char c = NFD_UnsafeStartChars[i];
+            if (c==0) {break;}
+            
+            String x = "\u00C0" + c;       // \u00C0 is A Grave
+            String y;
+            String z;
+    
+            try{
+                y = Normalizer.decompose(x, false);
+                z = Normalizer.decompose(y, true);
+            } catch (Exception e) {
+                errln("ERROR: Failed to normalize test of character" + c);
+                return;
+            }
+       
+            // Collation test.  All three strings should be equal.
+            // doTest does both strcoll and sort keys, with params in both orders.
+            doTest(myCollator, x, y, 0);
+            doTest(myCollator, x, z, 0);
+            doTest(myCollator, y, z, 0); 
+    
+            // Run collation element iterators over the three strings.  Results should be same for each.
+             
+            {
+                CollationElementIterator ceiX, ceiY, ceiZ;
+                int ceX, ceY, ceZ;
+                int j;
+                try {
+                    ceiX = ((RuleBasedCollator)myCollator).getCollationElementIterator(x);
+                    ceiY = ((RuleBasedCollator)myCollator).getCollationElementIterator(y);
+                    ceiZ = ((RuleBasedCollator)myCollator).getCollationElementIterator(z);
+                } catch(Exception e) {
+                    errln("ERROR: getCollationElementIterator failed");
+                    return;
+                }
+    
+                for (j=0;; j++) {
+                    try{
+                        ceX = ceiX.next();
+                        ceY = ceiY.next();
+                        ceZ = ceiZ.next();
+                    } catch (Exception e) {
+                        errln("ERROR: CollationElementIterator.next failed for iteration " + j);
+                        break;
+                    }
+                  
+                    if (ceX != ceY || ceY != ceZ) {
+                        errln("ERROR: ucol_next failed for iteration " + j);
+                        break;
+                    }
+                    if (ceX == CollationElementIterator.NULLORDER) {
+                        break;
+                    }
+                }
+            }
+        }
+    }
+    
+    // main test method called with different strengths,
+    // tests comparison of custum collation with different strengths
+    
+    private void doTest(Collator collation, char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        doTestVariant(collation, s, t, result);
+        if(result == -1) {
+            doTestVariant(collation, t, s, 1);
+        } else if(result == 1) {
+            doTestVariant(collation, t, s, -1);
+        } else {
+            doTestVariant(collation, t, s, 0);
+        }
+    }
+    
+    // main test method called with different strengths,
+    // tests comparison of custum collation with different strengths
+    
+    private void doTest(Collator collation,String s, String t, int result) {
+        doTestVariant(collation, s, t, result);
+        if(result == -1) {
+            doTestVariant(collation, t, s, 1);
+        } else if(result == 1) {
+            doTestVariant(collation, t, s, -1);
+        } else {
+            doTestVariant(collation, t, s, 0);
+        }
+    }
+    
+    private void doTestVariant(Collator collation, String source, String target, int result) {
+        int compareResult = collation.compare(source, target);
+        CollationKey srckey , tgtkey;
+        srckey = collation.getCollationKey(source);
+        tgtkey = collation.getCollationKey(target);
+        int keyResult = srckey.compareTo(tgtkey);
+        if (compareResult != result) {
+            errln("String comparison failed in variant test\n");
+        }
+        if (keyResult != result) {
+            errln("Collation key comparison failed in variant test\n");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java b/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
new file mode 100644
index 0000000..d1732ba
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
@@ -0,0 +1,423 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationEnglishTest
+ * Source File: $ICU4CRoot/source/test/intltest/encoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+ 
+public class CollationEnglishTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationEnglishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0020 /* ' ' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0048 /* 'H' */, 0x0065 /* 'e' */, 0x006C /* 'l' */, 0x006C /* 'l' */, 0x006F /* 'o' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */}, 
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},                                            
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x00C4, 0x0042 /* 'B' */, 0x0308, 0x0043 /* 'C' */, 0x0308},
+        {0x0061 /* 'a' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */},
+        {0x0072 /* 'r' */, 0x006F /* 'o' */, 0x006C /* 'l' */, 0x0065 /* 'e' */, 0x0073 /* 's' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0041 /* 'A' */},
+        {0x0041 /* 'A' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */},                                                                
+        {0x0074 /* 't' */, 0x0063 /* 'c' */, 0x006F /* 'o' */, 0x006D /* 'm' */, 0x0070 /* 'p' */, 0x0061 /* 'a' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */, 0x0070 /* 'p' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0069 /* 'i' */, 0x006E /* 'n' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */}, 
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0041 /* 'A' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E6, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},                                            
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x0048 /* 'H' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0074 /* 't' */, 0x0068 /* 'h' */, 0x0069 /* 'i' */, 0x0302, 0x0073 /* 's' */},
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},                                                         
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00E6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00E6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},               
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9}                                            // 49
+    };
+    
+    private static char[][] testTargetCases = {
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x002D /* '-' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */},
+        {0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x006C /* 'l' */, 0x006C /* 'l' */, 0x006F /* 'o' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},
+        {0x0041 /* 'A' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */, 0x0073 /* 's' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */, 0x0073 /* 's' */},
+        {0x0062 /* 'b' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0063 /* 'c' */, 0x006B /* 'k' */, 0x0062 /* 'b' */, 0x0069 /* 'i' */, 0x0072 /* 'r' */, 0x0064 /* 'd' */},                             
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */, 0x0072 /* 'r' */},
+        {0x00C4, 0x0042 /* 'B' */, 0x0308, 0x0043 /* 'C' */, 0x0308},
+        {0x0041 /* 'A' */, 0x0308, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */},
+        {0x0072 /* 'r' */, 0x006F /* 'o' */, 0x0302, 0x006C /* 'l' */, 0x0065 /* 'e' */},
+        {0x0041 /* 'A' */, 0x00E1, 0x0063 /* 'c' */, 0x0064 /* 'd' */},
+        {0x0041 /* 'A' */, 0x00E1, 0x0063 /* 'c' */, 0x0064 /* 'd' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},                                                             
+        {0x0054 /* 'T' */, 0x0043 /* 'C' */, 0x006F /* 'o' */, 0x006D /* 'm' */, 0x0070 /* 'p' */, 0x0061 /* 'a' */, 0x0072 /* 'r' */, 0x0065 /* 'e' */, 0x0050 /* 'P' */, 0x006C /* 'l' */, 0x0061 /* 'a' */, 0x0069 /* 'i' */, 0x006E /* 'n' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0042 /* 'B' */},
+        {0x0061 /* 'a' */, 0x0026 /* '&' */, 0x0062 /* 'b' */},
+        {0x0061 /* 'a' */, 0x0023 /* '#' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},
+        {0x00C4, 0x0062 /* 'b' */, 0x0063 /* 'c' */, 0x0064 /* 'd' */, 0x0061 /* 'a' */},                                             
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0023 /* '#' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x003D /* '=' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0043 /* 'C' */, 0x0048 /* 'H' */, 0x0063 /* 'c' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0074 /* 't' */, 0x0068 /* 'h' */, 0x00EE, 0x0073 /* 's' */},
+        {0x0070 /* 'p' */, 0x00E9, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x00E9},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0043 /* 'C' */},                                                          
+        {0x0061 /* 'a' */, 0x0062 /* 'b' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00C6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x00C6, 0x0063 /* 'c' */},
+        {0x0061 /* 'a' */, 0x0042 /* 'B' */, 0x0064 /* 'd' */},
+        {0x00E4, 0x0062 /* 'b' */, 0x0063 /* 'c' */},          
+        {0x0070 /* 'p' */, 0x00EA, 0x0063 /* 'c' */, 0x0068 /* 'h' */, 0x0065 /* 'e' */}
+    };                                           // 49
+
+    private static int[] results = {
+    //-1:LESS; 0:EQUAL; 1:GREATER
+        -1, 
+        -1, /*Collator::GREATER,*/
+        -1,
+        1,
+        1,
+        0,
+        -1,
+        -1,
+        -1,
+        -1, /*Collator::GREATER,*/                                                          /* 10 */
+        1,
+        -1,
+        0,
+        -1,
+        1,
+        1,
+        1,
+        -1,
+        -1,
+        -1,                                                             /* 20 */
+        -1,
+        -1,
+        -1,
+        1,
+        1,
+        1,
+        /* Test Tertiary  > 26 */
+        -1,
+        -1,
+        1,
+        -1,                                                             /* 30 */
+        1,
+        0,
+        1,
+        -1,
+        -1,
+        -1,
+        /* test identical > 36 */
+        0,
+        0,
+        /* test primary > 38 */
+        0,
+        0,                                                            /* 40 */
+        -1,
+        0,
+        0,
+        /* test secondary > 43 */
+        -1,
+        -1,
+        0,
+        -1,
+        -1, 
+        -1                                                                  // 49
+    };
+
+    private static char [][] testBugs = {
+        {0x61},
+        {0x41},
+        {0x65},
+        {0x45},
+        {0x00e9},
+        {0x00e8},
+        {0x00ea},
+        {0x00eb},
+        {0x65, 0x61},
+        {0x78}
+    };
+
+    // 0x0300 is grave, 0x0301 is acute
+    // the order of elements in this array must be different than the order in CollationFrenchTest
+    private static char[][] testAcute = {
+        {0x65, 0x65},
+        {0x65, 0x65, 0x0301},
+        {0x65, 0x65, 0x0301, 0x0300},
+        {0x65, 0x65, 0x0300},
+        {0x65, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0301, 0x65},
+        {0x65, 0x0301, 0x65, 0x0301},
+        {0x65, 0x0301, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0301, 0x65, 0x0300},
+        {0x65, 0x0301, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0301, 0x0300, 0x65},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0301},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0300},
+        {0x65, 0x0301, 0x0300, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0300, 0x65},
+        {0x65, 0x0300, 0x65, 0x0301},
+        {0x65, 0x0300, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0300, 0x65, 0x0300},
+        {0x65, 0x0300, 0x65, 0x0300, 0x0301},
+        {0x65, 0x0300, 0x0301, 0x65},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0301},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0301, 0x0300},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0300},
+        {0x65, 0x0300, 0x0301, 0x65, 0x0300, 0x0301}
+    };
+
+    private static char[][] testMore = {
+        {0x0061 /* 'a' */, 0x0065 /* 'e' */},
+        { 0x00E6},
+        { 0x00C6},
+        {0x0061 /* 'a' */, 0x0066 /* 'f' */},
+        {0x006F /* 'o' */, 0x0065 /* 'e' */},
+        { 0x0153},
+        { 0x0152},
+        {0x006F /* 'o' */, 0x0066 /* 'f' */},
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationEnglishTest() {
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(Locale.ENGLISH);
+    }
+    
+    //performs test with strength PRIMARY
+    public void TestPrimary() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 38; i < 43 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }  
+    }
+    
+    //perform test with strength SECONDARY
+    public void TestSecondary() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 43; i < 49 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+
+        //test acute and grave ordering (compare to french collation)
+        int j;
+        int expected;
+        for (i = 0; i < testAcute.length; i++) {
+            for (j = 0; j < testAcute.length; j++) {
+                logln("i = " + i + "; j = " + j);
+                if (i <  j)
+                    expected = -1;
+                else if (i == j)
+                    expected = 0;
+                else // (i >  j)
+                    expected = 1;
+                doTest(testAcute[i], testAcute[j], expected );
+            }
+        }
+    }
+    
+    //perform test with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        //for (i = 0; i < 38 ; i++)  //attention: there is something wrong with 36, 37.
+        for (i = 0; i < 38 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        } 
+
+        int j = 0;
+        for (i = 0; i < 10; i++)
+        {
+            for (j = i+1; j < 10; j++)
+            {
+                doTest(testBugs[i], testBugs[j], -1);
+            }
+        }
+
+        //test more interesting cases
+        int expected;
+        for (i = 0; i < testMore.length; i++)
+        {
+            for (j = 0; j < testMore.length; j++)
+            {
+                if (i <  j)
+                    expected = -1;
+                else if (i == j)
+                    expected = 0;
+                else // (i >  j)
+                    expected = 1;
+                doTest(testMore[i], testMore[j], expected );
+            }
+        }
+    }
+    
+   // main test routine, tests rules defined by the "en" locale
+    private void doTest(char[] source, char[] target, int result){
+        
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1)   //LESS
+        {
+            target += "LESS";
+        }
+        else if (result == 0)   //EQUAL
+        {
+            target += "EQUAL";
+        }
+        else if (result == 1)   //GREATER
+        {
+            target += "GREATER";
+        }
+        else
+        {
+            String huh = "?";
+
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+ }
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java b/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
new file mode 100644
index 0000000..1d797f8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
@@ -0,0 +1,171 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationFinnishTest
+ * Source File: $ICU4CRoot/source/test/intltest/ficoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+ 
+public class CollationFinnishTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationFinnishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x77, 0x61, 0x74},
+        {0x76, 0x61, 0x74},
+        {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b},
+        {0x4c, 0x00E5, 0x76, 0x69},
+        {0x77, 0x61, 0x74}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x76, 0x61, 0x74},
+        {0x77, 0x61, 0x79},
+        {0x61, 0x78, 0x62, 0x65, 0x63, 0x6b},
+        {0x4c, 0x00E4, 0x77, 0x65},
+        {0x76, 0x61, 0x74}
+    };
+
+    private static int[] results = {
+        1,
+        -1,
+        1,
+        -1,
+        // test primary > 4
+        0, //collation rules for finnish have changed!
+    };
+
+    private Collator myCollation = null;
+    
+    public CollationFinnishTest() {
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(new ULocale("fi_FI@collation=standard"));
+    }
+     
+    
+    // perform tests with strength PRIMARY
+    public void TestPrimary() {
+        int i = 0;
+        myCollation.setStrength(Collator.PRIMARY);
+        for(i = 4; i < 5; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);    
+        }         
+    }
+    
+    // perform test with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for(i = 0; i < 4; i++ ) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }    
+    }
+    
+    // main test routine, tests rules specific to the finish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }               
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
+    
diff --git a/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java b/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
new file mode 100644
index 0000000..11f3acc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
@@ -0,0 +1,278 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationFrenchTest
+ * Source File: $ICU4CRoot/source/test/intltest/frcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationFrenchTest extends TestFmwk{
+    public static void main(String[] args) throws Exception {
+        new CollationFrenchTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x0061/*'a'*/, 0x0062/*'b'*/, 0x0063/*'c'*/},
+        {0x0043/*'C'*/, 0x004f/*'O'*/, 0x0054/*'T'*/, 0x0045/*'E'*/},
+        {0x0063/*'c'*/, 0x006f/*'o'*/, 0x002d/*'-'*/, 0x006f/*'o'*/, 0x0070/*'p'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0048/*'H'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x006f/*'o'*/},
+        {0x01f1},
+        {0xfb00},
+        {0x01fa},
+        {0x0101}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x0041/*'A'*/, 0x0042/*'B'*/, 0x0043/*'C'*/},
+        {0x0063/*'c'*/, 0x00f4, 0x0074/*'t'*/, 0x0065/*'e'*/},
+        {0x0043/*'C'*/, 0x004f/*'O'*/, 0x004f/*'O'*/, 0x0050/*'P'*/},
+        {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x00E9},
+        {0x0070/*'p'*/,  0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x00E9},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/},
+        {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/},
+        {0x0068/*'h'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x004f/*'O'*/},
+        {0x01ee},
+        {0x25ca},
+        {0x00e0},
+        {0x01df}
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        -1, /*Collator::GREATER,*/
+        -1,
+        1,
+        1,
+        -1,
+        1,
+       -1, /*Collator::GREATER,*/
+        1,
+        -1,
+        -1
+    };
+
+    // 0x0300 is grave, 0x0301 is acute
+    // the order of elements in this array must be different than the order in CollationEnglishTest
+    private static char[][] testAcute = {
+    /*00*/    {0x0065/*'e'*/, 0x0065/*'e'*/},
+    /*01*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/},
+    /*02*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/},
+    /*03*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/},
+    /*04*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/},
+    /*05*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0301}, 
+    /*06*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0301},
+    /*07*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0301},
+    /*08*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0301},
+    /*09*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301},
+    /*0a*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0b*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0c*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0d*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0e*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0300, 0x0301},
+    /*0f*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0300},
+    /*10*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0300},
+    /*11*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0300},
+    /*12*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0300},
+    /*13*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0300},
+    /*14*/    {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*15*/    {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*16*/    {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*17*/    {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300},
+    /*18*/    {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300}
+    };
+
+    private static char[][] testBugs = {
+        {0x0061/*'a'*/},
+        {0x0041/*'A'*/},
+        {0x0065/*'e'*/},
+        {0x0045/*'E'*/},
+        {0x00e9},
+        {0x00e8},
+        {0x00ea},
+        {0x00eb},
+        {0x0065/*'e'*/, 0x0061/*'a'*/},
+        {0x0078/*'x'*/}
+    };
+    
+    
+    private Collator myCollation = null;
+    
+    public CollationFrenchTest() {
+
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(Locale.FRENCH);
+    }
+     
+    // perform tests with strength TERTIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        
+        for (i = 0; i < 12 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    // perform tests with strength SECONDARY
+    public void TestSecondary() {
+        //test acute and grave ordering
+        int i = 0;
+        int j;
+        int expected;
+
+        myCollation.setStrength(Collator.SECONDARY);
+        
+        for (i = 0; i < testAcute.length; i++) {
+            for (j = 0; j < testAcute.length; j++) {
+                if (i <  j) {
+                    expected = -1;
+                } else if (i == j) {
+                    expected = 0;
+                } else {
+                    expected = 1;
+                }
+                doTest(testAcute[i], testAcute[j], expected );
+            }
+        }
+    }
+
+    // perform extra tests
+    public void TestExtra() {
+        int i, j;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 9 ; i++) {
+            for (j = i + 1; j < 10; j += 1) {
+                doTest(testBugs[i], testBugs[j], -1);
+            }
+        }
+    }
+    
+    public void TestContinuationReordering()
+    {
+        String rule = "&0x2f00 << 0x2f01";
+        try {
+            RuleBasedCollator collator = new RuleBasedCollator(rule);
+            collator.setFrenchCollation(true);
+            CollationKey key1 
+                        = collator.getCollationKey("a\u0325\u2f00\u2f01b\u0325");
+            CollationKey key2
+                        = collator.getCollationKey("a\u0325\u2f01\u2f01b\u0325");
+            if (key1.compareTo(key2) >= 0) {
+                errln("Error comparing continuation strings");
+            }
+        } catch (Exception e) {
+            errln(e.toString());
+        }
+    }
+     
+    // main test routine, test rules specific to the french locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);  
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }               
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+} 
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java b/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
new file mode 100644
index 0000000..b61671f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
@@ -0,0 +1,223 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationGermanTest
+ * Source File: $ICU4CRoot/source/test/intltest/decoll.cpp
+ **/
+ 
+ package com.ibm.icu.dev.test.collator;
+ 
+ import com.ibm.icu.dev.test.*;
+ import com.ibm.icu.text.*;
+ import java.util.Locale;
+ 
+ public class CollationGermanTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationGermanTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x47, 0x72, 0x00F6, 0x00DF, 0x65},
+        {0x61, 0x62, 0x63},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x54, 0x00F6, 0x6e, 0x65},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x00E4, 0x62, 0x63},
+        {0x00E4, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x00DF, 0x65},
+        {0x65, 0x66, 0x67},
+        {0x00E4, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x00DF, 0x65}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x47, 0x72, 0x6f, 0x73, 0x73, 0x69, 0x73, 0x74},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x54, 0x6f, 0x6e},
+        {0x54, 0x6f, 0x64},
+        {0x54, 0x6f, 0x66, 0x75},
+        {0x41, 0x0308, 0x62, 0x63},
+        {0x61, 0x0308, 0x62, 0x63},
+        {0x61, 0x65, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x73, 0x73, 0x65},
+        {0x65, 0x66, 0x67},
+        {0x61, 0x65, 0x62, 0x63},
+        {0x53, 0x74, 0x72, 0x61, 0x73, 0x73, 0x65}
+    };
+
+    private static int results[][] =
+    {
+        //  Primary  Tertiary
+        { -1,        -1 },
+        { 0,         -1 },
+        { 1,          1 },
+        { 1,          1 },
+        { 1,          1 },
+        { 0,         -1 },
+        { 0,          0 },
+        { -1,        -1 },
+        { 0,          1 },
+        { 0,          0 },
+        { -1,        -1 },
+        { 0,          1 }
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationGermanTest() {
+
+    }
+    protected void init() throws Exception{
+        myCollation = Collator.getInstance(Locale.GERMAN);
+        if(myCollation == null) {
+            errln("ERROR: in creation of collator of GERMAN locale");
+        }
+    }
+    // perform test with strength TERTIARY
+    public void TestTertiary(){
+        if(myCollation == null ) {
+            errln("decoll: cannot start test, collator is null\n");
+            return;
+        }
+
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i = 0; i < 12 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i][1]);
+        }
+    }
+    
+    // perform test with strength SECONDARY
+    //This method in icu4c has no implementation.
+    public void TestSecondary(){
+    }
+    
+     // perform test with strength PRIMARY
+    public void TestPrimary(){
+        if(myCollation == null ) {
+            errln("decoll: cannot start test, collator is null\n");
+            return;
+        }
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        for (i = 0; i < 12 ; i++)
+        {
+            doTest(testSourceCases[i], testTargetCases[i], results[i][0]);
+        }
+    }
+    
+    
+    //main test routine, tests rules specific to germa locale
+    private void doTest(char[] source, char[] target, int result){
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1)   //LESS
+        {
+            target += "LESS";
+        }
+        else if (result == 0)   //EQUAL
+        {
+            target += "EQUAL";
+        }
+        else if (result == 1)   //GREATER
+        {
+            target += "GREATER";
+        }
+        else
+        {
+            String huh = "?";
+
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java b/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
new file mode 100644
index 0000000..dfb1027
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
@@ -0,0 +1,646 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationIteratorTest
+ * Source File: $ICU4CRoot/source/test/intltest/itercoll.cpp
+ **/
+
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Locale;
+import java.util.Arrays;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.lang.UCharacter;
+
+public class CollationIteratorTest extends TestFmwk {
+    
+    String test1 = "What subset of all possible test cases?";
+    String test2 = "has the highest probability of detecting";
+   
+    public static void main(String[] args) throws Exception {
+        new CollationIteratorTest().run(args);
+        // new CollationIteratorTest().TestNormalizedUnicodeChar();
+    }
+    
+    /*
+     * @bug 4157299
+     */
+    public void TestClearBuffers(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = new RuleBasedCollator("&a < b < c & ab = d");
+        } catch (Exception e) {
+            warnln("Couldn't create a RuleBasedCollator.");
+            return;
+        }
+    
+        String source = "abcd";
+        CollationElementIterator i = c.getCollationElementIterator(source);
+        int e0 = 0;
+        try {
+            e0 = i.next();    // save the first collation element
+        } catch (Exception e) {
+            errln("call to i.next() failed.");
+            return;
+        }
+            
+        try {
+            i.setOffset(3);        // go to the expanding character
+        } catch (Exception e) {
+            errln("call to i.setOffset(3) failed.");
+            return;
+        }
+        
+        try {
+            i.next();                // but only use up half of it
+        } catch (Exception e) {
+            errln("call to i.next() failed.");
+            return;
+        }
+            
+        try {
+            i.setOffset(0);        // go back to the beginning
+        } catch (Exception e) {
+            errln("call to i.setOffset(0) failed. ");
+        }
+        
+        int e = 0;
+        try {
+            e = i.next();    // and get this one again
+        } catch (Exception ee) {
+            errln("call to i.next() failed. ");
+            return;
+        }
+        
+        if (e != e0) {
+            errln("got 0x" + Integer.toHexString(e) + ", expected 0x" + Integer.toHexString(e0));
+        }
+    }
+    
+    /** @bug 4108762
+     * Test for getMaxExpansion()
+     */
+    public void TestMaxExpansion(/* char* par */) {
+        int unassigned = 0xEFFFD;
+        String rule = "&a < ab < c/aba < d < z < ch";
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            warnln("Fail to create RuleBasedCollator");
+            return;
+        }
+        char ch = 0;
+        String str = String.valueOf(ch);
+    
+        CollationElementIterator iter = coll.getCollationElementIterator(str);
+    
+        while (ch < 0xFFFF) {
+            int count = 1;
+            ch ++;
+            str = String.valueOf(ch);
+            iter.setText(str);
+            int order = iter.previous();
+    
+            // thai management 
+            if (order == 0) {
+                order = iter.previous();
+            }
+    
+            while (iter.previous() != CollationElementIterator.NULLORDER) {
+                count ++; 
+            }
+    
+            if (iter.getMaxExpansion(order) < count) {
+                errln("Failure at codepoint " + ch + ", maximum expansion count < " + count);
+            }
+        }
+        
+        // testing for exact max expansion 
+        ch = 0;
+        while (ch < 0x61) {
+            str = String.valueOf(ch);
+            iter.setText(str);
+            int order = iter.previous();
+            
+            if (iter.getMaxExpansion(order) != 1) {
+                errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                      + " maximum expansion count == 1");
+            }
+            ch ++;
+        }
+
+        ch = 0x63;
+        str = String.valueOf(ch);
+        iter.setText(str);
+        int temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) != 3) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                  + " maximum expansion count == 3");
+        }
+
+        ch = 0x64;
+        str = String.valueOf(ch);
+        iter.setText(str);
+        temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) != 1) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                  + " maximum expansion count == 1");
+        }
+
+        str = UCharacter.toString(unassigned);
+        iter.setText(str);
+        temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) != 2) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                  + " maximum expansion count == 2");
+        }
+
+
+        // testing jamo
+        ch = 0x1165;
+        str = String.valueOf(ch);
+        iter.setText(str);
+        temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) > 3) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                          + " maximum expansion count < 3");
+        }
+
+        // testing special jamo &a<\u1165
+        rule = "\u0026\u0071\u003c\u1165\u002f\u0071\u0071\u0071\u0071";
+
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator");
+            return;
+        }
+        iter = coll.getCollationElementIterator(str);
+        
+        temporder = iter.previous();
+            
+        if (iter.getMaxExpansion(temporder) != 6) {
+            errln("Failure at codepoint 0x" + Integer.toHexString(ch)
+                                         + " maximum expansion count == 6");
+        }
+    }
+    
+    /**
+     * Test for getOffset() and setOffset()
+     */
+    public void TestOffset(/* char* par */) {
+        RuleBasedCollator en_us;
+        try {
+            en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);    
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+
+        CollationElementIterator iter = en_us.getCollationElementIterator(test1);
+        // testing boundaries
+        iter.setOffset(0);
+        if (iter.previous() != CollationElementIterator.NULLORDER) {
+            errln("Error: After setting offset to 0, we should be at the end "
+                  + "of the backwards iteration");
+        }
+        iter.setOffset(test1.length());
+        if (iter.next() != CollationElementIterator.NULLORDER) {
+            errln("Error: After setting offset to the end of the string, we " 
+                  + "should be at the end of the forwards iteration");
+        }
+    
+        // Run all the way through the iterator, then get the offset
+        int[] orders = CollationTest.getOrders(iter);
+        logln("orders.length = " + orders.length);
+        
+        int offset = iter.getOffset();
+    
+        if (offset != test1.length()) {
+            String msg1 = "offset at end != length: ";
+            String msg2 = " vs ";
+            errln(msg1 + offset + msg2 + test1.length());
+        }
+    
+        // Now set the offset back to the beginning and see if it works
+        CollationElementIterator pristine = en_us.getCollationElementIterator(test1);
+        
+        try {
+            iter.setOffset(0);
+        } catch(Exception e) {
+            errln("setOffset failed.");
+        }
+        assertEqual(iter, pristine);
+    
+        // setting offset in the middle of a contraction
+        String contraction = "change";
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator("& a < ch");
+        } catch (Exception e) {
+            errln("Error: in creation of Spanish collator");
+            return;
+        }
+        iter = tailored.getCollationElementIterator(contraction);
+        int order[] = CollationTest.getOrders(iter);
+        iter.setOffset(1); // sets offset in the middle of ch
+        int order2[] = CollationTest.getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a contraction should be the same as setting it to the start of the contraction");
+        }
+        contraction = "peache";
+        iter = tailored.getCollationElementIterator(contraction);
+        iter.setOffset(3);
+        order = CollationTest.getOrders(iter);
+        iter.setOffset(4); // sets offset in the middle of ch
+        order2 = CollationTest.getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a contraction should be the same as setting it to the start of the contraction");
+        }
+        // setting offset in the middle of a surrogate pair
+        String surrogate = "\ud800\udc00str";
+        iter = tailored.getCollationElementIterator(surrogate);
+        order = CollationTest.getOrders(iter);
+        iter.setOffset(1); // sets offset in the middle of surrogate
+        order2 = CollationTest.getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a surrogate pair should be the same as setting it to the start of the surrogate pair");
+        }
+        surrogate = "simple\ud800\udc00str";
+        iter = tailored.getCollationElementIterator(surrogate);
+        iter.setOffset(6);
+        order = CollationTest.getOrders(iter);
+        iter.setOffset(7); // sets offset in the middle of surrogate
+        order2 = CollationTest.getOrders(iter);
+        if (!Arrays.equals(order, order2)) {
+            errln("Error: setting offset in the middle of a surrogate pair should be the same as setting it to the start of the surrogate pair");
+        }
+        // TODO: try iterating halfway through a messy string.
+    }
+    
+    
+
+    void assertEqual(CollationElementIterator i1, CollationElementIterator i2) {
+        int c1, c2, count = 0;
+        do {
+            c1 = i1.next();
+            c2 = i2.next();
+            if (c1 != c2) {
+                errln("    " + count + ": strength(0x" + 
+                    Integer.toHexString(c1) + ") != strength(0x" + Integer.toHexString(c2) + ")");
+                break;
+            }
+            count += 1;
+        } while (c1 != CollationElementIterator.NULLORDER);
+        CollationTest.backAndForth(this, i1);
+        CollationTest.backAndForth(this, i2);
+    }
+    
+    /**
+     * Test for CollationElementIterator.previous()
+     *
+     * @bug 4108758 - Make sure it works with contracting characters
+     * 
+     */
+    public void TestPrevious(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter = en_us.getCollationElementIterator(test1);
+    
+        // A basic test to see if it's working at all
+        CollationTest.backAndForth(this, iter);
+    
+        // Test with a contracting character sequence
+        String source;
+        RuleBasedCollator c1 = null;
+        try {
+            c1 = new RuleBasedCollator("&a,A < b,B < c,C, d,D < z,Z < ch,cH,Ch,CH");
+        } catch (Exception e) {
+            errln("Couldn't create a RuleBasedCollator with a contracting sequence.");
+            return;
+        }
+    
+        source = "abchdcba";
+        iter = c1.getCollationElementIterator(source);
+        CollationTest.backAndForth(this, iter);
+    
+        // Test with an expanding character sequence
+        RuleBasedCollator c2 = null;
+        try {
+            c2 = new RuleBasedCollator("&a < b < c/abd < d");
+        } catch (Exception e ) {
+            errln("Couldn't create a RuleBasedCollator with an expanding sequence.");
+            return;
+        }
+    
+        source = "abcd";
+        iter = c2.getCollationElementIterator(source);
+        CollationTest.backAndForth(this, iter);
+    
+        // Now try both
+        RuleBasedCollator c3 = null;
+        try {
+            c3 = new RuleBasedCollator("&a < b < c/aba < d < z < ch");
+        } catch (Exception e) {
+            errln("Couldn't create a RuleBasedCollator with both an expanding and a contracting sequence.");
+            return;
+        }
+        
+        source = "abcdbchdc";
+        iter = c3.getCollationElementIterator(source);
+        CollationTest.backAndForth(this, iter);
+    
+        source= "\u0e41\u0e02\u0e41\u0e02\u0e27abc";
+        Collator c4 = null;
+        try {
+            c4 = Collator.getInstance(new Locale("th", "TH", ""));
+        } catch (Exception e) {
+            errln("Couldn't create a collator");
+            return;
+        }
+        
+        iter = ((RuleBasedCollator)c4).getCollationElementIterator(source);
+        CollationTest.backAndForth(this, iter);
+       
+        source= "\u0061\u30CF\u3099\u30FC";
+        Collator c5 = null;
+        try {
+            c5 = Collator.getInstance(new Locale("ja", "JP", ""));
+        } catch (Exception e) {
+            errln("Couldn't create Japanese collator\n");
+            return;
+        }
+        iter = ((RuleBasedCollator)c5).getCollationElementIterator(source);
+        
+        CollationTest.backAndForth(this, iter);
+    }
+    
+    
+    
+    /**
+     * Test for setText()
+     */
+    public void TestSetText(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter1 = en_us.getCollationElementIterator(test1);
+        CollationElementIterator iter2 = en_us.getCollationElementIterator(test2);
+    
+        // Run through the second iterator just to exercise it
+        int c = iter2.next();
+        int i = 0;
+    
+        while ( ++i < 10 && c != CollationElementIterator.NULLORDER) {
+            try {
+                c = iter2.next();
+            } catch (Exception e) {
+                errln("iter2.next() returned an error.");
+                break;
+            }
+        }
+    
+        // Now set it to point to the same string as the first iterator
+        try {
+            iter2.setText(test1);
+        } catch (Exception e) {
+            errln("call to iter2->setText(test1) failed.");
+            return;
+        }
+        assertEqual(iter1, iter2);
+        
+        iter1.reset();
+        //now use the overloaded setText(ChracterIterator&, UErrorCode) function to set the text
+        CharacterIterator chariter = new StringCharacterIterator(test1);
+        try {
+            iter2.setText(chariter);
+        } catch (Exception e ) {
+            errln("call to iter2->setText(chariter(test1)) failed.");
+            return;
+        }
+        assertEqual(iter1, iter2);
+        
+        iter1.reset();
+        //now use the overloaded setText(ChracterIterator&, UErrorCode) function to set the text
+        UCharacterIterator uchariter = UCharacterIterator.getInstance(test1);
+        try {
+            iter2.setText(uchariter);
+        } catch (Exception e ) {
+            errln("call to iter2->setText(uchariter(test1)) failed.");
+            return;
+        }
+        assertEqual(iter1, iter2);
+    }
+
+    /**
+     * Test for CollationElementIterator previous and next for the whole set of
+     * unicode characters.
+     */
+    public void TestUnicodeChar() {
+        RuleBasedCollator en_us = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        CollationElementIterator iter;
+        char codepoint;
+        StringBuffer source = new StringBuffer();
+        source.append("\u0e4d\u0e4e\u0e4f");
+        // source.append("\u04e8\u04e9");
+        iter = en_us.getCollationElementIterator(source.toString());
+        // A basic test to see if it's working at all 
+        CollationTest.backAndForth(this, iter);
+        for (codepoint = 1; codepoint < 0xFFFE;) {
+            source.delete(0, source.length());
+            while (codepoint % 0xFF != 0) {
+                if (UCharacter.isDefined(codepoint)) {
+                    source.append(codepoint);
+                }
+                codepoint ++;
+            }
+            
+            if (UCharacter.isDefined(codepoint)) {
+                source.append(codepoint);
+            }
+            
+            if (codepoint != 0xFFFF) {
+                codepoint ++;
+            }
+            /*if (codepoint >= 0x04fc) {
+                System.out.println("codepoint " + Integer.toHexString(codepoint));
+                String str = source.substring(230, 232);
+                System.out.println(com.ibm.icu.impl.Utility.escape(str));
+                System.out.println("codepoint " + Integer.toHexString(codepoint) 
+                                   + "length " + str.length());
+                iter = en_us.getCollationElementIterator(str);
+                CollationTest.backAndForth(this, iter);
+            }
+            */
+            iter = en_us.getCollationElementIterator(source.toString());
+            // A basic test to see if it's working at all 
+            CollationTest.backAndForth(this, iter);
+        }
+    }
+    
+    /**
+     * Test for CollationElementIterator previous and next for the whole set of
+     * unicode characters with normalization on.
+     */
+    public void TestNormalizedUnicodeChar()
+    {
+        // thai should have normalization on
+        RuleBasedCollator th_th = null;
+        try {
+            th_th = (RuleBasedCollator)Collator.getInstance(
+                                                       new Locale("th", "TH"));
+        } catch (Exception e) {
+            warnln("Error creating Thai collator");
+            return;
+        }
+        StringBuffer source = new StringBuffer();
+        source.append('\uFDFA');
+        CollationElementIterator iter 
+                        = th_th.getCollationElementIterator(source.toString());
+        CollationTest.backAndForth(this, iter);
+        for (char codepoint = 0x1; codepoint < 0xfffe;) {
+            source.delete(0, source.length());
+            while (codepoint % 0xFF != 0) {
+                if (UCharacter.isDefined(codepoint)) {
+                    source.append(codepoint);
+                }
+                codepoint ++;
+            }
+            
+            if (UCharacter.isDefined(codepoint)) {
+                source.append(codepoint);
+            }
+            
+            if (codepoint != 0xFFFF) {
+                codepoint ++;
+            }
+            
+            /*if (((int)codepoint) >= 0xfe00) {
+                String str = source.substring(185, 190);
+                System.out.println(com.ibm.icu.impl.Utility.escape(str));
+                System.out.println("codepoint " 
+                                   + Integer.toHexString(codepoint) 
+                                   + "length " + str.length());
+                iter = th_th.getCollationElementIterator(str);
+                CollationTest.backAndForth(this, iter);
+            */
+            iter = th_th.getCollationElementIterator(source.toString());
+            // A basic test to see if it's working at all 
+            CollationTest.backAndForth(this, iter);
+        }
+    }
+    
+    /**
+    * Testing the discontiguous contractions
+    */
+    public void TestDiscontiguous() 
+    {
+        String rulestr ="&z < AB < X\u0300 < ABC < X\u0300\u0315";
+        String src[] = {"ADB", "ADBC", "A\u0315B", "A\u0315BC",
+                        // base character blocked
+                        "XD\u0300", "XD\u0300\u0315",
+                        // non blocking combining character
+                        "X\u0319\u0300", "X\u0319\u0300\u0315",
+                        // blocking combining character
+                        "X\u0314\u0300", "X\u0314\u0300\u0315",
+                        // contraction prefix
+                        "ABDC", "AB\u0315C","X\u0300D\u0315", 
+                        "X\u0300\u0319\u0315", "X\u0300\u031A\u0315",
+                        // ends not with a contraction character
+                        "X\u0319\u0300D", "X\u0319\u0300\u0315D", 
+                        "X\u0300D\u0315D", "X\u0300\u0319\u0315D", 
+                        "X\u0300\u031A\u0315D"
+        };
+        String tgt[] = {// non blocking combining character
+                        "A D B", "A D BC", "A \u0315 B", "A \u0315 BC",
+                        // base character blocked
+                        "X D \u0300", "X D \u0300\u0315",
+                        // non blocking combining character
+                        "X\u0300 \u0319", "X\u0300\u0315 \u0319",
+                        // blocking combining character
+                        "X \u0314 \u0300", "X \u0314 \u0300\u0315",
+                        // contraction prefix
+                        "AB DC", "AB \u0315 C","X\u0300 D \u0315", 
+                        "X\u0300\u0315 \u0319", "X\u0300 \u031A \u0315",
+                        // ends not with a contraction character
+                        "X\u0300 \u0319D", "X\u0300\u0315 \u0319D", 
+                        "X\u0300 D\u0315D", "X\u0300\u0315 \u0319D", 
+                        "X\u0300 \u031A\u0315D"
+        };
+        int count = 0;
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rulestr);
+            CollationElementIterator iter 
+                                        = coll.getCollationElementIterator("");
+            CollationElementIterator resultiter 
+                                        = coll.getCollationElementIterator("");    
+            while (count < src.length) {
+                iter.setText(src[count]);
+                int s = 0;
+                while (s < tgt[count].length()) {
+                    int e = tgt[count].indexOf(' ', s);
+                    if (e < 0) {
+                        e = tgt[count].length();
+                    }
+                    String resultstr = tgt[count].substring(s, e);
+                    resultiter.setText(resultstr);
+                    int ce = resultiter.next();
+                    while (ce != CollationElementIterator.NULLORDER) {
+                        if (ce != iter.next()) {
+                            errln("Discontiguos contraction test mismatch at" 
+                                  + count);
+                            return;
+                        }
+                        ce = resultiter.next();
+                    }
+                    s = e + 1;
+                }
+                iter.reset();
+                CollationTest.backAndForth(this, iter);
+                count ++;
+            }
+        }
+        catch (Exception e) {
+            warnln("Error running discontiguous tests " + e.toString());
+        }
+    }
+
+    /**
+    * Test the incremental normalization
+    */
+    public void TestNormalization()
+    {
+        String rules = "&a < \u0300\u0315 < A\u0300\u0315 < \u0316\u0315B < \u0316\u0300\u0315";
+        String testdata[] = {"\u1ED9", "o\u0323\u0302",
+                            "\u0300\u0315", "\u0315\u0300",
+                            "A\u0300\u0315B", "A\u0315\u0300B",
+                            "A\u0316\u0315B", "A\u0315\u0316B",
+                            "\u0316\u0300\u0315", "\u0315\u0300\u0316",
+                            "A\u0316\u0300\u0315B", "A\u0315\u0300\u0316B",
+                            "\u0316\u0315\u0300", "A\u0316\u0315\u0300B"};
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+            coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator using rules " + rules);
+            return;
+        }
+        
+        CollationElementIterator iter = coll.getCollationElementIterator("testing");
+        for (int count = 0; count < testdata.length; count ++) {
+            iter.setText(testdata[count]);
+            CollationTest.backAndForth(this, iter);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java b/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
new file mode 100644
index 0000000..3067239
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
@@ -0,0 +1,284 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationKanaTest
+ * Source File: $ICU4CRoot/source/test/intltest/jacoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Locale;
+ 
+public class CollationKanaTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationKanaTest().run(args);
+    }
+
+    private static char[][] testSourceCases = {
+        {0xff9E},
+        {0x3042},
+        {0x30A2},
+        {0x3042, 0x3042},
+        {0x30A2, 0x30FC},
+        {0x30A2, 0x30FC, 0x30C8}                               /*  6 */
+    };
+
+    private static char[][] testTargetCases = {
+        {0xFF9F},
+        {0x30A2},
+        {0x3042, 0x3042},
+        {0x30A2, 0x30FC},
+        {0x30A2, 0x30FC, 0x30C8},
+        {0x3042, 0x3042, 0x3068}                              /*  6 */
+    };
+
+    private static int[] results = {
+        -1,
+        0,   //Collator::LESS, /* Katakanas and Hiraganas are equal on tertiary level(ICU 2.0)*/
+        -1,
+        1, // Collator::LESS, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        -1,
+        -1,    //Collator::GREATER /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*//*  6 */
+    };
+
+    private static char[][] testBaseCases = {
+        {0x30AB},
+        {0x30AB, 0x30AD},
+        {0x30AD},
+        {0x30AD, 0x30AD}
+    };
+
+    private static char[][] testPlainDakutenHandakutenCases = {
+        {0x30CF, 0x30AB},
+        {0x30D0, 0x30AB},
+        {0x30CF, 0x30AD},
+        {0x30D0, 0x30AD}
+    };
+
+    private static char[][] testSmallLargeCases = {
+        {0x30C3, 0x30CF},
+        {0x30C4, 0x30CF},
+        {0x30C3, 0x30D0},
+        {0x30C4, 0x30D0}
+    };
+
+    private static char[][] testKatakanaHiraganaCases = {
+        {0x3042, 0x30C3},
+        {0x30A2, 0x30C3},
+        {0x3042, 0x30C4},
+        {0x30A2, 0x30C4}
+    };
+
+    private static char[][] testChooonKigooCases = {
+        /*0*/ {0x30AB, 0x30FC, 0x3042},
+        /*1*/ {0x30AB, 0x30FC, 0x30A2},
+        /*2*/ {0x30AB, 0x30A4, 0x3042},
+        /*3*/ {0x30AB, 0x30A4, 0x30A2},
+        /*6*/ {0x30AD, 0x30FC, 0x3042}, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        /*7*/ {0x30AD, 0x30FC, 0x30A2}, /* Prolonged sound mark sorts BEFORE equivalent vowel (ICU 2.0)*/
+        /*4*/ {0x30AD, 0x30A4, 0x3042},
+        /*5*/ {0x30AD, 0x30A4, 0x30A2}
+    };
+        
+    private Collator myCollation = null;
+    
+    public CollationKanaTest() {
+    }
+    protected void init()throws Exception{ 
+        if(myCollation==null){
+            myCollation = Collator.getInstance(Locale.JAPANESE); 
+        }
+    }
+    // performs test with strength TERIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        
+        for (i = 0; i < 6; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+
+    /* Testing base letters */
+    public void TestBase() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testBaseCases[i], testBaseCases[i + 1], -1);
+        }
+    }
+
+    /* Testing plain, Daku-ten, Handaku-ten letters */
+    public void TestPlainDakutenHandakuten() {
+        int i;
+        myCollation.setStrength(Collator.SECONDARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testPlainDakutenHandakutenCases[i], testPlainDakutenHandakutenCases[i + 1], -1);
+        }
+    }
+
+    /* 
+    * Test Small, Large letters
+    */
+    public void TestSmallLarge() {
+        int i;
+        myCollation.setStrength(Collator.TERTIARY);
+
+        for (i = 0; i < 3 ; i++) {
+            doTest(testSmallLargeCases[i], testSmallLargeCases[i + 1], -1);
+        }
+    }
+
+    /*
+    * Test Katakana, Hiragana letters
+    */
+    public void TestKatakanaHiragana() {
+        int i;
+        myCollation.setStrength(Collator.QUATERNARY);
+        for (i = 0; i < 3 ; i++) {
+            doTest(testKatakanaHiraganaCases[i], testKatakanaHiraganaCases[i + 1], -1);
+        }
+    }
+
+    /*
+    * Test Choo-on kigoo
+    */
+    public void TestChooonKigoo() {
+        int i;
+        myCollation.setStrength(Collator.QUATERNARY);
+        for (i = 0; i < 7 ; i++) {
+            doTest(testChooonKigooCases[i], testChooonKigooCases[i + 1], -1);
+        }
+    }
+    
+    /*
+     * Test common Hiragana and Katakana characters (e.g. 0x3099) (ticket:6140)
+     */
+    public void TestCommonCharacters() {
+        char[] tmp1 = { 0x3058, 0x30B8 };
+        char[] tmp2 = { 0x3057, 0x3099, 0x30B7, 0x3099 };
+        CollationKey key1, key2;
+        int result;
+        String string1 = new String(tmp1);
+        String string2 = new String(tmp2);
+        RuleBasedCollator rb = (RuleBasedCollator)Collator.getInstance(ULocale.JAPAN);
+        rb.setHiraganaQuaternary(true);
+        rb.setStrength(Collator.QUATERNARY);
+        rb.setAlternateHandlingShifted(false);
+        
+        result = rb.compare(string1, string2);
+        
+        key1 = rb.getCollationKey(string1);
+        key2 = rb.getCollationKey(string2);
+        
+        if ( result != 0 || !key1.equals(key2)) {
+            errln("Failed Hiragana and Katakana common characters test. Expected results to be equal.");
+        }
+        
+    }
+    // main test routine, tests rules specific to "Kana" locale
+    private void doTest(char[] source, char[] target, int result){
+        
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java b/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
new file mode 100644
index 0000000..f81f52c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
@@ -0,0 +1,2490 @@
+ /*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : cintltest
+ * Source File: $ICU4CRoot/source/test/cintltest/cmsccoll.c
+ */
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ImplicitCEGenerator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.CollationElementIterator;
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UTF16;
+
+import java.util.Set;
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.TreeSet;
+
+public class CollationMiscTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CollationMiscTest().run(args);
+        // new CollationMiscTest().TestLocaleRuleBasedCollators(); 
+    }
+    
+    //private static final int NORM_BUFFER_TEST_LEN_ = 32;
+    private static final class Tester 
+    {
+        int u;
+        String NFC;
+        String NFD;
+    }
+    
+    private static final boolean hasCollationElements(Locale locale)
+    {
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,locale);
+        if (rb != null) {
+            try {
+                String collkey = rb.getStringWithFallback("collations/default"); 
+                ICUResourceBundle elements = rb.getWithFallback("collations/" + collkey);
+                if (elements != null) {
+                    return true;
+                }
+            } catch (Exception e) {
+            }
+        }
+        return false;
+    }
+    
+    public void TestComposeDecompose() 
+    {
+        Tester t[] = new Tester[0x30000];
+        t[0] = new Tester();
+        logln("Testing UCA extensively\n");
+        RuleBasedCollator coll;
+        try {
+            coll = (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH);
+        } 
+        catch (Exception e) {
+            warnln("Error opening collator\n");
+            return;
+        }
+    
+        int noCases = 0;
+        for (int u = 0; u < 0x30000; u ++) {
+            String comp = UTF16.valueOf(u);
+            int len = comp.length();
+            t[noCases].NFC = Normalizer.normalize(u, Normalizer.NFC);
+            t[noCases].NFD = Normalizer.normalize(u, Normalizer.NFD);
+    
+            if (t[noCases].NFC.length() != t[noCases].NFD.length() 
+                || (t[noCases].NFC.compareTo(t[noCases].NFD) != 0) 
+                || (len != t[noCases].NFD.length())
+                || (comp.compareTo(t[noCases].NFD) != 0)) {
+                t[noCases].u = u;
+                if (len != t[noCases].NFD.length() 
+                    || (comp.compareTo(t[noCases].NFD) != 0)) {
+                    t[noCases].NFC = comp;
+                }
+                noCases ++;
+                t[noCases] = new Tester();
+            } 
+        }
+    
+        for (int u = 0; u < noCases; u ++) {
+            if (!coll.equals(t[u].NFC, t[u].NFD)) {
+                errln("Failure: codePoint \\u" + Integer.toHexString(t[u].u) 
+                      + " fails TestComposeDecompose in the UCA");
+                CollationTest.doTest(this, coll, t[u].NFC, t[u].NFD, 0);
+            }
+        }
+    
+        logln("Testing locales, number of cases = " + noCases);
+        Locale loc[] = Collator.getAvailableLocales();
+        for (int i = 0; i < loc.length; i ++) {
+            if (hasCollationElements(loc[i])) {
+                logln("Testing locale " + loc[i].getDisplayName());
+                coll = (RuleBasedCollator)Collator.getInstance(loc[i]);
+                coll.setStrength(Collator.IDENTICAL);
+     
+                for (int u = 0; u < noCases; u ++) {
+                    if (!coll.equals(t[u].NFC, t[u].NFD)) {
+                        errln("Failure: codePoint \\u" 
+                              + Integer.toHexString(t[u].u)
+                              + " fails TestComposeDecompose for locale "
+                              + loc[i].getDisplayName());
+                        // this tests for the iterators too
+                        CollationTest.doTest(this, coll, t[u].NFC, t[u].NFD, 
+                                             0);
+                    }
+                }
+            }
+        }
+    }
+    
+    public void TestRuleOptions() {
+        // values here are hardcoded and are correct for the current UCA when 
+        // the UCA changes, one might be forced to change these values. 
+        // (\\u02d0, \\U00010FFFC etc...) 
+        String[] rules = {
+            // cannot test this anymore, as [last primary ignorable] doesn't 
+            // have a  code point associated to it anymore  
+            // "&[before 3][last primary ignorable]<<<k",
+            // - all befores here amount to zero       
+            "&[before 3][first tertiary ignorable]<<<a",
+            "&[before 3][last tertiary ignorable]<<<a",  
+            "&[before 3][first secondary ignorable]<<<a",
+            "&[before 3][last secondary ignorable]<<<a", 
+            // 'normal' befores  
+            "&[before 3][first primary ignorable]<<<c<<<b &[first primary ignorable]<a",
+            // we don't have a code point that corresponds to the last primary 
+            // ignorable 
+            "&[before 3][last primary ignorable]<<<c<<<b &[last primary ignorable]<a",
+            "&[before 3][first variable]<<<c<<<b &[first variable]<a",
+            "&[last variable]<a &[before 3][last variable]<<<c<<<b ",
+            "&[first regular]<a &[before 1][first regular]<b", 
+            "&[before 1][last regular]<b &[last regular]<a",
+            "&[before 1][first implicit]<b &[first implicit]<a",
+            "&[before 1][last implicit]<b &[last implicit]<a", 
+            "&[last variable]<z&[last primary ignorable]<x&[last secondary ignorable]<<y&[last tertiary ignorable]<<<w&[top]<u",
+        };
+        String[][] data = {
+            // {"k", "\u20e3"},
+            {"\\u0000", "a"}, // you cannot go before first tertiary ignorable 
+            {"\\u0000", "a"}, // you cannot go before last tertiary ignorable 
+            {"\\u0000", "a"}, // you cannot go before first secondary ignorable
+            {"\\u0000", "a"}, // you cannot go before first secondary ignorable
+            {"c", "b", "\\u0332", "a"},
+            {"\\u0332", "\\u20e3", "c", "b", "a"},
+            {"c", "b", "\\u0009", "a", "\\u000a"},
+            {"c", "b", "\\uD834\\uDF71", "a", "\\u02d0"},
+            {"b", "\\u02d0", "a", "\\u02d1"},
+            {"b", "\\ud808\\udf6e", "a", "\\u4e00"},
+            {"b", "\\u4e00", "a", "\\u4e01"},
+            {"b", "\\U0010FFFD", "a"},
+            {"\ufffb",  "w", "y", "\u20e3", "x", "\u137c", "z", "u"},
+        };
+        
+        for (int i = 0; i< rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    void genericRulesStarter(String rules, String[] s) {
+        genericRulesStarterWithResult(rules, s, -1);
+    }
+    
+    void genericRulesStarterWithResult(String rules, String[] s, int result) {
+        
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+            // logln("Rules starter for " + rules);
+            genericOrderingTestWithResult(coll, s, result);
+        } catch (Exception e) {
+            warnln("Unable to open collator with rules " + rules);
+        }
+    }
+    
+    void genericRulesStarterWithOptionsAndResult(String rules, String[] s, String[] atts, Object[] attVals, int result) {
+        RuleBasedCollator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+            genericOptionsSetter(coll, atts, attVals);
+            genericOrderingTestWithResult(coll, s, result);
+        } catch (Exception e) {
+            warnln("Unable to open collator with rules " + rules);
+        }
+    }
+    void genericOrderingTestWithResult(Collator coll, String[] s, int result) {
+        String t1 = "";
+        String t2 = "";
+        
+        for(int i = 0; i < s.length - 1; i++) {
+            for(int j = i+1; j < s.length; j++) {
+                t1 = Utility.unescape(s[i]);
+                t2 = Utility.unescape(s[j]);
+                // System.out.println(i + " " + j);
+                CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, 
+                                     result);
+            }
+        }
+    }
+
+    void reportCResult(String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                       int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+        if (ok1 && ok2 && ok3 /* synwee to undo && !isVerbose()*/) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+            sResult = appendCompareResult(incResult, sResult);
+            if (ok3) {
+                // logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            String numStr = Integer.toHexString(bytes[i]);
+            if (numStr.length()>2) {
+                target += numStr.substring(numStr.length()-2);
+            }
+            else {
+                target += numStr;
+            }
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+    
+    public void TestBeforePrefixFailure() {
+        String[] rules = {
+            "&g <<< a&[before 3]\uff41 <<< x",
+            "&\u30A7=\u30A7=\u3047=\uff6a&\u30A8=\u30A8=\u3048=\uff74&[before 3]\u30a7<<<\u30a9",
+            "&[before 3]\u30a7<<<\u30a9&\u30A7=\u30A7=\u3047=\uff6a&\u30A8=\u30A8=\u3048=\uff74",
+        };
+        String[][] data = {
+            {"x", "\uff41"},
+            {"\u30a9", "\u30a7"},
+            {"\u30a9", "\u30a7"},
+        };
+        
+        for(int i = 0; i< rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    public void TestContractionClosure() {
+        String[] rules = {
+            "&b=\u00e4\u00e4",
+            "&b=\u00C5",
+        };
+        String[][] data = {
+            { "b", "\u00e4\u00e4", "a\u0308a\u0308", "\u00e4a\u0308", "a\u0308\u00e4" },
+            { "b", "\u00C5", "A\u030A", "\u212B" },
+        };
+        
+        for(int i = 0; i< rules.length; i++) {
+            genericRulesStarterWithResult(rules[i], data[i], 0);
+        }
+    }
+    
+    public void TestPrefixCompose() {
+        String rule1 = "&\u30a7<<<\u30ab|\u30fc=\u30ac|\u30fc";
+        
+        String string = rule1;
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(string);
+            logln("rule:" + coll.getRules());
+        } catch (Exception e) {
+            warnln("Error open RuleBasedCollator rule = " + string);
+        }
+    }
+    
+    public void TestStrCollIdenticalPrefix() {
+        String rule = "&\ud9b0\udc70=\ud9b0\udc71";
+        String test[] = {
+            "ab\ud9b0\udc70",
+            "ab\ud9b0\udc71"
+        };
+        genericRulesStarterWithResult(rule, test, 0);
+    }
+    
+    public void TestPrefix() {
+        String[] rules = {
+            "&z <<< z|a",
+            "&z <<< z|   a", 
+            "[strength I]&a=\ud900\udc25&z<<<\ud900\udc25|a", 
+        };
+        String[][] data = {
+            {"zz", "za"},
+            {"zz", "za"},
+            {"aa", "az", "\ud900\udc25z", "\ud900\udc25a", "zz"},
+        };
+        
+        for(int i = 0; i<rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }
+    
+    public void TestNewJapanese() {
+        
+        String test1[] = {
+            "\u30b7\u30e3\u30fc\u30ec",
+            "\u30b7\u30e3\u30a4",
+            "\u30b7\u30e4\u30a3",
+            "\u30b7\u30e3\u30ec",
+            "\u3061\u3087\u3053",
+            "\u3061\u3088\u3053",
+            "\u30c1\u30e7\u30b3\u30ec\u30fc\u30c8",
+            "\u3066\u30fc\u305f",
+            "\u30c6\u30fc\u30bf", 
+            "\u30c6\u30a7\u30bf",
+            "\u3066\u3048\u305f",
+            "\u3067\u30fc\u305f", 
+            "\u30c7\u30fc\u30bf",
+            "\u30c7\u30a7\u30bf",
+            "\u3067\u3048\u305f",
+            "\u3066\u30fc\u305f\u30fc",
+            "\u30c6\u30fc\u30bf\u30a1",
+            "\u30c6\u30a7\u30bf\u30fc",
+            "\u3066\u3047\u305f\u3041",
+            "\u3066\u3048\u305f\u30fc",
+            "\u3067\u30fc\u305f\u30fc",
+            "\u30c7\u30fc\u30bf\u30a1",
+            "\u3067\u30a7\u305f\u30a1",
+            "\u30c7\u3047\u30bf\u3041",
+            "\u30c7\u30a8\u30bf\u30a2",
+            "\u3072\u3086",
+            "\u3073\u3085\u3042",
+            "\u3074\u3085\u3042",
+            "\u3073\u3085\u3042\u30fc",
+            "\u30d3\u30e5\u30a2\u30fc",
+            "\u3074\u3085\u3042\u30fc",
+            "\u30d4\u30e5\u30a2\u30fc",
+            "\u30d2\u30e5\u30a6",
+            "\u30d2\u30e6\u30a6",
+            "\u30d4\u30e5\u30a6\u30a2",
+            "\u3073\u3085\u30fc\u3042\u30fc", 
+            "\u30d3\u30e5\u30fc\u30a2\u30fc",
+            "\u30d3\u30e5\u30a6\u30a2\u30fc",
+            "\u3072\u3085\u3093",
+            "\u3074\u3085\u3093",
+            "\u3075\u30fc\u308a",
+            "\u30d5\u30fc\u30ea",
+            "\u3075\u3045\u308a",
+            "\u3075\u30a5\u308a",
+            "\u3075\u30a5\u30ea",
+            "\u30d5\u30a6\u30ea",
+            "\u3076\u30fc\u308a",
+            "\u30d6\u30fc\u30ea",
+            "\u3076\u3045\u308a",
+            "\u30d6\u30a5\u308a",
+            "\u3077\u3046\u308a",
+            "\u30d7\u30a6\u30ea",
+            "\u3075\u30fc\u308a\u30fc",
+            "\u30d5\u30a5\u30ea\u30fc",
+            "\u3075\u30a5\u308a\u30a3",
+            "\u30d5\u3045\u308a\u3043",
+            "\u30d5\u30a6\u30ea\u30fc",
+            "\u3075\u3046\u308a\u3043",
+            "\u30d6\u30a6\u30ea\u30a4",
+            "\u3077\u30fc\u308a\u30fc",
+            "\u3077\u30a5\u308a\u30a4",
+            "\u3077\u3046\u308a\u30fc",
+            "\u30d7\u30a6\u30ea\u30a4",
+            "\u30d5\u30fd",
+            "\u3075\u309e",
+            "\u3076\u309d",
+            "\u3076\u3075",
+            "\u3076\u30d5",
+            "\u30d6\u3075",
+            "\u30d6\u30d5",
+            "\u3076\u309e",
+            "\u3076\u3077",
+            "\u30d6\u3077",
+            "\u3077\u309d",
+            "\u30d7\u30fd",
+            "\u3077\u3075",
+        };
+        
+        String test2[] = {
+            "\u306f\u309d", // H\u309d 
+            "\u30cf\u30fd", // K\u30fd 
+            "\u306f\u306f", // HH 
+            "\u306f\u30cf", // HK 
+            "\u30cf\u30cf", // KK 
+            "\u306f\u309e", // H\u309e 
+            "\u30cf\u30fe", // K\u30fe 
+            "\u306f\u3070", // HH\u309b 
+            "\u30cf\u30d0", // KK\u309b 
+            "\u306f\u3071", // HH\u309c 
+            "\u30cf\u3071", // KH\u309c 
+            "\u30cf\u30d1", // KK\u309c 
+            "\u3070\u309d", // H\u309b\u309d 
+            "\u30d0\u30fd", // K\u309b\u30fd 
+            "\u3070\u306f", // H\u309bH 
+            "\u30d0\u30cf", // K\u309bK 
+            "\u3070\u309e", // H\u309b\u309e 
+            "\u30d0\u30fe", // K\u309b\u30fe 
+            "\u3070\u3070", // H\u309bH\u309b 
+            "\u30d0\u3070", // K\u309bH\u309b 
+            "\u30d0\u30d0", // K\u309bK\u309b 
+            "\u3070\u3071", // H\u309bH\u309c 
+            "\u30d0\u30d1", // K\u309bK\u309c 
+            "\u3071\u309d", // H\u309c\u309d 
+            "\u30d1\u30fd", // K\u309c\u30fd 
+            "\u3071\u306f", // H\u309cH 
+            "\u30d1\u30cf", // K\u309cK 
+            "\u3071\u3070", // H\u309cH\u309b 
+            "\u3071\u30d0", // H\u309cK\u309b 
+            "\u30d1\u30d0", // K\u309cK\u309b
+            "\u3071\u3071", // H\u309cH\u309c
+            "\u30d1\u30d1", // K\u309cK\u309c
+        };
+        
+        String[] att = { "strength", };
+        Object[] val = { new Integer(Collator.QUATERNARY), };
+        
+        String[] attShifted = { "strength", "AlternateHandling"};
+        Object valShifted[] = { new Integer(Collator.QUATERNARY), 
+                                Boolean.TRUE };
+       
+        genericLocaleStarterWithOptions(Locale.JAPANESE, test1, att, val);
+        genericLocaleStarterWithOptions(Locale.JAPANESE, test2, att, val);
+        
+        genericLocaleStarterWithOptions(Locale.JAPANESE, test1, attShifted,
+                                        valShifted);
+        genericLocaleStarterWithOptions(Locale.JAPANESE, test2, attShifted,
+                                        valShifted);
+    }
+    
+    void genericLocaleStarter(Locale locale, String s[]) {
+        RuleBasedCollator coll = null;
+        try {
+            coll = (RuleBasedCollator)Collator.getInstance(locale);
+            
+        } catch (Exception e) {
+            warnln("Unable to open collator for locale " + locale);
+            return;
+        }
+        // logln("Locale starter for " + locale);
+        genericOrderingTest(coll, s);
+    }
+    
+    void genericLocaleStarterWithOptions(Locale locale, String[] s, String[] attrs, Object[] values) {
+        genericLocaleStarterWithOptionsAndResult(locale, s, attrs, values, -1);
+    }
+    
+    private void genericOptionsSetter(RuleBasedCollator coll, String[] attrs, Object[] values) {
+        for(int i = 0; i < attrs.length; i++) {
+            if (attrs[i].equals("strength")) {
+                coll.setStrength(((Integer)values[i]).intValue());
+            } 
+            else if (attrs[i].equals("decomp")) {
+                coll.setDecomposition(((Integer)values[i]).intValue());
+            } 
+            else if (attrs[i].equals("AlternateHandling")) {
+                coll.setAlternateHandlingShifted(((Boolean)values[i]
+                                                  ).booleanValue());
+            }
+            else if (attrs[i].equals("NumericCollation")) {
+                coll.setNumericCollation(((Boolean)values[i]).booleanValue());
+            }
+            else if (attrs[i].equals("UpperFirst")) {
+                coll.setUpperCaseFirst(((Boolean)values[i]).booleanValue());
+            }
+            else if (attrs[i].equals("LowerFirst")) {
+                coll.setLowerCaseFirst(((Boolean)values[i]).booleanValue());
+            }
+            else if (attrs[i].equals("CaseLevel")) {
+                coll.setCaseLevel(((Boolean)values[i]).booleanValue());
+            }
+        }        
+    }
+    
+    void genericLocaleStarterWithOptionsAndResult(Locale locale, String[] s, String[] attrs, Object[] values, int result) {
+        RuleBasedCollator coll = null;
+        try {
+            coll = (RuleBasedCollator)Collator.getInstance(locale);
+        } catch (Exception e) {
+            warnln("Unable to open collator for locale " + locale);
+            return;
+        }
+        // logln("Locale starter for " +locale);
+        
+        // logln("Setting attributes");
+        genericOptionsSetter(coll, attrs, values);
+        
+        genericOrderingTestWithResult(coll, s, result);
+    }
+    
+    void genericOrderingTest(Collator coll, String[] s) {
+        genericOrderingTestWithResult(coll, s, -1);
+    }
+    
+    public void TestNonChars() {
+        String test[] = {
+            "\u0000",
+            "\uFFFE", "\uFFFF",
+            "\\U0001FFFE", "\\U0001FFFF",
+            "\\U0002FFFE", "\\U0002FFFF",
+            "\\U0003FFFE", "\\U0003FFFF",
+            "\\U0004FFFE", "\\U0004FFFF",
+            "\\U0005FFFE", "\\U0005FFFF",
+            "\\U0006FFFE", "\\U0006FFFF",
+            "\\U0007FFFE", "\\U0007FFFF",
+            "\\U0008FFFE", "\\U0008FFFF",
+            "\\U0009FFFE", "\\U0009FFFF",
+            "\\U000AFFFE", "\\U000AFFFF",
+            "\\U000BFFFE", "\\U000BFFFF",
+            "\\U000CFFFE", "\\U000CFFFF",
+            "\\U000DFFFE", "\\U000DFFFF",
+            "\\U000EFFFE", "\\U000EFFFF",
+            "\\U000FFFFE", "\\U000FFFFF",
+            "\\U0010FFFE", "\\U0010FFFF"
+        };
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("Unable to open collator");
+            return;
+        }
+        // logln("Test non characters");
+        
+        genericOrderingTestWithResult(coll, test, 0);
+    }
+    
+    public void TestExtremeCompression() {
+        String[] test = new String[4];
+        
+        for(int i = 0; i<4; i++) {
+            StringBuffer temp = new StringBuffer();
+            for (int j = 0; j < 2047; j++) {
+                temp.append('a');
+            }
+            temp.append((char)('a' + i));
+            test[i] = temp.toString();
+        }
+        
+        genericLocaleStarter(new Locale("en", "US"), test);
+    }
+
+    /**
+     * Tests surrogate support.
+     */
+    public void TestSurrogates() {
+        String test[] = {"z","\ud900\udc25", "\ud805\udc50", "\ud800\udc00y",  
+                         "\ud800\udc00r", "\ud800\udc00f", "\ud800\udc00", 
+                         "\ud800\udc00c", "\ud800\udc00b", "\ud800\udc00fa", 
+                         "\ud800\udc00fb", "\ud800\udc00a", "c", "b"};
+
+        String rule = "&z < \ud900\udc25 < \ud805\udc50 < \ud800\udc00y "
+            + "< \ud800\udc00r < \ud800\udc00f << \ud800\udc00 "
+            + "< \ud800\udc00fa << \ud800\udc00fb < \ud800\udc00a " 
+            + "< c < b";
+        genericRulesStarter(rule, test);
+    }
+    
+    public void TestBocsuCoverage() {
+        String test = "\u0041\u0441\u4441\\U00044441\u4441\u0441\u0041";
+        Collator coll = Collator.getInstance();
+        coll.setStrength(Collator.IDENTICAL);
+        CollationKey key = coll.getCollationKey(test);
+        logln("source:" + key.getSourceString());
+    }
+    
+    public void TestCyrillicTailoring() {
+        String test[] = {
+            "\u0410b",
+            "\u0410\u0306a",
+            "\u04d0A"
+        };
+        genericLocaleStarter(new Locale("en", ""), test);
+        genericRulesStarter("&\u0410 = \u0410", test);
+        genericRulesStarter("&Z < \u0410", test);
+        genericRulesStarter("&\u0410 = \u0410 < \u04d0", test);
+        genericRulesStarter("&Z < \u0410 < \u04d0", test);
+        genericRulesStarter("&\u0410 = \u0410 < \u0410\u0301", test);
+        genericRulesStarter("&Z < \u0410 < \u0410\u0301", test);
+    }
+
+    public void TestSuppressContractions() {
+        String testNoCont2[] = {
+            "\u0410\u0302a",
+            "\u0410\u0306b",
+            "\u0410c"            
+        };
+        String testNoCont[] = {
+            "a\u0410",            
+            "A\u0410\u0306",
+            "\uFF21\u0410\u0302"
+        };
+            
+        genericRulesStarter("[suppressContractions [\u0400-\u047f]]", testNoCont);
+        genericRulesStarter("[suppressContractions [\u0400-\u047f]]", testNoCont2);
+    }
+        
+    public void TestCase() {
+        String gRules = "\u0026\u0030\u003C\u0031\u002C\u2460\u003C\u0061\u002C\u0041";
+        String[] testCase = {
+            "1a", "1A", "\u2460a", "\u2460A"
+        };
+        int[][] caseTestResults = {
+            { -1, -1, -1, 0, -1, -1, 0, 0, -1 },
+            { 1, -1, -1, 0, -1, -1, 0, 0, 1 },
+            { -1, -1, -1, 0, 1, -1, 0, 0, -1 },
+            { 1, -1, 1, 0, -1, -1, 0, 0, 1 }
+    
+        };
+        boolean[][] caseTestAttributes = {
+            { false, false},
+            { true, false},
+            { false, true},
+            { true, true}
+        };
+        
+        int i,j,k;
+        Collator  myCollation;
+        try {
+            myCollation = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of rule based collator ");
+            return;
+        }
+        // logln("Testing different case settings");
+        myCollation.setStrength(Collator.TERTIARY);
+    
+        for(k = 0; k <4; k++) {
+            if (caseTestAttributes[k][0] == true) {
+                // upper case first
+                ((RuleBasedCollator)myCollation).setUpperCaseFirst(true);
+            }
+            else {
+                // upper case first
+                ((RuleBasedCollator)myCollation).setLowerCaseFirst(true);   
+            }
+            ((RuleBasedCollator)myCollation).setCaseLevel(
+                                                          caseTestAttributes[k][1]);
+          
+            // logln("Case first = " + caseTestAttributes[k][0] + ", Case level = " + caseTestAttributes[k][1]);
+            for (i = 0; i < 3 ; i++) {
+                for(j = i+1; j<4; j++) {
+                    CollationTest.doTest(this, 
+                                         (RuleBasedCollator)myCollation, 
+                                         testCase[i], testCase[j], 
+                                         caseTestResults[k][3*i+j-1]);
+                }
+            }
+        }
+        try {
+            myCollation = new RuleBasedCollator(gRules);
+        } catch (Exception e) {
+            warnln("ERROR: in creation of rule based collator");
+            return;
+        }
+        // logln("Testing different case settings with custom rules");
+        myCollation.setStrength(Collator.TERTIARY);
+    
+        for(k = 0; k<4; k++) {
+            if (caseTestAttributes[k][0] == true) {
+                ((RuleBasedCollator)myCollation).setUpperCaseFirst(true);
+            }
+            else {
+                ((RuleBasedCollator)myCollation).setUpperCaseFirst(false);
+            }
+            ((RuleBasedCollator)myCollation).setCaseLevel(
+                                                          caseTestAttributes[k][1]);
+            for (i = 0; i < 3 ; i++) {
+                for(j = i+1; j<4; j++) {
+                    CollationTest.doTest(this, 
+                                         (RuleBasedCollator)myCollation, 
+                                         testCase[i], testCase[j], 
+                                         caseTestResults[k][3*i+j-1]);
+                }
+            }
+        }
+
+        {
+            String[] lowerFirst = {
+                "h",
+                "H",
+                "ch",
+                "Ch",
+                "CH",
+                "cha",
+                "chA",
+                "Cha",
+                "ChA",
+                "CHa",
+                "CHA",
+                "i",
+                "I"
+            };
+    
+            String[] upperFirst = {
+                "H",
+                "h",
+                "CH",
+                "Ch",
+                "ch",
+                "CHA",
+                "CHa",
+                "ChA",
+                "Cha",
+                "chA",
+                "cha",
+                "I",
+                "i"
+            };
+            // logln("mixed case test");
+            // logln("lower first, case level off");
+            genericRulesStarter("[casefirst lower]&H<ch<<<Ch<<<CH", lowerFirst); 
+            // logln("upper first, case level off");
+            genericRulesStarter("[casefirst upper]&H<ch<<<Ch<<<CH", upperFirst);
+            // logln("lower first, case level on");
+            genericRulesStarter("[casefirst lower][caselevel on]&H<ch<<<Ch<<<CH", lowerFirst);
+            // logln("upper first, case level on");
+            genericRulesStarter("[casefirst upper][caselevel on]&H<ch<<<Ch<<<CH", upperFirst);
+        }
+    }
+
+    public void TestIncompleteCnt() {
+        String[] cnt1 = {
+            "AA",
+            "AC",
+            "AZ",
+            "AQ",
+            "AB",
+            "ABZ",
+            "ABQ",
+            "Z",
+            "ABC",
+            "Q",
+            "B"
+        };
+            
+        String[] cnt2 = {
+            "DA",
+            "DAD",
+            "DAZ",
+            "MAR",
+            "Z",
+            "DAVIS",
+            "MARK",
+            "DAV",
+            "DAVI"
+        };
+        RuleBasedCollator coll =  null;
+        String temp = " & Z < ABC < Q < B";
+        try {
+            coll = new RuleBasedCollator(temp);
+        } catch (Exception e) {
+            warnln("fail to create RuleBasedCollator");
+            return;
+        }
+        
+        int size = cnt1.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                String t1 = cnt1[i];
+                String t2 = cnt1[j];
+                CollationTest.doTest(this, coll, t1, t2, -1);
+            }
+        }
+        
+        temp = " & Z < DAVIS < MARK <DAV";
+        try {
+            coll = new RuleBasedCollator(temp);
+        } catch (Exception e) {
+            warnln("fail to create RuleBasedCollator");
+            return;
+        }
+        
+        size = cnt2.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                String t1 = cnt2[i];
+                String t2 = cnt2[j];
+                CollationTest.doTest(this, coll, t1, t2, -1);
+            }
+        }
+    }
+        
+    public void TestBlackBird() {
+        String[] shifted = {
+            "black bird",
+            "black-bird",
+            "blackbird",
+            "black Bird",
+            "black-Bird",
+            "blackBird",
+            "black birds",
+            "black-birds",
+            "blackbirds"
+        };
+        int[] shiftedTert = {
+            0,
+            0,
+            0,
+            -1,
+            0,
+            0,
+            -1,
+            0,
+            0
+        };
+        String[] nonignorable = {
+            "black bird",
+            "black Bird",
+            "black birds",
+            "black-bird",
+            "black-Bird",
+            "black-birds",
+            "blackbird",
+            "blackBird",
+            "blackbirds"
+        };
+        int i = 0, j = 0;
+        int size = 0;
+        Collator coll = Collator.getInstance(new Locale("en", "US"));
+        //ucol_setAttribute(coll, UCOL_NORMALIZATION_MODE, UCOL_OFF, &status);
+        //ucol_setAttribute(coll, UCOL_ALTERNATE_HANDLING, UCOL_NON_IGNORABLE, &status);
+        ((RuleBasedCollator)coll).setAlternateHandlingShifted(false);
+        size = nonignorable.length;
+        for(i = 0; i < size-1; i++) {
+            for(j = i+1; j < size; j++) {
+                String t1 = nonignorable[i];
+                String t2 = nonignorable[j];
+                CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, -1);
+            }
+        }
+        ((RuleBasedCollator)coll).setAlternateHandlingShifted(true);
+        coll.setStrength(Collator.QUATERNARY);
+        size = shifted.length;
+        for(i = 0; i < size-1; i++) {
+            for(j = i+1; j < size; j++) {
+                String t1 = shifted[i];
+                String t2 = shifted[j];
+                CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, -1);
+            }
+        }
+        coll.setStrength(Collator.TERTIARY);
+        size = shifted.length;
+        for(i = 1; i < size; i++) {
+            String t1 = shifted[i-1];
+            String t2 = shifted[i];
+            CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, 
+                                 shiftedTert[i]);
+        }
+    }
+    
+    public void TestFunkyA() {
+        String[] testSourceCases = {
+            "\u0041\u0300\u0301",
+            "\u0041\u0300\u0316",
+            "\u0041\u0300",
+            "\u00C0\u0301",
+            // this would work with forced normalization 
+            "\u00C0\u0316",
+        };
+        
+        String[] testTargetCases = {
+            "\u0041\u0301\u0300",
+            "\u0041\u0316\u0300",
+            "\u00C0",
+            "\u0041\u0301\u0300",
+            // this would work with forced normalization 
+            "\u0041\u0316\u0300",
+        };
+        
+        int[] results = {
+            1,
+            0,
+            0,
+            1,
+            0
+        };
+
+        Collator  myCollation;
+        try {
+            myCollation = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of rule based collator");
+            return;
+        }
+        // logln("Testing some A letters, for some reason");
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        myCollation.setStrength(Collator.TERTIARY);
+        for (int i = 0; i < 4 ; i++)
+            {
+                CollationTest.doTest(this, (RuleBasedCollator)myCollation, 
+                                     testSourceCases[i], testTargetCases[i], 
+                                     results[i]);
+            }
+    }
+    
+    public void TestChMove() {
+        String[] chTest = {
+            "c",
+            "C",
+            "ca", "cb", "cx", "cy", "CZ",
+            "c\u030C", "C\u030C",
+            "h",
+            "H",
+            "ha", "Ha", "harly", "hb", "HB", "hx", "HX", "hy", "HY",
+            "ch", "cH", "Ch", "CH",
+            "cha", "charly", "che", "chh", "chch", "chr",
+            "i", "I", "iarly",
+            "r", "R",
+            "r\u030C", "R\u030C",
+            "s",
+            "S",
+            "s\u030C", "S\u030C",
+            "z", "Z",
+            "z\u030C", "Z\u030C"
+        };
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(new Locale("cs", ""));
+        } catch (Exception e) {
+            warnln("Cannot create Collator");
+            return;
+        }
+        int size = chTest.length;
+        for(int i = 0; i < size-1; i++) {
+            for(int j = i+1; j < size; j++) {
+                String t1 = chTest[i];
+                String t2 = chTest[j];
+                CollationTest.doTest(this, (RuleBasedCollator)coll, t1, t2, -1);
+            }
+        }
+    }
+    
+    public void TestImplicitTailoring() {
+        String rules[] = { "&[before 1]\u4e00 < b < c &[before 1]\u4e00 < d < e",
+                           "&\u4e00 < a <<< A < b <<< B",
+                           "&[before 1]\u4e00 < \u4e01 < \u4e02",
+                           "&[before 1]\u4e01 < \u4e02 < \u4e03",
+        };
+        String cases[][] = {
+            { "d", "e", "b", "c", "\u4e00"}, 
+            { "\u4e00", "a", "A", "b", "B", "\u4e01"},
+            { "\u4e01", "\u4e02", "\u4e00"},
+            { "\u4e02", "\u4e03", "\u4e01"},
+        };
+        
+        int i = 0;
+        
+        for(i = 0; i < rules.length; i++) {
+            genericRulesStarter(rules[i], cases[i]);
+        }
+        
+    }
+
+    public void TestFCDProblem() {
+        String s1 = "\u0430\u0306\u0325";
+        String s2 = "\u04D1\u0325";
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance();
+        } catch (Exception e) {
+            warnln("Can't create collator");
+            return;
+        }
+        
+        coll.setDecomposition(Collator.NO_DECOMPOSITION);
+        CollationTest.doTest(this, (RuleBasedCollator)coll, s1, s2, 0);
+        coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        CollationTest.doTest(this, (RuleBasedCollator)coll, s1, s2, 0);
+    }
+    
+    public void TestEmptyRule() {
+        String rulez = "";
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rulez);
+            logln("rule:" + coll.getRules());
+        } catch (Exception e) {
+            warnln(e.getMessage());
+        }
+    }
+    
+    /* superseded by TestBeforePinyin, since Chinese collation rules have changed */
+    /*
+    public void TestJ784() {
+        String[] data = {
+            "A", "\u0101", "\u00e1", "\u01ce", "\u00e0",
+            "E", "\u0113", "\u00e9", "\u011b", "\u00e8",
+            "I", "\u012b", "\u00ed", "\u01d0", "\u00ec",
+            "O", "\u014d", "\u00f3", "\u01d2", "\u00f2",
+            "U", "\u016b", "\u00fa", "\u01d4", "\u00f9",
+            "\u00fc", "\u01d6", "\u01d8", "\u01da", "\u01dc"
+        };
+        genericLocaleStarter(new Locale("zh", ""), data);
+    }
+    */
+    
+    public void TestJ815() {
+        String data[] = {
+            "aa",
+            "Aa",
+            "ab",
+            "Ab",
+            "ad",
+            "Ad",
+            "ae",
+            "Ae",
+            "\u00e6",
+            "\u00c6",
+            "af",
+            "Af",
+            "b",
+            "B"
+        };
+        genericLocaleStarter(new Locale("fr", ""), data);
+        genericRulesStarter("[backwards 2]&A<<\u00e6/e<<<\u00c6/E", data);
+    }
+    
+    public void TestJ3087()
+    {
+        String rule[] = {"&h<H&CH=\u0427",
+                         "&CH=\u0427&h<H",
+                         "&CH=\u0427"}; 
+        RuleBasedCollator rbc = null;
+        CollationElementIterator iter1;
+        CollationElementIterator iter2;
+        for (int i = 0; i < rule.length; i ++) {
+            try {
+                rbc = new RuleBasedCollator(rule[i]); 
+            } catch (Exception e) {
+                warnln(e.getMessage());
+                return;
+            }
+            iter1 = rbc.getCollationElementIterator("CH"); 
+            iter2 = rbc.getCollationElementIterator("\u0427");
+            int ce1 = CollationElementIterator.IGNORABLE;
+            int ce2 = CollationElementIterator.IGNORABLE;
+            while (ce1 != CollationElementIterator.NULLORDER
+                   && ce2 != CollationElementIterator.NULLORDER) {
+                ce1 = iter1.next();
+                ce2 = iter2.next();
+                if (ce1 != ce2) {
+                    errln("Error generating RuleBasedCollator with the rule "
+                          + rule[i]);
+                    errln("CH != \\u0427");
+                }
+            }
+        }
+    }
+    
+    public void DontTestJ831() { // Latvian does not use upper first
+        String[] data = {
+            "I",
+            "i",
+            "Y",
+            "y"
+        };
+        genericLocaleStarter(new Locale("lv", ""), data);
+    }
+    
+    public void TestBefore() {
+        String data[] = {
+            "\u0101", "\u00e1", "\u01ce", "\u00e0", "A",
+            "\u0113", "\u00e9", "\u011b", "\u00e8", "E",
+            "\u012b", "\u00ed", "\u01d0", "\u00ec", "I",
+            "\u014d", "\u00f3", "\u01d2", "\u00f2", "O",
+            "\u016b", "\u00fa", "\u01d4", "\u00f9", "U",
+            "\u01d6", "\u01d8", "\u01da", "\u01dc", "\u00fc"
+        };
+        genericRulesStarter(
+                            "&[before 1]a<\u0101<\u00e1<\u01ce<\u00e0"
+                            + "&[before 1]e<\u0113<\u00e9<\u011b<\u00e8"
+                            + "&[before 1]i<\u012b<\u00ed<\u01d0<\u00ec"
+                            + "&[before 1]o<\u014d<\u00f3<\u01d2<\u00f2"
+                            + "&[before 1]u<\u016b<\u00fa<\u01d4<\u00f9"
+                            + "&u<\u01d6<\u01d8<\u01da<\u01dc<\u00fc", data);
+    }
+
+    public void TestRedundantRules() {
+        String[] rules = {
+            //"& a <<< b <<< c << d <<< e& [before 1] e <<< x",
+            "& b <<< c <<< d << e <<< f& [before 3] f <<< x",
+            "& a < b <<< c << d <<< e& [before 1] e <<< x",
+            "& a < b < c < d& [before 1] c < m",
+            "& a < b <<< c << d <<< e& [before 3] e <<< x",
+            "& a < b <<< c << d <<< e& [before 2] e <<< x",
+            "& a < b <<< c << d <<< e <<< f < g& [before 1] g < x",
+            "& a <<< b << c < d& a < m",
+            "&a<b<<b\u0301 &z<b",
+            "&z<m<<<q<<<m",
+            "&z<<<m<q<<<m",
+            "& a < b < c < d& r < c",
+            "& a < b < c < d& r < c",
+            "& a < b < c < d& c < m",
+            "& a < b < c < d& a < m"
+        };
+        
+        String[] expectedRules = {
+            //"&\u2089<<<x",
+            "&\u0252<<<x",
+            "& a <<< x < b <<< c << d <<< e",
+            "& a < b < m < c < d",
+            "& a < b <<< c << d <<< x <<< e",
+            "& a < b <<< c <<< x << d <<< e",
+            "& a < b <<< c << d <<< e <<< f < x < g",
+            "& a <<< b << c < m < d",
+            "&a<b\u0301 &z<b",
+            "&z<q<<<m",
+            "&z<q<<<m",
+            "& a < b < d& r < c",
+            "& a < b < d& r < c",
+            "& a < b < c < m < d",
+            "& a < m < b < c < d"
+        };
+        
+        String[][] testdata = {
+            //            {"\u2089", "x"},
+            {"\u0252", "x"},
+            {"a", "x", "b", "c", "d", "e"},
+            {"a", "b", "m", "c", "d"},
+            {"a", "b", "c", "d", "x", "e"},
+            {"a", "b", "c", "x", "d", "e"},
+            {"a", "b", "c", "d", "e", "f", "x", "g"},
+            {"a", "b", "c", "m", "d"},
+            {"a", "b\u0301", "z", "b"},
+            {"z", "q", "m"},
+            {"z", "q", "m"},
+            {"a", "b", "d"},
+            {"r", "c"},
+            {"a", "b", "c", "m", "d"},
+            {"a", "m", "b", "c", "d"}
+        };
+        
+        String rlz = "";
+        for(int i = 0; i<rules.length; i++) {
+            logln("testing rule " + rules[i] + ", expected to be" + expectedRules[i]);
+            try {
+                rlz = rules[i];
+                Collator credundant = new RuleBasedCollator(rlz);
+                rlz = expectedRules[i];
+                Collator cresulting = new RuleBasedCollator(rlz);
+                logln(" credundant Rule:" + ((RuleBasedCollator)credundant).getRules());
+                logln(" cresulting Rule:" + ((RuleBasedCollator)cresulting).getRules());
+            } catch (Exception e) {
+                warnln("Cannot create RuleBasedCollator");
+            }
+            //testAgainstUCA(cresulting, credundant, "expected", TRUE, &status);
+            // logln("testing using data\n");
+            genericRulesStarter(rules[i], testdata[i]);
+        }
+    }
+    
+    public void TestExpansionSyntax() {
+        String[] rules = {
+            "&AE <<< a << b <<< c &d <<< f",
+            "&AE <<< a <<< b << c << d < e < f <<< g",
+            "&AE <<< B <<< C / D <<< F"
+        };
+        
+        String[] expectedRules = {
+            "&A <<< a / E << b / E <<< c /E  &d <<< f",
+            "&A <<< a / E <<< b / E << c / E << d / E < e < f <<< g",
+            "&A <<< B / E <<< C / ED <<< F / E"
+        };
+        
+        String[][] testdata = {
+            {"AE", "a", "b", "c"},
+            {"AE", "a", "b", "c", "d", "e", "f", "g"},
+            {"AE", "B", "C"} // / ED <<< F / E"},
+        };
+        
+        for(int i = 0; i<rules.length; i++) {
+            // logln("testing rule " + rules[i] + ", expected to be " + expectedRules[i]);
+            try {
+                String rlz = rules[i];
+                Collator credundant = new RuleBasedCollator(rlz);
+                rlz = expectedRules[i];
+                Collator cresulting = new RuleBasedCollator(rlz);
+                logln(" credundant Rule:" + ((RuleBasedCollator)credundant).getRules());
+                logln(" cresulting Rule:" + ((RuleBasedCollator)cresulting).getRules());
+            } catch (Exception e) {
+                warnln(e.getMessage());
+            }
+            // testAgainstUCA still doesn't handle expansions correctly, so this is not run 
+            // as a hard error test, but only in information mode 
+            //testAgainstUCA(cresulting, credundant, "expected", FALSE, &status);
+            
+            // logln("testing using data");
+            genericRulesStarter(rules[i], testdata[i]);
+        }
+    }
+
+    public void TestHangulTailoring() {
+        String[] koreanData = {
+            "\uac00", "\u4f3d", "\u4f73", "\u5047", "\u50f9", "\u52a0", "\u53ef", "\u5475",
+            "\u54e5", "\u5609", "\u5ac1", "\u5bb6", "\u6687", "\u67b6", "\u67b7", "\u67ef",
+            "\u6b4c", "\u73c2", "\u75c2", "\u7a3c", "\u82db", "\u8304", "\u8857", "\u8888",
+            "\u8a36", "\u8cc8", "\u8dcf", "\u8efb", "\u8fe6", "\u99d5",
+            "\u4EEE", "\u50A2", "\u5496", "\u54FF", "\u5777", "\u5B8A", "\u659D", "\u698E",
+            "\u6A9F", "\u73C8", "\u7B33", "\u801E", "\u8238", "\u846D", "\u8B0C"
+        };
+        
+        String rules =
+            "&\uac00 <<< \u4f3d <<< \u4f73 <<< \u5047 <<< \u50f9 <<< \u52a0 <<< \u53ef <<< \u5475 "
+            + "<<< \u54e5 <<< \u5609 <<< \u5ac1 <<< \u5bb6 <<< \u6687 <<< \u67b6 <<< \u67b7 <<< \u67ef "
+            + "<<< \u6b4c <<< \u73c2 <<< \u75c2 <<< \u7a3c <<< \u82db <<< \u8304 <<< \u8857 <<< \u8888 "
+            + "<<< \u8a36 <<< \u8cc8 <<< \u8dcf <<< \u8efb <<< \u8fe6 <<< \u99d5 "
+            + "<<< \u4EEE <<< \u50A2 <<< \u5496 <<< \u54FF <<< \u5777 <<< \u5B8A <<< \u659D <<< \u698E "
+            + "<<< \u6A9F <<< \u73C8 <<< \u7B33 <<< \u801E <<< \u8238 <<< \u846D <<< \u8B0C";
+        
+        String rlz = rules;
+        
+        Collator coll = null;
+        try {
+            coll = new RuleBasedCollator(rlz);
+        } catch (Exception e) {
+            warnln("Unable to open collator with rules" + rules);
+            return;
+        }
+        // logln("Using start of korean rules\n");
+        genericOrderingTest(coll, koreanData);
+        // logln("Setting jamoSpecial to TRUE and testing once more\n");
+        
+        // can't set jamo in icu4j 
+        // ((UCATableHeader *)coll->image)->jamoSpecial = TRUE; // don't try this at home
+        // genericOrderingTest(coll, koreanData);
+        
+        // no such locale in icu4j
+        // logln("Using ko__LOTUS locale\n");
+        // genericLocaleStarter(new Locale("ko__LOTUS", ""), koreanData);
+    }
+
+    public void TestIncrementalNormalize() {
+        Collator        coll = null;
+        // logln("Test 1 ....");
+        {
+            /* Test 1.  Run very long unnormalized strings, to force overflow of*/
+            /*          most buffers along the way.*/
+            
+            try {
+                coll = Collator.getInstance(new Locale("en", "US"));
+            } catch (Exception e) {
+                warnln("Cannot get default instance!");
+                return;
+            }
+            char baseA     =0x41;
+            char ccMix[]   = {0x316, 0x321, 0x300};
+            int          sLen;
+            int          i;
+            StringBuffer strA = new StringBuffer();
+            StringBuffer strB = new StringBuffer();
+            
+            coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            
+            for (sLen = 1000; sLen<1001; sLen++) {
+                strA.delete(0, strA.length());
+                strA.append(baseA);
+                strB.delete(0, strB.length());
+                strB.append(baseA);
+                for (i=1; i< sLen; i++) {
+                    strA.append(ccMix[i % 3]);
+                    strB.insert(1, ccMix[i % 3]);
+                }
+                coll.setStrength(Collator.TERTIARY);   // Do test with default strength, which runs
+                CollationTest.doTest(this, (RuleBasedCollator)coll, 
+                                     strA.toString(), strB.toString(), 0);    //   optimized functions in the impl
+                coll.setStrength(Collator.IDENTICAL);   // Do again with the slow, general impl.
+                CollationTest.doTest(this, (RuleBasedCollator)coll, 
+                                     strA.toString(), strB.toString(), 0);
+            }
+        }
+        /*  Test 2:  Non-normal sequence in a string that extends to the last character*/
+        /*         of the string.  Checks a couple of edge cases.*/
+        // logln("Test 2 ....");    
+        {
+            String strA = "AA\u0300\u0316";
+            String strB = "A\u00c0\u0316";
+            coll.setStrength(Collator.TERTIARY);
+            CollationTest.doTest(this, (RuleBasedCollator)coll, strA, strB, 0);
+        }
+        /*  Test 3:  Non-normal sequence is terminated by a surrogate pair.*/
+        // logln("Test 3 ....");
+        {
+            String strA = "AA\u0300\u0316\uD800\uDC01";
+            String strB = "A\u00c0\u0316\uD800\uDC00";
+            coll.setStrength(Collator.TERTIARY);
+            CollationTest.doTest(this, (RuleBasedCollator)coll, strA, strB, 1);
+        }
+        /*  Test 4:  Imbedded nulls do not terminate a string when length is specified.*/
+        // logln("Test 4 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+         char strA[] = {0x41, 0x00, 0x42};
+         char strB[] = {0x41, 0x00, 0x00};
+            
+         int result = coll.compare(new String(strA), new String(strB));
+         if (result != 1) {
+         errln("ERROR 1 in test 4\n");
+         }
+            
+         result = coll.compare(new String(strA, 0, 1), new String(strB, 0, 1));
+         if (result != 0) {
+         errln("ERROR 1 in test 4\n");
+         }
+            
+         CollationKey sortKeyA = coll.getCollationKey(new String(strA));
+         CollationKey sortKeyB = coll.getCollationKey(new String(strB));
+            
+         int r = sortKeyA.compareTo(sortKeyB);
+         if (r <= 0) {
+         errln("Error 4 in test 4\n");
+         }
+    
+         coll.setStrength(Collator.IDENTICAL);
+         sortKeyA = coll.getCollationKey(new String(strA));
+         sortKeyB = coll.getCollationKey(new String(strB));
+    
+         r = sortKeyA.compareTo(sortKeyB);
+         if (r <= 0) {
+         errln("Error 7 in test 4\n");
+         }
+            
+         coll.setStrength(Collator.TERTIARY);
+         }
+        */
+        /*  Test 5:  Null characters in non-normal source strings.*/
+        // logln("Test 5 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+         {
+         char strA[] = {0x41, 0x41, 0x300, 0x316, 0x00, 0x42,};
+         char strB[] = {0x41, 0x41, 0x300, 0x316, 0x00, 0x00,};
+           
+    
+         int result = coll.compare(new String(strA, 0, 6), new String(strB, 0, 6));
+         if (result < 0) {
+         errln("ERROR 1 in test 5\n");
+         }
+         result = coll.compare(new String(strA, 0, 4), new String(strB, 0, 4));
+         if (result != 0) {
+         errln("ERROR 2 in test 5\n");
+         }
+    
+         CollationKey sortKeyA = coll.getCollationKey(new String(strA));
+         CollationKey sortKeyB = coll.getCollationKey(new String(strB));
+         int r = sortKeyA.compareTo(sortKeyB);
+         if (r <= 0) {
+         errln("Error 4 in test 5\n");
+         }
+    
+         coll.setStrength(Collator.IDENTICAL);
+            
+         sortKeyA = coll.getCollationKey(new String(strA));
+         sortKeyB = coll.getCollationKey(new String(strB));
+         r = sortKeyA.compareTo(sortKeyB);
+         if (r <= 0) {
+         errln("Error 7 in test 5\n");
+         }
+            
+         coll.setStrength(Collator.TERTIARY);
+         }
+        */
+        /*  Test 6:  Null character as base of a non-normal combining sequence.*/
+        // logln("Test 6 ....");
+        /*
+         * not a valid test since string are null-terminated in java{
+         {
+         char strA[] = {0x41, 0x0, 0x300, 0x316, 0x41, 0x302,};
+         char strB[] = {0x41, 0x0, 0x302, 0x316, 0x41, 0x300,};
+    
+         int result = coll.compare(new String(strA, 0, 5), new String(strB, 0, 5));
+         if (result != -1) {
+         errln("Error 1 in test 6\n");
+         }
+         result = coll.compare(new String(strA, 0, 1), new String(strB, 0, 1));
+         if (result != 0) {
+         errln("Error 2 in test 6\n");
+         }
+         }
+        */
+    }
+    
+    public void TestContraction() {
+        String[] testrules = {
+            "&A = AB / B",
+            "&A = A\\u0306/\\u0306",
+            "&c = ch / h",
+        };
+        String[] testdata = {
+            "AB", "AB", "A\u0306", "ch"
+        };
+        String[] testdata2 = {
+            "\u0063\u0067",
+            "\u0063\u0068",
+            "\u0063\u006C",
+        };
+        String[] testrules3 = {
+            "&z < xyz &xyzw << B",
+            "&z < xyz &xyz << B / w",
+            "&z < ch &achm << B",
+            "&z < ch &a << B / chm",
+            "&\ud800\udc00w << B",
+            "&\ud800\udc00 << B / w",
+            "&a\ud800\udc00m << B",
+            "&a << B / \ud800\udc00m",
+        };
+    
+        RuleBasedCollator  coll = null;
+        for (int i = 0; i < testrules.length; i ++) {
+            CollationElementIterator iter1 = null;
+            int j = 0;
+            // logln("Rule " + testrules[i] + " for testing\n");
+            String rule = testrules[i];
+            try {
+                coll = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                warnln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            try {
+                iter1 = coll.getCollationElementIterator(testdata[i]);
+            } catch (Exception e) {
+                errln("Collation iterator creation failed\n");
+                return;
+            }
+            while (j < 2) {
+                CollationElementIterator iter2;
+                int ce;
+                try {
+                    iter2 = coll.getCollationElementIterator(String.valueOf(testdata[i].charAt(j)));
+                
+                }catch (Exception e) {
+                    errln("Collation iterator creation failed\n");
+                    return;
+                }
+                ce = iter2.next();
+                while (ce != CollationElementIterator.NULLORDER) {
+                    if (iter1.next() != ce) {
+                        errln("Collation elements in contraction split does not match\n");
+                        return;
+                    }
+                    ce = iter2.next();
+                }
+                j ++;
+            }
+            if (iter1.next() != CollationElementIterator.NULLORDER) {
+                errln("Collation elements not exhausted\n");
+                return;
+            }
+        }
+        String rule = "& a < b < c < ch < d & c = ch / h";
+        try {
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("cannot create rulebased collator");
+            return;
+        }
+        
+        if (coll.compare(testdata2[0], testdata2[1]) != -1) {
+            errln("Expected " + testdata2[0] + " < " + testdata2[1]);
+            return;
+        }
+        if (coll.compare(testdata2[1], testdata2[2]) != -1) {
+            errln("Expected " + testdata2[1] + " < " + testdata2[2]);
+            return;
+        }
+        for (int i = 0; i < testrules3.length; i += 2) {
+            RuleBasedCollator          coll1, coll2;
+            CollationElementIterator iter1, iter2;
+            char               ch = 0x0042;
+            int            ce;
+            rule = testrules3[i];
+            try {
+                coll1 = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                errln("Fail: cannot create rulebased collator, rule:" + rule);
+                return;
+            }
+            rule = testrules3[i + 1];
+            try {
+                coll2 = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                errln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            try {
+                iter1 = coll1.getCollationElementIterator(String.valueOf(ch));
+                iter2 = coll2.getCollationElementIterator(String.valueOf(ch));
+            } catch (Exception e) {
+                errln("Collation iterator creation failed\n");
+                return;
+            }
+            ce = iter1.next();
+            
+            while (ce != CollationElementIterator.NULLORDER) {
+                if (ce != iter2.next()) {
+                    errln("CEs does not match\n");
+                    return;
+                }
+                ce = iter1.next();
+            }
+            if (iter2.next() != CollationElementIterator.NULLORDER) {
+                errln("CEs not exhausted\n");
+                return;
+            }
+        }
+    }
+    
+    public void TestExpansion() {
+        String[] testrules = {
+            "&J << K / B & K << M",
+            "&J << K / B << M"
+        };
+        String[] testdata = {
+            "JA", "MA", "KA", "KC", "JC", "MC",
+        };
+        
+        Collator  coll;
+        for (int i = 0; i < testrules.length; i++) {
+            // logln("Rule " + testrules[i] + " for testing\n");
+            String rule = testrules[i];
+            try {
+                coll = new RuleBasedCollator(rule);
+            } catch (Exception e) {
+                warnln("Collator creation failed " + testrules[i]);
+                return;
+            }
+            
+            for (int j = 0; j < 5; j ++) {
+                CollationTest.doTest(this, (RuleBasedCollator)coll, 
+                                     testdata[j], testdata[j + 1], -1);
+            }
+        }
+    }
+    
+    public void TestContractionEndCompare()
+    {
+        String rules = "&b=ch";
+        String src = "bec";
+        String tgt = "bech";
+        Collator coll = null;
+        try {
+            coll = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            warnln("Collator creation failed " + rules);
+            return;
+        }
+        CollationTest.doTest(this, (RuleBasedCollator)coll, src, tgt, 1);
+    }
+    
+    public void TestLocaleRuleBasedCollators() {
+        if (getInclusion() < 5) {
+            // not serious enough to run this
+            return;
+        }
+        Locale locale[] = Collator.getAvailableLocales();
+        String prevrule = null;
+        for (int i = 0; i < locale.length; i ++) {
+            Locale l = locale[i];
+            try {
+                ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,l);
+                String collkey = rb.getStringWithFallback("collations/default"); 
+                ICUResourceBundle elements = rb.getWithFallback("collations/" + collkey);
+                if (elements == null) {
+                    continue;
+                }
+                String rule = null;
+                /*
+                  Object[][] colldata = (Object[][])elements;
+                  // %%CollationBin
+                  if (colldata[0][1] instanceof byte[]){
+                  rule = (String)colldata[1][1];
+                  }
+                  else {
+                  rule = (String)colldata[0][1];
+                  }
+                */
+                rule = elements.getString("Sequence");   
+
+                RuleBasedCollator col1 = 
+                    (RuleBasedCollator)Collator.getInstance(l);
+                if (!rule.equals(col1.getRules())) {
+                    errln("Rules should be the same in the RuleBasedCollator and Locale");
+                }
+                if (rule != null && rule.length() > 0 
+                    && !rule.equals(prevrule)) {
+                    RuleBasedCollator col2 = new RuleBasedCollator(rule);
+                    if (!col1.equals(col2)) {
+                        errln("Error creating RuleBasedCollator from " +
+                              "locale rules for " + l.toString());
+                    }
+                }
+                prevrule = rule;
+            } catch (Exception e) {
+                warnln("Error retrieving resource bundle for testing: " + e.toString());
+            }
+        }
+    }
+    
+    public void TestOptimize() {
+        /* this is not really a test - just trying out 
+         * whether copying of UCA contents will fail 
+         * Cannot really test, since the functionality 
+         * remains the same.
+         */
+        String rules[] = {
+            "[optimize [\\uAC00-\\uD7FF]]"
+        };
+        String data[][] = {
+            { "a", "b"}
+        };
+        int i = 0;
+    
+        for(i = 0; i<rules.length; i++) {
+            genericRulesStarter(rules[i], data[i]);
+        }
+    }    
+    
+    public void TestIdenticalCompare() 
+    {    
+        try {
+            RuleBasedCollator coll 
+                = new RuleBasedCollator("& \uD800\uDC00 = \uD800\uDC01");
+            String strA = "AA\u0300\u0316\uD800\uDC01";
+            String strB = "A\u00c0\u0316\uD800\uDC00";
+            coll.setStrength(Collator.IDENTICAL);
+            CollationTest.doTest(this, coll, strA, strB, 1);
+        } catch (Exception e) {
+            warnln(e.getMessage());
+        }
+    }
+    
+    public void TestMergeSortKeys() 
+    {
+        String cases[] = {"abc", "abcd", "abcde"};
+        String prefix = "foo";
+        String suffix = "egg";
+        CollationKey mergedPrefixKeys[] = new CollationKey[cases.length];
+        CollationKey mergedSuffixKeys[] = new CollationKey[cases.length];
+        
+        Collator coll = Collator.getInstance(Locale.ENGLISH);
+        genericLocaleStarter(Locale.ENGLISH, cases);
+        
+        int strength = Collator.PRIMARY;
+        while (strength <= Collator.IDENTICAL) {
+            coll.setStrength(strength);
+            CollationKey prefixKey = coll.getCollationKey(prefix);
+            CollationKey suffixKey = coll.getCollationKey(suffix);
+            for (int i = 0; i < cases.length; i ++) {
+                CollationKey key = coll.getCollationKey(cases[i]);
+                mergedPrefixKeys[i] = prefixKey.merge(key);
+                mergedSuffixKeys[i] = suffixKey.merge(key);
+                if (mergedPrefixKeys[i].getSourceString() != null
+                    || mergedSuffixKeys[i].getSourceString() != null) {
+                    errln("Merged source string error: expected null");
+                }
+                if (i > 0) {
+                    if (mergedPrefixKeys[i-1].compareTo(mergedPrefixKeys[i])
+                        >= 0) {
+                        errln("Error while comparing prefixed keys @ strength "
+                              + strength);
+                        errln(prettify(mergedPrefixKeys[i-1]));
+                        errln(prettify(mergedPrefixKeys[i]));
+                    }
+                    if (mergedSuffixKeys[i-1].compareTo(mergedSuffixKeys[i]) 
+                        >= 0) {
+                        errln("Error while comparing suffixed keys @ strength "
+                              + strength);
+                        errln(prettify(mergedSuffixKeys[i-1]));
+                        errln(prettify(mergedSuffixKeys[i]));
+                    }
+                }
+            }
+            if (strength == Collator.QUATERNARY) {
+                strength = Collator.IDENTICAL;
+            } 
+            else {
+                strength ++;
+            }
+        }       
+    }
+    
+    public void TestVariableTop() 
+    {
+        // parseNextToken is not released as public so i create my own rules
+        String rules = "& a < b < c < de < fg & hi = j";
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rules);
+            String tokens[] = {"a", "b", "c", "de", "fg", "hi", "j", "ab"};
+            coll.setAlternateHandlingShifted(true);
+            for (int i = 0; i < tokens.length; i ++) {
+                int varTopOriginal = coll.getVariableTop();
+                try {
+                    int varTop = coll.setVariableTop(tokens[i]);
+                    if (i > 4) {
+                        errln("Token " + tokens[i] + " expected to fail");
+                    }
+                    if (varTop != coll.getVariableTop()) {
+                        errln("Error setting and getting variable top");
+                    }
+                    CollationKey key1 = coll.getCollationKey(tokens[i]);
+                    for (int j = 0; j < i; j ++) {
+                        CollationKey key2 = coll.getCollationKey(tokens[j]);
+                        if (key2.compareTo(key1) < 0) {
+                            errln("Setting variable top shouldn't change the comparison sequence");
+                        }
+                        byte sortorder[] = key2.toByteArray();
+                        if (sortorder.length > 0 
+                            && (key2.toByteArray())[0] > 1) {
+                            errln("Primary sort order should be 0");
+                        }
+                    }
+                } catch (Exception e) {
+                    CollationElementIterator iter 
+                        = coll.getCollationElementIterator(tokens[i]);
+                    /*int ce =*/ iter.next();
+                    int ce2 = iter.next();
+                    if (ce2 == CollationElementIterator.NULLORDER) {
+                        errln("Token " + tokens[i] + " not expected to fail");
+                    }
+                    if (coll.getVariableTop() != varTopOriginal) {
+                        errln("When exception is thrown variable top should "
+                              + "not be changed");
+                    }
+                }
+                coll.setVariableTop(varTopOriginal);
+                if (varTopOriginal != coll.getVariableTop()) {
+                    errln("Couldn't restore old variable top\n");
+                }
+            }
+            
+            // Testing calling with error set
+            try {
+                coll.setVariableTop("");
+                errln("Empty string should throw an IllegalArgumentException");
+            } catch (IllegalArgumentException e) {
+                logln("PASS: Empty string failed as expected");
+            }
+            try {
+                coll.setVariableTop(null);
+                errln("Null string should throw an IllegalArgumentException");
+            } catch (IllegalArgumentException e) {
+                logln("PASS: null string failed as expected");
+            }
+        } catch (Exception e) {
+            warnln("Error creating RuleBasedCollator");
+        }
+    }
+    
+    public void TestUCARules() 
+    {
+        try {
+            // only root locale can have empty tailorings .. not English!
+            RuleBasedCollator coll 
+                = (RuleBasedCollator)Collator.getInstance(new Locale("","",""));
+            String rule 
+                = coll.getRules(false);
+            if (!rule.equals("")) {
+                errln("Empty rule string should have empty rules " + rule);
+            }
+            rule = coll.getRules(true);
+            if (rule.equals("")) {
+                errln("UCA rule string should not be empty");
+            }
+            coll = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            warnln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Jitterbug 2726
+     */
+    public void TestShifted()
+    {
+        RuleBasedCollator collator = (RuleBasedCollator) Collator.getInstance();
+        collator.setStrength(Collator.PRIMARY);
+        collator.setAlternateHandlingShifted(true);
+        CollationTest.doTest(this, collator, " a", "a", 0); // works properly
+        CollationTest.doTest(this, collator, "a", "a ", 0); // inconsistent results
+    }
+    
+    /**
+     * Test for CollationElementIterator previous and next for the whole set of
+     * unicode characters with normalization on.
+     */
+    public void TestNumericCollation()
+    {
+        String basicTestStrings[] = {"hello1", "hello2", "hello123456"};
+        String preZeroTestStrings[] = {"avery1",
+                                       "avery01",
+                                       "avery001",
+                                       "avery0001"};
+        String thirtyTwoBitNumericStrings[] = {"avery42949672960",
+                                               "avery42949672961",
+                                               "avery42949672962",
+                                               "avery429496729610"};
+    
+        String supplementaryDigits[] = {"\uD835\uDFCE", // 0 
+                                        "\uD835\uDFCF", // 1 
+                                        "\uD835\uDFD0", // 2 
+                                        "\uD835\uDFD1", // 3 
+                                        "\uD835\uDFCF\uD835\uDFCE", // 10 
+                                        "\uD835\uDFCF\uD835\uDFCF", // 11 
+                                        "\uD835\uDFCF\uD835\uDFD0", // 12 
+                                        "\uD835\uDFD0\uD835\uDFCE", // 20 
+                                        "\uD835\uDFD0\uD835\uDFCF", // 21 
+                                        "\uD835\uDFD0\uD835\uDFD0" // 22 
+        };
+    
+        String foreignDigits[] = {"\u0661",
+                                  "\u0662",
+                                  "\u0663",
+                                  "\u0661\u0660",
+                                  "\u0661\u0662",
+                                  "\u0661\u0663",
+                                  "\u0662\u0660",
+                                  "\u0662\u0662",
+                                  "\u0662\u0663",
+                                  "\u0663\u0660",
+                                  "\u0663\u0662",
+                                  "\u0663\u0663"
+        };
+    
+        // Open our collator.
+        RuleBasedCollator coll 
+            = (RuleBasedCollator)Collator.getInstance(Locale.ENGLISH);
+        String att[] = {"NumericCollation"};
+        Boolean val[] = {Boolean.TRUE};
+        genericLocaleStarterWithOptions(Locale.ENGLISH, basicTestStrings, att,
+                                        val);
+        genericLocaleStarterWithOptions(Locale.ENGLISH, 
+                                        thirtyTwoBitNumericStrings, att, val);
+        genericLocaleStarterWithOptions(Locale.ENGLISH, foreignDigits, att, 
+                                        val);
+        genericLocaleStarterWithOptions(Locale.ENGLISH, supplementaryDigits, 
+                                        att, val);    
+    
+        // Setting up our collator to do digits.
+        coll.setNumericCollation(true);
+    
+        // Testing that prepended zeroes still yield the correct collation 
+        // behavior. 
+        // We expect that every element in our strings array will be equal.
+        for (int i = 0; i < preZeroTestStrings.length - 1; i ++) {
+            for (int j = i + 1; j < preZeroTestStrings.length; j ++) {
+                CollationTest.doTest(this, coll, preZeroTestStrings[i], 
+                                     preZeroTestStrings[j],0);
+            }
+        }
+
+        //cover setNumericCollationDefault, getNumericCollation
+        assertTrue("The Numeric Collation setting is on", coll.getNumericCollation());
+        coll.setNumericCollationDefault();
+        logln("After set Numeric to default, the setting is: " + coll.getNumericCollation());
+    }
+        
+    public void Test3249()
+    {
+        String rule = "&x < a &z < a";
+        try {
+            RuleBasedCollator coll = new RuleBasedCollator(rule);
+            if(coll!=null){
+                logln("Collator did not throw an exception");   
+            }
+        } catch (Exception e) {
+            warnln("Error creating RuleBasedCollator with " + rule + " failed");
+        }
+    }
+    
+    public void TestTibetanConformance() 
+    {  
+        String test[] = {"\u0FB2\u0591\u0F71\u0061", "\u0FB2\u0F71\u0061"};
+        try {
+            Collator coll = Collator.getInstance();
+            coll.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            if (coll.compare(test[0], test[1]) != 0) {
+                errln("Tibetan comparison error");
+            }
+            CollationTest.doTest(this, (RuleBasedCollator)coll, 
+                                 test[0], test[1], 0);
+        } catch (Exception e) {
+            warnln("Error creating UCA collator");
+        }
+    }
+    
+    public void TestJ3347()
+    {
+        try {
+            Collator coll = Collator.getInstance(Locale.FRENCH);
+            ((RuleBasedCollator)coll).setAlternateHandlingShifted(true);
+            if (coll.compare("6", "!6") != 0) {
+                errln("Jitterbug 3347 failed");
+            }
+        } catch (Exception e) {
+            warnln("Error creating UCA collator");
+        }
+    }
+    
+    public void TestPinyinProblem()
+    {
+        String test[] = { "\u4E56\u4E56\u7761", "\u4E56\u5B69\u5B50" };
+        genericLocaleStarter(new Locale("zh", "", "PINYIN"), test);     
+    }
+    
+    static final long topByte = 0xFF000000L;
+    static final long bottomByte = 0xFFL;
+    static final long fourBytes = 0xFFFFFFFFL;
+    
+    static final int MAX_INPUT = 0x220001; // 2 * Unicode range + 2
+    
+    private void show(int i, ImplicitCEGenerator imp) {
+        if (i >= 0 && i <= MAX_INPUT) {
+            logln(Utility.hex(i) + "\t" + Utility.hex(imp.getImplicitFromRaw(i) & fourBytes));
+        } 
+    }
+
+    private void throwError(String title, int cp, ImplicitCEGenerator imp) {
+        throw new IllegalArgumentException(title + "\t" + Utility.hex(cp, 6) + "\t" + Utility.hex(imp.getImplicitFromRaw(cp) & fourBytes));
+    }
+    
+    private void throwError(String title, long ce) {
+        errln(title + "\t" + Utility.hex(ce & fourBytes));
+    }
+    
+    public void TestImplicitGeneration()
+    {
+        logln("Start");
+        try {
+            ImplicitCEGenerator foo = new ImplicitCEGenerator(0xE0, 0xE4);
+                
+            //int x = foo.getRawImplicit(0xF810);
+            foo.getRawFromImplicit(0xE20303E7);
+
+            //int gap4 = foo.getGap4();
+            //logln("Gap4: " + gap4); 
+            //int gap3 = foo.getGap3();
+            //int minTrail = foo.getMinTrail();
+            //int maxTrail = foo.getMaxTrail();
+            long last = 0;
+            long current;
+            for (int i = 0; i <= MAX_INPUT; ++i) {
+                current = foo.getImplicitFromRaw(i) & fourBytes;
+                        
+                // check that it round-trips AND that all intervening ones are illegal
+                int roundtrip = foo.getRawFromImplicit((int)current);
+                if (roundtrip != i) {
+                    throwError("No roundtrip", i, foo); 
+                }
+                if (last != 0) {
+                    for (long j = last + 1; j < current; ++j) {
+                        roundtrip = foo.getRawFromImplicit((int)j);
+                        // raise an error if it *doesn't* find an error
+                        if (roundtrip != -1) {
+                            throwError("Fails to recognize illegal", j);
+                        }
+                    }
+                }
+                // now do other consistency checks
+                long lastBottom = last & bottomByte;
+                long currentBottom = current & bottomByte;
+                long lastTop = last & topByte;
+                long currentTop = current & topByte;
+                        
+                // do some consistency checks
+                /*
+                  long gap = current - last;               
+                  if (currentBottom != 0) { // if we are a 4-byte
+                  // gap has to be at least gap4
+                  // and gap from minTrail, maxTrail has to be at least gap4
+                  if (gap <= gap4) foo.throwError("Failed gap4 between", i);
+                  if (currentBottom < minTrail + gap4) foo.throwError("Failed gap4 before", i);
+                  if (currentBottom > maxTrail - gap4) foo.throwError("Failed gap4 after", i);
+                  } else { // we are a three-byte
+                  gap = gap >> 8; // move gap down for comparison.
+                  long current3Bottom = (current >> 8) & bottomByte;
+                  if (gap <= gap3) foo.throwError("Failed gap3 between ", i);
+                  if (current3Bottom < minTrail + gap3) foo.throwError("Failed gap3 before", i);
+                  if (current3Bottom > maxTrail - gap3) foo.throwError("Failed gap3 after", i);
+                  }
+                */
+                // print out some values for spot-checking
+                if (lastTop != currentTop || i == 0x10000 || i == 0x110000) {
+                    show(i-3, foo);
+                    show(i-2, foo);
+                    show(i-1, foo);
+                    if (i == 0) {
+                        // do nothing
+                    } else if (lastBottom == 0 && currentBottom != 0) {
+                        logln("+ primary boundary, 4-byte CE's below");
+                    } else if (lastTop != currentTop) {
+                        logln("+ primary boundary");
+                    }
+                    show(i, foo);
+                    show(i+1, foo);
+                    show(i+2, foo);
+                    logln("...");
+                }
+                last = current;
+                if(foo.getCodePointFromRaw(foo.getRawFromCodePoint(i)) != i) {
+                    errln("No raw <-> code point roundtrip for "+Utility.hex(i));
+                }                       
+            }
+            show(MAX_INPUT-2, foo);
+            show(MAX_INPUT-1, foo);
+            show(MAX_INPUT, foo);
+        } catch (Exception e) {
+            e.printStackTrace();
+            warnln(e.getMessage());
+        } finally {
+            logln("End");
+        }
+    }
+
+    /* supercedes TestJ784 */
+    public void TestBeforePinyin() {
+        String rules = 
+            "&[before 2]A << \u0101  <<< \u0100 << \u00E1 <<< \u00C1 << \u01CE <<< \u01CD << \u00E0 <<< \u00C0" +
+            "&[before 2]e << \u0113 <<< \u0112 << \u00E9 <<< \u00C9 << \u011B <<< \u011A << \u00E8 <<< \u00C8" +
+            "&[before 2] i << \u012B <<< \u012A << \u00ED <<< \u00CD << \u01D0 <<< \u01CF << \u00EC <<< \u00CC" +
+            "&[before 2] o << \u014D <<< \u014C << \u00F3 <<< \u00D3 << \u01D2 <<< \u01D1 << \u00F2 <<< \u00D2" +
+            "&[before 2]u << \u016B <<< \u016A << \u00FA <<< \u00DA << \u01D4 <<< \u01D3 << \u00F9 <<< \u00D9" +
+            "&U << \u01D6 <<< \u01D5 << \u01D8 <<< \u01D7 << \u01DA <<< \u01D9 << \u01DC <<< \u01DB << \u00FC";
+    
+        String test[] = {
+            "l\u0101",
+            "la",
+            "l\u0101n",
+            "lan ",
+            "l\u0113",
+            "le",
+            "l\u0113n",
+            "len"
+        };
+    
+        String test2[] = {
+            "x\u0101",
+            "x\u0100",
+            "X\u0101",
+            "X\u0100",
+            "x\u00E1",
+            "x\u00C1",
+            "X\u00E1",
+            "X\u00C1",
+            "x\u01CE",
+            "x\u01CD",
+            "X\u01CE",
+            "X\u01CD",
+            "x\u00E0",
+            "x\u00C0",
+            "X\u00E0",
+            "X\u00C0",
+            "xa",
+            "xA",
+            "Xa",
+            "XA",
+            "x\u0101x",
+            "x\u0100x",
+            "x\u00E1x",
+            "x\u00C1x",
+            "x\u01CEx",
+            "x\u01CDx",
+            "x\u00E0x",
+            "x\u00C0x",
+            "xax",
+            "xAx"
+        };
+        /* TODO: port builder fixes to before */
+        genericRulesStarter(rules, test);
+        genericLocaleStarter(new Locale("zh","",""), test);
+        genericRulesStarter(rules, test2);
+        genericLocaleStarter(new Locale("zh","",""), test2);
+    }
+
+    public void TestUpperFirstQuaternary()
+    {
+      String tests[] = { "B", "b", "Bb", "bB" };
+      String[] att = { "strength", "UpperFirst" };
+      Object attVals[] = { new Integer(Collator.QUATERNARY), Boolean.TRUE };
+      genericLocaleStarterWithOptions(new Locale("root","",""), tests, att, attVals);
+    }
+    
+    public void TestJ4960()
+    {
+        String tests[] = { "\\u00e2T", "aT" };
+        String att[] = { "strength", "CaseLevel" };
+        Object attVals[] = { new Integer(Collator.PRIMARY), Boolean.TRUE };
+        String tests2[] = { "a", "A" };
+        String rule = "&[first tertiary ignorable]=A=a";
+        String att2[] = { "CaseLevel" };        
+        Object attVals2[] = { Boolean.TRUE };
+        // Test whether we correctly ignore primary ignorables on case level when
+        // we have only primary & case level
+        genericLocaleStarterWithOptionsAndResult(new Locale("root", ""), tests, att, attVals, 0);
+        // Test whether ICU4J will make case level for sortkeys that have primary strength
+        // and case level
+        genericLocaleStarterWithOptions(new Locale("root", ""), tests2, att, attVals);
+        // Test whether completely ignorable letters have case level info (they shouldn't)
+        genericRulesStarterWithOptionsAndResult(rule, tests2, att2, attVals2, 0);        
+    }
+    
+    public void TestJB5298(){
+        ULocale[] locales = Collator.getAvailableULocales();
+        logln("Number of collator locales returned : " + locales.length);
+        // double-check keywords
+        String[] keywords = Collator.getKeywords();
+        if (keywords.length != 1 || !keywords[0].equals("collation")) {
+            throw new IllegalArgumentException("internal collation error");
+        }
+    
+        String[] values = Collator.getKeywordValues("collation");
+        log("Collator.getKeywordValues returned: ");
+        for(int i=0; i<values.length;i++){
+            log(values[i]+", ");
+        }
+        logln("");
+        logln("Number of collator values returned : " + values.length);
+        
+        Set foundValues = new TreeSet(Arrays.asList(values));
+        
+        for (int i = 0; i < locales.length; ++i) {
+          for (int j = 0; j < values.length; ++j) {
+            ULocale tryLocale = values[j].equals("standard") 
+            ? locales[i] : new ULocale(locales[i] + "@collation=" + values[j]); 
+            // only append if not standard
+            ULocale canon = Collator.getFunctionalEquivalent("collation",tryLocale);
+            if (!canon.equals(tryLocale)) {
+                continue; // has a different 
+            }else {// functional equivalent, so skip
+                logln(tryLocale + " : "+canon+", ");
+            }
+            String can = canon.toString();
+            int idx = can.indexOf("@collation=");
+            String val = idx >= 0 ? can.substring(idx+11, can.length()) : "";
+            if(val.length()>0 && !foundValues.contains(val)){
+                errln("Unknown collation found "+ can);
+            }
+          }        
+        }
+        logln(" ");
+    }
+
+    public void
+    TestJ5367()
+    {
+        String[] test = { "a", "y" };
+        String rules = "&Ny << Y &[first secondary ignorable] <<< a";
+        genericRulesStarter(rules, test);        
+    }
+    
+    public void
+    TestVI5913()
+    {
+
+        String rules[] = {
+                "&a < \u00e2 <<< \u00c2",
+                "&a < \u1FF3 ",  // OMEGA WITH YPOGEGRAMMENI
+                "&s < \u0161 ",  // &s < s with caron
+                "&z < a\u00EA",  // &z < a+e with circumflex
+        };
+        String cases[][] = {
+            { "\u1EAC", "A\u0323\u0302", "\u1EA0\u0302", "\u00C2\u0323", }, 
+            { "\u1FA2", "\u03C9\u0313\u0300\u0345", "\u1FF3\u0313\u0300", 
+              "\u1F60\u0300\u0345", "\u1f62\u0345", "\u1FA0\u0300", },
+            { "\u1E63\u030C", "s\u0323\u030C", "s\u030C\u0323"},
+            { "a\u1EC7", //  a+ e with dot below and circumflex
+              "a\u1EB9\u0302", // a + e with dot below + combining circumflex
+              "a\u00EA\u0323", // a + e with circumflex + combining dot below
+            }
+        };
+        
+        
+        for(int i = 0; i < rules.length; i++) {
+            
+            RuleBasedCollator coll = null;
+            try {
+                coll = new RuleBasedCollator(rules[i]);
+            } catch (Exception e) {
+                warnln("Unable to open collator with rules " + rules[i]);
+            }
+
+            logln("Test case["+i+"]:");
+            CollationKey expectingKey = coll.getCollationKey(cases[i][0]);
+            for (int j=1; j<cases[i].length; j++) {
+                CollationKey key = coll.getCollationKey(cases[i][j]);
+                if ( key.compareTo(expectingKey)!=0) {
+                    errln("Error! Test case["+i+"]:"+"source:" + key.getSourceString());
+                    errln("expecting:"+prettify(expectingKey)+ "got:"+  prettify(key));
+                }
+                logln("   Key:"+  prettify(key));
+            }
+        }   
+        
+        
+        RuleBasedCollator vi_vi = null;
+        try {
+            vi_vi = (RuleBasedCollator)Collator.getInstance(
+                                                      new Locale("vi", ""));
+            logln("VI sort:");
+            CollationKey expectingKey = vi_vi.getCollationKey(cases[0][0]);
+            for (int j=1; j<cases[0].length; j++) {
+                CollationKey key = vi_vi.getCollationKey(cases[0][j]);
+                if ( key.compareTo(expectingKey)!=0) {
+                    // TODO (claireho): change the logln to errln after vi.res is up-to-date.
+                    // errln("source:" + key.getSourceString());
+                    // errln("expecting:"+prettify(expectingKey)+ "got:"+  prettify(key));
+                    logln("Error!! in Vietnese sort - source:" + key.getSourceString());
+                    logln("expecting:"+prettify(expectingKey)+ "got:"+  prettify(key));
+                }
+                // logln("source:" + key.getSourceString());
+                logln("   Key:"+  prettify(key));
+            }
+        } catch (Exception e) {
+            warnln("Error creating Vietnese collator");
+            return;
+        }
+        
+    }
+    
+    
+    public void Test6179()
+    {
+        String rules[] = {
+                "&[last primary ignorable]<< a  &[first primary ignorable]<<b ",
+                "&[last secondary ignorable]<<< a &[first secondary ignorable]<<<b",  
+        };
+        // defined in UCA5.1
+        String firstPrimIgn = "\u0332";  
+        String lastPrimIgn = "\uD800\uDDFD";
+        String firstVariable = "\u0009";
+        byte[] secIgnKey = {1,1,4,0};
+        
+        int i=0; 
+        {
+            
+            RuleBasedCollator coll = null;
+            try {
+                coll = new RuleBasedCollator(rules[i]);
+            } catch (Exception e) {
+                warnln("Unable to open collator with rules " + rules[i]);
+            }
+
+            logln("Test rule["+i+"]"+rules[i]);
+            
+            CollationKey keyA = coll.getCollationKey("a");
+            logln("Key for \"a\":"+  prettify(keyA));
+            if (keyA.compareTo(coll.getCollationKey(lastPrimIgn))<=0) {
+                CollationKey key = coll.getCollationKey(lastPrimIgn);
+                logln("Collation key for 0xD800 0xDDFD: "+prettify(key));
+                errln("Error! String \"a\" must be greater than \uD800\uDDFD -"+
+                      "[Last Primary Ignorable]");
+            }
+            if (keyA.compareTo(coll.getCollationKey(firstVariable))>=0) {
+                CollationKey key = coll.getCollationKey(firstVariable);
+                logln("Collation key for 0x0009: "+prettify(key));
+                errln("Error! String \"a\" must be less than 0x0009 - [First Variable]");
+            }
+            CollationKey keyB = coll.getCollationKey("b");
+            logln("Key for \"b\":"+  prettify(keyB));
+            if (keyB.compareTo(coll.getCollationKey(firstPrimIgn))<=0) {
+                CollationKey key = coll.getCollationKey(firstPrimIgn);
+                logln("Collation key for 0x0332: "+prettify(key));
+                errln("Error! String \"b\" must be greater than 0x0332 -"+
+                      "[First Primary Ignorable]");
+            }
+            if (keyB.compareTo(coll.getCollationKey(firstVariable))>=0) {
+                CollationKey key = coll.getCollationKey(firstVariable);
+                logln("Collation key for 0x0009: "+prettify(key));
+                errln("Error! String \"b\" must be less than 0x0009 - [First Variable]");
+            }
+        }
+        {
+            i=1;   
+            RuleBasedCollator coll = null;
+            try {
+                coll = new RuleBasedCollator(rules[i]);
+            } catch (Exception e) {
+                warnln("Unable to open collator with rules " + rules[i]);
+            }
+
+            logln("Test rule["+i+"]"+rules[i]);
+            
+            CollationKey keyA = coll.getCollationKey("a");
+            logln("Key for \"a\":"+  prettify(keyA));
+            byte[] keyAInBytes = keyA.toByteArray();
+            for (int j=0; j<keyAInBytes.length && j<secIgnKey.length; j++) {
+                if (keyAInBytes[j]!=secIgnKey[j]) {
+                    if ((char)keyAInBytes[j]<=(char)secIgnKey[j]) {
+                        logln("Error! String \"a\" must be greater than [Last Secondary Ignorable]");
+                    }
+                    break;
+                }
+            }
+            if (keyA.compareTo(coll.getCollationKey(firstVariable))>=0) {
+                errln("Error! String \"a\" must be less than 0x0009 - [First Variable]");
+                CollationKey key = coll.getCollationKey(firstVariable);
+                logln("Collation key for 0x0009: "+prettify(key));
+            }
+            CollationKey keyB = coll.getCollationKey("b");
+            logln("Key for \"b\":"+  prettify(keyB));
+            byte[] keyBInBytes = keyB.toByteArray();
+            for (int j=0; j<keyBInBytes.length && j<secIgnKey.length; j++) {
+                if (keyBInBytes[j]!=secIgnKey[j]) {
+                    if ((char)keyBInBytes[j]<=(char)secIgnKey[j]) {
+                        errln("Error! String \"b\" must be greater than [Last Secondary Ignorable]");
+                    }
+                    break;
+                }
+            }
+            if (keyB.compareTo(coll.getCollationKey(firstVariable))>=0) {
+                CollationKey key = coll.getCollationKey(firstVariable);
+                logln("Collation key for 0x0009: "+prettify(key));
+                errln("Error! String \"b\" must be less than 0x0009 - [First Variable]");
+            }
+        }   
+    }
+    
+    public void TestUCAPrecontext()
+    {
+        String rules[] = {
+                "& \u00B7<a ",
+                "& L\u00B7 << a", // 'a' is an expansion. 
+        };
+        String cases[] = {
+            "\u00B7", 
+            "\u0387", 
+            "a",
+            "l",
+            "L\u0332",
+            "l\u00B7",
+            "l\u0387",
+            "L\u0387",
+            "la\u0387",
+            "La\u00b7",
+        };
+
+        // Test en sort
+        RuleBasedCollator en = null;
+        
+        logln("EN sort:");
+        try {
+            en = (RuleBasedCollator)Collator.getInstance(
+                    new Locale("en", ""));
+            for (int j=0; j<cases.length; j++) {
+                CollationKey key = en.getCollationKey(cases[j]);
+                if (j>0) {
+                    CollationKey prevKey = en.getCollationKey(cases[j-1]);
+                    if (key.compareTo(prevKey)<0) {
+                        errln("Error! EN test["+j+"]:"+"source:" + cases[j]+
+                        "is not greater than previous test.");
+                    }
+                }
+                /*
+                if ( key.compareTo(expectingKey)!=0) {
+                    errln("Error! Test case["+i+"]:"+"source:" + key.getSourceString());
+                    errln("expecting:"+prettify(expectingKey)+ "got:"+  prettify(key));
+                }
+                */
+                logln("String:"+cases[j]+"   Key:"+  prettify(key));
+            }
+        } catch (Exception e) {
+            warnln("Error creating Vietnese collator");
+            return;
+        }
+        
+        // Test ja sort
+        RuleBasedCollator ja = null;
+        logln("JA sort:");
+        try {
+            ja = (RuleBasedCollator)Collator.getInstance(
+                    new Locale("ja", ""));
+            for (int j=0; j<cases.length; j++) {
+                CollationKey key = ja.getCollationKey(cases[j]);
+                if (j>0) {
+                    CollationKey prevKey = ja.getCollationKey(cases[j-1]);
+                    if (key.compareTo(prevKey)<0) {
+                        errln("Error! JA test["+j+"]:"+"source:" + cases[j]+
+                        "is not greater than previous test.");
+                    }
+                }
+                logln("String:"+cases[j]+"   Key:"+  prettify(key));
+            }
+        } catch (Exception e) {
+            warnln("Error creating Vietnese collator");
+            return;
+        }
+        for(int i = 0; i < rules.length; i++) {
+            
+            RuleBasedCollator coll = null;
+            logln("Tailoring rule:"+rules[i]);
+            try {
+                coll = new RuleBasedCollator(rules[i]);
+            } catch (Exception e) {
+                warnln("Unable to open collator with rules " + rules[i]);
+            }
+
+            for (int j=0; j<cases.length; j++) {
+                CollationKey key = coll.getCollationKey(cases[j]);
+                if (j>0) {
+                    CollationKey prevKey = coll.getCollationKey(cases[j-1]);
+                    if (i==1 && j==3) {
+                        if (key.compareTo(prevKey)>0) {
+                            errln("Error! Rule:"+rules[i]+" test["+j+"]:"+"source:"+
+                            cases[j]+"is not greater than previous test.");
+                        }
+                    }
+                    else {
+                        if (key.compareTo(prevKey)<0) {
+                            errln("Error! Rule:"+rules[i]+" test["+j+"]:"+"source:"+ 
+                            cases[j]+"is not greater than previous test.");
+                        }
+                    }
+                }
+                logln("String:"+cases[j]+"   Key:"+  prettify(key));
+            }
+        }   
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java b/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
new file mode 100644
index 0000000..bdaeed1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
@@ -0,0 +1,317 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationMonkeyTest
+ * Source File: $ICU4CRoot/source/test/intltest/mnkytst.cpp
+ **/
+
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Random;
+import java.util.Locale;
+
+/**
+ * CollationMonkeyTest is a third level test class.  This tests the random 
+ * substrings of the default test strings to verify if the compare and 
+ * sort key algorithm works correctly.  For example, any string is always
+ * less than the string itself appended with any character.
+ */
+
+public class CollationMonkeyTest extends TestFmwk {
+    
+    private String source = "-abcdefghijklmnopqrstuvwxyz#&^$@";
+    
+    public static void main(String[] args) throws Exception {
+        new CollationMonkeyTest().run(args);
+    }
+    
+    public void TestCollationKey() {
+        if(source.length() == 0) {
+            errln("CollationMonkeyTest.TestCollationKey(): source is empty - ICU_DATA not set or data missing?");
+            return;
+        }
+        Collator myCollator;
+        try {
+             myCollator = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        
+        Random rand = createRandom(); // use test framework's random seed
+        int s = rand.nextInt(0x7fff) % source.length();
+        int t = rand.nextInt(0x7fff) % source.length();
+        int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        int tlen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        String subs = source.substring(Math.min(s, slen), Math.min(s + slen, source.length()));
+        String subt = source.substring(Math.min(t, tlen), Math.min(t + tlen, source.length()));
+    
+        CollationKey collationKey1, collationKey2;
+    
+        myCollator.setStrength(Collator.TERTIARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        int result = collationKey1.compareTo(collationKey2);  // Tertiary
+        int revResult = collationKey2.compareTo(collationKey1);  // Tertiary
+        report( subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.SECONDARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        result = collationKey1.compareTo(collationKey2);  // Secondary
+        revResult = collationKey2.compareTo(collationKey1);   // Secondary
+        report( subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.PRIMARY);
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(subt);
+        result = collationKey1.compareTo(collationKey2);  // Primary
+        revResult = collationKey2.compareTo(collationKey1);   // Primary
+        report(subs, subt, result, revResult);
+    
+        String msg = "";
+        String addOne = subs + String.valueOf(0xE000);
+    
+        collationKey1 = myCollator.getCollationKey(subs);
+        collationKey2 = myCollator.getCollationKey(addOne);
+        result = collationKey1.compareTo(collationKey2);
+        if (result != -1) {
+            msg += "CollationKey(";
+            msg += subs;
+            msg += ") .LT. CollationKey(";
+            msg += addOne;
+            msg += ") Failed.";
+            errln(msg);
+        }
+    
+        msg = "";
+        result = collationKey2.compareTo(collationKey1);
+        if (result != 1) {
+            msg += "CollationKey(";
+            msg += addOne;
+            msg += ") .GT. CollationKey(";
+            msg += subs;
+            msg += ") Failed.";
+            errln(msg);
+        }
+    }
+    
+    // perform monkey tests using Collator.compare
+    public void TestCompare() {
+        if(source.length() == 0) {
+            errln("CollationMonkeyTest.TestCompare(): source is empty - ICU_DATA not set or data missing?");
+            return;
+        }
+        
+        Collator myCollator;
+        try {
+             myCollator = Collator.getInstance(new Locale("en", "US"));
+        } catch (Exception e) {
+            warnln("ERROR: in creation of collator of ENGLISH locale");
+            return;
+        }
+        
+        /* Seed the random-number generator with current time so that
+         * the numbers will be different every time we run.
+         */
+        
+        Random rand = createRandom(); // use test framework's random seed
+        int s = rand.nextInt(0x7fff) % source.length();
+        int t = rand.nextInt(0x7fff) % source.length();
+        int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        int tlen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
+        String subs = source.substring(Math.min(s, slen), Math.min(s + slen, source.length()));
+        String subt = source.substring(Math.min(t, tlen), Math.min(t + tlen, source.length()));
+    
+        myCollator.setStrength(Collator.TERTIARY);
+        int result = myCollator.compare(subs, subt);  // Tertiary
+        int revResult = myCollator.compare(subt, subs);  // Tertiary
+        report(subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.SECONDARY);
+        result = myCollator.compare(subs, subt);  // Secondary
+        revResult = myCollator.compare(subt, subs);  // Secondary
+        report(subs, subt, result, revResult);
+    
+        myCollator.setStrength(Collator.PRIMARY);
+        result = myCollator.compare(subs, subt);  // Primary
+        revResult = myCollator.compare(subt, subs);  // Primary
+        report(subs, subt, result, revResult);
+    
+        String msg = "";
+        String addOne = subs + String.valueOf(0xE000);
+    
+        result = myCollator.compare(subs, addOne);
+        if (result != -1) {
+            msg += "Test : ";
+            msg += subs;
+            msg += " .LT. ";
+            msg += addOne;
+            msg += " Failed.";
+            errln(msg);
+        }
+    
+        msg = "";
+        result = myCollator.compare(addOne, subs);
+        if (result != 1) {
+            msg += "Test : ";
+            msg += addOne;
+            msg += " .GT. ";
+            msg += subs;
+            msg += " Failed.";
+            errln(msg);
+        }
+    }
+    
+    void report(String s, String t, int result, int revResult) {
+        if (revResult != -result) {
+            String msg = "";
+            msg += s; 
+            msg += " and ";
+            msg += t;
+            msg += " round trip comparison failed";
+            msg += " (result " + result + ", reverse Result " + revResult + ")"; 
+            errln(msg);
+        }
+    }
+    
+    public void TestRules() {
+        String testSourceCases[] = {
+            "\u0061\u0062\u007a", 
+            "\u0061\u0062\u007a", 
+        };
+    
+        String testTargetCases[] = {
+            "\u0061\u0062\u00e4",
+            "\u0061\u0062\u0061\u0308",
+        };
+        
+        int i=0;
+        logln("Demo Test 1 : Create a new table collation with rules \"& z < 0x00e4\"");
+        Collator col = Collator.getInstance(new Locale("en", "US"));
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & z < ";
+        newRules = baseRules + newRules + String.valueOf(0x00e4);
+        RuleBasedCollator myCollation = null;
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch (Exception e) {
+            warnln( "Demo Test 1 Table Collation object creation failed.");
+            return;
+        }
+        
+        for(i=0; i<2; i++){
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], -1);
+        }
+        logln("Demo Test 2 : Create a new table collation with rules \"& z < a 0x0308\"");
+        newRules = "";
+        newRules = baseRules + " & z < a" + String.valueOf(0x0308);
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch (Exception e) {
+            errln( "Demo Test 1 Table Collation object creation failed.");
+            return;
+        }
+        for(i=0; i<2; i++){
+            doTest(myCollation, testSourceCases[i], testTargetCases[i], -1);
+        }
+    }
+    
+    void doTest(RuleBasedCollator myCollation, String mysource, String target, int result) {
+        int compareResult = myCollation.compare(source, target);
+        CollationKey sortKey1, sortKey2;
+        
+        try {
+            sortKey1 = myCollation.getCollationKey(source);
+            sortKey2 = myCollation.getCollationKey(target);
+        } catch (Exception e) {
+            errln("SortKey generation Failed.\n");
+            return;
+        }
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult( mysource, target, sortKey1, sortKey2, compareResult, keyResult, compareResult, result );
+    }
+    
+    public void reportCResult(String src, String target, CollationKey sourceKey, CollationKey targetKey,
+                              int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + src + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + src + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + src + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + src + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+            sResult = appendCompareResult(incResult, sResult);
+            if (ok3) {
+                logln(msg1 + src + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + src + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java b/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
new file mode 100644
index 0000000..6c33194
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
@@ -0,0 +1,1193 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/regcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+import java.util.Vector;
+import java.text.ParseException;
+
+public class CollationRegressionTest extends TestFmwk {
+    public static void main(String[] args) throws Exception{
+        new CollationRegressionTest().run(args);
+    }
+    
+    // @bug 4048446
+    //
+    // CollationElementIterator.reset() doesn't work
+    //
+    public void Test4048446() {
+        final String test1 = "XFILE What subset of all possible test cases has the highest probability of detecting the most errors?";
+        //final String test2 = "Xf_ile What subset of all possible test cases has the lowest probability of detecting the least errors?";
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        CollationElementIterator i1 = en_us.getCollationElementIterator(test1);
+        CollationElementIterator i2 = en_us.getCollationElementIterator(test1);
+        
+        if (i1 == null || i2 == null) {
+            errln("Could not create CollationElementIterator's");
+            return;
+        }
+    
+        while (i1.next() != CollationElementIterator.NULLORDER) {
+            //
+        }
+    
+        i1.reset();
+        assertEqual(i1, i2);
+    }
+    
+    void assertEqual(CollationElementIterator i1, CollationElementIterator i2) {
+        int c1, c2, count = 0;
+    
+        do {
+            c1 = i1.next();
+            c2 = i2.next();
+    
+            if (c1 != c2) {
+                String msg = "";
+                String msg1 = "    ";
+                
+                msg += msg1 + count;
+                msg += ": strength(0x" + Integer.toHexString(c1);
+                msg += ") != strength(0x" + Integer.toHexString(c2);
+                msg += ")";
+                errln(msg);
+                break;
+            }
+            count += 1;
+        } while (c1 != CollationElementIterator.NULLORDER);
+    }
+    
+    // @bug 4051866
+    //
+    // Collator -> rules -> Collator round-trip broken for expanding characters
+    //
+    public void Test4051866() {
+       String rules = "< o & oe ,o\u3080& oe ,\u1530 ,O& OE ,O\u3080& OE ,\u1520< p ,P";
+
+        // Build a collator containing expanding characters
+        RuleBasedCollator c1 = null;
+        
+        try {
+            c1 = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + rules);
+            return;
+        }
+    
+        // Build another using the rules from  the first
+        RuleBasedCollator c2 = null;
+        try {
+            c2 = new RuleBasedCollator(c1.getRules());
+        } catch (Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + rules);
+            return;
+        }
+    
+        // Make sure they're the same
+        if (!(c1.getRules().equals(c2.getRules())))
+        {
+            errln("Rules are not equal");
+        }
+    }
+    
+    // @bug 4053636
+    //
+    // Collator thinks "black-bird" == "black"
+    //
+    public void Test4053636() {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        if (en_us.equals("black_bird", "black")) {
+            errln("black-bird == black");
+        }
+    }
+    
+    // @bug 4054238
+    //
+    // CollationElementIterator will not work correctly if the associated
+    // Collator object's mode is changed
+    //
+    public void Test4054238(/* char* par */) {
+        final char[] chars3 = {0x61, 0x00FC, 0x62, 0x65, 0x63, 0x6b, 0x20, 0x47, 0x72, 0x00F6, 0x00DF, 0x65, 0x20, 0x4c, 0x00FC, 0x62, 0x63, 0x6b, 0};
+        final String test3 = new String(chars3);
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+    
+        // NOTE: The Java code uses en_us to create the CollationElementIterators
+        // but I'm pretty sure that's wrong, so I've changed this to use c.
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+        CollationElementIterator i1 = c.getCollationElementIterator(test3);
+        logln("Offset:" + i1.getOffset());
+    }
+    
+    // @bug 4054734
+    //
+    // Collator::IDENTICAL documented but not implemented
+    //
+    public void Test4054734(/* char* par */) {
+        
+            //Here's the original Java:
+    
+            String[] decomp = {
+                "\u0001",   "<",    "\u0002",
+                "\u0001",   "=",    "\u0001",
+                "A\u0001",  ">",    "~\u0002",      // Ensure A and ~ are not compared bitwise
+                "\u00C0",   "=",    "A\u0300",      // Decomp should make these equal
+            };
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.IDENTICAL);
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, decomp);
+    }
+    
+    void compareArray(Collator c, String[] tests) {
+        
+        int expectedResult = 0;
+    
+        for (int i = 0; i < tests.length; i += 3) {
+            String source = tests[i];
+            String comparison = tests[i + 1];
+            String target = tests[i + 2];
+    
+            if (comparison.equals("<")) {
+                expectedResult = -1;
+            } else if (comparison.equals(">")) {
+                expectedResult = 1;
+            } else if (comparison.equals("=")) {
+                expectedResult = 0;
+            } else {
+                errln("Bogus comparison string \"" + comparison + "\"");
+            }
+            
+            int compareResult = 0;
+            
+            logln("i = " + i);
+            logln(source);
+            logln(target);
+            try {
+                compareResult = c.compare(source, target);
+            } catch (Exception e) {
+                errln(e.toString());
+            }
+    
+            CollationKey sourceKey = null, targetKey = null;
+            try {
+                sourceKey = c.getCollationKey(source);
+            } catch (Exception e) {
+                errln("Couldn't get collationKey for source");
+                continue;
+            }
+    
+            try {
+                targetKey = c.getCollationKey(target);
+            } catch (Exception e) {
+                errln("Couldn't get collationKey for target");
+                continue;
+            }
+    
+            int keyResult = sourceKey.compareTo(targetKey);
+            reportCResult( source, target, sourceKey, targetKey, compareResult, keyResult, compareResult, expectedResult );
+        }
+    }
+    
+    void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1)
+        {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        }else{
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    String appendCompareResult(int result, String target) {
+        if (result == -1) {  //LESS
+            target += "LESS";
+        } else if (result == 0) {  //EQUAL
+            target += "EQUAL";
+        } else if (result == 1) {  //GREATER
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+    
+    // @bug 4054736
+    //
+    // Full Decomposition mode not implemented
+    //
+    public void Test4054736(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+    
+        c.setStrength(Collator.SECONDARY);
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+    
+        final String[] tests = { "\uFB4F", "\u003d", "\u05D0\u05DC" };  // Alef-Lamed vs. Alef, Lamed
+        compareArray(c, tests);
+    }
+    
+    // @bug 4058613
+    //
+    // Collator::createInstance() causes an ArrayIndexOutofBoundsException for Korean  
+    //
+    public void Test4058613(/* char* par */) {
+        // Creating a default collator doesn't work when Korean is the default
+        // locale
+        
+        Locale oldDefault = Locale.getDefault();
+        Locale.setDefault(new Locale("ko", ""));
+    
+        Collator c = null;
+        
+        c = Collator.getInstance(new Locale("en", "US"));
+    
+        if (c == null) {
+            errln("Could not create a Korean collator");
+            Locale.setDefault(oldDefault);
+            return;
+        }
+        
+        // Since the fix to this bug was to turn off decomposition for Korean collators,
+        // ensure that's what we got
+        if (c.getDecomposition() != Collator.NO_DECOMPOSITION) {
+          errln("Decomposition is not set to NO_DECOMPOSITION for Korean collator");
+        }
+    
+        Locale.setDefault(oldDefault);
+    }
+    
+    // @bug 4059820
+    //
+    // RuleBasedCollator.getRules does not return the exact pattern as input
+    // for expanding character sequences
+    //
+    public void Test4059820(/* char* par */) {
+        RuleBasedCollator c = null;
+        String rules = "< a < b , c/a < d < z";
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Failure building a collator.");
+            return;
+        }
+    
+        if ( c.getRules().indexOf("c/a") == -1)
+        {
+            errln("returned rules do not contain 'c/a'");
+        }
+    }
+    
+    // @bug 4060154
+    //
+    // MergeCollation::fixEntry broken for "& H < \u0131, \u0130, i, I"
+    //
+    public void Test4060154(/* char* par */) {
+        String rules ="< g, G < h, H < i, I < j, J & H < \u0131, \u0130, i, I";
+    
+        RuleBasedCollator c = null;
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            //System.out.println(e);
+            errln("failure building collator.");
+            return;
+        }
+    
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+    
+        String[] tertiary = {
+            "A",        "<",    "B",
+            "H",        "<",    "\u0131",
+            "H",        "<",    "I",
+            "\u0131",   "<",    "\u0130",
+            "\u0130",   "<",    "i",
+            "\u0130",   ">",    "H",
+        };
+    
+        c.setStrength(Collator.TERTIARY);
+        compareArray(c, tertiary);
+    
+        String[] secondary = {
+            "H",        "<",    "I",
+            "\u0131",   "=",    "\u0130",
+        };
+    
+        c.setStrength(Collator.PRIMARY);
+        compareArray(c, secondary);
+    }
+    
+    // @bug 4062418
+    //
+    // Secondary/Tertiary comparison incorrect in French Secondary
+    //
+    public void Test4062418(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator) Collator.getInstance(Locale.FRANCE);
+        } catch (Exception e) {
+            errln("Failed to create collator for Locale::FRANCE()");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+    
+        String[] tests = {
+                "p\u00eache",    "<",    "p\u00e9ch\u00e9",    // Comparing accents from end, p\u00e9ch\u00e9 is greater
+        };
+    
+        compareArray(c, tests);
+    }
+    
+    // @bug 4065540
+    //
+    // Collator::compare() method broken if either string contains spaces
+    //
+    public void Test4065540(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        if (en_us.compare("abcd e", "abcd f") == 0) {
+            errln("'abcd e' == 'abcd f'");
+        }
+    }
+    
+    // @bug 4066189
+    //
+    // Unicode characters need to be recursively decomposed to get the
+    // correct result. For example,
+    // u1EB1 -> \u0103 + \u0300 -> a + \u0306 + \u0300.
+    //
+    public void Test4066189(/* char* par */) {
+        final  String test1 = "\u1EB1";
+        final  String test2 = "\u0061\u0306\u0300";
+    
+        // NOTE: The java code used en_us to create the
+        // CollationElementIterator's. I'm pretty sure that
+        // was wrong, so I've change the code to use c1 and c2
+        RuleBasedCollator c1 = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c1.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        CollationElementIterator i1 = c1.getCollationElementIterator(test1);
+    
+        RuleBasedCollator c2 = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c2.setDecomposition(Collator.NO_DECOMPOSITION);
+        CollationElementIterator i2 = c2.getCollationElementIterator(test2);
+    
+        assertEqual(i1, i2);
+    }
+    
+    // @bug 4066696
+    //
+    // French secondary collation checking at the end of compare iteration fails
+    //
+    public void Test4066696(/* char* par */) {
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator)Collator.getInstance(Locale.FRANCE);
+        } catch(Exception e) {
+            errln("Failure creating collator for Locale::getFrance()");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+    
+        String[] tests = {
+            "\u00e0",   ">",     "\u01fa",       // a-grave <  A-ring-acute
+        };    
+        compareArray(c, tests);
+    }
+    
+    // @bug 4076676
+    //
+    // Bad canonicalization of same-class combining characters
+    //
+    public void Test4076676(/* char* par */) {
+        // These combining characters are all in the same class, so they should not
+        // be reordered, and they should compare as unequal.
+        final String s1 = "\u0041\u0301\u0302\u0300";
+        final String s2 = "\u0041\u0302\u0300\u0301";
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+    
+        if (c.compare(s1,s2) == 0) {
+            errln("Same-class combining chars were reordered");
+        }
+    }
+
+    // @bug 4078588
+    //
+    // RuleBasedCollator breaks on "< a < bb" rule
+    //
+    public void Test4078588(/* char *par */) {
+        RuleBasedCollator rbc = null;
+        try {
+            rbc = new RuleBasedCollator("< a < bb");
+        } catch (Exception e) {
+            errln("Failed to create RuleBasedCollator.");
+            return;
+        }
+    
+        int result = rbc.compare("a","bb");
+    
+        if (result >= 0) {
+            errln("Compare(a,bb) returned " + result + "; expected -1");
+        }
+    }
+    
+    // @bug 4079231
+    //
+    // RuleBasedCollator::operator==(NULL) throws NullPointerException
+    //
+    public void Test4079231(/* char* par */) {    
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        try {
+            if (en_us.equals(null)) {
+                errln("en_us.equals(null) returned true");
+            }
+        } catch (Exception e) {
+            errln("en_us.equals(null) threw " + e.toString());
+        }
+    }
+    
+    // @bug 4081866
+    //
+    // Combining characters in different classes not reordered properly.
+    //
+    public void Test4081866(/* char* par */) {
+        // These combining characters are all in different classes,
+        // so they should be reordered and the strings should compare as equal.
+        String s1 = "\u0041\u0300\u0316\u0327\u0315";
+        String s2 = "\u0041\u0327\u0316\u0315\u0300";
+    
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        
+        // Now that the default collators are set to NO_DECOMPOSITION
+        // (as a result of fixing bug 4114077), we must set it explicitly
+        // when we're testing reordering behavior.  -- lwerner, 5/5/98
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        if (c.compare(s1,s2) != 0) {
+            errln("Combining chars were not reordered");
+        }
+    }
+    
+    // @bug 4087241
+    //
+    // string comparison errors in Scandinavian collators
+    //
+    public void Test4087241(/* char* par */) {
+        Locale da_DK = new Locale("da", "DK");
+        RuleBasedCollator c = null;
+        try {
+            c = (RuleBasedCollator) Collator.getInstance(da_DK);
+        } catch (Exception e) {
+            errln("Failed to create collator for da_DK locale");
+            return;
+        }
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u007a",       "\u003c", "\u00E6",            // z        < ae
+            "\u0061\u0308", "\u003c", "\u0061\u030A",      // a-unlaut < a-ring
+            "\u0059",       "\u003c", "\u0075\u0308",      // Y        < u-umlaut
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4087243
+    //
+    // CollationKey takes ignorable strings into account when it shouldn't
+    //
+    public void Test4087243(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String tests[] = {
+            "\u0031\u0032\u0033", "\u003d", "\u0031\u0032\u0033\u0001"    // 1 2 3  =  1 2 3 ctrl-A
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4092260
+    //
+    // Mu/micro conflict
+    // Micro symbol and greek lowercase letter Mu should sort identically
+    //
+    public void Test4092260(/* char* par */) {
+        Locale el = new Locale("el", "");
+        Collator c = null;
+        try {
+            c = Collator.getInstance(el);
+        } catch (Exception e) {
+            errln("Failed to create collator for el locale.");
+            return;
+        }
+        // These now have tertiary differences in UCA
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u00B5", "\u003d", "\u03BC",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4095316
+    //
+    public void Test4095316(/* char* par */) {
+        Locale el_GR = new Locale("el", "GR");
+        Collator c = null;
+        try {
+            c = Collator.getInstance(el_GR);
+        } catch (Exception e) {
+            errln("Failed to create collator for el_GR locale");
+            return;
+        }
+        // These now have tertiary differences in UCA
+        //c->setStrength(Collator::TERTIARY);
+        //c->setAttribute(UCOL_STRENGTH, UCOL_SECONDARY, status);
+        c.setStrength(Collator.SECONDARY);
+        String tests[] = {
+            "\u03D4", "\u003d", "\u03AB",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4101940
+    //
+    public void Test4101940(/* char* par */) {
+        RuleBasedCollator c = null;
+        String rules = "< a < b";
+        String nothing = "";
+        try {
+            c = new RuleBasedCollator(rules);
+        } catch (Exception e) {
+            errln("Failed to create RuleBasedCollator");
+            return;
+        }
+        CollationElementIterator i = c.getCollationElementIterator(nothing);
+        i.reset();
+        if (i.next() != CollationElementIterator.NULLORDER) {
+            errln("next did not return NULLORDER");
+        }
+    }
+    
+    // @bug 4103436
+    //
+    // Collator::compare not handling spaces properly
+    //
+    public void Test4103436(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String[] tests = {
+            "\u0066\u0069\u006c\u0065", "\u003c", "\u0066\u0069\u006c\u0065\u0020\u0061\u0063\u0063\u0065\u0073\u0073",
+            "\u0066\u0069\u006c\u0065", "\u003c", "\u0066\u0069\u006c\u0065\u0061\u0063\u0063\u0065\u0073\u0073",
+        };
+        compareArray(c, tests);
+    }
+    
+    // @bug 4114076
+    //
+    // Collation not Unicode conformant with Hangul syllables
+    //
+    public void Test4114076(/* char* par */) {
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+    
+        //
+        // With Canonical decomposition, Hangul syllables should get decomposed
+        // into Jamo, but Jamo characters should not be decomposed into
+        // conjoining Jamo
+        //
+        String test1[] = {
+            "\ud4db", "\u003d", "\u1111\u1171\u11b6"
+        };
+    
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, test1);
+    
+        // From UTR #15:
+        // *In earlier versions of Unicode, jamo characters like ksf
+        //  had compatibility mappings to kf + sf. These mappings were 
+        //  removed in Unicode 2.1.9 to ensure that Hangul syllables are maintained.)
+        // That is, the following test is obsolete as of 2.1.9
+    
+    //obsolete-    // With Full decomposition, it should go all the way down to
+    //obsolete-    // conjoining Jamo characters.
+    //obsolete-    //
+    //obsolete-    static const UChar test2[][CollationRegressionTest::MAX_TOKEN_LEN] =
+    //obsolete-    {
+    //obsolete-        {0xd4db, 0}, {0x3d, 0}, {0x1111, 0x116e, 0x1175, 0x11af, 0x11c2, 0}
+    //obsolete-    };
+    //obsolete-
+    //obsolete-    c->setDecomposition(Normalizer::DECOMP_COMPAT);
+    //obsolete-    compareArray(*c, test2, ARRAY_LENGTH(test2));
+    }
+
+    // @bug 4114077
+    //
+    // Collation with decomposition off doesn't work for Europe 
+    //
+    public void Test4114077(/* char* par */) {
+        // Ensure that we get the same results with decomposition off
+        // as we do with it on....
+        RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        c.setStrength(Collator.TERTIARY);
+        String test1[] = {
+            "\u00C0",                         "\u003d", "\u0041\u0300",            // Should be equivalent
+            "\u0070\u00ea\u0063\u0068\u0065", "\u003e", "\u0070\u00e9\u0063\u0068\u00e9",
+            "\u0204",                         "\u003d", "\u0045\u030F",
+            "\u01fa",                         "\u003d", "\u0041\u030a\u0301",    // a-ring-acute -> a-ring, acute
+                                                    //   -> a, ring, acute
+            "\u0041\u0300\u0316",             "\u003c", "\u0041\u0316\u0300"        // No reordering --> unequal
+        };
+    
+        c.setDecomposition(Collator.NO_DECOMPOSITION);
+        compareArray(c, test1);
+    
+        String test2[] = {
+            "\u0041\u0300\u0316", "\u003d", "\u0041\u0316\u0300"      // Reordering --> equal
+        };
+    
+        c.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        compareArray(c, test2);
+    }
+    
+    // @bug 4124632
+    //
+    // Collator::getCollationKey was hanging on certain character sequences
+    //
+    public void Test4124632(/* char* par */) {
+        Collator coll = null;
+        try {
+            coll = Collator.getInstance(Locale.JAPAN);
+        } catch (Exception e) {
+            errln("Failed to create collator for Locale::JAPAN");
+            return;
+        }
+        String test = "\u0041\u0308\u0062\u0063";
+        CollationKey key;
+        try {
+            key = coll.getCollationKey(test);
+            logln(key.getSourceString());
+        } catch (Exception e) {
+            errln("CollationKey creation failed.");
+        }
+    }
+    
+    // @bug 4132736
+    //
+    // sort order of french words with multiple accents has errors
+    //
+    public void Test4132736(/* char* par */) {
+        Collator c = null;
+        try {
+            c = Collator.getInstance(Locale.FRANCE);
+            c.setStrength(Collator.TERTIARY);
+        } catch (Exception e) {
+            errln("Failed to create a collator for Locale::getFrance()");
+        }
+    
+        String test1[] = {
+            "\u0065\u0300\u0065\u0301", "\u003c", "\u0065\u0301\u0065\u0300",
+            "\u0065\u0300\u0301",       "\u003c", "\u0065\u0301\u0300",
+        };
+        compareArray(c, test1);
+    }
+    
+    // @bug 4133509
+    //
+    // The sorting using java.text.CollationKey is not in the exact order
+    //
+    public void Test4133509(/* char* par */) {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        String test1[] = {
+            "\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e", "\u003c", "\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0049\u006e\u0049\u006e\u0069\u0074\u0069\u0061\u006c\u0069\u007a\u0065\u0072\u0045\u0072\u0072\u006f\u0072",
+            "\u0047\u0072\u0061\u0070\u0068\u0069\u0063\u0073",       "\u003c", "\u0047\u0072\u0061\u0070\u0068\u0069\u0063\u0073\u0045\u006e\u0076\u0069\u0072\u006f\u006e\u006d\u0065\u006e\u0074",
+            "\u0053\u0074\u0072\u0069\u006e\u0067",                   "\u003c", "\u0053\u0074\u0072\u0069\u006e\u0067\u0042\u0075\u0066\u0066\u0065\u0072",
+        };
+    
+        compareArray(en_us, test1);
+    }
+    
+    // @bug 4139572
+    //
+    // getCollationKey throws exception for spanish text 
+    // Cannot reproduce this bug on 1.2, however it DOES fail on 1.1.6
+    //
+    public void Test4139572(/* char* par */) {
+        //
+        // Code pasted straight from the bug report
+        // (and then translated to C++ ;-)
+        //
+        // create spanish locale and collator
+        Locale l = new Locale("es", "es");
+        Collator col = null;
+        try {
+            col = Collator.getInstance(l);
+        } catch (Exception e) {
+            errln("Failed to create a collator for es_es locale.");
+            return;
+        }
+        CollationKey key = null;
+        // this spanish phrase kills it!
+        try {
+            key = col.getCollationKey("Nombre De Objeto");
+            logln("source:" + key.getSourceString());
+        } catch (Exception e) {
+            errln("Error creating CollationKey for \"Nombre De Ojbeto\"");
+        }
+    }
+    
+    // @bug 4141640
+    //
+    // Support for Swedish gone in 1.1.6 (Can't create Swedish collator) 
+    //
+    public void Test4141640(/* char* par */) {
+        //
+        // Rather than just creating a Swedish collator, we might as well
+        // try to instantiate one for every locale available on the system
+        // in order to prevent this sort of bug from cropping up in the future
+        //
+        Locale locales[] = Collator.getAvailableLocales();
+        
+        for (int i = 0; i < locales.length; i += 1)
+        {
+            Collator c = null;
+            try {
+                c = Collator.getInstance(locales[i]);
+                logln("source: " + c.getStrength());
+            } catch (Exception e) {
+                String msg = "";
+                msg += "Could not create collator for locale ";
+                msg += locales[i].getDisplayName();
+                errln(msg);
+            }
+        }
+    }
+    
+    private void checkListOrder(String[] sortedList, Collator c) {
+        // this function uses the specified Collator to make sure the
+        // passed-in list is already sorted into ascending order
+        for (int i = 0; i < sortedList.length - 1; i++) {
+            if (c.compare(sortedList[i], sortedList[i + 1]) >= 0) {
+                errln("List out of order at element #" + i + ": "
+                        + sortedList[i] + " >= "
+                        + sortedList[i + 1]);
+            }
+        }
+    }
+
+    public void Test4171974() {
+        // test French accent ordering more thoroughly
+        /*String[] frenchList = {
+            "\u0075\u0075",     // u u
+            "\u00fc\u0075",     // u-umlaut u
+            "\u01d6\u0075",     // u-umlaut-macron u
+            "\u016b\u0075",     // u-macron u
+            "\u1e7b\u0075",     // u-macron-umlaut u
+            "\u0075\u00fc",     // u u-umlaut
+            "\u00fc\u00fc",     // u-umlaut u-umlaut
+            "\u01d6\u00fc",     // u-umlaut-macron u-umlaut
+            "\u016b\u00fc",     // u-macron u-umlaut
+            "\u1e7b\u00fc",     // u-macron-umlaut u-umlaut
+            "\u0075\u01d6",     // u u-umlaut-macron
+            "\u00fc\u01d6",     // u-umlaut u-umlaut-macron
+            "\u01d6\u01d6",     // u-umlaut-macron u-umlaut-macron
+            "\u016b\u01d6",     // u-macron u-umlaut-macron
+            "\u1e7b\u01d6",     // u-macron-umlaut u-umlaut-macron
+            "\u0075\u016b",     // u u-macron
+            "\u00fc\u016b",     // u-umlaut u-macron
+            "\u01d6\u016b",     // u-umlaut-macron u-macron
+            "\u016b\u016b",     // u-macron u-macron
+            "\u1e7b\u016b",     // u-macron-umlaut u-macron
+            "\u0075\u1e7b",     // u u-macron-umlaut
+            "\u00fc\u1e7b",     // u-umlaut u-macron-umlaut
+            "\u01d6\u1e7b",     // u-umlaut-macron u-macron-umlaut
+            "\u016b\u1e7b",     // u-macron u-macron-umlaut
+            "\u1e7b\u1e7b"      // u-macron-umlaut u-macron-umlaut
+        };
+        Collator french = Collator.getInstance(Locale.FRENCH);
+
+        logln("Testing French order...");
+        checkListOrder(frenchList, french);
+
+        logln("Testing French order without decomposition...");
+        french.setDecomposition(Collator.NO_DECOMPOSITION);
+        checkListOrder(frenchList, french);*/
+
+        String[] englishList = {
+            "\u0075\u0075",     // u u
+            "\u0075\u00fc",     // u u-umlaut
+            "\u0075\u01d6",     // u u-umlaut-macron
+            "\u0075\u016b",     // u u-macron
+            "\u0075\u1e7b",     // u u-macron-umlaut
+            "\u00fc\u0075",     // u-umlaut u
+            "\u00fc\u00fc",     // u-umlaut u-umlaut
+            "\u00fc\u01d6",     // u-umlaut u-umlaut-macron
+            "\u00fc\u016b",     // u-umlaut u-macron
+            "\u00fc\u1e7b",     // u-umlaut u-macron-umlaut
+            "\u01d6\u0075",     // u-umlaut-macron u
+            "\u01d6\u00fc",     // u-umlaut-macron u-umlaut
+            "\u01d6\u01d6",     // u-umlaut-macron u-umlaut-macron
+            "\u01d6\u016b",     // u-umlaut-macron u-macron
+            "\u01d6\u1e7b",     // u-umlaut-macron u-macron-umlaut
+            "\u016b\u0075",     // u-macron u
+            "\u016b\u00fc",     // u-macron u-umlaut
+            "\u016b\u01d6",     // u-macron u-umlaut-macron
+            "\u016b\u016b",     // u-macron u-macron
+            "\u016b\u1e7b",     // u-macron u-macron-umlaut
+            "\u1e7b\u0075",     // u-macron-umlaut u
+            "\u1e7b\u00fc",     // u-macron-umlaut u-umlaut
+            "\u1e7b\u01d6",     // u-macron-umlaut u-umlaut-macron
+            "\u1e7b\u016b",     // u-macron-umlaut u-macron
+            "\u1e7b\u1e7b"      // u-macron-umlaut u-macron-umlaut
+        };
+        Collator english = Collator.getInstance(Locale.ENGLISH);
+
+        logln("Testing English order...");
+        checkListOrder(englishList, english);
+
+        logln("Testing English order without decomposition...");
+        english.setDecomposition(Collator.NO_DECOMPOSITION);
+        checkListOrder(englishList, english);
+    }
+
+    public void Test4179216() throws Exception {
+        // you can position a CollationElementIterator in the middle of
+        // a contracting character sequence, yielding a bogus collation
+        // element
+        RuleBasedCollator coll = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        coll = new RuleBasedCollator(coll.getRules()
+                + " & C < ch , cH , Ch , CH < cat < crunchy");
+        String testText = "church church catcatcher runcrunchynchy";
+        CollationElementIterator iter = coll.getCollationElementIterator(
+                testText);
+
+        // test that the "ch" combination works properly
+        iter.setOffset(4);
+        int elt4 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.reset();
+        int elt0 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(5);
+        int elt5 = CollationElementIterator.primaryOrder(iter.next());
+
+        if (elt4 != elt0 || elt5 != elt0)
+            errln("The collation elements at positions 0 (" + elt0 + "), 4 ("
+                    + elt4 + "), and 5 (" + elt5 + ") don't match.");
+
+        // test that the "cat" combination works properly
+        iter.setOffset(14);
+        int elt14 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(15);
+        int elt15 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(16);
+        int elt16 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(17);
+        int elt17 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(18);
+        int elt18 = CollationElementIterator.primaryOrder(iter.next());
+
+        iter.setOffset(19);
+        int elt19 = CollationElementIterator.primaryOrder(iter.next());
+
+        if (elt14 != elt15 || elt14 != elt16 || elt14 != elt17
+                || elt14 != elt18 || elt14 != elt19)
+            errln("\"cat\" elements don't match: elt14 = " + elt14 + ", elt15 = "
+            + elt15 + ", elt16 = " + elt16 + ", elt17 = " + elt17
+            + ", elt18 = " + elt18 + ", elt19 = " + elt19);
+
+        // now generate a complete list of the collation elements,
+        // first using next() and then using setOffset(), and
+        // make sure both interfaces return the same set of elements
+        iter.reset();
+
+        int elt = iter.next();
+        int count = 0;
+        while (elt != CollationElementIterator.NULLORDER) {
+            ++count;
+            elt = iter.next();
+        }
+
+        String[] nextElements = new String[count];
+        String[] setOffsetElements = new String[count];
+        int lastPos = 0;
+
+        iter.reset();
+        elt = iter.next();
+        count = 0;
+        while (elt != CollationElementIterator.NULLORDER) {
+            nextElements[count++] = testText.substring(lastPos, iter.getOffset());
+            lastPos = iter.getOffset();
+            elt = iter.next();
+        }
+        count = 0;
+        for (int i = 0; i < testText.length(); ) {
+            iter.setOffset(i);
+            lastPos = iter.getOffset();
+            elt = iter.next();
+            setOffsetElements[count++] = testText.substring(lastPos, iter.getOffset());
+            i = iter.getOffset();
+        }
+        for (int i = 0; i < nextElements.length; i++) {
+            if (nextElements[i].equals(setOffsetElements[i])) {
+                logln(nextElements[i]);
+            } else {
+                errln("Error: next() yielded " + nextElements[i] + ", but setOffset() yielded "
+                    + setOffsetElements[i]);
+            }
+        }
+    }
+
+    public void Test4216006() throws Exception {
+        // rule parser barfs on "<\u00e0=a\u0300", and on other cases
+        // where the same token (after normalization) appears twice in a row
+        boolean caughtException = false;
+        try {
+            new RuleBasedCollator("\u00e0<a\u0300");
+        }
+        catch (ParseException e) {
+            caughtException = true;
+        }
+        if (!caughtException) {
+            throw new Exception("\"a<a\" collation sequence didn't cause parse error!");
+        }
+
+        RuleBasedCollator collator = new RuleBasedCollator("<\u00e0=a\u0300");
+        //commented by Kevin 2003/10/21 
+        //for "FULL_DECOMPOSITION is not supported here." in ICU4J DOC
+        //collator.setDecomposition(Collator.FULL_DECOMPOSITION);
+        collator.setStrength(Collator.IDENTICAL);
+
+        String[] tests = {
+            "a\u0300", "=", "\u00e0",
+            "\u00e0",  "=", "a\u0300"
+        };
+
+        compareArray(collator, tests);
+    }
+
+    // CollationElementIterator.previous broken for expanding char sequences
+    //
+    public void Test4179686() throws Exception {
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        // Create a collator with a few expanding character sequences in it....
+        RuleBasedCollator coll = new RuleBasedCollator(en_us.getRules()
+                                                    + " & ae ; \u00e4 & AE ; \u00c4"
+                                                    + " & oe ; \u00f6 & OE ; \u00d6"
+                                                    + " & ue ; \u00fc & UE ; \u00dc");
+
+        String text = "T\u00f6ne"; // o-umlaut
+
+        CollationElementIterator iter = coll.getCollationElementIterator(text);
+        Vector elements = new Vector();
+        int elem;
+
+        // Iterate forward and collect all of the elements into a Vector
+        while ((elem = iter.next()) != CollationElementIterator.NULLORDER) {
+            elements.addElement(new Integer(elem));
+        }
+
+        // Now iterate backward and make sure they're the same
+        int index = elements.size() - 1;
+        while ((elem = iter.previous()) != CollationElementIterator.NULLORDER) {
+            int expect = ((Integer)elements.elementAt(index)).intValue();
+
+            if (elem != expect) {
+                errln("Mismatch at index " + index
+                      + ": got " + Integer.toString(elem,16)
+                      + ", expected " + Integer.toString(expect,16));
+            }
+            index--;
+        }
+    }
+
+    protected void init()throws Exception{
+    }
+    
+    public void Test4244884() throws Exception {
+        RuleBasedCollator coll = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        coll = new RuleBasedCollator(coll.getRules()
+                + " & C < ch , cH , Ch , CH < cat < crunchy");
+
+        String[] testStrings = new String[] {
+            "car",
+            "cave",
+            "clamp",
+            "cramp",
+            "czar",
+            "church",
+            "catalogue",
+            "crunchy",
+            "dog"
+        };
+
+        for (int i = 1; i < testStrings.length; i++) {
+            if (coll.compare(testStrings[i - 1], testStrings[i]) >= 0) {
+                errln("error: \"" + testStrings[i - 1]
+                    + "\" is greater than or equal to \"" + testStrings[i]
+                    + "\".");
+            }
+        }
+    }
+
+    //  CollationElementIterator set doesn't work propertly with next/prev
+    public void Test4663220() {
+        RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        java.text.StringCharacterIterator stringIter = new java.text.StringCharacterIterator("fox");
+        CollationElementIterator iter = collator.getCollationElementIterator(stringIter);
+    
+        int[] elements_next = new int[3];
+        logln("calling next:");
+        for (int i = 0; i < 3; ++i) {
+            logln("[" + i + "] " + (elements_next[i] = iter.next()));
+        }
+    
+        int[] elements_fwd = new int[3];
+        logln("calling set/next:");
+        for (int i = 0; i < 3; ++i) {
+            iter.setOffset(i);
+            logln("[" + i + "] " + (elements_fwd[i] = iter.next()));
+        }
+    
+        for (int i = 0; i < 3; ++i) {
+            if (elements_next[i] != elements_fwd[i]) {
+                errln("mismatch at position " + i + 
+                ": " + elements_next[i] + 
+                " != " + elements_fwd[i]);
+            }
+        }
+    }
+    
+    /* RuleBasedCollator not subclassable
+     * @bug 4146160
+    //
+    // RuleBasedCollator doesn't use createCollationElementIterator internally
+    //
+    public void Test4146160() {
+        //
+        // Use a custom collator class whose createCollationElementIterator
+        // methods increment a count....
+        //     
+        RuleBasedCollator en_us = (RuleBasedCollator) Collator.getInstance(Locale.US);
+        My4146160Collator.count = 0;
+        My4146160Collator mc = null;
+        try {
+            mc = new My4146160Collator(en_us);
+        } catch (Exception e) {
+            errln("Failed to create a My4146160Collator.");
+            return;
+        }
+    
+        CollationKey key = null;
+        try {
+            key = mc.getCollationKey("1");
+        } catch (Exception e) {
+            errln("Failure to get a CollationKey from a My4146160Collator.");
+            return;
+        }
+    
+        if (My4146160Collator.count < 1) {
+            errln("My4146160Collator.getCollationElementIterator not called for getCollationKey");
+        }
+    
+        My4146160Collator.count = 0;
+        mc.compare("1", "2");
+    
+        if (My4146160Collator.count < 1) {
+            errln("My4146160Collator.getCollationElementIterator not called for compare");
+        }
+    }*/
+}
+
+/* RuleBasedCollator not subclassable
+ * class My4146160Collator extends RuleBasedCollator {
+    static int count = 0;
+
+    public My4146160Collator(RuleBasedCollator rbc) throws Exception {
+        super(rbc.getRules());
+    }
+
+    public CollationElementIterator getCollationElementIterator(String text) {
+        count += 1;
+        return super.getCollationElementIterator(text);
+    }
+    
+    public CollationElementIterator getCollationElementIterator(java.text.CharacterIterator text) {
+        count += 1;
+        return super.getCollationElementIterator(text);
+    }
+}
+*/
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java b/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
new file mode 100644
index 0000000..1fd625c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
@@ -0,0 +1,526 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.collator;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.MissingResourceException;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.Collator.CollatorFactory;
+import com.ibm.icu.util.ULocale;
+
+public class CollationServiceTest extends TestFmwk {
+    public static void main(String[] args) {
+        new CollationServiceTest().run(args);
+    }
+
+    public void TestRegister() {
+        // register a singleton
+        Collator frcol = Collator.getInstance(ULocale.FRANCE);
+        Collator uscol = Collator.getInstance(ULocale.US);
+            
+        { // try override en_US collator
+            Object key = Collator.registerInstance(frcol, ULocale.US);
+            Collator ncol = Collator.getInstance(ULocale.US);
+            if (!frcol.equals(ncol)) {
+                errln("register of french collator for en_US failed");
+            }
+
+            // coverage
+            Collator test = Collator.getInstance(ULocale.GERMANY); // CollatorFactory.handleCreate
+            if (!test.getLocale(ULocale.VALID_LOCALE).equals(ULocale.GERMANY)) {
+                errln("Collation from Germany is really " + test.getLocale(ULocale.VALID_LOCALE));
+            }
+
+            if (!Collator.unregister(key)) {
+                errln("failed to unregister french collator");
+            }
+            ncol = Collator.getInstance(ULocale.US);
+            if (!uscol.equals(ncol)) {
+                errln("collator after unregister does not match original");
+            }
+        }
+
+        ULocale fu_FU = new ULocale("fu_FU_FOO");
+
+        { // try create collator for new locale
+            Collator fucol = Collator.getInstance(fu_FU);
+            Object key = Collator.registerInstance(frcol, fu_FU);
+            Collator ncol = Collator.getInstance(fu_FU);
+            if (!frcol.equals(ncol)) {
+                errln("register of fr collator for fu_FU failed");
+            }
+            
+            ULocale[] locales = Collator.getAvailableULocales();
+            boolean found = false;
+            for (int i = 0; i < locales.length; ++i) {
+                if (locales[i].equals(fu_FU)) {
+                    found = true;
+                    break;
+                }
+            }
+            if (!found) {
+                errln("new locale fu_FU not reported as supported locale");
+            }
+            try{
+                String name = Collator.getDisplayName(fu_FU);
+                if (!"fu (FU, FOO)".equals(name)) {
+                    errln("found " + name + " for fu_FU");
+                }
+            }catch(MissingResourceException ex){
+                warnln("Could not load locale data."); 
+            }
+            try{
+                String name = Collator.getDisplayName(fu_FU, fu_FU);
+                if (!"fu (FU, FOO)".equals(name)) {
+                    errln("found " + name + " for fu_FU");
+                }
+            }catch(MissingResourceException ex){
+                warnln("Could not load locale data."); 
+            }
+
+            if (!Collator.unregister(key)) {
+                errln("failed to unregister french collator");
+            }
+            ncol = Collator.getInstance(fu_FU);
+            if (!fucol.equals(ncol)) {
+                errln("collator after unregister does not match original fu_FU");
+            }
+        }
+
+        {
+            // coverage after return to default 
+            ULocale[] locales = Collator.getAvailableULocales();
+    
+            for (int i = 0; i < locales.length; ++i) {
+                if (locales[i].equals(fu_FU)) {
+                    errln("new locale fu_FU not reported as supported locale");
+                    break;
+                }
+            }
+
+            Collator ncol = Collator.getInstance(ULocale.US);
+            if (!ncol.getLocale(ULocale.VALID_LOCALE).equals(ULocale.US)) {
+                errln("Collation from US is really " + ncol.getLocale(ULocale.VALID_LOCALE));
+            }
+        }
+    }
+
+    public void TestRegisterFactory() {
+
+        class CollatorInfo {
+            ULocale locale;
+            Collator collator;
+            Map displayNames; // locale -> string
+
+            CollatorInfo(ULocale locale, Collator collator, Map displayNames) {
+                this.locale = locale;
+                this.collator = collator;
+                this.displayNames = displayNames;
+            }
+
+            String getDisplayName(ULocale displayLocale) {
+                String name = null;
+                if (displayNames != null) {
+                    name = (String)displayNames.get(displayLocale);
+                }
+                if (name == null) {
+                    name = locale.getDisplayName(displayLocale);
+                }
+                return name;
+            }
+        }
+
+        class TestFactory extends CollatorFactory {
+            private Map map;
+            private Set ids;
+            
+            TestFactory(CollatorInfo[] info) {
+                map = new HashMap();
+                for (int i = 0; i < info.length; ++i) {
+                    CollatorInfo ci = info[i];
+                    map.put(ci.locale, ci);
+                }
+            }
+
+            public Collator createCollator(ULocale loc) {
+                CollatorInfo ci = (CollatorInfo)map.get(loc);
+                if (ci != null) {
+                    return ci.collator;
+                }
+                return null;
+            }
+
+            public String getDisplayName(ULocale objectLocale, ULocale displayLocale) {
+                CollatorInfo ci = (CollatorInfo)map.get(objectLocale);
+                if (ci != null) {
+                    return ci.getDisplayName(displayLocale);
+                }
+                return null;
+            }
+
+            public Set getSupportedLocaleIDs() {
+                if (ids == null) {
+                    HashSet set = new HashSet();
+                    Iterator iter = map.keySet().iterator();
+                    while (iter.hasNext()) {
+                        ULocale locale = (ULocale)iter.next();
+                        String id = locale.toString();
+                        set.add(id);
+                    }
+                    ids = Collections.unmodifiableSet(set);
+                }
+                return ids;
+            }
+        }
+    
+        class TestFactoryWrapper extends CollatorFactory {
+            CollatorFactory delegate;
+    
+            TestFactoryWrapper(CollatorFactory delegate) {
+                this.delegate = delegate;
+            }
+    
+            public Collator createCollator(ULocale loc) {
+                return delegate.createCollator(loc);
+            }
+    
+            // use CollatorFactory getDisplayName(ULocale, ULocale) for coverage
+    
+            public Set getSupportedLocaleIDs() {
+                return delegate.getSupportedLocaleIDs();
+            }
+        }
+
+        ULocale fu_FU = new ULocale("fu_FU");
+        ULocale fu_FU_FOO = new ULocale("fu_FU_FOO");
+
+        Map fuFUNames = new HashMap();
+        fuFUNames.put(fu_FU, "ze leetle bunny Fu-Fu");
+        fuFUNames.put(fu_FU_FOO, "zee leetel bunny Foo-Foo");
+        fuFUNames.put(ULocale.US, "little bunny Foo Foo");
+
+        Collator frcol = Collator.getInstance(ULocale.FRANCE);
+       /* Collator uscol = */Collator.getInstance(ULocale.US);
+        Collator gecol = Collator.getInstance(ULocale.GERMANY);
+        Collator jpcol = Collator.getInstance(ULocale.JAPAN);
+        Collator fucol = Collator.getInstance(fu_FU);
+        
+        CollatorInfo[] info = {
+            new CollatorInfo(ULocale.US, frcol, null),
+            new CollatorInfo(ULocale.FRANCE, gecol, null),
+            new CollatorInfo(fu_FU, jpcol, fuFUNames),
+        };
+        TestFactory factory = null;
+        try{
+            factory = new TestFactory(info);
+        }catch(MissingResourceException ex){
+            warnln("Could not load locale data."); 
+        }
+        // coverage
+        {
+            TestFactoryWrapper wrapper = new TestFactoryWrapper(factory); // in java, gc lets us easily multiply reference!
+            Object key = Collator.registerFactory(wrapper);
+            String name = null;
+            try{
+                name = Collator.getDisplayName(fu_FU, fu_FU_FOO);
+            }catch(MissingResourceException ex){
+                warnln("Could not load locale data."); 
+            }
+            logln("*** default name: " + name);
+            Collator.unregister(key);
+    
+            ULocale bar_BAR = new ULocale("bar_BAR");
+            Collator col = Collator.getInstance(bar_BAR);
+            if (!col.getLocale(ULocale.VALID_LOCALE).equals(ULocale.getDefault())) {
+                errln("Collation from bar_BAR is really " + col.getLocale(ULocale.VALID_LOCALE));
+            }
+        }
+
+        int n1 = checkAvailable("before registerFactory");
+        
+        {
+            Object key = Collator.registerFactory(factory);
+            
+            int n2 = checkAvailable("after registerFactory");
+            
+            Collator ncol = Collator.getInstance(ULocale.US);
+            if (!frcol.equals(ncol)) {
+                errln("frcoll for en_US failed");
+            }
+
+            ncol = Collator.getInstance(fu_FU_FOO);
+            if (!jpcol.equals(ncol)) {
+                errln("jpcol for fu_FU_FOO failed, got: " + ncol);
+            }
+            
+            ULocale[] locales = Collator.getAvailableULocales();
+            boolean found = false;
+            for (int i = 0; i < locales.length; ++i) {
+                if (locales[i].equals(fu_FU)) {
+                    found = true;
+                    break;
+                }
+            }
+            if (!found) {
+                errln("new locale fu_FU not reported as supported locale");
+            }
+            
+            String name = Collator.getDisplayName(fu_FU);
+            if (!"little bunny Foo Foo".equals(name)) {
+                errln("found " + name + " for fu_FU");
+            }
+
+            name = Collator.getDisplayName(fu_FU, fu_FU_FOO);
+            if (!"zee leetel bunny Foo-Foo".equals(name)) {
+                errln("found " + name + " for fu_FU in fu_FU_FOO");
+            }
+
+            if (!Collator.unregister(key)) {
+                errln("failed to unregister factory");
+            }
+
+            int n3 = checkAvailable("after unregister");
+            assertTrue("register increases count", n2>n1);
+            assertTrue("unregister restores count", n3==n1);
+            
+            ncol = Collator.getInstance(fu_FU);
+            if (!fucol.equals(ncol)) {
+                errln("collator after unregister does not match original fu_FU");
+            }
+        }
+    }
+
+    /**
+     * Check the integrity of the results of Collator.getAvailableULocales().
+     * Return the number of items returned.
+     */
+    int checkAvailable(String msg) {
+        Locale locs[] = Collator.getAvailableLocales();
+        if (!assertTrue("getAvailableLocales != null", locs!=null)) return -1;
+        checkArray(msg, locs, null);
+        ULocale ulocs[] = Collator.getAvailableULocales();
+        if (!assertTrue("getAvailableULocales != null", ulocs!=null)) return -1;
+        checkArray(msg, ulocs, null);
+        // This is not true because since ULocale objects with script code cannot be 
+        // converted to Locale objects
+        //assertTrue("getAvailableLocales().length == getAvailableULocales().length", locs.length == ulocs.length);
+        return locs.length;
+    }
+    
+    private static final String KW[] = {
+        "collation"
+    };
+
+    private static final String KWVAL[] = {
+        "phonebook",
+        "stroke"
+    };
+
+    public void TestSeparateTrees() {
+        String kw[] = Collator.getKeywords();
+        if (!assertTrue("getKeywords != null", kw!=null)) return;
+        checkArray("getKeywords", kw, KW);
+        
+        String kwval[] = Collator.getKeywordValues(KW[0]);
+        if (!assertTrue("getKeywordValues != null", kwval!=null)) return;
+        checkArray("getKeywordValues", kwval, KWVAL);
+
+        boolean isAvailable[] = new boolean[1];
+        ULocale equiv = Collator.getFunctionalEquivalent(KW[0],
+                                                         new ULocale("fr"),
+                                                         isAvailable);
+        if (assertTrue("getFunctionalEquivalent(fr)!=null", equiv!=null)) {
+            assertEquals("getFunctionalEquivalent(fr)", "fr", equiv.toString());
+        }
+        assertTrue("getFunctionalEquivalent(fr).isAvailable==true",
+                   isAvailable[0] == true);
+        
+        equiv = Collator.getFunctionalEquivalent(KW[0],
+                                                 new ULocale("fr_FR"),
+                                                 isAvailable);
+        if (assertTrue("getFunctionalEquivalent(fr_FR)!=null", equiv!=null)) {
+            assertEquals("getFunctionalEquivalent(fr_FR)", "fr", equiv.toString());
+        }
+        assertTrue("getFunctionalEquivalent(fr_FR).isAvailable==true",
+                   isAvailable[0] == true);
+
+        equiv = Collator.getFunctionalEquivalent(KW[0], new ULocale("zh_Hans"));
+        if (assertTrue("getFunctionalEquivalent(zh_Hans)!=null", equiv!=null)) {
+            assertEquals("getFunctionalEquivalent(zh_Hans)", "zh", equiv.toString());
+        }
+    }
+    
+    public void TestGetFunctionalEquivalent() {
+        String kw[] = Collator.getKeywords();
+        final String DATA[] = { 
+                          "de", "de", "t",
+                          "de@collation=direct", "de", "t",
+                          "de@collation=traditional", "de", "t",
+                          "de@collation=gb2312han", "de", "t",
+                          "de@collation=stroke", "de", "t",
+                          "de@collation=pinyin", "de", "t",
+                          "de@collation=phonebook", "de@collation=phonebook", "t",
+                          "de@collation=big5han", "de", "t",
+                          "de_AT", "de", "t",
+                          "de_AT@collation=direct", "de", "t",
+                          "de_AT@collation=traditional", "de", "t",
+                          "de_AT@collation=gb2312han", "de", "t",
+                          "de_AT@collation=stroke", "de", "t",
+                          "de_AT@collation=pinyin", "de", "t",
+                          "de_AT@collation=phonebook", "de@collation=phonebook", "t",
+                          "de_AT@collation=big5han", "de", "t",
+                          "nl", "root", "t",
+                          "nl@collation=direct", "root", "t",
+                          "nl_BE", "root", "t",
+                          "nl_BE@collation=direct", "root", "t",
+                          "nl_BE@collation=traditional", "root", "t",
+                          "nl_BE@collation=gb2312han", "root", "t",
+                          "nl_BE@collation=stroke", "root", "t",
+                          "nl_BE@collation=pinyin", "root", "t",
+                          "nl_BE@collation=big5han", "root", "t",
+                          "nl_BE@collation=phonebook", "root", "t",
+                          "en_US_VALLEYGIRL","en","f"
+                        };
+        final int DATA_COUNT=(DATA.length/3);
+        
+        for(int i=0;i<DATA_COUNT;i++) {
+            boolean isAvailable[] = new boolean[1];
+            ULocale input = new ULocale(DATA[(i*3)+0]);
+            ULocale expect = new ULocale(DATA[(i*3)+1]);
+            boolean expectAvailable = DATA[(i*3)+2].equals("t");
+            ULocale actual = Collator.getFunctionalEquivalent(kw[0],input,isAvailable);
+            if(!actual.equals(expect) || (expectAvailable!=isAvailable[0])) {
+                errln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + new Boolean(isAvailable[0]) + ", " +
+                        "expected " + expect + " avail " + new Boolean(expectAvailable));
+            } else {
+                logln("#" + i + ": Collator.getFunctionalEquivalent(" + input + ")=" + actual + ", avail " + new Boolean(isAvailable[0]));
+            }
+        }
+    }
+
+//    public void PrintFunctionalEquivalentList() {
+//        ULocale[] locales = Collator.getAvailableULocales();
+//        String[] keywords = Collator.getKeywords();
+//        logln("Collation");
+//        logln("Possible keyword=values pairs:");
+//        for (int i = 0; i < Collator.getKeywords().length; ++i) {
+//                String[] values = Collator.getKeywordValues(keywords[i]);
+//                for (int j = 0; j < values.length; ++j) {
+//                        System.out.println(keywords[i] + "=" + values[j]);
+//                }
+//        }
+//        logln("Differing Collators:");
+//        boolean[] isAvailable = {true};
+//        for (int k = 0; k < locales.length; ++k) {
+//                logln(locales[k].getDisplayName(ULocale.ENGLISH) + " [" +locales[k] + "]");
+//                for (int i = 0; i < Collator.getKeywords().length; ++i) {
+//                        ULocale base = Collator.getFunctionalEquivalent(keywords[i],locales[k]);
+//                        String[] values = Collator.getKeywordValues(keywords[i]);
+//                        for (int j = 0; j < Collator.getKeywordValues(keywords[i]).length;++j) {                          
+//                                ULocale other = Collator.getFunctionalEquivalent(keywords[i], 
+//                                        new ULocale(locales[k] + "@" + keywords[i] + "=" + values[j]),
+//                                        isAvailable);
+//                                if (isAvailable[0] && !other.equals(base)) {
+//                                        logln("\t" + keywords[i] + "=" + values[j] + ";\t" + base + ";\t" + other);
+//                                }
+//                        }
+//                }
+//        }
+//    }
+    
+    public void TestGetKeywordValues(){
+        ArrayList got = new ArrayList();
+        ArrayList expected = new ArrayList();
+        
+        String expectedResult = "";
+        String gotResult = "";
+        
+        String inputLocale[] = {
+            "zh__PINYIN",
+            "zh_TW_STROKE",
+            "zh_MO",
+            "zh",
+            "zh_Hant_MO",
+            "uk_UA",
+            "sr_Latn_ME",
+            "sr_Latn",
+            "sr",
+            "de",
+            "de__PHONEBOOK",
+            "no_NO",
+            "pa_Guru_IN",
+            "es",
+            "es__TRADITIONAL",
+            "ko_KR",
+            "kok",
+            "ms_MY",
+            "ab_AA_jdhdj@collation=xyz",
+            "de__PHONEBOOK@calendar=japanese",
+        };
+        
+        String expectedCollationValues[][] = {
+                {"pinyin"},
+                {"stroke"},
+                {"big5han","pinyin","gb2312han","standard","stroke","unihan"},
+                {"big5han","pinyin","gb2312han","standard","stroke","unihan"},
+                {"big5han","pinyin","gb2312han","standard","stroke","unihan"},
+                {"standard"},
+                {"standard"},
+                {"standard"},
+                {"standard"},
+                {"phonebook","standard"},
+                {"phonebook"},
+                {"standard"},
+                {"standard"},
+                {"standard","traditional"},
+                {"traditional"},
+                {"standard","unihan"},
+                {"standard"},
+                {"standard"},
+                {"xyz"},
+                {"phonebook"},
+        };
+        
+        logln("Starting collation keyword value test");
+        for(int i=0;i<inputLocale.length;i++){
+            ULocale loc = new ULocale(inputLocale[i]);
+            for(int j=0;j<expectedCollationValues[i].length;j++){
+                expected.add(expectedCollationValues[i][j]);
+                expectedResult += expectedCollationValues[i][j]+" ";
+               
+            }
+            Collections.sort(expected);
+            String[] s = Collator.getKeywordValues("collation", loc, true);
+            String s1;
+            for(int j=0;j<s.length;j++){
+                got.add((s1=s[j]));
+                gotResult +=s1+" ";
+            }
+            
+            Collections.sort(got);
+            if(got.equals(expected)){
+                logln("PASS: Locale :"+inputLocale[i]);
+                logln("EXPECTED :"+expectedResult);
+                logln("GOT      :"+gotResult);
+            }else{
+                errln("FAIL: Locale :"+inputLocale[i]+" EXPECTED :"+expectedResult+" GOT :"+gotResult);
+            }
+            gotResult=expectedResult="";
+            got.clear();
+            expected.clear();
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java b/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
new file mode 100644
index 0000000..127a8aa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
@@ -0,0 +1,181 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationSpanishTest
+ * Source File: $ICU4CRoot/source/test/intltest/escoll.cpp
+ **/
+ 
+ package com.ibm.icu.dev.test.collator;
+ 
+ import com.ibm.icu.dev.test.*;
+ import com.ibm.icu.text.*;
+ import java.util.Locale;
+ 
+ public class CollationSpanishTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationSpanishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x61, 0x6c, 0x69, 0x61, 0x73},
+        {0x45, 0x6c, 0x6c, 0x69, 0x6f, 0x74},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+        {0x61, 0x63, 0x48, 0x63},
+        {0x61, 0x63, 0x63},
+        {0x61, 0x6c, 0x69, 0x61, 0x73},
+        {0x61, 0x63, 0x48, 0x63},
+        {0x61, 0x63, 0x63},
+        {0x48, 0x65, 0x6c, 0x6c, 0x6f},
+    };
+
+    private static char[][] testTargetCases = {
+        {0x61, 0x6c, 0x6c, 0x69, 0x61, 0x73},
+        {0x45, 0x6d, 0x69, 0x6f, 0x74},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x6c, 0x6c, 0x69, 0x61, 0x73},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x61, 0x43, 0x48, 0x63},
+        {0x68, 0x65, 0x6c, 0x6c, 0x4f},
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        1,
+        -1,
+        -1,
+        // test primary > 5
+        -1,
+        0,
+        -1,
+        0
+    };
+    
+    //static public Collator myCollation = Collator.getInstance(new Locale("es", "ES"));
+    
+    private Collator myCollation = null;
+    
+    public CollationSpanishTest() {
+
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(new Locale("es", "ES"));
+    }
+    public void TestTertiary(){
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 5 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    public void TestPrimary(){
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 5; i < 9; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    // amin test routine, tests rules specific to the spanish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationTest.java b/src/com/ibm/icu/dev/test/collator/CollationTest.java
new file mode 100644
index 0000000..f636399
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationTest.java
@@ -0,0 +1,466 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Vector;
+
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.CollationElementIterator;
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.RawCollationKey;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UTF16;
+
+public class CollationTest extends ModuleTest{
+    // public methods --------------------------------------------------------
+
+    public static void main(String[] args) throws Exception{
+        new CollationTest().run(args);
+    }
+
+    public CollationTest() {
+        super("com/ibm/icu/dev/data/testdata/", "DataDrivenCollationTest");
+    }
+    
+    public void processModules() {
+        for (Iterator iter = t.getSettingsIterator(); iter.hasNext();) {
+            DataMap setting = (DataMap) iter.next();
+            processSetting(setting);
+        }
+    }
+    
+    // package private methods ----------------------------------------------
+    
+    static void doTest(TestFmwk test, RuleBasedCollator col, String source, 
+                       String target, int result)
+    {
+        doTestVariant(test, col, source, target, result);
+        if (result == -1) {
+            doTestVariant(test, col, target, source, 1);
+        } 
+        else if (result == 1) {
+            doTestVariant(test, col, target, source, -1);
+        }
+        else {
+            doTestVariant(test, col, target, source, 0);
+        }
+
+        CollationElementIterator iter = col.getCollationElementIterator(source);
+        backAndForth(test, iter);
+        iter.setText(target);
+        backAndForth(test, iter);
+    }
+    
+    /**
+     * Return an integer array containing all of the collation orders
+     * returned by calls to next on the specified iterator
+     */
+    static int[] getOrders(CollationElementIterator iter) 
+    {
+        int maxSize = 100;
+        int size = 0;
+        int[] orders = new int[maxSize];
+        
+        int order;
+        while ((order = iter.next()) != CollationElementIterator.NULLORDER) {
+            if (size == maxSize) {
+                maxSize *= 2;
+                int[] temp = new int[maxSize];
+                System.arraycopy(orders, 0, temp,  0, size);
+                orders = temp;
+            }
+            orders[size++] = order;
+        }
+        
+        if (maxSize > size) {
+            int[] temp = new int[size];
+            System.arraycopy(orders, 0, temp,  0, size);
+            orders = temp;
+        }
+        return orders;
+    }
+    
+    static void backAndForth(TestFmwk test, CollationElementIterator iter) 
+    {
+        // Run through the iterator forwards and stick it into an array
+        iter.reset();
+        int[] orders = getOrders(iter);
+    
+        // Now go through it backwards and make sure we get the same values
+        int index = orders.length;
+        int o;
+    
+        // reset the iterator
+        iter.reset();
+    
+        while ((o = iter.previous()) != CollationElementIterator.NULLORDER) {
+            if (o != orders[--index]) {
+                if (o == 0) {
+                    index ++;
+                } else {
+                    while (index > 0 && orders[index] == 0) {
+                        index --;
+                    } 
+                    if (o != orders[index]) {
+                        test.errln("Mismatch at index " + index + ": 0x" 
+                            + Integer.toHexString(orders[index]) + " vs 0x" + Integer.toHexString(o));
+                        break;
+                    }
+                }
+            }
+        }
+    
+        while (index != 0 && orders[index - 1] == 0) {
+          index --;
+        }
+    
+        if (index != 0) {
+            String msg = "Didn't get back to beginning - index is ";
+            test.errln(msg + index);
+    
+            iter.reset();
+            test.err("next: ");
+            while ((o = iter.next()) != CollationElementIterator.NULLORDER) {
+                String hexString = "0x" + Integer.toHexString(o) + " ";
+                test.err(hexString);
+            }
+            test.errln("");
+            test.err("prev: ");
+            while ((o = iter.previous()) != CollationElementIterator.NULLORDER) {
+                String hexString = "0x" + Integer.toHexString(o) + " ";
+                 test.err(hexString);
+            }
+            test.errln("");
+        }
+    }
+    
+    // private data members --------------------------------------------------
+
+    private String m_sequence_;
+    private int m_sequenceIndex_;
+    private String m_source_;
+    private StringBuffer m_target_ = new StringBuffer();
+    private int m_nextRelation_;
+    private int m_relation_;
+
+    // private methods -------------------------------------------------------
+
+    private void processSetting(DataMap settings) {
+        RuleBasedCollator col = null;
+        // ok i have to be careful here since it seems like we can have
+        // multiple locales for each test
+        String locale = settings.getString("TestLocale");
+        
+        if (locale != null) {
+            // this is a case where we have locale
+            try {
+                Locale l = LocaleUtility.getLocaleFromName(locale);
+                col = (RuleBasedCollator)Collator.getInstance(l);
+            }catch (MissingResourceException e){
+                warnln("Could not load the locale data for locale " + locale);
+            }catch (Exception e) {
+                errln("Error creating collator for locale " + locale);
+            }
+            logln("Testing collator for locale " + locale);
+            processSetting2(settings, col);
+        }
+        String rules = settings.getString("Rules");
+        // ok i have to be careful here since it seems like we can have
+        // multiple rules for each test
+        if (rules != null) {
+            // here we deal with rules
+            try {
+                col = new RuleBasedCollator(rules);
+            }catch (MissingResourceException e){
+        warnln("Could not load the locale data: " + e.getMessage());
+            } catch (Exception e) {
+                errln("Error creating collator for rules " + rules);
+            }
+            processSetting2(settings, col);
+        }
+    }
+
+    private void processSetting2(DataMap settings,RuleBasedCollator col)
+    {
+
+        // ok i have to be careful here since it seems like we can have
+        // multiple rules for each test
+        String arguments = settings.getString("Arguments");
+        if (arguments != null) {
+            handleArguments(col, arguments);
+        }
+        processTestCases(col);
+    }
+
+    /**
+     * Reads the options string and sets appropriate attributes in collator
+     */
+    private void handleArguments(RuleBasedCollator col, String argument) {
+        int i = 0;
+        boolean printInfo = false;
+        while (i < argument.length()) {
+            if (!UCharacter.isWhitespace(argument.charAt(i))) {
+                // eat whitespace
+                break;
+            }
+            i ++;
+        }
+        while (i < argument.length()) {
+            // skip opening '['
+            if (argument.charAt(i) == '[') {
+                i ++;
+            }
+            else {
+                if(!isModularBuild()){
+                    errln("Error in collation arguments, missing ["); // no opening '['
+                }
+                // !!! following line has no effect
+                printInfo=true;
+                return;
+            }
+
+            int value = argument.indexOf(' ', i);
+            String option = argument.substring(i, value);
+            i = argument.indexOf(']', value);
+            String optionvalue = argument.substring(value + 1, i);
+            i ++;
+            // some options are not added because they have no public apis yet
+            // TODO add the rest of the options
+            if (option.equalsIgnoreCase("alternate")) {
+                if (optionvalue.equalsIgnoreCase("non-ignorable")) {
+                    col.setAlternateHandlingShifted(false);
+                }
+                else {
+                    col.setAlternateHandlingShifted(true);
+                }
+            }
+            else if (option.equals("strength")) {
+                if (optionvalue.equalsIgnoreCase("1")) {
+                    col.setStrength(Collator.PRIMARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("2")) {
+                    col.setStrength(Collator.SECONDARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("3")) {
+                    col.setStrength(Collator.TERTIARY);
+                }
+                else if (optionvalue.equalsIgnoreCase("4")) {
+                    col.setStrength(Collator.QUATERNARY);
+                }
+            }
+        }
+        if (printInfo) {
+            warnln("Could not load the locale data. Skipping...");
+        }
+        // !!! effect is odd, if no modular build, this emits no
+        // message at all.  How come?  Hmmm.  printInfo is never
+        // true if we get here, so this code is never executed.
+        /*
+        if(printInfo == true && isModularBuild()){
+            infoln("Could not load the locale data. Skipping...");
+        }
+        */
+    }
+
+    private void processTestCases(RuleBasedCollator col) {
+        for (Iterator iter = t.getDataIterator(); iter.hasNext();) {
+            DataMap e1 =  (DataMap) iter.next();
+            processSequence(col, e1.getString("sequence"));
+     }
+    }
+
+    private void processSequence(RuleBasedCollator col, String sequence) {
+        // TODO: have a smarter tester that remembers the sequence and ensures
+        // that the complete sequence is in order. That is why I have made a
+        // constraint in the sequence format.
+        m_sequence_ = sequence;
+        m_sequenceIndex_ = 0;
+        m_nextRelation_ = -1;
+        m_target_.delete(0, m_target_.length());
+        Vector vector = new Vector();
+        int lastsmallerthanindex = -1;
+        getNextInSequence();
+        while (getNextInSequence()) {
+            String target = m_target_.toString();
+            doTest(this, col, m_source_, target, m_relation_);
+            int vsize = vector.size();
+            for (int i = vsize - 1; i >= 0; i --) {
+                String source = (String)vector.elementAt(i);
+                if (i > lastsmallerthanindex) {
+                    doTest(this, col, source, target, m_relation_);
+                }
+                else {
+                    doTest(this, col, source, target, -1);
+                }
+            }
+            vector.addElement(target);
+            if (m_relation_ < 0) {
+                lastsmallerthanindex = vsize - 1;
+            }
+        }
+    }
+
+    /**
+     * Parses the sequence to be tested
+     */
+    private boolean getNextInSequence() {
+        if (m_sequenceIndex_ >= m_sequence_.length()) {
+            return false;
+        }
+
+        boolean quoted = false;
+        boolean quotedsingle = false;
+        boolean done = false;
+        int i = m_sequenceIndex_;
+        int offset = 0;
+        m_source_ = m_target_.toString();
+        m_relation_ = m_nextRelation_;
+        m_target_.delete(0, m_target_.length());
+        while (i < m_sequence_.length() && !done) {
+            int ch = UTF16.charAt(m_sequence_, i);
+            if (UCharacter.isSupplementary(ch)) {
+                i += 2;
+            }
+            else {
+                i ++;
+            }
+            if (!quoted) {
+                if (UCharacter.isWhitespace(ch)) {
+                    continue;
+                }
+                switch (ch) {
+                    case 0x003C : // <
+                        m_nextRelation_ = -1;
+                        done = true;
+                        break;
+                    case 0x003D : // =
+                        m_nextRelation_ = 0;
+                        done = true;
+                        break;
+                    case 0x003E : // >
+                        m_nextRelation_ = 1;
+                        done = true;
+                        break;
+                    case 0x0027 : // ' very basic quoting
+                        quoted = true;
+                        quotedsingle = false;
+                        break;
+                    case 0x005c : // \ single quote
+                        quoted = true;
+                        quotedsingle = true;
+                        break;
+                    default:
+                        UTF16.insert(m_target_, offset, ch);
+                        if (UCharacter.isSupplementary(ch)) {
+                            offset += 2;
+                        }
+                        else {
+                            offset ++;
+                        }
+                    }
+                }
+                else {
+                      if (ch == 0x0027) {
+                          quoted = false;
+                      }
+                      else {
+                          UTF16.insert(m_target_, offset, ch);
+                          if (UCharacter.isSupplementary(ch)) {
+                              offset += 2;
+                          }
+                          else {
+                              offset ++;
+                          }
+                      }
+                      if (quotedsingle) {
+                          quoted = false;
+                      }
+                }
+          }
+          if (quoted == true) {
+              errln("Quote in sequence not closed!");
+              return false;
+          }
+
+
+          m_sequenceIndex_ = i;
+          return true;
+    }
+
+    private static void doTestVariant(TestFmwk test, 
+                                      RuleBasedCollator myCollation,
+                                      String source, String target, int result)
+    {
+        boolean printInfo = false;
+        int compareResult  = myCollation.compare(source, target);
+        if (compareResult != result) {
+            
+            // !!! if not mod build, error, else nothing.
+            // warnln if not build, error, else always print warning.
+            // do we need a 'quiet warning?' (err or log).  Hmmm,
+            // would it work to have the 'verbose' flag let you 
+            // suppress warnings?  Are there ever some warnings you
+            // want to suppress, and others you don't?
+            if(!test.isModularBuild()){
+                test.errln("Comparing \"" + Utility.hex(source) + "\" with \""
+                           + Utility.hex(target) + "\" expected " + result
+                           + " but got " + compareResult);
+            }else{
+                printInfo = true;
+            }
+        }
+        CollationKey ssk = myCollation.getCollationKey(source);
+        CollationKey tsk = myCollation.getCollationKey(target);
+        compareResult = ssk.compareTo(tsk);
+        if (compareResult != result) {
+            
+            if(!test.isModularBuild()){
+                test.errln("Comparing CollationKeys of \"" + Utility.hex(source) 
+                           + "\" with \"" + Utility.hex(target) 
+                           + "\" expected " + result + " but got " 
+                           + compareResult);
+           }else{
+               printInfo = true;
+           }
+        }
+        RawCollationKey srsk = new RawCollationKey();
+        myCollation.getRawCollationKey(source, srsk);
+        RawCollationKey trsk = new RawCollationKey();
+        myCollation.getRawCollationKey(target, trsk);
+        compareResult = ssk.compareTo(tsk);
+        if (compareResult != result) {
+            
+            if(!test.isModularBuild()){
+                test.errln("Comparing RawCollationKeys of \"" 
+                           + Utility.hex(source) 
+                           + "\" with \"" + Utility.hex(target) 
+                           + "\" expected " + result + " but got " 
+                           + compareResult);
+           }else{
+               printInfo = true;
+           }
+        }
+        // hmmm, but here we issue a warning
+        // only difference is, one warning or two, and detailed info or not?
+        // hmmm, does seem preferable to omit detail if we know it is due to missing resource data.
+        // well, if we label the errors as warnings, we can let people know the details, but
+        // also know they may be due to missing resource data.  basically this code is asserting
+        // that the errors are due to missing resource data, which may or may not be true.
+        if (printInfo) {
+            test.warnln("Could not load locale data skipping.");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java b/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
new file mode 100644
index 0000000..c2d472e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
@@ -0,0 +1,355 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : collate/CollationRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/regcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Comparator;
+import java.util.Arrays;
+import java.io.*;
+
+public class CollationThaiTest extends TestFmwk {
+    
+    final int MAX_FAILURES_TO_SHOW = -1;
+    
+    public static void main(String[] args) throws Exception {
+        new CollationThaiTest().run(args);
+    }
+    
+    /**
+     * Odd corner conditions taken from "How to Sort Thai Without Rewriting Sort",
+     * by Doug Cooper, http://seasrc.th.net/paper/thaisort.zip
+     */
+    public void TestCornerCases() {
+        String TESTS[] = {
+            // Shorter words precede longer
+            "\u0e01",                               "<",    "\u0e01\u0e01",
+    
+            // Tone marks are considered after letters (i.e. are primary ignorable)
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e49\u0e32",
+    
+            // ditto for other over-marks
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32\u0e4c",
+    
+            // commonly used mark-in-context order.
+            // In effect, marks are sorted after each syllable.
+            "\u0e01\u0e32\u0e01\u0e49\u0e32",   "<",    "\u0e01\u0e48\u0e32\u0e01\u0e49\u0e32",
+    
+            // Hyphens and other punctuation follow whitespace but come before letters
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32-",
+            "\u0e01\u0e32-",                       "<",    "\u0e01\u0e32\u0e01\u0e32",
+    
+            // Doubler follows an indentical word without the doubler
+            "\u0e01\u0e32",                        "<",    "\u0e01\u0e32\u0e46",
+            "\u0e01\u0e32\u0e46",                 "<",    "\u0e01\u0e32\u0e01\u0e32",
+    
+            // \u0e45 after either \u0e24 or \u0e26 is treated as a single
+            // combining character, similar to "c < ch" in traditional spanish.
+            // TODO: beef up this case
+            "\u0e24\u0e29\u0e35",                 "<",    "\u0e24\u0e45\u0e29\u0e35",
+            "\u0e26\u0e29\u0e35",                 "<",    "\u0e26\u0e45\u0e29\u0e35",
+    
+            // Vowels reorder, should compare \u0e2d and \u0e34
+            "\u0e40\u0e01\u0e2d",                 "<",    "\u0e40\u0e01\u0e34",
+    
+            // Tones are compared after the rest of the word (e.g. primary ignorable)
+            "\u0e01\u0e32\u0e01\u0e48\u0e32",   "<",    "\u0e01\u0e49\u0e32\u0e01\u0e32",
+    
+            // Periods are ignored entirely
+            "\u0e01.\u0e01.",                      "<",    "\u0e01\u0e32",
+        };
+        
+        RuleBasedCollator coll = null;
+        try {
+            coll = getThaiCollator();
+        } catch (Exception e) {
+            warnln("could not construct Thai collator");
+            return;
+        }
+        compareArray(coll, TESTS); 
+    }
+    
+    void compareArray(RuleBasedCollator c, String[] tests) {
+        for (int i = 0; i < tests.length; i += 3) {
+            int expect = 0;
+            if (tests[i+1].equals("<")) {
+                expect = -1;
+            } else if (tests[i+1].equals(">")) {
+                expect = 1;
+            } else if (tests[i+1].equals("=")) {
+                expect = 0;
+            } else {
+                // expect = Integer.decode(tests[i+1]).intValue();
+                errln("Error: unknown operator " + tests[i+1]);
+                return;
+            }
+            String s1 = tests[i];
+            String s2 = tests[i+2];
+            CollationTest.doTest(this, c, s1, s2, expect);
+        }
+    }
+    
+    int sign(int i ) {
+        if (i < 0) return -1;
+        if (i > 0) return 1;
+        return 0;
+    }
+    
+    /**
+     * Read the external dictionary file, which is already in proper
+     * sorted order, and confirm that the collator compares each line as
+     * preceding the following line.
+     */
+    public void TestDictionary() {
+        RuleBasedCollator coll = null;
+        try {
+            coll = getThaiCollator();
+        } catch (Exception e) {
+            warnln("could not construct Thai collator");
+            return;
+        }
+     
+        // Read in a dictionary of Thai words
+        BufferedReader in = null;
+        String fileName = "riwords.txt";
+        try {
+            in = TestUtil.getDataReader(fileName, "UTF-8");
+        } catch (SecurityException e) {
+            warnln("Security exception encountered reading test data file.");
+                   return;
+        } catch (Exception e) {
+            try {
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ioe) {}
+            errln("Error: could not open test file: " + fileName 
+                  + ". Aborting test.");
+            return;        
+        }
+    
+        //
+        // Loop through each word in the dictionary and compare it to the previous
+        // word.  They should be in sorted order.
+        //
+        String lastWord = "";
+        int line = 0;
+        int failed = 0;
+        int wordCount = 0;
+        try {
+        String word = in.readLine();
+        while (word != null) {
+            line++;
+             
+            // Skip comments and blank lines
+            if (word.length() == 0 || word.charAt(0) == 0x23) {
+                word = in.readLine();
+                continue;
+            }
+    
+            // Show the first 8 words being compared, so we can see what's happening
+            ++wordCount;
+            if (wordCount <= 8) {
+                logln("Word " + wordCount + ": " + word);
+            }
+    
+            if (lastWord.length() > 0) {
+                CollationTest.doTest(this, coll, lastWord, word, -1);
+                int result = coll.compare(lastWord, word); 
+        
+                if (result >= 0) {
+                    failed++;
+                    if (MAX_FAILURES_TO_SHOW < 0 || failed <= MAX_FAILURES_TO_SHOW) {
+                        String msg = "--------------------------------------------\n"
+                                    + line
+                                    + " compare(" + lastWord
+                                    + ", " + word + ") returned " + result
+                                    + ", expected -1\n";
+                        CollationKey k1, k2;
+                        try {
+                            k1 = coll.getCollationKey(lastWord);
+                            k2 = coll.getCollationKey(word);
+                        } catch (Exception e) {
+                            errln("Fail: getCollationKey returned ");
+                            return;
+                        }
+                        msg += "key1: " + prettify(k1) + "\n"
+                                    + "key2: " + prettify(k2);
+                        errln(msg);
+                    }
+                }
+            }
+            lastWord = word;
+            word = in.readLine();
+        }
+        } catch (IOException e) {
+            errln("IOException " + e.getMessage());
+        }
+    
+        if (failed != 0) {
+            if (failed > MAX_FAILURES_TO_SHOW) {
+                errln("Too many failures; only the first " +
+                      MAX_FAILURES_TO_SHOW + " failures were shown");
+            }
+            errln("Summary: " + failed + " of " + (line - 1) +
+                  " comparisons failed");
+        }
+    
+        logln("Words checked: " + wordCount);
+    }
+    
+    public void TestInvalidThai() 
+    {
+        String tests[] = { "\u0E44\u0E01\u0E44\u0E01",
+                           "\u0E44\u0E01\u0E01\u0E44",
+                           "\u0E01\u0E44\u0E01\u0E44",
+                           "\u0E01\u0E01\u0E44\u0E44",
+                           "\u0E44\u0E44\u0E01\u0E01",
+                           "\u0E01\u0E44\u0E44\u0E01",
+                         };
+     
+        RuleBasedCollator collator;
+        StrCmp comparator;
+        try {
+            collator = getThaiCollator();
+            comparator = new StrCmp();
+        } catch (Exception e) {
+            warnln("could not construct Thai collator");
+            return;
+        }
+        
+        Arrays.sort(tests, comparator);
+     
+        for (int i = 0; i < tests.length; i ++)
+        {
+            for (int j = i + 1; j < tests.length; j ++) {
+                if (collator.compare(tests[i], tests[j]) > 0) {
+                    // inconsistency ordering found!
+                    errln("Inconsistent ordering between strings " + i 
+                          + " and " + j);
+                }
+            }
+            CollationElementIterator iterator 
+                = collator.getCollationElementIterator(tests[i]);
+            CollationTest.backAndForth(this, iterator);
+        }
+    }
+    
+    public void TestReordering() 
+    {
+        String tests[] = {
+            "\u0E41c\u0301",      "=", "\u0E41\u0107", // composition
+            "\u0E41\uD835\uDFCE", "<", "\u0E41\uD835\uDFCF", // supplementaries
+            "\u0E41\uD834\uDD5F", "=", "\u0E41\uD834\uDD58\uD834\uDD65", // supplementary composition decomps to supplementary
+            "\u0E41\uD87E\uDC02", "=", "\u0E41\u4E41", // supplementary composition decomps to BMP
+            "\u0E41\u0301",       "=", "\u0E41\u0301", // unsafe (just checking backwards iteration)
+            "\u0E41\u0301\u0316", "=", "\u0E41\u0316\u0301",
+
+            "abc\u0E41c\u0301",      "=", "abc\u0E41\u0107", // composition
+            "abc\u0E41\uD834\uDC00", "<", "abc\u0E41\uD834\uDC01", // supplementaries
+            "abc\u0E41\uD834\uDD5F", "=", "abc\u0E41\uD834\uDD58\uD834\uDD65", // supplementary composition decomps to supplementary
+            "abc\u0E41\uD87E\uDC02", "=", "abc\u0E41\u4E41", // supplementary composition decomps to BMP
+            "abc\u0E41\u0301",       "=", "abc\u0E41\u0301", // unsafe (just checking backwards iteration)
+            "abc\u0E41\u0301\u0316", "=", "abc\u0E41\u0316\u0301",
+
+            "\u0E41c\u0301abc",      "=", "\u0E41\u0107abc", // composition
+            "\u0E41\uD834\uDC00abc", "<", "\u0E41\uD834\uDC01abc", // supplementaries
+            "\u0E41\uD834\uDD5Fabc", "=", "\u0E41\uD834\uDD58\uD834\uDD65abc", // supplementary composition decomps to supplementary
+            "\u0E41\uD87E\uDC02abc", "=", "\u0E41\u4E41abc", // supplementary composition decomps to BMP
+            "\u0E41\u0301abc",       "=", "\u0E41\u0301abc", // unsafe (just checking backwards iteration)
+            "\u0E41\u0301\u0316abc", "=", "\u0E41\u0316\u0301abc",
+
+            "abc\u0E41c\u0301abc",      "=", "abc\u0E41\u0107abc", // composition
+            "abc\u0E41\uD834\uDC00abc", "<", "abc\u0E41\uD834\uDC01abc", // supplementaries
+            "abc\u0E41\uD834\uDD5Fabc", "=", "abc\u0E41\uD834\uDD58\uD834\uDD65abc", // supplementary composition decomps to supplementary
+            "abc\u0E41\uD87E\uDC02abc", "=", "abc\u0E41\u4E41abc", // supplementary composition decomps to BMP
+            "abc\u0E41\u0301abc",       "=", "abc\u0E41\u0301abc", // unsafe (just checking backwards iteration)
+            "abc\u0E41\u0301\u0316abc", "=", "abc\u0E41\u0316\u0301abc",
+        };
+
+        RuleBasedCollator collator;
+        try {
+            collator = (RuleBasedCollator)getThaiCollator();
+        } catch (Exception e) {
+            warnln("could not construct Thai collator");
+            return;
+        }
+        compareArray(collator, tests);
+    
+        String rule = "& c < ab";
+        String testcontraction[] = { "\u0E41ab", ">", "\u0E41c"};
+        try {
+            collator = new RuleBasedCollator(rule);
+        } catch (Exception e) {
+            errln("Error: could not construct collator with rule " + rule);
+            return;
+        }
+        compareArray(collator, testcontraction);
+    }
+    
+    
+    
+    
+    
+    
+    
+    
+    
+
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+    
+    // private inner class -------------------------------------------------
+    
+    private static final class StrCmp implements Comparator 
+    {
+        public int compare(Object string1, Object string2) 
+        {
+            return collator.compare(string1, string2);
+        }
+        
+        StrCmp() throws Exception
+        {
+            collator = getThaiCollator();
+        }
+        
+        Collator collator;
+    }
+    
+    // private data members ------------------------------------------------
+    
+    private static RuleBasedCollator m_collator_;
+    
+    // private methods -----------------------------------------------------
+    
+    private static RuleBasedCollator getThaiCollator() throws Exception
+    {
+        if (m_collator_ == null) {
+            m_collator_ = (RuleBasedCollator)Collator.getInstance(
+                                                new Locale("th", "TH", ""));
+        }
+        return m_collator_;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java b/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java
new file mode 100644
index 0000000..ff78c40
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java
@@ -0,0 +1,243 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+import java.util.Arrays;
+import java.util.Random;
+
+public class CollationThreadTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new CollationThreadTest().run(args);
+    }
+
+    private final String[] threadTestData = {
+        "Banc Se\u00F3kdyaaouq Pfuymjec",
+        "BSH \u00F3y",
+        "ABB - \u00F3g",
+        "G\u00F3kpo Adhdoetpwtx Twxma, qm. Ilnudx",
+        "G\u00F3bjh Zcgopqmjidw Dyhlu, ky. Npyamr",
+        "G\u00F3dxb Slfduvgdwfi Qhreu, ao. Adyfqx",
+        "G\u00F3ten Emrmbmttgne Rtpir, rx. Mgmpjy",
+        "G\u00F3kjo Hciqkymfcds Jpudo, ti. Ueceedbm (tkvyj vplrnpoq)",
+        "Przjrpnbhrflnoo Dbiccp Lnmikfhsuo\u00F3s Tgfhlpqoso / ZAD ENR",
+        "Bang Nbygmoyc Nd\u00F3nipcryjtzm",
+        "Citjk\u00EBd Qgmgvr Er. w u.x.",
+        "Dyrscywp Kvoifmyxo Ivv\u00F3r Lbyxtrwnzp",
+        "G\u00E9awk Ssqenl Pk. c r.g.",
+        "Nesdo\u00E9 Ilwbay Z.U.",
+        "Poczsb Lrdtqg",
+        "Pocafu Tgbmpn - wwg zo Mpespnzdllqk",
+        "Polyvmg Z.C.",
+        "POLUHONANQ FO",
+        "Polrpycn",
+        "Poleeaw-Rqzghgnnj R.W.",
+        "Polyto Sgrgcvncz",
+        "Polixj Tyfc\u00F3vcga Gbkjxf\u00F3f Tuogcybbbkyd C.U.",
+        "Poltmzzlrkwt",
+        "Polefgb Oiqefrkq",
+        "Polrfdk K\u00F3nvyrfot Xuzbzzn f Ujmfwkdbnzh E.U. Wxkfiwss",
+        "Polxtcf Hfowus Zzobblfm N.I.",
+        "POLJNXO ZVYU L.A.",
+        "PP Lowyr Rmknyoew",
+        "Pralpe",
+        "Preyojy Qnrxr",
+        "PRK -5",
+        "PRONENC U.P.",
+        "Prowwyq & Relnda Hxkvauksnn Znyord Tz. w t.o.",
+        "Propydv Afobbmhpg",
+        "Proimpoupvp",
+        "Probfo Hfttyr",
+        "Propgi Lutgumnj X.W. BL",
+        "Prozkch K.E.",
+        "Progiyvzr Erejqk T.W.",
+        "Prooxwq-Ydglovgk J.J.",
+        "PTU Ntcw Lwkxjk S.M. UYF",
+        "PWN",
+        "PWP",
+        "PZU I.D. Tlpzmhax",
+        "PZU ioii A.T. Yqkknryu - bipdq badtg 500/9",
+        "Qumnl-Udffq",
+        "Radmvv",
+        "Railoggeqd Aewy Fwlmsp K.S. Ybrqjgyr",
+        "Remhmxkx Ewuhxbg",
+        "Renafwp Sapnqr io v z.n.",
+        "Repqbpuuo",
+        "Resflig",
+        "Rocqz Mvwftutxozs VQ",
+        "Rohkui",
+        "RRC",
+        "Samgtzg Fkbulcjaaqv Ollllq Ad. l l.v.",
+        "Schelrlw Fu. t z.x.",
+        "Schemxgoc Axvufoeuh",
+        "Siezsxz Eb. n r.h",
+        "Sikj Wyvuog",
+        "Sobcwssf Oy. q o.s. Kwaxj",
+        "Sobpxpoc Fb. w q.h. Elftx",
+        "Soblqeqs Kpvppc RH - tbknhjubw siyaenc Njsjbpx Buyshpgyv",
+        "Sofeaypq FJ",
+        "Stacyok Qurqjw Hw. f c.h.",
+        "STOWN HH",
+        "Stopjhmq Prxhkakjmalkvdt Weqxejbyig Wgfplnvk D.C.",
+        "STRHAEI Clydqr Ha. d z.j.",
+        "Sun Clvaqupknlk",
+        "TarfAml",
+        "Tchukm Rhwcpcvj Cc. v y.a.",
+        "Teco Nyxm Rsvzkx pm. J a.t.",
+        "Tecdccaty",
+        "Telruaet Nmyzaz Twwwuf",
+        "Tellrwihv Xvtjle N.U.",
+        "Telesjedc Boewsx A.F",
+        "tellqfwiqkv dinjlrnyit yktdhlqquihzxr (ohvso)",
+        "Tetft Kna Ab. j l.z.",
+        "Thesch",
+        "Totqucvhcpm Gejxkgrz Is. e k.i.",
+        "Towajgixetj Ngaayjitwm fj csxm Mxebfj Sbocok X.H.",
+        "Toyfon Meesp Neeban Jdsjmrn sz v z.w.",
+        "TRAJQ NZHTA Li. n x.e. - Vghfmngh",
+        "Triuiu",
+        "Tripsq",
+        "TU ENZISOP ZFYIPF V.U.",
+        "TUiX Kscdw G.G.",
+        "TVN G.A.",
+        "Tycd",
+        "Unibjqxv rdnbsn - ZJQNJ XCG / Wslqfrk",
+        "Unilcs - hopef ps 20 nixi",
+        "UPC Gwwmru Ds. g o.r.",
+        "Vaidgoav",
+        "Vatyqzcgqh Kjnnsy GQ WT",
+        "Volhz",
+        "Vos Jviggogjt Iyqhlm Ih. w j.y. (fbshoihdnb)",
+        "WARMFC E.D.",
+        "Wincqk Pqadskf",
+        "WKRD",
+        "Wolk Pyug",
+        "WPRV",
+        "WSiI",
+        "Wurag XZ",
+        "Zacrijl B.B.",
+        "Zakja Tziaboysenum Squlslpp - Diifw V.D.",
+        "Zakgat Meqivadj Nrpxlekmodx s Bbymjozge W.Y.",
+        "Zjetxpbkpgj Mmhhgohasjtpkjd Uwucubbpdj K.N.",
+        "ZREH"
+    };
+
+    public void testThreads() {
+        final Collator theCollator = Collator.getInstance(new Locale("pl", "", ""));
+        final String[] theData = threadTestData;
+        final Random r = new Random();
+
+        class Control {
+            private boolean go;
+            private String fail;
+
+            synchronized void start() {
+                go = true;
+                notifyAll();
+            }
+
+            synchronized void stop() {
+                go = false;
+                notifyAll();
+            }
+
+            boolean go() {
+                return go;
+            }
+
+            void fail(String msg) {
+                fail = msg;
+                stop();
+            }
+        }
+
+        final Control control = new Control();
+
+        class Test implements Runnable {
+            private String[] data;
+            private Collator collator;
+            private String name;
+
+            Test(String name) {
+                this.name = name;
+
+                try {
+                    data = (String[]) theData.clone();
+                    collator = (Collator) theCollator.clone();
+                } catch (CloneNotSupportedException e) {
+                    // should not happen, if it does we'll get an exception right away
+                    errln("could not clone");
+                    data = null;
+                    collator = null;
+                }
+            }
+
+            public void run() {
+                try {
+                    synchronized (control) {
+                        while (!control.go()) {
+                            control.wait();
+                        }
+                    }
+
+                    while (control.go()) {
+                        scramble();
+                        sort();
+                    }
+                } catch (InterruptedException e) {
+                    // die
+                } catch (IndexOutOfBoundsException e) {
+                    control.fail(name + " " + e.getMessage());
+                }
+            }
+
+            private void scramble() {
+                for (int i = 0; i < data.length; ++i) {
+                    int ix = r.nextInt(data.length);
+                    String s = data[i];
+                    data[i] = data[ix];
+                    data[ix] = s;
+                }
+            }
+
+            private void sort() {
+                Arrays.sort(data, collator);
+            }
+        }
+
+        Thread[] threads = new Thread[10];
+        for (int i = 0; i < threads.length; ++i) {
+            threads[i] = new Thread(new Test("test " + i));
+            threads[i].start();
+        }
+
+        try {
+            control.start();
+
+            long stopTime = System.currentTimeMillis() + 5000;
+            do {
+                Thread.sleep(100);
+            } while (control.go() && System.currentTimeMillis() < stopTime);
+
+            control.stop();
+
+            for (int i = 0; i < threads.length; ++i) {
+                threads[i].join();
+            }
+        } catch (InterruptedException e) {
+            // die
+        }
+
+        if (control.fail != null) {
+            errln(control.fail);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java b/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
new file mode 100644
index 0000000..2b8dd62
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
@@ -0,0 +1,188 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/CollationTurkishTest
+ * Source File: $ICU4CRoot/source/test/intltest/trcoll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class CollationTurkishTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new CollationTurkishTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0x73, 0x0327},
+        {0x76, 0x00E4, 0x74},
+        {0x6f, 0x6c, 0x64},
+        {0x00FC, 0x6f, 0x69, 0x64},
+        {0x68, 0x011E, 0x61, 0x6c, 0x74},
+        {0x73, 0x74, 0x72, 0x65, 0x73, 0x015E},
+        {0x76, 0x6f, 0x0131, 0x64},
+        {0x69, 0x64, 0x65, 0x61},
+        {0x00FC, 0x6f, 0x69, 0x64},
+        {0x76, 0x6f, 0x0131, 0x64},
+        {0x69, 0x64, 0x65, 0x61}
+    };
+
+    private static char[][] testTargetCases = {
+        {0x75, 0x0308},
+        {0x76, 0x62, 0x74},
+        {0x00D6, 0x61, 0x79},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x68, 0x61, 0x6c, 0x74},
+        {0x015E, 0x74, 0x72, 0x65, 0x015E, 0x73},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x49, 0x64, 0x65, 0x61},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x76, 0x6f, 0x69, 0x64},
+        {0x49, 0x64, 0x65, 0x61}
+    };
+
+    private static int[] results = {
+        -1,
+        -1,
+        -1,
+        -1,
+        1,
+        -1,
+        -1,
+        1,
+    // test priamry > 8
+        -1,
+        -1,
+        1
+    };
+    
+    private Collator myCollation = null;
+    
+    public CollationTurkishTest() {
+
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(new Locale("tr", ""));
+    }
+    
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 8 ; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    public void TestPrimary() {
+        int i;
+        myCollation.setStrength(Collator.PRIMARY);
+        for (i = 8; i < 11; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+        }
+    }
+    
+    
+    // main test routine, tests rules specific to turkish locale
+    private void doTest(char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result);
+        
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ) {
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target) {
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/G7CollationTest.java b/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
new file mode 100644
index 0000000..f8d9768
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
@@ -0,0 +1,292 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/G7CollationTest
+ * Source File: $ICU4CRoot/source/test/intltest/g7coll.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+ 
+public class G7CollationTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new G7CollationTest().run(args);
+        // new G7CollationTest().TestDemo3();
+    }
+    
+    private static String[] testCases = {
+        "blackbirds", "Pat", "p\u00E9ch\u00E9", "p\u00EAche", "p\u00E9cher",            
+        "p\u00EAcher", "Tod", "T\u00F6ne", "Tofu", "blackbird", "Ton", 
+        "PAT", "black-bird", "black-birds", "pat", // 14
+        // Additional tests
+        "czar", "churo", "cat", "darn", "?",                                                                                /* 19 */
+        "quick", "#", "&", "a-rdvark", "aardvark",                                                        /* 23 */
+        "abbot", "co-p", "cop", "coop", "zebra"
+    };
+
+    private static int[][] results = {
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_US */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_GB */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* en_CA */
+        { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* fr_FR */
+        { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* fr_CA */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* de_DE */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* it_IT */
+        { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, /* ja_JP */
+        /* new table collation with rules "& Z < p, P"  loop to FIXEDTESTSET */
+        { 12, 13, 9, 0, 6, 8, 10, 7, 14, 1, 11, 2, 3, 4, 5, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, 
+        /* new table collation with rules "& C < ch , cH, Ch, CH " loop to TOTALTESTSET */
+        { 19, 22, 21, 23, 24, 25, 12, 13, 9, 0, 17, 26, 28, 27, 15, 16, 18, 14, 1, 11, 2, 3, 4, 5, 20, 6, 8, 10, 7, 29 },
+        /* new table collation with rules "& Question-mark ; ? & Hash-mark ; # & Ampersand ; '&'  " loop to TOTALTESTSET */
+        { 23, 24, 25, 22, 12, 13, 9, 0, 17, 16, 26, 28, 27, 15, 18, 21, 14, 1, 11, 2, 3, 4, 5, 19, 20, 6, 8, 10, 7, 29 },
+        /* analogous to Japanese rules " & aa ; a- & ee ; e- & ii ; i- & oo ; o- & uu ; u- " */  /* loop to TOTALTESTSET */
+        { 19, 22, 21, 24, 23, 25, 12, 13, 9, 0, 17, 16, 28, 26, 27, 15, 18, 14, 1, 11, 2, 3, 4, 5, 20, 6, 8, 10, 7, 29 }
+    };
+    
+    //private static final int MAX_TOKEN_LEN = 16;
+    //private static final int TESTLOCALES = 12;
+    private static final int FIXEDTESTSET = 15;
+    private static final int TOTALTESTSET = 30;
+    
+    // perform test with added rules " & Z < p, P"
+    public void TestDemo1() {
+        logln("Demo Test 1 : Create a new table collation with rules \"& Z < p, P\"");
+        
+        Collator col = Collator.getInstance(Locale.ENGLISH);    
+
+        
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & Z < p, P";
+        newRules = baseRules + newRules; 
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        } catch(Exception e) {
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }
+        
+        int j, n;
+        for (j = 0; j < FIXEDTESTSET; j++) {
+            for (n = j+1; n < FIXEDTESTSET; n++) {
+                doTest(myCollation, testCases[results[8][j]], testCases[results[8][n]], -1);
+            }
+        }
+    }
+    
+
+    // perorm test with added rules "& C < ch , cH, Ch, CH"
+    public void TestDemo2() {
+        logln("Demo Test 2 : Create a new table collation with rules \"& C < ch , cH, Ch, CH\"");
+        Collator col = Collator.getInstance(Locale.ENGLISH);    
+
+
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = "& C < ch , cH, Ch, CH";
+        newRules = baseRules + newRules; 
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[9][j]], testCases[results[9][n]], -1);
+            }
+        }
+    }
+    
+
+    // perform test with added rules 
+    // "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'"
+    public void TestDemo3() {
+        // logln("Demo Test 3 : Create a new table collation with rules \"& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'\"");
+        Collator col = Collator.getInstance(Locale.ENGLISH);    
+
+        
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'";
+        newRules = baseRules + newRules;
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[10][j]], testCases[results[10][n]], -1);
+            }
+        }
+    }
+    
+
+    // perform test with added rules 
+    // " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' "
+    public void TestDemo4() {
+        logln("Demo Test 4 : Create a new table collation with rules \" & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' \"");
+        Collator col = Collator.getInstance(Locale.ENGLISH);    
+
+        String baseRules = ((RuleBasedCollator)col).getRules();
+        String newRules = " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' ";
+        newRules = baseRules + newRules;
+        RuleBasedCollator myCollation = null; 
+        try {
+            myCollation = new RuleBasedCollator(newRules);
+        }catch(Exception e){
+            errln("Fail to create RuleBasedCollator with rules:" + newRules);
+            return;
+        }  
+
+        int j, n;
+        for (j = 0; j < TOTALTESTSET; j++) {
+            for (n = j+1; n < TOTALTESTSET; n++) {
+                doTest(myCollation, testCases[results[11][j]], testCases[results[11][n]], -1);
+            }
+        }
+    }
+    
+    public void TestG7Data() {
+        Locale locales[] = {
+                Locale.US,
+                Locale.UK,
+                Locale.CANADA,
+                Locale.FRANCE,
+                Locale.CANADA_FRENCH,
+                Locale.GERMANY,
+                Locale.JAPAN,
+                Locale.ITALY
+            };
+        int i = 0, j = 0;
+        for (i = 0; i < locales.length; i++) {
+            Collator myCollation= null;
+            RuleBasedCollator tblColl1 = null;
+            try {
+                myCollation = Collator.getInstance(locales[i]);
+                tblColl1 = new RuleBasedCollator(((RuleBasedCollator)myCollation).getRules());
+            } catch (Exception foo) {
+                warnln("Exception: " + foo.getMessage() +
+                      "; Locale : " + locales[i].getDisplayName() + " getRules failed");
+                continue;
+            }
+            for (j = 0; j < FIXEDTESTSET; j++) {
+                for (int n = j+1; n < FIXEDTESTSET; n++) {
+                    doTest(tblColl1, testCases[results[i][j]], testCases[results[i][n]], -1);
+                }
+            }
+            myCollation = null;
+        }
+    }
+    
+    
+    // main test routine, tests comparisons for a set of strings against sets of expected results
+    private void doTest(Collator myCollation, String source, String target, 
+                        int result){
+        
+        int compareResult = myCollation.compare(source, target);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(source);
+        sortKey2 = myCollation.getCollationKey(target);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult(source, target, sortKey1, sortKey2, compareResult, 
+                      keyResult, compareResult, result);
+    }
+    
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()){
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+   String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java b/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
new file mode 100644
index 0000000..3316a4b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
@@ -0,0 +1,84 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.IndexCharacters;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author markdavis
+ *
+ */
+public class IndexCharactersTest extends TestFmwk {
+    public static void main(String[] args) throws Exception{
+        new IndexCharactersTest().run(args);
+    }
+
+    public void TestBasics() {
+        ULocale[] list = ULocale.getAvailableLocales();
+        // get keywords combinations
+        // don't bother with multiple combinations at this poin
+        List keywords = new ArrayList();
+        keywords.add("");
+
+        String[] collationValues = Collator.getKeywordValues("collation");
+        for (int j = 0; j < collationValues.length; ++j) {
+            keywords.add("@collation=" + collationValues[j]);
+        }
+        
+        for (int i = 0; i < list.length; ++i) {
+            for (Iterator it = keywords.iterator(); it.hasNext();) {
+                String collationValue = (String) it.next();
+                ULocale locale = new ULocale(list[i].toString() + collationValue);
+                if (collationValue.length() > 0 && !Collator.getFunctionalEquivalent("collation", locale).equals(locale)) {
+                    //logln("Skipping " + locale);
+                    continue;
+                }
+
+                if (locale.getCountry().length() != 0) {
+                    continue;
+                }
+                IndexCharacters indexCharacters = new IndexCharacters(locale);
+                final Collection mainChars = indexCharacters.getIndexCharacters();
+                String mainCharString = mainChars.toString();
+                if (mainCharString.length() > 500) {
+                    mainCharString = mainCharString.substring(0,500) + "...";
+                }
+                logln(mainChars.size() + "\t" + locale + "\t" + locale.getDisplayName(ULocale.ENGLISH));
+                logln("Index:\t" + mainCharString);
+                if (mainChars.size() > 100) {
+                    errln("Index character set too large");
+                }
+                showIfNotEmpty("A sequence sorting the same is already present", indexCharacters.getAlreadyIn());
+                showIfNotEmpty("A sequence sorts the same as components", indexCharacters.getNoDistinctSorting());
+                showIfNotEmpty("A sequence has only Marks or Nonalphabetics", indexCharacters.getNotAlphabetic());
+            }
+        }
+    }
+    private void showIfNotEmpty(String title, List alreadyIn) {
+        if (alreadyIn.size() != 0) {
+            logln("\t" + title + ":\t" + alreadyIn);
+        }
+    }
+    private void showIfNotEmpty(String title, Map alreadyIn) {
+        if (alreadyIn.size() != 0) {
+            logln("\t" + title + ":\t" + alreadyIn);
+        }
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java b/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
new file mode 100644
index 0000000..3188d6e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
@@ -0,0 +1,148 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v2.1 : Collate/LotusCollationKoreanTest
+ * Source File: $ICU4CRoot/source/test/intltest/lcukocol.cpp
+ **/
+ 
+package com.ibm.icu.dev.test.collator;
+ 
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+import java.util.Locale;
+ 
+public class LotusCollationKoreanTest extends TestFmwk{
+    public static void main(String[] args) throws Exception{
+        new LotusCollationKoreanTest().run(args);
+    }
+    
+    private static char[][] testSourceCases = {
+        {0xac00}
+    };
+    
+    private static char[][] testTargetCases = {
+        {0xac01}
+    };
+    
+    private static int[] results = {
+        -1
+    };
+    
+    private Collator myCollation;
+    
+    public LotusCollationKoreanTest() {
+    }
+    protected void init()throws Exception{
+        myCollation = Collator.getInstance(Locale.KOREAN);
+        myCollation.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+    }
+    // performs test with strength TERIARY
+    public void TestTertiary() {
+        int i = 0;
+        myCollation.setStrength(Collator.TERTIARY);
+        for (i = 0; i < 1; i++) {
+            doTest(testSourceCases[i], testTargetCases[i], results[i]);
+            }
+        }
+    
+    // main test routine, tests rules specific to "Korean" locale
+    private void doTest( char[] source, char[] target, int result) {
+        String s = new String(source);
+        String t = new String(target);
+        int compareResult = myCollation.compare(s, t);
+        CollationKey sortKey1, sortKey2;
+        sortKey1 = myCollation.getCollationKey(s);
+        sortKey2 = myCollation.getCollationKey(t);
+        int keyResult = sortKey1.compareTo(sortKey2);
+        reportCResult( s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result ); 
+    }
+
+    private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey,
+                                int compareResult, int keyResult, int incResult, int expectedResult ){
+        if (expectedResult < -1 || expectedResult > 1) {
+            errln("***** invalid call to reportCResult ****");
+            return;
+        }
+
+        boolean ok1 = (compareResult == expectedResult);
+        boolean ok2 = (keyResult == expectedResult);
+        boolean ok3 = (incResult == expectedResult);
+
+        if (ok1 && ok2 && ok3 && !isVerbose()) {
+            return;    
+        } else {
+            String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\"";
+            String msg2 = "\", \"";
+            String msg3 = "\") returned ";
+            String msg4 = "; expected ";
+            
+            String sExpect = new String("");
+            String sResult = new String("");
+            sResult = appendCompareResult(compareResult, sResult);
+            sExpect = appendCompareResult(expectedResult, sExpect);
+            if (ok1) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }
+            
+            msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\"";
+            msg2 = "\").compareTo(key(\"";
+            msg3 = "\")) returned ";
+            sResult = appendCompareResult(keyResult, sResult);
+            if (ok2) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+                msg1 = "  ";
+                msg2 = " vs. ";
+                errln(msg1 + prettify(sourceKey) + msg2 + prettify(targetKey));
+            }
+            
+            msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\"";
+            msg2 = "\", \"";
+            msg3 = "\") returned ";
+
+            sResult = appendCompareResult(incResult, sResult);
+
+            if (ok3) {
+                logln(msg1 + source + msg2 + target + msg3 + sResult);
+            } else {
+                errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect);
+            }                
+        }
+    }
+    
+    private String appendCompareResult(int result, String target){
+        if (result == -1) {
+            target += "LESS";
+        } else if (result == 0) {
+            target += "EQUAL";
+        } else if (result == 1) {
+            target += "GREATER";
+        } else {
+            String huh = "?";
+            target += huh + result;
+        }
+        return target;
+    }
+    
+    String prettify(CollationKey sourceKey) {
+        int i;
+        byte[] bytes= sourceKey.toByteArray();
+        String target = "[";
+    
+        for (i = 0; i < bytes.length; i++) {
+            target += Integer.toHexString(bytes[i]);
+            target += " ";
+        }
+        target += "]";
+        return target;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/RandomCollator.java b/src/com/ibm/icu/dev/test/collator/RandomCollator.java
new file mode 100644
index 0000000..05120fb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/RandomCollator.java
@@ -0,0 +1,296 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UnicodeSet;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.util.BNF;
+import com.ibm.icu.dev.test.util.BagFormatter;
+import com.ibm.icu.dev.test.util.Quoter;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.ParseException;
+import java.util.Random;
+
+public class RandomCollator extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new RandomCollator().run(args);
+        //new CollationAPITest().TestGetTailoredSet();
+    }
+
+    static final int CONSTRUCT_RANDOM_COUNT = 100;
+    static final int FORMAL_TEST_COUNT = 1000;
+    
+    static final String POSITION = "{$$$}";
+    
+    /*
+    class Shower extends BagFormatter.Shower {
+        public void print(String arg) {
+            log(arg);
+        }
+    }
+    
+    public Shower LOG = new Shower();
+    */
+       
+    public void TestRandom() throws IOException {
+//        int year 
+//        = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR);
+//        if (year < 2004) {
+//            System.out.println("\nTestRandom skipped for 2003");
+//            return;
+//        }
+        //String fileName;
+        PrintWriter pw = BagFormatter.openUTF8Writer(System.getProperty("user.dir")+File.separator, "RandomCollationTestLog.txt");
+        TestCollator tc = new TestCollator(chars);
+        pw.println("Collation Test Run");
+        pw.println("Note: For parse-exception, " + POSITION + " indicates the errorOffset");
+        pw.println("Rules:");
+        pw.println(currentRules);
+        String rules = "<unknown>";
+        int sCount = 0;
+        int peCount = 0;
+        int oeCount = 0;
+        for (int i = 0; i < CONSTRUCT_RANDOM_COUNT; ++i) {
+            try {
+                rules = get();
+                if (true) {                   
+                    Collator c = new RuleBasedCollator(rules.toString());
+                    tc.test(c, FORMAL_TEST_COUNT);
+                } else {
+                    pw.println(rules);
+                }
+                logln("ok");
+                sCount++;
+            } catch (ParseException pe) {
+                peCount++;
+                pw.println("========PARSE EXCEPTION======== (" + i + ")");
+                int errorOffset = pe.getErrorOffset();
+                pw.print(rules.substring(0,errorOffset));
+                pw.print(POSITION);
+                pw.println(rules.substring(errorOffset));
+                //pw.println("========ERROR======== (" + i + ")");
+                //pe.printStackTrace(pw);
+                //pw.println("========END======== (" + i + ")");
+                errln("ParseException");
+            } catch (Exception e) {
+                oeCount++;
+                pw.println("========OTHER EXCEPTION======== (" + i + ")");
+                e.printStackTrace(pw);
+                pw.println("========RULES======== (" + i + ")");
+                pw.println(rules);
+                //pw.println("========END======== (" + i + ")");
+                errln("ParseException");
+            }
+        }
+        pw.println("Successful: " + sCount 
+            + ",\tParseException: " + peCount 
+            + ",\tOther Exception: " + oeCount);
+        logln("Successful: " + sCount 
+            + ",\tParseException: " + peCount 
+            + ",\tOther Exception: " + oeCount);
+        pw.close();
+
+    }
+    
+    public static class TestCollator extends TestComparator {
+        BNF rs;
+        
+        TestCollator(UnicodeSet chars) {
+            rs = new BNF(new Random(0), new Quoter.RuleQuoter())
+            .addRules("$root = " + chars + "{1,8};").complete();
+        }
+        
+        public Object newObject(Object c) {
+            return rs.next();
+        }
+    
+        public String format(Object c) {
+            return BagFormatter.hex.transliterate(c.toString());
+        }
+    }
+
+    private BNF bnf;
+    String currentRules = null;
+    UnicodeSet chars;
+    
+    public String get() {
+        return bnf.next();
+    }
+    
+    public RandomCollator() {
+        
+    }
+    protected void init()throws Exception{
+        init(1,10, new UnicodeSet("[AZa-z<\\&\\[\\]]"));
+    }
+    private void init(int minRuleCount, int maxRuleCount, UnicodeSet setOfChars) {
+        this.chars = setOfChars;
+        bnf = new BNF(new Random(0), new Quoter.RuleQuoter())
+        .addSet("$chars", setOfChars)
+        .addRules(collationBNF)
+        .complete();
+    }
+    
+    private static String collationBNF =
+        "$s = ' '? 50%;\r\n" +
+        "$relationList = (" +        "   '<'" +        " | '  <<'" +        " | '  ;'" +
+        " | '    <<<'" +        " | '    ,'" +
+        " | '      ='" +        ");\r\n" +
+        "$alternateOptions = non'-'ignorable | shifted;\r\n" +
+        "$caseFirstOptions = off | upper | lower;\r\n" +
+        "$strengthOptions = '1' | '2' | '3' | '4' | 'I';\r\n" +
+        "$commandList = '['" +        " ( alternate ' ' $alternateOptions" +        " | backwards' 2'" +        " | normalization ' ' $onoff " +        " | caseLevel ' ' $onoff " +        " | hiraganaQ ' ' $onoff" +        " | caseFirst ' ' $caseFirstOptions" +        " | strength ' ' $strengthOptions" +        " ) ']';\r\n" +
+        "$ignorableTypes = (tertiary | secondary | primary) ' ' ignorable;\r\n" +
+        "$allTypes = variable | regular | implicit | trailing | $ignorableTypes;\r\n" +
+        "$onoff = on | off;\r\n" +
+        "$positionList = '[' (first | last) ' ' $allTypes ']';\r\n" +        "$beforeList = '[before ' ('1' | '2' | '3') ']';\r\n" +        "$string = $chars{1,5}~@;\r\n" +
+        "$crlf = '\r\n';\r\n" +
+        "$rel1 = '[variable top]' $s ;\r\n" +
+        "$p1 = ($string $s '|' $s)? 25%;\r\n" +
+        "$p2 = ('\\' $s $string $s)? 25%;\r\n" +
+        "$rel2 = $p1 $string $s $p2;\r\n" +
+        "$relation = $relationList $s ($rel1 | $rel2) $crlf;\r\n" +
+        "$command = $commandList $crlf;\r\n" +
+        "$reset = '&' $s ($beforeList $s)? 10% ($positionList | $string 10%) $crlf;\r\n" +
+        "$mostRules = $command 1% | $reset 5% | $relation 25%;\r\n" +
+        "$root = $command{0,5} $reset $mostRules{1,20};\r\n";
+    
+    
+/*    
+    
+    
+    gc ; C         ; Other                            # Cc | Cf | Cn | Co | Cs
+    gc ; Cc        ; Control
+    gc ; Cf        ; Format
+    gc ; Cn        ; Unassigned
+    gc ; Co        ; Private_Use
+    gc ; Cs        ; Surrogate
+    gc ; L         ; Letter                           # Ll | Lm | Lo | Lt | Lu
+    gc ; LC        ; Cased_Letter                     # Ll | Lt | Lu
+    gc ; Ll        ; Lowercase_Letter
+    gc ; Lm        ; Modifier_Letter
+    gc ; Lo        ; Other_Letter
+    gc ; Lt        ; Titlecase_Letter
+    gc ; Lu        ; Uppercase_Letter
+    gc ; M         ; Mark                             # Mc | Me | Mn
+    gc ; Mc        ; Spacing_Mark
+    gc ; Me        ; Enclosing_Mark
+    gc ; Mn        ; Nonspacing_Mark
+    gc ; N         ; Number                           # Nd | Nl | No
+    gc ; Nd        ; Decimal_Number
+    gc ; Nl        ; Letter_Number
+    gc ; No        ; Other_Number
+    gc ; P         ; Punctuation                      # Pc | Pd | Pe | Pf | Pi | Po | Ps
+    gc ; Pc        ; Connector_Punctuation
+    gc ; Pd        ; Dash_Punctuation
+    gc ; Pe        ; Close_Punctuation
+    gc ; Pf        ; Final_Punctuation
+    gc ; Pi        ; Initial_Punctuation
+    gc ; Po        ; Other_Punctuation
+    gc ; Ps        ; Open_Punctuation
+    gc ; S         ; Symbol                           # Sc | Sk | Sm | So
+    gc ; Sc        ; Currency_Symbol
+    gc ; Sk        ; Modifier_Symbol
+    gc ; Sm        ; Math_Symbol
+    gc ; So        ; Other_Symbol
+    gc ; Z         ; Separator                        # Zl | Zp | Zs
+    gc ; Zl        ; Line_Separator
+    gc ; Zp        ; Paragraph_Separator
+    gc ; Zs        ; Space_Separator
+*/
+
+    /*
+    // each rule can be:
+    // "[" command "]"
+    // "& [" position "]"
+    // "&" before chars
+    // relation "[variable top]"
+    // relation (chars "|")? chars ("/" chars)?
+    // plus, a reset must come before a relation
+    
+    // the following reflects the above rules, plus allows whitespace.
+    Pick chars = Pick.string(1, 5, Pick.codePoint(uSet)); // insert something needing quotes
+    Pick s = Pick.maybe(0.8, Pick.unquoted(" ")).name("Space");    // optional space
+    Pick CRLF = Pick.unquoted("\r\n");
+        
+    Pick rel1 = Pick.and(Pick.unquoted("[variable top]")).and2(s);
+    Pick p1 = Pick.maybe(0.25, Pick.and(chars).and2(s).and2("|").and2(s));
+    Pick p2 = Pick.maybe(0.25, Pick.and("/").and2(s).and2(chars).and2(s));
+    Pick rel2 = Pick.and(p1).and2(chars).and2(s).and2(p2);
+    Pick relation = Pick.and(Pick.or(relationList)).and2(s)
+        .and2(Pick.or(1, rel1).or2(10, rel2))
+        .and2(CRLF).name("Relation");
+            
+    Pick command = Pick.and(Pick.or(commandList)).and2(CRLF).name("Command");
+        
+    Pick reset = Pick.and("&").and2(s)            
+        .and2(0.1, Pick.or(beforeList)).and2(s)            
+        .and2(Pick.or(0.1, Pick.or(positionList)).or2(1.0, chars))
+        .and2(CRLF).name("Reset");
+    Pick rule = Pick.and(Pick.or(1, command).or2(5, reset).or2(25, relation)).name("Rule");
+    Pick rules2 = Pick.and(Pick.repeat(0,5,command))            
+        .and2(reset)            
+        .and2(Pick.repeat(1,20,rule)).name("Rules");
+    rules = Pick.Target.make(rules2);
+   
+   static final String[] relationList = {" <", "  <<", "    <<<", "     =", "  ;", "   ,"};
+    
+    static final String[] commandList = {
+        "[alternate non-ignorable]",        "[alternate shifted]",
+        "[backwards 2]",
+        "[normalization off]",
+        "[normalization on]",
+        "[caseLevel off]",
+        "[caseLevel on]",
+        "[caseFirst off]",
+        "[caseFirst upper]",
+        "[caseFirst lower]",
+        "[strength 1]",
+        "[strength 2]",
+        "[strength 3]",
+        "[strength 4]",
+        "[strength I]",
+        "[hiraganaQ off]",
+        "[hiraganaQ on]"
+    };
+    
+    static final String[] positionList = {
+        "[first tertiary ignorable]",
+        "[last tertiary ignorable]",
+        "[first secondary ignorable]",
+        "[last secondary ignorable]",
+        "[first primary ignorable]",
+        "[last primary ignorable]",
+        "[first variable]",
+        "[last variable]",
+        "[first regular]",
+        "[last regular]",
+        "[first implicit]",
+        "[last implicit]",
+        "[first trailing]",
+        "[last trailing]"
+    };
+    
+    static final String[] beforeList = {
+        "[before 1]", 
+        "[before 2]",
+        "[before 3]"
+    };
+    */
+}
+//#endif
+
diff --git a/src/com/ibm/icu/dev/test/collator/TestAll.java b/src/com/ibm/icu/dev/test/collator/TestAll.java
new file mode 100644
index 0000000..d7f3607
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/TestAll.java
@@ -0,0 +1,55 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.collator;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all collation and search tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  "CollationTest",
+                  "CollationAPITest",
+                  "CollationCurrencyTest",
+                  "CollationCreationMethodTest",
+                  //"CollationDanishTest", //Danish is already tested through data driven tests
+                  "CollationDummyTest",
+                  "CollationEnglishTest",
+                  "CollationFinnishTest",
+                  "CollationFrenchTest",
+                  "CollationGermanTest",
+                  "CollationIteratorTest",
+                  "CollationKanaTest",
+                  "CollationMonkeyTest",
+                  "CollationRegressionTest",
+                  "CollationSpanishTest",
+                  "CollationThaiTest",
+                  "CollationTurkishTest",
+                  "G7CollationTest",
+                  "LotusCollationKoreanTest",
+                  "CollationMiscTest",
+                  "CollationChineseTest",
+                  "CollationServiceTest",
+                  "CollationThreadTest",
+                  //"RandomCollator", //Disabled until the problem in the test case is resolved #5747
+                  "UCAConformanceTest",
+                  // don't test Search API twice!
+                  //"com.ibm.icu.dev.test.search.SearchTest"
+              },
+              "All Collation Tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Collator";
+}
diff --git a/src/com/ibm/icu/dev/test/collator/TestComparator.java b/src/com/ibm/icu/dev/test/collator/TestComparator.java
new file mode 100644
index 0000000..bd3f07a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/TestComparator.java
@@ -0,0 +1,74 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+ 
+package com.ibm.icu.dev.test.collator;
+
+import java.util.*;
+
+public class TestComparator {
+
+    // test the symmetry and transitivity
+    public void test(Comparator comp, int count) {
+        Object c = null;
+        Object b = newObject(c);
+        Object a = newObject(b);
+        int compab = comp.compare(a,b);
+        while (--count >= 0) {
+            // rotate old values
+            c = b;
+            b = a;
+            int compbc = compab;
+            
+            // allocate new and get comparisons
+            a = newObject(b);
+            compab = comp.compare(a,b);
+            int compba = comp.compare(b,a);
+            int compac = comp.compare(a,c);
+            
+            // check symmetry
+            if (compab != -compba) {
+                log("Symmetry Failure", new Object[] {a, b});
+            }
+            
+            // check transitivity
+            check(a, b, c,  compab,  compbc,  compac);
+            check(a, c, b,  compab, -compbc,  compab);
+            check(b, a, c, -compab,  compac,  compbc);
+            check(b, c, a,  compbc, -compac, -compab);
+            check(c, a, b, -compac,  compab, -compbc);
+            check(c, b, a, -compbc, -compab, -compac);
+        }
+    }
+    
+    private void check(Object a, Object b, Object c, 
+      int compab, int compbc, int compac) {
+        if (compab <= 0 && compbc <= 0 && !(compac <= 0)) {
+            log("Transitivity Failure", new Object[] {a, b, c});             
+        }
+    }
+   
+    public Object newObject(Object c) {
+        // return a new object
+        return "";
+    }
+    
+    public String format(Object c) {
+        // return a new object
+        return c.toString();
+    }
+    
+    public void log(String title, Object[] arguments) {
+        String result = title + ": [";
+        for (int i = 0; i < arguments.length; ++i) {
+            if (i != 0) result += ", ";
+            result += format(arguments[i]);
+        }
+        result += "]";
+        throw new RuntimeException(result);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java b/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java
new file mode 100644
index 0000000..7444df7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java
@@ -0,0 +1,242 @@
+/********************************************************************
+ * COPYRIGHT: 
+ * Copyright (c) 2002-2007, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ********************************************************************/
+
+/**
+ * UCAConformanceTest performs conformance tests defined in the data
+ * files. ICU ships with stub data files, as the whole test are too 
+ * long. To do the whole test, download the test files.
+ */
+
+package com.ibm.icu.dev.test.collator;
+
+import java.io.BufferedReader;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.text.CollationKey;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UTF16;
+
+public class UCAConformanceTest extends TestFmwk {
+    
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        new UCAConformanceTest().run(args);
+    }
+    
+    public UCAConformanceTest() {
+    }
+    protected void init()throws Exception{
+        UCA = (RuleBasedCollator)Collator.getInstance(
+                new Locale("root", "", ""));
+
+        comparer = new UTF16.StringComparator(true, false, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+    }
+    RuleBasedCollator UCA;
+    RuleBasedCollator rbUCA;
+    UTF16.StringComparator comparer;
+    
+    public void TestTableNonIgnorable() {
+        setCollNonIgnorable(UCA);
+        openTestFile("NON_IGNORABLE");
+        conformanceTest(UCA);
+    }
+    
+    public void TestTableShifted() {
+        setCollShifted(UCA);
+        openTestFile("SHIFTED");
+        conformanceTest(UCA);
+    }
+    
+    public void TestRulesNonIgnorable() {
+        initRbUCA();
+        
+        setCollNonIgnorable(rbUCA);
+        openTestFile("NON_IGNORABLE");
+        conformanceTest(rbUCA);
+    }
+    
+    public void TestRulesShifted() {
+        logln("This test is currently disabled, as it is impossible to "+
+        "wholly represent fractional UCA using tailoring rules.");
+        return;
+        /*        initRbUCA();
+         
+         if(U_SUCCESS(status)) {
+         setCollShifted(rbUCA);
+         openTestFile("SHIFTED");
+         testConformance(rbUCA);
+         }
+         */
+    }
+    BufferedReader in;
+    private void openTestFile(String type)
+    {
+        String collationTest = "CollationTest_";
+        String ext = ".txt";
+        try {
+            if(in != null) {
+                in.close();
+            }
+        } catch (Exception e) {
+            errln("Could not close the opened file!");
+            return;
+        }
+        try {
+            in = TestUtil.getDataReader(collationTest+type+ext);
+        } catch (Exception e) {
+            try {
+                in = TestUtil.getDataReader(collationTest+type+"_SHORT"+ext);
+            } catch (Exception e1) {
+                try {
+                    in = TestUtil.getDataReader(collationTest+type+"_STUB"+ext);
+                    logln( "INFO: Working with the stub file.\n"+
+                            "If you need the full conformance test, please\n"+
+                            "download the appropriate data files from:\n"+
+                    "http://source.icu-project.org/repos/icu/tools/trunk/unicodetools/com/ibm/text/data/");
+                } catch (Exception e11) {
+                    errln("ERROR: Could not find any of the test files");
+                }
+            }
+        }
+    }          
+    
+    private void setCollNonIgnorable(RuleBasedCollator coll) 
+    {
+        if(coll != null) {
+            coll.setDecomposition(RuleBasedCollator.CANONICAL_DECOMPOSITION);
+            coll.setLowerCaseFirst(false);
+            coll.setCaseLevel(false);
+            coll.setStrength(RuleBasedCollator.TERTIARY);
+            coll.setAlternateHandlingShifted(false);
+        }
+    }
+    
+    private void setCollShifted(RuleBasedCollator coll) 
+    {
+        if(coll != null) {
+            coll.setDecomposition(RuleBasedCollator.CANONICAL_DECOMPOSITION);
+            coll.setLowerCaseFirst(false);
+            coll.setCaseLevel(false);
+            coll.setStrength(RuleBasedCollator.QUATERNARY);
+            coll.setAlternateHandlingShifted(true);
+        }
+    }
+    
+    
+    
+    private void initRbUCA() 
+    {
+        /*      if(!rbUCA) {
+         UParseError parseError;
+         UChar      *ucarules = buffer;
+         int32_t size = ucol_getRulesEx(UCA, UCOL_FULL_RULES, ucarules, 
+         BUFFER_SIZE_);
+         if (size > BUFFER_SIZE_) {
+         ucarules = (UChar *)malloc(size * sizeof(UChar));
+         size = ucol_getRulesEx(UCA, UCOL_FULL_RULES, ucarules, size);
+         }
+         rbUCA = ucol_openRules(ucarules, size, UCOL_DEFAULT, UCOL_TERTIARY, 
+         &parseError, &status);
+         if (U_FAILURE(status)) {
+         errln("Failure creating UCA rule-based collator: %s", u_errorName(status));
+         return;
+         }
+         }
+         */
+    }
+    
+    private String parseString(String line) {
+        int i = 0, value;
+        StringBuffer result = new StringBuffer(), buffer = new StringBuffer();
+        
+        for(;;) {
+            while(Character.isWhitespace(line.charAt(i))) {
+                i++;
+            }
+            if(line.charAt(i) == ';' || i == line.length()) {
+                return result.toString();
+            }
+            while(Character.isLetterOrDigit(line.charAt(i))) {
+                buffer.append(line.charAt(i));
+                i++;
+            }
+            /* read one code point */
+            value = Integer.parseInt(buffer.toString(), 16);
+            buffer.delete(0, buffer.length());
+            
+            UTF16.append(result, value);
+        }
+        
+    }
+    private void conformanceTest(RuleBasedCollator coll) {
+        if(in == null || coll == null) {
+            return;
+        }
+        
+        int lineNo = 0;
+        
+        String line = null, oldLine = null, buffer = null, oldB = null;
+        CollationKey oldSk = null, newSk = null;
+        
+        int res = 0, cmpres = 0, cmpres2 = 0;
+        
+        try {
+            while ((line = in.readLine()) != null) {
+                lineNo++;
+                if(line.length() < 3 || line.charAt(0) == '#') {
+                    continue;
+                }
+                buffer = parseString(line);
+                
+                newSk = coll.getCollationKey(buffer);
+                if(oldSk != null) {
+                    res = oldSk.compareTo(newSk);
+                    cmpres = coll.compare(oldB, buffer);
+                    cmpres2 = coll.compare(buffer, oldB);
+                    
+                    if(cmpres != -cmpres2) {
+                        errln("Compare result not symmetrical on line "+lineNo);
+                    }
+                    if(((res&0x80000000) != (cmpres&0x80000000)) || (res == 0 && cmpres != 0) || (res != 0 && cmpres == 0)) {
+                        errln("Difference between ucol_strcoll and sortkey compare on line " + lineNo);
+                        logln(oldLine);
+                        logln(line);
+                    }
+                    
+                    if(res > 0) {
+                        errln("Line " + lineNo + " is not greater or equal than previous line");
+                        logln(oldLine);
+                        logln(line);
+                        cmpres = coll.compare(oldB, buffer);
+                    } else if(res == 0) {  // equal 
+                        res = comparer.compare(oldB, buffer);
+                        if (res == 0) {
+                            errln("Probable error in test file on line " + lineNo +" (comparing identical strings)");
+                            logln(oldLine);
+                            logln(line);
+                        } else if (res > 0) {
+                            errln("Sortkeys are identical, but code point comapare gives >0 on line " + lineNo);
+                            logln(oldLine);
+                            logln(line);
+                        }
+                    }
+                }
+                
+                oldSk = newSk;
+                oldB = buffer;
+                oldLine = line;
+            }
+        } catch (Exception e) {
+            errln("Unexpected exception "+e);
+        }
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/compression/DecompressionTest.java b/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
new file mode 100644
index 0000000..913ceae
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.compression;
+
+import com.ibm.icu.text.UnicodeDecompressor;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class DecompressionTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new DecompressionTest().run(args);
+    }
+
+    /** Print out a segment of a character array, if in verbose mode */
+    private void log(char [] chars, int start, int count) {
+        log("|");
+        for(int i = start; i < start + count; ++i) {
+            log(String.valueOf(chars[i]));
+        }
+        log("|");
+    }
+
+    /** Print out a segment of a character array, followed by a newline */
+    private void logln(char [] chars, int start, int count)
+    {
+        log(chars, start, count);
+        logln("");
+    }
+
+    /** Decompress the two segments */
+    private String decompressTest(byte [] segment1, byte [] segment2) {
+        StringBuffer s = new StringBuffer();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+
+        int [] bytesRead = new int[1];
+        char [] charBuffer = new char [2*(segment1.length + segment2.length)];
+        int count1 = 0, count2 = 0;
+
+        count1 = myDecompressor.decompress(segment1, 0, segment1.length,
+                                           bytesRead,
+                                           charBuffer, 0, charBuffer.length);
+        
+        logln("Segment 1 (" + segment1.length + " bytes) " +
+                "decompressed into " + count1  + " chars");
+        logln("Bytes consumed: " + bytesRead[0]);
+
+        logln("Got chars: ");
+        logln(charBuffer, 0, count1);
+        s.append(charBuffer, 0, count1);
+
+        count2 = myDecompressor.decompress(segment2, 0, segment2.length,
+                                           bytesRead,
+                                           charBuffer, count1, 
+                                           charBuffer.length);
+        
+        logln("Segment 2 (" + segment2.length + " bytes) " +
+                "decompressed into " + count2  + " chars");
+        logln("Bytes consumed: " + bytesRead[0]);
+
+        logln("Got chars: ");
+        logln(charBuffer, count1, count2);
+        
+        s.append(charBuffer, count1, count2);
+
+        logln("Result: ");
+        logln(charBuffer, 0, count1 + count2);
+        logln("====================");
+
+        return s.toString();
+    }
+
+
+    public void testDecompression() throws Exception {
+        String result;
+
+        // compressed segment breaking on a define window sequence
+        /*                   B     o     o     t     h     SD1  */
+        byte [] segment1 = { 0x42, 0x6f, 0x6f, 0x74, 0x68, 0x19 };
+
+        // continuation
+        /*                   IDX   ,           S     .          */
+        byte [] segment2 = { 0x01, 0x2c, 0x20, 0x53, 0x2e };
+        
+        result = decompressTest(segment1, segment2);
+        if(! result.equals("Booth, S.")) {
+            errln("Decompression test failed");
+            return;
+        }
+
+        // compressed segment breaking on a quote unicode sequence
+        /*                   B     o     o     t     SQU        */
+        byte [] segment3 = { 0x42, 0x6f, 0x6f, 0x74, 0x0e, 0x00 };
+
+        // continuation
+        /*                   h     ,           S     .          */
+        byte [] segment4 = { 0x68, 0x2c, 0x20, 0x53, 0x2e };
+
+        result = decompressTest(segment3, segment4);
+        if(! result.equals("Booth, S.")) {
+            errln("Decompression test failed");
+            return;
+        }
+
+
+        // compressed segment breaking on a quote unicode sequence
+        /*                   SCU   UQU                         */
+        byte [] segment5 = { 0x0f, (byte)0xf0, 0x00 };
+
+        // continuation
+        /*                   B                                 */
+        byte [] segment6 = { 0x42 };
+
+        result = decompressTest(segment5, segment6);
+        if(! result.equals("B")) {
+            errln("Decompression test failed");
+            return;
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java b/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
new file mode 100644
index 0000000..2230027
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
@@ -0,0 +1,522 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.compression;
+
+import com.ibm.icu.text.UnicodeCompressor;
+import com.ibm.icu.text.UnicodeDecompressor;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class ExhaustiveTest extends TestFmwk {
+    public static void main(String args[]) throws Exception {
+        new ExhaustiveTest().run(args);
+    }
+
+    /** Test simple compress/decompress API, returning # of errors */
+    public void testSimple() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            simpleTest(fTestCases[i]);
+        }
+    }
+    private void simpleTest(String s) throws Exception {
+        byte [] compressed = UnicodeCompressor.compress(s);
+        String res = UnicodeDecompressor.decompress(compressed);
+        if (logDiffs(s.toCharArray(), s.length(), 
+                res.toCharArray(), res.length()) == false) {
+            logln(s.length() + " chars ===> " 
+                    + compressed.length + " bytes ===> " 
+                    + res.length() + " chars");
+        } else {
+            logln("Compressed:");
+            printBytes(compressed, compressed.length);
+            errln("testSimple did not compress correctly");
+        }
+    }
+
+    /** Test iterative compress/decompress API, returning # of errors */
+    public void testIterative() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            myTest(fTestCases[i].toCharArray(), fTestCases[i].length());
+        }
+    }
+    private void myTest(char[] chars, int len) {
+        UnicodeCompressor myCompressor = new UnicodeCompressor();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+        
+        // variables for my compressor
+        int myByteCount = 0;
+        int myCharCount = 0;
+        int myCompressedSize = Math.max(512, 3*len);
+        byte[] myCompressed = new byte[myCompressedSize];
+        int myDecompressedSize = Math.max(2, 2 * len);
+        char[] myDecompressed = new char[myDecompressedSize];
+        int[] unicharsRead = new int[1];
+        int[] bytesRead = new int[1];
+        
+        myByteCount = myCompressor.compress(chars, 0, len, unicharsRead,
+                myCompressed, 0, myCompressedSize);
+
+        myCharCount = myDecompressor.decompress(myCompressed, 0, myByteCount,
+                bytesRead, myDecompressed, 0, myDecompressedSize);
+
+        if (logDiffs(chars, len, myDecompressed, myCharCount) == false) {
+            logln(len + " chars ===> " 
+                    + myByteCount + " bytes ===> " 
+                    + myCharCount + " chars");
+        } else {
+            logln("Compressed:");
+            printBytes(myCompressed, myByteCount);
+            errln("Iterative test failed");
+        }
+    }
+
+    /** Test iterative compress/decompress API */
+    public void testMultipass() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            myMultipassTest(fTestCases[i].toCharArray(), fTestCases[i].length());
+        }
+    }
+    private void myMultipassTest(char [] chars, int len) throws Exception {
+        UnicodeCompressor myCompressor = new UnicodeCompressor();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+        
+        // variables for my compressor
+        
+        // for looping
+        int byteBufferSize = 4;//Math.max(4, len / 4);
+        byte[] byteBuffer = new byte [byteBufferSize];
+        // real target
+        int compressedSize = Math.max(512, 3 * len);
+        byte[] compressed = new byte[compressedSize];
+
+        // for looping
+        int unicharBufferSize = 2;//byteBufferSize;
+        char[] unicharBuffer = new char[unicharBufferSize];
+        // real target
+        int decompressedSize = Math.max(2, 2 * len);
+        char[] decompressed = new char[decompressedSize];
+
+        int bytesWritten = 0;
+        int unicharsWritten = 0;
+
+        int[] unicharsRead = new int[1];
+        int[] bytesRead = new int[1];
+        
+        int totalCharsCompressed = 0;
+        int totalBytesWritten = 0;
+
+        int totalBytesDecompressed  = 0;
+        int totalCharsWritten = 0;
+
+        // not used boolean err = false;
+
+
+        // perform the compression in a loop
+        do {
+            
+            // do the compression
+            bytesWritten = myCompressor.compress(chars, totalCharsCompressed, 
+                   len, unicharsRead, byteBuffer, 0, byteBufferSize);
+
+            // copy the current set of bytes into the target buffer
+            System.arraycopy(byteBuffer, 0, compressed, 
+                   totalBytesWritten, bytesWritten);
+            
+            // update the no. of characters compressed
+            totalCharsCompressed += unicharsRead[0];
+            
+            // update the no. of bytes written
+            totalBytesWritten += bytesWritten;
+            
+            /*System.out.logln("Compression pass complete.  Compressed "
+                               + unicharsRead[0] + " chars into "
+                               + bytesWritten + " bytes.");*/
+        } while(totalCharsCompressed < len);
+
+        if (totalCharsCompressed != len) {
+            errln("ERROR: Number of characters compressed("
+                    + totalCharsCompressed + ") != len(" + len + ")");
+        } else {
+            logln("MP: " + len + " chars ===> " + totalBytesWritten + " bytes.");
+        }
+        
+        // perform the decompression in a loop
+        do {
+            
+            // do the decompression
+            unicharsWritten = myDecompressor.decompress(compressed, 
+                    totalBytesDecompressed, totalBytesWritten, 
+                    bytesRead, unicharBuffer, 0, unicharBufferSize);
+
+            // copy the current set of chars into the target buffer
+            System.arraycopy(unicharBuffer, 0, decompressed, 
+                    totalCharsWritten, unicharsWritten);
+            
+            // update the no. of bytes decompressed
+            totalBytesDecompressed += bytesRead[0];
+            
+            // update the no. of chars written
+            totalCharsWritten += unicharsWritten;
+            
+            /*System.out.logln("Decompression pass complete.  Decompressed "
+                               + bytesRead[0] + " bytes into "
+                               + unicharsWritten + " chars.");*/
+        } while (totalBytesDecompressed < totalBytesWritten);
+
+        if (totalBytesDecompressed != totalBytesWritten) {
+            errln("ERROR: Number of bytes decompressed(" 
+                    + totalBytesDecompressed 
+                    + ") != totalBytesWritten(" 
+                    + totalBytesWritten + ")");
+        } else {
+            logln("MP: " + totalBytesWritten
+                    + " bytes ===> " + totalCharsWritten + " chars.");
+        }
+        
+        if (logDiffs(chars, len, decompressed, totalCharsWritten)) {
+            errln("ERROR: buffer contents incorrect");
+        }
+    }
+
+    /** Print differences between two character buffers */
+    private boolean logDiffs(char[] s1, int s1len, char[] s2, int s2len) {
+        boolean result  = false;
+        
+        if(s1len != s2len) {
+            logln("====================");
+            logln("Length doesn't match: expected " + s1len
+                               + ", got " + s2len);
+            logln("Expected:");
+            printChars(s1, s1len);
+            logln("Got:");
+            printChars(s2, s2len);
+            result = true;
+        }
+        
+        int len = Math.min(s1len, s2len);
+        for(int i = 0; i < len; ++i) {
+            if(s1[i] != s2[i]) {
+                if(result == false) {
+                    logln("====================");
+                }
+                logln("First difference at char " + i);
+                logln("Exp. char: " + Integer.toHexString(s1[i]));
+                logln("Got char : " + Integer.toHexString(s2[i]));
+                logln("Expected:");
+                printChars(s1, s1len);
+                logln("Got:");
+                printChars(s2, s2len);
+                result = true;
+                break;
+            }
+        }
+    
+        return result;
+    }
+
+    // generate a string of characters, with simulated runs of characters
+    /*private static char[] randomChars(int len, Random random) {
+        char[] result = new char [len];
+        int runLen = 0;
+        int used = 0;
+        
+        while(used < len) {
+            runLen = (int) (30 * random.nextDouble());
+            if(used + runLen >= len) {
+                runLen = len - used;
+            }
+            randomRun(result, used, runLen, random);
+            used += runLen;
+        }
+    
+        return result;
+    }*/
+
+    // generate a run of characters in a "window"
+    /*private static void randomRun(char[] target, int pos, int len, Random random) {
+        int offset = (int) (0xFFFF * random.nextDouble());
+
+        // don't overflow 16 bits
+        if(offset > 0xFF80) {
+            offset = 0xFF80;
+        }
+
+        for(int i = pos; i < pos + len; i++) {
+            target[i] = (char)(offset + (0x7F * random.nextDouble()));
+        }
+    }*/
+
+    private static final String [] fTestCases = {
+        "Hello \u9292 \u9192 World!",
+        "Hell\u0429o \u9292 \u9192 W\u0084rld!",
+        "Hell\u0429o \u9292 \u9292W\u0084rld!",
+
+        "\u0648\u06c8", // catch missing reset
+        "\u0648\u06c8",
+
+        "\u4444\uE001", // lowest quotable
+        "\u4444\uf2FF", // highest quotable
+        "\u4444\uf188\u4444",
+        "\u4444\uf188\uf288",
+        "\u4444\uf188abc\0429\uf288",
+        "\u9292\u2222",
+        "Hell\u0429\u04230o \u9292 \u9292W\u0084\u0192rld!",
+        "Hell\u0429o \u9292 \u9292W\u0084rld!",
+        "Hello World!123456",
+        "Hello W\u0081\u011f\u0082!", // Latin 1 run
+
+        "abc\u0301\u0302",  // uses SQn for u301 u302
+        "abc\u4411d",      // uses SQU
+        "abc\u4411\u4412d",// uses SCU
+        "abc\u0401\u0402\u047f\u00a5\u0405", // uses SQn for ua5
+        "\u9191\u9191\u3041\u9191\u3041\u3041\u3000", // SJIS like data
+        "\u9292\u2222",
+        "\u9191\u9191\u3041\u9191\u3041\u3041\u3000",
+        "\u9999\u3051\u300c\u9999\u9999\u3060\u9999\u3065\u3065\u3065\u300c",
+        "\u3000\u266a\u30ea\u30f3\u30b4\u53ef\u611b\u3044\u3084\u53ef\u611b\u3044\u3084\u30ea\u30f3\u30b4\u3002",
+
+        "", // empty input
+        "\u0000", // smallest BMP character
+        "\uFFFF", // largest BMP character
+
+        "\ud800\udc00", // smallest surrogate
+        "\ud8ff\udcff", // largest surrogate pair
+        
+        // regression tests
+        "\u6441\ub413\ua733\uf8fe\ueedb\u587f\u195f\u4899\uf23d\u49fd\u0aac\u5792\ufc22\ufc3c\ufc46\u00aa",
+        "\u30f9\u8321\u05e5\u181c\ud72b\u2019\u99c9\u2f2f\uc10c\u82e1\u2c4d\u1ebc\u6013\u66dc\ubbde\u94a5\u4726\u74af\u3083\u55b9\u000c",
+        "\u0041\u00df\u0401\u015f",
+        "\u9066\u2123abc",
+        "\ud266\u43d7\\\ue386\uc9c0\u4a6b\u9222\u901f\u7410\ua63f\u539b\u9596\u482e\u9d47\ucfe4\u7b71\uc280\uf26a\u982f\u862a\u4edd\uf513\ufda6\u869d\u2ee0\ua216\u3ff6\u3c70\u89c0\u9576\ud5ec\ubfda\u6cca\u5bb3\ubcea\u554c\u914e\ufa4a\uede3\u2990\ud2f5\u2729\u5141\u0f26\uccd8\u5413\ud196\ubbe2\u51b9\u9b48\u0dc8\u2195\u21a2\u21e9\u00e4\u9d92\u0bc0\u06c5",
+        "\uf95b\u2458\u2468\u0e20\uf51b\ue36e\ubfc1\u0080\u02dd\uf1b5\u0cf3\u6059\u7489"
+
+    };
+
+    //==========================
+    // Compression modes
+    //==========================
+    private final static int SINGLEBYTEMODE                 = 0;
+    private final static int UNICODEMODE                    = 1;
+    
+    //==========================
+    // Single-byte mode tags
+    //==========================
+    private final static int SDEFINEX                   = 0x0B;
+    //private final static int SRESERVED                  = 0x0C;             // this is a reserved value
+    private final static int SQUOTEU                    = 0x0E;
+    private final static int SSWITCHU                   = 0x0F;
+
+    private final static int SQUOTE0                        = 0x01;
+    private final static int SQUOTE1                        = 0x02;
+    private final static int SQUOTE2                        = 0x03;
+    private final static int SQUOTE3                        = 0x04;
+    private final static int SQUOTE4                        = 0x05;
+    private final static int SQUOTE5                        = 0x06;
+    private final static int SQUOTE6                        = 0x07;
+    private final static int SQUOTE7                        = 0x08;
+
+    private final static int SSWITCH0                       = 0x10;
+    private final static int SSWITCH1                       = 0x11;
+    private final static int SSWITCH2                       = 0x12;
+    private final static int SSWITCH3                       = 0x13;
+    private final static int SSWITCH4                       = 0x14;
+    private final static int SSWITCH5                       = 0x15;
+    private final static int SSWITCH6                       = 0x16;
+    private final static int SSWITCH7                       = 0x17;
+
+    private final static int SDEFINE0                       = 0x18;
+    private final static int SDEFINE1                       = 0x19;
+    private final static int SDEFINE2                       = 0x1A;
+    private final static int SDEFINE3                       = 0x1B;
+    private final static int SDEFINE4                       = 0x1C;
+    private final static int SDEFINE5                       = 0x1D;
+    private final static int SDEFINE6                       = 0x1E;
+    private final static int SDEFINE7                       = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    private final static int USWITCH0                       = 0xE0;
+    private final static int USWITCH1                       = 0xE1;
+    private final static int USWITCH2                       = 0xE2;
+    private final static int USWITCH3                       = 0xE3;
+    private final static int USWITCH4                       = 0xE4;
+    private final static int USWITCH5                       = 0xE5;
+    private final static int USWITCH6                       = 0xE6;
+    private final static int USWITCH7                       = 0xE7;
+
+    private final static int UDEFINE0                       = 0xE8;
+    private final static int UDEFINE1                       = 0xE9;
+    private final static int UDEFINE2                       = 0xEA;
+    private final static int UDEFINE3                       = 0xEB;
+    private final static int UDEFINE4                       = 0xEC;
+    private final static int UDEFINE5                       = 0xED;
+    private final static int UDEFINE6                       = 0xEE;
+    private final static int UDEFINE7                       = 0xEF;
+
+    private final static int UQUOTEU                        = 0xF0;
+    private final static int UDEFINEX                       = 0xF1;
+    //private final static int URESERVED                      = 0xF2;         // this is a reserved value
+
+    /* Print out an array of characters, with non-printables (for me) 
+       displayed as hex values */
+    private void printChars(char[] chars, int len) {
+        for(int i = 0; i < len; i++) {
+            int c = (int)chars[i];
+            if(c < 0x0020 || c >= 0x7f) {
+                log("[0x");
+                log(Integer.toHexString(c));
+                log("]");
+            } else {
+                log(String.valueOf((char)c));
+            }
+        }
+        logln("");
+    }
+
+    private void printBytes(byte[] byteBuffer, int len) {
+        int curByteIndex = 0;
+        int byteBufferLimit = len;
+        int mode = SINGLEBYTEMODE;
+        int aByte = 0x00;
+        
+        if(len > byteBuffer.length) {
+            logln("Warning: printBytes called with length too large. Truncating");
+            byteBufferLimit = byteBuffer.length;
+        }
+        
+        while(curByteIndex < byteBufferLimit) {
+            switch(mode) {  
+            case SINGLEBYTEMODE:
+                while(curByteIndex < byteBufferLimit 
+                      && mode == SINGLEBYTEMODE)  {
+                    aByte = ((int)byteBuffer[curByteIndex++]) & 0xFF;
+                    switch(aByte) {
+                    default:
+                        log(Integer.toHexString(((int) aByte) & 0xFF) + " ");
+                        break;
+                        // quote unicode
+                    case SQUOTEU:
+                        log("SQUOTEU ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // switch to Unicode mode
+                    case SSWITCHU:
+                        log("SSWITCHU ");
+                        mode = UNICODEMODE;
+                        break;
+                        
+                        // handle all quote tags
+                    case SQUOTE0: case SQUOTE1: case SQUOTE2: case SQUOTE3:
+                    case SQUOTE4: case SQUOTE5: case SQUOTE6: case SQUOTE7:
+                        log("SQUOTE" + (aByte - SQUOTE0) + " ");
+                        if(curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle all switch tags
+                    case SSWITCH0: case SSWITCH1: case SSWITCH2: case SSWITCH3:
+                    case SSWITCH4: case SSWITCH5: case SSWITCH6: case SSWITCH7:
+                        log("SSWITCH" + (aByte - SSWITCH0) + " ");
+                        break;
+                                        
+                        // handle all define tags
+                    case SDEFINE0: case SDEFINE1: case SDEFINE2: case SDEFINE3:
+                    case SDEFINE4: case SDEFINE5: case SDEFINE6: case SDEFINE7:
+                        log("SDEFINE" + (aByte - SDEFINE0) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle define extended tag
+                    case SDEFINEX:
+                        log("SDEFINEX ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    } // end switch
+                } // end while
+                break;
+                
+            case UNICODEMODE:
+                while(curByteIndex < byteBufferLimit && mode == UNICODEMODE) {
+                    aByte = ((int)byteBuffer[curByteIndex++]) & 0xFF;
+                    switch(aByte) {
+                        // handle all define tags
+                    case UDEFINE0: case UDEFINE1: case UDEFINE2: case UDEFINE3:
+                    case UDEFINE4: case UDEFINE5: case UDEFINE6: case UDEFINE7:
+                        log("UDEFINE" + (aByte - UDEFINE0) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        mode = SINGLEBYTEMODE;
+                        break;
+                        
+                        // handle define extended tag
+                    case UDEFINEX:
+                        log("UDEFINEX ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle all switch tags
+                    case USWITCH0: case USWITCH1: case USWITCH2: case USWITCH3:
+                    case USWITCH4: case USWITCH5: case USWITCH6: case USWITCH7:
+                        log("USWITCH" + (aByte - USWITCH0) + " ");
+                        mode = SINGLEBYTEMODE;
+                        break;
+                        
+                        // quote unicode
+                    case UQUOTEU:
+                        log("UQUOTEU ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    default:
+                        log(Integer.toHexString(((int) aByte) & 0xFF) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    } // end switch
+                } // end while
+                break;
+                
+            } // end switch( mode )
+        } // end while
+        
+        logln("");
+    }    
+}
+
+
+
+
+
+
diff --git a/src/com/ibm/icu/dev/test/compression/TestAll.java b/src/com/ibm/icu/dev/test/compression/TestAll.java
new file mode 100644
index 0000000..133435b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/TestAll.java
@@ -0,0 +1,27 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.compression;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "DecompressionTest",
+            "ExhaustiveTest",
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "Compression";
+}
diff --git a/src/com/ibm/icu/dev/test/compression/package.html b/src/com/ibm/icu/dev/test/compression/package.html
new file mode 100644
index 0000000..426bc94
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/compression/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for the compression classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java b/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
new file mode 100644
index 0000000..f54a484
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
@@ -0,0 +1,355 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.impl.XMLRecordReader;
+import com.ibm.icu.impl.duration.impl.XMLRecordWriter;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+public class DataReadWriteTest extends TestFmwk {
+
+    /**
+     * Invoke the tests.
+     */
+    public static void main(String[] args) {
+        new DataReadWriteTest().run(args);
+    }
+
+    // strip line ends and trailing spaces
+    private String normalize(String str) {
+        StringBuffer sb = new StringBuffer();
+        boolean inLine = true;
+        for (int i = 0; i < str.length(); ++i) {
+            char c = str.charAt(i);
+            if (inLine && c == ' ') {
+                continue;
+            }
+            if (c == '\n') {
+                inLine = true;
+                continue;
+            }
+            inLine = false;
+            sb.append("" + c);
+        }
+        return sb.toString();
+    }
+
+    public void testOpenClose() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        assertTrue(null, xrw.open("Test"));
+        assertTrue(null, xrw.close());
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals(null, "<Test></Test>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertTrue(null, xrr.open("Test"));
+        assertTrue(null, xrr.close());
+    }
+
+    public void testBool() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        xrw.bool("x", true);
+        xrw.bool("y", false);
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals(null, "<x>true</x><y>false</y>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertTrue(null, xrr.bool("x"));
+        assertFalse(null, xrr.bool("y"));
+    }
+
+    public void testBoolArray() {
+        boolean[][] datas = {
+            {},
+            { true },
+            { true, false },
+            { true, false, true },
+        };
+    
+        String[] targets = {
+            "<testList></testList>",
+            "<testList><test>true</test></testList>",
+            "<testList><test>true</test><test>false</test></testList>",
+            "<testList><test>true</test><test>false</test>" +
+            "<test>true</test></testList>",
+        };
+
+        for (int j = 0; j < datas.length; ++j) {
+            boolean[] data = datas[j];
+            String target = targets[j];
+
+            StringWriter sw = new StringWriter();
+            XMLRecordWriter xrw = new XMLRecordWriter(sw);
+            xrw.boolArray("test", data);
+            xrw.flush();
+            String str = sw.toString();
+            assertEquals("" + j, target, normalize(str));
+
+            StringReader sr = new StringReader(str);
+            XMLRecordReader xrr = new XMLRecordReader(sr);
+            boolean[] out = xrr.boolArray("test");
+
+            assertNotNull("" + j, out);
+            assertEquals("" + j, data.length, out.length);
+            for (int i = 0; i < data.length; ++i) {
+                assertEquals("" + j + "/" + i, data[i], out[i]);
+            }
+        }
+    }
+
+    public void testCharacter() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        xrw.character("x", 'a');
+        xrw.character("y", 'b');
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals(null, "<x>a</x><y>b</y>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertEquals(null, 'a', xrr.character("x"));
+        assertEquals(null, 'b', xrr.character("y"));
+    }
+
+    public void testCharacterArray() {
+        char[][] datas = {
+            {},
+            { 'a' },
+            { 'a', 'b' },
+            { 'a', 'b', 'c' },
+        };
+
+        String[] targets = {
+            "<testList></testList>",
+            "<testList><test>a</test></testList>",
+            "<testList><test>a</test><test>b</test></testList>",
+            "<testList><test>a</test><test>b</test>" +
+            "<test>c</test></testList>",
+        };
+
+        for (int j = 0; j < datas.length; ++j) {
+            char[] data = datas[j];
+            String target = targets[j];
+
+            StringWriter sw = new StringWriter();
+            XMLRecordWriter xrw = new XMLRecordWriter(sw);
+            xrw.characterArray("test", data);
+            xrw.flush();
+            String str = sw.toString();
+            assertEquals("" + j, target, normalize(str));
+
+            StringReader sr = new StringReader(str);
+            XMLRecordReader xrr = new XMLRecordReader(sr);
+            char[] out = xrr.characterArray("test");
+
+            assertNotNull("" + j, out);
+            assertEquals("" + j, data.length, out.length);
+            for (int i = 0; i < data.length; ++i) {
+                assertEquals("" + j + "/" + i, data[i], out[i]);
+            }
+        }
+    }
+
+    public void testNamedIndex() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        String[] names = { "zero", "one" };
+
+        xrw.namedIndex("x", names, 0);
+        xrw.namedIndex("y", names, 1);
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals(null, "<x>zero</x><y>one</y>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertEquals(null, 0, xrr.namedIndex("x", names));
+        assertEquals(null, 1, xrr.namedIndex("y", names));
+    }
+
+    public void testNamedIndexArray() {
+        String[] names = { "zero", "one" };
+        byte[][] datas = {
+            {},
+            { 0 },
+            { 1, 0 },
+            { 0, 1, 0 },
+        };
+
+        String[] targets = {
+            "<testList></testList>",
+            "<testList><test>zero</test></testList>",
+            "<testList><test>one</test><test>zero</test></testList>",
+            "<testList><test>zero</test><test>one</test>" +
+            "<test>zero</test></testList>",
+        };
+
+        for (int j = 0; j < datas.length; ++j) {
+            byte[] data = datas[j];
+            String target = targets[j];
+
+            StringWriter sw = new StringWriter();
+            XMLRecordWriter xrw = new XMLRecordWriter(sw);
+            xrw.namedIndexArray("test", names, data);
+            xrw.flush();
+            String str = sw.toString();
+            assertEquals("" + j, target, normalize(str));
+
+            StringReader sr = new StringReader(str);
+            XMLRecordReader xrr = new XMLRecordReader(sr);
+            byte[] out = xrr.namedIndexArray("test", names);
+
+            assertNotNull("" + j, out);
+            assertEquals("" + j, data.length, out.length);
+            for (int i = 0; i < data.length; ++i) {
+                assertEquals("" + j + "/" + i, data[i], out[i]);
+            }
+        }
+    }
+
+    public void testString() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+
+        String s = " This is <a> &&\t test. ";
+        String s1 = " This is <a> && test. ";
+        String t = " This is &lt;a> &amp;&amp; test. ";
+        xrw.string("x", s);
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals("\n'" + normalize(str) + "' = \n'<x>" + t + "</x>", "<x>"
+                + t + "</x>", normalize(str));
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        String res = xrr.string("x");
+        assertEquals("\n'" + res + "' == \n'" + s1 + "'", s1, res);
+    }
+
+    public void testStringArray() {
+        String s1 = "";
+        String s2 = " ";
+        String s3 = "This is a test";
+        String s4 = "  It is\n   only  a test\t  ";
+        String s4x = " It is only a test ";
+
+        String[][] datas = { 
+            {},
+            { s1 },
+            { s2, s1 },
+            { s3, s2, s1 },
+            { s3, null, s1, null },
+            { s4, s1, s3, s2 }
+        };
+
+        String[] targets = {
+            "<testList></testList>",
+            "<testList><test>" + s1 + "</test></testList>",
+            "<testList><test>" + s2 + "</test><test>" + s1 + "</test></testList>",
+            "<testList><test>" + s3 + "</test><test>" + s2 + 
+                "</test><test>" + s1 + "</test></testList>",
+            "<testList><test>" + s3 + "</test><test>Null</test><test>" + s1 + 
+                "</test><test>Null</test></testList>",
+            "<testList><test>" + s4x + "</test><test>" + s1 + 
+                "</test><test>" + s3 + "</test><test>" + s2 + "</test></testList>",
+        };
+
+        for (int j = 0; j < datas.length; ++j) {
+            String[] data = datas[j];
+            String target = targets[j];
+
+            StringWriter sw = new StringWriter();
+            XMLRecordWriter xrw = new XMLRecordWriter(sw);
+            xrw.stringArray("test", data);
+            xrw.flush();
+            String str = sw.toString();
+            assertEquals("" + j + " '" + str + "'", target, normalize(str));
+
+            StringReader sr = new StringReader(str);
+            XMLRecordReader xrr = new XMLRecordReader(sr);
+            String[] out = xrr.stringArray("test");
+
+            assertNotNull("" + j, out);
+            assertEquals("" + j, data.length, out.length);
+            for (int i = 0; i < data.length; ++i) {
+                String standin = data[i];
+                if (s4.equals(standin)) {
+                    standin = s4x;
+                }
+                assertEquals("" + j + "/" + i + " '" + out[i] + "'", standin,
+                        out[i]);
+            }
+        }
+    }
+
+    public void testStringTable() {
+        String s1 = "";
+        String s2 = " ";
+        String s3 = "This is a test";
+        String s4 = "It is only a test";
+
+        String[][] table = { 
+            {},
+            { s1 },
+            { s2, s1 },
+            { s3, s2, s1 },
+            null,
+            { s4, s1, s3, s2 }
+        };
+
+        String target = "<testTable>" +
+            "<testList></testList>" +
+            "<testList><test></test></testList>" +
+            "<testList><test> </test><test></test></testList>" +
+            "<testList><test>This is a test</test><test> </test>" + 
+                "<test></test></testList>" +
+            "<testList>Null</testList>" +
+            "<testList><test>It is only a test</test><test></test>" +
+                "<test>This is a test</test><test> </test></testList>" +
+            "</testTable>";
+
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        xrw.stringTable("test", table);
+        xrw.flush();
+        String str = sw.toString();
+        assertEquals("'" + str + "'", target, normalize(str));
+    }
+
+    public void testOmittedFields() {
+        StringWriter sw = new StringWriter();
+        XMLRecordWriter xrw = new XMLRecordWriter(sw);
+        xrw.open("omit");
+        xrw.bool("x", true);
+        xrw.bool("y", false);
+        xrw.close();
+        xrw.flush();
+        String str = sw.toString();
+
+        StringReader sr = new StringReader(str);
+        XMLRecordReader xrr = new XMLRecordReader(sr);
+        assertTrue(null, xrr.open("omit"));
+        assertTrue(null, xrr.bool("x"));
+        assertEquals(null, '\uffff', xrr.character("z"));
+        assertFalse(null, xrr.bool("y"));
+        assertTrue(null, xrr.close());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java b/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
new file mode 100644
index 0000000..9a6e37e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
@@ -0,0 +1,246 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.duration;
+
+import java.util.Date;
+import java.util.MissingResourceException;
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
+//#endif
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.DurationFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author srl
+ *
+ */
+public class ICUDurationTest extends TestFmwk {
+
+    /**
+     * 
+     */
+    public ICUDurationTest() {
+    }
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        new ICUDurationTest().run(args);
+    }
+    
+    
+    /**
+     * Basic test
+     */
+    public void TestBasics() {
+        DurationFormat df;
+        String expect;
+        String formatted;
+        
+        df = DurationFormat.getInstance(new ULocale("it"));
+        formatted = df.formatDurationFromNow(4096);
+        expect = "fra quattro secondi";
+        if(!expect.equals(formatted)) {
+            errln("Expected " + expect + " but got " + formatted);
+        } else {
+            logln("format duration -> " + formatted);
+        }
+        
+        formatted = df.formatDurationFromNowTo(new Date(0));
+        Calendar cal = Calendar.getInstance();
+        int years = cal.get(Calendar.YEAR) - 1970; // year of Date(0)
+        expect = "fra " + years + " anni";
+        if(!expect.equals(formatted)) {
+            errln("Expected " + expect + " but got " + formatted);
+        } else {
+            logln("format date  -> " + formatted);
+        }
+        
+        formatted = df.formatDurationFrom(1000*3600*24, new Date(0).getTime());
+        expect = "fra un giorno";
+        if(!expect.equals(formatted)) {
+            errln("Expected " + expect + " but got " + formatted);
+        } else {
+            logln("format date from -> " + formatted);
+        }
+
+        formatted = df.format(new Long(1000*3600*24*2));
+        expect = "fra due giorni";
+        if(!expect.equals(formatted)) {
+            errln("Expected " + expect + " but got " + formatted);
+        } else {
+            logln("format long obj -> " + formatted);
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+    public void TestSimpleXMLDuration() {
+        DatatypeFactory factory = null;
+        try {
+            factory = DatatypeFactory.newInstance();
+        } catch (DatatypeConfigurationException e) {
+            errln("Error instantiating XML DatatypeFactory.");
+            e.printStackTrace();
+        }
+        
+        Duration d;
+        DurationFormat df;
+        String out;
+        String expected;
+        String expected2;
+        
+        // test 1
+        d = factory.newDuration("PT2H46M40S");
+        df = DurationFormat.getInstance(new ULocale("en"));
+        expected = "2 hours, 46 minutes, and 40 seconds";
+        out = df.format(d);
+        if(out.equals(expected)) {
+            logln("out=expected: " + expected + " from " + d);
+        } else {
+            errln("FAIL: got " + out + " wanted " + expected + " from " + d);
+        }
+        
+        // test 2
+        d = factory.newDuration(10000);
+        df = DurationFormat.getInstance(new ULocale("en"));
+        expected = "10 seconds";
+        out = df.format(d);
+        if(out.equals(expected)) {
+            logln("out=expected: " + expected + " from " + d);
+        } else {
+            errln("FAIL: got " + out + " wanted " + expected + " from " + d);
+        }
+        // test 3
+        d = factory.newDuration("P0DT0H0M10.0S");
+        df = DurationFormat.getInstance(new ULocale("en"));
+        expected = "10 seconds";
+        out = df.format(d);
+        if(out.equals(expected)) {
+            logln("out=expected: " + expected + " from " + d);
+        } else {
+            errln("FAIL: got " + out + " wanted " + expected + " from " + d);
+        }
+        // test 4
+        d = factory.newDuration(86400000);
+        df = DurationFormat.getInstance(new ULocale("en"));
+        expected = "1 day, 0 hours, 0 minutes, and 0 seconds";
+        expected2 = "1 day and 0 seconds"; // This is the expected result for Windows with IBM JRE6
+        out = df.format(d);
+        if(out.equals(expected)) {
+            logln("out=expected: " + expected + " from " + d);
+        } else {
+            if(out.equals(expected2)){
+                logln("WARNING: got " + out + " wanted " + expected + " from " + d);
+            } else{
+                errln("FAIL: got " + out + " wanted " + expected + " from " + d);
+            }
+        }
+    }
+
+
+    public void TestXMLDuration() {
+        DatatypeFactory factory = null;
+        try {
+            factory = DatatypeFactory.newInstance();
+        } catch (DatatypeConfigurationException e) {
+            errln("Error instantiating XML DatatypeFactory.");
+            e.printStackTrace();
+        }
+        
+        String cases[] = {
+                "en",   "PT10.00099S",   "10 seconds",
+                "en",   "#10000",   "10 seconds",
+                "en",   "-PT10.00099S",   "10 seconds",
+                "en",   "#-10000",   "10 seconds",
+                
+                // from BD req's
+                "en",   "PT2H46M40S",   "2 hours, 46 minutes, and 40 seconds",
+                "it",   "PT2H46M40S",   "due ore, 46 minuti e 40 secondi",
+                
+                // more cases
+                "en",   "PT10S",        "10 seconds",
+                "en",   "PT88M70S",        "88 minutes and 70 seconds",
+                "en",   "PT10.100S",    "10 seconds and 100 milliseconds",
+                "en",   "-PT10S",       "10 seconds",
+                "en",   "PT0H5M0S",     "5 minutes and 0 seconds"
+        };
+        
+        for(int n=0;n<cases.length;n+=3) {
+            String loc = cases[n+0];
+            String from = cases[n+1];
+            String to = cases[n+2];
+            
+            ULocale locale = new ULocale(loc);
+            Duration d;
+            if(from.startsWith("#")) {
+                d = factory.newDuration(Long.parseLong(from.substring(1)));
+            } else {
+                d = factory.newDuration(from);
+            }
+            
+            DurationFormat df = DurationFormat.getInstance(locale);
+            String output = df.format(d);
+            
+            if(output.equals(to)) {
+                logln("SUCCESS: locale: " + loc + ", from " + from + " ["+d.toString()+"] " +" to " + to + "= " + output);
+            } else {
+                logln("FAIL: locale: " + loc + ", from " + from + " ["+d.toString()+"] " +": expected " + to + " got " + output);
+            }
+        }
+    }
+//#endif
+
+
+    public void TestBadObjectError() {
+        Runtime r = Runtime.getRuntime();
+        DurationFormat df = DurationFormat.getInstance(new ULocale("en"));
+        String output = null;
+        try {
+            output = df.format(r);
+            errln("FAIL: did NOT get IllegalArgumentException! Should have. Formatted Runtime as " + output + " ???");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: expected: Caught iae: " + iae.toString() );
+        }
+        // try a second time, because it is a different code path for java < 1.5
+        try {
+            output = df.format(r);
+            errln("FAIL: [#2] did NOT get IllegalArgumentException! Should have. Formatted Runtime as " + output + " ???");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: [#2] expected: Caught iae: " + iae.toString() );
+        }
+    }
+
+    public void TestBadLocaleError() {
+        try {
+            DurationFormat df = DurationFormat.getInstance(new ULocale("und"));
+            df.format(new Date());
+            logln("Should have thrown err.");
+            errln("failed, should have thrown err.");
+        } catch(MissingResourceException mre) {
+            logln("PASS: caught missing resource exception on locale 'und'");
+            logln(mre.toString());
+        }
+    }
+
+    public void TestResourceWithCalendar() {
+        DurationFormat df = DurationFormat.getInstance(new ULocale("th@calendar=buddhist"));
+        // should pass, but return a default formatter for th.
+        if (df == null) {
+            errln("FAIL: null DurationFormat returned.");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/LanguageTestRoot.java b/src/com/ibm/icu/dev/test/duration/LanguageTestRoot.java
new file mode 100644
index 0000000..fc5f095
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/LanguageTestRoot.java
@@ -0,0 +1,798 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.*;
+import com.ibm.icu.impl.duration.impl.DataRecord.*;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Test cases for en
+ */
+public class LanguageTestRoot extends TestFmwk implements TimeUnitConstants {
+
+    private static final TimeUnit[] units = {
+        TimeUnit.YEAR, TimeUnit.MONTH, TimeUnit.WEEK, TimeUnit.DAY, TimeUnit.HOUR, 
+        TimeUnit.MINUTE, TimeUnit.SECOND, TimeUnit.MILLISECOND
+    };
+
+    protected boolean inheritTargets() {
+        return true;
+    }
+
+    private static final BasicPeriodFormatterService pfs = BasicPeriodFormatterService
+            .getInstance();
+
+    private TestData data;
+    private String locale;
+
+    //private DurationFormatterFactory dfFactory;
+    private PeriodFormatterFactory pfFactory;
+    private PeriodBuilderFactory pbFactory;
+
+    private PrintWriter pw;
+
+    private static final Map datacache = new HashMap(); // String->TestData
+
+    private static final long[] approxDurations = {
+        36525L*24*60*60*10, 3045*24*60*60*10L, 7*24*60*60*1000L, 24*60*60*1000L, 
+        60*60*1000L, 60*1000L, 1000L, 1L
+    };
+
+    private static long approximateDuration(TimeUnit unit) {
+        return approxDurations[unit.ordinal()];
+    }
+
+    private static TestData getTestData(String locale) {
+        // debug
+        if (locale.equals("testFullPluralizedForms")) {
+            Thread.dumpStack();
+        }
+        TestData data = (TestData) datacache.get(locale);
+        if (data == null) {
+            try {
+                InputStream is = LanguageTestRoot.class
+                        .getResourceAsStream("testdata/testdata_" + locale
+                                + ".txt");
+                // debug
+                if (is == null) {
+                    System.out.println("test data for locale '" + locale
+                            + "' is null");
+                }
+                InputStreamReader isr = new InputStreamReader(is, "UTF-8");
+                data = new FileTestData(isr);
+            } catch (Exception e) {
+                System.err.println(e.getMessage());
+                // swallow any exception
+            }
+        }
+        return data;
+    }
+
+    public LanguageTestRoot(String locale, boolean ignore) {
+        this(getTestData(locale), locale);
+    }
+
+    public LanguageTestRoot(TestData data, String locale) {
+        if (data == null) {
+            data = DefaultData.getInstance();
+        }
+        this.data = data;
+        this.locale = locale;
+    }
+
+    public static void writeData(PrintWriter pw, String locale)
+            throws Exception {
+        LanguageTestRoot test = new LanguageTestRoot(DefaultData.getInstance(),
+                locale);
+        test.writeData(pw);
+    }
+
+    private void writeData(PrintWriter writer) throws Exception {
+/*
+      pw = writer;
+      setUp();
+      testFullPluralizedForms();
+      tearDown();
+      setUp();
+      testMediumForms();
+      tearDown();
+      setUp();
+      testShortForms();
+      tearDown();
+      setUp();
+      testCustomMinutes();
+      tearDown();
+      setUp();
+      testLimitedUnits();
+      tearDown();
+      setUp();
+      testHalfUnits();
+      tearDown();
+      setUp();
+      testFractionalUnits();
+      tearDown();
+      setUp();
+      testMultipleUnits();
+      tearDown();
+      pw = null;
+      writer.flush();
+*/
+    }
+
+    protected void xAssertEquals(String msg, String[] expected, int n,
+            String actual) {
+        if (pw != null) {
+            pw.println(actual);
+        } else {
+            // java doesn't dump enough context to be useful, so do it myself
+            if (actual == null) {
+                assertEquals(msg, expected[n], actual);
+            } else {
+                if (!actual.equals(expected[n])) {
+                    fail("\n(!!"
+                            + msg
+                            + ") "
+                            + asciify("expected '" + expected[n]
+                                    + "' but got '" + actual + "'"));
+                }
+            }
+        }
+    }
+
+    protected static String timestring(Period ts) {
+        StringBuffer buf = new StringBuffer();
+        if (ts.isMoreThan()) {
+            buf.append("mt");
+        } else if (ts.isLessThan()) {
+            buf.append("lt");
+        }
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit p = units[i];
+            if (ts.isSet(p)) {
+                buf.append(Float.toString(ts.getCount(p)));
+                buf.append(p.toString().charAt(0));
+            }
+        }
+        buf.append(ts.isInPast() ? "p" : "f");
+        return buf.toString();
+    }
+
+    protected static String asciify(String s) {
+        StringBuffer sb = null;
+        for (int i = 0, e = s.length(); i < e; ++i) {
+            char c = s.charAt(i);
+            if (c < 0x20 || c > 0x7e) {
+                if (sb == null) {
+                    sb = new StringBuffer();
+                    sb.append(s.substring(0, i));
+                }
+                sb.append("\\u");
+                if (c < 0x10) {
+                    sb.append("000");
+                } else if (c < 0x100) {
+                    sb.append("00");
+                } else if (c < 0x1000) {
+                    sb.append("0");
+                }
+                sb.append(Integer.toHexString(c));
+            } else {
+                if (sb != null) {
+                    sb.append(c);
+                }
+            }
+        }
+        if (sb != null) {
+            System.out.println("asciify '" + s + "' --> '" + sb.toString()
+                    + "'");
+        }
+        return sb == null ? s : sb.toString();
+    }
+
+    private void xAssertEquals(String[] expected, int n, String actual) {
+        xAssertEquals(null, expected, n, actual);
+    }
+
+    protected void setUp() throws Exception {
+        pfFactory = pfs.newPeriodFormatterFactory().setLocale(locale);
+        pbFactory = pfs.newPeriodBuilderFactory().setLocale(locale);
+    }
+
+    public void testFullPluralizedForms() throws Exception {
+        setUp();
+        int[] counts = data.getFullPluralizedFormCounts();
+        String[] targets = data.getFullPluralizedFormTargets();
+        if (pw != null) {
+            pw.println("=fullPluralizedFormCounts");
+            for (int i = 0; i < counts.length; ++i) {
+                int c = counts[i];
+                pw.println(String.valueOf(c));
+            }
+            pw.println("=fullPluralizedFormTargets");
+        }
+
+        int n = 0;
+        PeriodFormatter pf = pfFactory.getFormatter();
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            // System.err.print("\nunit: " + u);
+            PeriodBuilder pb = pbFactory.getFixedUnitBuilder(u);
+            for (int j = 0; j < counts.length; ++j) {
+                int c = counts[j];
+                // System.err.println("\ncount[" + j + "]: " + c);
+                Period p = pb.create(approximateDuration(u) * c);
+                String string = pf.format(p);
+                xAssertEquals(u.toString() + c, targets, n++, string);
+            }
+        }
+    }
+
+    public void testMediumForms() throws Exception {
+        setUp();
+        String[] targets = data.getMediumFormTargets();
+
+        if (pw != null) {
+            pw.println("=mediumFormTargets");
+        }
+
+        pfFactory.setUnitVariant(EUnitVariant.MEDIUM);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+        int n = 0;
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            PeriodBuilder pb = pbFactory.getFixedUnitBuilder(u);
+            Period p = pb.create(approximateDuration(u) * 3);
+            String string = pf.format(p);
+            xAssertEquals(u.toString(), targets, n++, string);
+        }
+    }
+
+    public void testShortForms() throws Exception {
+        setUp();
+        String[] targets = data.getShortFormTargets();
+
+        if (pw != null) {
+            pw.println("=shortFormTargets");
+        }
+
+        pfFactory.setUnitVariant(EUnitVariant.SHORT);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+        int n = 0;
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            PeriodBuilder pb = pbFactory.getFixedUnitBuilder(u);
+            Period p = pb.create(approximateDuration(u) * 3);
+            String string = pf.format(p);
+            xAssertEquals(u.toString(), targets, n++, string);
+        }
+    }
+
+    public void testCustomMinutes() throws Exception {
+        setUp();
+        String[] targets = data.getCustomMinuteTargets();
+
+        if (pw != null) {
+            pw.println("=customMinuteTargets");
+        }
+
+        pfFactory.setCountVariant(ECountVariant.INTEGER_CUSTOM);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+
+        Period p = Period.at(1, HOUR);
+        int n = 0;
+        for (int i = 1; i < 12; ++i) {
+            p = p.and(i * 5, MINUTE).omit(HOUR);
+            xAssertEquals(targets, n++, pf.format(p));
+            p = p.and(1, HOUR);
+            xAssertEquals(targets, n++, pf.format(p));
+        }
+    }
+
+    public void testLimitedUnits() throws Exception {
+        setUp();
+        String[] targets = data.getLimitedUnitTargets();
+
+        if (pw != null) {
+            pw.println("=limitedPeriodTargets");
+        }
+
+        Period p = Period.at(1, MONTH);
+        int n = 0;
+        for (int i = 0; i < 3; ++i) {
+            switch (i) {
+            case 0:
+                p = p.at();
+                break;
+            case 1:
+                p = p.lessThan();
+                break;
+            case 2:
+                p = p.moreThan();
+                break;
+            }
+            for (int j = 0; j < 3; ++j) {
+                pfFactory.setDisplayPastFuture(true);
+                switch (j) {
+                case 0:
+                    pfFactory.setDisplayPastFuture(false);
+                    break;
+                case 1:
+                    p = p.inPast();
+                    break;
+                case 2:
+                    p = p.inFuture();
+                    break;
+                }
+
+                PeriodFormatter pf = pfFactory.getFormatter();
+
+                p = p.omit(WEEK).omit(DAY);
+                xAssertEquals(targets, n++, pf.format(p));
+
+                p = p.and(2, WEEK);
+                xAssertEquals(targets, n++, pf.format(p));
+
+                p = p.and(3, DAY);
+                xAssertEquals(targets, n++, pf.format(p));
+            }
+        }
+
+        p = p.omit(MONTH).omit(WEEK).omit(DAY).and(1, HOUR);
+        for (int i = 0; i < 3; ++i) {
+            switch (i) {
+            case 0:
+                p = p.at();
+                break;
+            case 1:
+                p = p.lessThan();
+                break;
+            case 2:
+                p = p.moreThan();
+                break;
+            }
+            for (int j = 0; j < 3; ++j) {
+                pfFactory.setDisplayPastFuture(true);
+                switch (j) {
+                case 0:
+                    pfFactory.setDisplayPastFuture(false);
+                    break;
+                case 1:
+                    p = p.inPast();
+                    break;
+                case 2:
+                    p = p.inFuture();
+                    break;
+                }
+
+                PeriodFormatter pf = pfFactory.getFormatter();
+
+                p = p.omit(MINUTE).omit(SECOND);
+                xAssertEquals(targets, n++, pf.format(p));
+
+                p = p.and(2, MINUTE);
+                xAssertEquals(targets, n++, pf.format(p));
+
+                p = p.and(3, SECOND);
+                xAssertEquals(targets, n++, pf.format(p));
+            }
+        }
+    }
+
+    public void testHalfUnits() throws Exception {
+        setUp();
+        int[] counts = data.getHalfUnitCounts();
+        String[] targets = data.getHalfUnitTargets();
+
+        if (pw != null) {
+            pw.println("=halfPeriodCounts");
+            for (int i = 0; i < counts.length; ++i) {
+                int c = counts[i];
+                pw.println(String.valueOf(c));
+            }
+            pw.println("=halfPeriodTargets");
+        }
+
+        pfFactory.setCountVariant(ECountVariant.HALF_FRACTION);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+
+        int n = 0;
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            for (int j = 0; j < counts.length; ++j) {
+                int c = counts[j];
+                Period p = Period.at(c + .5f, u);
+                String string = pf.format(p);
+                xAssertEquals(u.toString(), targets, n++, string);
+            }
+        }
+    }
+
+    public void testFractionalUnits() throws Exception {
+        setUp();
+        float[] counts = data.getFractionalUnitCounts();
+        String[] targets = data.getFractionalUnitTargets();
+
+        if (pw != null) {
+            pw.println("=fractionalPeriodCounts");
+            for (int i = 0; i < counts.length; ++i) {
+                float c = counts[i];
+                pw.println(String.valueOf(c));
+            }
+            pw.println("=fractionalPeriodTargets");
+        }
+
+        pfFactory.setCountVariant(ECountVariant.DECIMAL2);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+
+        int n = 0;
+        for (int i = 0; i < units.length; ++i) {
+            TimeUnit u = units[i];
+            for (int j = 0; j < counts.length; ++j) {
+                float c = counts[j];
+                Period p = Period.at(c, u);
+                String string = pf.format(p);
+                xAssertEquals(u.toString(), targets, n++, string);
+            }
+        }
+    }
+
+    public void testMultipleUnits() throws Exception {
+        setUp();
+        String[] targets = data.getMultipleUnitTargets();
+
+        if (pw != null) {
+            pw.println("=multiplePeriodTargets");
+        }
+
+        pfFactory.setCountVariant(ECountVariant.INTEGER);
+        pfFactory.setDisplayPastFuture(false);
+        PeriodFormatter pf = pfFactory.getFormatter();
+
+        int n = 0;
+        for (int i = 0; i < units.length - 1; ++i) {
+            Period p = Period.at(1, units[i]).and(2, units[i + 1]);
+            xAssertEquals(targets, n++, pf.format(p));
+            if (i < units.length - 2) {
+                p = Period.at(1, units[i]).and(3, units[i + 2]);
+                xAssertEquals(targets, n++, pf.format(p));
+                p = Period.at(1, units[i]).and(2, units[i + 1]).and(3,
+                        units[i + 2]);
+                xAssertEquals(targets, n++, pf.format(p));
+            }
+        }
+    }
+
+    public static abstract class TestData {
+        abstract int[] getFullPluralizedFormCounts();
+        abstract String[] getFullPluralizedFormTargets();
+        abstract String[] getMediumFormTargets();
+        abstract String[] getShortFormTargets();
+        abstract String[] getCustomMinuteTargets();
+        abstract String[] getLimitedUnitTargets();
+        abstract int[] getHalfUnitCounts();
+        abstract String[] getHalfUnitTargets();
+        abstract float[] getFractionalUnitCounts();
+        abstract String[] getFractionalUnitTargets();
+        abstract String[] getMultipleUnitTargets();
+    }
+
+}
+
+class FileTestData extends LanguageTestRoot.TestData {
+    private int[] fullPluralizedFormCounts;
+    private String[] fullPluralizedFormTargets;
+    private String[] mediumFormTargets;
+    private String[] shortFormTargets;
+    private String[] customMinuteTargets;
+    private String[] limitedUnitTargets;
+    private int[] halfUnitCounts;
+    private String[] halfUnitTargets;
+    private float[] fractionalUnitCounts;
+    private String[] fractionalUnitTargets;
+    private String[] multipleUnitTargets;
+
+    int[] getFullPluralizedFormCounts() {
+        return fullPluralizedFormCounts;
+    }
+
+    String[] getFullPluralizedFormTargets() {
+        return fullPluralizedFormTargets;
+    }
+
+    String[] getMediumFormTargets() {
+        return mediumFormTargets;
+    }
+
+    String[] getShortFormTargets() {
+        return shortFormTargets;
+    }
+
+    String[] getCustomMinuteTargets() {
+        return customMinuteTargets;
+    }
+
+    String[] getLimitedUnitTargets() {
+        return limitedUnitTargets;
+    }
+
+    int[] getHalfUnitCounts() {
+        return halfUnitCounts;
+    }
+
+    String[] getHalfUnitTargets() {
+        return halfUnitTargets;
+    }
+
+    float[] getFractionalUnitCounts() {
+        return fractionalUnitCounts;
+    }
+
+    String[] getFractionalUnitTargets() {
+        return fractionalUnitTargets;
+    }
+
+    String[] getMultipleUnitTargets() {
+        return multipleUnitTargets;
+    }
+
+    public FileTestData(InputStreamReader isr) throws Exception {
+        BufferedReader br = new BufferedReader(isr);
+
+        class Wrapup {
+            int[] intArray;
+
+            float[] floatArray;
+
+            String[] stringArray;
+
+            void wrapup(List /* of String */list, Element element) {
+                if (list == null)
+                    return;
+
+                switch (element.mode) {
+                case EMode.mString:
+                    stringArray = (String[]) list.toArray(new String[list
+                            .size()]);
+                    break;
+
+                case EMode.mInt:
+                    intArray = new int[list.size()];
+                    for (int i = 0, e = intArray.length; i < e; ++i) {
+                        intArray[i] = Integer.parseInt((String) list.get(i));
+                    }
+                    break;
+
+                case EMode.mFloat:
+                    floatArray = new float[list.size()];
+                    for (int i = 0, e = floatArray.length; i < e; ++i) {
+                        floatArray[i] = Float.parseFloat((String) list.get(i));
+                    }
+                    break;
+                }
+
+                switch (element.which) {
+                case Element.XfullPluralizedFormCounts:
+                    FileTestData.this.fullPluralizedFormCounts = intArray;
+                    break;
+                case Element.XfullPluralizedFormTargets:
+                    FileTestData.this.fullPluralizedFormTargets = stringArray;
+                    break;
+                case Element.XmediumFormTargets:
+                    FileTestData.this.mediumFormTargets = stringArray;
+                    break;
+                case Element.XshortFormTargets:
+                    FileTestData.this.shortFormTargets = stringArray;
+                    break;
+                case Element.XcustomMinuteTargets:
+                    FileTestData.this.customMinuteTargets = stringArray;
+                    break;
+                case Element.XlimitedUnitTargets:
+                    FileTestData.this.limitedUnitTargets = stringArray;
+                    break;
+                case Element.XhalfUnitCounts:
+                    FileTestData.this.halfUnitCounts = intArray;
+                    break;
+                case Element.XhalfUnitTargets:
+                    FileTestData.this.halfUnitTargets = stringArray;
+                    break;
+                case Element.XfractionalUnitCounts:
+                    FileTestData.this.fractionalUnitCounts = floatArray;
+                    break;
+                case Element.XfractionalUnitTargets:
+                    FileTestData.this.fractionalUnitTargets = stringArray;
+                    break;
+                case Element.XmultipleUnitTargets:
+                    FileTestData.this.multipleUnitTargets = stringArray;
+                    break;
+                }
+            }
+        }
+        Wrapup w = new Wrapup();
+
+        List /* of String */list = null;
+        Element element = null;
+        String line = null;
+        while (null != (line = br.readLine())) {
+            line = line.trim();
+            if (line.length() == 0 || line.charAt(0) == '#')
+                continue;
+            if (line.charAt(0) == '=') {
+                w.wrapup(list, element);
+
+                list = new ArrayList();
+                element = Element.forString(line.substring(1));
+            } else if (line.equals("null")) {
+                list.add(null);
+            } else {
+                list.add(line);
+            }
+        }
+        w.wrapup(list, element);
+    }
+}
+
+class DefaultData extends LanguageTestRoot.TestData {
+    private static final int[] fullPluralizedFormCounts = { -3, -2, -1, 0, 1,
+            2, 3, 5, 10, 11, 12, 20, 21, 22, 23, 25 };
+
+    private static final int[] halfUnitCounts = { 0, 1, 2, 5, 10, 11, 12, 20,
+            21, 22 };
+
+    private static final float[] fractionalUnitCounts = { 0.025f, 1.0f, 1.205f,
+            2.125f, 12.05f };
+
+    private static final DefaultData instance = new DefaultData();
+
+    private DefaultData() {
+    }
+
+    public static DefaultData getInstance() {
+        return instance;
+    }
+
+    int[] getFullPluralizedFormCounts() {
+        return fullPluralizedFormCounts;
+    }
+
+    String[] getFullPluralizedFormTargets() {
+        return null;
+    }
+
+    String[] getMediumFormTargets() {
+        return null;
+    }
+
+    String[] getShortFormTargets() {
+        return null;
+    }
+
+    String[] getCustomMinuteTargets() {
+        return null;
+    }
+
+    String[] getLimitedUnitTargets() {
+        return null;
+    }
+
+    int[] getHalfUnitCounts() {
+        return halfUnitCounts;
+    }
+
+    String[] getHalfUnitTargets() {
+        return null;
+    }
+
+    float[] getFractionalUnitCounts() {
+        return fractionalUnitCounts;
+    }
+
+    String[] getFractionalUnitTargets() {
+        return null;
+    }
+
+    String[] getMultipleUnitTargets() {
+        return null;
+    }
+}
+
+class EMode {
+    static final int mString = 0;
+    static final int mInt = 1;
+    static final int mFloat = 2;
+}
+
+class Element {
+    final String name;
+    final int mode;
+    final int which;
+
+    static int counter = 0;
+    static Element[] list = new Element[11];
+
+    Element(String name) {
+        this.name = name;
+        mode = EMode.mString;
+        this.which = counter++;
+        list[this.which] = this;
+    }
+
+    Element(String name, int mode) {
+        this.name = name;
+        this.mode = mode;
+        this.which = counter++;
+        list[this.which] = this;
+    }
+
+    static final int XfullPluralizedFormCounts = 0;
+    static final int XfullPluralizedFormTargets = 1;
+    static final int XmediumFormTargets = 2;
+    static final int XshortFormTargets = 3;
+    static final int XcustomMinuteTargets = 4;
+    static final int XlimitedUnitTargets = 5;
+    static final int XhalfUnitCounts = 6;
+    static final int XhalfUnitTargets = 7;
+    static final int XfractionalUnitCounts = 8;
+    static final int XfractionalUnitTargets = 9;
+    static final int XmultipleUnitTargets = 10;
+
+    static final Element fullPluralizedFormCounts = new Element(
+            "fullPluralizedFormCounts", EMode.mInt);
+
+    static final Element fullPluralizedFormTargets = new Element(
+            "fullPluralizedFormTargets");
+
+    static final Element mediumFormTargets = new Element("mediumFormTargets");
+
+    static final Element shortFormTargets = new Element("shortFormTargets");
+
+    static final Element customMinuteTargets = new Element(
+            "customMinuteTargets");
+
+    static final Element limitedUnitTargets = new Element("limitedUnitTargets");
+
+    static final Element halfUnitCounts = new Element("halfUnitCounts",
+            EMode.mInt);
+
+    static final Element halfUnitTargets = new Element("halfUnitTargets");
+
+    static final Element fractionalUnitCounts = new Element(
+            "fractionalUnitCounts", EMode.mFloat);
+
+    static final Element fractionalUnitTargets = new Element(
+            "fractionalUnitTargets");
+
+    static final Element multipleUnitTargets = new Element(
+            "multipleUnitTargets");
+
+    static Element forString(String s) {
+        for (int i = 0; i < list.length; ++i) {
+            if (list[i].name.equals(s)) {
+                return list[i];
+            }
+        }
+        return null;
+    }
+}
+      
diff --git a/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java b/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
new file mode 100644
index 0000000..b83f5c7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
@@ -0,0 +1,91 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2007 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.BasicPeriodFormatterService;
+import com.ibm.icu.impl.duration.PeriodBuilder;
+import com.ibm.icu.impl.duration.TimeUnit;
+import com.ibm.icu.impl.duration.Period;
+import com.ibm.icu.impl.duration.PeriodBuilderFactory;
+import com.ibm.icu.impl.duration.TimeUnitConstants;
+
+public class PeriodBuilderFactoryTest extends TestFmwk implements TimeUnitConstants {
+    private PeriodBuilderFactory pbf;
+
+    private static final long[] approxDurations = {
+      36525L*24*60*60*10, 3045*24*60*60*10L, 7*24*60*60*1000L, 24*60*60*1000L, 
+      60*60*1000L, 60*1000L, 1000L, 1L
+    };
+    
+    /**
+     * Invoke the tests.
+     */
+    public static void main(String[] args) {
+        new PeriodBuilderFactoryTest().run(args);
+    }
+
+    public void testSetAvailableUnitRange() {
+        // sanity check, make sure by default all units are set
+        pbf = BasicPeriodFormatterService.getInstance().newPeriodBuilderFactory();
+        pbf.setLocale("en"); // in en locale, all units always available
+        PeriodBuilder b = pbf.getSingleUnitBuilder();
+        for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {
+            Period p = b.create((long)(approxDurations[unit.ordinal()]*2.5));
+            assertTrue(null, p.isSet(unit));
+        }
+
+        pbf.setAvailableUnitRange(MINUTE, MONTH);
+        // units that are not available are never set
+        b = pbf.getSingleUnitBuilder();
+        for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {
+            Period p = b.create((long)(approxDurations[unit.ordinal()]*2.5));
+            assertEquals(null, p.isSet(unit), unit.ordinal() >= MONTH.ordinal() && unit.ordinal() <= MINUTE.ordinal());
+        }
+
+        // fixed unit builder returns null when unit is not available
+        for (TimeUnit unit = YEAR; unit != null; unit = unit.smaller()) {
+            b = pbf.getFixedUnitBuilder(unit);
+            if (unit.ordinal() >= MONTH.ordinal() && unit.ordinal() <= MINUTE.ordinal()) {
+                assertNotNull(null, b);
+            } else {
+                assertNull(null, b);
+            }
+        }
+
+        // can't set empty range
+        try {
+            pbf.setAvailableUnitRange(MONTH, MINUTE);
+            fail("set empty range");
+        } catch (IllegalArgumentException e) {
+            // pass
+        }
+    }
+
+    public void testSetUnitIsAvailable() {
+        pbf = BasicPeriodFormatterService.getInstance().newPeriodBuilderFactory();
+        pbf.setAvailableUnitRange(MONTH, MONTH);
+        assertNotNull(null, pbf.getSingleUnitBuilder());
+        assertNotNull(null, pbf.getOneOrTwoUnitBuilder());
+        assertNotNull(null, pbf.getMultiUnitBuilder(2));
+
+        // now no units are available, make sure we can't generate a builder
+        pbf.setUnitIsAvailable(MONTH, false);
+        assertNull(null, pbf.getSingleUnitBuilder());
+        assertNull(null, pbf.getOneOrTwoUnitBuilder());
+        assertNull(null, pbf.getMultiUnitBuilder(2));
+
+        pbf.setUnitIsAvailable(DAY, true);
+        assertNotNull(null, pbf.getSingleUnitBuilder());
+        assertNotNull(null, pbf.getOneOrTwoUnitBuilder());
+        assertNotNull(null, pbf.getMultiUnitBuilder(2));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/PeriodBuilderTest.java b/src/com/ibm/icu/dev/test/duration/PeriodBuilderTest.java
new file mode 100644
index 0000000..7a7927f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/PeriodBuilderTest.java
@@ -0,0 +1,22 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class PeriodBuilderTest extends TestFmwk {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new PeriodBuilderTest().run(args);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/PeriodTest.java b/src/com/ibm/icu/dev/test/duration/PeriodTest.java
new file mode 100644
index 0000000..ba2fda3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/PeriodTest.java
@@ -0,0 +1,109 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.Period;
+import com.ibm.icu.impl.duration.TimeUnit;
+
+public class PeriodTest extends TestFmwk {
+
+    /**
+     * Invoke the tests.
+     */
+    public static void main(String[] args) {
+        new PeriodTest().run(args);
+    }
+
+    public void testIsSet() {
+        Period p = Period.at(0, TimeUnit.YEAR);
+        assertTrue(null, p.isSet());
+        assertTrue(null, p.isSet(TimeUnit.YEAR));
+        assertFalse(null, p.isSet(TimeUnit.MONTH));
+        assertEquals(null, 0f, p.getCount(TimeUnit.YEAR), .1f);
+        p = p.omit(TimeUnit.YEAR);
+        assertFalse(null, p.isSet(TimeUnit.YEAR));
+    }
+
+    public void testMoreLessThan() {
+        Period p = Period.moreThan(1, TimeUnit.YEAR);
+        assertTrue(null, p.isMoreThan());
+        assertFalse(null, p.isLessThan());
+        p = p.at();
+        assertFalse(null, p.isMoreThan());
+        assertFalse(null, p.isLessThan());
+        p = p.lessThan();
+        assertFalse(null, p.isMoreThan());
+        assertTrue(null, p.isLessThan());
+        p = p.moreThan();
+        assertTrue(null, p.isMoreThan());
+        assertFalse(null, p.isLessThan());
+
+        p = Period.lessThan(1, TimeUnit.YEAR);
+        assertFalse(null, p.isMoreThan());
+        assertTrue(null, p.isLessThan());
+
+        p = Period.at(1, TimeUnit.YEAR);
+        assertFalse(null, p.isMoreThan());
+        assertFalse(null, p.isLessThan());
+
+        assertEquals(null, 1f, p.getCount(TimeUnit.YEAR), .1f);
+    }
+
+    public void testFuturePast() {
+        Period p = Period.at(1, TimeUnit.YEAR).inFuture();
+        assertTrue(null, p.isInFuture());
+        p = p.inPast();
+        assertFalse(null, p.isInFuture());
+        p = p.inFuture(true);
+        assertTrue(null, p.isInFuture());
+        p = p.inFuture(false);
+        assertFalse(null, p.isInFuture());
+    }
+
+    public void testAnd() {
+        Period p = Period.at(1, TimeUnit.YEAR).and(3, TimeUnit.MONTH)
+                .inFuture();
+        assertTrue(null, p.isSet(TimeUnit.YEAR));
+        assertTrue(null, p.isSet(TimeUnit.MONTH));
+        assertEquals(null, 3f, p.getCount(TimeUnit.MONTH), .1f);
+        p = p.and(2, TimeUnit.MONTH);
+        assertEquals(null, 2f, p.getCount(TimeUnit.MONTH), .1f);
+    }
+
+    public void testInvalidCount() {
+        try {
+            Period.at(-1, TimeUnit.YEAR);
+            fail("at -1");
+        } catch (IllegalArgumentException e) {
+            // passed
+        }
+        try {
+            Period.moreThan(-1, TimeUnit.YEAR);
+            fail("moreThan -1");
+        } catch (IllegalArgumentException e) {
+            // passed
+        }
+        try {
+            Period.lessThan(-1, TimeUnit.YEAR);
+            fail("lessThan -1");
+        } catch (IllegalArgumentException e) {
+            // passed
+        }
+        Period p = Period.at(1, TimeUnit.YEAR);
+        try {
+            p = p.and(-1, TimeUnit.MONTH);
+            fail("and -1");
+        } catch (IllegalArgumentException e) {
+            // passed
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/RegressionTest.java b/src/com/ibm/icu/dev/test/duration/RegressionTest.java
new file mode 100644
index 0000000..3250087
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/RegressionTest.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.duration.BasicPeriodFormatterService;
+import com.ibm.icu.impl.duration.DurationFormatter;
+import com.ibm.icu.impl.duration.PeriodBuilder;
+import com.ibm.icu.impl.duration.PeriodFormatterService;
+import com.ibm.icu.text.DurationFormat;
+import com.ibm.icu.util.ULocale;
+
+public class RegressionTest extends TestFmwk {
+
+    public static void main(String[] args) {
+        new RegressionTest().run(args);
+    }
+    
+    // bug6397
+    public void TestDisallowedMillis() {
+        // original test case
+        // if we don't support milliseconds, format times less than 1 second as 
+        // 'less than 1 second'
+        {
+            ULocale ul = new ULocale("th");
+            DurationFormat df = DurationFormat.getInstance(ul);
+            String result = df.formatDurationFromNow(500);
+            assertEquals(
+                "original test case", 
+                "\u0E44\u0E21\u0E48\u0E16\u0E36\u0E07\u0E2D\u0E35\u0E01 1 \u0E27\u0E34\u0E19\u0E32\u0E17\u0E35", 
+                result);
+        }
+        
+        // same issue, but using English and the internal APIs
+        {
+            PeriodFormatterService pfs = BasicPeriodFormatterService.getInstance();
+            PeriodBuilder pb = pfs.newPeriodBuilderFactory()
+                .setAllowMilliseconds(false)
+                .getSingleUnitBuilder();
+            DurationFormatter df = pfs.newDurationFormatterFactory()
+                .setPeriodBuilder(pb)
+                .getFormatter();
+            String result = df.formatDurationFromNow(500);
+            assertEquals(
+                "english test case",
+                "less than 1 second from now",
+                result);
+           
+        }
+        
+        // if the limit is set on milliseconds, and they are not supported, 
+        // use an effective limit based on seconds
+        {
+            PeriodFormatterService pfs = BasicPeriodFormatterService.getInstance();
+            PeriodBuilder pb = pfs.newPeriodBuilderFactory()
+                .setMinLimit(2500)
+                .setAllowMilliseconds(false)
+                .getSingleUnitBuilder();
+            DurationFormatter df = pfs.newDurationFormatterFactory()
+                .setPeriodBuilder(pb)
+                .getFormatter();
+            String result = df.formatDurationFromNow(500);
+            assertEquals(
+                "limit test case",
+                "less than 2 seconds from now",
+                result);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java b/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
new file mode 100644
index 0000000..cb88a5b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
@@ -0,0 +1,39 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.duration.impl.ResourceBasedPeriodFormatterDataService;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterData;
+
+import java.util.Iterator;
+import java.util.Collection;
+
+public class ResourceBasedPeriodFormatterDataServiceTest extends TestFmwk {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new ResourceBasedPeriodFormatterDataServiceTest().run(args);
+  }
+
+  public void testAvailable() {
+    ResourceBasedPeriodFormatterDataService service =
+        ResourceBasedPeriodFormatterDataService.getInstance();
+    Collection locales = service.getAvailableLocales();
+    for (Iterator i = locales.iterator(); i.hasNext();) {
+      String locale = (String)i.next();
+      PeriodFormatterData pfd = service.get(locale);
+      assertFalse(locale + ": " + pfd.pluralization(), -1 == pfd.pluralization());
+    }
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/TestAll.java b/src/com/ibm/icu/dev/test/duration/TestAll.java
new file mode 100644
index 0000000..9b1a17f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/TestAll.java
@@ -0,0 +1,38 @@
+// Copyright 2006 Google Inc.  All Rights Reserved.
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+
+package com.ibm.icu.dev.test.duration;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+                  "com.ibm.icu.dev.test.duration.ICUDurationTest",
+                  "com.ibm.icu.dev.test.duration.DataReadWriteTest",
+                  "com.ibm.icu.dev.test.duration.PeriodBuilderFactoryTest",
+                  "com.ibm.icu.dev.test.duration.PeriodBuilderTest",
+                  "com.ibm.icu.dev.test.duration.PeriodTest",
+                  "com.ibm.icu.dev.test.duration.ResourceBasedPeriodFormatterDataServiceTest",
+                  "com.ibm.icu.dev.test.duration.languages.TestAll",
+              },
+              "Duration Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Duration";
+}
+
diff --git a/src/com/ibm/icu/dev/test/duration/languages/TestAll.java b/src/com/ibm/icu/dev/test/duration/languages/TestAll.java
new file mode 100644
index 0000000..ffaaa0f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/TestAll.java
@@ -0,0 +1,44 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+//                  "com.ibm.icu.dev.test.duration.languages.Test_ar_EG",
+                  "com.ibm.icu.dev.test.duration.languages.Test_en",
+                  "com.ibm.icu.dev.test.duration.languages.Test_es",
+                  "com.ibm.icu.dev.test.duration.languages.Test_fr",
+                  "com.ibm.icu.dev.test.duration.languages.Test_he_IL",
+                  "com.ibm.icu.dev.test.duration.languages.Test_hi",
+                  "com.ibm.icu.dev.test.duration.languages.Test_it",
+                  "com.ibm.icu.dev.test.duration.languages.Test_ja",
+                  "com.ibm.icu.dev.test.duration.languages.Test_ko",
+                  "com.ibm.icu.dev.test.duration.languages.Test_zh_Hans",
+                  "com.ibm.icu.dev.test.duration.languages.Test_zh_Hans_SG",
+                  "com.ibm.icu.dev.test.duration.languages.Test_zh_Hant",
+                  "com.ibm.icu.dev.test.duration.languages.Test_zh_Hant_HK",
+              },
+              "Duration Language Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "DurationLanguages";
+}
+
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java b/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java
new file mode 100644
index 0000000..09a059c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for ar_EG
+ */
+public class Test_ar_EG extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_ar_EG().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_ar_EG() {
+    super("ar_EG", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_en.java b/src/com/ibm/icu/dev/test/duration/languages/Test_en.java
new file mode 100644
index 0000000..d9fad85
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_en.java
@@ -0,0 +1,29 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for en
+ */
+public class Test_en extends LanguageTestRoot {
+
+  public static void main(String[] args) {
+      new Test_en().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_en() {
+    super("en", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_es.java b/src/com/ibm/icu/dev/test/duration/languages/Test_es.java
new file mode 100644
index 0000000..f1ccaf2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_es.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for es
+ */
+public class Test_es extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_es().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_es() {
+    super("es", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java b/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java
new file mode 100644
index 0000000..eb17231
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for fr
+ */
+public class Test_fr extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_fr().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_fr() {
+    super("fr", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java b/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java
new file mode 100644
index 0000000..cb7e3eb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for he_IL
+ */
+public class Test_he_IL extends LanguageTestRoot {
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_he_IL().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_he_IL() {
+    super("he_IL", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java b/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java
new file mode 100644
index 0000000..bf33b75
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java
@@ -0,0 +1,71 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/*
+import com.ibm.icu.impl.duration.Period;
+import com.ibm.icu.impl.duration.PeriodFormatter;
+import com.ibm.icu.impl.duration.BasicPeriodFormatterFactory;
+import com.ibm.icu.impl.duration.PeriodFormatterFactory;
+*/
+import com.ibm.icu.impl.duration.TimeUnitConstants;
+
+/**
+ * Test cases for hi
+ */
+public class Test_hi extends LanguageTestRoot implements TimeUnitConstants {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_hi().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_hi() {
+    super("hi", false);
+  }
+
+  public void testMonthNames() {
+    // test that month uses the plural form with singular digit
+    // in these cases:
+    // "1 months from now"
+    // "1 months, and 2 weeks from now"
+    // "more than 1 months",
+    // "more than 1 months ago"
+/*
+    Period[] times = {
+      Period.at(1, MONTH).inFuture(),
+      Period.at(1, MONTH).and(2, WEEK).inFuture(),
+      Period.moreThan(1, MONTH),
+      Period.moreThan(1, MONTH).inFuture(),
+    };
+
+    String[] targets = {
+      "\u0905\u092d\u0940 \u0938\u0947 \u0967 \u092e\u0939\u0940\u0928\u0947 \u092c\u093e\u0926",
+      "\u0905\u092d\u0940 \u0938\u0947 \u0967 \u092e\u0939\u0940\u0928\u0947 \u0914\u0930 \u0968 \u0938\u092a\u094d\u0924\u093e\u0939 \u092c\u093e\u0926",
+      "\u0967 \u092e\u0939\u0940\u0928\u0947 \u0938\u0947 \u0915\u092e",
+      "\u0967 \u092e\u0939\u0940\u0928\u0947 \u0938\u0947 \u0915\u092e \u092a\u0939\u0932\u0947",
+    };
+
+    PeriodFormatterFactory pff = BasicPeriodFormatterFactory.getDefault()
+        .setLocale("hi");
+    PeriodFormatter pf = pff.getFormatter();
+    for (int i = 0; i < targets.length; ++i) {
+        xAssertEquals(timestring(times[i]), targets, i, pf.format(times[i]));
+    }
+*/
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_it.java b/src/com/ibm/icu/dev/test/duration/languages/Test_it.java
new file mode 100644
index 0000000..518788b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_it.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for it
+ */
+public class Test_it extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_it().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_it() {
+    super("it", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java b/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java
new file mode 100644
index 0000000..02619e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java
@@ -0,0 +1,69 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+import com.ibm.icu.impl.duration.BasicPeriodFormatterFactory;
+import com.ibm.icu.impl.duration.Period;
+import com.ibm.icu.impl.duration.PeriodFormatter;
+import com.ibm.icu.impl.duration.TimeUnitConstants;
+
+/**
+ * Test cases for en
+ */
+public class Test_ja extends LanguageTestRoot implements TimeUnitConstants {
+  private BasicPeriodFormatterFactory pff;
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_ja().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_ja() {
+    super("ja", false);
+    this.pff = (BasicPeriodFormatterFactory)BasicPeriodFormatterFactory.getDefault().
+        setLocale("ja");
+  }
+
+  public void testNoMillis() {
+    // explicit test that japanese doesn't use both seconds
+    // and milliseconds when formatting.  if both appear,
+    // force decimal3 seconds and merge millis with it.
+      logln("test disabled");
+      /*
+    PeriodFormatter pf = pff.getFormatter();
+    Period p = Period.at(1, MILLISECOND);
+    assertEquals(null, "1\u30df\u30ea\u79d2\u524d", pf.format(p));
+
+    p.and(1, SECOND);
+    assertEquals(null, "1.001\u79d2\u524d", pf.format(p));
+
+    p.and(1, MINUTE).omit(SECOND);
+    assertEquals(null, "1\u5206\u30681\u30df\u30ea\u79d2\u524d", pf.format(p));
+      */
+  }
+
+  public void testOmitZeros() {
+    // zeros are treated as omitted
+
+    PeriodFormatter pf = pff.getFormatter();
+    Period p = Period.at(1, MINUTE).and(0, SECOND).and(1, MILLISECOND);
+    String s1 = pf.format(p);
+    p.omit(SECOND);
+    String s2 = pf.format(p);
+    assertEquals(null, s1, s2);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java b/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java
new file mode 100644
index 0000000..ae722a0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for ko
+ */
+public class Test_ko extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_ko().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_ko() {
+    super("ko", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java b/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java
new file mode 100644
index 0000000..f27d0a1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for ru
+ */
+public class Test_ru extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_ru().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_ru() {
+    super("ru", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java
new file mode 100644
index 0000000..1dbc28a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for zh_Hans
+ */
+public class Test_zh_Hans extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_zh_Hans().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_zh_Hans() {
+    super("zh_Hans", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
new file mode 100644
index 0000000..3932c06
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+/**
+ * Test cases for zh_Hans_SG
+ */
+public class Test_zh_Hans_SG extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_zh_Hans_SG().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_zh_Hans_SG() {
+    super("zh_Hans_SG", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java
new file mode 100644
index 0000000..df6963f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for zh_Hant
+ */
+public class Test_zh_Hant extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_zh_Hant().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_zh_Hant() {
+    super("zh_Hant", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
new file mode 100644
index 0000000..4e49aff
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
@@ -0,0 +1,33 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+// Copyright 2006 Google Inc.  All Rights Reserved.
+
+package com.ibm.icu.dev.test.duration.languages;
+
+import com.ibm.icu.dev.test.duration.LanguageTestRoot;
+
+
+/**
+ * Test cases for zh_Hant_HK
+ */
+public class Test_zh_Hant_HK extends LanguageTestRoot {
+
+  /**
+   * Invoke the tests.
+   */
+  public static void main(String[] args) {
+      new Test_zh_Hant_HK().run(args);
+  }
+
+  /**
+   * Constructor.
+   */
+  public Test_zh_Hant_HK() {
+    super("zh_Hant_HK", false);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_ar_EG.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ar_EG.txt
new file mode 100644
index 0000000..40f20ee
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ar_EG.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+منذ ٣ سنوات
+منذ سنتين
+منذ سنة
+٠ سنوات
+سنة بعد الآن
+سنتين بعد الآن
+٣ سنوات بعد الآن
+٥ سنوات بعد الآن
+١٠ سنوات بعد الآن
+١١ سنة بعد الآن
+١٢ سنة بعد الآن
+٢٠ سنة بعد الآن
+٢١ سنة بعد الآن
+٢٢ سنة بعد الآن
+٢٣ سنة بعد الآن
+٢٥ سنة بعد الآن
+منذ ٣ شهور
+منذ شهرين
+منذ شهر
+٠ شهور
+شهر بعد الآن
+شهرين بعد الآن
+٣ شهور بعد الآن
+٥ شهور بعد الآن
+١٠ شهور بعد الآن
+١١ شهر بعد الآن
+١٢ شهر بعد الآن
+٢٠ شهر بعد الآن
+٢١ شهر بعد الآن
+٢٢ شهر بعد الآن
+٢٣ شهر بعد الآن
+٢٥ شهر بعد الآن
+منذ ٣ أسابيع
+منذ أسبوعين
+منذ أسبوع
+٠ أسابيع
+أسبوع بعد الآن
+أسبوعين بعد الآن
+٣ أسابيع بعد الآن
+٥ أسابيع بعد الآن
+١٠ أسابيع بعد الآن
+١١ أسبوع بعد الآن
+١٢ أسبوع بعد الآن
+٢٠ أسبوع بعد الآن
+٢١ أسبوع بعد الآن
+٢٢ أسبوع بعد الآن
+٢٣ أسبوع بعد الآن
+٢٥ أسبوع بعد الآن
+منذ ٣ أيام
+منذ يومين
+منذ يوم
+٠ أيام
+يوم بعد الآن
+يومين بعد الآن
+٣ أيام بعد الآن
+٥ أيام بعد الآن
+١٠ أيام بعد الآن
+١١ يوم بعد الآن
+١٢ يوم بعد الآن
+٢٠ يوم بعد الآن
+٢١ يوم بعد الآن
+٢٢ يوم بعد الآن
+٢٣ يوم بعد الآن
+٢٥ يوم بعد الآن
+منذ ٣ ساعات
+منذ ساعتين
+منذ ساعة
+٠ ساعات
+ساعة بعد الآن
+ساعتين بعد الآن
+٣ ساعات بعد الآن
+٥ ساعات بعد الآن
+١٠ ساعات بعد الآن
+١١ ساعة بعد الآن
+١٢ ساعة بعد الآن
+٢٠ ساعة بعد الآن
+٢١ ساعة بعد الآن
+٢٢ ساعة بعد الآن
+٢٣ ساعة بعد الآن
+٢٥ ساعة بعد الآن
+منذ ٣ دقائق
+منذ دقيقتين
+منذ دقيقة
+٠ دقائق
+دقيقة بعد الآن
+دقيقتين بعد الآن
+٣ دقائق بعد الآن
+٥ دقائق بعد الآن
+١٠ دقائق بعد الآن
+١١ دقيقة بعد الآن
+١٢ دقيقة بعد الآن
+٢٠ دقيقة بعد الآن
+٢١ دقيقة بعد الآن
+٢٢ دقيقة بعد الآن
+٢٣ دقيقة بعد الآن
+٢٥ دقيقة بعد الآن
+منذ ٣ ثواني
+منذ ثانيتين
+منذ ثانية
+٠ ثواني
+ثانية بعد الآن
+ثانيتين بعد الآن
+٣ ثواني بعد الآن
+٥ ثواني بعد الآن
+١٠ ثواني بعد الآن
+١١ ثانية بعد الآن
+١٢ ثانية بعد الآن
+٢٠ ثانية بعد الآن
+٢١ ثانية بعد الآن
+٢٢ ثانية بعد الآن
+٢٣ ثانية بعد الآن
+٢٥ ثانية بعد الآن
+منذ ٣ أجزاء من الثانية
+منذ جزئين من الثانية
+منذ جزء من الثانية
+٠ أجزاء من الثانية
+جزء من الثانية بعد الآن
+جزئين من الثانية بعد الآن
+٣ أجزاء من الثانية بعد الآن
+٥ أجزاء من الثانية بعد الآن
+١٠ أجزاء من الثانية بعد الآن
+١١ جزء من الثانية بعد الآن
+١٢ جزء من الثانية بعد الآن
+٢٠ جزء من الثانية بعد الآن
+٢١ جزء من الثانية بعد الآن
+٢٢ جزء من الثانية بعد الآن
+٢٣ جزء من الثانية بعد الآن
+٢٥ جزء من الثانية بعد الآن
+=mediumFormTargets
+٣ سنوات
+٣ شهور
+٣ أسابيع
+٣ أيام
+٣ ساعات
+٣ دقائق
+٣ ثواني
+٣ أجزاء من الثانية
+=shortFormTargets
+٣ سنوات
+٣ شهور
+٣ أسابيع
+٣ أيام
+٣ ساعات
+٣ دقائق
+٣ ثواني
+٣ أجزاء من الثانية
+=customMinuteTargets
+٥ دقائق
+ساعة و٥ دقائق
+١٠ دقائق
+ساعة و١٠ دقائق
+١٥ دقيقة
+ساعة و١٥ دقيقة
+٢٠ دقيقة
+ساعة و٢٠ دقيقة
+٢٥ دقيقة
+ساعة و٢٥ دقيقة
+٣٠ دقيقة
+ساعة و٣٠ دقيقة
+٣٥ دقيقة
+ساعة و٣٥ دقيقة
+٤٠ دقيقة
+ساعة و٤٠ دقيقة
+٤٥ دقيقة
+ساعة و٤٥ دقيقة
+٥٠ دقيقة
+ساعة و٥٠ دقيقة
+٥٥ دقيقة
+ساعة و٥٥ دقيقة
+=limitedUnitTargets
+شهر
+شهر وأسبوعين
+شهر، وأسبوعين، و٣ أيام
+منذ شهر
+منذ شهر وأسبوعين
+منذ شهر، وأسبوعين، و٣ أيام
+شهر بعد الآن
+شهر وأسبوعين بعد الآن
+شهر، وأسبوعين، و٣ أيام بعد الآن
+أقل من شهر
+أقل من شهر وأسبوعين
+أقل من شهر، وأسبوعين، و٣ أيام
+منذ أقل من شهر
+منذ أقل من شهر وأسبوعين
+منذ أقل من شهر، وأسبوعين، و٣ أيام
+أقل من شهر بعد الآن
+أقل من شهر وأسبوعين بعد الآن
+أقل من شهر، وأسبوعين، و٣ أيام بعد الآن
+أكثر من شهر
+أكثر من شهر وأسبوعين
+أكثر من شهر، وأسبوعين، و٣ أيام
+منذ أكثر من شهر
+منذ أكثر من شهر وأسبوعين
+منذ أكثر من شهر، وأسبوعين، و٣ أيام
+أكثر من شهر بعد الآن
+أكثر من شهر وأسبوعين بعد الآن
+أكثر من شهر، وأسبوعين، و٣ أيام بعد الآن
+ساعة
+ساعة ودقيقتين
+ساعة، ودقيقتين، و٣ ثواني
+منذ ساعة
+منذ ساعة ودقيقتين
+منذ ساعة، ودقيقتين، و٣ ثواني
+ساعة بعد الآن
+ساعة ودقيقتين بعد الآن
+ساعة، ودقيقتين، و٣ ثواني بعد الآن
+أقل من ساعة
+أقل من ساعة ودقيقتين
+أقل من ساعة، ودقيقتين، و٣ ثواني
+منذ أقل من ساعة
+منذ أقل من ساعة ودقيقتين
+منذ أقل من ساعة، ودقيقتين، و٣ ثواني
+أقل من ساعة بعد الآن
+أقل من ساعة ودقيقتين بعد الآن
+أقل من ساعة، ودقيقتين، و٣ ثواني بعد الآن
+أكثر من ساعة
+أكثر من ساعة ودقيقتين
+أكثر من ساعة، ودقيقتين، و٣ ثواني
+منذ أكثر من ساعة
+منذ أكثر من ساعة ودقيقتين
+منذ أكثر من ساعة، ودقيقتين، و٣ ثواني
+أكثر من ساعة بعد الآن
+أكثر من ساعة ودقيقتين بعد الآن
+أكثر من ساعة، ودقيقتين، و٣ ثواني بعد الآن
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+نصف سنة
+سنة ونصف
+سنتين ونصف
+٥ سنوات ونصف
+١٠ سنوات ونصف
+١١ سنة ونصف
+١٢ سنة ونصف
+٢٠ سنة ونصف
+٢١ سنة ونصف
+٢٢ سنة ونصف
+نصف شهر
+شهر ونصف
+شهرين ونصف
+٥ شهور ونصف
+١٠ شهور ونصف
+١١ شهر ونصف
+١٢ شهر ونصف
+٢٠ شهر ونصف
+٢١ شهر ونصف
+٢٢ شهر ونصف
+نصف أسبوع
+أسبوع ونصف
+أسبوعين ونصف
+٥ أسابيع ونصف
+١٠ أسابيع ونصف
+١١ أسبوع ونصف
+١٢ أسبوع ونصف
+٢٠ أسبوع ونصف
+٢١ أسبوع ونصف
+٢٢ أسبوع ونصف
+نصف يوم
+يوم ونصف
+يومين ونصف
+٥ أيام ونصف
+١٠ أيام ونصف
+١١ يوم ونصف
+١٢ يوم ونصف
+٢٠ يوم ونصف
+٢١ يوم ونصف
+٢٢ يوم ونصف
+نصف ساعة
+ساعة ونصف
+ساعتين ونصف
+٥ ساعات ونصف
+١٠ ساعات ونصف
+١١ ساعة ونصف
+١٢ ساعة ونصف
+٢٠ ساعة ونصف
+٢١ ساعة ونصف
+٢٢ ساعة ونصف
+نصف دقيقة
+دقيقة ونصف
+دقيقتين ونصف
+٥ دقائق ونصف
+١٠ دقائق ونصف
+١١ دقيقة ونصف
+١٢ دقيقة ونصف
+٢٠ دقيقة ونصف
+٢١ دقيقة ونصف
+٢٢ دقيقة ونصف
+نصف ثانية
+ثانية ونصف
+ثانيتين ونصف
+٥ ثواني ونصف
+١٠ ثواني ونصف
+١١ ثانية ونصف
+١٢ ثانية ونصف
+٢٠ ثانية ونصف
+٢١ ثانية ونصف
+٢٢ ثانية ونصف
+نصف جزء من الثانية
+جزء من الثانية ونصف
+جزئين من الثانية ونصف
+٥ أجزاء من الثانية ونصف
+١٠ أجزاء من الثانية ونصف
+١١ جزء من الثانية ونصف
+١٢ جزء من الثانية ونصف
+٢٠ جزء من الثانية ونصف
+٢١ جزء من الثانية ونصف
+٢٢ جزء من الثانية ونصف
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+٠٫٠٢ سنة
+١٫٠٠ سنة
+١٫٢٠ سنة
+٢٫١٢ سنة
+١٢٫٠٥ سنة
+٠٫٠٢ شهر
+١٫٠٠ شهر
+١٫٢٠ شهر
+٢٫١٢ شهر
+١٢٫٠٥ شهر
+٠٫٠٢ أسبوع
+١٫٠٠ أسبوع
+١٫٢٠ أسبوع
+٢٫١٢ أسبوع
+١٢٫٠٥ أسبوع
+٠٫٠٢ يوم
+١٫٠٠ يوم
+١٫٢٠ يوم
+٢٫١٢ يوم
+١٢٫٠٥ يوم
+٠٫٠٢ ساعة
+١٫٠٠ ساعة
+١٫٢٠ ساعة
+٢٫١٢ ساعة
+١٢٫٠٥ ساعة
+٠٫٠٢ دقيقة
+١٫٠٠ دقيقة
+١٫٢٠ دقيقة
+٢٫١٢ دقيقة
+١٢٫٠٥ دقيقة
+٠٫٠٢ ثانية
+١٫٠٠ ثانية
+١٫٢٠ ثانية
+٢٫١٢ ثانية
+١٢٫٠٥ ثانية
+٠٫٠٢ جزء من الثانية
+١٫٠٠ جزء من الثانية
+١٫٢٠ جزء من الثانية
+٢٫١٢ جزء من الثانية
+١٢٫٠٥ جزء من الثانية
+=multipleUnitTargets
+سنة وشهرين
+سنة و٣ أسابيع
+سنة، وشهرين، و٣ أسابيع
+شهر وأسبوعين
+شهر و٣ أيام
+شهر، وأسبوعين، و٣ أيام
+أسبوع ويومين
+أسبوع و٣ ساعات
+أسبوع، ويومين، و٣ ساعات
+يوم وساعتين
+يوم و٣ دقائق
+يوم، وساعتين، و٣ دقائق
+ساعة ودقيقتين
+ساعة و٣ ثواني
+ساعة، ودقيقتين، و٣ ثواني
+دقيقة وثانيتين
+دقيقة و٣ أجزاء من الثانية
+دقيقة، وثانيتين، و٣ أجزاء من الثانية
+ثانية وجزئين من الثانية
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_en.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_en.txt
new file mode 100644
index 0000000..4d5a1d8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_en.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3 years ago
+2 years ago
+1 year ago
+0 years
+1 year from now
+2 years from now
+3 years from now
+5 years from now
+10 years from now
+11 years from now
+12 years from now
+20 years from now
+21 years from now
+22 years from now
+23 years from now
+25 years from now
+3 months ago
+2 months ago
+1 month ago
+0 months
+1 month from now
+2 months from now
+3 months from now
+5 months from now
+10 months from now
+11 months from now
+12 months from now
+20 months from now
+21 months from now
+22 months from now
+23 months from now
+25 months from now
+3 weeks ago
+2 weeks ago
+1 week ago
+0 weeks
+1 week from now
+2 weeks from now
+3 weeks from now
+5 weeks from now
+10 weeks from now
+11 weeks from now
+12 weeks from now
+20 weeks from now
+21 weeks from now
+22 weeks from now
+23 weeks from now
+25 weeks from now
+3 days ago
+2 days ago
+1 day ago
+0 days
+1 day from now
+2 days from now
+3 days from now
+5 days from now
+10 days from now
+11 days from now
+12 days from now
+20 days from now
+21 days from now
+22 days from now
+23 days from now
+25 days from now
+3 hours ago
+2 hours ago
+1 hour ago
+0 hours
+1 hour from now
+2 hours from now
+3 hours from now
+5 hours from now
+10 hours from now
+11 hours from now
+12 hours from now
+20 hours from now
+21 hours from now
+22 hours from now
+23 hours from now
+25 hours from now
+3 minutes ago
+2 minutes ago
+1 minute ago
+0 minutes
+1 minute from now
+2 minutes from now
+3 minutes from now
+5 minutes from now
+10 minutes from now
+11 minutes from now
+12 minutes from now
+20 minutes from now
+21 minutes from now
+22 minutes from now
+23 minutes from now
+25 minutes from now
+3 seconds ago
+2 seconds ago
+1 second ago
+0 seconds
+1 second from now
+2 seconds from now
+3 seconds from now
+5 seconds from now
+10 seconds from now
+11 seconds from now
+12 seconds from now
+20 seconds from now
+21 seconds from now
+22 seconds from now
+23 seconds from now
+25 seconds from now
+3 milliseconds ago
+2 milliseconds ago
+1 millisecond ago
+0 milliseconds
+1 millisecond from now
+2 milliseconds from now
+3 milliseconds from now
+5 milliseconds from now
+10 milliseconds from now
+11 milliseconds from now
+12 milliseconds from now
+20 milliseconds from now
+21 milliseconds from now
+22 milliseconds from now
+23 milliseconds from now
+25 milliseconds from now
+=mediumFormTargets
+3 yr
+3 mnth
+3 wk
+3 dy
+3 hr
+3 min
+3 sec
+3 ms
+=shortFormTargets
+3 y
+3 m
+3 w
+3 d
+3 h
+3 m
+3 s
+3 x
+=customMinuteTargets
+5 minutes
+1 hour and 5 minutes
+10 minutes
+1 hour and 10 minutes
+15 minutes
+1 hour and 15 minutes
+20 minutes
+1 hour and 20 minutes
+25 minutes
+1 hour and 25 minutes
+30 minutes
+1 hour and 30 minutes
+35 minutes
+1 hour and 35 minutes
+40 minutes
+1 hour and 40 minutes
+45 minutes
+1 hour and 45 minutes
+50 minutes
+1 hour and 50 minutes
+55 minutes
+1 hour and 55 minutes
+=limitedUnitTargets
+1 month
+1 month and 2 weeks
+1 month, 2 weeks, and 3 days
+1 month ago
+1 month and 2 weeks ago
+1 month, 2 weeks, and 3 days ago
+1 month from now
+1 month and 2 weeks from now
+1 month, 2 weeks, and 3 days from now
+less than 1 month
+less than 1 month and 2 weeks
+less than 1 month, 2 weeks, and 3 days
+less than 1 month ago
+less than 1 month and 2 weeks ago
+less than 1 month, 2 weeks, and 3 days ago
+less than 1 month from now
+less than 1 month and 2 weeks from now
+less than 1 month, 2 weeks, and 3 days from now
+more than 1 month
+more than 1 month and 2 weeks
+more than 1 month, 2 weeks, and 3 days
+more than 1 month ago
+more than 1 month and 2 weeks ago
+more than 1 month, 2 weeks, and 3 days ago
+more than 1 month from now
+more than 1 month and 2 weeks from now
+more than 1 month, 2 weeks, and 3 days from now
+1 hour
+1 hour and 2 minutes
+1 hour, 2 minutes, and 3 seconds
+1 hour ago
+1 hour and 2 minutes ago
+1 hour, 2 minutes, and 3 seconds ago
+1 hour from now
+1 hour and 2 minutes from now
+1 hour, 2 minutes, and 3 seconds from now
+less than 1 hour
+less than 1 hour and 2 minutes
+less than 1 hour, 2 minutes, and 3 seconds
+less than 1 hour ago
+less than 1 hour and 2 minutes ago
+less than 1 hour, 2 minutes, and 3 seconds ago
+less than 1 hour from now
+less than 1 hour and 2 minutes from now
+less than 1 hour, 2 minutes, and 3 seconds from now
+more than 1 hour
+more than 1 hour and 2 minutes
+more than 1 hour, 2 minutes, and 3 seconds
+more than 1 hour ago
+more than 1 hour and 2 minutes ago
+more than 1 hour, 2 minutes, and 3 seconds ago
+more than 1 hour from now
+more than 1 hour and 2 minutes from now
+more than 1 hour, 2 minutes, and 3 seconds from now
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ year
+1½ years
+2½ years
+5½ years
+10½ years
+11½ years
+12½ years
+20½ years
+21½ years
+22½ years
+½ month
+1½ months
+2½ months
+5½ months
+10½ months
+11½ months
+12½ months
+20½ months
+21½ months
+22½ months
+½ week
+1½ weeks
+2½ weeks
+5½ weeks
+10½ weeks
+11½ weeks
+12½ weeks
+20½ weeks
+21½ weeks
+22½ weeks
+½ day
+1½ days
+2½ days
+5½ days
+10½ days
+11½ days
+12½ days
+20½ days
+21½ days
+22½ days
+½ hour
+1½ hours
+2½ hours
+5½ hours
+10½ hours
+11½ hours
+12½ hours
+20½ hours
+21½ hours
+22½ hours
+½ minute
+1½ minutes
+2½ minutes
+5½ minutes
+10½ minutes
+11½ minutes
+12½ minutes
+20½ minutes
+21½ minutes
+22½ minutes
+½ second
+1½ seconds
+2½ seconds
+5½ seconds
+10½ seconds
+11½ seconds
+12½ seconds
+20½ seconds
+21½ seconds
+22½ seconds
+½ millisecond
+1½ milliseconds
+2½ milliseconds
+5½ milliseconds
+10½ milliseconds
+11½ milliseconds
+12½ milliseconds
+20½ milliseconds
+21½ milliseconds
+22½ milliseconds
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 years
+1.00 years
+1.20 years
+2.12 years
+12.05 years
+0.02 months
+1.00 months
+1.20 months
+2.12 months
+12.05 months
+0.02 weeks
+1.00 weeks
+1.20 weeks
+2.12 weeks
+12.05 weeks
+0.02 days
+1.00 days
+1.20 days
+2.12 days
+12.05 days
+0.02 hours
+1.00 hours
+1.20 hours
+2.12 hours
+12.05 hours
+0.02 minutes
+1.00 minutes
+1.20 minutes
+2.12 minutes
+12.05 minutes
+0.02 seconds
+1.00 seconds
+1.20 seconds
+2.12 seconds
+12.05 seconds
+0.02 milliseconds
+1.00 milliseconds
+1.20 milliseconds
+2.12 milliseconds
+12.05 milliseconds
+=multipleUnitTargets
+1 year and 2 months
+1 year and 3 weeks
+1 year, 2 months, and 3 weeks
+1 month and 2 weeks
+1 month and 3 days
+1 month, 2 weeks, and 3 days
+1 week and 2 days
+1 week and 3 hours
+1 week, 2 days, and 3 hours
+1 day and 2 hours
+1 day and 3 minutes
+1 day, 2 hours, and 3 minutes
+1 hour and 2 minutes
+1 hour and 3 seconds
+1 hour, 2 minutes, and 3 seconds
+1 minute and 2 seconds
+1 minute and 3 milliseconds
+1 minute, 2 seconds, and 3 milliseconds
+1 second and 2 milliseconds
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_es.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_es.txt
new file mode 100644
index 0000000..ff440ff
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_es.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+hace 3 años
+hace 2 años
+hace un año
+0 años
+dentro de un año
+dentro de 2 años
+dentro de 3 años
+dentro de 5 años
+dentro de 10 años
+dentro de 11 años
+dentro de 12 años
+dentro de 20 años
+dentro de 21 años
+dentro de 22 años
+dentro de 23 años
+dentro de 25 años
+hace 3 meses
+hace 2 meses
+hace un mes
+0 meses
+dentro de un mes
+dentro de 2 meses
+dentro de 3 meses
+dentro de 5 meses
+dentro de 10 meses
+dentro de 11 meses
+dentro de 12 meses
+dentro de 20 meses
+dentro de 21 meses
+dentro de 22 meses
+dentro de 23 meses
+dentro de 25 meses
+hace 3 semanas
+hace 2 semanas
+hace una semana
+0 semanas
+dentro de una semana
+dentro de 2 semanas
+dentro de 3 semanas
+dentro de 5 semanas
+dentro de 10 semanas
+dentro de 11 semanas
+dentro de 12 semanas
+dentro de 20 semanas
+dentro de 21 semanas
+dentro de 22 semanas
+dentro de 23 semanas
+dentro de 25 semanas
+hace 3 días
+hace 2 días
+hace un día
+0 días
+dentro de un día
+dentro de 2 días
+dentro de 3 días
+dentro de 5 días
+dentro de 10 días
+dentro de 11 días
+dentro de 12 días
+dentro de 20 días
+dentro de 21 días
+dentro de 22 días
+dentro de 23 días
+dentro de 25 días
+hace 3 horas
+hace 2 horas
+hace una hora
+0 horas
+dentro de una hora
+dentro de 2 horas
+dentro de 3 horas
+dentro de 5 horas
+dentro de 10 horas
+dentro de 11 horas
+dentro de 12 horas
+dentro de 20 horas
+dentro de 21 horas
+dentro de 22 horas
+dentro de 23 horas
+dentro de 25 horas
+hace 3 minutos
+hace 2 minutos
+hace un minuto
+0 minutos
+dentro de un minuto
+dentro de 2 minutos
+dentro de 3 minutos
+dentro de 5 minutos
+dentro de 10 minutos
+dentro de 11 minutos
+dentro de 12 minutos
+dentro de 20 minutos
+dentro de 21 minutos
+dentro de 22 minutos
+dentro de 23 minutos
+dentro de 25 minutos
+hace 3 segundos
+hace 2 segundos
+hace un segundo
+0 segundos
+dentro de un segundo
+dentro de 2 segundos
+dentro de 3 segundos
+dentro de 5 segundos
+dentro de 10 segundos
+dentro de 11 segundos
+dentro de 12 segundos
+dentro de 20 segundos
+dentro de 21 segundos
+dentro de 22 segundos
+dentro de 23 segundos
+dentro de 25 segundos
+hace 3 milisegundos
+hace 2 milisegundos
+hace un milisegundo
+0 milisegundos
+dentro de un milisegundo
+dentro de 2 milisegundos
+dentro de 3 milisegundos
+dentro de 5 milisegundos
+dentro de 10 milisegundos
+dentro de 11 milisegundos
+dentro de 12 milisegundos
+dentro de 20 milisegundos
+dentro de 21 milisegundos
+dentro de 22 milisegundos
+dentro de 23 milisegundos
+dentro de 25 milisegundos
+=mediumFormTargets
+3 a
+3 m
+3 s
+3 d
+3 hr
+3 min
+3 seg
+3 mseg
+=shortFormTargets
+3 a
+3 m
+3 s
+3 d
+3 h
+3 m
+3 s
+3 ms
+=customMinuteTargets
+5 minutos
+una hora y 5 minutos
+10 minutos
+una hora y 10 minutos
+15 minutos
+una hora y 15 minutos
+20 minutos
+una hora y 20 minutos
+25 minutos
+una hora y 25 minutos
+30 minutos
+una hora y 30 minutos
+35 minutos
+una hora y 35 minutos
+40 minutos
+una hora y 40 minutos
+45 minutos
+una hora y 45 minutos
+50 minutos
+una hora y 50 minutos
+55 minutos
+una hora y 55 minutos
+=limitedUnitTargets
+un mes
+un mes y 2 semanas
+un mes, 2 semanas y 3 días
+hace un mes
+hace un mes y 2 semanas
+hace un mes, 2 semanas y 3 días
+dentro de un mes
+dentro de un mes y 2 semanas
+dentro de un mes, 2 semanas y 3 días
+menos de un mes
+menos de un mes y 2 semanas
+menos de un mes, 2 semanas y 3 días
+hace menos de un mes
+hace menos de un mes y 2 semanas
+hace menos de un mes, 2 semanas y 3 días
+dentro de menos de un mes
+dentro de menos de un mes y 2 semanas
+dentro de menos de un mes, 2 semanas y 3 días
+más de un mes
+más de un mes y 2 semanas
+más de un mes, 2 semanas y 3 días
+hace más de un mes
+hace más de un mes y 2 semanas
+hace más de un mes, 2 semanas y 3 días
+dentro más de un mes
+dentro más de un mes y 2 semanas
+dentro más de un mes, 2 semanas y 3 días
+una hora
+una hora y 2 minutos
+una hora, 2 minutos y 3 segundos
+hace una hora
+hace una hora y 2 minutos
+hace una hora, 2 minutos y 3 segundos
+dentro de una hora
+dentro de una hora y 2 minutos
+dentro de una hora, 2 minutos y 3 segundos
+menos de una hora
+menos de una hora y 2 minutos
+menos de una hora, 2 minutos y 3 segundos
+hace menos de una hora
+hace menos de una hora y 2 minutos
+hace menos de una hora, 2 minutos y 3 segundos
+dentro de menos de una hora
+dentro de menos de una hora y 2 minutos
+dentro de menos de una hora, 2 minutos y 3 segundos
+más de una hora
+más de una hora y 2 minutos
+más de una hora, 2 minutos y 3 segundos
+hace más de una hora
+hace más de una hora y 2 minutos
+hace más de una hora, 2 minutos y 3 segundos
+dentro más de una hora
+dentro más de una hora y 2 minutos
+dentro más de una hora, 2 minutos y 3 segundos
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+medio  año
+un año y medio
+2 años y medio
+5 años y medio
+10 años y medio
+11 años y medio
+12 años y medio
+20 años y medio
+21 años y medio
+22 años y medio
+medio  mes
+un mes y medio
+2 meses y medio
+5 meses y medio
+10 meses y medio
+11 meses y medio
+12 meses y medio
+20 meses y medio
+21 meses y medio
+22 meses y medio
+media  semana
+una semana y media
+2 semanas y media
+5 semanas y media
+10 semanas y media
+11 semanas y media
+12 semanas y media
+20 semanas y media
+21 semanas y media
+22 semanas y media
+medio  día
+un día y medio
+2 días y medio
+5 días y medio
+10 días y medio
+11 días y medio
+12 días y medio
+20 días y medio
+21 días y medio
+22 días y medio
+media  hora
+una hora y media
+2 horas y media
+5 horas y media
+10 horas y media
+11 horas y media
+12 horas y media
+20 horas y media
+21 horas y media
+22 horas y media
+medio  minuto
+un minuto y medio
+2 minutos y medio
+5 minutos y medio
+10 minutos y medio
+11 minutos y medio
+12 minutos y medio
+20 minutos y medio
+21 minutos y medio
+22 minutos y medio
+medio  segundo
+un segundo y medio
+2 segundos y medio
+5 segundos y medio
+10 segundos y medio
+11 segundos y medio
+12 segundos y medio
+20 segundos y medio
+21 segundos y medio
+22 segundos y medio
+medio  milisegundo
+un milisegundo y medio
+2 milisegundos y medio
+5 milisegundos y medio
+10 milisegundos y medio
+11 milisegundos y medio
+12 milisegundos y medio
+20 milisegundos y medio
+21 milisegundos y medio
+22 milisegundos y medio
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0,02 años
+1,00 años
+1,20 años
+2,12 años
+12,05 años
+0,02 meses
+1,00 meses
+1,20 meses
+2,12 meses
+12,05 meses
+0,02 semanas
+1,00 semanas
+1,20 semanas
+2,12 semanas
+12,05 semanas
+0,02 días
+1,00 días
+1,20 días
+2,12 días
+12,05 días
+0,02 horas
+1,00 horas
+1,20 horas
+2,12 horas
+12,05 horas
+0,02 minutos
+1,00 minutos
+1,20 minutos
+2,12 minutos
+12,05 minutos
+0,02 segundos
+1,00 segundos
+1,20 segundos
+2,12 segundos
+12,05 segundos
+0,02 milisegundos
+1,00 milisegundos
+1,20 milisegundos
+2,12 milisegundos
+12,05 milisegundos
+=multipleUnitTargets
+un año y 2 meses
+un año y 3 semanas
+un año, 2 meses y 3 semanas
+un mes y 2 semanas
+un mes y 3 días
+un mes, 2 semanas y 3 días
+una semana y 2 días
+una semana y 3 horas
+una semana, 2 días y 3 horas
+un día y 2 horas
+un día y 3 minutos
+un día, 2 horas y 3 minutos
+una hora y 2 minutos
+una hora y 3 segundos
+una hora, 2 minutos y 3 segundos
+un minuto y 2 segundos
+un minuto y 3 milisegundos
+un minuto, 2 segundos y 3 milisegundos
+un segundo y 2 milisegundos
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_fr.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_fr.txt
new file mode 100644
index 0000000..d709b06
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_fr.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+il y a 3 ans
+il y a 2 ans
+il y a 1 an
+0 an
+dans 1 an
+dans 2 ans
+dans 3 ans
+dans 5 ans
+dans 10 ans
+dans 11 ans
+dans 12 ans
+dans 20 ans
+dans 21 ans
+dans 22 ans
+dans 23 ans
+dans 25 ans
+il y a 3 mois
+il y a 2 mois
+il y a 1 mois
+0 mois
+dans 1 mois
+dans 2 mois
+dans 3 mois
+dans 5 mois
+dans 10 mois
+dans 11 mois
+dans 12 mois
+dans 20 mois
+dans 21 mois
+dans 22 mois
+dans 23 mois
+dans 25 mois
+il y a 3 semaines
+il y a 2 semaines
+il y a 1 semaine
+0 semaine
+dans 1 semaine
+dans 2 semaines
+dans 3 semaines
+dans 5 semaines
+dans 10 semaines
+dans 11 semaines
+dans 12 semaines
+dans 20 semaines
+dans 21 semaines
+dans 22 semaines
+dans 23 semaines
+dans 25 semaines
+il y a 3 jours
+il y a 2 jours
+il y a 1 jour
+0 jour
+dans 1 jour
+dans 2 jours
+dans 3 jours
+dans 5 jours
+dans 10 jours
+dans 11 jours
+dans 12 jours
+dans 20 jours
+dans 21 jours
+dans 22 jours
+dans 23 jours
+dans 25 jours
+il y a 3 heures
+il y a 2 heures
+il y a 1 heure
+0 heure
+dans 1 heure
+dans 2 heures
+dans 3 heures
+dans 5 heures
+dans 10 heures
+dans 11 heures
+dans 12 heures
+dans 20 heures
+dans 21 heures
+dans 22 heures
+dans 23 heures
+dans 25 heures
+il y a 3 minutes
+il y a 2 minutes
+il y a 1 minute
+0 minute
+dans 1 minute
+dans 2 minutes
+dans 3 minutes
+dans 5 minutes
+dans 10 minutes
+dans 11 minutes
+dans 12 minutes
+dans 20 minutes
+dans 21 minutes
+dans 22 minutes
+dans 23 minutes
+dans 25 minutes
+il y a 3 secondes
+il y a 2 secondes
+il y a 1 seconde
+0 seconde
+dans 1 seconde
+dans 2 secondes
+dans 3 secondes
+dans 5 secondes
+dans 10 secondes
+dans 11 secondes
+dans 12 secondes
+dans 20 secondes
+dans 21 secondes
+dans 22 secondes
+dans 23 secondes
+dans 25 secondes
+il y a 3 millisecondes
+il y a 2 millisecondes
+il y a 1 milliseconde
+0 milliseconde
+dans 1 milliseconde
+dans 2 millisecondes
+dans 3 millisecondes
+dans 5 millisecondes
+dans 10 millisecondes
+dans 11 millisecondes
+dans 12 millisecondes
+dans 20 millisecondes
+dans 21 millisecondes
+dans 22 millisecondes
+dans 23 millisecondes
+dans 25 millisecondes
+=mediumFormTargets
+3 ans
+3 mois
+3 semaines
+3 jours
+3 heures
+3 minutes
+3 secondes
+3 millisecondes
+=shortFormTargets
+3 ans
+3 mois
+3 semaines
+3 jours
+3 heures
+3 minutes
+3 secondes
+3 millisecondes
+=customMinuteTargets
+5 minutes
+1 heure et 5 minutes
+10 minutes
+1 heure et 10 minutes
+15 minutes
+1 heure et 15 minutes
+20 minutes
+1 heure et 20 minutes
+25 minutes
+1 heure et 25 minutes
+30 minutes
+1 heure et 30 minutes
+35 minutes
+1 heure et 35 minutes
+40 minutes
+1 heure et 40 minutes
+45 minutes
+1 heure et 45 minutes
+50 minutes
+1 heure et 50 minutes
+55 minutes
+1 heure et 55 minutes
+=limitedUnitTargets
+1 mois
+1 mois et 2 semaines
+1 mois, 2 semaines et 3 jours
+il y a 1 mois
+il y a 1 mois et 2 semaines
+il y a 1 mois, 2 semaines et 3 jours
+dans 1 mois
+dans 1 mois et 2 semaines
+dans 1 mois, 2 semaines et 3 jours
+moins de 1 mois
+moins de 1 mois et 2 semaines
+moins de 1 mois, 2 semaines et 3 jours
+il y a moins de 1 mois
+il y a moins de 1 mois et 2 semaines
+il y a moins de 1 mois, 2 semaines et 3 jours
+dans moins de 1 mois
+dans moins de 1 mois et 2 semaines
+dans moins de 1 mois, 2 semaines et 3 jours
+plus de 1 mois
+plus de 1 mois et 2 semaines
+plus de 1 mois, 2 semaines et 3 jours
+il y a plus de 1 mois
+il y a plus de 1 mois et 2 semaines
+il y a plus de 1 mois, 2 semaines et 3 jours
+dans plus de 1 mois
+dans plus de 1 mois et 2 semaines
+dans plus de 1 mois, 2 semaines et 3 jours
+1 heure
+1 heure et 2 minutes
+1 heure, 2 minutes et 3 secondes
+il y a 1 heure
+il y a 1 heure et 2 minutes
+il y a 1 heure, 2 minutes et 3 secondes
+dans 1 heure
+dans 1 heure et 2 minutes
+dans 1 heure, 2 minutes et 3 secondes
+moins de 1 heure
+moins de 1 heure et 2 minutes
+moins de 1 heure, 2 minutes et 3 secondes
+il y a moins de 1 heure
+il y a moins de 1 heure et 2 minutes
+il y a moins de 1 heure, 2 minutes et 3 secondes
+dans moins de 1 heure
+dans moins de 1 heure et 2 minutes
+dans moins de 1 heure, 2 minutes et 3 secondes
+plus de 1 heure
+plus de 1 heure et 2 minutes
+plus de 1 heure, 2 minutes et 3 secondes
+il y a plus de 1 heure
+il y a plus de 1 heure et 2 minutes
+il y a plus de 1 heure, 2 minutes et 3 secondes
+dans plus de 1 heure
+dans plus de 1 heure et 2 minutes
+dans plus de 1 heure, 2 minutes et 3 secondes
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ an
+1½ ans
+2½ ans
+5½ ans
+10½ ans
+11½ ans
+12½ ans
+20½ ans
+21½ ans
+22½ ans
+½ mois
+1½ mois
+2½ mois
+5½ mois
+10½ mois
+11½ mois
+12½ mois
+20½ mois
+21½ mois
+22½ mois
+½ semaine
+1½ semaines
+2½ semaines
+5½ semaines
+10½ semaines
+11½ semaines
+12½ semaines
+20½ semaines
+21½ semaines
+22½ semaines
+½ jour
+1½ jours
+2½ jours
+5½ jours
+10½ jours
+11½ jours
+12½ jours
+20½ jours
+21½ jours
+22½ jours
+½ heure
+1½ heures
+2½ heures
+5½ heures
+10½ heures
+11½ heures
+12½ heures
+20½ heures
+21½ heures
+22½ heures
+½ minute
+1½ minutes
+2½ minutes
+5½ minutes
+10½ minutes
+11½ minutes
+12½ minutes
+20½ minutes
+21½ minutes
+22½ minutes
+½ seconde
+1½ secondes
+2½ secondes
+5½ secondes
+10½ secondes
+11½ secondes
+12½ secondes
+20½ secondes
+21½ secondes
+22½ secondes
+½ milliseconde
+1½ millisecondes
+2½ millisecondes
+5½ millisecondes
+10½ millisecondes
+11½ millisecondes
+12½ millisecondes
+20½ millisecondes
+21½ millisecondes
+22½ millisecondes
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 ans
+1.00 ans
+1.20 ans
+2.12 ans
+12.05 ans
+0.02 mois
+1.00 mois
+1.20 mois
+2.12 mois
+12.05 mois
+0.02 semaines
+1.00 semaines
+1.20 semaines
+2.12 semaines
+12.05 semaines
+0.02 jours
+1.00 jours
+1.20 jours
+2.12 jours
+12.05 jours
+0.02 heures
+1.00 heures
+1.20 heures
+2.12 heures
+12.05 heures
+0.02 minutes
+1.00 minutes
+1.20 minutes
+2.12 minutes
+12.05 minutes
+0.02 secondes
+1.00 secondes
+1.20 secondes
+2.12 secondes
+12.05 secondes
+0.02 millisecondes
+1.00 millisecondes
+1.20 millisecondes
+2.12 millisecondes
+12.05 millisecondes
+=multipleUnitTargets
+1 an et 2 mois
+1 an et 3 semaines
+1 an, 2 mois et 3 semaines
+1 mois et 2 semaines
+1 mois et 3 jours
+1 mois, 2 semaines et 3 jours
+1 semaine et 2 jours
+1 semaine et 3 heures
+1 semaine, 2 jours et 3 heures
+1 jour et 2 heures
+1 jour et 3 minutes
+1 jour, 2 heures et 3 minutes
+1 heure et 2 minutes
+1 heure et 3 secondes
+1 heure, 2 minutes et 3 secondes
+1 minute et 2 secondes
+1 minute et 3 millisecondes
+1 minute, 2 secondes et 3 millisecondes
+1 seconde et 2 millisecondes
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_he_IL.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_he_IL.txt
new file mode 100644
index 0000000..5399755
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_he_IL.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+לפני 3 שנים
+לפני שנתיים
+לפני שנה
+0 שנים
+אחרי שנה
+אחרי שנתיים
+אחרי 3 שנים
+אחרי 5 שנים
+אחרי 10 שנים
+אחרי 11 שנים
+אחרי 12 שנה
+אחרי 20 שנה
+אחרי 21 שנה
+אחרי 22 שנה
+אחרי 23 שנה
+אחרי 25 שנה
+לפני 3 חודשים
+לפני חודשיים
+לפני חודש
+0 חודשים
+אחרי חודש
+אחרי חודשיים
+אחרי 3 חודשים
+אחרי 5 חודשים
+אחרי 10 חודשים
+אחרי 11 חודשים
+אחרי 12 חודשים
+אחרי 20 חודשים
+אחרי 21 חודשים
+אחרי 22 חודשים
+אחרי 23 חודשים
+אחרי 25 חודשים
+לפני 3 שבועות
+לפני שבועיים
+לפני שבוע
+0 שבועות
+אחרי שבוע
+אחרי שבועיים
+אחרי 3 שבועות
+אחרי 5 שבועות
+אחרי 10 שבועות
+אחרי 11 שבועות
+אחרי 12 שבועות
+אחרי 20 שבועות
+אחרי 21 שבועות
+אחרי 22 שבועות
+אחרי 23 שבועות
+אחרי 25 שבועות
+לפני 3 ימים
+לפני יומיים
+לפני יום
+0 ימים
+אחרי יום
+אחרי יומיים
+אחרי 3 ימים
+אחרי 5 ימים
+אחרי 10 ימים
+אחרי 11 ימים
+אחרי 12 ימים
+אחרי 20 ימים
+אחרי 21 ימים
+אחרי 22 ימים
+אחרי 23 ימים
+אחרי 25 ימים
+לפני 3 שעות
+לפני שעתיים
+לפני שעה
+0 שעות
+אחרי שעה
+אחרי שעתיים
+אחרי 3 שעות
+אחרי 5 שעות
+אחרי 10 שעות
+אחרי 11 שעות
+אחרי 12 שעות
+אחרי 20 שעות
+אחרי 21 שעות
+אחרי 22 שעות
+אחרי 23 שעות
+אחרי 25 שעות
+לפני 3 דקות
+לפני 2 דקות
+לפני דקה
+0 דקות
+אחרי דקה
+אחרי 2 דקות
+אחרי 3 דקות
+אחרי 5 דקות
+אחרי 10 דקות
+אחרי 11 דקות
+אחרי 12 דקות
+אחרי 20 דקות
+אחרי 21 דקות
+אחרי 22 דקות
+אחרי 23 דקות
+אחרי 25 דקות
+לפני 3 שניות
+לפני 2 שניות
+לפני שנייה
+0 שניות
+אחרי שנייה
+אחרי 2 שניות
+אחרי 3 שניות
+אחרי 5 שניות
+אחרי 10 שניות
+אחרי 11 שניות
+אחרי 12 שניות
+אחרי 20 שניות
+אחרי 21 שניות
+אחרי 22 שניות
+אחרי 23 שניות
+אחרי 25 שניות
+לפני 3 מילישניות
+לפני 2 מילישניות
+לפני מילישניה
+0 מילישניות
+אחרי מילישניה
+אחרי 2 מילישניות
+אחרי 3 מילישניות
+אחרי 5 מילישניות
+אחרי 10 מילישניות
+אחרי 11 מילישניות
+אחרי 12 מילישניות
+אחרי 20 מילישניות
+אחרי 21 מילישניות
+אחרי 22 מילישניות
+אחרי 23 מילישניות
+אחרי 25 מילישניות
+=mediumFormTargets
+3 שנים
+3 חודשים
+3 שבועות
+3 ימים
+3 שעות
+3 דקות
+3 שניות
+3 מילישניות
+=shortFormTargets
+3 שנים
+3 חודשים
+3 שבועות
+3 ימים
+3 שעות
+3 דקות
+3 שניות
+3 מילישניות
+=customMinuteTargets
+5 דקות
+שעה ו־5 דקות
+10 דקות
+שעה ו־10 דקות
+15 דקות
+שעה ו־15 דקות
+20 דקות
+שעה ו־20 דקות
+25 דקות
+שעה ו־25 דקות
+30 דקות
+שעה ו־30 דקות
+35 דקות
+שעה ו־35 דקות
+40 דקות
+שעה ו־40 דקות
+45 דקות
+שעה ו־45 דקות
+50 דקות
+שעה ו־50 דקות
+55 דקות
+שעה ו־55 דקות
+=limitedUnitTargets
+חודש
+חודש ושבועיים
+חודש, שבועיים ו־3 ימים
+לפני חודש
+לפני חודש ושבועיים
+לפני חודש, שבועיים ו־3 ימים
+אחרי חודש
+אחרי חודש ושבועיים
+אחרי חודש, שבועיים ו־3 ימים
+יותר מחודש
+יותר מחודש ושבועיים
+יותר מחודש, שבועיים ו־3 ימים
+לפני יותר מחודש
+לפני יותר מחודש ושבועיים
+לפני יותר מחודש, שבועיים ו־3 ימים
+אחרי יותר מחודש
+אחרי יותר מחודש ושבועיים
+אחרי יותר מחודש, שבועיים ו־3 ימים
+פחות מחודש
+פחות מחודש ושבועיים
+פחות מחודש, שבועיים ו־3 ימים
+לפני פחות מחודש
+לפני פחות מחודש ושבועיים
+לפני פחות מחודש, שבועיים ו־3 ימים
+אחרי פחות מחודש
+אחרי פחות מחודש ושבועיים
+אחרי פחות מחודש, שבועיים ו־3 ימים
+שעה
+שעה ו־2 דקות
+שעה, 2 דקות ו־3 שניות
+לפני שעה
+לפני שעה ו־2 דקות
+לפני שעה, 2 דקות ו־3 שניות
+אחרי שעה
+אחרי שעה ו־2 דקות
+אחרי שעה, 2 דקות ו־3 שניות
+יותר משעה
+יותר משעה ו־2 דקות
+יותר משעה, 2 דקות ו־3 שניות
+לפני יותר משעה
+לפני יותר משעה ו־2 דקות
+לפני יותר משעה, 2 דקות ו־3 שניות
+אחרי יותר משעה
+אחרי יותר משעה ו־2 דקות
+אחרי יותר משעה, 2 דקות ו־3 שניות
+פחות משעה
+פחות משעה ו־2 דקות
+פחות משעה, 2 דקות ו־3 שניות
+לפני פחות משעה
+לפני פחות משעה ו־2 דקות
+לפני פחות משעה, 2 דקות ו־3 שניות
+אחרי פחות משעה
+אחרי פחות משעה ו־2 דקות
+אחרי פחות משעה, 2 דקות ו־3 שניות
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ שנה
+½שנה
+½שנתיים
+5½ שנים
+10½ שנים
+11½ שנים
+12½ שנה
+20½ שנה
+21½ שנה
+22½ שנה
+½ חודש
+½חודש
+½חודשיים
+5½ חודשים
+10½ חודשים
+11½ חודשים
+12½ חודשים
+20½ חודשים
+21½ חודשים
+22½ חודשים
+½ שבוע
+½שבוע
+½שבועיים
+5½ שבועות
+10½ שבועות
+11½ שבועות
+12½ שבועות
+20½ שבועות
+21½ שבועות
+22½ שבועות
+½ יום
+½יום
+½יומיים
+5½ ימים
+10½ ימים
+11½ ימים
+12½ ימים
+20½ ימים
+21½ ימים
+22½ ימים
+½ שעה
+½שעה
+½שעתיים
+5½ שעות
+10½ שעות
+11½ שעות
+12½ שעות
+20½ שעות
+21½ שעות
+22½ שעות
+½ דקה
+½דקה
+2½ דקות
+5½ דקות
+10½ דקות
+11½ דקות
+12½ דקות
+20½ דקות
+21½ דקות
+22½ דקות
+½ שנייה
+½שנייה
+2½ שניות
+5½ שניות
+10½ שניות
+11½ שניות
+12½ שניות
+20½ שניות
+21½ שניות
+22½ שניות
+½ מילישניה
+½מילישניה
+2½ מילישניות
+5½ מילישניות
+10½ מילישניות
+11½ מילישניות
+12½ מילישניות
+20½ מילישניות
+21½ מילישניות
+22½ מילישניות
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 שנה
+1.00 שנים
+1.20 שנים
+2.12 שנים
+12.05 שנים
+0.02 חודש
+1.00 חודשים
+1.20 חודשים
+2.12 חודשים
+12.05 חודשים
+0.02 שבוע
+1.00 שבועות
+1.20 שבועות
+2.12 שבועות
+12.05 שבועות
+0.02 יום
+1.00 ימים
+1.20 ימים
+2.12 ימים
+12.05 ימים
+0.02 שעה
+1.00 שעות
+1.20 שעות
+2.12 שעות
+12.05 שעות
+0.02 דקה
+1.00 דקות
+1.20 דקות
+2.12 דקות
+12.05 דקות
+0.02 שנייה
+1.00 שניות
+1.20 שניות
+2.12 שניות
+12.05 שניות
+0.02 מילישניה
+1.00 מילישניות
+1.20 מילישניות
+2.12 מילישניות
+12.05 מילישניות
+=multipleUnitTargets
+שנה וחודשיים
+שנה ו־3 שבועות
+שנה, חודשיים ו־3 שבועות
+חודש ושבועיים
+חודש ו־3 ימים
+חודש, שבועיים ו־3 ימים
+שבוע ויומיים
+שבוע ו־3 שעות
+שבוע, יומיים ו־3 שעות
+יום ושעתיים
+יום ו־3 דקות
+יום, שעתיים ו־3 דקות
+שעה ו־2 דקות
+שעה ו־3 שניות
+שעה, 2 דקות ו־3 שניות
+דקה ו־2 שניות
+דקה ו־3 מילישניות
+דקה, 2 שניות ו־3 מילישניות
+שנייה ו־2 מילישניות
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_hi.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_hi.txt
new file mode 100644
index 0000000..0ac7666
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_hi.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+३ साल पहले
+२ साल पहले
+१ साल पहले
+० साल
+अभी से १ साल बाद
+अभी से २ साल बाद
+अभी से ३ साल बाद
+अभी से ५ साल बाद
+अभी से १० साल बाद
+अभी से ११ साल बाद
+अभी से १२ साल बाद
+अभी से २० साल बाद
+अभी से २१ साल बाद
+अभी से २२ साल बाद
+अभी से २३ साल बाद
+अभी से २५ साल बाद
+३ महीने पहले
+२ महीने पहले
+१ महीना पहले
+० महीने
+अभी से १ महीना बाद
+अभी से २ महीने बाद
+अभी से ३ महीने बाद
+अभी से ५ महीने बाद
+अभी से १० महीने बाद
+अभी से ११ महीने बाद
+अभी से १२ महीने बाद
+अभी से २० महीने बाद
+अभी से २१ महीने बाद
+अभी से २२ महीने बाद
+अभी से २३ महीने बाद
+अभी से २५ महीने बाद
+३ सप्ताह पहले
+२ सप्ताह पहले
+१ सप्ताह पहले
+० सप्ताह
+अभी से १ सप्ताह बाद
+अभी से २ सप्ताह बाद
+अभी से ३ सप्ताह बाद
+अभी से ५ सप्ताह बाद
+अभी से १० सप्ताह बाद
+अभी से ११ सप्ताह बाद
+अभी से १२ सप्ताह बाद
+अभी से २० सप्ताह बाद
+अभी से २१ सप्ताह बाद
+अभी से २२ सप्ताह बाद
+अभी से २३ सप्ताह बाद
+अभी से २५ सप्ताह बाद
+३ दिन पहले
+२ दिन पहले
+१ दिन पहले
+० दिन
+अभी से १ दिन बाद
+अभी से २ दिन बाद
+अभी से ३ दिन बाद
+अभी से ५ दिन बाद
+अभी से १० दिन बाद
+अभी से ११ दिन बाद
+अभी से १२ दिन बाद
+अभी से २० दिन बाद
+अभी से २१ दिन बाद
+अभी से २२ दिन बाद
+अभी से २३ दिन बाद
+अभी से २५ दिन बाद
+३ घंटे पहले
+२ घंटे पहले
+१ घंटा पहले
+० घंटे
+अभी से १ घंटा बाद
+अभी से २ घंटे बाद
+अभी से ३ घंटे बाद
+अभी से ५ घंटे बाद
+अभी से १० घंटे बाद
+अभी से ११ घंटे बाद
+अभी से १२ घंटे बाद
+अभी से २० घंटे बाद
+अभी से २१ घंटे बाद
+अभी से २२ घंटे बाद
+अभी से २३ घंटे बाद
+अभी से २५ घंटे बाद
+३ मिनट पहले
+२ मिनट पहले
+१ मिनट पहले
+० मिनट
+अभी से १ मिनट बाद
+अभी से २ मिनट बाद
+अभी से ३ मिनट बाद
+अभी से ५ मिनट बाद
+अभी से १० मिनट बाद
+अभी से ११ मिनट बाद
+अभी से १२ मिनट बाद
+अभी से २० मिनट बाद
+अभी से २१ मिनट बाद
+अभी से २२ मिनट बाद
+अभी से २३ मिनट बाद
+अभी से २५ मिनट बाद
+३ सेकण्ड पहले
+२ सेकण्ड पहले
+१ सेकण्ड पहले
+० सेकण्ड
+अभी से १ सेकण्ड बाद
+अभी से २ सेकण्ड बाद
+अभी से ३ सेकण्ड बाद
+अभी से ५ सेकण्ड बाद
+अभी से १० सेकण्ड बाद
+अभी से ११ सेकण्ड बाद
+अभी से १२ सेकण्ड बाद
+अभी से २० सेकण्ड बाद
+अभी से २१ सेकण्ड बाद
+अभी से २२ सेकण्ड बाद
+अभी से २३ सेकण्ड बाद
+अभी से २५ सेकण्ड बाद
+३ मिली सेकण्ड पहले
+२ मिली सेकण्ड पहले
+१ मिली सेकण्ड पहले
+० मिली सेकण्ड
+अभी से १ मिली सेकण्ड बाद
+अभी से २ मिली सेकण्ड बाद
+अभी से ३ मिली सेकण्ड बाद
+अभी से ५ मिली सेकण्ड बाद
+अभी से १० मिली सेकण्ड बाद
+अभी से ११ मिली सेकण्ड बाद
+अभी से १२ मिली सेकण्ड बाद
+अभी से २० मिली सेकण्ड बाद
+अभी से २१ मिली सेकण्ड बाद
+अभी से २२ मिली सेकण्ड बाद
+अभी से २३ मिली सेकण्ड बाद
+अभी से २५ मिली सेकण्ड बाद
+=mediumFormTargets
+३ साल
+३ महीने
+३ सप्ताह
+३ दिन
+३ घंटे
+३ मिनट
+३ सेकण्ड
+३ मिली सेकण्ड
+=shortFormTargets
+३ साल
+३ महीने
+३ सप्ताह
+३ दिन
+३ घंटे
+३ मिनट
+३ सेकण्ड
+३ मिली सेकण्ड
+=customMinuteTargets
+५ मिनट
+१ घंटा और ५ मिनट
+१० मिनट
+१ घंटा और १० मिनट
+१५ मिनट
+१ घंटा और १५ मिनट
+२० मिनट
+१ घंटा और २० मिनट
+२५ मिनट
+१ घंटा और २५ मिनट
+३० मिनट
+१ घंटा और ३० मिनट
+३५ मिनट
+१ घंटा और ३५ मिनट
+४० मिनट
+१ घंटा और ४० मिनट
+४५ मिनट
+१ घंटा और ४५ मिनट
+५० मिनट
+१ घंटा और ५० मिनट
+५५ मिनट
+१ घंटा और ५५ मिनट
+=limitedUnitTargets
+१ महीना
+१ महीना और २ सप्ताह
+१ महीना, २ सप्ताह और ३ दिन
+१ महीना पहले
+१ महीना और २ सप्ताह पहले
+१ महीना, २ सप्ताह और ३ दिन पहले
+अभी से १ महीना बाद
+अभी से १ महीना और २ सप्ताह बाद
+अभी से १ महीना, २ सप्ताह और ३ दिन बाद
+१ महीना से कम
+१ महीना और २ सप्ताह से कम
+१ महीना, २ सप्ताह और ३ दिन से कम
+१ महीना से कम पहले
+१ महीना और २ सप्ताह से कम पहले
+१ महीना, २ सप्ताह और ३ दिन से कम पहले
+१ महीना से कम from now
+१ महीना और २ सप्ताह से कम from now
+१ महीना, २ सप्ताह और ३ दिन से कम from now
+१ महीना से ज़्यादा
+१ महीना और २ सप्ताह से ज़्यादा
+१ महीना, २ सप्ताह और ३ दिन से ज़्यादा
+१ महीना से ज़्यादा ago
+१ महीना और २ सप्ताह से ज़्यादा ago
+१ महीना, २ सप्ताह और ३ दिन से ज़्यादा ago
+१ महीना से ज़्यादा from now
+१ महीना और २ सप्ताह से ज़्यादा from now
+१ महीना, २ सप्ताह और ३ दिन से ज़्यादा from now
+१ घंटा
+१ घंटा और २ मिनट
+१ घंटा, २ मिनट और ३ सेकण्ड
+१ घंटा पहले
+१ घंटा और २ मिनट पहले
+१ घंटा, २ मिनट और ३ सेकण्ड पहले
+अभी से १ घंटा बाद
+अभी से १ घंटा और २ मिनट बाद
+अभी से १ घंटा, २ मिनट और ३ सेकण्ड बाद
+१ घंटा से कम
+१ घंटा और २ मिनट से कम
+१ घंटा, २ मिनट और ३ सेकण्ड से कम
+१ घंटा से कम पहले
+१ घंटा और २ मिनट से कम पहले
+१ घंटा, २ मिनट और ३ सेकण्ड से कम पहले
+१ घंटा से कम from now
+१ घंटा और २ मिनट से कम from now
+१ घंटा, २ मिनट और ३ सेकण्ड से कम from now
+१ घंटा से ज़्यादा
+१ घंटा और २ मिनट से ज़्यादा
+१ घंटा, २ मिनट और ३ सेकण्ड से ज़्यादा
+१ घंटा से ज़्यादा ago
+१ घंटा और २ मिनट से ज़्यादा ago
+१ घंटा, २ मिनट और ३ सेकण्ड से ज़्यादा ago
+१ घंटा से ज़्यादा from now
+१ घंटा और २ मिनट से ज़्यादा from now
+१ घंटा, २ मिनट और ३ सेकण्ड से ज़्यादा from now
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ साल
+१½ साल
+२½ साल
+५½ साल
+१०½ साल
+११½ साल
+१२½ साल
+२०½ साल
+२१½ साल
+२२½ साल
+½ महीने
+१½ महीने
+२½ महीने
+५½ महीने
+१०½ महीने
+११½ महीने
+१२½ महीने
+२०½ महीने
+२१½ महीने
+२२½ महीने
+½ सप्ताह
+१½ सप्ताह
+२½ सप्ताह
+५½ सप्ताह
+१०½ सप्ताह
+११½ सप्ताह
+१२½ सप्ताह
+२०½ सप्ताह
+२१½ सप्ताह
+२२½ सप्ताह
+½ दिन
+१½ दिन
+२½ दिन
+५½ दिन
+१०½ दिन
+११½ दिन
+१२½ दिन
+२०½ दिन
+२१½ दिन
+२२½ दिन
+½ घंटे
+१½ घंटे
+२½ घंटे
+५½ घंटे
+१०½ घंटे
+११½ घंटे
+१२½ घंटे
+२०½ घंटे
+२१½ घंटे
+२२½ घंटे
+½ मिनट
+१½ मिनट
+२½ मिनट
+५½ मिनट
+१०½ मिनट
+११½ मिनट
+१२½ मिनट
+२०½ मिनट
+२१½ मिनट
+२२½ मिनट
+½ सेकण्ड
+१½ सेकण्ड
+२½ सेकण्ड
+५½ सेकण्ड
+१०½ सेकण्ड
+११½ सेकण्ड
+१२½ सेकण्ड
+२०½ सेकण्ड
+२१½ सेकण्ड
+२२½ सेकण्ड
+½ मिली सेकण्ड
+१½ मिली सेकण्ड
+२½ मिली सेकण्ड
+५½ मिली सेकण्ड
+१०½ मिली सेकण्ड
+११½ मिली सेकण्ड
+१२½ मिली सेकण्ड
+२०½ मिली सेकण्ड
+२१½ मिली सेकण्ड
+२२½ मिली सेकण्ड
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+०.०२ साल
+१.०० साल
+१.२० साल
+२.१२ साल
+१२.०५ साल
+०.०२ महीने
+१.०० महीने
+१.२० महीने
+२.१२ महीने
+१२.०५ महीने
+०.०२ सप्ताह
+१.०० सप्ताह
+१.२० सप्ताह
+२.१२ सप्ताह
+१२.०५ सप्ताह
+०.०२ दिन
+१.०० दिन
+१.२० दिन
+२.१२ दिन
+१२.०५ दिन
+०.०२ घंटे
+१.०० घंटे
+१.२० घंटे
+२.१२ घंटे
+१२.०५ घंटे
+०.०२ मिनट
+१.०० मिनट
+१.२० मिनट
+२.१२ मिनट
+१२.०५ मिनट
+०.०२ सेकण्ड
+१.०० सेकण्ड
+१.२० सेकण्ड
+२.१२ सेकण्ड
+१२.०५ सेकण्ड
+०.०२ मिली सेकण्ड
+१.०० मिली सेकण्ड
+१.२० मिली सेकण्ड
+२.१२ मिली सेकण्ड
+१२.०५ मिली सेकण्ड
+=multipleUnitTargets
+१ साल और २ महीने
+१ साल और ३ सप्ताह
+१ साल, २ महीने और ३ सप्ताह
+१ महीना और २ सप्ताह
+१ महीना और ३ दिन
+१ महीना, २ सप्ताह और ३ दिन
+१ सप्ताह और २ दिन
+१ सप्ताह और ३ घंटे
+१ सप्ताह, २ दिन और ३ घंटे
+१ दिन और २ घंटे
+१ दिन और ३ मिनट
+१ दिन, २ घंटे और ३ मिनट
+१ घंटा और २ मिनट
+१ घंटा और ३ सेकण्ड
+१ घंटा, २ मिनट और ३ सेकण्ड
+१ मिनट और २ सेकण्ड
+१ मिनट और ३ मिली सेकण्ड
+१ मिनट, २ सेकण्ड और ३ मिली सेकण्ड
+१ सेकण्ड और २ मिली सेकण्ड
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_it.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_it.txt
new file mode 100644
index 0000000..a705acb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_it.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+tre anni fa
+due anni fa
+un anno fa
+zero anni
+fra un anno
+fra due anni
+fra tre anni
+fra cinque anni
+fra dieci anni
+fra 11 anni
+fra 12 anni
+fra 20 anni
+fra 21 anni
+fra 22 anni
+fra 23 anni
+fra 25 anni
+tre mesi fa
+due mesi fa
+un mese fa
+zero mesi
+fra un mese
+fra due mesi
+fra tre mesi
+fra cinque mesi
+fra dieci mesi
+fra 11 mesi
+fra 12 mesi
+fra 20 mesi
+fra 21 mesi
+fra 22 mesi
+fra 23 mesi
+fra 25 mesi
+tre settimane fa
+due settimane fa
+una settimana fa
+zero settimane
+fra una settimana
+fra due settimane
+fra tre settimane
+fra cinque settimane
+fra dieci settimane
+fra 11 settimane
+fra 12 settimane
+fra 20 settimane
+fra 21 settimane
+fra 22 settimane
+fra 23 settimane
+fra 25 settimane
+tre giorni fa
+due giorni fa
+un giorno fa
+zero giorni
+fra un giorno
+fra due giorni
+fra tre giorni
+fra cinque giorni
+fra dieci giorni
+fra 11 giorni
+fra 12 giorni
+fra 20 giorni
+fra 21 giorni
+fra 22 giorni
+fra 23 giorni
+fra 25 giorni
+tre ore fa
+due ore fa
+un'ora fa
+zero ore
+fra un'ora
+fra due ore
+fra tre ore
+fra cinque ore
+fra dieci ore
+fra 11 ore
+fra 12 ore
+fra 20 ore
+fra 21 ore
+fra 22 ore
+fra 23 ore
+fra 25 ore
+tre minuti fa
+due minuti fa
+un minuto fa
+zero minuti
+fra un minuto
+fra due minuti
+fra tre minuti
+fra cinque minuti
+fra dieci minuti
+fra 11 minuti
+fra 12 minuti
+fra 20 minuti
+fra 21 minuti
+fra 22 minuti
+fra 23 minuti
+fra 25 minuti
+tre secondi fa
+due secondi fa
+un secondo fa
+zero secondi
+fra un secondo
+fra due secondi
+fra tre secondi
+fra cinque secondi
+fra dieci secondi
+fra 11 secondi
+fra 12 secondi
+fra 20 secondi
+fra 21 secondi
+fra 22 secondi
+fra 23 secondi
+fra 25 secondi
+tre millisecondi fa
+due millisecondi fa
+un millisecondo fa
+zero millisecondi
+fra un millisecondo
+fra due millisecondi
+fra tre millisecondi
+fra cinque millisecondi
+fra dieci millisecondi
+fra 11 millisecondi
+fra 12 millisecondi
+fra 20 millisecondi
+fra 21 millisecondi
+fra 22 millisecondi
+fra 23 millisecondi
+fra 25 millisecondi
+=mediumFormTargets
+tre ann.
+tre mes.
+tre sett.
+tre gg.
+tre or.
+tre min.
+tre sec.
+tre msec.
+=shortFormTargets
+tre A
+tre M
+tre S
+tre G
+tre H
+tre M
+tre S
+tre msec.
+=customMinuteTargets
+cinque minuti
+un'ora e cinque minuti
+dieci minuti
+un'ora e dieci minuti
+15 minuti
+un'ora e 15 minuti
+20 minuti
+un'ora e 20 minuti
+25 minuti
+un'ora e 25 minuti
+30 minuti
+un'ora e 30 minuti
+35 minuti
+un'ora e 35 minuti
+40 minuti
+un'ora e 40 minuti
+45 minuti
+un'ora e 45 minuti
+50 minuti
+un'ora e 50 minuti
+55 minuti
+un'ora e 55 minuti
+=limitedUnitTargets
+un mese
+un mese e due settimane
+un mese, due settimane e tre giorni
+un mese fa
+un mese e due settimane fa
+un mese, due settimane e tre giorni fa
+fra un mese
+fra un mese e due settimane
+fra un mese, due settimane e tre giorni
+meno di un mese
+meno di un mese e due settimane
+meno di un mese, due settimane e tre giorni
+meno di un mese fa
+meno di un mese e due settimane fa
+meno di un mese, due settimane e tre giorni fa
+fra meno di un mese
+fra meno di un mese e due settimane
+fra meno di un mese, due settimane e tre giorni
+oltre un mese
+oltre un mese e due settimane
+oltre un mese, due settimane e tre giorni
+oltre un mese fa
+oltre un mese e due settimane fa
+oltre un mese, due settimane e tre giorni fa
+fra oltre un mese
+fra oltre un mese e due settimane
+fra oltre un mese, due settimane e tre giorni
+un'ora
+un'ora e due minuti
+un'ora, due minuti e tre secondi
+un'ora fa
+un'ora e due minuti fa
+un'ora, due minuti e tre secondi fa
+fra un'ora
+fra un'ora e due minuti
+fra un'ora, due minuti e tre secondi
+meno di un'ora
+meno di un'ora e due minuti
+meno di un'ora, due minuti e tre secondi
+meno di un'ora fa
+meno di un'ora e due minuti fa
+meno di un'ora, due minuti e tre secondi fa
+fra meno di un'ora
+fra meno di un'ora e due minuti
+fra meno di un'ora, due minuti e tre secondi
+oltre un'ora
+oltre un'ora e due minuti
+oltre un'ora, due minuti e tre secondi
+oltre un'ora fa
+oltre un'ora e due minuti fa
+oltre un'ora, due minuti e tre secondi fa
+fra oltre un'ora
+fra oltre un'ora e due minuti
+fra oltre un'ora, due minuti e tre secondi
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+mezzo  anno
+un anno e mezzo
+due anni e mezzo
+cinque anni e mezzo
+dieci anni e mezzo
+11 anni e mezzo
+12 anni e mezzo
+20 anni e mezzo
+21 anni e mezzo
+22 anni e mezzo
+mezzo  mese
+un mese e mezzo
+due mesi e mezzo
+cinque mesi e mezzo
+dieci mesi e mezzo
+11 mesi e mezzo
+12 mesi e mezzo
+20 mesi e mezzo
+21 mesi e mezzo
+22 mesi e mezzo
+mezza  settimana
+una settimana e mezza
+due settimane e mezza
+cinque settimane e mezza
+dieci settimane e mezza
+11 settimane e mezza
+12 settimane e mezza
+20 settimane e mezza
+21 settimane e mezza
+22 settimane e mezza
+mezzo  giorno
+un giorno e mezzo
+due giorni e mezzo
+cinque giorni e mezzo
+dieci giorni e mezzo
+11 giorni e mezzo
+12 giorni e mezzo
+20 giorni e mezzo
+21 giorni e mezzo
+22 giorni e mezzo
+mezz'ora
+un'ora e mezza
+due ore e mezza
+cinque ore e mezza
+dieci ore e mezza
+11 ore e mezza
+12 ore e mezza
+20 ore e mezza
+21 ore e mezza
+22 ore e mezza
+mezzo  minuto
+un minuto e mezzo
+due minuti e mezzo
+cinque minuti e mezzo
+dieci minuti e mezzo
+11 minuti e mezzo
+12 minuti e mezzo
+20 minuti e mezzo
+21 minuti e mezzo
+22 minuti e mezzo
+mezzo  secondo
+un secondo e mezzo
+due secondi e mezzo
+cinque secondi e mezzo
+dieci secondi e mezzo
+11 secondi e mezzo
+12 secondi e mezzo
+20 secondi e mezzo
+21 secondi e mezzo
+22 secondi e mezzo
+mezzo  millisecondo
+un millisecondo e mezzo
+due millisecondi e mezzo
+cinque millisecondi e mezzo
+dieci millisecondi e mezzo
+11 millisecondi e mezzo
+12 millisecondi e mezzo
+20 millisecondi e mezzo
+21 millisecondi e mezzo
+22 millisecondi e mezzo
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 anni
+1.00 anni
+1.20 anni
+2.12 anni
+12.05 anni
+0.02 mesi
+1.00 mesi
+1.20 mesi
+2.12 mesi
+12.05 mesi
+0.02 settimane
+1.00 settimane
+1.20 settimane
+2.12 settimane
+12.05 settimane
+0.02 giorni
+1.00 giorni
+1.20 giorni
+2.12 giorni
+12.05 giorni
+0.02 ore
+1.00 ore
+1.20 ore
+2.12 ore
+12.05 ore
+0.02 minuti
+1.00 minuti
+1.20 minuti
+2.12 minuti
+12.05 minuti
+0.02 secondi
+1.00 secondi
+1.20 secondi
+2.12 secondi
+12.05 secondi
+0.02 millisecondi
+1.00 millisecondi
+1.20 millisecondi
+2.12 millisecondi
+12.05 millisecondi
+=multipleUnitTargets
+un anno e due mesi
+un anno e tre settimane
+un anno, due mesi e tre settimane
+un mese e due settimane
+un mese e tre giorni
+un mese, due settimane e tre giorni
+una settimana e due giorni
+una settimana e tre ore
+una settimana, due giorni e tre ore
+un giorno e due ore
+un giorno e tre minuti
+un giorno, due ore e tre minuti
+un'ora e due minuti
+un'ora e tre secondi
+un'ora, due minuti e tre secondi
+un minuto e due secondi
+un minuto e tre millisecondi
+un minuto, due secondi e tre millisecondi
+un secondo e due millisecondi
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_ja.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ja.txt
new file mode 100644
index 0000000..ffa6d9b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ja.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3年前
+2年前
+1年前
+null
+今から1年後
+今から2年後
+今から3年後
+今から5年後
+今から10年後
+今から11年後
+今から12年後
+今から20年後
+今から21年後
+今から22年後
+今から23年後
+今から25年後
+3か月前
+2か月前
+1か月前
+null
+今から1か月後
+今から2か月後
+今から3か月後
+今から5か月後
+今から10か月後
+今から11か月後
+今から12か月後
+今から20か月後
+今から21か月後
+今から22か月後
+今から23か月後
+今から25か月後
+3週間前
+2週間前
+1週間前
+null
+今から1週間後
+今から2週間後
+今から3週間後
+今から5週間後
+今から10週間後
+今から11週間後
+今から12週間後
+今から20週間後
+今から21週間後
+今から22週間後
+今から23週間後
+今から25週間後
+3日前
+2日前
+1日前
+null
+今から1日後
+今から2日後
+今から3日後
+今から5日後
+今から10日後
+今から11日後
+今から12日後
+今から20日後
+今から21日後
+今から22日後
+今から23日後
+今から25日後
+3時間前
+2時間前
+1時間前
+null
+今から1時間後
+今から2時間後
+今から3時間後
+今から5時間後
+今から10時間後
+今から11時間後
+今から12時間後
+今から20時間後
+今から21時間後
+今から22時間後
+今から23時間後
+今から25時間後
+3分前
+2分前
+1分前
+null
+今から1分後
+今から2分後
+今から3分後
+今から5分後
+今から10分後
+今から11分後
+今から12分後
+今から20分後
+今から21分後
+今から22分後
+今から23分後
+今から25分後
+3秒前
+2秒前
+1秒前
+null
+今から1秒後
+今から2秒後
+今から3秒後
+今から5秒後
+今から10秒後
+今から11秒後
+今から12秒後
+今から20秒後
+今から21秒後
+今から22秒後
+今から23秒後
+今から25秒後
+3ミリ秒前
+2ミリ秒前
+1ミリ秒前
+null
+今から1ミリ秒後
+今から2ミリ秒後
+今から3ミリ秒後
+今から5ミリ秒後
+今から10ミリ秒後
+今から11ミリ秒後
+今から12ミリ秒後
+今から20ミリ秒後
+今から21ミリ秒後
+今から22ミリ秒後
+今から23ミリ秒後
+今から25ミリ秒後
+=mediumFormTargets
+3年
+3か月
+3週間
+3日
+3時間
+3分
+3秒
+3ミリ秒
+=shortFormTargets
+3年
+3か月
+3週間
+3日
+3時間
+3分
+3秒
+3ミリ秒
+=customMinuteTargets
+5分
+1時間5分
+10分
+1時間10分
+15分
+1時間15分
+20分
+1時間20分
+25分
+1時間25分
+30分
+1時間30分
+35分
+1時間35分
+40分
+1時間40分
+45分
+1時間45分
+50分
+1時間50分
+55分
+1時間55分
+=limitedUnitTargets
+1か月
+1か月と2週間
+1か月2週間と3日
+1か月前
+1か月と2週間前
+1か月2週間と3日前
+今から1か月後
+今から1か月と2週間後
+今から1か月2週間と3日後
+1か月以内
+1か月と2週間以内
+1か月2週間と3日以内
+過去1か月以内
+過去1か月と2週間以内
+過去1か月2週間と3日以内
+今から1か月以内
+今から1か月と2週間以内
+今から1か月2週間と3日以内
+1か月以上
+1か月と2週間以上
+1か月2週間と3日以上
+1か月以上前
+1か月と2週間以上前
+1か月2週間と3日以上前
+今から1か月以上後
+今から1か月と2週間以上後
+今から1か月2週間と3日以上後
+1時間
+1時間2分
+1時間2分3秒
+1時間前
+1時間2分前
+1時間2分3秒前
+今から1時間後
+今から1時間2分後
+今から1時間2分3秒後
+1時間以内
+1時間2分以内
+1時間2分3秒以内
+過去1時間以内
+過去1時間2分以内
+過去1時間2分3秒以内
+今から1時間以内
+今から1時間2分以内
+今から1時間2分3秒以内
+1時間以上
+1時間2分以上
+1時間2分3秒以上
+1時間以上前
+1時間2分以上前
+1時間2分3秒以上前
+今から1時間以上後
+今から1時間2分以上後
+今から1時間2分3秒以上後
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+1年半
+2年半
+5年半
+10年半
+11年半
+12年半
+20年半
+21年半
+22年半
+半か月
+1か月半
+2か月半
+5か月半
+10か月半
+11か月半
+12か月半
+20か月半
+21か月半
+22か月半
+0.5週間
+1.5週間
+2.5週間
+5.5週間
+10.5週間
+11.5週間
+12.5週間
+20.5週間
+21.5週間
+22.5週間
+半日
+1日半
+2日半
+5日半
+10日半
+11日半
+12日半
+20日半
+21日半
+22日半
+半時間
+1時間半
+2時間半
+5時間半
+10時間半
+11時間半
+12時間半
+20時間半
+21時間半
+22時間半
+0.5分
+1分半
+2分半
+5分半
+10分半
+11分半
+12分半
+20分半
+21分半
+22分半
+半秒
+1秒半
+2秒半
+5秒半
+10秒半
+11秒半
+12秒半
+20秒半
+21秒半
+22秒半
+0.5ミリ秒
+1.5ミリ秒
+2.5ミリ秒
+5.5ミリ秒
+10.5ミリ秒
+11.5ミリ秒
+12.5ミリ秒
+20.5ミリ秒
+21.5ミリ秒
+22.5ミリ秒
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02か月
+1.00か月
+1.20か月
+2.12か月
+12.05か月
+0.02週間
+1.00週間
+1.20週間
+2.12週間
+12.05週間
+0.02日
+1.00日
+1.20日
+2.12日
+12.05日
+0.02時間
+1.00時間
+1.20時間
+2.12時間
+12.05時間
+0.02分
+1.00分
+1.20分
+2.12分
+12.05分
+0.02秒
+1.00秒
+1.20秒
+2.12秒
+12.05秒
+0.02ミリ秒
+1.00ミリ秒
+1.20ミリ秒
+2.12ミリ秒
+12.05ミリ秒
+=multipleUnitTargets
+1年2か月
+1年と3週間
+1年2か月と3週間
+1か月と2週間
+1か月と3日
+1か月2週間と3日
+1週間と2日
+1週間と3時間
+1週間と2日3時間
+1日2時間
+1日と3分
+1日2時間3分
+1時間2分
+1時間と3秒
+1時間2分3秒
+1分2秒
+1分と3ミリ秒
+1分2.003秒
+1.002秒
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_ko.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ko.txt
new file mode 100644
index 0000000..6831459
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ko.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3년전
+2년전
+1년전
+0년
+지금부터1년
+지금부터2년
+지금부터3년
+지금부터5년
+지금부터10년
+지금부터11년
+지금부터12년
+지금부터20년
+지금부터21년
+지금부터22년
+지금부터23년
+지금부터25년
+3개월전
+2개월전
+1개월전
+0개월
+지금부터1개월
+지금부터2개월
+지금부터3개월
+지금부터5개월
+지금부터10개월
+지금부터11개월
+지금부터12개월
+지금부터20개월
+지금부터21개월
+지금부터22개월
+지금부터23개월
+지금부터25개월
+3주전
+2주전
+1주전
+0주
+지금부터1주
+지금부터2주
+지금부터3주
+지금부터5주
+지금부터10주
+지금부터11주
+지금부터12주
+지금부터20주
+지금부터21주
+지금부터22주
+지금부터23주
+지금부터25주
+3일전
+2일전
+1일전
+0일
+지금부터1일
+지금부터2일
+지금부터3일
+지금부터5일
+지금부터10일
+지금부터11일
+지금부터12일
+지금부터20일
+지금부터21일
+지금부터22일
+지금부터23일
+지금부터25일
+3시간전
+2시간전
+1시간전
+0시간
+지금부터1시간
+지금부터2시간
+지금부터3시간
+지금부터5시간
+지금부터10시간
+지금부터11시간
+지금부터12시간
+지금부터20시간
+지금부터21시간
+지금부터22시간
+지금부터23시간
+지금부터25시간
+3분전
+2분전
+1분전
+0분
+지금부터1분
+지금부터2분
+지금부터3분
+지금부터5분
+지금부터10분
+지금부터11분
+지금부터12분
+지금부터20분
+지금부터21분
+지금부터22분
+지금부터23분
+지금부터25분
+3초전
+2초전
+1초전
+0초
+지금부터1초
+지금부터2초
+지금부터3초
+지금부터5초
+지금부터10초
+지금부터11초
+지금부터12초
+지금부터20초
+지금부터21초
+지금부터22초
+지금부터23초
+지금부터25초
+3밀리세컨드전
+2밀리세컨드전
+1밀리세컨드전
+0밀리세컨드
+지금부터1밀리세컨드
+지금부터2밀리세컨드
+지금부터3밀리세컨드
+지금부터5밀리세컨드
+지금부터10밀리세컨드
+지금부터11밀리세컨드
+지금부터12밀리세컨드
+지금부터20밀리세컨드
+지금부터21밀리세컨드
+지금부터22밀리세컨드
+지금부터23밀리세컨드
+지금부터25밀리세컨드
+=mediumFormTargets
+3년
+3개월
+3주
+3일
+3시간
+3분
+3초
+3밀리세컨드
+=shortFormTargets
+3년
+3개월
+3주
+3일
+3시간
+3분
+3초
+3밀리세컨드
+=customMinuteTargets
+5분
+1시간 5분
+10분
+1시간 10분
+15분
+1시간 15분
+20분
+1시간 20분
+25분
+1시간 25분
+30분
+1시간 30분
+35분
+1시간 35분
+40분
+1시간 40분
+45분
+1시간 45분
+50분
+1시간 50분
+55분
+1시간 55분
+=limitedUnitTargets
+1개월
+1개월 2주
+1개월 2주 3일
+1개월전
+1개월 2주전
+1개월 2주 3일전
+지금부터1개월
+지금부터1개월 2주
+지금부터1개월 2주 3일
+1개월
+1개월 2주
+1개월 2주 3일
+1개월전
+1개월 2주전
+1개월 2주 3일전
+지금부터1개월
+지금부터1개월 2주
+지금부터1개월 2주 3일
+1개월
+1개월 2주
+1개월 2주 3일
+1개월전
+1개월 2주전
+1개월 2주 3일전
+지금부터1개월
+지금부터1개월 2주
+지금부터1개월 2주 3일
+1시간
+1시간 2분
+1시간 2분 3초
+1시간전
+1시간 2분전
+1시간 2분 3초전
+지금부터1시간
+지금부터1시간 2분
+지금부터1시간 2분 3초
+1시간
+1시간 2분
+1시간 2분 3초
+1시간전
+1시간 2분전
+1시간 2분 3초전
+지금부터1시간
+지금부터1시간 2분
+지금부터1시간 2분 3초
+1시간
+1시간 2분
+1시간 2분 3초
+1시간전
+1시간 2분전
+1시간 2분 3초전
+지금부터1시간
+지금부터1시간 2분
+지금부터1시간 2분 3초
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½년
+1½년
+2½년
+5½년
+10½년
+11½년
+12½년
+20½년
+21½년
+22½년
+½개월
+1½개월
+2½개월
+5½개월
+10½개월
+11½개월
+12½개월
+20½개월
+21½개월
+22½개월
+½주
+1½주
+2½주
+5½주
+10½주
+11½주
+12½주
+20½주
+21½주
+22½주
+½일
+1½일
+2½일
+5½일
+10½일
+11½일
+12½일
+20½일
+21½일
+22½일
+½시간
+1½시간
+2½시간
+5½시간
+10½시간
+11½시간
+12½시간
+20½시간
+21½시간
+22½시간
+½분
+1½분
+2½분
+5½분
+10½분
+11½분
+12½분
+20½분
+21½분
+22½분
+½초
+1½초
+2½초
+5½초
+10½초
+11½초
+12½초
+20½초
+21½초
+22½초
+½밀리세컨드
+1½밀리세컨드
+2½밀리세컨드
+5½밀리세컨드
+10½밀리세컨드
+11½밀리세컨드
+12½밀리세컨드
+20½밀리세컨드
+21½밀리세컨드
+22½밀리세컨드
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02년
+1.00년
+1.20년
+2.12년
+12.05년
+0.02개월
+1.00개월
+1.20개월
+2.12개월
+12.05개월
+0.02주
+1.00주
+1.20주
+2.12주
+12.05주
+0.02일
+1.00일
+1.20일
+2.12일
+12.05일
+0.02시간
+1.00시간
+1.20시간
+2.12시간
+12.05시간
+0.02분
+1.00분
+1.20분
+2.12분
+12.05분
+0.02초
+1.00초
+1.20초
+2.12초
+12.05초
+0.02밀리세컨드
+1.00밀리세컨드
+1.20밀리세컨드
+2.12밀리세컨드
+12.05밀리세컨드
+=multipleUnitTargets
+1년 2개월
+1년 3주
+1년 2개월 3주
+1개월 2주
+1개월 3일
+1개월 2주 3일
+1주 2일
+1주 3시간
+1주 2일 3시간
+1일 2시간
+1일 3분
+1일 2시간 3분
+1시간 2분
+1시간 3초
+1시간 2분 3초
+1분 2초
+1분 3밀리세컨드
+1분 2초 3밀리세컨드
+1초 2밀리세컨드
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_ru.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ru.txt
new file mode 100644
index 0000000..28aeb7f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_ru.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3 года назад
+2 года назад
+1 год назад
+0 лет
+через 1 год
+через 2 года
+через 3 года
+через 5 лет
+через 10 лет
+через 11 лет
+через 12 лет
+через 20 лет
+через 21 год
+через 22 года
+через 23 года
+через 25 лет
+3 месяца назад
+2 месяца назад
+1 месяц назад
+0 месяцев
+через 1 месяц
+через 2 месяца
+через 3 месяца
+через 5 месяцев
+через 10 месяцев
+через 11 месяцев
+через 12 месяцев
+через 20 месяцев
+через 21 месяц
+через 22 месяца
+через 23 месяца
+через 25 месяцев
+3 недели назад
+2 недели назад
+1 неделя назад
+0 недель
+через 1 неделя
+через 2 недели
+через 3 недели
+через 5 недель
+через 10 недель
+через 11 недель
+через 12 недель
+через 20 недель
+через 21 неделя
+через 22 недели
+через 23 недели
+через 25 недель
+3 дня назад
+2 дня назад
+1 день назад
+0 дней
+через 1 день
+через 2 дня
+через 3 дня
+через 5 дней
+через 10 дней
+через 11 дней
+через 12 дней
+через 20 дней
+через 21 день
+через 22 дня
+через 23 дня
+через 25 дней
+3 часа назад
+2 часа назад
+1 час назад
+0 часов
+через 1 час
+через 2 часа
+через 3 часа
+через 5 часов
+через 10 часов
+через 11 часов
+через 12 часов
+через 20 часов
+через 21 час
+через 22 часа
+через 23 часа
+через 25 часов
+3 минуты назад
+2 минуты назад
+1 минута назад
+0 минут
+через 1 минута
+через 2 минуты
+через 3 минуты
+через 5 минут
+через 10 минут
+через 11 минут
+через 12 минут
+через 20 минут
+через 21 минута
+через 22 минуты
+через 23 минуты
+через 25 минут
+3 секунды назад
+2 секунды назад
+1 секунда назад
+0 секунд
+через 1 секунда
+через 2 секунды
+через 3 секунды
+через 5 секунд
+через 10 секунд
+через 11 секунд
+через 12 секунд
+через 20 секунд
+через 21 секунда
+через 22 секунды
+через 23 секунды
+через 25 секунд
+3 миллисекунды назад
+2 миллисекунды назад
+1 миллисекунда назад
+0 миллисекунд
+через 1 миллисекунда
+через 2 миллисекунды
+через 3 миллисекунды
+через 5 миллисекунд
+через 10 миллисекунд
+через 11 миллисекунд
+через 12 миллисекунд
+через 20 миллисекунд
+через 21 миллисекунда
+через 22 миллисекунды
+через 23 миллисекунды
+через 25 миллисекунд
+=mediumFormTargets
+3 г
+3 мес
+3 нед
+3 дн
+3 ч
+3 мин
+3 с
+3 мс
+=shortFormTargets
+3 г
+3 m
+3 н
+3 д
+3 ч
+3 м
+3 с
+3 x
+=customMinuteTargets
+5 минут
+1 час и 5 минут
+10 минут
+1 час и 10 минут
+15 минут
+1 час и 15 минут
+20 минут
+1 час и 20 минут
+25 минут
+1 час и 25 минут
+30 минут
+1 час и 30 минут
+35 минут
+1 час и 35 минут
+40 минут
+1 час и 40 минут
+45 минут
+1 час и 45 минут
+50 минут
+1 час и 50 минут
+55 минут
+1 час и 55 минут
+=limitedUnitTargets
+1 месяц
+1 месяц и 2 недели
+1 месяц, 2 недели и 3 дня
+1 месяц назад
+1 месяц и 2 недели назад
+1 месяц, 2 недели и 3 дня назад
+через 1 месяц
+через 1 месяц и 2 недели
+через 1 месяц, 2 недели и 3 дня
+меньше, чем 1 месяц
+меньше, чем 1 месяц и 2 недели
+меньше, чем 1 месяц, 2 недели и 3 дня
+меньше, чем 1 месяц назад
+меньше, чем 1 месяц и 2 недели назад
+меньше, чем 1 месяц, 2 недели и 3 дня назад
+через 1 месяц
+через 1 месяц и 2 недели
+через 1 месяц, 2 недели и 3 дня
+больше, чем 1 месяц
+больше, чем 1 месяц и 2 недели
+больше, чем 1 месяц, 2 недели и 3 дня
+больше, чем 1 месяц назад
+больше, чем 1 месяц и 2 недели назад
+больше, чем 1 месяц, 2 недели и 3 дня назад
+через 1 месяц
+через 1 месяц и 2 недели
+через 1 месяц, 2 недели и 3 дня
+1 час
+1 час и 2 минуты
+1 час, 2 минуты и 3 секунды
+1 час назад
+1 час и 2 минуты назад
+1 час, 2 минуты и 3 секунды назад
+через 1 час
+через 1 час и 2 минуты
+через 1 час, 2 минуты и 3 секунды
+меньше, чем 1 час
+меньше, чем 1 час и 2 минуты
+меньше, чем 1 час, 2 минуты и 3 секунды
+меньше, чем 1 час назад
+меньше, чем 1 час и 2 минуты назад
+меньше, чем 1 час, 2 минуты и 3 секунды назад
+через 1 час
+через 1 час и 2 минуты
+через 1 час, 2 минуты и 3 секунды
+больше, чем 1 час
+больше, чем 1 час и 2 минуты
+больше, чем 1 час, 2 минуты и 3 секунды
+больше, чем 1 час назад
+больше, чем 1 час и 2 минуты назад
+больше, чем 1 час, 2 минуты и 3 секунды назад
+через 1 час
+через 1 час и 2 минуты
+через 1 час, 2 минуты и 3 секунды
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+½ года
+1½ года
+2½ года
+5½ лет
+10½ лет
+11½ лет
+12½ лет
+20½ лет
+21½ год
+22½ года
+½ месяца
+1½ месяца
+2½ месяца
+5½ месяцев
+10½ месяцев
+11½ месяцев
+12½ месяцев
+20½ месяцев
+21½ месяц
+22½ месяца
+½ недели
+1½ недели
+2½ недели
+5½ недель
+10½ недель
+11½ недель
+12½ недель
+20½ недель
+21½ неделя
+22½ недели
+½ дня
+1½ дня
+2½ дня
+5½ дней
+10½ дней
+11½ дней
+12½ дней
+20½ дней
+21½ день
+22½ дня
+½ часа
+1½ часа
+2½ часа
+5½ часов
+10½ часов
+11½ часов
+12½ часов
+20½ часов
+21½ час
+22½ часа
+½ минуты
+1½ минуты
+2½ минуты
+5½ минут
+10½ минут
+11½ минут
+12½ минут
+20½ минут
+21½ минута
+22½ минуты
+½ секунды
+1½ секунды
+2½ секунды
+5½ секунд
+10½ секунд
+11½ секунд
+12½ секунд
+20½ секунд
+21½ секунда
+22½ секунды
+½ миллисекунды
+1½ миллисекунды
+2½ миллисекунды
+5½ миллисекунд
+10½ миллисекунд
+11½ миллисекунд
+12½ миллисекунд
+20½ миллисекунд
+21½ миллисекунда
+22½ миллисекунды
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 года
+1.00 года
+1.20 года
+2.12 года
+12.05 года
+0.02 месяца
+1.00 месяца
+1.20 месяца
+2.12 месяца
+12.05 месяца
+0.02 недели
+1.00 недели
+1.20 недели
+2.12 недели
+12.05 недели
+0.02 дня
+1.00 дня
+1.20 дня
+2.12 дня
+12.05 дня
+0.02 часа
+1.00 часа
+1.20 часа
+2.12 часа
+12.05 часа
+0.02 минуты
+1.00 минуты
+1.20 минуты
+2.12 минуты
+12.05 минуты
+0.02 секунды
+1.00 секунды
+1.20 секунды
+2.12 секунды
+12.05 секунды
+0.02 миллисекунды
+1.00 миллисекунды
+1.20 миллисекунды
+2.12 миллисекунды
+12.05 миллисекунды
+=multipleUnitTargets
+1 год и 2 месяца
+1 год и 3 недели
+1 год, 2 месяца и 3 недели
+1 месяц и 2 недели
+1 месяц и 3 дня
+1 месяц, 2 недели и 3 дня
+1 неделя и 2 дня
+1 неделя и 3 часа
+1 неделя, 2 дня и 3 часа
+1 день и 2 часа
+1 день и 3 минуты
+1 день, 2 часа и 3 минуты
+1 час и 2 минуты
+1 час и 3 секунды
+1 час, 2 минуты и 3 секунды
+1 минута и 2 секунды
+1 минута и 3 миллисекунды
+1 минута, 2 секунды и 3 миллисекунды
+1 секунда и 2 миллисекунды
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_th.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_th.txt
new file mode 100644
index 0000000..50a81fe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_th.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3 ปีที่แล้ว
+2 ปีที่แล้ว
+1 ปีที่แล้ว
+0 ปี
+อีก 1 ปี
+อีก 2 ปี
+อีก 3 ปี
+อีก 5 ปี
+อีก 10 ปี
+อีก 11 ปี
+อีก 12 ปี
+อีก 20 ปี
+อีก 21 ปี
+อีก 22 ปี
+อีก 23 ปี
+อีก 25 ปี
+3 เดือนที่แล้ว
+2 เดือนที่แล้ว
+1 เดือนที่แล้ว
+0 เดือน
+อีก 1 เดือน
+อีก 2 เดือน
+อีก 3 เดือน
+อีก 5 เดือน
+อีก 10 เดือน
+อีก 11 เดือน
+อีก 12 เดือน
+อีก 20 เดือน
+อีก 21 เดือน
+อีก 22 เดือน
+อีก 23 เดือน
+อีก 25 เดือน
+3 อาทิตย์ที่แล้ว
+2 อาทิตย์ที่แล้ว
+1 อาทิตย์ที่แล้ว
+0 อาทิตย์
+อีก 1 อาทิตย์
+อีก 2 อาทิตย์
+อีก 3 อาทิตย์
+อีก 5 อาทิตย์
+อีก 10 อาทิตย์
+อีก 11 อาทิตย์
+อีก 12 อาทิตย์
+อีก 20 อาทิตย์
+อีก 21 อาทิตย์
+อีก 22 อาทิตย์
+อีก 23 อาทิตย์
+อีก 25 อาทิตย์
+3 วันที่แล้ว
+2 วันที่แล้ว
+1 วันที่แล้ว
+0 วัน
+อีก 1 วัน
+อีก 2 วัน
+อีก 3 วัน
+อีก 5 วัน
+อีก 10 วัน
+อีก 11 วัน
+อีก 12 วัน
+อีก 20 วัน
+อีก 21 วัน
+อีก 22 วัน
+อีก 23 วัน
+อีก 25 วัน
+3 ชั่วโมงที่แล้ว
+2 ชั่วโมงที่แล้ว
+1 ชั่วโมงที่แล้ว
+0 ชั่วโมง
+อีก 1 ชั่วโมง
+อีก 2 ชั่วโมง
+อีก 3 ชั่วโมง
+อีก 5 ชั่วโมง
+อีก 10 ชั่วโมง
+อีก 11 ชั่วโมง
+อีก 12 ชั่วโมง
+อีก 20 ชั่วโมง
+อีก 21 ชั่วโมง
+อีก 22 ชั่วโมง
+อีก 23 ชั่วโมง
+อีก 25 ชั่วโมง
+3 นาทีที่แล้ว
+2 นาทีที่แล้ว
+1 นาทีที่แล้ว
+0 นาที
+อีก 1 นาที
+อีก 2 นาที
+อีก 3 นาที
+อีก 5 นาที
+อีก 10 นาที
+อีก 11 นาที
+อีก 12 นาที
+อีก 20 นาที
+อีก 21 นาที
+อีก 22 นาที
+อีก 23 นาที
+อีก 25 นาที
+3 วินาทีที่แล้ว
+2 วินาทีที่แล้ว
+1 วินาทีที่แล้ว
+0 วินาที
+อีก 1 วินาที
+อีก 2 วินาที
+อีก 3 วินาที
+อีก 5 วินาที
+อีก 10 วินาที
+อีก 11 วินาที
+อีก 12 วินาที
+อีก 20 วินาที
+อีก 21 วินาที
+อีก 22 วินาที
+อีก 23 วินาที
+อีก 25 วินาที
+0.003 วินาทีที่แล้ว
+0.002 วินาทีที่แล้ว
+0.001 วินาทีที่แล้ว
+0.000 วินาที
+อีก 0.001 วินาที
+อีก 0.002 วินาที
+อีก 0.003 วินาที
+อีก 0.005 วินาที
+อีก 0.010 วินาที
+อีก 0.011 วินาที
+อีก 0.012 วินาที
+อีก 0.020 วินาที
+อีก 0.021 วินาที
+อีก 0.022 วินาที
+อีก 0.023 วินาที
+อีก 0.025 วินาที
+=mediumFormTargets
+3 ปี
+3 เดือน
+3 อาทิตย์
+3 วัน
+3 ชม.
+3 นาที
+3 วินาที
+0.003 วินาที
+=shortFormTargets
+3 ปี
+3 เดือน
+3 อาทิตย์
+3 วัน
+3 ชม.
+3 นาที
+3 วินาที
+0.003 วินาที
+=customMinuteTargets
+5 นาที
+1 ชั่วโมง 5 นาที
+10 นาที
+1 ชั่วโมง 10 นาที
+15 นาที
+1 ชั่วโมง 15 นาที
+20 นาที
+1 ชั่วโมง 20 นาที
+25 นาที
+1 ชั่วโมง 25 นาที
+30 นาที
+1 ชั่วโมง 30 นาที
+35 นาที
+1 ชั่วโมง 35 นาที
+40 นาที
+1 ชั่วโมง 40 นาที
+45 นาที
+1 ชั่วโมง 45 นาที
+50 นาที
+1 ชั่วโมง 50 นาที
+55 นาที
+1 ชั่วโมง 55 นาที
+=limitedUnitTargets
+1 เดือน
+1 เดือน 2 อาทิตย์
+1 เดือน 2 อาทิตย์ 3 วัน
+1 เดือนที่แล้ว
+1 เดือน 2 อาทิตย์ที่แล้ว
+1 เดือน 2 อาทิตย์ 3 วันที่แล้ว
+อีก 1 เดือน
+อีก 1 เดือน 2 อาทิตย์
+อีก 1 เดือน 2 อาทิตย์ 3 วัน
+น้อยกว่า 1 เดือน
+น้อยกว่า 1 เดือน 2 อาทิตย์
+น้อยกว่า 1 เดือน 2 อาทิตย์ 3 วัน
+น้อยกว่า 1 เดือนที่แล้ว
+น้อยกว่า 1 เดือน 2 อาทิตย์ที่แล้ว
+น้อยกว่า 1 เดือน 2 อาทิตย์ 3 วันที่แล้ว
+ไม่ถึงอีก 1 เดือน
+ไม่ถึงอีก 1 เดือน 2 อาทิตย์
+ไม่ถึงอีก 1 เดือน 2 อาทิตย์ 3 วัน
+มากกว่า 1 เดือน
+มากกว่า 1 เดือน 2 อาทิตย์
+มากกว่า 1 เดือน 2 อาทิตย์ 3 วัน
+มากกว่า 1 เดือนที่แล้ว
+มากกว่า 1 เดือน 2 อาทิตย์ที่แล้ว
+มากกว่า 1 เดือน 2 อาทิตย์ 3 วันที่แล้ว
+อีัก 1 เดือนกว่าๆ
+อีัก 1 เดือน 2 อาทิตย์กว่าๆ
+อีัก 1 เดือน 2 อาทิตย์ 3 วันกว่าๆ
+1 ชั่วโมง
+1 ชั่วโมง 2 นาที
+1 ชั่วโมง 2 นาที 3 วินาที
+1 ชั่วโมงที่แล้ว
+1 ชั่วโมง 2 นาทีที่แล้ว
+1 ชั่วโมง 2 นาที 3 วินาทีที่แล้ว
+อีก 1 ชั่วโมง
+อีก 1 ชั่วโมง 2 นาที
+อีก 1 ชั่วโมง 2 นาที 3 วินาที
+น้อยกว่า 1 ชั่วโมง
+น้อยกว่า 1 ชั่วโมง 2 นาที
+น้อยกว่า 1 ชั่วโมง 2 นาที 3 วินาที
+น้อยกว่า 1 ชั่วโมงที่แล้ว
+น้อยกว่า 1 ชั่วโมง 2 นาทีที่แล้ว
+น้อยกว่า 1 ชั่วโมง 2 นาที 3 วินาทีที่แล้ว
+ไม่ถึงอีก 1 ชั่วโมง
+ไม่ถึงอีก 1 ชั่วโมง 2 นาที
+ไม่ถึงอีก 1 ชั่วโมง 2 นาที 3 วินาที
+มากกว่า 1 ชั่วโมง
+มากกว่า 1 ชั่วโมง 2 นาที
+มากกว่า 1 ชั่วโมง 2 นาที 3 วินาที
+มากกว่า 1 ชั่วโมงที่แล้ว
+มากกว่า 1 ชั่วโมง 2 นาทีที่แล้ว
+มากกว่า 1 ชั่วโมง 2 นาที 3 วินาทีที่แล้ว
+อีัก 1 ชั่วโมงกว่าๆ
+อีัก 1 ชั่วโมง 2 นาทีกว่าๆ
+อีัก 1 ชั่วโมง 2 นาที 3 วินาทีกว่าๆ
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+ครึ่งปี
+1 ปีครึ่ง
+2 ปีครึ่ง
+5 ปีครึ่ง
+10 ปีครึ่ง
+11 ปีครึ่ง
+12 ปีครึ่ง
+20 ปีครึ่ง
+21 ปีครึ่ง
+22 ปีครึ่ง
+ครึ่งเดือน
+1 เดือนครึ่ง
+2 เดือนครึ่ง
+5 เดือนครึ่ง
+10 เดือนครึ่ง
+11 เดือนครึ่ง
+12 เดือนครึ่ง
+20 เดือนครึ่ง
+21 เดือนครึ่ง
+22 เดือนครึ่ง
+ครึ่งอาทิตย์
+1 อาทิตย์ครึ่ง
+2 อาทิตย์ครึ่ง
+5 อาทิตย์ครึ่ง
+10 อาทิตย์ครึ่ง
+11 อาทิตย์ครึ่ง
+12 อาทิตย์ครึ่ง
+20 อาทิตย์ครึ่ง
+21 อาทิตย์ครึ่ง
+22 อาทิตย์ครึ่ง
+ครึ่งวัน
+1 วันครึ่ง
+2 วันครึ่ง
+5 วันครึ่ง
+10 วันครึ่ง
+11 วันครึ่ง
+12 วันครึ่ง
+20 วันครึ่ง
+21 วันครึ่ง
+22 วันครึ่ง
+ครึ่งชั่วโมง
+1 ชั่วโมงครึ่ง
+2 ชั่วโมงครึ่ง
+5 ชั่วโมงครึ่ง
+10 ชั่วโมงครึ่ง
+11 ชั่วโมงครึ่ง
+12 ชั่วโมงครึ่ง
+20 ชั่วโมงครึ่ง
+21 ชั่วโมงครึ่ง
+22 ชั่วโมงครึ่ง
+ครึ่งนาที
+1 นาทีครึ่ง
+2 นาทีครึ่ง
+5 นาทีครึ่ง
+10 นาทีครึ่ง
+11 นาทีครึ่ง
+12 นาทีครึ่ง
+20 นาทีครึ่ง
+21 นาทีครึ่ง
+22 นาทีครึ่ง
+0.5 วินาที
+1.5 วินาที
+2.5 วินาที
+5.5 วินาที
+10.5 วินาที
+11.5 วินาที
+12.5 วินาที
+20.5 วินาที
+21.5 วินาที
+22.5 วินาที
+0.000 วินาที
+0.001 วินาที
+0.002 วินาที
+0.005 วินาที
+0.010 วินาที
+0.011 วินาที
+0.012 วินาที
+0.020 วินาที
+0.021 วินาที
+0.022 วินาที
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02 ปี
+1.00 ปี
+1.20 ปี
+2.12 ปี
+12.05 ปี
+0.02 เดือน
+1.00 เดือน
+1.20 เดือน
+2.12 เดือน
+12.05 เดือน
+0.02 อาทิตย์
+1.00 อาทิตย์
+1.20 อาทิตย์
+2.12 อาทิตย์
+12.05 อาทิตย์
+0.02 วัน
+1.00 วัน
+1.20 วัน
+2.12 วัน
+12.05 วัน
+0.02 ชั่วโมง
+1.00 ชั่วโมง
+1.20 ชั่วโมง
+2.12 ชั่วโมง
+12.05 ชั่วโมง
+0.02 นาที
+1.00 นาที
+1.20 นาที
+2.12 นาที
+12.05 นาที
+0.02 วินาที
+1.00 วินาที
+1.20 วินาที
+2.12 วินาที
+12.05 วินาที
+0.000 วินาที
+0.001 วินาที
+0.001 วินาที
+0.002 วินาที
+0.012 วินาที
+=multipleUnitTargets
+1 ปี 2 เดือน
+1 ปี 3 อาทิตย์
+1 ปี 2 เดือน 3 อาทิตย์
+1 เดือน 2 อาทิตย์
+1 เดือน 3 วัน
+1 เดือน 2 อาทิตย์ 3 วัน
+1 อาทิตย์ 2 วัน
+1 อาทิตย์ 3 ชั่วโมง
+1 อาทิตย์ 2 วัน 3 ชั่วโมง
+1 วัน 2 ชั่วโมง
+1 วัน 3 นาที
+1 วัน 2 ชั่วโมง 3 นาที
+1 ชั่วโมง 2 นาที
+1 ชั่วโมง 3 วินาที
+1 ชั่วโมง 2 นาที 3 วินาที
+1 นาที 2 วินาที
+1 นาที 0.003 วินาที
+1 นาที 2.003 วินาที
+1.002 วินาที
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans.txt
new file mode 100644
index 0000000..fa5e422
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+三年以前
+两年以前
+一年以前
+零年
+一年以后
+两年以后
+三年以后
+五年以后
+十年以后
+十一年以后
+十二年以后
+二十年以后
+二十一年以后
+二十二年以后
+二十三年以后
+二十五年以后
+三个月以前
+两个月以前
+一个月以前
+零个月
+一个月以后
+两个月以后
+三个月以后
+五个月以后
+十个月以后
+十一个月以后
+十二个月以后
+二十个月以后
+二十一个月以后
+二十二个月以后
+二十三个月以后
+二十五个月以后
+三周以前
+两周以前
+一周以前
+零周
+一周以后
+两周以后
+三周以后
+五周以后
+十周以后
+十一周以后
+十二周以后
+二十周以后
+二十一周以后
+二十二周以后
+二十三周以后
+二十五周以后
+三天以前
+两天以前
+一天以前
+零天
+一天以后
+两天以后
+三天以后
+五天以后
+十天以后
+十一天以后
+十二天以后
+二十天以后
+二十一天以后
+二十二天以后
+二十三天以后
+二十五天以后
+三个小时以前
+两个小时以前
+一个小时以前
+零个小时
+一个小时以后
+两个小时以后
+三个小时以后
+五个小时以后
+十个小时以后
+十一个小时以后
+十二个小时以后
+二十个小时以后
+二十一个小时以后
+二十二个小时以后
+二十三个小时以后
+二十五个小时以后
+三分钟以前
+两分钟以前
+一分钟以前
+零分钟
+一分钟以后
+两分钟以后
+三分钟以后
+五分钟以后
+十分钟以后
+十一分钟以后
+十二分钟以后
+二十分钟以后
+二十一分钟以后
+二十二分钟以后
+二十三分钟以后
+二十五分钟以后
+三秒钟以前
+两秒钟以前
+一秒钟以前
+零秒钟
+一秒钟以后
+两秒钟以后
+三秒钟以后
+五秒钟以后
+十秒钟以后
+十一秒钟以后
+十二秒钟以后
+二十秒钟以后
+二十一秒钟以后
+二十二秒钟以后
+二十三秒钟以后
+二十五秒钟以后
+三毫秒以前
+两毫秒以前
+一毫秒以前
+零毫秒
+一毫秒以后
+两毫秒以后
+三毫秒以后
+五毫秒以后
+十毫秒以后
+十一毫秒以后
+十二毫秒以后
+二十毫秒以后
+二十一毫秒以后
+二十二毫秒以后
+二十三毫秒以后
+二十五毫秒以后
+=mediumFormTargets
+三年
+三个月
+三周
+三天
+三个小时
+三分钟
+三秒钟
+三毫秒
+=shortFormTargets
+三年
+三个月
+三周
+三天
+三个小时
+三分钟
+三秒钟
+三毫秒
+=customMinuteTargets
+五分钟
+一个小时五分钟
+十分钟
+一个小时十分钟
+一刻钟
+一个小时一刻钟
+二十分钟
+一个小时二十分钟
+二十五分钟
+一个小时二十五分钟
+三十分钟
+一个小时三十分钟
+三十五分钟
+一个小时三十五分钟
+四十分钟
+一个小时四十分钟
+三刻钟
+一个小时三刻钟
+五十分钟
+一个小时五十分钟
+五十五分钟
+一个小时五十五分钟
+=limitedUnitTargets
+一个月
+一个月两周
+一个月两周三天
+一个月以前
+一个月两周以前
+一个月两周三天以前
+一个月以后
+一个月两周以后
+一个月两周三天以后
+不到一个月
+不到一个月两周
+不到一个月两周三天
+不到一个月以前
+不到一个月两周以前
+不到一个月两周三天以前
+不到一个月以后
+不到一个月两周以后
+不到一个月两周三天以后
+超过一个月
+超过一个月两周
+超过一个月两周三天
+超过一个月以前
+超过一个月两周以前
+超过一个月两周三天以前
+超过一个月以后
+超过一个月两周以后
+超过一个月两周三天以后
+一个小时
+一个小时两分钟
+一个小时两分三秒钟
+一个小时以前
+一个小时两分钟以前
+一个小时两分三秒钟以前
+一个小时以后
+一个小时两分钟以后
+一个小时两分三秒钟以后
+不到一个小时
+不到一个小时两分钟
+不到一个小时两分三秒钟
+不到一个小时以前
+不到一个小时两分钟以前
+不到一个小时两分三秒钟以前
+不到一个小时以后
+不到一个小时两分钟以后
+不到一个小时两分三秒钟以后
+超过一个小时
+超过一个小时两分钟
+超过一个小时两分三秒钟
+超过一个小时以前
+超过一个小时两分钟以前
+超过一个小时两分三秒钟以前
+超过一个小时以后
+超过一个小时两分钟以后
+超过一个小时两分三秒钟以后
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+一年半
+两年半
+五年半
+十年半
+十一年半
+十二年半
+二十年半
+二十一年半
+二十二年半
+半个月
+一个半月
+两个半月
+五个半月
+十个半月
+十一个半月
+十二个半月
+二十个半月
+二十一个半月
+二十二个半月
+半周
+一周半
+两周半
+五周半
+十周半
+十一周半
+十二周半
+二十周半
+二十一周半
+二十二周半
+半天
+一天半
+两天半
+五天半
+十天半
+十一天半
+十二天半
+二十天半
+二十一天半
+二十二天半
+半个小时
+一个半小时
+两个半小时
+五个半小时
+十个半小时
+十一个半小时
+十二个半小时
+二十个半小时
+二十一个半小时
+二十二个半小时
+半分钟
+一分半钟
+两分半钟
+五分半钟
+十分半钟
+十一分半钟
+十二分半钟
+二十分半钟
+二十一分半钟
+二十二分半钟
+半秒钟
+一秒半钟
+两秒半钟
+五秒半钟
+十秒半钟
+十一秒半钟
+十二秒半钟
+二十秒半钟
+二十一秒半钟
+二十二秒半钟
+半毫秒
+一毫秒半
+两毫秒半
+五毫秒半
+十毫秒半
+十一毫秒半
+十二毫秒半
+二十毫秒半
+二十一毫秒半
+二十二毫秒半
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02个月
+1.00个月
+1.20个月
+2.12个月
+12.05个月
+0.02周
+1.00周
+1.20周
+2.12周
+12.05周
+0.02天
+1.00天
+1.20天
+2.12天
+12.05天
+0.02个小时
+1.00个小时
+1.20个小时
+2.12个小时
+12.05个小时
+0.02分钟
+1.00分钟
+1.20分钟
+2.12分钟
+12.05分钟
+0.02秒钟
+1.00秒钟
+1.20秒钟
+2.12秒钟
+12.05秒钟
+0.02毫秒
+1.00毫秒
+1.20毫秒
+2.12毫秒
+12.05毫秒
+=multipleUnitTargets
+一年两个月
+一年三周
+一年两个月三周
+一个月两周
+一个月三天
+一个月两周三天
+一周两天
+一周三个小时
+一周两天三个小时
+一天两个小时
+一天三分钟
+一天两个小时三分钟
+一个小时两分钟
+一个小时三秒钟
+一个小时两分三秒钟
+一分两秒钟
+一分三毫秒
+一分两秒三毫秒
+一秒两毫秒
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans_SG.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans_SG.txt
new file mode 100644
index 0000000..039221e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans_SG.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+三年以前
+两年以前
+一年以前
+零年
+一年以后
+两年以后
+三年以后
+五年以后
+十年以后
+十一年以后
+十二年以后
+二十年以后
+二十一年以后
+二十二年以后
+二十三年以后
+二十五年以后
+三个月以前
+两个月以前
+一个月以前
+零个月
+一个月以后
+两个月以后
+三个月以后
+五个月以后
+十个月以后
+十一个月以后
+十二个月以后
+二十个月以后
+二十一个月以后
+二十二个月以后
+二十三个月以后
+二十五个月以后
+三周以前
+两周以前
+一周以前
+零周
+一周以后
+两周以后
+三周以后
+五周以后
+十周以后
+十一周以后
+十二周以后
+二十周以后
+二十一周以后
+二十二周以后
+二十三周以后
+二十五周以后
+三天以前
+两天以前
+一天以前
+零天
+一天以后
+两天以后
+三天以后
+五天以后
+十天以后
+十一天以后
+十二天以后
+二十天以后
+二十一天以后
+二十二天以后
+二十三天以后
+二十五天以后
+三个小时以前
+两个小时以前
+一个小时以前
+零个小时
+一个小时以后
+两个小时以后
+三个小时以后
+五个小时以后
+十个小时以后
+十一个小时以后
+十二个小时以后
+二十个小时以后
+二十一个小时以后
+二十二个小时以后
+二十三个小时以后
+二十五个小时以后
+三分钟以前
+两分钟以前
+一分钟以前
+零分钟
+一分钟以后
+两分钟以后
+三分钟以后
+五分钟以后
+十分钟以后
+十一分钟以后
+十二分钟以后
+二十分钟以后
+二十一分钟以后
+二十二分钟以后
+二十三分钟以后
+二十五分钟以后
+三秒钟以前
+两秒钟以前
+一秒钟以前
+零秒钟
+一秒钟以后
+两秒钟以后
+三秒钟以后
+五秒钟以后
+十秒钟以后
+十一秒钟以后
+十二秒钟以后
+二十秒钟以后
+二十一秒钟以后
+二十二秒钟以后
+二十三秒钟以后
+二十五秒钟以后
+三毫秒以前
+两毫秒以前
+一毫秒以前
+零毫秒
+一毫秒以后
+两毫秒以后
+三毫秒以后
+五毫秒以后
+十毫秒以后
+十一毫秒以后
+十二毫秒以后
+二十毫秒以后
+二十一毫秒以后
+二十二毫秒以后
+二十三毫秒以后
+二十五毫秒以后
+=mediumFormTargets
+三年
+三个月
+三周
+三天
+三个小时
+三分钟
+三秒钟
+三毫秒
+=shortFormTargets
+三年
+三个月
+三周
+三天
+三个小时
+三分钟
+三秒钟
+三毫秒
+=customMinuteTargets
+一个字
+一个小时一个字
+两个字
+一个小时两个字
+三个字
+一个小时三个字
+四个字
+一个小时四个字
+五个字
+一个小时五个字
+六个字
+一个小时六个字
+七个字
+一个小时七个字
+八个字
+一个小时八个字
+九个字
+一个小时九个字
+十个字
+一个小时十个字
+十一个字
+一个小时十一个字
+=limitedUnitTargets
+一个月
+一个月两周
+一个月两周三天
+一个月以前
+一个月两周以前
+一个月两周三天以前
+一个月以后
+一个月两周以后
+一个月两周三天以后
+不到一个月
+不到一个月两周
+不到一个月两周三天
+不到一个月以前
+不到一个月两周以前
+不到一个月两周三天以前
+不到一个月以后
+不到一个月两周以后
+不到一个月两周三天以后
+超过一个月
+超过一个月两周
+超过一个月两周三天
+超过一个月以前
+超过一个月两周以前
+超过一个月两周三天以前
+超过一个月以后
+超过一个月两周以后
+超过一个月两周三天以后
+一个小时
+一个小时两分钟
+一个小时两分三秒钟
+一个小时以前
+一个小时两分钟以前
+一个小时两分三秒钟以前
+一个小时以后
+一个小时两分钟以后
+一个小时两分三秒钟以后
+不到一个小时
+不到一个小时两分钟
+不到一个小时两分三秒钟
+不到一个小时以前
+不到一个小时两分钟以前
+不到一个小时两分三秒钟以前
+不到一个小时以后
+不到一个小时两分钟以后
+不到一个小时两分三秒钟以后
+超过一个小时
+超过一个小时两分钟
+超过一个小时两分三秒钟
+超过一个小时以前
+超过一个小时两分钟以前
+超过一个小时两分三秒钟以前
+超过一个小时以后
+超过一个小时两分钟以后
+超过一个小时两分三秒钟以后
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+一年半
+两年半
+五年半
+十年半
+十一年半
+十二年半
+二十年半
+二十一年半
+二十二年半
+半个月
+一个半月
+两个半月
+五个半月
+十个半月
+十一个半月
+十二个半月
+二十个半月
+二十一个半月
+二十二个半月
+半周
+一周半
+两周半
+五周半
+十周半
+十一周半
+十二周半
+二十周半
+二十一周半
+二十二周半
+半天
+一天半
+两天半
+五天半
+十天半
+十一天半
+十二天半
+二十天半
+二十一天半
+二十二天半
+半个小时
+一个半小时
+两个半小时
+五个半小时
+十个半小时
+十一个半小时
+十二个半小时
+二十个半小时
+二十一个半小时
+二十二个半小时
+半分钟
+一分半钟
+两分半钟
+五分半钟
+十分半钟
+十一分半钟
+十二分半钟
+二十分半钟
+二十一分半钟
+二十二分半钟
+半秒钟
+一秒半钟
+两秒半钟
+五秒半钟
+十秒半钟
+十一秒半钟
+十二秒半钟
+二十秒半钟
+二十一秒半钟
+二十二秒半钟
+半毫秒
+一毫秒半
+两毫秒半
+五毫秒半
+十毫秒半
+十一毫秒半
+十二毫秒半
+二十毫秒半
+二十一毫秒半
+二十二毫秒半
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02个月
+1.00个月
+1.20个月
+2.12个月
+12.05个月
+0.02周
+1.00周
+1.20周
+2.12周
+12.05周
+0.02天
+1.00天
+1.20天
+2.12天
+12.05天
+0.02个小时
+1.00个小时
+1.20个小时
+2.12个小时
+12.05个小时
+0.02分钟
+1.00分钟
+1.20分钟
+2.12分钟
+12.05分钟
+0.02秒钟
+1.00秒钟
+1.20秒钟
+2.12秒钟
+12.05秒钟
+0.02毫秒
+1.00毫秒
+1.20毫秒
+2.12毫秒
+12.05毫秒
+=multipleUnitTargets
+一年两个月
+一年三周
+一年两个月三周
+一个月两周
+一个月三天
+一个月两周三天
+一周两天
+一周三个小时
+一周两天三个小时
+一天两个小时
+一天三分钟
+一天两个小时三分钟
+一个小时两分钟
+一个小时三秒钟
+一个小时两分三秒钟
+一分两秒钟
+一分三毫秒
+一分两秒三毫秒
+一秒两毫秒
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant.txt
new file mode 100644
index 0000000..49f5b00
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+三年以前
+兩年以前
+一年以前
+零年
+一年以後
+兩年以後
+三年以後
+五年以後
+十年以後
+十一年以後
+十二年以後
+二十年以後
+二十一年以後
+二十二年以後
+二十三年以後
+二十五年以後
+三個月以前
+兩個月以前
+一個月以前
+零個月
+一個月以後
+兩個月以後
+三個月以後
+五個月以後
+十個月以後
+十一個月以後
+十二個月以後
+二十個月以後
+二十一個月以後
+二十二個月以後
+二十三個月以後
+二十五個月以後
+三週以前
+兩週以前
+一週以前
+零週
+一週以後
+兩週以後
+三週以後
+五週以後
+十週以後
+十一週以後
+十二週以後
+二十週以後
+二十一週以後
+二十二週以後
+二十三週以後
+二十五週以後
+三天以前
+兩天以前
+一天以前
+零天
+一天以後
+兩天以後
+三天以後
+五天以後
+十天以後
+十一天以後
+十二天以後
+二十天以後
+二十一天以後
+二十二天以後
+二十三天以後
+二十五天以後
+三個小時以前
+兩個小時以前
+一個小時以前
+零個小時
+一個小時以後
+兩個小時以後
+三個小時以後
+五個小時以後
+十個小時以後
+十一個小時以後
+十二個小時以後
+二十個小時以後
+二十一個小時以後
+二十二個小時以後
+二十三個小時以後
+二十五個小時以後
+三分鐘以前
+兩分鐘以前
+一分鐘以前
+零分鐘
+一分鐘以後
+兩分鐘以後
+三分鐘以後
+五分鐘以後
+十分鐘以後
+十一分鐘以後
+十二分鐘以後
+二十分鐘以後
+二十一分鐘以後
+二十二分鐘以後
+二十三分鐘以後
+二十五分鐘以後
+三秒鐘以前
+兩秒鐘以前
+一秒鐘以前
+零秒鐘
+一秒鐘以後
+兩秒鐘以後
+三秒鐘以後
+五秒鐘以後
+十秒鐘以後
+十一秒鐘以後
+十二秒鐘以後
+二十秒鐘以後
+二十一秒鐘以後
+二十二秒鐘以後
+二十三秒鐘以後
+二十五秒鐘以後
+三毫秒以前
+兩毫秒以前
+一毫秒以前
+零毫秒
+一毫秒以後
+兩毫秒以後
+三毫秒以後
+五毫秒以後
+十毫秒以後
+十一毫秒以後
+十二毫秒以後
+二十毫秒以後
+二十一毫秒以後
+二十二毫秒以後
+二十三毫秒以後
+二十五毫秒以後
+=mediumFormTargets
+三年
+三個月
+三週
+三天
+三個小時
+三分鐘
+三秒鐘
+三毫秒
+=shortFormTargets
+三年
+三個月
+三週
+三天
+三個小時
+三分鐘
+三秒鐘
+三毫秒
+=customMinuteTargets
+五分鐘
+一個小時五分鐘
+十分鐘
+一個小時十分鐘
+一刻鐘
+一個小時一刻鐘
+二十分鐘
+一個小時二十分鐘
+二十五分鐘
+一個小時二十五分鐘
+三十分鐘
+一個小時三十分鐘
+三十五分鐘
+一個小時三十五分鐘
+四十分鐘
+一個小時四十分鐘
+三刻鐘
+一個小時三刻鐘
+五十分鐘
+一個小時五十分鐘
+五十五分鐘
+一個小時五十五分鐘
+=limitedUnitTargets
+一個月
+一個月兩週
+一個月兩週三天
+一個月以前
+一個月兩週以前
+一個月兩週三天以前
+一個月以後
+一個月兩週以後
+一個月兩週三天以後
+不到一個月
+不到一個月兩週
+不到一個月兩週三天
+不到一個月以前
+不到一個月兩週以前
+不到一個月兩週三天以前
+不到一個月以後
+不到一個月兩週以後
+不到一個月兩週三天以後
+超過一個月
+超過一個月兩週
+超過一個月兩週三天
+超過一個月以前
+超過一個月兩週以前
+超過一個月兩週三天以前
+超過一個月以後
+超過一個月兩週以後
+超過一個月兩週三天以後
+一個小時
+一個小時兩分鐘
+一個小時兩分三秒鐘
+一個小時以前
+一個小時兩分鐘以前
+一個小時兩分三秒鐘以前
+一個小時以後
+一個小時兩分鐘以後
+一個小時兩分三秒鐘以後
+不到一個小時
+不到一個小時兩分鐘
+不到一個小時兩分三秒鐘
+不到一個小時以前
+不到一個小時兩分鐘以前
+不到一個小時兩分三秒鐘以前
+不到一個小時以後
+不到一個小時兩分鐘以後
+不到一個小時兩分三秒鐘以後
+超過一個小時
+超過一個小時兩分鐘
+超過一個小時兩分三秒鐘
+超過一個小時以前
+超過一個小時兩分鐘以前
+超過一個小時兩分三秒鐘以前
+超過一個小時以後
+超過一個小時兩分鐘以後
+超過一個小時兩分三秒鐘以後
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+一年半
+兩年半
+五年半
+十年半
+十一年半
+十二年半
+二十年半
+二十一年半
+二十二年半
+半個月
+一個半月
+兩個半月
+五個半月
+十個半月
+十一個半月
+十二個半月
+二十個半月
+二十一個半月
+二十二個半月
+半週
+一週半
+兩週半
+五週半
+十週半
+十一週半
+十二週半
+二十週半
+二十一週半
+二十二週半
+半天
+一天半
+兩天半
+五天半
+十天半
+十一天半
+十二天半
+二十天半
+二十一天半
+二十二天半
+半個小時
+一個半小時
+兩個半小時
+五個半小時
+十個半小時
+十一個半小時
+十二個半小時
+二十個半小時
+二十一個半小時
+二十二個半小時
+半分鐘
+一分半鐘
+兩分半鐘
+五分半鐘
+十分半鐘
+十一分半鐘
+十二分半鐘
+二十分半鐘
+二十一分半鐘
+二十二分半鐘
+半秒鐘
+一秒半鐘
+兩秒半鐘
+五秒半鐘
+十秒半鐘
+十一秒半鐘
+十二秒半鐘
+二十秒半鐘
+二十一秒半鐘
+二十二秒半鐘
+半毫秒
+一毫秒半
+兩毫秒半
+五毫秒半
+十毫秒半
+十一毫秒半
+十二毫秒半
+二十毫秒半
+二十一毫秒半
+二十二毫秒半
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02個月
+1.00個月
+1.20個月
+2.12個月
+12.05個月
+0.02週
+1.00週
+1.20週
+2.12週
+12.05週
+0.02天
+1.00天
+1.20天
+2.12天
+12.05天
+0.02個小時
+1.00個小時
+1.20個小時
+2.12個小時
+12.05個小時
+0.02分鐘
+1.00分鐘
+1.20分鐘
+2.12分鐘
+12.05分鐘
+0.02秒鐘
+1.00秒鐘
+1.20秒鐘
+2.12秒鐘
+12.05秒鐘
+0.02毫秒
+1.00毫秒
+1.20毫秒
+2.12毫秒
+12.05毫秒
+=multipleUnitTargets
+一年兩個月
+一年三週
+一年兩個月三週
+一個月兩週
+一個月三天
+一個月兩週三天
+一週兩天
+一週三個小時
+一週兩天三個小時
+一天兩個小時
+一天三分鐘
+一天兩個小時三分鐘
+一個小時兩分鐘
+一個小時三秒鐘
+一個小時兩分三秒鐘
+一分兩秒鐘
+一分三毫秒
+一分兩秒三毫秒
+一秒兩毫秒
diff --git a/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant_HK.txt b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant_HK.txt
new file mode 100644
index 0000000..3dcd425
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant_HK.txt
@@ -0,0 +1,401 @@
+=fullPluralizedFormCounts
+-3
+-2
+-1
+0
+1
+2
+3
+5
+10
+11
+12
+20
+21
+22
+23
+25
+=fullPluralizedFormTargets
+3年之前
+2年之前
+1年之前
+0年
+1年之後
+2年之後
+3年之後
+5年之後
+10年之後
+11年之後
+12年之後
+20年之後
+21年之後
+22年之後
+23年之後
+25年之後
+3個月之前
+2個月之前
+1個月之前
+0個月
+1個月之後
+2個月之後
+3個月之後
+5個月之後
+10個月之後
+11個月之後
+12個月之後
+20個月之後
+21個月之後
+22個月之後
+23個月之後
+25個月之後
+3週之前
+2週之前
+1週之前
+0週
+1週之後
+2週之後
+3週之後
+5週之後
+10週之後
+11週之後
+12週之後
+20週之後
+21週之後
+22週之後
+23週之後
+25週之後
+3天之前
+2天之前
+1天之前
+0天
+1天之後
+2天之後
+3天之後
+5天之後
+10天之後
+11天之後
+12天之後
+20天之後
+21天之後
+22天之後
+23天之後
+25天之後
+3小時之前
+2小時之前
+1小時之前
+0小時
+1小時之後
+2小時之後
+3小時之後
+5小時之後
+10小時之後
+11小時之後
+12小時之後
+20小時之後
+21小時之後
+22小時之後
+23小時之後
+25小時之後
+3分鐘之前
+2分鐘之前
+1分鐘之前
+0分鐘
+1分鐘之後
+2分鐘之後
+3分鐘之後
+5分鐘之後
+10分鐘之後
+11分鐘之後
+12分鐘之後
+20分鐘之後
+21分鐘之後
+22分鐘之後
+23分鐘之後
+25分鐘之後
+3秒之前
+2秒之前
+1秒之前
+0秒
+1秒之後
+2秒之後
+3秒之後
+5秒之後
+10秒之後
+11秒之後
+12秒之後
+20秒之後
+21秒之後
+22秒之後
+23秒之後
+25秒之後
+3毫秒之前
+2毫秒之前
+1毫秒之前
+0毫秒
+1毫秒之後
+2毫秒之後
+3毫秒之後
+5毫秒之後
+10毫秒之後
+11毫秒之後
+12毫秒之後
+20毫秒之後
+21毫秒之後
+22毫秒之後
+23毫秒之後
+25毫秒之後
+=mediumFormTargets
+3年
+3個月
+3週
+3天
+3小時
+3分鐘
+3秒
+3毫秒
+=shortFormTargets
+3年
+3個月
+3週
+3天
+3小時
+3分鐘
+3秒
+3毫秒
+=customMinuteTargets
+5分鐘
+1小時5分鐘
+10分鐘
+1小時10分鐘
+15分鐘
+1小時15分鐘
+20分鐘
+1小時20分鐘
+25分鐘
+1小時25分鐘
+30分鐘
+1小時30分鐘
+35分鐘
+1小時35分鐘
+40分鐘
+1小時40分鐘
+45分鐘
+1小時45分鐘
+50分鐘
+1小時50分鐘
+55分鐘
+1小時55分鐘
+=limitedUnitTargets
+1個月
+1個月2週
+1個月2週3天
+1個月之前
+1個月2週之前
+1個月2週3天之前
+1個月之後
+1個月2週之後
+1個月2週3天之後
+少於1個月
+少於1個月2週
+少於1個月2週3天
+1個月以內
+1個月2週以內
+1個月2週3天以內
+即時起1個月以內
+即時起1個月2週以內
+即時起1個月2週3天以內
+超過1個月
+超過1個月2週
+超過1個月2週3天
+超過1個月之前
+超過1個月2週之前
+超過1個月2週3天之前
+即時起1個月之後
+即時起1個月2週之後
+即時起1個月2週3天之後
+1小時
+1小時2分鐘
+1小時2分3秒
+1小時之前
+1小時2分鐘之前
+1小時2分3秒之前
+1小時之後
+1小時2分鐘之後
+1小時2分3秒之後
+少於1小時
+少於1小時2分鐘
+少於1小時2分3秒
+1小時以內
+1小時2分鐘以內
+1小時2分3秒以內
+即時起1小時以內
+即時起1小時2分鐘以內
+即時起1小時2分3秒以內
+超過1小時
+超過1小時2分鐘
+超過1小時2分3秒
+超過1小時之前
+超過1小時2分鐘之前
+超過1小時2分3秒之前
+即時起1小時之後
+即時起1小時2分鐘之後
+即時起1小時2分3秒之後
+=halfUnitCounts
+0
+1
+2
+5
+10
+11
+12
+20
+21
+22
+=halfUnitTargets
+半年
+1年半
+2年半
+5年半
+10年半
+11年半
+12年半
+20年半
+21年半
+22年半
+半個月
+1個半月
+2個半月
+5個半月
+10個半月
+11個半月
+12個半月
+20個半月
+21個半月
+22個半月
+半週
+1週半
+2週半
+5週半
+10週半
+11週半
+12週半
+20週半
+21週半
+22週半
+半天
+1天半
+2天半
+5天半
+10天半
+11天半
+12天半
+20天半
+21天半
+22天半
+半小時
+1小時半
+2小時半
+5小時半
+10小時半
+11小時半
+12小時半
+20小時半
+21小時半
+22小時半
+半分鐘
+1分半鐘
+2分半鐘
+5分半鐘
+10分半鐘
+11分半鐘
+12分半鐘
+20分半鐘
+21分半鐘
+22分半鐘
+半秒
+1秒半
+2秒半
+5秒半
+10秒半
+11秒半
+12秒半
+20秒半
+21秒半
+22秒半
+半毫秒
+1毫秒半
+2毫秒半
+5毫秒半
+10毫秒半
+11毫秒半
+12毫秒半
+20毫秒半
+21毫秒半
+22毫秒半
+=fractionalUnitCounts
+0.025
+1.0
+1.205
+2.125
+12.05
+=fractionalUnitTargets
+0.02年
+1.00年
+1.20年
+2.12年
+12.05年
+0.02個月
+1.00個月
+1.20個月
+2.12個月
+12.05個月
+0.02週
+1.00週
+1.20週
+2.12週
+12.05週
+0.02天
+1.00天
+1.20天
+2.12天
+12.05天
+0.02小時
+1.00小時
+1.20小時
+2.12小時
+12.05小時
+0.02分鐘
+1.00分鐘
+1.20分鐘
+2.12分鐘
+12.05分鐘
+0.02秒
+1.00秒
+1.20秒
+2.12秒
+12.05秒
+0.02毫秒
+1.00毫秒
+1.20毫秒
+2.12毫秒
+12.05毫秒
+=multipleUnitTargets
+1年2個月
+1年3週
+1年2個月3週
+1個月2週
+1個月3天
+1個月2週3天
+1週2天
+1週3小時
+1週2天3小時
+1天2小時
+1天3分鐘
+1天2小時3分鐘
+1小時2分鐘
+1小時3秒
+1小時2分3秒
+1分2秒
+1分3毫秒
+1分2秒3毫秒
+1秒2毫秒
diff --git a/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java b/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
new file mode 100644
index 0000000..cf8fe6b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
@@ -0,0 +1,451 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import java.text.ParseException;
+import java.util.*;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @test
+ * General test of Big NumberFormat
+ */
+public class BigNumberFormatTest extends TestFmwk {
+
+    static final int ILLEGAL = -1;
+
+    public static void main(String[] args) throws Exception {
+        new BigNumberFormatTest().run(args);
+    }
+        
+    public void TestExponent() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
+        DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
+        Number n = new Long(1234);
+        expect(fmt1, n, "1.234E3");
+        expect(fmt2, n, "1.234E+3");
+        expect(fmt1, "1.234E3", n);
+        expect(fmt1, "1.234E+3", n); // Either format should parse "E+3"
+        expect(fmt2, "1.234E+3", n);
+    }
+
+    /**
+     * Test the functioning of the secondary grouping value.
+     */
+    public void TestSecondaryGrouping() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat f = new DecimalFormat("#,##,###", US);
+        expect(f, new Long(123456789), "12,34,56,789");
+        expectPat(f, "#,##,###");
+        f.applyPattern("#,###");
+        f.setSecondaryGroupingSize(4);
+        expect(f, new Long(123456789), "12,3456,789");
+        expectPat(f, "#,####,###");
+
+        // On Sun JDK 1.2-1.3, the hi_IN locale uses '0' for a zero digit,
+        // but on IBM JDK 1.2-1.3, the locale uses U+0966.
+        f = (DecimalFormat) NumberFormat.getInstance(new Locale("hi", "IN"));
+        String str = transmute("1,87,65,43,210",
+                               f.getDecimalFormatSymbols().getZeroDigit());
+        expect(f, new Long(1876543210), str);
+    }
+
+    private void expectPad(DecimalFormat fmt, String pat, int pos) {
+        expectPad(fmt, pat, pos, 0, (char)0);
+    }
+
+    private void expectPad(DecimalFormat fmt, String pat,
+                           int pos, int width, char pad) {
+        int apos = 0, awidth = 0;
+        char apad = 0;
+        try {
+            fmt.applyPattern(pat);
+            apos = fmt.getPadPosition();
+            awidth = fmt.getFormatWidth();
+            apad = fmt.getPadCharacter();
+        } catch (IllegalArgumentException e) {
+            apos = -1;
+            awidth = width;
+            apad = pad;
+        }
+        if (apos == pos && awidth == width && apad == pad) {
+            logln("Ok   \"" + pat + "\" pos=" + apos +
+                  ((pos == -1) ? "" : " width=" + awidth + " pad=" + apad));
+        } else {
+            logln("FAIL \"" + pat + "\" pos=" + apos +
+                  " width=" + awidth + " pad=" + apad +
+                  ", expected " + pos + " " + width + " " + pad);
+        }
+    }
+
+    /**
+     */
+    public void TestPatterns() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", US);
+
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, '^');
+        expectPad(fmt, "$*^#", DecimalFormat.PAD_AFTER_PREFIX, 2, '^');
+        expectPad(fmt, "#*^", DecimalFormat.PAD_BEFORE_SUFFIX, 1, '^');
+        expectPad(fmt, "#$*^", DecimalFormat.PAD_AFTER_SUFFIX, 2, '^');
+        expectPad(fmt, "$*^$#", ILLEGAL);
+        expectPad(fmt, "#$*^$", ILLEGAL);
+        expectPad(fmt, "'pre'#,##0*x'post'", DecimalFormat.PAD_BEFORE_SUFFIX,
+                  12, 'x');
+        expectPad(fmt, "''#0*x", DecimalFormat.PAD_BEFORE_SUFFIX,
+                  3, 'x');
+        expectPad(fmt, "'I''ll'*a###.##", DecimalFormat.PAD_AFTER_PREFIX,
+                  10, 'a');
+
+        fmt.applyPattern("AA#,##0.00ZZ");
+        fmt.setPadCharacter('^');
+
+        fmt.setFormatWidth(10);
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_PREFIX);
+        expectPat(fmt, "*^AA#,##0.00ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_SUFFIX);
+        expectPat(fmt, "AA#,##0.00*^ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_SUFFIX);
+        expectPat(fmt, "AA#,##0.00ZZ*^");
+
+        //            12  3456789012
+        String exp = "AA*^#,##0.00ZZ";
+        fmt.setFormatWidth(12);
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_PREFIX);
+        expectPat(fmt, exp);
+
+        fmt.setFormatWidth(13);
+        //              12  34567890123
+        expectPat(fmt, "AA*^##,##0.00ZZ");
+
+        fmt.setFormatWidth(14);
+        //              12  345678901234
+        expectPat(fmt, "AA*^###,##0.00ZZ");
+
+        fmt.setFormatWidth(15);
+        //              12  3456789012345
+        expectPat(fmt, "AA*^####,##0.00ZZ"); // This is the interesting case
+
+        fmt.setFormatWidth(16);
+        //              12  34567890123456
+        expectPat(fmt, "AA*^#,###,##0.00ZZ");
+    }
+
+    private void expectPat(DecimalFormat fmt, String exp) {
+        String pat = fmt.toPattern();
+        if (pat.equals(exp)) {
+            logln("Ok   \"" + pat + '"');
+        } else {
+            errln("FAIL \"" + pat + "\", expected \"" + exp + '"');
+        }
+    }
+
+    /**
+     * Test the handling of the AlphaWorks BigDecimal
+     */
+    public void TestAlphaBigDecimal() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.678901"),
+                           },
+               "1.2345678901E4");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.4999"),
+                              new com.ibm.icu.math.BigDecimal("12344.5001"),
+                            },
+               "12.345E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new com.ibm.icu.math.BigDecimal("12345.5000"),
+                              new com.ibm.icu.math.BigDecimal("12346.5000"),
+                            },
+               "12.346E3");
+    }
+
+    /**
+     */
+    public void TestScientific() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.US),
+               new Number[] { new Double(12345.678901),
+                              new java.math.BigDecimal("12345.678901"),
+                            },
+               "1.2345678901E4");
+        expect(new DecimalFormat("##0.###E0", US),
+               new Double(12345),
+               "12.34E3");
+        expect(new DecimalFormat("##0.###E0", US),
+               new Double(12345.00001),
+               "12.35E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new Integer(12345),
+                              new Long(12345),
+                              new java.math.BigDecimal("12345.4999"),
+                              new java.math.BigDecimal("12344.5001"),
+                            },
+               "12.345E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new java.math.BigDecimal("12345.5000"),
+                              new java.math.BigDecimal("12346.5000"),
+                            },
+               "12.346E3");
+        /*For ICU compatibility [Richard/GCL]*/
+        expect(NumberFormat.getScientificInstance(Locale.FRANCE),
+               new Double(12345.678901),
+               "1,2345678901E4");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Double(789.12345e-9),
+               "789.12E-9");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Double(780.e-9),
+               "780E-9");
+        expect(new DecimalFormat(".###E0", US),
+               new Double(45678),
+               ".457E5");
+        expect(new DecimalFormat(".###E0", US),
+               new Long(0),
+               ".0E0");
+        expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
+                                     new DecimalFormat("##E0", US),
+                                     new DecimalFormat("####E0", US),
+                                     new DecimalFormat("0E0", US),    
+                                     new DecimalFormat("00E0", US),   
+                                     new DecimalFormat("000E0", US), 
+                                   },
+               new Long(45678000),
+               new String[] { "4.5678E7",
+                              "45.678E6",
+                              "4567.8E4",
+                              "5E7",
+                              "46E6",  
+                              "457E5",
+                            }
+               );
+        expect(new DecimalFormat("###E0", US),
+               new Object[] { new Double(0.0000123), "12.3E-6",
+                              new Double(0.000123), "123E-6",
+                              new java.math.BigDecimal("0.00123"), "1.23E-3", // Cafe VM messes up Double(0.00123)
+                              new Double(0.0123), "12.3E-3",
+                              new Double(0.123), "123E-3",
+                              new Double(1.23), "1.23E0",
+                              new Double(12.3), "12.3E0",
+                              new Double(123), "123E0",
+                              new Double(1230), "1.23E3",
+                             });
+        expect(new DecimalFormat("0.#E+00", US),
+               new Object[] { new Double(0.00012), "1.2E-04",
+                              new Long(12000),     "1.2E+04",
+                             });
+    }
+
+    /**
+     */
+    public void TestPad() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect(new DecimalFormat("*^##.##", US),
+               new Object[] { new Long(0),      "^^^^0",
+                              new Double(-1.3), "^-1.3",
+                            }
+               );
+        expect(new DecimalFormat("##0.0####E0*_ 'g-m/s^2'", US),
+               new Object[] { new Long(0),       "0.0E0______ g-m/s^2",
+                              new Double(1.0/3), "333.333E-3_ g-m/s^2",
+                            }
+               );
+        expect(new DecimalFormat("##0.0####*_ 'g-m/s^2'", US),
+               new Object[] { new Long(0),       "0.0______ g-m/s^2",
+                              new Double(1.0/3), "0.33333__ g-m/s^2",
+                            }
+               );
+        expect(new DecimalFormat("*x#,###,###,##0.00;*x(#,###,###,##0.00)", US),
+               new Object[] {
+                   new Long(-100),        "xxxxxxxx(100.00)",
+                   new Long(-1000),       "xxxxxx(1,000.00)",
+                   new Long(-1000000),    "xx(1,000,000.00)",
+                   new Long(-1000000000), "(1,000,000,000.00)",
+               });
+    }
+    
+    private void expect(NumberFormat fmt, Object[] data) {
+        for (int i=0; i<data.length; i+=2) {
+            expect(fmt, (Number) data[i], (String) data[i+1]);
+        }
+    }
+    
+    private void expect(Object fmto, Object numo, Object expo) {
+        NumberFormat fmt = null, fmts[] = null;
+        Number num = null, nums[] = null;
+        String exp = null, exps[] = null;
+        if (fmto instanceof NumberFormat[]) {
+            fmts = (NumberFormat[]) fmto;
+        } else {
+            fmt = (NumberFormat) fmto;
+        }
+        if (numo instanceof Number[]) {
+            nums = (Number[]) numo;
+        } else {
+            num = (Number) numo;
+        }
+        if (expo instanceof String[]) {
+            exps = (String[]) expo;
+        } else {
+            exp = (String) expo;
+        }
+        int n = 1;
+        if (fmts != null) {
+            n = Math.max(n, fmts.length);
+        }
+        if (nums != null) {
+            n = Math.max(n, nums.length);
+        }
+        if (exps != null) {
+            n = Math.max(n, exps.length);
+        }
+        for (int i=0; i<n; ++i) {
+            expect(fmts == null ? fmt : fmts[i],
+                   nums == null ? num : nums[i],
+                   exps == null ? exp : exps[i]);
+        }
+    }
+
+    private static String showNumber(Number n) {
+        String cls = n.getClass().getName();
+        if (!(n instanceof com.ibm.icu.math.BigDecimal
+              || n instanceof java.math.BigDecimal)) {
+            int i = cls.lastIndexOf('.');
+            cls = cls.substring(i+1);
+        }
+        return n.toString() + " (" + cls + ')';
+    }
+
+    private void expect(NumberFormat fmt, Number n, String exp) {
+        String saw = fmt.format(n);
+        String pat = ((DecimalFormat) fmt).toPattern();
+        if (saw.equals(exp)) {
+            logln("Ok   " + showNumber(n) + " x " +
+                  pat + " = " +
+                  Utility.escape(saw));
+        } else {
+            errln("FAIL " + showNumber(n) + " x " +
+                  pat + " = \"" +
+                  Utility.escape(saw) + ", expected " + Utility.escape(exp));
+        }
+    }
+
+    private void expect(NumberFormat fmt, String str, Number exp) {
+        Number saw = null;
+        try {
+            saw = fmt.parse(str);
+        } catch (ParseException e) {
+            saw = null;
+        }
+        String pat = ((DecimalFormat) fmt).toPattern();
+        if (saw.equals(exp)) {
+            logln("Ok   \"" + str + "\" x " +
+                  pat + " = " +
+                  showNumber(saw));
+        } else {
+            errln("FAIL \"" + str + "\" x " +
+                  pat + " = " +
+                  showNumber(saw) + ", expected " + showNumber(exp));
+        }
+    }
+
+    /**
+     * Given a string composed of [0-9] and other chars, convert the
+     * [0-9] chars to be offsets 0..9 from 'zero'.
+     */
+    private static String transmute(String str, char zero) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<str.length(); ++i) {
+            char c = str.charAt(i);
+            if (c >= '0' && c <= '9') {
+                c = (char) (c - '0' + zero);
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+
+    public void Test4161100() {
+        NumberFormat f = NumberFormat.getInstance();
+        f.setMinimumFractionDigits(1);
+        f.setMaximumFractionDigits(1);
+        double a = -0.09;
+        String s = f.format(a);
+        logln(a + " x " +
+              ((DecimalFormat) f).toPattern() + " = " +
+              s);
+        if (!s.equals("-0.1")) {
+            errln("FAIL");
+        }
+    }        
+
+    public void TestBigDecimalJ28() {
+        String[] DATA = {
+            "1", "1E0",
+            "-1", "-1E0",
+            "0", "0E0",
+            "12e34", "1.2E35",
+            "-12.3e-45", "-1.23E-44",
+            "0.73e-7", "7.3E-8",
+        };
+        NumberFormat fmt = NumberFormat.getScientificInstance(Locale.US);
+        logln("Pattern: " + ((DecimalFormat)fmt).toPattern());
+        for (int i=0; i<DATA.length; i+=2) {
+            String input = DATA[i];
+            String exp = DATA[i+1];
+            com.ibm.icu.math.BigDecimal bd = new com.ibm.icu.math.BigDecimal(input);
+            String output = fmt.format(bd);
+            if (output.equals(exp)) {
+                logln("input=" + input + " num=" + bd + " output=" + output);
+            } else {
+                errln("FAIL: input=" + input + " num=" + bd + " output=" + output +
+                      " expected=" + exp);
+            }
+        }
+    }
+//#if defined(FOUNDATION10)
+//#else
+    public void TestBigDecimalRounding() {
+        // jb 3657
+        java.text.DecimalFormat jdkFormat=new java.text.DecimalFormat("###,###,###,##0");
+        com.ibm.icu.text.DecimalFormat icuFormat=new com.ibm.icu.text.DecimalFormat("###,###,###,##0");
+        String[] values = {
+            "-1.74", "-1.24", "-0.74", "-0.24", "0.24", "0.74", "1.24", "1.74"
+        };
+        for (int i = 0; i < values.length; ++i) {
+            String val = values[i];
+            java.math.BigDecimal bd = new java.math.BigDecimal(val);
+            String jdk = jdkFormat.format(bd);
+            String icu = icuFormat.format(bd);
+            logln("Format of BigDecimal " + val + " by JDK is " + jdk);
+            logln("Format of BigDecimal " + val + " by ICU is " + icu);
+            if (!jdk.equals(icu)) {
+                errln("BigDecimal jdk: " + jdk + " != icu: " + icu);
+            }
+
+            double d = bd.doubleValue();
+            jdk = jdkFormat.format(d);
+            icu = icuFormat.format(d);
+            logln("Format of double " + val + " by JDK is " + jdk);
+            logln("Format of double " + val + " by ICU is " + icu);
+            if (!jdk.equals(icu)) {
+                errln("double jdk: " + jdk + " != icu: " + icu);
+            }
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java b/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java
new file mode 100644
index 0000000..ffc2e37
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java
@@ -0,0 +1,180 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+
+import com.ibm.icu.dev.test.ModuleTest;
+import com.ibm.icu.dev.test.TestDataModule;
+import com.ibm.icu.dev.test.TestDataModule.DataMap;
+import com.ibm.icu.dev.test.util.CalendarFieldsSet;
+import com.ibm.icu.dev.test.util.DateTimeStyleSet;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author srl
+ *
+ */
+public class DataDrivenFormatTest extends ModuleTest {
+
+    /**
+     * @param baseName
+     * @param locName
+     */
+    public DataDrivenFormatTest() {
+        super("com/ibm/icu/dev/data/testdata/", "format");
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.ModuleTest#processModules()
+     */
+    public void processModules() {
+        //String testName = t.getName().toString();
+
+        for (Iterator siter = t.getSettingsIterator(); siter.hasNext();) {
+            // Iterate through and get each of the test case to process
+            DataMap settings = (DataMap) siter.next();
+            
+            String type = settings.getString("Type");
+
+            if(type.equals("date_format")) {
+                testConvertDate(t, settings, true);
+            } else if(type.equals("date_parse")) {
+                testConvertDate(t, settings, false);
+            } else {
+                errln("Unknown type: " + type);
+            }
+        }
+    }
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+         new DataDrivenFormatTest().run(args);
+    }
+   
+    private static final String kPATTERN = "PATTERN=";
+    private static final String kMILLIS = "MILLIS=";
+    private static final String kRELATIVE_MILLIS = "RELATIVE_MILLIS=";
+    private static final String kRELATIVE_ADD = "RELATIVE_ADD:";
+    
+    private void testConvertDate(TestDataModule.TestData testData, DataMap  settings, boolean fmt) {
+        DateFormat basicFmt = new SimpleDateFormat("EEE MMM dd yyyy / YYYY'-W'ww-ee");
+
+        int n = 0;
+        for (Iterator iter = testData.getDataIterator(); iter.hasNext();) {
+            ++n;
+            long now = System.currentTimeMillis();
+            DataMap currentCase = (DataMap) iter.next();
+            String caseString = "["+testData.getName()+"#"+n+(fmt?"format":"parse")+"]";
+            
+            String locale = currentCase.getString("locale");
+            String spec = currentCase.getString("spec");
+            String date = currentCase.getString("date");
+            String str = currentCase.getString("str");
+            
+            Date fromDate = null;
+            boolean useDate = false;
+            
+            ULocale loc = new ULocale(locale);
+            String pattern = null;
+//            boolean usePattern = false;
+            DateFormat format = null;
+            DateTimeStyleSet styleSet;
+            CalendarFieldsSet fromSet = null;
+            
+            // parse 'spec'  - either 'PATTERN=yy mm dd' or 'DATE=x,TIME=y'
+            if(spec.startsWith(kPATTERN)) {
+                pattern = spec.substring(kPATTERN.length());
+//                usePattern = true;
+                format = new SimpleDateFormat(pattern, loc);
+            } else {
+                styleSet = new DateTimeStyleSet();
+                styleSet.parseFrom(spec);
+                format = DateFormat.getDateTimeInstance(styleSet.getDateStyle(), styleSet.getTimeStyle(), loc);
+            }
+
+            Calendar cal = Calendar.getInstance(loc);
+            
+            // parse 'date' - either 'MILLIS=12345' or  a CalendarFieldsSet
+            if(date.startsWith(kMILLIS)) {
+                useDate = true;
+                fromDate = new Date(Long.parseLong(date.substring(kMILLIS.length())));
+            } else if(date.startsWith(kRELATIVE_MILLIS)) {
+                useDate = true;
+                fromDate = new Date(now+Long.parseLong(date.substring(kRELATIVE_MILLIS.length())));
+            } else if(date.startsWith(kRELATIVE_ADD)) {
+                String add = date.substring(kRELATIVE_ADD.length()); // "add" is a string indicating which fields to add
+                CalendarFieldsSet addSet = new CalendarFieldsSet();
+                addSet.parseFrom(add);
+                useDate = true;
+                cal.clear();
+                cal.setTimeInMillis(now);
+
+                /// perform op on 'to calendar'
+                for (int q=0; q<addSet.fieldCount(); q++) {
+                    if (addSet.isSet(q)) {
+                         cal.add(q,addSet.get(q));
+                    }
+                }
+
+                fromDate = cal.getTime();
+            } else {
+                fromSet = new CalendarFieldsSet();
+                fromSet.parseFrom(date);
+            }
+            
+            // run the test
+            if(fmt) {
+                StringBuffer output = new StringBuffer();
+                cal.clear();
+                FieldPosition pos = new FieldPosition(0);
+                if(useDate) {
+                    output = format.format(fromDate, output, pos);
+                } else {
+                    fromSet.setOnCalendar(cal);
+                    format.format(cal, output, pos);
+                }
+                
+                if(output.toString().equals(str)) {
+                    logln(caseString + " Success - strings match: " + output);
+                } else {
+                    errln(caseString + " FAIL: got " + output + " expected " + str);
+                }
+            } else { // parse
+                cal.clear();
+                ParsePosition pos = new ParsePosition(0);
+                format.parse(str, cal, pos);
+                if(useDate) {
+                    Date gotDate = cal.getTime(); 
+                    if(gotDate.equals(fromDate)) {
+                        logln(caseString + " SUCCESS: got=parse="+str);
+                    } else {
+                        errln(caseString + " FAIL: parsed " + str + " but got " + 
+                                basicFmt.format(gotDate) + " - " + gotDate + "  expected " + 
+                                basicFmt.format(fromDate));
+                    }
+                } else  {
+                    CalendarFieldsSet diffSet = new CalendarFieldsSet();
+                    if(!fromSet.matches(cal, diffSet)) {
+                        String diffs = diffSet.diffFrom(fromSet);
+                        errln(caseString + " FAIL:  differences: " + diffs);
+                    } else {
+                        logln(caseString + " SUCCESS: got=parse: " + str + " - " + fromSet.toString());
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java b/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
new file mode 100644
index 0000000..fd04c3f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
@@ -0,0 +1,154 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatMiscTests
+ * Source File: $ICU4CRoot/source/test/intltest/miscdtfm.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.Date;
+
+/** 
+ * Performs miscellaneous tests for DateFormat, SimpleDateFormat, DateFormatSymbols
+ **/
+public class DateFormatMiscTests extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception{
+        new DateFormatMiscTests().run(args);
+    }
+    
+    /*
+     * @bug 4097450
+     */
+    public void Test4097450() {
+        //
+        // Date parse requiring 4 digit year.
+        //
+        String dstring[] = {
+            "97", "1997", "97", "1997", "01", "2001", "01", "2001",
+             "1", "1", "11", "11", "111", "111"}; 
+    
+        String dformat[] = 
+            {
+                "yy", "yy", "yyyy", "yyyy", "yy", "yy", "yyyy", "yyyy", 
+                "yy", "yyyy", "yy", "yyyy", "yy", "yyyy"};         
+    
+        SimpleDateFormat formatter;
+        SimpleDateFormat resultFormatter = new SimpleDateFormat("yyyy");
+        logln("Format\tSource\tResult");
+        logln("-------\t-------\t-------");
+        for (int i = 0; i < dstring.length ; i++) {
+            log(dformat[i] + "\t" + dstring[i] + "\t");
+            formatter = new SimpleDateFormat(dformat[i]);
+            try {
+                StringBuffer str = new StringBuffer("");
+                FieldPosition pos = new FieldPosition(0);
+                logln(resultFormatter.format(formatter.parse(dstring[i]), str, pos).toString()); 
+            }
+            catch (ParseException exception) {
+                errln("exception --> " + exception);
+            }
+            logln("");
+        }
+    }
+    
+    /* @Bug 4099975
+     * SimpleDateFormat constructor SimpleDateFormat(String, DateFormatSymbols)
+     * should clone the DateFormatSymbols parameter
+     */
+    public void Test4099975new() {
+        Date d = new Date();
+        //test SimpleDateFormat Constructor
+        {
+            DateFormatSymbols symbols = new DateFormatSymbols(Locale.US);
+            SimpleDateFormat df = new SimpleDateFormat("E hh:mm", symbols);
+            SimpleDateFormat dfClone = (SimpleDateFormat) df.clone();
+            
+            logln(df.toLocalizedPattern());
+            String s0 = df.format(d);
+            String s_dfClone = dfClone.format(d);
+            
+            symbols.setLocalPatternChars("abcdefghijklmonpqr"); // change value of field
+            logln(df.toLocalizedPattern());
+            String s1 = df.format(d);
+            
+            if (!s1.equals(s0) || !s1.equals(s_dfClone)) {
+                errln("Constructor: the formats are not equal");
+            }
+            if (!df.equals(dfClone)) {
+                errln("The Clone Object does not equal with the orignal source");
+            }
+        }
+        //test SimpleDateFormat.setDateFormatSymbols()
+        {
+            DateFormatSymbols symbols = new DateFormatSymbols(Locale.US);
+            SimpleDateFormat df = new SimpleDateFormat("E hh:mm");
+            df.setDateFormatSymbols(symbols);
+            SimpleDateFormat dfClone = (SimpleDateFormat) df.clone();
+            
+            logln(df.toLocalizedPattern());
+            String s0 = df.format(d);
+            String s_dfClone = dfClone.format(d);
+            
+            symbols.setLocalPatternChars("abcdefghijklmonpqr"); // change value of field
+            logln(df.toLocalizedPattern());
+            String s1 = df.format(d);
+            
+            if (!s1.equals(s0) || !s1.equals(s_dfClone)) {
+                errln("setDateFormatSymbols: the formats are not equal");
+            }
+            if (!df.equals(dfClone)) {
+                errln("The Clone Object does not equal with the orignal source");
+            }
+        }
+    }
+    
+    /*
+     * @bug 4117335
+     */
+    public void Test4117335() {
+        final String bc = "\u7D00\u5143\u524D";
+        final String ad = "\u897f\u66a6";
+        final String jstLong = "\u65e5\u672c\u6a19\u6e96\u6642";
+        final String jdtLong = "\u65e5\u672c\u590f\u6642\u9593";
+        final String jstShort = "JST";
+        final String jdtShort = "JDT";
+        final String tzID = "Asia/Tokyo";
+
+        DateFormatSymbols symbols = new DateFormatSymbols(Locale.JAPAN);
+        final String[] eras = symbols.getEras();
+
+        assertEquals("BC =", bc, eras[0]);
+        assertEquals("AD =", ad, eras[1]);
+
+        // don't use hard-coded index!
+        final String zones[][] = symbols.getZoneStrings();
+        int index = -1;
+        for (int i = 0; i < zones.length; ++i) {
+            if (tzID.equals(zones[i][0])) {
+                index = i;
+                break;
+            }
+        }
+
+        if (index == -1) {
+            errln("could not find " + tzID);
+        } else {
+            assertEquals("Long zone name = ", jstLong, zones[index][1]);
+            assertEquals("Short zone name = ", jstShort, zones[index][2]);
+            assertEquals("Long zone name (3) = ", jdtLong, zones[index][3]);
+            assertEquals("Short zone name (4) = ", jdtShort, zones[index][4]);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
new file mode 100644
index 0000000..eaa0ed7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
@@ -0,0 +1,1075 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmrgts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+
+import java.io.*;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+/** 
+ * Performs regression test for DateFormat
+ **/
+public class DateFormatRegressionTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception{
+        new DateFormatRegressionTest().run(args);
+    }
+    
+    /**
+     * @bug 4029195
+     */
+    public void Test4029195() {
+        Calendar cal = Calendar.getInstance();
+        Date today = cal.getTime();
+        logln("today: " + today);
+        SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance();
+        String pat = sdf.toPattern();
+        logln("pattern: " + pat);
+        StringBuffer fmtd = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        fmtd = sdf.format(today, fmtd, pos);
+        logln("today: " + fmtd);
+    
+        sdf.applyPattern("G yyyy DDD");
+        StringBuffer todayS = new StringBuffer("");
+        todayS = sdf.format(today, todayS, pos);
+        logln("today: " + todayS);
+        try {
+            today = sdf.parse(todayS.toString());
+            logln("today date: " + today);
+        } catch (Exception e) {
+            errln("Error reparsing date: " + e.getMessage());
+        }
+    
+        try {
+            StringBuffer rt = new StringBuffer("");
+            rt = sdf.format(sdf.parse(todayS.toString()), rt, pos);
+            logln("round trip: " + rt);
+            if (!rt.toString().equals(todayS.toString()))
+                errln("Fail: Want " + todayS + " Got " + rt);
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * @bug 4052408
+     */
+    public void Test4052408() {
+    
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US); 
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(97 + 1900, Calendar.MAY, 3, 8, 55);
+        Date dt = cal.getTime();
+        String str = fmt.format(dt);
+        logln(str);
+        
+        if (!str.equals("5/3/97 8:55 AM"))
+            errln("Fail: Test broken; Want 5/3/97 8:55 AM Got " + str);
+    
+        String expected[] = {
+            "", //"ERA_FIELD",
+            "97", //"YEAR_FIELD",
+            "5", //"MONTH_FIELD",
+            "3", //"DATE_FIELD",
+            "", //"HOUR_OF_DAY1_FIELD",
+            "", //"HOUR_OF_DAY0_FIELD",
+            "55", //"MINUTE_FIELD",
+            "", //"SECOND_FIELD",
+            "", //"MILLISECOND_FIELD",
+            "", //"DAY_OF_WEEK_FIELD",
+            "", //"DAY_OF_YEAR_FIELD",
+            "", //"DAY_OF_WEEK_IN_MONTH_FIELD",
+            "", //"WEEK_OF_YEAR_FIELD",
+            "", //"WEEK_OF_MONTH_FIELD",
+            "AM", //"AM_PM_FIELD",
+            "8", //"HOUR1_FIELD",
+            "", //"HOUR0_FIELD",
+            "" //"TIMEZONE_FIELD"
+            };        
+        String fieldNames[] = {
+                "ERA_FIELD", 
+                "YEAR_FIELD", 
+                "MONTH_FIELD", 
+                "DATE_FIELD", 
+                "HOUR_OF_DAY1_FIELD", 
+                "HOUR_OF_DAY0_FIELD", 
+                "MINUTE_FIELD", 
+                "SECOND_FIELD", 
+                "MILLISECOND_FIELD", 
+                "DAY_OF_WEEK_FIELD", 
+                "DAY_OF_YEAR_FIELD", 
+                "DAY_OF_WEEK_IN_MONTH_FIELD", 
+                "WEEK_OF_YEAR_FIELD", 
+                "WEEK_OF_MONTH_FIELD", 
+                "AM_PM_FIELD", 
+                "HOUR1_FIELD", 
+                "HOUR0_FIELD", 
+                "TIMEZONE_FIELD"}; 
+    
+        boolean pass = true;
+        for (int i = 0; i <= 17; ++i) {
+            FieldPosition pos = new FieldPosition(i);
+            StringBuffer buf = new StringBuffer("");
+            fmt.format(dt, buf, pos);
+            //char[] dst = new char[pos.getEndIndex() - pos.getBeginIndex()];
+            String dst = buf.substring(pos.getBeginIndex(), pos.getEndIndex());
+            str = dst;
+            log(i + ": " + fieldNames[i] + ", \"" + str + "\", "
+                    + pos.getBeginIndex() + ", " + pos.getEndIndex()); 
+            String exp = expected[i];
+            if ((exp.length() == 0 && str.length() == 0) || str.equals(exp))
+                logln(" ok");
+            else {
+                logln(" expected " + exp);
+                pass = false;
+            }
+        }
+        if (!pass)
+            errln("Fail: FieldPosition not set right by DateFormat");
+    }
+    
+    /**
+     * @bug 4056591
+     * Verify the function of the [s|g]et2DigitYearStart() API.
+     */
+    public void Test4056591() {
+    
+        try {
+            SimpleDateFormat fmt = new SimpleDateFormat("yyMMdd", Locale.US);
+            Calendar cal = Calendar.getInstance();
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 25);
+            Date start = cal.getTime();
+            fmt.set2DigitYearStart(start);
+            if ((fmt.get2DigitYearStart() != start))
+                errln("get2DigitYearStart broken");
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 25);
+            Date d1 = cal.getTime();
+            cal.clear();
+            cal.set(1909, Calendar.DECEMBER, 24);
+            Date d2 = cal.getTime();
+            cal.clear();
+            cal.set(1809, Calendar.DECEMBER, 26);
+            Date d3 = cal.getTime();
+            cal.clear();
+            cal.set(1861, Calendar.DECEMBER, 25);
+            Date d4 = cal.getTime();
+            
+            Date dates[] = {d1, d2, d3, d4};
+    
+            String strings[] = {"091225", "091224", "091226", "611225"};            
+    
+            for (int i = 0; i < 4; i++) {
+                String s = strings[i];
+                Date exp = dates[i];
+                Date got = fmt.parse(s);
+                logln(s + " . " + got + "; exp " + exp);
+                if (got.getTime() != exp.getTime())
+                    errln("set2DigitYearStart broken");
+            }
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * @bug 4059917
+     */
+    public void Test4059917() {        
+        SimpleDateFormat fmt;
+        String myDate;
+        fmt = new SimpleDateFormat("yyyy/MM/dd");
+        myDate = "1997/01/01";
+        aux917( fmt, myDate );        
+        fmt = new SimpleDateFormat("yyyyMMdd");
+        myDate = "19970101";
+        aux917( fmt, myDate );
+    }
+    
+    public void aux917(SimpleDateFormat fmt, String str) {
+    
+        String pat = fmt.toPattern();
+        logln("==================");
+        logln("testIt: pattern=" + pat + " string=" + str);
+        ParsePosition pos = new ParsePosition(0);
+        Object o = fmt.parseObject(str, pos);
+        //logln( UnicodeString("Parsed object: ") + o );
+    
+        StringBuffer formatted = new StringBuffer("");
+        FieldPosition poss = new FieldPosition(0);
+        formatted = fmt.format(o, formatted, poss);
+    
+        logln("Formatted string: " + formatted);
+        if (!formatted.toString().equals(str))
+            errln("Fail: Want " + str + " Got " + formatted);
+    }
+    
+    /**
+     * @bug 4060212
+     */
+    public void Test4060212() {
+        String dateString = "1995-040.05:01:29";
+        logln("dateString= " + dateString);
+        logln("Using yyyy-DDD.hh:mm:ss");
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-DDD.hh:mm:ss");
+        ParsePosition pos = new ParsePosition(0);
+        Date myDate = formatter.parse(dateString, pos);
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.LONG); 
+        String myString = fmt.format(myDate);
+        logln(myString);
+        Calendar cal = new GregorianCalendar();
+        cal.setTime(myDate);
+        if ((cal.get(Calendar.DAY_OF_YEAR) != 40))
+            errln("Fail: Got " + cal.get(Calendar.DAY_OF_YEAR) + " Want 40");
+    
+        logln("Using yyyy-ddd.hh:mm:ss");
+        formatter = new SimpleDateFormat("yyyy-ddd.hh:mm:ss");
+        pos.setIndex(0);
+        myDate = formatter.parse(dateString, pos);
+        myString = fmt.format(myDate);
+        logln(myString);
+        cal.setTime(myDate);
+        if ((cal.get(Calendar.DAY_OF_YEAR) != 40))
+            errln("Fail: Got " + cal.get(Calendar.DAY_OF_YEAR) + " Want 40");
+    }
+    /**
+     * @bug 4061287
+     */
+    public void Test4061287() {
+    
+        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
+        try {
+            logln(df.parse("35/01/1971").toString());
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+        df.setLenient(false);
+        boolean ok = false;
+        try {
+            logln(df.parse("35/01/1971").toString());
+        } catch (ParseException e) {
+            ok = true;
+        }
+        if (!ok)
+            errln("Fail: Lenient not working");
+    }
+    
+    /**
+     * @bug 4065240
+     */
+    public void Test4065240() {
+        Date curDate;
+        DateFormat shortdate, fulldate;
+        String strShortDate, strFullDate;
+        Locale saveLocale = Locale.getDefault();
+        TimeZone saveZone = TimeZone.getDefault();
+    
+        try {
+            Locale curLocale = new Locale("de", "DE");
+            Locale.setDefault(curLocale);
+            // {sfb} adoptDefault instead of setDefault
+            //TimeZone.setDefault(TimeZone.createTimeZone("EST"));
+            TimeZone.setDefault(TimeZone.getTimeZone("EST"));
+            Calendar cal = Calendar.getInstance();
+            cal.clear();
+            cal.set(98 + 1900, 0, 1);
+            curDate = cal.getTime();
+            shortdate = DateFormat.getDateInstance(DateFormat.SHORT);
+            fulldate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+            strShortDate = "The current date (short form) is ";
+            String temp;
+            temp = shortdate.format(curDate);
+            strShortDate += temp;
+            strFullDate = "The current date (long form) is ";
+            String temp2 = fulldate.format(curDate);
+            strFullDate += temp2;
+    
+            logln(strShortDate);
+            logln(strFullDate);
+    
+            // {sfb} What to do with resource bundle stuff?????
+    
+            // Check to see if the resource is present; if not, we can't test
+            //ResourceBundle bundle = //The variable is never used
+            //    ICULocaleData.getBundle("DateFormatZoneData", curLocale); 
+    
+            // {sfb} API change to ResourceBundle -- add getLocale()
+            /*if (bundle.getLocale().getLanguage().equals("de")) {
+                // UPDATE THIS AS ZONE NAME RESOURCE FOR <EST> in de_DE is updated
+                if (!strFullDate.endsWith("GMT-05:00"))
+                    errln("Fail: Want GMT-05:00");
+            } else {
+                logln("*** TEST COULD NOT BE COMPLETED BECAUSE DateFormatZoneData ***");
+                logln("*** FOR LOCALE de OR de_DE IS MISSING ***");
+            }*/
+        } catch (Exception e) {
+            logln(e.getMessage());
+        } finally {
+            Locale.setDefault(saveLocale);
+            TimeZone.setDefault(saveZone);
+        }
+    
+    }
+    
+    /*
+      DateFormat.equals is too narrowly defined.  As a result, MessageFormat
+      does not work correctly.  DateFormat.equals needs to be written so
+      that the Calendar sub-object is not compared using Calendar.equals,
+      but rather compared for equivalency.  This may necessitate adding a
+      (package private) method to Calendar to test for equivalency.
+      
+      Currently this bug breaks MessageFormat.toPattern
+      */
+    /**
+     * @bug 4071441
+     */
+    public void Test4071441() {
+        DateFormat fmtA = DateFormat.getInstance();
+        DateFormat fmtB = DateFormat.getInstance();
+    
+        // {sfb} Is it OK to cast away const here?
+        Calendar calA = fmtA.getCalendar();
+        Calendar calB = fmtB.getCalendar();
+        calA.clear();
+        calA.set(1900, 0 ,0);
+        calB.clear();
+        calB.set(1900, 0, 0);
+        if (!calA.equals(calB))
+            errln("Fail: Can't complete test; Calendar instances unequal");
+        if (!fmtA.equals(fmtB))
+            errln("Fail: DateFormat unequal when Calendars equal");
+        calB.clear();
+        calB.set(1961, Calendar.DECEMBER, 25);
+        if (calA.equals(calB))
+            errln("Fail: Can't complete test; Calendar instances equal");
+        if (!fmtA.equals(fmtB))
+            errln("Fail: DateFormat unequal when Calendars equivalent");
+        logln("DateFormat.equals ok");
+    }
+        
+    /* The java.text.DateFormat.parse(String) method expects for the
+      US locale a string formatted according to mm/dd/yy and parses it
+      correctly.
+    
+      When given a string mm/dd/yyyy it only parses up to the first
+      two y's, typically resulting in a date in the year 1919.
+      
+      Please extend the parsing method(s) to handle strings with
+      four-digit year values (probably also applicable to various
+      other locales.  */
+    /**
+     * @bug 4073003
+     */
+    public void Test4073003() {
+        try {
+            DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+            String tests[] = {"12/25/61", "12/25/1961", "4/3/2010", "4/3/10"};
+            for (int i = 0; i < 4; i += 2) {
+                Date d = fmt.parse(tests[i]);
+                Date dd = fmt.parse(tests[i + 1]);
+                String s;
+                s = fmt.format(d);
+                String ss;
+                ss = fmt.format(dd);
+                if (d.getTime() != dd.getTime())
+                    errln("Fail: " + d + " != " + dd);
+                if (!s.equals(ss))
+                    errln("Fail: " + s + " != " + ss);
+                logln("Ok: " + s + " " + d);
+            }
+        } catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }    
+    }
+    
+    /**
+     * @bug 4089106
+     */
+    public void Test4089106() {
+        TimeZone def = TimeZone.getDefault();
+        try {
+            TimeZone z = new SimpleTimeZone((int) (1.25 * 3600000), "FAKEZONE");
+            TimeZone.setDefault(z);
+            SimpleDateFormat f = new SimpleDateFormat();
+            if (!f.getTimeZone().equals(z))
+                errln("Fail: SimpleTimeZone should use TimeZone.getDefault()");
+        } finally {
+            TimeZone.setDefault(def);
+        }
+    }
+    
+    /**
+     * @bug 4100302
+     */
+    public void Test4100302() {
+        
+        Locale locales[] = {
+            Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA, 
+            Locale.CHINESE, Locale.ENGLISH, Locale.FRANCE, Locale.FRENCH, 
+            Locale.GERMAN, Locale.GERMANY, Locale.ITALIAN, Locale.ITALY, 
+            Locale.JAPAN, Locale.JAPANESE, Locale.KOREA, Locale.KOREAN, 
+            Locale.PRC, Locale.SIMPLIFIED_CHINESE, Locale.TAIWAN, 
+            Locale.TRADITIONAL_CHINESE, Locale.UK, Locale.US}; 
+        try {
+            boolean pass = true;
+            for (int i = 0; i < 21; i++) {
+                Format format = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locales[i]); 
+                byte[] bytes;
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.writeObject(format);
+                oos.flush();
+                baos.close();
+                bytes = baos.toByteArray();
+                ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+                Object o = ois.readObject();
+                if (!format.equals(o)) {
+                    pass = false;
+                    logln("DateFormat instance for locale " + locales[i] + " is incorrectly serialized/deserialized."); 
+                } else {
+                    logln("DateFormat instance for locale " + locales[i] + " is OKAY.");
+                }
+            }
+            if (!pass)
+                errln("Fail: DateFormat serialization/equality bug");
+        } catch (OptionalDataException e) {
+            errln("Fail: " + e);
+        } catch (IOException e) {
+            errln("Fail: " + e);
+        } catch (ClassNotFoundException e) {
+            errln("Fail: " + e);
+        }
+    
+    }
+    
+    /**
+     * @bug 4101483
+     */
+    public void Test4101483() {
+        SimpleDateFormat sdf = new SimpleDateFormat("z", Locale.US);
+        FieldPosition fp = new FieldPosition(DateFormat.TIMEZONE_FIELD);
+        Date d = new Date(9234567890L);
+        StringBuffer buf = new StringBuffer("");
+        sdf.format(d, buf, fp);
+        logln(sdf.format(d, buf, fp).toString());
+        logln("beginIndex = " + fp.getBeginIndex());
+        logln("endIndex = " + fp.getEndIndex());
+        if (fp.getBeginIndex() == fp.getEndIndex())
+            errln("Fail: Empty field");
+    }
+    
+    /**
+     * @bug 4103340
+     * @bug 4138203
+     * This bug really only works in Locale.US, since that's what the locale
+     * used for Date.toString() is.  Bug 4138203 reports that it fails on Korean
+     * NT; it would actually have failed on any non-US locale.  Now it should
+     * work on all locales.
+     */
+    public void Test4103340() {
+    
+        // choose a date that is the FIRST of some month 
+        // and some arbitrary time
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 3, 1, 1, 1, 1);
+        Date d = cal.getTime(); 
+        SimpleDateFormat df = new SimpleDateFormat("MMMM", Locale.US);
+        String s = d.toString();
+        StringBuffer s2 = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        s2 = df.format(d, s2, pos);
+        logln("Date=" + s); 
+        logln("DF=" + s2);
+        String substr = s2.substring(0,2);
+        if (s.indexOf(substr) == -1)
+          errln("Months should match");
+    }
+    
+    /**
+     * @bug 4103341
+     */
+    public void Test4103341() {
+        TimeZone saveZone = TimeZone.getDefault();
+        try {
+            // {sfb} changed from adoptDefault to setDefault
+            TimeZone.setDefault(TimeZone.getTimeZone("CST"));
+            SimpleDateFormat simple = new SimpleDateFormat("MM/dd/yyyy HH:mm");
+            TimeZone temp = TimeZone.getDefault();
+            if (!simple.getTimeZone().equals(temp))
+                errln("Fail: SimpleDateFormat not using default zone");
+        } finally {
+            TimeZone.setDefault(saveZone);
+        }
+    }
+    
+    /**
+     * @bug 4104136
+     */
+    public void Test4104136() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        String pattern = "'time' hh:mm";
+        sdf.applyPattern(pattern);
+        logln("pattern: \"" + pattern + "\"");
+        String strings[] = {"time 10:30", "time 10:x", "time 10x"};
+        ParsePosition ppos[] = {new ParsePosition(10), new ParsePosition(0), new ParsePosition(0)};
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1970, Calendar.JANUARY, 1, 10, 30);
+        Date dates[] = {cal.getTime(), new Date(-1), new Date(-1)};
+        for (int i = 0; i < 3; i++) {
+            String text = strings[i];
+            ParsePosition finish = ppos[i];
+            Date exp = dates[i];
+            ParsePosition pos = new ParsePosition(0);
+            Date d = sdf.parse(text, pos);
+            logln(" text: \"" + text + "\"");
+            logln(" index: %d" + pos.getIndex());
+            logln(" result: " + d);
+            if (pos.getIndex() != finish.getIndex())
+                errln("Fail: Expected pos " + finish.getIndex());
+            if (!((d == null && exp.equals(new Date(-1))) || (d.equals(exp))))
+                errln( "Fail: Expected result " + exp);
+        }
+    }
+    
+    /**
+     * @bug 4104522
+     * CANNOT REPRODUCE
+     * According to the bug report, this test should throw a
+     * StringIndexOutOfBoundsException during the second parse.  However,
+     * this is not seen.
+     */
+    public void Test4104522() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        String pattern = "'time' hh:mm";
+        sdf.applyPattern(pattern);
+        logln("pattern: \"" + pattern + "\"");
+        // works correctly
+        ParsePosition pp = new ParsePosition(0);
+        String text = "time ";
+        Date dt = sdf.parse(text, pp);
+        logln(" text: \"" + text + "\"" + " date: " + dt);
+        // works wrong
+        pp.setIndex(0);
+        text = "time";
+        dt = sdf.parse(text, pp);
+        logln(" text: \"" + text + "\"" + " date: " + dt);    
+    }
+    
+    /**
+     * @bug 4106807
+     */
+    public void Test4106807() {
+        Date dt;
+        DateFormat df = DateFormat.getDateTimeInstance();
+    
+        SimpleDateFormat sdfs[] = {
+                new SimpleDateFormat("yyyyMMddHHmmss"), 
+                new SimpleDateFormat("yyyyMMddHHmmss'Z'"), 
+                new SimpleDateFormat("yyyyMMddHHmmss''"), 
+                new SimpleDateFormat("yyyyMMddHHmmss'a''a'"), 
+                new SimpleDateFormat("yyyyMMddHHmmss %")}; 
+        String strings[] = {
+                "19980211140000", 
+                "19980211140000", 
+                "19980211140000", 
+                "19980211140000a", 
+                "19980211140000 "}; 
+        GregorianCalendar gc = new GregorianCalendar();
+        TimeZone timeZone = TimeZone.getDefault();
+        TimeZone gmt = (TimeZone) timeZone.clone();
+        gmt.setRawOffset(0);
+        for (int i = 0; i < 5; i++) {
+            SimpleDateFormat format = sdfs[i];
+            String dateString = strings[i];
+            try {
+                format.setTimeZone(gmt);
+                dt = format.parse(dateString);
+                // {sfb} some of these parses will fail purposely
+    
+                StringBuffer fmtd = new StringBuffer("");
+                FieldPosition pos = new FieldPosition(0);
+                fmtd = df.format(dt, fmtd, pos);
+                logln(fmtd.toString());
+                //logln(df.format(dt)); 
+                gc.setTime(dt);
+                logln("" + gc.get(Calendar.ZONE_OFFSET));
+                StringBuffer s = new StringBuffer("");
+                s = format.format(dt, s, pos);
+                logln(s.toString());
+            } catch (ParseException e) {
+                logln("No way Jose");
+            }
+        }
+    }
+    
+    /*
+      Synopsis: Chinese time zone CTT is not recogonized correctly.
+      Description: Platform Chinese Windows 95 - ** Time zone set to CST ** 
+      */
+    /**
+     * @bug 4108407
+     */
+    
+    // {sfb} what to do with this one ?? 
+    public void Test4108407() {
+        /*
+    // TODO user.timezone is a protected system property, catch securityexception and warn
+    // if this is reenabled
+        long l = System.currentTimeMillis(); 
+        logln("user.timezone = " + System.getProperty("user.timezone", "?"));
+        logln("Time Zone :" + 
+                           DateFormat.getDateInstance().getTimeZone().getID()); 
+        logln("Default format :" + 
+                           DateFormat.getDateInstance().format(new Date(l))); 
+        logln("Full format :" + 
+                           DateFormat.getDateInstance(DateFormat.FULL).format(new 
+                                                                              Date(l))); 
+        logln("*** Set host TZ to CST ***");
+        logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+        */
+    }
+    
+    /**
+     * @bug 4134203
+     * SimpleDateFormat won't parse "GMT"
+     */
+    public void Test4134203() {
+        String dateFormat = "MM/dd/yy HH:mm:ss zzz";
+        SimpleDateFormat fmt = new SimpleDateFormat(dateFormat);
+    
+        ParsePosition p0 = new ParsePosition(0);
+        Date d = fmt.parse("01/22/92 04:52:00 GMT", p0);
+        logln(d.toString());
+        if(p0.equals(new ParsePosition(0)))
+            errln("Fail: failed to parse 'GMT'");
+        // In the failure case an exception is thrown by parse();
+        // if no exception is thrown, the test passes.
+    }
+    
+    /**
+     * @bug 4151631
+     * SimpleDateFormat incorrect handling of 2 single quotes in format()
+     */
+    public void Test4151631() {
+        String pattern = 
+            "'TO_DATE('''dd'-'MM'-'yyyy HH:mm:ss''' , ''DD-MM-YYYY HH:MI:SS'')'"; 
+        logln("pattern=" + pattern);
+        SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.US);
+        StringBuffer result = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1998, Calendar.JUNE, 30, 13, 30, 0);
+        Date d = cal.getTime();
+        result = format.format(d, result, pos); 
+        if (!result.toString().equals("TO_DATE('30-06-1998 13:30:00' , 'DD-MM-YYYY HH:MI:SS')")) {
+            errln("Fail: result=" + result);
+        } else {
+            logln("Pass: result=" + result);
+        }
+    }
+    
+    /**
+     * @bug 4151706
+     * 'z' at end of date format throws index exception in SimpleDateFormat
+     * CANNOT REPRODUCE THIS BUG ON 1.2FCS
+     */
+    public void Test4151706() {
+        String dateString = "Thursday, 31-Dec-98 23:00:00 GMT";
+        SimpleDateFormat fmt = new SimpleDateFormat("EEEE, dd-MMM-yy HH:mm:ss z", Locale.US);
+        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.US);
+        cal.clear();
+        cal.set(1998, Calendar.DECEMBER, 31, 23, 0, 0);
+        Date d = new Date();
+        try {
+            d = fmt.parse(dateString);
+            // {sfb} what about next two lines?
+            if (d.getTime() != cal.getTime().getTime())
+                errln("Incorrect value: " + d);
+        } catch (Exception e) {
+            errln("Fail: " + e);
+        }
+        StringBuffer temp = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(0);
+        logln(dateString + " . " + fmt.format(d, temp, pos));
+    }
+    
+    /**
+     * @bug 4162071
+     * Cannot reproduce this bug under 1.2 FCS -- it may be a convoluted duplicate
+     * of some other bug that has been fixed.
+     */
+    public void Test4162071() {
+        String dateString = "Thu, 30-Jul-1999 11:51:14 GMT";
+        String format = "EEE', 'dd-MMM-yyyy HH:mm:ss z"; // RFC 822/1123
+        SimpleDateFormat df = new SimpleDateFormat(format, Locale.US);
+        try {
+            Date x = df.parse(dateString);
+            StringBuffer temp = new StringBuffer("");
+            FieldPosition pos = new FieldPosition(0);
+            logln(dateString + " -> " + df.format(x, temp, pos));
+        } catch (Exception e) {
+            errln("Parse format \"" + format + "\" failed.");
+        }
+    }
+    
+    /**
+     * DateFormat shouldn't parse year "-1" as a two-digit year (e.g., "-1" . 1999).
+     */
+    public void Test4182066() {
+        SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy", Locale.US);
+        SimpleDateFormat dispFmt = new SimpleDateFormat("MMM dd yyyy HH:mm:ss GG", Locale.US);
+        /* We expect 2-digit year formats to put 2-digit years in the right
+         * window.  Out of range years, that is, anything less than "00" or
+         * greater than "99", are treated as literal years.  So "1/2/3456"
+         * becomes 3456 AD.  Likewise, "1/2/-3" becomes -3 AD == 2 BC.
+         */
+        final String STRINGS[] = 
+            {"02/29/00", "01/23/01", "04/05/-1", "01/23/-9", "11/12/1314", "10/31/1", "09/12/+1", "09/12/001",}; 
+        int STRINGS_COUNT = STRINGS.length;
+                
+        Calendar cal = Calendar.getInstance();
+        Date FAIL_DATE = cal.getTime();
+        cal.clear();
+        cal.set(2000, Calendar.FEBRUARY, 29);
+        Date d0 = cal.getTime();
+        cal.clear();
+        cal.set(2001, Calendar.JANUARY, 23);
+        Date d1 = cal.getTime();
+        cal.clear();
+        cal.set(-1, Calendar.APRIL, 5);
+        Date d2 = cal.getTime();
+        cal.clear();
+        cal.set(-9, Calendar.JANUARY, 23);
+        Date d3 = cal.getTime();
+        cal.clear();
+        cal.set(1314, Calendar.NOVEMBER, 12);
+        Date d4 = cal.getTime();
+        cal.clear();
+        cal.set(1, Calendar.OCTOBER, 31);
+        Date d5 = cal.getTime();
+        cal.clear();        
+        cal.set(1, Calendar.SEPTEMBER, 12);
+        Date d7 = cal.getTime();
+        Date DATES[] = {d0, d1, d2, d3, d4, d5, FAIL_DATE, d7};
+    
+        String out = "";
+        boolean pass = true;
+        for (int i = 0; i < STRINGS_COUNT; ++i) {
+            String str = STRINGS[i];
+            Date expected = DATES[i];            
+            Date actual = null;
+            try {
+                actual = fmt.parse(str);
+            } catch (ParseException e) {
+                actual = FAIL_DATE;
+            }
+            String actStr = "";
+            if ((actual.getTime()) == FAIL_DATE.getTime()) {
+                actStr += "null";
+            } else {
+                // Yuck: See j25
+                actStr = ((DateFormat) dispFmt).format(actual);
+            }
+                               
+            if (expected.getTime() == (actual.getTime())) {
+                out += str + " => " + actStr + "\n";
+            } else {
+                String expStr = "";
+                if (expected.getTime() == FAIL_DATE.getTime()) {
+                    expStr += "null";
+                } else {
+                    // Yuck: See j25
+                    expStr = ((DateFormat) dispFmt).format(expected);
+                }
+                out += "FAIL: " + str + " => " + actStr + ", expected " + expStr + "\n";
+                pass = false;
+            }
+        }
+        if (pass) {
+            log(out);
+        } else {
+            err(out);
+        }
+    }
+    
+    /**
+     * j32 {JDK Bug 4210209 4209272}
+     * DateFormat cannot parse Feb 29 2000 when setLenient(false)
+     */
+    public void Test4210209() {
+    
+        String pattern = "MMM d, yyyy";
+        DateFormat fmt = new SimpleDateFormat(pattern, Locale.US);
+        DateFormat disp = new SimpleDateFormat("MMM dd yyyy GG", Locale.US);
+    
+        Calendar calx = fmt.getCalendar();
+        calx.setLenient(false);
+        Calendar calendar = Calendar.getInstance();
+        calendar.clear();
+        calendar.set(2000, Calendar.FEBRUARY, 29);
+        Date d = calendar.getTime();
+        String s = fmt.format(d);
+        logln(disp.format(d) + " f> " + pattern + " => \"" + s + "\"");
+        ParsePosition pos = new ParsePosition(0);
+        d = fmt.parse(s, pos);
+        logln("\"" + s + "\" p> " + pattern + " => " +
+              (d!=null?disp.format(d):"null"));
+        logln("Parse pos = " + pos.getIndex() + ", error pos = " + pos.getErrorIndex());
+        if (pos.getErrorIndex() != -1) {
+            errln("FAIL: Error index should be -1");
+        }
+    
+        // The underlying bug is in GregorianCalendar.  If the following lines
+        // succeed, the bug is fixed.  If the bug isn't fixed, they will throw
+        // an exception.
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.clear();
+        cal.setLenient(false);
+        cal.set(2000, Calendar.FEBRUARY, 29); // This should work!
+        d = cal.getTime();
+        logln("Attempt to set Calendar to Feb 29 2000: " + disp.format(d));
+    }
+    
+    public void Test714() {
+        //TimeZone Offset
+        TimeZone defaultTZ = TimeZone.getDefault();
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int defaultOffset = defaultTZ.getRawOffset();
+        int PSTOffset = PST.getRawOffset();
+        Date d = new Date(978103543000l - (defaultOffset - PSTOffset));
+        d = new Date(d.getTime() - (defaultTZ.inDaylightTime(d) ? 3600000 : 0));
+        DateFormat fmt = DateFormat.getDateTimeInstance(-1, DateFormat.MEDIUM, Locale.US);
+        String tests = "7:25:43 AM";
+        String s = fmt.format(d);
+        if (!s.equals(tests)) {
+            errln("Fail: " + s + " != " + tests);
+        } else {
+            logln("OK: " + s + " == " + tests);
+        }
+    }
+
+    static final char kArabicZero = 0x0660;
+    static final char kHindiZero  = 0x0966;
+    static final char kLatinZero  = 0x0030;
+
+    public void TestHindiArabicDigits()
+    {
+        String s;
+        char first;
+        String what;
+
+        {
+            DateFormat df = DateFormat.getInstance(new GregorianCalendar(), new Locale("hi","IN"));
+            what = "Gregorian Calendar, hindi";
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            logln(what + "=" + s);
+            first = s.charAt(0);
+            if(first<kHindiZero || first>(kHindiZero+9)) {
+                errln(what + "- wrong digit,  got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getInstance(new IslamicCalendar(), new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 21/10/1989 */
+            what = "Islamic Calendar, Arabic";
+            logln(what + ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong digit, got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getInstance(new GregorianCalendar(), new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "Gregorian,  ar_IQ, df.getInstance";
+            logln(what + ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+        {
+            DateFormat df = DateFormat.getInstance(new GregorianCalendar(), new Locale("mt","MT"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "Gregorian,  mt_MT, df.getInstance";
+            logln(what + ": " + s);
+            first = s.charAt(0);
+            if(first<kLatinZero || first>(kLatinZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getInstance(new IslamicCalendar(), new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "Islamic calendar, ar_IQ, df.getInstance";
+            logln(what+ ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "ar_IQ, getDateTimeInstance";
+            logln(what+ ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+
+        {
+            DateFormat df = DateFormat.getInstance(new JapaneseCalendar(), new Locale("ar","IQ"));
+            s = df.format(new Date(0)); /* 31/12/1969 */
+            what = "ar_IQ, Japanese Calendar, getInstance";
+            logln(what+ ": " + s);
+            first = s.charAt(0);
+            if(first<kArabicZero || first>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)first).toString());
+            }
+        }
+    }
+
+    // Ticket#5683
+    // Some ICU4J 3.6 data files contain garbage data which prevent the code to resolve another
+    // bundle as an alias.  zh_TW should be equivalent to zh_Hant_TW
+    public void TestT5683() {
+        Locale[] aliasLocales = {
+            new Locale("zh", "CN"),
+            new Locale("zh", "TW"),
+            new Locale("zh", "HK"),
+            new Locale("zh", "SG"),
+            new Locale("zh", "MO")
+        };
+
+        ULocale[] canonicalLocales = {
+            new ULocale("zh_Hans_CN"),
+            new ULocale("zh_Hant_TW"),
+            new ULocale("zh_Hant_HK"),
+            new ULocale("zh_Hans_SG"),
+            new ULocale("zh_Hant_MO")
+        };
+
+        Date d = new Date(0);
+
+        for (int i = 0; i < aliasLocales.length; i++) {
+            DateFormat dfAlias = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, aliasLocales[i]);
+            DateFormat dfCanonical = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, canonicalLocales[i]);
+
+            String sAlias = dfAlias.format(d);
+            String sCanonical = dfCanonical.format(d);
+
+            if (!sAlias.equals(sCanonical)) {
+                errln("Fail: The format result for locale " + aliasLocales[i] + " is different from the result for locale " + canonicalLocales[i]
+                        + ": " + sAlias + "[" + aliasLocales[i] + "] / " + sCanonical + "[" + canonicalLocales[i] + "]");
+            }
+        }
+    }
+    
+    
+    public void Test5006GetShortMonths() throws Exception {
+
+        // Currently supported NLV locales
+        Locale ENGLISH = new Locale("en", "US"); // We don't support 'en' alone
+        Locale ARABIC = new Locale("ar", "");
+        Locale CZECH = new Locale("cs", "");
+        Locale GERMAN = new Locale("de", "");
+        Locale GREEK = new Locale("el", "");
+        Locale SPANISH = new Locale("es", "");
+        Locale FRENCH = new Locale("fr", "");
+        Locale HUNGARIAN = new Locale("hu", "");
+        Locale ITALIAN = new Locale("it", "");
+        Locale HEBREW = new Locale("iw", "");
+        Locale JAPANESE = new Locale("ja", "");
+        Locale KOREAN = new Locale("ko", "");
+        Locale POLISH = new Locale("pl", "");
+        Locale PORTUGUESE = new Locale("pt", "BR");
+        Locale RUSSIAN = new Locale("ru", "");
+        Locale TURKISH = new Locale("tr", "");
+        Locale CHINESE_SIMPLIFIED = new Locale("zh", "CN");
+        Locale CHINESE_TRADITIONAL = new Locale("zh", "TW");
+
+        Locale[] locales = new Locale[] { ENGLISH, ARABIC, CZECH, GERMAN, GREEK, SPANISH, FRENCH,
+                HUNGARIAN, ITALIAN, HEBREW, JAPANESE, KOREAN, POLISH, PORTUGUESE, RUSSIAN, TURKISH,
+                CHINESE_SIMPLIFIED, CHINESE_TRADITIONAL };
+
+        String[] islamicTwelfthMonthLocalized = new String[locales.length];
+        String[] gregorianTwelfthMonthLocalized = new String[locales.length];
+
+        for (int i = 0; i < locales.length; i++) {
+
+            Locale locale = locales[i];
+
+            // Islamic
+            com.ibm.icu.util.Calendar islamicCalendar = new com.ibm.icu.util.IslamicCalendar(locale);
+            com.ibm.icu.text.SimpleDateFormat islamicDateFormat = (com.ibm.icu.text.SimpleDateFormat) islamicCalendar
+                    .getDateTimeFormat(com.ibm.icu.text.DateFormat.FULL, -1, locale);
+            com.ibm.icu.text.DateFormatSymbols islamicDateFormatSymbols = islamicDateFormat
+                    .getDateFormatSymbols();
+
+            String[] shortMonths = islamicDateFormatSymbols.getShortMonths();
+            String twelfthMonthLocalized = shortMonths[11];
+
+            islamicTwelfthMonthLocalized[i] = twelfthMonthLocalized;
+
+            // Gregorian
+            com.ibm.icu.util.Calendar gregorianCalendar = new com.ibm.icu.util.GregorianCalendar(
+                    locale);
+            com.ibm.icu.text.SimpleDateFormat gregorianDateFormat = (com.ibm.icu.text.SimpleDateFormat) gregorianCalendar
+                    .getDateTimeFormat(com.ibm.icu.text.DateFormat.FULL, -1, locale);
+
+            com.ibm.icu.text.DateFormatSymbols gregorianDateFormatSymbols = gregorianDateFormat
+                    .getDateFormatSymbols();
+            shortMonths = gregorianDateFormatSymbols.getShortMonths();
+            twelfthMonthLocalized = shortMonths[11];
+
+            gregorianTwelfthMonthLocalized[i] = twelfthMonthLocalized;
+
+        }
+
+        // Compare
+        for (int i = 0; i < locales.length; i++) {
+
+            String gregorianTwelfthMonth = gregorianTwelfthMonthLocalized[i];
+            String islamicTwelfthMonth = islamicTwelfthMonthLocalized[i];
+
+            logln(locales[i] + ": " + gregorianTwelfthMonth + ", " + islamicTwelfthMonth);
+            if (gregorianTwelfthMonth.equalsIgnoreCase(islamicTwelfthMonth)) {
+                errln(locales[i] + ": gregorian and islamic are same: " + gregorianTwelfthMonth
+                        + ", " + islamicTwelfthMonth);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
new file mode 100644
index 0000000..14464f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
@@ -0,0 +1,287 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/*
+ * New added, 2001-10-17 [Jing/GCL]
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Date;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+public class DateFormatRegressionTestJ extends com.ibm.icu.dev.test.TestFmwk {
+    
+    private static final String TIME_STRING = "2000/11/17 08:01:00";
+    private static final long UTC_LONG = 974476860000L;
+    private static SimpleDateFormat sdf_;
+    
+    protected void init()throws Exception{
+        sdf_ = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+        
+    }
+    public static void main(String[] args) throws Exception {
+        new DateFormatRegressionTestJ().run(args);
+    }
+    
+    //Return value of getAmPmStrings
+    public void Test4103926() {
+        String act_Ampms[];
+        String exp_Ampms[]={"AM","PM"};
+        Locale.setDefault(Locale.US);
+        
+        DateFormatSymbols dfs = new DateFormatSymbols();
+        act_Ampms = dfs.getAmPmStrings();
+        if(act_Ampms.length != exp_Ampms.length) {
+            errln("The result is not expected!");
+        } else {
+            for(int i =0; i<act_Ampms.length; i++) {
+                if(!act_Ampms[i].equals(exp_Ampms[i]))
+                    errln("The result is not expected!");
+            }
+        }
+    }
+    
+    //Missing digit in millisecone format in SimpleDateFormat 
+    public void Test4148168() {
+            Date d = new Date(1002705212906l); 
+            String[] ISOPattern = {
+                "''yyyy-MM-dd-hh.mm.ss.S''", "''yyyy-MM-dd-hh.mm.ss.SS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSS''", "''yyyy-MM-dd-hh.mm.ss.SSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSS''", "''yyyy-MM-dd-hh.mm.ss.SSSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSSS''", "''yyyy-MM-dd-hh.mm.ss.SSS000''"};
+            SimpleDateFormat aSimpleDF = (SimpleDateFormat)DateFormat.getDateTimeInstance();
+    
+            for(int i = 0; i<ISOPattern.length; i++) {
+                aSimpleDF.applyPattern( ISOPattern[i] );
+                logln( "Pattern = " + aSimpleDF.toPattern());
+                logln( "Format = " + aSimpleDF.format(d));
+            }
+    }
+    
+    //DateFormat getDateTimeInstance(int, int), invalid styles no exception
+    public void Test4213086() {
+        Date someDate = new Date();
+        String d=null;
+        try {
+            DateFormat df2 = DateFormat.getDateTimeInstance(2, -2);
+            d = df2.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 2" + "\t timeStyle = -2");
+            logln("Exception caught!");
+        }            
+        
+        try {
+            DateFormat df3 = DateFormat.getDateTimeInstance(4, 2);
+            d = df3.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 4" + "\t timeStyle = 2");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+    
+        try {
+            DateFormat df4 = DateFormat.getDateTimeInstance(-12, -12);
+            d = df4.format(someDate);
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = -12" + "\t timeStyle = -12");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+    
+        try{
+            DateFormat df5 = DateFormat.getDateTimeInstance(2, 123);
+            d = df5.format(someDate);    
+            errln("we should catch an exception here");
+        } catch(Exception e){
+            logln("dateStyle = 2" + "\t timeStyle = 123");
+            logln("Exception caught!");
+            logln("********************************************");
+        }
+        //read the value in d to get rid of the warning
+        if(d!=null){
+            logln("The value of d: " + d);
+        }
+    }
+    
+    //DateFormat.format works wrongly?
+    public void Test4250359() {
+        Locale.setDefault(Locale.US);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(101 + 1900, 9, 9, 17, 53);
+        Date d = cal.getTime();
+        DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT);
+        String act_result = tf.format(d);
+        String exp_result = "5:53 PM";
+        
+        if(!act_result.equals(exp_result)){
+            errln("The result is not expected");
+        }
+    }
+    
+    //pattern "s.S, parse '1ms'"
+    public void Test4253490() {
+        Date d = new Date(1002705212231l);
+    
+        String[] ISOPattern = {
+                "''yyyy-MM-dd-hh.mm.ss.S''", 
+                "''yyyy-MM-dd-hh.mm.ss.SS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSS''", 
+                "''yyyy-MM-dd-hh.mm.ss.SSSSSSS''"}; 
+    
+        SimpleDateFormat aSimpleDF = (SimpleDateFormat) DateFormat.getDateTimeInstance();
+        for (int i = 0; i < ISOPattern.length; i++) {
+            aSimpleDF.applyPattern(ISOPattern[i]);
+            logln("Pattern = " + aSimpleDF.toPattern());
+            logln("Format = " + aSimpleDF.format(d));
+        }
+    }
+    
+    //about regression test
+    public void Test4266432() {
+        Locale.setDefault(Locale.JAPAN);
+        Locale loc = Locale.getDefault();
+        String dateFormat = "MM/dd/yy HH:mm:ss zzz";
+        SimpleDateFormat fmt = new SimpleDateFormat(dateFormat);
+    
+        ParsePosition p0 = new ParsePosition(0);
+        logln("Under  " + loc +"  locale");
+        Date d = fmt.parse("01/22/92 04:52:00 GMT", p0);
+        logln(d.toString());
+    }
+    
+    //SimpleDateFormat inconsistent for number of digits for years
+    public void Test4358730() {
+        SimpleDateFormat sdf = new SimpleDateFormat();
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(2001,11,10);
+        Date today = cal.getTime();
+    
+        sdf.applyPattern("MM d y");
+        logln(sdf.format(today));
+        sdf.applyPattern("MM d yy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyyy");
+        logln(sdf.format(today));
+    
+        sdf.applyPattern("MM d yyyyy");
+        logln(sdf.format(today));
+    }
+    
+    //Parse invalid string
+    public void Test4375399() {
+        final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.JAPAN);
+        try{
+            Date currentTime = sdf.parse("vggf 20  01.0 9.29 ap. J.-C. at 05:26:33 GMT+08:00",
+                                new ParsePosition(0));
+            if(currentTime ==null)
+                logln("parse right");
+        } catch(Exception e){
+            errln("Error");
+        }
+    }
+    /*
+    public void Test4407042() {
+        DateParseThread d1 = new DateParseThread();
+        DateFormatThread d2 = new DateFormatThread();
+        d1.start();
+        d2.start();
+        try {
+            logln("test");
+            Thread.sleep(1000);
+        } catch (Exception e) {}
+    }*/
+    
+    public void Test4468663() {
+        Date d =new Date(-93716671115767l);
+        String origin_d = d.toString();
+        String str;
+        final String pattern = new String("EEEE, MMMM d, yyyy");
+        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+
+        if (sdf.getTimeZone().useDaylightTime()) {
+            logln("original date: " + origin_d.toString());
+            str = sdf.format(d);
+            logln(" after format----->" + str);
+            
+            d = sdf.parse(str, new ParsePosition(0));
+            logln(" after parse----->" + d.toString());
+    
+            str = sdf.format(d);
+            logln(" after format----->" + str);
+    
+            d = sdf.parse(str, new ParsePosition(0));
+            logln(" after parse----->" + d.toString());
+    
+            str = sdf.format(d);
+            logln(" after format----->" + str);        
+        }
+    }
+    
+    //Class used by Test4407042
+    class DateParseThread extends Thread {
+        public void run() {
+            SimpleDateFormat sdf = (SimpleDateFormat) sdf_.clone();
+            TimeZone defaultTZ = TimeZone.getDefault();
+            TimeZone PST = TimeZone.getTimeZone("PST");
+            int defaultOffset = defaultTZ.getRawOffset();
+            int PSTOffset = PST.getRawOffset();
+            int offset = defaultOffset - PSTOffset;
+            long ms = UTC_LONG - offset;
+            try {
+                int i = 0;
+                while (i < 10000) {
+                    Date date = sdf.parse(TIME_STRING);
+                    long t = date.getTime();
+                    i++;
+                    if (t != ms) {
+                        throw new ParseException("Parse Error: " + i + " (" + sdf.format(date) 
+                                  + ") " + t + " != " + ms, 0);
+                    }
+                }
+            } catch (Exception e) {
+                errln("parse error: " + e.getMessage());
+            }
+        }
+    }
+    
+    //Class used by Test4407042
+    class DateFormatThread extends Thread {
+        public void run() {            
+            SimpleDateFormat sdf = (SimpleDateFormat) sdf_.clone();
+            TimeZone tz = TimeZone.getTimeZone("PST");
+            sdf.setTimeZone(tz);
+            int i = 0;
+            while (i < 10000) {
+                i++;
+                String s = sdf.format(new Date(UTC_LONG));
+                if (!s.equals(TIME_STRING)) {
+                    errln("Format Error: " + i + " " + s + " != " 
+                                    + TIME_STRING);
+                }
+            }
+        }
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java b/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
new file mode 100644
index 0000000..26e7757
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
@@ -0,0 +1,271 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatRoundTripTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmtrtts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.util.Date;
+import java.util.Random;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+/** 
+ * Performs round-trip tests for DateFormat
+ **/
+public class DateFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
+    public boolean INFINITE = false;
+    public boolean quick = true;
+    private SimpleDateFormat dateFormat;
+    private Calendar getFieldCal;
+    private int SPARSENESS = 18;
+    private int TRIALS = 4;
+    private int DEPTH = 5;
+    private Random ran;
+
+    public static void main(String[] args) throws Exception {
+        new DateFormatRoundTripTest().run(args);
+    }
+    
+    public void TestDateFormatRoundTrip() {
+        dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss.SSS zzz yyyy G");
+        getFieldCal = Calendar.getInstance();
+        ran = createRandom(); // use test framework's random seed
+
+        final Locale[] avail = DateFormat.getAvailableLocales();
+        int locCount = avail.length;
+        logln("DateFormat available locales: " + locCount);
+        if (quick) {
+            if (locCount > 5)
+                locCount = 5;
+            logln("Quick mode: only testing first 5 Locales");
+        }
+        TimeZone tz = TimeZone.getDefault();
+        logln("Default TimeZone:             " + tz.getID());
+    
+        if (INFINITE) {
+            // Special infinite loop test mode for finding hard to reproduce errors
+            Locale loc = Locale.getDefault();
+            logln("ENTERING INFINITE TEST LOOP FOR Locale: " + loc.getDisplayName());
+            for (;;) {
+                _test(loc);
+            }
+        } else {        
+            _test(Locale.getDefault());
+            for (int i = 0; i < locCount; ++i) {
+                _test(avail[i]);
+            }
+        }
+    }
+    
+    public String styleName(int s) {
+        switch (s) {
+            case DateFormat.SHORT :
+                return "SHORT";
+            case DateFormat.MEDIUM :
+                return "MEDIUM";
+            case DateFormat.LONG :
+                return "LONG";
+            case DateFormat.FULL :
+                return "FULL";
+            default :
+                return "Unknown";
+        }
+    }
+    
+    public void _test(Locale loc) {
+        if (!INFINITE) {
+            logln("Locale: " + loc.getDisplayName());
+        }
+        // Total possibilities = 24
+        //  4 date
+        //  4 time
+        //  16 date-time
+        boolean[] TEST_TABLE = new boolean[24];
+        int i = 0;
+        for (i = 0; i < 24; ++i)
+            TEST_TABLE[i] = true;
+    
+        // If we have some sparseness, implement it here.  Sparseness decreases
+        // test time by eliminating some tests, up to 23.
+        for (i = 0; i < SPARSENESS; i++) {
+            int random = (int) (ran.nextDouble() * 24);
+            if (random >= 0 && random < 24 && TEST_TABLE[i]) {
+                TEST_TABLE[random] = false;
+            }
+        }    
+        
+        int itable = 0;
+        int style = 0;
+        for (style = DateFormat.FULL; style <= DateFormat.SHORT; ++style) {
+            if (TEST_TABLE[itable++]) {
+                logln("Testing style " + styleName(style)); 
+                DateFormat df = DateFormat.getDateInstance(style, loc); 
+                _test(df, false);
+            }
+        }
+    
+        for (style = DateFormat.FULL; style <= DateFormat.SHORT; ++style) {
+            if (TEST_TABLE[itable++]) {
+                logln("Testing style " + styleName(style));
+                DateFormat  df = DateFormat.getTimeInstance(style, loc); 
+                _test(df, true);
+            }
+        }
+    
+        for (int dstyle = DateFormat.FULL; dstyle <= DateFormat.SHORT; ++dstyle) {
+            for (int tstyle = DateFormat.FULL; tstyle <= DateFormat.SHORT; ++tstyle) {
+                if (TEST_TABLE[itable++]) {
+                    logln("Testing dstyle " + styleName(dstyle) + ", tstyle " + styleName(tstyle)); 
+                    DateFormat df = DateFormat.getDateTimeInstance(dstyle, tstyle, loc); 
+                    _test(df, false);
+                }
+            }
+        }
+    }
+    
+    public void _test(DateFormat fmt, boolean timeOnly) {
+    
+        if (!(fmt instanceof SimpleDateFormat)) {
+            errln("DateFormat wasn't a SimpleDateFormat");
+            return;
+        }
+    
+        String pat = ((SimpleDateFormat) fmt).toPattern();
+        logln(pat);
+    
+        // NOTE TO MAINTAINER
+        // This indexOf check into the pattern needs to be refined to ignore
+        // quoted characters.  Currently, this isn't a problem with the locale
+        // patterns we have, but it may be a problem later.
+    
+        boolean hasEra = (pat.indexOf("G") != -1);
+        boolean hasZoneDisplayName = (pat.indexOf("z") != -1) || (pat.indexOf("v") != -1) || (pat.indexOf("V") != -1);
+    
+        // Because patterns contain incomplete data representing the Date,
+        // we must be careful of how we do the roundtrip.  We start with
+        // a randomly generated Date because they're easier to generate.
+        // From this we get a string.  The string is our real starting point,
+        // because this string should parse the same way all the time.  Note
+        // that it will not necessarily parse back to the original date because
+        // of incompleteness in patterns.  For example, a time-only pattern won't
+        // parse back to the same date.
+    
+        try {
+            for (int i = 0; i < TRIALS; ++i) {
+                Date[] d = new Date[DEPTH];
+                String[] s = new String[DEPTH];
+    
+                d[0] = generateDate();
+                
+                // We go through this loop until we achieve a match or until
+                // the maximum loop count is reached.  We record the points at
+                // which the date and the string starts to match.  Once matching
+                // starts, it should continue.
+                int loop;
+                int dmatch = 0; // d[dmatch].getTime() == d[dmatch-1].getTime()
+                int smatch = 0; // s[smatch].equals(s[smatch-1])
+                for (loop = 0; loop < DEPTH; ++loop) {
+                    if (loop > 0) {
+                        d[loop] = fmt.parse(s[loop - 1]);
+                    }
+    
+                    s[loop] = fmt.format(d[loop]);
+    
+                    if (loop > 0) {
+                        if (smatch == 0) {
+                            boolean match = s[loop].equals(s[loop - 1]);
+                            if (smatch == 0) {
+                                if (match)
+                                    smatch = loop;
+                            } else
+                                if (!match)
+                                    errln("FAIL: String mismatch after match");
+                        }
+    
+                        if (dmatch == 0) {
+                            // {sfb} watch out here, this might not work
+                            boolean match = d[loop].getTime() == d[loop - 1].getTime();
+                            if (dmatch == 0) {
+                                if (match)
+                                    dmatch = loop;
+                            } else
+                                if (!match)
+                                    errln("FAIL: Date mismatch after match");
+                        }
+    
+                        if (smatch != 0 && dmatch != 0)
+                            break;
+                    }
+                }
+                // At this point loop == DEPTH if we've failed, otherwise loop is the
+                // max(smatch, dmatch), that is, the index at which we have string and
+                // date matching.
+    
+                // Date usually matches in 2.  Exceptions handled below.
+                int maxDmatch = 2;
+                int maxSmatch = 1;
+                if (dmatch > maxDmatch || smatch > maxSmatch) {
+                    //If the Date is BC
+                    if (!timeOnly && !hasEra && getField(d[0], Calendar.ERA) == GregorianCalendar.BC) {
+                        maxDmatch = 3;
+                        maxSmatch = 2;
+                    }
+                    if (hasZoneDisplayName &&
+                            (fmt.getTimeZone().inDaylightTime(d[0])
+                                    || fmt.getTimeZone().inDaylightTime(d[1])
+                                    || d[0].getTime() < 0L /* before 1970 */)) {
+                        maxSmatch = 2;
+                        if (timeOnly) {
+                            maxDmatch = 3;
+                        }
+                    }
+                }
+                    
+                if (dmatch > maxDmatch || smatch > maxSmatch) {
+                    SimpleDateFormat sdf = new SimpleDateFormat("EEEE, MMMM d, yyyy HH:mm:ss, z G", Locale.US);
+                    logln("Date = " + sdf.format(d[0]) + "; ms = " + d[0].getTime());
+                    logln("Dmatch: " + dmatch + " maxD: " + maxDmatch + " Smatch:" + smatch + " maxS:" + maxSmatch);
+                    for (int j = 0; j <= loop && j < DEPTH; ++j) {
+                        StringBuffer temp = new StringBuffer("");
+                        FieldPosition pos = new FieldPosition(0);
+                        logln((j > 0 ? " P> " : "    ") + dateFormat.format(d[j], temp, pos) 
+                            + " F> " + s[j] + (j > 0 && d[j].getTime() == d[j - 1].getTime() ? " d==" : "")
+                            + (j > 0 && s[j].equals(s[j - 1]) ? " s==" : ""));
+                    }
+                    errln("Pattern: " + pat + " failed to match" + "; ms = " + d[0].getTime());
+                }
+            }
+        } catch (ParseException e) {
+            errln("Exception: " + e.getMessage());
+            logln(e.toString());
+        }
+    }
+    
+    public int getField(Date d, int f) {
+        getFieldCal.setTime(d);
+        int ret = getFieldCal.get(f);
+        return ret;
+    }
+    
+    public Date generateDate() {
+        double a = ran.nextDouble();
+        // Now 'a' ranges from 0..1; scale it to range from 0 to 8000 years
+        a *= 8000;
+        // Range from (4000-1970) BC to (8000-1970) AD
+        a -= 4000;
+        // Now scale up to ms
+        a *= 365.25 * 24 * 60 * 60 * 1000;
+        return new Date((long)a);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateFormatTest.java b/src/com/ibm/icu/dev/test/format/DateFormatTest.java
new file mode 100644
index 0000000..c5f03b4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateFormatTest.java
@@ -0,0 +1,3413 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateFormatTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmttst.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.AttributedCharacterIterator;
+import java.text.CharacterIterator;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.ChineseDateFormat;
+import com.ibm.icu.text.ChineseDateFormatSymbols;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ChineseCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.VersionInfo;
+
+public class DateFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new DateFormatTest().run(args);
+    }
+
+    /**
+     * Verify that patterns have the correct values and could produce the 
+     * the DateFormat instances that contain the correct localized patterns.
+     */
+    public void TestPatterns() {
+        final String[][] EXPECTED = {
+                {DateFormat.MINUTE_SECOND, "ms", "en", "m:s"},
+                {DateFormat.HOUR24_MINUTE, "Hm", "en", "H:m"},
+                {DateFormat.HOUR24_MINUTE_SECOND, "Hms","en","H:m:s"},
+                {DateFormat.HOUR_MINUTE, "hm","en","h:m a"},
+                {DateFormat.HOUR_MINUTE_SECOND, "hms","en","h:m:s a"},
+                {DateFormat.DAY, "d","en","d"},
+                {DateFormat.STANDALONE_MONTH, "LLLL","en","LLLL"},
+                {DateFormat.ABBR_STANDALONE_MONTH, "LLL","en","LLL"},
+                {DateFormat.YEAR, "y","en","y"},
+                {DateFormat.MONTH_DAY, "MMMMd","en","MMMM d"},
+                {DateFormat.ABBR_MONTH_DAY, "MMMd","en","MMM d"},
+                {DateFormat.NUM_MONTH_DAY, "Md","en","M/d"},
+                {DateFormat.MONTH_WEEKDAY_DAY, "MMMMEEEEd","en","EEEE, MMMM d"},
+                {DateFormat.ABBR_MONTH_WEEKDAY_DAY, "MMMEd","en","E, MMM d"},
+                {DateFormat.NUM_MONTH_WEEKDAY_DAY, "MEd","en","E, M/d"},
+                {DateFormat.YEAR_MONTH, "yMMMM","en","MMMM y"},
+                {DateFormat.YEAR_ABBR_MONTH, "yMMM","en","MMM y"},
+                {DateFormat.YEAR_NUM_MONTH, "yM","en","M/y"}, 
+                {DateFormat.YEAR_ABBR_MONTH_WEEKDAY_DAY, "yMMMEd", "en", "E, MMM d, y"},
+                {DateFormat.YEAR_NUM_MONTH_WEEKDAY_DAY, "yMEd", "en", "E, M/d/y"},
+                {DateFormat.YEAR_QUARTER, "yQQQ", "en", "QQQ y"},
+                {DateFormat.YEAR_ABBR_QUARTER, "yQ", "en", "Q y"}
+        };
+        
+        for (int i = 0; i < EXPECTED.length; i++) {
+            
+            // Verify that patterns have the correct values
+            String actualPattern = EXPECTED[i][0];
+            String expectedPattern = EXPECTED[i][1];
+            ULocale locale = new ULocale(EXPECTED[i][2], "", "");
+            if (!actualPattern.equals(expectedPattern)) {
+                errln("FAILURE! Expected pattern: " + expectedPattern + 
+                        " but was: " + actualPattern);
+            }
+            
+            // Verify that DataFormat instances produced contain the correct 
+            // localized patterns
+            DateFormat date1 = DateFormat.getPatternInstance(actualPattern, 
+                    locale);
+            DateFormat date2 = DateFormat.getPatternInstance(Calendar.getInstance(locale),
+                    actualPattern, locale);
+            
+            String expectedLocalPattern = EXPECTED[i][3];
+            String actualLocalPattern1 = ((SimpleDateFormat)date1).toLocalizedPattern();
+            String actualLocalPattern2 = ((SimpleDateFormat)date2).toLocalizedPattern();
+            if (!actualLocalPattern1.equals(expectedLocalPattern)) {
+                errln("FAILURE! Expected local pattern: " + expectedLocalPattern 
+                        + " but was: " + actualLocalPattern1);
+            }       
+            if (!actualLocalPattern2.equals(expectedLocalPattern)) {
+                errln("FAILURE! Expected local pattern: " + expectedLocalPattern 
+                        + " but was: " + actualLocalPattern2);
+            }      
+        }
+    }
+
+    // Test written by Wally Wedel and emailed to me.
+    public void TestWallyWedel() {
+        /*
+         * Instantiate a TimeZone so we can get the ids.
+         */
+        //TimeZone tz = new SimpleTimeZone(7, ""); //The variable is never used
+        /*
+         * Computational variables.
+         */
+        int offset, hours, minutes, seconds;
+        /*
+         * Instantiate a SimpleDateFormat set up to produce a full time
+         zone name.
+         */
+        SimpleDateFormat sdf = new SimpleDateFormat("zzzz");
+        /*
+         * A String array for the time zone ids.
+         */
+    
+        final String[] ids = TimeZone.getAvailableIDs();
+        int ids_length = ids.length; //when fixed the bug should comment it out
+    
+        /*
+         * How many ids do we have?
+         */
+        logln("Time Zone IDs size:" + ids_length);
+        /*
+         * Column headings (sort of)
+         */
+        logln("Ordinal ID offset(h:m) name");
+        /*
+         * Loop through the tzs.
+         */
+        Date today = new Date();
+        Calendar cal = Calendar.getInstance();
+        for (int i = 0; i < ids_length; i++) {
+            logln(i + " " + ids[i]);
+            TimeZone ttz = TimeZone.getTimeZone(ids[i]);
+            // offset = ttz.getRawOffset();
+            cal.setTimeZone(ttz);
+            cal.setTime(today);
+            offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
+            // logln(i + " " + ids[i] + " offset " + offset);
+            String sign = "+";
+            if (offset < 0) {
+                sign = "-";
+                offset = -offset;
+            }
+            hours = offset / 3600000;
+            minutes = (offset % 3600000) / 60000;
+            seconds = (offset % 60000) / 1000;
+            String dstOffset = sign + (hours < 10 ? "0" : "") + hours
+                    + ":" + (minutes < 10 ? "0" : "") + minutes; 
+            if (seconds != 0) {
+                dstOffset += ":" + (seconds < 10 ? "0" : "") + seconds;
+            }
+            /*
+             * Instantiate a date so we can display the time zone name.
+             */
+            sdf.setTimeZone(ttz);
+            /*
+             * Format the output.
+             */
+            StringBuffer fmtOffset = new StringBuffer("");
+            FieldPosition pos = new FieldPosition(0);
+            
+            try {
+                fmtOffset = sdf.format(today, fmtOffset, pos);
+            } catch (Exception e) {            
+                logln("Exception:" + e);
+                continue;
+            }
+            // UnicodeString fmtOffset = tzS.toString();
+            String fmtDstOffset = null;
+            if (fmtOffset.toString().startsWith("GMT")) {
+                //fmtDstOffset = fmtOffset.substring(3);
+                fmtDstOffset = fmtOffset.substring(3, fmtOffset.length());
+            }
+            /*
+             * Show our result.
+             */
+    
+            boolean ok = fmtDstOffset == null || fmtDstOffset.equals("") || fmtDstOffset.equals(dstOffset);
+            if (ok) {
+                logln(i + " " + ids[i] + " " + dstOffset + " "
+                      + fmtOffset + (fmtDstOffset != null ? " ok" : " ?")); 
+            } else {
+                errln(i + " " + ids[i] + " " + dstOffset + " " + fmtOffset + " *** FAIL ***");
+            }
+        
+        }
+    }
+    
+    public void TestEquals() {
+        DateFormat fmtA = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.FULL); 
+        DateFormat fmtB = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.FULL); 
+        if (!fmtA.equals(fmtB))
+            errln("FAIL");    
+    }
+    
+    /**
+     * Test the parsing of 2-digit years.
+     */
+    public void TestTwoDigitYearDSTParse() {
+    
+        SimpleDateFormat fullFmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss.SSS zzz yyyy G"); 
+        SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM-yy h:mm:ss 'o''clock' a z", Locale.ENGLISH); 
+        String s = "03-Apr-04 2:20:47 o'clock AM PST";
+    
+        /*
+         * SimpleDateFormat(pattern, locale) Construct a SimpleDateDateFormat using
+         * the given pattern, the locale and using the TimeZone.getDefault();
+         * So it need to add the timezone offset on hour field. 
+         * ps. the Method Calendar.getTime() used by SimpleDateFormat.parse() always 
+         * return Date value with TimeZone.getDefault() [Richard/GCL]
+         */
+        
+        TimeZone defaultTZ = TimeZone.getDefault();
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        int defaultOffset = defaultTZ.getRawOffset();
+        int PSTOffset = PST.getRawOffset();
+        int hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000);
+        // hour is the expected hour of day, in units of seconds
+        hour = ((hour < 0) ? hour + 24 : hour) * 60*60;
+        try {
+            Date d = fmt.parse(s);
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(d);
+            //DSTOffset
+            hour += defaultTZ.inDaylightTime(d) ? 1 : 0;
+            
+            logln(s + " P> " + ((DateFormat) fullFmt).format(d));
+            // hr is the actual hour of day, in units of seconds
+            // adjust for DST
+            int hr = cal.get(Calendar.HOUR_OF_DAY) * 60*60 -
+                cal.get(Calendar.DST_OFFSET) / 1000;
+            if (hr != hour)
+                errln("FAIL: Hour (-DST) = " + hr / (60*60.0)+
+                      "; expected " + hour / (60*60.0));
+        } catch (ParseException e) {
+            errln("Parse Error:" + e.getMessage());
+        }
+    
+    }
+    
+    /**
+     * Verify that returned field position indices are correct.
+     */
+    public void TestFieldPosition() {
+        int i, j, exp;
+        StringBuffer buf = new StringBuffer();
+
+        // Verify data
+        if (VersionInfo.ICU_VERSION.compareTo(VersionInfo.getInstance(3, 7)) >= 0) {
+            DateFormatSymbols rootSyms = new DateFormatSymbols(new Locale("", "", ""));
+            assertEquals("patternChars", PATTERN_CHARS, rootSyms.getLocalPatternChars());
+        }
+        
+        assertTrue("DATEFORMAT_FIELD_NAMES", DATEFORMAT_FIELD_NAMES.length == DateFormat.FIELD_COUNT);
+        if(DateFormat.FIELD_COUNT != PATTERN_CHARS.length()){
+            errln("Did not get the correct value for DateFormat.FIELD_COUNT. Expected:  "+ PATTERN_CHARS.length());
+        }
+
+        // Create test formatters
+        final int COUNT = 4;
+        DateFormat[] dateFormats = new DateFormat[COUNT];
+        dateFormats[0] = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
+        dateFormats[1] = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.FRANCE);
+        // Make the pattern "G y M d..."
+        buf.append(PATTERN_CHARS);
+        for (j=buf.length()-1; j>=0; --j) buf.insert(j, ' ');
+        dateFormats[2] = new SimpleDateFormat(buf.toString(), Locale.US);
+        // Make the pattern "GGGG yyyy MMMM dddd..."
+        for (j=buf.length()-1; j>=0; j-=2) {
+            for (i=0; i<3; ++i) {
+                buf.insert(j, buf.charAt(j));
+            }
+        }
+        dateFormats[3] = new SimpleDateFormat(buf.toString(), Locale.US);
+
+        Date aug13 = new Date((long) 871508052513.0);
+
+        // Expected output field values for above DateFormats on aug13
+        // Fields are given in order of DateFormat field number
+        final String EXPECTED[] = {
+             "", "1997", "August", "13", "", "", "34", "12", "",
+            "Wednesday", "", "", "", "", "PM", "2", "", "", "", "", "", "", "", "", "PT","","","","","",
+
+            "", "1997", "ao\u00FBt", "13", "", "14", "34", "12", "",
+            "mercredi", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "\u00C9tats-Unis (Los Angeles)","","","","","",
+
+            "AD", "1997", "8", "13", "14", "14", "34", "12", "5",
+            "Wed", "225", "2", "33", "3", "PM", "2", "2", "PDT", "1997", "4", "1997", "2450674", "52452513", "-0700", "PT","4","8","3","3","PDT",
+
+            "Anno Domini", "1997", "August", "0013", "0014", "0014", "0034", "0012", "5130",
+            "Wednesday", "0225", "0002", "0033", "0003", "PM", "0002", "0002", "Pacific Daylight Time", "1997",
+            "0004", "1997", "2450674", "52452513", "GMT-07:00", "Pacific Time","Wednesday","August", "3rd quarter", "3rd quarter","United States (Los Angeles)",
+        };
+
+        assertTrue("data size", EXPECTED.length == COUNT * DateFormat.FIELD_COUNT);
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        final DateFormat.Field[] DTFMT_FIELDS = {
+            DateFormat.Field.AM_PM,
+            DateFormat.Field.DAY_OF_MONTH,
+            DateFormat.Field.DAY_OF_WEEK,
+            DateFormat.Field.DAY_OF_WEEK_IN_MONTH,
+            DateFormat.Field.DAY_OF_YEAR,
+
+            DateFormat.Field.DOW_LOCAL,
+            DateFormat.Field.ERA,
+            DateFormat.Field.EXTENDED_YEAR,
+            DateFormat.Field.HOUR_OF_DAY0,
+            DateFormat.Field.HOUR_OF_DAY1,
+
+            DateFormat.Field.HOUR0,
+            DateFormat.Field.HOUR1,
+            DateFormat.Field.JULIAN_DAY,
+            DateFormat.Field.MILLISECOND,
+            DateFormat.Field.MILLISECONDS_IN_DAY,
+
+            DateFormat.Field.MINUTE,
+            DateFormat.Field.MONTH,
+            DateFormat.Field.QUARTER,
+            DateFormat.Field.SECOND,
+            DateFormat.Field.TIME_ZONE,
+
+            DateFormat.Field.WEEK_OF_MONTH,
+            DateFormat.Field.WEEK_OF_YEAR,
+            DateFormat.Field.YEAR,
+            DateFormat.Field.YEAR_WOY,
+        };
+
+        final String[][] EXPECTED_BY_FIELD = {
+            {"PM", "13", "Wednesday", "", "",
+             "", "", "", "", "",
+             "", "2", "", "", "",
+             "34", "August", "", "12", "PT",
+             "", "", "1997", ""},
+
+            {"", "13", "mercredi", "", "",
+             "", "", "", "14", "",
+             "", "", "", "", "",
+             "34", "ao\u00FBt", "", "12", "\u00C9tats-Unis (Los Angeles)",
+             "", "", "1997", ""},
+
+            {"PM", "13", "Wed", "2", "225",
+             "4", "AD", "1997", "14", "14",
+             "2", "2", "2450674", "5", "52452513",
+             "34", "8", "3", "12", "PDT",
+             "3", "33", "1997", "1997"},
+
+            {"PM", "0013", "Wednesday", "0002", "0225",
+             "0004", "Anno Domini", "1997", "0014", "0014",
+             "0002", "0002", "2450674", "5130", "52452513",
+             "0034", "August", "3rd quarter", "0012", "Pacific Daylight Time",
+             "0003", "0033", "1997", "1997"},
+        };
+//#endif
+
+        TimeZone PT = TimeZone.getTimeZone("America/Los_Angeles");
+        for (j = 0, exp = 0; j < COUNT; ++j) {
+            //  String str;
+            DateFormat df = dateFormats[j];
+            df.setTimeZone(PT);
+            logln(" Pattern = " + ((SimpleDateFormat) df).toPattern());
+            try {
+                logln("  Result = " + df.format(aug13));
+            } catch (Exception e) {
+                errln("FAIL: " + e);
+                e.printStackTrace();
+                continue;
+            }
+
+            FieldPosition pos;
+            String field;
+
+            for (i = 0; i < DateFormat.FIELD_COUNT; ++i, ++exp) {
+                pos = new FieldPosition(i);
+                buf.setLength(0);
+                df.format(aug13, buf, pos);    
+                field = buf.substring(pos.getBeginIndex(), pos.getEndIndex());
+                assertEquals("pattern#" + j + " field #" + i + " " + DATEFORMAT_FIELD_NAMES[i],
+                             EXPECTED[exp], field);
+            }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // FieldPostion initialized by DateFormat.Field trac#6089
+            for(i = 0; i < DTFMT_FIELDS.length; i++) {
+                // The format method only set position for the first occurrence of
+                // the specified field.
+                pos = new FieldPosition(DTFMT_FIELDS[i]);
+                buf.setLength(0);
+                df.format(aug13, buf, pos);
+                field = buf.substring(pos.getBeginIndex(), pos.getEndIndex());
+                assertEquals("pattern#" + j + " " + DTFMT_FIELDS[i].toString(), EXPECTED_BY_FIELD[j][i], field);
+            }
+//#endif
+        }
+    }
+    /**
+     * This MUST be kept in sync with DateFormatSymbols.patternChars.
+     */
+    static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV";
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * A list of the DateFormat.Field.
+     * This MUST be kept in sync with PATTERN_CHARS above.
+     */
+    static final DateFormat.Field[] DATEFORMAT_FIELDS = {
+        DateFormat.Field.ERA,           // G
+        DateFormat.Field.YEAR,          // y
+        DateFormat.Field.MONTH,         // M
+        DateFormat.Field.DAY_OF_MONTH,  // d
+        DateFormat.Field.HOUR_OF_DAY1,  // k
+        DateFormat.Field.HOUR_OF_DAY0,  // H
+        DateFormat.Field.MINUTE,        // m
+        DateFormat.Field.SECOND,        // s
+        DateFormat.Field.MILLISECOND,   // S
+        DateFormat.Field.DAY_OF_WEEK,   // E
+        DateFormat.Field.DAY_OF_YEAR,   // D
+        DateFormat.Field.DAY_OF_WEEK_IN_MONTH,  // F
+        DateFormat.Field.WEEK_OF_YEAR,  // w
+        DateFormat.Field.WEEK_OF_MONTH, // W
+        DateFormat.Field.AM_PM,         // a
+        DateFormat.Field.HOUR1,         // h
+        DateFormat.Field.HOUR0,         // K
+        DateFormat.Field.TIME_ZONE,     // z
+        DateFormat.Field.YEAR_WOY,      // Y
+        DateFormat.Field.DOW_LOCAL,     // e
+        DateFormat.Field.EXTENDED_YEAR, // u
+        DateFormat.Field.JULIAN_DAY,    // g
+        DateFormat.Field.MILLISECONDS_IN_DAY,   // A
+        DateFormat.Field.TIME_ZONE,     // Z
+        DateFormat.Field.TIME_ZONE,     // v
+        DateFormat.Field.DAY_OF_WEEK,   // c
+        DateFormat.Field.MONTH,         // L
+        DateFormat.Field.QUARTER,       // Q
+        DateFormat.Field.QUARTER,       // q
+        DateFormat.Field.TIME_ZONE,     // V
+    };
+//#endif
+
+    /**
+     * A list of the names of all the fields in DateFormat.
+     * This MUST be kept in sync with DateFormat.
+     */
+    static final String DATEFORMAT_FIELD_NAMES[] = {
+        "ERA_FIELD",
+        "YEAR_FIELD",
+        "MONTH_FIELD",
+        "DATE_FIELD",
+        "HOUR_OF_DAY1_FIELD",
+        "HOUR_OF_DAY0_FIELD",
+        "MINUTE_FIELD",
+        "SECOND_FIELD",
+        "MILLISECOND_FIELD",
+        "DAY_OF_WEEK_FIELD",
+        "DAY_OF_YEAR_FIELD",
+        "DAY_OF_WEEK_IN_MONTH_FIELD",
+        "WEEK_OF_YEAR_FIELD",
+        "WEEK_OF_MONTH_FIELD",
+        "AM_PM_FIELD",
+        "HOUR1_FIELD",
+        "HOUR0_FIELD",
+        "TIMEZONE_FIELD",
+        "YEAR_WOY_FIELD",
+        "DOW_LOCAL_FIELD",
+        "EXTENDED_YEAR_FIELD",
+        "JULIAN_DAY_FIELD",
+        "MILLISECONDS_IN_DAY_FIELD",
+        "TIMEZONE_RFC_FIELD",
+        "GENERIC_TIMEZONE_FIELD",
+        "STAND_ALONE_DAY_FIELD",
+        "STAND_ALONE_MONTH_FIELD",
+        "QUARTER_FIELD",
+        "STAND_ALONE_QUARTER_FIELD",
+        "TIMEZONE_SPECIAL_FIELD",
+    };
+
+    /**
+     * General parse/format tests.  Add test cases as needed.
+     */
+    public void TestGeneral() {
+        
+        String DATA[] = {
+            "yyyy MM dd HH:mm:ss.SSS",
+
+            // Milliseconds are left-justified, since they format as fractions of a second
+            // Both format and parse should round HALF_UP
+            "y/M/d H:mm:ss.S", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.6", "2004 03 10 16:36:31.600",
+            "y/M/d H:mm:ss.SS", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.57", "2004 03 10 16:36:31.570",
+            "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567",
+            "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.568", "2004/3/10 16:36:31.5680",
+        };
+        expect(DATA, new Locale("en", "", ""));
+    }
+
+    public void TestGenericTime() {
+
+
+        // any zone pattern should parse any zone
+        Locale en = new Locale("en", "", "");
+        String ZDATA[] = {
+            "yyyy MM dd HH:mm zzz",
+            // round trip
+            "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Standard Time",
+            "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST",
+            "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time",
+            "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT",
+            // non-generic timezone string influences dst offset even if wrong for date/time
+            "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "2004/1/1 0:00 PST",
+            "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "2004/1/1 0:00 Pacific Time",
+            "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "2004/7/1 2:00 PDT",
+            "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "2004/7/1 2:00 Pacific Time",
+            // generic timezone generates dst offset appropriate for local time
+            "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST",
+            "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time",
+            "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PDT",
+            "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 Pacific Time",
+            // daylight savings time transition edge cases.
+            // time to parse does not really exist, PT interpreted as earlier time
+            "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PT", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PDT",
+            "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PST", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PDT",
+            "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PDT", "2005 04 03 01:30 PST", "2005/4/3 1:30 PST",
+            "y/M/d H:mm v", "pf", "2005/4/3 2:30 PT", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PT",
+            "y/M/d H:mm v", "pf", "2005/4/3 2:30 PST", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PT",
+            "y/M/d H:mm v", "pf", "2005/4/3 2:30 PDT", "2005 04 03 01:30 PST", "2005/4/3 1:30 PT",
+            "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3:30",
+            // time to parse is ambiguous, PT interpreted as later time
+            "y/M/d H:mm zzz", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30 PST",
+            "y/M/d H:mm v", "pf", "2005/10/30 1:30 PT", "2005 10 30  01:30 PST", "2005/10/30 1:30 PT",
+            "y/M/d H:mm", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30",
+
+            "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "2004/10/31 1:30 PST",
+             "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PST", "2004 10 31 01:30 PST", "2004/10/31 1:30 PST",
+             "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PDT", "2004 10 31 01:30 PDT", "2004/10/31 1:30 PDT",
+             "y/M/d H:mm v", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "2004/10/31 1:30 PT",
+             "y/M/d H:mm v", "pf", "2004/10/31 1:30 PST", "2004 10 31 01:30 PST", "2004/10/31 1:30 PT",
+             "y/M/d H:mm v", "pf", "2004/10/31 1:30 PDT", "2004 10 31 01:30 PDT", "2004/10/31 1:30 PT",
+             "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/31 1:30",
+            // Below is actually an invalid test case.  See the note in #5910.  Disable the case for now.
+            // TODO: Revisit after 3.8
+            //"y/M/d H:mm vvvv", "pf", "2004/10/31 1:30 Argentina Time", "2004 10 30 21:30 PDT", "2004/10/31 1:30 Argentina Time",
+        };
+        expect(ZDATA, en);
+
+        logln("cross format/parse tests");
+        final String basepat = "yy/MM/dd H:mm ";
+        final SimpleDateFormat[] formats = { 
+            new SimpleDateFormat(basepat + "v", en),
+            new SimpleDateFormat(basepat + "vvvv", en),
+            new SimpleDateFormat(basepat + "zzz", en),
+            new SimpleDateFormat(basepat + "zzzz", en)
+        };
+
+        final SimpleDateFormat univ = new SimpleDateFormat("yyyy MM dd HH:mm zzz", en);
+        final String[] times = { "2004 01 02 03:04 PST", "2004 07 08 09:10 PDT" };
+        for (int i = 0; i < times.length; ++i) {
+            try {
+                Date d = univ.parse(times[i]);
+                logln("time: " + d);
+                for (int j = 0; j < formats.length; ++j) {
+                    String test = formats[j].format(d);
+                    logln("test: '" + test + "'");
+                    for (int k = 0; k < formats.length; ++k) {
+                        try {
+                            Date t = formats[k].parse(test);
+                            if (!d.equals(t)) {
+                                errln("format " + k + 
+                                      " incorrectly parsed output of format " + j + 
+                                      " (" + test + "), returned " +
+                                      t + " instead of " + d);
+                            } else {
+                                logln("format " + k + " parsed ok");
+                            }
+                        }
+                        catch (ParseException e) {
+                            errln("format " + k + 
+                                  " could not parse output of format " + j + 
+                                  " (" + test + ")");
+                        }
+                    }
+                }
+            }
+            catch (ParseException e) {
+                errln("univ could not parse: " + times[i]);
+            }
+        }
+
+    }
+
+    public void TestGenericTimeZoneOrder() {
+        // generic times should parse the same no matter what the placement of the time zone string
+        // should work for standard and daylight times
+
+        String XDATA[] = {
+            "yyyy MM dd HH:mm zzz",
+            // standard time, explicit daylight/standard
+            "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST",
+            "y/M/d zzz H:mm", "pf", "2004/1/1 PT 1:00", "2004 01 01 01:00 PST", "2004/1/1 PST 1:00",
+            "zzz y/M/d H:mm", "pf", "PT 2004/1/1 1:00", "2004 01 01 01:00 PST", "PST 2004/1/1 1:00",
+
+            // standard time, generic
+            "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time",
+            "y/M/d vvvv H:mm", "pf", "2004/1/1 PT 1:00", "2004 01 01 01:00 PST", "2004/1/1 Pacific Time 1:00",
+            "vvvv y/M/d H:mm", "pf", "PT 2004/1/1 1:00", "2004 01 01 01:00 PST", "Pacific Time 2004/1/1 1:00",
+
+            // daylight time, explicit daylight/standard
+            "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PDT",
+            "y/M/d zzz H:mm", "pf", "2004/7/1 PT 1:00", "2004 07 01 01:00 PDT", "2004/7/1 PDT 1:00",
+            "zzz y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "PDT 2004/7/1 1:00",
+
+            // daylight time, generic
+            "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 Pacific Time",
+            "y/M/d vvvv H:mm", "pf", "2004/7/1 PT 1:00", "2004 07 01 01:00 PDT", "2004/7/1 Pacific Time 1:00",
+            "vvvv y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "Pacific Time 2004/7/1 1:00",
+        };
+        Locale en = new Locale("en", "", "");
+        expect(XDATA, en);
+    }
+
+    public void TestTimeZoneDisplayName() {
+        Calendar cal = new GregorianCalendar();
+        SimpleDateFormat testfmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+
+        for (int i = 0; i < fallbackTests.length; ++i) {
+            String[] info = fallbackTests[i];
+            logln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3]);
+
+            long time = 0;
+            try {
+                Date testd = testfmt.parse(info[2]);
+                time = testd.getTime();
+            } catch (ParseException pe) {
+                errln("Failed to parse test date data");
+                continue;
+            }
+            ULocale l = new ULocale(info[0]);
+            TimeZone tz = TimeZone.getTimeZone(info[1]);
+            SimpleDateFormat fmt = new SimpleDateFormat(info[3], l);
+            cal.setTimeInMillis(time);
+            cal.setTimeZone(tz);
+            String result = fmt.format(cal);
+            if (!result.equals(info[4])) {
+                errln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3] + " expected: '" + 
+                      info[4] + "' but got: '" + result + "'");
+            }
+        }
+    }
+
+    private static final String GMT_BG = "\u0413\u0440\u0438\u0438\u043D\u0443\u0438\u0447";
+    private static final String GMT_ZH = "\u683C\u6797\u5C3C\u6CBB\u6807\u51C6\u65F6\u95F4";
+    //private static final String GMT_BG = "GMT";
+
+    private static final String[][] fallbackTests  = {
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" },
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Pacific Standard Time", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Pacific Daylight Time", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Pacific Time", "America/Los_Angeles" },
+        { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "United States (Los Angeles)", "America/Los_Angeles" },
+        { "en_GB", "America/Los_Angeles", "2004-01-15T12:00:00Z", "z", "PST", "America/Los_Angeles" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "z", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "V", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "z", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "V", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "v", "MST", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "vvvv", "Mountain Standard Time", "America/Phoenix" },
+        { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "VVVV", "United States (Phoenix)", "America/Phoenix" },
+
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina (Buenos Aires)", "America/Buenos_Aires" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" },
+        { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina (Buenos Aires)", "America/Buenos_Aires" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" },
+        { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" },
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" },
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "V", "CST (Cuba)", "-5:00" },
+        { "en", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "Cuba Standard Time", "-5:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "V", "CDT (Cuba)", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "Cuba Daylight Time", "-4:00" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba Time", "America/Havana" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba Time", "America/Havana" },
+        { "en", "America/Havana", "2004-07-15T00:00:00Z", "VVVV", "Cuba Time", "America/Havana" },
+
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" },
+        { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australia (Sydney)", "Australia/Sydney" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" },
+        { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "VVVV", "Australia (Sydney)", "Australia/Sydney" },
+
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" },
+        { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australia (Sydney)", "Australia/Sydney" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" },
+        { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "VVVV", "Australia (Sydney)", "Australia/Sydney" },
+
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" },
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" },
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" },
+        { "en", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Greenwich Mean Time", "+0:00" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "Europe/London" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "Europe/London" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "Europe/London" },
+    // icu en.txt has exemplar city for this time zone
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "v", "United Kingdom Time", "Europe/London" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "United Kingdom Time", "Europe/London" },
+        { "en", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "United Kingdom Time", "Europe/London" },
+
+        { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" },
+        { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" },
+
+        // JB#5150
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "V", "IST", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "V", "IST", "+05:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "India Time", "Asia/Calcutta" },
+        { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "India Standard Time", "Asia/Calcutta" },
+        
+        // ==========
+
+        { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" },
+        { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" },
+        { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "Vereinigte Staaten (Los Angeles)", "America/Los_Angeles" },
+        { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Vereinigte Staaten (Los Angeles)", "America/Los_Angeles" },
+
+        { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien (Buenos Aires)", "America/Buenos_Aires" },
+        { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinien (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien (Buenos Aires)", "America/Buenos_Aires" },
+        { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinien (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "de", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "de", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" },
+        { "de", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" },
+        { "de", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba", "America/Havana" },
+        { "de", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kuba", "America/Havana" },
+        // added to test proper fallback of country name
+        { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba", "America/Havana" },
+        { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kuba", "America/Havana" },
+
+        { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australien (Sydney)", "Australia/Sydney" },
+        { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sydney)", "Australia/Sydney" },
+
+        { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australien (Sydney)", "Australia/Sydney" },
+        { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sydney)", "Australia/Sydney" },
+
+        { "de", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "de", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" },
+        { "de", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" },
+        { "de", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+0:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "v", "Vereinigtes K\u00f6nigreich", "Europe/London" },
+        { "de", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "Vereinigtes K\u00f6nigreich", "Europe/London" },
+
+        { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" },
+        { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" },
+
+        // JB#5150
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "Indien", "Asia/Calcutta" },
+        { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indien", "Asia/Calcutta" },
+
+        // ==========
+
+        { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0800", "-8:00" },
+        { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0800", "America/Los_Angeles" },
+        { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\u592a\u5e73\u6d0b\u6807\u51c6\u65f6\u95f4", "America/Los_Angeles" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0700", "-7:00" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0700", "America/Los_Angeles" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6\u95f4", "America/Los_Angeles" },
+    // icu zh.txt has exemplar city for this time zone
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u7f8e\u56fd (\u6d1b\u6749\u77f6)", "America/Los_Angeles" },
+        { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u7f8e\u56fd\u592a\u5e73\u6d0b\u65f6\u95f4", "America/Los_Angeles" },
+
+        { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "-3:00" },
+    // icu zh.txt does not have info for this time zone
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u963f\u6839\u5ef7 (\u5e03\u5b9c\u8bfa\u65af\u827e\u5229\u65af)", "America/Buenos_Aires" },
+        { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "America/Buenos_Aires" },
+
+        { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "-3:00" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u963f\u6839\u5ef7 (\u5e03\u5b9c\u8bfa\u65af\u827e\u5229\u65af)", "America/Buenos_Aires" },
+        { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u963f\u6839\u5ef7\u6807\u51c6\u65f6\u95f4", "America/Buenos_Aires" },
+
+        { "zh", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "zh", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0500", "-5:00" },
+        { "zh", "America/Havana", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0500", "-5:00" },
+        { "zh", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\u53e4\u5df4\u6a19\u6e96\u6642\u9593", "-5:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0400", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0400", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\u53e4\u5df4\u590f\u4ee4\u6642\u9593", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u53e4\u5df4", "America/Havana" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u53e4\u5df4\u6642\u9593", "America/Havana" },
+
+        { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"+1100", "+11:00" },
+        { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "z", GMT_ZH+"+1100", "+11:00" },
+        { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u590f\u4ee4\u65f6\u95f4", "+11:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"+1000", "+10:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "z", GMT_ZH+"+1000", "+10:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4", "+10:00" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u6fb3\u5927\u5229\u4e9a (\u6089\u5c3c)", "Australia/Sydney" },
+        { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u65f6\u95f4", "Australia/Sydney" },
+
+        { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"+1100", "+11:00" },
+        { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", GMT_ZH+"+1100", "+11:00" },
+        { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u590f\u4ee4\u65f6\u95f4", "+11:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"+1000", "+10:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", GMT_ZH+"+1000", "+10:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u6807\u51c6\u65f6\u95f4",  "+10:00" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u6fb3\u5927\u5229\u4e9a (\u6089\u5c3c)", "Australia/Sydney" },
+        { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u6fb3\u5927\u5229\u4e9a\u4e1c\u90e8\u65f6\u95f4", "Australia/Sydney" },
+
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"+0000", "+0:00" },
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", GMT_ZH+"+0000", "+0:00" },
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" },
+        { "zh", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\u683C\u6797\u5C3C\u6CBB\u6807\u51C6\u65F6\u95F4", "+0:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"+0100", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "z", GMT_ZH+"+0100", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", GMT_ZH+"+0100", "+1:00" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u82f1\u56fd", "Europe/London" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u82f1\u56fd", "Europe/London" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\u82f1\u56fd", "Europe/London" },
+
+        { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", GMT_ZH+"-0300", "-3:00" },
+        { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", GMT_ZH+"-0300", "-3:00" },
+
+        // JB#5150
+        { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", GMT_ZH+"+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", GMT_ZH+"+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\u5370\u5ea6\u6807\u51c6\u65f6\u95f4", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", GMT_ZH+"+0530", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", GMT_ZH+"+0530", "+05:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\u5370\u5ea6\u6807\u51c6\u65f6\u95f4", "+5:30" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\u5370\u5ea6", "Asia/Calcutta" },
+        { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u5370\u5EA6\u6807\u51c6\u65f6\u95f4", "Asia/Calcutta" },
+
+        // ==========
+
+        { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096e:\u0966\u0966", "-8:00" },
+        { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u096e:\u0966\u0966", "-8:00" },
+        { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u096e:\u0966\u0966", "-8:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096d:\u0966\u0966", "-7:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u096d:\u0966\u0966", "-7:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u096d:\u0966\u0966", "-7:00" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0930\u093e\u091c\u094d\u092f \u0905\u092e\u0930\u093f\u0915\u093e (\u0932\u094b\u0938 \u090f\u0902\u091c\u093f\u0932\u0947\u0938)", "America/Los_Angeles" },
+        { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0930\u093e\u091c\u094d\u092f \u0905\u092e\u0930\u093f\u0915\u093e (\u0932\u094b\u0938 \u090f\u0902\u091c\u093f\u0932\u0947\u0938)", "America/Los_Angeles" },
+
+        { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e (\u092c\u094d\u092f\u0942\u0928\u0938 \u0906\u092f\u0930\u0938)", "America/Buenos_Aires" },
+        { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e (\u092c\u094d\u092f\u0942\u0928\u0938 \u0906\u092f\u0930\u0938)", "America/Buenos_Aires" },
+
+        { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e (\u092c\u094d\u092f\u0942\u0928\u0938 \u0906\u092f\u0930\u0938)", "America/Buenos_Aires" },
+        { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e (\u092c\u094d\u092f\u0942\u0928\u0938 \u0906\u092f\u0930\u0938)", "America/Buenos_Aires" },
+
+        { "hi", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "hi", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096b:\u0966\u0966", "-5:00" },
+        { "hi", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u096b:\u0966\u0966", "-5:00" },
+        { "hi", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u096b:\u0966\u0966", "-5:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096a:\u0966\u0966", "-4:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u096a:\u0966\u0966", "-4:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u096a:\u0966\u0966", "-4:00" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u0915\u094d\u092f\u0942\u092c\u093e", "America/Havana" },
+        { "hi", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u0915\u094d\u092f\u0942\u092c\u093e", "America/Havana" },
+
+        { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e (\u0938\u093f\u0921\u0928\u0940)", "Australia/Sydney" },
+        { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e (\u0938\u093f\u0921\u0928\u0940)", "Australia/Sydney" },
+
+        { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+\u0967\u0967:\u0966\u0966", "+11:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+\u0967\u0966:\u0966\u0966", "+10:00" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e (\u0938\u093f\u0921\u0928\u0940)", "Australia/Sydney" },
+        { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e (\u0938\u093f\u0921\u0928\u0940)", "Australia/Sydney" },
+
+        { "hi", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "hi", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0966\u0966:\u0966\u0966", "+0:00" },
+        { "hi", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+\u0966\u0966:\u0966\u0966", "+0:00" },
+        { "hi", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+\u0966\u0966:\u0966\u0966", "+0:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0966\u0967:\u0966\u0966", "+1:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+\u0966\u0967:\u0966\u0966", "+1:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+\u0966\u0967:\u0966\u0966", "+1:00" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u092C\u094D\u0930\u093F\u0924\u0928", "Europe/London" },
+        { "hi", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u092C\u094D\u0930\u093F\u0924\u0928", "Europe/London" },
+
+        { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+        { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-\u0966\u0969:\u0966\u0966", "-3:00" },
+
+        { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0966\u096B:\u0969\u0966", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "IST", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\u092D\u093E\u0930\u0924\u0940\u092F \u0938\u092E\u092F", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0966\u096B:\u0969\u0966", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "IST", "+05:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\u092D\u093E\u0930\u0924\u0940\u092F \u0938\u092E\u092F", "+5:30" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IST", "Asia/Calcutta" },
+        { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u092D\u093E\u0930\u0924\u0940\u092F \u0938\u092E\u092F", "Asia/Calcutta" },
+
+        // ==========
+
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0800", "-8:00" },
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0800", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\u0422\u0438\u0445\u043E\u043E\u043A\u0435\u0430\u043D\u0441\u043A\u0430 \u0447\u0430\u0441\u043E\u0432\u0430 \u0437\u043E\u043D\u0430", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0700", "-7:00" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0700", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\u0422\u0438\u0445\u043E\u043E\u043A\u0435\u0430\u043D\u0441\u043A\u0430 \u043B\u044F\u0442\u043D\u0430 \u0447\u0430\u0441\u043E\u0432\u0430 \u0437\u043E\u043D\u0430", "America/Los_Angeles" },
+    // icu bg.txt has exemplar city for this time zone
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u0421\u0410\u0429 (\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441)", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u0421\u0410\u0429 (\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441)", "America/Los_Angeles" },
+        { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\u0421\u0410\u0429 (\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441)", "America/Los_Angeles" },
+
+        { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430 (\u0411\u0443\u0435\u043D\u043E\u0441 \u0410\u0439\u0440\u0435\u0441)", "America/Buenos_Aires" },
+        { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430 (\u0411\u0443\u0435\u043D\u043E\u0441 \u0410\u0439\u0440\u0435\u0441)", "America/Buenos_Aires" },
+
+        { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+    // icu bg.txt does not have info for this time zone
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430 (\u0411\u0443\u0435\u043D\u043E\u0441 \u0410\u0439\u0440\u0435\u0441)", "America/Buenos_Aires" },
+        { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430 (\u0411\u0443\u0435\u043D\u043E\u0441 \u0410\u0439\u0440\u0435\u0441)", "America/Buenos_Aires" },
+
+        { "bg", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "bg", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0500", "-5:00" },
+        { "bg", "America/Havana", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0500", "-5:00" },
+        { "bg", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"-0500", "-5:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0400", "-4:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0400", "-4:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"-0400", "-4:00" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u041a\u0443\u0431\u0430", "America/Havana" },
+        { "bg", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u041a\u0443\u0431\u0430", "America/Havana" },
+
+        { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "z", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "z", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f (\u0421\u0438\u0434\u043D\u0438)", "Australia/Sydney" },
+        { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f (\u0421\u0438\u0434\u043D\u0438)", "Australia/Sydney" },
+
+        { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"+1100", "+11:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"+1000", "+10:00" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f (\u0421\u0438\u0434\u043D\u0438)", "Australia/Sydney" },
+        { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f (\u0421\u0438\u0434\u043D\u0438)", "Australia/Sydney" },
+
+        { "bg", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "bg", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"+0000", "+0:00" },
+        { "bg", "Europe/London", "2004-01-15T00:00:00Z", "z", GMT_BG+"+0000", "+0:00" },
+        { "bg", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\u0427\u0430\u0441\u043E\u0432\u0430 \u0437\u043E\u043D\u0430 \u0413\u0440\u0438\u043D\u0443\u0438\u0447", "+0:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+0100", "+1:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "z", GMT_BG+"+0100", "+1:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"+0100", "+1:00" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u041e\u0431\u0435\u0434\u0438\u043d\u0435\u043d\u043e \u043a\u0440\u0430\u043b\u0441\u0442\u0432\u043e", "Europe/London" },
+        { "bg", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u041e\u0431\u0435\u0434\u0438\u043d\u0435\u043d\u043e \u043a\u0440\u0430\u043b\u0441\u0442\u0432\u043e", "Europe/London" },
+
+        { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", GMT_BG+"-0300", "-3:00" },
+        { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", GMT_BG+"-0300", "-3:00" },
+
+        // JB#5150
+        { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", GMT_BG+"+0530", "+05:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", GMT_BG+"+0530", "+5:30" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\u0418\u043D\u0434\u0438\u044F", "Asia/Calcutta" },
+        { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u0418\u043D\u0434\u0438\u044F", "Asia/Calcutta" },
+
+    // ==========
+
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" },
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u6a19\u6e96\u6642", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u590f\u6642\u9593", "America/Los_Angeles" },
+    // icu ja.txt has exemplar city for this time zone
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u30A2\u30E1\u30EA\u30AB\u5408\u8846\u56FD (\u30ed\u30b5\u30f3\u30bc\u30eb\u30b9)", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u30A2\u30E1\u30EA\u30AB\u592A\u5E73\u6D0B\u6642\u9593", "America/Los_Angeles" },
+        { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\u30A2\u30E1\u30EA\u30AB\u5408\u8846\u56FD (\u30ed\u30b5\u30f3\u30bc\u30eb\u30b9)", "America/Los_Angeles" },
+
+        { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+    // icu ja.txt does not have info for this time zone
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3 (\u30D6\u30A8\u30CE\u30B9\u30A2\u30A4\u30EC\u30B9)", "America/Buenos_Aires" },
+        { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "America/Buenos_Aires" },
+
+        { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+    // icu ja.txt does not have info for this time zone
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3 (\u30D6\u30A8\u30CE\u30B9\u30A2\u30A4\u30EC\u30B9)", "America/Buenos_Aires" },
+        { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\u30a2\u30eb\u30bc\u30f3\u30c1\u30f3\u6642\u9593", "America/Buenos_Aires" },
+
+        { "ja", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "ja", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" },
+        { "ja", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" },
+        { "ja", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u30ad\u30e5\u30fc\u30d0\u6642\u9593", "America/Havana" },
+        { "ja", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u30ad\u30e5\u30fc\u30d0\u6642\u9593", "America/Havana" },
+
+        { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+    // icu ja.txt does not have info for this time zone
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 (\u30b7\u30c9\u30cb\u30fc)", "Australia/Sydney" },
+        { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 (\u30b7\u30c9\u30cb\u30fc)", "Australia/Sydney" },
+
+        { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 (\u30b7\u30c9\u30cb\u30fc)", "Australia/Sydney" },
+        { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2 (\u30b7\u30c9\u30cb\u30fc)", "Australia/Sydney" },
+
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" },
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" },
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" },
+        { "ja", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\u30B0\u30EA\u30CB\u30C3\u30B8\u6A19\u6E96\u6642", "+0:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "V", "GMT+01:00", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "v", "\u30a4\u30ae\u30ea\u30b9\u6642\u9593", "Europe/London" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u30a4\u30ae\u30ea\u30b9\u6642\u9593", "Europe/London" },
+        { "ja", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\u30a4\u30ae\u30ea\u30b9\u6642\u9593", "Europe/London" },
+
+        { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" },
+        { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" },
+
+        // JB#5150
+        { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\u30A4\u30F3\u30C9\u6642\u9593", "Asia/Calcutta" },
+        { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\u30A4\u30F3\u30C9\u6642\u9593", "Asia/Calcutta" },
+
+    // ==========
+
+        { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" },
+        { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" },
+        { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" },
+        { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "US (Los Angeles)", "America/Los_Angeles" },
+        { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "US (Los Angeles)", "America/Los_Angeles" },
+
+        { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" },
+        { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" },
+        { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" },
+
+        { "si", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" },
+        { "si", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" },
+        { "si", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" },
+        { "si", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "v", "CU", "America/Havana" },
+        { "si", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "CU", "America/Havana" },
+
+        { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" },
+        { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" },
+
+        { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" },
+        { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" },
+        { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" },
+        { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" },
+        { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" },
+
+        { "si", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" },
+        { "si", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" },
+        { "si", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" },
+        { "si", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+0:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "v", "GB", "Europe/London" },
+        { "si", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "GB", "Europe/London" },
+
+        { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" },
+        { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" },
+
+        // JB#5150
+        { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IN", "Asia/Calcutta" },
+        { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "IN", "Asia/Calcutta" },
+        
+    };
+
+    /**
+     * Verify that strings which contain incomplete specifications are parsed
+     * correctly.  In some instances, this means not being parsed at all, and
+     * returning an appropriate error.
+     */
+    public void TestPartialParse994() {
+    
+        SimpleDateFormat f = new SimpleDateFormat();
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 1 - 1, 17, 10, 11, 42);
+        Date date = null;
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:11:42", cal.getTime());
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 ", date);
+        tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17", date);
+    }
+    
+    // internal test subroutine, used by TestPartialParse994
+    public void tryPat994(SimpleDateFormat format, String pat, String str, Date expected) {
+        Date Null = null;
+        logln("Pattern \"" + pat + "\"   String \"" + str + "\"");
+        try {
+            format.applyPattern(pat);
+            Date date = format.parse(str);    
+            String f = ((DateFormat) format).format(date);
+            logln(" parse(" + str + ") -> " + date);
+            logln(" format -> " + f);
+            if (expected.equals(Null) || !date.equals(expected))
+                errln("FAIL: Expected null"); //" + expected);
+            if (!f.equals(str))
+                errln("FAIL: Expected " + str);
+        } catch (ParseException e) {
+            logln("ParseException: " + e.getMessage());
+            if (!(expected ==Null))
+                errln("FAIL: Expected " + expected);
+        } catch (Exception e) {
+            errln("*** Exception:");
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * Verify the behavior of patterns in which digits for different fields run together
+     * without intervening separators.
+     */
+    public void TestRunTogetherPattern985() {
+        String format = "yyyyMMddHHmmssSSS";
+        String now, then;
+        //UBool flag;
+        SimpleDateFormat formatter = new SimpleDateFormat(format);
+        Date date1 = new Date();
+        now = ((DateFormat) formatter).format(date1);
+        logln(now);
+        ParsePosition pos = new ParsePosition(0);
+        Date date2 = formatter.parse(now, pos);
+        if (date2 == null)
+            then = "Parse stopped at " + pos.getIndex();
+        else
+            then = ((DateFormat) formatter).format(date2);
+        logln(then);
+        if (date2 == null || !date2.equals(date1))
+            errln("FAIL");
+    }
+
+    /**
+     * Verify the behavior of patterns in which digits for different fields run together
+     * without intervening separators.
+     */
+    public void TestRunTogetherPattern917() {
+        SimpleDateFormat fmt;
+        String myDate;
+        fmt = new SimpleDateFormat("yyyy/MM/dd");
+        myDate = "1997/02/03";
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, 2 - 1, 3);
+        _testIt917(fmt, myDate, cal.getTime());
+        fmt = new SimpleDateFormat("yyyyMMdd");
+        myDate = "19970304";
+        cal.clear();
+        cal.set(1997, 3 - 1, 4);
+        _testIt917(fmt, myDate, cal.getTime());
+    
+    }
+    
+    // internal test subroutine, used by TestRunTogetherPattern917
+    public void _testIt917(SimpleDateFormat fmt, String str, Date expected) {
+        logln("pattern=" + fmt.toPattern() + "   string=" + str);
+        Date o = new Date();
+        o = (Date) ((DateFormat) fmt).parseObject(str, new ParsePosition(0));
+        logln("Parsed object: " + o);
+        if (o == null || !o.equals(expected))
+            errln("FAIL: Expected " + expected);
+        String formatted = o==null? "null" : ((DateFormat) fmt).format(o);
+        logln( "Formatted string: " + formatted);
+        if (!formatted.equals(str))
+            errln( "FAIL: Expected " + str);
+    }
+    
+    /**
+     * Verify the handling of Czech June and July, which have the unique attribute that
+     * one is a proper prefix substring of the other.
+     */
+    public void TestCzechMonths459() {
+        DateFormat fmt = DateFormat.getDateInstance(DateFormat.FULL, new Locale("cs", "", "")); 
+        logln("Pattern " + ((SimpleDateFormat) fmt).toPattern());
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, Calendar.JUNE, 15);
+        Date june = cal.getTime();
+        cal.clear();
+        cal.set(1997, Calendar.JULY, 15);
+        Date july = cal.getTime();
+        String juneStr = fmt.format(june);
+        String julyStr = fmt.format(july);
+        try {
+            logln("format(June 15 1997) = " + juneStr);
+            Date d = fmt.parse(juneStr);
+            String s = fmt.format(d);
+            int month, yr, day;
+            cal.setTime(d);
+            yr = cal.get(Calendar.YEAR);
+            month = cal.get(Calendar.MONTH);
+            day = cal.get(Calendar.DAY_OF_MONTH);
+            logln("  . parse . " + s + " (month = " + month + ")");
+            if (month != Calendar.JUNE)
+                errln("FAIL: Month should be June");
+            if (yr != 1997)
+                errln("FAIL: Year should be 1997");
+            if (day != 15)
+                errln("FAIL: day should be 15");
+            logln("format(July 15 1997) = " + julyStr);
+            d = fmt.parse(julyStr);
+            s = fmt.format(d);
+            cal.setTime(d);
+            yr = cal.get(Calendar.YEAR) - 1900;
+            month = cal.get(Calendar.MONTH);
+            day = cal.get(Calendar.DAY_OF_WEEK);
+            logln("  . parse . " + s + " (month = " + month + ")");
+            if (month != Calendar.JULY)
+                errln("FAIL: Month should be July");
+        } catch (ParseException e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the handling of 'D' in patterns.
+     */
+    public void TestLetterDPattern212() {
+        String dateString = "1995-040.05:01:29";
+        String bigD = "yyyy-DDD.hh:mm:ss";
+        String littleD = "yyyy-ddd.hh:mm:ss";
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1995, 0, 1, 5, 1, 29);
+        Date expLittleD = cal.getTime();
+        Date expBigD = new Date((long) (expLittleD.getTime() + 39 * 24 * 3600000.0));
+        expLittleD = expBigD; // Expect the same, with default lenient parsing
+        logln("dateString= " + dateString);
+        SimpleDateFormat formatter = new SimpleDateFormat(bigD);
+        ParsePosition pos = new ParsePosition(0);
+        Date myDate = formatter.parse(dateString, pos);
+        logln("Using " + bigD + " . " + myDate);
+        if (!myDate.equals(expBigD))
+            errln("FAIL: Expected " + expBigD);
+        formatter = new SimpleDateFormat(littleD);
+        pos = new ParsePosition(0);
+        myDate = formatter.parse(dateString, pos);
+        logln("Using " + littleD + " . " + myDate);
+        if (!myDate.equals(expLittleD))
+            errln("FAIL: Expected " + expLittleD);
+    }
+    
+    /**
+     * Test the day of year pattern.
+     */
+    public void TestDayOfYearPattern195() {
+        Calendar cal = Calendar.getInstance();
+        Date today = cal.getTime();
+        int year,month,day; 
+        year = cal.get(Calendar.YEAR);
+        month = cal.get(Calendar.MONTH);
+        day = cal.get(Calendar.DAY_OF_MONTH);
+        cal.clear();
+        cal.set(year, month, day);
+        Date expected = cal.getTime();
+        logln("Test Date: " + today);
+        SimpleDateFormat sdf = (SimpleDateFormat)DateFormat.getDateInstance();
+        tryPattern(sdf, today, null, expected);
+        tryPattern(sdf, today, "G yyyy DDD", expected);
+    }
+    
+    // interl test subroutine, used by TestDayOfYearPattern195
+    public void tryPattern(SimpleDateFormat sdf, Date d, String pattern, Date expected) {
+        if (pattern != null)
+            sdf.applyPattern(pattern);
+        logln("pattern: " + sdf.toPattern());
+        String formatResult = ((DateFormat) sdf).format(d);
+        logln(" format -> " + formatResult);
+        try {
+            Date d2 = sdf.parse(formatResult);
+            logln(" parse(" + formatResult + ") -> " + d2);
+            if (!d2.equals(expected))
+                errln("FAIL: Expected " + expected);
+            String format2 = ((DateFormat) sdf).format(d2);
+            logln(" format -> " + format2);
+            if (!formatResult.equals(format2))
+                errln("FAIL: Round trip drift");
+        } catch (Exception e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the handling of single quotes in patterns.
+     */
+    public void TestQuotePattern161() {
+        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy 'at' hh:mm:ss a zzz", Locale.US); 
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(1997, Calendar.AUGUST, 13, 10, 42, 28);
+        Date currentTime_1 = cal.getTime();
+        String dateString = ((DateFormat) formatter).format(currentTime_1);
+        String exp = "08/13/1997 at 10:42:28 AM ";
+        logln("format(" + currentTime_1 + ") = " + dateString);
+        if (!dateString.substring(0, exp.length()).equals(exp))
+            errln("FAIL: Expected " + exp);
+    
+    }
+        
+    /**
+     * Verify the correct behavior when handling invalid input strings.
+     */
+    public void TestBadInput135() {
+        int looks[] = {DateFormat.SHORT, DateFormat.MEDIUM, DateFormat.LONG, DateFormat.FULL}; 
+        int looks_length = looks.length;
+        final String[] strings = {"Mar 15", "Mar 15 1997", "asdf", "3/1/97 1:23:", "3/1/00 1:23:45 AM"}; 
+        int strings_length = strings.length;
+        DateFormat full = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US); 
+        String expected = "March 1, 2000 1:23:45 AM ";
+        for (int i = 0; i < strings_length; ++i) {
+            final String text = strings[i];
+            for (int j = 0; j < looks_length; ++j) {
+                int dateLook = looks[j];
+                for (int k = 0; k < looks_length; ++k) {
+                    int timeLook = looks[k];
+                    DateFormat df = DateFormat.getDateTimeInstance(dateLook, timeLook, Locale.US); 
+                    String prefix = text + ", " + dateLook + "/" + timeLook + ": "; 
+                    try {
+                        Date when = df.parse(text);
+                        if (when == null) {
+                            errln(prefix + "SHOULD NOT HAPPEN: parse returned null.");
+                            continue;
+                        }  
+                        if (when != null) {
+                            String format;
+                            format = full.format(when);
+                            logln(prefix + "OK: " + format);
+                            if (!format.substring(0, expected.length()).equals(expected))
+                                errln("FAIL: Expected " + expected);
+                        }
+                    } catch(java.text.ParseException e) {
+                        logln(e.getMessage());
+                    }
+                }
+            }
+        }
+    }
+    
+    /**
+     * Verify the correct behavior when parsing an array of inputs against an
+     * array of patterns, with known results.  The results are encoded after
+     * the input strings in each row.
+     */
+    public void TestBadInput135a() {
+    
+        SimpleDateFormat dateParse = new SimpleDateFormat("", Locale.US);
+        final String ss;
+        Date date;
+        String[] parseFormats ={"MMMM d, yyyy", "MMMM d yyyy", "M/d/yy",
+                                "d MMMM, yyyy", "d MMMM yyyy",  "d MMMM",
+                                "MMMM d", "yyyy", "h:mm a MMMM d, yyyy" };
+        String[] inputStrings = {
+            "bogus string", null, null, null, null, null, null, null, null, null,
+                "April 1, 1997", "April 1, 1997", null, null, null, null, null, "April 1", null, null,
+                "Jan 1, 1970", "January 1, 1970", null, null, null, null, null, "January 1", null, null,
+                "Jan 1 2037", null, "January 1 2037", null, null, null, null, "January 1", null, null,
+                "1/1/70", null, null, "1/1/70", null, null, null, null, "0001", null,
+                "5 May 1997", null, null, null, null, "5 May 1997", "5 May", null, "0005", null,
+                "16 May", null, null, null, null, null, "16 May", null, "0016", null,
+                "April 30", null, null, null, null, null, null, "April 30", null, null,
+                "1998", null, null, null, null, null, null, null, "1998", null,
+                "1", null, null, null, null, null, null, null, "0001", null,
+                "3:00 pm Jan 1, 1997", null, null, null, null, null, null, null, "0003", "3:00 PM January 1, 1997",
+                };
+        final int PF_LENGTH = parseFormats.length;
+        final int INPUT_LENGTH = inputStrings.length;
+    
+        dateParse.applyPattern("d MMMM, yyyy");
+        dateParse.setTimeZone(TimeZone.getDefault());
+        ss = "not parseable";
+        //    String thePat;
+        logln("Trying to parse \"" + ss + "\" with " + dateParse.toPattern());
+        try {
+            date = dateParse.parse(ss);
+        } catch (Exception ex) {
+            logln("FAIL:" + ex);
+        }
+        for (int i = 0; i < INPUT_LENGTH; i += (PF_LENGTH + 1)) {
+            ParsePosition parsePosition = new ParsePosition(0);
+            String s = inputStrings[i];
+            for (int index = 0; index < PF_LENGTH; ++index) {
+                final String expected = inputStrings[i + 1 + index];
+                dateParse.applyPattern(parseFormats[index]);
+                dateParse.setTimeZone(TimeZone.getDefault());
+                try {
+                    parsePosition.setIndex(0);
+                    date = dateParse.parse(s, parsePosition);
+                    if (parsePosition.getIndex() != 0) {
+                        String s1, s2;
+                        s1 = s.substring(0, parsePosition.getIndex());
+                        s2 = s.substring(parsePosition.getIndex(), s.length());
+                        if (date == null) {
+                            errln("ERROR: null result fmt=\"" + parseFormats[index]
+                                    + "\" pos=" + parsePosition.getIndex()
+                                    + " " + s1 + "|" + s2);
+                        } else {
+                            String result = ((DateFormat) dateParse).format(date);
+                            logln("Parsed \"" + s + "\" using \"" + dateParse.toPattern() + "\" to: " + result);
+                            if (expected == null)
+                                errln("FAIL: Expected parse failure");
+                            else
+                                if (!result.equals(expected))
+                                    errln("FAIL: Expected " + expected);
+                        }
+                    } else
+                        if (expected != null) {
+                            errln("FAIL: Expected " + expected + " from \"" + s
+                                    + "\" with \"" + dateParse.toPattern()+ "\"");
+                        }
+                } catch (Exception ex) {
+                    logln("FAIL:" + ex);
+                }
+            }
+        }
+    
+    }
+    
+    /**
+     * Test the parsing of two-digit years.
+     */
+    public void TestTwoDigitYear() {
+        DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+        Calendar cal = Calendar.getInstance();
+        cal.clear();
+        cal.set(117 + 1900, Calendar.JUNE, 5);
+        parse2DigitYear(fmt, "6/5/17", cal.getTime());
+        cal.clear();
+        cal.set(34 + 1900, Calendar.JUNE, 4);
+        parse2DigitYear(fmt, "6/4/34", cal.getTime());
+    }
+    
+    // internal test subroutine, used by TestTwoDigitYear
+    public void parse2DigitYear(DateFormat fmt, String str, Date expected) {
+        try {
+            Date d = fmt.parse(str);
+            logln("Parsing \""+ str+ "\" with "+ ((SimpleDateFormat) fmt).toPattern()
+                    + "  => "+ d); 
+            if (!d.equals(expected))
+                errln( "FAIL: Expected " + expected);
+        } catch (ParseException e) {
+            errln(e.getMessage());
+        }
+    }
+    
+    /**
+     * Test the formatting of time zones.
+     */
+    public void TestDateFormatZone061() {
+        Date date;
+        DateFormat formatter;
+        date = new Date(859248000000l);
+        logln("Date 1997/3/25 00:00 GMT: " + date);
+        formatter = new SimpleDateFormat("dd-MMM-yyyyy HH:mm", Locale.UK);
+        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
+        String temp = formatter.format(date);
+        logln("Formatted in GMT to: " + temp);
+        try {
+            Date tempDate = formatter.parse(temp);
+            logln("Parsed to: " + tempDate);
+            if (!tempDate.equals(date))
+                errln("FAIL: Expected " + date + " Got: " + tempDate);
+        } catch (Throwable t) {
+            System.out.println(t);
+        }
+    
+    }
+    
+    /**
+     * Test the formatting of time zones.
+     */
+    public void TestDateFormatZone146() {
+        TimeZone saveDefault = TimeZone.getDefault();
+    
+        //try {
+        TimeZone thedefault = TimeZone.getTimeZone("GMT");
+        TimeZone.setDefault(thedefault);
+        // java.util.Locale.setDefault(new java.util.Locale("ar", "", ""));
+    
+        // check to be sure... its GMT all right
+        TimeZone testdefault = TimeZone.getDefault();
+        String testtimezone = testdefault.getID();
+        if (testtimezone.equals("GMT"))
+            logln("Test timezone = " + testtimezone);
+        else
+            errln("Test timezone should be GMT, not " + testtimezone);
+    
+        // now try to use the default GMT time zone
+        GregorianCalendar greenwichcalendar = new GregorianCalendar(1997, 3, 4, 23, 0);
+        //*****************************greenwichcalendar.setTimeZone(TimeZone.getDefault());
+        //greenwichcalendar.set(1997, 3, 4, 23, 0);
+        // try anything to set hour to 23:00 !!!
+        greenwichcalendar.set(Calendar.HOUR_OF_DAY, 23);
+        // get time
+        Date greenwichdate = greenwichcalendar.getTime();
+        // format every way
+        String DATA[] = {
+                "simple format:  ", "04/04/97 23:00 GMT+00:00", 
+                "MM/dd/yy HH:mm zzz", "full format:    ", 
+                "Friday, April 4, 1997 11:00:00 o'clock PM GMT+00:00", 
+                "EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a zzz", 
+                "long format:    ", "April 4, 1997 11:00:00 PM GMT+00:00", 
+                "MMMM d, yyyy h:mm:ss a z", "default format: ", 
+                "04-Apr-97 11:00:00 PM", "dd-MMM-yy h:mm:ss a", 
+                "short format:   ", "4/4/97 11:00 PM", 
+                "M/d/yy h:mm a"}; 
+        int DATA_length = DATA.length;
+    
+        for (int i = 0; i < DATA_length; i += 3) {
+            DateFormat fmt = new SimpleDateFormat(DATA[i + 2], Locale.ENGLISH);
+            fmt.setCalendar(greenwichcalendar);
+            String result = fmt.format(greenwichdate);
+            logln(DATA[i] + result);
+            if (!result.equals(DATA[i + 1]))
+                errln("FAIL: Expected " + DATA[i + 1] + ", got " + result);
+        }
+        //}
+        //finally {
+        TimeZone.setDefault(saveDefault);
+        //}
+    
+    }
+    
+    /**
+     * Test the formatting of dates in different locales.
+     */
+    public void TestLocaleDateFormat() {
+    
+        Date testDate = new Date(874306800000l); //Mon Sep 15 00:00:00 PDT 1997
+        DateFormat dfFrench = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.FRENCH);
+        DateFormat dfUS = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
+        //Set TimeZone = PDT
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        dfFrench.setTimeZone(tz);
+        dfUS.setTimeZone(tz);
+        String expectedFRENCH_JDK12 = "lundi 15 septembre 1997 00:00:00 \u00C9tats-Unis (Los Angeles)";
+        //String expectedFRENCH = "lundi 15 septembre 1997 00 h 00 PDT";
+        String expectedUS = "Monday, September 15, 1997 12:00:00 AM PT";
+        logln("Date set to : " + testDate);
+        String out = dfFrench.format(testDate);
+        logln("Date Formated with French Locale " + out);
+        //fix the jdk resources differences between jdk 1.2 and jdk 1.3
+        /* our own data only has GMT-xxxx information here
+        String javaVersion = System.getProperty("java.version");
+        if (javaVersion.startsWith("1.2")) {
+            if (!out.equals(expectedFRENCH_JDK12))
+                errln("FAIL: Expected " + expectedFRENCH_JDK12+" Got "+out);
+        } else {
+            if (!out.equals(expectedFRENCH))
+                errln("FAIL: Expected " + expectedFRENCH);
+        }
+        */
+        if (!out.equals(expectedFRENCH_JDK12))
+            errln("FAIL: Expected " + expectedFRENCH_JDK12+" Got "+out);
+        out = dfUS.format(testDate);
+        logln("Date Formated with US Locale " + out);
+        if (!out.equals(expectedUS))
+            errln("FAIL: Expected " + expectedUS+" Got "+out);
+    }
+
+    /**
+     * Test the formatting of dates with the 'NONE' keyword.
+     */
+    public void TestDateFormatNone() {
+    
+        Date testDate = new Date(874306800000l); //Mon Sep 15 00:00:00 PDT 1997
+        DateFormat dfFrench = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.NONE, Locale.FRENCH);
+        //Set TimeZone = PDT
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        dfFrench.setTimeZone(tz);
+        String expectedFRENCH_JDK12 = "lundi 15 septembre 1997";
+        //String expectedFRENCH = "lundi 15 septembre 1997 00 h 00 PDT";
+        logln("Date set to : " + testDate);
+        String out = dfFrench.format(testDate);
+        logln("Date Formated with French Locale " + out);
+        if (!out.equals(expectedFRENCH_JDK12))
+            errln("FAIL: Expected " + expectedFRENCH_JDK12+" Got "+out);
+    }
+
+
+    /**
+     * Test DateFormat(Calendar) API
+     */
+    public void TestDateFormatCalendar() {
+        DateFormat date=null, time=null, full=null;
+        Calendar cal=null;
+        ParsePosition pos = new ParsePosition(0);
+        String str;
+        Date when;
+
+        /* Create a formatter for date fields. */
+        date = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
+        if (date == null) {
+            errln("FAIL: getDateInstance failed");
+            return;
+        }
+
+        /* Create a formatter for time fields. */
+        time = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.US);
+        if (time == null) {
+            errln("FAIL: getTimeInstance failed");
+            return;
+        }
+
+        /* Create a full format for output */
+        full = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL,
+                                              Locale.US);
+        if (full == null) {
+            errln("FAIL: getInstance failed");
+            return;
+        }
+
+        /* Create a calendar */
+        cal = Calendar.getInstance(Locale.US);
+        if (cal == null) {
+            errln("FAIL: Calendar.getInstance failed");
+            return;
+        }
+
+        /* Parse the date */
+        cal.clear();
+        str = "4/5/2001";
+        pos.setIndex(0);
+        date.parse(str, cal, pos);
+        if (pos.getIndex() != str.length()) {
+            errln("FAIL: DateFormat.parse(4/5/2001) failed at " +
+                  pos.getIndex());
+            return;
+        }
+
+        /* Parse the time */
+        str = "5:45 PM";
+        pos.setIndex(0);
+        time.parse(str, cal, pos);
+        if (pos.getIndex() != str.length()) {
+            errln("FAIL: DateFormat.parse(17:45) failed at " +
+                  pos.getIndex());
+            return;
+        }
+    
+        /* Check result */
+        when = cal.getTime();
+        str = full.format(when);
+        // Thursday, April 5, 2001 5:45:00 PM PDT 986517900000
+        if (when.getTime() == 986517900000.0) {
+            logln("Ok: Parsed result: " + str);
+        } else {
+            errln("FAIL: Parsed result: " + str + ", exp 4/5/2001 5:45 PM");
+        }
+    }
+
+    /**
+     * Test DateFormat's parsing of space characters.  See jitterbug 1916.
+     */
+    public void TestSpaceParsing() {
+
+        String DATA[] = {
+            "yyyy MM dd",
+
+            // pattern, input, expected output (in quotes)
+            "MMMM d yy", " 04 05 06",  null, // MMMM wants Apr/April
+            null,        "04 05 06",   null,
+            "MM d yy",   " 04 05 06",  "2006 04 05",
+            null,        "04 05 06",   "2006 04 05",
+            "MMMM d yy", " Apr 05 06", "2006 04 05",
+            null,        "Apr 05 06",  "2006 04 05",
+        };
+
+        expectParse(DATA, new Locale("en", "", ""));
+    }
+
+    /**
+     * Test handling of "HHmmss" pattern.
+     */
+    public void TestExactCountFormat() {
+        String DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            // pattern, input, expected parse or null if expect parse failure
+            "HHmmss", "123456", "1970 01 01 12:34:56",
+            null,     "12345",  "1970 01 01 01:23:45",
+            null,     "1234",   null,
+            null,     "00-05",  null,
+            null,     "12-34",  null,
+            null,     "00+05",  null,
+            "ahhmm",  "PM730",  "1970 01 01 19:30:00",
+        };
+
+        expectParse(DATA, new Locale("en", "", ""));
+    }
+
+    /**
+     * Test handling of white space.
+     */
+    public void TestWhiteSpaceParsing() {
+        String DATA[] = {
+            "yyyy MM dd",
+
+            // pattern, input, expected parse or null if expect parse failure
+
+            // Pattern space run should parse input text space run
+            "MM   d yy",   " 04 01 03",    "2003 04 01",
+            null,          " 04  01   03 ", "2003 04 01",
+        };
+
+        expectParse(DATA, new Locale("en", "", ""));
+    }
+
+    public void TestInvalidPattern() {
+        Exception e = null;
+        SimpleDateFormat f = null;
+        String out = null;
+        try {
+            f = new SimpleDateFormat("Yesterday");
+            out = f.format(new Date(0));
+        } catch (IllegalArgumentException e1) {
+            e = e1;
+        }
+        if (e != null) {
+            logln("Ok: Received " + e.getMessage());
+        } else {
+            errln("FAIL: Expected exception, got " + f.toPattern() +
+                  "; " + out);
+        }
+    }
+
+    public void TestGreekMay() {
+        Date date = new Date(-9896080848000L);
+        SimpleDateFormat fmt = new SimpleDateFormat("EEEE, dd MMMM yyyy h:mm:ss a",
+                             new Locale("el", "", ""));
+        String str = fmt.format(date);
+        ParsePosition pos = new ParsePosition(0);
+        Date d2 = fmt.parse(str, pos);
+        if (!date.equals(d2)) {
+            errln("FAIL: unable to parse strings where case-folding changes length");
+        }
+    }
+
+    public void testErrorChecking() {
+        try {
+            DateFormat.getDateTimeInstance(-1, -1, Locale.US);
+            errln("Expected exception for getDateTimeInstance(-1, -1, Locale)");
+        }
+        catch(IllegalArgumentException e) {
+            logln("one ok");
+        }
+        catch(Exception e) {
+            warnln("Expected IllegalArgumentException, got: " + e);
+        }
+        
+        try {
+            DateFormat df = new SimpleDateFormat("aabbccc");
+            df.format(new Date());
+            errln("Expected exception for format with bad pattern");
+        }
+        catch(IllegalArgumentException ex) {
+            logln("two ok");
+        }
+        catch(Exception e) {
+            warnln("Expected IllegalArgumentException, got: " + e);
+        }
+        
+        {
+            SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yy"); // opposite of text
+            fmt.set2DigitYearStart(getDate(2003, Calendar.DECEMBER, 25));
+            String text = "12/25/03";
+            Calendar xcal = new GregorianCalendar();
+            xcal.setLenient(false);
+            ParsePosition pp = new ParsePosition(0);
+            fmt.parse(text, xcal, pp); // should get parse error on second field, not lenient
+            if (pp.getErrorIndex() == -1) {
+                errln("Expected parse error");
+            } else {
+                logln("three ok");
+            }
+        }
+    }
+
+    public void TestChineseDateFormatLocalizedPatternChars() {
+        // jb 4904
+        // make sure we can display localized versions of the chars used in the default
+        // chinese date format patterns
+        Calendar chineseCalendar = new ChineseCalendar();
+        chineseCalendar.setTimeInMillis((new Date()).getTime());
+        SimpleDateFormat longChineseDateFormat = 
+            (SimpleDateFormat)chineseCalendar.getDateTimeFormat(DateFormat.LONG, DateFormat.LONG, Locale.CHINA );
+        DateFormatSymbols dfs = new ChineseDateFormatSymbols( chineseCalendar, Locale.CHINA );
+        longChineseDateFormat.setDateFormatSymbols( dfs );
+        // This next line throws the exception
+        try {
+            longChineseDateFormat.toLocalizedPattern();
+        }
+        catch (Exception e) {
+            errln("could not localized pattern: " + e.getMessage());
+        }
+    }
+
+    public void TestCoverage() {
+        Date now = new Date();
+        Calendar cal = new GregorianCalendar();
+        DateFormat f = DateFormat.getTimeInstance();
+        logln("time: " + f.format(now));
+
+        int hash = f.hashCode(); // sigh, everyone overrides this
+        
+        f = DateFormat.getInstance(cal);
+        if(hash == f.hashCode()){
+            errln("FAIL: hashCode equal for inequal objects");
+        }
+        logln("time again: " + f.format(now));
+
+        f = DateFormat.getTimeInstance(cal, DateFormat.FULL);
+        logln("time yet again: " + f.format(now));
+
+        f = DateFormat.getDateInstance();
+        logln("time yet again: " + f.format(now));
+
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"de_DE");
+        DateFormatSymbols sym = new DateFormatSymbols(rb, Locale.GERMANY);
+        DateFormatSymbols sym2 = (DateFormatSymbols)sym.clone();
+        if (sym.hashCode() != sym2.hashCode()) {
+            errln("fail, date format symbols hashcode not equal");
+        }
+        if (!sym.equals(sym2)) {
+            errln("fail, date format symbols not equal");
+        }
+        
+        Locale foo = new Locale("fu", "FU", "BAR");
+        rb = null;
+        sym = new DateFormatSymbols(GregorianCalendar.class, foo);
+        sym.equals(null);
+        
+        sym = new ChineseDateFormatSymbols();
+        sym = new ChineseDateFormatSymbols(new ChineseCalendar(), foo);
+        // cover new ChineseDateFormatSymbols(Calendar, ULocale)
+        ChineseCalendar ccal = new ChineseCalendar();
+        sym = new ChineseDateFormatSymbols(ccal, ULocale.CHINA); //gclsh1 add
+        
+        StringBuffer buf = new StringBuffer();
+        FieldPosition pos = new FieldPosition(0);
+        
+        f.format((Object)cal, buf, pos);
+        f.format((Object)now, buf, pos);
+        f.format((Object)new Long(now.getTime()), buf, pos);
+        try {
+            f.format((Object)"Howdy", buf, pos);
+        }
+        catch (Exception e) {
+        }
+
+        NumberFormat nf = f.getNumberFormat();
+        f.setNumberFormat(nf);
+        
+        boolean lenient = f.isLenient();
+        f.setLenient(lenient);
+        
+        ULocale uloc = f.getLocale(ULocale.ACTUAL_LOCALE);
+        
+        DateFormat sdfmt = new SimpleDateFormat();
+        
+        if (f.hashCode() != f.hashCode()) {
+            errln("hashCode is not stable");
+        }
+        if (!f.equals(f)) {
+            errln("f != f");
+        }
+        if (f.equals(null)) {
+            errln("f should not equal null");
+        }
+        if (f.equals(sdfmt)) {
+            errln("A time instance shouldn't equal a default date format");
+        }
+        
+        Date d;
+        {
+            ChineseDateFormat fmt = new ChineseDateFormat("yymm", Locale.US);
+            try {
+                fmt.parse("2"); // fewer symbols than required 2
+                errln("whoops");
+            }
+            catch (ParseException e) {
+                logln("ok");
+            }
+
+            try {
+                fmt.parse("2255"); // should succeed with obeycount
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("whoops");
+            }
+
+            try {
+                fmt.parse("ni hao"); // not a number, should fail
+                errln("whoops ni hao");
+            }
+            catch (ParseException e) {
+                logln("ok ni hao");
+            }
+        }
+        {
+            Calendar xcal = new GregorianCalendar();
+            xcal.set(Calendar.HOUR_OF_DAY, 0);
+            DateFormat fmt = new SimpleDateFormat("k");
+            StringBuffer xbuf = new StringBuffer();
+            FieldPosition fpos = new FieldPosition(Calendar.HOUR_OF_DAY);
+            fmt.format(xcal, xbuf, fpos);
+            try {
+                fmt.parse(xbuf.toString());
+                logln("ok");
+                
+                xbuf.setLength(0);
+                xcal.set(Calendar.HOUR_OF_DAY, 25);
+                fmt.format(xcal, xbuf, fpos);
+                Date d2 = fmt.parse(xbuf.toString());
+                logln("ok again - d2=" + d2);
+            }
+            catch (ParseException e) {
+                errln("whoops");
+            }
+        }
+        
+        {
+            // cover gmt+hh:mm
+            DateFormat fmt = new SimpleDateFormat("MM/dd/yy z");
+            try {
+                d = fmt.parse("07/10/53 GMT+10:00");
+                logln("ok : d = " + d);
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+10:00 for pattern MM/dd/yy z");
+            }
+            
+            // cover invalid separator after GMT
+            {
+                ParsePosition pp = new ParsePosition(0);
+                String text = "07/10/53 GMT=10:00";
+                d = fmt.parse(text, pp);
+                if(pp.getIndex()!=12){
+                    errln("Parse of 07/10/53 GMT=10:00 for pattern MM/dd/yy z");
+                }
+                logln("Parsing of the text stopped at pos: " + pp.getIndex() + " as expected and length is "+text.length());
+            }
+            
+            // cover bad text after GMT+.
+            try {
+                fmt.parse("07/10/53 GMT+blecch");
+                logln("ok GMT+blecch");
+            }
+            catch (ParseException e) {
+                errln("whoops GMT+blecch");
+            }
+            
+            // cover bad text after GMT+hh:.
+            try {
+                fmt.parse("07/10/53 GMT+07:blecch");
+                logln("ok GMT+xx:blecch");
+            }
+            catch (ParseException e) {
+                errln("whoops GMT+xx:blecch");
+            }
+            
+            // cover no ':' GMT+#, # < 24 (hh)
+            try {
+                d = fmt.parse("07/10/53 GMT+07");
+                logln("ok GMT+07");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+07 for pattern MM/dd/yy z");
+            }
+            
+            // cover no ':' GMT+#, # > 24 (hhmm)
+            try {
+                d = fmt.parse("07/10/53 GMT+0730");
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+0730 for pattern MM/dd/yy z");
+            }
+            
+            // cover GMT+#, # with second field
+            try {
+                d = fmt.parse("07/10/53 GMT+07:30:15");
+                logln("ok GMT+07:30:15");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+07:30:15 for pattern MM/dd/yy z");
+            }
+
+            // cover no ':' GMT+#, # with second field, no leading zero
+            try {
+                d = fmt.parse("07/10/53 GMT+73015");
+                logln("ok GMT+73015");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+73015 for pattern MM/dd/yy z");
+            }
+
+            // cover no ':' GMT+#, # with 1 digit second field
+            try {
+                d = fmt.parse("07/10/53 GMT+07300");
+                logln("ok GMT+07300");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 GMT+07300 for pattern MM/dd/yy z");
+            }
+            
+            // cover raw digits with no leading sign (bad RFC822) 
+            try {
+                d = fmt.parse("07/10/53 07");
+                errln("Parse of 07/10/53 07 for pattern MM/dd/yy z passed!");
+            }
+            catch (ParseException e) {
+                logln("ok");
+            }
+            
+            // cover raw digits (RFC822) 
+            try {
+                d = fmt.parse("07/10/53 +07");
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 +07 for pattern MM/dd/yy z failed");
+            }
+            
+            // cover raw digits (RFC822) 
+            try {
+                d = fmt.parse("07/10/53 -0730");
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 -00730 for pattern MM/dd/yy z failed");
+            }
+            
+            // cover raw digits (RFC822) in DST
+            try {
+                fmt.setTimeZone(TimeZone.getTimeZone("PDT"));
+                d = fmt.parse("07/10/53 -0730");
+                logln("ok");
+            }
+            catch (ParseException e) {
+                errln("Parse of 07/10/53 -0730 for pattern MM/dd/yy z failed");
+            }
+        }
+        
+        // TODO: revisit toLocalizedPattern
+        if (false) {
+            SimpleDateFormat fmt = new SimpleDateFormat("aabbcc");
+            try {
+                String pat = fmt.toLocalizedPattern();
+                errln("whoops, shouldn't have been able to localize aabbcc");
+            }
+            catch (IllegalArgumentException e) {
+                logln("aabbcc localize ok");
+            }
+        }
+
+        {
+            SimpleDateFormat fmt = new SimpleDateFormat("'aabbcc");
+            try {
+                fmt.toLocalizedPattern();
+                errln("whoops, localize unclosed quote");
+            }
+            catch (IllegalArgumentException e) {
+                logln("localize unclosed quote ok");
+            }
+        }
+        {
+            SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy z");
+            String text = "08/15/58 DBDY"; // bogus time zone
+            try {
+                fmt.parse(text);
+                errln("recognized bogus time zone DBDY");
+            }
+            catch (ParseException e) {
+                logln("time zone ex ok");
+            }
+        }
+        
+        {
+            // force fallback to default timezone when fmt timezone 
+            // is not named
+            SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy z");
+            // force fallback to default time zone, still fails
+            fmt.setTimeZone(TimeZone.getTimeZone("GMT+0147")); // not in equivalency group
+            String text = "08/15/58 DBDY";
+            try {
+                fmt.parse(text);
+                errln("Parse of 07/10/53 DBDY for pattern MM/dd/yy z passed");
+            }
+            catch (ParseException e) {
+                logln("time zone ex2 ok");
+            }
+            
+            // force success on fallback
+            text = "08/15/58 " + TimeZone.getDefault().getID();
+            try {
+                fmt.parse(text);
+                logln("found default tz");
+            }
+            catch (ParseException e) {
+                errln("whoops, got parse exception");
+            }
+        }
+        
+        {
+            // force fallback to symbols list of timezones when neither 
+            // fmt and default timezone is named
+            SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yy z");
+            TimeZone oldtz = TimeZone.getDefault();
+            TimeZone newtz = TimeZone.getTimeZone("GMT+0137"); // nonstandard tz
+            fmt.setTimeZone(newtz);
+            TimeZone.setDefault(newtz); // todo: fix security issue
+
+            // fallback to symbol list, but fail
+            String text = "08/15/58 DBDY"; // try to parse the bogus time zone
+            try {
+                fmt.parse(text);
+                errln("Parse of 07/10/53 DBDY for pattern MM/dd/yy z passed");
+            }
+            catch (ParseException e) {
+                logln("time zone ex3 ok");
+            }
+            catch (Exception e) {
+                // hmmm... this shouldn't happen.  don't want to exit this
+                // fn with timezone improperly set, so just in case
+                TimeZone.setDefault(oldtz);
+                throw new IllegalStateException(e.getMessage());
+            }
+
+            // create DFS that recognizes our bogus time zone, sortof
+            DateFormatSymbols xsym = new DateFormatSymbols();
+            String[][] tzids = xsym.getZoneStrings();
+            if (tzids.length > 0) { // let's hope!
+                tzids[0][1] = "DBDY"; // change a local name
+                logln("replaced '" + tzids[0][0] + "' with DBDY");
+
+                xsym.setZoneStrings(tzids);
+                fmt.setDateFormatSymbols(xsym);
+
+                try {
+                    fmt.parse(text);
+                    logln("we parsed DBDY (as GMT, but still...)");
+                }
+                catch (ParseException e) {
+                    errln("hey, still didn't recognize DBDY");
+                }
+                finally {
+                    TimeZone.setDefault(oldtz);
+                }
+            }
+        }
+
+        {
+            //cover getAvailableULocales
+            final ULocale[] locales = DateFormat.getAvailableULocales();
+            long count = locales.length;
+            if (count==0) {
+                errln(" got a empty list for getAvailableULocales");
+            }else{
+                logln("" + count + " available ulocales");            
+            }
+        }
+        
+        {
+            //cover DateFormatSymbols.getDateFormatBundle
+            cal = new GregorianCalendar();
+            Locale loc = Locale.getDefault();
+            DateFormatSymbols mysym = new DateFormatSymbols(cal, loc);
+            if (mysym == null) 
+                errln("FAIL: constructs DateFormatSymbols with calendar and locale failed");
+            
+            uloc = ULocale.getDefault();
+            // These APIs are obsolete and return null
+            ResourceBundle resb = DateFormatSymbols.getDateFormatBundle(cal, loc);
+            ResourceBundle resb2 = DateFormatSymbols.getDateFormatBundle(cal, uloc);
+            ResourceBundle resb3 = DateFormatSymbols.getDateFormatBundle(cal.getClass(), loc);
+            ResourceBundle resb4 = DateFormatSymbols.getDateFormatBundle(cal.getClass(), uloc);
+
+            if (resb != null) {
+                logln("resb is not null");
+            }
+            if (resb2 != null) {
+                logln("resb2 is not null");
+            }
+            if (resb3 != null) {
+                logln("resb3 is not null");
+            }
+            if (resb4 != null) {
+                logln("resb4 is not null");
+            }
+        }
+
+        {
+            //cover DateFormatSymbols.getInstance
+            DateFormatSymbols datsym1 = DateFormatSymbols.getInstance();
+            DateFormatSymbols datsym2 = new DateFormatSymbols();
+            if (!datsym1.equals(datsym2)) {
+                errln("FAIL: DateFormatSymbols returned by getInstance()" +
+                        "does not match new DateFormatSymbols().");
+            }
+            datsym1 = DateFormatSymbols.getInstance(Locale.JAPAN);
+            datsym2 = DateFormatSymbols.getInstance(ULocale.JAPAN);
+            if (!datsym1.equals(datsym2)) {
+                errln("FAIL: DateFormatSymbols returned by getInstance(Locale.JAPAN)" +
+                        "does not match the one returned by getInstance(ULocale.JAPAN).");
+            }
+        }
+        {
+            //cover DateFormatSymbols.getAvailableLocales/getAvailableULocales
+            Locale[] allLocales = DateFormatSymbols.getAvailableLocales();
+            if (allLocales.length == 0) {
+                errln("FAIL: Got a empty list for DateFormatSymbols.getAvailableLocales");
+            } else {
+                logln("PASS: " + allLocales.length +
+                        " available locales returned by DateFormatSymbols.getAvailableLocales");            
+            }
+
+            ULocale[] allULocales = DateFormatSymbols.getAvailableULocales();
+            if (allULocales.length == 0) {
+                errln("FAIL: Got a empty list for DateFormatSymbols.getAvailableLocales");
+            } else {
+                logln("PASS: " + allULocales.length +
+                        " available locales returned by DateFormatSymbols.getAvailableULocales");            
+            }
+        }
+    }
+
+    public void TestStandAloneMonths()
+    {
+        String EN_DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            "yyyy LLLL dd H:mm:ss", "fp", "2004 03 10 16:36:31", "2004 March 10 16:36:31", "2004 03 10 16:36:31",
+            "yyyy LLL dd H:mm:ss",  "fp", "2004 03 10 16:36:31", "2004 Mar 10 16:36:31",   "2004 03 10 16:36:31",
+            "yyyy LLLL dd H:mm:ss", "F",  "2004 03 10 16:36:31", "2004 March 10 16:36:31",
+            "yyyy LLL dd H:mm:ss",  "pf", "2004 Mar 10 16:36:31", "2004 03 10 16:36:31", "2004 Mar 10 16:36:31",
+            
+            "LLLL", "fp", "1970 01 01 0:00:00", "January",   "1970 01 01 0:00:00",
+            "LLLL", "fp", "1970 02 01 0:00:00", "February",  "1970 02 01 0:00:00",
+            "LLLL", "fp", "1970 03 01 0:00:00", "March",     "1970 03 01 0:00:00",
+            "LLLL", "fp", "1970 04 01 0:00:00", "April",     "1970 04 01 0:00:00",
+            "LLLL", "fp", "1970 05 01 0:00:00", "May",       "1970 05 01 0:00:00",
+            "LLLL", "fp", "1970 06 01 0:00:00", "June",      "1970 06 01 0:00:00",
+            "LLLL", "fp", "1970 07 01 0:00:00", "July",      "1970 07 01 0:00:00",
+            "LLLL", "fp", "1970 08 01 0:00:00", "August",    "1970 08 01 0:00:00",
+            "LLLL", "fp", "1970 09 01 0:00:00", "September", "1970 09 01 0:00:00",
+            "LLLL", "fp", "1970 10 01 0:00:00", "October",   "1970 10 01 0:00:00",
+            "LLLL", "fp", "1970 11 01 0:00:00", "November",  "1970 11 01 0:00:00",
+            "LLLL", "fp", "1970 12 01 0:00:00", "December",  "1970 12 01 0:00:00",
+            
+            "LLL", "fp", "1970 01 01 0:00:00", "Jan", "1970 01 01 0:00:00",
+            "LLL", "fp", "1970 02 01 0:00:00", "Feb", "1970 02 01 0:00:00",
+            "LLL", "fp", "1970 03 01 0:00:00", "Mar", "1970 03 01 0:00:00",
+            "LLL", "fp", "1970 04 01 0:00:00", "Apr", "1970 04 01 0:00:00",
+            "LLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00",
+            "LLL", "fp", "1970 06 01 0:00:00", "Jun", "1970 06 01 0:00:00",
+            "LLL", "fp", "1970 07 01 0:00:00", "Jul", "1970 07 01 0:00:00",
+            "LLL", "fp", "1970 08 01 0:00:00", "Aug", "1970 08 01 0:00:00",
+            "LLL", "fp", "1970 09 01 0:00:00", "Sep", "1970 09 01 0:00:00",
+            "LLL", "fp", "1970 10 01 0:00:00", "Oct", "1970 10 01 0:00:00",
+            "LLL", "fp", "1970 11 01 0:00:00", "Nov", "1970 11 01 0:00:00",
+            "LLL", "fp", "1970 12 01 0:00:00", "Dec", "1970 12 01 0:00:00",
+        };
+        
+        String CS_DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            "yyyy LLLL dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 duben 10 16:36:31", "2004 04 10 16:36:31",
+            "yyyy MMMM dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31", "2004 04 10 16:36:31",
+            "yyyy LLL dd H:mm:ss",  "fp", "2004 04 10 16:36:31", "2004 4. 10 16:36:31",   "2004 04 10 16:36:31",
+            "yyyy LLLL dd H:mm:ss", "F",  "2004 04 10 16:36:31", "2004 duben 10 16:36:31",
+            "yyyy MMMM dd H:mm:ss", "F",  "2004 04 10 16:36:31", "2004 dubna 10 16:36:31",
+            "yyyy LLLL dd H:mm:ss", "pf", "2004 duben 10 16:36:31", "2004 04 10 16:36:31", "2004 duben 10 16:36:31",
+            "yyyy MMMM dd H:mm:ss", "pf", "2004 dubna 10 16:36:31", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31",
+            
+            "LLLL", "fp", "1970 01 01 0:00:00", "leden",               "1970 01 01 0:00:00",
+            "LLLL", "fp", "1970 02 01 0:00:00", "\u00FAnor",           "1970 02 01 0:00:00",
+            "LLLL", "fp", "1970 03 01 0:00:00", "b\u0159ezen",         "1970 03 01 0:00:00",
+            "LLLL", "fp", "1970 04 01 0:00:00", "duben",               "1970 04 01 0:00:00",
+            "LLLL", "fp", "1970 05 01 0:00:00", "kv\u011Bten",         "1970 05 01 0:00:00",
+            "LLLL", "fp", "1970 06 01 0:00:00", "\u010Derven",         "1970 06 01 0:00:00",
+            "LLLL", "fp", "1970 07 01 0:00:00", "\u010Dervenec",       "1970 07 01 0:00:00",
+            "LLLL", "fp", "1970 08 01 0:00:00", "srpen",               "1970 08 01 0:00:00",
+            "LLLL", "fp", "1970 09 01 0:00:00", "z\u00E1\u0159\u00ED", "1970 09 01 0:00:00",
+            "LLLL", "fp", "1970 10 01 0:00:00", "\u0159\u00EDjen",     "1970 10 01 0:00:00",
+            "LLLL", "fp", "1970 11 01 0:00:00", "listopad",            "1970 11 01 0:00:00",
+            "LLLL", "fp", "1970 12 01 0:00:00", "prosinec",            "1970 12 01 0:00:00",
+
+            "LLL", "fp", "1970 01 01 0:00:00", "1.",  "1970 01 01 0:00:00",
+            "LLL", "fp", "1970 02 01 0:00:00", "2.",  "1970 02 01 0:00:00",
+            "LLL", "fp", "1970 03 01 0:00:00", "3.",  "1970 03 01 0:00:00",
+            "LLL", "fp", "1970 04 01 0:00:00", "4.",  "1970 04 01 0:00:00",
+            "LLL", "fp", "1970 05 01 0:00:00", "5.",  "1970 05 01 0:00:00",
+            "LLL", "fp", "1970 06 01 0:00:00", "6.",  "1970 06 01 0:00:00",
+            "LLL", "fp", "1970 07 01 0:00:00", "7.",  "1970 07 01 0:00:00",
+            "LLL", "fp", "1970 08 01 0:00:00", "8.",  "1970 08 01 0:00:00",
+            "LLL", "fp", "1970 09 01 0:00:00", "9.",  "1970 09 01 0:00:00",
+            "LLL", "fp", "1970 10 01 0:00:00", "10.", "1970 10 01 0:00:00",
+            "LLL", "fp", "1970 11 01 0:00:00", "11.", "1970 11 01 0:00:00",
+            "LLL", "fp", "1970 12 01 0:00:00", "12.", "1970 12 01 0:00:00",
+        };
+        
+        expect(EN_DATA, new Locale("en", "", ""));
+        expect(CS_DATA, new Locale("cs", "", ""));
+    }
+    
+    public void TestStandAloneDays()
+    {
+        String EN_DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            "cccc", "fp", "1970 01 04 0:00:00", "Sunday",    "1970 01 04 0:00:00",
+            "cccc", "fp", "1970 01 05 0:00:00", "Monday",    "1970 01 05 0:00:00",
+            "cccc", "fp", "1970 01 06 0:00:00", "Tuesday",   "1970 01 06 0:00:00",
+            "cccc", "fp", "1970 01 07 0:00:00", "Wednesday", "1970 01 07 0:00:00",
+            "cccc", "fp", "1970 01 01 0:00:00", "Thursday",  "1970 01 01 0:00:00",
+            "cccc", "fp", "1970 01 02 0:00:00", "Friday",    "1970 01 02 0:00:00",
+            "cccc", "fp", "1970 01 03 0:00:00", "Saturday",  "1970 01 03 0:00:00",
+            
+            "ccc", "fp", "1970 01 04 0:00:00", "Sun", "1970 01 04 0:00:00",
+            "ccc", "fp", "1970 01 05 0:00:00", "Mon", "1970 01 05 0:00:00",
+            "ccc", "fp", "1970 01 06 0:00:00", "Tue", "1970 01 06 0:00:00",
+            "ccc", "fp", "1970 01 07 0:00:00", "Wed", "1970 01 07 0:00:00",
+            "ccc", "fp", "1970 01 01 0:00:00", "Thu", "1970 01 01 0:00:00",
+            "ccc", "fp", "1970 01 02 0:00:00", "Fri", "1970 01 02 0:00:00",
+            "ccc", "fp", "1970 01 03 0:00:00", "Sat", "1970 01 03 0:00:00",
+        };
+            
+        String CS_DATA[] = {
+            "yyyy MM dd HH:mm:ss",
+
+            "cccc", "fp", "1970 01 04 0:00:00", "ned\u011Ble",       "1970 01 04 0:00:00",
+            "cccc", "fp", "1970 01 05 0:00:00", "pond\u011Bl\u00ED", "1970 01 05 0:00:00",
+            "cccc", "fp", "1970 01 06 0:00:00", "\u00FAter\u00FD",   "1970 01 06 0:00:00",
+            "cccc", "fp", "1970 01 07 0:00:00", "st\u0159eda",       "1970 01 07 0:00:00",
+            "cccc", "fp", "1970 01 01 0:00:00", "\u010Dtvrtek",      "1970 01 01 0:00:00",
+            "cccc", "fp", "1970 01 02 0:00:00", "p\u00E1tek",        "1970 01 02 0:00:00",
+            "cccc", "fp", "1970 01 03 0:00:00", "sobota",            "1970 01 03 0:00:00",
+            
+            "ccc", "fp", "1970 01 04 0:00:00", "ne",      "1970 01 04 0:00:00",
+            "ccc", "fp", "1970 01 05 0:00:00", "po",      "1970 01 05 0:00:00",
+            "ccc", "fp", "1970 01 06 0:00:00", "\u00FAt", "1970 01 06 0:00:00",
+            "ccc", "fp", "1970 01 07 0:00:00", "st",      "1970 01 07 0:00:00",
+            "ccc", "fp", "1970 01 01 0:00:00", "\u010Dt", "1970 01 01 0:00:00",
+            "ccc", "fp", "1970 01 02 0:00:00", "p\u00E1", "1970 01 02 0:00:00",
+            "ccc", "fp", "1970 01 03 0:00:00", "so",      "1970 01 03 0:00:00",
+        };
+        
+        expect(EN_DATA, new Locale("en", "", ""));
+        expect(CS_DATA, new Locale("cs", "", ""));
+    }
+    
+    public void TestNarrowNames()
+    {
+        String EN_DATA[] = {
+                "yyyy MM dd HH:mm:ss",
+
+                "yyyy MMMMM dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31",
+                "yyyy LLLLL dd H:mm:ss",  "2004 03 10 16:36:31", "2004 M 10 16:36:31",
+                
+                "MMMMM", "1970 01 01 0:00:00", "J",
+                "MMMMM", "1970 02 01 0:00:00", "F",
+                "MMMMM", "1970 03 01 0:00:00", "M",
+                "MMMMM", "1970 04 01 0:00:00", "A",
+                "MMMMM", "1970 05 01 0:00:00", "M",
+                "MMMMM", "1970 06 01 0:00:00", "J",
+                "MMMMM", "1970 07 01 0:00:00", "J",
+                "MMMMM", "1970 08 01 0:00:00", "A",
+                "MMMMM", "1970 09 01 0:00:00", "S",
+                "MMMMM", "1970 10 01 0:00:00", "O",
+                "MMMMM", "1970 11 01 0:00:00", "N",
+                "MMMMM", "1970 12 01 0:00:00", "D",
+                
+                "LLLLL", "1970 01 01 0:00:00", "J",
+                "LLLLL", "1970 02 01 0:00:00", "F",
+                "LLLLL", "1970 03 01 0:00:00", "M",
+                "LLLLL", "1970 04 01 0:00:00", "A",
+                "LLLLL", "1970 05 01 0:00:00", "M",
+                "LLLLL", "1970 06 01 0:00:00", "J",
+                "LLLLL", "1970 07 01 0:00:00", "J",
+                "LLLLL", "1970 08 01 0:00:00", "A",
+                "LLLLL", "1970 09 01 0:00:00", "S",
+                "LLLLL", "1970 10 01 0:00:00", "O",
+                "LLLLL", "1970 11 01 0:00:00", "N",
+                "LLLLL", "1970 12 01 0:00:00", "D",
+
+                "EEEEE", "1970 01 04 0:00:00", "S",
+                "EEEEE", "1970 01 05 0:00:00", "M",
+                "EEEEE", "1970 01 06 0:00:00", "T",
+                "EEEEE", "1970 01 07 0:00:00", "W",
+                "EEEEE", "1970 01 01 0:00:00", "T",
+                "EEEEE", "1970 01 02 0:00:00", "F",
+                "EEEEE", "1970 01 03 0:00:00", "S",
+                
+                "ccccc", "1970 01 04 0:00:00", "S",
+                "ccccc", "1970 01 05 0:00:00", "M",
+                "ccccc", "1970 01 06 0:00:00", "T",
+                "ccccc", "1970 01 07 0:00:00", "W",
+                "ccccc", "1970 01 01 0:00:00", "T",
+                "ccccc", "1970 01 02 0:00:00", "F",
+                "ccccc", "1970 01 03 0:00:00", "S",
+            };
+            
+            String CS_DATA[] = {
+                "yyyy MM dd HH:mm:ss",
+
+                "yyyy LLLLL dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31",
+                "yyyy MMMMM dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31",
+                
+                "MMMMM", "1970 01 01 0:00:00", "l",
+                "MMMMM", "1970 02 01 0:00:00", "\u00FA",
+                "MMMMM", "1970 03 01 0:00:00", "b",
+                "MMMMM", "1970 04 01 0:00:00", "d",
+                "MMMMM", "1970 05 01 0:00:00", "k",
+                "MMMMM", "1970 06 01 0:00:00", "\u010D",
+                "MMMMM", "1970 07 01 0:00:00", "\u010D",
+                "MMMMM", "1970 08 01 0:00:00", "s",
+                "MMMMM", "1970 09 01 0:00:00", "z",
+                "MMMMM", "1970 10 01 0:00:00", "\u0159",
+                "MMMMM", "1970 11 01 0:00:00", "l",
+                "MMMMM", "1970 12 01 0:00:00", "p",
+                
+                "LLLLL", "1970 01 01 0:00:00", "l",
+                "LLLLL", "1970 02 01 0:00:00", "\u00FA",
+                "LLLLL", "1970 03 01 0:00:00", "b",
+                "LLLLL", "1970 04 01 0:00:00", "d",
+                "LLLLL", "1970 05 01 0:00:00", "k",
+                "LLLLL", "1970 06 01 0:00:00", "\u010D",
+                "LLLLL", "1970 07 01 0:00:00", "\u010D",
+                "LLLLL", "1970 08 01 0:00:00", "s",
+                "LLLLL", "1970 09 01 0:00:00", "z",
+                "LLLLL", "1970 10 01 0:00:00", "\u0159",
+                "LLLLL", "1970 11 01 0:00:00", "l",
+                "LLLLL", "1970 12 01 0:00:00", "p",
+
+                "EEEEE", "1970 01 04 0:00:00", "N",
+                "EEEEE", "1970 01 05 0:00:00", "P",
+                "EEEEE", "1970 01 06 0:00:00", "\u00DA",
+                "EEEEE", "1970 01 07 0:00:00", "S",
+                "EEEEE", "1970 01 01 0:00:00", "\u010C",
+                "EEEEE", "1970 01 02 0:00:00", "P",
+                "EEEEE", "1970 01 03 0:00:00", "S",
+
+                "ccccc", "1970 01 04 0:00:00", "N",
+                "ccccc", "1970 01 05 0:00:00", "P",
+                "ccccc", "1970 01 06 0:00:00", "\u00DA",
+                "ccccc", "1970 01 07 0:00:00", "S",
+                "ccccc", "1970 01 01 0:00:00", "\u010C",
+                "ccccc", "1970 01 02 0:00:00", "P",
+                "ccccc", "1970 01 03 0:00:00", "S",
+            };
+            
+            expectFormat(EN_DATA, new Locale("en", "", ""));
+            expectFormat(CS_DATA, new Locale("cs", "", ""));
+    }
+    
+    public void TestEras()
+    {
+        String EN_DATA[] = {
+            "yyyy MM dd",
+
+            "MMMM dd yyyy G",    "fp", "1951 07 17", "July 17 1951 AD",          "1951 07 17",
+            "MMMM dd yyyy GG",   "fp", "1951 07 17", "July 17 1951 AD",          "1951 07 17",
+            "MMMM dd yyyy GGG",  "fp", "1951 07 17", "July 17 1951 AD",          "1951 07 17",
+            "MMMM dd yyyy GGGG", "fp", "1951 07 17", "July 17 1951 Anno Domini", "1951 07 17",
+
+            "MMMM dd yyyy G",    "fp", "-438 07 17", "July 17 0439 BC",            "-438 07 17",
+            "MMMM dd yyyy GG",   "fp", "-438 07 17", "July 17 0439 BC",            "-438 07 17",
+            "MMMM dd yyyy GGG",  "fp", "-438 07 17", "July 17 0439 BC",            "-438 07 17",
+            "MMMM dd yyyy GGGG", "fp", "-438 07 17", "July 17 0439 Before Christ", "-438 07 17",
+       };
+        
+        expect(EN_DATA, new Locale("en", "", ""));
+    }
+/*    
+    public void TestQuarters()
+    {
+        String EN_DATA[] = {
+            "yyyy MM dd",
+
+            "Q",    "fp", "1970 01 01", "1",           "1970 01 01",
+            "QQ",   "fp", "1970 04 01", "02",          "1970 04 01",
+            "QQQ",  "fp", "1970 07 01", "Q3",          "1970 07 01",
+            "QQQQ", "fp", "1970 10 01", "4th quarter", "1970 10 01",
+
+            "q",    "fp", "1970 01 01", "1",           "1970 01 01",
+            "qq",   "fp", "1970 04 01", "02",          "1970 04 01",
+            "qqq",  "fp", "1970 07 01", "Q3",          "1970 07 01",
+            "qqqq", "fp", "1970 10 01", "4th quarter", "1970 10 01",
+       };
+        
+        expect(EN_DATA, new Locale("en", "", ""));
+    }
+*/    
+    /**
+     * Test parsing.  Input is an array that starts with the following
+     * header:
+     *
+     * [0]   = pattern string to parse [i+2] with
+     *
+     * followed by test cases, each of which is 3 array elements:
+     *
+     * [i]   = pattern, or null to reuse prior pattern
+     * [i+1] = input string
+     * [i+2] = expected parse result (parsed with pattern [0])
+     *
+     * If expect parse failure, then [i+2] should be null.
+     */
+    void expectParse(String[] data, Locale loc) {
+        Date FAIL = null;
+        String FAIL_STR = "parse failure";
+        int i = 0;
+
+        SimpleDateFormat fmt = new SimpleDateFormat("", loc);
+        SimpleDateFormat ref = new SimpleDateFormat(data[i++], loc);
+        SimpleDateFormat gotfmt = new SimpleDateFormat("G yyyy MM dd HH:mm:ss z", loc);
+
+        String currentPat = null;
+        while (i<data.length) {
+            String pattern  = data[i++];
+            String input    = data[i++];
+            String expected = data[i++];
+
+            if (pattern != null) {
+                fmt.applyPattern(pattern);
+                currentPat = pattern;
+            }
+            String gotstr = FAIL_STR;
+            Date got;
+            try {
+                got = fmt.parse(input);
+                gotstr = gotfmt.format(got);
+            } catch (ParseException e1) {
+                got = FAIL;
+            }
+
+            Date exp = FAIL;
+            String expstr = FAIL_STR;
+            if (expected != null) {
+                expstr = expected;
+                try {
+                    exp = ref.parse(expstr);
+                } catch (ParseException e2) {
+                    errln("FAIL: Internal test error");
+                }
+            }
+
+            if (got == exp || (got != null && got.equals(exp))) {
+                logln("Ok: " + input + " x " +
+                      currentPat + " => " + gotstr);                
+            } else {
+                errln("FAIL: " + input + " x " +
+                      currentPat + " => " + gotstr + ", expected " +
+                      expstr);
+            }
+        }    
+    }
+    
+    /**
+     * Test formatting.  Input is an array of String that starts
+     * with a single 'header' element
+     *
+     * [0]   = reference dateformat pattern string (ref)
+     *
+     * followed by test cases, each of which is 4 or 5 elements:
+     *
+     * [i]   = test dateformat pattern string (test), or null to reuse prior test pattern
+     * [i+1] = data string A
+     * [i+2] = data string B
+     *
+     * Formats a date, checks the result.
+     *
+     * Examples:
+     * "y/M/d H:mm:ss.SSS", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567"
+     * -- ref.parse A, get t0
+     * -- test.format t0, get r0
+     * -- compare r0 to B, fail if not equal
+     */
+    void expectFormat(String[] data, Locale loc)
+    {
+        int i = 1;
+        String currentPat = null;
+        SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+
+        while (i<data.length) {
+            SimpleDateFormat fmt = new SimpleDateFormat("", loc);
+            String pattern  = data[i++];
+            if (pattern != null) {
+                fmt.applyPattern(pattern);
+                currentPat = pattern;
+            }
+
+            String datestr = data[i++];
+            String string = data[i++];
+            Date date = null;
+            
+            try {
+                date = ref.parse(datestr);
+            } catch (ParseException e) {
+                errln("FAIL: Internal test error; can't parse " + datestr);
+                continue;
+            }
+            
+            assertEquals("\"" + currentPat + "\".format(" + datestr + ")",
+                         string,
+                         fmt.format(date));
+        }
+    }
+
+    /**
+     * Test formatting and parsing.  Input is an array of String that starts
+     * with a single 'header' element
+     *
+     * [0]   = reference dateformat pattern string (ref)
+     *
+     * followed by test cases, each of which is 4 or 5 elements:
+     *
+     * [i]   = test dateformat pattern string (test), or null to reuse prior test pattern
+     * [i+1] = control string, either "fp", "pf", or "F".
+     * [i+2] = data string A
+     * [i+3] = data string B
+     * [i+4] = data string C (not present for 'F' control string)
+     *
+     * Note: the number of data strings depends on the control string.
+     *
+     * fp formats a date, checks the result, then parses the result and checks against a (possibly different) date
+     * pf parses a string, checks the result, then formats the result and checks against a (possibly different) string
+     * F is a shorthand for fp when the second date is the same as the first
+     * P is a shorthand for pf when the second string is the same as the first
+     *
+     * Examples:
+     * (fp) "y/M/d H:mm:ss.SS", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.56", "2004 03 10 16:36:31.560",
+     * -- ref.parse A, get t0
+     * -- test.format t0, get r0
+     * -- compare r0 to B, fail if not equal
+     * -- test.parse B, get t1
+     * -- ref.parse C, get t2
+     * -- compare t1 and t2, fail if not equal
+     *
+     * (F) "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567"
+     * -- ref.parse A, get t0
+     * -- test.format t0, get r0
+     * -- compare r0 to B, fail if not equal
+     * -- test.parse B, get t1
+     * -- compare t1 and t0, fail if not equal
+     *
+     * (pf) "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.5670",
+     * -- test.parse A, get t0
+     * -- ref.parse B, get t1
+     * -- compare t0 to t1, fail if not equal
+     * -- test.format t1, get r0
+     * -- compare r0 and C, fail if not equal
+     *
+     * (P) "y/M/d H:mm:ss.SSSS", "P", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567"",
+     * -- test.parse A, get t0
+     * -- ref.parse B, get t1
+     * -- compare t0 to t1, fail if not equal
+     * -- test.format t1, get r0
+     * -- compare r0 and A, fail if not equal
+     */
+    void expect(String[] data, Locale loc) {
+        int i = 1;
+        SimpleDateFormat univ = new SimpleDateFormat("EE G yyyy MM dd HH:mm:ss.SSS zzz", loc);
+        String currentPat = null;
+        SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+
+        while (i<data.length) {
+            SimpleDateFormat fmt = new SimpleDateFormat("", loc);
+            String pattern  = data[i++];
+            if (pattern != null) {
+                fmt.applyPattern(pattern);
+                currentPat = pattern;
+            }
+
+            String control = data[i++];
+
+            if (control.equals("fp") || control.equals("F")) {
+                // 'f'
+                String datestr = data[i++];
+                String string = data[i++];
+                String datestr2 = datestr;
+                if (control.length() == 2) {
+                    datestr2 = data[i++];
+                }
+                Date date = null;
+                try {
+                    date = ref.parse(datestr);
+                } catch (ParseException e) {
+                    errln("FAIL: Internal test error; can't parse " + datestr);
+                    continue;
+                }
+                assertEquals("\"" + currentPat + "\".format(" + datestr + ")",
+                             string,
+                             fmt.format(date));
+                // 'p'
+                if (!datestr2.equals(datestr)) {
+                    try {
+                        date = ref.parse(datestr2);
+                    } catch (ParseException e2) {
+                        errln("FAIL: Internal test error; can't parse " + datestr2);
+                        continue;
+                    }
+                }
+                try {
+                    Date parsedate = fmt.parse(string);
+                    assertEquals("\"" + currentPat + "\".parse(" + string + ")",
+                                 univ.format(date),
+                                 univ.format(parsedate));
+                } catch (ParseException e3) {
+                    errln("FAIL: \"" + currentPat + "\".parse(" + string + ") => " +
+                          e3);
+                    continue;
+                }
+            }
+            else if (control.equals("pf") || control.equals("P")) {
+                // 'p'
+                String string = data[i++];
+                String datestr = data[i++];
+                String string2 = string;
+                if (control.length() == 2) {
+                    string2 = data[i++];
+                }
+
+                Date date = null;
+                try {
+                    date = ref.parse(datestr);
+                } catch (ParseException e) {
+                    errln("FAIL: Internal test error; can't parse " + datestr);
+                    continue;
+                }
+                try {
+                    Date parsedate = fmt.parse(string);
+                    assertEquals("\"" + currentPat + "\".parse(" + string + ")",
+                                 univ.format(date),
+                                 univ.format(parsedate));
+                } catch (ParseException e2) {
+                    errln("FAIL: \"" + currentPat + "\".parse(" + string + ") => " +
+                          e2);
+                    continue;
+                }
+                // 'f'
+                assertEquals("\"" + currentPat + "\".format(" + datestr + ")",
+                             string2,
+                             fmt.format(date));
+            }
+            else {
+                errln("FAIL: Invalid control string " + control);
+                return;
+            }
+        }
+    }
+    /*
+    public void TestJB4757(){
+        DateFormat dfmt = DateFormat.getDateInstance(DateFormat.FULL, ULocale.ROOT);
+    }
+    */
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /*
+     * Test case for formatToCharacterIterator
+     */
+    public void TestFormatToCharacterIterator() {
+        // Generate pattern string including all pattern letters with various length
+        AttributedCharacterIterator acit;
+        final char SEPCHAR = '~';
+        String[] patterns = new String[5];
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < patterns.length; i++) {
+            sb.setLength(0);
+            for (int j = 0; j < PATTERN_CHARS.length(); j++) {
+                if (j != 0) {
+                    for (int k = 0; k <= i; k++) {
+                        sb.append(SEPCHAR);
+                    }
+                }
+                char letter = PATTERN_CHARS.charAt(j);
+                for (int k = 0; k <= i; k++) {
+                    sb.append(letter);
+                }
+            }
+            patterns[i] = sb.toString();
+        }
+        if (isVerbose()) {
+            for (int i = 0; i < patterns.length; i++) {
+                logln("patterns[" + i + "] = " + patterns[i]);
+            }
+        }
+
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JULY, 16, 8, 20, 25);
+        cal.set(Calendar.MILLISECOND, 567);
+        final Date d = cal.getTime();
+
+        // Test AttributedCharacterIterator returned by SimpleDateFormat
+        for (int i = 0; i < patterns.length; i++) {
+            SimpleDateFormat sdf = new SimpleDateFormat(patterns[i]);
+            acit = sdf.formatToCharacterIterator(d);
+            int patidx = 0;
+
+            while (true) {
+                Map map = acit.getAttributes();
+                int limit = acit.getRunLimit();
+                if (map.isEmpty()) {
+                    // Must be pattern literal - '~'
+                    while (acit.getIndex() < limit) {
+                        if (acit.current() != SEPCHAR) {
+                            errln("FAIL: Invalid pattern literal at " + acit.current() + " in patterns[" + i + "]");
+                        }
+                        acit.next();
+                    }
+                } else {
+                    Set keySet = map.keySet();
+                    if (keySet.size() == 1) {
+                        // Check the attribute
+                        Iterator keyIterator = keySet.iterator();
+                        DateFormat.Field attr = (DateFormat.Field)keyIterator.next();
+                        if (!DATEFORMAT_FIELDS[patidx].equals(attr)) {
+                            errln("FAIL: The attribute at " + acit.getIndex() + " in patterns[" + i + "" +
+                                    "] is " + attr + " - Expected: " + DATEFORMAT_FIELDS[patidx]);
+                        }
+                    } else {
+                        // SimpleDateFormat#formatToCharacterIterator never set multiple
+                        // attributes to a single text run.
+                        errln("FAIL: Multiple attributes were set");
+                    }
+                    patidx++;
+                    // Move to the run limit
+                    acit.setIndex(limit);
+                }
+                if (acit.current() == CharacterIterator.DONE) {
+                    break;
+                }
+            }
+        }
+
+        // ChineseDateFormat has pattern letter 'l' for leap month marker in addition to regular DateFormat
+        cal.clear();
+        cal.set(2009, Calendar.JUNE, 22); // 26x78-5-30
+        Date nonLeapMonthDate = cal.getTime(); // non-leap month
+        cal.set(2009, Calendar.JUNE, 23); // 26x78-5*-1
+        Date leapMonthDate = cal.getTime(); // leap month
+
+        ChineseDateFormat cdf = new ChineseDateFormat("y'x'G-Ml-d", ULocale.US);
+        acit = cdf.formatToCharacterIterator(nonLeapMonthDate);
+        Set keys = acit.getAllAttributeKeys();
+        if (keys.contains(ChineseDateFormat.Field.IS_LEAP_MONTH)) {
+            errln("FAIL: IS_LEAP_MONTH attribute must not present for Chinese calendar date "
+                    + cdf.format(nonLeapMonthDate));
+        }
+        acit = cdf.formatToCharacterIterator(leapMonthDate);
+        keys = acit.getAllAttributeKeys();
+        if (!keys.contains(ChineseDateFormat.Field.IS_LEAP_MONTH)) {
+            errln("FAIL: IS_LEAP_MONTH attribute must present for Chinese calendar date "
+                    + cdf.format(leapMonthDate));
+        }
+    }
+
+    /*
+     * API coverage test case for formatToCharacterIterator
+     */
+    public void TestFormatToCharacterIteratorCoverage() {
+        // Calling formatToCharacterIterator, using various argument types
+        DateFormat df = DateFormat.getDateTimeInstance();
+        AttributedCharacterIterator acit = null;
+
+        Calendar cal = Calendar.getInstance();
+        try {
+            acit = df.formatToCharacterIterator(cal);
+            if (acit == null) {
+                errln("FAIL: null AttributedCharacterIterator returned by formatToCharacterIterator(Calendar)");
+            }
+        } catch (IllegalArgumentException iae) {
+            errln("FAIL: Calendar must be accepted by formatToCharacterIterator");
+        }
+
+        Date d = cal.getTime();
+        try {
+            acit = df.formatToCharacterIterator(d);
+            if (acit == null) {
+                errln("FAIL: null AttributedCharacterIterator returned by formatToCharacterIterator(Date)");
+            }
+        } catch (IllegalArgumentException iae) {
+            errln("FAIL: Date must be accepted by formatToCharacterIterator");
+        }
+
+        Number num = new Long(d.getTime());
+        try {
+            acit = df.formatToCharacterIterator(num);
+            if (acit == null) {
+                errln("FAIL: null AttributedCharacterIterator returned by formatToCharacterIterator(Number)");
+            }
+        } catch (IllegalArgumentException iae) {
+            errln("FAIL: Number must be accepted by formatToCharacterIterator");
+        }
+
+        boolean isException = false;
+        String str = df.format(d);
+        try {
+            acit = df.formatToCharacterIterator(str);
+            if (acit == null) {
+                errln("FAIL: null AttributedCharacterIterator returned by formatToCharacterIterator(String)");
+            }
+        } catch (IllegalArgumentException iae) {
+            logln("IllegalArgumentException is thrown by formatToCharacterIterator");
+            isException = true;
+        }
+        if (!isException) {
+            errln("FAIL: String must not be accepted by formatToCharacterIterator");
+        }
+
+        // DateFormat.Field#ofCalendarField and getCalendarField
+        for (int i = 0; i < DATEFORMAT_FIELDS.length; i++) {
+            int calField = DATEFORMAT_FIELDS[i].getCalendarField();
+            if (calField != -1) {
+                DateFormat.Field field = DateFormat.Field.ofCalendarField(calField);
+                if (field != DATEFORMAT_FIELDS[i]) {
+                    errln("FAIL: " + field + " is returned for a Calendar field " + calField
+                            + " - Expected: " + DATEFORMAT_FIELDS[i]);
+                }
+            }
+        }
+
+        // IllegalArgument for ofCalendarField
+        isException = false;
+        try {
+            DateFormat.Field.ofCalendarField(-1);
+        } catch (IllegalArgumentException iae) {
+            logln("IllegalArgumentException is thrown by ofCalendarField");
+            isException = true;
+        }
+        if (!isException) {
+            errln("FAIL: IllegalArgumentException must be thrown by ofCalendarField for calendar field value -1");
+        }
+
+        // ChineseDateFormat.Field#ofCalendarField and getCalendarField
+        int ccalField = ChineseDateFormat.Field.IS_LEAP_MONTH.getCalendarField();
+        if (ccalField != ChineseCalendar.IS_LEAP_MONTH) {
+            errln("FAIL: ChineseCalendar field " + ccalField + " is returned for ChineseDateFormat.Field.IS_LEAP_MONTH.getCalendarField()");
+        } else {
+            DateFormat.Field cfield = ChineseDateFormat.Field.ofCalendarField(ccalField);
+            if (cfield != ChineseDateFormat.Field.IS_LEAP_MONTH) {
+                errln("FAIL: " + cfield + " is returned for a ChineseCalendar field " + ccalField
+                        + " - Expected: " + ChineseDateFormat.Field.IS_LEAP_MONTH);
+            }
+        }
+    }
+//#endif
+
+    /*
+     * Test for checking SimpleDateFormat/DateFormatSymbols creation
+     * honor the calendar keyword in the given locale.  See ticket#6100
+     */
+    public void TestCalendarType() {
+        final String testPattern = "GGGG y MMMM d EEEE";
+
+        final ULocale[] testLocales = {
+                new ULocale("de"),
+                new ULocale("fr_FR@calendar=gregorian"),
+                new ULocale("en@calendar=islamic"),
+                new ULocale("ja_JP@calendar=japanese"),
+                new ULocale("zh_Hans_CN@calendar=bogus"),
+        };
+
+        SimpleDateFormat[] formatters = new SimpleDateFormat[5];
+        for (int i = 0; i < testLocales.length; i++) {
+            // Create a locale with no keywords
+            StringBuffer locStrBuf = new StringBuffer();
+            if (testLocales[i].getLanguage().length() > 0) {
+                locStrBuf.append(testLocales[i].getLanguage());
+            }
+            if (testLocales[i].getScript().length() > 0) {
+                locStrBuf.append('_');
+                locStrBuf.append(testLocales[i].getScript());
+            }
+            if (testLocales[i].getCountry().length() > 0) {
+                locStrBuf.append('_');
+                locStrBuf.append(testLocales[i].getCountry());
+            }
+            ULocale locNoKeywords = new ULocale(locStrBuf.toString());
+
+            Calendar cal = Calendar.getInstance(testLocales[i]);
+
+            // Calendar getDateFormat method
+            DateFormat df = cal.getDateTimeFormat(DateFormat.MEDIUM, DateFormat.MEDIUM, locNoKeywords);
+            if (df instanceof SimpleDateFormat) {
+                formatters[0] = (SimpleDateFormat)df;
+                formatters[0].applyPattern(testPattern);
+            } else {
+                formatters[0] = null;
+            }
+
+            // DateFormat constructor with locale
+            df = DateFormat.getDateInstance(DateFormat.MEDIUM, testLocales[i]);
+            if (df instanceof SimpleDateFormat) {
+                formatters[1] = (SimpleDateFormat)df;
+                formatters[1].applyPattern(testPattern);
+            } else {
+                formatters[1] = null;
+            }
+
+            // DateFormat constructor with Calendar
+            df = DateFormat.getDateInstance(cal, DateFormat.MEDIUM, locNoKeywords);
+            if (df instanceof SimpleDateFormat) {
+                formatters[2] = (SimpleDateFormat)df;
+                formatters[2].applyPattern(testPattern);
+            } else {
+                formatters[2] = null;
+            }
+
+            // SimpleDateFormat constructor
+            formatters[3] = new SimpleDateFormat(testPattern, testLocales[i]);
+ 
+            // SimpleDateFormat with DateFormatSymbols
+            DateFormatSymbols dfs = new DateFormatSymbols(testLocales[i]);
+            formatters[4] = new SimpleDateFormat(testPattern, dfs, testLocales[i]);
+
+            // All SimpleDateFormat instances should produce the exact
+            // same result.
+            String expected = null;
+            Date d = new Date();
+            for (int j = 0; j < formatters.length; j++) {
+                if (formatters[j] != null) {
+                    String tmp = formatters[j].format(d);
+                    if (expected == null) {
+                        expected = tmp;
+                    } else if (!expected.equals(tmp)) {
+                        errln("FAIL: formatter[" + j + "] returned \"" + tmp + "\" in locale " +
+                                testLocales[i] + " - expected: " + expected);
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java b/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
new file mode 100644
index 0000000..7187ccc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
@@ -0,0 +1,1008 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : DateIntervalFormatTest
+ * Source File: $ICU4CRoot/source/test/intltest/dtifmtts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateIntervalFormat;
+import com.ibm.icu.text.DateIntervalInfo;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.util.ULocale;
+
+public class DateIntervalFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new DateIntervalFormatTest().run(args);
+    }
+
+
+    /**
+     * Test format
+     */
+    public void testFormat() {
+        // first item is date pattern
+        // followed by a group of locale/from_data/to_data/skeleton/interval_data
+        String[] DATA = {
+            "yyyy MM dd HH:mm:ss",    
+            // test skeleton with both date and time
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMyhm", "Nov 10, 2007 10:10 AM \\u2013 Nov 20, 2007 10:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "dMMMyhm", "Nov 10, 2007 10:10\\u201311:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "hms", "10:10:10 AM \\u2013 11:10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10, 2007 \\u2013 Friday, October 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMy", "October 10, 2007 \\u2013 October 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMM", "October 10, 2007 \\u2013 October 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMMy", "October 2007 \\u2013 October 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10, 2007 \\u2013 Friday, October 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMMy", "Wed, Oct 10, 2007 \\u2013 Fri, Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMy", "Oct 10, 2007 \\u2013 Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "Oct 10, 2007 \\u2013 Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Oct 2007 \\u2013 Oct 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMM", "Wed, Oct 10, 2007 \\u2013 Fri, Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10/10/07 \\u2013 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dM", "10/10/07 \\u2013 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10/07 \\u2013 10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "d", "10/10/07 \\u2013 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Ed", "10 Wed \\u2013 10 Fri", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007\\u20132008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10/07 \\u2013 10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMM", "Oct 2007 \\u2013 Oct 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMM", "October 2007 \\u2013 October 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10/10/2007 10:10 AM \\u2013 10/10/2008 10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmv", "10/10/2007 10:10 AM PT \\u2013 10/10/2008 10:10 AM PT", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmz", "10/10/2007 10:10 AM PDT \\u2013 10/10/2008 10:10 AM PDT", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "h", "10/10/2007 10 \\u2013 10/10/2008 10", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hv", "10/10/2007 PT (Hour: 10) \\u2013 10/10/2008 PT (Hour: 10)", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hz", "10/10/2007 PDT (Hour: 10) \\u2013 10/10/2008 PDT (Hour: 10)", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EddMMy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmm", "10/10/2007 10:10 AM \\u2013 10/10/2008 10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmmzz", "10/10/2007 10:10 AM PDT \\u2013 10/10/2008 10:10 AM PDT", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hms", "10/10/2007 10:10:10 AM \\u2013 10/10/2008 10:10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMMy", "O 10, 2007 \\u2013 O 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEEdM", "W, 10/10/07 \\u2013 F, 10/10/08", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10 \\u2013 Saturday, November 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "October 10 \\u2013 November 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMM", "October 10 \\u2013 November 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "October\\u2013November 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10 \\u2013 Saturday, November 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMMy", "Wed, Oct 10 \\u2013 Sat, Nov 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMy", "Oct 10 \\u2013 Nov 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "Oct 10 \\u2013 Nov 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Oct\\u2013Nov 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMM", "Wed, Oct 10 \\u2013 Sat, Nov 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMy", "10/10/07 \\u2013 11/10/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dM", "10/10 \\u2013 11/10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10/07 \\u2013 11/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdM", "Wed, 10/10 \\u2013 Sat, 11/10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10/10 \\u2013 11/10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Ed", "10 Wed \\u2013 10 Sat", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "y", "2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "M", "10\\u201311", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Oct\\u2013Nov", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMM", "October-November", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hm", "10/10/2007 10:10 AM \\u2013 11/10/2007 10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "10/10/2007 10:10 AM PT \\u2013 11/10/2007 10:10 AM PT", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmz", "10/10/2007 10:10 AM PDT \\u2013 11/10/2007 10:10 AM PST", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "h", "10/10/2007 10 \\u2013 11/10/2007 10", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hv", "10/10/2007 PT (Hour: 10) \\u2013 11/10/2007 PT (Hour: 10)", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hz", "10/10/2007 PDT (Hour: 10) \\u2013 11/10/2007 PST (Hour: 10)", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EddMMy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hhmm", "10/10/2007 10:10 AM \\u2013 11/10/2007 10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hhmmzz", "10/10/2007 10:10 AM PDT \\u2013 11/10/2007 10:10 AM PST", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10/10/2007 10:10:10 AM \\u2013 11/10/2007 10:10:10 AM", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMMy", "O 10 \\u2013 N 10, 2007", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEEdM", "W, 10/10 \\u2013 S, 11/10", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "Saturday, November 10 \\u2013 Tuesday, November 20, 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMy", "November 10\\u201320, 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "November 10\\u201320", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMMy", "November 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "Saturday, November 10 \\u2013 Tuesday, November 20", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMMy", "Sat, Nov 10 \\u2013 Tue, Nov 20, 2007", 
+            
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMM", "Nov 10\\u201320", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMM", "Sat, Nov 10 \\u2013 Tue, Nov 20", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "11/10/07 \\u2013 11/20/07", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11/10 \\u2013 11/20", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11/2007", 
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "Sat, 11/10 \\u2013 Tue, 11/20", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10\\u201320", 
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Ed", "10 Sat \\u2013 20 Tue", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "Nov", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hm", "11/10/2007 10:10 AM \\u2013 11/20/2007 10:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "11/10/2007 10:10 AM PT \\u2013 11/20/2007 10:10 AM PT", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "11/10/2007 10:10 AM PST \\u2013 11/20/2007 10:10 AM PST", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hz", "11/10/2007 PST (Hour: 10) \\u2013 11/20/2007 PST (Hour: 10)", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEddMMyyyy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EddMMy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hhmm", "11/10/2007 10:10 AM \\u2013 11/20/2007 10:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hms", "11/10/2007 10:10:10 AM \\u2013 11/20/2007 10:10:10 AM", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMMy", "N 10\\u201320, 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEEdM", "S, 11/10 \\u2013 T, 11/20", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "Wednesday, January 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMy", "January 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMM", "January 10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMMy", "January 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMM", "Wednesday, January 10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMy", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "Jan 10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMMM", "Wed, Jan 10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMy", "Wed, 1/10/2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMy", "1/10/2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dM", "1/10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdM", "Wed, 1/10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "d", "10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Ed", "10 Wed", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "y", "2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMM", "Jan", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMM", "January", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "10:00 AM \\u2013 2:10 PM", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "10:00 AM \\u2013 2:10 PM PST", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 AM \\u2013 2 PM", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hv", "10 AM \\u2013 2 PM PT", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hz", "10 AM \\u2013 2 PM PST", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEddMMyyyy", "Wed, 01/10/2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmm", "10:00 AM \\u2013 2:10 PM", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmmzz", "10:00 AM \\u2013 2:10 PM PST", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMMy", "J 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEEdM", "W, 1/10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMMMy", "Wednesday, January 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMy", "January 10, 2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "MMMMy", "January 2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMMy", "Wed, Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMy", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMM", "Jan 10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMM", "Wed, Jan 10", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMy", "Wed, 1/10/2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dM", "1/10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdM", "Wed, 1/10", 
+            
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "y", "2007", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "MMM", "Jan", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "10:00\\u201310:20 AM", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "10:00\\u201310:20 AM PT", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "PST (Hour: 10)", 
+            
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EddMMy", "Wed, 01/10/2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmm", "10:00\\u201310:20 AM", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmmzz", "10:00\\u201310:20 AM PST", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hms", "10:0:10 AM \\u2013 10:20:10 AM", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMM", "January 10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMM", "Wednesday, January 10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMMMy", "Wed, Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMM", "Jan 10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMMM", "Wed, Jan 10", 
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dM", "1/10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "My", "1/2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdM", "Wed, 1/10", 
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "d", "10", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Ed", "10 Wed", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "y", "2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "M", "1", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMM", "Jan", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMM", "January", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "10:10 AM", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmv", "10:10 AM PT", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 AM PST", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10", 
+            
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hz", "PST (Hour: 10)", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hhmmzz", "10:10 AM PST", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hms", "10:10:10 AM", 
+            
+            
+            
+            "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94", 
+            
+            "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "2007\\u5e7410\\u670810\\u65e5 \\u4e0a\\u534810:10\\u20132008\\u5e7410\\u670810\\u65e5 \\u4e0a\\u534810:10", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMM", "10\\u670810\\u65e5\\u81f311\\u670810\\u65e5", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "2007\\u5e7410\\u6708\\u81f311\\u6708", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMM", "10\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f311\\u670810\\u65e5\\u661f\\u671f\\u516d", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "2007\\u5e7410\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u20132007\\u5e7411\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u81f320\\u65e5", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "11\\u670810\\u65e5\\u81f320\\u65e5", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMMy", "2007-11", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "11\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMM", "11\\u670810\\u65e5\\u5468\\u516d\\u81f320\\u65e5\\u5468\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "07-11-10\\u5468\\u516d\\u81f307-11-20\\u5468\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "07-11-10\\u81f307-11-20", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11-10\\u81f311-20", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "2007-11", 
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "11-10\\u5468\\u516d\\u81f311-20\\u5468\\u4e8c", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10\\u65e5\\u81f320\\u65e5", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "11", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMM", "11", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "2007\\u5e7411\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800\\u20132007\\u5e7411\\u670820\\u65e5 \\u4e0a\\u534810:10 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "2007\\u5e7411\\u670810\\u65e5 10\\u20132007\\u5e7411\\u670820\\u65e5 10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e7401\\u670810\\u65e5\\u661f\\u671f\\u4e09", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmv", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hv", "\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hz", "\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMM", "01-10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "\\u4e0a\\u534810:00\\u81f310:20\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800 (\\u5c0f\\u65f6: 10)", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMMy", "2007\\u5e7401\\u670810\\u65e5\\u661f\\u671f\\u4e09", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "\\u4e0a\\u534810:10", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt 2007 - Freitag, 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMy", "10. Okt 2007 - 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "10. Okt 2007 - 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Okt 2007 - Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEdMMM", "Mi., 10. Okt 2007 - Fr., 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Mi., 10.10.07 - Fr., 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10.10.07 - 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dM", "10.10.07 - 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10.07 - 10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Mi., 10.10.07 - Fr., 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "d", "10.10.07 - 10.10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007-2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10.07 - 10.08", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMM", "Okt 2007 - Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10.10.2007 10:10 - 10.10.2008 10:10", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt - Samstag, 10. Nov 2007", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMy", "10. Okt - 10. Nov 2007", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "10. Okt - 10. Nov", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Okt-Nov 2007", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMM", "Mittwoch, 10. Okt - Samstag, 10. Nov", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMy", "Mi., 10.10.07 - Sa., 10.11.07", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dM", "10.10. - 10.11.", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10.07 - 11.07", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdM", "Mi., 10.10. - Sa., 10.11.", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10.10. - 10.11.", 
+            
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "M", "10.-11.", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Okt-Nov", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "10.10.2007 10:10 Vereinigte Staaten (Los Angeles) - 10.11.2007 10:10 Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10.10.2007 10:10:10 - 10.11.2007 10:10:10", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMy", "Samstag, 10. - Dienstag, 20. Nov 2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "10.-20. Nov 2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMM", "10.-20. Nov", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov 2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMM", "Samstag, 10. - Dienstag, 20. Nov", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sa., 10.11.07 - Di., 20.11.07", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "10.11.07 - 20.11.07", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "10.11. - 20.11.", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "2007-11", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "Sa., 10.11. - Di., 20.11.", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10.-20.", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "10.11.2007 10:10 Vereinigte Staaten (Los Angeles) - 20.11.2007 10:10 Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMy", "Mittwoch, 10. Jan 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMy", "10. Jan 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "10. Jan", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMM", "Mittwoch 10. Jan", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "10:00-14:10 GMT-08:00", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10-14", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMM", "Mittwoch 10. Jan", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "10:00-10:20", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "10:00-10:20 Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00-10:20 GMT-08:00", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hv", "Vereinigte Staaten (Los Angeles) (Stunde: 10)", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "GMT-08:00 (Stunde: 10)", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMy", "Mittwoch, 10. Jan 2007", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "10:10", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmv", "10:10 Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 GMT-08:00", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "Vereinigte Staaten (Los Angeles) (Stunde: 10)", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hz", "GMT-08:00 (Stunde: 10)", 
+        };
+        expect(DATA, DATA.length);
+    }
+
+
+    private void expect(String[] data, int data_length) {
+        int i = 1;
+        while (i<data_length) {
+            String locName = data[i++];
+            ULocale loc = new ULocale(locName);
+            SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+            // 'f'
+            String datestr = data[i++];
+            String datestr_2 = data[i++];
+            Date date, date_2;
+            try {
+                date = ref.parse(datestr);
+                date_2 = ref.parse(datestr_2);
+            } catch ( ParseException e ) {
+                errln("parse exception" + e);
+                continue;
+            }
+            DateInterval dtitv = new DateInterval(date.getTime(), 
+                                                  date_2.getTime());
+            String oneSkeleton = data[i++];
+            DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(
+                                              oneSkeleton, loc);
+            String expected = data[i++];
+            String formatted = dtitvfmt.format(dtitv);
+            if ( !formatted.equals(Utility.unescape(expected)) )  {
+                errln("\"" + locName + "\\" + oneSkeleton + "\\" + datestr + "\\" + datestr_2 + "\"\t expected: " + expected +"\tgot: " + formatted + "\n");
+            }
+        }
+    }
+
+
+    /* 
+     * Test format using user defined DateIntervalInfo
+     */
+    public void testFormatUserDII() {
+        // first item is date pattern
+        // followed by a group of locale/from_data/to_data/interval_data
+        String[] DATA = {
+            "yyyy MM dd HH:mm:ss",    
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Oct 10, 2007 --- Oct 10, 2008", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 Oct 10 - Nov 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Nov 10, 2007 --- Nov 20, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Jan 10, 2007", 
+            
+            "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "2007\\u5e7410\\u670810\\u65e5 --- 2008\\u5e7410\\u670810\\u65e5", 
+            
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "2007\\u5e7411\\u670810\\u65e5 --- 2007\\u5e7411\\u670820\\u65e5", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "2007\\u5e7401\\u670810\\u65e5", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "2007\\u5e7401\\u670810\\u65e5", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "2007\\u5e7401\\u670810\\u65e5", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10. Okt 2007 --- 10. Okt 2008", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 Okt 10 - Nov 2007", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10. Nov 2007 --- 20. Nov 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10. Jan 2007", 
+            
+            "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10. Jan 2007", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10. Jan 2007", 
+            
+            "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 de oct de 2007 --- 10 de oct de 2008", 
+            
+            "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct 10 - nov 2007", 
+            
+            "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 de nov de 2007 --- 20 de nov de 2007", 
+            
+            "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 de ene de 2007", 
+            
+            "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 de ene de 2007", 
+            
+            "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 de ene de 2007", 
+        };
+        expectUserDII(DATA, DATA.length);
+    }
+    
+    
+    private void expectUserDII(String[] data, int data_length) {
+        int i = 1;
+        while (i<data_length) {
+            String locName = data[i++];
+            ULocale loc = new ULocale(locName);
+            SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+            // 'f'
+            String datestr = data[i++];
+            String datestr_2 = data[i++];
+            Date date, date_2;
+            try {
+                date = ref.parse(datestr);
+                date_2 = ref.parse(datestr_2);
+            } catch ( ParseException e ) {
+                errln("parse exception" + e);
+                continue;
+            }
+            DateInterval dtitv = new DateInterval(date.getTime(), 
+                                                  date_2.getTime());
+
+            DateIntervalInfo dtitvinf = new DateIntervalInfo();
+            dtitvinf.setFallbackIntervalPattern("{0} --- {1}");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.MONTH, "yyyy MMM d - MMM y");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.HOUR_OF_DAY, "yyyy MMM d HH:mm - HH:mm");
+            DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(
+                        DateFormat.YEAR_ABBR_MONTH_DAY,
+                        loc, dtitvinf);
+            String expected = data[i++];
+            String formatted = dtitvfmt.format(dtitv);
+            if ( !formatted.equals(Utility.unescape(expected)) )  {
+                errln("userDII: \"" + locName + "\\" + datestr + "\\" + datestr_2 + "\"\t expected: " + expected +"\tgot: " + formatted + "\n");
+            }
+        }
+    }
+
+
+
+    /* 
+     * Test format using user defined DateIntervalInfo
+     */
+    public void testFormatCLDR() {
+        // first item is date pattern
+        // followed by a group of locale/from_data/to_data/interval_data
+        String[] DATA = {
+            "yyyy MM dd HH:mm:ss",    
+            "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "all diff", 
+            
+            "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 diff Oct 10 - Nov 2007", 
+            
+            "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "2007 Nov 10 ~ 20", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Jan 10, 2007", 
+            
+            "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Jan 10, 2007", 
+            
+            "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "all diff", 
+            
+            "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 diff 10\\u6708 10 - 11\\u6708 2007", 
+            
+            "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "2007 11\\u6708 10 ~ 20", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "2007\u5E7401\\u670810\u65E5", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "2007\u5E7401\\u670810\u65E5", 
+            
+            "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "2007\u5E7401\\u670810\u65E5", 
+        };
+        expectUserCLDR(DATA, DATA.length);
+    }
+    
+    
+    private void expectUserCLDR(String[] data, int data_length) {
+        int i = 1;
+        while (i<data_length) {
+            String locName = data[i++];
+            ULocale loc = new ULocale(locName);
+            SimpleDateFormat ref = new SimpleDateFormat(data[0], loc);
+            // 'f'
+            String datestr = data[i++];
+            String datestr_2 = data[i++];
+            Date date, date_2;
+            try {
+                date = ref.parse(datestr);
+                date_2 = ref.parse(datestr_2);
+            } catch ( ParseException e ) {
+                errln("parse exception" + e);
+                continue;
+            }
+            DateInterval dtitv = new DateInterval(date.getTime(), 
+                                                  date_2.getTime());
+
+            DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance("yyyyMMMdd", loc);
+            //DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance("yMd");
+            //SimpleDateFormat dtfmt = new SimpleDateFormat("yyyy 'year' MMM 'month' dd 'day'", loc);
+            //dtitvfmt.setDateFormat(dtfmt);
+            DateIntervalInfo dtitvinf = new DateIntervalInfo();
+            dtitvinf.setFallbackIntervalPattern("{0} --- {1}");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.YEAR, "'all diff'");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.MONTH, "yyyy 'diff' MMM d - MMM y");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.DATE, "yyyy MMM d ~ d");
+            dtitvinf.setIntervalPattern("yMMMd", Calendar.HOUR_OF_DAY, "yyyy MMMd HH:mm ~ HH:mm");
+            dtitvfmt.setDateIntervalInfo(dtitvinf);
+            FieldPosition pos = new FieldPosition(0);
+            StringBuffer str = new StringBuffer("");
+            DateFormat dtfmt = dtitvfmt.getDateFormat();
+            Calendar fromCalendar = (Calendar) dtfmt.getCalendar().clone();
+            Calendar toCalendar = (Calendar) dtfmt.getCalendar().clone();
+            fromCalendar.setTimeInMillis(dtitv.getFromDate());
+            toCalendar.setTimeInMillis(dtitv.getToDate());
+            dtitvfmt.format(fromCalendar, toCalendar, str, pos);
+
+            String expected = data[i++];
+            String formatted = dtitvfmt.format(dtitv).toString();
+            if ( !formatted.equals(Utility.unescape(expected)) )  {
+                errln("CLDR: \"" + locName + "\\" + datestr + "\\" + datestr_2 + "\"\t expected: " + expected +"\tgot: " + formatted + "\n");
+            }
+        }
+    }
+
+
+    /**
+     * Stress test
+     */
+    public void testStress() {
+        if (getInclusion() <= 5) {
+            logln("INFO: Skipping test");
+            return;
+        }
+
+        // test data.
+        // The 1st is the format pattern,
+        // Next are pairs in which the 1st in the pair is the earlier date
+        // and the 2nd in the pair is the later date
+        String[] DATA = {
+            "yyyy MM dd HH:mm:ss",
+            "2007 10 10 10:10:10", "2008 10 10 10:10:10", 
+            "2007 10 10 10:10:10", "2007 11 10 10:10:10", 
+            "2007 11 10 10:10:10", "2007 11 20 10:10:10", 
+            "2007 01 10 10:00:10", "2007 01 10 14:10:10", 
+            "2007 01 10 10:00:10", "2007 01 10 10:20:10", 
+            "2007 01 10 10:10:10", "2007 01 10 10:10:20", 
+        };
+
+
+        String[][] testLocale = {
+            {"en", "", ""},
+            {"zh", "", ""},
+            {"de", "", ""},
+            {"ar", "", ""},
+            {"en", "GB",  ""},
+            {"fr", "", ""},
+            {"it", "", ""},
+            {"nl", "", ""},
+            {"zh", "TW",  ""},
+            {"ja", "", ""},
+            {"pt", "BR", ""},
+            {"ru", "", ""},
+            {"tr", "", ""},
+            {"es", "", ""},
+            {"ko", "", ""},
+            //{"th", "", ""},
+            {"sv", "", ""},
+            {"pl", "", ""},
+            {"fi", "", ""},
+            {"da", "", ""},
+            {"pt", "PT", ""},
+            {"ro", "", ""},
+            {"hu", "", ""},
+            {"he", "", ""},
+            {"in", "", ""},
+            {"cs", "", ""},
+            {"el", "", ""},
+            {"no", "", ""},
+            {"vi", "", ""},
+            {"bg", "", ""},
+            {"hr", "", ""},
+            {"lt", "", ""},
+            {"sk", "", ""},
+            {"sl", "", ""},
+            {"sr", "", ""},
+            {"ca", "", ""},
+            {"lv", "", ""},
+            {"uk", "", ""},
+            {"hi", "", ""},
+        };
+
+        int localeIndex;
+        for ( localeIndex = 0; localeIndex < testLocale.length; ++localeIndex) {
+            stress(DATA, DATA.length, new Locale(testLocale[localeIndex][0], 
+                   testLocale[localeIndex][1], testLocale[localeIndex][2]), 
+                   testLocale[localeIndex][0]+testLocale[localeIndex][1]);
+        }
+    }
+
+    private void stress(String[] data, int data_length, Locale loc, String locName) {
+        String[] skeleton = {
+            "EEEEdMMMMy",
+            "dMMMMy",
+            "dMMMM",
+            "MMMMy",
+            "EEEEdMMMM",
+            "EEEdMMMy",
+            "dMMMy",
+            "dMMM",
+            "MMMy",
+            "EEEdMMM",
+            "EEEdMy",
+            "dMy",
+            "dM",
+            "My",
+            "EEEdM",
+            "d",
+            "EEEd",
+            "y",
+            "M",
+            "MMM",
+            "MMMM",
+            "hm",
+            "hmv",
+            "hmz",
+            "h",
+            "hv",
+            "hz",
+            "EEddMMyyyy", // following could be normalized
+            "EddMMy", 
+            "hhmm",
+            "hhmmzz",
+            "hms",  // following could not be normalized
+            "dMMMMMy",
+            "EEEEEdM",
+        };
+
+        int i = 0;
+
+        SimpleDateFormat ref = new SimpleDateFormat(data[i++], loc);
+
+        while (i<data_length) {
+            // 'f'
+            String datestr = data[i++];
+            String datestr_2 = data[i++];
+            Date date;
+            Date date_2;
+            try {
+                date = ref.parse(datestr);
+                date_2 = ref.parse(datestr_2);
+            } catch ( ParseException e ) {
+                errln("parse exception" + e);
+                continue;
+            }
+            DateInterval dtitv = new DateInterval(date.getTime(), date_2.getTime());
+
+            for ( int skeletonIndex = 0; 
+                  skeletonIndex < skeleton.length; 
+                  ++skeletonIndex ) {
+                String oneSkeleton = skeleton[skeletonIndex];
+                // need special handle of "Thai" since the default calendar
+                // of "Thai" is "Budd", not "Gregorian".
+                DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(oneSkeleton, loc);
+                /*
+                if ( locName.equals("th") ) {
+                    // reset calendar to be Gregorian
+                    GregorianCalendar gregCal = new GregorianCalendar(loc);
+                    DateFormat dformat = dtitvfmt.getDateFormat();
+                    DateFormat newOne = (DateFormat)dformat.clone();
+                    newOne.setCalendar(gregCal);
+                    dtitvfmt.setDateFormat(newOne);
+                }
+                */
+                dtitvfmt.format(dtitv);
+            }
+
+
+            // test interval format by algorithm 
+            for ( int style = DateFormat.FULL; style  < 4; ++style ) {
+                SimpleDateFormat dtfmt = (SimpleDateFormat) DateFormat.getDateInstance(style, loc);
+                FieldPosition pos = new FieldPosition(0);
+                StringBuffer str = new StringBuffer("");
+                Calendar fromCalendar = (Calendar) dtfmt.getCalendar().clone();
+                Calendar toCalendar = (Calendar) dtfmt.getCalendar().clone();
+                fromCalendar.setTimeInMillis(dtitv.getFromDate());
+                toCalendar.setTimeInMillis(dtitv.getToDate());
+                dtfmt.intervalFormatByAlgorithm(fromCalendar, toCalendar, str, pos);
+            } 
+        } 
+    }
+
+    /*
+     * Ticket#6396 DateIntervalInfo of ICU4J 4.0d3 throw NullPointerException 
+     */
+    public void TestT6396() {
+        DateIntervalInfo dii = new DateIntervalInfo(new ULocale("th_TH"));
+        try {
+            // ticket#6396 reported toString() throws NullPointerException
+            String diiStr = dii.toString();
+            logln("new DateIntervalInfo(new ULocale(\"th_TH\")).toString() - " + diiStr);
+
+            // equals also had the similar problem
+            DateIntervalInfo dii1 = (DateIntervalInfo)dii.clone();
+            if (!dii.equals(dii1)) {
+                errln("FAIL: Cloned DateIntervalInfo is not equal to the source");
+            }
+        } catch (Exception e) {
+            errln("FAIL: Exception - " + e.getClass().getName());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java b/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
new file mode 100644
index 0000000..25466bc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
@@ -0,0 +1,556 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                            *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.PatternTokenizer;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateTimePatternGenerator;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.DateTimePatternGenerator.VariableField;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class DateTimeGeneratorTest extends TestFmwk {
+    public static boolean GENERATE_TEST_DATA = System.getProperty("GENERATE_TEST_DATA") != null;
+    public static int RANDOM_COUNT = 1000;
+    public static boolean DEBUG = false;
+    
+    public static void main(String[] args) throws Exception {
+        new DateTimeGeneratorTest().run(args);
+    }
+    
+    public void TestSimple() {
+        // some simple use cases
+        Calendar cal = new GregorianCalendar(1999, Calendar.OCTOBER, 13, 23, 58, 59);
+        Date sampleDate = cal.getTime();
+        ULocale locale = ULocale.GERMANY;
+        TimeZone zone = TimeZone.getTimeZone("Europe/Paris");
+        // make from locale
+        DateTimePatternGenerator gen = DateTimePatternGenerator.getInstance(locale);
+        SimpleDateFormat format = new SimpleDateFormat(gen.getBestPattern("MMMddHmm"), locale);
+        format.setTimeZone(zone);
+        assertEquals("simple format: MMMddHmm", "14. Okt 8:58", format.format(sampleDate));
+        // (a generator can be built from scratch, but that is not a typical use case)
+
+        // modify the generator by adding patterns
+        DateTimePatternGenerator.PatternInfo returnInfo = new DateTimePatternGenerator.PatternInfo();
+        gen.addPattern("d'. von' MMMM", true, returnInfo); 
+        // the returnInfo is mostly useful for debugging problem cases
+        format.applyPattern(gen.getBestPattern("MMMMddHmm"));
+        assertEquals("modified format: MMMddHmm", "14. von Oktober 8:58", format.format(sampleDate));
+
+        // get a pattern and modify it
+        format = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locale);
+        format.setTimeZone(zone);
+        String pattern = format.toPattern();
+        assertEquals("full-date", "Donnerstag, 14. Oktober 1999 08:58:59 Frankreich", format.format(sampleDate));
+
+        // modify it to change the zone.
+        String newPattern = gen.replaceFieldTypes(pattern, "vvvv");
+        format.applyPattern(newPattern);
+        assertEquals("full-date: modified zone", "Donnerstag, 14. Oktober 1999 08:58:59 Frankreich", format.format(sampleDate));
+
+        // add test of basic cases
+
+        //lang  YYYYMMM MMMd    MMMdhmm hmm hhmm    Full Date-Time
+        // en  Mar 2007    Mar 4   6:05 PM Mar 4   6:05 PM 06:05 PM    Sunday, March 4, 2007 6:05:05 PM PT
+        DateTimePatternGenerator enGen = DateTimePatternGenerator.getInstance(ULocale.ENGLISH);
+        TimeZone enZone = TimeZone.getTimeZone("Etc/GMT");
+        SimpleDateFormat enFormat = (SimpleDateFormat)DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, ULocale.ENGLISH);
+        enFormat.setTimeZone(enZone);
+        String[][] tests = {
+              {"yyyyMMMdd", "Oct 14, 1999"},
+              {"yMMMdd", "Oct 14, 1999"},
+              {"EyyyyMMMdd", "Thu, Oct 14, 1999"},
+              {"yyyyMMdd", "10/14/1999"},
+              {"yyyyMMM", "Oct 1999"},
+              {"yyyyMM", "10/1999"},
+              {"yyMM", "10/99"},
+              {"yMMMMMd", "O 14, 1999"},  // narrow format
+              {"EEEEEMMMMMd", "T, O 14"},  // narrow format
+              {"MMMd", "Oct 14"},
+              {"MMMdhmm", "Oct 14 6:58 AM"},
+              {"EMMMdhmms", "Thu, Oct 14 6:58:59 AM"},
+              {"MMdhmm", "10/14 6:58 AM"},
+              {"EEEEMMMdhmms", "Thursday, Oct 14 6:58:59 AM"},
+              {"yyyyMMMddhhmmss", "Oct 14, 1999 06:58:59 AM"},
+              {"EyyyyMMMddhhmmss", "Thu, Oct 14, 1999 06:58:59 AM"},
+              {"hmm", "6:58 AM"},
+              {"hhmm", "06:58 AM"},
+        };
+        for (int i = 0; i < tests.length; ++i) {
+            final String testSkeleton = tests[i][0];
+            String pat = enGen.getBestPattern(testSkeleton);
+            enFormat.applyPattern(pat);
+            String formattedDate = enFormat.format(sampleDate);
+            assertEquals("Testing skeleton '" + testSkeleton + "' with  " + sampleDate, tests[i][1], formattedDate);
+        }
+    }
+
+    public void TestPatternParser() {
+        StringBuffer buffer = new StringBuffer();
+        PatternTokenizer pp = new PatternTokenizer()
+        .setIgnorableCharacters(new UnicodeSet("[-]"))
+        .setSyntaxCharacters(new UnicodeSet("[a-zA-Z]"))
+        .setEscapeCharacters(new UnicodeSet("[b#]"))
+        .setUsingQuote(true);
+        logln("Using Quote");
+        for (int i = 0; i < patternTestData.length; ++i) {
+            String patternTest = (String) patternTestData[i];
+            CheckPattern(buffer, pp, patternTest);
+        }
+        String[] randomSet = {"abcdef", "$12!@#-", "'\\"};
+        for (int i = 0; i < RANDOM_COUNT; ++i) {
+            String patternTest = getRandomString(randomSet, 0, 10);
+            CheckPattern(buffer, pp, patternTest);
+        }
+        logln("Using Backslash");
+        pp.setUsingQuote(false).setUsingSlash(true);
+        for (int i = 0; i < patternTestData.length; ++i) {
+            String patternTest = (String) patternTestData[i];
+            CheckPattern(buffer, pp, patternTest);
+        }
+        for (int i = 0; i < RANDOM_COUNT; ++i) {
+            String patternTest = getRandomString(randomSet, 0, 10);
+            CheckPattern(buffer, pp, patternTest);
+        }
+    }
+    
+    Random random = new java.util.Random(-1);
+    
+    private String getRandomString(String[] randomList, int minLen, int maxLen) {
+        StringBuffer result = new StringBuffer();
+        int len = random.nextInt(maxLen + 1 - minLen) + minLen;
+        for (int i = minLen; i < len; ++ i) {
+            String source = randomList[random.nextInt(randomList.length)]; // don't bother with surrogates
+            char ch = source.charAt(random.nextInt(source.length()));
+            UTF16.append(result, ch);
+        }
+        return result.toString();
+    }
+    
+    private void CheckPattern(StringBuffer buffer, PatternTokenizer pp, String patternTest) {
+        pp.setPattern(patternTest);
+        if (DEBUG && isVerbose()) {
+            showItems(buffer, pp, patternTest);
+        }
+        String normalized = pp.setStart(0).normalize();
+        logln("input:\t<" + patternTest + ">" + "\tnormalized:\t<" + normalized + ">");
+        String doubleNormalized = pp.setPattern(normalized).normalize();
+        if (!normalized.equals(doubleNormalized)) {
+            errln("Normalization not idempotent:\t" + patternTest + "\tnormalized: " + normalized +  "\tnormalized2: " + doubleNormalized);
+            // allow for debugging at the point of failure
+            if (DEBUG) {
+                pp.setPattern(patternTest);
+                normalized = pp.setStart(0).normalize();
+                pp.setPattern(normalized);
+                showItems(buffer, pp, normalized);
+                doubleNormalized = pp.normalize();
+            }
+        }
+    }
+
+    private void showItems(StringBuffer buffer, PatternTokenizer pp, String patternTest) {
+        logln("input:\t<" + patternTest + ">");
+        while (true) {
+            buffer.setLength(0);
+            int status = pp.next(buffer);
+            if (status == PatternTokenizer.DONE) break;
+            String lit = "";
+            if (status != PatternTokenizer.SYNTAX ) {
+                lit = "\t<" + pp.quoteLiteral(buffer) + ">";
+            }
+            logln("\t" + statusName[status] + "\t<" + buffer + ">" + lit);
+        }
+    }
+    
+    static final String[] statusName = {"DONE", "SYNTAX", "LITERAL", "BROKEN_QUOTE", "BROKEN_ESCAPE", "UNKNOWN"};
+    
+    public void TestBasic() {
+        ULocale uLocale = null;
+        DateTimePatternGenerator dtfg = null;
+        Date date = null;
+        for (int i = 0; i < dateTestData.length; ++i) {
+            if (dateTestData[i] instanceof ULocale) {
+                uLocale = (ULocale) dateTestData[i];
+                dtfg = DateTimePatternGenerator.getInstance(uLocale);
+                if (GENERATE_TEST_DATA) logln("new ULocale(\"" + uLocale.toString() + "\"),");
+            } else if (dateTestData[i] instanceof Date) {
+                date = (Date) dateTestData[i];
+                if (GENERATE_TEST_DATA) logln("new Date(" + date.getTime()+ "L),");
+            } else if (dateTestData[i] instanceof String) {
+                String testSkeleton = (String) dateTestData[i];
+                String pattern = dtfg.getBestPattern(testSkeleton);
+                SimpleDateFormat sdf = new SimpleDateFormat(pattern, uLocale);
+                String formatted = sdf.format(date);
+                if (GENERATE_TEST_DATA) logln("new String[] {\"" + testSkeleton + "\", \"" + Utility.escape(formatted) + "\"},");
+                //logln(uLocale + "\t" + testSkeleton + "\t" + pattern + "\t" + sdf.format(date));
+            } else {
+                String[] testPair = (String[]) dateTestData[i];
+                String testSkeleton = testPair[0];
+                String testFormatted = testPair[1];
+                String pattern = dtfg.getBestPattern(testSkeleton);
+                SimpleDateFormat sdf = new SimpleDateFormat(pattern, uLocale);
+                String formatted = sdf.format(date);
+                if (GENERATE_TEST_DATA) {
+                    logln("new String[] {\"" + testSkeleton + "\", \"" + Utility.escape(formatted) + "\"},");
+                } else if (!formatted.equals(testFormatted)) {
+                    errln(uLocale + "\tformatted string doesn't match test case: " + testSkeleton + "\t generated: " +  pattern + "\t expected: " + testFormatted + "\t got: " + formatted);
+                    if (true) { // debug
+                        pattern = dtfg.getBestPattern(testSkeleton);
+                        sdf = new SimpleDateFormat(pattern, uLocale);
+                        formatted = sdf.format(date);
+                    }
+                }
+                //logln(uLocale + "\t" + testSkeleton + "\t" + pattern + "\t" + sdf.format(date));
+            }
+        }
+    }
+    
+    static final Object[] patternTestData = {
+        "'$f''#c",
+        "'' 'a",
+        "'.''.'",
+        "\\u0061\\\\",
+        "mm.dd 'dd ' x",
+        "'' ''",
+    };
+    
+    // can be generated by using GENERATE_TEST_DATA. Must be reviewed before adding
+    static final Object[] dateTestData = {
+        new Date(916300739000L), // 1999-01-13T23:58:59,0-0800
+        new ULocale("en_US"),
+        new String[] {"yM", "1/1999"},
+        new String[] {"yMMM", "Jan 1999"},
+        new String[] {"yMd", "1/13/1999"},
+        new String[] {"yMMMd", "Jan 13, 1999"},
+        new String[] {"Md", "1/13"},
+        new String[] {"MMMd", "Jan 13"},
+        new String[] {"yQQQ", "Q1 1999"},
+        new String[] {"hhmm", "11:58 PM"},
+        new String[] {"HHmm", "23:58"},
+        new String[] {"mmss", "58:59"},
+        new ULocale("zh_Hans_CN"),
+        new String[] {"yM", "1999-1"},
+        new String[] {"yMMM", "1999-01"},
+        new String[] {"yMd", "1999\u5E741\u670813\u65E5"},
+        new String[] {"yMMMd", "1999\u5E7401\u670813\u65E5"},
+        new String[] {"Md", "1-13"},
+        new String[] {"MMMd", "01-13"},
+        new String[] {"yQQQ", "1999\u5E741\u5B63"},
+        new String[] {"hhmm", "\u4E0B\u534811:58"},
+        new String[] {"HHmm", "23:58"},
+        new String[] {"mmss", "58:59"},
+        new ULocale("de_DE"),
+        new String[] {"yM", "1999-1"},
+        new String[] {"yMMM", "Jan 1999"},
+        new String[] {"yMd", "13.1.1999"},
+        new String[] {"yMMMd", "13. Jan 1999"},
+        new String[] {"Md", "13.1."},   // 13.1
+        new String[] {"MMMd", "13. Jan"},
+        new String[] {"yQQQ", "Q1 1999"},
+        new String[] {"hhmm", "23:58"},  // 11:58 nachm.
+        new String[] {"HHmm", "23:58"},
+        new String[] {"mmss", "58:59"},
+        new ULocale("fi"),
+        new String[] {"yM", "1/1999"},   // 1.1999
+        new String[] {"yMMM", "tammi 1999"},  // tammi 1999
+        new String[] {"yMd", "13.1.1999"},
+        new String[] {"yMMMd", "13. tammi 1999"},
+        new String[] {"Md", "13.1."},
+        new String[] {"MMMd", "13. tammi"},
+        new String[] {"yQQQ", "1. nelj./1999"},  // 1. nelj. 1999
+        new String[] {"hhmm", "23.58"},
+        new String[] {"HHmm", "23.58"},
+        new String[] {"mmss", "58.59"},
+    };
+    
+    public void DayMonthTest() {
+        final ULocale locale = ULocale.FRANCE;
+        
+        // set up the generator
+        DateTimePatternGenerator dtpgen
+          = DateTimePatternGenerator.getInstance(locale);
+        
+        // get a pattern for an abbreviated month and day
+        final String pattern = dtpgen.getBestPattern("MMMd");
+        SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
+        
+        // use it to format (or parse)
+        String formatted = formatter.format(new Date());
+        logln("formatted=" + formatted);
+        // for French, the result is "13 sept."
+    }
+    
+    public void TestOrdering() {
+        ULocale[] locales = ULocale.getAvailableLocales();
+        for (int i = 0; i < locales.length; ++i) {
+            for (int style1 = DateFormat.FULL; style1 <= DateFormat.SHORT; ++style1) {
+                for (int style2 = DateFormat.FULL; style2 < style1; ++style2) {
+                    checkCompatible(style1, style2, locales[i]);                    
+                }               
+            }
+        }
+    }
+    
+    public void TestReplacingZoneString() {
+        Date testDate = new Date();
+        TimeZone testTimeZone = TimeZone.getTimeZone("America/New_York");
+        TimeZone bogusTimeZone = new SimpleTimeZone(1234, "Etc/Unknown");
+        Calendar calendar = Calendar.getInstance();
+        ParsePosition parsePosition = new ParsePosition(0);
+
+        ULocale[] locales = ULocale.getAvailableLocales();
+        int count = 0;
+        for (int i = 0; i < locales.length; ++i) {
+            // skip the country locales unless we are doing exhaustive tests
+            if (getInclusion() < 6) {
+                if (locales[i].getCountry().length() > 0) {
+                    continue;
+                }
+            }
+            count++;
+            // Skipping some test case in the non-exhaustive mode to reduce the test time
+            //ticket#6503
+            if(params.inclusion<=5 && count%3!=0){
+                continue;
+            }
+            logln(locales[i].toString());
+            DateTimePatternGenerator dtpgen
+            = DateTimePatternGenerator.getInstance(locales[i]);
+            
+            for (int style1 = DateFormat.FULL; style1 <= DateFormat.SHORT; ++style1) {
+                final SimpleDateFormat oldFormat = (SimpleDateFormat) DateFormat.getTimeInstance(style1, locales[i]);
+                String pattern = oldFormat.toPattern();
+                String newPattern = dtpgen.replaceFieldTypes(pattern, "VVVV"); // replaceZoneString(pattern, "VVVV");
+                if (newPattern.equals(pattern)) {
+                    continue;
+                }
+                // verify that it roundtrips parsing
+                SimpleDateFormat newFormat = new SimpleDateFormat(newPattern, locales[i]);
+                newFormat.setTimeZone(testTimeZone);
+                String formatted = newFormat.format(testDate);
+                calendar.setTimeZone(bogusTimeZone);
+                parsePosition.setIndex(0);
+                newFormat.parse(formatted, calendar, parsePosition);
+                if (parsePosition.getErrorIndex() >= 0) {
+                    errln("Failed parse with VVVV:\t" + locales[i] + ",\t\"" + pattern + "\",\t\"" + newPattern + "\",\t\"" + formatted.substring(0,parsePosition.getErrorIndex()) + "{}" + formatted.substring(parsePosition.getErrorIndex()) + "\"");
+                } else if (!calendar.getTimeZone().getID().equals(testTimeZone.getID())) {
+                    errln("Failed timezone roundtrip with VVVV:\t" + locales[i] + ",\t\"" + pattern + "\",\t\"" + newPattern + "\",\t\"" + formatted + "\",\t" + calendar.getTimeZone().getID() + " != " + testTimeZone.getID());
+                } else {
+                    logln(locales[i] + ":\t\"" + pattern + "\" => \t\"" + newPattern + "\"\t" + formatted);
+                }
+            }
+        }
+    }
+    
+    public void TestVariableCharacters() {
+        UnicodeSet valid = new UnicodeSet("[G   y   Y   u   Q   q   M   L   w   W   d   D   F   g   E   e   c   a   h   H   K   k   j   m   s   S   A   z   Z   v   V]");
+        for (char c = 0; c < 0xFF; ++c) {
+            boolean works = false;
+            try {
+                VariableField vf = new VariableField(String.valueOf(c), true);
+                logln("VariableField " + vf.toString());
+                works = true;
+            } catch (Exception e) {}
+            if (works != valid.contains(c)) {
+                if (works) {
+                    errln("VariableField can be created with illegal character: " + c);
+                } else {
+                    errln("VariableField can't be created with legal character: " + c);
+                }
+            }
+        }
+    }
+    
+    static String[] DATE_STYLE_NAMES = {
+        "FULL", "LONG", "MEDIUM", "SHORT"
+    };
+    
+    /**
+     * @param fullOrder
+     * @param longOrder
+     */
+    private void checkCompatible(int style1, int style2, ULocale uLocale) {
+        DateOrder order1 = getOrdering(style1, uLocale);
+        DateOrder order2 = getOrdering(style2, uLocale);
+        if (!order1.hasSameOrderAs(order2)) {
+            if (order1.monthLength == order2.monthLength) { // error if have same month length, different ordering
+                if (skipIfBeforeICU(4,1,2)) {
+                    logln(showOrderComparison(uLocale, style1, style2, order1, order2));
+                } else {
+                    errln(showOrderComparison(uLocale, style1, style2, order1, order2));
+                }
+            } else if (isVerbose() && order1.monthLength > 2 && order2.monthLength > 2) { // warn if both are not numeric
+                logln(showOrderComparison(uLocale, style1, style2, order1, order2));
+            }
+        }
+    }
+
+    private String showOrderComparison(ULocale uLocale, int style1, int style2, DateOrder order1, DateOrder order2) {
+        String pattern1 = ((SimpleDateFormat) DateFormat.getDateInstance(style1, uLocale)).toPattern();
+        String pattern2 = ((SimpleDateFormat) DateFormat.getDateInstance(style2, uLocale)).toPattern();
+        return "Mismatch in in ordering for " + uLocale + ": " + DATE_STYLE_NAMES[style1] + ": " + order1 + ", <" + pattern1 
+                + ">; " 
+                + DATE_STYLE_NAMES[style2] + ": " + order2 + ", <" + pattern2 + ">; " ;
+    }
+
+    /**
+     * Main date fields -- Poor-man's enum -- change to real enum when we get JDK 1.5
+     */
+    public static class DateFieldType {
+        private String name;
+        private DateFieldType(String string) {
+            name = string;
+        }
+        
+        public static DateFieldType 
+        YEAR = new DateFieldType("YEAR"), 
+        MONTH = new DateFieldType("MONTH"), 
+        DAY = new DateFieldType("DAY");
+        
+        public String toString() {
+            return name;
+        }
+    }
+    
+    /**
+     * Simple struct for output from getOrdering
+     */
+    static class DateOrder {
+        int monthLength;
+        DateFieldType[] fields = new DateFieldType[3];
+        
+        public boolean isCompatible(DateOrder other) {
+            return monthLength == other.monthLength;
+        }
+        /**
+         * @param order2
+         * @return
+         */
+        public boolean hasSameOrderAs(DateOrder other) {
+            // TODO Auto-generated method stub
+            return fields[0] == other.fields[0] && fields[1] == other.fields[1] && fields[2] == other.fields[2];
+        }
+        public String toString() {
+            return "{" + monthLength + ", " + fields[0]  + ", " + fields[1]  + ", " + fields[2] + "}";
+        }
+        public boolean equals(Object that) {
+            DateOrder other = (DateOrder) that;
+            return monthLength == other.monthLength && fields[0] == other.fields[0] && fields[1] == other.fields[1] && fields[2] == other.fields[2];            
+        }
+    }
+    
+    /** 
+     * Some statics. If we were multithreaded, we'd need to protect these
+     */
+    static DateTimePatternGenerator.FormatParser formatParser = new DateTimePatternGenerator.FormatParser ();
+    static DateTimePatternGenerator generator = DateTimePatternGenerator.getEmptyInstance();
+    
+    /**
+     * Replace the zone string with a different type, eg v's for z's, etc. <p>Called with a pattern, such as one gotten from 
+     * <pre>
+     * String pattern = ((SimpleDateFormat) DateFormat.getTimeInstance(style, locale)).toPattern();
+     * </pre>
+     * @param pattern original pattern to change, such as "HH:mm zzzz"
+     * @param newZone Must be: z, zzzz, Z, ZZZZ, v, vvvv, V, or VVVV
+     * @return
+     */
+    public String replaceZoneString(String pattern, String newZone) {
+        final List itemList = formatParser.set(pattern).getItems();
+        boolean changed = false;
+        for (int i = 0; i < itemList.size(); ++i) {
+            Object item = itemList.get(i);
+            if (item instanceof VariableField) {
+                VariableField variableField = (VariableField) item;
+                if (variableField.getType() == DateTimePatternGenerator.ZONE) {
+                    if (!variableField.toString().equals(newZone)) {
+                        changed = true;
+                        itemList.set(i, new VariableField(newZone, true));
+                    }
+                }
+            }
+        }
+        return changed ? formatParser.toString() : pattern;
+    }
+    
+    public boolean containsZone(String pattern) {
+        for (Iterator it = formatParser.set(pattern).getItems().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (item instanceof VariableField) {
+                VariableField variableField = (VariableField) item;
+                if (variableField.getType() == DateTimePatternGenerator.ZONE) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Get the ordering from a particular date format. Best is to use
+     * DateFormat.FULL to get the format with String form month (like "January")
+     * and DateFormat.SHORT for the numeric format order. They may be different.
+     * (Theoretically all 4 formats could be different but that never happens in
+     * practice.)
+     *
+     * @param style
+     *          DateFormat.FULL..DateFormat.SHORT
+     * @param locale
+     *          desired locale.
+     * @return
+     * @return list of ordered items DateFieldType (I
+     *         didn't know what form you really wanted so this is just a
+     *         stand-in.)
+     */
+  private static DateOrder getOrdering(int style, ULocale locale) {
+      // and the date pattern
+      String pattern = ((SimpleDateFormat) DateFormat.getDateInstance(style, locale)).toPattern();
+      int count = 0;
+      DateOrder result = new DateOrder();
+     
+      for (Iterator it = formatParser.set(pattern).getItems().iterator(); it.hasNext();) {
+          Object item = it.next();
+        if (!(item instanceof String)) {
+          // the first character of the variable field determines the type,
+          // according to CLDR.
+          String variableField = item.toString();
+          switch (variableField.charAt(0)) {
+            case 'y': case 'Y': case 'u':
+              result.fields[count++] = DateFieldType.YEAR;
+              break;
+            case 'M': case 'L':
+                result.monthLength = variableField.length();
+                if (result.monthLength < 2) {
+                    result.monthLength = 2;
+                }
+                result.fields[count++] = DateFieldType.MONTH;
+              break;
+            case 'd': case 'D': case 'F': case 'g':
+                result.fields[count++] = DateFieldType.DAY;
+              break;
+          }
+        }
+      }
+      return result;
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java b/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
new file mode 100644
index 0000000..b22553b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
@@ -0,0 +1,1567 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.GlobalizationPreferences;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+
+
+public class GlobalizationPreferencesTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new GlobalizationPreferencesTest().run(args);
+    }
+
+    public void TestDefault() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+        ULocale defLocale = new ULocale("en_US");
+        ULocale defFallbackLocale = new ULocale("en");
+
+        if (!defLocale.equals(ULocale.getDefault())) {
+            // Locale.US is always used as the default locale in the test environment
+            // If not, some test cases will fail...
+            errln("FAIL: The default locale of the test environment must be en_US");
+        }
+        
+        logln("Default locale: " + defLocale.toString());
+
+        // First locale is en_US
+        ULocale gpLocale0 = gp.getLocale(0);
+        logln("Primary locale: " + gpLocale0.toString());
+        if (!gpLocale0.equals(defLocale)) {
+            errln("FAIL: The primary locale is not en_US");
+        }
+
+        // Second locale is en
+        ULocale gpLocale1 = gp.getLocale(1);
+        logln("Secondary locale: " + gpLocale1.toString());
+        if (!gpLocale1.equals(defFallbackLocale)) {
+            errln("FAIL: The secondary locale is not en");
+        }
+
+        // Third locale is null
+        ULocale gpLocale2 = gp.getLocale(2);
+        if (gpLocale2 != null) {
+            errln("FAIL: Number of locales must be 2");
+        }
+        
+        // Calendar locale
+        Calendar cal = gp.getCalendar();
+        ULocale calLocale = cal.getLocale(ULocale.VALID_LOCALE);
+        logln("Calendar locale: " + calLocale.toString());
+        if (!calLocale.equals(defLocale)) {
+            errln("FAIL: The calendar locale must match with the default JVM locale");
+        }
+
+        // Collator locale
+        Collator coll = gp.getCollator();
+        ULocale collLocale = coll.getLocale(ULocale.VALID_LOCALE);
+        logln("Collator locale: " + collLocale.toString());
+        if (!collLocale.equals(defLocale)) {
+            errln("FAIL: The collator locale must match with the default JVM locale");
+        }
+
+        // BreakIterator locale
+        BreakIterator brk = gp.getBreakIterator(GlobalizationPreferences.BI_CHARACTER);
+        ULocale brkLocale = brk.getLocale(ULocale.VALID_LOCALE);
+        logln("BreakIterator locale: " + brkLocale.toString());
+        if (!brkLocale.equals(defLocale)) {
+            errln("FAIL: The break iterator locale must match with the default JVM locale");
+        }
+
+        /* Skip - Bug#5209
+        // DateFormat locale
+        DateFormat df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);
+        ULocale dfLocale = df.getLocale(ULocale.VALID_LOCALE);
+        logln("DateFormat locale: " + dfLocale.toString());
+        if (!dfLocale.equals(defLocale)) {
+            errln("FAIL: The date format locale must match with the default JVM locale");
+        }
+        */
+
+        // NumberFormat locale
+        NumberFormat nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        ULocale nfLocale = nf.getLocale(ULocale.VALID_LOCALE);
+        logln("NumberFormat locale: " + nfLocale.toString());
+        if (!nfLocale.equals(defLocale)) {
+            errln("FAIL: The number format locale must match with the default JVM locale");
+        }
+    }
+
+    public void TestFreezable() {
+        logln("Create a new GlobalizationPreference object");
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+        if (gp.isFrozen()) {
+            errln("FAIL: This object is not yet frozen");
+        }        
+
+        logln("Call reset()");
+        boolean bSet = true;
+        try {
+            gp.reset();
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (!bSet) {
+            errln("FAIL: reset() must not throw an exception before frozen");
+        }
+
+        // Freeze the object
+        logln("Freeze the object");
+        gp.freeze();
+        if (!gp.isFrozen()) {
+            errln("FAIL: This object is already fronzen");
+        }
+
+        // reset()
+        logln("Call reset() after frozen");
+        bSet = true;
+        try {
+            gp.reset();
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: reset() must be blocked after frozen");
+        }
+
+        // setLocales(ULocale[])
+        logln("Call setLocales(ULocale[]) after frozen");
+        bSet = true;
+        try {
+            gp.setLocales(new ULocale[] {new ULocale("fr_FR")});
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setLocales(ULocale[]) must be blocked after frozen");
+        }
+
+        // setLocales(ULocale[])
+        logln("Call setLocales(List) after frozen");
+        bSet = true;
+        ArrayList list = new ArrayList(1);
+        list.add(new ULocale("fr_FR"));
+        try {
+            gp.setLocales(list);
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setLocales(List) must be blocked after frozen");
+        }
+
+        // setLocales(String)
+        logln("Call setLocales(String) after frozen");
+        bSet = true;
+        try {
+            gp.setLocales("pt-BR,es;q=0.7");
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setLocales(String) must be blocked after frozen");
+        }
+
+        // setLocale(ULocale)
+        logln("Call setLocale(ULocale) after frozen");
+        bSet = true;
+        try {
+            gp.setLocale(new ULocale("fi_FI"));
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setLocale(ULocale) must be blocked after frozen");
+        }
+        
+        // setTerritory(String)
+        logln("Call setTerritory(String) after frozen");
+        bSet = true;
+        try {
+            gp.setTerritory("AU");
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (bSet) {
+            errln("FAIL: setTerritory(String) must be blocked after frozen");
+        }
+
+        // Modifiable clone
+        logln("Create a modifiable clone");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+
+        if (gp1.isFrozen()) {
+            errln("FAIL: The object returned by cloneAsThawed() must not be frozen yet");
+        }        
+
+        // setLocale(ULocale)
+        logln("Call setLocale(ULocale) of the modifiable clone");
+        bSet = true;
+        try {
+            gp1.setLocale(new ULocale("fr_FR"));
+        } catch (UnsupportedOperationException uoe) {
+            bSet = false;
+        }
+        if (!bSet) {
+            errln("FAIL: setLocales(ULocale) must not throw an exception before frozen");
+        }        
+    }
+
+    static String[][] INPUT_LOCALEIDS = {
+        {"en_US"},
+        {"fr_CA", "fr"},
+        {"fr", "fr_CA"},
+        {"es", "fr", "en_US"},
+        {"zh_CN", "zh_Hans", "zh_Hans_CN"},
+        {"en_US_123"},
+        {"es_US", "es"},
+        {"de_DE", "es", "fr_FR"},
+    };
+
+    static String[] ACCEPT_LANGUAGES = {
+        "en-US",
+        "fr-CA,fr;q=0.5",
+        "fr_CA;q=0.5,fr",
+        "es,fr;q=0.76,en_US;q=0.75",
+        "zh-CN,zh-Hans;q=0.5,zh-Hans-CN;q=0.1",
+        "en-US-123",
+        "  es\t; q   =0.5 \t, es-US ;q   =1",
+        "fr-FR; q=0.5, de-DE, es",
+    };
+
+    static String[][] RESULTS_LOCALEIDS = {
+        {"en_US", "en"},
+        {"fr_CA", "fr"},
+        {"fr_CA", "fr"},
+        {"es", "fr", "en_US", "en"},
+        {"zh_Hans_CN", "zh_CN", "zh_Hans", "zh"},
+        {"en_US_123", "en_US", "en"},
+        {"es_US", "es"},
+        {"de_DE", "de", "es", "fr_FR", "fr"},
+    };
+
+    public void TestSetLocales() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // setLocales(List)
+        for (int i = 0; i < INPUT_LOCALEIDS.length; i++) {
+            String[] localeStrings = INPUT_LOCALEIDS[i];
+            ArrayList locales = new ArrayList();
+            StringBuffer sb = new StringBuffer();
+            for (int j = 0; j < localeStrings.length; j++) {
+                locales.add(new ULocale(localeStrings[j]));
+                if (j != 0) {
+                    sb.append(", ");
+                }
+                sb.append(localeStrings[j]);
+            }
+            logln("Input locales: " + sb.toString());
+            
+            gp.reset();
+            gp.setLocales(locales);
+
+            List resultLocales = gp.getLocales();
+            if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {
+                errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()
+                        + " Expected:" + RESULTS_LOCALEIDS[i].length);
+            } else {
+                
+                for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {
+                    ULocale loc = gp.getLocale(j);
+                    logln("Locale[" + j + "]: " + loc.toString());
+                    if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {
+                        errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()
+                                + " Expected:" + RESULTS_LOCALEIDS[i][j]);
+                    }
+                }    
+            }
+        }
+        
+        // setLocales(ULocale[])
+        for (int i = 0; i < INPUT_LOCALEIDS.length; i++) {
+            String[] localeStrings = INPUT_LOCALEIDS[i];
+            ULocale[] localeArray = new ULocale[INPUT_LOCALEIDS[i].length];
+            StringBuffer sb = new StringBuffer();
+            for (int j = 0; j < localeStrings.length; j++) {
+                localeArray[j] = new ULocale(localeStrings[j]);
+                if (j != 0) {
+                    sb.append(", ");
+                }
+                sb.append(localeStrings[j]);
+            }
+            logln("Input locales: " + sb.toString());
+            
+            gp.reset();
+            gp.setLocales(localeArray);
+
+            List resultLocales = gp.getLocales();
+            if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {
+                errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()
+                        + " Expected:" + RESULTS_LOCALEIDS[i].length);
+            } else {
+                
+                for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {
+                    ULocale loc = gp.getLocale(j);
+                    logln("Locale[" + j + "]: " + loc.toString());
+                    if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {
+                        errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()
+                                + " Expected:" + RESULTS_LOCALEIDS[i][j]);
+                    }
+                }    
+            }
+        }
+
+        // setLocales(String)
+        for (int i = 0; i < ACCEPT_LANGUAGES.length; i++) {
+            String acceptLanguage = ACCEPT_LANGUAGES[i];
+            logln("Accept language: " + acceptLanguage);
+            
+            gp.reset();
+            gp.setLocales(acceptLanguage);
+
+            List resultLocales = gp.getLocales();
+            if (resultLocales.size() != RESULTS_LOCALEIDS[i].length) {
+                errln("FAIL: Number of locales mismatch - GP:" + resultLocales.size()
+                        + " Expected:" + RESULTS_LOCALEIDS[i].length);
+            } else {
+                
+                for (int j = 0; j < RESULTS_LOCALEIDS[i].length; j++) {
+                    ULocale loc = gp.getLocale(j);
+                    logln("Locale[" + j + "]: " + loc.toString());
+                    if (!gp.getLocale(j).toString().equals(RESULTS_LOCALEIDS[i][j])) {
+                        errln("FAIL: Locale index(" + j + ") does not match - GP:" + loc.toString()
+                                + " Expected:" + RESULTS_LOCALEIDS[i][j]);
+                    }
+                }    
+            }
+        }
+
+
+        // accept-language without q-value
+        logln("Set accept-language - de,de-AT");
+        gp.setLocales("de,de-AT");
+        if (!gp.getLocale(0).toString().equals("de_AT")) {
+            errln("FAIL: getLocale(0) returns " + gp.getLocale(0).toString() + " Expected: de_AT");
+        }
+        
+        // Invalid accept-language
+        logln("Set locale - ko_KR");
+        gp.setLocale(new ULocale("ko_KR"));
+        boolean bException = false;
+        try {
+            logln("Set invlaid accept-language - ko=100");
+            gp.setLocales("ko=100");
+        } catch (IllegalArgumentException iae) {
+            logln("IllegalArgumentException was thrown");
+            bException = true;
+        }
+        if (!bException) {
+            errln("FAIL: IllegalArgumentException was not thrown for illegal accept-language - ko=100");
+        }
+        if (!gp.getLocale(0).toString().equals("ko_KR")) {
+            errln("FAIL: Previous valid locale list had gone");
+        }
+    }
+
+    public void TestResourceBundle() {
+        String baseName = "com.ibm.icu.dev.data.resources.TestDataElements";
+        ResourceBundle rb;
+
+        logln("Get a resource bundle " + baseName + 
+                " using GlobalizationPreferences initialized by locales - en_GB, en_US");
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+        ULocale[] locales = new ULocale[2];
+        locales[0] = new ULocale("en_GB");
+        locales[1] = new ULocale("en_US");
+        gp.setLocales(locales);
+
+        try {
+            rb = gp.getResourceBundle(baseName);
+            String str = rb.getString("from_en_US");
+            if (!str.equals("This data comes from en_US")) {
+                errln("FAIL: from_en_US is not from en_US bundle");
+            }
+        } catch (MissingResourceException mre) {
+            errln("FAIL: Missing resouces");
+        }
+
+        gp.reset();
+
+        logln("Get a resource bundle " + baseName + 
+        " using GlobalizationPreferences initialized by locales - ja, en_US_California");
+
+        locales = new ULocale[2];
+        locales[0] = new ULocale("ja");
+        locales[1] = new ULocale("en_US_California");
+        gp.setLocales(locales);
+        
+        try {
+            rb = gp.getResourceBundle(baseName, Thread.currentThread().getContextClassLoader());
+            String str = rb.getString("from_en_US");
+            if (!str.equals("This data comes from en_US")) {
+                errln("FAIL: from_en_US is not from en_US bundle");
+            }
+        } catch (MissingResourceException mre) {
+            errln("FAIL: Missing resouces");
+        }
+
+        logln("Get a resource bundle which does not exist");
+        boolean bException = false;
+        try {
+            rb = gp.getResourceBundle("foo.bar.XXX");
+        } catch (MissingResourceException mre) {
+            logln("Missing resource exception for getting resource bundle - foo.bar.XXX");
+            bException = true;
+        }
+        if (!bException) {
+            errln("FAIL: MissingResourceException must be thrown for RB - foo.bar.XXX");
+        }
+    }
+
+    public void TestTerritory() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Territory for unsupported language locale
+        logln("Set locale - ang");
+        gp.setLocale(new ULocale("ang"));
+        String territory = gp.getTerritory();
+        if (!territory.equals("US")) {
+            errln("FAIL: Territory is " + territory + " - Expected: US");
+        }
+
+        // Territory for language only locale "fr"
+        logln("Set locale - fr");
+        gp.setLocale(new ULocale("fr"));
+        territory = gp.getTerritory();
+        if (!territory.equals("FR")) {
+            errln("FAIL: Territory is " + territory + " - Expected: FR");
+        }
+
+
+        // Set explicity territory
+        logln("Set explicit territory - CA");
+        gp.setTerritory("CA");
+        territory = gp.getTerritory();
+        if (!territory.equals("CA")) {
+            errln("FAIL: Territory is " + territory + " - Expected: CA");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        gp.freeze();
+        
+        boolean bFrozen = false;
+        try {
+            gp.setTerritory("FR");
+        } catch (UnsupportedOperationException uoe) {
+            logln("setTerritory is blocked");
+            bFrozen = true;
+        }
+        if (!bFrozen) {
+            errln("FAIL: setTerritory must be blocked after frozen");
+        }
+        territory = gp.getTerritory();
+        if (!territory.equals("CA")) {
+            errln("FAIL: Territory is not CA");
+        }
+
+        // Safe clone
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        territory = gp1.getTerritory();
+        if (!territory.equals("CA")) {
+            errln("FAIL: Territory is " + territory + " - Expected: CA");
+        }
+
+        gp1.reset();
+        ULocale[] locales = new ULocale[2];
+        locales[0] = new ULocale("ja");
+        locales[1] = new ULocale("zh_Hant_TW");
+ 
+        logln("Set locales - ja, zh_Hant_TW");
+        gp1.setLocales(locales);
+
+        territory = gp1.getTerritory();
+        if (!territory.equals("TW")) {
+            errln("FAIL: Territory is " + territory + " - Expected: TW");
+        }
+    }
+
+    public void TestCurrency() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Set language only locale - ja
+        logln("Set locale - ja");
+        gp.setLocale(new ULocale("ja"));
+        Currency cur = gp.getCurrency();
+        String code = cur.getCurrencyCode();
+        if (!code.equals("JPY")) {
+            errln("FAIL: Currency is " + code + " - Expected: JPY");
+        }
+
+        gp.reset();
+        // Set locales with territory
+        logln("Set locale - ja_US");
+        gp.setLocale(new ULocale("ja_US"));
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("USD")) {
+            errln("FAIL: Currency is " + code + " - Expected: USD");
+        }
+
+        // Set locales with territory in the second locale
+        logln("Set locales - it, en_US");
+        ULocale[] locales = new ULocale[2];
+        locales[0] = new ULocale("it");
+        locales[1] = new ULocale("en_US");
+        gp.setLocales(locales);
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("USD")) {
+            errln("FAIL: Currency is " + code + " - Expected: USD");
+        }
+
+        // Set explicit territory
+        logln("Set territory - DE");
+        gp.setTerritory("DE");
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("EUR")) {
+            errln("FAIL: Currency is " + code + " - Expected: EUR");
+        }
+
+        // Set explicit currency
+        Currency ecur = Currency.getInstance("BRL");
+        gp.setCurrency(ecur);
+        logln("Set explicit currency - BRL");
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("BRL")) {
+            errln("FAIL: Currency is " + code + " - Expected: BRL");
+        }
+
+        // Set explicit territory again
+        logln("Set territory - JP");
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("BRL")) {
+            errln("FAIL: Currency is " + code + " - Expected: BRL");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        Currency ecur2 = Currency.getInstance("CHF");
+        boolean bFrozen = false;
+        gp.freeze();
+        try {
+            gp.setCurrency(ecur2);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setCurrency is blocked");
+            bFrozen = true;
+        }
+        if (!bFrozen) {
+            errln("FAIL: setCurrency must be blocked");
+        }
+
+        // Safe clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        cur = gp.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("BRL")) {
+            errln("FAIL: Currency is " + code + " - Expected: BRL");
+        }
+
+        // Set ecplicit currency
+        gp1.setCurrency(ecur2);
+        cur = gp1.getCurrency();
+        code = cur.getCurrencyCode();
+        if (!code.equals("CHF")) {
+            errln("FAIL: Currency is " + code + " - Expected: CHF");
+        }
+    }
+
+    public void TestCalendar() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Set locale - pt_BR
+        logln("Set locale - pt");
+        gp.setLocale(new ULocale("pt"));
+        Calendar cal = gp.getCalendar();
+        String calType = cal.getType();
+        if (!calType.equals("gregorian")) {
+            errln("FAIL: Calendar type is " + calType + " Expected: gregorian");
+        }
+
+        // Set a list of locales
+        logln("Set locales - en, en_JP, en_GB");
+        ULocale[] locales = new ULocale[3];
+        locales[0] = new ULocale("en");
+        locales[1] = new ULocale("en_JP");
+        locales[2] = new ULocale("en_GB");
+        gp.setLocales(locales);
+
+        cal = gp.getCalendar();
+        ULocale calLocale = cal.getLocale(ULocale.VALID_LOCALE);
+        if (!calLocale.equals(locales[2])) {
+            errln("FAIL: Calendar locale is " + calLocale.toString() + " - Expected: en_GB");
+        }
+
+        // Set ecplicit calendar
+        logln("Set Japanese calendar to this object");
+        JapaneseCalendar jcal = new JapaneseCalendar();
+        gp.setCalendar(jcal);
+        cal = gp.getCalendar();
+        calType = cal.getType();
+        if (!calType.equals("japanese")) {
+            errln("FAIL: Calendar type is " + calType + " Expected: japanese");
+        }
+
+        jcal.setFirstDayOfWeek(3);
+        if (cal.getFirstDayOfWeek() == jcal.getFirstDayOfWeek()) {
+            errln("FAIL: Calendar returned by getCalendar must be a safe copy");
+        }
+        cal.setFirstDayOfWeek(3);
+        Calendar cal1 = gp.getCalendar();
+        if (cal1.getFirstDayOfWeek() == cal.getFirstDayOfWeek()) {
+            errln("FAIL: Calendar returned by getCalendar must be a safe copy");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        IslamicCalendar ical = new IslamicCalendar();
+        boolean bFrozen = false;
+        gp.freeze();
+        try {
+            gp.setCalendar(ical);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setCalendar is blocked");
+            bFrozen = true;
+        }
+        if (!bFrozen) {
+            errln("FAIL: setCalendar must be blocked");
+        }
+
+        // Safe clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        cal = gp.getCalendar();
+        calType = cal.getType();
+        if (!calType.equals("japanese")) {
+            errln("FAIL: Calendar type afte clone is " + calType + " Expected: japanese");
+        }
+
+        logln("Set islamic calendar");
+        gp1.setCalendar(ical);
+        cal = gp1.getCalendar();
+        calType = cal.getType();
+        if (!calType.equals("islamic")) {
+            errln("FAIL: Calendar type afte clone is " + calType + " Expected: islamic");
+        }
+    }
+
+    public void TestTimeZone() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Set locale - zh_CN 
+        logln("Set locale - zh_CN");
+        gp.setLocale(new ULocale("zh_CN"));
+        TimeZone tz = gp.getTimeZone();
+        String tzid = tz.getID();
+        if (!tzid.equals("Asia/Shanghai")) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: Asia/Shanghai");
+        }
+
+        // Set locale - en
+        logln("Set locale - en");
+        gp.setLocale(new ULocale("en"));
+        tz = gp.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals("America/New_York")) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: America/New_York");
+        }
+
+        // Set territory - GB
+        logln("Set territory - GB");
+        gp.setTerritory("GB");
+        tz = gp.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals("Europe/London")) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: Europe/London");
+        }
+
+        // Check if getTimeZone returns a safe clone
+        tz.setID("Bad_ID");
+        tz = gp.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals("Europe/London")) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: Europe/London");
+        }
+
+        // Set explicit time zone
+        TimeZone jst = TimeZone.getTimeZone("Asia/Tokyo");
+        String customJstId = "Japan_Standard_Time";
+        jst.setID(customJstId);
+        gp.setTimeZone(jst);
+        tz = gp.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals(customJstId)) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: " + customJstId);
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        TimeZone cst = TimeZone.getTimeZone("Europe/Paris");
+        boolean bFrozen = false;
+        gp.freeze();
+        try {
+            gp.setTimeZone(cst);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setTimeZone is blocked");
+            bFrozen = true;
+        }
+        if (!bFrozen) {
+            errln("FAIL: setTimeZone must be blocked");
+        }
+
+        // Modifiable clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        tz = gp1.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals(customJstId)) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: " + customJstId);
+        }
+
+        // Set explicit time zone
+        gp1.setTimeZone(cst);
+        tz = gp1.getTimeZone();
+        tzid = tz.getID();
+        if (!tzid.equals(cst.getID())) {
+            errln("FAIL: Time zone ID is " + tzid + " Expected: " + cst.getID());
+        }        
+    }
+
+    public void TestCollator() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Set locale - tr
+        logln("Set locale - tr");
+        gp.setLocale(new ULocale("tr"));
+        Collator coll = gp.getCollator();
+        String locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("tr")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: tr");
+        }
+
+        // Unsupported collator locale - zun
+        logln("Set locale - zun");
+        gp.setLocale(new ULocale("zun"));
+        coll = gp.getCollator();
+        locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("root")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: root");
+        }
+
+        // Set locales - en_JP, fr, en_US, fr_FR
+        logln("Set locale - en_JP, fr, en_US, fr_FR");
+        ULocale[] locales = new ULocale[4];
+        locales[0] = new ULocale("en_JP");
+        locales[1] = new ULocale("fr");
+        locales[2] = new ULocale("en_US");
+        locales[3] = new ULocale("fr_FR");
+        gp.setLocales(locales);
+        coll = gp.getCollator();
+        locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("fr_FR")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: fr_FR");
+        }
+
+        // Set explicit Collator
+        Collator coll1 = Collator.getInstance(new ULocale("it"));
+        coll1.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        logln("Set collator for it in canonical deconposition mode");
+        gp.setCollator(coll1);
+        coll1.setStrength(Collator.IDENTICAL);
+        coll = gp.getCollator();
+        locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("it")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: it");
+        }
+        if (coll1.equals(coll)) {
+            errln("FAIL: setCollator must use a safe copy of a Collator");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        boolean isFrozen = false;
+        gp.freeze();
+        try {
+            gp.setCollator(coll1);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setCollator is blocked");
+            isFrozen = true;
+        }
+        if (!isFrozen) {
+            errln("FAIL: setCollator must be blocked after freeze");
+        }
+
+        // Modifiable clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        coll = gp1.getCollator();
+        locStr = coll.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("it")) {
+            errln("FAIL: Collator locale is " + locStr + " Expected: it");
+        }
+        if (coll.getDecomposition() != Collator.CANONICAL_DECOMPOSITION) {
+            errln("FAIL: Decomposition mode is not CANONICAL_DECOMPOSITION");
+        }
+
+        // Set custom collator again
+        gp1.setCollator(coll1);
+        coll = gp1.getCollator();
+        if (coll.getStrength() != Collator.IDENTICAL) {
+            errln("FAIL: Strength is not IDENTICAL");
+        }
+    }
+
+    public void TestBreakIterator() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        // Unsupported break iterator locale - aar
+        logln("Set locale - aar");
+        gp.setLocale(new ULocale("aar"));
+        BreakIterator brk = gp.getBreakIterator(GlobalizationPreferences.BI_LINE);
+        String locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("root")) {
+            errln("FAIL: Line break iterator locale is " + locStr + " Expected: root");
+        }
+
+        // Set locale - es
+        logln("Set locale - es");
+        gp.setLocale(new ULocale("es"));
+        brk = gp.getBreakIterator(GlobalizationPreferences.BI_CHARACTER);
+        /* TODO: JB#5383
+        locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("es")) {
+            errln("FAIL: Character break iterator locale is " + locStr + " Expected: es");
+        }
+        */
+
+        // Set explicit break sentence iterator
+        logln("Set break iterator for sentence using locale hu_HU");
+        BreakIterator brk1 = BreakIterator.getSentenceInstance(new ULocale("hu_HU"));
+        gp.setBreakIterator(GlobalizationPreferences.BI_SENTENCE, brk1);
+
+        brk = gp.getBreakIterator(GlobalizationPreferences.BI_SENTENCE);
+        /* TODO: JB#5210
+        locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("hu_HU")) {
+            errln("FAIL: Sentence break locale is " + locStr + " Expected: hu_HU");
+        }
+        */
+        brk.setText("This is a test case.  Is this a new instance?");
+        brk.next();
+        if (brk1.current() == brk.current()) {
+            errln("FAIL: getBreakIterator must return a new instance");
+        }
+
+        // Illegal argument
+        logln("Get break iterator type 100");
+        boolean illegalArg = false;
+        try {
+            brk = gp.getBreakIterator(100);
+        } catch (IllegalArgumentException iae) {
+            logln("Break iterator type 100 is illegal");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getBreakIterator must throw IllegalArgumentException for type 100");
+        }
+        logln("Set break iterator type -1");
+        illegalArg = false;
+        try {
+            gp.setBreakIterator(-1, brk1);
+        } catch (IllegalArgumentException iae) {
+            logln("Break iterator type -1 is illegal");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getBreakIterator must throw IllegalArgumentException for type -1");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        BreakIterator brk2 = BreakIterator.getTitleInstance(new ULocale("es_MX"));
+        boolean isFrozen = false;
+        gp.freeze();
+        try {
+            gp.setBreakIterator(GlobalizationPreferences.BI_TITLE, brk2);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setBreakIterator is blocked");
+            isFrozen = true;
+        }
+        if (!isFrozen) {
+            errln("FAIL: setBreakIterator must be blocked after frozen");
+        }
+
+        // Modifiable clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        brk = gp1.getBreakIterator(GlobalizationPreferences.BI_WORD);
+        /* TODO: JB#5383
+        locStr = brk.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("es")) {
+            errln("FAIL: Word break iterator locale is " + locStr + " Expected: es");
+        }
+        */
+
+        ULocale frFR = new ULocale("fr_FR");
+        BreakIterator brkC = BreakIterator.getCharacterInstance(frFR);
+        BreakIterator brkW = BreakIterator.getWordInstance(frFR);
+        BreakIterator brkL = BreakIterator.getLineInstance(frFR);
+        BreakIterator brkS = BreakIterator.getSentenceInstance(frFR);
+        BreakIterator brkT = BreakIterator.getTitleInstance(frFR);
+
+        gp1.setBreakIterator(GlobalizationPreferences.BI_CHARACTER, brkC);
+        gp1.setBreakIterator(GlobalizationPreferences.BI_WORD, brkW);
+        gp1.setBreakIterator(GlobalizationPreferences.BI_LINE, brkL);
+        gp1.setBreakIterator(GlobalizationPreferences.BI_SENTENCE, brkS);
+        gp1.setBreakIterator(GlobalizationPreferences.BI_TITLE, brkT);
+
+        /* TODO: JB#5210
+        locStr = brkC.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Character break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        locStr = brkW.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Word break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        locStr = brkL.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Line break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        locStr = brkS.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Sentence break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        locStr = brkT.getLocale(ULocale.VALID_LOCALE).toString();
+        if (!locStr.equals("ja_JP")) {
+            errln("FAIL: Title break iterator locale is " + locStr + " Expected: fr_FR");
+        }
+        */
+    }
+
+    public void TestDisplayName() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        ULocale loc_fr_FR_Paris = new ULocale("fr_FR_Paris");
+        ULocale loc_peo = new ULocale("peo");
+
+        // Locale list - fr_FR_Paris
+        ArrayList locales1 = new ArrayList(1);
+        locales1.add(loc_fr_FR_Paris);
+
+        // Locale list - ain, fr_FR_Paris
+        ArrayList locales2 = new ArrayList(2);
+        locales2.add(loc_peo);
+        locales2.add(loc_fr_FR_Paris);
+
+        logln("Locales: <default> | <fr_FR_Paris> | <ain, fr_FR_Paris>");
+
+        // ID_LOCALE
+        String id = "zh_Hant_HK";
+        String name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);
+        gp.setLocales(locales1);
+        String name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);
+        gp.setLocales(locales2);
+        String name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_LOCALE);
+
+        logln("Locale[zh_Hant_HK]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Locale ID");
+        }
+
+        // ID_LANGUAGE
+        gp.reset();
+        id = "fr";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_LANGUAGE);
+
+        logln("Language[fr]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Language ID");
+        }
+
+        // ID_SCRIPT
+        gp.reset();
+        id = "cyrl";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_SCRIPT);
+
+        logln("Script[cyrl]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Script ID");
+        }
+
+        // ID_TERRITORY
+        gp.reset();
+        id = "JP";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_TERRITORY);
+
+        logln("Territory[JP]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Territory ID");
+        }
+
+        // ID_VARIANT
+        gp.reset();
+        id = "NEDIS";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_VARIANT);
+
+        logln("Variant[NEDIS]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Variant ID");
+        }
+
+        // ID_KEYWORD
+        gp.reset();
+        id = "collation";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD);
+
+        logln("Keyword[collation]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Keyword ID");
+        }
+
+        // ID_KEYWORD_VALUE
+        gp.reset();
+        id = "collation=traditional";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_KEYWORD_VALUE);
+
+        logln("Keyword value[traditional]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Keyword value ID");
+        }
+
+        // ID_CURRENCY_SYMBOL
+        gp.reset();
+        id = "USD";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY_SYMBOL);
+
+        logln("Currency symbol[USD]: " + name1 + " | " + name2 + " | " + name3);
+        String dollar = "$";
+        String us_dollar = "$US";
+        if (!name1.equals(dollar) || !name2.equals(us_dollar) || !name3.equals(us_dollar)) {
+            errln("FAIL: Currency symbol ID");
+        }
+
+        // ID_CURRENCY
+        gp.reset();
+        id = "USD";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_CURRENCY);
+
+        logln("Currency[USD]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Currency ID");
+        }
+
+        // ID_TIMEZONE
+        gp.reset();
+        id = "Europe/Paris";
+        name1 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);
+        gp.setLocales(locales1);
+        name2 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);
+        gp.setLocales(locales2);
+        name3 = gp.getDisplayName(id, GlobalizationPreferences.ID_TIMEZONE);
+
+        logln("Timezone[Europe/Paris]: " + name1 + " | " + name2 + " | " + name3);
+        if (name1.equals(name2) || !name2.equals(name3)) {
+            errln("FAIL: Timezone ID");
+        }
+
+        // Illegal ID
+        gp.reset();
+        boolean illegalArg = false;
+        try {
+            name1 = gp.getDisplayName(id, -1);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal type -1");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getDisplayName must throw IllegalArgumentException for type -1");
+        }
+
+        illegalArg = false;
+        try {
+            name1 = gp.getDisplayName(id, 100);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal type 100");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getDisplayName must throw IllegalArgumentException for type 100");
+        }
+    }
+
+    public void TestDateFormat() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        String pattern;
+        DateFormat df;
+
+        // Set unsupported locale - ach
+        logln("Set locale - ach");
+        gp.setLocale(new ULocale("ach"));
+
+        // Date - short
+        df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        // root pattern must be used
+        if (!pattern.equals("yyyy-MM-dd")) {
+            errln("FAIL: SHORT date pattern is " + pattern + " Expected: yyyy-MM-dd");
+        }
+
+        // Set locale - fr, fr_CA, fr_FR
+        ArrayList lcls = new ArrayList(3);
+        lcls.add(new ULocale("fr"));
+        lcls.add(new ULocale("fr_CA"));
+        lcls.add(new ULocale("fr_FR"));
+        logln("Set locales - fr, fr_CA, fr_FR");
+        gp.setLocales(lcls);
+        // Date - short
+        df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        // fr_CA pattern must be used
+        if (!pattern.equals("yy-MM-dd")) {
+            errln("FAIL: SHORT date pattern is " + pattern + " Expected: yy-MM-dd");
+        }
+
+
+        // Set locale - en_GB
+        logln("Set locale - en_GB");
+        gp.setLocale(new ULocale("en_GB"));
+        
+        // Date - full
+        df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("EEEE, d MMMM yyyy")) {
+            errln("FAIL: FULL date pattern is " + pattern + " Expected: EEEE, d MMMM yyyy");
+        }
+
+        // Date - long
+        df = gp.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("d MMMM yyyy")) {
+            errln("FAIL: LONG date pattern is " + pattern + " Expected: d MMMM yyyy");
+        }
+
+        // Date - medium
+        df = gp.getDateFormat(GlobalizationPreferences.DF_MEDIUM, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("d MMM yyyy")) {
+            errln("FAIL: MEDIUM date pattern is " + pattern + " Expected: d MMM yyyy");
+        }
+
+        // Date - short
+        df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("dd/MM/yyyy")) {
+            errln("FAIL: SHORT date pattern is " + pattern + " Expected: dd/MM/yyyy");
+        }
+
+        // Time - full
+        df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_FULL);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("HH:mm:ss v")) {
+            errln("FAIL: FULL time pattern is " + pattern + " Expected: HH:mm:ss v");
+        }
+
+        // Time - long
+        df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_LONG);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("HH:mm:ss z")) {
+            errln("FAIL: LONG time pattern is " + pattern + " Expected: HH:mm:ss z");
+        }
+
+        // Time - medium
+        df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_MEDIUM);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("HH:mm:ss")) {
+            errln("FAIL: MEDIUM time pattern is " + pattern + " Expected: HH:mm:ss");
+        }
+
+        // Time - short
+        df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_SHORT);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("HH:mm")) {
+            errln("FAIL: SHORT time pattern is " + pattern + " Expected: HH:mm");
+        }
+
+        // Date/Time - full
+        df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_FULL);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("EEEE, d MMMM yyyy HH:mm:ss v")) {
+            errln("FAIL: FULL date/time pattern is " + pattern + " Expected: EEEE, d MMMM yyyy HH:mm:ss v");
+        }
+
+        // Invalid style
+        boolean illegalArg = false;
+        try {
+            df = gp.getDateFormat(-1, GlobalizationPreferences.DF_NONE);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal date style -1");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getDateFormat() must throw IllegalArgumentException for dateStyle -1");
+        }
+
+        illegalArg = false;
+        try {
+            df = gp.getDateFormat(GlobalizationPreferences.DF_NONE, GlobalizationPreferences.DF_NONE);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal style - dateStyle:DF_NONE / timeStyle:DF_NONE");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getDateFormat() must throw IllegalArgumentException for dateStyle:DF_NONE/timeStyle:DF_NONE");
+        }
+
+        // Set explicit time zone
+        logln("Set timezone - America/Sao_Paulo");
+        TimeZone tz = TimeZone.getTimeZone("America/Sao_Paulo");
+        gp.setTimeZone(tz);
+        df = gp.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_MEDIUM);
+        String tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+        // Set explicit calendar
+        logln("Set calendar - japanese");
+        Calendar jcal = new JapaneseCalendar();
+        jcal.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
+        gp.setCalendar(jcal);
+        df = gp.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_SHORT);
+        Calendar dfCal = df.getCalendar();
+        if (!(dfCal instanceof JapaneseCalendar)) {
+            errln("FAIL: The DateFormat instance must use Japanese calendar");
+        }
+        // TimeZone must be still America/Sao_Paulo
+        tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+        // Set explicit DateFormat
+        logln("Set explicit date format - full date");
+        DateFormat customFD = DateFormat.getDateInstance(new IslamicCalendar(), DateFormat.FULL, new ULocale("ar_SA"));
+        customFD.setTimeZone(TimeZone.getTimeZone("Asia/Riyadh"));
+        gp.setDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE, customFD);
+        df = gp.getDateFormat(GlobalizationPreferences.DF_FULL, GlobalizationPreferences.DF_NONE);
+        dfCal = df.getCalendar();
+        if (!(dfCal instanceof IslamicCalendar)) {
+            errln("FAIL: The DateFormat instance must use Islamic calendar");
+        }
+        // TimeZone in the custom DateFormat is overridden by GP's timezone setting
+        tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+        // Freeze
+        logln("Freeze this object");
+        gp.freeze();
+        DateFormat customLD = DateFormat.getDateInstance(new BuddhistCalendar(), DateFormat.LONG, new ULocale("th"));
+        customLD.setTimeZone(TimeZone.getTimeZone("Asia/Bangkok"));
+        boolean isFrozen = false;
+        try {
+            gp.setDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE, customLD);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setDateFormat is blocked");
+            isFrozen = true;
+        }
+        if (!isFrozen) {
+            errln("FAIL: setDateFormat must be blocked after frozen");
+        }
+
+        // Modifiable clone
+        logln("cloneAsThawed");
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+        gp1.setDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE, customLD);
+        
+        df = gp1.getDateFormat(GlobalizationPreferences.DF_SHORT, GlobalizationPreferences.DF_SHORT);
+        dfCal = df.getCalendar();
+        if (!(dfCal instanceof JapaneseCalendar)) {
+            errln("FAIL: The DateFormat instance must use Japanese calendar");
+        }
+        // TimeZone must be still America/Sao_Paulo
+        tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+        df = gp1.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE);
+        dfCal = df.getCalendar();
+        if (!(dfCal instanceof BuddhistCalendar)) {
+            errln("FAIL: The DateFormat instance must use Buddhist calendar");
+        }
+        // TimeZone must be still America/Sao_Paulo
+        tzid = df.getTimeZone().getID();
+        if (!tzid.equals("America/Sao_Paulo")) {
+            errln("FAIL: The DateFormat instance must use timezone America/Sao_Paulo");
+        }
+
+    }
+
+    public void TestNumberFormat() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+
+        NumberFormat nf;
+        String numStr;
+        double num = 123456.789;
+
+        // Set unsupported locale with supported territory ang_KR
+        logln("Set locale - ang_KR");
+        gp.setLocale(new ULocale("ang_KR"));
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        numStr = nf.format(num);
+        if (!numStr.equals("KRW\u00a0123,457")) {
+            errln("FAIL: Number string is " + numStr + " Expected: KRW\u00a0123,457");
+        }
+        
+        // Set locale - de_DE
+        logln("Set locale - de_DE");
+        gp.setLocale(new ULocale("de_DE"));
+
+        // NF_NUMBER
+        logln("NUMBER type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.456,789")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.456,789");
+        }
+
+        // NF_CURRENCY
+        logln("CURRENCY type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.456,79\u00a0\u20AC")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0\u20AC");
+        }
+
+        // NF_PERCENT
+        logln("PERCENT type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_PERCENT);
+        numStr = nf.format(num);
+        if (!numStr.equals("12.345.679\u00a0%")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 12.345.679\u00a0%");
+        }
+
+        // NF_SCIENTIFIC
+        logln("SCIENTIFIC type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC);
+        numStr = nf.format(num);
+        if (!numStr.equals("1,23456789E5")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 1,23456789E5");
+        }
+
+        // NF_INTEGER
+        logln("INTEGER type");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_INTEGER);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.457")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.457");
+        }
+
+        // Invalid number type
+        logln("INVALID type");
+        boolean illegalArg = false;
+        try {
+            nf = gp.getNumberFormat(100);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal number format type 100");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getNumberFormat must throw IllegalArgumentException for type 100");
+        }
+        illegalArg = false;
+        try {
+            nf = gp.getNumberFormat(-1);
+        } catch (IllegalArgumentException iae) {
+            logln("Illegal number format type -1");
+            illegalArg = true;
+        }
+        if (!illegalArg) {
+            errln("FAIL: getNumberFormat must throw IllegalArgumentException for type -1");
+        }
+        
+        // Set explicit territory
+        logln("Set territory - US");
+        gp.setTerritory("US");
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.456,79\u00a0$")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0$");
+        }
+
+        // Set explicit currency
+        logln("Set currency - GBP");
+        gp.setCurrency(Currency.getInstance("GBP"));
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        numStr = nf.format(num);
+        if (!numStr.equals("123.456,79\u00a0\u00A3")) {
+            errln("FAIL: Number string is " + numStr + " Expected: 123.456,79\u00a0\u00A3");
+        }
+
+        // Set exliplicit NumberFormat
+        logln("Set explicit NumberFormat objects");
+        NumberFormat customNum = NumberFormat.getNumberInstance(new ULocale("he_IL"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum);
+        NumberFormat customCur = NumberFormat.getCurrencyInstance(new ULocale("zh_CN"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_CURRENCY, customCur);
+        NumberFormat customPct = NumberFormat.getPercentInstance(new ULocale("el_GR"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_PERCENT, customPct);
+        NumberFormat customSci = NumberFormat.getScientificInstance(new ULocale("ru_RU"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC, customSci);
+        NumberFormat customInt = NumberFormat.getIntegerInstance(new ULocale("pt_PT"));
+        gp.setNumberFormat(GlobalizationPreferences.NF_INTEGER, customInt);
+
+        
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("he_IL")) {
+            errln("FAIL: The NumberFormat instance must use locale he_IL");
+        }
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_CURRENCY);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("zh_CN")) {
+            errln("FAIL: The NumberFormat instance must use locale zh_CN");
+        }
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_PERCENT);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("el_GR")) {
+            errln("FAIL: The NumberFormat instance must use locale el_GR");
+        }
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_SCIENTIFIC);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("ru_RU")) {
+            errln("FAIL: The NumberFormat instance must use locale ru_RU");
+        }
+        nf = gp.getNumberFormat(GlobalizationPreferences.NF_INTEGER);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("pt_PT")) {
+            errln("FAIL: The NumberFormat instance must use locale pt_PT");
+        }
+
+        NumberFormat customNum1 = NumberFormat.getNumberInstance(new ULocale("hi_IN"));
+
+        // Freeze
+        logln("Freeze this object");
+        boolean isFrozen = false;
+        gp.freeze();
+        try {
+            gp.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum1);
+        } catch (UnsupportedOperationException uoe) {
+            logln("setNumberFormat is blocked");
+            isFrozen = true;
+        }
+        if (!isFrozen) {
+            errln("FAIL: setNumberFormat must be blocked after frozen");
+        }
+
+        // Create a modifiable clone
+        GlobalizationPreferences gp1 = (GlobalizationPreferences)gp.cloneAsThawed();
+
+        // Number type format's locale is still he_IL
+        nf = gp1.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("he_IL")) {
+            errln("FAIL: The NumberFormat instance must use locale he_IL");
+        }
+
+        logln("Set custom number format using locale hi_IN");
+        gp1.setNumberFormat(GlobalizationPreferences.NF_NUMBER, customNum1);
+        nf = gp1.getNumberFormat(GlobalizationPreferences.NF_NUMBER);
+        if (!nf.getLocale(ULocale.VALID_LOCALE).toString().equals("hi_IN")) {
+            errln("FAIL: The NumberFormat instance must use locale hi_IN");
+        }
+    }
+
+    /*
+     * JB#5380 GlobalizationPreferences#getCalendar() should return a Calendar object
+     * initialized with the current time
+     */
+    public void TestJB5380() {
+        GlobalizationPreferences gp = new GlobalizationPreferences();
+        GregorianCalendar gcal = new GregorianCalendar();
+
+        // set way old date
+        gcal.set(Calendar.YEAR, 1950);
+
+        // set calendar to GP
+        gp.setCalendar(gcal);
+
+        Calendar cal = gp.getCalendar();
+        // Calendar instance returned from GP should be initialized
+        // by the current time
+        long timeDiff = System.currentTimeMillis() - cal.getTimeInMillis();
+        if (Math.abs(timeDiff) > 1000) {
+            // if difference is more than 1 second..
+            errln("FAIL: The Calendar was not initialized by current time - difference:" + timeDiff);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
new file mode 100644
index 0000000..e0cd6e2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
@@ -0,0 +1,270 @@
+/***************************************************************************************
+ *
+ *   Copyright (C) 1996-2007, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ */
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormat
+ * Source File: java/text/format/IntlTestDateFormat.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.ULocale;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.util.Random;
+import java.util.Date;
+
+public class IntlTestDateFormat extends com.ibm.icu.dev.test.TestFmwk {
+    // Values in milliseconds (== Date)
+    private static final long ONESECOND = 1000;
+    private static final long ONEMINUTE = 60 * ONESECOND;
+    private static final long ONEHOUR = 60 * ONEMINUTE;
+    private static final long ONEDAY = 24 * ONEHOUR;
+    //private static final double ONEYEAR = 365.25 * ONEDAY; // Approximate //The variable is never used
+
+    // EModes
+    //private static final byte GENERIC = 0;
+    //private static final byte TIME = GENERIC + 1; //The variable is never used
+    //private static final byte DATE = TIME + 1; //The variable is never used
+    //private static final byte DATE_TIME = DATE + 1; //The variable is never used
+
+    private DateFormat fFormat = null;
+    private String fTestName = new String("getInstance");
+    private int fLimit = 3; // How many iterations it should take to reach convergence
+    private Random random; // initialized in randDouble
+
+    public IntlTestDateFormat() {
+        //Constructure
+    } 
+    protected void init() throws Exception{
+        fFormat = DateFormat.getInstance();
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormat().run(args);
+    }
+
+    public void TestULocale() {
+        localeTest(ULocale.getDefault(), "Default Locale");
+    }
+
+    // This test does round-trip testing (format -> parse -> format -> parse -> etc.) of DateFormat.
+    public void localeTest(final ULocale locale, final String localeName) {
+        int timeStyle, dateStyle;
+
+        // For patterns including only time information and a timezone, it may take
+        // up to three iterations, since the timezone may shift as the year number
+        // is determined.  For other patterns, 2 iterations should suffice.
+        fLimit = 3;
+
+        for(timeStyle = 0; timeStyle < 4; timeStyle++) {
+            fTestName = new String("Time test " + timeStyle + " (" + localeName + ")");
+            try {
+                fFormat = DateFormat.getTimeInstance(timeStyle, locale);
+            }
+            catch(StringIndexOutOfBoundsException e) {
+                errln("FAIL: localeTest time getTimeInstance exception");
+                throw e;
+            }
+            TestFormat();
+        }
+
+        fLimit = 2;
+
+        for(dateStyle = 0; dateStyle < 4; dateStyle++) {
+            fTestName = new String("Date test " + dateStyle + " (" + localeName + ")");
+            try {
+                fFormat = DateFormat.getDateInstance(dateStyle, locale);
+            }
+            catch(StringIndexOutOfBoundsException e) {
+                errln("FAIL: localeTest date getTimeInstance exception");
+                throw e;
+            }
+            TestFormat();
+        }
+
+        for(dateStyle = 0; dateStyle < 4; dateStyle++) {
+            for(timeStyle = 0; timeStyle < 4; timeStyle++) {
+                fTestName = new String("DateTime test " + dateStyle + "/" + timeStyle + " (" + localeName + ")");
+                try {
+                    fFormat = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale);
+                }
+                catch(StringIndexOutOfBoundsException e) {
+                    errln("FAIL: localeTest date/time getDateTimeInstance exception");
+                    throw e;
+                }
+                TestFormat();
+            }
+        }
+    }
+
+    public void TestFormat() {
+        if (fFormat == null) {
+            errln("FAIL: DateFormat creation failed");
+            return;
+        }
+        //        logln("TestFormat: " + fTestName);
+        Date now = new Date();
+        tryDate(new Date(0));
+        tryDate(new Date((long) 1278161801778.0));
+        tryDate(now);
+        // Shift 6 months into the future, AT THE SAME TIME OF DAY.
+        // This will test the DST handling.
+        tryDate(new Date(now.getTime() + 6*30*ONEDAY));
+
+        Date limit = new Date(now.getTime() * 10); // Arbitrary limit
+        for (int i=0; i<2; ++i)
+            //            tryDate(new Date(floor(randDouble() * limit)));
+            tryDate(new Date((long) (randDouble() * limit.getTime())));
+    }
+
+    private void describeTest() {
+        if (fFormat == null) {
+            errln("FAIL: no DateFormat");
+            return;
+        }
+
+        // Assume it's a SimpleDateFormat and get some info
+        SimpleDateFormat s = (SimpleDateFormat) fFormat;
+        logln(fTestName + " Pattern " + s.toPattern());
+    }
+    
+    private void tryDate(Date theDate) {
+        final int DEPTH = 10;
+        Date[] date = new Date[DEPTH];
+        StringBuffer[] string = new StringBuffer[DEPTH];
+
+        int dateMatch = 0;
+        int stringMatch = 0;
+        boolean dump = false;
+        int i;
+        for (i=0; i<DEPTH; ++i) string[i] = new StringBuffer();
+        for (i=0; i<DEPTH; ++i) {
+            if (i == 0) date[i] = theDate;
+            else {
+                try {
+                    date[i] = fFormat.parse(string[i-1].toString());
+                }
+                catch (ParseException e) {
+                    describeTest();
+                    errln("********** FAIL: Parse of " + string[i-1] + " failed for locale: "+fFormat.getLocale(ULocale.ACTUAL_LOCALE));
+                    dump = true;
+                    break;
+                }
+            }
+            FieldPosition position = new FieldPosition(0);
+            fFormat.format(date[i], string[i], position);
+            if (i > 0) {
+                if (dateMatch == 0 && date[i] == date[i-1]) dateMatch = i;
+                else if (dateMatch > 0 && date[i] != date[i-1]) {
+                    describeTest();
+                    errln("********** FAIL: Date mismatch after match.");
+                    dump = true;
+                    break;
+                }
+                if (stringMatch == 0 && string[i] == string[i-1]) stringMatch = i;
+                else if (stringMatch > 0 && string[i] != string[i-1]) {
+                    describeTest();
+                    errln("********** FAIL: String mismatch after match.");
+                    dump = true;
+                    break;
+                }
+            }
+            if (dateMatch > 0 && stringMatch > 0) break;
+        }
+        if (i == DEPTH) --i;
+
+        if (stringMatch > fLimit || dateMatch > fLimit) {
+            describeTest();
+            errln("********** FAIL: No string and/or date match within " + fLimit + " iterations.");
+            dump = true;
+        }
+
+        if (dump) {
+            for (int k=0; k<=i; ++k) {
+                logln("" + k + ": " + date[k] + " F> " + string[k] + " P> ");
+            }
+        }
+    }
+
+    // Return a random double from 0.01 to 1, inclusive
+    private double randDouble() {
+    if (random == null) {
+        random = createRandom();
+    }
+        // Assume 8-bit (or larger) rand values.  Also assume
+        // that the system rand() function is very poor, which it always is.
+        //        double d;
+        //        int i;
+        //        do {
+        //            for (i=0; i < sizeof(double); ++i)
+        //            {
+        //                char poke = (char*)&d;
+        //                poke[i] = (rand() & 0xFF);
+        //            }
+        //        } while (TPlatformUtilities.isNaN(d) || TPlatformUtilities.isInfinite(d));
+
+        //        if (d < 0.0) d = -d;
+        //        if (d > 0.0)
+        //        {
+        //            double e = floor(log10(d));
+        //            if (e < -2.0) d *= pow(10.0, -e-2);
+        //            else if (e > -1.0) d /= pow(10.0, e+1);
+        //        }
+        //        return d;
+        return random.nextDouble();
+    }
+
+    public void TestAvailableLocales() {
+        final ULocale[] locales = DateFormat.getAvailableULocales();
+        long count = locales.length;
+        logln("" + count + " available locales");
+        if (locales != null  &&  count != 0) {
+            StringBuffer all = new StringBuffer();
+            for (int i=0; i<count; ++i) {
+                if (i!=0) all.append(", ");
+                all.append(locales[i].getDisplayName());
+            }
+            logln(all.toString());
+        }
+        else errln("********** FAIL: Zero available locales or null array pointer");
+    }
+
+    public void TestRoundtrip() {
+        ULocale[] locales;
+        if (isQuick()) {
+            locales = new ULocale[] {
+                    new ULocale("bg_BG"),
+                    new ULocale("fr_CA"),
+                    new ULocale("zh_TW"),
+            };
+        } else {
+            locales = DateFormat.getAvailableULocales();
+        }
+        long count = locales.length;
+        if (locales != null  &&  count != 0) {
+            for (int i=0; i<count; ++i) {
+                String name = locales[i].getDisplayName();
+                logln("Testing " + name + "...");
+                try {
+                    localeTest(locales[i], name);
+                }
+                catch(Exception e) {
+                    errln("FAIL: TestMonster localeTest exception" + e);
+                }
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
new file mode 100644
index 0000000..b6e8f86
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
@@ -0,0 +1,220 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormatAPI
+ * Source File: java/text/format/IntlTestDateFormatAPI.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format API
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.util.*;
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParsePosition;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+public class IntlTestDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormatAPI().run(args);
+    }
+
+    // Test that the equals method works correctly.
+    public void TestEquals()
+    {
+        // Create two objects at different system times
+        DateFormat a = DateFormat.getInstance();
+        Date start = Calendar.getInstance().getTime();
+        while (true) {
+            // changed to remove compiler warnings.
+            if (!start.equals(Calendar.getInstance().getTime())) {
+                break; // Wait for time to change
+            }
+        }
+        DateFormat b = DateFormat.getInstance();
+
+        if (!(a.equals(b)))
+            errln("FAIL: DateFormat objects created at different times are unequal.");
+
+        // Why has this test been disabled??? - aliu
+//        if (b instanceof SimpleDateFormat)
+//        {
+//            //double ONE_YEAR = 365*24*60*60*1000.0; //The variable is never used
+//            try {
+//                ((SimpleDateFormat)b).setTwoDigitStartDate(start.getTime() + 50*ONE_YEAR);
+//                if (a.equals(b))
+//                    errln("FAIL: DateFormat objects with different two digit start dates are equal.");
+//            }
+//            catch (Exception e) {
+//                errln("FAIL: setTwoDigitStartDate failed.");
+//            }
+//        }
+    }
+
+    // This test checks various generic API methods in DateFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("DateFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+
+        // ======= Test constructors
+
+        logln("Testing DateFormat constructors");
+
+        DateFormat def = DateFormat.getInstance();
+        DateFormat fr = DateFormat.getTimeInstance(DateFormat.FULL, Locale.FRENCH);
+        DateFormat it = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ITALIAN);
+        DateFormat de = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.GERMAN);
+
+        // ======= Test equality
+
+        logln("Testing equality operator");
+
+        if( fr.equals(it) ) {
+            errln("ERROR: equals failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+        Date d = new Date((long)837039928046.0);
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        String res3 = new String();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+
+        res1 = fr.format(d, res1, pos1);
+        logln("" + d.getTime() + " formatted to " + res1);
+
+        res2 = it.format(d, res2, pos2);
+        logln("" + d.getTime() + " formatted to " + res2);
+
+        res3 = de.format(d);
+        logln("" + d.getTime() + " formatted to " + res3);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("02/03/76 2:50 AM, CST");
+        Object result1 = new Date();
+        Date result2 = new Date();
+        Date result3 = new Date();
+        ParsePosition pos = new ParsePosition(0);
+        ParsePosition pos01 = new ParsePosition(0);
+
+        result1 = def.parseObject(text, pos);
+        if (result1 == null) {
+            errln("ERROR: parseObject() failed for " + text);
+        }
+        logln(text + " parsed into " + ((Date)result1).getTime());
+
+        try {
+            result2 = def.parse(text);
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        logln(text + " parsed into " + result2.getTime());
+
+        result3 = def.parse(text, pos01);
+        if (result3 == null) {
+            errln("ERROR: parse() failed for " + text);
+        }
+        logln(text + " parsed into " + result3.getTime());
+
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final Locale[] locales = DateFormat.getAvailableLocales();
+        long count = locales.length;
+        logln("Got " + count + " locales" );
+
+        // Ticket#6280
+        // These locales should be included in the result
+        final Locale[] samples = {
+                new Locale("zh", "CN"),
+                new Locale("zh", "TW"),
+                new Locale("zh", "HK"),
+                new Locale("sr", "RS"),
+        };
+        boolean[] available = new boolean[samples.length];
+        for(int i = 0; i < count; i++) {
+            String name;
+            name = locales[i].getDisplayName();
+            logln(name);
+            for (int j = 0; j < samples.length; j++) {
+                if (locales[i].equals(samples[j])) {
+                    available[j] = true;
+                    break;
+                }
+            }
+        }
+        for (int i = 0; i < available.length; i++) {
+            if (!available[i]) {
+                errln("ERROR: missing Locale: " + samples[i]);
+            }
+        }
+
+        fr.setLenient(it.isLenient());
+        if(fr.isLenient() != it.isLenient()) {
+            errln("ERROR: setLenient() failed");
+        }
+
+        final Calendar cal = def.getCalendar();
+        Calendar newCal = (Calendar) cal.clone();
+        de.setCalendar(newCal);
+        it.setCalendar(newCal);
+        if( ! de.getCalendar().equals(it.getCalendar())) {
+            errln("ERROR: set Calendar() failed");
+        }
+
+        final NumberFormat nf = def.getNumberFormat();
+        NumberFormat newNf = (NumberFormat) nf.clone();
+        de.setNumberFormat(newNf);
+        it.setNumberFormat(newNf);
+        if( ! de.getNumberFormat().equals(it.getNumberFormat())) {
+            errln("ERROR: set NumberFormat() failed");
+        }
+
+        final TimeZone tz = def.getTimeZone();
+        TimeZone newTz = (TimeZone) tz.clone();
+        de.setTimeZone(newTz);
+        it.setTimeZone(newTz);
+        if( ! de.getTimeZone().equals(it.getTimeZone())) {
+            errln("ERROR: set TimeZone() failed");
+        }
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof()");
+
+//        try {
+//            DateFormat test = new SimpleDateFormat();
+
+//            if (! (test instanceof SimpleDateFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a DateFormat");
+//        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
new file mode 100644
index 0000000..21467c6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
@@ -0,0 +1,156 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDateFormatAPI
+ * Source File: $ICU4CRoot/source/test/intltest/dtfmapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Date;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+/*
+ * This is an API test, not a unit test.  It doesn't test very many cases, and doesn't
+ * try to test the full functionality.  It just calls each function in the class and
+ * verifies that it works on a basic level.
+ */
+public class IntlTestDateFormatAPIC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDateFormatAPIC().run(args);
+    }
+    
+    /**
+     * Test hiding of parse() and format() APIs in the Format hierarchy.
+     * We test the entire hierarchy, even though this test is located in
+     * the DateFormat API test.
+     */
+    public void TestNameHiding() {
+    
+        // N.B.: This test passes if it COMPILES, since it's a test of
+        // compile-time name hiding.
+    
+        Date dateObj = new Date(0);
+        Number numObj = new Double(3.1415926535897932384626433832795);
+        StringBuffer strBuffer = new StringBuffer("");
+        String str;
+        FieldPosition fpos = new FieldPosition(0);
+        ParsePosition ppos = new ParsePosition(0);
+    
+        // DateFormat calling Format API
+        {
+            logln("DateFormat");
+            DateFormat dateFmt = DateFormat.getInstance();
+            if (dateFmt != null) {
+                str = dateFmt.format(dateObj);
+                strBuffer = dateFmt.format(dateObj, strBuffer, fpos);
+            } else {
+                errln("FAIL: Can't create DateFormat");
+            }
+        }
+    
+        // SimpleDateFormat calling Format & DateFormat API
+        {
+            logln("SimpleDateFormat");
+            SimpleDateFormat sdf = new SimpleDateFormat();
+            // Format API
+            str = sdf.format(dateObj);
+            strBuffer = sdf.format(dateObj, strBuffer, fpos);
+            // DateFormat API
+            strBuffer = sdf.format(new Date(0), strBuffer, fpos);
+            str = sdf.format(new Date(0));
+            try {
+                sdf.parse(str);
+                sdf.parse(str, ppos);
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+    
+        // NumberFormat calling Format API
+        {
+            logln("NumberFormat");
+            NumberFormat fmt = NumberFormat.getInstance();
+            if (fmt != null) {
+                str = fmt.format(numObj);
+                strBuffer = fmt.format(numObj, strBuffer, fpos);
+            } else {
+                errln("FAIL: Can't create NumberFormat");
+            }
+        }
+    
+        // DecimalFormat calling Format & NumberFormat API
+        {
+            logln("DecimalFormat");
+            DecimalFormat fmt = new DecimalFormat();
+            // Format API
+            str = fmt.format(numObj);
+            strBuffer = fmt.format(numObj, strBuffer, fpos);
+            // NumberFormat API
+            str = fmt.format(2.71828);
+            str = fmt.format(1234567);
+            strBuffer = fmt.format(1.41421, strBuffer, fpos);
+            strBuffer = fmt.format(9876543, strBuffer, fpos);
+            Number obj = fmt.parse(str, ppos);
+            try {
+                obj = fmt.parse(str);
+                if(obj==null){
+                    errln("FAIL: The format object could not parse the string : "+str);
+                }
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+        
+        //ICU4J have not the classes ChoiceFormat and MessageFormat
+        /*
+        // ChoiceFormat calling Format & NumberFormat API
+        {
+            logln("ChoiceFormat");
+            ChoiceFormat fmt = new ChoiceFormat("0#foo|1#foos|2#foos");
+            // Format API
+            str = fmt.format(numObj);
+            strBuffer = fmt.format(numObj, strBuffer, fpos);
+            // NumberFormat API
+            str = fmt.format(2.71828);
+            str = fmt.format(1234567);
+            strBuffer = fmt.format(1.41421, strBuffer, fpos);
+            strBuffer = fmt.format(9876543, strBuffer, fpos);
+            Number obj = fmt.parse(str, ppos);
+            try {
+                obj = fmt.parse(str);
+            } catch (java.text.ParseException pe) {
+                System.out.println(pe);
+            }
+        }
+    
+        
+        // MessageFormat calling Format API
+        {
+            logln("MessageFormat");
+            MessageFormat fmt = new MessageFormat("");
+            // Format API
+            // We use dateObj, which MessageFormat should reject.
+            // We're testing name hiding, not the format method.
+            try {
+                str = fmt.format(dateObj);
+            } catch (Exception e) {
+                //e.printStackTrace();
+            }
+            try {
+                strBuffer = fmt.format(dateObj, strBuffer, fpos);
+            } catch (Exception e) {
+                //e.printStackTrace();
+            }
+        }
+        */
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
new file mode 100644
index 0000000..a0882f0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
@@ -0,0 +1,479 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2006, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDateFormatSymbols
+ * Source File: java/text/format/IntlTestDateFormatSymbols.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Date Format Symbols
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Locale;
+
+public class IntlTestDateFormatSymbols extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDateFormatSymbols().run(args);
+    }
+
+    // Test getMonths
+    public void TestGetMonths()
+    {
+        final String[] month;
+        DateFormatSymbols symbol;
+
+        symbol=new DateFormatSymbols(Locale.getDefault());
+
+        month=symbol.getMonths();
+        int cnt = month.length;
+
+        logln("size = " + cnt);
+
+        for (int i=0; i<cnt; ++i)
+        {
+            logln(month[i]);
+        }
+    }
+
+    public void TestGetMonths2()
+    {
+        DateFormatSymbols symbol;
+        symbol=new DateFormatSymbols(Locale.getDefault());
+
+        int[] context = {DateFormatSymbols.STANDALONE, DateFormatSymbols.FORMAT};
+        int[] width = {DateFormatSymbols.WIDE, DateFormatSymbols.ABBREVIATED, DateFormatSymbols.NARROW};
+        
+        for (int i = 0; i < context.length; i++) {
+            for (int j = 0; j < width.length; j++) {
+                String[] month =symbol.getMonths(context[i],width[j]);
+                int cnt = month.length;
+
+                logln("size = " + cnt);
+
+                for (int k = 0; k < month.length; k++) {
+                    logln(month[k]);
+                }
+            }
+        }
+    }
+    
+    public void TestGetWeekdays2(){
+        DateFormatSymbols symbol;
+        symbol=new DateFormatSymbols(Locale.getDefault());
+
+        int[] context = {DateFormatSymbols.STANDALONE, DateFormatSymbols.FORMAT};
+        int[] width = {DateFormatSymbols.WIDE, DateFormatSymbols.ABBREVIATED, DateFormatSymbols.NARROW};
+        
+        for (int i = 0; i < context.length; i++) {
+            for (int j = 0; j < width.length; j++) {
+                String[] wd =symbol.getWeekdays(context[i],width[j]);
+                int cnt = wd.length;
+
+                logln("size = " + cnt);
+
+                for (int k = 0; k < wd.length; k++) {
+                    logln(wd[k]);
+                }
+            }
+        }
+        
+    }
+    
+    public void TestGetEraNames(){
+        DateFormatSymbols symbol;
+        symbol=new DateFormatSymbols(Locale.getDefault());
+        String[] s = symbol.getEraNames();
+        for (int i = 0; i < s.length; i++) {
+            logln(s[i]);
+        }
+        
+    }
+
+    // Test the API of DateFormatSymbols; primarily a simple get/set set.
+    public void TestSymbols()
+    {
+        DateFormatSymbols fr = new DateFormatSymbols(Locale.FRENCH);
+        DateFormatSymbols fr2 = new DateFormatSymbols(Locale.FRENCH);
+
+        DateFormatSymbols en = new DateFormatSymbols(Locale.ENGLISH);
+
+        if(en.equals(fr)) {
+            errln("ERROR: English DateFormatSymbols equal to French");
+        }
+
+        // just do some VERY basic tests to make sure that get/set work
+
+        long count;
+        final String[] eras = en.getEras();
+        fr.setEras(eras);
+        final String[] eras1 = fr.getEras();
+        count = eras.length;
+        if( count != eras1.length) {
+            errln("ERROR: setEras() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! eras[i].equals(eras1[i])) {
+                    errln("ERROR: setEras() failed (different string values)");
+                }
+            }
+        }
+
+
+        final String[] months = en.getMonths();
+        fr.setMonths(months);
+        final String[] months1 = fr.getMonths();
+        count = months.length;
+        if( count != months1.length) {
+            errln("ERROR: setMonths() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! months[i].equals(months1[i])) {
+                    errln("ERROR: setMonths() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] shortMonths = en.getShortMonths();
+        fr.setShortMonths(shortMonths);
+        final String[] shortMonths1 = fr.getShortMonths();
+        count = shortMonths.length;
+        if( count != shortMonths1.length) {
+            errln("ERROR: setShortMonths() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! shortMonths[i].equals(shortMonths1[i])) {
+                    errln("ERROR: setShortMonths() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] wideMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        fr2.setMonths(wideMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        final String[] wideMonths1 = fr2.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        count = wideMonths.length;
+        if( count != wideMonths1.length) {
+            errln("ERROR: setMonths(FORMAT,WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! wideMonths[i].equals(wideMonths1[i])) {
+                    errln("ERROR: setMonths(FORMAT,WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] abbrMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        fr2.setMonths(abbrMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        final String[] abbrMonths1 = fr2.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        count = abbrMonths.length;
+        if( count != abbrMonths1.length) {
+            errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! abbrMonths[i].equals(abbrMonths1[i])) {
+                    errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] narrowMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        fr.setMonths(narrowMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        final String[] narrowMonths1 = fr.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        count = narrowMonths.length;
+        if( count != narrowMonths1.length) {
+            errln("ERROR: setMonths(FORMAT,NARROW) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! narrowMonths[i].equals(narrowMonths1[i])) {
+                    errln("ERROR: setMonths(FORMAT,NARROW) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        fr.setMonths(standaloneMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        final String[] standaloneMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        count = standaloneMonths.length;
+        if( count != standaloneMonths1.length) {
+            errln("ERROR: setMonths(STANDALONE,WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneMonths[i].equals(standaloneMonths1[i])) {
+                    errln("ERROR: setMonths(STANDALONE,WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneShortMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        fr.setMonths(standaloneShortMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        final String[] standaloneShortMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        count = standaloneShortMonths.length;
+        if( count != standaloneShortMonths1.length) {
+            errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneShortMonths[i].equals(standaloneShortMonths1[i])) {
+                    errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneNarrowMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        fr.setMonths(standaloneNarrowMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        final String[] standaloneNarrowMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        count = standaloneNarrowMonths.length;
+        if( count != standaloneNarrowMonths1.length) {
+            errln("ERROR: setMonths(STANDALONE,NARROW) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneNarrowMonths[i].equals(standaloneNarrowMonths1[i])) {
+                    errln("ERROR: setMonths(STANDALONE,NARROW) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] weekdays = en.getWeekdays();
+        fr.setWeekdays(weekdays);
+        final String[] weekdays1 = fr.getWeekdays();
+        count = weekdays.length;
+        if( count != weekdays1.length) {
+            errln("ERROR: setWeekdays() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! weekdays[i].equals(weekdays1[i])) {
+                    errln("ERROR: setWeekdays() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] shortWeekdays = en.getShortWeekdays();
+        fr.setShortWeekdays(shortWeekdays);
+        final String[] shortWeekdays1 = fr.getShortWeekdays();
+        count = shortWeekdays.length;
+        if( count != shortWeekdays1.length) {
+            errln("ERROR: setShortWeekdays() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! shortWeekdays[i].equals(shortWeekdays1[i])) {
+                    errln("ERROR: setShortWeekdays() failed (different string values)");
+                }
+            }
+        }
+
+        final String[] wideWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        fr2.setWeekdays(wideWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        final String[] wideWeekdays1 = fr2.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        count = wideWeekdays.length;
+        if( count != wideWeekdays1.length) {
+            errln("ERROR: setWeekdays(FORMAT,WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! wideWeekdays[i].equals(wideWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(FORMAT,WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] abbrWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        fr2.setWeekdays(abbrWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        final String[] abbrWeekdays1 = fr2.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        count = abbrWeekdays.length;
+        if( count != abbrWeekdays1.length) {
+            errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! abbrWeekdays[i].equals(abbrWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] narrowWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        fr.setWeekdays(narrowWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        final String[] narrowWeekdays1 = fr.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW);
+        count = narrowWeekdays.length;
+        if( count != narrowWeekdays1.length) {
+            errln("ERROR: setWeekdays(FORMAT,NARROW) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! narrowWeekdays[i].equals(narrowWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(FORMAT,NARROW) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        fr.setWeekdays(standaloneWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        final String[] standaloneWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        count = standaloneWeekdays.length;
+        if( count != standaloneWeekdays1.length) {
+            errln("ERROR: setWeekdays(STANDALONE,WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneWeekdays[i].equals(standaloneWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(STANDALONE,WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneShortWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        fr.setWeekdays(standaloneShortWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        final String[] standaloneShortWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        count = standaloneShortWeekdays.length;
+        if( count != standaloneShortWeekdays1.length) {
+            errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneShortWeekdays[i].equals(standaloneShortWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneNarrowWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        fr.setWeekdays(standaloneNarrowWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        final String[] standaloneNarrowWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW);
+        count = standaloneNarrowWeekdays.length;
+        if( count != standaloneNarrowWeekdays1.length) {
+            errln("ERROR: setWeekdays(STANDALONE,NARROW) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneNarrowWeekdays[i].equals(standaloneNarrowWeekdays1[i])) {
+                    errln("ERROR: setWeekdays(STANDALONE,NARROW) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] wideQuarters = en.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        fr2.setQuarters(wideQuarters,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        final String[] wideQuarters1 = fr2.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE);
+        count = wideQuarters.length;
+        if( count != wideQuarters1.length) {
+            errln("ERROR: setQuarters(FORMAT, WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! wideQuarters[i].equals(wideQuarters1[i])) {
+                    errln("ERROR: setQuarters(FORMAT, WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] abbrQuarters = en.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        fr2.setQuarters(abbrQuarters,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        final String[] abbrQuarters1 = fr2.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED);
+        count = abbrQuarters.length;
+        if( count != abbrQuarters1.length) {
+            errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! abbrQuarters[i].equals(abbrQuarters1[i])) {
+                    errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneQuarters = en.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        fr.setQuarters(standaloneQuarters,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        final String[] standaloneQuarters1 = fr.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE);
+        count = standaloneQuarters.length;
+        if( count != standaloneQuarters1.length) {
+            errln("ERROR: setQuarters(STANDALONE, WIDE) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneQuarters[i].equals(standaloneQuarters1[i])) {
+                    errln("ERROR: setQuarters(STANDALONE, WIDE) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] standaloneShortQuarters = en.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        fr.setQuarters(standaloneShortQuarters,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        final String[] standaloneShortQuarters1 = fr.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED);
+        count = standaloneShortQuarters.length;
+        if( count != standaloneShortQuarters1.length) {
+            errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! standaloneShortQuarters[i].equals(standaloneShortQuarters1[i])) {
+                    errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed (different string values)");
+                }
+            }
+        }
+
+        final String[] ampms = en.getAmPmStrings();
+        fr.setAmPmStrings(ampms);
+        final String[] ampms1 = fr.getAmPmStrings();
+        count = ampms.length;
+        if( count != ampms1.length) {
+            errln("ERROR: setAmPmStrings() failed (different size array)");
+        }
+        else {
+            for(int i = 0; i < count; i++) {
+                if(! ampms[i].equals(ampms1[i])) {
+                    errln("ERROR: setAmPmStrings() failed (different string values)");
+                }
+            }
+        }
+
+        long rowCount = 0, columnCount = 0;
+        final String[][] strings = en.getZoneStrings();
+        fr.setZoneStrings(strings);
+        final String[][] strings1 = fr.getZoneStrings();
+        rowCount = strings.length;
+        for(int i = 0; i < rowCount; i++) {
+            columnCount = strings[i].length;
+            for(int j = 0; j < columnCount; j++) {
+                if( strings[i][j] != strings1[i][j] ) {
+                    errln("ERROR: setZoneStrings() failed");
+                }
+            }
+        }
+
+//        final String pattern = DateFormatSymbols.getPatternChars();
+
+        String localPattern; // pat1, pat2; //The variable is never used
+        localPattern = en.getLocalPatternChars();
+        fr.setLocalPatternChars(localPattern);
+        if(! en.getLocalPatternChars().equals(fr.getLocalPatternChars())) {
+            errln("ERROR: setLocalPatternChars() failed");
+        }
+
+
+        //DateFormatSymbols foo = new DateFormatSymbols(); //The variable is never used
+
+        en = (DateFormatSymbols) fr.clone();
+
+        if(! en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
new file mode 100644
index 0000000..1a1a987
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
@@ -0,0 +1,292 @@
+//##header J2SE15
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2009, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDecimalFormatAPI
+ * Source File: java/text/format/IntlTestDecimalFormatAPI.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Decimal Format API
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.math.BigDecimal;
+import java.util.Locale;
+import java.text.ParsePosition;
+import java.text.Format;
+import java.text.FieldPosition;
+
+public class IntlTestDecimalFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDecimalFormatAPI().run(args);
+    }
+    
+    /**
+     * Problem 1: simply running 
+     * decF4.setRoundingMode(java.math.BigDecimal.ROUND_HALF_UP) does not work 
+     * as decF4.setRoundingIncrement(.0001) must also be run.
+     * Problem 2: decF4.format(8.88885) does not return 8.8889 as expected. 
+     * You must run decF4.format(new BigDecimal(Double.valueOf(8.88885))) in 
+     * order for this to work as expected.
+     * Problem 3: There seems to be no way to set half up to be the default 
+     * rounding mode.
+     * We solved the problem with the code at the bottom of this page however 
+     * this is not quite general purpose enough to include in icu4j. A static
+     * setDefaultRoundingMode function would solve the problem nicely. Also 
+     * decimal places past 20 are not handled properly. A small ammount of work 
+     * would make bring this up to snuff.
+     */
+    public void testJB1871()
+    {
+        // problem 2
+        double number = 8.88885;
+        String expected = "8.8889";
+        
+        String pat = ",##0.0000";
+        DecimalFormat dec = new DecimalFormat(pat);
+        dec.setRoundingMode(BigDecimal.ROUND_HALF_UP);
+        double roundinginc = 0.0001;
+        dec.setRoundingIncrement(roundinginc);
+        String str = dec.format(number);
+        if (!str.equals(expected)) {
+            errln("Fail: " + number + " x \"" + pat + "\" = \"" +
+                  str + "\", expected \"" + expected + "\"");
+        }   
+
+        pat = ",##0.0001";
+        dec = new DecimalFormat(pat);
+        dec.setRoundingMode(BigDecimal.ROUND_HALF_UP);
+        str = dec.format(number);
+        if (!str.equals(expected)) {
+            errln("Fail: " + number + " x \"" + pat + "\" = \"" +
+                  str + "\", expected \"" + expected + "\"");
+        }  
+        
+        // testing 20 decimal places
+        pat = ",##0.00000000000000000001";
+        dec = new DecimalFormat(pat);
+        BigDecimal bignumber = new BigDecimal("8.888888888888888888885");
+        expected = "8.88888888888888888889";
+        
+        dec.setRoundingMode(BigDecimal.ROUND_HALF_UP);
+        str = dec.format(bignumber); 
+        if (!str.equals(expected)) {
+            errln("Fail: " + bignumber + " x \"" + pat + "\" = \"" +
+                  str + "\", expected \"" + expected + "\"");
+        }   
+        
+    }
+
+    /** 
+     * This test checks various generic API methods in DecimalFormat to achieve 
+     * 100% API coverage.
+     */
+    public void TestAPI()
+    {
+        logln("DecimalFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing DecimalFormat constructors");
+
+        DecimalFormat def = new DecimalFormat();
+
+        final String pattern = new String("#,##0.# FF");
+        DecimalFormat pat = null;
+        try {
+            pat = new DecimalFormat(pattern);
+        }
+        catch (IllegalArgumentException e) {
+            errln("ERROR: Could not create DecimalFormat (pattern)");
+        }
+
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRENCH);
+
+        DecimalFormat cust1 = new DecimalFormat(pattern, symbols);
+
+        // ======= Test clone(), assignment, and equality
+
+        logln("Testing clone() and equality operators");
+
+        Format clone = (Format) def.clone();
+        if( ! def.equals(clone)) {
+            errln("ERROR: Clone() failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+//        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+//        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+        logln("" + d + " is the double value");
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+
+        res1 = def.format(d, res1, pos1);
+        logln("" + d + " formatted to " + res1);
+
+        res2 = pat.format(l, res2, pos2);
+        logln("" + l + " formatted to " + res2);
+
+        res3 = cust1.format(d, res3, pos3);
+        logln("" + d + " formatted to " + res3);
+
+        res4 = cust1.format(l, res4, pos4);
+        logln("" + l + " formatted to " + res4);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("-10,456.0037");
+        ParsePosition pos = new ParsePosition(0);
+        String patt = new String("#,##0.#");
+        pat.applyPattern(patt);
+        double d2 = pat.parse(text, pos).doubleValue();
+        if(d2 != d) {
+            errln("ERROR: Roundtrip failed (via parse(" + d2 + " != " + d + ")) for " + text);
+        }
+        logln(text + " parsed into " + (long) d2);
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final DecimalFormatSymbols syms = pat.getDecimalFormatSymbols();
+        def.setDecimalFormatSymbols(syms);
+        if( ! pat.getDecimalFormatSymbols().equals(def.getDecimalFormatSymbols())) {
+            errln("ERROR: set DecimalFormatSymbols() failed");
+        }
+
+        String posPrefix;
+        pat.setPositivePrefix("+");
+        posPrefix = pat.getPositivePrefix();
+        logln("Positive prefix (should be +): " + posPrefix);
+        if(posPrefix != "+") {
+            errln("ERROR: setPositivePrefix() failed");
+        }
+
+        String negPrefix;
+        pat.setNegativePrefix("-");
+        negPrefix = pat.getNegativePrefix();
+        logln("Negative prefix (should be -): " + negPrefix);
+        if(negPrefix != "-") {
+            errln("ERROR: setNegativePrefix() failed");
+        }
+
+        String posSuffix;
+        pat.setPositiveSuffix("_");
+        posSuffix = pat.getPositiveSuffix();
+        logln("Positive suffix (should be _): " + posSuffix);
+        if(posSuffix != "_") {
+            errln("ERROR: setPositiveSuffix() failed");
+        }
+
+        String negSuffix;
+        pat.setNegativeSuffix("~");
+        negSuffix = pat.getNegativeSuffix();
+        logln("Negative suffix (should be ~): " + negSuffix);
+        if(negSuffix != "~") {
+            errln("ERROR: setNegativeSuffix() failed");
+        }
+
+        long multiplier = 0;
+        pat.setMultiplier(8);
+        multiplier = pat.getMultiplier();
+        logln("Multiplier (should be 8): " + multiplier);
+        if(multiplier != 8) {
+            errln("ERROR: setMultiplier() failed");
+        }
+
+        int groupingSize = 0;
+        pat.setGroupingSize(2);
+        groupingSize = pat.getGroupingSize();
+        logln("Grouping size (should be 2): " + (long) groupingSize);
+        if(groupingSize != 2) {
+            errln("ERROR: setGroupingSize() failed");
+        }
+
+        pat.setDecimalSeparatorAlwaysShown(true);
+        boolean tf = pat.isDecimalSeparatorAlwaysShown();
+        logln("DecimalSeparatorIsAlwaysShown (should be true) is " +  (tf ? "true" : "false"));
+        if(tf != true) {
+            errln("ERROR: setDecimalSeparatorAlwaysShown() failed");
+        }
+
+        String funkyPat;
+        funkyPat = pat.toPattern();
+        logln("Pattern is " + funkyPat);
+
+        String locPat;
+        locPat = pat.toLocalizedPattern();
+        logln("Localized pattern is " + locPat);
+
+        // ======= Test applyPattern()
+
+        logln("Testing applyPattern()");
+
+        String p1 = new String("#,##0.0#;(#,##0.0#)");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+        String s2;
+        s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if( ! s2.equals(p1) ) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+
+        String p2 = new String("#,##0.0# FF;(#,##0.0# FF)");
+        logln("Applying pattern " + p2);
+        pat.applyLocalizedPattern(p2);
+        String s3;
+        s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if( ! s3.equals(p2) ) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public void testJB6134()
+    {
+        DecimalFormat decfmt = new DecimalFormat();
+        StringBuffer buf = new StringBuffer();
+
+        FieldPosition fposByInt = new FieldPosition(NumberFormat.INTEGER_FIELD);
+        decfmt.format(123, buf, fposByInt);
+
+        buf.setLength(0);
+        FieldPosition fposByField = new FieldPosition(NumberFormat.Field.INTEGER);
+        decfmt.format(123, buf, fposByField);
+
+        if (fposByInt.getEndIndex() != fposByField.getEndIndex())
+        {
+            errln("ERROR: End index for integer field - fposByInt:" + fposByInt.getEndIndex() +
+                " / fposByField: " + fposByField.getEndIndex());
+        }
+    }
+//#endif
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
new file mode 100644
index 0000000..88e3fd8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -0,0 +1,517 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDecimalFormatAPI
+ * Source File: $ICU4CRoot/source/test/intltest/dcfmapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.AttributedCharacterIterator;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParsePosition;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Vector;
+
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.NumberFormat;
+
+// This is an API test, not a unit test.  It doesn't test very many cases, and doesn't
+// try to test the full functionality.  It just calls each function in the class and
+// verifies that it works on a basic level.
+public class IntlTestDecimalFormatAPIC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args)  throws Exception {
+        new IntlTestDecimalFormatAPIC().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI() {
+
+        logln("DecimalFormat API test---");
+        logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing DecimalFormat constructors");
+
+        DecimalFormat def = new DecimalFormat();
+
+        final String pattern = new String("#,##0.# FF");
+        DecimalFormat pat = null;
+        try {
+            pat = new DecimalFormat(pattern);
+        } catch (IllegalArgumentException e) {
+            errln("ERROR: Could not create DecimalFormat (pattern)");
+        }
+
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.FRENCH);
+
+        DecimalFormat cust1 = new DecimalFormat(pattern, symbols);
+
+        // ======= Test clone(), assignment, and equality
+
+        logln("Testing clone() and equality operators");
+
+        Format clone = (Format) def.clone();
+        if (!def.equals(clone)) {
+            errln("ERROR: Clone() failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+        //        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+        //        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+        logln("" + Double.toString(d) + " is the double value");
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+
+        res1 = def.format(d, res1, pos1);
+        logln("" + Double.toString(d) + " formatted to " + res1);
+
+        res2 = pat.format(l, res2, pos2);
+        logln("" + l + " formatted to " + res2);
+
+        res3 = cust1.format(d, res3, pos3);
+        logln("" + Double.toString(d) + " formatted to " + res3);
+
+        res4 = cust1.format(l, res4, pos4);
+        logln("" + l + " formatted to " + res4);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("-10,456.0037");
+        ParsePosition pos = new ParsePosition(0);
+        String patt = new String("#,##0.#");
+        pat.applyPattern(patt);
+        double d2 = pat.parse(text, pos).doubleValue();
+        if (d2 != d) {
+            errln(
+                "ERROR: Roundtrip failed (via parse(" + Double.toString(d2) + " != " + Double.toString(d) + ")) for " + text); 
+        }
+        logln(text + " parsed into " + (long) d2);
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final DecimalFormatSymbols syms = pat.getDecimalFormatSymbols();
+        def.setDecimalFormatSymbols(syms);
+        if (!pat.getDecimalFormatSymbols().equals(def.getDecimalFormatSymbols())) {
+            errln("ERROR: set DecimalFormatSymbols() failed");
+        }
+
+        String posPrefix;
+        pat.setPositivePrefix("+");
+        posPrefix = pat.getPositivePrefix();
+        logln("Positive prefix (should be +): " + posPrefix);
+        if (posPrefix != "+") {
+            errln("ERROR: setPositivePrefix() failed");
+        }
+
+        String negPrefix;
+        pat.setNegativePrefix("-");
+        negPrefix = pat.getNegativePrefix();
+        logln("Negative prefix (should be -): " + negPrefix);
+        if (negPrefix != "-") {
+            errln("ERROR: setNegativePrefix() failed");
+        }
+
+        String posSuffix;
+        pat.setPositiveSuffix("_");
+        posSuffix = pat.getPositiveSuffix();
+        logln("Positive suffix (should be _): " + posSuffix);
+        if (posSuffix != "_") {
+            errln("ERROR: setPositiveSuffix() failed");
+        }
+
+        String negSuffix;
+        pat.setNegativeSuffix("~");
+        negSuffix = pat.getNegativeSuffix();
+        logln("Negative suffix (should be ~): " + negSuffix);
+        if (negSuffix != "~") {
+            errln("ERROR: setNegativeSuffix() failed");
+        }
+
+        long multiplier = 0;
+        pat.setMultiplier(8);
+        multiplier = pat.getMultiplier();
+        logln("Multiplier (should be 8): " + multiplier);
+        if (multiplier != 8) {
+            errln("ERROR: setMultiplier() failed");
+        }
+
+        int groupingSize = 0;
+        pat.setGroupingSize(2);
+        groupingSize = pat.getGroupingSize();
+        logln("Grouping size (should be 2): " + (long) groupingSize);
+        if (groupingSize != 2) {
+            errln("ERROR: setGroupingSize() failed");
+        }
+
+        pat.setDecimalSeparatorAlwaysShown(true);
+        boolean tf = pat.isDecimalSeparatorAlwaysShown();
+        logln(
+            "DecimalSeparatorIsAlwaysShown (should be true) is " + (tf ? "true" : "false")); 
+        if (tf != true) {
+            errln("ERROR: setDecimalSeparatorAlwaysShown() failed");
+        }
+
+        String funkyPat;
+        funkyPat = pat.toPattern();
+        logln("Pattern is " + funkyPat);
+
+        String locPat;
+        locPat = pat.toLocalizedPattern();
+        logln("Localized pattern is " + locPat);
+
+        // ======= Test applyPattern()
+
+        logln("Testing applyPattern()");
+
+        String p1 = new String("#,##0.0#;(#,##0.0#)");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+        String s2;
+        s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if (!s2.equals(p1)) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+
+        String p2 = new String("#,##0.0# FF;(#,##0.0# FF)");
+        logln("Applying pattern " + p2);
+        pat.applyLocalizedPattern(p2);
+        String s3;
+        s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if (!s3.equals(p2)) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+
+        // ======= Test getStaticClassID()
+
+        //        logln("Testing instanceof()");
+
+        //        try {
+        //           NumberFormat test = new DecimalFormat();
+
+        //            if (! (test instanceof DecimalFormat)) {
+        //                errln("ERROR: instanceof failed");
+        //            }
+        //        }
+        //        catch (Exception e) {
+        //            errln("ERROR: Couldn't create a DecimalFormat");
+        //        }
+       
+    }
+
+    public void TestRounding() {
+        double Roundingnumber = 2.55;
+        double Roundingnumber1 = -2.55;
+        //+2.55 results   -2.55 results
+        double result[] = {
+            3, -3,   
+            2, -2, 
+            3, -2, 
+            2, -3, 
+            3, -3, 
+            3, -3, 
+            3, -3 
+        };
+        DecimalFormat pat = new DecimalFormat();
+        String s = "";
+        s = pat.toPattern();
+        logln("pattern = " + s);
+        int mode;
+        int i = 0;
+        String message;
+        String resultStr;
+        for (mode = 0; mode < 7; mode++) {
+            pat.setRoundingMode(mode);
+            if (pat.getRoundingMode() != mode) {
+                errln(
+                     "SetRoundingMode or GetRoundingMode failed for mode=" + mode); 
+            }
+
+            //for +2.55 with RoundingIncrement=1.0
+            pat.setRoundingIncrement(1.0);
+            resultStr = pat.format(Roundingnumber);
+            message = "round(" + (double) Roundingnumber
+                    + "," + mode + ",FALSE) with RoundingIncrement=1.0==>"; 
+            verify(message, resultStr, result[i++]);
+            message = "";
+            resultStr = "";
+
+            //for -2.55 with RoundingIncrement=1.0
+            resultStr = pat.format(Roundingnumber1);
+            message = "round(" + (double) Roundingnumber1
+                    + "," + mode + ",FALSE) with RoundingIncrement=1.0==>"; 
+            verify(message, resultStr, result[i++]);
+            message = "";
+            resultStr = "";
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public void testFormatToCharacterIterator() {
+
+        Number number = new Double(350.76);
+        Number negativeNumber = new Double(-350.76);
+
+        Locale us = Locale.US;
+
+        // test number instance
+        t_Format(1, number, NumberFormat.getNumberInstance(us),
+                getNumberVectorUS());
+
+        // test percent instance
+        t_Format(3, number, NumberFormat.getPercentInstance(us),
+                getPercentVectorUS());
+
+        // test permille pattern
+        DecimalFormat format = new DecimalFormat("###0.##\u2030");
+        t_Format(4, number, format, getPermilleVector());
+
+        // test exponential pattern with positive exponent
+        format = new DecimalFormat("00.0#E0");
+        t_Format(5, number, format, getPositiveExponentVector());
+
+        // test exponential pattern with negative exponent
+        format = new DecimalFormat("0000.0#E0");
+        t_Format(6, number, format, getNegativeExponentVector());
+
+        // test currency instance with US Locale
+        t_Format(7, number, NumberFormat.getCurrencyInstance(us),
+                getPositiveCurrencyVectorUS());
+
+        // test negative currency instance with US Locale
+        t_Format(8, negativeNumber, NumberFormat.getCurrencyInstance(us),
+                getNegativeCurrencyVectorUS());
+
+        // test multiple grouping seperators
+        number = new Long(100300400);
+        t_Format(11, number, NumberFormat.getNumberInstance(us),
+                getNumberVector2US());
+
+        // test 0
+        number = new Long(0);
+        t_Format(12, number, NumberFormat.getNumberInstance(us),
+                getZeroVector());
+    }
+
+    private static Vector getNumberVectorUS() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(3, 4, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(4, 6, NumberFormat.Field.FRACTION));
+        return v;
+    }
+    
+//    private static Vector getPositiveCurrencyVectorTR() {
+//        Vector v = new Vector();
+//        v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER));
+//        v.add(new FieldContainer(4, 6, NumberFormat.Field.CURRENCY));
+//        return v;
+//    }
+//
+//    private static Vector getNegativeCurrencyVectorTR() {
+//        Vector v = new Vector();
+//        v.add(new FieldContainer(0, 1, NumberFormat.Field.SIGN));
+//        v.add(new FieldContainer(1, 4, NumberFormat.Field.INTEGER));
+//        v.add(new FieldContainer(5, 7, NumberFormat.Field.CURRENCY));
+//        return v;
+//    }
+
+    private static Vector getPositiveCurrencyVectorUS() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 1, NumberFormat.Field.CURRENCY));
+        v.add(new FieldContainer(1, 4, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(4, 5, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(5, 7, NumberFormat.Field.FRACTION));
+        return v;
+    }
+
+    private static Vector getNegativeCurrencyVectorUS() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(1, 2, NumberFormat.Field.CURRENCY));
+        v.add(new FieldContainer(2, 5, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(5, 6, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(6, 8, NumberFormat.Field.FRACTION));
+        return v;
+    }
+
+    private static Vector getPercentVectorUS() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 2, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(2, 3, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(2, 3, NumberFormat.Field.GROUPING_SEPARATOR));
+        v.add(new FieldContainer(3, 6, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(6, 7, NumberFormat.Field.PERCENT));
+        return v;
+    }
+
+    private static Vector getPermilleVector() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 6, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(6, 7, NumberFormat.Field.PERMILLE));
+        return v;
+    }
+
+    private static Vector getNegativeExponentVector() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 4, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(4, 5, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(5, 6, NumberFormat.Field.FRACTION));
+        v.add(new FieldContainer(6, 7, NumberFormat.Field.EXPONENT_SYMBOL));
+        v.add(new FieldContainer(7, 8, NumberFormat.Field.EXPONENT_SIGN));
+        v.add(new FieldContainer(8, 9, NumberFormat.Field.EXPONENT));
+        return v;
+    }
+
+    private static Vector getPositiveExponentVector() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 2, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(2, 3, NumberFormat.Field.DECIMAL_SEPARATOR));
+        v.add(new FieldContainer(3, 5, NumberFormat.Field.FRACTION));
+        v.add(new FieldContainer(5, 6, NumberFormat.Field.EXPONENT_SYMBOL));
+        v.add(new FieldContainer(6, 7, NumberFormat.Field.EXPONENT));
+        return v;
+    }
+
+    private static Vector getNumberVector2US() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 3, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(3, 4, NumberFormat.Field.GROUPING_SEPARATOR));
+        v.add(new FieldContainer(3, 4, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(4, 7, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(7, 8, NumberFormat.Field.GROUPING_SEPARATOR));
+        v.add(new FieldContainer(7, 8, NumberFormat.Field.INTEGER));
+        v.add(new FieldContainer(8, 11, NumberFormat.Field.INTEGER));
+        return v;
+    }
+
+    private static Vector getZeroVector() {
+        Vector v = new Vector();
+        v.add(new FieldContainer(0, 1, NumberFormat.Field.INTEGER));
+        return v;
+    }    
+    
+    private void t_Format(int count, Object object, Format format,
+            Vector expectedResults) {
+        Vector results = findFields(format.formatToCharacterIterator(object));
+        assertTrue("Test " + count
+                + ": Format returned incorrect CharacterIterator for "
+                + format.format(object), compare(results, expectedResults));
+    }
+
+    /**
+     * compares two vectors regardless of the order of their elements
+     */
+    private static boolean compare(Vector vector1, Vector vector2) {
+        return vector1.size() == vector2.size() && vector1.containsAll(vector2);
+    }
+    
+    /**
+     * finds attributes with regards to char index in this
+     * AttributedCharacterIterator, and puts them in a vector
+     * 
+     * @param iterator
+     * @return a vector, each entry in this vector are of type FieldContainer ,
+     *         which stores start and end indexes and an attribute this range
+     *         has
+     */
+    private static Vector findFields(AttributedCharacterIterator iterator) {
+        Vector result = new Vector();
+        while (iterator.getIndex() != iterator.getEndIndex()) {
+            int start = iterator.getRunStart();
+            int end = iterator.getRunLimit();
+
+            Iterator it = iterator.getAttributes().keySet().iterator();
+            while (it.hasNext()) {
+                AttributedCharacterIterator.Attribute attribute = (AttributedCharacterIterator.Attribute) it
+                        .next();
+                Object value = iterator.getAttribute(attribute);
+                result.add(new FieldContainer(start, end, attribute, value));
+                // System.out.println(start + " " + end + ": " + attribute + ",
+                // " + value );
+                // System.out.println("v.add(new FieldContainer(" + start +"," +
+                // end +"," + attribute+ "," + value+ "));");
+            }
+            iterator.setIndex(end);
+        }
+        return result;
+    }
+    protected static class FieldContainer {
+        int start, end;
+
+        AttributedCharacterIterator.Attribute attribute;
+
+        Object value;
+
+//         called from support_decimalformat and support_simpledateformat tests
+        public FieldContainer(int start, int end,
+        AttributedCharacterIterator.Attribute attribute) {
+            this(start, end, attribute, attribute);
+        }
+
+//         called from support_messageformat tests
+        public FieldContainer(int start, int end, AttributedCharacterIterator.Attribute attribute, int value) {
+        this(start, end, attribute, new Integer(value));
+        }
+
+//         called from support_messageformat tests
+        public FieldContainer(int start, int end, AttributedCharacterIterator.Attribute attribute,
+        Object value) {
+        this.start = start;
+        this.end = end;
+        this.attribute = attribute;
+        this.value = value;
+        }
+
+        public boolean equals(Object obj) {
+        if (!(obj instanceof FieldContainer))
+        return false;
+
+        FieldContainer fc = (FieldContainer) obj;
+        return (start == fc.start && end == fc.end
+        && attribute == fc.attribute && value.equals(fc.value));
+        }
+    } 
+//#endif
+
+    /*Helper functions */
+    public void verify(String message, String got, double expected) {
+        logln(message + got + " Expected : " + (long)expected);
+        String expectedStr = "";
+        expectedStr=expectedStr + (long)expected;
+        if(!got.equals(expectedStr) ) {
+            errln("ERROR: Round() failed:  " + message + got + "  Expected : " + expectedStr);
+        }
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
new file mode 100644
index 0000000..78b7f7b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
@@ -0,0 +1,164 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2006, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestDecimalFormatSymbols
+ * Source File: java/text/format/IntlTestDecimalFormatSymbols.java
+ **/
+ 
+/*
+    @test 1.4 98/03/06
+    @summary test International Decimal Format Symbols
+*/
+
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.Currency;
+
+import java.util.Locale;
+
+public class IntlTestDecimalFormatSymbols extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestDecimalFormatSymbols().run(args);
+    }
+
+    // Test the API of DecimalFormatSymbols; primarily a simple get/set set.
+    public void TestSymbols()
+    {
+        DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);
+
+        DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
+
+        if(en.equals(fr)) {
+            errln("ERROR: English DecimalFormatSymbols equal to French");
+        }
+
+        // just do some VERY basic tests to make sure that get/set work
+
+        char zero = en.getZeroDigit();
+        fr.setZeroDigit(zero);
+        if(fr.getZeroDigit() != en.getZeroDigit()) {
+            errln("ERROR: get/set ZeroDigit failed");
+        }
+
+        char sigDigit = en.getSignificantDigit();
+        fr.setSignificantDigit(sigDigit); 
+        if(fr.getSignificantDigit() != en.getSignificantDigit()) {
+            errln("ERROR: get/set SignificantDigit failed");
+        }
+
+        Currency currency = Currency.getInstance("USD");
+        fr.setCurrency(currency);
+        if (!fr.getCurrency().equals(currency)){
+            errln("ERROR: get/set Currency failed");
+        }
+            
+        char group = en.getGroupingSeparator();
+        fr.setGroupingSeparator(group);
+        if(fr.getGroupingSeparator() != en.getGroupingSeparator()) {
+            errln("ERROR: get/set GroupingSeparator failed");
+        }
+
+        char decimal = en.getDecimalSeparator();
+        fr.setDecimalSeparator(decimal);
+        if(fr.getDecimalSeparator() != en.getDecimalSeparator()) {
+            errln("ERROR: get/set DecimalSeparator failed");
+        }
+
+        char monetaryGroup = en.getMonetaryGroupingSeparator();
+        fr.setMonetaryGroupingSeparator(monetaryGroup);
+        if(fr.getMonetaryGroupingSeparator() != en.getMonetaryGroupingSeparator()) {
+            errln("ERROR: get/set MonetaryGroupingSeparator failed");
+        }
+
+        char monetaryDecimal = en.getMonetaryDecimalSeparator();
+        fr.setMonetaryDecimalSeparator(monetaryDecimal);
+        if(fr.getMonetaryDecimalSeparator() != en.getMonetaryDecimalSeparator()) {
+            errln("ERROR: get/set MonetaryDecimalSeparator failed");
+        }
+
+        char perMill = en.getPerMill();
+        fr.setPerMill(perMill);
+        if(fr.getPerMill() != en.getPerMill()) {
+            errln("ERROR: get/set PerMill failed");
+        }
+
+        char percent = en.getPercent();
+        fr.setPercent(percent);
+        if(fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+
+        char digit = en.getDigit();
+        fr.setDigit(digit);
+        if(fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+
+        char patternSeparator = en.getPatternSeparator();
+        fr.setPatternSeparator(patternSeparator);
+        if(fr.getPatternSeparator() != en.getPatternSeparator()) {
+            errln("ERROR: get/set PatternSeparator failed");
+        }
+
+        String infinity = en.getInfinity();
+        fr.setInfinity(infinity);
+        String infinity2 = fr.getInfinity();
+        if(! infinity.equals(infinity2)) {
+            errln("ERROR: get/set Infinity failed");
+        }
+
+        String nan = en.getNaN();
+        fr.setNaN(nan);
+        String nan2 = fr.getNaN();
+        if(! nan.equals(nan2)) {
+            errln("ERROR: get/set NaN failed");
+        }
+
+        char minusSign = en.getMinusSign();
+        fr.setMinusSign(minusSign);
+        if(fr.getMinusSign() != en.getMinusSign()) {
+            errln("ERROR: get/set MinusSign failed");
+        }
+
+        char plusSign = en.getPlusSign();
+        fr.setPlusSign(plusSign);
+        if(fr.getPlusSign() != en.getPlusSign()) {
+            errln("ERROR: get/set PlusSign failed");
+        }
+
+        char padEscape = en.getPadEscape();
+        fr.setPadEscape(padEscape);
+        if(fr.getPadEscape() != en.getPadEscape()) {
+            errln("ERROR: get/set PadEscape failed");
+        }
+
+        String exponential = en.getExponentSeparator();
+        fr.setExponentSeparator(exponential);
+        if(fr.getExponentSeparator() != en.getExponentSeparator()) {
+            errln("ERROR: get/set Exponential failed");
+        }
+
+        //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
+
+        en = (DecimalFormatSymbols) fr.clone();
+
+        if(! en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+    }
+    
+    public void testCoverage() {
+        DecimalFormatSymbols df = new DecimalFormatSymbols();
+        DecimalFormatSymbols df2 = (DecimalFormatSymbols)df.clone();
+        if (!df.equals(df2) || df.hashCode() != df2.hashCode()) {
+            errln("decimal format symbols clone, equals, or hashCode failed");            
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
new file mode 100644
index 0000000..7f782a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
@@ -0,0 +1,141 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestDecimalFormatSymbols
+ * Source File: $ICU4CRoot/source/test/intltest/tsdcfmsy.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.FieldPosition;
+import java.util.Locale;
+import com.ibm.icu.text.*;
+
+/**
+ * Tests for DecimalFormatSymbols
+ **/
+public class IntlTestDecimalFormatSymbolsC extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new IntlTestDecimalFormatSymbolsC().run(args);
+    }
+
+    /**
+     * Test the API of DecimalFormatSymbols; primarily a simple get/set set.
+     */
+    public void TestSymbols() {    
+        DecimalFormatSymbols fr = new DecimalFormatSymbols(Locale.FRENCH);    
+        DecimalFormatSymbols en = new DecimalFormatSymbols(Locale.ENGLISH);
+    
+        if (en.equals(fr)) {
+            errln("ERROR: English DecimalFormatSymbols equal to French");
+        }
+    
+        // just do some VERY basic tests to make sure that get/set work
+    
+        char zero = en.getZeroDigit();
+        fr.setZeroDigit(zero);
+        if (fr.getZeroDigit() != en.getZeroDigit()) {
+            errln("ERROR: get/set ZeroDigit failed");
+        }
+    
+        char group = en.getGroupingSeparator();
+        fr.setGroupingSeparator(group);
+        if (fr.getGroupingSeparator() != en.getGroupingSeparator()) {
+            errln("ERROR: get/set GroupingSeparator failed");
+        }
+    
+        char decimal = en.getDecimalSeparator();
+        fr.setDecimalSeparator(decimal);
+        if (fr.getDecimalSeparator() != en.getDecimalSeparator()) {
+            errln("ERROR: get/set DecimalSeparator failed");
+        }
+    
+        char perMill = en.getPerMill();
+        fr.setPerMill(perMill);
+        if (fr.getPerMill() != en.getPerMill()) {
+            errln("ERROR: get/set PerMill failed");
+        }
+    
+        char percent = en.getPercent();
+        fr.setPercent(percent);
+        if (fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+    
+        char digit = en.getDigit();
+        fr.setDigit(digit);
+        if (fr.getPercent() != en.getPercent()) {
+            errln("ERROR: get/set Percent failed");
+        }
+    
+        char patternSeparator = en.getPatternSeparator();
+        fr.setPatternSeparator(patternSeparator);
+        if (fr.getPatternSeparator() != en.getPatternSeparator()) {
+            errln("ERROR: get/set PatternSeparator failed");
+        }
+    
+        String infinity = en.getInfinity();
+        fr.setInfinity(infinity);
+        String infinity2 = fr.getInfinity();
+        if (!infinity.equals(infinity2)) {
+            errln("ERROR: get/set Infinity failed");
+        }
+    
+        String nan = en.getNaN();
+        fr.setNaN(nan);
+        String nan2 = fr.getNaN();
+        if (!nan.equals(nan2)) {
+            errln("ERROR: get/set NaN failed");
+        }
+    
+        char minusSign = en.getMinusSign();
+        fr.setMinusSign(minusSign);
+        if (fr.getMinusSign() != en.getMinusSign()) {
+            errln("ERROR: get/set MinusSign failed");
+        }
+    
+        //        char exponential = en.getExponentialSymbol();
+        //        fr.setExponentialSymbol(exponential);
+        //        if(fr.getExponentialSymbol() != en.getExponentialSymbol()) {
+        //            errln("ERROR: get/set Exponential failed");
+        //        }
+    
+        //DecimalFormatSymbols foo = new DecimalFormatSymbols(); //The variable is never used
+    
+        en = (DecimalFormatSymbols) fr.clone();
+    
+        if (!en.equals(fr)) {
+            errln("ERROR: Clone failed");
+        }
+        
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+    
+        verify(34.5, "00.00", sym, "34.50");
+        sym.setDecimalSeparator('S');
+        verify(34.5, "00.00", sym, "34S50");
+        sym.setPercent('P');
+        verify(34.5, "00 %", sym, "3450 P");
+        sym.setCurrencySymbol("D");
+        verify(34.5, "\u00a4##.##", sym, "D34.5");
+        sym.setGroupingSeparator('|');
+        verify(3456.5, "0,000.##", sym, "3|456S5");
+    }
+    
+    /** helper functions**/
+    public void verify(double value, String pattern, DecimalFormatSymbols sym, String expected) {
+        DecimalFormat df = new DecimalFormat(pattern, sym);
+        StringBuffer buffer = new StringBuffer("");
+        FieldPosition pos = new FieldPosition(-1);
+        buffer = df.format(value, buffer, pos);
+        if(!buffer.toString().equals(expected)){
+            errln("ERROR: format failed after setSymbols()\n Expected" + 
+                expected + ", Got " + buffer);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
new file mode 100644
index 0000000..366278d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
@@ -0,0 +1,288 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : IntlTestNumberFormat
+ * Source File: $ICU4CRoot/source/test/intltest/tsnmfmt.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+import java.util.Locale;
+import java.util.Random;
+
+import com.ibm.icu.text.*;
+
+/**
+ * This test does round-trip testing (format -> parse -> format -> parse -> etc.) of
+ * NumberFormat.
+ */
+public class IntlTestNumberFormat extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public NumberFormat fNumberFormat;
+
+    public static void main(String[] args) throws Exception {
+        new IntlTestNumberFormat().run(args);
+    }
+    
+    /**
+     * Internal use
+     */
+    public void _testLocale(Locale locale) {
+        String localeName = locale + " (" + locale.getDisplayName() + ")";
+            
+        logln("Number test " + localeName);
+        fNumberFormat = NumberFormat.getInstance(locale);
+        _testFormat();
+    
+        logln("Currency test " + localeName);
+        fNumberFormat = NumberFormat.getCurrencyInstance(locale);
+        _testFormat();
+    
+        logln("Percent test " + localeName);
+        fNumberFormat = NumberFormat.getPercentInstance(locale);
+        _testFormat();
+    }
+    
+    /**
+     * call _testFormat for currency, percent and plain number instances
+     */
+    public void TestLocale() {
+        Locale locale = Locale.getDefault();
+        String localeName = locale + " (" + locale.getDisplayName() + ")";
+            
+        logln("Number test " + localeName);
+        fNumberFormat = NumberFormat.getInstance(locale);
+        _testFormat();
+    
+        logln("Currency test " + localeName);
+        fNumberFormat = NumberFormat.getCurrencyInstance(locale);
+        _testFormat();
+    
+        logln("Percent test " + localeName);
+        fNumberFormat = NumberFormat.getPercentInstance(locale);
+        _testFormat();
+    }
+    
+    /**
+     * call tryIt with many variations, called by testLocale
+     */
+    public void _testFormat() {
+        
+        if (fNumberFormat == null){
+            errln("**** FAIL: Null format returned by createXxxInstance.");
+             return;
+        }
+        DecimalFormat s = (DecimalFormat)fNumberFormat;
+        logln("pattern :" + s.toPattern());
+    
+        tryIt(-2.02147304840132e-68);
+        tryIt(3.88057859588817e-68); 
+        tryIt(-2.64651110485945e+65);
+        tryIt(9.29526819488338e+64);
+    
+        tryIt(-2.02147304840132e-100);
+        tryIt(3.88057859588817e-096); 
+        tryIt(-2.64651110485945e+306);
+        tryIt(9.29526819488338e+250); 
+    
+        tryIt(-9.18228054496402e+64);
+        tryIt(-9.69413034454191e+64);
+    
+        tryIt(-9.18228054496402e+255);
+        tryIt(-9.69413034454191e+273);
+    
+    
+        tryIt(1.234e-200);
+        tryIt(-2.3e-168);
+    
+        tryIt(Double.NaN);
+        tryIt(Double.POSITIVE_INFINITY);
+        tryIt(Double.NEGATIVE_INFINITY);
+    
+        tryIt(251887531);
+        tryIt(5e-20 / 9);
+        tryIt(5e20 / 9);
+        tryIt(1.234e-50);
+        tryIt(9.99999999999996);
+        tryIt(9.999999999999996);
+    
+        tryIt(Integer.MIN_VALUE);
+        tryIt(Integer.MAX_VALUE);
+        tryIt((double)Integer.MIN_VALUE);
+        tryIt((double)Integer.MAX_VALUE);
+        tryIt((double)Integer.MIN_VALUE - 1.0);
+        tryIt((double)Integer.MAX_VALUE + 1.0);
+    
+        tryIt(5.0 / 9.0 * 1e-20);
+        tryIt(4.0 / 9.0 * 1e-20);
+        tryIt(5.0 / 9.0 * 1e+20);
+        tryIt(4.0 / 9.0 * 1e+20);
+    
+        tryIt(2147483647.);
+        tryIt(0);
+        tryIt(0.0);
+        tryIt(1);
+        tryIt(10);
+        tryIt(100);
+        tryIt(-1);
+        tryIt(-10);
+        tryIt(-100);
+        tryIt(-1913860352);
+    
+        Random random = createRandom(); // use test framework's random seed
+        for (int j = 0; j < 10; j++) {
+            double d = random.nextDouble()*2e10 - 1e10;
+            tryIt(d);
+            
+        }
+    }
+    
+    /**
+     * Perform tests using aNumber and fNumberFormat, called in many variations
+     */
+    public void tryIt(double aNumber) {    
+        final int DEPTH = 10;
+        double[] number = new double[DEPTH];
+        String[] string = new String[DEPTH];
+        int numberMatch = 0;
+        int stringMatch = 0;
+        boolean dump = false;
+        int i;
+    
+        for (i = 0; i < DEPTH; i++) {
+            if (i == 0) {
+                number[i] = aNumber;
+            } else {
+                try {
+                    number[i - 1] = fNumberFormat.parse(string[i - 1]).doubleValue();
+                } catch(java.text.ParseException pe) {
+                    errln("**** FAIL: Parse of " + string[i-1] + " failed.");
+                    dump = true;
+                    break;
+                }
+            }
+    
+            string[i] = fNumberFormat.format(number[i]);
+            if (i > 0)
+            {
+                if (numberMatch == 0 && number[i] == number[i-1])
+                    numberMatch = i;
+                else if (numberMatch > 0 && number[i] != number[i-1])
+                {
+                    errln("**** FAIL: Numeric mismatch after match.");
+                    dump = true;
+                    break;
+                }
+                if (stringMatch == 0 && string[i] == string[i-1])
+                    stringMatch = i;
+                else if (stringMatch > 0 && string[i] != string[i-1])
+                {
+                    errln("**** FAIL: String mismatch after match.");
+                    dump = true;
+                    break;
+                }
+            }
+            if (numberMatch > 0 && stringMatch > 0)
+                break;
+    
+            if (i == DEPTH)
+            --i;
+    
+        if (stringMatch > 2 || numberMatch > 2)
+        {
+            errln("**** FAIL: No string and/or number match within 2 iterations.");
+            dump = true;
+        }
+    
+        if (dump)
+        {
+            for (int k=0; k<=i; ++k)
+            {
+                logln(k + ": " + number[k] + " F> " +
+                      string[k] + " P> ");
+            }
+        }
+        }
+    }
+    
+    /**
+     *  perform tests using aNumber and fNumberFormat, called in many variations
+     **/
+    public void tryIt(int aNumber) {
+        long number;
+        
+        String stringNum = fNumberFormat.format(aNumber);
+        try {
+            number = fNumberFormat.parse(stringNum).longValue();
+        } catch (java.text.ParseException pe) {
+            errln("**** FAIL: Parse of " + stringNum + " failed.");
+            return;
+        }
+    
+        if (number != aNumber) {
+            errln("**** FAIL: Parse of " + stringNum + " failed. Got:" + number
+                + " Expected:" + aNumber);
+        }
+        
+    }
+    
+    /**
+     *  test NumberFormat::getAvailableLocales
+     **/
+    public void TestAvailableLocales() {
+        final Locale[] locales = NumberFormat.getAvailableLocales();
+        int count = locales.length;
+        logln(count + " available locales");
+        if (count != 0)
+        {
+            String all = "";
+            for (int i = 0; i< count; ++i)
+            {
+                if (i!=0)
+                    all += ", ";
+                all += locales[i].getDisplayName();
+            }
+            logln(all);
+        }
+        else
+            errln("**** FAIL: Zero available locales or null array pointer");
+    }
+    
+    /**
+     *  call testLocale for all locales
+     **/    
+    public void TestMonster() {
+        final String SEP = "============================================================\n";
+        int count;
+        final Locale[] allLocales = NumberFormat.getAvailableLocales();
+        Locale[] locales = allLocales;
+        count = locales.length;
+        if (count != 0)
+        {
+            if (getInclusion() < 10 && count > 6) {
+                count = 6;
+                locales = new Locale[6];
+                locales[0] = allLocales[0];
+                locales[1] = allLocales[1];
+                locales[2] = allLocales[2];
+                // In a quick test, make sure we test locales that use
+                // currency prefix, currency suffix, and choice currency
+                // logic.  Otherwise bugs in these areas can slip through.
+                locales[3] = new Locale("ar", "AE", "");
+                locales[4] = new Locale("cs", "CZ", "");
+                locales[5] = new Locale("en", "IN", "");
+            }
+            for (int i=0; i<count; ++i)
+            {
+                logln(SEP);
+                _testLocale(locales[i]);
+            }
+        }
+    
+        logln(SEP);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
new file mode 100644
index 0000000..386b0e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
@@ -0,0 +1,231 @@
+//##header J2SE15
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ **/
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestNumberFormatAPI
+ * Source File: java/text/format/IntlTestNumberFormatAPI.java
+ **/
+
+/*
+    @test 1.4 98/03/06
+    @summary test International Number Format API
+*/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Locale;
+
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.text.ParseException;
+
+public class IntlTestNumberFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestNumberFormatAPI().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("NumberFormat API test---"); logln("");
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing NumberFormat constructors");
+
+        NumberFormat def = NumberFormat.getInstance();
+
+        NumberFormat fr = NumberFormat.getInstance(Locale.FRENCH);
+
+        NumberFormat cur = NumberFormat.getCurrencyInstance();
+
+        NumberFormat cur_fr = NumberFormat.getCurrencyInstance(Locale.FRENCH);
+
+        NumberFormat per = NumberFormat.getPercentInstance();
+
+        NumberFormat per_fr = NumberFormat.getPercentInstance(Locale.FRENCH);
+        
+        NumberFormat integer = NumberFormat.getIntegerInstance();
+        
+        NumberFormat int_fr = NumberFormat.getIntegerInstance(Locale.FRENCH);
+        
+        //Fix "The variable is never used" compilation warnings
+        logln("Currency : " + cur.format(1234.5));
+        logln("Percent : " + per.format(1234.5));
+        logln("Integer : " + integer.format(1234.5));
+        logln("Int_fr : " + int_fr.format(1234.5));
+        
+        // ======= Test equality
+
+        logln("Testing equality operator");
+
+        if( per_fr.equals(cur_fr) ) {
+            errln("ERROR: == failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+//        final double d = -10456.0037; // this appears as -10456.003700000001 on NT
+//        final double d = -1.04560037e-4; // this appears as -1.0456003700000002E-4 on NT
+        final double d = -10456.00370000000000; // this works!
+        final long l = 100000000;
+
+        String res1 = new String();
+        String res2 = new String();
+        StringBuffer res3 = new StringBuffer();
+        StringBuffer res4 = new StringBuffer();
+        StringBuffer res5 = new StringBuffer();
+        StringBuffer res6 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+        FieldPosition pos3 = new FieldPosition(0);
+        FieldPosition pos4 = new FieldPosition(0);
+
+        res1 = cur_fr.format(d);
+        logln( "" + d + " formatted to " + res1);
+
+        res2 = cur_fr.format(l);
+        logln("" + l + " formatted to " + res2);
+
+        res3 = cur_fr.format(d, res3, pos1);
+        logln( "" + d + " formatted to " + res3);
+
+        res4 = cur_fr.format(l, res4, pos2);
+        logln("" + l + " formatted to " + res4);
+
+        res5 = cur_fr.format(d, res5, pos3);
+        logln("" + d + " formatted to " + res5);
+
+        res6 = cur_fr.format(l, res6, pos4);
+        logln("" + l + " formatted to " + res6);
+
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+//        String text = new String("-10,456.0037");
+        String text = new String("-10456,0037");
+        ParsePosition pos = new ParsePosition(0);
+        ParsePosition pos01 = new ParsePosition(0);
+        double d1 = ((Number)fr.parseObject(text, pos)).doubleValue();
+        if(d1 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d1);
+
+        double d2 = fr.parse(text, pos01).doubleValue();
+        if(d2 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d2);
+
+        double d3 = 0;
+        try {
+            d3 = fr.parse(text).doubleValue();
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        if(d3 != d) {
+            errln("ERROR: Roundtrip failed (via parse()) for " + text);
+        }
+        logln(text + " parsed into " + d3);
+
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final Locale[] locales = NumberFormat.getAvailableLocales();
+        long count = locales.length;
+        logln("Got " + count + " locales" );
+        for(int i = 0; i < count; i++) {
+            String name;
+            name = locales[i].getDisplayName();
+            logln(name);
+        }
+
+        fr.setParseIntegerOnly( def.isParseIntegerOnly() );
+        if(fr.isParseIntegerOnly() != def.isParseIntegerOnly() ) {
+                errln("ERROR: setParseIntegerOnly() failed");
+        }
+
+        fr.setGroupingUsed( def.isGroupingUsed() );
+        if(fr.isGroupingUsed() != def.isGroupingUsed() ) {
+                errln("ERROR: setGroupingUsed() failed");
+        }
+
+        fr.setMaximumIntegerDigits( def.getMaximumIntegerDigits() );
+        if(fr.getMaximumIntegerDigits() != def.getMaximumIntegerDigits() ) {
+                errln("ERROR: setMaximumIntegerDigits() failed");
+        }
+
+        fr.setMinimumIntegerDigits( def.getMinimumIntegerDigits() );
+        if(fr.getMinimumIntegerDigits() != def.getMinimumIntegerDigits() ) {
+                errln("ERROR: setMinimumIntegerDigits() failed");
+        }
+
+        fr.setMaximumFractionDigits( def.getMaximumFractionDigits() );
+        if(fr.getMaximumFractionDigits() != def.getMaximumFractionDigits() ) {
+                errln("ERROR: setMaximumFractionDigits() failed");
+        }
+
+        fr.setMinimumFractionDigits( def.getMinimumFractionDigits() );
+        if(fr.getMinimumFractionDigits() != def.getMinimumFractionDigits() ) {
+                errln("ERROR: setMinimumFractionDigits() failed");
+        }
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof()");
+
+//        try {
+//            NumberFormat test = new DecimalFormat();
+
+//            if (! (test instanceof DecimalFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a DecimalFormat");
+//        }
+    }
+    
+    // Jitterbug 4451, for coverage
+    public void TestCoverage(){
+        class StubNumberFormat extends NumberFormat{
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = 3768385020503005993L;
+            public void run(){
+                String p = NumberFormat.getPattern(ULocale.getDefault().toLocale(),0);
+                if (!p.equals(NumberFormat.getPattern(ULocale.getDefault(),0))){
+                    errln("NumberFormat.getPattern(Locale, int) should delegate to (ULocale,)");
+                }
+            }
+            public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+            public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+            public StringBuffer format(BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+//#if defined(FOUNDATION10)
+//#else
+            public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+//#endif
+            public StringBuffer format(com.ibm.icu.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+            public Number parse(String text, ParsePosition parsePosition) {return null;}
+        }
+        new StubNumberFormat().run();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java b/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
new file mode 100644
index 0000000..5601f46
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
@@ -0,0 +1,199 @@
+/*****************************************************************************************
+ * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1996-2008 - All Rights Reserved
+ *
+ *   The original version of this source code and documentation is copyrighted and
+ * owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These materials are
+ * provided under terms of a License Agreement between Taligent and Sun. This
+ * technology is protected by multiple US and International patents. This notice and
+ * attribution to Taligent may not be removed.
+ *   Taligent is a registered trademark of Taligent, Inc.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.IntlTestSimpleDateFormatAPI
+ * Source File: java/text/format/IntlTestSimpleDateFormatAPI.java
+ **/
+ 
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParsePosition;
+import java.text.Format;
+import java.text.FieldPosition;
+import java.text.ParseException;
+
+/**
+* @test 1.4 98/03/06
+* @summary test International Simple Date Format API
+*/
+public class IntlTestSimpleDateFormatAPI extends com.ibm.icu.dev.test.TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new IntlTestSimpleDateFormatAPI().run(args);
+    }
+
+    // This test checks various generic API methods in DecimalFormat to achieve 100% API coverage.
+    public void TestAPI()
+    {
+        logln("SimpleDateFormat API test---"); logln("");
+
+        Locale.setDefault(Locale.ENGLISH);
+
+        // ======= Test constructors
+
+        logln("Testing SimpleDateFormat constructors");
+
+        SimpleDateFormat def = new SimpleDateFormat();
+
+        final String pattern = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        SimpleDateFormat pat = new SimpleDateFormat(pattern);
+
+        SimpleDateFormat pat_fr = new SimpleDateFormat(pattern, Locale.FRENCH);
+
+        DateFormatSymbols symbols = new DateFormatSymbols(Locale.FRENCH);
+
+        SimpleDateFormat cust1 = new SimpleDateFormat(pattern, symbols);
+
+        // ======= Test clone() and equality
+
+        logln("Testing clone(), assignment and equality operators");
+
+        Format clone = (Format) def.clone();
+        if( ! clone.equals(def) ) {
+            errln("ERROR: Format clone or equals failed");
+        }
+
+        // ======= Test various format() methods
+
+        logln("Testing various format() methods");
+
+        Date d = new Date((long)837039928046.0);
+
+        StringBuffer res1 = new StringBuffer();
+        StringBuffer res2 = new StringBuffer();
+        FieldPosition pos1 = new FieldPosition(0);
+        FieldPosition pos2 = new FieldPosition(0);
+
+        res1 = def.format(d, res1, pos1);
+        logln( "" + d.getTime() + " formatted to " + res1);
+
+        res2 = cust1.format(d, res2, pos2);
+        logln("" + d.getTime() + " formatted to " + res2);
+
+        // ======= Test parse()
+
+        logln("Testing parse()");
+
+        String text = new String("02/03/76 2:50 AM, CST");
+        Date result1 = new Date();
+        Date result2 = new Date();
+        ParsePosition pos= new ParsePosition(0);
+        result1 = def.parse(text, pos);
+        logln(text + " parsed into " + result1);
+
+        try {
+            result2 = def.parse(text);
+        }
+        catch (ParseException e) {
+            errln("ERROR: parse() failed");
+        }
+        logln(text + " parsed into " + result2);
+
+        // ======= Test getters and setters
+
+        logln("Testing getters and setters");
+
+        final DateFormatSymbols syms = pat.getDateFormatSymbols();
+        def.setDateFormatSymbols(syms);
+        pat_fr.setDateFormatSymbols(syms);
+        if( ! pat.getDateFormatSymbols().equals(def.getDateFormatSymbols()) ) {
+            errln("ERROR: set DateFormatSymbols() failed");
+        }
+
+        /*
+        DateFormatSymbols has not the method getTwoDigitStartDate();
+        //Date startDate = null; //The variable is never used
+        try {
+//            startDate = pat.getTwoDigitStartDate();
+        }
+        catch (Exception e) {
+            errln("ERROR: getTwoDigitStartDate() failed");
+        }
+
+        try {
+//            pat_fr.setTwoDigitStartDate(startDate);
+        }
+        catch (Exception e) {
+            errln("ERROR: setTwoDigitStartDate() failed");
+        }*/
+
+        // ======= Test applyPattern()
+
+        logln("Testing applyPattern()");
+
+        String p1 = new String("yyyy.MM.dd G 'at' hh:mm:ss z");
+        logln("Applying pattern " + p1);
+        pat.applyPattern(p1);
+
+        String s2 = pat.toPattern();
+        logln("Extracted pattern is " + s2);
+        if( ! s2.equals(p1) ) {
+            errln("ERROR: toPattern() result did not match pattern applied");
+        }
+
+        logln("Applying pattern " + p1);
+        pat.applyLocalizedPattern(p1);
+        String s3 = pat.toLocalizedPattern();
+        logln("Extracted pattern is " + s3);
+        if( ! s3.equals(p1) ) {
+            errln("ERROR: toLocalizedPattern() result did not match pattern applied");
+        }
+        
+        // ======= Test for Ticket 5684 (Parsing patterns with 'Y' and 'e'
+        logln("Testing parse()");
+
+        String p2 = new String("YYYY'W'wwe");
+        logln("Applying pattern " + p2);
+        pat.applyPattern(p2);
+        Date dt = pat.parse("2007W014", new ParsePosition(0));
+        if (dt == null) {
+            errln("ERROR: Parsing failed using 'Y' and 'e'");
+        }
+
+
+        // ======= Test getStaticClassID()
+
+//        logln("Testing instanceof");
+
+//        try {
+//            DateFormat test = new SimpleDateFormat();
+
+//            if (! (test instanceof SimpleDateFormat)) {
+//                errln("ERROR: instanceof failed");
+//            }
+//        }
+//        catch (Exception e) {
+//            errln("ERROR: Couldn't create a SimpleDateFormat");
+//        }
+    }
+    
+    // Jitterbug 4451, for coverage
+    public void TestCoverage(){
+        class StubDateFormat extends SimpleDateFormat{
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = 8460897119491427934L;
+
+            public void run(){
+                if (!zeroPaddingNumber(12, 4, 6).equals("0012")){
+                    errln("SimpleDateFormat(zeroPaddingNumber(long , int , int )");
+                }
+            }
+        }
+        new StubDateFormat().run();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/MessageRegression.java b/src/com/ibm/icu/dev/test/format/MessageRegression.java
new file mode 100644
index 0000000..08f4d1a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/MessageRegression.java
@@ -0,0 +1,839 @@
+/*
+**********************************************************************
+* Copyright (c) 2005-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 12, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+/**
+ * MessageRegression.java
+ *
+ * @test 1.29 01/03/12
+ * @bug 4031438 4058973 4074764 4094906 4104976 4105380 4106659 4106660 4106661
+ * 4111739 4112104 4113018 4114739 4114743 4116444 4118592 4118594 4120552
+ * 4142938 4169959 4232154 4293229
+ * @summary Regression tests for MessageFormat and associated classes
+ */
+/*
+(C) Copyright Taligent, Inc. 1996 - All Rights Reserved
+(C) Copyright IBM Corp. 1996 - All Rights Reserved
+
+  The original version of this source code and documentation is copyrighted and
+owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These materials are
+provided under terms of a License Agreement between Taligent and Sun. This
+technology is protected by multiple US and International patents. This notice and
+attribution to Taligent may not be removed.
+  Taligent is a registered trademark of Taligent, Inc.
+*/
+package com.ibm.icu.dev.test.format;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.text.ChoiceFormat;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.ibm.icu.text.MessageFormat;
+
+public class MessageRegression extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new MessageRegression().run(args);
+    }
+
+    /* @bug 4074764
+     * Null exception when formatting pattern with MessageFormat
+     * with no parameters.
+     */
+    public void Test4074764() {
+        String[] pattern = {"Message without param",
+        "Message with param:{0}",
+        "Longer Message with param {0}"};
+        //difference between the two param strings are that
+        //in the first one, the param position is within the
+        //length of the string without param while it is not so
+        //in the other case.
+
+        MessageFormat messageFormatter = new MessageFormat("");
+
+        try {
+            //Apply pattern with param and print the result
+            messageFormatter.applyPattern(pattern[1]);
+            Object[] paramArray = {new String("BUG"), new Date()};
+            String tempBuffer = messageFormatter.format(paramArray);
+            if (!tempBuffer.equals("Message with param:BUG"))
+                errln("MessageFormat with one param test failed.");
+            logln("Formatted with one extra param : " + tempBuffer);
+
+            //Apply pattern without param and print the result
+            messageFormatter.applyPattern(pattern[0]);
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Message without param"))
+                errln("MessageFormat with no param test failed.");
+            logln("Formatted with no params : " + tempBuffer);
+
+             tempBuffer = messageFormatter.format(paramArray);
+             if (!tempBuffer.equals("Message without param"))
+                errln("Formatted with arguments > subsitution failed. result = " + tempBuffer.toString());
+             logln("Formatted with extra params : " + tempBuffer);
+            //This statement gives an exception while formatting...
+            //If we use pattern[1] for the message with param,
+            //we get an NullPointerException in MessageFormat.java(617)
+            //If we use pattern[2] for the message with param,
+            //we get an StringArrayIndexOutOfBoundsException in MessageFormat.java(614)
+            //Both are due to maxOffset not being reset to -1
+            //in applyPattern() when the pattern does not
+            //contain any param.
+        } catch (Exception foo) {
+            errln("Exception when formatting with no params.");
+        }
+    }
+
+    /* @bug 4058973
+     * MessageFormat.toPattern has weird rounding behavior.
+     */
+    public void Test4058973() {
+
+        MessageFormat fmt = new MessageFormat("{0,choice,0#no files|1#one file|1< {0,number,integer} files}");
+        String pat = fmt.toPattern();
+        if (!pat.equals("{0,choice,0.0#no files|1.0#one file|1.0< {0,number,integer} files}")) {
+            errln("MessageFormat.toPattern failed");
+        }
+    }
+    /* @bug 4031438
+     * More robust message formats.
+     */
+    public void Test4031438() {
+        String pattern1 = "Impossible {1} has occurred -- status code is {0} and message is {2}.";
+        String pattern2 = "Double '' Quotes {0} test and quoted '{1}' test plus 'other {2} stuff'.";
+
+        MessageFormat messageFormatter = new MessageFormat("");
+
+        try {
+            logln("Apply with pattern : " + pattern1);
+            messageFormatter.applyPattern(pattern1);
+            Object[] paramArray = {new Integer(7)};
+            String tempBuffer = messageFormatter.format(paramArray);
+            if (!tempBuffer.equals("Impossible {1} has occurred -- status code is 7 and message is {2}."))
+                errln("Tests arguments < substitution failed");
+            logln("Formatted with 7 : " + tempBuffer);
+            ParsePosition status = new ParsePosition(0);
+            Object[] objs = messageFormatter.parse(tempBuffer, status);
+            if (objs[paramArray.length] != null)
+                errln("Parse failed with more than expected arguments");
+            for (int i = 0; i < objs.length; i++) {
+                if (objs[i] != null && !objs[i].toString().equals(paramArray[i].toString())) {
+                    errln("Parse failed on object " + objs[i] + " at index : " + i);
+                }
+            }
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Impossible {1} has occurred -- status code is {0} and message is {2}."))
+                errln("Tests with no arguments failed");
+            logln("Formatted with null : " + tempBuffer);
+            logln("Apply with pattern : " + pattern2);
+            messageFormatter.applyPattern(pattern2);
+            tempBuffer = messageFormatter.format(paramArray);
+            if (!tempBuffer.equals("Double ' Quotes 7 test and quoted {1} test plus other {2} stuff."))
+                errln("quote format test (w/ params) failed.");
+            logln("Formatted with params : " + tempBuffer);
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Double ' Quotes {0} test and quoted {1} test plus other {2} stuff."))
+                errln("quote format test (w/ null) failed.");
+            logln("Formatted with null : " + tempBuffer);
+            logln("toPattern : " + messageFormatter.toPattern());
+        } catch (Exception foo) {
+            warnln("Exception when formatting in bug 4031438. "+foo.getMessage());
+        }
+    }
+    public void Test4052223()
+    {
+        ParsePosition pos = new ParsePosition(0);
+        if (pos.getErrorIndex() != -1) {
+            errln("ParsePosition.getErrorIndex initialization failed.");
+        }
+        MessageFormat fmt = new MessageFormat("There are {0} apples growing on the {1} tree.");
+        String str = new String("There is one apple growing on the peach tree.");
+        Object[] objs = fmt.parse(str, pos);
+        logln("unparsable string , should fail at " + pos.getErrorIndex());
+        if (pos.getErrorIndex() == -1)
+            errln("Bug 4052223 failed : parsing string " + str);
+        pos.setErrorIndex(4);
+        if (pos.getErrorIndex() != 4)
+            errln("setErrorIndex failed, got " + pos.getErrorIndex() + " instead of 4");
+        
+        if (objs != null) {
+            errln("objs should be null");
+        }
+        ChoiceFormat f = new ChoiceFormat(
+            "-1#are negative|0#are no or fraction|1#is one|1.0<is 1+|2#are two|2<are more than 2.");
+        pos.setIndex(0); pos.setErrorIndex(-1);
+        Number obj = f.parse("are negative", pos);
+        if (pos.getErrorIndex() != -1 && obj.doubleValue() == -1.0)
+            errln("Parse with \"are negative\" failed, at " + pos.getErrorIndex());
+        pos.setIndex(0); pos.setErrorIndex(-1);
+        obj = f.parse("are no or fraction ", pos);
+        if (pos.getErrorIndex() != -1 && obj.doubleValue() == 0.0)
+            errln("Parse with \"are no or fraction\" failed, at " + pos.getErrorIndex());
+        pos.setIndex(0); pos.setErrorIndex(-1);
+        obj = f.parse("go postal", pos);
+        if (pos.getErrorIndex() == -1 && !Double.isNaN(obj.doubleValue()))
+            errln("Parse with \"go postal\" failed, at " + pos.getErrorIndex());
+    }
+    /* @bug 4104976
+     * ChoiceFormat.equals(null) throws NullPointerException
+     */
+    public void Test4104976()
+    {
+        double[] limits = {1, 20};
+        String[] formats = {"xyz", "abc"};
+        ChoiceFormat cf = new ChoiceFormat(limits, formats);
+        try {
+            log("Compares to null is always false, returned : ");
+            logln(cf.equals(null) ? "TRUE" : "FALSE");
+        } catch (Exception foo) {
+            errln("ChoiceFormat.equals(null) throws exception.");
+        }
+    }
+    /* @bug 4106659
+     * ChoiceFormat.ctor(double[], String[]) doesn't check
+     * whether lengths of input arrays are equal.
+     */
+    public void Test4106659()
+    {
+        double[] limits = {1, 2, 3};
+        String[] formats = {"one", "two"};
+        ChoiceFormat cf = null;
+        try {
+            cf = new ChoiceFormat(limits, formats);
+        } catch (Exception foo) {
+            logln("ChoiceFormat constructor should check for the array lengths");
+            cf = null;
+        }
+        if (cf != null) errln(cf.format(5));
+    }
+
+    /* @bug 4106660
+     * ChoiceFormat.ctor(double[], String[]) allows unordered double array.
+     * This is not a bug, added javadoc to emphasize the use of limit
+     * array must be in ascending order.
+     */
+    public void Test4106660()
+    {
+        double[] limits = {3, 1, 2};
+        String[] formats = {"Three", "One", "Two"};
+        ChoiceFormat cf = new ChoiceFormat(limits, formats);
+        double d = 5.0;
+        String str = cf.format(d);
+        if (!str.equals("Two"))
+            errln("format(" + d + ") = " + cf.format(d));
+    }
+
+    /* @bug 4111739
+     * MessageFormat is incorrectly serialized/deserialized.
+     */
+    public void Test4111739()
+    {
+        MessageFormat format1 = null;
+        MessageFormat format2 = null;
+        ObjectOutputStream ostream = null;
+        ByteArrayOutputStream baos = null;
+        ObjectInputStream istream = null;
+
+        try {
+            baos = new ByteArrayOutputStream();
+            ostream = new ObjectOutputStream(baos);
+        } catch(IOException e) {
+            errln("Unexpected exception : " + e.getMessage());
+            return;
+        }
+
+        try {
+            format1 = new MessageFormat("pattern{0}");
+            ostream.writeObject(format1);
+            ostream.flush();
+
+            byte bytes[] = baos.toByteArray();
+
+            istream = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            format2 = (MessageFormat)istream.readObject();
+        } catch(Exception e) {
+            errln("Unexpected exception : " + e.getMessage());
+        }
+
+        if (!format1.equals(format2)) {
+            errln("MessageFormats before and after serialization are not" +
+                " equal\nformat1 = " + format1 + "(" + format1.toPattern() + ")\nformat2 = " +
+                format2 + "(" + format2.toPattern() + ")");
+        } else {
+            logln("Serialization for MessageFormat is OK.");
+        }
+    }
+    /* @bug 4114743
+     * MessageFormat.applyPattern allows illegal patterns.
+     */
+    public void Test4114743()
+    {
+        String originalPattern = "initial pattern";
+        MessageFormat mf = new MessageFormat(originalPattern);
+        try {
+            String illegalPattern = "ab { '}' de";
+            mf.applyPattern(illegalPattern);
+            errln("illegal pattern: \"" + illegalPattern + "\"");
+        } catch (IllegalArgumentException foo) {
+            if (!originalPattern.equals(mf.toPattern()))
+                errln("pattern after: \"" + mf.toPattern() + "\"");
+        }
+    }
+
+    /* @bug 4116444
+     * MessageFormat.parse has different behavior in case of null.
+     */
+    public void Test4116444()
+    {
+        String[] patterns = {"", "one", "{0,date,short}"};
+        MessageFormat mf = new MessageFormat("");
+
+        for (int i = 0; i < patterns.length; i++) {
+            String pattern = patterns[i];
+            mf.applyPattern(pattern);
+            try {
+                Object[] array = mf.parse(null, new ParsePosition(0));
+                logln("pattern: \"" + pattern + "\"");
+                log(" parsedObjects: ");
+                if (array != null) {
+                    log("{");
+                    for (int j = 0; j < array.length; j++) {
+                        if (array[j] != null)
+                            err("\"" + array[j].toString() + "\"");
+                        else
+                            log("null");
+                        if (j < array.length - 1) log(",");
+                    }
+                    log("}") ;
+                } else {
+                    log("null");
+                }
+                logln("");
+            } catch (Exception e) {
+                errln("pattern: \"" + pattern + "\"");
+                errln("  Exception: " + e.getMessage());
+            }
+        }
+
+    }
+    /* @bug 4114739 (FIX and add javadoc)
+     * MessageFormat.format has undocumented behavior about empty format objects.
+     */
+    public void Test4114739()
+    {
+
+        MessageFormat mf = new MessageFormat("<{0}>");
+        Object[] objs1 = null;
+        Object[] objs2 = {};
+        Object[] objs3 = {null};
+        try {
+            logln("pattern: \"" + mf.toPattern() + "\"");
+            log("format(null) : ");
+            logln("\"" + mf.format(objs1) + "\"");
+            log("format({})   : ");
+            logln("\"" + mf.format(objs2) + "\"");
+            log("format({null}) :");
+            logln("\"" + mf.format(objs3) + "\"");
+        } catch (Exception e) {
+            errln("Exception thrown for null argument tests.");
+        }
+    }
+
+    /* @bug 4113018
+     * MessageFormat.applyPattern works wrong with illegal patterns.
+     */
+    public void Test4113018()
+    {
+        String originalPattern = "initial pattern";
+        MessageFormat mf = new MessageFormat(originalPattern);
+        String illegalPattern = "format: {0, xxxYYY}";
+        logln("pattern before: \"" + mf.toPattern() + "\"");
+        logln("illegal pattern: \"" + illegalPattern + "\"");
+        try {
+            mf.applyPattern(illegalPattern);
+            errln("Should have thrown IllegalArgumentException for pattern : " + illegalPattern);
+        } catch (IllegalArgumentException e) {
+            if (!originalPattern.equals(mf.toPattern()))
+                errln("pattern after: \"" + mf.toPattern() + "\"");
+        }
+    }
+    /* @bug 4106661
+     * ChoiceFormat is silent about the pattern usage in javadoc.
+     */
+    public void Test4106661()
+    {
+        ChoiceFormat fmt = new ChoiceFormat(
+          "-1#are negative| 0#are no or fraction | 1#is one |1.0<is 1+ |2#are two |2<are more than 2.");
+        logln("Formatter Pattern : " + fmt.toPattern());
+
+        logln("Format with -INF : " + fmt.format(Double.NEGATIVE_INFINITY));
+        logln("Format with -1.0 : " + fmt.format(-1.0));
+        logln("Format with 0 : " + fmt.format(0));
+        logln("Format with 0.9 : " + fmt.format(0.9));
+        logln("Format with 1.0 : " + fmt.format(1));
+        logln("Format with 1.5 : " + fmt.format(1.5));
+        logln("Format with 2 : " + fmt.format(2));
+        logln("Format with 2.1 : " + fmt.format(2.1));
+        logln("Format with NaN : " + fmt.format(Double.NaN));
+        logln("Format with +INF : " + fmt.format(Double.POSITIVE_INFINITY));
+    }
+    /* @bug 4094906
+     * ChoiceFormat should accept \u221E as eq. to INF.
+     */
+    public void Test4094906()
+    {
+        ChoiceFormat fmt = new ChoiceFormat(
+          "-\u221E<are negative|0<are no or fraction|1#is one|1.0<is 1+|\u221E<are many.");
+        if (!fmt.toPattern().startsWith("-\u221E<are negative|0.0<are no or fraction|1.0#is one|1.0<is 1+|\u221E<are many."))
+            errln("Formatter Pattern : " + fmt.toPattern());
+        logln("Format with -INF : " + fmt.format(Double.NEGATIVE_INFINITY));
+        logln("Format with -1.0 : " + fmt.format(-1.0));
+        logln("Format with 0 : " + fmt.format(0));
+        logln("Format with 0.9 : " + fmt.format(0.9));
+        logln("Format with 1.0 : " + fmt.format(1));
+        logln("Format with 1.5 : " + fmt.format(1.5));
+        logln("Format with 2 : " + fmt.format(2));
+        logln("Format with +INF : " + fmt.format(Double.POSITIVE_INFINITY));
+    }
+
+    /* @bug 4118592
+     * MessageFormat.parse fails with ChoiceFormat.
+     */
+    public void Test4118592()
+    {
+        MessageFormat mf = new MessageFormat("");
+        String pattern = "{0,choice,1#YES|2#NO}";
+        String prefix = "";
+        for (int i = 0; i < 5; i++) {
+            String formatted = prefix + "YES";
+            mf.applyPattern(prefix + pattern);
+            prefix += "x";
+            Object[] objs = mf.parse(formatted, new ParsePosition(0));
+            logln(i + ". pattern :\"" + mf.toPattern() + "\"");
+            log(" \"" + formatted + "\" parsed as ");
+            if (objs == null) logln("  null");
+            else logln("  " + objs[0]);
+        }
+    }
+    /* @bug 4118594
+     * MessageFormat.parse fails for some patterns.
+     */
+    public void Test4118594()
+    {
+        MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
+        String forParsing = "x, y, z";
+        Object[] objs = mf.parse(forParsing, new ParsePosition(0));
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        logln("text for parsing: \"" + forParsing + "\"");
+        if (!objs[0].toString().equals("z"))
+            errln("argument0: \"" + objs[0] + "\"");
+        mf.setLocale(Locale.US);
+        mf.applyPattern("{0,number,#.##}, {0,number,#.#}");
+        Object[] oldobjs = {new Double(3.1415)};
+        String result = mf.format( oldobjs );
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        logln("text for parsing: \"" + result + "\"");
+        // result now equals "3.14, 3.1"
+        if (!result.equals("3.14, 3.1"))
+            errln("result = " + result);
+        Object[] newobjs = mf.parse(result, new ParsePosition(0));
+        // newobjs now equals {new Double(3.1)}
+        if (((Number)newobjs[0]).doubleValue() != 3.1) // was (Double) [alan]
+            errln( "newobjs[0] = " + newobjs[0]);
+    }
+    /* @bug 4105380
+     * When using ChoiceFormat, MessageFormat is not good for I18n.
+     */
+    public void Test4105380()
+    {
+        String patternText1 = "The disk \"{1}\" contains {0}.";
+        String patternText2 = "There are {0} on the disk \"{1}\"";
+        MessageFormat form1 = new MessageFormat(patternText1);
+        MessageFormat form2 = new MessageFormat(patternText2);
+        double[] filelimits = {0,1,2};
+        String[] filepart = {"no files","one file","{0,number} files"};
+        ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+        form1.setFormat(1, fileform);
+        form2.setFormat(0, fileform);
+        Object[] testArgs = {new Long(12373), "MyDisk"};
+        logln(form1.format(testArgs));
+        logln(form2.format(testArgs));
+    }
+    /* @bug 4120552
+     * MessageFormat.parse incorrectly sets errorIndex.
+     */
+    public void Test4120552()
+    {
+        MessageFormat mf = new MessageFormat("pattern");
+        String texts[] = {"pattern", "pat", "1234"};
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        for (int i = 0; i < texts.length; i++) {
+            ParsePosition pp = new ParsePosition(0);
+            Object[] objs = mf.parse(texts[i], pp);
+            log("  text for parsing: \"" + texts[i] + "\"");
+            if (objs == null) {
+                logln("  (incorrectly formatted string)");
+                if (pp.getErrorIndex() == -1)
+                    errln("Incorrect error index: " + pp.getErrorIndex());
+            } else {
+                logln("  (correctly formatted string)");
+            }
+        }
+    }
+
+    /**
+     * @bug 4142938
+     * MessageFormat handles single quotes in pattern wrong.
+     * This is actually a problem in ChoiceFormat; it doesn't
+     * understand single quotes.
+     */
+    public void Test4142938() {
+        String pat = "''Vous'' {0,choice,0#n''|1#}avez s\u00E9lectionne\u00E9 " + 
+            "{0,choice,0#aucun|1#{0}} client{0,choice,0#s|1#|2#s} " + 
+            "personnel{0,choice,0#s|1#|2#s}.";
+        MessageFormat mf = new MessageFormat(pat);
+
+        String[] PREFIX = {
+            "'Vous' n'avez s\u00E9lectionne\u00E9 aucun clients personnels.",
+            "'Vous' avez s\u00E9lectionne\u00E9 ",
+            "'Vous' avez s\u00E9lectionne\u00E9 "
+        };  
+        String[] SUFFIX = {
+            null,
+            " client personnel.",
+            " clients personnels."
+        };
+    
+        for (int i=0; i<3; i++) {
+            String out = mf.format(new Object[]{new Integer(i)});
+            if (SUFFIX[i] == null) {
+                if (!out.equals(PREFIX[i]))
+                    errln("" + i + ": Got \"" + out + "\"; Want \"" + PREFIX[i] + "\"");
+            }
+            else {
+                if (!out.startsWith(PREFIX[i]) ||
+                    !out.endsWith(SUFFIX[i]))
+                    errln("" + i + ": Got \"" + out + "\"; Want \"" + PREFIX[i] + "\"...\"" +
+                          SUFFIX[i] + "\"");
+            }
+        }
+    }
+
+    /**
+     * @bug 4142938
+     * Test the applyPattern and toPattern handling of single quotes
+     * by ChoiceFormat.  (This is in here because this was a bug reported
+     * against MessageFormat.)  The single quote is used to quote the
+     * pattern characters '|', '#', '<', and '\u2264'.  Two quotes in a row
+     * is a quote literal.
+     */
+    public void TestChoicePatternQuote() {
+        String[] DATA = {
+            // Pattern                  0 value           1 value
+            "0#can''t|1#can",           "can't",          "can",
+            "0#'pound(#)=''#'''|1#xyz", "pound(#)='#'",   "xyz",
+            "0#'1<2 | 1\u22641'|1#''",  "1<2 | 1\u22641", "'",
+        };
+        for (int i=0; i<DATA.length; i+=3) {
+            try {
+                ChoiceFormat cf = new ChoiceFormat(DATA[i]);
+                for (int j=0; j<=1; ++j) {
+                    String out = cf.format(j);
+                    if (!out.equals(DATA[i+1+j]))
+                        errln("Fail: Pattern \"" + DATA[i] + "\" x "+j+" -> " +
+                              out + "; want \"" + DATA[i+1+j] + '"');
+                }
+                String pat = cf.toPattern();
+                String pat2 = new ChoiceFormat(pat).toPattern();
+                if (!pat.equals(pat2))
+                    errln("Fail: Pattern \"" + DATA[i] + "\" x toPattern -> \"" + pat + '"');
+                else
+                    logln("Ok: Pattern \"" + DATA[i] + "\" x toPattern -> \"" + pat + '"');
+            }
+            catch (IllegalArgumentException e) {
+                errln("Fail: Pattern \"" + DATA[i] + "\" -> " + e);
+            }
+        }
+    }
+
+    /**
+     * @bug 4112104
+     * MessageFormat.equals(null) throws a NullPointerException.  The JLS states
+     * that it should return false.
+     */
+    public void Test4112104() {
+        MessageFormat format = new MessageFormat("");
+        try {
+            // This should NOT throw an exception
+            if (format.equals(null)) {
+                // It also should return false
+                errln("MessageFormat.equals(null) returns false");
+            }
+        }
+        catch (NullPointerException e) {
+            errln("MessageFormat.equals(null) throws " + e);
+        }
+    }
+
+    /**
+     * @bug 4169959
+     * MessageFormat does not format null objects. CANNOT REPRODUCE THIS BUG.
+     */
+    public void Test4169959() {
+        // This works
+        logln(MessageFormat.format( "This will {0}",
+                                    new String[]{"work"} ) );
+        
+        // This fails
+        logln(MessageFormat.format( "This will {0}",
+                                    new Object[]{ null } ) );
+    }
+    
+    public void test4232154() {
+        boolean gotException = false;
+        try {
+            new MessageFormat("The date is {0:date}");
+        } catch (Exception e) {
+            gotException = true;
+            if (!(e instanceof IllegalArgumentException)) {
+                throw new RuntimeException("got wrong exception type");
+            }
+            if ("argument number too large at ".equals(e.getMessage())) {
+                throw new RuntimeException("got wrong exception message");
+            }
+        }
+        if (!gotException) {
+            throw new RuntimeException("didn't get exception for invalid input");
+        }
+    }
+    
+    public void test4293229() {
+        MessageFormat format = new MessageFormat("'''{'0}'' '''{0}'''");
+        Object[] args = { null };
+        String expected = "'{0}' '{0}'";
+        String result = format.format(args);
+        if (!result.equals(expected)) {
+            throw new RuntimeException("wrong format result - expected \"" +
+                    expected + "\", got \"" + result + "\"");
+        }
+    }
+     
+    // This test basically ensures that the tests defined above also work with
+    // valid named arguments.
+    public void testBugTestsWithNamesArguments() {
+        
+      { // Taken from Test4031438().
+        String pattern1 = "Impossible {arg1} has occurred -- status code is {arg0} and message is {arg2}.";
+        String pattern2 = "Double '' Quotes {ARG_ZERO} test and quoted '{ARG_ONE}' test plus 'other {ARG_TWO} stuff'.";
+
+        MessageFormat messageFormatter = new MessageFormat("");
+
+        try {
+            logln("Apply with pattern : " + pattern1);
+            messageFormatter.applyPattern(pattern1);
+            HashMap paramsMap = new HashMap();
+            paramsMap.put("arg0", new Integer(7));
+            String tempBuffer = messageFormatter.format(paramsMap);
+            if (!tempBuffer.equals("Impossible {arg1} has occurred -- status code is 7 and message is {arg2}."))
+                errln("Tests arguments < substitution failed");
+            logln("Formatted with 7 : " + tempBuffer);
+            ParsePosition status = new ParsePosition(0);
+            Map objs = messageFormatter.parseToMap(tempBuffer, status);
+            if (objs.get("arg1") != null || objs.get("arg2") != null)
+                errln("Parse failed with more than expected arguments");
+            for (Iterator keyIter = objs.keySet().iterator();
+                 keyIter.hasNext();) {
+                String key = (String) keyIter.next();
+                if (objs.get(key) != null && !objs.get(key).toString().equals(paramsMap.get(key).toString())) {
+                    errln("Parse failed on object " + objs.get(key) + " with argument name : " + key );
+                }
+            }
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Impossible {arg1} has occurred -- status code is {arg0} and message is {arg2}."))
+                errln("Tests with no arguments failed");
+            logln("Formatted with null : " + tempBuffer);
+            logln("Apply with pattern : " + pattern2);
+            messageFormatter.applyPattern(pattern2);
+            paramsMap.clear();
+            paramsMap.put("ARG_ZERO", new Integer(7));
+            tempBuffer = messageFormatter.format(paramsMap);
+            if (!tempBuffer.equals("Double ' Quotes 7 test and quoted {ARG_ONE} test plus other {ARG_TWO} stuff."))
+                errln("quote format test (w/ params) failed.");
+            logln("Formatted with params : " + tempBuffer);
+            tempBuffer = messageFormatter.format(null);
+            if (!tempBuffer.equals("Double ' Quotes {ARG_ZERO} test and quoted {ARG_ONE} test plus other {ARG_TWO} stuff."))
+                errln("quote format test (w/ null) failed.");
+            logln("Formatted with null : " + tempBuffer);
+            logln("toPattern : " + messageFormatter.toPattern());
+        } catch (Exception foo) {
+            warnln("Exception when formatting in bug 4031438. "+foo.getMessage());
+        }
+      }{ // Taken from Test4052223().
+        ParsePosition pos = new ParsePosition(0);
+        if (pos.getErrorIndex() != -1) {
+            errln("ParsePosition.getErrorIndex initialization failed.");
+        }
+        MessageFormat fmt = new MessageFormat("There are {numberOfApples} apples growing on the {whatKindOfTree} tree.");
+        String str = new String("There is one apple growing on the peach tree.");
+        Map objs = fmt.parseToMap(str, pos);
+        logln("unparsable string , should fail at " + pos.getErrorIndex());
+        if (pos.getErrorIndex() == -1)
+            errln("Bug 4052223 failed : parsing string " + str);
+        pos.setErrorIndex(4);
+        if (pos.getErrorIndex() != 4)
+            errln("setErrorIndex failed, got " + pos.getErrorIndex() + " instead of 4");
+        if (objs != null)
+            errln("unparsable string, should return null");
+    }{ // Taken from Test4111739().
+        MessageFormat format1 = null;
+        MessageFormat format2 = null;
+        ObjectOutputStream ostream = null;
+        ByteArrayOutputStream baos = null;
+        ObjectInputStream istream = null;
+
+        try {
+            baos = new ByteArrayOutputStream();
+            ostream = new ObjectOutputStream(baos);
+        } catch(IOException e) {
+            errln("Unexpected exception : " + e.getMessage());
+            return;
+        }
+
+        try {
+            format1 = new MessageFormat("pattern{argument}");
+            ostream.writeObject(format1);
+            ostream.flush();
+
+            byte bytes[] = baos.toByteArray();
+
+            istream = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            format2 = (MessageFormat)istream.readObject();
+        } catch(Exception e) {
+            errln("Unexpected exception : " + e.getMessage());
+        }
+
+        if (!format1.equals(format2)) {
+            errln("MessageFormats before and after serialization are not" +
+                " equal\nformat1 = " + format1 + "(" + format1.toPattern() + ")\nformat2 = " +
+                format2 + "(" + format2.toPattern() + ")");
+        } else {
+            logln("Serialization for MessageFormat is OK.");
+        }
+    }{ // Taken from Test4116444().
+        String[] patterns = {"", "one", "{namedArgument,date,short}"};
+        MessageFormat mf = new MessageFormat("");
+
+        for (int i = 0; i < patterns.length; i++) {
+            String pattern = patterns[i];
+            mf.applyPattern(pattern);
+            try {
+                Map objs = mf.parseToMap(null, new ParsePosition(0));
+                logln("pattern: \"" + pattern + "\"");
+                log(" parsedObjects: ");
+                if (objs != null) {
+                    log("{");
+                    for (Iterator keyIter = objs.keySet().iterator();
+                         keyIter.hasNext();) {
+                        String key = (String)keyIter.next();
+                        if (objs.get(key) != null) {
+                            err("\"" + objs.get(key).toString() + "\"");
+                        } else {
+                            log("null");
+                        }
+                        if (keyIter.hasNext()) {
+                            log(",");
+                        }
+                    }
+                    log("}") ;
+                } else {
+                    log("null");
+                }
+                logln("");
+            } catch (Exception e) {
+                errln("pattern: \"" + pattern + "\"");
+                errln("  Exception: " + e.getMessage());
+            }
+        }
+    }{ // Taken from Test4114739().
+        MessageFormat mf = new MessageFormat("<{arg}>");
+        Map objs1 = null;
+        Map objs2 = new HashMap();
+        Map objs3 = new HashMap();
+        objs3.put("arg", null);
+        try {
+            logln("pattern: \"" + mf.toPattern() + "\"");
+            log("format(null) : ");
+            logln("\"" + mf.format(objs1) + "\"");
+            log("format({})   : ");
+            logln("\"" + mf.format(objs2) + "\"");
+            log("format({null}) :");
+            logln("\"" + mf.format(objs3) + "\"");
+        } catch (Exception e) {
+            errln("Exception thrown for null argument tests.");
+        } 
+    }{ // Taken from Test4118594().
+        String argName = "something_stupid";
+        MessageFormat mf = new MessageFormat("{"+ argName + "}, {" + argName + "}, {" + argName + "}");
+        String forParsing = "x, y, z";
+        Map objs = mf.parseToMap(forParsing, new ParsePosition(0));
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        logln("text for parsing: \"" + forParsing + "\"");
+        if (!objs.get(argName).toString().equals("z"))
+            errln("argument0: \"" + objs.get(argName) + "\"");
+        mf.setLocale(Locale.US);
+        mf.applyPattern("{" + argName + ",number,#.##}, {" + argName + ",number,#.#}");
+        Map oldobjs = new HashMap();
+        oldobjs.put(argName, new Double(3.1415));
+        String result = mf.format( oldobjs );
+        logln("pattern: \"" + mf.toPattern() + "\"");
+        logln("text for parsing: \"" + result + "\"");
+        // result now equals "3.14, 3.1"
+        if (!result.equals("3.14, 3.1"))
+            errln("result = " + result);
+        Map newobjs = mf.parseToMap(result, new ParsePosition(0));
+        // newobjs now equals {new Double(3.1)}
+        if (((Number)newobjs.get(argName)).doubleValue() != 3.1) // was (Double) [alan]
+            errln( "newobjs.get(argName) = " + newobjs.get(argName));
+    }{ // Taken from Test4105380().
+        String patternText1 = "The disk \"{diskName}\" contains {numberOfFiles}.";
+        String patternText2 = "There are {numberOfFiles} on the disk \"{diskName}\"";
+        MessageFormat form1 = new MessageFormat(patternText1);
+        MessageFormat form2 = new MessageFormat(patternText2);
+        double[] filelimits = {0,1,2};
+        String[] filepart = {"no files","one file","{numberOfFiles,number} files"};
+        ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+        form1.setFormat(1, fileform);
+        form2.setFormat(0, fileform);
+        Map testArgs = new HashMap();
+        testArgs.put("diskName", "MyDisk");
+        testArgs.put("numberOfFiles", new Long(12373));
+        logln(form1.format(testArgs));
+        logln(form2.format(testArgs));
+    }{ // Taken from test4293229().
+        MessageFormat format = new MessageFormat("'''{'myNamedArgument}'' '''{myNamedArgument}'''");
+        Map args = new HashMap();
+        String expected = "'{myNamedArgument}' '{myNamedArgument}'";
+        String result = format.format(args);
+        if (!result.equals(expected)) {
+            throw new RuntimeException("wrong format result - expected \"" +
+                    expected + "\", got \"" + result + "\"");
+        }
+    }
+  }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java
new file mode 100644
index 0000000..c0381b3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java
@@ -0,0 +1,117 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.text.NumberFormat.*;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Arrays;
+
+public class NumberFormatRegistrationTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) {
+        new NumberFormatRegistrationTest().run(args);
+    }
+
+    public void TestRegistration() {
+        final ULocale SRC_LOC = ULocale.FRANCE;
+        final ULocale SWAP_LOC = ULocale.US;
+
+        class TestFactory extends SimpleNumberFormatFactory {
+            NumberFormat currencyStyle;
+
+            TestFactory() {
+                this(SRC_LOC, SWAP_LOC);
+            }
+
+            TestFactory(ULocale srcLoc, ULocale swapLoc) {
+                super(srcLoc);
+                currencyStyle = NumberFormat.getIntegerInstance(swapLoc);
+            }
+
+            public NumberFormat createFormat(ULocale loc, int formatType) {
+                if (formatType == FORMAT_CURRENCY) {
+                    return currencyStyle;
+                }
+                return null;
+            }
+        }
+
+        {
+            // coverage before registration
+
+            try {
+                NumberFormat.unregister(null);
+                errln("did not throw exception on null unregister");
+            }
+            catch (Exception e) {
+                logln("PASS: null unregister failed as expected");
+            }
+
+            try {
+                NumberFormat.registerFactory(null);
+                errln("did not throw exception on null register");
+            }
+            catch (Exception e) {
+                logln("PASS: null register failed as expected");
+            }
+
+            try {
+                // if no NF has been registered yet, shim is null, so this silently
+                // returns false.  if, on the other hand, a NF has been registered,
+                // this will try to cast the argument to a Factory, and throw
+                // an exception.
+                if (NumberFormat.unregister("")) {
+                    errln("unregister of empty string key succeeded");
+                }
+            }
+            catch (Exception e) {
+            }
+        }
+
+        ULocale fu_FU = new ULocale("fu_FU");
+        NumberFormat f0 = NumberFormat.getIntegerInstance(SWAP_LOC);
+        NumberFormat f1 = NumberFormat.getIntegerInstance(SRC_LOC);
+        NumberFormat f2 = NumberFormat.getCurrencyInstance(SRC_LOC);
+        Object key = NumberFormat.registerFactory(new TestFactory());
+        Object key2 = NumberFormat.registerFactory(new TestFactory(fu_FU, ULocale.GERMANY));
+        if (!Arrays.asList(NumberFormat.getAvailableULocales()).contains(fu_FU)) {
+            errln("did not list fu_FU");
+        }
+        NumberFormat f3 = NumberFormat.getCurrencyInstance(SRC_LOC);
+        NumberFormat f4 = NumberFormat.getIntegerInstance(SRC_LOC);
+        NumberFormat.unregister(key); // restore for other tests
+        NumberFormat f5 = NumberFormat.getCurrencyInstance(SRC_LOC);
+
+        NumberFormat.unregister(key2);
+
+        float n = 1234.567f;
+        logln("f0 swap int: " + f0.format(n));
+        logln("f1 src int: " + f1.format(n));
+        logln("f2 src cur: " + f2.format(n));
+        logln("f3 reg cur: " + f3.format(n));
+        logln("f4 reg int: " + f4.format(n));
+        logln("f5 unreg cur: " + f5.format(n));
+
+        if (!f3.format(n).equals(f0.format(n))) {
+            errln("registered service did not match");
+        }
+        if (!f4.format(n).equals(f1.format(n))) {
+            errln("registered service did not inherit");
+        }
+        if (!f5.format(n).equals(f2.format(n))) {
+            errln("unregistered service did not match original");
+        }
+
+        // coverage
+        NumberFormat f6 = NumberFormat.getNumberInstance(fu_FU);
+        if (f6 == null) {
+            errln("getNumberInstance(fu_FU) returned null");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
new file mode 100644
index 0000000..4893c7e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
@@ -0,0 +1,326 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : format : NumberFormatRegressionTest
+ * Source File: $ICU4CRoot/source/test/intltest/numrgts.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+import java.util.Date;
+import java.text.ParseException;
+import java.io.*;
+
+/** 
+ * Performs regression test for MessageFormat
+ **/
+public class NumberFormatRegressionTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception{
+        new NumberFormatRegressionTest().run(args);
+    }
+    
+    /**
+     * alphaWorks upgrade
+     */
+    public void Test4161100() {
+        NumberFormat nf = NumberFormat.getInstance(Locale.US);
+        nf.setMinimumFractionDigits(1);
+        nf.setMaximumFractionDigits(1);
+        double a = -0.09;
+        String s = nf.format(a);
+        logln(a + " x " +
+              ((DecimalFormat) nf).toPattern() + " = " + s);
+        if (!s.equals("-0.1")) {
+            errln("FAIL");
+        }
+    }
+    
+    /**
+     * DateFormat should call setIntegerParseOnly(TRUE) on adopted
+     * NumberFormat objects.
+     */
+    public void TestJ691() {
+        
+        Locale loc = new Locale("fr", "CH");
+    
+        // set up the input date string & expected output
+        String udt = "11.10.2000";
+        String exp = "11.10.00";
+    
+        // create a Calendar for this locale
+        Calendar cal = Calendar.getInstance(loc);
+    
+        // create a NumberFormat for this locale
+        NumberFormat nf = NumberFormat.getInstance(loc);
+    
+        // *** Here's the key: We don't want to have to do THIS:
+        //nf.setParseIntegerOnly(true);
+    
+        // create the DateFormat
+        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, loc);
+    
+        df.setCalendar(cal);
+        df.setNumberFormat(nf);
+    
+        // set parsing to lenient & parse
+        Date ulocdat = new Date();
+        df.setLenient(true);
+        try {
+            ulocdat = df.parse(udt);
+        } catch (java.text.ParseException pe) {
+            errln(pe.getMessage());
+        }
+        // format back to a string
+        String outString = df.format(ulocdat);
+    
+        if (!outString.equals(exp)) {
+            errln("FAIL: " + udt + " => " + outString);
+        }
+    }
+    
+    /**
+     * Test getIntegerInstance();
+     */
+    public void Test4408066() {
+        
+        NumberFormat nf1 = NumberFormat.getIntegerInstance();
+        NumberFormat nf2 = NumberFormat.getIntegerInstance(Locale.CHINA);
+    
+        //test isParseIntegerOnly
+        if (!nf1.isParseIntegerOnly() || !nf2.isParseIntegerOnly()) {
+            errln("Failed : Integer Number Format Instance should set setParseIntegerOnly(true)");
+        }
+    
+        //Test format
+        {
+            double[] data = {
+                -3.75, -2.5, -1.5, 
+                -1.25, 0,    1.0, 
+                1.25,  1.5,  2.5, 
+                3.75,  10.0, 255.5
+                };
+            String[] expected = {
+                "-4", "-2", "-2",
+                "-1", "0",  "1",
+                "1",  "2",  "2",
+                "4",  "10", "256"
+                };
+    
+            for (int i = 0; i < data.length; ++i) {
+                String result = nf1.format(data[i]);
+                if (!result.equals(expected[i])) {
+                    errln("Failed => Source: " + Double.toString(data[i]) 
+                        + ";Formatted : " + result
+                        + ";but expectted: " + expected[i]);
+                }
+            }
+        }
+        //Test parse, Parsing should stop at "."
+        {
+            String data[] = {
+                "-3.75", "-2.5", "-1.5", 
+                "-1.25", "0",    "1.0", 
+                "1.25",  "1.5",  "2.5", 
+                "3.75",  "10.0", "255.5"
+                };
+            long[] expected = {
+                -3, -2, -1,
+                -1, 0,  1,
+                1,  1,  2,
+                3,  10, 255
+                };
+            
+            for (int i = 0; i < data.length; ++i) {
+                Number n = null;
+                try {
+                    n = nf1.parse(data[i]);
+                } catch (ParseException e) {
+                    errln("Failed: " + e.getMessage());
+                }
+                if (!(n instanceof Long) || (n instanceof Integer)) {
+                    errln("Failed: Integer Number Format should parse string to Long/Integer");
+                }
+                if (n.longValue() != expected[i]) {
+                    errln("Failed=> Source: " + data[i] 
+                        + ";result : " + n.toString()
+                        + ";expected :" + Long.toString(expected[i]));
+                }
+            }
+        }
+    }
+    
+    //Test New serialized DecimalFormat(2.0) read old serialized forms of DecimalFormat(1.3.1.1)
+    public void TestSerialization() throws IOException{
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        byte[][] contents = NumberFormatSerialTestData.getContent();
+        double data = 1234.56;
+        String[] expected = {
+            "1,234.56", "$1,234.56", "123,456%", "1.23456E3"};
+        for (int i = 0; i < 4; ++i) {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(contents[i]));
+            try {
+                NumberFormat format = (NumberFormat) ois.readObject();
+                String result = format.format(data);
+                if (result.equals(expected[i])) {
+                    logln("OK: Deserialized bogus NumberFormat(new version read old version)");
+                } else {
+                    errln("FAIL: the test data formats are not euqal");
+                }
+            } catch (Exception e) {
+                warnln("FAIL: " + e.getMessage());
+            }
+        }
+//#endif
+    }
+
+    /*
+     * Test case for JB#5509, strict parsing issue
+     */
+    public void TestJB5509() {
+        String[] data = {
+                "1,2",
+                "1.2",
+                "1,2.5",
+                "1,23.5",
+                "1,234.5",
+                "1,234",
+                "1,234,567",
+                "1,234,567.8",
+                "1,234,5",
+                "1,234,5.6",
+                "1,234,56.7"
+        };
+        boolean[] expected = { // false for expected parse failure
+                false,
+                true,
+                false,
+                false,
+                true,
+                true,
+                true,
+                true,
+                false,
+                false,
+                false,
+                false
+        };
+
+        DecimalFormat df = new DecimalFormat("#,##0.###", new DecimalFormatSymbols(new ULocale("en_US")));
+        df.setParseStrict(true);
+        for (int i = 0; i < data.length; i++) {
+            try {
+                df.parse(data[i]);
+                if (!expected[i]) {
+                    errln("Failed: ParseException must be thrown for string " + data[i]);
+                }
+            } catch (ParseException pe) {
+                if (expected[i]) {
+                    errln("Failed: ParseException must not be thrown for string " + data[i]);
+                }
+            }
+        }
+    }
+
+    /*
+     * Test case for ticket#5698 - parsing extremely large/small values
+     */
+    public void TestT5698() {
+        final String[] data = {
+                "12345679E66666666666666666",
+                "-12345679E66666666666666666",
+                ".1E2147483648", // exponent > max int
+                ".1E2147483647", // exponent == max int
+                ".1E-2147483648", // exponent == min int
+                ".1E-2147483649", // exponent < min int
+                "1.23E350", // value > max double
+                "1.23E300", // value < max double
+                "-1.23E350", // value < min double
+                "-1.23E300", // value > min double
+                "4.9E-324", // value = smallest non-zero double
+                "1.0E-325", // 0 < value < smallest non-zero positive double0
+                "-1.0E-325", // 0 > value > largest non-zero negative double
+        };
+        final double[] expected = {
+                Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY,
+                Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY,
+                0.0,
+                0.0,
+                Double.POSITIVE_INFINITY,
+                1.23e300d,
+                Double.NEGATIVE_INFINITY,
+                -1.23e300d,
+                4.9e-324d,
+                0.0,
+                -0.0,
+        };
+
+        NumberFormat nfmt = NumberFormat.getInstance();
+
+        for (int i = 0; i < data.length; i++) {
+            try {
+                Number n = nfmt.parse(data[i]);
+                if (expected[i] != n.doubleValue()) {
+                    errln("Failed: Parsed result for " + data[i] + ": " 
+                            + n.doubleValue() + " / expected: " + expected[i]);
+                }
+            } catch (ParseException pe) {
+                errln("Failed: ParseException is thrown for " + data[i]);
+            }
+        }
+    }
+    
+    void checkNBSPPatternRtNum(String testcase, NumberFormat nf, double myNumber) {
+        String myString = nf.format(myNumber);
+        
+            double aNumber;
+            try {
+                aNumber = nf.parse(myString).doubleValue();
+            } catch (ParseException e) {
+                // TODO Auto-generated catch block
+                errln("FAIL: " + testcase +" - failed to parse. " + e.toString());
+                return;
+            }
+            if(Math.abs(aNumber-myNumber)>.001) {
+            errln("FAIL: "+testcase+": formatted "+myNumber+", parsed into "+aNumber+"\n");
+        } else {
+            logln("PASS: "+testcase+": formatted "+myNumber+", parsed into "+aNumber+"\n");
+        }
+    }
+
+    void checkNBSPPatternRT(String testcase, NumberFormat nf) {
+        checkNBSPPatternRtNum(testcase, nf, 12345.);
+        checkNBSPPatternRtNum(testcase, nf, -12345.);
+    }
+
+    public void TestNBSPInPattern() {
+    NumberFormat nf = null;
+    String testcase;
+    
+    
+    testcase="ar_AE UNUM_CURRENCY";
+    nf = NumberFormat.getCurrencyInstance(new ULocale("ar_AE"));
+    checkNBSPPatternRT(testcase, nf);
+    // if we don't have CLDR 1.6 data, bring out the problem anyways 
+    
+    String SPECIAL_PATTERN = "\u00A4\u00A4'\u062f.\u0625.\u200f\u00a0'###0.00";
+    testcase = "ar_AE special pattern: " + SPECIAL_PATTERN;
+    nf = new DecimalFormat();
+    ((DecimalFormat)nf).applyPattern(SPECIAL_PATTERN);
+    checkNBSPPatternRT(testcase, nf);
+    
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
new file mode 100644
index 0000000..b269130
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
@@ -0,0 +1,234 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Porting From: ICU4C v1.8.1 : format : NumberFormatRoundTripTest
+ * Source File: $ICU4CRoot/source/test/intltest/nmfmtrt.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.util.Random;
+
+/** 
+ * Performs round-trip tests for NumberFormat
+ **/
+public class NumberFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public double MAX_ERROR = 1e-14;
+    public double max_numeric_error = 0.0;
+    public double min_numeric_error = 1.0;
+    public boolean verbose = false;
+    public boolean STRING_COMPARE = false;
+    public boolean EXACT_NUMERIC_COMPARE = false;
+    public boolean DEBUG = false;
+    public boolean quick = true;
+    
+    public static void main(String[] args) throws Exception {
+        new NumberFormatRoundTripTest().run(args);
+    }
+    
+    public void TestNumberFormatRoundTrip() {
+    
+        NumberFormat fmt = null;
+    
+        logln("Default Locale");
+        
+        logln("Default Number format");
+        fmt = NumberFormat.getInstance();
+        _test(fmt);
+    
+        logln("Currency Format");
+        fmt = NumberFormat.getCurrencyInstance();
+        _test(fmt);
+    
+        logln("Percent Format");
+        fmt = NumberFormat.getPercentInstance();
+        _test(fmt);
+    
+    
+        int locCount = 0;
+        final Locale[] loc = NumberFormat.getAvailableLocales();
+        if(quick) {
+            if(locCount > 5)
+                locCount = 5;
+            logln("Quick mode: only _testing first 5 Locales");
+        }
+        for(int i = 0; i < locCount; ++i) {
+            logln(loc[i].getDisplayName());
+    
+            fmt = NumberFormat.getInstance(loc[i]);
+            _test(fmt);
+        
+            fmt = NumberFormat.getCurrencyInstance(loc[i]);
+            _test(fmt);
+        
+            fmt = NumberFormat.getPercentInstance(loc[i]);
+            _test(fmt);
+        }
+    
+        logln("Numeric error " + min_numeric_error + " to " + max_numeric_error);
+    }
+    
+    /**
+     * Return a random value from -range..+range.
+     */
+    private Random random;
+    public double randomDouble(double range) {
+        if (random == null) {
+            random = createRandom(); // use test framework's random seed
+        }
+        return  random.nextDouble() * range;
+    } 
+    
+    public void _test(NumberFormat fmt) {
+    
+        _test(fmt, Double.NaN);
+        _test(fmt, Double.POSITIVE_INFINITY);
+        _test(fmt, Double.NEGATIVE_INFINITY);
+    
+        _test(fmt, 500);
+        _test(fmt, 0);
+        _test(fmt, -0);
+        _test(fmt, 0.0);
+        double negZero = 0.0;
+        negZero /= -1.0;
+        _test(fmt, negZero);
+        _test(fmt, 9223372036854775808.0d);
+        _test(fmt, -9223372036854775809.0d);
+        //_test(fmt, 6.936065876100493E74d);
+        
+    //    _test(fmt, 6.212122845281909E48d);
+        for (int i = 0; i < 10; ++i) {
+    
+            _test(fmt, randomDouble(1));
+            
+            _test(fmt, randomDouble(10000));
+    
+            _test(fmt, Math.floor((randomDouble(10000))));
+    
+            _test(fmt, randomDouble(1e50));
+    
+            _test(fmt, randomDouble(1e-50));
+    
+            _test(fmt, randomDouble(1e100));
+    
+            _test(fmt, randomDouble(1e75));
+    
+            _test(fmt, randomDouble(1e308) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e75) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e65) / ((DecimalFormat) fmt).getMultiplier());
+    
+            _test(fmt, randomDouble(1e-292));
+    
+            _test(fmt, randomDouble(1e-78));
+    
+            _test(fmt, randomDouble(1e-323));
+    
+            _test(fmt, randomDouble(1e-100));
+    
+            _test(fmt, randomDouble(1e-78));
+        }
+    }
+    
+    public void _test(NumberFormat fmt, double value) {
+        _test(fmt, new Double(value));
+    }
+    
+    public void _test(NumberFormat fmt, long value) {
+        _test(fmt, new Long(value));
+    }
+    
+    public void _test(NumberFormat fmt, Number value) {
+        logln("test data = " + value);
+        fmt.setMaximumFractionDigits(999);
+        String s, s2;
+        if (value.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            s = fmt.format(value.doubleValue());
+        else
+            s = fmt.format(value.longValue());
+    
+        Number n = new Double(0);
+        boolean show = verbose;
+        if (DEBUG)
+            logln(
+            /*value.getString(temp) +*/ " F> " + s);
+        try {
+            n = fmt.parse(s);
+        } catch (java.text.ParseException e) {
+            System.out.println(e);
+        }
+    
+        if (DEBUG)
+            logln(s + " P> " /*+ n.getString(temp)*/);
+    
+        if (value.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            s2 = fmt.format(n.doubleValue());
+        else
+            s2 = fmt.format(n.longValue());
+    
+        if (DEBUG)
+            logln(/*n.getString(temp) +*/ " F> " + s2);
+    
+        if (STRING_COMPARE) {
+            if (!s.equals(s2)) {
+                errln("*** STRING ERROR \"" + s + "\" != \"" + s2 + "\"");
+                show = true;
+            }
+        }
+    
+        if (EXACT_NUMERIC_COMPARE) {
+            if (value != n) {
+                errln("*** NUMERIC ERROR");
+                show = true;
+            }
+        } else {
+            // Compute proportional error
+            double error = proportionalError(value, n);
+    
+            if (error > MAX_ERROR) {
+                errln("*** NUMERIC ERROR " + error);
+                show = true;
+            }
+    
+            if (error > max_numeric_error)
+                max_numeric_error = error;
+            if (error < min_numeric_error)
+                min_numeric_error = error;
+        }
+    
+        if (show)
+            logln(
+            /*value.getString(temp) +*/ value.getClass().getName() + " F> " + s + " P> " +
+            /*n.getString(temp) +*/ n.getClass().getName() + " F> " + s2);
+    
+    }
+        
+    public double proportionalError(Number a, Number b) {
+        double aa,bb;
+        
+        if(a.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            aa = a.doubleValue();
+        else
+            aa = a.longValue();
+    
+        if(a.getClass().getName().equalsIgnoreCase("java.lang.Double"))
+            bb = b.doubleValue();
+        else
+            bb = b.longValue();
+    
+        double error = aa - bb;
+        if(aa != 0 && bb != 0) 
+            error /= aa;
+           
+        return Math.abs(error);
+    }   
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java b/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
new file mode 100644
index 0000000..f3d7a49
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
@@ -0,0 +1,306 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+public class NumberFormatSerialTestData {
+    //get Content
+    public static byte[][] getContent() {
+            return content;
+    }
+
+    //NumberFormat.getInstance(Locale.US)
+    static byte[] generalInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 3, 127, 0, 0, 0, 3, 0, 0, 
+        1, 53, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 1, 45, 116, 0, 0, 116, 0, 1, 45, 116, 0, 0, 
+        116, 0, 0, 116, 0, 0, 116, 0, 0, 116, 0, 0, 112, 115, 114, 0, 37, 99, 111, 109, 
+        46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 
+        108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 29, 23, -103, 8, 104, 
+        -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 83, 101, 112, 97, 114, 
+        97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 101, 120, 112, 111, 110, 
+        101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 110, 103, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 105, 103, 110, 67, 0, 
+        17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 
+        9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 116, 116, 101, 114, 110, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 77, 105, 108, 108, 67, 
+        0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 115, 83, 105, 103, 110, 
+        73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 
+        114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 116, 76, 0, 3, 78, 
+        97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 110, 99, 121, 83, 121, 
+        109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 111, 110, 101, 110, 116, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 0, 8, 105, 110, 102, 
+        105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 116, 108, 67, 117, 114, 
+        114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 120, 112, 0, 46, 
+        0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 48, 0, 37, 0, 43, 
+        0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 36, 116, 0, 1, 69, 
+        116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    //NumberFormat.getCurrencyInstance(Locale.US)
+    static byte[] currencyInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 2, 127, 0, 0, 0, 2, 0, 0, 
+        1, 53, 2, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 3, 40, -62, -92, 116, 0, 1, 41, 116, 0, 2, 40, 
+        36, 116, 0, 1, 41, 116, 0, 2, -62, -92, 116, 0, 0, 116, 0, 1, 36, 116, 0, 0, 
+        112, 115, 114, 0, 37, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 
+        116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 
+        108, 115, 80, 29, 23, -103, 8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 
+        109, 97, 108, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 
+        67, 0, 11, 101, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 
+        117, 115, 83, 105, 103, 110, 67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 
+        16, 112, 97, 116, 116, 101, 114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 
+        112, 101, 114, 77, 105, 108, 108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 
+        112, 108, 117, 115, 83, 105, 103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 
+        115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 
+        105, 103, 105, 116, 76, 0, 3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 
+        114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 
+        101, 120, 112, 111, 110, 101, 110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 
+        0, 1, 76, 0, 8, 105, 110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 
+        18, 105, 110, 116, 108, 67, 117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 
+        0, 126, 0, 1, 120, 112, 0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 
+        0, 59, 32, 48, 0, 37, 0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 
+        116, 0, 1, 36, 116, 0, 1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+        
+    };
+
+    //NumberFormat.getPercentInstance(Locale.US)
+    static byte[] percentInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 1, 0, 127, 0, 0, 0, 0, 0, 0, 
+        1, 53, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 100, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 0, 116, 0, 1, 45, 116, 0, 1, 37, 116, 0, 1, 45, 116, 0, 
+        1, 37, 116, 0, 0, 113, 0, 126, 0, 8, 116, 0, 0, 116, 0, 1, 37, 112, 115, 114, 
+        0, 37, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 
+        101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 
+        29, 23, -103, 8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 
+        83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 
+        101, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 
+        110, 103, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 
+        105, 103, 110, 67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 
+        116, 111, 114, 67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 
+        116, 116, 101, 114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 
+        77, 105, 108, 108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 
+        115, 83, 105, 103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 
+        110, 79, 110, 83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 
+        116, 76, 0, 3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 
+        110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 
+        111, 110, 101, 110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 
+        0, 8, 105, 110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 
+        116, 108, 67, 117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 
+        1, 120, 112, 0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 
+        48, 0, 37, 0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 
+        36, 116, 0, 1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    //NumberFormat.getScientificInstance(Locale.US)
+    static byte[] scientificInstance = new byte[]{ 
+        -84, -19, 0, 5, 115, 114, 0, 30, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 11, -1, 
+        3, 98, -40, 114, 48, 58, 2, 0, 22, 90, 0, 27, 100, 101, 99, 105, 109, 97, 108, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 65, 108, 119, 97, 121, 115, 83, 104, 111, 119, 110, 90, 
+        0, 23, 101, 120, 112, 111, 110, 101, 110, 116, 83, 105, 103, 110, 65, 108, 119, 97, 121, 115, 
+        83, 104, 111, 119, 110, 73, 0, 11, 102, 111, 114, 109, 97, 116, 87, 105, 100, 116, 104, 66, 
+        0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 83, 105, 122, 101, 66, 0, 13, 103, 114, 111, 
+        117, 112, 105, 110, 103, 83, 105, 122, 101, 50, 66, 0, 17, 109, 105, 110, 69, 120, 112, 111, 
+        110, 101, 110, 116, 68, 105, 103, 105, 116, 115, 73, 0, 10, 109, 117, 108, 116, 105, 112, 108, 
+        105, 101, 114, 67, 0, 3, 112, 97, 100, 73, 0, 11, 112, 97, 100, 80, 111, 115, 105, 116, 
+        105, 111, 110, 73, 0, 12, 114, 111, 117, 110, 100, 105, 110, 103, 77, 111, 100, 101, 73, 0, 
+        21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 
+        97, 109, 90, 0, 22, 117, 115, 101, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 78, 
+        111, 116, 97, 116, 105, 111, 110, 76, 0, 16, 110, 101, 103, 80, 114, 101, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 
+        83, 116, 114, 105, 110, 103, 59, 76, 0, 16, 110, 101, 103, 83, 117, 102, 102, 105, 120, 80, 
+        97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 116, 105, 
+        118, 101, 80, 114, 101, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 14, 110, 101, 103, 97, 
+        116, 105, 118, 101, 83, 117, 102, 102, 105, 120, 113, 0, 126, 0, 1, 76, 0, 16, 112, 111, 
+        115, 80, 114, 101, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 126, 0, 1, 76, 
+        0, 16, 112, 111, 115, 83, 117, 102, 102, 105, 120, 80, 97, 116, 116, 101, 114, 110, 113, 0, 
+        126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 80, 114, 101, 102, 105, 120, 
+        113, 0, 126, 0, 1, 76, 0, 14, 112, 111, 115, 105, 116, 105, 118, 101, 83, 117, 102, 102, 
+        105, 120, 113, 0, 126, 0, 1, 76, 0, 17, 114, 111, 117, 110, 100, 105, 110, 103, 73, 110, 
+        99, 114, 101, 109, 101, 110, 116, 116, 0, 22, 76, 106, 97, 118, 97, 47, 109, 97, 116, 104, 
+        47, 66, 105, 103, 68, 101, 99, 105, 109, 97, 108, 59, 76, 0, 7, 115, 121, 109, 98, 111, 
+        108, 115, 116, 0, 39, 76, 99, 111, 109, 47, 105, 98, 109, 47, 105, 99, 117, 47, 116, 101, 
+        120, 116, 47, 68, 101, 99, 105, 109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 
+        111, 108, 115, 59, 120, 114, 0, 29, 99, 111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 
+        116, 101, 120, 116, 46, 78, 117, 109, 98, 101, 114, 70, 111, 114, 109, 97, 116, -33, -10, -77, 
+        -65, 19, 125, 7, -24, 3, 0, 11, 90, 0, 12, 103, 114, 111, 117, 112, 105, 110, 103, 85, 
+        115, 101, 100, 66, 0, 17, 109, 97, 120, 70, 114, 97, 99, 116, 105, 111, 110, 68, 105, 103, 
+        105, 116, 115, 66, 0, 16, 109, 97, 120, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 
+        116, 115, 73, 0, 21, 109, 97, 120, 105, 109, 117, 109, 70, 114, 97, 99, 116, 105, 111, 110, 
+        68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 97, 120, 105, 109, 117, 109, 73, 110, 116, 101, 
+        103, 101, 114, 68, 105, 103, 105, 116, 115, 66, 0, 17, 109, 105, 110, 70, 114, 97, 99, 116, 
+        105, 111, 110, 68, 105, 103, 105, 116, 115, 66, 0, 16, 109, 105, 110, 73, 110, 116, 101, 103, 
+        101, 114, 68, 105, 103, 105, 116, 115, 73, 0, 21, 109, 105, 110, 105, 109, 117, 109, 70, 114, 
+        97, 99, 116, 105, 111, 110, 68, 105, 103, 105, 116, 115, 73, 0, 20, 109, 105, 110, 105, 109, 
+        117, 109, 73, 110, 116, 101, 103, 101, 114, 68, 105, 103, 105, 116, 115, 90, 0, 16, 112, 97, 
+        114, 115, 101, 73, 110, 116, 101, 103, 101, 114, 79, 110, 108, 121, 73, 0, 21, 115, 101, 114, 
+        105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 83, 116, 114, 101, 97, 109, 120, 114, 
+        0, 16, 106, 97, 118, 97, 46, 116, 101, 120, 116, 46, 70, 111, 114, 109, 97, 116, -5, -40, 
+        -68, 18, -23, 15, 24, 67, 2, 0, 0, 120, 112, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
+        0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 120, 0, 0, 
+        0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 32, 0, 0, 0, 0, 0, 0, 0, 
+        6, 0, 0, 0, 2, 1, 116, 0, 1, 45, 116, 0, 0, 116, 0, 1, 45, 116, 0, 0, 
+        116, 0, 0, 113, 0, 126, 0, 8, 116, 0, 0, 116, 0, 0, 112, 115, 114, 0, 37, 99, 
+        111, 109, 46, 105, 98, 109, 46, 105, 99, 117, 46, 116, 101, 120, 116, 46, 68, 101, 99, 105, 
+        109, 97, 108, 70, 111, 114, 109, 97, 116, 83, 121, 109, 98, 111, 108, 115, 80, 29, 23, -103, 
+        8, 104, -109, -100, 2, 0, 18, 67, 0, 16, 100, 101, 99, 105, 109, 97, 108, 83, 101, 112, 
+        97, 114, 97, 116, 111, 114, 67, 0, 5, 100, 105, 103, 105, 116, 67, 0, 11, 101, 120, 112, 
+        111, 110, 101, 110, 116, 105, 97, 108, 67, 0, 17, 103, 114, 111, 117, 112, 105, 110, 103, 83, 
+        101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 9, 109, 105, 110, 117, 115, 83, 105, 103, 110, 
+        67, 0, 17, 109, 111, 110, 101, 116, 97, 114, 121, 83, 101, 112, 97, 114, 97, 116, 111, 114, 
+        67, 0, 9, 112, 97, 100, 69, 115, 99, 97, 112, 101, 67, 0, 16, 112, 97, 116, 116, 101, 
+        114, 110, 83, 101, 112, 97, 114, 97, 116, 111, 114, 67, 0, 7, 112, 101, 114, 77, 105, 108, 
+        108, 67, 0, 7, 112, 101, 114, 99, 101, 110, 116, 67, 0, 8, 112, 108, 117, 115, 83, 105, 
+        103, 110, 73, 0, 21, 115, 101, 114, 105, 97, 108, 86, 101, 114, 115, 105, 111, 110, 79, 110, 
+        83, 116, 114, 101, 97, 109, 67, 0, 9, 122, 101, 114, 111, 68, 105, 103, 105, 116, 76, 0, 
+        3, 78, 97, 78, 113, 0, 126, 0, 1, 76, 0, 14, 99, 117, 114, 114, 101, 110, 99, 121, 
+        83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 76, 0, 17, 101, 120, 112, 111, 110, 101, 
+        110, 116, 83, 101, 112, 97, 114, 97, 116, 111, 114, 113, 0, 126, 0, 1, 76, 0, 8, 105, 
+        110, 102, 105, 110, 105, 116, 121, 113, 0, 126, 0, 1, 76, 0, 18, 105, 110, 116, 108, 67, 
+        117, 114, 114, 101, 110, 99, 121, 83, 121, 109, 98, 111, 108, 113, 0, 126, 0, 1, 120, 112, 
+        0, 46, 0, 35, 0, 0, 0, 44, 0, 45, 0, 46, 0, 42, 0, 59, 32, 48, 0, 37, 
+        0, 43, 0, 0, 0, 2, 0, 48, 116, 0, 3, -17, -65, -67, 116, 0, 1, 36, 116, 0, 
+        1, 69, 116, 0, 3, -30, -120, -98, 116, 0, 3, 85, 83, 68, 
+    };
+
+    final static byte[][] content = {generalInstance, currencyInstance, percentInstance, scientificInstance};
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatTest.java b/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
new file mode 100644
index 0000000..ef26ed5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
@@ -0,0 +1,2111 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * Port From:   ICU4C v1.8.1 : format : NumberFormatTest
+ * Source File: $ICU4CRoot/source/test/intltest/numfmtst.cpp
+ **/
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.text.*;
+import com.ibm.icu.text.NumberFormat.*;
+import com.ibm.icu.util.*;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.data.ResourceReader;
+import com.ibm.icu.impl.data.TokenIterator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.math.BigDecimal;
+
+import java.lang.Double;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.ArrayList;
+
+public class NumberFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new NumberFormatTest().run(args);
+    }
+
+    // Test various patterns
+    public void TestPatterns() {
+
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        final String pat[]    = { "#.#", "#.", ".#", "#" };
+        int pat_length = pat.length;
+        final String newpat[] = { "#0.#", "#0.", "#.0", "#" };
+        final String num[]    = { "0",   "0.", ".0", "0" };
+        for (int i=0; i<pat_length; ++i)
+        {
+            DecimalFormat fmt = new DecimalFormat(pat[i], sym);
+            String newp = fmt.toPattern();
+            if (!newp.equals(newpat[i]))
+                errln("FAIL: Pattern " + pat[i] + " should transmute to " + newpat[i] +
+                      "; " + newp + " seen instead");
+
+            String s = ((NumberFormat)fmt).format(0);
+            if (!s.equals(num[i]))
+            {
+                errln("FAIL: Pattern " + pat[i] + " should format zero as " + num[i] +
+                      "; " + s + " seen instead");
+                logln("Min integer digits = " + fmt.getMinimumIntegerDigits());
+            }
+            // BigInteger 0 - ticket#4731
+            s = ((NumberFormat)fmt).format(BigInteger.ZERO);
+            if (!s.equals(num[i]))
+            {
+                errln("FAIL: Pattern " + pat[i] + " should format BigInteger zero as " + num[i] +
+                      "; " + s + " seen instead");
+                logln("Min integer digits = " + fmt.getMinimumIntegerDigits());
+            }
+        }
+    }
+
+    // Test exponential pattern
+    public void TestExponential() {
+
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        final String pat[] = { "0.####E0", "00.000E00", "##0.######E000", "0.###E0;[0.###E0]" };
+        int pat_length = pat.length;
+
+        double val[] = { 0.01234, 123456789, 1.23e300, -3.141592653e-271 };
+        int val_length = val.length;
+        final String valFormat[] = {
+            // 0.####E0
+            "1.234E-2", "1.2346E8", "1.23E300", "-3.1416E-271",
+            // 00.000E00
+            "12.340E-03", "12.346E07", "12.300E299", "-31.416E-272",
+            // ##0.######E000
+            "12.34E-003", "123.4568E006", "1.23E300", "-314.1593E-273",
+            // 0.###E0;[0.###E0]
+            "1.234E-2", "1.235E8", "1.23E300", "[3.142E-271]" };
+        /*double valParse[] =
+            {
+                0.01234, 123460000, 1.23E300, -3.1416E-271,
+                0.01234, 123460000, 1.23E300, -3.1416E-271,
+                0.01234, 123456800, 1.23E300, -3.141593E-271,
+                0.01234, 123500000, 1.23E300, -3.142E-271,
+            };*/ //The variable is never used
+
+        int lval[] = { 0, -1, 1, 123456789 };
+        int lval_length = lval.length;
+        final String lvalFormat[] = {
+            // 0.####E0
+            "0E0", "-1E0", "1E0", "1.2346E8",
+            // 00.000E00
+            "00.000E00", "-10.000E-01", "10.000E-01", "12.346E07",
+            // ##0.######E000
+            "0E000", "-1E000", "1E000", "123.4568E006",
+            // 0.###E0;[0.###E0]
+            "0E0", "[1E0]", "1E0", "1.235E8" };
+        int lvalParse[] =
+            {
+                0, -1, 1, 123460000,
+                0, -1, 1, 123460000,
+                0, -1, 1, 123456800,
+                0, -1, 1, 123500000,
+            };
+        int ival = 0, ilval = 0;
+        for (int p = 0; p < pat_length; ++p) {
+            DecimalFormat fmt = new DecimalFormat(pat[p], sym);
+            logln("Pattern \"" + pat[p] + "\" -toPattern-> \"" + fmt.toPattern() + "\"");
+            int v;
+            for (v = 0; v < val_length; ++v) {
+                String s;
+                s = ((NumberFormat) fmt).format(val[v]);
+                logln(" " + val[v] + " -format-> " + s);
+                if (!s.equals(valFormat[v + ival]))
+                    errln("FAIL: Expected " + valFormat[v + ival]);
+
+                ParsePosition pos = new ParsePosition(0);
+                double a = fmt.parse(s, pos).doubleValue();
+                if (pos.getIndex() == s.length()) {
+                    logln("  -parse-> " + Double.toString(a));
+                    // Use epsilon comparison as necessary
+                } else
+                    errln("FAIL: Partial parse (" + pos.getIndex() + " chars) -> " + a);
+            }
+            for (v = 0; v < lval_length; ++v) {
+                String s;
+                s = ((NumberFormat) fmt).format(lval[v]);
+                logln(" " + lval[v] + "L -format-> " + s);
+                if (!s.equals(lvalFormat[v + ilval]))
+                    errln("ERROR: Expected " + lvalFormat[v + ilval] + " Got: " + s);
+
+                ParsePosition pos = new ParsePosition(0);
+                long a = 0;
+                Number A = fmt.parse(s, pos);
+                if (A != null) {
+                    a = A.longValue();
+                    if (pos.getIndex() == s.length()) {
+                        logln("  -parse-> " + a);
+                        if (a != lvalParse[v + ilval])
+                            errln("FAIL: Expected " + lvalParse[v + ilval]);
+                    } else
+                        errln("FAIL: Partial parse (" + pos.getIndex() + " chars) -> " + Long.toString(a));
+                } else {
+                    errln("Fail to parse the string: " + s);
+                }
+            }
+            ival += val_length;
+            ilval += lval_length;
+        }
+    }
+
+    // Test the handling of quotes
+    public void TestQuotes() {
+
+        StringBuffer pat;
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        pat = new StringBuffer("a'fo''o'b#");
+        DecimalFormat fmt = new DecimalFormat(pat.toString(), sym);
+        String s = ((NumberFormat)fmt).format(123);
+        logln("Pattern \"" + pat + "\"");
+        logln(" Format 123 . " + s);
+        if (!s.equals("afo'ob123"))
+            errln("FAIL: Expected afo'ob123");
+
+        s ="";
+        pat = new StringBuffer("a''b#");
+        fmt = new DecimalFormat(pat.toString(), sym);
+        s = ((NumberFormat)fmt).format(123);
+        logln("Pattern \"" + pat + "\"");
+        logln(" Format 123 . " + s);
+        if (!s.equals("a'b123"))
+            errln("FAIL: Expected a'b123");
+    }
+
+    public void TestParseCurrencyTrailingSymbol() {
+        // see sun bug 4709840
+        NumberFormat fmt = NumberFormat.getCurrencyInstance(Locale.GERMANY);
+        float val = 12345.67f;
+        String str = fmt.format(val);
+        logln("val: " + val + " str: " + str);
+        try {
+            Number num = fmt.parse(str);
+            logln("num: " + num);
+        } catch (ParseException e) {
+            errln("parse of '" + str + "' threw exception: " + e);
+        }
+    }
+
+    /**
+     * Test the handling of the currency symbol in patterns.
+     **/
+    public void TestCurrencySign() {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        StringBuffer pat = new StringBuffer("");
+        char currency = 0x00A4;
+        // "\xA4#,##0.00;-\xA4#,##0.00"
+        pat.append(currency).append("#,##0.00;-").append(currency).append("#,##0.00");
+        DecimalFormat fmt = new DecimalFormat(pat.toString(), sym);
+        String s = ((NumberFormat) fmt).format(1234.56);
+        pat = new StringBuffer("");
+        logln("Pattern \"" + fmt.toPattern() + "\"");
+        logln(" Format " + 1234.56 + " . " + s);
+        if (!s.equals("$1,234.56"))
+            errln("FAIL: Expected $1,234.56");
+        s = "";
+        s = ((NumberFormat) fmt).format(-1234.56);
+        logln(" Format " + Double.toString(-1234.56) + " . " + s);
+        if (!s.equals("-$1,234.56"))
+            errln("FAIL: Expected -$1,234.56");
+
+        pat = new StringBuffer("");
+        // "\xA4\xA4 #,##0.00;\xA4\xA4 -#,##0.00"
+        pat.append(currency).append(currency).append(" #,##0.00;").append(currency).append(currency).append(" -#,##0.00");
+        fmt = new DecimalFormat(pat.toString(), sym);
+        s = "";
+        s = ((NumberFormat) fmt).format(1234.56);
+        logln("Pattern \"" + fmt.toPattern() + "\"");
+        logln(" Format " + Double.toString(1234.56) + " . " + s);
+
+        if (!s.equals("USD 1,234.56"))
+            errln("FAIL: Expected USD 1,234.56");
+        s = "";
+        s = ((NumberFormat) fmt).format(-1234.56);
+        logln(" Format " + Double.toString(-1234.56) + " . " + s);
+        if (!s.equals("USD -1,234.56"))
+            errln("FAIL: Expected USD -1,234.56");
+
+    }
+
+    public void TestSpaceParsing() {
+        // the data are:
+        // the string to be parsed, parsed position, parsed error index
+        String[][] DATA = {
+            {"$124", "4", "-1"},
+            {"$124 $124", "4", "-1"},
+            {"$124 ", "4", "-1"},
+            {"$ 124 ", "5", "-1"},
+            {"$\u00A0124 ", "5", "-1"},
+            {" $ 124 ", "0", "0"}, // TODO: need to handle space correctly
+            {"124$", "0", "3"}, // TODO: need to handle space correctly
+            {"124 $", "5", "-1"},
+        };
+        NumberFormat foo = NumberFormat.getCurrencyInstance();
+        for (int i = 0; i < DATA.length; ++i) {
+            ParsePosition parsePosition = new ParsePosition(0);
+            String stringToBeParsed = DATA[i][0];
+            int parsedPosition = Integer.parseInt(DATA[i][1]);
+            int errorIndex = Integer.parseInt(DATA[i][2]);
+            Number result = foo.parse(stringToBeParsed, parsePosition);
+            if (parsePosition.getIndex() != parsedPosition ||
+                parsePosition.getErrorIndex() != errorIndex) {
+                errln("FAILED parse " + stringToBeParsed);
+            }
+            if (parsePosition.getErrorIndex() == -1 &&
+                result.doubleValue() != 124) {
+                errln("FAILED parse " + stringToBeParsed);
+            }
+        }
+    }
+
+
+    public void TestMultiCurrencySign() {
+        String[][] DATA = {
+            // the fields in the following test are:
+            // locale, 
+            // currency pattern (with negative pattern), 
+            // currency number to be formatted,
+            // currency format using currency symbol name, such as "$" for USD,
+            // currency format using currency ISO name, such as "USD",
+            // currency format using plural name, such as "US dollars".
+            // for US locale
+            {"en_US", "\u00A4#,##0.00;-\u00A4#,##0.00", "1234.56", "$1,234.56", "USD1,234.56", "US dollars1,234.56"}, 
+            {"en_US", "\u00A4#,##0.00;-\u00A4#,##0.00", "-1234.56", "-$1,234.56", "-USD1,234.56", "-US dollars1,234.56"}, 
+            {"en_US", "\u00A4#,##0.00;-\u00A4#,##0.00", "1", "$1.00", "USD1.00", "US dollar1.00"}, 
+            // for CHINA locale
+            {"zh_CN", "\u00A4#,##0.00;(\u00A4#,##0.00)", "1234.56", "\uFFE51,234.56", "CNY1,234.56", "\u4EBA\u6C11\u5E011,234.56"},
+            {"zh_CN", "\u00A4#,##0.00;(\u00A4#,##0.00)", "-1234.56", "(\uFFE51,234.56)", "(CNY1,234.56)", "(\u4EBA\u6C11\u5E011,234.56)"},
+            {"zh_CN", "\u00A4#,##0.00;(\u00A4#,##0.00)", "1", "\uFFE51.00", "CNY1.00", "\u4EBA\u6C11\u5E011.00"}
+        };
+
+        String doubleCurrencyStr = "\u00A4\u00A4";
+        String tripleCurrencyStr = "\u00A4\u00A4\u00A4";
+
+        for (int i=0; i<DATA.length; ++i) {
+            String locale = DATA[i][0];
+            String pat = DATA[i][1];
+            Double numberToBeFormat = new Double(DATA[i][2]);
+            DecimalFormatSymbols sym = new DecimalFormatSymbols(new ULocale(locale));
+            for (int j=1; j<=3; ++j) {
+                // j represents the number of currency sign in the pattern.
+                if (j == 2) {
+                    pat = Utility.replaceAll(pat, "\u00A4", doubleCurrencyStr);
+                } else if (j == 3) {
+                    pat = Utility.replaceAll(pat, "\u00A4\u00A4", tripleCurrencyStr);
+                }
+                DecimalFormat fmt = new DecimalFormat(pat, sym);
+                String s = ((NumberFormat) fmt).format(numberToBeFormat);
+                // DATA[i][3] is the currency format result using a
+                // single currency sign.
+                // DATA[i][4] is the currency format result using
+                // double currency sign.
+                // DATA[i][5] is the currency format result using
+                // triple currency sign.
+                // DATA[i][j+2] is the currency format result using
+                // 'j' number of currency sign.
+                String currencyFormatResult = DATA[i][2+j];
+                if (!s.equals(currencyFormatResult)) {
+                    errln("FAIL format: Expected " + currencyFormatResult);
+                }
+                try {
+                    // mix style parsing
+                    for (int k=3; k<=5; ++k) {
+                      // DATA[i][3] is the currency format result using a
+                      // single currency sign.
+                      // DATA[i][4] is the currency format result using
+                      // double currency sign.
+                      // DATA[i][5] is the currency format result using
+                      // triple currency sign.
+                      String oneCurrencyFormat = DATA[i][k];
+                      if (fmt.parse(oneCurrencyFormat).doubleValue() != 
+                          numberToBeFormat.doubleValue()) {
+                        errln("FAILED parse " + oneCurrencyFormat);
+                      }
+                    }
+                } catch (ParseException e) {
+                    errln("FAILED, DecimalFormat parse currency: " + e.toString());
+                }
+            }
+        }
+    }
+
+    public void TestCurrencyFormatForMixParsing() {
+        MeasureFormat curFmt = MeasureFormat.getCurrencyFormat(new ULocale("en_US"));
+        String[] formats = {
+            "$1,234.56",  // string to be parsed
+            "USD1,234.56",
+            "US dollars1,234.56",
+            "1,234.56 US dollars"
+        };
+        try {
+          for (int i = 0; i < formats.length; ++i) {
+            String stringToBeParsed = formats[i];
+            CurrencyAmount parsedVal = (CurrencyAmount)curFmt.parseObject(stringToBeParsed);
+            Number val = parsedVal.getNumber();
+            if (!val.equals(new BigDecimal("1234.56"))) {
+                errln("FAIL: getCurrencyFormat of default locale (en_US) failed roundtripping the number. val=" + val);
+            }
+            if (!parsedVal.getCurrency().equals(Currency.getInstance("USD"))) {
+                errln("FAIL: getCurrencyFormat of default locale (en_US) failed roundtripping the currency");
+            }
+          }
+        } catch (ParseException e) {
+            errln("parse FAILED: " + e.toString());
+        }
+    }
+
+    public void TestDecimalFormatCurrencyParse() {
+        // Locale.US
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        StringBuffer pat = new StringBuffer("");
+        char currency = 0x00A4;
+        // "\xA4#,##0.00;-\xA4#,##0.00"
+        pat.append(currency).append(currency).append(currency).append("#,##0.00;-").append(currency).append(currency).append(currency).append("#,##0.00");
+        DecimalFormat fmt = new DecimalFormat(pat.toString(), sym);
+        String[][] DATA = {
+            // the data are:
+            // string to be parsed, the parsed result (number)
+            {"$1.00", "1"},    
+            {"USD1.00", "1"},    
+            {"1.00 US dollar", "1"},    
+            {"$1,234.56", "1234.56"},    
+            {"USD1,234.56", "1234.56"},    
+            {"1,234.56 US dollar", "1234.56"},    
+        };
+        try {
+            for (int i = 0; i < DATA.length; ++i) {
+                String stringToBeParsed = DATA[i][0];
+                double parsedResult = Double.parseDouble(DATA[i][1]);
+                Number num = fmt.parse(stringToBeParsed);
+                if (num.doubleValue() != parsedResult) {
+                    errln("FAIL parse: Expected " + parsedResult);
+                }
+            }
+        } catch (ParseException e) {
+            errln("FAILED, DecimalFormat parse currency: " + e.toString());
+        }
+    } 
+
+    /**
+     * Test localized currency patterns.
+     */
+    public void TestCurrency() {
+        String[] DATA = {
+            "fr", "CA", "", "1,50\u00a0$",
+            "de", "DE", "", "1,50\u00a0\u20AC",
+            "de", "DE", "PREEURO", "1,50\u00a0DM",
+            "fr", "FR", "", "1,50\u00a0\u20AC",
+            "fr", "FR", "PREEURO", "1,50\u00a0F",
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            Locale locale = new Locale(DATA[i], DATA[i+1], DATA[i+2]);
+            NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
+            String s = fmt.format(1.50);
+            if (s.equals(DATA[i+3])) {
+                logln("Ok: 1.50 x " + locale + " => " + s);
+            } else {
+                logln("FAIL: 1.50 x " + locale + " => " + s +
+                      ", expected " + DATA[i+3]);
+            }
+        }
+
+        // format currency with CurrencyAmount
+        for (int i=0; i<DATA.length; i+=4) {
+            Locale locale = new Locale(DATA[i], DATA[i+1], DATA[i+2]);
+
+            Currency curr = Currency.getInstance(locale);
+            logln("\nName of the currency is: " + curr.getName(locale, Currency.LONG_NAME, new boolean[] {false}));
+            CurrencyAmount cAmt = new CurrencyAmount(1.5, curr);
+            logln("CurrencyAmount object's hashCode is: " + cAmt.hashCode()); //cover hashCode
+
+            NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
+            String sCurr = fmt.format(cAmt);
+            if (sCurr.equals(DATA[i+3])) {
+                logln("Ok: 1.50 x " + locale + " => " + sCurr);
+            } else {
+                errln("FAIL: 1.50 x " + locale + " => " + sCurr +
+                      ", expected " + DATA[i+3]);
+            }
+        }
+
+        //Cover MeasureFormat.getCurrencyFormat()
+        ULocale save = ULocale.getDefault();
+        ULocale.setDefault(ULocale.US);
+        MeasureFormat curFmt = MeasureFormat.getCurrencyFormat();
+        String strBuf = curFmt.format(new CurrencyAmount(new Float(1234.56), Currency.getInstance("USD")));
+
+        try {
+            CurrencyAmount parsedVal = (CurrencyAmount)curFmt.parseObject(strBuf);
+            Number val = parsedVal.getNumber();
+            if (!val.equals(new BigDecimal("1234.56"))) {
+                errln("FAIL: getCurrencyFormat of default locale (en_US) failed roundtripping the number. val=" + val);
+            }
+            if (!parsedVal.getCurrency().equals(Currency.getInstance("USD"))) {
+                errln("FAIL: getCurrencyFormat of default locale (en_US) failed roundtripping the currency");
+            }
+        }
+        catch (ParseException e) {
+            errln("FAIL: " + e.getMessage());
+        }
+        ULocale.setDefault(save);
+    }
+
+    public void TestCurrencyIsoPluralFormat() {
+        String[][] DATA = {
+            // the data are:
+            // locale, 
+            // currency amount to be formatted,
+            // currency ISO code to be formatted,
+            // format result using CURRENCYSTYLE,
+            // format result using ISOCURRENCYSTYLE,
+            // format result using PLURALCURRENCYSTYLE,
+            {"en_US", "1", "USD", "$1.00", "USD1.00", "1.00 US dollar"},
+            {"en_US", "1234.56", "USD", "$1,234.56", "USD1,234.56", "1,234.56 US dollars"},
+            {"en_US", "-1234.56", "USD", "($1,234.56)", "(USD1,234.56)", "-1,234.56 US dollars"},
+            {"zh_CN", "1", "USD", "US$1.00", "USD1.00", "1.00 \u7F8E\u5143"}, 
+            {"zh_CN", "1234.56", "USD", "US$1,234.56", "USD1,234.56", "1,234.56 \u7F8E\u5143"},
+            {"zh_CN", "1", "CHY", "CHY1.00", "CHY1.00", "1.00 CHY"},
+            {"zh_CN", "1234.56", "CHY", "CHY1,234.56", "CHY1,234.56", "1,234.56 CHY"},
+            {"zh_CN", "1", "CNY", "\uFFE51.00", "CNY1.00", "1.00 \u4EBA\u6C11\u5E01"},
+            {"zh_CN", "1234.56", "CNY", "\uFFE51,234.56", "CNY1,234.56", "1,234.56 \u4EBA\u6C11\u5E01"}, 
+            {"ru_RU", "1", "RUB", "1,00\u00A0\u0440\u0443\u0431.", "1,00\u00A0RUB", "1,00 \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0439 \u0440\u0443\u0431\u043B\u044C"},
+            {"ru_RU", "2", "RUB", "2,00\u00A0\u0440\u0443\u0431.", "2,00\u00A0RUB", "2,00 \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0445 \u0440\u0443\u0431\u043B\u044F"},
+            {"ru_RU", "5", "RUB", "5,00\u00A0\u0440\u0443\u0431.", "5,00\u00A0RUB", "5,00 \u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0445 \u0440\u0443\u0431\u043B\u0435\u0439"},
+            // test locale without currency information
+            {"ti_ET", "-1.23", "USD", "-US$1.23", "-USD1.23", "-1.23 USD"},
+            // test choice format
+            {"es_AR", "1", "INR", "Re.\u00A01,00", "INR\u00A01,00", "1,00 rupia india"},
+        };
+        
+        for (int i=0; i<DATA.length; ++i) {
+          for (int k = NumberFormat.CURRENCYSTYLE;
+               k <= NumberFormat.PLURALCURRENCYSTYLE;
+               ++k) {
+            // k represents currency format style.
+            if ( k != NumberFormat.CURRENCYSTYLE &&
+                 k != NumberFormat.ISOCURRENCYSTYLE &&
+                 k != NumberFormat.PLURALCURRENCYSTYLE ) {
+                continue;
+            }
+            String localeString = DATA[i][0];
+            Double numberToBeFormat = new Double(DATA[i][1]);
+            String currencyISOCode = DATA[i][2];
+            ULocale locale = new ULocale(localeString);
+            NumberFormat numFmt = NumberFormat.getInstance(locale, k);
+            numFmt.setCurrency(Currency.getInstance(currencyISOCode));
+            String strBuf = numFmt.format(numberToBeFormat);
+            int resultDataIndex = k-1;
+            if ( k == NumberFormat.CURRENCYSTYLE ) {
+                resultDataIndex = k+2;
+            }
+            // DATA[i][resultDataIndex] is the currency format result
+            // using 'k' currency style.
+            String formatResult = DATA[i][resultDataIndex];
+            if (!strBuf.equals(formatResult)) {
+                errln("FAIL: Expected " + formatResult + " actual: " + Utility.escape(strBuf));
+            }
+            try {
+                // test parsing, and test parsing for all currency formats.
+                for (int j = 3; j < 6; ++j) {
+                    // DATA[i][3] is the currency format result using 
+                    // CURRENCYSTYLE formatter.
+                    // DATA[i][4] is the currency format result using
+                    // ISOCURRENCYSTYLE formatter.
+                    // DATA[i][5] is the currency format result using
+                    // PLURALCURRENCYSTYLE formatter.
+                    String oneCurrencyFormatResult = DATA[i][j];
+                    Number val = numFmt.parse(oneCurrencyFormatResult);
+                    if (val.doubleValue() != numberToBeFormat.doubleValue()) {
+                        errln("FAIL: getCurrencyFormat of locale " + localeString + " failed roundtripping the number. val=" + val + "; expected: " + numberToBeFormat);
+                    }
+                }
+            }
+            catch (ParseException e) {
+                errln("FAIL: " + e.getMessage());
+            }
+          }  
+        }
+    }
+
+    /**
+     * Test the Currency object handling, new as of ICU 2.2.
+     */
+    public void TestCurrencyObject() {
+        NumberFormat fmt =
+            NumberFormat.getCurrencyInstance(Locale.US);
+
+        expectCurrency(fmt, null, 1234.56, "$1,234.56");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.FRANCE),
+                       1234.56, "\u20AC1,234.56"); // Euro
+
+        expectCurrency(fmt, Currency.getInstance(Locale.JAPAN),
+                       1234.56, "\u00A51,235"); // Yen
+
+        expectCurrency(fmt, Currency.getInstance(new Locale("fr", "CH", "")),
+                       1234.56, "Fr.1,234.55"); // 0.05 rounding
+
+        expectCurrency(fmt, Currency.getInstance(Locale.US),
+                       1234.56, "$1,234.56");
+
+        fmt = NumberFormat.getCurrencyInstance(Locale.FRANCE);
+
+        expectCurrency(fmt, null, 1234.56, "1 234,56 \u20AC");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.JAPAN),
+                       1234.56, "1 235 \u00A5JP"); // Yen
+
+        expectCurrency(fmt, Currency.getInstance(new Locale("fr", "CH", "")),
+                       1234.56, "1 234,55 sFr."); // 0.25 rounding
+
+        expectCurrency(fmt, Currency.getInstance(Locale.US),
+                       1234.56, "1 234,56 $US");
+
+        expectCurrency(fmt, Currency.getInstance(Locale.FRANCE),
+                       1234.56, "1 234,56 \u20AC"); // Euro
+    }
+
+    public void TestCurrencyPatterns() {
+        int i;
+        Locale[] locs = NumberFormat.getAvailableLocales();
+        for (i=0; i<locs.length; ++i) {
+            NumberFormat nf = NumberFormat.getCurrencyInstance(locs[i]);
+            // Make sure currency formats do not have a variable number
+            // of fraction digits
+            int min = nf.getMinimumFractionDigits();
+            int max = nf.getMaximumFractionDigits();
+            if (min != max) {
+                String a = nf.format(1.0);
+                String b = nf.format(1.125);
+                errln("FAIL: " + locs[i] +
+                      " min fraction digits != max fraction digits; "+
+                      "x 1.0 => " + a +
+                      "; x 1.125 => " + b);
+            }
+
+            // Make sure EURO currency formats have exactly 2 fraction digits
+            if (nf instanceof DecimalFormat) {
+                Currency curr = ((DecimalFormat) nf).getCurrency();
+                if (curr != null && "EUR".equals(curr.getCurrencyCode())) {
+                    if (min != 2 || max != 2) {
+                        String a = nf.format(1.0);
+                        errln("FAIL: " + locs[i] +
+                              " is a EURO format but it does not have 2 fraction digits; "+
+                              "x 1.0 => " +
+                              a);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Do rudimentary testing of parsing.
+     */
+    public void TestParse() {
+        String arg = "0.0";
+        DecimalFormat format = new DecimalFormat("00");
+        double aNumber = 0l;
+        try {
+            aNumber = format.parse(arg).doubleValue();
+        } catch (ParseException e) {
+            System.out.println(e);
+        }
+        logln("parse(" + arg + ") = " + aNumber);
+    }
+
+    /**
+     * Test proper rounding by the format method.
+     */
+    public void TestRounding487() {
+
+        NumberFormat nf = NumberFormat.getInstance();
+        roundingTest(nf, 0.00159999, 4, "0.0016");
+        roundingTest(nf, 0.00995, 4, "0.01");
+
+        roundingTest(nf, 12.3995, 3, "12.4");
+
+        roundingTest(nf, 12.4999, 0, "12");
+        roundingTest(nf, - 19.5, 0, "-20");
+
+    }
+
+    /**
+     * Test the functioning of the secondary grouping value.
+     */
+    public void TestSecondaryGrouping() {
+
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat f = new DecimalFormat("#,##,###", US);
+
+        expect(f, 123456789L, "12,34,56,789");
+        expectPat(f, "#,##,###");
+        f.applyPattern("#,###");
+
+        f.setSecondaryGroupingSize(4);
+        expect(f, 123456789L, "12,3456,789");
+        expectPat(f, "#,####,###");
+        NumberFormat g = NumberFormat.getInstance(new Locale("hi", "IN"));
+
+        String out = "";
+        long l = 1876543210L;
+        out = g.format(l);
+
+        // expect "1,87,65,43,210", but with Hindi digits
+        //         01234567890123
+        boolean ok = true;
+        if (out.length() != 14) {
+            ok = false;
+        } else {
+            for (int i = 0; i < out.length(); ++i) {
+                boolean expectGroup = false;
+                switch (i) {
+                    case 1 :
+                    case 4 :
+                    case 7 :
+                    case 10 :
+                        expectGroup = true;
+                        break;
+                }
+                // Later -- fix this to get the actual grouping
+                // character from the resource bundle.
+                boolean isGroup = (out.charAt(i) == 0x002C);
+                if (isGroup != expectGroup) {
+                    ok = false;
+                    break;
+                }
+            }
+        }
+        if (!ok) {
+            errln("FAIL  Expected "+ l + " x hi_IN . \"1,87,65,43,210\" (with Hindi digits), got \""
+                    + out + "\"");
+        } else {
+            logln("Ok    " + l + " x hi_IN . \"" + out + "\"");
+        }
+    }
+
+    public void roundingTest(NumberFormat nf, double x, int maxFractionDigits, final String expected) {
+        nf.setMaximumFractionDigits(maxFractionDigits);
+        String out = nf.format(x);
+        logln(x + " formats with " + maxFractionDigits + " fractional digits to " + out);
+        if (!out.equals(expected))
+            errln("FAIL: Expected " + expected);
+    }
+
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestExponent() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
+        DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
+        int n = 1234;
+        expect2(fmt1, n, "1.234E3");
+        expect2(fmt2, n, "1.234E+3");
+        expect(fmt1, "1.234E+3", n); // Either format should parse "E+3"
+
+    }
+
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestScientific() {
+
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+
+        // Test pattern round-trip
+        final String PAT[] = { "#E0", "0.####E0", "00.000E00", "##0.####E000", "0.###E0;[0.###E0]" };
+        int PAT_length = PAT.length;
+        int DIGITS[] = {
+            // min int, max int, min frac, max frac
+            0, 1, 0, 0, // "#E0"
+            1, 1, 0, 4, // "0.####E0"
+            2, 2, 3, 3, // "00.000E00"
+            1, 3, 0, 4, // "##0.####E000"
+            1, 1, 0, 3, // "0.###E0;[0.###E0]"
+        };
+        for (int i = 0; i < PAT_length; ++i) {
+            String pat = PAT[i];
+            DecimalFormat df = new DecimalFormat(pat, US);
+            String pat2 = df.toPattern();
+            if (pat.equals(pat2)) {
+                logln("Ok   Pattern rt \"" + pat + "\" . \"" + pat2 + "\"");
+            } else {
+                errln("FAIL Pattern rt \"" + pat + "\" . \"" + pat2 + "\"");
+            }
+            // Make sure digit counts match what we expect
+            if (df.getMinimumIntegerDigits() != DIGITS[4 * i]
+                || df.getMaximumIntegerDigits() != DIGITS[4 * i + 1]
+                || df.getMinimumFractionDigits() != DIGITS[4 * i + 2]
+                || df.getMaximumFractionDigits() != DIGITS[4 * i + 3]) {
+                errln("FAIL \""+ pat+ "\" min/max int; min/max frac = "
+                        + df.getMinimumIntegerDigits() + "/"
+                        + df.getMaximumIntegerDigits() + ";"
+                        + df.getMinimumFractionDigits() + "/"
+                        + df.getMaximumFractionDigits() + ", expect "
+                        + DIGITS[4 * i] + "/"
+                        + DIGITS[4 * i + 1] + ";"
+                        + DIGITS[4 * i + 2] + "/"
+                        + DIGITS[4 * i + 3]);
+            }
+        }
+
+        expect2(new DecimalFormat("#E0", US), 12345.0, "1.2345E4");
+        expect(new DecimalFormat("0E0", US), 12345.0, "1E4");
+
+        // pattern of NumberFormat.getScientificInstance(Locale.US) = "0.######E0" not "#E0"
+        // so result = 1.234568E4 not 1.2345678901E4
+        //when the pattern problem is finalized, delete comment mark'//'
+        //of the following code
+        expect2(NumberFormat.getScientificInstance(Locale.US), 12345.678901, "1.2345678901E4");
+        logln("Testing NumberFormat.getScientificInstance(ULocale) ...");
+        expect2(NumberFormat.getScientificInstance(ULocale.US), 12345.678901, "1.2345678901E4");
+
+        expect(new DecimalFormat("##0.###E0", US), 12345.0, "12.34E3");
+        expect(new DecimalFormat("##0.###E0", US), 12345.00001, "12.35E3");
+        expect2(new DecimalFormat("##0.####E0", US), 12345, "12.345E3");
+
+        // pattern of NumberFormat.getScientificInstance(Locale.US) = "0.######E0" not "#E0"
+        // so result = 1.234568E4 not 1.2345678901E4
+        expect2(NumberFormat.getScientificInstance(Locale.FRANCE), 12345.678901, "1,2345678901E4");
+        logln("Testing NumberFormat.getScientificInstance(ULocale) ...");
+        expect2(NumberFormat.getScientificInstance(ULocale.FRANCE), 12345.678901, "1,2345678901E4");
+
+        expect(new DecimalFormat("##0.####E0", US), 789.12345e-9, "789.12E-9");
+        expect2(new DecimalFormat("##0.####E0", US), 780.e-9, "780E-9");
+        expect(new DecimalFormat(".###E0", US), 45678.0, ".457E5");
+        expect2(new DecimalFormat(".###E0", US), 0, ".0E0");
+        /*
+        expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
+                                     new DecimalFormat("##E0", US),
+                                     new DecimalFormat("####E0", US),
+                                     new DecimalFormat("0E0", US),
+                                     new DecimalFormat("00E0", US),
+                                     new DecimalFormat("000E0", US),
+                                   },
+               new Long(45678000),
+               new String[] { "4.5678E7",
+                              "45.678E6",
+                              "4567.8E4",
+                              "5E7",
+                              "46E6",
+                              "457E5",
+                            }
+               );
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect2(new DecimalFormat("#E0", US), 45678000, "4.5678E7");
+        expect2(new DecimalFormat("##E0", US), 45678000, "45.678E6");
+        expect2(new DecimalFormat("####E0", US), 45678000, "4567.8E4");
+        expect(new DecimalFormat("0E0", US), 45678000, "5E7");
+        expect(new DecimalFormat("00E0", US), 45678000, "46E6");
+        expect(new DecimalFormat("000E0", US), 45678000, "457E5");
+        /*
+        expect(new DecimalFormat("###E0", US, status),
+               new Object[] { new Double(0.0000123), "12.3E-6",
+                              new Double(0.000123), "123E-6",
+                              new Double(0.00123), "1.23E-3",
+                              new Double(0.0123), "12.3E-3",
+                              new Double(0.123), "123E-3",
+                              new Double(1.23), "1.23E0",
+                              new Double(12.3), "12.3E0",
+                              new Double(123), "123E0",
+                              new Double(1230), "1.23E3",
+                             });
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect2(new DecimalFormat("###E0", US), 0.0000123, "12.3E-6");
+        expect2(new DecimalFormat("###E0", US), 0.000123, "123E-6");
+        expect2(new DecimalFormat("###E0", US), 0.00123, "1.23E-3");
+        expect2(new DecimalFormat("###E0", US), 0.0123, "12.3E-3");
+        expect2(new DecimalFormat("###E0", US), 0.123, "123E-3");
+        expect2(new DecimalFormat("###E0", US), 1.23, "1.23E0");
+        expect2(new DecimalFormat("###E0", US), 12.3, "12.3E0");
+        expect2(new DecimalFormat("###E0", US), 123.0, "123E0");
+        expect2(new DecimalFormat("###E0", US), 1230.0, "1.23E3");
+        /*
+        expect(new DecimalFormat("0.#E+00", US, status),
+               new Object[] { new Double(0.00012), "1.2E-04",
+                              new Long(12000),     "1.2E+04",
+                             });
+        !
+        ! Unroll this test into individual tests below...
+        !
+        */
+        expect2(new DecimalFormat("0.#E+00", US), 0.00012, "1.2E-04");
+        expect2(new DecimalFormat("0.#E+00", US), 12000, "1.2E+04");
+    }
+
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestPad() {
+
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect2(new DecimalFormat("*^##.##", US), 0, "^^^^0");
+        expect2(new DecimalFormat("*^##.##", US), -1.3, "^-1.3");
+        expect2(
+            new DecimalFormat("##0.0####E0*_ 'g-m/s^2'", US),
+            0,
+            "0.0E0______ g-m/s^2");
+        expect(
+            new DecimalFormat("##0.0####E0*_ 'g-m/s^2'", US),
+            1.0 / 3,
+            "333.333E-3_ g-m/s^2");
+        expect2(new DecimalFormat("##0.0####*_ 'g-m/s^2'", US), 0, "0.0______ g-m/s^2");
+        expect(
+            new DecimalFormat("##0.0####*_ 'g-m/s^2'", US),
+            1.0 / 3,
+            "0.33333__ g-m/s^2");
+
+        // Test padding before a sign
+        final String formatStr = "*x#,###,###,##0.0#;*x(###,###,##0.0#)";
+        expect2(new DecimalFormat(formatStr, US), -10, "xxxxxxxxxx(10.0)");
+        expect2(new DecimalFormat(formatStr, US), -1000, "xxxxxxx(1,000.0)");
+        expect2(new DecimalFormat(formatStr, US), -1000000, "xxx(1,000,000.0)");
+        expect2(new DecimalFormat(formatStr, US), -100.37, "xxxxxxxx(100.37)");
+        expect2(new DecimalFormat(formatStr, US), -10456.37, "xxxxx(10,456.37)");
+        expect2(new DecimalFormat(formatStr, US), -1120456.37, "xx(1,120,456.37)");
+        expect2(new DecimalFormat(formatStr, US), -112045600.37, "(112,045,600.37)");
+        expect2(new DecimalFormat(formatStr, US), -1252045600.37, "(1,252,045,600.37)");
+
+        expect2(new DecimalFormat(formatStr, US), 10, "xxxxxxxxxxxx10.0");
+        expect2(new DecimalFormat(formatStr, US), 1000, "xxxxxxxxx1,000.0");
+        expect2(new DecimalFormat(formatStr, US), 1000000, "xxxxx1,000,000.0");
+        expect2(new DecimalFormat(formatStr, US), 100.37, "xxxxxxxxxx100.37");
+        expect2(new DecimalFormat(formatStr, US), 10456.37, "xxxxxxx10,456.37");
+        expect2(new DecimalFormat(formatStr, US), 1120456.37, "xxxx1,120,456.37");
+        expect2(new DecimalFormat(formatStr, US), 112045600.37, "xx112,045,600.37");
+        expect2(new DecimalFormat(formatStr, US), 10252045600.37, "10,252,045,600.37");
+
+        // Test padding between a sign and a number
+        final String formatStr2 = "#,###,###,##0.0#*x;(###,###,##0.0#*x)";
+        expect2(new DecimalFormat(formatStr2, US), -10, "(10.0xxxxxxxxxx)");
+        expect2(new DecimalFormat(formatStr2, US), -1000, "(1,000.0xxxxxxx)");
+        expect2(new DecimalFormat(formatStr2, US), -1000000, "(1,000,000.0xxx)");
+        expect2(new DecimalFormat(formatStr2, US), -100.37, "(100.37xxxxxxxx)");
+        expect2(new DecimalFormat(formatStr2, US), -10456.37, "(10,456.37xxxxx)");
+        expect2(new DecimalFormat(formatStr2, US), -1120456.37, "(1,120,456.37xx)");
+        expect2(new DecimalFormat(formatStr2, US), -112045600.37, "(112,045,600.37)");
+        expect2(new DecimalFormat(formatStr2, US), -1252045600.37, "(1,252,045,600.37)");
+
+        expect2(new DecimalFormat(formatStr2, US), 10, "10.0xxxxxxxxxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 1000, "1,000.0xxxxxxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 1000000, "1,000,000.0xxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 100.37, "100.37xxxxxxxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 10456.37, "10,456.37xxxxxxx");
+        expect2(new DecimalFormat(formatStr2, US), 1120456.37, "1,120,456.37xxxx");
+        expect2(new DecimalFormat(formatStr2, US), 112045600.37, "112,045,600.37xx");
+        expect2(new DecimalFormat(formatStr2, US), 10252045600.37, "10,252,045,600.37");
+
+        //testing the setPadCharacter(UnicodeString) and getPadCharacterString()
+        DecimalFormat fmt = new DecimalFormat("#", US);
+        char padString = 'P';
+        fmt.setPadCharacter(padString);
+        expectPad(fmt, "*P##.##", DecimalFormat.PAD_BEFORE_PREFIX, 5, padString);
+        fmt.setPadCharacter('^');
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, '^');
+        //commented untill implementation is complete
+        /*  fmt.setPadCharacter((UnicodeString)"^^^");
+          expectPad(fmt, "*^^^#", DecimalFormat.kPadBeforePrefix, 3, (UnicodeString)"^^^");
+          padString.remove();
+          padString.append((UChar)0x0061);
+          padString.append((UChar)0x0302);
+          fmt.setPadCharacter(padString);
+          UChar patternChars[]={0x002a, 0x0061, 0x0302, 0x0061, 0x0302, 0x0023, 0x0000};
+          UnicodeString pattern(patternChars);
+          expectPad(fmt, pattern , DecimalFormat.kPadBeforePrefix, 4, padString);
+          */
+    }
+
+    /**
+     * Upgrade to alphaWorks
+     */
+    public void TestPatterns2() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", US);
+
+        char hat = 0x005E; /*^*/
+
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, hat);
+        expectPad(fmt, "$*^#", DecimalFormat.PAD_AFTER_PREFIX, 2, hat);
+        expectPad(fmt, "#*^", DecimalFormat.PAD_BEFORE_SUFFIX, 1, hat);
+        expectPad(fmt, "#$*^", DecimalFormat.PAD_AFTER_SUFFIX, 2, hat);
+        expectPad(fmt, "$*^$#", -1);
+        expectPad(fmt, "#$*^$", -1);
+        expectPad(fmt, "'pre'#,##0*x'post'", DecimalFormat.PAD_BEFORE_SUFFIX, 12, (char) 0x0078 /*x*/);
+        expectPad(fmt, "''#0*x", DecimalFormat.PAD_BEFORE_SUFFIX, 3, (char) 0x0078 /*x*/);
+        expectPad(fmt, "'I''ll'*a###.##", DecimalFormat.PAD_AFTER_PREFIX, 10, (char) 0x0061 /*a*/);
+
+        fmt.applyPattern("AA#,##0.00ZZ");
+        fmt.setPadCharacter(hat);
+
+        fmt.setFormatWidth(10);
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_PREFIX);
+        expectPat(fmt, "*^AA#,##0.00ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_SUFFIX);
+        expectPat(fmt, "AA#,##0.00*^ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_SUFFIX);
+        expectPat(fmt, "AA#,##0.00ZZ*^");
+
+        //            12  3456789012
+        String exp = "AA*^#,##0.00ZZ";
+        fmt.setFormatWidth(12);
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_PREFIX);
+        expectPat(fmt, exp);
+
+        fmt.setFormatWidth(13);
+        //              12  34567890123
+        expectPat(fmt, "AA*^##,##0.00ZZ");
+
+        fmt.setFormatWidth(14);
+        //              12  345678901234
+        expectPat(fmt, "AA*^###,##0.00ZZ");
+
+        fmt.setFormatWidth(15);
+        //              12  3456789012345
+        expectPat(fmt, "AA*^####,##0.00ZZ"); // This is the interesting case
+
+        fmt.setFormatWidth(16);
+        //              12  34567890123456
+        expectPat(fmt, "AA*^#,###,##0.00ZZ");
+    }
+
+    public void TestRegistration() {
+        final ULocale SRC_LOC = ULocale.FRANCE;
+        final ULocale SWAP_LOC = ULocale.US;
+
+        class TestFactory extends SimpleNumberFormatFactory {
+            NumberFormat currencyStyle;
+
+            TestFactory() {
+                super(SRC_LOC, true);
+                currencyStyle = NumberFormat.getIntegerInstance(SWAP_LOC);
+            }
+
+            public NumberFormat createFormat(ULocale loc, int formatType) {
+                if (formatType == FORMAT_CURRENCY) {
+                    return currencyStyle;
+                }
+                return null;
+            }
+        }
+
+        NumberFormat f0 = NumberFormat.getIntegerInstance(SWAP_LOC);
+        NumberFormat f1 = NumberFormat.getIntegerInstance(SRC_LOC);
+        NumberFormat f2 = NumberFormat.getCurrencyInstance(SRC_LOC);
+        Object key = NumberFormat.registerFactory(new TestFactory());
+        NumberFormat f3 = NumberFormat.getCurrencyInstance(SRC_LOC);
+        NumberFormat f4 = NumberFormat.getIntegerInstance(SRC_LOC);
+        NumberFormat.unregister(key); // restore for other tests
+        NumberFormat f5 = NumberFormat.getCurrencyInstance(SRC_LOC);
+
+        float n = 1234.567f;
+        logln("f0 swap int: " + f0.format(n));
+        logln("f1 src int: " + f1.format(n));
+        logln("f2 src cur: " + f2.format(n));
+        logln("f3 reg cur: " + f3.format(n));
+        logln("f4 reg int: " + f4.format(n));
+        logln("f5 unreg cur: " + f5.format(n));
+
+        if (!f3.format(n).equals(f0.format(n))) {
+            errln("registered service did not match");
+        }
+        if (!f4.format(n).equals(f1.format(n))) {
+            errln("registered service did not inherit");
+        }
+        if (!f5.format(n).equals(f2.format(n))) {
+            errln("unregistered service did not match original");
+        }
+    }
+
+    public void TestScientific2() {
+        // jb 2552
+        DecimalFormat fmt = (DecimalFormat)NumberFormat.getCurrencyInstance();
+        Number num = new Double(12.34);
+        expect(fmt, num, "$12.34");
+        fmt.setScientificNotation(true);
+        expect(fmt, num, "$1.23E1");
+        fmt.setScientificNotation(false);
+        expect(fmt, num, "$12.34");
+    }
+
+    public void TestScientificGrouping() {
+        // jb 2552
+        DecimalFormat fmt = new DecimalFormat("###.##E0");
+        expect(fmt, .01234, "12.3E-3");
+        expect(fmt, .1234, "123E-3");
+        expect(fmt, 1.234, "1.23E0");
+        expect(fmt, 12.34, "12.3E0");
+        expect(fmt, 123.4, "123E0");
+        expect(fmt, 1234, "1.23E3");
+    }
+
+    // additional coverage tests
+
+    // sigh, can't have static inner classes, why not?
+
+    static final class PI extends Number {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = -305601227915602172L;
+
+        private PI() {}
+        public int intValue() { return (int)Math.PI; }
+        public long longValue() { return (long)Math.PI; }
+        public float  floatValue() { return (float)Math.PI; }
+        public double doubleValue() { return (double)Math.PI; }
+        public byte byteValue() { return (byte)Math.PI; }
+        public short shortValue() { return (short)Math.PI; }
+
+        public static final Number INSTANCE = new PI();
+    }
+
+    public void TestCoverage() {
+        NumberFormat fmt = NumberFormat.getNumberInstance(); // default locale
+        logln(fmt.format(new BigInteger("1234567890987654321234567890987654321", 10)));
+
+        fmt = NumberFormat.getScientificInstance(); // default locale
+
+        logln(fmt.format(PI.INSTANCE));
+
+        try {
+            logln(fmt.format("12345"));
+            errln("numberformat of string did not throw exception");
+        }
+        catch (Exception e) {
+            logln("PASS: numberformat of string failed as expected");
+        }
+
+        int hash = fmt.hashCode();
+        logln("hash code " + hash);
+
+        logln("compare to string returns: " + fmt.equals(""));
+
+        // For ICU 2.6 - alan
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat df = new DecimalFormat("'*&'' '\u00A4' ''&*' #,##0.00", US);
+        df.setCurrency(Currency.getInstance("INR"));
+        expect2(df, 1.0, "*&' \u20a8 '&* 1.00");
+        expect2(df, -2.0, "-*&' \u20a8 '&* 2.00");
+        df.applyPattern("#,##0.00 '*&'' '\u00A4' ''&*'");
+        expect2(df, 2.0, "2.00 *&' \u20a8 '&*");
+        expect2(df, -1.0, "-1.00 *&' \u20a8 '&*");
+
+//#if defined(FOUNDATION10)
+//##        com.ibm.icu.math.BigDecimal r = df.getRoundingIncrement();
+//#else
+        java.math.BigDecimal r = df.getRoundingIncrement();
+//#endif
+        if (r != null) {
+            errln("FAIL: rounding = " + r + ", expect null");
+        }
+
+        if (df.isScientificNotation()) {
+            errln("FAIL: isScientificNotation = true, expect false");
+        }
+
+        df.applyPattern("0.00000");
+        df.setScientificNotation(true);
+        if (!df.isScientificNotation()) {
+            errln("FAIL: isScientificNotation = false, expect true");
+        }
+        df.setMinimumExponentDigits((byte)2);
+        if (df.getMinimumExponentDigits() != 2) {
+            errln("FAIL: getMinimumExponentDigits = " +
+                  df.getMinimumExponentDigits() + ", expect 2");
+        }
+        df.setExponentSignAlwaysShown(true);
+        if (!df.isExponentSignAlwaysShown()) {
+            errln("FAIL: isExponentSignAlwaysShown = false, expect true");
+        }
+        df.setSecondaryGroupingSize(0);
+        if (df.getSecondaryGroupingSize() != 0) {
+            errln("FAIL: getSecondaryGroupingSize = " +
+                  df.getSecondaryGroupingSize() + ", expect 0");
+        }
+        expect2(df, 3.14159, "3.14159E+00");
+
+        // DecimalFormatSymbols#getInstance
+        DecimalFormatSymbols decsym1 = DecimalFormatSymbols.getInstance();
+        DecimalFormatSymbols decsym2 = new DecimalFormatSymbols();
+        if (!decsym1.equals(decsym2)) {
+            errln("FAIL: DecimalFormatSymbols returned by getInstance()" +
+            "does not match new DecimalFormatSymbols().");
+        }
+        decsym1 = DecimalFormatSymbols.getInstance(Locale.JAPAN);
+        decsym2 = DecimalFormatSymbols.getInstance(ULocale.JAPAN);
+        if (!decsym1.equals(decsym2)) {
+            errln("FAIL: DecimalFormatSymbols returned by getInstance(Locale.JAPAN)" +
+            "does not match the one returned by getInstance(ULocale.JAPAN).");
+        }
+
+        // DecimalFormatSymbols#getAvailableLocales/#getAvailableULocales
+        Locale[] allLocales = DecimalFormatSymbols.getAvailableLocales();
+        if (allLocales.length == 0) {
+            errln("FAIL: Got a empty list for DecimalFormatSymbols.getAvailableLocales");
+        } else {
+            logln("PASS: " + allLocales.length +
+                    " available locales returned by DecimalFormatSymbols.getAvailableLocales");
+        }
+        ULocale[] allULocales = DecimalFormatSymbols.getAvailableULocales();
+        if (allULocales.length == 0) {
+            errln("FAIL: Got a empty list for DecimalFormatSymbols.getAvailableLocales");
+        } else {
+            logln("PASS: " + allULocales.length +
+                    " available locales returned by DecimalFormatSymbols.getAvailableULocales");
+        }
+    }
+
+    public void TestWhiteSpaceParsing() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("a  b#0c  ", US);
+        int n = 1234;
+        expect(fmt, "a b1234c ", n);
+        expect(fmt, "a   b1234c   ", n);
+    }
+
+    /**
+     * Test currencies whose display name is a ChoiceFormat.
+     */
+    public void TestComplexCurrency() {
+        Locale loc = new Locale("kn", "IN", "");
+        NumberFormat fmt = NumberFormat.getCurrencyInstance(loc);
+
+        expect2(fmt, 1.0, "Re.\u00a01.00");
+        expect(fmt, 1.001, "Re.\u00a01.00"); // tricky
+        expect2(fmt, 12345678.0, "Rs.\u00a01,23,45,678.00");
+        expect2(fmt, 0.5, "Rs.\u00a00.50");
+        expect2(fmt, -1.0, "-Re.\u00a01.00");
+        expect2(fmt, -10.0, "-Rs.\u00a010.00");
+    }
+
+    public void TestCurrencyKeyword() {
+    ULocale locale = new ULocale("th_TH@currency=QQQ");
+    NumberFormat format = NumberFormat.getCurrencyInstance(locale);
+    String result = format.format(12.34f);
+    if (!"QQQ12.34".equals(result)) {
+        errln("got unexpected currency: " + result);
+    }
+    }
+
+    public void TestThreadedFormat() {
+
+        class FormatTask implements Runnable {
+            DecimalFormat fmt;
+            StringBuffer buf;
+            boolean inc;
+            float num;
+
+            FormatTask(DecimalFormat fmt, int index) {
+                this.fmt = fmt;
+                this.buf = new StringBuffer();
+                this.inc = (index & 0x1) == 0;
+                this.num = inc ? 0 : 10000;
+            }
+
+            public void run() {
+        if (inc) {
+            while (num < 10000) {
+            buf.append(fmt.format(num) + "\n");
+            num += 3.14159;
+            }
+        } else {
+            while (num > 0) {
+            buf.append(fmt.format(num) + "\n");
+            num -= 3.14159;
+            }
+        }
+        }
+
+        String result() {
+        return buf.toString();
+        }
+    }
+
+        DecimalFormat fmt = new DecimalFormat("0.####");
+        FormatTask[] tasks = new FormatTask[8];
+        for (int i = 0; i < tasks.length; ++i) {
+        tasks[i] = new FormatTask(fmt, i);
+    }
+
+    TestUtil.runUntilDone(tasks);
+
+        for (int i = 2; i < tasks.length; i++) {
+        String str1 = tasks[i].result();
+        String str2 = tasks[i-2].result();
+            if (!str1.equals(str2)) {
+                System.out.println("mismatch at " + i);
+                System.out.println(str1);
+                System.out.println(str2);
+                errln("decimal format thread mismatch");
+
+                break;
+            }
+            str1 = str2;
+        }
+    }
+
+    public void TestPerMill() {
+        DecimalFormat fmt = new DecimalFormat("###.###\u2030");
+        assertEquals("0.4857 x ###.###\u2030",
+                     "485.7\u2030", fmt.format(0.4857));
+
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.ENGLISH);
+        sym.setPerMill('m');
+        DecimalFormat fmt2 = new DecimalFormat("", sym);
+        fmt2.applyLocalizedPattern("###.###m");
+        assertEquals("0.4857 x ###.###m",
+                     "485.7m", fmt2.format(0.4857));
+    }
+
+    public void TestIllegalPatterns() {
+        // Test cases:
+        // Prefix with "-:" for illegal patterns
+        // Prefix with "+:" for legal patterns
+        String DATA[] = {
+            // Unquoted special characters in the suffix are illegal
+            "-:000.000|###",
+            "+:000.000'|###'",
+        };
+        for (int i=0; i<DATA.length; ++i) {
+            String pat=DATA[i];
+            boolean valid = pat.charAt(0) == '+';
+            pat = pat.substring(2);
+            Exception e = null;
+            try {
+                // locale doesn't matter here
+                new DecimalFormat(pat);
+            } catch (IllegalArgumentException e1) {
+                e = e1;
+            } catch (IndexOutOfBoundsException e1) {
+                e = e1;
+            }
+            String msg = (e==null) ? "success" : e.getMessage();
+            if ((e==null) == valid) {
+                logln("Ok: pattern \"" + pat + "\": " + msg);
+            } else {
+                errln("FAIL: pattern \"" + pat + "\" should have " +
+                      (valid?"succeeded":"failed") + "; got " + msg);
+            }
+        }
+    }
+
+    /**
+     * Parse a CurrencyAmount using the given NumberFormat, with
+     * the 'delim' character separating the number and the currency.
+     */
+    private static CurrencyAmount parseCurrencyAmount(String str, NumberFormat fmt,
+                                                      char delim)
+        throws ParseException {
+        int i = str.indexOf(delim);
+        return new CurrencyAmount(fmt.parse(str.substring(0,i)),
+                                  Currency.getInstance(str.substring(i+1)));
+    }
+
+    /**
+     * Return an integer representing the next token from this
+     * iterator.  The integer will be an index into the given list, or
+     * -1 if there are no more tokens, or -2 if the token is not on
+     * the list.
+     */
+    private static int keywordIndex(String tok) {
+        for (int i=0; i<KEYWORDS.length; ++i) {
+            if (tok.equals(KEYWORDS[i])) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    private static final String KEYWORDS[] = {
+        /*0*/ "ref=", // <reference pattern to parse numbers>
+        /*1*/ "loc=", // <locale for formats>
+        /*2*/ "f:",   // <pattern or '-'> <number> <exp. string>
+        /*3*/ "fp:",  // <pattern or '-'> <number> <exp. string> <exp. number>
+        /*4*/ "rt:",  // <pattern or '-'> <(exp.) number> <(exp.) string>
+        /*5*/ "p:",   // <pattern or '-'> <string> <exp. number>
+        /*6*/ "perr:", // <pattern or '-'> <invalid string>
+        /*7*/ "pat:", // <pattern or '-'> <exp. toPattern or '-' or 'err'>
+        /*8*/ "fpc:", // <loc or '-'> <curr.amt> <exp. string> <exp. curr.amt>
+        /*9*/ "strict=", // true or false
+    };
+
+    public void TestCases() {
+        String caseFileName = "NumberFormatTestCases.txt";
+        java.io.InputStream is = NumberFormatTest.class.getResourceAsStream(caseFileName);
+
+        ResourceReader reader = new ResourceReader(is, caseFileName, "utf-8");
+        TokenIterator tokens = new TokenIterator(reader);
+
+        Locale loc = new Locale("en", "US", "");
+        DecimalFormat ref = null, fmt = null;
+        MeasureFormat mfmt = null;
+        String pat = null, str = null, mloc = null;
+        boolean strict = false;
+
+        try {
+            for (;;) {
+                String tok = tokens.next();
+                if (tok == null) {
+                    break;
+                }
+                String where = "(" + tokens.getLineNumber() + ") ";
+                int cmd = keywordIndex(tok);
+                switch (cmd) {
+                case 0:
+                    // ref= <reference pattern>
+                    ref = new DecimalFormat(tokens.next(),
+                                            new DecimalFormatSymbols(Locale.US));
+                    ref.setParseStrict(strict);
+                    logln("Setting reference pattern to:\t" + ref);
+                    break;
+                case 1:
+                    // loc= <locale>
+                    loc = LocaleUtility.getLocaleFromName(tokens.next());
+                    pat = ((DecimalFormat) NumberFormat.getInstance(loc)).toPattern();
+                    logln("Setting locale to:\t" + loc + ", \tand pattern to:\t" + pat);
+                    break;
+                case 2: // f:
+                case 3: // fp:
+                case 4: // rt:
+                case 5: // p:
+                    tok = tokens.next();
+                    if (!tok.equals("-")) {
+                        pat = tok;
+                    }
+                    try {
+                        fmt = new DecimalFormat(pat, new DecimalFormatSymbols(loc));
+                        fmt.setParseStrict(strict);
+                    } catch (IllegalArgumentException iae) {
+                        errln(where + "Pattern \"" + pat + '"');
+                        iae.printStackTrace();
+                        tokens.next(); // consume remaining tokens
+                        //tokens.next();
+                        if (cmd == 3) tokens.next();
+                        continue;
+                    }
+                   str = null;
+                    try {
+                        if (cmd == 2 || cmd == 3 || cmd == 4) {
+                            // f: <pattern or '-'> <number> <exp. string>
+                            // fp: <pattern or '-'> <number> <exp. string> <exp. number>
+                            // rt: <pattern or '-'> <number> <string>
+                            String num = tokens.next();
+                            str = tokens.next();
+                            Number n = (Number) ref.parse(num);
+                            assertEquals(where + '"' + pat + "\".format(" + num + ")",
+                                         str, fmt.format(n));
+                            if (cmd == 3) { // fp:
+                                n = (Number) ref.parse(tokens.next());
+                            }
+                            if (cmd != 2) { // != f:
+                                assertEquals(where + '"' + pat + "\".parse(\"" + str + "\")",
+                                             n, fmt.parse(str));
+                            }
+                        }
+                        // p: <pattern or '-'> <string to parse> <exp. number>
+                        else {
+                            str = tokens.next();
+                            String expstr = tokens.next();
+                            Number parsed = fmt.parse(str);
+                            Number exp = (Number) ref.parse(expstr);
+                            assertEquals(where + '"' + pat + "\".parse(\"" + str + "\")",
+                                         exp, parsed);
+                        }
+                    } catch (ParseException e) {
+                        errln(where + '"' + pat + "\".parse(\"" + str +
+                              "\") threw an exception");
+                        e.printStackTrace();
+                    }
+                    break;
+                case 6:
+                    // perr: <pattern or '-'> <invalid string>
+                    errln("Under construction");
+                    return;
+                case 7:
+                    // pat: <pattern> <exp. toPattern, or '-' or 'err'>
+                    String testpat = tokens.next();
+                    String exppat  = tokens.next();
+                    boolean err    = exppat.equals("err");
+                    if (testpat.equals("-")) {
+                        if (err) {
+                            errln("Invalid command \"pat: - err\" at " +  tokens.describePosition());
+                            continue;
+                        }
+                        testpat = pat;
+                    }
+                    if (exppat.equals("-")) exppat = testpat;
+                    try {
+                        DecimalFormat f = null;
+                        if (testpat == pat) { // [sic]
+                            f = fmt;
+                        } else {
+                            f = new DecimalFormat(testpat);
+                            f.setParseStrict(strict);
+                        }
+                        if (err) {
+                            errln(where + "Invalid pattern \"" + testpat +
+                                  "\" was accepted");
+                        } else {
+                            assertEquals(where + '"' + testpat + "\".toPattern()",
+                                         exppat, f.toPattern());
+                        }
+                    } catch (IllegalArgumentException iae2) {
+                        if (err) {
+                            logln("Ok: " + where + "Invalid pattern \"" + testpat +
+                                  "\" threw an exception");
+                        } else {
+                            errln(where + "Valid pattern \"" + testpat +
+                                  "\" threw an exception");
+                            iae2.printStackTrace();
+                        }
+                    }
+                    break;
+                case 8: // fpc:
+                    tok = tokens.next();
+                    if (!tok.equals("-")) {
+                        mloc = tok;
+                        ULocale l = new ULocale(mloc);
+                        try {
+                            mfmt = MeasureFormat.getCurrencyFormat(l);
+                        } catch (IllegalArgumentException iae) {
+                            errln(where + "Loc \"" + tok + '"');
+                            iae.printStackTrace();
+                            tokens.next(); // consume remaining tokens
+                            tokens.next();
+                            tokens.next();
+                            continue;
+                        }
+                    }
+                    str = null;
+                    try {
+                        // fpc: <loc or '-'> <curr.amt> <exp. string> <exp. curr.amt>
+                        String currAmt = tokens.next();
+                        str = tokens.next();
+                        CurrencyAmount n = parseCurrencyAmount(currAmt, ref, '/');
+                        assertEquals(where + "getCurrencyFormat(" + mloc + ").format(" + currAmt + ")",
+                                     str, mfmt.format(n));
+                        n = parseCurrencyAmount(tokens.next(), ref, '/');
+                        assertEquals(where + "getCurrencyFormat(" + mloc + ").parse(\"" + str + "\")",
+                                     n, (CurrencyAmount) mfmt.parseObject(str));
+                    } catch (ParseException e) {
+                        errln(where + '"' + pat + "\".parse(\"" + str +
+                              "\") threw an exception");
+                        e.printStackTrace();
+                    }
+                    break;
+                case 9: // strict= true or false
+                    strict = "true".equalsIgnoreCase(tokens.next());
+                    logln("Setting strict to:\t" + strict);
+                    break;
+                case -1:
+                    errln("Unknown command \"" + tok + "\" at " + tokens.describePosition());
+                    return;
+                }
+            }
+        } catch (java.io.IOException e) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        throw new RuntimeException(e.getMessage());
+//#else
+            throw new RuntimeException(e);
+//#endif
+        }
+    }
+
+    public void TestRounding() {
+        DecimalFormat nf = (DecimalFormat) com.ibm.icu.text.NumberFormat.getInstance(ULocale.ENGLISH);
+        if (false) { // for debugging specific value
+            nf.setRoundingMode(BigDecimal.ROUND_HALF_UP);
+            checkRounding(nf, new BigDecimal("300.0300000000"), 0, new BigDecimal("0.020000000"));
+        }
+        // full tests
+        int[] roundingIncrements = {1, 2, 5, 20, 50, 100};
+        int[] testValues = {0, 300};
+        for (int j = 0; j < testValues.length; ++j) {
+            for (int mode = BigDecimal.ROUND_UP; mode < BigDecimal.ROUND_HALF_EVEN; ++mode) {
+                nf.setRoundingMode(mode);
+                for (int increment = 0; increment < roundingIncrements.length; ++increment) {
+                    BigDecimal base = new BigDecimal(testValues[j]);
+                    BigDecimal rInc = new BigDecimal(roundingIncrements[increment]);
+                    checkRounding(nf,  base, 20, rInc);
+                    rInc = new BigDecimal("1.000000000").divide(rInc);
+                    checkRounding(nf,  base, 20, rInc);
+                }
+            }
+        }
+    }
+
+    void checkRounding(DecimalFormat nf, BigDecimal base, int iterations, BigDecimal increment) {
+//#if defined(FOUNDATION10)
+//##        nf.setRoundingIncrement(increment);
+//#else
+        nf.setRoundingIncrement(increment.toBigDecimal());
+//#endif
+        BigDecimal lastParsed = new BigDecimal(Integer.MIN_VALUE); // used to make sure that rounding is monotonic
+        for (int i = -iterations; i <= iterations; ++i) {
+            BigDecimal iValue = base.add(increment.multiply(new BigDecimal(i)).movePointLeft(1));
+            BigDecimal smallIncrement = new BigDecimal("0.00000001");
+            if (iValue.signum() != 0) {
+                smallIncrement.multiply(iValue); // scale unless zero
+            }
+            // we not only test the value, but some values in a small range around it.
+            lastParsed = checkRound(nf, iValue.subtract(smallIncrement), lastParsed);
+            lastParsed = checkRound(nf, iValue, lastParsed);
+            lastParsed = checkRound(nf, iValue.add(smallIncrement), lastParsed);
+        }
+    }
+
+    private BigDecimal checkRound(DecimalFormat nf, BigDecimal iValue, BigDecimal lastParsed) {
+        String formatedBigDecimal = nf.format(iValue);
+        String formattedDouble = nf.format(iValue.doubleValue());
+        if (!equalButForTrailingZeros(formatedBigDecimal, formattedDouble)) {
+            errln("Failure at: " + iValue + " (" + iValue.doubleValue() + ")"
+                  + ",\tRounding-mode: " + roundingModeNames[nf.getRoundingMode()]
+                  + ",\tRounding-increment: " + nf.getRoundingIncrement()
+                  + ",\tdouble: " + formattedDouble
+                  + ",\tBigDecimal: " + formatedBigDecimal);
+        } else {
+            logln("Value: " + iValue
+                  + ",\tRounding-mode: " + roundingModeNames[nf.getRoundingMode()]
+                  + ",\tRounding-increment: " + nf.getRoundingIncrement()
+                  + ",\tdouble: " + formattedDouble
+                  + ",\tBigDecimal: " + formatedBigDecimal);
+        }
+        try {
+            // Number should have compareTo(...)
+            BigDecimal parsed = toBigDecimal(nf.parse(formatedBigDecimal));
+            if (lastParsed.compareTo(parsed) > 0) {
+                errln("Rounding wrong direction!: " + lastParsed + " > " + parsed);
+            }
+            lastParsed = parsed;
+        } catch (ParseException e) {
+            errln("Parse Failure with: " + formatedBigDecimal);
+        }
+        return lastParsed;
+    }
+
+    static BigDecimal toBigDecimal(Number number) {
+        return number instanceof BigDecimal ? (BigDecimal) number
+            : number instanceof BigInteger ? new BigDecimal((BigInteger)number)
+//#if defined(FOUNDATION10)
+//#else
+            : number instanceof java.math.BigDecimal ? new BigDecimal((java.math.BigDecimal)number)
+//#endif
+            : number instanceof Double ? new BigDecimal(number.doubleValue())
+            : number instanceof Float ? new BigDecimal(number.floatValue())
+            : new BigDecimal(number.longValue());
+    }
+
+    static String[] roundingModeNames = {
+        "ROUND_UP", "ROUND_DOWN", "ROUND_CEILING", "ROUND_FLOOR",
+        "ROUND_HALF_UP", "ROUND_HALF_DOWN", "ROUND_HALF_EVEN",
+        "ROUND_UNNECESSARY"
+    };
+
+    private static boolean equalButForTrailingZeros(String formatted1, String formatted2) {
+        if (formatted1.length() == formatted2.length()) return formatted1.equals(formatted2);
+        return stripFinalZeros(formatted1).equals(stripFinalZeros(formatted2));
+    }
+
+    private static String stripFinalZeros(String formatted) {
+        int len1 = formatted.length();
+        char ch;
+        while (len1 > 0 && ((ch = formatted.charAt(len1-1)) == '0' || ch == '.')) --len1;
+        return formatted.substring(0,len1);
+    }
+
+    //------------------------------------------------------------------
+    // Support methods
+    //------------------------------------------------------------------
+
+    // Format-Parse test
+    public void expect2(NumberFormat fmt, Number n, String exp) {
+        // Don't round-trip format test, since we explicitly do it
+        expect(fmt, n, exp, false);
+        expect(fmt, exp, n);
+    }
+
+    // Format-Parse test (convenience)
+    public void expect2(NumberFormat fmt, double n, String exp) {
+        expect2(fmt, new Double(n), exp);
+    }
+
+    // Format-Parse test (convenience)
+    public void expect2(NumberFormat fmt, long n, String exp) {
+        expect2(fmt, new Long(n), exp);
+    }
+
+    // Format test
+    public void expect(NumberFormat fmt, Number n, String exp, boolean rt) {
+        StringBuffer saw = new StringBuffer();
+        FieldPosition pos = new FieldPosition(0);
+        fmt.format(n, saw, pos);
+        String pat = ((DecimalFormat)fmt).toPattern();
+        if (saw.toString().equals(exp)) {
+            logln("Ok   " + n + " x " +
+                  pat + " = \"" +
+                  saw + "\"");
+            // We should be able to round-trip the formatted string =>
+            // number => string (but not the other way around: number
+            // => string => number2, might have number2 != number):
+            if (rt) {
+                try {
+                    Number n2 = fmt.parse(exp);
+                    StringBuffer saw2 = new StringBuffer();
+                    fmt.format(n2, saw2, pos);
+                    if (!saw2.toString().equals(exp)) {
+                        errln("FAIL \"" + exp + "\" => " + n2 +
+                              " => \"" + saw2 + '"');
+                    }
+                } catch (ParseException e) {
+                    errln(e.getMessage());
+                    return;
+                }
+            }
+        } else {
+            errln("FAIL " + n + " x " +
+                  pat + " = \"" +
+                  saw + "\", expected \"" + exp + "\"");
+        }
+    }
+
+    // Format test (convenience)
+    public void expect(NumberFormat fmt, Number n, String exp) {
+        expect(fmt, n, exp, true);
+    }
+
+    // Format test (convenience)
+    public void expect(NumberFormat fmt, double n, String exp) {
+        expect(fmt, new Double(n), exp);
+    }
+
+    // Format test (convenience)
+    public void expect(NumberFormat fmt, long n, String exp) {
+        expect(fmt, new Long(n), exp);
+    }
+
+    // Parse test
+    public void expect(NumberFormat fmt, String str, Number n) {
+        Number num = null;
+        try {
+            num = (Number) fmt.parse(str);
+        } catch (ParseException e) {
+            errln(e.getMessage());
+            return;
+        }
+        String pat = ((DecimalFormat)fmt).toPattern();
+        // A little tricky here -- make sure Double(12345.0) and
+        // Long(12345) match.
+        if (num.equals(n) || num.doubleValue() == n.doubleValue()) {
+            logln("Ok   \"" + str + "\" x " +
+                  pat + " = " +
+                  num);
+        } else {
+            errln("FAIL \"" + str + "\" x " +
+                  pat + " = " +
+                  num + ", expected " + n);
+        }
+    }
+
+    // Parse test (convenience)
+    public void expect(NumberFormat fmt, String str, double n) {
+        expect(fmt, str, new Double(n));
+    }
+
+    // Parse test (convenience)
+    public void expect(NumberFormat fmt, String str, long n) {
+        expect(fmt, str, new Long(n));
+    }
+
+    private void expectCurrency(NumberFormat nf, Currency curr,
+                                double value, String string) {
+        DecimalFormat fmt = (DecimalFormat) nf;
+        if (curr != null) {
+            fmt.setCurrency(curr);
+        }
+        String s = fmt.format(value).replace('\u00A0', ' ');
+
+        if (s.equals(string)) {
+            logln("Ok: " + value + " x " + curr + " => " + s);
+        } else {
+            errln("FAIL: " + value + " x " + curr + " => " + s +
+                  ", expected " + string);
+        }
+    }
+
+    public void expectPad(DecimalFormat fmt, String pat, int pos) {
+        expectPad(fmt, pat, pos, 0, (char)0);
+    }
+
+    public void expectPad(DecimalFormat fmt, final String pat, int pos, int width, final char pad) {
+        int apos = 0, awidth = 0;
+        char apadStr;
+        try {
+            fmt.applyPattern(pat);
+            apos = fmt.getPadPosition();
+            awidth = fmt.getFormatWidth();
+            apadStr = fmt.getPadCharacter();
+        } catch (Exception e) {
+            apos = -1;
+            awidth = width;
+            apadStr = pad;
+        }
+
+        if (apos == pos && awidth == width && apadStr == pad) {
+            logln("Ok   \"" + pat + "\" pos="
+                    + apos + ((pos == -1) ? "" : " width=" + awidth + " pad=" + apadStr));
+        } else {
+            errln("FAIL \"" + pat + "\" pos=" + apos + " width="
+                    + awidth + " pad=" + apadStr + ", expected "
+                    + pos + " " + width + " " + pad);
+        }
+    }
+
+    public void expectPat(DecimalFormat fmt, final String exp) {
+        String pat = fmt.toPattern();
+        if (pat.equals(exp)) {
+            logln("Ok   \"" + pat + "\"");
+        } else {
+            errln("FAIL \"" + pat + "\", expected \"" + exp + "\"");
+        }
+    }
+
+    public void TestJB3832(){
+        ULocale locale = new ULocale("pt_PT@currency=PTE");
+        NumberFormat format = NumberFormat.getCurrencyInstance(locale);
+        Currency curr = Currency.getInstance(locale);
+        logln("\nName of the currency is: " + curr.getName(locale, Currency.LONG_NAME, new boolean[] {false}));
+        CurrencyAmount cAmt = new CurrencyAmount(1150.50, curr);
+        logln("CurrencyAmount object's hashCode is: " + cAmt.hashCode()); //cover hashCode
+        String str = format.format(cAmt);
+        String expected = "1,150$50\u00a0Esc.";
+        if(!expected.equals(str)){
+            errln("Did not get the expected output Expected: "+expected+" Got: "+ str);
+        }
+    }
+
+    public void TestStrictParse() {
+        String[] pass = {
+            "0",           // single zero before end of text is not leading
+            "0 ",          // single zero at end of number is not leading
+            "0.",          // single zero before period (or decimal, it's ambiguous) is not leading
+            "0,",          // single zero before comma (not group separator) is not leading
+            "0.0",         // single zero before decimal followed by digit is not leading
+            "0. ",         // same as above before period (or decimal) is not leading
+            "0.100,5",     // comma stops parse of decimal (no grouping)
+            ".00",         // leading decimal is ok, even with zeros
+            "1234567",     // group separators are not required
+            "12345, ",     // comma not followed by digit is not a group separator, but end of number
+            "1,234, ",     // if group separator is present, group sizes must be appropriate
+            "1,234,567",   // ...secondary too
+            "0E",          // an exponnent not followed by zero or digits is not an exponent
+        };
+        String[] fail = {
+            "00",        // leading zero before zero
+            "012",       // leading zero before digit
+            "0,456",     // leading zero before group separator
+            "1,2",       // wrong number of digits after group separator
+            ",0",        // leading group separator before zero
+            ",1",        // leading group separator before digit
+            ",.02",      // leading group separator before decimal
+            "1,.02",     // group separator before decimal
+            "1,,200",    // multiple group separators
+            "1,45",      // wrong number of digits in primary group
+            "1,45 that", // wrong number of digits in primary group
+            "1,45.34",   // wrong number of digits in primary group
+            "1234,567",  // wrong number of digits in secondary group
+            "12,34,567", // wrong number of digits in secondary group
+            "1,23,456,7890", // wrong number of digits in primary and secondary groups
+        };
+
+        DecimalFormat nf = (DecimalFormat) NumberFormat.getInstance(Locale.ENGLISH);
+        runStrictParseBatch(nf, pass, fail);
+
+        String[] scientificPass = {
+            "0E2",      // single zero before exponent is ok
+            "1234E2",   // any number of digits before exponent is ok
+            "1,234E",   // an exponent string not followed by zero or digits is not an exponent
+        };
+        String[] scientificFail = {
+            "00E2",     // double zeros fail
+            "1,234E2",  // group separators with exponent fail
+        };
+
+        nf = (DecimalFormat) NumberFormat.getInstance(Locale.ENGLISH);
+        runStrictParseBatch(nf, scientificPass, scientificFail);
+
+        String[] mixedPass = {
+            "12,34,567",
+            "12,34,567,",
+            "12,34,567, that",
+            "12,34,567 that",
+        };
+        String[] mixedFail = {
+            "12,34,56",
+            "12,34,56,",
+            "12,34,56, that ",
+            "12,34,56 that",
+        };
+
+        nf = new DecimalFormat("#,##,##0.#");
+        runStrictParseBatch(nf, mixedPass, mixedFail);
+    }
+
+    void runStrictParseBatch(DecimalFormat nf, String[] pass, String[] fail) {
+        nf.setParseStrict(false);
+        runStrictParseTests("should pass", nf, pass, true);
+        runStrictParseTests("should also pass", nf, fail, true);
+        nf.setParseStrict(true);
+        runStrictParseTests("should still pass", nf, pass, true);
+        runStrictParseTests("should fail", nf, fail, false);
+    }
+
+    void runStrictParseTests(String msg, DecimalFormat nf, String[] tests, boolean pass) {
+        logln("");
+        logln("pattern: '" + nf.toPattern() + "'");
+        logln(msg);
+        for (int i = 0; i < tests.length; ++i) {
+            String str = tests[i];
+            ParsePosition pp = new ParsePosition(0);
+            Number n = nf.parse(str, pp);
+            String formatted = n != null ? nf.format(n) : "null";
+            String err = pp.getErrorIndex() == -1 ? "" : "(error at " + pp.getErrorIndex() + ")";
+            if ((err.length() == 0) != pass) {
+                errln("'" + str + "' parsed '" +
+                      str.substring(0, pp.getIndex()) +
+                      "' returned " + n + " formats to '" +
+                      formatted + "' " + err);
+            } else {
+                if (err.length() > 0) {
+                    err = "got expected " + err;
+                }
+                logln("'" + str + "' parsed '" +
+                      str.substring(0, pp.getIndex()) +
+                      "' returned " + n + " formats to '" +
+                      formatted + "' " + err);
+            }
+        }
+    }
+    public void TestJB5251(){
+        //save default locale
+        ULocale defaultLocale = ULocale.getDefault();
+        ULocale.setDefault(new ULocale("qr_QR"));
+        try {
+            NumberFormat.getInstance();
+        }
+        catch (Exception e) {
+            errln("Numberformat threw exception for non-existent locale. It should use the default.");
+        }
+        //reset default locale
+        ULocale.setDefault(defaultLocale);
+    }
+
+    public void TestParseReturnType() {
+        String[] defaultNonBigDecimals = {
+            "123",      // Long
+            "123.0",    // Long
+            "0.0",      // Long
+            "12345678901234567890"      // BigInteger
+        };
+
+        String[] doubles = {
+            "-0.0",
+            "NaN",
+            "\u221E"    // Infinity
+        };
+
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat nf = new DecimalFormat("#.#", sym);
+
+        if (nf.isParseBigDecimal()) {
+            errln("FAIL: isParseDecimal() must return false by default");
+        }
+
+        // isParseBigDecimal() is false
+        for (int i = 0; i < defaultNonBigDecimals.length; i++) {
+            try {
+                Number n = nf.parse(defaultNonBigDecimals[i]);
+                if (n instanceof BigDecimal) {
+                    errln("FAIL: parse returns BigDecimal instance");
+                }
+            } catch (ParseException e) {
+                errln("parse of '" + defaultNonBigDecimals[i] + "' threw exception: " + e);
+            }
+        }
+        // parse results for doubls must be always Double
+        for (int i = 0; i < doubles.length; i++) {
+            try {
+                Number n = nf.parse(doubles[i]);
+                if (!(n instanceof Double)) {
+                    errln("FAIL: parse does not return Double instance");
+                }
+            } catch (ParseException e) {
+                errln("parse of '" + doubles[i] + "' threw exception: " + e);
+            }
+        }
+
+        // force this DecimalFormat to return BigDecimal
+        nf.setParseBigDecimal(true);
+        if (!nf.isParseBigDecimal()) {
+            errln("FAIL: isParseBigDecimal() must return true");
+        }
+
+        // isParseBigDecimal() is true
+        for (int i = 0; i < defaultNonBigDecimals.length; i++) {
+            try {
+                Number n = nf.parse(defaultNonBigDecimals[i]);
+                if (!(n instanceof BigDecimal)) {
+                    errln("FAIL: parse does not return BigDecimal instance");
+                }
+            } catch (ParseException e) {
+                errln("parse of '" + defaultNonBigDecimals[i] + "' threw exception: " + e);
+            }
+        }
+        // parse results for doubls must be always Double
+        for (int i = 0; i < doubles.length; i++) {
+            try {
+                Number n = nf.parse(doubles[i]);
+                if (!(n instanceof Double)) {
+                    errln("FAIL: parse does not return Double instance");
+                }
+            } catch (ParseException e) {
+                errln("parse of '" + doubles[i] + "' threw exception: " + e);
+            }
+        }
+    }
+
+    public void TestNonpositiveMultiplier() {
+        DecimalFormat df = new DecimalFormat("0");
+
+        // test zero multiplier
+
+        try {
+            df.setMultiplier(0);
+
+            // bad
+            errln("DecimalFormat.setMultiplier(0) did not throw an IllegalArgumentException");
+        } catch (IllegalArgumentException ex) {
+            // good
+        }
+
+        // test negative multiplier
+
+        try {
+            df.setMultiplier(-1);
+
+            if (df.getMultiplier() != -1) {
+                errln("DecimalFormat.setMultiplier(-1) did not change the multiplier to -1");
+                return;
+            }
+
+            // good
+        } catch (IllegalArgumentException ex) {
+            // bad
+            errln("DecimalFormat.setMultiplier(-1) threw an IllegalArgumentException");
+            return;
+        }
+
+        expect(df, "1122.123", -1122.123);
+        expect(df, "-1122.123", 1122.123);
+        expect(df, "1.2", -1.2);
+        expect(df, "-1.2", 1.2);
+
+        expect2(df, Long.MAX_VALUE, BigInteger.valueOf(Long.MAX_VALUE).negate().toString());
+        expect2(df, Long.MIN_VALUE, BigInteger.valueOf(Long.MIN_VALUE).negate().toString());
+        expect2(df, Long.MAX_VALUE / 2, BigInteger.valueOf(Long.MAX_VALUE / 2).negate().toString());
+        expect2(df, Long.MIN_VALUE / 2, BigInteger.valueOf(Long.MIN_VALUE / 2).negate().toString());
+
+        expect2(df, BigDecimal.valueOf(Long.MAX_VALUE), BigDecimal.valueOf(Long.MAX_VALUE).negate().toString());
+        expect2(df, BigDecimal.valueOf(Long.MIN_VALUE), BigDecimal.valueOf(Long.MIN_VALUE).negate().toString());
+        
+//#if defined(FOUNDATION10)
+//#else
+        expect2(df, java.math.BigDecimal.valueOf(Long.MAX_VALUE), java.math.BigDecimal.valueOf(Long.MAX_VALUE).negate().toString());
+        expect2(df, java.math.BigDecimal.valueOf(Long.MIN_VALUE), java.math.BigDecimal.valueOf(Long.MIN_VALUE).negate().toString());
+//#endif
+    }
+
+    public void TestJB5358() {
+        int numThreads = 10;
+        String numstr = "12345";
+        double expected = 12345;
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#.#", sym);
+        ArrayList errors = new ArrayList();
+
+        ParseThreadJB5358[] threads = new ParseThreadJB5358[numThreads];
+        for (int i = 0; i < numThreads; i++) {
+            threads[i] = new ParseThreadJB5358((DecimalFormat)fmt.clone(), numstr, expected, errors);
+            threads[i].start();
+        }
+        for (int i = 0; i < numThreads; i++) {
+            try {
+                threads[i].join();
+            } catch (InterruptedException ie) {
+                ie.printStackTrace();
+            }
+        }
+        if (errors.size() != 0) {
+            StringBuffer errBuf = new StringBuffer();
+            for (int i = 0; i < errors.size(); i++) {
+                errBuf.append((String)errors.get(i));
+                errBuf.append("\n");
+            }
+            errln("FAIL: " + errBuf);
+        }
+    }
+
+    static private class ParseThreadJB5358 extends Thread {
+        private DecimalFormat decfmt;
+        private String numstr;
+        private double expect;
+        private ArrayList errors;
+
+        public ParseThreadJB5358(DecimalFormat decfmt, String numstr, double expect, ArrayList errors) {
+            this.decfmt = decfmt;
+            this.numstr = numstr;
+            this.expect = expect;
+            this.errors = errors;
+        }
+
+        public void run() {
+            for (int i = 0; i < 10000; i++) {
+                try {
+                    Number n = decfmt.parse(numstr);
+                    if (n.doubleValue() != expect) {
+                        synchronized(errors) {
+                            errors.add(new String("Bad parse result - expected:" + expect + " actual:" + n.doubleValue()));
+                        }
+                    }
+                } catch (Throwable t) {
+                    synchronized(errors) {
+                        errors.add(new String(t.getClass().getName() + " - " + t.getMessage()));
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt b/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
new file mode 100644
index 0000000..afbf7a4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
@@ -0,0 +1,121 @@
+######################################################################
+# Copyright (c) 2004, 2008 International Business Machines
+# Corporation and others.  All Rights Reserved.
+######################################################################
+# Author: Alan Liu
+# Created: March 15 2004
+# Since: ICU 3.0
+######################################################################
+
+ref= "#.#"
+
+rt:  "0.###"  1.0         "1"         
+
+# Basics
+fp:  "0.####" 0.10005     "0.1"        0.1
+fp:  -        0.10006     "0.1001"     0.1001
+pat: -        "#0.####"
+fp:  "#.####" 0.10005     "0.1"        0.1
+pat: -        "#0.####"
+
+rt:  "0"      1234        "1234"
+pat: -        "#0"
+
+# Significant digits                                                  
+fp:  "@@@"    1.234567    "1.23"       1.23
+fp:  -        1234567     "1230000"    1230000
+fp:  -        0.012345    "0.0123"     0.0123
+pat: -        -                                    
+fp:  "#,@@@"  1234567     "1,230,000"  1230000
+pat: -        "#,@@@"
+rt:  "@@@@"   0.0012      "0.001200"  
+fp:  -        0.99999     "1.000"      1
+pat: -        -
+rt:  "@###"   0.00123     "0.00123"   
+rt:  -        123000      "123000"    
+fp:  -        123456      "123500"     123500
+fp:  -        12.3456     "12.35"      12.35
+fp:  -        0.0123456   "0.01235"    0.01235
+pat: -        -
+fp:  "@,###"  27182       "27,180"     27180
+rt:  -        123000      "123,000"   
+fp:  -        0.99999     "1"          1
+rt:  -        0.9999      "0.9999"    
+pat: -        -
+rt:  "@##E0"  20000       "2E4"
+rt:  -        27000       "2.7E4"     
+rt:  -        27100       "2.71E4"
+fp:  -        27182       "2.72E4"     27200
+pat: -        -
+rt:  "@@@E0"  20000       "2.00E4"
+rt:  -        27000       "2.70E4"    
+rt:  -        27100       "2.71E4"
+fp:  -        27182       "2.72E4"     27200
+pat: -        -
+fp:  "#,@@##" 314156      "31,4200"    314200
+rt:  -        3           "3.0"       
+rt:  -        5000        "5000"      
+rt:  -        0.005       "0.0050"    
+pat: -        -
+fp:  "@@@@@@" 123456.7    "123457"     123457
+pat: -        -
+
+pat: "##,@@##" "#,@@##"
+pat: "##@@##"  "@@##"
+
+pat: "@@.@@"  err  # decimal sep. disallowed in sig. digits
+pat: "@#@"    err  # only one cluster of sig. digits
+pat: "@@0"    err  # either @ or 0, not both
+
+# NumberRegression/Test4140009
+rt:  ""       123.456     "123.456"
+rt:  ""       -123.456    "-123.456"
+
+# Currency
+fpc: "en_US"        1234.56/USD  "$1,234.56"    1234.56/USD
+fpc: -              1234.56/JPY  "¥1,235"  1235/JPY
+# ISO codes that overlap display names (QQQ vs. Q)
+fpc: -              123/QQQ      "QQQ123.00"    123/QQQ   # QQQ is fake
+fpc: -              123/GTQ      "Q123.00"      123/GTQ
+# ChoiceFormat-based display names
+fpc: -              1/INR        "₨1.00"      1/INR
+
+fpc: -              2/INR        "₨2.00"      2/INR
+# Display names with shared prefix (YDD vs. Y)
+fpc: -              100/YDD      "YDD100.00"    100/YDD
+fpc: -              100/CNY      "RMB100.00"      100/CNY
+
+# Lenient Tests
+
+loc= "en"
+p: -              "1,234.56" 1234.56
+p: -              "1'234.56" 1234.56
+p: -              "1 234.56" 1234.56
+p: -              "1٬234.56" 1234.56
+p: -              "1，234．56" 1234.56
+p: -              "1.234.56" 1.234
+p: -              "1、234。56" 1234.56
+
+loc= "fr"
+p: -              "1.234,56" 1234.56
+p: -              "1'234,56" 1234.56
+p: -              "1 234,56" 1234.56
+p: -              "1,234,56" 1.234
+p: -              "1。234、56" 1234.56
+
+loc= "ar"
+p: -              "1.234٫56" 1234.56
+p: -              "1'234،56" 1234.56
+p: -              "1٬234،56" 1234.56
+p: -              "1.234,56" 1234.56
+p: -              "1'234,56" 1234.56
+p: -              "1٬234,56" 1234.56
+
+strict= true
+loc= "en"
+p: -              "1、234。56" 1
+loc= "fr"
+p: -              "1。234、56" 1
+loc= "ar"
+p: -              "1'234،56" 1234
+p: -              "1٬234،56" 1234
diff --git a/src/com/ibm/icu/dev/test/format/NumberRegression.java b/src/com/ibm/icu/dev/test/format/NumberRegression.java
new file mode 100644
index 0000000..6eeb130
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/NumberRegression.java
@@ -0,0 +1,1861 @@
+//##header J2SE15
+/*****************************************************************************************
+ *
+ * Copyright (C) 1996-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **/
+
+/** 
+ * Port From:   JDK 1.4b1 : java.text.Format.NumberRegression
+ * Source File: java/text/format/NumberRegression.java
+ **/
+ 
+/**
+ * @test 1.49 01/05/21
+ * @bug 4052223 4059870 4061302 4062486 4066646 4068693 4070798 4071005 4071014
+ * 4071492 4071859 4074454 4074620 4075713 4083018 4086575 4087244 4087245
+ * 4087251 4087535 4088161 4088503 4090489 4090504 4092480 4092561 4095713
+ * 4098741 4099404 4101481 4106658 4106662 4106664 4108738 4110936 4122840
+ * 4125885 4134034 4134300 4140009 4141750 4145457 4147295 4147706 4162198
+ * 4162852 4167494 4170798 4176114 4179818 4185761 4212072 4212073 4216742
+ * 4217661 4243011 4243108 4330377 4233840
+ * @summary Regression tests for NumberFormat and associated classes
+ */
+
+package com.ibm.icu.dev.test.format;
+
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+
+import java.io.*;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+public class NumberRegression extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new NumberRegression().run(args);
+    }
+
+    private static final char EURO = '\u20ac';
+
+    /**
+     * NumberFormat.equals comparing with null should always return false.
+     */
+    public void Test4075713(){
+
+        try {
+            MyNumberFormatTest tmp = new MyNumberFormatTest();
+            if (!tmp.equals(null))
+                logln("NumberFormat.equals passed");
+        } catch (NullPointerException e) {
+            errln("(new MyNumberFormatTest()).equals(null) throws unexpected exception");
+        }
+    }
+
+    /**
+     * NumberFormat.equals comparing two obj equal even the setGroupingUsed
+     * flag is different.
+     */
+    public void Test4074620() {
+
+        MyNumberFormatTest nf1 = new MyNumberFormatTest();
+        MyNumberFormatTest nf2 = new MyNumberFormatTest();
+
+        nf1.setGroupingUsed(false);
+        nf2.setGroupingUsed(true);
+
+        if (nf1.equals(nf2)) errln("Test for bug 4074620 failed");
+        else logln("Test for bug 4074620 passed.");
+        return;
+    }
+
+
+    /**
+     * DecimalFormat.format() incorrectly uses maxFractionDigits setting.
+     */
+
+    public void Test4088161 (){
+        DecimalFormat df = new DecimalFormat();
+        double d = 100;
+        df.setMinimumFractionDigits(0);
+        df.setMaximumFractionDigits(16);
+        StringBuffer sBuf1 = new StringBuffer("");
+        FieldPosition fp1 = new FieldPosition(0);
+        logln("d = " + d);
+        logln("maxFractionDigits = " + df.getMaximumFractionDigits());
+        logln(" format(d) = '" + df.format(d, sBuf1, fp1) + "'");
+        df.setMaximumFractionDigits(17);
+        StringBuffer sBuf2 = new StringBuffer("");
+        FieldPosition fp2 = new FieldPosition(0);
+        logln("maxFractionDigits = " + df.getMaximumFractionDigits());
+        df.format(d, sBuf2, fp2);
+        if (!sBuf2.toString().equals("100"))
+            errln(" format(d) = '" + sBuf2 + "'");
+    }
+    /**
+     * DecimalFormatSymbols should be cloned in the ctor DecimalFormat.
+     * DecimalFormat(String, DecimalFormatSymbols).
+     */
+    public void Test4087245 (){
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+        DecimalFormat df = new DecimalFormat("#,##0.0", symbols);
+        long n = 123;
+        StringBuffer buf1 = new StringBuffer();
+        StringBuffer buf2 = new StringBuffer();
+        logln("format(" + n + ") = " +
+        df.format(n, buf1, new FieldPosition(0)));
+        symbols.setDecimalSeparator('p'); // change value of field
+        logln("format(" + n + ") = " +
+        df.format(n, buf2, new FieldPosition(0)));
+        if (!buf1.toString().equals(buf2.toString()))
+            errln("Test for bug 4087245 failed");
+    }
+    /**
+     * DecimalFormat.format() incorrectly formats 0.0
+     */
+    public void Test4087535 ()
+    {
+        DecimalFormat df = new DecimalFormat();
+        df.setMinimumIntegerDigits(0);
+
+        double n = 0;
+        String buffer = new String();
+        buffer = df.format(n);
+        if (buffer.length() == 0)
+            errln(n + ": '" + buffer + "'");
+        n = 0.1;
+        buffer = df.format(n);
+        if (buffer.length() == 0)
+            errln(n + ": '" + buffer + "'");
+    }
+
+    /**
+     * DecimalFormat.format fails when groupingSize is set to 0.
+     */
+    public void Test4088503 (){
+        DecimalFormat df = new DecimalFormat();
+        df.setGroupingSize(0);
+        StringBuffer sBuf = new StringBuffer("");
+        FieldPosition fp = new FieldPosition(0);
+        try {
+            logln(df.format(123, sBuf, fp).toString());
+        } catch (Exception foo) {
+            errln("Test for bug 4088503 failed.");
+        }
+
+    }
+    /**
+     * NumberFormat.getCurrencyInstance is wrong.
+     */
+    public void Test4066646 () {
+        //float returnfloat = 0.0f; //The variable is never used
+        assignFloatValue(2.04f);
+        assignFloatValue(2.03f);
+        assignFloatValue(2.02f);
+        assignFloatValue(0.0f);
+    }
+
+    public float assignFloatValue(float returnfloat)
+    {
+        logln(" VALUE " + returnfloat);
+        NumberFormat nfcommon =  NumberFormat.getCurrencyInstance(Locale.US);
+        nfcommon.setGroupingUsed(false);
+
+        String stringValue = nfcommon.format(returnfloat).substring(1);
+        if (Float.valueOf(stringValue).floatValue() != returnfloat)
+            errln(" DISPLAYVALUE " + stringValue);
+        return returnfloat;
+    } // End Of assignFloatValue()
+
+    /**
+     * DecimalFormat throws exception when parsing "0"
+     */
+    public void Test4059870() {
+        DecimalFormat format = new DecimalFormat("00");
+        try {
+            logln(format.parse("0").toString());
+        } catch (Exception e) { errln("Test for bug 4059870 failed : " + e); }
+    }
+    /**
+     * DecimalFormatSymbol.equals should always return false when
+     * comparing with null.
+     */
+
+    public void Test4083018 (){
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
+        try {
+            if (!dfs.equals(null))
+                logln("Test Passed!");
+        } catch (Exception foo) {
+            errln("Test for bug 4083018 failed => Message : " + foo.getMessage());
+        }
+    }
+    /**
+     * DecimalFormat does not round up correctly.
+     */
+    public void Test4071492 (){
+        double x = 0.00159999;
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(4);
+        String out = nf.format(x);
+        logln("0.00159999 formats with 4 fractional digits to " + out);
+        String expected = "0.0016";
+        if (!out.equals(expected))
+            errln("FAIL: Expected " + expected);
+    }
+
+    /**
+     * A space as a group separator for localized pattern causes
+     * wrong format.  WorkAround : use non-breaking space.
+     */
+    public void Test4086575() {
+
+        NumberFormat nf = NumberFormat.getInstance(Locale.FRANCE);
+        logln("nf toPattern1: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern1: " + ((DecimalFormat)nf).toLocalizedPattern());
+
+        // No group separator
+        logln("...applyLocalizedPattern ###,00;(###,00) ");
+        ((DecimalFormat)nf).applyLocalizedPattern("###,00;(###,00)");
+        logln("nf toPattern2: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern2: " + ((DecimalFormat)nf).toLocalizedPattern());
+
+        logln("nf: " + nf.format(1234)); // 1234,00
+        logln("nf: " + nf.format(-1234)); // (1234,00)
+
+        // Space as group separator
+
+        logln("...applyLocalizedPattern # ###,00;(# ###,00) ");
+        ((DecimalFormat)nf).applyLocalizedPattern("#\u00a0###,00;(#\u00a0###,00)");
+        logln("nf toPattern2: " + ((DecimalFormat)nf).toPattern());
+        logln("nf toLocPattern2: " + ((DecimalFormat)nf).toLocalizedPattern());
+        String buffer = nf.format(1234);
+        if (!buffer.equals("1\u00a0234,00"))
+            errln("nf : " + buffer); // Expect 1 234,00
+        buffer = nf.format(-1234);
+        if (!buffer.equals("(1\u00a0234,00)"))
+            errln("nf : " + buffer); // Expect (1 234,00)
+
+        // Erroneously prints:
+        // 1234,00 ,
+        // (1234,00 ,)
+
+    }
+    /**
+     * DecimalFormat.parse returns wrong value
+     */
+    public void Test4068693()
+    {
+        logln("----- Test Application -----");
+        //ParsePosition pos;
+        DecimalFormat df = new DecimalFormat();
+        Number d = df.parse("123.55456", new ParsePosition(0));
+        if (!d.toString().equals("123.55456")) {
+            errln("Result -> " + d.doubleValue());
+        }
+    }
+
+    /* bugs 4069754, 4067878
+     * null pointer thrown when accessing a deserialized DecimalFormat
+     * object.
+     */
+    public void Test4069754() throws Exception
+    {
+        //try {
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            ObjectOutputStream oos = new ObjectOutputStream(baos);
+            myformat it = new myformat();
+            logln(it.Now());
+            oos.writeObject(it);
+            oos.flush();
+            baos.close();
+            logln("Save OK!");
+            byte [] bytes = baos.toByteArray();
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            myformat o = (myformat)ois.readObject();
+            ois.close();
+            it.Now();
+            logln("Load OK!");
+            if (!o._dateFormat.equals(it._dateFormat)) {
+                throw new Exception("The saved and loaded object are not equals!");
+            }
+            logln("Compare OK!");
+        //} catch (Exception foo) {
+            //errln("Test for bug 4069754 or 4057878 failed => Exception: " + foo.getMessage());
+        //}
+    }
+
+    /**
+     * DecimalFormat.applyPattern(String) allows illegal patterns
+     */
+    public void Test4087251 (){
+        DecimalFormat df = new DecimalFormat();
+        try {
+            df.applyPattern("#.#.#");
+            logln("toPattern() returns \"" + df.toPattern() + "\"");
+            errln("applyPattern(\"#.#.#\") doesn't throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            logln("Caught Illegal Argument Error !");
+        }
+        // Second test; added 5/11/98 when reported to fail on 1.2b3
+        try {
+            df.applyPattern("#0.0#0#0");
+            logln("toPattern() returns \"" + df.toPattern() + "\"");
+            errln("applyPattern(\"#0.0#0#0\") doesn't throw IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            logln("Ok - IllegalArgumentException for #0.0#0#0");
+        }
+    }
+
+    /**
+     * DecimalFormat.format() loses precision
+     */
+    public void Test4090489 (){
+        DecimalFormat df = new DecimalFormat();
+        df.setMinimumFractionDigits(10);
+        df.setGroupingUsed(false);
+        double d = 1.000000000000001E7;
+        java.math.BigDecimal bd = new java.math.BigDecimal(d);
+        StringBuffer sb = new StringBuffer("");
+        FieldPosition fp = new FieldPosition(0);
+        logln("d = " + d);
+        logln("BigDecimal.toString():  " + bd.toString());
+        df.format(d, sb, fp);
+        if (!sb.toString().equals("10000000.0000000100")) {
+            errln("DecimalFormat.format(): " + sb.toString());
+        }
+    }
+
+    /**
+     * DecimalFormat.format() loses precision
+     */
+    public void Test4090504 ()
+    {
+        double d = 1;
+        logln("d = " + d);
+        DecimalFormat df = new DecimalFormat();
+        StringBuffer sb;
+        FieldPosition fp;
+        try {
+            for (int i = 17; i <= 20; i++) {
+                df.setMaximumFractionDigits(i);
+                sb = new StringBuffer("");
+                fp = new FieldPosition(0);
+                logln("  getMaximumFractionDigits() = " + i);
+                logln("  formated: " + df.format(d, sb, fp));
+            }
+        } catch (Exception foo) {
+            errln("Bug 4090504 regression test failed. Message : " + foo.getMessage());
+        }
+    }
+    /**
+     * DecimalFormat.parse(String str, ParsePosition pp) loses precision
+     */
+    public void Test4095713 ()
+    {
+        DecimalFormat df = new DecimalFormat();
+        String str = "0.1234";
+        Double d1 = new Double(str);
+        Number d2 = df.parse(str, new ParsePosition(0));
+        logln(d1.toString());
+        if (d2.doubleValue() != d1.doubleValue())
+            errln("Bug 4095713 test failed, new double value : " + d2.doubleValue());
+    }
+
+    /**
+     * DecimalFormat.parse() fails when multiplier is not set to 1
+     */
+    public void Test4092561 ()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        String str = Long.toString(Long.MIN_VALUE);
+        logln("Long.MIN_VALUE : " + df.parse(str, new ParsePosition(0)).toString());
+        df.setMultiplier(100);
+        Number num = df.parse(str, new ParsePosition(0));
+        if (num.doubleValue() != -9.223372036854776E16) {
+            errln("Bug 4092561 test failed when multiplier is set to not 1.");
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat: Negative format ignored.
+     */
+    public void Test4092480 ()
+    {
+        DecimalFormat dfFoo = new DecimalFormat("000");
+
+        try {
+            dfFoo.applyPattern("0000;-000");
+            if (!dfFoo.toPattern().equals("#0000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+            dfFoo.applyPattern("000;-000");
+            if (!dfFoo.toPattern().equals("#000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+
+            dfFoo.applyPattern("000;-0000");
+            if (!dfFoo.toPattern().equals("#000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+
+            dfFoo.applyPattern("0000;-000");
+            if (!dfFoo.toPattern().equals("#0000"))
+                errln("dfFoo.toPattern : " + dfFoo.toPattern());
+            logln(dfFoo.format(42));
+            logln(dfFoo.format(-42));
+        } catch (Exception foo) {
+            errln("Message " + foo.getMessage());
+        }
+    }
+    /**
+     * NumberFormat.getCurrencyInstance() produces format that uses
+     * decimal separator instead of monetary decimal separator.
+     *
+     * Rewrote this test not to depend on the actual pattern.  Pattern should
+     * never contain the monetary separator!  Decimal separator in pattern is
+     * interpreted as monetary separator if currency symbol is seen!
+     */
+    public void Test4087244 () {
+        Locale de = new Locale("pt", "PT");
+        DecimalFormat df = (DecimalFormat) NumberFormat.getCurrencyInstance(de);
+        DecimalFormatSymbols sym = df.getDecimalFormatSymbols();
+        sym.setMonetaryDecimalSeparator('$');
+    df.setDecimalFormatSymbols(sym);
+        char decSep = sym.getDecimalSeparator();
+        char monSep = sym.getMonetaryDecimalSeparator();
+        //char zero = sym.getZeroDigit(); //The variable is never used
+        if (decSep == monSep) {
+            errln("ERROR in test: want decimal sep != monetary sep");
+        } else {
+            df.setMinimumIntegerDigits(1);
+            df.setMinimumFractionDigits(2);
+            String str = df.format(1.23);
+            String monStr = "1" + monSep + "23";
+            String decStr = "1" + decSep + "23";
+            if (str.indexOf(monStr) >= 0 && str.indexOf(decStr) < 0) {
+                logln("OK: 1.23 -> \"" + str + "\" contains \"" +
+                      monStr + "\" and not \"" + decStr + '"');
+            } else {
+                errln("FAIL: 1.23 -> \"" + str + "\", should contain \"" +
+                      monStr +
+                      "\" and not \"" + decStr + '"');
+            }
+        }
+    }
+    /**
+     * Number format data rounding errors for locale FR
+     */
+    public void Test4070798 () {
+        NumberFormat formatter;
+        String tempString;
+        /* User error :
+        String expectedDefault = "-5\u00a0789,987";
+        String expectedCurrency = "5\u00a0789,98\u00a0F";
+        String expectedPercent = "-578\u00a0998%";
+        */
+        String expectedDefault = "-5\u00a0789,988";
+        String expectedCurrency = "5\u00a0789,99\u00a0" + EURO; // euro
+        String expectedPercent = "-578\u00a0999\u00a0%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.FRANCE);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4070798 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.FRANCE);
+        tempString = formatter.format( 5789.9876 );
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4070798 currency test assed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+
+        formatter = NumberFormat.getPercentInstance(Locale.FRANCE);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4070798 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+    }
+    /**
+     * Data rounding errors for French (Canada) locale
+     */
+    public void Test4071005 () {
+
+        NumberFormat formatter;
+        String tempString;
+    /* user error :
+        String expectedDefault = "-5 789,987";
+        String expectedCurrency = "5 789,98\u00a0$";
+        String expectedPercent = "-578 998%";
+    */
+        String expectedDefault = "-5\u00a0789,988";
+        String expectedCurrency = "5\u00a0789,99\u00a0$";
+        String expectedPercent = "-578\u00a0999\u00A0%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format (-5789.9876);
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071005 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format( 5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071005 currency test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+        formatter = NumberFormat.getPercentInstance(Locale.CANADA_FRENCH);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071005 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+    }
+
+    /**
+     * Data rounding errors for German (Germany) locale
+     */
+    public void Test4071014 () {
+        NumberFormat formatter;
+        String tempString;
+        /* user error :
+        String expectedDefault = "-5.789,987";
+        String expectedCurrency = "5.789,98\u00a0DM";
+        String expectedPercent = "-578.998%";
+        */
+        String expectedDefault = "-5.789,988";
+        String expectedCurrency = "5.789,99\u00a0" + EURO;
+        String expectedPercent = "-578.999\u00a0%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.GERMANY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071014 default test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.GERMANY);
+        tempString = formatter.format( 5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071014 currency test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getPercentInstance(Locale.GERMANY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071014 percentage test passed.");
+        } else {
+            errln("Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+
+    }
+    /**
+     * Data rounding errors for Italian locale number formats
+     * Note- with the Euro, there is no need for currency rounding anymore
+     */
+    public void Test4071859 () {
+        NumberFormat formatter;
+        String tempString;
+        /* user error :
+        String expectedDefault = "-5.789,987";
+        String expectedCurrency = "-L.\u00a05.789,98";
+        String expectedPercent = "-578.998%";
+        */
+        String expectedDefault = "-5.789,988";
+        String expectedCurrency = "-" + EURO + "\u00a05.789,99";
+        String expectedPercent = "-578.999%";
+
+        formatter = NumberFormat.getNumberInstance(Locale.ITALY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedDefault)) {
+            logln ("Bug 4071859 default test passed.");
+        } else {
+            errln("a) Failed:" +
+            " Expected " + expectedDefault +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getCurrencyInstance(Locale.ITALY);
+        tempString = formatter.format( -5789.9876 ) ;
+
+        if (tempString.equals(expectedCurrency) ) {
+            logln ("Bug 4071859 currency test passed.");
+        } else {
+            errln("b) Failed:" +
+            " Expected " + expectedCurrency +
+            " Received " + tempString );
+        }
+
+        formatter = NumberFormat.getPercentInstance(Locale.ITALY);
+        tempString = formatter.format (-5789.9876);
+
+        if (tempString.equals(expectedPercent) ) {
+            logln ("Bug 4071859 percentage test passed.");
+        } else {
+            errln("c) Failed:" +
+            " Expected " + expectedPercent +
+            " Received " + tempString );
+        }
+
+    }
+    /* bug 4071859
+     * Test rounding for nearest even.
+     */
+    public void Test4093610()
+    {
+        DecimalFormat df = new DecimalFormat("#0.#");
+        roundingTest(df, 12.35, "12.4");
+        roundingTest(df, 12.45, "12.4");
+        roundingTest(df, 12.452,"12.5");
+        roundingTest(df, 12.55, "12.6");
+        roundingTest(df, 12.65, "12.6");
+        roundingTest(df, 12.652,"12.7");
+        roundingTest(df, 12.75, "12.8");
+        roundingTest(df, 12.752,"12.8");
+        roundingTest(df, 12.85, "12.8");
+        roundingTest(df, 12.852,"12.9");
+        roundingTest(df, 12.95, "13");
+        roundingTest(df, 12.952,"13");
+
+    }
+    void roundingTest(DecimalFormat df, double x, String expected)
+    {
+        String out = df.format(x);
+        logln("" + x + " formats with 1 fractional digits to " + out);
+        if (!out.equals(expected)) errln("FAIL: Expected " + expected);
+    }
+    /**
+     * Tests the setMaximumFractionDigits limit.
+     */
+    public void Test4098741()
+    {
+        try {
+            NumberFormat fmt = NumberFormat.getPercentInstance();
+            fmt.setMaximumFractionDigits(20);
+            logln(fmt.format(.001));
+        } catch (Exception foo) {
+            warnln("Bug 4098471 failed with exception thrown : " + foo.getMessage());
+        }
+    }
+    /**
+     * Tests illegal pattern exception.
+     * Fix comment : HShih A31 Part1 will not be fixed and javadoc needs to be updated.
+     * Part2 has been fixed.
+     */
+    public void Test4074454()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("#,#00.00;-#.#");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            logln("Inconsistent negative pattern is fine.");
+            DecimalFormat newFmt = new DecimalFormat("#,#00.00 p''ieces;-#,#00.00 p''ieces");
+            String tempString = newFmt.format(3456.78);
+            if (!tempString.equals("3,456.78 p'ieces"))
+                errln("Failed!  3456.78 p'ieces expected, but got : " + tempString);
+        } catch (Exception foo) {
+            warnln("An exception was thrown for any inconsistent negative pattern.");
+        }
+    }
+    /**
+     * Tests all different comments.
+     * Response to some comments :
+     * [1] DecimalFormat.parse API documentation is more than just one line.
+     * This is not a reproducable doc error in 116 source code.
+     * [2] See updated javadoc.
+     * [3] Fixed.
+     * [4] NumberFormat.parse(String, ParsePosition) : If parsing fails,
+     * a null object will be returned.  The unchanged parse position also
+     * reflects an error.
+     * NumberFormat.parse(String) : If parsing fails, an ParseException
+     * will be thrown.
+     * See updated javadoc for more details.
+     * [5] See updated javadoc.
+     * [6] See updated javadoc.
+     * [7] This is a correct behavior if the DateFormat object is linient.
+     * Otherwise, an IllegalArgumentException will be thrown when formatting
+     * "January 35".  See GregorianCalendar class javadoc for more details.
+     */
+    public void Test4099404()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("000.0#0");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            errln("Bug 4099404 failed applying illegal pattern \"000.0#0\"");
+        } catch (Exception foo) {
+            logln("Bug 4099404 pattern \"000.0#0\" passed");
+        }
+        try {
+            DecimalFormat fmt = new DecimalFormat("0#0.000");
+            logln("format 3456.78: " + fmt.format(3456.78)); //fix "The variable 'fmt' is never used"
+            errln("Bug 4099404 failed applying illegal pattern \"0#0.000\"");
+        } catch (Exception foo) {
+            logln("Bug 4099404 pattern \"0#0.000\" passed");
+        }
+    }
+    /**
+     * DecimalFormat.applyPattern doesn't set minimum integer digits
+     */
+    public void Test4101481()
+    {
+        DecimalFormat sdf = new DecimalFormat("#,##0");
+        if (sdf.getMinimumIntegerDigits() != 1)
+            errln("Minimum integer digits : " + sdf.getMinimumIntegerDigits());
+    }
+    /**
+     * Tests ParsePosition.setErrorPosition() and ParsePosition.getErrorPosition().
+     */
+    public void Test4052223()
+    {
+        try {
+            DecimalFormat fmt = new DecimalFormat("#,#00.00");
+            Number num = fmt.parse("abc3");
+            errln("Bug 4052223 failed : can't parse string \"a\".  Got " + num);
+        } catch (ParseException foo) {
+            logln("Caught expected ParseException : " + foo.getMessage() + " at index : " + foo.getErrorOffset());
+        }
+    }
+    /**
+     * API tests for API addition request A9.
+     */
+    public void Test4061302()
+    {
+        DecimalFormatSymbols fmt = new DecimalFormatSymbols();
+        String currency = fmt.getCurrencySymbol();
+        String intlCurrency = fmt.getInternationalCurrencySymbol();
+        char monDecSeparator = fmt.getMonetaryDecimalSeparator();
+        if (currency.equals("") ||
+            intlCurrency.equals("") ||
+            monDecSeparator == 0) {
+            errln("getCurrencySymbols failed, got empty string.");
+        }
+        logln("Before set ==> Currency : " + currency + " Intl Currency : " + intlCurrency + " Monetary Decimal Separator : " + monDecSeparator);
+        fmt.setCurrencySymbol("XYZ");
+        fmt.setInternationalCurrencySymbol("ABC");
+        fmt.setMonetaryDecimalSeparator('*');
+        currency = fmt.getCurrencySymbol();
+        intlCurrency = fmt.getInternationalCurrencySymbol();
+        monDecSeparator = fmt.getMonetaryDecimalSeparator();
+        if (!currency.equals("XYZ") ||
+            !intlCurrency.equals("ABC") ||
+            monDecSeparator != '*') {
+            errln("setCurrencySymbols failed.");
+        }
+        logln("After set ==> Currency : " + currency + " Intl Currency : " + intlCurrency + " Monetary Decimal Separator : " + monDecSeparator);
+    }
+    /**
+     * API tests for API addition request A23. FieldPosition.getBeginIndex and
+     * FieldPosition.getEndIndex.
+     */
+    public void Test4062486()
+    {
+        DecimalFormat fmt = new DecimalFormat("#,##0.00");
+        StringBuffer formatted = new StringBuffer();
+        FieldPosition field = new FieldPosition(0);
+        Double num = new Double(1234.5);
+        fmt.format(num, formatted, field);
+        if (field.getBeginIndex() != 0 && field.getEndIndex() != 5)
+            errln("Format 1234.5 failed. Begin index: " + field.getBeginIndex() + " End index: " + field.getEndIndex());
+        field.setBeginIndex(7);
+        field.setEndIndex(4);
+        if (field.getBeginIndex() != 7 && field.getEndIndex() != 4)
+            errln("Set begin/end field indexes failed. Begin index: " + field.getBeginIndex() + " End index: " + field.getEndIndex());
+    }
+
+    /**
+     * DecimalFormat.parse incorrectly works with a group separator.
+     */
+    public void Test4108738()
+    {
+
+        DecimalFormat df = new DecimalFormat("#,##0.###", new
+        DecimalFormatSymbols(java.util.Locale.US));
+        String text = "1.222,111";
+        Number num = df.parse(text,new ParsePosition(0));
+        if (!num.toString().equals("1.222"))
+            errln("\"" + text + "\"  is parsed as " + num);
+        text = "1.222x111";
+        num = df.parse(text,new ParsePosition(0));
+        if (!num.toString().equals("1.222"))
+            errln("\"" + text + "\"  is parsed as " + num);
+    }
+
+    /**
+     * DecimalFormat.format() incorrectly formats negative doubles.
+     */
+    public void Test4106658()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat(); // Corrected; see 4147706
+        double d1 = -0.0;
+        double d2 = -0.0001;
+        StringBuffer buffer = new StringBuffer();
+        logln("pattern: \"" + df.toPattern() + "\"");
+        df.format(d1, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d1 + "      is formatted as " + buffer);
+        }
+        buffer.setLength(0);
+        df.format(d2, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d2 + "      is formatted as " + buffer);
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat.parse returns 0 if string parameter is incorrect.
+     */
+    public void Test4106662()
+    {
+        DecimalFormat df = new DecimalFormat();
+        String text = "x";
+        ParsePosition pos1 = new ParsePosition(0), pos2 = new ParsePosition(0);
+
+        logln("pattern: \"" + df.toPattern() + "\"");
+        Number num = df.parse(text, pos1);
+        if (num != null) {
+            errln("Test Failed: \"" + text + "\" is parsed as " + num);
+        }
+        df = null;
+        df = new DecimalFormat("$###.00");
+        num = df.parse("$", pos2);
+        if (num != null){
+            errln("Test Failed: \"$\" is parsed as " + num);
+        }
+    }
+
+    /**
+     * NumberFormat.parse doesn't return null
+     */
+    public void Test4114639()
+    {
+        NumberFormat format = NumberFormat.getInstance();
+        String text = "time 10:x";
+        ParsePosition pos = new ParsePosition(8);
+        Number result = format.parse(text, pos);
+        if (result != null) errln("Should return null but got : " + result); // Should be null; it isn't
+    }
+
+    /**
+     * DecimalFormat.format(long n) fails if n * multiplier > MAX_LONG.
+     */
+    public void Test4106664()
+    {
+        DecimalFormat df = new DecimalFormat();
+        long n = 1234567890123456L;
+        int m = 12345678;
+        BigInteger bigN = BigInteger.valueOf(n);
+        bigN = bigN.multiply(BigInteger.valueOf(m));
+        df.setMultiplier(m);
+        df.setGroupingUsed(false);
+        logln("formated: " +
+            df.format(n, new StringBuffer(), new FieldPosition(0)));
+        logln("expected: " + bigN.toString());
+    }
+    /**
+     * DecimalFormat.format incorrectly formats -0.0.
+     */
+    public void Test4106667()
+    {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        df.setPositivePrefix("+");
+        double d = -0.0;
+        logln("pattern: \"" + df.toPattern() + "\"");
+        StringBuffer buffer = new StringBuffer();
+        df.format(d, buffer, new FieldPosition(0));
+        if (!buffer.toString().equals("-0")) { // Corrected; see 4147706
+            errln(d + "  is formatted as " + buffer);
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * DecimalFormat.setMaximumIntegerDigits() works incorrectly.
+     */
+    public void Test4110936()
+    {
+        NumberFormat nf = NumberFormat.getInstance();
+        nf.setMaximumIntegerDigits(128);
+        logln("setMaximumIntegerDigits(128)");
+        if (nf.getMaximumIntegerDigits() != 128)
+            errln("getMaximumIntegerDigits() returns " +
+                nf.getMaximumIntegerDigits());
+    }
+    
+    /**
+     * Locale data should use generic currency symbol
+     *
+     * 1) Make sure that all currency formats use the generic currency symbol.
+     * 2) Make sure we get the same results using the generic symbol or a
+     *    hard-coded one.
+     */
+    public void Test4122840()
+    {
+        Locale[] locales = NumberFormat.getAvailableLocales();
+        
+        for (int i = 0; i < locales.length; i++) {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locales[i]);
+
+            //
+            // Get the currency pattern for this locale.  We have to fish it
+            // out of the ResourceBundle directly, since DecimalFormat.toPattern
+            // will return the localized symbol, not \00a4
+            //
+            UResourceBundle numPatterns = rb.get("NumberPatterns");
+            String pattern = numPatterns.getString(1);
+            
+            if (pattern.indexOf('\u00A4') == -1 ) { // 'x' not "x" -- workaround bug in IBM JDK 1.4.1
+                errln("Currency format for " + locales[i] +
+                        " does not contain generic currency symbol:" +
+                        pattern );
+            }
+            
+            // Create a DecimalFormat using the pattern we got and format a number
+            DecimalFormatSymbols symbols = new DecimalFormatSymbols(locales[i]);
+            DecimalFormat fmt1 = new DecimalFormat(pattern, symbols);
+            
+            String result1 = fmt1.format(1.111);
+            
+            //
+            // Now substitute in the locale's currency symbol and create another
+            // pattern.  Replace the decimal separator with the monetary separator.
+            //
+            //char decSep = symbols.getDecimalSeparator(); //The variable is never used
+            char monSep = symbols.getMonetaryDecimalSeparator();
+            StringBuffer buf = new StringBuffer(pattern);
+            for (int j = 0; j < buf.length(); j++) {
+                if (buf.charAt(j) == '\u00a4') {
+                    String cur = "'" + symbols.getCurrencySymbol() + "'";
+                    buf.replace(j, j+1, cur); 
+                    j += cur.length() - 1;
+                }
+            }
+            symbols.setDecimalSeparator(monSep);
+            DecimalFormat fmt2 = new DecimalFormat(buf.toString(), symbols);
+            
+            String result2 = fmt2.format(1.111);
+            
+            // NOTE: en_IN is a special case (ChoiceFormat currency display name)
+            if (!result1.equals(result2) &&
+                !locales[i].toString().equals("en_IN")) {
+                errln("Results for " + locales[i] + " differ: " +
+                      result1 + " vs " + result2);
+            }
+        }
+    }
+     
+    /**
+     * DecimalFormat.format() delivers wrong string.
+     */
+    public void Test4125885()
+    {
+        double rate = 12.34;
+        DecimalFormat formatDec = new DecimalFormat ("000.00");
+        logln("toPattern: " + formatDec.toPattern());
+        String rateString= formatDec.format(rate);
+        if (!rateString.equals("012.34"))
+            errln("result : " + rateString + " expected : 012.34");
+        rate = 0.1234;
+        formatDec = null;
+        formatDec = new DecimalFormat ("+000.00%;-000.00%");
+        logln("toPattern: " + formatDec.toPattern());
+        rateString= formatDec.format(rate);
+        if (!rateString.equals("+012.34%"))
+            errln("result : " + rateString + " expected : +012.34%");
+    }
+
+    /**
+     **
+     * DecimalFormat produces extra zeros when formatting numbers.
+     */
+    public void Test4134034() {
+        DecimalFormat nf = new DecimalFormat("##,###,###.00");
+        
+        String f = nf.format(9.02);
+        if (f.equals("9.02")) logln(f + " ok"); else errln("9.02 -> " + f + "; want 9.02");
+
+        f = nf.format(0);
+        if (f.equals(".00")) logln(f + " ok"); else errln("0 -> " + f + "; want .00");
+    }
+
+    /**
+     * CANNOT REPRODUCE - This bug could not be reproduced.  It may be
+     * a duplicate of 4134034.
+     *
+     * JDK 1.1.6 Bug, did NOT occur in 1.1.5
+     * Possibly related to bug 4125885.
+     * 
+     * This class demonstrates a regression in version 1.1.6
+     * of DecimalFormat class.
+     * 
+     * 1.1.6 Results
+     * Value 1.2 Format #.00 Result '01.20' !!!wrong
+     * Value 1.2 Format 0.00 Result '001.20' !!!wrong
+     * Value 1.2 Format 00.00 Result '0001.20' !!!wrong
+     * Value 1.2 Format #0.0# Result '1.2'
+     * Value 1.2 Format #0.00 Result '001.20' !!!wrong
+     * 
+     * 1.1.5 Results
+     * Value 1.2 Format #.00 Result '1.20'
+     * Value 1.2 Format 0.00 Result '1.20'
+     * Value 1.2 Format 00.00 Result '01.20'
+     * Value 1.2 Format #0.0# Result '1.2'
+     * Value 1.2 Format #0.00 Result '1.20'
+     */
+    public void Test4134300() {
+        String[] DATA = {
+         // Pattern      Expected string
+            "#.00",      "1.20",
+            "0.00",      "1.20",
+            "00.00",     "01.20",
+            "#0.0#",     "1.2",
+            "#0.00",     "1.20",
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            String result = new DecimalFormat(DATA[i]).format(1.2);
+            if (!result.equals(DATA[i+1])) {
+                errln("Fail: 1.2 x " + DATA[i] + " = " + result +
+                      "; want " + DATA[i+1]);
+            }
+            else {
+                logln("Ok: 1.2 x " + DATA[i] + " = " + result);
+            }
+        }
+    }
+
+    /**
+     * Empty pattern produces double negative prefix.
+     */
+    public void Test4140009() {
+        final double IN[]  = {  123.456,   -123.456  };
+        final String OUT[] = { "123.456", "-123.456" };
+        for (int i=0; i<2; ++i) {
+            DecimalFormat f = null;
+            switch (i) {
+            case 0:
+                f = new DecimalFormat("",
+                            new DecimalFormatSymbols(Locale.ENGLISH));
+                break;
+            case 1:
+                f = new DecimalFormat("#.#",
+                            new DecimalFormatSymbols(Locale.ENGLISH));
+                f.applyPattern("");
+                break;
+            }
+            for (int j=0; j<2; ++j) {
+                assertEquals("<empty pat " + i + ">.format(" + IN[j] + ")",
+                             OUT[j], f.format(IN[j]));
+            }
+        }
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * BigDecimal numbers get their fractions truncated by NumberFormat.
+     */
+    public void Test4141750() {
+        try {
+            String str = "12345.67";
+            java.math.BigDecimal bd = new java.math.BigDecimal(str);
+            String sd = NumberFormat.getInstance(Locale.US).format(bd);
+            if (!sd.endsWith("67")) errln("Fail: " + str + " x format -> " + sd);
+        }
+        catch (Exception e) {
+            warnln(e.toString());
+            //e.printStackTrace();
+        }
+    }
+//#endif
+
+    /**
+     * DecimalFormat toPattern() doesn't quote special characters or handle
+     * single quotes.
+     */
+    public void Test4145457() {
+        try {
+            DecimalFormat nf = (DecimalFormat)NumberFormat.getInstance();
+            DecimalFormatSymbols sym = nf.getDecimalFormatSymbols();
+            sym.setDecimalSeparator('\'');
+            nf.setDecimalFormatSymbols(sym);
+            double pi = 3.14159;
+
+            String[] PATS = { "#.00 'num''ber'", "''#.00''" };
+
+            for (int i=0; i<PATS.length; ++i) {
+                nf.applyPattern(PATS[i]);
+                String out = nf.format(pi);
+                String pat = nf.toPattern();
+                double val = nf.parse(out).doubleValue();
+            
+                nf.applyPattern(pat);
+                String out2 = nf.format(pi);
+                String pat2 = nf.toPattern();
+                double val2 = nf.parse(out2).doubleValue();
+            
+                if (!pat.equals(pat2))
+                    errln("Fail with \"" + PATS[i] + "\": Patterns should concur, \"" +
+                          pat + "\" vs. \"" + pat2 + "\"");
+                else
+                    logln("Ok \"" + PATS[i] + "\" toPattern() -> \"" + pat + '"');
+
+                if (val == val2 && out.equals(out2)) {
+                    logln("Ok " + pi + " x \"" + PATS[i] + "\" -> \"" +
+                          out + "\" -> " + val + " -> \"" +
+                          out2 + "\" -> " + val2);
+                }
+                else {
+                    errln("Fail " + pi + " x \"" + PATS[i] + "\" -> \"" +
+                          out + "\" -> " + val + " -> \"" +
+                          out2 + "\" -> " + val2);
+                }
+            }
+        }
+        catch (ParseException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * DecimalFormat.applyPattern() sets minimum integer digits incorrectly.
+     * CANNOT REPRODUCE
+     * This bug is a duplicate of 4139344, which is a duplicate of 4134300
+     */
+    public void Test4147295() {
+        DecimalFormat sdf = new DecimalFormat();
+        String pattern = "#,###";
+        logln("Applying pattern \"" + pattern + "\"");
+        sdf.applyPattern(pattern);
+        int minIntDig = sdf.getMinimumIntegerDigits();
+        if (minIntDig != 0) {
+            errln("Test failed");
+            errln(" Minimum integer digits : " + minIntDig);
+            errln(" new pattern: " + sdf.toPattern());
+        } else {
+            logln("Test passed");
+            logln(" Minimum integer digits : " + minIntDig);
+        }
+    }
+
+    /**
+     * DecimalFormat formats -0.0 as +0.0
+     * See also older related bug 4106658, 4106667
+     */
+    public void Test4147706() {
+        DecimalFormat df = new DecimalFormat("#,##0.0##");
+        df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ENGLISH));
+        double d1 = -0.0;
+        double d2 = -0.0001;
+        StringBuffer f1 = df.format(d1, new StringBuffer(), new FieldPosition(0));
+        StringBuffer f2 = df.format(d2, new StringBuffer(), new FieldPosition(0));
+        if (!f1.toString().equals("-0.0")) {
+            errln(d1 + " x \"" + df.toPattern() + "\" is formatted as \"" + f1 + '"');
+        }
+        if (!f2.toString().equals("-0.0")) {
+            errln(d2 + " x \"" + df.toPattern() + "\" is formatted as \"" + f2 + '"');
+        }
+    }
+
+    /**
+     * NumberFormat cannot format Double.MAX_VALUE
+     */
+    public void Test4162198() {
+        double dbl = Double.MAX_VALUE;
+        NumberFormat f = NumberFormat.getInstance();
+        f.setMaximumFractionDigits(Integer.MAX_VALUE);
+        f.setMaximumIntegerDigits(Integer.MAX_VALUE);
+        String s = f.format(dbl);
+        logln("The number " + dbl + " formatted to " + s);
+        Number n = null;
+        try {
+            n = f.parse(s);
+        } catch (java.text.ParseException e) {
+            errln("Caught a ParseException:");
+            e.printStackTrace();
+        }
+        logln("The string " + s + " parsed as " + n);
+        if (n.doubleValue() != dbl) {
+            errln("Round trip failure");
+        }
+    }
+
+    /**
+     * NumberFormat does not parse negative zero.
+     */
+    public void Test4162852() throws ParseException {
+        for (int i=0; i<2; ++i) {
+            NumberFormat f = (i == 0) ? NumberFormat.getInstance()
+                : NumberFormat.getPercentInstance();
+            double d = -0.0;
+            String s = f.format(d);
+            double e = f.parse(s).doubleValue();
+            logln("" +
+                  d + " -> " +
+                  '"' + s + '"' + " -> " +
+              e);
+            if (e != 0.0 || 1.0/e > 0.0) {
+                logln("Failed to parse negative zero");
+            }
+        }
+    }
+
+    /**
+     * NumberFormat truncates data
+     */
+    public void Test4167494() throws Exception {
+        NumberFormat fmt = NumberFormat.getInstance(Locale.US);
+        
+        double a = Double.MAX_VALUE;
+        String s = fmt.format(a);
+        double b = fmt.parse(s).doubleValue();
+        boolean match = a == b;
+        if (match) {
+            logln("" + a + " -> \"" + s + "\" -> " + b + " ok");
+        } else {
+            errln("" + a + " -> \"" + s + "\" -> " + b + " FAIL");
+        }
+
+        // We don't test Double.MIN_VALUE because the locale data for the US
+        // currently doesn't specify enough digits to display Double.MIN_VALUE.
+        // This is correct for now; however, we leave this here as a reminder
+        // in case we want to address this later.
+        if (false) {
+            a = Double.MIN_VALUE;
+            s = fmt.format(a);
+            b = fmt.parse(s).doubleValue();
+            match = a == b;
+            if (match) {
+                logln("" + a + " -> \"" + s + "\" -> " + b + " ok");
+            } else {
+                errln("" + a + " -> \"" + s + "\" -> " + b + " FAIL");
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat.parse() fails when ParseIntegerOnly set to true
+     */
+    public void Test4170798() {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        DecimalFormat df = new DecimalFormat();
+        df.setParseIntegerOnly(true);
+        Number n = df.parse("-0.0", new ParsePosition(0));
+        if (!(n instanceof Double)
+            || n.intValue() != 0) {
+            errln("FAIL: parse(\"-0.0\") returns " +
+                  n + " (" + n.getClass().getName() + ')');
+        }
+        Locale.setDefault(savedLocale);
+    }
+
+    /**
+     * toPattern only puts the first grouping separator in.
+     */
+    public void Test4176114() {
+        String[] DATA = {
+            "00", "#00",
+            "000", "#000", // No grouping
+            "#000", "#000", // No grouping
+            "#,##0", "#,##0",
+            "#,000", "#,000",
+            "0,000", "#0,000",
+            "00,000", "#00,000",
+            "000,000", "#,000,000",
+            "0,000,000,000,000.0000", "#0,000,000,000,000.0000", // Reported
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            DecimalFormat df = new DecimalFormat(DATA[i]);
+            String s = df.toPattern();
+            if (!s.equals(DATA[i+1])) {
+                errln("FAIL: " + DATA[i] + " -> " + s + ", want " + DATA[i+1]);
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat is incorrectly rounding numbers like 1.2501 to 1.2
+     */
+    public void Test4179818() {
+        String DATA[] = {
+            // Input  Pattern  Expected output
+            "1.2511", "#.#",   "1.3",
+            "1.2501", "#.#",   "1.3",
+            "0.9999", "#",     "1",
+        };
+        DecimalFormat fmt = new DecimalFormat("#",
+                new DecimalFormatSymbols(Locale.US));
+        for (int i=0; i<DATA.length; i+=3) {
+            double in = Double.valueOf(DATA[i]).doubleValue();
+            String pat = DATA[i+1];
+            String exp = DATA[i+2];
+            fmt.applyPattern(pat);
+            String out = fmt.format(in);
+            if (out.equals(exp)) {
+                logln("Ok: " + in + " x " + pat + " = " + out);
+            } else {
+                errln("FAIL: " + in + " x  " + pat + " = " + out +
+                      ", expected " + exp);
+            }
+        }
+    }
+
+    public void Test4185761() throws IOException, ClassNotFoundException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ObjectOutputStream oos = new ObjectOutputStream(baos);
+        
+        NumberFormat nf = NumberFormat.getInstance(Locale.US);
+
+    // Set special values we are going to search for in the output byte stream
+    // These are all legal values.
+        nf.setMinimumIntegerDigits(0x111); // Keep under 309
+        nf.setMaximumIntegerDigits(0x112); // Keep under 309
+        nf.setMinimumFractionDigits(0x113); // Keep under 340
+        nf.setMaximumFractionDigits(0x114); // Keep under 340
+        
+        oos.writeObject(nf);
+        oos.flush();
+        baos.close();
+        
+        byte[] bytes = baos.toByteArray();
+
+    // Scan for locations of min/max int/fract values in the byte array.
+    // At the moment (ICU4J 2.1), there is only one instance of each target pair
+    // in the byte stream, so assume first match is it.  Note this is not entirely
+    // failsafe, and needs to be checked if we change the package or structure of
+    // this class.
+    // Current positions are 890, 880, 886, 876
+        int[] offsets = new int[4];
+        for (int i = 0; i < bytes.length - 1; ++i) {
+            if (bytes[i] == 0x01) { // high byte
+                for (int j = 0; j < offsets.length; ++j) {
+                    if ((offsets[j] == 0) && (bytes[i+1] == (0x11 + j))) { // low byte
+                        offsets[j] = i;
+                        break;
+                    }
+                }
+            }
+        }
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            Object o = ois.readObject();
+            ois.close();
+            
+            if (!nf.equals(o)) {
+                errln("Fail: DateFormat serialization/equality bug");
+            } else {
+                logln("DateFormat serialization/equality is OKAY.");
+            }
+        }
+
+    // Change the values in the byte stream so that min > max.
+    // Numberformat should catch this and throw an exception.
+        for (int i = 0; i < offsets.length; ++i) {
+            bytes[offsets[i]] = (byte)(4 - i);
+        }
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            try {
+                NumberFormat format = (NumberFormat) ois.readObject();
+                logln("format: " + format.format(1234.56)); //fix "The variable is never used"
+                errln("FAIL: Deserialized bogus NumberFormat with minXDigits > maxXDigits");
+            } catch (InvalidObjectException e) {
+                logln("Ok: " + e.getMessage());
+            }
+        }
+
+    // Set values so they are too high, but min <= max
+    // Format should pass the min <= max test, and DecimalFormat should reset to current maximum
+    // (for compatibility with versions streamed out before the maximums were imposed).
+        for (int i = 0; i < offsets.length; ++i) {
+            bytes[offsets[i]] = 4;
+        }
+
+        {
+            ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+            NumberFormat format = (NumberFormat) ois.readObject();
+            //For compatibility with previous version
+            if ((format.getMaximumIntegerDigits() != 309) 
+                || format.getMaximumFractionDigits() != 340) {
+                errln("FAIL: Deserialized bogus NumberFormat with values out of range," +
+                      " intMin: " + format.getMinimumIntegerDigits() +
+                      " intMax: " + format.getMaximumIntegerDigits() +
+                      " fracMin: " + format.getMinimumFractionDigits() +
+                      " fracMax: " + format.getMaximumFractionDigits());
+            } else {
+                logln("Ok: Digit count out of range");
+            }
+        }
+    }
+
+
+    /**
+     * Some DecimalFormatSymbols changes are not picked up by DecimalFormat.
+     * This includes the minus sign, currency symbol, international currency
+     * symbol, percent, and permille.  This is filed as bugs 4212072 and
+     * 4212073.
+     */
+    public void Test4212072() throws IOException, ClassNotFoundException {
+        DecimalFormatSymbols sym = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", sym);
+
+        sym.setMinusSign('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(-1).equals("^1")) {
+            errln("FAIL: -1 x (minus=^) -> " + fmt.format(-1) +
+                  ", exp ^1");
+        }
+        if (!fmt.getNegativePrefix().equals("^")) {
+            errln("FAIL: (minus=^).getNegativePrefix -> " +
+                  fmt.getNegativePrefix() + ", exp ^");
+        }
+        sym.setMinusSign('-');
+
+        fmt.applyPattern("#%");
+        sym.setPercent('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(0.25).equals("25^")) {
+            errln("FAIL: 0.25 x (percent=^) -> " + fmt.format(0.25) +
+                  ", exp 25^");
+        }
+        if (!fmt.getPositiveSuffix().equals("^")) {
+            errln("FAIL: (percent=^).getPositiveSuffix -> " +
+                  fmt.getPositiveSuffix() + ", exp ^");
+        }
+        sym.setPercent('%');
+        
+        fmt.applyPattern("#\u2030");
+        sym.setPerMill('^');
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(0.25).equals("250^")) {
+            errln("FAIL: 0.25 x (permill=^) -> " + fmt.format(0.25) +
+                  ", exp 250^");
+        }
+        if (!fmt.getPositiveSuffix().equals("^")) {
+            errln("FAIL: (permill=^).getPositiveSuffix -> " +
+                  fmt.getPositiveSuffix() + ", exp ^");
+        }
+        sym.setPerMill('\u2030');
+
+        fmt.applyPattern("\u00A4#.00");
+        sym.setCurrencySymbol("usd");
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(12.5).equals("usd12.50")) {
+            errln("FAIL: 12.5 x (currency=usd) -> " + fmt.format(12.5) +
+                  ", exp usd12.50");
+        }
+        if (!fmt.getPositivePrefix().equals("usd")) {
+            errln("FAIL: (currency=usd).getPositivePrefix -> " +
+                  fmt.getPositivePrefix() + ", exp usd");
+        }
+        sym.setCurrencySymbol("$");
+
+        fmt.applyPattern("\u00A4\u00A4#.00");
+        sym.setInternationalCurrencySymbol("DOL");
+        fmt.setDecimalFormatSymbols(sym);
+        if (!fmt.format(12.5).equals("DOL12.50")) {
+            errln("FAIL: 12.5 x (intlcurrency=DOL) -> " + fmt.format(12.5) +
+                  ", exp DOL12.50");
+        }
+        if (!fmt.getPositivePrefix().equals("DOL")) {
+            errln("FAIL: (intlcurrency=DOL).getPositivePrefix -> " +
+                  fmt.getPositivePrefix() + ", exp DOL");
+        }
+        sym.setInternationalCurrencySymbol("USD");
+
+        if (VersionInfo.ICU_VERSION == VersionInfo.getInstance(2,2)) {
+            // bug in 2.2 that fails this test
+            // to be fixed in the later versions
+            System.out.println("\n        Test skipped for release 2.2");
+            return;
+        }
+        
+        // Since the pattern logic has changed, make sure that patterns round
+        // trip properly.  Test stream in/out integrity too.
+        Locale[] avail = NumberFormat.getAvailableLocales();
+        for (int i=0; i<avail.length; ++i) {
+            for (int j=0; j<3; ++j) {
+                NumberFormat nf;
+                switch (j) {
+                case 0:
+                    nf = NumberFormat.getInstance(avail[i]);
+                    break;
+                case 1:
+                    nf = NumberFormat.getCurrencyInstance(avail[i]);
+                    break;
+                default:
+                    nf = NumberFormat.getPercentInstance(avail[i]);
+                    break;
+                }
+                DecimalFormat df = (DecimalFormat) nf;
+                
+                // Test toPattern/applyPattern round trip
+                String pat = df.toPattern();
+                DecimalFormatSymbols symb = new DecimalFormatSymbols(avail[i]);
+                DecimalFormat f2 = new DecimalFormat(pat, symb);
+                if (!df.equals(f2)) {
+                    errln("FAIL: " + avail[i] + " #" + j + " -> \"" + pat +
+                          "\" -> \"" + f2.toPattern() + '"');
+                }
+
+                // Test toLocalizedPattern/applyLocalizedPattern round trip
+                pat = df.toLocalizedPattern();
+                try{
+                    f2.applyLocalizedPattern(pat);
+                    
+                    String s1 = f2.format(123456);
+                    String s2 = df.format(123456);
+                    if(!s1.equals(s2)){
+                        errln("FAIL: " + avail[i] + " #" + j + " -> localized \"" + s2 +
+                                "\" -> \"" + s2 + '"'+ " in locale "+df.getLocale(ULocale.ACTUAL_LOCALE));
+  
+                    }
+                    if (!df.equals(f2)) {
+                        errln("FAIL: " + avail[i] + " #" + j + " -> localized \"" + pat +
+                              "\" -> \"" + f2.toLocalizedPattern() + '"'+ " in locale "+df.getLocale(ULocale.ACTUAL_LOCALE));
+                        errln("s1: "+s1+" s2: "+s2);
+                    }
+                   
+                }catch(IllegalArgumentException ex){
+                    errln(ex.getMessage()+" for locale "+ df.getLocale(ULocale.ACTUAL_LOCALE));
+                }
+                
+
+                // Test writeObject/readObject round trip
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.writeObject(df);
+                oos.flush();
+                baos.close();
+                byte[] bytes = baos.toByteArray();
+                ObjectInputStream ois =
+                    new ObjectInputStream(new ByteArrayInputStream(bytes));
+                f2 = (DecimalFormat) ois.readObject();
+                if (!df.equals(f2)) {
+                    errln("FAIL: Stream in/out " + avail[i] + " -> \"" + pat +
+                          "\" -> " +
+                          (f2 != null ? ("\""+f2.toPattern()+'"') : "null"));
+                }
+
+            }
+        }
+
+        // @since ICU 2.4
+        // Make sure that all special characters, when quoted in a suffix or
+        // prefix, lose their special meaning.
+        char[] SPECIALS = { '0', ',', '.', '\u2030', '%', '#',
+                            ';', 'E', '*', '+', '-' };
+        sym = new DecimalFormatSymbols(Locale.US);
+        for (int j=0; j<SPECIALS.length; ++j) {
+            char special = SPECIALS[j];
+            String pat = "'" + special + "'#0'" + special + "'";
+            try {
+                fmt = new DecimalFormat(pat, sym);
+                String pat2 = fmt.toPattern();
+                if (!pat.equals(pat2)) {
+                    errln("FAIL: Pattern \"" + pat + "\" => toPattern() => \"" +
+                          pat2 + "\"");
+                }
+                String s = fmt.format(123);
+                String exp = "" + special + "123" + special;
+                if (!s.equals(exp)) {
+                    errln("FAIL: 123 x \"" + pat + "\" => \"" + s + "\", exp \"" +
+                          exp + "\"");
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: Pattern \"" + pat + "\" => " + e.getMessage());
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat.parse() fails for mulipliers 2^n.
+     */
+    public void Test4216742() throws ParseException {
+        DecimalFormat fmt = (DecimalFormat) NumberFormat.getInstance(Locale.US);
+        long[] DATA = { Long.MIN_VALUE, Long.MAX_VALUE, -100000000L, 100000000L};
+        for (int i=0; i<DATA.length; ++i) {
+            String str = Long.toString(DATA[i]);
+            for (int m = 1; m <= 100; m++) {
+                fmt.setMultiplier(m);
+                long n = ((Number) fmt.parse(str)).longValue();
+                if (n > 0 != DATA[i] > 0) {
+                    errln("\"" + str + "\" parse(x " + fmt.getMultiplier() +
+                          ") => " + n);
+                }
+            }
+        }
+    }
+
+    /**
+     * DecimalFormat formats 1.001 to "1.00" instead of "1" with 2 fraction
+     * digits.
+     */
+    public void Test4217661() {
+        Object[] DATA = {
+            new Double(0.001), "0",
+            new Double(1.001), "1",
+            new Double(0.006), "0.01",
+            new Double(1.006), "1.01",
+        };
+        NumberFormat fmt = NumberFormat.getInstance(Locale.US);
+        fmt.setMaximumFractionDigits(2); 
+        for (int i=0; i<DATA.length; i+=2) {
+            String s = fmt.format(((Double) DATA[i]).doubleValue());
+            if (!s.equals(DATA[i+1])) {
+                errln("FAIL: Got " + s + ", exp " + DATA[i+1]); 
+            }
+        }
+    }
+    
+    /**
+     * 4243011: Formatting .5 rounds to "1" instead of "0"
+     */
+    public void Test4243011() {
+        double DATA[] = {0.5, 1.5, 2.5, 3.5, 4.5};
+        String EXPECTED[] = {"0.", "2.", "2.", "4.", "4."};
+        
+        DecimalFormat format = new DecimalFormat("0.");
+        for (int i = 0; i < DATA.length; i++) {
+            String result = format.format(DATA[i]);
+            if (result.equals(EXPECTED[i])) {
+                logln("OK: got " + result);
+            } else {
+                errln("FAIL: got " + result);
+            }
+        }
+    }
+    
+    /**
+     * 4243108: format(0.0) gives "0.1" if preceded by parse("99.99")
+     */
+    public void Test4243108() {
+        DecimalFormat f = new DecimalFormat("#.#");
+        String result = f.format(0.0);
+        if (result.equals("0")) {
+            logln("OK: got " + result);
+        } else {
+            errln("FAIL: got " + result);
+        }
+        try {
+            double dResult = f.parse("99.99").doubleValue();
+            if (dResult == 99.99) {
+                logln("OK: got " + dResult);
+            } else {
+                errln("FAIL: got " + dResult);
+            }
+        } catch (ParseException e) {
+            errln("Caught a ParseException:");
+            e.printStackTrace();
+        }            
+        result = f.format(0.0);
+        if (result.equals("0")) {
+            logln("OK: got " + result);
+        } else {
+            errln("FAIL: got " + result);
+        }
+    }
+    
+    /**
+     * 4330377: DecimalFormat engineering notation gives incorrect results
+     */
+    public void test4330377() {
+        /*
+        double[] input = {5000.0, 500.0, 50.0, 5.0, 0.5, 0.05, 0.005, 0.0005,
+               5050.0, 505.0, 50.5, 5.05, 0.505, 0.0505, 0.00505, 0.000505};
+        String[] pattern = {"000.#E0", "##0.#E0", "#00.#E0"};
+        String[][] expected = {
+            // it's questionable whether "#00.#E0" should result in post-decimal
+            // zeroes, i.e., whether "5.0E3", "5.0E0", "5.0E-3" are really good
+            {"500E1", "5E3", "5.0E3"},
+            {"500E0", "500E0", "500E0"},
+            {"500E-1", "50E0", "50E0"},
+            {"500E-2", "5E0", "5.0E0"},
+            {"500E-3", "500E-3", "500E-3"},
+            {"500E-4", "50E-3", "50E-3"},
+            {"500E-5", "5E-3", "5.0E-3"},
+            {"500E-6", "500E-6", "500E-6"},
+            {"505E1", "5.05E3", "5.05E3"},
+            {"505E0", "505E0", "505E0"},
+            {"505E-1", "50.5E0", "50.5E0"},
+            {"505E-2", "5.05E0", "5.05E0"},
+            {"505E-3", "505E-3", "505E-3"},
+            {"505E-4", "50.5E-3", "50.5E-3"},
+            {"505E-5", "5.05E-3", "5.05E-3"},
+            {"505E-6", "505E-6", "505E-6"}
+        };
+        for (int i = 0; i < input.length; i++) {
+            for (int j = 0; j < pattern.length; j++) {
+                DecimalFormat format = new DecimalFormat(pattern[j]);
+                String result = format.format(input[i]);
+                if (!result.equals(expected[i][j])) {
+                    errln("FAIL: input: " + input[i] +
+                            ", pattern: " + pattern[j] +
+                            ", expected: " + expected[i][j] +
+                            ", got: " + result);
+                }
+            }
+        }
+        */
+    }
+    
+    /**
+     * 4233840: NumberFormat does not round correctly
+     */
+    public void test4233840() {
+        float f = 0.0099f;
+
+        NumberFormat nf = new DecimalFormat("0.##", new DecimalFormatSymbols(Locale.US));
+    nf.setMinimumFractionDigits(2);
+    
+    String result = nf.format(f);
+    
+    if (!result.equals("0.01")) {
+        errln("FAIL: input: " + f + ", expected: 0.01, got: " + result);
+    }
+    }
+    
+    /**
+     * 4241880: Decimal format doesnt round a double properly when the number is less than 1
+     */
+    public void test4241880() {
+        Locale savedLocale = Locale.getDefault();
+        Locale.setDefault(Locale.US);
+        double[] input = {
+                .019, .009, .015, .016, .014,
+                .004, .005, .006, .007, .008,
+                .5, 1.5, .05, .15, .005,
+                .015, .0005, .0015,
+        };
+        String[] pattern = {
+                "##0%", "##0%", "##0%", "##0%", "##0%",
+                "##0%", "##0%", "##0%", "##0%", "##0%",
+                "#,##0", "#,##0", "#,##0.0", "#,##0.0", "#,##0.00",
+                "#,##0.00", "#,##0.000", "#,##0.000",
+        };
+        String[] expected = {
+                "2%", "1%", "2%", "2%", "1%",
+                "0%", "0%", "1%", "1%", "1%",
+                "0", "2", "0.0", "0.2", "0.00",
+                "0.02", "0.000", "0.002",
+        };
+        for (int i = 0; i < input.length; i++) {
+            DecimalFormat format = new DecimalFormat(pattern[i]);
+            String result = format.format(input[i]);
+            if (!result.equals(expected[i])) {
+                errln("FAIL: input: " + input[i] +
+                        ", pattern: " + pattern[i] +
+                        ", expected: " + expected[i] +
+                        ", got: " + result);
+            }
+        }
+        Locale.setDefault(savedLocale);
+    }
+}
+
+class myformat implements Serializable
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4120813612616076506L;
+    DateFormat _dateFormat = DateFormat.getDateInstance();
+
+    public String Now()
+    {
+        GregorianCalendar calendar = new GregorianCalendar();
+        Date t = calendar.getTime();
+        String nowStr = _dateFormat.format(t);
+        return nowStr;
+    }
+}
+
+class MyNumberFormatTest extends NumberFormat {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 1251303884737169952L;
+    public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public StringBuffer format(long number,StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public Number parse(String text, ParsePosition parsePosition) {
+        return new Integer(0);
+    }
+//#if defined(FOUNDATION10)
+//#else
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+//#endif
+    public StringBuffer format(BigInteger number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    public StringBuffer format(com.ibm.icu.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/PluralFormatTest.java b/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
new file mode 100644
index 0000000..5a141a9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
@@ -0,0 +1,218 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.PluralFormat;
+import com.ibm.icu.util.ULocale;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author tschumann (Tim Schumann)
+ *
+ */
+public class PluralFormatTest extends TestFmwk {
+  
+  public static void main(String[] args) throws Exception {
+    new PluralFormatTest().run(args);
+  }
+  
+  private void helperTestRules(String localeIDs, String testPattern, Map changes) {
+    String[] locales = Utility.split(localeIDs, ',');
+    
+    // Create example outputs for all supported locales.
+    /*
+    System.out.println("\n" + localeIDs);
+    String lastValue = (String) changes.get(new Integer(0));
+    int  lastNumber = 0; 
+    
+    for (int i = 1; i < 199; ++i) {
+        if (changes.get(new Integer(i)) != null) {
+            if (lastNumber == i-1) {
+                System.out.println(lastNumber + ": " + lastValue);
+            } else {
+                System.out.println(lastNumber + "... " + (i-1) + ": " + lastValue);
+            }
+            lastNumber = i;
+            lastValue = (String) changes.get(new Integer(i));
+        }
+    }
+    System.out.println(lastNumber + "..." + 199 + ": " + lastValue);
+    */
+    log("test pattern: '" + testPattern + "'");
+    for (int i = 0; i < locales.length; ++i) {
+      try {
+        PluralFormat plf = new PluralFormat(new ULocale(locales[i]), testPattern);
+        log("plf: " + plf);
+        String expected = (String) changes.get(new Integer(0));
+        for (int n = 0; n < 200; ++n) {
+          if (changes.get(new Integer(n)) != null) {
+            expected = (String) changes.get(new Integer(n));
+          }
+          assertEquals("Locale: " + locales[i] + ", number: " + n,
+                       expected, plf.format(n));
+        }
+      } catch (IllegalArgumentException e) {
+        errln(e.getMessage() + " locale: " + locales[i] + " pattern: '" + testPattern + "' " + System.currentTimeMillis());
+      }
+    }
+  }
+  
+  public void TestOneFormLocales() {
+    String localeIDs = "ja,ko,tr,vi";
+    String testPattern = "other{other}";
+    Map changes = new HashMap();
+    changes.put(new Integer(0), "other");
+    helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingular1Locales() {
+    String localeIDs = "da,de,el,en,eo,es,et,fi,fo,he,it,nb,nl,nn,no,pt_PT,sv";
+    String testPattern = "one{one} other{other}";
+    Map changes = new HashMap();
+    changes.put(new Integer(0), "other");
+    changes.put(new Integer(1), "one");
+    changes.put(new Integer(2), "other");
+    helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingular01Locales() {
+    String localeIDs = "fr,pt_BR";
+    String testPattern = "one{one} other{other}";
+    Map changes = new HashMap();
+    changes.put(new Integer(0), "one");
+    changes.put(new Integer(2), "other");
+    helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestZeroSingularLocales() {
+    String localeIDs = "lv";
+    String testPattern = "zero{zero} one{one} other{other}";
+    Map changes = new HashMap();
+    changes.put(new Integer(0), "zero");
+    changes.put(new Integer(1), "one");
+    changes.put(new Integer(2), "other");
+    for (int i = 2; i < 20; ++i) {
+      if (i == 11) {
+        continue;
+      }
+      changes.put(new Integer(i*10 + 1), "one");
+      changes.put(new Integer(i*10 + 2), "other");
+    }
+    helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingularDual() {
+      String localeIDs = "ga";
+      String testPattern = "one{one} two{two} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "two");
+      changes.put(new Integer(3), "other");
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingularZeroSome() {
+      String localeIDs = "ro";
+      String testPattern = "few{few} one{one} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "few");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(20), "other");
+      changes.put(new Integer(101), "few");
+      changes.put(new Integer(120), "other");
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSpecial12_19() {
+      String localeIDs = "lt";
+      String testPattern = "one{one} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(10), "other");
+      for (int i = 2; i < 20; ++i) {
+        if (i == 11) {
+          continue;
+        }
+        changes.put(new Integer(i*10 + 1), "one");
+        changes.put(new Integer(i*10 + 2), "few");
+        changes.put(new Integer((i+1)*10), "other");
+      }
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestPaucalExcept11_14() {
+      String localeIDs = "hr,ru,sr,uk";
+      String testPattern = "one{one} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(5), "other");
+      for (int i = 2; i < 20; ++i) {
+        if (i == 11) {
+          continue;
+        }
+        changes.put(new Integer(i*10 + 1), "one");
+        changes.put(new Integer(i*10 + 2), "few");
+        changes.put(new Integer(i*10 + 5), "other");
+      }
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestSingularPaucal() {
+      String localeIDs = "cs,sk";
+      String testPattern = "one{one} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(5), "other");
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestPaucal1_234() {
+      String localeIDs = "pl";
+      String testPattern = "one{one} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "few");
+      changes.put(new Integer(5), "other");
+      for (int i = 2; i < 20; ++i) {
+        if (i == 2 || i == 11 || i == 12) {
+          continue;
+        }
+        changes.put(new Integer(i*10 + 2), "few");
+        changes.put(new Integer(i*10 + 5), "other");
+      }
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+  
+  public void TestPaucal1_2_34() {
+      String localeIDs = "sl";
+      String testPattern = "one{one} two{two} few{few} other{other}";
+      Map changes = new HashMap();
+      changes.put(new Integer(0), "other");
+      changes.put(new Integer(1), "one");
+      changes.put(new Integer(2), "two");
+      changes.put(new Integer(3), "few");
+      changes.put(new Integer(5), "other");
+      changes.put(new Integer(101), "one");
+      changes.put(new Integer(102), "two");
+      changes.put(new Integer(103), "few");
+      changes.put(new Integer(105), "other");
+      helperTestRules(localeIDs, testPattern, changes);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java b/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
new file mode 100644
index 0000000..9a889a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
@@ -0,0 +1,251 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.ULocale;
+
+import java.text.ParsePosition;
+
+/**
+ * @author tschumann (Tim Schumann)
+ *
+ */
+public class PluralFormatUnitTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new PluralFormatUnitTest().run(args);
+    }
+
+    public void TestConstructor() {
+        // Test correct formatting of numbers.
+        PluralFormat plFmts[] = new PluralFormat[8];
+        plFmts[0] = new PluralFormat();
+        plFmts[0].applyPattern("other{#}");
+        plFmts[1] = new PluralFormat(PluralRules.DEFAULT);
+        plFmts[1].applyPattern("other{#}");
+        plFmts[2] = new PluralFormat(PluralRules.DEFAULT, "other{#}");
+        plFmts[3] = new PluralFormat("other{#}");
+        plFmts[4] = new PluralFormat(ULocale.getDefault());
+        plFmts[4].applyPattern("other{#}");
+        plFmts[5] = new PluralFormat(ULocale.getDefault(), PluralRules.DEFAULT);
+        plFmts[5].applyPattern("other{#}");
+        plFmts[6] = new PluralFormat(ULocale.getDefault(),
+                                   PluralRules.DEFAULT,
+                                   "other{#}");
+        plFmts[7] = new PluralFormat(ULocale.getDefault(), "other{#}");
+
+        // These plural formats should produce the same output as a
+        // NumberFormat for the default locale.
+        NumberFormat numberFmt = NumberFormat.getInstance(ULocale.getDefault());
+        for (int n = 1; n < 13; n++) {
+            String result = numberFmt.format(n);
+            for (int k = 0; k < plFmts.length; ++k) {
+                this.assertEquals("PluralFormat's output is not as expected",
+                                  result, plFmts[k].format(n));
+            }
+        }
+        // Test some bigger numbers.
+        for (int n = 100; n < 113; n++) {
+            String result = numberFmt.format(n*n);
+            for (int k = 0; k < plFmts.length; ++k) {
+                this.assertEquals("PluralFormat's output is not as expected",
+                                  result, plFmts[k].format(n*n));
+            }
+        }
+    }
+
+    public void TestApplyPatternAndFormat() {
+        // Create rules for testing.
+        PluralRules oddAndEven =  PluralRules.createRules("odd: n mod 2 is 1");
+        {
+            // Test full specified case for testing RuleSet
+            PluralFormat plfOddAndEven = new PluralFormat(oddAndEven);
+            plfOddAndEven.applyPattern("odd{# is odd.} other{# is even.}");
+
+            // Test fall back to other.
+            PluralFormat plfOddOrEven = new PluralFormat(oddAndEven);
+            plfOddOrEven.applyPattern("other{# is odd or even.}");
+
+            NumberFormat numberFormat =
+                NumberFormat.getInstance(ULocale.getDefault());
+            for (int i = 0; i < 22; ++i) {
+                assertEquals("Fallback to other gave wrong results",
+                             numberFormat.format(i) + " is odd or even.",
+                             plfOddOrEven.format(i));
+                assertEquals("Fully specified PluralFormat gave wrong results",
+                        numberFormat.format(i) + ((i%2 == 1) ?  " is odd."
+                                                             :  " is even."),
+                        plfOddAndEven.format(i));
+            }
+
+            // Check that double definition results in an exception.
+            try {
+                PluralFormat plFmt = new PluralFormat(oddAndEven);
+                plFmt.applyPattern("odd{foo} odd{bar} other{foobar}");
+                errln("Double definition of a plural case message should " +
+                       "provoke an exception but did not.");
+            }catch (IllegalArgumentException e){}
+            try {
+                PluralFormat plFmt = new PluralFormat(oddAndEven);
+                plFmt.applyPattern("odd{foo} other{bar} other{foobar}");
+                errln("Double definition of a plural case message should " +
+                       "provoke an exception but did not.");
+            }catch (IllegalArgumentException e){}
+        }
+        // omit other keyword.
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{foo}");
+            errln("Not defining plural case other should result in an " +
+                    "exception but did not.");
+        }catch (IllegalArgumentException e){}
+
+        // Test unknown keyword.
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("otto{foo} other{bar}");
+            errln("Defining a message for an unknown keyword should result in" +
+                    "an exception but did not.");
+        }catch (IllegalArgumentException e){}
+
+        // Test invalid keyword.
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("1odd{foo} other{bar}");
+            errln("Defining a message for an invalid keyword should result in" +
+                    "an exception but did not.");
+        }catch (IllegalArgumentException e){}
+
+        // Test invalid syntax
+        //   -- comma between keyword{message} clauses
+        //   -- space in keywords
+        //   -- keyword{message1}{message2}
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{foo},other{bar}");
+            errln("Separating keyword{message} items with other characters " +
+                    "than space should provoke an exception but did not.");
+        }catch (IllegalArgumentException e){}
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("od d{foo} other{bar}");
+            errln("Spaces inside keywords should provoke an exception but " +
+                    "did not.");
+        }catch (IllegalArgumentException e){}
+        try {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{foo}{foobar}other{foo}");
+            errln("Defining multiple messages after a keyword should provoke " +
+                    "an exception but did not.");
+        }catch (IllegalArgumentException e){}
+
+        // Check that nested format is preserved.
+        {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{The number {0, number, #.#0} is odd.}" +
+                               "other{The number {0, number, #.#0} is even.}");
+            for (int i = 1; i < 3; ++i) {
+                assertEquals("format did not preserve a nested format string.",
+                              ((i % 2 == 1) ?
+                                      "The number {0, number, #.#0} is odd."
+                                    : "The number {0, number, #.#0} is even."),
+                              plFmt.format(i));
+            }
+
+        }
+        // Check that a pound sign in curly braces is preserved.
+        {
+            PluralFormat plFmt = new PluralFormat(oddAndEven);
+            plFmt.applyPattern("odd{The number {#} is odd.}" +
+                               "other{The number {#} is even.}");
+            for (int i = 1; i < 3; ++i) {
+                assertEquals("format did not preserve # inside curly braces.",
+                              ((i % 2 == 1) ? "The number {#} is odd."
+                                            : "The number {#} is even."),
+                              plFmt.format(i));
+            }
+
+        }
+    }
+
+    public void TestSetLocale() {
+        // Create rules for testing.
+        PluralRules oddAndEven = PluralRules.createRules("odd__: n mod 2 is 1");
+
+        PluralFormat plFmt = new PluralFormat(oddAndEven);
+        plFmt.applyPattern("odd__{odd} other{even}");
+        plFmt.setLocale(ULocale.ENGLISH);
+
+        // Check that pattern gets deleted.
+        NumberFormat nrFmt = NumberFormat.getInstance(ULocale.ENGLISH);
+        assertEquals("pattern was not resetted by setLocale() call.",
+                     nrFmt.format(5),
+                     plFmt.format(5));
+
+        // Check that rules got updated.
+        try {
+            plFmt.applyPattern("odd__{odd} other{even}");
+            errln("SetLocale should reset rules but did not.");
+        } catch (IllegalArgumentException e) {
+            if (e.getMessage().indexOf("Unknown keyword") < 0){
+                errln("Wrong exception thrown");
+            }
+        }
+        plFmt.applyPattern("one{one} other{not one}");
+        for (int i = 0; i < 20; ++i) {
+            assertEquals("Wrong ruleset loaded by setLocale()",
+                         ((i==1) ? "one" : "not one"),
+                         plFmt.format(i));
+        }
+    }
+
+    public void TestParse() {
+        PluralFormat plFmt = new PluralFormat("other{test}");
+        try {
+            plFmt.parse("test", new ParsePosition(0));
+            errln("parse() should throw an UnsupportedOperationException but " +
+                    "did not");
+        } catch (UnsupportedOperationException e) {
+        }
+
+        plFmt = new PluralFormat("other{test}");
+        try {
+            plFmt.parseObject("test", new ParsePosition(0));
+            errln("parse() should throw an UnsupportedOperationException but " +
+                    "did not");
+        } catch (UnsupportedOperationException e) {
+        }
+    }
+
+    public void TestPattern() {
+        Object[] args = { "acme", null };
+
+        {
+            PluralFormat pf = new PluralFormat("  one {one ''widget} other {# widgets}  ");
+            String pat = pf.toPattern();
+            logln("pf pattern: '" + pat + "'");
+
+            assertEquals("no leading spaces", "o", pat.substring(0, 1));
+            assertEquals("no trailing spaces", "}", pat.substring(pat.length() - 1));
+        }
+
+        MessageFormat pfmt = new MessageFormat("The disk ''{0}'' contains {1, plural,  one {one ''''{1, number, #.0}'''' widget} other {# widgets}}.");
+        System.out.println();
+        for (int i = 0; i < 3; ++i) {
+            args[1] = new Integer(i);
+            logln(pfmt.format(args));
+        }
+        PluralFormat pf = (PluralFormat)pfmt.getFormatsByArgumentIndex()[1];
+        logln(pf.toPattern());
+        logln(pfmt.toPattern());
+        MessageFormat pfmt2 = new MessageFormat(pfmt.toPattern());
+        assertEquals("message formats are equal", pfmt, pfmt2);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/PluralRulesTest.java b/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
new file mode 100644
index 0000000..cb53dc6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
@@ -0,0 +1,184 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.util.ULocale;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author dougfelt (Doug Felt)
+ */
+public class PluralRulesTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new PluralRulesTest().run(args);
+    }
+
+    private static final String[] parseTestData = {
+        "a: n is 1", "a:1",
+        "a: n mod 10 is 2", "a:2,12,22",
+        "a: n is not 1", "a:0,2,3,4,5",
+        "a: n mod 3 is not 1", "a:0,2,3,5,6,8,9",
+        "a: n in 2..5", "a:2,3,4,5",
+        "a: n within 2..5", "a:2,3,4,5",
+        "a: n not in 2..5", "a:0,1,6,7,8",
+        "a: n not within 2..5", "a:0,1,6,7,8",
+        "a: n mod 10 in 2..5", "a:2,3,4,5,12,13,14,15,22,23,24,25",
+        "a: n mod 10 within 2..5", "a:2,3,4,5,12,13,14,15,22,23,24,25",
+        "a: n mod 10 is 2 and n is not 12", "a:2,22,32,42",
+        "a: n mod 10 in 2..3 or n mod 10 is 5", "a:2,3,5,12,13,15,22,23,25",
+        "a: n mod 10 within 2..3 or n mod 10 is 5", "a:2,3,5,12,13,15,22,23,25",
+        "a: n is 1 or n is 4 or n is 23", "a:1,4,23",
+        "a: n mod 2 is 1 and n is not 3 and n in 1..11", "a:1,5,7,9,11",
+        "a: n mod 2 is 1 and n is not 3 and n within 1..11", "a:1,5,7,9,11",
+        "a: n mod 2 is 1 or n mod 5 is 1 and n is not 6", "a:1,3,5,7,9,11,13,15,16",
+        "a: n in 2..5; b: n in 5..8; c: n mod 2 is 1", "a:2,3,4,5;b:6,7,8;c:1,9,11",
+        "a: n within 2..5; b: n within 5..8; c: n mod 2 is 1", "a:2,3,4,5;b:6,7,8;c:1,9,11",
+    };
+
+    private String[] getTargetStrings(String targets) {
+        List list = new ArrayList(50);
+        String[] valSets = Utility.split(targets, ';');
+        for (int i = 0; i < valSets.length; ++i) {
+            String[] temp = Utility.split(valSets[i], ':');
+            String key = temp[0].trim();
+            String[] vals = Utility.split(temp[1], ',');
+            for (int j = 0; j < vals.length; ++j) {
+                String valString = vals[j].trim();
+                int val = Integer.parseInt(valString);
+                while (list.size() <= val) {
+                    list.add(null);
+                }
+                if (list.get(val) != null) {
+                    fail("key: " + list.get(val) + " already set for: " + val);
+                }
+                list.set(val, key);
+            }
+        }
+
+        String[] result = (String[]) list.toArray(new String[list.size()]);
+        for (int i = 0; i < result.length; ++i) {
+            if (result[i] == null) {
+                result[i] = "other";
+            }
+        }
+        return result;
+    }
+
+    private void checkTargets(PluralRules rules, String[] targets) {
+        for (int i = 0; i < targets.length; ++i) {
+            assertEquals("value " + i, targets[i], rules.select(i));
+        }
+    }
+
+    public void testParseEmpty() throws ParseException {
+        PluralRules rules = PluralRules.parseDescription("a:n");
+        assertEquals("empty", "a", rules.select(0));
+    }
+
+    public void testParsing() {
+        for (int i = 0; i < parseTestData.length; i += 2) {
+            String pattern = parseTestData[i];
+            String expected = parseTestData[i + 1];
+
+            logln("pattern[" + i + "] " + pattern);
+            try {
+                PluralRules rules = PluralRules.createRules(pattern);
+                String[] targets = getTargetStrings(expected);
+                checkTargets(rules, targets);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new RuntimeException(e.getMessage());
+            }
+        }
+    }
+
+    private static String[][] equalityTestData = {
+        { "a: n in 2..3", 
+            "a: n is 2 or n is 3", 
+            "a:n is 3 and n in 2..5 or n is 2" },
+        { "a: n is 12; b:n mod 10 in 2..3",
+          "b: n mod 10 in 2..3 and n is not 12; a: n in 12..12",
+          "b: n is 13; a: n in 12..13; b: n mod 10 is 2 or n mod 10 is 3" },
+    };
+
+    private void compareEquality(Object[] objects) {
+        for (int i = 0; i < objects.length; ++i) {
+            Object lhs = objects[i];
+            for (int j = i; j < objects.length; ++j) {
+                Object rhs = objects[j];
+                assertEquals("obj " + i + " and " + j, lhs, rhs);
+            }
+        }
+    }
+
+    public void testEquality() {
+        for (int i = 0; i < equalityTestData.length; ++i) {
+            String[] patterns = equalityTestData[i];
+            PluralRules[] rules = new PluralRules[patterns.length];
+            for (int j = 0; j < patterns.length; ++j) {
+                rules[j] = PluralRules.createRules(patterns[j]);
+            }
+            compareEquality(rules);
+        }
+    }
+
+    public void testBuiltInRules() {
+        // spot check
+        PluralRules rules = PluralRules.forLocale(ULocale.US);
+        assertEquals("us 0", PluralRules.KEYWORD_OTHER, rules.select(0));
+        assertEquals("us 1", PluralRules.KEYWORD_ONE, rules.select(1));
+        assertEquals("us 2", PluralRules.KEYWORD_OTHER, rules.select(2));
+
+        rules = PluralRules.forLocale(ULocale.JAPAN);
+        assertEquals("ja 0", PluralRules.KEYWORD_OTHER, rules.select(0));
+        assertEquals("ja 1", PluralRules.KEYWORD_OTHER, rules.select(1));
+        assertEquals("ja 2", PluralRules.KEYWORD_OTHER, rules.select(2));
+
+        rules = PluralRules.forLocale(ULocale.createCanonical("ru"));
+        assertEquals("ru 0", PluralRules.KEYWORD_MANY, rules.select(0));
+        assertEquals("ru 1", PluralRules.KEYWORD_ONE, rules.select(1));
+        assertEquals("ru 2", PluralRules.KEYWORD_FEW, rules.select(2));
+    }
+
+    public void testFunctionalEquivalent() {
+        // spot check
+        ULocale unknown = ULocale.createCanonical("zz_ZZ");
+        ULocale un_equiv = PluralRules.getFunctionalEquivalent(unknown, null);
+        assertEquals("unknown locales have root", ULocale.ROOT, un_equiv);
+
+        ULocale jp_equiv = PluralRules.getFunctionalEquivalent(ULocale.JAPAN, null);
+        ULocale cn_equiv = PluralRules.getFunctionalEquivalent(ULocale.CHINA, null);
+        assertEquals("japan and china equivalent locales", jp_equiv, cn_equiv);
+
+        boolean[] available = new boolean[1];
+        ULocale russia = ULocale.createCanonical("ru_RU");
+        ULocale ru_ru_equiv = PluralRules.getFunctionalEquivalent(russia, available);
+        assertFalse("ru_RU not listed", available[0]);
+
+        ULocale russian = ULocale.createCanonical("ru");
+        ULocale ru_equiv = PluralRules.getFunctionalEquivalent(russian, available);
+        assertTrue("ru listed", available[0]);
+        assertEquals("ru and ru_RU equivalent locales", ru_ru_equiv, ru_equiv);
+    }
+
+    public void testAvailableULocales() {
+        ULocale[] locales = PluralRules.getAvailableULocales();
+        Set localeSet = new HashSet();
+        localeSet.addAll(Arrays.asList(locales));
+
+        assertEquals("locales are unique in list", locales.length, localeSet.size());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/RBNFParseTest.java b/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
new file mode 100644
index 0000000..3b739e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
@@ -0,0 +1,157 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.util.Locale;
+
+public class RBNFParseTest extends TestFmwk {
+    public static void main(String[] args) {
+    new RBNFParseTest().run(args);
+    }
+
+  public void TestParse() {
+
+    // these rules make no sense but behave rationally
+    String[] okrules = {
+      "random text",
+      "%foo:bar",
+      "%foo: bar",
+      "0:",
+      "0::",
+      "%%foo:;",
+      "-",
+      "-1",
+      "-:",
+      ".",
+      ".1",
+      "[",
+      "]",
+      "[]",
+      "[foo]",
+      "[[]",
+      "[]]",
+      "[[]]",
+      "[][]",
+      "<",
+      ">",
+      "=",
+      "==",
+      "===",
+      "=foo=",
+    };
+
+    String[] exceptrules = {
+      "",
+      ";",
+      ";;",
+      ":",
+      "::",
+      ":1",
+      ":;",
+      ":;:;",
+      "<<",
+      "<<<",
+      "10:;9:;",
+      ">>",
+      ">>>",
+      "10:", // formatting any value with a one's digit will fail
+      "11: << x", // formating a multiple of 10 causes rollback rule to fail
+      "%%foo: 0 foo; 10: =%%bar=; %%bar: 0: bar; 10: =%%foo=;",
+    };
+
+    String[][] allrules = {
+      okrules,
+      exceptrules,
+    };
+
+    for (int j = 0; j < allrules.length; ++j) {
+      String[] tests = allrules[j];
+      boolean except = tests == exceptrules;
+      for (int i = 0; i < tests.length; ++i) {
+    logln("----------");
+    logln("rules: '" + tests[i] + "'");
+    boolean caughtException = false;
+    try {
+      RuleBasedNumberFormat fmt = new RuleBasedNumberFormat(tests[i], Locale.US);
+      logln("1.23: " + fmt.format(20));
+      logln("-123: " + fmt.format(-123));
+      logln(".123: " + fmt.format(.123));
+      logln(" 123: " + fmt.format(123));
+    }
+    catch (Exception e) {
+      if (!except) {
+        errln("Unexpected exception: " + e.getMessage());
+      } else {
+        caughtException = true;
+      }
+    }
+    if (except && !caughtException) {
+      errln("expected exception but didn't get one!");
+    }
+      }
+    }
+  }
+  
+  private void parseFormat(RuleBasedNumberFormat rbnf, String s, String target) {
+      try {
+          Number n = rbnf.parse(s);
+          String t = rbnf.format(n);
+          assertEquals(rbnf.getLocale(ULocale.ACTUAL_LOCALE) + ": " + s + " : " + n, target, t);
+      } catch (java.text.ParseException e){
+          fail("exception:" + e);
+      }
+  }
+  
+  private void parseList(RuleBasedNumberFormat rbnf_en, RuleBasedNumberFormat rbnf_fr, String[][] lists) {
+      for (int i = 0; i < lists.length; ++i) {
+          String[] list = lists[i];
+          String s = list[0];
+          String target_en = list[1];
+          String target_fr = list[2];
+          
+          parseFormat(rbnf_en, s, target_en);
+          parseFormat(rbnf_fr, s, target_fr);
+      }
+  }
+
+  public void TestLenientParse() throws Exception {
+      RuleBasedNumberFormat rbnf_en, rbnf_fr;
+
+      rbnf_en = new RuleBasedNumberFormat(Locale.ENGLISH, RuleBasedNumberFormat.SPELLOUT);
+      rbnf_en.setLenientParseMode(true);
+      rbnf_fr = new RuleBasedNumberFormat(Locale.FRENCH, RuleBasedNumberFormat.SPELLOUT);
+      rbnf_fr.setLenientParseMode(true);
+
+      Number n = rbnf_en.parse("1,2 million");
+      logln(n.toString());
+      
+      String[][] lists = {
+          { "1,2", "twelve", "un virgule deux" },
+          { "1,2 million", "twelve million", "un virgule deux" },
+          { "1,2 millions", "twelve million", "un million deux cents mille" },
+          { "1.2", "one point two", "douze" },
+          { "1.2 million", "one million two hundred thousand", "douze" },
+          { "1.2 millions", "one million two hundred thousand", "douze millions" },
+      };
+
+      Locale.setDefault(Locale.FRANCE);
+      logln("Default locale:" + Locale.getDefault());
+      logln("rbnf_en:" + rbnf_en.getDefaultRuleSetName());
+      logln("rbnf_fr:" + rbnf_en.getDefaultRuleSetName());
+      parseList(rbnf_en, rbnf_fr, lists);
+      
+      Locale.setDefault(Locale.US);
+      logln("Default locale:" + Locale.getDefault());
+      logln("rbnf_en:" + rbnf_en.getDefaultRuleSetName());
+      logln("rbnf_fr:" + rbnf_en.getDefaultRuleSetName());
+      parseList(rbnf_en, rbnf_fr, lists);
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java b/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
new file mode 100644
index 0000000..0197f6b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
@@ -0,0 +1,207 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.util.Locale;
+
+public class RbnfRoundTripTest extends TestFmwk {
+    public static void main(String[] args) {
+        RbnfRoundTripTest test = new RbnfRoundTripTest();
+
+        try {
+            test.run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                            + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the English spellout rules
+     */
+    public void TestEnglishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the duration-formatting rules
+     */
+    public void TestDurationsRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.DURATION);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Spanish spellout rules
+     */
+    public void TestSpanishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("es", "es",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the French spellout rules
+     */
+    public void TestFrenchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.FRANCE,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Swiss French spellout rules
+     */
+    public void TestSwissFrenchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("fr", "CH",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Italian spellout rules
+     */
+    public void TestItalianSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.ITALIAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -999999, 999999);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the German spellout rules
+     */
+    public void TestGermanSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.GERMANY,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Swedish spellout rules
+     */
+    public void TestSwedishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("sv", "SE",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Dutch spellout rules
+     */
+    public void TestDutchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("nl", "NL",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Japanese spellout rules
+     */
+    public void TestJapaneseSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.JAPAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Russian spellout rules
+     */
+    public void TestRussianSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("ru", "RU",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Greek spellout rules
+     */
+    public void TestGreekSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("el", "GR",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    void doTest(RuleBasedNumberFormat formatter,  long lowLimit,
+                    long highLimit) {
+        try {
+            long count = 0;
+            long increment = 1;
+            for (long i = lowLimit; i <= highLimit; i += increment) {
+                if (count % 1000 == 0)
+                    logln(Long.toString(i));
+
+                if (Math.abs(i) < 5000)
+                    increment = 1;
+                else if (Math.abs(i) < 500000)
+                    increment = 2737;
+                else
+                    increment = 267437;
+
+                String text = formatter.format(i);
+                long rt = formatter.parse(text).longValue();
+
+                if (rt != i) {
+                    errln("Round-trip failed: " + i + " -> " + text +
+                                    " -> " + rt);
+                }
+
+                ++count;
+            }
+
+            if (lowLimit < 0) {
+                double d = 1.234;
+                while (d < 1000) {
+                    String text = formatter.format(d);
+                    double rt = formatter.parse(text).doubleValue();
+
+                    if (rt != d) {
+                        errln("Round-trip failed: " + d + " -> " + text +
+                                        " -> " + rt);
+                    }
+                    d *= 10;
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/RbnfTest.java b/src/com/ibm/icu/dev/test/format/RbnfTest.java
new file mode 100644
index 0000000..03a8e22
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/RbnfTest.java
@@ -0,0 +1,1053 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.ULocale;
+
+import java.math.BigInteger;
+import java.util.Locale;
+import java.util.Random;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+
+public class RbnfTest extends TestFmwk {
+    public static void main(String[] args) {
+        RbnfTest test = new RbnfTest();
+
+        try {
+            test.run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                               + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    static String fracRules = 
+        "%main:\n" +
+        // this rule formats the number if it's 1 or more.  It formats
+        // the integral part using a DecimalFormat ("#,##0" puts
+        // thousands separators in the right places) and the fractional
+        // part using %%frac.  If there is no fractional part, it
+        // just shows the integral part.
+        "    x.0: <#,##0<[ >%%frac>];\n" +
+        // this rule formats the number if it's between 0 and 1.  It
+        // shows only the fractional part (0.5 shows up as "1/2," not
+        // "0 1/2")
+        "    0.x: >%%frac>;\n" +
+        // the fraction rule set.  This works the same way as the one in the
+        // preceding example: We multiply the fractional part of the number
+        // being formatted by each rule's base value and use the rule that
+        // produces the result closest to 0 (or the first rule that produces 0).
+        // Since we only provide rules for the numbers from 2 to 10, we know
+        // we'll get a fraction with a denominator between 2 and 10.
+        // "<0<" causes the numerator of the fraction to be formatted
+        // using numerals
+        "%%frac:\n" +
+        "    2: 1/2;\n" +
+        "    3: <0</3;\n" +
+        "    4: <0</4;\n" +
+        "    5: <0</5;\n" +
+        "    6: <0</6;\n" +
+        "    7: <0</7;\n" +
+        "    8: <0</8;\n" +
+        "    9: <0</9;\n" +
+        "   10: <0</10;\n";
+
+    static {
+        // mondo hack
+    char[] fracRulesArr = fracRules.toCharArray();
+        int len = fracRulesArr.length;
+        int change = 2;
+        for (int i = 0; i < len; ++i) {
+            char ch = fracRulesArr[i];
+            if (ch == '\n') {
+                change = 2; // change ok
+            } else if (ch == ':') {
+                change = 1; // change, but once we hit a non-space char, don't change
+            } else if (ch == ' ') {
+                if (change != 0) {
+                    fracRulesArr[i] = (char)0x200e;
+                }
+            } else {
+                if (change == 1) {
+                    change = 0;
+                }
+            }
+        }
+    fracRules = new String(fracRulesArr);
+    }
+
+    static final String durationInSecondsRules =
+        // main rule set for formatting with words
+        "%with-words:\n"
+        // take care of singular and plural forms of "second"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+        // use %%min to format values greater than 60 seconds
+        + "    60/60: <%%min<[, >>];\n"
+        // use %%hr to format values greater than 3,600 seconds
+        // (the ">>>" below causes us to see the number of minutes
+        // when when there are zero minutes)
+        + "    3600/60: <%%hr<[, >>>];\n"
+        // this rule set takes care of the singular and plural forms
+        // of "minute"
+        + "%%min:\n"
+        + "    0 minutes; 1 minute; =0= minutes;\n"
+        // this rule set takes care of the singular and plural forms
+        // of "hour"
+        + "%%hr:\n"
+        + "    0 hours; 1 hour; =0= hours;\n"
+
+        // main rule set for formatting in numerals
+        + "%in-numerals:\n"
+        // values below 60 seconds are shown with "sec."
+        + "    =0= sec.;\n"
+        // higher values are shown with colons: %%min-sec is used for
+        // values below 3,600 seconds...
+        + "    60: =%%min-sec=;\n"
+        // ...and %%hr-min-sec is used for values of 3,600 seconds
+        // and above
+        + "    3600: =%%hr-min-sec=;\n"
+        // this rule causes values of less than 10 minutes to show without
+        // a leading zero
+        + "%%min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <0<>>;\n"
+        // this rule set is used for values of 3,600 or more.  Minutes are always
+        // shown, and always shown with two digits
+        + "%%hr-min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        + "    3600/60: <#,##0<:>>>;\n"
+        // the lenient-parse rules allow several different characters to be used
+        // as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    public void TestCoverage() {
+        // extra calls to boost coverage numbers
+        RuleBasedNumberFormat fmt0 = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
+        RuleBasedNumberFormat fmt1 = (RuleBasedNumberFormat)fmt0.clone();
+        RuleBasedNumberFormat fmt2 = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
+        if (!fmt0.equals(fmt0)) {
+            errln("self equality fails");
+        }
+        if (!fmt0.equals(fmt1)) {
+            errln("clone equality fails");
+        }
+        if (!fmt0.equals(fmt2)) {
+            errln("duplicate equality fails");
+        }
+        String str = fmt0.toString();
+        logln(str);
+
+        RuleBasedNumberFormat fmt3 =  new RuleBasedNumberFormat(durationInSecondsRules);
+
+        if (fmt0.equals(fmt3)) {
+            errln("nonequal fails");
+        }
+        if (!fmt3.equals(fmt3)) {
+            errln("self equal 2 fails");
+        }
+        str = fmt3.toString();
+        logln(str);
+
+        String[] names = fmt3.getRuleSetNames();
+
+        try {
+            fmt3.setDefaultRuleSet(null);
+            fmt3.setDefaultRuleSet("%%foo");
+            errln("sdrf %%foo didn't fail");
+        }
+        catch (Exception e) {
+            logln("Got the expected exception");
+        }
+
+        try {
+            fmt3.setDefaultRuleSet("%bogus");
+            errln("sdrf %bogus didn't fail");
+        }
+        catch (Exception e) {
+            logln("Got the expected exception");
+        }
+
+        try {
+            str = fmt3.format(2.3, names[0]);
+            logln(str);
+            str = fmt3.format(2.3, "%%foo");
+            errln("format double %%foo didn't fail");
+        }
+        catch (Exception e) {
+            logln("Got the expected exception");
+        }
+
+        try {
+            str = fmt3.format(123L, names[0]);
+            logln(str);
+            str = fmt3.format(123L, "%%foo");
+            errln("format double %%foo didn't fail");
+        }
+        catch (Exception e) {
+            logln("Got the expected exception");
+        }
+
+        RuleBasedNumberFormat fmt4 = new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+        RuleBasedNumberFormat fmt5 = new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+        str = fmt4.toString();
+        logln(str);
+        if (!fmt4.equals(fmt5)) {
+            errln("duplicate 2 equality failed");
+        }
+        str = fmt4.format(123L);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+
+        str = fmt4.format(.000123);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+
+        str = fmt4.format(456.000123);
+        logln(str);
+        try {
+            Number num = fmt4.parse(str);
+            logln(num.toString());
+        }
+        catch (Exception e) {
+            errln("parse caught exception");
+        }
+    }
+
+    public void TestUndefinedSpellout() {
+        Locale greek = new Locale("el", "", "");
+        RuleBasedNumberFormat[] formatters = {
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.SPELLOUT),
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.ORDINAL),
+            new RuleBasedNumberFormat(greek, RuleBasedNumberFormat.DURATION),
+        };
+
+        String[] data = {
+            "0",
+            "1",
+            "15",
+            "20",
+            "23",
+            "73",
+            "88",
+            "100",
+            "106",
+            "127",
+            "200",
+            "579",
+            "1,000",
+            "2,000",
+            "3,004",
+            "4,567",
+            "15,943",
+            "105,000",
+            "2,345,678",
+            "-36",
+            "-36.91215",
+            "234.56789"
+        };
+
+        NumberFormat decFormat = NumberFormat.getInstance(Locale.US);
+        for (int j = 0; j < formatters.length; ++j) {
+            com.ibm.icu.text.NumberFormat formatter = formatters[j];
+            logln("formatter[" + j + "]");
+            for (int i = 0; i < data.length; ++i) {
+                try {
+                    String result = formatter.format(decFormat.parse(data[i]));
+                    logln("[" + i + "] " + data[i] + " ==> " + result);
+                }
+                catch (Exception e) {
+                    errln("formatter[" + j + "], data[" + i + "] " + data[i] + " threw exception " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    /**
+     * Perform a simple spot check on the English spellout rules
+     */
+    public void TestEnglishSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "one" },
+            { "15", "fifteen" },
+            { "20", "twenty" },
+            { "23", "twenty-three" },
+            { "73", "seventy-three" },
+            { "88", "eighty-eight" },
+            { "100", "one hundred" },
+            { "106", "one hundred six" },
+            { "127", "one hundred twenty-seven" },
+            { "200", "two hundred" },
+            { "579", "five hundred seventy-nine" },
+            { "1,000", "one thousand" },
+            { "2,000", "two thousand" },
+            { "3,004", "three thousand four" },
+            { "4,567", "four thousand five hundred sixty-seven" },
+            { "15,943", "fifteen thousand nine hundred forty-three" },
+            { "2,345,678", "two million three hundred forty-five "
+              + "thousand six hundred seventy-eight" },
+            { "-36", "minus thirty-six" },
+            { "234.567", "two hundred thirty-four point five six seven" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "FOurhundred     thiRTY six", "436" },
+            // test spaces before fifty-7 causing lenient parse match of "fifty-" to " fifty"
+            // leaving "-7" for remaining parse, resulting in 2643 as the parse result.
+            { "fifty-7", "57" },
+            { " fifty-7", "57" },
+            { "  fifty-7", "57" },
+            { "2 thousand six HUNDRED   fifty-7", "2,657" },
+            { "fifteen hundred and zero", "1,500" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the English ordinal-abbreviation rules
+     */
+    public void TestOrdinalAbbreviations() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.ORDINAL);
+        String[][] testData = {
+            { "1", "1st" },
+            { "2", "2nd" },
+            { "3", "3rd" },
+            { "4", "4th" },
+            { "7", "7th" },
+            { "10", "10th" },
+            { "11", "11th" },
+            { "13", "13th" },
+            { "20", "20th" },
+            { "21", "21st" },
+            { "22", "22nd" },
+            { "23", "23rd" },
+            { "24", "24th" },
+            { "33", "33rd" },
+            { "102", "102nd" },
+            { "312", "312th" },
+            { "12,345", "12,345th" }
+        };
+
+        doTest(formatter, testData, false);
+    }
+
+    /**
+     * Perform a simple spot check on the duration-formatting rules
+     */
+    public void TestDurations() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.DURATION);
+        String[][] testData = {
+            { "3,600", "1:00:00" },             //move me and I fail
+            { "0", "0 sec." },
+            { "1", "1 sec." },
+            { "24", "24 sec." },
+            { "60", "1:00" },
+            { "73", "1:13" },
+            { "145", "2:25" },
+            { "666", "11:06" },
+            //            { "3,600", "1:00:00" },
+            { "3,740", "1:02:20" },
+            { "10,293", "2:51:33" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "2-51-33", "10,293" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Spanish spellout rules
+     */
+    public void TestSpanishSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("es", "es",
+                                                   ""), RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "uno" },
+            { "6", "seis" },
+            { "16", "diecis\u00e9is" },
+            { "20", "veinte" },
+            { "24", "veinticuatro" },
+            { "26", "veintis\u00e9is" },
+            { "73", "setenta y tres" },
+            { "88", "ochenta y ocho" },
+            { "100", "cien" },
+            { "106", "ciento seis" },
+            { "127", "ciento veintisiete" },
+            { "200", "doscientos" },
+            { "579", "quinientos setenta y nueve" },
+            { "1,000", "mil" },
+            { "2,000", "dos mil" },
+            { "3,004", "tres mil cuatro" },
+            { "4,567", "cuatro mil quinientos sesenta y siete" },
+            { "15,943", "quince mil novecientos cuarenta y tres" },
+            { "2,345,678", "dos millones trescientos cuarenta y cinco mil "
+              + "seiscientos setenta y ocho"},
+            { "-36", "menos treinta y seis" },
+            { "234.567", "doscientos treinta y cuatro coma cinco seis siete" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the French spellout rules
+     */
+    public void TestFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.FRANCE,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "un" },
+            { "15", "quinze" },
+            { "20", "vingt" },
+            { "21", "vingt et un" },
+            { "23", "vingt-trois" },
+            { "62", "soixante-deux" },
+            { "70", "soixante-dix" },
+            { "71", "soixante et onze" },
+            { "73", "soixante-treize" },
+            { "80", "quatre-vingts" },
+            { "88", "quatre-vingt-huit" },
+            { "100", "cent" },
+            { "106", "cent six" },
+            { "127", "cent vingt-sept" },
+            { "200", "deux cents" },
+            { "579", "cinq cent soixante-dix-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "mille cent vingt-trois" },
+            { "1,594", "mille cinq cent quatre-vingt-quatorze" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cent soixante-sept" },
+            { "15,943", "quinze mille neuf cent quarante-trois" },
+            { "2,345,678", "deux millions trois cent quarante-cinq mille "
+              + "six cent soixante-dix-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cent trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "trente-et-un", "31" },
+            { "un cent quatre vingt dix huit", "198" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Swiss French spellout rules
+     */
+    public void TestSwissFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("fr", "CH",
+                                                   ""), RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "un" },
+            { "15", "quinze" },
+            { "20", "vingt" },
+            { "21", "vingt et un" },
+            { "23", "vingt-trois" },
+            { "62", "soixante-deux" },
+            { "70", "septante" },
+            { "71", "septante et un" },
+            { "73", "septante-trois" },
+            { "80", "huitante" },
+            { "88", "huitante-huit" },
+            { "100", "cent" },
+            { "106", "cent six" },
+            { "127", "cent vingt-sept" },
+            { "200", "deux cents" },
+            { "579", "cinq cent septante-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "mille cent vingt-trois" },
+            { "1,594", "mille cinq cent nonante-quatre" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cent soixante-sept" },
+            { "15,943", "quinze mille neuf cent quarante-trois" },
+            { "2,345,678", "deux millions trois cent quarante-cinq mille "
+              + "six cent septante-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cent trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the Italian spellout rules
+     */
+    public void TestItalianSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.ITALIAN,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "uno" },
+            { "15", "quindici" },
+            { "20", "venti" },
+            { "23", "ventitr\u00E9" },
+            { "73", "settantatr\u00E9" },
+            { "88", "ottantotto" },
+            { "100", "cento" },
+            { "106", "centosei" },
+            { "108", "centotto" },
+            { "127", "centoventisette" },
+            { "181", "centottantuno" },
+            { "200", "duecento" },
+            { "579", "cinquecentosettantanove" },
+            { "1,000", "mille" },
+            { "2,000", "duemila" },
+            { "3,004", "tremilaquattro" },
+            { "4,567", "quattromilacinquecentosessantasette" },
+            { "15,943", "quindicimilanovecentoquarantatr\u00E9" },
+            { "-36", "meno trentasei" },
+            { "234.567", "duecentotrentaquattro virgola cinque sei sette" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the German spellout rules
+     */
+    public void TestGermanSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.GERMANY,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "eins" },
+            { "15", "f\u00fcnfzehn" },
+            { "20", "zwanzig" },
+            { "23", "dreiundzwanzig" },
+            { "73", "dreiundsiebzig" },
+            { "88", "achtundachtzig" },
+            { "100", "hundert" },
+            { "106", "hundertsechs" },
+            { "127", "hundertsiebenundzwanzig" },
+            { "200", "zweihundert" },
+            { "579", "f\u00fcnfhundertneunundsiebzig" },
+            { "1,000", "tausend" },
+            { "2,000", "zweitausend" },
+            { "3,004", "dreitausendvier" },
+            { "4,567", "viertausendf\u00fcnfhundertsiebenundsechzig" },
+            { "15,943", "f\u00fcnfzehntausendneunhundertdreiundvierzig" },
+            { "2,345,678", "zwei Millionen dreihundertf\u00fcnfundvierzigtausend"
+              + "sechshundertachtundsiebzig" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Thai spellout rules
+     */
+    public void TestThaiSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(new Locale("th", "TH", ""),
+                                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "0", "\u0e28\u0e39\u0e19\u0e22\u0e4c" },
+            { "1", "\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "10", "\u0e2a\u0e34\u0e1a" },
+            { "11", "\u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14" },
+            { "21", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14" },
+            { "101", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "1.234", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e38\u0e14\u0e2a\u0e2d\u0e07\u0e2a\u0e32\u0e21\u0e2a\u0e35\u0e48" },
+            { "21.45", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "22.45", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e2a\u0e2d\u0e07\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "23.45", "\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e2a\u0e32\u0e21\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "123.45", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e2a\u0e32\u0e21\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "12,345.678", "\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E2B\u0E21\u0E37\u0E48\u0E19\u0E2A\u0E2D\u0E07\u0E1E\u0E31\u0E19\u0E2A\u0E32\u0E21\u0E23\u0E49\u0E2D\u0E22\u0E2A\u0E35\u0E48\u0E2A\u0E34\u0E1A\u0E2B\u0E49\u0E32\u0E08\u0E38\u0E14\u0E2B\u0E01\u0E40\u0E08\u0E47\u0E14\u0E41\u0E1B\u0E14" },
+        };
+
+        doTest(formatter, testData, true);
+
+        /*
+          formatter.setLenientParseMode(true);
+          String[][] lpTestData = {
+          { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" }
+          };
+          doLenientParseTest(formatter, lpTestData);
+        */
+    }
+
+    public void TestFractionalRuleSet() {
+
+
+        RuleBasedNumberFormat formatter =
+            new RuleBasedNumberFormat(fracRules, Locale.ENGLISH);
+
+        String[][] testData = {
+            { "0", "0" },
+            { "1", "1" },
+            { "10", "10" },
+            { ".1", "1/10" },
+            { ".11", "1/9" },
+            { ".125", "1/8" },
+            { ".1428", "1/7" },
+            { ".1667", "1/6" },
+            { ".2", "1/5" },
+            { ".25", "1/4" },
+            { ".333", "1/3" },
+            { ".5", "1/2" },
+            { "1.1", "1 1/10" },
+            { "2.11", "2 1/9" },
+            { "3.125", "3 1/8" },
+            { "4.1428", "4 1/7" },
+            { "5.1667", "5 1/6" },
+            { "6.2", "6 1/5" },
+            { "7.25", "7 1/4" },
+            { "8.333", "8 1/3" },
+            { "9.5", "9 1/2" },
+            { ".2222", "2/9" },
+            { ".4444", "4/9" },
+            { ".5555", "5/9" },
+            { "1.2856", "1 2/7" }
+        };
+        doTest(formatter, testData, false); // exact values aren't parsable from fractions
+    }
+
+    public void TestSwedishSpellout()
+    {
+        Locale locale = new Locale("sv", "", "");
+        RuleBasedNumberFormat formatter = new RuleBasedNumberFormat(locale, RuleBasedNumberFormat.SPELLOUT);
+
+        String[][] testDataDefault = {
+            { "101", "etthundraett" },
+            { "123", "etthundratjugotre" },
+            { "1,001", "ettusenett" },
+            { "1,100", "ettusenetthundra" },
+            { "1,101", "ettusenetthundraett" },
+            { "1,234", "ettusentv\u00e5hundratrettiofyra" },
+            { "10,001", "tiotusenett" },
+            { "11,000", "elvatusen" },
+            { "12,000", "tolvtusen" },
+            { "20,000", "tjugotusen" },
+            { "21,000", "tjugoetttusen" },
+            { "21,001", "tjugoetttusenett" },
+            { "200,000", "tv\u00e5hundratusen" },
+            { "201,000", "tv\u00e5hundraetttusen" },
+            { "200,200", "tv\u00e5hundratusentv\u00e5hundra" },
+            { "2,002,000", "tv\u00e5 miljoner tv\u00e5tusen" },
+            { "12,345,678", "tolv miljoner trehundrafyrtiofemtusensexhundrasjuttio\u00e5tta" },
+            { "123,456.789", "etthundratjugotretusenfyrahundrafemtiosex komma sju \u00e5tta nio" },
+            { "-12,345.678", "minus tolvtusentrehundrafyrtiofem komma sex sju \u00e5tta" }
+        };
+
+        logln("testing default rules");
+        doTest(formatter, testDataDefault, true);
+
+//      Neutrum rules not supported in CLDR
+//      String[][] testDataNeutrum = {
+//          { "101", "etthundra\u00adett" },
+//          { "1,001", "ettusen ett" },
+//          { "1,101", "ettusen etthundra\u00adett" },
+//          { "10,001", "tio\u00adtusen ett" },
+//          { "21,001", "tjugoen\u00adtusen ett" }
+//      };
+
+//      formatter.setDefaultRuleSet("%neutrum");
+//      logln("testing neutrum rules");
+//      doTest(formatter, testDataNeutrum, true);
+
+        String[][] testDataYear = {
+            { "101", "etthundraett" },
+            { "900", "niohundra" },
+            { "1,001", "tusenett" },
+            { "1,100", "elvahundra" },
+            { "1,101", "elvahundraett" },
+            { "1,234", "tolvhundratrettiofyra" },
+            { "2,001", "tjugohundraett" },
+            { "10,001", "tiotusenett" }
+        };
+
+        formatter.setDefaultRuleSet("%year");
+        logln("testing year rules");
+        doTest(formatter, testDataYear, true);
+    }
+
+    public void TestBigNumbers() {
+        BigInteger bigI = new BigInteger("1234567890", 10);
+        StringBuffer buf = new StringBuffer();
+        RuleBasedNumberFormat fmt = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
+        fmt.format(bigI, buf, null);
+        logln("big int: " + buf.toString());
+
+//#if defined(FOUNDATION10)
+//#else
+        buf.setLength(0);
+        java.math.BigDecimal bigD = new java.math.BigDecimal(bigI);
+        fmt.format(bigD, buf, null);
+        logln("big dec: " + buf.toString());
+//#endif
+    }
+
+  public void TestTrailingSemicolon() {
+    String thaiRules = 
+        "%default:\n" +
+        "  -x: \u0e25\u0e1a>>;\n" +
+        "  x.x: <<\u0e08\u0e38\u0e14>>>;\n" +
+        "  \u0e28\u0e39\u0e19\u0e22\u0e4c; \u0e2b\u0e19\u0e36\u0e48\u0e07; \u0e2a\u0e2d\u0e07; \u0e2a\u0e32\u0e21;\n" +
+        "  \u0e2a\u0e35\u0e48; \u0e2b\u0e49\u0e32; \u0e2b\u0e01; \u0e40\u0e08\u0e47\u0e14; \u0e41\u0e1b\u0e14;\n" +
+        "  \u0e40\u0e01\u0e49\u0e32; \u0e2a\u0e34\u0e1a; \u0e2a\u0e34\u0e1a\u0e40\u0e2d\u0e47\u0e14;\n" +
+        "  \u0e2a\u0e34\u0e1a\u0e2a\u0e2d\u0e07; \u0e2a\u0e34\u0e1a\u0e2a\u0e32\u0e21;\n" +
+        "  \u0e2a\u0e34\u0e1a\u0e2a\u0e35\u0e48; \u0e2a\u0e34\u0e1a\u0e2b\u0e49\u0e32;\n" +
+        "  \u0e2a\u0e34\u0e1a\u0e2b\u0e01; \u0e2a\u0e34\u0e1a\u0e40\u0e08\u0e47\u0e14;\n" +
+        "  \u0e2a\u0e34\u0e1a\u0e41\u0e1b\u0e14; \u0e2a\u0e34\u0e1a\u0e40\u0e01\u0e49\u0e32;\n" +
+        "  20: \u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  30: \u0e2a\u0e32\u0e21\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  40: \u0e2a\u0e35\u0e48\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  50: \u0e2b\u0e49\u0e32\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  60: \u0e2b\u0e01\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  70: \u0e40\u0e08\u0e47\u0e14\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  80: \u0e41\u0e1b\u0e14\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  90: \u0e40\u0e01\u0e49\u0e32\u0e2a\u0e34\u0e1a[>%%alt-ones>];\n" +
+        "  100: <<\u0e23\u0e49\u0e2d\u0e22[>>];\n" +
+        "  1000: <<\u0e1e\u0e31\u0e19[>>];\n" +
+        "  10000: <<\u0e2b\u0e21\u0e37\u0e48\u0e19[>>];\n" +
+        "  100000: <<\u0e41\u0e2a\u0e19[>>];\n" +
+        "  1,000,000: <<\u0e25\u0e49\u0e32\u0e19[>>];\n" +
+        "  1,000,000,000: <<\u0e1e\u0e31\u0e19\u0e25\u0e49\u0e32\u0e19[>>];\n" +
+        "  1,000,000,000,000: <<\u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19[>>];\n" +
+        "  1,000,000,000,000,000: =#,##0=;\n" +
+        "%%alt-ones:\n" +
+        "  \u0e28\u0e39\u0e19\u0e22\u0e4c;\n" +
+        "  \u0e40\u0e2d\u0e47\u0e14;\n" +
+        "  =%default=;\n ; ;; ";
+
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(thaiRules, new Locale("th", "TH", ""));
+
+        String[][] testData = {
+            { "0", "\u0e28\u0e39\u0e19\u0e22\u0e4c" },
+            { "1", "\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "123.45", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e23\u0e49\u0e2d\u0e22\u0e22\u0e35\u0e48\u0e2a\u0e34\u0e1a\u0e2a\u0e32\u0e21\u0e08\u0e38\u0e14\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" }
+        };
+        
+        doTest(formatter, testData, true);
+    }
+
+    public void TestSmallValues() {
+    String[][] testData = {
+        { "0.001", "zero point zero zero one" },
+        { "0.0001", "zero point zero zero zero one" },
+        { "0.00001", "zero point zero zero zero zero one" },
+        { "0.000001", "zero point zero zero zero zero zero one" },
+        { "0.0000001", "zero point zero zero zero zero zero zero one" },
+        { "0.00000001", "zero point zero zero zero zero zero zero zero one" },
+        { "0.000000001", "zero point zero zero zero zero zero zero zero zero one" },
+        { "0.0000000001", "zero point zero zero zero zero zero zero zero zero zero one" },
+        { "0.00000000001", "zero point zero zero zero zero zero zero zero zero zero zero one" },
+        { "0.000000000001", "zero point zero zero zero zero zero zero zero zero zero zero zero one" },
+        { "0.0000000000001", "zero point zero zero zero zero zero zero zero zero zero zero zero zero one" },
+        { "0.00000000000001", "zero point zero zero zero zero zero zero zero zero zero zero zero zero zero one" },
+        { "0.000000000000001", "zero point zero zero zero zero zero zero zero zero zero zero zero zero zero zero one" },
+        { "10,000,000.001", "ten million point zero zero one" },
+        { "10,000,000.0001", "ten million point zero zero zero one" },
+        { "10,000,000.00001", "ten million point zero zero zero zero one" },
+        { "10,000,000.000001", "ten million point zero zero zero zero zero one" },
+        { "10,000,000.0000001", "ten million point zero zero zero zero zero zero one" },
+        { "10,000,000.00000001", "ten million point zero zero zero zero zero zero zero one" },
+        { "10,000,000.000000002", "ten million point zero zero zero zero zero zero zero zero two" },
+        { "10,000,000", "ten million" },
+        { "1,234,567,890.0987654", "one billion two hundred thirty-four million five hundred sixty-seven thousand eight hundred ninety point zero nine eight seven six five four" },
+        { "123,456,789.9876543", "one hundred twenty-three million four hundred fifty-six thousand seven hundred eighty-nine point nine eight seven six five four three" },
+        { "12,345,678.87654321", "twelve million three hundred forty-five thousand six hundred seventy-eight point eight seven six five four three two one" },
+        { "1,234,567.7654321", "one million two hundred thirty-four thousand five hundred sixty-seven point seven six five four three two one" },
+        { "123,456.654321", "one hundred twenty-three thousand four hundred fifty-six point six five four three two one" },
+        { "12,345.54321", "twelve thousand three hundred forty-five point five four three two one" },
+        { "1,234.4321", "one thousand two hundred thirty-four point four three two one" },
+        { "123.321", "one hundred twenty-three point three two one" },
+        { "0.0000000011754944", "zero point zero zero zero zero zero zero zero zero one one seven five four nine four four" },
+        { "0.000001175494351", "zero point zero zero zero zero zero one one seven five four nine four three five one" },
+    };
+
+    RuleBasedNumberFormat formatter
+        = new RuleBasedNumberFormat(Locale.US, RuleBasedNumberFormat.SPELLOUT);
+    doTest(formatter, testData, true);
+    }
+
+    public void TestRuleSetDisplayName() {
+        ULocale.setDefault(ULocale.US);
+        String[][] localizations = new String[][] {
+            /* public rule sets*/
+            {"%simplified", "%default", "%ordinal"},
+            /* display names in "en_US" locale*/
+            {"en_US", "Simplified", "Default", "Ordinal"},
+            /* display names in "zh_Hans" locale*/
+            {"zh_Hans", "\u7B80\u5316", "\u7F3A\u7701",  "\u5E8F\u5217"},
+            /* display names in a fake locale*/
+            {"foo_Bar_BAZ", "Simplified", "Default", "Ordinal"}
+        };
+        
+        //Construct RuleBasedNumberFormat by rule sets and localizations list
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(ukEnglish, localizations, ULocale.US);
+        RuleBasedNumberFormat f2= new RuleBasedNumberFormat(ukEnglish, localizations);
+        assertTrue("Check the two formatters' equality", formatter.equals(f2));        
+
+        //get displayName by name
+        String[] ruleSetNames = formatter.getRuleSetNames();
+        for (int i=0; i<ruleSetNames.length; i++) {
+            logln("Rule set name: " + ruleSetNames[i]);
+            String RSName_defLoc = formatter.getRuleSetDisplayName(ruleSetNames[i]);
+            assertEquals("Display name in default locale", localizations[1][i+1], RSName_defLoc);
+            String RSName_loc = formatter.getRuleSetDisplayName(ruleSetNames[i], ULocale.CHINA);
+            assertEquals("Display name in Chinese", localizations[2][i+1], RSName_loc);
+        }
+                
+        // getDefaultRuleSetName
+        String defaultRS = formatter.getDefaultRuleSetName();
+        //you know that the default rule set is %simplified according to rule sets string ukEnglish
+        assertEquals("getDefaultRuleSetName", "%simplified", defaultRS);
+        
+        //get locales of localizations
+        ULocale[] locales = formatter.getRuleSetDisplayNameLocales();
+        for (int i=0; i<locales.length; i++) {
+            logln(locales[i].getName());
+        }
+        
+        //get displayNames
+        String[] RSNames_defLoc = formatter.getRuleSetDisplayNames();
+        for (int i=0; i<RSNames_defLoc.length; i++) {
+            assertEquals("getRuleSetDisplayNames in default locale", localizations[1][i+1], RSNames_defLoc[i]);
+        }
+        
+        String[] RSNames_loc = formatter.getRuleSetDisplayNames(ULocale.UK);
+        for (int i=0; i<RSNames_loc.length; i++) {
+            assertEquals("getRuleSetDisplayNames in English", localizations[1][i+1], RSNames_loc[i]);
+        }    
+        
+        RSNames_loc = formatter.getRuleSetDisplayNames(ULocale.CHINA);
+        for (int i=0; i<RSNames_loc.length; i++) {
+            assertEquals("getRuleSetDisplayNames in Chinese", localizations[2][i+1], RSNames_loc[i]);
+        }        
+
+        RSNames_loc = formatter.getRuleSetDisplayNames(new ULocale("foo_Bar_BAZ"));
+        for (int i=0; i<RSNames_loc.length; i++) {
+            assertEquals("getRuleSetDisplayNames in fake locale", localizations[3][i+1], RSNames_loc[i]);
+        }              
+    }
+
+    public void TestAllLocales() {
+        StringBuffer errors = null;
+        ULocale[] locales = ULocale.getAvailableLocales();
+        Random r = createRandom();
+        String[] names = {
+            " (spellout) ",
+            " (ordinal)  ",
+            " (duration) "
+        };
+        for (int i = 0; i < locales.length; ++i) {
+            ULocale loc = locales[i];
+            for (int j = 0; j < 3; ++j) {
+                try {
+                    RuleBasedNumberFormat fmt = new RuleBasedNumberFormat(loc, j+1);
+                    float n = ((int)(r.nextInt(1000) - 300)) / 16f;
+                    String s = fmt.format(n);
+                    if (isVerbose()) {
+                        logln(loc.getName() + names[j] + "success: " + n + " -> " + s);
+                    }
+                }
+                catch (Exception e) {
+                    String msg = loc.getName() + names[j] + "ERROR:" + e.getMessage();
+                    if (isVerbose()) {
+                        logln(msg);
+                    }
+                    if (errors == null) {
+                        errors = new StringBuffer();
+                    }
+                    errors.append("\n" + msg);
+                }
+            }
+        }
+        if (errors != null) {
+            errln(errors.toString());
+        }
+    }
+
+    void doTest(RuleBasedNumberFormat formatter, String[][] testData,
+                boolean testParsing) {
+    //        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
+    NumberFormat decFmt = new DecimalFormat("#,###.################");
+        try {
+            for (int i = 0; i < testData.length; i++) {
+                String number = testData[i][0];
+                String expectedWords = testData[i][1];
+                logln("test[" + i + "] number: " + number + " target: " + expectedWords);
+                Number num = decFmt.parse(number);
+                String actualWords = formatter.format(num);
+
+                if (!actualWords.equals(expectedWords)) {
+                    errln("Spot check format failed: for " + number + ", expected\n    "
+                          + expectedWords + ", but got\n    " +
+                          actualWords);
+                }
+                else if (testParsing) {
+                    String actualNumber = decFmt.format(formatter
+                                                        .parse(actualWords));
+
+                    if (!actualNumber.equals(number)) {
+                        errln("Spot check parse failed: for " + actualWords +
+                              ", expected " + number + ", but got " +
+                              actualNumber);
+                    }
+                }
+            }
+        }
+        catch (Throwable e) {
+            e.printStackTrace();
+            errln("Test failed with exception: " + e.toString());
+        }
+    }
+
+    void doLenientParseTest(RuleBasedNumberFormat formatter,
+                            String[][] testData) {
+        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
+
+        try {
+            for (int i = 0; i < testData.length; i++) {
+                String words = testData[i][0];
+                String expectedNumber = testData[i][1];
+                String actualNumber = decFmt.format(formatter.parse(words));
+
+                if (!actualNumber.equals(expectedNumber)) {
+                    errln("Lenient-parse spot check failed: for "
+                          + words + ", expected " + expectedNumber
+                          + ", but got " + actualNumber);
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Spellout rules for U.K. English.  
+     * I borrow the rule sets for TestRuleSetDisplayName()
+     */
+    public static final String ukEnglish =
+        "%simplified:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%alt-teens:\n"
+        + "    =%simplified=;\n"
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+        + "    10,000: =%simplified=;\n"
+        + "    1,000,000: << million[ >%simplified>];\n"
+        + "    1,000,000,000,000: << billion[ >%simplified>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+        + "%default:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    =%simplified=;\n"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        + "%%commas:\n"
+        + "    ' and =%default=;\n"
+        + "    100: , =%default=;\n"
+        + "    1000: , <%default< thousand, >%default>;\n"
+        + "    1,000,000: , =%default=;"
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/TestAll.java b/src/com/ibm/icu/dev/test/format/TestAll.java
new file mode 100644
index 0000000..b0725a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TestAll.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+                  "TestAll$RBNF",
+                  "TestAll$NumberFormat",
+                  "TestAll$DateFormat",
+                  "TestAll$DateIntervalFormat",
+                  "TestAll$TimeUnitFormat",
+                  "TestAll$MessageFormat",
+                  "TestAll$PluralFormat",
+                  "com.ibm.icu.dev.test.format.BigNumberFormatTest",
+                  "com.ibm.icu.dev.test.format.GlobalizationPreferencesTest",
+                  "DataDrivenFormatTest"
+              },
+              "Formatting Tests");
+    }
+
+    public static class RBNF extends TestGroup {
+        public RBNF() {
+            super(new String[] {
+                "RbnfTest",
+                "RbnfRoundTripTest",
+        "RBNFParseTest",
+            });
+        }
+    }
+
+    public static class NumberFormat extends TestGroup {
+        public NumberFormat() {
+            super(new String[] {
+                "IntlTestNumberFormat",
+                "IntlTestNumberFormatAPI",
+                "NumberFormatTest",
+                "NumberFormatRegistrationTest",
+                "NumberFormatRoundTripTest",
+                "NumberRegression",
+                "NumberFormatRegressionTest",
+                "IntlTestDecimalFormatAPI",
+                "IntlTestDecimalFormatAPIC",
+                "IntlTestDecimalFormatSymbols",
+                "IntlTestDecimalFormatSymbolsC",
+            });
+        }
+    }
+
+    public static class DateFormat extends TestGroup {
+        public DateFormat() {
+            super(new String[] {
+                "DateFormatMiscTests",
+                "DateFormatRegressionTest",
+                "DateFormatRoundTripTest",
+                "DateFormatTest",
+                "IntlTestDateFormat",
+                "IntlTestDateFormatAPI",
+                "IntlTestDateFormatAPIC",
+                "IntlTestDateFormatSymbols",
+                "DateTimeGeneratorTest",
+                "IntlTestSimpleDateFormatAPI",
+                "DateFormatRegressionTestJ",
+                "TimeZoneFormatTest"
+            });
+        }
+    }
+    
+    public static class DateIntervalFormat extends TestGroup {
+        public DateIntervalFormat() {
+            super(new String[] {
+                "DateIntervalFormatTest"
+            });
+        }
+    }
+    
+    public static class TimeUnitFormat extends TestGroup {
+        public TimeUnitFormat() {
+            super(new String[] {
+                "TimeUnitTest"
+            });
+        }
+    }
+    
+    public static class PluralFormat extends TestGroup {
+        public PluralFormat() {
+            super(new String[] {
+                "PluralFormatUnitTest",
+                "PluralFormatTest",
+                "PluralRulesTest",
+            });
+        }
+    }
+
+    public static class MessageFormat extends TestGroup {
+        public MessageFormat() {
+            super(new String[] {
+                "TestMessageFormat",
+                "MessageRegression",
+            });
+        }
+    }
+
+    public static final String CLASS_TARGET_NAME = "Format";
+}
+
diff --git a/src/com/ibm/icu/dev/test/format/TestMessageFormat.java b/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
new file mode 100644
index 0000000..64a0813
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
@@ -0,0 +1,1472 @@
+//##header J2SE15
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 6, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.format;
+
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.ChoiceFormat;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.UFormat;
+import com.ibm.icu.util.ULocale;
+
+public class TestMessageFormat extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TestMessageFormat().run(args);
+    }
+
+    public void TestBug3()
+    {
+        double myNumber = -123456;
+        DecimalFormat form = null;
+        Locale locale[] = {
+            new Locale("ar", "", ""),
+            new Locale("be", "", ""),
+            new Locale("bg", "", ""),
+            new Locale("ca", "", ""),
+            new Locale("cs", "", ""),
+            new Locale("da", "", ""),
+            new Locale("de", "", ""),
+            new Locale("de", "AT", ""),
+            new Locale("de", "CH", ""),
+            new Locale("el", "", ""),       // 10
+            new Locale("en", "CA", ""),
+            new Locale("en", "GB", ""),
+            new Locale("en", "IE", ""),
+            new Locale("en", "US", ""),
+            new Locale("es", "", ""),
+            new Locale("et", "", ""),
+            new Locale("fi", "", ""),
+            new Locale("fr", "", ""),
+            new Locale("fr", "BE", ""),
+            new Locale("fr", "CA", ""),     // 20
+            new Locale("fr", "CH", ""),
+            new Locale("he", "", ""),
+            new Locale("hr", "", ""),
+            new Locale("hu", "", ""),
+            new Locale("is", "", ""),
+            new Locale("it", "", ""),
+            new Locale("it", "CH", ""),
+            new Locale("ja", "", ""),
+            new Locale("ko", "", ""),
+            new Locale("lt", "", ""),       // 30
+            new Locale("lv", "", ""),
+            new Locale("mk", "", ""),
+            new Locale("nl", "", ""),
+            new Locale("nl", "BE", ""),
+            new Locale("no", "", ""),
+            new Locale("pl", "", ""),
+            new Locale("pt", "", ""),
+            new Locale("ro", "", ""),
+            new Locale("ru", "", ""),
+            new Locale("sh", "", ""),       // 40
+            new Locale("sk", "", ""),
+            new Locale("sl", "", ""),
+            new Locale("sq", "", ""),
+            new Locale("sr", "", ""),
+            new Locale("sv", "", ""),
+            new Locale("tr", "", ""),
+            new Locale("uk", "", ""),
+            new Locale("zh", "", ""),
+            new Locale("zh", "TW", "")      // 49
+        };
+        StringBuffer buffer = new StringBuffer();
+        ParsePosition parsePos = new ParsePosition(0);
+        int i;
+        for (i= 0; i < 49; i++) {
+    //        form = (DecimalFormat)NumberFormat.getCurrencyInstance(locale[i]);
+            form = (DecimalFormat)NumberFormat.getInstance(locale[i]);
+            if (form == null) {
+                errln("Number format creation failed for " + locale[i].getDisplayName());
+                continue;
+            }
+            FieldPosition pos = new FieldPosition(0);
+            buffer.setLength(0);
+            form.format(myNumber, buffer, pos);
+            parsePos.setIndex(0);
+            Object result = form.parse(buffer.toString(), parsePos);
+            logln(locale[i].getDisplayName() + " -> " + result);
+            if (parsePos.getIndex() != buffer.length()) {
+                errln("Number format parse failed.");
+            }
+        }
+    }
+
+    public void TestBug1()
+    {
+        final double limit[] = {0.0, 1.0, 2.0};
+        final String formats[] = {"0.0<=Arg<1.0",
+                                  "1.0<=Arg<2.0",
+                                  "2.0<-Arg"};
+        ChoiceFormat cf = new ChoiceFormat(limit, formats);
+        assertEquals("ChoiceFormat.format", formats[1], cf.format(1));
+    }
+
+    public void TestBug2()
+    {
+        // {sfb} use double format in pattern, so result will match (not strictly necessary)
+        final String pattern = "There {0,choice,0.0#are no files|1.0#is one file|1.0<are {0, number} files} on disk {1}. ";
+        logln("The input pattern : " + pattern);
+        try {
+            MessageFormat fmt = new MessageFormat(pattern);
+            assertEquals("toPattern", pattern, fmt.toPattern());
+        } catch (IllegalArgumentException e) {
+            errln("MessageFormat pattern creation failed.");
+        }
+    }
+
+    public void TestPattern() // aka PatternTest()
+    {
+        Object testArgs[] = {
+            new Double(1), new Double(3456),
+            "Disk", new Date(1000000000L)
+        };
+        String testCases[] = {
+           "Quotes '', '{', 'a' {0} '{0}'",
+           "Quotes '', '{', 'a' {0,number} '{0}'",
+           "'{'1,number,'#',##} {1,number,'#',##}",
+           "There are {1} files on {2} at {3}.",
+           "On {2}, there are {1} files, with {0,number,currency}.",
+           "'{1,number,percent}', {1,number,percent},",
+           "'{1,date,full}', {1,date,full},",
+           "'{3,date,full}', {3,date,full},",
+           "'{1,number,#,##}' {1,number,#,##}",
+        };
+
+        String testResultPatterns[] = {
+            "Quotes '', '{', a {0} '{'0}",
+            "Quotes '', '{', a {0,number} '{'0}",
+            "'{'1,number,#,##} {1,number,'#'#,##}",
+            "There are {1} files on {2} at {3}.",
+            "On {2}, there are {1} files, with {0,number,currency}.",
+            "'{'1,number,percent}, {1,number,percent},",
+            "'{'1,date,full}, {1,date,full},",
+            "'{'3,date,full}, {3,date,full},",
+            "'{'1,number,#,##} {1,number,#,##}"
+        };
+
+        String testResultStrings[] = {
+            "Quotes ', {, a 1 {0}",
+            "Quotes ', {, a 1 {0}",
+            "{1,number,#,##} #34,56",
+            "There are 3,456 files on Disk at 1/12/70 5:46 AM.",
+            "On Disk, there are 3,456 files, with $1.00.",
+            "{1,number,percent}, 345,600%,",
+            "{1,date,full}, Wednesday, December 31, 1969,",
+            "{3,date,full}, Monday, January 12, 1970,",
+            "{1,number,#,##} 34,56"
+        };
+
+        for (int i = 0; i < 9; ++i) {
+            //it_out << "\nPat in:  " << testCases[i]);
+
+            //String buffer;
+            MessageFormat form = null;
+            try {
+                form = new MessageFormat(testCases[i], Locale.US);
+            } catch (IllegalArgumentException e1) {
+                errln("MessageFormat for " + testCases[i] + " creation failed.");
+                continue;
+            }
+            assertEquals("\"" + testCases[i] + "\".toPattern()", testResultPatterns[i], form.toPattern());
+
+            //it_out << "Pat out: " << form.toPattern(buffer));
+            StringBuffer result = new StringBuffer();
+            FieldPosition fieldpos = new FieldPosition(0);
+            form.format(testArgs, result, fieldpos);
+            assertEquals("format", testResultStrings[i], result.toString());
+
+            //it_out << "Result:  " << result);
+    //        /* TODO: Look at this test and see if this is still a valid test */
+    //        logln("---------------- test parse ----------------");
+    //
+    //        int count = 4;
+    //        form.toPattern(buffer);
+    //        logln("MSG pattern for parse: " + buffer);
+    //
+    //        int parseCount = 0;
+    //        Formattable* values = form.parse(result, parseCount, success);
+    //        if (U_FAILURE(success)) {
+    //            errln("MessageFormat failed test #5");
+    //            logln(String("MessageFormat failed test #5 with error code ")+(int)success);
+    //        } else if (parseCount != count) {
+    //            errln("MSG count not %d as expected. Got %d", count, parseCount);
+    //        }
+    //        UBool failed = FALSE;
+    //        for (int j = 0; j < parseCount; ++j) {
+    //             if (values == 0 || testArgs[j] != values[j]) {
+    //                errln(((String)"MSG testargs[") + j + "]: " + toString(testArgs[j]));
+    //                errln(((String)"MSG values[") + j + "]  : " + toString(values[j]));
+    //                failed = TRUE;
+    //             }
+    //        }
+    //        if (failed)
+    //            errln("MessageFormat failed test #6");
+        }
+    }
+
+    public void TestSample() // aka sample()
+    {
+        MessageFormat form = null;
+        StringBuffer buffer2 = new StringBuffer();
+        try {
+            form = new MessageFormat("There are {0} files on {1}");
+        } catch (IllegalArgumentException e1) {
+            errln("Sample message format creation failed.");
+            return;
+        }
+        Object testArgs1[] = { "abc", "def" };
+        FieldPosition fieldpos = new FieldPosition(0);
+        assertEquals("format",
+                     "There are abc files on def",
+                     form.format(testArgs1, buffer2, fieldpos).toString());
+    }
+
+    public void TestStaticFormat()
+    {
+        Object arguments[] = {
+            new Integer(7),
+            new Date(871068000000L),
+            "a disturbance in the Force"
+        };
+
+        assertEquals("format",
+            "At 12:20:00 PM on Aug 8, 1997, there was a disturbance in the Force on planet 7.",
+            MessageFormat.format("At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
+                                 arguments));
+    }
+
+    static final int FieldPosition_DONT_CARE = -1;
+
+    public void TestSimpleFormat()
+    {
+        Object testArgs1[] = {new Integer(0), "MyDisk"};
+        Object testArgs2[] = {new Integer(1), "MyDisk"};
+        Object testArgs3[] = {new Integer(12), "MyDisk"};
+
+        MessageFormat form = new MessageFormat(
+            "The disk \"{1}\" contains {0} file(s).");
+
+        StringBuffer string = new StringBuffer();
+        FieldPosition ignore = new FieldPosition(FieldPosition_DONT_CARE);
+        form.format(testArgs1, string, ignore);
+        assertEquals("format",
+                     "The disk \"MyDisk\" contains 0 file(s).",
+                     string.toString());
+
+        string.setLength(0);
+        form.format(testArgs2, string, ignore);
+        assertEquals("format",
+                     "The disk \"MyDisk\" contains 1 file(s).",
+                     string.toString());
+
+        string.setLength(0);
+        form.format(testArgs3, string, ignore);
+        assertEquals("format",
+                     "The disk \"MyDisk\" contains 12 file(s).",
+                     string.toString());
+    }
+
+    public void TestMsgFormatChoice()
+    {
+        MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
+        double filelimits[] = {0,1,2};
+        String filepart[] = {"no files","one file","{0,number} files"};
+        ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+        form.setFormat(1, fileform); // NOT zero, see below
+
+        FieldPosition ignore = new FieldPosition(FieldPosition_DONT_CARE);
+        StringBuffer string = new StringBuffer();
+        Object testArgs1[] = {new Integer(0), "MyDisk"};
+        form.format(testArgs1, string, ignore);
+        assertEquals("format#1",
+                     "The disk \"MyDisk\" contains no files.",
+                     string.toString());
+
+        string.setLength(0);
+        Object testArgs2[] = {new Integer(1), "MyDisk"};
+        form.format(testArgs2, string, ignore);
+        assertEquals("format#2",
+                     "The disk \"MyDisk\" contains one file.",
+                     string.toString());
+
+        string.setLength(0);
+        Object testArgs3[] = {new Integer(1273), "MyDisk"};
+        form.format(testArgs3, string, ignore);
+        assertEquals("format#3",
+                     "The disk \"MyDisk\" contains 1,273 files.",
+                     string.toString());
+    }
+
+    //---------------------------------
+    //  API Tests
+    //---------------------------------
+
+    public void TestClone()
+    {
+        MessageFormat x = new MessageFormat("There are {0} files on {1}");
+        MessageFormat z = new MessageFormat("There are {0} files on {1} created");
+        MessageFormat y = null;
+        y = (MessageFormat)x.clone();
+        if (x.equals(y) &&
+            !x.equals(z) &&
+            !y.equals(z) )
+            logln("First test (operator ==): Passed!");
+        else {
+            errln("First test (operator ==): Failed!");
+        }
+        if ((x.equals(y) && y.equals(x)) &&
+            (!x.equals(z) && !z.equals(x)) &&
+            (!y.equals(z) && !z.equals(y)) )
+            logln("Second test (equals): Passed!");
+        else {
+            errln("Second test (equals): Failed!");
+        }
+
+    }
+
+    public void TestEquals()
+    {
+        MessageFormat x = new MessageFormat("There are {0} files on {1}");
+        MessageFormat y = new MessageFormat("There are {0} files on {1}");
+        if (!x.equals(y)) {
+            errln("First test (operator ==): Failed!");
+        }
+
+    }
+
+    public void TestNotEquals()
+    {
+        MessageFormat x = new MessageFormat("There are {0} files on {1}");
+        MessageFormat y = new MessageFormat("There are {0} files on {1}");
+        y.setLocale(Locale.FRENCH);
+        if (x.equals(y)) {
+            errln("First test (operator !=): Failed!");
+        }
+        y = new MessageFormat("There are {0} files on {1}");
+        y.applyPattern("There are {0} files on {1} the disk");
+        if (x.equals(y)) {
+            errln("Second test (operator !=): Failed!");
+        }
+    }
+
+    public void TestHashCode()
+    {
+        ULocale save = ULocale.getDefault();
+        ULocale.setDefault(ULocale.US);
+
+        MessageFormat x = new MessageFormat("There are {0} files on {1}");
+        MessageFormat z = new MessageFormat("There are {0} files on {1}");
+        MessageFormat y = null;
+        y = (MessageFormat)x.clone();
+        if (x.hashCode() != y.hashCode())
+            errln("FAIL: identical objects have different hashcodes");
+        if (x.hashCode() != z.hashCode())
+            errln("FAIL: identical objects have different hashcodes");
+
+    /* These are not errors
+        y.setLocale(ULocale.FRENCH);
+        if (x.hashCode() == y.hashCode())
+            errln("FAIL: different objects have same hashcodes. Locale ignored");
+
+        z.applyPattern("There are {0} files on {1} the disk");
+        if (x.hashCode() == z.hashCode())
+            errln("FAIL: different objects have same hashcodes. Pattern ignored");
+    */
+
+        ULocale.setDefault(save);
+    }
+
+    public void TestSetLocale()
+    {
+        Object arguments[] = {
+            new Double(456.83),
+            new Date(871068000000L),
+            "deposit"
+            };
+
+        StringBuffer result = new StringBuffer();
+
+        //String formatStr = "At {1,time} on {1,date}, you made a {2} of {0,number,currency}.";
+        String formatStr = "At <time> on {1,date}, you made a {2} of {0,number,currency}.";
+        // {sfb} to get $, would need Locale::US, not Locale::ENGLISH
+        // Just use unlocalized currency symbol.
+        //String compareStrEng = "At <time> on Aug 8, 1997, you made a deposit of $456.83.";
+        String compareStrEng = "At <time> on Aug 8, 1997, you made a deposit of ";
+        compareStrEng += '\u00a4';
+        compareStrEng += "456.83.";
+        // {sfb} to get DM, would need Locale::GERMANY, not Locale::GERMAN
+        // Just use unlocalized currency symbol.
+        //String compareStrGer = "At <time> on 08.08.1997, you made a deposit of 456,83 DM.";
+        String compareStrGer = "At <time> on 08.08.1997, you made a deposit of ";
+        compareStrGer += "456,83\u00a0";
+        compareStrGer += '\u00a4';
+        compareStrGer += ".";
+
+        MessageFormat msg = new MessageFormat(formatStr, Locale.ENGLISH);
+        result.setLength(0);
+        FieldPosition pos = new FieldPosition(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStrEng, result.toString());
+
+        msg.setLocale(Locale.ENGLISH);
+        assertEquals("getLocale", Locale.ENGLISH, msg.getLocale());
+
+        msg.setLocale(Locale.GERMAN);
+        assertEquals("getLocale", Locale.GERMAN, msg.getLocale());
+
+        msg.applyPattern(formatStr);
+        result.setLength(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStrGer, result.toString());
+
+        //Cover getULocale()
+        logln("Testing set/get ULocale ...");
+        msg.setLocale(ULocale.ENGLISH);
+        assertEquals("getULocale", ULocale.ENGLISH, msg.getULocale());
+
+        msg.setLocale(ULocale.GERMAN);
+        assertEquals("getULocale", ULocale.GERMAN, msg.getULocale());
+
+        msg.applyPattern(formatStr);
+        result.setLength(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStrGer, result.toString());
+    }
+
+    public void TestFormat()
+    {
+        final Object ft_arr[] =
+        {
+            new Date(871068000000L)
+        };
+
+        StringBuffer result = new StringBuffer();
+
+        //String formatStr = "At {1,time} on {1,date}, you made a {2} of {0,number,currency}.";
+        String formatStr = "On {0,date}, it began.";
+        String compareStr = "On Aug 8, 1997, it began.";
+
+        MessageFormat msg = new MessageFormat(formatStr);
+        FieldPosition fp = new FieldPosition(0);
+
+        try {
+            msg.format(new Date(871068000000L),
+                       result,
+                       fp);
+            errln("*** MSG format without expected error code.");
+        } catch (Exception e1) {
+        }
+
+        result.setLength(0);
+        result = msg.format(
+            ft_arr,
+            result,
+            fp);
+        assertEquals("format", compareStr, result.toString());
+    }
+
+    public void TestParse()
+    {
+        String msgFormatString = "{0} =sep= {1}";
+        MessageFormat msg = new MessageFormat(msgFormatString);
+        String source = "abc =sep= def";
+
+        try {
+            Object[] fmt_arr = msg.parse(source);
+            if (fmt_arr.length != 2) {
+                errln("*** MSG parse (ustring, count, err) count err.");
+            } else {
+                // TODO: This if statement seems to be redundant. [tschumann]
+                if (fmt_arr.length != 2) {
+                    errln("*** MSG parse (ustring, parsepos., count) count err.");
+                } else {
+                    assertEquals("parse()[0]", "abc", fmt_arr[0]);
+                    assertEquals("parse()[1]", "def", fmt_arr[1]);
+                }
+            }
+        } catch (ParseException e1) {
+            errln("*** MSG parse (ustring, count, err) error.");
+        }
+
+        ParsePosition pp = new ParsePosition(0);
+
+        Object[] fmt_arr = msg.parse(source, pp);
+        if (pp.getIndex()==0 || fmt_arr==null) {
+            errln("*** MSG parse (ustring, parsepos., count) error.");
+        } else {
+            if (fmt_arr.length != 2) {
+                errln("*** MSG parse (ustring, parsepos., count) count err.");
+            } else {
+                assertEquals("parse()[0]", "abc", fmt_arr[0]);
+                assertEquals("parse()[1]", "def", fmt_arr[1]);
+            }
+        }
+
+        pp.setIndex(0);
+        Object[] fmta;
+
+        fmta = (Object[]) msg.parseObject( source, pp );
+        if (pp.getIndex() == 0) {
+            errln("*** MSG parse (ustring, Object, parsepos ) error.");
+        } else {
+            if (fmta.length != 2) {
+                errln("*** MSG parse (ustring, count, err) count err.");
+            } else {
+                // TODO: Don't we want to check fmta?
+                //       In this case this if statement would be redundant, too.
+                //       [tschumann]
+                if (fmt_arr.length != 2) {
+                    errln("*** MSG parse (ustring, parsepos., count) count err.");
+                } else {
+                    // TODO: Don't we want to check fmta? [tschumann]
+                    assertEquals("parse()[0]", "abc", fmt_arr[0]);
+                    assertEquals("parse()[1]", "def", fmt_arr[1]);
+                }
+            }
+        }
+    }
+
+    /**
+     * Of course, in Java there is no adopt, but we retain the same
+     * method name. [alan]
+     */
+    public void TestAdopt()
+    {
+        String formatStr = "{0,date},{1},{2,number}";
+        String formatStrChange = "{0,number},{1,number},{2,date}";
+        MessageFormat msg = new MessageFormat(formatStr);
+        MessageFormat msgCmp = new MessageFormat(formatStr);
+        Format[] formats = msg.getFormats();
+        Format[] formatsCmp = msgCmp.getFormats();
+        Format[] formatsChg = null;
+        Format[] formatsAct = null;
+        Format a = null;
+        Format b = null;
+        Format[] formatsToAdopt = null;
+
+        if (formats==null || formatsCmp==null || (formats.length <= 0) || (formats.length != formatsCmp.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        int i;
+
+        for (i = 0; i < formats.length; i++) {
+            a = formats[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (!a.equals(b)) {
+                    errln("a != b");
+                    return;
+                }
+            } else if ((a != null) || (b != null)) {
+                errln("(a != null) || (b != null)");
+                return;
+            }
+        }
+
+        msg.applyPattern( formatStrChange ); //set msg formats to something different
+        formatsChg = msg.getFormats(); // tested function
+        if (formatsChg==null || (formatsChg.length != formats.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        boolean diff;
+        diff = true;
+        for (i = 0; i < formats.length; i++) {
+            a = formatsChg[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (a.equals(b)) {
+                    logln("formatsChg == formatsCmp at index " + i);
+                    diff = false;
+                }
+            }
+        }
+        if (!diff) {
+            errln("*** MSG getFormats diff err.");
+            return;
+        }
+
+        logln("MSG getFormats tested.");
+
+        msg.setFormats( formatsCmp ); //tested function
+
+        formatsAct = msg.getFormats();
+        if (formatsAct==null || (formatsAct.length <=0) || (formatsAct.length != formatsCmp.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        assertEquals("msgCmp.toPattern()", formatStr, msgCmp.toPattern());
+        assertEquals("msg.toPattern()", formatStr, msg.toPattern());
+
+        for (i = 0; i < formatsAct.length; i++) {
+            a = formatsAct[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (!a.equals(b)) {
+                    errln("formatsAct != formatsCmp at index " + i);
+                    return;
+                }
+            } else if ((a != null) || (b != null)) {
+                errln("(a != null) || (b != null)");
+                return;
+            }
+        }
+        logln("MSG setFormats tested.");
+
+        //----
+
+        msg.applyPattern( formatStrChange ); //set msg formats to something different
+
+        formatsToAdopt = new Format[formatsCmp.length];
+        if (formatsToAdopt==null) {
+            errln("memory allocation error");
+            return;
+        }
+
+        for (i = 0; i < formatsCmp.length; i++) {
+            if (formatsCmp[i] == null) {
+                formatsToAdopt[i] = null;
+            } else {
+                formatsToAdopt[i] = (Format) formatsCmp[i].clone();
+                if (formatsToAdopt[i]==null) {
+                    errln("Can't clone format at index " + i);
+                    return;
+                }
+            }
+        }
+        msg.setFormats( formatsToAdopt ); // function to test
+
+        assertEquals("msgCmp.toPattern()", formatStr, msgCmp.toPattern());
+        assertEquals("msg.toPattern()", formatStr, msg.toPattern());
+
+        formatsAct = msg.getFormats();
+        if (formatsAct==null || (formatsAct.length <=0) || (formatsAct.length != formatsCmp.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        for (i = 0; i < formatsAct.length; i++) {
+            a = formatsAct[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (!a.equals(b)) {
+                    errln("a != b");
+                    return;
+                }
+            } else if ((a != null) || (b != null)) {
+                errln("(a != null) || (b != null)");
+                return;
+            }
+        }
+        logln("MSG adoptFormats tested.");
+
+        //---- adoptFormat
+
+        msg.applyPattern( formatStrChange ); //set msg formats to something different
+
+        formatsToAdopt = new Format[formatsCmp.length];
+        if (formatsToAdopt==null) {
+            errln("memory allocation error");
+            return;
+        }
+
+        for (i = 0; i < formatsCmp.length; i++) {
+            if (formatsCmp[i] == null) {
+                formatsToAdopt[i] = null;
+            } else {
+                formatsToAdopt[i] = (Format) formatsCmp[i].clone();
+                if (formatsToAdopt[i]==null) {
+                    errln("Can't clone format at index " + i);
+                    return;
+                }
+            }
+        }
+
+        for ( i = 0; i < formatsCmp.length; i++ ) {
+            msg.setFormat( i, formatsToAdopt[i] ); // function to test
+        }
+
+        assertEquals("msgCmp.toPattern()", formatStr, msgCmp.toPattern());
+        assertEquals("msg.toPattern()", formatStr, msg.toPattern());
+
+        formatsAct = msg.getFormats();
+        if (formatsAct==null || (formatsAct.length <=0) || (formatsAct.length != formatsCmp.length)) {
+            errln("Error getting Formats");
+            return;
+        }
+
+        for (i = 0; i < formatsAct.length; i++) {
+            a = formatsAct[i];
+            b = formatsCmp[i];
+            if ((a != null) && (b != null)) {
+                if (!a.equals(b)) {
+                    errln("a != b");
+                    return;
+                }
+            } else if ((a != null) || (b != null)) {
+                errln("(a != null) || (b != null)");
+                return;
+            }
+        }
+        logln("MSG adoptFormat tested.");
+    }
+
+    /**
+     * Verify that MessageFormat accomodates more than 10 arguments and
+     * more than 10 subformats.
+     */
+    public void TestUnlimitedArgsAndSubformats() {
+        final String pattern =
+            "On {0,date} (aka {0,date,short}, aka {0,date,long}) "+
+            "at {0,time} (aka {0,time,short}, aka {0,time,long}) "+
+            "there were {1,number} werjes "+
+            "(a {3,number,percent} increase over {2,number}) "+
+            "despite the {4}''s efforts "+
+            "and to delight of {5}, {6}, {7}, {8}, {9}, and {10} {11}.";
+        try {
+            MessageFormat msg = new MessageFormat(pattern);
+
+            final Object ARGS[] = {
+                new Date(10000000000000L),
+                new Integer(1303),
+                new Integer(1202),
+                new Double(1303.0/1202 - 1),
+                "Glimmung",
+                "the printers",
+                "Nick",
+                "his father",
+                "his mother",
+                "the spiddles",
+                "of course",
+                "Horace"
+            };
+
+            String expected =
+                "On Nov 20, 2286 (aka 11/20/86, aka November 20, 2286) "+
+                "at 9:46:40 AM (aka 9:46 AM, aka 9:46:40 AM PST) "+
+                "there were 1,303 werjes "+
+                "(a 8% increase over 1,202) "+
+                "despite the Glimmung's efforts "+
+                "and to delight of the printers, Nick, his father, "+
+                "his mother, the spiddles, and of course Horace.";
+            assertEquals("format", expected, msg.format(ARGS));
+        } catch (IllegalArgumentException e1) {
+            errln("FAIL: constructor failed");
+        }
+    }
+
+    // test RBNF extensions to message format
+    public void TestRBNF() {
+        // WARNING: this depends on the RBNF formats for en_US
+        Locale locale = Locale.US;
+        String[] values = {
+            // decimal values do not format completely for ordinal or duration, and
+            // do not always parse, so do not include them
+            "0", "1", "12", "100", "123", "1001", "123,456", "-17",
+        };
+        String[] formats = {
+            "There are {0,spellout} files to search.",
+            "There are {0,spellout,%simplified} files to search.",
+            "The bogus spellout {0,spellout,%BOGUS} files behaves like the default.",
+            "This is the {0,ordinal} file to search.", // TODO fix bug, ordinal does not parse
+            "Searching this file will take {0,duration} to complete.",
+            "Searching this file will take {0,duration,%with-words} to complete.",
+        };
+        final NumberFormat numFmt = NumberFormat.getInstance(locale);
+        Object[] args = new Object[1];
+        Number num = null;
+        for (int i = 0; i < formats.length; ++i) {
+            MessageFormat fmt = new MessageFormat(formats[i], locale);
+            logln("Testing format pattern: '" + formats[i] + "'");
+            for (int j = 0; j < values.length; ++j) {
+                try {
+                    num = numFmt.parse(values[j]);
+                }
+                catch (Exception e) {
+                    throw new IllegalStateException("failed to parse test argument");
+                }
+                args[0] = num;
+                String result = fmt.format(args);
+                logln("value: " + num + " --> " + result);
+
+                if (i != 3) { // TODO: fix this, for now skip ordinal parsing (format string at index 3)
+                    try {
+                        Object[] parsedArgs = fmt.parse(result);
+                        if (parsedArgs.length != 1) {
+                            errln("parse returned " + parsedArgs.length + " args");
+                        } else if (!parsedArgs[0].equals(num)) {
+                            errln("parsed argument " + parsedArgs[0] + " != " + num);
+                        }
+                    }
+                    catch (Exception e) {
+                        errln("parse of '" + result + " returned exception: " + e.getMessage());
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestSetGetFormats()
+    {
+        Object arguments[] = {
+            new Double(456.83),
+            new Date(871068000000L),
+            "deposit"
+            };
+
+        StringBuffer result = new StringBuffer();
+
+        String formatStr = "At <time> on {1,date}, you made a {2} of {0,number,currency}.";
+        // original expected format result
+        String compareStr = "At <time> on Aug 8, 1997, you made a deposit of $456.83.";
+        // the date being German-style, but the currency being English-style
+        String compareStr2 = "At <time> on 08.08.1997, you made a deposit of ";
+        compareStr2 += '\u00a4';
+        compareStr2 += "456.83.";
+        // both date and currency formats are German-style
+        String compareStr3 = "At <time> on 08.08.1997, you made a deposit of ";
+        compareStr3 += "456,83\u00a0";
+        compareStr3 += '\u00a4';
+        compareStr3 += ".";
+
+        MessageFormat msg = new MessageFormat(formatStr, ULocale.US);
+        result.setLength(0);
+        FieldPosition pos = new FieldPosition(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStr, result.toString());
+
+        // constructs a Format array with a English-style Currency formatter
+        //                            and a German-style Date formatter
+        //      might not meaningful, just for testing setFormatsByArgIndex
+        Format[] fmts = new Format[] {
+            NumberFormat.getCurrencyInstance(ULocale.ENGLISH),
+            DateFormat.getDateInstance(DateFormat.DEFAULT, ULocale.GERMAN)
+            };
+
+        msg.setFormatsByArgumentIndex(fmts);
+        result.setLength(0);
+        pos = new FieldPosition(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStr2, result.toString());
+
+        // Construct a German-style Currency formatter, replace the corresponding one
+        // Thus both formatters should format objects with German-style
+        Format newFmt = NumberFormat.getCurrencyInstance(ULocale.GERMAN);
+        msg.setFormatByArgumentIndex(0, newFmt);
+        result.setLength(0);
+        pos = new FieldPosition(0);
+        result = msg.format(
+            arguments,
+            result,
+            pos);
+        assertEquals("format", compareStr3, result.toString());
+
+        // verify getFormatsByArgumentIndex
+        //   you should got three formats by that
+        //          - DecimalFormat     locale: de
+        //          - SimpleDateFormat  locale: de
+        //          - null
+        Format[] fmts2 = msg.getFormatsByArgumentIndex();
+        assertEquals("1st subformmater: Format Class", "com.ibm.icu.text.DecimalFormat", fmts2[0].getClass().getName());
+        assertEquals("1st subformmater: its Locale", ULocale.GERMAN, ((UFormat)fmts2[0]).getLocale(ULocale.VALID_LOCALE));
+        assertEquals("2nd subformatter: Format Class", "com.ibm.icu.text.SimpleDateFormat", fmts2[1].getClass().getName());
+        assertEquals("2nd subformmater: its Locale", ULocale.GERMAN, ((UFormat)fmts2[1]).getLocale(ULocale.VALID_LOCALE));
+        assertTrue("The third subFormatter is null", null == fmts2[2]);
+    }
+
+    // Test the fix pattern api
+    public void TestAutoQuoteApostrophe() {
+        final String[] patterns = { // new pattern, expected pattern
+            "'", "''",
+            "''", "''",
+            "'{", "'{'",
+            "' {", "'' {",
+            "'a", "''a",
+            "'{'a", "'{'a",
+            "'{a'", "'{a'",
+            "'{}", "'{}'",
+            "{'", "{'",
+            "{'a", "{'a",
+            "{'a{}'a}'a", "{'a{}'a}''a",
+            "'}'", "'}'",
+            "'} '{'}'", "'} '{'}''",
+            "'} {{{''", "'} {{{'''",
+        };
+        for (int i = 0; i < patterns.length; i += 2) {
+            assertEquals("[" + (i/2) + "] \"" + patterns[i] + "\"", patterns[i+1], MessageFormat.autoQuoteApostrophe(patterns[i]));
+        }
+    }
+    
+    // This tests passing named arguments instead of numbers to format(). 
+    public void testFormatNamedArguments() {
+        Map arguments = new HashMap();
+        arguments.put("startDate", new Date(871068000000L));
+
+        StringBuffer result = new StringBuffer();
+        
+        String formatStr = "On {startDate,date}, it began.";
+        String compareStr = "On Aug 8, 1997, it began.";
+
+        MessageFormat msg = new MessageFormat(formatStr);
+        FieldPosition fp = new FieldPosition(0);
+
+        try {
+            msg.format(arguments.get("startDate"), result, fp);
+            errln("*** MSG format without expected error code.");
+        } catch (Exception e1) {
+        }
+
+        result.setLength(0);
+        result = msg.format(
+            arguments,
+            result,
+            fp);
+        assertEquals("format", compareStr, result.toString());
+    }
+    
+    // This tests parsing formatted messages with named arguments instead of
+    // numbers. 
+    public void testParseNamedArguments() {
+        String msgFormatString = "{foo} =sep= {bar}";
+        MessageFormat msg = new MessageFormat(msgFormatString);
+        String source = "abc =sep= def";
+
+        try {
+            Map fmt_map = msg.parseToMap(source);
+            if (fmt_map.keySet().size() != 2) {
+                errln("*** MSG parse (ustring, count, err) count err.");
+            } else {
+                assertEquals("parse()[0]", "abc", fmt_map.get("foo"));
+                assertEquals("parse()[1]", "def", fmt_map.get("bar"));
+            }
+        } catch (ParseException e1) {
+            errln("*** MSG parse (ustring, count, err) error.");
+        }
+
+        ParsePosition pp = new ParsePosition(0);
+        Map fmt_map = msg.parseToMap(source, pp); 
+        if (pp.getIndex()==0 || fmt_map==null) {
+            errln("*** MSG parse (ustring, parsepos., count) error.");
+        } else {
+            if (fmt_map.keySet().size() != 2) {
+                errln("*** MSG parse (ustring, parsepos., count) count err.");
+            } else {
+                assertEquals("parse()[0]", "abc", fmt_map.get("foo"));
+                assertEquals("parse()[1]", "def", fmt_map.get("bar"));
+            }
+        }
+
+        pp.setIndex(0);
+       
+        Map fmta = (Map) msg.parseObject( source, pp );
+        if (pp.getIndex() == 0) {
+            errln("*** MSG parse (ustring, Object, parsepos ) error.");
+        } else {
+            if (fmta.keySet().size() != 2) {
+                errln("*** MSG parse (ustring, count, err) count err.");
+            } else {
+                assertEquals("parse()[0]", "abc", fmta.get("foo"));
+                assertEquals("parse()[1]", "def", fmta.get("bar"));
+            }
+        }
+    }
+    
+    // Ensure that methods designed for numeric arguments only, will throw
+    // an exception when called on MessageFormat objects created with
+    // named arguments.
+    public void testNumericOnlyMethods() {
+        MessageFormat msg = new MessageFormat("Number of files: {numfiles}");
+        boolean gotException = false;
+        try {
+            Format fmts[] = {new DecimalFormat()};
+            msg.setFormatsByArgumentIndex(fmts);
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.setFormatsByArgumentIndex() should throw an " +
+                  "IllegalArgumentException when called on formats with " + 
+                  "named arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            msg.setFormatByArgumentIndex(0, new DecimalFormat());
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.setFormatByArgumentIndex() should throw an " +
+                  "IllegalArgumentException when called on formats with " + 
+                  "named arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            msg.getFormatsByArgumentIndex();
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.getFormatsByArgumentIndex() should throw an " +
+                  "IllegalArgumentException when called on formats with " + 
+                  "named arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            Object args[] = {new Long(42)};
+            msg.format(args, new StringBuffer(), new FieldPosition(0));
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.format(Object[], StringBuffer, FieldPosition) " +
+                  "should throw an IllegalArgumentException when called on " + 
+                  "formats with named arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            Object args[] = {new Long(42)};
+            msg.format((Object) args, new StringBuffer(), new FieldPosition(0));
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.format(Object, StringBuffer, FieldPosition) " +
+                  "should throw an IllegalArgumentException when called with " +
+                  "non-Map object as argument on formats with named " + 
+                  "arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            msg.parse("Number of files: 5", new ParsePosition(0));
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        }
+        if (!gotException) {
+            errln("MessageFormat.parse(String, ParsePosition) " +
+                  "should throw an IllegalArgumentException when called with " +
+                  "non-Map object as argument on formats with named " + 
+                  "arguments but did not!");
+        }
+        
+        gotException = false;
+        try {
+            msg.parse("Number of files: 5");
+        } catch (IllegalArgumentException e) {
+            gotException = true;
+        } catch (ParseException e) {
+            errln("Wrong exception thrown.");
+        }
+        if (!gotException) {
+            errln("MessageFormat.parse(String) " +
+                  "should throw an IllegalArgumentException when called with " +
+                  "non-Map object as argument on formats with named " + 
+                  "arguments but did not!");
+        }
+    }
+    
+    public void testNamedArguments() {
+        // Ensure that mixed argument types are not allowed.
+        // Either all arguments have to be numeric or valid identifiers.
+        try {
+            new MessageFormat("Number of files in folder {0}: {numfiles}");
+            errln("Creating a MessageFormat with mixed argument types " + 
+                    "(named and numeric) should throw an " + 
+                    "IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        try {
+            new MessageFormat("Number of files in folder {folder}: {1}");
+            errln("Creating a MessageFormat with mixed argument types " + 
+                    "(named and numeric) should throw an " + 
+                    "IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        // Test named arguments.
+        MessageFormat mf = new MessageFormat("Number of files in folder {folder}: {numfiles}");
+        if (!mf.usesNamedArguments()) {
+            errln("message format 1 should have used named arguments");
+        }
+        mf = new MessageFormat("Wavelength:  {\u028EValue\uFF14}");
+        if (!mf.usesNamedArguments()) {
+            errln("message format 2 should have used named arguments");
+        }
+        
+        // Test argument names with invalid start characters.
+        try {
+            new MessageFormat("Wavelength:  {_\u028EValue\uFF14}");
+            errln("Creating a MessageFormat with invalid argument names " + 
+            "should throw an IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        try {
+            new MessageFormat("Wavelength:  {\uFF14\u028EValue}");
+            errln("Creating a MessageFormat with invalid argument names " + 
+            "should throw an IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        // Test argument names with invalid continue characters.
+        try {
+            new MessageFormat("Wavelength:  {Value@\uFF14}");
+            errln("Creating a MessageFormat with invalid argument names " + 
+            "should throw an IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}
+        
+        try {
+            new MessageFormat("Wavelength:  {Value(\uFF14)}");
+            errln("Creating a MessageFormat with invalid argument names " + 
+            "should throw an IllegalArgumentException but did not!");
+        } catch (IllegalArgumentException e) {}        
+    }
+
+    public void testNumericFormatWithMap() {
+        MessageFormat mf = new MessageFormat("X:{2} Y:{1}");
+        if (mf.usesNamedArguments()) {
+            errln("should not use named arguments");
+        }
+
+        Map map12 = new HashMap();
+        map12.put("1", "one");
+        map12.put("2", "two");
+
+        String target = "X:two Y:one";
+        String result = mf.format(map12);
+        if (!target.equals(result)) {
+            errln("expected '" + target + "' but got '" + result + "'");
+        }
+
+        try {
+            Map mapResult = mf.parseToMap(target);
+            if (!map12.equals(mapResult)) {
+                errln("expected " + map12 + " but got " + mapResult);
+            }
+        } catch (ParseException e) {
+            errln("unexpected exception: " + e.getMessage());
+        }
+
+        Map map10 = new HashMap();
+        map10.put("1", "one");
+        map10.put("0", "zero");
+        target = "X:{2} Y:one";
+        result = mf.format(map10);
+        if (!target.equals(result)) {
+            errln("expected '" + target + "' but got '" + result + "'");
+        }
+
+        DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
+        DateFormat timeFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);
+        Map fmtMap = new HashMap();
+        fmtMap.put("1", dateFormat);
+        fmtMap.put("2", timeFormat);
+        mf.setFormatsByArgumentName(fmtMap);
+        Date date = new Date(661439820000L);
+
+        try {
+            result = mf.format(map12); // should fail, wrong argument type
+            fail("expected exception but got '" + result + "'");
+        } catch (IllegalArgumentException e) {
+            // expect this
+        }
+
+        Map argMap = new HashMap();
+        argMap.put("1", date);
+        argMap.put("2", date);
+        target = "X:5:17:00 AM Y:Dec 17, 1990";
+        result = mf.format(argMap);
+        if (!target.equals(result)) {
+            errln("expected '" + target + "' but got '" + result + "'");
+        }
+    }
+
+    // This tests nested Formats inside PluralFormat.
+    public void testNestedFormatsInPluralFormat() {
+        try {
+            MessageFormat msgFmt = new MessageFormat(
+                    "{0, plural, one {{0, number,C''''est #,##0.0# fichier}} " +
+                    "other {Ce sont # fichiers}} dans la liste.",
+                    new ULocale("fr"));
+            Object objArray[] = {new Long(0)};
+            HashMap objMap = new HashMap();
+            objMap.put("argument", objArray[0]);
+            String result = msgFmt.format(objArray);
+            if (!result.equals("C'est 0,0 fichier dans la liste.")) {
+                errln("PluralFormat produced wrong message string.");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    // This tests PluralFormats used inside MessageFormats.
+    public void testPluralFormat() {
+        {
+            MessageFormat mfNum = new MessageFormat(
+                    "{0, plural, one{C''est # fichier} other " + 
+                      "{Ce sont # fichiers}} dans la liste.",
+                    new ULocale("fr"));
+            MessageFormat mfAlpha = new MessageFormat(
+                    "{argument, plural, one{C''est # fichier} other {Ce " +
+                      "sont # fichiers}} dans la liste.",
+                    new ULocale("fr"));
+            Object objArray[] = {new Long(0)};
+            HashMap objMap = new HashMap();
+            objMap.put("argument", objArray[0]);
+            String result = mfNum.format(objArray);
+            if (!result.equals(mfAlpha.format(objMap))) {
+                errln("PluralFormat's output differs when using named " + 
+                        "arguments instead of numbers!");
+            }
+            if (!result.equals("C'est 0 fichier dans la liste.")) {
+                errln("PluralFormat produced wrong message string.");
+            }
+        }
+        {
+            MessageFormat mfNum = new MessageFormat (
+                    "There {0, plural, one{is # zavod}few{are {0, " +
+                      "number,###.0} zavoda} other{are # zavodov}} in the " +
+                      "directory.",
+                    new ULocale("ru"));
+            MessageFormat mfAlpha = new MessageFormat (
+                    "There {argument, plural, one{is # zavod}few{" +
+                      "are {argument, number,###.0} zavoda} other{are # " + 
+                      "zavodov}} in the directory.",
+                    new ULocale("ru"));
+            Object objArray[] = {new Long(4)};
+            HashMap objMap = new HashMap();
+            objMap.put("argument", objArray[0]);
+            String result = mfNum.format(objArray);
+            if (!result.equals(mfAlpha.format(objMap))) {
+                errln("PluralFormat's output differs when using named " + 
+                        "arguments instead of numbers!");
+            }
+            if (!result.equals("There are 4,0 zavoda in the directory.")) {
+                errln("PluralFormat produced wrong message string.");
+            }
+        }
+    }
+
+  // Test toPattern when there is a PluralFormat
+  public void testPluralFormatToPattern() {
+    String[] patterns = {
+      "Beware of vicious {0, plural, one {hamster} other {hamsters}}.",
+      "{0, plural, one {{0, number,C''''est #,##0.0# fichier}} other {Ce sont # fichiers}} dans la liste.",
+      "{0, plural, one {C''est # fichier} other {Ce sont # fichiers}} dans la liste.",
+    };
+
+    for (int i = 0; i < patterns.length; ++i) {
+      String pattern = patterns[i];
+      MessageFormat mf = new MessageFormat(pattern);
+      MessageFormat mf2 = new MessageFormat(mf.toPattern());
+      if (!mf.equals(mf2)) {
+        errln("message formats not equal for pattern:\n*** '" + pattern + "'\n*** '" +
+              mf.toPattern() + "'");
+      }
+    }
+  }
+
+    // Test case for null arguments.
+    // Ticket#6361
+    public void TestNullArgs() {
+        MessageFormat msgfmt = new MessageFormat("{0} - {1}");
+        Object[][] TEST_CASES = {
+            {null,                          "{0} - {1}"},
+            {new Object[] {null},           "null - {1}"},
+            {new Object[] {null, null},     "null - null"},
+            {new Object[] {"one"},          "one - {1}"},
+            {new Object[] {"one", null},    "one - null"},
+            {new Object[] {null, "two"},    "null - two"},
+        };
+
+        for (int i = 0; i < TEST_CASES.length; i++) {
+            String text = msgfmt.format(TEST_CASES[i][0]);
+            if (!text.equals(TEST_CASES[i][1])) {
+                errln("FAIL: Returned[" + text + "] Expected[" + TEST_CASES[i][1] + "]");
+            }
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    // Test case for formatToCharacterIterator
+    public void TestFormatToCharacterIterator() {
+        MessageFormat[] msgfmts = {
+            new MessageFormat("The {3,ordinal} folder ''{0}'' contains {2,number} file(s), created at {1,time} on {1,date}."),
+            new MessageFormat("The {arg3,ordinal} folder ''{arg0}'' contains {arg2,number} file(s), created at {arg1,time} on {arg1,date}."), // same as above, but named args
+            new MessageFormat("The folder contains {0}.")
+        };
+
+        double filelimits[] = {0,1,2};
+        String filepart[] = {"no files","one file","{0,number} files"};
+        ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+        msgfmts[2].setFormat(0, fileform);
+
+        
+        Object[] args0 = new Object[] {"tmp", new Date(1184777888000L), new Integer(15), new Integer(2)};
+
+        HashMap args1 = new HashMap();
+        args1.put("arg0", "tmp");
+        args1.put("arg1", new Date(1184777888000L));
+        args1.put("arg2", new Integer(15));
+        args1.put("arg3", new Integer(2));
+
+        Object[] args2 = new Object[] {new Integer(34)};
+
+        Object[] args = {
+            args0,
+            args1,
+            args2
+        };
+        
+        String[] expectedStrings = {
+            "The 2nd folder 'tmp' contains 15 file(s), created at 9:58:08 AM on Jul 18, 2007.",
+            "The 2nd folder 'tmp' contains 15 file(s), created at 9:58:08 AM on Jul 18, 2007.",
+            "The folder contains 34 files."
+        };
+
+        AttributedString[] expectedAttributedStrings = {
+            new AttributedString(expectedStrings[0]),
+            new AttributedString(expectedStrings[1]),
+            new AttributedString(expectedStrings[2])
+        };
+
+        // Add expected attributes to the expectedAttributedStrings[0]
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(3), 4, 7);
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(0), 16, 19);
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(2), 30, 32);
+        expectedAttributedStrings[0].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 30, 32);
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(1), 53, 63);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.HOUR1, DateFormat.Field.HOUR1, 53, 54);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.MINUTE, DateFormat.Field.MINUTE, 55, 57);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.SECOND, DateFormat.Field.SECOND, 58, 60);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.AM_PM, DateFormat.Field.AM_PM, 61, 63);
+        expectedAttributedStrings[0].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(1), 67, 79);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.MONTH, DateFormat.Field.MONTH, 67, 70);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.DAY_OF_MONTH, DateFormat.Field.DAY_OF_MONTH, 71, 73);
+        expectedAttributedStrings[0].addAttribute(DateFormat.Field.YEAR, DateFormat.Field.YEAR, 75, 79);
+
+        // Add expected attributes to the expectedAttributedStrings[1]
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg3", 4, 7);
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg0", 16, 19);
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg2", 30, 32);
+        expectedAttributedStrings[1].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 30, 32);
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg1", 53, 63);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.HOUR1, DateFormat.Field.HOUR1, 53, 54);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.MINUTE, DateFormat.Field.MINUTE, 55, 57);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.SECOND, DateFormat.Field.SECOND, 58, 60);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.AM_PM, DateFormat.Field.AM_PM, 61, 63);
+        expectedAttributedStrings[1].addAttribute(MessageFormat.Field.ARGUMENT, "arg1", 67, 79);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.MONTH, DateFormat.Field.MONTH, 67, 70);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.DAY_OF_MONTH, DateFormat.Field.DAY_OF_MONTH, 71, 73);
+        expectedAttributedStrings[1].addAttribute(DateFormat.Field.YEAR, DateFormat.Field.YEAR, 75, 79);
+
+        // Add expected attributes to the expectedAttributedStrings[2]
+        expectedAttributedStrings[2].addAttribute(MessageFormat.Field.ARGUMENT, new Integer(0), 20, 28);
+        expectedAttributedStrings[2].addAttribute(NumberFormat.Field.INTEGER, NumberFormat.Field.INTEGER, 20, 22);
+
+        for (int i = 0; i < msgfmts.length; i++) {
+            AttributedCharacterIterator acit = msgfmts[i].formatToCharacterIterator(args[i]);
+            AttributedCharacterIterator expectedAcit = expectedAttributedStrings[i].getIterator();
+
+            // Check available attributes
+            Set attrSet = acit.getAllAttributeKeys();
+            Set expectedAttrSet = expectedAcit.getAllAttributeKeys();
+            if (attrSet.size() != expectedAttrSet.size()) {
+                errln("FAIL: Number of attribute keys is " + attrSet.size() + " expected: " + expectedAttrSet.size());
+            }
+            Iterator attrIterator = attrSet.iterator();
+            while (attrIterator.hasNext()) {
+                AttributedCharacterIterator.Attribute attr = (AttributedCharacterIterator.Attribute)attrIterator.next();
+                if (!expectedAttrSet.contains(attr)) {
+                    errln("FAIL: The attribute " + attr + " is not expected.");
+                }
+            }
+
+            StringBuffer buf = new StringBuffer();
+            int index = acit.getBeginIndex();
+            int end = acit.getEndIndex();
+            int indexExp = expectedAcit.getBeginIndex();
+            int expectedLen = expectedAcit.getEndIndex() - indexExp;
+            if (end - index != expectedLen) {
+                errln("FAIL: Length of the result attributed string is " + (end - index) + " expected: " + expectedLen);
+            } else {
+                // Check attributes associated with each character
+                while (index < end) {
+                    char c = acit.setIndex(index);
+                    buf.append(c);
+                    expectedAcit.setIndex(indexExp);
+
+                    Map attrs = acit.getAttributes();
+                    Map attrsExp = expectedAcit.getAttributes();
+                    if (attrs.size() != attrsExp.size()) {
+                        errln("FAIL: Number of attributes associated with index " + index + " is " + attrs.size()
+                                + " expected: " + attrsExp.size());
+                    } else {
+                        // Check all attributes at the index
+                        Iterator entryIterator = attrsExp.entrySet().iterator();
+                        while (entryIterator.hasNext()) {
+                            Map.Entry entry = (Map.Entry)entryIterator.next();
+                            if (attrs.containsKey(entry.getKey())) {
+                                Object value = attrs.get(entry.getKey());
+                                assertEquals("Attribute value at index " + index, entry.getValue(), value);
+                            } else {
+                                errln("FAIL: Attribute " + entry.getKey() + " is missing at index " + index);
+                            }
+                        }
+                    }
+                    index++;
+                    indexExp++;
+                }
+                assertEquals("AttributedString contents", expectedStrings[i], buf.toString());
+            }
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/dev/test/format/TimeUnitTest.java b/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
new file mode 100644
index 0000000..980c8c0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
@@ -0,0 +1,105 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import java.text.ParseException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.TimeUnitFormat;
+import com.ibm.icu.util.TimeUnit;
+import com.ibm.icu.util.TimeUnitAmount;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author markdavis
+ *
+ */
+public class TimeUnitTest extends TestFmwk {
+    public static void main(String[] args) throws Exception{
+        new TimeUnitTest().run(args);
+    }
+
+    public void TestBasic() {
+        String[] locales = {"en", "sl", "fr", "zh", "ar", "ru", "zh_Hant"};
+        for ( int locIndex = 0; locIndex < locales.length; ++locIndex ) {
+            //System.out.println("locale: " + locales[locIndex]);
+            Object[] formats = new Object[] {
+                new TimeUnitFormat(new ULocale(locales[locIndex]), TimeUnitFormat.FULL_NAME),
+                new TimeUnitFormat(new ULocale(locales[locIndex]), TimeUnitFormat.ABBREVIATED_NAME)
+            };
+            for (int style = TimeUnitFormat.FULL_NAME;
+                 style <= TimeUnitFormat.ABBREVIATED_NAME;
+                 ++style) {
+                final TimeUnit[] values = TimeUnit.values();
+                for (int j = 0; j < values.length; ++j) {
+                    final TimeUnit timeUnit = values[j];
+                    double[] tests = {0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 5, 10, 100, 101.35};
+                    for (int i = 0; i < tests.length; ++i) {
+                        TimeUnitAmount source = new TimeUnitAmount(tests[i], timeUnit);
+                        String formatted = ((TimeUnitFormat)formats[style]).format(source);
+                        //System.out.println(formatted);
+                        logln(tests[i] + " => " + formatted);
+                        try {
+                            TimeUnitAmount result = (TimeUnitAmount) ((TimeUnitFormat)formats[style]).parseObject(formatted);
+                            if (result == null || !source.equals(result)) {
+                                errln("No round trip: " + source + " => " + formatted + " => " + result);
+                            }
+                            // mix style parsing
+                            result = (TimeUnitAmount) ((TimeUnitFormat)formats[1 - style]).parseObject(formatted);
+                            if (result == null || !source.equals(result)) {
+                                errln("No round trip: " + source + " => " + formatted + " => " + result);
+                            }
+                        } catch (ParseException e) {
+                            errln(e.getMessage());
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestAPI() {
+        TimeUnitFormat format = new TimeUnitFormat();
+        format.setLocale(new ULocale("pt_BR"));
+        formatParsing(format);
+        format = new TimeUnitFormat(new ULocale("de"));
+        formatParsing(format);
+        format = new TimeUnitFormat(new ULocale("ja"));
+        format.setNumberFormat(NumberFormat.getNumberInstance(new ULocale("en")));
+        formatParsing(format);
+
+        format = new TimeUnitFormat();
+        ULocale es = new ULocale("es");
+        format.setNumberFormat(NumberFormat.getNumberInstance(es));
+        format.setLocale(es);
+        formatParsing(format);
+        
+    }
+
+    private void formatParsing(TimeUnitFormat format) {
+        final TimeUnit[] values = TimeUnit.values();
+        for (int j = 0; j < values.length; ++j) {
+            final TimeUnit timeUnit = values[j];
+            double[] tests = {0, 0.5, 1, 2, 3, 5};
+            for (int i = 0; i < tests.length; ++i) {
+                TimeUnitAmount source = new TimeUnitAmount(tests[i], timeUnit);
+                String formatted = format.format(source);
+                //System.out.println(formatted);
+                logln(tests[i] + " => " + formatted);
+                try {
+                    TimeUnitAmount result = (TimeUnitAmount) format.parseObject(formatted);
+                    if (result == null || !source.equals(result)) {
+                        errln("No round trip: " + source + " => " + formatted + " => " + result);
+                    }
+                } catch (ParseException e) {
+                    errln(e.getMessage());
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt b/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt
new file mode 100644
index 0000000..d9ffead
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt
@@ -0,0 +1,165 @@
+#--------------------------------------------------------------------
+# Copyright (c) 2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+America/Atka ; America/Adak
+America/Ensenada ; America/Tijuana
+America/Fort_Wayne ; America/Indianapolis
+America/Indiana/Indianapolis ; America/Indianapolis
+America/Kentucky/Louisville ; America/Louisville
+America/Knox_IN ; America/Indiana/Knox
+America/Porto_Acre ; America/Rio_Branco
+America/Rosario ; America/Cordoba
+America/Shiprock ; America/Denver
+America/Virgin ; America/St_Thomas
+Antarctica/South_Pole ; Antarctica/McMurdo
+Arctic/Longyearbyen ; Europe/Oslo
+Asia/Ashkhabad ; Asia/Ashgabat
+Asia/Chungking ; Asia/Chongqing
+Asia/Dacca ; Asia/Dhaka
+Asia/Istanbul ; Europe/Istanbul
+Asia/Macao ; Asia/Macau
+Asia/Tel_Aviv ; Asia/Jerusalem
+Asia/Thimbu ; Asia/Thimphu
+Asia/Ujung_Pandang ; Asia/Makassar
+Asia/Ulan_Bator ; Asia/Ulaanbaatar
+#Atlantic/Jan_Mayen ; Europe/Oslo
+Australia/ACT ; Australia/Sydney
+Australia/Canberra ; Australia/Sydney
+Australia/LHI ; Australia/Lord_Howe
+Australia/NSW ; Australia/Sydney
+Australia/North ; Australia/Darwin
+Australia/Queensland ; Australia/Brisbane
+Australia/South ; Australia/Adelaide
+Australia/Tasmania ; Australia/Hobart
+Australia/Victoria ; Australia/Melbourne
+Australia/West ; Australia/Perth
+Australia/Yancowinna ; Australia/Broken_Hill
+Brazil/Acre ; America/Porto_Acre
+Brazil/DeNoronha ; America/Noronha
+Brazil/East ; America/Sao_Paulo
+Brazil/West ; America/Manaus
+CST6CDT ; America/Chicago
+Canada/Atlantic ; America/Halifax
+Canada/Central ; America/Winnipeg
+Canada/East-Saskatchewan ; America/Regina
+Canada/Eastern ; America/Toronto
+Canada/Mountain ; America/Edmonton
+Canada/Newfoundland ; America/St_Johns
+Canada/Pacific ; America/Vancouver
+Canada/Saskatchewan ; America/Regina
+Canada/Yukon ; America/Whitehorse
+Chile/Continental ; America/Santiago
+Chile/EasterIsland ; Pacific/Easter
+Cuba ; America/Havana
+EST ; America/Indianapolis
+EST5EDT ; America/New_York
+Egypt ; Africa/Cairo
+Eire ; Europe/Dublin
+Etc/GMT+0 ; Etc/GMT
+Etc/GMT-0 ; Etc/GMT
+Etc/GMT0 ; Etc/GMT
+Etc/Greenwich ; Etc/GMT
+Etc/Universal ; Etc/UTC
+Etc/Zulu ; Etc/UTC
+#Europe/Bratislava ; Europe/Prague
+#Europe/Ljubljana ; Europe/Belgrade
+Europe/Nicosia ; Asia/Nicosia
+#Europe/San_Marino ; Europe/Rome
+#Europe/Sarajevo ; Europe/Belgrade
+#Europe/Skopje ; Europe/Belgrade
+Europe/Tiraspol ; Europe/Chisinau
+#Europe/Vatican ; Europe/Rome
+#Europe/Zagreb ; Europe/Belgrade
+GB ; Europe/London
+GB-Eire ; Europe/London
+GMT ; Etc/GMT
+GMT+0 ; Etc/GMT+0
+GMT-0 ; Etc/GMT-0
+GMT0 ; Etc/GMT0
+Greenwich ; Etc/Greenwich
+HST ; Pacific/Honolulu
+Hongkong ; Asia/Hong_Kong
+Iceland ; Atlantic/Reykjavik
+Iran ; Asia/Tehran
+Israel ; Asia/Jerusalem
+Jamaica ; America/Jamaica
+Japan ; Asia/Tokyo
+Kwajalein ; Pacific/Kwajalein
+Libya ; Africa/Tripoli
+MST ; America/Phoenix
+MST7MDT ; America/Denver
+Mexico/BajaNorte ; America/Tijuana
+Mexico/BajaSur ; America/Mazatlan
+Mexico/General ; America/Mexico_City
+Mideast/Riyadh87 ; Asia/Riyadh87
+Mideast/Riyadh88 ; Asia/Riyadh88
+Mideast/Riyadh89 ; Asia/Riyadh89
+NZ ; Pacific/Auckland
+NZ-CHAT ; Pacific/Chatham
+Navajo ; America/Denver
+PRC ; Asia/Shanghai
+PST8PDT ; America/Los_Angeles
+Pacific/Samoa ; Pacific/Pago_Pago
+Poland ; Europe/Warsaw
+Portugal ; Europe/Lisbon
+ROC ; Asia/Taipei
+ROK ; Asia/Seoul
+Singapore ; Asia/Singapore
+SystemV/AST4 ; America/Puerto_Rico
+SystemV/AST4ADT ; America/Halifax
+SystemV/CST6 ; America/Regina
+SystemV/CST6CDT ; America/Chicago
+SystemV/EST5 ; America/Indianapolis
+SystemV/EST5EDT ; America/New_York
+SystemV/HST10 ; Pacific/Honolulu
+SystemV/MST7 ; America/Phoenix
+SystemV/MST7MDT ; America/Denver
+SystemV/PST8 ; Pacific/Pitcairn
+SystemV/PST8PDT ; America/Los_Angeles
+SystemV/YST9 ; Pacific/Gambier
+SystemV/YST9YDT ; America/Anchorage
+Turkey ; Europe/Istanbul
+UCT ; Etc/UCT
+US/Alaska ; America/Anchorage
+US/Aleutian ; America/Adak
+US/Arizona ; America/Phoenix
+US/Central ; America/Chicago
+US/East-Indiana ; America/Indianapolis
+US/Eastern ; America/New_York
+US/Hawaii ; Pacific/Honolulu
+US/Indiana-Starke ; America/Indiana/Knox
+US/Michigan ; America/Detroit
+US/Mountain ; America/Denver
+US/Pacific ; America/Los_Angeles
+US/Pacific-New ; America/Los_Angeles
+US/Samoa ; Pacific/Pago_Pago
+UTC ; Etc/UTC
+Universal ; Etc/Universal
+W-SU ; Europe/Moscow
+Zulu ; Etc/Zulu
+ACT ; Australia/Darwin
+AET ; Australia/Sydney
+AGT ; America/Buenos_Aires
+ART ; Africa/Cairo
+AST ; America/Anchorage
+BET ; America/Sao_Paulo
+BST ; Asia/Dhaka
+CAT ; Africa/Harare
+CNT ; America/St_Johns
+CST ; America/Chicago
+CTT ; Asia/Shanghai
+EAT ; Africa/Addis_Ababa
+ECT ; Europe/Paris
+IET ; America/Indianapolis
+IST ; Asia/Calcutta
+JST ; Asia/Tokyo
+MIT ; Pacific/Apia
+NET ; Asia/Yerevan
+NST ; Pacific/Auckland
+PLT ; Asia/Karachi
+PNT ; America/Phoenix
+PRT ; America/Puerto_Rico
+PST ; America/Los_Angeles
+SST ; Pacific/Guadalcanal
+VST ; Asia/Saigon
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java b/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
new file mode 100644
index 0000000..2214ad5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
@@ -0,0 +1,342 @@
+/*
+ ********************************************************************************
+ * Copyright (C) 2007-2009, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                             *
+ ********************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+
+public class TimeZoneFormatTest extends com.ibm.icu.dev.test.TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneFormatTest().run(args);
+    }
+
+    private static final String[] PATTERNS = {"z", "zzzz", "Z", "ZZZZ", "v", "vvvv", "V", "VVVV"};
+
+    /*
+     * Test case for checking if a TimeZone is properly set in the result calendar
+     * and if the result TimeZone has the expected behavior.
+     */
+    public void TestTimeZoneRoundTrip() {
+        TimeZone unknownZone = new SimpleTimeZone(-31415, "Etc/Unknown");
+        int badDstOffset = -1234;
+        int badZoneOffset = -2345;
+
+        int[][] testDateData = {
+            {2007, 1, 15},
+            {2007, 6, 15},
+            {1990, 1, 15},
+            {1990, 6, 15},
+            {1960, 1, 15},
+            {1960, 6, 15},
+        };
+
+        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+        cal.clear();
+
+        // Set up rule equivalency test range
+        long low, high;
+        cal.set(1900, 0, 1);
+        low = cal.getTimeInMillis();
+        cal.set(2040, 0, 1);
+        high = cal.getTimeInMillis();
+
+        // Set up test dates
+        Date[] DATES = new Date[testDateData.length];
+        cal.clear();
+        for (int i = 0; i < DATES.length; i++) {
+            cal.set(testDateData[i][0], testDateData[i][1], testDateData[i][2]);
+            DATES[i] = cal.getTime();
+        }
+
+        // Set up test locales
+        ULocale[] LOCALES = null;
+        if (getInclusion() > 5) {
+            LOCALES = ULocale.getAvailableLocales();
+        } else {
+            LOCALES = new ULocale[] {new ULocale("en"), new ULocale("en_CA"), new ULocale("fr"), new ULocale("zh_Hant")};
+        }
+
+        String[] tzids = TimeZone.getAvailableIDs();
+        int[] inOffsets = new int[2];
+        int[] outOffsets = new int[2];
+
+        // Run the roundtrip test
+        for (int locidx = 0; locidx < LOCALES.length; locidx++) {
+            for (int patidx = 0; patidx < PATTERNS.length; patidx++) {
+                SimpleDateFormat sdf = new SimpleDateFormat(PATTERNS[patidx], LOCALES[locidx]);
+
+                for (int tzidx = 0; tzidx < tzids.length; tzidx++) {
+                    TimeZone tz = TimeZone.getTimeZone(tzids[tzidx]);
+
+                    for (int datidx = 0; datidx < DATES.length; datidx++) {
+                        // Format
+                        sdf.setTimeZone(tz);
+                        String tzstr = sdf.format(DATES[datidx]);
+
+                        // Before parse, set unknown zone to SimpleDateFormat instance
+                        // just for making sure that it does not depends on the time zone
+                        // originally set.
+                        sdf.setTimeZone(unknownZone);
+
+                        // Parse
+                        ParsePosition pos = new ParsePosition(0);
+                        Calendar outcal = Calendar.getInstance(unknownZone);
+                        outcal.set(Calendar.DST_OFFSET, badDstOffset);
+                        outcal.set(Calendar.ZONE_OFFSET, badZoneOffset);
+
+                        sdf.parse(tzstr, outcal, pos);
+
+                        // Check the result
+                        TimeZone outtz = outcal.getTimeZone();
+
+                        tz.getOffset(DATES[datidx].getTime(), false, inOffsets);
+                        outtz.getOffset(DATES[datidx].getTime(), false, outOffsets);
+
+                        if (PATTERNS[patidx].equals("VVVV")) {
+                            // Location: time zone rule must be preserved except
+                            // zones not actually associated with a specific location.
+                            // Time zones in this category do not have "/" in its ID.
+                            String canonicalID = TimeZone.getCanonicalID(tzids[tzidx]);
+                            if (canonicalID != null && !outtz.getID().equals(canonicalID)) {
+                                // Canonical ID did not match - check the rules
+                                if (!((BasicTimeZone)outtz).hasEquivalentTransitions(tz, low, high)) {
+                                    if (canonicalID.indexOf('/') == -1) {
+                                        logln("Canonical round trip failed (as expected); tz=" + tzids[tzidx]
+                                            + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                            + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                            + ", outtz=" + outtz.getID());
+                                    } else {
+                                        errln("Canonical round trip failed; tz=" + tzids[tzidx]
+                                            + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                            + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                            + ", outtz=" + outtz.getID());
+                                    }
+                                }
+                            }
+                        } else {
+                            // Check if localized GMT format or RFC format is used.
+                            int numDigits = 0;
+                            for (int n = 0; n < tzstr.length(); n++) {
+                                if (UCharacter.isDigit(tzstr.charAt(n))) {
+                                    numDigits++;
+                                }
+                            }
+
+                            if (numDigits >= 3) {
+                                // Localized GMT or RFC: total offset (raw + dst) must be preserved.
+                                int inOffset = inOffsets[0] + inOffsets[1];
+                                int outOffset = outOffsets[0] + outOffsets[1];
+                                if (inOffset != outOffset) {
+                                    errln("Offset round trip failed; tz=" + tzids[tzidx]
+                                        + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                        + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                        + ", inOffset=" + inOffset + ", outOffset=" + outOffset);
+                                }
+                            } else {
+                                // Specific or generic: raw offset must be preserved.
+                                if (inOffsets[0] != outOffsets[0]) {
+                                    errln("Raw offset round trip failed; tz=" + tzids[tzidx]
+                                        + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                        + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                        + ", inRawOffset=" + inOffsets[0] + ", outRawOffset=" + outOffsets[0]);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+
+    /*
+     * Test case of round trip time and text.  This test case detects every canonical TimeZone's
+     * rule transition since 1900 until 2020, then check if time around each transition can
+     * round trip as expected.
+     */
+    public void TestTimeRoundTrip() {
+
+        boolean TEST_ALL = "true".equalsIgnoreCase(getProperty("TimeZoneRoundTripAll"));
+
+        int startYear, endYear;
+
+        if (TEST_ALL || getInclusion() > 5) {
+            startYear = 1900;
+        } else {
+            startYear = 1990;
+        }
+
+        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+        endYear = cal.get(Calendar.YEAR) + 3;
+
+        cal.set(startYear, Calendar.JANUARY, 1);
+        final long START_TIME = cal.getTimeInMillis();
+
+        cal.set(endYear, Calendar.JANUARY, 1);
+        final long END_TIME = cal.getTimeInMillis();
+
+        // Whether each pattern is ambiguous at DST->STD local time overlap
+        final boolean[] AMBIGUOUS_DST_DECESSION = {false, false, false, false, true, true, false, true};
+        // Whether each pattern is ambiguous at STD->STD/DST->DST local time overlap
+        final boolean[] AMBIGUOUS_NEGATIVE_SHIFT = {true, true, false, false, true, true, true, true};
+
+        final String BASEPATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS";
+
+        ULocale[] LOCALES = null;
+        boolean REALLY_VERBOSE = false;
+
+        // timer for performance analysis
+        long[] times = new long[PATTERNS.length];
+        long timer;
+
+        if (TEST_ALL) {
+            // It may take about an hour for testing all locales
+            LOCALES = ULocale.getAvailableLocales();
+        } else if (getInclusion() > 5) {
+            LOCALES = new ULocale[] {
+                new ULocale("ar_EG"), new ULocale("bg_BG"), new ULocale("ca_ES"), new ULocale("da_DK"), new ULocale("de"),
+                new ULocale("de_DE"), new ULocale("el_GR"), new ULocale("en"), new ULocale("en_AU"), new ULocale("en_CA"),
+                new ULocale("en_US"), new ULocale("es"), new ULocale("es_ES"), new ULocale("es_MX"), new ULocale("fi_FI"),
+                new ULocale("fr"), new ULocale("fr_CA"), new ULocale("fr_FR"), new ULocale("he_IL"), new ULocale("hu_HU"),
+                new ULocale("it"), new ULocale("it_IT"), new ULocale("ja"), new ULocale("ja_JP"), new ULocale("ko"),
+                new ULocale("ko_KR"), new ULocale("nb_NO"), new ULocale("nl_NL"), new ULocale("nn_NO"), new ULocale("pl_PL"),
+                new ULocale("pt"), new ULocale("pt_BR"), new ULocale("pt_PT"), new ULocale("ru_RU"), new ULocale("sv_SE"),
+                new ULocale("th_TH"), new ULocale("tr_TR"), new ULocale("zh"), new ULocale("zh_Hans"), new ULocale("zh_Hans_CN"),
+                new ULocale("zh_Hant"), new ULocale("zh_Hant_HK"), new ULocale("zh_Hant_TW")
+            };
+        } else {
+            LOCALES = new ULocale[] {
+                new ULocale("en"),
+            };
+        }
+
+        SimpleDateFormat sdfGMT = new SimpleDateFormat(BASEPATTERN);
+        sdfGMT.setTimeZone(TimeZone.getTimeZone("Etc/GMT"));
+
+        long testCounts = 0;
+        long[] testTimes = new long[4];
+        boolean[] expectedRoundTrip = new boolean[4];
+        int testLen = 0;
+        for (int locidx = 0; locidx < LOCALES.length; locidx++) {
+            logln("Locale: " + LOCALES[locidx].toString());
+            for (int patidx = 0; patidx < PATTERNS.length; patidx++) {
+                logln("    pattern: " + PATTERNS[patidx]);
+                String pattern = BASEPATTERN + " " + PATTERNS[patidx];
+                SimpleDateFormat sdf = new SimpleDateFormat(pattern, LOCALES[locidx]);
+
+                String[] ids = TimeZone.getAvailableIDs();
+                for (int zidx = 0; zidx < ids.length; zidx++) {
+                    String id = TimeZone.getCanonicalID(ids[zidx]);
+                    if (id == null || !id.equals(ids[zidx])) {
+                        // Skip aliases
+                        continue;
+                    }
+                    BasicTimeZone btz = (BasicTimeZone)TimeZone.getTimeZone(ids[zidx], TimeZone.TIMEZONE_ICU);
+                    TimeZone tz = TimeZone.getTimeZone(ids[zidx]);
+                    sdf.setTimeZone(tz);
+
+                    long t = START_TIME;
+                    TimeZoneTransition tzt = null;
+                    boolean middle = true;
+                    while (t < END_TIME) {
+                        if (tzt == null) {
+                            testTimes[0] = t;
+                            expectedRoundTrip[0] = true;
+                            testLen = 1;
+                        } else {
+                            int fromOffset = tzt.getFrom().getRawOffset() + tzt.getFrom().getDSTSavings();
+                            int toOffset = tzt.getTo().getRawOffset() + tzt.getTo().getDSTSavings();
+                            int delta = toOffset - fromOffset;
+                            if (delta < 0) {
+                                boolean isDstDecession = tzt.getFrom().getDSTSavings() > 0 && tzt.getTo().getDSTSavings() == 0;
+                                testTimes[0] = t + delta - 1;
+                                expectedRoundTrip[0] = true;
+                                testTimes[1] = t + delta;
+                                expectedRoundTrip[1] = isDstDecession ?
+                                        !AMBIGUOUS_DST_DECESSION[patidx] : !AMBIGUOUS_NEGATIVE_SHIFT[patidx];
+                                testTimes[2] = t - 1;
+                                expectedRoundTrip[2] = isDstDecession ?
+                                        !AMBIGUOUS_DST_DECESSION[patidx] : !AMBIGUOUS_NEGATIVE_SHIFT[patidx];
+                                testTimes[3] = t;
+                                expectedRoundTrip[3] = true;
+                                testLen = 4;
+                            } else {
+                                testTimes[0] = t - 1;
+                                expectedRoundTrip[0] = true;
+                                testTimes[1] = t;
+                                expectedRoundTrip[1] = true;
+                                testLen = 2;
+                            }
+                        }
+                        for (int testidx = 0; testidx < testLen; testidx++) {
+                            testCounts++;
+                            timer = System.currentTimeMillis();
+                            String text = sdf.format(new Date(testTimes[testidx]));
+                            try {
+                                Date parsedDate = sdf.parse(text);
+                                long restime = parsedDate.getTime();
+                                if (restime != testTimes[testidx]) {
+                                    StringBuffer msg = new StringBuffer();
+                                    msg.append("Time round trip failed for ")
+                                        .append("tzid=").append(ids[zidx])
+                                        .append(", locale=").append(LOCALES[locidx])
+                                        .append(", pattern=").append(PATTERNS[patidx])
+                                        .append(", text=").append(text)
+                                        .append(", gmt=").append(sdfGMT.format(new Date(testTimes[testidx])))
+                                        .append(", time=").append(testTimes[testidx])
+                                        .append(", restime=").append(restime)
+                                        .append(", diff=").append(restime - testTimes[testidx]);
+                                    if (expectedRoundTrip[testidx]) {
+                                        errln("FAIL: " + msg.toString());
+                                    } else if (REALLY_VERBOSE) {
+                                        logln(msg.toString());
+                                    }
+                                }
+                            } catch (ParseException pe) {
+                                errln("FAIL: " + pe.getMessage());
+                            }
+                            times[patidx] += System.currentTimeMillis() - timer;
+                        }
+                        tzt = btz.getNextTransition(t, false);
+                        if (tzt == null) {
+                            break;
+                        }
+                        if (middle) {
+                            // Test the date in the middle of two transitions.
+                            t += (tzt.getTime() - t)/2;
+                            middle = false;
+                            tzt = null;
+                        } else {
+                            t = tzt.getTime();
+                        }
+                    }
+                }
+            }
+        }
+
+        long total = 0;
+        logln("### Elapsed time by patterns ###");
+        for (int i = 0; i < PATTERNS.length; i++) {
+            logln(times[i] + "ms (" + PATTERNS[i] + ")");
+            total += times[i];
+        }
+        logln("Total: " + total + "ms");
+        logln("Iteration: " + testCounts);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java b/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
new file mode 100644
index 0000000..81b575a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
@@ -0,0 +1,89 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.dev.test.format;
+
+import com.ibm.icu.text.*;
+import java.util.Locale;
+import java.io.*;
+
+/**
+ * @version     1.0
+ * @author Ram Viswanadha
+ */
+public class WriteNumberFormatSerialTestData {
+    static final String header="/*\n" +
+                               " *******************************************************************************\n"+
+                               " * Copyright (C) 2001, International Business Machines Corporation and         *\n"+
+                               " * others. All Rights Reserved.                                                *\n"+
+                               " *******************************************************************************\n"+
+                               " */\n\n"+
+                               "package com.ibm.icu.dev.test.format;\n\n"+
+                                
+                               "public class NumberFormatSerialTestData {\n"+
+                               "    //get Content\n"+
+                               "    public static byte[][] getContent() {\n"+
+                               "            return content;\n"+
+                               "    }\n";
+                              
+    static final String footer ="\n    final static byte[][] content = {generalInstance, currencyInstance, percentInstance, scientificInstance};\n"+
+                                "}\n";                           
+    public static void main(String[] args){
+        NumberFormat nf     = NumberFormat.getInstance(Locale.US);
+        NumberFormat nfc    = NumberFormat.getCurrencyInstance(Locale.US);
+        NumberFormat nfp     = NumberFormat.getPercentInstance(Locale.US);
+        NumberFormat nfsp     = NumberFormat.getScientificInstance(Locale.US);
+        
+        try{
+            FileOutputStream file = new FileOutputStream("NumberFormatSerialTestData.java");
+            file.write(header.getBytes());
+            write(file,(Object)nf,"generalInstance", "//NumberFormat.getInstance(Locale.US)");
+            write(file,(Object)nfc,"currencyInstance","//NumberFormat.getCurrencyInstance(Locale.US)");
+            write(file,(Object)nfp,"percentInstance","//NumberFormat.getPercentInstance(Locale.US)");
+            write(file,(Object)nfsp,"scientificInstance","//NumberFormat.getScientificInstance(Locale.US)");
+            file.write(footer.getBytes());            
+            file.close();
+        }catch( Exception e){
+            System.out.println(e.getMessage());
+            e.printStackTrace();
+        }
+    }
+    private static void write(FileOutputStream file,Object o ,String name,String comment){
+        try{
+            ByteArrayOutputStream bts =  new ByteArrayOutputStream();
+            ObjectOutputStream os = new ObjectOutputStream(bts);    
+            os.writeObject((Object)o);
+            os.flush();
+            os.close();
+            byte[] myArr = bts.toByteArray();
+            //String temp = new String(myArr);
+            System.out.println("    "+comment+ " :");
+            /*System.out.println("minimumIntegerDigits : "  + (temp.indexOf("minimumIntegerDigits")+"minimumIntegerDigits".length()));
+            System.out.println("maximumIntegerDigits : "  + (temp.indexOf("maximumIntegerDigits")+"maximumIntegerDigits".length()));
+            System.out.println("minimumFractionDigits : " + (temp.indexOf("minimumFractionDigits")+"minimumFractionDigits".length()));
+            System.out.println("maximumFractionDigits : " + (temp.indexOf("maximumFractionDigits")+"maximumFractionDigits".length()));
+            */
+            //file.write(myArr);
+            file.write(("\n    "+comment).getBytes());
+            file.write(new String("\n    static byte[] "+name+" = new byte[]{ \n").getBytes("UTF-8"));
+            file.write( "        ".getBytes());
+            for(int i=0; i<myArr.length; i++){
+                file.write(String.valueOf((int)myArr[i]).getBytes());
+                file.write( ", ".getBytes());
+                if((i+1)%20 == 0){
+                    file.write("\n".getBytes());
+                    file.write( "        ".getBytes());
+                }
+            }
+            file.write(new String("\n    };\n").getBytes("UTF-8"));
+        }catch( Exception e){
+            System.out.println(e.getMessage());
+            e.printStackTrace();
+        }
+    
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/impl/TestAll.java b/src/com/ibm/icu/dev/test/impl/TestAll.java
new file mode 100644
index 0000000..f66b855
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/impl/TestAll.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.impl;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super("com.ibm.icu.dev.test.util",
+              new String[] {
+                  "ICUServiceTest",
+                  "ICUServiceThreadTest",
+                  "ICUBinaryTest",
+                  "TextTrieMapTest"
+              },
+              "Test miscellaneous implementation utilities");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Impl";
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java b/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
new file mode 100644
index 0000000..725739e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
@@ -0,0 +1,484 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.iterator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.ReplaceableString;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+public class TestUCharacterIterator extends TestFmwk{
+
+    // constructor -----------------------------------------------------
+  
+    /**
+     * Constructor
+     */
+    public TestUCharacterIterator()
+    {
+    }
+  
+    // public methods --------------------------------------------------
+  
+    /**
+    * Testing cloning
+    */
+    public void TestClone() throws CloneNotSupportedException
+    {
+         UCharacterIterator iterator = UCharacterIterator.getInstance("testing");
+         UCharacterIterator cloned = (UCharacterIterator)iterator.clone();
+         int completed = 0;
+         while (completed != UCharacterIterator.DONE) {
+            completed = iterator.next();
+            if (completed != cloned.next()) {
+                errln("Cloned operation failed");
+            }
+         }
+    }
+    public void getText(UCharacterIterator iterator, String result){
+        /* test getText */
+        char[] buf= new char[1];
+        for(;;){
+            try{
+                iterator.getText(buf);
+                break;
+            }catch(IndexOutOfBoundsException e){
+                buf = new char[iterator.getLength()];
+            }
+        }
+        if(result.compareTo(new String(buf,0,iterator.getLength()))!=0){
+            errln("getText failed for iterator");
+        }
+    }
+    
+    /**
+     * Testing iteration
+     */
+    public void TestIteration()
+    {
+        UCharacterIterator iterator  = UCharacterIterator.getInstance(
+                                                       ITERATION_STRING_);
+        UCharacterIterator iterator2 = UCharacterIterator.getInstance(
+                                                       ITERATION_STRING_);
+        iterator.setToStart();                                               
+        if (iterator.current() != ITERATION_STRING_.charAt(0)) {
+            errln("Iterator failed retrieving first character");
+        }
+        iterator.setToLimit(); 
+        if (iterator.previous() != ITERATION_STRING_.charAt(
+                                       ITERATION_STRING_.length() - 1)) {
+            errln("Iterator failed retrieving last character");
+        }                                               
+        if (iterator.getLength() != ITERATION_STRING_.length()) {
+            errln("Iterator failed determining begin and end index");
+        }  
+        iterator2.setIndex(0);
+        iterator.setIndex(0);
+        int ch = 0;
+        while (ch != UCharacterIterator.DONE) {
+            int index = iterator2.getIndex();
+            ch = iterator2.nextCodePoint();
+            if (index != ITERATION_SUPPLEMENTARY_INDEX) {
+                if (ch != (int)iterator.next() && 
+                    ch != UCharacterIterator.DONE) {
+                    errln("Error mismatch in next() and nextCodePoint()"); 
+                }
+            }
+            else {
+                if (UTF16.getLeadSurrogate(ch) != iterator.next() ||
+                    UTF16.getTrailSurrogate(ch) != iterator.next()) {
+                    errln("Error mismatch in next and nextCodePoint for " +
+                          "supplementary characters");
+                }
+            }
+        }
+        iterator.setIndex(ITERATION_STRING_.length());
+        iterator2.setIndex(ITERATION_STRING_.length());
+        while (ch != UCharacterIterator.DONE) {
+            int index = iterator2.getIndex();
+            ch = iterator2.previousCodePoint();
+            if (index != ITERATION_SUPPLEMENTARY_INDEX) {
+                if (ch != (int)iterator.previous() && 
+                    ch != UCharacterIterator.DONE) {
+                    errln("Error mismatch in previous() and " +
+                          "previousCodePoint()"); 
+                }
+            }
+            else {
+                if (UTF16.getLeadSurrogate(ch) != iterator.previous() || 
+                    UTF16.getTrailSurrogate(ch) != iterator.previous()) {
+                    errln("Error mismatch in previous and " +
+                          "previousCodePoint for supplementary characters");
+                }
+            }
+        }
+    }
+    
+    public static void main(String[] arg)
+    {
+        try
+        {
+            TestUCharacterIterator test = new TestUCharacterIterator();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    
+    //Tests for new API for utf-16 support 
+    public void TestIterationUChar32() {
+        String text="\u0061\u0062\ud841\udc02\u20ac\ud7ff\ud842\udc06\ud801\udc00\u0061";
+        int c;
+        int i;
+        {
+            UCharacterIterator iter = UCharacterIterator.getInstance(text);
+    
+            String iterText = iter.getText();
+            if (!iterText.equals(text))
+              errln("iter.getText() failed");
+            
+            iter.setIndex(1);
+            if (iter.currentCodePoint() != UTF16.charAt(text,1))
+                errln("Iterator didn't start out in the right place.");
+    
+            iter.setToStart();
+            c=iter.currentCodePoint();
+            i=0;
+            i=iter.moveCodePointIndex(1);
+            c=iter.currentCodePoint();
+            if(c != UTF16.charAt(text,1) || i!=1)
+                errln("moveCodePointIndex(1) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,1)) + " i= " + i);
+    
+            i=iter.moveCodePointIndex(2);
+            c=iter.currentCodePoint();
+            if(c != UTF16.charAt(text,4) || i!=4)
+                errln("moveCodePointIndex(2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,4)) + " i= " + i);
+                
+            i=iter.moveCodePointIndex(-2);
+            c=iter.currentCodePoint();
+            if(c != UTF16.charAt(text,1) || i!=1)
+                 errln("moveCodePointIndex(-2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,1)) + " i= " + i);
+
+            iter.setToLimit();
+            i=iter.moveCodePointIndex(-2);
+            c=iter.currentCodePoint();
+            if(c != UTF16.charAt(text,(text.length()-3)) || i!=(text.length()-3))
+                errln("moveCodePointIndex(-2) didn't work correctly expected "+ hex(c) +" got "+hex(UTF16.charAt(text,(text.length()-3)) ) + " i= " + i);
+            
+            iter.setToStart();
+            c = iter.currentCodePoint();
+            i = 0;
+    
+            //testing first32PostInc, nextCodePointPostInc, setTostart
+            i = 0;
+            iter.setToStart();
+            c =iter.next();
+            if(c != UTF16.charAt(text,i))
+                errln("first32PostInc failed.  Expected->"+hex(UTF16.charAt(text,i))+" Got-> "+hex(c));
+            if(iter.getIndex() != UTF16.getCharCount(c) + i)
+                errln("getIndex() after first32PostInc() failed");
+    
+            iter.setToStart();
+            i=0;
+            if (iter.getIndex() != 0)
+                errln("setToStart failed");
+           
+            logln("Testing forward iteration...");
+            do {
+                if (c != UCharacterIterator.DONE)
+                    c = iter.nextCodePoint();
+    
+                if(c != UTF16.charAt(text,i))
+                    errln("Character mismatch at position "+i+", iterator has "+hex(c)+", string has "+hex(UTF16.charAt(text,i)));
+    
+                i+=UTF16.getCharCount(c);
+                if(iter.getIndex() != i)
+                    errln("getIndex() aftr nextCodePointPostInc() isn't working right");
+                c = iter.currentCodePoint();                   
+                if( c!=UCharacterIterator.DONE && c != UTF16.charAt(text,i))
+                    errln("current() after nextCodePointPostInc() isn't working right");
+
+            } while (c!=UCharacterIterator.DONE);
+            c=iter.nextCodePoint();
+            if(c!= UCharacterIterator.DONE)
+                errln("nextCodePointPostInc() didn't return DONE at the beginning");
+    
+    
+        }
+    }  
+    
+    class UCharIterator {
+    
+       public UCharIterator(int[] src, int len, int index){
+            
+            s=src;
+            length=len;
+            i=index;
+       }
+    
+        public int current() {
+            if(i<length) {
+                return s[i];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int next() {
+            if(i<length) {
+                return s[i++];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int previous() {
+            if(i>0) {
+                return s[--i];
+            } else {
+                return -1;
+            }
+        }
+    
+        public int getIndex() {
+            return i;
+        }
+    
+        private int[] s;
+        private int length, i;
+    }
+    public void TestPreviousNext(){
+        // src and expect strings
+        char src[]={
+                UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+                UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+                0xc4,
+                0x1ed0
+            };
+        // iterators
+        UCharacterIterator iter1 = UCharacterIterator.getInstance(new ReplaceableString(new String(src)));
+        UCharacterIterator iter2 = UCharacterIterator.getInstance(src/*char array*/);
+        UCharacterIterator iter3 = UCharacterIterator.getInstance(new StringCharacterIterator(new String(src)));
+        UCharacterIterator iter4 = UCharacterIterator.getInstance(new StringBuffer(new String(src)));
+        previousNext(iter1);
+        previousNext(iter2);
+        previousNext(iter3);
+        previousNext(iter4);
+        getText(iter1,new String(src));
+        getText(iter2,new String(src));
+        getText(iter3,new String(src));
+        /* getCharacterIterator */
+        CharacterIterator citer1 = iter1.getCharacterIterator();
+        CharacterIterator citer2 = iter2.getCharacterIterator();
+        CharacterIterator citer3 = iter3.getCharacterIterator();
+        if(citer1.first() !=iter1.current()){
+            errln("getCharacterIterator for iter1 failed");
+        }
+        if(citer2.first() !=iter2.current()){
+            errln("getCharacterIterator for iter2 failed");
+        }
+        if(citer3.first() !=iter3.current()){
+            errln("getCharacterIterator for iter3 failed");
+        }
+        /* Test clone()  && moveIndex()*/
+        try{
+            UCharacterIterator clone1 = (UCharacterIterator)iter1.clone();
+            UCharacterIterator clone2 = (UCharacterIterator)iter2.clone();
+            UCharacterIterator clone3 = (UCharacterIterator)iter3.clone();
+            if(clone1.moveIndex(3)!=iter1.moveIndex(3)){
+                errln("moveIndex for iter1 failed");
+            }
+            if(clone2.moveIndex(3)!=iter2.moveIndex(3)){
+                errln("moveIndex for iter2 failed");
+            }
+            if(clone3.moveIndex(3)!=iter3.moveIndex(3)){
+                errln("moveIndex for iter1 failed");
+            }
+        }catch (Exception e){
+            errln("could not clone the iterator");
+        }
+    }
+    public void previousNext(UCharacterIterator iter) {
+
+        int expect[]={
+            0x2f999,
+            0x1d15f,
+            0xc4,
+            0x1ed0
+        };
+    
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,0,
+            1,1,
+            2,
+            3,
+            4 //needed 
+        };
+    
+        // initial indexes into the src and expect strings
+        
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=2;
+        
+    
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+    
+        
+        UCharIterator iter32 = new UCharIterator(expect, expect.length, 
+                                                     EXPECT_MIDDLE);
+    
+        int c1, c2;
+        char m;
+    
+        // initially set the indexes into the middle of the strings
+        iter.setIndex(SRC_MIDDLE);
+    
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previousCodePoint();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.currentCodePoint();
+                c2=iter32.current();
+            } else  {// m=='+' 
+                c1=iter.nextCodePoint();
+                c2=iter32.next();
+            }
+    
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+    
+            // compare indexes
+            if(expectIndex[iter.getIndex()]!=iter32.getIndex()) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+    }
+    public void TestUCharacterIteratorWrapper(){
+        String source ="asdfasdfjoiuyoiuy2341235679886765";
+        UCharacterIterator it = UCharacterIterator.getInstance(source);
+        CharacterIterator wrap_ci = it.getCharacterIterator();
+        CharacterIterator ci = new StringCharacterIterator(source);
+        wrap_ci.setIndex(10);
+        ci.setIndex(10);
+        String moves="0+0+0--0-0-+++0--+++++++0--------++++0000----0-";
+        int c1, c2;
+        char m;
+        int movesIndex =0;
+        
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=wrap_ci.previous();
+                c2=ci.previous();
+            } else if(m=='0') {
+                c1=wrap_ci.current();
+                c2=ci.current();
+            } else  {// m=='+' 
+                c1=wrap_ci.next();
+                c2=ci.next();
+            }
+    
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+    
+            // compare indexes
+            if(wrap_ci.getIndex()!=ci.getIndex()) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +wrap_ci.getIndex()
+                      +" expected "+ ci.getIndex());
+                break;
+            }
+        }
+        if(ci.first()!=wrap_ci.first()){
+            errln("CharacterIteratorWrapper.first() failed. expected: " + ci.first() + " got: " +wrap_ci.first());
+        }
+        if(ci.last()!=wrap_ci.last()){
+            errln("CharacterIteratorWrapper.last() failed expected: " + ci.last() + " got: " +wrap_ci.last());
+        }
+        if(ci.getBeginIndex()!=wrap_ci.getBeginIndex()){
+            errln("CharacterIteratorWrapper.getBeginIndex() failed expected: " + ci.getBeginIndex() + " got: " +wrap_ci.getBeginIndex());
+        }
+        if(ci.getEndIndex()!=wrap_ci.getEndIndex()){
+            errln("CharacterIteratorWrapper.getEndIndex() failed expected: " + ci.getEndIndex() + " got: " +wrap_ci.getEndIndex());
+        }
+        try{
+            CharacterIterator cloneWCI = (CharacterIterator) wrap_ci.clone();
+            if(wrap_ci.getIndex()!=cloneWCI.getIndex()){
+                errln("CharacterIteratorWrapper.clone() failed expected: " +wrap_ci.getIndex() + " got: " + cloneWCI.getIndex());
+            }
+        }catch(Exception e){
+             errln("CharacterIterator.clone() failed");
+        }
+    }
+    // private data members ---------------------------------------------
+    
+    private static final String ITERATION_STRING_ =
+                                        "Testing 1 2 3 \ud800\udc00 456";
+    private static final int ITERATION_SUPPLEMENTARY_INDEX = 14;
+    
+    public void TestJitterbug1952(){
+        //test previous code point
+        char[] src = new char[]{ '\uDC00','\uD800','\uDC01','\uD802','\uDC02','\uDC03'};
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        iter.setIndex(1);
+        int ch;
+        // this should never go into a infinite loop
+        // if it does then we have a problem
+        while((ch=iter.previousCodePoint())!=UCharacterIterator.DONE){
+            if(ch!=0xDc00){
+                errln("iter.previousCodePoint() failed");
+            }
+        }
+        iter.setIndex(5);
+        while((ch=iter.nextCodePoint()) !=UCharacterIterator.DONE){
+            if(ch!= 0xDC03){
+                errln("iter.nextCodePoint() failed");
+            } 
+        }      
+    }
+        
+}
diff --git a/src/com/ibm/icu/dev/test/lang/TestAll.java b/src/com/ibm/icu/dev/test/lang/TestAll.java
new file mode 100644
index 0000000..6e72fe1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestAll.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run character property tests.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] { 
+                  "TestCharacter", 
+                  "TestUScript", 
+                  "TestUScriptRun" 
+              },
+              "Character and Script Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Property";
+}
diff --git a/src/com/ibm/icu/dev/test/lang/TestCharacter.java b/src/com/ibm/icu/dev/test/lang/TestCharacter.java
new file mode 100644
index 0000000..3a4f0b3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestCharacter.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+public class TestCharacter extends TestGroup {
+    public static void main(String[] args) {
+        new TestCharacter().run(args);
+    }
+
+    public TestCharacter() {
+        super(
+              new String[] { 
+                  "UCharacterTest", 
+                  "UCharacterCaseTest",
+                  "UCharacterCategoryTest", 
+                  "UCharacterDirectionTest", 
+                  "UPropertyAliasesTest",
+                  "UTF16Test",
+                  "UCharacterSurrogateTest",
+                  "UCharacterThreadTest"
+              },
+              "Character Property and UTF16 Tests");
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/TestUScript.java b/src/com/ibm/icu/dev/test/lang/TestUScript.java
new file mode 100644
index 0000000..9665019
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestUScript.java
@@ -0,0 +1,410 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.util.Locale;
+
+public class TestUScript extends TestFmwk {
+
+    /**
+    * Constructor
+    */
+    public TestUScript()
+    {
+    }
+
+    public static void main(String[] args) throws Exception {
+        new TestUScript().run(args);
+    }
+    public void TestLocaleGetCode(){
+        final ULocale[] testNames={
+        /* test locale */
+        new ULocale("en"), new ULocale("en_US"),
+        new ULocale("sr"), new ULocale("ta") ,
+        new ULocale("te_IN"),
+        new ULocale("hi"),
+        new ULocale("he"), new ULocale("ar"),
+        new ULocale("abcde"),
+        new ULocale("abcde_cdef"),
+        new ULocale("iw")
+        };
+        final int[] expected ={
+                /* locales should return */
+                UScript.LATIN, UScript.LATIN,
+                UScript.CYRILLIC, UScript.TAMIL,
+                UScript.TELUGU,UScript.DEVANAGARI,
+                UScript.HEBREW, UScript.ARABIC,
+                UScript.INVALID_CODE,UScript.INVALID_CODE,
+                UScript.HEBREW
+        };
+        int i =0;
+        int numErrors =0;
+
+        for( ; i<testNames.length; i++){
+            int[] code = UScript.getCode(testNames[i]);
+
+            if(code==null){
+                if(expected[i]!=UScript.INVALID_CODE){
+                    logln("Error getting script code Got: null" + " Expected: " +expected[i] +" for name "+testNames[i]);
+                    numErrors++;
+                }
+                // getCode returns null if the code could not be found
+                continue;
+            }
+            if((code[0] != expected[i])){
+                logln("Error getting script code Got: " +code[0] + " Expected: " +expected[i] +" for name "+testNames[i]);
+                numErrors++;
+            }
+        }
+        reportDataErrors(numErrors);
+        
+        // 
+        ULocale defaultLoc = ULocale.getDefault(); 
+        ULocale esparanto = new ULocale("eo_DE");
+        ULocale.setDefault(esparanto);
+        int[] code = UScript.getCode(esparanto); 
+        if(code != null){
+            if( code[0] != UScript.LATIN){
+                errln("Did not get the expected script code for Esparanto");
+            }
+        }else{
+            warnln("Could not load the locale data.");
+        }
+        ULocale.setDefault(defaultLoc);
+    }
+
+    private void reportDataErrors(int numErrors) {
+        if (numErrors >0) {
+            // assume missing locale data, so not an error, just a warning
+            if (isModularBuild() || noData()) {
+                // if nodata is set don't even warn
+                warnln("Could not find locale data");
+            } else {
+                errln("encountered " + numErrors + " errors.");
+            }
+        }
+    }
+
+    public void TestMultipleCode(){
+        final String[] testNames = { "ja" ,"ko_KR","zh","zh_TW"};
+        final int[][] expected = {
+                                {UScript.KATAKANA,UScript.HIRAGANA,UScript.HAN},
+                                {UScript.HANGUL, UScript.HAN},
+                                {UScript.HAN},
+                                {UScript.HAN,UScript.BOPOMOFO}
+                              };
+
+        int numErrors = 0;
+        for(int i=0; i<testNames.length;i++){
+            int[] code = UScript.getCode(testNames[i]);
+            int[] expt = (int[]) expected[i];
+            if(code!=null){
+                for(int j =0; j< code.length;j++){
+                    if(code[j]!=expt[j]){
+                        numErrors++;
+                        logln("Error getting script code Got: " +code[j] + " Expected: " +expt[j] +" for name "+testNames[i]);
+                    }
+                }
+            }else{
+                numErrors++;
+                logln("Error getting script code for name "+testNames[i]);
+            }
+        }
+        reportDataErrors(numErrors);
+        
+        //cover UScript.getCode(Locale)
+        Locale[] testLocales = new Locale[] {
+            Locale.JAPANESE,
+            Locale.KOREA,
+            Locale.CHINESE,
+            Locale.TAIWAN };
+        logln("Testing UScript.getCode(Locale) ...");
+        numErrors = 0;
+        for(int i=0; i<testNames.length;i++){
+            logln("  Testing locale: " + testLocales[i].getDisplayName());
+            int[] code = UScript.getCode(testLocales[i]);
+            int[] expt = (int[]) expected[i];
+            if(code!=null){
+                for(int j =0; j< code.length;j++){
+                    if(code[j]!=expt[j]){
+                        numErrors++;
+                        logln("  Error getting script code Got: " +code[j] + " Expected: " +expt[j] +" for name "+testNames[i]);
+                    }
+                }
+            }else{
+                numErrors++;
+                logln("  Error getting script code for name "+testNames[i]);
+            }
+        }
+        reportDataErrors(numErrors);                 
+    }
+
+    public void TestGetCode(){
+
+        final String[] testNames={
+            /* test locale */
+            "en", "en_US", "sr", "ta", "gu", "te_IN", 
+            "hi", "he", "ar",
+            /* test abbr */
+            "Hani", "Hang","Hebr","Hira",
+            "Knda","Kana","Khmr","Lao",
+            "Latn",/*"Latf","Latg",*/
+            "Mlym", "Mong",
+
+            /* test names */
+            "CYRILLIC","DESERET","DEVANAGARI","ETHIOPIC","GEORGIAN",
+            "GOTHIC",  "GREEK",  "GUJARATI", "COMMON", "INHERITED",
+            /* test lower case names */
+            "malayalam", "mongolian", "myanmar", "ogham", "old-italic",
+            "oriya",     "runic",     "sinhala", "syriac","tamil",
+            "telugu",    "thaana",    "thai",    "tibetan",
+            /* test the bounds*/
+            "Cans", "arabic","Yi","Zyyy"
+        };
+        final int[] expected ={
+            /* locales should return */
+            UScript.LATIN, UScript.LATIN,
+            UScript.CYRILLIC, UScript.TAMIL, UScript.GUJARATI,
+            UScript.TELUGU,UScript.DEVANAGARI,
+            UScript.HEBREW, UScript.ARABIC,
+            /* abbr should return */
+            UScript.HAN, UScript.HANGUL, UScript.HEBREW, UScript.HIRAGANA,
+            UScript.KANNADA, UScript.KATAKANA, UScript.KHMER, UScript.LAO,
+            UScript.LATIN,/* UScript.LATIN, UScript.LATIN,*/
+            UScript.MALAYALAM, UScript.MONGOLIAN,
+            /* names should return */
+            UScript.CYRILLIC, UScript.DESERET, UScript.DEVANAGARI, UScript.ETHIOPIC, UScript.GEORGIAN,
+            UScript.GOTHIC, UScript.GREEK, UScript.GUJARATI, UScript.COMMON, UScript.INHERITED,
+            /* lower case names should return */
+            UScript.MALAYALAM, UScript.MONGOLIAN, UScript.MYANMAR, UScript.OGHAM, UScript.OLD_ITALIC,
+            UScript.ORIYA, UScript.RUNIC, UScript.SINHALA, UScript.SYRIAC, UScript.TAMIL,
+            UScript.TELUGU, UScript.THAANA, UScript.THAI, UScript.TIBETAN,
+            /* bounds */
+            UScript.CANADIAN_ABORIGINAL, UScript.ARABIC, UScript.YI, UScript.COMMON
+        };
+        int i =0;
+        int numErrors =0;
+
+        for( ; i<testNames.length; i++){
+            int[] code = UScript.getCode(testNames[i]);
+            if(code == null){
+                if(expected[i]==UScript.INVALID_CODE){
+                    // getCode returns null if the code could not be found
+                    continue;
+                }
+                // currently commented out until jitterbug#2678 is fixed
+                logln("Error getting script code Got: null" + " Expected: " +expected[i] +" for name "+testNames[i]);
+                numErrors++;
+                continue;
+            }
+            if((code[0] != expected[i])){
+                logln("Error getting script code Got: " +code[0] + " Expected: " +expected[i] +" for name "+testNames[i]);
+                numErrors++;
+            }
+        }
+        reportDataErrors(numErrors);
+    }
+
+    public void TestGetName(){
+
+        final int[] testCodes={
+            /* names should return */
+            UScript.CYRILLIC, UScript.DESERET, UScript.DEVANAGARI, UScript.ETHIOPIC, UScript.GEORGIAN,
+            UScript.GOTHIC, UScript.GREEK, UScript.GUJARATI,
+        };
+
+        final String[] expectedNames={
+
+            /* test names */
+            "Cyrillic","Deseret","Devanagari","Ethiopic","Georgian",
+            "Gothic",  "Greek",  "Gujarati",
+        };
+        int i =0;
+        int numErrors=0;
+        while(i< testCodes.length){
+            String scriptName  = UScript.getName(testCodes[i]);
+            if(!expectedNames[i].equals(scriptName)){
+                logln("Error getting abbreviations Got: " +scriptName +" Expected: "+expectedNames[i]);
+                numErrors++;
+            }
+            i++;
+        }
+        if(numErrors >0 ){
+            warnln("encountered " + numErrors + " errors in UScript.getName()");
+        }
+
+    }
+    public void TestGetShortName(){
+        final int[] testCodes={
+            /* abbr should return */
+            UScript.HAN, UScript.HANGUL, UScript.HEBREW, UScript.HIRAGANA,
+            UScript.KANNADA, UScript.KATAKANA, UScript.KHMER, UScript.LAO,
+            UScript.LATIN,
+            UScript.MALAYALAM, UScript.MONGOLIAN,
+        };
+
+        final String[] expectedAbbr={
+              /* test abbr */
+            "Hani", "Hang","Hebr","Hira",
+            "Knda","Kana","Khmr","Laoo",
+            "Latn",
+            "Mlym", "Mong",
+        };
+        int i=0;
+        int numErrors=0;
+        while(i<testCodes.length){
+            String  shortName = UScript.getShortName(testCodes[i]);
+            if(!expectedAbbr[i].equals(shortName)){
+                logln("Error getting abbreviations Got: " +shortName+ " Expected: " +expectedAbbr[i]);
+                numErrors++;
+            }
+            i++;
+        }
+        if(numErrors >0 ){
+            warnln("encountered " + numErrors + " errors in UScript.getShortName()");
+        }
+    }
+    public void TestGetScript(){
+        int codepoints[][] = new int[][] {
+                {0x0000FF9D, UScript.KATAKANA },
+                {0x0000FFBE, UScript.HANGUL },
+                {0x0000FFC7, UScript.HANGUL },
+                {0x0000FFCF, UScript.HANGUL },
+                {0x0000FFD7, UScript.HANGUL}, 
+                {0x0000FFDC, UScript.HANGUL},
+                {0x00010300, UScript.OLD_ITALIC},
+                {0x00010330, UScript.GOTHIC},
+                {0x0001034A, UScript.GOTHIC},
+                {0x00010400, UScript.DESERET},
+                {0x00010428, UScript.DESERET},
+                {0x0001D167, UScript.INHERITED},
+                {0x0001D17B, UScript.INHERITED},
+                {0x0001D185, UScript.INHERITED},
+                {0x0001D1AA, UScript.INHERITED},
+                {0x00020000, UScript.HAN},
+                {0x00000D02, UScript.MALAYALAM},
+                {0x00000D00, UScript.UNKNOWN},
+                {0x00000000, UScript.COMMON},
+                {0x0001D169, UScript.INHERITED },
+                {0x0001D182, UScript.INHERITED },
+                {0x0001D18B, UScript.INHERITED },
+                {0x0001D1AD, UScript.INHERITED },
+        };
+
+        int i =0;
+        int code = UScript.INVALID_CODE;
+        boolean passed = true;
+
+        while(i< codepoints.length){
+            code = UScript.getScript(codepoints[i][0]);
+
+            if(code != codepoints[i][1]){
+                logln("UScript.getScript for codepoint 0x"+ hex(codepoints[i][0])+" failed");
+                passed = false;
+            }
+
+            i++;
+        }
+        if(!passed){
+           errln("UScript.getScript failed.");
+        }
+    }
+    public void TestScriptNames(){
+        for(int i=0; i<UScript.CODE_LIMIT;i++){
+            String name = UScript.getName(i);
+            if(name.equals("") ){
+                errln("FAILED: getName for code : "+i);
+            }
+            String shortName= UScript.getShortName(i);
+            if(shortName.equals("")){
+                errln("FAILED: getName for code : "+i);
+            }
+        }
+    }
+    public void TestAllCodepoints(){
+        int code;
+        //String oldId="";
+        //String oldAbbrId="";
+        for( int i =0; i <= 0x10ffff; i++){
+          code =UScript.INVALID_CODE;
+          code = UScript.getScript(i);
+          if(code==UScript.INVALID_CODE){
+                errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+          }
+          String id =UScript.getName(code);
+          if(id.indexOf("INVALID")>=0){
+                 errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+          }
+          String abbr = UScript.getShortName(code);
+          if(abbr.indexOf("INV")>=0){
+                 errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+          }
+        }
+    }
+    public void TestNewCode(){
+        /*
+         * These script codes were originally added to ICU pre-3.6, so that ICU would
+         * have all ISO 15924 script codes. ICU was then based on Unicode 4.1.
+         * These script codes were added with only short names because we don't
+         * want to invent long names ourselves.
+         * Unicode 5 and later encode some of these scripts and give them long names.
+         * Whenever this happens, the long script names here need to be updated.
+         */
+        String[] expectedLong = new String[]{
+            "Balinese", "Batk", "Blis", "Brah", "Cham", "Cirt", "Cyrs", "Egyd", "Egyh", "Egyp", 
+            "Geok", "Hans", "Hant", "Hmng", "Hung", "Inds", "Java", "Kayah_Li", "Latf", "Latg", 
+            "Lepcha", "Lina", "Mand", "Maya", "Mero", "Nko", "Orkh", "Perm", "Phags_Pa", "Phoenician", 
+            "Plrd", "Roro", "Sara", "Syre", "Syrj", "Syrn", "Teng", "Vai", "Visp", "Cuneiform", 
+            "Zxxx", "Unknown",
+            "Carian", "Jpan", "Lana", "Lycian", "Lydian", "Ol_Chiki", "Rejang", "Saurashtra", "Sgnw", "Sundanese",
+            "Moon", "Mtei",
+
+            // ICU 4.0
+            "Armi", "Avst", "Cakm", "Kore", "Kthi", "Mani", "Phli", "Phlp", "Phlv", "Prti",
+            "Samr", "Tavt", "Zmth", "Zsym",
+        };
+        String[] expectedShort = new String[]{
+            "Bali", "Batk", "Blis", "Brah", "Cham", "Cirt", "Cyrs", "Egyd", "Egyh", "Egyp", 
+            "Geok", "Hans", "Hant", "Hmng", "Hung", "Inds", "Java", "Kali", "Latf", "Latg", 
+            "Lepc", "Lina", "Mand", "Maya", "Mero", "Nkoo", "Orkh", "Perm", "Phag", "Phnx", 
+            "Plrd", "Roro", "Sara", "Syre", "Syrj", "Syrn", "Teng", "Vaii", "Visp", "Xsux", 
+            "Zxxx", "Zzzz",
+            "Cari", "Jpan", "Lana", "Lyci", "Lydi", "Olck", "Rjng", "Saur", "Sgnw", "Sund",
+            "Moon", "Mtei", 
+
+            // ICU 4.0
+            "Armi", "Avst", "Cakm", "Kore", "Kthi", "Mani", "Phli", "Phlp", "Phlv", "Prti",
+            "Samr", "Tavt", "Zmth", "Zsym",
+        };
+        int j = 0;
+        int i = 0;
+        for(i=UScript.BALINESE; i<UScript.CODE_LIMIT; i++, j++){
+            String name = UScript.getName(i);
+            if(name==null || !name.equals(expectedLong[j])){
+                errln("UScript.getName failed for code"+ i + name +"!=" +expectedLong[j]);
+            }
+            name = UScript.getShortName(i);
+            if(name==null || !name.equals(expectedShort[j])){
+                errln("UScript.getShortName failed for code"+ i + name +"!=" +expectedShort[j]);
+            }
+        }
+        for(i=0; i<expectedLong.length; i++){
+            int[] ret = UScript.getCode(expectedShort[i]);
+            if(ret.length>1){
+                errln("UScript.getCode did not return expected number of codes for script"+ expectedShort[i]+". EXPECTED: 1 GOT: "+ ret.length);
+            }
+            if(ret[0]!= (UScript.BALINESE+i)){
+                errln("UScript.getCode did not return expected code for script"+ expectedShort[i]+". EXPECTED: "+ (UScript.BALINESE+i)+" GOT: %i\n"+ ret[0] );
+            }
+        }
+    }
+ }
diff --git a/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java b/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
new file mode 100644
index 0000000..86b8acf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
@@ -0,0 +1,402 @@
+/**
+*******************************************************************************
+* Copyright (C) 1999-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UScriptRun;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class TestUScriptRun extends TestFmwk
+{
+    public TestUScriptRun()
+    {
+        // nothing
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new TestUScriptRun().run(args);
+    }
+
+    private static final class RunTestData
+    {
+        String runText;
+        int    runScript;
+        
+        public RunTestData(String theText, int theScriptCode)
+        {
+            runText   = theText;
+            runScript = theScriptCode;
+        }
+    }
+    
+    private static final RunTestData[][] m_testData = {
+        {
+            new RunTestData("\u0020\u0946\u0939\u093F\u0928\u094D\u0926\u0940\u0020", UScript.DEVANAGARI),
+            new RunTestData("\u0627\u0644\u0639\u0631\u0628\u064A\u0629\u0020", UScript.ARABIC),
+            new RunTestData("\u0420\u0443\u0441\u0441\u043A\u0438\u0439\u0020", UScript.CYRILLIC),
+            new RunTestData("English (", UScript.LATIN),
+            new RunTestData("\u0E44\u0E17\u0E22", UScript.THAI),
+            new RunTestData(") ", UScript.LATIN),
+            new RunTestData("\u6F22\u5B75", UScript.HAN),
+            new RunTestData("\u3068\u3072\u3089\u304C\u306A\u3068", UScript.HIRAGANA),
+            new RunTestData("\u30AB\u30BF\u30AB\u30CA", UScript.KATAKANA),
+            new RunTestData("\uD801\uDC00\uD801\uDC01\uD801\uDC02\uD801\uDC03", UScript.DESERET),
+        },
+        {
+            new RunTestData("((((((((((abc))))))))))", UScript.LATIN)
+        }
+    };
+    
+    private static final String padding = "This string is used for padding...";
+    
+    private void CheckScriptRuns(UScriptRun scriptRun, int[] runStarts, RunTestData[] testData)
+    {
+        int run, runStart, runLimit;
+        int runScript;
+
+        /* iterate over all the runs */
+        run = 0;
+        while (scriptRun.next()) {
+            runStart  = scriptRun.getScriptStart();
+            runLimit  = scriptRun.getScriptLimit();
+            runScript = scriptRun.getScriptCode();
+            
+            if (runStart != runStarts[run]) {
+                errln("Incorrect start offset for run " + run + ": expected " + runStarts[run] + ", got " + runStart);
+            }
+
+            if (runLimit != runStarts[run + 1]) {
+                errln("Incorrect limit offset for run " + run + ": expected " + runStarts[run + 1] + ", got " + runLimit);
+            }
+
+            if (runScript != testData[run].runScript) {
+                errln("Incorrect script for run " + run + ": expected \"" + UScript.getName(testData[run].runScript) + "\", got \"" + UScript.getName(runScript) + "\"");
+            }
+            
+            run += 1;
+
+            /* stop when we've seen all the runs we expect to see */
+            if (run >= testData.length) {
+                break;
+            }
+        }
+
+        /* Complain if we didn't see then number of runs we expected */
+        if (run != testData.length) {
+            errln("Incorrect number of runs: expected " + testData.length + ", got " + run);
+        }
+    }
+
+    public void TestContstruction()
+    {
+        UScriptRun scriptRun = null;
+        char[] nullChars  = null, dummyChars  = {'d', 'u', 'm', 'm', 'y'};
+        String nullString = null, dummyString = new String(dummyChars);
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 0, 100);
+            errln("new UScriptRun(nullString, 0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 100, 0);
+            errln("new UScriptRun(nullString, 100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, 0, -100);
+            errln("new UScriptRun(nullString, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullString, -100, 0);
+            errln("new UScriptRun(nullString, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 0, 100);
+            errln("new UScriptRun(nullChars, 0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 100, 0);
+            errln("new UScriptRun(nullChars, 100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, 0, -100);
+            errln("new UScriptRun(nullChars, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(nullChars, -100, 0);
+            errln("new UScriptRun(nullChars, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 0, 6);
+            errln("new UScriptRun(dummyString, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 6, 0);
+            errln("new UScriptRun(dummy, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, 0, -100);
+            errln("new UScriptRun(dummyString, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyString, -100, 0);
+            errln("new UScriptRun(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 0, 6);
+            errln("new UScriptRun(dummyChars, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 6, 0);
+            errln("new UScriptRun(dummyChars, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, 0, -100);
+            errln("new UScriptRun(dummyChars, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        
+        try {
+            scriptRun = new UScriptRun(dummyChars, -100, 0);
+            errln("new UScriptRun(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UScriptRun failed as expected");
+        }
+        if(scriptRun!=null){
+            errln("Did not get the expected Exception");
+        }
+    }
+    
+    public void TestReset()
+    {
+        UScriptRun scriptRun = null;
+        char[] dummy = {'d', 'u', 'm', 'm', 'y'};
+        
+        try {
+            scriptRun = new UScriptRun();
+        } catch (IllegalArgumentException iae) {
+            errln("new UScriptRun() produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun.reset(0, 100);
+            errln("scriptRun.reset(0, 100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(100, 0);
+            errln("scriptRun.reset(100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(0, -100);
+            errln("scriptRun.reset(0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(-100, 0);
+            errln("scriptRun.reset(-100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, 6);
+            errln("scriptRun.reset(dummy, 0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 6, 0);
+            errln("scriptRun.reset(dummy, 6, 0) did not produce an IllegalArgumentException!");
+        }catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, -100);
+            errln("scriptRun.reset(dummy, 0, -100) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, -100, 0);
+            errln("scriptRun.reset(dummy, -100, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, dummy.length);
+        } catch (IllegalArgumentException iae) {
+            errln("scriptRun.reset(dummy, 0, dummy.length) produced an IllegalArgumentException!");
+        }
+        
+        
+        try {
+            scriptRun.reset(0, 6);
+            errln("scriptRun.reset(0, 6) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+        
+        try {
+            scriptRun.reset(6, 0);
+            errln("scriptRun.reset(6, 0) did not produce an IllegalArgumentException!");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: scriptRun.reset failed as expected");
+        }
+    }
+    
+    public void TestRuns()
+    {
+        for (int i = 0; i < m_testData.length; i += 1) {
+            RunTestData[] test = m_testData[i];
+            int stringLimit = 0;
+            int[] runStarts = new int[test.length + 1];
+            String testString = "";
+            UScriptRun scriptRun = null;
+        
+            /*
+             * Fill in the test string and the runStarts array.
+             */
+            for (int run = 0; run < test.length; run += 1) {
+                runStarts[run] = stringLimit;
+                stringLimit += test[run].runText.length();
+                testString  += test[run].runText;
+            }
+
+            /* The limit of the last run */ 
+            runStarts[test.length] = stringLimit;
+        
+            try {
+                scriptRun = new UScriptRun(testString);
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("new UScriptRun(testString) produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun.reset();
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset() on a valid UScriptRun produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun = new UScriptRun(testString.toCharArray());
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("new UScriptRun(testString.toCharArray()) produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun.reset();
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset() on a valid UScriptRun produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun = new UScriptRun();
+            
+                if (scriptRun.next()) {
+                    errln("scriptRun.next() on an empty UScriptRun returned true!");
+                }
+            } catch (IllegalArgumentException iae) {
+                errln("new UScriptRun() produced an IllegalArgumentException!");
+            }
+        
+            try {
+                scriptRun.reset(testString, 0, testString.length());
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset(testString, 0, testString.length) produced an IllegalArgumentException!");
+            }
+
+            try {
+                scriptRun.reset(testString.toCharArray(), 0, testString.length());
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset(testString.toCharArray(), 0, testString.length) produced an IllegalArgumentException!");
+            }
+
+            String paddedTestString = padding + testString + padding;
+            int startOffset = padding.length();
+            int count = testString.length();
+            
+            for (int run = 0; run < runStarts.length; run += 1) {
+                runStarts[run] += startOffset;
+            }
+            
+            try {
+                scriptRun.reset(paddedTestString, startOffset, count);
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset(paddedTestString, startOffset, count) produced an IllegalArgumentException!");
+            }
+
+            try {
+                scriptRun.reset(paddedTestString.toCharArray(), startOffset, count);
+                CheckScriptRuns(scriptRun, runStarts, test);
+            } catch (IllegalArgumentException iae) {
+                errln("scriptRun.reset(paddedTestString.toCharArray(), startOffset, count) produced an IllegalArgumentException!");
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
new file mode 100644
index 0000000..c5d6224
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
@@ -0,0 +1,952 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+
+package com.ibm.icu.dev.test.lang;
+
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.Utility;
+import java.util.Locale;
+import java.io.BufferedReader;
+import java.util.Vector;
+
+
+/**
+* <p>Testing character casing</p>
+* <p>Mostly following the test cases in strcase.cpp for ICU</p>
+* @author Syn Wee Quek
+* @since march 14 2002
+*/
+public final class UCharacterCaseTest extends TestFmwk
+{
+    // constructor -----------------------------------------------------------
+
+    /**
+     * Constructor
+     */
+    public UCharacterCaseTest()
+    {
+    }
+
+    // public methods --------------------------------------------------------
+
+    public static void main(String[] arg)
+    {
+        try
+        {
+            UCharacterCaseTest test = new UCharacterCaseTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Testing the uppercase and lowercase function of UCharacter
+     */
+    public void TestCharacter()
+    {
+        for (int i = 0; i < CHARACTER_LOWER_.length; i ++) {
+            if (UCharacter.isLetter(CHARACTER_LOWER_[i]) &&
+                !UCharacter.isLowerCase(CHARACTER_LOWER_[i])) {
+                errln("FAIL isLowerCase test for \\u" +
+                      hex(CHARACTER_LOWER_[i]));
+                break;
+            }
+            if (UCharacter.isLetter(CHARACTER_UPPER_[i]) &&
+                !(UCharacter.isUpperCase(CHARACTER_UPPER_[i]) ||
+                  UCharacter.isTitleCase(CHARACTER_UPPER_[i]))) {
+                errln("FAIL isUpperCase test for \\u" +
+                      hex(CHARACTER_UPPER_[i]));
+                break;
+            }
+            if (CHARACTER_LOWER_[i] !=
+                UCharacter.toLowerCase(CHARACTER_UPPER_[i]) ||
+                (CHARACTER_UPPER_[i] !=
+                UCharacter.toUpperCase(CHARACTER_LOWER_[i]) &&
+                CHARACTER_UPPER_[i] !=
+                UCharacter.toTitleCase(CHARACTER_LOWER_[i]))) {
+                errln("FAIL case conversion test for \\u" +
+                      hex(CHARACTER_UPPER_[i]) +
+                      " to \\u" + hex(CHARACTER_LOWER_[i]));
+                break;
+            }
+            if (CHARACTER_LOWER_[i] !=
+                UCharacter.toLowerCase(CHARACTER_LOWER_[i])) {
+                errln("FAIL lower case conversion test for \\u" +
+                      hex(CHARACTER_LOWER_[i]));
+                break;
+            }
+            if (CHARACTER_UPPER_[i] !=
+                UCharacter.toUpperCase(CHARACTER_UPPER_[i]) &&
+                CHARACTER_UPPER_[i] !=
+                UCharacter.toTitleCase(CHARACTER_UPPER_[i])) {
+                errln("FAIL upper case conversion test for \\u" +
+                      hex(CHARACTER_UPPER_[i]));
+                break;
+            }
+            logln("Ok    \\u" + hex(CHARACTER_UPPER_[i]) + " and \\u" +
+                  hex(CHARACTER_LOWER_[i]));
+        }
+    }
+
+    public void TestFolding()
+    {
+        // test simple case folding
+        for (int i = 0; i < FOLDING_SIMPLE_.length; i += 3) {
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], true) !=
+                FOLDING_SIMPLE_[i + 1]) {
+                errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) +
+                      ", true) should be \\u" + hex(FOLDING_SIMPLE_[i + 1]));
+            }
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], 
+                                    UCharacter.FOLD_CASE_DEFAULT) !=
+                                                      FOLDING_SIMPLE_[i + 1]) {
+                errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) +
+                      ", UCharacter.FOLD_CASE_DEFAULT) should be \\u" 
+                      + hex(FOLDING_SIMPLE_[i + 1]));
+            }
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], false) !=
+                FOLDING_SIMPLE_[i + 2]) {
+                errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) +
+                      ", false) should be \\u" + hex(FOLDING_SIMPLE_[i + 2]));
+            }
+            if (UCharacter.foldCase(FOLDING_SIMPLE_[i], 
+                                    UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I) !=
+                                    FOLDING_SIMPLE_[i + 2]) {
+                errln("FAIL: foldCase(\\u" + hex(FOLDING_SIMPLE_[i]) +
+                      ", UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I) should be \\u" 
+                      + hex(FOLDING_SIMPLE_[i + 2]));
+            }
+        }
+
+        // Test full string case folding with default option and separate
+        // buffers
+        if (!FOLDING_DEFAULT_[0].equals(UCharacter.foldCase(FOLDING_MIXED_[0], true))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[0]) +
+                  ", true)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[0], true)) +
+                  " should be " + prettify(FOLDING_DEFAULT_[0]));
+        }
+        
+        if (!FOLDING_DEFAULT_[0].equals(UCharacter.foldCase(FOLDING_MIXED_[0], UCharacter.FOLD_CASE_DEFAULT))) {
+                    errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[0]) +
+                          ", UCharacter.FOLD_CASE_DEFAULT)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[0], UCharacter.FOLD_CASE_DEFAULT))
+                          + " should be " + prettify(FOLDING_DEFAULT_[0]));
+                }
+
+        if (!FOLDING_EXCLUDE_SPECIAL_I_[0].equals(
+                            UCharacter.foldCase(FOLDING_MIXED_[0], false))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[0]) +
+                  ", false)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[0], false))
+                  + " should be " + prettify(FOLDING_EXCLUDE_SPECIAL_I_[0]));
+        }
+        
+        if (!FOLDING_EXCLUDE_SPECIAL_I_[0].equals(
+                                    UCharacter.foldCase(FOLDING_MIXED_[0], UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[0]) +
+                  ", UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[0], UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I))
+                  + " should be " + prettify(FOLDING_EXCLUDE_SPECIAL_I_[0]));
+        }
+
+        if (!FOLDING_DEFAULT_[1].equals(UCharacter.foldCase(FOLDING_MIXED_[1], true))) {
+           errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[1]) +
+                 ", true)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[1], true))
+                 + " should be " + prettify(FOLDING_DEFAULT_[1]));
+        }
+
+        if (!FOLDING_DEFAULT_[1].equals(UCharacter.foldCase(FOLDING_MIXED_[1], UCharacter.FOLD_CASE_DEFAULT))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[1]) +
+                         ", UCharacter.FOLD_CASE_DEFAULT)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[1], UCharacter.FOLD_CASE_DEFAULT))
+                         + " should be " + prettify(FOLDING_DEFAULT_[1]));
+        }
+        
+        // alternate handling for dotted I/dotless i (U+0130, U+0131)
+        if (!FOLDING_EXCLUDE_SPECIAL_I_[1].equals(
+                        UCharacter.foldCase(FOLDING_MIXED_[1], false))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[1]) +
+                  ", false)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[1], false))
+                  + " should be " + prettify(FOLDING_EXCLUDE_SPECIAL_I_[1]));
+        }
+        
+        if (!FOLDING_EXCLUDE_SPECIAL_I_[1].equals(
+                                UCharacter.foldCase(FOLDING_MIXED_[1], UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I))) {
+            errln("FAIL: foldCase(" + prettify(FOLDING_MIXED_[1]) +
+                  ", UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I)=" + prettify(UCharacter.foldCase(FOLDING_MIXED_[1], UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I))
+                  + " should be "
+                  + prettify(FOLDING_EXCLUDE_SPECIAL_I_[1]));
+        }
+    }
+
+    /**
+     * Testing the strings case mapping methods
+     */
+    public void TestUpper()
+    {
+        // uppercase with root locale and in the same buffer
+        if (!UPPER_ROOT_.equals(UCharacter.toUpperCase(UPPER_BEFORE_))) {
+            errln("Fail " + UPPER_BEFORE_ + " after uppercase should be " +
+                  UPPER_ROOT_ + " instead got " +
+                  UCharacter.toUpperCase(UPPER_BEFORE_));
+        }
+
+        // uppercase with turkish locale and separate buffers
+        if (!UPPER_TURKISH_.equals(UCharacter.toUpperCase(TURKISH_LOCALE_,
+                                                         UPPER_BEFORE_))) {
+            errln("Fail " + UPPER_BEFORE_ +
+                  " after turkish-sensitive uppercase should be " +
+                  UPPER_TURKISH_ + " instead of " +
+                  UCharacter.toUpperCase(TURKISH_LOCALE_, UPPER_BEFORE_));
+        }
+
+        // uppercase a short string with root locale
+        if (!UPPER_MINI_UPPER_.equals(UCharacter.toUpperCase(UPPER_MINI_))) {
+            errln("error in toUpper(root locale)=\"" + UPPER_MINI_ +
+                  "\" expected \"" + UPPER_MINI_UPPER_ + "\"");
+        }
+
+        if (!SHARED_UPPERCASE_TOPKAP_.equals(
+                       UCharacter.toUpperCase(SHARED_LOWERCASE_TOPKAP_))) {
+            errln("toUpper failed: expected \"" +
+                  SHARED_UPPERCASE_TOPKAP_ + "\", got \"" +
+                  UCharacter.toUpperCase(SHARED_LOWERCASE_TOPKAP_) + "\".");
+        }
+
+        if (!SHARED_UPPERCASE_TURKISH_.equals(
+                  UCharacter.toUpperCase(TURKISH_LOCALE_,
+                                         SHARED_LOWERCASE_TOPKAP_))) {
+            errln("toUpper failed: expected \"" +
+                  SHARED_UPPERCASE_TURKISH_ + "\", got \"" +
+                  UCharacter.toUpperCase(TURKISH_LOCALE_,
+                                     SHARED_LOWERCASE_TOPKAP_) + "\".");
+        }
+
+        if (!SHARED_UPPERCASE_GERMAN_.equals(
+                UCharacter.toUpperCase(GERMAN_LOCALE_,
+                                       SHARED_LOWERCASE_GERMAN_))) {
+            errln("toUpper failed: expected \"" + SHARED_UPPERCASE_GERMAN_
+                  + "\", got \"" + UCharacter.toUpperCase(GERMAN_LOCALE_,
+                                        SHARED_LOWERCASE_GERMAN_) + "\".");
+        }
+
+        if (!SHARED_UPPERCASE_GREEK_.equals(
+                UCharacter.toUpperCase(SHARED_LOWERCASE_GREEK_))) {
+            errln("toLower failed: expected \"" + SHARED_UPPERCASE_GREEK_ +
+                  "\", got \"" + UCharacter.toUpperCase(
+                                        SHARED_LOWERCASE_GREEK_) + "\".");
+        }
+    }
+
+    public void TestLower()
+    {
+        if (!LOWER_ROOT_.equals(UCharacter.toLowerCase(LOWER_BEFORE_))) {
+            errln("Fail " + LOWER_BEFORE_ + " after lowercase should be " +
+                  LOWER_ROOT_ + " instead of " +
+                  UCharacter.toLowerCase(LOWER_BEFORE_));
+        }
+
+        // lowercase with turkish locale
+        if (!LOWER_TURKISH_.equals(UCharacter.toLowerCase(TURKISH_LOCALE_,
+                                                          LOWER_BEFORE_))) {
+            errln("Fail " + LOWER_BEFORE_ +
+                  " after turkish-sensitive lowercase should be " +
+                  LOWER_TURKISH_ + " instead of " +
+                  UCharacter.toLowerCase(TURKISH_LOCALE_, LOWER_BEFORE_));
+        }
+        if (!SHARED_LOWERCASE_ISTANBUL_.equals(
+                     UCharacter.toLowerCase(SHARED_UPPERCASE_ISTANBUL_))) {
+            errln("1. toLower failed: expected \"" +
+                  SHARED_LOWERCASE_ISTANBUL_ + "\", got \"" +
+              UCharacter.toLowerCase(SHARED_UPPERCASE_ISTANBUL_) + "\".");
+        }
+
+        if (!SHARED_LOWERCASE_TURKISH_.equals(
+                UCharacter.toLowerCase(TURKISH_LOCALE_,
+                                       SHARED_UPPERCASE_ISTANBUL_))) {
+            errln("2. toLower failed: expected \"" +
+                  SHARED_LOWERCASE_TURKISH_ + "\", got \"" +
+                  UCharacter.toLowerCase(TURKISH_LOCALE_,
+                                SHARED_UPPERCASE_ISTANBUL_) + "\".");
+        }
+        if (!SHARED_LOWERCASE_GREEK_.equals(
+                UCharacter.toLowerCase(GREEK_LOCALE_,
+                                       SHARED_UPPERCASE_GREEK_))) {
+            errln("toLower failed: expected \"" + SHARED_LOWERCASE_GREEK_ +
+                  "\", got \"" + UCharacter.toLowerCase(GREEK_LOCALE_,
+                                        SHARED_UPPERCASE_GREEK_) + "\".");
+        }
+    }
+
+    public void TestTitleRegression() throws java.io.IOException {
+        UCaseProps props = new UCaseProps();
+        int type = props.getTypeOrIgnorable('\'');
+        assertEquals("Case Ignorable check", -1, type); // should be case-ignorable (-1)
+        UnicodeSet allCaseIgnorables = new UnicodeSet();
+        for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+            if (props.getTypeOrIgnorable(cp) < 0) {
+                allCaseIgnorables.add(cp);
+            }
+        }
+        logln(allCaseIgnorables.toString());
+        assertEquals("Titlecase check",
+                "The Quick Brown Fox Can't Jump Over The Lazy Dogs.",
+                UCharacter.toTitleCase(ULocale.ENGLISH, "THE QUICK BROWN FOX CAN'T JUMP OVER THE LAZY DOGS.", null));
+    }
+
+    public void TestTitle()
+    {
+         try{ 
+            for (int i = 0; i < TITLE_DATA_.length;) {
+                String test = TITLE_DATA_[i++];
+                String expected = TITLE_DATA_[i++];
+                ULocale locale = new ULocale(TITLE_DATA_[i++]);
+                int breakType = Integer.parseInt(TITLE_DATA_[i++]);
+                String optionsString = TITLE_DATA_[i++];
+                BreakIterator iter =
+                    breakType >= 0 ?
+                        BreakIterator.getBreakInstance(locale, breakType) :
+                        breakType == -2 ?
+                            // Open a trivial break iterator that only delivers { 0, length }
+                            // or even just { 0 } as boundaries.
+                            new RuleBasedBreakIterator(".*;") :
+                            null;
+                int options = 0;
+                if (optionsString.indexOf('L') >= 0) {
+                    options |= UCharacter.TITLECASE_NO_LOWERCASE;
+                }
+                if (optionsString.indexOf('A') >= 0) {
+                    options |= UCharacter.TITLECASE_NO_BREAK_ADJUSTMENT;
+                }
+                String result = UCharacter.toTitleCase(locale, test, iter, options);
+                if (!expected.equals(result)) {
+                    errln("titlecasing for " + prettify(test) + " (options " + options + ") should be " +
+                          prettify(expected) + " but got " +
+                          prettify(result));
+                }
+                if (options == 0) {
+                    result = UCharacter.toTitleCase(locale, test, iter);
+                    if (!expected.equals(result)) {
+                        errln("titlecasing for " + prettify(test) + " should be " +
+                              prettify(expected) + " but got " +
+                              prettify(result));
+                    }
+                }
+            }
+         }catch(Exception ex){
+            warnln("Could not find data for BreakIterators");
+         }
+    }
+
+    public void TestDutchTitle() {
+        ULocale LOC_DUTCH = new ULocale("nl");
+        int options = 0;
+        options |= UCharacter.TITLECASE_NO_LOWERCASE;
+        BreakIterator iter = BreakIterator.getWordInstance(LOC_DUTCH);
+
+        assertEquals("Dutch titlecase check in English",
+                "Ijssel Igloo Ijmuiden",
+                UCharacter.toTitleCase(ULocale.ENGLISH, "ijssel igloo IJMUIDEN", null));
+
+        assertEquals("Dutch titlecase check in Dutch",
+                "IJssel Igloo IJmuiden",
+                UCharacter.toTitleCase(LOC_DUTCH, "ijssel igloo IJMUIDEN", null));
+
+        iter.setText("ijssel igloo IjMUIdEN iPoD ijenough");
+        assertEquals("Dutch titlecase check in Dutch with nolowercase option",
+                "IJssel Igloo IJMUIdEN IPoD IJenough",
+                UCharacter.toTitleCase(LOC_DUTCH, "ijssel igloo IjMUIdEN iPoD ijenough", iter, options));
+    }
+
+    public void TestSpecial()
+    {
+        for (int i = 0; i < SPECIAL_LOCALES_.length; i ++) {
+            int    j      = i * 3;
+            Locale locale = SPECIAL_LOCALES_[i];
+            String str    = SPECIAL_DATA_[j];
+            if (locale != null) {
+                if (!SPECIAL_DATA_[j + 1].equals(
+                     UCharacter.toLowerCase(locale, str))) {
+                    errln("error lowercasing special characters " +
+                        hex(str) + " expected " + hex(SPECIAL_DATA_[j + 1])
+                        + " for locale " + locale.toString() + " but got " +
+                        hex(UCharacter.toLowerCase(locale, str)));
+                }
+                if (!SPECIAL_DATA_[j + 2].equals(
+                     UCharacter.toUpperCase(locale, str))) {
+                    errln("error uppercasing special characters " +
+                        hex(str) + " expected " + SPECIAL_DATA_[j + 2]
+                        + " for locale " + locale.toString() + " but got " +
+                        hex(UCharacter.toUpperCase(locale, str)));
+                }
+            }
+            else {
+                if (!SPECIAL_DATA_[j + 1].equals(
+                     UCharacter.toLowerCase(str))) {
+                    errln("error lowercasing special characters " +
+                        hex(str) + " expected " + SPECIAL_DATA_[j + 1] +
+                        " but got " +
+                        hex(UCharacter.toLowerCase(locale, str)));
+                }
+                if (!SPECIAL_DATA_[j + 2].equals(
+                     UCharacter.toUpperCase(locale, str))) {
+                    errln("error uppercasing special characters " +
+                        hex(str) + " expected " + SPECIAL_DATA_[j + 2] +
+                        " but got " +
+                        hex(UCharacter.toUpperCase(locale, str)));
+                }
+            }
+        }
+
+        // turkish & azerbaijani dotless i & dotted I
+        // remove dot above if there was a capital I before and there are no
+        // more accents above
+        if (!SPECIAL_DOTTED_LOWER_TURKISH_.equals(UCharacter.toLowerCase(
+                                        TURKISH_LOCALE_, SPECIAL_DOTTED_))) {
+            errln("error in dots.toLower(tr)=\"" + SPECIAL_DOTTED_ +
+                  "\" expected \"" + SPECIAL_DOTTED_LOWER_TURKISH_ +
+                  "\" but got " + UCharacter.toLowerCase(TURKISH_LOCALE_,
+                                                         SPECIAL_DOTTED_));
+        }
+        if (!SPECIAL_DOTTED_LOWER_GERMAN_.equals(UCharacter.toLowerCase(
+                                             GERMAN_LOCALE_, SPECIAL_DOTTED_))) {
+            errln("error in dots.toLower(de)=\"" + SPECIAL_DOTTED_ +
+                  "\" expected \"" + SPECIAL_DOTTED_LOWER_GERMAN_ +
+                  "\" but got " + UCharacter.toLowerCase(GERMAN_LOCALE_,
+                                                         SPECIAL_DOTTED_));
+        }
+
+        // lithuanian dot above in uppercasing
+        if (!SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_.equals(
+             UCharacter.toUpperCase(LITHUANIAN_LOCALE_, SPECIAL_DOT_ABOVE_))) {
+            errln("error in dots.toUpper(lt)=\"" + SPECIAL_DOT_ABOVE_ +
+                  "\" expected \"" + SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_ +
+                  "\" but got " + UCharacter.toUpperCase(LITHUANIAN_LOCALE_,
+                                                         SPECIAL_DOT_ABOVE_));
+        }
+        if (!SPECIAL_DOT_ABOVE_UPPER_GERMAN_.equals(UCharacter.toUpperCase(
+                                        GERMAN_LOCALE_, SPECIAL_DOT_ABOVE_))) {
+            errln("error in dots.toUpper(de)=\"" + SPECIAL_DOT_ABOVE_ +
+                  "\" expected \"" + SPECIAL_DOT_ABOVE_UPPER_GERMAN_ +
+                  "\" but got " + UCharacter.toUpperCase(GERMAN_LOCALE_,
+                                                         SPECIAL_DOT_ABOVE_));
+        }
+
+        // lithuanian adds dot above to i in lowercasing if there are more
+        // above accents
+        if (!SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_.equals(
+            UCharacter.toLowerCase(LITHUANIAN_LOCALE_,
+                                   SPECIAL_DOT_ABOVE_UPPER_))) {
+            errln("error in dots.toLower(lt)=\"" + SPECIAL_DOT_ABOVE_UPPER_ +
+                  "\" expected \"" + SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_ +
+                  "\" but got " + UCharacter.toLowerCase(LITHUANIAN_LOCALE_,
+                                                   SPECIAL_DOT_ABOVE_UPPER_));
+        }
+        if (!SPECIAL_DOT_ABOVE_LOWER_GERMAN_.equals(
+            UCharacter.toLowerCase(GERMAN_LOCALE_,
+                                   SPECIAL_DOT_ABOVE_UPPER_))) {
+            errln("error in dots.toLower(de)=\"" + SPECIAL_DOT_ABOVE_UPPER_ +
+                  "\" expected \"" + SPECIAL_DOT_ABOVE_LOWER_GERMAN_ +
+                  "\" but got " + UCharacter.toLowerCase(GERMAN_LOCALE_,
+                                                   SPECIAL_DOT_ABOVE_UPPER_));
+        }
+    }
+
+    /**
+     * Tests for case mapping in the file SpecialCasing.txt
+     * This method reads in SpecialCasing.txt file for testing purposes.
+     * A default path is provided relative to the src path, however the user
+     * could set a system property to change the directory path.<br>
+     * e.g. java -DUnicodeData="data_dir_path" com.ibm.dev.test.lang.UCharacterTest
+     */
+    public void TestSpecialCasingTxt()
+    {
+        try
+        {
+            // reading in the SpecialCasing file
+            BufferedReader input = TestUtil.getDataReader(
+                                                  "unicode/SpecialCasing.txt");
+            while (true)
+            {
+                String s = input.readLine();
+                if (s == null) {
+                    break;
+                }
+                if (s.length() == 0 || s.charAt(0) == '#') {
+                    continue;
+                }
+
+                String chstr[] = getUnicodeStrings(s);
+                StringBuffer strbuffer   = new StringBuffer(chstr[0]);
+                StringBuffer lowerbuffer = new StringBuffer(chstr[1]);
+                StringBuffer upperbuffer = new StringBuffer(chstr[3]);
+                Locale locale = null;
+                for (int i = 4; i < chstr.length; i ++) {
+                    String condition = chstr[i];
+                    if (Character.isLowerCase(chstr[i].charAt(0))) {
+                        // specified locale
+                        locale = new Locale(chstr[i], "");
+                    }
+                    else if (condition.compareToIgnoreCase("Not_Before_Dot")
+                                                      == 0) {
+                        // turns I into dotless i
+                    }
+                    else if (condition.compareToIgnoreCase(
+                                                      "More_Above") == 0) {
+                            strbuffer.append((char)0x300);
+                            lowerbuffer.append((char)0x300);
+                            upperbuffer.append((char)0x300);
+                    }
+                    else if (condition.compareToIgnoreCase(
+                                                "After_Soft_Dotted") == 0) {
+                            strbuffer.insert(0, 'i');
+                            lowerbuffer.insert(0, 'i');
+                            String lang = "";
+                            if (locale != null) {
+                                lang = locale.getLanguage();
+                            }
+                            if (lang.equals("tr") || lang.equals("az")) {
+                                // this is to be removed when 4.0 data comes out
+                                // and upperbuffer.insert uncommented
+                                // see jitterbug 2344
+                                chstr[i] = "After_I";
+                                strbuffer.deleteCharAt(0);
+                                lowerbuffer.deleteCharAt(0);
+                                i --;
+                                continue;
+                                // upperbuffer.insert(0, '\u0130');
+                            }
+                            else {
+                                upperbuffer.insert(0, 'I');
+                            }
+                    }
+                    else if (condition.compareToIgnoreCase(
+                                                      "Final_Sigma") == 0) {
+                            strbuffer.insert(0, 'c');
+                            lowerbuffer.insert(0, 'c');
+                            upperbuffer.insert(0, 'C');
+                    }
+                    else if (condition.compareToIgnoreCase("After_I") == 0) {
+                            strbuffer.insert(0, 'I');
+                            lowerbuffer.insert(0, 'i');
+                            String lang = "";
+                            if (locale != null) {
+                                lang = locale.getLanguage();
+                            }
+                            if (lang.equals("tr") || lang.equals("az")) {
+                                upperbuffer.insert(0, 'I');
+                            }
+                    }
+                }
+                chstr[0] = strbuffer.toString();
+                chstr[1] = lowerbuffer.toString();
+                chstr[3] = upperbuffer.toString();
+                if (locale == null) {
+                    if (!UCharacter.toLowerCase(chstr[0]).equals(chstr[1])) {
+                        errln(s);
+                        errln("Fail: toLowerCase for character " +
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[1]) + " but resulted in " +
+                              Utility.escape(UCharacter.toLowerCase(chstr[0])));
+                    }
+                    if (!UCharacter.toUpperCase(chstr[0]).equals(chstr[3])) {
+                        errln(s);
+                        errln("Fail: toUpperCase for character " +
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[3]) + " but resulted in " +
+                              Utility.escape(UCharacter.toUpperCase(chstr[0])));
+                    }
+                }
+                else {
+                    if (!UCharacter.toLowerCase(locale, chstr[0]).equals(
+                                                                   chstr[1])) {
+                        errln(s);
+                        errln("Fail: toLowerCase for character " +
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[1]) + " but resulted in " +
+                              Utility.escape(UCharacter.toLowerCase(locale,
+                                                                    chstr[0])));
+                    }
+                    if (!UCharacter.toUpperCase(locale, chstr[0]).equals(
+                                                                   chstr[3])) {
+                        errln(s);
+                        errln("Fail: toUpperCase for character " +
+                              Utility.escape(chstr[0]) + ", expected "
+                              + Utility.escape(chstr[3]) + " but resulted in " +
+                              Utility.escape(UCharacter.toUpperCase(locale,
+                                                                    chstr[0])));
+                    }
+                }
+            }
+            input.close();
+        }
+        catch (Exception e)
+        {
+          e.printStackTrace();
+        }
+    }
+
+    public void TestUpperLower()
+    {
+        int upper[] = {0x0041, 0x0042, 0x00b2, 0x01c4, 0x01c6, 0x01c9, 0x01c8,
+                        0x01c9, 0x000c};
+        int lower[] = {0x0061, 0x0062, 0x00b2, 0x01c6, 0x01c6, 0x01c9, 0x01c9,
+                        0x01c9, 0x000c};
+        String upperTest = "abcdefg123hij.?:klmno";
+        String lowerTest = "ABCDEFG123HIJ.?:KLMNO";
+
+        // Checks LetterLike Symbols which were previously a source of
+        // confusion [Bertrand A. D. 02/04/98]
+        for (int i = 0x2100; i < 0x2138; i ++) {
+            /* Unicode 5.0 adds lowercase U+214E (TURNED SMALL F) to U+2132 (TURNED CAPITAL F) */
+            if (i != 0x2126 && i != 0x212a && i != 0x212b && i!=0x2132) {
+                if (i != UCharacter.toLowerCase(i)) { // itself
+                    errln("Failed case conversion with itself: \\u"
+                            + Utility.hex(i, 4));
+                }
+                if (i != UCharacter.toUpperCase(i)) {
+                    errln("Failed case conversion with itself: \\u"
+                            + Utility.hex(i, 4));
+                }
+            }
+        }
+        for (int i = 0; i < upper.length; i ++) {
+            if (UCharacter.toLowerCase(upper[i]) != lower[i]) {
+                errln("FAILED UCharacter.tolower() for \\u"
+                        + Utility.hex(upper[i], 4)
+                        + " Expected \\u" + Utility.hex(lower[i], 4)
+                        + " Got \\u"
+                        + Utility.hex(UCharacter.toLowerCase(upper[i]), 4));
+            }
+        }
+        logln("testing upper lower");
+        for (int i = 0; i < upperTest.length(); i ++) {
+            logln("testing to upper to lower");
+            if (UCharacter.isLetter(upperTest.charAt(i)) &&
+                !UCharacter.isLowerCase(upperTest.charAt(i))) {
+                errln("Failed isLowerCase test at \\u"
+                        + Utility.hex(upperTest.charAt(i), 4));
+            }
+            else if (UCharacter.isLetter(lowerTest.charAt(i))
+                     && !UCharacter.isUpperCase(lowerTest.charAt(i))) {
+                errln("Failed isUpperCase test at \\u"
+                      + Utility.hex(lowerTest.charAt(i), 4));
+            }
+            else if (upperTest.charAt(i)
+                            != UCharacter.toLowerCase(lowerTest.charAt(i))) {
+                errln("Failed case conversion from \\u"
+                        + Utility.hex(lowerTest.charAt(i), 4) + " To \\u"
+                        + Utility.hex(upperTest.charAt(i), 4));
+            }
+            else if (lowerTest.charAt(i)
+                    != UCharacter.toUpperCase(upperTest.charAt(i))) {
+                errln("Failed case conversion : \\u"
+                        + Utility.hex(upperTest.charAt(i), 4) + " To \\u"
+                        + Utility.hex(lowerTest.charAt(i), 4));
+            }
+            else if (upperTest.charAt(i)
+                    != UCharacter.toLowerCase(upperTest.charAt(i))) {
+                errln("Failed case conversion with itself: \\u"
+                        + Utility.hex(upperTest.charAt(i)));
+            }
+            else if (lowerTest.charAt(i)
+                    != UCharacter.toUpperCase(lowerTest.charAt(i))) {
+                errln("Failed case conversion with itself: \\u"
+                        + Utility.hex(lowerTest.charAt(i)));
+            }
+        }
+        logln("done testing upper Lower");
+    }
+
+    // private data members - test data --------------------------------------
+
+    private static final Locale TURKISH_LOCALE_ = new Locale("tr", "TR");
+    private static final Locale GERMAN_LOCALE_ = new Locale("de", "DE");
+    private static final Locale GREEK_LOCALE_ = new Locale("el", "GR");
+    private static final Locale ENGLISH_LOCALE_ = new Locale("en", "US");
+    private static final Locale LITHUANIAN_LOCALE_ = new Locale("lt", "LT");
+
+    private static final int CHARACTER_UPPER_[] =
+                      {0x41, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+                       0x00b1, 0x00b2, 0xb3, 0x0048, 0x0049, 0x004a, 0x002e,
+                       0x003f, 0x003a, 0x004b, 0x004c, 0x4d, 0x004e, 0x004f,
+                       0x01c4, 0x01c8, 0x000c, 0x0000};
+    private static final int CHARACTER_LOWER_[] =
+                      {0x61, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+                       0x00b1, 0x00b2, 0xb3, 0x0068, 0x0069, 0x006a, 0x002e,
+                       0x003f, 0x003a, 0x006b, 0x006c, 0x6d, 0x006e, 0x006f,
+                       0x01c6, 0x01c9, 0x000c, 0x0000};
+
+    /*
+     * CaseFolding.txt says about i and its cousins:
+     *   0049; C; 0069; # LATIN CAPITAL LETTER I
+     *   0049; T; 0131; # LATIN CAPITAL LETTER I
+     *
+     *   0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+     *   0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+     * That's all.
+     * See CaseFolding.txt and the Unicode Standard for how to apply the case foldings.
+     */
+    private static final int FOLDING_SIMPLE_[] = {
+        // input, default, exclude special i
+        0x61,   0x61,  0x61,
+        0x49,   0x69,  0x131,
+        0x130,  0x130, 0x69,
+        0x131,  0x131, 0x131,
+        0xdf,   0xdf,  0xdf,
+        0xfb03, 0xfb03, 0xfb03,
+        0x1040e,0x10436,0x10436,
+        0x5ffff,0x5ffff,0x5ffff
+    };
+    private static final String FOLDING_MIXED_[] =
+                          {"\u0061\u0042\u0130\u0049\u0131\u03d0\u00df\ufb03\ud93f\udfff",
+                           "A\u00df\u00b5\ufb03\uD801\uDC0C\u0130\u0131"};
+    private static final String FOLDING_DEFAULT_[] =
+         {"\u0061\u0062\u0069\u0307\u0069\u0131\u03b2\u0073\u0073\u0066\u0066\u0069\ud93f\udfff",
+          "ass\u03bcffi\uD801\uDC34i\u0307\u0131"};
+    private static final String FOLDING_EXCLUDE_SPECIAL_I_[] =
+         {"\u0061\u0062\u0069\u0131\u0131\u03b2\u0073\u0073\u0066\u0066\u0069\ud93f\udfff",
+          "ass\u03bcffi\uD801\uDC34i\u0131"};
+    /**
+     * "IESUS CHRISTOS"
+     */
+    private static final String SHARED_UPPERCASE_GREEK_ =
+        "\u0399\u0395\u03a3\u03a5\u03a3\u0020\u03a7\u03a1\u0399\u03a3\u03a4\u039f\u03a3";
+    /**
+     * "iesus christos"
+     */
+    private static final String SHARED_LOWERCASE_GREEK_ =
+        "\u03b9\u03b5\u03c3\u03c5\u03c2\u0020\u03c7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c2";
+    private static final String SHARED_LOWERCASE_TURKISH_ =
+        "\u0069\u0073\u0074\u0061\u006e\u0062\u0075\u006c\u002c\u0020\u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0073\u0074\u0061\u006e\u0074\u0131\u006e\u006f\u0070\u006c\u0065\u0021";
+    private static final String SHARED_UPPERCASE_TURKISH_ =
+        "\u0054\u004f\u0050\u004b\u0041\u0050\u0049\u0020\u0050\u0041\u004c\u0041\u0043\u0045\u002c\u0020\u0130\u0053\u0054\u0041\u004e\u0042\u0055\u004c";
+    private static final String SHARED_UPPERCASE_ISTANBUL_ =
+                                          "\u0130STANBUL, NOT CONSTANTINOPLE!";
+    private static final String SHARED_LOWERCASE_ISTANBUL_ =
+                                          "i\u0307stanbul, not constantinople!";
+    private static final String SHARED_LOWERCASE_TOPKAP_ =
+                                          "topkap\u0131 palace, istanbul";
+    private static final String SHARED_UPPERCASE_TOPKAP_ =
+                                          "TOPKAPI PALACE, ISTANBUL";
+    private static final String SHARED_LOWERCASE_GERMAN_ =
+                                          "S\u00FC\u00DFmayrstra\u00DFe";
+    private static final String SHARED_UPPERCASE_GERMAN_ =
+                                          "S\u00DCSSMAYRSTRASSE";
+
+    private static final String UPPER_BEFORE_ =
+         "\u0061\u0042\u0069\u03c2\u00df\u03c3\u002f\ufb03\ufb03\ufb03\ud93f\udfff";
+    private static final String UPPER_ROOT_ =
+         "\u0041\u0042\u0049\u03a3\u0053\u0053\u03a3\u002f\u0046\u0046\u0049\u0046\u0046\u0049\u0046\u0046\u0049\ud93f\udfff";
+    private static final String UPPER_TURKISH_ =
+         "\u0041\u0042\u0130\u03a3\u0053\u0053\u03a3\u002f\u0046\u0046\u0049\u0046\u0046\u0049\u0046\u0046\u0049\ud93f\udfff";
+    private static final String UPPER_MINI_ = "\u00df\u0061";
+    private static final String UPPER_MINI_UPPER_ = "\u0053\u0053\u0041";
+
+    private static final String LOWER_BEFORE_ =
+                      "\u0061\u0042\u0049\u03a3\u00df\u03a3\u002f\ud93f\udfff";
+    private static final String LOWER_ROOT_ =
+                      "\u0061\u0062\u0069\u03c3\u00df\u03c2\u002f\ud93f\udfff";
+    private static final String LOWER_TURKISH_ = 
+                      "\u0061\u0062\u0131\u03c3\u00df\u03c2\u002f\ud93f\udfff";
+
+    /**
+     * each item is an array with input string, result string, locale ID, break iterator, options
+     * the break iterator is specified as an int, same as in BreakIterator.KIND_*:
+     * 0=KIND_CHARACTER  1=KIND_WORD  2=KIND_LINE  3=KIND_SENTENCE  4=KIND_TITLE  -1=default (NULL=words)  -2=no breaks (.*)
+     * options: T=U_FOLD_CASE_EXCLUDE_SPECIAL_I  L=U_TITLECASE_NO_LOWERCASE  A=U_TITLECASE_NO_BREAK_ADJUSTMENT
+     * see ICU4C source/test/testdata/casing.txt
+     */
+    private static final String TITLE_DATA_[] = {
+        "\u0061\u0042\u0020\u0069\u03c2\u0020\u00df\u03c3\u002f\ufb03\ud93f\udfff",
+        "\u0041\u0042\u0020\u0049\u03a3\u0020\u0053\u0073\u03a3\u002f\u0046\u0066\u0069\ud93f\udfff",
+        "",
+        "0",
+        "",
+
+        "\u0061\u0042\u0020\u0069\u03c2\u0020\u00df\u03c3\u002f\ufb03\ud93f\udfff",
+        "\u0041\u0062\u0020\u0049\u03c2\u0020\u0053\u0073\u03c3\u002f\u0046\u0066\u0069\ud93f\udfff",
+        "",
+        "1",
+        "",
+
+        "\u02bbaMeLikA huI P\u016b \u02bb\u02bb\u02bbiA", "\u02bbAmelika Hui P\u016b \u02bb\u02bb\u02bbIa", // titlecase first _cased_ letter, j4933
+        "",
+        "-1",
+        "",
+
+        " tHe QUIcK bRoWn", " The Quick Brown",
+        "",
+        "4",
+        "",
+
+        "\u01c4\u01c5\u01c6\u01c7\u01c8\u01c9\u01ca\u01cb\u01cc", 
+        "\u01c5\u01c5\u01c5\u01c8\u01c8\u01c8\u01cb\u01cb\u01cb", // UBRK_CHARACTER
+        "",
+        "0",
+        "",
+
+        "\u01c9ubav ljubav", "\u01c8ubav Ljubav", // Lj vs. L+j
+        "",
+        "-1",
+        "",
+
+        "'oH dOn'T tItLeCaSe AfTeR lEtTeR+'",  "'Oh Don't Titlecase After Letter+'",
+        "",
+        "-1",
+        "",
+
+        "a \u02bbCaT. A \u02bbdOg! \u02bbeTc.",
+        "A \u02bbCat. A \u02bbDog! \u02bbEtc.",
+        "",
+        "-1",
+        "", // default
+
+        "a \u02bbCaT. A \u02bbdOg! \u02bbeTc.",
+        "A \u02bbcat. A \u02bbdog! \u02bbetc.",
+        "",
+        "-1",
+        "A", // U_TITLECASE_NO_BREAK_ADJUSTMENT
+
+        "a \u02bbCaT. A \u02bbdOg! \u02bbeTc.",
+        "A \u02bbCaT. A \u02bbdOg! \u02bbETc.",
+        "",
+        "3",
+        "L", // UBRK_SENTENCE and U_TITLECASE_NO_LOWERCASE
+
+
+        "\u02bbcAt! \u02bbeTc.",
+        "\u02bbCat! \u02bbetc.",
+        "",
+        "-2",
+        "", // -2=Trivial break iterator
+
+        "\u02bbcAt! \u02bbeTc.",
+        "\u02bbcat! \u02bbetc.",
+        "",
+        "-2",
+        "A", // U_TITLECASE_NO_BREAK_ADJUSTMENT
+
+        "\u02bbcAt! \u02bbeTc.",
+        "\u02bbCAt! \u02bbeTc.",
+        "",
+        "-2",
+        "L", // U_TITLECASE_NO_LOWERCASE
+
+        "\u02bbcAt! \u02bbeTc.",
+        "\u02bbcAt! \u02bbeTc.",
+        "",
+        "-2",
+        "AL" // Both options
+    };
+
+
+    /**
+     * <p>basic string, lower string, upper string, title string</p>
+     */
+    private static final String SPECIAL_DATA_[] = {
+        UTF16.valueOf(0x1043C) + UTF16.valueOf(0x10414),
+        UTF16.valueOf(0x1043C) + UTF16.valueOf(0x1043C),
+        UTF16.valueOf(0x10414) + UTF16.valueOf(0x10414),
+        "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " +
+                         UTF16.valueOf(0x1043C) + UTF16.valueOf(0x10414),
+        "ab'cd \uFB00i\u0131ii\u0307 \u01C9\u01C9\u01C9 " +
+                              UTF16.valueOf(0x1043C) + UTF16.valueOf(0x1043C),
+        "AB'CD FFIII\u0130 \u01C7\u01C7\u01C7 " +
+                              UTF16.valueOf(0x10414) + UTF16.valueOf(0x10414),
+        // sigmas followed/preceded by cased letters
+        "i\u0307\u03a3\u0308j \u0307\u03a3\u0308j i\u00ad\u03a3\u0308 \u0307\u03a3\u0308 ",
+        "i\u0307\u03c3\u0308j \u0307\u03c3\u0308j i\u00ad\u03c2\u0308 \u0307\u03c3\u0308 ",
+        "I\u0307\u03a3\u0308J \u0307\u03a3\u0308J I\u00ad\u03a3\u0308 \u0307\u03a3\u0308 "
+    };
+    private static final Locale SPECIAL_LOCALES_[] = {
+        null,
+        ENGLISH_LOCALE_,
+        null,
+    };
+
+    private static final String SPECIAL_DOTTED_ =
+            "I \u0130 I\u0307 I\u0327\u0307 I\u0301\u0307 I\u0327\u0307\u0301";
+    private static final String SPECIAL_DOTTED_LOWER_TURKISH_ =
+            "\u0131 i i i\u0327 \u0131\u0301\u0307 i\u0327\u0301";
+    private static final String SPECIAL_DOTTED_LOWER_GERMAN_ =
+            "i i\u0307 i\u0307 i\u0327\u0307 i\u0301\u0307 i\u0327\u0307\u0301";
+    private static final String SPECIAL_DOT_ABOVE_ =
+            "a\u0307 \u0307 i\u0307 j\u0327\u0307 j\u0301\u0307";
+    private static final String SPECIAL_DOT_ABOVE_UPPER_LITHUANIAN_ =
+            "A\u0307 \u0307 I J\u0327 J\u0301\u0307";
+    private static final String SPECIAL_DOT_ABOVE_UPPER_GERMAN_ =
+            "A\u0307 \u0307 I\u0307 J\u0327\u0307 J\u0301\u0307";
+    private static final String SPECIAL_DOT_ABOVE_UPPER_ =
+            "I I\u0301 J J\u0301 \u012e \u012e\u0301 \u00cc\u00cd\u0128";
+    private static final String SPECIAL_DOT_ABOVE_LOWER_LITHUANIAN_ =
+            "i i\u0307\u0301 j j\u0307\u0301 \u012f \u012f\u0307\u0301 i\u0307\u0300i\u0307\u0301i\u0307\u0303";
+    private static final String SPECIAL_DOT_ABOVE_LOWER_GERMAN_ =
+            "i i\u0301 j j\u0301 \u012f \u012f\u0301 \u00ec\u00ed\u0129";
+
+    // private methods -------------------------------------------------------
+
+    /**
+     * Converting the hex numbers represented betwee                             n ';' to Unicode strings
+     * @param str string to break up into Unicode strings
+     * @return array of Unicode strings ending with a null
+     */
+    private String[] getUnicodeStrings(String str)
+    {
+        Vector v = new Vector(10);
+        int start = 0;
+        for (int casecount = 4; casecount > 0; casecount --) {
+            int end = str.indexOf("; ", start);
+            String casestr = str.substring(start, end);
+            StringBuffer buffer = new StringBuffer();
+            int spaceoffset = 0;
+            while (spaceoffset < casestr.length()) {
+                int nextspace = casestr.indexOf(' ', spaceoffset);
+                if (nextspace == -1) {
+                    nextspace = casestr.length();
+                }
+                buffer.append((char)Integer.parseInt(
+                                     casestr.substring(spaceoffset, nextspace),
+                                                      16));
+                spaceoffset = nextspace + 1;
+            }
+            start = end + 2;
+            v.add(buffer.toString());
+        }
+        int comments = str.indexOf(" #", start);
+        if (comments != -1 && comments != start) {
+            if (str.charAt(comments - 1) == ';') {
+                comments --;
+            }
+            String conditions = str.substring(start, comments);
+            int offset = 0;
+            while (offset < conditions.length()) {
+                int spaceoffset = conditions.indexOf(' ', offset);
+                if (spaceoffset == -1) {
+                    spaceoffset = conditions.length();
+                }
+                v.add(conditions.substring(offset, spaceoffset));
+                offset = spaceoffset + 1;
+            }
+        }
+        int size = v.size();
+        String result[] = new String[size];
+        for (int i = 0; i < size; i ++) {
+            result[i] = (String)v.elementAt(i);
+        }
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
new file mode 100644
index 0000000..6f8e1d0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
@@ -0,0 +1,86 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.dev.test.lang;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacterCategory;
+
+/**
+* Testing UCharacterCategory
+* @author Syn Wee Quek
+* @since April 02 2002
+*/
+public class UCharacterCategoryTest extends TestFmwk
+{
+    // constructor -----------------------------------------------------------
+    
+    /**
+    * Private constructor to prevent initialisation
+    */
+    public UCharacterCategoryTest()
+    {
+    }
+    
+      // public methods --------------------------------------------------------
+      
+    public static void main(String[] arg)  
+    {
+        try
+        {
+              UCharacterCategoryTest test = new UCharacterCategoryTest();
+              test.run(arg);
+        }
+        catch (Exception e)
+        {
+              e.printStackTrace();
+        }
+    }
+    
+    /**
+    * Gets the name of the argument category
+    * @returns category name
+    */
+    public void TestToString()
+    {
+          String name[] = {"Unassigned",
+                           "Letter, Uppercase",
+                           "Letter, Lowercase",
+                           "Letter, Titlecase",
+                           "Letter, Modifier",
+                           "Letter, Other",
+                           "Mark, Non-Spacing",
+                           "Mark, Enclosing",
+                           "Mark, Spacing Combining",
+                           "Number, Decimal Digit",
+                           "Number, Letter",
+                           "Number, Other",
+                           "Separator, Space",
+                           "Separator, Line",
+                           "Separator, Paragraph",
+                           "Other, Control",
+                           "Other, Format",
+                           "Other, Private Use",
+                           "Other, Surrogate",
+                           "Punctuation, Dash",
+                           "Punctuation, Open",
+                           "Punctuation, Close",
+                           "Punctuation, Connector",
+                           "Punctuation, Other",
+                           "Symbol, Math",
+                           "Symbol, Currency",
+                           "Symbol, Modifier",
+                           "Symbol, Other", 
+                           "Punctuation, Initial quote",
+                           "Punctuation, Final quote"};
+        for (int i = UCharacterCategory.UNASSIGNED; 
+                 i < UCharacterCategory.CHAR_CATEGORY_COUNT; i ++) {
+             if (!UCharacterCategory.toString(i).equals(name[i])) {
+                 errln("Error toString for category " + i + " expected " +
+                       name[i]);
+             }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java b/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
new file mode 100644
index 0000000..65206f8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
@@ -0,0 +1,308 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.Hashtable;
+import java.util.Enumeration;
+
+/**
+* A class to compare the difference in methods between java.lang.Character and
+* UCharacter
+* @author Syn Wee Quek
+* @since oct 06 2000
+* @see com.ibm.icu.lang.UCharacter
+*/
+
+public final class UCharacterCompare
+{ 
+  // private variables ================================================
+  
+  private static Hashtable m_hashtable_ = new Hashtable();
+  
+  // public methods ======================================================
+  
+  /**
+  * Main testing method
+  */
+  public static void main(String arg[])
+  {
+      System.out.println("Starting character compare");
+    try
+    {
+      FileWriter f;
+      if (arg.length == 0)
+        f = new FileWriter("compare.txt");
+      else
+        f = new FileWriter(arg[0]);
+      PrintWriter p = new PrintWriter(f);
+      p.print("char  character name                                                           ");
+      p.println("method name               ucharacter character");
+      for (char i = Character.MIN_VALUE; i < Character.MAX_VALUE; i ++)
+      {
+          System.out.println("character \\u" + Integer.toHexString(i));
+        if (UCharacter.isDefined(i) != Character.isDefined(i))
+          trackDifference(p, i, "isDefined()", "" + UCharacter.isDefined(i), 
+                          "" + Character.isDefined(i));
+        else
+        {
+          if (UCharacter.digit(i, 10) != Character.digit(i, 10))
+            trackDifference(p, i, "digit()", "" + UCharacter.digit(i, 10),
+                            "" + Character.digit(i, 10));
+          if (UCharacter.getNumericValue(i) != Character.getNumericValue(i))
+            trackDifference(p, i, "getNumericValue()", 
+                            "" + UCharacter.getNumericValue(i),
+                            "" + Character.getNumericValue(i));
+          if (!compareType(UCharacter.getType(i), Character.getType(i)))
+            trackDifference(p, i, "getType()", "" + UCharacter.getType(i),
+                            "" + Character.getType(i));
+          if (UCharacter.isDigit(i) != Character.isDigit(i))
+            trackDifference(p, i, "isDigit()",
+                            "" + UCharacter.isDigit(i), 
+                            "" + Character.isDigit(i));
+          if (UCharacter.isISOControl(i) != Character.isISOControl(i))
+            trackDifference(p, i, "isISOControl()", 
+                            "" + UCharacter.isISOControl(i),
+                            "" + Character.isISOControl(i));
+          if (UCharacter.isLetter(i) != Character.isLetter(i))
+            trackDifference(p, i, "isLetter()", "" + UCharacter.isLetter(i),
+                            "" + Character.isLetter(i));
+          if (UCharacter.isLetterOrDigit(i) != Character.isLetterOrDigit(i))
+            trackDifference(p, i, "isLetterOrDigit()", 
+                            "" + UCharacter.isLetterOrDigit(i),
+                            "" + Character.isLetterOrDigit(i));
+          if (UCharacter.isLowerCase(i) != Character.isLowerCase(i))
+            trackDifference(p, i, "isLowerCase()", 
+                            "" + UCharacter.isLowerCase(i),
+                            "" + Character.isLowerCase(i));
+          if (UCharacter.isWhitespace(i) != Character.isWhitespace(i))
+            trackDifference(p, i, "isWhitespace()", 
+                            "" + UCharacter.isWhitespace(i),
+                            "" + Character.isWhitespace(i));
+          if (UCharacter.isSpaceChar(i) != Character.isSpaceChar(i))
+            trackDifference(p, i, "isSpaceChar()", 
+                            "" + UCharacter.isSpaceChar(i),
+                            "" + Character.isSpaceChar(i));
+          if (UCharacter.isTitleCase(i) != Character.isTitleCase(i))
+            trackDifference(p, i, "isTitleChar()", 
+                            "" + UCharacter.isTitleCase(i),
+                            "" + Character.isTitleCase(i));
+          if (UCharacter.isUnicodeIdentifierPart(i) != 
+              Character.isUnicodeIdentifierPart(i))
+            trackDifference(p, i, "isUnicodeIdentifierPart()", 
+                            "" + UCharacter.isUnicodeIdentifierPart(i),
+                            "" + Character.isUnicodeIdentifierPart(i));
+          if (UCharacter.isUnicodeIdentifierStart(i) != 
+              Character.isUnicodeIdentifierStart(i))
+            trackDifference(p, i, "isUnicodeIdentifierStart()",
+                            "" + UCharacter.isUnicodeIdentifierStart(i),
+                            "" + Character.isUnicodeIdentifierStart(i));
+          if (UCharacter.isIdentifierIgnorable(i) != 
+              Character.isIdentifierIgnorable(i))
+            trackDifference(p, i, "isIdentifierIgnorable()",
+                            "" + UCharacter.isIdentifierIgnorable(i),
+                            "" + Character.isIdentifierIgnorable(i));
+          if (UCharacter.isUpperCase(i) != Character.isUpperCase(i))
+            trackDifference(p, i, "isUpperCase()", 
+                            "" + UCharacter.isUpperCase(i),
+                            "" + Character.isUpperCase(i));
+          if (UCharacter.toLowerCase(i) != Character.toLowerCase(i))
+            trackDifference(p, i, "toLowerCase()", 
+                            Integer.toHexString(UCharacter.toLowerCase(i)),
+                            Integer.toHexString(Character.toLowerCase(i)));
+          if (!UCharacter.toString(i).equals(new Character(i).toString()))
+            trackDifference(p, i, "toString()",
+                            UCharacter.toString(i),
+                            new Character(i).toString());
+          if (UCharacter.toTitleCase(i) != Character.toTitleCase(i))
+            trackDifference(p, i, "toTitleCase()",
+                            Integer.toHexString(UCharacter.toTitleCase(i)),
+                            Integer.toHexString(Character.toTitleCase(i)));
+          if (UCharacter.toUpperCase(i) != Character.toUpperCase(i))
+            trackDifference(p, i, "toUpperCase()",
+                            Integer.toHexString(UCharacter.toUpperCase(i)),
+                            Integer.toHexString(Character.toUpperCase(i)));
+        }
+      }
+      summary(p);
+      p.close();
+    } 
+    catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+  }
+  
+  // private methods ===================================================
+  
+  /**
+  * Comparing types
+  * @param uchartype UCharacter type
+  * @param jchartype java.lang.Character type
+  */
+  private static boolean compareType(int uchartype, int jchartype)
+  {
+    if (uchartype == UCharacterCategory.UNASSIGNED && 
+        jchartype == Character.UNASSIGNED)
+      return true;
+    if (uchartype == UCharacterCategory.UPPERCASE_LETTER && 
+        jchartype == Character.UPPERCASE_LETTER)
+      return true;                                                   
+    if (uchartype == UCharacterCategory.LOWERCASE_LETTER && 
+        jchartype == Character.LOWERCASE_LETTER)
+      return true;                                                   
+    if (uchartype == UCharacterCategory.TITLECASE_LETTER && 
+        jchartype == Character.TITLECASE_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.MODIFIER_LETTER && 
+        jchartype == Character.MODIFIER_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.OTHER_LETTER && 
+        jchartype == Character.OTHER_LETTER)
+      return true;
+    if (uchartype == UCharacterCategory.NON_SPACING_MARK && 
+        jchartype == Character.NON_SPACING_MARK)
+      return true;
+    if (uchartype == UCharacterCategory.ENCLOSING_MARK && 
+        jchartype == Character.ENCLOSING_MARK)
+      return true;
+    if (uchartype == UCharacterCategory.COMBINING_SPACING_MARK && 
+        jchartype == Character.COMBINING_SPACING_MARK)
+      return true;
+      if (uchartype == UCharacterCategory.DECIMAL_DIGIT_NUMBER && 
+        jchartype == Character.DECIMAL_DIGIT_NUMBER)
+      return true;
+      if (uchartype == UCharacterCategory.LETTER_NUMBER && 
+        jchartype == Character.LETTER_NUMBER)
+      return true;
+      if (uchartype == UCharacterCategory.OTHER_NUMBER && 
+        jchartype == Character.OTHER_NUMBER)
+      return true;
+      if (uchartype == UCharacterCategory.SPACE_SEPARATOR && 
+        jchartype == Character.SPACE_SEPARATOR)
+      return true;
+      if (uchartype == UCharacterCategory.LINE_SEPARATOR && 
+        jchartype == Character.LINE_SEPARATOR)
+      return true;
+      if (uchartype == UCharacterCategory.PARAGRAPH_SEPARATOR && 
+        jchartype == Character.PARAGRAPH_SEPARATOR)
+      return true;
+      if (uchartype == UCharacterCategory.CONTROL && 
+        jchartype == Character.CONTROL)
+      return true;
+    if (uchartype == UCharacterCategory.FORMAT && 
+        jchartype == Character.FORMAT)
+      return true;
+      if (uchartype == UCharacterCategory.PRIVATE_USE && 
+        jchartype == Character.PRIVATE_USE)
+      return true;
+    if (uchartype == UCharacterCategory.SURROGATE && 
+        jchartype == Character.SURROGATE)
+      return true;
+    if (uchartype == UCharacterCategory.DASH_PUNCTUATION && 
+        jchartype == Character.DASH_PUNCTUATION)
+      return true;
+      if (uchartype == UCharacterCategory.START_PUNCTUATION && 
+        jchartype == Character.START_PUNCTUATION)
+      return true;
+      if (uchartype == UCharacterCategory.END_PUNCTUATION && 
+        jchartype == Character.END_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.CONNECTOR_PUNCTUATION && 
+        jchartype == Character.CONNECTOR_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.OTHER_PUNCTUATION && 
+        jchartype == Character.OTHER_PUNCTUATION)
+      return true;
+      if (uchartype == UCharacterCategory.MATH_SYMBOL && 
+        jchartype == Character.MATH_SYMBOL)
+      return true;
+      if (uchartype == UCharacterCategory.CURRENCY_SYMBOL && 
+        jchartype == Character.CURRENCY_SYMBOL)
+      return true;
+      if (uchartype == UCharacterCategory.MODIFIER_SYMBOL && 
+        jchartype == Character.MODIFIER_SYMBOL)
+      return true;
+      if (uchartype == UCharacterCategory.OTHER_SYMBOL && 
+        jchartype == Character.OTHER_SYMBOL)
+      return true;
+      if (uchartype == UCharacterCategory.INITIAL_PUNCTUATION && 
+        jchartype == Character.START_PUNCTUATION)
+      return true;
+    if (uchartype == UCharacterCategory.FINAL_PUNCTUATION && 
+        jchartype == Character.END_PUNCTUATION)
+      return true;
+      /*if (uchartype == UCharacterCategory.GENERAL_OTHER_TYPES && 
+        jchartype == Character.GENERAL_OTHER_TYPES)
+      return true;*/
+    return false;
+    }
+    
+    /**
+    * Difference writing to file
+    * @param f file outputstream
+    * @param ch code point
+    * @param method for testing
+    * @param ucharval UCharacter value after running method
+    * @param charval Character value after running method
+    */
+    private static void trackDifference(PrintWriter f, int ch, String method,
+                                        String ucharval, String charval)
+      throws Exception
+    {
+      if (m_hashtable_.containsKey(method))
+      {
+        Integer value = (Integer)m_hashtable_.get(method);
+        m_hashtable_.put(method, new Integer(value.intValue() + 1));
+      }
+      else
+        m_hashtable_.put(method, new Integer(1));
+      
+      String temp = Integer.toHexString(ch);
+      StringBuffer s = new StringBuffer(temp);
+      for (int i = 0; i < 6 - temp.length(); i ++)
+        s.append(' ');
+      temp = UCharacter.getExtendedName(ch);
+      if (temp == null)
+        temp = " ";
+      s.append(temp);
+      for (int i = 0; i < 73 - temp.length(); i ++)
+        s.append(' ');
+      
+      s.append(method);
+      for (int i = 0; i < 27 - method.length(); i ++)
+        s.append(' ');
+      s.append(ucharval);
+      for (int i = 0; i < 11 - ucharval.length(); i ++)
+        s.append(' ');
+      s.append(charval);
+      f.println(s.toString());
+    }
+    
+    /**
+    * Does up a summary of the differences
+    * @param f file outputstream
+    */
+    private static void summary(PrintWriter f)
+    {
+      f.println("==================================================");
+      f.println("Summary of differences");
+      for (Enumeration e = m_hashtable_.keys() ; e.hasMoreElements() ;) 
+      {
+        StringBuffer method = new StringBuffer((String)e.nextElement());
+        int count = ((Integer)m_hashtable_.get(method.toString())).intValue();
+        for (int i = 30 - method.length(); i > 0; i --)
+          method.append(' ');
+      f.println(method + "  " + count);
+    }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
new file mode 100644
index 0000000..d7239e7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
@@ -0,0 +1,77 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacterDirection;
+
+/**
+* Testing UCharacterDirection
+* @author Syn Wee Quek
+* @since July 22 2002
+*/
+public class UCharacterDirectionTest extends TestFmwk
+{    
+    // constructor -----------------------------------------------------------
+    
+    /**
+    * Private constructor to prevent initialisation
+    */
+    public UCharacterDirectionTest()
+    {
+    }
+    
+    // public methods --------------------------------------------------------
+      
+    public static void main(String[] arg)  
+    {
+        try
+        {
+            UCharacterDirectionTest test = new UCharacterDirectionTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+    * Gets the name of the argument category
+    * @returns category name
+    */
+    public void TestToString()
+    {
+        String name[] = {"Left-to-Right",
+                         "Right-to-Left", 
+                         "European Number",
+                         "European Number Separator",
+                         "European Number Terminator",
+                         "Arabic Number",
+                         "Common Number Separator",
+                         "Paragraph Separator",
+                         "Segment Separator",
+                         "Whitespace",
+                         "Other Neutrals",
+                         "Left-to-Right Embedding",
+                         "Left-to-Right Override",
+                         "Right-to-Left Arabic",
+                         "Right-to-Left Embedding",
+                         "Right-to-Left Override",
+                         "Pop Directional Format",
+                         "Non-Spacing Mark",
+                         "Boundary Neutral",
+                         "Unassigned"};
+        for (int i = UCharacterDirection.LEFT_TO_RIGHT; 
+                 i < UCharacterDirection.CHAR_DIRECTION_COUNT; i ++) {
+             if (!UCharacterDirection.toString(i).equals(name[i])) {
+                errln("Error toString for direction " + i + " expected " +
+                      name[i]);
+             }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java
new file mode 100644
index 0000000..c1216ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java
@@ -0,0 +1,422 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Test JDK 1.5 cover APIs.
+ */
+public final class UCharacterSurrogateTest extends TestFmwk {
+
+    public static void main(String[] args) {
+        new UCharacterSurrogateTest().run(args);
+    }
+
+    public void TestUnicodeBlockForName() {
+      String[] names = {"Latin-1 Supplement", 
+                        "Optical Character Recognition",
+                        "CJK Unified Ideographs Extension A", 
+                        "Supplemental Arrows-B",
+                        "Supplemental arrows b", 
+                        "supp-lement-al arrowsb",
+                        "Supplementary Private Use Area-B",
+                        "supplementary_Private_Use_Area-b",
+                        "supplementary_PRIVATE_Use_Area_b"};
+        for (int i = 0; i < names.length; ++i) {
+            try {
+                UCharacter.UnicodeBlock b = UCharacter.UnicodeBlock
+                        .forName(names[i]);
+                logln("found: " + b + " for name: " + names[i]);
+            } catch (Exception e) {
+                errln("could not find block for name: " + names[i]);
+                break;
+            }
+        }
+    }
+
+    public void TestIsValidCodePoint() {
+        if (UCharacter.isValidCodePoint(-1))
+            errln("-1");
+        if (!UCharacter.isValidCodePoint(0))
+            errln("0");
+        if (!UCharacter.isValidCodePoint(UCharacter.MAX_CODE_POINT))
+            errln("0x10ffff");
+        if (UCharacter.isValidCodePoint(UCharacter.MAX_CODE_POINT + 1))
+            errln("0x110000");
+    }
+
+    public void TestIsSupplementaryCodePoint() {
+        if (UCharacter.isSupplementaryCodePoint(-1))
+            errln("-1");
+        if (UCharacter.isSupplementaryCodePoint(0))
+            errln("0");
+        if (UCharacter
+                .isSupplementaryCodePoint(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT - 1))
+            errln("0xffff");
+        if (!UCharacter
+                .isSupplementaryCodePoint(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT))
+            errln("0x10000");
+        if (!UCharacter.isSupplementaryCodePoint(UCharacter.MAX_CODE_POINT))
+            errln("0x10ffff");
+        if (UCharacter.isSupplementaryCodePoint(UCharacter.MAX_CODE_POINT + 1))
+            errln("0x110000");
+    }
+
+    public void TestIsHighSurrogate() {
+        if (UCharacter
+                .isHighSurrogate((char) (UCharacter.MIN_HIGH_SURROGATE - 1)))
+            errln("0xd7ff");
+        if (!UCharacter.isHighSurrogate(UCharacter.MIN_HIGH_SURROGATE))
+            errln("0xd800");
+        if (!UCharacter.isHighSurrogate(UCharacter.MAX_HIGH_SURROGATE))
+            errln("0xdbff");
+        if (UCharacter
+                .isHighSurrogate((char) (UCharacter.MAX_HIGH_SURROGATE + 1)))
+            errln("0xdc00");
+    }
+
+    public void TestIsLowSurrogate() {
+        if (UCharacter
+                .isLowSurrogate((char) (UCharacter.MIN_LOW_SURROGATE - 1)))
+            errln("0xdbff");
+        if (!UCharacter.isLowSurrogate(UCharacter.MIN_LOW_SURROGATE))
+            errln("0xdc00");
+        if (!UCharacter.isLowSurrogate(UCharacter.MAX_LOW_SURROGATE))
+            errln("0xdfff");
+        if (UCharacter
+                .isLowSurrogate((char) (UCharacter.MAX_LOW_SURROGATE + 1)))
+            errln("0xe000");
+    }
+
+    public void TestIsSurrogatePair() {
+        if (UCharacter.isSurrogatePair(
+                (char) (UCharacter.MIN_HIGH_SURROGATE - 1),
+                UCharacter.MIN_LOW_SURROGATE))
+            errln("0xd7ff,0xdc00");
+        if (UCharacter.isSurrogatePair(
+                (char) (UCharacter.MAX_HIGH_SURROGATE + 1),
+                UCharacter.MIN_LOW_SURROGATE))
+            errln("0xd800,0xdc00");
+        if (UCharacter.isSurrogatePair(UCharacter.MIN_HIGH_SURROGATE,
+                (char) (UCharacter.MIN_LOW_SURROGATE - 1)))
+            errln("0xd800,0xdbff");
+        if (UCharacter.isSurrogatePair(UCharacter.MIN_HIGH_SURROGATE,
+                (char) (UCharacter.MAX_LOW_SURROGATE + 1)))
+            errln("0xd800,0xe000");
+        if (!UCharacter.isSurrogatePair(UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.MIN_LOW_SURROGATE))
+            errln("0xd800,0xdc00");
+    }
+
+    public void TestCharCount() {
+        UCharacter.charCount(-1);
+        UCharacter.charCount(UCharacter.MAX_CODE_POINT + 1);
+        if (UCharacter.charCount(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT - 1) != 1)
+            errln("0xffff");
+        if (UCharacter.charCount(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT) != 2)
+            errln("0x010000");
+    }
+
+    public void TestToCodePoint() {
+        final char[] pairs = {(char) (UCharacter.MIN_HIGH_SURROGATE + 0),
+                (char) (UCharacter.MIN_LOW_SURROGATE + 0),
+                (char) (UCharacter.MIN_HIGH_SURROGATE + 1),
+                (char) (UCharacter.MIN_LOW_SURROGATE + 1),
+                (char) (UCharacter.MIN_HIGH_SURROGATE + 2),
+                (char) (UCharacter.MIN_LOW_SURROGATE + 2),
+                (char) (UCharacter.MAX_HIGH_SURROGATE - 2),
+                (char) (UCharacter.MAX_LOW_SURROGATE - 2),
+                (char) (UCharacter.MAX_HIGH_SURROGATE - 1),
+                (char) (UCharacter.MAX_LOW_SURROGATE - 1),
+                (char) (UCharacter.MAX_HIGH_SURROGATE - 0),
+                (char) (UCharacter.MAX_LOW_SURROGATE - 0),};
+        for (int i = 0; i < pairs.length; i += 2) {
+            int cp = UCharacter.toCodePoint(pairs[i], pairs[i + 1]);
+            if (pairs[i] != UTF16.getLeadSurrogate(cp)
+                    || pairs[i + 1] != UTF16.getTrailSurrogate(cp)) {
+
+                errln(Integer.toHexString(pairs[i]) + ", " + pairs[i + 1]);
+                break;
+            }
+        }
+    }
+
+    public void TestCodePointAtBefore() {
+        String s = "" + UCharacter.MIN_HIGH_SURROGATE + // isolated high
+                UCharacter.MIN_HIGH_SURROGATE + // pair
+                UCharacter.MIN_LOW_SURROGATE + UCharacter.MIN_LOW_SURROGATE; // isolated
+                                                                             // low
+        char[] c = s.toCharArray();
+        int[] avalues = {
+                UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.toCodePoint(UCharacter.MIN_HIGH_SURROGATE,
+                        UCharacter.MIN_LOW_SURROGATE),
+                UCharacter.MIN_LOW_SURROGATE, UCharacter.MIN_LOW_SURROGATE};
+        int[] bvalues = {
+                UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.toCodePoint(UCharacter.MIN_HIGH_SURROGATE,
+                        UCharacter.MIN_LOW_SURROGATE),
+                UCharacter.MIN_LOW_SURROGATE,};
+        StringBuffer b = new StringBuffer(s);
+        for (int i = 0; i < avalues.length; ++i) {
+            if (UCharacter.codePointAt(s, i) != avalues[i])
+                errln("string at: " + i);
+            if (UCharacter.codePointAt(c, i) != avalues[i])
+                errln("chars at: " + i);
+            if (UCharacter.codePointAt(b, i) != avalues[i])
+                errln("stringbuffer at: " + i);
+
+            if (UCharacter.codePointBefore(s, i + 1) != bvalues[i])
+                errln("string before: " + i);
+            if (UCharacter.codePointBefore(c, i + 1) != bvalues[i])
+                errln("chars before: " + i);
+            if (UCharacter.codePointBefore(b, i + 1) != bvalues[i])
+                errln("stringbuffer before: " + i);
+        }
+
+        //cover codePointAtBefore with limit
+        logln("Testing codePointAtBefore with limit ...");
+        for (int i = 0; i < avalues.length; ++i) {
+            if (UCharacter.codePointAt(c, i, 4) != avalues[i])
+                errln("chars at: " + i);
+            if (UCharacter.codePointBefore(c, i + 1, 0) != bvalues[i])
+                errln("chars before: " + i);
+        }
+
+    }
+
+    public void TestToChars() {
+        char[] chars = new char[3];
+        int cp = UCharacter.toCodePoint(UCharacter.MIN_HIGH_SURROGATE,
+                UCharacter.MIN_LOW_SURROGATE);
+        UCharacter.toChars(cp, chars, 1);
+        if (chars[1] != UCharacter.MIN_HIGH_SURROGATE
+                || chars[2] != UCharacter.MIN_LOW_SURROGATE) {
+
+            errln("fail");
+        }
+
+        chars = UCharacter.toChars(cp);
+        if (chars[0] != UCharacter.MIN_HIGH_SURROGATE
+                || chars[1] != UCharacter.MIN_LOW_SURROGATE) {
+
+            errln("fail");
+        }
+    }
+
+    public void TestCodePointCount() {
+        class Test {
+            String str(String s, int start, int limit) {
+                if(s==null){
+                    s="";
+                }
+                return "codePointCount('" + Utility.escape(s) + "' " + start
+                        + ", " + limit + ")";
+            }
+
+            void test(String s, int start, int limit, int expected) {
+                int val1 = UCharacter.codePointCount(s.toCharArray(), start,
+                        limit);
+                int val2 = UCharacter.codePointCount(s, start, limit);
+                if (val1 != expected) {
+                    errln("char[] " + str(s, start, limit) + "(" + val1
+                            + ") != " + expected);
+                } else if (val2 != expected) {
+                    errln("String " + str(s, start, limit) + "(" + val2
+                            + ") != " + expected);
+                } else if (isVerbose()) {
+                    logln(str(s, start, limit) + " == " + expected);
+                }
+            }
+
+            void fail(String s, int start, int limit, Class exc) {
+                try {
+                    UCharacter.codePointCount(s, start, limit);
+                    errln("unexpected success " + str(s, start, limit));
+                } catch (Throwable e) {
+                    if (!exc.isInstance(e)) {
+                        warnln("bad exception " + str(s, start, limit)
+                                + e.getClass().getName());
+                    }
+                }
+            }
+        }
+
+        Test test = new Test();
+        test.fail(null, 0, 1, NullPointerException.class);
+        test.fail("a", -1, 0, IndexOutOfBoundsException.class);
+        test.fail("a", 1, 2, IndexOutOfBoundsException.class);
+        test.fail("a", 1, 0, IndexOutOfBoundsException.class);
+        test.test("", 0, 0, 0);
+        test.test("\ud800", 0, 1, 1);
+        test.test("\udc00", 0, 1, 1);
+        test.test("\ud800\udc00", 0, 1, 1);
+        test.test("\ud800\udc00", 1, 2, 1);
+        test.test("\ud800\udc00", 0, 2, 1);
+        test.test("\udc00\ud800", 0, 1, 1);
+        test.test("\udc00\ud800", 1, 2, 1);
+        test.test("\udc00\ud800", 0, 2, 2);
+        test.test("\ud800\ud800\udc00", 0, 2, 2);
+        test.test("\ud800\ud800\udc00", 1, 3, 1);
+        test.test("\ud800\ud800\udc00", 0, 3, 2);
+        test.test("\ud800\udc00\udc00", 0, 2, 1);
+        test.test("\ud800\udc00\udc00", 1, 3, 2);
+        test.test("\ud800\udc00\udc00", 0, 3, 2);
+    }
+
+    public void TestOffsetByCodePoints() {
+        class Test {
+            String str(String s, int start, int count, int index, int offset) {
+                return "offsetByCodePoints('" + Utility.escape(s) + "' "
+                        + start + ", " + count + ", " + index + ", " + offset
+                        + ")";
+            }
+
+            void test(String s, int start, int count, int index, int offset,
+                    int expected, boolean flip) {
+                char[] chars = s.toCharArray();
+                String string = s.substring(start, start + count);
+                int val1 = UCharacter.offsetByCodePoints(chars, start, count,
+                        index, offset);
+                int val2 = UCharacter.offsetByCodePoints(string, index - start,
+                        offset)
+                        + start;
+
+                if (val1 != expected) {
+                    errln("char[] " + str(s, start, count, index, offset) + "("
+                            + val1 + ") != " + expected);
+                } else if (val2 != expected) {
+                    errln("String " + str(s, start, count, index, offset) + "("
+                            + val2 + ") != " + expected);
+                } else if (isVerbose()) {
+                    logln(str(s, start, count, index, offset) + " == "
+                            + expected);
+                }
+
+                if (flip) {
+                    val1 = UCharacter.offsetByCodePoints(chars, start, count,
+                            expected, -offset);
+                    val2 = UCharacter.offsetByCodePoints(string, expected
+                            - start, -offset)
+                            + start;
+                    if (val1 != index) {
+                        errln("char[] "
+                                + str(s, start, count, expected, -offset) + "("
+                                + val1 + ") != " + index);
+                    } else if (val2 != index) {
+                        errln("String "
+                                + str(s, start, count, expected, -offset) + "("
+                                + val2 + ") != " + index);
+                    } else if (isVerbose()) {
+                        logln(str(s, start, count, expected, -offset) + " == "
+                                + index);
+                    }
+                }
+            }
+
+            void fail(char[] text, int start, int count, int index, int offset,
+                    Class exc) {
+                try {
+                    UCharacter.offsetByCodePoints(text, start, count, index,
+                            offset);
+                    errln("unexpected success "
+                            + str(new String(text), start, count, index, offset));
+                } catch (Throwable e) {
+                    if (!exc.isInstance(e)) {
+                        errln("bad exception "
+                                + str(new String(text), start, count, index,
+                                        offset) + e.getClass().getName());
+                    }
+                }
+            }
+
+            void fail(String text, int index, int offset, Class exc) {
+                try {
+                    UCharacter.offsetByCodePoints(text, index, offset);
+                    errln("unexpected success "
+                            + str(text, index, offset, 0, text.length()));
+                } catch (Throwable e) {
+                    if (!exc.isInstance(e)) {
+                        errln("bad exception "
+                                + str(text, 0, text.length(), index, offset)
+                                + e.getClass().getName());
+                    }
+                }
+            }
+        }
+
+        Test test = new Test();
+
+        test.test("\ud800\ud800\udc00", 0, 2, 0, 1, 1, true);
+
+        test.fail((char[]) null, 0, 1, 0, 1, NullPointerException.class);
+        test.fail((String) null, 0, 1, NullPointerException.class);
+        test.fail("abc", -1, 0, IndexOutOfBoundsException.class);
+        test.fail("abc", 4, 0, IndexOutOfBoundsException.class);
+        test.fail("abc", 1, -2, IndexOutOfBoundsException.class);
+        test.fail("abc", 2, 2, IndexOutOfBoundsException.class);
+        char[] abc = "abc".toCharArray();
+        test.fail(abc, -1, 2, 0, 0, IndexOutOfBoundsException.class);
+        test.fail(abc, 2, 2, 3, 0, IndexOutOfBoundsException.class);
+        test.fail(abc, 1, -1, 0, 0, IndexOutOfBoundsException.class);
+        test.fail(abc, 1, 1, 2, -2, IndexOutOfBoundsException.class);
+        test.fail(abc, 1, 1, 1, 2, IndexOutOfBoundsException.class);
+        test.fail(abc, 1, 2, 1, 3, IndexOutOfBoundsException.class);
+        test.fail(abc, 0, 2, 2, -3, IndexOutOfBoundsException.class);
+        test.test("", 0, 0, 0, 0, 0, false);
+        test.test("\ud800", 0, 1, 0, 1, 1, true);
+        test.test("\udc00", 0, 1, 0, 1, 1, true);
+
+        String s = "\ud800\udc00";
+        test.test(s, 0, 1, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 1, 2, true);
+        test.test(s, 0, 2, 1, 1, 2, false);
+        test.test(s, 1, 1, 1, 1, 2, true);
+
+        s = "\udc00\ud800";
+        test.test(s, 0, 1, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 2, 2, true);
+        test.test(s, 0, 2, 1, 1, 2, true);
+        test.test(s, 1, 1, 1, 1, 2, true);
+
+        s = "\ud800\ud800\udc00";
+        test.test(s, 0, 1, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 2, 2, true);
+        test.test(s, 0, 2, 1, 1, 2, true);
+        test.test(s, 0, 3, 0, 1, 1, true);
+        test.test(s, 0, 3, 0, 2, 3, true);
+        test.test(s, 0, 3, 1, 1, 3, true);
+        test.test(s, 0, 3, 2, 1, 3, false);
+        test.test(s, 1, 1, 1, 1, 2, true);
+        test.test(s, 1, 2, 1, 1, 3, true);
+        test.test(s, 1, 2, 2, 1, 3, false);
+        test.test(s, 2, 1, 2, 1, 3, true);
+
+        s = "\ud800\udc00\udc00";
+        test.test(s, 0, 1, 0, 1, 1, true);
+        test.test(s, 0, 2, 0, 1, 2, true);
+        test.test(s, 0, 2, 1, 1, 2, false);
+        test.test(s, 0, 3, 0, 1, 2, true);
+        test.test(s, 0, 3, 0, 2, 3, true);
+        test.test(s, 0, 3, 1, 1, 2, false);
+        test.test(s, 0, 3, 1, 2, 3, false);
+        test.test(s, 0, 3, 2, 1, 3, true);
+        test.test(s, 1, 1, 1, 1, 2, true);
+        test.test(s, 1, 2, 1, 1, 2, true);
+        test.test(s, 1, 2, 1, 2, 3, true);
+        test.test(s, 1, 2, 2, 1, 3, true);
+        test.test(s, 2, 1, 2, 1, 3, true);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
new file mode 100644
index 0000000..3d7583c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
@@ -0,0 +1,2427 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.impl.UCharacterName;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.USerializedSet;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+import java.io.BufferedReader;
+import java.util.Arrays;
+
+/**
+* Testing class for UCharacter
+* Mostly following the test cases for ICU
+* @author Syn Wee Quek
+* @since nov 04 2000
+*/
+public final class UCharacterTest extends TestFmwk
+{
+    // private variables =============================================
+
+    /**
+    * ICU4J data version number
+    */
+    private final VersionInfo VERSION_ = VersionInfo.getInstance("5.1.0.0");
+
+    // constructor ===================================================
+
+    /**
+    * Constructor
+    */
+    public UCharacterTest()
+    {
+    }
+
+    // public methods ================================================
+
+    public static void main(String[] arg)
+    {
+        try
+        {
+            UCharacterTest test = new UCharacterTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+        e.printStackTrace();
+        }
+    }
+
+    /**
+    * Testing the letter and number determination in UCharacter
+    */
+    public void TestLetterNumber()
+    {
+        for (int i = 0x0041; i < 0x005B; i ++)
+        if (!UCharacter.isLetter(i))
+            errln("FAIL \\u" + hex(i) + " expected to be a letter");
+
+        for (int i = 0x0660; i < 0x066A; i ++)
+        if (UCharacter.isLetter(i))
+            errln("FAIL \\u" + hex(i) + " expected not to be a letter");
+
+        for (int i = 0x0660; i < 0x066A; i ++)
+        if (!UCharacter.isDigit(i))
+            errln("FAIL \\u" + hex(i) + " expected to be a digit");
+
+        for (int i = 0x0041; i < 0x005B; i ++)
+            if (!UCharacter.isLetterOrDigit(i))
+                errln("FAIL \\u" + hex(i) + " expected not to be a digit");
+
+        for (int i = 0x0660; i < 0x066A; i ++)
+            if (!UCharacter.isLetterOrDigit(i))
+                errln("FAIL \\u" + hex(i) +
+                    "expected to be either a letter or a digit");
+
+        /*
+         * The following checks work only starting from Unicode 4.0.
+         * Check the version number here.
+         */
+        VersionInfo version =    UCharacter.getUnicodeVersion();
+        if(version.getMajor()<4 || version.equals(VersionInfo.getInstance(4, 0, 1))) {
+            return;
+        }
+
+
+
+        /*
+         * Sanity check:
+         * Verify that exactly the digit characters have decimal digit values.
+         * This assumption is used in the implementation of u_digit()
+         * (which checks nt=de)
+         * compared with the parallel java.lang.Character.digit()
+         * (which checks Nd).
+         *
+         * This was not true in Unicode 3.2 and earlier.
+         * Unicode 4.0 fixed discrepancies.
+         * Unicode 4.0.1 re-introduced problems in this area due to an
+         * unintentionally incomplete last-minute change.
+         */
+        String digitsPattern = "[:Nd:]";
+        String decimalValuesPattern = "[:Numeric_Type=Decimal:]";
+
+        UnicodeSet digits, decimalValues;
+
+        digits= new UnicodeSet(digitsPattern);
+        decimalValues=new UnicodeSet(decimalValuesPattern);
+
+
+        compareUSets(digits, decimalValues, "[:Nd:]", "[:Numeric_Type=Decimal:]", true);
+
+
+    }
+
+    /**
+    * Tests for space determination in UCharacter
+    */
+    public void TestSpaces()
+    {
+        int spaces[] = {0x0020, 0x0000a0, 0x002000, 0x002001, 0x002005};
+        int nonspaces[] = {0x61, 0x0062, 0x0063, 0x0064, 0x0074};
+        int whitespaces[] = {0x2008, 0x002009, 0x00200a, 0x00001c, 0x00000c};
+        int nonwhitespaces[] = {0x61, 0x0062, 0x003c, 0x0028, 0x003f};
+
+        int size = spaces.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (!UCharacter.isSpaceChar(spaces[i]))
+            {
+                errln("FAIL \\u" + hex(spaces[i]) +
+                    " expected to be a space character");
+                break;
+            }
+
+            if (UCharacter.isSpaceChar(nonspaces[i]))
+            {
+                errln("FAIL \\u" + hex(nonspaces[i]) +
+                " expected not to be space character");
+                break;
+            }
+
+            if (!UCharacter.isWhitespace(whitespaces[i]))
+            {
+                errln("FAIL \\u" + hex(whitespaces[i]) +
+                        " expected to be a white space character");
+                break;
+            }
+            if (UCharacter.isWhitespace(nonwhitespaces[i]))
+            {
+                errln("FAIL \\u" + hex(nonwhitespaces[i]) +
+                            " expected not to be a space character");
+                break;
+            }
+            logln("Ok    \\u" + hex(spaces[i]) + " and \\u" +
+                  hex(nonspaces[i]) + " and \\u" + hex(whitespaces[i]) +
+                  " and \\u" + hex(nonwhitespaces[i]));
+        }
+
+        int rulewhitespace[] = {0x9, 0xd, 0x20, 0x85,
+                                0x200e, 0x200f, 0x2028, 0x2029};
+        int nonrulewhitespace[] = {0x8, 0xe, 0x21, 0x86, 0xa0, 0xa1,
+                                   0x1680, 0x1681, 0x180e, 0x180f,
+                                   0x1FFF, 0x2000, 0x200a, 0x200b,
+                                   0x2010, 0x202f, 0x2030, 0x205f,
+                                   0x2060, 0x3000, 0x3001};
+        for (int i = 0; i < rulewhitespace.length; i ++) {
+            if (!UCharacterProperty.isRuleWhiteSpace(rulewhitespace[i])) {
+                errln("\\u" + Utility.hex(rulewhitespace[i], 4)
+                      + " expected to be a rule white space");
+            }
+        }
+        for (int i = 0; i < nonrulewhitespace.length; i ++) {
+            if (UCharacterProperty.isRuleWhiteSpace(nonrulewhitespace[i])) {
+                errln("\\u" + Utility.hex(nonrulewhitespace[i], 4)
+                      + " expected to be a non rule white space");
+            }
+        }
+    }
+
+    /**
+    * Tests for defined and undefined characters
+    */
+    public void TestDefined()
+    {
+        int undefined[] = {0xfff1, 0xfff7, 0xfa6b};
+        int defined[] = {0x523E, 0x004f88, 0x00fffd};
+
+        int size = undefined.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (UCharacter.isDefined(undefined[i]))
+            {
+                errln("FAIL \\u" + hex(undefined[i]) +
+                            " expected not to be defined");
+                break;
+            }
+            if (!UCharacter.isDefined(defined[i]))
+            {
+                errln("FAIL \\u" + hex(defined[i]) + " expected defined");
+                break;
+            }
+        }
+    }
+
+    /**
+    * Tests for base characters and their cellwidth
+    */
+    public void TestBase()
+    {
+        int base[] = {0x0061, 0x000031, 0x0003d2};
+        int nonbase[] = {0x002B, 0x000020, 0x00203B};
+        int size = base.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (UCharacter.isBaseForm(nonbase[i]))
+            {
+                errln("FAIL \\u" + hex(nonbase[i]) +
+                            " expected not to be a base character");
+                break;
+            }
+            if (!UCharacter.isBaseForm(base[i]))
+            {
+                errln("FAIL \\u" + hex(base[i]) +
+                      " expected to be a base character");
+                break;
+            }
+        }
+    }
+
+    /**
+    * Tests for digit characters
+    */
+    public void TestDigits()
+    {
+        int digits[] = {0x0030, 0x000662, 0x000F23, 0x000ED5, 0x002160};
+
+        //special characters not in the properties table
+        int digits2[] = {0x3007, 0x004e00, 0x004e8c, 0x004e09, 0x0056d8,
+                         0x004e94, 0x00516d, 0x4e03, 0x00516b, 0x004e5d};
+        int nondigits[] = {0x0010, 0x000041, 0x000122, 0x0068FE};
+
+        int digitvalues[] = {0, 2, 3, 5, 1};
+        int digitvalues2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+
+        int size  = digits.length;
+        for (int i = 0; i < size; i ++) {
+            if (UCharacter.isDigit(digits[i]) &&
+                UCharacter.digit(digits[i]) != digitvalues[i])
+            {
+                errln("FAIL \\u" + hex(digits[i]) +
+                        " expected digit with value " + digitvalues[i]);
+                break;
+            }
+        }
+        size = nondigits.length;
+        for (int i = 0; i < size; i ++)
+            if (UCharacter.isDigit(nondigits[i]))
+            {
+                errln("FAIL \\u" + hex(nondigits[i]) + " expected nondigit");
+                break;
+            }
+
+        size = digits2.length;
+        for (int i = 0; i < 10; i ++) {
+            if (UCharacter.isDigit(digits2[i]) &&
+                UCharacter.digit(digits2[i]) != digitvalues2[i])
+            {
+                errln("FAIL \\u" + hex(digits2[i]) +
+                    " expected digit with value " + digitvalues2[i]);
+                break;
+            }
+        }
+    }
+
+    /**
+    *  Tests for numeric characters
+    */
+    public void TestNumeric()
+    {
+        if (UCharacter.getNumericValue(0x00BC) != -2) {
+            errln("Numeric value of 0x00BC expected to be -2");
+        }
+
+        for (int i = '0'; i < '9'; i ++) {
+            int n1 = UCharacter.getNumericValue(i);
+            double n2 = UCharacter.getUnicodeNumericValue(i);
+            if (n1 != n2 ||  n1 != (i - '0')) {
+                errln("Numeric value of " + (char)i + " expected to be " +
+                      (i - '0'));
+            }
+        }
+        for (int i = 'A'; i < 'F'; i ++) {
+            int n1 = UCharacter.getNumericValue(i);
+            double n2 = UCharacter.getUnicodeNumericValue(i);
+            if (n2 != UCharacter.NO_NUMERIC_VALUE ||  n1 != (i - 'A' + 10)) {
+                errln("Numeric value of " + (char)i + " expected to be " +
+                      (i - 'A' + 10));
+            }
+        }
+        for (int i = 0xFF21; i < 0xFF26; i ++) {
+            // testing full wideth latin characters A-F
+            int n1 = UCharacter.getNumericValue(i);
+            double n2 = UCharacter.getUnicodeNumericValue(i);
+            if (n2 != UCharacter.NO_NUMERIC_VALUE ||  n1 != (i - 0xFF21 + 10)) {
+                errln("Numeric value of " + (char)i + " expected to be " +
+                      (i - 0xFF21 + 10));
+            }
+        }
+        // testing han numbers
+        int han[] = {0x96f6, 0, 0x58f9, 1, 0x8cb3, 2, 0x53c3, 3,
+                     0x8086, 4, 0x4f0d, 5, 0x9678, 6, 0x67d2, 7,
+                     0x634c, 8, 0x7396, 9, 0x5341, 10, 0x62fe, 10,
+                     0x767e, 100, 0x4f70, 100, 0x5343, 1000, 0x4edf, 1000,
+                     0x824c, 10000, 0x5104, 100000000};
+        for (int i = 0; i < han.length; i += 2) {
+            if (UCharacter.getHanNumericValue(han[i]) != han[i + 1]) {
+                errln("Numeric value of \\u" +
+                      Integer.toHexString(han[i]) + " expected to be " +
+                      han[i + 1]);
+            }
+        }
+    }
+
+    /**
+    * Tests for version
+    */
+    public void TestVersion()
+    {
+        if (!UCharacter.getUnicodeVersion().equals(VERSION_))
+            errln("FAIL expected: " + VERSION_ + "got: " + UCharacter.getUnicodeVersion());
+    }
+
+    /**
+    * Tests for control characters
+    */
+    public void TestISOControl()
+    {
+        int control[] = {0x001b, 0x000097, 0x000082};
+        int noncontrol[] = {0x61, 0x000031, 0x0000e2};
+
+        int size = control.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (!UCharacter.isISOControl(control[i]))
+            {
+                errln("FAIL 0x" + Integer.toHexString(control[i]) +
+                        " expected to be a control character");
+                break;
+            }
+            if (UCharacter.isISOControl(noncontrol[i]))
+            {
+                errln("FAIL 0x" + Integer.toHexString(noncontrol[i]) +
+                        " expected to be not a control character");
+                break;
+            }
+
+            logln("Ok    0x" + Integer.toHexString(control[i]) + " and 0x" +
+                    Integer.toHexString(noncontrol[i]));
+        }
+    }
+
+    /**
+     * Test Supplementary
+     */
+    public void TestSupplementary()
+    {
+        for (int i = 0; i < 0x10000; i ++) {
+            if (UCharacter.isSupplementary(i)) {
+                errln("Codepoint \\u" + Integer.toHexString(i) +
+                      " is not supplementary");
+            }
+        }
+        for (int i = 0x10000; i < 0x10FFFF; i ++) {
+            if (!UCharacter.isSupplementary(i)) {
+                errln("Codepoint \\u" + Integer.toHexString(i) +
+                      " is supplementary");
+            }
+        }
+    }
+
+    /**
+     * Test mirroring
+     */
+    public void TestMirror()
+    {
+        if (!(UCharacter.isMirrored(0x28) && UCharacter.isMirrored(0xbb) &&
+              UCharacter.isMirrored(0x2045) && UCharacter.isMirrored(0x232a)
+              && !UCharacter.isMirrored(0x27) &&
+              !UCharacter.isMirrored(0x61) && !UCharacter.isMirrored(0x284)
+              && !UCharacter.isMirrored(0x3400))) {
+            errln("isMirrored() does not work correctly");
+        }
+
+        if (!(UCharacter.getMirror(0x3c) == 0x3e &&
+              UCharacter.getMirror(0x5d) == 0x5b &&
+              UCharacter.getMirror(0x208d) == 0x208e &&
+              UCharacter.getMirror(0x3017) == 0x3016 &&
+
+              UCharacter.getMirror(0xbb) == 0xab &&
+              UCharacter.getMirror(0x2215) == 0x29F5 &&
+              UCharacter.getMirror(0x29F5) == 0x2215 && /* large delta between the code points */
+
+              UCharacter.getMirror(0x2e) == 0x2e &&
+              UCharacter.getMirror(0x6f3) == 0x6f3 &&
+              UCharacter.getMirror(0x301c) == 0x301c &&
+              UCharacter.getMirror(0xa4ab) == 0xa4ab &&
+
+              /* see Unicode Corrigendum #6 at http://www.unicode.org/versions/corrigendum6.html */
+              UCharacter.getMirror(0x2018) == 0x2018 &&
+              UCharacter.getMirror(0x201b) == 0x201b &&
+              UCharacter.getMirror(0x301d) == 0x301d)) {
+            errln("getMirror() does not work correctly");
+        }
+
+        /* verify that Bidi_Mirroring_Glyph roundtrips */
+        UnicodeSet set=new UnicodeSet("[:Bidi_Mirrored:]");
+        UnicodeSetIterator iter=new UnicodeSetIterator(set);
+        int start, end, c2, c3;
+        while(iter.nextRange() && (start=iter.codepoint)>=0) {
+            end=iter.codepointEnd;
+            do {
+                c2=UCharacter.getMirror(start);
+                c3=UCharacter.getMirror(c2);
+                if(c3!=start) {
+                    errln("getMirror() does not roundtrip: U+"+hex(start)+"->U+"+hex(c2)+"->U+"+hex(c3));
+                }
+            } while(++start<=end);
+        }
+
+        // verify that Unicode Corrigendum #6 reverts mirrored status of the following
+        if (UCharacter.isMirrored(0x2018) ||
+            UCharacter.isMirrored(0x201d) ||
+            UCharacter.isMirrored(0x201f) ||
+            UCharacter.isMirrored(0x301e)) {
+            errln("Unicode Corrigendum #6 conflict, one or more of 2018/201d/201f/301e has mirrored property");
+        }
+    }
+
+    /**
+    * Tests for printable characters
+    */
+    public void TestPrint()
+    {
+        int printable[] = {0x0042, 0x00005f, 0x002014};
+        int nonprintable[] = {0x200c, 0x00009f, 0x00001b};
+
+        int size = printable.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (!UCharacter.isPrintable(printable[i]))
+            {
+                errln("FAIL \\u" + hex(printable[i]) +
+                    " expected to be a printable character");
+                break;
+            }
+            if (UCharacter.isPrintable(nonprintable[i]))
+            {
+                errln("FAIL \\u" + hex(nonprintable[i]) +
+                        " expected not to be a printable character");
+                break;
+            }
+            logln("Ok    \\u" + hex(printable[i]) + " and \\u" +
+                    hex(nonprintable[i]));
+        }
+
+        // test all ISO 8 controls
+        for (int ch = 0; ch <= 0x9f; ++ ch) {
+            if (ch == 0x20) {
+                // skip ASCII graphic characters and continue with DEL
+                ch = 0x7f;
+            }
+            if (UCharacter.isPrintable(ch)) {
+                errln("Fail \\u" + hex(ch) +
+                    " is a ISO 8 control character hence not printable\n");
+            }
+        }
+
+        /* test all Latin-1 graphic characters */
+        for (int ch = 0x20; ch <= 0xff; ++ ch) {
+            if (ch == 0x7f) {
+                ch = 0xa0;
+            }
+            if (!UCharacter.isPrintable(ch)
+                && ch != 0x00AD/* Unicode 4.0 changed the defintion of soft hyphen to be a Cf*/) {
+                errln("Fail \\u" + hex(ch) +
+                      " is a Latin-1 graphic character\n");
+            }
+        }
+    }
+
+    /**
+    * Testing for identifier characters
+    */
+    public void TestIdentifier()
+    {
+        int unicodeidstart[] = {0x0250, 0x0000e2, 0x000061};
+        int nonunicodeidstart[] = {0x2000, 0x00000a, 0x002019};
+        int unicodeidpart[] = {0x005f, 0x000032, 0x000045};
+        int nonunicodeidpart[] = {0x2030, 0x0000a3, 0x000020};
+        int idignore[] = {0x0006, 0x0010, 0x206b};
+        int nonidignore[] = {0x0075, 0x0000a3, 0x000061};
+
+        int size = unicodeidstart.length;
+        for (int i = 0; i < size; i ++)
+        {
+            if (!UCharacter.isUnicodeIdentifierStart(unicodeidstart[i]))
+            {
+                errln("FAIL \\u" + hex(unicodeidstart[i]) +
+                    " expected to be a unicode identifier start character");
+                break;
+            }
+            if (UCharacter.isUnicodeIdentifierStart(nonunicodeidstart[i]))
+            {
+                errln("FAIL \\u" + hex(nonunicodeidstart[i]) +
+                        " expected not to be a unicode identifier start " +
+                        "character");
+                break;
+            }
+            if (!UCharacter.isUnicodeIdentifierPart(unicodeidpart[i]))
+            {
+                errln("FAIL \\u" + hex(unicodeidpart[i]) +
+                    " expected to be a unicode identifier part character");
+                break;
+            }
+            if (UCharacter.isUnicodeIdentifierPart(nonunicodeidpart[i]))
+            {
+                errln("FAIL \\u" + hex(nonunicodeidpart[i]) +
+                        " expected not to be a unicode identifier part " +
+                        "character");
+                break;
+            }
+            if (!UCharacter.isIdentifierIgnorable(idignore[i]))
+            {
+                errln("FAIL \\u" + hex(idignore[i]) +
+                        " expected to be a ignorable unicode character");
+                break;
+            }
+            if (UCharacter.isIdentifierIgnorable(nonidignore[i]))
+            {
+                errln("FAIL \\u" + hex(nonidignore[i]) +
+                    " expected not to be a ignorable unicode character");
+                break;
+            }
+            logln("Ok    \\u" + hex(unicodeidstart[i]) + " and \\u" +
+                    hex(nonunicodeidstart[i]) + " and \\u" +
+                    hex(unicodeidpart[i]) + " and \\u" +
+                    hex(nonunicodeidpart[i]) + " and \\u" +
+                    hex(idignore[i]) + " and \\u" + hex(nonidignore[i]));
+        }
+    }
+
+    /**
+    * Tests for the character types, direction.<br>
+    * This method reads in UnicodeData.txt file for testing purposes. A
+    * default path is provided relative to the src path, however the user
+    * could set a system property to change the directory path.<br>
+    * e.g. java -DUnicodeData="data_directory_path"
+    * com.ibm.icu.dev.test.lang.UCharacterTest
+    */
+    public void TestUnicodeData()
+    {
+        // this is the 2 char category types used in the UnicodeData file
+        final String TYPE =
+            "LuLlLtLmLoMnMeMcNdNlNoZsZlZpCcCfCoCsPdPsPePcPoSmScSkSoPiPf";
+
+        // directory types used in the UnicodeData file
+        // padded by spaces to make each type size 4
+        final String DIR =
+            "L   R   EN  ES  ET  AN  CS  B   S   WS  ON  LRE LRO AL  RLE RLO PDF NSM BN  ";
+
+        final int LASTUNICODECHAR = 0xFFFD;
+        int ch = 0,
+            index = 0,
+            type = 0,
+            dir = 0;
+
+        try
+        {
+            BufferedReader input = TestUtil.getDataReader(
+                                                "unicode/UnicodeData.txt");
+            int numErrors = 0;
+
+            while (ch != LASTUNICODECHAR)
+            {
+                String s = input.readLine();
+                if(s.length()<4 || s.startsWith("#")) {
+                    continue;
+                }
+                // geting the unicode character, its type and its direction
+                ch = Integer.parseInt(s.substring(0, 4), 16);
+                index = s.indexOf(';', 5);
+                String t = s.substring(index + 1, index + 3);
+                index += 4;
+                int oldindex = index;
+                index = s.indexOf(';', index);
+                int cc = Integer.parseInt(s.substring(oldindex, index));
+                oldindex = index + 1;
+                index = s.indexOf(';', oldindex);
+                String d = s.substring(oldindex, index);
+
+                for (int i = 0; i < 6; i ++) {
+                    index = s.indexOf(';', index + 1);
+                    // skipping to the 11th field
+                }
+                // iso comment
+                oldindex = index + 1;
+                index = s.indexOf(';', oldindex);
+                String isocomment = s.substring(oldindex, index);
+                // uppercase
+                oldindex = index + 1;
+                index = s.indexOf(';', oldindex);
+                String upper = s.substring(oldindex, index);
+                // lowercase
+                oldindex = index + 1;
+                index = s.indexOf(';', oldindex);
+                String lower = s.substring(oldindex, index);
+                // titlecase last element
+                oldindex = index + 1;
+                String title = s.substring(oldindex);
+
+                // testing the category
+                // we override the general category of some control
+                // characters
+                type = TYPE.indexOf(t);
+                if (type < 0)
+                    type = 0;
+                else
+                    type = (type >> 1) + 1;
+                if (UCharacter.getType(ch) != type)
+                {
+                    errln("FAIL \\u" + hex(ch) + " expected type " +
+                            type);
+                    break;
+                }
+
+                if (UCharacter.getIntPropertyValue(ch,
+                           UProperty.GENERAL_CATEGORY_MASK) != (1 << type)) {
+                    errln("error: getIntPropertyValue(\\u" +
+                          Integer.toHexString(ch) +
+                          ", UProperty.GENERAL_CATEGORY_MASK) != " +
+                          "getMask(getType(ch))");
+                }
+
+                // testing combining class
+                if (UCharacter.getCombiningClass(ch) != cc)
+                {
+                    errln("FAIL \\u" + hex(ch) + " expected combining " +
+                            "class " + cc);
+                    break;
+                }
+
+                // testing the direction
+                if (d.length() == 1)
+                    d = d + "   ";
+
+                dir = DIR.indexOf(d) >> 2;
+                if (UCharacter.getDirection(ch) != dir)
+                {
+                    errln("FAIL \\u" + hex(ch) +
+                        " expected direction " + dir + " but got " +
+              UCharacter.getDirection(ch));
+                    break;
+                }
+
+                byte bdir = (byte)dir;
+                if (UCharacter.getDirectionality(ch) != bdir)
+                {
+                    errln("FAIL \\u" + hex(ch) +
+                        " expected directionality " + bdir + " but got " +
+              UCharacter.getDirectionality(ch));
+                    break;
+                }
+
+                // testing iso comment
+                try{
+                    String comment = UCharacter.getISOComment(ch);
+                    if (comment == null) {
+                        comment = "";
+                    }
+                    if (!comment.equals(isocomment)) {
+                        errln("FAIL \\u" + hex(ch) +
+                            " expected iso comment " + isocomment);
+                        break;
+                    }
+                }catch(Exception e){
+                    if(e.getMessage().indexOf("unames.icu") >= 0){
+                        numErrors++;
+                    }else{
+                        throw e;
+                    }
+                }
+
+                int tempchar = ch;
+                if (upper.length() > 0) {
+                    tempchar = Integer.parseInt(upper, 16);
+                }
+                if (UCharacter.toUpperCase(ch) != tempchar) {
+                    errln("FAIL \\u" + Utility.hex(ch, 4)
+                            + " expected uppercase \\u"
+                            + Utility.hex(tempchar, 4));
+                    break;
+                }
+                tempchar = ch;
+                if (lower.length() > 0) {
+                    tempchar = Integer.parseInt(lower, 16);
+                }
+                if (UCharacter.toLowerCase(ch) != tempchar) {
+                    errln("FAIL \\u" + Utility.hex(ch, 4)
+                            + " expected lowercase \\u"
+                            + Utility.hex(tempchar, 4));
+                    break;
+                }
+                tempchar = ch;
+                if (title.length() > 0) {
+                    tempchar = Integer.parseInt(title, 16);
+                }
+                if (UCharacter.toTitleCase(ch) != tempchar) {
+                    errln("FAIL \\u" + Utility.hex(ch, 4)
+                            + " expected titlecase \\u"
+                            + Utility.hex(tempchar, 4));
+                    break;
+                }
+            }
+            input.close();
+            if(numErrors > 0){
+                warnln("Could not find unames.icu");
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+
+        if (UCharacter.UnicodeBlock.of(0x0041)
+                                        != UCharacter.UnicodeBlock.BASIC_LATIN
+            || UCharacter.getIntPropertyValue(0x41, UProperty.BLOCK)
+                              != UCharacter.UnicodeBlock.BASIC_LATIN.getID()) {
+            errln("UCharacter.UnicodeBlock.of(\\u0041) property failed! "
+                    + "Expected : "
+                    + UCharacter.UnicodeBlock.BASIC_LATIN.getID() + " got "
+                    + UCharacter.UnicodeBlock.of(0x0041));
+        }
+
+        // sanity check on repeated properties
+        for (ch = 0xfffe; ch <= 0x10ffff;) {
+            type = UCharacter.getType(ch);
+            if (UCharacter.getIntPropertyValue(ch,
+                                               UProperty.GENERAL_CATEGORY_MASK)
+                != (1 << type)) {
+                errln("error: UCharacter.getIntPropertyValue(\\u"
+                      + Integer.toHexString(ch)
+                      + ", UProperty.GENERAL_CATEGORY_MASK) != "
+                      + "getMask(getType())");
+            }
+            if (type != UCharacterCategory.UNASSIGNED) {
+                errln("error: UCharacter.getType(\\u" + Utility.hex(ch, 4)
+                        + " != UCharacterCategory.UNASSIGNED (returns "
+                        + UCharacterCategory.toString(UCharacter.getType(ch))
+                        + ")");
+            }
+            if ((ch & 0xffff) == 0xfffe) {
+                ++ ch;
+            }
+            else {
+                ch += 0xffff;
+            }
+        }
+
+        // test that PUA is not "unassigned"
+        for(ch = 0xe000; ch <= 0x10fffd;) {
+            type = UCharacter.getType(ch);
+            if (UCharacter.getIntPropertyValue(ch,
+                                               UProperty.GENERAL_CATEGORY_MASK)
+                != (1 << type)) {
+                errln("error: UCharacter.getIntPropertyValue(\\u"
+                      + Integer.toHexString(ch)
+                      + ", UProperty.GENERAL_CATEGORY_MASK) != "
+                      + "getMask(getType())");
+            }
+
+            if (type == UCharacterCategory.UNASSIGNED) {
+                errln("error: UCharacter.getType(\\u"
+                        + Utility.hex(ch, 4)
+                        + ") == UCharacterCategory.UNASSIGNED");
+            }
+            else if (type != UCharacterCategory.PRIVATE_USE) {
+                logln("PUA override: UCharacter.getType(\\u"
+                      + Utility.hex(ch, 4) + ")=" + type);
+            }
+            if (ch == 0xf8ff) {
+                ch = 0xf0000;
+            }
+            else if (ch == 0xffffd) {
+                ch = 0x100000;
+            }
+            else {
+                ++ ch;
+            }
+        }
+    }
+
+
+    /**
+    * Test for the character names
+    */
+    public void TestNames()
+    {
+        try{
+            int length = UCharacterName.getInstance().getMaxCharNameLength();
+            if (length < 83) { // Unicode 3.2 max char name length
+               errln("getMaxCharNameLength()=" + length + " is too short");
+            }
+            // ### TODO same tests for max ISO comment length as for max name length
+
+            int c[] = {0x0061,                //LATIN SMALL LETTER A
+                       0x000284,              //LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+                       0x003401,              //CJK UNIFIED IDEOGRAPH-3401
+                       0x007fed,              //CJK UNIFIED IDEOGRAPH-7FED
+                       0x00ac00,              //HANGUL SYLLABLE GA
+                       0x00d7a3,              //HANGUL SYLLABLE HIH
+                       0x00d800, 0x00dc00,    //LINEAR B SYLLABLE B008 A
+                       0xff08,                //FULLWIDTH LEFT PARENTHESIS
+                       0x00ffe5,              //FULLWIDTH YEN SIGN
+                       0x00ffff,              //null
+                       0x0023456              //CJK UNIFIED IDEOGRAPH-23456
+                       };
+            String name[] = {
+                             "LATIN SMALL LETTER A",
+                             "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK",
+                             "CJK UNIFIED IDEOGRAPH-3401",
+                             "CJK UNIFIED IDEOGRAPH-7FED",
+                             "HANGUL SYLLABLE GA",
+                             "HANGUL SYLLABLE HIH",
+                             "",
+                             "",
+                             "FULLWIDTH LEFT PARENTHESIS",
+                             "FULLWIDTH YEN SIGN",
+                             "",
+                             "CJK UNIFIED IDEOGRAPH-23456"
+                             };
+            String oldname[] = {"", "LATIN SMALL LETTER DOTLESS J BAR HOOK", "",
+                            "",
+                            "", "", "", "", "FULLWIDTH OPENING PARENTHESIS", "",
+                            "", ""};
+            String extendedname[] = {"LATIN SMALL LETTER A",
+                                 "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK",
+                                 "CJK UNIFIED IDEOGRAPH-3401",
+                                 "CJK UNIFIED IDEOGRAPH-7FED",
+                                 "HANGUL SYLLABLE GA",
+                                 "HANGUL SYLLABLE HIH",
+                                 "<lead surrogate-D800>",
+                                 "<trail surrogate-DC00>",
+                                 "FULLWIDTH LEFT PARENTHESIS",
+                                 "FULLWIDTH YEN SIGN",
+                                 "<noncharacter-FFFF>",
+                                 "CJK UNIFIED IDEOGRAPH-23456"};
+
+            int size = c.length;
+            String str;
+            int uc;
+
+            for (int i = 0; i < size; i ++)
+            {
+                // modern Unicode character name
+                str = UCharacter.getName(c[i]);
+                if ((str == null && name[i].length() > 0) ||
+                    (str != null && !str.equals(name[i])))
+                {
+                    errln("FAIL \\u" + hex(c[i]) + " expected name " +
+                            name[i]);
+                    break;
+                }
+
+                // 1.0 Unicode character name
+                str = UCharacter.getName1_0(c[i]);
+                if ((str == null && oldname[i].length() > 0) ||
+                    (str != null && !str.equals(oldname[i])))
+                {
+                    errln("FAIL \\u" + hex(c[i]) + " expected 1.0 name " +
+                            oldname[i]);
+                    break;
+                }
+
+                // extended character name
+                str = UCharacter.getExtendedName(c[i]);
+                if (str == null || !str.equals(extendedname[i]))
+                {
+                    errln("FAIL \\u" + hex(c[i]) + " expected extended name " +
+                            extendedname[i]);
+                    break;
+                }
+
+                // retrieving unicode character from modern name
+                uc = UCharacter.getCharFromName(name[i]);
+                if (uc != c[i] && name[i].length() != 0)
+                {
+                    errln("FAIL " + name[i] + " expected character \\u" +
+                          hex(c[i]));
+                    break;
+                }
+
+                //retrieving unicode character from 1.0 name
+                uc = UCharacter.getCharFromName1_0(oldname[i]);
+                if (uc != c[i] && oldname[i].length() != 0)
+                {
+                    errln("FAIL " + oldname[i] + " expected 1.0 character \\u" +
+                          hex(c[i]));
+                    break;
+                }
+
+                //retrieving unicode character from 1.0 name
+                uc = UCharacter.getCharFromExtendedName(extendedname[i]);
+                if (uc != c[i] && i != 0 && (i == 1 || i == 6))
+                {
+                    errln("FAIL " + extendedname[i] +
+                          " expected extended character \\u" + hex(c[i]));
+                    break;
+                }
+            }
+
+            // test getName works with mixed-case names (new in 2.0)
+            if (0x61 != UCharacter.getCharFromName("LATin smALl letTER A")) {
+                errln("FAIL: 'LATin smALl letTER A' should result in character "
+                      + "U+0061");
+            }
+
+            if (getInclusion() >= 5) {
+                // extra testing different from icu
+                for (int i = UCharacter.MIN_VALUE; i < UCharacter.MAX_VALUE; i ++)
+                {
+                    str = UCharacter.getName(i);
+                    if (str != null && UCharacter.getCharFromName(str) != i)
+                    {
+                        errln("FAIL \\u" + hex(i) + " " + str  +
+                                            " retrieval of name and vice versa" );
+                        break;
+                    }
+                }
+            }
+
+            // Test getCharNameCharacters
+            if (getInclusion() >= 10) {
+                boolean map[] = new boolean[256];
+
+                UnicodeSet set = new UnicodeSet(1, 0); // empty set
+                UnicodeSet dumb = new UnicodeSet(1, 0); // empty set
+
+                // uprv_getCharNameCharacters() will likely return more lowercase
+                // letters than actual character names contain because
+                // it includes all the characters in lowercased names of
+                // general categories, for the full possible set of extended names.
+                UCharacterName.getInstance().getCharNameCharacters(set);
+
+                // build set the dumb (but sure-fire) way
+                Arrays.fill(map, false);
+
+                int maxLength = 0;
+                for (int cp = 0; cp < 0x110000; ++ cp) {
+                    String n = UCharacter.getExtendedName(cp);
+                    int len = n.length();
+                    if (len > maxLength) {
+                        maxLength = len;
+                    }
+
+                    for (int i = 0; i < len; ++ i) {
+                        char ch = n.charAt(i);
+                        if (!map[ch & 0xff]) {
+                            dumb.add(ch);
+                            map[ch & 0xff] = true;
+                        }
+                    }
+                }
+
+                length = UCharacterName.getInstance().getMaxCharNameLength();
+                if (length != maxLength) {
+                    errln("getMaxCharNameLength()=" + length
+                          + " differs from the maximum length " + maxLength
+                          + " of all extended names");
+                }
+
+                // compare the sets.  Where is my uset_equals?!!
+                boolean ok = true;
+                for (int i = 0; i < 256; ++ i) {
+                    if (set.contains(i) != dumb.contains(i)) {
+                        if (0x61 <= i && i <= 0x7a // a-z
+                            && set.contains(i) && !dumb.contains(i)) {
+                            // ignore lowercase a-z that are in set but not in dumb
+                            ok = true;
+                        }
+                        else {
+                            ok = false;
+                            break;
+                        }
+                    }
+                }
+
+                String pattern1 = set.toPattern(true);
+                String pattern2 = dumb.toPattern(true);
+
+                if (!ok) {
+                    errln("FAIL: getCharNameCharacters() returned " + pattern1
+                          + " expected " + pattern2
+                          + " (too many lowercase a-z are ok)");
+                } else {
+                    logln("Ok: getCharNameCharacters() returned " + pattern1);
+                }
+            }
+            // improve code coverage
+           String expected = "LATIN SMALL LETTER A|LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK|"+
+                             "CJK UNIFIED IDEOGRAPH-3401|CJK UNIFIED IDEOGRAPH-7FED|HANGUL SYLLABLE GA|"+
+                             "HANGUL SYLLABLE HIH|LINEAR B SYLLABLE B008 A|FULLWIDTH LEFT PARENTHESIS|"+
+                             "FULLWIDTH YEN SIGN|"+
+                             "null|"+ // getName returns null because 0xFFFF does not have a name, but has an extended name!
+                             "CJK UNIFIED IDEOGRAPH-23456";
+           String separator= "|";
+           String source = Utility.valueOf(c);
+           String result = UCharacter.getName(source, separator);
+           if(!result.equals(expected)){
+               errln("UCharacter.getName did not return the expected result.\n\t Expected: "+ expected+"\n\t Got: "+ result);
+           }
+
+        }catch(IllegalArgumentException e){
+            if(e.getMessage().indexOf("unames.icu") >= 0){
+                warnln("Could not find unames.icu");
+            }else{
+                throw e;
+            }
+        }
+
+    }
+
+
+    /**
+    * Testing name iteration
+    */
+    public void TestNameIteration()throws Exception
+    {
+        try {
+            ValueIterator iterator = UCharacter.getExtendedNameIterator();
+            ValueIterator.Element element = new ValueIterator.Element();
+            ValueIterator.Element old     = new ValueIterator.Element();
+            // testing subrange
+            iterator.setRange(-10, -5);
+            if (iterator.next(element)) {
+                errln("Fail, expected iterator to return false when range is set outside the meaningful range");
+            }
+            iterator.setRange(0x110000, 0x111111);
+            if (iterator.next(element)) {
+                errln("Fail, expected iterator to return false when range is set outside the meaningful range");
+            }
+            try {
+                iterator.setRange(50, 10);
+                errln("Fail, expected exception when encountered invalid range");
+            } catch (Exception e) {
+            }
+
+            iterator.setRange(-10, 10);
+            if (!iterator.next(element) || element.integer != 0) {
+                errln("Fail, expected iterator to return 0 when range start limit is set outside the meaningful range");
+            }
+
+            iterator.setRange(0x10FFFE, 0x200000);
+            int last = 0;
+            while (iterator.next(element)) {
+                last = element.integer;
+            }
+            if (last != 0x10FFFF) {
+                errln("Fail, expected iterator to return 0x10FFFF when range end limit is set outside the meaningful range");
+            }
+
+            iterator = UCharacter.getNameIterator();
+            iterator.setRange(0xF, 0x45);
+            while (iterator.next(element)) {
+                if (element.integer <= old.integer) {
+                    errln("FAIL next returned a less codepoint \\u" +
+                        Integer.toHexString(element.integer) + " than \\u" +
+                        Integer.toHexString(old.integer));
+                    break;
+                }
+                if (!UCharacter.getName(element.integer).equals(element.value))
+                {
+                    errln("FAIL next codepoint \\u" +
+                        Integer.toHexString(element.integer) +
+                        " does not have the expected name " +
+                        UCharacter.getName(element.integer) +
+                        " instead have the name " + (String)element.value);
+                    break;
+                }
+                old.integer = element.integer;
+            }
+
+            iterator.reset();
+            iterator.next(element);
+            if (element.integer != 0x20) {
+                errln("FAIL reset in iterator");
+            }
+
+            iterator.setRange(0, 0x110000);
+            old.integer = 0;
+            while (iterator.next(element)) {
+                if (element.integer != 0 && element.integer <= old.integer) {
+                    errln("FAIL next returned a less codepoint \\u" +
+                        Integer.toHexString(element.integer) + " than \\u" +
+                        Integer.toHexString(old.integer));
+                    break;
+                }
+                if (!UCharacter.getName(element.integer).equals(element.value))
+                {
+                    errln("FAIL next codepoint \\u" +
+                            Integer.toHexString(element.integer) +
+                            " does not have the expected name " +
+                            UCharacter.getName(element.integer) +
+                            " instead have the name " + (String)element.value);
+                    break;
+                }
+                for (int i = old.integer + 1; i < element.integer; i ++) {
+                    if (UCharacter.getName(i) != null) {
+                        errln("FAIL between codepoints are not null \\u" +
+                                Integer.toHexString(old.integer) + " and " +
+                                Integer.toHexString(element.integer) + " has " +
+                                Integer.toHexString(i) + " with a name " +
+                                UCharacter.getName(i));
+                        break;
+                    }
+                }
+                old.integer = element.integer;
+            }
+
+            iterator = UCharacter.getExtendedNameIterator();
+            old.integer = 0;
+            while (iterator.next(element)) {
+                if (element.integer != 0 && element.integer != old.integer) {
+                    errln("FAIL next returned a codepoint \\u" +
+                            Integer.toHexString(element.integer) +
+                            " different from \\u" +
+                            Integer.toHexString(old.integer));
+                    break;
+                }
+                if (!UCharacter.getExtendedName(element.integer).equals(
+                                                              element.value)) {
+                    errln("FAIL next codepoint \\u" +
+                        Integer.toHexString(element.integer) +
+                        " name should be "
+                        + UCharacter.getExtendedName(element.integer) +
+                        " instead of " + (String)element.value);
+                    break;
+                }
+                old.integer++;
+            }
+            iterator = UCharacter.getName1_0Iterator();
+            old.integer = 0;
+            while (iterator.next(element)) {
+                logln(Integer.toHexString(element.integer) + " " +
+                                                        (String)element.value);
+                if (element.integer != 0 && element.integer <= old.integer) {
+                    errln("FAIL next returned a less codepoint \\u" +
+                        Integer.toHexString(element.integer) + " than \\u" +
+                        Integer.toHexString(old.integer));
+                    break;
+                }
+                if (!element.value.equals(UCharacter.getName1_0(
+                                                            element.integer))) {
+                    errln("FAIL next codepoint \\u" +
+                            Integer.toHexString(element.integer) +
+                            " name cannot be null");
+                    break;
+                }
+                for (int i = old.integer + 1; i < element.integer; i ++) {
+                    if (UCharacter.getName1_0(i) != null) {
+                        errln("FAIL between codepoints are not null \\u" +
+                            Integer.toHexString(old.integer) + " and " +
+                            Integer.toHexString(element.integer) + " has " +
+                            Integer.toHexString(i) + " with a name " +
+                            UCharacter.getName1_0(i));
+                        break;
+                    }
+                }
+                old.integer = element.integer;
+            }
+        } catch(Exception e){
+            // !!! wouldn't preflighting be simpler?  This looks like
+            // it is effectively be doing that.  It seems that for every
+            // true error the code will call errln, which will throw the error, which
+            // this will catch, which this will then rethrow the error.  Just seems
+            // cumbersome.
+            if(e.getMessage().indexOf("unames.icu") >= 0){
+                warnln("Could not find unames.icu");
+            } else {
+                errln(e.getMessage());
+            }
+        }
+    }
+
+    /**
+    * Testing the for illegal characters
+    */
+    public void TestIsLegal()
+    {
+        int illegal[] = {0xFFFE, 0x00FFFF, 0x005FFFE, 0x005FFFF, 0x0010FFFE,
+                         0x0010FFFF, 0x110000, 0x00FDD0, 0x00FDDF, 0x00FDE0,
+                         0x00FDEF, 0xD800, 0xDC00, -1};
+        int legal[] = {0x61, 0x00FFFD, 0x0010000, 0x005FFFD, 0x0060000,
+                       0x0010FFFD, 0xFDCF, 0x00FDF0};
+        for (int count = 0; count < illegal.length; count ++) {
+            if (UCharacter.isLegal(illegal[count])) {
+                errln("FAIL \\u" + hex(illegal[count]) +
+                        " is not a legal character");
+            }
+        }
+
+        for (int count = 0; count < legal.length; count ++) {
+            if (!UCharacter.isLegal(legal[count])) {
+                errln("FAIL \\u" + hex(legal[count]) +
+                                                   " is a legal character");
+            }
+        }
+
+        String illegalStr = "This is an illegal string ";
+        String legalStr = "This is a legal string ";
+
+        for (int count = 0; count < illegal.length; count ++) {
+            StringBuffer str = new StringBuffer(illegalStr);
+            if (illegal[count] < 0x10000) {
+                str.append((char)illegal[count]);
+            }
+            else {
+                char lead = UTF16.getLeadSurrogate(illegal[count]);
+                char trail = UTF16.getTrailSurrogate(illegal[count]);
+                str.append(lead);
+                str.append(trail);
+            }
+            if (UCharacter.isLegal(str.toString())) {
+                errln("FAIL " + hex(str.toString()) +
+                      " is not a legal string");
+            }
+        }
+
+        for (int count = 0; count < legal.length; count ++) {
+            StringBuffer str = new StringBuffer(legalStr);
+            if (legal[count] < 0x10000) {
+                str.append((char)legal[count]);
+            }
+            else {
+                char lead = UTF16.getLeadSurrogate(legal[count]);
+                char trail = UTF16.getTrailSurrogate(legal[count]);
+                str.append(lead);
+                str.append(trail);
+            }
+            if (!UCharacter.isLegal(str.toString())) {
+                errln("FAIL " + hex(str.toString()) + " is a legal string");
+            }
+        }
+    }
+
+    /**
+     * Test getCodePoint
+     */
+    public void TestCodePoint()
+    {
+        int ch = 0x10000;
+        for (char i = 0xD800; i < 0xDC00; i ++) {
+            for (char j = 0xDC00; j <= 0xDFFF; j ++) {
+                if (UCharacter.getCodePoint(i, j) != ch) {
+                    errln("Error getting codepoint for surrogate " +
+                          "characters \\u"
+                          + Integer.toHexString(i) + " \\u" +
+                          Integer.toHexString(j));
+                }
+                ch ++;
+            }
+        }
+        try
+        {
+            UCharacter.getCodePoint((char)0xD7ff, (char)0xDC00);
+            errln("Invalid surrogate characters should not form a " +
+                  "supplementary");
+        } catch(Exception e) {
+        }
+        for (char i = 0; i < 0xFFFF; i++) {
+            if (i == 0xFFFE ||
+                (i >= 0xD800 && i <= 0xDFFF) ||
+                (i >= 0xFDD0 && i <= 0xFDEF)) {
+                // not a character
+                try {
+                    UCharacter.getCodePoint(i);
+                    errln("Not a character is not a valid codepoint");
+                } catch (Exception e) {
+                }
+            }
+            else {
+                if (UCharacter.getCodePoint(i) != i) {
+                    errln("A valid codepoint should return itself");
+                }
+            }
+        }
+    }
+
+    /**
+    * This method is alittle different from the type test in icu4c.
+    * But combined with testUnicodeData, they basically do the same thing.
+    */
+    public void TestIteration()
+    {
+        int limit     = 0;
+        int prevtype  = -1;
+        int shouldBeDir;
+        int test[][]={{0x41, UCharacterCategory.UPPERCASE_LETTER},
+                        {0x308, UCharacterCategory.NON_SPACING_MARK},
+                        {0xfffe, UCharacterCategory.GENERAL_OTHER_TYPES},
+                        {0xe0041, UCharacterCategory.FORMAT},
+                        {0xeffff, UCharacterCategory.UNASSIGNED}};
+
+        // default Bidi classes for unassigned code points
+        int defaultBidi[][]={{ 0x0590, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0x0600, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x07C0, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x0900, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xFB1D, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0xFB50, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xFE00, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xFE70, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0xFF00, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x10800, UCharacterDirection.LEFT_TO_RIGHT },
+            { 0x11000, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x110000, UCharacterDirection.LEFT_TO_RIGHT }};
+
+        RangeValueIterator iterator = UCharacter.getTypeIterator();
+        RangeValueIterator.Element result = new RangeValueIterator.Element();
+        while (iterator.next(result)) {
+            if (result.start != limit) {
+                errln("UCharacterIteration failed: Ranges not continuous " +
+                        "0x" + Integer.toHexString(result.start));
+            }
+
+            limit = result.limit;
+            if (result.value == prevtype) {
+                errln("Type of the next set of enumeration should be different");
+            }
+            prevtype = result.value;
+
+            for (int i = result.start; i < limit; i ++) {
+                int temptype = UCharacter.getType(i);
+                if (temptype != result.value) {
+                    errln("UCharacterIteration failed: Codepoint \\u" +
+                            Integer.toHexString(i) + " should be of type " +
+                            temptype + " not " + result.value);
+                }
+            }
+
+            for (int i = 0; i < test.length; ++ i) {
+                if (result.start <= test[i][0] && test[i][0] < result.limit) {
+                    if (result.value != test[i][1]) {
+                        errln("error: getTypes() has range ["
+                              + Integer.toHexString(result.start) + ", "
+                              + Integer.toHexString(result.limit)
+                              + "] with type " + result.value
+                              + " instead of ["
+                              + Integer.toHexString(test[i][0]) + ", "
+                              + Integer.toHexString(test[i][1]));
+                    }
+                }
+            }
+
+            // LineBreak.txt specifies:
+            //   #  - Assigned characters that are not listed explicitly are given the value
+            //   #    "AL".
+            //   #  - Unassigned characters are given the value "XX".
+            //
+            // PUA characters are listed explicitly with "XX".
+            // Verify that no assigned character has "XX".
+            if (result.value != UCharacterCategory.UNASSIGNED
+                && result.value != UCharacterCategory.PRIVATE_USE) {
+                int c = result.start;
+                while (c < result.limit) {
+                    if (0 == UCharacter.getIntPropertyValue(c,
+                                                UProperty.LINE_BREAK)) {
+                        logln("error UProperty.LINE_BREAK(assigned \\u"
+                              + Utility.hex(c, 4) + ")=XX");
+                    }
+                    ++ c;
+                }
+            }
+
+            /*
+             * Verify default Bidi classes.
+             * For recent Unicode versions, see UCD.html.
+             *
+             * For older Unicode versions:
+             * See table 3-7 "Bidirectional Character Types" in UAX #9.
+             * http://www.unicode.org/reports/tr9/
+             *
+             * See also DerivedBidiClass.txt for Cn code points!
+             *
+             * Unicode 4.0.1/Public Review Issue #28 (http://www.unicode.org/review/resolved-pri.html)
+             * changed some default values.
+             * In particular, non-characters and unassigned Default Ignorable Code Points
+             * change from L to BN.
+             *
+             * UCD.html version 4.0.1 does not yet reflect these changes.
+             */
+            if (result.value == UCharacterCategory.UNASSIGNED
+                || result.value == UCharacterCategory.PRIVATE_USE) {
+                int c = result.start;
+                for (int i = 0; i < defaultBidi.length && c < result.limit;
+                     ++ i) {
+                    if (c < defaultBidi[i][0]) {
+                        while (c < result.limit && c < defaultBidi[i][0]) {
+                            // TODO change to public UCharacter.isNonCharacter(c) once it's available
+                            if(com.ibm.icu.impl.UCharacterUtility.isNonCharacter(c) || UCharacter.hasBinaryProperty(c, UProperty.DEFAULT_IGNORABLE_CODE_POINT)) {
+                                shouldBeDir=UCharacter.BOUNDARY_NEUTRAL;
+                            } else {
+                                shouldBeDir=defaultBidi[i][1];
+                            }
+
+                            if (UCharacter.getDirection(c) != shouldBeDir
+                                || UCharacter.getIntPropertyValue(c,
+                                                          UProperty.BIDI_CLASS)
+                                   != shouldBeDir) {
+                                errln("error: getDirection(unassigned/PUA "
+                                      + Integer.toHexString(c)
+                                      + ") should be "
+                                      + shouldBeDir);
+                            }
+                            ++ c;
+                        }
+                    }
+                }
+            }
+        }
+
+        iterator.reset();
+        if (iterator.next(result) == false || result.start != 0) {
+            System.out.println("result " + result.start);
+            errln("UCharacterIteration reset() failed");
+        }
+    }
+
+    /**
+     * Testing getAge
+     */
+    public void TestGetAge()
+    {
+        int ages[] = {0x41,    1, 1, 0, 0,
+                      0xffff,  1, 1, 0, 0,
+                      0x20ab,  2, 0, 0, 0,
+                      0x2fffe, 2, 0, 0, 0,
+                      0x20ac,  2, 1, 0, 0,
+                      0xfb1d,  3, 0, 0, 0,
+                      0x3f4,   3, 1, 0, 0,
+                      0x10300, 3, 1, 0, 0,
+                      0x220,   3, 2, 0, 0,
+                      0xff60,  3, 2, 0, 0};
+        for (int i = 0; i < ages.length; i += 5) {
+            VersionInfo age = UCharacter.getAge(ages[i]);
+            if (age != VersionInfo.getInstance(ages[i + 1], ages[i + 2],
+                                               ages[i + 3], ages[i + 4])) {
+                errln("error: getAge(\\u" + Integer.toHexString(ages[i]) +
+                      ") == " + age.toString() + " instead of " +
+                      ages[i + 1] + "." + ages[i + 2] + "." + ages[i + 3] +
+                      "." + ages[i + 4]);
+            }
+        }
+    }
+
+    /**
+     * Test binary non core properties
+     */
+    public void TestAdditionalProperties()
+    {
+        // test data for hasBinaryProperty()
+        int props[][] = { // code point, property
+            { 0x0627, UProperty.ALPHABETIC, 1 },
+            { 0x1034a, UProperty.ALPHABETIC, 1 },
+            { 0x2028, UProperty.ALPHABETIC, 0 },
+
+            { 0x0066, UProperty.ASCII_HEX_DIGIT, 1 },
+            { 0x0067, UProperty.ASCII_HEX_DIGIT, 0 },
+
+            { 0x202c, UProperty.BIDI_CONTROL, 1 },
+            { 0x202f, UProperty.BIDI_CONTROL, 0 },
+
+            { 0x003c, UProperty.BIDI_MIRRORED, 1 },
+            { 0x003d, UProperty.BIDI_MIRRORED, 0 },
+
+            /* see Unicode Corrigendum #6 at http://www.unicode.org/versions/corrigendum6.html */
+            { 0x2018, UProperty.BIDI_MIRRORED, 0 },
+            { 0x201d, UProperty.BIDI_MIRRORED, 0 },
+            { 0x201f, UProperty.BIDI_MIRRORED, 0 },
+            { 0x301e, UProperty.BIDI_MIRRORED, 0 },
+
+            { 0x058a, UProperty.DASH, 1 },
+            { 0x007e, UProperty.DASH, 0 },
+
+            { 0x0c4d, UProperty.DIACRITIC, 1 },
+            { 0x3000, UProperty.DIACRITIC, 0 },
+
+            { 0x0e46, UProperty.EXTENDER, 1 },
+            { 0x0020, UProperty.EXTENDER, 0 },
+
+            { 0xfb1d, UProperty.FULL_COMPOSITION_EXCLUSION, 1 },
+            { 0x1d15f, UProperty.FULL_COMPOSITION_EXCLUSION, 1 },
+            { 0xfb1e, UProperty.FULL_COMPOSITION_EXCLUSION, 0 },
+
+            { 0x110a, UProperty.NFD_INERT, 1 },      /* Jamo L */
+            { 0x0308, UProperty.NFD_INERT, 0 },
+
+            { 0x1164, UProperty.NFKD_INERT, 1 },     /* Jamo V */
+            { 0x1d79d, UProperty.NFKD_INERT, 0 },   /* math compat version of xi */
+
+            { 0x0021, UProperty.NFC_INERT, 1 },      /* ! */
+            { 0x0061, UProperty.NFC_INERT, 0 },     /* a */
+            { 0x00e4, UProperty.NFC_INERT, 0 },     /* a-umlaut */
+            { 0x0102, UProperty.NFC_INERT, 0 },     /* a-breve */
+            { 0xac1c, UProperty.NFC_INERT, 0 },     /* Hangul LV */
+            { 0xac1d, UProperty.NFC_INERT, 1 },      /* Hangul LVT */
+
+            { 0x1d79d, UProperty.NFKC_INERT, 0 },   /* math compat version of xi */
+            { 0x2a6d6, UProperty.NFKC_INERT, 1 },    /* Han, last of CJK ext. B */
+
+            { 0x00e4, UProperty.SEGMENT_STARTER, 1 },
+            { 0x0308, UProperty.SEGMENT_STARTER, 0 },
+            { 0x110a, UProperty.SEGMENT_STARTER, 1 }, /* Jamo L */
+            { 0x1164, UProperty.SEGMENT_STARTER, 0 },/* Jamo V */
+            { 0xac1c, UProperty.SEGMENT_STARTER, 1 }, /* Hangul LV */
+            { 0xac1d, UProperty.SEGMENT_STARTER, 1 }, /* Hangul LVT */
+
+            { 0x0044, UProperty.HEX_DIGIT, 1 },
+            { 0xff46, UProperty.HEX_DIGIT, 1 },
+            { 0x0047, UProperty.HEX_DIGIT, 0 },
+
+            { 0x30fb, UProperty.HYPHEN, 1 },
+            { 0xfe58, UProperty.HYPHEN, 0 },
+
+            { 0x2172, UProperty.ID_CONTINUE, 1 },
+            { 0x0307, UProperty.ID_CONTINUE, 1 },
+            { 0x005c, UProperty.ID_CONTINUE, 0 },
+
+            { 0x2172, UProperty.ID_START, 1 },
+            { 0x007a, UProperty.ID_START, 1 },
+            { 0x0039, UProperty.ID_START, 0 },
+
+            { 0x4db5, UProperty.IDEOGRAPHIC, 1 },
+            { 0x2f999, UProperty.IDEOGRAPHIC, 1 },
+            { 0x2f99, UProperty.IDEOGRAPHIC, 0 },
+
+            { 0x200c, UProperty.JOIN_CONTROL, 1 },
+            { 0x2029, UProperty.JOIN_CONTROL, 0 },
+
+            { 0x1d7bc, UProperty.LOWERCASE, 1 },
+            { 0x0345, UProperty.LOWERCASE, 1 },
+            { 0x0030, UProperty.LOWERCASE, 0 },
+
+            { 0x1d7a9, UProperty.MATH, 1 },
+            { 0x2135, UProperty.MATH, 1 },
+            { 0x0062, UProperty.MATH, 0 },
+
+            { 0xfde1, UProperty.NONCHARACTER_CODE_POINT, 1 },
+            { 0x10ffff, UProperty.NONCHARACTER_CODE_POINT, 1 },
+            { 0x10fffd, UProperty.NONCHARACTER_CODE_POINT, 0 },
+
+            { 0x0022, UProperty.QUOTATION_MARK, 1 },
+            { 0xff62, UProperty.QUOTATION_MARK, 1 },
+            { 0xd840, UProperty.QUOTATION_MARK, 0 },
+
+            { 0x061f, UProperty.TERMINAL_PUNCTUATION, 1 },
+            { 0xe003f, UProperty.TERMINAL_PUNCTUATION, 0 },
+
+            { 0x1d44a, UProperty.UPPERCASE, 1 },
+            { 0x2162, UProperty.UPPERCASE, 1 },
+            { 0x0345, UProperty.UPPERCASE, 0 },
+
+            { 0x0020, UProperty.WHITE_SPACE, 1 },
+            { 0x202f, UProperty.WHITE_SPACE, 1 },
+            { 0x3001, UProperty.WHITE_SPACE, 0 },
+
+            { 0x0711, UProperty.XID_CONTINUE, 1 },
+            { 0x1d1aa, UProperty.XID_CONTINUE, 1 },
+            { 0x007c, UProperty.XID_CONTINUE, 0 },
+
+            { 0x16ee, UProperty.XID_START, 1 },
+            { 0x23456, UProperty.XID_START, 1 },
+            { 0x1d1aa, UProperty.XID_START, 0 },
+
+            /*
+             * Version break:
+             * The following properties are only supported starting with the
+             * Unicode version indicated in the second field.
+             */
+            { -1, 0x320, 0 },
+
+            { 0x180c, UProperty.DEFAULT_IGNORABLE_CODE_POINT, 1 },
+            { 0xfe02, UProperty.DEFAULT_IGNORABLE_CODE_POINT, 1 },
+            { 0x1801, UProperty.DEFAULT_IGNORABLE_CODE_POINT, 0 },
+
+            { 0x0341, UProperty.DEPRECATED, 1 },
+            { 0xe0041, UProperty.DEPRECATED, 1 },       /* Changed from Unicode 5 to 5.1 */
+
+            { 0x00a0, UProperty.GRAPHEME_BASE, 1 },
+            { 0x0a4d, UProperty.GRAPHEME_BASE, 0 },
+            { 0xff9d, UProperty.GRAPHEME_BASE, 1 },
+            { 0xff9f, UProperty.GRAPHEME_BASE, 0 },      /* changed from Unicode 3.2 to 4  and again 5 to 5.1 */
+
+            { 0x0300, UProperty.GRAPHEME_EXTEND, 1 },
+            { 0xff9d, UProperty.GRAPHEME_EXTEND, 0 }, 
+            { 0xff9f, UProperty.GRAPHEME_EXTEND, 1 },   /* changed from Unicode 3.2 to 4 and again 5 to 5.1 */
+            { 0x0603, UProperty.GRAPHEME_EXTEND, 0 },
+
+            { 0x0a4d, UProperty.GRAPHEME_LINK, 1 },
+            { 0xff9f, UProperty.GRAPHEME_LINK, 0 },
+
+            { 0x2ff7, UProperty.IDS_BINARY_OPERATOR, 1 },
+            { 0x2ff3, UProperty.IDS_BINARY_OPERATOR, 0 },
+
+            { 0x2ff3, UProperty.IDS_TRINARY_OPERATOR, 1 },
+            { 0x2f03, UProperty.IDS_TRINARY_OPERATOR, 0 },
+
+            { 0x0ec1, UProperty.LOGICAL_ORDER_EXCEPTION, 1 },
+            { 0xdcba, UProperty.LOGICAL_ORDER_EXCEPTION, 0 },
+
+            { 0x2e9b, UProperty.RADICAL, 1 },
+            { 0x4e00, UProperty.RADICAL, 0 },
+
+            { 0x012f, UProperty.SOFT_DOTTED, 1 },
+            { 0x0049, UProperty.SOFT_DOTTED, 0 },
+
+            { 0xfa11, UProperty.UNIFIED_IDEOGRAPH, 1 },
+            { 0xfa12, UProperty.UNIFIED_IDEOGRAPH, 0 },
+
+            { -1, 0x401, 0 }, /* version break for Unicode 4.0.1 */
+
+            { 0x002e, UProperty.S_TERM, 1 },
+            { 0x0061, UProperty.S_TERM, 0 },
+
+            { 0x180c, UProperty.VARIATION_SELECTOR, 1 },
+            { 0xfe03, UProperty.VARIATION_SELECTOR, 1 },
+            { 0xe01ef, UProperty.VARIATION_SELECTOR, 1 },
+            { 0xe0200, UProperty.VARIATION_SELECTOR, 0 },
+
+            /* enum/integer type properties */
+            /* test default Bidi classes for unassigned code points */
+            { 0x0590, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x05cf, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x05ed, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x07f2, UProperty.BIDI_CLASS, UCharacterDirection.DIR_NON_SPACING_MARK }, /* Nko, new in Unicode 5.0 */
+            { 0x07fe, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT }, /* unassigned R */
+            { 0x08ba, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xfb37, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0xfb42, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x10806, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x10909, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+            { 0x10fe4, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT },
+
+            { 0x0605, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x061c, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x063f, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x070e, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0x0775, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xfbc2, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xfd90, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+            { 0xfefe, UProperty.BIDI_CLASS, UCharacterDirection.RIGHT_TO_LEFT_ARABIC },
+
+            { 0x02AF, UProperty.BLOCK, UCharacter.UnicodeBlock.IPA_EXTENSIONS.getID() },
+            { 0x0C4E, UProperty.BLOCK, UCharacter.UnicodeBlock.TELUGU.getID()},
+            { 0x155A, UProperty.BLOCK, UCharacter.UnicodeBlock.UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS.getID() },
+            { 0x1717, UProperty.BLOCK, UCharacter.UnicodeBlock.TAGALOG.getID() },
+            { 0x1900, UProperty.BLOCK, UCharacter.UnicodeBlock.LIMBU.getID() },
+            { 0x1AFF, UProperty.BLOCK, UCharacter.UnicodeBlock.NO_BLOCK.getID()},
+            { 0x3040, UProperty.BLOCK, UCharacter.UnicodeBlock.HIRAGANA.getID()},
+            { 0x1D0FF, UProperty.BLOCK, UCharacter.UnicodeBlock.BYZANTINE_MUSICAL_SYMBOLS.getID()},
+            { 0x50000, UProperty.BLOCK, UCharacter.UnicodeBlock.NO_BLOCK.getID() },
+            { 0xEFFFF, UProperty.BLOCK, UCharacter.UnicodeBlock.NO_BLOCK.getID() },
+            { 0x10D0FF, UProperty.BLOCK, UCharacter.UnicodeBlock.SUPPLEMENTARY_PRIVATE_USE_AREA_B.getID() },
+
+            /* UProperty.CANONICAL_COMBINING_CLASS tested for assigned characters in TestUnicodeData() */
+            { 0xd7d7, UProperty.CANONICAL_COMBINING_CLASS, 0 },
+
+            { 0x00A0, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.NOBREAK },
+            { 0x00A8, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.COMPAT },
+            { 0x00bf, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.NONE },
+            { 0x00c0, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.CANONICAL },
+            { 0x1E9B, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.CANONICAL },
+            { 0xBCDE, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.CANONICAL },
+            { 0xFB5D, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.MEDIAL },
+            { 0x1D736, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.FONT },
+            { 0xe0033, UProperty.DECOMPOSITION_TYPE, UCharacter.DecompositionType.NONE },
+
+            { 0x0009, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.NEUTRAL },
+            { 0x0020, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.NARROW },
+            { 0x00B1, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.AMBIGUOUS },
+            { 0x20A9, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.HALFWIDTH },
+            { 0x2FFB, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x3000, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.FULLWIDTH },
+            { 0x35bb, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x58bd, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0xD7A3, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0xEEEE, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.AMBIGUOUS },
+            { 0x1D198, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.NEUTRAL },
+            { 0x20000, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x2F8C7, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x3a5bd, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.WIDE },
+            { 0x5a5bd, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.NEUTRAL },
+            { 0xFEEEE, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.AMBIGUOUS },
+            { 0x10EEEE, UProperty.EAST_ASIAN_WIDTH, UCharacter.EastAsianWidth.AMBIGUOUS },
+
+            /* UProperty.GENERAL_CATEGORY tested for assigned characters in TestUnicodeData() */
+            { 0xd7d7, UProperty.GENERAL_CATEGORY, 0 },
+
+            { 0x0444, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.NO_JOINING_GROUP },
+            { 0x0639, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.AIN },
+            { 0x072A, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.DALATH_RISH },
+            { 0x0647, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.HEH },
+            { 0x06C1, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.HEH_GOAL },
+            { 0x06C3, UProperty.JOINING_GROUP, UCharacter.JoiningGroup.HAMZA_ON_HEH_GOAL },
+
+            { 0x200C, UProperty.JOINING_TYPE, UCharacter.JoiningType.NON_JOINING },
+            { 0x200D, UProperty.JOINING_TYPE, UCharacter.JoiningType.JOIN_CAUSING },
+            { 0x0639, UProperty.JOINING_TYPE, UCharacter.JoiningType.DUAL_JOINING },
+            { 0x0640, UProperty.JOINING_TYPE, UCharacter.JoiningType.JOIN_CAUSING },
+            { 0x06C3, UProperty.JOINING_TYPE, UCharacter.JoiningType.RIGHT_JOINING },
+            { 0x0300, UProperty.JOINING_TYPE, UCharacter.JoiningType.TRANSPARENT },
+            { 0x070F, UProperty.JOINING_TYPE, UCharacter.JoiningType.TRANSPARENT },
+            { 0xe0033, UProperty.JOINING_TYPE, UCharacter.JoiningType.TRANSPARENT },
+
+            /* TestUnicodeData() verifies that no assigned character has "XX" (unknown) */
+            { 0xe7e7, UProperty.LINE_BREAK, UCharacter.LineBreak.UNKNOWN },
+            { 0x10fffd, UProperty.LINE_BREAK, UCharacter.LineBreak.UNKNOWN },
+            { 0x0028, UProperty.LINE_BREAK, UCharacter.LineBreak.OPEN_PUNCTUATION },
+            { 0x232A, UProperty.LINE_BREAK, UCharacter.LineBreak.CLOSE_PUNCTUATION },
+            { 0x3401, UProperty.LINE_BREAK, UCharacter.LineBreak.IDEOGRAPHIC },
+            { 0x4e02, UProperty.LINE_BREAK, UCharacter.LineBreak.IDEOGRAPHIC },
+            { 0x20004, UProperty.LINE_BREAK, UCharacter.LineBreak.IDEOGRAPHIC },
+            { 0xf905, UProperty.LINE_BREAK, UCharacter.LineBreak.IDEOGRAPHIC },
+            { 0xdb7e, UProperty.LINE_BREAK, UCharacter.LineBreak.SURROGATE },
+            { 0xdbfd, UProperty.LINE_BREAK, UCharacter.LineBreak.SURROGATE },
+            { 0xdffc, UProperty.LINE_BREAK, UCharacter.LineBreak.SURROGATE },
+            { 0x2762, UProperty.LINE_BREAK, UCharacter.LineBreak.EXCLAMATION },
+            { 0x002F, UProperty.LINE_BREAK, UCharacter.LineBreak.BREAK_SYMBOLS },
+            { 0x1D49C, UProperty.LINE_BREAK, UCharacter.LineBreak.ALPHABETIC },
+            { 0x1731, UProperty.LINE_BREAK, UCharacter.LineBreak.ALPHABETIC },
+
+            /* UProperty.NUMERIC_TYPE tested in TestNumericProperties() */
+
+            /* UProperty.SCRIPT tested in TestUScriptCodeAPI() */
+
+            { 0x1100, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LEADING_JAMO },
+            { 0x1111, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LEADING_JAMO },
+            { 0x1159, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LEADING_JAMO },
+            { 0x115f, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LEADING_JAMO },
+
+            { 0x1160, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.VOWEL_JAMO },
+            { 0x1161, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.VOWEL_JAMO },
+            { 0x1172, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.VOWEL_JAMO },
+            { 0x11a2, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.VOWEL_JAMO },
+
+            { 0x11a8, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.TRAILING_JAMO },
+            { 0x11b8, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.TRAILING_JAMO },
+            { 0x11c8, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.TRAILING_JAMO },
+            { 0x11f9, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.TRAILING_JAMO },
+
+            { 0x115a, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x115e, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x11a3, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x11a7, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x11fa, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+            { 0x11ff, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+
+            { 0xac00, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LV_SYLLABLE },
+            { 0xac1c, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LV_SYLLABLE },
+            { 0xc5ec, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LV_SYLLABLE },
+            { 0xd788, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LV_SYLLABLE },
+
+            { 0xac01, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+            { 0xac1b, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+            { 0xac1d, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+            { 0xc5ee, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+            { 0xd7a3, UProperty.HANGUL_SYLLABLE_TYPE, UCharacter.HangulSyllableType.LVT_SYLLABLE },
+
+            { 0xd7a4, UProperty.HANGUL_SYLLABLE_TYPE, 0 },
+
+            { -1, 0x410, 0 }, /* version break for Unicode 4.1 */
+
+            { 0x00d7, UProperty.PATTERN_SYNTAX, 1 },
+            { 0xfe45, UProperty.PATTERN_SYNTAX, 1 },
+            { 0x0061, UProperty.PATTERN_SYNTAX, 0 },
+
+            { 0x0020, UProperty.PATTERN_WHITE_SPACE, 1 },
+            { 0x0085, UProperty.PATTERN_WHITE_SPACE, 1 },
+            { 0x200f, UProperty.PATTERN_WHITE_SPACE, 1 },
+            { 0x00a0, UProperty.PATTERN_WHITE_SPACE, 0 },
+            { 0x3000, UProperty.PATTERN_WHITE_SPACE, 0 },
+
+            { 0x1d200, UProperty.BLOCK, UCharacter.UnicodeBlock.ANCIENT_GREEK_MUSICAL_NOTATION_ID },
+            { 0x2c8e,  UProperty.BLOCK, UCharacter.UnicodeBlock.COPTIC_ID },
+            { 0xfe17,  UProperty.BLOCK, UCharacter.UnicodeBlock.VERTICAL_FORMS_ID },
+
+            { 0x1a00,  UProperty.SCRIPT, UScript.BUGINESE },
+            { 0x2cea,  UProperty.SCRIPT, UScript.COPTIC },
+            { 0xa82b,  UProperty.SCRIPT, UScript.SYLOTI_NAGRI },
+            { 0x103d0, UProperty.SCRIPT, UScript.OLD_PERSIAN },
+
+            { 0xcc28, UProperty.LINE_BREAK, UCharacter.LineBreak.H2 },
+            { 0xcc29, UProperty.LINE_BREAK, UCharacter.LineBreak.H3 },
+            { 0xac03, UProperty.LINE_BREAK, UCharacter.LineBreak.H3 },
+            { 0x115f, UProperty.LINE_BREAK, UCharacter.LineBreak.JL },
+            { 0x11aa, UProperty.LINE_BREAK, UCharacter.LineBreak.JT },
+            { 0x11a1, UProperty.LINE_BREAK, UCharacter.LineBreak.JV },
+
+            { 0xb2c9, UProperty.GRAPHEME_CLUSTER_BREAK, UCharacter.GraphemeClusterBreak.LVT },
+            { 0x036f, UProperty.GRAPHEME_CLUSTER_BREAK, UCharacter.GraphemeClusterBreak.EXTEND },
+            { 0x0000, UProperty.GRAPHEME_CLUSTER_BREAK, UCharacter.GraphemeClusterBreak.CONTROL },
+            { 0x1160, UProperty.GRAPHEME_CLUSTER_BREAK, UCharacter.GraphemeClusterBreak.V },
+
+            { 0x05f4, UProperty.WORD_BREAK, UCharacter.WordBreak.MIDLETTER },
+            { 0x4ef0, UProperty.WORD_BREAK, UCharacter.WordBreak.OTHER },
+            { 0x19d9, UProperty.WORD_BREAK, UCharacter.WordBreak.NUMERIC },
+            { 0x2044, UProperty.WORD_BREAK, UCharacter.WordBreak.MIDNUM },
+
+            { 0xfffd, UProperty.SENTENCE_BREAK, UCharacter.SentenceBreak.OTHER },
+            { 0x1ffc, UProperty.SENTENCE_BREAK, UCharacter.SentenceBreak.UPPER },
+            { 0xff63, UProperty.SENTENCE_BREAK, UCharacter.SentenceBreak.CLOSE },
+            { 0x2028, UProperty.SENTENCE_BREAK, UCharacter.SentenceBreak.SEP },
+
+            /* undefined UProperty values */
+            { 0x61, 0x4a7, 0 },
+            { 0x234bc, 0x15ed, 0 }
+        };
+
+
+        if (UCharacter.getIntPropertyMinValue(UProperty.DASH) != 0
+            || UCharacter.getIntPropertyMinValue(UProperty.BIDI_CLASS) != 0
+            || UCharacter.getIntPropertyMinValue(UProperty.BLOCK)!= 0  /* j2478 */
+            || UCharacter.getIntPropertyMinValue(UProperty.SCRIPT)!= 0 /* JB#2410 */
+            || UCharacter.getIntPropertyMinValue(0x2345) != 0) {
+            errln("error: UCharacter.getIntPropertyMinValue() wrong");
+        }
+
+        if( UCharacter.getIntPropertyMaxValue(UProperty.DASH)!=1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.DASH) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.ID_CONTINUE)!=1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.ID_CONTINUE) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.BINARY_LIMIT-1)!=1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.BINARY_LIMIT-1) wrong\n");
+        }
+
+        if( UCharacter.getIntPropertyMaxValue(UProperty.BIDI_CLASS)!=UCharacterDirection.CHAR_DIRECTION_COUNT-1 ) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.BIDI_CLASS) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.BLOCK)!=UCharacter.UnicodeBlock.COUNT-1 ) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.BLOCK) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK)!=UCharacter.LineBreak.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.LINE_BREAK) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT)!=UScript.CODE_LIMIT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.NUMERIC_TYPE)!=UCharacter.NumericType.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.NUMERIC_TYPE) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.GENERAL_CATEGORY)!=UCharacterCategory.CHAR_CATEGORY_COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.GENERAL_CATEGORY) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.HANGUL_SYLLABLE_TYPE)!=UCharacter.HangulSyllableType.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.HANGUL_SYLLABLE_TYPE) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.GRAPHEME_CLUSTER_BREAK)!=UCharacter.GraphemeClusterBreak.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.GRAPHEME_CLUSTER_BREAK) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.SENTENCE_BREAK)!=UCharacter.SentenceBreak.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.SENTENCE_BREAK) wrong\n");
+        }
+        if(UCharacter.getIntPropertyMaxValue(UProperty.WORD_BREAK)!=UCharacter.WordBreak.COUNT-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.WORD_BREAK) wrong\n");
+        }
+        /*JB#2410*/
+        if( UCharacter.getIntPropertyMaxValue(0x2345)!=-1) {
+            errln("error: UCharacter.getIntPropertyMaxValue(0x2345) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.DECOMPOSITION_TYPE) !=  (UCharacter.DecompositionType.COUNT - 1)) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.DECOMPOSITION_TYPE) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.JOINING_GROUP) !=   (UCharacter.JoiningGroup.COUNT -1)) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.JOINING_GROUP) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.JOINING_TYPE) !=  (UCharacter.JoiningType.COUNT -1)) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.JOINING_TYPE) wrong\n");
+        }
+        if( UCharacter.getIntPropertyMaxValue(UProperty.EAST_ASIAN_WIDTH) !=  (UCharacter.EastAsianWidth.COUNT -1)) {
+            errln("error: UCharacter.getIntPropertyMaxValue(UProperty.EAST_ASIAN_WIDTH) wrong\n");
+        }
+
+        VersionInfo version = UCharacter.getUnicodeVersion();
+
+        // test hasBinaryProperty()
+        for (int i = 0; i < props.length; ++ i) {
+            if (props[i][0] < 0) {
+                if (version.compareTo(VersionInfo.getInstance(props[i][1] >> 8,
+                                                          (props[i][1] >> 4) & 0xF,
+                                                          props[i][1] & 0xF,
+                                                          0)) < 0) {
+                    break;
+                }
+                continue;
+            }
+            boolean expect = true;
+            if (props[i][2] == 0) {
+                expect = false;
+            }
+            if (props[i][1] < UProperty.INT_START) {
+                if (UCharacter.hasBinaryProperty(props[i][0], props[i][1])
+                    != expect) {
+                    errln("error: UCharacter.hasBinaryProperty(\\u" +
+                          Integer.toHexString(props[i][0]) + ", " +
+                          Integer.toHexString(props[i][1])
+                          + ") has an error expected " + props[i][2]);
+                }
+            }
+
+            int retVal = UCharacter.getIntPropertyValue(props[i][0], props[i][1]);
+            if (retVal != props[i][2]) {
+                errln("error: UCharacter.getIntPropertyValue(\\u" +
+                      Utility.hex(props[i][0], 4) +
+                      ", " + props[i][1] + " is wrong, should be "
+                      + props[i][2] + " not " + retVal);
+            }
+
+            // test separate functions, too
+            switch (props[i][1]) {
+            case UProperty.ALPHABETIC:
+                if (UCharacter.isUAlphabetic(props[i][0]) != expect) {
+                    errln("error: UCharacter.isUAlphabetic(\\u" +
+                          Integer.toHexString(props[i][0]) +
+                          ") is wrong expected " + props[i][2]);
+                }
+                break;
+            case UProperty.LOWERCASE:
+                if (UCharacter.isULowercase(props[i][0]) != expect) {
+                    errln("error: UCharacter.isULowercase(\\u" +
+                          Integer.toHexString(props[i][0]) +
+                          ") is wrong expected " +props[i][2]);
+                }
+                break;
+            case UProperty.UPPERCASE:
+                if (UCharacter.isUUppercase(props[i][0]) != expect) {
+                    errln("error: UCharacter.isUUppercase(\\u" +
+                          Integer.toHexString(props[i][0]) +
+                          ") is wrong expected " + props[i][2]);
+                }
+                break;
+            case UProperty.WHITE_SPACE:
+                if (UCharacter.isUWhiteSpace(props[i][0]) != expect) {
+                    errln("error: UCharacter.isUWhiteSpace(\\u" +
+                          Integer.toHexString(props[i][0]) +
+                          ") is wrong expected " + props[i][2]);
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+    public void TestNumericProperties()
+    {
+        // see UnicodeData.txt, DerivedNumericValues.txt
+        int testvar[][] = {
+            { 0x0F33, UCharacter.NumericType.NUMERIC },
+            { 0x0C66, UCharacter.NumericType.DECIMAL },
+            { 0x2159, UCharacter.NumericType.NUMERIC },
+            { 0x00BD, UCharacter.NumericType.NUMERIC },
+            { 0x0031, UCharacter.NumericType.DECIMAL },
+            { 0x10320, UCharacter.NumericType.NUMERIC },
+            { 0x0F2B, UCharacter.NumericType.NUMERIC },
+            { 0x00B2, UCharacter.NumericType.DIGIT }, /* Unicode 4.0 change */
+            { 0x1813, UCharacter.NumericType.DECIMAL },
+            { 0x2173, UCharacter.NumericType.NUMERIC },
+            { 0x278E, UCharacter.NumericType.DIGIT },
+            { 0x1D7F2, UCharacter.NumericType.DECIMAL },
+            { 0x247A, UCharacter.NumericType.DIGIT },
+            { 0x1372, UCharacter.NumericType.NUMERIC },
+            { 0x216B, UCharacter.NumericType.NUMERIC },
+            { 0x16EE, UCharacter.NumericType.NUMERIC },
+            { 0x249A, UCharacter.NumericType.NUMERIC },
+            { 0x303A, UCharacter.NumericType.NUMERIC },
+            { 0x32B2, UCharacter.NumericType.NUMERIC },
+            { 0x1375, UCharacter.NumericType.NUMERIC },
+            { 0x10323, UCharacter.NumericType.NUMERIC },
+            { 0x0BF1, UCharacter.NumericType.NUMERIC },
+            { 0x217E, UCharacter.NumericType.NUMERIC },
+            { 0x2180, UCharacter.NumericType.NUMERIC },
+            { 0x2181, UCharacter.NumericType.NUMERIC },
+            { 0x137C, UCharacter.NumericType.NUMERIC },
+            { 0x61, UCharacter.NumericType.NONE },
+            { 0x3000, UCharacter.NumericType.NONE },
+            { 0xfffe, UCharacter.NumericType.NONE },
+            { 0x10301, UCharacter.NumericType.NONE },
+            { 0xe0033, UCharacter.NumericType.NONE },
+            { 0x10ffff, UCharacter.NumericType.NONE },
+            /* Unicode 4.0 Changes */
+            { 0x96f6,  UCharacter.NumericType.NUMERIC },
+            { 0x4e00,  UCharacter.NumericType.NUMERIC },
+            { 0x58f1,  UCharacter.NumericType.NUMERIC },
+            { 0x5f10,  UCharacter.NumericType.NUMERIC },
+            { 0x5f0e,  UCharacter.NumericType.NUMERIC },
+            { 0x8086,  UCharacter.NumericType.NUMERIC },
+            { 0x7396,  UCharacter.NumericType.NUMERIC },
+            { 0x5345,  UCharacter.NumericType.NUMERIC },
+            { 0x964c,  UCharacter.NumericType.NUMERIC },
+            { 0x4edf,  UCharacter.NumericType.NUMERIC },
+            { 0x4e07,  UCharacter.NumericType.NUMERIC },
+            { 0x4ebf,  UCharacter.NumericType.NUMERIC },
+            { 0x5146,  UCharacter.NumericType.NUMERIC }
+        };
+
+        double expected[] = {-1/(double)2,
+                             0,
+                             1/(double)6,
+                             1/(double)2,
+                             1,
+                             1,
+                             3/(double)2,
+                             2,
+                             3,
+                             4,
+                             5,
+                             6,
+                             7,
+                             10,
+                             12,
+                             17,
+                             19,
+                             30,
+                             37,
+                             40,
+                             50,
+                             100,
+                             500,
+                             1000,
+                             5000,
+                             10000,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             UCharacter.NO_NUMERIC_VALUE,
+                             0 ,
+                             1 ,
+                             1 ,
+                             2 ,
+                             3 ,
+                             4 ,
+                             9 ,
+                             30 ,
+                             100 ,
+                             1000 ,
+                             10000 ,
+                             100000000 ,
+                             1000000000000.00
+        };
+
+
+        for (int i = 0; i < testvar.length; ++ i) {
+            int c = testvar[i][0];
+            int type = UCharacter.getIntPropertyValue(c,
+                                                      UProperty.NUMERIC_TYPE);
+            double nv = UCharacter.getUnicodeNumericValue(c);
+
+            if (type != testvar[i][1]) {
+                errln("UProperty.NUMERIC_TYPE(\\u" + Utility.hex(c, 4)
+                       + ") = " + type + " should be " + testvar[i][1]);
+            }
+            if (0.000001 <= Math.abs(nv - expected[i])) {
+                errln("UCharacter.getNumericValue(\\u" + Utility.hex(c, 4)
+                        + ") = " + nv + " should be " + expected[i]);
+            }
+        }
+    }
+
+    /**
+     * Test the property values API.  See JB#2410.
+     */
+    public void TestPropertyValues() {
+        int i, p, min, max;
+
+        /* Min should be 0 for everything. */
+        /* Until JB#2478 is fixed, the one exception is UProperty.BLOCK. */
+        for (p=UProperty.INT_START; p<UProperty.INT_LIMIT; ++p) {
+            min = UCharacter.getIntPropertyMinValue(p);
+            if (min != 0) {
+                if (p == UProperty.BLOCK) {
+                    /* This is okay...for now.  See JB#2487.
+                       TODO Update this for JB#2487. */
+                } else {
+                    String name;
+                    name = UCharacter.getPropertyName(p, UProperty.NameChoice.LONG);
+                    errln("FAIL: UCharacter.getIntPropertyMinValue(" + name + ") = " +
+                          min + ", exp. 0");
+                }
+            }
+        }
+
+        if (UCharacter.getIntPropertyMinValue(UProperty.GENERAL_CATEGORY_MASK)
+            != 0
+            || UCharacter.getIntPropertyMaxValue(
+                                               UProperty.GENERAL_CATEGORY_MASK)
+               != -1) {
+            errln("error: UCharacter.getIntPropertyMin/MaxValue("
+                  + "UProperty.GENERAL_CATEGORY_MASK) is wrong");
+        }
+
+        /* Max should be -1 for invalid properties. */
+        max = UCharacter.getIntPropertyMaxValue(-1);
+        if (max != -1) {
+            errln("FAIL: UCharacter.getIntPropertyMaxValue(-1) = " +
+                  max + ", exp. -1");
+        }
+
+        /* Script should return 0 for an invalid code point. If the API
+           throws an exception then that's fine too. */
+        for (i=0; i<2; ++i) {
+            try {
+                int script = 0;
+                String desc = null;
+                switch (i) {
+                case 0:
+                    script = UScript.getScript(-1);
+                    desc = "UScript.getScript(-1)";
+                    break;
+                case 1:
+                    script = UCharacter.getIntPropertyValue(-1, UProperty.SCRIPT);
+                    desc = "UCharacter.getIntPropertyValue(-1, UProperty.SCRIPT)";
+                    break;
+                }
+                if (script != 0) {
+                    errln("FAIL: " + desc + " = " + script + ", exp. 0");
+                }
+            } catch (IllegalArgumentException e) {}
+        }
+    }
+
+    public void TestIsBMP()
+    {
+        int ch[] = {0x0, -1, 0xffff, 0x10ffff, 0xff, 0x1ffff};
+        boolean flag[] = {true, false, true, false, true, false};
+        for (int i = 0; i < ch.length; i ++) {
+            if (UCharacter.isBMP(ch[i]) != flag[i]) {
+                errln("Fail: \\u" + Utility.hex(ch[i], 8)
+                      + " failed at UCharacter.isBMP");
+            }
+        }
+    }
+
+    /* add characters from a serialized set to a normal one */
+    private static void _setAddSerialized(UnicodeSet set, USerializedSet sset) {
+     //  int start, end;
+       int i, count;
+
+       count=sset.countRanges();
+       int[] range = new int[2];
+       for(i=0; i<count; ++i) {
+           sset.getRange(i,range);
+           set.add(range[0],range[1]);
+       }
+    }
+
+    private boolean showADiffB(UnicodeSet a, UnicodeSet b,
+                                        String a_name, String b_name,
+                                        boolean expect,
+                                        boolean diffIsError){
+        int i, start, end, length;
+        boolean equal;
+        equal=true;
+        i=0;
+        for(;;) {
+            start  = a.getRangeStart(i);
+            length = (i < a.getRangeCount()) ? 0 : a.getRangeCount();
+            end    = a.getRangeEnd(i);
+
+            if(length!=0) {
+                return equal; /* done with code points, got a string or -1 */
+            }
+
+            if(expect!=b.contains(start, end)) {
+                equal=false;
+                while(start<=end) {
+                    if(expect!=b.contains(start)) {
+                        if(diffIsError) {
+                            if(expect) {
+                                errln("error: "+ a_name +" contains "+ hex(start)+" but "+ b_name +" does not");
+                            } else {
+                                errln("error: "+a_name +" and "+ b_name+" both contain "+hex(start) +" but should not intersect");
+                            }
+                        } else {
+                            if(expect) {
+                                logln("info: "+a_name +" contains "+hex(start)+ "but " + b_name +" does not");
+                            } else {
+                                logln("info: "+a_name +" and "+b_name+" both contain "+hex(start)+" but should not intersect");
+                            }
+                        }
+                    }
+                    ++start;
+                }
+            }
+
+            ++i;
+        }
+    }
+    private boolean showAMinusB(UnicodeSet a, UnicodeSet b,
+                                        String a_name, String b_name,
+                                        boolean diffIsError) {
+
+        return showADiffB(a, b, a_name, b_name, true, diffIsError);
+    }
+
+    private boolean showAIntersectB(UnicodeSet a, UnicodeSet b,
+                                            String a_name, String b_name,
+                                            boolean diffIsError) {
+        return showADiffB(a, b, a_name, b_name, false, diffIsError);
+    }
+
+    private boolean compareUSets(UnicodeSet a, UnicodeSet b,
+                                         String a_name, String b_name,
+                                         boolean diffIsError) {
+        return
+            showAMinusB(a, b, a_name, b_name, diffIsError) &&
+            showAMinusB(b, a, b_name, a_name, diffIsError);
+    }
+
+   /* various tests for consistency of UCD data and API behavior */
+   public void TestConsistency() {
+       char[] buffer16 = new char[300];
+       char[] buffer   = new char[300];
+       UnicodeSet set1, set2, set3, set4;
+
+       USerializedSet sset;
+       int start, end;
+       int i, length;
+
+       String hyphenPattern = "[:Hyphen:]";
+       String dashPattern = "[:Dash:]";
+       String lowerPattern = "[:Lowercase:]";
+       String formatPattern = "[:Cf:]";
+       String alphaPattern  =  "[:Alphabetic:]";
+
+       /*
+        * It used to be that UCD.html and its precursors said
+        * "Those dashes used to mark connections between pieces of words,
+        *  plus the Katakana middle dot."
+        *
+        * Unicode 4 changed 00AD Soft Hyphen to Cf and removed it from Dash
+        * but not from Hyphen.
+        * UTC 94 (2003mar) decided to leave it that way and to changed UCD.html.
+        * Therefore, do not show errors when testing the Hyphen property.
+        */
+       logln("Starting with Unicode 4, inconsistencies with [:Hyphen:] are\n"
+                   + "known to the UTC and not considered errors.\n");
+
+       set1=new UnicodeSet(hyphenPattern);
+       set2=new UnicodeSet(dashPattern);
+
+           /* remove the Katakana middle dot(s) from set1 */
+           set1.remove(0x30fb);
+           set2.remove (0xff65); /* halfwidth variant */
+           showAMinusB(set1, set2, "[:Hyphen:]", "[:Dash:]", false);
+
+
+       /* check that Cf is neither Hyphen nor Dash nor Alphabetic */
+       set3=new UnicodeSet(formatPattern);
+       set4=new UnicodeSet(alphaPattern);
+
+       showAIntersectB(set3, set1, "[:Cf:]", "[:Hyphen:]", false);
+       showAIntersectB(set3, set2, "[:Cf:]", "[:Dash:]", true);
+       showAIntersectB(set3, set4, "[:Cf:]", "[:Alphabetic:]", true);
+       /*
+        * Check that each lowercase character has "small" in its name
+        * and not "capital".
+        * There are some such characters, some of which seem odd.
+        * Use the verbose flag to see these notices.
+        */
+       set1=new UnicodeSet(lowerPattern);
+
+       for(i=0;; ++i) {
+//               try{
+//                   length=set1.getItem(set1, i, &start, &end, NULL, 0, &errorCode);
+//               }catch(Exception e){
+//                   break;
+//               }
+            start = set1.getRangeStart(i);
+            end = set1.getRangeEnd(i);
+            length = i<set1.getRangeCount() ? set1.getRangeCount() : 0;
+           if(length!=0) {
+               break; /* done with code points, got a string or -1 */
+           }
+
+           while(start<=end) {
+               String name=UCharacter.getName(start);
+
+               if( (name.indexOf("SMALL")< 0 || name.indexOf("CAPITAL")<-1) &&
+                   name.indexOf("SMALL CAPITAL")==-1
+               ) {
+                   logln("info: [:Lowercase:] contains U+"+hex(start) + " whose name does not suggest lowercase: " + name);
+               }
+               ++start;
+           }
+       }
+
+
+       /*
+        * Test for an example that unorm_getCanonStartSet() delivers
+        * all characters that compose from the input one,
+        * even in multiple steps.
+        * For example, the set for "I" (0049) should contain both
+        * I-diaeresis (00CF) and I-diaeresis-acute (1E2E).
+        * In general, the set for the middle such character should be a subset
+        * of the set for the first.
+        */
+       set1=new UnicodeSet();
+       set2=new UnicodeSet();
+       sset = new USerializedSet();
+       NormalizerImpl.getCanonStartSet(0x49,sset);
+       _setAddSerialized(set1, sset);
+
+       /* enumerate all characters that are plausible to be latin letters */
+       for(start=0xa0; start<0x2000; ++start) {
+           if(NormalizerImpl.getDecomposition(start, false, buffer16,0,buffer16.length) > 1 && buffer[0]==0x0049) {
+               set2.add(start);
+           }
+       }
+
+       compareUSets(set1, set2,
+                    "[canon start set of 0049]", "[all c with canon decomp with 0049]",
+                    false);
+
+   }
+
+    public void TestCoverage() {
+        //cover forDigit
+        char ch1 = UCharacter.forDigit(7, 11);
+        assertEquals("UCharacter.forDigit ", "7", String.valueOf(ch1));
+        char ch2 = UCharacter.forDigit(17, 20);
+        assertEquals("UCharacter.forDigit ", "h", String.valueOf(ch2));
+
+        //Jitterbug 4451, for coverage
+        for (int i = 0x0041; i < 0x005B; i++) {
+            if (!UCharacter.isJavaLetter(i))
+                errln("FAIL \\u" + hex(i) + " expected to be a letter");
+            if (!UCharacter.isJavaIdentifierStart(i))
+                errln("FAIL \\u" + hex(i) + " expected to be a Java identifier start character");
+            if (!UCharacter.isJavaLetterOrDigit(i))
+                errln("FAIL \\u" + hex(i) + " expected not to be a Java letter");
+            if (!UCharacter.isJavaIdentifierPart(i))
+                errln("FAIL \\u" + hex(i) + " expected to be a Java identifier part character");
+        }
+        char[] spaces = {'\t','\n','\f','\r',' '};
+        for (int i = 0; i < spaces.length; i++){
+            if (!UCharacter.isSpace(spaces[i]))
+                errln("FAIL \\u" + hex(spaces[i]) + " expected to be a Java space");
+        }
+        if (!UCharacter.getStringPropertyValue(UProperty.AGE,'\u3400',0).equals("3.0.0.0")){
+            errln("FAIL \\u3400 expected to be 3.0.0.0");
+        }
+    }
+
+    public void TestCasePropsDummy() {
+        // code coverage for UCaseProps.getDummy() 
+        if(UCaseProps.getDummy().tolower(0x41)!=0x41) {
+            errln("UCaseProps.getDummy().tolower(0x41)!=0x41");
+        }
+    }
+
+    public void TestBiDiPropsDummy() {
+        // code coverage for UBiDiProps.getDummy() 
+        if(UBiDiProps.getDummy().getClass(0x20)!=0) {
+            errln("UBiDiProps.getDummy().getClass(0x20)!=0");
+        }
+    }
+    
+    public void TestBlockData()
+    {
+        Class ubc = UCharacter.UnicodeBlock.class;
+        
+        for (int b = 1; b < UCharacter.UnicodeBlock.COUNT; b += 1) {
+            UCharacter.UnicodeBlock blk = UCharacter.UnicodeBlock.getInstance(b);
+            int id = blk.getID();
+            String name = blk.toString();
+            
+            if (id != b) {
+                errln("UCharacter.UnicodeBlock.getInstance(" + b + ") returned a block with id = " + id);
+            }
+            
+            try {
+                if (ubc.getField(name + "_ID").getInt(blk) != b) {
+                    errln("UCharacter.UnicodeBlock.getInstance(" + b + ") returned a block with a name of " + name +
+                          " which does not match the block id.");
+                }
+            } catch (Exception e) {
+                errln("Couldn't get the id name for id " + b);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java b/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java
new file mode 100644
index 0000000..9461a65
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java
@@ -0,0 +1,88 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * @author aheninger
+ *
+ */
+public class UCharacterThreadTest extends TestFmwk {
+  // constructor -----------------------------------------------------------
+    
+    /**
+    * Private constructor to prevent initialisation
+    */
+    public UCharacterThreadTest()
+    {
+    }
+    
+      // public methods --------------------------------------------------------
+      
+    public static void main(String[] arg)  
+    {
+        try
+        {
+            UCharacterThreadTest test = new UCharacterThreadTest();
+            test.run(arg);
+        }
+        catch (Exception e)
+        {
+              e.printStackTrace();
+        }
+    }
+    
+    
+    //
+    //  Test multi-threaded parallel calls to UCharacter.getName(codePoint)
+    //  Regression test for ticket 6264.
+    //
+    public void TestUCharactersGetName() throws InterruptedException {
+        List threads = new LinkedList();
+        for(int t=0; t<20; t++) {
+          int codePoint = 47 + t;
+          String correctName = UCharacter.getName(codePoint);
+          GetNameThread thread = new GetNameThread(codePoint, correctName);
+          thread.start();
+          threads.add(thread);
+        }
+        ListIterator i = threads.listIterator();
+        while (i.hasNext()) {
+            GetNameThread thread = (GetNameThread)i.next();
+            thread.join();
+            if (!thread.correctName.equals(thread.actualName)) {
+                errln("FAIL, expected \"" + thread.correctName + "\", got \"" + thread.actualName + "\"");
+            }
+        }
+      }
+
+      private static class GetNameThread extends Thread {
+        private final int codePoint;
+        private final String correctName;
+        private String actualName;
+
+        GetNameThread(int codePoint, String correctName) {
+           this.codePoint = codePoint;
+           this.correctName = correctName;
+        }
+
+        public void run() {
+          for(int i=0; i<10000; i++) {
+            actualName = UCharacter.getName(codePoint);
+            if (!correctName.equals(actualName)) {
+              break;
+            }
+          }
+        }
+      }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java b/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java
new file mode 100644
index 0000000..f4888c5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java
@@ -0,0 +1,127 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2007, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: November 5 2002
+* Since: ICU 2.4
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.dev.test.TestFmwk;
+
+public class UPropertyAliasesTest extends TestFmwk {
+  
+    public UPropertyAliasesTest() {}
+    
+    public static void main(String[] args) throws Exception {
+        new UPropertyAliasesTest().run(args);
+    }
+
+    /**
+     * Test the property names and property value names API.
+     */
+    public void TestPropertyNames() {
+        int p, v, choice, rev;
+        for (p=0; ; ++p) {
+            boolean sawProp = false;
+            for (choice=0; ; ++choice) {
+                String name = null;
+                try {
+                    name = UCharacter.getPropertyName(p, choice);
+                    if (!sawProp) log("prop " + p + ":");
+                    String n = (name != null) ? ("\"" + name + '"') : "null";
+                    log(" " + choice + "=" + n);
+                    sawProp = true;
+                } catch (IllegalArgumentException e) {
+                    if (choice > 0) break;
+                }
+                if (name != null) {
+                    /* test reverse mapping */
+                    rev = UCharacter.getPropertyEnum(name);
+                    if (rev != p) {
+                        errln("Property round-trip failure: " + p + " -> " +
+                              name + " -> " + rev);
+                    }
+                }
+            }
+            if (sawProp) {
+                /* looks like a valid property; check the values */
+                String pname = UCharacter.getPropertyName(p, UProperty.NameChoice.LONG);
+                int max = 0;
+                if (p == UProperty.CANONICAL_COMBINING_CLASS) {
+                    max = 255;
+                } else if (p == UProperty.GENERAL_CATEGORY_MASK) {
+                    /* it's far too slow to iterate all the way up to
+                       the real max, U_GC_P_MASK */
+                    max = 0x1000; // U_GC_NL_MASK;
+                } else if (p == UProperty.BLOCK) {
+                    /* UBlockCodes, unlike other values, start at 1 */
+                    max = 1;
+                }
+                logln("");
+                for (v=-1; ; ++v) {
+                    boolean sawValue = false;
+                    for (choice=0; ; ++choice) {
+                        String vname = null;
+                        try {
+                            vname = UCharacter.getPropertyValueName(p, v, choice);
+                            String n = (vname != null) ? ("\"" + vname + '"') : "null";
+                            if (!sawValue) log(" " + pname + ", value " + v + ":");
+                            log(" " + choice + "=" + n);
+                            sawValue = true;
+                        }
+                        catch (IllegalArgumentException e) {
+                            if (choice>0) break;
+                        }
+                        if (vname != null) {
+                            /* test reverse mapping */
+                            rev = UCharacter.getPropertyValueEnum(p, vname);
+                            if (rev != v) {
+                                errln("Value round-trip failure (" + pname +
+                                      "): " + v + " -> " +
+                                      vname + " -> " + rev);
+                            }
+                        }
+                    }
+                    if (sawValue) {
+                        logln("");
+                    }
+                    if (!sawValue && v>=max) break;
+                }
+            }
+            if (!sawProp) {
+                if (p>=UProperty.STRING_LIMIT) {
+                    break;
+                } else if (p>=UProperty.DOUBLE_LIMIT) {
+                    p = UProperty.STRING_START - 1;
+                } else if (p>=UProperty.MASK_LIMIT) {
+                    p = UProperty.DOUBLE_START - 1;
+                } else if (p>=UProperty.INT_LIMIT) {
+                    p = UProperty.MASK_START - 1;
+                } else if (p>=UProperty.BINARY_LIMIT) {
+                    p = UProperty.INT_START - 1;
+                }
+            }
+        }
+        
+        int i = UCharacter.getIntPropertyMinValue(
+                                        UProperty.CANONICAL_COMBINING_CLASS);
+        try {
+            for (; i <= UCharacter.getIntPropertyMaxValue(
+                                          UProperty.CANONICAL_COMBINING_CLASS);
+                 i ++) {   
+                 UCharacter.getPropertyValueName(
+                                           UProperty.CANONICAL_COMBINING_CLASS,
+                                           i, UProperty.NameChoice.LONG);
+            }
+        }      
+        catch (IllegalArgumentException e) {
+            errln("0x" + Integer.toHexString(i) 
+                  + " should have a null property value name");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/lang/UTF16Test.java b/src/com/ibm/icu/dev/test/lang/UTF16Test.java
new file mode 100644
index 0000000..88e72dc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/lang/UTF16Test.java
@@ -0,0 +1,1644 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.UTF16Util;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.impl.Utility;
+
+/**
+* Testing class for UTF16
+* @author Syn Wee Quek
+* @since feb 09 2001
+*/
+public final class UTF16Test extends TestFmwk
+{
+    // constructor ===================================================
+
+    /**
+     * Constructor
+     */
+    public UTF16Test()
+    {
+    }
+
+    // public methods ================================================
+
+    /**
+     * Testing UTF16 class methods append
+     */
+    public void TestAppend()
+    {
+          StringBuffer strbuff = new StringBuffer("this is a string ");
+          char array[] = new char[UCharacter.MAX_VALUE >> 2];
+          int strsize = strbuff.length();
+          int arraysize = strsize;
+
+          Utility.getChars(strbuff, 0, strsize, array, 0);
+          for (int i = 1; i < UCharacter.MAX_VALUE; i += 100) {
+        UTF16.append(strbuff, i);
+        arraysize = UTF16.append(array, arraysize, i);
+
+        String arraystr = new String(array, 0, arraysize);
+        if (!arraystr.equals(strbuff.toString())) {
+        errln("FAIL Comparing char array append and string append " +
+              "with 0x" + Integer.toHexString(i));
+        }
+
+        // this is to cater for the combination of 0xDBXX 0xDC50 which
+        // forms a supplementary character
+        if (i == 0xDC51) {
+        strsize --;
+        }
+
+        if (UTF16.countCodePoint(strbuff) != strsize + (i / 100) + 1) {
+        errln("FAIL Counting code points in string appended with " +
+              " 0x" + Integer.toHexString(i));
+        break;
+        }
+    }
+
+    // coverage for new 1.5 - cover only so no real test
+    strbuff = new StringBuffer();
+    UTF16.appendCodePoint(strbuff, 0x10000);
+    if (strbuff.length() != 2) {
+        errln("fail appendCodePoint");
+    }
+    }
+
+    /**
+     * Testing UTF16 class methods bounds
+     */
+    public void TestBounds()
+    {
+          StringBuffer strbuff =
+                        //0     12345     6     7     8     9
+        new StringBuffer("\udc000123\ud800\udc00\ud801\udc01\ud802");
+          String str = strbuff.toString();
+          char array[] = str.toCharArray();
+          int boundtype[] = {UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY,
+               UTF16.LEAD_SURROGATE_BOUNDARY,
+               UTF16.TRAIL_SURROGATE_BOUNDARY,
+               UTF16.LEAD_SURROGATE_BOUNDARY,
+               UTF16.TRAIL_SURROGATE_BOUNDARY,
+               UTF16.SINGLE_CHAR_BOUNDARY};
+          int length = str.length();
+          for (int i = 0; i < length; i ++) {
+        if (UTF16.bounds(str, i) != boundtype[i]) {
+                  errln("FAIL checking bound type at index " + i);
+        }
+        if (UTF16.bounds(strbuff, i) != boundtype[i]) {
+                  errln("FAIL checking bound type at index " + i);
+        }
+        if (UTF16.bounds(array, 0, length, i) != boundtype[i]) {
+                  errln("FAIL checking bound type at index " + i);
+        }
+          }
+          // does not straddle between supplementary character
+          int start = 4;
+          int limit = 9;
+          int subboundtype1[] = {UTF16.SINGLE_CHAR_BOUNDARY,
+                   UTF16.LEAD_SURROGATE_BOUNDARY,
+                   UTF16.TRAIL_SURROGATE_BOUNDARY,
+                   UTF16.LEAD_SURROGATE_BOUNDARY,
+                   UTF16.TRAIL_SURROGATE_BOUNDARY};
+          try {
+        UTF16.bounds(array, start, limit, -1);
+        errln("FAIL Out of bounds index in bounds should fail");
+          } catch (Exception e) {
+        // getting rid of warnings
+        System.out.print("");
+          }
+
+          for (int i = 0; i < limit - start; i ++) {
+        if (UTF16.bounds(array, start, limit, i) != subboundtype1[i]) {
+                  errln("FAILED Subarray bounds in [" + start + ", " + limit +
+              "] expected " + subboundtype1[i] + " at offset " + i);
+        }
+          }
+
+          // starts from the mid of a supplementary character
+          int subboundtype2[] = {UTF16.SINGLE_CHAR_BOUNDARY,
+                   UTF16.LEAD_SURROGATE_BOUNDARY,
+                   UTF16.TRAIL_SURROGATE_BOUNDARY};
+
+          start = 6;
+          limit = 9;
+          for (int i = 0; i < limit - start; i ++) {
+        if (UTF16.bounds(array, start, limit, i) != subboundtype2[i]) {
+                  errln("FAILED Subarray bounds in [" + start + ", " + limit +
+              "] expected " + subboundtype2[i] + " at offset " + i);
+        }
+          }
+
+          // ends in the mid of a supplementary character
+          int subboundtype3[] = {UTF16.LEAD_SURROGATE_BOUNDARY,
+                   UTF16.TRAIL_SURROGATE_BOUNDARY,
+                   UTF16.SINGLE_CHAR_BOUNDARY};
+          start = 5;
+          limit = 8;
+          for (int i = 0; i < limit - start; i ++) {
+        if (UTF16.bounds(array, start, limit, i) != subboundtype3[i]) {
+                  errln("FAILED Subarray bounds in [" + start + ", " + limit +
+              "] expected " + subboundtype3[i] + " at offset " + i);
+        }
+          }
+    }
+
+    /**
+     * Testing UTF16 class methods charAt and charAtCodePoint
+     */
+    public void TestCharAt()
+    {
+          StringBuffer strbuff =
+        new StringBuffer("12345\ud800\udc0167890\ud800\udc02");
+          if (UTF16.charAt(strbuff, 0) != '1' || UTF16.charAt(strbuff, 2) != '3'
+              || UTF16.charAt(strbuff, 5) != 0x10001 ||
+        UTF16.charAt(strbuff, 6) != 0x10001 ||
+        UTF16.charAt(strbuff, 12) != 0x10002 ||
+        UTF16.charAt(strbuff, 13) != 0x10002) {
+        errln("FAIL Getting character from string buffer error" );
+          }
+          String str = strbuff.toString();
+          if (UTF16.charAt(str, 0) != '1' || UTF16.charAt(str, 2) != '3' ||
+        UTF16.charAt(str, 5) != 0x10001 || UTF16.charAt(str, 6) != 0x10001
+        || UTF16.charAt(str, 12) != 0x10002 ||
+        UTF16.charAt(str, 13) != 0x10002)
+        {
+              errln("FAIL Getting character from string error" );
+        }
+          char array[] = str.toCharArray();
+          int start = 0;
+          int limit = str.length();
+          if (UTF16.charAt(array, start, limit, 0) != '1' ||
+        UTF16.charAt(array, start, limit, 2) != '3' ||
+        UTF16.charAt(array, start, limit, 5) != 0x10001 ||
+        UTF16.charAt(array, start, limit, 6) != 0x10001 ||
+        UTF16.charAt(array, start, limit, 12) != 0x10002 ||
+        UTF16.charAt(array, start, limit, 13) != 0x10002) {
+        errln("FAIL Getting character from array error" );
+          }
+          // check the sub array here.
+          start = 6;
+          limit = 13;
+          try {
+        UTF16.charAt(array, start, limit, -1);
+        errln("FAIL out of bounds error expected");
+          } catch (Exception e) {
+        System.out.print("");
+          }
+          try {
+        UTF16.charAt(array, start, limit, 8);
+        errln("FAIL out of bounds error expected");
+          } catch (Exception e) {
+        System.out.print("");
+          }
+          if (UTF16.charAt(array, start, limit, 0) != 0xdc01) {
+        errln("FAIL Expected result in subarray 0xdc01");
+          }
+          if (UTF16.charAt(array, start, limit, 6) != 0xd800) {
+        errln("FAIL Expected result in subarray 0xd800");
+          }
+          ReplaceableString replaceable = new ReplaceableString(str);
+          if (UTF16.charAt(replaceable, 0) != '1' ||
+              UTF16.charAt(replaceable, 2) != '3' ||
+        UTF16.charAt(replaceable, 5) != 0x10001 ||
+        UTF16.charAt(replaceable, 6) != 0x10001 ||
+        UTF16.charAt(replaceable, 12) != 0x10002 ||
+        UTF16.charAt(replaceable, 13) != 0x10002) {
+        errln("FAIL Getting character from replaceable error" );
+          }
+    }
+
+    /**
+     * Testing UTF16 class methods countCodePoint
+     */
+    public void TestCountCodePoint()
+    {
+        StringBuffer strbuff = new StringBuffer("");
+        char         array[] = null;
+        if (UTF16.countCodePoint(strbuff) != 0 ||
+        UTF16.countCodePoint("") != 0 ||
+        UTF16.countCodePoint(array,0 ,0) != 0) {
+        errln("FAIL Counting code points for empty strings");
+        }
+
+        strbuff = new StringBuffer("this is a string ");
+        String str = strbuff.toString();
+        array = str.toCharArray();
+        int size = str.length();
+
+        if (UTF16.countCodePoint(array, 0, 0) != 0) {
+        errln("FAIL Counting code points for 0 offset array");
+        }
+
+        if (UTF16.countCodePoint(str) != size ||
+        UTF16.countCodePoint(strbuff) != size ||
+        UTF16.countCodePoint(array, 0, size) != size) {
+        errln("FAIL Counting code points");
+        }
+
+        UTF16.append(strbuff, 0x10000);
+        str = strbuff.toString();
+        array = str.toCharArray();
+        if (UTF16.countCodePoint(str) != size + 1 ||
+        UTF16.countCodePoint(strbuff) != size + 1 ||
+        UTF16.countCodePoint(array, 0, size + 1) != size + 1 ||
+        UTF16.countCodePoint(array, 0, size + 2) != size + 1) {
+        errln("FAIL Counting code points");
+        }
+        UTF16.append(strbuff, 0x61);
+        str = strbuff.toString();
+        array = str.toCharArray();
+        if (UTF16.countCodePoint(str) != size + 2 ||
+        UTF16.countCodePoint(strbuff) != size + 2 ||
+        UTF16.countCodePoint(array, 0, size + 1) != size + 1 ||
+        UTF16.countCodePoint(array, 0, size + 2) != size + 1 ||
+        UTF16.countCodePoint(array, 0, size + 3) != size + 2) {
+        errln("FAIL Counting code points");
+        }
+    }
+
+    /**
+     * Testing UTF16 class methods delete
+     */
+    public void TestDelete()
+    {                                        //01234567890123456
+        StringBuffer strbuff = new StringBuffer("these are strings");
+        int size = strbuff.length();
+        char array[] = strbuff.toString().toCharArray();
+
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        UTF16.delete(strbuff, 3);
+        try {
+        UTF16.delete(strbuff, strbuff.length());
+        errln("FAIL deleting out of bounds character should fail");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        UTF16.delete(strbuff, strbuff.length() - 1);
+        if (!strbuff.toString().equals("the string")) {
+        errln("FAIL expected result after deleting characters is " +
+          "\"the string\"");
+        }
+
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        size = UTF16.delete(array, size, 3);
+        try {
+        UTF16.delete(array, size, size);
+        errln("FAIL deleting out of bounds character should fail");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        size = UTF16.delete(array, size, size - 1);
+        String str = new String(array, 0, size);
+        if (!str.equals("the string")) {
+        errln("FAIL expected result after deleting characters is " +
+          "\"the string\"");
+        }
+    //012345678     9     01     2      3     4
+        strbuff = new StringBuffer("string: \ud800\udc00 \ud801\udc01 \ud801\udc01");
+        size = strbuff.length();
+        array = strbuff.toString().toCharArray();
+
+        UTF16.delete(strbuff, 8);
+        UTF16.delete(strbuff, 8);
+        UTF16.delete(strbuff, 9);
+        UTF16.delete(strbuff, 8);
+        UTF16.delete(strbuff, 9);
+        UTF16.delete(strbuff, 6);
+        UTF16.delete(strbuff, 6);
+        if (!strbuff.toString().equals("string")) {
+        errln("FAIL expected result after deleting characters is \"string\"");
+        }
+
+        size = UTF16.delete(array, size, 8);
+        size = UTF16.delete(array, size, 8);
+        size = UTF16.delete(array, size, 9);
+        size = UTF16.delete(array, size, 8);
+        size = UTF16.delete(array, size, 9);
+        size = UTF16.delete(array, size, 6);
+        size = UTF16.delete(array, size, 6);
+        str = new String(array, 0, size);
+        if (!str.equals("string")) {
+        errln("FAIL expected result after deleting characters is \"string\"");
+        }
+    }
+
+    /**
+     * Testing findOffsetFromCodePoint and findCodePointOffset
+     */
+    public void TestfindOffset()
+    {
+        // jitterbug 47
+        String str = "a\uD800\uDC00b";
+        StringBuffer strbuff = new StringBuffer(str);
+        char array[] = str.toCharArray();
+        int limit = str.length();
+        if (UTF16.findCodePointOffset(str, 0) != 0 ||
+        UTF16.findOffsetFromCodePoint(str, 0) != 0 ||
+        UTF16.findCodePointOffset(strbuff, 0) != 0 ||
+        UTF16.findOffsetFromCodePoint(strbuff, 0) != 0 ||
+        UTF16.findCodePointOffset(array, 0, limit, 0) != 0 ||
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 0) != 0) {
+        errln("FAIL Getting the first codepoint offset to a string with " +
+          "supplementary characters");
+        }
+        if (UTF16.findCodePointOffset(str, 1) != 1 ||
+        UTF16.findOffsetFromCodePoint(str, 1) != 1 ||
+        UTF16.findCodePointOffset(strbuff, 1) != 1 ||
+        UTF16.findOffsetFromCodePoint(strbuff, 1) != 1 ||
+        UTF16.findCodePointOffset(array, 0, limit, 1) != 1 ||
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 1) != 1) {
+        errln("FAIL Getting the second codepoint offset to a string with " +
+          "supplementary characters");
+        }
+        if (UTF16.findCodePointOffset(str, 2) != 1 ||
+        UTF16.findOffsetFromCodePoint(str, 2) != 3 ||
+        UTF16.findCodePointOffset(strbuff, 2) != 1 ||
+        UTF16.findOffsetFromCodePoint(strbuff, 2) != 3 ||
+        UTF16.findCodePointOffset(array, 0, limit, 2) != 1 ||
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 2) != 3) {
+        errln("FAIL Getting the third codepoint offset to a string with " +
+          "supplementary characters");
+        }
+        if (UTF16.findCodePointOffset(str, 3) != 2 ||
+        UTF16.findOffsetFromCodePoint(str, 3) != 4 ||
+        UTF16.findCodePointOffset(strbuff, 3) != 2 ||
+        UTF16.findOffsetFromCodePoint(strbuff, 3) != 4 ||
+        UTF16.findCodePointOffset(array, 0, limit, 3) != 2 ||
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 3) != 4) {
+        errln("FAIL Getting the last codepoint offset to a string with " +
+          "supplementary characters");
+        }
+        if (UTF16.findCodePointOffset(str, 4) != 3 ||
+        UTF16.findCodePointOffset(strbuff, 4) != 3 ||
+        UTF16.findCodePointOffset(array, 0, limit, 4) != 3) {
+        errln("FAIL Getting the length offset to a string with " +
+          "supplementary characters");
+        }
+        try {
+        UTF16.findCodePointOffset(str, 5);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findOffsetFromCodePoint(str, 4);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findCodePointOffset(strbuff, 5);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findOffsetFromCodePoint(strbuff, 4);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findCodePointOffset(array, 0, limit, 5);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+        try {
+        UTF16.findOffsetFromCodePoint(array, 0, limit, 4);
+        errln("FAIL Getting the a non-existence codepoint to a string " +
+          "with supplementary characters");
+        } catch (Exception e) {
+        // this is a success
+        logln("Passed out of bounds codepoint offset");
+        }
+
+        if (UTF16.findCodePointOffset(array, 1, 3, 0) != 0 ||
+        UTF16.findOffsetFromCodePoint(array, 1, 3, 0) != 0 ||
+        UTF16.findCodePointOffset(array, 1, 3, 1) != 0 ||
+        UTF16.findCodePointOffset(array, 1, 3, 2) != 1 ||
+        UTF16.findOffsetFromCodePoint(array, 1, 3, 1) != 2) {
+        errln("FAIL Getting valid codepoint offset in sub array");
+        }
+    }
+
+    /**
+     * Testing UTF16 class methods getCharCount, *Surrogate
+     */
+    public void TestGetCharCountSurrogate()
+    {
+        if (UTF16.getCharCount(0x61) != 1 ||
+        UTF16.getCharCount(0x10000) != 2) {
+        errln("FAIL getCharCount result failure");
+        }
+        if (UTF16.getLeadSurrogate(0x61) != 0 ||
+        UTF16.getTrailSurrogate(0x61) != 0x61 ||
+        UTF16.isLeadSurrogate((char)0x61) ||
+        UTF16.isTrailSurrogate((char)0x61) ||
+        UTF16.getLeadSurrogate(0x10000) != 0xd800 ||
+        UTF16.getTrailSurrogate(0x10000) != 0xdc00 ||
+        UTF16.isLeadSurrogate((char)0xd800) != true ||
+        UTF16.isTrailSurrogate((char)0xd800) ||
+        UTF16.isLeadSurrogate((char)0xdc00) ||
+        UTF16.isTrailSurrogate((char)0xdc00) != true) {
+        errln("FAIL *Surrogate result failure");
+        }
+
+        if (UTF16.isSurrogate((char)0x61) || !UTF16.isSurrogate((char)0xd800)
+            || !UTF16.isSurrogate((char)0xdc00)) {
+        errln("FAIL isSurrogate result failure");
+        }
+    }
+
+    /**
+     * Testing UTF16 class method insert
+     */
+    public void TestInsert()
+    {
+        StringBuffer strbuff = new StringBuffer("0123456789");
+        char array[] = new char[128];
+        Utility.getChars(strbuff, 0, strbuff.length(), array, 0);
+        int length = 10;
+        UTF16.insert(strbuff, 5, 't');
+        UTF16.insert(strbuff, 5, 's');
+        UTF16.insert(strbuff, 5, 'e');
+        UTF16.insert(strbuff, 5, 't');
+        if (!(strbuff.toString().equals("01234test56789"))) {
+        errln("FAIL inserting \"test\"");
+        }
+        length = UTF16.insert(array, length, 5, 't');
+        length = UTF16.insert(array, length, 5, 's');
+        length = UTF16.insert(array, length, 5, 'e');
+        length = UTF16.insert(array, length, 5, 't');
+        String str = new String(array, 0, length);
+        if (!(str.equals("01234test56789"))) {
+        errln("FAIL inserting \"test\"");
+        }
+        UTF16.insert(strbuff, 0, 0x10000);
+        UTF16.insert(strbuff, 11, 0x10000);
+        UTF16.insert(strbuff, strbuff.length(), 0x10000);
+        if (!(strbuff.toString().equals(
+                    "\ud800\udc0001234test\ud800\udc0056789\ud800\udc00"))) {
+        errln("FAIL inserting supplementary characters");
+        }
+        length = UTF16.insert(array, length, 0, 0x10000);
+        length = UTF16.insert(array, length, 11, 0x10000);
+        length = UTF16.insert(array, length, length, 0x10000);
+        str = new String(array, 0, length);
+        if (!(str.equals(
+             "\ud800\udc0001234test\ud800\udc0056789\ud800\udc00"))) {
+        errln("FAIL inserting supplementary characters");
+        }
+
+        try {
+        UTF16.insert(strbuff, -1, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.insert(strbuff, 64, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.insert(array, length, -1, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.insert(array, length, 64, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        // exceeded array size
+        UTF16.insert(array, array.length, 64, 0);
+        errln("FAIL invalid insertion offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+    }
+
+    /*
+     * Testing moveCodePointOffset APIs
+     */
+
+    //
+    //   checkMoveCodePointOffset
+    //      Run a single test case through each of the moveCodePointOffset() functions.
+    //          Parameters -
+    //              s               The string to work in.
+    //              startIdx        The starting position within the string.
+    //              amount          The number of code points to move.
+    //              expectedResult  The string index after the move, or -1 if the
+    //                              function should throw an exception.
+    private void checkMoveCodePointOffset(String s, int startIdx, int amount, int expectedResult) {
+        // Test with the String flavor of moveCodePointOffset
+        try {
+            int result = UTF16.moveCodePointOffset(s, startIdx, amount);
+            if (result != expectedResult) {
+                errln("FAIL: UTF16.moveCodePointOffset(String \"" + s + "\", " + startIdx + ", " + amount + ")" +
+                        " returned "  + result + ", expected result was " +
+                        (expectedResult==-1 ? "exception" : Integer.toString(expectedResult)));
+            }
+        }
+        catch (IndexOutOfBoundsException e) {
+            if (expectedResult != -1) {
+                errln("FAIL: UTF16.moveCodePointOffset(String \"" + s + "\", " + startIdx + ", " + amount + ")" +
+                        " returned exception" + ", expected result was " + expectedResult);
+            }
+        }
+
+        // Test with the StringBuffer flavor of moveCodePointOffset
+        StringBuffer sb = new StringBuffer(s);
+        try {
+            int result = UTF16.moveCodePointOffset(sb, startIdx, amount);
+            if (result != expectedResult) {
+                errln("FAIL: UTF16.moveCodePointOffset(StringBuffer \"" + s + "\", " + startIdx + ", " + amount + ")" +
+                        " returned "  + result + ", expected result was " +
+                        (expectedResult==-1 ? "exception" : Integer.toString(expectedResult)));
+            }
+        }
+        catch (IndexOutOfBoundsException e) {
+            if (expectedResult != -1) {
+                errln("FAIL: UTF16.moveCodePointOffset(StringBuffer \"" + s + "\", " + startIdx + ", " + amount + ")" +
+                        " returned exception" + ", expected result was " + expectedResult);
+            }
+        }
+
+        // Test with the char[] flavor of moveCodePointOffset
+        char ca[] = s.toCharArray();
+        try {
+            int result = UTF16.moveCodePointOffset(ca, 0, s.length(), startIdx, amount);
+            if (result != expectedResult) {
+                errln("FAIL: UTF16.moveCodePointOffset(char[] \"" + s + "\", 0, " + s.length()
+                        + ", " + startIdx + ", " + amount + ")" +
+                        " returned "  + result + ", expected result was " +
+                        (expectedResult==-1 ? "exception" : Integer.toString(expectedResult)));
+            }
+        }
+        catch (IndexOutOfBoundsException e) {
+            if (expectedResult != -1) {
+                errln("FAIL: UTF16.moveCodePointOffset(char[] \"" + s + "\", 0, " + s.length()
+                        + ", " + startIdx + ", " + amount + ")" +
+                        " returned exception" + ", expected result was " + expectedResult);
+            }
+        }
+
+        // Put the test string into the interior of a char array,
+        //   run test on the subsection of the array.
+        char ca2[] = new char[s.length()+2];
+        ca2[0] = (char)0xd800;
+        ca2[s.length()+1] = (char)0xd8ff;
+        s.getChars(0, s.length(), ca2, 1);
+        try {
+            int result = UTF16.moveCodePointOffset(ca2, 1, s.length()+1, startIdx, amount);
+            if (result != expectedResult) {
+                errln("UTF16.moveCodePointOffset(char[] \"" + "." + s + ".\", 1, " + (s.length()+1)
+                        + ", " + startIdx + ", " + amount + ")" +
+                         " returned "  + result + ", expected result was " +
+                        (expectedResult==-1 ? "exception" : Integer.toString(expectedResult)));
+            }
+        }
+        catch (IndexOutOfBoundsException e) {
+            if (expectedResult != -1) {
+                errln("UTF16.moveCodePointOffset(char[] \"" + "." + s + ".\", 1, " + (s.length()+1)
+                        + ", " + startIdx + ", " + amount + ")" +
+                        " returned exception" + ", expected result was " + expectedResult);
+            }
+        }
+
+    }
+
+
+    public void TestMoveCodePointOffset()
+    {
+        // checkMoveCodePointOffset(String, startIndex, amount, expected );  expected=-1 for exception.
+
+        // No Supplementary chars
+        checkMoveCodePointOffset("abc", 1,  1, 2);
+        checkMoveCodePointOffset("abc", 1, -1, 0);
+        checkMoveCodePointOffset("abc", 1, -2, -1);
+        checkMoveCodePointOffset("abc", 1,  2, 3);
+        checkMoveCodePointOffset("abc", 1,  3, -1);
+        checkMoveCodePointOffset("abc", 1,  0, 1);
+
+        checkMoveCodePointOffset("abc", 3, 0, 3);
+        checkMoveCodePointOffset("abc", 4, 0, -1);
+        checkMoveCodePointOffset("abc", 0, 0, 0);
+        checkMoveCodePointOffset("abc", -1, 0, -1);
+
+        checkMoveCodePointOffset("", 0, 0, 0);
+        checkMoveCodePointOffset("", 0, -1, -1);
+        checkMoveCodePointOffset("", 0, 1, -1);
+
+        checkMoveCodePointOffset("a", 0, 0, 0);
+        checkMoveCodePointOffset("a", 1, 0, 1);
+        checkMoveCodePointOffset("a", 0, 1, 1);
+        checkMoveCodePointOffset("a", 1, -1, 0);
+
+
+        // Supplementary in middle of string
+        checkMoveCodePointOffset("a\ud800\udc00b", 0, 1, 1);
+        checkMoveCodePointOffset("a\ud800\udc00b", 0, 2, 3);
+        checkMoveCodePointOffset("a\ud800\udc00b", 0, 3, 4);
+        checkMoveCodePointOffset("a\ud800\udc00b", 0, 4, -1);
+
+        checkMoveCodePointOffset("a\ud800\udc00b", 4, -1, 3);
+        checkMoveCodePointOffset("a\ud800\udc00b", 4, -2, 1);
+        checkMoveCodePointOffset("a\ud800\udc00b", 4, -3, 0);
+        checkMoveCodePointOffset("a\ud800\udc00b", 4, -4, -1);
+
+        // Supplementary at start of string
+        checkMoveCodePointOffset("\ud800\udc00ab", 0, 1, 2);
+        checkMoveCodePointOffset("\ud800\udc00ab", 1, 1, 2);
+        checkMoveCodePointOffset("\ud800\udc00ab", 2, 1, 3);
+        checkMoveCodePointOffset("\ud800\udc00ab", 2, -1, 0);
+        checkMoveCodePointOffset("\ud800\udc00ab", 1, -1, 0);
+        checkMoveCodePointOffset("\ud800\udc00ab", 0, -1, -1);
+
+
+        // Supplementary at end of string
+        checkMoveCodePointOffset("ab\ud800\udc00", 1, 1, 2);
+        checkMoveCodePointOffset("ab\ud800\udc00", 2, 1, 4);
+        checkMoveCodePointOffset("ab\ud800\udc00", 3, 1, 4);
+        checkMoveCodePointOffset("ab\ud800\udc00", 4, 1, -1);
+
+        checkMoveCodePointOffset("ab\ud800\udc00", 5, -2, -1);
+        checkMoveCodePointOffset("ab\ud800\udc00", 4, -1, 2);
+        checkMoveCodePointOffset("ab\ud800\udc00", 3, -1, 2);
+        checkMoveCodePointOffset("ab\ud800\udc00", 2, -1, 1);
+        checkMoveCodePointOffset("ab\ud800\udc00", 1, -1, 0);
+
+        // Unpaired surrogate in middle
+        checkMoveCodePointOffset("a\ud800b", 0, 1, 1);
+        checkMoveCodePointOffset("a\ud800b", 1, 1, 2);
+        checkMoveCodePointOffset("a\ud800b", 2, 1, 3);
+
+        checkMoveCodePointOffset("a\udc00b", 0, 1, 1);
+        checkMoveCodePointOffset("a\udc00b", 1, 1, 2);
+        checkMoveCodePointOffset("a\udc00b", 2, 1, 3);
+
+        checkMoveCodePointOffset("a\udc00\ud800b", 0, 1, 1);
+        checkMoveCodePointOffset("a\udc00\ud800b", 1, 1, 2);
+        checkMoveCodePointOffset("a\udc00\ud800b", 2, 1, 3);
+        checkMoveCodePointOffset("a\udc00\ud800b", 3, 1, 4);
+
+        checkMoveCodePointOffset("a\ud800b", 1, -1, 0);
+        checkMoveCodePointOffset("a\ud800b", 2, -1, 1);
+        checkMoveCodePointOffset("a\ud800b", 3, -1, 2);
+
+        checkMoveCodePointOffset("a\udc00b", 1, -1, 0);
+        checkMoveCodePointOffset("a\udc00b", 2, -1, 1);
+        checkMoveCodePointOffset("a\udc00b", 3, -1, 2);
+
+        checkMoveCodePointOffset("a\udc00\ud800b", 1, -1, 0);
+        checkMoveCodePointOffset("a\udc00\ud800b", 2, -1, 1);
+        checkMoveCodePointOffset("a\udc00\ud800b", 3, -1, 2);
+        checkMoveCodePointOffset("a\udc00\ud800b", 4, -1, 3);
+
+        // Unpaired surrogate at start
+        checkMoveCodePointOffset("\udc00ab", 0, 1, 1);
+        checkMoveCodePointOffset("\ud800ab", 0, 2, 2);
+        checkMoveCodePointOffset("\ud800\ud800ab", 0, 3, 3);
+        checkMoveCodePointOffset("\udc00\udc00ab", 0, 4, 4);
+
+        checkMoveCodePointOffset("\udc00ab", 2, -1, 1);
+        checkMoveCodePointOffset("\ud800ab", 1, -1, 0);
+        checkMoveCodePointOffset("\ud800ab", 1, -2, -1);
+        checkMoveCodePointOffset("\ud800\ud800ab", 2, -1, 1);
+        checkMoveCodePointOffset("\udc00\udc00ab", 2, -2, 0);
+        checkMoveCodePointOffset("\udc00\udc00ab", 2, -3, -1);
+
+        // Unpaired surrogate at end
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 3, 1, 4);
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 2, 1, 3);
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 1, 1, 2);
+
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 4, -1, 3);
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 3, -1, 2);
+        checkMoveCodePointOffset("ab\udc00\udc00ab", 2, -1, 1);
+
+
+                               //01234567890     1     2     3     45678901234
+        String str = new String("0123456789\ud800\udc00\ud801\udc010123456789");
+        int move1[] = { 1,  2,  3,  4,  5,  6,  7,  8,  9, 10,
+                       12, 12, 14, 14, 15, 16, 17, 18, 19, 20,
+                       21, 22, 23, 24};
+        int move2[] = { 2,  3,  4,  5,  6,  7,  8,  9, 10, 12,
+                       14, 14, 15, 15, 16, 17, 18, 19, 20, 21,
+                       22, 23, 24, -1};
+        int move3[] = { 3,  4,  5,  6,  7,  8,  9, 10, 12, 14,
+                       15, 15, 16, 16, 17, 18, 19, 20, 21, 22,
+                       23, 24, -1, -1};
+        int size = str.length();
+        for (int i = 0; i < size; i ++) {
+            checkMoveCodePointOffset(str, i, 1, move1[i]);
+            checkMoveCodePointOffset(str, i, 2, move2[i]);
+            checkMoveCodePointOffset(str, i, 3, move3[i]);
+        }
+
+        char strarray[] = str.toCharArray();
+        if (UTF16.moveCodePointOffset(strarray, 9, 13, 0, 2) != 3) {
+            errln("FAIL: Moving offset 0 by 2 codepoint in subarray [9, 13] " +
+            "expected result 3");
+        }
+        if (UTF16.moveCodePointOffset(strarray, 9, 13, 1, 2) != 4) {
+            errln("FAIL: Moving offset 1 by 2 codepoint in subarray [9, 13] " +
+            "expected result 4");
+        }
+        if (UTF16.moveCodePointOffset(strarray, 11, 14, 0, 2) != 3) {
+            errln("FAIL: Moving offset 0 by 2 codepoint in subarray [11, 14] "
+                    + "expected result 3");
+        }
+    }
+
+    /**
+     * Testing UTF16 class methods setCharAt
+     */
+    public void TestSetCharAt()
+    {
+        StringBuffer strbuff = new StringBuffer("012345");
+        char array[] = new char[128];
+        Utility.getChars(strbuff, 0, strbuff.length(), array, 0);
+        int length = 6;
+        for (int i = 0; i < length; i ++) {
+        UTF16.setCharAt(strbuff, i, '0');
+        UTF16.setCharAt(array, length, i, '0');
+        }
+        String str = new String(array, 0, length);
+        if (!(strbuff.toString().equals("000000")) ||
+        !(str.equals("000000"))) {
+        errln("FAIL: setChar to '0' failed");
+        }
+        UTF16.setCharAt(strbuff, 0, 0x10000);
+        UTF16.setCharAt(strbuff, 4, 0x10000);
+        UTF16.setCharAt(strbuff, 7, 0x10000);
+        if (!(strbuff.toString().equals(
+                    "\ud800\udc0000\ud800\udc000\ud800\udc00"))) {
+        errln("FAIL: setChar to 0x10000 failed");
+        }
+        length = UTF16.setCharAt(array, length, 0, 0x10000);
+        length = UTF16.setCharAt(array, length, 4, 0x10000);
+        length = UTF16.setCharAt(array, length, 7, 0x10000);
+        str = new String(array, 0, length);
+        if (!(str.equals("\ud800\udc0000\ud800\udc000\ud800\udc00"))) {
+        errln("FAIL: setChar to 0x10000 failed");
+        }
+        UTF16.setCharAt(strbuff, 0, '0');
+        UTF16.setCharAt(strbuff, 1, '1');
+        UTF16.setCharAt(strbuff, 2, '2');
+        UTF16.setCharAt(strbuff, 4, '3');
+        UTF16.setCharAt(strbuff, 4, '4');
+        UTF16.setCharAt(strbuff, 5, '5');
+        if (!strbuff.toString().equals("012345")) {
+        errln("Fail converting supplementaries in StringBuffer to BMP " +
+          "characters");
+        }
+        length = UTF16.setCharAt(array, length, 0, '0');
+        length = UTF16.setCharAt(array, length, 1, '1');
+        length = UTF16.setCharAt(array, length, 2, '2');
+        length = UTF16.setCharAt(array, length, 4, '3');
+        length = UTF16.setCharAt(array, length, 4, '4');
+        length = UTF16.setCharAt(array, length, 5, '5');
+        str = new String(array, 0, length);
+        if (!str.equals("012345")) {
+        errln("Fail converting supplementaries in array to BMP " +
+          "characters");
+        }
+        try {
+        UTF16.setCharAt(strbuff, -1, 0);
+        errln("FAIL: setting character at invalid offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.setCharAt(array, length, -1, 0);
+        errln("FAIL: setting character at invalid offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.setCharAt(strbuff, length, 0);
+        errln("FAIL: setting character at invalid offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.setCharAt(array, length, length, 0);
+        errln("FAIL: setting character at invalid offset");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+    }
+
+    /**
+     * Testing UTF16 valueof APIs
+     */
+    public void TestValueOf()
+    {
+        if(UCharacter.getCodePoint('\ud800','\udc00')!=0x10000){
+            errln("FAIL: getCodePoint('\ud800','\udc00')");
+        }
+        if (!UTF16.valueOf(0x61).equals("a") ||
+        !UTF16.valueOf(0x10000).equals("\ud800\udc00")) {
+        errln("FAIL: valueof(char32)");
+        }
+        String str = new String("01234\ud800\udc0056789");
+        StringBuffer strbuff = new StringBuffer(str);
+        char array[] = str.toCharArray();
+        int length = str.length();
+
+        String expected[] = {"0", "1", "2", "3", "4", "\ud800\udc00",
+                 "\ud800\udc00", "5", "6", "7", "8", "9"};
+        for (int i = 0; i < length; i ++) {
+        if (!UTF16.valueOf(str, i).equals(expected[i]) ||
+                !UTF16.valueOf(strbuff, i).equals(expected[i]) ||
+                !UTF16.valueOf(array, 0, length, i).equals(expected[i])) {
+                errln("FAIL: valueOf() expected " + expected[i]);
+        }
+        }
+        try {
+        UTF16.valueOf(str, -1);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(strbuff, -1);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(array, 0, length, -1);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(str, length);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(strbuff, length);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(array, 0, length, length);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        if (!UTF16.valueOf(array, 6, length, 0).equals("\udc00") ||
+        !UTF16.valueOf(array, 0, 6, 5).equals("\ud800")) {
+        errln("FAIL: error getting partial supplementary character");
+        }
+        try {
+        UTF16.valueOf(array, 3, 5, -1);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+        try {
+        UTF16.valueOf(array, 3, 5, 3);
+        errln("FAIL: out of bounds error expected");
+        } catch (Exception e) {
+        System.out.print("");
+        }
+    }
+
+    public void TestIndexOf()
+    {
+    //012345678901234567890123456789012345
+        String test1     = "test test ttest tetest testesteststt";
+        String test2     = "test";
+        int    testChar1 = 0x74;
+        int    testChar2 = 0x20402;
+        // int    testChar3 = 0xdc02;
+        // int    testChar4 = 0xd841;
+        String test3     = "\ud841\udc02\u0071\udc02\ud841\u0071\ud841\udc02\u0071\u0072\ud841\udc02\u0071\ud841\udc02\u0071\udc02\ud841\u0073";
+        String test4     = UCharacter.toString(testChar2);
+
+        if (UTF16.indexOf(test1, test2) != 0 ||
+            UTF16.indexOf(test1, test2, 0) != 0) {
+            errln("indexOf failed: expected to find '" + test2 +
+                  "' at position 0 in text '" + test1 + "'");
+        }
+        if (UTF16.indexOf(test1, testChar1) != 0 ||
+            UTF16.indexOf(test1, testChar1, 0) != 0) {
+            errln("indexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar1) +
+                  " at position 0 in text '" + test1 + "'");
+        }
+        if (UTF16.indexOf(test3, testChar2) != 0 ||
+            UTF16.indexOf(test3, testChar2, 0) != 0) {
+            errln("indexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar2) +
+                  " at position 0 in text '" + Utility.hex(test3) + "'");
+        }
+        String test5 = "\ud841\ud841\udc02";
+        if (UTF16.indexOf(test5, testChar2) != 1 ||
+            UTF16.indexOf(test5, testChar2, 0) != 1) {
+            errln("indexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar2) +
+                  " at position 0 in text '" + Utility.hex(test3) + "'");
+        }
+        if (UTF16.lastIndexOf(test1, test2) != 29 ||
+            UTF16.lastIndexOf(test1, test2, test1.length()) != 29) {
+            errln("lastIndexOf failed: expected to find '" + test2 +
+                  "' at position 29 in text '" + test1 + "'");
+        }
+        if (UTF16.lastIndexOf(test1, testChar1) != 35 ||
+            UTF16.lastIndexOf(test1, testChar1, test1.length()) != 35) {
+            errln("lastIndexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar1) +
+                  " at position 35 in text '" + test1 + "'");
+        }
+        if (UTF16.lastIndexOf(test3, testChar2) != 13 ||
+            UTF16.lastIndexOf(test3, testChar2, test3.length()) != 13) {
+            errln("indexOf failed: expected to find 0x" +
+                  Integer.toHexString(testChar2) +
+                  " at position 13 in text '" + Utility.hex(test3) + "'");
+        }
+        int occurrences = 0;
+        for (int startPos = 0; startPos != -1 && startPos < test1.length();)
+        {
+        startPos = UTF16.indexOf(test1, test2, startPos);
+        if (startPos >= 0) {
+            ++ occurrences;
+            startPos += 4;
+        }
+        }
+        if (occurrences != 6) {
+            errln("indexOf failed: expected to find 6 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 10; startPos != -1 && startPos < test1.length();)
+        {
+        startPos = UTF16.indexOf(test1, test2, startPos);
+        if (startPos >= 0) {
+            ++ occurrences;
+            startPos += 4;
+        }
+        }
+        if (occurrences != 4) {
+            errln("indexOf with starting offset failed: expected to find 4 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 0;
+         startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, test4, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 2;
+            }
+        }
+        if (occurrences != 4) {
+            errln("indexOf failed: expected to find 4 occurrences, found "
+          + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 10;
+             startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, test4, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 2;
+            }
+        }
+        if (occurrences != 2) {
+            errln("indexOf failed: expected to find 2 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 0;
+         startPos != -1 && startPos < test1.length();) {
+            startPos = UTF16.indexOf(test1, testChar1, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 1;
+            }
+        }
+        if (occurrences != 16) {
+            errln("indexOf with character failed: expected to find 16 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 10;
+         startPos != -1 && startPos < test1.length();) {
+            startPos = UTF16.indexOf(test1, testChar1, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 1;
+            }
+        }
+        if (occurrences != 12) {
+            errln("indexOf with character & start offset failed: expected to find 12 occurrences, found "
+          + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 0;
+         startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, testChar2, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 1;
+            }
+        }
+        if (occurrences != 4) {
+            errln("indexOf failed: expected to find 4 occurrences, found "
+                  + occurrences);
+        }
+
+        occurrences = 0;
+        for (int startPos = 5; startPos != -1 && startPos < test3.length();) {
+            startPos = UTF16.indexOf(test3, testChar2, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos += 1;
+            }
+        }
+        if (occurrences != 3) {
+            errln("indexOf with character & start & end offsets failed: expected to find 2 occurrences, found "
+          + occurrences);
+        }
+        occurrences = 0;
+        for (int startPos = 32; startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test1, test2, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos -= 5;
+            }
+        }
+        if (occurrences != 6) {
+            errln("lastIndexOf with starting and ending offsets failed: expected to find 4 occurrences, found "
+                  + occurrences);
+        }
+        occurrences = 0;
+        for (int startPos = 32; startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test1, testChar1, startPos);
+            if (startPos != -1) {
+                ++ occurrences;
+                startPos -= 5;
+            }
+        }
+        if (occurrences != 7) {
+            errln("lastIndexOf with character & start & end offsets failed: expected to find 11 occurrences, found "
+          + occurrences);
+        }
+
+        //testing UChar32
+        occurrences = 0;
+        for (int startPos = test3.length(); startPos != -1;) {
+            startPos = UTF16.lastIndexOf(test3, testChar2, startPos - 5);
+            if (startPos != -1) {
+                ++ occurrences;
+            }
+        }
+        if (occurrences != 3) {
+            errln("lastIndexOf with character & start & end offsets failed: expected to find 3 occurrences, found "
+          + occurrences);
+        }
+
+        // testing supplementary
+        for (int i = 0; i < INDEXOF_SUPPLEMENTARY_CHAR_.length; i ++) {
+        int ch = INDEXOF_SUPPLEMENTARY_CHAR_[i];
+        for (int j = 0; j < INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i].length;
+         j ++) {
+        int index = 0;
+        int expected = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j];
+        if  (j > 0) {
+            index = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j - 1] + 1;
+        }
+        if (UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_, ch, index) !=
+            expected ||
+            UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_,
+                  UCharacter.toString(ch), index) !=
+            expected) {
+            errln("Failed finding index for supplementary 0x" +
+              Integer.toHexString(ch));
+        }
+        index = INDEXOF_SUPPLEMENTARY_STRING_.length();
+        if (j < INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i].length - 1) {
+            index = INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[i][j + 1] - 1;
+        }
+        if (UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_, ch,
+                      index) != expected ||
+            UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_,
+                      UCharacter.toString(ch), index)
+            != expected)
+            {
+            errln("Failed finding last index for supplementary 0x" +
+                  Integer.toHexString(ch));
+            }
+        }
+        }
+
+        for (int i = 0; i < INDEXOF_SUPPLEMENTARY_STR_INDEX_.length; i ++) {
+        int index = 0;
+        int expected = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i];
+        if  (i > 0) {
+        index = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i - 1] + 1;
+        }
+        if (UTF16.indexOf(INDEXOF_SUPPLEMENTARY_STRING_,
+                  INDEXOF_SUPPLEMENTARY_STR_, index) != expected) {
+        errln("Failed finding index for supplementary string " +
+              hex(INDEXOF_SUPPLEMENTARY_STRING_));
+        }
+        index = INDEXOF_SUPPLEMENTARY_STRING_.length();
+        if (i < INDEXOF_SUPPLEMENTARY_STR_INDEX_.length - 1) {
+        index = INDEXOF_SUPPLEMENTARY_STR_INDEX_[i + 1] - 1;
+        }
+        if (UTF16.lastIndexOf(INDEXOF_SUPPLEMENTARY_STRING_,
+                              INDEXOF_SUPPLEMENTARY_STR_, index) != expected) {
+        errln("Failed finding last index for supplementary string " +
+              hex(INDEXOF_SUPPLEMENTARY_STRING_));
+        }
+        }
+    }
+
+    public void TestReplace()
+    {
+        String test1 = "One potato, two potato, three potato, four\n";
+        String test2 = "potato";
+        String test3 = "MISSISSIPPI";
+
+        String result = UTF16.replace(test1, test2, test3);
+        String expectedValue =
+            "One MISSISSIPPI, two MISSISSIPPI, three MISSISSIPPI, four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+        result = UTF16.replace(test1, test3, test2);
+        expectedValue = test1;
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test1, ',', 'e');
+        expectedValue = "One potatoe two potatoe three potatoe four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test1, ',', 0x10000);
+        expectedValue = "One potato\ud800\udc00 two potato\ud800\udc00 three potato\ud800\udc00 four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test1, "potato", "\ud800\udc00\ud801\udc01");
+        expectedValue = "One \ud800\udc00\ud801\udc01, two \ud800\udc00\ud801\udc01, three \ud800\udc00\ud801\udc01, four\n";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        String test4 = "\ud800\ud800\udc00\ud800\udc00\udc00\ud800\ud800\udc00\ud800\udc00\udc00";
+        result = UTF16.replace(test4, 0xd800, 'A');
+        expectedValue = "A\ud800\udc00\ud800\udc00\udc00A\ud800\udc00\ud800\udc00\udc00";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test4, 0xdC00, 'A');
+        expectedValue = "\ud800\ud800\udc00\ud800\udc00A\ud800\ud800\udc00\ud800\udc00A";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+
+        result = UTF16.replace(test4, 0x10000, 'A');
+        expectedValue = "\ud800AA\udc00\ud800AA\udc00";
+        if (!result.equals(expectedValue)) {
+            errln("findAndReplace failed: expected \"" + expectedValue +
+                  "\", got \"" + test1 + "\".");
+        }
+    }
+
+    public void TestReverse()
+    {
+        StringBuffer test = new StringBuffer(
+                         "backwards words say to used I");
+
+        StringBuffer result = UTF16.reverse(test);
+        if (!result.toString().equals("I desu ot yas sdrow sdrawkcab")) {
+            errln("reverse() failed:  Expected \"I desu ot yas sdrow sdrawkcab\",\n got \""
+          + result + "\"");
+        }
+        StringBuffer testbuffer = new StringBuffer();
+        UTF16.append(testbuffer, 0x2f999);
+        UTF16.append(testbuffer, 0x1d15f);
+        UTF16.append(testbuffer, 0x00c4);
+        UTF16.append(testbuffer, 0x1ed0);
+        result = UTF16.reverse(testbuffer);
+        if (result.charAt(0) != 0x1ed0 ||
+            result.charAt(1) != 0xc4 ||
+            UTF16.charAt(result, 2) != 0x1d15f ||
+            UTF16.charAt(result, 4)!=0x2f999) {
+            errln("reverse() failed with supplementary characters");
+        }
+    }
+
+    /**
+     * Testing the setter and getter apis for StringComparator
+     */
+    public void TestStringComparator()
+    {
+        UTF16.StringComparator compare = new UTF16.StringComparator();
+        if (compare.getCodePointCompare() != false) {
+            errln("Default string comparator should be code unit compare");
+        }
+        if (compare.getIgnoreCase() != false) {
+            errln("Default string comparator should be case sensitive compare");
+        }
+        if (compare.getIgnoreCaseOption()
+            != UTF16.StringComparator.FOLD_CASE_DEFAULT) {
+            errln("Default string comparator should have fold case default compare");
+        }
+        compare.setCodePointCompare(true);
+        if (compare.getCodePointCompare() != true) {
+            errln("Error setting code point compare");
+        }
+        compare.setCodePointCompare(false);
+        if (compare.getCodePointCompare() != false) {
+            errln("Error setting code point compare");
+        }
+        compare.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        if (compare.getIgnoreCase() != true
+            || compare.getIgnoreCaseOption()
+        != UTF16.StringComparator.FOLD_CASE_DEFAULT) {
+            errln("Error setting ignore case and options");
+        }
+        compare.setIgnoreCase(false, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+        if (compare.getIgnoreCase() != false
+            || compare.getIgnoreCaseOption()
+        != UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I) {
+            errln("Error setting ignore case and options");
+        }
+        compare.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+        if (compare.getIgnoreCase() != true
+            || compare.getIgnoreCaseOption()
+        != UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I) {
+            errln("Error setting ignore case and options");
+        }
+        compare.setIgnoreCase(false, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        if (compare.getIgnoreCase() != false
+            || compare.getIgnoreCaseOption()
+        != UTF16.StringComparator.FOLD_CASE_DEFAULT) {
+            errln("Error setting ignore case and options");
+        }
+    }
+
+    public void TestCodePointCompare()
+    {
+        // these strings are in ascending order
+        String str[] = {"\u0061", "\u20ac\ud801", "\u20ac\ud800\udc00",
+                        "\ud800", "\ud800\uff61", "\udfff",
+                        "\uff61\udfff", "\uff61\ud800\udc02", "\ud800\udc02",
+                        "\ud84d\udc56"};
+        UTF16.StringComparator cpcompare
+            = new UTF16.StringComparator(true, false,
+                     UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        UTF16.StringComparator cucompare
+            = new UTF16.StringComparator();
+        for (int i = 0; i < str.length - 1; ++ i) {
+            if (cpcompare.compare(str[i], str[i + 1]) >= 0) {
+                errln("error: compare() in code point order fails for string "
+                      + Utility.hex(str[i]) + " and "
+                      + Utility.hex(str[i + 1]));
+            }
+            // test code unit compare
+            if (cucompare.compare(str[i], str[i + 1])
+                != str[i].compareTo(str[i + 1])) {
+                errln("error: compare() in code unit order fails for string "
+                      + Utility.hex(str[i]) + " and "
+                      + Utility.hex(str[i + 1]));
+            }
+        }
+    }
+
+    public void TestCaseCompare()
+    {
+        String mixed = "\u0061\u0042\u0131\u03a3\u00df\ufb03\ud93f\udfff";
+        String otherDefault = "\u0041\u0062\u0131\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udfff";
+        String otherExcludeSpecialI = "\u0041\u0062\u0131\u03c3\u0053\u0073\u0066\u0046\u0069\ud93f\udfff";
+        String different = "\u0041\u0062\u0131\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udffd";
+
+        UTF16.StringComparator compare = new UTF16.StringComparator();
+        compare.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        // test u_strcasecmp()
+        int result = compare.compare(mixed, otherDefault);
+        if (result != 0) {
+            errln("error: default compare(mixed, other) = " + result
+                  + " instead of 0");
+        }
+
+        // test u_strcasecmp() - exclude special i
+        compare.setIgnoreCase(true,
+                  UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+        result = compare.compare(mixed, otherExcludeSpecialI);
+        if (result != 0) {
+            errln("error: exclude_i compare(mixed, other) = " + result
+                  + " instead of 0");
+        }
+
+        // test u_strcasecmp()
+        compare.setIgnoreCase(true,
+                              UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        result = compare.compare(mixed, different);
+        if (result <= 0) {
+            errln("error: default compare(mixed, different) = " + result
+                  + " instead of positive");
+        }
+
+        // test substrings - stop before the sharp s (U+00df)
+        compare.setIgnoreCase(true,
+                              UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        result = compare.compare(mixed.substring(0, 4),
+                                 different.substring(0, 4));
+        if (result != 0) {
+            errln("error: default compare(mixed substring, different substring) = "
+          + result + " instead of 0");
+        }
+        // test substrings - stop in the middle of the sharp s (U+00df)
+        compare.setIgnoreCase(true,
+                              UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        result = compare.compare(mixed.substring(0, 5),
+                                 different.substring(0, 5));
+        if (result <= 0) {
+            errln("error: default compare(mixed substring, different substring) = "
+          + result + " instead of positive");
+        }
+    }
+
+    public void TestHasMoreCodePointsThan()
+    {
+        String str = "\u0061\u0062\ud800\udc00\ud801\udc01\u0063\ud802\u0064"
+        + "\udc03\u0065\u0066\ud804\udc04\ud805\udc05\u0067";
+        int length = str.length();
+        while (length >= 0) {
+            for (int i = 0; i <= length; ++ i) {
+                String s = str.substring(0, i);
+                for (int number = -1; number <= ((length - i) + 2); ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan(s, number);
+                    if (flag != (UTF16.countCodePoint(s) > number)) {
+                        errln("hasMoreCodePointsThan(" + Utility.hex(s)
+                              + ", " + number + ") = " + flag + " is wrong");
+                    }
+                }
+            }
+            -- length;
+        }
+
+        // testing for null bad input
+        for(length = -1; length <= 1; ++ length) {
+            for (int i = 0; i <= length; ++ i) {
+                for (int number = -2; number <= 2; ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan((String)null,
+                                                               number);
+                    if (flag != (UTF16.countCodePoint((String)null) > number)) {
+                        errln("hasMoreCodePointsThan(null, " + number + ") = "
+                  + flag + " is wrong");
+                    }
+                }
+            }
+        }
+
+        length = str.length();
+        while (length >= 0) {
+            for (int i = 0; i <= length; ++ i) {
+                StringBuffer s = new StringBuffer(str.substring(0, i));
+                for (int number = -1; number <= ((length - i) + 2); ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan(s, number);
+                    if (flag != (UTF16.countCodePoint(s) > number)) {
+                        errln("hasMoreCodePointsThan(" + Utility.hex(s)
+                              + ", " + number + ") = " + flag + " is wrong");
+                    }
+                }
+            }
+            -- length;
+        }
+
+        // testing for null bad input
+        for (length = -1; length <= 1; ++ length) {
+            for (int i = 0; i <= length; ++ i) {
+                for (int number = -2; number <= 2; ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan(
+                                   (StringBuffer)null, number);
+                    if (flag
+                        != (UTF16.countCodePoint((StringBuffer)null) > number))
+            {
+                errln("hasMoreCodePointsThan(null, " + number + ") = "
+                  + flag + " is wrong");
+            }
+                }
+            }
+        }
+
+        char strarray[] = str.toCharArray();
+        while (length >= 0) {
+            for (int limit = 0; limit <= length; ++ limit) {
+                for (int start = 0; start <= limit; ++ start) {
+                    for (int number = -1; number <= ((limit - start) + 2);
+                         ++ number) {
+                        boolean flag = UTF16.hasMoreCodePointsThan(strarray,
+                                   start, limit, number);
+                        if (flag != (UTF16.countCodePoint(strarray, start,
+                                                          limit) > number)) {
+                            errln("hasMoreCodePointsThan("
+                                  + Utility.hex(str.substring(start, limit))
+                                  + ", " + start + ", " + limit + ", " + number
+                                  + ") = " + flag + " is wrong");
+                        }
+                    }
+                }
+            }
+            -- length;
+        }
+
+        // testing for null bad input
+        for (length = -1; length <= 1; ++ length) {
+            for (int i = 0; i <= length; ++ i) {
+                for (int number = -2; number <= 2; ++ number) {
+                    boolean flag = UTF16.hasMoreCodePointsThan(
+                                   (StringBuffer)null, number);
+                    if (flag
+                        != (UTF16.countCodePoint((StringBuffer)null) > number))
+            {
+                errln("hasMoreCodePointsThan(null, " + number + ") = "
+                  + flag + " is wrong");
+            }
+                }
+            }
+        }
+
+        // bad input
+        try {
+            UTF16.hasMoreCodePointsThan(strarray, -2, -1, 5);
+            errln("hasMoreCodePointsThan(chararray) with negative indexes has to throw an exception");
+        } catch (Exception e) {
+            logln("PASS: UTF16.hasMoreCodePointsThan failed as expected");
+        }
+        try {
+            UTF16.hasMoreCodePointsThan(strarray, 5, 2, 5);
+            errln("hasMoreCodePointsThan(chararray) with limit less than start index has to throw an exception");
+        } catch (Exception e) {
+            logln("PASS: UTF16.hasMoreCodePointsThan failed as expected");
+        }
+        try {
+            if (UTF16.hasMoreCodePointsThan(strarray, -2, 2, 5)) {
+                errln("hasMoreCodePointsThan(chararray) with negative start indexes can't return true");
+            }
+        } catch (Exception e) {
+        }
+    }
+
+    public void TestNewString() {
+    final int[] codePoints = {
+        UCharacter.toCodePoint(UCharacter.MIN_HIGH_SURROGATE, UCharacter.MAX_LOW_SURROGATE),
+        UCharacter.toCodePoint(UCharacter.MAX_HIGH_SURROGATE, UCharacter.MIN_LOW_SURROGATE),
+        UCharacter.MAX_HIGH_SURROGATE,
+        'A',
+        -1,
+    };
+
+    final String cpString = "" +
+        UCharacter.MIN_HIGH_SURROGATE +
+        UCharacter.MAX_LOW_SURROGATE +
+        UCharacter.MAX_HIGH_SURROGATE +
+        UCharacter.MIN_LOW_SURROGATE +
+        UCharacter.MAX_HIGH_SURROGATE +
+        'A';
+
+    final int[][] tests = {
+        { 0, 1, 0, 2 },
+        { 0, 2, 0, 4 },
+        { 1, 1, 2, 2 },
+        { 1, 2, 2, 3 },
+        { 1, 3, 2, 4 },
+        { 2, 2, 4, 2 },
+        { 2, 3, 0, -1 },
+        { 4, 5, 0, -1 },
+        { 3, -1, 0, -1 }
+    };
+
+     for (int i = 0; i < tests.length; ++i) {
+        int[] t = tests[i];
+        int s = t[0];
+        int c = t[1];
+        int rs = t[2];
+        int rc = t[3];
+
+        Exception e = null;
+        try {
+        String str = UTF16.newString(codePoints, s, c);
+        if (rc == -1 || !str.equals(cpString.substring(rs, rs+rc))) {
+            errln("failed codePoints iter: " + i + " start: " + s + " len: " + c);
+        }
+        continue;
+        }
+        catch (IndexOutOfBoundsException e1) {
+        e = e1;
+        }
+        catch (IllegalArgumentException e2) {
+        e = e2;
+        }
+        if (rc != -1) {
+        errln(e.getMessage());
+        }
+    }
+    }
+
+    public static void main(String[] arg)
+    {
+        try
+        {
+        UTF16Test test = new UTF16Test();
+        test.run(arg);
+        // test.TestCaseCompare();
+        }
+        catch (Exception e)
+        {
+        e.printStackTrace();
+        }
+    }
+
+
+    // private data members ----------------------------------------------
+
+    private final static String INDEXOF_SUPPLEMENTARY_STRING_ =
+        "\ud841\udc02\u0071\udc02\ud841\u0071\ud841\udc02\u0071\u0072" +
+        "\ud841\udc02\u0071\ud841\udc02\u0071\udc02\ud841\u0073";
+    private final static int INDEXOF_SUPPLEMENTARY_CHAR_[] =
+    {0x71, 0xd841, 0xdc02,
+     UTF16Util.getRawSupplementary((char)0xd841,
+                 (char)0xdc02)};
+    private final static int INDEXOF_SUPPLEMENTARY_CHAR_INDEX_[][] =
+    {{2, 5, 8, 12, 15},
+     {4, 17},
+     {3, 16},
+     {0, 6, 10, 13}
+    };
+    private final static String INDEXOF_SUPPLEMENTARY_STR_ = "\udc02\ud841";
+    private final static int INDEXOF_SUPPLEMENTARY_STR_INDEX_[] =
+    {3, 16};
+
+    // private methods ---------------------------------------------------
+}
+
diff --git a/src/com/ibm/icu/dev/test/manifest.test.stub b/src/com/ibm/icu/dev/test/manifest.test.stub
new file mode 100644
index 0000000..e1ad499
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/manifest.test.stub
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Class-Path: icu4j.jar
+Main-Class: com.ibm.icu.dev.test.TestAll
+
+Name: com/ibm/icu/
+Specification-Title: ICU for Java Tests
+Specification-Version: 3.4
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java
+Implementation-Version: 3.4.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2000-2005, International Business Machines Corporation and others.  All Rights Reserved.
+Sealed: false
diff --git a/src/com/ibm/icu/dev/test/normalizer/BasicTest.java b/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
new file mode 100644
index 0000000..08cd982
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
@@ -0,0 +1,2937 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import java.text.StringCharacterIterator;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.USerializedSet;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+
+public class BasicTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new BasicTest().run(args);
+    }
+
+    String[][] canonTests = {
+        // Input                Decomposed              Composed
+        { "cat",                "cat",                  "cat"               },
+        { "\u00e0ardvark",      "a\u0300ardvark",       "\u00e0ardvark",    },
+
+        { "\u1e0a",             "D\u0307",              "\u1e0a"            }, // D-dot_above
+        { "D\u0307",            "D\u0307",              "\u1e0a"            }, // D dot_above
+
+        { "\u1e0c\u0307",       "D\u0323\u0307",        "\u1e0c\u0307"      }, // D-dot_below dot_above
+        { "\u1e0a\u0323",       "D\u0323\u0307",        "\u1e0c\u0307"      }, // D-dot_above dot_below
+        { "D\u0307\u0323",      "D\u0323\u0307",        "\u1e0c\u0307"      }, // D dot_below dot_above
+
+        { "\u1e10\u0307\u0323", "D\u0327\u0323\u0307",  "\u1e10\u0323\u0307"}, // D dot_below cedilla dot_above
+        { "D\u0307\u0328\u0323","D\u0328\u0323\u0307",  "\u1e0c\u0328\u0307"}, // D dot_above ogonek dot_below
+
+        { "\u1E14",             "E\u0304\u0300",        "\u1E14"            }, // E-macron-grave
+        { "\u0112\u0300",       "E\u0304\u0300",        "\u1E14"            }, // E-macron + grave
+        { "\u00c8\u0304",       "E\u0300\u0304",        "\u00c8\u0304"      }, // E-grave + macron
+
+        { "\u212b",             "A\u030a",              "\u00c5"            }, // angstrom_sign
+        { "\u00c5",             "A\u030a",              "\u00c5"            }, // A-ring
+
+        { "\u00c4ffin",         "A\u0308ffin",          "\u00c4ffin"        },
+        { "\u00c4\uFB03n",      "A\u0308\uFB03n",       "\u00c4\uFB03n"     },
+
+        { "\u00fdffin",         "y\u0301ffin",          "\u00fdffin"        }, //updated with 3.0
+        { "\u00fd\uFB03n",      "y\u0301\uFB03n",       "\u00fd\uFB03n"     }, //updated with 3.0
+
+        { "Henry IV",           "Henry IV",             "Henry IV"          },
+        { "Henry \u2163",       "Henry \u2163",         "Henry \u2163"      },
+
+        { "\u30AC",             "\u30AB\u3099",         "\u30AC"            }, // ga (Katakana)
+        { "\u30AB\u3099",       "\u30AB\u3099",         "\u30AC"            }, // ka + ten
+        { "\uFF76\uFF9E",       "\uFF76\uFF9E",         "\uFF76\uFF9E"      }, // hw_ka + hw_ten
+        { "\u30AB\uFF9E",       "\u30AB\uFF9E",         "\u30AB\uFF9E"      }, // ka + hw_ten
+        { "\uFF76\u3099",       "\uFF76\u3099",         "\uFF76\u3099"      }, // hw_ka + ten
+
+        { "A\u0300\u0316", "A\u0316\u0300", "\u00C0\u0316" },
+        {"\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e","\\U0001D157\\U0001D165\\U0001D157\\U0001D165\\U0001D157\\U0001D165", "\\U0001D157\\U0001D165\\U0001D157\\U0001D165\\U0001D157\\U0001D165"},
+    };
+
+    String[][] compatTests = {
+            // Input                Decomposed              Composed
+        { "cat",                 "cat",                     "cat"           },
+        { "\uFB4f",             "\u05D0\u05DC",         "\u05D0\u05DC",     }, // Alef-Lamed vs. Alef, Lamed
+
+        { "\u00C4ffin",         "A\u0308ffin",          "\u00C4ffin"        },
+        { "\u00C4\uFB03n",      "A\u0308ffin",          "\u00C4ffin"        }, // ffi ligature -> f + f + i
+
+        { "\u00fdffin",         "y\u0301ffin",          "\u00fdffin"        },        //updated for 3.0
+        { "\u00fd\uFB03n",      "y\u0301ffin",          "\u00fdffin"        }, // ffi ligature -> f + f + i
+
+        { "Henry IV",           "Henry IV",             "Henry IV"          },
+        { "Henry \u2163",       "Henry IV",             "Henry IV"          },
+
+        { "\u30AC",             "\u30AB\u3099",         "\u30AC"            }, // ga (Katakana)
+        { "\u30AB\u3099",       "\u30AB\u3099",         "\u30AC"            }, // ka + ten
+
+        { "\uFF76\u3099",       "\u30AB\u3099",         "\u30AC"            }, // hw_ka + ten
+
+        /* These two are broken in Unicode 2.1.2 but fixed in 2.1.5 and later*/
+        { "\uFF76\uFF9E",       "\u30AB\u3099",         "\u30AC"            }, // hw_ka + hw_ten
+        { "\u30AB\uFF9E",       "\u30AB\u3099",         "\u30AC"            }, // ka + hw_ten
+
+    };
+
+    // With Canonical decomposition, Hangul syllables should get decomposed
+    // into Jamo, but Jamo characters should not be decomposed into
+    // conjoining Jamo
+    String[][] hangulCanon = {
+        // Input                Decomposed              Composed
+        { "\ud4db",             "\u1111\u1171\u11b6",   "\ud4db"        },
+        { "\u1111\u1171\u11b6", "\u1111\u1171\u11b6",   "\ud4db"        },
+    };
+
+    // With compatibility decomposition turned on,
+    // it should go all the way down to conjoining Jamo characters.
+    // THIS IS NO LONGER TRUE IN UNICODE v2.1.8, SO THIS TEST IS OBSOLETE
+    String[][] hangulCompat = {
+        // Input        Decomposed                          Composed
+        // { "\ud4db",     "\u1111\u116e\u1175\u11af\u11c2",   "\ud478\u1175\u11af\u11c2"  },
+    };
+
+    public void TestHangulCompose()
+                throws Exception{
+        // Make sure that the static composition methods work
+        logln("Canonical composition...");
+        staticTest(Normalizer.NFC, hangulCanon,  2);
+        logln("Compatibility composition...");
+        staticTest(Normalizer.NFKC, hangulCompat, 2);
+        // Now try iterative composition....
+        logln("Iterative composition...");
+        Normalizer norm = new Normalizer("", Normalizer.NFC,0);
+        iterateTest(norm, hangulCanon, 2);
+
+        norm.setMode(Normalizer.NFKD);
+        iterateTest(norm, hangulCompat, 2);
+
+        // And finally, make sure you can do it in reverse too
+        logln("Reverse iteration...");
+        norm.setMode(Normalizer.NFC);
+        backAndForth(norm, hangulCanon);
+     }
+
+    public void TestHangulDecomp() throws Exception{
+        // Make sure that the static decomposition methods work
+        logln("Canonical decomposition...");
+        staticTest(Normalizer.NFD, hangulCanon,  1);
+        logln("Compatibility decomposition...");
+        staticTest(Normalizer.NFKD, hangulCompat, 1);
+
+         // Now the iterative decomposition methods...
+        logln("Iterative decomposition...");
+        Normalizer norm = new Normalizer("", Normalizer.NFD,0);
+        iterateTest(norm, hangulCanon, 1);
+
+        norm.setMode(Normalizer.NFKD);
+        iterateTest(norm, hangulCompat, 1);
+
+        // And finally, make sure you can do it in reverse too
+        logln("Reverse iteration...");
+        norm.setMode(Normalizer.NFD);
+        backAndForth(norm, hangulCanon);
+    }
+    public void TestNone() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NONE,0);
+        iterateTest(norm, canonTests, 0);
+        staticTest(Normalizer.NONE, canonTests, 0);
+    }
+    public void TestDecomp() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFD,0);
+        iterateTest(norm, canonTests, 1);
+        staticTest(Normalizer.NFD, canonTests, 1);
+        decomposeTest(Normalizer.NFD, canonTests, 1);
+    }
+
+    public void TestCompatDecomp() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFKD,0);
+        iterateTest(norm, compatTests, 1);
+        staticTest(Normalizer.NFKD,compatTests, 1);
+        decomposeTest(Normalizer.NFKD,compatTests, 1);
+    }
+
+    public void TestCanonCompose() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFC,0);
+        iterateTest(norm, canonTests, 2);
+        staticTest(Normalizer.NFC, canonTests, 2);
+        composeTest(Normalizer.NFC, canonTests, 2);
+    }
+
+    public void TestCompatCompose() throws Exception{
+        Normalizer norm = new Normalizer("", Normalizer.NFKC,0);
+        iterateTest(norm, compatTests, 2);
+        staticTest(Normalizer.NFKC,compatTests, 2);
+        composeTest(Normalizer.NFKC,compatTests, 2);
+    }
+
+    public void TestExplodingBase() throws Exception{
+        // \u017f - Latin small letter long s
+        // \u0307 - combining dot above
+        // \u1e61 - Latin small letter s with dot above
+        // \u1e9b - Latin small letter long s with dot above
+        String[][] canon = {
+            // Input                Decomposed              Composed
+            { "Tschu\u017f",        "Tschu\u017f",          "Tschu\u017f"    },
+            { "Tschu\u1e9b",        "Tschu\u017f\u0307",    "Tschu\u1e9b"    },
+        };
+        String[][] compat = {
+            // Input                Decomposed              Composed
+            { "\u017f",        "s",              "s"           },
+            { "\u1e9b",        "s\u0307",        "\u1e61"      },
+        };
+
+        staticTest(Normalizer.NFD, canon,  1);
+        staticTest(Normalizer.NFC, canon,  2);
+
+        staticTest(Normalizer.NFKD, compat, 1);
+        staticTest(Normalizer.NFKC, compat, 2);
+
+    }
+
+    /**
+     * The Tibetan vowel sign AA, 0f71, was messed up prior to
+     * Unicode version 2.1.9.
+     * Once 2.1.9 or 3.0 is released, uncomment this test.
+     */
+    public void TestTibetan() throws Exception{
+        String[][] decomp = {
+            { "\u0f77", "\u0f77", "\u0fb2\u0f71\u0f80" }
+        };
+        String[][] compose = {
+            { "\u0fb2\u0f71\u0f80", "\u0fb2\u0f71\u0f80", "\u0fb2\u0f71\u0f80" }
+        };
+
+        staticTest(Normalizer.NFD, decomp, 1);
+        staticTest(Normalizer.NFKD,decomp, 2);
+        staticTest(Normalizer.NFC, compose, 1);
+        staticTest(Normalizer.NFKC,compose, 2);
+    }
+
+    /**
+     * Make sure characters in the CompositionExclusion.txt list do not get
+     * composed to.
+     */
+    public void TestCompositionExclusion()
+                throws Exception{
+        // This list is generated from CompositionExclusion.txt.
+        // Update whenever the normalizer tables are updated.  Note
+        // that we test all characters listed, even those that can be
+        // derived from the Unicode DB and are therefore commented
+        // out.
+        String EXCLUDED =
+            "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+            "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+            "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+            "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+            "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+            "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+            "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB" +
+            "\u1FE3\u1FEB\u1FEE\u1FEF\u1FF9\u1FFB\u1FFD\u2000" +
+            "\u2001\u2126\u212A\u212B\u2329\u232A\uF900\uFA10" +
+            "\uFA12\uFA15\uFA20\uFA22\uFA25\uFA26\uFA2A\uFB1F" +
+            "\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E\uFB2F\uFB30\uFB31" +
+            "\uFB32\uFB33\uFB34\uFB35\uFB36\uFB38\uFB39\uFB3A" +
+            "\uFB3B\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46" +
+            "\uFB47\uFB48\uFB49\uFB4A\uFB4B\uFB4C\uFB4D\uFB4E";
+        for (int i=0; i<EXCLUDED.length(); ++i) {
+            String a = String.valueOf(EXCLUDED.charAt(i));
+            String b = Normalizer.normalize(a, Normalizer.NFKD);
+            String c = Normalizer.normalize(b, Normalizer.NFC);
+            if (c.equals(a)) {
+                errln("FAIL: " + hex(a) + " x DECOMP_COMPAT => " +
+                      hex(b) + " x COMPOSE => " +
+                      hex(c));
+            } else if (isVerbose()) {
+                logln("Ok: " + hex(a) + " x DECOMP_COMPAT => " +
+                      hex(b) + " x COMPOSE => " +
+                      hex(c));
+            }
+        }
+        // The following method works too, but it is somewhat
+        // incestuous.  It uses UInfo, which is the same database that
+        // NormalizerBuilder uses, so if something is wrong with
+        // UInfo, the following test won't show it.  All it will show
+        // is that NormalizerBuilder has been run with whatever the
+        // current UInfo is.
+        //
+        // We comment this out in favor of the test above, which
+        // provides independent verification (but also requires
+        // independent updating).
+//      logln("---");
+//      UInfo uinfo = new UInfo();
+//      for (int i=0; i<=0xFFFF; ++i) {
+//          if (!uinfo.isExcludedComposition((char)i) ||
+//              (!uinfo.hasCanonicalDecomposition((char)i) &&
+//               !uinfo.hasCompatibilityDecomposition((char)i))) continue;
+//          String a = String.valueOf((char)i);
+//          String b = Normalizer.normalize(a,Normalizer.DECOMP_COMPAT,0);
+//          String c = Normalizer.normalize(b,Normalizer.COMPOSE,0);
+//          if (c.equals(a)) {
+//              errln("FAIL: " + hex(a) + " x DECOMP_COMPAT => " +
+//                    hex(b) + " x COMPOSE => " +
+//                    hex(c));
+//          } else if (isVerbose()) {
+//              logln("Ok: " + hex(a) + " x DECOMP_COMPAT => " +
+//                    hex(b) + " x COMPOSE => " +
+//                    hex(c));
+//          }
+//      }
+    }
+
+    /**
+     * Test for a problem that showed up just before ICU 1.6 release
+     * having to do with combining characters with an index of zero.
+     * Such characters do not participate in any canonical
+     * decompositions.  However, having an index of zero means that
+     * they all share one typeMask[] entry, that is, they all have to
+     * map to the same canonical class, which is not the case, in
+     * reality.
+     */
+    public void TestZeroIndex()
+                throws Exception{
+        String[] DATA = {
+            // Expect col1 x COMPOSE_COMPAT => col2
+            // Expect col2 x DECOMP => col3
+            "A\u0316\u0300", "\u00C0\u0316", "A\u0316\u0300",
+            "A\u0300\u0316", "\u00C0\u0316", "A\u0316\u0300",
+            "A\u0327\u0300", "\u00C0\u0327", "A\u0327\u0300",
+            "c\u0321\u0327", "c\u0321\u0327", "c\u0321\u0327",
+            "c\u0327\u0321", "\u00E7\u0321", "c\u0327\u0321",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String a = DATA[i];
+            String b = Normalizer.normalize(a, Normalizer.NFKC);
+            String exp = DATA[i+1];
+            if (b.equals(exp)) {
+                logln("Ok: " + hex(a) + " x COMPOSE_COMPAT => " + hex(b));
+            } else {
+                errln("FAIL: " + hex(a) + " x COMPOSE_COMPAT => " + hex(b) +
+                      ", expect " + hex(exp));
+            }
+            a = Normalizer.normalize(b, Normalizer.NFD);
+            exp = DATA[i+2];
+            if (a.equals(exp)) {
+                logln("Ok: " + hex(b) + " x DECOMP => " + hex(a));
+            } else {
+                errln("FAIL: " + hex(b) + " x DECOMP => " + hex(a) +
+                      ", expect " + hex(exp));
+            }
+        }
+    }
+
+    /**
+     * Test for a problem found by Verisign.  Problem is that
+     * characters at the start of a string are not put in canonical
+     * order correctly by compose() if there is no starter.
+     */
+    public void TestVerisign()
+                throws Exception{
+        String[] inputs = {
+            "\u05b8\u05b9\u05b1\u0591\u05c3\u05b0\u05ac\u059f",
+            "\u0592\u05b7\u05bc\u05a5\u05b0\u05c0\u05c4\u05ad"
+        };
+        String[] outputs = {
+            "\u05b1\u05b8\u05b9\u0591\u05c3\u05b0\u05ac\u059f",
+            "\u05b0\u05b7\u05bc\u05a5\u0592\u05c0\u05ad\u05c4"
+        };
+
+        for (int i = 0; i < inputs.length; ++i) {
+            String input = inputs[i];
+            String output = outputs[i];
+            String result = Normalizer.decompose(input, false);
+            if (!result.equals(output)) {
+                errln("FAIL input: " + hex(input));
+                errln(" decompose: " + hex(result));
+                errln("  expected: " + hex(output));
+            }
+            result = Normalizer.compose(input, false);
+            if (!result.equals(output)) {
+                errln("FAIL input: " + hex(input));
+                errln("   compose: " + hex(result));
+                errln("  expected: " + hex(output));
+            }
+        }
+
+    }
+    public void  TestQuickCheckResultNO()
+                 throws Exception{
+        final char CPNFD[] = {0x00C5, 0x0407, 0x1E00, 0x1F57, 0x220C,
+                                0x30AE, 0xAC00, 0xD7A3, 0xFB36, 0xFB4E};
+        final char CPNFC[] = {0x0340, 0x0F93, 0x1F77, 0x1FBB, 0x1FEB,
+                                0x2000, 0x232A, 0xF900, 0xFA1E, 0xFB4E};
+        final char CPNFKD[] = {0x00A0, 0x02E4, 0x1FDB, 0x24EA, 0x32FE,
+                                0xAC00, 0xFB4E, 0xFA10, 0xFF3F, 0xFA2D};
+        final char CPNFKC[] = {0x00A0, 0x017F, 0x2000, 0x24EA, 0x32FE,
+                                0x33FE, 0xFB4E, 0xFA10, 0xFF3F, 0xFA2D};
+
+
+        final int SIZE = 10;
+
+        int count = 0;
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFD[count]),
+                    Normalizer.NFD,0) != Normalizer.NO)
+            {
+                errln("ERROR in NFD quick check at U+" +
+                       Integer.toHexString(CPNFD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                        Normalizer.NFC,0) !=Normalizer.NO)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                       Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKD[count]),
+                                Normalizer.NFKD,0) != Normalizer.NO)
+            {
+                errln("ERROR in NFKD quick check at U+"+
+                       Integer.toHexString(CPNFKD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC,0) !=Normalizer.NO)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                       Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            // for improving coverage
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC) !=Normalizer.NO)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                       Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+
+
+    public void TestQuickCheckResultYES()
+                throws Exception{
+        final char CPNFD[] = {0x00C6, 0x017F, 0x0F74, 0x1000, 0x1E9A,
+                                0x2261, 0x3075, 0x4000, 0x5000, 0xF000};
+        final char CPNFC[] = {0x0400, 0x0540, 0x0901, 0x1000, 0x1500,
+                                0x1E9A, 0x3000, 0x4000, 0x5000, 0xF000};
+        final char CPNFKD[] = {0x00AB, 0x02A0, 0x1000, 0x1027, 0x2FFB,
+                                0x3FFF, 0x4FFF, 0xA000, 0xF000, 0xFA27};
+        final char CPNFKC[] = {0x00B0, 0x0100, 0x0200, 0x0A02, 0x1000,
+                                0x2010, 0x3030, 0x4000, 0xA000, 0xFA0E};
+
+        final int SIZE = 10;
+        int count = 0;
+
+        char cp = 0;
+        while (cp < 0xA0)
+        {
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFD,0)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check at U+"+
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFC,0)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFKD,0)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check at U+" +
+                                                      Integer.toHexString(cp));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFKC,0)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                                       Integer.toHexString(cp));
+                return;
+            }
+            // improve the coverage
+            if (Normalizer.quickCheck(String.valueOf(cp), Normalizer.NFKC)
+                                             != Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                                       Integer.toHexString(cp));
+                return;
+            }
+            cp++;
+        }
+
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFD[count]),
+                                         Normalizer.NFD,0)!=Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check at U+"+
+                                             Integer.toHexString(CPNFD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                                         Normalizer.NFC,0)!=Normalizer.YES)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                             Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKD[count]),
+                                         Normalizer.NFKD,0)!=Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check at U+"+
+                                    Integer.toHexString(CPNFKD[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC,0)!=Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                        Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            // improve the coverage
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                         Normalizer.NFKC)!=Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                        Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+    public void TestBengali() throws Exception{
+        String input = "\u09bc\u09be\u09cd\u09be";
+        String output=Normalizer.normalize(input,Normalizer.NFC);
+        if(!input.equals(output)){
+             errln("ERROR in NFC of string");
+        }
+    }
+    public void TestQuickCheckResultMAYBE()
+                throws Exception{
+
+        final char[] CPNFC = {0x0306, 0x0654, 0x0BBE, 0x102E, 0x1161,
+                                0x116A, 0x1173, 0x1175, 0x3099, 0x309A};
+        final char[] CPNFKC = {0x0300, 0x0654, 0x0655, 0x09D7, 0x0B3E,
+                                0x0DCF, 0xDDF, 0x102E, 0x11A8, 0x3099};
+
+
+        final int SIZE = 10;
+
+        int count = 0;
+
+        /* NFD and NFKD does not have any MAYBE codepoints */
+        for (; count < SIZE; count ++)
+        {
+            if (Normalizer.quickCheck(String.valueOf(CPNFC[count]),
+                                        Normalizer.NFC,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                            Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(String.valueOf(CPNFKC[count]),
+                                       Normalizer.NFKC,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFC[count]},
+                                        Normalizer.NFC,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFC quick check at U+"+
+                                            Integer.toHexString(CPNFC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFKC[count]},
+                                       Normalizer.NFKC,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+            if (Normalizer.quickCheck(new char[]{CPNFKC[count]},
+                                       Normalizer.NONE,0)!=Normalizer.MAYBE)
+            {
+                errln("ERROR in NFKC quick check at U+"+
+                                            Integer.toHexString(CPNFKC[count]));
+                return;
+            }
+        }
+    }
+
+    public void TestQuickCheckStringResult()
+                throws Exception{
+        int count;
+        String d;
+        String c;
+
+        for (count = 0; count < canonTests.length; count ++)
+        {
+            d = canonTests[count][1];
+            c = canonTests[count][2];
+            if (Normalizer.quickCheck(d,Normalizer.NFD,0)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFD quick check for string at count " + count);
+                return;
+            }
+
+            if (Normalizer.quickCheck(c, Normalizer.NFC,0)
+                                            == Normalizer.NO)
+            {
+                errln("ERROR in NFC quick check for string at count " + count);
+                return;
+            }
+        }
+
+        for (count = 0; count < compatTests.length; count ++)
+        {
+            d = compatTests[count][1];
+            c = compatTests[count][2];
+            if (Normalizer.quickCheck(d, Normalizer.NFKD,0)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFKD quick check for string at count " + count);
+                return;
+            }
+
+            if (Normalizer.quickCheck(c,  Normalizer.NFKC,0)
+                                            != Normalizer.YES)
+            {
+                errln("ERROR in NFKC quick check for string at count " + count);
+                return;
+            }
+        }
+    }
+
+    static final int qcToInt(Normalizer.QuickCheckResult qc) {
+        if(qc==Normalizer.NO) {
+            return 0;
+        } else if(qc==Normalizer.YES) {
+            return 1;
+        } else /* Normalizer.MAYBE */ {
+            return 2;
+        }
+    }
+
+    public void TestQuickCheckPerCP() {
+        int c, lead, trail;
+        String s, nfd;
+        int lccc1, lccc2, tccc1, tccc2;
+        int qc1, qc2;
+
+        if(
+            UCharacter.getIntPropertyMaxValue(UProperty.NFD_QUICK_CHECK)!=1 || // YES
+            UCharacter.getIntPropertyMaxValue(UProperty.NFKD_QUICK_CHECK)!=1 ||
+            UCharacter.getIntPropertyMaxValue(UProperty.NFC_QUICK_CHECK)!=2 || // MAYBE
+            UCharacter.getIntPropertyMaxValue(UProperty.NFKC_QUICK_CHECK)!=2 ||
+            UCharacter.getIntPropertyMaxValue(UProperty.LEAD_CANONICAL_COMBINING_CLASS)!=UCharacter.getIntPropertyMaxValue(UProperty.CANONICAL_COMBINING_CLASS) ||
+            UCharacter.getIntPropertyMaxValue(UProperty.TRAIL_CANONICAL_COMBINING_CLASS)!=UCharacter.getIntPropertyMaxValue(UProperty.CANONICAL_COMBINING_CLASS)
+        ) {
+            errln("wrong result from one of the u_getIntPropertyMaxValue(UCHAR_NF*_QUICK_CHECK) or UCHAR_*_CANONICAL_COMBINING_CLASS");
+        }
+
+        /*
+         * compare the quick check property values for some code points
+         * to the quick check results for checking same-code point strings
+         */
+        c=0;
+        while(c<0x110000) {
+            s=UTF16.valueOf(c);
+
+            qc1=UCharacter.getIntPropertyValue(c, UProperty.NFC_QUICK_CHECK);
+            qc2=qcToInt(Normalizer.quickCheck(s, Normalizer.NFC));
+            if(qc1!=qc2) {
+                errln("getIntPropertyValue(NFC)="+qc1+" != "+qc2+"=quickCheck(NFC) for U+"+Integer.toHexString(c));
+            }
+
+            qc1=UCharacter.getIntPropertyValue(c, UProperty.NFD_QUICK_CHECK);
+            qc2=qcToInt(Normalizer.quickCheck(s, Normalizer.NFD));
+            if(qc1!=qc2) {
+                errln("getIntPropertyValue(NFD)="+qc1+" != "+qc2+"=quickCheck(NFD) for U+"+Integer.toHexString(c));
+            }
+
+            qc1=UCharacter.getIntPropertyValue(c, UProperty.NFKC_QUICK_CHECK);
+            qc2=qcToInt(Normalizer.quickCheck(s, Normalizer.NFKC));
+            if(qc1!=qc2) {
+                errln("getIntPropertyValue(NFKC)="+qc1+" != "+qc2+"=quickCheck(NFKC) for U+"+Integer.toHexString(c));
+            }
+
+            qc1=UCharacter.getIntPropertyValue(c, UProperty.NFKD_QUICK_CHECK);
+            qc2=qcToInt(Normalizer.quickCheck(s, Normalizer.NFKD));
+            if(qc1!=qc2) {
+                errln("getIntPropertyValue(NFKD)="+qc1+" != "+qc2+"=quickCheck(NFKD) for U+"+Integer.toHexString(c));
+            }
+
+            nfd=Normalizer.normalize(s, Normalizer.NFD);
+            lead=UTF16.charAt(nfd, 0);
+            trail=UTF16.charAt(nfd, nfd.length()-1);
+
+            lccc1=UCharacter.getIntPropertyValue(c, UProperty.LEAD_CANONICAL_COMBINING_CLASS);
+            lccc2=UCharacter.getCombiningClass(lead);
+            tccc1=UCharacter.getIntPropertyValue(c, UProperty.TRAIL_CANONICAL_COMBINING_CLASS);
+            tccc2=UCharacter.getCombiningClass(trail);
+
+            if(lccc1!=lccc2) {
+                errln("getIntPropertyValue(lccc)="+lccc1+" != "+lccc2+"=getCombiningClass(lead) for U+"+Integer.toHexString(c));
+            }
+            if(tccc1!=tccc2) {
+                errln("getIntPropertyValue(tccc)="+tccc1+" != "+tccc2+"=getCombiningClass(trail) for U+"+Integer.toHexString(c));
+            }
+
+            /* skip some code points */
+            c=(20*c)/19+1;
+        }
+    }
+
+    //------------------------------------------------------------------------
+    // Internal utilities
+    //
+       //------------------------------------------------------------------------
+    // Internal utilities
+    //
+
+/*    private void backAndForth(Normalizer iter, String input)
+    {
+        iter.setText(input);
+
+        // Run through the iterator forwards and stick it into a StringBuffer
+        StringBuffer forward =  new StringBuffer();
+        for (int ch = iter.first(); ch != Normalizer.DONE; ch = iter.next()) {
+            forward.append(ch);
+        }
+
+        // Now do it backwards
+        StringBuffer reverse = new StringBuffer();
+        for (int ch = iter.last(); ch != Normalizer.DONE; ch = iter.previous()) {
+            reverse.insert(0, ch);
+        }
+
+        if (!forward.toString().equals(reverse.toString())) {
+            errln("FAIL: Forward/reverse mismatch for input " + hex(input)
+                  + ", forward: " + hex(forward) + ", backward: "+hex(reverse));
+        } else if (isVerbose()) {
+            logln("Ok: Forward/reverse for input " + hex(input)
+                  + ", forward: " + hex(forward) + ", backward: "+hex(reverse));
+        }
+    }*/
+
+    private void backAndForth(Normalizer iter, String[][] tests)
+    {
+        for (int i = 0; i < tests.length; i++)
+        {
+            iter.setText(tests[i][0]);
+
+            // Run through the iterator forwards and stick it into a
+            // StringBuffer
+            StringBuffer forward =  new StringBuffer();
+            for (int ch = iter.first(); ch != Normalizer.DONE; ch = iter.next()) {
+                forward.append(ch);
+            }
+
+            // Now do it backwards
+            StringBuffer reverse = new StringBuffer();
+            for (int ch = iter.last(); ch != Normalizer.DONE; ch = iter.previous()) {
+                reverse.insert(0, ch);
+            }
+
+            if (!forward.toString().equals(reverse.toString())) {
+                errln("FAIL: Forward/reverse mismatch for input "
+                    + hex(tests[i][0]) + ", forward: " + hex(forward)
+                    + ", backward: " + hex(reverse));
+            } else if (isVerbose()) {
+                logln("Ok: Forward/reverse for input " + hex(tests[i][0])
+                      + ", forward: " + hex(forward) + ", backward: "
+                      + hex(reverse));
+            }
+        }
+    }
+
+    private void staticTest (Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.normalize(input, mode);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect =Utility.unescape( tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.normalize(input,output, mode,0);
+                    if(reqLength<=output.length    ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+    }
+    private void decomposeTest(Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.decompose(input, mode==Normalizer.NFKD);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.decompose(input,output, mode==Normalizer.NFKD,0);
+                    if(reqLength<=output.length ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+        output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+           char[] input = Utility.unescape(tests[i][0]).toCharArray();
+           String expect = Utility.unescape(tests[i][outCol]);
+    
+           logln("Normalizing '" + new String(input) + "' (" +
+                       hex(new String(input)) + ")" );
+           int reqLength=0;
+           while(true){
+               try{
+                   reqLength=Normalizer.decompose(input,0,input.length,output,0,output.length, mode==Normalizer.NFKD,0);
+                   if(reqLength<=output.length ){
+                       break;
+                   }
+               }catch(IndexOutOfBoundsException e){
+                   output= new char[Integer.parseInt(e.getMessage())];
+                   continue;
+               }
+           }
+           if (!expect.equals(new String(output,0,reqLength))) {
+               errln("FAIL: case " + i
+                   + " expected '" + expect + "' (" + hex(expect) + ")"
+                   + " but got '" + new String(output)
+                   + "' ("  + hex(new String(output)) + ")" );
+           }
+           char[] output2 = new char[reqLength * 2];
+           System.arraycopy(output, 0, output2, 0, reqLength);
+           int retLength = Normalizer.decompose(input,0,input.length, output2, reqLength, output2.length, mode==Normalizer.NFKC,0);
+           if(retLength != reqLength){
+               logln("FAIL: Normalizer.compose did not return the expected length. Expected: " +reqLength + " Got: " + retLength);
+           }
+        }
+    }
+
+    private void composeTest(Normalizer.Mode mode,
+                             String[][] tests, int outCol) throws Exception{
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.compose(input, mode==Normalizer.NFKC);
+
+            if (!output.equals(expect)) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+        char[] output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.compose(input,output, mode==Normalizer.NFKC,0);
+                    if(reqLength<=output.length ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+        }
+        output = new char[1];
+        for (int i = 0; i < tests.length; i++)
+        {
+            char[] input = Utility.unescape(tests[i][0]).toCharArray();
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + new String(input) + "' (" +
+                        hex(new String(input)) + ")" );
+            int reqLength=0;
+            while(true){
+                try{
+                    reqLength=Normalizer.compose(input,0,input.length, output, 0, output.length, mode==Normalizer.NFKC,0);
+                    if(reqLength<=output.length ){
+                        break;
+                    }
+                }catch(IndexOutOfBoundsException e){
+                    output= new char[Integer.parseInt(e.getMessage())];
+                    continue;
+                }
+            }
+            if (!expect.equals(new String(output,0,reqLength))) {
+                errln("FAIL: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + new String(output)
+                    + "' ("  + hex(new String(output)) + ")" );
+            }
+            
+            char[] output2 = new char[reqLength * 2];
+            System.arraycopy(output, 0, output2, 0, reqLength);
+            int retLength = Normalizer.compose(input,0,input.length, output2, reqLength, output2.length, mode==Normalizer.NFKC,0);
+            if(retLength != reqLength){
+                logln("FAIL: Normalizer.compose did not return the expected length. Expected: " +reqLength + " Got: " + retLength);
+            }
+        }
+    }
+    private void iterateTest(Normalizer iter, String[][] tests, int outCol){
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = Utility.unescape(tests[i][0]);
+            String expect = Utility.unescape(tests[i][outCol]);
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            iter.setText(input);
+            assertEqual(expect, iter, "case " + i + " ");
+        }
+    }
+
+    private void assertEqual(String expected, Normalizer iter, String msg)
+    {
+        int index = 0;
+        int ch;
+        UCharacterIterator cIter =  UCharacterIterator.getInstance(expected);
+        
+        while ((ch=iter.next())!= Normalizer.DONE){
+            if (index >= expected.length()) {
+                errln("FAIL: " + msg + "Unexpected character '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " at index " + index);
+                break;
+            }
+            int want = UTF16.charAt(expected,index);
+            if (ch != want) {
+                errln("FAIL: " + msg + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want)+ ")"
+                        + " at index " + index);
+            }
+            index+=  UTF16.getCharCount(ch);
+        }
+        if (index < expected.length()) {
+            errln("FAIL: " + msg + "Only got " + index + " chars, expected "
+            + expected.length());
+        }
+        
+        cIter.setToLimit();
+        while((ch=iter.previous())!=Normalizer.DONE){
+            int want = cIter.previousCodePoint();
+            if (ch != want ) {
+                errln("FAIL: " + msg + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want) + ")"
+                        + " at index " + index);
+            }
+        }
+    }
+    //--------------------------------------------------------------------------
+
+    // NOTE: These tests are used for quick debugging so are not ported
+    // to ICU4C tsnorm.cpp in intltest
+    //
+
+    public void TestDebugStatic(){
+        String in = Utility.unescape("\\U0001D157\\U0001D165");
+        if(!Normalizer.isNormalized(in,Normalizer.NFC,0)){
+            errln("isNormalized failed");
+        }
+
+        String input  =  "\uAD8B\uAD8B\uAD8B\uAD8B"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+            "aaaaaaaaaaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+            "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+            "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+            "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+            "\uAD8B\uAD8B\uAD8B\uAD8B"+
+            "d\u031B\u0307\u0323";
+        String expect = "\u1100\u116F\u11AA\u1100\u116F\u11AA\u1100\u116F"+
+                        "\u11AA\u1100\u116F\u11AA\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65\uD834\uDD57\uD834\uDD65"+
+                        "\uD834\uDD57\uD834\uDD65aaaaaaaaaaaaaaaaaazzzzzz"+
+                        "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+                        "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+                        "bbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccc"+
+                        "cccccccccccccccccccccccccccccccccccccccccccccccc"+
+                        "ddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+                        "dddddddddddddddddddddddd"+
+                        "\u1100\u116F\u11AA\u1100\u116F\u11AA\u1100\u116F"+
+                        "\u11AA\u1100\u116F\u11AA\u0064\u031B\u0323\u0307";
+            String output = Normalizer.normalize(Utility.unescape(input),
+                            Normalizer.NFD);
+            if(!expect.equals(output)){
+                errln("FAIL expected: "+hex(expect) + " got: "+hex(output));
+            }
+
+
+
+    }
+    public void TestDebugIter(){
+        String src = Utility.unescape("\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e");
+        String expected = Utility.unescape("\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e");
+        Normalizer iter = new Normalizer(new StringCharacterIterator(Utility.unescape(src)),
+                                                Normalizer.NONE,0);
+        int index = 0;
+        int ch;
+        UCharacterIterator cIter =  UCharacterIterator.getInstance(expected);
+        
+        while ((ch=iter.next())!= Normalizer.DONE){
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " at index " + index);
+                break;
+            }
+            int want = UTF16.charAt(expected,index);
+            if (ch != want) {
+                errln("FAIL: " +  "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want)+ ")"
+                        + " at index " + index);
+            }
+            index+=  UTF16.getCharCount(ch);
+        }
+        if (index < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+            + expected.length());
+        }
+        
+        cIter.setToLimit();
+        while((ch=iter.previous())!=Normalizer.DONE){
+            int want = cIter.previousCodePoint();
+            if (ch != want ) {
+                errln("FAIL: " + "got '" + (char)ch
+                        + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want) + ")"
+                        + " at index " + index);
+            }
+        }
+    }
+    public void TestDebugIterOld(){
+        String input = "\\U0001D15E";
+        String expected = "\uD834\uDD57\uD834\uDD65";
+        String expectedReverse = "\uD834\uDD65\uD834\uDD57";
+        int index = 0;
+        int ch;
+        Normalizer iter = new Normalizer(new StringCharacterIterator(Utility.unescape(input)),
+                                                Normalizer.NFKC,0);
+        StringBuffer got = new StringBuffer();
+        for (ch = iter.first();ch!=Normalizer.DONE;ch=iter.next())
+        {
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch +
+                       "' (" + hex(ch) + ")" + " at index " + index);
+                break;
+            }
+            got.append(UCharacter.toString(ch));
+            index++;
+        }
+        if (!expected.equals(got.toString())) {
+                errln("FAIL: " +  "got '" +got+ "' (" + hex(got) + ")"
+                        + " but expected '" + expected + "' ("
+                        + hex(expected) + ")");
+        }
+        if (got.length() < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+                           + expected.length());
+        }
+
+        logln("Reverse Iteration\n");
+        iter.setIndexOnly(iter.endIndex());
+        got.setLength(0);
+        for(ch=iter.previous();ch!=Normalizer.DONE;ch=iter.previous()){
+            if (index >= expected.length()) {
+                errln("FAIL: " +  "Unexpected character '" + (char)ch
+                               + "' (" + hex(ch) + ")" + " at index " + index);
+                break;
+            }
+            got.append(UCharacter.toString(ch));
+        }
+        if (!expectedReverse.equals(got.toString())) {
+                errln("FAIL: " +  "got '" +got+ "' (" + hex(got) + ")"
+                               + " but expected '" + expected
+                               + "' (" + hex(expected) + ")");
+        }
+        if (got.length() < expected.length()) {
+            errln("FAIL: " +  "Only got " + index + " chars, expected "
+                      + expected.length());
+        }
+
+    }
+    //--------------------------------------------------------------------------
+    // helper class for TestPreviousNext()
+    // simple UTF-32 character iterator
+    class UCharIterator {
+
+       public UCharIterator(int[] src, int len, int index){
+
+            s=src;
+            length=len;
+            i=index;
+       }
+
+        public int current() {
+            if(i<length) {
+                return s[i];
+            } else {
+                return -1;
+            }
+        }
+
+        public int next() {
+            if(i<length) {
+                return s[i++];
+            } else {
+                return -1;
+            }
+        }
+
+        public int previous() {
+            if(i>0) {
+                return s[--i];
+            } else {
+                return -1;
+            }
+        }
+
+        public int getIndex() {
+            return i;
+        }
+
+        private int[] s;
+        private int length, i;
+    }
+    public void TestPreviousNext() {
+        // src and expect strings
+        char src[]={
+            UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+            UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+            0xc4,
+            0x1ed0
+        };
+        int expect[]={
+            0x831d,
+            0x1d158, 0x1d165,
+            0x41, 0x308,
+            0x4f, 0x302, 0x301
+        };
+
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,
+            2, 2,
+            4, 4,
+            5, 5, 5,
+            6 // behind last character
+        };
+
+        // initial indexes into the src and expect strings
+
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=3;
+
+
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+
+        // iterators
+        Normalizer iter = new Normalizer(new String(src),
+                                                Normalizer.NFD,0);
+        UCharIterator iter32 = new UCharIterator(expect, expect.length,
+                                                     EXPECT_MIDDLE);
+
+        int c1, c2;
+        char m;
+
+        // initially set the indexes into the middle of the strings
+        iter.setIndexOnly(SRC_MIDDLE);
+
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previous();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.current();
+                c2=iter32.current();
+            } else /* m=='+' */ {
+                c1=iter.next();
+                c2=iter32.next();
+            }
+
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+
+            // compare indexes
+            if(iter.getIndex()!=expectIndex[iter32.getIndex()]) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+    }
+    // Only in ICU4j
+    public void TestPreviousNextJCI() {
+        // src and expect strings
+        char src[]={
+            UTF16.getLeadSurrogate(0x2f999), UTF16.getTrailSurrogate(0x2f999),
+            UTF16.getLeadSurrogate(0x1d15f), UTF16.getTrailSurrogate(0x1d15f),
+            0xc4,
+            0x1ed0
+        };
+        int expect[]={
+            0x831d,
+            0x1d158, 0x1d165,
+            0x41, 0x308,
+            0x4f, 0x302, 0x301
+        };
+
+        // expected src indexes corresponding to expect indexes
+        int expectIndex[]={
+            0,
+            2, 2,
+            4, 4,
+            5, 5, 5,
+            6 // behind last character
+        };
+
+        // initial indexes into the src and expect strings
+
+        final int SRC_MIDDLE=4;
+        final int EXPECT_MIDDLE=3;
+
+
+        // movement vector
+        // - for previous(), 0 for current(), + for next()
+        // not const so that we can terminate it below for the error message
+        String moves="0+0+0--0-0-+++0--+++++++0--------";
+
+        // iterators
+        StringCharacterIterator text = new StringCharacterIterator(new String(src));
+        Normalizer iter = new Normalizer(text,Normalizer.NFD,0);
+        UCharIterator iter32 = new UCharIterator(expect, expect.length,
+                                                     EXPECT_MIDDLE);
+
+        int c1, c2;
+        char m;
+
+        // initially set the indexes into the middle of the strings
+        iter.setIndexOnly(SRC_MIDDLE);
+
+        // move around and compare the iteration code points with
+        // the expected ones
+        int movesIndex =0;
+        while(movesIndex<moves.length()) {
+            m=moves.charAt(movesIndex++);
+            if(m=='-') {
+                c1=iter.previous();
+                c2=iter32.previous();
+            } else if(m=='0') {
+                c1=iter.current();
+                c2=iter32.current();
+            } else /* m=='+' */ {
+                c1=iter.next();
+                c2=iter32.next();
+            }
+
+            // compare results
+            if(c1!=c2) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: mismatch in Normalizer iteration at "+history+": "
+                      +"got c1= " + hex(c1) +" != expected c2= "+ hex(c2));
+                break;
+            }
+
+            // compare indexes
+            if(iter.getIndex()!=expectIndex[iter32.getIndex()]) {
+                // copy the moves until the current (m) move, and terminate
+                String history = moves.substring(0,movesIndex);
+                errln("error: index mismatch in Normalizer iteration at "
+                      +history+ " : "+ "Normalizer index " +iter.getIndex()
+                      +" expected "+ expectIndex[iter32.getIndex()]);
+                break;
+            }
+        }
+    }
+
+    // test APIs that are not otherwise used - improve test coverage
+    public void TestNormalizerAPI() throws Exception {
+        try{
+            // instantiate a Normalizer from a CharacterIterator
+            String s=Utility.unescape("a\u0308\uac00\\U0002f800");
+            // make s a bit longer and more interesting
+            UCharacterIterator iter = UCharacterIterator.getInstance(s+s);
+            Normalizer norm = new Normalizer(iter, Normalizer.NFC,0);
+            if(norm.next()!=0xe4) {
+                errln("error in Normalizer(CharacterIterator).next()");
+            }   
+    
+            // test clone(), ==, and hashCode()
+            Normalizer clone=(Normalizer)norm.clone();
+            if(clone.equals(norm)) {
+                errln("error in Normalizer(Normalizer(CharacterIterator)).clone()!=norm");
+            }
+    
+            
+            if(clone.getLength()!= norm.getLength()){
+               errln("error in Normalizer.getBeginIndex()");
+            } 
+            // clone must have the same hashCode()
+            //if(clone.hashCode()!=norm.hashCode()) {
+            //    errln("error in Normalizer(Normalizer(CharacterIterator)).clone().hashCode()!=copy.hashCode()");
+            //}
+            if(clone.next()!=0xac00) {
+                errln("error in Normalizer(Normalizer(CharacterIterator)).next()");
+            }
+            int ch = clone.next();
+            if(ch!=0x4e3d) {
+                errln("error in Normalizer(Normalizer(CharacterIterator)).clone().next()");
+            }
+            // position changed, must change hashCode()
+            if(clone.hashCode()==norm.hashCode()) {
+                errln("error in Normalizer(Normalizer(CharacterIterator)).clone().next().hashCode()==copy.hashCode()");
+            }
+    
+            // test compose() and decompose()
+            StringBuffer tel;
+            String nfkc, nfkd;
+            tel=new StringBuffer("\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121\u2121");
+            tel.insert(1,(char)0x0301);
+    
+            nfkc=Normalizer.compose(tel.toString(), true);
+            nfkd=Normalizer.decompose(tel.toString(), true);
+            if(
+                !nfkc.equals(Utility.unescape("TE\u0139TELTELTELTELTELTELTELTELTEL"))||
+                !nfkd.equals(Utility.unescape("TEL\u0301TELTELTELTELTELTELTELTELTEL"))
+            ) {
+                errln("error in Normalizer::(de)compose(): wrong result(s)");
+            }
+    
+            // test setIndex()
+//            ch=norm.setIndex(3);
+//            if(ch!=0x4e3d) {
+//                errln("error in Normalizer(CharacterIterator).setIndex(3)");
+//            }
+    
+            // test setText(CharacterIterator) and getText()
+            String out, out2;
+            clone.setText(iter);
+    
+            out = clone.getText();
+            out2 = iter.getText();
+            if( !out.equals(out2) ||
+                clone.startIndex()!=0||
+                clone.endIndex()!=iter.getLength()
+            ) {
+                errln("error in Normalizer::setText() or Normalizer::getText()");
+            }
+     
+            char[] fillIn1 = new char[clone.getLength()];
+            char[] fillIn2 = new char[iter.getLength()];
+            int len = clone.getText(fillIn1);
+            iter.getText(fillIn2,0);
+            if(!Utility.arrayRegionMatches(fillIn1,0,fillIn2,0,len)){
+                errln("error in Normalizer.getText(). Normalizer: "+
+                                Utility.hex(new String(fillIn1))+ 
+                                " Iter: " + Utility.hex(new String(fillIn2)));
+            }
+            
+            clone.setText(fillIn1);
+            len = clone.getText(fillIn2);
+            if(!Utility.arrayRegionMatches(fillIn1,0,fillIn2,0,len)){
+                errln("error in Normalizer.setText() or Normalizer.getText()"+
+                                Utility.hex(new String(fillIn1))+ 
+                                " Iter: " + Utility.hex(new String(fillIn2)));
+            }
+    
+            // test setText(UChar *), getUMode() and setMode()
+            clone.setText(s);
+            clone.setIndexOnly(1);
+            clone.setMode(Normalizer.NFD);
+            if(clone.getMode()!=Normalizer.NFD) {
+                errln("error in Normalizer::setMode() or Normalizer::getMode()");
+            }
+            if(clone.next()!=0x308 || clone.next()!=0x1100) {
+                errln("error in Normalizer::setText() or Normalizer::setMode()");
+            }
+    
+            // test last()/previous() with an internal buffer overflow
+            StringBuffer buf = new StringBuffer("aaaaaaaaaa");
+            buf.setCharAt(10-1,'\u0308');
+            clone.setText(buf);
+            if(clone.last()!=0x308) {
+                errln("error in Normalizer(10*U+0308).last()");
+            }
+    
+            // test UNORM_NONE
+            norm.setMode(Normalizer.NONE);
+            if(norm.first()!=0x61 || norm.next()!=0x308 || norm.last()!=0x2f800) {
+                errln("error in Normalizer(UNORM_NONE).first()/next()/last()");
+            }
+            out=Normalizer.normalize(s, Normalizer.NONE);
+            if(!out.equals(s)) {
+                errln("error in Normalizer::normalize(UNORM_NONE)");
+            }
+            ch = 0x1D15E;
+            String exp = "\\U0001D157\\U0001D165";
+            String ns = Normalizer.normalize(ch,Normalizer.NFC);
+            if(!ns.equals(Utility.unescape(exp))){
+                errln("error in Normalizer.normalize(int,Mode)");
+            }
+            ns = Normalizer.normalize(ch,Normalizer.NFC,0);
+            if(!ns.equals(Utility.unescape(exp))){
+                errln("error in Normalizer.normalize(int,Mode,int)");
+            }
+            
+            
+        }catch(Exception e){
+            throw e;
+        }
+    }
+
+    public void TestConcatenate() {
+
+        Object[][]cases=new Object[][]{
+            /* mode, left, right, result */
+            {
+                Normalizer.NFC,
+                "re",
+                "\u0301sum\u00e9",
+                "r\u00e9sum\u00e9"
+            },
+            {
+                Normalizer.NFC,
+                "a\u1100",
+                "\u1161bcdefghijk",
+                "a\uac00bcdefghijk"
+            },
+            /* ### TODO: add more interesting cases */
+            {
+                Normalizer.NFD,
+                "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+                "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+                "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+                "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+                "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+                "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+                "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB",
+
+                "\u1FE3\u1FEB\u1FEE\u1FEF\u1FF9\u1FFB\u1FFD\u2000" +
+                "\u2001\u2126\u212A\u212B\u2329\u232A\uF900\uFA10" +
+                "\uFA12\uFA15\uFA20\uFA22\uFA25\uFA26\uFA2A\uFB1F" +
+                "\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E\uFB2F\uFB30\uFB31" +
+                "\uFB32\uFB33\uFB34\uFB35\uFB36\uFB38\uFB39\uFB3A" +
+                "\uFB3B\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46" +
+                "\uFB47\uFB48\uFB49\uFB4A\uFB4B\uFB4C\uFB4D\uFB4E",
+
+                "\u0340\u0341\u0343\u0344\u0374\u037E\u0387\u0958" +
+                "\u0959\u095A\u095B\u095C\u095D\u095E\u095F\u09DC" +
+                "\u09DD\u09DF\u0A33\u0A36\u0A59\u0A5A\u0A5B\u0A5E" +
+                "\u0B5C\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69" +
+                "\u0F73\u0F75\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2" +
+                "\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79" +
+                "\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u0399" +
+                "\u0301\u03C5\u0308\u0301\u1FEB\u1FEE\u1FEF\u1FF9" +
+                "\u1FFB\u1FFD\u2000\u2001\u2126\u212A\u212B\u2329" +
+                "\u232A\uF900\uFA10\uFA12\uFA15\uFA20\uFA22\uFA25" +
+                "\uFA26\uFA2A\uFB1F\uFB2A\uFB2B\uFB2C\uFB2D\uFB2E" +
+                "\uFB2F\uFB30\uFB31\uFB32\uFB33\uFB34\uFB35\uFB36" +
+                "\uFB38\uFB39\uFB3A\uFB3B\uFB3C\uFB3E\uFB40\uFB41" +
+                "\uFB43\uFB44\uFB46\uFB47\uFB48\uFB49\uFB4A\uFB4B" +
+                "\uFB4C\uFB4D\uFB4E"
+            }
+        };
+
+        String left, right, expect, result;
+        Normalizer.Mode mode;
+        int i;
+
+        /* test concatenation */
+        for(i=0; i<cases.length; ++i) {
+            mode = (Normalizer.Mode)cases[i][0];
+
+            left=(String)cases[i][1];
+            right=(String)cases[i][2];
+            expect=(String)cases[i][3];
+            {
+                result=Normalizer.concatenate(left, right, mode,0);
+                if( result.equals(expect)) {
+                    errln("error in Normalizer.concatenate(), cases[] failed"
+                          +", result==expect: expected: "
+                          + hex(expect)+" =========> got: " + hex(result));
+                }
+            }
+            {
+                result=Normalizer.concatenate(left.toCharArray(), right.toCharArray(), mode,0);
+                if( result.equals(expect)) {
+                    errln("error in Normalizer.concatenate(), cases[] failed"
+                          +", result==expect: expected: "
+                          + hex(expect)+" =========> got: " + hex(result));
+                }
+            }
+        }
+    }
+    private final int RAND_MAX = 0x7fff;
+
+    public void TestCheckFCD()
+    {
+      char[] FAST = {0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+                     0x0008, 0x0009, 0x000A};
+
+      char[] FALSE = {0x0001, 0x0002, 0x02EA, 0x03EB, 0x0300, 0x0301,
+                      0x02B9, 0x0314, 0x0315, 0x0316};
+
+      char[] TRUE = {0x0030, 0x0040, 0x0440, 0x056D, 0x064F, 0x06E7,
+                     0x0050, 0x0730, 0x09EE, 0x1E10};
+
+      char[][] datastr= { {0x0061, 0x030A, 0x1E05, 0x0302, 0},
+                          {0x0061, 0x030A, 0x00E2, 0x0323, 0},
+                          {0x0061, 0x0323, 0x00E2, 0x0323, 0},
+                          {0x0061, 0x0323, 0x1E05, 0x0302, 0}
+                        };
+      Normalizer.QuickCheckResult result[] = {Normalizer.YES, Normalizer.NO, Normalizer.NO, Normalizer.YES};
+
+      char[] datachar= {        0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
+                                0x6a,
+                                0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
+                                0xea,
+                                0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306,
+                                0x0307, 0x0308, 0x0309, 0x030a,
+                                0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326,
+                                0x0327, 0x0328, 0x0329, 0x032a,
+                                0x1e00, 0x1e01, 0x1e02, 0x1e03, 0x1e04, 0x1e05, 0x1e06,
+                                0x1e07, 0x1e08, 0x1e09, 0x1e0a
+                       };
+
+      int count = 0;
+
+      if (Normalizer.quickCheck(FAST,0,FAST.length, Normalizer.FCD,0) != Normalizer.YES)
+        errln("Normalizer.quickCheck(FCD) failed: expected value for fast Normalizer.quickCheck is Normalizer.YES\n");
+      if (Normalizer.quickCheck(FALSE,0, FALSE.length,Normalizer.FCD,0) != Normalizer.NO)
+        errln("Normalizer.quickCheck(FCD) failed: expected value for error Normalizer.quickCheck is Normalizer.NO\n");
+      if (Normalizer.quickCheck(TRUE,0,TRUE.length,Normalizer.FCD,0) != Normalizer.YES)
+        errln("Normalizer.quickCheck(FCD) failed: expected value for correct Normalizer.quickCheck is Normalizer.YES\n");
+
+
+      while (count < 4)
+      {
+        Normalizer.QuickCheckResult fcdresult = Normalizer.quickCheck(datastr[count],0,datastr[count].length, Normalizer.FCD,0);
+        if (result[count] != fcdresult) {
+            errln("Normalizer.quickCheck(FCD) failed: Data set "+ count
+                    + " expected value "+ result[count]);
+        }
+        count ++;
+      }
+
+      /* random checks of long strings */
+      //srand((unsigned)time( NULL ));
+      Random rand = createRandom(); // use test framework's random
+
+      for (count = 0; count < 50; count ++)
+      {
+        int size = 0;
+        Normalizer.QuickCheckResult testresult = Normalizer.YES;
+        char[] data= new char[20];
+        char[] norm= new char[100];
+        char[] nfd = new char[100];
+        int normStart = 0;
+        int nfdsize = 0;
+        while (size != 19) {
+          data[size] = datachar[rand.nextInt(RAND_MAX)*50/RAND_MAX];
+          logln("0x"+data[size]);
+          normStart += Normalizer.normalize(data,size,size+1,
+                                              norm,normStart,100,
+                                              Normalizer.NFD,0);
+          size ++;
+        }
+        logln("\n");
+
+        nfdsize = Normalizer.normalize(data,0,size, nfd,0,nfd.length,Normalizer.NFD,0);
+        //    nfdsize = unorm_normalize(data, size, UNORM_NFD, UCOL_IGNORE_HANGUL,
+        //                      nfd, 100, &status);
+        if (nfdsize != normStart || Utility.arrayRegionMatches(nfd,0, norm,0,nfdsize) ==false) {
+          testresult = Normalizer.NO;
+        }
+        if (testresult == Normalizer.YES) {
+          logln("result Normalizer.YES\n");
+        }
+        else {
+          logln("result Normalizer.NO\n");
+        }
+
+        if (Normalizer.quickCheck(data,0,data.length, Normalizer.FCD,0) != testresult) {
+          errln("Normalizer.quickCheck(FCD) failed: expected "+ testresult +" for random data: "+hex(new String(data)) );
+        }
+      }
+    }
+
+
+    // reference implementation of Normalizer::compare
+    private int ref_norm_compare(String s1, String s2, int options) {
+        String t1, t2,r1,r2;
+
+        int normOptions=(int)(options>>Normalizer.COMPARE_NORM_OPTIONS_SHIFT);
+        
+        if((options&Normalizer.COMPARE_IGNORE_CASE)!=0) {
+            // NFD(toCasefold(NFD(X))) = NFD(toCasefold(NFD(Y)))
+            r1 = Normalizer.decompose(s1,false,normOptions);
+            r2 = Normalizer.decompose(s2,false,normOptions);
+            r1 = UCharacter.foldCase(r1,options);
+            r2 = UCharacter.foldCase(r2,options);
+        }else{
+            r1 = s1;
+            r2 = s2;
+        }
+        
+        t1 = Normalizer.decompose(r1, false, normOptions);
+        t2 = Normalizer.decompose(r2, false, normOptions);
+
+        if((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0) {
+            UTF16.StringComparator comp 
+                    = new UTF16.StringComparator(true, false, 
+                                     UTF16.StringComparator.FOLD_CASE_DEFAULT);
+            return comp.compare(t1,t2);
+        } else {
+            return t1.compareTo(t2);
+        }
+
+    }
+
+    // test wrapper for Normalizer::compare, sets UNORM_INPUT_IS_FCD appropriately
+    private int norm_compare(String s1, String s2, int options) {
+        int normOptions=(int)(options>>Normalizer.COMPARE_NORM_OPTIONS_SHIFT);
+
+        if( Normalizer.YES==Normalizer.quickCheck(s1,Normalizer.FCD,normOptions) &&
+            Normalizer.YES==Normalizer.quickCheck(s2,Normalizer.FCD,normOptions)) {
+            options|=Normalizer.INPUT_IS_FCD;
+        }
+
+        return Normalizer.compare(s1, s2, options);
+    }
+
+    // reference implementation of UnicodeString::caseCompare
+    private int ref_case_compare(String s1, String s2, int options) {
+        String t1, t2;
+
+        t1=s1;
+        t2=s2;
+
+        t1 = UCharacter.foldCase(t1,((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+        t2 = UCharacter.foldCase(t2,((options&Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I)==0));
+
+        if((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0) {
+            UTF16.StringComparator comp 
+                    = new UTF16.StringComparator(true, false,
+                                    UTF16.StringComparator.FOLD_CASE_DEFAULT);
+            return comp.compare(t1,t2);
+        } else {
+            return t1.compareTo(t2);
+        }
+
+    }
+
+    // reduce an integer to -1/0/1
+    private static int sign(int value) {
+        if(value==0) {
+            return 0;
+        } else {
+            return (value>>31)|1;
+        }
+    }
+    private static String signString(int value) {
+        if(value<0) {
+            return "<0";
+        } else if(value==0) {
+            return "=0";
+        } else /* value>0 */ {
+            return ">0";
+        }
+    }
+    // test Normalizer::compare and unorm_compare (thinly wrapped by the former)
+    // by comparing it with its semantic equivalent
+    // since we trust the pieces, this is sufficient
+
+    // test each string with itself and each other
+    // each time with all options
+    private  String strings[]=new String[]{
+                // some cases from NormalizationTest.txt
+                // 0..3
+                "D\u031B\u0307\u0323",
+                "\u1E0C\u031B\u0307",
+                "D\u031B\u0323\u0307",
+                "d\u031B\u0323\u0307",
+        
+                // 4..6
+                "\u00E4",
+                "a\u0308",
+                "A\u0308",
+        
+                // Angstrom sign = A ring
+                // 7..10
+                "\u212B",
+                "\u00C5",
+                "A\u030A",
+                "a\u030A",
+        
+                // 11.14
+                "a\u059A\u0316\u302A\u032Fb",
+                "a\u302A\u0316\u032F\u059Ab",
+                "a\u302A\u0316\u032F\u059Ab",
+                "A\u059A\u0316\u302A\u032Fb",
+        
+                // from ICU case folding tests
+                // 15..20
+                "A\u00df\u00b5\ufb03\\U0001040c\u0131",
+                "ass\u03bcffi\\U00010434i",
+                "\u0061\u0042\u0131\u03a3\u00df\ufb03\ud93f\udfff",
+                "\u0041\u0062\u0069\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udfff",
+                "\u0041\u0062\u0131\u03c3\u0053\u0073\u0066\u0046\u0069\ud93f\udfff",
+                "\u0041\u0062\u0069\u03c3\u0073\u0053\u0046\u0066\u0049\ud93f\udffd",
+        
+                //     U+d800 U+10001   see implementation comment in unorm_cmpEquivFold
+                // vs. U+10000          at bottom - code point order
+                // 21..22
+                "\ud800\ud800\udc01",
+                "\ud800\udc00",
+        
+                // other code point order tests from ustrtest.cpp
+                // 23..31
+                "\u20ac\ud801",
+                "\u20ac\ud800\udc00",
+                "\ud800",
+                "\ud800\uff61",
+                "\udfff",
+                "\uff61\udfff",
+                "\uff61\ud800\udc02",
+                "\ud800\udc02",
+                "\ud84d\udc56",
+        
+                // long strings, see cnormtst.c/TestNormCoverage()
+                // equivalent if case-insensitive
+                // 32..33
+                "\uAD8B\uAD8B\uAD8B\uAD8B"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "aaaaaaaaaaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+                "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+                "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+                "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+                "\uAD8B\uAD8B\uAD8B\uAD8B"+
+                "d\u031B\u0307\u0323",
+        
+                "\u1100\u116f\u11aa\uAD8B\uAD8B\u1100\u116f\u11aa"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "\\U0001d15e\\U0001d157\\U0001d165\\U0001d15e\\U0001d15e\\U0001d15e\\U0001d15e"+
+                "aaaaaaaaaaAAAAAAAAZZZZZZZZZZZZZZZZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"+
+                "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"+
+                "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"+
+                "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"+
+                "\u1100\u116f\u11aa\uAD8B\uAD8B\u1100\u116f\u11aa"+
+                "\u1E0C\u031B\u0307",
+        
+                // some strings that may make a difference whether the compare function
+                // case-folds or decomposes first
+                // 34..41
+                "\u0360\u0345\u0334",
+                "\u0360\u03b9\u0334",
+        
+                "\u0360\u1f80\u0334",
+                "\u0360\u03b1\u0313\u03b9\u0334",
+        
+                "\u0360\u1ffc\u0334",
+                "\u0360\u03c9\u03b9\u0334",
+        
+                "a\u0360\u0345\u0360\u0345b",
+                "a\u0345\u0360\u0345\u0360b",
+        
+                // interesting cases for canonical caseless match with turkic i handling
+                // 42..43
+                "\u00cc",
+                "\u0069\u0300",
+        
+                // strings with post-Unicode 3.2 normalization or normalization corrections
+                // 44..45
+                "\u00e4\u193b\\U0002f868",
+                "\u0061\u193b\u0308\u36fc",
+
+
+    };
+
+    // all combinations of options
+    // UNORM_INPUT_IS_FCD is set automatically if both input strings fulfill FCD conditions
+    final class Temp {
+        int options;
+        String name;
+        public Temp(int opt,String str){
+            options =opt;
+            name = str;
+        }
+
+    }
+    // set UNORM_UNICODE_3_2 in one additional combination
+  
+    private Temp[] opt = new Temp[]{
+                    new Temp(0,"default"),
+                    new Temp(Normalizer.COMPARE_CODE_POINT_ORDER, "code point order" ),
+                    new Temp(Normalizer.COMPARE_IGNORE_CASE, "ignore case" ),
+                    new Temp(Normalizer.COMPARE_CODE_POINT_ORDER|Normalizer.COMPARE_IGNORE_CASE, "code point order & ignore case" ),
+                    new Temp(Normalizer.COMPARE_IGNORE_CASE|Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I, "ignore case & special i"),
+                    new Temp(Normalizer.COMPARE_CODE_POINT_ORDER|Normalizer.COMPARE_IGNORE_CASE|Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I, "code point order & ignore case & special i"),
+                    new Temp(Normalizer.UNICODE_3_2 << Normalizer.COMPARE_NORM_OPTIONS_SHIFT, "Unicode 3.2")
+            };
+
+
+    public void TestCompareDebug(){
+
+        String[] s = new String[100]; // at least as many items as in strings[] !
+
+
+        int i, j, k, count=strings.length;
+        int result, refResult;
+
+        // create the UnicodeStrings
+        for(i=0; i<count; ++i) {
+            s[i]=Utility.unescape(strings[i]);
+        }
+        UTF16.StringComparator comp = new UTF16.StringComparator(true, false, 
+                                     UTF16.StringComparator.FOLD_CASE_DEFAULT);
+        // test them each with each other
+
+        i = 42;
+        j = 43;
+        k = 2;
+        // test Normalizer::compare
+        result=norm_compare(s[i], s[j], opt[k].options);
+        refResult=ref_norm_compare(s[i], s[j], opt[k].options);
+        if(sign(result)!=sign(refResult)) {
+            errln("Normalizer::compare( " + i +", "+j + ", " +k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+        }
+
+        // test UnicodeString::caseCompare - same internal implementation function
+         if(0!=(opt[k].options&Normalizer.COMPARE_IGNORE_CASE)) {
+        //    result=s[i]. (s[j], opt[k].options);
+            if ((opt[k].options & Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I) == 0)
+            {
+                comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+            }
+            else {
+                comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+            }
+            
+            result=comp.compare(s[i],s[j]);
+            refResult=ref_case_compare(s[i], s[j], opt[k].options);
+            if(sign(result)!=sign(refResult)) {
+                      errln("Normalizer::compare( " + i +", "+j + ", "+k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+                            }
+        }
+        String value1 = "\u00dater\u00fd";
+        String value2 = "\u00fater\u00fd";
+        if(Normalizer.compare(value1,value2,0)!=0){
+            if(Normalizer.compare(value1,value2,Normalizer.COMPARE_IGNORE_CASE)==0){
+
+            }
+        }
+    }
+
+    public void TestCompare() {
+
+        String[] s = new String[100]; // at least as many items as in strings[] !
+
+        int i, j, k, count=strings.length;
+        int result, refResult;
+
+        // create the UnicodeStrings
+        for(i=0; i<count; ++i) {
+            s[i]=Utility.unescape(strings[i]);
+        }
+        UTF16.StringComparator comp = new UTF16.StringComparator();
+        // test them each with each other
+        for(i=0; i<count; ++i) {
+            for(j=i; j<count; ++j) {
+                for(k=0; k<opt.length; ++k) {
+                    // test Normalizer::compare
+                    result=norm_compare(s[i], s[j], opt[k].options);
+                    refResult=ref_norm_compare(s[i], s[j], opt[k].options);
+                    if(sign(result)!=sign(refResult)) {
+                        errln("Normalizer::compare( " + i +", "+j + ", " +k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+                    }
+
+                    // test UnicodeString::caseCompare - same internal implementation function
+                     if(0!=(opt[k].options&Normalizer.COMPARE_IGNORE_CASE)) {
+                        //    result=s[i]. (s[j], opt[k].options);
+                        if ((opt[k].options & Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I) == 0)
+                        {
+                            comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+                        }
+                        else {
+                            comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+                        }
+                        
+                        comp.setCodePointCompare((opt[k].options & Normalizer.COMPARE_CODE_POINT_ORDER) != 0);
+                        // result=comp.caseCompare(s[i],s[j], opt[k].options);
+                        result=comp.compare(s[i],s[j]);
+                        refResult=ref_case_compare(s[i], s[j], opt[k].options);
+                        if(sign(result)!=sign(refResult)) {
+                                  errln("Normalizer::compare( " + i +", "+j + ", "+k+"( " +opt[k].name+"))=" + result +" should be same sign as " + refResult);
+                                         }
+                    }
+                }
+            }
+        }
+        
+        // test cases with i and I to make sure Turkic works
+        char[] iI= new char[]{ 0x49, 0x69, 0x130, 0x131 };
+        USerializedSet sset=new USerializedSet();
+        UnicodeSet set = new UnicodeSet();
+    
+        String s1, s2;
+        int start, end;
+    
+        // collect all sets into one for contiguous output
+        int[] startEnd = new int[2];
+        for(i=0; i<iI.length; ++i) {
+            if(NormalizerImpl.getCanonStartSet(iI[i], sset)) {
+                count=sset.countRanges();
+                for(j=0; j<count; ++j) {
+                    sset.getRange(j, startEnd);
+                    set.add(startEnd[0], startEnd[1]);
+                }
+            }
+        }
+
+        // test all of these precomposed characters
+        UnicodeSetIterator it = new UnicodeSetIterator(set);
+        while(it.nextRange() && it.codepoint!=UnicodeSetIterator.IS_STRING) {
+            start=it.codepoint;
+            end=it.codepointEnd;
+            while(start<=end) {
+                s1 = Integer.toString(start);
+                s2 = Normalizer.decompose(s1, false, 0);
+//                if(U_FAILURE(errorCode)) {
+//                    errln("Normalizer::decompose(U+%04x) failed: %s", start, u_errorName(errorCode));
+//                    return;
+//                }
+                for(k=0; k<opt.length; ++k) {
+                    // test Normalizer::compare
+
+                    result= norm_compare(s1, s2, opt[k].options);
+                    refResult=ref_norm_compare(s1, s2, opt[k].options);
+                    if(sign(result)!=sign(refResult)) {
+                        errln("Normalizer.compare(U+"+hex(start)+" with its NFD, "+opt[k].name+")" 
+                              + signString(result)+" should be "+signString(refResult));
+                    }
+    
+                    // test UnicodeString::caseCompare - same internal implementation function
+                    if((opt[k].options & Normalizer.COMPARE_IGNORE_CASE)>0) {
+                         if ((opt[k].options & Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I) == 0)
+                        {
+                            comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
+                        }
+                        else {
+                            comp.setIgnoreCase(true, UTF16.StringComparator.FOLD_CASE_EXCLUDE_SPECIAL_I);
+                        }
+                        
+                        comp.setCodePointCompare((opt[k].options & Normalizer.COMPARE_CODE_POINT_ORDER) != 0);
+         
+                        result=comp.compare(s1,s2);
+                        refResult=ref_case_compare(s1, s2, opt[k].options);
+                        if(sign(result)!=sign(refResult)) {
+                            errln("UTF16.compare(U+"+hex(start)+" with its NFD, "
+                                  +opt[k].name+")"+signString(result) +" should be "+signString(refResult));
+                        }
+                    }
+                }
+    
+                ++start;
+            }
+        }
+
+    }
+
+    // verify that case-folding does not un-FCD strings
+    int countFoldFCDExceptions(int foldingOptions) {
+        String s, d;
+        int c;
+        int count;
+        int/*unsigned*/ cc, trailCC, foldCC, foldTrailCC;
+        Normalizer.QuickCheckResult qcResult;
+        int category;
+        boolean isNFD;
+
+
+        logln("Test if case folding may un-FCD a string (folding options 0x)"+hex(foldingOptions));
+
+        count=0;
+        for(c=0; c<=0x10ffff; ++c) {
+            category=UCharacter.getType(c);
+            if(category==UCharacterCategory.UNASSIGNED) {
+                continue; // skip unassigned code points
+            }
+            if(c==0xac00) {
+                c=0xd7a3; // skip Hangul - no case folding there
+                continue;
+            }
+            // skip Han blocks - no case folding there either
+            if(c==0x3400) {
+                c=0x4db5;
+                continue;
+            }
+            if(c==0x4e00) {
+                c=0x9fa5;
+                continue;
+            }
+            if(c==0x20000) {
+                c=0x2a6d6;
+                continue;
+            }
+
+            s= UTF16.valueOf(c);
+
+            // get leading and trailing cc for c
+            d= Normalizer.decompose(s,false);
+            isNFD= s==d;
+            cc=UCharacter.getCombiningClass(UTF16.charAt(d,0));
+            trailCC=UCharacter.getCombiningClass(UTF16.charAt(d,d.length()-1));
+
+            // get leading and trailing cc for the case-folding of c
+            UCharacter.foldCase(s,(foldingOptions==0));
+            d = Normalizer.decompose(s, false);
+            foldCC=UCharacter.getCombiningClass(UTF16.charAt(d,0));
+            foldTrailCC=UCharacter.getCombiningClass(UTF16.charAt(d,d.length()-1));
+
+            qcResult=Normalizer.quickCheck(s, Normalizer.FCD,0);
+
+
+            // bad:
+            // - character maps to empty string: adjacent characters may then need reordering
+            // - folding has different leading/trailing cc's, and they don't become just 0
+            // - folding itself is not FCD
+            if( qcResult!=Normalizer.YES ||
+                s.length()==0 ||
+                (cc!=foldCC && foldCC!=0) || (trailCC!=foldTrailCC && foldTrailCC!=0)
+            ) {
+                ++count;
+                errln("U+"+hex(c)+": case-folding may un-FCD a string (folding options 0x"+hex(foldingOptions)+")");
+                //errln("  cc %02x trailCC %02x    foldCC(U+%04lx) %02x foldTrailCC(U+%04lx) %02x   quickCheck(folded)=%d", cc, trailCC, UTF16.charAt(d,0), foldCC, UTF16.charAt(d,d.length()-1), foldTrailCC, qcResult);
+                continue;
+            }
+
+            // also bad:
+            // if a code point is in NFD but its case folding is not, then
+            // unorm_compare will also fail
+            if(isNFD && Normalizer.YES!=Normalizer.quickCheck(s, Normalizer.NFD,0)) {
+                ++count;
+                errln("U+"+hex(c)+": case-folding may un-FCD a string (folding options 0x"+hex(foldingOptions)+")");
+            }
+        }
+
+        logln("There are "+hex(count)+" code points for which case-folding may un-FCD a string (folding options"+foldingOptions+"x)" );
+        return count;
+    }
+
+    public void TestFindFoldFCDExceptions() {
+        int count;
+
+        count=countFoldFCDExceptions(0);
+        count+=countFoldFCDExceptions(Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I);
+        if(count>0) {
+            //*
+            //* If case-folding un-FCDs any strings, then unorm_compare() must be
+            //* re-implemented.
+            //* It currently assumes that one can check for FCD then case-fold
+            //* and then still have FCD strings for raw decomposition without reordering.
+            //*
+            errln("error: There are "+count+" code points for which case-folding"+
+                  " may un-FCD a string for all folding options.\n See comment"+
+                  " in BasicNormalizerTest::FindFoldFCDExceptions()!");
+        }
+    }
+    
+    public void TestCombiningMarks(){
+        String src = "\u0f71\u0f72\u0f73\u0f74\u0f75";
+        String expected = "\u0F71\u0F71\u0F71\u0F72\u0F72\u0F74\u0F74";
+        String result = Normalizer.decompose(src,false);
+        if(!expected.equals(result)){
+            errln("Reordering of combining marks failed. Expected: "+Utility.hex(expected)+" Got: "+ Utility.hex(result));
+        }
+    }
+
+    /*
+     * Re-enable this test when UTC fixes UAX 21
+    public void TestUAX21Failure(){
+        final String[][] cases = new String[][]{
+                {"\u0061\u0345\u0360\u0345\u0062", "\u0061\u0360\u0345\u0345\u0062"},
+                {"\u0061\u0345\u0345\u0360\u0062", "\u0061\u0360\u0345\u0345\u0062"},
+                {"\u0061\u0345\u0360\u0362\u0360\u0062", "\u0061\u0362\u0360\u0360\u0345\u0062"},
+                {"\u0061\u0360\u0345\u0360\u0362\u0062", "\u0061\u0362\u0360\u0360\u0345\u0062"},
+                {"\u0061\u0345\u0360\u0362\u0361\u0062", "\u0061\u0362\u0360\u0361\u0345\u0062"},
+                {"\u0061\u0361\u0345\u0360\u0362\u0062", "\u0061\u0362\u0361\u0360\u0345\u0062"},
+        };
+        for(int i = 0; i< cases.length; i++){
+            String s1 =cases[0][0]; 
+            String s2 = cases[0][1];
+            if( (Normalizer.compare(s1,s2,Normalizer.FOLD_CASE_DEFAULT ==0)//case sensitive compare
+                &&
+                (Normalizer.compare(s1,s2,Normalizer.COMPARE_IGNORE_CASE)!=0)){
+                errln("Normalizer.compare() failed for s1: " 
+                        + Utility.hex(s1) +" s2: " + Utility.hex(s2));
+            }
+        }
+    }
+    */
+    public void TestFCNFKCClosure() {
+        final class TestStruct{
+            int c;
+            String s;
+            TestStruct(int cp, String src){
+                c=cp;
+                s=src;
+            }
+        }
+        
+        TestStruct[] tests= new TestStruct[]{
+            new TestStruct( 0x037A, "\u0020\u03B9" ),
+            new TestStruct( 0x03D2, "\u03C5" ),
+            new TestStruct( 0x20A8, "\u0072\u0073" ) ,
+            new TestStruct( 0x210B, "\u0068" ),
+            new TestStruct( 0x210C, "\u0068" ),
+            new TestStruct( 0x2121, "\u0074\u0065\u006C" ),
+            new TestStruct( 0x2122, "\u0074\u006D" ),
+            new TestStruct( 0x2128, "\u007A" ),
+            new TestStruct( 0x1D5DB,"\u0068" ),
+            new TestStruct( 0x1D5ED,"\u007A" ),
+            new TestStruct( 0x0061, "" )
+        };
+    
+
+        for(int i = 0; i < tests.length; ++ i) {
+            String result=Normalizer.getFC_NFKC_Closure(tests[i].c);
+            if(!result.equals(new String(tests[i].s))) {
+                errln("getFC_NFKC_Closure(U+"+Integer.toHexString(tests[i].c)+") is wrong");
+            }
+        }
+    
+        /* error handling */
+
+        int length=Normalizer.getFC_NFKC_Closure(0x5c, null);
+        if(length!=0){
+            errln("getFC_NFKC_Closure did not perform error handling correctly");
+        }
+    }
+    public void TestBugJ2324(){
+       /* String[] input = new String[]{
+                            //"\u30FD\u3099",
+                            "\u30FA\u309A",
+                            "\u30FB\u309A",
+                            "\u30FC\u309A",
+                            "\u30FE\u309A",
+                            "\u30FD\u309A",
+
+        };*/
+        String troublesome = "\u309A";
+        for(int i=0x3000; i<0x3100;i++){
+            String input = ((char)i)+troublesome;
+            try{                            
+              /*  String result =*/ Normalizer.compose(input,false);
+            }catch(IndexOutOfBoundsException e){
+                errln("compose() failed for input: " + Utility.hex(input) + " Exception: " + e.toString());
+            }
+        }
+                
+    }
+
+     static final int D = 0, C = 1, KD= 2, KC = 3, FCD=4, NONE=5;   
+    private static UnicodeSet[] initSkippables(UnicodeSet[] skipSets){
+        if( skipSets.length < 4 ){
+            return null;
+        }
+        skipSets[D].applyPattern(
+            "[^\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6\\u00D9-\\u00DD"
+            + "\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6\\u00F9-\\u00FD"
+            + "\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137"
+            + "\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165"
+            + "\\u0168-\\u017E\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-\\u01DC"
+            + "\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B"
+            + "\\u021E\\u021F\\u0226-\\u0233\\u0300-\\u034E\\u0350-\\u036F"
+            + "\\u0374\\u037E\\u0385-\\u038A\\u038C\\u038E-\\u0390\\u03AA-"
+            + "\\u03B0\\u03CA-\\u03CE\\u03D3\\u03D4\\u0400\\u0401\\u0403\\u0407"
+            + "\\u040C-\\u040E\\u0419\\u0439\\u0450\\u0451\\u0453\\u0457\\u045C"
+            + "-\\u045E\\u0476\\u0477\\u0483-\\u0487\\u04C1\\u04C2\\u04D0-"
+            + "\\u04D3\\u04D6\\u04D7\\u04DA-\\u04DF\\u04E2-\\u04E7\\u04EA-"
+            + "\\u04F5\\u04F8\\u04F9\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4"
+            + "\\u05C5\\u05C7\\u0610-\\u061A\\u0622-\\u0626\\u064B-\\u065E"
+            + "\\u0670\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-\\u06E4"
+            + "\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-"
+            + "\\u07F3\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958"
+            + "-\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC\\u09DD\\u09DF\\u0A33"
+            + "\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C"
+            + "\\u0B48\\u0B4B-\\u0B4D\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCD"
+            + "\\u0C48\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CC0\\u0CC7\\u0CC8\\u0CCA"
+            + "\\u0CCB\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE"
+            + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8\\u0EB9\\u0EC8-\\u0ECB"
+            + "\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57"
+            + "\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A-\\u0F7D\\u0F80-"
+            + "\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+            + "\\u0FC6\\u1026\\u1037\\u1039\\u103A\\u108D\\u135F\\u1714\\u1734"
+            + "\\u17D2\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B06\\u1B08"
+            + "\\u1B0A\\u1B0C\\u1B0E\\u1B12\\u1B34\\u1B3B\\u1B3D\\u1B40\\u1B41"
+            + "\\u1B43\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1C37\\u1DC0-\\u1DE6"
+            + "\\u1DFE-\\u1E99\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15\\u1F18-"
+            + "\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59"
+            + "\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC"
+            + "\\u1FBE\\u1FC1-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-"
+            + "\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFD\\u2000\\u2001\\u20D0-"
+            + "\\u20DC\\u20E1\\u20E5-\\u20F0\\u2126\\u212A\\u212B\\u219A\\u219B"
+            + "\\u21AE\\u21CD-\\u21CF\\u2204\\u2209\\u220C\\u2224\\u2226\\u2241"
+            + "\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271\\u2274\\u2275"
+            + "\\u2278\\u2279\\u2280\\u2281\\u2284\\u2285\\u2288\\u2289\\u22AC-"
+            + "\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2329\\u232A\\u2ADC"
+            + "\\u2DE0-\\u2DFF\\u302A-\\u302F\\u304C\\u304E\\u3050\\u3052"
+            + "\\u3054\\u3056\\u3058\\u305A\\u305C\\u305E\\u3060\\u3062\\u3065"
+            + "\\u3067\\u3069\\u3070\\u3071\\u3073\\u3074\\u3076\\u3077\\u3079"
+            + "\\u307A\\u307C\\u307D\\u3094\\u3099\\u309A\\u309E\\u30AC\\u30AE"
+            + "\\u30B0\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0"
+            + "\\u30C2\\u30C5\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4\\u30D6"
+            + "\\u30D7\\u30D9\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE"
+            + "\\uA66F\\uA67C\\uA67D\\uA806\\uA8C4\\uA92B-\\uA92D\\uA953\\uAC00"
+            + "-\\uD7A3\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20"
+            + "\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFA70-"
+            + "\\uFAD9\\uFB1D-\\uFB1F\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E"
+            + "\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4E\\uFE20-\\uFE26"
+            + "\\U000101FD\\U00010A0D\\U00010A0F\\U00010A38-\\U00010A3A\\U00010"
+            + "A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001D17B-"
+            + "\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001"
+            + "D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0002F800-\\U0002FA1D]", false);
+
+      skipSets[C].applyPattern(
+          "[^<->A-PR-Za-pr-z\\u00A8\\u00C0-\\u00CF\\u00D1-\\u00D6\\u00D8-"
+          + "\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD\\u00FF-"
+          + "\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121\\u0124"
+          + "\\u0125\\u0128-\\u012D\\u0130\\u0139\\u013A\\u013D\\u013E\\u0143"
+          + "\\u0144\\u0147\\u0148\\u014C-\\u0151\\u0154\\u0155\\u0158-"
+          + "\\u015D\\u0160\\u0161\\u0164\\u0165\\u0168-\\u0171\\u0174-"
+          + "\\u017F\\u01A0\\u01A1\\u01AF\\u01B0\\u01B7\\u01CD-\\u01DC\\u01DE"
+          + "-\\u01E1\\u01E6-\\u01EB\\u01F4\\u01F5\\u01F8-\\u01FB\\u0200-"
+          + "\\u021B\\u021E\\u021F\\u0226-\\u0233\\u0292\\u0300-\\u034E"
+          + "\\u0350-\\u036F\\u0374\\u037E\\u0387\\u0391\\u0395\\u0397\\u0399"
+          + "\\u039F\\u03A1\\u03A5\\u03A9\\u03AC\\u03AE\\u03B1\\u03B5\\u03B7"
+          + "\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-\\u03CB\\u03CE\\u03D2\\u0406"
+          + "\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E\\u0423\\u0427\\u042B"
+          + "\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A\\u043E\\u0443\\u0447"
+          + "\\u044B\\u044D\\u0456\\u0474\\u0475\\u0483-\\u0487\\u04D8\\u04D9"
+          + "\\u04E8\\u04E9\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5"
+          + "\\u05C7\\u0610-\\u061A\\u0622\\u0623\\u0627\\u0648\\u064A-"
+          + "\\u065E\\u0670\\u06C1\\u06D2\\u06D5-\\u06DC\\u06DF-\\u06E4"
+          + "\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-"
+          + "\\u07F3\\u0928\\u0930\\u0933\\u093C\\u094D\\u0951-\\u0954\\u0958"
+          + "-\\u095F\\u09BC\\u09BE\\u09C7\\u09CD\\u09D7\\u09DC\\u09DD\\u09DF"
+          + "\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD"
+          + "\\u0B3C\\u0B3E\\u0B47\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B92"
+          + "\\u0BBE\\u0BC6\\u0BC7\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55\\u0C56"
+          + "\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCA\\u0CCD\\u0CD5\\u0CD6\\u0D3E"
+          + "\\u0D46\\u0D47\\u0D4D\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC\\u0DDF"
+          + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8\\u0EB9\\u0EC8-\\u0ECB"
+          + "\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57"
+          + "\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A-\\u0F7D\\u0F80-"
+          + "\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+          + "\\u0FC6\\u1025\\u102E\\u1037\\u1039\\u103A\\u108D\\u1100-\\u1112"
+          + "\\u1161-\\u1175\\u11A8-\\u11C2\\u135F\\u1714\\u1734\\u17D2"
+          + "\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B05\\u1B07\\u1B09"
+          + "\\u1B0B\\u1B0D\\u1B11\\u1B34\\u1B35\\u1B3A\\u1B3C\\u1B3E\\u1B3F"
+          + "\\u1B42\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1C37\\u1DC0-\\u1DE6"
+          + "\\u1DFE-\\u1E03\\u1E0A-\\u1E0F\\u1E12-\\u1E1B\\u1E20-\\u1E27"
+          + "\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-\\u1E7D\\u1E80-\\u1E87"
+          + "\\u1E8E-\\u1E91\\u1E96-\\u1E99\\u1EA0-\\u1EF3\\u1EF6-\\u1EF9"
+          + "\\u1F00-\\u1F11\\u1F18\\u1F19\\u1F20-\\u1F31\\u1F38\\u1F39"
+          + "\\u1F40\\u1F41\\u1F48\\u1F49\\u1F50\\u1F51\\u1F59\\u1F60-\\u1F71"
+          + "\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-\\u1F7D\\u1F80\\u1F81"
+          + "\\u1F88\\u1F89\\u1F90\\u1F91\\u1F98\\u1F99\\u1FA0\\u1FA1\\u1FA8"
+          + "\\u1FA9\\u1FB3\\u1FB6\\u1FBB\\u1FBC\\u1FBE\\u1FBF\\u1FC3\\u1FC6"
+          + "\\u1FC9\\u1FCB\\u1FCC\\u1FD3\\u1FDB\\u1FE3\\u1FEB\\u1FEE\\u1FEF"
+          + "\\u1FF3\\u1FF6\\u1FF9\\u1FFB-\\u1FFE\\u2000\\u2001\\u20D0-"
+          + "\\u20DC\\u20E1\\u20E5-\\u20F0\\u2126\\u212A\\u212B\\u2190\\u2192"
+          + "\\u2194\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B\\u2223\\u2225"
+          + "\\u223C\\u2243\\u2245\\u2248\\u224D\\u2261\\u2264\\u2265\\u2272"
+          + "\\u2273\\u2276\\u2277\\u227A-\\u227D\\u2282\\u2283\\u2286\\u2287"
+          + "\\u2291\\u2292\\u22A2\\u22A8\\u22A9\\u22AB\\u22B2-\\u22B5\\u2329"
+          + "\\u232A\\u2ADC\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3046\\u304B"
+          + "\\u304D\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059\\u305B\\u305D"
+          + "\\u305F\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072\\u3075\\u3078"
+          + "\\u307B\\u3099\\u309A\\u309D\\u30A6\\u30AB\\u30AD\\u30AF\\u30B1"
+          + "\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF\\u30C1\\u30C4"
+          + "\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB\\u30EF-\\u30F2"
+          + "\\u30FD\\uA66F\\uA67C\\uA67D\\uA806\\uA8C4\\uA92B-\\uA92D\\uA953"
+          + "\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0"
+          + "\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC"
+          + "\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8"
+          + "\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4"
+          + "\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0"
+          + "\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC"
+          + "\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8"
+          + "\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4"
+          + "\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0"
+          + "\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC"
+          + "\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8"
+          + "\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4"
+          + "\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0"
+          + "\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC"
+          + "\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8"
+          + "\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4"
+          + "\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0"
+          + "\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C"
+          + "\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98"
+          + "\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94"
+          + "\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090"
+          + "\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C"
+          + "\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288"
+          + "\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384"
+          + "\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480"
+          + "\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C"
+          + "\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678"
+          + "\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774"
+          + "\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870"
+          + "\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C"
+          + "\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68"
+          + "\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64"
+          + "\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60"
+          + "\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C"
+          + "\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58"
+          + "\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54"
+          + "\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050"
+          + "\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C"
+          + "\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248"
+          + "\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344"
+          + "\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440"
+          + "\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C"
+          + "\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638"
+          + "\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734"
+          + "\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-"
+          + "\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-"
+          + "\\uFA6A\\uFA70-\\uFAD9\\uFB1D-\\uFB1F\\uFB2A-\\uFB36\\uFB38-"
+          + "\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4E\\uFE20"
+          + "-\\uFE26\\U000101FD\\U00010A0D\\U00010A0F\\U00010A38-\\U00010A3A"
+          + "\\U00010A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001"
+          + "D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD"
+          + "\\U0001D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0002F800-"
+          + "\\U0002FA1D]", false);
+   
+        skipSets[KD].applyPattern(
+              "[^\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5\\u00B8-\\u00BA"
+              + "\\u00BC-\\u00BE\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6"
+              + "\\u00D9-\\u00DD\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6"
+              + "\\u00F9-\\u00FD\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130"
+              + "\\u0132-\\u0137\\u0139-\\u0140\\u0143-\\u0149\\u014C-\\u0151"
+              + "\\u0154-\\u0165\\u0168-\\u017F\\u01A0\\u01A1\\u01AF\\u01B0"
+              + "\\u01C4-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F5\\u01F8-\\u021B"
+              + "\\u021E\\u021F\\u0226-\\u0233\\u02B0-\\u02B8\\u02D8-\\u02DD"
+              + "\\u02E0-\\u02E4\\u0300-\\u034E\\u0350-\\u036F\\u0374\\u037A"
+              + "\\u037E\\u0384-\\u038A\\u038C\\u038E-\\u0390\\u03AA-\\u03B0"
+              + "\\u03CA-\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4\\u03F5"
+              + "\\u03F9\\u0400\\u0401\\u0403\\u0407\\u040C-\\u040E\\u0419\\u0439"
+              + "\\u0450\\u0451\\u0453\\u0457\\u045C-\\u045E\\u0476\\u0477\\u0483"
+              + "-\\u0487\\u04C1\\u04C2\\u04D0-\\u04D3\\u04D6\\u04D7\\u04DA-"
+              + "\\u04DF\\u04E2-\\u04E7\\u04EA-\\u04F5\\u04F8\\u04F9\\u0587"
+              + "\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610"
+              + "-\\u061A\\u0622-\\u0626\\u064B-\\u065E\\u0670\\u0675-\\u0678"
+              + "\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7"
+              + "\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-\\u07F3"
+              + "\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958-"
+              + "\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36"
+              + "\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B48"
+              + "\\u0B4B-\\u0B4D\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCD\\u0C48"
+              + "\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CC0\\u0CC7\\u0CC8\\u0CCA\\u0CCB"
+              + "\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE\\u0E33"
+              + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB3\\u0EB8\\u0EB9\\u0EC8-"
+              + "\\u0ECB\\u0EDC\\u0EDD\\u0F0C\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39"
+              + "\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F7D\\u0F80"
+              + "-\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+              + "\\u0FC6\\u1026\\u1037\\u1039\\u103A\\u108D\\u10FC\\u135F\\u1714"
+              + "\\u1734\\u17D2\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B06"
+              + "\\u1B08\\u1B0A\\u1B0C\\u1B0E\\u1B12\\u1B34\\u1B3B\\u1B3D\\u1B40"
+              + "\\u1B41\\u1B43\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1C37\\u1D2C-"
+              + "\\u1D2E\\u1D30-\\u1D3A\\u1D3C-\\u1D4D\\u1D4F-\\u1D6A\\u1D78"
+              + "\\u1D9B-\\u1DE6\\u1DFE-\\u1E9B\\u1EA0-\\u1EF9\\u1F00-\\u1F15"
+              + "\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57"
+              + "\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-"
+              + "\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-"
+              + "\\u1FF4\\u1FF6-\\u1FFE\\u2000-\\u200A\\u2011\\u2017\\u2024-"
+              + "\\u2026\\u202F\\u2033\\u2034\\u2036\\u2037\\u203C\\u203E\\u2047-"
+              + "\\u2049\\u2057\\u205F\\u2070\\u2071\\u2074-\\u208E\\u2090-"
+              + "\\u2094\\u20A8\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2100-"
+              + "\\u2103\\u2105-\\u2107\\u2109-\\u2113\\u2115\\u2116\\u2119-"
+              + "\\u211D\\u2120-\\u2122\\u2124\\u2126\\u2128\\u212A-\\u212D"
+              + "\\u212F-\\u2131\\u2133-\\u2139\\u213B-\\u2140\\u2145-\\u2149"
+              + "\\u2153-\\u217F\\u219A\\u219B\\u21AE\\u21CD-\\u21CF\\u2204"
+              + "\\u2209\\u220C\\u2224\\u2226\\u222C\\u222D\\u222F\\u2230\\u2241"
+              + "\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271\\u2274\\u2275"
+              + "\\u2278\\u2279\\u2280\\u2281\\u2284\\u2285\\u2288\\u2289\\u22AC-"
+              + "\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2329\\u232A\\u2460-"
+              + "\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC\\u2C7C\\u2C7D\\u2D6F\\u2DE0"
+              + "-\\u2DFF\\u2E9F\\u2EF3\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F"
+              + "\\u3036\\u3038-\\u303A\\u304C\\u304E\\u3050\\u3052\\u3054\\u3056"
+              + "\\u3058\\u305A\\u305C\\u305E\\u3060\\u3062\\u3065\\u3067\\u3069"
+              + "\\u3070\\u3071\\u3073\\u3074\\u3076\\u3077\\u3079\\u307A\\u307C"
+              + "\\u307D\\u3094\\u3099-\\u309C\\u309E\\u309F\\u30AC\\u30AE\\u30B0"
+              + "\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2"
+              + "\\u30C5\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4\\u30D6\\u30D7"
+              + "\\u30D9\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE\\u30FF"
+              + "\\u3131-\\u318E\\u3192-\\u319F\\u3200-\\u321E\\u3220-\\u3243"
+              + "\\u3250-\\u327E\\u3280-\\u32FE\\u3300-\\u33FF\\uA66F\\uA67C"
+              + "\\uA67D\\uA770\\uA806\\uA8C4\\uA92B-\\uA92D\\uA953\\uAC00-"
+              + "\\uD7A3\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20"
+              + "\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFA70-"
+              + "\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB36\\uFB38-"
+              + "\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3"
+              + "-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE10-"
+              + "\\uFE19\\uFE20-\\uFE26\\uFE30-\\uFE44\\uFE47-\\uFE52\\uFE54-"
+              + "\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC"
+              + "\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7"
+              + "\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\U000101FD\\U00010"
+              + "A0D\\U00010A0F\\U00010A38-\\U00010A3A\\U00010A3F\\U0001D15E-"
+              + "\\U0001D169\\U0001D16D-\\U0001D172\\U0001D17B-\\U0001D182\\U0001"
+              + "D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001D1BB-\\U0001D1C0"
+              + "\\U0001D242-\\U0001D244\\U0001D400-\\U0001D454\\U0001D456-"
+              + "\\U0001D49C\\U0001D49E\\U0001D49F\\U0001D4A2\\U0001D4A5\\U0001D4"
+              + "A6\\U0001D4A9-\\U0001D4AC\\U0001D4AE-\\U0001D4B9\\U0001D4BB"
+              + "\\U0001D4BD-\\U0001D4C3\\U0001D4C5-\\U0001D505\\U0001D507-"
+              + "\\U0001D50A\\U0001D50D-\\U0001D514\\U0001D516-\\U0001D51C\\U0001"
+              + "D51E-\\U0001D539\\U0001D53B-\\U0001D53E\\U0001D540-\\U0001D544"
+              + "\\U0001D546\\U0001D54A-\\U0001D550\\U0001D552-\\U0001D6A5\\U0001"
+              + "D6A8-\\U0001D7CB\\U0001D7CE-\\U0001D7FF\\U0002F800-\\U0002FA1D]", false);
+   
+        skipSets[KC].applyPattern(
+                "[^<->A-PR-Za-pr-z\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5"
+                + "\\u00B8-\\u00BA\\u00BC-\\u00BE\\u00C0-\\u00CF\\u00D1-\\u00D6"
+                + "\\u00D8-\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD"
+                + "\\u00FF-\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121"
+                + "\\u0124\\u0125\\u0128-\\u012D\\u0130\\u0132\\u0133\\u0139\\u013A"
+                + "\\u013D-\\u0140\\u0143\\u0144\\u0147-\\u0149\\u014C-\\u0151"
+                + "\\u0154\\u0155\\u0158-\\u015D\\u0160\\u0161\\u0164\\u0165\\u0168"
+                + "-\\u0171\\u0174-\\u017F\\u01A0\\u01A1\\u01AF\\u01B0\\u01B7"
+                + "\\u01C4-\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01EB\\u01F1-\\u01F5"
+                + "\\u01F8-\\u01FB\\u0200-\\u021B\\u021E\\u021F\\u0226-\\u0233"
+                + "\\u0292\\u02B0-\\u02B8\\u02D8-\\u02DD\\u02E0-\\u02E4\\u0300-"
+                + "\\u034E\\u0350-\\u036F\\u0374\\u037A\\u037E\\u0384\\u0385\\u0387"
+                + "\\u0391\\u0395\\u0397\\u0399\\u039F\\u03A1\\u03A5\\u03A9\\u03AC"
+                + "\\u03AE\\u03B1\\u03B5\\u03B7\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-"
+                + "\\u03CB\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4\\u03F5"
+                + "\\u03F9\\u0406\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E\\u0423"
+                + "\\u0427\\u042B\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A\\u043E"
+                + "\\u0443\\u0447\\u044B\\u044D\\u0456\\u0474\\u0475\\u0483-\\u0487"
+                + "\\u04D8\\u04D9\\u04E8\\u04E9\\u0587\\u0591-\\u05BD\\u05BF\\u05C1"
+                + "\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u0622\\u0623\\u0627"
+                + "\\u0648\\u064A-\\u065E\\u0670\\u0675-\\u0678\\u06C1\\u06D2"
+                + "\\u06D5-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED"
+                + "\\u0711\\u0730-\\u074A\\u07EB-\\u07F3\\u0928\\u0930\\u0933"
+                + "\\u093C\\u094D\\u0951-\\u0954\\u0958-\\u095F\\u09BC\\u09BE"
+                + "\\u09C7\\u09CD\\u09D7\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36\\u0A3C"
+                + "\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B3E\\u0B47"
+                + "\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B92\\u0BBE\\u0BC6\\u0BC7"
+                + "\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CBF\\u0CC2"
+                + "\\u0CC6\\u0CCA\\u0CCD\\u0CD5\\u0CD6\\u0D3E\\u0D46\\u0D47\\u0D4D"
+                + "\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC\\u0DDF\\u0E33\\u0E38-\\u0E3A"
+                + "\\u0E48-\\u0E4B\\u0EB3\\u0EB8\\u0EB9\\u0EC8-\\u0ECB\\u0EDC"
+                + "\\u0EDD\\u0F0C\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D"
+                + "\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F7D\\u0F80-\\u0F84"
+                + "\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u0FC6"
+                + "\\u1025\\u102E\\u1037\\u1039\\u103A\\u108D\\u10FC\\u1100-\\u1112"
+                + "\\u1161-\\u1175\\u11A8-\\u11C2\\u135F\\u1714\\u1734\\u17D2"
+                + "\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B05\\u1B07\\u1B09"
+                + "\\u1B0B\\u1B0D\\u1B11\\u1B34\\u1B35\\u1B3A\\u1B3C\\u1B3E\\u1B3F"
+                + "\\u1B42\\u1B44\\u1B6B-\\u1B73\\u1BAA\\u1C37\\u1D2C-\\u1D2E"
+                + "\\u1D30-\\u1D3A\\u1D3C-\\u1D4D\\u1D4F-\\u1D6A\\u1D78\\u1D9B-"
+                + "\\u1DE6\\u1DFE-\\u1E03\\u1E0A-\\u1E0F\\u1E12-\\u1E1B\\u1E20-"
+                + "\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-\\u1E7D\\u1E80-"
+                + "\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E9B\\u1EA0-\\u1EF3\\u1EF6-"
+                + "\\u1EF9\\u1F00-\\u1F11\\u1F18\\u1F19\\u1F20-\\u1F31\\u1F38"
+                + "\\u1F39\\u1F40\\u1F41\\u1F48\\u1F49\\u1F50\\u1F51\\u1F59\\u1F60-"
+                + "\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-\\u1F7D\\u1F80"
+                + "\\u1F81\\u1F88\\u1F89\\u1F90\\u1F91\\u1F98\\u1F99\\u1FA0\\u1FA1"
+                + "\\u1FA8\\u1FA9\\u1FB3\\u1FB6\\u1FBB-\\u1FC1\\u1FC3\\u1FC6\\u1FC9"
+                + "\\u1FCB-\\u1FCF\\u1FD3\\u1FDB\\u1FDD-\\u1FDF\\u1FE3\\u1FEB"
+                + "\\u1FED-\\u1FEF\\u1FF3\\u1FF6\\u1FF9\\u1FFB-\\u1FFE\\u2000-"
+                + "\\u200A\\u2011\\u2017\\u2024-\\u2026\\u202F\\u2033\\u2034\\u2036"
+                + "\\u2037\\u203C\\u203E\\u2047-\\u2049\\u2057\\u205F\\u2070\\u2071"
+                + "\\u2074-\\u208E\\u2090-\\u2094\\u20A8\\u20D0-\\u20DC\\u20E1"
+                + "\\u20E5-\\u20F0\\u2100-\\u2103\\u2105-\\u2107\\u2109-\\u2113"
+                + "\\u2115\\u2116\\u2119-\\u211D\\u2120-\\u2122\\u2124\\u2126"
+                + "\\u2128\\u212A-\\u212D\\u212F-\\u2131\\u2133-\\u2139\\u213B-"
+                + "\\u2140\\u2145-\\u2149\\u2153-\\u217F\\u2190\\u2192\\u2194"
+                + "\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B\\u2223\\u2225\\u222C"
+                + "\\u222D\\u222F\\u2230\\u223C\\u2243\\u2245\\u2248\\u224D\\u2261"
+                + "\\u2264\\u2265\\u2272\\u2273\\u2276\\u2277\\u227A-\\u227D\\u2282"
+                + "\\u2283\\u2286\\u2287\\u2291\\u2292\\u22A2\\u22A8\\u22A9\\u22AB"
+                + "\\u22B2-\\u22B5\\u2329\\u232A\\u2460-\\u24EA\\u2A0C\\u2A74-"
+                + "\\u2A76\\u2ADC\\u2C7C\\u2C7D\\u2D6F\\u2DE0-\\u2DFF\\u2E9F\\u2EF3"
+                + "\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F\\u3036\\u3038-\\u303A"
+                + "\\u3046\\u304B\\u304D\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059"
+                + "\\u305B\\u305D\\u305F\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072"
+                + "\\u3075\\u3078\\u307B\\u3099-\\u309D\\u309F\\u30A6\\u30AB\\u30AD"
+                + "\\u30AF\\u30B1\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF"
+                + "\\u30C1\\u30C4\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB"
+                + "\\u30EF-\\u30F2\\u30FD\\u30FF\\u3131-\\u318E\\u3192-\\u319F"
+                + "\\u3200-\\u321E\\u3220-\\u3243\\u3250-\\u327E\\u3280-\\u32FE"
+                + "\\u3300-\\u33FF\\uA66F\\uA67C\\uA67D\\uA770\\uA806\\uA8C4\\uA92B"
+                + "-\\uA92D\\uA953\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8"
+                + "\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4"
+                + "\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0"
+                + "\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C"
+                + "\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098"
+                + "\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194"
+                + "\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290"
+                + "\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C"
+                + "\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488"
+                + "\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584"
+                + "\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680"
+                + "\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C"
+                + "\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878"
+                + "\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974"
+                + "\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70"
+                + "\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C"
+                + "\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68"
+                + "\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64"
+                + "\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60"
+                + "\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C"
+                + "\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058"
+                + "\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154"
+                + "\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250"
+                + "\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C"
+                + "\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448"
+                + "\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544"
+                + "\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640"
+                + "\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C"
+                + "\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838"
+                + "\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934"
+                + "\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30"
+                + "\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C"
+                + "\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28"
+                + "\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24"
+                + "\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20"
+                + "\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C"
+                + "\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018"
+                + "\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114"
+                + "\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210"
+                + "\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C"
+                + "\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408"
+                + "\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504"
+                + "\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600"
+                + "\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC"
+                + "\\uD718\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12"
+                + "\\uFA15-\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D"
+                + "\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17"
+                + "\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43"
+                + "\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-"
+                + "\\uFDC7\\uFDF0-\\uFDFC\\uFE10-\\uFE19\\uFE20-\\uFE26\\uFE30-"
+                + "\\uFE44\\uFE47-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-"
+                + "\\uFE72\\uFE74\\uFE76-\\uFEFC\\uFF01-\\uFFBE\\uFFC2-\\uFFC7"
+                + "\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6"
+                + "\\uFFE8-\\uFFEE\\U000101FD\\U00010A0D\\U00010A0F\\U00010A38-"
+                + "\\U00010A3A\\U00010A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001"
+                + "D172\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-"
+                + "\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0001"
+                + "D400-\\U0001D454\\U0001D456-\\U0001D49C\\U0001D49E\\U0001D49F"
+                + "\\U0001D4A2\\U0001D4A5\\U0001D4A6\\U0001D4A9-\\U0001D4AC\\U0001D"
+                + "4AE-\\U0001D4B9\\U0001D4BB\\U0001D4BD-\\U0001D4C3\\U0001D4C5-"
+                + "\\U0001D505\\U0001D507-\\U0001D50A\\U0001D50D-\\U0001D514\\U0001"
+                + "D516-\\U0001D51C\\U0001D51E-\\U0001D539\\U0001D53B-\\U0001D53E"
+                + "\\U0001D540-\\U0001D544\\U0001D546\\U0001D54A-\\U0001D550\\U0001"
+                + "D552-\\U0001D6A5\\U0001D6A8-\\U0001D7CB\\U0001D7CE-\\U0001D7FF"
+                + "\\U0002F800-\\U0002FA1D]", false);
+   
+        return skipSets;
+    }
+
+    public void TestSkippable() {
+       UnicodeSet starts;
+       UnicodeSet[] skipSets = new UnicodeSet[]{
+                                                    new UnicodeSet(), //NFD
+                                                    new UnicodeSet(), //NFC
+                                                    new UnicodeSet(), //NFKC
+                                                    new UnicodeSet(), //NFKD
+                                                    new UnicodeSet(), //FCD
+                                                    new UnicodeSet(), //NONE
+                                               };
+       UnicodeSet[] expectSets = new UnicodeSet[]{
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                                    new UnicodeSet(),
+                                               };
+       StringBuffer s, pattern;
+       int start, limit, rangeEnd;
+       int i, range, count;
+       starts = new UnicodeSet();
+       /*
+       //[\u0350-\u0357\u035D-\u035F\u0610-\u0615\u0656-\u0658\u0CBC\u17DD\u1939-\u193B]
+       for(int ch=0;ch<=0x10FFFF;ch++){
+               if(Normalizer.isNFSkippable(ch, Normalizer.NFD)) {
+                   skipSets[D].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.NFKD)) {
+                   skipSets[KD].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.NFC)) {
+                   skipSets[C].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.NFKC)) {
+                   skipSets[KC].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.FCD)) {
+                   skipSets[FCD].add(ch);
+               }
+               if(Normalizer.isNFSkippable(ch, Normalizer.NONE)) {
+                   skipSets[NONE].add(ch);
+               }
+       }
+       */
+       // build NF*Skippable sets from runtime data 
+       NormalizerImpl.addPropertyStarts(starts);
+       count=starts.getRangeCount();
+   
+       start=limit=0;
+       rangeEnd=0;
+       range=0;
+       for(;;) {
+           if(start<limit) {
+               // get properties for start and apply them to [start..limit[ 
+               if(Normalizer.isNFSkippable(start, Normalizer.NFD)) {
+                   skipSets[D].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.NFKD)) {
+                   skipSets[KD].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.NFC)) {
+                   skipSets[C].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.NFKC)) {
+                   skipSets[KC].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.FCD)) {
+                   skipSets[FCD].add(start, limit-1);
+               }
+               if(Normalizer.isNFSkippable(start, Normalizer.NONE)) {
+                   skipSets[NONE].add(start, limit-1);
+               }
+               
+           }
+   
+           // go to next range of same properties 
+           start=limit;
+           if(++limit>rangeEnd) {
+               if(range<count) {
+                   limit=starts.getRangeStart(range);
+                   rangeEnd=starts.getRangeEnd(range);
+                   ++range;
+               } else if(range==count) {
+                   // additional range to complete the Unicode code space 
+                   limit=rangeEnd=0x110000;
+                   ++range;
+               } else {
+                   break;
+               }
+           }
+       }
+   
+       expectSets = initSkippables(expectSets);
+       if(expectSets[D].contains(0x0350)){
+            errln("expectSets[D] contains 0x0350");
+       }
+       //expectSets.length for now do not test FCD and NONE since there is no data
+       for(i=0; i< 4; ++i) {
+
+           if(!skipSets[i].equals(expectSets[i])) {
+               errln("error: TestSkippable skipSets["+i+"]!=expectedSets["+i+"]\n"+
+                     "May need to update hardcoded UnicodeSet patterns in com.ibm.icu.dev.test.normalizer.BasicTest.java\n"+
+                     "See ICU4J - unicodetools.com.ibm.text.UCD.NFSkippable\n" +
+                     "Run com.ibm.text.UCD.Main with the option NFSkippable.");
+   
+               s=new StringBuffer();
+               
+               s.append("\n\nskip=       ");
+               s.append(skipSets[i].toPattern(true));
+               s.append("\n\n");
+               
+               s.append("skip-expect=");             
+               pattern = new StringBuffer(((UnicodeSet)skipSets[i].clone()).removeAll(expectSets[i]).toPattern(true));
+               s.append(pattern);
+   
+               pattern.delete(0,pattern.length());
+               s.append("\n\nexpect-skip=");
+               pattern = new StringBuffer(((UnicodeSet)expectSets[i].clone()).removeAll(skipSets[i]).toPattern(true));
+               s.append(pattern);
+               s.append("\n\n");
+               
+               pattern.delete(0,pattern.length());
+               s.append("\n\nintersection(expect,skip)=");
+               UnicodeSet intersection  = ((UnicodeSet) expectSets[i].clone()).retainAll(skipSets[i]);
+               pattern = new StringBuffer(intersection.toPattern(true));
+               s.append(pattern);
+               s.append("\n\n");
+               
+
+               
+               errln(s.toString());
+           }
+       }
+     }
+     
+     public void TestBugJ2068(){
+        String sample = "The quick brown fox jumped over the lazy dog";
+        UCharacterIterator text = UCharacterIterator.getInstance(sample);
+        Normalizer norm = new Normalizer(text,Normalizer.NFC,0);
+        text.setIndex(4);
+        if(text.current() == norm.current()){
+            errln("Normalizer is not cloning the UCharacterIterator");
+        }
+     }   
+     public void TestGetCombiningClass(){
+        for(int i=0;i<0x10FFFF;i++){
+            int cc = UCharacter.getCombiningClass(i);
+            if(0xD800<= i && i<=0xDFFF && cc >0 ){
+                cc = UCharacter.getCombiningClass(i);
+                errln("CC: "+ cc + " for codepoint: " +Utility.hex(i,8));
+            } 
+        }
+    }  
+    
+    public void TestGetNX(){
+        UnicodeSet set = NormalizerImpl.getNX(1 /*NormalizerImpl.NX_HANGUL*/);
+        if(!set.contains(0xac01)){
+            errln("getNX did not return correct set for NX_HANGUL");
+        }
+        
+        set = NormalizerImpl.getNX(2/*NormalizerImpl.NX_CJK_COMPAT*/);
+        if(!set.contains('\uFA20')){
+            errln("getNX did not return correct set for NX_CJK_COMPAT");
+        }
+    }
+    public void TestSerializedSet(){
+        USerializedSet sset=new USerializedSet();
+        UnicodeSet set = new UnicodeSet();
+        int start, end;
+    
+        // collect all sets into one for contiguous output
+        int[] startEnd = new int[2];
+
+        if(NormalizerImpl.getCanonStartSet(0x0130, sset)) {
+            int count=sset.countRanges();
+            for(int j=0; j<count; ++j) {
+                sset.getRange(j, startEnd);
+                set.add(startEnd[0], startEnd[1]);
+            }
+        }
+       
+
+        // test all of these precomposed characters
+        UnicodeSetIterator it = new UnicodeSetIterator(set);
+        while(it.nextRange() && it.codepoint!=UnicodeSetIterator.IS_STRING) {
+            start=it.codepoint;
+            end=it.codepointEnd;
+            while(start<=end) {
+                if(!sset.contains(start)){
+                    errln("USerializedSet.contains failed for "+Utility.hex(start,8));
+                }
+            }
+        }
+    }
+    
+    public void TestReturnFailure(){
+        char[] term = {'r','\u00e9','s','u','m','\u00e9' };
+        char[] decomposed_term = new char[10 + term.length + 2];
+        int rc = Normalizer.decompose(term,0,term.length, decomposed_term,0,decomposed_term.length,true, 0);
+        int rc1 = Normalizer.decompose(term,0,term.length, decomposed_term,10,decomposed_term.length,true, 0); 
+        if(rc!=rc1){
+            errln("Normalizer decompose did not return correct length");
+        }
+    }
+
+    private final static class TestCompositionCase {
+        public Normalizer.Mode mode;
+        public int options;
+        public String input, expect;
+        TestCompositionCase(Normalizer.Mode mode, int options, String input, String expect) {
+            this.mode=mode;
+            this.options=options;
+            this.input=input;
+            this.expect=expect;
+        }
+    }
+
+    public void TestComposition() {
+        final TestCompositionCase cases[]=new TestCompositionCase[]{
+            /*
+             * special cases for UAX #15 bug
+             * see Unicode Public Review Issue #29
+             * at http://www.unicode.org/review/resolved-pri.html#pri29
+             */
+            new TestCompositionCase(Normalizer.NFC, 0, "\u1100\u0300\u1161\u0327",      "\u1100\u0300\u1161\u0327"),
+            new TestCompositionCase(Normalizer.NFC, 0, "\u1100\u0300\u1161\u0327\u11a8","\u1100\u0300\u1161\u0327\u11a8"),
+            new TestCompositionCase(Normalizer.NFC, 0, "\uac00\u0300\u0327\u11a8",      "\uac00\u0327\u0300\u11a8"),
+            new TestCompositionCase(Normalizer.NFC, 0, "\u0b47\u0300\u0b3e",            "\u0b47\u0300\u0b3e"),
+
+            new TestCompositionCase(Normalizer.NFC, NormalizerImpl.BEFORE_PRI_29, "\u1100\u0300\u1161\u0327",       "\uac00\u0300\u0327"),
+            new TestCompositionCase(Normalizer.NFC, NormalizerImpl.BEFORE_PRI_29, "\u1100\u0300\u1161\u0327\u11a8", "\uac01\u0300\u0327"),
+            new TestCompositionCase(Normalizer.NFC, NormalizerImpl.BEFORE_PRI_29, "\uac00\u0300\u0327\u11a8",       "\uac01\u0327\u0300"),
+            new TestCompositionCase(Normalizer.NFC, NormalizerImpl.BEFORE_PRI_29, "\u0b47\u0300\u0b3e",             "\u0b4b\u0300")
+
+            /* TODO: add test cases for UNORM_FCC here (j2151) */
+        };
+
+        String output;
+        int i;
+
+        for(i=0; i<cases.length; ++i) {
+            output=Normalizer.normalize(cases[i].input, cases[i].mode, cases[i].options);
+            if(!output.equals(cases[i].expect)) {
+                errln("unexpected result for case "+i);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java b/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
new file mode 100644
index 0000000..359d199
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
@@ -0,0 +1,517 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+public class ConformanceTest extends TestFmwk {
+
+    Normalizer normalizer;
+
+    public static void main(String[] args) throws Exception {
+        new ConformanceTest().run(args);
+    }
+    
+    public ConformanceTest() {
+        // Doesn't matter what the string and mode are; we'll change
+        // them later as needed.
+        normalizer = new Normalizer("", Normalizer.NFC, 0);
+    }
+    // more interesting conformance test cases, not in the unicode.org NormalizationTest.txt
+    static  String[] moreCases ={
+        // Markus 2001aug30
+        "0061 0332 0308;00E4 0332;0061 0332 0308;00E4 0332;0061 0332 0308; # Markus 0",
+    
+        // Markus 2001oct26 - test edge case for iteration: U+0f73.cc==0 but decomposition.lead.cc==129
+        "0061 0301 0F73;00E1 0F71 0F72;0061 0F71 0F72 0301;00E1 0F71 0F72;0061 0F71 0F72 0301; # Markus 1"
+    };
+
+    /**
+     * Test the conformance of Normalizer to
+     * http://www.unicode.org/unicode/reports/tr15/conformance/Draft-TestSuite.txt.* http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt
+     * This file must be located at the path specified as TEST_SUITE_FILE.
+     */
+    public void TestConformance() throws Exception{
+        runConformance("unicode/NormalizationTest.txt",0);
+    }
+    public void TestConformance_3_2() throws Exception{
+        runConformance("unicode/NormalizationTest-3.2.0.txt",Normalizer.UNICODE_3_2);
+    }
+    
+    public void runConformance(String fileName, int options) throws Exception{
+        BufferedReader input = null;
+        String line = null;
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        int passCount = 0;
+        int failCount = 0;
+        UnicodeSet other = new UnicodeSet(0, 0x10ffff);
+        int c=0;
+        try {
+            input = TestUtil.getDataReader(fileName);
+            for (int count = 0;;++count) {
+                line = input.readLine();
+                if (line == null) {
+                    //read the extra test cases
+                    if(count > moreCases.length) {
+                        count = 0;
+                    } else if(count == moreCases.length) {
+                        // all done
+                        break;
+                    }
+                    line = moreCases[count++];
+                }
+                if (line.length() == 0) continue;
+
+                // Expect 5 columns of this format:
+                // 1E0C;1E0C;0044 0323;1E0C;0044 0323; # <comments>
+
+                // Skip comments
+                if (line.charAt(0) == '#'  || line.charAt(0)=='@') continue;
+
+                // Parse out the fields
+                hexsplit(line, ';', fields, buf);
+                
+                // Remove a single code point from the "other" UnicodeSet
+                if(fields[0].length()==UTF16.moveCodePointOffset(fields[0],0, 1)) {
+                    c=UTF16.charAt(fields[0],0); 
+                    if(0xac20<=c && c<=0xd73f) {
+                        // not an exhaustive test run: skip most Hangul syllables
+                        if(c==0xac20) {
+                            other.remove(0xac20, 0xd73f);
+                        }
+                        continue;
+                    }
+                    other.remove(c);
+                }
+                if (checkConformance(fields, line,options)) {
+                    ++passCount;
+                } else {
+                    ++failCount;
+                }
+                if ((count % 1000) == 999) {
+                    logln("Line " + (count+1));
+                }
+            }
+        } catch (IOException ex) {
+            if (input != null) {
+                try {
+                    input.close();
+                } catch (Exception ex2) {
+                    System.out.print("");
+                }
+            }
+            ex.printStackTrace();
+            throw new IllegalArgumentException("Couldn't read file "
+              + ex.getClass().getName() + " " + ex.getMessage()
+              + " line = " + line
+              );
+        }
+
+        if (failCount != 0) {
+            errln("Total: " + failCount + " lines failed, " +
+                  passCount + " lines passed");
+        } else {
+            logln("Total: " + passCount + " lines passed");
+        }
+    }
+    
+    /**
+     * Verify the conformance of the given line of the Unicode
+     * normalization (UTR 15) test suite file.  For each line,
+     * there are five columns, corresponding to field[0]..field[4].
+     *
+     * The following invariants must be true for all conformant implementations
+     *  c2 == NFC(c1) == NFC(c2) == NFC(c3)
+     *  c3 == NFD(c1) == NFD(c2) == NFD(c3)
+     *  c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+     *  c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+     *
+     * @param field the 5 columns
+     * @param line the source line from the test suite file
+     * @return true if the test passes
+     */
+    private boolean checkConformance(String[] field, String line, int options) throws Exception{
+        boolean pass = true;
+        StringBuffer buf = new StringBuffer(); // scratch
+        String out,fcd;
+        int i=0;
+        for (i=0; i<5; ++i) {
+            if (i<3) {
+                out = Normalizer.normalize(field[i], Normalizer.NFC, options);
+                pass &= assertEqual("C", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFC, buf, +1,options);
+                pass &= assertEqual("C(+1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFC, buf, -1,options);
+                pass &= assertEqual("C(-1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFC, buf, +1,options);
+                pass &= assertEqual("C(+1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFC, buf, -1,options);
+                pass &= assertEqual("C(-1)", field[i], out, field[1], "c2!=C(c" + (i+1));
+                 
+                out = Normalizer.normalize(field[i], Normalizer.NFD);
+                pass &= assertEqual("D", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFD, buf, +1,options);
+                pass &= assertEqual("D(+1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(field[i], Normalizer.NFD, buf, -1,options);
+                pass &= assertEqual("D(-1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFD, buf, +1,options);
+                pass &= assertEqual("D(+1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFD, buf, -1,options);
+                pass &= assertEqual("D(-1)", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+                cross(field[2] /*NFD String*/, field[1]/*NFC String*/, Normalizer.NFC);
+                cross(field[1] /*NFC String*/, field[2]/*NFD String*/, Normalizer.NFD);
+            }
+            out = Normalizer.normalize(field[i], Normalizer.NFKC,options);
+            pass &= assertEqual("KC", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKC, buf, +1,options);
+            pass &= assertEqual("KD(+1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKC, buf, -1,options);
+            pass &= assertEqual("KD(-1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKC, buf, +1,options);
+            pass &= assertEqual("KD(+1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+            
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKC, buf, -1,options);
+            pass &= assertEqual("KD(-1)", field[i], out, field[3], "c4!=KC(c" + (i+1));
+              
+
+            out = Normalizer.normalize(field[i], Normalizer.NFKD,options);
+            pass &= assertEqual("KD", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKD, buf, +1,options);
+            pass &= assertEqual("KD(+1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(field[i], Normalizer.NFKD, buf, -1,options);
+            pass &= assertEqual("KD(-1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+         
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKD, buf, +1,options);
+            pass &= assertEqual("KD(+1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            out = iterativeNorm(new StringCharacterIterator(field[i]), Normalizer.NFKD, buf, -1,options);
+            pass &= assertEqual("KD(-1)", field[i], out, field[4], "c5!=KD(c" + (i+1));
+            
+            cross(field[4] /*NFKD String*/, field[3]/*NFKC String*/, Normalizer.NFKC);
+            cross(field[3] /*NFKC String*/, field[4]/*NFKD String*/, Normalizer.NFKD);
+  
+        }
+        compare(field[1],field[2]);
+        compare(field[0],field[1]);
+        compare(field[0],field[2]);
+         // test quick checks
+        if(Normalizer.NO == Normalizer.quickCheck(field[1], Normalizer.NFC,options)) {
+            errln("Normalizer error: quickCheck(NFC(s), Normalizer.NFC) is Normalizer.NO");
+            pass = false;
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(field[2], Normalizer.NFD,options)) {
+            errln("Normalizer error: quickCheck(NFD(s), Normalizer.NFD) is Normalizer.NO");
+            pass = false;
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(field[3], Normalizer.NFKC,options)) {
+            errln("Normalizer error: quickCheck(NFKC(s), Normalizer.NFKC) is Normalizer.NO");
+            pass = false;
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(field[4], Normalizer.NFKD,options)) {
+            errln("Normalizer error: quickCheck(NFKD(s), Normalizer.NFKD) is Normalizer.NO");
+            pass = false;
+        }
+    
+        if(!Normalizer.isNormalized(field[1], Normalizer.NFC, options)) {
+            errln("Normalizer error: isNormalized(NFC(s), Normalizer.NFC) is false");
+            pass = false;
+        }
+        if(!field[0].equals(field[1]) && Normalizer.isNormalized(field[0], Normalizer.NFC, options)) {
+            errln("Normalizer error: isNormalized(s, Normalizer.NFC) is TRUE");
+            pass = false;
+        }
+        if(!Normalizer.isNormalized(field[3], Normalizer.NFKC, options)) {
+            errln("Normalizer error: isNormalized(NFKC(s), Normalizer.NFKC) is false");
+            pass = false;
+        }
+        if(!field[0].equals(field[3]) && Normalizer.isNormalized(field[0], Normalizer.NFKC, options)) {
+            errln("Normalizer error: isNormalized(s, Normalizer.NFKC) is TRUE");
+            pass = false;
+        }
+        // test api that takes a char[]
+        if(!Normalizer.isNormalized(field[1].toCharArray(),0,field[1].length(), Normalizer.NFC,options)) {
+            errln("Normalizer error: isNormalized(NFC(s), Normalizer.NFC) is false");
+            pass = false;
+        }
+        // test api that takes a codepoint
+        if(!Normalizer.isNormalized(UTF16.charAt(field[1],0), Normalizer.NFC,options)) {
+            errln("Normalizer error: isNormalized(NFC(s), Normalizer.NFC) is false");
+            pass = false;
+        }
+        // test FCD quick check and "makeFCD"
+        fcd=Normalizer.normalize(field[0], Normalizer.FCD);
+        if(Normalizer.NO == Normalizer.quickCheck(fcd, Normalizer.FCD,options)) {
+            errln("Normalizer error: quickCheck(FCD(s), Normalizer.FCD) is Normalizer.NO");
+            pass = false;
+        }
+        // check FCD return length
+        {
+            char[] fcd2 = new char[ fcd.length() * 2 ];
+            char[] src = field[0].toCharArray();
+            int fcdLen = Normalizer.normalize(src, 0, src.length, fcd2, fcd.length(), fcd2.length,Normalizer.FCD, 0);
+            if(fcdLen != fcd.length()){
+                errln("makeFCD did not return the correct length");
+            }
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(fcd, Normalizer.FCD, options)) {
+            errln("Normalizer error: quickCheck(FCD(s), Normalizer.FCD) is Normalizer.NO");
+            pass = false;
+        }
+        if(Normalizer.NO == Normalizer.quickCheck(field[2], Normalizer.FCD, options)) {
+            errln("Normalizer error: quickCheck(NFD(s), Normalizer.FCD) is Normalizer.NO");
+            pass = false;
+        }
+
+        if(Normalizer.NO == Normalizer.quickCheck(field[4], Normalizer.FCD, options)) {
+            errln("Normalizer error: quickCheck(NFKD(s), Normalizer.FCD) is Normalizer.NO");
+            pass = false;
+        }
+        
+        out = iterativeNorm(new StringCharacterIterator(field[0]), Normalizer.FCD, buf, +1,options);
+        out = iterativeNorm(new StringCharacterIterator(field[0]), Normalizer.FCD, buf, -1,options);
+        
+        out = iterativeNorm(new StringCharacterIterator(field[2]), Normalizer.FCD, buf, +1,options);
+        out = iterativeNorm(new StringCharacterIterator(field[2]), Normalizer.FCD, buf, -1,options);
+        
+        out = iterativeNorm(new StringCharacterIterator(field[4]), Normalizer.FCD, buf, +1,options);
+        out = iterativeNorm(new StringCharacterIterator(field[4]), Normalizer.FCD, buf, -1,options);
+        
+        out=Normalizer.normalize(fcd, Normalizer.NFD);
+        if(!out.equals(field[2])) {
+            errln("Normalizer error: NFD(FCD(s))!=NFD(s)");
+            pass = false;
+        }    
+        if (!pass) {
+            errln("FAIL: " + line);
+        }     
+        if(field[0]!=field[2]) {
+            // two strings that are canonically equivalent must test
+            // equal under a canonical caseless match
+            // see UAX #21 Case Mappings and Jitterbug 2021 and
+            // Unicode Technical Committee meeting consensus 92-C31
+            int rc;
+            if((rc = Normalizer.compare(field[0], field[2], (options<<Normalizer.COMPARE_NORM_OPTIONS_SHIFT)|Normalizer.COMPARE_IGNORE_CASE))!=0){
+               errln("Normalizer.compare(original, NFD, case-insensitive) returned "+rc+" instead of 0 for equal");
+               pass=false;
+            }
+        }
+        
+        return pass;
+    }
+    // two strings that are canonically equivalent must test
+    // equal under a canonical caseless match
+    // see UAX #21 Case Mappings and Jitterbug 2021 and
+    // Unicode Technical Committee meeting consensus 92-C31
+    private void compare(String s1, String s2){
+        if(s1.length()==1 && s2.length()==1){
+            if(Normalizer.compare(UTF16.charAt(s1,0),UTF16.charAt(s2,0),Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(int,int) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }
+        if(s1.length()==1 && s2.length()>1){
+            if(Normalizer.compare(UTF16.charAt(s1,0),s2,Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(int,String) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }
+        if(s1.length()>1 && s2.length()>1){
+            // TODO: Re-enable this tests after UTC fixes UAX 21
+            if(Normalizer.compare(s1.toCharArray(),s2.toCharArray(),Normalizer.COMPARE_IGNORE_CASE)!=0){
+                errln("Normalizer.compare(char[],char[]) failed for s1: "
+                        +Utility.hex(s1) + " s2: " + Utility.hex(s2));
+            }    
+        }    
+    }
+    private void cross(String s1, String s2,Normalizer.Mode mode){
+        String result = Normalizer.normalize(s1,mode);
+        if(!result.equals(s2)){
+            errln("cross test failed s1: " + Utility.hex(s1) + " s2: " 
+                        +Utility.hex(s2));
+        }
+    }
+    /**
+     * Do a normalization using the iterative API in the given direction.
+     * @param buf scratch buffer
+     * @param dir either +1 or -1
+     */
+    private String iterativeNorm(String str, Normalizer.Mode mode,
+                                 StringBuffer buf, int dir ,int options) throws Exception{
+        normalizer.setText(str);
+        normalizer.setMode(mode);
+        buf.setLength(0);
+        normalizer.setOption(-1, false);      // reset all options
+        normalizer.setOption(options, true);  // set desired options
+
+        int ch;
+        if (dir > 0) {
+            for (ch = normalizer.first(); ch != Normalizer.DONE;
+                 ch = normalizer.next()) {
+                buf.append(UTF16.valueOf(ch));
+            }
+        } else {
+            for (ch = normalizer.last(); ch != Normalizer.DONE;
+                 ch = normalizer.previous()) {
+                buf.insert(0, UTF16.valueOf(ch));
+            }
+        }
+        return buf.toString();
+    }
+    
+    /**
+     * Do a normalization using the iterative API in the given direction.
+     * @param str a Java StringCharacterIterator
+     * @param buf scratch buffer
+     * @param dir either +1 or -1
+     */
+    private String iterativeNorm(StringCharacterIterator str, Normalizer.Mode mode,
+                                 StringBuffer buf, int dir,int options) throws Exception{
+        normalizer.setText(str);
+        normalizer.setMode(mode);
+        buf.setLength(0);
+        normalizer.setOption(-1, false);      // reset all options
+        normalizer.setOption(options, true);  // set desired options
+
+        int ch;
+        if (dir > 0) {
+            for (ch = normalizer.first(); ch != Normalizer.DONE;
+                 ch = normalizer.next()) {
+                buf.append(UTF16.valueOf(ch));
+            }
+        } else {
+            for (ch = normalizer.last(); ch != Normalizer.DONE;
+                 ch = normalizer.previous()) {
+                buf.insert(0, UTF16.valueOf(ch));
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * @param op name of normalization form, e.g., "KC"
+     * @param s string being normalized
+     * @param got value received
+     * @param exp expected value
+     * @param msg description of this test
+     * @returns true if got == exp
+     */
+    private boolean assertEqual(String op, String s, String got,
+                                String exp, String msg) {
+        if (exp.equals(got)) {
+            return true;
+        }
+        errln(("      " + msg + ") " + op + "(" + s + ")=" + hex(got) +
+                             ", exp. " + hex(exp)));
+        return false;
+    }
+
+    /**
+     * Split a string into pieces based on the given delimiter
+     * character.  Then, parse the resultant fields from hex into
+     * characters.  That is, "0040 0400;0C00;0899" -> new String[] {
+     * "\u0040\u0400", "\u0C00", "\u0899" }.  The output is assumed to
+     * be of the proper length already, and exactly output.length
+     * fields are parsed.  If there are too few an exception is
+     * thrown.  If there are too many the extras are ignored.
+     *
+     * @param buf scratch buffer
+     */
+    private static void hexsplit(String s, char delimiter,
+                                 String[] output, StringBuffer buf) {
+        int i;
+        int pos = 0;
+        for (i=0; i<output.length; ++i) {
+            int delim = s.indexOf(delimiter, pos);
+            if (delim < 0) {
+                throw new IllegalArgumentException("Missing field in " + s);
+            }
+            // Our field is from pos..delim-1.
+            buf.setLength(0);
+            
+            String toHex = s.substring(pos,delim);
+            pos = delim;
+            int index = 0;
+            int len = toHex.length();
+            while(index< len){
+                if(toHex.charAt(index)==' '){
+                    index++;
+                }else{
+                    int spacePos = toHex.indexOf(' ', index);
+                    if(spacePos==-1){
+                        appendInt(buf,toHex.substring(index,len),s);
+                        spacePos = len;
+                    }else{
+                        appendInt(buf,toHex.substring(index, spacePos),s);
+                    }
+                    index = spacePos+1;
+                }
+            }
+            
+            if (buf.length() < 1) {
+                throw new IllegalArgumentException("Empty field " + i + " in " + s);
+            }
+            output[i] = buf.toString();
+            ++pos; // Skip over delim
+        }
+    }
+    public static void appendInt(StringBuffer buf, String strToHex, String s){
+        int hex = Integer.parseInt(strToHex,16);
+        if (hex < 0 ) {
+            throw new IllegalArgumentException("Out of range hex " +
+                                                hex + " in " + s);
+        }else if (hex > 0xFFFF){
+            buf.append((char)((hex>>10)+0xd7c0)); 
+            buf.append((char)((hex&0x3ff)|0xdc00));
+        }else{
+            buf.append((char) hex);
+        }
+    }
+            
+    // Specific tests for debugging.  These are generally failures
+    // taken from the conformance file, but culled out to make
+    // debugging easier.  These can be eliminated without affecting
+    // coverage.
+
+    public void _hideTestCase6(int options) throws Exception{
+        _testOneLine("0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;",options);
+    }
+
+    public void _testOneLine(String line,int options) throws Exception{
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        // Parse out the fields
+        hexsplit(line, ';', fields, buf);
+        checkConformance(fields, line,options);
+    }
+    
+
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java b/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java
new file mode 100644
index 0000000..71e9a1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java
@@ -0,0 +1,38 @@
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Hashtable;
+
+/**
+ *******************************************************************************
+ * Copyright (C) 1998-2007, International Business Machines Corporation and    *
+ * Unicode, Inc. All Rights Reserved.                                          *
+ *******************************************************************************
+ *
+ * Integer hash table. Uses Java Hashtable for now.
+ * @author Mark Davis
+ */
+ 
+public class IntHashtable {
+//    static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+    
+    public IntHashtable (int defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+    
+    public void put(int key, int value) {
+        if (value == defaultValue) {
+            table.remove(new Integer(key));
+        } else {
+            table.put(new Integer(key), new Integer(value));
+        }
+    }
+    
+    public int get(int key) {
+        Object value = table.get(new Integer(key));
+        if (value == null) return defaultValue;
+        return ((Integer)value).intValue();
+    }
+    
+    private int defaultValue;
+    private Hashtable table = new Hashtable();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java b/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
new file mode 100644
index 0000000..e8eef4c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
@@ -0,0 +1,38 @@
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Hashtable;
+
+/**
+ *******************************************************************************
+ * Copyright (C) 1998-2007, International Business Machines Corporation and    *
+ * Unicode, Inc. All Rights Reserved.                                          *
+ *******************************************************************************
+ *
+ * Integer-String hash table. Uses Java Hashtable for now.
+ * @author Mark Davis
+ */
+ 
+public class IntStringHashtable {
+//    static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+    
+    public IntStringHashtable (String defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+    
+    public void put(int key, String value) {
+        if (value == defaultValue) {
+            table.remove(new Integer(key));
+        } else {
+            table.put(new Integer(key), value);
+        }
+    }
+    
+    public String get(int key) {
+        Object value = table.get(new Integer(key));
+        if (value == null) return defaultValue;
+        return (String)value;
+    }
+    
+    private String defaultValue;
+    private Hashtable table = new Hashtable();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java b/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java
new file mode 100644
index 0000000..35d2b22
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java
@@ -0,0 +1,40 @@
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Hashtable;
+
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * Unicode, Inc. All Rights Reserved.                                          *
+ *******************************************************************************
+ *
+ * Hashtable storing ints addressed by longs. Used
+ * for storing of composition data. Uses Java Hashtable
+ * for now.
+ * @author Vladimir Weinstein
+ */
+public class LongHashtable {
+//    static final String copyright = "Copyright (C) 2002-2003 International Business Machines Corporation and Unicode, Inc.";
+    
+    public LongHashtable (int defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+    
+    public void put(long key, int value) {
+        if (value == defaultValue) {
+            table.remove(new Long(key));
+        } else {
+            table.put(new Long(key), new Integer(value));
+        }
+    }
+    
+    public int get(long key) {
+        Object value = table.get(new Long(key));
+        if (value == null) return defaultValue;
+        return ((Integer)value).intValue();
+    }
+    
+    private int defaultValue;
+    private Hashtable table = new Hashtable();
+
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java b/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java
new file mode 100644
index 0000000..a36bac9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+
+public class NormalizationMonkeyTest extends TestFmwk {
+    int loopCount = 100;
+    int maxCharCount = 20;
+    int maxCodePoint = 0x10ffff;
+    Random random = null; // initialized in getTestSource
+    UnicodeNormalizer unicode_NFD;
+    UnicodeNormalizer unicode_NFC;
+    UnicodeNormalizer unicode_NFKD;
+    UnicodeNormalizer unicode_NFKC;
+    
+    public NormalizationMonkeyTest() {
+    }
+    
+    public static void main(String[] args) throws Exception {
+        new NormalizationMonkeyTest().run(args);
+    }
+    
+    public void TestNormalize() {
+        if (unicode_NFD == null) {
+            try {
+                unicode_NFD = new UnicodeNormalizer(UnicodeNormalizer.D, true);
+                unicode_NFC = new UnicodeNormalizer(UnicodeNormalizer.C, true);
+                unicode_NFKD = new UnicodeNormalizer(UnicodeNormalizer.KD, true);
+                unicode_NFKC = new UnicodeNormalizer(UnicodeNormalizer.KC, true);
+            }
+            catch (Exception e) {
+                String msg = "Normalization tests could not be run: " + e.getMessage();
+                if (isModularBuild()) {
+                    warnln(msg);
+                } else {
+                    errln(msg);
+                }
+            }
+        }
+        int i = 0;
+        while (i < loopCount) {
+            String source = getTestSource();
+            logln("Test source:" + source);
+            //NFD
+            String uncodeNorm = unicode_NFD.normalize(source);
+            String icuNorm = Normalizer.normalize(source, Normalizer.NFD);
+            logln("\tNFD(Unicode): " + uncodeNorm);
+            logln("\tNFD(icu4j)  : " + icuNorm);
+            if (!uncodeNorm.equals(icuNorm)) {
+                errln("NFD: Unicode sample output => " + uncodeNorm + "; icu4j output=> " + icuNorm);
+            }
+            //NFC
+            uncodeNorm = unicode_NFC.normalize(source);
+            icuNorm = Normalizer.normalize(source, Normalizer.NFC);
+            logln("\tNFC(Unicode): " + uncodeNorm);
+            logln("\tNFC(icu4j)  : " + icuNorm);
+            if (!uncodeNorm.equals(icuNorm)) {
+                errln("NFC: Unicode sample output => " + uncodeNorm + "; icu4j output=> " + icuNorm);
+            }
+            //NFKD
+            uncodeNorm = unicode_NFKD.normalize(source);
+            icuNorm = Normalizer.normalize(source, Normalizer.NFKD);
+            logln("\tNFKD(Unicode): " + uncodeNorm);
+            logln("\tNFKD(icu4j)  : " + icuNorm);
+            if (!uncodeNorm.equals(icuNorm)) {
+                errln("NFKD: Unicode sample output => " + uncodeNorm + "; icu4j output=> " + icuNorm);
+            }
+            //NFKC
+            uncodeNorm = unicode_NFKC.normalize(source);
+            icuNorm = Normalizer.normalize(source, Normalizer.NFKC);
+            logln("\tNFKC(Unicode): " + uncodeNorm);
+            logln("\tNFKC(icu4j)  : " + icuNorm);
+            if (!uncodeNorm.equals(icuNorm)) {
+                errln("NFKC: Unicode sample output => " + uncodeNorm + "; icu4j output=> " + icuNorm);
+            }
+            
+            i++;
+        }
+    }
+    
+    String getTestSource() {
+    if (random == null) {
+        random = createRandom(); // use test framework's random seed
+    }
+        String source = "";
+        int i = 0;
+        while (i < (random.nextInt(maxCharCount) + 1)) {
+            int codepoint = random.nextInt(maxCodePoint);
+            //Elimate unassigned characters
+            while (UCharacter.getType(codepoint) == UCharacterCategory.UNASSIGNED) {
+                codepoint = random.nextInt(maxCodePoint);
+            }
+            source = source + UTF16.valueOf(codepoint);
+            i++;
+        }
+        return source;
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java b/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java
new file mode 100644
index 0000000..6308478
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java
@@ -0,0 +1,507 @@
+/**
+ * Builds the normalization tables. This is a separate class so that it
+ * can be unloaded once not needed.<br>
+ * Copyright (C) 1998-2007 International Business Machines Corporation and
+ * Unicode, Inc. All Rights Reserved.<br>
+ * The Unicode Consortium makes no expressed or implied warranty of any
+ * kind, and assumes no liability for errors or omissions.
+ * No liability is assumed for incidental and consequential damages
+ * in connection with or arising out of the use of the information here.
+ * @author Mark Davis
+ * Updates for supplementary code points:
+ * Vladimir Weinstein & Markus Scherer
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import java.io.BufferedReader;
+import java.util.BitSet;
+
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.dev.test.UTF16Util;
+
+class NormalizerBuilder {
+    //private static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+
+    /**
+     * Testing flags
+     */
+
+    private static final boolean DEBUG = false;
+    //private static final boolean GENERATING = false;
+
+    /**
+     * Constants for the data file version to use.
+     */
+    /*static final boolean NEW_VERSION = true;
+    private static final String DIR = "D:\\UnicodeData\\" + (NEW_VERSION ? "WorkingGroups\\" : "");
+
+    static final String UNIDATA_VERSION = NEW_VERSION ? "3.0.0d12" : "2.1.9";
+    static final String EXCLUSIONS_VERSION = NEW_VERSION ? "1d4" : "1";
+
+    public static final String UNICODE_DATA = DIR + "UnicodeData-" + UNIDATA_VERSION + ".txt";
+    public static final String COMPOSITION_EXCLUSIONS = DIR + "CompositionExclusions-" + EXCLUSIONS_VERSION +".txt";
+    */
+
+    /**
+     * Called exactly once by NormalizerData to build the static data
+     */
+
+    static NormalizerData build(boolean fullData) {
+        try {
+            IntHashtable canonicalClass = new IntHashtable(0);
+            IntStringHashtable decompose = new IntStringHashtable(null);
+            LongHashtable compose = new LongHashtable(NormalizerData.NOT_COMPOSITE);
+            BitSet isCompatibility = new BitSet();
+            BitSet isExcluded = new BitSet();
+            if (fullData) {
+                //System.out.println("Building Normalizer Data from file.");
+                readExclusionList(isExcluded);
+                //System.out.println(isExcluded.get(0x00C0));
+                buildDecompositionTables(canonicalClass, decompose, compose,
+                  isCompatibility, isExcluded);
+            } else {    // for use in Applets
+                //System.out.println("Building abridged data.");
+                setMinimalDecomp(canonicalClass, decompose, compose,
+                  isCompatibility, isExcluded);
+            }
+            return new NormalizerData(canonicalClass, decompose, compose,
+                  isCompatibility, isExcluded);
+        } catch (java.io.IOException e) {
+            System.err.println("Can't load data file." + e + ", " + e.getMessage());
+            return null;
+        }
+    }
+
+// =============================================================
+// Building Decomposition Tables
+// =============================================================
+
+    /**
+     * Reads exclusion list and stores the data
+     */
+    private static void readExclusionList(BitSet isExcluded) throws java.io.IOException {
+        if (DEBUG) System.out.println("Reading Exclusions");
+
+        BufferedReader in = TestUtil.getDataReader("unicode/CompositionExclusions.txt");
+
+        while (true) {
+            // read a line, discarding comments and blank lines
+
+            String line = in.readLine();
+            if (line == null) break;
+            int comment = line.indexOf('#');                    // strip comments
+            if (comment != -1) line = line.substring(0,comment);
+            if (line.length() == 0) continue;                   // ignore blanks
+            if(line.indexOf(' ') != -1) {
+                line = line.substring(0, line.indexOf(' '));
+            }
+            // store -1 in the excluded table for each character hit
+
+            int value = Integer.parseInt(line,16);
+            isExcluded.set(value);
+            //System.out.println("Excluding " + hex(value));
+        }
+        in.close();
+        if (DEBUG) System.out.println("Done reading Exclusions");
+    }
+
+    /**
+     * Builds a decomposition table from a UnicodeData file
+     */
+    private static void buildDecompositionTables(
+      IntHashtable canonicalClass, IntStringHashtable decompose,
+      LongHashtable compose, BitSet isCompatibility, BitSet isExcluded)
+      throws java.io.IOException {
+        if (DEBUG) System.out.println("Reading Unicode Character Database");
+        //BufferedReader in = new BufferedReader(new FileReader(UNICODE_DATA), 64*1024);
+        BufferedReader in = null;
+        try {
+            in = TestUtil.getDataReader("unicode/UnicodeData.txt");
+        } catch (Exception e) {
+            System.err.println("Failed to read UnicodeData.txt");
+            System.exit(1);
+        }
+
+        int value;
+        long pair;
+        int counter = 0;
+        while (true) {
+
+            // read a line, discarding comments and blank lines
+
+            String line = in.readLine();
+            if (line == null) break;
+            int comment = line.indexOf('#');                    // strip comments
+            if (comment != -1) line = line.substring(0,comment);
+            if (line.length() == 0) continue;
+            if (DEBUG) {
+                counter++;
+                if ((counter & 0xFF) == 0) System.out.println("At: " + line);
+            }
+
+            // find the values of the particular fields that we need
+            // Sample line: 00C0;LATIN ...A GRAVE;Lu;0;L;0041 0300;;;;N;LATIN ... GRAVE;;;00E0;
+
+            int start = 0;
+            int end = line.indexOf(';'); // code
+            value = Integer.parseInt(line.substring(start,end),16);
+            if (true && value == '\u00c0') {
+                //System.out.println("debug: " + line);
+            }
+            end = line.indexOf(';',start=end+1); // name
+            /*String name = line.substring(start,end);*/
+            end = line.indexOf(';',start=end+1); // general category
+            end = line.indexOf(';',start=end+1); // canonical class
+
+            // check consistency: canonical classes must be from 0 to 255
+
+            int cc = Integer.parseInt(line.substring(start,end));
+            if (cc != (cc & 0xFF)) System.err.println("Bad canonical class at: " + line);
+            canonicalClass.put(value,cc);
+            end = line.indexOf(';',start=end+1); // BIDI
+            end = line.indexOf(';',start=end+1); // decomp
+
+            // decomp requires more processing.
+            // store whether it is canonical or compatibility.
+            // store the decomp in one table, and the reverse mapping (from pairs) in another
+
+            if (start != end) {
+                String segment = line.substring(start, end);
+                boolean compat = segment.charAt(0) == '<';
+                if (compat) isCompatibility.set(value);
+                String decomp = fromHex(segment);
+
+                // a small snippet of code to generate the Applet data
+
+                /*if (GENERATING) {
+                    if (value < 0xFF) {
+                        System.out.println(
+                            "\"\\u" + hex((char)value) + "\", "
+                            + "\"\\u" + hex(decomp, "\\u") + "\", "
+                            + (compat ? "\"K\"," : "\"\",")
+                            + "// " + name);
+                    }
+                }*/
+
+                // check consistency: all canon decomps must be singles or pairs!
+                int decompLen = UTF16Util.countCodePoint(decomp);
+                if (decompLen < 1 || decompLen > 2 && !compat) {
+                    System.err.println("Bad decomp at: " + line);
+                }
+                decompose.put(value, decomp);
+
+                // only compositions are canonical pairs
+                // skip if script exclusion
+
+                if (!compat && !isExcluded.get(value)) {
+                    int first = '\u0000';
+                    int second = UTF16Util.nextCodePoint(decomp, 0);
+                    if (decompLen > 1) {
+                        first = second;
+                        second = UTF16Util.nextCodePoint(decomp,
+                            UTF16Util.codePointLength(first));
+                    }
+
+                    // store composition pair in single integer
+
+                    pair = ((long)first << 32) | second;
+                    if (DEBUG && value == '\u00C0') {
+                        System.out.println("debug2: " + line);
+                    }
+                    compose.put(pair, value);
+                } else if (DEBUG) {
+                    System.out.println("Excluding: " + decomp);
+                }
+            }
+        }
+        in.close();
+        if (DEBUG) System.out.println("Done reading Unicode Character Database");
+
+        // add algorithmic Hangul decompositions
+        // this is more compact if done at runtime, but for simplicity we
+        // do it this way.
+
+        if (DEBUG) System.out.println("Adding Hangul");
+
+        for (int SIndex = 0; SIndex < SCount; ++SIndex) {
+            int TIndex = SIndex % TCount;
+            char first, second;
+            if (TIndex != 0) { // triple
+                first = (char)(SBase + SIndex - TIndex);
+                second = (char)(TBase + TIndex);
+            } else {
+                first = (char)(LBase + SIndex / NCount);
+                second = (char)(VBase + (SIndex % NCount) / TCount);
+            }
+            pair = ((long)first << 32) | second;
+            value = SIndex + SBase;
+            decompose.put(value, String.valueOf(first) + second);
+            compose.put(pair, value);
+        }
+        if (DEBUG) System.out.println("Done adding Hangul");
+    }
+
+    /**
+     * Hangul composition constants
+     */
+    static final int
+        SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7,
+        LCount = 19, VCount = 21, TCount = 28,
+        NCount = VCount * TCount,   // 588
+        SCount = LCount * NCount;   // 11172
+
+    /**
+     * For use in an applet: just load a minimal set of data.
+     */
+    private static void setMinimalDecomp(IntHashtable canonicalClass, IntStringHashtable decompose,
+      LongHashtable compose, BitSet isCompatibility, BitSet isExcluded) {
+        String[] decomposeData = {
+            "\u005E", "\u0020\u0302", "K",
+            "\u005F", "\u0020\u0332", "K",
+            "\u0060", "\u0020\u0300", "K",
+            "\u00A0", "\u0020", "K",
+            "\u00A8", "\u0020\u0308", "K",
+            "\u00AA", "\u0061", "K",
+            "\u00AF", "\u0020\u0304", "K",
+            "\u00B2", "\u0032", "K",
+            "\u00B3", "\u0033", "K",
+            "\u00B4", "\u0020\u0301", "K",
+            "\u00B5", "\u03BC", "K",
+            "\u00B8", "\u0020\u0327", "K",
+            "\u00B9", "\u0031", "K",
+            "\u00BA", "\u006F", "K",
+            "\u00BC", "\u0031\u2044\u0034", "K",
+            "\u00BD", "\u0031\u2044\u0032", "K",
+            "\u00BE", "\u0033\u2044\u0034", "K",
+            "\u00C0", "\u0041\u0300", "",
+            "\u00C1", "\u0041\u0301", "",
+            "\u00C2", "\u0041\u0302", "",
+            "\u00C3", "\u0041\u0303", "",
+            "\u00C4", "\u0041\u0308", "",
+            "\u00C5", "\u0041\u030A", "",
+            "\u00C7", "\u0043\u0327", "",
+            "\u00C8", "\u0045\u0300", "",
+            "\u00C9", "\u0045\u0301", "",
+            "\u00CA", "\u0045\u0302", "",
+            "\u00CB", "\u0045\u0308", "",
+            "\u00CC", "\u0049\u0300", "",
+            "\u00CD", "\u0049\u0301", "",
+            "\u00CE", "\u0049\u0302", "",
+            "\u00CF", "\u0049\u0308", "",
+            "\u00D1", "\u004E\u0303", "",
+            "\u00D2", "\u004F\u0300", "",
+            "\u00D3", "\u004F\u0301", "",
+            "\u00D4", "\u004F\u0302", "",
+            "\u00D5", "\u004F\u0303", "",
+            "\u00D6", "\u004F\u0308", "",
+            "\u00D9", "\u0055\u0300", "",
+            "\u00DA", "\u0055\u0301", "",
+            "\u00DB", "\u0055\u0302", "",
+            "\u00DC", "\u0055\u0308", "",
+            "\u00DD", "\u0059\u0301", "",
+            "\u00E0", "\u0061\u0300", "",
+            "\u00E1", "\u0061\u0301", "",
+            "\u00E2", "\u0061\u0302", "",
+            "\u00E3", "\u0061\u0303", "",
+            "\u00E4", "\u0061\u0308", "",
+            "\u00E5", "\u0061\u030A", "",
+            "\u00E7", "\u0063\u0327", "",
+            "\u00E8", "\u0065\u0300", "",
+            "\u00E9", "\u0065\u0301", "",
+            "\u00EA", "\u0065\u0302", "",
+            "\u00EB", "\u0065\u0308", "",
+            "\u00EC", "\u0069\u0300", "",
+            "\u00ED", "\u0069\u0301", "",
+            "\u00EE", "\u0069\u0302", "",
+            "\u00EF", "\u0069\u0308", "",
+            "\u00F1", "\u006E\u0303", "",
+            "\u00F2", "\u006F\u0300", "",
+            "\u00F3", "\u006F\u0301", "",
+            "\u00F4", "\u006F\u0302", "",
+            "\u00F5", "\u006F\u0303", "",
+            "\u00F6", "\u006F\u0308", "",
+            "\u00F9", "\u0075\u0300", "",
+            "\u00FA", "\u0075\u0301", "",
+            "\u00FB", "\u0075\u0302", "",
+            "\u00FC", "\u0075\u0308", "",
+            "\u00FD", "\u0079\u0301", "",
+// EXTRAS, outside of Latin 1
+            "\u1EA4", "\u00C2\u0301", "",
+            "\u1EA5", "\u00E2\u0301", "",
+            "\u1EA6", "\u00C2\u0300", "",
+            "\u1EA7", "\u00E2\u0300", "",
+        };
+
+        int[] classData = {
+            0x0300, 230,
+            0x0301, 230,
+            0x0302, 230,
+            0x0303, 230,
+            0x0304, 230,
+            0x0305, 230,
+            0x0306, 230,
+            0x0307, 230,
+            0x0308, 230,
+            0x0309, 230,
+            0x030A, 230,
+            0x030B, 230,
+            0x030C, 230,
+            0x030D, 230,
+            0x030E, 230,
+            0x030F, 230,
+            0x0310, 230,
+            0x0311, 230,
+            0x0312, 230,
+            0x0313, 230,
+            0x0314, 230,
+            0x0315, 232,
+            0x0316, 220,
+            0x0317, 220,
+            0x0318, 220,
+            0x0319, 220,
+            0x031A, 232,
+            0x031B, 216,
+            0x031C, 220,
+            0x031D, 220,
+            0x031E, 220,
+            0x031F, 220,
+            0x0320, 220,
+            0x0321, 202,
+            0x0322, 202,
+            0x0323, 220,
+            0x0324, 220,
+            0x0325, 220,
+            0x0326, 220,
+            0x0327, 202,
+            0x0328, 202,
+            0x0329, 220,
+            0x032A, 220,
+            0x032B, 220,
+            0x032C, 220,
+            0x032D, 220,
+            0x032E, 220,
+            0x032F, 220,
+            0x0330, 220,
+            0x0331, 220,
+            0x0332, 220,
+            0x0333, 220,
+            0x0334, 1,
+            0x0335, 1,
+            0x0336, 1,
+            0x0337, 1,
+            0x0338, 1,
+            0x0339, 220,
+            0x033A, 220,
+            0x033B, 220,
+            0x033C, 220,
+            0x033D, 230,
+            0x033E, 230,
+            0x033F, 230,
+            0x0340, 230,
+            0x0341, 230,
+            0x0342, 230,
+            0x0343, 230,
+            0x0344, 230,
+            0x0345, 240,
+            0x0360, 234,
+            0x0361, 234
+        };
+
+        // build the same tables we would otherwise get from the
+        // Unicode Character Database, just with limited data
+
+        for (int i = 0; i < decomposeData.length; i+=3) {
+            char value = decomposeData[i].charAt(0);
+            String decomp = decomposeData[i+1];
+            boolean compat = decomposeData[i+2].equals("K");
+            if (compat) isCompatibility.set(value);
+            decompose.put(value, decomp);
+            if (!compat) {
+                int first = '\u0000';
+                int second = UTF16Util.nextCodePoint(decomp, 0);
+                if (decomp.length() > 1) {
+                    first = second;
+                    second = UTF16Util.nextCodePoint(decomp,
+                        UTF16Util.codePointLength(first));
+                }
+                long pair = (first << 16) | second;
+                compose.put(pair, value);
+            }
+        }
+
+        for (int i = 0; i < classData.length;) {
+            canonicalClass.put(classData[i++], classData[i++]);
+        }
+    }
+
+    /**
+     * Utility: Parses a sequence of hex Unicode characters separated by spaces
+     */
+    static public String fromHex(String source) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < source.length(); ++i) {
+            char c = source.charAt(i);
+            switch (c) {
+              case ' ': break; // ignore
+              case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7':
+              case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+              case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+                int end = 0;
+                int value = 0;
+                try {
+                    //System.out.println(source.substring(i, i + 4) + "************" + source);
+                    end = source.indexOf(' ',i);
+                    if (end < 0) {
+                        end = source.length();
+                    }
+                    value = Integer.parseInt(source.substring(i, end),16);
+                    UTF16Util.appendCodePoint(result, value);
+                } catch (Exception e) {
+                    System.out.println("i: " + i + ";end:" + end + "source:" + source);
+                    //System.out.println(source.substring(i, i + 4) + "************" + source);
+                    System.exit(1);
+                }
+                //i+= 3; // skip rest of number
+                i = end;
+                break;
+              case '<': int j = source.indexOf('>',i); // skip <...>
+                if (j > 0) {
+                    i = j;
+                    break;
+                } // else fall through--error
+              default:
+                throw new IllegalArgumentException("Bad hex value in " + source);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Utility: Supplies a zero-padded hex representation of an integer (without 0x)
+     */
+    static public String hex(int i) {
+        String result = Long.toString(i & 0xFFFFFFFFL, 16).toUpperCase();
+        return "00000000".substring(result.length(),8) + result;
+    }
+
+    /**
+     * Utility: Supplies a zero-padded hex representation of a Unicode character (without 0x, \\u)
+     */
+    static public String hex(char i) {
+        String result = Integer.toString(i, 16).toUpperCase();
+        return "0000".substring(result.length(),4) + result;
+    }
+
+    /**
+     * Utility: Supplies a zero-padded hex representation of a Unicode character (without 0x, \\u)
+     */
+    public static String hex(String s, String sep) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) result.append(sep);
+            result.append(hex(s.charAt(i)));
+        }
+        return result.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java b/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java
new file mode 100644
index 0000000..c6c54a7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 1998-2007 International Business Machines Corporation and
+ * Unicode, Inc. All Rights Reserved.<br>
+ * The Unicode Consortium makes no expressed or implied warranty of any
+ * kind, and assumes no liability for errors or omissions.
+ * No liability is assumed for incidental and consequential damages
+ * in connection with or arising out of the use of the information here.
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.BitSet;
+
+import com.ibm.icu.dev.test.UTF16Util;
+
+/**
+ * Accesses the Normalization Data used for Forms C and D.<br>
+ * @author Mark Davis
+ * Updates for supplementary code points:
+ * Vladimir Weinstein & Markus Scherer
+ */
+public class NormalizerData {
+//    static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+
+    /**
+    * Constant for use in getPairwiseComposition
+    */
+    public static final int NOT_COMPOSITE = '\uFFFF';
+
+    /**
+    * Gets the combining class of a character from the
+    * Unicode Character Database.
+    * @param   ch      the source character
+    * @return          value from 0 to 255
+    */
+    public int getCanonicalClass(int ch) {
+        return canonicalClass.get(ch);
+    }
+
+    /**
+    * Returns the composite of the two characters. If the two
+    * characters don't combine, returns NOT_COMPOSITE.
+    * @param   first   first character (e.g. 'c')
+    * @param   second  second character (e.g. \u0327 cedilla)
+    * @return          composite (e.g. \u00C7 c cedilla)
+    */
+    public int getPairwiseComposition(int first, int second) {
+        return compose.get(((long)first << 32) | second);
+    }
+
+
+    /**
+    * Gets recursive decomposition of a character from the
+    * Unicode Character Database.
+    * @param   canonical    If true
+    *                  bit is on in this byte, then selects the recursive
+    *                  canonical decomposition, otherwise selects
+    *                  the recursive compatibility and canonical decomposition.
+    * @param   ch      the source character
+    * @param   buffer  buffer to be filled with the decomposition
+    */
+    public void getRecursiveDecomposition(boolean canonical, int ch, StringBuffer buffer) {
+        String decomp = decompose.get(ch);
+        if (decomp != null && !(canonical && isCompatibility.get(ch))) {
+            for (int i = 0; i < decomp.length(); i+=UTF16Util.codePointLength(ch)) {
+                ch = UTF16Util.nextCodePoint(decomp, i);
+                getRecursiveDecomposition(canonical, ch, buffer);
+            }
+        } else {                    // if no decomp, append
+            UTF16Util.appendCodePoint(buffer, ch);
+        }
+    }
+
+    // =================================================
+    //                   PRIVATES
+    // =================================================
+
+    /**
+     * Only accessed by NormalizerBuilder.
+     */
+    NormalizerData(IntHashtable canonicalClass, IntStringHashtable decompose,
+      LongHashtable compose, BitSet isCompatibility, BitSet isExcluded) {
+        this.canonicalClass = canonicalClass;
+        this.decompose = decompose;
+        this.compose = compose;
+        this.isCompatibility = isCompatibility;
+        this.isExcluded = isExcluded;
+    }
+
+    /**
+    * Just accessible for testing.
+    */
+    boolean getExcluded (char ch) {
+        return isExcluded.get(ch);
+    }
+
+    /**
+    * Just accessible for testing.
+    */
+    String getRawDecompositionMapping (char ch) {
+        return decompose.get(ch);
+    }
+
+    /**
+    * For now, just use IntHashtable
+    * Two-stage tables would be used in an optimized implementation.
+    */
+    private IntHashtable canonicalClass;
+
+    /**
+    * The main data table maps chars to a 32-bit int.
+    * It holds either a pair: top = first, bottom = second
+    * or singleton: top = 0, bottom = single.
+    * If there is no decomposition, the value is 0.
+    * Two-stage tables would be used in an optimized implementation.
+    * An optimization could also map chars to a small index, then use that
+    * index in a small array of ints.
+    */
+    private IntStringHashtable decompose;
+
+    /**
+    * Maps from pairs of characters to single.
+    * If there is no decomposition, the value is NOT_COMPOSITE.
+    */
+    private LongHashtable compose;
+
+    /**
+    * Tells whether decomposition is canonical or not.
+    */
+    private BitSet isCompatibility = new BitSet();
+
+    /**
+    * Tells whether character is script-excluded or not.
+    * Used only while building, and for testing.
+    */
+
+    private BitSet isExcluded = new BitSet();
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java b/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java
new file mode 100644
index 0000000..558e677
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.Normalizer;
+
+public class NormalizerRegressionTests extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new NormalizerRegressionTests().run(args);
+    }
+
+    public void TestJB4472() {
+        // submitter's test case
+        String tamil = "\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe";
+        logln("Normalized: " + Normalizer.isNormalized(tamil, Normalizer.NFC, 0));
+
+        // markus's test case
+        // the combining cedilla can't be applied to 'b', so this is in normalized form.
+        // but the isNormalized test identifies the cedilla as a 'maybe' and so tries
+        // to normalize the relevant substring ("b\u0327")and compare the result to the
+        // original.  the original code was passing in the start and length of the
+        // substring (3, 5-3 = 2) but the called code was expecting start and limit.
+        // it subtracted the start again to get what it thought was the length, but
+        // ended up with -1.  the loop was incrementing an index from 0 and testing
+        // against length, but 0 was never == -1 before it walked off the array end.
+
+        // a workaround in lieu of this patch is to catch the exception and always
+        // normalize.
+
+        // this should return true, since the string is normalized (and it should
+        // not throw an exception!)
+        String sample = "aaab\u0327";
+        logln("Normalized: " + Normalizer.isNormalized(sample, Normalizer.NFC, 0));
+
+        // this should return false, since the string is _not_ normalized (and it should
+        // not throw an exception!)
+        String sample2 = "aaac\u0327";
+        logln("Normalized: " + Normalizer.isNormalized(sample2, Normalizer.NFC, 0));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/TestAll.java b/src/com/ibm/icu/dev/test/normalizer/TestAll.java
new file mode 100644
index 0000000..ba236ed
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/TestAll.java
@@ -0,0 +1,32 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run normalizer tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "BasicTest",
+            "ConformanceTest",
+            "TestDeprecatedNormalizerAPI",
+            "TestCanonicalIterator",
+            "NormalizationMonkeyTest",
+            "NormalizerRegressionTests",
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "Normalizer";
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java b/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
new file mode 100644
index 0000000..c135068
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
@@ -0,0 +1,270 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.Set;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.CanonicalIterator;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+
+
+// TODO: fit into test framework
+
+public class TestCanonicalIterator extends TestFmwk {
+    
+    static final boolean SHOW_NAMES = false;
+
+    public static void main(String[] args) throws Exception {
+        new TestCanonicalIterator().run(args);
+    }
+    
+    static final String testArray[][] = {
+        {"\u00C5d\u0307\u0327", "A\u030Ad\u0307\u0327, A\u030Ad\u0327\u0307, A\u030A\u1E0B\u0327, "
+            + "A\u030A\u1E11\u0307, \u00C5d\u0307\u0327, \u00C5d\u0327\u0307, "
+            + "\u00C5\u1E0B\u0327, \u00C5\u1E11\u0307, \u212Bd\u0307\u0327, "
+            + "\u212Bd\u0327\u0307, \u212B\u1E0B\u0327, \u212B\u1E11\u0307"},
+        {"\u010d\u017E", "c\u030Cz\u030C, c\u030C\u017E, \u010Dz\u030C, \u010D\u017E"},
+        {"x\u0307\u0327", "x\u0307\u0327, x\u0327\u0307, \u1E8B\u0327"},
+    };
+    
+     
+    public void TestExhaustive() {
+        int counter = 0;
+        CanonicalIterator it = new CanonicalIterator("");
+        /*
+        CanonicalIterator slowIt = new CanonicalIterator("");
+        slowIt.SKIP_ZEROS = false;
+        */
+        //Transliterator name = Transliterator.getInstance("[^\\u0020-\\u007F] name");
+        //Set itSet = new TreeSet();
+        //Set slowItSet = new TreeSet();
+
+
+        for (int i = 0; i < 0x10FFFF; ++i) {
+
+            // skip characters we know don't have decomps
+            int type = UCharacter.getType(i);
+            if (type == Character.UNASSIGNED || type == Character.PRIVATE_USE
+                || type == Character.SURROGATE) continue;
+
+            if ((++counter % 5000) == 0) logln("Testing " + Utility.hex(i,0));
+
+            String s = UTF16.valueOf(i);
+            characterTest(s, i, it);
+
+            characterTest(s + "\u0345", i, it);
+        }
+    }
+    
+    public int TestSpeed() {
+         // skip unless verbose
+        if (!isVerbose()) return 0;
+
+           String s = "\uAC01\u0345";
+           
+        CanonicalIterator it = new CanonicalIterator(s);
+        double start, end;
+        int x = 0; // just to keep code from optimizing away.
+        int iterations = 10000;
+        double slowDelta = 0;
+        
+        /*
+        CanonicalIterator slowIt = new CanonicalIterator(s);
+        slowIt.SKIP_ZEROS = false;
+
+        start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            slowIt.setSource(s);
+            while (true) {
+                String item = slowIt.next();
+                if (item == null) break;
+                x += item.length();
+            }
+        }
+        end = System.currentTimeMillis();
+        double slowDelta = (end-start) / iterations;
+        logln("Slow iteration: " + slowDelta);
+        */
+
+        start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            it.setSource(s);
+            while (true) {
+                String item = it.next();
+                if (item == null) break;
+                x += item.length();
+            }
+        }
+        end = System.currentTimeMillis();
+        double fastDelta = (end-start) / iterations;
+        logln("Fast iteration: " + fastDelta + (slowDelta != 0 ? ", " + (fastDelta/slowDelta) : ""));
+        
+        
+        return x;
+    }
+    
+    public void TestBasic() {
+//      This is not interesting anymore as the data is already built 
+//      beforehand
+
+//        check build
+//        UnicodeSet ss = CanonicalIterator.getSafeStart();
+//        logln("Safe Start: " + ss.toPattern(true));
+//        ss = CanonicalIterator.getStarts('a');
+//        expectEqual("Characters with 'a' at the start of their decomposition: ", "", CanonicalIterator.getStarts('a'),
+//            new UnicodeSet("[\u00E0-\u00E5\u0101\u0103\u0105\u01CE\u01DF\u01E1\u01FB"
+//            + "\u0201\u0203\u0227\u1E01\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7]")
+//                );
+        
+        // check permute
+        // NOTE: we use a TreeSet below to sort the output, which is not guaranteed to be sorted!
+        
+        Set results = new TreeSet();
+        CanonicalIterator.permute("ABC", false, results);
+        expectEqual("Simple permutation ", "", collectionToString(results), "ABC, ACB, BAC, BCA, CAB, CBA");
+        
+        // try samples
+        SortedSet set = new TreeSet();
+        for (int i = 0; i < testArray.length; ++i) {
+            //logln("Results for: " + name.transliterate(testArray[i]));
+            CanonicalIterator it = new CanonicalIterator(testArray[i][0]);
+           // int counter = 0;
+            set.clear();
+            String first = null;
+            while (true) {
+                String result = it.next();
+                if(first==null){
+                    first = result;
+                }
+                if (result == null) break;
+                set.add(result); // sort them
+                //logln(++counter + ": " + hex.transliterate(result));
+                //logln(" = " + name.transliterate(result));
+            }
+            expectEqual(i + ": ", testArray[i][0], collectionToString(set), testArray[i][1]);
+            it.reset();
+            if(!it.next().equals(first)){
+                errln("CanonicalIterator.reset() failed");
+            }
+            if(!it.getSource().equals(Normalizer.normalize(testArray[i][0],Normalizer.NFD))){
+                errln("CanonicalIterator.getSource() does not return NFD of input source");
+            }
+        }
+    }
+    
+    public void expectEqual(String message, String item, Object a, Object b) {
+        if (!a.equals(b)) {
+            errln("FAIL: " + message + getReadable(item));
+            errln("\t" + getReadable(a));
+            errln("\t" + getReadable(b));
+        } else {
+            logln("Checked: " + message + getReadable(item));
+            logln("\t" + getReadable(a));
+            logln("\t" + getReadable(b));
+        }
+    }
+    
+    //Transliterator name = null;
+    //Transliterator hex = null;
+        
+    public String getReadable(Object obj) {
+        if (obj == null) return "null";
+        String s = obj.toString();
+        if (s.length() == 0) return "";
+        // set up for readable display
+        //if (name == null) name = Transliterator.getInstance("[^\\ -\\u007F] name");
+        //if (hex == null) hex = Transliterator.getInstance("[^\\ -\\u007F] hex");
+        return "[" + (SHOW_NAMES ? hex(s) + "; " : "") + hex(s) + "]";
+    }
+    
+    public void characterTest(String s, int ch, CanonicalIterator it)
+    {
+        int mixedCounter = 0;
+        int lastMixedCounter = -1;
+        boolean gotDecomp = false;
+        boolean gotComp = false;
+        boolean gotSource = false;
+        String decomp = Normalizer.decompose(s, false);
+        String comp = Normalizer.compose(s, false);
+        
+        // skip characters that don't have either decomp.
+        // need quick test for this!
+        if (s.equals(decomp) && s.equals(comp)) return;
+        
+        it.setSource(s);
+
+        while (true) {
+            String item = it.next();
+            if (item == null) break;
+            if (item.equals(s)) gotSource = true;
+            if (item.equals(decomp)) gotDecomp = true;
+            if (item.equals(comp)) gotComp = true;
+            if ((mixedCounter & 0x7F) == 0 && (ch < 0xAD00 || ch > 0xAC00 + 11172)) {
+                if (lastMixedCounter != mixedCounter) {
+                    logln("");
+                    lastMixedCounter = mixedCounter;
+                }
+                logln("\t" + mixedCounter + "\t" + hex(item)
+                + (item.equals(s) ? "\t(*original*)" : "")
+                + (item.equals(decomp) ? "\t(*decomp*)" : "")
+                + (item.equals(comp) ? "\t(*comp*)" : "")
+                );
+            }
+
+        }
+        
+        // check that zeros optimization doesn't mess up.
+        /*
+        if (true) {
+            it.reset();
+            itSet.clear();
+            while (true) {
+                String item = it.next();
+                if (item == null) break;
+                itSet.add(item);
+            }
+            slowIt.setSource(s);
+            slowItSet.clear();
+            while (true) {
+                String item = slowIt.next();
+                if (item == null) break;
+                slowItSet.add(item);
+            }
+            if (!itSet.equals(slowItSet)) {
+                errln("Zero optimization failure with " + getReadable(s));
+            }
+        }
+        */
+        
+        mixedCounter++;
+        if (!gotSource || !gotDecomp || !gotComp) {
+            errln("FAIL CanonicalIterator: " + s + " decomp: " +decomp+" comp: "+comp);
+            it.reset();
+            for(String item=it.next();item!=null;item=it.next()){
+                err(item + "    ");
+            }
+            errln("");   
+        }
+    }
+    
+    static String collectionToString(Collection col) {
+        StringBuffer result = new StringBuffer();
+        Iterator it = col.iterator();
+        while (it.hasNext()) {
+            if (result.length() != 0) result.append(", ");
+            result.append(it.next().toString());
+        }
+        return result.toString();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java b/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
new file mode 100644
index 0000000..f49d711
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
@@ -0,0 +1,176 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.ComposedCharIter;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.StringCharacterIterator;
+
+public class TestDeprecatedNormalizerAPI extends TestFmwk
+{
+     
+    public static void main(String[] args) throws Exception
+    {
+        String[] tempArgs = new String[args.length];
+        int count = 0;
+
+        // Allow the test to be pointed at a specific version of the Unicode database
+        //for (int i = 0; i < args.length; i++)
+        //{
+        //    if (args[i].equals("-data")) {
+        //        tempInfo = new UInfo(args[++i], args[++i]);
+        //    } else {
+        //        tempArgs[count++] = args[i];
+        //    }
+        //}
+
+        args = new String[count];
+        System.arraycopy(tempArgs, 0, args, 0, count);
+
+
+
+        new TestDeprecatedNormalizerAPI().run(args);
+    }
+    
+    public TestDeprecatedNormalizerAPI() {
+    }
+
+    public void TestNormalizerAPI(){
+         // instantiate a Normalizer from a CharacterIterator
+        String s=Utility.unescape("a\u0308\uac00\\U0002f800");
+        // make s a bit longer and more interesting
+        java.text.CharacterIterator iter = new StringCharacterIterator(s+s);
+        //test deprecated constructors
+        Normalizer norm = new Normalizer(iter, Normalizer.NFC,0);
+        if(norm.next()!=0xe4) {
+            errln("error in Normalizer(CharacterIterator).next()");
+        }       
+        Normalizer norm2 = new Normalizer(s,Normalizer.NFC,0);
+        if(norm2.next()!=0xe4) {
+            errln("error in Normalizer(CharacterIterator).next()");
+        }       
+        // test clone(), ==, and hashCode()
+        Normalizer clone=(Normalizer)norm.clone();
+        if(clone.getBeginIndex()!= norm.getBeginIndex()){
+           errln("error in Normalizer.getBeginIndex()");
+        }
+        
+        if(clone.getEndIndex()!= norm.getEndIndex()){
+           errln("error in Normalizer.getEndIndex()");
+        }
+        // test setOption() and getOption()
+        clone.setOption(0xaa0000, true);
+        clone.setOption(0x20000, false);
+        if(clone.getOption(0x880000) ==0|| clone.getOption(0x20000)==1) {
+           errln("error in Normalizer::setOption() or Normalizer::getOption()");
+        }
+        //test deprecated normalize method
+        Normalizer.normalize(s,Normalizer.NFC,0);
+        //test deprecated compose method
+        Normalizer.compose(s,false,0);
+        //test deprecated decompose method
+        Normalizer.decompose(s,false,0);
+
+    }
+
+    /**
+     * Run through all of the characters returned by a composed-char iterator
+     * and make sure that:
+     * <ul>
+     * <li>a) They do indeed have decompositions.
+     * <li>b) The decomposition according to the iterator is the same as
+     *          returned by Normalizer.decompose().
+     * <li>c) All characters <em>not</em> returned by the iterator do not
+     *          have decompositions.
+     * </ul>
+     */
+    public void TestComposedCharIter() {
+        doTestComposedChars(false);
+    }
+
+    public void doTestComposedChars(boolean compat) {
+        int options = Normalizer.IGNORE_HANGUL;
+        ComposedCharIter iter = new ComposedCharIter(compat, options);
+
+        char lastChar = 0;
+
+        while (iter.hasNext()) {
+            char ch = iter.next();
+
+            // Test all characters between the last one and this one to make
+            // sure that they don't have decompositions
+            assertNoDecomp(lastChar, ch, compat, options);
+            lastChar = ch;
+
+            // Now make sure that the decompositions for this character
+            // make sense
+            String chString   = new StringBuffer().append(ch).toString();
+            String iterDecomp = iter.decomposition();
+            String normDecomp = Normalizer.decompose(chString, compat);
+
+            if (iterDecomp.equals(chString)) {
+                errln("ERROR: " + hex(ch) + " has identical decomp");
+            }
+            else if (!iterDecomp.equals(normDecomp)) {
+                errln("ERROR: Normalizer decomp for " + hex(ch) + " (" + hex(normDecomp) + ")"
+                    + " != iter decomp (" + hex(iterDecomp) + ")" );
+            }
+        }
+        assertNoDecomp(lastChar, '\uFFFF', compat, options);
+    }
+
+    void assertNoDecomp(char start, char limit, boolean compat, int options)
+    {
+        for (char x = ++start; x < limit; x++) {
+            String xString   = new StringBuffer().append(x).toString();
+            String decomp = Normalizer.decompose(xString, compat);
+            if (!decomp.equals(xString)) {
+                errln("ERROR: " + hex(x) + " has decomposition (" + hex(decomp) + ")"
+                    + " but was not returned by iterator");
+            }
+        }
+    }
+
+
+    public void TestRoundTrip() {
+        int options = Normalizer.IGNORE_HANGUL;
+        boolean compat = false;
+
+        ComposedCharIter iter = new ComposedCharIter(false, options);
+        while (iter.hasNext()) {
+            char ch = iter.next();
+
+            String chStr = new StringBuffer().append(ch).toString();
+            String decomp = Normalizer.decompose(chStr, compat);
+            String comp = Normalizer.compose(decomp, compat);
+
+            if (NormalizerImpl.isFullCompositionExclusion(ch)) {
+                logln("Skipped excluded char " + hex(ch) + " (" + UCharacter.getName(ch) + ")" );
+                continue;
+            }
+
+            // Avoid disparaged characters
+            if (getDecomposition(ch,compat).length() == 4) continue;
+
+            if (!comp.equals(chStr)) {
+                errln("ERROR: Round trip invalid: " + hex(chStr) + " --> " + hex(decomp)
+                    + " --> " + hex(comp));
+
+                errln("  char decomp is '" + getDecomposition(ch,compat) + "'");
+            }
+        }
+    }
+    private String getDecomposition(char ch, boolean compat){
+        char[] dest = new char[10];   
+        int length = NormalizerImpl.getDecomposition(ch,compat,dest,0,dest.length);   
+        return new String(dest,0,length);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java b/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java
new file mode 100644
index 0000000..ed9d722
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 1998-2007 International Business Machines Corporation and
+ * Unicode, Inc. All Rights Reserved.<br>
+ * The Unicode Consortium makes no expressed or implied warranty of any
+ * kind, and assumes no liability for errors or omissions.
+ * No liability is assumed for incidental and consequential damages
+ * in connection with or arising out of the use of the information here.
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import com.ibm.icu.dev.test.UTF16Util;
+
+/**
+ * Implements Unicode Normalization Forms C, D, KC, KD.<br>
+ * See UTR#15 for details.<br>
+ * @author Mark Davis
+ * Updates for supplementary code points:
+ * Vladimir Weinstein & Markus Scherer
+ */
+public class UnicodeNormalizer {
+//    static final String copyright = "Copyright (C) 1998-2003 International Business Machines Corporation and Unicode, Inc.";
+
+    /**
+     * Create a normalizer for a given form.
+     */
+    public UnicodeNormalizer(byte form, boolean fullData) {
+        this.form = form;
+        if (data == null) data = NormalizerBuilder.build(fullData); // load 1st time
+    }
+
+    /**
+    * Masks for the form selector
+    */
+    static final byte
+        COMPATIBILITY_MASK = 1,
+        COMPOSITION_MASK = 2;
+
+    /**
+    * Normalization Form Selector
+    */
+    public static final byte
+        D = 0 ,
+        C = COMPOSITION_MASK,
+        KD = COMPATIBILITY_MASK,
+        KC = (byte)(COMPATIBILITY_MASK + COMPOSITION_MASK);
+
+    /**
+    * Normalizes text according to the chosen form,
+    * replacing contents of the target buffer.
+    * @param   source      the original text, unnormalized
+    * @param   target      the resulting normalized text
+    */
+    public StringBuffer normalize(String source, StringBuffer target) {
+
+        // First decompose the source into target,
+        // then compose if the form requires.
+
+        if (source.length() != 0) {
+            internalDecompose(source, target);
+            if ((form & COMPOSITION_MASK) != 0) {
+                internalCompose(target);
+            }
+        }
+        return target;
+    }
+
+    /**
+    * Normalizes text according to the chosen form
+    * @param   source      the original text, unnormalized
+    * @return  target      the resulting normalized text
+    */
+    public String normalize(String source) {
+        return normalize(source, new StringBuffer()).toString();
+    }
+
+    // ======================================
+    //                  PRIVATES
+    // ======================================
+
+    /**
+     * The current form.
+     */
+    private byte form;
+
+    /**
+    * Decomposes text, either canonical or compatibility,
+    * replacing contents of the target buffer.
+    * @param   form        the normalization form. If COMPATIBILITY_MASK
+    *                      bit is on in this byte, then selects the recursive
+    *                      compatibility decomposition, otherwise selects
+    *                      the recursive canonical decomposition.
+    * @param   source      the original text, unnormalized
+    * @param   target      the resulting normalized text
+    */
+    private void internalDecompose(String source, StringBuffer target) {
+        StringBuffer buffer = new StringBuffer();
+        boolean canonical = (form & COMPATIBILITY_MASK) == 0;
+        int ch;
+        for (int i = 0; i < source.length();) {
+            buffer.setLength(0);
+            ch = UTF16Util.nextCodePoint(source, i);
+            i+=UTF16Util.codePointLength(ch);
+            data.getRecursiveDecomposition(canonical, ch, buffer);
+
+            // add all of the characters in the decomposition.
+            // (may be just the original character, if there was
+            // no decomposition mapping)
+
+            for (int j = 0; j < buffer.length();) {
+                ch = UTF16Util.nextCodePoint(buffer, j);
+                j+=UTF16Util.codePointLength(ch);
+                int chClass = data.getCanonicalClass(ch);
+                int k = target.length(); // insertion point
+                if (chClass != 0) {
+
+                    // bubble-sort combining marks as necessary
+
+                    int ch2;
+                    for (; k > 0; k -= UTF16Util.codePointLength(ch2)) {
+                        ch2 = UTF16Util.prevCodePoint(target, k);
+                        if (data.getCanonicalClass(ch2) <= chClass) break;
+                    }
+                }
+                UTF16Util.insertCodePoint(target, k, ch);
+            }
+        }
+    }
+
+    /**
+    * Composes text in place. Target must already
+    * have been decomposed.
+    * @param   target      input: decomposed text.
+    *                      output: the resulting normalized text.
+    */
+    private void internalCompose(StringBuffer target) {
+
+        int starterPos = 0;
+        int starterCh = UTF16Util.nextCodePoint(target,0);
+        int compPos = UTF16Util.codePointLength(starterCh);
+        int lastClass = data.getCanonicalClass(starterCh);
+        if (lastClass != 0) lastClass = 256; // fix for irregular combining sequence
+
+        // Loop on the decomposed characters, combining where possible
+
+        for (int decompPos = UTF16Util.codePointLength(starterCh); decompPos < target.length(); ) {
+            int ch = UTF16Util.nextCodePoint(target, decompPos);
+            decompPos += UTF16Util.codePointLength(ch);
+            int chClass = data.getCanonicalClass(ch);
+            int composite = data.getPairwiseComposition(starterCh, ch);
+            if (composite != NormalizerData.NOT_COMPOSITE
+            && (lastClass < chClass || lastClass == 0)) {
+                UTF16Util.setCodePointAt(target, starterPos, composite);
+                starterCh = composite;
+            } else {
+                if (chClass == 0) {
+                    starterPos = compPos;
+                    starterCh  = ch;
+                }
+                lastClass = chClass;
+                decompPos += UTF16Util.setCodePointAt(target, compPos, ch);
+                compPos += UTF16Util.codePointLength(ch);
+            }
+        }
+        target.setLength(compPos);
+    }
+
+    /**
+    * Contains normalization data from the Unicode Character Database.
+    * use false for the minimal set, true for the real set.
+    */
+    private static NormalizerData data = null;
+
+    /**
+    * Just accessible for testing.
+    */
+    boolean getExcluded (char ch) {
+        return data.getExcluded(ch);
+    }
+
+    /**
+    * Just accessible for testing.
+    */
+    String getRawDecompositionMapping (char ch) {
+        return data.getRawDecompositionMapping(ch);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java b/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
new file mode 100644
index 0000000..6605e93
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
@@ -0,0 +1,270 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.normalizer;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+
+public class UnicodeNormalizerConformanceTest extends TestFmwk {
+
+    UnicodeNormalizer normalizer_C, normalizer_D, normalizer_KC, normalizer_KD;
+
+    public static void main(String[] args) throws Exception {
+        new UnicodeNormalizerConformanceTest().run(args);
+    }
+    
+    public UnicodeNormalizerConformanceTest() {
+        // Doesn't matter what the string and mode are; we'll change
+        // them later as needed.
+        normalizer_C = new UnicodeNormalizer(UnicodeNormalizer.C, true);
+        normalizer_D = new UnicodeNormalizer(UnicodeNormalizer.D, false);
+        normalizer_KC = new UnicodeNormalizer(UnicodeNormalizer.KC, false);
+        normalizer_KD = new UnicodeNormalizer(UnicodeNormalizer.KD, false);
+        
+    }
+    // more interesting conformance test cases, not in the unicode.org NormalizationTest.txt
+    static  String[] moreCases ={
+        // Markus 2001aug30
+        "0061 0332 0308;00E4 0332;0061 0332 0308;00E4 0332;0061 0332 0308; # Markus 0",
+    
+        // Markus 2001oct26 - test edge case for iteration: U+0f73.cc==0 but decomposition.lead.cc==129
+        "0061 0301 0F73;00E1 0F71 0F72;0061 0F71 0F72 0301;00E1 0F71 0F72;0061 0F71 0F72 0301; # Markus 1"
+    };
+
+    /**
+     * Test the conformance of NewNormalizer to
+     * http://www.unicode.org/unicode/reports/tr15/conformance/Draft-TestSuite.txt.
+     * This file must be located at the path specified as TEST_SUITE_FILE.
+     */
+    public void TestConformance() throws Exception{
+        BufferedReader input = null;
+        String line = null;
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        int passCount = 0;
+        int failCount = 0;
+        UnicodeSet other = new UnicodeSet(0, 0x10ffff);
+        int c=0;
+        try {
+            input = TestUtil.getDataReader("unicode/NormalizationTest.txt");
+            for (int count = 0;;++count) {
+                line = input.readLine();
+                if (line == null) {
+                    //read the extra test cases
+                    if(count > moreCases.length) {
+                        count = 0;
+                    } else if(count == moreCases.length) {
+                        // all done
+                        break;
+                    }
+                    line = moreCases[count++];
+                }
+                if (line.length() == 0) continue;
+
+                // Expect 5 columns of this format:
+                // 1E0C;1E0C;0044 0323;1E0C;0044 0323; # <comments>
+
+                // Skip comments
+                if (line.charAt(0) == '#'  || line.charAt(0)=='@') continue;
+
+                // Parse out the fields
+                hexsplit(line, ';', fields, buf);
+                
+                // Remove a single code point from the "other" UnicodeSet
+                if(fields[0].length()==UTF16.moveCodePointOffset(fields[0],0, 1)) {
+                    c=UTF16.charAt(fields[0],0); 
+                    if(0xac20<=c && c<=0xd73f) {
+                        // not an exhaustive test run: skip most Hangul syllables
+                        if(c==0xac20) {
+                            other.remove(0xac20, 0xd73f);
+                        }
+                        continue;
+                    }
+                    other.remove(c);
+                }
+                if (checkConformance(fields, line)) {
+                    ++passCount;
+                } else {
+                    ++failCount;
+                }
+                if ((count % 1000) == 999) {
+                    logln("Line " + (count+1));
+                }
+            }
+        } catch (IOException ex) {
+            if (input != null) {
+                try {
+                    input.close();
+                } catch (Exception ex2) {
+                    System.out.print("");
+                }
+            }
+            ex.printStackTrace();
+            throw new IllegalArgumentException("Couldn't read file "
+              + ex.getClass().getName() + " " + ex.getMessage()
+              + " line = " + line
+              );
+        }
+
+        if (failCount != 0) {
+            errln("Total: " + failCount + " lines failed, " +
+                  passCount + " lines passed");
+        } else {
+            logln("Total: " + passCount + " lines passed");
+        }
+    }
+    
+    /**
+     * Verify the conformance of the given line of the Unicode
+     * normalization (UTR 15) test suite file.  For each line,
+     * there are five columns, corresponding to field[0]..field[4].
+     *
+     * The following invariants must be true for all conformant implementations
+     *  c2 == NFC(c1) == NFC(c2) == NFC(c3)
+     *  c3 == NFD(c1) == NFD(c2) == NFD(c3)
+     *  c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
+     *  c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
+     *
+     * @param field the 5 columns
+     * @param line the source line from the test suite file
+     * @return true if the test passes
+     */
+    private boolean checkConformance(String[] field, String line) throws Exception{
+        boolean pass = true;
+       // StringBuffer buf = new StringBuffer(); // scratch
+        String out;
+        int i=0;
+        for (i=0; i<5; ++i) {
+            if (i<3) {
+                out = normalizer_C.normalize(field[i]);
+                pass &= assertEqual("C", field[i], out, field[1], "c2!=C(c" + (i+1));
+                 
+                out = normalizer_D.normalize(field[i]);
+                pass &= assertEqual("D", field[i], out, field[2], "c3!=D(c" + (i+1));
+                
+            }
+            out = normalizer_KC.normalize(field[i]);
+            pass &= assertEqual("KC", field[i], out, field[3], "c4!=KC(c" + (i+1));
+
+            out = normalizer_KD.normalize(field[i]);
+            pass &= assertEqual("KD", field[i], out, field[4], "c5!=KD(c" + (i+1));
+              
+        }
+        
+        if (!pass) {
+            errln("FAIL: " + line);
+        }     
+       
+        return pass;
+    }
+    
+    /**
+     * @param op name of normalization form, e.g., "KC"
+     * @param s string being normalized
+     * @param got value received
+     * @param exp expected value
+     * @param msg description of this test
+     * @returns true if got == exp
+     */
+    private boolean assertEqual(String op, String s, String got,
+                                String exp, String msg) {
+        if (exp.equals(got)) {
+            return true;
+        }
+        errln(("      " + msg + ") " + op + "(" + s + ")=" + hex(got) +
+                             ", exp. " + hex(exp)));
+        return false;
+    }
+
+    /**
+     * Split a string into pieces based on the given delimiter
+     * character.  Then, parse the resultant fields from hex into
+     * characters.  That is, "0040 0400;0C00;0899" -> new String[] {
+     * "\u0040\u0400", "\u0C00", "\u0899" }.  The output is assumed to
+     * be of the proper length already, and exactly output.length
+     * fields are parsed.  If there are too few an exception is
+     * thrown.  If there are too many the extras are ignored.
+     *
+     * @param buf scratch buffer
+     */
+    private static void hexsplit(String s, char delimiter,
+                                 String[] output, StringBuffer buf) {
+        int i;
+        int pos = 0;
+        for (i=0; i<output.length; ++i) {
+            int delim = s.indexOf(delimiter, pos);
+            if (delim < 0) {
+                throw new IllegalArgumentException("Missing field in " + s);
+            }
+            // Our field is from pos..delim-1.
+            buf.setLength(0);
+            
+            String toHex = s.substring(pos,delim);
+            pos = delim;
+            int index = 0;
+            int len = toHex.length();
+            while(index< len){
+                if(toHex.charAt(index)==' '){
+                    index++;
+                }else{
+                    int spacePos = toHex.indexOf(' ', index);
+                    if(spacePos==-1){
+                        appendInt(buf,toHex.substring(index,len),s);
+                        spacePos = len;
+                    }else{
+                        appendInt(buf,toHex.substring(index, spacePos),s);
+                    }
+                    index = spacePos+1;
+                }
+            }
+            
+            if (buf.length() < 1) {
+                throw new IllegalArgumentException("Empty field " + i + " in " + s);
+            }
+            output[i] = buf.toString();
+            ++pos; // Skip over delim
+        }
+    }
+    public static void appendInt(StringBuffer buf, String strToHex, String s){
+        int hex = Integer.parseInt(strToHex,16);
+        if (hex < 0 ) {
+            throw new IllegalArgumentException("Out of range hex " +
+                                                hex + " in " + s);
+        }else if (hex > 0xFFFF){
+            buf.append((char)((hex>>10)+0xd7c0)); 
+            buf.append((char)((hex&0x3ff)|0xdc00));
+        }else{
+            buf.append((char) hex);
+        }
+    }
+            
+    // Specific tests for debugging.  These are generally failures
+    // taken from the conformance file, but culled out to make
+    // debugging easier.  These can be eliminated without affecting
+    // coverage.
+
+    public void _hideTestCase6() throws Exception{
+        _testOneLine("0385;0385;00A8 0301;0020 0308 0301;0020 0308 0301;");
+    }
+
+    public void _testOneLine(String line) throws Exception{
+        String[] fields = new String[5];
+        StringBuffer buf = new StringBuffer();
+        // Parse out the fields
+        hexsplit(line, ';', fields, buf);
+        checkConformance(fields, line);
+    }
+    
+
+}
diff --git a/src/com/ibm/icu/dev/test/normalizer/package.html b/src/com/ibm/icu/dev/test/normalizer/package.html
new file mode 100644
index 0000000..d7a927a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/normalizer/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for Normalizer.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/package.html b/src/com/ibm/icu/dev/test/package.html
new file mode 100644
index 0000000..61370bf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Shared utilities for tests.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java
new file mode 100644
index 0000000..9ae22d1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java
@@ -0,0 +1,194 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2008, International Business Machines           *
+ * Corporation and others.  All Rights Reserved.                      *
+ **********************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.io.FileInputStream;
+import java.util.ArrayList;
+
+public class BreakIteratorPerformanceTest extends PerfTest {
+
+    String fileContents;
+
+    com.ibm.icu.text.BreakIterator iSentenceIter;
+    com.ibm.icu.text.BreakIterator iWordIter;
+    com.ibm.icu.text.BreakIterator iLineIter;
+    com.ibm.icu.text.BreakIterator iCharacterIter;
+    java.text.BreakIterator jSentenceIter;
+    java.text.BreakIterator jWordIter;
+    java.text.BreakIterator jLineIter;
+    java.text.BreakIterator jCharacterIter;
+    String[] iSentences;
+    String[] iWords;
+    String[] iLines;
+    String[] iCharacters;
+    String[] jSentences;
+    String[] jWords;
+    String[] jLines;
+    String[] jCharacters;
+
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorPerformanceTest().run(args);
+    }
+
+    protected void setup(String[] args) {
+        try {
+            // read in the input file, being careful with a possible BOM
+            FileInputStream in = new FileInputStream(fileName);
+            BOMFreeReader reader = new BOMFreeReader(in, encoding);
+            fileContents = new String(readToEOS(reader));
+
+            // // get rid of any characters that may cause differences between ICU4J and Java BreakIterator
+            // // fileContents = fileContents.replaceAll("[\t\f\r\n\\-/ ]+", " ");
+            // String res = "";
+            // StringTokenizer tokenizer = new StringTokenizer(fileContents, "\t\f\r\n-/ ");
+            // while (tokenizer.hasMoreTokens())
+            // res += tokenizer.nextToken() + " ";
+            // fileContents = res.trim();
+
+            // create the break iterators with respect to locale
+            if (locale == null) {
+                iSentenceIter = com.ibm.icu.text.BreakIterator.getSentenceInstance();
+                iWordIter = com.ibm.icu.text.BreakIterator.getWordInstance();
+                iLineIter = com.ibm.icu.text.BreakIterator.getLineInstance();
+                iCharacterIter = com.ibm.icu.text.BreakIterator.getCharacterInstance();
+
+                jSentenceIter = java.text.BreakIterator.getSentenceInstance();
+                jWordIter = java.text.BreakIterator.getWordInstance();
+                jLineIter = java.text.BreakIterator.getLineInstance();
+                jCharacterIter = java.text.BreakIterator.getCharacterInstance();
+            } else {
+                iSentenceIter = com.ibm.icu.text.BreakIterator.getSentenceInstance(locale);
+                iWordIter = com.ibm.icu.text.BreakIterator.getWordInstance(locale);
+                iLineIter = com.ibm.icu.text.BreakIterator.getLineInstance(locale);
+                iCharacterIter = com.ibm.icu.text.BreakIterator.getCharacterInstance(locale);
+
+                jSentenceIter = java.text.BreakIterator.getSentenceInstance(locale);
+                jWordIter = java.text.BreakIterator.getWordInstance(locale);
+                jLineIter = java.text.BreakIterator.getLineInstance(locale);
+                jCharacterIter = java.text.BreakIterator.getCharacterInstance(locale);
+            }
+
+            iSentences = init(iSentenceIter);
+            iWords = init(iWordIter);
+            iLines = init(iLineIter);
+            iCharacters = init(iCharacterIter);
+            jSentences = init(jSentenceIter);
+            jWords = init(jWordIter);
+            jLines = init(jLineIter);
+            jCharacters = init(jCharacterIter);
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            throw new RuntimeException(ex.getMessage());
+        }
+
+        // we created some heavy objects, so lets try to clean up a little before running the tests
+        gc();
+    }
+
+    private String[] init(com.ibm.icu.text.BreakIterator iter) {
+        // set the string to iterate on
+        iter.setText(fileContents);
+
+        // produce a token list
+        ArrayList tokenList = new ArrayList();
+        int start = iter.first();
+        for (int end = iter.next(); end != com.ibm.icu.text.BreakIterator.DONE; start = end, end = iter.next())
+            tokenList.add(fileContents.substring(start, end));
+
+        // return the token list as a string array
+        return (String[]) tokenList.toArray(new String[0]);
+    }
+
+    private String[] init(java.text.BreakIterator iter) {
+        // set the string to iterate on
+        iter.setText(fileContents);
+
+        // produce a token list
+        ArrayList tokenList = new ArrayList();
+        int start = iter.first();
+        for (int end = iter.next(); end != com.ibm.icu.text.BreakIterator.DONE; start = end, end = iter.next())
+            tokenList.add(fileContents.substring(start, end));
+
+        // return the token list as a string array
+        return (String[]) tokenList.toArray(new String[0]);
+    }
+
+    PerfTest.Function createTestICU(final com.ibm.icu.text.BreakIterator iIter, final String[] correct,
+            final String breakType) {
+        return new PerfTest.Function() {
+            public void call() {
+                int k = 0;
+                int start = iIter.first();
+                for (int end = iIter.next(); end != com.ibm.icu.text.BreakIterator.DONE; start = end, end = iIter
+                        .next())
+                    if (!correct[k++].equals(fileContents.substring(start, end)))
+                        throw new RuntimeException("ICU4J BreakIterator gave the wrong answer for " + breakType + " "
+                                + (k - 1) + " during the performance test. Cannot continue the performance test.");
+                if (k != correct.length)
+                    throw new RuntimeException("ICU4J BreakIterator gave the wrong number of " + breakType
+                            + "s during the performance test. Cannot continue the performance test.");
+            }
+
+            public long getOperationsPerIteration() {
+                return fileContents.length();
+            }
+        };
+    }
+
+    PerfTest.Function createTestJava(final java.text.BreakIterator jIter, final String[] correct, final String breakType) {
+        return new PerfTest.Function() {
+            public void call() {
+                int k = 0;
+                int start = jIter.first();
+                for (int end = jIter.next(); end != java.text.BreakIterator.DONE; start = end, end = jIter.next())
+                    if (!correct[k++].equals(fileContents.substring(start, end)))
+                        throw new RuntimeException("Java BreakIterator gave the wrong answer for " + breakType + " "
+                                + (k - 1) + " during the performance test. Cannot continue the performance test.");
+                if (k != correct.length)
+                    throw new RuntimeException("Java BreakIterator gave the wrong number of " + breakType
+                            + "s during the performance test. Cannot continue the performance test.");
+            }
+
+            public long getOperationsPerIteration() {
+                return fileContents.length();
+            }
+        };
+    }
+
+    PerfTest.Function TestICUSentences() {
+        return createTestICU(iSentenceIter, iSentences, "sentence");
+    }
+
+    PerfTest.Function TestICUWords() {
+        return createTestICU(iWordIter, iWords, "word");
+    }
+
+    PerfTest.Function TestICULines() {
+        return createTestICU(iLineIter, iLines, "line");
+    }
+
+    PerfTest.Function TestICUCharacters() {
+        return createTestICU(iCharacterIter, iCharacters, "character");
+    }
+
+    PerfTest.Function TestJavaSentences() {
+        return createTestJava(jSentenceIter, jSentences, "sentence");
+    }
+
+    PerfTest.Function TestJavaWords() {
+        return createTestJava(jWordIter, jWords, "word");
+    }
+
+    PerfTest.Function TestJavaLines() {
+        return createTestJava(jLineIter, jLines, "line");
+    }
+
+    PerfTest.Function TestJavaCharacters() {
+        return createTestJava(jCharacterIter, jCharacters, "character");
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java
new file mode 100644
index 0000000..8c62c7a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java
@@ -0,0 +1,1262 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.perf;
+
+import com.ibm.icu.text.*;
+import java.util.*;
+import java.io.*;
+import com.ibm.icu.impl.LocaleUtility;
+
+public class CollationPerformanceTest {
+    static final String usageString = 
+        "usage:  collperf options...\n"
+        + "-help                      Display this message.\n"
+        + "-file file_name            utf-16 format file of names.\n"
+        + "-locale name               ICU locale to use.  Default is en_US\n"
+        + "-rules file_name           Collation rules file (overrides locale)\n"
+        //+ "-langid 0x1234             Windows Language ID number.  Default to value for -locale option\n"
+        //+ "                              see http://msdn.microsoft.com/library/psdk/winbase/nls_8xo3.htm\n"
+        //+ "-win                       Run test using Windows native services.  (ICU is default)\n"
+        //+ "-unix                      Run test using Unix strxfrm, strcoll services.\n"
+        //+ "-uselen                    Use API with string lengths.  Default is null-terminated strings\n"
+        + "-usekeys                   Run tests using sortkeys rather than strcoll\n"
+        + "-strcmp                    Run tests using u_strcmp rather than strcoll\n"
+        + "-strcmpCPO                 Run tests using u_strcmpCodePointOrder rather than strcoll\n"
+        + "-loop nnnn                 Loopcount for test.  Adjust for reasonable total running time.\n"
+        + "-iloop n                   Inner Loop Count.  Default = 1.  Number of calls to function\n"
+        + "                               under test at each call point.  For measuring test overhead.\n"
+        + "-terse                     Terse numbers-only output.  Intended for use by scripts.\n"
+        + "-french                    French accent ordering\n"
+        + "-frenchoff                 No French accent ordering (for use with French locales.)\n"
+        + "-norm                      Normalizing mode on\n"
+        + "-shifted                   Shifted mode\n"
+        + "-lower                     Lower case first\n"
+        + "-upper                     Upper case first\n"
+        + "-case                      Enable separate case level\n"
+        + "-level n                   Sort level, 1 to 5, for Primary, Secndary, Tertiary, Quaternary, Identical\n"
+        + "-keyhist                   Produce a table sort key size vs. string length\n"
+        + "-binsearch                 Binary Search timing test\n"
+        + "-keygen                    Sort Key Generation timing test\n"
+        + "-qsort                     Quicksort timing test\n"
+        + "-iter                      Iteration Performance Test\n"
+        + "-dump                      Display strings, sort keys and CEs.\n"
+        + "-java                      Run test using java.text.Collator.\n";
+    
+    //enum {FLAG, NUM, STRING} type;
+    static StringBuffer temp_opt_fName      = new StringBuffer("");
+    static StringBuffer temp_opt_locale     = new StringBuffer("en_US");
+    //static StringBuffer temp_opt_langid     = new StringBuffer("0");         // Defaults to value corresponding to opt_locale.
+    static StringBuffer temp_opt_rules      = new StringBuffer("");
+    static StringBuffer temp_opt_help       = new StringBuffer("");
+    static StringBuffer temp_opt_loopCount  = new StringBuffer("1");
+    static StringBuffer temp_opt_iLoopCount = new StringBuffer("1");
+    static StringBuffer temp_opt_terse      = new StringBuffer("false");
+    static StringBuffer temp_opt_qsort      = new StringBuffer("");
+    static StringBuffer temp_opt_binsearch  = new StringBuffer("");
+    static StringBuffer temp_opt_icu        = new StringBuffer("true");
+    //static StringBuffer opt_win        = new StringBuffer("");      // Run with Windows native functions.
+    //static StringBuffer opt_unix       = new StringBuffer("");      // Run with UNIX strcoll, strxfrm functions.
+    //static StringBuffer opt_uselen     = new StringBuffer("");
+    static StringBuffer temp_opt_usekeys    = new StringBuffer("");
+    static StringBuffer temp_opt_strcmp     = new StringBuffer("");
+    static StringBuffer temp_opt_strcmpCPO  = new StringBuffer("");
+    static StringBuffer temp_opt_norm       = new StringBuffer("");
+    static StringBuffer temp_opt_keygen     = new StringBuffer("");
+    static StringBuffer temp_opt_french     = new StringBuffer("");
+    static StringBuffer temp_opt_frenchoff  = new StringBuffer("");
+    static StringBuffer temp_opt_shifted    = new StringBuffer("");
+    static StringBuffer temp_opt_lower      = new StringBuffer("");
+    static StringBuffer temp_opt_upper      = new StringBuffer("");
+    static StringBuffer temp_opt_case       = new StringBuffer("");
+    static StringBuffer temp_opt_level      = new StringBuffer("0");
+    static StringBuffer temp_opt_keyhist    = new StringBuffer("");
+    static StringBuffer temp_opt_itertest   = new StringBuffer("");
+    static StringBuffer temp_opt_dump       = new StringBuffer("");
+    static StringBuffer temp_opt_java       = new StringBuffer("");
+    
+    
+    static String   opt_fName      = "";
+    static String   opt_locale     = "en_US";
+    //static int      opt_langid     = 0;         // Defaults to value corresponding to opt_locale.
+    static String   opt_rules      = "";
+    static boolean  opt_help       = false;
+    static int      opt_loopCount  = 1;
+    static int      opt_iLoopCount = 1;
+    static boolean  opt_terse      = false;
+    static boolean  opt_qsort      = false;
+    static boolean  opt_binsearch  = false;
+    static boolean  opt_icu        = true;
+    //static boolean  opt_win        = false;      // Run with Windows native functions.
+    //static boolean  opt_unix       = false;      // Run with UNIX strcoll, strxfrm functions.
+    //static boolean  opt_uselen     = false;
+    static boolean  opt_usekeys    = false;
+    static boolean  opt_strcmp     = false;
+    static boolean  opt_strcmpCPO  = false;
+    static boolean  opt_norm       = false;
+    static boolean  opt_keygen     = false;
+    static boolean  opt_french     = false;
+    static boolean  opt_frenchoff  = false;
+    static boolean  opt_shifted    = false;
+    static boolean  opt_lower      = false;
+    static boolean  opt_upper      = false;
+    static boolean  opt_case       = false;
+    static int      opt_level      = 0;
+    static boolean  opt_keyhist    = false;
+    static boolean  opt_itertest   = false;
+    static boolean  opt_dump       = false;
+    static boolean  opt_java       = false;
+
+    static OptionSpec[] options = {
+        new OptionSpec("-file", 2, temp_opt_fName),
+        new OptionSpec("-locale", 2, temp_opt_locale),
+        //new OptionSpec("-langid", 1, temp_opt_langid),
+        new OptionSpec("-rules", 2, temp_opt_rules),
+        new OptionSpec("-qsort", 0, temp_opt_qsort),
+        new OptionSpec("-binsearch", 0, temp_opt_binsearch),
+        new OptionSpec("-iter", 0, temp_opt_itertest),
+        //new OptionSpec("-win", 0, temp_opt_win),
+        //new OptionSpec("-unix", 0, temp_opt_unix),
+        //new OptionSpec("-uselen", 0, temp_opt_uselen),
+        new OptionSpec("-usekeys", 0, temp_opt_usekeys),
+        new OptionSpec("-strcmp", 0, temp_opt_strcmp),
+        new OptionSpec("-strcmpCPO", 0, temp_opt_strcmpCPO),
+        new OptionSpec("-norm", 0, temp_opt_norm),
+        new OptionSpec("-french", 0, temp_opt_french),
+        new OptionSpec("-frenchoff", 0, temp_opt_frenchoff),
+        new OptionSpec("-shifted", 0, temp_opt_shifted),
+        new OptionSpec("-lower", 0, temp_opt_lower),
+        new OptionSpec("-upper", 0, temp_opt_upper),
+        new OptionSpec("-case", 0, temp_opt_case),
+        new OptionSpec("-level", 1, temp_opt_level),
+        new OptionSpec("-keyhist", 0, temp_opt_keyhist),
+        new OptionSpec("-keygen", 0, temp_opt_keygen),
+        new OptionSpec("-loop", 1, temp_opt_loopCount),
+        new OptionSpec("-iloop", 1, temp_opt_iLoopCount),
+        new OptionSpec("-terse", 0, temp_opt_terse),
+        new OptionSpec("-dump", 0, temp_opt_dump),
+        new OptionSpec("-help", 0, temp_opt_help),
+        new OptionSpec("-?", 0, temp_opt_help),
+        new OptionSpec("-java", 0, temp_opt_java),
+    };
+    
+    static java.text.Collator javaCol = null;
+    static com.ibm.icu.text.Collator icuCol = null;
+    static NumberFormat nf = null;
+    static NumberFormat percent = null;
+    ArrayList list = null;
+    String[] tests = null;
+    int globalCount = 0;
+    
+    public static void main(String[] args) {
+        CollationPerformanceTest collPerf = new CollationPerformanceTest();
+        if ( !CollationPerformanceTest.processOptions(args) || opt_help || opt_fName.length()==0) {
+            System.out.println(usageString);
+            System.exit(1);
+        }
+        
+        nf = NumberFormat.getInstance();
+        nf.setMaximumFractionDigits(2);
+        percent = NumberFormat.getPercentInstance();
+        
+        collPerf.setOptions();
+        collPerf.readDataLines();
+        
+        if (opt_dump) {
+            collPerf.doDump();
+        }
+        
+        if (opt_qsort) {
+            collPerf.doQSort();
+        }
+        
+        if (opt_binsearch) {
+            collPerf.doBinarySearch();
+        }
+        
+        if (opt_keygen) {
+            collPerf.doKeyGen();
+        }
+        
+        if (opt_keyhist) {
+            collPerf.doKeyHist();
+        }
+        
+        if (opt_itertest) {
+            collPerf.doIterTest();
+        }
+        
+    }
+    
+    //Dump file lines, CEs, Sort Keys if requested
+    void doDump() {
+        for(int i = 0; i < list.size(); i++) {
+            //print the line
+            String line = com.ibm.icu.impl.Utility.escape((String)list.get(i));
+            System.out.println(line);
+            
+            System.out.print("  CEs:  ");
+            CollationElementIterator CEiter = ((com.ibm.icu.text.RuleBasedCollator)icuCol).getCollationElementIterator(line);
+            int ce;
+            int j = 0;
+            for(;;) {
+                ce = CEiter.next();
+                if (ce == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+                //System.out.print();
+                String outStr = Integer.toHexString(ce); 
+                for (int len = 0; len < 8 - outStr.length(); len++) {
+                    outStr ='0' + outStr;
+                }
+                System.out.print(outStr + "  ");
+                if(++j >8) {
+                    System.out.print("\n        ");
+                    j = 0;
+                }
+            }
+                
+            System.out.print("\n   ICU Sort Key: ");
+            CollationKey ck = ((com.ibm.icu.text.RuleBasedCollator)icuCol).getCollationKey(line);
+            byte[] cks = ck.toByteArray();
+            j = 0;
+            for(int k = 0; k < cks.length; k++) {
+                String outStr = Integer.toHexString(cks[k]);
+                switch (outStr.length()) {
+                case 1:     outStr = '0' + outStr;
+                            break;
+                case 8:     outStr = outStr.substring(6);
+                            break; 
+                }
+                System.out.print(outStr);
+                System.out.print("  ");
+                j++;
+                if(j > 0 && j % 20 == 0) {
+                    System.out.print("\n                 ");
+                }
+            }
+            System.out.println("\n");
+        }
+    }
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *   doQSort()    The quick sort timing test.
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doQSort() {
+        callGC();
+        //String[] sortTests = (String[]) tests.clone();
+        //Adjust loop count to compensate for file size. QSort should be nlog(n) 
+        double dLoopCount = opt_loopCount * 3000 / ((Math.log(tests.length) / Math.log(10)* tests.length));
+ 
+        if(opt_usekeys) {
+            dLoopCount *= 5;
+        }
+        
+        int adj_loopCount = (int)dLoopCount;
+        if(adj_loopCount < 1) {
+            adj_loopCount = 1;
+        }
+        
+        globalCount = 0;
+        long startTime = 0;
+        long endTime = 0;
+        if (opt_icu && opt_usekeys) {
+            startTime = System.currentTimeMillis();
+            qSortImpl_icu_usekeys(tests, 0, tests.length -1, icuCol);
+            endTime = System.currentTimeMillis();
+        }
+        if (opt_icu && !opt_usekeys){
+            startTime = System.currentTimeMillis();
+            qSortImpl_nokeys(tests, 0, tests.length -1, icuCol);
+            endTime = System.currentTimeMillis();
+        }
+        if (opt_java && opt_usekeys) {
+            startTime = System.currentTimeMillis();
+            qSortImpl_java_usekeys(tests, 0, tests.length -1, javaCol);
+            endTime = System.currentTimeMillis();
+        }
+        if (opt_java && !opt_usekeys){
+            startTime = System.currentTimeMillis();
+            qSortImpl_nokeys(tests, 0, tests.length -1, javaCol);
+            endTime = System.currentTimeMillis();
+        }
+        long elapsedTime = endTime - startTime;
+        int ns = (int)(1000000 * elapsedTime / (globalCount + 0.0));
+        if (!opt_terse) {
+            System.out.println("qsort:  total # of string compares = " + globalCount);
+            System.out.println("qsort:  time per compare = " + ns);
+        } else {
+            System.out.println(ns);
+        }
+    }
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *    doBinarySearch()    Binary Search timing test.  Each name from the list
+     *                        is looked up in the full sorted list of names.
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doBinarySearch() {
+        callGC();
+        int gCount = 0;
+        int loops = 0;
+        double dLoopCount = opt_loopCount * 3000 / (Math.log(tests.length) / Math.log(10)* tests.length);
+        long startTime = 0;
+        long elapsedTime = 0;
+        
+        if(opt_usekeys) {
+            dLoopCount *= 5;
+        }
+        int adj_loopCount = (int)dLoopCount;
+        if(adj_loopCount < 1) {
+            adj_loopCount = 1;
+        }
+        
+        //int opt2 = 0;
+        
+        for(;;) {   //not really a loop, just allows "break" to work, to simplify 
+                    //inadvertantly running more than one test through here
+            if(opt_strcmp) {
+                int r = 0;
+                startTime = System.currentTimeMillis();
+                for(loops = 0; loops < adj_loopCount; loops++) {
+                    for (int j = 0; j < tests.length; j++) {
+                        int hi = tests.length-1;
+                        int lo = 0;
+                        int guess = -1;
+                        for(;;) {
+                            int newGuess = (hi + lo) / 2;
+                            if(newGuess == guess){
+                                break;
+                            }
+                            guess = newGuess;
+                            r = tests[j].compareTo(tests[guess]);
+                            gCount++;
+                            if(r == 0) {
+                                break;
+                            }
+                            if (r < 0) {
+                                hi = guess;
+                            } else {
+                                lo = guess;
+                            }
+                        }
+                    }
+                }
+                elapsedTime = System.currentTimeMillis() - startTime;
+                break;
+            }
+            
+            if (opt_strcmpCPO) {
+                int r = 0;
+                startTime = System.currentTimeMillis();
+                for(loops = 0; loops < adj_loopCount; loops++) {
+                    for (int j = 0; j < tests.length; j++) {
+                        int hi = tests.length-1;
+                        int lo = 0;
+                        int guess = -1;
+                        for(;;) {
+                            int newGuess = (hi + lo) / 2;
+                            if(newGuess == guess){
+                                break;
+                            }
+                            guess = newGuess;
+                            r = com.ibm.icu.text.Normalizer.compare(tests[j], tests[guess], Normalizer.COMPARE_CODE_POINT_ORDER);
+                            gCount++;
+                            if(r == 0) {
+                                break;
+                            }
+                            if (r < 0) {
+                                hi = guess;
+                            } else {
+                                lo = guess;
+                            }
+                        }
+                    }
+                }
+                elapsedTime = System.currentTimeMillis() - startTime;
+                break;
+            }
+            
+            if (opt_icu) {
+               
+                int r = 0;
+                startTime = System.currentTimeMillis();
+                for (loops = 0; loops < adj_loopCount; loops++) {
+                    for (int j = 0; j < tests.length; j++) {
+                        int hi = tests.length - 1;
+                        int lo = 0;
+                        int guess = -1;
+                        for (;;) {
+                            int newGuess = (hi + lo) / 2;
+                            if (newGuess == guess) {
+                                break;
+                            }
+                            guess = newGuess;
+                            if (opt_usekeys) {
+                                com.ibm.icu.text.CollationKey sortKey1 = icuCol.getCollationKey(tests[j]);
+                                com.ibm.icu.text.CollationKey sortKey2 = icuCol.getCollationKey(tests[guess]);
+                                r = sortKey1.compareTo(sortKey2);
+                                gCount ++;
+                            } else {
+                                r = icuCol.compare(tests[j], tests[guess]);
+                                gCount++;
+                            }
+                            if (r == 0) {
+                                break;
+                            }
+                            if (r < 0) {
+                                hi = guess;
+                            } else {
+                                lo = guess;
+                            }
+                        }
+                    }
+                }
+                elapsedTime = System.currentTimeMillis() - startTime;
+                break;
+            }
+            if (opt_java) {
+               
+                int r = 0;
+                startTime = System.currentTimeMillis();
+                for (loops = 0; loops < adj_loopCount; loops++) {
+                    for (int j = 0; j < tests.length; j++) {
+                        int hi = tests.length - 1;
+                        int lo = 0;
+                        int guess = -1;
+                        for (;;) {
+                            int newGuess = (hi + lo) / 2;
+                            if (newGuess == guess) {
+                                break;
+                            }
+                            guess = newGuess;
+                            if (opt_usekeys) {
+                                java.text.CollationKey sortKey1 = javaCol.getCollationKey(tests[j]);
+                                java.text.CollationKey sortKey2 = javaCol.getCollationKey(tests[guess]);
+                                r = sortKey1.compareTo(sortKey2);
+                                gCount ++;
+                            } else {
+                                r = javaCol.compare(tests[j], tests[guess]);
+                                gCount++;
+                            }
+                            if (r == 0) {
+                                break;
+                            }
+                            if (r < 0) {
+                                hi = guess;
+                            } else {
+                                lo = guess;
+                            }
+                        }
+                    }
+                }
+                elapsedTime = System.currentTimeMillis() - startTime;
+                break;
+            }
+            break; 
+        }
+        int ns = (int)((float)(1000000) * (float)elapsedTime / (float)gCount);
+        if (!opt_terse) {
+            System.out.println("binary search:  total # of string compares = " + gCount);
+            System.out.println("binary search:  compares per loop = " + gCount / loops);
+            System.out.println("binary search:  time per compare = " + ns);
+        } else {
+            System.out.println(ns);
+        }
+    }
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *   doKeyGen()     Key Generation Timing Test
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doKeyGen() {
+        callGC();
+        
+        // Adjust loop count to compensate for file size.   Should be order n
+        double dLoopCount = opt_loopCount * (1000.0 /  (double)list.size());
+        int adj_loopCount = (int)dLoopCount;
+        if (adj_loopCount < 1) adj_loopCount = 1;
+
+        long startTime = 0;
+        long totalKeyLen = 0;
+        long totalChars = 0;
+        if (opt_java) {
+            startTime = System.currentTimeMillis();
+            for (int loops=0; loops<adj_loopCount; loops++) {
+                for (int line=0; line < tests.length; line++) {
+                    for (int iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+                        totalChars += tests[line].length();
+                        byte[] sortKey = javaCol.getCollationKey(tests[line]).toByteArray();
+                        totalKeyLen += sortKey.length;
+                    }
+                }
+            }
+        } else {
+            startTime = System.currentTimeMillis();
+            for (int loops=0; loops<adj_loopCount; loops++) {
+                for (int line=0; line < tests.length; line++) {
+                    for (int iLoop=0; iLoop < opt_iLoopCount; iLoop++) {
+                        totalChars += tests[line].length();
+                        byte[] sortKey = icuCol.getCollationKey(tests[line]).toByteArray();
+                        totalKeyLen += sortKey.length;
+                    }
+                }
+            }
+        }
+        
+        long elapsedTime = System.currentTimeMillis() - startTime;
+        long ns = (long)(1000000 * elapsedTime / (adj_loopCount * tests.length + 0.0));
+        if (!opt_terse) {
+            System.out.println("Sort Key Generation:  total # of keys =" + adj_loopCount * tests.length);
+            System.out.println("Sort Key Generation:  time per key = " + ns + " ns");
+            System.out.println("Key Length / character = " + nf.format(totalKeyLen / (totalChars + 0.0)));
+        }
+        else {
+            System.out.print(ns + ",  ");
+            System.out.println(nf.format(totalKeyLen / (totalChars + 0.0)) + ", ");
+        }
+    }
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *    doKeyHist()       Output a table of data for average sort key size vs. string length.
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doKeyHist() {
+        callGC();
+        int     maxLen = 0;
+
+        // Find the maximum string length
+        for (int i = 0; i < tests.length; i++) {
+            if (tests[i].length() > maxLen) maxLen = tests[i].length();
+        }
+        
+        int[] accumulatedLen  = new int[maxLen + 1];
+        int[] numKeysOfSize   = new int[maxLen + 1];
+        
+        // Fill the arrays...
+        for (int i = 0; i < tests.length; i++) {
+            int len = tests[i].length();
+            accumulatedLen[len] += icuCol.getCollationKey(tests[i]).toByteArray().length;
+            numKeysOfSize[len]  += 1;
+        }
+        
+        // And write out averages
+        System.out.println("String Length,  Avg Key Length,  Avg Key Len per char");
+        for (int i = 1; i <= maxLen; i++) {
+            if (numKeysOfSize[i] > 0) {
+                System.out.println(i + ", " + nf.format(accumulatedLen[i] / (numKeysOfSize[i]+ 0.0)) + ", " 
+                    + nf.format(accumulatedLen[i] / (numKeysOfSize[i] * i + 0.0)));
+            }
+        }
+        
+    }
+    
+    void doForwardIterTest() {
+        callGC();
+        System.out.print("\n\nPerforming forward iteration performance test with ");
+        System.out.println("performance test on strings from file -----------");
+    
+        CollationElementIterator iter = ((RuleBasedCollator)icuCol).getCollationElementIterator("");
+        
+        int gCount = 0;
+        int count = 0;
+        long startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int linecount = 0;
+            while (linecount < tests.length) {
+                String str = tests[linecount];
+                iter.setText(str);
+                while (iter.next() != CollationElementIterator.NULLORDER) {
+                    gCount++;
+                }
+                linecount ++;
+            }
+            count ++;
+        }
+        
+        long elapsedTime = System.currentTimeMillis() - startTime;
+        System.out.println("elapsedTime " + elapsedTime + " ms");
+        
+        // empty loop recalculation
+        count = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) { 
+            int linecount = 0;
+            while (linecount < tests.length) {
+                String str = tests[linecount];
+                iter.setText(str);
+                linecount ++;
+            }
+            count ++;
+        }
+        elapsedTime -= (System.currentTimeMillis() - startTime);
+        System.out.println("elapsedTime " + elapsedTime + " ms");
+
+        int ns = (int)(1000000 * elapsedTime / (gCount + 0.0));
+        System.out.println("Total number of strings compared " + tests.length 
+                            + "in " + opt_loopCount + " loops");
+        System.out.println("Average time per CollationElementIterator.next() nano seconds " + ns);
+        System.out.println("performance test on skipped-5 concatenated strings from file -----------");
+        
+        String totalStr = "";
+        int    strlen = 0;
+        // appending all the strings
+        int linecount = 0;
+        while (linecount < tests.length) {
+            totalStr += tests[linecount];
+            strlen += tests[linecount].length();
+            linecount ++;
+        }
+        System.out.println("Total size of strings " + strlen);
+        
+        gCount = 0;
+        count  = 0;
+        iter = ((RuleBasedCollator)icuCol).getCollationElementIterator(totalStr);
+        strlen -= 5; // any left over characters are not iterated,
+                     // this is to ensure the backwards and forwards iterators
+                     // gets the same position
+        int strindex = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int count5 = 5;
+            strindex = 0;
+            iter.setOffset(strindex);
+            while (true) {
+                if (iter.next() == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+                gCount++;
+                count5 --;
+                if (count5 == 0) {
+                    strindex += 10;
+                    if (strindex > strlen) {
+                        break;
+                    }
+                    iter.setOffset(strindex);
+                    count5 = 5;
+                }
+            }
+            count ++;
+        }
+    
+        elapsedTime = System.currentTimeMillis() - startTime;
+        System.out.println("elapsedTime " + elapsedTime);
+        
+        // empty loop recalculation
+        int tempgCount = 0;
+        count = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int count5 = 5;
+            strindex = 0;
+            iter.setOffset(strindex);
+            while (true) {
+                tempgCount ++;
+                count5 --;
+                if (count5 == 0) {
+                    strindex += 10;
+                    if (strindex > strlen) {
+                        break;
+                    }
+                    iter.setOffset(strindex);
+                    count5 = 5;
+                }
+            }
+            count ++;
+        }
+        elapsedTime -= (System.currentTimeMillis() - startTime);
+        System.out.println("elapsedTime " + elapsedTime);
+    
+        System.out.println("gCount " + gCount);
+        ns = (int)(1000000 * elapsedTime / (gCount + 0.0));
+        System.out.println("Average time per CollationElementIterator.next() nano seconds " + ns);
+    }
+    
+    void doBackwardIterTest() {
+        System.out.print("\n\nPerforming backward iteration performance test with ");
+        System.out.println("performance test on strings from file -----------\n");
+        
+        CollationElementIterator iter = ((RuleBasedCollator)icuCol).getCollationElementIterator("");
+        
+        int gCount = 0;
+        int count = 0;
+        long startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int linecount = 0;
+            while (linecount < tests.length) {
+                String str = tests[linecount];
+                iter.setText(str);
+                while (iter.previous() != CollationElementIterator.NULLORDER) {
+                    gCount++;
+                }
+                linecount ++;
+            }
+            count ++;
+        }
+        long elapsedTime = System.currentTimeMillis() - startTime;
+        System.out.println("elapsedTime " + elapsedTime + " ms");
+        
+        // empty loop recalculation
+        count = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int linecount = 0;
+            while (linecount < tests.length) {
+                String str = tests[linecount];
+                iter.setText(str);
+                linecount ++;
+            }
+            count ++;
+        }
+        elapsedTime -= (System.currentTimeMillis() - startTime);
+        System.out.println("elapsedTime " + elapsedTime + " ms");
+        
+        int ns = (int)(1000000 * elapsedTime / (gCount + 0.0));
+        System.out.println("Total number of strings compared " + tests.length 
+                            + "in " + opt_loopCount + " loops");
+        System.out.println("Average time per CollationElementIterator.previous() nano seconds " + ns);
+        System.out.println("performance test on skipped-5 concatenated strings from file -----------");
+    
+        String totalStr = "";
+        int    strlen = 0;
+        // appending all the strings
+        int linecount = 0;
+        while (linecount < tests.length) {
+            totalStr += tests[linecount];
+            strlen += tests[linecount].length();
+            linecount ++;
+        }
+        System.out.println("Total size of strings " + strlen);
+        
+        gCount = 0;
+        count  = 0;
+    
+        iter = ((RuleBasedCollator)icuCol).getCollationElementIterator(totalStr);
+        int strindex = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int count5 = 5;
+            strindex = 5;
+            iter.setOffset(strindex);
+            while (true) {
+                if (iter.previous() == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+                 gCount ++;
+                 count5 --;
+                 if (count5 == 0) {
+                     strindex += 10;
+                     if (strindex > strlen) {
+                        break;
+                     }
+                     iter.setOffset(strindex);
+                     count5 = 5;
+                 }
+            }
+            count ++;
+        }
+    
+        elapsedTime = System.currentTimeMillis() - startTime;
+        System.out.println("elapsedTime " + elapsedTime);
+        
+        // empty loop recalculation
+        count = 0;
+        int tempgCount = 0;
+        startTime = System.currentTimeMillis();
+        while (count < opt_loopCount) {
+            int count5 = 5;
+            strindex = 5;
+            iter.setOffset(strindex);
+            while (true) {
+                 tempgCount ++;
+                 count5 --;
+                 if (count5 == 0) {
+                     strindex += 10;
+                     if (strindex > strlen) {
+                        break;
+                     }
+                     iter.setOffset(strindex);
+                     count5 = 5;
+                 }
+            }
+            count ++;
+        }
+        elapsedTime -= (System.currentTimeMillis() - startTime);
+        System.out.println("elapsedTime " + elapsedTime);
+    
+        System.out.println("gCount " + gCount);
+        ns = (int)(1000000 * elapsedTime / (gCount + 0.0));
+        System.out.println("Average time per CollationElementIterator.previous() nano seconds " + ns);
+    }
+    
+    
+    /**---------------------------------------------------------------------------------------
+     *
+     *    doIterTest()       Iteration test
+     *
+     *---------------------------------------------------------------------------------------
+     */
+    void doIterTest() {
+        doForwardIterTest();
+        doBackwardIterTest();
+    }
+    
+    void setOptions() {
+        
+        if (opt_java) {
+            opt_icu = false;
+        }
+        
+        if (opt_rules.length() != 0) {
+            try {
+                icuCol = new com.ibm.icu.text.RuleBasedCollator(getCollationRules(opt_rules));
+            } catch (Exception e) {
+                System.out.println("Cannot open rules:" + e.getMessage());
+                System.exit(1);
+            }
+        } else {
+            icuCol = com.ibm.icu.text.Collator.getInstance(
+                                LocaleUtility.getLocaleFromName(opt_locale));
+        }
+        
+        javaCol = java.text.Collator.getInstance(
+                                LocaleUtility.getLocaleFromName(opt_locale));
+        
+        if (opt_norm) {
+            javaCol.setDecomposition(java.text.Collator.CANONICAL_DECOMPOSITION);
+            icuCol.setDecomposition(com.ibm.icu.text.Collator.CANONICAL_DECOMPOSITION);
+        }
+        
+        if (opt_french && opt_frenchoff) {
+            System.err.println("Error: specified both -french and -frenchoff options.");
+        }
+        
+        if (opt_french) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setFrenchCollation(true);
+        }
+        if (opt_frenchoff) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setFrenchCollation(false);
+        }
+        
+        if (opt_lower) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setLowerCaseFirst(true);
+        }
+        
+        if (opt_upper) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setUpperCaseFirst(true);
+        }
+        
+        if (opt_shifted) {
+            ((com.ibm.icu.text.RuleBasedCollator)icuCol).setAlternateHandlingShifted(true);
+        }
+        
+        if (opt_level != 0) {
+            switch (opt_level) {
+                case 1 :
+                        javaCol.setStrength(java.text.Collator.PRIMARY);
+                        icuCol.setStrength(com.ibm.icu.text.Collator.PRIMARY);
+                        break;
+                case 2 :
+                        javaCol.setStrength(java.text.Collator.SECONDARY);
+                        icuCol.setStrength(com.ibm.icu.text.Collator.SECONDARY);
+                        break;
+                case 3 :
+                        javaCol.setStrength(java.text.Collator.TERTIARY);
+                        icuCol.setStrength(com.ibm.icu.text.Collator.TERTIARY);
+                        break;
+                case 4 :
+                        icuCol.setStrength(com.ibm.icu.text.Collator.QUATERNARY);
+                        break;
+                case 5 :
+                        javaCol.setStrength(java.text.Collator.IDENTICAL);
+                        icuCol.setStrength(com.ibm.icu.text.Collator.IDENTICAL);
+                        break;
+                default:
+                    System.err.println("-level param must be between 1 and 5\n");
+                    System.exit(1);
+            }
+        }
+        // load classes at least once before starting
+        javaCol.compare("a", "b");
+        icuCol.compare("a", "b");
+    }
+    
+    static boolean processOptions(String[] args) {
+        int argNum;
+        for (argNum =0; argNum < args.length; argNum++) {
+            for (int i = 0; i < options.length; i++) {
+                if (args[argNum].equalsIgnoreCase(options[i].name)) {
+                    switch (options[i].type) {
+                        case 0:
+                                options[i].value.delete(0, options[i].value.capacity()).append("true");
+                                break;
+                        case 1:
+                                argNum++;
+                                if ((argNum >= args.length) || (args[argNum].charAt(0)=='-')) {
+                                    System.err.println("value expected for"+ options[i].name +"option.\n");
+                                    return false;
+                                }
+                                try {
+                                   /* int value =*/ Integer.parseInt(args[argNum]);
+                                    options[i].value.delete(0, options[i].value.capacity()).append(args[argNum]);
+                                } catch (NumberFormatException e) {
+                                    System.err.println("Expected: a number value");
+                                    return false;    
+                                }
+                                break;
+                        case 2:
+                                argNum++;
+                                if ((argNum >= args.length) || (args[argNum].charAt(0)=='-')) {
+                                    System.err.println("value expected for"+ options[i].name +"option.\n");
+                                    return false;
+                                }
+                                options[i].value.delete(0, options[i].value.capacity()).append(args[argNum]);
+                                break;
+                        default:
+                                System.err.println("Option type error: {FLAG=0, NUM=1, STRING=2}");
+                                return false;
+                    }
+                }
+            }
+        }
+        
+        opt_fName      = temp_opt_fName.toString();
+        opt_locale     = temp_opt_locale.toString();
+        opt_rules      = temp_opt_rules.toString();
+        if (temp_opt_help.toString().equalsIgnoreCase("true")) {
+            opt_help = true;
+        }
+        opt_loopCount  = Integer.parseInt(temp_opt_loopCount.toString());
+        opt_iLoopCount = Integer.parseInt(temp_opt_iLoopCount.toString());
+        if (temp_opt_terse.toString().equalsIgnoreCase("true")) {
+            opt_terse = true;
+        }
+        if (temp_opt_qsort.toString().equalsIgnoreCase("true")) {
+            opt_qsort = true;
+        }
+        if (temp_opt_binsearch.toString().equalsIgnoreCase("true")) {
+            opt_binsearch = true;
+        }
+        if (temp_opt_icu.toString().equalsIgnoreCase("true")) {
+            opt_icu = true;
+        }
+        if (temp_opt_usekeys.toString().equalsIgnoreCase("true")) {
+            opt_usekeys = true;
+        }
+        if (temp_opt_strcmp.toString().equalsIgnoreCase("true")) {
+            opt_strcmp = true;
+        }
+        if (temp_opt_strcmpCPO.toString().equalsIgnoreCase("true")) {
+            opt_strcmpCPO = true;
+        }
+        if (temp_opt_keygen.toString().equalsIgnoreCase("true")) {
+            opt_keygen = true;
+        }
+        if (temp_opt_norm.toString().equalsIgnoreCase("true")) {
+            opt_norm = true;
+        }
+        if (temp_opt_french.toString().equalsIgnoreCase("true")) {
+            opt_french = true;
+        }
+        if (temp_opt_frenchoff.toString().equalsIgnoreCase("true")) {
+            opt_frenchoff = true;
+        }
+        if (temp_opt_shifted.toString().equalsIgnoreCase("true")) {
+            opt_shifted = true;
+        }
+        if (temp_opt_lower.toString().equalsIgnoreCase("true")) {
+            opt_lower = true;
+        }
+        if (temp_opt_upper.toString().equalsIgnoreCase("true")) {
+            opt_upper = true;
+        }
+        if (temp_opt_case.toString().equalsIgnoreCase("true")) {
+            opt_case = true;
+        }
+        opt_level      = Integer.parseInt(temp_opt_level.toString());
+        if (temp_opt_keyhist.toString().equalsIgnoreCase("true")) {
+            opt_keyhist = true;
+        }
+        if (temp_opt_itertest.toString().equalsIgnoreCase("true")) {
+            opt_itertest = true;
+        }
+        if (temp_opt_dump.toString().equalsIgnoreCase("true")) {
+            opt_dump = true;
+        }
+        if (temp_opt_java.toString().equalsIgnoreCase("true")) {
+            opt_java = true;
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Invoke the runtime's garbage collection procedure repeatedly
+     * until the amount of free memory stabilizes to within 10%.
+     */    
+    private void callGC() {
+        // From "Java Platform Performance".  This is the procedure
+        // recommended by Javasoft.
+        try {
+            System.gc();
+            Thread.sleep(100);
+            System.runFinalization();
+            Thread.sleep(100);
+            
+            System.gc();
+            Thread.sleep(100);
+            System.runFinalization();
+            Thread.sleep(100);
+        } catch (InterruptedException e) {}
+    }
+
+    //private boolean needCRLF = false;
+    
+    public int DOTMASK = 0x7FF;
+ 
+    void dot(int i) {
+        if ((i % DOTMASK) == 0) {
+            //needCRLF = true;
+            // I do not know why print the dot here
+            //System.out.print('.');
+        }
+    }
+    
+    String readDataLine(BufferedReader br) throws Exception {
+        String originalLine = "";
+        String line = "";
+        
+        try {
+            line = originalLine = br.readLine();
+            if (line == null) return null;
+            if (line.length() > 0 && line.charAt(0) == 0xFEFF) line = line.substring(1);
+            int commentPos = line.indexOf('#');
+            if (commentPos >= 0) line = line.substring(0, commentPos);
+            line = line.trim();
+        } catch (Exception e) {
+            throw new Exception("Line \"{0}\",  \"{1}\"" + originalLine + " "
+                                + line + " " + e.toString());
+        }
+        return line;
+    }
+    
+    void readDataLines() {
+        // Read in  the input file.
+        //   File assumed to be utf-16.
+        //   Lines go onto heap buffers.  Global index array to line starts is created.
+        //   Lines themselves are null terminated.
+        //
+        FileInputStream fis = null;
+        InputStreamReader isr = null;
+        BufferedReader br = null;
+        try {
+            fis = new FileInputStream(opt_fName);
+            isr = new InputStreamReader(fis, "UTF-8");
+            br= new BufferedReader(isr, 32*1024);
+        } catch (Exception e) {
+            System.err.println("Error: File access exception: " + e.getMessage() + "!");
+            System.exit(2);
+        }
+        
+        int counter = 0;
+        
+        list = new ArrayList();
+        while (true) {
+            String line = null;
+            try {
+                line = readDataLine(br);
+            } catch (Exception e) {
+                System.err.println("Read File Error" + e.getMessage() + "!");
+                System.exit(1);
+            }
+            
+            if (line == null) break;
+            if (line.length() == 0) continue;
+            dot(counter++);
+            list.add(line);
+        }
+        if (!opt_terse) {
+            System.out.println("Read " + counter + " lines in file");
+        }
+        
+        int size = list.size();
+        tests = new String [size];
+        
+        for (int i = 0; i < size; ++i) {
+            tests[i] = (String) list.get(i);
+        }
+    }
+    
+    /**
+     * Get the Collator Rules
+     * The Rule File format:
+     * 1. leading and trailing whitespaces will be omitted
+     * 2. lines with the leading character '#' will be treated as comments
+     * 3. File encoding is ISO-8859-1
+     */
+    String getCollationRules(String ruleFileName) {
+        FileInputStream fis = null;
+        InputStreamReader isr = null;
+        BufferedReader br = null;
+        try {
+            fis = new FileInputStream(opt_rules);
+            isr = new InputStreamReader(fis,"ISO-8859-1");
+            br= new BufferedReader(isr);
+        } catch (Exception e) {
+            System.err.println("Error: File access exception: " + e.getMessage() + "!");
+            System.exit(2);
+        }
+        String rules = "";
+        String line = "";
+        while (true) {
+            try {
+                line = br.readLine();
+            } catch (IOException e) {
+                System.err.println("Read File Error" + e.getMessage() + "!");
+                System.exit(1);
+            }
+            if (line == null) {
+                break;
+            }
+            int commentPos = line.indexOf('#');
+            if (commentPos >= 0) line = line.substring(0, commentPos);
+            line = line.trim();
+            rules = rules + line;
+        }
+        return rules;
+    }
+    
+    //Implementing qsort
+    void qSortImpl_java_usekeys(String src[], int fromIndex, int toIndex, java.text.Collator c) {
+        int low = fromIndex;
+        int high = toIndex;
+        String middle = "";
+        if (high > low) {
+            middle = src[ (low + high) / 2 ];
+            while(low <= high) {
+                while((low < toIndex) && (compare(c.getCollationKey(src[low]), c.getCollationKey(middle)) < 0)) {
+                    ++low;
+                }
+                while((high > fromIndex) && (compare(c.getCollationKey(src[high]), c.getCollationKey(middle)) > 0)) {
+                    --high;
+                }
+                if(low <= high) {
+                    String swap = src[low];
+                    src[low] = src[high];
+                    src[high] = swap;
+                    ++low;
+                    --high;
+                }
+            }
+            if(fromIndex < high) {
+                qSortImpl_java_usekeys(src, fromIndex, high, c);
+            }
+            
+            if(low < toIndex) {
+                qSortImpl_java_usekeys(src, low, toIndex, c);
+            }
+        }
+    }
+    
+    void qSortImpl_icu_usekeys(String src[], int fromIndex, int toIndex, com.ibm.icu.text.Collator c) {
+        int low = fromIndex;
+        int high = toIndex;
+        String middle = "";
+        if (high > low) {
+            middle = src[ (low + high) / 2 ];
+            while(low <= high) {
+                while((low < toIndex) && (compare(c.getCollationKey(src[low]), c.getCollationKey(middle)) < 0)) {
+                    ++low;
+                }
+                while((high > fromIndex) && (compare(c.getCollationKey(src[high]), c.getCollationKey(middle)) > 0)) {
+                    --high;
+                }
+                if(low <= high) {
+                    String swap = src[low];
+                    src[low] = src[high];
+                    src[high] = swap;
+                    ++low;
+                    --high;
+                }
+            }
+            if(fromIndex < high) {
+                qSortImpl_icu_usekeys(src, fromIndex, high, c);
+            }
+            
+            if(low < toIndex) {
+                qSortImpl_icu_usekeys(src, low, toIndex, c);
+            }
+        }
+    }
+    
+    void qSortImpl_nokeys(String src[], int fromIndex, int toIndex, Comparator c) {
+        int low = fromIndex;
+        int high = toIndex;
+        String middle = "";
+        if (high > low) {
+            middle = src[ (low + high) / 2 ];
+            while(low <= high) {
+                while((low < toIndex) && (compare(src[low], middle, c) < 0)) {
+                    ++low;
+                }
+                while((high > fromIndex) && (compare(src[high], middle, c) > 0)) {
+                    --high;
+                }
+                if(low <= high) {
+                    String swap = src[low];
+                    src[low] = src[high];
+                    src[high] = swap;
+                    ++low;
+                    --high;
+                }
+            }
+            if(fromIndex < high) {
+                qSortImpl_nokeys(src, fromIndex, high, c);
+            }
+            
+            if(low < toIndex) {
+                qSortImpl_nokeys(src, low, toIndex, c);
+            }
+        }
+    }
+    
+    int compare(String source, String target, Comparator c) {
+        globalCount++;
+        return c.compare(source, target);
+    }
+    
+    int compare(java.text.CollationKey source, java.text.CollationKey target) {
+        globalCount++;
+        return source.compareTo(target);
+    }
+    
+    int compare(com.ibm.icu.text.CollationKey source, com.ibm.icu.text.CollationKey target) {
+        globalCount++;
+        return source.compareTo(target);
+    } 
+    
+    //Class for command line option
+    static class OptionSpec {
+        String name;
+        int type;
+        StringBuffer value;
+        public OptionSpec(String name, int type, StringBuffer value) {
+            this.name = name;
+            this.type = type;
+            this.value = value;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java
new file mode 100644
index 0000000..4aea48c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java
@@ -0,0 +1,318 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CodingErrorAction;
+
+import com.ibm.icu.charset.CharsetProviderICU;
+
+/**
+ * @author ram
+ */
+public class ConverterPerformanceTest extends PerfTest {
+   public static void main(String[] args) throws Exception {
+       new ConverterPerformanceTest().run(args);
+   }
+   char[] unicodeBuffer = null;
+   byte[] encBuffer = null;
+
+   protected void setup(String[] args) {
+        try{
+            // read in the input file, being careful with a possible BOM
+            FileInputStream in = new FileInputStream(fileName);
+            BOMFreeReader reader = new BOMFreeReader(in, encoding);
+            unicodeBuffer = readToEOS(reader);
+            
+            // use java.nio to convert unicodeBuffer from char[] to byte[] 
+            CharBuffer source = CharBuffer.wrap(unicodeBuffer, 0, unicodeBuffer.length);
+            CharsetEncoder encoder = Charset.forName(encoding).newEncoder();
+            encoder.onMalformedInput(CodingErrorAction.REPORT);
+            encoder.onUnmappableCharacter(CodingErrorAction.REPORT);
+            ByteBuffer target = encoder.encode(source);
+            
+            // target.array() will probably return what we want, but lets take no chances
+            encBuffer = new byte[target.limit()];
+            for (int i=0; i<encBuffer.length; i++)
+                encBuffer[i] = target.get(i);
+            
+        } catch(Exception ex){
+            ex.printStackTrace();
+            throw new RuntimeException(ex.getMessage());
+        }
+
+        // we created some heavy objects, so lets try to clean up a little before running the tests
+        gc();
+   }
+
+   PerfTest.Function TestFromUnicodeStream() {
+        return new PerfTest.Function() {
+            public void call() {
+                try{
+                    ByteArrayOutputStream out = new ByteArrayOutputStream(unicodeBuffer.length * 10);
+                    OutputStreamWriter writer = new OutputStreamWriter(out, testName);
+                    writer.write(unicodeBuffer, 0, unicodeBuffer.length);
+                    writer.flush();
+                }catch(Exception e){
+                    e.printStackTrace();
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+            public long getOperationsPerIteration() {
+                return unicodeBuffer.length;
+            }
+        };
+    }
+    PerfTest.Function TestToUnicodeStream() {
+        return new PerfTest.Function() {
+            char[] dst = new char[encBuffer.length];
+            public void call() {
+                try{
+                    ByteArrayInputStream is = new ByteArrayInputStream(encBuffer, 0, encBuffer.length);
+                    InputStreamReader reader = new InputStreamReader(is, testName);
+                    reader.read(dst, 0, dst.length);
+                    reader.close();
+                }catch(Exception e){
+                    e.printStackTrace();
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+            public long getOperationsPerIteration() {
+                return encBuffer.length;
+            }
+        };
+    }
+/*
+    PerfTest.Function TestByteToCharConverter() { // decoder  charset.forname().newencoder().decode
+        try{
+            return new PerfTest.Function() {
+                char[] dst = new char[encBuffer.length];
+                int numOut =0;
+                ByteToCharConverter conv = ByteToCharConverter.getConverter(testEncoderName);
+                int num =0;
+                public void call() {
+                    try{
+                        numOut= conv.convert(encBuffer, 0, encBuffer.length, dst, 0,dst.length);
+                        conv.reset();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return encBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharToByteConverter() { // encoder charset.forname().newencoder().encode
+        try{
+            return new PerfTest.Function() {
+                byte[] dst = new byte[encBuffer.length];
+                int numOut =0;
+                CharToByteConverter conv = CharToByteConverter.getConverter(testEncoderName);
+                int num =0;
+                public void call() {
+                    try{
+                        numOut= conv.convert(unicodeBuffer, 0,unicodeBuffer.length,dst,0, dst.length);
+                        conv.reset();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return unicodeBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestByteToCharConverterICU() { // decoder  charsetprovidericu.getdecoder
+        try{
+            return new PerfTest.Function() {
+                char[] dst = new char[encBuffer.length];
+                int numOut =0;
+                ByteToCharConverter conv = ByteToCharConverterICU.createConverter(testEncoderName);
+                int num =0;
+                public void call() {
+                    try{
+                        numOut= conv.convert(encBuffer, 0, encBuffer.length, dst, 0,dst.length);
+                        conv.reset();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return encBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharToByteConverterICU() {
+        try{
+            return new PerfTest.Function() {
+                byte[] dst = new byte[encBuffer.length*2];
+                int numOut =0;
+                CharToByteConverter conv = CharToByteConverterICU.createConverter(testEncoderName);
+                int num =0;
+                public void call() {
+                    try{
+                        numOut= conv.convert(unicodeBuffer, 0,unicodeBuffer.length,dst,0, dst.length);
+                        conv.reset();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return unicodeBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+*/
+    PerfTest.Function TestCharsetDecoder() {
+        try{
+            return new PerfTest.Function() {
+                CharBuffer outBuf = CharBuffer.allocate(unicodeBuffer.length);
+                Charset myCharset = Charset.forName(testName);
+                ByteBuffer srcBuf = ByteBuffer.wrap(encBuffer,0,encBuffer.length);
+                CharsetDecoder decoder = myCharset.newDecoder();
+
+                public void call() {
+                    try{
+                        decoder.decode(srcBuf,outBuf,false);
+                        decoder.reset();
+                        srcBuf.rewind();
+                        outBuf.rewind();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return encBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharsetEncoder() {
+        try{
+            return new PerfTest.Function() {
+                ByteBuffer outBuf = ByteBuffer.allocate(encBuffer.length);
+                Charset myCharset = Charset.forName(testName);
+                CharBuffer srcBuf = CharBuffer.wrap(unicodeBuffer,0,unicodeBuffer.length);
+                CharsetEncoder encoder = myCharset.newEncoder();
+
+                public void call() {
+                    try{
+                        encoder.encode(srcBuf,outBuf,false);
+                        encoder.reset();
+                        srcBuf.rewind();
+                        outBuf.rewind();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return unicodeBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharsetDecoderICU() {
+        try{
+            return new PerfTest.Function() {
+                CharBuffer outBuf = CharBuffer.allocate(unicodeBuffer.length);
+                Charset myCharset = new CharsetProviderICU().charsetForName(testName);
+                ByteBuffer srcBuf = ByteBuffer.wrap(encBuffer,0,encBuffer.length);
+                CharsetDecoder decoder = myCharset.newDecoder();
+
+                public void call() {
+                    try{
+                        decoder.decode(srcBuf,outBuf,false);
+                        decoder.reset();
+                        srcBuf.rewind();
+                        outBuf.rewind();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return encBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    PerfTest.Function TestCharsetEncoderICU() {
+        try{
+            return new PerfTest.Function() {
+                ByteBuffer outBuf = ByteBuffer.allocate(encBuffer.length);
+                Charset myCharset = new CharsetProviderICU().charsetForName(testName);
+                CharBuffer srcBuf = CharBuffer.wrap(unicodeBuffer,0,unicodeBuffer.length);
+                CharsetEncoder encoder = myCharset.newEncoder();
+
+                public void call() {
+                    try{
+                        encoder.encode(srcBuf,outBuf,false);
+                        encoder.reset();
+                        srcBuf.rewind();
+                        outBuf.rewind();
+                    }catch(Exception e){
+                        e.printStackTrace();
+                        throw new RuntimeException(e.getMessage());
+                    }
+                }
+                public long getOperationsPerIteration() {
+                    return unicodeBuffer.length;
+                }
+            };
+        }catch(Exception e){
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/Dataset.pm b/src/com/ibm/icu/dev/test/perf/Dataset.pm
new file mode 100644
index 0000000..1e08efc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/Dataset.pm
@@ -0,0 +1,86 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+package Dataset;
+use Statistics::Descriptive;
+use Statistics::Distributions;
+use strict;
+
+# Create a new Dataset with the given data.
+sub new {
+    my ($class) = shift;
+    my $self = bless {
+        _data => \@_,
+        _scale => 1.0,
+        _mean => 0.0,
+        _error => 0.0,
+    }, $class;
+
+    my $n = @_;
+    
+    if ($n >= 1) {
+        my $stats = Statistics::Descriptive::Full->new();
+        $stats->add_data(@{$self->{_data}});
+        $self->{_mean} = $stats->mean();
+
+        if ($n >= 2) {
+            # Use a t distribution rather than Gaussian because (a) we
+            # assume an underlying normal dist, (b) we do not know the
+            # standard deviation -- we estimate it from the data, and (c)
+            # we MAY have a small sample size (also works for large n).
+            my $t = Statistics::Distributions::tdistr($n-1, 0.005);
+            $self->{_error} = $t * $stats->standard_deviation();
+        }
+    }
+
+    $self;
+}
+
+# Set a scaling factor for all data; 1.0 means no scaling.
+# Scale must be > 0.
+sub setScale {
+    my ($self, $scale) = @_;
+    $self->{_scale} = $scale;
+}
+
+# Multiply the scaling factor by a value.
+sub scaleBy {
+    my ($self, $a) = @_;
+    $self->{_scale} *= $a;
+}
+
+# Return the mean.
+sub getMean {
+    my $self = shift;
+    return $self->{_mean} * $self->{_scale};
+}
+
+# Return a 99% error based on the t distribution.  The dataset
+# is desribed as getMean() +/- getError().
+sub getError {
+    my $self = shift;
+    return $self->{_error} * $self->{_scale};
+}
+
+# Divide two Datasets and return a new one, maintaining the
+# mean+/-error.  The new Dataset has no data points.
+sub divide {
+    my $self = shift;
+    my $rhs = shift;
+    
+    my $minratio = ($self->{_mean} - $self->{_error}) /
+                   ($rhs->{_mean} + $rhs->{_error});
+    my $maxratio = ($self->{_mean} + $self->{_error}) /
+                   ($rhs->{_mean} - $rhs->{_error});
+
+    my $result = Dataset->new();
+    $result->{_mean} = ($minratio + $maxratio) / 2;
+    $result->{_error} = $result->{_mean} - $minratio;
+    $result->{_scale} = $self->{_scale} / $rhs->{_scale};
+    $result;
+}
+
+1;
diff --git a/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java
new file mode 100644
index 0000000..4e23127
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java
@@ -0,0 +1,115 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.  * 
+ * All Rights Reserved.                                                         *
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * @author ajmacher
+ */
+public class DateFormatPerformanceTest extends PerfTest {
+    private String pattern;
+
+    private String dateString;
+
+    private Date date;
+
+    private com.ibm.icu.text.SimpleDateFormat[] icuDateFormat;
+
+    private java.text.SimpleDateFormat[] jdkDateFormat;
+
+    public static void main(String[] args) throws Exception {
+        new DateFormatPerformanceTest().run(args);
+    }
+
+    protected void setup(String[] args) {
+        try {
+            if (args.length == 0 || args.length > 2) {
+                throw new UsageException();
+            }
+
+            pattern = args[0];
+
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            icuDateFormat = new com.ibm.icu.text.SimpleDateFormat[threads];
+            jdkDateFormat = new java.text.SimpleDateFormat[threads];
+            for (int i = 0; i < threads; i++) {
+                icuDateFormat[i] = new com.ibm.icu.text.SimpleDateFormat(pattern, locale);
+                jdkDateFormat[i] = new java.text.SimpleDateFormat(pattern, locale);
+            }
+
+            if (args.length == 2) {
+                dateString = args[1];
+                date = icuDateFormat[0].parse(dateString);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+
+    }
+
+    PerfTest.Function TestICUConstruction() {
+        return new PerfTest.Function() {
+            public void call() {
+                new com.ibm.icu.text.SimpleDateFormat(pattern, locale);
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKConstruction() {
+        return new PerfTest.Function() {
+            public void call() {
+                new java.text.SimpleDateFormat(pattern, locale);
+            }
+        };
+    }
+
+    PerfTest.Function TestICUParse() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                try {
+                    icuDateFormat[id].parse(dateString);
+                } catch (ParseException ex) {
+                    ex.printStackTrace();
+                }
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKParse() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                try {
+                    jdkDateFormat[id].parse(dateString);
+                } catch (ParseException ex) {
+                    ex.printStackTrace();
+                }
+            }
+        };
+    }
+
+    PerfTest.Function TestICUFormat() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                icuDateFormat[id].format(date);
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKFormat() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                jdkDateFormat[id].format(date);
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java
new file mode 100644
index 0000000..505aa5a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java
@@ -0,0 +1,119 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and * others.
+ * All Rights Reserved. *
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.text.ParseException;
+import java.util.Locale;
+
+/**
+ * @author ajmacher
+ */
+public class DecimalFormatPerformanceTest extends PerfTest {
+    String pattern;
+
+    String decimalAsString;
+
+    Number decimalAsNumber;
+
+    com.ibm.icu.text.DecimalFormat[] icuDecimalFormat;
+
+    java.text.DecimalFormat[] javaDecimalFormat;
+
+    public static void main(String[] args) throws Exception {
+        new DecimalFormatPerformanceTest().run(args);
+    }
+
+    protected void setup(String[] args) {
+        try {
+            if (args.length == 0 || args.length > 2) {
+                throw new UsageException();
+            }
+
+            pattern = args[0];
+
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            icuDecimalFormat = new com.ibm.icu.text.DecimalFormat[threads];
+            javaDecimalFormat = new java.text.DecimalFormat[threads];
+            for (int i = 0; i < threads; i++) {
+                icuDecimalFormat[i] = new com.ibm.icu.text.DecimalFormat(pattern,
+                        new com.ibm.icu.text.DecimalFormatSymbols(locale));
+                javaDecimalFormat[i] = new java.text.DecimalFormat(pattern,
+                        new java.text.DecimalFormatSymbols(locale));
+            }
+
+            if (args.length == 2) {
+                decimalAsString = args[1];
+                decimalAsNumber = icuDecimalFormat[0].parse(decimalAsString);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+
+    }
+
+    PerfTest.Function TestICUConstruction() {
+        return new PerfTest.Function() {
+            public void call() {
+                new com.ibm.icu.text.DecimalFormat(pattern,
+                        new com.ibm.icu.text.DecimalFormatSymbols(locale));
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKConstruction() {
+        return new PerfTest.Function() {
+            public void call() {
+                new java.text.DecimalFormat(pattern, new java.text.DecimalFormatSymbols(locale));
+            }
+        };
+    }
+
+    PerfTest.Function TestICUParse() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                try {
+                    icuDecimalFormat[id].parse(decimalAsString);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKParse() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                try {
+                    javaDecimalFormat[id].parse(decimalAsString);
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+        };
+    }
+
+    PerfTest.Function TestICUFormat() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                icuDecimalFormat[id].format(decimalAsNumber);
+            }
+        };
+    }
+
+    PerfTest.Function TestJDKFormat() {
+        return new PerfTest.Function() {
+            public void call(int id) {
+                javaDecimalFormat[id].format(decimalAsNumber);
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java b/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
new file mode 100644
index 0000000..ddcce34
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
@@ -0,0 +1,706 @@
+//##header J2SE15
+/*
+**********************************************************************
+* Copyright (c) 2002-2007, International Business Machines           *
+* Corporation and others.  All Rights Reserved.                      *
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.perf;
+
+import com.ibm.icu.text.Normalizer;
+
+public class NormalizerPerformanceTest extends PerfTest {
+    
+    String[] NFDFileLines;
+    String[] NFCFileLines;
+    String[] fileLines;
+    
+    
+    public static void main(String[] args) throws Exception {
+        new NormalizerPerformanceTest().run(args);
+    }
+    
+    protected void setup(String[] args) {
+        fileLines = readLines(fileName, encoding, bulk_mode);
+        NFDFileLines = normalizeInput(fileLines, Normalizer.NFD);
+        NFCFileLines = normalizeInput(fileLines, Normalizer.NFC);
+    }
+    
+    // Test NFC Performance
+    PerfTest.Function TestICU_NFC_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.normalize(NFDFileLines[i], Normalizer.NFC);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_NFC_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.normalize(NFCFileLines[i], Normalizer.NFC);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_NFC_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.normalize(fileLines[i], Normalizer.NFC);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    // Test NFD Performance
+    PerfTest.Function TestICU_NFD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.normalize(NFDFileLines[i], Normalizer.NFD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_NFD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.normalize(NFCFileLines[i], Normalizer.NFD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_NFD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.normalize(fileLines[i], Normalizer.NFD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+
+    // Test NFC Performance
+    PerfTest.Function TestJDK_NFC_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++)
+                    normalizerTest(NFDFileLines[i], true);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++)
+                    totalChars = totalChars + NFDFileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+  
+    PerfTest.Function TestJDK_NFC_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++)
+                    normalizerTest(NFCFileLines[i], true);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++)
+                    totalChars = totalChars + NFCFileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestJDK_NFC_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++)
+                    normalizerTest(fileLines[i], true);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++)
+                    totalChars = totalChars + fileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    
+    // Test NFD Performance
+    PerfTest.Function TestJDK_NFD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++)
+                    normalizerTest(NFDFileLines[i], false);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++)
+                    totalChars = totalChars + NFDFileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestJDK_NFD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++)
+                    normalizerTest(NFCFileLines[i], false);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++)
+                    totalChars = totalChars + NFCFileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestJDK_NFD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++)
+                    normalizerTest(fileLines[i], false);
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++)
+                    totalChars = totalChars + fileLines[i].length();
+                return totalChars;
+            }
+        };
+    }
+    // Test FCD Performance
+    PerfTest.Function TestICU_FCD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.normalize(NFDFileLines[i], Normalizer.FCD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+
+    PerfTest.Function TestICU_FCD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.normalize(NFCFileLines[i], Normalizer.FCD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestICU_FCD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.normalize(fileLines[i], Normalizer.FCD);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    // Test Quick Check Performance
+    PerfTest.Function TestQC_NFC_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.quickCheck(NFDFileLines[i], Normalizer.NFC,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFC_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.quickCheck(NFCFileLines[i], Normalizer.NFC,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFC_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.quickCheck(fileLines[i], Normalizer.NFC,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    Normalizer.quickCheck(NFDFileLines[i], Normalizer.NFD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                     Normalizer.quickCheck(NFCFileLines[i], Normalizer.NFD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_NFD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                     Normalizer.quickCheck(fileLines[i], Normalizer.NFD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_FCD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                     Normalizer.quickCheck(NFDFileLines[i], Normalizer.FCD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_FCD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                     Normalizer.quickCheck(NFCFileLines[i], Normalizer.FCD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestQC_FCD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                     Normalizer.quickCheck(fileLines[i], Normalizer.FCD,0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    // Test isNormalized Performance
+    PerfTest.Function TestIsNormalized_NFC_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                     Normalizer.isNormalized(NFDFileLines[i], Normalizer.NFC, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFC_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    Normalizer.isNormalized(NFCFileLines[i], Normalizer.NFC, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFC_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.isNormalized(fileLines[i], Normalizer.NFC, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                     Normalizer.isNormalized(NFDFileLines[i], Normalizer.NFD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                     Normalizer.isNormalized(NFCFileLines[i], Normalizer.NFD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_NFD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                    Normalizer.isNormalized(fileLines[i], Normalizer.NFD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_FCD_NFD_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                     Normalizer.isNormalized(NFDFileLines[i], Normalizer.FCD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFDFileLines.length; i++) {
+                    totalChars = totalChars + NFDFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_FCD_NFC_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                     Normalizer.isNormalized(NFCFileLines[i], Normalizer.FCD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < NFCFileLines.length; i++) {
+                    totalChars = totalChars + NFCFileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+    
+    PerfTest.Function TestIsNormalized_FCD_Orig_Text() {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int i = 0; i < fileLines.length; i++) {
+                     Normalizer.isNormalized(fileLines[i], Normalizer.FCD, 0);
+                }
+            }
+            
+            public long getOperationsPerIteration() {
+                int totalChars = 0;
+                for (int i = 0; i < fileLines.length; i++) {
+                    totalChars = totalChars + fileLines[i].length();
+                }
+                return totalChars;
+            }
+        };
+    }
+      
+    /*
+      private void printUsage() {
+        System.out.println("Usage: " + this.getClass().getName() + " [OPTIONS] fileName\n"
+                            + "\t-f or --fileName  \tfile to be used as test data\n"
+                            + "\t-s or --sourceDir \tsource directory for files followed by path\n"
+                            + "\t-e or --encoding  \tencoding of source files\n"
+                            + "\t-b or --bulkMode  \tnormalize whole file at once\n"
+                            + "\t-l or --lineMode  \tnormalize file one line at a time\n"
+            );
+        System.exit(1);
+    }
+    */
+    
+    String[] normalizeInput(String[] src, Normalizer.Mode mode) {
+        String[] dest = new String[src.length];
+        for (int i = 0; i < src.length; i++) {
+            dest[i] = Normalizer.normalize(src[i], mode);
+        }
+        
+        return dest;
+    }
+    
+    /*
+    void normalizerInit(boolean compose) {
+        Class normalizer;
+        boolean sun;
+        
+        try {
+            normalizer = Class.forName("java.text.Normalizer");
+            sun = false;
+        } catch (ClassNotFoundException ex) {
+            try {
+                normalizer = Class.forName("sun.text.Normalizer");
+                sun = true;
+            } catch (ClassNotFoundException ex2) {
+                throw new RuntimeException(
+                        "Could not find sun.text.Normalizer nor java.text.Normalizer and their required subclasses");
+            }
+        }
+        
+        try {
+            if (sun) {
+                normalizerArgs = new Object[] { null, null, new Integer(0) };
+                normalizerArgs[1] = normalizer.getField(compose ? "COMPOSE" : "DECOMP").get(null);
+                normalizerMethod = normalizer.getMethod("normalize", new Class[] { String.class, normalizerArgs[1].getClass(), int.class });
+                // sun.text.Normalizer.normalize(line, compose
+                //   ? sun.text.Normalizer.COMPOSE
+                //   : sun.text.Normalizer.DECOMP, 0);
+            } else {
+                normalizerArgs = new Object[] { null, null };
+                normalizerArgs[1] = Class.forName("java.text.Normalizer$Form").getField(compose ? "NFC" : "NFD").get(null);
+                normalizerMethod = normalizer.getMethod("normalize", new Class[] { CharSequence.class, normalizerArgs[1].getClass()});
+                // java.text.Normalizer.normalize(line, compose
+                //   ? java.text.Normalizer.Form.NFC
+                //   : java.text.Normalizer.Form.NFD);
+            }
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            throw new RuntimeException("Reflection error -- could not load the JDK normalizer (" + normalizer.getName() + ")");
+        }
+    }
+    
+    void normalizerTest(String line) {
+        try {
+            normalizerArgs[0] = line;
+            normalizerMethod.invoke(line, normalizerArgs);
+        } catch (Exception ex) {
+            if (ex instanceof InvocationTargetException) {
+                Throwable cause = ex.getCause();
+                cause.printStackTrace();
+                throw new RuntimeException(cause.getMessage());
+            } else {
+                throw new RuntimeException("Reflection error -- could not run the JDK normalizer");
+            }
+        }
+    }
+    */
+
+    void normalizerTest(String line, boolean compose) {
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14) || defined(J2SE15)
+ sun.text.Normalizer.normalize(line, compose
+      ? sun.text.Normalizer.COMPOSE
+      : sun.text.Normalizer.DECOMP, 0);
+//#else
+//## java.text.Normalizer.normalize(line, compose
+//##      ? java.text.Normalizer.Form.NFC
+//##      : java.text.Normalizer.Form.NFD);
+//#endif
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/PerfTest.java b/src/com/ibm/icu/dev/test/perf/PerfTest.java
new file mode 100644
index 0000000..b71e28c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/PerfTest.java
@@ -0,0 +1,932 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ */
+package com.ibm.icu.dev.test.perf;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PushbackInputStream;
+import java.io.Reader;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.dev.tool.UOption;
+import com.ibm.icu.impl.LocaleUtility;
+
+/**
+ * Base class for performance testing framework. To use, the subclass can simply
+ * define one or more instance methods with names beginning with "test" (case
+ * ignored). The prototype of the method is
+ *
+ * PerfTest.Function testTheName()
+ *
+ * The actual performance test will execute on the returned Commond object
+ * (refer to Command Pattern). To call a test from command line, the 'test'
+ * prefix of the test method name can be ignored/removed.
+ *
+ * In addition, the subclass should define a main() method that calls
+ * PerfTest.run() as defined here.
+ *
+ * If the subclasses uses any command line arguments (beyond those handled
+ * automatically by this calss) then it should override PerfTest.setup() to
+ * handle its arguments. If the subclasse needs more sophisticated management
+ * for controlling finding/calling test method, it can replace the default
+ * implementation for PerfTest.testProvider before calling PerfTest.run().
+ *
+ * Example invocation: java -cp classes -verbose:gc
+ * com.ibm.icu.dev.test.perf.UnicodeSetPerf --gc --passes 4 --iterations 100
+ * UnicodeSetAdd [[:l:][:c:]]
+ *
+ * Example output: [GC 511K->192K(1984K), 0.0086170 secs] [GC 704K->353K(1984K),
+ * 0.0059619 secs] [Full GC 618K->371K(1984K), 0.0242779 secs] [Full GC
+ * 371K->371K(1984K), 0.0228649 secs] = testUnicodeSetAdd begin 100 =
+ * testUnicodeSetAdd end 11977 1109044 = testUnicodeSetAdd begin 100 =
+ * testUnicodeSetAdd end 12047 1109044 = testUnicodeSetAdd begin 100 =
+ * testUnicodeSetAdd end 11987 1109044 = testUnicodeSetAdd begin 100 =
+ * testUnicodeSetAdd end 11978 1109044
+ *
+ * The [] lines are emitted by the JVM as a result of the -verbose:gc switch.
+ *
+ * Lines beginning with '=' are emitted by PerfTest: = testUnicodeSetAdd begin
+ * 100 A 'begin' statement contains the name of the setup method, which
+ * determines what test function is measures, and the number of iterations that
+ * will be times. = testUnicodeSetAdd end 12047 1109044 An 'end' statement gives
+ * the name of the setup method again, and then two integers. The first is the
+ * total elapsed time in milliseconds, and the second is the number of events
+ * per iteration. In this example, the time per event is 12047 / (100 * 1109044)
+ * or 108.6 ns/event.
+ *
+ * Raw times are given as integer ms, because this is what the system measures.
+ *
+ * @author Alan Liu
+ * @since ICU 2.4
+ */
+public abstract class PerfTest {
+    // Command-line options set these:
+    protected boolean verbose;
+    protected String sourceDir;
+    protected String fileName;
+
+    // protected String resolvedFileName;
+    protected String encoding;
+    protected String testName;
+    protected boolean uselen;
+    protected int iterations;
+    protected int passes;
+    protected int time;
+    protected boolean line_mode;
+    protected boolean bulk_mode;
+    protected Locale locale;
+    protected boolean doPriorGC;
+    protected int threads;
+
+    protected TestCmdProvider testProvider = new TestPrefixProvider(this);
+
+    static interface TestCmdProvider {
+        /**
+         * @return The names for all available test.
+         */
+        public Set getAllTestCmdNames();
+
+        /**
+         * @param name
+         * @return Whether the given name is a test name. The implementation may
+         *         have more sophisticated naming control here.
+         *         TestCmdProvider.isTestCmd() != Set.contains()
+         */
+        public boolean isTestCmd(String name);
+
+        /**
+         * @param name
+         * @return the test Command or null
+         */
+        public PerfTest.Function getTestCmd(String name);
+    }
+
+    /**
+     * Treat all method beginning with 'test' prefix (ignoring case) for given
+     * object as the test methods.
+     */
+    static class TestPrefixProvider implements TestCmdProvider {
+        private Map theTests = null; // Map<string(no case), string(with case)>
+        private Set orgNames = null; // shadow reference, ==theTests, for better output
+        private Object refer;
+
+        TestPrefixProvider(Object theProvider) {
+            refer = theProvider;
+        }
+
+        public Set getAllTestCmdNames() {
+            if (theTests == null) {
+                theTests = new HashMap();
+                orgNames = new HashSet();
+                Method[] methods = refer.getClass().getDeclaredMethods();
+                for (int i = 0; i < methods.length; i++) {
+                    String org = methods[i].getName();
+                    String name = org.toLowerCase(); // ignoring case
+                    // beginning with 'test'
+                    // Note: methods named 'test()' are ignored
+                    if (name.length() > 4 && name.startsWith("test")) {
+                        if (theTests.containsKey(name)) {
+                            throw new Error(
+                                    "Duplicate method name ignoring case: "
+                                            + name);
+                        }
+                        theTests.put(name, org);
+                        orgNames.add(org);
+                    }
+                }
+            }
+            return orgNames; // begining with 'test', keeping case
+        }
+
+        /**
+         * The given name will map to a method of the same name, or a method
+         * named "test" + name. Case is ignored.
+         */
+        private String isTestCmd_impl(String name) {
+            getAllTestCmdNames();
+            String tn1 = name.toLowerCase();
+            String tn2 = "test" + tn1;
+            if (theTests.containsKey(tn1)) {
+                return tn1;
+            } else if (theTests.containsKey(tn2)) {
+                return tn2;
+            }
+            return null;
+        }
+
+        public boolean isTestCmd(String name) {
+            return isTestCmd_impl(name) != null;
+        }
+
+        public Function getTestCmd(String aname) {
+            String name = (String) theTests.get(isTestCmd_impl(aname));
+            if (name == null) {
+                return null;
+            }
+
+            try {
+                Method m = refer.getClass().getDeclaredMethod(name,
+                        (Class[]) null);
+                return (Function) m.invoke(refer, new Object[] {});
+            } catch (Exception e) {
+                throw new Error(
+                        "TestPrefixProvider implementation error. Finding: "
+                                + name, e);
+            }
+        }
+    }
+
+    /**
+     * Subclasses of PerfTest will need to create subclasses of Function that
+     * define a call() method which contains the code to be timed. They then
+     * call setTestFunction() in their "Test..." method to establish this as the
+     * current test functor.
+     */
+    public abstract static class Function {
+
+        /**
+         * Subclasses should implement this method to do the action to be
+         * measured if the action is thread-safe
+         */
+        public void call() { call(0); }
+
+        /**
+         * Subclasses should implement this method if the action is not thread-safe
+         */
+        public void call(int i) { call(); }
+
+        /**
+         * Subclasses may implement this method to return positive integer
+         * indicating the number of operations in a single call to this object's
+         * call() method. If subclasses do not override this method, the default
+         * implementation returns 1.
+         */
+        public long getOperationsPerIteration() {
+            return 1;
+        }
+
+        /**
+         * Subclasses may implement this method to return either positive or
+         * negative integer indicating the number of events in a single call to
+         * this object's call() method. If subclasses do not override this
+         * method, the default implementation returns -1, indicating that events
+         * are not applicable to this test. e.g: Number of breaks / iterations
+         * for break iterator
+         */
+        public long getEventsPerIteration() {
+            return -1;
+        }
+
+        /**
+         * Call call() n times in a tight loop and return the elapsed
+         * milliseconds. If n is small and call() is fast the return result may
+         * be zero. Small return values have limited meaningfulness, depending
+         * on the underlying VM and OS.
+         */
+        public final long time(long n) {
+            long start, stop;
+            start = System.currentTimeMillis();
+            while (n-- > 0) {
+                call();
+            }
+            stop = System.currentTimeMillis();
+            return stop - start; // ms
+        }
+        
+        
+        /**
+         * init is called each time before looping through call
+         */
+        public void init() {}
+        
+        
+        public final int getID() {
+            return id;
+        }
+        
+        public final void setID(int id) {
+            this.id = id;
+        }
+        
+        private int id;
+    }
+    
+    private class FunctionRunner implements Runnable {
+        public FunctionRunner(Function f, long loops, int id) {
+            this.f = f;
+            this.loops = loops;
+            this.id = id;
+        }
+
+        public void run() {
+            long n = loops;
+            while (n-- > 0)
+                f.call(id);
+        }
+        
+        private Function f;
+
+        private long loops;
+        private int id;
+    }
+    
+
+    /**
+     * Exception indicating a usage error.
+     */
+    public static class UsageException extends Exception {
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = -1201256240606806242L;
+
+        public UsageException(String message) {
+            super(message);
+        }
+
+        public UsageException() {
+            super();
+        }
+    }
+
+    /**
+     * Constructor.
+     */
+    protected PerfTest() {
+    }
+
+    /**
+     * Framework method. Default implementation does not parse any extra
+     * arguments. Subclasses may override this to parse extra arguments.
+     * Subclass implementations should NOT call the base class implementation.
+     */
+    protected void setup(String[] args) {
+        if (args.length > 0) {
+            throw new RuntimeException("Extra arguments received");
+        }
+    }
+
+    /**
+     * These must be kept in sync with getOptions().
+     */
+    static final int HELP1 = 0;
+    static final int HELP2 = 1;
+    static final int VERBOSE = 2;
+    static final int SOURCEDIR = 3;
+    static final int ENCODING = 4;
+    static final int USELEN = 5;
+    static final int FILE_NAME = 6;
+    static final int PASSES = 7;
+    static final int ITERATIONS = 8;
+    static final int TIME = 9;
+    static final int LINE_MODE = 10;
+    static final int BULK_MODE = 11;
+    static final int LOCALE = 12;
+    static final int TEST_NAME = 13;
+    static final int THREADS = 14;
+
+    // Options above here are identical to those in C; keep in sync with C
+    // Options below here are unique to Java; shift down as necessary
+    static final int GARBAGE_COLLECT = 14;
+    static final int LIST = 15;
+
+    UOption[] getOptions() {
+        return new UOption[] {
+                UOption.HELP_H(),
+                UOption.HELP_QUESTION_MARK(),
+                UOption.VERBOSE(),
+                UOption.SOURCEDIR(),
+                UOption.ENCODING(),
+                UOption.DEF("uselen",     'u', UOption.NO_ARG),
+                UOption.DEF("filename",   'f', UOption.REQUIRES_ARG),
+                UOption.DEF("passes",     'p', UOption.REQUIRES_ARG),
+                UOption.DEF("iterations", 'i', UOption.REQUIRES_ARG),
+                UOption.DEF("time",       't', UOption.REQUIRES_ARG),
+                UOption.DEF("line-mode",  'l', UOption.NO_ARG),
+                UOption.DEF("bulk-mode",  'b', UOption.NO_ARG),
+                UOption.DEF("locale",     'L', UOption.REQUIRES_ARG),
+                UOption.DEF("testname",   'T', UOption.REQUIRES_ARG),
+                UOption.DEF("threads",    'r', UOption.REQUIRES_ARG),
+
+                // Options above here are identical to those in C; keep in sync
+                // Options below here are unique to Java
+
+                UOption.DEF("gc", 'g', UOption.NO_ARG),
+                UOption.DEF("list", (char) -1, UOption.NO_ARG), };
+    }
+
+    /**
+     * Subclasses should call this method in their main(). run() will in turn
+     * call setup() with any arguments it does not parse. This method parses the
+     * command line and runs the tests given on the command line, with the given
+     * parameters. See the class description for details.
+     */
+    protected final void run(String[] args) throws Exception {
+        Set testList = parseOptions(args);
+
+        // Run the tests
+        for (Iterator iter = testList.iterator(); iter.hasNext();) {
+            String meth = (String) iter.next();
+
+            // Call meth to set up the test
+            // long eventsPerCall = -1;
+            Function testFunction = testProvider.getTestCmd(meth);
+            if (testFunction == null) {
+                throw new RuntimeException(meth
+                        + " failed to return a test function");
+            }
+            if (testFunction.getOperationsPerIteration() < 1) {
+                throw new RuntimeException(meth
+                        + " returned an illegal operations/iteration()");
+            }
+
+            long t;
+            // long b = System.currentTimeMillis();
+            long loops = getIteration(meth, testFunction);
+            // System.out.println("The guess cost: " + (System.currentTimeMillis() - b)/1000. + " s.");
+
+            for (int j = 0; j < passes; ++j) {
+                long events = -1;
+                if (verbose) {
+                    if (iterations > 0) {
+                        System.out.println("= " + meth + " begin " + iterations);
+                    } else {
+                        System.out.println("= " + meth + " begin " + time + " seconds");
+                    }
+                } else {
+                    System.out.println("= " + meth + " begin ");
+                }
+
+                t = performLoops(testFunction, loops);
+                
+                events = testFunction.getEventsPerIteration();
+
+                if (verbose) {
+                    if (events == -1) {
+                        System.out.println("= " + meth + " end " + (t / 1000.0) + " loops: " + loops + " operations: "
+                                + testFunction.getOperationsPerIteration());
+                    } else {
+                        System.out.println("= " + meth + " end " + (t / 1000.0) + " loops: " + loops + " operations: "
+                                + testFunction.getOperationsPerIteration() + " events: " + events);
+                    }
+                } else {
+                    if (events == -1) {
+                        System.out.println("= " + meth + " end " + (t / 1000.0) + " " + loops + " "
+                                + testFunction.getOperationsPerIteration());
+                    } else {
+                        System.out.println("= " + meth + " end " + (t / 1000.0) + " " + loops + " "
+                                + testFunction.getOperationsPerIteration() + " " + events);
+                    }
+                }
+
+            }
+        }
+    }
+
+    /**
+     * @param args
+     * @return the method list to call
+     * @throws UsageException
+     */
+    private Set parseOptions(String[] args) throws UsageException {
+
+        doPriorGC = false;
+        encoding = "";
+        uselen = false;
+        fileName = null;
+        sourceDir = null;
+        line_mode = false;
+        verbose = false;
+        bulk_mode = false;
+        passes = iterations = time = -1;
+        locale = null;
+        testName = null;
+        threads = 1;
+
+        UOption[] options = getOptions();
+        int remainingArgc = UOption.parseArgs(args, options);
+
+        if (args.length == 0 || options[HELP1].doesOccur || options[HELP2].doesOccur)
+            throw new UsageException();
+
+        if (options[LIST].doesOccur) {
+            System.err.println("Available tests:");
+            Set testNames = testProvider.getAllTestCmdNames();
+            for (Iterator iter = testNames.iterator(); iter.hasNext();) {
+                String name = (String) iter.next();
+                System.err.println(" " + name);
+            }
+            System.exit(0);
+        }
+
+        if (options[TIME].doesOccur && options[ITERATIONS].doesOccur)
+            throw new UsageException("Cannot specify both '-t <seconds>' and '-i <iterations>'");
+        else if (!options[TIME].doesOccur && !options[ITERATIONS].doesOccur)
+            throw new UsageException("Either '-t <seconds>' or '-i <iterations>' must be specified");
+        else if (options[ITERATIONS].doesOccur) {
+            try {
+                iterations = Integer.parseInt(options[ITERATIONS].value);
+            } catch (NumberFormatException ex) {
+                throw new UsageException("'-i <iterations>' requires an integer number of iterations");
+            }
+        } else { //if (options[TIME].doesOccur)
+            try {
+                time = Integer.parseInt(options[TIME].value);
+            } catch (NumberFormatException ex) {
+                throw new UsageException("'-r <seconds>' requires an integer number of seconds");
+            }
+        }
+
+        if (!options[PASSES].doesOccur)
+            throw new UsageException("'-p <passes>' must be specified");
+        else
+            passes = Integer.parseInt(options[PASSES].value);
+
+        if (options[LINE_MODE].doesOccur && options[BULK_MODE].doesOccur)
+            throw new UsageException("Cannot specify both '-l' (line mode) and '-b' (bulk mode)");
+
+        if (options[THREADS].doesOccur) {
+            try {
+                threads = Integer.parseInt(options[THREADS].value);
+            } catch (NumberFormatException ex) {
+                throw new UsageException("'-r <threads>' requires an integer number of threads");
+            }
+            if (threads <= 0)
+                throw new UsageException("'-r <threads>' requires an number of threads greater than 0");
+        }
+        
+        line_mode = options[LINE_MODE].doesOccur;
+        bulk_mode = options[BULK_MODE].doesOccur;
+        verbose   = options[VERBOSE].doesOccur;
+        uselen    = options[USELEN].doesOccur;
+        doPriorGC = options[GARBAGE_COLLECT].doesOccur;
+
+        if (options[SOURCEDIR].doesOccur) sourceDir = options[SOURCEDIR].value;
+        if (options[ENCODING].doesOccur)  encoding  = options[ENCODING].value;
+        if (options[FILE_NAME].doesOccur) fileName  = options[FILE_NAME].value;
+        if (options[TEST_NAME].doesOccur) testName  = options[TEST_NAME].value;
+        if (options[LOCALE].doesOccur)    locale    = LocaleUtility.getLocaleFromName(options[LOCALE].value);
+
+
+        // build the test list
+        Set testList = new HashSet();
+        int i, j;
+        for (i = 0; i < remainingArgc; ++i) {
+            // is args[i] a method name?
+            if (testProvider.isTestCmd(args[i])) {
+                testList.add(args[i]);
+            } else {
+                // args[i] is neither a method name nor a number. Pass
+                // everything from here on through to the subclass via
+                // setup().
+                break;
+            }
+        }
+
+        // if no tests were specified, put all the tests in the test list
+        if (testList.size() == 0) {
+            Set testNames = testProvider.getAllTestCmdNames();
+            Iterator iter = testNames.iterator();
+            while (iter.hasNext())
+                testList.add((String)iter.next());
+        }
+
+        // pass remaining arguments, if any, through to the subclass via setup() method.
+        String[] subclassArgs = new String[remainingArgc - i];
+        for (j = 0; i < remainingArgc; j++)
+            subclassArgs[j] = args[i++];
+        setup(subclassArgs);
+
+        // Put the heap in a consistent state
+        if (doPriorGC)
+            gc();
+
+        return testList;
+    }
+
+    /**
+     * Translate '-t time' to iterations (or just return '-i iteration')
+     *
+     * @param meth
+     * @param fn
+     * @return rt
+     */
+    private long getIteration(String methName, Function fn) throws InterruptedException {
+        long iter = 0;
+        if (time < 0) { // && iterations > 0
+            iter = iterations;
+        } else { // && iterations < 0
+            // Translate time to iteration
+            // Assuming there is a linear relation between time and iterations
+
+            if (verbose) {
+                System.out.println("= " + methName + " calibrating " + time
+                        + " seconds");
+            }
+
+            long base = time * 1000;
+            // System.out.println("base :" + base);
+            long seed = 1;
+            long t = 0;
+            while (t < base * 0.9 || base * 1.1 < t) { // + - 10%
+                if (iter == 0 || t == 0) {
+                    iter = seed; // start up from 1
+                    seed *= 100; // if the method is too fast (t == 0),
+                    // multiply 100 times
+                    // 100 is rational because 'base' is always larger than 1000
+                } else {
+                    // If 't' is large enough, use linear function to calculate
+                    // new iteration
+                    //
+                    // new iter(base) old iter
+                    // -------------- = -------- = k
+                    // new time old time
+                    //
+                    // System.out.println("before guess t: " + t);
+                    // System.out.println("before guess iter: " + iter);
+                    iter = (long) ((double) iter / t * base); // avoid long
+                    // cut, eg. 1/10
+                    // == 0
+                    if (iter == 0) {
+                        throw new RuntimeException(
+                                "Unable to converge on desired duration");
+                    }
+                }
+                t = performLoops(fn, iter);
+            }
+            // System.out.println("final t : " + t);
+            // System.out.println("final i : " + iter);
+        }
+        return iter;
+    }
+    
+    
+    private long performLoops(Function function, long loops) throws InterruptedException {
+        function.init();
+        if (threads > 1) {
+            Thread[] threadList = new Thread[threads];
+            for (int i=0; i<threads; i++)
+                threadList[i] = new Thread(new FunctionRunner(function, loops, i));
+            
+            long start = System.currentTimeMillis();
+            for (int i=0; i<threads; i++)
+                threadList[i].start();
+            for (int i=0; i<threads; i++)
+                threadList[i].join();
+            return System.currentTimeMillis() - start;
+            
+        } else {
+            return function.time(loops); // ms
+        }
+    }
+    
+
+    /**
+     * Invoke the runtime's garbage collection procedure repeatedly until the
+     * amount of free memory stabilizes to within 10%.
+     */
+    protected void gc() {
+        if (false) {
+            long last;
+            long free = 1;
+            Runtime runtime = Runtime.getRuntime();
+            do {
+                runtime.gc();
+                last = free;
+                free = runtime.freeMemory();
+            } while (((double) Math.abs(free - last)) / free > 0.1);
+            // Wait for the change in free memory to drop under 10%
+            // between successive calls.
+        }
+
+        // From "Java Platform Performance". This is the procedure
+        // recommended by Javasoft.
+        try {
+            System.gc();
+            Thread.sleep(100);
+            System.runFinalization();
+            Thread.sleep(100);
+
+            System.gc();
+            Thread.sleep(100);
+            System.runFinalization();
+            Thread.sleep(100);
+        } catch (InterruptedException e) {
+        }
+    }
+
+
+    public static char[] readToEOS(Reader reader) {
+        ArrayList vec = new ArrayList();
+        int count = 0;
+        int pos = 0;
+        final int MAXLENGTH = 0x8000; // max buffer size - 32K
+        int length = 0x80; // start with small buffers and work up
+        do {
+            pos = 0;
+            length = length >= MAXLENGTH ? MAXLENGTH : length * 2;
+            char[] buffer = new char[length];
+            try {
+                do {
+                    int n = reader.read(buffer, pos, length - pos);
+                    if (n == -1) {
+                        break;
+                    }
+                    pos += n;
+                } while (pos < length);
+            }
+            catch (IOException e) {
+            }
+            vec.add(buffer);
+            count += pos;
+        } while (pos == length);
+
+        char[] data = new char[count];
+        pos = 0;
+        for (int i = 0; i < vec.size(); ++i) {
+            char[] buf = (char[]) vec.get(i);
+            int len = Math.min(buf.length, count - pos);
+            System.arraycopy(buf, 0, data, pos, len);
+            pos += len;
+        }
+        return data;
+    }
+    public static byte[] readToEOS(InputStream stream) {
+
+        ArrayList vec = new ArrayList();
+        int count = 0;
+        int pos = 0;
+        final int MAXLENGTH = 0x8000; // max buffer size - 32K
+        int length = 0x80; // start with small buffers and work up
+        do {
+            pos = 0;
+            length = length >= MAXLENGTH ? MAXLENGTH : length * 2;
+            byte[] buffer = new byte[length];
+            try {
+                do {
+                    int n = stream.read(buffer, pos, length - pos);
+                    if (n == -1) {
+                        break;
+                    }
+                    pos += n;
+                } while (pos < length);
+            }
+            catch (IOException e) {
+            }
+            vec.add(buffer);
+            count += pos;
+        } while (pos == length);
+
+
+        byte[] data = new byte[count];
+        pos = 0;
+        for (int i = 0; i < vec.size(); ++i) {
+            byte[] buf = (byte[]) vec.get(i);
+            int len = Math.min(buf.length, count - pos);
+            System.arraycopy(buf, 0, data, pos, len);
+            pos += len;
+        }
+        return data;
+    }
+
+    protected String[] readLines(String filename, String srcEncoding, boolean bulkMode) {
+        FileInputStream fis = null;
+        InputStreamReader isr = null;
+        BufferedReader br = null;
+        try {
+            fis = new FileInputStream(filename);
+            isr = new InputStreamReader(fis, srcEncoding);
+            br = new BufferedReader(isr);
+        } catch (Exception e) {
+            System.err.println("Error: File access exception: " + e.getMessage() + "!");
+            System.exit(1);
+        }
+        ArrayList list = new ArrayList();
+        while (true) {
+            String line = null;
+            try {
+                line = readDataLine(br);
+            } catch (Exception e) {
+                System.err.println("Read File Error" + e.getMessage() + "!");
+                System.exit(1);
+            }
+            if (line == null) break;
+            if (line.length() == 0) continue;
+            list.add(line);
+        }
+
+        int size = list.size();
+        String[] lines = null;
+
+        if (bulkMode) {
+            lines = new String[1];
+            StringBuffer buffer = new StringBuffer("");
+            for (int i = 0; i < size; ++i) {
+                buffer.append((String) list.get(i));
+                /*if (i < (size - 1)) {
+                    buffer.append("\r\n");
+                }*/
+            }
+            lines[0] = buffer.toString();
+        } else {
+            lines = new String[size];
+            for (int i = 0; i < size; ++i) {
+                lines[i] = (String) list.get(i);
+            }
+        }
+
+        return lines;
+    }
+
+    public String readDataLine(BufferedReader br) throws Exception {
+        String originalLine = "";
+        String line = "";
+        try {
+            line = originalLine = br.readLine();
+            if (line == null) return null;
+            if (line.length() > 0 && line.charAt(0) == 0xFEFF) line = line.substring(1);
+            int commentPos = line.indexOf('#');
+            if (commentPos >= 0) line = line.substring(0, commentPos);
+            line = line.trim();
+        } catch (Exception e) {
+            throw new Exception("Line \"{0}\",  \"{1}\"" + originalLine + " "
+                    + line + " " + e.toString());
+        }
+        return line;
+    }
+
+    
+    public static class BOMFreeReader extends Reader {
+        InputStreamReader reader;
+        String encoding;
+        int MAX_BOM_LENGTH = 5;
+
+        /**
+         * Creates a new reader, skipping a BOM associated with the given
+         * encoding. Equivalent to BOMFreeReader(in, null).
+         * 
+         * @param in
+         *            The input stream.
+         * @throws IOException
+         *             Thrown if reading for a BOM causes an IOException.
+         */
+        public BOMFreeReader(InputStream in) throws IOException {
+            this(in, null);
+        }
+        
+        /**
+         * Creates a new reader, skipping a BOM associated with the given
+         * encoding. If encoding is null, attempts to detect the encoding by the
+         * BOM.
+         * 
+         * @param in
+         *            The input stream.
+         * @param encoding
+         *            The encoding to use. Can be null.
+         * @throws IOException
+         *             Thrown if reading for a BOM causes an IOException.
+         */
+        public BOMFreeReader(InputStream in, String encoding) throws IOException {
+            PushbackInputStream pushback = new PushbackInputStream(in, MAX_BOM_LENGTH);
+            this.encoding = encoding;
+            
+            byte[] start = new byte[MAX_BOM_LENGTH];
+            Arrays.fill(start, (byte)0xa5);
+            
+            int amountRead = pushback.read(start, 0, MAX_BOM_LENGTH);
+            int bomLength = detectBOMLength(start);
+            if (amountRead > bomLength)
+                pushback.unread(start, bomLength, amountRead - bomLength);
+            
+            reader = (encoding == null) ? new InputStreamReader(pushback) : new InputStreamReader(pushback, encoding);
+        }
+
+        /**
+         * Determines the length of a BOM in the beginning of start. Assumes
+         * start is at least a length 5 array. If encoding is null, the check
+         * will not be encoding specific and it will set the encoding of this
+         * BOMFreeReader.
+         * 
+         * @param start
+         *            The starting bytes.
+         * @param encoding
+         *            The encoding. Can be null.
+         * @return The length of a detected BOM.
+         */
+        private int detectBOMLength(byte[] start) {
+            if ((encoding == null || "UTF-16BE".equals(encoding)) && start[0] == (byte) 0xFE && start[1] == (byte) 0xFF) {
+                if (encoding == null) this.encoding = "UTF-16BE";
+                return 2; // "UTF-16BE";
+            } else if (start[0] == (byte) 0xFF && start[1] == (byte) 0xFE) {
+                if ((encoding == null || "UTF-32LE".equals(encoding)) && start[2] == (byte) 0x00
+                        && start[3] == (byte) 0x00) {
+                    if (encoding == null) this.encoding = "UTF-32LE";
+                    return 4; // "UTF-32LE";
+                } else if ((encoding == null || "UTF-16LE".equals(encoding))) {
+                    if (encoding == null) this.encoding = "UTF-16LE";
+                    return 2; // "UTF-16LE";
+                }
+            } else if ((encoding == null || "UTF-8".equals(encoding)) && start[0] == (byte) 0xEF
+                    && start[1] == (byte) 0xBB && start[2] == (byte) 0xBF) {
+                if (encoding == null) this.encoding = "UTF-8";
+                return 3; // "UTF-8";
+            } else if ((encoding == null || "UTF-32BE".equals(encoding)) && start[0] == (byte) 0x00
+                    && start[1] == (byte) 0x00 && start[2] == (byte) 0xFE && start[3] == (byte) 0xFF) {
+                if (encoding == null) this.encoding = "UTF-32BE";
+                return 4; // "UTF-32BE";
+            } else if ((encoding == null || "SCSU".equals(encoding)) && start[0] == (byte) 0x0E
+                    && start[1] == (byte) 0xFE && start[2] == (byte) 0xFF) {
+                if (encoding == null) this.encoding = "SCSU";
+                return 3; // "SCSU";
+            } else if ((encoding == null || "BOCU-1".equals(encoding)) && start[0] == (byte) 0xFB
+                    && start[1] == (byte) 0xEE && start[2] == (byte) 0x28) {
+                if (encoding == null) this.encoding = "BOCU-1";
+                return 3; // "BOCU-1";
+            } else if ((encoding == null || "UTF-7".equals(encoding)) && start[0] == (byte) 0x2B
+                    && start[1] == (byte) 0x2F && start[2] == (byte) 0x76) {
+                if (start[3] == (byte) 0x38 && start[4] == (byte) 0x2D) {
+                    if (encoding == null) this.encoding = "UTF-7";
+                    return 5; // "UTF-7";
+                } else if (start[3] == (byte) 0x38 || start[3] == (byte) 0x39 || start[3] == (byte) 0x2B
+                        || start[3] == (byte) 0x2F) {
+                    if (encoding == null) this.encoding = "UTF-7";
+                    return 4; // "UTF-7";
+                }
+            } else if ((encoding == null || "UTF-EBCDIC".equals(encoding)) && start[0] == (byte) 0xDD
+                    && start[2] == (byte) 0x73 && start[2] == (byte) 0x66 && start[3] == (byte) 0x73) {
+                if (encoding == null) this.encoding = "UTF-EBCDIC";
+                return 4; // "UTF-EBCDIC";
+            }
+
+            /* no known Unicode signature byte sequence recognized */
+            return 0;
+        }
+
+        public int read(char[] cbuf, int off, int len) throws IOException {
+            return reader.read(cbuf, off, len);
+        }
+
+        public void close() throws IOException {
+            reader.close();
+        }
+    }
+}
+
+
+
+// eof
diff --git a/src/com/ibm/icu/dev/test/perf/RBBIPerf.java b/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
new file mode 100644
index 0000000..7f03287
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
@@ -0,0 +1,157 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2004, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.perf;
+import com.ibm.icu.text.*;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.text.BreakIterator;
+
+/**
+ * A class for testing UnicodeSet performance.
+ *
+ * @author Alan Liu
+ * @since ICU 2.4
+ */
+public class RBBIPerf extends PerfTest {
+
+    String                  dataFileName;
+    RuleBasedBreakIterator  bi;
+    BreakIterator           jdkbi;
+    String                  testString;
+
+    public static void main(String[] args) throws Exception {
+        new RBBIPerf().run(args);
+    }
+
+    protected void setup(String[] args) {
+        // We only take one argument, the pattern
+        if (args.length != 2) {
+            throw new RuntimeException("RBBITest params:  data_file_name break_iterator_type ");
+        }
+
+        try {
+            dataFileName = args[0];
+            StringBuffer  testFileBuf = new StringBuffer();
+            InputStream is = new FileInputStream(dataFileName);
+            InputStreamReader isr = new InputStreamReader(is, "UTF-8");           
+            int c;
+            for (;;) {
+                c = isr.read();
+                if (c < 0) {
+                    break;
+                }
+                UTF16.append(testFileBuf, c);
+            }
+            testString = testFileBuf.toString();
+        }
+        catch (IOException e) {
+            throw new RuntimeException(e.toString());   
+        }
+        
+        if (args.length >= 2) {
+            if (args[1].equals("char")) {
+                bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getCharacterInstance();  
+            } else if (args[1].equals("word")) {
+                bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getWordInstance();
+            } else if (args[1].equals("line")) {
+                bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getLineInstance();
+            } else if (args[1].equals("jdkline")) {
+                jdkbi  = BreakIterator.getLineInstance();
+            }
+        }
+        if (bi!=null ) {
+            bi.setText(testString);
+        }
+        if (jdkbi != null) {
+            jdkbi.setText(testString);   
+        }
+        
+    }
+
+    
+    
+    PerfTest.Function testRBBINext() {
+        return new PerfTest.Function() {
+            
+            public void call() {
+                int n;
+                if (bi != null) {
+                    n = bi.first();
+                    for (; n != BreakIterator.DONE; n=bi.next()) {
+                    }   
+                } else {
+                    n = jdkbi.first();
+                    for (; n != BreakIterator.DONE; n=jdkbi.next()) {
+                    }   
+                }
+            }
+        
+            
+            public long getOperationsPerIteration() {
+                int n;
+                int count = 0;
+                if (bi != null) {
+                    for (n=bi.first(); n != BreakIterator.DONE; n=bi.next()) {
+                        count++;
+                    }
+                } else {                  
+                    for (n=jdkbi.first(); n != BreakIterator.DONE; n=jdkbi.next()) {
+                        count++;
+                    }
+                }
+                return count;
+            }
+        };
+    }
+    
+    
+    PerfTest.Function testRBBIPrevious() {
+        return new PerfTest.Function() {
+            
+            public void call() {
+                bi.first();
+                int n=0;
+                for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) {
+                }   
+            }
+            
+            
+            public long getOperationsPerIteration() {
+                int n;
+                int count = 0;
+                for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) {
+                    count++;
+                }   
+                return count;
+            }
+        };
+    }
+
+
+    PerfTest.Function testRBBIIsBoundary() {
+        return new PerfTest.Function() {
+            
+            public void call() {
+                int n=testString.length();
+                int i;
+                for (i=0; i<n; i++) {
+                    bi.isBoundary(i);
+                }   
+            }
+            
+            public long getOperationsPerIteration() {
+                int n = testString.length();
+                return n;
+            }
+        };
+    }
+
+
+ 
+}
diff --git a/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java b/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java
new file mode 100644
index 0000000..dd8c40f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java
@@ -0,0 +1,372 @@
+/*
+**********************************************************************
+* Copyright (c) 2006-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+
+package com.ibm.icu.dev.test.perf;
+
+import java.nio.ByteBuffer;
+import java.util.ResourceBundle;
+
+import com.ibm.icu.util.UResourceBundle;
+
+public class ResourceBundlePerf extends PerfTest {
+    
+    private UResourceBundle icuRes  = null;
+    private ResourceBundle javaRes = null;
+    
+    public static void main(String[] org_args) throws Exception {
+      new ResourceBundlePerf().run(org_args);
+    }
+    
+    protected void setup(String[] args) {
+        icuRes = UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "testtypes");
+        javaRes = ResourceBundle.getBundle("com.ibm.icu.dev.data.TestDataElements_testtypes");
+    }    
+
+    PerfTest.Function TestResourceBundleConstructionJava() {
+        return new PerfTest.Function() {
+            public void call() {
+                javaRes = ResourceBundle.getBundle("com.ibm.icu.dev.data.TestDataElements_testtypes");
+            }
+        };
+    }
+    PerfTest.Function TestResourceBundleConstructionICU() {
+        return new PerfTest.Function() {
+            public void call() {
+                UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "testtypes");
+            }       
+        };
+    }
+    
+    PerfTest.Function TestEmptyArrayJava() {
+        return new PerfTest.Function(){
+            public void call(){
+                String[] s = javaRes.getStringArray("emptyarray");
+                if (s.length != 0) throw new Error ("not zero");
+            }
+        };
+    }
+
+    PerfTest.Function TestEmptyArrayICU() {
+        return new PerfTest.Function(){
+            public void call(){
+                String[] s = icuRes.getStringArray("emptyarray");
+                if (s.length != 0) throw new Error ("not zero");
+            }
+        };
+    }
+    
+    class GetStringJava extends PerfTest.Function {
+        String key;
+        String expected;
+        GetStringJava(String key, String expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            String s = javaRes.getString(key);
+            if (!s.equals(expected)) throw new Error("not equal");
+        }
+    }
+    
+    class GetStringIcu extends PerfTest.Function {
+        String key;
+        String expected;
+        GetStringIcu(String key, String expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            String s = icuRes.getString(key);
+            if (!s.equals(expected)) throw new Error("not equal");
+        }
+    }
+    
+    PerfTest.Function TestZeroTestJava(){
+        return new GetStringJava("zerotest", "abc\u0000def");
+    }
+
+    PerfTest.Function TestZeroTestICU(){
+        return new GetStringIcu("zerotest", "abc\u0000def");
+    }
+
+    PerfTest.Function TestEmptyExplicitStringJava(){
+        return new GetStringJava("emptyexplicitstring", "");
+    }
+    
+    PerfTest.Function TestEmptyExplicitStringICU(){
+        return new GetStringIcu("emptyexplicitstring", "");
+    }
+
+    PerfTest.Function TestEmptyStringJava(){
+        return new GetStringJava("emptystring", "");
+    }
+    
+    PerfTest.Function TestEmptyStringICU(){
+        return new GetStringIcu("emptystring", "");
+    }
+
+    class GetIntJava extends PerfTest.Function {
+        String key;
+        int expected;
+        GetIntJava(String key, int expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            Integer t = (Integer) javaRes.getObject(key);
+            if (t.intValue() != expected) throw new Error("not equal");
+        }
+    }
+    
+    class GetIntIcu extends PerfTest.Function {
+        String key;
+        int expected;
+        GetIntIcu(String key, int expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            UResourceBundle temp = icuRes.get(key);
+            int t = temp.getInt();
+            if (t != expected) throw new Error("not equal");
+        }
+    }
+
+    PerfTest.Function TestGet123Java(){
+        return new GetIntJava("onehundredtwentythree", 123);
+    }
+    
+    PerfTest.Function TestGet123ICU(){
+        return new GetIntIcu("onehundredtwentythree", 123);
+    }
+
+    PerfTest.Function TestGetEmptyIntJava(){
+        return new GetIntJava("emptyint", 0);
+    }
+    
+    PerfTest.Function TestGetEmptyIntICU(){
+        return new GetIntIcu("emptyint", 0);
+    }
+
+    PerfTest.Function TestGetOneJava(){
+        return new GetIntJava("one", 1);
+    }
+    
+    PerfTest.Function TestGetOneICU(){
+        return new GetIntIcu("one", 1);
+    }
+    
+    PerfTest.Function TestGetMinusOneJava(){
+        return new GetIntJava("minusone", -1);
+    }
+    
+    PerfTest.Function TestGetMinusOneICU(){
+        return new GetIntIcu("minusone", -1);
+    }
+
+    PerfTest.Function TestGetPlusOneJava(){
+        return new GetIntJava("plusone", 1);
+    }
+    
+    PerfTest.Function TestGetPlusOneICU(){
+        return new GetIntIcu("plusone", 1);
+    }
+
+    PerfTest.Function TestGetMinusOneUintJava(){ // TODO: no equivalence?
+        return new PerfTest.Function(){
+            public void call(){
+                Integer t = (Integer) javaRes.getObject("minusone");
+                if (t.intValue() != -1 ) throw new Error("not equal");
+            }
+        };
+    }
+    
+    PerfTest.Function TestGetMinusOneUintICU(){
+        return new PerfTest.Function(){
+            public void call(){
+                UResourceBundle sub = icuRes.get("minusone");
+                int t = sub.getUInt();
+                if (t != 0xFFFFFFF) throw new Error("not equal");
+            }
+        };
+    }
+    
+
+    class GetIvJava  extends PerfTest.Function {
+        String key;
+        int[] expected;
+        GetIvJava(String key, int[] expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            Integer[] iv = (Integer[]) javaRes.getObject(key);
+            for (int i = 0; i < iv.length; i++){
+                if (expected[i] != iv[i].intValue()) throw new Error("not equal"); 
+            }
+        }
+    }
+    
+    class GetIvIcu  extends PerfTest.Function {
+        String key;
+        int[] expected;
+        GetIvIcu(String key, int[] expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            UResourceBundle temp = icuRes.get(key);
+            int[] iv = temp.getIntVector();
+            for (int i = 0; i < iv.length; i++){
+                if (expected[i] != iv[i]) throw new Error("not equal"); 
+            }
+        }
+    }
+
+    PerfTest.Function TestGetIntegerArrayJava(){
+        return new GetIvJava("integerarray", new int[]{1,2,3,-3,4,5,6,7});
+    }
+    
+    PerfTest.Function TestGetIntegerArrayICU(){
+        return new GetIvIcu("integerarray", new int[]{1,2,3,-3,4,5,6,7});
+    }
+
+    PerfTest.Function TestGetEmptyIntegerArrayJava(){
+        return new GetIvJava("emptyintv", new int[0]);
+    }
+    
+    PerfTest.Function TestGetEmptyIntegerArrayICU(){
+        return new GetIvIcu("emptyintv", new int[0]);
+    }
+
+    
+    class GetBinaryIcu extends PerfTest.Function {
+        String key;
+        int expected_len;
+        GetBinaryIcu(String key, int expected_len) {
+            this.key = key;
+            this.expected_len = expected_len;
+        }
+        public void call() {
+            UResourceBundle temp = icuRes.get(key);
+            ByteBuffer got = temp.getBinary();
+            if(got.remaining() != expected_len) throw new Error("not the expected len");
+            for(int i=0; i< got.remaining(); i++){
+              byte b = got.get();
+              if (i != b) throw new Error("not equal");
+            }
+        }
+    }
+
+    class GetBinaryJava extends PerfTest.Function {
+        String key;
+        int expected_len;
+        GetBinaryJava(String key, int expected_len) {
+            this.key = key;
+            this.expected_len = expected_len;
+        }
+        public void call() {
+            ByteBuffer got = ByteBuffer.wrap((byte[])javaRes.getObject(key));
+            if(got.remaining() != expected_len) throw new Error("not the expected len");
+            for(int i=0; i< got.remaining(); i++){
+              byte b = got.get();
+              if (i != b) throw new Error("not equal");
+            }
+        }
+    }
+
+    PerfTest.Function TestGetBinaryTestICU(){
+        return new GetBinaryIcu("binarytest", 15);
+    }
+    
+    PerfTest.Function TestGetBinaryTestJava(){
+        return new GetBinaryJava("binarytest", 15);
+    }
+    
+    PerfTest.Function TestGetEmptyBinaryICU(){
+        return new GetBinaryIcu("emptybin", 0);
+    }
+    
+    PerfTest.Function TestGetEmptyBinaryJava(){
+        return new GetBinaryJava("emptybin", 0);
+    }
+
+    class GetMenuJava extends PerfTest.Function {
+        String key;
+        String[] expected;
+        GetMenuJava(String key, String[] expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            int p = 0;
+            Object[][] menus = (Object[][]) javaRes.getObject(key);
+            int sizei = menus.length;
+            for (int i=0; i<sizei; i++){
+                String menu_name = (String) menus[i][0];
+                Object[][] menu_items = (Object[][]) menus[i][1];
+                if (!expected[p++].equals(menu_name)) throw new Error("not equal");
+                
+                int sizej = menu_items.length;
+                for (int j=0; j< sizej; j++){
+                    String itemKey = (String) menu_items[j][0];
+                    String value = (String) menu_items[j][1];
+                    if(!expected[p++].equals(itemKey)) throw new Error("not equal");
+                    if(!expected[p++].equals(value)) throw new Error("not equal");
+                }
+            }
+            
+        }
+    }
+    
+    class GetMenuIcu extends PerfTest.Function {
+        String key;
+        String[] expected;
+        GetMenuIcu(String key, String[] expected) {
+            this.key = key;
+            this.expected = expected;
+        }
+        public void call() {
+            int p = 0;
+            UResourceBundle menus = icuRes.get(key);
+            int sizei = menus.getSize();
+            for (int i=0; i<sizei; i++){
+                UResourceBundle menu = menus.get(i);
+                String menu_name = menu.getKey();
+                if (!expected[p++].equals(menu_name)) throw new Error("not equal");
+                
+                int sizej = menu.getSize();
+                for (int j=0; j< sizej; j++){
+                    UResourceBundle menu_item = menu.get(j);
+                    String itemKey = menu_item.getKey();
+                    String value = menu_item.getString();
+                    if(!expected[p++].equals(itemKey)) throw new Error("not equal");
+                    if(!expected[p++].equals(value)) throw new Error("not equal");
+                }
+            }
+            
+        }
+    }
+
+    PerfTest.Function TestGetMenuJava(){
+        String[] expected = new String[]{"file", "exit", "Exit", "open", "Open", "save", "Save"};
+        return new GetMenuJava("menu", expected);
+    }
+    
+    PerfTest.Function TestGetMenuICU(){
+        String[] expected = new String[]{"file", "exit", "Exit", "open", "Open", "save", "Save"};
+        return new GetMenuIcu("menu", expected);
+    }
+
+    PerfTest.Function TestGetEmptyMenuJava(){
+        return new GetMenuJava("emptytable", new String[]{});
+    }
+    
+    PerfTest.Function TestGetEmptyMenuICU(){
+        return new GetMenuIcu("emptytable", new String[]{});
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java b/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java
new file mode 100644
index 0000000..4eab56b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java
@@ -0,0 +1,533 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.perf;
+
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * Base performance test that takes in a method name for testing with JDK.
+ * To use 
+ * <code>
+ * java com.ibm.icu.dev.test.perf.UCharacterPerf $MethodName $LoopCount - 
+ *                                  $START_TEST_CHARACTER $END_TEST_CHARACTER
+ * </code>
+ * where $*_TEST_CHARACTER are in hex decimals with a leading 0x
+ */
+public final class UCharacterPerf extends PerfTest 
+{
+    // public methods ------------------------------------------------------
+    
+    public static void main(String[] args) throws Exception
+    {   
+        new UCharacterPerf().run(args);
+        // new UCharacterPerf().TestPerformance();
+    }
+    
+    protected void setup(String[] args) {
+        // We only take one argument, the pattern
+        MIN_ = Character.MIN_VALUE;
+        MAX_ = Character.MAX_VALUE;
+        if (args.length >= 1) {
+            MIN_ = Integer.parseInt(args[0], 16);
+        }
+        if (args.length >= 2) {
+            MAX_ = Integer.parseInt(args[1], 16);
+        }
+    }
+    
+    PerfTest.Function testDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.digit(ch, 10);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.digit(ch, 10);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testGetNumericValue() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.getNumericValue(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+
+    PerfTest.Function testJDKGetNumericValue() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.getNumericValue(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+     
+    PerfTest.Function testGetType() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.getType(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }   
+
+    PerfTest.Function testJDKGetType() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.getType(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+
+    PerfTest.Function testIsDefined() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isDefined(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testJDKIsDefined() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isDefined(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+
+    PerfTest.Function testIsDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isDigit(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testJDKIsDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isDigit(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testIsIdentifierIgnorable() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isIdentifierIgnorable(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testJDKIsIdentifierIgnorable() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isIdentifierIgnorable(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testIsISOControl() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isISOControl(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsISOControl() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isISOControl(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testIsLetter() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isLetter(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsLetter() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isLetter(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testIsLetterOrDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isLetterOrDigit(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsLetterOrDigit() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isLetterOrDigit(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+
+    PerfTest.Function testIsLowerCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isLowerCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testJDKIsLowerCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isLowerCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testIsSpaceChar() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isSpaceChar(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testJDKIsSpaceChar() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isSpaceChar(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }  
+    
+    PerfTest.Function testIsTitleCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isTitleCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsTitleCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isTitleCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+    
+    PerfTest.Function testIsUnicodeIdentifierPart() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isUnicodeIdentifierPart(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testJDKIsUnicodeIdentifierPart() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isUnicodeIdentifierPart(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testIsUnicodeIdentifierStart() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isUnicodeIdentifierStart(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testJDKIsUnicodeIdentifierStart() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isUnicodeIdentifierStart(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    } 
+    
+    PerfTest.Function testIsUpperCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    UCharacter.isUpperCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsUpperCase() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isUpperCase(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }    
+         
+    PerfTest.Function testIsWhiteSpace() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (int ch = MIN_; ch < MAX_; ch ++) {
+                    UCharacter.isWhitespace(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    PerfTest.Function testJDKIsWhiteSpace() 
+    {
+        return new PerfTest.Function() {
+            public void call() {
+                for (char ch = (char)MIN_; ch < (char)MAX_; ch ++) {
+                    Character.isWhitespace(ch);
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return MAX_ - MIN_ + 1;
+            }
+        };
+    }
+    
+    // private data member --------------------------------------------------
+    
+    /**
+     * Minimum codepoint to do test. Test is ran from MIN_ to MAX_
+     */
+    private static int MIN_;
+    /**
+     * Minimum codepoint to do test. Test is ran from MIN_ to MAX_
+     */
+    private static int MAX_;
+}
diff --git a/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java b/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
new file mode 100644
index 0000000..32e990f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
@@ -0,0 +1,161 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2007, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.perf;
+import com.ibm.icu.text.*;
+import java.util.HashSet;
+import java.util.Iterator;
+
+/**
+ * A class for testing UnicodeSet performance.
+ *
+ * @author Alan Liu
+ * @since ICU 2.4
+ */
+public class UnicodeSetPerf extends PerfTest {
+
+    String pattern;
+    UnicodeSet testChars;
+    UnicodeSetIterator it;
+    UnicodeSet us;
+    HashSet hs;
+
+    public static void main(String[] args) throws Exception {
+        new UnicodeSetPerf().run(args);
+    }
+
+    protected void setup(String[] args) {
+        // We only take one argument, the pattern
+        if (args.length != 1) {
+            throw new RuntimeException("Please supply UnicodeSet pattern");
+        }
+
+        pattern = args[0];
+        testChars = new UnicodeSet(pattern);
+        it = new UnicodeSetIterator(testChars);
+        us = new UnicodeSet();
+        hs = new HashSet();
+    }
+
+    PerfTest.Function testUnicodeSetAdd() {
+        return new PerfTest.Function() {
+            public void call() {
+                us.clear();
+                it.reset();
+                int n=0;
+                while (it.nextRange()) {
+                    for (int cp = it.codepoint; cp <= it.codepointEnd; ++cp) {
+                        us.add(cp);
+                        ++n;
+                    }
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return testChars.size();
+            }
+        };
+    }
+
+    PerfTest.Function testHashSetAdd() {
+        return new PerfTest.Function() {
+            public void call() {
+                hs.clear();
+                it.reset();
+                int n=0;
+                while (it.nextRange()) {
+                    for (int cp = it.codepoint; cp <= it.codepointEnd; ++cp) {
+                        hs.add(new Integer(cp));
+                        ++n;
+                    }
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return testChars.size();
+            }
+        };
+    }
+
+    PerfTest.Function testUnicodeSetContains() {
+        us.clear();
+        us.set(testChars);
+        
+        return new PerfTest.Function() {
+            public void call() {
+                int temp = 0;
+                for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+                    if (us.contains(cp)) {
+                        temp += cp;
+                    }
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return 0x110000;
+            }
+        };
+    }
+
+    PerfTest.Function testHashSetContains() {
+        hs.clear();
+        it.reset();
+        while (it.next()) {
+            hs.add(new Integer(it.codepoint));
+        }
+        return new PerfTest.Function() {
+            public void call() {
+                int temp = 0;
+                for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+                    if (hs.contains(new Integer(cp))) {
+                        temp += cp;
+                    }
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return 0x110000;
+            }
+        };
+    }
+
+    PerfTest.Function testUnicodeSetIterate() {
+        return new PerfTest.Function() {
+            public void call() {
+                int temp = 0;
+                UnicodeSetIterator uit = new UnicodeSetIterator(testChars);
+                while (uit.next()) {
+                    temp += uit.codepoint;
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return testChars.size();
+            }
+        };
+    }
+
+    PerfTest.Function testHashSetIterate() {
+        hs.clear();
+        it.reset();
+        while (it.next()) {
+            hs.add(new Integer(it.codepoint));
+        }
+        return new PerfTest.Function() {
+            public void call() {
+                int temp = 0;
+                Iterator itr = hs.iterator();
+                while (itr.hasNext()) {
+                    temp += ((Integer)itr.next()).intValue();
+                }
+            }
+
+            public long getOperationsPerIteration() {
+                return testChars.size();
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/perf/collationperf.pl b/src/com/ibm/icu/dev/test/perf/collationperf.pl
new file mode 100755
index 0000000..2c568c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/collationperf.pl
@@ -0,0 +1,126 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+#
+#  ICU and Windows Collation performance test script
+#      Used in conjunction with the collperf test program.
+#      This script defines the locales and data files to be tested,
+#        runs the collperf program, and formats and prints the results.
+#
+#        7 June 2001   Andy Heninger
+#
+#  ICU4J and Java Collator performance test script
+#  2002-09-25 modified by Richard Liang
+
+print "To run this performance test\n";
+print "cd to the ICU4J root directory, one directory below src\n";
+print "run perl src\\com\\ibm\\icu\\dev\\test\\perf\\collationperf.pl\n";
+
+#
+# Map defines the set of data files to run in each locale
+#
+%dataFiles = (
+   "en_US",         "TestNames_Latin.txt",
+   "da_DK",         "TestNames_Latin.txt",
+   "de_DE",         "TestNames_Latin.txt",
+   "de__PHONEBOOK", "TestNames_Latin.txt",
+   "fr_FR",         "TestNames_Latin.txt",
+   "ja_JP",         "TestNames_Latin.txt TestNames_Japanese_h.txt TestNames_Japanese_k.txt TestNames_Asian.txt",
+   "zh_CN",         "TestNames_Latin.txt TestNames_Chinese.txt",
+   "zh_TW",         "TestNames_Latin.txt TestNames_Chinese.txt",
+   "zh__PINYIN",    "TestNames_Latin.txt TestNames_Chinese.txt",
+   "ru_RU", 	    "TestNames_Latin.txt TestNames_Russian.txt",
+   "th",            "TestNames_Latin.txt TestNames_Thai.txt",
+   "ko_KR",         "TestNames_Latin.txt TestNames_Korean.txt",
+   );
+
+
+#
+#  Outer loop runs through the locales to test
+#     (Edit this list dirctly to make changes)
+#
+   foreach $locale (
+	   "en_US",
+	   "da_DK",
+	   "de_DE",
+	   "de__PHONEBOOK",
+	   "fr_FR",
+	   "ja_JP",
+       "zh_CN",
+	   "zh_TW",
+	   "zh__PINYIN",
+       "ko_KR",
+	   "ru_RU",
+	   "th",
+                   )
+       {
+       #
+       # Inner loop runs over the set of data files specified for each locale.
+       #    (Edit the %datafiles initialization, above, to make changes.
+       #
+       $ff = $dataFiles{$locale};
+       @ff = split(/[\s]+/, $ff);
+       foreach $data (@ff) {
+
+          #
+          # Run ICU Test for this (locale, data file) pair.
+          #
+          $iStrCol = `java -classpath classes com.ibm.icu.dev.test.perf.CollationPerformanceTest -terse -file src/com/ibm/icu/dev/test/perf/data/collation/$data -locale $locale -loop 1000 -binsearch`;
+          $iStrCol =~s/[,\s]*//g;  # whack off the leading "  ," in the returned result.
+          doKeyTimes("java -classpath classes com.ibm.icu.dev.test.perf.CollationPerformanceTest -terse -file src/com/ibm/icu/dev/test/perf/data/collation/$data -locale $locale -loop 1000 -keygen",
+                     $iKeyGen, $iKeyLen);
+
+
+          #
+          # Run Windows test for this (locale, data file) pair.  Only do if
+          #    we are not on Windows 98/ME and we hava a windows langID
+          #    for the locale.
+          #
+          $wStrCol = $wKeyGen = $wKeyLen = 0;
+          $wStrCol = `java -classpath classes com.ibm.icu.dev.test.perf.CollationPerformanceTest -terse -file src/com/ibm/icu/dev/test/perf/data/collation/$data -locale $locale -loop 1000 -binsearch -java`;
+          $wStrCol =~s/[,\s]*//g;  # whack off the leading "  ," in the returned result.
+          doKeyTimes("java -classpath classes com.ibm.icu.dev.test.perf.CollationPerformanceTest -terse -file src/com/ibm/icu/dev/test/perf/data/collation/$data -locale $locale -loop 1000 -keygen -java",
+                     $wKeyGen, $wKeyLen);
+                     
+          $collDiff = $keyGenDiff = $keyLenDiff = 0;
+          if ($wKeyLen > 0) {
+              $collDiff   = (($wStrCol - $iStrCol) / $iStrCol) * 100;
+              $keyGenDiff = (($wKeyGen - $iKeyGen) / $iKeyGen) * 100;
+              $keyLenDiff = (($wKeyLen - $iKeyLen) / $iKeyLen) * 100;
+          }
+
+         #
+         #  Write the line of results for this (locale, data file).
+         #
+         write;
+    }
+ }
+
+#
+#  doKeyGenTimes($Command_to_run, $time, $key_length)
+#       Do a key-generation test and return the time and key length/char values.
+#
+sub doKeyTimes($$$) {
+   # print "$_[0]\n";
+   local($x) = `$_[0]`;                  # execute the collperf command.
+   ($_[1], $_[2]) = split(/\,/, $x);     # collperf returns "time, keylength" string.
+}
+
+
+#
+#  Output Formats ...
+#
+#
+format STDOUT_TOP =
+                                      -------- ICU --------   ------ JAVA -------      (JAVA - ICU)/ICU
+Locale     Data file                  strcoll keygen  keylen  strcoll keygen  keylen    coll  keygen  keylen
+------------------------------------------------------------------------------------------------------------
+.
+
+format STDOUT =
+@<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<| @######  @####   @#.##  |@##### @#####   @#.## | @###%  @###%   @###%
+$locale, $data, $iStrCol, $iKeyGen, $iKeyLen, $wStrCol, $wKeyGen, $wKeyLen, $collDiff, $keyGenDiff, $keyLenDiff
+.
diff --git a/src/com/ibm/icu/dev/test/perf/converterperf.pl b/src/com/ibm/icu/dev/test/perf/converterperf.pl
new file mode 100755
index 0000000..eb4b311
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/converterperf.pl
@@ -0,0 +1,510 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.ConverterPerformanceTest';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+##               ['TestByteToCharConverter', 'TestByteToCharConverterICU'],
+##               ['TestCharToByteConverter', 'TestCharToByteConverterICU'],
+                 ['TestCharsetDecoder',      'TestCharsetDecoderICU'],
+                 ['TestCharsetEncoder',      'TestCharsetEncoderICU']
+               );
+
+# Patterns which define the set of characters used for testing.
+
+my $SOURCEDIR ="src/com/ibm/icu/dev/test/perf/data/conversion/";
+
+my @OPTIONS = (
+#                                 src text          src encoding    test encoding  
+                                [ "arabic.txt",     "UTF-8",        "csisolatinarabic"],
+                                [ "french.txt",     "UTF-8",        "csisolatin1"],
+                                [ "greek.txt",      "UTF-8",        "csisolatingreek"],
+                                [ "hebrew.txt",     "UTF-8",        "csisolatinhebrew"],
+#                               [ "hindi.txt" ,     "UTF-8",        "iscii"],
+                                [ "japanese.txt",   "UTF-8",        "EUC-JP"],
+#                               [ "japanese.txt",   "UTF-8",        "csiso2022jp"],
+                                [ "japanese.txt",   "UTF-8",        "shift_jis"],
+#                               [ "korean.txt",     "UTF-8",        "csiso2022kr"],
+                                [ "korean.txt",     "UTF-8",        "EUC-KR"],
+                                [ "s-chinese.txt",  "UTF-8",        "EUC_CN"],
+                                [ "arabic.txt",     "UTF-8",        "UTF-8"],
+                                [ "french.txt",     "UTF-8",        "UTF-8"],                                
+                                [ "greek.txt",      "UTF-8",        "UTF-8"],
+                                [ "hebrew.txt",     "UTF-8",        "UTF-8"],
+                                [ "hindi.txt" ,     "UTF-8",        "UTF-8"],
+                                [ "japanese.txt",   "UTF-8",        "UTF-8"],
+                                [ "korean.txt",     "UTF-8",        "UTF-8"],
+                                [ "s-chinese.txt",  "UTF-8",        "UTF-8"],
+                                [ "french.txt",     "UTF-8",        "UTF-16BE"],
+                                [ "french.txt",     "UTF-8",        "UTF-16LE"],
+                                [ "english.txt",    "UTF-8",        "US-ASCII"],
+                          );
+
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+main();
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $title = "ICU4J Performance Test $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Options</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@OPTIONS) {
+            print HTML "<TR><TD>@$pat[0], @$pat[2]</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod [@$pat]\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\n$baselineMethod [@$pat]\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method for input file @$pat[0] for encoding @$pat[2] , ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+        
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+        
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $fileName = $SOURCEDIR.@$pat[0] ;
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -classpath classes $TESTCLASS $method $n -p $passes -f $fileName -e @$pat[1] -T @$pat[2]";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt
new file mode 100644
index 0000000..d71245e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Asian.txt
@@ -0,0 +1,10008 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+あきもと,やすお
+あいかわ,のりお
+あかつか,かずひこ
+あわず,あきら
+あさの,よしや
+あらき,よしかず
+いのうえ,ひろひと
+かとう,まさとし
+なかむら,けいぞう
+ふじわら,たかこ
+やなぎはら,みどり
+かわだ,なおこ
+いしの,きよなが
+ごとう,かつのり
+いしじま,りょうへい
+あとう,まさのり
+みしま,たかゆき
+みよし,のぶまさ
+たちの,じゅん
+おおの,かずお
+きたがわ,よしたか
+ふるさわ,さとし
+おおはし,ひとし
+よしかわ,としゆき
+かわい,としお
+いしと,こうき
+いまい,たかゆき
+やまなか,さつみ
+ほりかわ,かつみ
+すずき,しゅんじ
+あわえ,あつし
+ながせ,たかひろ
+こばやし,じゅんいち
+まえだ,ひろし
+かとう,まさかず
+すみた,かおる
+せきぐち,たかゆき
+たなか,てるひさ
+ひらの,たかし
+はまぐち,しんじ
+さかがみ,のりかず
+こばやし,やすし
+たきもと,のりこ
+ほし,ひろふみ
+おおたか,ゆうこ
+すぎむら,しげお
+あおき,まさる
+なかはら,ゆうぞう
+かとう,おさむ
+まえさか,ともみつ
+ふじたに,かずひこ
+ほった,しげひと
+あきやま,ゆたか
+ふじた,まさゆき
+とよなが,やすひろ
+はっとり,まさお
+のむら,しげお
+かわしま,たかこ
+むろや,てつお
+あしかわ,やすしげ
+はやし,たかお
+みやがわ,ふみのり
+おぐら,やすひろ
+よしだ,としひこ
+くどう,ひろし
+くまがい,たかゆき
+にしお,ひでき
+おおいやま,のぼる
+たけたに,ふとし
+いしだ,かつや
+おいかわ,のぶあき
+たかはし,せいじ
+むらた,とおる
+すずき,すすむ
+はやし,しんちょう
+くろかわ,まさあき
+やじま,とおる
+かつらい,わたる
+あかり,りょうじ
+あずま,のぶゆき
+あつみ,しゅうじ
+まるお,よしゆき
+いけお,みのる
+とりやま,りつお
+はまの,よういち
+やまもと,こうたろう
+こうち,ゆうすけ
+なかじま,のりひこ
+あら,ひろし
+ほそかわ,まさひろ
+いずみ,かねみつ
+あわじ,あつお
+みずひき,よしお
+おだじま,なほみ
+ふるかわ,しげお
+みずぐち,じろう
+いとう,ひろし
+ふくい,さとし
+ふじはら,たけひと
+やの,ゆうじ
+はやしぐち,ひろし
+ほり,としゆき
+よしい,たかし
+あんどう,ひろし
+はた,こういち
+こばり,ひでゆき
+おだしま,かつろう
+うえやま,みつなり
+むた,まなぶ
+たなか,しげお
+こんの,ゆうこ
+ふじわら,としはる
+みやき,ゆたか
+はなわ,まさひろ
+てじま,あきら
+くぼ,あつし
+おおば,しんご
+こんの,たくや
+まつばら,ひでお
+はしもと,すみこ
+わたなべ,かずひろ
+こたき,てつや
+ふかや,ももき
+まつうら,てっぺい
+ふなだ,かずひこ
+ひがしだ,としゆき
+いのまた,ひろし
+さとう,ひろみ
+いとう,たつし
+みたむら,まゆみ
+すがはら,みつる
+たかみや,ひでのぶ
+やまぐち,こすけ
+おた,つよし
+せのお,はじめ
+しばざき,あつし
+なかむら,やすひろ
+ふじかわ,ひろゆき
+あらい,りゅうじ
+おおくら,ひさのり
+まつば,しげる
+ためひろ,もとこ
+まんぽ,かつみ
+こぐち,たかし
+たにぐち,なおすけ
+やまもと,たかひろ
+ひらもと,ひであき
+あんらく,たかし
+たなか,のりこ
+ちゃき,しげひで
+さかい,ちはる
+いなおか,ひろかず
+うしじま,しんいち
+こけつ,あきひさ
+むらた,ひとし
+きむら,よしひろ
+しんたに,りゅうじ
+おおはた,のぶあき
+たぶち,ゆたか
+すみだ,きよし
+みうら,ななこ
+りゅうと,ひろみ
+いけだ,ひろなり
+たかやなぎ,ひろふみ
+えんど,けんいち
+おしかわ,しんじ
+こばやし,ひでゆき
+やまだ,いわお
+おだ,まさお
+たきざわ,あつし
+もり,やすのり
+かなざわ,たつゆき
+おおた,たかあき
+おおつ,てつろう
+ふじもと,かずひろ
+もりかわ,まさのぶ
+いとう,こうじ
+かとう,こういち
+うえの,よしひこ
+おおかわ,さかえ
+まるい,じゅんこ
+いわお,しゅうじ
+うめだ,かずや
+めかた,まさる
+つじ,つぐひこ
+たご,ひろし
+やました,まさと
+すぎやま,ひろゆき
+ふたば,としあき
+みやひら,みちあき
+にしざき,すすむ
+たなか,くにこ
+むらもと,ともあき
+まえだ,ひさかず
+みやけ,あつし
+とうじま,たつひろ
+おおや,まさる
+うえの,ともひろ
+たかさき,やすひさ
+こんの,よしひさ
+たけお,のりかず
+かなやま,やすひこ
+おおおか,としろう
+こばやし,しゅう
+にしざか,みか
+ますみだ,ともひこ
+つぼい,やすお
+たがみ,まさる
+おかだ,てるお
+かたぎり,さとし
+かわて,たかし
+みずい,あやお
+かさおか,としひこ
+ひがしたに,ひでふみ
+うしき,かずいち
+ひらさわ,ながこ
+なりた,しゅういち
+こだま,かずひろ
+いのまた,ひろみ
+きむら,しょうご
+いとう,ふみお
+わたなべ,てるあき
+てらさわ,みつお
+はやし,しんいち
+あさくら,しんや
+やまき,こういち
+なかむら,しんいちろう
+えのもと,ひろみち
+かまた,たかひろ
+はしもと,なおき
+あらい,よしみ
+かりや,たかひこ
+こんど,よしき
+ますだ,ひろお
+いとう,けいすけ
+おか,みちはる
+おおつか,ひでき
+まつお,こうじ
+あそ,てるかず
+かみむら,ひろゆき
+たかばたけ,しげのり
+ふくだ,ひろゆき
+たかはし,けんと
+いわき,まこと
+すん,とよゆき
+あんどう,よしお
+はしもと,かな
+やはた,ひでお
+ふじき,けんじ
+まつお,さとし
+あおき,よういちろう
+ごとう,しんじ
+にしかわ,ひとし
+すみと,まさふみ
+ひらの,こうじ
+いとう,けい
+こいずみ,のりこ
+かわばた,のぞみ
+むとう,かつのり
+あだち,まさし
+きら,まさし
+あやの,こうき
+たるい,よしお
+はやし,きょうこ
+いけだ,じゅん
+ほりみぞ,けいすけ
+ふるなが,はるひこ
+おしま,なすお
+はやし,ひとし
+にし,ゆきみつ
+こむろ,かなめ
+ひろたに,よしお
+すが,ひろし
+つるみ,あきひさ
+とみやま,かずみつ
+やまざき,ようこ
+いしだ,しょういちろう
+うちとみ,あきら
+おおさわ,よしかず
+やなぎ,ひでひろ
+みやした,ひでき
+たかはし,こうじ
+とがわ,ひろゆき
+なかむら,しげる
+うえむら,たけし
+あさの,ゆういち
+おおやま,けんじ
+かわの,えいこ
+ばば,ひとし
+いとう,しんいち
+うえの,のぶゆき
+しらい,けんしん
+いかみ,はるお
+かわしま,ともゆき
+みやけ,たかひろ
+さくらい,けんじ
+たけのした,しゅうへい
+にしおか,せいいちろう
+くろき,まさよし
+たなか,みのる
+いいじま,たかし
+さとう,ひろあき
+さくらい,かずしげ
+やなぎさわ,のぶお
+うちやま,しげよし
+おくつ,かずとし
+にしやま,せいじ
+たけだ,たかこ
+ふりはら,かずお
+やぶき,まさひろ
+なか,かずひろ
+よしおか,かずや
+もちずき,たかゆき
+すぎやま,ひでひろ
+いわなが,けいいち
+みわ,はるかず
+ほりかわ,かつき
+たかだ,こうじ
+いしまる,しげやす
+おむら,ひでお
+きたむら,りか
+すぎき,たかき
+にしむら,ちえこ
+なかはら,こういち
+まつもと,あきら
+ふくしま,まさる
+かじおか,あきひと
+なかざわ,のぼる
+ますざき,たかし
+なか,としたか
+おさだ,はじめ
+かわた,なおみ
+よしだ,こうじ
+なか,としひろ
+えいどめ,ひでかず
+まつもと,よしまさ
+ながさか,よしあき
+ふじさわ,かつひこ
+きよたに,つとむ
+ありもと,せいこ
+えぞえ,けいいち
+つちや,かずや
+ふじおか,やすこ
+つかもと,ふみお
+たかはし,とよひこ
+さかいだ,やすひろ
+すずき,こうじ
+おしま,やすとし
+まきうち,たくや
+はらだ,ひさかず
+まさき,あきら
+おがわ,のぶあき
+うしまる,けん
+いしだ,のぶたか
+はなぶさ,あつこ
+よしむら,よしひさ
+たにがわ,まりお
+さとう,たつし
+かつ,たかし
+やまぐち,ひろき
+はくちょう,いさお
+いとう,たかし
+さかい,かずのり
+たんご,ひでお
+こいずみ,けんすけ
+わかすぎ,ただたか
+うえの,しんいち
+うえだ,ともき
+すずき,ひさえ
+おおの,よしのり
+あべ,けんいち
+しいき,ひろし
+あらき,きよはる
+あずま,ひろよし
+でぐち,ひろのり
+えりかわ,ゆうこ
+ふかやま,のぶゆき
+ふなき,さかえ
+いちむら,まこと
+はしもと,のりあき
+ひがし,きよたか
+ひろさわ,あつし
+ほりぐち,ゆういち
+いばらき,ゆういち
+いなむら,こういち
+いしかわ,みきお
+いとい,ただし
+かなざし,のりこ
+かたぎし,まさし
+かとう,やすし
+かわだ,けんすけ
+きのした,やすひろ
+こばやし,かつのり
+こまつ,やすたか
+こたに,ひでき
+くろせ,おさむ
+まえだ,ゆうじ
+まんたに,よういち
+まつもと,やすあき
+みむら,しげのぶ
+みわ,まさひろ
+もりた,あきひこ
+むねむら,としみつ
+ながた,けんじ
+なかこじ,たつや
+なかむら,よういち
+なかやま,たかし
+にむら,すすむ
+やじま,よしえ
+のま,とよみ
+ぬきい,かつみ
+おがさわら,しゅうじ
+おおさわ,ひでたか
+まつなが,よしあき
+おかもと,ひろゆき
+おさだ,むつみ
+さいとう,あきひろ
+さくらい,しげのり
+さとう,よしのり
+せざい,かずやす
+しみず,あきとし
+しょうみつ,よしひろ
+すぎさわ,のぶゆき
+すずき,ゆうじ
+すずき,ゆうこ
+たかはし,たかゆき
+たかさか,はじめ
+ふじい,あつこ
+たまき,さとこ
+たに,かずひこ
+ときぞの,しげお
+とりざわ,えみ
+つるかわ,えいじ
+うだ,ひさよし
+うめむら,きみひろ
+わたり,やすよし
+やまもと,てつや
+やまもと,まさよし
+やの,ゆきお
+よだ,いさお
+やまぐち,かずよし
+ほ,あきら
+まつみや,ゆういち
+さわだ,ひろし
+こはら,まさのり
+さいとう,みつる
+やの,みつお
+ふじもり,のりこ
+やまぐち,やすひろ
+やまだ,たかし
+ふじた,としき
+きむら,たけお
+はやし,まさひろ
+まえざわ,いずみ
+しぶかわ,きよひさ
+みほ,まさのり
+すぎやま,しんいち
+ふるかわ,よしふみ
+のちせ,かずひこ
+まつもと,ひであき
+おくの,ゆきお
+やまざき,やすひろ
+いしげ,あきこ
+みうら,りゅうぞう
+ばば,たくや
+もちずき,えみこ
+とくなが,ふみひと
+くろかわ,ひろし
+いけの,めぐみ
+やまかげ,ようじ
+やぎはし,しゅういち
+きよみつ,けんじ
+むらやま,えいじゅ
+おおつか,ひでひこ
+おやまだ,たかし
+あげた,じゅんいち
+あもう,あきお
+あらかわ,ひでし
+ばんの,まさきよ
+えさき,しんいち
+ふかざわ,ともひと
+ふなばし,まさゆき
+はなだ,かつのり
+はしもと,えみこ
+ひじくろ,なおゆき
+ほうや,かずひこ
+ほそだ,ちえみ
+いけざわ,のぶやす
+いぬつか,なおき
+かじたに,おさむ
+いとう,ちくさ
+いわした,しこ
+かみや,くにあき
+かすや,あきら
+かわばた,だい
+かわくぼ,かずとし
+きばし,ひでひこ
+きりさわ,いちろう
+こだま,おさむ
+とうどう,こうじ
+こやいし,みか
+くらた,こすけ
+くわの,ひろたか
+ますだ,じゅん
+まつした,ただし
+みやけ,あつし
+みよだ,たかひさ
+みずたに,つよし
+もりわき,しんいちろう
+むとう,かつき
+ながわ,しんいち
+なかしま,ひさよし
+にしだ,ひろよし
+にしお,まさと
+のむら,てつや
+おだおおはら,しんご
+おおひら,いちろう
+おおぬま,なるし
+おおやぎ,まさひろ
+おかね,たかし
+おくの,かつし
+さいとう,よしみ
+さかうえ,やすゆき
+さとう,たけし
+せきもと,としゆき
+しいな,ふみはる
+しみず,ひでとし
+しらさき,ようこ
+すどう,さとこ
+すずき,ひろし
+ほそかわ,ゆり
+やまざき,なおき
+たかす,かずよ
+たけだ,ひろゆき
+たまたに,かずあき
+たにもと,しんいち
+とみなが,ひろひさ
+つかだ,ひでき
+うらかわ,ゆうじ
+わたり,こうじ
+やまもと,あつし
+やました,としひで
+やざき,たけし
+よこた,ゆうこ
+よしかわ,みつひろ
+あさの,みちこ
+おくだ,ひさこ
+いなだ,まさつな
+しもかわ,ふみひこ
+つぼた,のりお
+おおくぼ,たけし
+さいとう,しゅういち
+ふじた,つねお
+まきむら,たけお
+にのみや,かずお
+たばた,よしたか
+むらかみ,ひろき
+いまにし,たけお
+たきがわ,しげよし
+おんずか,ひろし
+とのかわ,たけし
+いけだ,ときお
+ごとう,かずや
+そだ,けんじ
+もりた,まさゆき
+たんの,えいいち
+ごうだ,きょうこ
+やまぐち,ひろかず
+おさない,あつし
+ひがし,しょうこ
+やまもと,ひであき
+さとう,たかお
+みぞぐち,としゆき
+きたがわ,ひろし
+おおにし,そういち
+あいはら,ひでお
+あきば,つとむ
+あまの,とおる
+あおやぎ,たかお
+あら,あきお
+あさの,よしひろ
+ばん,こうたろう
+えびぬま,あけみ
+ふじえだ,じゅん
+ふじい,しげのり
+おぐら,あやこ
+ふかお,みつひろ
+ふくだ,みか
+ふくおか,しんご
+ごうだ,よりこ
+はぎわら,きくお
+はなみつ,よしたか
+はら,みゆき
+はつしま,けん
+はっとり,よしのり
+はやし,かつみ
+ひなた,じゅん
+ひらさわ,かずひろ
+ひろせ,ひさゆき
+すぎもと,せいいち
+ほり,かずお
+ほそ,かずみ
+いでい,まさかず
+いいむら,よしのぶ
+いけだ,くにひろ
+いまい,ただし
+いのうえ,ひろたか
+いしぐろ,ひろし
+いしかわ,ようこ
+いしわた,なおひさ
+いとう,てつや
+いとう,たかし
+いわくぼ,たかゆき
+いわさき,たつひこ
+かがみ,しげよし
+かまもと,たえこ
+かみ,まこと
+かなざわ,さだいち
+かねこ,やえ
+かしわぎ,ひろし
+かたおか,あつし
+ごとう,ひろかず
+かわはら,ひろあき
+かわきた,やすこ
+きだ,よしふみ
+きむら,みのる
+おかざき,たけお
+きたむら,あきお
+こばやし,みよこ
+ひろせ,はるお
+こさか,よしゆき
+こくまい,みえこ
+こもおか,ふみお
+こんどう,たつと
+くぼ,たかゆき
+くまもと,あきひこ
+くりやま,ゆきえ
+くしだ,わたる
+まえかわ,ひでたか
+ますだ,みきお
+まつだ,しげお
+かのう,ひろゆき
+まつなみ,ひろゆき
+まつざき,ただし
+みもり,ひろし
+みうら,よういち
+みやはし,きょうこ
+みやたけ,しげみ
+みずこし,としお
+もりき,やすひろ
+もり,さとる
+むかい,たつみ
+むらた,さとし
+むつしか,えいいち
+ながさわ,かずと
+ながえ,たかゆき
+なかじま,かつとも
+なかまた,のりひろ
+なかむら,はじめ
+おおにし,まさのり
+なかの,もえこ
+なかた,しげこ
+なかやま,かつひこ
+なつやま,ゆうこ
+もり,ゆきこ
+にわ,まさき
+のま,さとし
+のりかね,まさる
+おだね,よしかず
+おおばやし,やすゆき
+おき,よしゆき
+おらい,すすむ
+おおとも,あきお
+おひゃ,くにひこ
+おかもと,よしお
+うえだ,とよかず
+にし,あつき
+ただ,たかゆき
+やました,けんじ
+ささもり,ゆたか
+はせがわ,ともゆき
+いまい,みゆき
+よこやま,けんじ
+すぎやま,よしまさ
+あらい,ともこ
+あまがや,ゆめの
+つる,みのる
+やいた,まき
+せき,まり
+はら,よしのり
+みうら,すすむ
+ささ,ゆきこ
+たかさき,まきこ
+はらだ,えみこ
+くらた,やすひろ
+あげまつ,ひろみち
+ふくもと,みきお
+おくむら,だい
+おそえがわ,やすなり
+さいた,まさひろ
+さかい,ひろみ
+さかり,のぶひろ
+さの,ゆたか
+さとう,よしひこ
+さとう,あきお
+さとう,さとし
+せきかわ,あきら
+せしも,こうじ
+しぶや,まさのり
+しまもり,まさひこ
+しもだ,けいみん
+しんたに,ゆうじ
+しらい,しげき
+しゅう,ごいち
+すだ,なおき
+すぎた,ゆういちろ
+すざき,てつや
+すずき,としや
+すずき,のりゆき
+たがい,やすし
+たかぎ,けんたろう
+たかはし,まさこ
+たかいし,ともあき
+たかおか,たかき
+たかやま,しんいち
+たけもと,のぞみ
+たまち,ひろし
+たなか,ひろふみ
+たに,ひろぶみ
+てらさき,ひろゆき
+さくらぎ,のりひさ
+とよさと,ひろし
+つじもと,ゆきお
+つるた,しのぶ
+うちやま,たけし
+ききょう,よしたか
+うえの,よしこ
+ながた,のりこ
+わだ,しずお
+いとい,よしひさ
+わたなべ,ひでとし
+やぶうち,しょうへい
+やまだ,あきお
+やまもと,あきひろ
+やまもと,まさとし
+やました,つとむ
+やました,あきら
+やの,ともゆき
+よこた,みなこ
+よねむら,ただし
+よしむら,ひろみ
+まつだ,よしつぐ
+ほそや,しょうじ
+みやした,しげとも
+しが,まさみつ
+やまだ,ゆういち
+はやし,さほり
+いけだ,つよし
+うえの,かずたか
+さいとう,てるよし
+ながやす,こうじ
+はぎお,ともひこ
+はまだ,まさじ
+むらかみ,のりひろ
+あべ,しゅんじ
+あきやま,としゆき
+あんどう,てんせい
+あらき,しげみつ
+あそ,くにかず
+ばば,ゆうすけ
+えびさわ,ひろし
+ふじい,よしのり
+ふじい,たつや
+ふじた,ひろし
+ふじわら,ひろむ
+ふくだ,じゅん
+ふくおか,いさお
+ふるや,としゆき
+がど,ひさし
+はが,あつし
+はましま,ゆみ
+はせ,ゆたか
+はしずめ,なおき
+つだ,ひろこ
+はやし,としろう
+ひらい,ゆういち
+ひらさか,ひろゆき
+ひろわたり,たかひろ
+すずき,ひでき
+ほそみ,ひろあき
+いだ,ちはる
+いがらし,ゆきや
+いいじま,たけし
+いまむら,こういち
+いれい,まさる
+いしい,ともゆき
+いその,みつとし
+いとう,よしまさ
+いわさ,としみ
+いずみさわ,せいじ
+かいだ,こうじ
+かまた,としえ
+かんべ,たかひろ
+かねこ,あきら
+よねもち,なおし
+かたおか,かずひこ
+かとう,やすひろ
+かとう,ゆうじ
+たまがわ,こういちろう
+なるけ,たかし
+きど,たかふみ
+きくら,かつみ
+きむら,まさき
+きのした,やすひろ
+きたあき,ひろゆき
+こばやし,かずひろ
+こばやし,としき
+こんの,よう
+こみやま,よしひろ
+こにし,あきのり
+こやま,ひろみ
+くどう,じゅん
+くりや,ゆういち
+よしだ,さとる
+まきの,としお
+まさき,ひでよ
+まつい,やすひろ
+まつもと,たけし
+まつやま,じゅん
+みたむら,じゅん
+みわた,なおき
+みやもと,ひとみ
+もちずき,しゅういち
+もり,まさゆき
+まつだ,けんじ
+もりわき,のぶゆき
+むらかみ,たけお
+むらやま,さとし
+ながしま,みちのり
+うちぞの,たかし
+なかじま,ひろあき
+なかむら,ひろし
+なかむら,よしひこ
+なかしま,のりお
+ならはら,さとし
+にしぶ,あやこ
+にしもと,なおこ
+にしざわ,だいすけ
+のじま,のりお
+ぬわ,たけし
+おがわ,けんいち
+おおがき,かずひろ
+おき,まさひこ
+おおもり,ひろあき
+おおぬま,まさお
+おおたけ,さえこ
+さこだ,しゅういち
+おかだ,てつじ
+おきた,さとこ
+おおの,たかし
+おりい,しゅんじ
+おざわ,やすひろ
+さいとう,けいじ
+さかもと,よしお
+さかた,まさひろ
+さなぎ,よしき
+ささき,ながまさ
+さとう,まもる
+さとう,ひでき
+せきの,のりひろ
+しまだ,あつし
+しみず,たかあき
+しもだ,ひろゆき
+しのざき,あつし
+しょうだ,けんじ
+すがの,ひろゆき
+すぎさき,ようこ
+すぎやま,たけし
+すずき,ひでゆき
+すずき,まさのり
+たぐち,しん
+たかはし,かずのり
+たかはし,おさむ
+たかはし,ひでき
+たかやなぎ,しげる
+たけい,のぶお
+たけしま,かつしろう
+たむら,しょういち
+たなか,やすじ
+さの,ひろふみ
+てらまえ,まき
+とぐち,たけし
+とみい,まさひろ
+とっとり,あきひこ
+つじ,まさひこ
+つきざわ,こうじ
+つるた,のりこ
+うちだ,しょうこ
+うえだ,ようすけ
+うえの,じゅんじ
+えがしら,ただし
+きたわき,せいき
+わたなべ,たかし
+わたなべ,ひろゆき
+わたらい,じろう
+やまだ,あつし
+ふじた,まさとし
+やまもと,やすし
+やまね,みちる
+やました,しげみ
+やまざき,ただし
+よだ,しゅんすけ
+よしだ,かずよし
+よしむら,さとる
+おざわ,かつゆき
+やまだ,きよし
+ささき,のぶゆき
+あぜがみ,しげかず
+ふくはら,のぶゆき
+はしもと,よしひろ
+いそだ,こういち
+かまた,たつや
+きむら,よしひろ
+こばやし,げん
+くまさき,よしあき
+みくに,とみお
+えだ,たかし
+ねもと,まさゆき
+おの,たくじ
+さえき,のりゆき
+せき,ゆきお
+すやま,ひろこ
+たなか,けんご
+たざわ,みきお
+えんど,じゅんこ
+やまぐち,のりお
+やすだ,さとし
+すずき,たけし
+ひろはし,やすお
+かとう,ひろよし
+うえはま,みのる
+まとば,ちひろ
+わたなべ,とおる
+かわしま,てつお
+ふじかた,みつお
+こいけ,おさむ
+たなか,りょうぞう
+だけやま,ひろゆき
+くしびき,すけひで
+すがはら,てつお
+ひがし,ふみひろ
+ほか,けんたろう
+いわた,たかゆき
+すがわら,ますこ
+すと,まさみ
+まつざき,まさのり
+あかまる,おさむ
+あべかわ,れいじ
+よねだ,まさお
+そがべ,ゆきお
+わかばやし,はれお
+すみた,てつや
+いのうえ,たかよし
+みやもと,つとむ
+ふじかわ,なおと
+さいとう,ふみお
+たなべ,けんじ
+しみず,せいじ
+のぐち,しげあき
+かわなみ,まさあき
+ふくしま,あきら
+おだわら,みちお
+おおた,ようじ
+かわの,ただよし
+くにゆき,やすひろ
+しまだ,みつる
+たかしま,みつぎ
+つや,まこと
+なかしま,まさお
+やぎした,としお
+きしもと,まこと
+くげ,けんじ
+あさの,よしあき
+かわかみ,つねお
+しまだ,しゅういち
+ふじい,しゅんいち
+ひが,じゅんき
+たなべ,あきら
+くらや,きへい
+なかざわ,まさひと
+あわた,しげる
+じだ,あきお
+ほそかわ,としお
+しぶや,よしかず
+こばやし,きよし
+きたがわ,よしてる
+みずたに,あきら
+たかせ,としお
+みやむら,とおる
+よこはた,としひこ
+なりた,みつよし
+あべ,さだひろ
+なまえ,けんじ
+きむら,ゆたか
+なごし,ひであき
+とみなか,よしお
+なかの,つもる
+おおさく,かずお
+はやし,しげあき
+おおさ,たかし
+やまうち,じ
+おだ,りょうじ
+めぐろ,ひろよし
+かなさき,とみお
+おかの,やすお
+くさかわ,なおき
+いのうえ,たけし
+やだ,かずおみ
+まつおか,ゆきお
+すずき,ゆうじ
+たきもと,くにお
+ひがしばた,ひでお
+いいだ,けんし
+かんの,まさひろ
+たなか,しげる
+いくた,やすひさ
+さの,ひでまさ
+すがわら,やすひろ
+ながた,ゆきお
+うらの,さとし
+すぎやま,かつゆき
+おかべ,ふみお
+こいで,たかし
+いしたに,さとし
+もり,えいじ
+きたむら,たかし
+いわみ,やすお
+ふかだ,たかし
+うえだ,ゆうじ
+ふるたに,たかまさ
+どい,たかし
+ながの,としのり
+きむら,あきら
+かどや,ゆうご
+おおた,くにお
+たけうち,けんいちろ
+とくもと,たかあき
+いとう,しふみ
+やまざき,ときお
+あおき,よしみ
+ちぎり,えいじろう
+よしなが,ちかえ
+ひらばやし,ひろかず
+なかはら,けんじ
+ひろや,のりひろ
+かない,かんせい
+とおやま,たかし
+うの,きんご
+しばた,としお
+きたがわ,きはちろう
+はらだ,ひでゆき
+やまむら,けんじ
+くまみ,ゆうぞう
+いしばし,としゆき
+しばた,はるき
+さくやま,かずお
+いけだ,せいいち
+たけもと,かずお
+たもと,とみお
+こむろ,りょういち
+たなか,まさとし
+かまだ,ひろし
+たばた,けいいち
+ひらかた,かずお
+たけうち,てつお
+いまず,やすただ
+ふじた,としみち
+やまもと,つとむ
+やまき,ゆうじ
+しらいち,まさる
+ささき,むつみ
+みやかわ,まさたか
+くどう,けいこ
+あらまき,のぶお
+きはら,なおき
+おか,きょう
+こにし,しげみ
+たけうち,さちこ
+たなか,しんいちろう
+さかもと,まもる
+まつだいら,えいじ
+いの,たつろう
+おばな,しげやす
+おおくわ,きよし
+ごとう,しんじ
+すずき,きよし
+にしおか,さぶろう
+ささき,ひでお
+はら,いくお
+せき,ひろし
+さいとう,ひとし
+ふじた,しゅんすけ
+さかた,こういち
+まえざき,いさお
+しおみ,みつお
+たかくわ,まさのぶ
+いしはら,ちえこ
+こくぼ,けいこ
+みやざき,しげお
+ありま,けいこ
+うちやま,たかし
+なしき,かおる
+ふじた,ゆみこ
+たかぎわ,いさむ
+にしだ,ひとし
+きくち,ひでふみ
+なかい,まさみ
+いいだ,やすし
+やまぐち,のぶひろ
+やの,ゆういち
+やまもと,ひさし
+ほりむき,よしま
+あだち,ふみのり
+うらの,こういち
+たけだ,みちこ
+さいとう,ひろつぐ
+しまむら,こうじ
+ふくだ,つよし
+きむら,えいこ
+やまもと,えりこ
+しげやす,えいいち
+かのう,ひろあき
+すわ,ふみお
+おかざき,のりお
+ふかや,まさひろ
+こざい,みつる
+ほどやま,ひでお
+くぼた,きよし
+いいずか,りょうこ
+たかぎ,たけのり
+いわお,まさし
+いしい,いさむ
+わかばやし,としひで
+ぜんけ,としお
+わたべ,よしみ
+まつもと,ひろしげ
+まるやま,けいじ
+なかの,ひでのり
+おおくぼ,かずはる
+くぼた,まさと
+にしかわ,ひろし
+にった,ふみこ
+いしだ,ひでひこ
+かます,けんぞう
+かげやま,みのる
+まつむら,としみち
+ささき,すすむ
+ひらの,よしかず
+すずき,いちろう
+にしはら,けい
+くろいわ,たかし
+たかはし,ひろし
+たけうち,ひであつ
+しみず,あきひで
+さたけ,しんじ
+こたに,たくもり
+こでら,まさと
+はまの,みちお
+なかむら,ひろし
+ゆあさ,けんじ
+おかだ,よしひろ
+こばやし,よしはる
+ふくだ,じゅんいち
+かみむら,たかし
+いまだ,まさひろ
+そね,ふみお
+みのぐち,よしのり
+くだなみ,まさゆき
+いのうえ,みどり
+うえむら,のぼる
+みうら,おさむ
+すがわら,さとし
+わたなべ,なおゆき
+にしわき,ようじ
+おおたに,まさあき
+くろかわ,きよし
+くぼた,のぶお
+たむら,ひろひこ
+えびはら,きいち
+なかむら,ようこ
+やまね,よしと
+あさま,まさひろ
+みうら,やすのぶ
+あらかわ,しんじ
+こじま,よしあき
+さかた,こうへい
+こばやし,おさふみ
+おがわ,よしお
+かとう,たかゆき
+みつい,けいいち
+てしま,かずまさ
+あそ,ひろいち
+もりや,ひとし
+やな,かずお
+さいとう,ひろゆき
+いちき,ひろし
+おおた,ひろし
+ほりうち,けいいち
+たにぐち,よしお
+にしの,そういちろう
+ふるはし,こうぞう
+あきた,としお
+おくしま,たかし
+おおたに,ただひろ
+かめおか,よしお
+はらおか,かつやす
+なかむら,ひろし
+あらしま,ゆきお
+ながさわ,よしろう
+やまおか,きよし
+はせ,まさかつ
+きしもと,くにお
+すずき,よしお
+かめや,かつみ
+ますだ,まさはる
+えんど,けんいち
+さくらい,たかあき
+ふるしょう,ふじお
+うしき,かずみ
+こいけ,ひろし
+とうま,さちひろ
+なかざと,ひろし
+やまおか,よしのぶ
+なかね,のぶはる
+とみた,のりかず
+さとむら,けいじ
+ひさまつ,とよとし
+おがわ,まさと
+さかい,たけし
+なかぎ,ゆみ
+さわぐち,まさくに
+まつもと,としお
+ふるかわ,こういち
+ふたみ,きよし
+たなか,ふくむ
+ひびの,ひろし
+すなはら,しょうじ
+いけだ,たかし
+ごとう,のぶゆき
+いしの,つとむ
+きむら,しげる
+やまだ,みつお
+もりもと,まさる
+おかもと,まつお
+なかじま,さかえ
+きたむら,ますみ
+なかいし,たけゆき
+わさ,ひでお
+こしむら,まさし
+ひなた,きょうへい
+なかむら,のぶお
+ふくい,たつひこ
+たかだ,かずお
+なかむら,ひろし
+にしやま,まさひろ
+なかやま,たかやす
+はりがや,ひろあき
+ますもと,よしお
+てらにし,まさのぶ
+ながくぼ,おさむ
+よしの,たかし
+もりた,のぼる
+てらお,みつひろ
+よしむら,きよじ
+わたなべ,けんじ
+まつもと,きよし
+おざき,よしあき
+ひぐち,ふじき
+みやもと,みさお
+やまぐち,ますみ
+やまもと,えつこ
+かとう,こういち
+なかい,かずみ
+ふじた,ひろし
+すがわら,こうじょう
+いしざき,たかゆき
+たつみ,よしあき
+なかした,まこと
+おじま,ひろあき
+あさした,まさふみ
+ほりい,みよし
+いり,けんいち
+ふじまき,ただあき
+かじわら,しゅういち
+はせがわ,みつお
+ふなやま,えつお
+きはら,たかし
+たけだ,けいこ
+いいだ,かなえ
+ふるど,まさお
+もり,しゅういち
+ふくと,なおや
+おおはし,あきひと
+あおき,ひでし
+たじま,ひろし
+おおつか,ともひろ
+あおの,じんいち
+いのうえ,ひとし
+えんど,まさひろ
+ひろせ,よしかつ
+えんど,あきお
+かわい,みちる
+あいざわ,ふとし
+こいたばし,きよひろ
+さとう,やすひろ
+かのう,しげき
+うえむら,まさとし
+すみよし,ひでお
+ひろた,さとる
+いなとみ,かずよし
+いとう,のりかつ
+くぼ,ひであき
+かぶらぎ,としひろ
+いけだ,よしのり
+たかはし,かずお
+さかい,まさひろ
+かとう,やすくに
+たけい,やすゆき
+はんだ,とおる
+ながや,かつみ
+はっとり,ひろのり
+しみず,よしなお
+いまにし,まさと
+くまべ,まさお
+まちだ,つかさ
+やぎ,ちはる
+おだま,ゆきお
+きたじま,じゅんこ
+たちばな,たくろう
+ふじもと,しゅうじ
+みずの,いくお
+えぐち,かつみ
+かわべ,さつこ
+なかむら,ちあき
+あすま,きよかず
+はむら,つとむ
+いとう,ゆうじ
+いけざき,たけし
+やまさき,のりゆき
+にしざわ,そうじ
+にわ,えいひこ
+みうら,ひさし
+かたおか,あけみ
+はやし,まきこ
+みさき,たけし
+おだくら,ひろみち
+ふしみ,ちかと
+ひろた,たかし
+はたや,としゆき
+さかい,ゆうじ
+いだ,いちろう
+さとう,ただし
+ほしの,のぼる
+おがわ,なつあき
+ふくざと,りゅういち
+たなか,せいじ
+ささき,きょうこ
+おずち,みつお
+ふろもと,みのる
+にしむら,しんや
+たけだ,とみこ
+たけとみ,こういち
+おかだ,みちお
+まと,かずゆき
+すずき,あきよし
+むかい,よういち
+こが,やすお
+かとう,かずみ
+よこい,ふみとし
+うしごめ,まさたか
+こまつ,よしたか
+いとう,ひさあき
+さとう,しゅんすけ
+ひろせ,のりよし
+ごみ,じゅん
+たなか,たつお
+まつもと,たいいち
+はやし,せいじ
+たかはし,かつひろ
+あらい,としゆき
+ほし,きよし
+てらだ,しげる
+いずは,はるお
+すなだ,やすじろう
+いじま,ふみお
+たかだ,としはる
+わかまつ,こうじ
+つだ,としゆき
+ほしくま,まさはる
+ほんだ,ひろみ
+かまだ,えいじ
+はやし,みつひろ
+いまい,たつる
+つちや,いずみ
+わだ,いくと
+よしだ,きみひろ
+だて,じゅん
+はすこ,よしのり
+たけなか,ひろあき
+おくだ,かずお
+ほし,ゆうすけ
+かめだ,かおる
+ひしぬま,ひろふみ
+おおにし,ひろあき
+さとう,まさあき
+ほそかわ,あきら
+よしざわ,ひでお
+はらだ,よしたか
+ささき,ともゆき
+いいだ,ひでみ
+きがわ,こういち
+いけお,ひろゆき
+あらい,やすお
+かきかわ,じゅんいち
+ごとう,くにとし
+みやこし,やすえ
+ふじた,あつみ
+くらた,ひろゆき
+もりおか,ゆみこ
+やまうら,やすよし
+くろは,ようこ
+いずはら,なおかず
+しげとめ,よしあき
+にし,やすふみ
+あきやま,とみお
+いけだ,かずきち
+もり,やすみ
+ひろかわ,ゆうじ
+そめや,あきお
+さくらい,えみこ
+みずの,いさむ
+てらだ,としかず
+ひらまつ,しげる
+おおた,ごろう
+ひらまつ,えつお
+にしだ,ゆきお
+むらた,ひでゆき
+みずこし,けんいち
+とみた,たかお
+かわみ,せいいち
+しいの,しげお
+なかむら,のぶお
+いしかわ,こういち
+かねたけ,かなめ
+おしげ,たいち
+こじま,ゆうぞう
+とば,まこと
+いわた,ひであき
+おの,けんじ
+こさか,ひさたけ
+かんの,あきお
+いとう,としつぐ
+たかぎ,みちこ
+たかの,しんいち
+いながき,てつお
+のざき,じゅん
+たけだ,ふみこ
+ごとう,しんじ
+ほりかわ,かずひろ
+すぎもと,りょう
+あらい,せいじ
+ふじわら,ひですぎ
+よしだ,しゅういち
+おしま,たけし
+ごとう,だいじろう
+いずみさわ,よしとも
+いわぶち,まさつぐ
+いまきた,しょうじ
+むらた,しょうこ
+しもの,かずひろ
+ごかいち,こうじ
+やまもと,のぼる
+ながしま,じろう
+みしま,よしひろ
+やすなが,かつみ
+おふち,じろう
+こむかい,きよみ
+ながさわ,たいせい
+きたおか,かずひこ
+はら,かずや
+ふかだ,のりふみ
+きたがわ,たかあき
+おおもり,れいこ
+はぶち,ひでかず
+みやざき,ひろむ
+しろた,まさゆき
+こみや,こうじ
+てらお,じろう
+にしぐち,としあき
+かねずか,ひろあき
+すぎやま,てつじ
+たちばなき,はるあき
+もりおか,まさかず
+よのもと,ひでき
+くすだ,かずいち
+ありやす,えつお
+つじもと,ひさと
+ふかみ,じゅんいち
+あきやま,きよし
+もちずき,よしたか
+のむら,しゅんじ
+わだ,きよし
+おち,ひろし
+むらまつ,ちえこ
+やの,おさむ
+もちずき,きよし
+ひらた,なおき
+わかまつ,としさだ
+さかもり,かよこ
+こばやし,あきひこ
+いまむら,よしひろ
+おおすが,かえで
+たかやま,たかとら
+きたみ,ひろひで
+まえだ,たえこ
+ともの,けんいち
+かぶらぎ,まさゆき
+ねぎし,けいぞう
+わだ,ゆみこ
+すずき,やすゆき
+さなえ,かずまさ
+の,たつや
+いしばし,ひろゆき
+やました,つねお
+すずき,かずひろ
+みやわき,としひこ
+まつうら,よしあき
+きたやま,よしひろ
+やまぐち,じゅんじ
+にしやま,かつじ
+かわばた,まさひこ
+みかみ,じゅん
+すぎやま,いさお
+きじま,のりお
+ひがし,しゅうじ
+あべ,まさと
+いのうえ,ようこ
+ふかだ,あきお
+むらまつ,じゅん
+ひらばる,たけお
+ちょうなん,よしまろ
+かわむろ,さとし
+つくだ,みのる
+みやもと,としひろ
+すえひろ,じゅんいち
+しらかわ,こうじ
+たなか,けいし
+やすい,よしのぶ
+きむら,かつこ
+なかがわ,かつよし
+くさの,としひろ
+あだち,よしひろ
+なかとも,むつみ
+ますもと,つとむ
+わたぬき,やすひろ
+たかはし,かつじ
+こぼり,みきお
+おがわ,こういち
+ふじもり,みきお
+いはら,えみ
+わたなべ,ゆうこ
+うらべ,いさむ
+みうら,みつる
+なかい,けいいち
+わらしな,しげる
+ふくなが,よしかず
+おおつぼ,よしあき
+よしだ,みのる
+はやみ,かつひこ
+のむら,まさかず
+ひらい,よしゆき
+しまだ,まさえ
+すずき,なおとし
+てらしま,きみひこ
+しずはら,れいこ
+やまとや,かずひこ
+おぎの,ひろお
+まつぐま,しげほ
+きたい,としひこ
+あかだ,しずお
+たけよし,せいのすけ
+ひろの,そおじゃ
+しまむら,とまさ
+りゅうご,しゅんいち
+くにえだ,まきお
+おおつか,ほこく
+いけがみ,ひでとし
+かねまつ,かねひで
+おおがわら,よしのぶ
+すずき,たかし
+てらだ,せつこ
+かわさき,てつじ
+おしやま,よしひさ
+かわかみ,しげき
+なかむら,としあき
+みたに,としひこ
+こまつ,ひろたか
+あかいわ,としひこ
+いちい,ふみや
+ふくやま,まさあき
+くどう,よしてる
+まつした,しんじ
+にしかわ,ゆきひろ
+あまがみ,しん
+やしき,あいいちろう
+わだ,あつこ
+ますだ,ともこ
+よしむら,ゆうじ
+おだ,しんじ
+よこやま,たかふみ
+いとい,ゆりこ
+すずき,かつひろ
+ながはま,ひろゆき
+やざき,ていぞう
+やじま,きよし
+むかえだ,さとる
+なかむら,たつあき
+やまむら,こういち
+のもと,としゆき
+やまざき,としひこ
+さとう,としや
+いのうえ,ひろゆき
+おかの,ひでお
+なかにし,はるひさ
+うえだ,ひろみ
+あいざわ,あきお
+あらい,ともなり
+ながいし,かつみ
+はこい,まさお
+くすもと,たかよし
+ありとみ,じつろう
+はら,たみお
+ほんま,まさはる
+はしもと,みちはる
+はしもと,まさお
+おおぬま,いさお
+はなき,しんいちろう
+はしもと,あきこ
+さくらざわ,ひでとし
+あかぎ,やすひと
+あきずき,まさとし
+あんどう,ひろき
+あらい,たまお
+あさむら,かつみ
+ちば,あこ
+えぐち,ゆきたか
+ふちの,とおる
+ふじまる,ひさと
+ふじさわ,のりお
+ふかだ,ふみひろ
+ふくい,ひろし
+ふくとみ,りゅうさく
+ぎま,かずよし
+はぎわら,いちろう
+はら,きよたか
+はるな,たかあき
+はつみ,あずさ
+はやせ,しんご
+はやつ,ひろし
+ひらおか,まゆみ
+ひろし,のぶこ
+ほしこ,まさひろ
+いちかわ,まさる
+いがわ,きよし
+いいずか,ありさ
+みつもと,ひろたか
+いまむら,ひろゆき
+いなみ,ひろみち
+いのうえ,たけし
+いせ,ゆきお
+すぎはら,ひろたか
+いしもと,けんじ
+いしずか,とおる
+いとう,ようじ
+かみかわ,ただみつ
+いわさき,けいこ
+いずみ,みわ
+かまだ,たかひろ
+たけうち,みき
+のむら,えみこ
+かたの,てるひさ
+かとう,たかし
+かわだ,ひろゆき
+いしい,やすき
+かわしま,えいこ
+きくかわ,ゆかり
+きし,たくし
+こばやし,てつや
+こばやし,かずひこ
+こやま,あきら
+こくぼ,ようこ
+こんど,みえ
+こしお,まさとし
+くぼ,つとむ
+ほしの,としや
+くさかわ,けいいち
+くすみ,ゆたか
+まきの,ちひろ
+まるやま,まこと
+なかむら,ちとせ
+まつもと,あつし
+めざわ,ひとし
+みね,まさやす
+みと,のぶお
+みやもと,しげる
+みやざわ,かつみ
+みずた,けんじ
+もり,はずき
+もりもと,まなぶ
+もろおか,みつひろ
+あんどう,いわお
+みょうが,たかゆき
+ながお,あきひろ
+ながせ,すすむ
+ないとう,さだみつ
+なかじま,とおる
+なかまる,としこ
+なかむら,りゅういち
+なかにし,ひでと
+なかの,つかさ
+しなだ,あきら
+なりた,たくじ
+にいやま,ひろし
+にしかわ,あきら
+にしずか,としや
+ひの,かずゆき
+はせがわ,みつあき
+おがた,ひとし
+むさし,みつる
+おおくぼ,はるし
+おおさわ,ひでき
+おおた,しんじ
+おおわだ,ひろのり
+おかだ,たかよし
+おかもと,ひろし
+おきもと,まさひこ
+おにつか,まさあき
+おさき,たかし
+さえき,よしひろ
+さかい,りょうじ
+さかき,きょうこ
+さかうえ,たかゆき
+さの,としふみ
+さとう,やすし
+さとう,さとし
+さわい,みちひろ
+せきはら,あきら
+せしも,しゅういち
+しばた,てつろう
+むらた,りゅうたろう
+しみず,はやとし
+しもおさ,たけし
+しのだ,はつえ
+しらい,かずひこ
+すどう,もとゆき
+すぎしま,まさる
+すやま,とものり
+すずき,ゆたか
+しゅくや,じゅんいち
+たぐち,なおゆき
+みやもと,たかし
+たかはし,けんりゅう
+たかはし,ゆきえ
+たかはし,いちろう
+たかせ,しげき
+みかみ,けいすけ
+たけやま,としあき
+たなべ,ひろゆき
+たなか,ひろこ
+たなか,のりあき
+たにぐち,じゅんこ
+たていし,なおや
+てるきな,あきよ
+とみおか,なおき
+とよだ,まさひこ
+つちや,よしひろ
+つじ,ひろし
+つのがい,やすのり
+うちだ,まさふみ
+うだ,けいじ
+うえはら,しんじ
+うえの,ゆうじ
+うめはら,まこと
+うすい,こうへい
+わだ,よしあき
+わたなべ,さとし
+やはぎ,なおふみ
+やまだ,としお
+やまぐち,ともかず
+やまもと,けんじろう
+やまもと,まなぶ
+やました,りんじゅ
+やまざき,ひとし
+やすだ,まさみ
+よどがわ,のりお
+よろずや,なおひさ
+よしまつ,ちはる
+えだひろ,みどり
+こじま,やすひさ
+おがわ,めぐみ
+たかせ,まみこ
+ふくた,かずみ
+たぐち,ひろむ
+あさの,としひこ
+ふじい,けんじ
+ふじわら,こうじ
+ごとう,ひろかず
+はやし,としあき
+ひらい,ひろたか
+いちい,しげゆき
+いけだ,いくじろう
+いしまる,みわ
+いとう,てつや
+かげやま,つよし
+かさま,のりまさ
+かとう,こうた
+きくち,ともあき
+きたがわ,みちはる
+こばやし,こうたろう
+こんど,のりこ
+くどう,はやと
+くさふか,しのぶ
+まつだいら,まき
+みくに,やすし
+みやち,たかふみ
+みやざわ,ひろき
+もりた,くるみ
+むろぞの,ひろあき
+なかみち,しょう
+にしむら,しんや
+おがわ,たかし
+おおえ,まさみち
+おおた,たかし
+おかやま,みつより
+さいとう,たかのぶ
+さの,たくや
+さとう,たかし
+しい,みさこ
+しんきゅう,まさゆき
+すぎやま,きよたか
+たかぎ,よしお
+たけうち,かほる
+たなか,のぶこ
+たるさわ,あきこ
+ともの,かずみ
+わたなべ,まさとし
+やまもと,ひでと
+やまざき,ふみの
+よねみつ,まこと
+ゆり,ともお
+まつぐま,ふみこ
+あじま,やすあき
+あまの,ちあき
+あおき,よしこ
+あおき,なおひさ
+あらき,かつじ
+あさくら,たつお
+あずま,りえ
+さたけ,けいこ
+だいお,ひでき
+なかむら,たかこ
+ふじい,たつのり
+ふじおか,てつろう
+ふくい,こうじ
+ふなだ,ゆうこ
+ごとう,かいちろう
+はまだ,よしみ
+さとう,せいご
+はりま,なおき
+はせがわ,あきひこ
+はた,しんいちろう
+はっとり,ゆき
+はやみ,すみひと
+はやし,まさのり
+ひえだ,みちかず
+ひおき,とうめい
+ほだ,ひろき
+ひろすえ,じゅんこ
+ひしだ,ひろし
+ほんごう,まさと
+ほりえ,あきのり
+ほしな,こういち
+いちかわ,ひとし
+いがた,えいいちろう
+いいずか,まこと
+いけだ,たかゆき
+ほそい,けんたろう
+いの,じゅん
+いのうえ,ふみのり
+おおもり,けんいちろ
+いしい,けいじろう
+いしい,やすし
+いしつか,としゆき
+いそがい,ゆうこ
+いとう,さとし
+いわはし,ゆうこ
+いわさき,ひろゆき
+かがぶ,しんじろう
+かまほり,ともひこ
+かみや,のぶゆき
+かない,のりこ
+かんだ,ちえ
+かのう,たけし
+たまたに,しま
+かとう,ひろき
+かとう,じゅんこ
+かわぐち,こうじ
+かわむら,しゅうじ
+かわしま,のぶこ
+きくち,いちろう
+きむら,たかひさ
+きし,なおき
+きたがわ,なおみ
+きよはら,つとむ
+こばやし,けんじ
+こだま,やすひろ
+こいわ,ともゆき
+こじま,さとし
+こんど,けんいち
+くぼ,なおき
+くまくら,けんいち
+ひらい,こうじ
+くろだ,あつし
+くろさわ,えいじろう
+まえだ,さとし
+しぶたに,こうじ
+ますだ,ゆうこ
+はら,けんじ
+まつい,しんじ
+まつもと,ひろし
+まつなみ,よしこ
+まつおか,しんご
+まつやま,あきら
+みかみ,ひでお
+みなみ,あきら
+みたむら,まさとし
+みつま,かずひと
+みやした,ひろゆき
+はしぐち,しげき
+みずの,としゆき
+もり,まさし
+もり,ひろかず
+もりや,むつお
+むねかた,かずよし
+むらた,ゆきもと
+みょうじん,みちお
+ながしま,よしかず
+ないとう,まさき
+なかじま,てるみ
+なかもと,ひろかず
+なかむら,ゆうじ
+なかむら,けんた
+なかや,わたる
+なん,けいすけ
+なとり,けんや
+にいざわ,よしのり
+にしだ,やすお
+にしな,きよし
+にしざわ,よしひろ
+のがわ,ひろや
+のむら,まさひろ
+おがさわら,かずてる
+おがわ,やすのり
+おはし,さとし
+おおの,ひろやす
+おしま,つとむ
+おおたき,ふとし
+おおつか,えいき
+おおや,むねお
+おかだ,ひろゆき
+おかざき,こうたろう
+おおみ,あやこ
+おのでら,まさひこ
+おの,たかあき
+おざき,よしまさ
+さいだ,ももこ
+さかぐち,こうじ
+さかい,なおき
+さこ,あかし
+さんべ,まこと
+ささき,ゆたか
+さたけ,としき
+さとう,ゆきたか
+ひらの,ひろあき
+さわむら,ひろし
+せきね,かずあき
+しばはら,かずの
+しばざき,まさこ
+しま,こすけ
+しみず,けいすけ
+しもかわべ,あきひろ
+しのざき,ひろし
+しらはま,みちひさ
+しょうなご,たかしげ
+すだ,めいじろう
+すぎもと,みか
+すぎた,たかゆき
+すみだ,あつし
+すずき,まさふみ
+すずき,しげる
+すずの,かつふみ
+たぐち,みゆき
+たかぎ,としかず
+たかはし,ひろみち
+たかはし,ひでのり
+たかはし,けんいち
+たかの,みきこ
+たかしま,ただし
+たけだ,いずみ
+たけなか,けんいち
+たけやす,れいじ
+たむら,ひろゆき
+たなか,こういち
+たなか,たかよし
+たなか,とおる
+たにぐち,かつひこ
+てらまえ,せいいちろう
+ときわ,ちえこ
+とりごえ,さだゆき
+つちたに,ひでき
+つじむら,たかし
+つかもと,けんたろう
+つつみ,まさのり
+うちの,さとし
+ねず,としあき
+うえつぼ,よしたか
+うおずみ,さんぺい
+わだ,みつのり
+わたなべ,よしき
+やぶ,こうじ
+やまだ,ゆうこ
+ひさの,りか
+やまぐち,のりゆき
+やまかわ,ゆきこ
+やまもと,なおと
+やまもと,しんいち
+やまうち,しんいちろう
+やまざき,たかお
+はぎわら,みきお
+よねざわ,えり
+よしだ,さちこ
+よしまつ,けんたろう
+ずし,ゆきお
+いわかわ,そうたろう
+いしまつ,ひろやす
+あべ,えいいち
+あかいし,えいち
+あまがた,たかし
+あんざい,まさひで
+あらき,としみつ
+あしだ,さとし
+ちょう,えいじ
+どい,けんいち
+えのもと,きよみ
+ふじい,さつき
+ふじた,たかし
+ふくむろ,たかし
+ふなき,なおき
+ふるや,ともや
+いわさき,さえこ
+いとう,しろう
+はだ,ひであき
+はなど,みのる
+はらだ,たけし
+はらぞの,のぶひろ
+はしもと,さとし
+はっとり,まこと
+はやし,たかよし
+ひがし,かずお
+ひらの,ひろこ
+ひりき,けんいちろ
+ほんだ,さなえ
+ほしやま,みぎふみ
+いちはら,たかし
+いがらし,かつのぶ
+いけだ,りょう
+いまむら,おさむ
+いなむら,とものり
+いのうえ,やすひろ
+いさか,しげる
+いしだ,けいいち
+いしい,のぼる
+いしずか,ゆきお
+いとう,しょうこ
+いとう,まさみ
+いとう,えいじ
+いわなが,なおこ
+じんば,つねのり
+かじもと,たくや
+かこ,としひこ
+かん,たくや
+かのう,まゆみ
+かすや,まさなり
+かとう,けんじ
+かわべ,よしゆき
+かわかみ,けんいち
+かわの,まさひこ
+かわしま,やすのぶ
+きくち,まもる
+きむら,あつし
+きの,あき
+きたがわ,おさむ
+こばやし,としひろ
+いとう,しんじ
+こくしょう,まさる
+こんど,まさゆき
+こやま,ひろたか
+くれまつ,たかひで
+くりゅう,よしえ
+まちた,まさき
+まるいち,まさゆき
+ますだ,ゆきこ
+まつい,ひでし
+まつもと,よしき
+なかむら,ひろゆき
+まつおか,たけし
+まつやま,こうたろう
+みしま,かずみ
+みつもと,きよみ
+みやもと,としあき
+うちやま,みきこ
+みずの,まさよし
+もぎ,もゆる
+もり,まさひろ
+もりた,かずひさ
+もとばやし,さとる
+むらかみ,ひろあき
+むらた,とものり
+なば,ひろゆき
+ながおけ,さとし
+ながた,しょうへい
+なかがわ,よしゆき
+なかじま,たかし
+なかむら,たつや
+なかにし,いずる
+なかお,あきこ
+なかやま,ふみお
+ねもと,みつあき
+にしだ,よしや
+にしむら,きわむ
+のぶはら,こうじ
+のぞえ,はじめ
+おおぎ,たけし
+おおえ,よういち
+おおくぼ,ひろふみ
+おおもり,なおき
+おの,あきら
+おおた,あさこ
+おおたに,やすひろ
+おか,ふみこ
+おかまつ,たかひろ
+おかもと,のりお
+おおの,なおき
+とくみや,てつや
+さいとう,ゆたか
+さかきばら,たかお
+みたに,けんいち
+さの,しゅうぞう
+ささき,せいじ
+さとう,たかかず
+さとう,のぼる
+さとう,ともき
+さやの,いくや
+せんな,としみつ
+しぶたに,きょうこ
+しまむら,よしみつ
+しなだ,かつみ
+しらはま,たろう
+しゅとう,ゆみこ
+すだ,なおひろ
+すぎやま,ひでまさ
+すみおか,ともや
+すずき,ひでひろ
+たばこ,くみこ
+たがわ,まこと
+たかはし,しんや
+わたなべ,まき
+たかくら,けんすけ
+たかおか,ごう
+たけはな,まさかつ
+たけうち,さとし
+たなか,けんたろう
+たなか,せいじ
+たなか,のりひろ
+たにい,ゆりこ
+たしろ,けんいち
+てらもと,えいじ
+ときおか,たかしげ
+とみかわ,のりこ
+とりかい,なおき
+つだ,こういち
+さかい,みほこ
+うだ,あつこ
+うえの,おさむ
+うめはら,としお
+うしば,みのる
+わかお,けいじ
+わたべ,まさとし
+わたなべ,だいち
+とみやす,としひさ
+やまだ,まき
+やまこし,だいすけ
+やまもと,じゅん
+やました,なおこ
+やなぎ,としあき
+よこさわ,たくや
+よこやま,かずのぶ
+よしだ,なおと
+よしみ,たいき
+よしざわ,としかつ
+いま,まさひろ
+くぼ,まさひこ
+なかはら,たくや
+おぐら,とおる
+たかまつ,けんいち
+いのうえ,むねひろ
+あいば,さとし
+あまの,なおこ
+ありた,ひであき
+あたぐち,ひろし
+だて,しげひこ
+えざわ,なりひで
+ふじもと,みきお
+ふくどめ,たかし
+ふるかわ,あけみ
+はぎわら,りゅうた
+はなた,ひらく
+はせがわ,ゆたか
+かじわら,よしこ
+はっとり,たかゆき
+ひがし,りゅうすけ
+ひらお,まさゆき
+ひろせ,みつる
+ほんま,たけし
+ふくろい,けんじ
+いちのせき,としひろ
+いけだ,ゆたか
+いまむら,けんすけ
+いのうえ,かずお
+いしだ,こうじ
+いしかわ,あきら
+いわさき,たけし
+かいずか,ひろこ
+かみがき,のりひで
+かねこ,くにひこ
+かたぎり,なおゆき
+かとう,けんじ
+かわかみ,こうじ
+かつき,あきとも
+きむら,さとる
+きのした,ゆかり
+きたやま,ちひろ
+あめした,なおき
+こばやし,たかひろ
+こが,のりゆき
+こいけ,あきお
+こんど,とものり
+くぼき,いくこ
+くらしな,かつひと
+くろき,つよし
+まえだ,やすひろ
+まさだ,ひろゆき
+まつだ,なおみ
+まつもと,しゅういち
+めかた,ひろき
+みやもと,あきひろ
+もり,ゆか
+もりた,かずよし
+むらかみ,まさあき
+むた,ひさし
+ながやま,てつや
+なかはら,たかこ
+なかむら,あきのぶ
+なかむら,まり
+なかた,こういち
+なかざわ,けいすけ
+にし,かねのぶ
+にしやま,みなこ
+のと,じゅんいち
+おがわ,ようじ
+おおば,まさひで
+おむら,まゆ
+いけまつ,たかこ
+おいだ,ひとし
+おかざわ,ひとし
+おの,なおみ
+さいとう,あきひさ
+さかい,のぶやす
+さくた,よしあき
+さとう,まさひこ
+さとう,こうじ
+さわはし,たつゆき
+しばた,あやこ
+しみず,かつゆき
+しおみ,しんじ
+したら,ひさし
+すぎた,かつひこ
+すけがわ,のぶよし
+すずき,あきひろ
+しょう,しょうたろう
+たい,まさてる
+たかぎ,てつろう
+たかはし,としお
+たかやま,ひでつぐ
+たけした,しょうぞう
+たこ,よしき
+たなか,きょうへい
+たに,かずなり
+たずけ,せいいち
+ともとし,けんじ
+つちもと,ふみお
+つのだ,しょうじ
+うちだ,さとる
+うえだ,あきのり
+うのき,のぶひこ
+わだ,ひろたつ
+わしず,しょう
+わたなべ,こうせい
+やまだ,たかと
+やまぐち,ようじ
+やまもと,みつぞう
+やまな,せいいちろう
+やしろ,たけし
+よこやま,まさひこ
+よしだ,ともみ
+ゆき,せつこ
+ひらかわ,まなぶ
+もりいち,えいじろう
+しみず,けい
+ふじゅう,しんいち
+はがわ,たかし
+はせがわ,ひであき
+ひらの,たくや
+ほんごう,てるひこ
+いけだ,としゆき
+いしかわ,ひろき
+いとう,よしみ
+かなやま,こうじ
+かたぎり,しんすけ
+きもと,たくや
+きやま,せいじ
+こじな,けん
+こんど,ひろひこ
+くりた,さとし
+ますだ,だいち
+みかみ,みつお
+みわ,たかのぶ
+もちずき,のぶゆき
+もりやま,としお
+ながふじ,きみひと
+なかじま,まさひこ
+なかむら,ひさと
+なすの,なおき
+のだ,ゆうこ
+おがわ,りょうこ
+おおかわ,じゅんこ
+おおたに,けん
+おくむら,まなみ
+いぎ,あきのり
+さなだ,よしひろ
+さとう,ひでひさ
+せき,よういち
+しばた,ゆきのり
+しまかわ,しげる
+しおじり,ひろし
+すだ,ともはる
+すずき,こうじ
+たかだ,たかのり
+たかはし,きょうこ
+たかす,つよし
+たにぐち,なおき
+つねかわ,ひろふみ
+うえはら,ひであき
+やぎもと,ひろし
+やまぐち,ともこ
+やました,かずき
+やざき,なおき
+よしだ,はるひこ
+あいかわ,ひろふみ
+ちかはら,おさむ
+わたなべ,たかえ
+のざき,てるあき
+あかにし,なおひろ
+しまもと,あとむ
+あなざわ,みのる
+いうち,まこと
+いしかわ,こういち
+いちかわ,そよ
+いまはやし,しんいち
+うちやま,よしたか
+おうさか,まさたか
+おおたに,ひでき
+おおばやし,しんじ
+おぐら,ひろこ
+かきもと,ひろし
+かとう,しげのり
+かみやま,ひろかず
+かわせ,なおき
+きたじま,あきひろ
+くさかべ,まえこ
+こいで,ひでき
+こまつ,けいいち
+さいとう,ひでき
+さとう,じゅん
+しゅう,まさや
+しのだ,ますみ
+しみず,さとし
+すがわら,しげふみ
+すみかわ,かつあき
+たかせ,きよたか
+たけだ,けいいち
+たなか,けんじ
+たばた,みわこ
+つちはし,むねひろ
+とむろ,なつひこ
+なかがわ,たかこ
+なす,ひろし
+にしはら,なおき
+のむら,かずひこ
+はせがわ,けんいち
+はらだ,ともこ
+ひじり,えり
+ふじた,のぶこ
+ほそかわ,たつお
+ますぶち,たかし
+まつなが,ゆき
+まつやま,てつや
+みた,みのる
+みよし,ようこ
+むらやま,まこと
+もりした,かずひろ
+やじま,なおこ
+やまざき,ひろゆき
+くりはら,まさき
+よこやま,ようこ
+わたなべ,よしひと
+くわしま,すぐる
+さかもと,ひでのぶ
+いとう,ただひろ
+うめない,すすむ
+おかしろ,しろう
+かわおか,ひでき
+くば,たかし
+こうだ,まさたけ
+さとう,まゆみ
+あべ,まさはる
+たかはし,ひさみ
+たばた,かつゆき
+なかがわ,こういち
+はしもと,とおる
+ひらの,まさたか
+ほその,あきひと
+むらかみ,けいこ
+よしむら,えり
+あまや,まさる
+ちょう,だいすけ
+ごうだ,きよのぶ
+はやかわ,ひろき
+ふるた,なるき
+いいだ,たかひろ
+いしわたり,ひろかつ
+かばやま,まさき
+かんだ,やすひと
+きたむら,よしお
+こんの,こういち
+まちだ,はるみ
+まつい,たけし
+みうら,けいご
+たはら,のりこ
+むらかみ,たつひこ
+なかみね,まもる
+なかざわ,きよし
+おおた,しげあき
+いしかわ,よう
+いとう,ともや
+さとう,つぐひで
+しばた,なおき
+そめや,あきひこ
+たけだ,あきら
+たなか,こういちろう
+たにした,ふみの
+つちや,よしこ
+わじま,りこ
+やまだ,ひろき
+やまざき,ゆたか
+たかはし,まさき
+あんどう,ゆき
+いしもと,りょうすけ
+いわさき,みずまさ
+うめはら,たかし
+おがた,やすし
+おにざわ,しげき
+かじ,おさむ
+かねこ,のぶかつ
+かわまた,ひろき
+くぼ,とものり
+こうさき,こういち
+さいほ,なるひろ
+さなだ,おさむ
+ししど,くにお
+すぎはら,きよしげ
+たかおか,ゆみ
+いとう,じゅんじ
+なかお,しんじ
+なかの,じ
+にしかい,としみつ
+ねろめ,ひろし
+はぶ,まこと
+ひらい,かおり
+ふじわら,とおる
+ほんま,ゆきのぶ
+まつざわ,ちから
+みやもと,やすじ
+もりや,ほまれ
+やの,ひろし
+やました,まいこ
+よだ,たかひろ
+わたべ,たかし
+あきば,けいいち
+あべ,まゆみ
+いとう,ようじ
+いしむら,ゆみこ
+いとう,まさる
+いまい,たけし
+うえはら,もとこ
+うめつ,あきひこ
+いまにし,ひろゆき
+おおいし,まさはる
+おかの,ゆき
+おがわ,とおる
+かがみ,えりか
+かたやま,みつこ
+かみ,よしてる
+かわさき,ひとし
+かわもと,みちお
+きたもと,つとむ
+ぎょうぶ,ひろこ
+こいけだ,たつろう
+こだま,たいちろう
+こばやし,ひでひと
+さいごう,みわこ
+さかがみ,いちろう
+ささき,ななえ
+さわ,けんご
+しみず,ゆきお
+しょうだ,しげのり
+すずき,かずひら
+いしはま,けんと
+たかはし,まきこ
+たけわ,しんじ
+たはら,さとし
+つつみ,まこと
+ないとう,こうじ
+なかじま,のぞむ
+なかむら,そういちろう
+いけだ,まさたか
+にし,つねあき
+ののいちや,ますお
+はしずめ,ゆうこ
+はっとり,ゆう
+いのぐち,かつふみ
+ひまき,とものり
+ふかざわ,りえ
+ふじなが,ふみこ
+ふるや,まりこ
+ほりかわ,ともひろ
+いぐち,たかひろ
+みつはし,えいいち
+みやした,ようこ
+むらまつ,まさゆき
+いのうえ,あきのり
+やの,ただたか
+やまだ,たつお
+やまもと,むねたか
+よしだ,りょう
+わたなべ,ひでゆき
+わたなべ,としえ
+こうだ,さとる
+おがわ,ひろあき
+あきもと,すすむ
+あさの,ともひこ
+あべ,まさおみ
+いつの,みきお
+いちのせ,こずえ
+いりた,やすあき
+いしおか,しんいち
+いちき,まさと
+いはら,きよたか
+いまず,つよし
+いわすぎ,みか
+うすい,まさひろ
+えとう,けんじ
+おう,よしひろ
+いわきり,わたる
+おおつき,じゅん
+おむら,くみ
+おかざき,ともみち
+おがわ,あきら
+きたむら,まりこ
+おおやま,ちずる
+かさざき,よしひろ
+かつの,たかのり
+かとり,けんじ
+がみ,ひろし
+かわかみ,まさみ
+かわみ,しんじ
+きたしろ,かずよし
+きむら,しげる
+くじらおか,だいき
+いしぐろ,たろう
+いなとみ,だいすけ
+こずま,まいこ
+こしい,ともひろ
+こにし,ただし
+こばやし,よしお
+さいとう,ともえ
+さかい,みねお
+さかもと,じゅんこ
+さとう,しんいちろう
+いしぐろ,ひでたか
+しなだ,よしこ
+しまだ,よしさだ
+いとう,きょうこ
+すぎやま,かずな
+すずき,こうじ
+せきぐち,けいこ
+かみや,かすみ
+たかの,けんいち
+たかはし,こういちろう
+たかみざわ,りゅうき
+たけうち,たかきよ
+たけもと,かずひこ
+たちばな,あやこ
+たなか,なおこ
+たなみ,つねお
+たのおか,みえこ
+ちゅう,さやか
+つちや,せれな
+とじ,まさこ
+とよだ,たくや
+なかじま,ともこ
+ながた,よしひこ
+ながはら,よしゆき
+なかむら,まさかつ
+にしかわ,いわお
+にわ,ゆきえ
+のがみ,ゆか
+はしずめ,たかし
+はせべ,ようへい
+はなぶさ,おさむ
+はやし,まこと
+はるたに,たかひろ
+ひょうえ,ともひろ
+ひらぬま,かずお
+ふくだ,たかひろ
+ふじお,たかゆき
+いのうえ,のりお
+ふるかわ,まさみつ
+ふわ,みお
+まえかわ,るみ
+まきた,かつゆき
+まつうら,えりこ
+まつだ,たかし
+まつみや,けんいち
+まなべ,りょうすけ
+みなと,ひろゆき
+むらかみ,まさみ
+もとよし,まこと
+もりた,けんじ
+やぎ,けいすけ
+がん,はなえ
+やまぐち,やすまさ
+やまさき,じゅん
+やまだ,たつじ
+やまにし,なおき
+よこた,ともふみ
+よしかわ,たくや
+よしむら,くにひこ
+わきた,とおる
+わたなべ,そう
+あまこ,よしお
+まの,あき
+うちむら,ちなつ
+さくらい,まみ
+しらい,ゆたか
+てらくら,ようじ
+おかだ,たつし
+ごとう,あきひろ
+つばき,せいいちろう
+いながき,ひでとし
+ほりべ,もとじ
+かい,よしえ
+たかだ,とくひこ
+こたに,ふみひこ
+いはら,けいこ
+あきはら,しゅんすけ
+あべ,ゆき
+あらき,ひろし
+いしい,のぶやす
+いしぜき,だいすけ
+いたに,たかし
+いとう,しずこ
+いの,みき
+いわざき,ひろたか
+うえの,けんじ
+うめはら,なつこ
+おおえ,だいすけ
+おおつ,ちえ
+おおつぼ,まさみつ
+おかだ,たつや
+おかもと,ひさし
+おくなか,せいし
+おばら,ゆりこ
+かじなが,ゆたか
+かとう,りょう
+かとう,わたる
+かわい,こうじ
+かわぐち,すすむ
+きし,れいこ
+きどころ,あつし
+くぼた,まゆみ
+くわばら,ゆかり
+こくぼ,ももえ
+ごとう,けいこ
+こみやま,まさよし
+さいとう,しげる
+さかもと,ちから
+ささの,あかぎ
+さなだ,まさゆき
+しまだ,たけし
+しもふじ,のぶひこ
+しわ,けんいち
+すぎはら,ひろのぶ
+すずき,まさや
+せき,あつなり
+たかぎ,かよ
+たかはし,ひろなお
+たきざわ,さとし
+たけだ,ゆういちろ
+たなか,せいじ
+たにかわ,よしつぐ
+たばた,けいたろう
+つかだ,りえ
+つぼた,まさや
+とうかいりん,ゆみ
+とのい,あきこ
+なかがわ,よしのり
+ながの,りょうた
+なかやま,ともひろ
+にしおか,しんいち
+ねぎし,りか
+のざき,だいすけ
+はしぐち,としひろ
+はっとり,ゆういち
+はまだ,だいじ
+ひしぬま,あつし
+ひらた,まみこ
+ふくだ,たかし
+ふじえだ,ひさかず
+ふじわら,たくと
+ほりかわ,しゅうじ
+まつお,ひでのり
+まつやま,みつてる
+みや,あきら
+みやもと,くにこ
+むらかみ,たつひろ
+もりた,まみ
+やぐら,しんじ
+やまだ,みずほ
+ゆら,けんいち
+よしざわ,ゆうこ
+ろく,あきこ
+わらび,ひろのり
+みひら,りょうへい
+みぎた,まな
+たけうち,りょう
+おのでら,くにひろ
+あかがわ,もとこ
+あさぬま,あや
+あらい,つよし
+いざわ,ちはる
+いしばし,としゆき
+いで,なるみ
+いのうえ,まこと
+いまぜき,くみこ
+いわた,こうじ
+うさみ,まりこ
+えのきど,よりこ
+おきた,ゆきのり
+おおつか,もとい
+おの,ひろし
+おかだ,かずひろ
+おくくぼ,たかし
+かない,けんいち
+かみや,さちこ
+かわさき,ひろき
+きだ,えいすけ
+きむら,ふみと
+くめうち,けんじ
+くわはら,しの
+こが,たくじ
+こばやし,あんな
+さいとう,けんいち
+ささき,はなこ
+さとう,みき
+さはら,たかふみ
+しだ,よしひろ
+しみず,たつお
+しもざき,たつひこ
+すぎうら,まさのぶ
+すと,さとし
+せと,けいじ
+たかぎ,のりゆき
+たかはし,みか
+たけだ,ゆうじ
+ただ,よしたか
+たにぐち,たかのり
+たむら,けいこ
+つかはら,みずほ
+つぼうち,あきふみ
+てらだ,よしき
+とみい,じゅんこ
+ないとう,たかお
+ながさか,こうじ
+ながの,やすお
+なかむら,えいじ
+にし,なおゆき
+にしだ,りょうへいた
+のぐち,かずよし
+のむら,かずお
+はっとり,さとみ
+はやかわ,ゆき
+はらだ,みえ
+ひでしま,みきこ
+ふかお,みゆき
+ふくはら,ゆきこ
+ふじもと,えりこ
+ほしの,すみお
+ほりぐち,じゅんいち
+まきの,たけお
+こみや,のぼる
+こばやし,ひろし
+かみくぼ,けんじ
+まつお,きよし
+なかち,きよし
+こすぎ,よしみ
+かつまた,としかず
+かがやま,まさはる
+くぜ,みきお
+くまだ,まさあき
+こじょう,さなえ
+かしくま,けんぞう
+きくち,よしひさ
+くまの,まさゆき
+こばやし,しゅんじ
+こばやし,のぶこ
+こにし,けんいち
+こばしがわ,ひとし
+かいど,みほ
+くろき,じゅん
+かなたに,りえ
+きたがわ,なおたか
+みずもと,なるき
+みやおか,けんろう
+むらた,けんじ
+もりた,ひでとも
+やなぎだ,えりこ
+やまざき,けん
+やまもと,やすのり
+よご,とものり
+よねだ,ゆみこ
+わこ,りえ
+あかはね,ひろあき
+あさべ,かよ
+あらい,ひでお
+いけだ,よしたか
+いしど,ゆきこ
+いずの,みつひろ
+いとう,たけし
+いのうえ,のぶたか
+いわた,よしひろ
+うかい,ひさなが
+えとう,ひろき
+おおさか,たてき
+おおにし,みつる
+おむら,ともこ
+おかの,やすふみ
+おがわ,たくや
+おざき,たかゆき
+おとがわ,りょうこ
+かさい,なおこ
+かすが,さなこ
+かとう,けんいちろ
+かめたか,たいすけ
+かわぐち,あゆみ
+かわばた,あゆみ
+きたがわ,たけし
+きむら,よしかず
+きりさこ,てっぺい
+くらはし,たかあき
+ごうだ,たけひろ
+こてら,きみひろ
+こばやし,なつこ
+こまつばら,ともひさ
+さいとう,てるひさ
+さかい,たかゆき
+さくらい,さだよし
+さとう,あき
+さわさき,たかし
+しまの,としあき
+しょうだ,くみ
+しんたに,けんた
+すぎやま,たかね
+せきもと,かつあき
+たかはし,れい
+たぐち,わたる
+たちばな,なおと
+たなか,さちえ
+たまき,なおこ
+つかだ,てつや
+つぼくら,たくや
+どい,のぶたか
+とだ,しゅんすけ
+ながさか,みちこ
+なかしま,あきひろ
+なかにし,みどり
+なかむら,まゆ
+なかやま,たけし
+にしの,ゆか
+のくお,かおり
+ばこし,しんご
+はたの,ようこ
+はやし,さとこ
+はらだ,あつし
+ひらい,ゆうすけ
+ひろえ,あつし
+ふくだ,さやか
+ふじむら,あきこ
+ふるかわ,ひろこ
+ほそだ,しゅんご
+まえかわ,みわ
+まさとうみ,まいこ
+まつおか,ともこ
+まつばら,あきこ
+みうら,きよまさ
+みぞはた,ちえ
+みはら,まさき
+みやむら,あや
+むらた,くみこ
+もり,くみこ
+もろえ,ひろかず
+やなぎさわ,けいすけ
+やまがた,まこと
+やまだ,のぶこ
+やまもと,てるひこ
+やまもと,わたる
+よこやま,あゆみ
+よしだ,なおこ
+よしむら,だいすけ
+わだ,いさむ
+わたなべ,ひろし
+ささの,すすむ
+こだま,たかひこ
+かわしま,まさなり
+かわの,こういち
+かみうら,かずひで
+こんの,ひでき
+くやま,たけし
+こい,せいいちろう
+かさじま,ひろふみ
+かとう,ともみ
+くぼた,ひろゆき
+けがさわ,ひさし
+かわぎし,ひろし
+かまだ,たかし
+きくち,おさむ
+かとう,かずひこ
+まちだ,かずお
+むらさき,としお
+まつもと,けんいち
+まさき,きくお
+みずたに,なおひこ
+まるやま,せいじ
+むらしま,ただお
+みずた,よしお
+もりい,ぎょじ
+みやざわ,よしお
+みずの,ゆりこ
+むらいし,まもる
+むらかみ,かずお
+むらまつ,あつし
+みたく,けいぞう
+まえだ,あきお
+むらい,とよみ
+まつだ,さとし
+みてら,やすお
+もり,つとむ
+まつい,たかし
+みうら,くにお
+まつもと,たけし
+まつざわ,よしお
+みかみ,はるき
+たぶち,けんじ
+なかじま,まさひろ
+ないとう,たけお
+にしな,きみひと
+なかがみ,しゅういち
+なかはた,かずとし
+にしおか,ひろし
+にしだ,よしろう
+のむら,くにひこ
+なかむら,ひでゆき
+ないとう,かずあき
+にった,ゆたか
+なかじま,かつお
+なかせ,としあき
+なかがわ,のぶお
+なかじま,むねたか
+なかむら,ほずみ
+ながしま,なおじ
+おき,すみお
+おくだ,としお
+おおはし,ひろし
+おがわ,とおる
+おざわ,ひろし
+おおはし,ゆたか
+おおの,みつお
+おおいし,じ
+おおかわ,かおる
+おりがさ,やすたけ
+おおた,よしひこ
+おざき,じゅんいち
+おだしま,ただし
+おおひら,せつじ
+おおや,ひでほ
+おかの,あきこ
+おぐし,あけみ
+おおいがわ,たかはる
+なかたに,しんいち
+しらおがわ,らいた
+なかむら,としみつ
+あべ,えみこ
+かわうち,まりえ
+いとう,けんそう
+こいずみ,たくや
+かなおか,ひろし
+ありま,やよい
+うまやはら,やすみ
+かねまつ,さきこ
+ふかや,くにあき
+ごとう,ゆういちろう
+すぎもと,くにお
+くりはら,とよひこ
+おおた,ゆきこ
+すずき,たけし
+よしだ,かずとし
+はっとり,ひろし
+かどた,あきひろ
+いしざわ,ゆずき
+みやもと,みどり
+おじ,やすひろ
+あらい,としあき
+きたむら,りかこ
+さいとう,よしひと
+こばやし,きょうぞう
+にしかわ,ともみ
+たなか,かずひろ
+ずし,やすお
+あらい,しょうへい
+まえでら,てるゆき
+こんど,なお
+ながほり,ゆきこ
+いわさき,みやび
+なかたに,たかし
+なかがき,けいこ
+くわはら,まこと
+すずき,ゆき
+ただ,えいき
+わだ,なおこ
+さの,ひろし
+ときた,なつこ
+こさい,ゆうこ
+せごえ,さとこ
+なかい,あつみ
+はらだ,としまさ
+きのした,みちお
+みやざき,かずみ
+たきざわ,まさあき
+さとう,こういちろう
+みずしま,たける
+たにぐち,はるみ
+まつした,たかし
+すぎうら,けんたろう
+たにがき,せいこ
+さとう,しげお
+やまかわ,さだはる
+すずき,しげひろ
+とくだ,まんなり
+いわま,のぶあき
+おおはら,ゆきなお
+しおぬま,ひでとし
+すずき,あきよし
+すずき,よしこ
+すずき,のぶあき
+せき,おさむ
+すずき,つとむ
+すがお,てつじ
+すずき,けいたろう
+さどとも,あきら
+しま,みのる
+さいとう,おさむ
+すずき,まさひろ
+さいとう,ゆきお
+そま,おさむ
+さとう,けんじ
+しろさき,よういち
+すずき,ようじろう
+すずき,てつろう
+すぎもと,まさお
+さかい,しんいち
+すずき,かずゆき
+さとう,たつじ
+しおた,とよお
+そま,かんじ
+しゅどう,たかお
+さくらい,としお
+そうや,せいじ
+さわむら,なるみ
+せお,ゆうじ
+しみず,としお
+さきもり,いわお
+さいとう,ひさお
+しみず,えいぞう
+しおのや,きよかず
+たかぎ,ひでお
+たきいし,りょうじ
+とば,まさし
+たぐち,まさお
+たかの,むねお
+たかやす,とよみ
+たなか,しげる
+たかはま,よしあき
+つちだ,まもる
+たかお,ますみ
+たにぐち,みちあき
+つじかわ,ゆういち
+よしざわ,まさはる
+たなか,じゅんぞう
+たまる,まさみ
+たかぎ,きょうこ
+つねひろ,じゅんじ
+たかはし,としあき
+あさい,ゆうじ
+たかさき,あきら
+たかなみ,まさる
+ともなが,つねかず
+たかぎ,いつお
+つかもと,あきお
+てらうち,さだゆき
+たのおか,すすむ
+うすぎ,かずひろ
+うつき,てつお
+うちだ,けんすけ
+うめむら,としお
+うの,としひで
+わたなべ,ひさゆき
+わたなべ,かつなり
+わたなべ,こんごう
+わだ,たけみつ
+おおた,まこと
+なかじま,けいいち
+ふるさわ,つよし
+かしわぎ,こ
+はた,しょうすけ
+うしじま,まさかず
+まつい,あきら
+かわな,だいじろう
+みやもと,たかひさ
+よしだ,すみゆき
+おおかわら,げんたろう
+すやま,くんろう
+すずき,ゆうじ
+くにぎた,よういち
+きど,まさし
+いしい,ちかとし
+うえだ,たかし
+いちかわ,かずお
+おさじま,としや
+うえむら,としひで
+きむら,ときち
+よこやま,ひさお
+いとう,まさゆき
+みやべ,かずと
+たまい,かずみち
+こり,こういちろう
+いわさわ,まなぶ
+よしやす,ごう
+またき,しんご
+やまもり,かつお
+たかた,のりお
+すどう,しょうこ
+うえむら,ゆたか
+すずき,みのる
+すずき,あきら
+あらき,せきね
+かだ,あきら
+にしより,みのる
+いなば,かずと
+ほりい,つねお
+すどう,まさひこ
+しろやま,こ
+てらい,あきこ
+まつもと,なおたけ
+いとう,せいじ
+そとやま,かつのり
+ひらおか,やすし
+ひらき,たもつ
+たなべ,ゆうじろう
+ためちか,たてお
+よねだ,としひで
+えじま,とものり
+たかはし,みさこ
+てらお,ひろひさ
+ほんだ,ゆみ
+おちり,やすひろ
+おおい,なおみ
+かわい,みのる
+むらかみ,みよし
+なかじま,ひとし
+いしはら,ふみたか
+あかほり,みつのぶ
+やすだ,あきら
+よこせ,ともしげ
+よしかわ,としろう
+やまぐち,みのる
+よしむら,まさひこ
+よねだ,かおる
+やました,しょうぞう
+やまだ,えいぞう
+やまざき,すすむ
+よしだ,ひろし
+やまたに,ひろつぐ
+やまね,よねたか
+やまかわ,じゅんいち
+よしだ,たかお
+やまさき,のりお
+やまもと,てるお
+よこた,えいいち
+やまだ,かつひろ
+よしの,だいすけ
+よしだ,むつお
+のむら,まさたか
+やまだ,さとる
+いしかわ,ちよたけ
+すずき,ひろふみ
+ますだ,けんじ
+いまい,まさぞう
+きゅうそじん,けんすけ
+やまだ,あきら
+ひらの,たいき
+なかにし,かずしげ
+たつた,しげる
+みむら,まさお
+ひらまつ,さだお
+とみた,まさひろ
+こばやし,しんいちろう
+たけなか,まさひろ
+あまの,のりこ
+いしい,きょうこ
+いで,さきこ
+おかだ,りえこ
+ひらいし,まり
+よしもと,ひろこ
+かわしま,まゆみ
+とばた,のりかず
+たなか,ひかる
+あんべ,まなみ
+たかはし,まさひろ
+とみやま,よしあき
+たかやま,としゆき
+みやした,みのる
+はしもと,みきお
+とがめ,みわこ
+のぐち,かずまさ
+のぐち,あきら
+そうみや,けんじ
+きむら,ようじ
+かとう,ともゆき
+すずき,けんじ
+おかだ,ひろみ
+やの,じゅんこ
+おのさと,はん
+まつだ,よしあき
+きむら,たかし
+たむら,とものり
+かとう,としや
+いぬまる,ひろじ
+おのでら,なおこ
+すずき,ちはる
+たにかわ,ほずえ
+さくま,しま
+いまむら,るりこ
+えいどめ,ゆき
+よしい,ただひろ
+おおたき,ゆみこ
+くすもと,いさお
+みやした,ゆきお
+まちい,かずひろ
+はやしだ,たかとし
+はるはら,たかし
+てらもと,ゆうじろう
+まつもり,かずお
+わたなべ,こうじ
+かねこ,やすし
+おりがさ,まつのり
+つかもと,ひろみち
+よしだ,みな
+にしだ,ひさえ
+ふるかわ,りえ
+むらかみ,たかお
+おおばやし,こうきち
+さとう,けいこ
+やま,ふみこ
+みやた,たかてる
+虹如
+丁心嵐
+丁志宏
+丁建文
+丁偉民
+丁甦南
+丁綺慧
+丁譽琳
+于秀美
+于殿聖
+尹居才
+尹曉恩
+孔繁霖
+尤良
+尤星策
+尤盟貴
+尤蒔萱
+文儀詠
+方文鋒
+方志明
+方幸宜
+方俊雄
+方彥程
+方若珊
+方健剛
+方淑儒
+方策民
+方裕欽
+方慧琴
+方麗雅
+毛佩娟
+毛漢梅
+王一珍
+王上維
+王大昌
+王子熙
+王中憓
+王仁宗
+王友志
+王心忠
+王文平
+王文郁
+王文鴻
+王世宇
+王世廣
+王弘毅
+王永仁
+王玉文
+王生勳
+王光麃
+王宇清
+王有權
+王伯逸
+王孝君
+王宏嘉
+王志文
+王志峰
+王志欽
+王志銘
+王秀芬
+王育德
+王依韻
+王佩
+王坤賢
+王岡陵
+王怡文
+王怡清
+王怡蘋
+王明珊
+王欣之
+王治邦
+王金華
+王信仁
+王信裕
+王俊彥
+王俊凱
+王俊超
+王俞文
+王則勝
+王奕鈞
+王威能
+王建文
+王建雄
+王彥智
+王思潔
+王昭人
+王昱凱
+王柏堯
+王為蒨
+王盈傑
+王紀
+王美淑
+王美懿
+王英蓉
+王郁欣
+王郁珺
+王哲聰
+王悅如
+王時蔚
+王浩倫
+王素卿
+王偉州
+王健民
+王國彥
+王執信
+王崑龍
+王啟宗
+王敏銓
+王清鴻
+王淑眉
+王淑雯
+王淨瑩
+王莉汶
+王傑立
+王凱蒂
+王博文
+王富昌
+王惠玲
+王敦正
+王景泉
+王智鳴
+王朝鍵
+王琪
+王翔寧
+王菁蘭
+王逸修
+王雅伶
+王雅雯
+王雯
+王勤善
+王愛嘉
+王毓菁
+王瑞吟
+王瑞頤
+王聖
+王聖棋
+王裕正
+王詩婷
+王鉅翔
+王嘉君
+王嘉農
+王嘉齡
+王睿君
+王維如
+王翠華
+王銘梅
+王德皓
+王慧英
+王慧靜
+王儒隆
+王曉雯
+王興邦
+王錦慧
+王爵暐
+王謙維
+王禮謙
+王瓊珮
+王韻淑
+王麗芬
+王麗雯
+王耀暉
+王鐘銘
+王齡梓
+王躍霖
+王浟美
+王棨德
+王嫆棻
+王筱萱
+王薏雯
+丘真綺
+包宮維
+古玉鳳
+古明晟
+古桂菊
+古智偉
+古俶綺
+史明原
+史曜彰
+甘永裕
+甘霈霖
+田沐恩
+田芳茹
+田淑君
+田璧菀
+白大尹
+白佳渝
+白振源
+白喜文
+白榮修
+石乃如
+石育玟
+石明周
+石峻平
+石傑宇
+石錦航
+伍世揚
+伍家誼
+任才俊
+任新蘭
+向西陽
+成丹玲
+朱文碧
+朱玉汶
+朱妍如
+朱沛怡
+朱宗蔚
+朱東應
+朱俊祥
+朱建泰
+朱珍慧
+朱郁庭
+朱家欣
+朱峰誼
+朱珮儀
+朱偉傑
+朱康銘
+朱寓理
+朱雅鈴
+朱達明
+朱鳳薇
+朱靜文
+朱芮宜
+江中健
+江文瓊
+江立峰
+江呈陽
+江秀玲
+江佳霖
+江協勇
+江宗哲
+江岩達
+江昌鴻
+江明璋
+江欣容
+江長壽
+江俊興
+江建銘
+江政儒
+江玲慧
+江衍龍
+江振宇
+江純玫
+江啟仲
+江盛龍
+江智維
+江雅惠
+江嘉倫
+江寬慈
+江憶雯
+江蕾
+江媞
+牟昕
+何仁田
+何世雄
+何亙彬
+何君萍
+何育杰
+何佳融
+何其澤
+何季秦
+何宗禧
+何怡君
+何明宗
+何昇儒
+何秉欣
+何俊廷
+何冠霖
+何彥駒
+何炳賢
+何若瑜
+何峻杰
+何素君
+何敏菁
+何涵
+何惠鈺
+何雅琪
+何嘉展
+何銘宏
+何學厚
+何靜儀
+何旻霜
+余心農
+余吉祥
+余佳音
+余坪芳
+余宛儒
+余明娟
+余金典
+余俊儒
+余彥霖
+余盈鋒
+余泰男
+余婉萍
+余惠文
+余瑞萍
+余齊威
+余謝輝
+利秀蘭
+吳大維
+吳仁佑
+吳元嫈
+吳文玉
+吳文發
+吳文斌
+吳世達
+吳平和
+吳永昌
+吳玉茹
+吳立民
+吳兆文
+吳安邦
+吳行中
+吳妙倫
+吳志宏
+吳志漢
+吳沛晃
+吳秀紋
+吳育霖
+吳依蓓
+吳佳南
+吳佳容
+吳佳蓉
+吳佳穎
+吳佳鴻
+吳佩珊
+吳佩純
+吳佩諭
+吳其霖
+吳坤鴻
+吳孟宗
+吳孟娟
+吳孟憲
+吳宗岱
+吳宗隆
+吳宗翰
+吳宜芳
+吳宜穆
+吳宛縈
+吳岡儒
+吳幸真
+吳忠霖
+吳怡萍
+吳怡憲
+吳承璋
+吳昌庭
+吳明
+吳明哲
+吳明達
+吳明曄
+吳昕姿
+吳東霖
+吳欣怡
+吳欣儒
+吳治英
+吳秉勳
+吳芳瑜
+吳金玉
+吳雨哲
+吳亭誼
+吳信輝
+吳俊奇
+吳俊儀
+吳俊緯
+吳俊諺
+吳冠群
+吳品蓉
+吳姿儀
+吳宣鋒
+吳建芝
+吳建勳
+吳律銘
+吳思穎
+吳政彬
+吳政穎
+吳春緩
+吳昭龍
+吳柏儀
+吳炫宗
+吳皇欣
+吳秋美
+吳美玲
+吳美慧
+吳致銘
+吳英鴻
+吳重毅
+吳原宇
+吳家明
+吳家慧
+吳振成
+吳晏平
+吳泰昌
+吳珮禎
+吳純欣
+吳偉誠
+吳國偉
+吳堅瑋
+吳婉歆
+吳悠
+吳敏真
+吳淑如
+吳淑敏
+吳涵宜
+吳雪妮
+吳勝祺
+吳惠君
+吳斯燻
+吳犀靈
+吳詠宸
+吳鈞婷
+吳雅嵐
+吳雲驥
+吳毓真
+吳瑞哲
+吳聖威
+吳鼎偉
+吳嘉勝
+吳寧瑄
+吳福量
+吳肇騰
+吳銓友
+吳慶文
+吳慧敏
+吳賜忠
+吳曉青
+吳曉薇
+吳蕙紋
+吳錦鎰
+吳靜芳
+吳總成
+吳鴻昌
+吳豐吉
+吳韻卉
+吳馨怡
+吳佼佼
+吳昶葳
+吳瑋琳
+呂子豪
+呂文專
+呂正安
+呂自達
+呂育芳
+呂佳容
+呂佩純
+呂宗銘
+呂宜霖
+呂怡慧
+呂明泰
+呂芳俊
+呂保岸
+呂南畿
+呂建鋒
+呂昭儀
+呂秋雲
+呂英瑋
+呂格豪
+呂國培
+呂淑卿
+呂紹榮
+呂詠真
+呂雯歆
+呂嘉元
+呂銘智
+呂學叡
+呂靜蓉
+呂廳嚴
+宋心慧
+宋伯瑜
+宋佩珊
+宋昌霖
+宋奕儒
+宋禹瑩
+宋舫臣
+宋喬玉
+宋碧琳
+宋竄
+巫戎怡
+巫明翰
+巫振嘉
+巫嘉興
+李乃文
+李中任
+李仁凱
+李元裕
+李心仁
+李文志
+李文惠
+李文達
+李月星
+李世寬
+李巧琳
+李正彥
+李永昌
+李玉卿
+李立仁
+李仲玄
+李兆斌
+李如珍
+李安琳
+李羽
+李君彥
+李宏文
+李志成
+李志偉
+李沛杰
+李秀玲
+李秀蘅
+李育瑩
+李亞倫
+李依恂
+李佳芳
+李佳珍
+李佳晃
+李佳雯
+李佳儒
+李佳霖
+李佳蓁
+李佩芝
+李佩玲
+李佩儀
+李佩嬬
+李函芬
+李坤源
+李奇翰
+李孟哲
+李孟穎
+李宗坤
+李宗義
+李宗穎
+李宗鴻
+李宜洲
+李宜峻
+李宜樺
+李宛玲
+李尚賢
+李岳峰
+李幸娟
+李忠穎
+李怡玲
+李怡慧
+李怡旻
+李易修
+李昆宏
+李明利
+李明彥
+李明釗
+李明勳
+李明霞
+李昇翰
+李東龍
+李欣怡
+李欣達
+李法漢
+李玥瑩
+李芳圻
+李芝綾
+李金鈴
+李長榮
+李青陽
+李信德
+李俊宏
+李俊彥
+李俊德
+李俊賢
+李俞慧
+李冠瑩
+李南嬌
+李姿儀
+李威德
+李建民
+李建明
+李建賢
+李建興
+李彥宜
+李彥霖
+李思萱
+李思諭
+李政哲
+李政龍
+李昭美
+李昱春
+李柏蓉
+李珊珊
+李盈潔
+李秋梅
+李美玉
+李美儀
+李胤瑤
+李英志
+李貞宜
+李郁偉
+李倩
+李哲緯
+李家豪
+李容婷
+李振昌
+李晉豪
+李泰霖
+李珮琳
+李祖珍
+李訓億
+李偉愷
+李健源
+李國強
+李國維
+李基弘
+李婉瑞
+李康正
+李敏吉
+李清吟
+李淑貞
+李淑華
+李祥瑞
+李連峰
+李凱楨
+李惠芬
+李惠雯
+李智強
+李湘樺
+李詠秋
+李進福
+李雅玲
+李雅惠
+李雅燕
+李意雯
+李毓真
+李瑞華
+李聖琰
+李道林
+李嘉凌
+李嘉鴻
+李榮馳
+李福蓉
+李維楨
+李銘毓
+李廣祁
+李慶華
+李慧珠
+李賢淦
+李曉妮
+李曉菁
+李璟郁
+李蕙如
+李錦昇
+李靜怡
+李龍生
+李聰岳
+李鴻達
+李鎔阡
+李麗珠
+李馨怡
+李劭軍
+李苹慈
+李絜
+李鈺雯
+李恒君
+杜志賢
+杜宛諭
+杜芳政
+杜彥霖
+杜珮詩
+杜陽圓
+杜燕華
+沈士傑
+沈正德
+沈佑翰
+沈志龍
+沈佳慧
+沈宗慶
+沈昌明
+沈秉誼
+沈冠宏
+沈建德
+沈柏寬
+沈郁康
+沈益承
+沈晨鐘
+沈舒琳
+沈瑞欽
+沈維毓
+沈蕙君
+沈筱雲
+汪秀燕
+汪青蓉
+汪家瑩
+汪靖國
+谷泓道
+辛奕成
+邢能文
+阮信憲
+阮斐瑜
+阮鵬碩
+卓志忠
+卓芳如
+卓英哲
+卓淑媛
+卓誌隆
+周士傑
+周中興
+周文雅
+周代尉
+周玉蓮
+周吉龍
+周佑禎
+周孝芳
+周志清
+周秀晏
+周亞欣
+周佩宜
+周奇蓉
+周宜芳
+周怡伶
+周明弘
+周杰
+周玟萱
+周金燕
+周俊豪
+周威呈
+周彥岑
+周柏甫
+周秋萍
+周郁文
+周娟如
+周振凱
+周珮如
+周偉茹
+周敏鈺
+周惠蓮
+周詠訓
+周雲棠
+周煌耿
+周裕豐
+周嘉慶
+周翠芬
+周賢德
+周燕盈
+周聰宇
+周蘭芳
+周鈺翔
+季育澤
+官芳如
+尚書
+於家珍
+昌孟翰
+林上志
+林于禎
+林士力
+林士傑
+林士農
+林女滿
+林子傑
+林子勤
+林小琪
+林之菁
+林介一
+林天民
+林文中
+林文將
+林文斯
+林文德
+林木興
+林世芳
+林世淇
+林主恩
+林可鈞
+林平苑
+林正一
+林正偉
+林永昌
+林永祥
+林永晟
+林玉玲
+林玉菁
+林石隆
+林立偉
+林仰望
+林后唯
+林守德
+林百揚
+林佑珊
+林伯岳
+林伶貞
+林呈任
+林君翰
+林妙君
+林孝全
+林宏韋
+林宏儒
+林廷吉
+林志成
+林志杰
+林志皇
+林志堅
+林志豪
+林志穎
+林志鴻
+林材俊
+林灼龍
+林秀玲
+林秀真
+林秀穎
+林育民
+林育名
+林育宏
+林育進
+林育慧
+林育麟
+林谷峰
+林享燁
+林佳生
+林佳怡
+林佳盈
+林佳綺
+林佳慶
+林佳潔
+林佳樺
+林佳鴻
+林佩怡
+林佩雯
+林佩慧
+林侑青
+林協村
+林坤韋
+林奇模
+林孟萱
+林孟穎
+林季燁
+林宗慶
+林宗澤
+林宜君
+林宜聖
+林宜樺
+林宜蓁
+林宛樺
+林岱蓉
+林幸蓉
+林忠岳
+林怡汝
+林怡君
+林怡君
+林怡均
+林怡芳
+林怡萱
+林怡礽
+林於妮
+林昌賢
+林明生
+林明杰
+林明楓
+林明毅
+林明環
+林昇龍
+林杰欣
+林欣怡
+林欣慈
+林欣毅
+林欣麗
+林牧台
+林玫君
+林秉瑩
+林芳如
+林芳儀
+林芬芳
+林金仕
+林金龍
+林青志
+林亮仁
+林信宏
+林保成
+林俊佑
+林俊宏
+林俊男
+林俊逸
+林俊魁
+林俐亭
+林冠吟
+林冠儒
+林品宜
+林奕秀
+林姿吾
+林威名
+林威良
+林建一
+林建吾
+林建廷
+林建良
+林建華
+林彥文
+林彥伶
+林彥甫
+林彥興
+林恆碩
+林政良
+林政儀
+林春年
+林昭志
+林星晨
+林柑杏
+林柏村
+林柏翰
+林為文
+林玲至
+林盈君
+林祈均
+林秋惠
+林美如
+林美吟
+林美玲
+林美華
+林致君
+林英男
+林虹如
+林貞延
+林郁敏
+林郁蘭
+林韋嘉
+林倩如
+林原合
+林哲宏
+林娟如
+林家生
+林家勇
+林家聖
+林家慶
+林容仟
+林峻暉
+林庭瑋
+林振浩
+林晉全
+林晏稚
+林書楷
+林桂珠
+林泰維
+林珮如
+林益弘
+林祐禾
+林窈意
+林素華
+林耘德
+林起翎
+林偉民
+林偉德
+林國欣
+林培堯
+林婉瑜
+林康寧
+林敏裕
+林清雲
+林淑玲
+林淑娥
+林淑萍
+林淑儀
+林盛傑
+林雪萍
+林博隆
+林惠文
+林惠敏
+林惠琇
+林智能
+林期
+林湘惠
+林紫菁
+林視尊
+林逸昀
+林逸儒
+林雅君
+林雅倫
+林雅惠
+林雅華
+林雅謙
+林順安
+林嵩山
+林敬文
+林新凡
+林楠棋
+林毓超
+林煌軒
+林瑞家
+林瑞蘭
+林祺勛
+林義傑
+林群峰
+林聖恩
+林聖鈞
+林裕堅
+林詩凡
+林詩雯
+林雍翔
+林鼎植
+林嘉珍
+林嘉群
+林榮欽
+林睿暘
+林精湛
+林翠萍
+林銘煌
+林齊蔚
+林廣義
+林慧君
+林慧美
+林慧萍
+林慧麗
+林瑾蘭
+林賢得
+林學隆
+林曉君
+林曉華
+林澤義
+林穎
+林興釗
+林錦隆
+林靜宜
+林靜芬
+林懋州
+林駿逸
+林鴻達
+林豐舜
+林麗君
+林麗華
+林繼平
+林巍龍
+林芊亨
+林姝均
+林倬世
+林琮閔
+林煒鴻
+林筱菁
+林鈺凱
+林驧
+祁義國
+初若凡
+邵奕鈞
+邵懷德
+邱千綺
+邱子楓
+邱天宏
+邱文鴻
+邱幼媚
+邱玉玲
+邱安台
+邱志光
+邱秀英
+邱佳松
+邱延齡
+邱昌裕
+邱泓彰
+邱信益
+邱俊榮
+邱品華
+邱奕睿
+邱建誠
+邱政湧
+邱柏瑜
+邱盈棠
+邱致穎
+邱重憲
+邱振峰
+邱珮綺
+邱國恭
+邱婉嬅
+邱清龍
+邱淑慧
+邱創儉
+邱惠詩
+邱湘雲
+邱雅芬
+邱雅茜
+邱毓玲
+邱盟琇
+邱詩琁
+邱嘉慧
+邱韶瑩
+邱慧婷
+邱靜宜
+邱豐祥
+邱韻寧
+邱繼瑩
+邱顯桓
+邱琬淑
+邱鈺斐
+金明輝
+金勤
+侯文哲
+侯宏昌
+侯岳宏
+侯信宇
+侯柏青
+侯淵銘
+侯雅雯
+侯靜汝
+俞佳凡
+俞芊薈
+姜宏榮
+姜芝怡
+姜凱傑
+姜增炫
+姜旻姍
+姚立三
+姚佳慧
+姚威宇
+姚凱文
+姚德麟
+律振揚
+施可隆
+施宇駿
+施孝德
+施育瑜
+施佩華
+施宛直
+施明妍
+施俊名
+施建宇
+施柏如
+施郁蕙
+施敏男
+施博元
+施智勇
+施雅娟
+施嘉琪
+施慧君
+施靜怡
+施瑋瑜
+柯文祥
+柯全益
+柯志明
+柯佩君
+柯宛君
+柯欣儀
+柯俊隆
+柯盈如
+柯敏盛
+柯博元
+柯棋棣
+柯毓萍
+柯鳳儀
+柯瓊鎣
+柳佩君
+柳棋元
+段明宏
+洪力壹
+洪士育
+洪子婷
+洪文明
+洪世嘉
+洪永昌
+洪玉蒨
+洪名衡
+洪君祥
+洪志明
+洪村銘
+洪良欣
+洪坤錡
+洪宜良
+洪怡真
+洪明龍
+洪俊雄
+洪政霈
+洪美萍
+洪重卿
+洪振益
+洪珮芳
+洪偉哲
+洪曼珊
+洪國翔
+洪婉紋
+洪御彗
+洪清健
+洪淑淩
+洪雪芳
+洪惠棋
+洪菁隆
+洪雅苓
+洪慈伶
+洪煌凱
+洪瑞鴻
+洪萱鋒
+洪靖凱
+洪嘉蓮
+洪榮輝
+洪綺
+洪肇彥
+洪銘鍾
+洪慶銘
+洪瑩珍
+洪靜怡
+洪藝菁
+洪繼賢
+洪晢惇
+洪鈺櫻
+紀文欽
+紀志霖
+紀怡婷
+紀盈州
+紀博敏
+紀順興
+紀蘭潔
+胡文瑜
+胡玉慧
+胡廷威
+胡定宇
+胡芳慈
+胡玲婉
+胡家榮
+胡純菁
+胡淑君
+胡博硯
+胡智銘
+胡雅智
+胡瑞洙
+胡碧媜
+胡靜苑
+胡懿心
+范文政
+范吉慶
+范明中
+范姜慧怡
+范家誠
+范耕魁
+范博彰
+范智欽
+范瑞祥
+范綱賢
+范耀聰
+計竹宇
+韋桂仁
+倪威遠
+倪瑞期
+凌明德
+唐千惠
+唐邦泰
+唐英娜
+唐淑芬
+唐義堯
+唐譽玫
+夏春香
+夏慧齡
+孫元俊
+孫永信
+孫伯中
+孫協裕
+孫建崴
+孫振涼
+孫國書
+孫淑芬
+孫傳凱
+孫道隆
+孫豪志
+孫學儀
+孫瑀
+徐乙可
+徐士勛
+徐仁乾
+徐文益
+徐仕泓
+徐永光
+徐立達
+徐如昇
+徐克鈞
+徐志偉
+徐育慈
+徐佩錦
+徐昆羿
+徐松鴻
+徐信中
+徐思維
+徐美華
+徐家楷
+徐浚傑
+徐偉峻
+徐國倫
+徐婉儀
+徐敏芳
+徐淑娟
+徐莉真
+徐掌瑛
+徐詠媛
+徐順宏
+徐瑞恭
+徐裕彬
+徐嘉宏
+徐夢麟
+徐維揚
+徐銘謙
+徐慧心
+徐震東
+徐鴻仁
+徐繼政
+徐菡禧
+徐鈺綾
+柴學舜
+殷肇陽
+祖曉鳳
+秦梓銘
+翁于琪
+翁文茹
+翁仲賢
+翁育稔
+翁明安
+翁柏聖
+翁珮怡
+翁崇庭
+翁淑華
+翁逸軒
+翁義宗
+翁夢君
+翁銘遜
+翁靜瑜
+翁靚晏
+袁如岡
+袁偉倫
+袁榮燦
+馬一文
+馬玉娟
+馬佳伶
+馬英傑
+馬智君
+馬緒川
+高一銘
+高小文
+高世昌
+高正國
+高伊俊
+高宏銘
+高秀鈴
+高妮瑋
+高明
+高咸實
+高美芳
+高峰
+高健
+高培真
+高敏娉
+高笙輔
+高琪舒
+高雅腹
+高照閔
+高詩娉
+高彰隆
+高翠翎
+高銘琇
+高慧萍
+高譜倫
+高斌鑫
+商弘易
+崔倩苓
+康乃月
+康攸華
+康美玲
+康傑民
+康雅婷
+康曉蕙
+張一鴻
+張力夫
+張千里
+張小萍
+張仁杰
+張元隆
+張天鳳
+張心瑜
+張文彥
+張文欽
+張文豪
+張文騰
+張世明
+張世儒
+張仕育
+張可欣
+張弘泰
+張正忠
+張正衛
+張永俊
+張玄鴻
+張玉琪
+張立文
+張亦寧
+張光仁
+張匡杰
+張如瑩
+張旭宗
+張至睿
+張佑群
+張克偉
+張妙慧
+張宏瑞
+張志
+張志明
+張志祥
+張志達
+張志豪
+張沅璽
+張秀琪
+張育崧
+張育誠
+張育瑋
+張亞銜
+張佳惠
+張佩瑛
+張孟婷
+張宜新
+張念慈
+張昆煌
+張明照
+張林芬
+張治國
+張芝友
+張金鳳
+張俊偉
+張冠華
+張建豪
+張恆瑋
+張柔明
+張界聰
+張紀君
+張美雯
+張茂醒
+張香璽
+張倫瑋
+張哲健
+張哲維
+張家振
+張家菱
+張家群
+張家綺
+張家豪
+張家銘
+張家瑋
+張峻嘉
+張庭源
+張振源
+張晉豪
+張書維
+張書馨
+張桂鳳
+張珮怡
+張益維
+張秦芸
+張純益
+張耿崚
+張高瑞
+張健良
+張國媛
+張婉暄
+張惟捷
+張梅君
+張清凱
+張淑珍
+張淑茹
+張淑雅
+張淵富
+張莉茹
+張凱宇
+張凱琳
+張勝傑
+張博勛
+張喬翔
+張富淳
+張惠娟
+張惠菁
+張敦義
+張景渾
+張智清
+張智翔
+張智謙
+張湘怡
+張登翔
+張紫鈴
+張舜華
+張証荃
+張逸群
+張鈞貽
+張雅姍
+張雅敏
+張雅婷
+張雅惠
+張雅琴
+張雅鈴
+張雯儀
+張嗣文
+張新宏
+張毓倫
+張瑚珊
+張瑞芸
+張瑞氶
+張祺昇
+張聖莉
+張詩怡
+張靖怡
+張嘉正
+張嘉芬
+張嘉晉
+張嘉惠
+張嘉聲
+張榕容
+張睿穎
+張碩桓
+張綵芳
+張維哲
+張翠文
+張蓓萱
+張銘宗
+張鳳平
+張慶怡
+張慧娟
+張瑩珊
+張憶君
+張曉菁
+張翰文
+張靜如
+張環伊
+張鴻智
+張簡欣華
+張豐璸
+張瓊文
+張藝馨
+張寶云
+張耀云
+張耀聲
+張馨文
+張巍耀
+張芃
+張琇閔
+張琬菁
+張瑋芸
+張筱雯
+張禕倫
+張恒中
+曹士敏
+曹聿男
+曹昌男
+曹哲嘉
+曹淑媛
+曹皓雲
+曹嘉文
+曹璽穠
+梁文安
+梁正忠
+梁汝舜
+梁志銘
+梁東林
+梁彥豪
+梁家明
+梁晉魁
+梁啟玄
+梁勝銘
+梁朝凱
+梁愷芸
+梁嘉珍
+梁慧華
+梁瓊丹
+梅光宇
+盛心
+莫星宇
+莊士國
+莊文昭
+莊弘任
+莊玉麟
+莊志榮
+莊依婷
+莊坤哲
+莊宗勳
+莊怡軒
+莊東明
+莊金靜
+莊政憲
+莊倉杰
+莊峻榕
+莊純純
+莊培鑫
+莊淑芬
+莊淑珺
+莊勝利
+莊復貴
+莊惠蓉
+莊智涵
+莊登發
+莊雅心
+莊雅惠
+莊雯雯
+莊裕文
+莊銘景
+莊樹宏
+莊靜怡
+莊鎔璞
+莊懿強
+莊筱婷
+許又仁
+許壬耀
+許文厚
+許文豪
+許世民
+許加宏
+許正忠
+許永毅
+許玉嬋
+許名世
+許汎穎
+許克仲
+許宏德
+許志崇
+許志遠
+許秀珊
+許良
+許佳雯
+許孟翔
+許怡珮
+許松等
+許芳銘
+許信榮
+許恬綾
+許珊瑜
+許美華
+許郁敏
+許哲瑞
+許哲瑋
+許家暘
+許家豪
+許峻哲
+許庭瑋
+許晉熒
+許書銓
+許珮嘉
+許素菁
+許財得
+許婉茹
+許梅菁
+許淑芬
+許淑惠
+許莉莉
+許勝勛
+許堡如
+許惠如
+許惠雯
+許景鈞
+許智凱
+許智德
+許竣能
+許華倚
+許逸章
+許雅玲
+許雅惠
+許雅雁
+許雯琳
+許楨祥
+許瑞
+許瑞儀
+許聖杰
+許嘉元
+許嘉珮
+許榕
+許碩修
+許維真
+許銘仁
+許閣文
+許慧貞
+許憶芳
+許錦文
+許嶸仁
+許瓊文
+許麗華
+許馨仁
+許昶華
+許筱萍
+許恒達
+連佑仁
+連建智
+連桂宏
+連啟智
+連嘉純
+郭乃榮
+郭于禎
+郭子立
+郭仁哲
+郭文惠
+郭世蘭
+郭永明
+郭仲淵
+郭年真
+郭君怡
+郭志宏
+郭育先
+郭邦彥
+郭佳鑫
+郭孟蓉
+郭怡伶
+郭怡秀
+郭明宗
+郭明瑋
+郭玥妦
+郭芝睿
+郭保君
+郭俊億
+郭品秀
+郭威志
+郭建良
+郭思宜
+郭昭安
+郭柏秀
+郭盈君
+郭美善
+郭貞孍
+郭凌志
+郭家祥
+郭宸昀
+郭振漢
+郭桂鳳
+郭素綾
+郭國正
+郭添新
+郭淑慧
+郭惠青
+郭智瑋
+郭進昌
+郭雅菱
+郭瑞欽
+郭嘉偉
+郭碧娟
+郭慶生
+郭儒謙
+郭燕玲
+郭靜美
+郭鎮元
+郭獻文
+郭籠慶
+郭暐
+陳一華
+陳乃榮
+陳又昕
+陳千錦
+陳子彥
+陳己升
+陳仁宗
+陳元靖
+陳天賞
+陳心潔
+陳文忠
+陳文涓
+陳文欽
+陳文德
+陳文鈺
+陳世宗
+陳世政
+陳世章
+陳世澤
+陳以靜
+陳仕叡
+陳可欣
+陳巧珊
+陳幼欣
+陳弘訓
+陳札培
+陳正峰
+陳正豪
+陳永
+陳永青
+陳永誌
+陳玉文
+陳玉芬
+陳玉珠
+陳玉菁
+陳玉璘
+陳石育
+陳立倫
+陳立維
+陳伊倫
+陳光甫
+陳向榮
+陳如蘋
+陳安佑
+陳江立
+陳至凱
+陳佑庭
+陳伯蒼
+陳君航
+陳均碩
+陳妍秀
+陳宏仁
+陳宏美
+陳宏達
+陳宏煒
+陳志平
+陳志沛
+陳志明
+陳志彥
+陳志祥
+陳志源
+陳志維
+陳志豪
+陳志穎
+陳攸婷
+陳汶津
+陳秀芝
+陳秀惠
+陳秀慧
+陳育佐
+陳育詩
+陳良政
+陳酉茹
+陳依翔
+陳佳吟
+陳佳玥
+陳佳惠
+陳佳雯
+陳佳璘
+陳侃婷
+陳佩佩
+陳佩琳
+陳其鈞
+陳坤佐
+陳委承
+陳孟偉
+陳孟輝
+陳宗志
+陳宗旗
+陳宜平
+陳宜姿
+陳宜璋
+陳尚文
+陳幸足
+陳忠良
+陳怡文
+陳怡如
+陳怡如
+陳怡竹
+陳怡伶
+陳怡君
+陳怡君
+陳怡君
+陳怡昌
+陳怡真
+陳怡琴
+陳怡誠
+陳怡潔
+陳怡靜
+陳怡叡
+陳昌文
+陳明正
+陳明材
+陳明珠
+陳明楷
+陳明豐
+陳東華
+陳欣如
+陳欣怡
+陳欣蘭
+陳泓翔
+陳泊辰
+陳玟瑛
+陳玫臻
+陳秉斌
+陳芝倩
+陳金良
+陳長慶
+陳亭君
+陳亮穎
+陳信吟
+陳信甫
+陳信裕
+陳保元
+陳俊仰
+陳俊宇
+陳俊旭
+陳俊宏
+陳俊廷
+陳俊良
+陳俊郎
+陳俊華
+陳俊榕
+陳俊銘
+陳俊樺
+陳俐安
+陳俞仲
+陳冠夫
+陳冠宇
+陳冠宏
+陳冠傑
+陳冠銘
+陳勇在
+陳勁吾
+陳品先
+陳奕中
+陳奕廷
+陳奕穎
+陳姿文
+陳姿吟
+陳姿穎
+陳威全
+陳威助
+陳威邑
+陳威儒
+陳宣每
+陳帥名
+陳建任
+陳建安
+陳建旭
+陳建宏
+陳建廷
+陳建甫
+陳建邦
+陳建揚
+陳建達
+陳建輔
+陳建璋
+陳建烜
+陳彥任
+陳彥帆
+陳彥君
+陳彥廷
+陳彥昌
+陳彥綸
+陳彥勳
+陳思年
+陳思源
+陳思穎
+陳政文
+陳政裕
+陳春妃
+陳昭文
+陳昭偉
+陳昭瑋
+陳映儒
+陳昱丞
+陳昱甫
+陳柔安
+陳柏份
+陳柏年
+陳柏志
+陳柏峰
+陳柏寧
+陳柏輯
+陳炫君
+陳炳錕
+陳珍瑩
+陳盈全
+陳盈安
+陳盈孜
+陳盈婷
+陳盈璇
+陳禹齊
+陳秋帆
+陳秋萍
+陳紀足
+陳美如
+陳美君
+陳美芝
+陳美純
+陳美琴
+陳美慧
+陳羿谷
+陳致福
+陳茂雄
+陳英傑
+陳虹曲
+陳衍至
+陳貞妤
+陳郁文
+陳郁菁
+陳重廷
+陳韋伶
+陳音
+陳香吟
+陳倖翠
+陳哲強
+陳家珍
+陳家雯
+陳家慧
+陳容萱
+陳振東
+陳時盟
+陳桂玉
+陳泰峰
+陳浩茹
+陳珮珮
+陳益裕
+陳素娥
+陳耘寬
+陳乾淦
+陳偉莉
+陳健霖
+陳國峰
+陳國榮
+陳培端
+陳婉菁
+陳崑銘
+陳啟存
+陳敏新
+陳清奇
+陳淑君
+陳淑芬
+陳淑娟
+陳淑羚
+陳淑雅
+陳淑靜
+陳紹庭
+陳許民
+陳傑裕
+陳勝嘉
+陳婷玟
+陳惠文
+陳惠玲
+陳惠萍
+陳惠齡
+陳景泰
+陳智偉
+陳朝熙
+陳湘琴
+陳琦琳
+陳肅權
+陳詠亮
+陳逸平
+陳逸菁
+陳進隆
+陳隆斌
+陳雅芬
+陳雅苓
+陳雅惠
+陳雅琴
+陳雅雯
+陳雅韻
+陳順發
+陳意雯
+陳敬文
+陳榆涵
+陳毓鈞
+陳照慈
+陳瑞利
+陳瑞瑜
+陳瑜詩
+陳義忠
+陳聖宜
+陳蜂灝
+陳裕智
+陳詩婷
+陳運徵
+陳鼎仁
+陳嘉宏
+陳嘉峰
+陳嘉雁
+陳嘉瑩
+陳旗昌
+陳榮燿
+陳碧紅
+陳福林
+陳維哲
+陳肇鴻
+陳銘泉
+陳銘耀
+陳儀
+陳廣麟
+陳德遠
+陳慶華
+陳慶鴻
+陳慧芝
+陳慧美
+陳慧純
+陳慧雯
+陳慕儒
+陳潔音
+陳瑩瑄
+陳誼芳
+陳黎桂
+陳憲儀
+陳曉青
+陳曉筠
+陳樹年
+陳燕菁
+陳穎祥
+陳蕙芳
+陳錦秀
+陳錦鴻
+陳靜怡
+陳靜淑
+陳靜慧
+陳龍寬
+陳薇
+陳駿揚
+陳鴻清
+陳璿如
+陳瓊淇
+陳贊中
+陳韻如
+陳韻竹
+陳麒元
+陳麗如
+陳麗芬
+陳麗婷
+陳寶玉
+陳耀笙
+陳櫻容
+陳艷鈴
+陳旻政
+陳姵如
+陳昶昱
+陳堜
+陳琬菁
+陳瑋典
+陳筱芳
+陳鈺玫
+陳銚茹
+陳瀅如
+陳嬿伶
+陸正義
+陸津華
+陸鳳玲
+章文芝
+章翔
+麥盧寶全
+傅文進
+傅亞凡
+傅建國
+傅珮淇
+傅淑雯
+傅鉛文
+傅琮
+喬宗堯
+彭仁志
+彭文慧
+彭玉華
+彭成傑
+彭佳偉
+彭朋雍
+彭俊福
+彭建榮
+彭若慈
+彭浩倫
+彭崇信
+彭盛
+彭滋萍
+彭雅絹
+彭聖萍
+彭慧如
+彭錦炫
+彭馨慧
+景雨秋
+曾士軒
+曾小玲
+曾孔鈺
+曾文彬
+曾令瑜
+曾玉如
+曾仲盟
+曾羽嶺
+曾志傑
+曾育菁
+曾季歆
+曾承志
+曾芝蘭
+曾俊智
+曾冠樺
+曾建和
+曾建霖
+曾思維
+曾映齡
+曾秋敏
+曾美齡
+曾郁穎
+曾珮琳
+曾偉翔
+曾國書
+曾婉惠
+曾淑芳
+曾涵副
+曾凱悌
+曾惠玲
+曾智祺
+曾華齡
+曾雅青
+曾意文
+曾溥元
+曾瑛琳
+曾裕凱
+曾嘉英
+曾維群
+曾慶瑄
+曾憲忠
+曾繁青
+曾瓊慧
+曾寶磁
+曾馨儀
+曾暐清
+曾瞍
+游大緯
+游世斌
+游兆君
+游李雄
+游佩勳
+游昌翰
+游青霏
+游秋怡
+游家豪
+游婉青
+游淑惠
+游喬智
+游智超
+游進富
+游雅筠
+游榮華
+游錫宗
+游獻群
+湯一珊
+湯志忠
+湯家豪
+湯富棋
+湯慶錚
+程之寧
+程尚則
+程建翰
+程偉政
+程雅惠
+程瓊萱
+童弘
+童美滿
+童韻如
+華國鋒
+賀厚平
+辜信福
+閔任遠
+須上苑
+馮永瀅
+馮長龍
+馮彩娟
+馮瑞陽
+馮耀文
+黃力言
+黃于芬
+黃于真
+黃千凌
+黃士原
+黃士嘉
+黃大倫
+黃子卿
+黃小娟
+黃中偉
+黃仁良
+黃元隆
+黃天健
+黃心怡
+黃心姮
+黃文怡
+黃文玲
+黃文隆
+黃文璋
+黃月瑾
+黃世朋
+黃世嘉
+黃以喬
+黃巧婷
+黃弘毅
+黃正佩
+黃永仁
+黃永漢
+黃玉雨
+黃玉菁
+黃立芬
+黃亦萱
+黃任延
+黃兆敏
+黃夙慧
+黃宇廷
+黃旭弘
+黃聿君
+黃伯年
+黃妙芬
+黃宏進
+黃志成
+黃志強
+黃志嘉
+黃志龍
+黃秀容
+黃育信
+黃依文
+黃佳媛
+黃佩俐
+黃坤德
+黃宗基
+黃幸儀
+黃怡珊
+黃怡菁
+黃怡維
+黃明志
+黃明瑞
+黃東海
+黃欣愉
+黃玟瑾
+黃芷雲
+黃長澤
+黃信捷
+黃信彰
+黃信斌
+黃俊哲
+黃俊傑
+黃俊舜
+黃俊嘉
+黃俊賢
+黃俞斐
+黃冠雅
+黃勇慧
+黃品毅
+黃姿綾
+黃宣凱
+黃建文
+黃建程
+黃建彰
+黃建勳
+黃彥太
+黃彥瑜
+黃彥斌
+黃思賢
+黃政揚
+黃昭智
+黃昱中
+黃柏元
+黃柏翔
+黃柏翰
+黃炳憲
+黃盈惠
+黃秋萍
+黃美玉
+黃美羚
+黃美蓉
+黃若薇
+黃英傑
+黃貞穎
+黃郁珊
+黃郁雯
+黃韋琪
+黃倉彥
+黃家隆
+黃庭鈺
+黃振誠
+黃書鈺
+黃浩鈞
+黃珮舒
+黃祖賢
+黃能豐
+黃偉峰
+黃偉銘
+黃健溢
+黃國芳
+黃國軒
+黃國裕
+黃國鐘
+黃婉貞
+黃崇訓
+黃彩銘
+黃啟修
+黃敏修
+黃梅玲
+黃清麟
+黃淑玲
+黃淑梅
+黃淑華
+黃淑靜
+黃祥斌
+黃莉娟
+黃途巖
+黃凱威
+黃勝裕
+黃堯偉
+黃富詳
+黃惠芬
+黃惠琴
+黃惠霞
+黃景裕
+黃智康
+黃朝琴
+黃湘巧
+黃琪婷
+黃竣南
+黃舒彥
+黃菊英
+黃逸
+黃閔農
+黃雅津
+黃雅淑
+黃雅琪
+黃雅萱
+黃雅齡
+黃順吉
+黃意超
+黃敬斌
+黃榆婷
+黃源璋
+黃瑞伶
+黃瑞陽
+黃盟凱
+黃義君
+黃聖哲
+黃聖鴻
+黃裕盛
+黃詩芸
+黃詩雯
+黃鈴琪
+黃靖惠
+黃嘉勇
+黃嘉萱
+黃榮順
+黃睿伸
+黃維智
+黃銘偉
+黃儀君
+黃慶華
+黃慧茹
+黃澄偉
+黃震宇
+黃曉佩
+黃燕娥
+黃錚暉
+黃靜宜
+黃應璿
+黃駿達
+黃薰瑩
+黃瀚德
+黃瓊儀
+黃瓊誼
+黃韻如
+黃麗妃
+黃麗蓉
+黃寶儀
+黃繼增
+黃耀瑩
+黃鐘葦
+黃馨慧
+黃齡萱
+黃艷玉
+黃昶斌
+黃翊宸
+黃琬君
+黃菀鈴
+黃瑋寧
+黃筱雁
+黃鈺婷
+黃鉦閔
+黃謵說
+塗時雨
+楊三賢
+楊士弘
+楊士賢
+楊子毅
+楊之慧
+楊允中
+楊文宏
+楊文瑞
+楊世凱
+楊可歆
+楊正彬
+楊玉鼎
+楊仲民
+楊守城
+楊伶慧
+楊志能
+楊志雍
+楊秀珠
+楊育儒
+楊佳菁
+楊佩珊
+楊坤英
+楊孟蓉
+楊宗堯
+楊宗翰
+楊宜璋
+楊岱儒
+楊怡芳
+楊承熹
+楊昆霖
+楊明寰
+楊東敏
+楊欣珮
+楊秉順
+楊長潔
+楊俊輝
+楊思雋
+楊昭輝
+楊紀芸
+楊美藝
+楊哲安
+楊家銘
+楊振宗
+楊書豪
+楊珮琦
+楊虔雅
+楊健國
+楊培恩
+楊惟白
+楊淳硯
+楊淑佳
+楊淑敏
+楊淑慧
+楊盛斌
+楊凱仲
+楊勝宇
+楊博欽
+楊婷鈞
+楊循婷
+楊惠婷
+楊斯凱
+楊景雯
+楊智傑
+楊智鈞
+楊森發
+楊皓瑋
+楊舒帆
+楊菁芬
+楊貴媛
+楊閔翔
+楊雅倫
+楊雅嵐
+楊雅翔
+楊雅雲
+楊雲翔
+楊煥章
+楊裕
+楊嘉玲
+楊槐駒
+楊趙銘
+楊慶隆
+楊璋
+楊曉菁
+楊蕙芳
+楊靜如
+楊戴州
+楊礎遠
+楊豐銘
+楊瓊華
+楊曦琳
+楊琇如
+楊琬婷
+楊鎧伊
+溫至任
+溫承翰
+溫若婷
+溫培青
+溫雅清
+溫曉華
+萬佳昕
+萬曉明
+葉又嘉
+葉大葦
+葉天將
+葉代權
+葉亦盛
+葉如雯
+葉宏傑
+葉秀梅
+葉佳欣
+葉佩真
+葉宗智
+葉怡君
+葉昌倫
+葉明鑫
+葉玟君
+葉長青
+葉俊宏
+葉俞杉
+葉建君
+葉思儀
+葉昱志
+葉秋月
+葉郁菁
+葉家宇
+葉峻賓
+葉書瑋
+葉耿齊
+葉張建
+葉淑鈴
+葉惠禎
+葉詠晴
+葉雅雯
+葉義松
+葉銘昌
+葉潔恩
+葉蕙芳
+葉駿逸
+葉騰遠
+葉琤怡
+葛倩如
+董巧玲
+董怡君
+董彥宏
+董振雄
+董慧美
+裘元愷
+詹子民
+詹世傑
+詹宏彬
+詹佳振
+詹孟晃
+詹忠榮
+詹青艷
+詹美珍
+詹浚昇
+詹茗芸
+詹淑萍
+詹勝欽
+詹景堯
+詹証富
+詹雅閔
+詹嘉璿
+詹穎萍
+詹玓瑋
+賈治國
+鄒一仲
+鄒李昌
+鄒金德
+鄒新全
+雍敦元
+雷雅菁
+廖于文
+廖大樟
+廖元利
+廖文評
+廖月觀
+廖正偉
+廖丞晞
+廖含潔
+廖志偉
+廖育良
+廖佩如
+廖怡玲
+廖明儀
+廖芝堅
+廖俊欽
+廖姿毓
+廖彥凱
+廖昱樹
+廖美玲
+廖英男
+廖述茂
+廖卿惠
+廖家瑩
+廖恩慈
+廖書珮
+廖珮玫
+廖素卿
+廖偉成
+廖偉鴻
+廖國勛
+廖培瑜
+廖寄萍
+廖惇治
+廖梓茜
+廖淑惠
+廖貫珮
+廖惠娟
+廖進平
+廖楷文
+廖嗾
+廖銘仁
+廖瑩璇
+廖錦瑜
+廖麒閔
+廖斌傑
+熊立新
+熊崇緯
+管幼仲
+臺文照
+裴偉程
+褚家德
+趙仁佑
+趙文忠
+趙必昌
+趙君杰
+趙佩芬
+趙明輝
+趙品彥
+趙炫勛
+趙家良
+趙桂青
+趙偉廷
+趙培霖
+趙皎君
+趙鈞志
+趙廣元
+趙雙駿
+鄞豪輝
+劉乃萱
+劉力豪
+劉千瑜
+劉大榮
+劉子頎
+劉仁正
+劉心儀
+劉文勝
+劉日順
+劉世慶
+劉正河
+劉玉文
+劉玉琇
+劉仲涵
+劉全彬
+劉如薰
+劉旭芬
+劉君祺
+劉廷楷
+劉志源
+劉秀郁
+劉育宗
+劉育穎
+劉亞芸
+劉佳芳
+劉佳達
+劉佩青
+劉坤穎
+劉宗怡
+劉宜昆
+劉岡陵
+劉怡伶
+劉怡和
+劉怡靜
+劉昌誠
+劉明哲
+劉果珍
+劉欣茹
+劉玫寧
+劉芳蘭
+劉金鳳
+劉信良
+劉俊廷
+劉俊巖
+劉冠良
+劉品宜
+劉姿吟
+劉建宏
+劉建良
+劉建町
+劉彥博
+劉恪人
+劉映秀
+劉柏麟
+劉盈如
+劉秋成
+劉美侖
+劉羿汝
+劉軍毅
+劉修明
+劉哲瑋
+劉家昇
+劉家鳳
+劉峻伶
+劉振中
+劉書宏
+劉浚銘
+劉益禎
+劉純杏
+劉偉誠
+劉國龍
+劉康楝
+劉敏琪
+劉淑莉
+劉祥民
+劉博文
+劉揚銘
+劉朝蓮
+劉舒慈
+劉閔結
+劉雅萍
+劉勤經
+劉源倫
+劉經綸
+劉嘉育
+劉嘉樺
+劉熙慧
+劉肇鵬
+劉德正
+劉慧玲
+劉瑩娟
+劉曉芬
+劉樹蕙
+劉穎蒨
+劉錦堂
+劉龍山
+劉鴻霖
+劉瀚陽
+劉寶婷
+劉懿慧
+劉姵嘉
+劉瑋玲
+厲斌中
+歐士源
+歐志盈
+歐怡秀
+歐建民
+歐娉妦
+歐逸青
+歐陽惠如
+歐穎君
+潘允仁
+潘玉惠
+潘宏宗
+潘佩君
+潘怡君
+潘玟樺
+潘冠宏
+潘建成
+潘政緯
+潘美玲
+潘能哲
+潘惠娟
+潘瑞香
+潘儀恬
+潘鴻銘
+潘鈺柔
+蔣中衍
+蔣沆祥
+蔣宜靜
+蔣長旻
+蔣淑慧
+蔣濱州
+蔡士旺
+蔡仁偉
+蔡天祺
+蔡文博
+蔡文鴻
+蔡世鴻
+蔡正宗
+蔡玉秋
+蔡亦雯
+蔡名書
+蔡旭曜
+蔡伯鴻
+蔡宏培
+蔡志明
+蔡志鴻
+蔡汶鴻
+蔡育正
+蔡育勳
+蔡依容
+蔡佳宏
+蔡佳芬
+蔡佳容
+蔡佳蓉
+蔡佳霖
+蔡佩君
+蔡佩珊
+蔡佩娥
+蔡佩穎
+蔡其珮
+蔡坤雄
+蔡奇霖
+蔡孟芳
+蔡孟真
+蔡孟諭
+蔡宗志
+蔡宗達
+蔡宗翰
+蔡宜廷
+蔡宜倩
+蔡宜霖
+蔡尚岳
+蔡岳書
+蔡幸淳
+蔡忠穎
+蔡承璋
+蔡易陞
+蔡昌儒
+蔡明汎
+蔡明芳
+蔡明峰
+蔡明蒲
+蔡明龍
+蔡昇穎
+蔡杰志
+蔡欣怡
+蔡武諺
+蔡秉昆
+蔡芳洵
+蔡金龍
+蔡信良
+蔡品儀
+蔡思捷
+蔡政哲
+蔡政龍
+蔡玲津
+蔡美芝
+蔡郁君
+蔡娟娟
+蔡悅玟
+蔡珮怡
+蔡偉杰
+蔡培譯
+蔡添文
+蔡淑玲
+蔡淑薇
+蔡勝雄
+蔡富貴
+蔡惠燕
+蔡智暐
+蔡舒宇
+蔡逸珊
+蔡雅芬
+蔡雅菁
+蔡傳德
+蔡瑞文
+蔡裕健
+蔡嘉恆
+蔡榮昌
+蔡碧容
+蔡裴伶
+蔡銘賢
+蔡慧民
+蔡賢皇
+蔡曉然
+蔡翰熊
+蔡靜宜
+蔡鴻民
+蔡豐文
+蔡鵑彌
+蔡麗惠
+蔡馨儀
+蔡旻憲
+蔡瑋竑
+鄭一凡
+鄭力仁
+鄭子見
+鄭仁富
+鄭心如
+鄭文富
+鄭世昌
+鄭巧青
+鄭玉伶
+鄭立享
+鄭仲宏
+鄭光淳
+鄭吏孜
+鄭如欣
+鄭宇淨
+鄭成棠
+鄭百婷
+鄭伯南
+鄭志功
+鄭秀娟
+鄭貝如
+鄭佳儀
+鄭孟玲
+鄭怡君
+鄭明忠
+鄭欣榮
+鄭俊宏
+鄭彥達
+鄭美玉
+鄭迪允
+鄭振宜
+鄭祐阡
+鄭偉珊
+鄭培聰
+鄭梅君
+鄭淑米
+鄭淑燕
+鄭莉雯
+鄭凱文
+鄭勝旭
+鄭喬銘
+鄭惠文
+鄭惠霜
+鄭景文
+鄭智元
+鄭朝營
+鄭皓云
+鄭翔龍
+鄭詔謙
+鄭雅友
+鄭雅芬
+鄭雅甄
+鄭意中
+鄭瑜琳
+鄭裕年
+鄭嘉揚
+鄭肇心
+鄭慶哲
+鄭蔚蟬
+鄭曉薇
+鄭靜芳
+鄭鴻源
+鄭獻文
+鄭埵
+鄭靋
+鄧永忠
+鄧旭敦
+鄧明芳
+鄧振英
+鄧博仁
+鄧翔仁
+鄧福隆
+鄧劦呈
+黎世廉
+黎俐均
+黎銘仁
+盧仁杰
+盧弘海
+盧吉勇
+盧育聖
+盧定均
+盧怡涵
+盧雨涵
+盧俊儒
+盧威霖
+盧思源
+盧美如
+盧家鈺
+盧淑麗
+盧愷莉
+盧慧宜
+盧龍生
+盧筱瑩
+蕭尹貞
+蕭文筆
+蕭以亮
+蕭玉貞
+蕭兆琳
+蕭如珊
+蕭有宏
+蕭宏裕
+蕭育隆
+蕭季薇
+蕭昆廷
+蕭青萍
+蕭美娟
+蕭振安
+蕭國正
+蕭清燕
+蕭雪吟
+蕭博仰
+蕭惠芳
+蕭智梅
+蕭詠方
+蕭雅文
+蕭愛玲
+蕭詩璇
+蕭維倩
+蕭慧怡
+蕭靜宜
+蕭鶴軒
+賴乃頌
+賴天鴻
+賴世維
+賴正野
+賴玉霜
+賴旭彥
+賴廷禹
+賴志綱
+賴育廷
+賴佳欣
+賴孟華
+賴居正
+賴怡君
+賴明宏
+賴欣宜
+賴芳延
+賴信誠
+賴俊達
+賴勇志
+賴威均
+賴建佑
+賴彥佐
+賴思霖
+賴昭龍
+賴柏龍
+賴紅霞
+賴茂廷
+賴郁雯
+賴浩豐
+賴國恩
+賴淑怡
+賴莉雯
+賴貴義
+賴順振
+賴葦帆
+賴榮璉
+賴慶銘
+賴鋒
+賴錦億
+賴麗
+賴柊棋
+遲尚權
+錢欣宜
+錢德俊
+霍莘瑜
+駱芳梧
+駱嘉慶
+龍星兆
+戴乙菁
+戴文雄
+戴全利
+戴宏丞
+戴佳平
+戴明珠
+戴振遠
+戴莉
+戴傳家
+戴嘉宏
+戴賢祥
+戴薏珊
+薛丹桂
+薛光程
+薛依蒨
+薛奕龍
+薛偉伯
+薛景文
+薛瑞珍
+薛儒霙
+謝于櫻
+謝心雅
+謝文瑜
+謝弘亮
+謝玉珠
+謝如鴻
+謝佐宜
+謝宏忠
+謝志明
+謝扶錦
+謝育娟
+謝依倫
+謝佳倩
+謝佳穎
+謝佩芳
+謝佩真
+謝周熾
+謝孟芸
+謝孟芩
+謝宗賢
+謝宜芳
+謝宜臻
+謝尚儒
+謝怡婷
+謝易霖
+謝明宏
+謝明倫
+謝明憲
+謝昇哲
+謝松憲
+謝欣釗
+謝秉諺
+謝長原
+謝俊宏
+謝彥吏
+謝柏舟
+謝美玲
+謝家菱
+謝素菱
+謝國彬
+謝梓麟
+謝淑娟
+謝凱偉
+謝嵐屏
+謝景仁
+謝皓智
+謝雅雪
+謝順隆
+謝萬龍
+謝嘉銘
+謝翠環
+謝鳳玲
+謝慧瓊
+謝燕玲
+謝靜宜
+謝鴻駿
+謝瓊文
+謝顯銘
+謝煒頻
+鍾元振
+鍾月圓
+鍾兆民
+鍾孝其
+鍾秀芳
+鍾佳穎
+鍾卓儒
+鍾宜興
+鍾承璋
+鍾明憲
+鍾秉諺
+鍾政民
+鍾美琳
+鍾商駿
+鍾淑萍
+鍾智傑
+鍾雲光
+鍾禎元
+鍾樂吟
+鍾薰嫺
+鞠岱琦
+韓佩劭
+韓相宜
+韓嘉駿
+簡士益
+簡文亨
+簡巧婷
+簡立人
+簡宇屏
+簡伶娟
+簡宏倫
+簡志雄
+簡秀純
+簡佩琪
+簡明雁
+簡昭萸
+簡家新
+簡國斌
+簡淑婷
+簡森乙
+簡順立
+簡瑞棻
+簡嘉宏
+簡禎佑
+簡銘辰
+簡憶如
+簡驪潔
+聶東南
+藍元皓
+藍仲偉
+藍春發
+藍國華
+藍雅齡
+藍黛瑩
+闕逢毅
+顏大福
+顏弘祥
+顏如玉
+顏呈旭
+顏宏叡
+顏志麟
+顏宗平
+顏奕仁
+顏家祺
+顏尉凱
+顏華成
+顏瑞文
+顏嘉成
+顏福順
+顏澤宇
+顏鈺芸
+魏仁威
+魏任廷
+魏百盛
+魏孝寬
+魏秀恬
+魏明章
+魏英鎮
+魏崇桓
+魏朝信
+魏筠文
+魏嫦妝
+魏慕帆
+魏瑄誼
+羅子軒
+羅元甫
+羅心屏
+羅月凰
+羅巧莉
+羅玉萍
+羅兆維
+羅宏一
+羅亞寧
+羅怡惠
+羅芷青
+羅美蓮
+羅振廷
+羅素花
+羅國華
+羅強
+羅淇文
+羅傑
+羅惠蘭
+羅華濃
+羅雯琴
+羅聖琳
+羅際川
+羅曉威
+羅馨宜
+譚光華
+譚諦
+關淑雲
+嚴可君
+嚴婉玲
+嚴維德
+藺心怡
+蘇子翔
+蘇文娟
+蘇巧寧
+蘇玉修
+蘇竹安
+蘇志堅
+蘇育弘
+蘇佳足
+蘇怡如
+蘇怡馨
+蘇武龍
+蘇青妙
+蘇俊銘
+蘇奕傑
+蘇建志
+蘇恆至
+蘇柏州
+蘇皇原
+蘇美玲
+蘇貞燕
+蘇倉永
+蘇家信
+蘇庭瑤
+蘇益祿
+蘇軒民
+蘇堂豪
+蘇清安
+蘇博玄
+蘇湘怡
+蘇雅君
+蘇順誠
+蘇猷翔
+蘇聖涵
+蘇靖嵐
+蘇聞謹
+蘇慧娟
+蘇曉芃
+蘇聲振
+蘇旻君
+蘇瑋琳
+鐘士欽
+鐘佳絹
+鐘敏愫
+鐘碧蘭
+饒亮
+黨一為
+顧倩如
+龔于珊
+龔佩君
+龔書聖
+龔靖詒
+佘尚鴻
+涂世和
+涂政男
+涂富星
+涂慧珍
+粘育瑋
+鄔心怡
+欒季強
+銘源
+アキモト,ヤスオ
+アイカワ,ノリオ
+アカツカ,カズヒコ
+アワズ,アキラ
+アサノ,ヨシヤ
+アラキ,ヨシカズ
+イノウエ,ヒロヒト
+カトウ,マサトシ
+ナカムラ,ケイゾウ
+フジワラ,タカコ
+ヤナギハラ,ミドリ
+カワダ,ナオコ
+イシノ,キヨナガ
+ゴトウ,カツノリ
+イシジマ,リョウヘイ
+アトウ,マサノリ
+ミシマ,タカユキ
+ミヨシ,ノブマサ
+タチノ,ジュン
+オオノ,カズオ
+キタガワ,ヨシタカ
+フルサワ,サトシ
+オオハシ,ヒトシ
+ヨシカワ,トシユキ
+カワイ,トシオ
+イシト,コウキ
+イマイ,タカユキ
+ヤマナカ,サツミ
+ホリカワ,カツミ
+スズキ,シュンジ
+アワエ,アツシ
+ナガセ,タカヒロ
+コバヤシ,ジュンイチ
+マエダ,ヒロシ
+カトウ,マサカズ
+スミタ,カオル
+セキグチ,タカユキ
+タナカ,テルヒサ
+ヒラノ,タカシ
+ハマグチ,シンジ
+サカガミ,ノリカズ
+コバヤシ,ヤスシ
+タキモト,ノリコ
+ホシ,ヒロフミ
+オオタカ,ユウコ
+スギムラ,シゲオ
+アオキ,マサル
+ナカハラ,ユウゾウ
+カトウ,オサム
+マエサカ,トモミツ
+フジタニ,カズヒコ
+ホッタ,シゲヒト
+アキヤマ,ユタカ
+フジタ,マサユキ
+トヨナガ,ヤスヒロ
+ハットリ,マサオ
+ノムラ,シゲオ
+カワシマ,タカコ
+ムロヤ,テツオ
+アシカワ,ヤスシゲ
+ハヤシ,タカオ
+ミヤガワ,フミノリ
+オグラ,ヤスヒロ
+ヨシダ,トシヒコ
+クドウ,ヒロシ
+クマガイ,タカユキ
+ニシオ,ヒデキ
+オオイヤマ,ノボル
+タケタニ,フトシ
+イシダ,カツヤ
+オイカワ,ノブアキ
+タカハシ,セイジ
+ムラタ,トオル
+スズキ,ススム
+ハヤシ,シンチョウ
+クロカワ,マサアキ
+ヤジマ,トオル
+カツライ,ワタル
+アカリ,リョウジ
+アズマ,ノブユキ
+アツミ,シュウジ
+マルオ,ヨシユキ
+イケオ,ミノル
+トリヤマ,リツオ
+ハマノ,ヨウイチ
+ヤマモト,コウタロウ
+コウチ,ユウスケ
+ナカジマ,ノリヒコ
+アラ,ヒロシ
+ホソカワ,マサヒロ
+イズミ,カネミツ
+アワジ,アツオ
+ミズヒキ,ヨシオ
+オダジマ,ナホミ
+フルカワ,シゲオ
+ミズグチ,ジロウ
+イトウ,ヒロシ
+フクイ,サトシ
+フジハラ,タケヒト
+ヤノ,ユウジ
+ハヤシグチ,ヒロシ
+ホリ,トシユキ
+ヨシイ,タカシ
+アンドウ,ヒロシ
+ハタ,コウイチ
+コバリ,ヒデユキ
+オダシマ,カツロウ
+ウエヤマ,ミツナリ
+ムタ,マナブ
+タナカ,シゲオ
+コンノ,ユウコ
+フジワラ,トシハル
+ミヤキ,ユタカ
+ハナワ,マサヒロ
+テジマ,アキラ
+クボ,アツシ
+オオバ,シンゴ
+コンノ,タクヤ
+マツバラ,ヒデオ
+ハシモト,スミコ
+ワタナベ,カズヒロ
+コタキ,テツヤ
+フカヤ,モモキ
+マツウラ,テッペイ
+フナダ,カズヒコ
+ヒガシダ,トシユキ
+イノマタ,ヒロシ
+サトウ,ヒロミ
+イトウ,タツシ
+ミタムラ,マユミ
+スガハラ,ミツル
+タカミヤ,ヒデノブ
+ヤマグチ,コスケ
+オタ,ツヨシ
+セノオ,ハジメ
+シバザキ,アツシ
+ナカムラ,ヤスヒロ
+フジカワ,ヒロユキ
+アライ,リュウジ
+オオクラ,ヒサノリ
+マツバ,シゲル
+タメヒロ,モトコ
+マンポ,カツミ
+コグチ,タカシ
+タニグチ,ナオスケ
+ヤマモト,タカヒロ
+ヒラモト,ヒデアキ
+アンラク,タカシ
+タナカ,ノリコ
+チャキ,シゲヒデ
+サカイ,チハル
+イナオカ,ヒロカズ
+ウシジマ,シンイチ
+コケツ,アキヒサ
+ムラタ,ヒトシ
+キムラ,ヨシヒロ
+シンタニ,リュウジ
+オオハタ,ノブアキ
+タブチ,ユタカ
+スミダ,キヨシ
+ミウラ,ナナコ
+リュウト,ヒロミ
+イケダ,ヒロナリ
+タカヤナギ,ヒロフミ
+エンド,ケンイチ
+オシカワ,シンジ
+コバヤシ,ヒデユキ
+ヤマダ,イワオ
+オダ,マサオ
+タキザワ,アツシ
+モリ,ヤスノリ
+カナザワ,タツユキ
+オオタ,タカアキ
+オオツ,テツロウ
+フジモト,カズヒロ
+モリカワ,マサノブ
+イトウ,コウジ
+カトウ,コウイチ
+ウエノ,ヨシヒコ
+オオカワ,サカエ
+マルイ,ジュンコ
+イワオ,シュウジ
+ウメダ,カズヤ
+メカタ,マサル
+ツジ,ツグヒコ
+タゴ,ヒロシ
+ヤマシタ,マサト
+スギヤマ,ヒロユキ
+フタバ,トシアキ
+ミヤヒラ,ミチアキ
+ニシザキ,ススム
+タナカ,クニコ
+ムラモト,トモアキ
+マエダ,ヒサカズ
+ミヤケ,アツシ
+トウジマ,タツヒロ
+オオヤ,マサル
+ウエノ,トモヒロ
+タカサキ,ヤスヒサ
+コンノ,ヨシヒサ
+タケオ,ノリカズ
+カナヤマ,ヤスヒコ
+オオオカ,トシロウ
+コバヤシ,シュウ
+ニシザカ,ミカ
+マスミダ,トモヒコ
+ツボイ,ヤスオ
+タガミ,マサル
+オカダ,テルオ
+カタギリ,サトシ
+カワテ,タカシ
+ミズイ,アヤオ
+カサオカ,トシヒコ
+ヒガシタニ,ヒデフミ
+ウシキ,カズイチ
+ヒラサワ,ナガコ
+ナリタ,シュウイチ
+コダマ,カズヒロ
+イノマタ,ヒロミ
+キムラ,ショウゴ
+イトウ,フミオ
+ワタナベ,テルアキ
+テラサワ,ミツオ
+ハヤシ,シンイチ
+アサクラ,シンヤ
+ヤマキ,コウイチ
+ナカムラ,シンイチロウ
+エノモト,ヒロミチ
+カマタ,タカヒロ
+ハシモト,ナオキ
+アライ,ヨシミ
+カリヤ,タカヒコ
+コンド,ヨシキ
+マスダ,ヒロオ
+イトウ,ケイスケ
+オカ,ミチハル
+オオツカ,ヒデキ
+マツオ,コウジ
+アソ,テルカズ
+カミムラ,ヒロユキ
+タカバタケ,シゲノリ
+フクダ,ヒロユキ
+タカハシ,ケント
+イワキ,マコト
+スン,トヨユキ
+アンドウ,ヨシオ
+ハシモト,カナ
+ヤハタ,ヒデオ
+フジキ,ケンジ
+マツオ,サトシ
+アオキ,ヨウイチロウ
+ゴトウ,シンジ
+ニシカワ,ヒトシ
+スミト,マサフミ
+ヒラノ,コウジ
+イトウ,ケイ
+コイズミ,ノリコ
+カワバタ,ノゾミ
+ムトウ,カツノリ
+アダチ,マサシ
+キラ,マサシ
+アヤノ,コウキ
+タルイ,ヨシオ
+ハヤシ,キョウコ
+イケダ,ジュン
+ホリミゾ,ケイスケ
+フルナガ,ハルヒコ
+オシマ,ナスオ
+ハヤシ,ヒトシ
+ニシ,ユキミツ
+コムロ,カナメ
+ヒロタニ,ヨシオ
+スガ,ヒロシ
+ツルミ,アキヒサ
+トミヤマ,カズミツ
+ヤマザキ,ヨウコ
+イシダ,ショウイチロウ
+ウチトミ,アキラ
+オオサワ,ヨシカズ
+ヤナギ,ヒデヒロ
+ミヤシタ,ヒデキ
+タカハシ,コウジ
+トガワ,ヒロユキ
+ナカムラ,シゲル
+ウエムラ,タケシ
+アサノ,ユウイチ
+オオヤマ,ケンジ
+カワノ,エイコ
+ババ,ヒトシ
+イトウ,シンイチ
+ウエノ,ノブユキ
+シライ,ケンシン
+イカミ,ハルオ
+カワシマ,トモユキ
+ミヤケ,タカヒロ
+サクライ,ケンジ
+タケノシタ,シュウヘイ
+ニシオカ,セイイチロウ
+クロキ,マサヨシ
+タナカ,ミノル
+イイジマ,タカシ
+サトウ,ヒロアキ
+サクライ,カズシゲ
+ヤナギサワ,ノブオ
+ウチヤマ,シゲヨシ
+オクツ,カズトシ
+ニシヤマ,セイジ
+タケダ,タカコ
+フリハラ,カズオ
+ヤブキ,マサヒロ
+ナカ,カズヒロ
+ヨシオカ,カズヤ
+モチズキ,タカユキ
+スギヤマ,ヒデヒロ
+イワナガ,ケイイチ
+ミワ,ハルカズ
+ホリカワ,カツキ
+タカダ,コウジ
+イシマル,シゲヤス
+オムラ,ヒデオ
+キタムラ,リカ
+スギキ,タカキ
+ニシムラ,チエコ
+ナカハラ,コウイチ
+マツモト,アキラ
+フクシマ,マサル
+カジオカ,アキヒト
+ナカザワ,ノボル
+マスザキ,タカシ
+ナカ,トシタカ
+オサダ,ハジメ
+カワタ,ナオミ
+ヨシダ,コウジ
+ナカ,トシヒロ
+エイドメ,ヒデカズ
+マツモト,ヨシマサ
+ナガサカ,ヨシアキ
+フジサワ,カツヒコ
+キヨタニ,ツトム
+アリモト,セイコ
+エゾエ,ケイイチ
+ツチヤ,カズヤ
+フジオカ,ヤスコ
+ツカモト,フミオ
+タカハシ,トヨヒコ
+サカイダ,ヤスヒロ
+スズキ,コウジ
+オシマ,ヤストシ
+マキウチ,タクヤ
+ハラダ,ヒサカズ
+マサキ,アキラ
+オガワ,ノブアキ
+ウシマル,ケン
+イシダ,ノブタカ
+ハナブサ,アツコ
+ヨシムラ,ヨシヒサ
+タニガワ,マリオ
+サトウ,タツシ
+カツ,タカシ
+ヤマグチ,ヒロキ
+ハクチョウ,イサオ
+イトウ,タカシ
+サカイ,カズノリ
+タンゴ,ヒデオ
+コイズミ,ケンスケ
+ワカスギ,タダタカ
+ウエノ,シンイチ
+ウエダ,トモキ
+スズキ,ヒサエ
+オオノ,ヨシノリ
+アベ,ケンイチ
+シイキ,ヒロシ
+アラキ,キヨハル
+アズマ,ヒロヨシ
+デグチ,ヒロノリ
+エリカワ,ユウコ
+フカヤマ,ノブユキ
+フナキ,サカエ
+イチムラ,マコト
+ハシモト,ノリアキ
+ヒガシ,キヨタカ
+ヒロサワ,アツシ
+ホリグチ,ユウイチ
+イバラキ,ユウイチ
+イナムラ,コウイチ
+イシカワ,ミキオ
+イトイ,タダシ
+カナザシ,ノリコ
+カタギシ,マサシ
+カトウ,ヤスシ
+カワダ,ケンスケ
+キノシタ,ヤスヒロ
+コバヤシ,カツノリ
+コマツ,ヤスタカ
+コタニ,ヒデキ
+クロセ,オサム
+マエダ,ユウジ
+マンタニ,ヨウイチ
+マツモト,ヤスアキ
+ミムラ,シゲノブ
+ミワ,マサヒロ
+モリタ,アキヒコ
+ムネムラ,トシミツ
+ナガタ,ケンジ
+ナカコジ,タツヤ
+ナカムラ,ヨウイチ
+ナカヤマ,タカシ
+ニムラ,ススム
+ヤジマ,ヨシエ
+ノマ,トヨミ
+ヌキイ,カツミ
+オガサワラ,シュウジ
+オオサワ,ヒデタカ
+マツナガ,ヨシアキ
+オカモト,ヒロユキ
+オサダ,ムツミ
+サイトウ,アキヒロ
+サクライ,シゲノリ
+サトウ,ヨシノリ
+セザイ,カズヤス
+シミズ,アキトシ
+ショウミツ,ヨシヒロ
+スギサワ,ノブユキ
+スズキ,ユウジ
+スズキ,ユウコ
+タカハシ,タカユキ
+タカサカ,ハジメ
+フジイ,アツコ
+タマキ,サトコ
+タニ,カズヒコ
+トキゾノ,シゲオ
+トリザワ,エミ
+ツルカワ,エイジ
+ウダ,ヒサヨシ
+ウメムラ,キミヒロ
+ワタリ,ヤスヨシ
+ヤマモト,テツヤ
+ヤマモト,マサヨシ
+ヤノ,ユキオ
+ヨダ,イサオ
+ヤマグチ,カズヨシ
+ホ,アキラ
+マツミヤ,ユウイチ
+サワダ,ヒロシ
+コハラ,マサノリ
+サイトウ,ミツル
+ヤノ,ミツオ
+フジモリ,ノリコ
+ヤマグチ,ヤスヒロ
+ヤマダ,タカシ
+フジタ,トシキ
+キムラ,タケオ
+ハヤシ,マサヒロ
+マエザワ,イズミ
+シブカワ,キヨヒサ
+ミホ,マサノリ
+スギヤマ,シンイチ
+フルカワ,ヨシフミ
+ノチセ,カズヒコ
+マツモト,ヒデアキ
+オクノ,ユキオ
+ヤマザキ,ヤスヒロ
+イシゲ,アキコ
+ミウラ,リュウゾウ
+ババ,タクヤ
+モチズキ,エミコ
+トクナガ,フミヒト
+クロカワ,ヒロシ
+イケノ,メグミ
+ヤマカゲ,ヨウジ
+ヤギハシ,シュウイチ
+キヨミツ,ケンジ
+ムラヤマ,エイジュ
+オオツカ,ヒデヒコ
+オヤマダ,タカシ
+アゲタ,ジュンイチ
+アモウ,アキオ
+アラカワ,ヒデシ
+バンノ,マサキヨ
+エサキ,シンイチ
+フカザワ,トモヒト
+フナバシ,マサユキ
+ハナダ,カツノリ
+ハシモト,エミコ
+ヒジクロ,ナオユキ
+ホウヤ,カズヒコ
+ホソダ,チエミ
+イケザワ,ノブヤス
+イヌツカ,ナオキ
+カジタニ,オサム
+イトウ,チクサ
+イワシタ,シコ
+カミヤ,クニアキ
+カスヤ,アキラ
+カワバタ,ダイ
+カワクボ,カズトシ
+キバシ,ヒデヒコ
+キリサワ,イチロウ
+コダマ,オサム
+トウドウ,コウジ
+コヤイシ,ミカ
+クラタ,コスケ
+クワノ,ヒロタカ
+マスダ,ジュン
+マツシタ,タダシ
+ミヤケ,アツシ
+ミヨダ,タカヒサ
+ミズタニ,ツヨシ
+モリワキ,シンイチロウ
+ムトウ,カツキ
+ナガワ,シンイチ
+ナカシマ,ヒサヨシ
+ニシダ,ヒロヨシ
+ニシオ,マサト
+ノムラ,テツヤ
+オダオオハラ,シンゴ
+オオヒラ,イチロウ
+オオヌマ,ナルシ
+オオヤギ,マサヒロ
+オカネ,タカシ
+オクノ,カツシ
+サイトウ,ヨシミ
+サカウエ,ヤスユキ
+サトウ,タケシ
+セキモト,トシユキ
+シイナ,フミハル
+シミズ,ヒデトシ
+シラサキ,ヨウコ
+スドウ,サトコ
+スズキ,ヒロシ
+ホソカワ,ユリ
+ヤマザキ,ナオキ
+タカス,カズヨ
+タケダ,ヒロユキ
+タマタニ,カズアキ
+タニモト,シンイチ
+トミナガ,ヒロヒサ
+ツカダ,ヒデキ
+ウラカワ,ユウジ
+ワタリ,コウジ
+ヤマモト,アツシ
+ヤマシタ,トシヒデ
+ヤザキ,タケシ
+ヨコタ,ユウコ
+ヨシカワ,ミツヒロ
+アサノ,ミチコ
+オクダ,ヒサコ
+イナダ,マサツナ
+シモカワ,フミヒコ
+ツボタ,ノリオ
+オオクボ,タケシ
+サイトウ,シュウイチ
+フジタ,ツネオ
+マキムラ,タケオ
+ニノミヤ,カズオ
+タバタ,ヨシタカ
+ムラカミ,ヒロキ
+イマニシ,タケオ
+タキガワ,シゲヨシ
+オンズカ,ヒロシ
+トノカワ,タケシ
+イケダ,トキオ
+ゴトウ,カズヤ
+ソダ,ケンジ
+モリタ,マサユキ
+タンノ,エイイチ
+ゴウダ,キョウコ
+ヤマグチ,ヒロカズ
+オサナイ,アツシ
+ヒガシ,ショウコ
+ヤマモト,ヒデアキ
+サトウ,タカオ
+ミゾグチ,トシユキ
+キタガワ,ヒロシ
+オオニシ,ソウイチ
+アイハラ,ヒデオ
+アキバ,ツトム
+アマノ,トオル
+アオヤギ,タカオ
+アラ,アキオ
+アサノ,ヨシヒロ
+バン,コウタロウ
+エビヌマ,アケミ
+フジエダ,ジュン
+フジイ,シゲノリ
+オグラ,アヤコ
+フカオ,ミツヒロ
+フクダ,ミカ
+フクオカ,シンゴ
+ゴウダ,ヨリコ
+ハギワラ,キクオ
+ハナミツ,ヨシタカ
+ハラ,ミユキ
+ハツシマ,ケン
+ハットリ,ヨシノリ
+ハヤシ,カツミ
+ヒナタ,ジュン
+ヒラサワ,カズヒロ
+ヒロセ,ヒサユキ
+スギモト,セイイチ
+ホリ,カズオ
+ホソ,カズミ
+イデイ,マサカズ
+イイムラ,ヨシノブ
+イケダ,クニヒロ
+イマイ,タダシ
+イノウエ,ヒロタカ
+イシグロ,ヒロシ
+イシカワ,ヨウコ
+イシワタ,ナオヒサ
+イトウ,テツヤ
+イトウ,タカシ
+イワクボ,タカユキ
+イワサキ,タツヒコ
+カガミ,シゲヨシ
+カマモト,タエコ
+カミ,マコト
+カナザワ,サダイチ
+カネコ,ヤエ
+カシワギ,ヒロシ
+カタオカ,アツシ
+ゴトウ,ヒロカズ
+カワハラ,ヒロアキ
+カワキタ,ヤスコ
+キダ,ヨシフミ
+キムラ,ミノル
+オカザキ,タケオ
+キタムラ,アキオ
+コバヤシ,ミヨコ
+ヒロセ,ハルオ
+コサカ,ヨシユキ
+コクマイ,ミエコ
+コモオカ,フミオ
+コンドウ,タツト
+クボ,タカユキ
+クマモト,アキヒコ
+クリヤマ,ユキエ
+クシダ,ワタル
+マエカワ,ヒデタカ
+マスダ,ミキオ
+マツダ,シゲオ
+カノウ,ヒロユキ
+マツナミ,ヒロユキ
+マツザキ,タダシ
+ミモリ,ヒロシ
+ミウラ,ヨウイチ
+ミヤハシ,キョウコ
+ミヤタケ,シゲミ
+ミズコシ,トシオ
+モリキ,ヤスヒロ
+モリ,サトル
+ムカイ,タツミ
+ムラタ,サトシ
+ムツシカ,エイイチ
+ナガサワ,カズト
+ナガエ,タカユキ
+ナカジマ,カツトモ
+ナカマタ,ノリヒロ
+ナカムラ,ハジメ
+オオニシ,マサノリ
+ナカノ,モエコ
+ナカタ,シゲコ
+ナカヤマ,カツヒコ
+ナツヤマ,ユウコ
+モリ,ユキコ
+ニワ,マサキ
+ノマ,サトシ
+ノリカネ,マサル
+オダネ,ヨシカズ
+オオバヤシ,ヤスユキ
+オキ,ヨシユキ
+オライ,ススム
+オオトモ,アキオ
+オヒャ,クニヒコ
+オカモト,ヨシオ
+ウエダ,トヨカズ
+ニシ,アツキ
+タダ,タカユキ
+ヤマシタ,ケンジ
+ササモリ,ユタカ
+ハセガワ,トモユキ
+イマイ,ミユキ
+ヨコヤマ,ケンジ
+スギヤマ,ヨシマサ
+アライ,トモコ
+アマガヤ,ユメノ
+ツル,ミノル
+ヤイタ,マキ
+セキ,マリ
+ハラ,ヨシノリ
+ミウラ,ススム
+ササ,ユキコ
+タカサキ,マキコ
+ハラダ,エミコ
+クラタ,ヤスヒロ
+アゲマツ,ヒロミチ
+フクモト,ミキオ
+オクムラ,ダイ
+オソエガワ,ヤスナリ
+サイタ,マサヒロ
+サカイ,ヒロミ
+サカリ,ノブヒロ
+サノ,ユタカ
+サトウ,ヨシヒコ
+サトウ,アキオ
+サトウ,サトシ
+セキカワ,アキラ
+セシモ,コウジ
+シブヤ,マサノリ
+シマモリ,マサヒコ
+シモダ,ケイミン
+シンタニ,ユウジ
+シライ,シゲキ
+シュウ,ゴイチ
+スダ,ナオキ
+スギタ,ユウイチロ
+スザキ,テツヤ
+スズキ,トシヤ
+スズキ,ノリユキ
+タガイ,ヤスシ
+タカギ,ケンタロウ
+タカハシ,マサコ
+タカイシ,トモアキ
+タカオカ,タカキ
+タカヤマ,シンイチ
+タケモト,ノゾミ
+タマチ,ヒロシ
+タナカ,ヒロフミ
+タニ,ヒロブミ
+テラサキ,ヒロユキ
+サクラギ,ノリヒサ
+トヨサト,ヒロシ
+ツジモト,ユキオ
+ツルタ,シノブ
+ウチヤマ,タケシ
+キキョウ,ヨシタカ
+ウエノ,ヨシコ
+ナガタ,ノリコ
+ワダ,シズオ
+イトイ,ヨシヒサ
+ワタナベ,ヒデトシ
+ヤブウチ,ショウヘイ
+ヤマダ,アキオ
+ヤマモト,アキヒロ
+ヤマモト,マサトシ
+ヤマシタ,ツトム
+ヤマシタ,アキラ
+ヤノ,トモユキ
+ヨコタ,ミナコ
+ヨネムラ,タダシ
+ヨシムラ,ヒロミ
+マツダ,ヨシツグ
+ホソヤ,ショウジ
+ミヤシタ,シゲトモ
+シガ,マサミツ
+ヤマダ,ユウイチ
+ハヤシ,サホリ
+イケダ,ツヨシ
+ウエノ,カズタカ
+サイトウ,テルヨシ
+ナガヤス,コウジ
+ハギオ,トモヒコ
+ハマダ,マサジ
+ムラカミ,ノリヒロ
+アベ,シュンジ
+アキヤマ,トシユキ
+アンドウ,テンセイ
+アラキ,シゲミツ
+アソ,クニカズ
+ババ,ユウスケ
+エビサワ,ヒロシ
+フジイ,ヨシノリ
+フジイ,タツヤ
+フジタ,ヒロシ
+フジワラ,ヒロム
+フクダ,ジュン
+フクオカ,イサオ
+フルヤ,トシユキ
+ガド,ヒサシ
+ハガ,アツシ
+ハマシマ,ユミ
+ハセ,ユタカ
+ハシズメ,ナオキ
+ツダ,ヒロコ
+ハヤシ,トシロウ
+ヒライ,ユウイチ
+ヒラサカ,ヒロユキ
+ヒロワタリ,タカヒロ
+スズキ,ヒデキ
+ホソミ,ヒロアキ
+イダ,チハル
+イガラシ,ユキヤ
+イイジマ,タケシ
+イマムラ,コウイチ
+イレイ,マサル
+イシイ,トモユキ
+イソノ,ミツトシ
+イトウ,ヨシマサ
+イワサ,トシミ
+イズミサワ,セイジ
+カイダ,コウジ
+カマタ,トシエ
+カンベ,タカヒロ
+カネコ,アキラ
+ヨネモチ,ナオシ
+カタオカ,カズヒコ
+カトウ,ヤスヒロ
+カトウ,ユウジ
+タマガワ,コウイチロウ
+ナルケ,タカシ
+キド,タカフミ
+キクラ,カツミ
+キムラ,マサキ
+キノシタ,ヤスヒロ
+キタアキ,ヒロユキ
+コバヤシ,カズヒロ
+コバヤシ,トシキ
+コンノ,ヨウ
+コミヤマ,ヨシヒロ
+コニシ,アキノリ
+コヤマ,ヒロミ
+クドウ,ジュン
+クリヤ,ユウイチ
+ヨシダ,サトル
+マキノ,トシオ
+マサキ,ヒデヨ
+マツイ,ヤスヒロ
+マツモト,タケシ
+マツヤマ,ジュン
+ミタムラ,ジュン
+ミワタ,ナオキ
+ミヤモト,ヒトミ
+モチズキ,シュウイチ
+モリ,マサユキ
+マツダ,ケンジ
+モリワキ,ノブユキ
+ムラカミ,タケオ
+ムラヤマ,サトシ
+ナガシマ,ミチノリ
+ウチゾノ,タカシ
+ナカジマ,ヒロアキ
+ナカムラ,ヒロシ
+ナカムラ,ヨシヒコ
+ナカシマ,ノリオ
+ナラハラ,サトシ
+ニシブ,アヤコ
+ニシモト,ナオコ
+ニシザワ,ダイスケ
+ノジマ,ノリオ
+ヌワ,タケシ
+オガワ,ケンイチ
+オオガキ,カズヒロ
+オキ,マサヒコ
+オオモリ,ヒロアキ
+オオヌマ,マサオ
+オオタケ,サエコ
+サコダ,シュウイチ
+オカダ,テツジ
+オキタ,サトコ
+オオノ,タカシ
+オリイ,シュンジ
+オザワ,ヤスヒロ
+サイトウ,ケイジ
+サカモト,ヨシオ
+サカタ,マサヒロ
+サナギ,ヨシキ
+ササキ,ナガマサ
+サトウ,マモル
+サトウ,ヒデキ
+セキノ,ノリヒロ
+シマダ,アツシ
+シミズ,タカアキ
+シモダ,ヒロユキ
+シノザキ,アツシ
+ショウダ,ケンジ
+スガノ,ヒロユキ
+スギサキ,ヨウコ
+スギヤマ,タケシ
+スズキ,ヒデユキ
+スズキ,マサノリ
+タグチ,シン
+タカハシ,カズノリ
+タカハシ,オサム
+タカハシ,ヒデキ
+タカヤナギ,シゲル
+タケイ,ノブオ
+タケシマ,カツシロウ
+タムラ,ショウイチ
+タナカ,ヤスジ
+サノ,ヒロフミ
+テラマエ,マキ
+トグチ,タケシ
+トミイ,マサヒロ
+トットリ,アキヒコ
+ツジ,マサヒコ
+ツキザワ,コウジ
+ツルタ,ノリコ
+ウチダ,ショウコ
+ウエダ,ヨウスケ
+ウエノ,ジュンジ
+エガシラ,タダシ
+キタワキ,セイキ
+ワタナベ,タカシ
+ワタナベ,ヒロユキ
+ワタライ,ジロウ
+ヤマダ,アツシ
+フジタ,マサトシ
+ヤマモト,ヤスシ
+ヤマネ,ミチル
+ヤマシタ,シゲミ
+ヤマザキ,タダシ
+ヨダ,シュンスケ
+ヨシダ,カズヨシ
+ヨシムラ,サトル
+オザワ,カツユキ
+ヤマダ,キヨシ
+ササキ,ノブユキ
+アゼガミ,シゲカズ
+フクハラ,ノブユキ
+ハシモト,ヨシヒロ
+イソダ,コウイチ
+カマタ,タツヤ
+キムラ,ヨシヒロ
+コバヤシ,ゲン
+クマサキ,ヨシアキ
+ミクニ,トミオ
+エダ,タカシ
+ネモト,マサユキ
+オノ,タクジ
+サエキ,ノリユキ
+セキ,ユキオ
+スヤマ,ヒロコ
+タナカ,ケンゴ
+タザワ,ミキオ
+エンド,ジュンコ
+ヤマグチ,ノリオ
+ヤスダ,サトシ
+スズキ,タケシ
+ヒロハシ,ヤスオ
+カトウ,ヒロヨシ
+ウエハマ,ミノル
+マトバ,チヒロ
+ワタナベ,トオル
+カワシマ,テツオ
+フジカタ,ミツオ
+コイケ,オサム
+タナカ,リョウゾウ
+ダケヤマ,ヒロユキ
+クシビキ,スケヒデ
+スガハラ,テツオ
+ヒガシ,フミヒロ
+ホカ,ケンタロウ
+イワタ,タカユキ
+スガワラ,マスコ
+スト,マサミ
+マツザキ,マサノリ
+アカマル,オサム
+アベカワ,レイジ
+ヨネダ,マサオ
+ソガベ,ユキオ
+ワカバヤシ,ハレオ
+スミタ,テツヤ
+イノウエ,タカヨシ
+ミヤモト,ツトム
+フジカワ,ナオト
+サイトウ,フミオ
+タナベ,ケンジ
+シミズ,セイジ
+ノグチ,シゲアキ
+カワナミ,マサアキ
+フクシマ,アキラ
+オダワラ,ミチオ
+オオタ,ヨウジ
+カワノ,タダヨシ
+クニユキ,ヤスヒロ
+シマダ,ミツル
+タカシマ,ミツギ
+ツヤ,マコト
+ナカシマ,マサオ
+ヤギシタ,トシオ
+キシモト,マコト
+クゲ,ケンジ
+アサノ,ヨシアキ
+カワカミ,ツネオ
+シマダ,シュウイチ
+フジイ,シュンイチ
+ヒガ,ジュンキ
+タナベ,アキラ
+クラヤ,キヘイ
+ナカザワ,マサヒト
+アワタ,シゲル
+ジダ,アキオ
+ホソカワ,トシオ
+シブヤ,ヨシカズ
+コバヤシ,キヨシ
+キタガワ,ヨシテル
+ミズタニ,アキラ
+タカセ,トシオ
+ミヤムラ,トオル
+ヨコハタ,トシヒコ
+ナリタ,ミツヨシ
+アベ,サダヒロ
+ナマエ,ケンジ
+キムラ,ユタカ
+ナゴシ,ヒデアキ
+トミナカ,ヨシオ
+ナカノ,ツモル
+オオサク,カズオ
+ハヤシ,シゲアキ
+オオサ,タカシ
+ヤマウチ,ジ
+オダ,リョウジ
+メグロ,ヒロヨシ
+カナサキ,トミオ
+オカノ,ヤスオ
+クサカワ,ナオキ
+イノウエ,タケシ
+ヤダ,カズオミ
+マツオカ,ユキオ
+スズキ,ユウジ
+タキモト,クニオ
+ヒガシバタ,ヒデオ
+イイダ,ケンシ
+カンノ,マサヒロ
+タナカ,シゲル
+イクタ,ヤスヒサ
+サノ,ヒデマサ
+スガワラ,ヤスヒロ
+ナガタ,ユキオ
+ウラノ,サトシ
+スギヤマ,カツユキ
+オカベ,フミオ
+コイデ,タカシ
+イシタニ,サトシ
+モリ,エイジ
+キタムラ,タカシ
+イワミ,ヤスオ
+フカダ,タカシ
+ウエダ,ユウジ
+フルタニ,タカマサ
+ドイ,タカシ
+ナガノ,トシノリ
+キムラ,アキラ
+カドヤ,ユウゴ
+オオタ,クニオ
+タケウチ,ケンイチロ
+トクモト,タカアキ
+イトウ,シフミ
+ヤマザキ,トキオ
+アオキ,ヨシミ
+チギリ,エイジロウ
+ヨシナガ,チカエ
+ヒラバヤシ,ヒロカズ
+ナカハラ,ケンジ
+ヒロヤ,ノリヒロ
+カナイ,カンセイ
+トオヤマ,タカシ
+ウノ,キンゴ
+シバタ,トシオ
+キタガワ,キハチロウ
+ハラダ,ヒデユキ
+ヤマムラ,ケンジ
+クマミ,ユウゾウ
+イシバシ,トシユキ
+シバタ,ハルキ
+サクヤマ,カズオ
+イケダ,セイイチ
+タケモト,カズオ
+タモト,トミオ
+コムロ,リョウイチ
+タナカ,マサトシ
+カマダ,ヒロシ
+タバタ,ケイイチ
+ヒラカタ,カズオ
+タケウチ,テツオ
+イマズ,ヤスタダ
+フジタ,トシミチ
+ヤマモト,ツトム
+ヤマキ,ユウジ
+シライチ,マサル
+ササキ,ムツミ
+ミヤカワ,マサタカ
+クドウ,ケイコ
+アラマキ,ノブオ
+キハラ,ナオキ
+オカ,キョウ
+コニシ,シゲミ
+タケウチ,サチコ
+タナカ,シンイチロウ
+サカモト,マモル
+マツダイラ,エイジ
+イノ,タツロウ
+オバナ,シゲヤス
+オオクワ,キヨシ
+ゴトウ,シンジ
+スズキ,キヨシ
+ニシオカ,サブロウ
+ササキ,ヒデオ
+ハラ,イクオ
+セキ,ヒロシ
+サイトウ,ヒトシ
+フジタ,シュンスケ
+サカタ,コウイチ
+マエザキ,イサオ
+シオミ,ミツオ
+タカクワ,マサノブ
+イシハラ,チエコ
+コクボ,ケイコ
+ミヤザキ,シゲオ
+アリマ,ケイコ
+ウチヤマ,タカシ
+ナシキ,カオル
+フジタ,ユミコ
+タカギワ,イサム
+ニシダ,ヒトシ
+キクチ,ヒデフミ
+ナカイ,マサミ
+イイダ,ヤスシ
+ヤマグチ,ノブヒロ
+ヤノ,ユウイチ
+ヤマモト,ヒサシ
+ホリムキ,ヨシマ
+アダチ,フミノリ
+ウラノ,コウイチ
+タケダ,ミチコ
+サイトウ,ヒロツグ
+シマムラ,コウジ
+フクダ,ツヨシ
+キムラ,エイコ
+ヤマモト,エリコ
+シゲヤス,エイイチ
+カノウ,ヒロアキ
+スワ,フミオ
+オカザキ,ノリオ
+フカヤ,マサヒロ
+コザイ,ミツル
+ホドヤマ,ヒデオ
+クボタ,キヨシ
+イイズカ,リョウコ
+タカギ,タケノリ
+イワオ,マサシ
+イシイ,イサム
+ワカバヤシ,トシヒデ
+ゼンケ,トシオ
+ワタベ,ヨシミ
+マツモト,ヒロシゲ
+マルヤマ,ケイジ
+ナカノ,ヒデノリ
+オオクボ,カズハル
+クボタ,マサト
+ニシカワ,ヒロシ
+ニッタ,フミコ
+イシダ,ヒデヒコ
+カマス,ケンゾウ
+カゲヤマ,ミノル
+マツムラ,トシミチ
+ササキ,ススム
+ヒラノ,ヨシカズ
+スズキ,イチロウ
+ニシハラ,ケイ
+クロイワ,タカシ
+タカハシ,ヒロシ
+タケウチ,ヒデアツ
+シミズ,アキヒデ
+サタケ,シンジ
+コタニ,タクモリ
+コデラ,マサト
+ハマノ,ミチオ
+ナカムラ,ヒロシ
+ユアサ,ケンジ
+オカダ,ヨシヒロ
+コバヤシ,ヨシハル
+フクダ,ジュンイチ
+カミムラ,タカシ
+イマダ,マサヒロ
+ソネ,フミオ
+ミノグチ,ヨシノリ
+クダナミ,マサユキ
+イノウエ,ミドリ
+ウエムラ,ノボル
+ミウラ,オサム
+スガワラ,サトシ
+ワタナベ,ナオユキ
+ニシワキ,ヨウジ
+オオタニ,マサアキ
+クロカワ,キヨシ
+クボタ,ノブオ
+タムラ,ヒロヒコ
+エビハラ,キイチ
+ナカムラ,ヨウコ
+ヤマネ,ヨシト
+アサマ,マサヒロ
+ミウラ,ヤスノブ
+アラカワ,シンジ
+コジマ,ヨシアキ
+サカタ,コウヘイ
+コバヤシ,オサフミ
+オガワ,ヨシオ
+カトウ,タカユキ
+ミツイ,ケイイチ
+テシマ,カズマサ
+アソ,ヒロイチ
+モリヤ,ヒトシ
+ヤナ,カズオ
+サイトウ,ヒロユキ
+イチキ,ヒロシ
+オオタ,ヒロシ
+ホリウチ,ケイイチ
+タニグチ,ヨシオ
+ニシノ,ソウイチロウ
+フルハシ,コウゾウ
+アキタ,トシオ
+オクシマ,タカシ
+オオタニ,タダヒロ
+カメオカ,ヨシオ
+ハラオカ,カツヤス
+ナカムラ,ヒロシ
+アラシマ,ユキオ
+ナガサワ,ヨシロウ
+ヤマオカ,キヨシ
+ハセ,マサカツ
+キシモト,クニオ
+スズキ,ヨシオ
+カメヤ,カツミ
+マスダ,マサハル
+エンド,ケンイチ
+サクライ,タカアキ
+フルショウ,フジオ
+ウシキ,カズミ
+コイケ,ヒロシ
+トウマ,サチヒロ
+ナカザト,ヒロシ
+ヤマオカ,ヨシノブ
+ナカネ,ノブハル
+トミタ,ノリカズ
+サトムラ,ケイジ
+ヒサマツ,トヨトシ
+オガワ,マサト
+サカイ,タケシ
+ナカギ,ユミ
+サワグチ,マサクニ
+マツモト,トシオ
+フルカワ,コウイチ
+フタミ,キヨシ
+タナカ,フクム
+ヒビノ,ヒロシ
+スナハラ,ショウジ
+イケダ,タカシ
+ゴトウ,ノブユキ
+イシノ,ツトム
+キムラ,シゲル
+ヤマダ,ミツオ
+モリモト,マサル
+オカモト,マツオ
+ナカジマ,サカエ
+キタムラ,マスミ
+ナカイシ,タケユキ
+ワサ,ヒデオ
+コシムラ,マサシ
+ヒナタ,キョウヘイ
+ナカムラ,ノブオ
+フクイ,タツヒコ
+タカダ,カズオ
+ナカムラ,ヒロシ
+ニシヤマ,マサヒロ
+ナカヤマ,タカヤス
+ハリガヤ,ヒロアキ
+マスモト,ヨシオ
+テラニシ,マサノブ
+ナガクボ,オサム
+ヨシノ,タカシ
+モリタ,ノボル
+テラオ,ミツヒロ
+ヨシムラ,キヨジ
+ワタナベ,ケンジ
+マツモト,キヨシ
+オザキ,ヨシアキ
+ヒグチ,フジキ
+ミヤモト,ミサオ
+ヤマグチ,マスミ
+ヤマモト,エツコ
+カトウ,コウイチ
+ナカイ,カズミ
+フジタ,ヒロシ
+スガワラ,コウジョウ
+イシザキ,タカユキ
+タツミ,ヨシアキ
+ナカシタ,マコト
+オジマ,ヒロアキ
+アサシタ,マサフミ
+ホリイ,ミヨシ
+イリ,ケンイチ
+フジマキ,タダアキ
+カジワラ,シュウイチ
+ハセガワ,ミツオ
+フナヤマ,エツオ
+キハラ,タカシ
+タケダ,ケイコ
+イイダ,カナエ
+フルド,マサオ
+モリ,シュウイチ
+フクト,ナオヤ
+オオハシ,アキヒト
+アオキ,ヒデシ
+タジマ,ヒロシ
+オオツカ,トモヒロ
+アオノ,ジンイチ
+イノウエ,ヒトシ
+エンド,マサヒロ
+ヒロセ,ヨシカツ
+エンド,アキオ
+カワイ,ミチル
+アイザワ,フトシ
+コイタバシ,キヨヒロ
+サトウ,ヤスヒロ
+カノウ,シゲキ
+ウエムラ,マサトシ
+スミヨシ,ヒデオ
+ヒロタ,サトル
+イナトミ,カズヨシ
+イトウ,ノリカツ
+クボ,ヒデアキ
+カブラギ,トシヒロ
+イケダ,ヨシノリ
+タカハシ,カズオ
+サカイ,マサヒロ
+カトウ,ヤスクニ
+タケイ,ヤスユキ
+ハンダ,トオル
+ナガヤ,カツミ
+ハットリ,ヒロノリ
+シミズ,ヨシナオ
+イマニシ,マサト
+クマベ,マサオ
+マチダ,ツカサ
+ヤギ,チハル
+オダマ,ユキオ
+キタジマ,ジュンコ
+タチバナ,タクロウ
+フジモト,シュウジ
+ミズノ,イクオ
+エグチ,カツミ
+カワベ,サツコ
+ナカムラ,チアキ
+アスマ,キヨカズ
+ハムラ,ツトム
+イトウ,ユウジ
+イケザキ,タケシ
+ヤマサキ,ノリユキ
+ニシザワ,ソウジ
+ニワ,エイヒコ
+ミウラ,ヒサシ
+カタオカ,アケミ
+ハヤシ,マキコ
+ミサキ,タケシ
+オダクラ,ヒロミチ
+フシミ,チカト
+ヒロタ,タカシ
+ハタヤ,トシユキ
+サカイ,ユウジ
+イダ,イチロウ
+サトウ,タダシ
+ホシノ,ノボル
+オガワ,ナツアキ
+フクザト,リュウイチ
+タナカ,セイジ
+ササキ,キョウコ
+オズチ,ミツオ
+フロモト,ミノル
+ニシムラ,シンヤ
+タケダ,トミコ
+タケトミ,コウイチ
+オカダ,ミチオ
+マト,カズユキ
+スズキ,アキヨシ
+ムカイ,ヨウイチ
+コガ,ヤスオ
+カトウ,カズミ
+ヨコイ,フミトシ
+ウシゴメ,マサタカ
+コマツ,ヨシタカ
+イトウ,ヒサアキ
+サトウ,シュンスケ
+ヒロセ,ノリヨシ
+ゴミ,ジュン
+タナカ,タツオ
+マツモト,タイイチ
+ハヤシ,セイジ
+タカハシ,カツヒロ
+アライ,トシユキ
+ホシ,キヨシ
+テラダ,シゲル
+イズハ,ハルオ
+スナダ,ヤスジロウ
+イジマ,フミオ
+タカダ,トシハル
+ワカマツ,コウジ
+ツダ,トシユキ
+ホシクマ,マサハル
+ホンダ,ヒロミ
+カマダ,エイジ
+ハヤシ,ミツヒロ
+イマイ,タツル
+ツチヤ,イズミ
+ワダ,イクト
+ヨシダ,キミヒロ
+ダテ,ジュン
+ハスコ,ヨシノリ
+タケナカ,ヒロアキ
+オクダ,カズオ
+ホシ,ユウスケ
+カメダ,カオル
+ヒシヌマ,ヒロフミ
+オオニシ,ヒロアキ
+サトウ,マサアキ
+ホソカワ,アキラ
+ヨシザワ,ヒデオ
+ハラダ,ヨシタカ
+ササキ,トモユキ
+イイダ,ヒデミ
+キガワ,コウイチ
+イケオ,ヒロユキ
+アライ,ヤスオ
+カキカワ,ジュンイチ
+ゴトウ,クニトシ
+ミヤコシ,ヤスエ
+フジタ,アツミ
+クラタ,ヒロユキ
+モリオカ,ユミコ
+ヤマウラ,ヤスヨシ
+クロハ,ヨウコ
+イズハラ,ナオカズ
+シゲトメ,ヨシアキ
+ニシ,ヤスフミ
+アキヤマ,トミオ
+イケダ,カズキチ
+モリ,ヤスミ
+ヒロカワ,ユウジ
+ソメヤ,アキオ
+サクライ,エミコ
+ミズノ,イサム
+テラダ,トシカズ
+ヒラマツ,シゲル
+オオタ,ゴロウ
+ヒラマツ,エツオ
+ニシダ,ユキオ
+ムラタ,ヒデユキ
+ミズコシ,ケンイチ
+トミタ,タカオ
+カワミ,セイイチ
+シイノ,シゲオ
+ナカムラ,ノブオ
+イシカワ,コウイチ
+カネタケ,カナメ
+オシゲ,タイチ
+コジマ,ユウゾウ
+トバ,マコト
+イワタ,ヒデアキ
+オノ,ケンジ
+コサカ,ヒサタケ
+カンノ,アキオ
+イトウ,トシツグ
+タカギ,ミチコ
+タカノ,シンイチ
+イナガキ,テツオ
+ノザキ,ジュン
+タケダ,フミコ
+ゴトウ,シンジ
+ホリカワ,カズヒロ
+スギモト,リョウ
+アライ,セイジ
+フジワラ,ヒデスギ
+ヨシダ,シュウイチ
+オシマ,タケシ
+ゴトウ,ダイジロウ
+イズミサワ,ヨシトモ
+イワブチ,マサツグ
+イマキタ,ショウジ
+ムラタ,ショウコ
+シモノ,カズヒロ
+ゴカイチ,コウジ
+ヤマモト,ノボル
+ナガシマ,ジロウ
+ミシマ,ヨシヒロ
+ヤスナガ,カツミ
+オフチ,ジロウ
+コムカイ,キヨミ
+ナガサワ,タイセイ
+キタオカ,カズヒコ
+ハラ,カズヤ
+フカダ,ノリフミ
+キタガワ,タカアキ
+オオモリ,レイコ
+ハブチ,ヒデカズ
+ミヤザキ,ヒロム
+シロタ,マサユキ
+コミヤ,コウジ
+テラオ,ジロウ
+ニシグチ,トシアキ
+カネズカ,ヒロアキ
+スギヤマ,テツジ
+タチバナキ,ハルアキ
+モリオカ,マサカズ
+ヨノモト,ヒデキ
+クスダ,カズイチ
+アリヤス,エツオ
+ツジモト,ヒサト
+フカミ,ジュンイチ
+アキヤマ,キヨシ
+モチズキ,ヨシタカ
+ノムラ,シュンジ
+ワダ,キヨシ
+オチ,ヒロシ
+ムラマツ,チエコ
+ヤノ,オサム
+モチズキ,キヨシ
+ヒラタ,ナオキ
+ワカマツ,トシサダ
+サカモリ,カヨコ
+コバヤシ,アキヒコ
+イマムラ,ヨシヒロ
+オオスガ,カエデ
+タカヤマ,タカトラ
+キタミ,ヒロヒデ
+マエダ,タエコ
+トモノ,ケンイチ
+カブラギ,マサユキ
+ネギシ,ケイゾウ
+ワダ,ユミコ
+スズキ,ヤスユキ
+サナエ,カズマサ
+ノ,タツヤ
+イシバシ,ヒロユキ
+ヤマシタ,ツネオ
+スズキ,カズヒロ
+ミヤワキ,トシヒコ
+マツウラ,ヨシアキ
+キタヤマ,ヨシヒロ
+ヤマグチ,ジュンジ
+ニシヤマ,カツジ
+カワバタ,マサヒコ
+ミカミ,ジュン
+スギヤマ,イサオ
+キジマ,ノリオ
+ヒガシ,シュウジ
+アベ,マサト
+イノウエ,ヨウコ
+フカダ,アキオ
+ムラマツ,ジュン
+ヒラバル,タケオ
+チョウナン,ヨシマロ
+カワムロ,サトシ
+ツクダ,ミノル
+ミヤモト,トシヒロ
+スエヒロ,ジュンイチ
+シラカワ,コウジ
+タナカ,ケイシ
+ヤスイ,ヨシノブ
+キムラ,カツコ
+ナカガワ,カツヨシ
+クサノ,トシヒロ
+アダチ,ヨシヒロ
+ナカトモ,ムツミ
+マスモト,ツトム
+ワタヌキ,ヤスヒロ
+タカハシ,カツジ
+コボリ,ミキオ
+オガワ,コウイチ
+フジモリ,ミキオ
+イハラ,エミ
+ワタナベ,ユウコ
+ウラベ,イサム
+ミウラ,ミツル
+ナカイ,ケイイチ
+ワラシナ,シゲル
+フクナガ,ヨシカズ
+オオツボ,ヨシアキ
+ヨシダ,ミノル
+ハヤミ,カツヒコ
+ノムラ,マサカズ
+ヒライ,ヨシユキ
+シマダ,マサエ
+スズキ,ナオトシ
+テラシマ,キミヒコ
+シズハラ,レイコ
+ヤマトヤ,カズヒコ
+オギノ,ヒロオ
+マツグマ,シゲホ
+キタイ,トシヒコ
+アカダ,シズオ
+タケヨシ,セイノスケ
+ヒロノ,ソオジャ
+シマムラ,トマサ
+リュウゴ,シュンイチ
+クニエダ,マキオ
+オオツカ,ホコク
+イケガミ,ヒデトシ
+カネマツ,カネヒデ
+オオガワラ,ヨシノブ
+スズキ,タカシ
+テラダ,セツコ
+カワサキ,テツジ
+オシヤマ,ヨシヒサ
+カワカミ,シゲキ
+ナカムラ,トシアキ
+ミタニ,トシヒコ
+コマツ,ヒロタカ
+アカイワ,トシヒコ
+イチイ,フミヤ
+フクヤマ,マサアキ
+クドウ,ヨシテル
+マツシタ,シンジ
+ニシカワ,ユキヒロ
+アマガミ,シン
+ヤシキ,アイイチロウ
+ワダ,アツコ
+マスダ,トモコ
+ヨシムラ,ユウジ
+オダ,シンジ
+ヨコヤマ,タカフミ
+イトイ,ユリコ
+スズキ,カツヒロ
+ナガハマ,ヒロユキ
+ヤザキ,テイゾウ
+ヤジマ,キヨシ
+ムカエダ,サトル
+ナカムラ,タツアキ
+ヤマムラ,コウイチ
+ノモト,トシユキ
+ヤマザキ,トシヒコ
+サトウ,トシヤ
+イノウエ,ヒロユキ
+オカノ,ヒデオ
+ナカニシ,ハルヒサ
+ウエダ,ヒロミ
+アイザワ,アキオ
+アライ,トモナリ
+ナガイシ,カツミ
+ハコイ,マサオ
+クスモト,タカヨシ
+アリトミ,ジツロウ
+ハラ,タミオ
+ホンマ,マサハル
+ハシモト,ミチハル
+ハシモト,マサオ
+オオヌマ,イサオ
+ハナキ,シンイチロウ
+ハシモト,アキコ
+サクラザワ,ヒデトシ
+アカギ,ヤスヒト
+アキズキ,マサトシ
+アンドウ,ヒロキ
+アライ,タマオ
+アサムラ,カツミ
+チバ,アコ
+エグチ,ユキタカ
+フチノ,トオル
+フジマル,ヒサト
+フジサワ,ノリオ
+フカダ,フミヒロ
+フクイ,ヒロシ
+フクトミ,リュウサク
+ギマ,カズヨシ
+ハギワラ,イチロウ
+ハラ,キヨタカ
+ハルナ,タカアキ
+ハツミ,アズサ
+ハヤセ,シンゴ
+ハヤツ,ヒロシ
+ヒラオカ,マユミ
+ヒロシ,ノブコ
+ホシコ,マサヒロ
+イチカワ,マサル
+イガワ,キヨシ
+イイズカ,アリサ
+ミツモト,ヒロタカ
+イマムラ,ヒロユキ
+イナミ,ヒロミチ
+イノウエ,タケシ
+イセ,ユキオ
+スギハラ,ヒロタカ
+イシモト,ケンジ
+イシズカ,トオル
+イトウ,ヨウジ
+カミカワ,タダミツ
+イワサキ,ケイコ
+イズミ,ミワ
+カマダ,タカヒロ
+タケウチ,ミキ
+ノムラ,エミコ
+カタノ,テルヒサ
+カトウ,タカシ
+カワダ,ヒロユキ
+イシイ,ヤスキ
+カワシマ,エイコ
+キクカワ,ユカリ
+キシ,タクシ
+コバヤシ,テツヤ
+コバヤシ,カズヒコ
+コヤマ,アキラ
+コクボ,ヨウコ
+コンド,ミエ
+コシオ,マサトシ
+クボ,ツトム
+ホシノ,トシヤ
+クサカワ,ケイイチ
+クスミ,ユタカ
+マキノ,チヒロ
+マルヤマ,マコト
+ナカムラ,チトセ
+マツモト,アツシ
+メザワ,ヒトシ
+ミネ,マサヤス
+ミト,ノブオ
+ミヤモト,シゲル
+ミヤザワ,カツミ
+ミズタ,ケンジ
+モリ,ハズキ
+モリモト,マナブ
+モロオカ,ミツヒロ
+アンドウ,イワオ
+ミョウガ,タカユキ
+ナガオ,アキヒロ
+ナガセ,ススム
+ナイトウ,サダミツ
+ナカジマ,トオル
+ナカマル,トシコ
+ナカムラ,リュウイチ
+ナカニシ,ヒデト
+ナカノ,ツカサ
+シナダ,アキラ
+ナリタ,タクジ
+ニイヤマ,ヒロシ
+ニシカワ,アキラ
+ニシズカ,トシヤ
+ヒノ,カズユキ
+ハセガワ,ミツアキ
+オガタ,ヒトシ
+ムサシ,ミツル
+オオクボ,ハルシ
+オオサワ,ヒデキ
+オオタ,シンジ
+オオワダ,ヒロノリ
+オカダ,タカヨシ
+オカモト,ヒロシ
+オキモト,マサヒコ
+オニツカ,マサアキ
+オサキ,タカシ
+サエキ,ヨシヒロ
+サカイ,リョウジ
+サカキ,キョウコ
+サカウエ,タカユキ
+サノ,トシフミ
+サトウ,ヤスシ
+サトウ,サトシ
+サワイ,ミチヒロ
+セキハラ,アキラ
+セシモ,シュウイチ
+シバタ,テツロウ
+ムラタ,リュウタロウ
+シミズ,ハヤトシ
+シモオサ,タケシ
+シノダ,ハツエ
+シライ,カズヒコ
+スドウ,モトユキ
+スギシマ,マサル
+スヤマ,トモノリ
+スズキ,ユタカ
+シュクヤ,ジュンイチ
+タグチ,ナオユキ
+ミヤモト,タカシ
+タカハシ,ケンリュウ
+タカハシ,ユキエ
+タカハシ,イチロウ
+タカセ,シゲキ
+ミカミ,ケイスケ
+タケヤマ,トシアキ
+タナベ,ヒロユキ
+タナカ,ヒロコ
+タナカ,ノリアキ
+タニグチ,ジュンコ
+タテイシ,ナオヤ
+テルキナ,アキヨ
+トミオカ,ナオキ
+トヨダ,マサヒコ
+ツチヤ,ヨシヒロ
+ツジ,ヒロシ
+ツノガイ,ヤスノリ
+ウチダ,マサフミ
+ウダ,ケイジ
+ウエハラ,シンジ
+ウエノ,ユウジ
+ウメハラ,マコト
+ウスイ,コウヘイ
+ワダ,ヨシアキ
+ワタナベ,サトシ
+ヤハギ,ナオフミ
+ヤマダ,トシオ
+ヤマグチ,トモカズ
+ヤマモト,ケンジロウ
+ヤマモト,マナブ
+ヤマシタ,リンジュ
+ヤマザキ,ヒトシ
+ヤスダ,マサミ
+ヨドガワ,ノリオ
+ヨロズヤ,ナオヒサ
+ヨシマツ,チハル
+エダヒロ,ミドリ
+コジマ,ヤスヒサ
+オガワ,メグミ
+タカセ,マミコ
+フクタ,カズミ
+タグチ,ヒロム
+アサノ,トシヒコ
+フジイ,ケンジ
+フジワラ,コウジ
+ゴトウ,ヒロカズ
+ハヤシ,トシアキ
+ヒライ,ヒロタカ
+イチイ,シゲユキ
+イケダ,イクジロウ
+イシマル,ミワ
+イトウ,テツヤ
+カゲヤマ,ツヨシ
+カサマ,ノリマサ
+カトウ,コウタ
+キクチ,トモアキ
+キタガワ,ミチハル
+コバヤシ,コウタロウ
+コンド,ノリコ
+クドウ,ハヤト
+クサフカ,シノブ
+マツダイラ,マキ
+ミクニ,ヤスシ
+ミヤチ,タカフミ
+ミヤザワ,ヒロキ
+モリタ,クルミ
+ムロゾノ,ヒロアキ
+ナカミチ,ショウ
+ニシムラ,シンヤ
+オガワ,タカシ
+オオエ,マサミチ
+オオタ,タカシ
+オカヤマ,ミツヨリ
+サイトウ,タカノブ
+サノ,タクヤ
+サトウ,タカシ
+シイ,ミサコ
+シンキュウ,マサユキ
+スギヤマ,キヨタカ
+タカギ,ヨシオ
+タケウチ,カホル
+タナカ,ノブコ
+タルサワ,アキコ
+トモノ,カズミ
+ワタナベ,マサトシ
+ヤマモト,ヒデト
+ヤマザキ,フミノ
+ヨネミツ,マコト
+ユリ,トモオ
+マツグマ,フミコ
+アジマ,ヤスアキ
+アマノ,チアキ
+アオキ,ヨシコ
+アオキ,ナオヒサ
+アラキ,カツジ
+アサクラ,タツオ
+アズマ,リエ
+サタケ,ケイコ
+ダイオ,ヒデキ
+ナカムラ,タカコ
+フジイ,タツノリ
+フジオカ,テツロウ
+フクイ,コウジ
+フナダ,ユウコ
+ゴトウ,カイチロウ
+ハマダ,ヨシミ
+サトウ,セイゴ
+ハリマ,ナオキ
+ハセガワ,アキヒコ
+ハタ,シンイチロウ
+ハットリ,ユキ
+ハヤミ,スミヒト
+ハヤシ,マサノリ
+ヒエダ,ミチカズ
+ヒオキ,トウメイ
+ホダ,ヒロキ
+ヒロスエ,ジュンコ
+ヒシダ,ヒロシ
+ホンゴウ,マサト
+ホリエ,アキノリ
+ホシナ,コウイチ
+イチカワ,ヒトシ
+イガタ,エイイチロウ
+イイズカ,マコト
+イケダ,タカユキ
+ホソイ,ケンタロウ
+イノ,ジュン
+イノウエ,フミノリ
+オオモリ,ケンイチロ
+イシイ,ケイジロウ
+イシイ,ヤスシ
+イシツカ,トシユキ
+イソガイ,ユウコ
+イトウ,サトシ
+イワハシ,ユウコ
+イワサキ,ヒロユキ
+カガブ,シンジロウ
+カマホリ,トモヒコ
+カミヤ,ノブユキ
+カナイ,ノリコ
+カンダ,チエ
+カノウ,タケシ
+タマタニ,シマ
+カトウ,ヒロキ
+カトウ,ジュンコ
+カワグチ,コウジ
+カワムラ,シュウジ
+カワシマ,ノブコ
+キクチ,イチロウ
+キムラ,タカヒサ
+キシ,ナオキ
+キタガワ,ナオミ
+キヨハラ,ツトム
+コバヤシ,ケンジ
+コダマ,ヤスヒロ
+コイワ,トモユキ
+コジマ,サトシ
+コンド,ケンイチ
+クボ,ナオキ
+クマクラ,ケンイチ
+ヒライ,コウジ
+クロダ,アツシ
+クロサワ,エイジロウ
+マエダ,サトシ
+シブタニ,コウジ
+マスダ,ユウコ
+ハラ,ケンジ
+マツイ,シンジ
+マツモト,ヒロシ
+マツナミ,ヨシコ
+マツオカ,シンゴ
+マツヤマ,アキラ
+ミカミ,ヒデオ
+ミナミ,アキラ
+ミタムラ,マサトシ
+ミツマ,カズヒト
+ミヤシタ,ヒロユキ
+ハシグチ,シゲキ
+ミズノ,トシユキ
+モリ,マサシ
+モリ,ヒロカズ
+モリヤ,ムツオ
+ムネカタ,カズヨシ
+ムラタ,ユキモト
+ミョウジン,ミチオ
+ナガシマ,ヨシカズ
+ナイトウ,マサキ
+ナカジマ,テルミ
+ナカモト,ヒロカズ
+ナカムラ,ユウジ
+ナカムラ,ケンタ
+ナカヤ,ワタル
+ナン,ケイスケ
+ナトリ,ケンヤ
+ニイザワ,ヨシノリ
+ニシダ,ヤスオ
+ニシナ,キヨシ
+ニシザワ,ヨシヒロ
+ノガワ,ヒロヤ
+ノムラ,マサヒロ
+オガサワラ,カズテル
+オガワ,ヤスノリ
+オハシ,サトシ
+オオノ,ヒロヤス
+オシマ,ツトム
+オオタキ,フトシ
+オオツカ,エイキ
+オオヤ,ムネオ
+オカダ,ヒロユキ
+オカザキ,コウタロウ
+オオミ,アヤコ
+オノデラ,マサヒコ
+オノ,タカアキ
+オザキ,ヨシマサ
+サイダ,モモコ
+サカグチ,コウジ
+サカイ,ナオキ
+サコ,アカシ
+サンベ,マコト
+ササキ,ユタカ
+サタケ,トシキ
+サトウ,ユキタカ
+ヒラノ,ヒロアキ
+サワムラ,ヒロシ
+セキネ,カズアキ
+シバハラ,カズノ
+シバザキ,マサコ
+シマ,コスケ
+シミズ,ケイスケ
+シモカワベ,アキヒロ
+シノザキ,ヒロシ
+シラハマ,ミチヒサ
+ショウナゴ,タカシゲ
+スダ,メイジロウ
+スギモト,ミカ
+スギタ,タカユキ
+スミダ,アツシ
+スズキ,マサフミ
+スズキ,シゲル
+スズノ,カツフミ
+タグチ,ミユキ
+タカギ,トシカズ
+タカハシ,ヒロミチ
+タカハシ,ヒデノリ
+タカハシ,ケンイチ
+タカノ,ミキコ
+タカシマ,タダシ
+タケダ,イズミ
+タケナカ,ケンイチ
+タケヤス,レイジ
+タムラ,ヒロユキ
+タナカ,コウイチ
+タナカ,タカヨシ
+タナカ,トオル
+タニグチ,カツヒコ
+テラマエ,セイイチロウ
+トキワ,チエコ
+トリゴエ,サダユキ
+ツチタニ,ヒデキ
+ツジムラ,タカシ
+ツカモト,ケンタロウ
+ツツミ,マサノリ
+ウチノ,サトシ
+ネズ,トシアキ
+ウエツボ,ヨシタカ
+ウオズミ,サンペイ
+ワダ,ミツノリ
+ワタナベ,ヨシキ
+ヤブ,コウジ
+ヤマダ,ユウコ
+ヒサノ,リカ
+ヤマグチ,ノリユキ
+ヤマカワ,ユキコ
+ヤマモト,ナオト
+ヤマモト,シンイチ
+ヤマウチ,シンイチロウ
+ヤマザキ,タカオ
+ハギワラ,ミキオ
+ヨネザワ,エリ
+ヨシダ,サチコ
+ヨシマツ,ケンタロウ
+ズシ,ユキオ
+イワカワ,ソウタロウ
+イシマツ,ヒロヤス
+アベ,エイイチ
+アカイシ,エイチ
+アマガタ,タカシ
+アンザイ,マサヒデ
+アラキ,トシミツ
+アシダ,サトシ
+チョウ,エイジ
+ドイ,ケンイチ
+エノモト,キヨミ
+フジイ,サツキ
+フジタ,タカシ
+フクムロ,タカシ
+フナキ,ナオキ
+フルヤ,トモヤ
+イワサキ,サエコ
+イトウ,シロウ
+ハダ,ヒデアキ
+ハナド,ミノル
+ハラダ,タケシ
+ハラゾノ,ノブヒロ
+ハシモト,サトシ
+ハットリ,マコト
+ハヤシ,タカヨシ
+ヒガシ,カズオ
+ヒラノ,ヒロコ
+ヒリキ,ケンイチロ
+ホンダ,サナエ
+ホシヤマ,ミギフミ
+イチハラ,タカシ
+イガラシ,カツノブ
+イケダ,リョウ
+イマムラ,オサム
+イナムラ,トモノリ
+イノウエ,ヤスヒロ
+イサカ,シゲル
+イシダ,ケイイチ
+イシイ,ノボル
+イシズカ,ユキオ
+イトウ,ショウコ
+イトウ,マサミ
+イトウ,エイジ
+イワナガ,ナオコ
+ジンバ,ツネノリ
+カジモト,タクヤ
+カコ,トシヒコ
+カン,タクヤ
+カノウ,マユミ
+カスヤ,マサナリ
+カトウ,ケンジ
+カワベ,ヨシユキ
+カワカミ,ケンイチ
+カワノ,マサヒコ
+カワシマ,ヤスノブ
+キクチ,マモル
+キムラ,アツシ
+キノ,アキ
+キタガワ,オサム
+コバヤシ,トシヒロ
+イトウ,シンジ
+コクショウ,マサル
+コンド,マサユキ
+コヤマ,ヒロタカ
+クレマツ,タカヒデ
+クリュウ,ヨシエ
+マチタ,マサキ
+マルイチ,マサユキ
+マスダ,ユキコ
+マツイ,ヒデシ
+マツモト,ヨシキ
+ナカムラ,ヒロユキ
+マツオカ,タケシ
+マツヤマ,コウタロウ
+ミシマ,カズミ
+ミツモト,キヨミ
+ミヤモト,トシアキ
+ウチヤマ,ミキコ
+ミズノ,マサヨシ
+モギ,モユル
+モリ,マサヒロ
+モリタ,カズヒサ
+モトバヤシ,サトル
+ムラカミ,ヒロアキ
+ムラタ,トモノリ
+ナバ,ヒロユキ
+ナガオケ,サトシ
+ナガタ,ショウヘイ
+ナカガワ,ヨシユキ
+ナカジマ,タカシ
+ナカムラ,タツヤ
+ナカニシ,イズル
+ナカオ,アキコ
+ナカヤマ,フミオ
+ネモト,ミツアキ
+ニシダ,ヨシヤ
+ニシムラ,キワム
+ノブハラ,コウジ
+ノゾエ,ハジメ
+オオギ,タケシ
+オオエ,ヨウイチ
+オオクボ,ヒロフミ
+オオモリ,ナオキ
+オノ,アキラ
+オオタ,アサコ
+オオタニ,ヤスヒロ
+オカ,フミコ
+オカマツ,タカヒロ
+オカモト,ノリオ
+オオノ,ナオキ
+トクミヤ,テツヤ
+サイトウ,ユタカ
+サカキバラ,タカオ
+ミタニ,ケンイチ
+サノ,シュウゾウ
+ササキ,セイジ
+サトウ,タカカズ
+サトウ,ノボル
+サトウ,トモキ
+サヤノ,イクヤ
+センナ,トシミツ
+シブタニ,キョウコ
+シマムラ,ヨシミツ
+シナダ,カツミ
+シラハマ,タロウ
+シュトウ,ユミコ
+スダ,ナオヒロ
+スギヤマ,ヒデマサ
+スミオカ,トモヤ
+スズキ,ヒデヒロ
+タバコ,クミコ
+タガワ,マコト
+タカハシ,シンヤ
+ワタナベ,マキ
+タカクラ,ケンスケ
+タカオカ,ゴウ
+タケハナ,マサカツ
+タケウチ,サトシ
+タナカ,ケンタロウ
+タナカ,セイジ
+タナカ,ノリヒロ
+タニイ,ユリコ
+タシロ,ケンイチ
+テラモト,エイジ
+トキオカ,タカシゲ
+トミカワ,ノリコ
+トリカイ,ナオキ
+ツダ,コウイチ
+サカイ,ミホコ
+ウダ,アツコ
+ウエノ,オサム
+ウメハラ,トシオ
+ウシバ,ミノル
+ワカオ,ケイジ
+ワタベ,マサトシ
+ワタナベ,ダイチ
+トミヤス,トシヒサ
+ヤマダ,マキ
+ヤマコシ,ダイスケ
+ヤマモト,ジュン
+ヤマシタ,ナオコ
+ヤナギ,トシアキ
+ヨコサワ,タクヤ
+ヨコヤマ,カズノブ
+ヨシダ,ナオト
+ヨシミ,タイキ
+ヨシザワ,トシカツ
+イマ,マサヒロ
+クボ,マサヒコ
+ナカハラ,タクヤ
+オグラ,トオル
+タカマツ,ケンイチ
+イノウエ,ムネヒロ
+アイバ,サトシ
+アマノ,ナオコ
+アリタ,ヒデアキ
+アタグチ,ヒロシ
+ダテ,シゲヒコ
+エザワ,ナリヒデ
+フジモト,ミキオ
+フクドメ,タカシ
+フルカワ,アケミ
+ハギワラ,リュウタ
+ハナタ,ヒラク
+ハセガワ,ユタカ
+カジワラ,ヨシコ
+ハットリ,タカユキ
+ヒガシ,リュウスケ
+ヒラオ,マサユキ
+ヒロセ,ミツル
+ホンマ,タケシ
+フクロイ,ケンジ
+イチノセキ,トシヒロ
+イケダ,ユタカ
+イマムラ,ケンスケ
+イノウエ,カズオ
+イシダ,コウジ
+イシカワ,アキラ
+イワサキ,タケシ
+カイズカ,ヒロコ
+カミガキ,ノリヒデ
+カネコ,クニヒコ
+カタギリ,ナオユキ
+カトウ,ケンジ
+カワカミ,コウジ
+カツキ,アキトモ
+キムラ,サトル
+キノシタ,ユカリ
+キタヤマ,チヒロ
+アメシタ,ナオキ
+コバヤシ,タカヒロ
+コガ,ノリユキ
+コイケ,アキオ
+コンド,トモノリ
+クボキ,イクコ
+クラシナ,カツヒト
+クロキ,ツヨシ
+マエダ,ヤスヒロ
+マサダ,ヒロユキ
+マツダ,ナオミ
+マツモト,シュウイチ
+メカタ,ヒロキ
+ミヤモト,アキヒロ
+モリ,ユカ
+モリタ,カズヨシ
+ムラカミ,マサアキ
+ムタ,ヒサシ
+ナガヤマ,テツヤ
+ナカハラ,タカコ
+ナカムラ,アキノブ
+ナカムラ,マリ
+ナカタ,コウイチ
+ナカザワ,ケイスケ
+ニシ,カネノブ
+ニシヤマ,ミナコ
+ノト,ジュンイチ
+オガワ,ヨウジ
+オオバ,マサヒデ
+オムラ,マユ
+イケマツ,タカコ
+オイダ,ヒトシ
+オカザワ,ヒトシ
+オノ,ナオミ
+サイトウ,アキヒサ
+サカイ,ノブヤス
+サクタ,ヨシアキ
+サトウ,マサヒコ
+サトウ,コウジ
+サワハシ,タツユキ
+シバタ,アヤコ
+シミズ,カツユキ
+シオミ,シンジ
+シタラ,ヒサシ
+スギタ,カツヒコ
+スケガワ,ノブヨシ
+スズキ,アキヒロ
+ショウ,ショウタロウ
+タイ,マサテル
+タカギ,テツロウ
+タカハシ,トシオ
+タカヤマ,ヒデツグ
+タケシタ,ショウゾウ
+タコ,ヨシキ
+タナカ,キョウヘイ
+タニ,カズナリ
+タズケ,セイイチ
+トモトシ,ケンジ
+ツチモト,フミオ
+ツノダ,ショウジ
+ウチダ,サトル
+ウエダ,アキノリ
+ウノキ,ノブヒコ
+ワダ,ヒロタツ
+ワシズ,ショウ
+ワタナベ,コウセイ
+ヤマダ,タカト
+ヤマグチ,ヨウジ
+ヤマモト,ミツゾウ
+ヤマナ,セイイチロウ
+ヤシロ,タケシ
+ヨコヤマ,マサヒコ
+ヨシダ,トモミ
+ユキ,セツコ
+ヒラカワ,マナブ
+モリイチ,エイジロウ
+シミズ,ケイ
+フジュウ,シンイチ
+ハガワ,タカシ
+ハセガワ,ヒデアキ
+ヒラノ,タクヤ
+ホンゴウ,テルヒコ
+イケダ,トシユキ
+イシカワ,ヒロキ
+イトウ,ヨシミ
+カナヤマ,コウジ
+カタギリ,シンスケ
+キモト,タクヤ
+キヤマ,セイジ
+コジナ,ケン
+コンド,ヒロヒコ
+クリタ,サトシ
+マスダ,ダイチ
+ミカミ,ミツオ
+ミワ,タカノブ
+モチズキ,ノブユキ
+モリヤマ,トシオ
+ナガフジ,キミヒト
+ナカジマ,マサヒコ
+ナカムラ,ヒサト
+ナスノ,ナオキ
+ノダ,ユウコ
+オガワ,リョウコ
+オオカワ,ジュンコ
+オオタニ,ケン
+オクムラ,マナミ
+イギ,アキノリ
+サナダ,ヨシヒロ
+サトウ,ヒデヒサ
+セキ,ヨウイチ
+シバタ,ユキノリ
+シマカワ,シゲル
+シオジリ,ヒロシ
+スダ,トモハル
+スズキ,コウジ
+タカダ,タカノリ
+タカハシ,キョウコ
+タカス,ツヨシ
+タニグチ,ナオキ
+ツネカワ,ヒロフミ
+ウエハラ,ヒデアキ
+ヤギモト,ヒロシ
+ヤマグチ,トモコ
+ヤマシタ,カズキ
+ヤザキ,ナオキ
+ヨシダ,ハルヒコ
+アイカワ,ヒロフミ
+チカハラ,オサム
+ワタナベ,タカエ
+ノザキ,テルアキ
+アカニシ,ナオヒロ
+シマモト,アトム
+アナザワ,ミノル
+イウチ,マコト
+イシカワ,コウイチ
+イチカワ,ソヨ
+イマハヤシ,シンイチ
+ウチヤマ,ヨシタカ
+オウサカ,マサタカ
+オオタニ,ヒデキ
+オオバヤシ,シンジ
+オグラ,ヒロコ
+カキモト,ヒロシ
+カトウ,シゲノリ
+カミヤマ,ヒロカズ
+カワセ,ナオキ
+キタジマ,アキヒロ
+クサカベ,マエコ
+コイデ,ヒデキ
+コマツ,ケイイチ
+サイトウ,ヒデキ
+サトウ,ジュン
+シュウ,マサヤ
+シノダ,マスミ
+シミズ,サトシ
+スガワラ,シゲフミ
+スミカワ,カツアキ
+タカセ,キヨタカ
+タケダ,ケイイチ
+タナカ,ケンジ
+タバタ,ミワコ
+ツチハシ,ムネヒロ
+トムロ,ナツヒコ
+ナカガワ,タカコ
+ナス,ヒロシ
+ニシハラ,ナオキ
+ノムラ,カズヒコ
+ハセガワ,ケンイチ
+ハラダ,トモコ
+ヒジリ,エリ
+フジタ,ノブコ
+ホソカワ,タツオ
+マスブチ,タカシ
+マツナガ,ユキ
+マツヤマ,テツヤ
+ミタ,ミノル
+ミヨシ,ヨウコ
+ムラヤマ,マコト
+モリシタ,カズヒロ
+ヤジマ,ナオコ
+ヤマザキ,ヒロユキ
+クリハラ,マサキ
+ヨコヤマ,ヨウコ
+ワタナベ,ヨシヒト
+クワシマ,スグル
+サカモト,ヒデノブ
+イトウ,タダヒロ
+ウメナイ,ススム
+オカシロ,シロウ
+カワオカ,ヒデキ
+クバ,タカシ
+コウダ,マサタケ
+サトウ,マユミ
+アベ,マサハル
+タカハシ,ヒサミ
+タバタ,カツユキ
+ナカガワ,コウイチ
+ハシモト,トオル
+ヒラノ,マサタカ
+ホソノ,アキヒト
+ムラカミ,ケイコ
+ヨシムラ,エリ
+アマヤ,マサル
+チョウ,ダイスケ
+ゴウダ,キヨノブ
+ハヤカワ,ヒロキ
+フルタ,ナルキ
+イイダ,タカヒロ
+イシワタリ,ヒロカツ
+カバヤマ,マサキ
+カンダ,ヤスヒト
+キタムラ,ヨシオ
+コンノ,コウイチ
+マチダ,ハルミ
+マツイ,タケシ
+ミウラ,ケイゴ
+タハラ,ノリコ
+ムラカミ,タツヒコ
+ナカミネ,マモル
+ナカザワ,キヨシ
+オオタ,シゲアキ
+イシカワ,ヨウ
+イトウ,トモヤ
+サトウ,ツグヒデ
+シバタ,ナオキ
+ソメヤ,アキヒコ
+タケダ,アキラ
+タナカ,コウイチロウ
+タニシタ,フミノ
+ツチヤ,ヨシコ
+ワジマ,リコ
+ヤマダ,ヒロキ
+ヤマザキ,ユタカ
+タカハシ,マサキ
+アンドウ,ユキ
+イシモト,リョウスケ
+イワサキ,ミズマサ
+ウメハラ,タカシ
+オガタ,ヤスシ
+オニザワ,シゲキ
+カジ,オサム
+カネコ,ノブカツ
+カワマタ,ヒロキ
+クボ,トモノリ
+コウサキ,コウイチ
+サイホ,ナルヒロ
+サナダ,オサム
+シシド,クニオ
+スギハラ,キヨシゲ
+タカオカ,ユミ
+イトウ,ジュンジ
+ナカオ,シンジ
+ナカノ,ジ
+ニシカイ,トシミツ
+ネロメ,ヒロシ
+ハブ,マコト
+ヒライ,カオリ
+フジワラ,トオル
+ホンマ,ユキノブ
+マツザワ,チカラ
+ミヤモト,ヤスジ
+モリヤ,ホマレ
+ヤノ,ヒロシ
+ヤマシタ,マイコ
+ヨダ,タカヒロ
+ワタベ,タカシ
+アキバ,ケイイチ
+アベ,マユミ
+イトウ,ヨウジ
+イシムラ,ユミコ
+イトウ,マサル
+イマイ,タケシ
+ウエハラ,モトコ
+ウメツ,アキヒコ
+イマニシ,ヒロユキ
+オオイシ,マサハル
+オカノ,ユキ
+オガワ,トオル
+カガミ,エリカ
+カタヤマ,ミツコ
+カミ,ヨシテル
+カワサキ,ヒトシ
+カワモト,ミチオ
+キタモト,ツトム
+ギョウブ,ヒロコ
+コイケダ,タツロウ
+コダマ,タイチロウ
+コバヤシ,ヒデヒト
+サイゴウ,ミワコ
+サカガミ,イチロウ
+ササキ,ナナエ
+サワ,ケンゴ
+シミズ,ユキオ
+ショウダ,シゲノリ
+スズキ,カズヒラ
+イシハマ,ケント
+タカハシ,マキコ
+タケワ,シンジ
+タハラ,サトシ
+ツツミ,マコト
+ナイトウ,コウジ
+ナカジマ,ノゾム
+ナカムラ,ソウイチロウ
+イケダ,マサタカ
+ニシ,ツネアキ
+ノノイチヤ,マスオ
+ハシズメ,ユウコ
+ハットリ,ユウ
+イノグチ,カツフミ
+ヒマキ,トモノリ
+フカザワ,リエ
+フジナガ,フミコ
+フルヤ,マリコ
+ホリカワ,トモヒロ
+イグチ,タカヒロ
+ミツハシ,エイイチ
+ミヤシタ,ヨウコ
+ムラマツ,マサユキ
+イノウエ,アキノリ
+ヤノ,タダタカ
+ヤマダ,タツオ
+ヤマモト,ムネタカ
+ヨシダ,リョウ
+ワタナベ,ヒデユキ
+ワタナベ,トシエ
+コウダ,サトル
+オガワ,ヒロアキ
+アキモト,ススム
+アサノ,トモヒコ
+アベ,マサオミ
+イツノ,ミキオ
+イチノセ,コズエ
+イリタ,ヤスアキ
+イシオカ,シンイチ
+イチキ,マサト
+イハラ,キヨタカ
+イマズ,ツヨシ
+イワスギ,ミカ
+ウスイ,マサヒロ
+エトウ,ケンジ
+オウ,ヨシヒロ
+イワキリ,ワタル
+オオツキ,ジュン
+オムラ,クミ
+オカザキ,トモミチ
+オガワ,アキラ
+キタムラ,マリコ
+オオヤマ,チズル
+カサザキ,ヨシヒロ
+カツノ,タカノリ
+カトリ,ケンジ
+ガミ,ヒロシ
+カワカミ,マサミ
+カワミ,シンジ
+キタシロ,カズヨシ
+キムラ,シゲル
+クジラオカ,ダイキ
+イシグロ,タロウ
+イナトミ,ダイスケ
+コズマ,マイコ
+コシイ,トモヒロ
+コニシ,タダシ
+コバヤシ,ヨシオ
+サイトウ,トモエ
+サカイ,ミネオ
+サカモト,ジュンコ
+サトウ,シンイチロウ
+イシグロ,ヒデタカ
+シナダ,ヨシコ
+シマダ,ヨシサダ
+イトウ,キョウコ
+スギヤマ,カズナ
+スズキ,コウジ
+セキグチ,ケイコ
+カミヤ,カスミ
+タカノ,ケンイチ
+タカハシ,コウイチロウ
+タカミザワ,リュウキ
+タケウチ,タカキヨ
+タケモト,カズヒコ
+タチバナ,アヤコ
+タナカ,ナオコ
+タナミ,ツネオ
+タノオカ,ミエコ
+チュウ,サヤカ
+ツチヤ,セレナ
+トジ,マサコ
+トヨダ,タクヤ
+ナカジマ,トモコ
+ナガタ,ヨシヒコ
+ナガハラ,ヨシユキ
+ナカムラ,マサカツ
+ニシカワ,イワオ
+ニワ,ユキエ
+ノガミ,ユカ
+ハシズメ,タカシ
+ハセベ,ヨウヘイ
+ハナブサ,オサム
+ハヤシ,マコト
+ハルタニ,タカヒロ
+ヒョウエ,トモヒロ
+ヒラヌマ,カズオ
+フクダ,タカヒロ
+フジオ,タカユキ
+イノウエ,ノリオ
+フルカワ,マサミツ
+フワ,ミオ
+マエカワ,ルミ
+マキタ,カツユキ
+マツウラ,エリコ
+マツダ,タカシ
+マツミヤ,ケンイチ
+マナベ,リョウスケ
+ミナト,ヒロユキ
+ムラカミ,マサミ
+モトヨシ,マコト
+モリタ,ケンジ
+ヤギ,ケイスケ
+ガン,ハナエ
+ヤマグチ,ヤスマサ
+ヤマサキ,ジュン
+ヤマダ,タツジ
+ヤマニシ,ナオキ
+ヨコタ,トモフミ
+ヨシカワ,タクヤ
+ヨシムラ,クニヒコ
+ワキタ,トオル
+ワタナベ,ソウ
+アマコ,ヨシオ
+マノ,アキ
+ウチムラ,チナツ
+サクライ,マミ
+シライ,ユタカ
+テラクラ,ヨウジ
+オカダ,タツシ
+ゴトウ,アキヒロ
+ツバキ,セイイチロウ
+イナガキ,ヒデトシ
+ホリベ,モトジ
+カイ,ヨシエ
+タカダ,トクヒコ
+コタニ,フミヒコ
+イハラ,ケイコ
+アキハラ,シュンスケ
+アベ,ユキ
+アラキ,ヒロシ
+イシイ,ノブヤス
+イシゼキ,ダイスケ
+イタニ,タカシ
+イトウ,シズコ
+イノ,ミキ
+イワザキ,ヒロタカ
+ウエノ,ケンジ
+ウメハラ,ナツコ
+オオエ,ダイスケ
+オオツ,チエ
+オオツボ,マサミツ
+オカダ,タツヤ
+オカモト,ヒサシ
+オクナカ,セイシ
+オバラ,ユリコ
+カジナガ,ユタカ
+カトウ,リョウ
+カトウ,ワタル
+カワイ,コウジ
+カワグチ,ススム
+キシ,レイコ
+キドコロ,アツシ
+クボタ,マユミ
+クワバラ,ユカリ
+コクボ,モモエ
+ゴトウ,ケイコ
+コミヤマ,マサヨシ
+サイトウ,シゲル
+サカモト,チカラ
+ササノ,アカギ
+サナダ,マサユキ
+シマダ,タケシ
+シモフジ,ノブヒコ
+シワ,ケンイチ
+スギハラ,ヒロノブ
+スズキ,マサヤ
+セキ,アツナリ
+タカギ,カヨ
+タカハシ,ヒロナオ
+タキザワ,サトシ
+タケダ,ユウイチロ
+タナカ,セイジ
+タニカワ,ヨシツグ
+タバタ,ケイタロウ
+ツカダ,リエ
+ツボタ,マサヤ
+トウカイリン,ユミ
+トノイ,アキコ
+ナカガワ,ヨシノリ
+ナガノ,リョウタ
+ナカヤマ,トモヒロ
+ニシオカ,シンイチ
+ネギシ,リカ
+ノザキ,ダイスケ
+ハシグチ,トシヒロ
+ハットリ,ユウイチ
+ハマダ,ダイジ
+ヒシヌマ,アツシ
+ヒラタ,マミコ
+フクダ,タカシ
+フジエダ,ヒサカズ
+フジワラ,タクト
+ホリカワ,シュウジ
+マツオ,ヒデノリ
+マツヤマ,ミツテル
+ミヤ,アキラ
+ミヤモト,クニコ
+ムラカミ,タツヒロ
+モリタ,マミ
+ヤグラ,シンジ
+ヤマダ,ミズホ
+ユラ,ケンイチ
+ヨシザワ,ユウコ
+ロク,アキコ
+ワラビ,ヒロノリ
+ミヒラ,リョウヘイ
+ミギタ,マナ
+タケウチ,リョウ
+オノデラ,クニヒロ
+アカガワ,モトコ
+アサヌマ,アヤ
+アライ,ツヨシ
+イザワ,チハル
+イシバシ,トシユキ
+イデ,ナルミ
+イノウエ,マコト
+イマゼキ,クミコ
+イワタ,コウジ
+ウサミ,マリコ
+エノキド,ヨリコ
+オキタ,ユキノリ
+オオツカ,モトイ
+オノ,ヒロシ
+オカダ,カズヒロ
+オククボ,タカシ
+カナイ,ケンイチ
+カミヤ,サチコ
+カワサキ,ヒロキ
+キダ,エイスケ
+キムラ,フミト
+クメウチ,ケンジ
+クワハラ,シノ
+コガ,タクジ
+コバヤシ,アンナ
+サイトウ,ケンイチ
+ササキ,ハナコ
+サトウ,ミキ
+サハラ,タカフミ
+シダ,ヨシヒロ
+シミズ,タツオ
+シモザキ,タツヒコ
+スギウラ,マサノブ
+スト,サトシ
+セト,ケイジ
+タカギ,ノリユキ
+タカハシ,ミカ
+タケダ,ユウジ
+タダ,ヨシタカ
+タニグチ,タカノリ
+タムラ,ケイコ
+ツカハラ,ミズホ
+ツボウチ,アキフミ
+テラダ,ヨシキ
+トミイ,ジュンコ
+ナイトウ,タカオ
+ナガサカ,コウジ
+ナガノ,ヤスオ
+ナカムラ,エイジ
+ニシ,ナオユキ
+ニシダ,リョウヘイタ
+ノグチ,カズヨシ
+ノムラ,カズオ
+ハットリ,サトミ
+ハヤカワ,ユキ
+ハラダ,ミエ
+ヒデシマ,ミキコ
+フカオ,ミユキ
+フクハラ,ユキコ
+フジモト,エリコ
+ホシノ,スミオ
+ホリグチ,ジュンイチ
+マキノ,タケオ
+コミヤ,ノボル
+コバヤシ,ヒロシ
+カミクボ,ケンジ
+マツオ,キヨシ
+ナカチ,キヨシ
+コスギ,ヨシミ
+カツマタ,トシカズ
+カガヤマ,マサハル
+クゼ,ミキオ
+クマダ,マサアキ
+コジョウ,サナエ
+カシクマ,ケンゾウ
+キクチ,ヨシヒサ
+クマノ,マサユキ
+コバヤシ,シュンジ
+コバヤシ,ノブコ
+コニシ,ケンイチ
+コバシガワ,ヒトシ
+カイド,ミホ
+クロキ,ジュン
+カナタニ,リエ
+キタガワ,ナオタカ
+ミズモト,ナルキ
+ミヤオカ,ケンロウ
+ムラタ,ケンジ
+モリタ,ヒデトモ
+ヤナギダ,エリコ
+ヤマザキ,ケン
+ヤマモト,ヤスノリ
+ヨゴ,トモノリ
+ヨネダ,ユミコ
+ワコ,リエ
+アカハネ,ヒロアキ
+アサベ,カヨ
+アライ,ヒデオ
+イケダ,ヨシタカ
+イシド,ユキコ
+イズノ,ミツヒロ
+イトウ,タケシ
+イノウエ,ノブタカ
+イワタ,ヨシヒロ
+ウカイ,ヒサナガ
+エトウ,ヒロキ
+オオサカ,タテキ
+オオニシ,ミツル
+オムラ,トモコ
+オカノ,ヤスフミ
+オガワ,タクヤ
+オザキ,タカユキ
+オトガワ,リョウコ
+カサイ,ナオコ
+カスガ,サナコ
+カトウ,ケンイチロ
+カメタカ,タイスケ
+カワグチ,アユミ
+カワバタ,アユミ
+キタガワ,タケシ
+キムラ,ヨシカズ
+キリサコ,テッペイ
+クラハシ,タカアキ
+ゴウダ,タケヒロ
+コテラ,キミヒロ
+コバヤシ,ナツコ
+コマツバラ,トモヒサ
+サイトウ,テルヒサ
+サカイ,タカユキ
+サクライ,サダヨシ
+サトウ,アキ
+サワサキ,タカシ
+シマノ,トシアキ
+ショウダ,クミ
+シンタニ,ケンタ
+スギヤマ,タカネ
+セキモト,カツアキ
+タカハシ,レイ
+タグチ,ワタル
+タチバナ,ナオト
+タナカ,サチエ
+タマキ,ナオコ
+ツカダ,テツヤ
+ツボクラ,タクヤ
+ドイ,ノブタカ
+トダ,シュンスケ
+ナガサカ,ミチコ
+ナカシマ,アキヒロ
+ナカニシ,ミドリ
+ナカムラ,マユ
+ナカヤマ,タケシ
+ニシノ,ユカ
+ノクオ,カオリ
+バコシ,シンゴ
+ハタノ,ヨウコ
+ハヤシ,サトコ
+ハラダ,アツシ
+ヒライ,ユウスケ
+ヒロエ,アツシ
+フクダ,サヤカ
+フジムラ,アキコ
+フルカワ,ヒロコ
+ホソダ,シュンゴ
+マエカワ,ミワ
+マサトウミ,マイコ
+マツオカ,トモコ
+マツバラ,アキコ
+ミウラ,キヨマサ
+ミゾハタ,チエ
+ミハラ,マサキ
+ミヤムラ,アヤ
+ムラタ,クミコ
+モリ,クミコ
+モロエ,ヒロカズ
+ヤナギサワ,ケイスケ
+ヤマガタ,マコト
+ヤマダ,ノブコ
+ヤマモト,テルヒコ
+ヤマモト,ワタル
+ヨコヤマ,アユミ
+ヨシダ,ナオコ
+ヨシムラ,ダイスケ
+ワダ,イサム
+ワタナベ,ヒロシ
+ササノ,ススム
+コダマ,タカヒコ
+カワシマ,マサナリ
+カワノ,コウイチ
+カミウラ,カズヒデ
+コンノ,ヒデキ
+クヤマ,タケシ
+コイ,セイイチロウ
+カサジマ,ヒロフミ
+カトウ,トモミ
+クボタ,ヒロユキ
+ケガサワ,ヒサシ
+カワギシ,ヒロシ
+カマダ,タカシ
+キクチ,オサム
+カトウ,カズヒコ
+マチダ,カズオ
+ムラサキ,トシオ
+マツモト,ケンイチ
+マサキ,キクオ
+ミズタニ,ナオヒコ
+マルヤマ,セイジ
+ムラシマ,タダオ
+ミズタ,ヨシオ
+モリイ,ギョジ
+ミヤザワ,ヨシオ
+ミズノ,ユリコ
+ムライシ,マモル
+ムラカミ,カズオ
+ムラマツ,アツシ
+ミタク,ケイゾウ
+マエダ,アキオ
+ムライ,トヨミ
+マツダ,サトシ
+ミテラ,ヤスオ
+モリ,ツトム
+マツイ,タカシ
+ミウラ,クニオ
+マツモト,タケシ
+マツザワ,ヨシオ
+ミカミ,ハルキ
+タブチ,ケンジ
+ナカジマ,マサヒロ
+ナイトウ,タケオ
+ニシナ,キミヒト
+ナカガミ,シュウイチ
+ナカハタ,カズトシ
+ニシオカ,ヒロシ
+ニシダ,ヨシロウ
+ノムラ,クニヒコ
+ナカムラ,ヒデユキ
+ナイトウ,カズアキ
+ニッタ,ユタカ
+ナカジマ,カツオ
+ナカセ,トシアキ
+ナカガワ,ノブオ
+ナカジマ,ムネタカ
+ナカムラ,ホズミ
+ナガシマ,ナオジ
+オキ,スミオ
+オクダ,トシオ
+オオハシ,ヒロシ
+オガワ,トオル
+オザワ,ヒロシ
+オオハシ,ユタカ
+オオノ,ミツオ
+オオイシ,ジ
+オオカワ,カオル
+オリガサ,ヤスタケ
+オオタ,ヨシヒコ
+オザキ,ジュンイチ
+オダシマ,タダシ
+オオヒラ,セツジ
+オオヤ,ヒデホ
+オカノ,アキコ
+オグシ,アケミ
+オオイガワ,タカハル
+ナカタニ,シンイチ
+シラオガワ,ライタ
+ナカムラ,トシミツ
+アベ,エミコ
+カワウチ,マリエ
+イトウ,ケンソウ
+コイズミ,タクヤ
+カナオカ,ヒロシ
+アリマ,ヤヨイ
+ウマヤハラ,ヤスミ
+カネマツ,サキコ
+フカヤ,クニアキ
+ゴトウ,ユウイチロウ
+スギモト,クニオ
+クリハラ,トヨヒコ
+オオタ,ユキコ
+スズキ,タケシ
+ヨシダ,カズトシ
+ハットリ,ヒロシ
+カドタ,アキヒロ
+イシザワ,ユズキ
+ミヤモト,ミドリ
+オジ,ヤスヒロ
+アライ,トシアキ
+キタムラ,リカコ
+サイトウ,ヨシヒト
+コバヤシ,キョウゾウ
+ニシカワ,トモミ
+タナカ,カズヒロ
+ズシ,ヤスオ
+アライ,ショウヘイ
+マエデラ,テルユキ
+コンド,ナオ
+ナガホリ,ユキコ
+イワサキ,ミヤビ
+ナカタニ,タカシ
+ナカガキ,ケイコ
+クワハラ,マコト
+スズキ,ユキ
+タダ,エイキ
+ワダ,ナオコ
+サノ,ヒロシ
+トキタ,ナツコ
+コサイ,ユウコ
+セゴエ,サトコ
+ナカイ,アツミ
+ハラダ,トシマサ
+キノシタ,ミチオ
+ミヤザキ,カズミ
+タキザワ,マサアキ
+サトウ,コウイチロウ
+ミズシマ,タケル
+タニグチ,ハルミ
+マツシタ,タカシ
+スギウラ,ケンタロウ
+タニガキ,セイコ
+サトウ,シゲオ
+ヤマカワ,サダハル
+スズキ,シゲヒロ
+トクダ,マンナリ
+イワマ,ノブアキ
+オオハラ,ユキナオ
+シオヌマ,ヒデトシ
+スズキ,アキヨシ
+スズキ,ヨシコ
+スズキ,ノブアキ
+セキ,オサム
+スズキ,ツトム
+スガオ,テツジ
+スズキ,ケイタロウ
+サドトモ,アキラ
+シマ,ミノル
+サイトウ,オサム
+スズキ,マサヒロ
+サイトウ,ユキオ
+ソマ,オサム
+サトウ,ケンジ
+シロサキ,ヨウイチ
+スズキ,ヨウジロウ
+スズキ,テツロウ
+スギモト,マサオ
+サカイ,シンイチ
+スズキ,カズユキ
+サトウ,タツジ
+シオタ,トヨオ
+ソマ,カンジ
+シュドウ,タカオ
+サクライ,トシオ
+ソウヤ,セイジ
+サワムラ,ナルミ
+セオ,ユウジ
+シミズ,トシオ
+サキモリ,イワオ
+サイトウ,ヒサオ
+シミズ,エイゾウ
+シオノヤ,キヨカズ
+タカギ,ヒデオ
+タキイシ,リョウジ
+トバ,マサシ
+タグチ,マサオ
+タカノ,ムネオ
+タカヤス,トヨミ
+タナカ,シゲル
+タカハマ,ヨシアキ
+ツチダ,マモル
+タカオ,マスミ
+タニグチ,ミチアキ
+ツジカワ,ユウイチ
+ヨシザワ,マサハル
+タナカ,ジュンゾウ
+タマル,マサミ
+タカギ,キョウコ
+ツネヒロ,ジュンジ
+タカハシ,トシアキ
+アサイ,ユウジ
+タカサキ,アキラ
+タカナミ,マサル
+トモナガ,ツネカズ
+タカギ,イツオ
+ツカモト,アキオ
+テラウチ,サダユキ
+タノオカ,ススム
+ウスギ,カズヒロ
+ウツキ,テツオ
+ウチダ,ケンスケ
+ウメムラ,トシオ
+ウノ,トシヒデ
+ワタナベ,ヒサユキ
+ワタナベ,カツナリ
+ワタナベ,コンゴウ
+ワダ,タケミツ
+オオタ,マコト
+ナカジマ,ケイイチ
+フルサワ,ツヨシ
+カシワギ,コ
+ハタ,ショウスケ
+ウシジマ,マサカズ
+マツイ,アキラ
+カワナ,ダイジロウ
+ミヤモト,タカヒサ
+ヨシダ,スミユキ
+オオカワラ,ゲンタロウ
+スヤマ,クンロウ
+スズキ,ユウジ
+クニギタ,ヨウイチ
+キド,マサシ
+イシイ,チカトシ
+ウエダ,タカシ
+イチカワ,カズオ
+オサジマ,トシヤ
+ウエムラ,トシヒデ
+キムラ,トキチ
+ヨコヤマ,ヒサオ
+イトウ,マサユキ
+ミヤベ,カズト
+タマイ,カズミチ
+コリ,コウイチロウ
+イワサワ,マナブ
+ヨシヤス,ゴウ
+マタキ,シンゴ
+ヤマモリ,カツオ
+タカタ,ノリオ
+スドウ,ショウコ
+ウエムラ,ユタカ
+スズキ,ミノル
+スズキ,アキラ
+アラキ,セキネ
+カダ,アキラ
+ニシヨリ,ミノル
+イナバ,カズト
+ホリイ,ツネオ
+スドウ,マサヒコ
+シロヤマ,コ
+テライ,アキコ
+マツモト,ナオタケ
+イトウ,セイジ
+ソトヤマ,カツノリ
+ヒラオカ,ヤスシ
+ヒラキ,タモツ
+タナベ,ユウジロウ
+タメチカ,タテオ
+ヨネダ,トシヒデ
+エジマ,トモノリ
+タカハシ,ミサコ
+テラオ,ヒロヒサ
+ホンダ,ユミ
+オチリ,ヤスヒロ
+オオイ,ナオミ
+カワイ,ミノル
+ムラカミ,ミヨシ
+ナカジマ,ヒトシ
+イシハラ,フミタカ
+アカホリ,ミツノブ
+ヤスダ,アキラ
+ヨコセ,トモシゲ
+ヨシカワ,トシロウ
+ヤマグチ,ミノル
+ヨシムラ,マサヒコ
+ヨネダ,カオル
+ヤマシタ,ショウゾウ
+ヤマダ,エイゾウ
+ヤマザキ,ススム
+ヨシダ,ヒロシ
+ヤマタニ,ヒロツグ
+ヤマネ,ヨネタカ
+ヤマカワ,ジュンイチ
+ヨシダ,タカオ
+ヤマサキ,ノリオ
+ヤマモト,テルオ
+ヨコタ,エイイチ
+ヤマダ,カツヒロ
+ヨシノ,ダイスケ
+ヨシダ,ムツオ
+ノムラ,マサタカ
+ヤマダ,サトル
+イシカワ,チヨタケ
+スズキ,ヒロフミ
+マスダ,ケンジ
+イマイ,マサゾウ
+キュウソジン,ケンスケ
+ヤマダ,アキラ
+ヒラノ,タイキ
+ナカニシ,カズシゲ
+タツタ,シゲル
+ミムラ,マサオ
+ヒラマツ,サダオ
+トミタ,マサヒロ
+コバヤシ,シンイチロウ
+タケナカ,マサヒロ
+アマノ,ノリコ
+イシイ,キョウコ
+イデ,サキコ
+オカダ,リエコ
+ヒライシ,マリ
+ヨシモト,ヒロコ
+カワシマ,マユミ
+トバタ,ノリカズ
+タナカ,ヒカル
+アンベ,マナミ
+タカハシ,マサヒロ
+トミヤマ,ヨシアキ
+タカヤマ,トシユキ
+ミヤシタ,ミノル
+ハシモト,ミキオ
+トガメ,ミワコ
+ノグチ,カズマサ
+ノグチ,アキラ
+ソウミヤ,ケンジ
+キムラ,ヨウジ
+カトウ,トモユキ
+スズキ,ケンジ
+オカダ,ヒロミ
+ヤノ,ジュンコ
+オノサト,ハン
+マツダ,ヨシアキ
+キムラ,タカシ
+タムラ,トモノリ
+カトウ,トシヤ
+イヌマル,ヒロジ
+オノデラ,ナオコ
+スズキ,チハル
+タニカワ,ホズエ
+サクマ,シマ
+イマムラ,ルリコ
+エイドメ,ユキ
+ヨシイ,タダヒロ
+オオタキ,ユミコ
+クスモト,イサオ
+ミヤシタ,ユキオ
+マチイ,カズヒロ
+ハヤシダ,タカトシ
+ハルハラ,タカシ
+テラモト,ユウジロウ
+マツモリ,カズオ
+ワタナベ,コウジ
+カネコ,ヤスシ
+オリガサ,マツノリ
+ツカモト,ヒロミチ
+ヨシダ,ミナ
+ニシダ,ヒサエ
+フルカワ,リエ
+ムラカミ,タカオ
+オオバヤシ,コウキチ
+サトウ,ケイコ
+ヤマ,フミコ
+ミヤタ,タカテル
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt
new file mode 100644
index 0000000..4945ad2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Chinese.txt
@@ -0,0 +1,10902 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+虹如
+丁一賢
+丁川偉
+丁心嵐
+丁弘光
+丁任法
+丁志宏
+丁幸姬
+丁俊夫
+丁建文
+丁映純
+丁羿文
+丁哲
+丁偉民
+丁國梅
+丁淑玲
+丁甦南
+丁毓彥
+丁雍哲
+丁綺慧
+丁慧嵐
+丁璟楓
+丁譽琳
+丁鋐鎰
+卜正倫
+于弋翔
+于秀美
+于秉弘
+于清華
+于殿聖
+山傑
+尹寸欣
+尹居才
+尹振威
+尹瑞豐
+尹曉恩
+仇家琪
+孔守中
+孔智杰
+孔繁霖
+尤心瑜
+尤吟文
+尤良
+尤明仲
+尤俊響
+尤星策
+尤偉仕
+尤淨纓
+尤欽樂
+尤盟貴
+尤寬宏
+尤韻琇
+尤蒔萱
+文志忠
+文真花
+文儀詠
+方士銘
+方天中
+方文鋒
+方永清
+方汝育
+方孝君
+方志明
+方秀敏
+方佳俊
+方幸宜
+方怡潔
+方長揚
+方俊雄
+方奕斌
+方建智
+方彥程
+方映芬
+方柏欽
+方秋錦
+方若珊
+方重凱
+方晉德
+方健剛
+方彩宜
+方淑芬
+方淑儒
+方凱玲
+方景弘
+方策民
+方雅琪
+方愛珍
+方瑞遠
+方裕欽
+方嘉興
+方翠鴻
+方慧琴
+方靜宜
+方瓊儀
+方麗雅
+方鐘鋒
+方菀萍
+毛文勇
+毛佩娟
+毛彥喬
+毛淑芬
+毛漢梅
+水祥苓
+牛貴賢
+王一珍
+王乃俐
+王力平
+王上維
+王士忠
+王士榮
+王士豪
+王大昌
+王子成
+王子英
+王子熙
+王小芬
+王中平
+王中憓
+王尹聖
+王仁君
+王仁宗
+王仁舜
+王元助
+王元興
+王友志
+王天文
+王少文
+王心忠
+王心怡
+王心智
+王文平
+王文君
+王文志
+王文杰
+王文郁
+王文琪
+王文瑤
+王文鴻
+王方怡
+王月婷
+王世宇
+王世明
+王世傑
+王世廣
+王丕銓
+王可欣
+王巧瑩
+王弘毅
+王正威
+王正達
+王永仁
+王永昇
+王永誠
+王玉文
+王玉珠
+王玉雲
+王生勳
+王立梅
+王立瑋
+王仲琦
+王光麃
+王吉佳
+王如玉
+王宇清
+王安凱
+王旭全
+王有權
+王自強
+王佐輔
+王伯逸
+王利生
+王君瑞
+王妙紅
+王孝君
+王宏仁
+王宏哲
+王宏嘉
+王序綸
+王志仁
+王志文
+王志弘
+王志呈
+王志忠
+王志峰
+王志偉
+王志清
+王志欽
+王志誠
+王志豪
+王志銘
+王杏如
+王秀云
+王秀芬
+王秀珠
+王秀雯
+王秀椿
+王育德
+王谷神
+王亞志
+王依韻
+王佳珍
+王佳琪
+王佩
+王佩音
+王佩詩
+王坤賢
+王孟謙
+王宗棋
+王宜彥
+王岡陵
+王念慈
+王怡仁
+王怡文
+王怡方
+王怡珍
+王怡清
+王怡婷
+王怡晴
+王怡雅
+王怡蘋
+王承舜
+王明仁
+王明珊
+王明富
+王昀珩
+王欣之
+王欣慧
+王泓翔
+王治邦
+王玫樺
+王芳慧
+王邵郁
+王金華
+王雨湘
+王亭鈞
+王信仁
+王信泰
+王信富
+王信裕
+王俊仁
+王俊立
+王俊彥
+王俊清
+王俊傑
+王俊凱
+王俊凱
+王俊富
+王俊欽
+王俊超
+王俊道
+王俊龍
+王俞文
+王冠倫
+王冠然
+王則勝
+王勁凌
+王品淇
+王奕君
+王奕鈞
+王姿今
+王姿萍
+王威能
+王宣卿
+王建山
+王建文
+王建政
+王建凱
+王建欽
+王建雄
+王建斌
+王彥能
+王彥智
+王律之
+王思捷
+王思潔
+王政治
+王政權
+王昭人
+王昭淑
+王昭懿
+王星皓
+王昱凱
+王昱蘋
+王柏欣
+王柏堯
+王柏鈞
+王派軒
+王為蒨
+王玲英
+王盈心
+王盈傑
+王盈雅
+王祈鈞
+王秋惠
+王紀
+王美玉
+王美玲
+王美淑
+王美惠
+王美雯
+王美懿
+王致棠
+王若筑
+王英文
+王英蓉
+王衍易
+王貞懿
+王郁欣
+王郁婷
+王郁菁
+王郁珺
+王韋翔
+王修蘭
+王哲聰
+王家偉
+王家瑜
+王展瑋
+王悅如
+王振宇
+王振浩
+王時蔚
+王桂岑
+王海天
+王浩倫
+王珮倫
+王珮璇
+王素卿
+王純美
+王茹馨
+王偉民
+王偉州
+王偉軍
+王偉德
+王健民
+王健勳
+王國
+王國彥
+王國隆
+王國龍
+王執信
+王培樺
+王婉瑜
+王崇明
+王崑龍
+王彩霞
+王惇慧
+王啟宗
+王啟樵
+王敏貞
+王敏銓
+王晨曄
+王梅蘭
+王淳慧
+王清鴻
+王淑怡
+王淑冠
+王淑眉
+王淑娟
+王淑媛
+王淑雯
+王淑慧
+王淑韻
+王淨瑩
+王祥宇
+王祥霖
+王紹真
+王莉汶
+王莉雯
+王雪如
+王傑立
+王凱弘
+王凱怡
+王凱蒂
+王勝弘
+王勝雄
+王博文
+王博修
+王堯弘
+王婷儀
+王富昌
+王復輝
+王惠君
+王惠玲
+王惠敏
+王惠慧
+王敦正
+王晴姿
+王景元
+王景泉
+王智弘
+王智立
+王智益
+王智鳴
+王智龍
+王朝永
+王朝鍵
+王欽帝
+王湘雲
+王琪
+王琦枚
+王皓正
+王紫雯
+王翔寧
+王舒瑜
+王舜生
+王菁蘭
+王詠慧
+王貴龍
+王逸修
+王進鴻
+王閔韋
+王雅伶
+王雅姿
+王雅貞
+王雅惠
+王雅雯
+王雅儀
+王雅慧
+王雯
+王雲生
+王順鴻
+王勤善
+王意惠
+王慈慶
+王愛嘉
+王敬翔
+王新慧
+王榆富
+王毓菁
+王毓煇
+王照興
+王瑞吟
+王瑞烽
+王瑞雲
+王瑞頤
+王瑞薌
+王盟仁
+王稜鈞
+王聖
+王聖尤
+王聖淳
+王聖棋
+王聖維
+王聖瑋
+王裕正
+王裕智
+王詩郁
+王詩婷
+王詩雅
+王詩馨
+王道仁
+王鉅翔
+王靖雯
+王鼎允
+王嘉君
+王嘉郁
+王嘉琪
+王嘉農
+王嘉慧
+王嘉興
+王嘉齡
+王彰懋
+王榮發
+王漢祥
+王睿君
+王碩慶
+王福祥
+王維如
+王維雯
+王維燦
+王翠華
+王蒼龍
+王豪傑
+王銘梅
+王銘鴻
+王鳳宜
+王儀穎
+王德皓
+王慶堂
+王慧君
+王慧英
+王慧凱
+王慧雯
+王慧靜
+王標欽
+王瑾瑜
+王輝銘
+王儒隆
+王憲盟
+王曉音
+王曉雯
+王曉瑋
+王燕強
+王興邦
+王蕙容
+王錫祿
+王錦慧
+王靜怡
+王靜琪
+王靜慧
+王爵暐
+王臆鈴
+王薇媛
+王謙維
+王鴻志
+王鴻鈞
+王禮謙
+王寵惠
+王瀚基
+王瓊珮
+王瓊瑤
+王繪嵐
+王證雄
+王韻淑
+王鵬
+王麒鈞
+王麗芬
+王麗淑
+王麗琦
+王麗雯
+王麓斯
+王寶龍
+王繼堯
+王耀暉
+王耀慶
+王耀鐸
+王鐘銘
+王馨敏
+王馨苹
+王齡梓
+王儷穎
+王櫻娟
+王躍霖
+王顯卉
+王芊雯
+王姵雯
+王浟美
+王琇姿
+王翊螢
+王棨德
+王琮瑋
+王琡雯
+王嫆棻
+王瑋鈴
+王筱婷
+王筱萱
+王鈺欣
+王鈺植
+王蓁儀
+王薏雯
+王嬿淑
+世潓靜
+丘真綺
+冉兆珍
+包志文
+包宮維
+古一真
+古月娥
+古玉鳳
+古秀鈴
+古佩玉
+古承弘
+古明晟
+古俊綱
+古英山
+古桂菊
+古惟銘
+古莉霜
+古智偉
+古雲仁
+古詩儀
+古學涵
+古俶綺
+司順安
+史先鴻
+史明原
+史國福
+史聖鴻
+史曜彰
+左宗元
+左蓌
+甘永裕
+甘孟龍
+甘政弘
+甘惠華
+甘霈霖
+田世賢
+田兆琪
+田沐恩
+田佩灝
+田怡
+田芳茹
+田英志
+田珮促
+田淑君
+田欽文
+田嘉玲
+田曉鈞
+田璧菀
+申志斌
+申富鑫
+白大尹
+白全成
+白岑怡
+白佳渝
+白宜錚
+白欣松
+白玲慈
+白振源
+白耿行
+白淑瑜
+白喜文
+白舜元
+白煌麒
+白榮修
+白靜如
+白麗娜
+石乃如
+石世名
+石玉鳳
+石旭生
+石育玟
+石佳蓉
+石宗仁
+石明周
+石芳珊
+石美玲
+石峻平
+石純綺
+石彩慧
+石傑宇
+石朝安
+石雅惠
+石慶和
+石錦航
+石馥瑄
+石瑋靜
+伍世揚
+伍秀蓉
+伍建文
+伍家誼
+伍健鵬
+伍碧玲
+任才俊
+任君敏
+任俊儒
+任純慧
+任新蘭
+任筱清
+危明康
+向西陽
+向德容
+安志偉
+成丹玲
+曲昌隆
+朱乙真
+朱心怡
+朱文碧
+朱世鈞
+朱正文
+朱玉汶
+朱亦丹
+朱百晟
+朱妍如
+朱希振
+朱志洋
+朱沛怡
+朱育佑
+朱育瑩
+朱佳琪
+朱宗蔚
+朱念英
+朱怡臻
+朱東應
+朱秉慧
+朱邱明
+朱俊祥
+朱俊龍
+朱奎州
+朱建泰
+朱彥儒
+朱政哲
+朱柏蒼
+朱珍慧
+朱秋慧
+朱若梅
+朱郁庭
+朱原宏
+朱家正
+朱家欣
+朱家慧
+朱容練
+朱峰誼
+朱時彥
+朱書賢
+朱殷廷
+朱珮儀
+朱祐呈
+朱純瑩
+朱偉傑
+朱健誠
+朱培萱
+朱康銘
+朱敏道
+朱淑惠
+朱陳啟源
+朱寓理
+朱朝麟
+朱詠聯
+朱雅鈴
+朱嗣芬
+朱瑞勇
+朱達明
+朱榮宏
+朱福山
+朱鳳薇
+朱慧真
+朱輝耀
+朱曉晴
+朱靜文
+朱璿尹
+朱麗婷
+朱芮宜
+朱琬蓁
+次蘭英
+江中健
+江天授
+江文松
+江文瓊
+江世華
+江正傑
+江玉卉
+江立峰
+江吉祥
+江成斌
+江呈陽
+江志宏
+江志隆
+江秀玲
+江育霆
+江佳芳
+江佳純
+江佳霖
+江佩玲
+江佩縈
+江協勇
+江孟芝
+江孟澤
+江宗哲
+江宜芳
+江宜樺
+江岩達
+江忠遠
+江怡萱
+江怡禛
+江昌鴻
+江明松
+江明書
+江明璋
+江明藝
+江東懋
+江欣容
+江玩萩
+江芝敏
+江長壽
+江信東
+江俊明
+江俊億
+江俊興
+江品儀
+江威德
+江建銘
+江彥輝
+江恬
+江政儒
+江昭賢
+江柏葦
+江玲慧
+江紀明
+江美慧
+江英信
+江衍龍
+江風遠
+江家銘
+江振宇
+江書瑩
+江珮宙
+江純玫
+江健成
+江國慶
+江寅甫
+江啟仲
+江條均
+江淑貞
+江盛龍
+江凱潔
+江惠華
+江智維
+江逸安
+江雅文
+江雅惠
+江傳江
+江瑞祥
+江裕國
+江嘉倫
+江榕櫻
+江翠芳
+江寬慈
+江慧芳
+江慕屏
+江憶雯
+江穎明
+江錦輝
+江蕾
+江豐良
+江麗娟
+江劭倫
+江媞
+江檉皇
+池泰宏
+牟昕
+艾青蓉
+何大新
+何仁田
+何天恩
+何文文
+何文萱
+何世雄
+何永琳
+何玉潔
+何亙彬
+何光櫺
+何旭平
+何君萍
+何志浩
+何沛熙
+何育杰
+何享蓉
+何佳南
+何佳真
+何佳融
+何佩芝
+何佩純
+何其澤
+何姍蓉
+何孟賢
+何季秦
+何宗彬
+何宗熹
+何宗禧
+何宜倩
+何宜璇
+何岳珈
+何怡君
+何承仲
+何易展
+何明宗
+何明書
+何明穎
+何昇儒
+何松瑤
+何欣軒
+何秉欣
+何芷瑄
+何雨雯
+何信宗
+何俊廷
+何俊達
+何俊賢
+何冠霖
+何威德
+何建樂
+何彥駒
+何思穎
+何政翰
+何昭賢
+何炳賢
+何秋萱
+何美玲
+何若瑜
+何香葉
+何家菁
+何峻杰
+何振維
+何浚銘
+何素君
+何健維
+何國晟
+何崇維
+何敏菁
+何清龍
+何淑婷
+何涵
+何勝合
+何惠君
+何惠鈺
+何舒嵐
+何逸然
+何雅琪
+何意瑩
+何瑞美
+何萱璇
+何嘉展
+何榮文
+何維耕
+何銘宏
+何慶興
+何慧儀
+何學厚
+何曉盈
+何燕屏
+何錦題
+何靜儀
+何織
+何麗君
+何旻霜
+何翊綺
+余子銘
+余心農
+余文裕
+余弘偉
+余吉祥
+余伶
+余志龍
+余迅
+余佳音
+余佳興
+余佩娟
+余坪芳
+余孟霏
+余宗儒
+余宛儒
+余忠燈
+余昌翰
+余明娟
+余明澤
+余東曉
+余法昌
+余金典
+余信偉
+余俊淵
+余俊儒
+余勁毅
+余帝慶
+余彥霖
+余政隆
+余星柔
+余盈鋒
+余若帆
+余凌昌
+余家瑩
+余泰男
+余素蘭
+余國安
+余婉萍
+余晨華
+余盛欽
+余惠文
+余智傑
+余雅淑
+余慈宴
+余瑞萍
+余嘉峰
+余福浩
+余齊威
+余憲宗
+余諧
+余謝輝
+余麗琴
+余琬瑜
+利秀蘭
+利德絃
+吳乃元
+吳千慧
+吳大維
+吳子豪
+吳中宏
+吳仁佑
+吳仁貴
+吳元平
+吳元嫈
+吳少鈞
+吳心惠
+吳文玉
+吳文怡
+吳文益
+吳文傑
+吳文發
+吳文鈴
+吳文毅
+吳文斌
+吳火山
+吳世偉
+吳世達
+吳仕強
+吳仟一
+吳平和
+吳必勝
+吳正奇
+吳正華
+吳永昌
+吳永裕
+吳玉吟
+吳玉茹
+吳玉景
+吳玉蓉
+吳立民
+吳立勤
+吳伊蘋
+吳仲泂
+吳兆文
+吳吉龍
+吳如楦
+吳安邦
+吳旭泰
+吳至仁
+吳行中
+吳伶麗
+吳君育
+吳妙倫
+吳宏仁
+吳宏基
+吳希祖
+吳志宏
+吳志恆
+吳志偉
+吳志漢
+吳志龍
+吳杏旋
+吳沛晃
+吳汶汶
+吳秀玲
+吳秀紋
+吳秀鵑
+吳育宗
+吳育碩
+吳育霖
+吳亞欣
+吳依妮
+吳依蓓
+吳佳和
+吳佳芳
+吳佳南
+吳佳玲
+吳佳玲
+吳佳倩
+吳佳容
+吳佳真
+吳佳惠
+吳佳蓉
+吳佳憬
+吳佳樺
+吳佳穎
+吳佳蕙
+吳佳靜
+吳佳鴻
+吳佩君
+吳佩芳
+吳佩城
+吳佩珊
+吳佩玲
+吳佩娥
+吳佩純
+吳佩蓉
+吳佩儒
+吳佩諭
+吳佩蓁
+吳侑庭
+吳其霖
+吳函蓁
+吳叔鎮
+吳坤祐
+吳坤鴻
+吳奇哲
+吳奇龍
+吳孟宗
+吳孟芬
+吳孟貞
+吳孟娟
+吳孟茹
+吳孟蓉
+吳孟憲
+吳孟錫
+吳孟蕎
+吳季瑾
+吳宗岱
+吳宗祈
+吳宗桓
+吳宗隆
+吳宗儒
+吳宗憲
+吳宗翰
+吳宗興
+吳宗龍
+吳定疆
+吳宜芳
+吳宜貞
+吳宜祐
+吳宜穆
+吳宜嬪
+吳宛怡
+吳宛縈
+吳尚倍
+吳尚儒
+吳岡儒
+吳岱霖
+吳岳桐
+吳幸枝
+吳幸真
+吳延晃
+吳忠政
+吳忠霖
+吳怡君
+吳怡珊
+吳怡萍
+吳怡慶
+吳怡瑩
+吳怡憲
+吳怡靜
+吳怡嫺
+吳承哲
+吳承璋
+吳招
+吳易遜
+吳昌庭
+吳昆
+吳昆璋
+吳明
+吳明忠
+吳明芳
+吳明珍
+吳明哲
+吳明恭
+吳明軒
+吳明達
+吳明璋
+吳明勳
+吳明曄
+吳明龍
+吳明顏
+吳昕姿
+吳昇橋
+吳東和
+吳東耿
+吳東霖
+吳松沛
+吳欣佩
+吳欣怡
+吳欣倫
+吳欣碩
+吳欣儒
+吳欣鴻
+吳泓玳
+吳治英
+吳玫姍
+吳直耕
+吳秉倫
+吳秉勳
+吳秉駿
+吳芳青
+吳芳瑜
+吳芝緯
+吳采芳
+吳金玉
+吳金曆
+吳長柏
+吳雨哲
+吳青育
+吳青峰
+吳青環
+吳亭誼
+吳信幸
+吳信寬
+吳信輝
+吳侯璋
+吳俊宏
+吳俊奇
+吳俊杰
+吳俊傑
+吳俊達
+吳俊儀
+吳俊德
+吳俊毅
+吳俊緯
+吳俊賢
+吳俊鋒
+吳俊諺
+吳俊叡
+吳俞瑩
+吳冠群
+吳冠賢
+吳冠翬
+吳勁龍
+吳品蓉
+吳奕成
+吳奕羲
+吳姿儀
+吳姿樺
+吳威芳
+吳宣鋒
+吳建生
+吳建男
+吳建芝
+吳建達
+吳建德
+吳建賢
+吳建勳
+吳建旻
+吳彥慶
+吳律銘
+吳思萱
+吳思瑩
+吳思穎
+吳政
+吳政旺
+吳政原
+吳政彬
+吳政德
+吳政勳
+吳政穎
+吳政霖
+吳春生
+吳春緩
+吳昭蓉
+吳昭毅
+吳昭龍
+吳昱宏
+吳柄德
+吳柏青
+吳柏儀
+吳柏毅
+吳柏穎
+吳炫宗
+吳炳嶢
+吳玲媛
+吳皇欣
+吳盈潔
+吳祉龍
+吳秋美
+吳秋慧
+吳紀君
+吳美妮
+吳美玲
+吳美惠
+吳美禎
+吳美慧
+吳美螢
+吳羿諠
+吳致銘
+吳若華
+吳英宏
+吳英鴻
+吳貞宜
+吳貞瑩
+吳郁芳
+吳重毅
+吳飛龍
+吳倩
+吳原宇
+吳哲雯
+吳哲權
+吳家明
+吳家琪
+吳家榮
+吳家豪
+吳家慧
+吳容瑩
+吳庭獄
+吳振成
+吳振豪
+吳挺鋒
+吳晏平
+吳書榮
+吳桂箐
+吳泰昌
+吳海芬
+吳珮君
+吳珮慈
+吳珮禎
+吳益芳
+吳素芬
+吳純欣
+吳軒軒
+吳偉倫
+吳偉誠
+吳健民
+吳健鑫
+吳國偉
+吳國獅
+吳國熙
+吳國銘
+吳堅瑋
+吳培賢
+吳婉婷
+吳婉歆
+吳崇銘
+吳彩邑
+吳悠
+吳啟揚
+吳啟斌
+吳敏真
+吳敏鉅
+吳梓逢
+吳添鋒
+吳淑如
+吳淑芬
+吳淑卿
+吳淑敏
+吳淑華
+吳淑鳳
+吳涵宜
+吳祥維
+吳紹華
+吳莉婷
+吳雪妮
+吳竟芳
+吳凱雯
+吳勝祺
+吳喬森
+吳復興
+吳惠君
+吳惠彩
+吳惠雯
+吳斯燻
+吳智東
+吳智豪
+吳棟隆
+吳犀靈
+吳善銘
+吳菁菁
+吳詠宸
+吳逸民
+吳逸群
+吳鈞婷
+吳雅坤
+吳雅郁
+吳雅嵐
+吳雅萍
+吳雅雯
+吳雅綺
+吳雲驥
+吳圓朗
+吳敬琪
+吳毓真
+吳源章
+吳瑞
+吳瑞哲
+吳瑞欽
+吳瑞慶
+吳稚霆
+吳聖威
+吳詩婷
+吳誠昌
+吳鼎偉
+吳嘉信
+吳嘉娟
+吳嘉勝
+吳嘉榮
+吳嘉蕙
+吳寧瑄
+吳榮泰
+吳漢銘
+吳碧俐
+吳福量
+吳維倩
+吳維裕
+吳肇騰
+吳遠誠
+吳銘振
+吳銓友
+吳鳳蘭
+吳德元
+吳慶文
+吳慧君
+吳慧玲
+吳慧貞
+吳慧敏
+吳慧雯
+吳潔珊
+吳賜忠
+吳憲中
+吳憶屏
+吳曉青
+吳曉純
+吳曉菁
+吳曉薇
+吳燕芬
+吳穎軒
+吳蕙如
+吳蕙紋
+吳遵先
+吳錦佳
+吳錦鎰
+吳靜宜
+吳靜怡
+吳靜芳
+吳靜茹
+吳靜雯
+吳龍寶
+吳總成
+吳聲源
+吳邁
+吳鴻昌
+吳鴻森
+吳曜臣
+吳豐吉
+吳鎮利
+吳瓊玉
+吳韻卉
+吳麗春
+吳麗婷
+吳獻良
+吳馨怡
+吳懿婷
+吳顯宗
+吳佼佼
+吳旻儒
+吳玠蓉
+吳昶葳
+吳淩安
+吳琮傑
+吳瑋琳
+吳筱珈
+吳璁
+吳韞德
+呂子豪
+呂仁團
+呂友婷
+呂文專
+呂文鈴
+呂世豪
+呂正安
+呂玉秋
+呂立偉
+呂如英
+呂自達
+呂志宏
+呂志鋒
+呂育芳
+呂育瑋
+呂佳宜
+呂佳容
+呂佳樺
+呂佩姍
+呂佩純
+呂其霖
+呂姍姍
+呂季芳
+呂宗銘
+呂宜芳
+呂宜晏
+呂宜霖
+呂居勳
+呂忠育
+呂怡慧
+呂旺騏
+呂明
+呂明泰
+呂明龍
+呂杰緯
+呂欣穎
+呂芳俊
+呂金彥
+呂長馨
+呂保岸
+呂俊儀
+呂俐
+呂南畿
+呂威德
+呂建彥
+呂建鋒
+呂彥融
+呂政彥
+呂政諭
+呂昭儀
+呂柏宏
+呂皇其
+呂秋雲
+呂美惠
+呂美齡
+呂英瑋
+呂韋箴
+呂哲明
+呂庭維
+呂格豪
+呂祐吉
+呂偉欽
+呂國培
+呂婉茹
+呂梅音
+呂淑卿
+呂淑禎
+呂理霖
+呂紹榮
+呂雪瑜
+呂惠菁
+呂智傑
+呂詠真
+呂雅玲
+呂雅琪
+呂雯歆
+呂滄堯
+呂聖章
+呂嘉元
+呂嘉豐
+呂維玲
+呂銘智
+呂慧惠
+呂學君
+呂學智
+呂學叡
+呂燕林
+呂錦順
+呂靜蓉
+呂鴻麟
+呂麗娟
+呂廳嚴
+呂翊民
+宋大辰
+宋之揆
+宋心慧
+宋世文
+宋玉婷
+宋伯瑜
+宋沛勇
+宋育瑋
+宋佩珊
+宋孟瑛
+宋幸真
+宋昌霖
+宋東威
+宋秉萱
+宋俊洋
+宋奕儒
+宋建欣
+宋政隆
+宋禹瑩
+宋致遠
+宋家霖
+宋舫臣
+宋培元
+宋敏華
+宋喬玉
+宋朝斌
+宋雲明
+宋嘉仁
+宋碧琳
+宋慧潔
+宋燕儷
+宋竄
+宋旻真
+巫子懿
+巫戎怡
+巫佩璇
+巫宜學
+巫明翰
+巫芷瑋
+巫冠誼
+巫柏毅
+巫振嘉
+巫清文
+巫善福
+巫嘉興
+巫曉芬
+巫晟逸
+李乃文
+李士享
+李子允
+李小芬
+李中任
+李中慧
+李仁修
+李仁凱
+李今黛
+李元圃
+李元裕
+李友淳
+李天樺
+李心仁
+李心嵐
+李文
+李文吉
+李文志
+李文政
+李文莉
+李文惠
+李文琦
+李文意
+李文達
+李文賢
+李文斌
+李月星
+李世安
+李世偉
+李世剴
+李世寬
+李以新
+李可立
+李巧琳
+李弘昊
+李正元
+李正彥
+李正勝
+李正豪
+李永昌
+李永欽
+李永鴻
+李玉佩
+李玉卿
+李玉琳
+李玉鈴
+李立仁
+李立強
+李亦晴
+李仲玄
+李光
+李光祥
+李光倢
+李兆斌
+李吉敏
+李名倫
+李如珍
+李宇弘
+李守維
+李安琳
+李成漢
+李有欽
+李羽
+李至章
+李佐寧
+李伯毅
+李君彥
+李含仁
+李妍瑩
+李宏文
+李宏洲
+李廷偉
+李志成
+李志明
+李志峰
+李志偉
+李志章
+李志銘
+李志鵬
+李沛杰
+李汪盛
+李秀年
+李秀玲
+李秀卿
+李秀華
+李秀蘅
+李育枝
+李育庭
+李育群
+李育瑩
+李育融
+李見汶
+李亞倫
+李京樺
+李依純
+李依恂
+李佳汶
+李佳明
+李佳芳
+李佳芬
+李佳玲
+李佳玲
+李佳珍
+李佳倩
+李佳家
+李佳晃
+李佳真
+李佳訓
+李佳雯
+李佳蓉
+李佳慶
+李佳儒
+李佳樺
+李佳穎
+李佳臻
+李佳霖
+李佳霏
+李佳鍵
+李佳蓁
+李侃洋
+李佩佩
+李佩芝
+李佩姿
+李佩珊
+李佩玲
+李佩倩
+李佩真
+李佩陵
+李佩儀
+李佩曄
+李佩諭
+李佩嬬
+李侑宬
+李其澧
+李函芬
+李卓道
+李和昌
+李坤明
+李坤源
+李坤霖
+李奇展
+李奇翰
+李孟坤
+李孟珊
+李孟哲
+李孟軒
+李孟儒
+李孟穎
+李孟燦
+李孟璁
+李季華
+李宗坤
+李宗倫
+李宗恩
+李宗義
+李宗賢
+李宗憲
+李宗穎
+李宗翰
+李宗霖
+李宗鴻
+李定遠
+李宜明
+李宜芳
+李宜洲
+李宜玲
+李宜哲
+李宜峻
+李宜純
+李宜潔
+李宜樺
+李宜霖
+李宜韓
+李宜圜
+李宛玲
+李宛萍
+李宛靜
+李尚賢
+李岩暉
+李岱蓁
+李岳峰
+李岳樺
+李岳鴻
+李幸娟
+李幸錠
+李忠和
+李忠義
+李忠穎
+李念蒨
+李怡昌
+李怡玲
+李怡萱
+李怡寬
+李怡慧
+李怡瑾
+李怡穎
+李怡旻
+李承宗
+李承璋
+李承龍
+李易修
+李易諺
+李昌達
+李昆宏
+李昆達
+李昆龍
+李明利
+李明怡
+李明杰
+李明彥
+李明修
+李明哲
+李明書
+李明釗
+李明達
+李明潔
+李明勳
+李明樺
+李明諭
+李明霞
+李明墉
+李昀臻
+李昊
+李昇翰
+李東彥
+李東隆
+李東龍
+李杰如
+李松家
+李欣怡
+李欣怡
+李欣哲
+李欣達
+李欣儒
+李欣穎
+李欣霞
+李法漢
+李治安
+李玟玟
+李玥瑩
+李秉朔
+李秉翰
+李芳圻
+李芳婷
+李芳儀
+李芝綾
+李芸彥
+李虎峰
+李金泓
+李金鈴
+李金樺
+李長文
+李長榮
+李長紘
+李青松
+李青陽
+李非霏
+李信成
+李信杰
+李信德
+李信穎
+李保蓁
+李俊宏
+李俊奇
+李俊昀
+李俊彥
+李俊祺
+李俊億
+李俊德
+李俊毅
+李俊賢
+李俊賢
+李俊賢
+李俊勳
+李俊錡
+李俞慧
+李冠朋
+李冠儀
+李冠瑩
+李冠臻
+李勇寧
+李南嬌
+李品慧
+李奕枚
+李奏銳
+李姿儀
+李姿瑩
+李威宏
+李威德
+李威霖
+李宣瑩
+李建民
+李建宏
+李建邦
+李建明
+李建威
+李建葦
+李建寬
+李建賢
+李建鋒
+李建樺
+李建興
+李建禲
+李彥宏
+李彥宜
+李彥儀
+李彥瑩
+李彥儒
+李彥霖
+李律瑋
+李思怡
+李思萱
+李思儀
+李思瑩
+李思諭
+李政
+李政忠
+李政哲
+李政達
+李政輝
+李政曄
+李政龍
+李春枝
+李春燕
+李昭美
+李昭緯
+李映萱
+李昱春
+李昱燐
+李柏杉
+李柏蓉
+李柏賢
+李柏璁
+李炳坤
+李珊珊
+李界鋒
+李盈盈
+李盈潔
+李盈穎
+李科泯
+李秋梅
+李秋儀
+李秋麟
+李美玉
+李美芳
+李美倫
+李美瑜
+李美儀
+李美瑩
+李美錡
+李胤瑤
+李致慧
+李茂全
+李英志
+李英瑞
+李英瑋
+李虹儀
+李貞宜
+李貞慧
+李述申
+李郁偉
+李重賢
+李音慧
+李倩
+李修齊
+李哲安
+李哲緯
+李家宏
+李家珍
+李家萱
+李家豪
+李家儂
+李家興
+李容婷
+李師媺
+李悅嘉
+李振昌
+李振誠
+李振儀
+李晉豪
+李書涵
+李根嘉
+李桃森
+李泰霖
+李浩庭
+李珮如
+李珮琳
+李珮嘉
+李益榮
+李祖珍
+李素梅
+李純慧
+李能遠
+李訓億
+李乾暉
+李偉吉
+李偉愷
+李偉嘉
+李偉顒
+李健源
+李健銘
+李國全
+李國強
+李國華
+李國瑞
+李國榮
+李國維
+李國銀
+李國興
+李基弘
+李培華
+李婉真
+李婉瑞
+李崇仁
+李崇豪
+李康正
+李彩瑩
+李啟弘
+李啟滄
+李敏吉
+李敏嘉
+李敏龍
+李清吟
+李淑君
+李淑芬
+李淑貞
+李淑茹
+李淑惠
+李淑華
+李淑蓉
+李淑靜
+李涵富
+李祥瑞
+李紹綺
+李翎毓
+李連峰
+李雪萍
+李傑如
+李凱楨
+李勝雄
+李喬錚
+李嵐琦
+李惠芬
+李惠珠
+李惠琳
+李惠雯
+李晴雯
+李智怡
+李智強
+李智維
+李森
+李湘樺
+李皖玲
+李善同
+李舜華
+李詠秋
+李逸才
+李逸群
+李進福
+李隆華
+李雅玫
+李雅玲
+李雅梅
+李雅婷
+李雅惠
+李雅惠
+李雅萍
+李雅雯
+李雅燕
+李雯燕
+李傳君
+李意雯
+李想
+李新澤
+李毓真
+李源
+李瑞文
+李瑞貞
+李瑞華
+李瑞騏
+李義雄
+李聖琰
+李詩偉
+李詩楷
+李道林
+李嘉
+李嘉林
+李嘉凌
+李嘉軒
+李嘉華
+李嘉銘
+李嘉鴻
+李寧芳
+李榮茂
+李榮馳
+李漢祺
+李碧婷
+李福蓉
+李維仁
+李維倫
+李維楨
+李肇欣
+李誌明
+李銘周
+李銘毓
+李鳴宇
+李齊芳
+李廣祁
+李德海
+李慶宏
+李慶華
+李慧芬
+李慧美
+李慧珠
+李慧儀
+李毅信
+李瑩潔
+李賢淦
+李學明
+李憲斌
+李曉妮
+李曉玲
+李曉嵐
+李曉菁
+李曉榕
+李澤育
+李燕玲
+李璟郁
+李翰青
+李興舜
+李蕙如
+李蕙芸
+李豫凡
+李錦昇
+李錦蓮
+李靜宜
+李靜怡
+李靜怡
+李靜美
+李靜蓉
+李龍生
+李龍麟
+李爵臣
+李聰岳
+李輿鑫
+李鴻志
+李鴻達
+李曜存
+李謹帆
+李鎔阡
+李馥如
+李瓊英
+李麗枝
+李麗珠
+李寶玉
+李耀民
+李馨怡
+李懿如
+李權家
+李劭軍
+李旻昇
+李旻瑋
+李昶欣
+李苹慈
+李涴汝
+李堨
+李絜
+李瑋琪
+李筱雲
+李鈺雯
+李靚宸
+李鎧任
+李恒君
+杜文傑
+杜民傑
+杜全林
+杜志賢
+杜佳豪
+杜孟政
+杜宛諭
+杜承鑫
+杜昇翰
+杜芳政
+杜俊毅
+杜威廷
+杜彥霖
+杜炳龍
+杜美慧
+杜家昌
+杜珮詩
+杜婉雯
+杜淑錚
+杜陽圓
+杜嘉玲
+杜維修
+杜燕華
+杜耀仁
+沙正悅
+沈士傑
+沈仁傑
+沈文祥
+沈世閔
+沈正德
+沈立仁
+沈如峰
+沈佑翰
+沈君璐
+沈志川
+沈志龍
+沈汶萍
+沈育星
+沈依穎
+沈佳慧
+沈佩雯
+沈坤昇
+沈宗慶
+沈宜蓁
+沈怡伶
+沈昌明
+沈明萱
+沈欣學
+沈秉誼
+沈芸萩
+沈信增
+沈俊翔
+沈冠宏
+沈姿慧
+沈建成
+沈建德
+沈恆光
+沈昭賢
+沈柏寬
+沈盈菁
+沈美娟
+沈郁康
+沈哲標
+沈家榮
+沈振興
+沈益承
+沈純如
+沈國銓
+沈晨鐘
+沈淑華
+沈惠菁
+沈舒琳
+沈雅惠
+沈暉庭
+沈瑞欽
+沈聖崑
+沈道論
+沈嘉蕙
+沈維毓
+沈德厚
+沈學成
+沈蕙君
+沈鴻洲
+沈妏真
+沈筱雲
+汪大倫
+汪巧玲
+汪百軒
+汪秀燕
+汪孟涵
+汪怡華
+汪青蓉
+汪冠宏
+汪美玉
+汪家瑩
+汪啟文
+汪雅萍
+汪靖國
+汪慶珍
+汪麗娟
+狄家溧
+谷泓道
+車益華
+辛宗潭
+辛奕成
+辛菁娥
+辛旻修
+邢能文
+阮文祥
+阮呂真
+阮信憲
+阮昱宏
+阮飛銘
+阮淑茹
+阮斐瑜
+阮雅倫
+阮睿祥
+阮鵬碩
+卓士勛
+卓永堂
+卓志忠
+卓佳慶
+卓宛君
+卓明儀
+卓芳如
+卓俊宏
+卓建隆
+卓英哲
+卓家楠
+卓訓良
+卓淑媛
+卓朝閔
+卓瑞崇
+卓誌隆
+卓靜如
+卓恒生
+周上欽
+周士傑
+周大鈞
+周子敬
+周中興
+周心怡
+周文政
+周文雅
+周月霜
+周世豐
+周代尉
+周弘敏
+周正國
+周永雄
+周玉蓮
+周立偉
+周仲凱
+周吉龍
+周年盛
+周至芬
+周佑禎
+周伯鑫
+周君鴻
+周孝芳
+周宏瑜
+周廷隆
+周志忠
+周志清
+周志勳
+周汶珊
+周秀晏
+周育伶
+周育潤
+周亞欣
+周佳怡
+周佳蓉
+周佳震
+周佩宜
+周佩儀
+周協利
+周奇蓉
+周孟誼
+周宗建
+周宜芳
+周宛萱
+周幸蓉
+周怡伶
+周怡君
+周怡邦
+周怡儷
+周明弘
+周明徹
+周明輝
+周杰
+周欣芸
+周欣瑩
+周玟萱
+周芳如
+周芝涵
+周金燕
+周青蓉
+周信輝
+周俊宏
+周俊豪
+周冠伶
+周品妍
+周威呈
+周建呈
+周建銘
+周彥岑
+周思微
+周政翰
+周星同
+周柏甫
+周玲
+周盈杉
+周秋萍
+周美春
+周致丞
+周郁文
+周韋翰
+周凌悌
+周娟如
+周家浩
+周家慶
+周峰正
+周振凱
+周書婷
+周泰安
+周珮如
+周祐慧
+周耿行
+周偉茹
+周國靖
+周婉琳
+周敏鈺
+周淑娟
+周淑燕
+周凱慧
+周惠蓮
+周智敏
+周渝珊
+周詠訓
+周逸蘭
+周雅婷
+周雲棠
+周敬晏
+周業欽
+周煌耿
+周瑞楠
+周義峰
+周聖慧
+周裕豐
+周道泓
+周嘉松
+周嘉慶
+周漢源
+周福鳳
+周翠芬
+周億信
+周慧姿
+周樂天
+周賢德
+周憲邦
+周曉萍
+周燕盈
+周融駿
+周靜雯
+周聰宇
+周鎮邦
+周麗玲
+周蘭芳
+周旻靜
+周旆瑜
+周瑋
+周鈺翔
+孟天祥
+孟慶安
+季育澤
+官大弘
+官育萱
+官芳如
+官苑傑
+官農哲
+尚書
+屈道剛
+岳維鋌
+房兆隆
+於家珍
+易足真
+易智健
+昌孟翰
+東慎琳
+林一煒
+林上志
+林久勻
+林于正
+林于婷
+林于禎
+林千媚
+林千毓
+林士力
+林士郁
+林士淵
+林士傑
+林士揚
+林士越
+林士農
+林大元
+林大祥
+林大鈞
+林女滿
+林子玄
+林子偉
+林子傑
+林子惠
+林子詠
+林子勤
+林子綺
+林子瑄
+林小琪
+林山雲
+林才元
+林中強
+林之菁
+林仁彥
+林仁傑
+林介一
+林元愷
+林升權
+林天民
+林心如
+林心嵐
+林文中
+林文全
+林文泳
+林文科
+林文將
+林文祥
+林文勝
+林文斯
+林文琦
+林文雯
+林文德
+林文聰
+林文媄
+林月英
+林木興
+林世平
+林世昌
+林世芳
+林世峰
+林世偉
+林世淇
+林世翔
+林世寰
+林主恩
+林以晨
+林仕偉
+林加冠
+林可鈞
+林巨淙
+林巧梅
+林平苑
+林弘昇
+林弘祥
+林正一
+林正宗
+林正軍
+林正偉
+林正凱
+林正福
+林民基
+林永昌
+林永信
+林永清
+林永祥
+林永森
+林永慶
+林永晟
+林玉如
+林玉芳
+林玉玲
+林玉珮
+林玉敏
+林玉婷
+林玉菁
+林玉雲
+林玉龍
+林石隆
+林立任
+林立倫
+林立偉
+林立群
+林立鑫
+林仲威
+林仰望
+林兆盈
+林吉伯
+林后唯
+林如敏
+林宇星
+林守德
+林安緹
+林有俊
+林百揚
+林至承
+林行謙
+林佑安
+林佑珊
+林佑儒
+林佑鍾
+林伯岳
+林伯峻
+林伯勳
+林伶貞
+林克威
+林克寰
+林呈任
+林君宜
+林君玲
+林君瑜
+林君翰
+林吟姿
+林均郁
+林妙君
+林妙娥
+林妍妤
+林孝全
+林孝憲
+林宏坤
+林宏亮
+林宏韋
+林宏乾
+林宏達
+林宏儒
+林宏錡
+林岐益
+林廷吉
+林廷輝
+林志民
+林志成
+林志良
+林志忠
+林志明
+林志杰
+林志芬
+林志勇
+林志皇
+林志峰
+林志偉
+林志堅
+林志揚
+林志慎
+林志豪
+林志豪
+林志銘
+林志儒
+林志穎
+林志謀
+林志龍
+林志鴻
+林志鴻
+林李銘
+林材俊
+林沛君
+林沛蓁
+林灼龍
+林秀坪
+林秀花
+林秀俐
+林秀玲
+林秀美
+林秀卿
+林秀真
+林秀雯
+林秀鳳
+林秀穎
+林秀馨
+林育仕
+林育正
+林育民
+林育生
+林育立
+林育名
+林育如
+林育成
+林育宏
+林育昀
+林育珊
+林育進
+林育群
+林育萱
+林育蓓
+林育慧
+林育賢
+林育鋒
+林育麟
+林良俊
+林見明
+林谷峰
+林貝珊
+林里燕
+林享燁
+林依盈
+林依潔
+林依璇
+林佳生
+林佳宏
+林佳良
+林佳怡
+林佳欣
+林佳亭
+林佳盈
+林佳貞
+林佳陵
+林佳陽
+林佳綺
+林佳蓉
+林佳億
+林佳慶
+林佳慧
+林佳慧
+林佳潔
+林佳瑩
+林佳賢
+林佳樺
+林佳燕
+林佳臻
+林佳靜
+林佳鴻
+林佳潓
+林佩君
+林佩怡
+林佩芬
+林佩貞
+林佩雯
+林佩蓉
+林佩蓉
+林佩慧
+林佩樺
+林佩錦
+林佩璇
+林侑青
+林其侯
+林其鋒
+林協村
+林和秀
+林坤生
+林坤韋
+林坤樑
+林坤霂
+林奇模
+林孟仕
+林孟君
+林孟亭
+林孟萱
+林孟德
+林孟賢
+林孟穎
+林孟葳
+林季苗
+林季燁
+林宗廷
+林宗順
+林宗億
+林宗慶
+林宗賢
+林宗輝
+林宗澤
+林宗謨
+林官逸
+林宜君
+林宜玫
+林宜珍
+林宜聖
+林宜蓉
+林宜慧
+林宜賢
+林宜樺
+林宜錚
+林宜靜
+林宜蓁
+林宜嫺
+林宛瑜
+林宛樺
+林尚良
+林尚穎
+林岱蓉
+林岱融
+林岳儀
+林岳嶙
+林幸蓉
+林庚立
+林征衛
+林忠岳
+林忠慶
+林怡
+林怡汝
+林怡伶
+林怡利
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡均
+林怡秀
+林怡辰
+林怡芳
+林怡青
+林怡莉
+林怡菁
+林怡萱
+林怡寬
+林怡儒
+林怡礽
+林承岳
+林承毅
+林於妮
+林易珊
+林昌弘
+林昌賢
+林昆田
+林昆模
+林昆煇
+林明生
+林明志
+林明宗
+林明杰
+林明彥
+林明莉
+林明楓
+林明誌
+林明德
+林明毅
+林明緯
+林明輝
+林明勳
+林明環
+林昀龍
+林昇永
+林昇龍
+林東茂
+林東毅
+林杰欣
+林松堯
+林欣立
+林欣怡
+林欣怡
+林欣怡
+林欣政
+林欣慈
+林欣儀
+林欣儀
+林欣毅
+林欣誼
+林欣穎
+林欣麗
+林武諺
+林泓君
+林泱秀
+林牧台
+林玟君
+林玟妏
+林玫君
+林玫蓉
+林秉泓
+林秉瑩
+林芳一
+林芳如
+林芳如
+林芳州
+林芳芳
+林芳新
+林芳儀
+林芝卉
+林芝寧
+林芬芳
+林芸暉
+林芷筠
+林金仕
+林金明
+林金蓮
+林金龍
+林長志
+林長慶
+林雨農
+林青志
+林青慧
+林青霞
+林亮仁
+林信全
+林信佑
+林信宏
+林信廷
+林信延
+林信義
+林保成
+林俊仲
+林俊宇
+林俊佑
+林俊伯
+林俊宏
+林俊宏
+林俊廷
+林俊甫
+林俊男
+林俊言
+林俊杰
+林俊傑
+林俊逸
+林俊達
+林俊豪
+林俊魁
+林俊賢
+林俊麟
+林俐亭
+林俞增
+林冠宇
+林冠吟
+林冠宏
+林冠秀
+林冠瑛
+林冠儒
+林勇成
+林南宏
+林品宜
+林奕成
+林奕伶
+林奕秀
+林奕嵐
+林奎君
+林姿伶
+林姿吾
+林姿妙
+林姿婷
+林威名
+林威利
+林威廷
+林威良
+林宣任
+林宣鰲
+林建一
+林建仲
+林建宇
+林建成
+林建吾
+林建宏
+林建宏
+林建廷
+林建志
+林建男
+林建良
+林建邦
+林建昇
+林建華
+林建彰
+林建瑩
+林建勳
+林彥文
+林彥名
+林彥亨
+林彥伶
+林彥孝
+林彥宏
+林彥甫
+林彥享
+林彥嘉
+林彥興
+林思吟
+林思華
+林思親
+林恆碩
+林恪群
+林政位
+林政良
+林政浩
+林政裕
+林政儀
+林政緯
+林政鋒
+林政翰
+林春年
+林春美
+林昭宇
+林昭志
+林昭銘
+林映汝
+林星晨
+林昱君
+林昱偉
+林柑杏
+林柏州
+林柏伸
+林柏宏
+林柏村
+林柏城
+林柏榮
+林柏翰
+林泉洋
+林洪霄
+林為文
+林炳煌
+林珊如
+林玲至
+林珍如
+林皇利
+林盈成
+林盈君
+林盈志
+林盈萱
+林祈均
+林科宏
+林秋良
+林秋惠
+林秋菊
+林秋蓮
+林紀元
+林美如
+林美伶
+林美君
+林美吟
+林美秀
+林美怡
+林美玲
+林美珠
+林美智
+林美華
+林美慧
+林美齡
+林羿妏
+林致君
+林致穎
+林茂盛
+林英男
+林英傑
+林英銘
+林虹如
+林虹宏
+林貞
+林貞延
+林郁文
+林郁欣
+林郁芬
+林郁敏
+林郁森
+林郁雄
+林郁蘭
+林韋丞
+林韋廷
+林韋嘉
+林香君
+林倍伊
+林倩如
+林倩慧
+林修民
+林倫旭
+林原合
+林哲民
+林哲任
+林哲宏
+林哲裕
+林哲輝
+林娟如
+林娉孜
+林家弘
+林家弘
+林家生
+林家如
+林家亨
+林家勇
+林家惠
+林家暉
+林家聖
+林家禎
+林家銘
+林家慶
+林家賢
+林家蕙
+林家斌
+林容仟
+林容聖
+林展聖
+林峻暉
+林峰年
+林師群
+林庭瑋
+林恩光
+林恩霈
+林振浩
+林振暘
+林振濱
+林時新
+林晉全
+林晉畿
+林晏如
+林晏稚
+林書弘
+林書聿
+林書楷
+林書毅
+林書澤
+林桓賦
+林桂珠
+林格妃
+林泰安
+林泰維
+林浚傑
+林浩群
+林珮如
+林珮菁
+林珮儒
+林益弘
+林益如
+林益運
+林真綺
+林祐禾
+林祐榆
+林祐瑄
+林窈意
+林素如
+林素貞
+林素華
+林純如
+林純湘
+林耘德
+林耿弘
+林耿真
+林茵
+林起翎
+林軒頡
+林高源
+林偉民
+林偉彬
+林偉楨
+林偉德
+林健青
+林唯凱
+林國欣
+林國祥
+林國隆
+林國勳
+林培堯
+林婉君
+林婉婷
+林婉瑜
+林崇宇
+林崇毅
+林康寧
+林啟人
+林啟航
+林啟豐
+林敏裕
+林梅隴
+林清吉
+林清雲
+林淑君
+林淑芬
+林淑玲
+林淑貞
+林淑娟
+林淑娥
+林淑梅
+林淑媛
+林淑惠
+林淑萍
+林淑華
+林淑雯
+林淑儀
+林淑錚
+林涵瑜
+林盛傑
+林莘怡
+林荷芳
+林雪萍
+林傑聖
+林創
+林勝傑
+林博隆
+林婷
+林富美
+林惠文
+林惠怡
+林惠美
+林惠敏
+林惠萍
+林惠雯
+林惠琇
+林敦煌
+林景民
+林景雰
+林智能
+林智清
+林智業
+林期
+林森田
+林港貴
+林湘惠
+林湲舒
+林琦國
+林登山
+林紫菁
+林舒慧
+林華一
+林視尊
+林詠翔
+林超
+林逸昀
+林逸峰
+林逸菁
+林逸儒
+林進益
+林鈞陶
+林雁敏
+林雅君
+林雅芬
+林雅玲
+林雅倫
+林雅淳
+林雅博
+林雅惠
+林雅琪
+林雅萍
+林雅華
+林雅雯
+林雅慧
+林雅慧
+林雅謙
+林雯宣
+林雲正
+林順安
+林順興
+林勤淙
+林嵩山
+林意倫
+林意騰
+林愛惠
+林敬文
+林敬淵
+林敬翔
+林新凡
+林新發
+林暉皓
+林楠棋
+林殿一
+林毓珊
+林毓超
+林源河
+林照男
+林煜庭
+林煌軒
+林煥欽
+林瑞明
+林瑞家
+林瑞雪
+林瑞德
+林瑞蘭
+林瑜莉
+林盟傑
+林祺勛
+林稚揚
+林經維
+林義峰
+林義傑
+林義智
+林義雄
+林群峰
+林群耀
+林聖怡
+林聖恩
+林聖傑
+林聖智
+林聖鈞
+林聖耀
+林葦萍
+林裕昕
+林裕堅
+林裕勝
+林裕舜
+林詩凡
+林詩倩
+林詩淵
+林詩雯
+林詩苹
+林運浩
+林鉉智
+林雍翔
+林靖修
+林頌博
+林鼎植
+林嘉禾
+林嘉信
+林嘉珍
+林嘉偉
+林嘉琪
+林嘉群
+林嘉慧
+林嘉鴻
+林摑彥
+林榮欽
+林漢
+林漢斌
+林睿暘
+林碧惠
+林碩儒
+林精湛
+林維珊
+林維莉
+林翠萍
+林蓓羚
+林豪彥
+林銘洲
+林銘煌
+林銘熛
+林鳳珍
+林齊蔚
+林儀虹
+林增威
+林廣義
+林德晉
+林慶昇
+林慶蓉
+林慧君
+林慧怡
+林慧珊
+林慧美
+林慧珠
+林慧淳
+林慧萍
+林慧華
+林慧雯
+林慧麗
+林憬良
+林澄澤
+林瑩芳
+林瑾蘭
+林蔚玲
+林衛聖
+林賢得
+林適之
+林儒民
+林學隆
+林憲政
+林憶淳
+林曉君
+林曉芳
+林曉玲
+林曉婷
+林曉華
+林曉嘉
+林曉娸
+林澤義
+林燕梅
+林璟
+林穎
+林穎莉
+林穎聰
+林興釗
+林蕙淇
+林豫亭
+林錦伶
+林錦隆
+林錦鴻
+林靜吟
+林靜宜
+林靜怡
+林靜怡
+林靜芬
+林靜雯
+林靜儀
+林龍生
+林懋州
+林聰仁
+林謙妙
+林駿逸
+林鴻君
+林鴻彬
+林鴻達
+林鴻錡
+林禮強
+林豐舜
+林瀛文
+林瓊芳
+林韻娟
+林麗君
+林麗美
+林麗珠
+林麗華
+林麗蓉
+林寶秀
+林繼平
+林耀南
+林藹文
+林巍龍
+林懿君
+林麟
+林夆賓
+林芊亨
+林旻逸
+林炅嶔
+林姝均
+林昶安
+林珈妤
+林倬世
+林紓瑋
+林琇雯
+林棨任
+林琮閔
+林琬瑜
+林暐庭
+林煒鴻
+林瑋竣
+林筱玲
+林筱菁
+林萩燕
+林鈺庭
+林鈺凱
+林鈺慧
+林璇怡
+林霙真
+林驧
+武良文
+武敬和
+祁義國
+花羽薇
+花雅斐
+初若凡
+邵文泰
+邵志豐
+邵奕鈞
+邵郁惠
+邵勝添
+邵愛玟
+邵懷德
+邱一真
+邱于倩
+邱千綺
+邱士恭
+邱大剛
+邱子楓
+邱小嫚
+邱仁傑
+邱天宏
+邱文玉
+邱文柏
+邱文欽
+邱文鴻
+邱世民
+邱仕傑
+邱幼媚
+邱正祥
+邱永嘉
+邱玉玲
+邱立國
+邱仲韻
+邱名仕
+邱安台
+邱有諒
+邱君清
+邱志光
+邱志強
+邱志斌
+邱秀英
+邱秀靜
+邱良毅
+邱佳松
+邱佳潁
+邱孟月
+邱定邦
+邱延齡
+邱怡喬
+邱怡禎
+邱昌裕
+邱明琪
+邱欣怡
+邱泓彰
+邱芳宜
+邱金生
+邱信益
+邱信輝
+邱俊昌
+邱俊智
+邱俊榮
+邱俊霖
+邱冠瑜
+邱品華
+邱垂章
+邱奕明
+邱奕睿
+邱姿惠
+邱建中
+邱建誠
+邱建鋐
+邱彥瑛
+邱思嘉
+邱政湧
+邱昭欽
+邱昱臻
+邱柏瑜
+邱柏霖
+邱珀祥
+邱盈棠
+邱紀華
+邱美惠
+邱美慧
+邱致穎
+邱軍浩
+邱郁淑
+邱重憲
+邱哲琳
+邱家賢
+邱振峰
+邱桂鈴
+邱浩彰
+邱珮綺
+邱純瑋
+邱偉倫
+邱健雄
+邱國恭
+邱國潔
+邱培瑜
+邱婉嬅
+邱啟翔
+邱敏蕙
+邱清龍
+邱淑娟
+邱淑琴
+邱淑慧
+邱紹溢
+邱莉婷
+邱凱
+邱創儉
+邱富源
+邱惠娥
+邱惠詩
+邱景萍
+邱智傑
+邱湘雲
+邱結
+邱詠淳
+邱逸群
+邱雅芬
+邱雅莉
+邱雅雯
+邱雅茜
+邱圓惠
+邱敬雯
+邱毓玲
+邱煥文
+邱瑞梅
+邱盟琇
+邱聖文
+邱聖斌
+邱詩淵
+邱詩琁
+邱靖雯
+邱嘉傑
+邱嘉慧
+邱碧施
+邱維婉
+邱韶瑩
+邱德凱
+邱慧如
+邱慧婷
+邱緯平
+邱曉玲
+邱樹國
+邱靜宜
+邱靜雯
+邱鍾仁
+邱豐祥
+邱瓊惠
+邱瓊慧
+邱韻寧
+邱麗英
+邱寶萱
+邱繼瑩
+邱蘊靜
+邱馨儀
+邱齡頤
+邱顯桓
+邱顯霖
+邱姵綾
+邱琬淑
+邱椿凱
+邱筱雯
+邱鈺斐
+邱瞍
+金士為
+金京榮
+金明輝
+金政諺
+金珞琳
+金勤
+金磊
+侯力維
+侯文哲
+侯正鴻
+侯如芬
+侯宏昌
+侯秀如
+侯佳典
+侯函秀
+侯岳宏
+侯昆助
+侯欣翰
+侯信宇
+侯咸仰
+侯彥伸
+侯柏青
+侯致中
+侯素雲
+侯淵銘
+侯博元
+侯景勛
+侯貴齡
+侯雅雯
+侯嘉珍
+侯慶辰
+侯靜汝
+侯麗慧
+侯霈青
+俞佳凡
+俞泊霖
+俞能方
+俞雅婷
+俞芊薈
+姜元鈞
+姜后怡
+姜宏榮
+姜佩伶
+姜明宏
+姜芝怡
+姜建銘
+姜堉潁
+姜凱傑
+姜智鈞
+姜雅婷
+姜義愷
+姜增炫
+姜樹錦
+姜禮豪
+姜旻姍
+姚又文
+姚方潔
+姚立三
+姚克鈞
+姚志憲
+姚佳慧
+姚宗樸
+姚怡蘭
+姚金源
+姚威宇
+姚盈任
+姚素蘭
+姚凱文
+姚琛富
+姚瑞賢
+姚德麟
+姚麗人
+宣志凌
+律振揚
+施大維
+施文
+施文豪
+施可隆
+施玉品
+施名玥
+施宇駿
+施百樺
+施伯宜
+施孝德
+施宏澤
+施志豪
+施秀宛
+施育瑜
+施佳君
+施佩君
+施佩華
+施孟宏
+施宜呈
+施宛直
+施怡如
+施怡鈴
+施明妍
+施杰松
+施玫君
+施雨佐
+施俊名
+施俊賢
+施奕涵
+施建宇
+施彥甫
+施政豪
+施柏如
+施皇旭
+施美瑛
+施郁蕙
+施振坤
+施素卿
+施健鴻
+施敏男
+施淑惠
+施雪姿
+施博元
+施富浩
+施惠琪
+施智勇
+施程凱
+施詠然
+施鈞倫
+施雅娟
+施雯琪
+施義滄
+施嘉琪
+施漢嶸
+施誌豪
+施慧君
+施瑾倫
+施曉雯
+施靜怡
+施瓊如
+施馨貴
+施旻宜
+施瑋瑜
+柯力豪
+柯元凱
+柯文祥
+柯世賢
+柯永忠
+柯全益
+柯伯彥
+柯宏威
+柯志明
+柯沛志
+柯良蕙
+柯佳秀
+柯佩君
+柯坤明
+柯宗伯
+柯宛君
+柯怡玟
+柯明翰
+柯欣儀
+柯金杏
+柯俊吉
+柯俊隆
+柯宣宇
+柯彥旭
+柯昭生
+柯盈如
+柯虹如
+柯泰名
+柯敏盛
+柯淑惠
+柯連田
+柯博元
+柯富議
+柯惠菱
+柯智仁
+柯棋棣
+柯閔文
+柯雅華
+柯毓萍
+柯嘉汶
+柯碧昭
+柯鳳儀
+柯憲蒼
+柯錦男
+柯瓊鎣
+柯旻良
+查慧琳
+柳如庭
+柳佩君
+柳建良
+柳茹萍
+柳棋元
+柳嘉軒
+柳鶴松
+段明宏
+段逸軒
+洪一中
+洪力壹
+洪于閔
+洪千惠
+洪千琦
+洪士育
+洪士傑
+洪大為
+洪子婷
+洪小惠
+洪元斌
+洪文明
+洪文凱
+洪文賢
+洪世昇
+洪世嘉
+洪加達
+洪正光
+洪永昌
+洪玉芳
+洪玉婷
+洪玉蒨
+洪亦潔
+洪光億
+洪名衡
+洪安俐
+洪百賢
+洪佑昇
+洪君祥
+洪宏政
+洪志生
+洪志明
+洪志雄
+洪志銘
+洪村銘
+洪秀芳
+洪秀瑩
+洪良欣
+洪依琪
+洪佳琳
+洪佩伶
+洪坤錡
+洪孟瑤
+洪宗漢
+洪宜良
+洪尚銘
+洪忠聖
+洪怡真
+洪明化
+洪明偉
+洪明龍
+洪欣昇
+洪芷漪
+洪信嘉
+洪俊雄
+洪宣竹
+洪思琪
+洪政霈
+洪柏寧
+洪秋華
+洪美萍
+洪茂雄
+洪英傑
+洪郁庭
+洪重卿
+洪家琪
+洪悅玲
+洪振益
+洪振銘
+洪根華
+洪珮芳
+洪珮綺
+洪耿智
+洪偉哲
+洪偉傑
+洪偉諭
+洪健峰
+洪曼珊
+洪國哲
+洪國惟
+洪國翔
+洪國耀
+洪培倫
+洪婉紋
+洪崇恩
+洪崑健
+洪御彗
+洪啟偉
+洪敏芳
+洪敏雄
+洪清健
+洪淑貞
+洪淑惠
+洪淑淩
+洪紹文
+洪翎賓
+洪雪芳
+洪勝凱
+洪惠文
+洪惠棋
+洪晴晴
+洪智賢
+洪琦惠
+洪菁隆
+洪菱紫
+洪隆智
+洪雅苓
+洪雅雯
+洪順男
+洪慈伶
+洪愷廷
+洪楨邦
+洪毓嬪
+洪煌凱
+洪瑞堂
+洪瑞蓉
+洪瑞鴻
+洪萬得
+洪聖恩
+洪萱鋒
+洪裕焜
+洪詩雅
+洪靖凱
+洪嘉圻
+洪嘉珊
+洪嘉琳
+洪嘉蓮
+洪嘉駿
+洪寧
+洪榮輝
+洪甄苡
+洪碩偉
+洪綺
+洪維良
+洪維澤
+洪肇彥
+洪誌強
+洪銘佐
+洪銘陽
+洪銘鍾
+洪魁禧
+洪寬泰
+洪慶銘
+洪慧玲
+洪慧萍
+洪瑩珍
+洪儒明
+洪曉嵐
+洪蕙心
+洪靜怡
+洪聲銓
+洪禮君
+洪藝菁
+洪麗姿
+洪麗鈞
+洪繼賢
+洪儷鳳
+洪劭元
+洪晢惇
+洪斌凱
+洪歆怡
+洪筱佩
+洪鈺櫻
+相孟豪
+紀人瑋
+紀文欽
+紀吉如
+紀伯璁
+紀志霖
+紀佳宜
+紀宗霖
+紀怡婷
+紀泓堯
+紀長興
+紀威羽
+紀盈州
+紀祖豪
+紀淑芳
+紀博敏
+紀智仁
+紀鈞閎
+紀順興
+紀銘坤
+紀曉恩
+紀蘭潔
+胡丁元
+胡小萍
+胡心慧
+胡文瑜
+胡世融
+胡正翰
+胡玉慧
+胡同亮
+胡成章
+胡廷威
+胡志銘
+胡育維
+胡佳禎
+胡定宇
+胡怡芳
+胡東昇
+胡芳慈
+胡金灝
+胡帝
+胡玲婉
+胡若男
+胡修瑀
+胡家榮
+胡展銘
+胡振中
+胡書綿
+胡純菁
+胡乾鋒
+胡授淳
+胡淑君
+胡淑雅
+胡凱智
+胡博硯
+胡惠婷
+胡景雯
+胡智銘
+胡竣硯
+胡貴月
+胡雅妍
+胡雅智
+胡順隆
+胡毓發
+胡瑞洙
+胡詩菁
+胡嘉真
+胡碧媜
+胡赫廷
+胡慧如
+胡憲霖
+胡靜苑
+胡瓊文
+胡耀仁
+胡懿心
+胡煒珍
+范中威
+范文政
+范世璋
+范玉萱
+范吉慶
+范均沛
+范甫宗
+范佳雯
+范明中
+范冠偉
+范姜彥如
+范姜慧怡
+范秋霞
+范郁如
+范家誠
+范振文
+范振麟
+范耕魁
+范國基
+范淑玲
+范莉苓
+范博彰
+范揚宜
+范揚騰
+范智欽
+范鈞傑
+范毓貞
+范瑞祥
+范詩漪
+范漢君
+范綱賢
+范慧如
+范曉怡
+范瀚文
+范耀聰
+范琇璇
+苗後傑
+計竹宇
+韋人瑜
+韋志鴻
+韋桂仁
+候昺辰
+倪玉龍
+倪志鴻
+倪威遠
+倪偉智
+倪淑婷
+倪瑞期
+倪慧珊
+凌世芳
+凌明德
+凌雪惠
+凌慧萍
+唐千惠
+唐文賢
+唐永興
+唐作豪
+唐邦泰
+唐明志
+唐思維
+唐英娜
+唐珮珊
+唐國忠
+唐淑芬
+唐朝緯
+唐雅燕
+唐義堯
+唐嘉羚
+唐韶霙
+唐曉微
+唐譽玫
+夏正邦
+夏良玉
+夏春香
+夏淑蓉
+夏達偉
+夏慧齡
+夏翊倫
+孫上雯
+孫士烘
+孫元俊
+孫方儀
+孫可為
+孫永信
+孫立民
+孫如彬
+孫伯中
+孫志勇
+孫育芝
+孫協裕
+孫忠凱
+孫明駿
+孫采薇
+孫建崴
+孫美英
+孫郁婷
+孫振涼
+孫珮芳
+孫偉倫
+孫國書
+孫崇哲
+孫惟正
+孫淑芬
+孫傑
+孫琦
+孫逸燕
+孫傳凱
+孫溢堂
+孫睦傑
+孫道隆
+孫嘉蔭
+孫綱
+孫豪志
+孫銘鴻
+孫慧津
+孫學儀
+孫龍翔
+孫麗娟
+孫炘宜
+孫瑀
+宮姍姍
+師宜青
+徐乙可
+徐千祐
+徐千雅
+徐士勛
+徐子平
+徐子強
+徐小萍
+徐仁乾
+徐心宜
+徐文君
+徐文益
+徐月娥
+徐世基
+徐仕泓
+徐巧凌
+徐正怡
+徐永光
+徐永鳴
+徐玉芬
+徐玉慈
+徐立達
+徐光平
+徐匡平
+徐如昇
+徐有慶
+徐艾伶
+徐克鈞
+徐宏宇
+徐志宇
+徐志偉
+徐志豪
+徐李全
+徐秀玲
+徐育慈
+徐佳如
+徐佩如
+徐佩錦
+徐宗源
+徐忠義
+徐昆羿
+徐明華
+徐明鴻
+徐松鴻
+徐欣妏
+徐知本
+徐采薇
+徐信中
+徐俊傑
+徐奕暉
+徐思維
+徐柏韜
+徐美玉
+徐美華
+徐若馨
+徐英碩
+徐郁樺
+徐家楷
+徐振洲
+徐書政
+徐浚傑
+徐珮禎
+徐偉凡
+徐偉峻
+徐偉順
+徐健順
+徐國倫
+徐國智
+徐國耀
+徐培溶
+徐婉儀
+徐崑崙
+徐從誥
+徐敏芳
+徐敏華
+徐梅凌
+徐淑娟
+徐淑嬪
+徐祥然
+徐莉真
+徐雪瓊
+徐富康
+徐惠珍
+徐掌瑛
+徐朝康
+徐舒亞
+徐詠媛
+徐進寶
+徐雅棋
+徐順宏
+徐愛婷
+徐毓良
+徐瑚鎂
+徐瑞恭
+徐瑞聰
+徐瑜敏
+徐裕彬
+徐資証
+徐靖惠
+徐嘉宏
+徐嘉琳
+徐嘉駒
+徐夢麟
+徐榮辰
+徐甄鴻
+徐福祥
+徐維揚
+徐翠遙
+徐銘佛
+徐銘謙
+徐鳳憶
+徐德賢
+徐慧心
+徐慧婷
+徐毅宏
+徐震東
+徐曉筠
+徐興淦
+徐靜儀
+徐鴻仁
+徐贊登
+徐麗珍
+徐繼政
+徐櫻芳
+徐淯
+徐菡禧
+徐瑋芬
+徐筱芸
+徐鈺綾
+徐鑫豪
+書百川
+桑怡秋
+柴學舜
+殷芷若
+殷紹閔
+殷肇陽
+浦曉鳳
+留乾焜
+祖曉鳳
+秦一平
+秦安立
+秦建瑋
+秦梓銘
+秦聖傑
+秦麗雅
+翁于琪
+翁士軒
+翁子婷
+翁文茹
+翁以哲
+翁玉娟
+翁仲賢
+翁宇駿
+翁宏霖
+翁志豪
+翁育稔
+翁佳韻
+翁宗裕
+翁明安
+翁林鋌
+翁信臺
+翁柏聖
+翁英斌
+翁振芳
+翁珮怡
+翁偉倫
+翁健緯
+翁基清
+翁崇庭
+翁啟信
+翁晨耀
+翁淑華
+翁壹姿
+翁滋珮
+翁逸軒
+翁雅惠
+翁毓翎
+翁瑞羚
+翁義宗
+翁鼎昌
+翁嘉翎
+翁夢君
+翁碧壕
+翁維良
+翁銘遜
+翁德卿
+翁曉芬
+翁靜瑜
+翁麒昌
+翁儷倩
+翁瑋娟
+翁靚晏
+荊偉政
+袁天英
+袁如岡
+袁怡茹
+袁柏偉
+袁偉倫
+袁啟鑫
+袁雅惠
+袁榮燦
+袁靜華
+記佳雯
+郝政鴻
+馬一文
+馬中驊
+馬占峰
+馬玉娟
+馬安妮
+馬志明
+馬佳伶
+馬岳宏
+馬南欣
+馬英傑
+馬珮婷
+馬國蕾
+馬淑卿
+馬智君
+馬煌坤
+馬嘉隆
+馬緒川
+馬憶婷
+馬櫻菁
+高一銘
+高千惠
+高士明
+高子淇
+高小文
+高友慧
+高文彬
+高世昌
+高主強
+高弘州
+高正國
+高玉如
+高玉馨
+高伊俊
+高合助
+高旭慶
+高至寬
+高宏銘
+高志偉
+高志魁
+高秀鈴
+高亞蘭
+高佩吟
+高妮瑋
+高宗煒
+高幸瑜
+高明
+高明瑋
+高欣潔
+高金志
+高咸實
+高彥勛
+高柏豪
+高美芳
+高英凱
+高郁凱
+高峰
+高栩
+高珮綺
+高偉倫
+高健
+高國哲
+高國寧
+高培真
+高彬原
+高啟祐
+高敏娉
+高淑芳
+高淑惠
+高笙輔
+高雪卿
+高婷
+高景怡
+高琪舒
+高詠彥
+高雅芳
+高雅腹
+高意禎
+高毓辰
+高照閔
+高瑞瑤
+高義忠
+高詩娉
+高頌清
+高嘉良
+高嘉嶼
+高彰隆
+高睿蘭
+高端玫
+高翠翎
+高銀穗
+高銘傑
+高銘琇
+高儀銘
+高慶斌
+高慧萍
+高憶如
+高靜民
+高薇薇
+高譜倫
+高麗蕙
+高顥哲
+高斌鑫
+高筱慧
+高薏涵
+商弘易
+商鳳英
+寇麗雯
+崔佑維
+崔倩苓
+崔琦民
+常欣玉
+康乃月
+康仕宗
+康宇寧
+康攸華
+康孟意
+康金鋒
+康美玲
+康家彰
+康庭瑞
+康配容
+康傑民
+康智昇
+康登傑
+康雅婷
+康稚暘
+康嘉蘭
+康曉蕙
+康麗貞
+張
+張一鴻
+張乃文
+張乃偉
+張力仁
+張力夫
+張又千
+張又牙
+張千里
+張士賢
+張子昌
+張小萍
+張中薇
+張尹馨
+張仁杰
+張仁傑
+張仁聰
+張元
+張元隆
+張元鴻
+張友
+張天鳳
+張尤子
+張心怡
+張心瑜
+張心馨
+張文育
+張文明
+張文彥
+張文玲
+張文軒
+張文欽
+張文雯
+張文榮
+張文豪
+張文樵
+張文爐
+張文騰
+張月容
+張世中
+張世岳
+張世明
+張世芬
+張世雯
+張世儒
+張世壎
+張以全
+張仕育
+張仕旻
+張加昇
+張可欣
+張央昌
+張巧玲
+張幼瑋
+張弘泰
+張必明
+張正余
+張正忠
+張正杰
+張正隆
+張正衛
+張正玗
+張永材
+張永昆
+張永俊
+張永棋
+張永勳
+張玄鴻
+張玉欣
+張玉玲
+張玉琪
+張玉蓉
+張玉旻
+張立文
+張立欣
+張立鈞
+張立緯
+張亦寧
+張仲平
+張仲銓
+張光仁
+張光偉
+張兆域
+張匡杰
+張吉豐
+張好禮
+張如瑩
+張宇竣
+張安妮
+張式良
+張旭宗
+張汎騏
+張羽潔
+張至睿
+張艾鈴
+張佑民
+張佑群
+張作成
+張伯駿
+張克偉
+張君如
+張君瑜
+張吟慈
+張妙慧
+張宋萍
+張宏春
+張宏瑞
+張宏銘
+張希聖
+張志
+張志仰
+張志宇
+張志舟
+張志明
+張志偉
+張志堅
+張志祥
+張志琳
+張志源
+張志達
+張志豪
+張志豪
+張志豪
+張志銘
+張志鴻
+張志瑄
+張沅璽
+張秀玉
+張秀珍
+張秀琪
+張秀蓉
+張育平
+張育崧
+張育菁
+張育慎
+張育誠
+張育彰
+張育綸
+張育銓
+張育瑋
+張良源
+張邑如
+張亞銜
+張佳文
+張佳音
+張佳惠
+張佳雯
+張佳蓉
+張佩帆
+張佩瑛
+張叔美
+張孟玉
+張孟婷
+張宗仁
+張宗賢
+張宜新
+張尚鈞
+張延任
+張念慈
+張怡欣
+張怡莉
+張怡慧
+張昆煌
+張明利
+張明祥
+張明照
+張明璋
+張昇欽
+張林芬
+張欣怡
+張欣蕙
+張治國
+張秉祺
+張芳菁
+張芳綾
+張芝友
+張芸慧
+張金山
+張金鳳
+張雨筑
+張信發
+張俊偉
+張俊堯
+張俊賢
+張冠華
+張姿媚
+張建邦
+張建祥
+張建豪
+張彥菁
+張思儀
+張恆瑋
+張政傑
+張昭元
+張柔明
+張洲期
+張為棟
+張玲婉
+張界聰
+張盈鴻
+張秋婷
+張紀君
+張美玲
+張美羚
+張美雯
+張美霞
+張致蒨
+張茂醒
+張英琦
+張郁芬
+張郁婷
+張香璽
+張倖碧
+張修豪
+張倫瑋
+張剛維
+張原謀
+張哲健
+張哲瑞
+張哲榕
+張哲維
+張哲銘
+張娟華
+張家明
+張家振
+張家淦
+張家棟
+張家菱
+張家源
+張家瑜
+張家群
+張家榕
+張家榮
+張家碩
+張家綺
+張家豪
+張家豪
+張家豪
+張家赫
+張家銘
+張家銘
+張家潤
+張家懷
+張家瑋
+張容菱
+張宸宗
+張峻杰
+張峻嘉
+張峻嚴
+張峰榮
+張庭源
+張庭瑋
+張恩瓊
+張振源
+張振鎰
+張晉通
+張晉豪
+張晏誠
+張晏齡
+張書航
+張書維
+張書豪
+張書銘
+張書馨
+張根源
+張桂華
+張桂鳳
+張泰青
+張浩堂
+張珮怡
+張珮琪
+張益州
+張益華
+張益維
+張祐慈
+張祐維
+張秦芸
+張素秋
+張素華
+張純益
+張純瑋
+張耿
+張耿維
+張耿崚
+張訓義
+張軒豪
+張高瑞
+張偉倫
+張偉鈞
+張健良
+張國志
+張國浩
+張國媛
+張國璽
+張堂凡
+張婉君
+張婉暄
+張崇偉
+張康虔
+張惟捷
+張啟明
+張敏芝
+張梅君
+張淳惠
+張清文
+張清凱
+張淑君
+張淑芳
+張淑芬
+張淑珍
+張淑貞
+張淑娟
+張淑茹
+張淑婷
+張淑琦
+張淑雅
+張淑嫻
+張淑謹
+張淵富
+張涵軒
+張盛綱
+張紹暉
+張莉茹
+張逢時
+張雪雲
+張凱宇
+張凱淳
+張凱嵐
+張凱琳
+張凱超
+張凱維
+張勝仁
+張勝傑
+張勝雄
+張博和
+張博勛
+張博鈞
+張喻
+張喬翔
+張壹能
+張婷韻
+張富淳
+張富禎
+張惠如
+張惠珊
+張惠娟
+張惠婷
+張惠琪
+張惠菁
+張惠雯
+張惠蘭
+張敦義
+張晴晴
+張景倫
+張景渾
+張景閎
+張智安
+張智剛
+張智清
+張智傑
+張智崴
+張智翔
+張智鈞
+張智豪
+張智謙
+張朝凱
+張朝龍
+張棋雯
+張湘怡
+張琪華
+張琦紹
+張登翔
+張皓崴
+張程順
+張紫鈴
+張翔智
+張舒琦
+張舜華
+張菁茹
+張華倩
+張詠茵
+張証荃
+張貴琳
+張逸凡
+張逸群
+張量然
+張鈞富
+張鈞貽
+張閔富
+張雁婷
+張雅姍
+張雅芬
+張雅玲
+張雅卿
+張雅敏
+張雅婷
+張雅婷
+張雅婷
+張雅婷
+張雅嵐
+張雅惠
+張雅惠
+張雅琪
+張雅琴
+張雅萍
+張雅雯
+張雅雯
+張雅鈴
+張雅瑩
+張雯茵
+張雯儀
+張順吉
+張順福
+張嗣文
+張意誠
+張慈灑
+張愷晏
+張新宏
+張毓
+張毓芬
+張毓倫
+張毓潔
+張源鑫
+張瑚珊
+張瑞君
+張瑞杰
+張瑞芸
+張瑞娟
+張瑞景
+張瑞樺
+張瑞氶
+張瑜君
+張瑜娟
+張祺昇
+張義忠
+張群朋
+張聖莉
+張裕昌
+張裕雯
+張詩怡
+張詩雯
+張資昊
+張道智
+張靖怡
+張鼎鉉
+張嘉元
+張嘉正
+張嘉宏
+張嘉欣
+張嘉芬
+張嘉玲
+張嘉玲
+張嘉哲
+張嘉晉
+張嘉真
+張嘉訓
+張嘉惠
+張嘉雄
+張嘉維
+張嘉聲
+張嘉珣
+張寧馨
+張榕容
+張榮盈
+張榮憲
+張熒珊
+張睿穎
+張碧娟
+張碩元
+張碩桓
+張福政
+張綱邑
+張綵芳
+張維全
+張維珊
+張維哲
+張維真
+張維淳
+張維潔
+張翠文
+張翠琪
+張肇樑
+張蓓萱
+張豪文
+張銀芳
+張銘宗
+張銘峰
+張銘翰
+張鳳平
+張鳳儀
+張廣浩
+張德榆
+張慶怡
+張慶豐
+張慧怡
+張慧娟
+張慧萍
+張慧箴
+張瑩珊
+張衛帆
+張適恆
+張學倫
+張憶君
+張曉昀
+張曉婷
+張曉菁
+張曉鳳
+張燕妮
+張翰文
+張醒世
+張錦婷
+張靜如
+張靜怡
+張靜茹
+張龍仁
+張環伊
+張謙達
+張鴻如
+張鴻智
+張曜銓
+張簡正偉
+張簡欣華
+張簡嘉人
+張藍尹
+張豐璸
+張懷恩
+張瓊之
+張瓊文
+張瓊文
+張瓊方
+張瓊惠
+張藝馨
+張麗君
+張麗淑
+張寶云
+張獻壬
+張繽文
+張繼昌
+張耀云
+張耀允
+張耀正
+張耀聲
+張釋文
+張馨文
+張馨文
+張騰元
+張儷薰
+張巍耀
+張譽馨
+張鶴耀
+張霽月
+張芃
+張倛
+張茜茹
+張琇閔
+張媜媜
+張琬宜
+張琬菁
+張菀倩
+張煒寧
+張瑋芸
+張瑋倫
+張瑋婷
+張筱君
+張筱雯
+張鄐憛
+張鈺彩
+張禕倫
+張璁文
+張鐙尹
+張恒中
+戚久智
+敖永龍
+曹士敏
+曹文彥
+曹世浩
+曹立行
+曹聿男
+曹志強
+曹佳安
+曹昌男
+曹欣良
+曹春文
+曹哲嘉
+曹峻昌
+曹珮怡
+曹偉茹
+曹淑媛
+曹勝豐
+曹智欣
+曹皓雲
+曹雅惠
+曹新彥
+曹嘉文
+曹維倫
+曹毅勇
+曹璽穠
+曹莨賢
+梁乃健
+梁仁華
+梁文安
+梁文賓
+梁世豪
+梁正忠
+梁玉玲
+梁任中
+梁汝舜
+梁君霙
+梁志彬
+梁志銘
+梁育華
+梁佳進
+梁怡芬
+梁東林
+梁信元
+梁俐琦
+梁彥豪
+梁炳鑄
+梁郁蓁
+梁家明
+梁家豪
+梁峻銘
+梁晉魁
+梁珮珮
+梁秦宜
+梁健忠
+梁啟玄
+梁淑娟
+梁莉娟
+梁勝銘
+梁惠婷
+梁景堯
+梁朝凱
+梁舒怡
+梁逸芬
+梁雅舒
+梁愷芸
+梁瑞軒
+梁聖昌
+梁嘉珍
+梁碧慧
+梁翠珊
+梁慧華
+梁曉維
+梁靜宜
+梁瓊丹
+梁繼仁
+梁懿德
+梁瑋真
+梅光宇
+梅雅婷
+畢志華
+盛心
+盛祥
+符肇中
+莫星宇
+莊一凡
+莊于瑩
+莊士國
+莊子凱
+莊仁宏
+莊心萍
+莊文昭
+莊文豪
+莊世杰
+莊弘任
+莊正揚
+莊永福
+莊玉麟
+莊如軒
+莊克偉
+莊志明
+莊志榮
+莊秀鈴
+莊育榕
+莊依婷
+莊佳榮
+莊佩雯
+莊坤哲
+莊孟玲
+莊孟紓
+莊宗勳
+莊官璇
+莊宜璇
+莊忠益
+莊怡軒
+莊昌曄
+莊明達
+莊東明
+莊欣哲
+莊玥嬛
+莊金靜
+莊俊傑
+莊建
+莊政憲
+莊秋子
+莊美馨
+莊英琴
+莊倉杰
+莊家昇
+莊家銘
+莊峻榕
+莊桓嘉
+莊珮鈴
+莊純純
+莊偉仁
+莊國辰
+莊培鑫
+莊啟文
+莊梨青
+莊清富
+莊淑芬
+莊淑婷
+莊淑閔
+莊淑珺
+莊莉莉
+莊凱茵
+莊勝利
+莊博清
+莊堯任
+莊富傑
+莊復貴
+莊惠茹
+莊惠萍
+莊惠蓉
+莊晴雲
+莊景琇
+莊智涵
+莊智鈞
+莊朝鈞
+莊登發
+莊善芳
+莊賀喬
+莊閔旭
+莊雅心
+莊雅玲
+莊雅婷
+莊雅惠
+莊雅萍
+莊雅雲
+莊雯雯
+莊嵩緯
+莊瑞南
+莊裕文
+莊嘉玲
+莊漢清
+莊維銘
+莊銘景
+莊慧心
+莊瑩姿
+莊樹宏
+莊蕙萍
+莊錦平
+莊靜怡
+莊濱綺
+莊曜旭
+莊蟬妃
+莊鎔璞
+莊馥綱
+莊麗足
+莊懿強
+莊捃娉
+莊斌智
+莊筱婷
+許一之
+許乃積
+許又仁
+許大容
+許仁全
+許元銘
+許壬耀
+許心盈
+許文忠
+許文厚
+許文桐
+許文華
+許文豪
+許文藍
+許日春
+許世民
+許世昌
+許世恬
+許世賢
+許加宏
+許平
+許弘毅
+許正忠
+許正誼
+許永明
+許永毅
+許玉芳
+許玉娟
+許玉嬋
+許甲
+許立群
+許仲賢
+許名世
+許宇杰
+許戎岑
+許汎穎
+許至全
+許佑銓
+許克仲
+許君豪
+許妍希
+許宏偉
+許宏德
+許志同
+許志宏
+許志崇
+許志雄
+許志維
+許志遠
+許志鵬
+許汶州
+許秀珊
+許秀蓉
+許育菁
+許育誠
+許良
+許貝如
+許佳政
+許佳雯
+許佩茹
+許卓塵
+許孟翔
+許宗榮
+許幸雯
+許怡珮
+許承訓
+許明傑
+許明德
+許松等
+許泓琮
+許芳慈
+許芳銘
+許芙瑲
+許金發
+許信榮
+許俊雄
+許姿怡
+許彥然
+許恬綾
+許昭元
+許柏樺
+許珊瑜
+許秋玲
+許美芳
+許美華
+許致維
+許英傑
+許郁敏
+許俸昌
+許修銘
+許原銘
+許哲瑞
+許哲彰
+許哲豪
+許哲瑋
+許家宣
+許家傑
+許家暘
+許家彰
+許家榮
+許家豪
+許家豪
+許家慶
+許宸豪
+許峻哲
+許峻瑋
+許峰銘
+許庭瑋
+許振湖
+許時嘉
+許晉熒
+許書
+許書榮
+許書銓
+許根宜
+許栓豪
+許浩瑋
+許珮嘉
+許益軒
+許祐萊
+許素菁
+許純瑜
+許耿豪
+許財得
+許偉忠
+許國安
+許國賢
+許婉茹
+許彩真
+許啟揚
+許梅菁
+許淳琇
+許清楓
+許淑芬
+許淑貞
+許淑茹
+許淑惠
+許淑華
+許淑蓮
+許盛昌
+許莉莉
+許凱惇
+許凱嘉
+許勝勛
+許博為
+許博森
+許堡如
+許富忠
+許富雄
+許惠如
+許惠珍
+許惠茹
+許惠琳
+許惠雯
+許惠瀅
+許晴斐
+許景鈞
+許智玲
+許智惟
+許智凱
+許智翔
+許智雄
+許智德
+許朝富
+許欽豪
+許登淵
+許竣能
+許善凱
+許舒茜
+許華倚
+許詠勝
+許貴彰
+許逸章
+許進興
+許閔雄
+許雅欣
+許雅玲
+許雅淑
+許雅婷
+許雅惠
+許雅惠
+許雅萍
+許雅雁
+許雅雯
+許雅慧
+許雯琳
+許順清
+許意苹
+許愷翔
+許楨祥
+許毓娟
+許源泉
+許瑞
+許瑞芸
+許瑞恩
+許瑞儀
+許瑜芳
+許稟曼
+許聖杰
+許裕億
+許詩筠
+許鈴英
+許嘉元
+許嘉芳
+許嘉倩
+許嘉珮
+許嘉惠
+許嘉穎
+許榕
+許榮隆
+許瑤馨
+許碧珠
+許碩修
+許箔涵
+許維育
+許維真
+許翠端
+許誘
+許銘仁
+許銘哲
+許銘財
+許閣文
+許鳳雅
+許慶文
+許慧君
+許慧貞
+許慕貞
+許適楓
+許憶芳
+許曉菁
+許燕萍
+許錦文
+許靜宜
+許靜雪
+許嶸仁
+許鴻文
+許薰文
+許懷文
+許瓊文
+許瓊月
+許隴祺
+許麗華
+許繽如
+許耀文
+許馨仁
+許騰元
+許躍議
+許昶華
+許琇婷
+許琮邦
+許嫈玉
+許筱萍
+許鈺茹
+許鋑鴻
+許恒達
+連仁聖
+連世和
+連佑仁
+連秀仁
+連佩泠
+連芸凰
+連建智
+連秋旺
+連容琪
+連桂宏
+連偉傑
+連婉儀
+連啟智
+連勝祥
+連雅貞
+連嘉純
+連慶豐
+連靜茹
+郭一樺
+郭乃榮
+郭人豪
+郭力瑋
+郭于禎
+郭士華
+郭士鳳
+郭子立
+郭子熒
+郭子禕
+郭仁哲
+郭天立
+郭文同
+郭文彥
+郭文惠
+郭文銓
+郭水山
+郭世蘭
+郭卉雯
+郭正宗
+郭永明
+郭玉珍
+郭立
+郭立達
+郭仲淵
+郭兆雯
+郭夙吟
+郭年真
+郭有鎮
+郭至哲
+郭君怡
+郭宏文
+郭宏駿
+郭志宏
+郭志祥
+郭杏
+郭沂村
+郭育先
+郭育昌
+郭育維
+郭邦彥
+郭佳欣
+郭佳雯
+郭佳鑫
+郭佩琦
+郭奇文
+郭孟蓉
+郭宗慶
+郭尚勳
+郭忠和
+郭怡伶
+郭怡君
+郭怡君
+郭怡秀
+郭怡鈴
+郭承儀
+郭明宗
+郭明峰
+郭明道
+郭明瑋
+郭松穎
+郭武安
+郭玟玟
+郭玥妦
+郭芳君
+郭芳雯
+郭芝睿
+郭長樹
+郭信宏
+郭保君
+郭俊宏
+郭俊男
+郭俊信
+郭俊億
+郭俐亨
+郭冠廷
+郭品秀
+郭姿伶
+郭姿欣
+郭威志
+郭建宏
+郭建廷
+郭建良
+郭建源
+郭彥君
+郭彥甫
+郭思宜
+郭政忠
+郭政璋
+郭昭安
+郭昭顯
+郭昱旻
+郭柏秀
+郭炳成
+郭玲慈
+郭盈君
+郭省萱
+郭美君
+郭美姍
+郭美善
+郭美蘭
+郭茂虔
+郭貞孍
+郭倍安
+郭倖銓
+郭凌志
+郭哲成
+郭哲瑋
+郭家宏
+郭家祥
+郭家豪
+郭家慧
+郭宸昀
+郭峰昇
+郭庭蓉
+郭振漢
+郭晏佑
+郭書豪
+郭桂鳳
+郭浩志
+郭益元
+郭祖佑
+郭素綾
+郭耿任
+郭軒
+郭國正
+郭婉玲
+郭啟沐
+郭添新
+郭淑芯
+郭淑敏
+郭淑慧
+郭逢祥
+郭勝
+郭喬年
+郭惠青
+郭惠旻
+郭智明
+郭智瑋
+郭琪媧
+郭詠珮
+郭進昌
+郭雅汝
+郭雅婷
+郭雅菱
+郭雅薇
+郭慈盈
+郭煜崇
+郭瑞欽
+郭義棠
+郭詩屏
+郭嘉偉
+郭夢竹
+郭榮慶
+郭碧娟
+郭綸益
+郭肇強
+郭銘傑
+郭慶生
+郭慧珍
+郭慧薄
+郭儒謙
+郭曉卉
+郭曉雯
+郭燕玲
+郭蕙萍
+郭錕霖
+郭靜美
+郭濟維
+郭駿
+郭曜彰
+郭鎮元
+郭瓊媛
+郭麗秋
+郭獻文
+郭蘊忱
+郭馨鎂
+郭籠慶
+郭旻瑜
+郭晟宇
+郭暐
+郭鈺芳
+郭恒妙
+陳一成
+陳一華
+陳一瑋
+陳乃釧
+陳乃榮
+陳人甄
+陳力凡
+陳又昕
+陳又聖
+陳上倫
+陳千錦
+陳士傑
+陳大同
+陳子仁
+陳子彥
+陳子鈞
+陳小萍
+陳己升
+陳中銘
+陳之諭
+陳仁宗
+陳仁傑
+陳今凡
+陳元孝
+陳元靖
+陳兮
+陳天仁
+陳天賞
+陳心怡
+陳心怡
+陳心潔
+陳文川
+陳文成
+陳文忠
+陳文亮
+陳文昭
+陳文郎
+陳文涓
+陳文彬
+陳文章
+陳文欽
+陳文華
+陳文蓉
+陳文德
+陳文學
+陳文鴻
+陳文鈺
+陳月妮
+陳水泉
+陳世宇
+陳世宗
+陳世明
+陳世杰
+陳世政
+陳世庭
+陳世偉
+陳世章
+陳世棻
+陳世盟
+陳世豪
+陳世澤
+陳世鴻
+陳主欣
+陳以靜
+陳仕芳
+陳仕源
+陳仕叡
+陳加明
+陳功霖
+陳可欣
+陳右民
+陳右諭
+陳巨鶠
+陳巧珊
+陳巧惠
+陳巧頤
+陳幼欣
+陳弘文
+陳弘欣
+陳弘訓
+陳弘毅
+陳弘鎧
+陳札培
+陳正宏
+陳正昌
+陳正芳
+陳正峰
+陳正傑
+陳正雄
+陳正豪
+陳正興
+陳民
+陳永
+陳永宗
+陳永昌
+陳永青
+陳永凌
+陳永康
+陳永富
+陳永誌
+陳永穆
+陳永珩
+陳玉文
+陳玉奇
+陳玉芳
+陳玉芬
+陳玉珊
+陳玉珍
+陳玉娟
+陳玉珠
+陳玉梅
+陳玉琳
+陳玉菁
+陳玉雲
+陳玉嬌
+陳玉璘
+陳玉馨
+陳生松
+陳石育
+陳立凡
+陳立言
+陳立欣
+陳立倫
+陳立偉
+陳立翎
+陳立維
+陳立翰
+陳亦凡
+陳伊倫
+陳仲志
+陳仲賢
+陳光甫
+陳光華
+陳兆奕
+陳吉利
+陳向榮
+陳在明
+陳如芬
+陳如蘋
+陳宇杰
+陳宇超
+陳安佑
+陳安樸
+陳旬
+陳有志
+陳江立
+陳百傑
+陳羽珊
+陳至凱
+陳亨成
+陳佑任
+陳佑庭
+陳伸田
+陳伯杰
+陳伯蒼
+陳克宇
+陳克銘
+陳君妃
+陳君航
+陳君榮
+陳君儒
+陳均碩
+陳妙楨
+陳妍伶
+陳妍秀
+陳妤蕙
+陳孝銓
+陳宏仁
+陳宏安
+陳宏昌
+陳宏波
+陳宏美
+陳宏彬
+陳宏隆
+陳宏達
+陳宏銘
+陳宏賢
+陳宏煒
+陳廷俊
+陳志山
+陳志平
+陳志仲
+陳志安
+陳志宏
+陳志沛
+陳志岳
+陳志怡
+陳志明
+陳志昇
+陳志欣
+陳志彥
+陳志浩
+陳志偉
+陳志強
+陳志祥
+陳志翔
+陳志雄
+陳志源
+陳志達
+陳志榮
+陳志維
+陳志豪
+陳志豪
+陳志豪
+陳志遠
+陳志銘
+陳志寬
+陳志穎
+陳志鴻
+陳志斌
+陳攸婷
+陳村龍
+陳沛吟
+陳汶津
+陳甸
+陳秀君
+陳秀芝
+陳秀玲
+陳秀娟
+陳秀敏
+陳秀惠
+陳秀雅
+陳秀鈴
+陳秀慧
+陳秀蘭
+陳育正
+陳育佐
+陳育奇
+陳育章
+陳育廉
+陳育詩
+陳育瑩
+陳育斌
+陳良政
+陳見秋
+陳辰揚
+陳酉茹
+陳亞鈴
+陳依辰
+陳依翔
+陳佳
+陳佳汝
+陳佳伶
+陳佳吟
+陳佳宏
+陳佳妮
+陳佳玥
+陳佳盈
+陳佳真
+陳佳惠
+陳佳琪
+陳佳琦
+陳佳雯
+陳佳群
+陳佳鳳
+陳佳慧
+陳佳璘
+陳佳駿
+陳佳怜
+陳侃婷
+陳佩君
+陳佩君
+陳佩佩
+陳佩芸
+陳佩真
+陳佩琳
+陳佩瑜
+陳佩瑩
+陳侑娥
+陳其鈞
+陳協昌
+陳和成
+陳坤佐
+陳坤傑
+陳坤鍾
+陳委承
+陳孟伶
+陳孟良
+陳孟威
+陳孟偉
+陳孟琪
+陳孟鈴
+陳孟輝
+陳季佑
+陳宗仁
+陳宗志
+陳宗盈
+陳宗雄
+陳宗旗
+陳宗緯
+陳宗龍
+陳定至
+陳宜平
+陳宜君
+陳宜秀
+陳宜姿
+陳宜培
+陳宜群
+陳宜璋
+陳宜旻
+陳宛姍
+陳尚文
+陳尚瑜
+陳居仁
+陳岳君
+陳幸足
+陳幸滿
+陳延道
+陳忠良
+陳忠義
+陳怡
+陳怡文
+陳怡卉
+陳怡冰
+陳怡如
+陳怡如
+陳怡如
+陳怡如
+陳怡如
+陳怡如
+陳怡安
+陳怡竹
+陳怡伶
+陳怡伶
+陳怡伶
+陳怡利
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡君
+陳怡廷
+陳怡秀
+陳怡昌
+陳怡芳
+陳怡珊
+陳怡香
+陳怡真
+陳怡婷
+陳怡婷
+陳怡琴
+陳怡菁
+陳怡雯
+陳怡誠
+陳怡碩
+陳怡蓉
+陳怡潔
+陳怡儒
+陳怡穎
+陳怡靜
+陳怡靜
+陳怡蘋
+陳怡蓁
+陳怡叡
+陳招誠
+陳易村
+陳昌文
+陳昌港
+陳昆杰
+陳昂佑
+陳明正
+陳明伸
+陳明宏
+陳明材
+陳明昌
+陳明政
+陳明珠
+陳明莉
+陳明婷
+陳明楷
+陳明裕
+陳明德
+陳明賢
+陳明豐
+陳昕方
+陳昇毅
+陳東華
+陳杰盛
+陳松萍
+陳欣如
+陳欣宏
+陳欣宜
+陳欣怡
+陳欣怡
+陳欣泰
+陳欣瑜
+陳欣蘭
+陳泳任
+陳法光
+陳泓翔
+陳泓霖
+陳治宇
+陳泊辰
+陳玟光
+陳玟伶
+陳玟瑛
+陳玫如
+陳玫君
+陳玫芳
+陳玫臻
+陳玥燕
+陳秉淳
+陳秉斌
+陳芳珍
+陳芳萱
+陳芝倩
+陳芝範
+陳芯怡
+陳邵鑫
+陳金良
+陳金堤
+陳金聲
+陳長慶
+陳雨新
+陳青瑜
+陳亭君
+陳亮丞
+陳亮君
+陳亮穎
+陳信伊
+陳信宇
+陳信旭
+陳信吟
+陳信宏
+陳信宏
+陳信甫
+陳信忠
+陳信智
+陳信裕
+陳信豪
+陳信學
+陳保元
+陳保彰
+陳俊仁
+陳俊文
+陳俊仰
+陳俊吉
+陳俊如
+陳俊宇
+陳俊安
+陳俊成
+陳俊旭
+陳俊佑
+陳俊呈
+陳俊宏
+陳俊宏
+陳俊宏
+陳俊宏
+陳俊廷
+陳俊男
+陳俊男
+陳俊良
+陳俊和
+陳俊杰
+陳俊郎
+陳俊彬
+陳俊傑
+陳俊凱
+陳俊華
+陳俊源
+陳俊達
+陳俊榕
+陳俊維
+陳俊豪
+陳俊銘
+陳俊銘
+陳俊璋
+陳俊樺
+陳俊諺
+陳俊龍
+陳俊瑋
+陳俐安
+陳俐秀
+陳俐潔
+陳俞仲
+陳俞妙
+陳俞靜
+陳冠夫
+陳冠仰
+陳冠如
+陳冠宇
+陳冠州
+陳冠舟
+陳冠含
+陳冠宏
+陳冠廷
+陳冠男
+陳冠傑
+陳冠嗚
+陳冠維
+陳冠銘
+陳冠樺
+陳冠妏
+陳則欽
+陳勇在
+陳勇志
+陳勇達
+陳勁吾
+陳南居
+陳厚銘
+陳品先
+陳品秀
+陳品輝
+陳奕中
+陳奕任
+陳奕帆
+陳奕利
+陳奕廷
+陳奕盈
+陳奕達
+陳奕穎
+陳奕蓁
+陳奎每
+陳姿文
+陳姿百
+陳姿利
+陳姿吟
+陳姿岐
+陳姿珊
+陳姿蓉
+陳姿穎
+陳姿璇
+陳威丞
+陳威全
+陳威宇
+陳威成
+陳威助
+陳威廷
+陳威志
+陳威志
+陳威邑
+陳威翔
+陳威豪
+陳威儒
+陳威霖
+陳宣任
+陳宣每
+陳宥任
+陳宥諭
+陳帥名
+陳建中
+陳建元
+陳建文
+陳建任
+陳建同
+陳建宇
+陳建安
+陳建州
+陳建成
+陳建旭
+陳建行
+陳建呈
+陳建宏
+陳建宏
+陳建宏
+陳建宏
+陳建廷
+陳建志
+陳建志
+陳建甫
+陳建男
+陳建良
+陳建邦
+陳建明
+陳建國
+陳建揚
+陳建華
+陳建評
+陳建源
+陳建達
+陳建榮
+陳建蓉
+陳建輔
+陳建銘
+陳建銘
+陳建璋
+陳建勳
+陳建樺
+陳建龍
+陳建烜
+陳彥夫
+陳彥文
+陳彥任
+陳彥合
+陳彥宇
+陳彥帆
+陳彥竹
+陳彥伸
+陳彥君
+陳彥壯
+陳彥宏
+陳彥宏
+陳彥廷
+陳彥甫
+陳彥良
+陳彥昌
+陳彥凱
+陳彥愷
+陳彥綸
+陳彥豪
+陳彥慰
+陳彥勳
+陳彥霖
+陳律元
+陳思先
+陳思年
+陳思妤
+陳思亮
+陳思源
+陳思蓉
+陳思樸
+陳思穎
+陳思翰
+陳思璇
+陳政文
+陳政宏
+陳政昕
+陳政堯
+陳政裕
+陳政毅
+陳政謙
+陳春妃
+陳春明
+陳春燕
+陳昭文
+陳昭宇
+陳昭伶
+陳昭志
+陳昭偉
+陳昭榮
+陳昭銘
+陳昭瑋
+陳映旭
+陳映志
+陳映儒
+陳星宇
+陳星熹
+陳昱丞
+陳昱全
+陳昱汝
+陳昱宏
+陳昱甫
+陳昱達
+陳昱樺
+陳柔安
+陳柄方
+陳柏元
+陳柏份
+陳柏宇
+陳柏州
+陳柏年
+陳柏舟
+陳柏含
+陳柏宏
+陳柏志
+陳柏沅
+陳柏岳
+陳柏峰
+陳柏凱
+陳柏瑞
+陳柏寧
+陳柏蓉
+陳柏璋
+陳柏翰
+陳柏輯
+陳柏瑋
+陳洲星
+陳炫君
+陳炳仲
+陳炳辰
+陳炳錕
+陳炯錦
+陳珊珊
+陳珍瑩
+陳皆興
+陳皇旭
+陳皇龍
+陳盈全
+陳盈如
+陳盈如
+陳盈安
+陳盈竹
+陳盈君
+陳盈孜
+陳盈杉
+陳盈貝
+陳盈婷
+陳盈綺
+陳盈璋
+陳盈諭
+陳盈璇
+陳相達
+陳祈賓
+陳禹齊
+陳科順
+陳秋方
+陳秋帆
+陳秋秀
+陳秋純
+陳秋萍
+陳秋雯
+陳秋燕
+陳紅玉
+陳紀足
+陳美云
+陳美玉
+陳美如
+陳美年
+陳美伶
+陳美君
+陳美吟
+陳美廷
+陳美秀
+陳美芝
+陳美玲
+陳美娟
+陳美純
+陳美喬
+陳美惠
+陳美琴
+陳美菱
+陳美鈴
+陳美慧
+陳美儒
+陳美靜
+陳美鈺
+陳羿谷
+陳致仰
+陳致宏
+陳致福
+陳致叡
+陳若曦
+陳茂雄
+陳英杰
+陳英振
+陳英傑
+陳英蓓
+陳英鴻
+陳苓娟
+陳虹曲
+陳虹吟
+陳虹潔
+陳衍至
+陳衍霖
+陳貞旭
+陳貞妤
+陳貞蓉
+陳貞瑋
+陳郁仁
+陳郁文
+陳郁芬
+陳郁傑
+陳郁菁
+陳郁楓
+陳重光
+陳重廷
+陳重儒
+陳韋在
+陳韋伶
+陳韋廷
+陳韋承
+陳韋豪
+陳音
+陳飛良
+陳香如
+陳香吟
+陳香婷
+陳倍甄
+陳倖翠
+陳凌硯
+陳哲民
+陳哲強
+陳哲賢
+陳家正
+陳家奇
+陳家珍
+陳家祥
+陳家湖
+陳家雯
+陳家漢
+陳家儀
+陳家慧
+陳家興
+陳家琮
+陳容萱
+陳峰州
+陳恕
+陳恩榮
+陳振東
+陳振湧
+陳振銘
+陳時盟
+陳書光
+陳書毓
+陳桂玉
+陳桂慧
+陳泰全
+陳泰伶
+陳泰峰
+陳泰銘
+陳浚欽
+陳浩茹
+陳珮云
+陳珮怡
+陳珮珮
+陳珮瑜
+陳珮瑋
+陳益裕
+陳祐悌
+陳紡
+陳素珍
+陳素娥
+陳素瑜
+陳純怡
+陳耘寬
+陳荃豪
+陳郡怡
+陳乾淦
+陳偉民
+陳偉信
+陳偉莉
+陳偉裕
+陳健上
+陳健封
+陳健霖
+陳國元
+陳國明
+陳國峰
+陳國梁
+陳國棋
+陳國榮
+陳國鋒
+陳堅民
+陳培育
+陳培端
+陳婉育
+陳婉卿
+陳婉菁
+陳婉潔
+陳崇原
+陳崑銘
+陳彩純
+陳捷
+陳啟存
+陳啟清
+陳啟銘
+陳敏星
+陳敏新
+陳梓瑋
+陳梅馨
+陳清奇
+陳清源
+陳淑
+陳淑君
+陳淑怡
+陳淑芬
+陳淑芬
+陳淑玲
+陳淑秋
+陳淑貞
+陳淑娟
+陳淑娟
+陳淑真
+陳淑羚
+陳淑惠
+陳淑萍
+陳淑雅
+陳淑鈴
+陳淑慧
+陳淑靜
+陳淵秋
+陳猛宗
+陳祥鈞
+陳紹庭
+陳莊偉
+陳莉婷
+陳許民
+陳雪芬
+陳雪華
+陳傑裕
+陳凱玲
+陳凱鈿
+陳勝如
+陳勝嘉
+陳博康
+陳喬宇
+陳婷玟
+陳富民
+陳富榮
+陳惠文
+陳惠君
+陳惠芬
+陳惠玲
+陳惠美
+陳惠娟
+陳惠婷
+陳惠萍
+陳惠雯
+陳惠雯
+陳惠齡
+陳揚哲
+陳晶晶
+陳景泰
+陳景鑫
+陳智亮
+陳智偉
+陳智陽
+陳智寬
+陳朝文
+陳朝熙
+陳棋珍
+陳湘于
+陳湘琴
+陳渝文
+陳琪雯
+陳琦琳
+陳登隆
+陳筑筠
+陳肅權
+陳舒憛
+陳菁
+陳華偉
+陳詠亮
+陳賀鈺
+陳辜亮
+陳逸平
+陳逸明
+陳逸盈
+陳逸菁
+陳逸維
+陳逸鴻
+陳進志
+陳進隆
+陳鈞屏
+陳閔隆
+陳隆斌
+陳雅君
+陳雅玫
+陳雅芬
+陳雅玲
+陳雅玲
+陳雅苓
+陳雅珮
+陳雅雪
+陳雅婷
+陳雅惠
+陳雅惠
+陳雅琪
+陳雅琴
+陳雅菁
+陳雅雯
+陳雅雯
+陳雅鈴
+陳雅慧
+陳雅韻
+陳雯
+陳雯惠
+陳雲樸
+陳順發
+陳傳興
+陳意文
+陳意雯
+陳慈雅
+陳愛甄
+陳敬文
+陳敬傑
+陳新烈
+陳業統
+陳榆涵
+陳毓良
+陳毓茹
+陳毓鈞
+陳源正
+陳溫萍
+陳照慈
+陳煦淑
+陳煥森
+陳瑞利
+陳瑞昌
+陳瑞芬
+陳瑞釧
+陳瑞瑜
+陳瑞霖
+陳瑞麟
+陳瑜詩
+陳祺富
+陳經國
+陳義忠
+陳義緯
+陳聖尹
+陳聖宜
+陳聖傑
+陳聖憲
+陳萱蔓
+陳蜂灝
+陳裕升
+陳裕廷
+陳裕智
+陳詩平
+陳詩泉
+陳詩婷
+陳詩詩
+陳詩蘋
+陳運徵
+陳達裕
+陳雍
+陳靖怡
+陳鼎仁
+陳嘉仁
+陳嘉亨
+陳嘉宏
+陳嘉怡
+陳嘉玲
+陳嘉峰
+陳嘉茵
+陳嘉淦
+陳嘉惠
+陳嘉雁
+陳嘉勤
+陳嘉德
+陳嘉瑩
+陳嘉營
+陳嘉琮
+陳旗昌
+陳榮杰
+陳榮進
+陳榮燿
+陳漢珍
+陳漢蔚
+陳瑤真
+陳碧紅
+陳碧雲
+陳碩偉
+陳福林
+陳綺華
+陳維邦
+陳維哲
+陳維儀
+陳翠婷
+陳肇鴻
+陳蓓玲
+陳誌睿
+陳銘
+陳銘泉
+陳銘強
+陳銘雄
+陳銘耀
+陳鳳玲
+陳鳳鳴
+陳儀
+陳儀珊
+陳儀潔
+陳寬如
+陳廣麟
+陳德和
+陳德堂
+陳德遠
+陳徵宗
+陳慶星
+陳慶華
+陳慶維
+陳慶翰
+陳慶鴻
+陳慧玉
+陳慧如
+陳慧君
+陳慧芝
+陳慧珊
+陳慧玲
+陳慧美
+陳慧卿
+陳慧真
+陳慧純
+陳慧敏
+陳慧萍
+陳慧雯
+陳慧蓉
+陳慧樵
+陳慧蘭
+陳慕儒
+陳毅正
+陳毅鴻
+陳潔音
+陳瑩芳
+陳瑩蓉
+陳瑩瑄
+陳緯恩
+陳蔚青
+陳誼芳
+陳賢典
+陳輝吉
+陳震宇
+陳黎桂
+陳學明
+陳憲仁
+陳憲儀
+陳憶雯
+陳曉姍
+陳曉青
+陳曉風
+陳曉嵐
+陳曉菁
+陳曉筠
+陳曉慧
+陳曉麗
+陳樹年
+陳澤珊
+陳燕伶
+陳燕菁
+陳燕怜
+陳穎君
+陳穎祥
+陳穎慧
+陳穆蓉
+陳翰璋
+陳蕙芳
+陳蕙苹
+陳錫華
+陳錦秀
+陳錦堂
+陳錦慧
+陳錦鴻
+陳靜如
+陳靜宜
+陳靜怡
+陳靜怡
+陳靜怡
+陳靜芳
+陳靜淑
+陳靜寧
+陳靜儀
+陳靜慧
+陳靜賢
+陳龍生
+陳龍寬
+陳曙東
+陳聰仁
+陳臆仁
+陳薇
+陳薇如
+陳謙毅
+陳駿揚
+陳鴻文
+陳鴻志
+陳鴻清
+陳鴻裕
+陳鴻霖
+陳璿如
+陳豐振
+陳懷哲
+陳璽爭
+陳瓊淇
+陳瓊樺
+陳藝心
+陳贊中
+陳鏗任
+陳韻夙
+陳韻如
+陳韻如
+陳韻如
+陳韻竹
+陳韻婷
+陳韻靜
+陳鵬禾
+陳麒元
+陳麒全
+陳麗文
+陳麗如
+陳麗宇
+陳麗而
+陳麗芬
+陳麗卿
+陳麗珠
+陳麗婷
+陳麗萍
+陳麗雯
+陳麗蓮
+陳寶玉
+陳寶蓮
+陳耀仁
+陳耀笙
+陳馨怡
+陳儷文
+陳櫻容
+陳譽齡
+陳鶴中
+陳懿映
+陳艷鈴
+陳芊秀
+陳怜君
+陳旻政
+陳玠源
+陳姮霏
+陳姵如
+陳姵吟
+陳姵瑱
+陳昶昱
+陳珈琦
+陳彧馨
+陳琇如
+陳堜
+陳琮閔
+陳琬婷
+陳琬菁
+陳椸涓
+陳瑋
+陳瑋典
+陳瑋耘
+陳瑋昶
+陳筱芳
+陳筱婷
+陳筱筠
+陳萩芸
+陳鈺玫
+陳鈺婷
+陳鈺璽
+陳銚茹
+陳霈宇
+陳薏雯
+陳瀅如
+陳瀅淑
+陳嬿因
+陳嬿伶
+陳顗文
+陳鑫麟
+陸小燕
+陸正義
+陸季宏
+陸信龍
+陸津華
+陸梅婷
+陸雲泰
+陸鳳玲
+陸淯鈴
+陶育均
+陶惟萱
+章文芝
+章佳雲
+章根源
+章翔
+章瓊方
+麥佩雯
+麥盧寶全
+傅一雄
+傅子恒
+傅文進
+傅正希
+傅光智
+傅宏斌
+傅亞凡
+傅怡芳
+傅金宏
+傅建國
+傅映先
+傅美蓉
+傅珮淇
+傅國棟
+傅啟皇
+傅淑雯
+傅斯平
+傅雅卿
+傅煌錦
+傅鉛文
+傅德政
+傅鍬淼
+傅琮
+單亦俠
+喻至善
+喬宗堯
+富康翔
+彭上吉
+彭士恒
+彭仁志
+彭及辰
+彭文宏
+彭文慧
+彭以信
+彭正良
+彭玉華
+彭伊芬
+彭如敏
+彭成傑
+彭旭初
+彭宏君
+彭志豪
+彭佳偉
+彭宗意
+彭怡蕙
+彭朋雍
+彭秉正
+彭保欣
+彭俊福
+彭冠瑛
+彭威翔
+彭建榮
+彭律凡
+彭柏威
+彭秋萍
+彭若慈
+彭郁仁
+彭哲仁
+彭浩倫
+彭偉君
+彭國峰
+彭崇信
+彭啟鈞
+彭淑珍
+彭盛
+彭雪琦
+彭喜浩
+彭晶聲
+彭滋萍
+彭舒彥
+彭開明
+彭雅絹
+彭愛蘋
+彭瑞苓
+彭聖萍
+彭嘉君
+彭榮桂
+彭銘淇
+彭慧如
+彭賢一
+彭曉琪
+彭錦炫
+彭駿洁
+彭麗慧
+彭馨慧
+彭瑋彥
+彭頎蘋
+景雨秋
+曾凡哲
+曾于慈
+曾千豪
+曾士軒
+曾士恒
+曾子庭
+曾小玲
+曾仁佑
+曾元志
+曾孔鈺
+曾文
+曾文忠
+曾文彬
+曾文慧
+曾文顗
+曾世煌
+曾令瑜
+曾平誥
+曾正耀
+曾玉如
+曾玉菁
+曾立德
+曾仲盟
+曾吉宏
+曾如君
+曾安琪
+曾羽嶺
+曾君豪
+曾志玄
+曾志傑
+曾志麟
+曾秀梅
+曾育菁
+曾佳玲
+曾佳瑱
+曾季歆
+曾尚志
+曾怡娟
+曾怡嘉
+曾承志
+曾明德
+曾泓霖
+曾芝蘭
+曾信傑
+曾俊彥
+曾俊智
+曾俊豪
+曾俊瑋
+曾冠樺
+曾品彰
+曾姿綺
+曾威諭
+曾建和
+曾建博
+曾建榮
+曾建霖
+曾彥閔
+曾彥翰
+曾思維
+曾政豪
+曾昭翔
+曾映齡
+曾柏涵
+曾柏興
+曾皇龍
+曾秋敏
+曾美怡
+曾美華
+曾美齡
+曾英峰
+曾郁文
+曾郁穎
+曾家振
+曾展其
+曾書慧
+曾珮琳
+曾素鈴
+曾軒彬
+曾偉翔
+曾健逢
+曾國志
+曾國書
+曾國裕
+曾國鋆
+曾婉惠
+曾庸哲
+曾啟強
+曾梅玉
+曾淑芳
+曾淑敏
+曾淑萍
+曾涵副
+曾祥達
+曾貫智
+曾凱悌
+曾博彥
+曾富鈺
+曾惠玲
+曾惠雯
+曾斐紅
+曾智弘
+曾智祺
+曾湘雲
+曾舒平
+曾華齡
+曾貴禎
+曾鈞鼎
+曾雅青
+曾雅惠
+曾雅鉉
+曾雲沐
+曾意文
+曾慈惠
+曾暉洸
+曾溥元
+曾煥傑
+曾瑞晃
+曾瑛琳
+曾筠凊
+曾聖然
+曾裕凱
+曾詩翰
+曾靖娟
+曾鼎元
+曾嘉英
+曾榮
+曾碧蓮
+曾維群
+曾銘銜
+曾德龍
+曾慶瑄
+曾慧真
+曾澄堉
+曾憲忠
+曾曉琪
+曾蕙菁
+曾靜怡
+曾繁青
+曾鴻家
+曾懷賢
+曾瓊慧
+曾韻真
+曾麗娟
+曾寶磁
+曾繼增
+曾耀賢
+曾馨儀
+曾齡慧
+曾郅絜
+曾琮彥
+曾暐清
+曾筱婷
+曾鈺芬
+曾瞍
+游力行
+游士漢
+游大緯
+游之嫻
+游文志
+游文聰
+游世斌
+游本威
+游玉姿
+游兆君
+游君苹
+游志偉
+游李雄
+游亞俐
+游佳敏
+游佩勳
+游宗憲
+游宜群
+游怡祥
+游昌翰
+游明儀
+游欣
+游青霏
+游奕霖
+游政璋
+游秋怡
+游英如
+游娟娟
+游家豪
+游恩政
+游珮筠
+游高杰
+游婉青
+游啟輝
+游淑如
+游淑惠
+游祥杰
+游凱媜
+游喬智
+游惠玲
+游景翔
+游智超
+游朝舜
+游竣盛
+游舜傑
+游進富
+游雅芳
+游雅婷
+游雅筠
+游瑞蓮
+游裕德
+游榮華
+游慶芳
+游輝祥
+游曉芸
+游錫宗
+游駿偉
+游鎮邦
+游獻群
+游旻憲
+游矞皇
+湯一珊
+湯今蘭
+湯玉琴
+湯志忠
+湯佳翰
+湯岳豊
+湯治邦
+湯家豪
+湯健文
+湯淵富
+湯富棋
+湯詠瑜
+湯雅楓
+湯慶錚
+湯鴻賢
+焦信祥
+程之寧
+程文鍾
+程立輝
+程志文
+程尚則
+程秉鑫
+程奕欣
+程建翰
+程柏章
+程秋蘭
+程偉政
+程婉欣
+程淑玲
+程斐文
+程雅惠
+程詩婷
+程潔菡
+程瓊萱
+程蘊霞
+童士芬
+童弘
+童安亨
+童信和
+童美滿
+童惟新
+童湘芸
+童聖傑
+童韻如
+童瀅蓉
+舒婷婷
+華國鋒
+覃思齊
+費騏葳
+賀厚平
+賀瑞麗
+買菁華
+辜信福
+辜郁仁
+辜惠群
+辜靜怡
+閔任遠
+陽正光
+雲智勇
+須上苑
+馮允中
+馮文政
+馮永瀅
+馮佑雄
+馮佳琦
+馮長龍
+馮建筌
+馮美珊
+馮晉嘉
+馮彩娟
+馮博偉
+馮翔瑜
+馮瑞陽
+馮誌遵
+馮熾煒
+馮耀文
+黃一
+黃一倫
+黃乙上
+黃力言
+黃上芳
+黃凡維
+黃于芬
+黃于珊
+黃于哲
+黃于真
+黃于禎
+黃千芳
+黃千凌
+黃千華
+黃士
+黃士欣
+黃士原
+黃士峰
+黃士釗
+黃士嘉
+黃士豪
+黃士賢
+黃大倫
+黃子才
+黃子建
+黃子卿
+黃子軒
+黃子穆
+黃小佩
+黃小娟
+黃山峰
+黃才旺
+黃中偉
+黃之亭
+黃仁弘
+黃仁良
+黃仁柏
+黃仁璋
+黃元山
+黃元隆
+黃元駿
+黃友謙
+黃天健
+黃少雨
+黃心怡
+黃心怡
+黃心怡
+黃心儀
+黃心姮
+黃文正
+黃文孝
+黃文村
+黃文怡
+黃文信
+黃文彥
+黃文玲
+黃文益
+黃文勝
+黃文隆
+黃文祺
+黃文榮
+黃文璋
+黃文龍
+黃文麒
+黃日青
+黃月瑾
+黃世安
+黃世宜
+黃世朋
+黃世堅
+黃世湧
+黃世嘉
+黃世增
+黃世穎
+黃以喬
+黃仕達
+黃加欣
+黃可甄
+黃巧婷
+黃平宇
+黃弘吉
+黃弘毅
+黃正一
+黃正安
+黃正佩
+黃正偉
+黃正順
+黃正錕
+黃永仁
+黃永昇
+黃永智
+黃永漢
+黃汀滿
+黃玉君
+黃玉雨
+黃玉娟
+黃玉婷
+黃玉菁
+黃玉瑩
+黃玉蘭
+黃立文
+黃立芬
+黃立達
+黃立緯
+黃亦萱
+黃仲正
+黃仲煦
+黃任延
+黃光玉
+黃光滿
+黃兆敏
+黃全富
+黃吉廷
+黃名池
+黃夙慧
+黃如真
+黃如翰
+黃宇廷
+黃守田
+黃安德
+黃旭弘
+黃旭輝
+黃江瑜
+黃百燦
+黃聿君
+黃至枰
+黃至鵬
+黃伯年
+黃克任
+黃君怡
+黃妙芬
+黃孝彰
+黃宏亮
+黃宏進
+黃宏駿
+黃志仁
+黃志平
+黃志成
+黃志明
+黃志偉
+黃志強
+黃志揚
+黃志雄
+黃志嘉
+黃志豪
+黃志銘
+黃志龍
+黃杏如
+黃沛聲
+黃秀玲
+黃秀容
+黃秀華
+黃秀蓉
+黃育信
+黃良
+黃邦彥
+黃依文
+黃佳元
+黃佳春
+黃佳媛
+黃佳華
+黃佳嫻
+黃佳蕙
+黃佩俐
+黃佩萱
+黃卓君
+黃坤德
+黃孟專
+黃孟樵
+黃宗基
+黃宗賢
+黃宜玲
+黃宛貞
+黃幸儀
+黃念芹
+黃怡君
+黃怡珊
+黃怡茹
+黃怡萍
+黃怡菁
+黃怡雯
+黃怡嘉
+黃怡維
+黃怡齡
+黃承德
+黃昌鼎
+黃明志
+黃明彥
+黃明理
+黃明瑞
+黃明慧
+黃昕嵐
+黃東海
+黃松筠
+黃欣怡
+黃欣愉
+黃欣蕙
+黃河順
+黃治平
+黃玟瑾
+黃秉鈞
+黃芝華
+黃芷雲
+黃金湯
+黃金樹
+黃長澤
+黃亭萍
+黃亮凱
+黃信文
+黃信捷
+黃信棠
+黃信愷
+黃信彰
+黃信銘
+黃信穎
+黃信斌
+黃保璁
+黃俊生
+黃俊哲
+黃俊淇
+黃俊傑
+黃俊傑
+黃俊傑
+黃俊凱
+黃俊棋
+黃俊舜
+黃俊隆
+黃俊祺
+黃俊嘉
+黃俊維
+黃俊豪
+黃俊賢
+黃俊穎
+黃俊龍
+黃俊燁
+黃俞斐
+黃冠怡
+黃冠程
+黃冠雅
+黃冠賓
+黃冠龍
+黃勇慧
+黃厚盛
+黃品傑
+黃品毅
+黃奕揆
+黃奕霖
+黃姿婷
+黃姿綾
+黃威凱
+黃威銘
+黃宣凱
+黃宣穆
+黃建中
+黃建文
+黃建青
+黃建凱
+黃建智
+黃建程
+黃建鈞
+黃建源
+黃建彰
+黃建豪
+黃建銘
+黃建勳
+黃建穎
+黃建龍
+黃彥太
+黃彥強
+黃彥博
+黃彥皓
+黃彥瑜
+黃彥賓
+黃彥樵
+黃彥斌
+黃思凱
+黃思嘉
+黃思賢
+黃思瑋
+黃政原
+黃政揚
+黃政龍
+黃春堤
+黃昭仁
+黃昭智
+黃昭維
+黃映瑄
+黃昱中
+黃昱愷
+黃昱龍
+黃柏元
+黃柏強
+黃柏喬
+黃柏翔
+黃柏瑞
+黃柏綺
+黃柏璋
+黃柏翰
+黃柏禲
+黃為棟
+黃炳憲
+黃珊萍
+黃珀鐘
+黃盈惠
+黃盈彰
+黃相志
+黃秋芳
+黃秋萍
+黃秋瑛
+黃秋霞
+黃美玉
+黃美玲
+黃美娟
+黃美羚
+黃美筑
+黃美雯
+黃美蓉
+黃美燕
+黃致恆
+黃致遠
+黃若薇
+黃茂源
+黃英彥
+黃英傑
+黃英銘
+黃衍欽
+黃貞穎
+黃郁仁
+黃郁玫
+黃郁珊
+黃郁茗
+黃郁婷
+黃郁棠
+黃郁雯
+黃郁靜
+黃重凱
+黃韋琪
+黃韋勳
+黃香榕
+黃倉彥
+黃哲楓
+黃孫宇
+黃家珍
+黃家隆
+黃家緯
+黃峻崢
+黃庭鈺
+黃振甫
+黃振庭
+黃振誠
+黃振瑲
+黃書寅
+黃書鈺
+黃泰崑
+黃泰霖
+黃浩天
+黃浩鈞
+黃珮芸
+黃珮娟
+黃珮舒
+黃珮瑜
+黃益建
+黃祖賢
+黃素真
+黃純美
+黃能豐
+黃釗俊
+黃偉宙
+黃偉修
+黃偉峰
+黃偉傑
+黃偉誠
+黃偉銘
+黃健奇
+黃健晏
+黃健溢
+黃凰慈
+黃國全
+黃國芳
+黃國倫
+黃國展
+黃國晉
+黃國軒
+黃國棟
+黃國鈞
+黃國裕
+黃國榮
+黃國豪
+黃國鐘
+黃堂軒
+黃培峻
+黃培銘
+黃婉貞
+黃婉菁
+黃尉翔
+黃崇訓
+黃崇銘
+黃常樹
+黃彩銘
+黃惟聖
+黃啟宏
+黃啟修
+黃啟書
+黃啟彰
+黃敏
+黃敏修
+黃敏華
+黃敏慧
+黃梅玲
+黃添虎
+黃清泰
+黃清麟
+黃淑岑
+黃淑芬
+黃淑玲
+黃淑貞
+黃淑卿
+黃淑桃
+黃淑梅
+黃淑媛
+黃淑琪
+黃淑華
+黃淑雯
+黃淑甄
+黃淑靜
+黃淵賢
+黃皎
+黃祥恩
+黃祥斌
+黃紹萱
+黃莉
+黃莉娟
+黃莉琪
+黃莉嘉
+黃途巖
+黃雪鳳
+黃傑文
+黃凱威
+黃凱琪
+黃凱麟
+黃勝志
+黃勝裕
+黃博泰
+黃喜麟
+黃堯偉
+黃婷婷
+黃富
+黃富詳
+黃復聰
+黃惠君
+黃惠芬
+黃惠珍
+黃惠娥
+黃惠敏
+黃惠琴
+黃惠勤
+黃惠詩
+黃惠霞
+黃揚名
+黃斯駿
+黃景裕
+黃智勇
+黃智偉
+黃智康
+黃智隆
+黃智銘
+黃智瑋
+黃朝琴
+黃朝樑
+黃植懋
+黃湘巧
+黃湘婷
+黃渝芳
+黃琪婷
+黃琳鈞
+黃琦棻
+黃登鍵
+黃竣南
+黃筑鈺
+黃善暉
+黃舒彥
+黃舜忠
+黃菁薇
+黃菊英
+黃詠瑞
+黃貴堂
+黃逸
+黃逸純
+黃逸瑋
+黃鈞沁
+黃閔農
+黃雅君
+黃雅芳
+黃雅津
+黃雅玲
+黃雅卿
+黃雅淑
+黃雅雪
+黃雅惠
+黃雅琪
+黃雅琴
+黃雅萍
+黃雅雯
+黃雅萱
+黃雅鈴
+黃雅慧
+黃雅齡
+黃雯玉
+黃雯筠
+黃順吉
+黃傳圍
+黃廉智
+黃意茹
+黃意超
+黃慈嫺
+黃敬元
+黃敬斌
+黃暉文
+黃楷祺
+黃榆婷
+黃毓翎
+黃毓華
+黃源璋
+黃照凱
+黃煦雰
+黃瑟芸
+黃瑞伶
+黃瑞屏
+黃瑞祥
+黃瑞陽
+黃瑞興
+黃瑜淑
+黃盟凱
+黃祺芬
+黃筠真
+黃義君
+黃義銘
+黃群雄
+黃聖圳
+黃聖哲
+黃聖傑
+黃聖棻
+黃聖鴻
+黃裕中
+黃裕宜
+黃裕盛
+黃裕翔
+黃裕昶
+黃詩芸
+黃詩茹
+黃詩涵
+黃詩惠
+黃詩雯
+黃詩蘋
+黃道全
+黃鈴琪
+黃雋琦
+黃靖芸
+黃靖惠
+黃靖雯
+黃鼎能
+黃嘉民
+黃嘉勇
+黃嘉倫
+黃嘉雪
+黃嘉萱
+黃嘉賢
+黃榮山
+黃榮順
+黃漢光
+黃漢輝
+黃睿伸
+黃碧雲
+黃禎慶
+黃維
+黃維智
+黃肇宏
+黃遠宏
+黃銘偉
+黃銘輝
+黃魁彬
+黃儀君
+黃德秀
+黃德煒
+黃慶華
+黃慧玉
+黃慧芬
+黃慧娟
+黃慧茹
+黃慧菁
+黃慧禎
+黃澄偉
+黃蔚仁
+黃賢章
+黃震宇
+黃憲得
+黃憶菁
+黃曉佩
+黃曉音
+黃曉菱
+黃曉薇
+黃燕娥
+黃興元
+黃蕙萍
+黃錚暉
+黃錦章
+黃靜子
+黃靜宜
+黃靜怡
+黃靜莉
+黃龍一
+黃應璿
+黃聰琪
+黃薇瓊
+黃駿達
+黃鴻智
+黃禮伸
+黃薰瑩
+黃雙玉
+黃懷慶
+黃瀚德
+黃瓊妃
+黃瓊華
+黃瓊儀
+黃瓊儀
+黃瓊慧
+黃瓊慧
+黃瓊誼
+黃瓊嫺
+黃鏡生
+黃韻如
+黃韻韻
+黃鵬圖
+黃麗妃
+黃麗芬
+黃麗香
+黃麗容
+黃麗蓉
+黃麗錚
+黃寶玉
+黃寶儀
+黃寶稹
+黃獻諄
+黃繼增
+黃耀文
+黃耀俊
+黃耀德
+黃耀瑩
+黃耀輝
+黃議德
+黃鐘葦
+黃馨怡
+黃馨儀
+黃馨慧
+黃馨毅
+黃馨霈
+黃齡萱
+黃蘭玉
+黃鐵豪
+黃顯婷
+黃艷玉
+黃玠晟
+黃姵瑄
+黃昶斌
+黃勖軒
+黃琇苓
+黃翊宸
+黃棖吉
+黃琮富
+黃琬君
+黃琬婷
+黃琬雯
+黃琬瑂
+黃菀鈴
+黃暐睿
+黃瑋欣
+黃瑋寧
+黃筱芸
+黃筱喬
+黃筱雁
+黃筱蘋
+黃鈺娟
+黃鈺婷
+黃鈺婷
+黃鈺斐
+黃鈺雯
+黃鉦閔
+黃瞍
+黃薏澄
+黃謵說
+黃齠
+塗巧憶
+塗時雨
+塗媄雲
+楊
+楊人穎
+楊三賢
+楊千里
+楊千慧
+楊士弘
+楊士朋
+楊士毅
+楊士賢
+楊大毅
+楊子恆
+楊子毅
+楊子瑢
+楊小慧
+楊中孚
+楊之慧
+楊仁華
+楊介文
+楊允中
+楊心怡
+楊心德
+楊文宏
+楊文杰
+楊文媛
+楊文瑞
+楊文儀
+楊文瑋
+楊世平
+楊世凱
+楊世鵬
+楊仕馨
+楊可歆
+楊弘先
+楊本聖
+楊正彬
+楊永正
+楊永琦
+楊玉君
+楊玉鼎
+楊白鯨
+楊立群
+楊仲民
+楊兆欽
+楊妃婷
+楊守城
+楊旨祥
+楊自雄
+楊伶慧
+楊妙恩
+楊宏祥
+楊志平
+楊志能
+楊志偉
+楊志祥
+楊志雍
+楊志學
+楊沛蒔
+楊秀珠
+楊秀慧
+楊育真
+楊育儒
+楊亞琦
+楊佳欣
+楊佳展
+楊佳菁
+楊佳撰
+楊佳螢
+楊佩珊
+楊佩儒
+楊其瀚
+楊坤英
+楊奇惠
+楊孟修
+楊孟蓉
+楊孟翰
+楊宗
+楊宗倍
+楊宗堯
+楊宗儒
+楊宗穎
+楊宗翰
+楊宗烜
+楊宜文
+楊宜璋
+楊宜蓁
+楊尚訓
+楊尚融
+楊岱儒
+楊忠仁
+楊忠憲
+楊怡芳
+楊怡萍
+楊承
+楊承熹
+楊易倫
+楊昌賓
+楊昆霖
+楊明杰
+楊明純
+楊明誠
+楊明寰
+楊明禧
+楊昇樺
+楊東敏
+楊松銘
+楊欣怡
+楊欣珮
+楊欣燕
+楊泓褘
+楊秉順
+楊芳雄
+楊芸
+楊金璋
+楊長潔
+楊青峰
+楊俊宏
+楊俊輝
+楊奕昶
+楊建彥
+楊思雋
+楊政彬
+楊政勳
+楊政霖
+楊昭輝
+楊為舜
+楊秋男
+楊紀芸
+楊美玲
+楊美惠
+楊美藝
+楊苑利
+楊倩
+楊哲安
+楊哲銘
+楊家明
+楊家祺
+楊家銘
+楊家瑋
+楊恭沛
+楊振宗
+楊振漢
+楊晏菁
+楊書豪
+楊涓櫻
+楊珮君
+楊珮琦
+楊真珠
+楊素卿
+楊荐翔
+楊虔雅
+楊偉文
+楊偉琪
+楊健國
+楊國松
+楊國鼎
+楊培恩
+楊婉莉
+楊崇鑫
+楊惟白
+楊啟宏
+楊敏芳
+楊梵孛
+楊淳硯
+楊清桃
+楊淑元
+楊淑佳
+楊淑芬
+楊淑美
+楊淑敏
+楊淑惠
+楊淑萍
+楊淑雅
+楊淑慧
+楊淵勝
+楊淨芝
+楊盛斌
+楊莉芳
+楊雪雅
+楊凱仲
+楊凱傑
+楊凱鈞
+楊勝宇
+楊勝斐
+楊勛凱
+楊博宇
+楊博欽
+楊喻閔
+楊壹舒
+楊婷鈞
+楊富安
+楊富琛
+楊循婷
+楊惠宇
+楊惠真
+楊惠婷
+楊惠琳
+楊惠雯
+楊敦傑
+楊斯凱
+楊景元
+楊景堯
+楊景雯
+楊智元
+楊智宏
+楊智傑
+楊智堯
+楊智善
+楊智鈞
+楊智龍
+楊朝敏
+楊朝舜
+楊森發
+楊湧評
+楊登安
+楊皓瑋
+楊策航
+楊善惠
+楊舒帆
+楊舒媛
+楊舒雯
+楊舜欽
+楊菁芬
+楊菱雅
+楊詠菘
+楊貴媛
+楊逸莉
+楊鈞百
+楊閔翔
+楊雅玉
+楊雅芳
+楊雅倫
+楊雅淑
+楊雅婷
+楊雅婷
+楊雅嵐
+楊雅惠
+楊雅晶
+楊雅翔
+楊雅超
+楊雅雯
+楊雅雲
+楊雅茜
+楊雯惠
+楊雲翔
+楊順棋
+楊慈儀
+楊毓玲
+楊煥章
+楊瑞傑
+楊萬帆
+楊裕
+楊詩軒
+楊道忠
+楊嘉玲
+楊嘉瑜
+楊嘉豐
+楊榮吉
+楊槐駒
+楊碧雯
+楊維華
+楊趙銘
+楊銘顧
+楊德志
+楊慶隆
+楊慧玲
+楊慧瓊
+楊璋
+楊震偉
+楊憲昇
+楊曉青
+楊曉菁
+楊橋霖
+楊燕雲
+楊蕙芳
+楊蕙嘉
+楊錫憲
+楊靜如
+楊靜怡
+楊靜雯
+楊戴州
+楊爵駿
+楊駿民
+楊曜準
+楊礎遠
+楊繡綾
+楊豐全
+楊豐銘
+楊鎮遠
+楊馥誠
+楊瓊華
+楊麗冠
+楊麗琴
+楊曦琳
+楊鐘鉉
+楊靈苓
+楊茜卉
+楊琇如
+楊琇媛
+楊翊珮
+楊琬婷
+楊瑋琦
+楊蓁蓁
+楊鎧伊
+溫丈緯
+溫心嵐
+溫正龍
+溫至任
+溫秀怡
+溫宗
+溫承翰
+溫金瑞
+溫建聲
+溫若婷
+溫展華
+溫素梅
+溫培青
+溫淑怡
+溫凱
+溫智連
+溫雅清
+溫聖延
+溫銘哲
+溫曉華
+溫馥遠
+溫菘渝
+萬佳昕
+萬建明
+萬敏婉
+萬曉明
+葉丁源
+葉乃禎
+葉人賓
+葉又嘉
+葉千菊
+葉士新
+葉大葦
+葉子豪
+葉山華
+葉天將
+葉文偉
+葉文龍
+葉世民
+葉代權
+葉正聖
+葉玉玲
+葉亦盛
+葉光愉
+葉向陽
+葉如雯
+葉竹育
+葉佐駿
+葉宏傑
+葉志彥
+葉志博
+葉步旻
+葉秀梅
+葉育峰
+葉依青
+葉佳欣
+葉佳菁
+葉佳勳
+葉佩真
+葉奉杰
+葉孟堯
+葉宗智
+葉宗鑫
+葉宛軒
+葉忠欣
+葉怡君
+葉怡芳
+葉承泓
+葉昌倫
+葉明昇
+葉明旋
+葉明鑫
+葉松炫
+葉欣毓
+葉玟君
+葉芳伶
+葉芳萍
+葉芷妘
+葉長青
+葉亭志
+葉信廷
+葉俊宏
+葉俊甫
+葉俊慶
+葉俞杉
+葉冠慧
+葉奕維
+葉姿妏
+葉建君
+葉建昇
+葉彥志
+葉思儀
+葉政輝
+葉昭伶
+葉昱志
+葉柏綱
+葉玲岑
+葉秋月
+葉美娟
+葉致忠
+葉衍孜
+葉郁菁
+葉倩
+葉哲全
+葉家宇
+葉家鈴
+葉家儒
+葉峻賓
+葉振福
+葉晉嘉
+葉書瑋
+葉涓涓
+葉益昇
+葉素綾
+葉耿齊
+葉健偉
+葉國賢
+葉張建
+葉欲恒
+葉淑珍
+葉淑鈴
+葉紹任
+葉勝玄
+葉惠文
+葉惠禎
+葉智仁
+葉森渝
+葉詠晴
+葉雁甄
+葉雅婷
+葉雅雯
+葉雲鵬
+葉毓峰
+葉義松
+葉鈴珊
+葉嘉華
+葉睿哲
+葉銘昌
+葉儀芳
+葉慧欣
+葉潔恩
+葉曉芬
+葉樹開
+葉蕙芳
+葉錦鳳
+葉曙慶
+葉駿逸
+葉禮維
+葉瓊文
+葉寶壬
+葉騰遠
+葉驥
+葉玴豪
+葉琤怡
+葉懌馨
+葛世萱
+葛倩如
+董人宏
+董子青
+董巧玲
+董合恩
+董志仁
+董佳豪
+董怡君
+董芳銘
+董姿利
+董彥宏
+董秋瑾
+董修銘
+董振雄
+董能瑞
+董惠芳
+董聖緣
+董慧美
+董鴻楠
+董嶢泓
+裘元愷
+解美鈴
+詹于芳
+詹子民
+詹仁嘉
+詹文祥
+詹世傑
+詹永祥
+詹立成
+詹如鈐
+詹宏彬
+詹志鴻
+詹育雯
+詹佳振
+詹佳興
+詹佩穎
+詹孟晃
+詹宗憲
+詹宜紋
+詹忠榮
+詹昌吉
+詹明潔
+詹欣宜
+詹青艷
+詹前泰
+詹政峰
+詹美珍
+詹卿苹
+詹家銓
+詹浚昇
+詹益偉
+詹益銘
+詹茗芸
+詹婉君
+詹啟緯
+詹淑妃
+詹淑萍
+詹淑芩
+詹凱捷
+詹勝欽
+詹富智
+詹惠媛
+詹景堯
+詹智傑
+詹森
+詹翔任
+詹証富
+詹鈞維
+詹雅婷
+詹雅閔
+詹雯瑩
+詹群毅
+詹嘉璿
+詹德馨
+詹勳明
+詹穎萍
+詹璨嶸
+詹豐宇
+詹鵑年
+詹玓瑋
+詹琬渝
+資君儀
+賈治國
+賈愛玫
+賈髐憛
+鄒一仲
+鄒文隆
+鄒立彥
+鄒李昌
+鄒佳華
+鄒宗華
+鄒明原
+鄒金德
+鄒國龍
+鄒智仁
+鄒新全
+鄒維剛
+鄒靜珮
+雍敦元
+雷宜庭
+雷衍興
+雷惠琦
+雷雅菁
+雷鵬程
+廖丁逸
+廖于文
+廖千慧
+廖士堯
+廖大樟
+廖小華
+廖仁禾
+廖元利
+廖允靖
+廖文平
+廖文茹
+廖文評
+廖文甄
+廖文潔
+廖月觀
+廖仕綺
+廖本元
+廖正偉
+廖玉
+廖玉萍
+廖丞晞
+廖光輝
+廖守正
+廖伯璋
+廖含潔
+廖宏慈
+廖志民
+廖志偉
+廖志遠
+廖秀卿
+廖育良
+廖良淮
+廖佳玥
+廖佩如
+廖佩鳳
+廖宗山
+廖宜群
+廖怡玲
+廖怡景
+廖承慶
+廖明儀
+廖欣儀
+廖芳玲
+廖芝堅
+廖青松
+廖信寬
+廖俊傑
+廖俊欽
+廖冠美
+廖奕任
+廖姿毓
+廖建城
+廖建鈞
+廖彥凱
+廖恆毅
+廖春菊
+廖昱樹
+廖炳焜
+廖盈奇
+廖秋怡
+廖美玲
+廖美琳
+廖茂良
+廖英男
+廖英傑
+廖苑君
+廖述茂
+廖郁婷
+廖倩宜
+廖卿惠
+廖哲論
+廖家玲
+廖家寧
+廖家瑩
+廖家婧
+廖峻毅
+廖恩慈
+廖振良
+廖挺崴
+廖書珮
+廖桂君
+廖浚宏
+廖珮君
+廖珮玫
+廖珮愛
+廖益群
+廖素卿
+廖耕輝
+廖乾成
+廖偉成
+廖偉辰
+廖偉斯
+廖偉鴻
+廖健明
+廖健銘
+廖國宏
+廖國勛
+廖國華
+廖基宏
+廖培瑜
+廖婉利
+廖婉欣
+廖寄萍
+廖崇碩
+廖康霖
+廖惇治
+廖啟良
+廖敏汝
+廖敏玲
+廖梓茜
+廖淑君
+廖淑貞
+廖淑惠
+廖淑麗
+廖祥達
+廖貫珮
+廖章棋
+廖富田
+廖惠娟
+廖智輝
+廖琪美
+廖舒儀
+廖進平
+廖雅倩
+廖順帆
+廖楷文
+廖筠怡
+廖萱芹
+廖嗾
+廖嘉陽
+廖漢鼎
+廖維珍
+廖銘仁
+廖慶賀
+廖慧雯
+廖瑩璇
+廖憲堂
+廖曉慧
+廖錦瑜
+廖擎帆
+廖曜瑩
+廖麒閔
+廖耀東
+廖顯慶
+廖偲妤
+廖斌傑
+廖鈺銘
+漢述仁
+熊立新
+熊東增
+熊凌霆
+熊崇緯
+熊勤云
+甄慧明
+管幼仲
+管金玲
+管琪芸
+翟敦敏
+臺文照
+蒲信全
+蒲駿毅
+裴偉程
+褚心怡
+褚俊偉
+褚家德
+賓敬文
+趙士齊
+趙子維
+趙仁佑
+趙元宏
+趙友崧
+趙文忠
+趙方愷
+趙世裕
+趙必昌
+趙玉蓮
+趙安琪
+趙君杰
+趙宏鈞
+趙志豪
+趙育琳
+趙佩芬
+趙宜君
+趙怡婷
+趙明輝
+趙芷菁
+趙俊凱
+趙品彥
+趙建勝
+趙恬儀
+趙炫勛
+趙秋鳳
+趙英龍
+趙修霖
+趙家良
+趙家賢
+趙振宏
+趙桂青
+趙珮汛
+趙祐甄
+趙偉廷
+趙偉翔
+趙國志
+趙培霖
+趙崇閔
+趙敏如
+趙淑芳
+趙皎君
+趙婷完
+趙湘君
+趙鈞志
+趙瑞昌
+趙嘉敬
+趙廣元
+趙慕群
+趙樹儀
+趙龍基
+趙雙駿
+趙玹羲
+遠藤永康
+鄞豪輝
+齊雪汝
+劉乙萱
+劉乃萱
+劉人豪
+劉几萍
+劉力豪
+劉又慈
+劉上旗
+劉于菁
+劉千瑜
+劉士華
+劉士豪
+劉大榮
+劉子由
+劉子嘉
+劉子頎
+劉山豪
+劉中琪
+劉仁正
+劉仁裕
+劉元鳳
+劉少維
+劉心儀
+劉文玉
+劉文玲
+劉文勝
+劉文超
+劉文福
+劉日順
+劉世文
+劉世清
+劉世慶
+劉以筠
+劉台
+劉弘偉
+劉正河
+劉正雄
+劉永健
+劉玉文
+劉玉家
+劉玉萍
+劉玉琇
+劉立偉
+劉亦昇
+劉伊修
+劉仲涵
+劉光杰
+劉兆容
+劉全彬
+劉名娟
+劉如芳
+劉如薰
+劉宇薇
+劉安祥
+劉旭芬
+劉汝娟
+劉至安
+劉伯彥
+劉君祺
+劉孝倫
+劉宏偉
+劉廷楷
+劉志勇
+劉志浩
+劉志源
+劉志瑋
+劉沂昀
+劉秀郁
+劉秀雯
+劉育成
+劉育志
+劉育宗
+劉育洸
+劉育誠
+劉育穎
+劉邦平
+劉邦相
+劉亞芸
+劉依文
+劉佳沐
+劉佳怡
+劉佳芳
+劉佳洧
+劉佳琪
+劉佳達
+劉佳穎
+劉侃如
+劉佩青
+劉佩綾
+劉和德
+劉坤穎
+劉孟佳
+劉孟冠
+劉孟翰
+劉宗怡
+劉宗葆
+劉定宇
+劉宜昆
+劉宜婷
+劉宛如
+劉岡陵
+劉幸雪
+劉忠勳
+劉怡伶
+劉怡君
+劉怡君
+劉怡君
+劉怡和
+劉怡芬
+劉怡惠
+劉怡靜
+劉承樺
+劉昌
+劉昌誠
+劉明合
+劉明杰
+劉明哲
+劉明達
+劉明麗
+劉昇鑫
+劉果珍
+劉欣坤
+劉欣怡
+劉欣茹
+劉武浚
+劉玟成
+劉玫寧
+劉穹林
+劉芳吟
+劉芳玲
+劉芳蘭
+劉芬芳
+劉采真
+劉金鳳
+劉青蘋
+劉信宏
+劉信良
+劉信鴻
+劉俊宏
+劉俊廷
+劉俊良
+劉俊杰
+劉俊毅
+劉俊巖
+劉俐梅
+劉冠妍
+劉冠良
+劉冠顯
+劉勃彥
+劉品宜
+劉奕志
+劉姿
+劉姿吟
+劉威汗
+劉威昌
+劉建民
+劉建宏
+劉建宏
+劉建村
+劉建良
+劉建明
+劉建德
+劉建町
+劉彥君
+劉彥廷
+劉彥良
+劉彥博
+劉律明
+劉思潔
+劉恪人
+劉政勳
+劉昭如
+劉映秀
+劉昱辰
+劉柏宏
+劉柏麟
+劉為明
+劉珊妮
+劉珍佑
+劉盈如
+劉盈秀
+劉盈蘭
+劉秋成
+劉秋燕
+劉美君
+劉美侖
+劉美玲
+劉美華
+劉羿汝
+劉若謹
+劉英龍
+劉貞伶
+劉軍毅
+劉韋成
+劉倍如
+劉修明
+劉哲宇
+劉哲郎
+劉哲瑋
+劉家成
+劉家宏
+劉家昇
+劉家琳
+劉家僖
+劉家豪
+劉家鳳
+劉家馨
+劉容懿
+劉峻伶
+劉峰郡
+劉恩吉
+劉振中
+劉振豪
+劉晉育
+劉晏誠
+劉書宏
+劉根豪
+劉桐盛
+劉浚銘
+劉珮怡
+劉益伸
+劉益禎
+劉祖寧
+劉素玲
+劉純杏
+劉耕維
+劉軒宇
+劉偉立
+劉偉誠
+劉國平
+劉國棟
+劉國龍
+劉婉玲
+劉崇理
+劉康楝
+劉得光
+劉啟平
+劉敏琪
+劉淳雅
+劉淑芬
+劉淑貞
+劉淑莉
+劉淑華
+劉淑慧
+劉祥民
+劉莉燕
+劉凱茹
+劉博文
+劉富明
+劉惠怡
+劉惠紋
+劉揚銘
+劉智仁
+劉智鈞
+劉朝蓮
+劉湘琪
+劉皓寧
+劉舒慈
+劉詠薇
+劉逸竹
+劉閔結
+劉雅君
+劉雅玲
+劉雅惠
+劉雅萍
+劉雅慧
+劉雲霞
+劉勤經
+劉敬民
+劉毓波
+劉源倫
+劉瑞芳
+劉瑞豪
+劉經綸
+劉裕宏
+劉詩韻
+劉靖
+劉嘉育
+劉嘉淳
+劉嘉雯
+劉嘉樺
+劉彰
+劉榮德
+劉熙慧
+劉碩穩
+劉維泰
+劉肇鵬
+劉銘村
+劉銘輝
+劉鳳興
+劉德正
+劉德誠
+劉慶鎮
+劉慧玲
+劉慧婷
+劉慧瓏
+劉瑩娟
+劉賢熒
+劉震鴻
+劉憶
+劉曉芬
+劉曉琪
+劉曉樺
+劉樹蕙
+劉燕萍
+劉璟鋒
+劉穎蒨
+劉興家
+劉蕙瑄
+劉錦堂
+劉錦鴻
+劉靜芳
+劉靜華
+劉龍山
+劉爵維
+劉鍾霖
+劉鴻霖
+劉璧瑩
+劉鎮嘉
+劉瀚陽
+劉韻琦
+劉麗惠
+劉寶婷
+劉耀升
+劉譯聰
+劉灌輝
+劉懿慧
+劉讚嘻
+劉旻珊
+劉姵嘉
+劉挐
+劉翊邡
+劉瑋玲
+劉筱慧
+劉瀅騿
+厲斌中
+樊乃嘉
+樊修龍
+樂子駿
+歐士源
+歐世洋
+歐如程
+歐志盈
+歐邦華
+歐宗原
+歐怡秀
+歐昀修
+歐長晏
+歐俊彥
+歐建民
+歐政艷
+歐美瑩
+歐娉妦
+歐書豪
+歐淑姿
+歐逸青
+歐陽有慧
+歐陽玫
+歐陽惠如
+歐陽銘文
+歐陽忻憶
+歐榮杰
+歐穎君
+歐繕嘉
+潘
+潘允仁
+潘文華
+潘正元
+潘玉惠
+潘亦蕾
+潘成富
+潘宏宗
+潘志偉
+潘秀盈
+潘佳妤
+潘佩君
+潘宗裕
+潘延輝
+潘怡君
+潘怡瑾
+潘明楷
+潘玟樺
+潘亮如
+潘信翰
+潘俊良
+潘冠宏
+潘品潔
+潘威歷
+潘建成
+潘建彰
+潘彥蓉
+潘政緯
+潘柔考
+潘珍琪
+潘美玲
+潘述東
+潘家銘
+潘泰全
+潘能哲
+潘婉萍
+潘淑雯
+潘惠娟
+潘進益
+潘雅馨
+潘瑞香
+潘裕智
+潘睿哲
+潘儀恬
+潘慧敏
+潘儒瑩
+潘錦昌
+潘鴻銘
+潘麗萍
+潘姵如
+潘鈺柔
+滕憶雯
+練建伸
+蔣中衍
+蔣正福
+蔣汝安
+蔣沆祥
+蔣佳珊
+蔣佩餘
+蔣孟儒
+蔣宜靜
+蔣怡慧
+蔣明儒
+蔣長旻
+蔣政穎
+蔣珮泠
+蔣淑慧
+蔣萍
+蔣葦立
+蔣德才
+蔣濱州
+蔣耀毅
+蔡丁經哲
+蔡士旺
+蔡子怡
+蔡中鈞
+蔡仁偉
+蔡元正
+蔡元雄
+蔡天祺
+蔡文仁
+蔡文彥
+蔡文偉
+蔡文博
+蔡文欽
+蔡文嘉
+蔡文鴻
+蔡月珠
+蔡世杰
+蔡世鴻
+蔡巧如
+蔡弘原
+蔡正宗
+蔡正暉
+蔡永彬
+蔡永瑩
+蔡玉秋
+蔡玉菁
+蔡立芬
+蔡亦雯
+蔡仲寧
+蔡兆驊
+蔡名書
+蔡如婷
+蔡宇倫
+蔡安喬
+蔡旭曜
+蔡羽容
+蔡行真
+蔡伯鴻
+蔡君毅
+蔡宏文
+蔡宏培
+蔡廷穎
+蔡志宏
+蔡志明
+蔡志晃
+蔡志揚
+蔡志維
+蔡志鴻
+蔡沁玲
+蔡沛婷
+蔡汶鴻
+蔡秀玲
+蔡秀惠
+蔡育正
+蔡育彥
+蔡育真
+蔡育勳
+蔡貝珊
+蔡享翰
+蔡依珊
+蔡依容
+蔡依齡
+蔡佳伶
+蔡佳宏
+蔡佳良
+蔡佳欣
+蔡佳芬
+蔡佳玲
+蔡佳珍
+蔡佳容
+蔡佳真
+蔡佳航
+蔡佳琳
+蔡佳蓉
+蔡佳樺
+蔡佳穎
+蔡佳霖
+蔡佳礽
+蔡佩如
+蔡佩君
+蔡佩妤
+蔡佩芳
+蔡佩芬
+蔡佩珊
+蔡佩珊
+蔡佩玲
+蔡佩娥
+蔡佩紋
+蔡佩蓉
+蔡佩穎
+蔡佩靜
+蔡侑廷
+蔡其珮
+蔡協甫
+蔡受勳
+蔡坤佑
+蔡坤雄
+蔡坤錦
+蔡奇均
+蔡奇霖
+蔡孟君
+蔡孟育
+蔡孟芳
+蔡孟秋
+蔡孟哲
+蔡孟真
+蔡孟雄
+蔡孟儒
+蔡孟樺
+蔡孟諭
+蔡季玲
+蔡宗佑
+蔡宗志
+蔡宗玫
+蔡宗益
+蔡宗達
+蔡宗儒
+蔡宗憲
+蔡宗穎
+蔡宗翰
+蔡宗霖
+蔡宜君
+蔡宜廷
+蔡宜芳
+蔡宜珊
+蔡宜倩
+蔡宜真
+蔡宜蓉
+蔡宜霖
+蔡宜蓁
+蔡宛玲
+蔡宛諭
+蔡尚岳
+蔡尚穎
+蔡岱勳
+蔡岳書
+蔡幸如
+蔡幸恆
+蔡幸淳
+蔡弦豪
+蔡忠信
+蔡忠穎
+蔡怡君
+蔡怡萍
+蔡承昊
+蔡承璋
+蔡承翰
+蔡易亨
+蔡易陞
+蔡易憲
+蔡昌宇
+蔡昌儒
+蔡昆佑
+蔡明
+蔡明汎
+蔡明宏
+蔡明杉
+蔡明宗
+蔡明芳
+蔡明倫
+蔡明哲
+蔡明峰
+蔡明茵
+蔡明欽
+蔡明蒲
+蔡明賜
+蔡明憲
+蔡明穎
+蔡明龍
+蔡昀甫
+蔡昇伯
+蔡昇穎
+蔡東明
+蔡東穎
+蔡杰志
+蔡松柏
+蔡松霖
+蔡欣怡
+蔡欣倫
+蔡欣達
+蔡欣穎
+蔡武諺
+蔡牧勳
+蔡直勳
+蔡秉昆
+蔡秉璋
+蔡秉諭
+蔡芳洵
+蔡采芳
+蔡金峰
+蔡金龍
+蔡長榮
+蔡雨潔
+蔡青峰
+蔡信良
+蔡俊晏
+蔡俊賢
+蔡品儀
+蔡宥定
+蔡建裕
+蔡思捷
+蔡政宏
+蔡政言
+蔡政哲
+蔡政群
+蔡政勳
+蔡政翰
+蔡政龍
+蔡昭龍
+蔡柏毅
+蔡玲津
+蔡禹歆
+蔡紀源
+蔡美芝
+蔡美莉
+蔡美慧
+蔡英宗
+蔡郁君
+蔡韋志
+蔡凌鳳
+蔡娟娟
+蔡家華
+蔡容瑛
+蔡悅玟
+蔡振議
+蔡栩維
+蔡珮怡
+蔡真禕
+蔡素碧
+蔡茹茵
+蔡偉杰
+蔡國手
+蔡國聖
+蔡培譯
+蔡崇民
+蔡啟堂
+蔡添文
+蔡淑妃
+蔡淑怡
+蔡淑玲
+蔡淑真
+蔡淑惠
+蔡淑瑜
+蔡淑薇
+蔡盛勳
+蔡雪卿
+蔡勝雄
+蔡博全
+蔡喬安
+蔡富貴
+蔡惠如
+蔡惠美
+蔡惠琪
+蔡惠燕
+蔡景淑
+蔡智宏
+蔡智暐
+蔡湘怡
+蔡皓明
+蔡舒宇
+蔡菁菁
+蔡詠翔
+蔡逸珊
+蔡進昌
+蔡隆泰
+蔡雅君
+蔡雅芬
+蔡雅茹
+蔡雅惠
+蔡雅菁
+蔡雅慧
+蔡雯淇
+蔡傳德
+蔡楨瑜
+蔡毓霖
+蔡瑞文
+蔡瑞峰
+蔡瑞麒
+蔡義益
+蔡裕健
+蔡詩薏
+蔡嘉仁
+蔡嘉恆
+蔡嘉章
+蔡嘉慶
+蔡榮昌
+蔡榮賢
+蔡漢義
+蔡碧容
+蔡福晏
+蔡維玲
+蔡維蓁
+蔡裴伶
+蔡銘
+蔡銘峰
+蔡銘賢
+蔡鳳儀
+蔡徵霖
+蔡慧民
+蔡慧貞
+蔡慧萱
+蔡毅軒
+蔡賢皇
+蔡學文
+蔡憶鈴
+蔡曉然
+蔡澤銘
+蔡穎箴
+蔡翰熊
+蔡蕙婷
+蔡錦坡
+蔡靜宜
+蔡靜惠
+蔡龍儀
+蔡翼如
+蔡鴻民
+蔡鴻斌
+蔡璧光
+蔡豐文
+蔡豐杰
+蔡鎮嶽
+蔡鵑彌
+蔡瓊儀
+蔡麗芳
+蔡麗惠
+蔡獻毅
+蔡耀群
+蔡耀駒
+蔡馨儀
+蔡佶興
+蔡旻芳
+蔡旻憲
+蔡琄竹
+蔡歆怡
+蔡瑋竑
+蔡緶
+蔡鑫廷
+談昭蘭
+鄭一凡
+鄭乃佳
+鄭人元
+鄭力仁
+鄭又仁
+鄭士韋
+鄭子見
+鄭小嵐
+鄭尹斯
+鄭仁富
+鄭元孝
+鄭元瑜
+鄭友誠
+鄭心如
+鄭文正
+鄭文彬
+鄭文富
+鄭文嘉
+鄭月枝
+鄭世昌
+鄭世湘
+鄭仕鑫
+鄭巧青
+鄭弘偉
+鄭正誠
+鄭永津
+鄭玉伶
+鄭玉英
+鄭玉菁
+鄭立享
+鄭亙吟
+鄭伊真
+鄭仲宏
+鄭仲賢
+鄭光佑
+鄭光淳
+鄭兆均
+鄭先萌
+鄭吉佑
+鄭吏孜
+鄭合修
+鄭夙涵
+鄭如欣
+鄭如純
+鄭宇宏
+鄭宇淨
+鄭守東
+鄭安芸
+鄭安翔
+鄭成棠
+鄭旭盛
+鄭有財
+鄭百婷
+鄭羽晴
+鄭至剛
+鄭伯南
+鄭君達
+鄭宏明
+鄭志功
+鄭志偉
+鄭志龍
+鄭秀怡
+鄭秀娟
+鄭秀慧
+鄭育昇
+鄭貝如
+鄭佳宜
+鄭佳祥
+鄭佳儀
+鄭佩珊
+鄭其雯
+鄭孟玲
+鄭宗杰
+鄭宜芳
+鄭幸宜
+鄭怡君
+鄭怡婷
+鄭昌岳
+鄭明忠
+鄭明銓
+鄭欣如
+鄭欣榮
+鄭秉泓
+鄭芸芸
+鄭長志
+鄭俊宏
+鄭勇猛
+鄭建佳
+鄭彥達
+鄭春菊
+鄭省村
+鄭美玉
+鄭美琴
+鄭若琤
+鄭迪允
+鄭倩如
+鄭家典
+鄭家銘
+鄭振宜
+鄭書鈺
+鄭珮君
+鄭祐阡
+鄭素彬
+鄭茗聰
+鄭偉珊
+鄭國正
+鄭國祥
+鄭培聰
+鄭崇佑
+鄭惟心
+鄭啟榮
+鄭梅君
+鄭清俊
+鄭淑云
+鄭淑米
+鄭淑玲
+鄭淑婷
+鄭淑燕
+鄭淵藤
+鄭祥如
+鄭莉雯
+鄭傑元
+鄭凱仁
+鄭凱元
+鄭凱文
+鄭凱育
+鄭凱鴻
+鄭勝旭
+鄭博仁
+鄭博文
+鄭喬銘
+鄭婷文
+鄭富仁
+鄭尊孝
+鄭惠文
+鄭惠君
+鄭惠紋
+鄭惠霜
+鄭斯尹
+鄭景仁
+鄭景文
+鄭景隆
+鄭智仁
+鄭智元
+鄭智昌
+鄭智豪
+鄭朝元
+鄭朝營
+鄭植寰
+鄭湘昀
+鄭皓云
+鄭程議
+鄭絲雯
+鄭翔龍
+鄭舒蕊
+鄭詠仁
+鄭詔謙
+鄭逸嫻
+鄭閔鴻
+鄭雅云
+鄭雅友
+鄭雅文
+鄭雅妃
+鄭雅芬
+鄭雅娟
+鄭雅琪
+鄭雅甄
+鄭雅黛
+鄭雲鵬
+鄭意中
+鄭敬樺
+鄭毓齡
+鄭瑞美
+鄭瑜琳
+鄭義憲
+鄭聖賢
+鄭裕年
+鄭詩慧
+鄭嘉仁
+鄭嘉揚
+鄭嘉旻
+鄭榮娟
+鄭福和
+鄭肇心
+鄭銘泰
+鄭鳳齡
+鄭慶哲
+鄭慧芳
+鄭慧鎂
+鄭蔚蟬
+鄭憲存
+鄭曉怡
+鄭曉薇
+鄭穎銓
+鄭蕙琦
+鄭霖駿
+鄭靜芳
+鄭懋傑
+鄭謝冠
+鄭鴻源
+鄭豐嘉
+鄭麗君
+鄭獻文
+鄭旻軒
+鄭琇仁
+鄭埵
+鄭絜心
+鄭瑋隆
+鄭鈺鐘
+鄭靋
+鄧升敦
+鄧文儀
+鄧永忠
+鄧伊容
+鄧后琛
+鄧旭敦
+鄧志煌
+鄧佳玲
+鄧宜欣
+鄧明芳
+鄧金鴻
+鄧秋惠
+鄧振英
+鄧偉賢
+鄧淑玲
+鄧博仁
+鄧惠文
+鄧景龍
+鄧翔仁
+鄧雅心
+鄧順展
+鄧裕馨
+鄧福隆
+鄧震宇
+鄧穎駿
+鄧劦呈
+魯忠豪
+魯憲雲
+黎世廉
+黎宇容
+黎明倫
+黎俐均
+黎家伶
+黎婉儀
+黎煥元
+黎銘仁
+黎禮智
+盧三仁
+盧仁杰
+盧文忠
+盧文晟
+盧弘海
+盧永昇
+盧申泰
+盧吉勇
+盧呈芳
+盧志忠
+盧志融
+盧育聖
+盧佳惠
+盧叔欣
+盧定均
+盧延華
+盧怡伶
+盧怡涵
+盧承業
+盧欣宜
+盧玫妏
+盧雨涵
+盧保全
+盧俊言
+盧俊儒
+盧冠曄
+盧奎伯
+盧威霖
+盧建宏
+盧建銘
+盧思源
+盧星全
+盧柏良
+盧盈宏
+盧美如
+盧英仁
+盧韋仁
+盧家鈺
+盧祖翔
+盧婉瑜
+盧淑麗
+盧惠傑
+盧超群
+盧愷莉
+盧群育
+盧嘉振
+盧德芳
+盧慧宜
+盧輝展
+盧穎志
+盧龍生
+盧韻岑
+盧譽允
+盧筱瑩
+穆美蕙
+蕭人豪
+蕭士泰
+蕭尹貞
+蕭允泰
+蕭文欣
+蕭文筆
+蕭文魁
+蕭世民
+蕭以亮
+蕭正平
+蕭永泓
+蕭玉貞
+蕭立韋
+蕭亦維
+蕭仲志
+蕭兆琳
+蕭名沂
+蕭圭妙
+蕭如珊
+蕭宇伯
+蕭安廷
+蕭有宏
+蕭聿宏
+蕭君怡
+蕭宏裕
+蕭志羽
+蕭志豪
+蕭秀惠
+蕭育隆
+蕭佳悌
+蕭佩珊
+蕭季薇
+蕭尚文
+蕭怡芳
+蕭昆廷
+蕭欣怡
+蕭芳盈
+蕭青萍
+蕭俊賢
+蕭彥彰
+蕭柏軒
+蕭美娟
+蕭述仁
+蕭夏敏
+蕭振安
+蕭珮如
+蕭訓國
+蕭國正
+蕭國寶
+蕭崇論
+蕭敏彥
+蕭清燕
+蕭淑珍
+蕭淑穎
+蕭雪吟
+蕭凱懋
+蕭博仁
+蕭博仰
+蕭富元
+蕭惠元
+蕭惠芳
+蕭惠鄉
+蕭斐如
+蕭景聰
+蕭智梅
+蕭棋元
+蕭竣鴻
+蕭詠方
+蕭逸平
+蕭雅丹
+蕭雅文
+蕭雅莉
+蕭雯心
+蕭愛玲
+蕭煥緯
+蕭瑛旗
+蕭聖樺
+蕭詩璇
+蕭嘉琪
+蕭寧君
+蕭維倩
+蕭輔彥
+蕭銘權
+蕭慧怡
+蕭瑩真
+蕭憶蘭
+蕭翰英
+蕭靜宜
+蕭豐智
+蕭麗娟
+蕭鶴軒
+蕭琮翰
+蕭檉譁
+賴乃頌
+賴士超
+賴仁祐
+賴天鴻
+賴文英
+賴文華
+賴世昌
+賴世維
+賴可恩
+賴弘璘
+賴正野
+賴永鈴
+賴玉唐
+賴玉霜
+賴亦貞
+賴妃君
+賴旭彥
+賴伯威
+賴妙宣
+賴宏昌
+賴廷禹
+賴志昌
+賴志偉
+賴志綱
+賴杏儒
+賴秀春
+賴育廷
+賴育麟
+賴佳伶
+賴佳欣
+賴佳慧
+賴佩君
+賴其亮
+賴孟華
+賴宗誠
+賴宜佳
+賴居正
+賴怡文
+賴怡伶
+賴怡君
+賴怡欣
+賴怡樺
+賴昌彥
+賴明宏
+賴明德
+賴東延
+賴欣宜
+賴武溪
+賴玫如
+賴芳延
+賴長佑
+賴信光
+賴信誠
+賴俊兆
+賴俊宏
+賴俊杰
+賴俊達
+賴俐卉
+賴冠宏
+賴勇志
+賴奕帆
+賴姿均
+賴威均
+賴宣妤
+賴建合
+賴建佑
+賴建志
+賴建雄
+賴建融
+賴彥佐
+賴彥良
+賴彥樺
+賴思霖
+賴政寬
+賴昭光
+賴昭龍
+賴昱勛
+賴柏伸
+賴柏龍
+賴珀賢
+賴盈青
+賴科印
+賴紅霞
+賴美冠
+賴美錵
+賴茂廷
+賴虹伶
+賴軍舉
+賴郁雯
+賴韋達
+賴家弘
+賴振生
+賴浩豐
+賴秩光
+賴高志
+賴國恩
+賴基淥
+賴啟源
+賴淑怡
+賴淑貞
+賴淑萍
+賴莉雯
+賴惠君
+賴愉芳
+賴欽詮
+賴貴義
+賴隆平
+賴雅琴
+賴順振
+賴源淳
+賴義中
+賴葦帆
+賴靖宜
+賴嘉慧
+賴榮璉
+賴維廷
+賴銘相
+賴增聰
+賴慶銘
+賴慧娟
+賴潔芳
+賴鋒
+賴曉楓
+賴穎輝
+賴錦億
+賴靜璇
+賴鴻銘
+賴韻如
+賴麗
+賴麗雯
+賴芃君
+賴柊棋
+賴瑋昀
+賴霈儒
+遲尚權
+錢以恬
+錢良蕙
+錢欣宜
+錢威融
+錢郁蘋
+錢逸霖
+錢德俊
+錡惠雯
+閻惠玲
+霍莘瑜
+駱永建
+駱季平
+駱芳梧
+駱建呈
+駱衍龍
+駱嘉慶
+鮑行仁
+鮑國峰
+龍秀貞
+龍星兆
+儲于超
+應志宏
+戴乙菁
+戴大鈞
+戴元利
+戴文雄
+戴正平
+戴立人
+戴全利
+戴守正
+戴佑洲
+戴呈安
+戴宏丞
+戴志昇
+戴杏芳
+戴佳平
+戴季全
+戴怡貞
+戴明珠
+戴俊緯
+戴秋香
+戴郁芳
+戴振遠
+戴國良
+戴惟有
+戴莉
+戴森地
+戴雅如
+戴傳家
+戴瑞君
+戴群峰
+戴嘉宏
+戴嘉憲
+戴維伸
+戴增瑜
+戴賢祥
+戴靜儀
+戴忞臻
+戴薏珊
+繆信宇
+薛乃允
+薛丹桂
+薛世煌
+薛玉鋒
+薛光程
+薛如君
+薛百惠
+薛志宏
+薛依蒨
+薛幸嘉
+薛昇旭
+薛奕龍
+薛美芳
+薛展立
+薛偉伯
+薛淑靖
+薛凱文
+薛圍中
+薛景文
+薛竣綸
+薛雅萍
+薛瑞珍
+薛嘉雄
+薛蓓芳
+薛儒霙
+薛韻婷
+薛鈺真
+謝于櫻
+謝小梅
+謝仁哲
+謝元貴
+謝心雅
+謝文娟
+謝文堯
+謝文瑜
+謝文斌
+謝以欣
+謝弘亮
+謝正益
+謝永信
+謝玉珠
+謝立群
+謝光中
+謝吉豐
+謝如鴻
+謝戌嘉
+謝聿
+謝佐宜
+謝克強
+謝均毅
+謝宏忠
+謝宏緯
+謝志宏
+謝志明
+謝志偉
+謝志逸
+謝志德
+謝扶錦
+謝秀青
+謝秀蓮
+謝育娟
+謝育霖
+謝亞嵐
+謝依倫
+謝佳文
+謝佳宏
+謝佳芳
+謝佳倩
+謝佳純
+謝佳雯
+謝佳穎
+謝佳櫻
+謝佩君
+謝佩芳
+謝佩珊
+謝佩珍
+謝佩真
+謝佩蓉
+謝侑書
+謝其斌
+謝周熾
+謝坤憲
+謝孟君
+謝孟芸
+謝孟真
+謝孟樺
+謝孟芩
+謝宗佑
+謝宗容
+謝宗賢
+謝宗憲
+謝宗翰
+謝宜
+謝宜芳
+謝宜倫
+謝宜婷
+謝宜臻
+謝宛玲
+謝宛諮
+謝尚儒
+謝幸宜
+謝庚翰
+謝忠勤
+謝怡婷
+謝承達
+謝於叡
+謝易霖
+謝昌瑾
+謝明
+謝明宏
+謝明村
+謝明芳
+謝明倫
+謝明書
+謝明惠
+謝明憬
+謝明憲
+謝明翰
+謝明諴
+謝昇哲
+謝東昇
+謝東曉
+謝松憲
+謝欣宏
+謝欣怡
+謝欣釗
+謝欣霖
+謝牧阮
+謝秉容
+謝秉諺
+謝芝青
+謝金貞
+謝長原
+謝雨青
+謝青樺
+謝俊宏
+謝俞枰
+謝奕姝
+謝彥吏
+謝政男
+謝政達
+謝政翰
+謝柏舟
+謝皇翔
+謝秋燕
+謝美玲
+謝致群
+謝郁瑄
+謝家菱
+謝庭恩
+謝晉賢
+謝浩然
+謝素菱
+謝乾駿
+謝曼盈
+謝國彬
+謝婉玲
+謝啟文
+謝梓麟
+謝清洲
+謝淑芬
+謝淑娟
+謝淑鈞
+謝皎盈
+謝笠元
+謝凱偉
+謝博皓
+謝媛琪
+謝嵐屏
+謝惠芬
+謝惠萍
+謝景仁
+謝智浩
+謝植岡
+謝皓智
+謝菊蕙
+謝進忠
+謝雅如
+謝雅雪
+謝雅萍
+謝雯凱
+謝順隆
+謝毓玲
+謝瑞梅
+謝萬龍
+謝詩慧
+謝嘉珊
+謝嘉銘
+謝榮哲
+謝碧菁
+謝維仁
+謝翠環
+謝銘忠
+謝銘智
+謝鳳玲
+謝德鈞
+謝慧珍
+謝慧瓊
+謝蔚儒
+謝學綱
+謝曉嵐
+謝燕玲
+謝蕙
+謝融齊
+謝靜宜
+謝靜儀
+謝璦如
+謝鴻駿
+謝禮成
+謝鎮宇
+謝瓊文
+謝韻儒
+謝寶瑢
+謝耀養
+謝顯銘
+謝旻莉
+謝晟銘
+謝煒頻
+謝燿聰
+鍾乙民
+鍾元振
+鍾文宇
+鍾文欽
+鍾月圓
+鍾幼凌
+鍾永雄
+鍾玉惠
+鍾兆民
+鍾成奇
+鍾伯君
+鍾孝其
+鍾志宏
+鍾志豪
+鍾秀芳
+鍾育諺
+鍾依靜
+鍾佳真
+鍾佳穎
+鍾佩芸
+鍾佩婷
+鍾卓儒
+鍾孟憬
+鍾宜全
+鍾宜興
+鍾尚儒
+鍾延華
+鍾承璋
+鍾易達
+鍾明秀
+鍾明晏
+鍾明憲
+鍾昇穎
+鍾欣翰
+鍾秉諺
+鍾金璋
+鍾俊甫
+鍾政民
+鍾政錦
+鍾盈慧
+鍾美琳
+鍾郁翎
+鍾振泓
+鍾紋易
+鍾商駿
+鍾崇梅
+鍾淑芬
+鍾淑萍
+鍾凱依
+鍾惠如
+鍾智傑
+鍾絢如
+鍾逸石
+鍾雲光
+鍾源德
+鍾裕文
+鍾嘉鳳
+鍾禎元
+鍾銘智
+鍾德霖
+鍾樂吟
+鍾曉嵐
+鍾錦琳
+鍾薰嫺
+鍾鵬飛
+鍾懿華
+鍾旻圜
+鞠岱琦
+韓文豐
+韓克儉
+韓佩劭
+韓宜潔
+韓明倫
+韓相宜
+韓梅
+韓雅而
+韓嘉駿
+韓寶瑩
+叢淑華
+簡上哲
+簡士益
+簡士濠
+簡小蕙
+簡文亨
+簡文貴
+簡世裕
+簡巧婷
+簡民龍
+簡玉珍
+簡立人
+簡伊婕
+簡仰壯
+簡吉聰
+簡宇屏
+簡百應
+簡至霆
+簡伶娟
+簡君玲
+簡妤玲
+簡宏倫
+簡廷安
+簡志安
+簡志峰
+簡志雄
+簡志穎
+簡秀杏
+簡秀純
+簡貝珊
+簡佳琪
+簡佩琪
+簡宗德
+簡怡婷
+簡明雁
+簡玫玉
+簡雨蔭
+簡建一
+簡昭萸
+簡美娟
+簡虹琪
+簡家新
+簡珮雅
+簡健俊
+簡國斌
+簡啟恆
+簡淑芬
+簡淑婷
+簡莉靜
+簡博彬
+簡惠湘
+簡森乙
+簡華真
+簡雅如
+簡順立
+簡敬庭
+簡溢均
+簡瑞棻
+簡聖豪
+簡詩峰
+簡嘉宏
+簡嘉彬
+簡嘉齡
+簡漢璋
+簡禎佑
+簡維萱
+簡遠真
+簡銘辰
+簡鳳儀
+簡慧娟
+簡憶如
+簡錫淵
+簡駿貿
+簡藝峰
+簡驪潔
+簡瑋倫
+簡恒聖
+聶東南
+聶暐峻
+藍子桓
+藍元皓
+藍文孝
+藍弘偉
+藍仲偉
+藍志發
+藍怡平
+藍昕緯
+藍春發
+藍峻彬
+藍偉仁
+藍國華
+藍梓侖
+藍惠萍
+藍雅齡
+藍嘉哲
+藍慧珊
+藍黛瑩
+闕少芳
+闕吟夙
+闕明慧
+闕逢毅
+闕瀅芬
+顏士彬
+顏大福
+顏小凡
+顏月
+顏弘祥
+顏永芳
+顏玉瑋
+顏光玗
+顏如玉
+顏有男
+顏伯奇
+顏呈旭
+顏妙芳
+顏宏哲
+顏宏叡
+顏志成
+顏志揚
+顏志麟
+顏秀真
+顏良澤
+顏佳慧
+顏宗平
+顏承偉
+顏秉德
+顏奕仁
+顏秋琴
+顏若庭
+顏家祺
+顏珮嵐
+顏國書
+顏尉凱
+顏晨暐
+顏淑雲
+顏婷玲
+顏華成
+顏雅卉
+顏雯韻
+顏瑞文
+顏瑜慧
+顏聖鴻
+顏嘉成
+顏嘉琳
+顏寧佑
+顏福順
+顏銀桐
+顏鳴慶
+顏瑩鵬
+顏澤宇
+顏鴻欽
+顏獻佑
+顏鈺芸
+魏士傑
+魏子晴
+魏仁威
+魏文綺
+魏巧晴
+魏玉雯
+魏任廷
+魏名汎
+魏宇達
+魏百盛
+魏伶娟
+魏君潔
+魏孝寬
+魏岑芬
+魏志倫
+魏秀恬
+魏良佑
+魏佳卿
+魏宜寬
+魏明章
+魏俊旺
+魏春生
+魏英鎮
+魏晉一
+魏偉
+魏崇桓
+魏淑玫
+魏逢毅
+魏朝信
+魏逸玲
+魏愛津
+魏滇佑
+魏筠文
+魏鈴芝
+魏嘉良
+魏嫦妝
+魏碩穎
+魏銘漢
+魏慕帆
+魏趨吉
+魏麒容
+魏瑄誼
+龐永培
+曠婉君
+羅千雯
+羅子軒
+羅尹伶
+羅仁勇
+羅元甫
+羅允中
+羅友聲
+羅心屏
+羅文宜
+羅文彬
+羅文齊
+羅月凰
+羅世銘
+羅仕棋
+羅巧莉
+羅正邦
+羅永智
+羅玉萍
+羅亦旋
+羅仰真
+羅兆維
+羅宇任
+羅旭君
+羅至善
+羅宏一
+羅志雄
+羅秀玲
+羅亞寧
+羅佳琦
+羅宜君
+羅怡惠
+羅明章
+羅欣慈
+羅芷青
+羅俊彥
+羅彥
+羅玲玲
+羅美蓮
+羅苑榕
+羅家欣
+羅振廷
+羅泰倫
+羅珮娟
+羅素花
+羅偉哲
+羅健志
+羅唯瑄
+羅國華
+羅國暐
+羅婉娥
+羅強
+羅敏文
+羅敏儀
+羅淇文
+羅淑蓉
+羅紹文
+羅傑
+羅凱頤
+羅博俊
+羅惠方
+羅惠蘭
+羅智能
+羅紫菁
+羅華濃
+羅鈞耀
+羅雅敏
+羅雯琴
+羅毓傑
+羅瑞榮
+羅聖琳
+羅達
+羅嘉玲
+羅榮輝
+羅際川
+羅慶傑
+羅瑩棻
+羅曉威
+羅興安
+羅鴻基
+羅馨宜
+羅煒程
+譚又民
+譚光華
+譚佩嵐
+譚悅馨
+譚智仁
+譚諦
+關一心
+關志宇
+關淑雲
+嚴子筑
+嚴心元
+嚴可君
+嚴志哲
+嚴春鳳
+嚴振興
+嚴婉玲
+嚴淑菁
+嚴詠聖
+嚴維德
+嚴馥
+竇瑞霞
+藺心怡
+蘇千代
+蘇士豪
+蘇子翔
+蘇中怡
+蘇元乙
+蘇文
+蘇文娟
+蘇文輝
+蘇世庭
+蘇巧寧
+蘇正家
+蘇永傑
+蘇玉修
+蘇立凱
+蘇如蕙
+蘇竹安
+蘇君霏
+蘇宏泰
+蘇志孟
+蘇志堅
+蘇志鴻
+蘇秀玲
+蘇育弘
+蘇育俞
+蘇育瑱
+蘇佳足
+蘇佩瑜
+蘇宗一
+蘇尚瑾
+蘇怡如
+蘇怡君
+蘇怡菁
+蘇怡馨
+蘇明俊
+蘇明鴻
+蘇武龍
+蘇芳正
+蘇芳瑩
+蘇青妙
+蘇信源
+蘇俊夫
+蘇俊祥
+蘇俊銘
+蘇俞如
+蘇勇誠
+蘇奕傑
+蘇威達
+蘇建中
+蘇建志
+蘇建豪
+蘇彥熒
+蘇恆至
+蘇政謙
+蘇昭君
+蘇昱任
+蘇柏州
+蘇柏樺
+蘇珊瑩
+蘇皇原
+蘇盈穗
+蘇紀敏
+蘇美玲
+蘇致仁
+蘇英皓
+蘇貞燕
+蘇郁倫
+蘇郁雅
+蘇香琪
+蘇倉永
+蘇哲億
+蘇家
+蘇家信
+蘇家瑩
+蘇峻民
+蘇庭瑤
+蘇振銘
+蘇桓慶
+蘇浩為
+蘇益祿
+蘇窈瑱
+蘇純慧
+蘇軒民
+蘇偉誠
+蘇國典
+蘇堂豪
+蘇婉惠
+蘇敏
+蘇清安
+蘇淑婷
+蘇皎慧
+蘇莉惠
+蘇博玄
+蘇惠貞
+蘇晶新
+蘇湘怡
+蘇舜卿
+蘇逸真
+蘇雅君
+蘇雅惠
+蘇雅慧
+蘇順誠
+蘇意嵐
+蘇敬菱
+蘇毓彬
+蘇猷翔
+蘇睦仁
+蘇群傑
+蘇聖涵
+蘇裕文
+蘇詩婷
+蘇靖嵐
+蘇嘉宏
+蘇嘉鴻
+蘇碧昭
+蘇聞謹
+蘇億珍
+蘇慧文
+蘇慧娟
+蘇毅
+蘇曉如
+蘇曉芃
+蘇錦昇
+蘇靜芳
+蘇聲振
+蘇鴻儀
+蘇鵬翰
+蘇麗華
+蘇旻君
+蘇烜毅
+蘇琡評
+蘇瑋琳
+蘇豊棋
+蘇鈺菁
+鐘士欽
+鐘文秀
+鐘玉如
+鐘佳絹
+鐘盈凱
+鐘挺豪
+鐘國銘
+鐘敏愫
+鐘惠宇
+鐘順禹
+鐘碧蘭
+鐘馨誼
+饒志豪
+饒亮
+饒珮齡
+饒敬國
+黨一為
+顧文絢
+顧立蘋
+顧宗沛
+顧倩如
+顧崇德
+顧翠華
+龔于珊
+龔文穎
+龔兆祺
+龔佩君
+龔青雲
+龔彥名
+龔貞如
+龔書聖
+龔淑苗
+龔雅欣
+龔靖詒
+龔豫慧
+亓隆祥
+佘尚鴻
+佘聯斌
+邾亦南
+涂世和
+涂君蓉
+涂育榮
+涂欣宏
+涂政男
+涂振民
+涂啟原
+涂富星
+涂雅燕
+涂嘉原
+涂慧珍
+涂耀升
+粘弘吉
+粘育瑋
+粘純如
+粘聖鑫
+粘耀仁
+鄔心怡
+靳立偉
+鄺光寧
+欒季強
+芳琦
+婉婷
+銘源
+文勳
+鳳琪
+信義
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt
new file mode 100644
index 0000000..1ae1d8a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese.txt
@@ -0,0 +1,22833 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+あきもと,ひろし
+あきば,ひろし
+あらい,よしひろ
+あらい,ひとし
+あかがわ,えいじ
+あらき,きよみ
+あいかわ,よしひろ
+あきの,みちお
+あきやま,ひろし
+あさい,かずまさ
+あべ,きよたか
+ありが,ひろし
+あきた,ひろし
+あかつか,とる
+あらい,かずお
+あさはら,つとむ
+あつみ,けんいち
+あわや,かずや
+あさかわ,よしゆき
+あおき,ひろし
+あわず,やすお
+あきくさ,しげる
+あおやぎ,ひであき
+あじさわ,けんいち
+あいそ,としお
+あおしま,せいご
+あと,のりお
+あさの,ゆきお
+ありが,つよし
+あおき,ひとし
+あいかわ,まもる
+あきた,つとむ
+あさの,よしてる
+あさと,かずひこ
+あらき,まさはる
+あんどう,かずお
+あさかわ,まさあき
+いいだ,ひとし
+いわさわ,としあき
+いしかわ,おさむ
+いのうえ,あきら
+いしはら,よすけ
+うかじ,はつかず
+うめたに,しゅひち
+おけたに,やすし
+おすぎ,ちよかず
+おかわ,まさひこ
+かとう,よしや
+かも,そひち
+くまがい,りょへい
+こんど,ゆきお
+すぎもと,まさひろ
+はまさき,のりあき
+ちだ,ひでし
+なかむら,よしかず
+ながた,やすし
+さわむら,ひろし
+なるお,まこと
+なりた,まさき
+はせがわ,まさお
+ふじた,ひろひと
+ふじわら,よしのり
+ぶよ,さちこ
+ほり,かつひこ
+みなみむら,けんじ
+みやじま,あきひろ
+やまだ,みきひこ
+やまぐち,まさとし
+やなぎはら,まさあき
+よしの,まさし
+にいだ,あきら
+おひゃま,おさむ
+かながわ,よしのり
+きむら,しゅんじ
+つかざき,けいぞ
+かわだ,ちえこ
+あさかわ,かちこ
+しもつ,よしのぶ
+おか,ゆみこ
+おがわ,ひろこ
+たいら,けいこ
+いしの,たかこ
+きみしま,てつお
+さとう,こうじ
+やまだ,ちあき
+おた,ちより
+まえだ,まり
+かざらし,たかし
+ごと,みどり
+ほし,しんいち
+くろだ,くにひこ
+つかわき,ゆうこ
+いながき,いちろう
+いわもと,りえこ
+つるた,みほ
+いしじま,なおこ
+やまなか,みさこ
+うえき,まさあき
+にしむら,たかひと
+わいだ,こすけ
+よしだ,しょひち
+しぶや,きよなが
+あと,あきら
+みやた,てつや
+おたき,おさむ
+きよおか,なおみち
+おたに,ひでとし
+にしわき,みつる
+にしやま,かつのり
+みしま,まもる
+かとう,しんや
+いまお,としや
+おざき,まさひろ
+せきや,たもつ
+つくだ,たかし
+みよし,りょへい
+よしみ,ひろとし
+ささおか,あきこ
+おしま,あつこ
+くぼた,ただし
+しばやま,るみ
+おくぼ,ゆたか
+たちの,まさのり
+わだ,かおる
+まつした,つぎお
+こむら,まこと
+まきした,たかし
+あかお,なおみ
+はしもと,たかし
+おの,たかゆき
+せきもと,ひろし
+まえだ,みずほ
+みつほり,こうじ
+みなみぞの,まさゆき
+せがわ,のぶゆき
+すずき,のぶまさ
+きたがわ,たかゆき
+よしやす,たかし
+やまもと,ちはる
+かとう,ちずこ
+かわかみ,しゅぞ
+まきの,となみ
+すずき,じゅん
+ふるさわ,みちよ
+はやし,まさもり
+いまにし,やすひこ
+みやもと,けいこ
+まき,やすひろ
+こいで,ひとし
+わたなべ,かずお
+おはし,よしお
+あかお,ちから
+あさい,なおき
+いまい,まさき
+きら,かおり
+にしむら,とよじ
+よしかわ,よしたか
+みなみ,じろ
+つるた,まり
+なかむら,ひろし
+たなか,よ
+まつうら,なおき
+すぎた,まさお
+かわい,さとし
+こくぼ,じょじ
+つだ,としひこ
+みやたけ,ゆか
+くろさわ,くにあき
+すみひら,さほ
+たかき,まさこ
+いしと,ひとし
+やまだ,あきお
+にいつ,かずこ
+いわむら,たかし
+かわなべ,まさひこ
+ながい,てるき
+やまね,としゆき
+いまい,けんじ
+なかお,のりお
+おしきり,じゅにち
+いしかわ,けんじ
+おかじま,たけし
+おにし,じょじ
+すずき,としお
+やまなか,さつき
+たにぐち,まこと
+かわべ,としたか
+こんの,よしかず
+さとう,まさひこ
+たかやま,まさお
+もりみち,こき
+ほりかわ,もとかず
+ふくい,のぶあき
+きたむら,かんじ
+なかはら,よしひろ
+いちい,ひろゆき
+いわさ,ちあき
+すずき,たかゆき
+よねたに,いさお
+たの,ふみはる
+しばた,じゅん
+いのうえ,じゅん
+いしかわ,まさはる
+きし,てつじょ
+あわえ,さつみ
+たけお,かずひろ
+きのした,ときお
+つかだ,みき
+ありどめ,やすひろ
+きっかわ,しんいち
+おがさわら,いたる
+ながせ,かつみ
+はるやま,たまこ
+おず,あきら
+こさか,ひろみ
+しらさき,ひでのり
+たなべ,かよこ
+いけがみ,しゅんじ
+こばやし,かつふみ
+まつばら,たけし
+なかがわ,ひでよ
+おがわ,まさのり
+よしだ,としお
+いけ,まさみ
+たにぐち,あつし
+まえだ,よしあき
+ひらの,かずひこ
+しみず,ふみあき
+やまだ,としゆき
+たなか,としあき
+こまつざき,ひさかず
+かとう,たかひろ
+おわ,あつひこ
+いわむら,やすお
+いりえ,としかず
+あかやま,とる
+あきもと,つとむ
+かみむら,つよし
+すみた,じゅにち
+はまさき,なおと
+やすだ,もりひろ
+たけむら,せいじ
+むらかみ,まさのぶ
+なかじま,さだのぶ
+もりもと,まさみち
+せきぐち,ひろし
+なかじま,たかゆき
+きがわ,きみこ
+たかひら,あきとし
+もちだ,ひろあき
+かめやま,まもる
+おやまだ,まさかず
+たなか,のりこ
+ほんま,ひろただ
+きのした,かずゆき
+しのつか,まさゆき
+あいはら,ひろあき
+ながまつ,あきひこ
+とよむら,かおる
+ひらの,あつし
+きむら,まもる
+いけだ,みきや
+いしはら,とみつぐ
+のぐち,ひさとも
+こけつ,こうじ
+おくやま,たかゆき
+はまぐち,まさひこ
+つじさか,ひろひさ
+いちかわ,たかし
+よしだ,あつし
+やまだ,たかし
+しみず,まさひさ
+さかがみ,てるひさ
+こすぎ,しんじ
+にしだ,やすひこ
+いいだ,のぶしげ
+うちだ,やすふみ
+もとやま,えいじ
+みやもと,まさあき
+こばやし,たかし
+かとう,じゅん
+しらい,せいじ
+はぎわら,ゆうこ
+やまうち,まさる
+みつはし,みつまさ
+もんじ,あつひこ
+たきもと,しんじ
+おくだ,ひであき
+つかもと,さとる
+むこはら,せいご
+さるや,よひち
+おかじま,やすし
+ほしの,のりかず
+ほし,ひさひこ
+ふしみ,せいじ
+たかはし,かつら
+にしやま,やすみ
+つるまち,ちはや
+とみた,いくよ
+うちだ,やすし
+おたか,ひろゆき
+さかい,さとし
+そがべ,こうじ
+わだ,ゆきひで
+こさか,かおり
+あそ,よひち
+あらい,のりこ
+すぎむら,しゅじ
+あきよし,しゅじ
+あさかわ,やすいく
+わだ,みちお
+いけだ,としひこ
+おかもと,ひさと
+あおき,ひろふみ
+うえさわ,こういち
+うやま,たつや
+なかはま,しんじ
+かわもと,しょひち
+しょひゃま,なると
+すえまつ,とる
+ながい,ゆうこ
+なかはら,たかひさ
+なわた,かつみ
+かつざわ,けんじ
+やまうち,まさみ
+あかぎし,あけみ
+くさずみ,としはる
+ほかり,しげお
+かとう,かずお
+きりう,つとむ
+おがわ,さかえ
+たなか,こういち
+あいむら,りょじ
+いがらし,まさる
+かわわき,つよし
+まえさか,ひであき
+まつしま,すすむ
+まつもと,まさゆき
+かたい,ひろき
+こじま,じゅんじ
+つじもと,さとし
+なわた,ゆぞ
+ふじたに,なりあき
+きせ,ひろし
+さかぐち,みゆき
+すずき,つよし
+はまさき,としひこ
+よしだ,ひろし
+ほった,おさむ
+ますこ,ひろき
+たけなか,まさと
+いしい,まさよし
+たさか,つとむ
+まつだ,まさと
+はた,たかみち
+あきやま,ともみつ
+たかはし,あつし
+やまかわ,ひでと
+よこち,まさひろ
+よねたに,まさあき
+ふじの,とる
+はせがわ,さとし
+ふじた,かずひこ
+あんらく,てつろ
+はしもと,じゅにち
+いなだ,としゆき
+ゆげ,まさひろ
+いまだ,ひとし
+さかもと,しげひと
+とよなが,ひさお
+はしもと,こすけ
+はない,はるき
+しみず,ひろし
+なかむら,まさひろ
+かじむら,たかし
+いしがき,ゆたか
+はっとり,やすひと
+あまの,しょじ
+みかみ,まさひろ
+ふるてら,きいちろう
+まみや,ゆすけ
+つるの,かつとし
+あさい,まさゆき
+のむら,まさこ
+よこやま,のぶゆき
+いけだ,れいこ
+あんどう,まさよし
+おかやす,いずみ
+ごと,かずひさ
+かわしま,やすひろ
+はぎわら,てつお
+あたらし,よしのり
+たかやま,たつお
+にしやま,よしはる
+えちご,よしひこ
+やまざき,けんぞ
+むろや,まさお
+きむら,りょ
+なかはら,かおる
+うえの,まゆみ
+よしだ,ひでき
+つかもと,むつこ
+おざき,やすき
+あしかわ,しげお
+ねぎし,しんじ
+きゅの,ゆたか
+さとう,あきお
+いのうえ,やすこ
+きくずみ,ひであき
+まつもと,たかこ
+はやし,えり
+ふくおじ,ゆみこ
+なるせ,としひと
+まつもと,としゆき
+もり,しんいち
+みき,よしひろ
+なかたに,てつお
+みやがわ,ゆきお
+ありよし,ふみお
+しらい,たかし
+みなみ,けんた
+とりごえ,ただし
+こすが,とおる
+つじの,やすしげ
+おぐら,とものり
+おりた,しゅひち
+あみもと,よしひで
+おさか,かずひこ
+はやし,まさる
+みなみ,だいさく
+よしだ,たかお
+にしはら,かんじ
+おくがわ,けんたろう
+つじ,まさき
+なかい,まさし
+にしむら,のぶお
+にたない,よしあき
+くどう,ふみのり
+さい,いくお
+しょ,よしゆき
+いのうえ,まさよし
+たにぐち,ふじお
+なかにし,ただし
+おもり,かずひろ
+くまがい,やすひろ
+いしあい,ちかし
+はぎはら,じゅにち
+たがた,とる
+すずき,よしひろ
+くぼ,みのる
+かなうち,としひこ
+にしお,よしお
+いなだ,まさとも
+たけいち,てるゆき
+あんどう,たかし
+まつなみ,つぐお
+みなくち,けんご
+かなうち,ひろし
+おひゃま,たかお
+ますだ,まなぶ
+やぎはら,かおる
+みずの,ひろたね
+のぶくみ,しんじ
+なだ,ひろゆき
+たけたに,たかゆき
+いまいずみ,とよかず
+いなだ,かずのり
+いまに,けんじ
+おき,みちお
+ふくしま,ぜんさく
+いいお,しんや
+いしだ,ひでき
+ひらた,ひでのぶ
+いたがき,しんじ
+やまふく,まこと
+さとう,しょひち
+なかがわ,しゅさく
+おさか,なおき
+おいかわ,のぼる
+かしお,しょじ
+ほしざき,としお
+せきじま,けんじ
+おかまえ,とる
+さとう,たかあき
+こいで,ふとし
+たかはし,いちろう
+おがわ,いさお
+てらしま,たかふみ
+やました,まさひろ
+のせ,よすけ
+まつまえ,ひろとも
+よした,かつや
+むらた,こうじ
+はら,かずひろ
+やまうち,さとし
+かみじょ,のりお
+すがい,りょ
+たかの,しゅひち
+ところ,のぶあき
+すずき,よしひろ
+ささき,しげき
+つのだ,こうじ
+やまさき,のりひろ
+みうら,たかし
+おだぎり,たかなお
+はやし,せいじ
+とみおか,こういち
+いぐち,たくお
+こんど,まさあき
+くぼ,ひでゆき
+くらぬき,あゆみ
+とみまつ,のりあき
+くろかわ,とる
+のざわ,のりひこ
+かわさき,けんじ
+たけだ,かつゆき
+しのはら,たつゆき
+ふるや,よしのぶ
+なかむら,よししろ
+やじま,すすむ
+にしがき,あつゆき
+なかがわ,てつろ
+ひらやま,てつや
+やまぐち,かつみ
+よしむら,あつこ
+つだ,しんちょ
+かつらい,ひとし
+みない,せいいち
+たきぐち,たかし
+わけべ,ひでお
+にしかわ,きょこ
+しらがき,なおこ
+ばば,まさあき
+あかり,すみお
+あべ,くにあき
+かい,かつや
+おもり,あきひろ
+すずき,しげる
+ながさわ,さとる
+さわだ,とる
+あずま,きよし
+おの,そ
+かわにし,しゅにち
+まなべ,むつひろ
+ありやま,ゆうじ
+にしかわ,たかゆき
+あつみ,わたる
+いとう,としかず
+ひろた,かずお
+ほかぞの,よしひろ
+ほしの,まさや
+やまぐち,ひろあき
+あがた,まさかず
+まるお,りょじ
+こいで,たくや
+かみむら,くにひろ
+さいとう,ひでかつ
+ふくみつ,たかし
+ひらやま,ひとし
+さいとう,えみこ
+いけお,のぶゆき
+ふるかわ,ひでき
+いいだ,のぶひで
+みやざき,かずひろ
+よしだ,ゆうじ
+きくた,きよし
+ちば,しゅじ
+とりやま,ひろゆき
+えざわ,としや
+おば,かずと
+やまもと,やすひろ
+にしかわ,まこと
+えんど,こうじ
+ふくい,よしゆき
+はまの,ひろあき
+きたはら,まさひで
+さとう,なおき
+まつお,あつし
+とよた,ひかる
+ひらもと,てつや
+やまもと,みのる
+はまだ,じゅにち
+いわかみ,ひろあき
+くぼ,もとひろ
+えんど,やすゆき
+かげやま,えりこ
+にいや,てつお
+こち,りつお
+あだち,りゅうたろう
+はやし,よしたみ
+なかの,おさむ
+いしはま,まさのぶ
+こくぼ,まさはる
+かわの,おさむ
+なかじま,よいち
+たいら,けんじょ
+たけぎ,ゆきひろ
+もりしま,まさふみ
+なかむら,ひでや
+のぐち,としひで
+あらき,こうたろう
+あら,まゆみ
+いとう,みのる
+はやさか,てつお
+こつか,かずひろ
+たけうち,まさのり
+いわた,ともゆき
+まえだ,ゆすけ
+ほそかわ,しげゆき
+あらい,しゅんじ
+おくら,まこと
+たけこし,まさひろ
+やまぐち,りゅひち
+しみず,はじめ
+いとう,のりひこ
+いずみ,つよし
+ごと,りつお
+おつぼ,ともこ
+かみこがわ,ひろあき
+たけい,ひろき
+みやはら,やすてる
+あわじ,ひろし
+うしろだ,なおこ
+もりいずみ,ふとし
+ながの,まさかず
+たなか,ひろし
+ふかえ,たかし
+ふるや,よしお
+みずひき,まさひろ
+くぼ,やすひろ
+たぐち,かんじ
+なかお,あつし
+やました,けんじ
+くろき,かつとし
+まつだ,よしつぐ
+おだじま,かねみつ
+ほり,そうたろう
+たにぐち,かずみ
+あらい,しんいち
+ごと,さとこ
+とねがわ,まさし
+もりた,あつお
+ふるかわ,かおる
+ゆき,はじめ
+しらいし,あつし
+いけや,むねゆき
+わたなべ,けんじ
+たにぐち,みさお
+ますだ,よしお
+みずぐち,みつよし
+はやみず,ふみあき
+ほかり,つぎと
+いしい,ゆひち
+しらいし,しょご
+しもかわら,けんいち
+もりもと,なほみ
+いとう,ゆきお
+おひゃ,つねやす
+みよし,としのり
+しばた,てつじ
+たんざん,のりゆき
+いわさき,たかこ
+ふくい,しげお
+もりばやし,よしのり
+やまだ,たかひろ
+ふじわら,さちこ
+なつめ,たつおき
+しのはら,こういち
+おさだ,しのぶ
+ふじはら,じろ
+ふじもと,ゆみ
+きの,あきひこ
+やまもと,のりひこ
+いしじま,まさひこ
+いが,しげひろ
+なかえ,ともこ
+やの,ひろし
+かなみつ,けいじ
+すずき,みのる
+たかだ,のりひろ
+いしばし,ともひこ
+おつぼ,ひでかず
+すぎ,さとし
+はやしぐち,かずや
+てらした,ひでみ
+しもやま,さとし
+みやざき,やすと
+もり,ひろし
+やまもと,まさし
+であい,たけひと
+ほり,ひろみ
+あねざき,よしお
+くぼた,もとき
+ごじょ,もりひろ
+ひきだ,あきら
+さかぐち,だいじ
+よしい,ゆうじ
+きたはら,おさむ
+ふじい,てるお
+なめき,りょこ
+よしむら,ひろゆき
+たむら,みつはる
+うみの,たかし
+あんどう,ひろし
+よしもと,かずお
+ねもと,よしふみ
+みやざき,みつる
+たかもり,やすひろ
+くまがい,ひとし
+ごだ,きよひろ
+はた,としゆき
+くずみ,かずお
+なつい,たかひろ
+しまだ,まさとし
+おつき,ひろし
+まみや,のりあき
+さとう,たかし
+こばり,かつと
+ささき,みどり
+かねこ,やすこ
+おの,としお
+おひゃま,だいすけ
+まとば,ひろし
+いたくら,ひろし
+おだしま,たけし
+しいき,よしふみ
+しばた,まさひこ
+かつら,ちえこ
+あらい,くにお
+さいとう,こうたろう
+まつもと,こういち
+うえやま,さちこ
+まの,いくお
+みさお,ひでお
+そのべ,かずひろ
+すずき,ひろかず
+やたに,けんじ
+むた,ひでゆき
+まるやま,やすゆき
+ふだ,まさき
+こばやし,とおる
+わたなべ,よしえ
+おだ,まさはる
+おふち,じゅにち
+たなか,かつろ
+さわき,のりこ
+さいとう,かずひろ
+はぎの,ちかこ
+うしやま,よしのり
+おくひら,つよし
+よしいけ,まさのり
+こんの,みつなり
+のだ,しんいち
+えんど,なおき
+すずき,きみゆき
+たなか,あきお
+きど,きょこ
+いとう,まなぶ
+ふじわら,ふみあき
+はせがわ,たかよし
+ますもと,けいいちろう
+かい,かおる
+たかはた,まこと
+ひでしま,まさお
+たかやま,しげお
+みやき,まさし
+ふせ,ひろし
+ももい,のぼる
+つゆき,たかし
+かわはら,のぶひろ
+まつい,さなえ
+はなわ,ゆうこ
+ひわだ,としお
+ますい,としゆき
+かとう,みつお
+たけま,よしひろ
+しらいし,けいじ
+ふるかわ,まさのぶ
+てじま,としはる
+あきもと,あきら
+すぎやま,けいじ
+なんぶ,ひとし
+つじの,ともこ
+てらさか,かずのり
+さかい,しげき
+くぼ,ゆたか
+まるたに,かずひこ
+たかはし,ひろやす
+まつうら,みつぐ
+たなか,しげる
+ゆざわ,あきひろ
+たかはし,まさひろ
+おば,てつや
+まえかわ,たかし
+にわ,ただつぐ
+かわむら,ふみお
+こいけ,よしお
+くりした,しょいち
+ひろせ,あきら
+この,さとし
+はせがわ,ひろあき
+いとう,ゆきひろ
+きざき,けん
+えなみ,いっしん
+つかなか,ひであき
+さかもと,あつし
+まつばら,まさや
+てらい,みのる
+おした,しんや
+たなか,せんじ
+やまもと,たかあき
+いしぐろ,かずや
+はしもと,しんご
+さとう,とおる
+やまもと,とおる
+ふるかわ,まさき
+やまだ,かずえ
+いくた,としゆき
+さとう,おさむ
+わたなべ,たくや
+かこ,ひろひこ
+ますだ,ひろし
+かみじ,あつし
+いはら,のりあき
+あさみ,ふみあき
+なかじま,ひろみ
+こたき,ひでお
+かわもと,しげあき
+かわしま,たかよし
+あずま,よしあき
+なかの,まなぶ
+ひらの,よしと
+たかはし,すみこ
+ふかや,やすひろ
+おば,とおる
+さくらい,としのぶ
+さかい,ひろと
+あおき,しょこ
+よしだ,ゆひち
+こはし,かずひろ
+まつうら,たつじ
+さとう,ひろのり
+にしきおり,たかゆき
+みよし,かずひろ
+こすぎ,かずひろ
+さとう,たかし
+ふじい,てつや
+ふなだ,えいいち
+すぎた,かずひこ
+しょだ,りゅじ
+もりした,しゅいち
+ひら,さとし
+しんたく,まさる
+ひがしだ,ももき
+くりた,たけし
+いなだ,ひろあき
+にしの,いっせい
+いけじり,たくお
+なかむら,やすし
+なかかど,まさのり
+いのまた,てっぺい
+つるみ,おさむ
+ひらもと,ともこ
+みよし,よしひさ
+あわの,つかさ
+あきた,たかいち
+ひがしやま,よしひろ
+さとう,かずひこ
+かわさき,とおる
+まるやま,かずひろ
+すなが,としお
+いまい,ひとし
+ふじい,ひろゆき
+まきた,としゆき
+いとう,まさよし
+たかはし,ゆさく
+きりま,としや
+おにし,のりあき
+みのしま,なおひろ
+さとう,よひち
+やました,ひろし
+みたむら,ひろよし
+さとう,しげき
+とまつ,ふみあき
+えびしま,たかし
+わだ,よしえ
+すずき,たけし
+すがはら,ひろみ
+たぐち,けいいち
+とがし,はつお
+ながはら,ひでき
+やまもと,たみこ
+たけだ,ゆきお
+さとう,みつお
+たかみや,たつし
+あおき,りゅひち
+こやぎ,しんじ
+おのざき,ともゆき
+もりた,たけひと
+さくらぎ,かずたか
+おかさか,たかゆき
+やまぐち,まゆみ
+かわしま,しげる
+いわの,たまみ
+ごこ,やすゆき
+もりた,かずや
+しげたか,きよたか
+てずか,みつる
+おた,ひろむ
+やまだ,まさひこ
+ふかだ,さとる
+はせべ,けいこ
+まつの,まさゆき
+つじかわ,みのる
+まつもと,ひでのぶ
+せのお,たかひろ
+のむら,すみたか
+あらい,りょすけ
+おぐり,のりこ
+じんの,ゆみこ
+ひろずみ,ひろのり
+まつい,こすけ
+しばざき,よしのり
+いのうえ,かずのり
+たなか,やすはる
+さそ,やすじ
+しらはま,なおき
+たなか,えいさく
+なかむら,つよし
+いしがみ,まさはる
+しばた,ひさゆき
+のぐち,もとあき
+いちば,あつし
+かわぐち,けんいちろ
+よしみ,かつみ
+ふじかわ,はじめ
+かとう,さとし
+たかはし,とよしげ
+ふじさわ,すみえ
+みずたに,まさひろ
+せきぐち,みのる
+まえかわ,すすむ
+あらい,あつし
+もり,ひでお
+さとう,ひでかず
+くわた,なおふみ
+おぐり,あきひこ
+ひらい,なおき
+にしむら,やすひろ
+おくら,よしあき
+そのべ,てっぺい
+いいだ,あゆみ
+こぐち,こうじ
+もろほし,ひでこ
+はまだ,ひでみ
+かなざわ,ひろゆき
+まつば,つよし
+いわた,いさむ
+あずち,かずお
+こんど,ともふみ
+たかはし,よしろ
+あまの,むつみ
+かただ,りゅじ
+ためひろ,けいたろう
+まつだ,なおこ
+なりいし,しょひち
+おきた,ひろし
+やました,かつひこ
+すずき,ふみとし
+まんぽ,ひさのり
+いちい,あきこ
+こいで,やすあき
+たかはし,えいいちろう
+なかがわ,ひでかず
+おはま,のりかつ
+たかはた,かずゆき
+こぐち,しげる
+みやがわ,ひでとし
+しばやま,まさる
+あらい,いさお
+わたなべ,よしお
+なかむら,ひろあき
+ふるはた,おさむ
+たにぐち,もとこ
+ほんだ,たかし
+まつもと,やすよし
+たかき,もりみち
+きくち,ひろし
+いのうえ,ゆうじ
+はら,かつみ
+やまもと,けんじ
+むらかみ,ともこ
+ばば,なおこ
+はせがわ,かずお
+ささき,たかし
+あつた,ひろみ
+たちかわ,たかし
+ひらもと,かずや
+なかむら,はじめ
+つむら,やすひろ
+たかはし,すすむ
+よこやま,ゆたか
+こたけ,まさなり
+あんらく,なおすけ
+みずの,すすむ
+おぬき,あきひろ
+さかい,はるみつ
+おた,しんや
+はやし,こういち
+さいとう,まさお
+たなか,たかひろ
+はるはら,ともやす
+おつか,まさひこ
+きたがわ,としひこ
+よこた,あきふみ
+よしむら,ひとみ
+おひら,ひろつぐ
+ちゃき,ひであき
+さかぐち,としや
+すずき,たかお
+ちかざわ,そういちろう
+なかじま,みのる
+わたなべ,みつお
+しば,たかし
+さかい,しんいち
+やまみさか,あきら
+よしがみ,はじめ
+ひらて,しょぞ
+わくしま,のりお
+あさま,あきひろ
+あずみ,のりこ
+いなおか,とご
+さない,まさゆき
+やまうち,ひでみ
+いはら,かっぺい
+たやま,あつこ
+ささき,しんいち
+ふじうち,しげひで
+うしじま,こういち
+ののむら,あきひろ
+にし,まゆみ
+いけだ,まさのり
+すぎたに,ただお
+おざき,じゅんこ
+こけつ,ちはる
+さとう,てつお
+せんば,あきら
+あずま,まさゆき
+なおい,ただし
+ほしの,ちから
+かみや,ただし
+むらた,ひろかず
+いちみや,ひろし
+たるい,やすひろ
+はぎはら,としひこ
+たかはし,おさむ
+おちあい,しんや
+あきやま,としあき
+きむら,しんいち
+はやし,まさたか
+やまぐち,たけひろ
+ところ,ひろみ
+かすや,ひろし
+いりえ,たけし
+むらいし,あきひさ
+しんたに,よすけ
+うえの,あつし
+うちだ,ひでと
+はせがわ,いちろう
+くろだ,よしき
+いとう,やすひろ
+ほりうち,ひとし
+おはた,けいこ
+ほんだ,やすあき
+なかむら,みわこ
+さえき,たかし
+あべ,ひとし
+うめだ,けいすけ
+ぬま,よしひろ
+たぶち,ひでお
+きむら,みつる
+うだ,なおたか
+あおき,えつこ
+なかむら,しゅじ
+ふじこし,みなこ
+すみだ,りゅじ
+くずはら,みほ
+わたなべ,こうじ
+あらた,
+ろっかくゆきひろ,るりこ
+いのうえ,かつひろ
+つじもと,まや
+みうら,のぶあき
+ねもと,ひでゆき
+あめみや,すすむ
+なかむら,おきもり
+あいば,てるひさ
+よねざわ,たかひろ
+ふじむら,まさゆき
+りゅと,ゆたか
+わたなべ,みつる
+きたがわ,たかみ
+あたらし,のりこ
+きくち,まさと
+すずき,さとし
+たなか,きよし
+いけだ,のぼる
+よこかわ,ひろし
+くさつぐ,さとみ
+みずの,まゆみ
+ながほり,みつまさ
+すぎもと,まさみ
+あんどう,ななこ
+たかやなぎ,よしお
+しば,よしかず
+かみやま,ひろゆき
+おひら,のぶたか
+ほんま,しんや
+たばた,しゅ
+えんど,ひろみ
+いしがき,ともみ
+しば,しんじ
+やまだ,ともなお
+たかの,じゅん
+よしだ,あきら
+あまさき,ひろし
+おしかわ,ひろなり
+にしの,みつひこ
+かとう,たかし
+はまおか,けんじ
+さの,こういち
+すえしげ,こうじ
+なかた,つねお
+こばやし,ひろふみ
+すどう,まさこ
+つつみ,かずひろ
+みたに,ひろみ
+いしだ,はるゆき
+いいずか,のぶよし
+しらい,けんいち
+やまだ,せいじ
+つじかど,ゆひちろ
+まつなが,まさひと
+たなか,かつお
+みなみ,たつや
+さかい,としひこ
+うえき,しんじ
+おだ,みほこ
+まえだ,おさむ
+できたに,ともこ
+あまの,たかかず
+みやこし,くにてる
+あんざい,ひろみ
+うめだ,ひでゆき
+たきざわ,やすし
+むらにし,きよひと
+くりはら,こうじ
+やまさき,やすふみ
+おつか,ゆたか
+あみの,ゆみ
+もり,いわお
+にしもり,かずこ
+たけの,こういち
+しんがき,かずえ
+まつお,ひろし
+ふじね,まさゆき
+かなまる,しおり
+かなざわ,まさお
+しみず,せいじ
+わだ,じゅん
+いしくら,たかひろ
+ふくだ,しげかず
+うかい,としみち
+ありま,ゆきお
+おた,あつし
+もりたに,きよし
+あだち,としひこ
+くまで,まり
+あら,みつひろ
+はしもと,たかし
+とよおか,やすのり
+おつ,しんじ
+みやき,まさお
+いしかわ,よしかず
+いがらし,よしき
+おにし,まさき
+しらいし,ひろよし
+よこめ,たつゆき
+ふじもと,りゅじ
+かんの,いつこ
+たちばな,たけし
+やまだ,あきひろ
+あさみ,よしこ
+みうら,おさむ
+とくひろ,たかあき
+もりかわ,たかし
+いとう,よしひろ
+さの,まさのり
+すずき,すすむ
+しもとの,とおる
+まかべ,まこと
+いとう,てつろ
+つくだ,けいいち
+よしかわ,じゅにち
+たかやなぎ,なおつぐ
+ほんだ,きんや
+にしの,こういち
+きむら,よしあき
+かとう,かずひろ
+おはた,もりやす
+うつみ,みちお
+あんどう,ちなみ
+はまたに,しげお
+きのした,やすし
+かわせ,ひろのぶ
+うえの,まさのぶ
+しかま,みきひさ
+すずき,ともみつ
+ふじおか,まこと
+いのうえ,まなぶ
+きたざき,さとみ
+あいべ,こうじ
+おかわ,じゅんじ
+たけい,みつぐ
+からはし,ひろき
+すずき,たかよし
+あらい,ゆうじ
+いのだ,よしひろ
+おくむら,こういち
+まるい,じゅん
+ひろずみ,かずひこ
+わしず,かずひさ
+よしむら,みのる
+かつまた,たかふみ
+ますかわ,としたか
+いわお,よしひこ
+やまもと,りょじ
+たなか,まさゆき
+たけうち,まさひろ
+のはら,ともひろ
+ふなはし,やすゆき
+なごし,ひろし
+うめだ,さかえ
+あきやま,やすはる
+なかだ,ひろし
+さいとう,まゆみ
+たはら,ひろし
+にしまつ,のりゆき
+ひらみつ,えり
+めかた,じゅんこ
+たかみ,あきひさ
+そのだ,たくや
+みやざき,たかひさ
+まるやま,たかし
+つのかわ,かつら
+はらだ,しゅじ
+つじ,よしひと
+いがらし,さとる
+よしだ,のりゆき
+たけがた,しゅぞ
+あべ,かずのり
+あかぬま,けんじ
+かわだ,かずや
+たご,ひとし
+かみむら,まさと
+まつや,めぐみ
+いわた,じゅにちろ
+まえかわ,よしひろ
+やまぐち,まこと
+しろした,まさる
+やました,りゅうたろう
+つじかわ,ひでゆき
+たなか,ゆうじ
+みなみ,ひであき
+さとう,まさし
+うおずみ,かつみ
+すぎやま,つぐひこ
+ちば,としお
+かない,かおり
+まつやま,こき
+たかの,りょじ
+くまがい,とくひろ
+たけこし,ひろあき
+ふたば,ひろし
+うめざき,まさし
+おいわけ,げん
+ながつか,あきひこ
+いまがわ,さとし
+はしもと,れいこ
+おひら,ともひろ
+みやひら,まさと
+のぐち,じゅにち
+すぎもと,よしふみ
+かわぐち,ともひろ
+しのせ,よしあき
+なりさわ,あきら
+ひろせ,ひろゆき
+にしざき,まさゆき
+もり,さとし
+ふかお,つよし
+みやじま,あきら
+まつの,こういち
+いわい,むつひさ
+かい,としあき
+たなか,かずただ
+ちば,よすけ
+その,まなぶ
+よこやま,ひとみ
+たかしま,あきら
+おかもと,ゆたろう
+みやかわ,みちあき
+むらもと,けいぞ
+きむら,かずふみ
+まつなが,かつのり
+ふくだ,つよし
+おにし,よしひと
+あい,あきひろ
+まえだ,すすむ
+いのうえ,のぶゆき
+いいだ,よしこ
+ふじい,けいぞ
+さくらい,かずしげ
+まつい,しげのぶ
+いまだ,みどり
+みやけ,くにこ
+さかい,まさみ
+かとう,ひろし
+いわた,あきひさ
+おの,じゅん
+いそべ,こうじ
+おやまだ,だいすけ
+とじま,ともあき
+たけうち,こういち
+なかやま,ゆみこ
+しらいし,つとむ
+かのまた,まさし
+すどう,ひでかず
+しらやま,ひさかず
+おひゃ,よしみ
+みながわ,たかひさ
+きむら,ひろゆき
+たかぎ,たくや
+さとう,ういり
+ふじわら,しんじ
+いもと,あつし
+うえの,ひろひさ
+きょの,おさむ
+きりう,なおと
+くぼた,まさや
+こせき,たかよし
+すざき,つとむ
+たかさき,たつひろ
+つかもと,かずひこ
+ないとう,ますお
+なかごめ,おさむ
+なかむら,あつし
+はぎわら,たかひろ
+まつもと,あきひろ
+この,まさる
+さいぐさ,ともひろ
+ほんだ,たつや
+たなか,だいぞ
+まつとみ,ゆきお
+あかさか,みつる
+せんがん,ようた
+たけお,ともひろ
+むらた,けんご
+かわせ,よしただ
+にしざき,つねお
+へいとう,たかし
+おさわ,まさひろ
+うえだ,やすひさ
+かなやま,しんいち
+はらだ,けんじ
+なかがわ,ひろかず
+みやもり,ひでやす
+かい,かつみ
+きぐち,かよこ
+さたけ,よしひさ
+おほか,たもつ
+なかざわ,ゆきお
+やすおか,ひろし
+くろみつ,かよこ
+かなだ,ひろあき
+まるかわ,あきひで
+ながさわ,のりかず
+こばやし,ひろゆき
+えんど,ともひろ
+いんなみ,たつゆき
+やまもと,えいいち
+ながくら,まさはる
+うえの,よひち
+にしざか,やすひこ
+さとう,ともゆき
+もりやま,あつし
+こはやせ,まこと
+どいた,けんじ
+ほそかわ,しゅじ
+あおき,けんじ
+ますみだ,としろ
+おち,こうじ
+すずき,まさひで
+すぎやま,やすたか
+ふじわら,ひでき
+たなべ,ひでき
+とだ,たけゆき
+つぼい,しゅ
+すぎた,まさのり
+あだち,はるお
+ふじい,きよたか
+すがもり,さとし
+やすだ,まちこ
+たかはし,みか
+たがみ,てつろ
+とみやま,たつお
+はねだ,しげお
+おざき,ひろし
+おぐら,のぶお
+てらさき,みつい
+つちや,ともひこ
+おかだ,まさいち
+あべ,けんじ
+あべ,けんいち
+もりわき,せいや
+はやの,みつゆき
+とみなが,あつし
+すずき,やすお
+かたぎり,まさのり
+あはら,けいた
+ほし,まさき
+いしかわ,ひろし
+しもむら,なおひこ
+わきもと,ひろゆき
+かわて,まさる
+あぶらかわ,ゆうじ
+よしたけ,やすゆき
+いしだ,たけし
+ほんだ,やすゆき
+したま,のぶや
+のぐち,えつこ
+みずい,てるお
+あんどう,のぶゆき
+よねしま,みつえ
+あきた,こういちろ
+うえ,けんた
+すぎ,じゅん
+なかじま,みき
+かさおか,さとし
+のだ,はやと
+まつざわ,ななこ
+わたべ,たつや
+あいざわ,よしひさ
+いわさ,みゆき
+こが,たかし
+ひがしたに,かずおみ
+いけだ,たかし
+あきなか,まさゆき
+ふじた,としろ
+やまおか,よしお
+わち,たけし
+うえの,あやお
+うしき,なおふみ
+やまもと,なつみ
+かとう,じゅんこ
+ながい,あつし
+ふくだ,こういち
+なかたに,まり
+ひらさわ,としひこ
+みやざき,てつふみ
+てらしま,こういちろ
+あらい,たつお
+たなか,けいじろ
+かねこ,しん
+さとう,あきひこ
+なりた,ひでふみ
+ながしま,としや
+さかの,やすはる
+みうら,かずや
+やまぐち,ひさたか
+おでら,せつや
+あべ,けんたろう
+こだま,かずいち
+やまもと,はるひこ
+おしま,まさとし
+いしず,ただひろ
+かんばやし,あやこ
+おかわ,えみ
+ひえだ,ながこ
+いのまた,まさる
+まきた,むねかず
+がなは,ちが
+はやかわ,しんいち
+あかぬま,たかあき
+むろかわ,てつじ
+おの,しゅひち
+きむら,じゅにちろ
+はたざわ,としお
+ふじた,さとし
+うえだ,けい
+やまのうち,なおとし
+ふるた,あつし
+おくやま,かずひろ
+いとう,ひろゆき
+おさない,とおる
+こたに,つとむ
+おつか,ゆきお
+ふくしま,ひろゆき
+いいずか,たけひこ
+わたなべ,ひろみ
+もりた,としや
+かとう,たかゆき
+ほんだ,ひろゆき
+かとう,てつや
+あさぬま,まさのり
+あずま,けいすけ
+てらさわ,しょご
+あかし,やすこ
+かとう,まさき
+おのさと,だいすけ
+なかむら,いさお
+のむら,よしひろ
+いのうえ,けんいちろ
+はやし,ふみお
+たむら,せいいち
+さかい,たけし
+すぎむら,ただあき
+とみやま,こすけ
+かきざわ,けん
+にしたに,てるあき
+あさくら,けんいちろ
+いしざき,ひろき
+まつもと,としあき
+ながお,あきのり
+きの,やすひろ
+あべ,まさお
+とじょ,みつお
+やまき,つねお
+あらい,なおと
+やまだ,たかし
+おくむら,ひろつぐ
+はら,ひでみ
+やまもと,えいいち
+なかむら,しんいち
+あらい,がく
+いけど,すえのぶ
+いとう,りょ
+いとう,けい
+うりゅ,としあき
+うちやま,しょういちろう
+えのもと,しんや
+えずら,さとし
+おつか,しんいちろう
+えにゃ,としお
+あかお,りえ
+おにし,たすく
+かがや,こうじ
+かまた,こういち
+かわかみ,げん
+ささき,けいじ
+たかはし,かずえ
+ただ,しょたろう
+にしの,かつひさ
+あさお,しんいちろう
+はしもと,かずや
+はっとり,まさたか
+ほし,けいじ
+ほりた,ゆうじ
+まえぞの,あきら
+まえじま,ただし
+みやざき,ひろみち
+あらい,とおる
+もり,けいすけ
+まえだ,すすむ
+おち,けいすけ
+あさくら,しょじ
+うさみ,いなん
+おくやま,たかひろ
+かりや,のぶひさ
+うえだ,やすよし
+おたべ,なおひこ
+きむら,こういち
+くしだ,まさよし
+あまは,なおき
+こんど,なおき
+しみず,たかこ
+すずき,たお
+すん,しんいち
+たどころ,なるひで
+とねさく,みのる
+なかむら,ゆみこ
+ますだ,よしみ
+みやざき,こすけ
+よしなが,ひろし
+よこかわ,けん
+つちや,のりお
+たかはし,あつし
+たなべ,たかし
+いとう,たかひこ
+ながお,ひでゆき
+さとう,けいぞ
+ただ,いさむ
+あきもと,よしはる
+たむら,こうじ
+たむら,よしき
+おか,しょういちろう
+さくらぎ,しゅこう
+すずき,すみお
+もりおか,ひとし
+やぐち,いさむ
+みやもと,ひろし
+しらかわ,ひろお
+おつか,みはる
+やまもと,あきひさ
+なかまち,たくま
+わかはら,まゆみ
+あき,まさのり
+たきた,まさじ
+あらかわ,けいすけ
+まつお,しんいち
+ちょ,たけし
+くろだ,ともひろ
+やました,しゅんすけ
+ともおか,まもる
+なかお,かずゆき
+あそ,みちはる
+ふくだ,けんいち
+あおき,ひろし
+くる,ただし
+むらかみ,ゆし
+くろだ,さとし
+みかみ,ひでき
+かみむら,ひでき
+きたじま,ともやす
+まるやま,やすふみ
+さたけ,やすお
+もてき,たかし
+とみた,かずひろ
+にわ,けいいち
+たかばたけ,こうじ
+あずま,ゆういち
+ふるや,しげる
+なす,たろう
+こり,えみこ
+いけだ,わたる
+ごと,てるかず
+まる,のぶたか
+ふくだ,ひとし
+すがはら,ひさと
+きむら,やすひろ
+たかせ,たくや
+にしおか,あきひろ
+ふるかわ,ひろゆき
+くどう,なおき
+たかはし,よしひさ
+やまもと,けんいち
+みやもと,たけし
+のた,ふき
+なかむら,ふみこ
+あきば,しげのり
+いわき,まさる
+かとう,さちこ
+もりもと,よしひろ
+なかむら,まり
+なかやま,まさひろ
+おたに,こうじ
+すぎやま,じあぃん
+すん,ひろゆき
+やまもと,じゅんじ
+ほんど,としひこ
+はが,まり
+しおざき,りょ
+ふじの,てつお
+おの,けんいち
+あんどう,けんと
+やまぐち,よしひろ
+くろだ,りょへい
+あんどう,ゆきひろ
+うの,しのぶ
+いとうたに,みや
+おか,まこと
+みうら,しほ
+はしもと,まさかず
+えもと,かずとし
+こが,かずや
+きはら,しげひろ
+まつだ,みのる
+やまだ,とよゆき
+たかはし,ひろし
+やはた,ゆたか
+たざき,かくじ
+やまもと,かずひこ
+たかだ,みのる
+のだ,けんじ
+さいみょ,よしお
+こばやし,としあき
+ふじき,たかし
+しらさか,じぇ
+ちぇん,りょひち
+たかはし,たけひこ
+やつ,えつみ
+うおたに,のぶゆき
+たむら,かな
+まつお,まこと
+なかざわ,ひろし
+きだ,ひろし
+たんげ,ふみただ
+ひろせ,あきこ
+まつしま,よひち
+おかの,ひでお
+あおき,けいた
+はせがわ,りゅひち
+にしほり,ひろみ
+いしずか,まさつぐ
+つぼい,かおる
+いしだ,あらた
+はしもと,けんじ
+ごと,ふみお
+あきやま,のぶひろ
+みつはし,とおる
+ごしま,あつお
+ふくだ,ふみひこ
+やました,としひこ
+なかざわ,さとし
+にしかわ,たくや
+いけうち,ゆきこ
+たがみ,てつろ
+かわきた,すすむ
+なかむら,みちや
+こまい,さとる
+ほしや,よひちろ
+すみと,りゅじ
+ほしの,ちから
+なかや,たかや
+はら,ひでゆき
+むろやま,まさる
+しのだ,さとる
+もり,しんじ
+しらいし,ひろき
+ひらの,しげる
+はしもと,かずお
+あべ,ひろし
+いしかわ,なおふみ
+あずま,ひさし
+おつか,ひとし
+いとう,かずゆき
+おしま,たかお
+こざい,けんじろ
+かわかみ,がく
+なかの,こすけ
+うじもと,あゆむ
+きしだ,まさふみ
+こいずみ,かずお
+ないとう,しんいち
+よしずみ,みずほ
+すぎもり,かずひこ
+あおき,かしゅく
+たかはし,ひでき
+いが,まさひろ
+かわばた,こうじ
+しばた,ゆうこ
+だんじょ,じゅんじ
+たぐち,ありかつ
+まちだ,よしみ
+あしだ,のぶお
+あんどう,けい
+むと,ちかお
+こやま,きよひろ
+すずき,まさとし
+のむら,むねひこ
+いとや,まさひこ
+ちかおか,ひとし
+じんぶ,のりこ
+あだち,としひろ
+かわい,よしき
+みのわ,としひろ
+あさひ,ともはる
+おた,こういち
+たなか,のりかね
+きら,のぞみ
+やまざき,ひろひで
+やまうち,まなみ
+ほった,かずひろ
+あらかわ,ともお
+おくむら,ゆうこ
+かねこ,ていじ
+あやの,かつのり
+はやかわ,きよと
+いとう,けいいち
+おくむら,じゅん
+たんざわ,まさとし
+さきの,つとむ
+かわはら,みちやす
+たるい,まさし
+ありもと,やすし
+えびこ,こういち
+ひの,としあき
+やまだ,よしあき
+おの,きよし
+たけした,まさし
+はやし,みか
+いしだ,みつる
+しおや,よしのり
+あんどう,しげお
+まつばら,じゅん
+にしだ,いたる
+なかむら,こき
+いけだ,ともなり
+はやみ,まさひこ
+すずき,ひさのり
+おがわ,たつお
+いしかわ,よしひろ
+あさみ,とおる
+はたけやま,よしお
+ほりみぞ,あつし
+まるたに,ともなり
+さとう,かつや
+さかなか,しょよ
+なかむら,くみ
+いとう,ゆりこ
+ふるなが,きょこ
+ふくしま,けん
+みずがみ,たけし
+たけうち,のぼる
+とりうみ,まさふみ
+ねぎし,まさる
+こやま,まさのり
+おしま,じゅん
+かたおか,ひでお
+たきぐち,しょぞ
+こまつ,あきら
+やぎ,としあき
+たかぎ,けんじ
+ますい,たかし
+はやし,けいすけ
+あねたい,ちひろ
+きはら,あきお
+さいとう,かずお
+きたわき,ともひこ
+のぐち,かおる
+さかぐち,はるひこ
+にし,まさと
+いけだ,よしゆき
+さとう,みちお
+いまい,みのる
+やまだ,しげき
+たなか,あきのり
+おさこ,なすお
+こむろ,たかし
+さいとう,ひでふみ
+すずき,かずお
+ふなとがわ,たかし
+いしい,よしお
+まつい,てつろ
+すえひら,ひとし
+ひろたに,まさゆき
+ひがし,けんいち
+いむら,しげお
+あべ,みちひこ
+よねくら,ひろみち
+わたなべ,もとい
+すが,ゆきみつ
+さの,てつお
+しば,たかし
+やまぐち,まさひと
+きざわ,しげいく
+かさまき,やすひさ
+きむら,まこと
+つるみ,かなめ
+あおき,ひでき
+いしだ,けんいち
+もろ,ゆかり
+おくむら,てるあき
+たかぎ,のぼる
+いけや,ひとし
+とみやま,よしお
+やぎ,きよし
+とみき,あつこ
+とのむら,やすのり
+やつずか,のぶとし
+ぶま,よしみつ
+なかざわ,ひろし
+やまざき,ひろし
+まつした,ともじ
+いだ,しゅんじ
+すずき,よしひろ
+なかの,よしろ
+かわぐち,けいすけ
+たかはし,あきひさ
+いしだ,しょこ
+うだ,もとし
+ふじわら,あきお
+こいで,ひろゆき
+つかだ,こうじ
+ひらやま,みちお
+うちとみ,かずみつ
+いまはら,たかお
+うえだ,てつろ
+ささかわ,みのる
+あいかわ,としひろ
+うえき,けんしょ
+なかやま,ふみとも
+おさわ,ようこ
+たかおか,しのぶ
+わだ,しん
+いぬずか,よしひろ
+たなか,やすひろ
+たけだ,まさお
+やまだ,つとむ
+やなぎ,しょういちろう
+たけした,さとる
+にし,りゅじ
+おたけ,としたけ
+にたない,へいはち
+ほんま,ひろし
+なかの,あきら
+みやした,ひろよし
+うえの,ひとし
+ばば,よしひろ
+みやざき,たかあき
+くにい,たかよし
+こばやし,よしみ
+ますだ,よしかず
+たかはし,としゆき
+つかお,つぎお
+かわむら,くにひさ
+かわばた,こうきち
+あかさか,きよたか
+いいだ,のぼる
+しらはま,ひでひろ
+とがわ,よしたけ
+いとう,たつひこ
+おかべ,ゆひち
+わたなべ,しげお
+さかば,のぶひこ
+ひろさわ,よしのり
+なかむら,ひでき
+やすい,じゅんじろ
+ひらた,さだむ
+きたがわ,まさお
+あまの,つとむ
+つじむら,けいじ
+かわさき,ひろし
+うえむら,こうじ
+むらかみ,ひろき
+いのうえ,たかゆき
+はぜ,こぞ
+としひろ,じゅんこ
+こばやし,てつや
+いの,ただし
+あさの,ひろゆき
+もり,ひでいち
+いなざわ,まさし
+こばやし,ひろお
+さかき,としひろ
+うちやま,ひとし
+まなべ,しげる
+おひゃま,さとし
+しみず,かずひさ
+よねむら,しんいち
+ばらだ,てつや
+ふるぞの,えつろ
+ふじもと,こういち
+さの,たけし
+かわの,しげな
+ほしかわ,きよし
+ささもと,けん
+すどう,きみひろ
+さとう,しげゆき
+はやし,ただのり
+ばば,ゆひち
+ばば,こうじ
+おやね,こよ
+ながさわ,てるひろ
+さかもと,よしひこ
+あおき,せいじ
+むなかた,やすき
+いとう,けんじ
+かわばた,まさひこ
+すぎもと,ひろゆき
+ばんど,あきひこ
+のむら,よしかず
+この,かずあき
+かわい,まもる
+うえの,えいこ
+はらだ,こうじ
+かの,もとつぐ
+おおはた,まさと
+すどう,たかお
+まつだ,ひろし
+いけがみ,ひでのり
+しらい,ひとし
+さとう,ひでお
+さかい,やすゆき
+おき,まさはる
+かわむら,せいじ
+やまだ,まさはる
+いとう,しんいち
+いかみ,ひろゆき
+あずまお,みちお
+ふじむら,じゅん
+きたむら,あきひこ
+とがみ,よしみち
+こすげ,かずのり
+せき,のぶゆき
+かわしま,ひろし
+たかい,あきら
+あきやま,みきお
+すずき,たかし
+なかむら,ひとし
+にしの,まこと
+みやけ,けんしん
+よねもち,たかあき
+たかしま,たけし
+さかい,としゆき
+おつき,けんじ
+かわさき,ひろお
+にしかわ,あきひさ
+さくらい,はるお
+すぎ,ひでと
+ほりこし,とおる
+もり,ゆうじ
+はけだ,としみ
+にいだ,まさお
+きくたに,ひろゆき
+たけのした,ともゆき
+たかはし,ゆご
+たなべ,ゆきお
+いけもと,としふみ
+まつやま,しゅいち
+よしざわ,たかゆき
+あかい,たかひろ
+にしおか,もとじ
+たけもと,しげお
+とくだ,としのり
+おもり,あきとし
+かとう,みき
+かわと,たきお
+まえだ,けんじ
+くろき,ひであき
+いいだ,とおる
+こやなぎ,かつや
+まつなが,たかし
+いとう,しんいち
+やまもと,さとし
+つつい,しゅへい
+たなか,ひろみ
+ふくしま,まさこ
+こじま,のりこ
+にしだ,ゆきこ
+にしやま,よしひさ
+すずき,みのる
+いいじま,せいいちろう
+たまい,のぶお
+この,よしお
+みます,やすひろ
+よねはら,たつし
+よしだ,ふみお
+ふくだ,そひち
+さとう,まさよし
+やまもと,くみこ
+きたご,はじめ
+さんの,あつし
+やさか,やすあき
+むらた,たつお
+なかもと,としあき
+さくらい,みのる
+はらだ,しゅにち
+さとう,よしひこ
+さいとう,みつぐ
+そね,じゅんこ
+はすみ,だいすけ
+ひらた,たかし
+やなぎさわ,すすむ
+たちばな,おさむ
+いとう,としみつ
+はら,せいいち
+さいとう,かずみ
+いとう,ひろし
+たなか,ひろあき
+うちやま,ひろし
+かがわ,のぼる
+たきざわ,ともとし
+しながわ,としお
+かきはら,しげみ
+すがぬま,あきし
+かめい,かずしげ
+おくつ,よしもと
+いしかわ,あつお
+すぎうら,みつお
+うめだ,けいこ
+みなぐち,あきひろ
+ほしの,かずひろ
+にしやま,のぶお
+たけだ,ようこ
+さかい,まさずみ
+やつだ,あきら
+もりた,としひろ
+さきま,こういち
+あらい,かずや
+たけだ,しげよし
+たむら,けいいち
+おかだ,ゆうじん
+やまね,くにひこ
+なかむら,しろ
+あおの,じゅにち
+すぎやま,としや
+ふりはら,かずとし
+わたなべ,しょしゅん
+かつ,もりお
+さはら,ひさし
+かくた,いちろう
+えのもと,たけひこ
+わたなべ,せいじ
+やぶき,たつや
+あまさき,きいちろう
+よこた,たけし
+ほりのうち,けいぞ
+きはら,なおひろ
+たけだ,ゆたか
+いねな,たかこ
+なかじょ,よしこ
+いちやなぎ,はるみ
+すずき,ちはる
+なるしま,ゆひち
+しらいし,たつお
+おの,かねよし
+よしおか,かずお
+まつうら,のぶと
+ふじた,つかさ
+いわみ,ひろみ
+とくしげ,あきひこ
+たなだ,たかし
+おかの,まこと
+もちずき,まさひろ
+たかしま,こういち
+とりうみ,まさひで
+たかみ,としあき
+はやせ,つねお
+たかはら,つるまつ
+きん,まさひこ
+すぎやま,かずひろ
+きたじま,ただし
+にった,しょけい
+ぶん,なおきち
+しゃ,たかし
+おか,とおる
+おはし,かずや
+はらだ,ひろかず
+わきさか,てつじ
+いわなが,とよはる
+かわしり,けいじ
+いなもと,きみひこ
+さわ,かずまさ
+たけだ,たかゆき
+いいだ,こういち
+かじの,かずお
+みわ,よしたか
+ふくい,ともゆき
+すえなが,えいじ
+くにえだ,まさゆき
+きたおか,ひでひろ
+いど,こうじ
+おくだ,よしのぶ
+ほりかわ,さとる
+すえもと,ひろかず
+よこやま,ゆきのぶ
+ふじもと,ひろし
+きせ,きはちろ
+にしむら,ひろし
+たかだ,けいいち
+つかだ,みつお
+とよだ,まさかず
+さの,ひろゆき
+にしだ,たけひこ
+おもり,よしひと
+おざき,まもる
+いしまる,はるかず
+たなか,けいいち
+かしわばら,とおる
+あさの,ゆたか
+ひらの,かずひこ
+たにやま,とおる
+うめばやし,りょすけ
+おむら,かつき
+さかぐち,てつや
+おかむら,としひろ
+やまもと,とみお
+えちご,しょじ
+さわだ,ひでひこ
+よこい,こうじ
+きたむら,まさかず
+やす,えいじ
+たかお,とおる
+かつらおか,まさひこ
+つぼい,いちろう
+つじ,とおる
+たかはし,しげやす
+すぎき,こういち
+たけうち,のぼる
+かみじょ,やすかず
+こばやかわ,しんじ
+あおと,てつろ
+ただ,けんじ
+ひだか,ひでお
+にしむら,きよかず
+えばら,しょご
+みずもと,あきら
+すずき,これあき
+しいな,やすひこ
+しおた,かずゆき
+なかはら,りか
+ごだ,かおる
+ふるた,じゅんこ
+ますもと,しんぞ
+なかがわ,まさひこ
+いど,しげお
+よりふじ,あきお
+まつもと,たかき
+さいとう,たかひろ
+なつい,としかず
+うおの,やすひこ
+たなご,じつじ
+たまがわ,よりこ
+おか,のりこ
+ふくしま,ちえこ
+おかだ,つねお
+きのした,かずや
+しみず,きよし
+こばやし,はるよし
+のだ,みつひこ
+かの,こういち
+かじおか,きよし
+おの,まさひさ
+おはし,じゅにち
+こばやし,きいち
+こいずみ,たかゆき
+たなか,のぼる
+ふくだ,あきら
+なかざわ,くにあき
+ほりかわ,ひでき
+うちやま,かおり
+いずたに,けいこ
+たきい,のりひと
+たかせ,たかし
+ますざき,まさる
+あんどう,ゆうこ
+かたぎり,ひでひこ
+もりやま,あきら
+さとう,きよたか
+ひるかわ,まさし
+うえだ,つぐひろ
+なか,あきひと
+みやざき,たかし
+おくぼ,まさゆき
+たちかわ,ゆひち
+わたなべ,いくお
+あさかわ,ひとし
+かわはら,としや
+おさだ,のぼる
+さかい,さとし
+くりやま,もりひろ
+さいとう,じゅにち
+すきがら,としこ
+あけひ,のぶつぐ
+はやし,たかし
+かわた,とおる
+しまがき,しげいちろう
+ほり,としや
+のむら,あきひろ
+とむら,さとし
+くぼ,まさお
+にしもと,としたか
+よしだ,ひろし
+さぎ,まさたか
+かんの,まこと
+やぶの,みちなお
+やすなが,せいじ
+ひがしうえ,まさや
+こさき,はじめ
+なかじょ,はるお
+おの,さなえ
+むらた,こずえ
+しょじ,よしこ
+かわもと,くみこ
+えさき,きよみ
+えいどめ,なおみ
+すずき,みさえ
+もとやま,かずよ
+はまだ,よしこ
+こしかわ,しんいち
+はやし,きよこ
+やまざき,のりひと
+まつもと,こうじ
+おの,たかよし
+はなわ,けいこ
+はせがわ,まさき
+みやた,ひろゆき
+きたざわ,ひろひと
+えんど,まさゆき
+ながさか,としひろ
+よしもと,とおる
+くろさわ,こぞ
+まるやま,ひであき
+なかにし,あきひろ
+よしだ,まさる
+ふくた,ひでかず
+ふじさわ,ゆたか
+さくま,やすかず
+はしもと,あきら
+わだ,としお
+にしざき,まさはる
+ふかがわ,ゆきや
+あおやま,よしまさ
+きよたに,しんいち
+とりはら,ただし
+ながの,けいじ
+おが,まさあき
+さかの,まさかず
+みつはし,やすひこ
+ありもと,よしあき
+よしまつ,ひろみつ
+あおやぎ,けんさく
+やまだ,よしはる
+むらた,かずゆき
+いりえ,けいいち
+やまざき,ひでや
+えぞえ,かつひこ
+さとう,よしはる
+おた,かつみ
+いのう,まさおみ
+かど,のぶお
+ささき,えつこ
+かけひ,まさかず
+つちや,つとむ
+まさおか,ひろゆき
+すずき,たけし
+とね,ゆたか
+おわだ,たかし
+うえき,まさひろ
+まえだ,せいこ
+ふじおか,たかあき
+うらべ,あきお
+なかむら,まさひこ
+いさか,ゆみこ
+にしさか,しんいち
+いわさ,まさのり
+たくしま,けいいち
+つかもと,つよし
+さくま,きよし
+ひょど,もりひと
+なかむら,たつや
+ささき,よしひろ
+ふくわき,よしひろ
+おくむら,かずや
+たかはし,しょぞ
+しろい,やすお
+こかぶ,とみひろ
+のぐち,のりあき
+たかつ,まさと
+よねざわ,かずのり
+さかいだ,やすこ
+こいずみ,なおこ
+まえだ,ゆひち
+まんだ,まさあき
+こぐれ,のぶお
+あきもと,えいいち
+たけむら,よしお
+すずき,ふみお
+やまうち,たけひこ
+さえき,ひろし
+わかばやし,こういちろ
+あきもと,まさお
+よしだ,としや
+さとう,まさよし
+おしま,とよひこ
+ささき,やすし
+あらい,ただお
+わたなべ,ひろき
+いけもと,ひろかず
+きくい,てつや
+ひらた,やすひろ
+まきうち,みつや
+こせき,かつゆき
+にしかわ,ただし
+いがらし,いちろう
+たなか,よしと
+ほんだ,ともあき
+はった,こうじ
+はらだ,じゅにち
+よしだ,ゆうじ
+わたなべ,のぶゆき
+こいずみ,まさひこ
+こすだ,ひろあき
+みやけ,つねお
+ふじや,やすとし
+まさき,まさひで
+さくらい,あきひで
+にしやま,てつじ
+かわせ,ゆきお
+おかざわ,こういち
+あさか,ひろみ
+おがわ,たくや
+ながさわ,しろ
+きたわき,やすひろ
+しみず,ふみお
+こばやし,ただつね
+たちばな,えいいち
+いまなか,ひろみ
+うしまる,ひさかず
+おかむら,おさむ
+やまの,ひろし
+きたむら,りょひち
+たかまつ,なおひさ
+ときかわ,まさあき
+いけだ,たけし
+いしだ,あきら
+たにはら,ひでき
+おがわ,よしお
+たなか,たかのぶ
+なかじょ,しんや
+ともざわ,としゆき
+はらだ,のぶあき
+はなぶさ,はじめ
+とくおか,まさお
+べっしょ,まさのり
+なかしま,まさはる
+あさくら,しげこ
+みやでら,さとみ
+すずき,けん
+よしむら,けんいち
+さわ,ゆういち
+なかやま,みちかず
+ひらざわ,ひでき
+ふじわら,かずひで
+すがわら,としや
+たにがわ,のぶたか
+ほんだ,みつぎ
+はない,ひとし
+えぐち,しょすけ
+かさい,けいこ
+くろさわ,のぶこ
+たじま,せつこ
+さとう,あつこ
+ひびの,あつし
+すがや,まさひろ
+くらた,かつひこ
+ますだ,やすひこ
+すぎはら,ひろし
+かねこ,なおき
+かつ,よしひさ
+まる,まさゆき
+たなか,こういち
+としおか,よしひろ
+しげの,まさあき
+やまもと,とおる
+なかがわ,まりお
+やまぐち,やすと
+かわもり,こういち
+むらやま,さくめい
+しゅ,よひち
+いけだ,ひろし
+こだま,しん
+かとう,たつし
+はくちょ,つねお
+かげん,しゅ
+てずか,こういち
+たにぐち,はるき
+てらだ,けいこ
+かとう,よしゆき
+ないとう,たかし
+いとう,ひろや
+こばやし,ひでかず
+たなか,あきら
+ささき,りょじ
+ほんだ,さとみ
+ひえだ,かつみ
+さかい,ひろき
+かつみ,よしひろ
+たけべ,まさる
+のぐち,なおや
+わだ,ひろゆき
+うえやま,たつお
+うえの,さとる
+たんご,いさお
+むらかみ,かおる
+あらき,こうじ
+あらせ,まさたけ
+やまもと,なおき
+わしお,たかき
+わけじま,たけお
+こいずみ,たかし
+とくやま,けんじ
+とみなが,ひでとし
+きしだ,わたる
+じょけん,みちと
+ひろせ,あきお
+うちやま,かずのり
+わかすぎ,たかし
+いしぐろ,たかし
+にしむら,つよし
+いのまた,えいじ
+つつみ,けんじ
+いりえ,たかひろ
+さいとう,ひでお
+うえの,かつみ
+ほんだ,こぞ
+きたむら,ますひろ
+やまがみ,しろ
+なかにし,ひろゆき
+うえだ,よしふみ
+ひろた,けんすけ
+うえだ,としふみ
+いけだ,けんじ
+はなぶさ,せいじ
+こだま,みちひろ
+おかもと,よしゆき
+すずき,けんいち
+すずき,ただたか
+にいくら,かつのり
+にしだ,ひろかず
+おさべ,かおる
+ほそかわ,としひこ
+いまお,あつし
+ふじた,かずお
+おの,しんいち
+なかやま,おさむ
+はやし,かよこ
+すがはら,なみ
+はらだ,まさひろ
+あべ,たかし
+あべ,わたる
+あべ,ともき
+あだち,ひろし
+あいば,よりのぶ
+あかばね,ひろあき
+あんどう,なおき
+あんどう,ひろみつ
+あおき,ひさえ
+しいき,あきひろ
+あらい,ひろひさ
+あらい,じゅにち
+あらい,けんいち
+あらかわ,よひち
+あらき,よしのぶ
+あらき,よしのり
+あらき,よしお
+あらき,けいじ
+あらまき,かずのり
+あらめ,いちろう
+ありむら,しゅにち
+あさみ,けいいち
+あずま,けんいち
+ばば,ただひろ
+ばば,だいすけ
+ちば,かずお
+ちば,えいほ
+ちん,ともゆき
+だいこく,まさし
+でぐち,ひろし
+でき,しょひち
+どい,とおる
+えださわ,たけし
+えぐち,いさお
+えんど,たつや
+えんど,たかゆき
+えりかわ,きよはる
+ふじい,かずあき
+ふじもと,まきお
+ふじもと,たかね
+ふじの,たけし
+ふかはら,しゅひち
+ふかみ,ひろよし
+ふかやま,ひでかず
+ふくだ,もとこ
+ふくい,のぶあき
+ふくもと,こういち
+ふくなが,ともゆき
+ふくしま,よしのぶ
+ふくしま,ひろのり
+ふなき,よしあき
+ふなき,のぶひこ
+ふるや,ひでき
+ごはら,よしなり
+ごと,かずろ
+はが,まさお
+はぎの,ゆうこ
+いちむら,ひろし
+はま,ひでと
+はなだ,まゆみ
+いば,よしあき
+はせべ,あきら
+はせがわ,なおき
+はしもと,のぶゆき
+はし,まさゆき
+はたの,まさひこ
+はとり,ひろし
+はやし,まさひこ
+はやし,のぶお
+ひだか,かずたか
+ひがし,さかえ
+まの,やすふみ
+ひらい,いさお
+かみさき,よしひさ
+ひらの,しんいちろう
+ひろい,ただし
+ひろもり,かずろ
+ひろさわ,まこと
+ひろさわ,なおき
+ひろせ,まさよし
+ほんだ,きよさだ
+ほんま,かつへい
+ほりべ,としろ
+ほりえ,のりあき
+ほりぐち,なおあき
+まつもと,のぶひろ
+ほり,しんたろう
+ほり,あきひこ
+ほしかわ,こうじ
+ほそかわ,かずこ
+ひょど,きよたか
+いばらき,よしかず
+いちおか,よしたか
+いけだ,としひこ
+いまい,まさひこ
+いまむら,ひでお
+いまなか,よしはる
+いなだ,あつし
+いなむら,おさむ
+いのうえ,しんいち
+あらい,よ
+いのうえ,ひろやす
+いしい,しげる
+いしい,ひろし
+いしかわ,ゆひち
+いしかわ,としひで
+いしおか,はじめ
+いそだ,ひろみ
+いとう,のりゆき
+いとう,すすむ
+いとう,まさはる
+いとい,ゆひち
+いとう,あつふみ
+いわい,たかひと
+いずみや,よしたか
+かじた,たかあき
+かめい,ともや
+かない,ひろし
+かなざし,こういち
+かねこ,さとる
+かねこ,としみ
+かの,えいじ
+かりう,きよみ
+つきじ,ひろし
+かさまつ,みきお
+かたぎし,あきら
+かたやま,まこと
+かたやま,まりこ
+いそだ,まさひろ
+かたやま,ちずこ
+かとう,かずひと
+かとう,ただし
+かとう,しんじ
+かとう,あきら
+かつまた,まさのり
+かわべ,さとし
+かわべ,しんじ
+かわべ,まさひろ
+かわだ,のりこ
+かわだ,たけし
+かわもと,まこと
+かわたに,いくお
+きみずか,しげじ
+きむら,たかのり
+きむら,ひろゆき
+きのした,まさし
+きさか,あきら
+きしだ,てつめい
+きたがわ,たかお
+きたむら,こうじ
+きた,さつお
+きよの,まこと
+こばやし,やすし
+こだま,ちえ
+どひ,たくや
+こはら,ゆきのぶ
+こいで,あつし
+こいわ,むねひと
+こいずみ,けんすけ
+こまつ,あきひこ
+こめだ,あきお
+こんど,せいき
+こんど,みちろ
+こにし,かずや
+こさか,りょたろう
+こたき,やすひろ
+こたに,ひでお
+ことぶき,たかこ
+たしろ,きょひち
+くぼた,よしひろ
+くぼ,ひでと
+くどう,まさゆき
+くまがい,かつのり
+くろせ,かずなり
+くしま,ひらやす
+くしみや,まさき
+くつかけ,としや
+くわの,ひょじ
+ぇえ,はるこ
+まつなが,やすたか
+まえだ,ひろゆき
+まえはら,みき
+えのき,とおる
+まえかわ,じゅんじ
+まえき,ひろあき
+まんの,じゅん
+まの,ひでき
+まんたに,ひろし
+まるやま,かずのり
+ませ,ゆきまさ
+ますざわ,てつや
+まつだ,まさと
+まつい,やすひろ
+まつい,おさむ
+まつもと,やすこ
+まつむら,こき
+まつの,しんいち
+まつざき,しゅぞ
+みき,かずひろ
+みこだ,ひでき
+みむら,ゆうじ
+みむら,さとし
+みなみ,としや
+みなみ,こうじろ
+みなと,あやこ
+みねまつ,しんぎ
+みね,えいじ
+みしま,よひち
+みわ,やすひろ
+みやぐち,かずひこ
+みよし,まさお
+みずた,みつのり
+もものい,いつこ
+ほんだ,まさと
+もりた,やすあき
+もりた,かずあき
+もり,のりゆき
+もり,れいこ
+もり,しげる
+もり,てるゆき
+もり,かずたか
+むねむら,しげのぶ
+むらかみ,さとし
+むらおか,のぶひろ
+みょが,やすし
+ながみね,のりこ
+やまだ,まさたか
+ながお,ひろゆき
+ながた,まさひろ
+ないとう,たかひろ
+なかがわ,ゆうこ
+なかいち,じゅんこ
+ささき,けいすけ
+なかじま,たけし
+なかしま,やすし
+なかこじ,あきひこ
+なかむら,あきら
+なかむら,あつし
+なかむら,かずひろ
+なかむら,みのる
+なかむら,たかし
+なかむら,としみつ
+なかむら,よじ
+なかむら,こうじ
+なかにし,ひろき
+なかの,まさし
+なかの,しんいち
+なかしお,としかず
+なかた,けんじ
+なかやま,こういちろう
+なんけ,たろう
+ならざき,ひろのり
+なりせ,つかさ
+なるおか,ひろし
+ねもと,そうたろう
+にむら,たつや
+にむら,まさふみ
+にしむら,さとし
+にしの,とおる
+にしした,じゅん
+にしうち,だいすけ
+にしやま,ゆうこ
+やじま,よひち
+にしざわ,くみこ
+にわ,としゆき
+のぶなが,てつや
+のがみ,きんや
+のぐち,こういちろ
+のぐち,かなこ
+のま,たかし
+のま,あつし
+のむら,たいちろう
+のむら,ゆきひろ
+のむら,いさむ
+のせ,ただし
+のざわ,すすむ
+ぬきい,まさゆき
+ぬまお,つとむ
+ぬまた,かずまさ
+おちあい,てつのり
+おちあい,しゅひち
+おだはら,なおひと
+おだ,よしえ
+おがさわら,ゆたか
+おどまり,あきら
+おかど,みつし
+おまさ,まこと
+おなが,しんいち
+おの,みゆき
+おさき,とよみ
+おさわ,こういち
+おすみ,こうじ
+やました,のりお
+おた,しゅにちろ
+おた,ただあき
+おつか,よひち
+まつなが,かつみ
+おひゃま,あきら
+おかだ,かずひろ
+おかだ,たかゆき
+おかだ,よしお
+おかだ,いくお
+おのでら,みのる
+おかもと,しゅじ
+おかざき,とひちろ
+おくだ,ふみお
+おく,あきら
+おの,ひろゆき
+おの,ひでゆき
+おりて,あつし
+おさだ,ひでたか
+さいとう,かずゆき
+さいとう,まさる
+さいとう,なんてつ
+さいとう,たかし
+さいとう,たつや
+さいとう,よしあき
+さいとう,のりゆき
+さかい,りえ
+いしざき,たけし
+さかもと,ひろふみ
+さかのうえ,よしのり
+さかうえ,たかお
+さこだ,ひろゆき
+さくらい,たかあき
+さくらい,としゆき
+さぬき,のぶゆき
+ささき,さちこ
+とみた,けいいちろう
+さとう,けんいち
+さとう,むつみ
+さとう,むつお
+さとう,しんご
+さとう,しゅじ
+さとう,よいち
+さとう,ゆたか
+さわだ,かずひろ
+せお,あきひろ
+せざい,いちろう
+しばた,ゆきのり
+しばた,ひろし
+しがき,ひでお
+しみず,かずまさ
+しみず,のぶお
+しみず,しげのり
+しみず,たかし
+しみず,りゅうたろう
+しもむら,あきと
+しのはら,ともなり
+しらつ,てつお
+しろした,なおき
+しょじ,よしのり
+しょみつ,まさゆき
+そだ,としや
+そもり,かきょ
+そ,あつこ
+なか,まさと
+すぎむら,けんさく
+すぎの,かずやす
+すぎさわ,たけひこ
+すぎた,よ
+すぎうち,あきひこ
+すぎやま,ひろむ
+すぎやま,よしみ
+すぎやま,あきら
+すずき,あきとし
+すずき,ひでお
+すずき,ひろあき
+すずき,かずひろ
+すずき,まこと
+すずき,さとし
+すずき,ゆうこ
+すずき,よしひろ
+たちばな,かつすけ
+たいら,たつお
+たいら,かずひこ
+たかだ,ゆうじ
+たかぎ,けいし
+たかはし,まさひろ
+たかはし,のぶゆき
+たかはし,さゆり
+ますざわ,しんすけ
+たかはし,あきのり
+たかま,まさのり
+たかの,かずみ
+たかの,しんや
+たかさか,ゆうじ
+たかせ,しん
+たかた,ひろあき
+たかやま,としあき
+たかやなぎ,ひでと
+たけだ,こういち
+たけだ,ゆうこ
+ふじい,たかし
+たけのり,あきら
+たけした,ひであき
+たけうち,ひろゆき
+たけうち,まさかず
+たきざわ,のりいつ
+たきざわ,たかゆき
+たまき,はじめ
+たむら,ひとし
+たむら,まさあき
+たむら,ひさと
+たなか,みえこ
+わたなべ,かずよし
+たにやま,はじめ
+たに,かつじ
+てらきた,くみこ
+てずか,あつし
+とばり,ありひろ
+とがし,えり
+やまだ,あきら
+ときぞの,あつこ
+とみなが,いくし
+とみなが,ひろかず
+とみた,ゆうじ
+とみた,たかとし
+ともおか,まさあき
+とのさき,つよし
+とりざわ,さとこ
+こいけ,あきひろ
+とよかわ,てつね
+とよかわ,のぶお
+つぼい,しょご
+つかだ,あきひろ
+つくい,のぼる
+つるかわ,かずひこ
+つつい,ながのり
+つつい,しんいち
+うちだ,すすむ
+うちだ,じゅにち
+うちま,けんいち
+うちやま,しげお
+うだ,もとひさ
+うえだ,しんじ
+うえの,しんじ
+うえの,てつお
+うえの,ひとし
+うけがわ,よしのり
+うまずめ,えみ
+うめむら,ひろこ
+わだ,まさよし
+わだ,ひさよし
+わたなべ,ただし
+いいだ,とおる
+わたなべ,ひさし
+わたり,えいじ
+やぎ,としかず
+やまだ,ゆうじ
+やまが,ひろき
+やまぐち,じゅにち
+やまぐち,しゅにち
+やまぐち,あきひろ
+やまもと,ひさよし
+やまもと,かずのり
+やまもと,きよし
+やまもと,のりお
+やまもと,たかし
+やまもと,たかゆき
+やまもと,よしひろ
+やまもと,きみひろ
+やまなか,ひろし
+やました,やすひこ
+やまうち,りょ
+やまざき,さとし
+やまざき,たかし
+やまざき,やすよし
+やの,よしゆき
+やの,ひろゆき
+やすだ,ひでお
+やすまつ,まさのり
+やすもと,ひでお
+やすにわ,まさし
+よだ,てつや
+よだ,まさゆき
+よしだ,かずゆき
+よしい,ひでし
+よしなが,まさのり
+よしの,かずと
+よしたけ,かおる
+たきざわ,まさよし
+やまぐち,えいじ
+かばしま,さとる
+さくら,かずあき
+むらやま,はるひこ
+ひきだ,まさとし
+むらい,けんじ
+じょほ,ゆきお
+えんど,こういち
+てらむら,たけし
+わたなべ,かつなり
+いまい,こうじ
+もりもと,たかゆき
+こやり,おさむ
+まつみや,いさお
+しばた,よしひろ
+ちしろ,たつや
+いたみ,ゆみこ
+おざき,たつみ
+ふくもと,あきひろ
+おかだ,たかし
+さわだ,かずよし
+さくらい,かずひさ
+はやし,ゆすけ
+まつおか,ひろゆき
+みよし,かずみ
+やまなか,くにひろ
+しみず,あきら
+こはら,せいじ
+にしかわ,たつお
+いまい,たかひこ
+ふじむら,しげや
+こじま,としかず
+こばやし,せいじ
+きくち,ゆひち
+さいとう,かずお
+やました,よしひろ
+あべ,ひでお
+てずか,ひとし
+たなか,まさつぐ
+にわ,ひろし
+かめい,ひろし
+やの,たかし
+なかまる,よしのり
+おはた,やすのり
+やすやま,のりよし
+かすが,こうじろ
+いしい,ひとし
+ふじもり,まさのり
+いわもと,ひろし
+やました,やすお
+きた,ひろゆき
+むらおか,やすゆき
+いぐさ,ひろし
+ながさわ,かつひこ
+やまぐち,みつる
+おだじま,ひであき
+おた,しんじ
+はぎの,たかし
+やぶき,わたる
+いき,みのる
+さいとう,みずほ
+やまだ,みつお
+なかやま,やすし
+むらまつ,まさのり
+たしろ,まさひろ
+いしはら,みつお
+しばおか,あきひこ
+なかお,のりこ
+ふじた,ひろし
+さくた,るみこ
+はた,ともみ
+おひゃま,ゆうこ
+たご,よしずみ
+まつむら,ひろじ
+いとう,やすひろ
+きむら,ゆたか
+あおき,まみ
+こまがた,なおいちろう
+ならむら,としあき
+ふじもと,よしとし
+みやさか,まさと
+はやし,たかし
+さいとう,まりこ
+おがさわら,かおる
+おつか,しょひち
+かわい,まさゆき
+しまず,たつお
+たかはし,やすのり
+まえざわ,としき
+はだ,まさゆき
+まつひら,すすむ
+すぎはら,ただし
+なかじま,きょこ
+はたけやま,かずお
+あおき,まさゆき
+しぶかわ,たけお
+いしだ,みつたか
+おかだ,ひでとし
+いとう,かずこ
+かとう,まさき
+こばやし,としひこ
+むらさわ,まさひろ
+みほ,かずひこ
+すがね,しょじ
+いしかわ,としゆき
+おか,ともゆき
+いわみ,よひち
+なかやま,きしこ
+いとう,いずみ
+すぎやま,かおる
+かしもと,えり
+なかむら,のぼる
+あおやま,よしのぶ
+しばた,てつや
+まつお,まさひこ
+しのむら,きよひさ
+ふるかわ,しげる
+もとき,たかし
+わたなべ,あきら
+あんどう,まさひろ
+たけひ,なおみつ
+いしい,みのる
+のちせ,まさのり
+みやなが,よしのぶ
+しんど,よしひこ
+おた,やすひろ
+たに,ゆみこ
+こむろ,ひろし
+いわさ,かずき
+まつもと,しんいち
+きむら,よしこ
+あおき,まさゆき
+まつばやし,ひでのり
+ごと,けんいち
+おがわ,よしのり
+すぎたに,あおい
+おくの,よしふみ
+さくらだ,しゅひち
+むこひゃま,ちお
+いとう,まさひろ
+やまもと,さちこ
+やまもと,あきふみ
+かねこ,かずひこ
+やまざき,としこ
+なかむら,ひろみ
+みわ,みよこ
+さむかわ,よしあき
+なかだ,ふみのり
+よしとみ,ひろみち
+たかしま,ひであき
+いしげ,ひさと
+すえはら,あきひこ
+いのうえ,ひろし
+のじま,ふみゆき
+さくま,あきら
+さの,はるお
+むらおか,ゆきお
+みうら,しんぺい
+さかもと,のりこ
+なるお,さとし
+はせがわ,ただし
+おかだ,まさとし
+やひろ,しゅへい
+ばば,やすひろ
+あた,とも
+ながせ,おさむ
+かわえ,しろ
+みうら,としゆき
+ふじた,けんいち
+つるみ,つねじ
+もちずき,あきこ
+よしだ,ひろゆき
+おかもと,ひでみ
+やすもと,まりこ
+ねもと,さちえ
+ひだか,よしみち
+ますだ,かつじ
+とくなが,りゅぞ
+なかざわ,じゅん
+ふじなわ,せいこ
+よびかわ,みつひろ
+きただ,てつお
+よしの,のぶゆき
+ばば,たくや
+くろかわ,あやの
+かとう,きよし
+わたなべ,いずみ
+つちだ,まきよ
+すずき,さとこ
+みずの,よしお
+たにもと,えみこ
+いけの,かずあき
+いとう,まさふみ
+たけだ,みつはる
+まえだ,たくじ
+くどう,うえみつ
+かげやま,くみこ
+やまかげ,ふみひと
+さえぐさ,すすむ
+みずたに,よしはる
+くどう,かずひろ
+こおりやま,たけし
+かたよせ,やすひろ
+おさだ,よしと
+やぎはし,ひろし
+すみ,たかし
+たなか,としお
+くどう,あつこ
+たけひ,みゆき
+あめみや,あきら
+なかむら,たくみ
+きよみつ,めぐみ
+いずみだ,しょこ
+ふなき,とおる
+たけした,こへい
+みうら,かつみ
+いしばし,みねお
+もりあい,よじ
+むらやま,れいこ
+おさわ,なおこ
+ふかだ,としひこ
+やまだ,みずほ
+いとう,よしえ
+おのでら,けいこ
+はやさか,しゅひち
+おつか,たつお
+とひゃま,あつし
+かわはら,ゆきお
+えびさわ,あきら
+やまかわ,みちひろ
+やまもと,たかし
+すずき,けんじ
+おやまだ,よしか
+まつやま,ひろあき
+あべ,かずひこ
+あべ,きくお
+あべ,のぶこ
+あべ,けいじ
+あげた,えいじゅ
+あかはね,やすのり
+あけなが,よしかず
+あきやま,ひでひこ
+あきざわ,あきら
+あまだ,とみお
+あまの,まさみち
+あも,ひでひこ
+あんどう,ひろたか
+あんどう,みつる
+あんどう,まさき
+あおの,てつや
+あおやま,やすとも
+あらい,とおる
+あらかわ,たかし
+ありもと,りゅひち
+ありお,のぶひろ
+あさい,やすお
+あさかわ,かずまさ
+くろき,ゆきお
+あずま,じゅにち
+ばんの,ひでひろ
+べつやく,じゅん
+びと,しげお
+ちば,ひでかず
+ちゅじょ,みきお
+えだ,まさし
+えんど,あきお
+えさき,ひであき
+ふじい,なおき
+ふじい,としふみ
+ふじもと,ひろき
+ふじた,いわお
+ふじた,かずひろ
+ふじわら,ひでし
+ふかざわ,ひでき
+ふくだ,まこと
+ふくはら,あきら
+ふくしま,よしひと
+ふくどめ,ゆきのり
+ふくやま,しんじ
+ふなばし,まさきよ
+ふるだて,けんご
+ふるさわ,じん
+ふるた,ひろし
+ふるや,かつき
+ふしき,けんいちろ
+はまだ,なおみ
+はなだ,しんいち
+はなみ,ひろし
+はらだ,ふみお
+はるかわ,あきら
+はせがわ,きよなお
+おつ,あきひろ
+はしもと,さとし
+はしもと,ともひと
+はすもと,すすむ
+はっとり,やすひこ
+はやさか,かずよし
+ひだか,かずひさ
+ひぐち,さとし
+ひぐち,まさゆき
+ひじくろ,あきひこ
+ひらかわ,しんじ
+ひらの,りきや
+ひらた,しんいち
+ひろせ,ゆひち
+ひさだ,こういちろ
+ほり,かつのり
+ほひゃ,ひでお
+ほんだ,あきら
+ほんま,いずみ
+たなか,よひち
+ほしじま,むねひろ
+ほしか,あつし
+ほそだ,えみこ
+いちかわ,あつし
+いちむら,つよし
+いがの,たかお
+いいだ,けさお
+いいおか,けいこ
+ながの,ふさゆき
+いけざわ,なおゆき
+いもと,じゅにち
+いなずみ,ひろよ
+くしみや,まさひろ
+いのうえ,さちこ
+いのうえ,たかし
+いのうえ,のりやす
+いぬつか,かずひこ
+いさじ,しげゆき
+いしだ,たつや
+いしだ,つよし
+いしだ,たつお
+いしがき,たけし
+いしがみ,ちえみ
+かじたに,やすひろ
+いしはら,けいご
+いしむら,みどり
+いしやま,まさゆき
+いしざき,ひろし
+いそべ,さとる
+いそざき,のぶやす
+いとう,すみれ
+いとう,やすはる
+いわあさ,しんいち
+いわい,しんや
+いわま,あきら
+いわもと,ともゆき
+いわなが,なおき
+いわした,ひでと
+いわた,しゅひち
+いわた,いさお
+かどわき,くにあき
+かげやま,えりこ
+わたなべ,じゅにち
+かみや,おさむ
+かみや,ひろゆき
+かんばやし,まさひこ
+かの,しゅひち
+かりや,のぶお
+かさき,よしひこ
+かしま,まさあき
+かすや,ちくさ
+かとう,ひさと
+かとう,けんたろう
+かとう,なおたか
+かとう,さとし
+かとう,よひち
+かとう,ひろのり
+かわばた,しこ
+かわばた,かずまさ
+かわぐち,えいじ
+かわはら,さとし
+かわはら,けんいち
+かわじり,いずみ
+かわかみ,くにあき
+かわくぼ,けんいち
+かわまた,きんじ
+かわむら,ひろし
+かわの,なりやす
+かわさき,じゅん
+かわしま,まさお
+かわず,あきら
+きばし,たかき
+きまち,かずひろ
+きもと,けんじ
+きむら,みつぐ
+きんばら,ひでのり
+きのした,ひろゆき
+きのした,だい
+きりさわ,あつし
+こばやし,ひでみち
+こばやし,ひろみ
+こばやし,かずふみ
+こばやし,みちお
+こだま,てつお
+こだま,かずとし
+たかむら,たかのぶ
+こひなた,ひとし
+この,のりあき
+この,まさひと
+こひゃま,としひさ
+こずき,まさのり
+とど,ひでひこ
+こじま,まさき
+こんど,たけし
+こんど,たくや
+こんど,よしみち
+こんの,やすし
+こたき,ひろき
+こやいし,いちろう
+こやなぎ,じゅにち
+くぼ,ひろあき
+くどう,まさお
+くまがい,ふじひこ
+くまき,こうじ
+くらち,おさむ
+くらた,もとひこ
+くりた,ゆすけ
+くりやま,ひろし
+くろだ,たかひろ
+くろかぎ,こうじ
+くろさわ,としお
+くろさわ,こうじ
+くわの,しんじ
+まえばし,あきら
+まえざわ,たかし
+まの,まさとし
+まるわか,かおる
+うちやま,ひとし
+ますだ,みか
+まつい,のぼる
+まつい,けんたろう
+まつもと,きみひと
+まつもと,なおゆき
+まつなが,しんじ
+まつしま,たかゆき
+まつした,こすけ
+まつざき,みき
+いないし,しゅんじ
+みかみ,こすけ
+みなぎ,まさのぶ
+みつやま,しんじ
+みうら,せいき
+みやけ,ひろたか
+みやもと,としあき
+みやた,のぶゆき
+みやうち,よしお
+みやうち,ひでなお
+みやざわ,たつお
+みやざわ,じゅん
+みよだ,しげき
+みぞぶち,さとし
+みぞた,しんいち
+ちば,ひさと
+みずはし,まさとし
+みずまち,もりひろ
+みずたに,ただし
+みずたに,たけし
+みずたに,よしお
+もちずき,けいいち
+もりもと,あきみつ
+もりたに,こういちろ
+もりた,しげき
+もりた,あつし
+もりわき,あつこ
+おくい,こうじ
+もり,まさき
+もり,いちろう
+むこひゃま,あきら
+むらて,たかし
+むと,たかひさ
+ながい,けんじ
+ながの,たけお
+ながおか,ひろひさ
+ながせ,まこと
+ながた,せいじ
+ながた,さとし
+ながわ,つよし
+なかまる,ひろゆき
+なかむら,みのる
+なかむら,ななこ
+あべ,たかし
+なかむら,とよひこ
+なかむら,たかし
+なかしま,しんいちろう
+なかしお,たけひこ
+なか,たけみ
+なみき,たかゆき
+なんぶ,ひろゆき
+やまぐち,しんいち
+にいみ,かつき
+にしだ,みつひろ
+にしだ,みつとし
+にしだ,たかひろ
+にしだ,かつみ
+にしくぼ,ひろゆき
+にしむら,もとき
+にしむら,しんいち
+にしお,よしき
+にしお,あきら
+にしやま,ともこ
+やがわ,よひちろ
+にった,としや
+のべおか,あきら
+のじり,ひさよし
+のむら,ひろゆき
+のなか,のりこ
+おばな,のりかず
+おちあい,ひろしげ
+おちみず,しんじ
+おち,しげふみ
+おだおはら,ひろよし
+おだ,えいじ
+おがた,まさあき
+おがわ,すすむ
+おがわ,あきひろ
+おぐら,たかあき
+おひら,つよし
+おひら,まさと
+おひし,しんじ
+おひし,たかし
+おき,けいじ
+おくぼ,ひろみ
+おの,あきほ
+おぬま,よしのぶ
+おぬま,てつや
+おたき,かつし
+おた,みのる
+おた,としゆき
+おた,たかし
+おと,みつのり
+おつぼ,しんご
+おひゃぎ,ひろかず
+おひゃま,まさき
+おいえ,まさとし
+おじま,えつこ
+おかべ,なおゆき
+おかだ,のぶゆき
+おかもと,いちろう
+おかね,あきら
+おかの,まこと
+おかの,かゆ
+おかざき,かずこ
+わたなべ,けいこ
+おくだ,しげのぶ
+おくの,なるし
+おなや,まさひで
+おの,とおる
+おの,よしなが
+おの,こういち
+おさない,まさずみ
+おざき,ひろふみ
+さいとう,まさひろ
+さいとう,あつし
+さじ,かずや
+さじ,あきら
+さかい,いちろう
+さかい,とおる
+さかくら,まさき
+さかうえ,たかし
+ささべ,ひでお
+ささき,まさこ
+なみき,はるひこ
+さたけ,まさとし
+さたけ,あつひろ
+さとう,かつし
+さとう,かずこ
+さとう,きよし
+さとう,しんや
+さとう,ゆたか
+さとう,きよあき
+さわだ,ひでお
+せきぐち,よしみ
+せきもと,じゅん
+せきね,やすひで
+せきおか,かずお
+せきや,かずひこ
+せき,ともすけ
+せんた,たかひろ
+しばた,やすゆき
+しいな,まこと
+しいや,ひでかず
+しまばやし,ひろし
+しまだ,かつひろ
+しまだ,わき
+しまむら,しゅひち
+しみず,たけし
+しみず,なおき
+しもむら,ゆぞ
+しのだ,しげき
+しのはら,ひろし
+しおざわ,はじめ
+しらいし,ひろあき
+しらさき,としゆき
+しらとり,きいち
+しさい,まもる
+しょだ,ひろあき
+そう,じゅにちろ
+そのべ,のりあき
+すどう,さとし
+すどう,ふみはる
+すぎうら,ひでき
+すぎやま,まもる
+すぎやま,しんいちろう
+すみだ,みちとし
+すみかわ,あきひと
+すずき,ひでとし
+すずき,いたる
+すずき,かつあき
+すずき,こうじ
+すずき,もとゆき
+すずき,のぶゆき
+すずき,ゆうじ
+すずき,ようこ
+ほそかわ,ひでじ
+たぶし,まさひろ
+たちざわ,けいすけ
+ただ,なおき
+ただ,とおる
+たかた,しゅにち
+たかがき,さとこ
+やまざき,なおき
+たかはし,りょひち
+たかはし,ともじ
+たかはし,ひろき
+たかの,ひとし
+たかさき,みねかず
+たかす,ひろし
+たかとり,あつし
+たかやま,としなり
+たかやま,よしゆき
+たかやま,やすぞ
+たかや,はじめ
+たけだ,かずあき
+たけだ,ゆり
+まつおか,いくた
+たけい,のりふみ
+たけうち,たかあき
+たけうち,ひろとし
+たけ,ゆすけ
+たきみや,ひでかず
+たまたに,なおき
+たむら,よしつぐ
+たむら,ひろき
+たなか,まさやす
+たなか,たかひろ
+たなか,たかし
+たなか,かずよ
+たにもと,こうじ
+たにやま,まさみ
+たんの,しげる
+たの,ゆうじ
+てらざわ,よしかず
+とくしげ,たえこ
+ごと,ひろゆき
+とみなが,よしひろ
+とんしょ,のぶひこ
+つぼい,ともおき
+つぼた,のりとし
+つじむら,けいこ
+まつむら,ともひろ
+つかだ,かずあき
+つねよし,よしひろ
+つるおか,けんじ
+つる,かずひさ
+うちだ,ともやす
+うえだ,あやこ
+うめさき,のりひろ
+うらかわ,しんいち
+うらかわ,あきひこ
+わだ,おさむ
+わかばやし,ひさお
+わかまつ,あきら
+わたなべ,さとる
+わたなべ,なおき
+わたり,ひろひさ
+やべ,ひでゆき
+やはぎ,しょひち
+やまだ,しょじ
+やまだ,なおき
+やまこし,あきら
+やまもと,ひでき
+やまもと,さとみ
+やまもと,まさや
+やまもと,よしお
+やまもと,ひでゆき
+やまうち,たもつ
+やまの,きよし
+やまおか,ゆうじ
+やました,かずし
+やまうち,じゅん
+やまざき,けんじ
+やまざき,よしかず
+やなぎしま,あつこ
+やまもと,たかし
+やの,こうじ
+やざき,こういち
+よご,しんじ
+よこい,かずひろ
+よこみぞ,かずひろ
+よこた,まさゆき
+よこた,そひち
+よこた,あつし
+よしだ,よいち
+よしだ,さち
+よしふさ,まさみ
+よしはら,とおる
+よしいえ,ひろふみ
+よしかわ,ともたか
+よしかわ,としひで
+よしお,たけし
+ゆあさ,ひろまさ
+ゆき,ゆかり
+あだち,ますみ
+おにし,みかこ
+おた,たかひこ
+あさの,たけし
+にしむら,やすはる
+やまだ,かつまさ
+さい,としき
+みやもと,ゆうじ
+すずき,ひさお
+ふくい,ゆうこ
+おくだ,しんいちろう
+さいとう,まちこ
+ふるや,いくふみ
+もとやま,ともまさ
+よしざき,はじめ
+なかむら,ちえ
+ときわ,みつひろ
+いなだ,ゆうじ
+ときわ,まさよし
+よしだ,あきら
+たかの,としゆき
+うえだ,かずお
+つちや,みわこ
+しもかわ,みちこ
+まつい,みつよし
+すがや,ひろのり
+みのぐち,くにお
+うえだ,かずお
+いの,かずひこ
+まえだ,くにや
+つぼた,ひさこ
+よしみ,たかお
+いちかわ,かつみ
+ほり,なおひろ
+はやし,ゆひち
+しばた,あつろ
+こばやし,しゅひち
+おくぼ,まさつな
+いわた,のりゆき
+ふじた,たかゆき
+きたむら,けいこ
+くろき,ともこ
+やまもと,ゆうこ
+やまばた,ふみひこ
+さいとう,かつみ
+ふじわら,よしお
+いとう,やすこ
+いいけ,ひかる
+さむかわ,ともじ
+あずま,まこと
+あおき,のりお
+ふじた,いくお
+みよし,しげひろ
+せきやま,ひでや
+てらだ,ゆたか
+えんど,いくこ
+かきもと,ますひこ
+ふるや,たけし
+まきむら,のぶゆき
+こんの,まさひろ
+すぎさき,かずお
+よしだ,けいこ
+はぎわら,たかし
+やざき,ゆきこ
+にのみや,しゅひち
+こさか,ただし
+さの,かずと
+さいとう,とおる
+しもせ,あきのり
+たかはし,まさき
+たつおか,あつし
+たばた,つねお
+なおい,としかず
+ながた,よしお
+にしおか,てるひさ
+まつかわ,たけし
+みずの,けんじろう
+とくなが,いわお
+むらかみ,たけお
+やすかわ,ひろし
+やまぐち,としゆき
+よこうえ,しげお
+あずま,ひろし
+いなだ,ゆうじ
+いしい,かずお
+いまにし,ひろやす
+おかの,しんご
+きし,だいすけ
+くぼた,たかよし
+こみなみ,かずひと
+あいやま,まさき
+さの,よしたか
+たきがわ,まさこ
+こんの,まさお
+せんだい,しげる
+にわの,あつし
+しじょ,ゆうこ
+かとう,けいこ
+あかさか,ひろき
+おんずか,としのり
+こが,ゆきお
+はやかわ,ただし
+はせがわ,のぼる
+ふるかわ,みつゆき
+ふじかど,のぼる
+とのかわ,たけお
+まつお,かねみつ
+きみずか,としこ
+おち,まさのり
+いちこはら,まゆみ
+いけだ,しょじろ
+あらたけ,ちから
+いけだ,しげよし
+いとう,ひろやす
+いけだ,たかし
+いいだ,ひですけ
+おくま,なおよし
+くさば,かずなり
+こばやし,くにお
+ごと,ひろし
+すずき,こういち
+せきね,ともみ
+たかだ,まさよし
+こんど,たけし
+たけやま,ゆうじ
+たかいち,たけし
+そだ,よしお
+たの,まさのり
+しのざき,まこと
+はらだ,まさやす
+くどう,あきこ
+つのだ,いくお
+ふるかわ,ときお
+もりた,よひち
+やまもと,えつ
+やました,まさと
+ゆかわ,かずえ
+よしだ,まさき
+はやし,さよこ
+たんの,かずや
+たかはし,もとのり
+なりあい,ひろし
+たかむら,としゆき
+たんの,よすけ
+こばやし,けいしろ
+ごと,おさむ
+ごだ,けんじ
+なかしま,まこと
+ほしの,さとし
+わこ,あや
+すずき,かつこ
+よしまつ,じゅね なおこ
+なみおか,としあき
+やまぐち,まさゆき
+いしばし,とおる
+いしだ,よしはる
+うちやま,よしお
+えんど,えいこ
+なかの,としたか
+いまい,えいいち
+おさない,まこと
+さかもと,よしのり
+しおみ,あきお
+しまざき,てつお
+てるや,こういち
+なかたに,とおる
+はぎわら,きょこ
+ひがし,みつお
+ほりうち,ふみただ
+みぞろぎ,なおき
+もり,しげお
+いのうえ,まさくに
+しだ,しんじ
+やまもと,ひろかず
+やまもと,まこと
+おたき,せんや
+ふじ,せいじ
+あきもと,しげる
+いいじま,まさふみ
+おぐま,かずお
+さとう,あつし
+つちや,きよし
+さいとう,ちかし
+はら,なおき
+ふじまき,としや
+むろた,なおき
+もり,きよかず
+みぞぐち,しょこ
+いけはた,よしお
+おがわ,なおき
+うえの,たもつ
+たなか,たけひこ
+こばやし,みちよ
+くろす,みちこ
+きたがわ,ひであき
+しのみ,かずや
+はせ,さなえ
+てるぬま,まもる
+きくち,あきこ
+はしもと,ゆみこ
+おかわ,たかお
+おにし,よしひろ
+あべ,かずよし
+あだち,せいいちろう
+あだち,しんや
+あだち,みつまさ
+あご,とおる
+あいはら,としゆき
+あいはら,ひろゆき
+あいざわ,ひろたか
+あかまつ,まさとし
+あかま,かずひろ
+あかせ,まさかず
+あかやま,やすじ
+ふくしま,ひろし
+あきば,まさゆき
+あきの,ゆぞ
+あきしか,ようこ
+なめき,さとし
+あきずき,のりゆき
+あまだ,しんと
+あまの,そひち
+あみの,まさひと
+あんべ,ひでき
+あんどう,まさと
+あんざい,としゆき
+あんざい,かおり
+あおき,あきひこ
+あおやぎ,ひでお
+あおやぎ,じゅにち
+あおやぎ,たつお
+あらかわ,ともみ
+あらかわ,まさゆき
+あらき,しんげん
+あらやす,ともの
+あら,つとむ
+ありた,はるき
+あさだ,ゆうじ
+あさだ,なおみ
+あさかわ,しんいち
+あさくら,ゆきお
+なかさと,とおる
+あさの,のぶはる
+あさり,やすし
+あつみ,ひろとし
+あわか,たかよし
+ばば,ひろし
+ばん,さとし
+ばん,たかお
+ばん,ひろゆき
+ちょさ,ひさし
+だいど,たいすけ
+だいもん,まさゆき
+でむら,としゆき
+どい,ひとし
+えびぬま,あきお
+えぐち,きょこ
+えはら,くにお
+えなみ,ひろあき
+えと,のりえ
+いわさき,ともゆき
+えざき,あきら
+ふじえだ,よしひろ
+ふじえ,かずき
+ふじがき,あきよし
+ふじい,かつみ
+ふじい,かずひろ
+ふじい,けんぞ
+ふじい,わたる
+ふじい,こうたろう
+ふじかわ,まさし
+ふじもり,けいしん
+ふじもと,なおひこ
+ふじもと,よしと
+ふじの,たかし
+ふじおか,あけみ
+おぐら,じゅん
+ふじた,かずお
+ふじた,なつこ
+ふじた,よしなる
+ふじた,かずお
+ふじわら,ゆうじ
+ふかだ,じゅん
+ふかお,こういち
+ふかお,よしちか
+ふかせ,としゆき
+ふくち,あきら
+ふくだ,じゅにち
+ふくだ,みゆき
+まつかわ,しげのり
+ふくだ,しんいち
+ふくだ,ともの
+ふくだ,しょご
+ふくはら,しの
+ふくい,たかし
+ふくい,やすし
+ふくおか,あやこ
+しが,まさと
+ふくしま,さとる
+ふくしま,ゆきお
+ふくしま,しょじ
+おの,ひろし
+ふなつ,あつし
+ごだ,みつひろ
+ごだ,みさき
+ご,まりこ
+こぐれ,よしひろ
+ごと,ゆうこ
+ごと,ふみひこ
+はが,ひでお
+はぎわら,みか
+はまだ,ゆきこ
+まえだ,けんじ
+はまはた,ゆきお
+はまの,ひろし
+はなぶさ,じゅにち
+はなた,しんご
+はなみつ,なおと
+はんだ,あつし
+はらだ,ちかこ
+はらだ,なおき
+はらだ,なおき
+はらだ,としゆき
+はら,よりこ
+はら,ひであき
+はせがわ,かいろ
+はしぐち,きんや
+はしもと,たかし
+はしもと,ゆきよ
+はたけやま,りょいち
+はたなか,きくお
+はつしま,あきお
+はっとり,けんいち
+はっとり,のぼる
+はっとり,のぶひろ
+はっとり,りゅひちろ
+はっとり,よしじ
+はっとり,よしたか
+はやかわ,すみと
+はやしだ,あやこ
+かんだ,ふみお
+はやし,じゅにち
+はやし,まさのり
+はやし,まさゆき
+はやし,みゆき
+とびかわ,まこと
+ひげた,いさお
+ひぐち,まさとし
+ひぐち,のりき
+ひじかわ,さとし
+ひかい,きよし
+ひなた,けん
+ひの,よしひさ
+ひの,つねひさ
+ひらぎ,まさこ
+よもだ,ふみお
+ひらの,ゆきひこ
+ひらの,よしのり
+ひらさわ,あきら
+ひらた,まさや
+あさの,けんじ
+ひらた,こうじ
+ひらつか,つよし
+ひろかわ,ひろし
+ひろなか,かつみ
+ひろせ,みゆき
+たしろ,よひち
+ひろせ,みつひろ
+ひしぬま,ゆうこ
+いわもと,よしのり
+ひうら,まどか
+すぎもと,じゅん
+ほんま,しょひち
+ほんま,たかゆき
+ほんま,やすし
+ほんま,かずと
+ほりかわ,まさのぶ
+ほりお,ひろゆき
+ほり,かずひろ
+ほり,まさひろ
+ほり,ひろし
+ほしの,ひさお
+ほしの,たけし
+ほしの,ふみあき
+ほし,かずひさ
+ほそ,ひさゆき
+ほたて,きみこ
+いちかわ,まこと
+いちかわ,ひろのぶ
+いちき,じゅん
+いちのせ,ひとし
+いだ,せいいち
+いでい,やすゆき
+いがらし,つよし
+いぐち,たいら
+いいだ,たつろ
+いいだ,じゅにち
+いいじま,かつよし
+いいじま,かずお
+いいむら,あつし
+いいの,こういち
+いいずか,しんじ
+いいずか,あきこ
+はるた,ふとし
+いけだ,ひろこ
+すずき,かずみ
+いけだ,ゆか
+いそべ,ゆみこ
+いけやま,さとし
+いくた,たけし
+いまいずみ,あり
+もりした,なおき
+いまい,まさかず
+いまむら,ゆうじ
+いまむら,ご
+いなみ,えいざぶろ
+いのうえ,ふじお
+いのうえ,ひろゆき
+いのうえ,かずのり
+いのうえ,よしのぶ
+いのうえ,ひでき
+いぬい,ひろし
+いしだ,かつひこ
+いしだ,としこ
+いしだ,なおひろ
+いしぐろ,とおる
+いしぐろ,くにひろ
+いしはら,こうじ
+いしい,すぎお
+いしい,としあき
+いしい,ちずこ
+ゆきまさ,しげき
+いしかわ,ただし
+いしかわ,まなぶ
+いしくら,のりゆき
+いしもり,けんや
+いしもと,やすひで
+いしもと,ひろし
+いしおか,ひろし
+いしおか,ひろたか
+いしわた,みつこ
+かん,ゆきとし
+いしざか,まなぶ
+いそがい,としひろ
+いたばし,ゆたか
+いたばし,まり
+さぎや,ひろし
+いとう,じゅにち
+いとう,かおる
+いとう,けいいち
+いとう,こうじ
+いとう,まさとし
+いとう,たかし
+いとう,ようこ
+さかい,ゆたか
+いとう,ひろあき
+いわい,りえ
+しまむら,さちこ
+いわい,ゆか
+かわなか,のぶお
+いわくぼ,なおひさ
+いわもと,よひちろ
+いわもと,かよこ
+たけだ,たかひろ
+いわむら,しんいち
+いわなが,しげき
+いわお,ひであき
+いわさき,てつや
+いわさき,あけみ
+せがわ,のぞむ
+いわしろ,なおよし
+いずみ,かずしげ
+かえりやま,なおゆき
+かがみ,たかし
+かがみ,こういち
+かじたに,かずゆき
+やまもと,かおる
+かきぬま,ふさちか
+かく,きょこ
+かまだ,かずみ
+いながき,たかゆき
+かまもと,さやか
+かまたに,ひであき
+かまた,さちこ
+やまだ,ひろゆき
+かめだ,ひでお
+かめや,こういち
+かみじょ,たつひこ
+かみお,とらひこ
+かみや,まさたか
+かもと,よしひさ
+かなだ,まこと
+かない,なおき
+かない,いくお
+かなざわ,しげよし
+かんだ,かずひこ
+かねいち,えいいち
+かねこ,ひろあき
+かねこ,ひろゆき
+かねこ,まこと
+かねこ,まさえ
+かねこ,たえこ
+かねこ,なおふみ
+かねまる,ともこ
+かりや,えいじ
+かるべ,あきこ
+かしま,ひでき
+かしわぎ,まこと
+かしわぎ,まなみ
+かすや,まさのり
+かすや,よりこ
+かすや,まさたか
+かたの,きょこ
+しらき,りえこ
+かたおか,さだいち
+かたおか,たかひろ
+かたやま,あきお
+かとう,ひろぶみ
+かとう,ますお
+かとう,しゅじ
+かとう,たけひこ
+かとう,やえ
+ごと,ひさし
+かつや,あつし
+かわだ,よしのぶ
+かわだ,きょじ
+かわぐち,ひろゆき
+かわはら,よしゆき
+かわはら,ひろし
+かわはた,けいご
+かわい,しょこ
+かわい,たかし
+かわい,けんいち
+かわかみ,かつお
+かわきた,よひちろ
+かわきた,あつし
+かわむら,まりこ
+かわむら,たてお
+かわむら,ひろし
+かわぞえ,ひろこ
+ふたくち,ひろや
+きだ,たけし
+きだ,ひろかず
+きど,ひろし
+きはら,みちお
+きくち,さちこ
+きくち,さとし
+きくた,せいいちろう
+きもと,ひろあき
+きむら,ひろゆき
+きむら,じゅにち
+きむら,かよこ
+きむら,みほ
+まつもと,たけし
+きむら,ともあき
+きむら,やすこ
+おかざき,ゆきまさ
+きむら,ゆき
+きむら,まさゆき
+きのした,みな
+きし,ただし
+きす,やすひろ
+きたかぜ,よしふみ
+きたむら,あきお
+きうち,かつとし
+きうち,こうじ
+きよた,あいこ
+こばやし,いさお
+こばやし,かずまさ
+こばやし,みのる
+こばやし,なほみ
+こばやし,しゅにち
+こばやし,すみひろ
+こばやし,たくろ
+こばやし,としお
+こばやし,じゅんこ
+ひろせ,たけお
+こでら,ゆか
+こがい,あつし
+こぐれ,けいこ
+もりた,きみひこ
+こもと,じゅんこ
+この,のぶき
+こさか,あきお
+こいけ,なおと
+こいけ,たかぞ
+こいし,だいすけ
+こじま,まさはる
+こじま,けんじ
+こくほ,みよこ
+こくまい,よしゆき
+こまがた,たかし
+こまき,ひであき
+こまつ,ゆひち
+こまつ,よしお
+こみね,ひろひで
+こみやま,はるお
+こもおか,あきひろ
+こもり,ひさたか
+こんど,かずお
+こんど,みちひこ
+こんど,よすけ
+こんど,あきひろ
+こんどう,よしゆき
+こんの,きよし
+こすぎ,よひち
+こだ,あきお
+こやなぎ,かずたか
+くぼた,てつ
+くぼた,かつや
+くぼ,みえこ
+くどう,まこと
+くが,かずゆき
+くじま,よひち
+くまだ,あつし
+くまき,かつのり
+くまくら,よしのぶ
+くまもと,ふみお
+くもかわ,しげのり
+くらしま,ひろし
+くりはら,みきお
+くりはら,よしぞ
+くりむら,たかゆき
+くりす,たつと
+くりやま,てつお
+くりやま,よひち
+くろだ,としゆき
+くろかわ,のぶひこ
+くろき,ひろゆき
+くろさき,なおき
+くろす,たかゆき
+くしだ,ご
+くすだ,しげる
+くわばら,えり
+うちだ,ひろし
+まえだ,まき
+にわ,かつと
+まえひら,あきひこ
+まえかわ,ひろのり
+まきむら,こういち
+まきの,こうじ
+まきの,ゆみこ
+ようこた,しゅじ
+まるやま,ひろし
+ますだ,ゆきえ
+ますだ,じゅにち
+ますひろ,あきら
+ますやま,ひろし
+まつばら,のぶや
+まつばら,のぶあき
+まつだいら,ひろし
+まつだ,わたる
+ささもと,よしこ
+まつだ,いちろう
+まつふさ,けいいち
+まつい,やすひこ
+まつい,しげみつ
+まつき,まさと
+かの,ひでたか
+まつもと,ひろみつ
+まつもと,ゆうじ
+まつもと,まり
+はしもと,みちやす
+まつむら,ただし
+まつむら,みきお
+まつなみ,てるあき
+まつなみ,きみ
+ちば,たくじ
+まつしば,こうじ
+まつした,やすなり
+まつした,まさと
+まつうら,しげお
+まつざき,さゆり
+いまい,としみ
+まゆやま,かつじ
+めんじょ,とおる
+みちがみ,じゅにち
+みはら,あきひこ
+みき,ひろゆき
+みもり,ゆひち
+みなみぐち,としゆき
+みなずき,ふじお
+みねむら,しょじ
+みしな,きにち
+みつい,ひろゆき
+みうら,ひろゆき
+みうら,ゆきお
+むらかみ,てつや
+みわ,こういち
+みやがわ,ひろし
+みやぎ,えいいち
+みやはら,いちろう
+みやはし,ただし
+みやかわ,まさゆき
+みやき,あつし
+みやもと,まさと
+みやもと,のりお
+みやもと,はるこ
+みやさか,あつし
+みやたけ,ひろし
+みやた,かなめ
+みやた,なおゆき
+みやた,ゆかり
+くろだ,かずひろ
+みよし,たけはる
+みずこし,よひち
+みずこし,けんいち
+みずの,まさはる
+みずの,しげゆき
+みずたに,まさお
+もり,みちこ
+もり,としお
+もりかわ,きょこ
+もりき,まさとし
+もりした,まさずみ
+もりた,せいじ
+もりた,ひろし
+もりやま,まさひろ
+もりぞの,なおき
+もり,しげみ
+もり,としひろ
+もり,ゆうじ
+もり,まさみち
+もろずみ,けいこ
+いのはな,なおこ
+こじま,まきお
+むかい,としお
+むかい,たつや
+むらい,のぶはる
+むらかみ,しんじ
+むらかみ,しょじ
+むらまつ,のりこ
+にわ,あきこ
+むらた,やすひろ
+むらた,よしみ
+おの,ただし
+むらやま,かずひろ
+むと,としお
+むと,つよし
+むと,さとる
+むつしか,かつとみ
+ながい,やすお
+ながい,ひろのり
+ながもと,のぼる
+あらい,かずお
+ながお,しんご
+ながさわ,たつみ
+ながさわ,さちお
+ながやま,ちなつ
+ないとう,とおる
+ないとう,ちはる
+なかばやし,まさかず
+なかだて,かつひろ
+なかがき,さとし
+ながえ,いちろう
+なかがわ,たかし
+なかがわ,ちはる
+なかごめ,ひろや
+なかひら,たかし
+なかい,あまね
+なかじま,えいいち
+なかじま,ひろし
+なかじま,かつゆき
+なかじま,けんいち
+なかじま,たけとし
+なかじま,やすなり
+なかじま,あつし
+なかまた,かずと
+なかみち,あきひろ
+なかむら,ふさのぶ
+なかむら,かつお
+なかむら,かずひさ
+なかむら,こういち
+なかむら,まさのり
+なかむら,たかゆき
+なかむら,てるじ
+なかむら,としゆき
+なかむら,よしなり
+なかむら,ゆたか
+なかむら,えみこ
+なかにし,かつとも
+おおにし,みえこ
+なかにし,なおや
+なかにし,えり
+なかの,つねあき
+おかざわ,けいいち
+なかの,なおひで
+なかの,のりひろ
+なかの,しゅにちろ
+なかおか,まさき
+なかお,としあき
+なかお,まこと
+なかせ,てるひろ
+なかそぎ,しんじ
+なかた,はじめ
+なかつか,のりあき
+なかつか,ひろゆき
+なかやま,かずひこ
+なかやま,まさゆき
+なかやま,なおき
+なかやま,としあき
+なかやま,まさのり
+なかざわ,としゆき
+なみき,のぶやす
+ならしま,きよたか
+なら,かよこ
+くどう,のぞみ
+なつの,よしふみ
+なつやま,もえこ
+えと,てつや
+にへい,ふみこ
+おくの,えいじ
+まえほり,こし
+にしだ,まさとみ
+にしぐち,しげこ
+もり,たかし
+にしかわ,まこと
+にしくら,ひでき
+にしもと,あつし
+にしお,たつや
+にしわき,こへい
+にし,かつひこ
+にわ,みつぐ
+のぶまさ,くにお
+のだ,まさあき
+のぐち,たけひこ
+のぐち,ひさし
+のほり,みちはる
+のたに,ゆうこ
+のま,ひろし
+のみやま,たかし
+のもと,さゆり
+たんざん,ひろみ
+おかわ,ひとし
+ののやま,たつお
+のりかね,ゆきこ
+のろ,まさし
+の,しげる
+おばな,まさき
+おびなた,としひこ
+おちあい,けいこ
+しまむら,まさる
+おだね,まさき
+おがわ,みさと
+おぐら,もとひこ
+おぐら,たかし
+おぐら,けん
+おぐろ,ひでゆき
+おばやし,まさたけ
+おばやし,さとし
+おば,としろ
+おち,としあき
+おで,みちお
+おほり,かずひこ
+おほ,まさき
+おひし,まさる
+おき,せいいち
+おくぼ,しんいち
+おくぼ,ひろし
+おみち,あきひこ
+おむら,よしのり
+おおにし,ひろし
+おの,よしかず
+おらい,なおみ
+おさき,ひでとし
+おさわ,せいじ
+おさわ,しんすけ
+おさわ,いわお
+おたに,けいぞ
+おた,やすゆき
+おとも,えりこ
+おざき,しんご
+おつか,としひこ
+おつか,のりお
+おつき,こすけ
+おひゃ,もといち
+おひゃ,よしゆき
+おひゃ,まさひろ
+おかだ,まさくに
+おかだ,たけのり
+おかだ,つねあき
+おかだ,いさお
+おかはら,こういちろ
+おかもと,すすむ
+くさば,さとし
+おかむら,そういちろう
+おかむら,ただし
+おかの,りゅじ
+とびた,けんじ
+ほそかわ,なおき
+うえだ,あきお
+こせき,こうじ
+たざわ,たけし
+やまざき,としろ
+えぐち,てつや
+もちだ,まさひろ
+あきもと,くにひこ
+にし,すぐる
+いまいし,つぐお
+たかやす,よしひろ
+はた,としひろ
+ふじさわ,しんいち
+むと,ひろき
+もたい,よしお
+ただ,ひろし
+こいずみ,まさかず
+つぼくら,まさき
+ひらばやし,ひろし
+つじかわ,しゅへい
+みついし,こうじ
+やました,とよかず
+まるおか,ゆみ
+ふかお,しゅんじ
+つむら,よしかず
+まゆみ,ひろゆき
+あらかわ,すすむ
+おふち,きえい
+ささもり,あつき
+さとう,しげとし
+たかぎ,のぶよし
+たなか,まさゆき
+つぼご,あきら
+とりさわ,ひさし
+なかぐき,しんいち
+はせがわ,たかゆき
+はやし,かずよし
+ひらやま,こぞ
+ふくしま,ひろじ
+まつしま,ひろかず
+よしい,せいいち
+いしい,けんじ
+いまい,のぶたか
+なかつじ,とおる
+ほいだ,かなこ
+さわはた,としえ
+たはら,みどり
+たかはし,じゅん
+すずき,ゆたか
+よこやま,あきら
+いしかわ,まこと
+あさの,まさみつ
+かねこ,ふみひこ
+くろせ,ひろゆき
+さかきばら,けいご
+かさま,ともゆき
+すぎやま,こうじ
+すだ,しげる
+たなか,としき
+つぼい,かずひろ
+はしもと,ひでき
+ふくち,のりこ
+あらい,みゆき
+たなか,ゆきえ
+やしま,つねお
+かわまた,みつる
+すんだ,しょうじ
+みずたに,みねまさ
+やまこし,ひであき
+あまがや,けんじ
+あらき,けんじ
+いまい,よしたか
+いまざき,しゅうじ
+きむら,ようすけ
+すぎやま,あらた
+すずき,けいこ
+つる,よしまさ
+はこざき,てつや
+たきざわ,あや
+いとう,えつこ
+ますだ,ちえこ
+つばき,さとみ
+みすみ,ともこ
+やいた,けんじ
+かわつ,なおゆき
+つかだ,たけのり
+なかもと,あつや
+ふなびき,みのる
+よしざわ,のりゆき
+とま,ゆめの
+せき,ひさよ
+むらた,としはる
+かたやま,たかひさ
+きど,かつひで
+こばやし,いさお
+しのみや,だいすけ
+たなか,みのる
+はら,あきら
+もりたに,つよし
+いちのせ,かずのぶ
+ふじもと,よしのり
+うえの,ちあき
+ししど,ちかこ
+みうら,まき
+うちだ,ひとし
+どい,たけひこ
+そすみ,ふみこ
+よしだ,さなえ
+たかはし,きょこ
+やまぐち,ようこ
+ささ,まり
+はせがわ,なおき
+あつた,まさひろ
+いちかわ,しゅじ
+うの,こうじ
+おがわ,ともかず
+おだ,かずゆき
+たかさき,よしのり
+たかはし,しょへい
+ただ,かずゆき
+たなか,かつゆき
+とくなが,こうじ
+とみた,としのり
+ないとう,すすむ
+はらだ,るみこ
+ひらかわ,こういち
+ふなもと,としゆき
+どばし,まさゆき
+みうら,としお
+よしだ,なえこ
+おたけ,ゆきこ
+くらた,かおり
+くりた,よしお
+だんじょ,まさあき
+もりしま,さとみ
+よしだ,ゆきこ
+わかばやし,ひろかず
+あげまつ,まきこ
+いしぐろ,つよし
+かとう,ただし
+さいとう,ひろし
+ないとう,ひろし
+みやまえ,じゅんこ
+かどわき,りえ
+ふくもと,えみこ
+にしはら,ともこ
+おかやま,ひろたか
+おかやす,ゆき
+くろかわ,ちこ
+おきた,ひろあき
+おくみや,じゅんじ
+おくむら,やすひろ
+おのだ,さとし
+おのでら,まこと
+おの,しんじ
+おの,よじ
+おの,ゆみこ
+まつい,ひろみち
+おそえがわ,こすけ
+おざき,かずひろ
+おぜき,しんいち
+たかの,みちよ
+りょかい,としや
+さげさか,あつし
+さぎや,みきお
+さいた,あきら
+さいとう,かずなり
+さいとう,みえこ
+さいとう,とおる
+さいとう,よしひさ
+さいとう,まさかず
+さかぐち,だい
+さかい,なるみ
+しまだ,ひとし
+さかきばら,はるゆき
+さかもと,なおふみ
+さかもと,よしふみ
+さかもと,てるお
+さかり,やすなり
+さかた,のぶゆき
+さくま,ひろゆき
+さくらい,いさお
+さくらい,よしき
+さくらい,りゅひち
+さんのまる,きょひち
+さの,まさひろ
+ささべ,あきみつ
+ささき,ごろ
+ささき,ひろゆき
+ささき,つねお
+ささき,りか
+よしだ,ひであき
+さとう,ひろみ
+さとう,ひろし
+さとう,いつろ
+さとう,けんじ
+さとう,まさき
+さとう,むねひろ
+さとう,のぶひろ
+さとう,さとる
+さとう,しんじ
+さとう,たかのぶ
+さとう,たかし
+さとう,よしひろ
+さとう,ゆきお
+さとう,ゆたか
+さとう,たつろ
+さわいで,しんご
+さわい,ともひろ
+さやなぎ,たけし
+せがわ,なおと
+せいみや,ひろし
+せいやま,よしひこ
+せきかわ,かずのり
+せき,たかのり
+せき,はやと
+せんだ,やすひこ
+せんごく,よしゆき
+せの,よしと
+せしも,あきお
+せたか,まさこ
+すが,ともこ
+みなみ,ゆひち
+しばた,ちあき
+しぶや,かずや
+しぶや,まさみ
+しぶや,さとし
+しいの,ゆひち
+しかた,こういちろ
+しきぶ,まり
+しまだ,よしひろ
+しまだ,ひろし
+しまがみ,しげき
+しまもり,あきら
+しまむら,こうじ
+しまざき,たけし
+しまざき,ひろたか
+しみず,きょこ
+しみず,としあき
+しみず,こうじ
+しもだ,けい
+しもひら,りょひち
+しのはら,やすし
+しのはら,ちあき
+しのざき,ひろみち
+しのざき,つよし
+しんぽ,まさのり
+しんたに,ひろこ
+おきど,たかひろ
+しおぬま,ひろし
+しおた,まさひろ
+しおや,ひろし
+しおざわ,としあき
+しらい,まさひこ
+しらさき,ゆきのり
+しらさき,こ
+しらとり,たかあき
+しらとり,えいぞ
+しろき,りえ
+しろした,ひろし
+かしま,けいみん
+しゅ,こうたろう
+いまい,あきひろ
+そえだ,まなぶ
+そが,のぶこ
+そわ,ひろき
+すだ,かすみ
+すだ,ゆうじ
+すだ,そとひろ
+すえだ,きよみ
+すえもり,くにあき
+すえおか,まさひろ
+すがわら,いさお
+すげの,しげき
+すぎもと,ひろし
+すぎた,こひょ
+すぎやま,まさとし
+すぎやま,たかひろ
+すぎやま,ひとし
+すみとも,しげき
+すみ,よしお
+すなが,ごいち
+すざき,ひではる
+すずき,ひろこ
+すずき,いずる
+すずき,かずなり
+すずき,こういち
+すずき,まさる
+すずき,なおき
+すずき,のりよし
+すずき,さきこ
+すずき,しょひち
+すずき,しんじ
+おおにし,やすひろ
+すずき,やすお
+すずき,ゆひちろ
+すずき,みつお
+たぼ,けいいちろう
+たぶち,えいじ
+たぶさ,のぼる
+たちかわ,ゆき
+ひらき,ひでゆき
+たがい,てつや
+たがわ,てるみ
+たが,あきら
+たぐち,やすし
+たぐち,ゆきお
+たぐち,しのぶ
+たかばたけ,しんいち
+たかぎ,としや
+たかはら,ひろし
+たかはし,かずあき
+たかはし,けいじ
+たかはし,まさはる
+たかはし,のぶお
+たかはし,のりゆき
+たかはし,りょすけ
+たかはし,しん
+たかはし,たつや
+たかはし,としふみ
+たかはし,やすゆき
+たかはし,ゆひち
+たかはし,やすし
+たかいし,みほ
+こばやし,のぶたか
+たかみ,みさお
+たかむら,しん
+たかなし,みなこ
+はせがわ,よいち
+たかの,けんたろう
+たかおか,としや
+たかおか,としゆき
+たかたに,ひろし
+たかつじ,せいいち
+たかつか,よしひさ
+たかつ,はるさだ
+たかやま,まさこ
+たかやま,まさゆき
+たかやま,ひでお
+たけだ,かずしげ
+たけだ,のりひこ
+たけだ,とよみ
+たけだ,みのる
+たけもと,ともあき
+たけもと,かずひろ
+たけうち,みのる
+たけうち,しろ
+たけうち,よしのり
+たけうち,ひろゆき
+たきもと,きょこ
+たまち,たかき
+たむら,のぶゆき
+たなべ,あきら
+たなか,かつじ
+たなか,きよし
+たなか,まさみ
+たなか,しんいち
+たなか,とおる
+たなか,やすし
+たなか,こういち
+たんだ,やすのり
+たにだ,たかかず
+たにがわ,なおひと
+たにむら,のぞみ
+たに,かつし
+たしろ,たかこ
+ひらさか,ひろかず
+たわだ,ゆひち
+たわら,とおる
+てらだ,たかひろ
+てらさき,ひろし
+てらしま,としひろ
+こばやし,つかさ
+てらうち,けいこ
+わたなべ,なぎさ
+ときとも,たかゆき
+とくだ,まき
+さくらぎ,ひろふみ
+とみもと,くにひこ
+とみた,かおり
+ともみ,みきこ
+とんぐ,きみほ
+とりうみ,よしたか
+とよだ,よしなり
+とよさと,ひろぶみ
+とよしま,ゆきお
+つちだ,のぶゆき
+つちもと,えいえつ
+つちや,しんじ
+つだ,とよひさ
+つだ,ひろゆき
+つじもと,ひでこ
+つじ,たいぞ
+つじ,やすみつ
+つかごし,しんいち
+つかもと,まさのり
+つきだて,たかゆき
+もりた,のりひさ
+つるた,まさひこ
+つしま,ひでお
+つし,ひろみつ
+つつみ,まさし
+つやま,ひろすけ
+うちだ,かつひさ
+うちだ,ひろし
+うちやま,てつや
+うだ,じゅん
+うえだ,まこと
+うえだ,めぐみ
+つかもと,たつろ
+うえだ,ゆか
+ききょ,ゆきお
+うえだ,のりお
+うえぐり,ひろし
+うえはら,としかず
+うえまつ,けいじ
+さとう,ひろし
+うえの,こぞ
+うえの,しのぶ
+うえの,ともあき
+うえの,としひこ
+うえの,すみと
+うえやま,やすき
+うめだ,ゆきお
+うめかわ,ようこ
+ながた,たけし
+うらご,ゆかり
+うるしざか,さおり
+たかはし,ひろし
+うつのみや,ちえみ
+わだ,ひでお
+わだ,よしたか
+わだ,いくえ
+わかばやし,とおる
+わかばやし,ひろゆき
+わかまつ,かつや
+わかまつ,かずひこ
+わきもと,ひでたか
+わくい,よしこ
+いとい,ひろゆき
+わたべ,しげき
+わたべ,ひでき
+わたなべ,ひろのり
+わたなべ,かなう
+わたなべ,かよ
+わたなべ,のりこ
+わたなべ,とよひろ
+わたなべ,ゆきお
+わたなべ,しょひち
+わたぬき,しんぺい
+やぶした,かずひろ
+やぶた,みきえ
+やぶうち,しずお
+やじま,ゆみこ
+やくしじ,かずひこ
+やまだ,かずき
+やまだ,こうじ
+やまだ,なりと
+やまだ,しゅじ
+やまだ,よしひさ
+やまだ,かつや
+やまがみ,なおたか
+やまぐち,しゅにち
+やまぐち,ひろし
+やまかわ,ただし
+やまこし,えいいち
+やまもと,ひでとし
+やまもと,ひろゆき
+やまもと,ひろゆき
+やまもと,まさる
+やまもと,みどり
+やまもと,みつよし
+やまもと,しょへい
+やまもと,ようこ
+かわぐち,ふみひろ
+やまむろ,ゆきこ
+いわた,ひろえ
+やまおか,ひさ
+やまさき,あきのぶ
+やました,あきお
+やました,えいすけ
+やました,ひろふみ
+やました,じろ
+やました,こうじ
+やました,しん
+やました,たかし
+やました,あきひろ
+やまざき,けい
+やまざき,まさみち
+やまざき,ひろゆき
+やながわ,えいじ
+たかおか,ひろふみ
+やなせ,まさのり
+やの,まさとし
+やお,あきら
+やすだ,ひろみち
+やすかわ,たけし
+よがい,かずひろ
+よこがわ,ひでくに
+よこさわ,ひろし
+よこた,つとむ
+よこた,としあき
+よこうち,あきこ
+なかやま,ひろゆき
+よこやま,かずひで
+よこやま,かつゆき
+よねはら,あきら
+よねむら,ひろゆき
+よしだ,かおる
+みやむら,こうじ
+よしだ,まさひろ
+よしだ,ひかる
+なか,りょひち
+よしむら,ともゆき
+よしむら,えりこ
+ぬまお,としふみ
+よしざき,ひとみ
+なかむら,こういち
+ゆあさ,せいじ
+ゆげ,まさゆき
+ゆかわ,みなこ
+まつだ,やすし
+あべ,つとむ
+はせがわ,あつし
+はしもと,はるひこ
+ひらつか,まさお
+ほしかわ,としゆき
+ほそや,ただし
+いしはら,まさとし
+いわき,つとむ
+かねだ,きみあき
+きむら,まさかつ
+こんの,よしひろ
+まつだ,よひち
+みやした,ひろみ
+さかもと,みねお
+のむら,えいじ
+おばやし,けんじ
+さいとう,りょた
+ささがわ,たかひろ
+さとう,よしたか
+しが,よしつぐ
+しのはら,やすひろ
+しょ,かつまさ
+たけがわ,ひとし
+たつみ,たもつ
+とみえ,みのる
+わたなべ,しょじ
+やまだ,たかし
+やまだ,たちはる
+やまもと,こうじ
+やまざき,たけし
+こまつざき,まこと
+ふちだ,よしひさ
+たなか,しげとも
+はやし,まり
+ながた,しんいち
+ばば,えつこ
+あかま,ゆきえ
+かざま,ゆうこ
+すずき,やよい
+もり,まさみつ
+いけだ,まさし
+わたなべ,めぐみ
+みま,みえこ
+あんどう,ゆたか
+まえぞの,のりひこ
+おたか,まもる
+はやし,ゆういち
+うえの,とみひろ
+つのだ,たけし
+すどう,まさお
+さかもと,ちあき
+たなか,まさひこ
+ことうだ,かずゆき
+かるべ,さほり
+さいとう,せいいち
+ひらの,まこと
+さとう,たかし
+なかやま,かずしげ
+のだ,じゅい-ちぇん
+ま,ひろあき
+しながわ,つよし
+ながやす,かつと
+あおき,ふみお
+なかた,ともひろ
+みくりや,みつひろ
+まるやま,こういち
+えちぜん,まさひろ
+なかにし,かずたか
+はぎお,けいいち
+たむら,たかとし
+たぐち,みつあき
+おざわ,もりしげ
+やおいた,ゆきのり
+あさの,ふみひろ
+くさの,てるよし
+はまだ,ひろこ
+いりやま,ひろまさ
+むらた,けんいち
+あさの,ゆりこ
+たかの,やすひろ
+やまぐち,ちから
+むらかみ,こうじ
+たなか,こうじ
+たかおか,はやと
+すずき,てるゆき
+みねぎし,ひでとし
+あべ,ひさし
+あべ,しょひち
+あべ,ともひこ
+あべ,まさあき
+あがつま,よしとし
+あいざわ,おさむ
+あかいけ,としひろ
+あきもと,のりやす
+あきたや,てるひろ
+あきやま,まさじ
+あくつ,はなこ
+あまの,なおや
+あまの,よじ
+あまの,けんいち
+あめみや,あきとし
+あんどう,のりひろ
+あんどう,かつじ
+あんざい,じゅにち
+あおき,みさほ
+あおき,なおや
+あおき,のりあき
+あらい,みずほ
+あらき,しゅんじ
+あらき,ひでき
+あらや,あきら
+ありよし,たかし
+あさひな,じゅんこ
+あさい,よしのぶ
+あさみ,ゆきお
+あさつけ,としゆき
+あそ,しげき
+あずま,ただかつ
+あずま,あつのり
+ばば,ふみえ
+ばば,かずみ
+かが,まさひろ
+ばば,てんせい
+ばん,ゆうじ
+びるかわ,りつこ
+ぼ,たかゆき
+だいご,さだはる
+だいごく,はるひと
+どばし,よひち
+えびさわ,しげみつ
+えはら,よしたか
+えんにゅ,とものぶ
+ふちがみ,よひち
+ふじばやし,なりと
+ふじえだ,ひろゆき
+ふじい,かずゆき
+ふじい,くにかず
+ふじい,まこと
+ふじい,さとこ
+ふじい,すみこ
+さかもと,ともこ
+きただ,よしき
+ふじい,ゆすけ
+ふじい,ゆか
+ふじい,れいこ
+ふじかわ,ふくお
+ふじもり,しゅんすけ
+ふじもと,じゅにち
+ふじの,とおる
+ふじさわ,ひろし
+ふじた,ひろとし
+ふじた,さとこ
+ふじた,りゅうたろう
+くすもと,ひろし
+ふじわら,りょひち
+ふじわら,せいご
+ふじわら,しんじ
+ふじわら,よしのり
+ふじわら,まさや
+ふかぼり,ひであき
+ふかみ,しゅへい
+ふかみ,えいいち
+ふくだ,かおる
+ふくだ,しんいち
+ふくだ,たつや
+ふくだ,かずひこ
+ふくい,きょこ
+ふくい,ひろし
+ふくなが,せいじ
+ふくなが,ひろたか
+ふくおか,としや
+ふくおか,ひろし
+ふくし,けいじ
+ふくしま,ひろふみ
+ふくとめ,ひろし
+ふくやま,けい
+ふなばし,まこと
+ふるの,ひろむ
+ふるや,としき
+ふるや,ひでお
+ふるやま,さなえ
+ふたば,ひさこ
+あなみ,ゆうこ
+ふたみ,さとみ
+ふたむら,じゅん
+がど,ゆか
+ご,のりちか
+ごだ,ともじ
+ごか,けんじ
+ごと,まさやす
+ごと,みのる
+はぶ,いさお
+はが,やすのり
+はぎ,としゆき
+はま,せいじ
+はまだ,かつひと
+はまの,とおる
+はまの,あきら
+はましま,としゆき
+はましま,ひろゆき
+はない,みのる
+はら,ゆみこ
+おた,ひさのり
+はらだ,ふじお
+はらこ,ともこ
+はせ,ひさし
+はせがわ,りょこ
+はせがわ,しん
+はしもと,たつや
+はしもと,としたか
+はしもと,しのぶ
+はしずめ,しょじ
+はしずめ,あつし
+はた,けんじ
+はた,ただひろ
+はた,まさる
+はたの,おさむ
+はたの,たつや
+はたの,ゆみ
+つだ,さだみつ
+はやかわ,てつお
+はやの,たつき
+はやし,こういち
+はやし,なおき
+はやし,たつひろ
+はやし,ゆたか
+はやし,ひろし
+はやしたに,しょじ
+ひがしの,さとし
+ひぐち,せつお
+ひぐち,あけみ
+ひめの,まさき
+ひらばやし,なおき
+ひらい,しんいち
+ひらかわ,よしひこ
+ひらき,たけひこ
+ひらの,きょこ
+あおき,やすゆき
+ひらおか,よしひろ
+ひらさか,ひろこ
+ひらやま,よしのり
+ひろはた,かなこ
+まえかわ,さおり
+ひろせ,すすむ
+ひろせ,のぶゆき
+ひろた,ひろゆき
+ひろわたり,としろ
+ひろみつ,あきら
+ひうら,きみたけ
+ほぼ,かずひこ
+ほくら,しんいちろう
+ほんだ,やすし
+ほんだ,ゆうこ
+すずき,ゆひち
+ほんご,ひろし
+ほりぐち,ひろし
+ほりい,せいりょ
+ほりかわ,みちこ
+ほしの,まさや
+ほそかわ,ひろゆき
+ほそみ,よしのり
+ほった,ゆひちろ
+いぶか,やすひろ
+いぶき,まなぶ
+いちかわ,ひろよし
+いちむら,まさのぶ
+いだ,たかひろ
+いだ,ひろし
+いで,まもる
+いで,たいすけ
+いで,まこと
+いでた,いさお
+いがらし,ようこ
+いがらし,ひでき
+いげ,かずたか
+いいだ,きいちろう
+いいだ,きにち
+いいだ,てるお
+いいだ,やすひろ
+いいはら,ひでゆき
+いいじま,ひろあき
+いけだ,かずあき
+いけだ,のぶみち
+いこま,ひでゆき
+いまい,ひろし
+いまい,きみえ
+たなか,かなめ
+いまむら,ちはる
+いまなり,やすひで
+いまぜき,きよたか
+いなだ,なおゆき
+いなます,たかし
+いのうえ,けいこ
+いで,ゆきや
+いれい,さつき
+いしはら,しょぞ
+いしはら,たかゆき
+いしはら,たまみ
+いしはら,よしひさ
+いしはら,ひろし
+いしい,たけし
+いしい,かつや
+いしかわ,まさあき
+いしかわ,のぶまさ
+いしむら,きよひと
+いしわたり,まこと
+いしざき,きょこ
+いしずか,こういち
+いその,たつや
+いそやま,じゅんじ
+いすだ,まゆみ
+いたくら,ひろし
+いとう,ひろゆき
+いとう,まさひろ
+いとう,まさる
+いとう,みつみ
+まつい,みゆき
+いとう,なおき
+いとう,すすむ
+いとう,じゅにち
+いわかみ,たかゆき
+いわさ,ともゆき
+いわさき,ゆうじ
+いわさき,なおふみ
+いわした,ひろゆき
+いずみ,ますみ
+いとう,のりよし
+いずみ,なおとく
+いずみさわ,みつとし
+じんの,みつのぶ
+じょみど,しげお
+かが,まさひろ
+かがみ,まさひろ
+かげやま,ひろふみ
+かい,よしまさ
+かいだ,はるお
+かいず,たけひこ
+かじた,たけひこ
+かけひ,まさちか
+かきもと,まさひこ
+かきぬま,つとむ
+かきぬま,としみ
+かまた,ゆうじ
+かまた,なおゆき
+かみぐち,みちたか
+かみむら,とおる
+かねこ,あつし
+かなまる,とへい
+かなざわ,せいじ
+かんべ,やすし
+かんだ,りゅじ
+かねはら,あけみ
+ごと,ふさお
+かねこ,ひさなが
+かねこ,ひとし
+かねこ,こうじ
+かねこ,たけひと
+かねこ,じょじ
+かねみつ,あけみ
+かねむら,ともひろ
+かねた,さちこ
+たなか,しずか
+よねもち,としえ
+かんの,けんいち
+かさい,みえこ
+かしま,よしお
+たかぎ,まさのり
+きたむら,じょじ
+かたおか,まもる
+かたおか,たかひろ
+かたおか,こぞ
+かたせ,けん
+かたやま,しげかず
+かたやま,たけし
+かたやま,やすなお
+かたやま,あきら
+かとう,ひでとし
+かとう,ひろふみ
+かとう,ひろみつ
+かとう,かずお
+かとう,こういち
+かとう,まさよし
+かとう,なおし
+かとう,やすまさ
+かとう,ゆかり
+そめや,こうじろ
+かわばた,ひでき
+かわぐち,まさみ
+かわぐち,やすゆき
+たまがわ,かずひこ
+かわはら,しげゆき
+かわはら,やすなり
+かわひと,みちこ
+かわい,なおゆき
+かわい,ゆうこ
+はぎわら,きょこ
+なるけ,やすひろ
+かわさき,ひろあき
+かわしま,しんいち
+かわしま,つとむ
+かわた,ひろゆき
+かやま,としひろ
+かざまつり,よしみ
+きど,ゆうじ
+きがみ,つとむ
+きごし,じゅんこ
+もりさわ,まこと
+きくち,まさいち
+きくち,しんや
+きくち,こういちろ
+きくら,ひさし
+きむら,じゅんじ
+きむら,かつひさ
+きむら,のりひさ
+きむら,のりこ
+きむら,しげき
+きむら,たかし
+きむら,よしひろ
+きむら,ゆかり
+きむら,ゆきこ
+きむら,ゆたか
+きむら,ひろかず
+きのした,ひろこ
+きのした,たかふみ
+きのした,まなぶ
+きしべ,ひさや
+きしだ,きよし
+きしもと,みつぐ
+きしもと,きいち
+きた,のりお
+きたあき,かつみ
+きただ,つねお
+きたがわ,ひろき
+きたほり,あけみ
+きたじま,ともひさ
+きたむら,かつのり
+こばやし,けいいち
+こばやし,まさき
+こばやし,まさゆき
+こばやし,けんいち
+しらい,のりこ
+こばやし,しんきち
+こばやし,たいこ
+こばやし,としひこ
+こばやし,やすひろ
+こばやし,ひろき
+こだま,よしのり
+こぎた,たけし
+こぐれ,たつや
+こはし,たかみち
+こご,ひろゆき
+この,ひろゆき
+この,としゆき
+この,ひろゆき
+このす,たつや
+こいで,ひろし
+こまつばら,しげよし
+こみや,かずひろ
+こみやま,ちふゆ
+こもだ,やすゆき
+こんど,だいすけ
+こんど,ひろゆき
+こんど,しんいち
+こんど,としや
+こんど,としき
+こにし,なおふみ
+こさ,ひろゆき
+こすぎ,けいいち
+こたき,よしかず
+こたに,のりしげ
+こやま,たかひで
+こやま,よ
+こやま,きんや
+こざわ,やすひろ
+こずる,ひろかず
+くぼた,こうじ
+くぼた,ひでとし
+くぼや,おさむ
+くどう,よしひろ
+せのお,たかし
+くまがい,かずまさ
+くらどみ,まさと
+くらもと,ひとし
+くらとみ,かつや
+くりの,かずとし
+くりや,あきのり
+くろだ,まさと
+くろかわ,けんいちろ
+くさかわ,まさゆき
+くさの,けいいち
+くわばら,みき
+くわの,ひろみ
+よしだ,かつひこ
+くずの,まさのり
+まちだ,よしあき
+まえだ,ひろし
+まえかわ,じゅんこ
+おたに,ともこ
+まき,じゅん
+まきの,ひとし
+まるおか,かずのり
+まるやま,きよふみ
+まるやま,のりゆき
+まるやま,けいすけ
+まさい,やすひろ
+まさき,ゆひち
+ませ,ひろし
+ますだ,みつあき
+まとば,のぶみつ
+まとば,さとし
+まつばら,としひろ
+まつい,やすひろ
+まつい,さとる
+まつかわ,ひろかず
+まつもり,ひろし
+まつもと,けんいち
+まつもと,みねかず
+まつもと,ただしげ
+まつもと,たくや
+まつもと,としお
+まつもと,やすひろ
+まつもと,じゅんこう
+ぇえ,のりひろ
+まつお,みのる
+まつおか,しんご
+まつしま,ひでよ
+なかにわ,たかし
+まつやま,ゆたか
+まつやま,たかとし
+まつざわ,くにひこ
+みむら,たかあき
+みにゅ,ひさし
+みた,やすひろ
+みた,せいいち
+みたむら,しょぞ
+みつだ,たかし
+みつだ,まさよし
+みつまた,しげる
+みつおか,じゅんこ
+みうら,たけし
+みうら,とおる
+みわた,さだお
+ながせ,えいいち
+みやけ,かずよし
+みやけ,たけとし
+みやま,たかひろ
+みやもと,としろ
+みやもと,じゅん
+みやなが,じゅんじ
+みやざき,ひでよ
+みずば,しゅにち
+みずぬま,こういち
+みずさき,まなぶ
+みずた,ひろかず
+もちずき,じゅん
+もちずき,おさむ
+もちずき,じゅにち
+もぎ,よしのり
+ももせ,あやこ
+ひらの,きょこ
+もり,みどり
+もり,なおき
+もり,たかし
+もり,あきお
+もりかわ,ゆかり
+やぎした,せいじ
+もりもと,てつお
+もりもと,ひとみ
+まつだ,まさかつ
+もりおか,もとふみ
+もりした,ひろし
+もりた,かつみ
+もりた,みわ
+かねこ,のりあき
+もりた,しゅひち
+もりわき,あつき
+もろどみ,ちから
+もとはし,ひろし
+もとじま,つよし
+もとき,あきひで
+もり,ゆうき
+うすい,まさゆき
+むらかみ,まさゆき
+むらかみ,しげお
+むらかみ,しんじ
+むらかみ,いさお
+むらた,こういちろ
+むらた,こうじ
+むらやま,けんじ
+むと,あきひこ
+なだぐち,りえ
+ながはし,くにひろ
+ながい,きよえい
+ながむら,かずあき
+ながお,まさゆき
+ながしま,のぶゆき
+ながしま,よひち
+ながた,よしひで
+ながた,てつお
+ながつか,けいこ
+ながやま,みわ
+うちだ,かおる
+うちぞの,たけお
+なかだ,だいせい
+なかがわ,ひでし
+なかがわ,ひとし
+なかがわ,よしお
+なかがわ,きよひこ
+なかじま,さとし
+なかじま,よしひろ
+なかじま,すみと
+なかみち,いさお
+なかもと,まさひろ
+なかもと,まこと
+なかむら,まさみ
+なかむら,みちのり
+なかむら,みよこ
+あきやま,なおり
+なかむら,のぼる
+なかむら,のりゆき
+なかむら,さなえ
+なかむら,たかひで
+なかむら,たかし
+なかむら,としや
+なかむら,やすひろ
+なかむら,ゆきひろ
+なかむら,ちはる
+なかの,なおゆき
+なかの,こういちろ
+なかしま,ひろあき
+なかつぼ,きょこ
+なかつか,りゅひち
+なかやま,やすとも
+なかやま,ひろし
+なかざわ,ひろし
+なおつか,ゆみこ
+ならはら,ひろし
+なるしま,たかじ
+なとり,ひでと
+にいじま,つとむ
+にいや,たかこ
+にし,ゆきこ
+にし,よしひこ
+にしぶ,せいじ
+にしだ,ゆひち
+にしはら,ひろみ
+にしかわ,さとし
+たなか,たかし
+にしかわ,けいじ
+にしもと,のりお
+にしもと,まさひこ
+にしむら,てつろ
+にしむら,まこと
+にしの,まさひこ
+にしの,おさむ
+にしおか,あきこ
+にしざき,さとし
+にしざわ,まさこ
+にわ,ひろたか
+のぶ,ゆか
+のがいと,りか
+のぐち,としひさ
+のじ,まさひろ
+のじま,あやこ
+のむら,たつや
+のむら,たかあき
+のなか,まさこ
+なかじま,いさお
+のざき,まさと
+のざき,ひであき
+ぬわ,なおこ
+おち,たかし
+おちあい,こぞ
+おだ,けんじ
+おがさわら,しんや
+おがさわら,まさのぶ
+おがた,けんじ
+おがわ,だいすけ
+おぎはら,もりよし
+おはら,みのる
+おば,のぶゆき
+おば,ようこ
+まつだ,ひろゆき
+おへ,のりお
+おがき,あきこ
+しょじま,しんいち
+おはま,ゆきのり
+おはし,ちふゆ
+おぎの,みきお
+おかわ,よしゆき
+おかわら,たけし
+おき,たかし
+ねもと,としゆき
+おくぼ,あつし
+おくら,よしゆき
+おま,とみお
+おみか,かずはる
+おもり,けんいち
+おもり,ひろき
+わたなべ,かつみ
+おおにし,ゆみこ
+おおにし,えいじ
+おの,しげゆき
+おの,ゆうじ
+おぬま,かずひろ
+おしま,としひで
+おしま,ひろゆき
+おた,けいこ
+おた,しげき
+おた,こういち
+おたか,まなぶ
+おたけ,まさひこ
+おたけ,じゅん
+おたに,のぶゆき
+おつぼ,ともひこ
+おつか,ともひさ
+おつか,てつし
+おつき,ひでみ
+さこだ,ひろあき
+おわ,かずあき
+おひゃ,みつる
+おいかわ,まさひで
+おかべ,さなえ
+こばやし,じゅんこ
+おかだ,まさお
+おかだ,たかゆき
+おかだ,まさし
+おかもと,まさゆき
+おかもと,もとい
+めら,かおる
+おかの,としあき
+おかざき,さえこ
+おきた,ひでふみ
+おくだ,くにお
+おくぬき,あつゆき
+おんだ,てつお
+おんだ,としひこ
+うつみ,いずみ
+おの,しゅひち
+おの,さとし
+かわもと,じゅんせい
+かど,まさき
+おしま,まなぶ
+おすみ,そ
+おた,やすみつ
+おりい,てつじ
+おりた,てつや
+おさか,ひであき
+おそのい,ひでのぶ
+おざさ,ひろゆき
+おざわ,かずのり
+おざわ,かずゆき
+おざわ,さとこ
+しらとり,えいいちろう
+おぞね,まさかず
+さの,ちずこ
+さいとう,ひらたか
+さいとう,まさひろ
+さいとう,たかし
+さいとう,ゆきひろ
+さいとう,ひでゆき
+さかい,くにひろ
+さかい,しろ
+さかい,あきら
+さかきばら,かずゆき
+さかもと,しゅんじ
+さかもと,しゅひち
+さかもと,とよひで
+さかもと,ゆきお
+さかもと,ゆきのぶ
+さかむら,たつじ
+さかね,なおのり
+さかた,やすひろ
+さかた,じゅん
+あくたがわ,あきお
+さくらい,ひろひさ
+さくらい,まさみ
+まつばら,なおき
+さくらい,みえこ
+さなぎ,けいじ
+さの,ちかこ
+おがき,ひろみ
+ささき,けんじ
+ささき,まこと
+ささき,みつあき
+ささき,れいこ
+ささき,よしお
+ささき,ともこ
+さたけ,じゅんぺい
+こだま,かおる
+さとう,けんじ
+さとう,こうじ
+さとう,まさひこ
+さとう,まさひろ
+さとう,まさひろ
+さとう,まさと
+さとう,るりこ
+さとう,りょこ
+さとう,さとる
+さとう,よしき
+さとう,ゆきこ
+さかい,ちひろ
+さわだ,ふみひろ
+せがわ,とおる
+せいの,ひでゆき
+せき,いくふみ
+せきど,ながまさ
+せきの,ともこ
+せお,たかゆき
+せりかわ,まさひろ
+しばさき,とおる
+しが,ふじお
+しげる,ひではる
+しまだ,まもる
+しまだ,まゆみ
+しまだ,しろ
+しまだ,けんじ
+しまもと,ひでのり
+しまむら,けいいち
+しまの,あきひろ
+しみず,ひでき
+しみず,けんじ
+しみず,こうたろう
+しみず,さとる
+しみず,しょじ
+しみず,つとむ
+しみず,しんじ
+しもだ,のりひろ
+しもがき,たかゆき
+しもはた,おさむ
+しもむら,ひろのり
+しもおか,かなみ
+しむら,よしこ
+やえがし,あつし
+しのざき,みつえ
+はぎわら,まこと
+しおだ,かおる
+しおた,みつやす
+しおざわ,たつや
+しらい,たかし
+しらいし,たかあき
+しょだ,としひろ
+しゅ,ただし
+そめや,つとむ
+すだ,こうじろ
+すえ,さとる
+すえた,みずき
+しぶいち,ひろゆき
+すがの,けんや
+すがわら,ひろゆき
+すぎえ,のぶひろ
+すぎまさ,としあき
+すぎもり,しょひち
+すぎもと,あつこ
+すぎさき,あつし
+すぎうら,ひでお
+すぎうら,まさひと
+みずおち,ひさよし
+すぎやま,けんいち
+すぎやま,たけし
+すぎやま,ともひさ
+すぎやま,けんじ
+すみ,ともこ
+たべい,まさし
+すなみ,くみこ
+すさわ,ひでお
+すずき,ひでお
+すずき,ひでゆき
+すずき,ひろゆき
+すずき,ひさたか
+すずき,かつとし
+すずき,けいた
+すずき,のぶゆき
+すずき,とおる
+すずき,ようこ
+すずき,ゆきお
+すずき,じゅにち
+たべ,たかし
+たちはら,まさや
+たげ,まなぶ
+たぐち,けん
+なかた,たけし
+たぐち,まさもと
+たじま,よしのり
+たじま,ひろこ
+たかだ,おさむ
+たかぎわ,あきこ
+たかはし,えいじ
+たかはし,ひでゆき
+たかはし,ひろあき
+たかはし,かなこ
+たかくら,かなこ
+たかくら,かずよし
+たかはし,けんた
+たかはし,こうじ
+たかはし,まさのり
+たかはし,なりまさ
+たかはし,りゅひちろ
+たかはし,たかし
+たかはし,としき
+たかはし,わたる
+たかはし,わたる
+たかはし,しん
+たかくら,あきら
+たかみや,まこと
+たかさご,こういち
+たかさき,みつひろ
+たかせ,かずよし
+たかつか,ひろやす
+たかやなぎ,かずのり
+たかやなぎ,みつとし
+たけち,こうじ
+たけだ,やすまさ
+たけだ,やひろ
+たけがみ,あきふみ
+たけひさ,おさむ
+たけい,ゆうじ
+たけい,ひろゆき
+たけかわ,つかさ
+たけむら,しんいち
+たけなか,ゆうこ
+いまい,まこと
+たけさこ,ひでき
+たけしま,つとむ
+たけうち,たまみ
+ひだか,くにひこ
+たきもと,まさと
+たきざわ,まさひと
+たまい,しんいち
+たむら,しげる
+たなべ,やえきち
+たなべ,ひであき
+たなか,ひろし
+たなか,いつひと
+たなか,かつみ
+たなか,まこと
+たなか,のぶお
+たなか,ただゆき
+たなか,たけひこ
+たなか,としひで
+たなか,としひろ
+たなか,よひち
+たなか,よひち
+さの,かつしろ
+たに,ひろとし
+たにむら,とおる
+たにやま,みどり
+たさか,きくみ
+かとう,まさる
+てらだ,しょひち
+てらまえ,えいじ
+てらにし,よへい
+てらにし,あきと
+てらぞの,いさむ
+とびた,みどり
+いずみさわ,よしなり
+とだ,やすじ
+とぐち,たかし
+とまつ,ありひと
+あきむら,しんご
+ときたけ,しゅひち
+とくます,ひろゆき
+とくたけ,たかし
+とまき,ひろふみ
+とみい,えいいちろう
+とみた,よしふみ
+とみやま,だいすけ
+ともだ,やすまさ
+ともなが,えいじ
+とさか,よしゆき
+とっとり,まき
+まつお,のぶゆき
+とよだ,ひろみつ
+つぼい,かおり
+かとう,まさみ
+つちや,ひでき
+つだ,さとし
+つじ,たけし
+つじ,ともあき
+つじの,のぶゆき
+つかこし,たけし
+つかもと,あきひろ
+つかざき,あきひこ
+つきあし,かずや
+つきざわ,まさひろ
+つみた,きみお
+えんど,まさと
+つと,くみこ
+つむら,まさのり
+つねかわ,なおと
+つるおか,あきひこ
+つるた,よしゆき
+つるた,よしゆき
+つるた,あきら
+つつみ,としひろ
+つつみ,かずし
+つわこ,しんご
+つやま,まさひこ
+うちだ,よひち
+うちだ,よすけ
+うちだ,あきら
+うちやま,しげひろ
+うちやま,ふみひろ
+うど,あきら
+うえだ,こうじ
+うえだ,えいいち
+まつむら,ただひこ
+うえだ,としひろ
+うえだ,よしお
+うえまつ,そのすけ
+うえの,よしひこ
+うえの,のりこ
+いしだ,もとゆき
+うめだ,たつゆき
+うめがき,しゅんや
+うの,かつみ
+うらはし,ゆか
+しみず,きよふさ
+えがしら,しょこ
+すえかね,まさひろ
+うつ,せつこ
+うつはし,しんご
+うつみ,ひでお
+わだ,きよみ
+わだ,はるき
+きたわき,よすけ
+わしず,だいじろ
+わたべ,あけみ
+わたなべ,あきお
+わたなべ,ひでお
+わたなべ,ひろみ
+わたなべ,じゅんじ
+わたなべ,かずひこ
+わたなべ,こせい
+わたなべ,くにこ
+わたなべ,まもる
+わたなべ,まりこ
+わたなべ,さとし
+わたなべ,ただし
+わたなべ,てるゆき
+わたなべ,とおる
+わたなべ,としひろ
+わたなべ,けいいち
+えはら,つねふみ
+わたなべ,たつみ
+わたらい,せいき
+やえがし,はるなが
+やはぎ,ふみよ
+やまだ,ひろし
+やまだ,まさや
+やまだ,さとみ
+こんど,しんいち
+やまだ,たかし
+やまだ,つとむ
+やまだ,よしあき
+やまだ,つねお
+えのもと,まさよ
+さいとう,えいじ
+やまぐち,ひろこ
+ふじた,ひろゆき
+やまぐち,かつし
+やまぐち,ゆうじろ
+えざき,やすお
+やまぐち,あつし
+やまもと,ひであき
+やまもと,じろ
+やまもと,おさむ
+やまもと,しのぶ
+やまもと,しゅひち
+やまもと,たけし
+やまもと,よじ
+やまもと,としや
+やまなか,あつし
+やまね,おさむ
+やまのくち,みき
+やまさき,あきひろ
+やました,ひろし
+やました,ひろゆき
+やました,きんや
+やました,まさとし
+やました,さとこ
+しさい,やすひろ
+やました,ひとし
+やまうち,さとる
+やまうち,さとし
+やまざき,とおる
+やまざき,やすし
+やまざき,たけし
+やなぎもと,こういち
+やの,こき
+やの,としゆき
+やしろ,まさる
+やざわ,ひろし
+よだ,みちる
+よぎ,さとし
+よこい,たかし
+よこやま,まさかず
+よねざき,ひろき
+よしだ,けいいちろう
+よしだ,こき
+よしだ,しげみ
+よしだ,まさゆき
+えびな,としひろ
+よしだ,としゆき
+よしだ,まこと
+よしいけ,ひでお
+よしむら,ただし
+よしむら,むつみ
+よしの,たけし
+よしお,りょじ
+よしたけ,ひろき
+ゆあさ,やすし
+おわだ,まこと
+えぐち,しゅんすけ
+おざわ,ふみゆき
+さとう,こうじ
+しんたに,けんしょ
+すぎたに,ふとし
+たかはし,じゅん
+たきざわ,りえこ
+みよだ,かずよし
+やまだ,じゅんこ
+やはぎ,せいいち
+きや,ただし
+みせき,たつお
+えのもと,やすのり
+さくらだ,みつゆき
+ささき,さとる
+ばば,しんいち
+あぼ,のぼる
+あだち,しげよし
+あかさか,てつじ
+あまさき,しょじ
+あおき,さとる
+あぜがみ,かつゆき
+えどの,みつあき
+どい,たけみ
+ふじい,よしひこ
+ふじい,いずみ
+ふじもと,なおき
+ふじもと,けんじ
+ふくはら,きよし
+ふくおか,さとし
+ふくしま,ただし
+ふさやま,のりかず
+ごと,けんたろう
+はまべ,まさき
+はなだ,のぶゆき
+はしもと,たけお
+ひび,かおり
+ひらつか,こへい
+いかり,まさひろ
+いくた,ひでと
+いまい,かんじ
+いしはら,しげかず
+いそだ,ふみひろ
+いそざき,かずお
+じんぐ,ともひと
+じょない,さゆり
+じょにし,ひろき
+かじはら,たけし
+かまた,のぶゆき
+かめい,てつや
+かみやま,けんいち
+かとう,こういち
+かとう,よしひろ
+えみ,えいじ
+かわもり,けいすけ
+きむら,よしひろ
+きむら,さかえ
+きしべ,かずゆき
+きしかわ,たかゆき
+きたがわ,あきひこ
+きたなか,てつし
+こばやし,やすひろ
+こばやし,こういち
+こいけ,よしたか
+こいずみ,よしあき
+こじま,みのる
+こにし,おさみ
+こやま,よしあき
+くどう,たつや
+くまさき,あきら
+くろだ,てつや
+くさか,たつじ
+えんど,としゆき
+まえかわ,ひであき
+まるた,まもる
+まつした,よしひろ
+みくに,かずお
+えんど,くにひこ
+みね,かずよし
+みうら,しんいち
+みぞぐち,めぐみ
+ほんじょ,まさゆき
+みずしま,げん
+えだ,とた
+ながお,かずや
+なかむら,たかひさ
+なかにし,きよかず
+なかの,たくや
+なかお,かずや
+ねもと,よしあき
+にしかわ,ひろかず
+にしわき,しんご
+のだ,けんじ
+のぐち,まさひろ
+おちあい,ひでき
+おはし,しんご
+おの,とみお
+えみ,よしのり
+おくむら,やすたか
+おくの,しゅひち
+えんど,しょじ
+おおにし,よしあき
+おざき,しげる
+さえき,たかし
+さがわ,あつし
+さくま,とおる
+さとう,ゆうじ
+さとう,ようこ
+さわ,かつや
+せがわ,まさゆき
+せき,こうじ
+せんだ,けんいち
+しぶや,たかこ
+しみず,みとし
+しんでん,こうじ
+しおた,やすよし
+しゅくたに,たくじ
+すやま,ひでお
+すずむら,まさひろ
+たかおか,ひでみつ
+たけうち,よしただ
+たけうち,あきら
+たまい,くにはる
+たん,のりゆき
+たなか,のぼる
+えと,まさほ
+たにひら,しげあき
+たにやま,みつひろ
+たおか,きよたか
+たしま,こうじ
+たざわ,ゆきお
+ときた,けんじ
+とみた,しゅひち
+とみた,よしはる
+とみた,あきよし
+つじべ,ひとし
+つじかわ,としお
+えんど,ひろこ
+みやざき,いさお
+わだ,よしゆき
+わたなべ,かつのり
+やまだ,かずし
+やまだ,まさひろ
+やまだ,かずひろ
+やまぐち,けんご
+やまもと,てるあき
+やまおか,かずひろ
+やました,きくお
+やました,しげき
+やまぞえ,まさゆき
+やお,みきお
+やすだ,かつよし
+よつたに,しげき
+よしはら,けんじ
+よこうら,あきお
+ひらせ,ひろこ
+まつい,けんいち
+こばやし,じゅんこ
+すずき,まきこ
+かとう,よしたか
+くにとも,ひろみ
+えんど,なおや
+いとう,ただし
+おかざき,さやか
+ひろはし,のりお
+さかき,たかこ
+みき,かつのり
+くまき,のぶお
+たやま,かずひさ
+おわき,ひろまさ
+みょど,やすはる
+かとう,さとし
+ばば,よしお
+かねこ,ひでお
+こぐれ,まさお
+たけだ,しげお
+いちむら,いちたろう
+いとう,かずひさ
+うえはま,たけし
+なかい,としくに
+こばやし,のぶゆき
+しまだ,ご
+めぐろ,さとる
+やまや,ひでお
+ふじた,やすお
+まとば,ようこ
+いとう,ときこ
+なかい,まさお
+おかだ,てつお
+のもと,きはち
+ながしま,まさと
+よねかわ,ひろよし
+わたなべ,みきお
+むらまつ,はるひこ
+きたに,ひろあき
+みかみ,よしのり
+あだち,まもる
+いのうえ,のぼる
+おかだ,みのる
+かわしま,こうじ
+せき,まさお
+たかはし,まなお
+わたなべ,しげる
+くりはら,ひろし
+わたなべ,みつぐ
+ふじかた,ちひろ
+よしと,もとかず
+かわせ,しずお
+たなか,まさひと
+いまい,としき
+こむろ,よじ
+まえだ,たもつ
+こいけ,とおる
+わたなべ,ともちか
+こんど,ゆひちろ
+いしい,ひろし
+みしま,みつお
+こばやし,まさあき
+やました,たかあき
+たなか,てつお
+やまだ,あきら
+かみや,よしじ
+やまもと,まさる
+しおざき,ちはる
+なかむら,けいすけ
+たけもと,みつお
+だけやま,のりお
+あらかわ,おさむ
+よこた,まこと
+なかむら,けんじ
+あらかわ,ゆきとし
+おみち,えいご
+まつき,おさむ
+くしびき,みちあき
+にった,ひさとし
+つぼうち,ひさや
+さいとう,たかし
+たけむら,よしかず
+たなべ,けんじ
+まえだ,りょぞ
+すがはら,まさとし
+かねこ,みちやす
+やまうち,りきお
+かみざわ,とおる
+こが,ちかし
+つるさき,さちお
+ひがし,ひろゆき
+いしだ,ぜんじ
+なかがわ,まさゆき
+てらしま,かずひこ
+きたむら,としお
+はっとり,まこと
+ささき,えいき
+ほか,すけひで
+のむら,てるひこ
+はやの,みきお
+あんざい,ひろゆき
+ふるの,としひろ
+にしわき,かずお
+はせがわ,もとくに
+いわた,てつお
+とだ,しょじ
+なかむら,まさひこ
+ふるいし,ひろふみ
+なかむら,とくひろ
+なかがわ,すなお
+なかま,ふみひろ
+すがわら,やすひろ
+まつもと,はるお
+はしもと,ひさはる
+なかつ,しゅんじ
+さとうり,ひでみ
+いきた,よしひろ
+やまだ,けんたろう
+きくち,てるお
+すと,かずお
+しばた,しんいち
+ないとう,きよひで
+もり,くに
+いとい,まさお
+いとう,たかゆき
+まつざき,ひろあき
+うえの,まさと
+かたおか,ますみ
+ばんど,ふじお
+さいとう,ひでお
+いわい,たつや
+しもやま,ますこ
+あかまる,つとむ
+ごと,ようたろう
+まつだ,やすかず
+ねがみ,あきら
+やました,ゆきのぶ
+よねやま,しょへつ
+いしやま,たけし
+あべかわ,まさみ
+いまむら,ひさのり
+いわなが,こうじ
+うえだ,かずこ
+ふじかわ,あきら
+たむら,けんじ
+かしい,まさのり
+よねだ,みつのり
+よこつ,きよかず
+あさお,たつお
+たなか,じゅんじ
+たなか,しげる
+やしき,みのる
+かいがい,おさむ
+そがべ,はじめ
+ふるかわ,すすむ
+かわうち,としお
+ふじい,まさおみ
+いけのや,りゅへい
+おち,ひさお
+なかもと,れいじ
+わかばやし,しげる
+あらき,みのる
+やべ,くにひこ
+たかはし,ゆきお
+しばの,よしひさ
+たがしら,まさと
+すみた,まさお
+さとう,あきお
+ちの,ゆうじ
+やまだ,けいじ
+いがらし,ただみ
+いけがみ,やすゆき
+ふなだ,たけし
+いのうえ,ゆきお
+にしやま,けんじ
+いしはら,ゆひち
+すずき,のりゆき
+こもりや,たつお
+ちゅご,のりお
+こばやし,なおはる
+みやもと,はれお
+なかた,ふみお
+いりたに,ひでお
+おがわ,やすひろ
+おね,みつお
+こまつ,としお
+みのわ,てつや
+ふじかわ,こうじろ
+かわぐち,しげと
+ちば,やすひろ
+なかにし,のりよし
+さくま,けんいち
+たけまさ,たかゆき
+せき,たかよし
+さいとう,ひろし
+ふじもと,としたか
+おぐり,たいち
+いしばし,かずお
+あざみ,ひろし
+おがさわら,おさむ
+さいとう,つとむ
+たなべ,たかゆき
+もりやま,たくお
+きたざわ,ゆきち
+かなざわ,けんじ
+はらだ,まさあき
+おくやま,ひろし
+しみず,なおと
+いのまた,やすひろ
+ふるさわ,としひこ
+たけうち,さだお
+おの,ひとし
+もろおか,としゆき
+しのざき,よひち
+のぐち,ふみお
+しまだ,やすお
+かわさき,たつじ
+おかわ,きよし
+さめしま,しげる
+ほそじま,なおいち
+わたなべ,ひろし
+かわなみ,けんじ
+くさの,しゅへい
+つちた,ひでとし
+おはし,かつお
+のだ,まさと
+わたなべ,さとし
+よしたけ,せいじ
+ふくしま,ゆきお
+いわや,せいき
+さかもと,しろ
+くぼた,つとむ
+いそやま,けんじ
+おの,ふみあき
+あべ,しげあき
+おだわら,こうじ
+きうち,ゆたか
+いしかわ,まこと
+よしだ,まさひろ
+ちゃばたけ,かずひこ
+さかい,とみお
+おた,まさあき
+なかの,けいさく
+はだ,ともあき
+なかやま,こうじ
+さかぐち,みきお
+ながしま,ひさお
+さがら,やすひろ
+かわの,あきら
+かねこ,たかお
+なかだ,もとはる
+あまの,しょじ
+やざき,こういち
+ひらぎの,みつあき
+たばた,たつお
+くにゆき,みちお
+おくうち,けんじ
+すぎもと,としふみ
+なかむら,たつお
+すぎさき,まさふみ
+やました,よしお
+のむら,よじ
+しまだ,まさみ
+ふくだ,たかし
+さとう,じゅんじ
+おくぼり,けんじ
+よこかわ,やすお
+でんだ,としひろ
+ふくなが,ただよし
+たかしま,いさお
+かとう,みつる
+いしぐろ,たかし
+いけべ,しゅじ
+おつか,かずお
+しみず,いちお
+すずき,やすひろ
+つや,ひろのり
+うちだ,ひでじ
+おち,りょじ
+ありが,わたる
+なかしま,たかてる
+まさき,かずみ
+なかしま,みつる
+あさはら,かずのり
+ごと,ひでお
+うえまつ,ひろし
+さきもり,まさみ
+よしだ,きよし
+ふじた,すすむ
+やぎした,みつぎ
+むろふし,てつお
+かめだ,あきのり
+いかわ,くにゆき
+やまざき,すすむ
+つるはし,よしのり
+みのしま,たかお
+きしもと,まこと
+たけした,まさたか
+なかた,けんいち
+えんど,たけし
+もりや,かつじ
+くぼた,まつみ
+なおはら,まさお
+くげ,まさよし
+かさの,ひさお
+いいむら,ひろし
+すずき,よしあき
+おた,つとむ
+たけこ,やすよし
+むらこし,としお
+よしだ,まさひろ
+あさの,えいいち
+よしだ,ひろただ
+はやし,ひろし
+すずき,まこと
+おだ,のりお
+やまうち,まこと
+かわかみ,まさし
+うすだ,しんいち
+さとう,きよし
+くらしま,けいめい
+ませ,すみお
+この,ひろし
+まつざわ,けんじ
+しまだ,まさはる
+やまもと,たかし
+おくぼ,けにつ
+おぐら,まさゆき
+さくま,ひろふみ
+のぐち,としお
+ひなた,けんじ
+ふじい,よしあき
+すぎもと,まさとし
+つかはら,てつろ
+みつなが,たつや
+なかむら,りょひち
+やじま,きよし
+かみた,つねお
+ひが,こうじ
+みながわ,しんいち
+とみ,しんじ
+さかきばら,のぼる
+かくた,ひろし
+つちや,あきら
+むらた,しゅひち
+たなべ,よしのり
+しもだ,けんじ
+つかもと,かずのり
+はなはた,えいじ
+かんだ,ひろのり
+かわだ,こういち
+よしい,しゅにち
+くらや,まさし
+てらしま,ごろ
+きたがわ,まさあき
+いで,まさよし
+つる,たけし
+うつのみや,すすむ
+なかざわ,じゅんき
+ひだ,よしてる
+ほそかわ,たかお
+ちぐさ,ひろし
+そひゃ,あきひろ
+やまぐち,ひでゆき
+さかて,けん
+あわた,あきら
+わかばやし,よしのり
+えんじゅじ,くらじ
+のぐち,ひでお
+かわむら,しんじ
+もりもと,ゆきお
+よねはな,つねお
+じだ,きへい
+うえだ,ひでゆき
+しのはら,よしお
+たかやま,としひろ
+やまむろ,ひさお
+わき,としかず
+あまの,まさひと
+ほそかわ,よしのぶ
+とご,ひでじ
+なか,せいじ
+のだ,ひろみ
+やました,こへい
+なかじま,ふみお
+ながおか,しげる
+しぶや,かずひこ
+せりざわ,まこと
+ふじもり,こういち
+ふくだ,まさお
+ふじた,みきお
+やまじ,ただひろ
+こばやし,あきお
+こばやし,けんじ
+ししくら,いさむ
+こぐれ,まさかず
+もり,まさのぶ
+なかむら,じゅんこ
+いいじま,まつお
+きたがわ,としお
+たむら,ひろひさ
+ながしま,とみお
+えのき,たかのり
+さとう,ちえこ
+まつもと,ひろし
+うえだ,こうじ
+みずたに,よしかず
+じゅの,こぞ
+あかし,せいじ
+なかもと,たつひろ
+なかやま,たかひさ
+ふじい,ひであき
+なかやま,いずみ
+よねみつ,きよし
+たかせ,よしあき
+わたなべ,まさはる
+ふかざわ,よひち
+かげうら,のりたか
+しんど,のりゆき
+しみず,よしてる
+さかした,ただよし
+みやむら,やすえ
+たなか,いずみ
+たかいし,よしのぶ
+いしがき,よしお
+たかだ,ひろお
+たていし,あきら
+さかた,とくよし
+よこはた,たつお
+くや,おさむ
+よしだ,ひろのぶ
+きただ,やすひろ
+よしだ,しょひち
+こばやし,てつお
+なりた,としお
+いぬい,ひとし
+やすかわ,としのぶ
+のぐち,まさみ
+しょだ,かつじ
+やまだ,たつみ
+わくだ,よしの
+あべ,とおる
+たけかわ,まさとし
+さとう,すすむ
+はなおか,けんじ
+おの,よしかず
+たなか,かずなか
+つのだ,ひでお
+なまえ,としひこ
+たかはし,たもつ
+なかじま,まさひで
+なかむら,はるお
+うりう,しんじろ
+ふじいわ,かずみ
+ささき,みつよし
+きむら,まさよし
+たかぎ,ふみお
+かたやま,すなお
+いぐち,いちぞ
+あべ,てるひさ
+すずき,つとむ
+ひら,さだひろ
+なごし,たかお
+あだち,ひでき
+むらやま,よしお
+くにかた,ひでお
+まつい,けんぞ
+こいで,あきお
+ひろた,けんじ
+とみなか,ただひさ
+わきた,しげる
+うめむら,きみこ
+ふけ,はるたけ
+うえまつ,ふみひこ
+まつざき,たかし
+なかの,ゆたか
+こだか,しゅひち
+ひろたに,ひろと
+たかはし,おさむ
+さの,てるお
+しみず,たかひろ
+かんざき,かずひろ
+おさく,ひであき
+わしだ,けんじ
+くにもと,まもる
+しろかわ,すすむ
+かわはら,まこと
+おか,みつお
+こもり,ひろやす
+はやし,よしお
+かねこ,ふじお
+かどいけ,しょじ
+おかむら,よひち
+おかむろ,かつみ
+たぶち,やすひろ
+やまもと,つもる
+おさ,たけお
+いりえ,けんじ
+たかは,こういち
+たいら,じゅにちろ
+みなみ,よしかず
+いけだ,てるよし
+あおき,かずお
+やまうち,まさひで
+よしはら,やすまさ
+ささき,まこと
+みずたに,けんいち
+ひらの,つねかず
+ながた,よしあき
+かたやま,しげあき
+おだ,いくお
+えのもと,なおみち
+たけなか,じゅにち
+まつざき,じゅにちろ
+まつばら,なおこ
+やました,あきのり
+めぐろ,たかし
+おざき,しんいちろう
+おがみ,かずひこ
+おまえ,はるお
+きだ,やすまさ
+うえの,しげる
+おかだ,ふみお
+かなさき,じょじ
+やかべ,まさふみ
+なむら,あきひと
+いいじま,としいち
+ささき,かつゆき
+もちずき,あきら
+ぶんや,けい
+おかの,りょじ
+たけうち,ゆうき
+うえの,さかえ
+ふじもと,ひろし
+かわぐち,こうじ
+たきもと,せつこ
+かたおか,ひろよし
+くさかわ,ひでゆき
+あさい,こういち
+もり,しんいち
+くぼ,かんじ
+あんどう,おさむ
+うらやま,かつゆき
+くりた,とみお
+いのうえ,ひろゆき
+かねかわ,ゆみこ
+うえもと,もとあき
+なかお,のぶゆき
+おかもと,よしのぶ
+にしむら,としお
+やだ,やすお
+きど,さとし
+おかばやし,とおる
+かわしま,ひでと
+はしき,みつはる
+みやもと,まさのり
+なかお,しげる
+まつおか,なおき
+ひびの,ひとし
+にしかわ,えいいち
+かぶた,よしくに
+わたなべ,いちろう
+やまの,おさむ
+さいとう,よしお
+すずき,たけし
+くわはら,ひでお
+もりた,りょぞ
+ふじい,けんいち
+ながしま,はるお
+いなむら,きよし
+おざわ,かずおみ
+たきもと,おさむ
+みやした,みつひろ
+もうり,じゅんぞ
+いのうえ,たかみち
+ながの,いちろう
+はらと,たかひこ
+まみや,ゆきお
+ひがしばた,ひろみ
+にしたに,かおる
+たかく,けんじ
+はなだ,きよし
+あさの,こういち
+ばば,しげみつ
+いとう,ゆうじ
+いいだ,さとし
+こはやかわ,としひろ
+ふじわら,すみよし
+しゅくり,つねゆき
+ゆたに,まさひろ
+むねかわ,ひとし
+かんの,くにお
+にと,ひさし
+たむら,まさゆき
+なかしま,みつお
+おた,もとあき
+いのうえ,よしお
+くままる,としかず
+たなか,ひでお
+まえだ,さとし
+あみ,のぶゆき
+みなと,みのる
+にしだ,みちお
+いしはら,ひろし
+なかしま,しんきち
+いくた,けんし
+おき,たけひこ
+かがわ,かつみ
+ひらかわ,やすひこ
+やまざき,けん
+くまがい,いくこ
+たしろ,まさひろ
+さの,かつみ
+みどりかわ,よしあき
+なかむら,さとし
+よしみ,ちかこ
+いなみ,よしこ
+わたなべ,けんじ
+こが,しげる
+すがわら,まさあき
+たけうち,のぶお
+えだ,あきら
+あんどう,かずお
+たるい,さぶろ
+ごと,としお
+しもがき,やすひさ
+ながた,ただお
+ほしかわ,しゅひちろ
+こみなみ,としお
+かが,としのり
+はぜかわ,こうじろ
+ちば,みつしげ
+うらの,ひでまさ
+この,ふみひこ
+こばやし,まさのり
+ももせ,ひろこ
+つげ,ひでと
+やすこち,きよし
+ほそざわ,ともひで
+すぎやま,やすひろ
+あべ,よひち
+たなか,よしろ
+せいけ,ひろお
+つげ,ゆたか
+わかばやし,ひろし
+おくぼ,しげる
+おかべ,ゆきお
+いわい,じゅにち
+たなか,まさお
+やまもと,よ
+たかやま,のぶお
+たじま,しずか
+かずしろ,さとし
+こいで,としき
+かも,かずよし
+きたじま,ゆうこ
+はまの,じゅんじ
+いいやま,やすたか
+やました,しょひち
+きた,かつゆき
+いしたに,たけゆき
+くじめ,のぶゆき
+きしかわ,やすひろ
+ながの,まさのぶ
+よむら,あきお
+なかしま,たかお
+もり,ふみお
+やまじ,ひさお
+おぜき,てるゆき
+いなだ,みつお
+はやせ,なおき
+ほんぽ,ひでのり
+おひゃ,まさはる
+きたむら,たかし
+としん,たつのり
+たけい,よしゆき
+おかやま,しげる
+いしずか,としゆき
+はた,しょひち
+すがはら,しげゆき
+いわみ,さとし
+ゆもと,さだお
+きたがわ,かずお
+いはら,まさひろ
+のむら,ただのり
+みやさか,としゆき
+よしだ,えいじ
+ふかだ,よしかず
+ふじわら,まさたか
+きと,やすし
+うえもり,たかし
+やまかわ,すすむ
+くろだ,かんじ
+おつか,たかし
+うえだ,さとおる
+その,やすふみ
+じょだい,のぶお
+しんぞ,こうたろう
+うえだ,としあき
+わかみや,ゆうじ
+かむら,やすお
+ふるたに,ひでお
+かつうら,ゆたか
+くまい,ゆぞ
+ばば,いちろう
+かねとも,けんじ
+むらはし,ともよし
+どい,たかし
+なみかわ,かずみつ
+たかおか,としあき
+まつもと,いさお
+わたなべ,まさみ
+ただ,みちろ
+ありま,ひろし
+ながの,ゆうじ
+やの,みきお
+いさか,ともみち
+いとう,ひろかず
+やまざき,ゆたか
+くの,かずみ
+しば,ふみつぐ
+きむら,たかまさ
+すみだ,かつみ
+もとがいと,せいじ
+にわ,はるつぐ
+たけうち,たつみ
+たむら,とおる
+ぼた,たかし
+かどや,しげはる
+はらだ,けんじ
+みついし,りゅひちろ
+いのうえ,よぞ
+むらはし,まさひろ
+にしかわ,よしてる
+ますだ,としのり
+おた,てるゆき
+ふくい,ゆきひろ
+かげやま,とくいち
+ながつか,すみお
+くさの,かずお
+こじま,けんじ
+くらた,あきら
+たけうち,かずお
+いけだ,ひろかず
+たかの,しげこ
+くらや,ゆうじ
+おの,かずよし
+なかだ,けいすけ
+とくもと,ゆご
+おはし,よしのぶ
+やまだ,ひろし
+はんだ,けいすけ
+いしはら,まこと
+よしはら,しんいち
+たていし,こうじ
+いとう,くにお
+さとう,まさお
+おくら,けんじ
+なかすじ,ただゆき
+たいら,しげお
+きひら,ひろゆき
+なかじま,ただし
+やまざき,けんいちろ
+とびた,あつお
+なかざわ,ゆたか
+にしはら,しんいち
+めぐろ,つとむ
+まるやま,じゅんぞ
+きくち,たかあき
+あおき,としふみ
+きったか,あきら
+やすい,てつお
+いちまる,せいじ
+やまざき,さとし
+すがはら,としひこ
+とみなが,しふみ
+ちぎり,たかお
+おば,しょじろ
+まつい,よひち
+ひらやま,ひろし
+やまむら,はるひこ
+おで,ひでつね
+よしなが,ときお
+こじま,あきら
+とみなが,はるお
+さが,かずお
+はら,じゅんじ
+とみよし,こぞ
+よしだ,ひさのり
+ひらばやし,よしみ
+まつど,たみお
+いまふく,ゆきこ
+きよせ,よしあき
+はなぶさ,としゆき
+ちば,じゅにち
+やまざき,よしひこ
+なかはら,えいじろ
+おの,ゆりこ
+うえまつ,ふくみ
+あきやま,まさひろ
+とたに,みつのぶ
+よねだ,まさみ
+ふるくさ,ちかえ
+ひろや,たけのり
+よしだ,ちえこ
+かねこ,てつや
+ながた,ゆうじろ
+いべ,たかし
+せきね,そのえ
+おかだ,ひろかず
+かない,ひでお
+さとう,ゆし
+さかきばら,しんや
+いまい,すすむ
+ひめじ,としのり
+おぎはら,りゅじ
+たけむら,けんじ
+とひゃま,こへい
+きたはら,かよこ
+おさか,まさあき
+おこち,よいち
+たかお,まさひろ
+うど,さかえ
+うの,のりひろ
+ふじき,しんさく
+さとう,しげる
+いそがい,まさはる
+からさき,しんじ
+やまだ,まさゆき
+わだ,まさはる
+しばた,かんせい
+しおざき,ひとし
+しが,よしお
+くりた,みはる
+はしもと,しんぞ
+よしむら,まさよし
+みやざき,たかのり
+きたがわ,たかし
+おだけ,たかひさ
+すずき,かつひこ
+やまいし,かずまさ
+おぜき,のりこ
+たかい,としろ
+かねこ,きんご
+はらだ,ひろみ
+しまだ,としお
+やなぎ,まさみ
+すずき,よしお
+たかはし,たもつ
+おぐりやま,えつお
+わたなべ,としお
+やまむら,たつお
+たかはし,みつのぶ
+しおじま,みちお
+つるおか,よしろ
+いとう,たかし
+まつうら,ひろのり
+やまもと,きはちろ
+くまみ,ちから
+けんよし,あきら
+やまかげ,きよあき
+ごと,ひろし
+たけうち,さとみ
+はやし,けんじ
+いしばし,ひでゆき
+いな,けんさく
+いのうえ,たけお
+にしかわ,たかひと
+はんだ,やすお
+たてばやし,とおる
+おしま,のぶゆき
+しばた,けんじ
+みうら,ただひで
+こかご,かおる
+いいだ,とおる
+たけすえ,としみち
+いがらし,せいき
+ますやま,たかお
+さくやま,ゆぞ
+さくらい,たかし
+たまり,よしあき
+いまにし,ひろお
+おがわ,まさとし
+はぎわら,かずゆき
+おくに,としゆき
+いけだ,りょ
+まえじま,たかゆき
+いわい,ひでお
+やまだ,きよじ
+すだ,かずよし
+ときわ,くにひこ
+はやし,はるき
+たけもと,あつし
+かんばやし,かずのり
+とざわ,ゆたか
+たての,かずみ
+かんべ,てつや
+おくだ,よしお
+たもと,かずお
+ながい,けん
+おざわ,まさお
+さとう,みのる
+こんど,まさひと
+ねぎし,きよし
+たなか,ひでひこ
+こむろ,せいいち
+よしだ,あきら
+いいじま,かつみ
+にいほり,まさき
+こもりや,まさと
+しんど,おさむ
+やの,ゆひち
+たなか,かずお
+はぎたに,まさお
+こすぎ,つとむ
+いべ,しんご
+かなざわ,けいこ
+ただ,よしと
+ながた,とみお
+かまだ,のぶたか
+たかはし,しんいち
+おいで,やすなり
+たかくら,あきお
+やすまつ,ただし
+まる,てつお
+くぼた,りょひち
+たばた,とよふみ
+もりた,ひろみ
+くにとも,かずお
+あさぬま,よしたか
+ほしな,ひでずみ
+のざわ,よひち
+まつむら,まさとし
+ひらかた,ろくろ
+ひらま,だいきち
+しみず,のりお
+よこかわ,ひろし
+きくち,ただひさ
+くろさわ,りゅすけ
+たけうち,ひろし
+ひらが,よしお
+さいとう,まこと
+うちぼり,ひろし
+いなむら,すすむ
+おさだ,よしひさ
+すぎやま,のぼる
+いまず,けいいち
+うらの,のりお
+もちずき,つねじ
+すがわ,ひろかず
+いけだ,やすお
+たなか,はるひさ
+さいとう,しんいち
+ふじた,かずお
+みやね,はるお
+かまだ,たかし
+ねぎし,わたる
+おくがわ,あつし
+はやし,いさむ
+ばば,てつお
+やまもと,よじ
+えんど,のりお
+そめや,こういち
+あらい,よしはる
+あべ,たかし
+ちば,たかとし
+たかやま,やすただ
+やまき,まさよし
+たけうち,かずお
+たけべ,しげる
+あだち,としお
+たかしま,はるお
+よこやま,たつじ
+しらいち,としみち
+くどう,つとむ
+すずき,みのる
+たかしま,よしのり
+やまがた,ゆきお
+よしだ,ひさし
+みやかわ,のぶひこ
+ささき,つとむ
+いでうら,のぼる
+たなか,おさむ
+いとう,よしゆき
+おつ,あきら
+ふえき,たつお
+しもふさ,みのる
+みやかわ,ゆうじ
+はしもと,しげふさ
+やまぞえ,たかお
+にいくら,よしあき
+わたなべ,あきら
+むろふし,のりなお
+かんだ,まさる
+くどう,しげお
+たかはら,きよし
+おかだ,たかし
+どい,みのる
+たなべ,たくお
+こむろ,けんじ
+もりやま,むつみ
+あらまき,かずこ
+こしべ,ひろし
+さの,あつひこ
+おかだ,たけし
+ふじわら,としかず
+まつお,あつし
+たなか,まさたか
+きはら,たかし
+にしはた,こうじ
+にしわき,のぶお
+おかざき,としのり
+ふじわら,かな
+やすだ,かつまさ
+おか,けいこ
+ほその,わたる
+あかし,けいじ
+なかい,さとる
+やすだ,まもる
+てらむら,けんいち
+くぼた,ふみこ
+こにし,のぶお
+のむら,かずろ
+いのせ,のぶひろ
+わたなべ,よしまさ
+にしお,きょこ
+もみき,かずみ
+すなだ,みねお
+たけうち,なおき
+あきせ,ゆ
+しおた,よしたか
+きど,ひろかず
+いしわたり,おさむ
+しらがみ,ゆかこ
+うちなが,きょ
+たなか,しげお
+くろさき,たくま
+おとし,こういち
+さとう,きくじ
+すずき,ふみたか
+ひろた,よしゆき
+やのかわ,しげみ
+さかもと,あきら
+こむろ,くにこ
+いまた,やすひこ
+ほそや,かずひさ
+てらさか,こすけ
+ほんま,ひろたか
+かすが,さちこ
+まつだいら,ひろし
+かわかみ,よしひこ
+ねごろ,よしあき
+ふくだ,としお
+すずき,たかひろ
+とまつ,ひでや
+いの,しんいちろう
+すずき,てつお
+あさい,ゆひち
+はら,まさお
+ほし,まさゆき
+なるかわ,さいじ
+おだ,じゅにち
+おばな,まもる
+たにざわ,まさと
+ふじおか,よひち
+ごと,かずたか
+これなが,まさゆき
+たかはし,かずえ
+たから,ひろしげ
+おくわ,えいじ
+たなか,しゅじ
+さとう,しんじ
+しまぬき,えいぞ
+そね,ひろし
+たなか,よしじ
+ふじむら,たつろ
+ごと,じゅんじ
+はしもと,かずお
+ひるま,たかのり
+ほしば,くにかつ
+かめわり,かずのり
+おくい,たかあき
+ひさもと,しげやす
+すずき,まさひろ
+ひらさわ,たかし
+きたで,たかじ
+ふくだ,としあき
+しおざき,だいすけ
+むと,みつはる
+にしおか,きよし
+つぼの,ひでかず
+なつうめ,のりお
+たにがき,けん
+おすが,ひろし
+うちだ,かずお
+かとう,こうじ
+ささき,しんじ
+かしま,やすたか
+あかさか,あきら
+かわかみ,ひでよ
+しど,ひろみ
+やまうち,ひろし
+かの,おさむ
+はら,きよし
+まつばら,よしたか
+てらかど,のりあき
+しおた,かずひさ
+おかだ,けいじ
+くろだ,ゆたか
+もりもと,さぶろ
+せき,ひろひさ
+すずき,としまさ
+たけくさ,ひろあき
+たがしら,かずお
+こばやし,ひでお
+さえき,えいじ
+たつざわ,ひでお
+さいとう,のりお
+ふるかわ,かずお
+たむら,よひち
+つりや,たつや
+さかぐち,よしひで
+ふくしま,ゆたか
+おかわ,いくお
+ふじた,けんじ
+かわぐち,かずひろ
+ときおか,よしのり
+なかの,ひとし
+いのうえ,りょ
+くにとし,ふじお
+さかた,ひろし
+もりかわ,あきら
+のぐち,ひろし
+くぼた,のぶお
+なかおか,おさむ
+のふじ,けいじ
+もがり,きみあき
+まえざき,ひとし
+おつか,きよし
+みずた,ふみと
+すぎやま,まちお
+かがわ,ふみとし
+にしはら,よひち
+てずか,ひろし
+しおみ,しゅんすけ
+おはら,かつのり
+あさくら,てるお
+しまだ,とみお
+しまかわ,まさゆき
+はしもと,たくろ
+うず,こういち
+たかくわ,つねお
+みちた,ひろし
+うえだ,むつみ
+しが,たつお
+いけみ,けいじ
+もり,えいじ
+かしもと,いさお
+いしはら,しげよし
+かねこ,けんのすけ
+たかはし,よしひさ
+もとい,よしたか
+こたけ,よしふみ
+かさい,しんいち
+かとう,みつお
+こくぼ,ただあき
+わかやま,あきひろ
+さなだ,てつや
+さかた,すすむ
+のむら,ひとし
+はやかわ,しずお
+みやざき,まさのぶ
+おにつか,しゅにち
+いで,ういり
+ながさこ,たかつぐ
+いとう,みつぐ
+かねたけ,まさあき
+くぼた,ますみ
+ありま,ちえこ
+わかお,ちえこ
+いしざか,としお
+おた,まさお
+さかもと,みちお
+おほり,すえこ
+しんたに,のりこ
+うちやま,けいこ
+ひらた,しげや
+ありぞの,まさひこ
+いとう,とみよし
+あおやぎ,みつお
+なかむら,かずみ
+いいだ,しげお
+なしき,けんじ
+むらせ,おさむ
+まつお,たかのり
+さとう,みちたか
+あさぬま,てるあき
+ふたみ,きよゆき
+ふなと,けいこ
+ふじた,ひろし
+ふるかわ,たかゆき
+ふなはし,ぜんはちろ
+ぶと,けいご
+かの,ゆきお
+おきつ,としあき
+たかぎわ,たかし
+ほしの,みなこ
+にしじま,さとこ
+かまた,たかし
+つじもと,まさあき
+はなだ,さだお
+ひろせ,みちお
+にしだ,かおる
+うえき,かずお
+よしの,けいご
+きたむら,しろ
+しみず,しんいちろう
+いしざき,やすまさ
+はやし,くにみ
+きくち,ゆみこ
+おかど,たけお
+こむら,ひさや
+はしもと,ひろゆき
+なかつか,かつひろ
+おひし,ひろたか
+くろだ,いさむ
+なかい,ちえこ
+きたざわ,くにひろ
+きしだ,ちあき
+かなまる,としいち
+あらい,しんじ
+ふたつぎ,まさお
+きくち,ひとし
+いいだ,としかず
+なかえ,きよお
+ひらまつ,せいいち
+にしおか,みちこ
+さとう,ひさし
+もり,みつのぶ
+ほしの,ひでふみ
+やまぐち,つぐお
+うすい,しげる
+まつばら,つとむ
+ありさか,たけし
+にしお,ますよし
+きだ,まさよし
+やの,まさみ
+かとう,のりあき
+わたなべ,しげる
+はやし,まこと
+わたべ,しずお
+わたなべ,はるお
+ゆぐち,としお
+やまもと,やすし
+さいとう,あきお
+かいず,みのる
+ほしの,じゅんぞ
+しのはら,けいき
+おぬま,はるお
+みわ,いさお
+ほりむき,のぶひろ
+いしたて,よひち
+みふね,えいいち
+もみき,まさき
+はせがわ,えいじ
+すぎやま,てつお
+つくだ,ゆひち
+あだち,けんた
+でざわ,ちひろ
+おた,やすお
+さとう,よひち
+せきぐち,まさお
+こくぶん,ひろこ
+ほしな,ひさし
+うらの,ふみお
+たけむら,けんいち
+とくなが,ひでお
+くりはら,のぶひろ
+おくむら,まもる
+さいとう,たけし
+まつした,よしま
+たけだ,しんいちろう
+にしき,きよし
+うめだ,まこと
+ほんだ,てるお
+かも,しゅんじ
+うしだ,ただし
+さいとう,ふみのり
+はすだ,ただよし
+みかわ,きよし
+うちだ,あきら
+にしざき,みつのり
+いがらし,よしき
+わたなべ,ゆきふみ
+しまむら,こういち
+かとう,やすひろ
+かわべ,ひとし
+さかもと,ひでと
+もりした,じゅにち
+すがはら,しんいちろう
+とみやま,けいぞ
+ふくだ,みちこ
+おとざき,もとよし
+ふじもり,さかえ
+こもり,いくお
+ふくなが,かずうみ
+みやはら,つよし
+じんの,ひろつぐ
+きむら,ますお
+いながき,ようこ
+もり,くにひこ
+わたなべ,しょひち
+つじもと,しょじ
+もんぜん,あさこ
+なむら,こうじ
+やまもと,のりこ
+はしもと,しょこ
+やまうち,よじ
+あらい,もとよし
+ふじい,りょ
+わたなべ,かつひこ
+はせがわ,つよし
+しげやす,あつひこ
+やまのい,たかお
+こばやし,きよゆき
+ながい,まさあき
+さわ,かつのり
+まつよし,みつお
+さいとう,えいこ
+かの,ゆきこ
+うしごめ,のりお
+いしい,かつのり
+うすき,あきお
+すどう,ひろゆき
+かじやま,まりこ
+おば,えりこ
+すわ,ひろき
+いわた,うん
+と,やすのり
+おいかわ,ひろし
+ひらい,てつ
+たかしま,とよかず
+ふみの,えいいち
+おかざき,たくま
+しらき,まさる
+たけもと,よしあき
+まつもと,のぶお
+まつばら,みちお
+えびはら,かおる
+ふじの,ひろあき
+ふかや,やすお
+ほしの,こうじ
+かたやま,いずる
+あらかわ,よしお
+たかの,たかきみ
+くろだ,ひでき
+いとう,ふみお
+こざい,やすと
+うえやま,はじめ
+はっとり,ひとし
+にしむら,えいこ
+ふるかわ,としお
+やしき,ひろし
+ほどやま,のりお
+えと,まさつね
+やまもと,ゆうじ
+せきぐち,のりひこ
+たなべ,ひろし
+たけだ,こうじ
+しんたに,やすお
+くぼた,まさひろ
+すぎおか,たかし
+やまざき,さちこ
+さいとう,まさゆき
+うえの,かずお
+しまもと,やすひろ
+きたの,じゅんこ
+いいずか,みつる
+いずみ,きよし
+はらだ,としき
+おちあい,としたか
+やまうち,たかお
+えぐち,しげき
+はぎわら,ひでお
+たかぎ,ともひこ
+おくもと,まさとし
+まつざき,いさむ
+いちむら,ひでとし
+みやさか,としゆき
+みやた,かたし
+ながお,きよし
+いわお,さとみ
+ふかざわ,さだのり
+たむら,ひでき
+きりゅ,としたけ
+まつざき,こすけ
+かとう,まさみ
+みた,りょこ
+いしい,きょじ
+おかもと,たかゆき
+うえおか,さとし
+きょの,あきひろ
+かねこ,ひでつね
+さくらい,たけし
+わかばやし,たけのり
+わたなべ,まなぶ
+あさい,りょひち
+かどの,ゆりこ
+やまざき,ともこ
+あわの,せいいち
+おがわ,しょきち
+ぜんけ,まさし
+ふくもと,しげる
+おど,まさお
+もりもと,ただお
+とぼ,よしお
+かたやま,てるみつ
+ながまつ,なおと
+わたべ,いさむ
+いしき,てつお
+いながわ,のぶお
+なかの,まさと
+にしやま,ゆぞ
+しもだ,きょこ
+しげた,としひで
+まつもと,よしひろ
+かたやま,にすけ
+その,ゆうじ
+いせき,とよひろ
+いとう,としゆき
+せきね,たかのり
+むらやま,としお
+まるやま,ともひこ
+くろさわ,かずのり
+すみ,たかお
+のぐち,かずみ
+さとうみ,まさし
+おかわ,たかあき
+なかの,よしみ
+おひし,ゆ
+はぶ,ゆうこ
+うちだ,たかはる
+みき,やすよし
+すずき,みよこ
+かさはら,たかお
+おくぼ,ひろしげ
+かたかみ,ゆ
+たかはし,かつみ
+いしかわ,ゆきお
+たかとり,よしかず
+たにぐち,まさお
+せき,ふじお
+くぼた,けいじ
+あべかわ,よしふみ
+ふじまき,とおる
+かたやま,ゆうじ
+こやま,ひでき
+はしもと,つぐひと
+すみ,ひでのり
+にしかわ,じょじ
+さわま,あきら
+はしもと,のりまさ
+なかた,ふみのぶ
+うちやま,つねゆき
+ささき,いずみ
+あさはら,かずはる
+にった,のりかず
+だん,としひこ
+すぎた,かずや
+やまもと,たかお
+おふち,しんじ
+こばやし,ゆきまさ
+みよし,まさと
+いしだ,むつお
+おにき,たけし
+くりはら,まさゆき
+しらい,けんじ
+さかにし,あけみ
+おだ,みちお
+かます,ひろし
+なかがわ,あやこ
+かしもと,ゆうこ
+ばんど,やすまさ
+ふたみ,ひろし
+やました,まり
+はやし,みつひろ
+かげやま,ふみこ
+あすま,るりこ
+しもむら,てつし
+やまぐち,しんいち
+やまと,みき
+さとう,みわこ
+まつだいら,こうきち
+まつむら,ひでひこ
+この,のぼる
+おはし,たみお
+きくた,つかさ
+よしおか,けんいち
+さの,ひさし
+たなか,けんぞ
+ささき,まさよし
+かわぐち,きょひち
+やました,ゆずる
+たけむら,まさし
+ふくち,たかし
+まなか,ゆうじ
+あらき,みのる
+ひらの,のぶお
+なかむら,ゆひち
+はしもと,ただし
+かとう,ひろし
+はまかわ,しげる
+はやし,かずや
+いとう,としみち
+すずき,よしや
+たけうち,やさぶろ
+にし,しげき
+いわほり,ひろし
+いまい,よしお
+もりの,ゆきのり
+にしはら,すすむ
+きりや,あつし
+さとう,たつお
+ほそだ,ふみお
+たかはし,かずえ
+なかじま,とみえ
+やすはら,たかのぶ
+くろいわ,よしかず
+かも,つとむ
+あかまつ,としかつ
+きたむら,いくこ
+にしだ,くにお
+おかだ,けいこ
+ささき,けんいち
+たかはし,いちろう
+しみず,かずひこ
+えんど,こういち
+うだがわ,としまさ
+しみず,くみこ
+あおやぎ,たかし
+はしもと,けい
+たけうち,ひさと
+あらい,とよこ
+いしじま,ひさこ
+こがね,ただし
+さわしま,しげる
+たかやなぎ,なるゆき
+まさだ,たかし
+しみず,ひろし
+おのでら,くにあき
+たなか,まゆみ
+のむら,ゆきこ
+よしだ,しんいち
+よしだ,としゆき
+さたけ,ひろし
+さいとう,いさむ
+みやぎ,しんすけ
+たかしま,てるお
+かばや,のりふみ
+いしざき,せいぞ
+かがや,かずお
+こたに,ひであつ
+こすだ,やすし
+いじり,いさお
+まるやま,ひでお
+かない,しんいち
+やぎ,みのる
+ふじの,ひろみち
+こでら,あきひで
+すぎお,たかお
+すがはら,みつる
+さいとう,のぶお
+おか,ひろし
+いしまる,としすけ
+みやざき,しんじ
+はまの,まもる
+こたじま,ひろし
+たかしま,けいじ
+つかだ,ひろふみ
+なかむら,しんいち
+たけだ,よひち
+やすむろ,たくもり
+なかむら,やすあき
+ふじしま,ゆたか
+おかだ,たみや
+あや,よしお
+なかむら,みつぐ
+たかはし,さとし
+すがはら,まさと
+ゆあさ,まさゆき
+いしい,こういち
+おくぼ,みつやす
+おさわ,はるやす
+やまもと,おさむ
+いまいずみ,こぞ
+おかだ,みちお
+なかむら,よしのり
+たなか,あけふみ
+なかの,せいいち
+おもり,かつふみ
+やまもと,まさのり
+ながい,はるひこ
+こばやし,ひろし
+ひきち,しげまさ
+やまだ,たけし
+つかもと,みつまる
+いのうえ,みつまる
+いのうえ,たけひろ
+すみかわ,しげただ
+ふくだ,けんじ
+やまもと,むねよし
+さいとう,ひろとし
+かんば,まさたけ
+さらい,みきお
+さかき,かずひこ
+やすい,よしひろ
+かみむら,くにお
+せべ,きよし
+よしだ,たくお
+ながせ,かずひこ
+ふくち,かずお
+ふくだ,ゆきまさ
+のなか,よしはる
+いまだ,ひさし
+にしかわ,としお
+こやの,つとむ
+なかざわ,まさと
+おがわ,あきら
+なかやま,かおる
+ぬのかわ,じゅにち
+そね,せつこ
+みぞぐち,ゆうこ
+こばやし,よしみつ
+よしまつ,まさあき
+おはら,しょじ
+やまだ,たかし
+みのぐち,たかし
+しんめん,よしたか
+のせ,としかず
+いわはし,ただし
+あかい,いずみ
+つたもと,じょじ
+なかもと,のぶひこ
+くだなみ,まさひろ
+いちだ,ますこ
+やの,ひでお
+まつき,あきお
+ささき,たかし
+ふるの,はるひさ
+ふじた,けいこ
+いのうえ,ふみお
+たや,ゆきお
+みやざわ,いわお
+わたなべ,まさお
+あくね,まさおみ
+ほしの,しんじ
+よしだ,よしのり
+うえむら,たかふみ
+かみや,まさお
+すずき,りょひち
+あんどう,たけし
+とよいずみ,まさはる
+くわな,みのる
+にいみ,まさゆき
+みうら,たかし
+のむら,えいじ
+おかだ,きみお
+あさぬま,よししげ
+ささお,かおる
+いながき,あきら
+すがわら,みどり
+しょじ,みつやす
+たがわ,たろう
+そが,ようこ
+しょわ,としろ
+まつかわ,しんいち
+しもむら,かずお
+わたなべ,のぼる
+こばやし,けんじ
+いいだ,たけし
+ふくもと,たかはる
+むらやま,としお
+ほり,のりこ
+やまの,かつし
+にしわき,おさむ
+まつお,あきら
+おかもと,じゅん
+おさき,かずひろ
+うめもと,ひでゆき
+おかむら,まさと
+こいけ,さとし
+おたに,たけさだ
+かたおか,みのる
+おかだ,のぶとも
+ふくしま,きよみ
+えだなか,ひろゆき
+すずき,ゆうじ
+いちかわ,なおゆき
+くろかわ,しんじ
+さとう,こういち
+おさわ,けんいち
+もちずき,ひろき
+やました,まさあき
+いちかわ,ひでお
+ふかざわ,よじ
+くぼた,まさな
+にしむら,まこと
+ねぎし,けんいち
+こんど,なおふみ
+ふるや,あたる
+こばやし,こせい
+たむら,まさあき
+みつはし,まさき
+くまざわ,しちろ
+やまだ,よしお
+ひろつ,やすのり
+かねだ,しげる
+あそ,せいいち
+えびはら,きよし
+やすい,きよひさ
+すどう,かずひこ
+やはた,すえひろ
+さかい,けいいちろう
+さが,たかし
+やまざき,かずほ
+なかむら,のぶお
+いざわ,こうじ
+あらい,ひさゆき
+うぶかた,けんじ
+わたぬき,みつぎ
+ひした,たつお
+かとう,ひろひこ
+やまね,だいはちろ
+やました,かつみ
+のむら,よしお
+やない,かずみつ
+むらかみ,ゆたか
+あおき,ゆきお
+やしろ,きいち
+あさま,くにお
+おくだ,ひろこ
+いしばし,まさのり
+みなみで,ともひろ
+いぬずか,よしお
+ときわ,えみこ
+みうら,ようこ
+まぶち,ひろちか
+おばら,けんいち
+まつき,さだみ
+えぐち,ただゆき
+おみ,のぼる
+わたなべ,ゆうこ
+あらかわ,よしと
+すがの,ひろし
+やすい,よしろ
+みやもと,まさゆき
+ふじぎわ,まさみち
+きたがわ,あきら
+たにぐち,すすむ
+こじま,まさひろ
+あまかわ,ふみお
+おぬき,ゆうじ
+たなべ,ひであき
+まるはし,こへい
+やどや,よしはる
+おがく,やすのぶ
+さかた,としはる
+はら,ひろゆき
+たかぎ,ひろし
+あいはら,けんいち
+おた,たけし
+あきやま,たけし
+しみず,しんじ
+こばやし,あきら
+はたもと,こへい
+うすだ,ひろやす
+たかはし,こういち
+なかがわ,みきお
+まつばら,みつる
+くぬぎ,よしあき
+おがわ,ゆたか
+つじ,ゆたか
+かわい,こうじ
+すがわら,いさお
+むと,じゅにち
+おばら,よしひろ
+かとう,こへい
+かぶらき,ひでみ
+わかたべ,ひでお
+おがわ,あきら
+いわさき,とおる
+なりた,よしひろ
+あきやま,たかお
+みつい,おさふみ
+えんど,けんじ
+よねた,たかのぶ
+あおい,かずお
+おかもと,てつお
+おつか,はるお
+ふくもり,ゆたか
+てしま,よしお
+はま,かずたか
+よしだ,けいいちろう
+かわべ,しゅひち
+たなか,かずお
+たかはし,やすとし
+たなべ,たかゆき
+あそ,ゆきお
+たかだ,つとむ
+みやの,こしろ
+うえずみ,ひろゆき
+いちかわ,おさむ
+あさわ,たかし
+いなもと,けいいち
+もりや,ゆたか
+なかたに,あきお
+みやもと,きよし
+みくに,よしひさ
+きたむら,しんいち
+やたべ,さかえ
+ながかわ,かずまさ
+やな,ひでき
+さくま,はじめ
+あらい,よしはる
+しまだ,やすのり
+てずか,きょひち
+うえの,ふみあき
+さいとう,ひろいち
+おくわだ,ひろし
+よこやま,としお
+わたなべ,ひとし
+にしむら,やすあき
+たかまつ,ともふみ
+にしむら,かずお
+いちき,ひとし
+いわした,けん
+おの,いちぞ
+にしき,えいいち
+さわ,ただまさ
+たかみ,まさひで
+やすふく,りょひち
+おた,かずお
+おかもと,みつる
+さかい,としお
+ふじもと,なおこ
+まつもと,しゅにち
+おひゃぶ,しゅにち
+にしむら,ひろゆき
+ほりうち,まなぶ
+いしもと,よしおみ
+まつもと,よひち
+たけうち,あきのり
+もとやま,こういち
+よしなが,たつま
+ふるかわ,ひろし
+たにぐち,のぶつな
+たけこし,としお
+つむら,たつお
+おの,かずお
+おかもと,おさむ
+ふるた,けんじ
+にしの,ひろし
+みずたに,ひろまさ
+こやま,やすお
+きくち,ときお
+おこうち,しげのり
+かわた,かずや
+くはら,しゅひち
+ふるはし,けいいち
+たかよし,しゅひち
+かす,なりお
+あみもと,しんいちろうう
+むねとう,こしろ
+まつもと,こうじ
+たかなし,みちお
+あきた,よしお
+たかはし,まさとし
+ながい,こせい
+よしだ,しげお
+まつもと,さとし
+とくだ,まさひろ
+ひらい,そういちろう
+おくしま,ひろゆき
+ました,ひさし
+やまだ,けんいち
+さくらい,まさあき
+たきざわ,たかし
+ますこ,よしゆき
+しんかわ,こぞ
+おたに,ふみとよ
+かわの,のぶゆき
+あらかわ,すすむ
+あだち,としお
+うちだ,すすむ
+こはら,まさあき
+おはし,としお
+かめおか,やすみち
+みむら,たかし
+いき,つかさ
+あしずか,やすあき
+やまもと,みちお
+よしだ,のぞむ
+はらおか,たかし
+うるわし,しげお
+おんだ,きみひろ
+いんど,ともお
+たけなか,さとし
+ふじさわ,ゆうじ
+おもり,ひろえ
+なかむら,ただひろ
+しょじ,よしみつ
+きたじま,てつお
+いとう,たかゆき
+ひらお,けんじ
+すみもと,としひこ
+なかたに,かずひこ
+あらしま,よしお
+かたやま,とみお
+うえだ,よぞ
+ふじもと,ひろし
+やまはた,ひろのり
+おたに,おさむ
+いいぬま,かつやす
+ながさわ,ひろし
+やすだ,けんじ
+ふくしま,まさお
+さかきばら,まさとし
+かとう,まもる
+よこざわ,まさゆき
+かどの,ひろし
+やまおか,よしのり
+かみたに,よしあき
+かとう,あきら
+のもと,かずたか
+すぎもと,のぶや
+ふじの,ひろし
+いのうえ,ゆきお
+はせ,ゆきのぶ
+もり,まさひろ
+かわばた,ひろふみ
+かわぞえ,りゅじ
+はしもと,つとむ
+ひろまさ,よしひろ
+きしもと,よしろ
+ひらつか,しゅじ
+うえだ,りょひち
+あらい,あやこ
+いいだ,たかし
+ひろしま,ふみたか
+いさか,かずみ
+すずき,きよし
+くらもち,ひろき
+さいとう,えつろ
+すずき,としかず
+ふかや,せいいち
+さかい,こうじ
+おわだ,しょじ
+かめや,まさかつ
+くさうら,えらぶ
+わだ,ひでお
+ごと,しょひち
+ひらふく,だいしん
+もろや,やすひろ
+いけだ,くにお
+ますだ,みのる
+みずの,よしゆき
+はやし,としひこ
+あおき,まさゆき
+こばり,しょぞ
+みさわ,かつひろ
+たかぎ,よしお
+えんど,たかお
+すがさわ,まさお
+おりはら,みつぐ
+まつなが,てつじ
+かさい,としろ
+せむら,としお
+さくらい,かつみ
+てらかど,としお
+ふじた,かずお
+かわのべ,きょひち
+あおば,あきら
+むらもと,ひでとし
+つぼうち,さだゆき
+ふるしょ,まさはる
+しばやま,としたか
+やまもと,きよとし
+うちだ,としひこ
+まえざわ,まさゆき
+こむら,さぶろ
+やまさき,てつお
+うしき,けんいち
+まちやま,せいじ
+ふじぬき,とよみ
+なかむら,たかふみ
+くすもと,きよあき
+すずき,たかし
+うえやま,たかあき
+こいけ,よしゆき
+はせがわ,やすあき
+ふるかわ,かいち
+やまだ,まさる
+ゆはらぎ,ゆきよし
+おしま,たかし
+そね,ふじお
+とま,ふみお
+たかはし,たかひろ
+かけはた,ひろふみ
+いしい,とみお
+さとう,あきのぶ
+むらやま,よしじ
+ほりぐち,かずみ
+なかざと,しょじ
+さとう,すすむ
+かねこ,まつみ
+かしま,てるお
+とぐち,よしお
+こみやま,としゆき
+やまおか,ひろし
+たかはし,みつあき
+もりた,やすひろ
+よこい,あきお
+ひらい,みつよし
+しいばし,のりゆき
+かねこ,まさひろ
+なかね,さちひろ
+せきぐち,しずお
+みもり,まさお
+きくち,しげる
+やまもと,のりゆき
+あらかわ,けんじ
+ともくに,まこと
+とみた,ひろし
+たかはし,まこと
+とがし,りゅぞ
+かわむら,としのぶ
+ふくなが,ひろむ
+まきた,きみあきら
+さの,よしのぶ
+さとむら,けいいち
+さかの,けいいち
+つちはし,よしのぶ
+うえの,けいいち
+なかがわ,まさたけ
+とくなが,まさふみ
+いとう,のぶはる
+ひさまつ,てつお
+おつか,たかひこ
+かわもと,まさたか
+のむら,かつじ
+かの,たかお
+うえさか,まさき
+ふじわら,のりかず
+おがわ,しゅへい
+くらた,のぶお
+はなそと,としひろ
+にしかわ,けいじ
+えびす,とくみ
+やすのり,みのる
+さかい,けいじ
+まえだ,じゅんや
+ふくだ,しげあき
+やまもと,けんぞ
+しおた,ひであき
+むらかみ,けんじ
+いくみ,かずお
+なかぎ,とよとし
+とくまつ,かめお
+たにい,しげき
+おひゃま,よしいち
+たの,ゆたか
+おた,ゆうじ
+くまの,ひらお
+さわぐち,まさと
+あさの,ともふみ
+さかぐち,とよふみ
+わたなべ,たかよし
+かとう,ひでお
+まえかわ,よしはる
+まつもと,たけし
+まつもと,よしあき
+やまなか,しげたか
+こばやし,まさずみ
+ふじた,やすまさ
+やぎ,ともよ
+いわい,たかし
+ふくしま,ゆみ
+ふるかわ,たかお
+おがた,としゆき
+すずき,けんじ
+しかま,たかちほ
+きしもと,ひろのぶ
+ころぎ,あきお
+ふたみ,まさくに
+やしろ,かずお
+はりいけ,のりゆき
+しむら,つとむ
+ながくら,かずお
+みなみ,たかし
+とくなが,かずお
+たなか,としお
+てらさき,えいじ
+かとう,こうじ
+みずの,たつお
+たもと,まさみ
+うちだ,まさたか
+たけいち,ひでみ
+ひびの,こういち
+こばやし,まさのり
+わたなべ,ただひこ
+ふかだ,たかし
+いしたに,しゅにち
+いで,かつみ
+にいさと,きよし
+すなはら,としお
+しみず,よしはる
+かとう,ありまさ
+ないとう,いちろう
+こいけ,こうじ
+きたむら,きよし
+かがわ,ふくむ
+いけだ,しろ
+かの,とおる
+おかもと,よしあき
+こばやし,ひとし
+いしい,ひろかず
+さえき,よしゆき
+さわだ,ひろし
+ごと,りょへい
+おの,ひろただ
+ふなおか,まさひろ
+しんや,かずひさ
+ほんざわ,よしゆき
+やまうち,まさゆき
+いしの,しょじ
+いおく,まさお
+あらき,のりゆき
+ふじわき,じゅんじ
+いちむら,とすけ
+はやし,とよひこ
+もり,としゆき
+きむら,たかし
+ゆきふき,たかし
+はぎもと,そじ
+はしもと,さだひろ
+きたやま,まさひろ
+ふじもり,ますゆき
+おくの,たかし
+やまだ,のぶゆき
+たご,まさひろ
+あさい,まさあき
+もりの,まさかず
+みない,ひかる
+もりさわ,しげじ
+なりさわ,つとむ
+もりもと,ひでとし
+こばやし,ようこ
+しまだ,みのる
+すずき,まさき
+ふくだ,よしさだ
+あらい,たくじ
+たにやま,しげる
+おかもと,まさひさ
+だいもん,いわお
+はやし,ひでお
+いしだ,よしてる
+ひろさわ,けんじ
+よしおか,おさむ
+まつもと,みつお
+なかじま,たかし
+きた,よしひろ
+にしむら,ひろし
+はっとり,けいこ
+やまもと,とよこ
+いとう,ふみこ
+きたむら,まさる
+たなか,よしのり
+いおき,ひでき
+かまた,みさこ
+しみず,けい
+ますおか,あきのぶ
+さわだ,しゅひち
+なかいし,まつお
+わたなべ,みのる
+よしざわ,よしなお
+ささおか,ふくお
+たかみ,よしみち
+やまぐち,まさずみ
+いまふく,しんいち
+かみや,さかえ
+わさ,さなえ
+きくち,しげかず
+うかい,ひでお
+いわま,かずお
+つじ,あきら
+たけだ,ますみ
+せとがわ,とみお
+こしむら,とみやす
+わたなべ,こうじ
+うさみ,ひろし
+おかだ,ひでお
+ふじわら,しょこ
+かとう,たけゆき
+いしはら,まさひろ
+ひなた,あきお
+うえすぎ,のりあき
+しばた,しょひょ
+おくだ,としお
+すなやま,ただし
+いまい,とみえ
+なかむら,ひでお
+なかもり,あきひこ
+ふかさわ,みきお
+みずた,せいいち
+おの,ぶんじ
+さいとう,さだつぐ
+しゅど,しげとし
+ふくい,まさし
+のだ,じゅにち
+おの,みつのぶ
+こがみ,としひこ
+みき,しょじ
+いけだ,やすゆき
+ふじもり,まさる
+たかだ,きょへい
+いけだ,しげひろ
+いとう,のぶかず
+わたなべ,まさる
+さわだ,よしお
+まえじま,あきひこ
+いなむら,のぶお
+なかむら,こうじ
+なかじま,むねひさ
+いわま,しんいち
+わかつき,かずし
+はせがわ,ひろし
+いのうえ,みのる
+かさはら,たつひこ
+にしやま,かなえ
+すどう,はるき
+おかべ,よしまさ
+ふくば,まさゆき
+まつなが,ふみお
+さかい,としひこ
+ふじた,かずお
+なかやま,のぶぞ
+よねだ,のぶたか
+くまた,かずひろ
+こやま,まさふみ
+よねやま,まこと
+ふじかわ,すすむ
+はりがや,ひろし
+はせがわ,しのぶ
+よしだ,よしゆき
+くすのき,ひでき
+たかはし,よしろ
+ながた,たかし
+そのくら,こうじ
+ますもと,まさひろ
+おぎはら,じゅひち
+よしだ,としひろ
+たなか,けんじ
+えだ,やすお
+なかじょ,ひろひこ
+いいずか,ゆきお
+てらにし,たかやす
+ふくい,けんぞ
+でむら,こういち
+さえき,ひろゆき
+うちだ,たけし
+しいな,けんじ
+ふるや,ひろあき
+ながくぼ,かずひと
+てらうち,ただし
+おたか,よしふみ
+ふじよし,さちこ
+さいとう,しんじ
+くろさわ,ひろし
+いしかわ,よしお
+よしの,ひろし
+こみや,まなぶ
+やまがた,まさひこ
+つや,せいいち
+にしの,たもつ
+うちだ,のぼる
+わたなべ,まさのぶ
+もりた,せいじ
+こしだ,かずひこ
+ひろせ,しげはる
+よしむら,ひでのり
+みうら,のぶお
+こいずみ,よしはる
+てらお,おさむ
+せがわ,ひであき
+かいずか,まさあき
+ふくます,とおる
+いとうず,まさお
+せきがみ,ふさえ
+ふじ,けんそ
+よしむら,たかし
+ふるもと,かずよし
+たきた,としお
+おかだ,かおる
+たかはし,のりゆき
+たにふじ,ひさお
+いまおか,かずみち
+わたなべ,のぼる
+やまもと,こぞ
+よだ,りょへい
+ふかやま,かつとし
+やまぐち,よしかず
+さの,ひでのぶ
+たかはし,みつひろ
+まつもと,みちお
+やの,あきら
+あきば,すずよ
+みどりかわ,じょじ
+たかし,ひろし
+ふるかわ,いずみ
+ひきた,きよじ
+おざき,よしゆき
+あおき,まなぶ
+さえぐさ,ひろひさ
+ふじもと,あきら
+こにし,まさあき
+おにし,かずひろ
+ひぐち,けんじ
+くぼた,かおる
+やまぐち,やすお
+ふるかわ,ひろし
+なりた,ひさお
+たなか,きみ
+はたけやま,ゆり
+みやもと,きよし
+のざき,ひさし
+はせがわ,かずよし
+しらかわ,ひろみつ
+あいだ,みよこ
+ひろかわ,みのる
+りゅかわ,えいじ
+やまぐち,よしあき
+くりさき,しげおみ
+もりもと,まさひろ
+くぼた,ひろし
+くまさこ,ゆうじ
+あだち,しゅんすけ
+この,ふじき
+やまもと,じゅにち
+いわい,しろ
+おはら,まさと
+いしはら,いちろう
+あおき,ふさいち
+もり,てつお
+ろっぽんぎ,みさお
+かとう,やすはる
+さとう,ちょしろ
+まえぞの,よしひこ
+ふじもと,こへい
+たにむら,ひろし
+なかにし,つよむ
+たかはし,ますみ
+なかい,ひでお
+たかはし,よしみち
+しも,まさあき
+しばた,もりしげ
+ふるみち,けんた
+たけだ,ひろあき
+ふじた,えつこ
+かぎやま,りょた
+わち,ひでお
+ふじた,とものり
+こんど,たけし
+まつもと,よりこ
+ふくい,まさあき
+すがわら,こういち
+ふかやま,やすお
+いまい,えいじろ
+さとう,ひでのぶ
+かなざわ,ひろし
+ふちざき,ゆたか
+つかだ,しんじ
+いしざき,かずみ
+とくら,たけふみ
+とのさき,ゆひちろ
+たかき,いさむ
+ふじた,よしお
+ながせ,あきら
+たなか,ひろし
+たつみ,てつや
+やまもと,まさのり
+ふくた,ひとし
+くわはら,しげのり
+ふじた,たかし
+いなくま,ひでゆき
+みさお,こうじょ
+なかした,あきら
+おくやま,まさたか
+ながえ,くにひこ
+ながい,かずお
+やまざき,おさむ
+しらいし,しょひち
+うえだ,たかゆき
+おじま,みきお
+ひろせ,もとよし
+ひらの,ひでお
+ふるた,ひろゆき
+こぬま,れいこ
+たかやま,ひろゆき
+あさした,よしあき
+よつはし,ゆひち
+つちや,たかなお
+おにし,よしゆき
+やまぐち,えいぞ
+しずの,としこ
+はしべ,こぞ
+ほりい,まこと
+ながおか,ゆうじ
+くりた,かずひろ
+きば,しょご
+いだ,まさる
+ふくとみ,しょひち
+こばやし,しげる
+いり,ひろあき
+さた,まさのぶ
+まるやま,まさる
+あおやま,たかお
+しんど,かおる
+あいかわ,ともはる
+さかのうえ,まさふみ
+ふじまき,ひろし
+かわはら,たかみ
+むらた,いさお
+よしだ,しょじ
+いたくら,いさむ
+じぞばら,りょひち
+たなか,みよし
+かじわら,のりこ
+たなか,しょへい
+はすいけ,さなえ
+とま,まちこ
+かわきた,かずみ
+まつもと,のぼる
+はせがわ,けんいち
+ふじい,ますぐ
+のむら,ひろふみ
+ようこた,しげる
+かなざわ,やすお
+ますやま,きょじ
+かの,けんいち
+ふなやま,ただあき
+やました,まこと
+さとう,ひでゆき
+かめもと,ゆひち
+いとう,てつや
+おくむら,よ
+ふじい,としお
+きはら,しゅひち
+のむら,おさむ
+あくたがわ,しゅじ
+いしだ,ゆみこ
+うめはら,あきら
+おぎ,やすひこ
+こんど,みつお
+たけだ,とおる
+まつい,みちたか
+かみおか,ひでお
+かもした,こぞ
+やなぎさわ,しんいち
+たけうち,ひろし
+もんま,えつお
+いいだ,きちひこ
+はせがわ,まさかず
+ながほり,よしふみ
+もりおか,きよし
+にしやま,しげお
+やまもと,てるお
+いしだ,たかし
+ふるど,りさく
+かんだ,つとむ
+いしだ,くにお
+さいとう,しげる
+きむら,なおゆき
+いわみ,はるお
+もり,けいこ
+たかやま,ふみえい
+はやしぐち,まさる
+さいとう,ひろみ
+しばたき,たけひろ
+おぎはら,まもる
+かとう,みのる
+ふくと,かなえ
+おだ,としじ
+さとう,ひろし
+なかむら,ただのり
+はまだ,あきお
+おがさわら,やすお
+むらき,としお
+おはし,まさお
+たかの,まさあき
+なかざわ,しげる
+みやじ,たかひろ
+すえなが,ひとし
+たたき,やすのぶ
+よしだ,しゅいち
+あおき,しょぞ
+すぎむら,あきひこ
+いとう,やすお
+たかはし,くにあき
+すずき,よしはる
+かたやま,いさみ
+さいとう,なおや
+たじま,ひであき
+あべ,まさひろ
+なかじま,ゆたか
+やまぐち,たかひろ
+わきざか,てつや
+さこ,かずひこ
+おつか,あきひと
+つかもと,たかし
+いのうえ,かずとし
+ながお,あきひろ
+うらば,やすお
+こじま,あきら
+たけだ,いわお
+あおの,ひでし
+いずかわ,かおる
+くどう,まさとし
+なかむら,しんいち
+まつお,いさむ
+いながき,としひこ
+にしもと,まさし
+いのうえ,ひろし
+おのでら,よひちろ
+いしざか,しげき
+はぎわら,まこと
+ふるた,まさひこ
+うえじま,さだと
+ぬまた,ともひろ
+えんど,すすむ
+かがやま,ふみお
+ゆりもと,とおる
+ふち,まさお
+ふじおき,やすひろ
+さいとう,ゆうじ
+まつもと,じにち
+ひろせ,のぶお
+ばば,かずあき
+こばやし,としゆき
+すずき,まさふみ
+なかやま,しんいち
+きし,しょひち
+あさの,ひとし
+えんど,てつや
+いしばし,としひこ
+かいだ,けんぞ
+いけじま,まさる
+はらだ,とみお
+はまの,しゅひち
+かわい,まさひろ
+わだ,しんや
+さとう,ひとし
+たなか,ただお
+あくつ,ひろのぶ
+いとう,まさとし
+あんどう,みつあき
+あいざわ,よしかつ
+くぼた,じゅひちろ
+ふかうみ,ひろゆき
+しみず,まさみ
+たかはし,かずお
+なみき,ひろし
+のざわ,まさかず
+こいたばし,あきお
+たていし,だいご
+かわかみ,みつお
+こばやし,ひであき
+おのずか,としお
+たぐち,このむ
+たかはし,みちる
+さとう,としまさ
+くわはら,ひろし
+せと,せいじ
+ごけ,よしのり
+よしむら,きよみ
+たかやま,いわじ
+ささき,ふとし
+かの,きよし
+たかはし,さとし
+ながおか,ひとし
+すずき,さとし
+やまぐち,てつろ
+もり,やすし
+すずき,きよひろ
+うえむら,ひろみ
+やぶはら,かずお
+しらいし,かずのり
+きくた,ひでお
+なかい,みつぐ
+くらもと,まさあき
+すみよし,やすひろ
+たかぎ,しろ
+しょじ,さとし
+おさだ,ひでき
+あさの,きよし
+いわさ,のぶゆき
+ばば,ゆきお
+ひろた,しげき
+ふじもと,しげはる
+さの,ともゆき
+もとき,ひでき
+いとう,あきら
+うけがわ,さとる
+うめばやし,いつお
+いなとみ,まさとし
+たかやなぎ,みつよし
+はら,かずき
+なかはら,まさのぶ
+さいたけ,みつのり
+かしやま,ゆたか
+さかい,ひでお
+いとう,ひろひさ
+なかむら,のりお
+おのぎ,まさゆき
+いかみ,さとし
+たかはし,きよし
+しいな,ゆたか
+たまのい,さとおる
+くぼ,みさこ
+きむら,まさる
+ほった,やすゆき
+ほかり,まさのり
+さとう,ふみお
+ほしの,いさお
+かぶらぎ,かずよし
+おさだ,まさあき
+すえひろ,いさお
+むらかわ,ぶんろ
+いわさき,せいじ
+やまむら,ひろし
+もりた,ともゆき
+いけだ,のりかつ
+やうち,よしのぶ
+やました,たけし
+わたなべ,ゆたか
+あなん,しんいち
+にしの,とみお
+こしみず,しょひち
+たかはし,ひであき
+えがわ,たかし
+やまざき,ひとし
+いまぜき,たかゆき
+すずき,あきお
+にしはら,しゅひち
+おかべ,としひろ
+さかい,としふみ
+ただ,たかお
+すえよし,よしみ
+はやし,けんじ
+たかはし,しんじ
+こあし,たつお
+もりかわ,よしのり
+かとう,ひろし
+まえば,かずひで
+やの,ひろし
+いとう,えつじ
+なかい,たつろ
+おだぎり,やすお
+えんど,かずお
+たけい,としお
+なかたに,たつひろ
+いわさき,よしふゆ
+からかさ,ひでき
+あさの,ゆひち
+いわぶち,いさむ
+はんだ,まさひろ
+てらお,としお
+たけい,みきお
+はしもと,いたる
+みやさか,けんじ
+てらだ,はじめ
+さかた,えいし
+ながや,やすくに
+はしもと,まさひろ
+おくら,たつお
+なかさき,よしはる
+きりはら,ひろし
+あらい,かずお
+いわの,てつお
+はっとり,やすゆき
+すずき,みちのり
+にしはら,ともひろ
+ささき,あきひろ
+はなふさ,けんいち
+のどの,まさる
+かわばた,とおる
+しみず,よしゆき
+ながしま,よしもと
+もり,よしみ
+しみず,つとむ
+ひさやす,いちろう
+かたうら,やすゆき
+たけむら,かつみ
+いまにし,けんじ
+おかだ,つとむ
+なかえ,みつぐ
+しろの,としゆき
+よこやま,しゅんじ
+おかざわ,ひろゆき
+かみじょ,ひろのり
+くまべ,とおる
+しみず,ひろし
+やなぎさわ,しずお
+まきの,つとむ
+さわ,たつゆき
+うしろだ,くにお
+まちだ,よしなお
+こばやし,つぐひこ
+しげむら,かずお
+ひぐち,しげあき
+いいぬま,けいぞ
+いずみ,しげゆき
+はやし,あきみつ
+やぎ,まさと
+おかわら,あきひこ
+ふくおじ,おさむ
+うがじん,じゅにち
+たなべ,のぶお
+ごしま,まさひこ
+あんどう,のりとし
+おだま,まさお
+おかざき,たつろ
+いしかわ,しょひち
+むらやま,ゆうじ
+はやさか,わたる
+なかじま,くにお
+たけもと,つかさ
+きたじま,たかお
+みかみ,としはる
+わらしな,たかし
+きむら,まさゆき
+おざわ,みのる
+やまむら,ひろとし
+よしだ,ちはる
+たちばな,きよたけ
+まつもと,おさむ
+みしま,まさみ
+せき,しん
+でぐち,まさひで
+たかはし,ひろし
+おひけ,ゆきお
+ふじもと,いわお
+よしむら,ふみゆき
+こばやし,まさこ
+おがみ,けいじ
+かい,たく
+かえつ,よしみ
+もろい,じゅんこ
+みずの,なみ
+おつか,じゅんや
+おた,しん
+せきね,よしかず
+みやぐち,ひとし
+よねだ,しげき
+ほりうち,たくろ
+えぐち,のりのすけ
+うしろまつ,ひであき
+いいだ,ひろし
+よしだ,じゅんど
+なかせ,やすひさ
+すずき,まさし
+おいかわ,しゅじ
+かわべ,のぶひこ
+たにざわ,めいじ
+かねこ,よしゆき
+ふじおか,しょたろう
+むらおか,まさはる
+うぬま,たかひろ
+みやけ,いくお
+なかむら,あきひこ
+おわ,かおる
+ねもと,りゅじ
+にしむら,かずたか
+たつみ,なほこ
+さとう,まさこ
+すのはら,かつみ
+あすま,かずみ
+たかば,ゆきひろ
+よしむら,よしみ
+あべ,あきお
+きくち,ゆうこ
+なかむら,えいこ
+はむら,さつこ
+すずき,たかお
+かわむら,はるよ
+ひびの,けいこ
+きただ,つよし
+さとう,けいこ
+かとう,ふきこ
+いとう,ちあき
+ふくとみ,まさはる
+むろずみ,いちろう
+やまなか,ともひさ
+おかだ,いわお
+とご,あきお
+なりた,としひこ
+いけざき,きよかず
+かわばた,のぶあき
+まつおか,さとし
+なかだ,なおと
+さとう,けいじ
+たけざわ,かずまさ
+やながわ,つとむ
+やまさき,のぶひと
+しがき,としや
+ゆみ,ひさえ
+おざき,まさひろ
+ながしま,つねお
+やぶうち,かずお
+ほそや,ゆうじ
+にしざわ,まさる
+はやみ,まさひろ
+はせがわ,じゅにち
+かわさき,けんいち
+とよいずみ,たけし
+おくむら,たかし
+やまだ,たけし
+にわ,しろ
+にしざき,のぶお
+すぎもと,ひろし
+おさわ,しんや
+とだ,よしひろ
+なかの,ひろし
+みうら,のりゆき
+やまざき,のりあき
+さかもと,たけし
+やまだ,つとむ
+いのうえ,たいすけ
+やすい,ひさお
+まつだ,ひさし
+かたおか,そじ
+すずき,よしお
+はやし,なおみ
+はままつ,かつひこ
+はまの,たかゆき
+みずたに,まさと
+すみた,のぶひろ
+はやし,えいひこ
+とくなが,ひろし
+かとう,しげる
+まつうら,ともなお
+ひゃくな,としあき
+あんざい,よしかつ
+ふかまち,ひさし
+みさき,なおゆき
+もちずき,ひらく
+あおやぎ,みちこ
+たかはし,かよこ
+きせ,まさよ
+うえもり,ゆみ
+あずま,あけみ
+おだくら,けいこ
+たなか,けいこ
+といたに,やすこ
+やまざき,えり
+はしもと,みよこ
+まつみや,もとちか
+ふしみ,まきこ
+きょひゃま,ゆみこ
+よしだ,のぶこ
+うるしど,みえこ
+せお,ひでこ
+みなかわ,ようこ
+ふじの,すみお
+ひろた,たけし
+おた,とよひこ
+おが,あきら
+ながはま,ゆきひで
+じんの,あきら
+いちかわ,しげる
+はやし,みえこ
+はたや,ひろみち
+ほりこし,ひさお
+かに,かつろ
+ほんだ,けんいち
+つちや,たかし
+たまて,まさひこ
+ゆかわ,ちかと
+さかい,てるお
+みやじ,けいこ
+たむら,あつこ
+かわぐち,みえこ
+さの,つきこ
+なかむら,かずゆき
+こばやし,たかし
+いだ,よしみ
+せきもと,まさのり
+かわまた,たつお
+くぼ,やすき
+たかの,はじめ
+わたなべ,ただし
+いかるぎ,としゆき
+さとう,のぶひこ
+ひだか,あきお
+よしい,もとひさ
+しまむら,とみお
+おび,みつる
+なかじま,えいじ
+ほしの,ゆうじ
+かわもと,ゆひち
+にしだ,ひとし
+しみず,ひでまる
+たむら,まさかず
+とよしま,ゆひち
+えんど,ゆきお
+おがわ,いちろう
+きたはら,よしひろ
+おぐに,かずお
+おぶち,ひろし
+みよし,やすひろ
+いけの,やよい
+うえまつ,みのる
+ふくざと,ただし
+あおき,よしひこ
+さめじま,こぞ
+きどま,えいろ
+こだいら,としお
+ひぐち,とくのぶ
+まえしろ,のぼる
+たなか,じゅんじ
+なかがわ,やすひで
+いのうえ,まさあき
+とりう,じゅん
+まるやま,よしみつ
+まつうら,たかお
+ためちか,なつあき
+ささき,ふみお
+おたき,けんじ
+おがわ,けいぞ
+まつみ,かずお
+ありまつ,しんいち
+こらく,かつあき
+みやした,りゅひち
+おずち,たかし
+さかきばら,さちお
+さとう,けんじ
+ひろせ,きくお
+つちだ,たつお
+はしら,かずひろ
+ふろもと,せいじ
+こさか,よすけ
+たけいち,やすひで
+てらだ,まさあき
+こいで,なおき
+さいとう,けんじ
+みやなが,かおる
+にしむら,きょこ
+たなか,しんすけ
+じょ,まこと
+ゆくひろ,ますえ
+よしわら,しげお
+あおき,ゆぞ
+たていし,みのる
+たけだ,みつお
+やすだ,たかこ
+あおき,あきら
+よしだ,ともこ
+あだち,としあき
+のぐち,ちよ
+わたなべ,みのる
+たけとみ,あきひろ
+くりわき,よいち
+きたずめ,よしかず
+ふなばし,ひでき
+おさだ,しょひち
+あしがい,のりひこ
+さかした,しんや
+つちだ,ゆうぞ
+おかだ,ゆみこ
+たなか,れいこ
+おたごし,じゅん
+くろさか,るみこ
+すざき,ゆりこ
+かねみつ,とみこ
+まと,ふじこ
+とよふく,ひでゆき
+あらい,なおこ
+ふじかわ,あきこ
+よこお,よしのぶ
+あまの,しげゆき
+おの,こういち
+すずき,まさき
+かとう,もとひこ
+さいとう,しゅれい
+おう,としお
+みやざき,よしたか
+きや,きよし
+ふじた,しゅにち
+むかい,みちお
+まつもと,ひでちか
+かわい,こぞ
+まつもと,えいじ
+たけうち,あつし
+こじま,ひろゆき
+はせがわ,かずゆき
+こが,まさお
+やまだ,ひろかず
+おた,のぶあき
+やまもと,たかよし
+さくらもと,はるお
+やなぎさわ,たかふみ
+ふくい,あきよし
+かとう,まさゆき
+いわた,みつお
+ふじもと,かつみ
+きのした,いさお
+やまだ,ふみたま
+くらまえ,かずひこ
+くらた,よひち
+よこい,かおる
+こばやし,ゆきお
+かとう,きよたか
+ますい,りょじ
+うらた,ひでお
+たかはし,たつお
+うしごめ,やすお
+はらい,こういち
+うだがわ,みのる
+たかぎ,しんすけ
+みやざき,ふじと
+やまむら,くにお
+やまぎし,こうじ
+こまつ,かずみ
+はまぐち,やすゆき
+もり,ただふさ
+やまだ,あきひこ
+かがわ,じろ
+きくち,こうじ
+くじ,たかし
+いとう,ふみとし
+かわぐち,ひでや
+あらき,もりよし
+おかべ,ひとし
+こぼり,てるあき
+おち,まさひろ
+まるお,まさたか
+さとう,しんじ
+たなか,としろ
+まつやま,かずゆき
+おつか,さとみ
+やまもと,まさひろ
+ふじお,りゅひち
+のむら,よしたか
+ひろせ,ゆか
+あんざい,ひろかず
+おつぼ,やすのり
+さいとう,みちお
+いとう,ふみき
+わらさわ,やすし
+あらかわ,ひさあき
+ごみ,よしかず
+えんど,しんすけ
+よしだ,ひろみ
+うちだ,しんいち
+あさいね,おさむ
+おしま,はじめ
+たなか,しゅんすけ
+おこ,ひでのり
+いずつ,としお
+はやし,くにお
+ふじき,けんじ
+しおかい,みつえ
+ながふち,ひさたか
+まつもと,のりよし
+かとう,しげのり
+わたなべ,みちろ
+はまぐち,りゅじ
+かねこ,さとし
+さとう,きくお
+おひ,やすなり
+はやし,じゅん
+きみつか,さちお
+ふくだ,まさはる
+なかむら,ひでお
+やばし,てつや
+こばやし,しげお
+とくだ,たつお
+たかはし,まさろ
+いとう,なおる
+のぐち,まさゆき
+かわな,とおる
+なかの,かずひこ
+やまだ,きよつぐ
+ひらまつ,たいいち
+あらい,ひろし
+よしの,けいじ
+はまだ,りゅひち
+おた,ゆたか
+しばた,としお
+わかやま,まさき
+ほし,せいじ
+みわ,まさお
+たなか,まもる
+かなや,ただし
+たけなか,けんじ
+さとう,たかゆき
+みずしま,ともかず
+てらだ,かつひろ
+もりや,みつお
+すぎやま,よひちろ
+うみ,のりお
+きぐち,つやこ
+うるわし,まさこ
+ひらまつ,そうたろう
+いずは,としゆき
+いとう,かおり
+さとう,かずお
+しげのぶ,としひこ
+よしもと,ますあき
+しばた,あきひろ
+ふなこし,きよし
+すなだ,まさお
+まりこ,ゆうじ
+きくま,のりひこ
+すと,じん
+にしざわ,としゆき
+こばやし,とよいち
+かわごえ,しげる
+いじま,ただゆき
+にしお,もとはる
+にしやま,はるお
+さいとう,よひちろ
+かどわき,たけし
+ひろせ,みちおき
+たぐち,はるお
+たかだ,まこと
+わたなべ,ますお
+かとう,けんじ
+なかはら,かずお
+いしくぼ,つよし
+やまだ,いちぞ
+わかまつ,やすじろ
+かわしま,やすお
+かたもと,なおひこ
+たかやま,さとし
+つちだ,ひでお
+たちばな,みつこ
+こばやし,まさひこ
+つだ,ふみお
+もりかわ,ひろし
+おくの,のぶゆき
+いまい,よしあき
+むらお,ひろみ
+しもむら,たかお
+えんど,たかよし
+ほしくま,としはる
+かわせ,けんじ
+まちだ,しげあき
+こばやし,くにお
+はだ,りゅひち
+つくだ,よしお
+にしかわ,こうじ
+ほんだ,ひろゆき
+わしおか,けんじ
+むろい,きみひこ
+やすだ,たつし
+よしだ,ひでお
+ほり,あきら
+こだ,としゆき
+かまだ,ゆきお
+うえむら,よしお
+まつばら,まもる
+みなとぐち,ただし
+くがてん,じろ
+いわせ,としのぶ
+はやし,まさはる
+いくなみ,しんさく
+いとう,むねし
+こやま,たつお
+おとまる,ひろし
+ながい,まさはる
+いとう,しょ
+いまい,ひろみ
+ますだ,としひろ
+かわべ,よ
+さとう,まさし
+さこ,ひろゆき
+むかい,あつこ
+おしま,こうえ
+つちや,えいじ
+はやしぐち,ひろみ
+さとう,かずや
+むらさと,しげる
+はるやま,やすし
+しげもり,のぶひろ
+ふなき,みつひろ
+わだ,しんじ
+つぼか,たかし
+とだ,ひろみち
+やまむら,よしひと
+いしぐろ,もとはる
+ふなはし,まこと
+すずき,たつる
+よしだ,たかひろ
+わたなべ,りょた
+なかにし,けいじ
+やまもと,まさはる
+いしかわ,じゅにち
+たけうち,くすたか
+おくの,いずみ
+だて,としあき
+たべ,せいいち
+やぎ,ゆきひこ
+よしだ,まさお
+ふるた,しゅにち
+かわぐち,ひさお
+はすこ,いくと
+ながみね,しんすけ
+たけした,じゅにちろ
+あかお,ただあき
+わきもと,しんいち
+たさか,ゆき
+なかしま,よしお
+たけなか,きみひろ
+やました,つぎお
+くぼえ,たかみつ
+おぐし,じゅんじ
+あさか,まさゆき
+えぐち,こういち
+おさき,さとし
+おくだ,じゅん
+おくむら,まさとし
+かなまる,りょひち
+きのした,かずお
+ささき,たかゆき
+たかの,りゅうたろう
+はしだ,よしのり
+ほし,しゅんじ
+みずの,さとし
+みつはし,かずゆき
+もとはし,たかし
+やまだ,けんじ
+ながの,やすよし
+いしい,ひろあき
+かめだ,なおひこ
+きはた,てるお
+こばやし,しょひち
+しらふね,しげとし
+なつはら,ひろよし
+にしはら,まこと
+はしば,かずお
+ひしぬま,かずろ
+ひびや,よしひこ
+みや,おさむ
+むらかみ,きよひで
+むらた,たつお
+わたなべ,しげる
+おにし,ゆすけ
+たけした,かつひこ
+つばきもと,たつや
+はまおか,まさし
+みずの,てつじ
+あべ,まさゆき
+あらいし,ゆきひろ
+さとう,かおる
+さわの,たけひで
+しもじょう,おさむ
+たかだ,たかよし
+ながた,ひろあき
+にしはた,やすひさ
+はやし,たくお
+ほそかわ,ひろふみ
+あおき,しんたろう
+よしだ,ひではる
+わたなべ,ふみお
+いわさわ,はじめ
+のせ,しょひち
+ひらした,ひろあき
+よしざわ,ひろし
+むと,やすし
+みわうら,たけお
+きくち,とよたか
+えぞえ,ひろみ
+いしかわ,まさみ
+いちかわ,まさあき
+はらだ,せいざぶろ
+むらた,ただみ
+いとう,かずひで
+ほしな,やすひろ
+とくだ,まさふみ
+たぐり,そひち
+ささき,あきら
+たまる,みきとし
+にしはし,ひろとし
+じつかわ,たかお
+すずき,たかはる
+おにし,すえお
+ながさき,ひろやす
+いいだ,ひでお
+たかの,けいぞ
+ひさの,ひであき
+いのうえ,はじめ
+いしくら,ひろみ
+あきやま,たけし
+いちかわ,たかし
+きがわ,よしたか
+さいとう,よしと
+よだ,みきお
+あらき,けいや
+すぎはら,のりお
+かわぐち,かずよし
+みや,ともゆき
+いけお,はるお
+さくらい,しげお
+こしの,かずひこ
+きくかわ,さいち
+ゆあさ,きみこ
+すずき,ゆうこ
+ますだ,ひでみ
+あらい,まさひろ
+いけだ,としつぐ
+きす,ひでき
+うしやま,まさゆき
+かまた,こうじ
+うさみ,せんり
+なかの,こういち
+かきかわ,ひろゆき
+きじま,みきお
+むかい,ゆうじ
+ながやま,ひでひさ
+はっとり,ていじ
+みしま,まさひこ
+ごと,ひろゆき
+いとう,ふじお
+おがた,よすけ
+くさば,かずお
+てらえ,たかし
+ほんだ,ゆうじ
+あくたがわ,しんたろう
+みやこし,やすお
+ふくしま,としお
+しのずか,あきら
+おたき,れい
+ながまつ,えつし
+あらい,きよし
+まつだ,たけし
+ふじた,じゅにち
+かみぐち,ひろゆき
+かとう,まさよし
+やまざき,まさこ
+うめたに,まさお
+なるせ,つよし
+くぼ,くにとし
+くらた,ひろゆき
+こんど,かよこ
+たけうち,はるゆき
+いのうえ,ひさと
+たかだ,のりお
+あくつ,みのる
+とりい,やすえ
+もりおか,けいすけ
+かくたに,ともこ
+たけいち,しょじ
+たい,せいいちろう
+つちや,まさる
+ますだ,さちよ
+かんだ,あつみ
+やまうら,ひろあき
+きのした,ひとし
+ほさか,たけのり
+まるおか,あつこ
+かまた,じゅんこ
+はたなか,くにお
+くろは,ひろゆき
+とつか,てるお
+いしい,みきや
+もりた,のりお
+ほんま,よしかず
+あらかき,かつゆき
+たけ,ひろみ
+いずはら,ゆみこ
+ひさとみ,まなぶ
+すずき,ちえこ
+にしなか,けいこ
+みずの,まさふみ
+もりむら,まさたか
+たかはし,ひさお
+しげとめ,やすよし
+ひろかわ,しげみつ
+さとう,くにお
+まえかわ,ひでゆき
+よしい,ひろし
+ほそや,まさみ
+さかもと,ようこ
+こいずみ,ようこ
+にし,ふよ
+かねこ,まち
+すみくら,しげる
+よこお,よしとも
+ささき,たけひこ
+はやし,なおかず
+たなか,たろう
+あきやま,よしひろ
+さいす,ひさのり
+のがみ,こぞ
+とよしま,あきら
+しんじょ,としかず
+ふきの,よしあき
+いけだ,けの
+おだわら,ゆうじ
+たかはし,まさみ
+けいま,としのり
+しみず,ひでひこ
+いまいずみ,かずお
+もりた,しげみ
+もり,やすふみ
+まえかわ,あきら
+やなぎだ,しょへい
+むらもと,たかお
+すずき,かずお
+ほそえ,あきら
+いしくら,きよし
+ひろかわ,とみお
+からしま,よしかず
+まちだ,せいじ
+もりやま,しゅいちろう
+たけむら,たかし
+つかもと,もりよし
+やまぐち,かずきち
+そめや,りつ
+なかごめ,としかつ
+いわなが,じゅん
+せきや,こうじ
+てらい,ともじ
+たなか,ゆみこ
+せきや,やすみ
+さくらい,やすかず
+いそべ,すすむ
+まつおか,ひろし
+いちじょ,ひろし
+やまもと,まさひこ
+でぐち,せいじ
+ひらまつ,ゆうじ
+みずの,たかし
+とみなが,しんいち
+たかしま,ひさのり
+のがみ,てつぞ
+おつ,あきふみ
+こばやし,ひろひと
+てらだ,あきお
+さいとう,ひでお
+あさの,けいすけ
+しもむら,けんじ
+おひし,かずひろ
+たなか,ひでお
+まつもと,じゅんろ
+ひらまつ,えみこ
+たけうち,まつたろう
+しげはら,たかひこ
+おかもと,まさのり
+むらやま,しろ
+こまつばら,たかとし
+えばた,よしお
+おた,いさむ
+てらお,まさひろ
+おさわ,ひとし
+かわしま,ひろし
+あらい,ひろふみ
+はしずめ,けんいち
+みずしま,としかず
+ひらまつ,たつや
+おくむら,たかや
+みずなか,のりとし
+ほりうち,のりよし
+たきもと,つねお
+やすば,きよし
+きたの,しげる
+にしだ,みのる
+いしかわ,てるまさ
+おば,はじめ
+かしわぎ,もとこ
+さとう,しずお
+まつだ,けんじ
+こむろ,ごろ
+むらた,ひろゆき
+ささがわ,まさる
+さたけ,たつみ
+くわの,まさし
+ごと,あきら
+ふじい,こうじ
+みずこし,えつお
+ふじまき,よしこ
+いでた,こし
+なかつか,しゅひち
+うんの,としお
+すずき,こうじ
+はま,もとのぶ
+とみた,ゆきお
+たにつ,としみ
+すずき,ひさお
+おくむら,かずゆき
+ふくしま,おさむ
+おはし,あきお
+やました,なおき
+かわみ,ひでゆき
+はるた,かずお
+みやもと,はるとし
+つじた,ひさお
+いまむら,かつみ
+さとう,しんいち
+なかじま,けんいち
+しいの,かずや
+ごと,ひとし
+かとう,たかし
+ながい,たけみ
+うちの,かずひろ
+えいじま,ひろし
+やまなか,たかお
+なかむら,ゆご
+すずき,まさみち
+せむら,ちよじ
+なかがわ,かずひこ
+たや,ひかる
+むらかみ,たかお
+いしかわ,せいいち
+せきぐち,けんいちろ
+おの,ひろし
+おいかわ,ゆうこ
+いわい,まさお
+あさひ,さぶろ
+ごと,ゆきこ
+かねたけ,しげお
+うえまつ,みのる
+ふくしま,もとはる
+ふくだ,ちえこ
+すずき,あつし
+おぐら,おさむ
+ひらで,こうじ
+おしげ,のぶお
+まつもと,やすゆき
+ささき,りゅひち
+ごんだ,かつひろ
+まつおか,たかし
+うめざわ,ひろのり
+にしお,こういち
+こじま,しょういちろう
+たにぐち,よしゆき
+おぎす,としや
+さだひさ,くにやす
+ふじわら,けんじ
+はっとり,かおる
+かまた,かなめ
+とば,としのり
+やまだ,ひろじ
+やまもと,たかゆき
+たけうち,きょこ
+あらき,ゆきひこ
+にしお,のぶかず
+もりうち,たいち
+いわた,えりこ
+ささき,えつお
+まえがわ,まさる
+ふくにし,せいじ
+うえだ,まさつぐ
+やまぎし,かずなり
+おの,ゆぞ
+ふじた,よしつぐ
+きたむら,ひろし
+よしはら,こういち
+いわさわ,もりお
+こまつ,なおゆき
+たにむら,としお
+こさか,まこと
+たしま,ただひろ
+にしおか,みきお
+すずき,たけし
+ごと,ひでふみ
+かわはら,せつこ
+たじま,さなえ
+かんの,ひであき
+かたしま,まさろ
+はしもと,やすつぐ
+なかだ,かずのぶ
+かさはら,ともよ
+てらもと,まこと
+わかまつ,けんじ
+いとう,ふくきち
+わだ,よしみつ
+たんじ,ゆりこ
+おつか,たくみ
+つじもと,たつよし
+せりざわ,ひろあき
+とのさき,ひさたけ
+たかぎ,まさゆき
+おふち,かつゆき
+あまの,としお
+なかむら,やすひら
+たばた,じゅにち
+とよずみ,しょじ
+しゅくや,あきお
+たかの,しんや
+むらかみ,みすず
+いしずか,ひろし
+いいずか,せいいち
+しらい,たかあき
+ふくはら,まなみ
+いながき,としつぐ
+ひらしま,ひでみ
+つじばやし,ひろあき
+まつお,めぐみ
+やまもと,けいいち
+もりの,のぶはる
+たじま,ふみえ
+のざき,みちこ
+あだち,かつなり
+たかや,みちお
+おの,あきら
+まつもと,ゆうじ
+はしもと,まさあき
+かの,よしろ
+たけだ,しんいち
+きりはら,ひとし
+たなか,のぶよし
+とりい,としひこ
+なかしま,あきら
+せすみ,すえはる
+まえのその,てつお
+ごと,ひとし
+ほり,あつし
+たかいら,まさみ
+たにだ,まなぶ
+ふるどい,たかお
+おぎや,としお
+なかじま,じゅん
+ほりかわ,のぶたか
+すずき,たかし
+あおき,まさお
+おくはた,かつあき
+くわばら,かずひで
+かんだ,やすし
+すぎもと,ふみこ
+やまもと,けいこ
+かねこ,やすひこ
+なりた,あきのぶ
+にしお,まさお
+いかり,じゅん
+ふるかわ,かずなり
+あらい,しんじ
+くずかみ,ゆきよし
+ごと,きょひち
+やまはら,あきひろ
+やまだ,しゅひちろ
+いじ,まさなお
+くらもち,のぶよし
+ふじわら,かずひろ
+たけだ,まこと
+たかのせ,のぶゆき
+ともむら,まさひろ
+さとう,ゆすけ
+さかきばら,ひろみつ
+みやざき,りょ
+よしだ,ひであき
+たなか,まさる
+ごと,もとゆき
+にしだ,たけひろ
+なかしま,はるお
+きむら,けんいち
+いのうえ,せいじ
+おしま,ひろし
+おひゃ,しゅひち
+みやもと,ますみ
+やました,しげる
+たなか,としろ
+もり,みきお
+なるみ,ひですぎ
+ごと,さとし
+やまちか,えつお
+ささき,しげふみ
+きしだ,はじめ
+おひゃま,まさゆき
+しいの,ゆうじ
+いずみさわ,しゅひち
+かみむら,よしひこ
+さかい,みちお
+ごと,けいいち
+かとう,みつひろ
+たかはし,しげゆき
+くの,まさとし
+いわぶち,たけし
+ほんぶ,まもる
+もりた,まさのり
+せきや,おさむ
+ぬまた,ますみ
+ごと,あつし
+まなべ,おさむ
+いまきた,だいじろ
+こだか,あきら
+よしだ,まさひと
+さとう,みちお
+くすみ,よすけ
+はぎわら,かつや
+ふるせ,よしとも
+むらた,だいに
+おくむら,けんいち
+たにがみ,かずお
+なかむら,きいちろう
+こいずみ,こうじ
+すどう,たつひこ
+いで,まさつぐ
+しもの,まさふみ
+たかぎ,じゅん
+さかい,こ
+いのうえ,かずや
+ふるた,めいさい
+あさい,まさる
+ふかさわ,しょじ
+ごかいち,けんじ
+おつか,たけひさ
+さとう,たけし
+いのうえ,かずゆき
+たけだ,としかず
+ますだ,てるひこ
+やまもと,しょこ
+おはら,まさひこ
+ふなつ,たいち
+こやま,しんじ
+やまざき,まさひこ
+たじり,ひろし
+さとう,てつや
+ながしま,かずひろ
+つだ,よしあき
+ながお,あつし
+おすぎ,かずお
+いとう,みちのぶ
+たまい,きよし
+みやした,くにひこ
+みしま,こうじ
+ほりい,やすのり
+ごと,さとし
+やお,しげる
+ひじや,まさゆき
+ほりい,よしひこ
+たけだ,のぼる
+やすなが,まなぶ
+やまざき,かずひこ
+やの,じゅんぞ
+しわく,としひろ
+かみの,みねはる
+なかじま,つよし
+ますだ,じろ
+おふち,たかし
+ふくざき,ともみ
+いたがき,ひろゆき
+しも,ともなり
+ふくい,ゆたか
+いび,よひちろ
+こむかい,よしひろ
+ふじえ,なおあき
+まつき,まこと
+こばやし,じゅいち
+ごち,たつや
+はせがわ,ひでじ
+かわごえ,たかよし
+ながさわ,かつみ
+やました,ひでひと
+いしざき,あきら
+おだ,みのる
+しんど,あきら
+しもさこ,たいじろ
+つつみ,くにひこ
+きたおか,じろ
+きたざわ,れいこ
+なかおか,しげき
+いしばし,ちえ
+はしぐち,のぶあき
+わたなべ,じにち
+おば,きよみ
+はら,のぶゆき
+しみず,かずひこ
+いざわ,かずよし
+よしやま,かずとし
+すぎもと,けん
+こまつ,ともふみ
+へんみ,たいせい
+ふかだ,さかえ
+こばやし,しんいちろう
+すぎもと,みちひろ
+よこやま,たかあき
+たなか,はるひさ
+みやたに,きよし
+はせがわ,かずひこ
+きたがわ,こうじ
+ふくおか,えいじ
+おむら,みゆき
+いぐち,みわこ
+はやし,あきひろ
+ひらい,かなめ
+おもり,かずや
+おぎの,こみな
+たむら,よしひこ
+たけだ,あきら
+みやなが,ひろゆき
+ひらい,こういち
+にしむら,こぞ
+はぶち,のりふみ
+おくら,よしひさ
+はった,けんじ
+いこま,つとむ
+あさひな,のりひこ
+かの,さとる
+なかにし,あつし
+みやざき,たかあき
+いちかど,ひろゆき
+ながさわ,さとる
+はまぐち,まこと
+やしろ,まりこ
+むらお,かえこ
+おぎまち,れいこ
+しろた,いちろう
+てしま,みつお
+かわさき,ひであき
+やまだ,こういちろ
+ほんだ,のりまさ
+かねこ,ひろゆき
+まつしま,ひでかず
+こみや,よしあき
+わだ,えいじ
+よしだ,ひろゆき
+もりさき,たかし
+いまひがし,しんご
+くらもち,しゅじ
+ゆかわ,ひろむ
+てらお,とよあき
+こんど,あきのぶ
+さいとう,はるお
+よしなが,ひろのり
+ゆあさ,まき
+とべっと,あきら
+せんが,まさゆき
+にしぐち,みつお
+うえだ,やすゆき
+やまおか,おさむ
+やまもと,まさひで
+ふじかわ,しげる
+おぐら,ひろずみ
+かわの,こうじ
+かねずか,つよし
+おかもと,たかし
+かわつき,ゆうじ
+すえよし,ひでお
+かわべ,わたる
+たかはし,さとし
+もり,じろ
+すぎやま,まき
+まえやま,まさゆき
+こめたに,ひろし
+ふじわら,はるゆき
+あでがわ,かずま
+とみざわ,よしお
+なかた,としあき
+たちばなき,なおき
+こだま,としお
+はない,かずお
+ちのね,としたけ
+しみず,たかし
+たきざわ,ひでお
+くどう,ひろあき
+もりおか,ゆすけ
+かねひら,かずお
+さとう,たつや
+やばな,しげゆき
+さかずめ,たかゆき
+はしもと,しんすけ
+よのもと,てつじ
+ばんしょ,きよし
+ふちえ,ゆうじ
+すずき,きよし
+すずき,ひろゆき
+こばやし,おさむ
+かとう,まさあき
+くすだ,はるあき
+みやたけ,しょご
+さの,ちほ
+まるた,かずお
+まきた,こういち
+かしわぎ,まさと
+たに,けんじ
+ありやす,まさかず
+かとう,あきお
+たなか,ひろのぶ
+つじた,としお
+おがわら,ひろゆき
+むらさわ,きよ
+せきもと,ひでき
+つじもと,くにお
+しおたに,かずお
+みわ,いくお
+ながさか,ゆきのり
+こいで,かずひろ
+おぐら,たかつぐ
+つつみ,かずいち
+ふかみ,よしひろ
+よしだ,ひでじ
+もろほし,としあき
+しおの,まりこ
+やまぐち,はじめ
+まみや,よしみ
+さいとう,えつお
+あきやま,しゅじ
+あだち,まさひと
+かわの,ひろし
+なかむら,ただお
+やまぐち,としひろ
+さくま,ひさし
+もちずき,ひさと
+わたなべ,よひちろ
+こばやし,としお
+きし,せいじ
+はやさか,あきら
+こふじ,つとむ
+さいとう,たかのり
+のむら,じゅにち
+まつい,たかし
+はやしだ,すすむ
+おがわ,ただひで
+ほんだ,のぶみち
+こざわ,つかさ
+ささき,しげゆき
+わだ,きよし
+やまわき,かずひろ
+ふじい,としみつ
+たきざわ,あきひろ
+さとう,としき
+みかみ,ひでみ
+みわ,よしたか
+おち,よじ
+ふじた,せいじ
+ながた,みれい
+くぼた,みちよ
+あおがき,まさのぶ
+かりやど,あきこ
+みはし,しゅんじ
+むらまつ,ゆきお
+かたやま,まさえ
+やまざき,たかし
+おぎそ,たかし
+ばば,よしもと
+みしま,ひであき
+やの,きよし
+なかじま,たみ
+たけした,はるよ
+なかの,やすひこ
+たかの,こうじ
+かわだ,さとし
+たじま,のぼる
+もちずき,ひろし
+きむら,けいじ
+あきほ,いちろう
+やまもと,ようこ
+かわせ,げん
+ささ,なおこ
+のせ,しんいち
+ひらた,ちえこ
+こばやし,おさむ
+あがわ,としひこ
+てらもと,きよたか
+おざき,まさかず
+もり,まさひこ
+うつ,おさむ
+わかまつ,あきひこ
+いまい,きょこ
+くぼ,みのる
+たかの,ゆき
+ひびの,かずまさ
+すずき,こうたろう
+たなか,きよし
+さかもり,かつみ
+たきざわ,とみもと
+よしかわ,あき
+とよだ,ゆたか
+うらしま,ひさお
+こんの,かずなり
+てらかわ,なおき
+こばやし,しゅひち
+きむら,ゆすけ
+かみお,ひろふみ
+くればやし,さかえ
+かねだ,きょこ
+かわもと,ひとし
+いまむら,としさだ
+こはぎざわ,ふみこ
+しのざき,たかひろ
+めぐろ,じゅんじ
+くにさだ,ひでお
+もり,はるき
+かわぎし,たかはる
+おすが,かよこ
+すだ,てつ
+なかむら,たえこ
+いしこ,りゅひち
+すずき,ゆうじ
+きくち,もとひろ
+おぎた,たけなが
+たかやま,あきひこ
+なかしま,たかこ
+つじもと,れい
+はやま,きよみ
+いたがき,ひろこ
+やまもと,こへい
+あだち,よしひろ
+きたみ,みのる
+たまき,しゅひちろ
+まえだ,さとし
+あだち,まさはる
+たまだ,きよ
+もりぐち,たかゆき
+よしなが,かえで
+まえだ,ひろし
+わたなべ,きよかず
+たかはし,じゅん
+いしこ,なおや
+おじま,かずひこ
+しばやま,あきら
+しば,たかとら
+ともの,きよし
+すみ,ひろし
+みつなが,くにひろ
+うらの,まさあき
+よこずか,ひろあき
+ふじかわ,ひろし
+かぶらぎ,ひろひで
+よしだ,みちお
+さいとう,ゆうじ
+やの,しょぞ
+よこた,ぐんじ
+なかむら,ゆうじ
+なみさと,のりこ
+ねぎし,たえこ
+きの,たまき
+なかじま,よりたか
+つつみ,てつろ
+こだ,かつじ
+ほり,よしあき
+この,たけひこ
+わだ,けんいち
+まつなが,まさふみ
+にしむら,あきこ
+いい,まさき
+やすい,さとし
+こばやし,はるひろ
+やまさき,まさゆき
+すずき,ゆたか
+いわた,よしあき
+しげもり,たかひさ
+いまむら,なおみ
+つかもと,あつし
+いとう,まさかず
+くぼ,けいぞ
+さなえ,のぼる
+こだま,あきら
+いとう,しゅひち
+あくつ,やすひこ
+あたらし,みゆき
+たぐり,かずや
+じょの,ゆみこ
+あかまつ,さだお
+あさの,としゆき
+なかがわ,やすひろ
+かわしま,なおき
+さとう,しゅひち
+おぐら,まさひろ
+いしばし,やすゆき
+まつおか,はるひこ
+たきざわ,たかし
+いたくら,のぶたか
+ほんご,あきよ
+ながやす,しんすい
+うちだ,じろ
+やました,かずまさ
+いしぐろ,あきお
+もり,かつし
+たなか,ようこ
+ひぐち,みえこ
+きと,じゅんこ
+たなか,たつや
+すずき,けんじろ
+すがい,けんじ
+よねざわ,まさあき
+あらかわ,あさこ
+いのだ,ひでお
+かとう,せいじ
+かげやま,ひろゆき
+みやわき,たかよし
+みちやま,まさよし
+もり,さとし
+もりさわ,よしかず
+にしむら,たかゆき
+さいとう,ひろし
+やまもと,つねお
+まつうら,ひろし
+はせがわ,とよひこ
+うちだ,こういち
+やすだ,しげと
+いしだ,しんいち
+もりの,かずゆき
+きたやま,かずひろ
+さかもと,けんじ
+そうみや,よしかず
+きくち,りゅじ
+しぶい,やすひさ
+とみた,まさお
+もり,まさし
+やまぐち,としひこ
+きたやま,ただやす
+まんもと,としあき
+たなか,しんいちろう
+もり,かつゆき
+いたくら,やすのり
+いちみや,よすけ
+にしやま,よしあき
+わたなべ,つとむ
+はんがい,じゅにち
+ながの,こういち
+しば,とおる
+こじま,かつまさ
+たたの,よしひろ
+かわばた,よしのり
+たけだ,ひろゆき
+おむら,しんいち
+さこ,こうじ
+いしはら,あつし
+いちのせ,こうじ
+きしだ,じゅんじ
+みかみ,よしひろ
+はやし,あきら
+ささき,ゆたか
+よねみつ,かずひろ
+せきね,いさむ
+いまにし,まさし
+あおき,かつじ
+すぎやま,ひろし
+なかもり,はるお
+しまだ,けいいちろう
+ますだ,けんじ
+つぼい,すすむ
+せきや,さとし
+きじま,まさひこ
+よしずみ,たろう
+やなぎだて,いくろ
+しげまつ,ひろし
+いのうえ,みのる
+たけうち,すすむ
+たなか,よしみ
+ひがし,じゅん
+たかた,たくじ
+なかい,あゆみ
+はせがわ,かずなり
+たに,よしなり
+こばやし,きよただ
+たかはし,ただし
+あべ,いさお
+こばやし,よしふみ
+おの,まさひこ
+たかはし,ふさお
+くろだ,ひろし
+わたなべ,すすむ
+あべ,のりお
+いのうえ,ひでたか
+えんど,しんや
+ののした,はるやす
+かない,なおき
+こたき,けいこ
+たかはし,たけし
+しげやま,しゅじ
+ふかだ,なおひろ
+しおじ,つぎお
+もりや,じゅにち
+おつか,たかし
+あべ,みきとよ
+ひらい,あさこ
+むらまつ,まさと
+みずた,よしぞ
+ほりえ,いくや
+ひかさ,ゆきひろ
+おしたに,あつし
+こばやし,ひろし
+くらはし,しんじ
+ひらばる,ようこ
+ふじえだ,よしお
+とざわ,しげふみ
+やなせ,くみこ
+くぼた,じょじ
+まみや,ようこ
+ゆはらぎ,とみお
+ちょなん,あきお
+みよし,かつゆき
+のじま,ふみひろ
+もりさき,まさや
+こやま,まさたか
+かとう,たかゆき
+きのした,じゅん
+かわむろ,まさみ
+もり,かずゆき
+ひらした,まさたか
+かわしま,まこと
+ふるかわ,かつみ
+いんでん,ひでゆき
+やまだ,たけお
+つくだ,まこと
+いわさき,かつみ
+おまえ,しげる
+すずき,よしお
+はら,まさき
+さかい,まさみ
+もりや,よしまろ
+みやもと,とおる
+しげた,よしのり
+いしかわ,まこと
+たざき,としあき
+すえひろ,ひろき
+かねだ,やちよ
+すえひろ,さとし
+ささき,けいいち
+ひやま,さだき
+きどぐち,りょ
+しまだ,あきと
+みやけ,まさひこ
+もり,やすゆき
+しらかわ,みのる
+わかばやし,まさひと
+やました,おさむ
+あまの,まさゆき
+たけいち,まさひこ
+しんじょ,たつむね
+かさはら,かずまさ
+たなか,としひろ
+おくだ,まさひろ
+かとう,ひでのり
+かわさき,さだむ
+かとう,むねや
+いちせ,こういち
+きたがわ,じゅにち
+やすい,りゅさく
+えだ,たつはる
+はやし,よしひろ
+ながい,としゆき
+とのむら,ひとみ
+たなか,じろ
+くりばやし,こうじ
+きむら,しんいちろう
+はぜき,かずお
+あんの,じゅんじ
+たかよし,ひろたか
+あんざい,けいこ
+たかはし,てつや
+はらの,けいし
+なかがわ,あきら
+にしかわ,ともこ
+しぶや,まさこ
+かとう,かずお
+あだち,まさあき
+さくらい,げんへい
+くさの,よしのぶ
+みなみぞの,とみかず
+つじむら,たつじ
+やまだ,さとし
+かつしま,まさのり
+こやなか,のぶゆき
+たばた,よしのり
+あだち,かつこ
+ひろの,のぶゆき
+つざき,あつし
+たちばな,よしさと
+べっしょ,しょじろ
+まつした,おさむ
+たにぐち,つねお
+なかとも,かつよし
+にしむら,ゆきお
+みうら,かずひろ
+こんど,のぶひろ
+まつい,としひろ
+まつもと,やすたか
+ほりい,としひろ
+ますもと,みのる
+なかじま,あきとし
+きむら,いさむ
+みわ,しげみ
+いしばし,ひろゆき
+えぐち,あきら
+いなふく,よしひろ
+わたぬき,せいいち
+ひぐち,ひろあき
+いけの,しげあき
+うめはら,かずみ
+のざわ,ちゅぞ
+いまい,けんしゅ
+たかはし,むつみ
+いいだ,ひろし
+ふじかわ,まこと
+にしえ,おさむ
+こすげ,まさき
+おた,ひろかず
+のじ,ひろし
+こぼり,つとむ
+すぎやま,ちかし
+かわた,けんいち
+さめしま,ひろゆき
+こやま,やすし
+えんかい,のりひさ
+こもだ,じゅん
+おがわ,やすひろ
+やまむら,よしひこ
+えのもと,きくお
+たかだ,まなぶ
+なかみぞ,ただし
+おかむら,まさき
+かみばやし,かつじ
+ふじもり,はるひさ
+くろだ,かおる
+さとう,ただひこ
+よしむら,ひろし
+もたい,じゅんこ
+むらた,くにひこ
+みわ,みきお
+いはら,よしあき
+いまい,てつひこ
+ひの,みねお
+まつもと,きよたか
+せと,たかし
+くまがい,つとむ
+やまだ,こういち
+わたなべ,かずまさ
+やさか,れいじ
+さとう,ひさただ
+みやたけ,ゆみこ
+まつうら,ひろし
+まつした,せいじ
+うらべ,みきお
+しがき,しんいち
+てらだ,よりえ
+いわもと,たきお
+いのうえ,たくじ
+もちずき,とおる
+よしずみ,なおと
+みうら,えみ
+みずの,たかし
+よしい,かずお
+ふるい,たかし
+はやし,よじ
+しらいし,やすひろ
+すがわら,よしお
+なかい,ゆうこ
+のふじ,ひろし
+さとう,あきひろ
+くろだ,ひろのぶ
+いけだ,ひとし
+さが,まこと
+みやかわ,いさむ
+わらしな,まさよし
+きたがわ,よしひと
+いまい,よしあき
+みさき,じろ
+いしだ,ゆきお
+りくら,えいいち
+しょじ,みつる
+ふくなが,たかゆき
+くろき,じゅにち
+またき,よしひろ
+せきね,しげあき
+やました,ひでお
+たなか,たつお
+おおはま,けいいち
+おつぼ,よしはる
+たい,ひろかず
+つるや,きいち
+よしだ,たかし
+ますみつ,けいし
+かすや,いくひさ
+よしだ,しげる
+かわむら,のぶゆき
+はやし,ふみあき
+くにもと,ひろのぶ
+あらかわ,たけし
+なかむら,ひであき
+いしぐろ,こういちろ
+はやみ,よしかず
+みなみぞの,たかお
+さかた,しょざん
+かわもと,まさはる
+むらおか,みつひろ
+いとう,よしあき
+わたなべ,まさひろ
+のむら,よしあき
+さとう,ひさはる
+わたなべ,まさのり
+こばやし,よひち
+ぬるき,たかし
+よしだ,しげお
+さいとう,みのる
+ひらい,ひでき
+きむら,くにひこ
+おく,まさゆき
+はやさか,ひなこ
+あさの,まさのり
+ふじさき,せいじ
+あきもと,かつひこ
+しまだ,きんじ
+みずかみ,みのる
+なかがわ,ふみかず
+さとう,やすのり
+こばしり,よしお
+あらき,みちお
+すずき,まさかず
+にしで,はるな
+おちあい,ひろし
+のなか,まさかつ
+やすい,ひでひこ
+こはた,よひち
+みのしま,ひろし
+てらしま,よしゆき
+やくわ,たかし
+すがわら,ろ
+みつはし,やすこ
+のむら,けんじ
+ちょ,しんや
+さとう,りか
+しずはら,まさえ
+はやしかわ,まさはる
+にわ,とおる
+みえの,てつや
+しまだ,けんじ
+なかむら,よしお
+ひらの,なおとし
+やまとや,せつ
+つのだ,よしひさ
+こばやし,たかし
+さかくら,りゅじ
+まつだ,けんいち
+いまむら,あつお
+やぎはし,きみひこ
+おぎの,よしお
+たなか,みちお
+ひが,てつろ
+さこ,のりこ
+たざき,あずみ
+いいだ,りょこ
+いいだ,れいこ
+まつぐま,けんじ
+むらた,よしお
+やすもと,けんいち
+しみず,ひでと
+わくい,としお
+たかはし,りょひち
+きたい,かずひこ
+あだち,やすのり
+はなぶち,のぶあき
+さとう,きょこ
+あらい,まさあき
+たけなか,せいし
+かい,なおこ
+あかだ,ひろお
+くにすえ,よしまさ
+まえかわ,よしかず
+みなみ,つとむ
+たきがみ,たもつ
+まつい,まさはる
+しらい,りょすけ
+たけよし,しげほ
+たかだ,けん
+たかぎ,まこと
+くどう,ひろし
+しまだ,よしたか
+かとう,よしお
+しぎょ,としひこ
+ひろの,しょういちろう
+きのした,はじめ
+しみず,くにひろ
+しむら,としひこ
+くさかり,さとし
+かるべ,みほこ
+まつもと,しずお
+しまむら,ひろあき
+かつかわ,あきら
+いず,みつし
+さくらもと,ひでゆき
+もりた,まこと
+たなべ,まさみち
+はっとり,せいのすけ
+りゅご,きよたか
+おまつざわ,たかひこ
+おとわ,きよたか
+こだま,のぶこ
+かやしま,かずお
+こばやし,ひであき
+くにえだ,そおじゃ
+こ,よしえ
+にしやま,しょぞ
+わだ,ひろあき
+にしもと,みほ
+さいとう,としはる
+としま,なおゆき
+おつか,とまさ
+おの,たかお
+すずき,いさお
+さくらい,いつじ
+おぜき,じろ
+おかだ,くにいち
+おがわ,ふみと
+いけがみ,しゅにち
+こまつ,まさはる
+よしい,ゆきよし
+ひらの,せいいち
+たかすか,ゆうじ
+はしもと,しげる
+くわえ,まきお
+かねまつ,かずなり
+まつお,ひとみ
+いど,ひろや
+いの,たかし
+さいとう,かつのり
+かみやま,よひち
+こしもと,ほこく
+おがわら,まさる
+たかはし,たかし
+ながまつ,たかし
+すずき,たかし
+てらお,まさみつ
+ほりけ,ひろし
+すずき,ひでとし
+おがわ,たかのり
+みやもと,よしあき
+おすみ,しょいち
+いわぶち,ひろし
+まつうら,やすゆき
+さわち,きくお
+てらだ,かねひで
+いばやし,けいいち
+いわせ,たかひこ
+おがわ,じゅにち
+あそ,たけし
+ふくもと,こうじ
+いで,こういち
+かわさき,よしのぶ
+はるな,まこと
+たじま,しんいち
+かなやま,ごろ
+たなか,よじ
+まつざき,かおる
+いのさか,たかし
+おしやま,こういち
+たけうち,のぶお
+ささおか,ひろゆき
+こもり,のぶやす
+たじま,たつお
+いけがみ,ちかお
+やまぐち,せつこ
+かわかみ,ゆたか
+いせき,じゅにちろ
+たけだ,せいじ
+たかやす,やすとも
+かめだ,さゆり
+ふじの,ふみたか
+みさき,てつじ
+なかむら,まさのり
+おがわ,ゆきふみ
+なかざわ,よじ
+せき,わたる
+よしかわ,まさお
+たがわ,こうじ
+みたに,よしひさ
+すえた,たかし
+いぬい,としゆき
+おさだ,まさあき
+ふるかわ,ひろあき
+すずき,けんじ
+きたむら,まさあき
+こまつ,しげき
+あさだ,えいすけ
+かんざき,ひでゆき
+うすい,まなぶ
+ふるや,たけとし
+よけむら,まこと
+よこえ,やすのり
+あかいわ,としあき
+ふくしま,こうじ
+やじま,ひでとし
+はら,やすくに
+きしだ,たくや
+くぼ,たかし
+かたぎり,としひこ
+いちい,あきひと
+まつき,けん
+わけべ,さとし
+まるやま,かつお
+つばき,まこと
+さの,りょすけ
+みやもと,ひろたか
+ふくやま,よひちろ
+うえむら,やすまさ
+くわかど,よしふみ
+くにまつ,としひこ
+かたおか,ふみよし
+とみた,よしき
+なかむら,としひこ
+くどう,ひろやす
+おぶち,やすし
+よしかわ,みゆき
+かげやま,ゆぞ
+とだ,みつる
+たかはら,やすのり
+まつした,ふみや
+こだいら,としあき
+しんかい,けんじ
+てらだ,ひでお
+かわきた,しげる
+みうら,ひろし
+あべ,まさとし
+にしかわ,まさあき
+ほそだ,まさる
+ますだ,りき
+かざま,まさる
+あらまき,のりゆき
+わたぬき,かずのり
+さかもと,あつひこ
+あまがみ,よしてる
+この,てるひこ
+おくだ,とおる
+おはく,まこと
+なかむら,けいいち
+なかむら,さとし
+うしやま,しんじ
+やしき,ひでし
+きのせ,もとお
+わかやま,まさひと
+いまい,はじめ
+まえだ,さなえ
+まつした,ひとし
+ひらぐち,ゆきひろ
+わだ,いわお
+わたなべ,よしお
+まつい,たけし
+まつもと,かずお
+なかむら,みつぎ
+たきた,つよし
+ますだ,しん
+みやうち,いさお
+しむら,よしのり
+まつい,みつお
+はらはた,よしふみ
+ひさたに,ゆひち
+かがみ,ゆきお
+よしむら,あいいちろう
+おつか,しゅにち
+たなか,こういち
+ひらの,まさゆき
+たけすえ,きよし
+にしの,えいじ
+おつか,ひろし
+おだ,あつこ
+しみず,そひち
+はまもと,しんいち
+みやまえ,みきお
+ながしま,じゅにちろ
+みつめ,よしと
+かごたに,ともこ
+よこやま,まゆみ
+さかた,さかえ
+おいくぼ,たきこ
+くらもち,とみたろう
+あんざい,あつし
+ふくしま,まさつぐ
+なかむら,ゆうじ
+いとい,けいご
+ほしの,しんいち
+こいで,しゅ
+おざき,てつや
+せじも,よしゆき
+すどう,めぐみ
+かじわら,しんじ
+すずき,ゆたか
+ほしの,たかよし
+なかむら,まさなり
+もりた,えいじ
+やまざき,こうじ
+おくがわ,よしかず
+ながはま,たかふみ
+よしむら,けんじ
+まつだ,あきひで
+ほかぞの,ひろや
+あべ,まさゆき
+ながい,りえ
+とがし,ひとみ
+やざき,ゆりこ
+やまうち,みちこ
+みさき,ひろひこ
+よしだ,じゅん
+なかもと,まさみち
+しのはら,まさみつ
+なかにし,みどり
+やじま,かつひろ
+とよふく,はるこ
+たかしま,よしあき
+ふしにし,あきかず
+むかい,としひこ
+にしむら,まさひこ
+かわばた,ひろゆき
+むかえだ,あきみつ
+しせき,たかとし
+かたおか,あつひさ
+ないとう,としつぐ
+みと,こうじ
+おにし,としひと
+よこやま,ていぞ
+なかむら,ひでき
+いざわ,なおき
+たにがわ,しんじ
+すぎた,しげる
+おした,つねかず
+しまだ,あきら
+やまむら,きよし
+ふくおか,ゆうじ
+やなり,かつじ
+すずき,きみえ
+さかい,てつや
+やまだ,ひろゆし
+やまこし,さとし
+のもと,さとる
+たけした,いっしん
+みのだ,よしひで
+あさい,ひろき
+むねやす,やすと
+かわにし,としろ
+さかぐち,たかし
+やまざき,たつあき
+あさおか,ひさのり
+きのした,とみえ
+みま,ゆか
+ふくもりた,まさゆき
+かじやま,ともこ
+やまざき,こういち
+さとう,まさし
+かわべ,ひろあき
+まるやま,しんじ
+おがらね,さとる
+どい,ゆきひろ
+たなか,しげる
+おぎしま,としゆき
+いのうえ,もとき
+ふるや,しげゆき
+ふくい,しほ
+ますだ,ひでゆき
+ほんだ,まこと
+なかにし,やすひさ
+みやまえ,としひこ
+おかの,ひでのぶ
+ばば,みきぞ
+だけやま,きよみ
+やまぐち,しげお
+はやし,よしこ
+とみずか,じゅにち
+なかにし,としや
+あべ,みつひこ
+あおやぎ,のぶよし
+てらわき,のぶこ
+かたぎり,ゆぞ
+なかがわ,みつお
+こばやし,おさむ
+うえだ,ひろゆき
+ふじわら,ひろのり
+はやさか,つよし
+きむら,たかひろ
+ごと,ゆみこ
+しむら,なおたか
+せき,なおひこ
+あいざわ,ひでお
+のむら,よひちろ
+かんだ,さくこ
+うらい,やすお
+もとやま,としろ
+かみむら,やすひろ
+ひらい,はるひさ
+あらい,はじめ
+さいとう,ひろこ
+まきはら,きよこ
+おわく,のぼる
+もちずき,まさお
+はんがい,かずひろ
+いのうえ,ひろみ
+ながいし,あきひろ
+にしもと,たつみ
+つちや,ひろし
+まつもと,まさひろ
+ほんじょ,けいぞ
+いわい,としかず
+くぼ,あきお
+はこい,こすけ
+わたなべ,しゅじ
+すぎた,ますみ
+なかむら,よしはる
+からさき,てつお
+のりまつ,まさゆき
+くすもと,ともなり
+にしむら,よひち
+こすげ,まさし
+ふくみつ,おさむ
+やまぐち,まさひろ
+いしぐろ,よしひろ
+とくだ,かずひと
+ありとみ,かつみ
+ひやま,あきら
+ひろせ,しょひち
+にしだ,たかし
+はっとり,しょご
+ひらばやし,たつや
+はらしま,まさお
+はら,まさお
+はまの,のりお
+はまだ,としみつ
+はしもと,かずひろ
+はやし,こういち
+ひぐち,みつひこ
+ひらの,たかよし
+ほんま,さとし
+はるまし,まさな
+はしもと,やすみ
+ひだ,さぶろ
+ひらすか,かずみ
+はぎわら,なおや
+はまだ,じつろ
+はしもと,しんいち
+ほんま,まさとし
+ほかり,とおる
+はらだ,よしみ
+はやし,けんいち
+ほりべ,えいじ
+はしもと,たみお
+はせがわ,かずゆき
+ひろべ,まさとし
+はしもと,かつひこ
+ひらの,ひさじ
+はしもと,まさみ
+ひじかた,ゆたか
+おぬま,まさはる
+はぶつ,よしまさ
+ひだか,やすお
+はしもと,たかし
+はまの,ちょじ
+ひしぬま,こういち
+はら,きみえ
+はなき,みちはる
+はら,みよし
+はが,やすひろ
+はなだ,みちこ
+ひらやなぎ,けんじ
+ほりかわ,かずお
+ほりかわ,まさお
+はしもと,ただかず
+はた,みきお
+ひらい,かずみ
+はらぐち,まさゆき
+ひらお,けん
+はしずめ,つぎえ
+つじ,いさお
+さくらざわ,ひろゆき
+あべ,かずひろ
+あべ,きんや
+あべ,なおき
+あべ,のぶゆき
+あべ,よしみ
+あべ,しんいちろう
+あかぎ,けんじ
+おかもと,たけお
+えんど,まさのり
+あかいし,のぶたか
+にしな,みつのり
+あきもと,けん
+あきずき,あきこ
+ひらばやし,としひこ
+あめみや,じゅん
+あみの,やすまさ
+あなみ,ゆひち
+あなざわ,かんた
+あんどう,まなぶ
+あんどう,ひでとし
+あおやま,こういち
+あおやま,まさひろ
+あおやま,ひろた
+あらい,こうじ
+あらい,おさむ
+あらい,たかお
+あらい,やすひと
+あらい,しずお
+あらき,みちこ
+すがわら,つねはる
+あさひ,まこと
+あさくら,としお
+あさみ,まさとし
+あさむら,しげまさ
+やましな,あきら
+あさり,あきひろ
+あさず,まさかず
+あつみ,かおる
+ばん,ゆうぞう
+べっしょ,ひろき
+ちば,まさき
+ちかきよ,こうじ
+ちむら,しんいち
+どばし,こういち
+えばし,まさし
+えびはら,まこと
+えがみ,たまお
+えぐち,まさやす
+えぐち,みゆき
+えじり,ともみ
+えんど,しげる
+えんど,たかし
+えのもと,ふみとし
+ふちの,かつみ
+ふじい,かずお
+ふじい,まさこ
+いしい,ともこ
+むらやま,よしゆき
+ふじかた,ひろやす
+ふじかわ,けいいち
+ふじまる,あこ
+ふじもと,なおひさ
+ふじもと,たみえ
+ふじもと,たけお
+ふじの,しょへい
+ふじお,よしふみ
+ふじさか,ゆきお
+ふじさわ,ゆきたか
+ふじさわ,さとし
+ふじた,すぐる
+ふじた,まゆみ
+ふじわら,たつお
+ふじわら,よしつぐ
+ふじわら,とおる
+ふかだ,おさむ
+ふかがわ,てつ
+ふかの,じゅん
+ふかわ,としひさ
+ふかや,たつや
+ふかざわ,かずとも
+ふくだ,ひさと
+ふくい,くにひろ
+ふくもと,ただよし
+ふくもと,としかず
+ふくもと,やすとも
+ふくもと,としあき
+ふくしま,さとし
+ふくとみ,のりお
+ふなき,たかひろ
+ふるさわ,まさゆき
+あびこ,まさゆき
+ふせ,とおる
+ふせがわ,まさゆき
+ふしみ,しんしょ
+ぎま,ふみひろ
+ごみ,あつひろ
+ごと,けい
+ごと,せいじ
+ごと,としかず
+ぐんじ,ひとし
+はぎわら,こうじ
+はぎわら,ひろし
+はいの,ひろたか
+はかまだ,ひろあき
+はまだ,まさひこ
+はまだ,すすむ
+はまぐち,ひろゆき
+はら,りゅさく
+はら,しんじ
+はら,たろう
+はら,まさゆき
+はらだ,のりお
+はらだ,よしなお
+はらだ,なおひさ
+はらこ,かずよし
+はるな,まこと
+はせがわ,のりこ
+おしま,ともあき
+はしもと,ひさのり
+はたの,みよ
+はたざわ,よしこ
+はと,いちろう
+はつみ,ひさよし
+はっとり,のりゆき
+はやかわ,ゆき
+はやかわ,ゆきお
+はやかわ,けんじ
+はやの,しんいち
+はやせ,きよたか
+はやし,くにひこ
+はやし,まさなり
+はやし,ますみ
+はやし,みなこ
+はやし,のりこ
+いもと,たかひろ
+はやつ,たかあき
+ひがき,たくや
+ひがし,あきら
+ひの,たかし
+ひらばやし,かずひろ
+ひらの,かずみち
+ひらの,まさし
+ひらおか,あずさ
+はらさき,ともゆき
+ひらて,としひろ
+ひらやま,あつろ
+ひろえ,としひこ
+ひろかわ,あつし
+ひろせ,しんご
+ひろし,たかはる
+ひさむね,かおり
+ほんだ,よしひろ
+ほりかわ,けいじ
+ほりこし,せいた
+ほりこし,まさよし
+ほし,ひろし
+ほしこ,ひであき
+ひらさわ,すみこ
+ほそい,けんじ
+ひょど,なおと
+ひょど,かずひろ
+いべ,けいいち
+いちかわ,まゆみ
+いちかわ,たつや
+いちかわ,ひでお
+いちのみや,とおる
+いで,よしかず
+いで,しゅひち
+いがらし,ひでたか
+いがわ,のぶこ
+いぐち,けいこ
+いいだ,こういち
+いいだ,のりあき
+いいじま,しんいち
+いいつか,ひろゆき
+いいずか,ゆきお
+いいずか,まさひろ
+いからし,さだゆき
+いけだ,しんいち
+いけだ,たかし
+いけだ,ゆすけ
+いけだ,しんいち
+いけなが,まさひろ
+みつもと,まさる
+いけやま,ゆみ
+いけざ,みつる
+いけざき,みつゆき
+いくた,ゆり
+いまい,やすゆき
+いまいずみ,きよし
+いまむら,しんや
+いまむら,しゅひち
+いまにし,ひろし
+いながき,こういち
+いながき,のぶお
+いながわ,かずのり
+いなほ,ありさ
+いなみ,ともき
+いなつぐ,なおき
+いなよし,まさふみ
+いの,じゅん
+いのおか,ひでと
+いのうえ,ひろお
+いのうえ,ひろたか
+いのうえ,ひろゆき
+いのうえ,ひとし
+いのうえ,おさむ
+いのうえ,てるゆき
+いのうえ,よしのり
+いりさわ,のりひろ
+いせ,ひろゆき
+いせき,えいり
+いしだ,ともひろ
+いしだ,かおり
+おかだ,かつゆき
+いしい,たつや
+やまだ,まさる
+すぎはら,ひろみち
+いしかわ,みさお
+いしかわ,たつお
+いしかわ,かずと
+いしまる,しんや
+いしもと,たかゆき
+いしもと,たけし
+いしもと,ひでかず
+いしの,たかし
+いしつか,たかあき
+いしわた,ゆひち
+いしわた,きくお
+ひらばやし,あきひこ
+いしざき,ゆきお
+いしずか,かつや
+いそだ,やすのり
+とおか,つよし
+くりはら,はるみ
+いとう,えいじ
+いとう,ひろぶみ
+いとう,ひろたか
+いとう,かつら
+いとう,まさこ
+いちやなぎ,まさみ
+いとう,のりこ
+ながた,たつお
+いとう,まさひろ
+かみかわ,けんじ
+いわい,かくいちろう
+いわかわ,さとし
+いわみ,たくや
+いわみ,ゆうじ
+いわもと,えいじ
+いわなが,もとのり
+いわさき,とおる
+いわさき,たけし
+いわせ,としゆき
+いわした,けいじ
+いわた,けんいち
+いわた,よしあき
+いわたて,えつき
+いずみ,ようじ
+じんの,さとし
+かがわ,しげひと
+かいぬま,つねひろ
+かじた,かつみ
+かけがわ,たかはる
+かきぬま,ただみつ
+かまだ,のぼる
+かまた,てるひさ
+かめたに,としひこ
+かみじょ,たかし
+かみむら,ともこ
+かみやま,まさひろ
+かなうち,けいこ
+たけうち,ふみかず
+かねこ,ひろゆき
+かねこ,おさむ
+かんぬき,こせい
+かの,さとし
+からはし,ひでき
+かさい,みわ
+のむら,たかやす
+かさい,ひでお
+かせ,のぶお
+かしくら,たかみち
+かしむら,かずたか
+かしわぎ,なおき
+かたの,たかひろ
+かたおか,ひろき
+かとう,くにあき
+かとう,まさのり
+かとう,まさし
+かとう,まさゆき
+かとう,たかゆき
+かとう,みき
+かとうおか,やすのぶ
+かつい,やすき
+かつまた,せいいち
+かわばた,きよくに
+かわちや,ひろあき
+かわだ,みのる
+かわだ,えみこ
+いりさわ,ももこ
+かわい,じゅにち
+かわかみ,よしろ
+かわかみ,さとし
+かわみ,かよこ
+かわむら,てるひさ
+いしい,やすし
+かわの,おさむ
+かわむら,なおき
+かわさき,けい
+かわせ,まさはる
+かわせ,たかあき
+かわせ,たかし
+かわしま,ゆかり
+かわたに,じょじ
+けいだ,みのる
+きだ,たかお
+きだち,としあき
+きはら,りせい
+きくかわ,ひろゆき
+きもと,ふみお
+きむら,みわ
+かまた,けんじ
+いくみ,みのる
+きのした,あきら
+きのうち,けんじ
+きし,やすき
+きしもと,まさひろ
+きうち,きよひろ
+こば,のぶゆき
+もり,なおき
+こばやかわ,ひろし
+くぼた,えいじ
+こばやし,えいこ
+おかわ,くにひこ
+こばやし,まさあき
+こばやし,しげこ
+こまた,しげお
+こばやし,ともえ
+こばやし,ゆかり
+こばやし,まさひで
+こだま,けんいち
+こえじ,ひろゆき
+こぐち,まゆみ
+こはた,しげかず
+こひら,まき
+なかがわ,たくし
+こひゃま,かずひろ
+こいで,とよあき
+こいで,ひろゆき
+こいけ,ひでき
+こいずみ,たけし
+こじま,ひとし
+こけぐち,てつや
+こくぼ,しん
+こまつ,てつじ
+こまつ,きよのり
+こみや,えいたつ
+こんど,かつみ
+こんど,かつゆき
+こんど,かずひこ
+こんど,やすし
+こんど,つとむ
+こにし,けんじ
+こさか,としひこ
+こせき,きみお
+こしいし,りえこ
+こしお,あきら
+こすげ,よしろ
+こひゃ,じゅん
+こやま,しげる
+こやま,もとこ
+たけち,たくや
+くぼ,やすまさ
+くぼ,ようこ
+くぼ,たかこ
+くがい,ゆみこ
+いからし,よじ
+くまざわ,かずとし
+くにみつ,あきら
+くの,みえ
+ほしの,たかゆき
+くらしげ,たつお
+くりはら,たかこ
+なかがわ,まさひろ
+やなぎだ,としひこ
+くりやま,たつや
+くろかわ,まさとし
+くさかわ,としあき
+くさなぎ,まさのり
+くさの,かずし
+くせ,おさむ
+くしだ,しゅぞ
+くすだ,としや
+くすき,つとむ
+くすみ,ふみき
+まえだ,たかゆき
+まえだ,かずひろ
+まえかわ,のぶこ
+まえかわ,ひさよし
+まがりふち,せいし
+まきの,としや
+まきの,こうじ
+まなべ,みか
+あがつま,しょひち
+まるお,ゆきお
+まるた,ひであき
+まるやま,ひでゆき
+まるやま,けいいち
+まるやま,おさむ
+まるやま,ひでひこ
+ますだ,さとる
+ますだ,ちえ
+かんばら,こういちろ
+まつばら,ちえこ
+なかむら,ゆたか
+まつだ,たつや
+まつだ,あきお
+まつい,ひろこ
+まつい,たかお
+まつい,よしお
+まつい,ちひろ
+まつもと,けんじ
+まつもと,まさよ
+まつもと,たつゆき
+まつもと,しげる
+まつおか,なおき
+なるせ,ゆか
+まつや,まこと
+めざわ,たかひろ
+みえの,ゆうじ
+みぎた,てるみつ
+みかみ,としや
+みむら,いずみ
+やなぎ,ひろし
+みなかた,ちとせ
+みね,くにのり
+みね,まさゆき
+みのわ,ひろゆき
+みさわ,よしのり
+みさわ,しゅひちろ
+みしま,ちよこ
+みたむら,あつし
+みと,けんじ
+みつひら,まさかつ
+みついし,しんや
+みつなり,みほ
+みうら,りゅじ
+みやべ,のぶひこ
+みやじま,ひとし
+みやもと,きゅひゃ
+みやもと,まゆみ
+みやさか,しょじ
+みやさか,かずや
+みやした,こういち
+みやした,まさゆき
+みやざき,まさやす
+みやざわ,やすえい
+みやざわ,きよえ
+みぞはし,まきこ
+さかい,たかひろ
+みずの,つよし
+みずおち,ともひろ
+みずしま,のぶお
+みずた,まりこ
+もちはら,まさふみ
+もちずき,たかえ
+ももせ,ひろかず
+もり,けんじ
+もり,しげき
+もり,しげる
+もり,ともみ
+もり,ゆひちろ
+もり,けんいちろ
+もりかわ,ひろか
+もりもと,じゅんこ
+もりもと,のりしげ
+もりもと,かつみ
+もりむら,たかゆき
+もりの,たけひこ
+もりさわ,ひろし
+しまおか,ひろあき
+もりした,たかお
+もりやま,けんじ
+もろおか,けんじ
+もろとみ,くに
+もとき,こういち
+もとの,しゅひち
+もとたか,ひろき
+むぐるま,あきひろ
+むかい,ちえ
+あんどう,はずき
+はね,ひでき
+むらかみ,まもる
+むらまつ,まさよ
+むらしげ,やすひろ
+しもむら,こういち
+むらた,まなぶ
+みょが,しんいち
+ながはら,かずみ
+いとう,くにかず
+ながい,おさむ
+ながい,ゆか
+いわと,ひろこ
+たけしげ,みつひろ
+ながお,なおき
+ながお,ただとし
+ながお,かつゆき
+ふくつか,ひでき
+ながさわ,たくじ
+ながさわ,よしみ
+ながせ,いわお
+ながしま,こき
+ながたに,としかず
+ながわき,つとむ
+ながやま,かずゆき
+なごや,じゅん
+ないとう,まこと
+ないとう,たかゆき
+なかだ,ひろし
+なかがき,かつみ
+なかがわ,けいた
+なかがわ,とおる
+なかがわ,よしき
+なかがわ,ちほこ
+なかじま,あきひろ
+ほりうち,みちのり
+なかはら,いさえ
+なかじま,けいこ
+なかじま,ひでき
+きくた,やすひろ
+なかじま,すすむ
+なかまる,あきお
+なかむら,ふみひこ
+なかむら,ひろやす
+なかむら,まさひで
+なかむら,もりお
+なかむら,のぶゆき
+なかむら,さだみつ
+なかむら,たくや
+なかむら,ひろあき
+はっとり,てるのぶ
+なかむら,としひろ
+なかむら,やすひろ
+なかむら,まさし
+みやもと,とおる
+なかにし,とよじ
+なかにし,かずひと
+なかの,かずゆき
+なかの,こうじ
+なかの,みか
+なかの,としあき
+なかの,としこ
+なかの,よし
+なかの,まこと
+なかお,ちえ
+なかおか,のりこ
+なかしま,たかお
+なかしま,たかし
+しなだ,りゅひち
+なかた,しげかず
+なかや,まなぶ
+さいかわ,さぶろ
+はせがわ,とおる
+なかざわ,たつじ
+なまつ,いずる
+なりた,ひでと
+なすの,すなお
+ねもと,よしあき
+ねおい,ちゆき
+ねず,やすひで
+にいむら,おさむ
+にいやま,つかさ
+にいやま,けい
+にのみや,よしのぶ
+にのみや,たかひろ
+にし,まさかつ
+にしだ,しんいち
+にしだ,かずなり
+にしどの,あきら
+にしかわ,かずなり
+にしきど,たくじ
+にしむら,ひとし
+にしな,ひろし
+にしお,まみ
+いのうえ,まみ
+にしざわ,たくじ
+にしずか,たかあき
+にった,みねあき
+のだ,まこと
+のむら,なおき
+ののむら,かずまさ
+のりはし,ちかげ
+ひの,ひろし
+のざき,ひろし
+のざわ,かずあき
+ぬまの,たかお
+おびせ,まさのり
+おぼかた,まさし
+おち,よしのり
+はせがわ,あきら
+まなべ,あきひこ
+おだ,あきら
+おだ,だいいつ
+おだ,じゅんじ
+おだ,かずとし
+おだくら,たかあき
+おがた,としや
+おがわ,ひとみ
+あべ,わかこ
+おぐち,さとし
+おぐま,ひろゆき
+おぐら,いさお
+おぐら,かずゆき
+むさし,しん
+おぐら,まさひろ
+おぐり,のぶこ
+おば,ひろき
+おはし,けんすけ
+おひ,あきひろ
+おひえ,みつあき
+おくぼ,ひろゆき
+おくま,かつみ
+おくま,しんすけ
+おの,ひでひろ
+おぬま,じゅんこ
+たかせ,ぎょ
+おさわ,ひとし
+おさわ,としひこ
+おさわ,よすけ
+おさわ,こき
+おしま,まさよし
+おしま,たまき
+おしま,ひでお
+おた,みつる
+おたか,まさひこ
+おたき,まこと
+おたに,けんじ
+おつか,よひち
+おつか,ひろかず
+おわ,けんじ
+おわだ,はるし
+おひゃま,いさむ
+おぞね,ひろし
+おか,かつみ
+おか,かよこ
+おか,よしひで
+おか,ひでき
+おかだ,ひろし
+おかだ,けんじ
+おかだ,そすけ
+おかだ,まりこ
+おかどめ,ひろお
+おかもと,みつひろ
+おかもと,しんじ
+おかもと,ひろゆき
+おかむら,たけし
+おかの,よじ
+おかのや,ひろのぶ
+おかお,てつお
+おかざき,まこと
+おき,ひろのり
+おきもと,ひとし
+おくむら,のぶゆき
+おくむら,やすし
+おくの,ひろあき
+おまた,かずしげ
+おにき,たかのり
+おにつか,たかよし
+おのでら,ひとし
+おのざわ,まさゆき
+おにし,とよあき
+おにし,きよかつ
+おつか,やすし
+おさだ,こうじ
+おさき,ひろし
+おさなみ,りか
+おやまだ,あきら
+おざわ,みつる
+おざわ,やすじ
+おざわ,ひでお
+ろ,ひろゆき
+さえぐさ,まさひこ
+さえき,ともこ
+なかじま,ゆきひこ
+さいた,あい
+おがわ,あきよし
+さいとう,ひろゆき
+さいとう,まさあき
+さいとう,あきら
+さかい,ひでつぐ
+さかい,けん
+さかい,くによし
+さかい,なおひさ
+さかい,とものぶ
+さかい,たかし
+さかいり,しずよし
+さかき,やすのり
+さかま,こうじろ
+さかまき,しろ
+さかもと,やすのり
+さかもと,よりと
+さかもと,やすのり
+さかた,よしひろ
+さかうえ,たけし
+さかずめ,ちえこ
+なかの,やすはる
+さくま,かずひさ
+さんぼんまつ,たかひこ
+さの,よしのり
+さの,りょじ
+ささがわ,ひでのり
+ささき,けいじ
+ささき,たけし
+ささき,たく
+ささき,しょご
+ささざわ,ひろゆき
+さとう,きょこ
+さとう,まさのり
+さとう,まさとも
+さとう,まさとし
+さとう,さとる
+さとう,しゅひち
+さとう,たかし
+さとう,たかゆき
+さとう,たくみ
+さとう,ともひろ
+さとう,よしひこ
+さとう,かずひろ
+さつま,たけし
+さわぐち,としふみ
+さわい,ゆたか
+さわらぎ,ゆりこ
+さわたに,やすゆき
+せいた,かずよし
+せき,こうじ
+せき,としゆき
+せき,やすし
+せきはら,かつひと
+せきね,よしたか
+せきね,たかゆき
+しらいし,のぶたか
+せんが,ゆすけ
+せの,ひでゆき
+せしも,さとし
+せと,おさむ
+せとぐち,まゆみ
+てるや,のぶお
+しいば,ひでのり
+しばの,みわこ
+しばさき,なおと
+しばた,みちひろ
+しぶさわ,やすお
+しぶさわ,くにお
+しち,あつし
+しちた,まさまろ
+しげひさ,のぶひろ
+しげさわ,のりやす
+むらた,あきら
+しまず,ゆすけ
+しまず,ひろゆき
+きしだ,まさひろ
+しみず,のぶお
+しみず,のりゆき
+しみず,しゅひち
+しみず,たつお
+しみず,たつや
+しみず,ゆひち
+しみず,りか
+みやこし,ともゆき
+しもみち,いくこ
+なかばやし,てつろ
+しもおさ,まさふみ
+しもつじ,よしひろ
+しなだ,だいえい
+しながわ,たかゆき
+しんもと,とおる
+しの,みゆき
+しのだ,りゅうたろう
+しのだ,たかつぐ
+しのざき,たつし
+しおたに,たかし
+しおや,みちお
+しらべ,えいいち
+しらがき,ひろし
+しらい,はやとし
+しらいし,くんじ
+しらいし,けいこ
+しらき,ひろしげ
+しずた,としひろ
+しょじ,まりこ
+そのだ,かおる
+すどう,たけし
+すえだ,しんじ
+すえつぐ,ちかし
+すがた,のぶお
+すがわら,まさひろ
+すぎの,よしのり
+すぎさき,りゅうたろう
+すぎしま,はつえ
+ながい,しょじ
+すぎやま,てつひろ
+すみ,つかさ
+すみたに,いっせい
+すさき,よしはる
+すすき,かずひこ
+すやま,えつひろ
+すずき,ひろし
+すずき,かずひろ
+すずき,けいこ
+たじま,けいた
+すずき,みどり
+すずき,もとゆき
+すずき,せいこ
+すずき,たかし
+すずき,やすすけ
+すずき,よしあき
+すずき,よしのぶ
+すずき,ゆうじ
+すずき,まさる
+しゅくや,まりこ
+たちばな,としひろ
+たちやま,かつひろ
+たどころ,しんいち
+たがわ,ひろゆき
+たぐち,こういち
+たぐち,とものり
+たぐち,みちお
+たい,けんいち
+たじま,こういち
+たかだ,さとき
+たかだ,たくや
+たかぎ,やすこ
+みやもと,ゆたか
+たかはま,あきこ
+たかはし,あつし
+たかはし,ひでとも
+たかはし,ひでとし
+たかはし,ひでとし
+たかはし,ひろき
+たかはし,じゅにち
+たかはし,かよ
+たかはし,こういち
+たかはし,まさあき
+たかはし,まさひと
+たかはし,もとかず
+たかはし,なおゆき
+たかはし,のぶひさ
+たかはし,のりお
+たかはし,さちえ
+たかはし,さとる
+たかはし,しげのぶ
+たかはし,すすむ
+たかはし,たかし
+たかはし,てつお
+たかはし,やすあき
+たかはし,まさのり
+たかなし,つとむ
+たかの,まさゆき
+たかおか,まこと
+たかせ,けんりゅ
+たかしな,としひさ
+たかしな,やすし
+たかた,ひろゆき
+たかやま,やすのり
+たかやなぎ,ひろし
+たけばやし,もとやす
+みかみ,ゆきえ
+たけい,やすこ
+たけき,たかし
+たけもり,よしひさ
+たけむら,としゆき
+たけうち,さとこ
+たけや,ひでき
+たけやま,いちろう
+たきぐち,のぶあき
+たきした,みつる
+たきざわ,しん
+たまい,かつのり
+たみや,てつや
+たむら,しげき
+たなべ,こせい
+たなはし,だいさく
+たなか,ひろあき
+たなか,ひろゆき
+たなか,じゅん
+たなか,かつみ
+たなか,けいすけ
+たなか,まこと
+たなか,ましゅ
+たなか,のぶひこ
+たなか,おさむ
+たなか,けん
+こだま,しょひち
+たなか,としあき
+たなか,としかず
+たなか,としゆき
+たなか,あきら
+たなむら,しげる
+たんば,あきこ
+たにぐち,よすけ
+たにぐち,ひろゆき
+たにい,よしゆき
+たにむら,しげと
+たにわき,ひでのり
+たるい,ひろゆき
+たさき,ひろき
+たしろ,ゆきこ
+たていし,ひろこ
+たうち,じゅにち
+たうら,しん
+てらだ,まさかず
+さとう,じゅんこ
+てらにし,よしひこ
+てらした,あさお
+てるきな,のりあき
+とべ,さとし
+とご,おさむ
+とぐち,さとし
+とじ,かずなり
+とみなが,けいじ
+とみなが,じゅんこ
+とみおか,げん
+とみた,とものり
+とみやま,おさむ
+とねがわ,しょじ
+としなり,かずゆき
+とよだ,まさや
+とよだ,なおや
+とよだ,りょこ
+おもり,ひろあき
+とずか,よしお
+やまかわ,あきら
+つぼい,もりゆき
+つちはし,ひろし
+つちの,あきよ
+つちや,えりこ
+まき,たかはる
+つだ,えいじ
+つがわ,かつのり
+つじ,まさと
+つじ,やすまさ
+つじ,なおき
+つかだ,すぐる
+つかもと,ひろたか
+つむら,あきら
+つなしま,じゅんこ
+おくやま,こうじ
+つのだ,かつや
+つのがい,まさひこ
+つしま,よひちろ
+つつみ,ひでお
+つずき,りゅへい
+つるおか,じゅんこ
+うちだ,かつみ
+うちだ,みのる
+うちだ,よしひろ
+うちだ,ひでのり
+うちの,みつのぶ
+うちのくら,けんじ
+うちやま,さとし
+うちやま,とよかず
+うちやま,ひろし
+うだ,ひろゆき
+うえだ,きよし
+うえだ,たかゆき
+うえだ,ゆきお
+うえだ,まもる
+うえはら,さだはる
+うえはら,やすのり
+うえはら,のぼる
+うえじま,ひろし
+うえき,かつみ
+うえむら,ひでと
+うえの,ひさし
+うえの,まさる
+うえの,まさふみ
+うえやま,やすし
+うい,あきひこ
+うめだ,めぐみ
+うめだ,みちはる
+うめだ,たかのり
+うめだ,のぶひろ
+うめはら,けいじ
+うめかわ,しげる
+うるしだに,なつこ
+いのうえ,よしと
+うさみ,としはる
+うしまる,しげる
+うしやま,まさお
+うすい,しんじ
+うすい,ひろゆき
+うつみ,えりこ
+ささがわ,くにひろ
+そめや,たかひで
+わだ,とくひろ
+わだ,ゆうじ
+わだ,よしこ
+たのうえ,けいすけ
+わしだ,しょひち
+わたい,あつし
+わたなべ,ちはる
+わたなべ,けんじ
+わたなべ,まこと
+わたなべ,まさのり
+わたなべ,まさゆき
+わたなべ,たけし
+わたなべ,ゆうこ
+わたなべ,たつひろ
+やぎ,かつゆき
+やご,こへい
+やはぎ,おさむ
+やくし,じろ
+やまだ,かずあき
+やまだ,けんじ
+やまだ,まさお
+やまだ,まさよし
+やまだ,よしあき
+やまだ,ゆひち
+やまだ,ひであき
+やまがた,みちあき
+やまぎし,まさゆき
+はり,あきお
+やまぐち,かずひさ
+やまぐち,さとし
+やまぐち,ひでき
+あおつか,とおる
+やまぐち,ひろゆき
+やまじ,あきら
+やまもと,かずお
+やまもと,まさひこ
+やまもと,なおふみ
+やまもと,おさむ
+やまもと,れいき
+やまもと,たかし
+やまもと,とみやす
+やまもと,としひろ
+やまもと,としお
+やまもと,よしお
+やまもと,ゆか
+やまもと,たけし
+やまむら,まさえ
+やまなか,まさゆき
+やましな,かつし
+やました,ともかず
+やました,ともみ
+やました,よしさと
+やました,まさのり
+やまて,みちお
+やまうち,ひろのり
+やまざき,じゅにち
+やまざき,けんじろ
+やまざき,かずひろ
+やなぎ,ひろふみ
+やなぎだ,たかゆき
+やなぎだ,あきひで
+やない,としのり
+やなか,えいじ
+やすだ,まなぶ
+やすだ,としゆき
+やすだ,なおふみ
+やすもと,ともかず
+やつか,ゆたか
+やざわ,しんじ
+よだ,ゆきひろ
+よどがわ,りんじゅ
+よだ,けんじ
+よこはた,ひとし
+よこやま,けい
+よこやま,あきら
+よもり,ゆきひさ
+よねもち,のぼる
+よろずや,ひとし
+よしだ,かずお
+よしだ,こういちろ
+よしだ,みほ
+ふじさき,さとし
+よしだ,ただし
+よしだ,まさみ
+よしまつ,いわお
+よしもと,せきこ
+よしむら,かずや
+いしばし,なおき
+よしの,みずほ
+たかの,てつや
+ゆはし,のりお
+えだひろ,ひろのり
+はらだ,ひろや
+はやさか,いわお
+いながき,しげる
+いのうえ,あきよし
+いしはら,よしつぐ
+こじま,なおひさ
+こすぎ,たつぞ
+くぼた,たかし
+もり,のりお
+なかばやし,こういち
+ねもと,ひとし
+にのみや,てつお
+おがわ,ちはる
+おたに,ゆすけ
+せき,かつや
+しぶたに,ただし
+しんと,たつや
+そぶえ,けいご
+たかはし,しょこ
+たかせ,みどり
+とよだ,まさゆき
+うえだ,りゅせい
+やまもと,まさき
+やまずみ,さとし
+よしだ,たかし
+あさかい,やすひさ
+ふくた,しんご
+かわさき,なるみ
+ひろせ,たかし
+はら,なおひさ
+かさはら,たかし
+おざわ,けい
+かとう,めぐみ
+なかむら,まさこ
+たぐち,くみ
+あだち,つとむ
+あかし,ひろゆき
+あきやま,ひとし
+あおき,たけし
+あらき,まみこ
+あさひ,ひろひで
+あさの,しんたろう
+あわの,やすゆき
+あわの,ひろし
+どじ,こうじ
+どぞの,なるとし
+ふちかみ,かずみ
+ふじい,かずお
+ふじい,よしかず
+ふじいえ,かが
+こわ,せつこ
+ふじしろ,けいいち
+ふじた,けいいち
+ふじた,せいえい
+ふじわら,ひろむ
+ふくだ,りょせい
+ふくだ,よしひさ
+ふくだ,えみ
+さいとう,しょじ
+ふくやま,ともたけ
+ふるはた,ふみのり
+ごと,としひこ
+はむろ,おさむ
+はせ,じゅんじろ
+はしもと,なおゆき
+はしもと,せいや
+はっとり,かつろ
+はやし,けんじ
+はやし,こういち
+はやし,のぶや
+はやし,しゅにち
+はやし,まさお
+はやし,ようこ
+ひび,ひろゆき
+ひぐま,こうじ
+ひらい,なおゆき
+ひらかわ,たつお
+ひらの,けん
+ひろなか,おさみ
+ほりぐち,じゅにち
+ほさか,こうじ
+ほそや,ひろかず
+いちい,おさむ
+いちかわ,たくひさ
+いぐま,まさひろ
+いいさか,じゅにち
+いかわ,じゅん
+いけだ,かつひこ
+いけだ,としあき
+いけがみ,まさかず
+いのうえ,しげみつ
+いのうえ,めい
+こばやし,まさつぐ
+いしばし,ひろゆき
+いしだ,たくや
+いしまる,ひろたか
+いしずか,つねとも
+いそ,かずひこ
+いとう,みのる
+いとう,のぶあき
+いとう,さとし
+いとう,せいじ
+いとう,しげゆき
+いとう,もとひろ
+いとう,えいいち
+いわた,まゆみ
+かりや,いわお
+じょがさき,あゆこ
+かが,いくじろ
+かげやま,まもる
+かじなみ,しろ
+かみひらた,ひさあき
+かなもり,とくじろ
+かねこ,やすひさ
+かねこ,よしゆき
+かにわ,みわ
+かさま,としゆき
+かせ,ひであき
+かしむら,ひであき
+かたおか,あきひこ
+かとう,まさひろ
+かとう,さわこ
+かとう,てつや
+かとう,よしみね
+かとう,けんいち
+かわち,さとし
+かわぐち,せいいち
+かわの,しげお
+かわしま,かずひさ
+きくち,つよし
+きもと,たかゆき
+きむら,ひろゆき
+きのした,たつや
+きしはら,てるお
+きしかわ,よしお
+きた,あきら
+きたがわ,のりまさ
+きたの,ひろゆき
+きたやま,ふみとし
+きよおか,けんじ
+きよせ,じゅんこ
+こばり,けいじ
+こばやし,こた
+こばやし,あきひこ
+こぼり,のぶひで
+こいわ,けいこ
+こじま,ちさと
+はしもと,みつお
+こみやま,てつじ
+こんど,ともあき
+こんど,よしひろ
+こんど,かつや
+こしかわ,てつ
+こてがわ,つぐあき
+こわ,ひでゆき
+くぼた,りえ
+くぼた,みちはる
+くどう,りえこ
+くが,せいこ
+もり,まさよ
+くにたけ,つかさ
+くらかけ,たてき
+くり,かおる
+くさふか,こうたろう
+くわばら,たまみ
+まちだ,たけし
+まるやま,ふみよ
+たけうち,こういち
+まつば,たかひろ
+まつばら,ともゆき
+まつだいら,のりこ
+まつもと,よすけ
+まつもと,あきふみ
+まつなが,けんじ
+まつお,のぶゆき
+まつお,しょひち
+まつお,ひろゆき
+みくに,はやと
+みながわ,よしひろ
+みながわ,ゆきひろ
+みのて,はじめ
+みた,ひろかず
+みとめ,まさひと
+みつやま,しのぶ
+みやち,とおる
+みやじ,ひろゆき
+みやじま,ゆき
+みやた,あきお
+みやざき,あつし
+みやざき,たけろ
+みやざと,まき
+みやざわ,よりこ
+みぞぐち,よしあき
+みずい,みほ
+もんの,まさや
+もり,のりゆき
+もり,しんや
+もりた,やすし
+もりた,わたる
+もりやま,しげる
+むらかみ,ともあき
+むらかみ,よしくに
+むらかみ,たけし
+むらまつ,しゅいち
+むろぞの,たかふみ
+ながぶち,こうじ
+ながの,みつお
+ながせ,けいこ
+ながたに,きよあき
+なごや,まこと
+なかがわ,よしなり
+なかみち,ひろき
+なかむら,もとこ
+なかむら,まさよし
+なかの,えいじ
+なかしま,みつひろ
+にしだ,のりすみ
+にしはら,くるみ
+にしむら,としあき
+にしおか,まりこ
+のぐち,りゅひち
+のせ,こういちろ
+おばた,みのる
+おちあい,しんすけ
+おちあい,ひろあき
+おがわ,ひろし
+おがわ,みつる
+おがわ,りゅひち
+おがわ,しほ
+おぎの,ひろあき
+おぐら,かおり
+こんど,しょ
+おへ,じゅにちろ
+おがき,まさのり
+おにし,ひろし
+おの,ひろのり
+おた,じゅん
+おしろ,あつと
+おた,しんや
+おたしろ,かずひこ
+おつ,のぼる
+おつ,まさずみ
+おひゃぎ,ゆうじ
+おひゃま,いくこ
+おかもと,ひでひこ
+おかやま,たかし
+おけたに,まさと
+おくやま,たみや
+おのでら,かつとし
+おざわ,まゆみ
+さいとう,たかあき
+さいとう,やすゆき
+さいとう,まさみち
+さかぐち,じろ
+さかなか,のりあき
+さかにわ,まさみち
+さかうち,ひろし
+さくらい,かずしげ
+さくらい,たかし
+さの,ひでき
+ささき,まさかず
+ささき,めぐみ
+ささき,えいじ
+ささま,ちはる
+さとう,ひろぶみ
+さとう,みつより
+さとう,たつこ
+さとう,くみこ
+にしまた,ひでとし
+さわだ,みのる
+せんば,かずひで
+せと,てるお
+しぶや,たかのぶ
+しい,ひろかず
+しまだ,もとむ
+しまだ,よりこ
+おかもと,としたか
+しながわ,つとむ
+しんかわ,まさゆき
+しんきゅ,たくや
+しのだ,まさみ
+しのはら,えり
+あさかわ,りえ
+しおはら,まさかず
+しろた,たけや
+すぎもと,ひろゆき
+すぎやま,たかし
+すぐち,みわ
+もろとみ,てつお
+すずき,まさひさ
+たぐち,ゆひち
+たぐち,よしのり
+たはら,ゆきお
+たかぎ,みさこ
+たかはし,こへい
+たかい,みえ
+たかやま,まさとし
+たけ,さちえ
+たけばやし,ひさや
+たけかわ,まさゆき
+たけうち,てるえ
+わたなべ,せいいち
+たけうち,かおる
+たみや,まさと
+たむら,かつひろ
+たなべ,かずひで
+たなか,きよたか
+たなか,のぶこ
+たなか,はるこ
+たにぐち,まさふみ
+たにぐち,あきお
+たにむら,ゆうじ
+たのうえ,ひろゆき
+たるさわ,よしお
+たしろ,かずお
+てらだ,けんじ
+とが,かずこ
+とがし,なおき
+とご,りゅじ
+とくなが,じゅんこ
+ともの,かほる
+とよだ,こうじ
+つちや,ひでき
+つかはら,まさかず
+うらさき,ひろし
+わだ,まさひろ
+わだ,けいこ
+わたなべ,のぶこ
+わたなべ,つよし
+やぎぬま,あつし
+やまだ,かずひろ
+やまだ,たつお
+やまだ,あきひろ
+やまもと,あきこ
+やまもと,としはる
+やまもと,ゆきひこ
+やまもと,ひでみね
+やまなか,しげお
+やまなか,しんや
+やました,あやこ
+ひぐち,かずみ
+やまざき,よじろ
+やなぎ,ひろあき
+やすだ,のぶひろ
+やすえ,ゆうじ
+よこえ,ともやす
+よこやま,れいこ
+よねはら,まさとし
+よねみつ,ふみお
+よりまつ,けいこ
+よしだ,としあき
+よしの,ひさし
+よしたき,けいじ
+ゆかわ,まさあき
+ゆり,ひでと
+もり,たつや
+ささき,ゆきひろ
+しらはま,ちひろ
+てんぱく,かおる
+うちだ,まさひろ
+やまうら,じゅんじ
+まつぐま,ふみの
+あべ,ひろし
+あべ,のぶゆき
+あべ,としや
+あべ,のぶあき
+あだち,りえこ
+あいはら,こういち
+あじま,まこと
+あかさか,ともこ
+あきもと,ふみひろ
+あきやま,みつひろ
+あきやま,おさむ
+あくね,じゅんや
+あまの,ともお
+あまの,たかひさ
+あめみや,かつひこ
+あんどう,たけひろ
+あんどう,ゆひちろ
+あんどう,なおや
+あんじき,とる
+あんぺいじ,ふみこ
+あおき,ひろゆき
+あおき,かつみ
+あおき,かずお
+あおき,なおあき
+あおき,ななお
+はらしま,つよし
+あおき,やすあき
+あおき,とおる
+あおやぎ,こぞ
+あおやま,たかし
+あおやま,たつや
+あらい,ひろし
+あらき,まなぶ
+あらき,ちあき
+あらた,まさつぐ
+あらや,みき
+こばやかわ,みわ
+ありた,かずお
+あさば,ゆうこ
+あさえだ,しゅにち
+あさか,よしこ
+あさくら,しげはる
+あさの,ゆきこ
+あさの,じゅん
+あしべ,としあき
+あわみや,りか
+あざみ,つとむ
+あぜやなぎ,なおひさ
+あずま,たかゆき
+あずま,よひち
+あずま,けいすけ
+ばば,こういち
+ばば,まこと
+ばば,かつじ
+ばなか,みき
+さたけ,しんいち
+ちば,やすひろ
+ちぎら,なるひと
+ちはら,よしゆき
+ちかい,なむす
+ちょん,ともちか
+ちゅま,たつお
+だい,しゅじ
+だいお,ともあき
+だて,まさひこ
+でぐち,ひろゆき
+でわ,つとむ
+どい,ひろみ
+えびさわ,りえ
+なかむら,たかゆき
+えいもり,なおゆき
+えんど,よしかず
+えんど,かつゆき
+えのもと,だいすけ
+ふじい,かずや
+ふじい,けいこ
+ふじい,もとはる
+ふじい,のぶひこ
+ふじい,たかふみ
+ふじかわ,あつし
+ふじもり,あつこ
+あおき,たけし
+ふじもと,まさひろ
+ふじおか,ひでき
+ふじた,ひろし
+ふじた,こうじ
+ふかお,えみこ
+ふくだ,たいぞ
+ふくだ,ひろみつ
+ふくい,たかこ
+ふくい,はるみ
+ふくもと,なおき
+ふくしま,たかお
+ふくしま,けいこ
+ひの,ひろかず
+ふくざわ,けんいちろ
+ふくざわ,たつのり
+ふなだ,みつよし
+ふるだて,としあき
+ふるや,しのぶ
+ふたむら,あきこ
+なかむら,あきら
+ごと,なおや
+ごと,てつろ
+ごと,やすひさ
+ごと,むつお
+はば,しんいち
+はちやま,かつひこ
+はぎわら,ひろし
+はまべ,ひでお
+はまだ,こうじ
+はまだ,ひでたか
+まえおか,ひでのぶ
+はなみ,のぶこ
+はなおか,さち
+せざい,きょこ
+はら,みきこ
+さとう,ゆうこ
+はら,けいこ
+はらだ,けいすけ
+はらだ,みきや
+はらだ,もとひさ
+はらだ,しげき
+はらだ,かずや
+はりま,かいちろう
+ほんま,ようこ
+はるやま,ようこ
+はせ,まさみ
+はせがわ,しん
+はせがわ,たかゆき
+はせがわ,よしみ
+はせがわ,たかひで
+はしぐち,ひとし
+はしもと,やすひで
+はしもと,あきこ
+はしずめ,なおき
+はしずめ,りょじ
+はしずめ,せいご
+はた,あつし
+はたの,なつみ
+はたの,えいいち
+はとり,かずひこ
+はっとり,まさあき
+はっとり,みつのり
+はっとり,なおき
+はっとり,のぶあき
+はっとり,しげる
+はっとり,よひち
+はっとり,たつお
+はやかわ,やよい
+はやかわ,けんたろう
+はやみ,あきひこ
+はやし,ひとし
+はやし,かつこ
+はやし,かずや
+はやし,こうたろう
+はやし,みわ
+ささたに,しゅんすけ
+はやし,しんいちろう
+はざま,ちから
+へんみ,かずとも
+ひび,なおき
+ひだか,たけし
+ひだか,よいち
+ひだか,あきひこ
+ひえだ,ゆき
+ひがき,さとし
+ひがし,まさき
+ひいどめ,わたる
+ひじくろ,けいこ
+ふくい,なおみ
+ひま,すみひと
+ひおき,ひであき
+ひらい,ゆみこ
+みき,まさたか
+ひらの,まゆみ
+ひらの,やすひろ
+ひらた,あきら
+ひらつか,まさのり
+ほだ,せいいち
+ひらやま,かなこ
+ひろべ,ともみ
+ひろい,とこ
+ひろさわ,ゆうこ
+ひろさわ,たろう
+ひろすえ,みちかず
+ひろた,しょじ
+はやま,よしひさ
+ひろわたり,ひろみち
+ひさもと,せいいち
+ひさの,いさお
+ひさゆき,よしき
+ひしだ,とめい
+ひしたに,まり
+わだ,まさゆき
+ひやま,ふきよ
+ありくら,かずひろ
+ほんだ,しろ
+ほんだ,ふみかず
+ほんご,ひろき
+ほんま,なおこ
+ほんま,きくみ
+まつもと,まさひろ
+ほり,まさひろ
+ほり,なおこ
+ほりべ,じゅんこ
+ほりえ,おさむ
+ほりえ,ゆうこ
+ほりえ,さゆり
+ほりうち,みかこ
+ほしば,よしあき
+ほしかわ,ゆかり
+かとう,ひろし
+ほしな,やすし
+ほり,ふみえ
+ほしの,のぶひこ
+ほそだ,ゆたか
+ほった,みのる
+ほちど,けいすけ
+いぶか,まさと
+いちかわ,ゆひち
+いちかわ,あきのぶ
+いちます,けんた
+いちのせ,まなぶ
+いで,あきと
+いがらし,としゆき
+いがた,あきのり
+いい,まさひこ
+いいだ,ただし
+いいだ,よしふみ
+いいだ,とおる
+いいの,ひでお
+いいより,なおき
+いいずか,こういち
+いかるぎ,のりゆき
+いかわ,たかし
+いけち,のぶお
+いけだ,さおり
+いけだ,たかや
+いけだ,よしてる
+いけだ,ひとし
+いけがみ,まりこ
+いけじり,つとむ
+いけたき,かつみ
+いくもと,まさひこ
+いまい,まさと
+いまい,えいいちろう
+ほそい,ゆりこ
+いまい,まさよし
+いまにし,まさゆき
+いなだ,しんじ
+いながき,いちろう
+いなげ,みちはる
+はざま,まこと
+いの,かつや
+いのまた,けいすけ
+いのうえ,まみ
+やすかわ,こういちろ
+はる,もとはる
+いのうえ,たかこ
+いのうえ,たかゆき
+いのうえ,ともひろ
+いのうえ,かずや
+いおき,くにおみ
+いりえ,しん
+いさか,たけし
+いさか,れいこ
+おもり,けんたろう
+いしばし,さぶろ
+いしだ,たけし
+いしだ,はじめ
+いしはら,まなぶ
+いしはら,けんいち
+ひらと,ひさもと
+いしい,じゅん
+いしい,けいたろう
+いしい,りえ
+いしい,たかひと
+いしい,とおる
+いしい,てるお
+はねいし,つとむ
+いしい,ふみのり
+いしかわ,ひろひさ
+いしかわ,まさみち
+いしかわ,のぶゆき
+いしかわ,とおる
+いしかわ,わたる
+いしおか,けんいちろ
+いしつか,まなぶ
+いしわた,けいいち
+いしざか,うらら
+いしざか,よしと
+いしざき,はるお
+いしずき,ひでお
+いそ,けいじろ
+いそがい,みきお
+いたば,あつし
+いとう,はるお
+いとう,けいじ
+いとう,まさこ
+いとう,しんすけ
+いとう,やすし
+いとう,ようこ
+ひだか,よすけ
+いとう,よしひこ
+いとう,ゆか
+にし,のりこ
+いわだれ,よしゆき
+いわはし,としゆき
+いわき,ありひろ
+いわもと,こうじ
+いわさき,えいいち
+ひらつか,こうじ
+いわさき,なおと
+いわさき,しげひと
+いわさき,ゆうこ
+じんぐ,ゆうじ
+いわしげ,いのり
+いわた,まさひろ
+じんぐ,まさひろ
+じょご,ばん
+かが,さとし
+かがぶ,あつし
+かぎやま,ひでつぐ
+かい,まさひろ
+かいだ,ゆき
+かいだ,しんいち
+かまち,よしのり
+かまだ,ゆうこ
+かまほり,みずほ
+かまた,よしのり
+かめだ,のぶかず
+かめい,ひろし
+かみの,ひろゆき
+かみの,まさゆき
+かみとの,ひろゆき
+かみや,さとこ
+かみや,まこと
+かみやま,ひろし
+かもん,よしのり
+かもん,やすかず
+かん,かつや
+かない,しんじろ
+かない,ひでお
+かなじ,ゆぞ
+かなおか,のりゆき
+かなざわ,のりまさ
+かんべ,ひろゆき
+かんだ,まさこ
+かんだ,ともひこ
+かねき,こういちろう
+かねきよ,まゆみ
+かねこ,ふみひこ
+かねした,たけし
+かねやす,ひとし
+かの,りゅじ
+かの,のぶゆき
+かんずい,ちあき
+かさはら,けんぎ
+かさはら,ひでき
+かさい,えいたろう
+かさまつ,とものり
+かさも,のりこ
+たまたに,すみこ
+かしわぎ,まさゆき
+かしわぐら,たみお
+かただ,かつひさ
+かたおか,さおり
+ほし,やすたか
+かたおか,ちえ
+かとう,えいすけ
+かとう,ひろと
+かとう,ひろゆき
+かとう,かずひろ
+かとう,なおや
+かとう,しんじ
+かとう,たけし
+かとう,たみゆき
+かとう,ななこ
+かとの,ひでひさ
+かつむら,えいいち
+かわばた,くにとし
+かわごえ,けんいちろ
+かわぐち,しま
+かわはら,ゆりみ
+かしむら,ひでゆき
+かわい,さちこ
+かわい,なおき
+かわもと,ひろと
+かわむら,しゅじ
+かわむら,ひろき
+かわな,やすゆき
+かわな,もりひろ
+かわなみ,しんいち
+かわの,りょた
+かわせ,けいこ
+はらだ,てるひこ
+かわしま,じゅんこ
+かざみ,みちや
+かずさわ,きよし
+きばやし,ひでき
+きだ,いちろう
+きはら,あきら
+きくち,こうじ
+きくち,ますみ
+さいとう,ゆうこ
+きくい,なおみ
+きもと,ひろゆき
+きむら,まなぶ
+きむら,さとる
+きむら,しゅじ
+きむら,ゆきひと
+きむら,まさかず
+きの,ひでひこ
+きりの,しんじ
+きさぬき,じゅにちろ
+きし,しゅこ
+きし,のぶこ
+きしだ,なおと
+きしかわ,やすひろ
+ひらて,ゆひち
+きしなみ,たけし
+きそ,よしひこ
+きた,ひろし
+きたがわ,いちろう
+きたじま,けんじ
+きたじま,つよし
+きたむら,ようこ
+きたの,のぶゆき
+きたざき,つよし
+きたざわ,としつぐ
+きよはら,たかひさ
+はしもと,はるみ
+のざき,かずまさ
+こばやし,かずや
+こばやし,まこと
+こばやし,まさき
+こばやし,なおき
+こばやし,さとし
+こばやし,しん
+こばやし,しんじ
+こばやし,やすまさ
+こばやし,よしお
+こばやし,ひであき
+こち,なおみ
+こだま,ひろゆき
+こが,せいか
+とど,のりこ
+こはら,としゆき
+こひ,ただし
+この,たつし
+こいけ,つとむ
+こいわ,おさむ
+こいずみ,ふみきよ
+こじか,ふみお
+こじま,まさゆき
+こじま,なおき
+こじま,たかはる
+こじま,けんじ
+こまつばら,あつし
+こみや,えいじ
+こもだ,さちこ
+こむろ,しょじ
+こんど,ともひろ
+こんど,ゆき
+こんど,やすひろ
+こさけ,あきひろ
+こせ,しゅひち
+こすぎ,なおすみ
+こずか,はるみ
+くぼ,ひろふみ
+くぼ,とおる
+くぼ,ともゆき
+くぼ,しゅご
+くぼじょ,みえこ
+くどう,ながお
+くどう,りちこ
+くどう,かずひこ
+くまかわ,さとし
+くまくら,りゅた
+くましろ,きよし
+くまた,あきよし
+くにもと,としゆき
+くらもち,なつみ
+くらしま,けんじ
+くりはら,けんいち
+ひらい,こういち
+くりはら,たかし
+くりはら,たけし
+くりはら,やすのり
+くりはら,はるみ
+くりはし,たけひろ
+くりす,なおき
+くろだ,しげお
+くろだ,ひろし
+くろき,まり
+くろき,せいいち
+くろき,まさき
+くろめ,けんじ
+くろさわ,けんいち
+くるみや,せいいち
+くさやなぎ,しろ
+くすのせ,じゅんじ
+くわはら,しゅひち
+まちだ,ひろし
+まだらめ,かずひろ
+まえだ,こうじ
+まえだ,よしゆき
+まえだ,かつよ
+まえがわ,ゆうじ
+まえはら,てつお
+まえきた,みつのぶ
+まきの,ようこ
+しぶたに,あつし
+まなべ,ひろゆき
+まるやま,たかひろ
+まるやま,ともこ
+まるやま,えいじ
+まさおか,まこと
+ますぶち,えいじろ
+ますだ,こき
+ますだ,まさとし
+ますだ,なおおみ
+ますだ,しんじ
+ますだ,ようこ
+ますだ,としたか
+まつば,さとし
+はら,さとる
+まつだ,しんいちろう
+まつだ,ふみひで
+まつふじ,ぎんじ
+まつふじ,かずこ
+たちくい,たかひろ
+まつい,こうじ
+まつかわ,よしのり
+まつまる,あきら
+まつもと,ひろゆき
+まつもと,けいいち
+まつもと,たかし
+まつもと,よしのり
+まつもと,ゆうこ
+まつもと,よしはる
+しおばら,たかとし
+まつむら,たくや
+まつむら,ひろかず
+まつなが,ひろき
+まつなが,のぞみ
+まつなみ,けんじ
+まつお,けんじ
+まつお,だいすけ
+まつおか,あきお
+はやしだ,かずなり
+まつおか,みき
+あぜやなぎ,しんじ
+まつおか,たかひろ
+まつおか,しゅさく
+まつせ,あきお
+まつしま,かずのり
+まつした,あきひこ
+まつたに,のりこ
+まつわか,ひろし
+まつやま,つとむ
+まつざき,しんいち
+まつなが,しゅにち
+ほんな,よしのり
+めかた,ゆきこ
+みかじり,まさひろ
+みかみ,よしこ
+みかみ,としや
+みき,ともひろ
+みみた,えいこ
+みなくち,かずひろ
+みなみ,せいいち
+みなみ,せいじ
+みなみ,しんご
+みなと,ひろあき
+みね,たかゆき
+みね,けんじ
+みしま,こうじ
+みしま,しんじ
+みその,さとし
+みたむら,あきら
+みたんだ,きくお
+みつぼ,まこと
+みつぼし,きわむ
+はすむら,けんじ
+みつはし,きょこ
+しなだ,しんすけ
+みつま,ひでお
+みやはら,まさゆき
+みやはら,みちろ
+みやい,ふみはる
+みやじま,さとし
+みやもと,ともゆき
+みやもと,あきら
+みやした,しょじ
+みやた,よしたか
+みやた,あつし
+みやうち,こうじ
+みやうち,おさむ
+みやうら,ひろひさ
+みやざき,まさとし
+はしぐち,けんいち
+みやざわ,よしかず
+みやざわ,としひろ
+みやず,としふみ
+みぞかみ,ひろみつ
+みずの,ひろゆき
+みずの,かずひと
+みずたに,じつや
+もちだ,ひではる
+もちずき,みえこ
+もちずき,ゆかこ
+みよし,かずなり
+もり,ひでのり
+もり,ひろゆき
+もり,ひろゆき
+もり,かおる
+もり,けんじ
+もり,おさむ
+もり,たけひさ
+もり,たけし
+もり,しげき
+もりぐち,こうじ
+もりかわ,あきお
+もりなが,やすひと
+もりさき,じゅにち
+もりた,てつひこ
+もりた,としゆき
+もりや,のぶゆき
+もりやま,あきひろ
+もてぎ,あきお
+もとき,じろ
+はぎわら,たかし
+むかいだ,まさき
+むねひろ,まさし
+むねかた,だいいち
+むらかみ,まさゆき
+むらかみ,てつや
+むらかみ,ひろかず
+むらこし,つねあき
+むらまつ,いずみ
+むらぬき,ひろかず
+むらた,ひろき
+むらた,こうじ
+むらた,まさし
+むらやま,あけみ
+やました,よひち
+むろた,えいじ
+みょじん,むつお
+ながい,ひでお
+はしもと,みつひろ
+ながぬま,くにひろ
+ながお,のぶよし
+ながおか,しこ
+ながさわ,ひでゆき
+ながしま,かずよし
+ながしま,つよし
+ながた,やすひろ
+ながた,やすお
+はせがわ,ひろこ
+いがらし,まさと
+ながやま,けいじ
+ながよし,ゆきもと
+ないとう,まさき
+なかばやし,せいじ
+なかがわ,よしはる
+なかごめ,あきひろ
+なかしま,ひろかず
+なかじま,みちお
+なかじま,のりこ
+なかじま,おこ
+なかじま,ゆきお
+なかじま,えり
+なかくき,みほ
+なかまる,かおる
+なかみち,たかし
+なかもと,よしかず
+なかもと,よしやす
+なかもと,ちえこ
+わたなべ,ひろあき
+なかむら,かずひろ
+なかむら,けんじ
+なかむら,まさかつ
+なかむら,まさき
+なかむら,まさのり
+なかむら,しんいち
+はぎわら,さとし
+なかむら,としあき
+なかむら,やすまさ
+なかむら,ゆうこ
+なかむら,てるみ
+なかの,くらと
+なかお,ゆうじ
+なかお,しんいちろう
+なかおか,りか
+なかしま,みか
+にしじま,ゆきひろ
+なかや,ひろかず
+なかやま,ひろゆき
+なかざと,ひろふみ
+なまため,まさなり
+なめら,しんいちろう
+ななみ,せいじ
+なんば,かずのり
+なんじょ,ゆうじ
+なんぽ,てるゆき
+ならぶ,さとこ
+なりはら,まきこ
+なりとみ,ひでゆき
+なるしま,てつや
+なすかわ,けんた
+なとり,やすし
+ねぎし,ゆうこ
+ねもと,ひろゆき
+にえだ,ともゆき
+にいじま,さとし
+にいくら,たかし
+にいつま,わたる
+にいざわ,ひろし
+にしだ,かつあき
+にしだ,まもる
+にしだ,もりひと
+にしだ,ただとし
+ひだか,たかお
+にしだ,けいすけ
+にしかど,あきら
+にしかわ,ひでき
+にしかわ,ひろみ
+にしかわ,なおき
+にしもと,まこと
+にしむら,じゅんや
+にしな,けんや
+にしの,えみこ
+にした,いずみ
+ふかみ,とおる
+にしわき,まこと
+にしやま,まさる
+にしやま,けんじ
+にしざわ,よしのり
+にった,ひろひと
+にわた,たけし
+にわやま,えいじ
+のあみ,ひでと
+のぼりたて,ゆきまさ
+のだ,やすお
+のがわ,あつし
+のぐち,えいじゅ
+のぐち,ともあき
+のじり,まさのぶ
+のもと,ひでや
+のむら,まさのり
+はやさか,きよし
+のむら,ひろかず
+のと,みき
+のざき,かずよ
+こさか,たけひこ
+おばな,かつし
+おち,ひとし
+おだ,よしひろ
+おがさわら,ひろよし
+おがた,ほずみ
+くき,ちず
+おかだ,くにこ
+おがわ,まなぶ
+おがわ,たかゆき
+おがわ,ひろや
+おぎはら,ともあき
+おぎの,たかし
+おぶ,ひろゆき
+おはら,ゆうこ
+はまもと,みきこ
+おはら,かずひろ
+おはし,まさひろ
+おかわ,そのみ
+おくぼ,としや
+おみや,やすし
+おもり,あやこ
+おむら,まさてる
+おにし,はるのぶ
+おの,かずてる
+おぬき,ひろやす
+おさき,ゆたか
+おさき,ひろあき
+おさわ,ひろゆき
+おしま,まさゆき
+おしま,やすのり
+おしま,かずとし
+おた,こういち
+おた,みか
+おた,ただひこ
+おた,やすこ
+あんどう,ゆうじ
+おた,さとし
+おたか,まさと
+おたき,まさあき
+おたに,せいじ
+おたに,てつや
+おたに,りょひち
+はやし,まさたか
+おつぼ,ひろやす
+おつか,かずお
+おつか,さとし
+おつか,ゆうこ
+はやし,しろ
+おつる,たけし
+おふち,たかお
+おわ,つとむ
+おひゃ,やすお
+おじお,のぶひろ
+おか,みか
+おかべ,ひろし
+おかだ,けんいち
+おかだ,おた
+おかだ,たかあき
+おかだ,ふとし
+おかもと,かずひこ
+おかもと,のりひさ
+おかもと,まさかず
+おかむら,ゆきこ
+おかむら,たけひさ
+おかざき,よしのり
+おかざき,えいき
+おきの,あつし
+おくだ,えみこ
+おくだ,みちえ
+おくがわ,としこ
+はぎはら,たけし
+おくうち,むねお
+おみ,ふみのぶ
+おむら,まさとし
+おんだ,あゆむ
+おの,まさき
+おの,たかや
+おの,とおる
+おの,ひろゆき
+おのでら,たかゆき
+おのでら,ゆ
+おのでら,ともゆき
+おのむら,ひろくに
+おのざわ,けいいち
+おぬき,ひろとし
+おの,こうたろう
+おひゃま,かおる
+おりど,はじめ
+おりしきだ,まさのり
+おさか,じゅにち
+おやま,けんじ
+おざき,むねし
+おざき,あやこ
+おざわ,ひとし
+こざわ,かずひろ
+おざわ,ゆたか
+おざわ,ひょそお
+ぇえ,みのる
+はたなか,しゅんすけ
+さえき,まさひこ
+さいだ,よしのり
+さいぐさ,としお
+はんだ,みのる
+さいとう,しんや
+さいとう,てつろ
+さいとう,たかあき
+さかち,ひとし
+さかぐち,ひであき
+さかい,こういち
+さかい,ただお
+ひらの,たいち
+さかい,たつや
+さかい,よしまさ
+さかい,ゆすけ
+さかい,ひろし
+さかもと,まさはる
+さかもと,たけし
+ひろせ,まさし
+さかもと,みつひろ
+さかた,りょこ
+きしだ,ももこ
+さこ,ひろし
+さくま,たけし
+さくらば,やすとも
+さくらい,まさひさ
+さくらやま,しげひと
+さめしま,まさお
+さんべ,こうじ
+さるわたり,みのる
+はせがわ,こぞ
+ささえ,あきひろ
+ささはら,あきら
+ささき,ひろみ
+ささき,みきお
+ささき,なおき
+ささき,たかし
+はびろ,やすひろ
+ささお,よしあき
+ささおか,よきち
+ささたに,ともじ
+さた,ひろあき
+さたけ,あかし
+さとう,まさる
+ほしの,えみ
+さとう,はるみ
+はっとり,ひろし
+さとう,かずよし
+さとう,まこと
+さとう,まさき
+さとう,まさと
+さとう,なおき
+さとう,りょじ
+さとう,たかまさ
+さとう,たかし
+さとう,ゆたか
+ひらの,ゆきこ
+さとう,ゆたか
+さとう,かずしげ
+さわだ,ともこ
+さわだ,よしみ
+さわふじ,ともみ
+さわき,としき
+さわむら,じゅん
+せがわ,けいじ
+せがわ,まさはる
+せき,しんや
+せき,とおる
+せきぐち,しげき
+せきね,ゆきたか
+せきね,りょひち
+ひらの,たつき
+せんごく,けいじ
+せお,まりお
+せら,としあき
+せら,けいいち
+しばはら,ひろあき
+しばた,ひろゆき
+しばた,やすのり
+はせがわ,けいいち
+しばた,こへい
+しばた,たかひろ
+しばた,こへい
+しばざき,ひろし
+しぶたに,しんたろう
+しぶや,かずき
+しちひょ,りつこ
+しき,たいち
+しきしま,ひさし
+しま,かずあき
+しま,かつみ
+しまだ,えいいち
+しまぬき,やすし
+しまおか,ひろし
+しました,ただし
+しまず,ひろかつ
+しみず,かずの
+しみず,かずひこ
+はせがわ,ともひろ
+しみず,ともみつ
+しみず,ゆたか
+しみず,まさたけ
+しもがい,まさゆき
+しもかわべ,まさこ
+しもおか,ともはる
+しもさか,ともかつ
+しもやま,きみあき
+しんぼり,まさる
+しのはら,たけし
+しのはら,あきこ
+しのざき,こすけ
+しのざき,かつひろ
+しのずか,たかし
+しんや,やすたか
+しおた,なおひろ
+しおたに,けいいち
+しおや,ひでき
+しらはま,けいすけ
+しらい,ちえこ
+しらいし,まさお
+しらいし,ゆりこ
+しらいし,かずひさ
+しらき,としこ
+しらさき,あきひろ
+しょなご,あきひろ
+おひゃま,ひでゆき
+しゅと,てつや
+しもいず,ひろえ
+そえだ,なおたか
+ほりの,ひさとし
+そとじま,ひろし
+すだ,よしこ
+すだ,けんいち
+すどう,ひでこ
+すが,じゅんきち
+すがぬま,けんじ
+すがわら,とおる
+すぎばやし,みちひさ
+すぎもと,みか
+すぎもと,みさ
+すぎむら,やすひと
+すぎの,つとむ
+すぎさき,けいすけ
+すぎさわ,かずゆき
+すぎた,たかしげ
+はやし,みか
+すぎうら,ひろき
+すぎやま,よりと
+すぎやま,たくみ
+すご,ひろかつ
+すいた,ふとし
+すみだ,めいじろ
+すみかわ,ここ
+すなが,ひでひと
+すのはら,はじめ
+すずき,ひろかず
+すずき,けい
+すずき,まさとし
+すずき,みか
+すずき,のぶこ
+すずき,のりひこ
+すずき,さとる
+すずき,しんいち
+すずき,たかお
+すずき,たかゆき
+すずき,たみ
+やまかわ,とおる
+すずき,としや
+すずき,しんじ
+はが,やすお
+すずき,よしひさ
+すずき,あつし
+すずの,さとし
+しゅと,とおる
+たばら,まさみ
+ただ,あきら
+はりがい,ともゆき
+ただ,よしゆき
+たがしら,まさふみ
+たぐち,しょご
+たぐち,たけひろ
+たじま,よしのり
+たじま,かずふ
+ほった,あきこ
+たかだ,かつひこ
+たかぎ,しげる
+たかぎ,たつお
+たかぎ,あさこ
+たかはし,あきひこ
+はしぐち,ひろかず
+たかはし,いさと
+たかはし,かおり
+たかはし,かつふみ
+たかはし,くにひで
+たかはし,まこ
+たかはし,まさる
+たかはし,たかのぶ
+はせがわ,まさゆき
+たかはし,みなこ
+たかはし,みゆき
+たかはし,のぶあき
+たかはし,しんじ
+たかはし,しんじ
+たかはし,しゅにち
+たかはし,とものり
+たかはし,としかず
+たかはし,よひち
+たかはし,ゆうこ
+おみ,えいこ
+たかひら,ひろあき
+たかい,ひろし
+たかみや,なおみ
+たかなし,ひろみち
+たかの,かつとし
+たかの,かずこ
+たかの,かずお
+たかの,ともひろ
+たかの,てるお
+はやかわ,けんたろう
+たかお,ひでのり
+たかしま,かつみ
+たかす,しんいち
+たかとうり,よしみつ
+たかとり,かずひろ
+たかや,いちたろう
+たけ,あつのり
+たけだ,けんいち
+たけだ,ふさひこ
+ほり,けんじ
+たけだ,みのる
+たけはら,よしとも
+たけい,こうじ
+たけもと,りほ
+たけもと,みきこ
+たけなか,よしひろ
+はやし,たまよ
+たかぎ,よしひと
+たけとみ,あきひろ
+たけうち,もとひろ
+たけうち,しゅひゃ
+たけうち,ただし
+たけやす,かつのり
+たけざわ,ひでひこ
+たきば,ふさみ
+たくぼ,のりあき
+はにゅう,あきひろ
+たまより,せいじ
+たもつ,いずみ
+たむら,こぞ
+たむら,しんいち
+たむら,ひかる
+たなべ,しんいち
+たなべ,あき
+たなか,あきすけ
+たなか,けんいち
+たなか,まさひこ
+たなか,まさき
+たけだ,まさのり
+たなか,みほ
+はせがわ,みつお
+たなか,のぶよし
+たなか,れいじ
+たなか,りょじ
+たなか,さとし
+たなか,たかのり
+たなか,つよし
+たなか,ゆうこ
+たなか,ゆた
+たなか,ひろゆき
+たに,あけみ
+みたに,あきら
+たにぐち,やすのり
+はっとり,ひでひこ
+たにぐち,ひろゆき
+たにぐち,よしゆき
+たにぐち,こういち
+たにかわ,あつし
+たさか,よしこ
+たしま,ただし
+たてかわ,まさる
+たての,ひでゆき
+てらじま,たかよし
+てらまえ,まなぶ
+てらさわ,かつき
+てらやま,まこと
+てしま,ゆうこ
+とだ,こういち
+ととみ,よしお
+とひゃま,とおる
+ときわ,ひろこ
+ふくやま,へいご
+とくざわ,ひであき
+とみなが,ひろこ
+とみた,けんいち
+とみやま,ゆうこ
+さわむら,かつひこ
+とりごえ,けんし
+とりたに,まこと
+とさか,けいすけ
+つぼい,まさる
+ひらばやし,こうじ
+つちだ,はじめ
+つちたに,せいいちろう
+つちや,まこと
+つだ,みよこ
+つだ,えつまさ
+つじ,もとゆき
+つじい,たけひこ
+つじむら,ゆきひこ
+つじむら,ちえこ
+つじの,けんじ
+つじさわ,まさる
+つかだ,こうじ
+つかはら,ひでし
+つかもと,かずのり
+つかもと,たつみ
+つかもと,さだゆき
+つねだ,ひでのり
+つのだ,しゅじ
+つのだ,まさひこ
+つるまる,ともなり
+つさか,ひろゆき
+つつい,ひでき
+つつみ,しげと
+つつみ,ひろし
+つつみはら,あつよし
+うちだ,ひろし
+うちだ,かずお
+はやし,なると
+うちだ,たかし
+うちの,しゅひち
+うちやま,ゆみ
+うだがわ,たいぞ
+うえだ,てつお
+うえだ,やすき
+うえだ,よしみ
+ねず,けんたろう
+うえむら,まさひろ
+うえむら,たけし
+うえむら,けんいちろ
+うえの,たかし
+うえの,けん
+うえさわ,たかしげ
+うえつぼ,まさのり
+うえつき,まさはる
+うけの,たかお
+うまはし,まこと
+うめだ,さだゆき
+うめむら,たかゆき
+うみだ,たつや
+うおずみ,さとし
+うらた,あやの
+うしくさ,しんいち
+うすなみ,ひろゆき
+わだ,けんじ
+わだ,たけし
+わだ,としあき
+わだ,さとし
+わかせ,しょた
+わき,けんいち
+わたなべ,しんや
+わたなべ,ともふみ
+わたなべ,としひろ
+わたなべ,よしたか
+わたなべ,よしてる
+わたなべ,ゆすけ
+わたなべ,ひでふみ
+わたぬき,やすたか
+わたぬき,かおる
+わたり,こうきち
+はしぐち,さんぺい
+やぶ,せんた
+やぎぬま,としゆき
+やじま,じゅん
+やまだ,じゅにち
+やまだ,かおり
+やまだ,みき
+やまだ,みつのり
+やまだ,さとよし
+やまだ,ただし
+やまだ,たけし
+やまだ,ともあき
+やまだ,よしひさ
+やまだ,ていじ
+ひさの,よしき
+やまだ,よしゆき
+やまだ,かずと
+やまふじ,よしひさ
+やまぎわ,ひでお
+やまぐち,ひろみつ
+やまぐち,じゅんや
+やまぐち,こうじ
+やまぐち,みつあき
+やまぐち,なおき
+やまぐち,しげふみ
+やまぐち,よしたか
+やまぐち,ゆすけ
+やまぐち,ゆうこ
+やまかわ,あきあつ
+やまもと,あきら
+やまもと,ちえ
+みずたに,ひろこ
+やまもと,かずみ
+やまもと,まさよし
+やまもと,りか
+やまもと,さとし
+やまもと,さやか
+やまもと,たつや
+やまもと,やすひこ
+やまもと,やすひろ
+やまもと,よしひろ
+やまもと,のりゆき
+やまね,ゆい
+やまね,いさお
+やました,てつや
+やました,たけはる
+はんだ,あきら
+やまうち,たかひろ
+やまうち,ゆきこ
+やまうら,ひろし
+やまざき,かなこ
+やまざき,きみお
+やまざき,みどり
+たむら,みつひろ
+やまざき,よのすけ
+やまざき,なおと
+やまぞえ,たかし
+やなぎさわ,かつじ
+やの,かず
+やすだ,かずあき
+やすはら,ひなこ
+こしもと,しんいち
+はぎわら,まこと
+よこた,やすひさ
+よこやま,としお
+よもだ,かずひさ
+よなが,いさお
+よねだ,よしや
+よねやま,しんいちろう
+よねざわ,たかし
+よねざわ,ひろと
+よしだ,かずよし
+よしだ,けんいち
+よしだ,まさとし
+よしだ,さとし
+よしだ,たかお
+よしだ,たかし
+よしだ,ゆみこ
+よしだ,たけし
+よしぐち,ひでき
+よしい,けいこ
+よしいけ,もと
+よしまつ,みきお
+よしの,てるひさ
+よしの,たけし
+よしざわ,あきら
+よつたに,さとし
+ゆきざね,ひろたけ
+ゆやま,さちよ
+ずし,えり
+あらい,ともひさ
+ふじき,まゆみ
+ひらの,てるやす
+かめやま,かつひろ
+こじま,まさと
+なかお,あきひさ
+いわかわ,さちこ
+つちや,けんご
+いじろ,きよひと
+くどう,のぶこ
+ながしま,ゆきお
+はしぐち,きよゆき
+つちや,けんたろう
+いしまつ,ひさよし
+はらだ,しげお
+みずの,おさむ
+ほしの,みつひろ
+あべ,せいじ
+あべ,よしひさ
+あべ,ゆきお
+あべ,まさと
+あぶかわ,ゆひち
+あだち,しげる
+あいざわ,ひでのぶ
+あじろ,かずお
+あかい,めぐみ
+たもと,そうたろう
+あかいし,たつや
+あかし,こうじ
+あきいけ,ともこ
+あきた,かずひと
+あきやま,かつゆき
+あまがい,けいこ
+あまがた,ひろやす
+あまの,ひろたか
+あめみや,ふみお
+あんどう,はるお
+あんどう,しげのり
+あんどう,たかこ
+あんどう,ゆたか
+あんざい,えいいち
+あおき,みさ
+あおき,けんたろう
+あおやぎ,きりこ
+あおやま,まさゆき
+あらい,としあき
+あらい,みきお
+あらき,えいち
+あらや,まゆみ
+ありま,やすひろ
+ありたけ,のりちか
+あさだ,むつみ
+あさひ,ひでふみ
+あさの,たかし
+あしだ,みほ
+あしかわ,かつみ
+ばば,かずひろ
+ばば,たかゆき
+ばば,だいご
+ちば,しんご
+ごと,まさひで
+ちょ,まさとし
+だいど,あきふみ
+どあい,あつと
+どい,ゆうこ
+ほそい,まさし
+どい,ともなり
+どい,としみつ
+えがしら,ひろあき
+えぐち,しんいち
+えばら,せいじ
+えんど,たけお
+えんど,ゆうじ
+あまり,じゅんこ
+えのもと,さとし
+えのもと,さとし
+えのもと,やすゆき
+えのもと,たかはる
+えざき,けんじ
+ふじはら,じゅんこ
+ふじい,まさひこ
+ふじい,えいじ
+ひるかわ,ゆうこ
+ふじい,こうじ
+ふじさわ,ともひろ
+ふじさわ,たくじ
+ひご,いさお
+ふじた,けんいち
+ふじた,ひでたか
+ふじわら,やすひろ
+ふかみ,つとむ
+ふかざわ,しんいち
+はせがわ,さとし
+ふくだ,けんじ
+ふくもと,きよみ
+ふくむろ,まさみ
+ふくろ,あきら
+ふくし,ちから
+ふくしま,かずひと
+ふくしま,まさはる
+はぎわら,たかし
+ふくしま,さつき
+ふなき,けん
+ふなくぼ,まさひこ
+はらだ,はるみ
+ふるはた,ひろゆき
+ふるかわ,かつゆき
+ふるもと,つよし
+ふるや,たかし
+ふしみ,とおる
+ごだ,やすゆき
+いりえ,たけし
+いしはら,よすけ
+いちかわ,じゅんこ
+いば,みつお
+いわさき,たかし
+いのうえ,やすこ
+いいもり,ひろみ
+いはら,たかみ
+いわむら,しんいち
+いながき,としお
+いしじま,あきら
+いとう,なおき
+ごんど,ふみお
+ごと,みのる
+いしかわ,もとふみ
+いとう,まちこ
+いせき,たかし
+ごと,ともや
+はだ,ひろみ
+はぎわら,みきお
+はぎわら,しんじ
+はいじま,あきら
+はまだ,まさゆき
+はまの,まみ
+はまおか,さえこ
+はなど,あやこ
+はなた,まさひろ
+はら,せいじ
+はら,しょた
+はら,ゆきお
+はら,かずひろ
+はらだ,しろ
+はらだ,しゅじ
+はらだ,すみれ
+すずき,まさひこ
+はらが,まさのぶ
+はらみ,りこ
+はらやま,ひろゆき
+はらぞの,ひであき
+はせべ,みわこ
+かねこ,ともこ
+つちだ,あいこ
+はしもと,ひろし
+はしもと,ひろつぐ
+はしもと,こすけ
+はしもと,みのる
+はしもと,てつや
+はしもと,ともひこ
+はしもと,ゆうじ
+はしもと,たけし
+はた,きょこ
+はっとり,しん
+はっとり,たけし
+はっとり,あきひと
+はやかわ,たけろ
+はやかわ,たつや
+はやさか,けんたろう
+はやさき,のぶひこ
+はやし,のぶひろ
+はやし,たくじ
+はやし,ともあき
+はやし,よひち
+はやし,りえ
+はやしだ,ふみひろ
+ひび,かなえ
+ひがし,さとし
+ひがし,たかあき
+ひぐち,ひでき
+ひじかた,ひでき
+ひじや,よしひこ
+ひなが,けいこ
+ひらかわ,ひであき
+ひらの,まこと
+ひらの,せいじ
+ひらの,きよし
+ひらお,ひではる
+ひらしま,よしかず
+ひらやま,せいご
+ひらやす,としひこ
+ひりき,たかよし
+ひろまさ,たかなり
+ひろもと,やすき
+ひろおか,あきら
+ひろせ,けんぞ
+ひろせ,かずのぶ
+うめだ,やすひろ
+ほんだ,かずお
+ほんど,こういちろ
+ほりもと,けんじ
+ほりの,よしお
+ほりうち,たけし
+ほさか,ひであき
+ほしの,ひろこ
+ほしやま,いたる
+ほそかわ,ただお
+ほそかわ,たかひと
+ほそかわ,なおき
+ほそや,としろ
+いばらき,ひとし
+いちはら,けんいちろ
+いちはら,わたる
+いちはら,しんじ
+いちかわ,まなぶ
+いちのせ,ゆみこ
+いだ,まつたろう
+いでぐち,りょひち
+いど,さなえ
+いがらし,たけし
+いがらし,やすゆき
+いがらし,かずしげ
+いいだ,たかね
+いいだ,あきこ
+いいじま,まこと
+いけだ,みぎふみ
+いけだ,てつや
+いけだ,よしひろ
+いけだ,しげお
+いまい,ひろし
+いまいずみ,のぶお
+いまいずみ,ひさみつ
+いまむら,たかし
+いまむら,のぶこ
+いもん,けんいち
+いなだ,さとし
+いながき,たけし
+いながき,かずひと
+いなむら,まさし
+いなむら,かつのぶ
+いの,ゆきひこ
+いのかわ,ひろし
+いのまた,ひろお
+いのうえ,かつとし
+いのうえ,こうじ
+いのうえ,りょ
+いのうえ,ともみ
+いのうえ,ともみ
+いのうえ,ようこ
+いのうえ,こき
+いぬい,けいこ
+いぬしま,みわ
+いりえ,おさむ
+いさか,みのる
+いしば,かずゆき
+いしばし,ますみ
+いしばし,かずや
+いしだ,みつや
+いしだ,たかし
+いしだ,とものり
+いしだ,せいいちろう
+いしがみ,あすこ
+いしぐろ,かずひと
+いしはら,ひろかず
+いしい,さとし
+いしい,しほ
+いしい,やすひろ
+いしい,ゆうじ
+いしい,ゆうた
+いしい,こういちろ
+いしかわ,しんいちろう
+いしまる,まゆみ
+かわず,まさのり
+いしずか,しげる
+いたや,ちひろ
+いいだ,だいすけ
+いとう,ひでき
+いとう,ひろみつ
+いとう,ひろし
+いとう,かつひろ
+いとう,けいいち
+いとう,こういち
+いとう,こうじ
+いとう,まりこ
+いとう,まさひろ
+いとう,なおみ
+いとう,のぼる
+いとう,せつこ
+いとう,ただし
+いとう,たかはる
+いとう,としお
+いとう,つよし
+いとう,よひち
+いとう,ゆきお
+いとう,のりひさ
+いとう,あきひろ
+いわい,ひろみち
+いわい,ひろし
+いわみ,いくお
+いわむら,かずや
+いわなが,しょこ
+いわお,かずひろ
+いわさき,じゅん
+いわた,まこと
+いわた,おさむ
+いわた,よしまさ
+いずみ,まさゆき
+じんば,まさみ
+じょのうち,ひろあき
+じょらく,たまき
+かがみ,きよたか
+かがわ,まさふみ
+かげやま,ひろかず
+かい,ゆきお
+かじもと,えいじ
+かじわら,みほこ
+くりはら,たかゆき
+かきむら,かずしげ
+かきのき,きよし
+かきうち,よしたか
+かきざき,なおこ
+かこ,かずあき
+かめしま,りゅこ
+かみえす,きよこ
+かみくら,みつひろ
+かみむら,しんじ
+かみたき,のぞむ
+かみよしかわ,つねのり
+かん,りえ
+かない,よしのり
+かんばやし,ひろし
+かんだ,けいた
+かねこ,たまき
+かねこ,じゅん
+かねた,たくや
+かの,せいじ
+かりの,えいじ
+かさみ,じゅん
+かさなみ,たかあき
+かせ,ひろゆき
+かすが,こうじ
+かすや,としひこ
+かたおか,だいすけ
+かとう,えいいち
+かとう,ひろし
+かとう,こういちろう
+かとう,まさじ
+かとう,まさゆき
+かとう,たくや
+かとう,としかず
+かとう,いちろう
+かとう,よしひと
+かとう,たかゆき
+かつまた,やすゆき
+かつら,たかし
+かわべ,まゆみ
+かわだ,ひろし
+かわぐち,かなえ
+さいとう,たかと
+かわぐち,まもる
+かわはた,ひろし
+かわかみ,まさなり
+かわかみ,のりこ
+やじま,なおこ
+かわもと,ひろし
+かわむら,まさゆき
+かわむら,のりあき
+かわむら,ただあき
+かわむら,けんじ
+かわの,けんじ
+かわの,たかゆき
+かわさき,あきひと
+かわせ,じろ
+かわしま,くみ
+かわしま,まさき
+かわしま,よしゆき
+かわしま,たけし
+きだ,ひでき
+きくち,ひでたか
+きくち,いくこ
+やまもと,かおり
+あきよし,かずよし
+きくち,けんいち
+きくち,みつよ
+きくち,つよし
+きくち,ひであき
+きむら,ひろし
+きむら,じゅにち
+きむら,まり
+きむら,まさひこ
+きむら,まさかつ
+きむら,しげゆき
+きむら,けんじ
+かとう,としや
+きなせ,よしはる
+きね,ひでき
+きの,やすのぶ
+きの,みのる
+きのした,かずや
+きら,たかひで
+きしもと,やすひろ
+きたばたけ,やすひろ
+きたばたけ,まもる
+きたがわ,たつや
+きたがわ,みつる
+きたむら,あきこ
+たかはし,ふみひこ
+きたやま,まさひこ
+きよなり,あきひこ
+こばやし,あつし
+こばやし,ひろし
+こばやし,まさき
+こばやし,みのる
+こばやし,しょじ
+こばやし,ゆうじ
+こばやし,まさこ
+いとう,あき
+この,かずひろ
+この,けいた
+この,ようこ
+この,とおる
+こいけ,あきお
+こじま,たかひこ
+こくしょ,おさむ
+こまき,ちかこ
+まかべ,ひろあき
+こまつ,めぐみ
+こまつ,えいじ
+こんど,ひろし
+こんど,きよし
+こんど,としひろ
+こしば,あきこ
+よこえ,たかし
+こてがわ,ひろし
+この,ひろあき
+こやま,なおき
+こやま,しんじ
+こやま,よひち
+こざす,たかみつ
+くちいし,ひろし
+くぎみや,かずあき
+くじらい,ともふみ
+くまのみど,わたる
+くまざき,まさる
+くれまつ,かずや
+くりき,さぶろ
+くりやま,たけし
+くりやま,ひろえ
+くろべ,しん
+くろさわ,たくみ
+くろさわ,まさゆき
+くりゅ,みき
+くさの,やすのり
+くわはら,まさのり
+くずの,かずあき
+きゅだ,れいこ
+まぶち,もとくに
+まちた,ひろたか
+まえだ,としのり
+まえいえ,かずとし
+まえかわ,りゅすけ
+ままだ,あつし
+まなべ,ひろし
+まなべ,ともき
+まるいち,たかひで
+まるたに,まさゆき
+まるやま,としろ
+まさおか,ひろし
+ますだ,なおと
+ますだ,ともあき
+ますだ,やすゆき
+ますだ,よしえ
+ますだ,かつゆき
+まつばら,じゅん
+まつだ,よしたか
+まつだ,たくや
+まつだいら,けんいち
+まつえだ,まさき
+まつい,よひち
+まつい,あきふみ
+まつもと,ちあき
+まつもと,ひろし
+まつもと,ひろたか
+まつもと,かずお
+まつもと,まさゆき
+まつもと,たかひで
+まつもと,たかこ
+まつもと,たかゆき
+まつもと,たつみ
+まつもと,つよし
+まつもと,よしぶみ
+まつもと,ゆきこ
+なかむら,ひろかず
+まつむら,こぞ
+まつなが,かつや
+まつの,ひろゆき
+まつお,としふみ
+まつお,あゆみ
+まつおか,ひでし
+まつおか,ひろき
+まつおか,のぶお
+まつおか,せいいち
+まつおか,かずひろ
+まつしま,きよかず
+まつたに,きょこ
+まつやま,よしき
+みちもと,なりあき
+みえき,あきのり
+みかみ,けん
+みかみ,としかず
+みながわ,けん
+みなかわ,だい
+みしま,ひろゆき
+みしま,くみ
+みしま,けんじろ
+みたち,かずと
+みつだ,りゅいち
+みつはし,たかお
+みつい,たけし
+みつもと,かずのり
+みうら,ただあき
+みうら,ひろし
+みやべ,あつし
+みやち,きみお
+みやじま,あや
+ばん,こうたろう
+みやもと,まゆみ
+よこえ,たくろ
+みやさか,かずみ
+みやた,よしたか
+みやた,つよし
+みやうち,しょこ
+うちやま,かずみ
+さかい,しのぶ
+みやざわ,ひろあき
+みぞぶち,こうじ
+みぞぐち,なおき
+みぞぐち,じゅん
+みずもと,ひろし
+みずの,きよみ
+みずの,きょじ
+みずの,まさひろ
+みずしま,あきら
+みずた,まさゆき
+みずたに,あきのり
+もぎ,まなぶ
+もぎ,としあき
+もぎ,こぞ
+ももせ,けいいち
+もんま,ひろゆき
+もり,かずお
+もり,まさひろ
+もり,みきこ
+もり,りょすけ
+もり,としあき
+もり,えいこ
+もりもと,あきら
+もりの,いずみ
+よしだ,あつひこ
+もりた,まさよし
+もりた,まさゆき
+もりた,ゆうじ
+もりた,ゆきお
+もりた,ゆたか
+もりわき,ひさと
+もろ,かずのり
+もたい,もゆる
+もとばやし,ひろし
+もとはし,だいすけ
+もとやま,ゆうじ
+もとざわ,れいこ
+むかわ,けいすけ
+むなかた,けんいち
+むらかみ,まさひろ
+むらかみ,りか
+むらかみ,つとむ
+むらかみ,ゆきひろ
+むらかみ,よすけ
+むらかわ,なおふみ
+むらなか,ひでのぶ
+むらた,かずひさ
+むらた,かつみ
+むらやま,よしや
+むらやま,しげお
+むろはし,たくお
+むと,よしろ
+むと,ひろし
+なば,さとる
+ながい,しげまさ
+ながい,まさのり
+ながの,ゆうじ
+ながの,いつこ
+ながお,ふみこ
+やまもと,ひろあき
+ながおけ,よしき
+ながおさ,ひろゆき
+ながしま,やすこ
+ながしま,あきひさ
+ながた,まさこ
+おば,まゆこ
+ながた,とものり
+ながた,ひろき
+ながたに,けんじ
+ないとう,ひろし
+なかち,こうじ
+なかだ,かおる
+なかだい,あきこ
+なかがわ,ひろゆき
+なかがわ,まさる
+なかがわ,なおあき
+なかがわ,かつや
+なかはら,たまみ
+なかい,やすひろ
+なかい,かずひろ
+なかじま,さとし
+なかじま,あきひろ
+なかむら,かつや
+なかむら,くみ
+きみひら,みき
+いとう,さとし
+なかむら,しんじ
+なかむら,しょへい
+なかむら,つよし
+なかむら,やすのり
+なかむら,よしはる
+なかむら,よしゆき
+なかむら,ゆひち
+なかむら,なおゆき
+なかにし,よしゆき
+なかにし,あつし
+なかの,ひろゆき
+なかの,じゅん
+なかの,けいいち
+なかの,しの
+なかの,たかし
+なかお,こうじ
+なかさく,しゅご
+なかせ,まさゆき
+なかた,みか
+なかた,たかひさ
+なかた,こうじ
+なかたけ,たつや
+なかやま,かずゆき
+なみき,はじめ
+ななさわ,まさあき
+なんば,ひろき
+なんもく,みき
+ねもと,ともお
+ねもと,いずる
+にい,たかひろ
+にいで,ゆうこ
+にいくら,やすあき
+にいずま,てつや
+にかみ,かずのり
+にしばやし,あつし
+にしだ,あきこ
+にしはら,しょたつ
+にしはら,ひろたか
+にしかわ,くるみ
+にしかぜ,ひろみ
+にしみや,やすひろ
+にしむら,たくお
+にしむら,ふみお
+にしやま,けいし
+にしやま,なみじ
+にった,だいすけ
+にわ,えみこ
+とご,なつこ
+にわ,みつあき
+のぶはら,よしこ
+おがわ,ひでつぐ
+のがみ,ひでや
+のがみ,たいちろう
+のもと,あきら
+のむら,まさひこ
+のむら,よしや
+のぞえ,しきこ
+ぬまた,さとし
+おだじま,たかひろ
+おがえり,かずのり
+おがた,さとし
+おがわ,しんいち
+おがわ,きわむ
+おぎ,ひとし
+おぎくぼ,もとあき
+おご,かつあき
+おぐら,きよし
+おば,まなぶ
+おばやし,かつや
+おへ,こうじ
+おがま,ゆうこ
+おはし,おさむ
+おひし,じゅにち
+おかわ,みか
+おきど,まなぶ
+おくぼ,たかひろ
+おくぼ,はじめ
+おくま,てつ
+おま,えり
+おまえ,とおる
+おまえ,ひでき
+おもり,しげる
+おもり,たけお
+おもり,たけし
+おもり,よじろ
+おもり,ともき
+おもと,ひろゆき
+おにし,ともひろ
+おにし,よりこ
+おにし,よひち
+おの,こういち
+おぬま,なおき
+おさか,けんじ
+おさわ,やすひこ
+おさわ,まさお
+おしま,ひろゆき
+おしろ,ひろふみ
+おた,まこと
+おた,まもる
+おた,むつろ
+おた,たかし
+おた,ともひろ
+おた,みつよし
+おたに,なおき
+おつ,ひろき
+おつか,まさやす
+おつき,みつる
+おいかわ,あいこ
+おか,けんじ
+おか,まさてる
+おか,あきら
+おかだ,ひろき
+おかだ,りさ
+おかだ,たかひろ
+おかだ,すみこ
+おかぐち,たかし
+おかい,しんいち
+おかまつ,あさこ
+おかもと,あつお
+おかもと,ひでゆき
+おかもと,まさみ
+おかもと,むねやす
+おかもと,しんいちろう
+おかもと,やすひろ
+おかもと,ひろゆき
+おかの,たかし
+おかざき,あきひろ
+おきもと,みちお
+おくの,よしひさ
+おくやま,ひでき
+おみ,ふみこ
+おの,みき
+おの,やすし
+おの,ゆひち
+おのせ,さとる
+おのざき,のぶひろ
+おりえ,ゆたか
+おざき,たかひろ
+とくみや,よしあき
+さいち,えいいち
+さいとう,ひでお
+さいとう,まさぶみ
+さいとう,まさひろ
+さいとう,みちはる
+さいとう,のりお
+さいとう,ともひろ
+さいとう,ゆきと
+さいとう,えつこ
+はかまだ,よしたみ
+さかぐち,やすお
+さかい,しげる
+さかきばら,なおき
+さかきもと,ひろふみ
+さかもと,ひろし
+さかもと,じゅんこ
+さかもと,たかし
+さかもと,よしこ
+さかもと,まさこ
+みたに,てつや
+さかうち,かおり
+さきもと,しんいち
+さくま,ひとき
+さくらい,ひであき
+さの,ひろたか
+さの,ゆたか
+さの,やすひこ
+ささだ,たいし
+ささはら,かおる
+ささき,かよ
+ささき,こうじ
+ささき,まりこ
+とだに,たかお
+ささき,よしえ
+さたけ,えいじ
+さとう,えり
+さとう,ひでひろ
+さとう,いずみ
+さとう,けいいち
+さとう,けんいち
+さとう,くにひこ
+さとう,まさひこ
+さとう,みつる
+さとう,もとのり
+さとう,りきや
+さとう,りゅひち
+さとう,しゅぞ
+さとう,しゅんすけ
+さとう,すすむ
+さとう,たかひと
+さとう,としひこ
+さとう,やすふみ
+さとう,つよし
+さとう,せいじ
+さわだ,つねのり
+さわだ,やすひろ
+さわだ,しんご
+いわた,ひさはる
+さわい,ゆひち
+さわい,よしあき
+さやの,たかかず
+せき,りえこ
+せきぐち,とおる
+せきぐち,ゆひち
+せきぐち,はるお
+せきね,しんいちろう
+せきの,のぼる
+せんな,こうじ
+せりざわ,だいすけ
+せと,あきら
+しばた,けいたろう
+しばた,ともこ
+しばた,じゅんじ
+しばたに,ともき
+しぶたに,けいたろう
+しが,まこ
+しげのぶ,みちよ
+しま,まゆみ
+しまだ,としひこ
+しまだ,そういちろう
+しまむら,いくや
+しみず,たけし
+しみず,まさよし
+しもばやし,みか
+しもがわ,あきら
+しもひごし,あきひろ
+しもいで,たかし
+しなだ,としみつ
+しねい,ひろゆき
+しんがい,かつや
+しのだ,こういち
+しのはら,まさひで
+しのざき,けいすけ
+しおや,さとし
+しらはま,きょこ
+しらいし,さとる
+しらいし,かずよし
+したら,みきこ
+しょじ,れいじろ
+しょじ,さとこ
+ますやま,よしみつ
+しゅと,たけかず
+そえだ,さだみち
+そね,きよし
+そねだ,こうじ
+そのべ,てつひさ
+そのべ,たいし
+そらの,かつみ
+すだ,ゆか
+すがい,ただし
+すがわら,こうじ
+すぎもと,たかひろ
+すぎもと,ともよし
+すぎうら,たくや
+すぎやま,たろう
+すぎやま,ゆひち
+すぎやま,たかし
+すじゃく,たけし
+すか,ひろゆき
+すけがわ,しん
+すみなが,まさひで
+すみおか,ゆみこ
+すなやま,ひでかず
+すずき,ひでき
+すずき,たくお
+いしい,まさひろ
+すずき,まさし
+すずき,みほ
+すずき,なおひろ
+やましろ,のりゆき
+すずき,せいま
+すずき,たかひろ
+すずき,たかまさ
+すずき,よしのり
+すずき,まさひろ
+たばこ,ひでまさ
+たばた,れいこ
+なかじま,たかやす
+たばた,とおる
+たちばな,ひろゆき
+たがみ,きみこ
+ままだ,ともや
+たがわ,けんいち
+たじま,まさや
+たかばやし,ひろし
+たかだ,やすひこ
+たかだ,しげる
+たかぎ,たかゆき
+たかぎ,ひでひろ
+たかはし,ひでき
+たかはし,ひろし
+たかはし,じょ
+たかはし,かつゆき
+たかはし,かずのり
+たかはし,こういち
+たかはし,くみこ
+わたなべ,まさき
+たかはし,てるゆき
+たかはし,よしつぐ
+たかはし,としゆき
+たかはし,たいせい
+たかい,けんじ
+たかくら,まこと
+たかくら,もとひろ
+たかまち,ゆき
+たかまつ,ともよ
+まつなが,たかひろ
+たかもと,えみ
+たかむら,だいすけ
+たかおか,しんや
+たかすぎ,ゆきお
+たかや,ひろき
+たかやま,ひろこ
+きたはら,いずる
+たけだ,まさき
+たけだ,みしょ
+たけはな,まき
+たけまつ,やすし
+たけおか,ゆたか
+いしかわ,こへい
+たけした,まさふみ
+たけたに,ひでき
+たけうち,けんすけ
+たけうち,しほ
+たけやま,かつのり
+たけざわ,あきよし
+たきざわ,やすひろ
+たきざわ,よしき
+たまい,のぶかつ
+たなはし,ご
+たなか,はるこ
+たなか,ひであき
+たなか,ひろゆき
+たなか,けんいち
+たなか,くにひで
+たなか,まさひろ
+たなか,まさかつ
+たなか,まさみ
+たなか,みのる
+たなか,もとふみ
+たなか,なおき
+たなか,のぶゆき
+たなか,さとし
+たなか,さとし
+たなか,たけし
+たなか,きよじ
+いしだ,つとむ
+たなか,ちから
+たにぐち,ともゆき
+たにぐち,のぶゆき
+たにい,けんたろう
+たにむら,こすけ
+たにおか,ひろゆき
+たんの,ひろし
+たぬま,けいこ
+よこやま,もとき
+たしろ,せいじ
+たしろ,かずひと
+たて,ゆうこ
+たうら,えいいち
+たぞえ,えいじ
+たずけ,つねひろ
+てんも,まさひろ
+てらだ,のりひろ
+てらもと,かずなお
+てらおか,のぼる
+てずか,けんや
+とぐち,かずお
+とま,しげる
+とま,けんいち
+とひゃま,ゆりこ
+ときおか,みちよ
+たにやま,ともこ
+みうら,ゆきお
+とくら,まもる
+とくやま,わたる
+とみいし,あきら
+とみかわ,けんいち
+とみなが,ひでと
+とみた,まこと
+とみた,ゆうこ
+おもり,まこと
+ともた,かよこ
+ともの,ちえこ
+とりかい,えいじ
+とりうみ,けい
+とつか,ひろゆき
+とよだ,じゅんこ
+とよだ,こういち
+とよおか,ひろやす
+つちだ,かずゆき
+つだ,たかしげ
+つじたに,ひであき
+つかもと,そひち
+つかもと,かずお
+つかわき,ひろや
+つるまき,くにひこ
+いちばんがせ,のりこ
+さかい,あつし
+うちだ,ふみえ
+かなおか,もとよし
+うちだ,まさゆき
+うちうみ,ひでひこ
+うちやま,けいじ
+うちやま,なおき
+うだ,よしのぶ
+うだがわ,あやこ
+おしま,けいいち
+うえだ,みきひろ
+うえだ,たくのぶ
+うえはら,こうじ
+うえむら,こういち
+うえの,まさつぐ
+うえの,よしてる
+うえすぎ,ひろあき
+うえつき,まさたか
+うかわ,ようこ
+うまずめ,ゆきこ
+うめはら,みほこ
+うめむら,かずひろ
+うめざわ,こへい
+うの,たつや
+うの,なおひこ
+うらもと,ふみたか
+うるま,ゆき
+うしば,あつこ
+ながた,たろう
+うしぐさ,あつこ
+はせがわ,えいか
+さかまき,よしみつ
+うわべ,ひでゆき
+わだ,まさき
+わかお,おさむ
+わかお,ひろのり
+わきた,まさみ
+いのまた,たいち
+わくい,まさひで
+わしざわ,しんや
+わしずか,としお
+わたべ,ひろふみ
+わたなべ,ひろし
+わたなべ,ひろし
+わたなべ,ひさや
+わたなべ,けい
+わたなべ,まさふみ
+わたなべ,みのる
+わたなべ,りゅた
+わたなべ,としあき
+わたなべ,よしあき
+わたなべ,ゆり
+とよた,まさゆき
+わたり,あきこ
+とみやす,けいじ
+やえがき,れいこ
+やぎ,ようこ
+やぎ,ひろみ
+やぎぬま,まさや
+やく,けいこ
+やまだ,こうじ
+やまだ,まさとし
+やまだ,のりゆき
+やまぎし,かずひろ
+やまぐち,しげる
+やまぐち,たかお
+やまぐち,つよし
+やまぐち,ともゆき
+やまこし,だいち
+やまもと,ひでき
+やまもと,ひろかず
+やまもと,ひろみ
+やまもと,ひとし
+やまもと,けいこ
+たちばな,としひさ
+やまもと,よしあき
+やまもと,みよこ
+はらたに,よしまさ
+やまなか,だいすけ
+やまね,あきと
+やました,かずひこ
+やました,まき
+やました,ようこ
+やまたに,あつし
+やまうち,こういち
+やまざき,としゆき
+やな,かおる
+やなべ,あきら
+やながわ,だいすけ
+やなぎ,まさひろ
+やなぎだ,けんじ
+やさか,たけお
+やすだ,せいいち
+やすふく,しゅじ
+やすかわ,まさとし
+よこさわ,じゅん
+よこた,けんいち
+よこた,ともこ
+はらだ,たかし
+よこうち,よしふみ
+よこうち,あきひこ
+よこやま,ひろし
+よこやま,なおこ
+よねだ,たかし
+よねの,ともこ
+かさはら,あきら
+よしだ,ひろあき
+よしだ,ひろき
+よしだ,りょ
+よしだ,としあき
+よしだ,りゅひち
+よしどめ,かずひで
+よしはら,まさみつ
+よしい,ゆたか
+よしい,きよかず
+よしかわ,たくや
+よしみ,ひろし
+よしの,かずひろ
+よしの,こすけ
+よしの,まさひろ
+よしおか,しんすけ
+よしおか,まこと
+よしたけ,かずのぶ
+よしざわ,なおき
+ゆずはら,なおみ
+ぜんげ,さとみ
+ずし,ひでお
+ごみ,じゅん
+ごと,ひろし
+いけだ,なおと
+いまじょ,ひろし
+あべ,しずか
+かとう,たかひろ
+かわばた,さとる
+こばやし,まこと
+こんど,しおり
+くぼ,たいき
+くらもち,ふみお
+まるやま,やすし
+もりかく,ともこ
+むらおか,けんいち
+ながしま,こういちろ
+なか,ただし
+なかはら,としかつ
+なかむら,こうじ
+なかせ,かずたか
+なりた,みお
+にしむら,ひろき
+のなか,ひろし
+おがわ,たけはる
+おぐら,まさひろ
+おみ,まなぶ
+おかの,しげる
+しまだ,しげる
+しみず,ゆきひこ
+しむら,くにむね
+たかはし,まさひこ
+たかまつ,ようこ
+うえだ,よしあき
+うじ,ゆきお
+うつみ,ひろゆき
+あべ,ようこ
+こんど,としや
+たかのうち,たくや
+いのうえ,つよし
+なかはら,とみ
+あだち,ひさえ
+なかの,えみこ
+あいば,ひでなお
+あいば,よしお
+あいば,とおる
+あいだ,まこと
+あいはら,まさや
+あかいし,じゅんじ
+あかいわ,かずのしん
+あかおぎ,ひでゆき
+あきた,みつまさ
+あまの,けんいち
+あおき,むつお
+あおき,ご
+あおぬま,しゅひち
+あおやぎ,よひち
+あらき,たかし
+ありまち,けんさく
+ありた,むねひろ
+あさだ,ひとし
+あさえだ,ゆたか
+あさはら,ひろき
+あさかわ,のりあき
+あさもと,たけし
+あさの,さとし
+あたぐち,まさひろ
+あやき,あつし
+ばば,まさおみ
+ばば,よしひろ
+ばば,としひで
+ばん,つよし
+だいこく,なおこ
+だて,ひろこ
+さの,ゆきこ
+みつおか,ひとし
+でんだ,えいじ
+どい,あきら
+えんど,としのぶ
+えんど,ひであき
+えざわ,てつや
+ふじえ,たかひろ
+ふじい,よしはる
+ふじい,かずひこ
+ふじまき,つとむ
+ふじもと,ゆたか
+ふじもと,ひろし
+ふじむろ,はるこ
+もろずみ,しゅんすけ
+ふじさわ,かおる
+ふじた,ななこ
+ふかせ,たけし
+ふくだ,みちよ
+ふくどめ,しげひこ
+ふくい,じゅにち
+ふくなが,しげき
+ふくしま,かずひこ
+ふくざわ,えみ
+ふるばやし,ともひこ
+ふるかわ,よひちろ
+ふるかわ,なりひで
+ご,たけふみ
+ごまる,かずひろ
+ごと,まさあき
+ごと,まさかつ
+ごと,みわ
+のもと,みきお
+はぎわら,こうじ
+はいやま,かんじ
+はま,けんじ
+はまち,ひろゆき
+はまだ,たつや
+はまたに,しせい
+はない,たかし
+はなた,ひさし
+はねじ,ふみひさ
+はんざわ,ひでお
+はら,まりか
+はら,あきら
+はらだ,ひでき
+はらだ,あけみ
+はせがわ,はな
+はせがわ,すすむ
+はせがわ,しょ
+はしぐち,たつや
+はしもと,ちずか
+ごと,かおる
+かじわら,りゅた
+はすみ,きょこ
+かたやなぎ,かずみち
+はたけやま,しゅひち
+むらい,なおひさ
+はたに,しげお
+はっとり,やすひと
+はっとり,ひらく
+はやし,ひろこ
+おすみ,まさひこ
+はやし,みほ
+はやし,しんじ
+はやしだ,かずひで
+ひが,きよし
+ひがし,ゆたか
+ひがしだ,なおこ
+とよだ,てつや
+ひの,まさよし
+ひら,やすゆき
+ひらもと,けい
+ひらお,よしこ
+ひらお,つぐのり
+ひらた,えいいち
+ひらやま,しんいち
+ひろい,みつゆき
+ひろかわ,りゅひち
+ひろかわ,やすのぶ
+ひろます,たかゆき
+ひろせ,たかゆき
+ひろせ,まさこ
+ひしや,かずなり
+ほしょ,よしのぶ
+ほんだ,さき
+はやし,たけお
+ほんま,りゅすけ
+ほりぐち,しゅひち
+ほりい,ゆひちろ
+ほし,たけひこ
+ほそい,てつや
+ほそみ,じゅんこ
+ほった,まさと
+ふくろい,まさゆき
+ふるや,なおみ
+いぶか,たけし
+いちば,たかし
+いちはら,のりかず
+いちかわ,よたろう
+いちむら,かずゆき
+いちのせき,みつる
+いいだ,たかお
+いいだ,さとし
+いいじま,あきこ
+しのはら,みほこ
+いけだ,のぞむ
+いけだ,たけし
+いけだ,てるお
+いけだ,ひろみ
+いけざわ,あきひこ
+いまい,かつや
+いまい,やすお
+いまい,まさひで
+いまき,けんじ
+いまむら,あきひと
+いもと,そひち
+あべ,たかし
+いなだ,ひろし
+いのうえ,ひろし
+いのうえ,じゅにちろ
+いのうえ,としひろ
+いのうえ,としや
+いりえ,じゅんこ
+つるおか,ようこ
+おはし,はじめ
+いしだ,りえ
+いしだ,ゆき
+いしだ,ゆたか
+いしだ,ようこ
+いしぐろ,かずたか
+いしはら,まゆみ
+いしはら,けいた
+いしい,くにひこ
+いしかわ,みのる
+いしかわ,けんすけ
+いしわた,しょひち
+いとう,よしやす
+いとう,ゆきこ
+いとやま,ともひろ
+いつき,たかし
+いわき,まさひこ
+いわさき,かずお
+いずつ,よしひこ
+じぶ,ひとし
+かどい,ひさとし
+あだち,ゆうじ
+かい,けんじ
+かいせ,こうじ
+かいずか,はじめ
+かじわら,よしき
+かき,しげお
+かきみ,じゅんこ
+すぎた,みつひこ
+かくたに,まさのり
+かみばやし,あきら
+かみがき,まさのり
+かみや,たかし
+かもだ,あきこ
+かもと,としお
+かんばやし,かずひろ
+かねこ,こうたろう
+かねこ,たけし
+かねこ,ゆうじ
+かねこ,えみこ
+かにさわ,てるやす
+かる,けんじ
+かしわぎ,たかゆき
+かすみ,ひろあき
+かたぎり,ひろこ
+かとう,ひろし
+かとう,かつとし
+かとう,こうじ
+かとう,れいき
+かとう,やすこ
+たぐち,かつひこ
+かとう,のりひで
+かとう,さとし
+かとう,こういち
+かつら,たもつ
+そご,もとひろ
+かわひと,しんご
+かわい,みつや
+かわかみ,くにひこ
+かわみ,みつお
+かわむら,たつや
+かわむら,たかゆき
+かわさき,てつや
+かわさき,よひちろ
+かわうち,なおゆき
+かつき,みつひろ
+きだ,あつし
+きどころ,ゆうこ
+もり,のぶお
+きくち,たつろ
+きくがわ,じゅんこ
+きむら,けんじ
+きむら,こう
+きむら,しん-いち
+きむら,あきら
+きのした,けん
+きのした,まこと
+きのした,りえこ
+きのした,こうじ
+きしだ,しげる
+きしかわ,しんじ
+きた,てるき
+きたぐち,ひろし
+あまの,ともかず
+きたむら,まさあき
+きたやま,あきとも
+こばやし,へいじ
+こばやし,ひろし
+こばやし,けんじ
+こばやし,まこと
+こばやし,みえ
+こばやし,みつひろ
+あめした,さとる
+こばやし,たけし
+こばやし,たくみ
+こばやし,とよき
+こばやし,よしあき
+こばやし,よしはる
+こばやし,ゆかり
+こばやし,ゆきこ
+おだ,まさひこ
+こぼり,としお
+こだいら,けいすけ
+こだま,みちよ
+かわぐち,まなぶ
+こだて,ちひろ
+こが,なおと
+こが,もとのり
+こがねまる,ひろゆき
+こはら,やすてる
+こだ,ともあき
+この,じゅんじ
+こざい,なおき
+こいけ,こういち
+こいずみ,ひろみ
+こじま,けんじ
+こじま,きよたか
+こまつ,まゆみ
+こもり,だいすけ
+こんど,たかひろ
+こんど,まさひこ
+こんた,ひでみ
+こたか,のぶひろ
+こたけ,せいじ
+こやま,あつし
+くぼ,みつる
+くぼき,のりゆき
+くぼた,あきら
+くが,まさみ
+くまがい,ともなり
+くにもり,けんいち
+くらもと,まなぶ
+くらさわ,こういち
+くらしな,あきお
+くらた,まさお
+くりもと,やすろ
+くりた,けん
+くろだ,たかし
+くろだ,よしたか
+くろかわ,とものり
+くろき,いさむ
+くろさき,けんいち
+くろさわ,みつのり
+くりゅ,まさき
+くわた,とろく
+くずみ,ひろし
+まぶち,いくこ
+まえだ,よひち
+まえだ,たつじ
+まえがわ,やすなり
+まえかわ,よひち
+まきお,じゅん
+まめはら,あつし
+まさだ,かつひと
+ますだ,さとし
+ますだ,たけお
+ますだ,よしまさ
+ますだ,としかず
+ますやま,ひであき
+まつだ,しんご
+まつだ,つよし
+まつえだ,りょひち
+まつい,ひろゆき
+まつもと,けんじ
+まつもと,まさひこ
+まつもと,たかひろ
+まつもと,たくみ
+まつもと,やすひろ
+まつもと,けいし
+まつなが,あきひこ
+まつの,やすとし
+まつの,せいいち
+まつおか,あきひろ
+まゆみ,ひろゆき
+めかた,よすけ
+めら,ひろし
+みたに,たかし
+みたに,ともこ
+みと,りつこ
+みやがみ,むつみ
+いおき,なおみ
+みやもと,つよし
+みやむら,たかまさ
+みやの,けんたろう
+みやうち,けいじ
+みやざき,せいいち
+もちずき,ゆひち
+ももい,しゅひち
+もり,ようたろう
+もり,まさゆき
+もりもと,やすひこ
+もりもと,しんいち
+もりおか,みちこ
+もりさわ,あきら
+もりた,ひろき
+もりた,こうじ
+もりた,たろう
+もりた,みちひと
+もりやま,ゆみこ
+もりやま,しげひさ
+もてぎ,まさあき
+むらかみ,あきひろ
+あさの,ともゆき
+あゆかわ,たかあき
+むらお,まさはる
+むらおか,まさかつ
+むらた,ゆき
+むしあけ,ひでまさ
+むた,ゆか
+なべい,くみこ
+ながい,よひち
+ながい,むつこ
+ながみね,けんじ
+ながさわ,ともひろ
+ながた,かずよし
+ながやま,ひろのぶ
+なぐら,あきひこ
+ないとう,しんや
+なかがわ,たかし
+なかがわ,たつひこ
+なかがわ,とおる
+なかがわ,まさあき
+なかはら,けんご
+なかい,さとし
+なかい,だいすけ
+なかじま,しげる
+なかじま,ともかず
+なかじま,えみこ
+さわだ,ひさし
+なかむら,まさひろ
+ばんば,こういち
+なかむら,まさこ
+なかむら,さゆり
+なかむら,ただし
+なかむら,てつお
+なかむら,てつや
+なかむら,ゆみこ
+なかむら,ひろし
+なかの,りゅじ
+なかの,ゆみこ
+なかお,やすし
+なかしま,まさひろ
+なかた,たかこ
+なかた,しげる
+なかやま,たかひろ
+なかやま,とおる
+なかやま,ゆみこ
+なかやま,かつや
+なかざわ,みえこ
+なかざわ,あきのぶ
+ながおか,てつや
+ななしゃ,ひでひと
+なりた,こういち
+なりた,まさのり
+なす,かずお
+なすた,まり
+にし,たけし
+にしだ,あきひろ
+にしむら,ふみこ
+まさだ,ひろかず
+にしむら,のぶゆき
+にしむら,やすひろ
+にしお,こういち
+にしやま,あきこ
+にった,なおやす
+のがみ,ひろふみ
+のなか,あきひろ
+のせ,けいこ
+のたべ,かつや
+のと,けいすけ
+のて,ゆたか
+ぬくい,よしひろ
+おち,つよし
+おちあい,まこと
+おだ,たけし
+おがさわら,ひろし
+おがわ,かねのぶ
+おがわ,のぶゆき
+おがわ,さちお
+おがわ,たけひこ
+おがわ,ともこ
+おがわ,まさゆき
+おぎの,よしただ
+おば,みなこ
+たきみや,かおり
+おはし,やすひろ
+おはし,たかひろ
+おひ,ひでお
+おかわ,しんご
+おもり,じゅにち
+おむら,ひろき
+おなかはら,まさひろ
+おにし,あきひこ
+おの,としゆき
+おほか,よしかず
+おしま,ゆうじ
+おしま,よじ
+いけまつ,こうじ
+おた,まさひこ
+おた,まさや
+おた,なおたけ
+おた,ともみ
+ふくだ,まこと
+おぜき,まさひで
+おいだ,ゆきお
+おいじ,ただゆき
+おかだ,たくみん
+すぎもと,ちさと
+おかざき,えみ
+おかざき,じゅんか
+おかざわ,まゆ
+おくだ,たけつぐ
+おくだ,よしのり
+おくだ,あきこ
+おくむら,たかし
+おくむら,のぶ
+おくの,けんいち
+おくやま,たかこ
+おの,たけし
+おぬき,たかし
+おはし,さちこ
+とひゃ,たみこ
+おとぐろ,みえ
+ぇえ,けいいち
+さいご,ひとし
+さいとう,くにひろ
+さいとう,しんじ
+さいとう,たかゆき
+さいとう,やすひろ
+さいとう,やすし
+さいとう,ひとし
+さいとう,てつや
+さかえだに,ちゅんぁん
+ちぇん,まさき
+さかい,しげる
+さかい,ひでひと
+さかた,こうたろう
+さかた,あきひろ
+さくま,なおみ
+さくらばやし,ひでのり
+さくらい,としお
+さくた,まさひろ
+ささき,のぶゆき
+ささき,たかあき
+ささき,たけひろ
+ささき,よしたろう
+ささめ,あきひさ
+さとう,ふみひこ
+さとう,ひろき
+さとう,ひろし
+さとう,じゅん
+さとう,かんじ
+さとう,みか
+さとう,もとゆき
+さとう,のぶやす
+さとう,とくじろ
+さとう,つよし
+さとう,かずひこ
+さとう,たかひろ
+さとう,あつし
+さわだ,まつお
+さわはし,よしあき
+さわの,まさかず
+せぐち,あきら
+せき,さちこ
+せきぐち,よしゆき
+せきぐち,よひち
+しば,かずのり
+しばた,まさひこ
+しばた,よしひろ
+しぶや,よしろ
+しまだ,はじめ
+しみず,ひろみ
+いしかわ,ひろし
+しみず,こうじ
+しみず,しょじ
+しみず,やえ
+しみず,くみこ
+ふじえだ,ひろやす
+しもやまだ,りえ
+しながわ,たかね
+しんや,たつゆき
+しおみ,かずひろ
+しおつ,しゅへい
+せきぐち,ともこ
+つのだ,よしひろ
+しらさか,さとし
+しろした,かおり
+したら,あやこ
+しょ,まさはる
+すがわら,たかし
+すがわら,しゅじ
+すぎもと,かつゆき
+すぎた,たかゆき
+すぎた,ともひろ
+すぎた,かつゆき
+すぎうら,けんじ
+すぎうら,けんたろう
+すぎやま,こういちろ
+いけぞえ,しんいち
+すぎやま,ともひで
+すか,みつのり
+すけがわ,しんじ
+すみのうえ,かつひこ
+すみよし,とおる
+すみよし,たかし
+すなみ,あつお
+すずき,ひろゆき
+すずき,ひさし
+すずき,じゆにち
+すずき,みほ
+すずき,さとし
+すずき,しょひち
+すずき,ともかず
+すずき,まさより
+しょじ,かつひこ
+しょじょ,さとこ
+たばた,とよひさ
+ただ,みずほ
+たどころ,まさとし
+たがみ,ひろあき
+たぐち,ともゆき
+たぐち,のぶよし
+たい,ひでき
+たいら,たねかず
+たいさ,としみつ
+たじま,ひろゆき
+たかだ,やちよ
+たかだ,まもる
+たかぎ,あきひろ
+たかはし,あきら
+たかはし,ひろあき
+たかはし,いっぺい
+たかはし,まさと
+たかはし,のぶあき
+たかはし,しず
+たかはし,しょたろう
+たかはし,そういちろう
+たかはし,としお
+たかはし,ひでゆき
+たかい,こうじ
+たかの,たかし
+たかしま,ひろあき
+たかやま,まさてる
+たけだ,あつし
+たけいち,みつひろ
+たけまさ,きよし
+たけむら,ただなお
+たけむら,えつろ
+たけなか,てつろ
+たけした,あつや
+たけうち,ひろし
+たけうち,とおる
+たけうち,なおき
+たきかわ,さとし
+たききた,ゆうじ
+たきざわ,としお
+たこ,ゆすけ
+たかの,なおき
+たまがわ,よしふみ
+たまき,しのぶ
+たむら,かんこ
+たなべ,なおや
+たなべ,ひでつぐ
+たなか,かずよし
+たなか,けいすけ
+たなか,けんいち
+たなか,しほ
+たなか,しゅんすけ
+たなか,なおと
+たに,しょぞ
+たにぐち,あつと
+たにしょ,ひとし
+たてやま,えいいちろう
+たつみ,あつし
+たうら,たかし
+たざわ,ひでと
+たずけ,よしき
+てらだ,もとゆき
+とま,ひろゆき
+とひゃま,おさむ
+とめおく,かずたか
+とみいえ,ひろのぶ
+ふたつぎ,ふみお
+ともとし,きょへい
+とねがわ,きょこ
+おくむら,みほ
+とししげ,よしひさ
+とよだ,ようこ
+とよなか,まさよし
+つばき,かずなり
+つちもと,のぶひろ
+つだ,しんご
+つだ,よしふみ
+つだ,ますみ
+つじい,たかとし
+つじむら,ともゆき
+つかはら,せいいち
+つのだ,けいこ
+つるぎ,かずひろ
+つるた,かずひろ
+つしま,あきお
+つつい,はやと
+つちだ,ひろし
+うちだ,けんじ
+うちだ,あきこ
+うちくら,のりひこ
+うちたに,ひろし
+うえだ,かずなり
+うえだ,まさや
+うえだ,てつや
+うえだ,ふみお
+うえむら,さとし
+うえの,かよ
+うえつき,としえ
+いけ,ともたか
+うめだ,のりこ
+うめむら,としろ
+うのき,しょじ
+うらした,はるひこ
+うらた,てるひこ
+うしお,きぬよ
+うたがわ,ひろゆき
+わだ,かつゆき
+わだ,さとる
+わだ,たくじ
+わだ,たけし
+わがつま,かつこ
+わかまつ,さきこ
+わきた,ちえ
+わこ,がく
+わりかた,あきのり
+わしず,ひろこ
+わたなべ,ひろし
+わたなべ,まき
+わたなべ,まさる
+わたなべ,みほ
+わたなべ,なつこ
+おむら,のぶひこ
+わたなべ,ともこ
+わたなべ,ともゆき
+わたなべ,よしお
+わたなべ,てつや
+やぎ,ともこ
+やぎ,あきひと
+やまだ,ひろたつ
+やまだ,まさひろ
+やまだ,しょひち
+やまだ,ゆうじ
+やまだ,ひろあき
+やまふく,ひろかず
+やまぐち,なおゆき
+やまぐち,しょ
+やまぐち,しゅんじ
+やまぐち,よしゆき
+やまじ,としお
+やまかわ,がく
+やまもと,ひろふみ
+やまもと,ひろひで
+やまもと,こせい
+やまもと,なおこ
+やまもと,りゅひち
+やまもと,てつろ
+やまもと,ともみ
+やまもと,ゆうこ
+やまもと,たかと
+やまな,のりとし
+やまさき,ひでふみ
+やました,しげお
+やました,たけひろ
+やまざき,ひでお
+やなぎ,まりこ
+やの,よじ
+やしろ,ようこ
+やすい,ひろかず
+やすむろ,とおる
+やすうじ,こうじ
+よこえ,たかのり
+よこい,けんいち
+よこみぞ,みつぞ
+よこやま,ゆきこ
+よねざわ,ひろやす
+よしだ,こうじ
+よしだ,まさき
+よしだ,ゆうじ
+よしだ,ゆたか
+よしだ,せいいちろう
+よしい,かつみ
+よしむら,のりとし
+よしやま,とおる
+よしざわ,ひろし
+ふじしま,りょ
+ゆあさ,けんたろう
+ゆき,たけし
+ゆき,ふとし
+ゆい,たかし
+あだち,よしゆき
+ばん,ひでのり
+ふるい,まや
+はせがわ,きよしげ
+ひらかわ,まさひこ
+いとう,かずひこ
+いわさき,けんや
+かとう,のぶひろ
+かわはら,かつや
+まえはら,かずあき
+まつたに,ともみ
+もりいち,しげと
+にしうち,てるかず
+ふじまき,えいじ
+おはら,さちこ
+さなだ,けんたろう
+そね,けい
+とのむら,せつこ
+しみず,あきよ
+みしま,だいすけ
+ふじた,なおたけ
+ふじた,たかし
+ふじた,よしのり
+ふじわら,はじめ
+ふじゅ,まなぶ
+ふかだ,としひこ
+ふくだ,りょじ
+ふくひさ,けんじ
+ふくざと,よしみつ
+ふくざわ,おさむ
+ふるさわ,しげお
+はがわ,えいじろ
+はぎ,のぶゆき
+はらだ,たいぞ
+はらだ,たかし
+はらだ,ひであき
+はらまき,つとむ
+はせがわ,よしゆき
+はせがわ,けい
+はしお,まりこ
+はすみ,たろう
+はすみ,ひでき
+はっとり,よ
+いしかわ,こうじろ
+はやし,しんいち
+ひらの,たくや
+ひらの,ゆたか
+ひらの,なおたか
+ひろべ,あや
+しのだ,たかし
+ひさだ,きはる
+ほじょ,たかし
+ほんご,ひろたか
+ほし,みつる
+ほしの,のぶひろ
+ほそかわ,まき
+ほその,なおこ
+かとう,りえ
+いぎ,ひであき
+いけだ,ゆか
+いくろ,ひろし
+いまい,けんいちろ
+いなだ,よりこ
+いのぐち,ぶんぺい
+いしぐろ,たかこ
+いしかわ,たくや
+いしかわ,かずあき
+いしざき,としあき
+いしぜき,ひでき
+いとう,けんじ
+いとう,たかゆき
+いとう,たけし
+いとう,てるひこ
+いまがわ,みちこ
+いざわ,まさき
+いずみ,ひろかず
+いずみだて,ゆみ
+かぶらぎ,よしろ
+かみやま,ようこ
+かなやま,としゆき
+かなざわ,のりひろ
+かんばら,かずよし
+かんだ,こへい
+かんだ,たかゆき
+かねこ,つぐかず
+かしむら,ひろき
+かたぎり,けんじ
+かとう,ゆかり
+かとう,よしと
+かわだ,てつや
+かわすみ,まさよし
+きど,なおき
+きくち,よしみ
+きもと,けい
+きむら,こうじ
+きんど,しょじ
+きたむら,のりとし
+きたの,かおり
+きたわたせ,とおる
+きった,こうじ
+きやま,じろ
+きよた,かつよし
+こばやし,ゆうこ
+こばやし,みすまる
+こが,なりとも
+こはら,ひろし
+こじな,しんすけ
+この,ひろのり
+こずか,のぶひさ
+こいで,はるみ
+こまつ,ようこ
+こみなと,しゅにち
+こもり,のぶひろ
+こんど,たくや
+こにし,けんた
+くぼやま,みちはる
+くまがい,みほ
+くまた,さだお
+くりはら,すすむ
+くりはら,やすこ
+くりた,せいじ
+くさの,ひろゆき
+くしだ,じゅんじ
+まえだ,ようこ
+まき,あつや
+まきた,たかゆき
+まるやま,けん
+ますだ,けいご
+まつばら,まさき
+まつばら,しんじ
+まつい,りゅすけ
+まつもと,しゅうじ
+まつむら,さとこ
+まつお,ひろひこ
+みかみ,のりこ
+みき,ただあき
+みのうら,りょじ
+みしま,たかこ
+みつなが,たけし
+みうら,けいこ
+みわ,さとし
+みやお,ひろふみ
+みやた,あきひこ
+みずたに,ゆき
+みずたに,けいすけ
+もちずき,しんじ
+もちずき,つねお
+もちずき,だいち
+もぎ,ちから
+もり,ひでとし
+もり,けいこ
+もり,まさゆき
+もり,しんたろう
+もり,かずひろ
+もりやま,みつお
+もろおか,たかあき
+もとば,せいじ
+むねと,けんいち
+むらい,よしゆき
+むらおか,まさのり
+むろい,たかのぶ
+ながふじ,やすはる
+ながい,かなう
+ないとう,かずひこ
+ないとう,ひでのぶ
+なかがわ,みつる
+なかはら,くみこ
+なかじま,のぶゆき
+なかじま,ひろし
+なかむら,さとる
+なかむら,ただひこ
+なかむら,ただゆき
+なかむら,ともひさ
+なかむら,としき
+なかむら,としお
+なかむら,ゆき
+やまだ,だいさく
+なかお,かつまさ
+なかつかさ,よしこ
+なかやま,けん
+なむら,ひでひろ
+なすの,きみひと
+にいぜき,あきら
+にしかわ,ゆきこ
+にしきおり,たろう
+にしざわ,みのる
+のあき,みやこ
+のだ,ゆたか
+のだ,まさひこ
+のぐち,たけし
+のむら,ひろし
+おちあい,あや
+もり,あきら
+おがさわら,あきら
+おがさわら,あつし
+おがわ,ひさと
+おがわ,たかし
+おがわ,えいじ
+おぐら,きよし
+おぐら,まり
+おひし,むねゆき
+おかわ,なおき
+おかわ,としはる
+おかぜ,こぞ
+おき,よしあき
+おむら,かつのり
+おすみ,ようこ
+おた,けんたろう
+おたけ,ゆうこ
+おたに,ひさし
+おひゃま,ひでき
+おぜき,こすけ
+おかもと,まりこ
+おかむら,みつひさ
+おかむら,たつし
+おくむら,りょこ
+おんだ,たかひろ
+おのでら,やすひさ
+おやべ,ふみのり
+さが,まさき
+さいとう,ひろや
+さかい,としあき
+いぎ,じゅんこ
+さかもと,なおき
+さかもと,てつや
+さかつぎ,あつし
+さかうえ,まさひろ
+さくま,ふみひこ
+さくら,てつじ
+さなだ,けん
+ささき,けんじ
+ささき,ひろし
+さとう,じゅん
+さとう,こしん
+さとう,まもる
+さとう,まなみ
+さとう,のりひこ
+さとう,のりゆき
+さとう,たかのり
+さとう,としあき
+さとう,ゆうこ
+さとう,さなえ
+せいけ,あきのり
+せき,ひさね
+せき,よしひろ
+せき,かずお
+せきぐち,けんじ
+せた,まりこ
+しんがい,えいき
+しばた,よしひろ
+しばた,たけお
+しぶき,なおや
+しげとみ,かつゆき
+しが,たかひろ
+しいば,としあき
+しまだ,しゅういち
+しまかわ,ひでひさ
+しみず,かつひろ
+しみず,きょこ
+しみず,やすひと
+しみず,かずひで
+しもむら,さとみ
+しもむら,まさのり
+しおじり,よういち
+しおざわ,てつや
+しらい,てつ
+しらかわ,たけし
+そまん,としお
+そひゃ,あきこ
+そのだ,よしこ
+すだ,ゆきのり
+すがの,じろ
+すがぬま,かずみつ
+すがわ,ひろし
+すぎうら,みか
+すぎやま,いちろう
+すずき,しげる
+すずき,すすむ
+すずき,たかつな
+すずき,おさむ
+しょじ,たかし
+たぐち,たかし
+たいら,あきら
+たじま,ひろし
+たかだ,あやこ
+おかやま,ゆうこ
+たかぎし,ふみえ
+たかはし,じん
+たかはし,まさと
+たかはし,まゆみ
+たかはし,ともはる
+たかはし,けんいち
+たかき,さとし
+たかおか,せいいち
+たかおか,きょすけ
+いまいずみ,ともひろ
+たかさわ,けん
+たかす,こうじ
+たけい,あつし
+たけなか,しんいちろう
+たけざき,てつや
+たまいし,かつや
+たまき,ただと
+たなか,りえ
+たにぐち,たかのり
+たうち,あさこ
+てらみつ,みかこ
+とだ,しんいちろう
+とみなが,やすし
+とみた,まさよし
+とんぐ,とおる
+つねかわ,きょこ
+つつい,よいち
+うちだ,たくや
+うちはし,ひろゆき
+うえだ,よしお
+いとう,たかし
+うえだ,つよし
+うえはら,せつこ
+ふじた,たけし
+うめだ,よしこ
+うめはら,ひであき
+うらべ,しげる
+わたべ,あきら
+やがさき,なおき
+やぎもと,ひろなお
+やじま,だいすけ
+やまだ,まや
+やまだ,しんいちろう
+やまだ,あきよ
+やまぐち,ひでとし
+やまぐち,ひろふみ
+やまもと,かつよし
+やまもと,たけし
+やまもと,たくお
+やまもと,まさひこ
+やまね,よひち
+やまさき,ひろし
+やました,ひであき
+やまざき,しほ
+やまさき,てつや
+やながわ,やよい
+やなぎだ,ひさこ
+おの,やすし
+やなぎさわ,すみか
+やざき,ひろし
+やざわ,かつみ
+よこやま,みちこ
+よこやま,たかし
+よも,みかこ
+よしだ,さとこ
+よしだ,ともこ
+よしだ,やすひろ
+よしはら,やすひろ
+よしはら,なおき
+よしもり,こうじ
+ぜっつ,かずひろ
+あべ,はるのり
+あだち,かずき
+あいかわ,まさゆき
+あかえ,としや
+あんどう,たけし
+あさみ,やすお
+いまなか,ひでのぶ
+べっぷ,やすし
+べっぷ,なおき
+ちかはら,せいじ
+ふじい,ひろこ
+ふじさき,たけし
+ふくしま,きょじ
+くろだ,ひでお
+もり,ゆうじ
+なかむら,はるひこ
+わたなべ,あゆみ
+くろだ,まさひで
+みやうち,たかし
+いとう,ひでよ
+いいだ,よしただ
+かわの,こうじ
+あいうら,ひろふみ
+のざき,みちこ
+びたに,まき
+たにあい,みさ
+あおき,はるよ
+おき,ゆすけ
+あおき,ひろあき
+あおやぎ,おさむ
+あかにし,みつとし
+あさお,たかゆき
+あさくら,あずさ
+あしざわ,としみ
+あたく,まさひで
+あだち,しゅひょ
+いとう,たかえ
+しまもと,あさこ
+さいとう,じゅんこ
+しのはら,きくこ
+おかの,まゆみ
+おかもと,まい
+ひらかわ,としお
+すがぬま,てるあき
+あなざわ,あやみ
+あらい,だいすけ
+あらい,じゅにち
+あらかわ,きさく
+あらかね,かずゆき
+あらき,けんた
+あんどう,なおひろ
+いうち,まさひこ
+いけだ,かえ
+いけや,かずき
+いしかわ,ひろし
+いしかわ,ゆうこ
+いしかわ,ゆり
+いしかわ,あとむ
+いしがき,まさる
+いしぐろ,かつみ
+いしはら,ひでこ
+いそむら,ひろし
+いたがき,よごろ
+いいだ,ともみち
+いちかわ,みのる
+いちかわ,としかず
+いで,きんや
+いとう,ゆみこ
+いぬい,あきこ
+いのうえ,しげのり
+いまにし,ひろひさ
+いまはやし,まこと
+いわさき,やすひろ
+いわさき,まさき
+いわもと,ひろし
+うえの,まさみ
+うえの,ひろし
+うちいけ,こういち
+うちやま,ひろし
+うめだ,かおる
+うめむら,まさき
+うめもと,くみこ
+うるしばら,きよみ
+えぐま,しろ
+えら,そよ
+おうさか,よしとし
+おかわ,いたる
+おさわ,ひろふみ
+おしま,まきと
+おしま,のぶひろ
+おすが,むねたか
+おたに,しんいち
+おつ,まさつぐ
+おつか,まゆみ
+おね,けいいち
+おの,えいじ
+おはし,かずのり
+おはし,よしあき
+おばやし,よしたか
+おひょし,しゅじ
+おかもと,さよ
+おがさわら,ちほこ
+おがわ,よしひこ
+おくたに,えり
+おくむら,なおや
+おぐら,まさたか
+いいかわ,まさみつ
+おぐら,まさひこ
+おざわ,よしたか
+おざわ,まなぶ
+おの,たつひこ
+かきもと,ひでき
+かきもと,まさふみ
+かげやま,ただひさ
+いしかわ,まさゆき
+かそり,あきら
+かつみ,けんいち
+かとう,けんご
+かとう,しんじ
+かとう,たかゆき
+かとう,ただゆき
+かとう,よしこ
+けずか,ひでのり
+かどわき,ご
+かねこ,ゆうこ
+かの,ひろこ
+かみやま,けんいちろ
+かわしま,さとし
+かわせ,たかのり
+かわの,ひでひこ
+かわもと,やすのり
+かわもと,れいこ
+かわせ,ひろし
+かんだ,ともみ
+きくち,ひろし
+きくち,やすひと
+きくち,なおき
+きたあらし,なおこ
+きたおか,のりこ
+きたじま,しげのり
+きたむら,だいすけ
+きたむら,けいじ
+きてら,あきら
+きのした,みつしろ
+きむら,あきひろ
+きりう,のりこ
+くさかべ,ひろかず
+くぼた,ひろゆき
+くまがい,さとる
+くまの,かずき
+くりはら,まさたか
+くるしま,しん
+なかがわ,なおき
+こいで,ひでとし
+この,ひさゆき
+こもと,あきこ
+こが,のぶお
+こじま,まいこ
+こにし,みゆき
+こばやし,あきひろ
+こまつ,たけみ
+こみや,あつし
+こんど,さとし
+こんど,じゅんこ
+ごと,たかひろ
+さいとう,たけし
+さいとう,まえこ
+さいとう,こすけ
+さかもと,けんじろ
+さくま,さり
+しみず,まさと
+さだちか,あきよし
+さと,ちか
+さとう,ひでき
+さとう,まさし
+さとう,ゆうこ
+さとう,くにはる
+さわだ,たいじ
+いそわ,かよこ
+しもじょ,せいう
+しゅ,けいいち
+しおかわ,しんや
+しおざわ,さとし
+しかうち,つとむ
+しずり,だいすけ
+しの,たつや
+しのざき,こうじ
+しのだ,ひでき
+しのだ,たけお
+しばざき,としかず
+しばた,なおき
+しまむら,けいじゅ
+しみず,さよこ
+しみず,じゅん
+しみず,ひとみ
+しみず,みか
+たきたに,かつゆき
+しらの,じゅんじ
+すえひろ,まさひこ
+すがい,たかあき
+すがよし,まさや
+すがわら,あやの
+すぎうら,まさひこ
+すぎしま,みつる
+すぎもと,たけし
+すずかわ,てつじ
+すだ,じゅんじろ
+すみかわ,ますみ
+すみの,ゆきこ
+せきぐち,あきひと
+そえじま,さおり
+たおか,のぼる
+たかき,みまこ
+たかしま,ゆうじ
+たかせ,さとし
+たかはし,しんいちろう
+たかはし,ゆひち
+たかはし,たかゆき
+たきたに,けん
+たけうち,みきお
+たけうち,けんじ
+たけだ,しげふみ
+たけだ,のりあき
+たけだ,しゅんすけ
+たけむら,ひさし
+たご,よしえ
+たきざわ,あきよし
+たなか,かつあき
+たなか,こうじ
+たなか,しげみ
+いわの,やすなり
+たなか,ただし
+たにえ,きょこ
+たにぐち,しんいち
+たにぐち,きよたか
+たにまつ,かつや
+たばた,たつや
+たまき,えいいち
+いせもと,なな
+たみや,ひろぶみ
+ちゃもと,けんわ
+ちん,ただゆき
+つかもと,けいいち
+つちはし,いくひこ
+てらさわ,なおひさ
+とじょ,まさこ
+ふくしま,ちかこ
+とば,ようこ
+とみよし,りょすけ
+とむろ,けんじ
+とよしま,かずしげ
+とりやま,ひろし
+ないとう,さだよし
+いで,かずえ
+はた,じょじ
+なかがき,ひろし
+なかがわ,みわこ
+なかざわ,たつや
+なかで,じょ
+なかはら,あき
+たけうち,ふさし
+なかむら,よひちろ
+なかむら,ようこ
+なす,むねひろ
+にいむら,たつや
+にしおか,みちこ
+にしかわ,なおし
+にしざわ,きょこ
+にしと,ひとき
+にしの,なつひこ
+にしはら,じゅにち
+にしむら,なおゆき
+ねもと,ひろゆき
+のぐち,みちかず
+のぐち,ふさお
+のじり,みき
+のじり,たかこ
+のむら,よしこ
+はった,しょこ
+はしば,あつし
+はしもと,かつひさ
+はしもと,さとし
+いのうえ,たけし
+はしもと,ひろし
+はせがわ,としひろ
+はた,ひであき
+はた,あきら
+はたの,しげる
+はやし,やすこ
+はやし,こうじ
+はらだ,なおき
+はらだ,くにもり
+ばば,さちよ
+ばば,えみ
+ひぐち,まさや
+ひぐち,よしなお
+ひさき,たかひろ
+ひじり,かずひこ
+ひらやま,あきこ
+ふくだ,ちかこ
+ふじい,ゆか
+すがい,いちろう
+ふじた,きよし
+ふじた,たかこ
+ふじた,けんいち
+ふじたに,かずき
+ふじなみ,よしかつ
+ふじの,まいこ
+ののむら,ひろゆき
+ふせ,くみこ
+すぎもと,ともこ
+ほそかわ,けんいち
+ほりうち,ひろふみ
+ほりかわ,あすか
+まきの,のぶひこ
+まきの,きょこ
+ましこ,ごじ
+ますだ,えり
+ますぶち,たかゆき
+ますぶち,まゆみ
+まつい,ひろふみ
+まつざわ,さとみ
+とみなが,かずや
+まつなが,ゆきこ
+まつなが,のぶこ
+すずき,さとし
+まつむら,しげゆき
+まつもと,たつゆき
+まつもと,かつじ
+まつやま,たてる
+まつやま,よひちろ
+まつやま,たつお
+まつよし,なおみ
+まの,ひろあき
+まるおか,いくこ
+みかみ,のりひこ
+みき,としひこ
+みぞぐち,かずや
+みた,たかし
+みね,あきひろ
+みねお,まきこ
+さとう,まさと
+いくた,たかし
+みやざき,よしこ
+たかぎわ,ゆき
+みよし,やすじ
+むかい,けいいち
+むらかみ,ひでふみ
+いしだ,ともひさ
+むらかみ,のりこ
+むらかみ,こうじ
+むらやま,てつや
+むらやま,あきこ
+むろい,せいじ
+もたい,としやす
+もとき,ようこ
+もとむら,ひろき
+もり,まさみ
+かせ,みのる
+もりした,ちあき
+もりた,さとる
+もろとみ,かつのり
+もろはし,あや
+かわもと,ひでき
+やぐち,しげる
+やじま,ようこ
+やすかわ,みつたか
+やすだ,まさあき
+やつずか,つかさ
+やなぎさわ,さとし
+やまぐち,かずたか
+やまさき,こうじ
+やまざき,まこと
+やまざき,まさたか
+やまざき,かずまさ
+やまだ,かずや
+やまだ,こうじ
+やまだ,かつひろ
+やまなか,あきよし
+くりはら,かずひろ
+やまもと,なおき
+やまもと,ひでのぶ
+やまもと,ゆきこ
+まつお,ひろのり
+よぎ,てるひこ
+よこやま,なおこ
+よこやま,ひろし
+よしかわ,まさひと
+よしかわ,まりこ
+よしだ,ゆき
+わくい,きんや
+わたなべ,たかや
+わたなべ,ひろゆき
+わたなべ,よしこ
+わたなべ,せいじろ
+はやし,けんたろう
+やまだ,なおき
+わかばやし,たかのり
+いわむら,しゅひち
+わたなべ,まさき
+くわしま,まさこ
+おばた,しんたろう
+あなざわ,やすし
+やぎ,ますみ
+あかお,ちとせ
+しみず,ひでき
+さかもと,ようこ
+あおき,なおひで
+あずま,よしこ
+いいだ,こうじ
+いけうち,てつや
+いしかわ,けんたろう
+いそがい,しほ
+いとう,よしひと
+いば,まなぶ
+いわもと,たかし
+うえさか,のぶや
+うえの,さとし
+うえひら,のりまさ
+うちやま,のぼる
+うめない,すぐる
+えむら,さとみ
+おきた,ひかる
+おくぼ,こすけ
+おたに,ともかず
+おつ,なつこ
+おつか,ひでのぶ
+おかしろ,しげあき
+おだ,こういち
+おの,えな
+かとう,めばえ
+かねひさ,てつお
+かみや,まこと
+かわい,ただひろ
+かわおか,あずさ
+きたの,しんじ
+きぶし,たけひろ
+きむら,まもる
+きむら,けんご
+くさか,けんじ
+くば,すすむ
+くぼた,たかひろ
+くろいわ,じゅにち
+くわばら,ひろし
+こいけ,あや
+こいたばし,ひろこ
+こだ,よしみ
+こだ,しろ
+こしむら,あつし
+こやなぎ,ひろみ
+はとり,よしゆき
+さかうえ,なおこ
+あべ,おさむ
+さとう,たくよし
+さとう,ひでき
+さとう,じゅにち
+しまだ,つへ
+いまい,まさたか
+すがぬま,まさこ
+せき,さとみ
+せの,たかし
+あべ,しろ
+たかすが,しんじ
+たかすぎ,えいじ
+たかはし,すみお
+たかはし,つかさ
+たかはし,ひでお
+たかはし,まさたけ
+たかはし,あつし
+たきもと,ひさこ
+たくぼ,ゆうこ
+たけうち,さわ
+たけなか,こういち
+たなか,やすみつ
+たなか,まゆみ
+たばた,よしお
+たみや,りえ
+たむら,かつあき
+ちゅま,ちよ
+ほんご,あきひろ
+なかお,たかやす
+なかがわ,まさはる
+なかぞの,まゆみ
+なかの,のぶこ
+にった,ともみ
+にわ,けんたろう
+のじ,あきひと
+はざの,こうじ
+はしもと,ひさみ
+はしもと,ゆうた
+はやし,よしゆき
+はやし,ともこ
+はらぐち,ゆきひこ
+はるぐち,もといち
+ひらで,ちずる
+ひらの,かつゆき
+ひらやま,たけし
+ふかざわ,れいこ
+ふくます,ひろたか
+ふくもり,ゆうこ
+ふじかわ,のぶあき
+ほしの,こういち
+ほその,ひでのり
+まつおか,みつひろ
+まつむら,はな
+みずかみ,りょひち
+みつい,ひろあき
+みのかみ,たかし
+みやもと,とおる
+むらかみ,ゆうこ
+むらかみ,ちおり
+やた,とこ
+やなぎた,たかし
+やまぐち,としお
+やました,いさむ
+やまもと,まさたか
+よしたけ,ゆき
+よしむら,ひろみ
+ひぐち,かよ
+はしもと,まさる
+わたなべ,しげる
+あきば,のりこ
+あきもと,あきひと
+あまや,よしなり
+あんどう,なみこ
+あんざわ,てつろ
+あさはた,たいすけ
+ばば,としゆき
+べっしょ,たつし
+ちかもと,きょひょ
+ちょ,けいこ
+ふじひら,なおこ
+ふじい,みのる
+ふじたに,こうじ
+ふかだ,みちお
+ふるだて,ゆひちろ
+ふるやま,ひでのり
+ごだ,えり
+こいけ,たけし
+はかまだ,あつし
+はせがわ,ゆき
+はしもと,たけひこ
+はった,みつよ
+はっとり,まさる
+はやかわ,てつろ
+はやかわ,のぶひろ
+ひぬま,かずひと
+ひろき,みちひと
+ほりのうち,てるひと
+ほその,さおり
+ふじおか,だいすけ
+ふるた,みわこ
+ふさの,けいこ
+ふしみ,よしかつ
+いたど,まさあき
+いだ,なおき
+いはら,ひろゆき
+いいだ,きよのぶ
+いなやま,よしゆき
+いの,こぞ
+いのうえ,たかお
+いしだ,こういち
+いしもと,けんいち
+いしわ,たかひろ
+いしわたり,ひろき
+いたくら,なるつぐ
+いとう,たくや
+いとう,ともひで
+いわい,ゆうじ
+いざわ,あつこ
+じぶ,ひでき
+かばやま,なるき
+かい,けん
+かきぬま,おさむ
+かきざき,ひとし
+かくだ,まさひろ
+かながわ,けい
+かんべ,たかひろ
+かんだ,ひろかず
+かさだ,じゅにち
+かわい,めぐみ
+ささき,よしつぐ
+かわせ,やすよし
+きもと,みつる
+きたはら,ひろかつ
+きたむら,なほこ
+こばやし,たかひろ
+こぶけ,しゅひち
+こいずみ,ななこ
+こみやま,
+こんのかずひろ,すぐる
+こしかわ,まさき
+この,ゆうこ
+くぼ,じゅん
+くぼかわ,まさき
+くどう,しゅすけ
+くりはら,しん
+くろぎ,たけお
+まちだ,やすひと
+まじま,みちたか
+いしず,ともこ
+まかべ,いくえ
+まるやま,さほ
+ますだ,みきね
+まつがさき,のぶお
+まつい,よしお
+まつい,ひろえ
+まつもと,ゆうこ
+まわたり,かなこ
+みちもと,まりこ
+みき,やすひと
+みつま,たかゆき
+みうら,こういち
+みわ,まさのぶ
+みやもと,なつき
+みやもと,ともか
+みやもと,かついち
+みやた,さえこ
+むらかみ,はるみ
+たはら,やすこ
+みずたに,のりゆき
+もり,ひろよ
+もりぐち,ひであき
+もりかわ,かよ
+もりもと,あきら
+もりた,たけし
+むらかみ,さおり
+あでがわ,けんじ
+ながさか,かんじ
+ながた,としひろ
+ながた,すみこ
+いざわ,たかのり
+なかみね,けいご
+なかむら,まこと
+なかむら,かつひさ
+いもと,やすのぶ
+なかむら,たけのぶ
+なかお,まさし
+なかやま,とおる
+なかざわ,のりこ
+なみき,ともか
+にいみ,ゆき
+にいぜき,まさひこ
+にしで,ひろし
+にわ,かずみ
+のべ,れいこ
+おた,たつひこ
+おがわ,あい
+おぐす,ひかる
+おもと,じゅり
+おしま,かつのぶ
+おた,かおり
+おひゃ,まもる
+いしかわ,ひろのり
+おかだ,たつや
+おく,こういちろ
+おくだ,たけし
+おしくぼ,ゆうじ
+おぜき,うしん
+らい,きよし
+いとう,はるよし
+さいき,あきひろ
+さいとう,かおり
+よしだ,ひであき
+さこ,ひでき
+ささじま,みさ
+ささき,しげあき
+さとう,まさよし
+いわもと,ゆすけ
+さとう,しょじ
+さわだ,たかのり
+せきかわ,けんいち
+せきね,ひみこ
+しばた,よ
+しげはら,たけし
+しまおか,ふみゆき
+しみず,まさき
+しもじょ,けんいち
+しもむら,かつひこ
+しむら,ゆうじ
+そめや,ともや
+すえよし,ひろし
+すずき,たつや
+すずき,みちやす
+たかだ,しげみつ
+たかはし,じゅんや
+たかせ,ゆきこ
+たけだ,つぐひで
+たけい,かずひこ
+たけもと,ちえこ
+たまい,ひでやす
+たむら,いずみ
+たむら,みつお
+いしかわ,なおき
+たなか,しんや
+たなか,あきひこ
+たにぐち,かずひろ
+たにぐち,まさあき
+たにぐち,たかし
+たにぐち,たかひさ
+いしだ,あきひこ
+たにした,けんいち
+てらにし,ひでゆき
+とひゃま,なおき
+とみた,いちろう
+とねがわ,じょ
+とよだ,まなぶ
+とよた,あきら
+つちや,ひさよし
+いしかわ,はじめ
+つむら,としひこ
+つのかわ,たかゆき
+うちだ,さとる
+うさみ,ひとし
+わじま,こういちろ
+わたなべ,まさひろ
+わたなべ,たけのり
+わたなべ,ひろたか
+やぎ,けんじ
+やぎ,けん
+やくわ,あつし
+やまだ,ふみの
+やまだ,つよし
+やまぐち,きょこ
+やまのくち,みわ
+やました,たく
+やました,のりこ
+やまざき,しゅじ
+やまざき,よしこ
+やながわ,なおき
+やすだ,としあき
+やすえ,よしみ
+いそがい,ひとし
+やたがい,たけし
+よしだ,りこ
+たかはし,まき
+おかだ,よひち
+あおき,やよい
+あきば,けいいち
+あべ,きょこ
+あまの,ひろふみ
+ありもと,ひろき
+あんどう,たかゆき
+いかわ,としゆき
+いしい,まさこ
+いしかわ,こういち
+いしずか,なおゆき
+いしばし,ひでゆき
+いしもと,ゆたか
+いで,たつろ
+いちのせ,とよあき
+いなだ,ともゆき
+いぬい,ただのぶ
+いのうえ,えり
+いやま,りょこ
+いわさき,まさき
+いわま,しゅひち
+いわまつ,まさる
+うえだ,あきこ
+うえの,あきこ
+うちだ,まさお
+うど,しゅじ
+うめはら,ゆき
+えぐち,たいへい
+えのき,のりひろ
+えもと,なおこ
+えもり,ゆみ
+なかがわ,しゅんすけ
+おた,りょすけ
+おがた,さとこ
+おがわ,さとし
+おがわ,まなぶ
+おくい,やすよ
+おくむら,まみこ
+おたに,こうじ
+おつとも,みずまさ
+おにざわ,かずこ
+おの,おさなお
+おばな,ひろこ
+おまがり,ひろき
+かきざわ,たかお
+かけひ,けんじ
+かさはら,たかし
+かじ,とみさぶ
+かじた,よしこ
+かじた,みつもと
+かじやま,せいや
+かとう,なおあき
+かなだ,ひでゆき
+かねこ,やすし
+かねこ,のぶたか
+いたの,れいこ
+ながつま,たくじ
+かの,もとこ
+かまえ,てるあき
+かわい,ゆきこ
+かわまた,しげき
+かんの,のりあき
+きうち,せいいちろうう
+きし,まさや
+きたがわ,てつひろ
+きのした,えりこ
+きょがく,まどか
+くぼ,おさむ
+くぼた,たかお
+くぼた,たかお
+くりはら,みのる
+くりやま,よしのぶ
+いしがき,けい
+くろい,のぶかつ
+こうさき,りょた
+こだ,けんすけ
+こばやし,しゅへい
+こばやし,せいじ
+こばやし,なおき
+こばやし,てつお
+いのうえ,ひろき
+さいほ,まいこ
+さかがわ,いずみ
+かわむら,ようこ
+ささおか,とものぶ
+ささき,なりとし
+さとう,まこと
+さとう,とものり
+さなだ,たくや
+さるやま,しんぺい
+しおつ,りえ
+しおのや,けいこ
+しおやま,としふさ
+しぎはら,いつろ
+ししど,こういち
+しのざき,あつし
+しばた,のぶあき
+しみず,てつや
+しょの,ゆすけ
+しらき,こうじ
+すぎおか,のぶあき
+すぎはら,なるひろ
+すずき,ようへい
+すずき,ゆたか
+すみやま,ようこ
+せった,のぼる
+いしわた,のりかず
+せんごく,まなぶ
+たかおか,おさむ
+たかざわ,けんいち
+たかはし,えいすけ
+たかむら,しのぶ
+たきと,のぼる
+たなか,ひろゆき
+たなか,くにお
+いとう,かずひと
+たなべ,みのる
+たにぐち,
+ちゃわんやたけし,しんいち
+てらさか,ひろゆき
+ところ,みつかず
+なかい,きよしげ
+なかお,ひさてる
+ながおか,しげゆき
+なかがわ,せいじ
+なかじま,まさき
+ながせ,だいじゅ
+なかの,みのる
+なかの,ゆみ
+ながの,たかしげ
+いけだ,あやこ
+なかむら,たかゆき
+なかやま,ひでき
+にお,かず
+にしお,あきこ
+にしかい,じゅんじ
+にしざか,けんじ
+にしだ,まなぶ
+にしだ,よしはる
+いいじま,ひろき
+にしはら,じゅにち
+にしむら,たかし
+ねろめ,しんじ
+のじま,みほ
+のなか,もとあき
+はしば,すひち
+はちや,たつや
+はっとり,せいた
+いいだ,じょじ
+はぶ,ゆうこ
+はやかわ,あきこ
+はやし,まりこ
+はやしま,かつとし
+はら,じゅにち
+ひがしだ,のりこ
+せきぐち,としみつ
+ひらい,よしこ
+ひろすえ,だいすけ
+ひろはた,たかし
+ふくしま,まさき
+ふじお,かずゆき
+ふじた,かずや
+ふじまき,ひろし
+ふじわら,さねひろ
+ふるいち,だいすけ
+ほさか,のりかず
+ほしの,たかひろ
+ほり,こ
+ほりもと,ひろゆき
+ほんま,まこと
+まえかわ,てつろ
+まえだ,なおこ
+まえだ,ひでし
+まえだ,たくみ
+まさい,まさる
+まつい,きょひち
+まつざわ,かおり
+まつだ,ひろゆき
+まつとも,たくや
+まつなが,みつお
+まつもと,てんぺい
+みずぐち,ゆういちろう
+みやもと,ゆきひこ
+みやもと,とおる
+むらかみ,ゆすけ
+むらかみ,たけし
+むらなか,こうじ
+もちずき,ゆきこ
+もとくら,ゆうじ
+もり,ゆきのぶ
+もりや,たけはる
+やすい,たかひと
+やすだ,みきお
+やすだ,たつや
+やた,くみ
+やたき,ひでのぶ
+やち,ちから
+やの,たかゆき
+やまいずみ,まさなお
+やまおか,けんじ
+やまぐち,よすけ
+やまぐち,ともたか
+やまざき,まゆみ
+やまざき,やすじ
+やました,かずひで
+やまもと,まさひろ
+よこぜき,さとし
+よしだ,たくや
+よしの,ともこ
+よしみ,くにかず
+よだ,ほまれ
+よだ,たいげん
+ら,みきこ
+ろじ,きよひと
+わだ,かずひろ
+わたなべ,のぶお
+わたなべ,ふみひこ
+わたなべ,ひろし
+わたべ,よしあき
+かの,まさき
+にった,やすひろ
+あおき,よしのり
+あおき,あきお
+あおやま,なな
+あおやま,まいこ
+あきば,けん
+あさだ,たいち
+あだち,なおと
+あだち,やすお
+あとべ,たかし
+あべ,たかひろ
+あべ,ひろあき
+あべ,ともき
+あまの,ふみあき
+あまの,まみ
+あらかわ,ゆきお
+ありた,ひでき
+ありとも,かずお
+あんざい,たかし
+いとう,たかとし
+あんどう,おさむ
+いがらし,しゅう
+いけだ,はなこ
+たかはし,まさあき
+いしばし,ぬい
+いしむら,けいいち
+いしもと,まりこ
+いちい,ともみ
+いちかわ,ゆうこ
+いちかわ,はると
+いちのせ,かつひこ
+いとう,のぶお
+いとう,まゆみ
+いとう,まき
+いなおか,じゅにちろ
+いなば,りょうすけ
+いぬずか,ようへい
+いのうえ,ひろし
+いのかわ,ひであき
+いまい,よじ
+いましゅく,りえこ
+いわい,みおこ
+いわしま,いずみ
+うえぞの,あつお
+うえだ,ただし
+うえはら,ゆみこ
+うえはら,まりこ
+かきた,けいこ
+うさみ,ひろと
+うちだ,まきこ
+うちだ,きよし
+うちぼり,あきひろ
+うめがい,まさる
+うめつ,りさ
+うめの,まさふみ
+うらかわ,ひろたけ
+うらべ,まゆみ
+えぐち,ひでおみ
+えずみ,しゅんすけ
+えのもと,たけし
+いまにし,りょ
+えのもと,ともひこ
+えんど,しゅいち
+おいかわ,めぐみ
+おいかわ,たかひろ
+おひ,たかゆき
+おひし,もとこ
+おた,けん
+おつか,ひじり
+おにし,ひろき
+おにし,あやこ
+おかだ,みさと
+おかだ,かずえ
+おかの,あきひこ
+おかべ,たけし
+おかべ,ゆき
+おかむら,しげひさ
+おかもと,ただし
+おかもと,いくよ
+おがわ,たろう
+おがわ,ひろゆき
+おくだ,ふみこ
+おくだ,よしき
+おざき,まさき
+おの,ゆきふみ
+おやま,よじ
+かいずか,まさはる
+かがみ,ふみかず
+かきた,しんすけ
+かく,かつあき
+かさい,みちえ
+かじい,やすお
+かじた,まさる
+かたえ,ゆき
+かたやま,よしひろ
+かつ,ひであき
+かとう,りょう
+かとう,みき
+かみじょ,みゆき
+かねこ,たえこ
+かまだ,とおる
+かみじょ,けん
+かみひさ,てつや
+かみもと,まみこ
+かみや,なおこ
+かみやま,たかし
+かわかみ,としふみ
+かわさき,えりか
+かわせ,かおる
+かわはた,こうじ
+かわはら,ゆきのり
+かわむら,あかね
+かわもと,なおや
+かわもと,ゆうじん
+かわもと,みつこ
+かんだ,とおる
+きくち,たく
+きたがわ,だいすけ
+きたなが,あつこ
+きたの,くにひと
+きたむら,かずひろ
+きたもと,よしてる
+きのえ,ゆうじ
+きぶせ,かおり
+きむら,かずお
+きむら,まき
+きもと,ますみ
+きもと,ひとし
+ぎょうぶ,ひろかず
+くに,たけちか
+くにまさ,じゅんこ
+くまさか,かずひろ
+くらしげ,けいすけ
+くりた,ひろし
+くりはら,みちお
+こいけ,たけし
+こいけだ,えり
+こいずみ,まさぶみ
+こいぬま,さかえ
+こつか,しんご
+こが,たつや
+こしもと,つとむ
+こだま,ひろし
+こだま,たかえ
+ごと,じゅにち
+こにし,ともき
+こばやし,ひでゆき
+こばやし,ゆり
+こばやし,ひろこ
+こばやし,みほ
+こまき,みえこ
+こまば,たいせつ
+こみや,あきお
+こやま,こひゃ
+こやま,たけし
+さいき,めぐみ
+さいご,たつろ
+さいとう,ひろし
+さいとう,みちこ
+さいとう,かずあき
+いがらし,しげき
+さえぐさ,ひろみつ
+さかい,たいちろうう
+さかがみ,まさかず
+さかね,ありよし
+さかもと,ともこ
+さかもと,よしじ
+さくらい,まさき
+さくらだ,やすたか
+さこん,ひでひと
+ささき,たつや
+ささはら,かずのり
+さとう,かつひこ
+さとう,まさのり
+さとう,やすのり
+さとう,ともひさ
+さの,みわこ
+さわ,けんじ
+しぶや,てつお
+しぶや,いさむ
+しまだ,しょうご
+しまだ,なみ
+しまだ,あきら
+しみず,いちろう
+しみず,だいき
+しみず,とものり
+しみず,まこと
+しみず,ひろみ
+いのうえ,りょうじ
+しも,まさひろ
+しょだ,ななえ
+じんの,わかこ
+じんの,げん
+しんまち,じゅにち
+すぎい,けんご
+すぎおか,なおと
+すぎもと,ひであき
+すずき,けんご
+すずき,ただし
+すずき,ひでお
+すずき,まなえ
+すずき,ひでたけ
+せお,やよい
+せき,ゆきお
+いしはま,だいすけ
+そのだ,ひでき
+たい,あきの
+たかいわ,なおゆき
+たかぎ,けいすけ
+たかはし,さとし
+たかはし,しげのり
+たかはし,まこと
+たかはし,りゅうじ
+たかはし,たけし
+たかむく,まさなお
+たぐち,たかひこ
+たけうち,みちのり
+たけかわ,かずひら
+たけわ,だいすけ
+ただまつ,かずひろ
+たたら,ひろしげ
+たなか,ゆういちろう
+たにもと,のりこ
+たねむら,そう
+たはら,けんと
+たむら,こうたろう
+だん,よしあき
+いいだ,きよし
+ちば,ゆうじ
+ちょとく,まきこ
+つかはら,のぶゆき
+つつみ,まきこ
+つもり,たけし
+てらした,あきひこ
+どい,けんし
+どい,ひろこ
+どい,よしこ
+としま,まさし
+ないとう,しんじ
+なかい,ひでき
+なかい,こうじ
+なかお,たかし
+なかがわ,ゆうじ
+ながさき,あきふみ
+なかじま,さとし
+なかじま,ひろし
+なかしま,たかゆき
+なかだ,むねのり
+なかはら,えいすけ
+なかむら,ひでゆき
+なかむら,ひろゆき
+なかむら,まこと
+なかむら,まりこ
+なかむら,ゆういちろう
+なかむら,ゆたか
+なかむら,よしえ
+ほしの,よういち
+なかもと,こへい
+いけだ,こうじ
+なかもり,まさひろ
+ながよし,しゅへい
+なではら,きほこ
+ななもり,ちあき
+ならさか,かおり
+なんば,たかふみ
+にし,のぞむ
+にしかわ,さなえ
+にしだ,きよこ
+にしむら,みなこ
+のぐち,じゅんぞう
+のだ,しゅうたろう
+のなみ,ゆり
+ののいちや,そういちろう
+のむら,みつひろ
+のもと,かつひこ
+はがや,ひでや
+はぎわら,としはる
+はく,あきこ
+はし,まさたか
+はしずめ,とおる
+はしば,たかまさ
+はせべ,ひろし
+はた,つとむ
+はたえ,ひろし
+はたの,ゆき
+はちの,つねあき
+はっとり,ひであき
+はやし,けんし
+はやしだ,ゆき
+はやふね,さとし
+はら,けんいち
+はらだ,すぐる
+はらだ,ますお
+いのぐち,ともひこ
+はらだ,ゆういち
+ひがしやま,なおゆき
+ひぐち,やすゆき
+ひご,ともひと
+ひだの,たかし
+ひまき,ゆうこ
+くらしげ,まこと
+いしはら,たかまさ
+ひらた,まさみち
+ひろさわ,みきと
+ひろた,あきよし
+ふかさわ,すすむ
+ふかざわ,ゆう
+ふかざわ,れいこ
+ふくむろ,あきら
+ふじい,よしあき
+いとう,たつじ
+ふじい,くみこ
+ふじなが,まさこ
+ふじなが,かつふみ
+ふじわら,たかゆき
+ふじわら,ようこ
+ふじわら,ひでき
+ふたつぎ,ひろし
+ふたつもり,ともや
+ふるはた,とものり
+ふるや,かずゆき
+へんみ,れいこ
+ほし,しげお
+ほしの,ゆきこ
+ほり,けいこ
+ほりえ,みきこ
+ほりおか,りえ
+ほりかわ,たかし
+まえふね,まさとも
+まきの,てつや
+ますだ,けいこ
+まつうら,みおこ
+まつした,けいじ
+まつもと,ふみこ
+いぐち,のりひろ
+まつやま,りえ
+まなべ,なおゆき
+まるやま,つよし
+みうら,しずか
+みき,のぶあき
+みつはし,まりこ
+みつべ,まさる
+みとべ,まいこ
+ちょとく,かつあき
+いけふじ,きみひろ
+みやざき,しんじ
+みやざき,あつこ
+みやした,ともひろ
+みやた,なみこ
+むこうやま,やすのり
+むらい,おくと
+むらかみ,たけし
+むらかみ,あきし
+むらた,ひでたか
+むらまつ,たかひろ
+もとき,まさひろ
+もとよし,ちの
+もみやま,なおゆき
+もり,みちる
+もり,たかゆき
+もりうえ,えいいち
+いのうえ,まさと
+もりうち,ひさや
+もりた,たまき
+やぎさわ,のぶよし
+やしま,まさはる
+やすだ,あきら
+やの,ようこ
+やの,たかし
+やまぐち,みちひで
+やまさき,みほ
+やまざき,まみ
+やました,みつあき
+やました,ともゆき
+やまだ,まさゆき
+やまな,じゅんた
+やまみち,せいいち
+いなか,えいじ
+やまもと,たかし
+やまもと,たけや
+やまもと,よしたか
+やまもと,あきのり
+ゆば,しんたろう
+よこたに,ゆうき
+よこやま,かずみ
+よしだ,こうじ
+よしだ,ふみひこ
+いわさき,みき
+よしだ,ただたか
+よだ,じゅん
+ぅお,ふみひこ
+わかまつ,のぶひこ
+わさ,けいじ
+わだ,あつし
+わたなべ,たつお
+いわくら,かな
+わたなべ,けいすけ
+わたなべ,げんた
+わたなべ,こうじ
+わたなべ,たくや
+わたなべ,ひでお
+わたなべ,むねたか
+わたなべ,ゆたか
+わたなべ,まこと
+おひ,よしお
+いいだ,かずひろ
+むかい,としかず
+ふみはら,としかず
+かわごえ,りょう
+くろかわ,えみ
+こうだ,あきひこ
+ふじた,みちえ
+こばやし,りょこ
+はまむら,かおる
+いわせ,けいぞ
+たけだ,えいいち
+おがわ,ひでゆき
+みずた,かずみね
+いいだ,しょたろう
+あいはら,ゆき
+あおう,しげる
+あおき,ひろゆき
+あおば,きよかず
+あきもと,としえ
+あさい,のぶひろ
+いしやま,ゆきこ
+あさお,たかし
+あさだ,かおり
+あさだ,まさはる
+あさの,ひろみ
+あさの,さとる
+あざみ,ゆうこ
+あすま,たけし
+あそう,かよ
+あだち,やすひろ
+あとみ,まさる
+あなみ,ひろあき
+あべ,さとる
+あべ,あつし
+あべ,やすこ
+あまの,としき
+あやべ,しんこ
+たけきた,ひろよし
+あらい,すすむ
+いつの,ゆうこ
+ありかわ,しゅんすけ
+ありた,えみこ
+あんじゅ,としき
+あんどう,けんたろう
+あんどう,ふじお
+いちのせ,ともひこ
+いいぬま,としゆき
+いうえ,しゅへい
+いがらし,ゆか
+いけうち,きょういち
+いけがみ,のりひろ
+いけだ,やすひさ
+いりた,まさおみ
+いけだ,まこと
+いけだ,まこと
+いけだ,まさとし
+いしい,たろう
+いしい,まなぶ
+いしい,まき
+いしおか,みきお
+いまい,よしのぶ
+いしかわ,こういち
+いしかわ,つよし
+いしぐろ,まさき
+いしだ,りゅた
+いせき,こずえ
+いちき,ひろゆき
+いちのせ,よしあき
+いちのみや,あきこ
+いとう,おりか
+いとう,みのる
+いなだ,たけし
+いなば,やすあき
+いはら,しゅひち
+いのうえ,しょいち
+いのうえ,じろ
+いのうえ,じゅにち
+いまいずみ,ともこ
+いまじょ,なおみ
+いまだ,しんいち
+いまず,たけし
+いまむら,りょへい
+いりたに,とものぶ
+いわき,ゆきひろ
+いわさき,たつゆき
+いわさき,たけし
+いわすぎ,まさと
+いわた,ともひろ
+いわはし,ふみたけ
+いわぶち,しんいち
+いわほり,のりこ
+うえだ,よしたか
+うえまつ,せいいちろう
+うすい,きよたか
+うすい,おさむ
+うちだ,のりこ
+うつみ,ともゆき
+うめだ,あつし
+うらの,さとこ
+えがわ,みお
+えざき,つよし
+えと,みつとし
+えのもと,たくじ
+えのもと,たつや
+えま,まり
+えんど,まな
+えんど,みか
+おいたに,しょしゅ
+お,いちろう
+おひ,なほ
+おへ,あきひこ
+おき,のぶえ
+おくぼ,たかし
+おさわ,ともいち
+おさわ,まさひろ
+いわきり,かおり
+おすみ,まきこ
+おた,ひでのぶ
+おた,やすひろ
+おつか,たけし
+おつか,あつこ
+おつか,けんじ
+おつき,はるひら
+おなか,あきら
+おにし,あきこ
+おぼ,ひさのり
+おま,よしまさ
+おむら,ゆき
+おむら,よしひろ
+いしい,かおる
+おもり,あきひろ
+おもり,あや
+おもり,ふみのり
+おわだ,いさお
+おかい,ひさし
+おかざき,わたる
+おかざき,もとひこ
+いけだ,みつひろ
+おかの,たかし
+おかべ,あきのり
+おかもと,こういち
+おがわ,ともひろ
+おがわ,じゅん
+おがわ,だいすけ
+おがわ,ようこ
+おがわら,まさこ
+おくはら,きよし
+おくやま,しのぶ
+おぐら,くみ
+きたむら,なおこ
+おざわ,よしひろ
+おち,ひろかず
+おの,のぶひさ
+おの,たかふみ
+おのでら,れい
+おばた,ともみち
+おやま,かずひと
+おんた,あきお
+いわた,えいいち
+かいぶき,うらら
+かきもと,えつこ
+かざぐち,ゆうこ
+かさざき,あきら
+かじ,りょひち
+かじむら,きよの
+かしわい,くにはる
+かしわばら,さとし
+かたくら,まこ
+かたやま,やすはる
+かつの,まりこ
+かど,しげみつ
+かとう,もとひろ
+いその,たかし
+かとう,ちか
+かとう,けんし
+かとう,かつよし
+かとり,ちずる
+かなさか,めぐみ
+かなざわ,たけし
+かなやま,ゆみ
+かねこ,まちこ
+かねこ,まさのり
+かねだ,よしひろ
+がみ,さおり
+かめおか,はるな
+からさわ,のりこ
+からしま,なおや
+かるいし,よしゆき
+かわい,まいこ
+かわい,たかのり
+かわかみ,ちえこ
+かわかみ,のぶゆき
+かわず,みどり
+かわなか,たかし
+かわの,しほ
+かわばた,あきよし
+かわべ,けんじ
+かわみ,もとひろ
+かんばし,みちこ
+かんばら,かなこ
+きしい,ゆきお
+きしだ,ともこ
+きたがわ,もとき
+きたしろ,ひろし
+きたはら,まなみ
+きたむら,あきてる
+きど,きよふみ
+きのした,いずみ
+えだ,なおゆき
+きむら,たかおみ
+きむら,まさみ
+きむら,けんた
+きよなが,あつし
+きよみや,えいすけ
+きりや,たかし
+いとう,なおや
+くしだ,しほ
+くじらおか,しんじ
+くにもと,みちこ
+くぬぎ,あつし
+くぼ,やすえ
+くぼさわ,あきひろ
+くぼた,まさき
+くめの,かずよし
+いしぐろ,よしかず
+くら,よひち
+くらさわ,ちえこ
+くらた,わかこ
+くろかわ,えい
+くろす,なつこ
+くろやなぎ,しげる
+いなとみ,あつし
+こいけ,のりみつ
+こいけ,たかお
+こいしかわ,まさき
+こいずみ,ともや
+こいずみ,きょこ
+こいで,だいき
+こずま,たけとし
+この,とおる
+こひゃま,あつし
+こり,まさき
+かつかわ,たかひろ
+こがの,のぶお
+こしい,たろう
+こしまる,ともあき
+こすぎ,ふみはる
+こせき,りょこ
+こたに,たかひさ
+こだま,まみこ
+こにし,さんしろ
+こにし,だいすけ
+こば,まゆこ
+こばたけ,わたる
+こばやし,ひでゆき
+こばやし,てるみ
+こばやし,のりまさ
+こばやし,まどか
+こばやし,まいこ
+なかむら,あつこ
+こばやし,だいき
+こぼり,たかひで
+こまつ,せいいちろう
+こやま,あきふみ
+こんど,ともひろ
+こんの,だいとく
+さいとう,まさし
+さいとう,まなぶ
+さいとう,やいち
+さいとう,せんじ
+いとう,たみこ
+さかい,ただし
+さかい,ともき
+さかい,けいいち
+さかきばら,あきこ
+さかぐち,やすゆき
+いわさき,よじ
+さかもと,まさや
+さかもと,よしお
+さかもと,よへい
+ささき,ひろこ
+ささき,くにひこ
+ささき,つよし
+ささき,つぎお
+いまはし,きょほ
+さつみ,たかこ
+さとう,ともえ
+さとう,あつこ
+さとう,ひろゆき
+さとう,ひろゆき
+さとう,ふきこ
+さとう,ちひろ
+さの,きよし
+いしぐろ,みねお
+さわやなぎ,としき
+しおた,いちろう
+しき,れいこ
+しげおか,のりお
+しげた,よじ
+ししど,じゅんこ
+しなだ,かつとし
+いで,こさく
+しばた,じゅんこ
+しばた,れな
+しばた,ひろみ
+しばた,たかゆき
+しまず,しんいちろう
+しまだ,ゆうじ
+しまず,ともくに
+しみず,まりこ
+しみず,こき
+しもはし,ゆみこ
+しもやま,しの
+じょじょ,ひでたか
+いとう,みつひろ
+すがた,けいすけ
+すがや,ゆうこ
+すぎた,れい
+すぎなか,まもる
+すぎもと,りか
+すぎやま,よしこ
+すぎやま,よしふみ
+すぎやま,ようこ
+すげの,ありひと
+すずき,りょ
+すずき,しゅいち
+すずき,もなみ
+すずき,よしさだ
+すずき,つねお
+いわさき,ひでただ
+すずき,くにえ
+すずき,ひろのぶ
+いちかわ,かおり
+せき,たかし
+せきぐち,きょこ
+せきや,のぶえ
+せこ,あきひろ
+せら,たかひろ
+そが,えいじ
+そが,ふみお
+いとう,かずな
+かみや,ゆうじ
+そんく,とおる
+たかき,ご
+たかぎ,こうじ
+たかさき,まさひろ
+いけだ,ひであき
+たかしま,こうじ
+たかの,ゆうこ
+たかの,ともふみ
+たかの,ようこ
+たかの,こうじ
+たかの,りか
+たかはし,まさよし
+たかはし,けいこ
+たかはし,けんじ
+たかはし,けんたろう
+たかはし,ひろゆき
+たかはし,ゆか
+たかまつ,えいこ
+たがみ,あきら
+たかみざわ,かすみ
+たからだ,としかず
+たきかわ,ゆみこ
+たきざわ,よしはる
+いいの,やすお
+たけい,ひとし
+たけうち,やすひと
+たけうち,けんいち
+たけきた,ひでき
+たけなか,まきこ
+たけのうち,なおひろ
+たけはな,よしひさ
+いとう,よしお
+たけもと,こへい
+たけもと,こういちろ
+たご,がく
+たさか,かな
+たじま,たかのり
+たしろ,ひろし
+たしろ,ひとし
+たたら,りゅき
+たちばな,しんいち
+いちむら,えみこ
+たていし,いわお
+たての,ゆみ
+たての,よしひろ
+たなか,しんいちろう
+たなか,たかきよ
+たなか,まき
+たなか,ふみお
+たなか,りょじ
+たなか,ふみ
+たなか,とくこ
+がみ,まさる
+たなみ,かずひこ
+たに,すすむ
+たにぐち,よしのぶ
+なかおか,ひろかず
+たにざわ,よしこ
+たにだ,ご
+たにもと,さなえ
+たのおか,あやこ
+たばた,さとし
+たはら,ゆき
+たむら,ひさし
+ちかざわ,だいぞ
+ちの,けんいちろ
+ちはら,まさひろ
+ちゅじょ,なおこ
+ちゅま,とおる
+つかだ,きょこ
+つかもと,やすし
+つかもと,ようこ
+つだ,まこと
+つちだ,つねお
+つちや,まみ
+つちや,ゆみこ
+つねき,ゆき
+でみせ,よしのり
+てらおか,のぶゆき
+いずみ,あきみ
+と,みえこ
+とじ,まさき
+としおか,みかこ
+とだ,ゆきひろ
+とびない,のりひと
+ともい,たかのぶ
+とやま,ひさの
+とよしま,さやか
+とよだ,けいいち
+とよはま,ひでたけ
+ながえ,のぶたか
+ながえ,ゆたか
+なかお,とものり
+なかお,まさお
+なかじま,せれな
+なかじま,あき
+なかじま,くみこ
+ながしま,たかし
+ながせ,かなこ
+なかぞの,あつし
+なかた,せいじ
+ながた,まさこ
+ながと,みすず
+なかにし,はなえ
+なかの,あきこ
+ながの,みねき
+ながの,あいこ
+ながの,こういち
+ながはら,たくや
+なかひがし,としお
+なかむら,けんじ
+いぬずか,しほ
+なかむら,ともひで
+なかむら,けんたろう
+なかむら,ともこ
+なかむら,よしたか
+なかや,つよし
+なかや,まり
+ならさき,こういちろ
+なりた,じゅんこ
+なりた,あさこ
+にいだ,よしひこ
+にしかわ,まりこ
+にしむら,げん
+にしむら,よしこ
+にしむら,ひろき
+にしやま,たかし
+にしやま,てつや
+にむら,よしゆき
+にわ,めぐみ
+ぬまた,きふみ
+ぬまた,ともかず
+ぬまだ,ふみき
+ねぎし,ひとし
+のざき,みほ
+のがみ,まさかつ
+のだ,ゆたか
+のはら,けい
+のぶはら,のぶなり
+はが,りゅた
+はぎわら,よしこ
+はぎわら,ともあき
+はしずめ,いわお
+はしもと,ちぎり
+はしもと,たいいち
+はしもと,かつみ
+はせがわ,とおる
+はせがわ,のりまさ
+はせがわ,ひろゆき
+はせべ,ゆきえ
+はた,なおこ
+はたけやま,たかひろ
+はたなか,つよし
+はたの,いさお
+はっとり,たかなお
+はなざき,ゆか
+はなぶさ,たつや
+はなむら,つよし
+ばば,ゆうこ
+はまさき,まさと
+はまだ,ただかず
+はやし,かつら
+はやし,たかし
+はやし,たかゆき
+はやし,そよか
+はら,あきら
+はらしま,まこと
+はらだ,まゆみ
+はらだ,かずたか
+はるたに,ようへい
+ひがしの,まさひろ
+ひがしやま,はずき
+ひぐち,いくぞ
+いしはら,あつよ
+ひじかた,あきよし
+ひび,たつや
+ひょへ,おさむ
+ひらい,ご
+ひらかわ,あきこ
+ひらく,よしゆき
+ひらさわ,つぐき
+いのはら,まなぶ
+ひらた,たけひろ
+ひらぬま,まこと
+ひらの,りょ
+ひらやま,まさひで
+ひろうち,おさむ
+ひろおか,なおや
+ひろかわ,りえ
+ふくい,たかひろ
+ふくだ,まき
+ふくだ,ゆ
+こり,しげみつ
+ふじい,たけよし
+ふじい,ひろあき
+いで,たつと
+ふじい,ともひろ
+ふじお,ひでのり
+ふじおか,じゅんや
+ふじくら,しげき
+ふじさわ,けんじ
+ふじさわ,たくひろ
+ふじしげ,くにつぐ
+ふじた,かずお
+いのうえ,たろう
+ふじと,しげる
+ふじなが,れい
+ふじわら,ゆかこ
+ふじわら,けんたろう
+ふせ,まさき
+ふるかわ,たかひろ
+ふるかわ,すすむ
+いしい,きょこ
+ふるさわ,じゅにち
+ふるた,だいぞ
+ふるた,ちえこ
+ふるた,ひろかず
+ふわ,たかゆき
+ほし,けんいち
+ほそだ,きくこ
+いしい,こうじ
+ほりかわ,けんたろう
+ほりこし,けいいち
+ほんだ,けんいち
+まえかわ,のりお
+まえだ,ゆか
+まえだ,ながまさ
+まえだ,ともはる
+まえの,としき
+まき,かおる
+まきぞの,まさみつ
+まきた,ゆういち
+まきの,だいすけ
+まさき,ひろき
+ますざき,こういち
+ますだ,よしあき
+ますぶち,なおこ
+まちだ,みお
+まつうら,まゆみ
+まつかわ,けいすけ
+まつざき,ひろみち
+まつざき,なおこ
+まつした,ひろあき
+まつしま,のぼる
+まつだ,るみ
+まつだ,みなこ
+まつだ,たろう
+まつなが,たかし
+まつなみ,さとし
+まつばら,なみ
+まつばら,さやか
+まつみや,かつゆき
+まつもと,むねき
+まつもと,ゆずる
+まつもと,よしこ
+まつもと,ゆすけ
+まつもと,かずひろ
+まつやま,みゆき
+まなべ,えりこ
+まるやま,もとよ
+まるやま,だいすけ
+みうら,まき
+みくに,こずえ
+みずかみ,ひでお
+みつはし,しげゆき
+みなと,たかし
+みなみ,あゆみ
+みふね,たかし
+みやがわ,こうじ
+みやさか,のりふみ
+みやざわ,さとみ
+むらお,けんいち
+むらかみ,まこと
+むらた,かずひで
+むらまつ,たけふみ
+むらやま,ゆすけ
+むらやま,ひろこ
+めぐろ,ちずこ
+もちずき,りょすけ
+もとよし,まさき
+ももず,ひろき
+もり,やすみつ
+もり,ふみなり
+もり,ひでき
+もり,のりよし
+もりた,ひろゆき
+もりた,たかゆき
+もりの,よしひろ
+もりもと,まさし
+もりもと,しのぶ
+もりやま,じゅん
+もりわき,まさこ
+やぎ,まさみ
+やぎ,けんすけ
+やくしじ,のぶゆき
+やこ,としお
+やざわ,かずあき
+やすま,ともひこ
+やとご,こういち
+じょがん,まこと
+やなぶ,ゆきこ
+やの,まさき
+やぶた,やすたか
+やまうち,みほ
+やまうち,たまよ
+やまぐち,けんじ
+やまぐち,けんいちろ
+やまぐち,みちお
+じだい,たかし
+やまぐち,ゆきこ
+やまぐち,かずゆき
+やまぐち,ふみあき
+やまさき,けいすけ
+やまさき,ゆたか
+やまざき,おさむ
+やました,つよし
+やました,けんいち
+やました,けんじろ
+やまだ,あい
+やまだ,はなえ
+やまだ,さとし
+やまだ,しゅこ
+やまだ,ひろし
+やまとや,ゆきこ
+やまなか,みつはる
+やまなし,りょ
+やまにし,やすまさ
+やまもと,なおこ
+やまもと,ひろあき
+やまもと,えいた
+やまもと,せいこ
+やまもと,こうじ
+やまもと,やすひろ
+やまもと,じゅん
+よこた,あつや
+よこた,かずひろ
+よこた,まさと
+よこて,たくや
+よしおか,たかし
+よしおか,やすお
+よしおか,たつじ
+よしかわ,やすひさ
+よしかわ,きょこ
+よしだ,まりこ
+よしだ,ひふみ
+よしだ,じゅん
+よしの,なおき
+よしみ,ちか
+よしむら,かずや
+よだ,りか
+よねざわ,まなみ
+りゅと,ぐおふい
+ぃん,よすけ
+わかつき,たつや
+わきざか,ともふみ
+わきた,しげゆき
+わきた,かよ
+わきもと,せいいちろう
+わだ,たかし
+わだ,あつし
+わたせ,ひでと
+わたなべ,たくや
+わたなべ,りょひち
+わたなべ,まさゆき
+わたなべ,じゅんこ
+わたなべ,あかね
+きのした,みのる
+あおき,まさゆき
+やなぎはら,くにひこ
+あまこ,のりひさ
+こんどう,あらた
+しらかわ,けい
+こやま,ご
+こんど,しんすけ
+もり,しんや
+おの,ゆすけ
+まの,とおる
+ながの,しょこ
+さとう,たかし
+みやざき,あきこ
+おがわ,だい
+きむら,やすはる
+よこお,そう
+うちむら,ひろゆき
+ごしま,なおこ
+さえき,よしたか
+なかじま,ゆうこ
+いわみ,よしひこ
+えげ,きよし
+うめぞの,よしお
+さくらい,しおり
+わたなべ,ようこ
+ながい,たかゆき
+おそがみ,まこと
+くろかわ,としお
+たかすか,ひでよし
+おばた,あき
+しらい,すみこ
+まつうら,えり
+なかざわ,あや
+まつい,あきら
+こせき,ひでとし
+つかだ,けんじ
+てらくら,ちなつ
+にへい,りゅいち
+かわむら,みき
+ひご,ひろみ
+こばやし,みほ
+ふるた,れい
+もちずき,かおり
+おかだ,まみ
+さいとう,まや
+かわはら,しょご
+すずかけ,あつひこ
+いとう,まさよし
+いしずか,よしかず
+たべい,まさひこ
+ごと,ゆたか
+しもさか,まこと
+かわい,よしひさ
+わたなべ,ゆひち
+すずき,こうたろう
+まつやま,のりゆき
+はら,よじ
+つばき,きよし
+やすい,たかゆき
+こばやし,まさゆき
+おかべ,きよのり
+おがわ,たかゆき
+やまぐち,ひろゆき
+ふじかわ,たつし
+いながき,ゆきこ
+ちぞ,ゆき
+はなだ,たくや
+おこ,あつこ
+おくら,ひさと
+まつお,やすまさ
+えんど,あきひろ
+ほりべ,とおる
+かつ,かずま
+おたか,よしかず
+たかはし,いつふみ
+むらやま,ひろし
+よしおか,りょへい
+かい,せいいちろう
+たかはし,たかゆき
+ぐんげ,けんたろう
+やの,さゆり
+はやし,しょこ
+みうら,さとし
+あおやぎ,けんじ
+たかだ,ひでとし
+ぬまた,としひこ
+かたおか,じゅんや
+しみず,もとあき
+しみず,すみひろ
+まつむら,つとむ
+おりと,まりこ
+こたに,もとじ
+おはし,てつひろ
+かんせき,まさのぶ
+きたむら,としや
+さくた,ゆうこ
+よしだ,さゆり
+こはら,よしえ
+ぃ,わかこ
+いはら,たまよ
+つじうら,たい
+なかむら,あやこ
+あおき,まなみ
+あおやま,ひろたか
+あかいけ,とくひこ
+あかつ,けんじ
+あきはら,かおる
+あきもと,さちこ
+あさくら,ゆうこ
+あさの,たろう
+あびる,さとし
+あべ,ふみひこ
+あべ,りょ
+あべ,けいこ
+あべかわ,こうたろう
+あらい,しんいちろう
+あらい,たかし
+あらかわ,とおる
+あらき,はるな
+あらき,けいこ
+ありえ,かずひろ
+あんどう,つよし
+いいだ,あきこ
+いけだ,だいすけ
+いけだ,ひろみ
+いけだ,じゅん
+いしい,しゅんすけ
+いしい,まり
+いしがき,たかし
+いしかわ,りょ
+いしかわ,あいこ
+いしざわ,のりたか
+いしずみ,ゆき
+いしぜき,たくや
+いしだ,ともこ
+いしだ,のりひと
+いしだ,まさとし
+いしづ,ひろき
+いしはら,たかあき
+いしまる,ひろし
+いたに,まさふみ
+いたはら,けんたろう
+いちま,じゅにち
+いとう,しゅんすけ
+いとう,たけし
+いとう,なおき
+いとう,のぶやす
+いとう,はやと
+いとう,みやこ
+いとう,ゆき
+いとう,ゆみこ
+いながき,てるき
+いなみ,しゅへい
+いの,だいすけ
+いのうえ,ゆうじ
+いのうえ,れいこ
+いまお,よしたか
+いまだ,たかし
+いわかみ,ふみなお
+いわくら,しゅひち
+いわざき,たかし
+いわた,ひさつぐ
+いわもと,なおと
+うえすぎ,ゆうこ
+うえだ,ゆういちろう
+うえたか,ひろかず
+うえち,あきこ
+うえの,しずこ
+ひりゅ,おき
+うえむら,つよし
+うちだ,ひろゆき
+うちだ,しげき
+うちはし,れお
+うちやま,みき
+うめはら,まさき
+うりたに,たかし
+えべ,じゅんぺい
+おいかわ,けんいち
+おおい,ゆすけ
+おおい,ゆたか
+おおいし,ひろたか
+おうち,こうじ
+おえ,ひろき
+おおおか,じゅんこ
+おおかわ,まさや
+おおくぼ,しょじ
+おおくま,まり
+おおた,けんじ
+おたに,こうじ
+おおつ,まさひろ
+おおつ,あや
+おおつか,きいち
+おおつか,ご
+おおつか,れみ
+おおつか,なつこ
+おおつぼ,ますみ
+おおはた,ゆひゃ
+おおまさ,けんたろう
+おおや,ともゆき
+おやま,かよこ
+おか,まさひこ
+おかじま,けんしん
+おかだ,だいすけ
+おかだ,まさひろ
+おかだ,まさや
+おかだ,りょ
+おかだ,のりひろ
+おかはた,のぶひろ
+おかべ,しずか
+おかもと,ちえ
+おかもと,てつや
+おかもと,じゅん
+おがわ,てるひろ
+おがわ,あきら
+おくだ,けい
+おくと,まさみつ
+おくなか,あきこ
+おぐら,たつお
+おざき,けいじ
+おさだ,たいすけ
+おざわ,たろう
+おじま,みつのぶ
+おじま,たつや
+おばら,ちひろ
+かいとう,のりよし
+かきくら,さとし
+かきもと,るみ
+かく,たつや
+かげやま,やすまさ
+かじなが,ひさし
+かしま,よしのり
+かたおか,ひでき
+かたぎり,けいこ
+かたやま,だいすけ
+かど,こへい
+かとう,さち
+かとう,せいし
+かとう,たろう
+かとう,のぶあき
+かとう,ひろし
+かとう,ひろみ
+かとう,まこと
+かとう,まさし
+かとう,ゆりこ
+かとう,たかし
+かなもと,まさゆき
+かなや,てつや
+かねこ,こうじ
+かねもり,ただひさ
+かわ,ゆたか
+かわい,よしひこ
+かわい,たかひろ
+かわかみ,なつこ
+かわぐち,まひと
+かわぐち,ゆみこ
+かわぐち,りつこ
+かわぐち,りょ
+かわぐち,ふみ
+かわごいし,れいこ
+かわしま,すみれ
+かわな,ひろし
+かわのべ,てつや
+かんの,さとし
+きくち,わたる
+きし,こういちろ
+きしもと,あきこ
+きしろ,しんや
+きたお,よしかず
+きたはま,ゆ
+きたむら,よしかず
+きどころ,こうじ
+きむら,はるこ
+きむら,まさおみ
+きむら,ちかこ
+きりあけ,しゅんすけ
+くきもと,としひこ
+くぼ,ひろき
+くぼた,すすむ
+くまくら,たかゆき
+くまだ,ごろ
+くまもと,たけし
+くめ,ゆきこ
+くらや,やすのぶ
+くりわき,のぞみ
+くわばら,れいこ
+ご,たけし
+こいけ,やすし
+こいけ,しん
+こさか,たけのり
+こだ,よしのり
+こが,あつし
+こくぼ,こういち
+こくら,まこと
+こご,あいこ
+こさき,えいさく
+こじま,としき
+こでら,くにゆき
+ごと,まゆみ
+ごと,りか
+ごと,ゆすけ
+こはた,ひろあき
+こばやし,まさひと
+こばやし,こへい
+こまつばら,まきこ
+こみや,ゆかり
+こみやま,てるお
+こやなぎ,さとる
+こやま,れおな
+こんど,むつみ
+こんの,あやこ
+さいとう,こういち
+さいとう,ももえ
+さいとう,りえ
+さいとう,りゅじ
+さいとう,りょうすけ
+さかい,ひろこ
+さかの,かずと
+さかもと,だいすけ
+さかもと,けいこ
+さくらい,かずのり
+ささき,ちよみ
+ささき,とおる
+ささき,なほこ
+ささき,みほ
+ささき,とくこ
+ささの,まさよし
+さだもと,しんや
+さとう,たかこ
+さとう,のぶか
+さとう,のぶほ
+さとう,ひろひで
+さとう,しげる
+さなだ,けんいち
+さねしげ,けんご
+さの,あい
+しげとみ,りょすけ
+しのはら,ゆきこ
+しばかわ,わたる
+しばの,ちから
+しまだ,まさふみ
+しまだ,よしこ
+しみず,たけゆき
+しむら,ゆきお
+しむら,さき
+しもかわ,やすひろ
+しもふじ,あかぎ
+しもやま,げんこ
+しょ,ひろき
+しらい,ゆひちろ
+しらが,たかし
+しらかわ,たかひろ
+しらす,ともこ
+しわ,まさゆき
+しんけ,としのぶ
+しんど,かずひこ
+すがはら,さとこ
+すぎうち,もりひこ
+すぎうら,けんじろ
+すぎさわ,りょ
+すぎはら,たけし
+すぎもと,たつろ
+すぎやま,たかお
+すずき,たかのり
+すずき,たけし
+すずき,ともや
+すずき,のぶひこ
+すずき,ひでかず
+すずき,ひろゆき
+すずき,りえ
+すずき,こうじ
+すだ,やすこ
+すと,みゆき
+すみだ,けんいち
+せき,ないしん
+せき,ともかず
+せんだ,ひろかず
+そめみや,しょたろう
+そや,ちあき
+だいまる,ようこ
+たかお,ひろのぶ
+たかぎ,てるゆき
+たかざわ,たつや
+たかせ,まさゆき
+たかね,しんいち
+たかはし,たいすけ
+たかはし,まこと
+たかはし,まさや
+たかはし,りゅた
+たかはし,のりこ
+たかやま,みかこ
+たきうち,りんや
+たきかわ,てつや
+たきぐち,あきひろ
+たきざわ,あつなり
+たきざわ,かずき
+たきざわ,ゆきこ
+たきた,ちえ
+たぐち,ひろき
+たけい,あきら
+たけうち,はなえ
+たけだ,かよ
+たけはら,だん
+たての,けんじ
+たなか,さとし
+たなか,じゅんこ
+たなか,たかし
+たなか,ひろなお
+たなか,ひろゆき
+たなか,まなぶ
+たなか,ゆきお
+たなか,りえ
+たなか,あきら
+たなべ,けんたろう
+たに,さとし
+たにかわ,こうじろ
+たにぐち,ちひろ
+たになか,あきら
+たにもと,けんたろう
+たぬま,くにお
+たばた,しんご
+たばた,ゆひちろ
+たばた,ようこ
+たばた,なおたか
+たむら,だいすけ
+たるき,すすむ
+たんじ,あきら
+ちば,なお
+ちば,せいじ
+つかだ,とおる
+つきもと,なおこ
+つじ,えりこ
+つだ,みつえ
+つちもと,しんいちろう
+つつみ,ちかよ
+つつみ,よしつぐ
+つぼた,けつ
+てい,ひろたか
+てらかど,ちずる
+みのうら,ふみひこ
+てるい,じゅん
+どい,こ
+と,よすけ
+とかいりん,けいたろう
+どめん,こういち
+とかい,ゆき
+とくなが,きよのり
+とくやま,かずゆき
+としま,ひろかず
+どち,りえ
+とのい,あつし
+とのむら,ひろし
+とみた,きみひこ
+ともの,しんご
+とりい,ともこ
+ながい,じゅにち
+なかがわ,まさや
+なかがわ,わかみ
+なかがわ,みつあき
+なかざと,まなぶ
+なかしま,まり
+ながた,こうたろう
+なかの,まきこ
+ながの,ゆみ
+ながの,えつこ
+なかむら,かおり
+なかむら,きみたか
+なかむら,たいが
+なかむら,みわこ
+なかもり,ともゆき
+なかやま,あきこ
+なるせ,りえこ
+なんご,くにお
+なんば,ひでかず
+なんば,まもる
+にいみ,とものり
+にしお,いくま
+にしおか,よしのり
+にしおか,だいすけ
+にしさか,もとのぶ
+にしざき,ちかこ
+にしざわ,ゆか
+にしの,かな
+ぬまたき,りょた
+ねぎし,りょ
+ねやま,ようこ
+のだ,さとし
+のぐち,たけし
+のぐち,てつや
+のぐち,とくこ
+のぐち,ともひろ
+のざき,たかし
+のだ,まさき
+のぼり,けん
+のむら,こうじ
+のむら,こへい
+のむら,よじ
+はぎわら,しんいち
+はしぐち,ともこ
+はしもと,まみ
+まき,たくま
+はせがわ,なおき
+はせがわ,さとし
+はだ,もとき
+はっとり,りか
+はっとり,たけし
+ばば,ちあき
+ばば,のりこ
+ばば,よすけ
+ばば,けいじ
+はまだ,しんきち
+はまだ,だいすけ
+はまだ,ひろこ
+はまだ,よしひろ
+はまの,しゅひち
+はやし,みさこ
+ひぐち,けんじ
+ひさつね,しょたろう
+ひしぬま,としひろ
+びょど,たかふみ
+ひらい,かずと
+ひらおか,たけお
+ひらかわ,おさむ
+ひらさわ,あやこ
+ひらしま,ゆひち
+ひらた,まゆこ
+ひらの,まさき
+ひるま,けんじ
+ひろせ,しんいちろう
+ひろせ,りかこ
+ひろた,くみこ
+ふくい,だいじ
+ふくだ,りさ
+ふくば,ふみひろ
+ふくむら,まさゆき
+ふくもと,あきのり
+ふじい,こき
+ふじい,まこと
+ふじい,あつし
+ふじえだ,ひろこ
+ふじた,まさかず
+ふじた,みき
+ふじつ,ともひろ
+ふじの,たくじ
+ふじもと,じろ
+ふじわら,まみこ
+ふじわら,やよい
+ふじわら,ゆひち
+ふるかわ,ひでき
+ほじょ,かつよし
+ほしの,ひろし
+ほそかわ,あずさ
+ほりかわ,たかし
+ほんご,かなめ
+まえだ,ゆみこ
+まおか,だいすけ
+ますぶち,けん
+ますみつ,ゆき
+まつい,みわ
+まつお,ひさかず
+まつおか,ひでかず
+まつおか,ゆきこ
+まつだ,たけし
+まつばら,たかほ
+わたなべ,さとこ
+まつやま,たくと
+まつやま,りな
+まつやま,くみ
+まとば,りょ
+みうら,まさのり
+みつぎ,むねとも
+みと,てるひこ
+みのうら,しゅじ
+みや,よしあき
+みやけ,あつし
+みやした,つとむ
+みやした,つよし
+みやた,きょへい
+みやもと,けんたろう
+みやもと,ひでのり
+みやもと,きょすけ
+むくだ,さちこ
+むしか,りょ
+むと,あきこ
+むらかみ,だいすけ
+むらかみ,たけし
+むらかみ,みつてる
+むらかみ,よしき
+むらたに,ともひろ
+むらまつ,まさき
+むらやま,たけし
+もちずき,しゅひち
+もりぐち,やすひさ
+もりた,あきら
+もりばやし,ひでまさ
+もろと,あい
+やえがし,ゆきお
+やおやま,あきひろ
+やがみ,たつや
+やぎ,くにこ
+やぐら,まさひろ
+やすこち,ともあり
+やすだ,ゆきこ
+やすだ,あきら
+やまぐち,ゆか
+やまぐち,かなこ
+やまだ,たつひろ
+やまだ,ひでつぐ
+やまだ,もとひろ
+やまみち,まさこ
+やまもと,よしあき
+やまもと,としひこ
+ゆき,みさと
+ゆみば,まみ
+ゆら,こめい
+よこすか,ひろたつ
+よこた,ひでゆき
+よこやま,げんた
+よしおか,よしひろ
+よしおか,けいじ
+よしざわ,しんじ
+よしだ,のぼる
+よしだ,ゆすけ
+よしだ,のりこ
+よしの,ゆすけ
+よしむら,しょしん
+りゅ,わいけん
+ろく,みずほ
+さかもと,あきら
+わたなべ,かつゆき
+わたなべ,じゅんこ
+わたなべ,ひろみ
+わたなべ,まみこ
+わたなべ,けいいち
+わらび,けんいち
+のざわ,はるのぶ
+くぼ,あい
+よしもと,あやこ
+やまもと,なおこ
+やまもと,かずひろ
+ひろさわ,ゆうこ
+みひら,みつる
+おの,あかり
+おだ,たかし
+おばたけ,かずみ
+かどえ,ゆうこ
+にしだ,えいじ
+まつもと,あきこ
+みぎた,けいこ
+みやもり,れいな
+やました,ゆふこ
+やまだ,ゆ
+のりとみ,たかこ
+いけだ,やよい
+もりた,ひろのり
+たけうち,ゆうこ
+みた,やすこ
+いぬい,こ
+と,たかし
+まきの,たかし
+なつめ,りえ
+おのでら,りょへい
+おた,ひろゆき
+うるしさこ,かずひこ
+さかきばら,みほこ
+あおき,あい
+あおき,とよひろ
+あおき,よしあき
+あかがわ,まな
+あかつか,みお
+あかほり,まどか
+あきやま,しんご
+あさい,ちえ
+あさい,ゆすけ
+あさおか,りょじ
+あさぬま,りょ
+あそ,よしのり
+あたけ,けん
+あだち,のりゆき
+あべ,まり
+あべ,しんや
+あべ,くにひろ
+あらい,みきこ
+ありま,りつこ
+いいずか,しげのり
+いがらし,えいすけ
+いけだ,なおと
+いけだ,ゆうこ
+いけはた,もとこ
+いざわ,かずひと
+いしい,けいじろ
+いしかわ,かずひろ
+いしぐろ,てるみ
+いしだ,しんぺい
+いしだ,けんじ
+いしばし,あや
+いしはら,なおふみ
+いしもと,としき
+いそはた,しんご
+いたみ,たかみち
+いちかわ,のぶやす
+いっしき,ゆきえ
+いで,つよし
+いで,ともこ
+いとう,だいすけ
+いとう,ゆたか
+いとう,こずえ
+いとう,けんたろう
+いとう,ひろき
+いのうえ,ちはる
+いのうえ,やすし
+いのうえ,りょこ
+いのうえ,あきひろ
+いのくち,こうたろう
+いまい,たつお
+いまきゅれい,としゆき
+いまぜき,たかひろ
+いまむら,まゆこ
+いまむら,あさこ
+いわい,たかあき
+いわい,なるたか
+いわさき,たつや
+いわせ,なるみ
+いわた,こうじ
+いわで,まゆみ
+いわむら,じゅんぺい
+うえだ,まさお
+うえの,なつこ
+うえの,まい
+うかい,まこと
+うさみ,よすけ
+うちうみ,なおき
+うちやま,かつき
+うらはら,のりゆき
+えぎ,りほ
+えじり,れいこ
+えのきど,くみこ
+えもり,ますみ
+えんど,けんいちろ
+おひ,さとる
+おひけ,たかし
+おふら,ともこ
+おかわ,すすむ
+おきた,こうじ
+おさわ,けんたろう
+おた,まさひと
+おた,ふみお
+おた,まさふみ
+おたに,しんじ
+おたに,ひろき
+おつか,まりこ
+おつか,りえこ
+おつか,まさふみ
+おつき,たいじ
+おど,たかひこ
+おとんべ,ひろし
+おの,よりこ
+おの,いつき
+おはし,はじめ
+おはた,なつこ
+おみち,ともかず
+おひゃま,だいすけ
+おかざき,よしこ
+おかじま,ゆきのり
+おかだ,まさゆき
+おかだ,ともこ
+おかもと,あきなお
+おかもと,よへい
+おがわ,たかあき
+おぎた,ゆきひで
+おくくぼ,もとい
+おちあい,よしのり
+おまた,だいじろ
+かさ,さとる
+かしわ,たくみ
+かとう,たつや
+かとう,まさひこ
+かない,ひろし
+かなやま,たつや
+かねこ,あきら
+かねつき,みほ
+かねまる,みきひと
+かべうち,たつふみ
+かみむら,みなこ
+かみや,かずひろ
+かみや,たくま
+かわい,たけし
+かわい,だいすけ
+かわかみ,じゅん
+かわぐち,としふみ
+かわさき,たかし
+かわさき,とものり
+かわさき,けん
+かわしま,ゆきこ
+かわた,だいすけ
+かわまた,こへい
+かわもと,ただし
+きしもと,けんいち
+きしろ,だいすけ
+きだ,ふみや
+きたおか,じゅんや
+きただ,あずさ
+きたの,なおと
+きたはら,かおり
+きたむら,さちこ
+きたもと,こういちろ
+きむら,ゆみこ
+きむら,ひろし
+きもと,らい
+きん,みん ちゃう
+んぐいぇん,やすひろ
+くしやま,てつあき
+くどう,ひろき
+くどう,たかお
+くめうち,けいいち
+くらしげ,こた
+くらち,けいすけ
+くらなか,あきよし
+くりはら,けいた
+くろき,えいすけ
+くろさか,じゅん
+くわはら,う
+ゆえ,まさひこ
+こいずみ,そうへい
+こうじま,たろう
+こだ,みほ
+この,たけひろ
+こが,ふみと
+こが,けいこ
+こくぶん,よしゆき
+こさか,だいすけ
+こって,あきよ
+はたなか,とものり
+こばやし,しゅんすけ
+こばやし,けんじ
+こばやし,こうじ
+こばやし,かずひろ
+こばやし,たけし
+こまつ,よすけ
+こまつばら,まさき
+こめだに,ようこ
+さいき,しの
+さいとう,かつのり
+さかい,しんや
+さかぐち,よしひこ
+さかまき,かつゆき
+さくま,けんいち
+さこ,しょひち
+ささい,たくじ
+ささお,ちかこ
+ささき,あきこ
+ささき,まいこ
+さとう,たかし
+さとう,ゆか
+さとう,ひでき
+さとう,あんな
+さとう,のりあき
+さとう,きみひこ
+さとう,しんすけ
+さとう,ふみ
+さとう,てつろ
+さの,あつし
+さの,けんいち
+さはら,ひろあき
+さるやま,たろう
+さわぐち,ぁん
+し,ゆきこ
+しおざき,まや
+しおだ,なおや
+しき,かずきみ
+しだ,はなこ
+しのはら,まさお
+しのはら,かつひこ
+しぶさわ,かずゆき
+しまだ,ひろひと
+しまだ,まさき
+しまだ,みき
+しみず,まさこ
+しみず,みき
+しみず,のぶゆき
+しみず,りょさく
+しみず,まさこ
+しみず,なぎさ
+しも,たかふみ
+しもざき,たかゆき
+しもじま,あや
+しもつ,えみ
+しもの,ひであき
+しもや,えいじ
+しらす,まさる
+すぎうら,よしひろ
+すぎうら,ひとし
+すずき,ひさし
+すずき,よすけ
+すずき,りゅた
+すずき,みほこ
+すずき,けんたろう
+すと,たつお
+すなだ,わたる
+すやま,ともこ
+せお,さとこ
+せき,じゅにち
+せきね,じろ
+せきば,きぬえ
+せと,たつひこ
+せんごく,えいいちろう
+せんだ,たかひろ
+せんば,あきひこ
+そめや,よりこ
+たかぎ,しんご
+たかぎ,まさのぶ
+たかぎ,としろ
+たかせ,ともみ
+たかだ,えりこ
+たかはし,ゆすけ
+たかはし,よしのり
+たかはし,よしき
+たかはし,さとし
+たかはし,さとし
+たかはし,だいすけ
+たかみざわ,かおり
+たきざわ,こへい
+たぐち,みつる
+たけした,まき
+たけだ,けいじ
+たけだ,のりひさ
+たけだ,ゆうこ
+たけなか,みずほ
+たけはら,けいご
+たけやま,ひでき
+たじ,あい
+ただ,のりゆき
+だて,よひちろ
+たなか,よすけ
+たなか,やすゆき
+たなか,よしのり
+たなか,たかのり
+たなか,まさと
+たにぐち,みか
+たにこし,やすひろ
+たにの,こずえ
+たぶき,けいぞ
+たぶち,きょこ
+たまおき,けん
+たまがわ,かずま
+たむら,ゆうじ
+ためのり,こうじ
+たんの,たかひろ
+たんぼ,みきこ
+ちだ,みつる
+ちねん,みか
+つがねざわ,よしたか
+つかはら,くみこ
+つちや,ちかふみ
+つちや,のりひこ
+つちや,たくなが
+つずき,たかゆき
+つずらはら,たかゆき
+つねよし,たかのり
+つぼうち,けんたろう
+つるしま,たかあき
+でぐち,たろう
+てずか,よしひと
+てらかわ,まさよし
+てらぐち,ともこ
+てらしま,けいこ
+てらだ,よへい
+とがし,えり
+とくむら,あきひこ
+とざわ,かつひさ
+とびおか,ゆき
+とまりの,のぶゆき
+とみい,みずほ
+とみざわ,まゆみ
+とみた,よすけ
+とみた,やすゆき
+とみなが,まみ
+とよだ,さちこ
+とらたに,てるのぶ
+ないとう,あきふみ
+ながい,りえ
+ながい,たくや
+なかいけ,みつのぶ
+なかうえ,たかし
+ながお,むねのり
+なかこじ,けんじ
+ながさか,よしき
+なかじま,だいすけ
+なかじま,こういち
+ながた,ゆうこ
+ながた,たけし
+ながた,じゅんこ
+なかつる,じゅんこ
+ながの,あや
+なかむら,たいち
+なかむら,ゆうた
+なかむら,ようこ
+なかむら,そうたろう
+なかむら,まさこ
+なかむら,たかお
+なかむら,ちえ
+なつはら,じゅんこ
+なりさだ,しんご
+なんぶ,だいすけ
+にかいど,りょこ
+にし,さやか
+にし,こうじ
+にしお,ゆきこ
+にしかわ,まり
+にしくら,かつや
+にしざわ,あつひさ
+にしざわ,なおき
+にしだ,ひろあき
+にしだ,やすお
+にしやま,さとる
+ぬのや,ひろし
+ぬまざき,くみこ
+ぬまた,ひろし
+のどみ,ゆか
+のみ,まさあき
+のぐち,えいじ
+のじま,さやか
+のじり,しんすけ
+のだ,のぶゆき
+のだ,ともや
+のむら,そういちろう
+のむら,なおゆき
+のむら,としや
+はこしま,けんじ
+はしもと,さとこ
+はしもと,いさむ
+はせがわ,えりな
+はたけやま,しんいち
+はった,りょへいた
+はっとり,ひさのり
+はない,しげお
+はなだ,ゆきお
+はまぐち,たけし
+はまだ,りな
+はまだ,まさき
+はまの,かずよし
+はやかわ,てるあき
+はやし,としゆき
+はやし,みきこ
+はやし,ゆきこ
+はら,しんへい
+はら,かずえ
+はらだ,かずお
+ひえかた,わたる
+ひがさ,りょ
+ひがみ,けい
+ひきの,けんたろう
+ひだ,ゆふこ
+ひだか,ゆひ
+ひでしま,さとみ
+さかい,たけはる
+ひらい,けいすけ
+ひらいわ,けん
+ひらた,まなみ
+ひらばやし,けいこ
+ひろせ,たかゆき
+ふかお,ゆき
+ふくい,てつお
+ふくざき,ともなが
+ふくだ,けんたろう
+ふくだ,ちかこ
+ふくだ,やすあき
+ふくだ,みえ
+ふくはら,さとこ
+ふくむろ,あつし
+ふじうら,せいじ
+ふじおか,てつじ
+ふじおか,たかし
+ふじた,しん
+ふじもと,みきこ
+ふじもと,じゅんや
+ふじわら,はやと
+ふたむれ,えつこ
+ふるさわ,ひでき
+ふるた,なおゆき
+ふるや,あやこ
+ほこら,みゆき
+ほしの,ひでひこ
+ほしの,みれい
+ほその,よへい
+ほり,やすひろ
+ほりうち,まさる
+ほりおか,じゅにち
+ほりぐち,ゆきこ
+ほんま,ひろふみ
+まえかわ,あや
+まえじま,こういちろ
+まえだ,まや
+まえはら,しげる
+まき,ゆかり
+まきの,えりこ
+ますい,あきひろ
+ますだ,いさお
+ますだ,いちろう
+まつい,ひさお
+くまがい,ひでお
+かねこ,まつお
+こみや,すみお
+こがいと,たもつ
+かんばやし,ひろみち
+きのした,とし
+きくち,えつお
+こまば,やすお
+こくぶ,じゅにち
+こばやし,いさお
+こばやし,ともゆき
+きつたか,こうじ
+まつお,としひろ
+かわい,としひこ
+くりはら,しげのり
+かどの,たけお
+かみくぼ,ひろし
+かわぐち,きよし
+かまた,まさみつ
+かんだ,かんじ
+かんだ,かつひこ
+こしむら,りょじ
+まつお,のぼる
+くさき,みちこ
+かもはら,てるまさ
+かさじま,はるひこ
+まつき,みのる
+かみくら,ゆたか
+くりはら,みつこ
+なかち,ひろし
+かがわ,てるお
+こばやし,ちゅけん
+かんの,たかゆき
+まつした,まなぶ
+かしわだ,とおる
+こんの,ひろよし
+こすぎ,けんじ
+こもり,たかし
+かわの,まさもと
+きたむら,かずみ
+かじま,みつお
+かとう,としゆき
+こやの,きよし
+かつまた,じゅんじ
+くわだ,まさふみ
+こたに,としまさ
+かじうち,よしかず
+こんど,つねお
+こんど,のぶあき
+まつなみ,きよし
+かがやま,しんいち
+かねこ,せいじ
+こやま,としお
+きつかわ,ふみお
+かしくら,おさむ
+くろき,かずお
+こいずみ,よしみ
+くぜ,としろ
+かわかみ,ゆきお
+かみじょ,たけひこ
+きむら,てつや
+まつの,ひでお
+きくた,ゆきお
+くまだ,としかず
+くにはら,けいじ
+こじま,やまと
+くりはら,のぶこ
+よねくら,たかし
+こばやし,よしかず
+こばやし,しんや
+こじょう,まさはる
+きむら,やすひこ
+こばやし,やすはる
+こんど,こせい
+かわい,かんじ
+くまはら,よしゆき
+きせ,しゅへい
+かしくま,みきお
+かこ,けいこ
+いしがい,さちお
+かみぐち,とおる
+くもだ,かずひさ
+こまつ,おさむ
+かねだ,まさあき
+きくち,しゅにち
+こたに,ゆたか
+こばやし,まさのり
+かわぐち,よしたみ
+かねこ,つねお
+かも,てつお
+かわむら,さなえ
+くまの,じゅにち
+こばやし,まさあき
+きむら,のぶかず
+きしもと,としかつ
+きむら,けんじ
+かみぐち,みちやす
+きむら,けんぞ
+こばやし,じゅにち
+かどくら,よしあき
+きたむら,ただし
+かつき,としお
+かんざき,しょひち
+かたぎり,みつお
+こばやし,よしひさ
+こまつざき,よしゆき
+きた,やすと
+かつはら,よしお
+こぐれ,ひろあき
+こじま,よしあき
+こめだ,えいじ
+こにし,まさゆき
+くわはら,よしえ
+こやま,かずひさ
+まつもと,ひろひさ
+かじもと,きしお
+くまざわ,てつや
+きむら,まさはち
+こばしがわ,しゅんじ
+かみや,かなこ
+まつもと,ひでよ
+こはし,ひさし
+こだま,まさのぶ
+かわかみ,いくみ
+まつもと,のぶこ
+かいど,こぞ
+きむら,ひろのり
+くご,しゅ
+まつもと,あきえ
+まつやま,あつし
+まるやま,ひさし
+この,けんいち
+くろき,やすまさ
+こみや,ひであき
+きむら,のりゆき
+きの,よしあき
+こまつ,かつみ
+かねちか,としお
+かなたに,ひとし
+こばやし,ゆ
+きたやま,しょじ
+かじ,えいぞ
+かわしま,ぜにち
+きむら,かずみ
+こばら,はるお
+きたがわ,みほ
+まるやま,としお
+かもん,きよみ
+みうら,よしゆき
+みしま,りょすけ
+みすぎ,さちこ
+みずた,きよし
+みずもと,じゅん
+みぞぐち,りょこ
+みずか,なおゆき
+みなみ,みあ
+みなみたに,ゆき
+みねた,りょすけ
+みやい,りえ
+みやおか,よしろ
+みやざき,かなこ
+みやざき,ひろこ
+みやはら,なおき
+みよし,まきこ
+むらかみ,たくま
+むらき,なおたか
+むらた,なほこ
+むらた,まさし
+むらた,たかし
+むらやま,かつひろ
+もとの,ともあき
+もり,じゅんこ
+もり,なるき
+もりた,まさこ
+もりた,ゆたか
+もりやま,たける
+もりやま,まさと
+やざわ,ゆきこ
+やじま,こた
+やなぎだ,けんろ
+やまがた,まゆみ
+やまかわ,じゅり
+やまぐち,たつひこ
+やまぐち,あきのぶ
+やまぐち,まさひで
+やまさき,あつこ
+やまざき,けんじ
+やました,みちや
+やまだ,めぐみ
+やまだ,まさこ
+やまだ,やすまさ
+やまなか,としゆき
+やまね,なお
+やまもと,ひでとも
+やまもと,りえ
+やまもと,あつし
+ゆかわ,かおり
+ゆざ,かずこ
+ゆたに,ともひろ
+ゆたに,えりこ
+よご,けいいち
+よこぼり,しんや
+よしおか,さとみ
+よしかわ,ゆき
+よしだ,ただゆき
+よしだ,まさき
+よしもと,けん
+よねだ,しゅくほ
+ら,よしあき
+わかさや,けんいち
+わたなべ,しゅん
+わたなべ,まさし
+みつやま,しんご
+ひらおか,やすのり
+かんの,かずひろ
+わこ,ひでゆき
+あおき,さとし
+あかお,あきこ
+あかぎ,りえ
+あかし,だいすけ
+あかつか,とものり
+あかはね,まさたけ
+あかほり,ただあき
+あきもと,ひろみ
+あきやま,ひろたか
+あさい,きょこ
+あさの,もとお
+あさひ,ゆみこ
+あさべ,ともこ
+あはれん,しずか
+あべ,じゅにちろ
+あべ,やすひろ
+あべ,まさみ
+あまの,りさ
+あめもり,かつと
+あらい,りえ
+あらい,わたる
+あらい,まさのり
+あらたに,りょへい
+ありなか,ひろこ
+いいご,やすゆき
+いいだ,ひろあき
+いけだ,ゆうこ
+いこが,ちえ
+いしい,みほ
+いしおか,まさかず
+いしざか,やすひろ
+いしじま,あさこ
+いしだ,かよ
+いしど,だいすけ
+いしの,としひこ
+いしまぶし,かおる
+いせり,ひろふみ
+いそべ,まさみ
+いたに,ありさ
+いずの,ひでお
+いでの,えつこ
+いとう,かつひろ
+いとう,さつき
+いとう,ともひろ
+いとう,のりあき
+いとう,まゆみ
+いとう,よしたか
+いとやま,えみこ
+いな,かおり
+いなさき,たかし
+いなば,ゆきえ
+いなば,みお
+いのうえ,ゆい
+いのうえ,ゆきこ
+いのうえ,たかお
+いべ,あきひと
+いまい,おとひこ
+いまおか,はるか
+いまむら,たかあき
+いわた,みつひろ
+いわた,よへい
+いわた,ようこ
+いわみ,みつたか
+いわもと,よしあき
+うえだ,ゆかり
+うえの,まな
+うえはら,たけし
+うかい,あつし
+うだがわ,あきら
+うちやま,やすのり
+うつみ,よすけ
+うつみ,ただし
+うの,たけし
+えがしら,のぶたか
+えと,まりこ
+えとみ,きょこ
+えんど,ゆきえ
+えんど,しゅへい
+おかど,まさし
+おくら,たけひろ
+おさか,よしひろ
+おさか,おさむ
+おさわ,ゆうこ
+おすみ,けんいちろ
+おた,れいこ
+おたに,さら
+おにし,たかのり
+おにし,ひさなが
+おにし,ゆひち
+おにし,ひろまさ
+おの,ひろゆき
+おの,まりこ
+おの,まこと
+おまつ,しゅんすけ
+おむら,ひろき
+おや,ひでみ
+おか,めぐみ
+おかい,ひろき
+おかうち,たかひさ
+おかだ,ひろこ
+おかだ,たてき
+おかの,こうたろう
+おかむら,さち
+おかもと,さとこ
+おがわ,ちえこ
+おがわ,まこと
+おがわ,まさひろ
+おがわ,みつる
+おがわ,むさし
+おがわ,まさお
+おぎの,なほこ
+おく,みかこ
+おくかわ,ようこ
+おくだ,よすけ
+おくむら,ともこ
+おざき,ゆきえ
+おじま,のりひと
+おぜき,けんいち
+おだ,とものり
+おだ,ゆうき
+おちあい,まりこ
+おとがわ,やすふみ
+おの,あかり
+おはら,そ
+かいじま,いずみ
+かがわ,こずえ
+かきお,きんや
+かけひ,みちこ
+かさい,たくや
+かさみ,ゆみこ
+かじた,えりこ
+かじたに,さやか
+かしま,ひろあき
+かしま,あきお
+かじもと,さとこ
+かすが,たかゆき
+かせ,たかし
+かたぎり,けいいち
+かたやま,ひろゆき
+かたやま,あつこ
+かとう,なおき
+かとう,りょこ
+かとう,みずき
+かなざわ,けいこ
+かねみつ,けんた
+かの,ともみつ
+かまた,たかや
+かみざき,ともみ
+かみじょ,なおこ
+かめたか,よしふみ
+かも,けいいち
+かわい,まさなり
+かわい,やすひろ
+かわかみ,ゆうこ
+かわかみ,あやこ
+かわぐち,さなこ
+かわぐち,れいこ
+かわぐち,かずしげ
+かわさき,りょこ
+かわさき,ゆうじ
+かわなみ,ひとし
+かわね,くにあき
+かわばた,けんいちろ
+かわむら,ひろかず
+かわもと,とものり
+かんだ,ゆきえ
+かんだ,ひろたか
+かんの,まさとし
+きしもと,よひち
+きたがわ,たいすけ
+きたはら,けんや
+きたむら,ともかず
+きたむら,じゅり
+きぬや,たかし
+きのした,みお
+きはら,あゆみ
+きむら,かずひで
+きむら,さとし
+きむら,じん
+きむら,なおき
+きよしま,あきこ
+きよずか,かなこ
+きら,あゆみ
+きりさこ,もう
+きん,ゆ
+きん,みどり
+くにえだ,なおし
+くぼ,まさこ
+くまの,けんたろう
+くらた,たけし
+くらはし,ともはる
+くれ,しょ
+くろい,しんご
+くろき,としみ
+くわの,てつじょ
+ご,たつや
+ごだ,よしかず
+こが,まさひろ
+こくしょ,あきよし
+こさか,じゅん
+こじま,はるみ
+こぞの,ゆき
+こだま,たかし
+こてら,てっぺい
+こでら,さゆり
+ごと,なおこ
+ごと,かずあき
+こにし,ご
+こにし,たけと
+こにし,あきひろ
+こばやし,たかあき
+こばやし,とおる
+こばやし,よしたか
+こばやし,ゆうこ
+こぶせ,ひろたか
+こまき,さえ
+こまざわ,たけひろ
+こまつばら,けい
+こやま,つよし
+こんど,しゅいちろう
+さいき,りょすけ
+さいじょ,あいわ
+さいとう,いくお
+さいとう,きみひろ
+さいとう,しんたろう
+さいとう,ただのり
+さいとう,ひろこ
+さいとう,みさき
+さいとう,ようこ
+さいとう,ともや
+さかい,なつこ
+さかみ,こうじ
+さかもと,ちえ
+さかもと,つよし
+さかもと,ひでゆき
+さかもと,ひろなお
+さかもと,たかまさ
+さくらい,ともひさ
+さくらぎ,いちろう
+ささき,ひろこ
+ささき,かおる
+さとう,かずや
+さとう,きょこ
+さとう,こういち
+さとう,てるひさ
+さとう,はじめ
+さとう,ひろみ
+さとう,ふみこ
+さとう,ひとし
+さの,まきこ
+さの,たかゆき
+さわさき,たかし
+さわだ,こうじ
+さんぺい,ひでき
+しおずか,まさよし
+しの,ななこ
+しばた,よひちろ
+しま,さだよし
+しまの,なほこ
+しみず,まさき
+しみず,ゆみえ
+しもかわ,ふくたろう
+しもむら,しゅさく
+しゅくり,たかし
+しょじま,あき
+しょだ,けんいちろ
+しらいし,かずみち
+しらかた,ゆみ
+しらさき,りょすけ
+しろた,とおる
+じんぐうじ,りょすけ
+しんたに,たかし
+しんぼ,ひろこ
+じんぼ,さとる
+しんむら,あつし
+すがい,かずのり
+すぎもと,かずたか
+すぎもり,じゅん
+すぎやま,としあき
+すぎやま,よしこ
+すぎやま,まみ
+すずき,よしおみ
+せがわ,えいぶ
+せき,まなみ
+せきね,たつお
+せきもと,くみ
+せと,のりかず
+せら,じゅん
+そでやま,ももこ
+そのい,まさひろ
+たいら,しげかず
+たかき,けんた
+たかはし,のぶゆき
+たかはし,もとはる
+たかはし,ひでとし
+たかはま,つとむ
+たかみや,みほ
+たかやなぎ,ひろこ
+たかやま,たかね
+たぐち,じゅん
+たけうち,たくま
+たけざき,きくこ
+たけした,じゅん
+たけもと,けんじ
+ただ,ひろし
+たちかわ,かつあき
+たちばな,あつし
+たつがわ,かずよし
+たなか,そらこ
+たなか,てるえ
+たなか,まさし
+たなか,みちる
+たなか,れい
+たなか,みねこ
+たなべ,ともお
+たにぐち,こき
+たにわき,ちはる
+たばた,かずひこ
+たはら,さとし
+たまき,わたる
+たまむら,あつし
+たるみ,まゆこ
+たんばら,さとみ
+ちかつ,ひろとも
+ちば,あつこ
+ちょ,まこと
+つかだ,なおと
+つかもと,ともこ
+つじもと,やすのり
+つちだ,あきよ
+つちや,まさたか
+つちや,こうすけ
+つつみ,さちえ
+つぼくら,しょへい
+つむら,のりこ
+てしま,たけし
+てらさき,ひろふみ
+てらさき,よしひさ
+てらだ,けんじ
+どい,なおこ
+どい,まこと
+と,ひろみ
+ときた,りょこ
+ときと,てつひこ
+とくだ,かほり
+としずみ,りょた
+とだ,てつや
+とよだ,さちか
+ないとう,みき
+なかい,けいこ
+なかお,たかあき
+ながお,ちから
+なかがわ,さとし
+ながさか,たくや
+なかさか,ともえ
+ながさき,あきこ
+なかざわ,まさひと
+なかざわ,くみ
+なかしま,たけはる
+なかじま,ともこ
+なかしま,のぶたか
+なかじま,ひろこ
+なかじま,しんいちろう
+なかだ,りょすけ
+なかだ,えみ
+ながつか,まほ
+なかと,しゅんすけ
+なかにし,ひろあき
+なかにし,りょた
+なかにし,まさとし
+ながまつ,あきひこ
+なかむら,えりこ
+なかむら,ともみ
+なかむら,みちこ
+なかむら,やすひろ
+なかむら,ゆひちろ
+なかむら,ゆへい
+なかむら,ようこ
+なかむら,ゆや
+なかもり,えみこ
+なかや,あきひろ
+なかやま,しゅたろう
+なす,りょすけ
+なりとみ,かよこ
+なんぶ,あやこ
+にいみ,いさお
+にしかわ,しゅじ
+にしの,みどり
+にしやま,すすむ
+ぬかだ,いたる
+ぬまた,まさひろ
+ぬまた,しげとし
+のがみ,きょこ
+のぎ,あやこ
+のくお,まゆ
+のぐち,けいこ
+のざき,なおこ
+のじ,ひろかず
+のま,さやこ
+のむら,てつや
+のむら,ゆうじ
+ばこし,たけし
+はしもと,こうじ
+はすぬま,しんたろう
+はせ,ともや
+はせがわ,やすたか
+はたがわ,そのこ
+はたけやま,ゆか
+はたの,たかひろ
+はない,よしこ
+はまさき,ゆういち
+はまだ,さとし
+はまで,さとし
+はやかわ,あやこ
+はやし,かおり
+はやし,たかゆき
+はやし,なつね
+はやし,ゆき
+はやし,れいこ
+はやし,まさお
+はら,ゆひち
+はらしな,しんご
+はらだ,なおこ
+はらだ,ちえ
+はるな,よいち
+ひきた,ひろし
+ひだい,じゅんこ
+ひらい,ゆうこ
+ひらい,ようこ
+ひらい,りか
+ひらいわ,まこと
+ひらお,ひろたか
+ひらかわ,たかし
+ひらた,あき
+ひらまつ,あや
+ひろえ,さとこ
+ひろせ,さとし
+ふかざわ,じゅん
+ふかほり,ようこ
+ふくしま,すすむ
+ふくだ,ともひさ
+ふくだ,のぶき
+ふくだ,あつし
+ふじい,みどり
+ふじかわ,しゅすけ
+ふじた,ひでと
+ふじた,まゆみ
+ふじた,きょこ
+ふじむら,ゆすけ
+ふじむら,えりこ
+ふじもと,くみこ
+ふじもと,ひでかず
+ふじわら,まき
+ふじわら,よしあき
+ふたかた,たかお
+ふない,あつし
+ふるかわ,ひでのり
+ふるかわ,ひでゆき
+ふるまた,のりひろ
+ほし,まきお
+ほしうら,ひろゆき
+ほしろ,ひろふみ
+ほそだ,さやか
+ほり,りえこ
+ほり,かずみ
+ほりえ,けんじ
+ほりぐち,まさお
+ほんな,よしろ
+ほんぼ,ともゆき
+まえかわ,あきこ
+まえだ,しょへい
+まえだ,りゅへい
+まえだ,けいさく
+まきうち,さとし
+まきの,じろ
+まきもと,さちこ
+まさとうみ,ひろこ
+ますい,じゅにち
+ますだ,ともや
+ますだ,ゆき
+まつい,ひろし
+まつうら,いつみ
+まつおか,しゅんご
+まつおか,のぶひで
+まつおか,ゆき
+まつおか,のぶと
+まつかげ,のぞむ
+まつした,かおる
+まつなが,ひろゆき
+まつばら,みわ
+まつばら,こすけ
+まつもと,たかし
+まつもと,えつこ
+まつやま,けいじ
+みうら,しょこ
+みうら,とものり
+みうら,まいこ
+みうら,よすけ
+みき,まさゆき
+みずかわ,みほ
+みずたに,みお
+みずの,かずひさ
+みその,あきひろ
+みぞはた,ともこ
+みながわ,まゆみ
+みながわ,だいすけ
+みなみ,ひさお
+みなみ,さとし
+みなみかた,わたる
+みなみむら,のぞみ
+みはら,あきこ
+みむら,ひろみつ
+みやい,ほくと
+みやざき,まいこ
+みやざわ,りょ
+みやざわ,あつし
+みやむら,あつし
+みやむら,きよまさ
+みやもと,ゆうじ
+みやもと,ひろゆき
+みよし,ゆきこ
+むねむら,ゆせい
+むらかた,ただまさ
+むらずみ,ちえ
+むらた,まちこ
+むらた,あや
+むらもと,ひろゆき
+むらやま,たかし
+もり,たかのぶ
+もり,ひでき
+もり,まさき
+もり,みきこ
+もり,のぶあき
+もりうち,あつし
+もりした,なおや
+もりたに,あきら
+もりもと,かおり
+もりやま,あや
+もろえ,ゆへい
+やご,まさや
+やすがき,つかさ
+やすだ,ちかふみ
+やすもと,ともゆき
+やつなみ,みつのり
+やなぎさわ,くみこ
+やなぎはら,まき
+やぶなか,かずのぶ
+やまうち,なお
+やまおか,なおこ
+やまおか,かつまさ
+やまおき,あつひこ
+やまがた,くみこ
+やまぐち,みき
+やまぐち,のりこ
+やました,ゆひちろ
+やました,かずと
+やまだ,げん
+やまだ,こうじ
+やまだ,ひろかず
+やまだ,みのる
+やまだ,ともふみ
+やまなか,あやこ
+やまむら,あつし
+やまむろ,あきお
+やまもと,けいすけ
+やまもと,しんすけ
+やまもと,たいし
+やまもと,たかゆき
+やまもと,ただし
+やまもと,なおや
+やまもと,ひろゆき
+やまもと,まこと
+やまもと,しんいち
+ゆあさ,ひろこ
+ゆき,まどか
+ゆりやま,ちえ
+よこた,ちえ
+よこはま,じゅんじ
+よこやま,のぶこ
+よこやま,あや
+よしおか,まきこ
+よしおか,めぐみ
+よしおか,いっせい
+よしだ,かなこ
+よしだ,こうへい
+よしだ,てるひこ
+よしだ,まさゆき
+よしだ,みつよし
+よしだ,みのる
+よしの,しのぶ
+よしひろ,とおる
+よしまつ,あすか
+よしむら,わたる
+よしむら,くみこ
+わかまつ,なおこ
+わきた,のりひろ
+わきた,あつひさ
+わしお,としゆき
+わしざわ,あゆみ
+わだ,かずき
+わだ,きょうこ
+わだ,まいこ
+わだ,まりこ
+わだ,たかとし
+わたなべ,なおこ
+わたなべ,なおこ
+わたなべ,まりえ
+わたなべ,ゆうじ
+わたなべ,ゆうじ
+わたなべ,ゆか
+わたなべ,ゆみ
+やまぐち,とおる
+すずき,だいすけ
+ささの,かずふみ
+かねこ,ひろや
+くぼた,かずお
+こすけがわ,けんしろ
+かない,よしあき
+かとう,ちあき
+こだま,いさむ
+こばやし,としお
+こじま,いさお
+かめやま,たけし
+くらばやし,かつえ
+かんだ,かずしん
+こんの,とくじ
+かわしま,ひろし
+かわかみ,きよおみ
+かなか,よしひろ
+かわむら,よりみつ
+きむら,けいじ
+かすが,もとじ
+こじま,じろ
+かわの,すすむ
+かわな,たけし
+こずま,れいこ
+かわさき,まさなお
+かたの,さぶろ
+かただ,こういち
+きくち,たかひこ
+かみうら,としひろ
+かねだ,とおる
+この,かずひこ
+かわもと,のぶお
+かばや,かずゆき
+こぶくろ,じゅんじ
+くまがい,まさなり
+この,こうじ
+こやま,かくたろう
+きたしろ,ひろうみ
+こだま,しゅにち
+かとう,ひろし
+きむら,もとよし
+こいで,こういち
+くやま,よしまさ
+きりはら,たけし
+かよ,まさあき
+かねこ,まさあき
+こはら,あきお
+かとう,まさおみ
+こい,かずひで
+かやま,てつお
+こいけ,やすお
+こじま,しげみ
+こまつ,ひろし
+きたむら,けんきち
+きたわき,ゆうじ
+かさじま,ひでき
+きむら,しょひち
+かみぐち,ひとし
+かとう,たけし
+かわむら,えいいち
+かどた,としはる
+おたけ,いさお
+かとう,たけし
+きの,もりひろ
+かみじょ,まさただ
+きくち,としお
+かきうち,いわお
+こじま,ゆきお
+かたおか,せいいちろう
+くぼた,いさお
+きたざわ,くにひこ
+こみね,あきと
+くぼ,まさじ
+きたずめ,のりよし
+こばやし,ぜにちろ
+かわぐち,ひろふみ
+けがさわ,てつろ
+こち,さちお
+こやま,ふじお
+かわきた,としひと
+かわみつ,のぶたか
+かたひら,しげる
+かわぎし,ともみ
+こんど,のぶひさ
+きむら,まさみ
+くぼやま,まさゆき
+くまもと,ひろひさ
+かわた,まさみ
+くにのぶ,しゅんすけ
+かまだ,ひろゆき
+かく,まさあき
+かねこ,もとゆき
+こばやし,たかゆき
+かしお,かずとし
+かないわ,かつお
+けんもち,よしひこ
+きくち,ひさし
+かざま,みちお
+こまつもと,とおる
+こんど,たかひで
+きくしま,しょぞ
+こばやし,あつお
+くまがい,ひろし
+かとう,よしみつ
+まるばやし,あきひこ
+むと,しんたろう
+みたに,まさき
+みわ,ふみよ
+しみず,やすお
+みずの,たかし
+まちだ,おさむ
+まつい,おさむ
+みうら,あきら
+ひの,けんじ
+むらかみ,けいじ
+みやの,ただし
+まるい,おさむ
+むらさき,やすあき
+まさか,えいこ
+みねた,かつひこ
+まつなが,かつまさ
+みながわ,せいこ
+みやけ,まさとし
+まつもと,かずひこ
+みさわ,たかし
+まえだ,かつみ
+うだがわ,たけし
+みやはら,まさし
+むらい,つとむ
+まつもり,としお
+まさき,かずお
+みうら,かずたみ
+もとみや,りゅひち
+むらかみ,りょひち
+まとば,まさひろ
+みうら,ひろゆき
+まつかわ,まさのり
+みずたに,としお
+みやの,ひでのり
+まつだ,たけみ
+みす,ゆたか
+まつやま,せいじ
+みやもと,なおあき
+みずの,けんいち
+まるやま,としゆき
+まるこ,こぞ
+もちだ,としかつ
+もとはし,こうじ
+みずや,しょじ
+みやざき,しげき
+みやがわ,きくお
+むらしま,えいじ
+ますさこ,きよし
+もり,ひろふみ
+もりた,まさあき
+みなみ,としお
+みやき,かずひろ
+もりやま,なおひこ
+みずた,まさゆき
+まつい,ふさちか
+まつお,あきら
+まつした,としえ
+こばやし,ただあつ
+むかえ,ふみお
+もりい,せいじ
+もりた,みちたか
+むかい,とおる
+まつお,まもる
+むらやま,こうじ
+まつもと,みちまさ
+みやさと,みつる
+みやざわ,ただお
+もりむら,せいいち
+むらの,いちろう
+ますだ,かずお
+むらた,よしあき
+みやさか,まさお
+もとばやし,けんじ
+みずの,よしお
+ももい,みつぐ
+まつだ,まさよ
+すがわら,ゆたか
+まつばら,かつみ
+まつもと,まさじ
+みやはら,ぎょじ
+むらいし,たいぞ
+まつむら,まさお
+みよし,ときわ
+もりもと,よしひこ
+みずたに,としお
+まつば,みのる
+まつい,よしお
+むらかみ,たかし
+もりた,ひでお
+むらた,みのる
+まさき,のぶお
+みやざき,けんじ
+まつばら,まさみつ
+むらまつ,ゆりこ
+もり,よしお
+もりむら,とくお
+すわ,なおえ
+こわたり,まこと
+まつざき,みのる
+まっさき,あつよし
+みたく,まもる
+まつかわ,まもる
+もぎ,てつよし
+まぶち,かずお
+まつもと,たけし
+もり,あつし
+まつうら,かん
+まえだ,かずお
+ますだ,しげはる
+まえにし,しげお
+まるやま,ひろし
+まつだ,よしき
+まき,しんいち
+もうえ,あつし
+むらい,のぶゆき
+まつい,まさかず
+もりた,よしみ
+まえだ,なおき
+むらうち,よしのぶ
+みつやす,まさひろ
+もり,けいぞ
+まつだ,さとし
+まつお,しこ
+まるやま,きよし
+まつがえ,としろ
+かみくら,りょひち
+みどりかわ,かずなり
+ますだ,あきお
+みてら,ひろし
+まつなが,ひろし
+もりおか,なおや
+みそお,たかお
+むらやま,としひこ
+もりもと,しんいちろう
+もり,とよみ
+ますだ,くにひこ
+みやもと,まさる
+むらた,たかぶみ
+みなみさわ,いさむ
+ましま,あきら
+もりぐち,けんじ
+まつい,さとし
+まえかわ,まさふみ
+もちずき,あきお
+ますだ,しげひろ
+まつもと,こういち
+もりなが,ゆうじろ
+ますだ,しげのぶ
+みうら,やすお
+まつの,あきら
+まつおか,よしみ
+まちい,えつお
+みずたに,かつよし
+まつもと,しげる
+まさき,つとむ
+まつもと,ひろたか
+みつや,かつまさ
+みずの,よしてる
+まえだ,かずひろ
+むらまつ,すみひろ
+むさしの,よしあき
+まえはた,たかし
+まつざわ,ひとし
+みつい,じゅん
+ももだ,しんきち
+まつお,じゅんぞ
+みわ,かずのり
+むらかみ,ひろたみ
+みかみ,くにお
+ぬかざわ,ただお
+なかむら,よしてる
+にしむら,こういち
+にった,としお
+ながつゆ,よしのり
+にいの,ひでと
+たぶち,たけし
+にしの,ひでやす
+ぬかた,じろ
+にしむら,ふみお
+ながの,けんじ
+なかがわ,あきら
+にしやま,まさひこ
+なかじま,よしお
+にしだ,よしかず
+なかむら,みつかず
+のむら,かつみ
+なかもと,しゅじ
+なかがわ,てつや
+なるさわ,はるき
+ないとう,しんじ
+のべ,しずえ
+にしな,くにひこ
+のむら,けんじ
+なかむら,ときやす
+にかいど,ひろし
+なかだ,けんじ
+にしな,さぶろ
+なりた,たもつ
+のぐち,ひさお
+のや,たかゆき
+ながい,よしあき
+なかむら,ひろし
+にいずま,まさひろ
+なかがみ,みつお
+ながた,ふみお
+にしざわ,ゆきお
+のせ,のりあき
+ながい,かずたみ
+にしざわ,つねお
+なかはた,たけお
+なかじま,よしひで
+なかだ,やすのり
+のなか,ただし
+なかがわ,しんじろ
+なかしま,よしやす
+なかもと,たつお
+にしおか,きみひと
+にしまえ,としお
+なかむら,よしひろ
+なかにし,こき
+のだ,まさと
+なかむら,きよし
+なかざわ,たかみ
+にしだ,しゅひち
+にしだ,きしお
+にい,はつえ
+やまもと,じゅろ
+なかうち,ゆきお
+なかじま,まさお
+なかむら,かずとし
+のむら,ひろし
+にしむら,まつお
+のなか,まさき
+にしむら,まさあき
+にしお,たみお
+ながお,まさる
+にいみ,ひろし
+なかむら,しんたろう
+ねずか,まさお
+なかむら,かずお
+なかざと,むつや
+あさの,あきひこ
+のがみ,りょひち
+なかじま,よしろ
+ないとう,ただゆき
+なかむら,りょじ
+なかにし,ひとし
+なかだ,やすお
+ながさわ,かずたか
+ながの,まさみ
+にった,くにひこ
+なんば,やすひろ
+のずえ,ただひこ
+ながみ,としひで
+ながい,きよし
+なかはら,きよし
+なかじま,けんじ
+なかじま,ひでゆき
+にしだ,よしのり
+なおい,ゆきとし
+なべしま,てつや
+なかの,じゅん
+なかむら,くにひろ
+のだ,かずひこ
+なかせ,かずあき
+なかじま,よしのり
+ながさわ,きよあき
+にへい,たみお
+ながい,たかし
+なかしま,かずゆき
+なかお,ゆたか
+なかがわ,みつひろ
+ないとう,くにみつ
+のじま,ひろし
+ながの,じゅにち
+にしだ,みずほ
+なかだ,たけよし
+なかはら,かつお
+なかじま,あきひこ
+ねもと,しちろ
+なかむら,よしまさ
+ながとも,しょひち
+なかむら,はるお
+なかやま,みつよし
+なかむら,としあき
+なかむら,みつしげ
+のじま,ただし
+ながふち,みつよ
+なかの,りょすけ
+にしやま,たかお
+なかむら,せい
+ながしま,のぶお
+にわ,こういちろ
+なかの,ゆすけ
+おにざわ,ゆきお
+おしかた,かずお
+おか,きよし
+おくやま,たかのすけ
+おき,むねたか
+おかみや,きよし
+おぐら,けんじ
+おで,まさみ
+おのだ,ひとみ
+おにし,よしお
+おくだ,ほずみ
+おくだ,ふみのり
+おがわ,てつろ
+おの,やすろ
+おすみ,ごいち
+おつか,しんいち
+おとも,まさゆき
+おかざき,なおじ
+おはし,ゆたか
+おぎの,やすあき
+おさだ,ゆきお
+おば,まさお
+おしま,かつひろ
+おかわ,のぼる
+おかもと,すみお
+おがわ,けんじ
+おの,まさき
+おかの,まさのり
+おざわ,まさひこ
+おはく,まさき
+おしたに,きょいちろう
+おざわ,としお
+おはし,こうじ
+おはた,まさお
+おのでら,こうじ
+おの,たかし
+おほか,まさあき
+おの,ゆうじ
+おはし,ひろし
+おた,ふみお
+おもり,しずあき
+おしま,ひさし
+おかもと,あやこ
+ひろせ,かずや
+おみず,ひろし
+おの,とおる
+おちあい,きよと
+おかべ,とおる
+おたに,ゆきまさ
+おくの,ひろし
+おすが,たかし
+おのき,ひろし
+おひし,たかのぶ
+おかだ,ことく
+おみじゃ,みや
+さたけ,ふみお
+おだぎ,ふじこ
+おた,よしのり
+おふち,ゆたか
+おかわ,たかし
+おかど,けんたろう
+おさわ,こ
+おぎさわ,こういち
+おかべ,ともゆき
+おとよし,やすお
+おがわ,みつお
+おりがさ,まさひさ
+おば,たい
+おばた,あきひろ
+おの,しげお
+おさか,けんいち
+おみね,かおる
+おた,じょじ
+いのうえ,もとつぐ
+おこし,ゆきひろ
+おざわ,つねお
+おかべ,はちろ
+おぼら,さとる
+おた,ただよし
+おざき,かおる
+おくだ,さとる
+おざわ,ひでき
+おかだ,ゆきひろ
+おつか,あつし
+おのでら,ひでお
+おしお,たつろ
+おだしま,やすたけ
+おざき,ゆきこ
+まえだ,たかし
+おき,たかよし
+おのだ,まさや
+おなぎ,けんぞ
+おくだ,よしひこ
+おひら,あきお
+おのざわ,しげき
+おぎはら,ひでお
+おくま,けいいち
+おはら,えいじろ
+おき,じょひちろ
+おがわ,じゅにち
+おひゃ,やすひろ
+おさわ,てるあき
+おはら,すすむ
+おだ,こうじ
+おざわ,こういち
+おがた,ただしげ
+おかの,ただし
+おひし,しげる
+おない,みつお
+おつか,まさお
+おつか,ときえ
+おいで,あきら
+おきやま,よしきよ
+おぐし,せつじ
+おだ,としひこ
+おかばやし,くにあき
+おたに,かずお
+おつき,のぶひろ
+おかだ,かつすけ
+おすみ,たつや
+おひがわ,ひでほ
+おかだ,さぶろ
+おざわ,ひろよし
+おたに,たかこ
+おざき,みつお
+おた,りょすけ
+やなぎや,あきこ
+なかたに,しま
+こばやし,ひろゆき
+みくに,じゅんこ
+すずき,てつお
+はだの,よしあき
+みやま,かずこ
+たかはし,あけみ
+しらおがわ,やすし
+なかむら,ただひろ
+まつざき,じゅんじ
+やました,あゆみ
+しもやま,ひろし
+ふたむら,ちはる
+くわ,たかはる
+なかむら,すすむ
+よこやま,かずひこ
+ひるま,てつろ
+たちかわ,ひろゆき
+わかばやし,まさこ
+たかはた,ゆかり
+あべ,しんいち
+せき,ひでし
+やまざき,よしひろ
+やまね,じゅにち
+たざわ,ゆきまさ
+かじかわ,かおり
+さとう,まさと
+かわうち,らいた
+おひゃま,あそか
+しんみょ,きいちろう
+たちわだ,たかよし
+おくぼ,しげる
+とご,のぶゆき
+ながくら,たかし
+いとう,としみつ
+やまざき,ひろあき
+かざま,ゆきこ
+かんばやし,なおみ
+ささの,てるみ
+かわしま,とも
+しんぐう,えみこ
+こいずみ,りゅご
+かねこ,ひとし
+こばやし,よしひろ
+かもした,じゅんじ
+たむら,あさこ
+はせがわ,まさひろ
+くりはら,まりえ
+かなおか,のぶこ
+こばやし,じゅんこ
+ひいし,なおみ
+にへい,てつや
+まるた,ひろゆき
+とひゃま,たかはる
+せきざわ,けんそう
+ありま,せい
+くりはら,はるゆき
+すみの,ひでお
+よしだ,めいこ
+きのした,みゆき
+おちあい,のりあき
+うまやはら,たくや
+ほそかわ,よしみ
+ふかがわ,すえつぐ
+かわむら,しゅいち
+まつい,さちよ
+よしもと,たかし
+うなかみ,ひろふみ
+かねまつ,ひろし
+かわかみ,ゆきたか
+とよだ,たかゆき
+やの,いくこ
+せき,なおこ
+なかにし,なみ
+はしもと,ちか
+ふかや,やよい
+みやもと,ともえ
+たけだ,みのる
+みやざわ,ひでき
+いけだ,ともこ
+おしま,みゆき
+なかむら,やすみ
+ごと,ひろこ
+うしごめ,しんじ
+くわやま,えいぞ
+つかだ,けいこ
+むらた,たかひろ
+さとう,ともこ
+くろだ,さきこ
+すぎもと,まこと
+やすだ,ひでお
+きうち,あきひこ
+けどういん,たかあき
+たなか,ひとし
+なかむら,あき
+くりはら,くにあき
+たきざわ,ひでくに
+うえだ,としふみ
+こべ,みきお
+のぐち,かずひこ
+この,ひろし
+とみた,えりこ
+おた,ゆういちろう
+まき,ひろし
+あまの,ひろあき
+こみね,ちはる
+さとう,ちかお
+いまで,よしたか
+まつなが,かおり
+すずき,くにお
+まつお,こういち
+さいとう,さとし
+よしざわ,じゅにち
+うやま,ちか
+あんどう,ひろあき
+すずき,とよひこ
+よしだ,かずのり
+かわだ,ひであき
+ふくだ,ひであき
+もりしま,ふみお
+つちだ,ともひこ
+さかい,かなめ
+つかだ,ゆきこ
+はっとり,ひかる
+たむら,けんいちろ
+わたなべ,あきひろ
+こすぎ,ともや
+ひらた,ゆうじ
+すぎやま,たつや
+もりかわ,たけし
+かどた,かえ
+さの,きょいち
+おざき,わたる
+よこまつ,けいこ
+たなか,まさひこ
+いしさか,さとし
+いしざわ,かずとし
+こばやし,えみこ
+よしだ,けい
+きむら,まさし
+おつか,とうる
+あだち,みちやす
+あかさか,あつし
+みやもと,ひろし
+いちむら,こうじ
+おした,なおき
+ほんだ,たかあき
+かやぬま,けいた
+のざき,よしゆき
+かどわき,もとはる
+おじ,あきひろ
+たぐち,ひろし
+たけいし,てつお
+ひらい,かつひさ
+かなざわ,ゆみこ
+ふるかわ,こういちろう
+もりなか,ゆずき
+あらい,じゅん
+たなか,ともあき
+しみず,りえこ
+いちはら,たける
+きたのはら,たかし
+きたお,しょうじ
+もりもと,みどり
+きたむら,かおり
+ささざわ,のぶゆき
+まつおか,おさむ
+こうら,こうじ
+みわ,ゆうじ
+よしおか,ふじえ
+ほり,やすひろ
+さいとう,やすつね
+ながせ,あきと
+もりしま,しんじ
+おわり,じゅにち
+たなか,えりか
+てらむら,まさよ
+こばやし,としあき
+さいとう,よしのり
+きむら,よしゆき
+はしもと,まさる
+なかがわ,ひでひろ
+なかむら,ともひと
+はぎわら,ひでき
+にしかわ,りかこ
+きたじま,たけし
+たかうら,なおこ
+あさだ,たかひろ
+きたずめ,ひろこ
+ねもと,ひろこ
+たなか,ゆみこ
+たなか,よしひと
+あだち,ひではる
+はら,ひろか
+あかまつ,まきこ
+いまむら,みき
+むらやま,としまさ
+たけうち,きょぞ
+ずし,ひろのり
+こばやし,たけし
+やまざき,よしひさ
+はまぐち,てつや
+かげやま,まさおき
+かなもり,くにひこ
+かとり,ともみ
+あらい,こういち
+みやた,やすお
+すずき,ひでよ
+はるた,あらた
+なかざわ,わかこ
+すが,まさひこ
+まえでら,かずひろ
+あらまき,かずひこ
+きたの,まさゆき
+よしの,けんご
+みくりや,あつし
+おくのぎ,よじ
+さくらい,たかゆき
+こんど,やすお
+すずき,かほ
+くりはら,あつこ
+むこうぐち,そいち
+ふじい,ひろゆき
+かげ,ひでき
+まえだ,つよし
+ながほり,しょへい
+つじ,まりこ
+きむら,えみこ
+まつお,ひでや
+たての,たかし
+きむら,まさゆき
+すざき,てるゆき
+いわさき,あつし
+さとう,たつや
+にった,しげみつ
+たなか,ようこ
+しまだ,けんじ
+たにぐち,よしかつ
+ほんだ,なお
+なかたに,のりこ
+みやじま,くみこ
+くきやま,まき
+せきね,あきひろ
+よしはら,ゆうこ
+ひらた,のぶや
+ながさわ,ゆきこ
+なかがき,ももこ
+くろかわ,しんたろう
+かけたり,こういち
+いとう,のりよし
+まえかわ,まこと
+まつだ,たつや
+くわはら,みやび
+いいずか,ゆり
+まじま,だいかん
+むらた,まり
+あきいけ,あかね
+なみき,のりこ
+よしの,すなお
+すずき,たかし
+たむら,しゅん
+かめだ,こうじ
+にし,りょたろう
+いなおか,さとる
+いわさき,まさかず
+かんだ,としお
+ただ,けいこ
+うつ,やすゆき
+しまだ,けんじろ
+よしだ,かよこ
+おくがわ,じゅんじ
+すずき,あきお
+たんぽ,まこと
+わだ,わかこ
+うるしはら,ひでゆき
+いいお,ともこ
+にいはら,ゆういち
+おむら,てつや
+いのうえ,みきこ
+もりなが,ゆき
+さの,みどり
+なかたに,しんや
+あべ,やすし
+うちだ,けんじ
+ひろた,ゆうじ
+いわくら,なみ
+いしおか,えいき
+ときた,ともあき
+きのした,まさお
+みずの,ひろゆき
+やすえ,よしふみ
+いわもと,けいこ
+やまじ,みねこ
+こさい,なおこ
+くぼ,えいすけ
+ちば,たろう
+やつたに,きょこ
+いがらし,たくや
+あらかわ,ぜんじろ
+てらさき,としひろ
+せごえ,ひろし
+とくしま,まさやす
+ばんど,まさなお
+たきざわ,けんじ
+みずさき,ゆさく
+たきぐち,かいじろ
+ひおき,ひであき
+なかい,なつこ
+おいかわ,なおすけ
+まつむら,あいこ
+えんど,まさみ
+たじま,さとる
+やまざき,ゆかり
+せのお,ゆうこ
+はらだ,としえ
+ふくい,ひかる
+まつうら,あつし
+かわむら,たかずみ
+てらもと,あかね
+はぎわら,もとあき
+なかしま,さとこ
+きのした,まさこ
+あらい,しょこ
+むらやま,けんじ
+さえぐさ,けんたろうう
+たなか,けい
+まえだ,まさし
+みやざき,あつみ
+いけべ,れいこ
+くわばら,ちぐさ
+よだ,よしお
+たちばな,さとこ
+やまぐち,えいじ
+いしはら,こうじ
+たきざわ,としまさ
+ひらの,ともか
+かわさき,けい
+やまもと,ゆういち
+あらせ,たかみち
+やなぎさわ,たくみ
+しおや,えみこ
+さとう,みちお
+かとう,ちずる
+おの,じゅんこ
+きたはま,ともみ
+ごと,みつこ
+にのみや,おさむ
+うすい,かずみ
+みずしま,あきら
+すどう,たかのり
+いけだ,たかお
+なかひがし,やすあき
+くりもと,よしあき
+とだ,けいこ
+はかまた,まさあき
+たにぐち,よしぶみ
+いまぜき,たかよし
+ほりお,ひさとし
+かすが,あつし
+かわせ,まさのぶ
+さとう,あきえ
+たかなし,こういちろう
+まつした,ひとみ
+やぐち,よしたか
+かねこ,やすまさ
+ひだか,のりこ
+さっさ,まゆみ
+そが,とものり
+すぎうら,たける
+さとう,まこと
+たにばやし,あきこ
+にしおか,ありしげ
+ともなが,ろわる
+おはし,ひろたか
+ながしま,あつのぶ
+たにがき,はるみ
+こうだ,いくこ
+きよの,まゆみ
+やまかわ,つよし
+なかじま,なおこ
+もてぎ,ひろみ
+おぬま,のぶあき
+さとう,たかし
+ふるいえ,ひでき
+あいもと,かずゆき
+よこお,みお
+にしかわ,たいち
+びと,たくや
+きたむら,けんたろう
+やまかわ,あみこ
+とみた,さちこ
+つちだ,たかし
+いしぐろ,なおき
+まつお,ひでき
+うえもと,せいた
+いいだ,せいこ
+すずき,こみな
+たむら,さとし
+おくだ,としお
+ほり,ひろし
+くさつぐ,こうじ
+やまだ,ゆたか
+あさはら,しげお
+とくだ,よしこ
+いでた,もとふみ
+いとう,くにお
+さとう,けんじ
+つじさわ,よしなが
+おの,しんや
+いわま,さだはる
+だいごく,たけし
+やまむら,ひでと
+はせがわ,りえ
+いぎ,とおる
+まかべ,こういちろ
+おかもと,みきこ
+おはら,しげひろ
+せきやま,かずよし
+きたじま,のぼる
+とりうみ,よしみ
+みやざき,やすし
+うい,まさなお
+くらもち,たかひろ
+しおぬま,まんなり
+らいた,よしひろ
+しもこべ,てるみち
+さわの,きいちろう
+さかにし,けい
+ささき,こうじ
+せいの,のぶあき
+すずき,じゅにち
+さかもと,よしかず
+すずき,としかず
+さわの,たかひろ
+しが,まさかつ
+ごと,かつお
+すだ,ゆきなお
+すずき,かずお
+さかきばら,ひろあき
+さとう,まさひろ
+さかぐち,たてお
+すぎさき,よしひと
+すえき,かずひろ
+すずき,ひでとし
+しばた,いくお
+すぎやま,のぶかず
+さかい,てるお
+しみず,ゆうじ
+すぎもと,としお
+さとう,けいぞ
+せき,あきよし
+さくらい,としお
+せきぐち,しろ
+さとう,かつや
+すずき,てつや
+さいとう,とくまさ
+せきね,じゅんじ
+すずき,よしこ
+いいだ,としお
+すずき,けんじ
+ささき,よしのり
+すえなが,みつくに
+さかもと,たかし
+さいとう,のぶあき
+すがお,ことじ
+しまず,ただお
+さいとう,まさゆき
+しのざき,ただし
+すずき,としお
+すなが,たくじ
+さとう,おさむ
+すずき,はるゆき
+せきね,こすけ
+ささき,えいじ
+さわだ,ゆのすけ
+さいとう,ただお
+しもぞの,とよふみ
+すえ,つとむ
+さどとも,きよたか
+せきね,ひろし
+さとう,みつお
+さんご,としお
+すどう,ひであき
+そのだ,まさみ
+しま,てつじ
+さとう,みのる
+さとう,ふみお
+しぶや,あきら
+さとう,よしゆき
+さとう,けん
+さかた,おさむ
+さいとう,けいたろう
+すわき,さだのり
+そり,としお
+さかもと,あきら
+しらいし,かずお
+すずき,ただひこ
+しまだ,たかし
+すずき,あきら
+すずき,けんすけ
+さとう,さとし
+すずき,よしのぶ
+さとう,くにあき
+しげまつ,なおみ
+さがら,みのる
+さいとう,よねぞ
+しんぐ,とみお
+すがぬま,かずあき
+そが,かずお
+ささき,てるひこ
+さとう,よねお
+さわだ,おさむ
+そま,たかし
+しばた,たけじ
+さとう,しゅにち
+さとう,まさとし
+しまだ,あきお
+ささき,としお
+さとう,まさひろ
+さいとう,よしお
+しもで,はじめ
+ささき,きよし
+さとう,つとむ
+さとう,きよし
+さわだ,たかとし
+しろさき,ゆきお
+しばい,たかお
+さいとう,てるのぶ
+すずき,たけし
+そがべ,のぶゆき
+せがわ,しげる
+しみず,てつお
+すずき,おさむ
+しろやま,たけお
+しいな,みちこ
+さやま,きよし
+さかもと,ひでお
+さとう,のぶお
+すずき,けんじ
+すずき,しげる
+ささせ,ひでき
+さくらい,としお
+しまだ,よ
+さとう,ひさお
+しもの,しんいち
+すずき,よひち
+すぎもと,すすむ
+しみず,みちお
+さの,としお
+すずき,いさお
+しまだ,ちひろ
+すずき,みのる
+すぎふじ,よじろ
+さかい,よしひこ
+さかぐち,よしお
+すがわら,まもる
+しのずか,まこと
+しが,ひろし
+さかがみ,ただよし
+すずき,てつろ
+すぎの,かつゆき
+すぎうら,まさき
+しみず,せいじ
+すずき,かつひろ
+ささこ,よすけ
+せき,よしなり
+さとう,まさお
+しま,たけお
+すずき,よしのぶ
+さかもと,こへい
+ささき,かずひこ
+しまだ,はるひさ
+さいとう,ひとし
+しおた,しんいち
+しおだ,えいじ
+すだ,だいさく
+しいな,じゅにち
+しおのや,みつお
+さいしょ,とよま
+そいだ,かずゆき
+そま,ひでお
+さとう,すすむ
+さとう,かずみ
+しおばら,たけしげ
+ささおか,せいぞ
+ささき,ゆきよし
+せと,たつじ
+しゅど,ひろし
+さかもと,きよてる
+さくま,よしかず
+しのざわ,ひろし
+しおばら,いそじ
+さくらい,ただひさ
+さとう,とよお
+さくらい,いさむ
+ささべ,えいじ
+さとう,けんぞ
+すぎうら,てつお
+さかい,やすひろ
+そま,えいいち
+そひゃ,かんじ
+そねかつ,ひろし
+せきね,たけみち
+すずき,きよえ
+せきね,よしたか
+さかきばら,みつのぶ
+しもかわべ,ふみお
+さわむら,たかお
+せき,ひろし
+すずき,たかし
+さかまき,つよし
+さがわ,ひろゆき
+すぎやま,ゆずる
+すぎもと,めぐむ
+せお,としお
+さいとう,ひろし
+さかい,りゅぞ
+さくらい,ゆぞ
+せきね,まさお
+さとう,のぶお
+しみず,せいじ
+しみず,あきら
+さいとう,たけお
+さくらい,のりお
+すぎやま,としつぐ
+しずか,かずとし
+しらかわ,けん
+さいとう,なるみ
+さきもり,じゅにち
+さとう,こずえ
+せきぐち,ひであき
+せきね,としひさ
+しばた,たけゆき
+すずき,こ
+さいとう,ゆうじ
+さとう,たかし
+せきね,みきお
+さかい,ただひろ
+ささお,まさのり
+すどう,はつみ
+もり,たかし
+しみず,としお
+さとう,まさお
+すずき,まさあき
+しむら,やすお
+しばさき,ひさなお
+すがまた,あきら
+すずき,ゆずる
+しおのや,いわお
+たかはし,てつお
+つきやま,おきとし
+つのだ,のりこ
+たかはし,こうじろ
+とくざわ,たかひろ
+たぐち,ひさお
+たかぎ,のりお
+たかの,おさむ
+たはら,はるひこ
+とよさわ,しんじ
+とよます,まこと
+たかはし,しょじ
+たけうち,えいぞ
+たきいし,てるお
+たかいし,いさお
+たかさき,ひろとし
+たにがわ,ひろし
+たかはし,かずお
+たなはし,ひろし
+たまき,きよかず
+とば,としろ
+たばた,きくお
+つじ,よしき
+たなか,なおと
+たかはし,もりはる
+とくなが,まさお
+たぐち,ひでお
+たきざわ,てるみつ
+とみ,きよかず
+つじ,こういち
+うちだ,けいいち
+たなか,まさのぶ
+つねよし,ていじ
+たかの,りょじ
+たかはし,しげお
+たかやなぎ,けんじ
+たけだ,ひろゆき
+たぼ,まさとし
+たなか,こうじ
+たけうち,ひろし
+たかやす,まさし
+つちや,たかし
+とくなが,たかお
+つちだ,あつし
+つぼい,まさのり
+たかはし,きみお
+つかもと,まさお
+たなか,かつしげ
+ともつね,たねまさ
+ちじ,けいこ
+さとう,としお
+たかた,いわお
+とはた,のりかず
+たかはし,むねお
+たかはま,ゆきち
+てらさわ,よいち
+たかばやし,けいすけ
+てらだ,ゆたか
+つかだ,かずお
+たなか,まさき
+とりまる,とよみ
+つちだ,ゆはつ
+たきもと,けんじ
+たきい,なおかた
+たねだ,えいえつ
+たむら,まさしげ
+たどころ,さだむ
+たかお,しげる
+たなか,すすむ
+たかはし,としはる
+たかはし,せいじ
+たかはし,つねお
+とみた,よしみ
+たかはし,みのる
+たにぐち,よしあき
+たなか,なおこ
+つぼい,しょじ
+たけうち,しゅじ
+つだ,せいじ
+たけだ,ひでお
+たけい,たみお
+つじかわ,まもる
+たけむら,としひこ
+たき,ひであき
+たかだ,けんじ
+たきざわ,よしのり
+たなか,ひさお
+たにむら,ますみ
+よしざわ,ひかる
+つねかわ,はつお
+たなか,しげゆき
+たかだ,ふじお
+つる,とおる
+たに,あつのり
+たぐち,みちあき
+たなか,ゆぞ
+たにぐち,ひろみ
+たなか,ほぶん
+つじ,とよし
+たなか,まさゆき
+つゆき,しげお
+たまる,ゆういち
+つちや,せいじゅ
+つるおか,まさあき
+たかはし,まさあき
+たかはし,しげる
+とふくじ,まさじ
+たなか,たけよし
+たかぎ,まさはる
+たかはし,たろう
+たにぐち,ひろし
+とよだ,かつお
+たかぎ,あきら
+たけい,まさひろ
+つだ,いさお
+つねひろ,じゅんぞ
+たきざわ,かずひろ
+たちばな,のりみつ
+たかはし,ゆひち
+たにぐち,かつみ
+たけだ,ひさお
+つちや,まさみ
+たかはし,けいじ
+たのうえ,のぶお
+たかばたけ,てつお
+たかはし,みつこ
+ふなき,としお
+たけだ,おきつぐ
+とくなが,きょこ
+あさい,よしひさ
+たかはし,りょじ
+たかはし,ひとし
+たがわ,たけし
+たなか,しげる
+たちかわ,ふみお
+たぐち,じゅんじ
+たかさき,としお
+たまおき,ごいち
+たなか,かつゆき
+たかの,こすけ
+たけうち,かずと
+つだ,けんいち
+たかなみ,としあき
+つきなわ,ひこさぶろ
+とみもり,まさのぶ
+たけだ,またさぶろ
+とがし,てるやす
+つずき,かつまさ
+とびた,たつ
+ともなが,ゆうじ
+つつい,みきこ
+たかぎ,のりお
+たにぐち,しょひち
+たかの,のぶゆき
+たなか,たけし
+とまつり,かずよし
+たかぎ,あきら
+たかしま,しずお
+たはら,せいいちろう
+たなか,しん
+たかだ,しげる
+とりい,せんじ
+たけべ,まさる
+つかもと,よしなお
+たむら,すすむ
+とみなが,とおる
+たかいわ,てつひこ
+たばた,しげとし
+たかはし,のぶあき
+てんぽりん,つねかず
+てらうち,しげあき
+たかはし,じゅんじ
+たかせ,かずとし
+たけむら,としひろ
+たむかい,さとし
+たかはし,しろ
+たけつ,いつお
+たのおか,ふみお
+たかはし,よしあき
+とひゃま,かずこ
+たけうち,よしお
+たかはし,みつゆき
+うしお,のぶゆき
+うすぎ,あきお
+うちやま,のぶひろ
+うめだ,さかえ
+うけもり,さとし
+うちだ,けんじ
+うえだ,くにお
+うちだ,そひち
+うつき,さだゆき
+うえだ,きよし
+うちだ,ちから
+うえはら,もとい
+うえむら,ふみお
+うちだ,ゆうじ
+うちむら,かつじ
+うちだ,すすむ
+うちだ,ただし
+うえき,きよのぶ
+うかじ,あつし
+うちだ,まさお
+うえむら,ゆずる
+うしお,かずひろ
+うめむら,よいち
+うめしま,かずすけ
+うこん,まさな
+うちいけ,みちや
+うるしの,ひさお
+うちなし,けいじ
+うぐさ,てつお
+うの,みきひこ
+うえき,ひでき
+うえもと,しゅ
+うえむら,のぶや
+うえはら,さだゆき
+うえだ,けいいち
+わたなべ,けんすけ
+わたなべ,けいいち
+わたなべ,あきこ
+わかむら,まさてる
+わたなべ,まさあき
+わたなべ,ひでお
+わたなべ,とくじ
+わたなべ,としお
+わたなべ,りきつぐ
+わたなべ,かおる
+わたなべ,じゅにち
+わたなべ,たかあき
+わきた,へいた
+わたなべ,まさゆき
+わたなべ,としひで
+わたなべ,みのる
+わたなべ,けん
+わたなべ,ゆきお
+わたなべ,ひろし
+わだ,しんぺい
+わたなべ,ひさゆき
+わだ,かつみ
+わだ,きんや
+わたなべ,やすろ
+わたなべ,ひでじ
+わたなべ,よしたか
+わかばやし,ひろはる
+わたなべ,かつなり
+おた,ひでお
+ふじわら,かつひこ
+こいけ,やすあき
+かたおか,ただし
+ひろしげ,こめい
+しんざわ,ときお
+みずかみ,こんご
+なかじま,あきら
+ふくしま,おさむ
+なか,けんじ
+ひらやま,すみただ
+にわやま,やすし
+しみず,たつひこ
+ふるさわ,たけみつ
+さくらい,ほまれ
+たけなか,まさあき
+すぎうら,あきら
+かとう,しげあき
+ほしかわ,みねお
+おがわ,ひさお
+かしわぎ,まこと
+さかい,すみあき
+もり,みちお
+ほんぼ,てつや
+いいじま,きよし
+こじま,ひろし
+たかはし,まさみつ
+はた,けいいち
+おがわ,しげき
+つちや,ひろし
+こやま,まさこ
+ふるみ,かつじ
+くめ,そじろ
+くらた,つよし
+うしじま,みずほ
+えばと,あつのぶ
+さとう,かよこ
+むしゃ,けんじ
+ゆあさ,まさお
+きくち,いさお
+まつばやし,こ
+まつい,ひろこ
+たけむら,はるお
+てらしま,のぶゆき
+くら,よしあき
+まつい,たかお
+うえだ,のぼる
+はやし,しょすけ
+かわな,あきのり
+はやし,かつや
+でもと,いさお
+しぶき,てつお
+はま,つねお
+えんど,せつお
+みやもと,まさかず
+まつだ,かつのり
+やまもと,のぶゆき
+むらかみ,なおひこ
+おかだ,まもる
+わたなべ,なおき
+いわさき,てるよし
+よしだ,あきら
+おもり,ひろし
+みずたに,よすけ
+すぎうら,ひでくに
+のなか,よしお
+わたなべ,いさお
+さいとう,しんいち
+おかわら,だいじろ
+かどいけ,かずお
+まつもと,まさひろ
+なか,たけし
+かとう,たつお
+かわいし,こざぶろ
+ながさわ,たかひさ
+すやま,ひろし
+くましろ,ともこ
+たかばやし,しげお
+こんど,だいきち
+いなば,かずゆき
+こばやし,あきよ
+やまぐち,すみゆき
+すずき,まさのり
+あきやま,ひさえ
+たかだ,かずお
+さわい,みつたか
+なかた,いさむ
+いたば,たけお
+くにぎた,げんたろう
+やまだ,たけただ
+やまだ,のりかず
+たかはし,たかお
+うめむら,けんぞ
+こばやし,ゆうこ
+かねみつ,つとむ
+なかがわ,くんろ
+きど,ひろし
+かねき,ひでお
+こむら,けんぞ
+ふじもり,さとる
+やました,としひろ
+くりやま,みかこ
+とざわ,ゆうじ
+いしい,ゆたか
+たかはし,あきら
+たなか,まさひこ
+いしざき,きよゆき
+はらだ,ゆひち
+とくひさ,よひち
+いしむら,ようこ
+うえだ,ゆうこ
+おふち,よいちろう
+やつるぎ,のりひこ
+みなと,のぶあき
+よしだ,ただお
+みなみ,よざぶ
+おか,まさし
+いちかわ,ただお
+おくぼ,まさひろ
+いしだ,けんいち
+とみた,てるたけ
+ひらおか,まさひろ
+かとう,たかし
+おむら,ちかとし
+おさじま,よひち
+ふなこし,かずみ
+こだ,てつお
+あさおか,まさひろ
+かすが,しげやす
+ももはら,ただひろ
+うえむら,たかし
+おばた,くにひろ
+おのだ,みつお
+みやした,まゆみ
+ほそや,まさひろ
+やしろ,やすお
+わたなべ,あきお
+きむら,かずお
+かみじょ,ひでき
+さとう,ひろゆき
+まつしま,いさお
+かたやま,ひろひさ
+ひらの,ひでお
+なからい,むつお
+よこやま,としや
+おがね,せつお
+きむら,ひであき
+のざさ,たつお
+もりの,あけみ
+えちごや,ぶにち
+ふくしま,としひで
+いとう,かずこ
+いけだ,ゆきお
+とくなが,かんじ
+きもと,やすお
+おしだ,ゆきお
+はしもと,あつし
+のぐち,ときち
+みやべ,ひさえ
+くわはら,よしおき
+きむら,あきら
+おだ,ようこ
+あいざわ,ごへい
+うえの,だいすけ
+まつばら,ひさお
+たまい,ともひろ
+しらい,まこと
+おはし,よしのり
+たみや,かずしげ
+はらだ,みちひこ
+うすい,ひでお
+こり,まさゆき
+のだ,ゆきこ
+なみき,りえ
+なかお,あいこ
+かどや,さとこ
+おの,のりかず
+しぶかわ,としのり
+いわさわ,かずと
+たぶせ,やすえ
+おさわ,ひろみ
+なかだい,かずゆき
+えがしら,たみお
+ささき,かつお
+ふくち,のりゆき
+よしやす,かずみち
+わたなべ,よしお
+うえの,こうじ
+えと,ふみや
+よしだ,よしこ
+たけい,たかし
+はやし,こういちろ
+またき,しげひこ
+もりもと,まさと
+いはら,まさみつ
+つかはら,あきら
+かの,としひで
+むねゆき,しんいち
+おつぼ,まなぶ
+やまもり,いちろう
+あんどう,たかよし
+やまざき,けんじ
+たきもと,ひろゆき
+たけむら,かつお
+むらかみ,かずひこ
+たかた,ご
+ひろせ,こさと
+やくわ,れいこ
+しんぐりょ,まさのり
+たち,まさお
+さとう,ゆひち
+やまもと,ひさし
+すどう,しんご
+ほんま,いちろう
+おつぼ,けんじ
+かざま,てるお
+あがわ,ともこ
+いのうえ,ひでまさ
+あらい,よしたか
+うえむら,かつお
+にしくら,せいき
+みやざき,よしあき
+ふくだ,よひち
+つりや,なおかず
+たなか,まこと
+おがわ,のりお
+すずき,つたひろ
+はまぐち,たかし
+かめだ,ようこ
+ももはら,まさし
+ひらお,かずお
+たかだ,まさひろ
+いけだ,しょこ
+すずき,ひろき
+たかはし,としお
+たなか,みつひろ
+せら,みほこ
+たけむら,りゅひち
+ほりきり,まさち
+いけだ,ゆたか
+あらき,まさひろ
+おつか,よしかず
+くにまつ,もりまさ
+うしば,ただお
+はやし,ひろかず
+いしい,こうじ
+かだ,みのる
+やぎ,たくじ
+ひらい,かつや
+くろせ,ひでお
+おかべ,たかこ
+かねこ,なおゆき
+こじま,よしひろ
+にしより,あきら
+なかじょ,かずよし
+はしくら,じろ
+たかはし,たいち
+うえくさ,としあき
+しばた,まもる
+たかはし,みのる
+いなば,せきね
+じゅにちろ,かずいちろう
+はやかわ,せいざぶろ
+いとう,たかし
+きもと,まさと
+いだ,みきお
+ほじょ,あきら
+ほりい,ただお
+かいせ,こういちろう
+はしもと,ひろし
+すずき,いさむ
+かねさか,としゆき
+やまぐち,さとる
+すずき,みのる
+すどう,じろ
+おば,つとむ
+むらた,たつお
+あきやま,のぶあき
+あすま,ひろし
+かわじり,てるお
+まつもと,かずと
+しろやま,あきのり
+ふじい,ひでお
+ごと,たけし
+たにあい,まさつぐ
+かつぼり,ひろし
+ひあて,かつひこ
+てらい,つねお
+はんだ,あつし
+みしま,やすあき
+たかしま,ひとし
+まつだ,よしお
+こんど,ゆうじ
+いたや,まさかず
+まつもと,まさひこ
+いいやま,みほこ
+じっと,としこ
+くぼた,まさし
+いしぐろ,たけお
+もり,ひでお
+かんの,きょじ
+いとう,こ
+よしだ,あつこ
+まるやま,だいすけ
+さとう,やすまさ
+こだ,まき
+わたに,くみこ
+させ,あきこ
+そとやま,まさこ
+ほんだ,ひろみ
+いぬい,かずみ
+すずき,あきら
+こにし,のりこ
+すぎい,けんじ
+あらき,なおたけ
+ひらおか,ひでお
+おつか,かつひろ
+かとう,さちこ
+しおの,えいじ
+かたやま,うつみ
+ふちかみ,さちこ
+ひらき,せいじ
+いわさき,りゅじ
+えのき,くにお
+いわた,なほ
+しゅと,よじ
+とひゃま,まもる
+こいで,いくお
+たなべ,かつのり
+やまもと,てるくに
+かいはつ,ゆたか
+あらい,よしのり
+うえだ,よしのぶ
+くらおか,ゆきひさ
+こばやし,のぶお
+ためちか,やすし
+よしだ,むつお
+まつもと,しげお
+さかした,ひろし
+わだ,ひろのり
+いとう,たけひこ
+よしだ,たもつ
+よねだ,きみお
+おむら,じゅん
+たかぎ,せいいち
+うちやま,ただし
+かしわぎ,まつのり
+にしだ,じゅんざぶろ
+おしか,ゆうじろ
+えじま,しゅにち
+おか,せいし
+よしだ,かつじ
+いまい,ゆぞ
+やまみち,そういちろう
+あいもの,えつひろ
+ひの,たてお
+たかはし,しずお
+よこた,しげる
+いのう,かねお
+よしだ,としあき
+よしおか,やすお
+うめざわ,かつじ
+てらお,としひで
+かわはら,まさみ
+はせがわ,しちろ
+きし,あきこ
+はしずめ,けいこ
+よしだ,せつお
+みねふじ,たけお
+ほんだ,とものり
+たかさわ,けんいち
+おはし,やすえ
+かがわ,やすしろ
+にしだ,ともこ
+いたがき,かつお
+あきやま,もとこ
+さいとう,みさこ
+おちり,えいこ
+のざわ,たえこ
+さいとう,ひろこ
+きむら,あきこ
+あべ,うきこ
+くすのき,ひろひさ
+はやし,はるお
+おひ,みのる
+かみおか,てるこ
+あきやま,みつひろ
+ありた,めぐみ
+きたむら,なおこ
+ますむら,ゆみ
+おさわ,みゆき
+かわい,ようこ
+いたがき,ちか
+もり,まり
+あおき,あきこ
+ふじしろ,のりひろ
+しみず,こひょ
+むらかみ,やすひろ
+なかじま,こうじ
+もぎ,けんじ
+みうら,ちえ
+たかまつ,なおと
+たかだ,ともこ
+こんど,やすひろ
+なかじま,なおみ
+ねれい,はるよし
+うしく,いさお
+きたざわ,かつみ
+さっさ,みちゆき
+いっしき,たかのり
+かわの,けん
+いしはら,みのる
+かめおか,ひでお
+きうち,たかお
+ながい,みきお
+のぐち,こうじ
+おした,もとしげ
+よしむら,みよし
+あかほり,てつお
+まるなが,あきお
+よしの,かずお
+やの,けんじ
+やまぐち,しょひち
+やまぐち,まさこ
+せんどだ,ひとし
+やすだ,ひろし
+よこえ,おさむ
+やました,こ
+よしだ,のぶひろ
+やました,よしひろ
+やすい,のりつぐ
+やまおか,ふみたか
+よこせ,ただお
+やまぐち,のりかず
+やはぎ,ひとし
+やまおか,みちお
+よつや,たかお
+やまもと,としみち
+よしかわ,みつのぶ
+やました,よしつぐ
+やまおか,こうたろう
+よねみつ,よしひろ
+よしだ,まさひで
+やまざき,かつとし
+やまもと,まさる
+やまぐち,あきら
+やまうち,じゅにち
+よしざわ,せいざぶろ
+よしおか,とみぞ
+やまもと,すすむ
+やまおか,かずお
+やまざき,きょすけ
+よしむら,ともしげ
+やすだ,けんじ
+やました,やすはる
+やだ,ひろまる
+よしだ,とおる
+やまもと,じゅんこ
+やまだ,としろ
+よねだ,しょじ
+よしだ,ひろこ
+やまだ,せいじ
+やまぐち,けんいち
+やまぐち,てつお
+やまもと,ひかる
+よしだ,みのる
+やました,さかえ
+やんべ,かつみ
+やまぐち,かつひと
+やまもと,のぶお
+やまね,みちとし
+やまさき,あきら
+やすおか,まさひこ
+やまだ,こうじ
+よしざわ,せいいち
+やじま,しんや
+やない,いちろう
+やまざき,つとむ
+やまうち,ごろ
+やまざき,かおる
+よしの,まさひろ
+やまかげ,くすお
+やぎ,たかふみ
+やすだ,ふみひろ
+やまや,たかこ
+たかぐち,すすむ
+よしだ,しょぞ
+よしの,あつひろ
+やまむら,のりよし
+やぎ,じゅんじ
+やまだ,こうじろ
+ゆかわ,けんたろう
+やまもと,ゆきお
+やまたに,えいぞ
+やまむろ,じろ
+よしだ,あきら
+よこかわ,てつお
+やまざき,かずお
+やまもと,ふくみち
+よしの,すすむ
+やまね,たつゆき
+やすなが,ただのぶ
+やなか,じつのり
+やまね,まさお
+やまうち,のぶお
+やまぐち,のぼる
+やまわき,ひろし
+やまかわ,こうじ
+やまだ,じゅにち
+よこやま,かつのり
+やまもと,こすけ
+やまぐち,まさとし
+やまぐち,じょじ
+よしだ,ひろつぐ
+やまなか,よしかね
+やまもと,としひこ
+よしだ,ともよし
+やまだ,こういち
+やまおか,たけお
+よこやま,きよし
+やまさき,よねたか
+やまもと,あきひろ
+やまかわ,けいいち
+やうち,てつお
+よしはら,よしゆき
+よこみぞ,ゆうじ
+やまもと,しょたろう
+やまもと,じゅにち
+やまもと,かずみ
+よしだ,しょたろう
+よしだ,やそみ
+やすい,のぼる
+やまぐち,たかよし
+やまもと,たかお
+よこた,かずみ
+よしだ,ただはる
+よこやま,たかお
+やすい,さとる
+やまさき,よしとも
+よしおか,まさひさ
+よしだ,のりお
+やまだ,かつひこ
+やまもと,まさよし
+よしだ,ただよし
+やまざき,かつじ
+やまね,しげる
+ゆたに,しゅぞ
+よねざわ,てるお
+よしの,えいいちろう
+よしだ,まさひろ
+よしもり,ふみひろ
+よしわら,みのる
+やまだ,しげる
+よしだ,あきら
+よしだ,えいいち
+やまもと,ゆたか
+こじま,ひでき
+おの,かずもと
+まえかわ,かずひろ
+この,のぶお
+まきせ,しゅんろく
+のむら,かつひろ
+やすはら,よじ
+ながしま,せいぞ
+きたはし,せいしろ
+つる,なおじ
+つくだ,すすむ
+てらうち,よしひろ
+やまだ,だいすけ
+せんば,たけお
+さえき,ひさとよ
+おかだ,たけし
+みやうち,としき
+こんど,としかず
+ふきあげ,むつお
+いしかわ,もりひこ
+いわもと,くにかつ
+くぼ,しげお
+たなか,こうたろう
+わだ,のぶゆき
+いわお,きよし
+くまがい,まさたか
+すずき,まさひこ
+たかむら,あつよし
+にしうら,まさお
+みつじ,きよみち
+たききた,みちお
+おうち,たけし
+こま,さとる
+ますだ,すすむ
+かとう,のりお
+いいずか,しょひち
+まるやま,ひさお
+としたに,としお
+はなぶち,やすお
+いまい,ちよたけ
+おかひろ,まさお
+きむら,じゅにちろ
+たじま,ひろかつ
+かんだ,のりお
+どい,つねのり
+あらがき,たかひろ
+きゅそじん,ひろふみ
+たけうち,ひろし
+うぬま,せいいちろう
+やまぐち,まさし
+よもり,あきら
+しまざき,けんじ
+とくや,あきお
+やまだ,けんじ
+ふかや,としろ
+えぐち,かずひこ
+さの,のぶあき
+とくの,とおる
+おとも,まさひろ
+しらおがわ,まさぞ
+ひらの,つねお
+おだ,としひこ
+たなか,まさはる
+ふじた,つらゆき
+あらい,おさむ
+ふじた,やすのぶ
+なかがわ,けんすけ
+なかにし,つねよ
+はら,ひでなり
+ちば,よしたか
+いしわた,もとひさ
+やぐち,くにひこ
+てじま,としお
+たつた,あきら
+くさか,しげお
+ふるた,はるお
+ごと,ひでのぶ
+おだぎり,あきら
+すずき,さだむ
+くまがい,ひろし
+むらかみ,たいき
+みむら,ゆうじ
+よこい,りょぞ
+いなげ,あきら
+あめみや,あきひで
+いのうえ,ゆうじ
+ぬまた,ひろゆき
+さかもと,かずしげ
+ひらまつ,あきひろ
+なりた,としこ
+つねみ,としひさ
+たかしま,たけひろ
+みす,かずお
+さきやま,しげる
+ふじわら,たけし
+とみた,たけはる
+つなわき,まさのぶ
+はせがわ,ただし
+ふくざわ,だぇ
+ごえけ,たける
+なか,みずほ
+えばと,まさお
+こばやし,くにひこ
+ひらつか,ともゆき
+さとう,みつお
+いのうえ,さだお
+はすぬま,じにち
+ふるはた,ごへい
+うえの,さだお
+たけなか,かおる
+くにたけ,いちろう
+ひらた,ふさひこ
+はせがわ,かずみ
+ふくはら,よしひこ
+ふなぐち,ただし
+あまの,まさひろ
+おの,みねお
+すわ,たけし
+のがみ,ゆぞ
+うめの,あきら
+いけの,まさひろ
+なかじま,けいこ
+いしい,しんいちろう
+さいとう,きよし
+たなか,のぶお
+たていし,あきら さとし
+すずき,まさお
+きのした,あさこ
+おさわ,あつし
+いで,まさひろ
+おがわ,よしお
+えのもと,ゆうこ
+おざわ,げん
+はたけやま,あつし
+いいだ,とおる
+しのざき,のりこ
+おかだ,みずのり
+たかま,のりこ
+やぎ,みか
+さかい,やすゆき
+しみず,ゆうこ
+ほりかわ,はなこ
+ながお,きょこ
+ひらいし,ともこ
+さがわ,かずゆき
+はらだ,としかず
+たかはし,よしひこ
+たち,ひかる
+ひえ,よしひろ
+とむら,さきこ
+ただ,しほ
+よしもと,わきこ
+もちずき,みずほ
+たなか,ともひろ
+たぐち,みつあき
+さとう,じゅにち
+さかした,りえこ
+かわしま,まさし
+ほりぐち,ひろゆき
+ふくま,まさよ
+かわたに,こうじ
+じびき,ようこ
+さいとう,こへい
+しおつ,まり
+とばた,たもつ
+やまもと,まさみ
+おふち,りゅいち
+しのはら,まさよ
+やまかわ,きみお
+たむら,まりちゅ
+はたけやま,みなこ
+たなか,ひろこ
+かなざわ,ちひろ
+たかはし,こうじ
+ふじむら,まゆみ
+ながしま,いくお
+きのした,ゆきえ
+こんど,まゆみ
+あんべ,かおり
+さいとう,すみたか
+あさだ,あきら
+きのした,おさむ
+かどや,みつる
+うえだ,いさお
+さいとう,のりかず
+たかはし,まさひこ
+いしざき,ひろみち
+おざわ,のぶお
+はやし,かずただ
+やがわ,としお
+たかはし,たかこ
+とみやま,ひかる
+あだち,ひであき
+あかいわ,えりこ
+かがや,みなこ
+あらい,よしゆき
+おしきり,ときこ
+やまむら,まみ
+たかやま,まなみ
+よこやま,いずみ
+ばん,みき
+いずみ,ふみえ
+みずの,あきこ
+ぶんや,とおる
+てらおか,もに
+みやした,まさひろ
+あさま,しもん
+ささき,てるひさ
+にしお,おさむ
+ふるや,みちお
+いまだ,たみお
+いしはら,よしあき
+はしもと,ゆぞ
+まるやま,しょすけ
+かじ,ゆきのぶ
+かねこ,さおり
+なかだ,たかし
+ちざわ,えいじ
+さわ,としゆき
+とがめ,おさむ
+よしだ,つぐお
+おの,よしのり
+やこ,ただお
+いしかわ,みのる
+ことだ,しょじ
+さがわ,みのる
+のぐち,けいこ
+でんぼ,てつお
+はるき,よりと
+いね,てつお
+おの,ひでゆき
+かねだ,いくえ
+のぐち,みきお
+おば,ともゆき
+おた,かずたか
+しもまき,はなこ
+わたひき,のりひと
+やまもと,なほ
+ふじむら,あさこ
+そうみや,みわこ
+しま,げん
+ささき,ひろこ
+かがわ,まさひこ
+たけうち,あきのり
+さいき,ひろこ
+いとう,かずま
+きむら,かずまさ
+たばた,ひろふみ
+くめ,あきひこ
+たかだ,しょうえい
+たむら,くにお
+たかまつ,たつひこ
+しろした,あきら
+かとう,ひろみつ
+あわい,とくいちろう
+ほさか,やすお
+たなか,ゆうこ
+みひら,まり
+さとう,まりこ
+おざわ,けんじ
+すずき,くみ
+みやざき,たかゆき
+もりたに,れいこ
+いわぐろ,くみこ
+うえま,みよこ
+ふかた,のりこ
+ひろせ,よじ
+おかだ,たかひろ
+かとう,とよあき
+まき,まりこ
+のだ,みえ
+くぼ,まきこ
+にしきおり,しゅさく
+やの,ともゆき
+かわむこう,としのり
+やすむら,のりこ
+とにし,るみ
+やまもと,しゅさく
+しもだ,けいこ
+おたに,ゆきお
+おのさと,けんじ
+かなざわ,りゅぞ
+おかもと,ゆかり
+さいとう,つとむ
+かしわばら,しょこ
+たかはし,ちか
+さいとう,あきこ
+まつだ,ひろみ
+たちざき,ありか
+こんど,さゆり
+しみず,ともかず
+ながおか,きょこ
+なかがわ,つぎお
+たかと,じゅんこ
+きむら,なおき
+なるせ,みよこ
+おぐま,ともこ
+たかはし,ひかる
+きくち,だいすけ
+さとう,くにお
+えんど,はん
+んぐいぇん,ひろあき
+たむら,みわこ
+やまもと,みなこ
+あさい,のぶこ
+もり,まさのぶ
+たかしろ, まなぶ
+おか,よしあき
+かとう,わかこ
+いぐち,ともこ
+たなか,だいすけ
+よしだ,かおり
+あきもと,あつし
+にしい,ひろゆき
+わしおか,たかし
+いぬまる,きよみ
+ほし,かえ
+よねやま,みなえ
+くろべ,せいこ
+いしい,はじめ
+ひぐち,まりこ
+なかだ,ひろき
+おのでら,とものり
+とだ,こうじ
+まえだ,よしひろ
+ながい,おさむ
+こぬた,めぐみ
+しばさき,さいか
+うかい,としや
+すずき,さちこ
+ひらき,きょこ
+なかむら,こうじ
+やまだ,まどか
+かどくら,じゅんじ
+たかさき,こうじ
+なかた,ひろじ
+たにかわ,しずか
+にしむら,まさのぶ
+みなみ,ゆういち
+おぬき,ひさえ
+さとう,じゅにち
+たかはし,たかはる
+ひだ,なおこ
+さくま,としゆき
+にえだ,ひろこ
+よこい,ゆきこ
+よねくら,ひさよし
+ばんば,かつとし
+やまだ,あきか
+いまむら,ちはる
+いけだ,のぶこ
+なかむら,ゆうこ
+すどう,まさみ
+なかそね,まさし
+おさわ,こうじ
+さとう,きよみ
+えいどめ,ほずえ
+いがらし,まさや
+たや,あやみ
+おひら,みのる
+いしぐち,ひろし
+わたなべ,たかお
+さかもと,おさむ
+すぎもと,しま
+かとう,たかし
+よしい,れみ
+いわや,たけお
+きのした,りえ
+すぎさわ,あきひで
+わだ,るりこ
+みやした,ちあき
+うえの,みなこ
+おたき,りえ
+いしばし,かおり
+いわした,ちかこ
+いしかわ,しちろ
+きし,ゆき
+まるやま,みか
+ほんま,たかこ
+くすもと,よしこ
+いまの,ぃさ
+ぐあにお,ぃさ
+げれみあ,さとし
+おにし,こうじ
+やまだ,みなこ
+ふじおか,ただひろ
+はなだ,ようこ
+しばた,きょこ
+みやした,かずよ
+かさはら,みよこ
+おやけ,えみこ
+いまい,のぶこ
+こせき,ゆみこ
+おた,きょこ
+まちい,まさお
+きくち,ひでひこ
+ひぐち,たてお
+みなよし,ひさお
+すずき,たかお
+なんば,いさお
+おにし,きみひで
+はやしだ,たかお
+たなか,かん
+かねこ,せいぞ
+つちや,しょ
+いいだ,とらお
+ふるや,やすかず
+なかむら,あさお
+はるはら,ゆきお
+ほりえ,まさお
+おた,はるお
+すずき,くにお
+おと,まりこ
+なかがわ,のぼる
+かわしま,かずひろ
+てらもと,せつお
+きむら,かずえ
+よどなわ,じゅんじ
+こだいら,ひろかず
+かくらい,なおき
+おぐり,だいさく
+はた,たかとし
+まつもり,ひでひろ
+よしおか,かずのり
+しげた,ともゆき
+かわぐち,えつお
+かねこ,かずお
+あさひ,みつぐ
+わたなべ,たかし
+ありやま,よりしげ
+つじた,たけし
+よしはし,やすつぐ
+みしま,まさとし
+さとう,まゆみ
+かねまる,よへい
+かねこ,ゆうじろ
+えじま,あきら
+みつくち,ゆかり
+もり,ひであき
+おち,ようこ
+まえかわ,ひろよし
+たなか,けんじ
+おりがさ,かずお
+こせき,せいじ
+ひらやま,みちあき
+こぼり,ともひろ
+なかうえ,まさお
+すとう,ただあき
+ごと,こうじ
+つかもと,つぐお
+えびはら,たつお
+もりの,ひでお
+すずき,せいし
+よしだ,かつじ
+いまい,えつひろ
+ひの,やすし
+よしだ,ひろあき
+おにずか,じゅん
+たかぎ,きみお
+おむら,せいいち
+うちやま,かずお
+くろかわ,まさのり
+やました,まつのり
+にしだ,かおる
+わたなべ,ただし
+かしわぎ,えつよし
+かねこ,たつお
+くまだ,まさお
+こじま,きよひこ
+しらい,ひろみち
+ふるかわ,よしあき
+むしう,ひでのり
+よしの,まさあき
+すぎうら,まこと
+ふじさわ,まさき
+さとう,むねたか
+えざき,みな
+むらかみ,すみただ
+にわやま,まさひこ
+やすの,かつひと
+どだ,えつこ
+かじい,よしのぶ
+たなか,たきお
+まつなり,ひさえ
+おばやし,すさん
+つあぞん,ひろし
+たかはし,ゆきこ
+まつむら,みきお
+こもり,なおずみ
+のぞえ,てつひこ
+おの,りえ
+かんの,ただあき
+さとう,としお
+のなか,せいいち
+かわはら,まり
+なかむら,あきひろ
+やました,たかゆき
+こういち,たかお
+いたや,まつもり
+やま,みか
+やまもと,ともひこ
+くらた,もなみ
+かわず,ようこ
+みかみ,いさお
+たきがわ,こうきち
+たなか,まなぶ
+みやた,たくや
+ないとう,やすまさ
+まるた,まきこ
+わだ,かずえ
+ひえだ,きよみ
+たけだ,こずえ
+かじもと,けいこ
+のむら,わかこ
+ねや,ゆみ
+すずき,まゆみ
+きむら,としかず
+むらた,ももえ
+いしかわ,ひでお
+ふじわら,ふみこ
+もり,そういちろう
+あいもの,やすこ
+たかだ,いたる
+おだ,こういち
+きのした,よしかず
+たなか,ひろあき
+さくま,たかてる
+じょうこう,きみのり
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt
new file mode 100644
index 0000000..3bf407b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_h.txt
@@ -0,0 +1,22749 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+あきもと,やすお
+あきば,しげる
+あらい,ひであき
+あらい,けんいち
+あかがわ,としお
+あらき,せいご
+あいかわ,のりお
+あきの,ゆきお
+あきやま,つよし
+あさい,ひとし
+あべ,まもる
+ありが,つとむ
+あきた,よしてる
+あかつか,かずひこ
+あらい,まさはる
+あさはら,かずお
+あつみ,まさあき
+あわや,ひとし
+あさかわ,としあき
+あおき,おさむ
+あわず,あきら
+あきくさ,ようすけ
+あおやぎ,はつかず
+あじさわ,しゅういち
+あいそ,やすし
+あおしま,ちよかず
+あとう,まさひこ
+あさの,よしや
+ありが,そういち
+あおき,りょうへい
+あいかわ,ゆきお
+あきた,まさひろ
+あさの,のりあき
+あさと,ひでし
+あらき,よしかず
+あんどう,やすし
+あさかわ,ひろし
+いいだ,まこと
+いわさわ,まさき
+いしかわ,まさお
+いのうえ,ひろひと
+いしはら,よしのり
+うかじ,さちこ
+うめたに,かつひこ
+おけたに,けんじ
+おおすぎ,あきひろ
+おおかわ,みきひこ
+かとう,まさとし
+かも,まさあき
+くまがい,まさし
+こんど,あきら
+すぎもと,おさむ
+はまさき,よしのり
+ちだ,しゅんじ
+なかむら,けいぞう
+ながた,ちえこ
+さわむら,かちこ
+なるお,よしのぶ
+なりた,ゆみこ
+はせがわ,ひろこ
+ふじた,けいこ
+ふじわら,たかこ
+ぶよう,てつお
+ほり,こうじ
+みなみむら,ちあき
+みやじま,ちより
+やまだ,まり
+やまぐち,たかし
+やなぎはら,みどり
+よしの,しんいち
+にいだ,くにひこ
+おおいやま,ゆうこ
+かながわ,いちろう
+きむら,りえこ
+つかざき,みほ
+かわだ,なおこ
+あさかわ,みさこ
+しもつ,まさあき
+おか,たかひと
+おがわ,こすけ
+たいら,しょういち
+いしの,きよなが
+きみしま,あきら
+さとう,てつや
+やまだ,おさむ
+おおた,なおみち
+まえだ,ひでとし
+かざらし,みつる
+ごとう,かつのり
+ほし,まもる
+くろだ,しんや
+つかわき,としや
+いながき,まさひろ
+いわもと,たもつ
+つるた,たかし
+いしじま,りょうへい
+やまなか,ひろとし
+うえき,あきこ
+にしむら,あつこ
+わいだ,ただし
+よしだ,るみ
+しぶや,ゆたか
+あとう,まさのり
+みやた,かおる
+おおたき,つぎお
+きよおか,まこと
+おおたに,たかし
+にしわき,なおみ
+にしやま,たかし
+みしま,たかゆき
+かとう,ひろし
+いまお,みずほ
+おざき,こうじ
+せきや,まさゆき
+つくだ,のぶゆき
+みよし,のぶまさ
+よしみ,たかゆき
+ささおか,たかし
+おしま,ちはる
+くぼた,ちずこ
+しばやま,しゅうぞう
+おおくぼ,となみ
+たちの,じゅん
+わだ,みちよ
+まつした,まさもり
+こむら,やすひこ
+まきした,けいこ
+あかお,やすひろ
+はしもと,ひとし
+おおの,かずお
+せきもと,よしお
+まえだ,ちから
+みつほり,なおき
+みなみぞの,まさき
+せがわ,かおり
+すずき,とよじ
+きたがわ,よしたか
+よしやす,じろう
+やまもと,まり
+かとう,ひろし
+かわかみ,よう
+まきの,なおき
+すずき,まさお
+ふるさわ,さとし
+はやし,じ
+いまにし,としひこ
+みやもと,ゆか
+まき,くにあき
+こいで,さほ
+わたなべ,まさこ
+おおはし,ひとし
+あかお,あきお
+あさい,かずこ
+いまい,たかし
+きら,まさひこ
+にしむら,てるき
+よしかわ,としゆき
+みなみ,けんじ
+つるた,のりお
+なかむら,じゅんいち
+たなか,けんじ
+まつうら,たけし
+すぎた,じ
+かわい,としお
+こくぼ,さつき
+つだ,まこと
+みやたけ,としたか
+くろさわ,よしかず
+すみひら,まさひこ
+たかき,まさお
+いしと,こうき
+やまだ,もとかず
+にいつ,のぶあき
+いわむら,かんじ
+かわなべ,よしひろ
+ながい,ひろゆき
+やまね,ちあき
+いまい,たかゆき
+なかお,いさお
+おしきり,ふみはる
+いしかわ,じゅん
+おかじま,じゅん
+おおにし,まさはる
+すずき,てつ
+やまなか,さつみ
+たにぐち,かずひろ
+かわべ,ときお
+こんの,みき
+さとう,やすひろ
+たかやま,しんいち
+もりみち,いたる
+ほりかわ,かつみ
+ふくい,たまこ
+きたむら,あきら
+なかはら,ひろみ
+いちい,ひでのり
+いわさ,かよこ
+すずき,しゅんじ
+よねたに,かつふみ
+たの,たけし
+しばた,ひでよ
+いのうえ,まさのり
+いしかわ,としお
+きし,まさみ
+あわえ,あつし
+たけお,よしあき
+きのした,かずひこ
+つかだ,ふみあき
+ありどめ,としゆき
+きっかわ,としあき
+おがさわら,ひさかず
+ながせ,たかひろ
+はるやま,あつひこ
+おず,やすお
+こさか,としかず
+しらさき,とおる
+たなべ,つとむ
+いけがみ,つよし
+こばやし,じゅんいち
+まつばら,なおと
+なかがわ,もりひろ
+おがわ,せいじ
+よしだ,まさのぶ
+いけ,さだのぶ
+たにぐち,まさみち
+まえだ,ひろし
+ひらの,たかゆき
+しみず,きみこ
+やまだ,あきとし
+たなか,ひろあき
+こまつざき,まもる
+かとう,まさかず
+おわ,のりこ
+いわむら,ひろただ
+いりえ,かずゆき
+あかやま,まさゆき
+あきもと,ひろあき
+かみむら,あきひこ
+すみた,かおる
+はまさき,あつし
+やすだ,まもる
+たけむら,みきや
+むらかみ,とみつぐ
+なかじま,ひさとも
+もりもと,こうじ
+せきぐち,たかゆき
+なかじま,まさひこ
+きがわ,ひろひさ
+たかひら,たかし
+もちだ,あつし
+かめやま,たかし
+おやまだ,まさひさ
+たなか,てるひさ
+ほんま,しんじ
+きのした,やすひこ
+しのつか,のぶしげ
+あいはら,やすふみ
+ながまつ,えいじ
+とよむら,まさあき
+ひらの,たかし
+きむら,じゅん
+いけだ,せいじ
+いしはら,ゆうこ
+のぐち,まさる
+こけつ,みつまさ
+おくやま,あつひこ
+はまぐち,しんじ
+つじさか,ひであき
+いちかわ,さとる
+よしだ,せいご
+やまだ,よういち
+しみず,やすし
+さかがみ,のりかず
+こすぎ,ひさひこ
+にしだ,せいじ
+いいだ,かつら
+うちだ,やすみ
+もとやま,ちはや
+みやもと,いくよ
+こばやし,やすし
+かとう,ひろゆき
+しらい,さとし
+はぎわら,こうじ
+やまうち,ゆきひで
+みつはし,かおり
+もんじ,よういち
+たきもと,のりこ
+おくだ,しゅうじ
+つかもと,しゅうじ
+むこはら,やすいく
+さるや,みちお
+おかじま,としひこ
+ほしの,ひさと
+ほし,ひろふみ
+ふしみ,こういち
+たかはし,たつや
+にしやま,しんじ
+つるまち,しょういち
+とみた,なると
+うちだ,とおる
+おおたか,ゆうこ
+さかい,たかひさ
+そがべ,かつみ
+わだ,けんじ
+こさか,まさみ
+あそ,あけみ
+あらい,としはる
+すぎむら,しげお
+あきよし,かずお
+あさかわ,つとむ
+わだ,さかえ
+いけだ,こういち
+おかもと,りょうじ
+あおき,まさる
+うえさわ,つよし
+うやま,ひであき
+なかはま,すすむ
+かわもと,まさゆき
+すえまつ,じゅんじ
+ながい,さとし
+なかはら,ゆうぞう
+なわた,なりあき
+かつざわ,ひろし
+やまうち,みゆき
+あかぎし,つよし
+くさずみ,としひこ
+ほかり,ひろし
+かとう,おさむ
+きりう,ひろき
+おがわ,まさと
+たなか,まさよし
+あいむら,つとむ
+いがらし,まさと
+かわわき,たかみち
+まえさか,ともみつ
+まつしま,あつし
+まつもと,ひでと
+かたい,まさひろ
+こじま,まさあき
+つじもと,とおる
+なわた,さとし
+ふじたに,かずひこ
+きせ,てつろう
+さかぐち,じゅんいち
+すずき,としゆき
+はまさき,まさひろ
+よしだ,ひとし
+ほった,しげひと
+ますこ,ひさお
+たけなか,こすけ
+いしい,はるき
+たさか,ひろし
+まつだ,まさひろ
+はた,たかし
+あきやま,ゆたか
+たかはし,やすひと
+やまかわ,しょうじ
+よこち,まさひろ
+よねたに,きいちろう
+ふじの,ゆうすけ
+はせがわ,かつとし
+ふじた,まさゆき
+あんらく,まさこ
+はしもと,のぶゆき
+いなだ,れいこ
+ゆげ,まさよし
+いまだ,いずみ
+さかもと,かずひさ
+とよなが,やすひろ
+はしもと,てつお
+はない,よしのり
+しみず,たつお
+なかむら,よしはる
+かじむら,よしひこ
+いしがき,けんぞう
+はっとり,まさお
+あまの,りょう
+みかみ,かおる
+ふるてら,まゆみ
+まみや,ひでき
+つるの,むつこ
+あさい,やすき
+のむら,しげお
+よこやま,しんじ
+いけだ,ゆたか
+あんどう,あきお
+おかやす,やすこ
+ごとう,ひであき
+かわしま,たかこ
+はぎわら,えり
+あたらし,ゆみこ
+たかやま,としひと
+にしやま,としゆき
+えちご,しんいち
+やまざき,よしひろ
+むろや,てつお
+きむら,ゆきお
+なかはら,ふみお
+うえの,たかし
+よしだ,けんた
+つかもと,ただし
+おざき,とおる
+あしかわ,やすしげ
+ねぎし,とものり
+きゅうの,しゅういち
+さとう,よしひで
+いのうえ,かずひこ
+きくずみ,まさる
+まつもと,だいさく
+はやし,たかお
+ふくおじ,かんじ
+なるせ,けんたろう
+まつもと,まさき
+もり,まさし
+みき,のぶお
+なかたに,よしあき
+みやがわ,ふみのり
+ありよし,いくお
+しらい,よしゆき
+みなみ,まさよし
+とりごえ,ふじお
+こすが,ただし
+つじの,かずひろ
+おぐら,やすひろ
+おりた,ちかし
+あみもと,じゅんいち
+おさか,とおる
+はやし,よしひろ
+みなみ,みのる
+よしだ,としひこ
+にしはら,よしお
+おくがわ,まさとも
+つじ,てるゆき
+なかい,たかし
+にしむら,つぐお
+にたない,けんご
+くどう,ひろし
+さい,たかお
+しょう,まなぶ
+いのうえ,かおる
+たにぐち,ひろたね
+なかにし,しんじ
+おおもり,ひろゆき
+くまがい,たかゆき
+いしあい,とよかず
+はぎはら,かずのり
+たがた,けんじ
+すずき,みちお
+くぼ,ぜんさく
+かなうち,しんや
+にしお,ひでき
+いなだ,ひでのぶ
+たけいち,しんじ
+あんどう,まこと
+まつなみ,しょういち
+みなくち,しゅうさく
+かなうち,なおき
+おおいやま,のぼる
+ますだ,しょうじ
+やぎはら,としお
+みずの,けんじ
+のぶくみ,とおる
+なだ,たかあき
+たけたに,ふとし
+いまいずみ,いちろう
+いなだ,いさお
+いまに,たかふみ
+おき,まさひろ
+ふくしま,ようすけ
+いいお,ひろとも
+いしだ,かつや
+ひらた,こうじ
+いたがき,かずひろ
+やまふく,さとし
+さとう,のりお
+なかがわ,りょう
+おさか,しゅういち
+おいかわ,のぶあき
+かしお,よしひろ
+ほしざき,しげき
+せきじま,こうじ
+おかまえ,のりひろ
+さとう,たかし
+こいで,たかなお
+たかはし,せいじ
+おがわ,こういち
+てらしま,たくお
+やました,まさあき
+のせ,ひでゆき
+まつまえ,あゆみ
+よした,のりあき
+むらた,とおる
+はら,のりひこ
+やまうち,けんじ
+かみ,かつゆき
+すがい,たつゆき
+たかの,よしのぶ
+ところ,よしひろ
+すずき,すすむ
+ささき,あつゆき
+つのだ,てつろう
+やまさき,てつや
+みうら,かつみ
+おだぎり,あつこ
+はやし,しんちょう
+とみおか,ひとし
+いぐち,せいいち
+こんど,たかし
+くぼ,ひでお
+くらぬき,きょうこ
+とみまつ,なおこ
+くろかわ,まさあき
+のざわ,すみお
+かわさき,くにあき
+たけだ,かつや
+しのはら,あきひろ
+ふるや,しげる
+なかむら,さとる
+やじま,とおる
+にしがき,きよし
+なかがわ,そう
+ひらやま,しゅんいち
+やまぐち,むつひろ
+よしむら,ゆうじ
+つだ,たかゆき
+かつらい,わたる
+みない,としかず
+たきぐち,かずお
+わけべ,よしひろ
+にしかわ,まさや
+しらがき,ひろあき
+ばば,まさかず
+あかり,りょうじ
+あべ,たくや
+かい,くにひろ
+おおもり,ひでかつ
+すずき,たかし
+ながさわ,ひとし
+さわだ,えみこ
+あずま,のぶゆき
+おの,ひでき
+かわにし,のぶひで
+まなべ,かずひろ
+ありやま,ゆうじ
+にしかわ,きよし
+あつみ,しゅうじ
+いとう,ひろゆき
+ひろた,としや
+ほかぞの,かずと
+ほしの,やすひろ
+やまぐち,まこと
+あがた,こうじ
+まるお,よしゆき
+こいで,ひろあき
+かみむら,まさひで
+さいとう,なおき
+ふくみつ,あつし
+ひらやま,ひかる
+さいとう,てつや
+いけお,みのる
+ふるかわ,じゅんいち
+いいだ,ひろあき
+みやざき,もとひろ
+よしだ,やすゆき
+きくた,えりこ
+ちば,てつお
+とりやま,りつお
+えざわ,りゅうたろう
+おおば,よしたみ
+やまもと,おさむ
+にしかわ,まさのぶ
+えんど,まさはる
+ふくい,おさむ
+はまの,よういち
+きたはら,けんじょう
+さとう,ゆきひろ
+まつお,まさふみ
+とよた,ひでや
+ひらもと,としひで
+やまもと,こうたろう
+はまだ,まゆみ
+いわかみ,みのる
+くぼ,てつお
+えんど,かずひろ
+かげやま,まさのり
+にいや,ともゆき
+こうち,ゆうすけ
+あだち,しげゆき
+はやし,しゅんじ
+なかの,まこと
+いしはま,まさひろ
+こくぼ,りゅういち
+かわの,はじめ
+なかじま,のりひこ
+たいら,つよし
+たけぎ,りつお
+もりしま,ともこ
+なかむら,ひろあき
+のぐち,ひろき
+あらき,やすてる
+あら,ひろし
+いとう,なおこ
+はやさか,ふとし
+こつか,まさかず
+たけうち,ひろし
+いわた,たかし
+まえだ,よしお
+ほそかわ,まさひろ
+あらい,やすひろ
+おおくら,かんじ
+たけこし,あつし
+やまぐち,けんじ
+しみず,かつとし
+いとう,よしつぐ
+いずみ,かねみつ
+ごとう,そうたろう
+おおつぼ,かずみ
+かみこがわ,しんいち
+たけい,さとこ
+みやはら,まさし
+あわじ,あつお
+うしろだ,かおる
+もりいずみ,はじめ
+ながの,あつし
+たなか,むねゆき
+ふかえ,けんじ
+ふるや,みさお
+みずひき,よしお
+くぼ,みつよし
+たぐち,ふみあき
+なかお,つぎと
+やました,ゆういち
+くろき,しょうご
+まつだ,けんいち
+おだじま,なほみ
+ほり,ゆきお
+たにぐち,つねやす
+あらい,としのり
+ごとう,てつじ
+とねがわ,のりゆき
+もりた,たかこ
+ふるかわ,しげお
+ゆき,よしのり
+しらいし,たかひろ
+いけや,さちこ
+わたなべ,たつおき
+たにぐち,こういち
+ますだ,しのぶ
+みずぐち,じろう
+はやみず,ゆみ
+ほかり,あきひこ
+いしい,のりひこ
+しらいし,まさひこ
+しもかわら,しげひろ
+もりもと,ともこ
+いとう,ひろし
+おおや,けいじ
+みよし,みのる
+しばた,のりひろ
+たんざん,ともひこ
+いわさき,ひでかず
+ふくい,さとし
+もりばやし,かずや
+やまだ,ひでみ
+ふじわら,さとし
+なつめ,やすと
+しのはら,ひろし
+おさだ,まさし
+ふじはら,たけひと
+ふじもと,ひろみ
+きの,よしお
+やまもと,もとき
+いしじま,もりひろ
+いが,あきら
+なかえ,だいじ
+やの,ゆうじ
+かなみつ,おさむ
+すずき,てるお
+たかだ,りょうこ
+いしばし,ひろゆき
+おおつぼ,みつはる
+すぎ,たかし
+はやしぐち,ひろし
+てらした,かずお
+しもやま,よしふみ
+みやざき,みつる
+もり,やすひろ
+やまもと,ひとし
+であい,きよひろ
+ほり,としゆき
+あねざき,かずお
+くぼた,たかひろ
+ご,まさとし
+ひきだ,ひろし
+さかぐち,のりあき
+よしい,たかし
+きたはら,かつと
+ふじい,みどり
+なめき,やすこ
+よしむら,としお
+たむら,だいすけ
+うみの,ひろし
+あんどう,ひろし
+よしもと,たけし
+ねもと,よしふみ
+みやざき,まさひこ
+たかもり,ちえこ
+くまがい,くにお
+ごうだ,こうたろう
+はた,こういち
+くずみ,さちこ
+なつい,いくお
+しまだ,ひでお
+おおつき,かずひろ
+まみや,ひろかず
+さとう,けんじ
+こばり,ひでゆき
+ささき,やすゆき
+かねこ,まさき
+おの,とおる
+おおやま,よしえ
+まとば,まさはる
+いたくら,じゅんいち
+おだしま,かつろう
+しいき,のりこ
+しばた,かずひろ
+かつら,ちかこ
+あらい,よしのり
+さいとう,つよし
+まつもと,まさのり
+うえやま,みつなり
+まの,しんいち
+みさお,なおき
+そのべ,きみゆき
+すずき,あきお
+やたに,きょうこ
+むた,まなぶ
+まるやま,ふみあき
+ふだ,たかよし
+こばやし,けいいちろう
+わたなべ,かおる
+おだ,まこと
+おふち,まさお
+たなか,しげお
+さわき,まさし
+さいとう,ひろし
+はぎの,のぼる
+うしやま,たかし
+おくひら,のぶひろ
+よしいけ,さなえ
+こんの,ゆうこ
+のだ,としお
+えんど,としゆき
+すずき,みつお
+たなか,よしひろ
+きど,けいじ
+いとう,まさのぶ
+ふじわら,としはる
+はせがわ,あきら
+ますもと,けいじ
+かい,ひとし
+たかはた,ともこ
+ひでしま,かずのり
+たかやま,しげき
+みやき,ゆたか
+ふせ,かずひこ
+ももい,ひろやす
+つゆき,みつぐ
+かわはら,しげる
+まつい,あきひろ
+はなわ,まさひろ
+ひわだ,てつや
+ますい,たかし
+かとう,ただつぐ
+たけま,ふみお
+しらいし,よしお
+ふるかわ,しょういち
+てじま,あきら
+あきもと,さとし
+すぎやま,ひろあき
+なんぶ,ゆきひろ
+つじの,けん
+てらさか,いっしん
+さかい,ひであき
+くぼ,あつし
+まるたに,まさや
+たかはし,みのる
+まつうら,しんや
+たなか,せんじ
+ゆざわ,たかあき
+たかはし,かずや
+おおば,しんご
+まえかわ,とおる
+にわ,とおる
+かわむら,まさき
+こいけ,かずえ
+くりした,としゆき
+ひろせ,おさむ
+こんの,たくや
+はせがわ,ひろひこ
+いとう,ひろし
+きざき,あつし
+えなみ,のりあき
+つかなか,ふみあき
+さかもと,ひろみ
+まつばら,ひでお
+てらい,しげあき
+おした,たかよし
+たなか,よしあき
+やまもと,まなぶ
+いしぐろ,よしと
+はしもと,すみこ
+さとう,やすひろ
+やまもと,とおる
+ふるかわ,としのぶ
+やまだ,ひろと
+いくた,しょうこ
+さとう,ゆういち
+わたなべ,かずひろ
+かこ,たつじ
+ますだ,ひろのり
+かみじ,たかゆき
+いはら,かずひろ
+あさみ,かずひろ
+なかじま,たかし
+こたき,てつや
+かわもと,えいいち
+かわしま,かずひこ
+あずま,りゅうじ
+なかの,しゅういち
+ひらの,さとし
+たかはし,まさる
+ふかや,ももき
+おおば,たけし
+さくらい,ひろあき
+さかい,いっせい
+あおき,たくお
+よしだ,やすし
+こはし,まさのり
+まつうら,てっぺい
+さとう,おさむ
+にしきおり,ともこ
+みよし,よしひさ
+こすぎ,つかさ
+さとう,たかいち
+ふじい,よしひろ
+ふなだ,かずひこ
+すぎた,とおる
+しょうだ,かずひろ
+もりした,としお
+ひら,ひとし
+しんたく,ひろゆき
+ひがしだ,としゆき
+くりた,まさよし
+いなだ,ゆうさく
+にしの,としや
+いけじり,のりあき
+なかむら,なおひろ
+なかかど,よういち
+いのまた,ひろし
+つるみ,ひろよし
+ひらもと,しげき
+みよし,ふみあき
+あわの,たかし
+あきた,よしえ
+ひがしやま,たけし
+さとう,ひろみ
+かわさき,けいいち
+まるやま,はつお
+すなが,ひでき
+いまい,たみこ
+ふじい,ゆきお
+まきた,みつお
+いとう,たつし
+たかはし,りゅういち
+きりま,しんじ
+おおにし,ともゆき
+みのしま,たけひと
+さとう,かずたか
+やました,たかゆき
+みたむら,まゆみ
+さとう,しげる
+とまつ,たまみ
+えびしま,やすゆき
+わだ,かずや
+すずき,きよたか
+すがはら,みつる
+たぐち,ひろむ
+とがし,まさひこ
+ながはら,さとる
+やまもと,けいこ
+たけだ,まさゆき
+さとう,みのる
+たかみや,ひでのぶ
+あおき,たかひろ
+こやぎ,すみたか
+おのざき,りょうすけ
+もりた,のりこ
+さくらぎ,ゆみこ
+おかさか,ひろのり
+やまぐち,こすけ
+かわしま,よしのり
+いわの,かずのり
+ごうこ,やすはる
+もりた,やすじ
+しげたか,なおき
+てずか,えいさく
+おた,つよし
+やまだ,まさはる
+ふかだ,ひさゆき
+はせべ,もとあき
+まつの,あつし
+つじかわ,けんいちろ
+まつもと,かつみ
+せのお,はじめ
+のむら,さとし
+あらい,とよしげ
+おぐり,すみえ
+じんの,まさひろ
+ひろずみ,みのる
+まつい,すすむ
+しばざき,あつし
+いのうえ,ひでお
+たなか,ひでかず
+さそ,なおふみ
+しらはま,あきひこ
+たなか,なおき
+なかむら,やすひろ
+いしがみ,よしあき
+しばた,てっぺい
+のぐち,あゆみ
+いちば,こうじ
+かわぐち,ひでこ
+よしみ,ひでみ
+ふじかわ,ひろゆき
+かとう,つよし
+たかはし,いさむ
+ふじさわ,かずお
+みずたに,ともふみ
+せきぐち,よしろう
+まえかわ,むつみ
+あらい,りゅうじ
+もり,けいたろう
+さとう,なおこ
+くわた,しょういち
+おぐり,ひろし
+ひらい,かつひこ
+にしむら,ふみとし
+おおくら,ひさのり
+そのべ,あきこ
+いいだ,やすあき
+こぐち,えいいちろう
+もろほし,ひでかず
+はまだ,のりかつ
+かなざわ,かずゆき
+まつば,しげる
+いわた,ひでとし
+あずち,まさる
+こんど,いさお
+たかはし,よしお
+あまの,ひろあき
+かただ,おさむ
+ためひろ,もとこ
+まつだ,たかし
+なりいし,やすよし
+おきた,もりみち
+やました,ひろし
+すずき,ゆうじ
+まんぽ,かつみ
+いちい,けんじ
+こいで,ともこ
+たかはし,なおこ
+なかがわ,かずお
+おはま,たかし
+たかはた,ひろみ
+こぐち,たかし
+みやがわ,かずや
+しばやま,はじめ
+あらい,やすひろ
+わたなべ,すすむ
+なかむら,ゆたか
+ふるはた,まさなり
+たにぐち,なおすけ
+ほんだ,すすむ
+まつもと,あきひろ
+たかき,はるみつ
+きくち,しんや
+いのうえ,こういち
+はら,まさお
+やまもと,たかひろ
+むらかみ,ともやす
+ばば,まさひこ
+はせがわ,としひこ
+ささき,あきふみ
+あつた,ひとみ
+たちかわ,ひろつぐ
+ひらもと,ひであき
+なかむら,としや
+つむら,たかお
+たかはし,そういちろう
+よこやま,みのる
+こたけ,みつお
+あんらく,たかし
+みずの,しんいち
+おおぬき,あきら
+さかい,はじめ
+おた,しょうぞう
+はやし,のりお
+さいとう,あきひろ
+たなか,のりこ
+はるはら,とうご
+おおつか,まさゆき
+きたがわ,ひでみ
+よこた,かっぺい
+よしむら,あつこ
+おおひら,しんいち
+ちゃき,しげひで
+さかぐち,こういち
+すずき,あきひろ
+ちかざわ,まゆみ
+なかじま,まさのり
+わたなべ,ただお
+しば,じゅんこ
+さかい,ちはる
+やまみさか,てつお
+よしがみ,あきら
+ひらて,まさゆき
+わくしま,ただし
+あさま,ちから
+あずみ,ただし
+いなおか,ひろかず
+さない,ひろし
+やまうち,やすひろ
+いはら,としひこ
+たやま,おさむ
+ささき,しんや
+ふじうち,としあき
+うしじま,しんいち
+ののむら,まさたか
+にし,たけひろ
+いけだ,ひろみ
+すぎたに,ひろし
+おざき,たけし
+こけつ,あきひさ
+さとう,ようすけ
+せんば,あつし
+あずま,ひでと
+なおい,いちろう
+ほしの,よしき
+かみや,やすひろ
+むらた,ひとし
+いちみや,けいこ
+たるい,やすあき
+はぎはら,みわこ
+たかはし,たかし
+おちあい,ひとし
+あきやま,けいすけ
+きむら,よしひろ
+はやし,ひでお
+やまぐち,みつる
+ところ,なおたか
+かすや,えつこ
+いりえ,しゅうじ
+むらいし,みなこ
+しんたに,りゅうじ
+うえの,みほ
+うちだ,こうじ
+はせがわ,
+くろだ,るりこ
+いとう,かつひろ
+ほりうち,まや
+おおはた,のぶあき
+ほんだ,ひでゆき
+なかむら,すすむ
+さえき,おきもり
+あべ,てるひさ
+うめだ,たかひろ
+ぬま,まさゆき
+たぶち,ゆたか
+きむら,みつる
+うだ,たかみ
+あおき,のりこ
+なかむら,まさと
+ふじこし,さとし
+すみだ,きよし
+くずはら,のぼる
+わたなべ,ひろし
+あらた,さとみ
+ろっかく,まゆみ
+いのうえ,みつまさ
+つじもと,まさみ
+みうら,ななこ
+ねもと,よしお
+あめみや,よしかず
+なかむら,ひろゆき
+あいば,のぶたか
+よねざわ,しんや
+ふじむら,しゅう
+りゅうと,ひろみ
+わたなべ,ともみ
+きたがわ,しんじ
+あたらし,ともなお
+きくち,じゅん
+すずき,あきら
+たなか,ひろし
+いけだ,ひろなり
+よこかわ,みつひこ
+くさつぐ,たかし
+みずの,けんじ
+ながほり,こういち
+すぎもと,こうじ
+あんどう,つねお
+たかやなぎ,ひろふみ
+しば,まさこ
+かみやま,かずひろ
+おおひら,ひろみ
+ほんま,はるゆき
+たばた,のぶよし
+えんど,けんいち
+いしがき,せいじ
+しば,ゆういちろ
+やまだ,まさひと
+たかの,かつお
+よしだ,たつや
+あまさき,としひこ
+おしかわ,しんじ
+にしの,みほこ
+かとう,おさむ
+はまおか,ともこ
+さの,たかかず
+すえしげ,くにてる
+なかた,ひろみ
+こばやし,ひでゆき
+すどう,やすし
+つつみ,きよひと
+みたに,こうじ
+いしだ,やすふみ
+いいずか,ゆたか
+しらい,ゆみ
+やまだ,いわお
+つじかど,かずこ
+まつなが,こういち
+たなか,かずえ
+みなみ,ひろし
+さかい,まさゆき
+うえき,しおり
+おだ,まさお
+まえだ,せいじ
+できたに,じゅん
+あまの,たかひろ
+みやこし,しげかず
+あんざい,としみち
+うめだ,ゆきお
+たきざわ,あつし
+むらにし,きよし
+くりはら,としひこ
+やまさき,まり
+おおつか,みつひろ
+あみの,たかし
+もり,やすのり
+にしもり,しんじ
+たけの,まさお
+しんがき,よしかず
+まつお,よしき
+ふじね,まさき
+かなまる,ひろよし
+かなざわ,たつゆき
+しみず,りゅうじ
+わだ,いつこ
+いしくら,たけし
+ふくだ,あきひろ
+うかい,よしこ
+ありま,おさむ
+おおた,たかあき
+もりたに,たかし
+あだち,よしひろ
+くまで,まさのり
+あら,すすむ
+はしもと,とおる
+とよおか,まこと
+おおつ,てつろう
+みやき,けいいち
+いしかわ,じゅんいち
+いがらし,なおつぐ
+おおにし,きんや
+しらいし,こういち
+よこめ,よしあき
+ふじもと,かずひろ
+かんの,もりやす
+たちばな,みちお
+やまだ,ちなみ
+あさみ,しげお
+みうら,やすし
+とくひろ,ひろのぶ
+もりかわ,まさのぶ
+いとう,みきひさ
+さの,ともみつ
+すずき,まこと
+しもとの,まなぶ
+まかべ,さとみ
+いとう,こうじ
+つくだ,じゅんじ
+よしかわ,みつぐ
+たかやなぎ,ひろき
+ほんだ,たかよし
+にしの,ゆうじ
+きむら,よしひろ
+かとう,こういち
+おおはた,じゅん
+うつみ,かずひこ
+あんどう,かずひさ
+はまたに,みのる
+きのした,たかふみ
+かわせ,としたか
+うえの,よしひこ
+しかま,りょうじ
+すずき,まさゆき
+ふじおか,まさひろ
+いのうえ,ともひろ
+きたざき,やすゆき
+あいべ,ひろし
+おおかわ,さかえ
+たけい,やすはる
+からはし,ひろし
+すずき,まゆみ
+あらい,ひろし
+いのだ,のりゆき
+おくむら,えり
+まるい,じゅんこ
+ひろずみ,あきひさ
+わしず,たくや
+よしむら,たかひさ
+かつまた,たかし
+ますかわ,かつら
+いわお,しゅうじ
+やまもと,よしひと
+たなか,さとる
+たけうち,のりゆき
+のはら,しゅうぞう
+ふなはし,かずのり
+なごし,けんじ
+うめだ,かずや
+あきやま,ひとし
+なかだ,まさと
+さいとう,めぐみ
+たはら,じゅんいちろ
+にしまつ,よしひろ
+ひらみつ,まこと
+めかた,まさる
+たかみ,りゅうたろう
+そのだ,ひでゆき
+みやざき,ゆうじ
+まるやま,ひであき
+つのかわ,まさし
+はらだ,かつみ
+つじ,つぐひこ
+いがらし,としお
+よしだ,かおり
+たけがた,こうき
+あべ,りょうじ
+あかぬま,とくひろ
+かわだ,ひろあき
+たご,ひろし
+かみむら,まさし
+まつや,げん
+いわた,あきひこ
+まえかわ,さとし
+やまぐち,れいこ
+しろした,ともひろ
+やました,まさと
+つじかわ,じゅんいち
+たなか,よしふみ
+みなみ,ともひろ
+さとう,よしあき
+うおずみ,あきら
+すぎやま,ひろゆき
+ちば,まさゆき
+かない,さとし
+まつやま,つよし
+たかの,あきら
+くまがい,こういち
+たけこし,むつひさ
+ふたば,としあき
+うめざき,かずただ
+おいわけ,ようすけ
+ながつか,まなぶ
+いまがわ,ひとみ
+はしもと,あきら
+おおひら,ゆうたろう
+みやひら,みちあき
+のぐち,けいぞう
+すぎもと,かずふみ
+かわぐち,かつのり
+しのせ,つよし
+なりさわ,よしひと
+ひろせ,あきひろ
+にしざき,すすむ
+もり,のぶゆき
+ふかお,よしこ
+みやじま,けいぞう
+まつの,かずしげ
+いわい,しげのぶ
+かい,みどり
+たなか,くにこ
+ちば,まさみ
+その,ひろし
+よこやま,あきひさ
+たかしま,じゅん
+おかもと,こうじ
+みやかわ,だいすけ
+むらもと,ともあき
+きむら,こういち
+まつなが,ゆみこ
+ふくだ,つとむ
+おおにし,まさし
+あい,ひでかず
+まえだ,ひさかず
+いのうえ,よしみ
+いいだ,たかひさ
+ふじい,ひろゆき
+さくらい,たくや
+まつい,ういり
+いまだ,しんじ
+みやけ,あつし
+さかい,ひろひさ
+かとう,おさむ
+いわた,なおと
+おおの,まさや
+いそべ,たかよし
+おやまだ,つとむ
+とうじま,たつひろ
+たけうち,かずひこ
+なかやま,ますお
+しらいし,おさむ
+かのまた,あつし
+すどう,たかひろ
+しらやま,あきひろ
+おおや,まさる
+みながわ,ともひろ
+きむら,たつや
+たかぎ,だいぞ
+さとう,ゆきお
+ふじわら,みつる
+いもと,ようた
+うえの,ともひろ
+きょうの,けんご
+きりう,よしただ
+くぼた,つねお
+こせき,たかし
+すざき,まさひろ
+たかさき,やすひさ
+つかもと,しんいち
+ないとう,けんじ
+なかごめ,ひろかず
+なかむら,ひでやす
+はぎわら,かつみ
+まつもと,かよこ
+こんの,よしひさ
+さいぐさ,たもつ
+ほんだ,ゆきお
+たなか,ひろし
+まつとみ,かよこ
+あかさか,ひろあき
+せんがん,あきひで
+たけお,のりかず
+むらた,ひろゆき
+かわせ,ともひろ
+にしざき,たつゆき
+へいとう,えいいち
+おおさわ,まさはる
+うえだ,よういち
+かなやま,やすひこ
+はらだ,ともゆき
+なかがわ,あつし
+みやもり,まこと
+かい,けんじ
+きぐち,しゅうじ
+さたけ,けんじ
+おおおか,としろう
+なかざわ,こうじ
+やすおか,まさひで
+くろみつ,やすたか
+かなだ,ひでき
+まるかわ,ひでき
+ながさわ,たけゆき
+こばやし,しゅう
+えんど,まさのり
+いんなみ,はるお
+やまもと,きよたか
+ながくら,さとし
+うえの,まちこ
+にしざか,みか
+さとう,てつろう
+もりやま,たつお
+こはやせ,しげお
+どいた,ひろし
+ほそかわ,のぶお
+あおき,みつい
+ますみだ,ともひこ
+おち,まさいち
+すずき,けんじ
+すぎやま,けんいち
+ふじわら,せいや
+たなべ,みつゆき
+とだ,あつし
+つぼい,やすお
+すぎた,まさのり
+あだち,けいた
+ふじい,まさき
+すがもり,ひろし
+やすだ,なおひこ
+たかはし,ひろゆき
+たがみ,まさる
+とみやま,ゆうじ
+はねだ,やすゆき
+おざき,たけし
+おぐら,やすゆき
+てらさき,のぶや
+つちや,えつこ
+おかだ,てるお
+あべ,のぶゆき
+あべ,みつえ
+もりわき,こういちろう
+はやの,けんた
+とみなが,じゅん
+すずき,みき
+かたぎり,さとし
+あはら,はやと
+ほし,ななこ
+いしかわ,たつや
+しもむら,よしひさ
+わきもと,みゆき
+かわて,たかし
+あぶらかわ,かずおみ
+よしたけ,たかし
+いしだ,まさゆき
+ほんだ,としろう
+したま,よしお
+のぐち,たけし
+みずい,あやお
+あんどう,なおふみ
+よねしま,なつみ
+あきた,じゅんこ
+うえ,あつし
+すぎ,こういち
+なかじま,まり
+かさおか,としひこ
+のだ,てつふみ
+まつざわ,こういちろう
+わたべ,たつお
+あいざわ,けいじろう
+いわさ,しん
+こが,あきひこ
+ひがしたに,ひでふみ
+いけだ,としや
+あきなか,やすはる
+ふじた,かずや
+やまおか,ひさたか
+わち,せつや
+うえの,けんたろう
+うしき,かずいち
+やまもと,はるひこ
+かとう,まさとし
+ながい,ただひろ
+ふくだ,あやこ
+なかたに,えみ
+ひらさわ,ながこ
+みやざき,まさる
+てらしま,むねかず
+あらい,ちが
+たなか,しんいち
+かねこ,たかあき
+さとう,てつじ
+なりた,しゅういち
+ながしま,じゅんいちろ
+さかの,としお
+みうら,さとし
+やまぐち,けい
+おでら,なおとし
+あべ,あつし
+こだま,かずひろ
+やまもと,ひろゆき
+おしま,とおる
+いしず,つとむ
+かんばやし,ゆきお
+おおかわ,ひろゆき
+ひえだ,たけひこ
+いのまた,ひろみ
+まきた,としや
+がなは,たかゆき
+はやかわ,ひろゆき
+あかぬま,てつや
+むろかわ,まさのり
+おの,けいすけ
+きむら,しょうご
+はたざわ,やすこ
+ふじた,まさき
+うえだ,だいすけ
+やまのうち,いさお
+ふるた,よしひろ
+おくやま,けんいちろ
+いとう,ふみお
+おさない,せいいち
+こたに,たけし
+おおつか,ただあき
+ふくしま,こすけ
+いいずか,けん
+わたなべ,てるあき
+もりた,けんいちろ
+かとう,ひろき
+ほんだ,としあき
+かとう,あきのり
+あさぬま,やすひろ
+あずま,まさお
+てらさわ,みつお
+あかし,つねお
+かとう,なおと
+おのさと,たかし
+なかむら,ひろつぐ
+のむら,ひでみ
+いのうえ,えいいち
+はやし,しんいち
+たむら,がく
+さかい,すえのぶ
+すぎむら,りょう
+とみやま,けい
+かきざわ,としあき
+にしたに,しょういちろう
+あさくら,しんや
+いしざき,さとし
+まつもと,しんいちろう
+ながお,としお
+きの,りえ
+あべ,たすく
+と,こうじ
+やまき,こういち
+あらい,げん
+やまだ,けいじ
+おくむら,かずえ
+はら,しょうたろう
+やまもと,かつひさ
+なかむら,しんいちろう
+あらい,かずや
+いけど,まさたか
+いとう,けいじ
+いとう,ゆうじ
+うりゅう,あきら
+うちやま,ただし
+えのもと,ひろみち
+えずら,とおる
+おおつか,けいすけ
+えにゃ,すすむ
+あかお,けいすけ
+おおにし,しょうじ
+かがや,いなん
+かまた,たかひろ
+かわかみ,のぶひさ
+ささき,やすよし
+たかはし,なおひこ
+ただ,こういち
+にしの,まさよし
+あさお,なおき
+はしもと,なおき
+はっとり,たかこ
+ほし,たお
+ほりた,しんいち
+まえぞの,なるひで
+まえじま,みのる
+みやざき,ゆみこ
+あらい,よしみ
+もり,こすけ
+まえだ,ひろし
+おち,けん
+あさくら,のりお
+うさみ,あつし
+おくやま,たかし
+かりや,たかひこ
+うえだ,ひでゆき
+おたべ,けいぞう
+きむら,いさむ
+くしだ,よしはる
+あまは,こうじ
+こんど,よしき
+しみず,しょういちろう
+すずき,しゅうこう
+すん,すみお
+たどころ,ひとし
+とねさく,いさむ
+なかむら,ひろし
+ますだ,ひろお
+みやざき,みはる
+よしなが,あきひさ
+よこかわ,たくま
+つちや,まゆみ
+たかはし,まさのり
+たなべ,まさじ
+いとう,けいすけ
+ながお,しんいち
+さとう,たけし
+ただ,ともひろ
+あきもと,しゅんすけ
+たむら,まもる
+たむら,かずゆき
+おか,みちはる
+さくらぎ,けんいち
+すずき,ひろし
+もりおか,ただし
+やぐち,ゆうし
+みやもと,さとし
+しらかわ,ひでき
+おおつか,ひでき
+やまもと,ともやす
+なかまち,やすふみ
+わかはら,やすお
+あき,たかし
+たきた,かずひろ
+あらかわ,けいいち
+まつお,こうじ
+ちょう,ゆういち
+くろだ,しげる
+やました,たろう
+ともおか,えみこ
+なかお,わたる
+あそ,てるかず
+ふくだ,のぶたか
+あおき,ひとし
+くる,ひさと
+むらかみ,やすひろ
+くろだ,たくや
+みかみ,あきひろ
+かみむら,ひろゆき
+きたじま,なおき
+まるやま,よしひさ
+さたけ,けんいち
+もてき,たけし
+とみた,ふき
+にわ,ふみこ
+たかばたけ,しげのり
+あずま,まさる
+ふるや,さちこ
+なす,よしひろ
+こり,まり
+いけだ,まさひろ
+ごとう,こうじ
+ふくだ,ひろゆき
+すがはら,じゅんじ
+きむら,としひこ
+たかせ,まり
+にしおか,りょう
+ふるかわ,てつお
+くどう,けんいち
+たかはし,けんと
+やまもと,よしひろ
+みやもと,りょうへい
+のた,ゆきひろ
+なかむら,しのぶ
+あきば,みや
+いわき,まこと
+かとう,しほ
+もりもと,まさかず
+なかむら,かずとし
+なかやま,かずや
+おおたに,しげひろ
+すぎやま,みのる
+すん,とよゆき
+やまもと,ひろし
+ほんど,ゆたか
+はが,かくじ
+しおざき,かずひこ
+ふじの,みのる
+おの,けんじ
+あんどう,よしお
+やまぐち,としあき
+くろだ,たかし
+うの,りょういち
+いとうたに,たけひこ
+おか,えつみ
+みうら,のぶゆき
+はしもと,かな
+えもと,まこと
+こが,ひろし
+きはら,ひろし
+まつだ,ふみただ
+やまだ,あきこ
+たかはし,よういち
+やはた,ひでお
+たざき,けいた
+やまもと,りゅういち
+たかだ,ひろみ
+のだ,まさつぐ
+さいみょう,かおる
+こばやし,あらた
+ふじき,けんじ
+しらさか,ふみお
+たかはし,とおる
+やつ,あつお
+うおたに,ふみひこ
+たむら,としひこ
+まつお,さとし
+なかざわ,たくや
+きだ,ゆきこ
+たんげ,てつろう
+ひろせ,すすむ
+まつしま,みちや
+おかの,さとる
+あおき,よういちろう
+はせがわ,りゅうじ
+にしほり,ちから
+いしずか,たかや
+つぼい,ひでゆき
+いしだ,まさる
+はしもと,さとる
+ごとう,しんじ
+あきやま,ひろき
+みつはし,しげる
+ごしま,かずお
+ふくだ,ひろし
+やました,なおふみ
+なかざわ,ひさし
+にしかわ,ひとし
+いけうち,かずゆき
+たがみ,たかお
+かわきた,けんじろう
+なかむら,がく
+こまい,こすけ
+ほしや,あゆむ
+すみと,まさふみ
+ほしの,かずお
+なかや,しんいち
+はら,みずほ
+むろやま,かずひこ
+もり,ひでき
+しらいし,まさひろ
+ひらの,こうじ
+はしもと,ゆうこ
+あべ,じゅんじ
+いしかわ,ありかつ
+あずま,よしみ
+おおつか,のぶお
+いとう,けい
+おしま,ちかお
+こざい,きよひろ
+かわかみ,まさとし
+なかの,むねひこ
+うじもと,まさひこ
+きしだ,ひとし
+こいずみ,のりこ
+ないとう,としひろ
+よしずみ,よしき
+すぎもり,としひろ
+あおき,ともはる
+たかはし,こういち
+いが,のりかね
+かわばた,のぞみ
+しばた,ひろひで
+だん,まなみ
+たぐち,かずひろ
+まちだ,ともお
+あしだ,ゆうこ
+あんどう,ていじ
+むとう,かつのり
+こやま,きよと
+すずき,けいいち
+のむら,じゅん
+いとや,まさとし
+ちかおか,つとむ
+じんぶ,みちやす
+あだち,まさし
+かわい,やすし
+みのわ,こういち
+あさひ,としあき
+おおた,よしあき
+たなか,きよし
+きら,まさし
+やまざき,みか
+やまうち,みつる
+ほった,よしのり
+あらかわ,しげお
+おくむら,じゅん
+かねこ,いたる
+あやの,こうき
+はやかわ,ともなり
+いとう,まさひこ
+おくむら,ひさのり
+たんざわ,たつお
+さきの,よしひろ
+かわはら,とおる
+たるい,よしお
+ありもと,あつし
+えびこ,ともなり
+ひの,かつや
+やまだ,しょうよう
+おおの,くみ
+たけした,ゆりこ
+はやし,きょうこ
+いしだ,けん
+しおや,たけし
+あんどう,のぼる
+まつばら,まさふみ
+にしだ,まさる
+なかむら,まさのり
+いけだ,じゅん
+はやみ,ひでお
+すずき,しょうぞう
+おがわ,あきら
+いしかわ,としあき
+あさみ,けんじ
+はたけやま,たかし
+ほりみぞ,けいすけ
+まるたに,ちひろ
+さとう,あきお
+さかなか,かずお
+なかむら,ともひこ
+いとう,かおる
+ふるなが,はるひこ
+ふくしま,まさと
+みずがみ,よしゆき
+たけうち,みちお
+とりうみ,みのる
+ねぎし,しげき
+こやま,あきのり
+おしま,なすお
+かたおか,たかし
+たきぐち,ひでふみ
+こまつ,かずお
+やぎ,たかし
+たかぎ,よしお
+ますい,てつろう
+はやし,ひとし
+あねたい,まさゆき
+きはら,けんいち
+さいとう,しげお
+きたわき,みちひこ
+のぐち,ひろみち
+さかぐち,もとい
+にし,ゆきみつ
+いけだ,てつお
+さとう,たかし
+いまい,まさひと
+やまだ,しげいく
+たなか,やすひさ
+おおさこ,まこと
+こむろ,かなめ
+さいとう,ひでき
+すずき,けんいち
+ふなとがわ,ゆかり
+いしい,てるあき
+まつい,のぼる
+すえひら,ひとし
+ひろたに,よしお
+ひがし,きよし
+いむら,あつこ
+あべ,やすのり
+よねくら,のぶとし
+わたなべ,よしみつ
+すが,ひろし
+さの,ひろし
+しば,ともじ
+やまぐち,しゅんじ
+きざわ,よしひろ
+かさまき,よしろう
+きむら,けいすけ
+つるみ,あきひさ
+あおき,しょうこ
+いしだ,もとし
+もろ,あきお
+おくむら,ひろゆき
+たかぎ,こうじ
+いけや,みちお
+とみやま,かずみつ
+やぎ,たかお
+とみき,てつろう
+とのむら,みのる
+やつずか,としひろ
+ぶま,けんしょう
+なかざわ,ふみとも
+やまざき,ようこ
+まつした,しのぶ
+いだ,しん
+すずき,よしひろ
+なかの,やすひろ
+かわぐち,まさお
+たかはし,つとむ
+いしだ,しょういちろう
+うだ,さとる
+ふじわら,りゅうじ
+こいで,としたけ
+つかだ,へいはち
+ひらやま,ひろし
+うちとみ,あきら
+いまはら,ひろよし
+うえだ,ひとし
+ささかわ,よしひろ
+あいかわ,たかあき
+うえき,たかよし
+なかやま,よしみ
+おおさわ,よしかず
+たかおか,としゆき
+わだ,つぎお
+いぬずか,くにひさ
+たなか,こうきち
+たけだ,きよたか
+やまだ,のぼる
+やなぎ,ひでひろ
+たけした,よしたけ
+にし,たつひこ
+おおたけ,ゆういち
+にたない,しげお
+ほんま,のぶひこ
+なかの,よしのり
+みやした,ひでき
+うえの,じゅんじろう
+ばば,さだむ
+みやざき,まさお
+くにい,つとむ
+こばやし,けいじ
+ますだ,ひろし
+たかはし,こうじ
+つかお,ひろき
+かわむら,たかゆき
+かわばた,こうぞう
+あかさか,じゅんこ
+いいだ,てつや
+しらはま,ただし
+とがわ,ひろゆき
+いとう,ひでいち
+おかべ,まさし
+わたなべ,ひろお
+さかば,としひろ
+ひろさわ,ひとし
+なかむら,しげる
+やすい,さとし
+ひらた,かずひさ
+きたがわ,しんいち
+あまの,てつや
+つじむら,えつろう
+かわさき,こういち
+うえむら,たけし
+むらかみ,しげな
+いのうえ,きよし
+はぜ,けん
+としひろ,きみひろ
+こばやし,しげゆき
+いの,ただのり
+あさの,ゆういち
+もり,こうじ
+いなざわ,こうよう
+こばやし,てるひろ
+さかき,よしひこ
+うちやま,せいじ
+まなべ,やすき
+おおやま,けんじ
+しみず,まさひこ
+よねむら,ひろゆき
+ばらだ,あきひこ
+ふるぞの,よしかず
+ふじもと,かずあき
+さの,まもる
+かわの,えいこ
+ほしかわ,こうじ
+ささもと,もとつぐ
+すどう,まさと
+さとう,たかお
+はやし,ひろし
+ばば,ひでのり
+ばば,ひとし
+おおやね,ひでお
+ながさわ,やすゆき
+さかもと,まさはる
+あおき,せいじ
+むなかた,まさはる
+いとう,しんいち
+かわばた,ひろゆき
+すぎもと,みちお
+ばんどう,じゅん
+のむら,あきひこ
+こんの,よしみち
+かわい,かずのり
+うえの,のぶゆき
+はらだ,ひろし
+かのう,あきら
+おおはた,みきお
+すどう,たかし
+まつだ,ひとし
+いけがみ,まこと
+しらい,けんしん
+さとう,たかあき
+さかい,たけし
+おき,としゆき
+かわむら,けんじ
+やまだ,ひろお
+いとう,あきひさ
+いかみ,はるお
+あずまお,ひでと
+ふじむら,とおる
+きたむら,ゆうじ
+とがみ,としみ
+こすげ,まさお
+せき,ひろゆき
+かわしま,ともゆき
+たかい,ゆうご
+あきやま,ゆきお
+すずき,としふみ
+なかむら,しゅういち
+にしの,たかゆき
+みやけ,たかひろ
+よねもち,もとじ
+たかしま,しげお
+さかい,としのり
+おおつき,あきとし
+かわさき,みき
+にしかわ,たきお
+さくらい,けんじ
+すぎ,ひであき
+ほりこし,とおる
+もり,かつや
+はけだ,たかし
+にいだ,しんいち
+きくたに,さとし
+たけのした,しゅうへい
+たかはし,ひろみ
+たなべ,まさこ
+いけもと,のりこ
+まつやま,ゆきこ
+よしざわ,よしひさ
+あかい,みのる
+にしおか,せいいちろう
+たけもと,のぶお
+とくだ,よしお
+おおもり,やすひろ
+かとう,たつし
+かわと,ふみお
+まえだ,そういち
+くろき,まさよし
+いいだ,くみこ
+こやなぎ,はじめ
+まつなが,あつし
+いとう,やすあき
+やまもと,たつお
+つつい,としあき
+たなか,みのる
+ふくしま,しゅんいち
+こじま,よしひこ
+にしだ,みつぐ
+にしやま,じゅんこ
+すずき,だいすけ
+いいじま,たかし
+たまい,すすむ
+こんの,おさむ
+みます,としみつ
+よねはら,せいいち
+よしだ,かずみ
+ふくだ,ひろし
+さとう,ひろあき
+やまもと,ひろし
+きたご,のぼる
+さんの,ともとし
+やさか,としお
+むらた,しげみ
+なかもと,あきし
+さくらい,かずしげ
+はらだ,よしもと
+さとう,あつお
+さいとう,みつお
+そね,けいこ
+はすみ,あきひろ
+ひらた,かずひろ
+やなぎさわ,のぶお
+たちばな,ようこ
+いとう,まさずみ
+はら,あきら
+さいとう,としひろ
+いとう,こういち
+たなか,かずや
+うちやま,しげよし
+かがわ,けいいち
+たきざわ,ゆうじん
+しながわ,くにひこ
+かきはら,しろう
+すがぬま,じゅんいち
+かめい,としや
+おくつ,かずとし
+いしかわ,しょうしゅん
+すぎうら,もりお
+うめだ,ひさし
+みなぐち,いちろう
+ほしの,たけひこ
+にしやま,せいじ
+たけだ,たつや
+さかい,きいちろう
+やつだ,たけし
+もりた,けいぞう
+さきま,なおひろ
+あらい,ゆたか
+たけだ,たかこ
+たむら,よしこ
+おかだ,はるみ
+やまね,ちはる
+なかむら,ゆういち
+あおの,たつお
+すぎやま,かねよし
+ふりはら,かずお
+わたなべ,のぶと
+かつ,つかさ
+さはら,ひろみ
+かくた,あきひこ
+えのもと,たかし
+わたなべ,まこと
+やぶき,まさひろ
+あまさき,こういち
+よこた,まさひで
+ほりのうち,としあき
+きはら,つねお
+たけだ,つるまつ
+いねな,まさひこ
+なか,かずひろ
+いちやなぎ,ただし
+すずき,しょうけい
+なるしま,なおきち
+しらいし,たかし
+おの,とおる
+よしおか,かずや
+まつうら,ひろかず
+ふじた,てつじ
+いわみ,とよはる
+とくしげ,けいじ
+たなだ,きみひこ
+おかの,かずまさ
+もちずき,たかゆき
+たかしま,こういち
+とりうみ,かずお
+たかみ,よしたか
+はやせ,ともゆき
+たかはら,えいじ
+きん,まさゆき
+すぎやま,ひでひろ
+きたじま,こうじ
+にった,よしのぶ
+おか,ゆきのぶ
+おおはし,ひろし
+はらだ,きはちろう
+わきさか,ひろし
+いわなが,けいいち
+かわしり,みつお
+いなもと,まさかず
+さわ,ひろゆき
+たけだ,たけひこ
+いいだ,よしひと
+かじの,まもる
+みわ,はるかず
+ふくい,けいいち
+すえなが,とおる
+くにえだ,ゆたか
+きたおか,かずひこ
+いど,とおる
+おくだ,りょうすけ
+ほりかわ,かつき
+すえもと,てつや
+よこやま,としひろ
+ふじもと,とみお
+きせ,しょうじ
+にしむら,ひでひこ
+たかだ,こうじ
+つかだ,まさかず
+とよだ,えいじ
+さの,とおる
+にしだ,まさひこ
+おおもり,いちろう
+おざき,とおる
+いしまる,しげやす
+たなか,こういち
+かしわばら,のぼる
+あさの,やすかず
+ひらの,しんじ
+たにやま,てつろう
+うめばやし,けんじ
+おむら,ひでお
+さかぐち,きよかず
+おかむら,しょうご
+やまもと,あきら
+えちご,これあき
+さわだ,やすひこ
+よこい,かずゆき
+きたむら,りか
+やす,かおる
+たかお,じゅんこ
+かつらおか,しんぞう
+つぼい,まさひこ
+つじ,しげお
+たかはし,あきお
+すぎき,たかき
+たけうち,たかひろ
+かみ,としかず
+こばやかわ,やすひこ
+あおと,じつじ
+ただ,よりこ
+ひだか,のりこ
+にしむら,ちえこ
+えばら,つねお
+みずもと,かずや
+すずき,きよし
+しいな,はるよし
+しおた,みつひこ
+なかはら,こういち
+ごうだ,きよし
+ふるた,まさひさ
+ますもと,じゅんいち
+なかがわ,きいち
+いど,たかゆき
+よりふじ,のぼる
+まつもと,あきら
+さいとう,くにあき
+なつい,ひでき
+うおの,かおり
+たなご,けいこ
+たまがわ,のりひと
+おか,たかし
+ふくしま,まさる
+おかだ,ゆうこ
+きのした,ひでひこ
+しみず,あきら
+こばやし,きよたか
+のだ,まさし
+かのう,つぐひろ
+かじおか,あきひと
+おおの,たかし
+おおはし,まさゆき
+こばやし,ゆういち
+こいずみ,いくお
+たなか,ひとし
+ふくだ,としや
+なかざわ,のぼる
+ほりかわ,さとし
+うちやま,もりひろ
+いずたに,じゅんいち
+たきい,としこ
+たかせ,のぶつぐ
+ますざき,たかし
+あんどう,とおる
+かたぎり,しげいちろう
+もりやま,としや
+さとう,あきひろ
+ひるかわ,さとし
+うえだ,まさお
+なか,としたか
+みやざき,ひろし
+おおくぼ,まさたか
+たちかわ,まこと
+わたなべ,みちなお
+あさかわ,せいじ
+かわはら,まさや
+おさだ,はじめ
+さかい,はるお
+くりやま,さなえ
+さいとう,こずえ
+すきがら,よしこ
+あけひ,くみこ
+はやし,きよみ
+かわた,なおみ
+しまがき,みさえ
+ほり,かずよ
+のむら,よしこ
+とむら,しんいち
+くぼ,きよこ
+にしもと,のりひと
+よしだ,こうじ
+さぎ,たかよし
+かんの,けいこ
+やぶの,まさき
+やすなが,ひろゆき
+ひがしうえ,ひろひと
+こさき,まさゆき
+なか,としひろ
+おの,とおる
+むらた,こうぞう
+しょうじ,ひであき
+かわもと,あきひろ
+えさき,まさる
+えいどめ,ひでかず
+すずき,ゆたか
+もとやま,やすかず
+はまだ,あきら
+こしかわ,としお
+はやし,まさはる
+やまざき,ゆきや
+まつもと,よしまさ
+おの,しんいち
+はなわ,ただし
+はせがわ,けいじ
+みやた,まさあき
+きたざわ,まさかず
+えんど,やすひこ
+ながさか,よしあき
+よしもと,ひろみつ
+くろさわ,けんさく
+まるやま,よしはる
+なかにし,かずゆき
+よしだ,けいいち
+ふくた,ひでや
+ふじさわ,かつひこ
+さくま,よしはる
+はしもと,かつみ
+わだ,まさおみ
+にしざき,のぶお
+ふかがわ,えつこ
+あおやま,まさかず
+きよたに,つとむ
+とりはら,ひろゆき
+ながの,たけし
+おおが,ゆたか
+さかの,たかし
+みつはし,まさひろ
+ありもと,せいこ
+よしまつ,たかあき
+あおやぎ,あきお
+やまだ,まさひこ
+むらた,ゆみこ
+いりえ,しんいち
+やまざき,まさのり
+えぞえ,けいいち
+さとう,つよし
+おおた,きよし
+いのう,もりひと
+かど,たつや
+ささき,よしひろ
+かけひ,よしひろ
+つちや,かずや
+まさおか,しょうぞう
+すずき,やすお
+とね,とみひろ
+おおわだ,のりあき
+うえき,まさと
+まえだ,かずのり
+ふじおか,やすこ
+うらべ,なおこ
+なかむら,ゆういち
+いさか,まさあき
+にしさか,のぶお
+いわさ,えいいち
+たくしま,よしお
+つかもと,ふみお
+さくま,たけひこ
+ひょうどう,ひろし
+なかむら,こういちろう
+ささき,まさお
+ふくわき,としや
+おくむら,まさよし
+たかはし,とよひこ
+しろい,やすし
+こかぶ,ただお
+のぐち,ひろき
+たかつ,ひろかず
+よねざわ,てつや
+さかいだ,やすひろ
+こいずみ,みつや
+まえだ,かつゆき
+まんだ,ただし
+こぐれ,いちろう
+あきもと,よしと
+たけむら,ともあき
+すずき,こうじ
+やまうち,じゅんいち
+さえき,ゆうじ
+わかばやし,のぶゆき
+あきもと,まさひこ
+よしだ,ひろあき
+さとう,つねお
+おしま,やすとし
+ささき,まさひで
+あらい,あきひで
+わたなべ,てつじ
+いけもと,ゆきお
+きくい,こういち
+ひらた,ひろみ
+まきうち,たくや
+こせき,しろう
+にしかわ,やすひろ
+いがらし,ふみお
+たなか,ただつね
+ほんだ,えいいち
+はった,ひろみ
+はらだ,ひさかず
+よしだ,おさむ
+わたなべ,ひろし
+こいずみ,りょういち
+こすだ,なおひさ
+みやけ,まさあき
+ふじや,たけし
+まさき,あきら
+さくらい,ひでき
+にしやま,よしお
+かわせ,たかのぶ
+おかざわ,しんや
+あさか,としゆき
+おがわ,のぶあき
+ながさわ,はじめ
+きたわき,まさお
+しみず,まさのり
+こばやし,まさはる
+たちばな,しげこ
+いまなか,さとみ
+うしまる,けん
+おかむら,けんいち
+やまの,ゆういち
+きたむら,みちかず
+たかまつ,ひでき
+ときかわ,かずひで
+いけだ,としや
+いしだ,のぶたか
+たにはら,みつぎ
+おがわ,ひとし
+たなか,しょうすけ
+なか,けいこ
+ともざわ,のぶこ
+はらだ,せつこ
+はなぶさ,あつこ
+とくおか,あつし
+べっしょ,まさひろ
+なかしま,かつひこ
+あさくら,やすひこ
+みやでら,ひろし
+すずき,なおき
+よしむら,よしひさ
+さわ,まさゆき
+なかやま,こういち
+ひらざわ,よしひろ
+ふじわら,まさあき
+すがわら,とおる
+たにがわ,まりお
+ほんだ,やすと
+はない,こういち
+えぐち,さくめい
+かさい,よういち
+くろさわ,ひろし
+たじま,しん
+さとう,たつし
+ひびの,つねお
+すがや,しゅう
+くらた,こういち
+ますだ,はるき
+すぎはら,けいこ
+かねこ,よしゆき
+かつ,たかし
+まる,ひろや
+たなか,ひでかず
+としおか,あきら
+しげの,りょうじ
+やまもと,さとみ
+なかがわ,かつみ
+やまぐち,ひろき
+かわもり,よしひろ
+むらやま,まさる
+しゅう,なおや
+いけだ,ひろゆき
+こだま,たつお
+かとう,さとる
+はくちょう,いさお
+かげん,かおる
+てずか,こうじ
+たにぐち,まさたけ
+てらだ,なおき
+かとう,たかき
+ないとう,たけお
+いとう,たかし
+こばやし,けんじ
+たなか,ひでとし
+ささき,わたる
+ほんだ,みちと
+ひえだ,あきお
+さかい,かずのり
+かつみ,たかし
+たけべ,たかし
+のぐち,つよし
+わだ,えいじ
+うえやま,けんじ
+うえの,たかひろ
+たんご,ひでお
+むらかみ,かつみ
+あらき,こうぞう
+あらせ,ますひろ
+やまもと,しろう
+わしお,ひろゆき
+わけじま,よしふみ
+こいずみ,けんすけ
+とくやま,としふみ
+とみなが,けんじ
+きしだ,せいじ
+けん,みちひろ
+ひろせ,よしゆき
+うちやま,けんいち
+わかすぎ,ただたか
+いしぐろ,かつのり
+にしむら,ひろかず
+いのまた,かおる
+つつみ,としひこ
+いりえ,あつし
+さいとう,かずお
+うえの,しんいち
+ほんだ,おさむ
+きたむら,かよこ
+やまがみ,なみ
+なかにし,まさひろ
+うえだ,たかし
+ひろた,わたる
+うえだ,ともき
+いけだ,ひろし
+はなぶさ,よりのぶ
+こだま,ひろあき
+おかもと,なおき
+すずき,ひろみつ
+すずき,ひさえ
+にいくら,あきひろ
+にしだ,ひろひさ
+おさべ,じゅんいち
+ほそかわ,けんいち
+いまお,よういち
+ふじた,よしのぶ
+おおの,よしのり
+なかやま,よしお
+はやし,けいじ
+すがはら,かずのり
+はらだ,いちろう
+あべ,しゅんいち
+あべ,けいいち
+あべ,けんいち
+あだち,ただひろ
+あいば,だいすけ
+あかばね,かずお
+あんどう,えいほ
+あんどう,ともゆき
+あおき,まさし
+しいき,ひろし
+あらい,しょういち
+あらい,とおる
+あらい,たけし
+あらかわ,いさお
+あらき,たつや
+あらき,たかゆき
+あらき,きよはる
+あらき,かずあき
+あらまき,まきお
+あらめ,たかね
+ありむら,たけし
+あさみ,しゅういち
+あずま,ひろよし
+ばば,ひでかず
+ばば,もとこ
+ちば,のぶあき
+ちば,こういち
+ちの,ともゆき
+だいこく,よしのぶ
+でぐち,ひろのり
+でき,よしあき
+どい,のぶひこ
+えださわ,ひでき
+えぐち,よしなり
+えんど,かずろ
+えんど,まさお
+えりかわ,ゆうこ
+ふじい,ひろし
+ふじもと,ひでと
+ふじもと,まゆみ
+ふじの,よしあき
+ふかはら,あきら
+ふかみ,なおき
+ふかやま,のぶゆき
+ふくだ,まさゆき
+ふくい,まさひこ
+ふくもと,ひろし
+ふくなが,まさひこ
+ふくしま,のぶお
+ふくしま,かずたか
+ふなき,さかえ
+ふなき,やすふみ
+ふるや,いさお
+ごうはら,よしひさ
+ごとう,しんいちろう
+はが,ただし
+はぎの,かずろ
+いちむら,まこと
+はま,なおき
+はなだ,まさよし
+いば,きよさだ
+はせべ,かつへい
+はせがわ,としろう
+はしもと,のりあき
+はし,なおあき
+はたの,のぶひろ
+はとり,しんたろう
+はやし,あきひこ
+はやし,こうじ
+ひだか,かずこ
+ひがし,きよたか
+まの,よしかず
+ひらい,よしたか
+かみさき,としひこ
+ひらの,まさひこ
+ひろい,ひでお
+ひろもり,よしはる
+ひろさわ,あつし
+ひろさわ,おさむ
+ひろせ,しんいち
+ほんだ,よう
+ほんま,ひろやす
+ほりべ,しげる
+ほりえ,ひろし
+ほりぐち,ゆういち
+まつもと,としひで
+ほり,はじめ
+ほり,ひろみ
+ほしかわ,のりゆき
+ほそかわ,すすむ
+ひょうどう,まさはる
+いばらき,ゆういち
+いちおか,あつふみ
+いけだ,たかひと
+いまい,よしたか
+いまむら,たかあき
+いまなか,ともや
+いなだ,ひろし
+いなむら,こういち
+いのうえ,さとる
+あらい,としみ
+いのうえ,えいじ
+いしい,きよみ
+いしい,ひろし
+いしかわ,みきお
+いしかわ,あきら
+いしおか,まこと
+いそだ,
+いとう,まさひろ
+いとう,ちずこ
+いとう,かずひと
+いとい,ただし
+いとう,しんじ
+いわい,あきら
+いずみや,まさのり
+かじた,さとし
+かめい,しんじ
+かない,まさひろ
+かなざし,のりこ
+かねこ,たけし
+かねこ,まこと
+かのう,いくお
+かりう,しげじ
+つきじ,たかのり
+かさまつ,ひろゆき
+かたぎし,まさし
+かたやま,あきら
+かたやま,てつめい
+いそだ,たかお
+かたやま,こうじ
+かとう,さつお
+かとう,まこと
+かとう,やすし
+かとう,ちえ
+かつまた,たくや
+かわべ,ゆきのぶ
+かわべ,あつし
+かわべ,むねひと
+かわだ,けんすけ
+かわだ,あきひこ
+かわもと,あきお
+かわたに,せいき
+きみずか,みちろ
+きむら,かずや
+きむら,りょうたろう
+きのした,やすひろ
+きさか,ひでお
+きしだ,たかこ
+きたがわ,きょういち
+きたむら,よしひろ
+きた,ひでと
+きよの,まさゆき
+こばやし,かつのり
+こだま,かずなり
+どひ,ひらやす
+こはら,まさき
+こいで,としや
+こいわ,ひょうじ
+こいずみ,はるこ
+こまつ,やすたか
+こめだ,ひろゆき
+こんど,みき
+こんど,とおる
+こにし,じゅんじ
+こさか,ひろあき
+こたき,じゅん
+こたに,ひでき
+ことぶき,ひろし
+たしろ,かずのり
+くぼた,ゆきまさ
+くぼ,てつや
+くどう,まさと
+くまがい,やすひろ
+くろせ,おさむ
+くしま,やすこ
+くしみや,こうき
+くつかけ,しんいち
+くわの,しゅうぞう
+まつなが,ひでき
+まえだ,ゆうじ
+まえはら,さとし
+えのき,としや
+まえかわ,こうじろう
+まえき,あやこ
+まんの,しんぎ
+まの,えいじ
+まんたに,よういち
+まるやま,やすひろ
+ませ,かずひこ
+ますざわ,まさお
+まつだ,みつのり
+まつい,いつこ
+まつい,まさと
+まつもと,やすあき
+まつむら,かずあき
+まつの,のりゆき
+まつざき,れいこ
+みき,しげる
+みこだ,てるゆき
+みむら,かずたか
+みむら,しげのぶ
+みなみ,さとし
+みなみ,のぶひろ
+みなと,やすし
+みねまつ,のりこ
+みね,まさたか
+みしま,ひろゆき
+みわ,まさひろ
+みやぐち,たかひろ
+みよし,ゆうこ
+みずた,じゅんこ
+もものい,けいすけ
+ほんだ,たけし
+もりた,やすし
+もりた,あきひこ
+もり,あきら
+もり,あつし
+もり,かずひろ
+もり,みのる
+もり,たかし
+むねむら,としみつ
+むらかみ,ようじ
+むらおか,こうじ
+みょうが,ひろき
+ながみね,まさし
+やまだ,しんいち
+ながお,としかず
+ながた,けんじ
+ないとう,こういちろう
+なかがわ,たろう
+なかいち,ひろのり
+ささき,つかさ
+なかじま,ひろし
+なかしま,そうたろう
+なかこじ,たつや
+なかむら,まさふみ
+なかむら,さとし
+なかむら,とおる
+なかむら,じゅん
+なかむら,だいすけ
+なかむら,ゆうこ
+なかむら,よういち
+なかむら,くみこ
+なかにし,としゆき
+なかの,てつや
+なかの,きんや
+なかしお,こういちろう
+なかた,かなこ
+なかやま,たかし
+なんけ,あつし
+ならざき,たいちろう
+なりせ,ゆきひろ
+なるおか,いさむ
+ねもと,ただし
+にむら,すすむ
+にむら,まさゆき
+にしむら,つとむ
+にしの,かずまさ
+にしした,てつのり
+にしうち,しゅういち
+にしやま,なおひと
+やじま,よしえ
+にしざわ,ゆたか
+にわ,あきら
+のぶなが,みつし
+のがみ,まこと
+のぐち,しんいち
+のぐち,みゆき
+のま,とよみ
+のま,こういち
+のむら,こうじ
+のむら,のりお
+のむら,しゅんいちろう
+のせ,ただあき
+のざわ,よういち
+ぬきい,かつみ
+ぬまお,あきら
+ぬまた,かずひろ
+おちあい,たかゆき
+おちあい,よしお
+おだはら,いくお
+おだ,みのる
+おがさわら,しゅうじ
+おどまり,とういちろう
+おかど,ふみお
+おまさ,あきら
+おなが,ひろゆき
+おおの,ひでゆき
+おおさき,あつし
+おおさわ,ひでたか
+おおすみ,かずゆき
+やました,まさる
+おおた,なんてつ
+おおた,たかし
+おおつか,たつや
+まつなが,よしあき
+おおやま,のりゆき
+おかだ,りえ
+おかだ,たけし
+おかだ,ひろふみ
+おかだ,よしのり
+おのでら,たかお
+おかもと,ひろゆき
+おかざき,たかあき
+おくだ,としゆき
+おく,のぶゆき
+おの,さちこ
+おの,けいいちろう
+おりて,けんいち
+おさだ,むつみ
+さいとう,むつお
+さいとう,しんご
+さいとう,しゅうじ
+さいとう,よういち
+さいとう,ゆたか
+さいとう,かずひろ
+さいとう,あきひろ
+さかい,いちろう
+いしざき,ゆきのり
+さかもと,ひろし
+さかのうえ,ひでお
+さかうえ,かずまさ
+さこだ,のぶお
+さくらい,しげのり
+さくらい,たかし
+さぬき,りゅうたろう
+ささき,あきと
+とみた,ともなり
+さとう,てつお
+さとう,なおき
+さとう,よしのり
+さとう,まさゆき
+さとう,としや
+さとう,あつこ
+さわだ,まさと
+せお,けんさく
+せざい,かずやす
+しばた,たけひこ
+しばた,よう
+しがき,あきひこ
+しみず,ひろむ
+しみず,よしみ
+しみず,あきら
+しみず,あきとし
+しみず,ひでお
+しもむら,ひろあき
+しのはら,かずひろ
+しらつ,まこと
+しろした,さとし
+しょうじ,ゆうこ
+しょうみつ,よしひろ
+そだ,かつすけ
+そもり,たつお
+そう,かずひこ
+なか,ゆうじ
+すぎむら,けいし
+すぎの,まさひろ
+すぎさわ,のぶゆき
+すぎた,さゆり
+すぎうち,しんすけ
+すぎやま,あきのり
+すぎやま,まさのり
+すぎやま,かずみ
+すずき,しんや
+すずき,ゆうじ
+すずき,しん
+すずき,ひろあき
+すずき,としあき
+すずき,ひでと
+すずき,こういち
+すずき,ゆうこ
+たちばな,たかし
+たいら,あきら
+たいら,ひであき
+たかだ,ひろゆき
+たかぎ,まさかず
+たかはし,のりいつ
+たかはし,たかゆき
+たかはし,はじめ
+ますざわ,ひとし
+たかはし,まさあき
+たかま,ひさと
+たかの,みえこ
+たかの,かずよし
+たかさか,はじめ
+たかせ,かつじ
+たかた,くみこ
+たかやま,あつし
+たかやなぎ,ありひろ
+たけだ,えり
+たけだ,あきら
+ふじい,あつこ
+たけのり,いくし
+たけした,ひろかず
+たけうち,ゆうじ
+たけうち,たかとし
+たきざわ,まさあき
+たきざわ,つよし
+たまき,さとこ
+たむら,あきひろ
+たむら,てつね
+たむら,のぶお
+たなか,しょうご
+わたなべ,あきひろ
+たにやま,のぼる
+たに,かずひこ
+てらきた,ながのり
+てずか,しんいち
+とばり,すすむ
+とがし,じゅんいち
+やまだ,けんいち
+ときぞの,しげお
+とみなが,もとひさ
+とみなが,しんじ
+とみた,しんじ
+とみた,てつお
+ともおか,ひとし
+とのさき,よしのり
+とりざわ,えみ
+こいけ,ひろこ
+とよかわ,まさよし
+とよかわ,ひさよし
+つぼい,ただし
+つかだ,とおる
+つくい,ひさし
+つるかわ,えいじ
+つつい,としかず
+つつい,ゆうじ
+うちだ,ひろき
+うちだ,じゅんいち
+うちま,しゅんいち
+うちやま,あきひろ
+うだ,ひさよし
+うえだ,かずのり
+うえの,きよし
+うえの,のりお
+うえの,たかし
+うけがわ,たかゆき
+うまずめ,よしひろ
+うめむら,きみひろ
+わだ,ひろし
+わだ,やすひこ
+わたなべ,りょう
+いいだ,さとし
+わたなべ,たかし
+わたり,やすよし
+やぎ,よしゆき
+やまだ,ひろゆき
+やまが,ひでお
+やまぐち,まさのり
+やまぐち,ひでお
+やまぐち,まさし
+やまもと,てつや
+やまもと,まさゆき
+やまもと,かずゆき
+やまもと,ひでし
+やまもと,まさのり
+やまもと,かずと
+やまもと,かおる
+やまもと,まさよし
+やまなか,えいじ
+やました,さとる
+やまうち,かずあき
+やまざき,はるひこ
+やまざき,まさとし
+やまざき,けんじ
+やの,ゆきお
+やの,こういち
+やすだ,たけし
+やすまつ,かつなり
+やすもと,こうじ
+やすにわ,たかゆき
+よだ,おさむ
+よだ,いさお
+よしだ,よしひろ
+よしい,たつや
+よしなが,ゆみこ
+よしの,たつみ
+よしたけ,あきひろ
+たきざわ,たかし
+やまぐち,かずよし
+かばしま,かずひさ
+さくら,ゆうすけ
+むらやま,ひろゆき
+ひきだ,かずみ
+むらい,くにひろ
+ほ,あきら
+えんど,せいじ
+てらむら,たつお
+わたなべ,たかひこ
+いまい,しげや
+もりもと,としかず
+こやり,せいじ
+まつみや,ゆういち
+しばた,かずお
+ちしろ,よしひろ
+いたみ,ひでお
+おざき,ひとし
+ふくもと,まさつぐ
+おかだ,ひろし
+さわだ,ひろし
+さくらい,たかし
+はやし,よしのり
+まつおか,やすのり
+みよし,のりよし
+やまなか,こうじろう
+しみず,ひとし
+こはら,まさのり
+にしかわ,ひろし
+いまい,やすお
+ふじむら,ひろゆき
+こじま,やすゆき
+こばやし,ひろし
+きくち,かつひこ
+さいとう,みつる
+やました,ひであき
+あべ,しんじ
+てずか,たかし
+たなか,わたる
+にわ,みのる
+かめい,みずほ
+やの,みつお
+なかまる,やすし
+おおはた,まさのり
+やすやま,まさひろ
+かすが,みつお
+いしい,あきひこ
+ふじもり,のりこ
+いわもと,ひろし
+やました,るみこ
+きた,ともみ
+むらおか,ゆうこ
+いぐさ,よしずみ
+ながさわ,ひろじ
+やまぐち,やすひろ
+おだじま,ゆたか
+おおた,まみ
+はぎの,なおいちろう
+やぶき,としあき
+いき,よしとし
+さいとう,まさと
+やまだ,たかし
+なかやま,
+むらまつ,かおる
+たしろ,しょういち
+いしはら,まさゆき
+しばおか,たつお
+なかお,やすのり
+ふじた,としき
+さくた,まさゆき
+はた,すすむ
+おおやま,ただし
+たご,きょうこ
+まつむら,かずお
+いとう,まさゆき
+きむら,たけお
+あおき,みつたか
+こまがた,ひでとし
+ならむら,かずこ
+ふじもと,まさき
+みやさか,としひこ
+はやし,まさひろ
+さいとう,かずひこ
+おがさわら,しょうじ
+おおつか,としゆき
+かわい,ともゆき
+しまず,よういち
+たかはし,きしこ
+まえざわ,いずみ
+はだ,かおる
+まつひら,えり
+すぎはら,のぼる
+なかじま,よしのぶ
+はたけやま,てつや
+あおき,まさひこ
+しぶかわ,きよひさ
+いしだ,しげる
+おかだ,たかし
+いとう,あきら
+かとう,まさひろ
+こばやし,なおみつ
+むらさわ,みのる
+みほ,まさのり
+すがね,よしのぶ
+いしかわ,よしひこ
+おか,やすひろ
+いわみ,ゆみこ
+なかやま,ひろし
+いとう,かずき
+すぎやま,しんいち
+かしもと,よしこ
+なかむら,まさゆき
+あおやま,ひでのり
+しばた,けんいち
+まつお,よしのり
+しのむら,あおい
+ふるかわ,よしふみ
+もとき,しゅういち
+わたなべ,ちお
+あんどう,まさひろ
+たけひ,さちこ
+いしい,あきふみ
+のちせ,かずひこ
+みやなが,としこ
+しんどう,ひろみ
+おおた,みよこ
+たに,よしあき
+こむろ,ふみのり
+いわさ,ひろみち
+まつもと,ひであき
+きむら,ひさと
+あおき,あきひこ
+まつばやし,ひろし
+ごとう,ふみゆき
+おがわ,あきら
+すぎたに,はるお
+おくの,ゆきお
+さくらだ,しんぺい
+むこやま,のりこ
+いとう,さとし
+やまもと,ただし
+やまもと,まさとし
+かねこ,しゅうへい
+やまざき,やすひろ
+なかむら,とも
+みわ,おさむ
+さむかわ,しろう
+なかだ,としゆき
+よしとみ,けんいち
+たかしま,つねじ
+いしげ,あきこ
+すえはら,ひろゆき
+いのうえ,ひでみ
+のじま,
+さくま,さちえ
+さの,よしみち
+むらおか,かつじ
+みうら,りゅうぞう
+さかもと,じゅん
+なるお,せいこ
+はせがわ,みつひろ
+おかだ,てつお
+やひろ,のぶゆき
+ばば,たくや
+あた,あやの
+ながせ,きよし
+かわえ,いずみ
+みうら,まきよ
+ふじた,さとこ
+つるみ,よしお
+もちずき,えみこ
+よしだ,かずあき
+おかもと,まさふみ
+やすもと,みつはる
+ねもと,たくじ
+ひだか,うえみつ
+ますだ,くみこ
+とくなが,ふみひと
+なかざわ,すすむ
+ふじなわ,よしはる
+よびかわ,かずひろ
+きただ,たけし
+よしの,やすひろ
+ばば,よしと
+くろかわ,ひろし
+かとう,たかし
+わたなべ,としお
+つちだ,あつこ
+すずき,みゆき
+みずの,あきら
+たにもと,たくみ
+いけの,めぐみ
+いとう,しょうこ
+たけだ,とおる
+まえだ,こうへい
+くどう,かつみ
+かげやま,みねお
+やまかげ,ようじ
+さえぐさ,れいこ
+みずたに,なおこ
+くどう,としひこ
+こおりやま,みずほ
+かたよせ,よしえ
+おさだ,けいこ
+やぎはし,しゅういち
+すみ,たつお
+たなか,あつし
+くどう,ゆきお
+たけひ,あきら
+あめみや,みちひろ
+なかむら,たかし
+きよみつ,けんじ
+いずみだ,よしか
+ふなき,ひろあき
+たけした,かずひこ
+みうら,きくお
+いしばし,のぶこ
+もりあい,けいじ
+むらやま,えいじゅ
+おさわ,やすのり
+ふかだ,よしかず
+やまだ,ひでひこ
+いとう,あきら
+おのでら,とみお
+はやさか,まさみち
+おおつか,ひでひこ
+とおやま,ひろたか
+かわはら,みつる
+えびさわ,まさき
+やまかわ,てつや
+やまもと,やすとも
+すずき,とおる
+おやまだ,たかし
+まつやま,りゅういち
+あべ,のぶひろ
+あべ,やすお
+あべ,かずまさ
+あべ,ゆきお
+あげた,じゅんいち
+あかはね,ひでひろ
+あけなが,じゅん
+あきやま,しげお
+あきざわ,ひでかず
+あまだ,みきお
+あまの,まさし
+あもう,あきお
+あんどう,ひであき
+あんどう,なおき
+あんどう,としふみ
+あおの,ひろき
+あおやま,いわお
+あらい,かずひろ
+あらかわ,ひでし
+ありもと,ひでき
+ありお,まこと
+あさい,あきら
+あさかわ,よしひと
+くろき,ゆきのり
+あずま,しんじ
+ばんの,まさきよ
+べつやく,けんご
+びとう,じん
+ちば,ひろし
+ちゅう,かつき
+えだ,けんいちろ
+えんど,なおみ
+えさき,しんいち
+ふじい,ひろし
+ふじい,ふみお
+ふじもと,あきら
+ふじた,きよなお
+ふじた,あきひろ
+ふじわら,さとし
+ふかざわ,ともひと
+ふくだ,すすむ
+ふくはら,やすひこ
+ふくしま,かずよし
+ふくどめ,かずひさ
+ふくやま,さとし
+ふなばし,まさゆき
+ふるだて,あきひこ
+ふるさわ,しんじ
+ふるた,りきや
+ふるや,しんいち
+ふしき,ゆういち
+はまだ,こういちろう
+はなだ,かつのり
+はなみ,ひでお
+はらだ,あきら
+はるかわ,いずみ
+はせがわ,よういち
+おおつ,むねひろ
+はしもと,あつし
+はしもと,えみこ
+はすもと,あつし
+はっとり,つよし
+はやさか,たかお
+ひだか,けさお
+ひぐち,けいこ
+ひぐち,ふさゆき
+ひじくろ,なおゆき
+ひらかわ,じゅんいち
+ひらの,ひろよ
+ひらた,まさひろ
+ひろせ,さちこ
+ひさだ,たかし
+ほり,のりやす
+ほうや,かずひこ
+ほんだ,しげゆき
+ほんま,たつや
+たなか,つよし
+ほしじま,たつお
+ほしか,たけし
+ほそだ,ちえみ
+いちかわ,やすひろ
+いちむら,けいご
+いがの,みどり
+いいだ,まさゆき
+いいおか,ひろし
+ながの,さとる
+いけざわ,のぶやす
+いもと,すみれ
+いなずみ,やすはる
+くしみや,しんいち
+いのうえ,しんや
+いのうえ,あきら
+いのうえ,ともゆき
+いぬつか,なおき
+いさじ,ひでと
+いしだ,しゅういち
+いしだ,いさお
+いしだ,くにあき
+いしがき,えりこ
+いしがみ,じゅんいち
+かじたに,おさむ
+いしはら,ひろゆき
+いしむら,まさひこ
+いしやま,しゅういち
+いしざき,のぶお
+いそべ,よしひこ
+いそざき,まさあき
+いとう,ちくさ
+いとう,ひさと
+いわあさ,けんたろう
+いわい,なおたか
+いわま,さとし
+いわもと,よういち
+いわなが,ひろのり
+いわした,しこ
+いわた,かずまさ
+いわた,えいじ
+かどわき,さとし
+かげやま,けんいち
+わたなべ,いずみ
+かみや,くにあき
+かみや,けんいち
+かんばやし,きんじ
+かのう,ひろし
+かりや,なりやす
+かさき,じゅん
+かしま,まさお
+かすや,あきら
+かとう,たかき
+かとう,かずひろ
+かとう,けんじ
+かとう,みつぐ
+かとう,ひでのり
+かとう,ひろゆき
+かわばた,だい
+かわばた,あつし
+かわぐち,ひでみち
+かわはら,ひろみ
+かわはら,かずふみ
+かわじり,みちお
+かわかみ,てつお
+かわくぼ,かずとし
+かわまた,たかのぶ
+かわむら,ひとし
+かわの,のりあき
+かわさき,まさひと
+かわしま,としひさ
+かわず,まさのり
+きばし,ひでひこ
+きまち,まさき
+きもと,たけし
+きむら,たくや
+きんばら,よしみち
+きのした,やすし
+きのした,ひろき
+きりさわ,いちろう
+こばやし,じゅんいち
+こばやし,ひろあき
+こばやし,まさお
+こばやし,ふじひこ
+こだま,こうじ
+こだま,おさむ
+たかむら,もとひこ
+こひなた,ゆうすけ
+こんの,ひろし
+こんの,たかひろ
+こやま,こうじ
+こずき,としお
+とうどう,こうじ
+こじま,しんじ
+こんど,あきら
+こんど,たかし
+こんど,まさとし
+こんの,かおる
+こたき,ひとし
+こやいし,みか
+こやなぎ,のぼる
+くぼ,けんたろう
+くどう,きみひと
+くまがい,なおゆき
+くまき,しんじ
+くらち,たかゆき
+くらた,こすけ
+くりた,みき
+くりやま,しゅんじ
+くろだ,こすけ
+くろかぎ,まさのぶ
+くろさわ,しんじ
+くろさわ,せいき
+くわの,ひろたか
+まえばし,としあき
+まえざわ,のぶゆき
+まの,よしお
+まるわか,ひでなお
+うちやま,たつお
+ますだ,じゅん
+まつい,しげき
+まつい,さとし
+まつもと,しんいち
+まつもと,ひさと
+まつなが,まさとし
+まつしま,もりひろ
+まつした,ただし
+まつざき,たけし
+いないし,よしお
+みかみ,けいいち
+みなぎ,あきみつ
+みつやま,こういちろう
+みうら,しげき
+みやけ,あつし
+みやもと,あつこ
+みやた,こうじ
+みやうち,まさき
+みやうち,いちろう
+みやざわ,あきら
+みやざわ,たかし
+みよだ,たかひさ
+みぞぶち,けんじ
+みぞた,たけお
+ちば,ひろひさ
+みずはし,まこと
+みずまち,せいじ
+みずたに,さとし
+みずたに,つよし
+みずたに,ひろゆき
+もちずき,みのる
+もりもと,ななこ
+もりたに,たかし
+もりた,とよひこ
+もりた,たかし
+もりわき,しんいちろう
+おくい,たけひこ
+もり,たけみ
+もり,たかゆき
+むこやま,ひろゆき
+むらて,しんいち
+むとう,かつき
+ながい,みつひろ
+ながの,みつとし
+ながおか,たかひろ
+ながせ,かつみ
+ながた,ひろゆき
+ながた,もとき
+ながわ,しんいち
+なかまる,よしき
+なかむら,あきら
+なかむら,ともこ
+あべ,よういちろう
+なかむら,としや
+なかむら,あきら
+なかしま,ひさよし
+なかしお,ひろゆき
+なか,のりこ
+なみき,のりかず
+なんぶ,ひろしげ
+やまぐち,しんじ
+にいみ,しげふみ
+にしだ,ひろよし
+にしだ,えいじ
+にしだ,まさあき
+にしだ,すすむ
+にしくぼ,あきひろ
+にしむら,たかあき
+にしむら,つよし
+にしお,まさと
+にしお,しんじ
+にしやま,たかし
+やがわ,けいじ
+にった,ひろみ
+のべおか,あきほ
+のじり,よしのぶ
+のむら,てつや
+のなか,かつし
+おばな,みのる
+おちあい,としゆき
+おちみず,たかし
+おち,みつのり
+おだおおはら,しんご
+おだ,ひろかず
+おがた,まさき
+おがわ,まさとし
+おがわ,えつこ
+おぐら,なおゆき
+おおひら,のぶゆき
+おおひら,いちろう
+おおいし,あきら
+おおいし,まこと
+おき,かゆ
+おおくぼ,かずこ
+おおの,けいこ
+おおぬま,しげのぶ
+おおぬま,なるし
+おおたき,まさひで
+おおた,とおる
+おおた,よしなが
+おおた,こういち
+おと,まさずみ
+おおつぼ,ひろふみ
+おおやぎ,まさひろ
+おおやま,あつし
+おいえ,かずや
+おじま,あきら
+おかべ,いちろう
+おかだ,とおる
+おかもと,まさき
+おかね,たかし
+おかの,ひでお
+おかの,まさこ
+おかざき,はるひこ
+わたなべ,まさとし
+おくだ,あつひろ
+おくの,かつし
+おなや,かずこ
+おの,きよし
+おの,しんや
+おおの,ゆたか
+おさない,きよあき
+おざき,ひでお
+さいとう,よしみ
+さいとう,じゅん
+さじ,やすひで
+さじ,かずお
+さかい,かずひこ
+さかい,ともすけ
+さかくら,たかひろ
+さかうえ,やすゆき
+ささべ,まこと
+ささき,ひでかず
+なみき,ひろし
+さたけ,かつひろ
+さたけ,わき
+さとう,しゅういち
+さとう,たけし
+さとう,なおき
+さとう,ゆうぞう
+さとう,しげき
+さとう,ひろし
+さわだ,はじめ
+せきぐち,ひろあき
+せきもと,としゆき
+せきね,きいち
+せきおか,まもる
+せきや,ひろあき
+せき,じゅんいちろ
+せんた,のりあき
+しばた,さとし
+しいな,ふみはる
+しいや,ひでき
+しまばやし,まもる
+しまだ,しんいちろう
+しまだ,みちとし
+しまむら,あきひと
+しみず,ひでとし
+しみず,いたる
+しもむら,かつあき
+しのだ,こうじ
+しのはら,もとゆき
+しおざわ,のぶゆき
+しらいし,ゆうじ
+しらさき,ようこ
+しらとり,ひでじ
+しさい,まさひろ
+しょうだ,けいすけ
+そう,なおき
+そのべ,とおる
+すどう,しゅんいち
+すどう,さとこ
+すぎうら,なおき
+すぎやま,りょういち
+すぎやま,ともじ
+すみだ,ひろき
+すみかわ,ひとし
+すずき,みねかず
+すずき,ひろし
+すずき,あつし
+すずき,としなり
+すずき,よしゆき
+すずき,やすぞ
+すずき,はじめ
+すずき,かずあき
+ほそかわ,ゆり
+たぶし,いくた
+たちざわ,のりふみ
+ただ,たかあき
+ただ,ひろとし
+たかた,ゆうすけ
+たかがき,ひでかず
+やまざき,なおき
+たかはし,よしつぐ
+たかはし,ひろき
+たかはし,まさやす
+たかの,たかひろ
+たかさき,たかし
+たかす,かずよ
+たかとり,こうじ
+たかやま,まさみ
+たかやま,しげる
+たかやま,ゆうじ
+たかや,よしかず
+たけだ,たえこ
+たけだ,ひろゆき
+まつおか,よしひろ
+たけい,のぶひこ
+たけうち,ともおき
+たけうち,のりとし
+たけ,けいこ
+たきみや,ともひろ
+たまたに,かずあき
+たむら,よしひろ
+たむら,けんじ
+たなか,かずひさ
+たなか,ともやす
+たなか,あやこ
+たなか,のりひろ
+たにもと,しんいち
+たにやま,あきひこ
+たんの,おさむ
+たの,ひさお
+てらざわ,あきら
+とくしげ,さとる
+ごとう,なおき
+とみなが,ひろひさ
+とんしょう,ひでゆき
+つぼい,しょういち
+つぼた,しょうじ
+つじむら,なおき
+まつむら,あきら
+つかだ,ひでき
+つねよし,さとみ
+つるおか,まさや
+つる,よしお
+うちだ,ひでゆき
+うえだ,たもつ
+うめさき,きよし
+うらかわ,ゆうじ
+うらかわ,かずし
+わだ,じゅん
+わかばやし,けんじ
+わかまつ,よしかず
+わたなべ,あつこ
+わたなべ,たかし
+わたり,こうじ
+やべ,こういち
+やはぎ,しんじ
+やまだ,かずひろ
+やまだ,かずひろ
+やまこし,まさゆき
+やまもと,そういち
+やまもと,あつし
+やまもと,よういち
+やまもと,さち
+やまもと,まさみ
+やまうち,とおる
+やまの,ひろふみ
+やまおか,ともたか
+やました,としひで
+やまうち,たけし
+やまざき,ひろまさ
+やまざき,ゆかり
+やなぎしま,ますみ
+やまもと,みかこ
+やの,たかひこ
+やざき,たけし
+よご,やすはる
+よこい,かつまさ
+よこみぞ,としき
+よこた,ゆうじ
+よこた,ひさお
+よこた,ゆうこ
+よしだ,しんいちろう
+よしだ,まちこ
+よしふさ,いくふみ
+よしはら,ともまさ
+よしいえ,はじめ
+よしかわ,ちえ
+よしかわ,みつひろ
+よしお,ゆうじ
+ゆあさ,まさよし
+ゆき,あきら
+あだち,としゆき
+おおにし,かずお
+おおた,みわこ
+あさの,みちこ
+にしむら,みつよし
+やまだ,ひろのり
+さい,くにお
+みやもと,かずお
+すずき,かずひこ
+ふくい,くにや
+おくだ,ひさこ
+さいとう,たかお
+ふるや,かつみ
+もとやま,なおひろ
+よしざき,ゆういち
+なかむら,あつろう
+ときわ,しゅういち
+いなだ,まさつな
+ときわ,のりゆき
+よしだ,たかゆき
+たかの,けいこ
+うえだ,ともこ
+つちや,ゆうこ
+しもかわ,ふみひこ
+まつい,かつみ
+すがや,よしお
+みのぐち,やすこ
+うえだ,ひかる
+いの,ともじ
+まえだ,まこと
+つぼた,のりお
+よしみ,いくお
+いちかわ,しげひろ
+ほり,ひでや
+はやし,ゆたか
+しばた,いくこ
+こばやし,ますひこ
+おおくぼ,たけし
+いわた,のぶゆき
+ふじた,まさひろ
+きたむら,かずお
+くろき,けいこ
+やまもと,たかし
+やまばた,ゆきこ
+さいとう,しゅういち
+ふじわら,ただし
+いとう,かずと
+いいけ,とおる
+さむかわ,あきのり
+あずま,まさき
+あおき,あつし
+ふじた,つねお
+みよし,としかず
+せきやま,よしお
+てらだ,てるひさ
+えんど,たけし
+かきもと,けんじろう
+ふるや,いわお
+まきむら,たけお
+こんの,ひろし
+すぎさき,としゆき
+よしだ,しげお
+はぎわら,ひろし
+やざき,ゆうじ
+にのみや,かずお
+こさか,ひろやす
+さの,しんご
+さいとう,だいすけ
+しもせ,たかよし
+たかはし,かずひと
+たつおか,まさき
+たばた,よしたか
+なおい,まさこ
+ながた,まさお
+にしおか,しげる
+まつかわ,あつし
+みずの,ゆうこ
+とくなが,けいこ
+むらかみ,ひろき
+やすかわ,としのり
+やまぐち,ゆきお
+よこうえ,ただし
+あずま,のぼる
+いなだ,みつゆき
+いしい,のぼる
+いまにし,たけお
+おかの,かねみつ
+きし,としこ
+くぼた,まさのり
+こみなみ,まゆみ
+あいやま,しょうじろう
+さの,ちから
+たきがわ,しげよし
+こんの,ひろやす
+せんだい,たかし
+にわの,ひですけ
+し,なおよし
+かとう,かずなり
+あかさか,くにお
+おんずか,ひろし
+こが,こういち
+はやかわ,ともみ
+はせがわ,まさよし
+ふるかわ,たけし
+ふじかど,ゆうじ
+とのかわ,たけし
+まつお,よしお
+きみずか,まさのり
+おち,まこと
+いちこはら,まさやす
+いけだ,あきこ
+あらたけ,いくお
+いけだ,ときお
+いとう,よういち
+いけだ,えつ
+いいだ,まさと
+おおくま,かずえ
+くさば,まさき
+こばやし,さよこ
+ごとう,かずや
+すずき,もとのり
+せきね,ひろし
+たかだ,としゆき
+こんど,ようすけ
+たけやま,けいしろう
+たかいち,おさむ
+そだ,けんじ
+たの,まこと
+しのざき,さとし
+はらだ,あや
+くどう,かつこ
+つのだ,なおこ
+ふるかわ,としあき
+もりた,まさゆき
+やまもと,とおる
+やました,よしはる
+ゆかわ,よしお
+よしだ,えいこ
+はやし,としたか
+たんの,えいいち
+たかはし,まこと
+なりあい,よしのり
+たかむら,あきお
+たんの,てつお
+こばやし,こういち
+ごとう,とおる
+ごうだ,きょうこ
+なかしま,みつお
+ほしの,ふみただ
+わこ,なおき
+すずき,しげお
+よしまつ,まさくに
+なみおか,しんじ
+やまぐち,ひろかず
+いしばし,まこと
+いしだ,せんや
+うちやま,せいじ
+えんど,しげる
+なかの,まさふみ
+いまい,かずお
+おさない,あつし
+さかもと,きよし
+しおみ,ちかし
+しまざき,なおき
+てるや,としや
+なかたに,なおき
+はぎわら,きよかず
+ひがし,しょうこ
+ほりうち,よしお
+みぞろぎ,なおき
+もり,たもつ
+いのうえ,たけひこ
+しだ,みちよ
+やまもと,みちこ
+やまもと,ひであき
+おおたき,かずや
+ふじ,さなえ
+あきもと,まもる
+いいじま,あきこ
+おぐま,ゆみこ
+さとう,たかお
+つちや,よしひろ
+さいとう,かずよし
+はら,せいいちろう
+ふじまき,しんや
+むろた,みつまさ
+もり,とおる
+みぞぐち,としゆき
+いけはた,ひろゆき
+おがわ,ひろたか
+うえの,まさとし
+たなか,かずひろ
+こばやし,まさかず
+くろす,やすじ
+きたがわ,ひろし
+しのみ,まさゆき
+はせ,ゆうぞう
+てるぬま,ようこ
+きくち,さとし
+はしもと,のりゆき
+おおかわ,しんと
+おおにし,そういち
+あべ,まさひと
+あだち,ひでき
+あだち,まさと
+あだち,としゆき
+あご,かおり
+あいはら,あきひこ
+あいはら,ひでお
+あいざわ,じゅんいち
+あかまつ,たつお
+あかま,ともみ
+あかせ,まさゆき
+あかやま,しんげん
+ふくしま,ともの
+あきば,つとむ
+あきの,はるき
+あきしか,ゆうじ
+なめき,なおみ
+あきずき,しんいち
+あまだ,ゆきお
+あまの,とおる
+あみの,のぶはる
+あんべ,やすし
+あんどう,ひろとし
+あんざい,たかよし
+あんざい,ひろし
+あおき,さとし
+あおやぎ,たかお
+あおやぎ,ひろゆき
+あおやぎ,ひさし
+あらかわ,たいすけ
+あらかわ,まさゆき
+あらき,としゆき
+あらやす,ひとし
+あら,あきお
+ありた,きょうこ
+あさだ,くにお
+あさだ,ひろあき
+あさかわ,のりえ
+あさくら,ともゆき
+なかさと,あきら
+あさの,よしひろ
+あさり,かずき
+あつみ,あきよし
+あわか,かつみ
+ばば,かずひろ
+ばん,けんぞう
+ばん,わたる
+ばん,こうたろう
+ちょうさ,まさし
+だいど,けいしん
+だいもん,なおひこ
+でむら,よしと
+どい,たかし
+えびぬま,あけみ
+えぐち,じゅん
+えはら,かずお
+えなみ,なつこ
+えとう,よしなる
+いわさき,かずお
+えざき,ゆうじ
+ふじえだ,じゅん
+ふじえ,こういち
+ふじがき,よしちか
+ふじい,としゆき
+ふじい,あきら
+ふじい,じゅんいち
+ふじい,みゆき
+ふじい,しげのり
+ふじかわ,しんいち
+ふじもり,ともの
+ふじもと,しょうご
+ふじもと,しの
+ふじの,たかし
+ふじおか,やすし
+おぐら,あやこ
+ふじた,まさと
+ふじた,さとる
+ふじた,ゆきお
+ふじた,しょうじ
+ふじわら,ひろし
+ふかだ,あつし
+ふかお,みつひろ
+ふかお,みさき
+ふかせ,
+ふくち,よしひろ
+ふくだ,ゆうこ
+ふくだ,ふみひこ
+まつかわ,ひでお
+ふくだ,みか
+ふくだ,ゆきこ
+ふくだ,けんじ
+ふくはら,ゆきお
+ふくい,ひろし
+ふくい,じゅんいち
+ふくおか,しんご
+しが,なおと
+ふくしま,あつし
+ふくしま,ちかこ
+ふくしま,なおき
+おおの,なおき
+ふなつ,としゆき
+ごうだ,よりこ
+ごうだ,ひであき
+ごう,かいろう
+こぐれ,きんや
+ごとう,たかし
+ごとう,ゆきよ
+はが,りょういち
+はぎわら,きくお
+はまだ,あきお
+まえだ,けんいち
+はまはた,のぼる
+はまの,のぶひろ
+はなぶさ,りゅういちろう
+はなた,よしじ
+はなみつ,よしたか
+はんだ,すみと
+はらだ,あやこ
+はらだ,ふみお
+はらだ,じゅんいち
+はらだ,まさのり
+はら,まさゆき
+はら,みゆき
+はせがわ,まこと
+はしぐち,いさお
+はしもと,まさとし
+はしもと,のりき
+はたけやま,さとし
+はたなか,きよし
+はつしま,けん
+はっとり,よしひさ
+はっとり,つねひさ
+はっとり,まさこ
+はっとり,ふみお
+はっとり,ゆきひこ
+はっとり,よしのり
+はやかわ,あきら
+はやしだ,まさや
+かんだ,けんじ
+はやし,こうじ
+はやし,つよし
+はやし,ひろし
+はやし,かつみ
+とびかわ,みゆき
+ひげた,よういち
+ひぐち,みつひろ
+ひぐち,ゆうこ
+ひじかわ,よしのり
+ひかい,まどか
+ひなた,じゅん
+ひの,しょういち
+ひの,たかゆき
+ひらぎ,やすし
+よもだ,かずと
+ひらの,まさのぶ
+ひらの,ひろゆき
+ひらさわ,かずひろ
+ひらた,まさひろ
+あさの,ひろし
+ひらた,ひさお
+ひらつか,たけし
+ひろかわ,ふみあき
+ひろなか,かずひさ
+ひろせ,ひさゆき
+たしろ,きみこ
+ひろせ,まこと
+ひしぬま,ひろのぶ
+いわもと,じゅん
+ひうら,ひとし
+すぎもと,せいいち
+ほんま,やすゆき
+ほんま,つよし
+ほんま,たいら
+ほんま,たつろう
+ほりかわ,じゅんいち
+ほりお,かつよし
+ほり,かずお
+ほり,あつし
+ほり,こういち
+ほしの,しんじ
+ほしの,あきこ
+ほしの,ふとし
+ほし,ひろこ
+ほそ,かずみ
+ほたて,ゆか
+いちかわ,ゆみこ
+いちかわ,さとし
+いちき,たけし
+いちのせ,あり
+いだ,なおき
+いでい,まさかず
+いがらし,ゆうじ
+いぐち,ごう
+いいだ,えいざぶろう
+いいだ,ふじお
+いいじま,ひろゆき
+いいじま,かずのり
+いいむら,よしのぶ
+いいの,ひでき
+いいずか,ひろし
+いいずか,かつひこ
+はるた,としこ
+いけだ,なおひろ
+すずき,とおる
+いけだ,くにひろ
+いそべ,こうじ
+いけやま,すぎお
+いくた,としあき
+いまいずみ,ちずこ
+もりした,しげき
+いまい,ただし
+いまむら,まなぶ
+いまむら,のりゆき
+いなみ,けんや
+いのうえ,やすひで
+いのうえ,ひろし
+いのうえ,ひろし
+いのうえ,ひろたか
+いのうえ,みつこ
+いぬい,ゆきとし
+いしだ,まなぶ
+いしだ,としひろ
+いしだ,ゆたか
+いしぐろ,まり
+いしぐろ,ひろし
+いしはら,じゅんいち
+いしい,かおる
+いしい,けいいち
+いしい,こうじ
+ゆきまさ,まさとし
+いしかわ,たかし
+いしかわ,ようこ
+いしくら,ゆたか
+いしもり,ひろあき
+いしもと,りえ
+いしもと,さちこ
+いしおか,ゆか
+いしおか,のぶお
+いしわた,なおひさ
+かん,よういちろう
+いしざか,かよこ
+いそがい,たかひろ
+いたばし,しんいち
+いたばし,しげき
+さぎや,ひであき
+いとう,てつや
+いとう,あけみ
+いとう,のぞむ
+いとう,なおよし
+いとう,かずしげ
+いとう,なおゆき
+いとう,たかし
+さかい,こういち
+いとう,かずゆき
+いわい,かおる
+しまむら,ふさちか
+いわい,きょうこ
+かわなか,かずみ
+いわくぼ,たかゆき
+いわもと,さやか
+いわもと,ひであき
+たけだ,さちこ
+いわむら,ひろゆき
+いわなが,ひでお
+いわお,こういち
+いわさき,たつひこ
+いわさき,とらひこ
+せがわ,まさたか
+いわしろ,よしひさ
+いずみ,まこと
+かえりやま,なおき
+かがみ,いくお
+かがみ,しげよし
+かじたに,かずひこ
+やまもと,えいいち
+かきぬま,ひろあき
+かく,ひろゆき
+かまだ,まこと
+いながき,まさえ
+かまもと,たえこ
+かまたに,なおふみ
+かまた,ともこ
+やまだ,えいじ
+かめだ,あきこ
+かめや,ひでき
+かみ,まこと
+かみお,まなみ
+かみや,まさのり
+かもと,よりこ
+かなだ,まさたか
+かない,きょうこ
+かない,りえこ
+かなざわ,さだいち
+かんだ,たかひろ
+かねいち,あきお
+かねこ,ひろぶみ
+かねこ,ますお
+かねこ,しゅうじ
+かねこ,たけひこ
+かねこ,やえ
+かねこ,ひさし
+かねまる,あつし
+かりや,よしのぶ
+かるべ,きょうじ
+かしま,ひろゆき
+かしわぎ,よしゆき
+かしわぎ,ひろし
+かすや,けいご
+かすや,しょうこ
+かすや,たかし
+かたの,けんいち
+しらき,かつお
+かたおか,よういちろう
+かたおか,あつし
+かたやま,
+かとう,たてお
+かとう,ひろし
+かとう,ひろこ
+かとう,ひろや
+かとう,たけし
+ごとう,ひろかず
+かつや,ひろし
+かわだ,みちお
+かわだ,さちこ
+かわぐち,さとし
+かわはら,せいいちろう
+かわはら,ひろあき
+かわはた,ひろゆき
+かわい,じゅんいち
+かわい,かよこ
+かわい,みほ
+かわかみ,たけし
+かわきた,ともあき
+かわきた,やすこ
+かわむら,ゆきまさ
+かわむら,ゆき
+かわむら,まさゆき
+かわぞえ,みな
+ふたくち,ただし
+きだ,やすひろ
+きだ,よしふみ
+きど,あきお
+きはら,かつとし
+きくち,こうじ
+きくち,あいこ
+きくた,いさお
+きもと,かずまさ
+きむら,みのる
+きむら,なほみ
+きむら,しゅんいち
+きむら,すみひろ
+まつもと,たくろう
+きむら,としお
+きむら,じゅんこ
+おかざき,たけお
+きむら,ゆか
+きむら,あつし
+きのした,けいこ
+きし,きみひこ
+きす,じゅんこ
+きたかぜ,のぶき
+きたむら,あきお
+きうち,なおと
+きうち,たかぞう
+きよた,だいすけ
+こばやし,まさはる
+こばやし,けんじ
+こばやし,みよこ
+こばやし,よしゆき
+こばやし,たかし
+こばやし,ひであき
+こばやし,ゆういち
+こばやし,よしお
+こばやし,ひろひで
+ひろせ,はるお
+こでら,あきひろ
+こがい,ひさたか
+こぐれ,かずお
+もりた,みちひこ
+こもと,ようすけ
+こんの,あきひろ
+こさか,よしゆき
+こいけ,きよし
+こいけ,よういち
+こいし,あきお
+こじま,かずたか
+こじま,てつ
+こくほ,かつや
+こくまい,みえこ
+こまがた,まこと
+こまき,かずゆき
+こまつ,よういち
+こまつ,あつし
+こみね,かつのり
+こみやま,よしのぶ
+こもおか,ふみお
+こもり,しげのり
+こんど,ひろし
+こんど,みきお
+こんど,よしぞう
+こんど,たかゆき
+こんどう,たつと
+こんの,てつお
+こすぎ,よういち
+こうだ,としゆき
+こやなぎ,のぶひこ
+くぼた,ひろゆき
+くぼた,なおき
+くぼ,たかゆき
+くどう,ごう
+くが,しげる
+くじま,えり
+くまだ,ひろし
+くまき,まき
+くまくら,かつと
+くまもと,あきひこ
+くもかわ,ひろのり
+くらしま,こういち
+くりはら,こうじ
+くりはら,ゆみこ
+くりむら,しゅうじ
+くりす,ひろし
+くりやま,ゆきえ
+くりやま,じゅんいち
+くろだ,あきら
+くろかわ,ひろし
+くろき,のぶや
+くろさき,のぶあき
+くろす,ひろし
+くしだ,わたる
+くすだ,よしこ
+くわばら,いちろう
+うちだ,けいいち
+まえだ,やすひこ
+にわ,しげみつ
+まえひら,まさと
+まえかわ,ひでたか
+まきむら,ひろみつ
+まきの,ゆうじ
+まきの,まり
+ようこた,みちやす
+まるやま,ただし
+ますだ,みきお
+ますだ,てるあき
+ますひろ,きみ
+ますやま,たくじ
+まつばら,こうじ
+まつばら,やすなり
+まつだいら,まさと
+まつだ,しげお
+ささもと,さゆり
+まつだ,としみ
+まつふさ,かつじ
+まつい,とおる
+まつい,じゅんいち
+まつき,あきひこ
+かのう,ひろゆき
+まつもと,ゆういち
+まつもと,としゆき
+まつもと,ふじお
+はしもと,しょうじ
+まつむら,きにち
+まつむら,ひろゆき
+まつなみ,ひろゆき
+まつなみ,ゆきお
+ちば,てつや
+まつしば,こういち
+まつした,ひろし
+まつした,えいいち
+まつうら,いちろう
+まつざき,ただし
+いまい,まさゆき
+まゆやま,あつし
+めん,まさと
+みちがみ,のりお
+みはら,はるこ
+みき,あつし
+みもり,ひろし
+みなみぐち,かなめ
+みなずき,なおゆき
+みねむら,ゆかり
+みしな,かずひろ
+みつい,たけはる
+みうら,よういち
+みうら,けんいち
+むらかみ,まさはる
+みわ,しげゆき
+みやがわ,まさお
+みやぎ,みちこ
+みやはら,としお
+みやはし,きょうこ
+みやかわ,まさとし
+みやき,まさずみ
+みやもと,せいじ
+みやもと,ひろし
+みやもと,まさひろ
+みやさか,なおき
+みやたけ,しげみ
+みやた,としひろ
+みやた,ゆうじ
+みやた,まさみち
+くろだ,けいこ
+みよし,なおこ
+みずこし,まきお
+みずこし,としお
+みずの,たつや
+みずの,のぶはる
+みずたに,しんじ
+もり,しょうじ
+もり,のりこ
+もりかわ,あきこ
+もりき,やすひろ
+もりした,よしみ
+もりた,ただし
+もりた,かずひろ
+もりやま,としお
+もりぞの,つよし
+もり,さとる
+もり,かつとみ
+もり,やすお
+もり,ひろのり
+もろずみ,のぼる
+いのはな,かずお
+こじま,しんご
+むかい,たつみ
+むかい,さちお
+むらい,ちなつ
+むらかみ,とおる
+むらかみ,ちはる
+むらまつ,まさかず
+にわ,かつひろ
+むらた,さとし
+むらた,いちろう
+おおの,たかし
+むらやま,ちはる
+むとう,ひろや
+むとう,たかし
+むとう,あまね
+むつしか,えいいち
+ながい,ひろし
+ながい,かつゆき
+ながもと,けんいち
+あらい,たけとし
+ながお,やすなり
+ながさわ,あつし
+ながさわ,かずと
+ながやま,あきひろ
+ないとう,ふさのぶ
+ないとう,かつお
+なかばやし,かずひさ
+なかだて,こういち
+なかがき,まさのり
+ながえ,たかゆき
+なかがわ,てるじ
+なかがわ,としゆき
+なかごめ,よしなり
+なかひら,ゆたか
+なかい,えみこ
+なかじま,かつとも
+なかじま,みえこ
+なかじま,なおや
+なかじま,えり
+なかじま,つねあき
+なかじま,けいいち
+なかじま,なおひで
+なかまた,のりひろ
+なかみち,しゅんいちろう
+なかむら,まさき
+なかむら,としあき
+なかむら,まこと
+なかむら,てるひろ
+なかむら,しんじ
+なかむら,はじめ
+なかむら,のりあき
+なかむら,ひろゆき
+なかむら,かずひこ
+なかむら,まさゆき
+なかむら,なおき
+なかにし,としあき
+おおにし,まさのり
+なかにし,としゆき
+なかにし,のぶやす
+なかの,きよたか
+おかざわ,かよこ
+なかの,のぞみ
+なかの,よしふみ
+なかの,もえこ
+なかおか,てつや
+なかお,ふみこ
+なかお,えいじ
+なかせ,こうし
+なかそぎ,まさとみ
+なかた,しげこ
+なかつか,たかし
+なかつか,まこと
+なかやま,ひでき
+なかやま,あつし
+なかやま,たつや
+なかやま,こうへい
+なかやま,かつひこ
+なかざわ,みつぐ
+なみき,くにお
+ならしま,まさあき
+なら,たけひこ
+くどう,ひさし
+なつの,みちはる
+なつやま,ゆうこ
+えとう,ひろし
+にへい,たかし
+おくの,さゆり
+まえほり,ひろみ
+にしだ,ひとし
+にしぐち,たつお
+もり,ゆきこ
+にしかわ,まさし
+にしくら,しげる
+にしもと,まさき
+にしお,としひこ
+にしわき,けいこ
+にし,まさる
+にわ,まさき
+のぶまさ,みさと
+のだ,もとひこ
+のぐち,たかし
+のぐち,けん
+のほり,ひでゆき
+のたに,まさたけ
+のま,さとし
+のみやま,としろう
+のもと,としあき
+たんざん,みちお
+おおかわ,かずひこ
+ののやま,まさき
+のりかね,まさる
+のろ,せいいち
+の,しんいち
+おばな,ひろし
+おびなた,あきひこ
+おちあい,よしのり
+しまむら,ひろし
+おだね,よしかず
+おがわ,なおみ
+おぐら,ひでとし
+おぐら,せいじ
+おぐら,しんすけ
+おおぐろ,いわお
+おおばやし,けいぞう
+おおばやし,やすゆき
+おおば,えりこ
+おち,しんご
+おおで,としひこ
+おおほり,のりお
+おほ,こすけ
+おおいし,もといち
+おき,よしゆき
+おおくぼ,まさひろ
+おおくぼ,まさくに
+おおみち,たけのり
+おむら,つねあき
+おおにし,いさお
+おの,こういちろう
+おらい,すすむ
+おさき,さとし
+おおさわ,そういちろう
+おおさわ,ただし
+おおさわ,りゅうじ
+おおたに,けんじ
+おおた,なおき
+おおとも,あきお
+おざき,こうじ
+おおつか,たけし
+おおつか,としろう
+おおつき,てつや
+おおや,まさひろ
+おひゃ,くにひこ
+おおや,すぐる
+おかだ,つぐお
+おかだ,よしひろ
+おかだ,としひろ
+おかだ,しんいち
+おかはら,ひろき
+おかもと,よしお
+くさば,ひろし
+おかむら,まさかず
+おかむら,まさき
+おかの,ひろし
+とびた,しゅうへい
+ほそかわ,こうじ
+うえだ,とよかず
+こせき,ゆみ
+たざわ,しゅんじ
+やまざき,よしかず
+えぐち,ひろゆき
+もちだ,すすむ
+あきもと,きえい
+にし,あつき
+いまいし,しげとし
+たかやす,のぶよし
+はた,まさゆき
+ふじさわ,あきら
+むとう,ひさし
+もたい,しんいち
+ただ,たかゆき
+こいずみ,かずよし
+つぼくら,こうぞう
+ひらばやし,ひろじ
+つじかわ,ひろかず
+みついし,せいいち
+やました,けんじ
+まるおか,のぶたか
+ふかお,とおる
+つむら,かなこ
+まゆみ,としえ
+あらかわ,みどり
+おふち,じゅん
+ささもり,ゆたか
+さとう,あきら
+たかぎ,まこと
+たなか,まさみつ
+つぼご,ふみひこ
+とりさわ,ひろゆき
+なかぐき,けいご
+はせがわ,ともゆき
+はやし,こうじ
+ひらやま,しげる
+ふくしま,としき
+まつしま,かずひろ
+よしい,ひでき
+いしい,のりこ
+いまい,みゆき
+なかつじ,ゆきえ
+ほいだ,つねお
+さわはた,みつる
+たはら,しょうじ
+たかはし,みねまさ
+すずき,ひであき
+よこやま,けんじ
+いしかわ,けんじ
+あさの,よしたか
+かねこ,しゅうじ
+くろせ,ようすけ
+さかきばら,あらた
+かさま,けいこ
+すぎやま,よしまさ
+すだ,てつや
+たなか,あや
+つぼい,えつこ
+はしもと,ちえこ
+ふくち,さとみ
+あらい,ともこ
+たなか,けんじ
+やしま,なおゆき
+かわまた,たけのり
+すんだ,あつや
+みずたに,みのる
+やまこし,のりゆき
+あまがや,ゆめの
+あらき,ひさよ
+いまい,としはる
+いまざき,たかひさ
+きむら,かつひで
+すぎやま,いさお
+すずき,だいすけ
+つる,みのる
+はこざき,あきら
+たきざわ,つよし
+いとう,かずのぶ
+ますだ,よしのり
+つばき,ちあき
+みすみ,ちかこ
+やいた,まき
+かわつ,ひとし
+つかだ,たけひこ
+なかもと,ふみこ
+ふなびき,さなえ
+よしざわ,きょうこ
+とうま,ようこ
+せき,まり
+むらた,なおき
+かたやま,まさひろ
+きど,しゅうじ
+こばやし,こうじ
+しのみや,ともかず
+たなか,かずゆき
+はら,よしのり
+もりたに,しょうへい
+いちのせ,かずゆき
+ふじもと,かつゆき
+うえの,こうじ
+ししど,としのり
+みうら,すすむ
+うちだ,るみこ
+どい,こういち
+そすみ,としゆき
+よしだ,まさゆき
+たかはし,としお
+やまぐち,なえこ
+ささ,ゆきこ
+はせがわ,かおり
+あつた,よしお
+いちかわ,まさあき
+うの,さとみ
+おがわ,ゆきこ
+おだ,ひろかず
+たかさき,まきこ
+たかはし,つよし
+ただ,ただし
+たなか,ひろし
+とくなが,ひろし
+とみた,じゅんこ
+ないとう,りえ
+はらだ,えみこ
+ひらかわ,ともこ
+ふなもと,ひろたか
+どばし,ゆき
+みうら,ちこ
+よしだ,ひろあき
+おおたけ,じゅんじ
+くらた,やすひろ
+くりた,さとし
+だん,まこと
+もりしま,しんじ
+よしだ,ようじ
+わかばやし,ゆみこ
+あげまつ,ひろみち
+いしぐろ,こすけ
+かとう,かずひろ
+さいとう,しんいち
+ないとう,みちよ
+みやまえ,としや
+かどわき,あつし
+ふくもと,みきお
+にしはら,あきら
+おかやま,かずなり
+おかやす,みえこ
+くろかわ,とおる
+おきた,よしひさ
+おくみや,まさかず
+おくむら,だい
+おのだ,なるみ
+おのでら,ひとし
+おの,はるゆき
+おの,なおふみ
+おの,よしふみ
+まつい,てるお
+おそえがわ,やすなり
+おざき,のぶゆき
+おぜき,ひろゆき
+たかの,いさお
+りょうかい,よしき
+さげさか,りゅういち
+さぎや,きょういち
+さいた,まさひろ
+さいとう,あきみつ
+さいとう,ごろう
+さいとう,ひろゆき
+さいとう,つねお
+さいとう,りか
+さかぐち,ひであき
+さかい,ひろみ
+しまだ,ひろし
+さかきばら,いつろう
+さかもと,けんじ
+さかもと,まさき
+さかもと,むねひろ
+さかり,のぶひろ
+さかた,さとる
+さくま,しんじ
+さくらい,たかのぶ
+さくらい,たかし
+さくらい,よしひろ
+さんのうまる,ゆきお
+さの,ゆたか
+ささべ,たつろう
+ささき,しんご
+ささき,ともひろ
+ささき,たけし
+ささき,なおと
+よしだ,ひろし
+さとう,よしひこ
+さとう,かずのり
+さとう,たかのり
+さとう,はやと
+さとう,やすひこ
+さとう,よしゆき
+さとう,よしと
+さとう,あきお
+さとう,まさこ
+さとう,ともこ
+さとう,ゆういち
+さとう,ちあき
+さとう,かずや
+さとう,まさみ
+さとう,さとし
+さわいで,ゆういち
+さわい,こういちろう
+さやなぎ,まり
+せがわ,よしひろ
+せいみや,ひろし
+せいやま,しげき
+せきかわ,あきら
+せき,こうじ
+せき,たけし
+せんだ,ひろたか
+せんごく,きょうこ
+せの,としあき
+せしも,こうじ
+せたか,けい
+すが,りょういち
+みなみ,やすし
+しばた,ちあき
+しぶや,ひろみち
+しぶや,つよし
+しぶや,まさのり
+しいの,ひろこ
+しかた,たかひろ
+しきぶ,ひろし
+しまだ,まさひろ
+しまだ,ひろし
+しまがみ,としあき
+しまもり,まさひこ
+しまむら,ゆきのり
+しまざき,こう
+しまざき,たかあき
+しみず,えいぞう
+しみず,りえ
+しみず,ひろし
+しもだ,けいみん
+しもひら,こうたろう
+しのはら,あきひろ
+しのはら,まなぶ
+しのざき,のぶこ
+しのざき,ひろき
+しんぽ,かすみ
+しんたに,ゆうじ
+おおきど,そとひろ
+しおぬま,きよみ
+しおた,くにあき
+しおや,まさひろ
+しおざわ,いさお
+しらい,しげき
+しらさき,ひろし
+しらとり,まさとし
+しらとり,たかひろ
+しろき,ひとし
+しろした,しげき
+かしま,よしお
+しゅう,ごいち
+いまい,ひではる
+そえだ,ひろこ
+そが,いずる
+そわ,かずなり
+すだ,こういち
+すだ,まさる
+すだ,なおき
+すえだ,のりよし
+すえもり,さきこ
+すえおか,しょういち
+すがわら,しんじ
+すげの,やすひろ
+すぎもと,やすお
+すぎた,ゆういちろ
+すぎやま,みつお
+すぎやま,けいいちろう
+すぎやま,えいじ
+すみとも,のぼる
+すみ,ゆき
+すなが,ひでゆき
+すざき,てつや
+すずき,てるみ
+すずき,あきら
+すずき,やすし
+すずき,ゆきお
+すずき,しのぶ
+すずき,しんいち
+すずき,としや
+すずき,ひろし
+すずき,かずあき
+すずき,けいじ
+おおにし,まさはる
+すずき,のぶお
+すずき,のりゆき
+すずき,りょうすけ
+たぼ,しん
+たぶち,たつや
+たぶさ,としふみ
+たちかわ,やすゆき
+ひらき,ゆういち
+たがい,やすし
+たがわ,みほ
+たが,のぶたか
+たぐち,みさお
+たぐち,しん
+たぐち,みなこ
+たかばたけ,よういち
+たかぎ,けんたろう
+たかはら,としや
+たかはし,としゆき
+たかはし,ひろし
+たかはし,せいいち
+たかはし,よしひさ
+たかはし,はるさだ
+たかはし,まさこ
+たかはし,まさゆき
+たかはし,ひでお
+たかはし,かずしげ
+たかはし,のりひこ
+たかはし,とよみ
+たかはし,みのる
+たかいし,ともあき
+こばやし,かずひろ
+たかみ,みのる
+たかむら,しろう
+たかなし,よしのり
+はせがわ,ひろゆき
+たかの,きょうこ
+たかおか,たかき
+たかおか,のぶゆき
+たかたに,あきら
+たかつじ,かつじ
+たかつか,きよし
+たかつ,まさみ
+たかやま,しんいち
+たかやま,とおる
+たかやま,やすし
+たけだ,こういち
+たけだ,やすのり
+たけだ,たかかず
+たけだ,なおひと
+たけもと,のぞみ
+たけもと,かつし
+たけうち,たかこ
+たけうち,ひろかず
+たけうち,ゆういち
+たけうち,とおる
+たきもと,たかひろ
+たまち,ひろし
+たむら,としひろ
+たなべ,つかさ
+たなか,けいこ
+たなか,なぎさ
+たなか,たかゆき
+たなか,まき
+たなか,ひろふみ
+たなか,くにひこ
+たなか,かおり
+たんだ,みきこ
+たにだ,きみほ
+たにがわ,よしたか
+たにむら,よしなり
+たに,ひろぶみ
+たしろ,ゆきお
+ひらさか,のぶゆき
+たわだ,えいえつ
+たわら,しんじ
+てらだ,とよひさ
+てらさき,ひろゆき
+てらしま,ひでこ
+こばやし,たいぞう
+てらうち,やすみつ
+わたなべ,しんいち
+ときとも,まさのり
+とくだ,たかゆき
+さくらぎ,のりひさ
+とみもと,まさひこ
+とみた,ひでお
+ともみ,ひろみつ
+とんぐう,まさし
+とりうみ,ひろすけ
+とよだ,かつひさ
+とよさと,ひろし
+とよしま,てつや
+つちだ,じゅん
+つちもと,まこと
+つちや,めぐみ
+つだ,たつろう
+つだ,ゆか
+つじもと,ゆきお
+つじ,のりお
+つじ,ひろし
+つかごし,としかず
+つかもと,けいじ
+つきだて,ひろし
+もりた,こうぞう
+つるた,しのぶ
+つしま,ともあき
+つし,としひこ
+つつみ,すみと
+つやま,やすき
+うちだ,ゆきお
+うちだ,ようこ
+うちやま,たけし
+うだ,ゆかり
+うえだ,さおり
+うえだ,ひろし
+つかもと,ちえみ
+うえだ,ひでお
+ききょう,よしたか
+うえだ,いくえ
+うえぐり,とおる
+うえはら,ひろゆき
+うえまつ,かつや
+さとう,かずひこ
+うえの,ひでたか
+うえの,よしこ
+うえの,ひろゆき
+うえの,しげき
+うえの,ひでき
+うえやま,ひろのり
+うめだ,かなう
+うめかわ,かよ
+ながた,のりこ
+うらご,とよひろ
+うるしざか,ゆきお
+たかはし,しょういち
+うつのみや,しんぺい
+わだ,かずひろ
+わだ,みきえ
+わだ,しずお
+わかばやし,ゆみこ
+わかばやし,かずひこ
+わかまつ,かずき
+わかまつ,こうじ
+わきもと,なりと
+わくい,しゅうじ
+いとい,よしひさ
+わたべ,かつや
+わたべ,なおたか
+わたなべ,しゅんいち
+わたなべ,ひろし
+わたなべ,ただし
+わたなべ,えいいち
+わたなべ,ひでとし
+わたなべ,ひろゆき
+わたなべ,ひろゆき
+わたぬき,まさる
+やぶした,みどり
+やぶた,みつよし
+やぶうち,しょうへい
+やじま,ようこ
+やくしじ,ふみひろ
+やまだ,ゆきこ
+やまだ,ひろえ
+やまだ,ひさ
+やまだ,あきのぶ
+やまだ,あきお
+やまだ,えいすけ
+やまがみ,ひろふみ
+やまぐち,じろう
+やまぐち,こうじ
+やまかわ,しん
+やまこし,たかし
+やまもと,あきひろ
+やまもと,けい
+やまもと,まさみち
+やまもと,ひろゆき
+やまもと,えいじ
+やまもと,ひろふみ
+やまもと,まさのり
+やまもと,まさとし
+かわぐち,あきら
+やまむろ,ひろみち
+いわた,たけし
+やまおか,かずひろ
+やまさき,ひでくに
+やました,ひろし
+やました,つとむ
+やました,としあき
+やました,あきこ
+やました,ひろゆき
+やました,かずひで
+やました,かつゆき
+やました,あきら
+やまざき,ひろゆき
+やまざき,かおる
+やまざき,こうじ
+やながわ,まさひろ
+たかおか,ひかる
+やなせ,りょういち
+やの,ともゆき
+やお,えりこ
+やすだ,としふみ
+やすかわ,ひとみ
+よがい,こういち
+よこがわ,せいじ
+よこさわ,まさゆき
+よこた,みなこ
+よこた,やすし
+よこうち,つとむ
+なかやま,あつし
+よこやま,はるひこ
+よこやま,まさお
+よねはら,としゆき
+よねむら,ただし
+よしだ,まさとし
+みやむら,つとむ
+よしだ,きみあき
+よしだ,まさかつ
+なか,よしひろ
+よしむら,よういち
+よしむら,ひろみ
+ぬまお,みねお
+よしざき,えいじ
+なかむら,けんじ
+ゆあさ,りょうた
+ゆげ,たかひろ
+ゆかわ,よしたか
+まつだ,よしつぐ
+あべ,やすひろ
+はせがわ,かつまさ
+はしもと,ひとし
+ひらつか,たもつ
+ほしかわ,みのる
+ほそや,しょうじ
+いしはら,たかし
+いわき,たちはる
+かねだ,こうじ
+きむら,たけし
+こんの,まこと
+まつだ,よしひさ
+みやした,しげとも
+さかもと,まり
+のむら,しんいち
+おおばやし,えつこ
+さいとう,ゆきえ
+ささがわ,ゆうこ
+さとう,やよい
+しが,まさみつ
+しのはら,まさし
+しょう,めぐみ
+たけがわ,みえこ
+たつみ,ゆたか
+とみえ,のりひこ
+わたなべ,まもる
+やまだ,ゆういち
+やまだ,とみひろ
+やまもと,たけし
+やまざき,まさお
+こまつざき,ちあき
+ふちだ,まさひこ
+たなか,かずゆき
+はやし,さほり
+ながた,せいいち
+ばば,まこと
+あかま,たかし
+かざま,かずしげ
+もり,ひろあき
+いけだ,つよし
+わたなべ,かつと
+みま,ふみお
+あんどう,ともひろ
+まえぞの,みつひろ
+おたか,こういち
+はやし,まさひろ
+うえの,かずたか
+つのだ,けいいち
+すどう,たかとし
+さかもと,みつあき
+たなか,もりしげ
+ことうだ,ゆきのり
+かるべ,ふみひろ
+さいとう,てるよし
+ひらの,ひろこ
+さとう,ひろまさ
+なかやま,けんいち
+のだ,ゆりこ
+ま,やすひろ
+しながわ,ちから
+ながやす,こうじ
+あおき,こうじ
+なかた,はやと
+みくりや,てるゆき
+まるやま,ひでとし
+えちぜん,ひさし
+なかにし,しょういち
+はぎお,ともひこ
+たむら,まさあき
+たぐち,よしとし
+おざわ,おさむ
+やおいた,としひろ
+あさの,のりやす
+くさの,てるひろ
+はまだ,まさじ
+いりやま,はなこ
+むらた,なおや
+あさの,ようじ
+たかの,けんいち
+やまぐち,あきとし
+むらかみ,のりひろ
+たなか,かつじ
+たかおか,じゅんいち
+すずき,みさほ
+みねぎし,なおや
+あべ,のりあき
+あべ,みずほ
+あべ,しゅんじ
+あべ,ひでき
+あがつま,あきら
+あいざわ,たかし
+あかいけ,じゅんこ
+あきもと,よしのぶ
+あきたや,ゆきお
+あきやま,としゆき
+あくつ,しげき
+あまの,ただかつ
+あまの,あつのり
+あまの,ふみえ
+あめみや,かずみ
+あんどう,まさひろ
+あんどう,てんせい
+あんざい,ゆうじ
+あおき,りつこ
+あおき,たかゆき
+あおき,さだはる
+あらい,はるひと
+あらき,よういち
+あらき,しげみつ
+あらや,よしたか
+ありよし,とものぶ
+あさひな,よういち
+あさい,なりと
+あさみ,ひろゆき
+あさつけ,かずゆき
+あそ,くにかず
+あずま,まこと
+あずま,さとこ
+ばば,すみこ
+ばば,ともこ
+かが,よしき
+ばば,ゆうすけ
+ばん,ゆか
+びるかわ,れいこ
+ぼう,ふくお
+だいご,しゅんすけ
+だいごく,じゅんいち
+どばし,とおる
+えびさわ,ひろし
+えはら,ひろとし
+ふちがみ,りゅうたろう
+ふじばやし,ひろし
+ふじえだ,りょういち
+ふじい,せいご
+ふじい,しんじ
+ふじい,よしのり
+ふじい,まさや
+ふじい,ひであき
+さかもと,しゅうへい
+きただ,えいいち
+ふじい,かおる
+ふじい,しんいち
+ふじい,たつや
+ふじかわ,かずひこ
+ふじもり,きょうこ
+ふじもと,ひろし
+ふじの,せいじ
+ふじさわ,ひろたか
+ふじた,としや
+ふじた,ひろし
+ふじた,けいじ
+くすもと,ひろふみ
+ふじわら,ひろし
+ふじわら,けい
+ふじわら,まこと
+ふじわら,ひろむ
+ふじわら,としき
+ふかぼり,ひでお
+ふかみ,さなえ
+ふかみ,ひさこ
+ふくだ,ゆうこ
+ふくだ,さとみ
+ふくだ,じゅん
+ふくだ,ゆか
+ふくい,のりちか
+ふくい,ともじ
+ふくなが,けんじ
+ふくなが,まさやす
+ふくおか,みのる
+ふくおか,いさお
+ふくし,やすのり
+ふくしま,としゆき
+ふくとめ,せいじ
+ふくやま,かつひと
+ふなばし,とおる
+ふるの,あきら
+ふるや,としゆき
+ふるや,ひろゆき
+ふるやま,みのる
+ふたば,ゆみこ
+あなみ,ひさのり
+ふたみ,ふじお
+ふたむら,ともこ
+がど,ひさし
+ごう,りょうこ
+ごうだ,しん
+ごか,たつや
+ごとう,としたか
+ごとう,しのぶ
+はぶ,しょうじ
+はが,あつし
+はぎ,けんじ
+はま,ただひろ
+はまだ,まさる
+はまの,おさむ
+はまの,たつや
+はましま,ゆみ
+はましま,さだみつ
+はない,てつお
+はら,たつき
+おた,こういち
+はらだ,なおき
+はらこ,たつひろ
+はせ,ゆたか
+はせがわ,ひろし
+はせがわ,しょうじ
+はしもと,さとし
+はしもと,せつお
+はしもと,あけみ
+はしずめ,まさき
+はしずめ,なおき
+はた,しんいち
+はた,よしひこ
+はた,たけひこ
+はたの,きょうこ
+はたの,やすゆき
+はたの,よしひろ
+つだ,ひろこ
+はやかわ,よしのり
+はやの,かなこ
+はやし,さおり
+はやし,すすむ
+はやし,のぶゆき
+はやし,ひろゆき
+はやし,としろう
+はやしたに,あきら
+ひがしの,きみたけ
+ひぐち,かずひこ
+ひぐち,しんいちろう
+ひめの,やすし
+ひらばやし,ゆうこ
+ひらい,ゆういち
+ひらかわ,ひろし
+ひらき,ひろし
+ひらの,せいりょう
+あおき,みちこ
+ひらおか,まさや
+ひらさか,ひろゆき
+ひらやま,よしのり
+ひろはた,ゆういちろ
+まえかわ,やすひろ
+ひろせ,まなぶ
+ひろせ,ひろよし
+ひろた,まさのぶ
+ひろわたり,たかひろ
+ひろみつ,ひろし
+ひうら,まもる
+ほぼ,たいすけ
+ほくら,まこと
+ほんだ,いさお
+ほんだ,ようこ
+すずき,ひでき
+ほんごう,かずたか
+ほりぐち,きいちろう
+ほりい,きにち
+ほりかわ,てるお
+ほしの,やすひろ
+ほそかわ,ひでゆき
+ほそみ,ひろあき
+ほった,かずあき
+いぶか,のぶみち
+いぶき,ひでゆき
+いちかわ,ひろし
+いちむら,きみえ
+いだ,かなめ
+いだ,ちはる
+いで,やすひで
+いで,きよたか
+いで,なおゆき
+いでた,たかし
+いがらし,けいこ
+いがらし,ゆきや
+いげ,さつき
+いいだ,しょうぞう
+いいだ,たかゆき
+いいだ,たまみ
+いいだ,よしひさ
+いいはら,ひろし
+いいじま,たけし
+いけだ,かつや
+いけだ,まさあき
+いこま,のぶまさ
+いまい,きよひと
+いまい,まこと
+たなか,きょうこ
+いまむら,こういち
+いまなり,たつや
+いまぜき,じゅんじ
+いなだ,まゆみ
+いなます,ひろし
+いのうえ,ひろゆき
+いで,まさひろ
+いれい,まさる
+いしはら,みつみ
+いしはら,みゆき
+いしはら,なおき
+いしはら,すすむ
+いしはら,じゅんいち
+いしい,たかゆき
+いしい,ともゆき
+いしかわ,ゆうじ
+いしかわ,なおふみ
+いしむら,ひろゆき
+いしわたり,ますみ
+いしざき,のりよし
+いしずか,なおとく
+いその,みつとし
+いそやま,みつのぶ
+いすだ,しげお
+いたくら,まさひろ
+いとう,まさひろ
+いとう,ひろふみ
+いとう,よしまさ
+いとう,はるお
+まつい,たけひこ
+いとう,たけひこ
+いとう,まさちか
+いとう,まさひこ
+いわかみ,つとむ
+いわさ,としみ
+いわさき,ゆうじ
+いわさき,なおゆき
+いわした,みちたか
+いずみ,とおる
+いとう,あつし
+いずみ,とへい
+いずみさわ,せいじ
+じんの,やすし
+みど,りゅうじ
+かが,あけみ
+かがみ,ふさお
+かげやま,ひさなが
+かい,ひとし
+かいだ,こうじ
+かいず,たけひと
+かじた,じ
+かけひ,あけみ
+かきもと,ともひろ
+かきぬま,さちこ
+かきぬま,しずか
+かまた,としえ
+かまた,けんいち
+かみぐち,みえこ
+かみむら,よしお
+かねこ,まさのり
+かなまる,じ
+かなざわ,まもる
+かんべ,たかひろ
+かんだ,こうぞう
+かねはら,けん
+ごとう,しげかず
+かねこ,たけし
+かねこ,やすなお
+かねこ,あきら
+かねこ,ひでとし
+かねこ,ひろふみ
+かねみつ,ひろみつ
+かねむら,かずお
+かねた,こういち
+たなか,まさよし
+よねもち,なおし
+かんの,やすまさ
+かさい,ゆかり
+かしま,こうじろう
+たかぎ,ひでき
+きたむら,まさみ
+かたおか,やすゆき
+かたおか,かずひこ
+かたおか,しげゆき
+かたせ,やすなり
+かたやま,みちこ
+かたやま,なおゆき
+かたやま,ゆうこ
+かたやま,きょうこ
+かとう,やすひろ
+かとう,ひろあき
+かとう,しんいち
+かとう,つとむ
+かとう,ひろゆき
+かとう,としひろ
+かとう,よしみ
+かとう,ゆうじ
+かとう,つとむ
+そめや,じゅんこ
+かわばた,まこと
+かわぐち,まさいち
+かわぐち,しんや
+たまがわ,こういちろう
+かわはら,ひさし
+かわはら,じゅんじ
+かわひと,かつひさ
+かわい,のりひさ
+かわい,のりこ
+はぎわら,しげき
+なるけ,たかし
+かわさき,よしひろ
+かわしま,ゆかり
+かわしま,ゆきこ
+かわた,ゆたか
+かやま,ひろかず
+かざまつり,ひろこ
+きど,たかふみ
+きがみ,まなぶ
+きごし,ひさや
+もりさわ,きよし
+きくち,みつぐ
+きくち,きいち
+きくち,のりお
+きくら,かつみ
+きむら,つねお
+きむら,ひろき
+きむら,あけみ
+きむら,ともひさ
+きむら,かつのり
+きむら,けいいち
+きむら,まさき
+きむら,まさゆき
+きむら,けんいち
+きむら,のりこ
+きむら,しんきち
+きのした,たいこ
+きのした,としひこ
+きのした,やすひろ
+きしべ,ひろき
+きしだ,よしのり
+きしもと,たけし
+きしもと,たつや
+きた,たかみち
+きたあき,ひろゆき
+きただ,ひろゆき
+きたがわ,としゆき
+きたほり,ひろゆき
+きたじま,たつや
+きたむら,ひろし
+こばやし,しげよし
+こばやし,かずひろ
+こばやし,ちふゆ
+こばやし,やすゆき
+しらい,だいすけ
+こばやし,ひろゆき
+こばやし,しんいち
+こばやし,としや
+こばやし,としき
+こばやし,なおふみ
+こだま,ひろゆき
+こぎた,けいいち
+こぐれ,よしかず
+こはし,のりしげ
+こご,たかひで
+こんの,よう
+こんの,きんや
+こんの,やすひろ
+こんのす,ひろかず
+こいで,こうじ
+こまつばら,ひでとし
+こみや,おさむ
+こみやま,よしひろ
+こもだ,たかし
+こんど,かずまさ
+こんど,まさと
+こんど,ひとし
+こんど,かつや
+こんど,かずとし
+こにし,あきのり
+こさ,まさと
+こすぎ,けんいちろ
+こたき,まさゆき
+こたに,けいいち
+こやま,みき
+こやま,ひろみ
+こやま,かつひこ
+こざわ,まさのり
+こずる,よしあき
+くぼた,ひろし
+くぼた,じゅんこ
+くぼや,ともこ
+くどう,じゅん
+せのお,ひとし
+くまがい,かずのり
+くらどみ,きよふみ
+くらもと,のりゆき
+くらとみ,けいすけ
+くりの,やすひろ
+くりや,ゆういち
+くろだ,ひろし
+くろかわ,みつあき
+くさかわ,のぶみつ
+くさの,さとし
+くわばら,としひろ
+くわの,やすひろ
+よしだ,さとる
+くずの,ひろかず
+まちだ,ひろし
+まえだ,けんいち
+まえかわ,みねかず
+おおたに,ただしげ
+まき,たくや
+まきの,としお
+まるおか,やすひろ
+まるやま,じゅんこう
+まるやま,のりひろ
+まるやま,みのる
+まさい,しんご
+まさき,ひでよ
+ませ,たかし
+ますだ,ゆたか
+まとば,たかとし
+まとば,くにひこ
+まつばら,たかあき
+まつい,ひさし
+まつい,やすひろ
+まつかわ,せいいち
+まつもり,しょうぞ
+まつもと,たかし
+まつもと,まさよし
+まつもと,しげる
+まつもと,じゅんこ
+まつもと,たけし
+まつもと,とおる
+まつもと,さだお
+まつお,かずよし
+まつおか,たけとし
+まつしま,たかひろ
+なかにわ,としろう
+まつやま,じゅん
+まつやま,じゅんじ
+まつざわ,ひでよ
+みむら,しゅんいち
+みにゅう,こういち
+みた,まなぶ
+みた,ひろかず
+みたむら,じゅん
+みつだ,おさむ
+みつだ,じゅんいち
+みつまた,よしのり
+みつおか,あやこ
+みうら,きょうこ
+みうら,みどり
+みわた,なおき
+ながせ,たかし
+みやけ,あきお
+みやけ,ゆかり
+みやま,せいじ
+みやもと,てつお
+みやもと,ひとみ
+みやなが,まさかつ
+みやざき,もとふみ
+みずば,ひろし
+みずぬま,かつみ
+みずさき,みわ
+みずた,のりあき
+もちずき,しゅういち
+もちずき,あつき
+もちずき,ちから
+もぎ,ひろし
+ももせ,つよし
+ひらの,あきひで
+もり,ゆうき
+もり,まさゆき
+もり,まさゆき
+もり,しげお
+もりかわ,しんじ
+やぎした,いさお
+もりもと,こういちろう
+もりもと,こうじ
+まつだ,けんじ
+もりおか,あきひこ
+もりした,りえ
+もりた,くにひろ
+もりた,きよえい
+かねこ,かずあき
+もりた,まさゆき
+もりわき,のぶゆき
+もろどみ,よういち
+もとはし,よしひで
+もとじま,てつお
+もとき,けいこ
+もり,みわ
+うすい,かおる
+むらかみ,たけお
+むらかみ,だいせい
+むらかみ,ひでし
+むらかみ,ひとし
+むらた,よしお
+むらた,きよひこ
+むらやま,さとし
+むとう,よしひろ
+なだぐち,すみと
+ながはし,いさお
+ながい,まさひろ
+ながむら,まこと
+ながお,まさみ
+ながしま,みちのり
+ながしま,みよこ
+ながた,なおり
+ながた,のぼる
+ながつか,のりゆき
+ながやま,さなえ
+うちだ,たかひで
+うちぞの,たかし
+なかだ,としや
+なかがわ,やすひろ
+なかがわ,ゆきひろ
+なかがわ,ちはる
+なかがわ,なおゆき
+なかじま,こういちろう
+なかじま,ひろあき
+なかじま,きょうこ
+なかみち,りゅういち
+なかもと,やすとも
+なかもと,ひろし
+なかむら,ひろし
+なかむら,ゆみこ
+なかむら,ひろし
+あきやま,たかじ
+なかむら,ひでと
+なかむら,つとむ
+なかむら,たかこ
+なかむら,ゆきこ
+なかむら,よしひこ
+なかむら,せいじ
+なかむら,ゆういち
+なかむら,ひろみ
+なかむら,さとし
+なかの,たかし
+なかの,けいじ
+なかしま,のりお
+なかつぼ,まさひこ
+なかつか,てつろう
+なかやま,まこと
+なかやま,まさひこ
+なかざわ,おさむ
+なおつか,あきこ
+ならはら,さとし
+なるしま,まさこ
+なとり,ひろたか
+にいじま,ゆか
+にいや,りか
+にし,としひさ
+にし,まさひろ
+にしぶ,あやこ
+にしだ,たつや
+にしはら,たかあき
+にしかわ,まさこ
+たなか,いさお
+にしかわ,まさと
+にしもと,ひであき
+にしもと,なおこ
+にしむら,たかし
+にしむら,こうぞう
+にしの,けんじ
+にしの,しんや
+にしおか,まさのぶ
+にしざき,けんじ
+にしざわ,だいすけ
+にわ,もりよし
+のぶ,みのる
+のがいと,のぶゆき
+のぐち,ようこ
+のじ,ひろゆき
+のじま,のりお
+のむら,あきこ
+のむら,しんいち
+のなか,ゆきのり
+なかじま,ちふゆ
+のざき,みきお
+のざき,よしゆき
+ぬわ,たけし
+おち,たかし
+おちあい,としゆき
+おだ,あつし
+おがさわら,よしゆき
+おがさわら,とみお
+おがた,かずはる
+おがわ,けんいち
+おぎはら,ひろき
+おおはら,かつみ
+おおば,ゆみこ
+おおば,えいじ
+まつだ,しげゆき
+おおえ,ゆうじ
+おおがき,かずひろ
+しょうじま,としひで
+おはま,ひろゆき
+おおはし,けいこ
+おぎの,しげき
+おおかわ,こういち
+おおかわら,まなぶ
+おき,まさひこ
+ねもと,じゅん
+おおくぼ,のぶゆき
+おおくら,ともひこ
+おま,ともひさ
+おおみか,てつし
+おおもり,ひでみ
+おおもり,ひろあき
+わたなべ,かずあき
+おおにし,みつる
+おおにし,まさひで
+おの,さなえ
+おの,じゅんこ
+おおぬま,まさお
+おしま,たかゆき
+おしま,まさし
+おおた,まさゆき
+おおた,もとい
+おおた,かおる
+おおたか,としあき
+おおたけ,さえこ
+おおたけ,ひでふみ
+おおたに,くにお
+おおつぼ,あつゆき
+おおつか,てつお
+おおつか,としひこ
+おおつき,いずみ
+さこだ,しゅういち
+おおわ,さとし
+おおや,じゅんせい
+おいかわ,まさき
+おかべ,まなぶ
+こばやし,そう
+おかだ,やすみつ
+おかだ,てつじ
+おかだ,てつや
+おかもと,ひであき
+おかもと,ひでのぶ
+めら,ひろゆき
+おかの,かずのり
+おかざき,かずゆき
+おきた,さとこ
+おくだ,えいいちろう
+おくぬき,まさかず
+おんだ,ちずこ
+おんだ,ひらたか
+うつみ,まさひろ
+おおの,たかし
+おおの,ゆきひろ
+かわもと,ひでゆき
+かど,くにひろ
+おしま,しろう
+おおすみ,あきら
+おおた,かずゆき
+おりい,しゅんじ
+おりた,しゅういち
+おおさか,とよひで
+おそのい,ゆきお
+おざさ,ゆきのぶ
+おざわ,たつじ
+おざわ,なおのり
+おざわ,やすひろ
+しらとり,じゅん
+おぞね,あきお
+さの,ひろひさ
+さいとう,まさみ
+さいとう,なおき
+さいとう,みえこ
+さいとう,けいじ
+さいとう,ちかこ
+さかい,ひろみ
+さかい,けんじ
+さかい,まこと
+さかきばら,みつあき
+さかもと,れいこ
+さかもと,よしお
+さかもと,ともこ
+さかもと,じゅんぺい
+さかもと,かおる
+さかむら,けんじ
+さかね,こうじ
+さかた,まさひこ
+さかた,まさひろ
+あくたがわ,まさひろ
+さくらい,まさと
+さくらい,るりこ
+まつばら,りょうこ
+さくらい,さとる
+さなぎ,よしき
+さの,ゆきこ
+おおがき,ちひろ
+ささき,ふみひろ
+ささき,とおる
+ささき,ひでゆき
+ささき,いくふみ
+ささき,ながまさ
+ささき,ともこ
+さたけ,たかゆき
+こだま,まさひろ
+さとう,とおる
+さとう,ふじお
+さとう,ひではる
+さとう,まもる
+さとう,まゆみ
+さとう,しろう
+さとう,けんじ
+さとう,ひでのり
+さとう,けいいち
+さとう,あきひろ
+さとう,ひでき
+さかい,けんじ
+さわだ,こうたろう
+せがわ,さとる
+せいの,しょうじ
+せき,つとむ
+せきど,しんじ
+せきの,のりひろ
+せお,たかゆき
+せりかわ,おさむ
+しばさき,ひろのり
+しが,かなみ
+しげる,よしこ
+しまだ,あつし
+しまだ,みつえ
+しまだ,まこと
+しまだ,かおる
+しまもと,みつやす
+しまむら,たつや
+しまの,たかし
+しみず,たかあき
+しみず,としひろ
+しみず,ただし
+しみず,つとむ
+しみず,こうじろう
+しみず,さとる
+しみず,みずき
+しもだ,ひろゆき
+しもがき,けんや
+しもはた,ひろゆき
+しもむら,のぶひろ
+しもおか,としあき
+しむら,しょういち
+やえがし,あつこ
+しのざき,あつし
+はぎわら,ひでお
+しおだ,まさひと
+しおた,ひさよし
+しおざわ,けんいち
+しらい,たけし
+しらいし,ともひさ
+しょうだ,けんじ
+しゅう,ともこ
+そめや,まさし
+すだ,くみこ
+すえ,ひでお
+すえた,ひでお
+しぶいち,ひでゆき
+すがの,ひろゆき
+すがわら,ひさたか
+すぎえ,かつとし
+すぎまさ,けいた
+すぎもり,のぶゆき
+すぎもと,とおる
+すぎさき,ようこ
+すぎうら,ゆきお
+すぎうら,じゅんいち
+みずおち,たかし
+すぎやま,まさや
+すぎやま,まなぶ
+すぎやま,けん
+すぎやま,たけし
+すみ,まさもと
+たべい,よしのり
+すなみ,ひろこ
+すさわ,おさむ
+すずき,あきこ
+すずき,えいじ
+すずき,ひでゆき
+すずき,ひろあき
+すずき,かなこ
+すずき,かなこ
+すずき,かずよし
+すずき,けんた
+すずき,こうじ
+すずき,まさのり
+すずき,なりまさ
+たべ,りゅういちろう
+たちはら,たかし
+たげ,としき
+たぐち,わたる
+なかた,わたる
+たぐち,しん
+たじま,あきら
+たじま,まこと
+たかだ,こういち
+たかぎわ,みつひろ
+たかはし,かずよし
+たかはし,ひろやす
+たかはし,かずのり
+たかはし,みつとし
+たかくら,こうじ
+たかくら,やすまさ
+たかはし,やひろ
+たかはし,あきふみ
+たかはし,おさむ
+たかはし,ゆうじ
+たかはし,ひろゆき
+たかはし,つかさ
+たかはし,しんいち
+たかはし,ゆうこ
+たかはし,まこと
+たかはし,ひでき
+たかくら,つとむ
+たかみや,たまみ
+たかさご,くにひこ
+たかさき,まさと
+たかせ,まさひと
+たかつか,しんいち
+たかやなぎ,しげる
+たかやなぎ,やえきち
+たけち,ひであき
+たけだ,ひろし
+たけだ,いつひと
+たけがみ,かつみ
+たけひさ,まこと
+たけい,のぶお
+たけい,ただゆき
+たけかわ,たけひこ
+たけむら,としひで
+たけなか,としひろ
+いまい,よういち
+たけさこ,よういち
+たけしま,かつしろう
+たけうち,ひろとし
+ひだか,とおる
+たきもと,みどり
+たきざわ,きくみ
+たまい,まさる
+たむら,しょういち
+たなべ,えいじ
+たなべ,ようへい
+たなか,あきと
+たなか,いさむ
+たなか,みどり
+たなか,よしなり
+たなか,やすじ
+たなか,たかし
+たなか,ありひと
+たなか,しんご
+たなか,しゅういち
+たなか,ひろゆき
+たなか,たかし
+さの,ひろふみ
+たに,えいいちろう
+たにむら,よしふみ
+たにやま,だいすけ
+たさか,やすまさ
+かとう,えいじ
+てらだ,よしゆき
+てらまえ,まき
+てらにし,のぶゆき
+てらにし,ひろみつ
+てらぞの,かおり
+とびた,まさみ
+いずみさわ,ひでき
+とだ,さとし
+とぐち,たけし
+とまつ,ともあき
+あきむら,のぶゆき
+ときたけ,たけし
+とくます,あきひろ
+とくたけ,あきひこ
+とまき,かずや
+とみい,まさひろ
+とみた,きみお
+とみやま,まさと
+ともだ,くみこ
+ともなが,まさのり
+とさか,なおと
+とっとり,あきひこ
+まつお,よしゆき
+とよだ,よしゆき
+つぼい,あきら
+かとう,としひろ
+つちや,かずし
+つだ,しんご
+つじ,まさひこ
+つじ,よういち
+つじの,ようすけ
+つかこし,あきら
+つかもと,しげひろ
+つかざき,ふみひろ
+つきあし,あきら
+つきざわ,こうじ
+つみた,えいいち
+えんど,ただひこ
+つと,としひろ
+つむら,よしお
+つねかわ,そのすけ
+つるおか,よしひこ
+つるた,のりこ
+つるた,もとゆき
+つるた,たつゆき
+つつみ,しゅんや
+つつみ,かつみ
+つわこ,ゆか
+つやま,きよふさ
+うちだ,しょうこ
+うちだ,まさひろ
+うちだ,せつこ
+うちやま,しんご
+うちやま,ひでお
+うど,きよみ
+うえだ,はるき
+うえだ,ようすけ
+まつむら,だいじろう
+うえだ,あけみ
+うえだ,あきお
+うえまつ,ひでお
+うえの,ひろみ
+うえの,じゅんじ
+いしだ,かずひこ
+うめだ,こうせい
+うめがき,くにこ
+うの,まもる
+うらはし,
+しみず,さとし
+えがしら,ただし
+すえかね,てるゆき
+うつ,とおる
+うつはし,としひろ
+うつみ,けいいち
+わだ,つねふみ
+わだ,たつみ
+きたわき,せいき
+わしず,はるなが
+わたべ,ふみよ
+わたなべ,ひろし
+わたなべ,まさや
+わたなべ,さとみ
+わたなべ,しんいち
+わたなべ,たかし
+わたなべ,つとむ
+わたなべ,よしあき
+わたなべ,つねお
+わたなべ,まさよ
+わたなべ,えいじ
+わたなべ,ひろこ
+わたなべ,ひろゆき
+わたなべ,かつし
+わたなべ,ゆうじろう
+わたなべ,やすお
+えはら,あつし
+わたなべ,ひであき
+わたらい,じろう
+やえがし,おさむ
+やはぎ,しのぶ
+やまだ,しゅういち
+やまだ,たけし
+やまだ,ようじ
+こんど,としや
+やまだ,あつし
+やまだ,おさむ
+やまだ,みき
+やまだ,あきひろ
+えのもと,ひろし
+さいとう,ひろゆき
+やまぐち,きんや
+ふじた,まさとし
+やまぐち,さとこ
+やまぐち,やすひろ
+えざき,ひとし
+やまぐち,さとる
+やまもと,さとし
+やまもと,とおる
+やまもと,やすし
+やまもと,たけし
+やまもと,こういち
+やまもと,こうき
+やまもと,としゆき
+やまもと,まさる
+やまなか,ひろし
+やまね,みちる
+やまのくち,さとし
+やまさき,たかし
+やました,まさかず
+やました,ひろき
+やました,けいいちろう
+やました,こうき
+やました,しげみ
+しさい,まさゆき
+やました,としひろ
+やまうち,としゆき
+やまうち,まこと
+やまざき,ひでお
+やまざき,ただし
+やまざき,むつみ
+やなぎもと,たけし
+やの,りょうじ
+やの,ひろき
+やしろ,やすし
+やざわ,まこと
+よだ,しゅんすけ
+よぎ,ふみゆき
+よこい,こうじ
+よこやま,けんしょう
+よねざき,ふとし
+よしだ,じゅん
+よしだ,りえこ
+よしだ,かずよし
+よしだ,じゅんこ
+えびな,せいいち
+よしだ,ただし
+よしだ,たつお
+よしいけ,やすのり
+よしむら,みつゆき
+よしむら,さとる
+よしの,しんいち
+よしお,のぼる
+よしたけ,しげよし
+ゆあさ,てつじ
+おおわだ,しょうじ
+えぐち,さとる
+おざわ,かつゆき
+さとう,みつあき
+しんたに,たけみ
+すぎたに,よしひこ
+たかはし,いずみ
+たきざわ,なおき
+みよだ,けんじ
+やまだ,きよし
+やはぎ,さとし
+きや,ただし
+みせき,のりかず
+えのもと,けんたろう
+さくらだ,まさき
+ささき,のぶゆき
+ばば,たけお
+あぼ,かおり
+あだち,こうへい
+あかさか,まさひろ
+あまさき,ひでと
+あおき,かんじ
+あぜがみ,しげかず
+えどの,ふみひろ
+どい,かずお
+ふじい,ともひと
+ふじい,さゆり
+ふじもと,ひろき
+ふじもと,たけし
+ふくはら,のぶゆき
+ふくおか,てつや
+ふくしま,けんいち
+ふさやま,こういち
+ごとう,よしひろ
+はまべ,えいじ
+はなだ,けいすけ
+はしもと,よしひろ
+ひび,さかえ
+ひらつか,かずゆき
+いかり,たかゆき
+いくた,あきひこ
+いまい,てつし
+いしはら,やすひろ
+いそだ,こういち
+いそざき,よしたか
+じんぐう,よしあき
+ない,みのる
+じょうにし,おさみ
+かじはら,よしあき
+かまた,たつや
+かめい,あきら
+かみやま,てつや
+かとう,たつじ
+かとう,としゆき
+えみ,ひであき
+かわもり,まもる
+きむら,よしひろ
+きむら,かずお
+きしべ,くにひこ
+きしかわ,かずよし
+きたがわ,しんいち
+きたなか,めぐみ
+こばやし,まさゆき
+こばやし,げん
+こいけ,とうた
+こいずみ,かずや
+こじま,たかひさ
+こにし,きよかず
+こやま,たくや
+くどう,かずや
+くまさき,よしあき
+くろだ,ひろかず
+くさか,しんご
+えんど,けんじ
+まえかわ,まさひろ
+まるた,ひでき
+まつした,しんご
+みくに,とみお
+えんど,よしのり
+みね,やすたか
+みうら,しゅういち
+みぞぐち,しょうじ
+ほん,よしあき
+みずしま,しげる
+えだ,たかし
+ながお,あつし
+なかむら,とおる
+なかにし,ゆうじ
+なかの,ようこ
+なかお,かつや
+ねもと,まさゆき
+にしかわ,こうじ
+にしわき,けんいち
+のだ,たかこ
+のぐち,みとし
+おちあい,こうじ
+おおはし,やすよし
+おの,たくじ
+えみ,ひでお
+おくむら,まさひろ
+おくの,ひでみつ
+えんど,よしただ
+おおにし,あきら
+おざき,くにはる
+さえき,のりゆき
+さがわ,のぼる
+さくま,まさほ
+さとう,しげあき
+さとう,みつひろ
+さわ,きよたか
+せがわ,こうじ
+せき,ゆきお
+せんだ,けんじ
+しぶや,しゅういち
+しみず,よしはる
+しんでん,あきよし
+しおた,ひとし
+しゅくたに,としお
+すやま,ひろこ
+すずむら,いさお
+たかおか,よしゆき
+たけうち,かつのり
+たけうち,かずし
+たまい,まさひろ
+たん,かずひろ
+たなか,けんご
+えとう,てるあき
+たにひら,かずひろ
+たにやま,きくお
+たおか,しげき
+たしま,まさゆき
+たざわ,みきお
+ときた,かつよし
+とみた,しげき
+とみた,けんじ
+とみた,あきお
+つじべ,ひろこ
+つじかわ,けんいち
+えんど,じゅんこ
+みやざき,まきこ
+わだ,よしたか
+わたなべ,ひろみ
+やまだ,なおや
+やまだ,ただし
+やまだ,さやか
+やまぐち,のりお
+やまもと,たかこ
+やまおか,かつのり
+やました,のぶお
+やました,かずひさ
+やまぞえ,ひろまさ
+やお,やすはる
+やすだ,さとし
+よつたに,よしお
+よしはら,ひでお
+よこうら,まさお
+ひらせ,しげお
+まつい,いちたろう
+こばやし,かずひさ
+すずき,たけし
+かとう,としくに
+くにとも,のぶゆき
+えんど,ごう
+いとう,さとる
+おかざき,ひでお
+ひろはし,やすお
+さかき,ようこ
+みき,ときこ
+くまき,まさお
+たやま,てつお
+おおわき,きはち
+みょうどう,まさと
+かとう,ひろよし
+ばば,みきお
+かねこ,はるひこ
+こぐれ,ひろあき
+たけだ,よしのり
+いちむら,まもる
+いとう,のぼる
+うえはま,みのる
+なかい,こうじ
+こばやし,まさお
+しまだ,まなお
+めぐろ,しげる
+やまや,ひろし
+ふじた,みつぐ
+まとば,ちひろ
+いとう,もとかず
+なかい,しずお
+おかだ,まさひと
+のもと,としき
+ながしま,ようじ
+よねかわ,たもつ
+わたなべ,とおる
+むらまつ,ともちか
+きたに,ゆういちろ
+みかみ,ひろし
+あだち,みつお
+いのうえ,まさあき
+おかだ,たかあき
+かわしま,てつお
+せき,あきら
+たかはし,よしじ
+わたなべ,まさる
+くりはら,ちはる
+わたなべ,けいすけ
+ふじかた,みつお
+よしと,のりお
+かわせ,おさむ
+たなか,まこと
+いまい,けんじ
+こむろ,ゆきとし
+まえだ,えいご
+こいけ,おさむ
+わたなべ,みちあき
+こんど,ひさとし
+いしい,ひさや
+みしま,たかし
+こばやし,よしかず
+やました,けんじ
+たなか,りょうぞう
+やまだ,まさとし
+かみや,みちやす
+やまもと,りきお
+しおざき,とおる
+なかむら,ちかし
+たけもと,さちお
+だけやま,ひろゆき
+あらかわ,ぜんじ
+よこた,まさゆき
+なかむら,かずひこ
+あらかわ,としお
+おおみち,まこと
+まつき,えいき
+くしびき,すけひで
+にった,てるひこ
+つぼうち,みきお
+さいとう,ひろゆき
+たけむら,としひろ
+たなべ,かずお
+まえだ,もとくに
+すがはら,てつお
+かねこ,しょうじ
+やまうち,まさひこ
+かみざわ,ひろふみ
+こが,とくひろ
+つるさき,すなお
+ひがし,ふみひろ
+いしだ,やすひろ
+なかがわ,はるお
+てらしま,ひさはる
+きたむら,しゅんじ
+はっとり,ひでみ
+ささき,よしひろ
+ほか,けんたろう
+のむら,てるお
+はやの,かずお
+あんざい,しんいち
+ふるの,きよひで
+にしわき,くに
+はせがわ,まさお
+いわた,たかゆき
+とだ,ひろあき
+なかむら,まさと
+ふるいし,ますみ
+なかむら,ふじお
+なかがわ,ひでお
+なかま,たつや
+すがわら,ますこ
+まつもと,つとむ
+はしもと,ようたろう
+なかつ,やすかず
+さとうり,あきら
+いきた,ゆきのぶ
+きくち,たけし
+すと,まさみ
+しばた,ひさのり
+ないとう,こうじ
+もり,かずこ
+いとい,あきら
+いとう,けんじ
+まつざき,まさのり
+うえの,みつのり
+かたおか,きよかず
+ばんどう,たつお
+さいとう,じゅんじ
+いわい,しげる
+しもやま,みのる
+あかまる,おさむ
+ごとう,はじめ
+まつだ,すすむ
+ねがみ,としお
+やました,まさおみ
+よねやま,りゅうへい
+いしやま,ひさお
+あべかわ,れいじ
+いまむら,しげる
+いわなが,みのる
+うえだ,くにひこ
+ふじかわ,ゆきお
+たむら,よしひさ
+かしい,まさと
+よねだ,まさお
+よこつ,あきお
+あさお,ゆうじ
+たなか,けいじ
+たなか,ただみ
+やしき,やすゆき
+かいがい,たけし
+そがべ,ゆきお
+ふるかわ,けんじ
+かわうち,ゆういち
+ふじい,のりゆき
+いけのや,たつお
+おち,のりお
+なかもと,なおはる
+わかばやし,はれお
+あらき,ふみお
+やべ,ひでお
+たかはし,やすひろ
+しばの,みつお
+たがしら,としお
+すみた,てつや
+さとう,こうじろう
+ちの,しげと
+やまだ,やすひろ
+いがらし,のりよし
+いけがみ,けんいち
+ふなだ,たかゆき
+いのうえ,たかよし
+にしやま,ひろし
+いしはら,としたか
+すずき,たいち
+こもりや,かずお
+ちゅうご,ひろし
+こばやし,おさむ
+みやもと,つとむ
+なかた,たかゆき
+いりたに,たくお
+おがわ,ゆきち
+おね,けんじ
+こまつ,まさあき
+みのわ,ひろし
+ふじかわ,なおと
+かわぐち,やすひろ
+ちば,としひこ
+なかにし,さだお
+さくま,ひとし
+たけまさ,としゆき
+せき,よういち
+さいとう,ふみお
+ふじもと,やすお
+おぐり,たつじ
+いしばし,きよし
+あざみ,しげる
+おがさわら,なおいち
+さいとう,ひろし
+たなべ,けんじ
+もりやま,しゅうへい
+きたざわ,ひでとし
+かなざわ,かつお
+はらだ,まさと
+おくやま,さとし
+しみず,せいじ
+いのまた,ゆきお
+ふるさわ,せいき
+たけうち,しろう
+おおの,つとむ
+もろおか,けんじ
+しのざき,ふみあき
+のぐち,しげあき
+しまだ,こうじ
+かわさき,ゆたか
+おおかわ,まこと
+さめしま,まさひろ
+ほそじま,かずひこ
+わたなべ,とみお
+かわなみ,まさあき
+くさの,けいさく
+つちた,ともあき
+おおはし,こうじ
+のだ,みきお
+わたなべ,ひさお
+よしたけ,やすひろ
+ふくしま,あきら
+いわや,たかお
+さかもと,もとはる
+くぼた,しょうじ
+いそやま,こういち
+おおの,みつあき
+あべ,たつお
+おだわら,みちお
+きうち,けんじ
+いしかわ,としふみ
+よしだ,たつお
+ちゃばたけ,まさふみ
+さかい,よしお
+おおた,ようじ
+なかの,まさみ
+はだ,たかし
+なかやま,じゅんじ
+さかぐち,けんじ
+ながしま,やすお
+さがら,としひろ
+かわの,ただよし
+かねこ,いさお
+なかだ,みつる
+あまの,たかし
+やざき,しゅうじ
+ひらぎの,かずお
+たばた,いちお
+くにゆき,やすひろ
+おくうち,ひろのり
+すぎもと,ひでじ
+なかむら,りょうじ
+すぎさき,わたる
+やました,たかてる
+のむら,かずみ
+しまだ,みつる
+ふくだ,かずのり
+さとう,ひでお
+おくぼり,ひろし
+よこかわ,まさみ
+でんだ,きよし
+ふくなが,すすむ
+たかしま,みつぎ
+かとう,てつお
+いしぐろ,あきのり
+いけべ,くにゆき
+おおつか,すすむ
+しみず,よしのり
+すずき,たかお
+つや,まこと
+うちだ,まさたか
+おち,けんいち
+ありが,たけし
+なかしま,かつじ
+まさき,まつみ
+なかしま,まさお
+あさはら,まさよし
+ごとう,ひさお
+うえまつ,ひろし
+さきもり,よしあき
+よしだ,つとむ
+ふじた,やすよし
+やぎした,としお
+むろふし,まさひろ
+かめだ,えいいち
+いかわ,ひろただ
+やまざき,ひろし
+つるはし,まこと
+みのしま,のりお
+きしもと,まこと
+たけした,まさし
+なかた,しんいち
+えんど,きよし
+もりや,けいめい
+くぼた,すみお
+なおはら,ひろし
+くげ,けんじ
+かさの,まさはる
+いいむら,たかし
+おおた,まさゆき
+たけこ,ひろふみ
+むらこし,としお
+よしだ,けんじ
+あさの,よしあき
+よしだ,まさとし
+はやし,てつろう
+すずき,たつや
+おだ,りょういち
+やまうち,きよし
+かわかみ,つねお
+うすだ,こうじ
+さとう,しんいち
+くらしま,しんじ
+ませ,のぼる
+こんの,ひろし
+まつざわ,あきら
+しまだ,しゅういち
+やまもと,よしのり
+おおくぼ,けんじ
+おぐら,かずのり
+さくま,えいじ
+のぐち,ひろのり
+ひなた,こういち
+ふじい,しゅんいち
+すぎもと,まさし
+つかはら,ごろう
+みつなが,まさあき
+なかむら,まさよし
+やじま,たけし
+かみた,すすむ
+ひが,じゅんき
+みながわ,よしてる
+とみ,たかお
+さかきばら,ひろし
+かくた,あきひろ
+つちや,ひでゆき
+むらた,けん
+たなべ,あきら
+しもだ,よしのり
+つかもと,くらじ
+はなはた,ひでお
+かんだ,しんじ
+かわだ,ゆきお
+よしい,つねお
+くらや,きへい
+てらしま,ひでゆき
+きたがわ,よしお
+いで,としひろ
+つる,ひさお
+うつのみや,としかず
+なかざわ,まさひと
+ひだ,よしのぶ
+ほそかわ,ひでじ
+ちぐさ,せいじ
+そうや,ひろみ
+やまぐち,こうへい
+さかて,ふみお
+あわた,しげる
+わかばやし,かずひこ
+えんじゅうじ,まこと
+のぐち,こういち
+かわむら,まさお
+もりもと,みきお
+よねはな,ただひろ
+じだ,あきお
+うえだ,けんじ
+しのはら,いさむ
+たかやま,まさかず
+やまむろ,まさのぶ
+わき,じゅんこ
+あまの,まつお
+ほそかわ,としお
+とうごう,ひろひさ
+なか,とみお
+のだ,たかのり
+やました,ちえこ
+なかじま,ひろし
+ながおか,こうじ
+しぶや,よしかず
+せりざわ,こうぞう
+ふじもり,せいじ
+ふくだ,たつひろ
+ふじた,たかひさ
+やまじ,ひであき
+こばやし,いずみ
+こばやし,きよし
+ししくら,よしあき
+こぐれ,まさはる
+もり,よういち
+なかむら,のりたか
+いいじま,のりゆき
+きたがわ,よしてる
+たむら,ただよし
+ながしま,やすえ
+えのき,いずみ
+さとう,よしのぶ
+まつもと,よしお
+うえだ,ひろお
+みずたに,あきら
+あかし,たつお
+なかもと,おさむ
+なかやま,ひろのぶ
+ふじい,やすひろ
+なかやま,しょういち
+よねみつ,てつお
+たかせ,としお
+わたなべ,ひとし
+ふかざわ,としのぶ
+かげうら,まさみ
+しんどう,かつじ
+しみず,たつみ
+さかした,よしの
+みやむら,とおる
+たなか,まさとし
+たかいし,すすむ
+いしがき,けんじ
+たかだ,よしかず
+たていし,かずなか
+さかた,ひでお
+よこはた,としひこ
+くや,たもつ
+よしだ,まさひで
+きただ,はるお
+よしだ,しんじろう
+こばやし,かずみ
+なりた,みつよし
+いぬい,まさよし
+やすかわ,ふみお
+のぐち,すなお
+しょうだ,いちぞう
+やまだ,てるひさ
+わくだ,つとむ
+あべ,さだひろ
+たけかわ,たかお
+さとう,ひでき
+はなおか,よしお
+おおの,ひでお
+たなか,けんぞう
+つのだ,あきお
+なまえ,けんじ
+たかはし,ただひさ
+なかじま,しげる
+なかむら,きみこ
+うりう,はるたけ
+ふじいわ,ふみひこ
+ささき,たかし
+きむら,ゆたか
+たかぎ,しゅういち
+かたやま,ひろと
+いぐち,おさむ
+あべ,てるお
+すずき,たかひろ
+ひら,かずひろ
+なごし,ひであき
+あだち,けんじ
+むらやま,まもる
+くにかた,すすむ
+まつい,まこと
+こいで,みつお
+ひろた,ひろやす
+とみなか,よしお
+わきた,ふじお
+うめむら,しょうじ
+ふけ,よういち
+うえまつ,かつみ
+まつざき,やすひろ
+なかの,つもる
+こだか,たけお
+ひろたに,けんじ
+たかはし,こういち
+さの,じゅんいちろ
+しみず,よしかず
+かんざき,てるよし
+おおさく,かずお
+わしだ,まさひで
+くにもと,やすまさ
+しろかわ,まこと
+かわはら,けんいち
+おか,つねかず
+こもり,よしあき
+はやし,しげあき
+かねこ,いくお
+かどいけ,なおみち
+おかむら,じゅんいち
+おかむろ,じゅんいちろ
+たぶち,なおこ
+やまもと,あきのり
+おおさ,たかし
+いりえ,しんいちろう
+たかは,かずひこ
+たいら,はるお
+みなみ,やすまさ
+いけだ,しげる
+あおき,ふみお
+やまうち,じ
+よしはら,まさふみ
+ささき,あきひと
+みずたに,としいち
+ひらの,かつゆき
+ながた,あきら
+かたやま,けい
+おだ,りょうじ
+えのもと,ゆうき
+たけなか,さかえ
+まつざき,ひろし
+まつばら,こうじ
+やました,せつこ
+めぐろ,ひろよし
+おざき,ひでゆき
+おおがみ,こういち
+おまえ,しんいち
+きだ,かんじ
+うえの,おさむ
+おかだ,かつゆき
+かなさき,とみお
+やかべ,ひろゆき
+なむら,ゆみこ
+いいじま,もとあき
+ささき,のぶゆき
+もちずき,よしのぶ
+ぶんや,としお
+おかの,やすお
+たけうち,さとし
+うえの,とおる
+ふじもと,ひでと
+かわぐち,みつはる
+たきもと,まさのり
+かたおか,しげる
+くさかわ,なおき
+あさい,ひとし
+もり,えいいち
+くぼ,よしくに
+あんどう,いちろう
+うらやま,おさむ
+くりた,よしお
+いのうえ,たけし
+かねかわ,ひでお
+うえもと,りょうぞう
+なかお,けんいち
+おかもと,はるお
+にしむら,きよし
+やだ,かずおみ
+きど,おさむ
+おかばやし,みつひろ
+かわしま,じゅんぞう
+はしき,たかみち
+みやもと,いちろう
+なかお,たかひこ
+まつおか,ゆきお
+ひびの,ひろみ
+にしかわ,かおる
+かぶた,けんじ
+わたなべ,きよし
+やまの,こういち
+さいとう,しげみつ
+すずき,ゆうじ
+くわはら,さとし
+もりた,としひろ
+ふじい,すみよし
+ながしま,つねゆき
+いなむら,まさひろ
+おざわ,ひとし
+たきもと,くにお
+みやした,ひさし
+もうり,まさゆき
+いのうえ,みつお
+ながの,もとあき
+はらと,よしお
+まみや,としかず
+ひがしばた,ひでお
+にしたに,さとし
+たかく,のぶゆき
+はなだ,みのる
+あさの,みちお
+ばば,ひろし
+いとう,しんきち
+いいだ,けんし
+こはやかわ,たけひこ
+ふじわら,かつみ
+しゅくり,やすひこ
+ゆたに,けん
+むねかわ,いくこ
+かんの,まさひろ
+にと,かつみ
+たむら,よしあき
+なかしま,さとし
+おおた,ちかこ
+いのうえ,よしこ
+くままる,けんじ
+たなか,しげる
+まえだ,まさあき
+あみ,のぶお
+みなと,あきら
+にしだ,かずお
+いしはら,さぶろう
+なかしま,としお
+いくた,やすひさ
+おき,ただお
+かがわ,しゅういちろう
+ひらかわ,としお
+やまざき,としのり
+くまがい,こうじろう
+たしろ,みつしげ
+さの,ひでまさ
+みどりかわ,ふみひこ
+なかむら,まさのり
+よしみ,ひろこ
+いなみ,ひでと
+わたなべ,きよし
+こが,ともひで
+すがわら,やすひろ
+たけうち,よういち
+えだ,よしろう
+あんどう,ひろお
+たるい,ゆたか
+ごとう,ひろし
+しもがき,しげる
+ながた,ゆきお
+ほしかわ,じゅんいち
+こみなみ,まさお
+かが,よう
+はぜかわ,のぶお
+ちば,しずか
+うらの,さとし
+こんの,としき
+こばやし,かずよし
+ももせ,ゆうこ
+つげ,じゅんじ
+やすこち,やすたか
+ほそざわ,しょういち
+すぎやま,かつゆき
+あべ,たけゆき
+たなか,のぶゆき
+せいけ,やすひろ
+つげ,まさのぶ
+わかばやし,あきお
+おおくぼ,たかお
+おかべ,ふみお
+いわい,ひさお
+たなか,てるゆき
+やまもと,みつお
+たかやま,なおき
+たじま,ひでのり
+かずしろ,まさはる
+こいで,たかし
+かも,たつのり
+きたじま,よしゆき
+はまの,しげる
+いいやま,としゆき
+やました,しょういち
+きた,しげゆき
+いしたに,さとし
+くじめ,さだお
+きしかわ,かずお
+ながの,まさひろ
+よむら,ただのり
+なかしま,としゆき
+もり,えいじ
+やまじ,よしかず
+おぜき,まさたか
+いなだ,やすし
+はやせ,たかし
+ほんぽ,すすむ
+おおや,かんじ
+きたむら,たかし
+としん,さとる
+たけい,やすふみ
+おかやま,のぶお
+いしずか,こうたろう
+はた,としあき
+すがはら,ゆうじ
+いわみ,やすお
+ゆもと,ひでお
+きたがわ,ゆたか
+いはら,ゆうぞう
+のむら,いちろう
+みやさか,けんじ
+よしだ,ともよし
+ふかだ,たかし
+ふじわら,かずみつ
+きと,としあき
+うえもり,いさお
+やまかわ,まさみ
+くろだ,みちろ
+おおつか,ひろし
+うえだ,ゆうじ
+その,みきお
+だい,ともみち
+しんぞう,ひろかず
+うえだ,ゆたか
+わかみや,かずみ
+かむら,ふみつぐ
+ふるたに,たかまさ
+かつうら,かつみ
+くまい,せいじ
+ばば,はるつぐ
+かねとも,たつみ
+むらはし,とおる
+どい,たかし
+なみかわ,しげはる
+たかおか,けんじ
+まつもと,りゅういちろう
+わたなべ,よぞ
+ただ,まさひろ
+ありま,よしてる
+ながの,としのり
+やの,てるゆき
+いさか,ゆきひろ
+いとう,とくいち
+やまざき,すみお
+くの,かずお
+しば,けんじ
+きむら,あきら
+すみだ,かずお
+もとがいと,ひろかず
+にわ,しげこ
+たけうち,ゆうじ
+たむら,かずよし
+ぼうた,けいすけ
+かどや,ゆうご
+はらだ,よしのぶ
+みついし,ひろし
+いのうえ,けいすけ
+むらはし,まこと
+にしかわ,しんいち
+ますだ,こうじ
+おおた,くにお
+ふくい,まさお
+かげやま,けんじ
+ながつか,ただゆき
+くさの,しげお
+こじま,ひろゆき
+くらた,ただし
+たけうち,けんいちろ
+いけだ,あつお
+たかの,ゆたか
+くらや,しんいち
+おの,つとむ
+なかだ,じゅんぞう
+とくもと,たかあき
+おおはし,としふみ
+やまだ,あきら
+はんだ,てつお
+いしはら,せいじ
+よしはら,さとし
+たていし,としひこ
+いとう,しふみ
+さとう,たかお
+おおくら,しょうじろう
+なかすじ,よういち
+たいら,ひろし
+きひら,はるひこ
+なかじま,ひでつね
+やまざき,ときお
+とびた,あきら
+なかざわ,はるお
+にしはら,かずお
+めぐろ,じゅんじ
+まるやま,こうぞう
+きくち,ひさのり
+あおき,よしみ
+きったか,たみお
+やすい,ゆきこ
+いちまる,よしあき
+やまざき,としゆき
+すがはら,じゅんいち
+とみなが,よしひこ
+ちぎり,えいじろう
+おおば,ゆりこ
+まつい,ふくみ
+ひらやま,まさひろ
+やまむら,みつのぶ
+おおで,まさみ
+よしなが,ちかえ
+こじま,たけのり
+とみなが,ちえこ
+さが,てつや
+はら,ゆうじろう
+とみよし,たかし
+よしだ,そのえ
+ひらばやし,ひろかず
+まつど,ひでお
+いまふく,ゆうし
+きよせ,しんや
+はなぶさ,すすむ
+ちば,としのり
+やまざき,りゅうじ
+なかはら,けんじ
+おの,こうへい
+うえまつ,かよこ
+あきやま,まさあき
+とたに,よういち
+よねだ,まさひろ
+ふるくさ,さかえ
+ひろや,のりひろ
+よしだ,しんさく
+かねこ,しげる
+ながた,まさはる
+いべ,しんじ
+せきね,まさゆき
+おかだ,まさはる
+かない,かんせい
+さとう,ひとし
+さかきばら,よしお
+いまい,みはる
+ひめじ,しんぞう
+おぎはら,まさよし
+たけむら,たかのり
+とおやま,たかし
+きたはら,たかひさ
+おおさか,かつひこ
+おおこうち,かずまさ
+たかお,のりこ
+うど,としろう
+うの,きんご
+ふじき,ひろみ
+さとう,としお
+いそがい,まさみ
+からさき,よしお
+やまだ,たもつ
+わだ,えつお
+しばた,としお
+しおざき,たつお
+しが,みつのぶ
+くりた,みちお
+はしもと,よしろう
+よしむら,たかし
+みやざき,ひろのり
+きたがわ,きはちろう
+おだけ,ちから
+すずき,あきら
+やまいし,きよあき
+おぜき,ひろし
+たかい,さとみ
+かねこ,けんじ
+はらだ,ひでゆき
+しまだ,けんさく
+やなぎ,たけお
+すずき,たかひと
+たかはし,やすお
+おぐりやま,とおる
+わたなべ,のぶゆき
+やまむら,けんじ
+たかはし,ただひで
+しおじま,かおる
+つるおか,とおる
+いとう,としみち
+まつうら,せいき
+やまもと,たかお
+くまみ,ゆうぞう
+けんよし,たかし
+やまかげ,よしあき
+ごとう,ひろお
+たけうち,まさとし
+はやし,かずゆき
+いしばし,としゆき
+いな,りょう
+いのうえ,たかゆき
+にしかわ,ひでお
+はんだ,きよじ
+たてばやし,かずよし
+おしま,くにひこ
+しばた,はるき
+みうら,あつし
+こかご,かずのり
+いいだ,ゆたか
+たけすえ,かずみ
+いがらし,てつや
+ますやま,よしお
+さくやま,かずお
+さくらい,けん
+たまり,まさお
+いまにし,みのる
+おがわ,まさひと
+はぎわら,きよし
+おおくに,ひでひこ
+いけだ,せいいち
+まえじま,あきら
+いわい,かつみ
+やまだ,まさき
+すだ,まさと
+ときわ,おさむ
+はやし,ゆういち
+たけもと,かずお
+かんばやし,まさお
+とざわ,つとむ
+たての,しんご
+かんべ,けいこ
+おくだ,よしと
+たもと,とみお
+ながい,のぶたか
+おざわ,しんいち
+さとう,やすなり
+こんど,あきお
+ねぎし,ただし
+たなか,てつお
+こむろ,りょういち
+よしだ,とよふみ
+いいじま,ひろみ
+にいほり,かずお
+こもりや,よしたか
+しんどう,ひでずみ
+やの,よういち
+たなか,まさとし
+はぎたに,ろくろう
+こすぎ,だいきち
+いべ,のりお
+かなざわ,ひろし
+ただ,ただひさ
+ながた,りゅうすけ
+かまだ,ひろし
+たかはし,よしお
+おいで,まこと
+たかくら,ひろし
+やすまつ,すすむ
+まる,よしひさ
+くぼた,のぼる
+たばた,けいいち
+もりた,のりお
+くにとも,つねじ
+あさぬま,ひろかず
+ほしな,やすお
+のざわ,はるひさ
+まつむら,しんいち
+ひらかた,かずお
+ひらま,はるお
+しみず,たかし
+よこかわ,わたる
+きくち,あつし
+くろさわ,いさむ
+たけうち,てつお
+ひらが,ようじ
+さいとう,のりお
+うちぼり,こういち
+いなむら,よしはる
+おさだ,たかし
+すぎやま,たかとし
+いまず,やすただ
+うらの,まさよし
+もちずき,かずお
+すがわ,しげる
+いけだ,としお
+たなか,はるお
+さいとう,たつじ
+ふじた,としみち
+みやね,つとむ
+かまだ,みのる
+ねぎし,よしのり
+おくがわ,ゆきお
+はやし,ひさし
+ばば,のぶひこ
+やまもと,つとむ
+えんど,のぼる
+そめや,おさむ
+あらい,よしゆき
+あべ,あきら
+ちば,たつお
+たかやま,みのる
+やまき,ゆうじ
+たけうち,しげふさ
+たけべ,たかお
+あだち,よしあき
+たかしま,あきら
+よこやま,のりなお
+しらいち,まさる
+くどう,しげお
+すずき,きよし
+たかしま,たかし
+やまがた,みのる
+よしだ,たくお
+みやかわ,けんじ
+ささき,むつみ
+いでうら,かずこ
+たなか,ひろし
+いとう,あつひこ
+おおつ,たけし
+ふえき,としかず
+しもふさ,あつし
+みやかわ,まさたか
+はしもと,たかし
+やまぞえ,こうじ
+にいくら,のぶお
+わたなべ,としのり
+むろふし,かな
+かんだ,かつまさ
+くどう,けいこ
+たかはら,わたる
+おかだ,けいじ
+どい,さとる
+たなべ,まもる
+こむろ,けんいち
+もりやま,ふみこ
+あらまき,のぶお
+こしべ,かずろ
+さの,のぶひろ
+おかだ,よしまさ
+ふじわら,きょうこ
+まつお,かずみ
+たなか,みねお
+きはら,なおき
+にしはた,ゆう
+にしわき,よしたか
+おかざき,ひろかず
+ふじわら,おさむ
+やすだ,ゆかこ
+おか,きょう
+ほその,しげお
+あかし,たくま
+なかい,こういち
+やすだ,きくじ
+てらむら,ふみたか
+くぼた,よしゆき
+こにし,しげみ
+のむら,あきら
+いのせ,くにこ
+わたなべ,やすひこ
+にしお,かずひさ
+もみき,こすけ
+すなだ,ひろたか
+たけうち,さちこ
+あきせ,ひろし
+しおた,よしひこ
+きど,よしあき
+いしわたり,としお
+しらがみ,たかひろ
+うちなが,ひでや
+たなか,しんいちろう
+くろさき,てつお
+おとし,ゆういち
+さとう,まさお
+すずき,まさゆき
+ひろた,さいじ
+やのかわ,じゅんいち
+さかもと,まもる
+こむろ,まさと
+いまた,よういち
+ほそや,かずたか
+てらさか,まさゆき
+ほんま,かずえ
+かすが,ひろしげ
+まつだいら,えいじ
+かわかみ,しゅうじ
+ねごろ,しんじ
+ふくだ,えいぞう
+すずき,ひろし
+とまつ,よしじ
+いの,たつろう
+すずき,じゅんじ
+あさい,かずお
+はら,たかのり
+ほし,くにかつ
+なるかわ,かずのり
+おだ,たかあき
+おばな,しげやす
+たにざわ,まさひろ
+ふじおか,たかし
+ごとう,たかじ
+これなが,としあき
+たかはし,だいすけ
+たから,みつはる
+おおくわ,きよし
+たなか,ひでかず
+さとう,のりお
+しまぬき,けん
+そね,ひろし
+たなか,かずお
+ふじむら,こうじ
+ごとう,しんじ
+はしもと,やすたか
+ひるま,あきら
+ほしば,ひでよ
+かめわり,ひろみ
+おくい,ひろし
+ひさもと,おさむ
+すずき,きよし
+ひらさわ,よしたか
+きたで,のりあき
+ふくだ,かずひさ
+しおざき,けいじ
+むとう,ゆたか
+にしおか,さぶろう
+つぼの,ひろひさ
+なつうめ,としまさ
+たにがき,ひろあき
+おおすが,かずお
+うちだ,ひでお
+かとう,えいじ
+ささき,ひでお
+かしま,のりお
+あかさか,かずお
+かわかみ,よういち
+しど,たつや
+やまうち,よしひで
+かの,ゆたか
+はら,いくお
+まつばら,けんじ
+てらかど,かずひろ
+しおた,よしのり
+おかだ,ひとし
+くろだ,りょう
+もりもと,ふじお
+せき,ひろし
+すずき,あきら
+たけくさ,ひろし
+たがしら,のぶお
+こばやし,おさむ
+さえき,けいじ
+たつざわ,きみあき
+さいとう,ひとし
+ふるかわ,きよし
+たむら,ふみと
+つりや,まちお
+さかぐち,ふみとし
+ふくしま,よういち
+おおかわ,ひろし
+ふじた,しゅんすけ
+かわぐち,かつのり
+ときおか,てるお
+なかの,とみお
+いのうえ,まさゆき
+くにとし,たくろう
+さかた,こういち
+もりかわ,つねお
+のぐち,ひろし
+くぼた,むつみ
+なかおか,たつお
+のふじ,けいじ
+もがり,えいじ
+まえざき,いさお
+おおつか,しげよし
+みずた,けんのすけ
+すぎやま,よしひさ
+かがわ,よしたか
+にしはら,よしふみ
+てずか,しんいち
+しおみ,みつお
+おおはら,ただあき
+あさくら,あきひろ
+しまだ,てつや
+しまかわ,すすむ
+はしもと,ひとし
+うず,しずお
+たかくわ,まさのぶ
+みちた,しゅんいち
+うえだ,ういり
+しが,たかつぐ
+いけみ,みつぐ
+もり,まさあき
+かしもと,ますみ
+いしはら,ちえこ
+かねこ,ちえこ
+たかはし,としお
+もとい,まさお
+こたけ,みちお
+かさい,すえこ
+かとう,のりこ
+こくぼ,けいこ
+わかやま,しげや
+さなだ,まさひこ
+さかた,とみよし
+のむら,みつお
+はやかわ,かずみ
+みやざき,しげお
+おにつか,けんじ
+いで,おさむ
+ながさこ,たかのり
+いとう,みちたか
+かねたけ,てるあき
+くぼた,きよゆき
+ありま,けいこ
+わかお,ひろし
+いしざか,たかゆき
+おた,ぜんはちろう
+さかもと,けいご
+おおほり,ゆきお
+しんたに,としあき
+うちやま,たかし
+ひらた,みなこ
+ありぞの,さとこ
+いとう,たかし
+あおやぎ,まさあき
+なかむら,さだお
+いいだ,みちお
+なしき,かおる
+むらせ,かずお
+まつお,けいご
+さとう,しろう
+あさぬま,しんいちろう
+ふたみ,やすまさ
+ふなと,くにみ
+ふじた,ゆみこ
+ふるかわ,たけお
+ふなはし,ひさや
+ぶとう,ひろゆき
+かのう,かつひろ
+おきつ,ひろたか
+たかぎわ,いさむ
+ほしの,ちえこ
+にしじま,くにひろ
+かまた,ちあき
+つじもと,としいち
+はなだ,しんじ
+ひろせ,まさお
+にしだ,ひとし
+うえき,としかず
+よしの,きよお
+きたむら,せいいち
+しみず,みちこ
+いしざき,ひさし
+はやし,みつのぶ
+きくち,ひでふみ
+おかど,つぐお
+こむら,しげる
+はしもと,つとむ
+なかつか,たけし
+おおいし,ますよし
+くろだ,まさよし
+なかい,まさみ
+きたざわ,のりあき
+きしだ,しげる
+かなまる,まこと
+あらい,しずお
+ふたつぎ,はるお
+きくち,としお
+いいだ,やすし
+なかえ,あきお
+ひらまつ,みのる
+にしおか,じゅんぞう
+さとう,けいき
+もり,はるお
+ほしの,いさお
+やまぐち,のぶひろ
+うすい,よういち
+まつばら,えいいち
+ありさか,まさき
+にしお,えいじ
+きだ,てつお
+やの,ゆういち
+かとう,けんた
+わたなべ,ちひろ
+はやし,やすお
+わたべ,よういち
+わたなべ,まさお
+ゆぐち,ひろこ
+やまもと,ひさし
+さいとう,ふみお
+かいず,けんいち
+ほしの,ひでお
+しのはら,のぶひろ
+おおぬま,まもる
+みわ,たけし
+ほりむき,よしま
+いしたて,しんいちろう
+みふね,きよし
+もみき,まこと
+はせがわ,てるお
+すぎやま,しゅんじ
+つくだ,ただし
+あだち,ふみのり
+でざわ,ただよし
+おた,きよし
+さとう,あきら
+せきぐち,みつのり
+こくぶん,よしき
+ほしな,ゆきふみ
+うらの,こういち
+たけむら,やすひろ
+とくなが,ひとし
+くりはら,ひでと
+おくむら,じゅんいち
+さいとう,しんいちろう
+まつした,けいぞう
+たけだ,みちこ
+にしき,もとよし
+うめだ,さかえ
+ほんだ,いくお
+かも,かずうみ
+うしだ,つよし
+さいとう,ひろつぐ
+はすだ,ますお
+みかわ,ようこ
+うちだ,くにひこ
+にしざき,しょういち
+いがらし,しょうじ
+わたなべ,あさこ
+しまむら,こうじ
+かとう,のりこ
+かわべ,しょうこ
+さかもと,ようじ
+もりした,もとよし
+すがはら,りょう
+とみやま,かつひこ
+ふくだ,つよし
+おとざき,あつひこ
+ふじもり,たかお
+こもり,きよゆき
+ふくなが,まさあき
+みやはら,かつのり
+じんの,みつお
+きむら,えいこ
+いながき,ゆきこ
+もり,のりお
+わたなべ,かつのり
+つじもと,あきお
+もんぜん,ひろゆき
+なむら,
+やまもと,えりこ
+はしもと,ひろき
+あらい,やすのり
+ふじい,ひろし
+わたなべ,てつ
+はせがわ,とよかず
+しげやす,えいいち
+やまのい,たくま
+こばやし,まさる
+ながい,よしあき
+さわ,のぶお
+まつよし,みちお
+さいとう,かおる
+かのう,ひろあき
+うしごめ,やすお
+いしい,こうじ
+うすき,いずる
+すどう,よしお
+かじやま,たかきみ
+おおば,ひでき
+すわ,ふみお
+いわた,やすと
+とう,はじめ
+おいかわ,ひとし
+ひらい,えいこ
+たかしま,としお
+ふみの,ひろし
+おかざき,のりお
+しらき,まさつね
+たけもと,ゆうじ
+まつもと,のりひこ
+まつばら,ひろし
+えびはら,こうじ
+ふじの,やすお
+ふかや,まさひろ
+ほしの,たかし
+かたやま,さちこ
+あらかわ,まさゆき
+たかの,かずお
+くろだ,やすひろ
+いとう,じゅんこ
+こざい,みつる
+うえやま,きよし
+はっとり,としき
+にしむら,としたか
+ふるかわ,たかお
+やしき,しげき
+ほどやま,ひでお
+えとう,ともひこ
+やまもと,まさとし
+せきぐち,いさむ
+たなべ,ひでとし
+たけだ,としゆき
+しんたに,かたし
+くぼた,きよし
+すぎおか,さとみ
+やまざき,さだのり
+さいとう,ひでき
+うえの,としたけ
+しまもと,こすけ
+きたの,まさみ
+いいずか,りょうこ
+いずみ,きょうじ
+はらだ,たかゆき
+おちあい,さとし
+やまうち,あきひろ
+えぐち,ひでつね
+はぎわら,たけし
+たかぎ,たけのり
+おくもと,まなぶ
+まつざき,りょういち
+いちむら,ゆりこ
+みやさか,ともこ
+みやた,せいいち
+ながお,しょうきち
+いわお,まさし
+ふかざわ,しげる
+たむら,まさお
+きりゅう,ただお
+まつざき,よしお
+かとう,てるみつ
+みた,なおと
+いしい,いさむ
+おかもと,てつお
+うえおか,のぶお
+きょうの,まさと
+かねこ,ゆうぞう
+さくらい,きょうこ
+わかばやし,としひで
+わたなべ,よしひろ
+あさい,にすけ
+かどの,ゆうじ
+やまざき,とよひろ
+あわの,としゆき
+おがわ,たかのり
+ぜんけ,としお
+ふくもと,ともひこ
+おど,かずのり
+もりもと,たかお
+とうぼう,かずみ
+かたやま,まさし
+ながまつ,たかあき
+わたべ,よしみ
+いしき,ゆう
+いながわ,ゆうこ
+なかの,たかはる
+にしやま,やすよし
+しもだ,みよこ
+しげた,たかお
+まつもと,ひろしげ
+かたやま,ゆう
+その,かつみ
+いせき,ゆきお
+いとう,よしかず
+せきね,まさお
+むらやま,ふじお
+まるやま,けいじ
+くろさわ,よしふみ
+すみ,とおる
+のぐち,ゆうじ
+さとうみ,ひでき
+おおかわ,つぐひと
+なかの,ひでのり
+おおいし,じ
+はぶ,あきら
+うちだ,のりまさ
+みき,ふみのぶ
+すずき,つねゆき
+かさはら,いずみ
+おおくぼ,かずはる
+かたかみ,のりかず
+たかはし,としひこ
+いしかわ,かずや
+たかとり,たかお
+たにぐち,しんじ
+せき,ゆきまさ
+くぼた,まさと
+あべかわ,むつお
+ふじまき,たけし
+かたやま,まさゆき
+こやま,けんじ
+はしもと,あけみ
+すみ,みちお
+にしかわ,ひろし
+さわま,あやこ
+はしもと,ゆうこ
+なかた,やすまさ
+うちやま,ひろし
+ささき,まり
+あさはら,みつひろ
+にった,ふみこ
+だん,るりこ
+すぎた,てつし
+やまもと,しんいち
+おふち,みき
+こばやし,みわこ
+みよし,こうきち
+いしだ,ひでひこ
+おにき,のぼる
+くりはら,たみお
+しらい,つかさ
+さかにし,けんいち
+おだ,ひさし
+かます,けんぞう
+なかがわ,まさよし
+かしもと,きょういち
+ばんどう,ゆずる
+ふたみ,まさし
+やました,たかし
+はやし,ゆうじ
+かげやま,みのる
+あすま,のぶお
+しもむら,ゆういち
+やまぐち,ただし
+やまと,ひろし
+さとう,しげる
+まつだいら,かずや
+まつむら,としみち
+こんの,よしや
+おおはし,やさぶろう
+きくた,しげき
+よしおか,ひろし
+さの,よしお
+たなか,ゆきのり
+ささき,すすむ
+かわぐち,あつし
+やました,たつお
+たけむら,ふみお
+ふくち,かずえ
+まなか,とみえ
+あらき,たかのぶ
+ひらの,よしかず
+なかむら,つとむ
+はしもと,としかつ
+かとう,いくこ
+はまかわ,くにお
+はやし,けいこ
+いとう,けんいち
+すずき,いちろう
+たけうち,かずひこ
+にし,こういち
+いわほり,としまさ
+いまい,くみこ
+もりの,たかし
+にしはら,けい
+きりや,ひさと
+さとう,とよこ
+ほそだ,ひさこ
+たかはし,ただし
+なかじま,しげる
+やすはら,なるゆき
+くろいわ,たかし
+かも,ひろし
+あかまつ,くにあき
+きたむら,まゆみ
+にしだ,ゆきこ
+おかだ,しんいち
+ささき,としゆき
+たかはし,ひろし
+しみず,いさむ
+えんど,しんすけ
+うだがわ,てるお
+しみず,のりふみ
+あおやぎ,せいぞう
+はしもと,かずお
+たけうち,ひであつ
+あらい,やすし
+いしじま,いさお
+こがね,ひでお
+さわしま,しんいち
+たかやなぎ,みのる
+まさだ,ひろみち
+しみず,あきひで
+おのでら,たかお
+たなか,みつる
+のむら,のぶお
+よしだ,ひろし
+よしだ,としすけ
+さたけ,しんじ
+さいとう,まもる
+みやぎ,ひろし
+たかしま,けいじ
+かばや,ひろふみ
+いしざき,しんいち
+かがや,よういち
+こたに,たくもり
+こすだ,やすあき
+いじり,ゆたか
+まるやま,たみや
+かない,よしお
+やぎ,みつぐ
+ふじの,さとし
+こでら,まさと
+すぎお,まさゆき
+すがはら,こういち
+さいとう,みつやす
+おか,はるやす
+いしまる,おさむ
+みやざき,こうぞう
+はまの,みちお
+こたじま,よしのり
+たかしま,あけふみ
+つかだ,せいいち
+なかむら,かつふみ
+たけだ,まさのり
+やすむろ,はるひこ
+なかむら,ひろし
+ふじしま,しげまさ
+おかだ,たけし
+あや,みつまる
+なかむら,みつまる
+たかはし,たけひろ
+すがはら,しげただ
+ゆあさ,けんじ
+いしい,むねよし
+おおくぼ,ひろとし
+おさわ,まさたけ
+やまもと,みきお
+いまいずみ,かずひこ
+おかだ,よしひろ
+なかむら,くにお
+たなか,きよし
+なかの,たくお
+おおもり,かずひこ
+やまもと,かずお
+ながい,ゆきまさ
+こばやし,よしはる
+ひきち,ひさし
+やまだ,としお
+つかもと,つとむ
+いのうえ,まさと
+いのうえ,あきら
+すみかわ,かおる
+ふくだ,じゅんいち
+やまもと,せつこ
+さいとう,ゆうこ
+かんば,よしみつ
+さらい,まさあき
+さかき,しょうじ
+やすい,たかし
+かみむら,たかし
+せべ,よしたか
+よしだ,としかず
+ながせ,ただし
+ふくち,いずみ
+ふくだ,じ
+のなか,のぶひこ
+いまだ,まさひろ
+にしかわ,ますこ
+こやの,ひでお
+なかざわ,あきお
+おがわ,たかし
+なかやま,はるひさ
+ぬのかわ,けいこ
+そね,ふみお
+みぞぐち,ゆきお
+こばやし,いわお
+よしまつ,まさお
+おおはら,まさおみ
+やまだ,しんじ
+みのぐち,よしのり
+しんめん,たかふみ
+のせ,まさお
+いわはし,りょういち
+あかい,たけし
+つたもと,まさはる
+なかもと,みのる
+くだなみ,まさゆき
+いちだ,たかし
+やの,えいじ
+まつき,きみお
+ささき,よししげ
+ふるの,かおる
+ふじた,あきら
+いのうえ,みどり
+たや,みつやす
+みやざわ,たろう
+わたなべ,ようこ
+あくね,としろう
+ほしの,しんいち
+よしだ,かずお
+うえむら,のぼる
+かみや,けんじ
+すずき,たけし
+あんどう,たかはる
+とよいずみ,としお
+くわな,のりこ
+にいみ,かつし
+みうら,おさむ
+のむら,あきら
+おかだ,じゅん
+あさぬま,かずひろ
+ささお,ひでゆき
+いながき,まさと
+すがわら,さとし
+しょうじ,たけさだ
+たがわ,みのる
+そが,のぶとも
+しょうわ,きよみ
+まつかわ,ひろゆき
+しもむら,ゆうじ
+わたなべ,なおゆき
+こばやし,しんじ
+いいだ,こういち
+ふくもと,けんいち
+むらやま,ひろき
+ほり,まさあき
+やまの,ひでお
+にしわき,ようじ
+まつお,まさな
+おかもと,まこと
+おおさき,けんいち
+うめもと,なおふみ
+おかむら,あたる
+こいけ,こうせい
+おおたに,まさあき
+かたおか,まさき
+おかだ,しちろう
+ふくしま,よしお
+えだなか,やすのり
+すずき,しげる
+いちかわ,せいいち
+くろかわ,きよし
+さとう,きよひさ
+おおさわ,かずひこ
+もちずき,すえひろ
+やました,けいいちろう
+いちかわ,たかし
+ふかざわ,かずほ
+くぼた,のぶお
+にしむら,こうじ
+ねぎし,ひさゆき
+こんど,けんじ
+ふるや,みつぎ
+こばやし,たつお
+たむら,ひろひこ
+みつはし,だいはちろう
+くまざわ,かつみ
+やまだ,よしお
+ひろつ,かずみつ
+かねだ,ゆたか
+あそ,ゆきお
+えびはら,きいち
+やすい,くにお
+すどう,ひろこ
+やはた,まさのり
+さかい,ともひろ
+さが,よしお
+やまざき,えみこ
+なかむら,ようこ
+いざわ,ひろちか
+あらい,けんいち
+うぶかた,さだみ
+わたぬき,ただゆき
+ひした,のぼる
+かとう,ゆうこ
+やまね,よしと
+やました,ひろし
+のむら,よしろう
+やない,まさゆき
+むらかみ,まさみち
+あおき,あきら
+やしろ,すすむ
+あさま,まさひろ
+おくだ,ふみお
+いしばし,ゆうじ
+みなみで,ひであき
+いぬずか,こうへい
+ときわ,よしはる
+みうら,やすのぶ
+まぶち,としはる
+おばら,ひろゆき
+まつき,ひろし
+えぐち,けんいち
+おおみ,たけし
+わたなべ,たけし
+あらかわ,しんじ
+すがの,あきら
+やすい,こうへい
+みやもと,ひろやす
+ふじぎわ,こういち
+きたがわ,みきお
+たにぐち,みつる
+こじま,よしあき
+あまかわ,ゆたか
+おおぬき,ゆたか
+たなべ,こうじ
+まるはし,いさお
+やどや,じゅんいち
+おおがく,よしひろ
+さかた,こうへい
+はら,ひでみ
+たかぎ,ひでお
+あいはら,あきら
+おおた,とおる
+あきやま,よしひろ
+しみず,たかお
+こばやし,おさふみ
+はたもと,けんじ
+うすだ,たかのぶ
+たかはし,かずお
+なかがわ,てつお
+まつばら,はるお
+くぬぎ,ゆたか
+おがわ,よしお
+つじ,かずたか
+かわい,けいいちろう
+すがわら,しゅういち
+むとう,かずお
+おばら,やすとし
+かとう,たかゆき
+かぶらき,ゆきお
+わかたべ,つとむ
+おがわ,こうしろう
+いわさき,ひろゆき
+なりた,おさむ
+あきやま,たかし
+みつい,けいいち
+えんど,ゆたか
+よねた,あきお
+あおい,きよし
+おかもと,よしひさ
+おおつか,しんいち
+ふくもり,さかえ
+てしま,かずまさ
+はま,ひでき
+よしだ,はじめ
+かわべ,よしはる
+たなか,やすのり
+たかはし,きょういち
+たなべ,ふみあき
+あそ,ひろいち
+たかだ,ひろし
+みやの,としお
+うえずみ,ひとし
+いちかわ,やすあき
+あさわ,ともふみ
+いなもと,かずお
+もりや,ひとし
+なかたに,けん
+みやもと,いちぞう
+みくに,えいいち
+きたむら,ただまさ
+やたべ,まさひで
+ながかわ,りょういち
+やな,かずお
+さくま,みつる
+あらい,としお
+しまだ,なおこ
+てずか,しゅんいち
+うえの,しゅんいち
+さいとう,ひろゆき
+おおくわだ,まなぶ
+よこやま,よしおみ
+わたなべ,よういち
+にしむら,あきのり
+たかまつ,こういち
+にしむら,たつま
+いちき,ひろし
+いわした,のぶつな
+おの,としお
+にしき,たつお
+さわ,かずお
+たかみ,おさむ
+やすふく,けんじ
+おおた,ひろし
+おかもと,ひろまさ
+さかい,やすお
+ふじもと,ときお
+まつもと,しげのり
+おおやぶ,かずや
+にしむら,しゅういち
+ほりうち,けいいち
+いしもと,しゅういち
+まつもと,なりお
+たけうち,しんいちろう
+もとやま,こうしろう
+よしなが,こうじ
+ふるかわ,みちお
+たにぐち,よしお
+たけこし,まさとし
+つむら,こうせい
+おの,しげお
+おかもと,さとし
+ふるた,まさひろ
+にしの,そういちろう
+みずたに,ひろゆき
+こやま,ひさし
+きくち,けんいち
+おおこうち,まさあき
+かわた,たかし
+くはら,よしゆき
+ふるはし,こうぞう
+たかよし,ふみとよ
+かす,のぶゆき
+あみもと,すすむ
+むねとう,としお
+まつもと,すすむ
+たかなし,まさあき
+あきた,としお
+たかはし,やすみち
+ながい,たかし
+よしだ,つかさ
+まつもと,やすあき
+とくだ,みちお
+ひらい,のぞむ
+おくしま,たかし
+ました,しげお
+やまだ,きみひろ
+さくらい,ともお
+たきざわ,さとし
+ますこ,ゆうじ
+しんかわ,ひろえ
+おおたに,ただひろ
+かわの,よしみつ
+あらかわ,てつお
+あだち,たかゆき
+うちだ,けんじ
+こはら,としひこ
+おおはし,かずひこ
+かめおか,よしお
+みむら,とみお
+いき,よぞ
+あしずか,ひろし
+やまもと,ひろのり
+よしだ,おさむ
+はらおか,かつやす
+うるわし,ひろし
+おんだ,けんじ
+いんど,まさお
+たけなか,まさとし
+ふじさわ,まもる
+おおもり,まさゆき
+なかむら,ひろし
+しょうじ,よしのり
+きたじま,よしあき
+いとう,あきら
+ひらお,かずたか
+すみもと,のぶや
+なかたに,ひろし
+あらしま,ゆきお
+かたやま,ゆきのぶ
+うえだ,まさひろ
+ふじもと,ひろふみ
+やまはた,りゅうじ
+おおたに,つとむ
+いいぬま,よしひろ
+ながさわ,よしろう
+やすだ,しゅうじ
+ふくしま,りょういち
+さかきばら,あやこ
+かとう,たかし
+よこざわ,ふみたか
+かどの,かずみ
+やまおか,きよし
+かみたに,ひろき
+かとう,えつろう
+のもと,としかず
+すぎもと,せいいち
+ふじの,こうじ
+いのうえ,しょうじ
+はせ,まさかつ
+もり,えらぶ
+かわばた,ひでお
+かわぞえ,しょういち
+はしもと,だいしん
+ひろまさ,やすひろ
+きしもと,くにお
+ひらつか,みのる
+うえだ,よしゆき
+あらい,としひこ
+いいだ,まさゆき
+ひろしま,しょうぞう
+いさか,かつひろ
+すずき,よしお
+くらもち,たかお
+さいとう,まさお
+すずき,みつぐ
+ふかや,てつじ
+さかい,としろう
+おおわだ,としお
+かめや,かつみ
+くさうら,としお
+わだ,かずお
+ごとう,きょういち
+ひらふく,あきら
+もろや,ひでとし
+いけだ,さだゆき
+ますだ,まさはる
+みずの,としたか
+はやし,きよとし
+あおき,としひこ
+こばり,まさゆき
+みさわ,さぶろう
+たかぎ,てつお
+えんど,けんいち
+すがさわ,せいじ
+おりはら,とよみ
+まつなが,たかふみ
+かさい,きよあき
+せむら,たかし
+さくらい,たかあき
+てらかど,よしゆき
+ふじた,やすあき
+かわのべ,かいち
+あおば,まさる
+むらもと,ゆきよし
+つぼうち,たかし
+ふるしょう,ふじお
+しばやま,ふみお
+やまもと,たかひろ
+うちだ,ひろふみ
+まえざわ,とみお
+こむら,あきのぶ
+やまさき,よしじ
+うしき,かずみ
+まちやま,しょうじ
+ふじぬき,すすむ
+なかむら,まつみ
+くすもと,てるお
+すずき,よしお
+うえやま,としゆき
+こいけ,ひろし
+はせがわ,みつあき
+ふるかわ,やすひろ
+やまだ,あきお
+ゆはらぎ,みつよし
+おしま,のりゆき
+そね,まさひろ
+とうま,さちひろ
+たかはし,しずお
+かけはた,まさお
+いしい,しげる
+さとう,のりゆき
+むらやま,けんじ
+ほりぐち,まこと
+なかざと,ひろし
+さとう,まこと
+かねこ,りゅうぞう
+かしま,としのぶ
+とぐち,ひろむ
+こみやま,きみあきら
+やまおか,よしのぶ
+たかはし,けいいち
+もりた,けいいち
+よこい,よしのぶ
+ひらい,けいいち
+しいばし,まさたけ
+かねこ,まさふみ
+なかね,のぶはる
+せきぐち,てつお
+みもり,たかひこ
+きくち,まさたか
+やまもと,かつじ
+あらかわ,たかお
+ともくに,まさき
+とみた,のりかず
+たかはし,しゅうへい
+とがし,のぶお
+かわむら,としひろ
+ふくなが,けいじ
+まきた,とくみ
+さの,みのる
+さとむら,けいじ
+さかの,じゅんや
+つちはし,しげあき
+うえの,けんぞう
+なかがわ,ひであき
+とくなが,けんじ
+いとう,かずお
+ひさまつ,とよとし
+おおつか,かめお
+かわもと,しげき
+のむら,よしいち
+かのう,ゆたか
+うえさか,ゆうじ
+ふじわら,ひらお
+おがわ,まさと
+くらた,ともふみ
+はなそと,とよふみ
+にしかわ,たかよし
+えびす,ひでお
+やすのり,よしはる
+さかい,たけし
+まえだ,よしあき
+ふくだ,しげたか
+やまもと,まさずみ
+しおた,やすまさ
+むらかみ,ともよ
+いくみ,たかし
+なかぎ,ゆみ
+とくまつ,たかお
+たにい,としゆき
+おおやま,けんじ
+たの,たかちほ
+おおた,ひろのぶ
+くまの,あきお
+さわぐち,まさくに
+あさの,かずお
+さかぐち,のりゆき
+わたなべ,つとむ
+かとう,かずお
+まえかわ,たかし
+まつもと,かずお
+まつもと,としお
+やまなか,えいじ
+こばやし,こうじ
+ふじた,たつお
+やぎ,まさみ
+いわい,まさたか
+ふくしま,ひでみ
+ふるかわ,こういち
+おがた,まさのり
+すずき,ただひこ
+しかま,たかし
+きしもと,しゅんいち
+ころぎ,かつみ
+ふたみ,きよし
+やしろ,としお
+はりいけ,よしはる
+しむら,ありまさ
+ながくら,いちろう
+みなみ,こうじ
+とくなが,きよし
+たなか,ふくむ
+てらさき,しろう
+かとう,とおる
+みずの,よしあき
+たもと,ひとし
+うちだ,ひろかず
+たけいち,よしゆき
+ひびの,ひろし
+こばやし,りょうへい
+わたなべ,ひろただ
+ふかだ,まさひろ
+いしたに,かずひさ
+いで,よしゆき
+にいさと,まさゆき
+すなはら,しょうじ
+しみず,まさお
+かとう,のりゆき
+ないとう,じゅんじ
+こいけ,とうすけ
+きたむら,とよひこ
+かがわ,としゆき
+いけだ,たかし
+かのう,たかし
+おかもと,そうじ
+こばやし,さだひろ
+いしい,まさひろ
+さえき,ますゆき
+さわだ,たかし
+ごとう,のぶゆき
+おの,まさひろ
+ふなおか,まさあき
+しんや,まさかず
+ほんざわ,ひかる
+やまうち,しげじ
+いしの,つとむ
+いおく,ひでとし
+あらき,ようこ
+ふじわき,みのる
+いちむら,まさき
+はやし,よしさだ
+もり,たくじ
+きむら,しげる
+ゆきふき,まさひさ
+はぎもと,いわお
+はしもと,ひでお
+きたやま,よしてる
+ふじもり,けんじ
+おくの,おさむ
+やまだ,みつお
+たご,たかし
+あさい,よしひろ
+もりの,ひろし
+みない,けいこ
+もりさわ,とよこ
+なりさわ,ふみこ
+もりもと,まさる
+こばやし,よしのり
+しまだ,ひでき
+すずき,みさこ
+ふくだ,けい
+あらい,あきのぶ
+たにやま,しゅういち
+おかもと,まつお
+だいもん,みのる
+はやし,よしなお
+いしだ,ふくお
+ひろさわ,よしみち
+よしおか,まさずみ
+まつもと,しんいち
+なかじま,さかえ
+きた,さなえ
+にしむら,しげかず
+はっとり,ひでお
+やまもと,かずお
+いとう,あきら
+きたむら,ますみ
+たなか,とみお
+いおき,とみやす
+かまた,こうじ
+しみず,ひろし
+ますおか,ひでお
+さわだ,しょうこ
+なかいし,たけゆき
+わたなべ,まさひろ
+よしざわ,あきお
+ささおか,のりあき
+やまぐち,としお
+いまふく,ただし
+かみや,とみえ
+わさ,ひでお
+きくち,あきひこ
+うかい,みきお
+いわま,せいいち
+つじ,ぶんじ
+たけだ,さだつぐ
+せとがわ,しげとし
+こしむら,まさし
+わたなべ,じゅんいち
+うさみ,みつのぶ
+おかだ,としひこ
+ふじわら,しょうじ
+かとう,やすゆき
+いしはら,まさる
+ひなた,きょうへい
+うえすぎ,しげひろ
+しばた,のぶかず
+おくだ,まさる
+すなやま,よしお
+いまい,あきひこ
+なかむら,のぶお
+なかもり,こうじ
+ふかさわ,むねひさ
+みずた,しんいち
+おの,かずし
+さいとう,ひろし
+しゅどう,みのる
+ふくい,たつひこ
+のだ,かなえ
+おおの,はるき
+こがみ,よしまさ
+みき,まさゆき
+いけだ,ふみお
+ふじもり,としひこ
+たかだ,かずお
+いけだ,のぶぞう
+いとう,のぶたか
+わたなべ,かずひろ
+さわだ,まさふみ
+まえじま,まこと
+いなむら,すすむ
+なかむら,ひろし
+なかじま,しのぶ
+いわま,よしゆき
+わかつき,ひでき
+はせがわ,よしろう
+いのうえ,たかし
+かさはら,こうじ
+にしやま,まさひろ
+すどう,じゅんいち
+おかべ,としひろ
+ふくば,けんじ
+まつなが,やすお
+さかい,ひろひこ
+ふじた,ゆきお
+なかやま,たかやす
+よねだ,けんぞう
+くまた,こういち
+こやま,ひろゆき
+よねやま,たけし
+ふじかわ,けんじ
+はりがや,ひろあき
+はせがわ,かずひと
+よしだ,ただし
+くすのき,よしふみ
+たかはし,さちこ
+ながた,しんじ
+そのくら,ひろし
+ますもと,よしお
+おぎはら,ひろし
+よしだ,まなぶ
+たなか,まさひこ
+えだ,せいいち
+なか,たもつ
+いいずか,のぼる
+てらにし,まさのぶ
+ふくい,せいじ
+でむら,かずひこ
+さえき,しげはる
+うちだ,ひでのり
+しいな,のぶお
+ふるや,よしはる
+ながくぼ,おさむ
+てらうち,ひであき
+おおたか,まさあき
+ふじよし,とおる
+さいとう,まさお
+くろさわ,ふさえ
+いしかわ,けんそう
+よしの,たかし
+こみや,かずよし
+やまがた,としお
+つや,かおる
+にしの,のりゆき
+うちだ,ひさお
+わたなべ,かずみち
+もりた,のぼる
+こしだ,こうぞう
+ひろせ,りょうへい
+よしむら,かつとし
+みうら,よしかず
+こいずみ,ひでのぶ
+てらお,みつひろ
+せがわ,みちお
+かいずか,あきら
+ふくます,すずよ
+いとうず,じ
+せきがみ,ひろし
+ふじ,いずみ
+よしむら,きよじ
+ふるもと,よしゆき
+たきた,まなぶ
+おかだ,ひろひさ
+たかはし,あきら
+たにふじ,まさあき
+いまおか,かずひろ
+わたなべ,けんじ
+やまもと,かおる
+よだ,やすお
+ふかやま,ひろし
+やまぐち,ひさお
+さの,きみ
+たかはし,ゆり
+まつもと,きよし
+やの,ひさし
+あきば,かずよし
+みどりかわ,ひろみつ
+たかし,みよこ
+ふるかわ,みのる
+ひきた,えいじ
+おざき,よしあき
+あおき,しげおみ
+さえぐさ,まさひろ
+ふじもと,ひろし
+こにし,ゆうじ
+おおにし,しゅんすけ
+ひぐち,ふじき
+くぼた,じゅんいち
+やまぐち,しろう
+ふるかわ,まさと
+なりた,いちろう
+たなか,ふさいち
+はたけやま,てつお
+みやもと,みさお
+のざき,やすはる
+はせがわ,ちょうしろう
+しらかわ,よしひこ
+あいだ,こうへい
+ひろかわ,ひろし
+りゅうかわ,つよむ
+やまぐち,ますみ
+くりさき,ひでお
+もりもと,よしみち
+くぼた,まさあき
+くまさこ,もりしげ
+あだち,けんた
+こんの,ひろあき
+やまもと,えつこ
+いわい,りょうた
+おおはら,ひでお
+いしはら,とものり
+あおき,たけし
+もり,よりこ
+ろっぽんぎ,まさあき
+かとう,こういち
+さとう,やすお
+まえぞの,えいじろう
+ふじもと,ひでのぶ
+たにむら,ひろし
+なかにし,ゆたか
+たかはし,しんじ
+なかい,かずみ
+たかはし,たけふみ
+しも,ゆういちろ
+しばた,いさむ
+ふるみち,よしお
+たけだ,あきら
+ふじた,ひろし
+かぎやま,てつや
+わち,まさのり
+ふじた,ひとし
+こんど,しげのり
+まつもと,たかし
+ふくい,ひでゆき
+すがわら,こうじょう
+ふかやま,あきら
+いまい,まさたか
+さとう,くにひこ
+かなざわ,かずお
+ふちざき,おさむ
+つかだ,しょういち
+いしざき,たかゆき
+とくら,みきお
+とのさき,もとよし
+たかき,ひでお
+ふじた,ひろゆき
+ながせ,れいこ
+たなか,ひろゆき
+たつみ,よしあき
+やまもと,ゆういち
+ふくた,たかなお
+くわはら,よしゆき
+ふじた,えいぞう
+いなくま,としこ
+みさお,こうぞう
+なかした,まこと
+おくやま,ゆうじ
+ながえ,かずひろ
+ながい,しょうご
+やまざき,まさる
+しらいし,しょういち
+うえだ,しげる
+おじま,ひろあき
+ひろせ,まさのぶ
+ひらの,まさる
+ふるた,たかお
+こぬま,かおる
+たかやま,ともはる
+あさした,まさふみ
+よつはし,ひろし
+つちや,たかみ
+おおにし,いさお
+やまぐち,しょうじ
+しずの,いさむ
+はしべ,りょういち
+ほりい,みよし
+ながおか,のりこ
+くりた,しょうへい
+きば,さなえ
+いだ,まちこ
+ふくとみ,かずみ
+こばやし,のぼる
+いり,けんいち
+さた,ますぐ
+まるやま,ひろふみ
+あおやま,しげる
+しんどう,やすお
+あいかわ,きょうじ
+さかのうえ,けんいち
+ふじまき,ただあき
+かわはら,まこと
+むらた,ひでゆき
+よしだ,ゆういち
+いたくら,てつや
+じぞばら,よう
+たなか,としお
+かじわら,しゅういち
+たなか,おさむ
+はすいけ,しゅうじ
+とうま,ゆみこ
+かわきた,あきら
+まつもと,やすひこ
+はせがわ,みつお
+ふじい,とおる
+のむら,みちたか
+ようこた,ひでお
+かなざわ,こうぞう
+ますやま,しんいち
+かのう,ひろし
+ふなやま,えつお
+やました,きちひこ
+さとう,まさかず
+かめもと,よしふみ
+いとう,きよし
+おくむら,しげお
+ふじい,てるお
+きはら,たかし
+のむら,りさく
+あくたがわ,つとむ
+いしだ,くにお
+うめはら,しげる
+おおぎ,なおゆき
+こんど,はるお
+たけだ,けいこ
+まつい,ふみえい
+かみおか,まさる
+かもした,ひろみ
+やなぎさわ,たけひろ
+たけうち,まもる
+もんま,みのる
+いいだ,かなえ
+はせがわ,としじ
+ながほり,ひろし
+もりおか,ただのり
+にしやま,あきお
+やまもと,やすお
+いしだ,としお
+ふるど,まさお
+かんだ,まさあき
+いしだ,しげる
+さいとう,たかひろ
+きむら,ひとし
+いわみ,やすのぶ
+もり,しゅういち
+たかやま,しょうぞう
+はやしぐち,あきひこ
+さいとう,やすお
+しばたき,くにあき
+おぎはら,よしはる
+かとう,いさみ
+ふくと,なおや
+おだ,ひであき
+さとう,まさひろ
+なかむら,ゆたか
+はまだ,たかひろ
+おがさわら,てつや
+むらき,かずひこ
+おおはし,あきひと
+たかの,たかし
+なかざわ,かずとし
+みやじ,あきひろ
+すえなが,やすお
+たたき,あきら
+よしだ,いわお
+あおき,ひでし
+すぎむら,かおる
+いとう,まさとし
+たかはし,しんいち
+すずき,いさむ
+かたやま,としひこ
+さいとう,まさし
+たじま,ひろし
+あべ,よういちろう
+なかじま,しげき
+やまぐち,まこと
+わきざか,まさひこ
+さこ,さだと
+おおつか,ともひろ
+つかもと,すすむ
+いのうえ,ふみお
+ながお,とおる
+うらば,まさお
+こじま,やすひろ
+たけだ,ゆうじ
+あおの,じんいち
+いずかわ,のぶお
+くどう,かずあき
+なかむら,としゆき
+まつお,まさふみ
+いながき,しんいち
+にしもと,しょういち
+いのうえ,ひとし
+おのでら,てつや
+いしざか,としひこ
+はぎわら,けんぞう
+ふるた,まさる
+うえじま,とみお
+ぬまた,しゅういち
+えんど,まさひろ
+かがやま,しんや
+ゆりもと,ひとし
+ふち,ただお
+ふじおき,ひろのぶ
+さいとう,まさとし
+まつもと,みつあき
+ひろせ,よしかつ
+ばば,じゅんいちろ
+こばやし,ひろゆき
+すずき,まさみ
+なかやま,かずお
+きし,ひろし
+あさの,まさかず
+えんど,あきお
+いしばし,だいご
+かいだ,みつお
+いけじま,ひであき
+はらだ,としお
+はまの,このむ
+かわい,みちる
+わだ,としまさ
+さとう,ひろし
+たなか,せいじ
+あくつ,よしのり
+いとう,きよみ
+あんどう,いわじ
+あいざわ,ふとし
+くぼた,きよし
+ふかうみ,さとし
+しみず,ひとし
+たかはし,さとし
+なみき,てつろう
+のざわ,やすし
+こいたばし,きよひろ
+たていし,ひろみ
+かわかみ,かずお
+こばやし,かずのり
+おのずか,ひでお
+たぐち,みつぐ
+たかはし,まさあき
+さとう,やすひろ
+くわはら,しろう
+せと,さとし
+ごけ,ひでき
+よしむら,きよし
+たかやま,のぶゆき
+ささき,ゆきお
+かのう,しげき
+たかはし,しげはる
+ながおか,ともゆき
+すずき,ひでき
+やまぐち,あきら
+もり,さとる
+すずき,いつお
+うえむら,まさとし
+やぶはら,みつよし
+しらいし,かずき
+きくた,まさのぶ
+なかい,みつのり
+くらもと,ゆたか
+すみよし,ひでお
+たかぎ,ひろひさ
+しょうじ,のりお
+おさだ,まさゆき
+あさの,さとし
+いわさ,きよし
+ばば,ゆたか
+ひろた,さとる
+ふじもと,みさこ
+さの,まさる
+もとき,やすゆき
+いとう,まさのり
+うけがわ,ふみお
+うめばやし,いさお
+いなとみ,かずよし
+たかやなぎ,まさあき
+はら,いさお
+なかはら,ぶんろう
+さいたけ,せいじ
+かしやま,ひろし
+さかい,ともゆき
+いとう,のりかつ
+なかむら,よしのぶ
+おおのぎ,たけし
+いかみ,ゆたか
+たかはし,しんいち
+しいな,とみお
+たまのい,しょういち
+くぼ,ひであき
+きむら,たかし
+ほった,ひとし
+ほかり,たかゆき
+さとう,あきお
+ほしの,しゅういち
+かぶらぎ,としひろ
+おさだ,としふみ
+すえひろ,たかお
+むらかわ,よしみ
+いわさき,けんじ
+やまむら,しんじ
+もりた,たつお
+いけだ,よしのり
+やうち,ひろし
+やました,かずひで
+わたなべ,ひろし
+あなん,えつじ
+にしの,たつろう
+こしみず,やすお
+たかはし,かずお
+えがわ,としお
+やまざき,たつひろ
+いまぜき,よしふゆ
+すずき,ひでき
+にしはら,ゆういち
+おかべ,いさむ
+さかい,まさひろ
+ただ,としお
+すえよし,みきお
+はやし,いたる
+たかはし,けんじ
+こあし,はじめ
+もりかわ,えいし
+かとう,やすくに
+まえば,まさひろ
+やの,たつお
+いとう,よしはる
+なかい,ひろし
+おだぎり,かずお
+えんど,てつお
+たけい,やすゆき
+なかたに,みちのり
+いわさき,ともひろ
+からかさ,あきひろ
+あさの,けんいち
+いわぶち,まさる
+はんだ,とおる
+てらお,よしゆき
+たけい,よしもと
+はしもと,よしみ
+みやさか,つとむ
+てらだ,いちろう
+さかた,やすゆき
+ながや,かつみ
+はしもと,けんじ
+おおくら,つとむ
+なかさき,みつぐ
+きりはら,としゆき
+あらい,しゅんじ
+いわの,ひろゆき
+はっとり,ひろのり
+すずき,とおる
+にしはら,ひろし
+ささき,しずお
+はなふさ,つとむ
+のどの,たつゆき
+かわばた,くにお
+しみず,よしなお
+ながしま,つぐひこ
+もり,かずお
+しみず,しげあき
+ひさやす,けいぞう
+かたうら,しげゆき
+たけむら,あきみつ
+いまにし,まさと
+おかだ,あきひこ
+なかえ,おさむ
+しろの,じゅんいち
+よこやま,のぶお
+おかざわ,まさひこ
+かみ,のりとし
+くまべ,まさお
+しみず,たつろう
+やなぎさわ,しょういち
+まきの,ゆうじ
+さわ,わたる
+うしろだ,くにお
+まちだ,つかさ
+こばやし,たかお
+しげむら,としはる
+ひぐち,たかし
+いいぬま,まさゆき
+いずみ,みのる
+はやし,ひろとし
+やぎ,ちはる
+おおかわら,きよたけ
+ふくおじ,おさむ
+うがじん,まさみ
+たなべ,しん
+ごしま,まさひで
+あんどう,ひろし
+おだま,ゆきお
+おかざき,いわお
+いしかわ,ふみゆき
+むらやま,まさこ
+はやさか,けいじ
+なかじま,たく
+たけもと,よしみ
+きたじま,じゅんこ
+みかみ,なみ
+わらしな,じゅんや
+きむら,しん
+おざわ,よしかず
+やまむら,ひとし
+よしだ,しげき
+たちばな,たくろう
+まつもと,のりのすけ
+みしま,ひであき
+せき,ひろし
+たかはし,やすひさ
+おおいけ,まさし
+ふじもと,しゅうじ
+よしむら,のぶひこ
+こばやし,めいじ
+おおがみ,よしゆき
+かい,しょうたろう
+かえつ,まさはる
+もろい,たかひろ
+みずの,いくお
+おおつか,あきひこ
+おおた,かおる
+せきね,りゅうじ
+みやぐち,かずたか
+よねだ,なほこ
+ほりうち,まさこ
+えぐち,かつみ
+うしろまつ,かずみ
+いいだ,ゆきひろ
+よしだ,よしみ
+なかせ,あきお
+すずき,ゆうこ
+おいかわ,えいこ
+かわべ,さつこ
+たにざわ,たかお
+かねこ,はるよ
+ふじおか,けいこ
+むらおか,つよし
+うぬま,けいこ
+みやけ,ふきこ
+なかむら,ちあき
+おおわ,まさはる
+ねもと,いちろう
+にしむら,ともひさ
+たつみ,いわお
+さとう,あきお
+すのはら,としひこ
+あすま,きよかず
+たかば,のぶあき
+よしむら,さとし
+あべ,なおと
+きくち,けいじ
+なかむら,かずまさ
+はむら,つとむ
+すずき,のぶひと
+かわむら,としや
+ひびの,ひさえ
+きただ,まさひろ
+さとう,つねお
+かとう,かずお
+いとう,ゆうじ
+ふくとみ,まさる
+むろずみ,まさひろ
+やまなか,じゅんいち
+おかだ,けんいち
+とうごう,たけし
+なりた,たかし
+いけざき,たけし
+かわばた,しろう
+まつおか,のぶお
+なかだ,ひろし
+さとう,しんや
+たけざわ,よしひろ
+やながわ,ひろし
+やまさき,のりゆき
+しがき,のりあき
+ゆみ,たけし
+おざき,つとむ
+ながしま,たいすけ
+やぶうち,ひさお
+ほそや,ひさし
+にしざわ,そうじ
+はやみ,よしお
+はせがわ,なおみ
+かわさき,かつひこ
+とよいずみ,たかゆき
+おくむら,まさと
+やまだ,のぶひろ
+にわ,えいひこ
+にしざき,ひろし
+すぎもと,しげる
+おおさわ,ともなお
+とだ,としあき
+なかの,よしかつ
+みうら,ひさし
+やまざき,なおゆき
+さかもと,ひらく
+やまだ,みちこ
+いのうえ,かよこ
+やすい,まさよ
+まつだ,ゆみ
+かたおか,あけみ
+すずき,けいこ
+はやし,けいこ
+はままつ,やすこ
+はまの,えり
+みずたに,みよこ
+すみた,もとちか
+はやし,まきこ
+とくなが,ゆみこ
+かとう,のぶこ
+まつうら,みえこ
+ひゃくな,ひでこ
+あんざい,ようこ
+ふかまち,すみお
+みさき,たけし
+もちずき,とよひこ
+あおやぎ,あきら
+たかはし,ゆきひで
+きせ,あきら
+うえもり,しげる
+あずま,みえこ
+おだくら,ひろみち
+たなか,ひさお
+といたに,かつろう
+やまざき,けんいち
+はしもと,たかし
+まつみや,まさひこ
+ふしみ,ちかと
+きょうやま,てるお
+よしだ,けいこ
+うるしど,あつこ
+せお,みえこ
+みなかわ,つきこ
+ふじの,かずゆき
+ひろた,たかし
+おおた,よしみ
+おおが,まさのり
+ながはま,たつお
+じんの,やすき
+いちかわ,はじめ
+はやし,ただし
+はたや,としゆき
+ほりこし,のぶひこ
+かに,あきお
+ほんだ,もとひさ
+つちや,とみお
+たまて,みつる
+ゆかわ,えいじ
+さかい,ゆうじ
+みやじ,ゆういち
+たむら,ひとし
+かわぐち,ひでまる
+さの,まさかず
+なかむら,ゆういち
+こばやし,ゆきお
+いだ,いちろう
+せきもと,よしひろ
+かわまた,かずお
+くぼ,ひろし
+たかの,やすひろ
+わたなべ,やよい
+いかるぎ,みのる
+さとう,ただし
+ひだか,よしひこ
+よしい,こうぞう
+しまむら,えいろ
+おび,としお
+なかじま,とくのぶ
+ほしの,のぼる
+かわもと,じゅんじ
+にしだ,やすひで
+しみず,まさあき
+たむら,じゅん
+とよしま,よしみつ
+えんど,たかお
+おがわ,なつあき
+きたはら,ふみお
+おぐに,けんじ
+おぶち,けいぞう
+みよし,かずお
+いけの,しんいち
+うえまつ,かつあき
+ふくざと,りゅういち
+あおき,たかし
+さめじま,さちお
+きどま,けんじ
+こだいら,きくお
+ひぐち,たつお
+まえしろ,かずひろ
+たなか,せいじ
+なかがわ,ようすけ
+いのうえ,やすひで
+とりう,まさあき
+まるやま,なおき
+まつうら,けんじ
+ためちか,かおる
+ささき,きょうこ
+おおたき,しんすけ
+おがわ,まこと
+まつみ,ますえ
+ありまつ,しげお
+こらく,ゆうぞう
+みやした,みのる
+おずち,みつお
+さかきばら,たかこ
+さとう,あきら
+ひろせ,ともこ
+つちだ,としあき
+はしら,ちよ
+ふろもと,みのる
+こさか,あきひろ
+たけいち,よういち
+てらだ,よしかず
+こいで,ひでき
+さいとう,しょういち
+みやなが,のりひこ
+にしむら,しんや
+たなか,ゆうぞう
+,ゆみこ
+ゆくひろ,れいこ
+よしわら,じゅん
+あおき,るみこ
+たていし,ゆりこ
+たけだ,とみこ
+やすだ,ふじこ
+あおき,ひでゆき
+よしだ,なおこ
+あだち,あきこ
+のぐち,よしのぶ
+わたなべ,しげゆき
+たけとみ,こういち
+くりわき,まさき
+きたずめ,もとひこ
+おさだ,としお
+あしがい,よしたか
+さかした,きよし
+つちだ,しゅんいち
+おかだ,みちお
+たなか,ひでちか
+おおたごし,こうぞう
+くろさか,えいじ
+すざき,あつし
+かねみつ,ひろゆき
+まと,かずゆき
+とよふく,まさお
+あらい,ひろかず
+ふじかわ,のぶあき
+よこお,たかよし
+あまの,はるお
+おおの,たかふみ
+すずき,あきよし
+かとう,まさゆき
+さいとう,みつお
+おう,かつみ
+みやざき,いさお
+きや,ふみたま
+ふじた,かずひこ
+むかい,よういち
+まつもと,かおる
+かわい,ゆきお
+まつもと,きよたか
+たけうち,りょうじ
+こじま,ひでお
+はせがわ,たつお
+こが,やすお
+やまだ,こういち
+おおた,みのる
+やまもと,しんすけ
+さくらもと,ふじと
+やなぎさわ,くにお
+ふくい,こうじ
+かとう,かずみ
+いわた,やすゆき
+ふじもと,ただふさ
+きのした,あきひこ
+やまだ,じろう
+くらまえ,こうじ
+くらた,たかし
+よこい,ふみとし
+こばやし,ひでや
+かとう,もりよし
+ますい,ひとし
+うらた,てるあき
+たかはし,まさひろ
+うしごめ,まさたか
+はらい,しんじ
+うだがわ,としろう
+たかぎ,かずゆき
+みやざき,さとみ
+やまむら,まさひろ
+やまぎし,りゅういち
+こまつ,よしたか
+はまぐち,ゆか
+もり,ひろかず
+やまだ,やすのり
+かがわ,みちお
+きくち,ふみき
+くじ,やすし
+いとう,ひさあき
+かわぐち,よしかず
+あらき,しんすけ
+おかべ,ひろみ
+こぼり,しんいち
+おち,おさむ
+まるお,はじめ
+さとう,しゅんすけ
+たなか,ひでのり
+まつやま,としお
+おおつか,くにお
+やまもと,けんじ
+ふじお,みつえ
+のむら,ひさたか
+ひろせ,のりよし
+あんざい,しげのり
+おおつぼ,みちろ
+さいとう,りゅうじ
+いとう,さとし
+わらさわ,きくお
+あらかわ,やすなり
+ごみ,じゅん
+えんど,さちお
+よしだ,まさはる
+うちだ,ひでお
+あさいね,てつや
+おしま,しげお
+たなか,たつお
+おおこ,まさろう
+いずつ,なおる
+はやし,まさゆき
+ふじき,とおる
+しおかい,かずひこ
+ながふち,きよつぐ
+まつもと,たいいち
+かとう,ひろし
+わたなべ,けいじ
+はまぐち,りゅういち
+かねこ,ゆたか
+さとう,としお
+おおい,まさき
+はやし,せいじ
+きみつか,まさお
+ふくだ,まもる
+なかむら,ただし
+やばし,けんじ
+こばやし,たかゆき
+とくだ,ともかず
+たかはし,かつひろ
+いとう,みつお
+のぐち,よういちろう
+かわな,のりお
+なかの,つやこ
+やまだ,まさこ
+ひらまつ,そうたろう
+あらい,としゆき
+よしの,かおり
+はまだ,かずお
+おおた,としひこ
+しばた,ますあき
+わかやま,あきひろ
+ほし,きよし
+みわ,まさお
+たなか,ゆうじ
+かなや,のりひこ
+たけなか,じん
+さとう,としゆき
+みずしま,とよういち
+てらだ,しげる
+もりや,ただゆき
+すぎやま,もとはる
+うみ,はるお
+きぐち,よういちろう
+うるわし,たけし
+ひらまつ,みちおき
+いずは,はるお
+いとう,まこと
+さとう,ますお
+しげのぶ,けんじ
+よしもと,かずお
+しばた,つよし
+ふなこし,いちぞう
+すなだ,やすじろう
+,やすお
+きくま,なおひこ
+すと,さとし
+にしざわ,ひでお
+こばやし,みつこ
+かわごえ,まさひこ
+いじま,ふみお
+にしお,ひろし
+にしやま,のぶゆき
+さいとう,よしあき
+かどわき,ひろみ
+ひろせ,たかお
+たぐち,たかよし
+たかだ,としはる
+わたなべ,けんじ
+かとう,しげあき
+なかはら,くにお
+いしくぼ,りゅういち
+やまだ,よしお
+わかまつ,こうじ
+かわしま,ひろゆき
+かたもと,けんじ
+たかやま,きみひこ
+つちだ,たつし
+たちばな,ひでお
+こばやし,あきら
+つだ,としゆき
+もりかわ,ゆきお
+おくの,よしお
+いまい,まもる
+むらお,ただし
+しもむら,じろう
+えんど,としのぶ
+ほしくま,まさはる
+かわせ,しんさく
+まちだ,むねし
+こばやし,たつお
+はだ,ひろし
+つくだ,まさはる
+にしかわ,しょう
+ほんだ,ひろみ
+わしおか,としひろ
+むろい,よう
+やすだ,まさし
+よしだ,ひろゆき
+ほり,あつこ
+こうだ,こうえい
+かまだ,えいじ
+うえむら,ひろみ
+まつばら,かずや
+みなとぐち,しげる
+くがてん,やすし
+いわせ,のぶひろ
+はやし,みつひろ
+いくなみ,しんじ
+いとう,たかし
+こやま,ひろみち
+おとまる,よしひと
+ながい,もとはる
+いとう,まこと
+いまい,たつる
+ますだ,たかひろ
+かわべ,りょうた
+さとう,けいじ
+さこ,まさはる
+むかい,じゅんいち
+おしま,くすたか
+つちや,いずみ
+はやしぐち,としあき
+さとう,せいいち
+むらさと,ゆきひこ
+はるやま,まさお
+しげもり,しゅんいち
+ふなき,ひさお
+わだ,いくと
+つぼか,しんすけ
+とだ,じゅんいちろ
+やまむら,ただあき
+いしぐろ,しんいち
+ふなはし,ゆき
+すずき,よしお
+よしだ,きみひろ
+わたなべ,つぎお
+なかにし,たかみつ
+やまもと,じゅんじ
+いしかわ,まさゆき
+たけうち,こういち
+おくの,さとし
+だて,じゅん
+たべ,まさとし
+やぎ,りょういち
+よしだ,かずお
+ふるた,たかゆき
+かわぐち,りゅうたろう
+はすこ,よしのり
+ながみね,しゅんじ
+たけした,さとし
+あかお,かずゆき
+わきもと,たかし
+たさか,けんじ
+なかしま,やすよし
+たけなか,ひろあき
+やました,なおひこ
+くぼえ,てるお
+おぐし,しょういち
+あさか,しげとし
+えぐち,ひろよし
+おおさき,まこと
+おくだ,かずお
+おくむら,かずろ
+かなまる,よしひこ
+きのした,おさむ
+ささき,きよひで
+たかの,たつお
+はしだ,しげる
+ほし,ゆうすけ
+みずの,かつひこ
+みつはし,たつや
+もとはし,まさし
+やまだ,てつじ
+ながの,まさゆき
+いしい,ゆきひろ
+かめだ,かおる
+きはた,たけひで
+こばやし,おさむ
+しらふね,たかよし
+なつはら,ひろあき
+にしはら,やすひさ
+はしば,たくお
+ひしぬま,ひろふみ
+ひびや,しんたろう
+みや,ひではる
+むらかみ,ふみお
+むらた,はじめ
+わたなべ,しょういち
+おおにし,ひろあき
+たけした,ひろし
+つばきもと,やすし
+はまおか,たけお
+みずの,とよたか
+あべ,ひろみ
+あらいし,まさみ
+さとう,まさあき
+さわの,せいざぶろう
+しもじょう,ただみ
+たかだ,かずひで
+ながた,やすひろ
+にしはた,まさふみ
+はやし,そういち
+ほそかわ,あきら
+あおき,みきとし
+よしだ,ひろとし
+わたなべ,たかお
+いわさわ,たかはる
+のせ,すえお
+ひらした,ひろやす
+よしざわ,ひでお
+むとう,けいぞう
+みわうら,ひであき
+きくち,はじめ
+えぞえ,ひろみ
+いしかわ,たけし
+いちかわ,たかし
+はらだ,よしたか
+むらた,よしと
+いとう,みきお
+ほしな,けいや
+とくだ,のりお
+たぐり,かずよし
+ささき,ともゆき
+たまる,はるお
+にしはし,しげお
+じつかわ,かずひこ
+すずき,さいち
+おおにし,きみこ
+ながさき,ゆうこ
+いいだ,ひでみ
+たかの,まさひろ
+ひさの,としつぐ
+いのうえ,ひでき
+いしくら,まさゆき
+あきやま,こうじ
+いちかわ,せんり
+きがわ,こういち
+さいとう,ひろゆき
+よだ,みきお
+あらき,ゆうじ
+すぎはら,ひでひさ
+かわぐち,ていじ
+みや,まさひこ
+いけお,ひろゆき
+さくらい,ふじお
+こしの,ようすけ
+きくかわ,かずお
+ゆあさ,たかし
+すずき,ゆうじ
+ますだ,しんたろう
+あらい,やすお
+いけだ,としお
+きす,あきら
+うしやま,れい
+かまた,えつし
+うさみ,きよし
+なかの,たけし
+かきかわ,じゅんいち
+きじま,ひろゆき
+むかい,まさよし
+ながやま,まさこ
+はっとり,まさお
+みしま,つよし
+ごとう,くにとし
+いとう,ひろゆき
+おがた,かよこ
+くさば,はるゆき
+てらえ,ひさと
+ほんだ,のりお
+あくたがわ,みのる
+みやこし,やすえ
+ふくしま,けいすけ
+しのずか,ともこ
+おおたき,しょうじ
+ながまつ,せいいちろう
+あらい,まさる
+まつだ,さちよ
+ふじた,あつみ
+かみぐち,ひろあき
+かとう,ひとし
+やまざき,たけのり
+うめたに,あつこ
+なるせ,じゅんこ
+くぼ,くにお
+くらた,ひろゆき
+こんど,てるお
+たけうち,みきや
+いのうえ,のりお
+たかだ,よしかず
+あくつ,かつゆき
+とりい,ひろみ
+もりおか,ゆみこ
+かくたに,まなぶ
+たけいち,ちえこ
+たい,けいこ
+つちや,まさふみ
+ますだ,まさたか
+かんだ,ひさお
+やまうら,やすよし
+きのした,しげみつ
+ほさか,くにお
+まるおか,ひでゆき
+かまた,ひろし
+はたなか,まさみ
+くろは,ようこ
+とつか,ようこ
+いしい,ふよ
+もりた,まち
+ほんま,しげる
+あらかき,よしとも
+たけ,たけひこ
+いずはら,なおかず
+ひさとみ,たろう
+すずき,よしひろ
+にしなか,ひさのり
+みずの,こうぞう
+もりむら,あきら
+たかはし,としかず
+しげとめ,よしあき
+さとう,ゆうじ
+まえかわ,まさみ
+よしい,としのり
+ほそや,ひでひこ
+さかもと,かずお
+こいずみ,しげみ
+にし,やすふみ
+かねこ,あきら
+すみくら,しょうへい
+よこお,たかお
+ささき,かずお
+はやし,あきら
+たなか,きよし
+あきやま,とみお
+さいす,よしかず
+のがみ,せいじ
+とよしま,しゅういちろう
+しん,たかし
+ふきの,もりよし
+いけだ,かずきち
+おだわら,りつ
+たかはし,としかつ
+けいま,じゅん
+しみず,こうじ
+いまいずみ,ともじ
+もりた,ゆみこ
+もり,やすみ
+まえかわ,やすかず
+やなぎだ,すすむ
+むらもと,ひろし
+すずき,ひろし
+ほそえ,まさひこ
+いしくら,せいじ
+ひろかわ,ゆうじ
+からしま,たかし
+まちだ,しんいち
+もりやま,ひさのり
+たけむら,てつぞう
+つかもと,あきふみ
+やまぐち,ひろひと
+そめや,あきお
+なかごめ,ひでお
+いわなが,けいすけ
+せきや,けんじ
+てらい,かずひろ
+たなか,ひでお
+せきや,じゅんろう
+さくらい,えみこ
+いそべ,まつたろう
+まつおか,たかひこ
+いち,まさのり
+やまもと,しろう
+でぐち,たかとし
+ひらまつ,よしお
+みずの,いさむ
+とみなが,まさひろ
+たかしま,ひとし
+のがみ,ひろし
+おおつ,ひろふみ
+こばやし,けんいち
+てらだ,としかず
+さいとう,たつや
+あさの,たかや
+しもむら,のりとし
+おおいし,のりよし
+たなか,つねお
+まつもと,きよし
+ひらまつ,しげる
+たけうち,みのる
+しげはら,てるまさ
+おかもと,はじめ
+むらやま,もとこ
+こまつばら,しずお
+えばた,けんじ
+おおた,ごろう
+てらお,ひろゆき
+おおさわ,まさる
+かわしま,たつみ
+あらい,まさし
+はしずめ,あきら
+みずしま,こうじ
+ひらまつ,えつお
+おくむら,よしこ
+みずなか,こうし
+ほりうち,しゅういち
+たきもと,としお
+やすば,こうじ
+きたの,もとのぶ
+にしだ,ゆきお
+いしかわ,としみ
+おおば,ひさお
+かしわぎ,かずゆき
+さとう,おさむ
+まつだ,あきお
+こむろ,なおき
+むらた,ひでゆき
+ささがわ,かずお
+さたけ,はるとし
+くわの,ひさお
+ごとう,かつみ
+ふじい,しんいち
+みずこし,けんいち
+ふじまき,かずや
+いでた,ひとし
+なかつか,たかし
+うんの,たけみ
+すずき,かずひろ
+はま,ひろし
+とみた,たかお
+たにつ,ゆうご
+すずき,まさみち
+おくむら,ちよじ
+ふくしま,かずひこ
+おおはし,ひかる
+やました,たかお
+かわみ,せいいち
+はるた,けんいちろ
+みやもと,ひろし
+つじた,ゆうこ
+いまむら,まさお
+さとう,さぶろう
+なかじま,ゆきこ
+しいの,しげお
+ごとう,みのる
+かとう,もとはる
+ながい,ちえこ
+うちの,あつし
+えいじま,おさむ
+やまなか,こうじ
+なかむら,のぶお
+すずき,やすゆき
+せむら,りゅういち
+なかがわ,かつひろ
+たや,たかし
+むらかみ,ひろのり
+いしかわ,こういち
+せきぐち,しょういちろう
+おおの,よしゆき
+おいかわ,としや
+いわい,くにやす
+あさひ,けんじ
+ごとう,かおる
+かねたけ,かなめ
+うえまつ,としのり
+ふくしま,ひろじ
+ふくだ,たかゆき
+すずき,きょうこ
+おぐら,ゆきひこ
+ひらで,のぶかず
+おしげ,たいち
+まつもと,えりこ
+ささき,えつお
+ごんだ,まさる
+まつおか,せいじ
+うめざわ,まさつぐ
+にしお,かずなり
+こじま,ゆうぞう
+たにぐち,よしつぐ
+おおぎす,ひろし
+さだひさ,こういち
+ふじわら,もりお
+はっとり,なおゆき
+かまた,としお
+とば,まこと
+やまだ,ただひろ
+やまもと,みきお
+たけうち,たけし
+あらき,ひでふみ
+にしお,せつこ
+もりうち,さなえ
+いわた,ひであき
+ささき,まさろう
+まえがわ,やすつぐ
+ふくにし,かずのぶ
+うえだ,ともよ
+やまぎし,まこと
+おの,けんじ
+ふじた,ふくきち
+きたむら,よしみつ
+よしはら,ゆりこ
+いわさわ,たくみ
+こまつ,たつよし
+たにむら,ひろあき
+こさか,ひさたけ
+たしま,まさゆき
+にしおか,かつゆき
+すずき,としお
+ごとう,やすひら
+かわはら,じゅんいち
+たじま,しょうじ
+かんの,あきお
+かたしま,しんや
+はしもと,みすず
+なかだ,ひろし
+かさはら,せいいち
+てらもと,たかあき
+わかまつ,まなみ
+いとう,としつぐ
+わだ,ひでみ
+たんじ,ひろあき
+おおつか,めぐみ
+つじもと,けいいち
+せりざわ,のぶはる
+とのさき,ふみえ
+たかぎ,みちこ
+おふち,かつなり
+あまの,みちお
+なかむら,あきら
+たばた,ゆうじ
+とよずみ,まさあき
+しゅくや,よしろう
+たかの,しんいち
+むらかみ,ひとし
+いしずか,のぶよし
+いいずか,としひこ
+しらい,あきら
+ふくはら,すえはる
+いながき,てつお
+ひらしま,ひとし
+つじばやし,あつし
+まつお,まさみ
+やまもと,まなぶ
+もりの,たかお
+たじま,としお
+のざき,じゅん
+あだち,のぶたか
+たかや,たかし
+おの,まさお
+まつもと,かつあき
+はしもと,かずひで
+かの,やすし
+たけだ,ふみこ
+きりはら,けいこ
+たなか,やすひこ
+とりい,あきのぶ
+なかしま,まさお
+せすみ,じゅん
+まえのその,かずなり
+ごとう,しんじ
+ほり,ゆきよし
+たかいら,きょういち
+たにだ,あきひろ
+ふるどい,しゅういちろう
+おおぎや,まさなお
+なかじま,のぶよし
+ほりかわ,かずひろ
+すずき,まこと
+あおき,のぶゆき
+おくはた,まさひろ
+くわばら,ゆうすけ
+かんだ,ひろみつ
+すぎもと,りょう
+やまもと,ひであき
+かねこ,まさる
+なりた,もとゆき
+にしお,たけひろ
+いかり,はるお
+ふるかわ,けんいち
+あらい,せいじ
+くずかみ,ひろし
+ごとう,しゅういち
+やまはら,ますみ
+やまだ,しげる
+いじ,としろう
+くらもち,みきお
+ふじわら,ひですぎ
+たけだ,さとし
+たかのせ,えつお
+ともむら,しげふみ
+さとう,はじめ
+さかきばら,まさゆき
+みやざき,ゆうじ
+よしだ,しゅういち
+たなか,よしひこ
+ごとう,みちお
+にしだ,けいいち
+なかしま,みつひろ
+きむら,しげゆき
+いのうえ,まさとし
+おしま,たけし
+おおや,まもる
+みやもと,まさのり
+やました,おさむ
+たなか,ますみ
+もり,あつし
+なるみ,おさむ
+ごとう,だいじろう
+やまちか,あきら
+ささき,まさひと
+きしだ,みちお
+おおやま,ようすけ
+しいの,かつや
+いずみさわ,よしとも
+かみむら,だいち
+さかい,けんいち
+ごとう,かずお
+かとう,きいちろう
+たかはし,こうじ
+くの,たつひこ
+いわぶち,まさつぐ
+ほんぶ,まさふみ
+もりた,じゅん
+せきや,こ
+ぬまた,かずや
+ごとう,めいさい
+まなべ,まさる
+いまきた,しょうじ
+こだか,けんじ
+よしだ,たけひさ
+さとう,たけし
+くすみ,かずゆき
+はぎわら,としかず
+ふるせ,てるひこ
+むらた,しょうこ
+おくむら,まさひこ
+たにがみ,たいち
+なかむら,しんじ
+こいずみ,まさひこ
+すどう,ひろし
+いで,てつや
+しもの,かずひろ
+たかぎ,よしあき
+さかい,あつし
+いのうえ,かずお
+ふるた,みちのぶ
+あさい,きよし
+ふかさわ,くにひこ
+ごかいち,こうじ
+おおつか,やすのり
+さとう,さとし
+いのうえ,しげる
+たけだ,まさゆき
+ますだ,よしひこ
+やまもと,のぼる
+おおはら,まなぶ
+ふなつ,かずひこ
+こやま,じゅんぞう
+やまざき,としひろ
+たじり,みねはる
+さとう,つよし
+ながしま,じろう
+つだ,たかし
+ながお,ともみ
+おおすぎ,ひろゆき
+いとう,ともなり
+たまい,ゆたか
+みやした,よういちろう
+みしま,よしひろ
+ほりい,なおあき
+ごとう,まこと
+やお,じゅんいち
+ひじや,たつや
+ほりい,ひでじ
+たけだ,たかよし
+やすなが,かつみ
+やまざき,ひでひと
+やの,あきら
+しわく,みのる
+かみの,あきら
+なかじま,たいじろう
+ますだ,くにひこ
+おふち,じろう
+ふくざき,れいこ
+いたがき,しげき
+しも,ちえ
+ふくい,のぶあき
+いび,じんいち
+こむかい,きよみ
+ふじえ,のぶゆき
+まつき,かずひこ
+こばやし,かずよし
+ごうち,かずとし
+はせがわ,けん
+かわごえ,ともふみ
+ながさわ,たいせい
+やました,さかえ
+いしざき,しんいちろう
+おだ,みちひろ
+しんどう,たかあき
+しもさこ,はるひさ
+つつみ,きよし
+きたおか,かずひこ
+きたざわ,こうじ
+なかおか,えいじ
+いしばし,みゆき
+はしぐち,みわこ
+わたなべ,あきひろ
+おおば,かなめ
+はら,かずや
+しみず,こみな
+いざわ,よしひこ
+よしやま,あきら
+すぎもと,ひろゆき
+こまつ,こういち
+へんみ,こうぞう
+ふかだ,のりふみ
+こばやし,よしひさ
+すぎもと,けんじ
+よこやま,つとむ
+たなか,のりひこ
+みやたに,さとる
+はせがわ,あつし
+きたがわ,たかあき
+ふくおか,ひろゆき
+おむら,さとる
+いぐち,まこと
+はやし,まりこ
+ひらい,かえこ
+おおもり,れいこ
+おぎの,いちろう
+たむら,みつお
+たけだ,ひであき
+みやなが,こういちろう
+ひらい,のりまさ
+にしむら,ひろゆき
+はぶち,ひでかず
+おおくら,よしあき
+はった,えいじ
+いこま,ひろゆき
+あさひな,たかし
+かのう,しんご
+なかにし,しゅうじ
+みやざき,ひろむ
+いちかど,とよあき
+ながさわ,あきのぶ
+はまぐち,はるお
+やしろ,ひろのり
+むらお,まき
+おおぎまち,あきら
+しろた,まさゆき
+てしま,みつお
+かわさき,やすゆき
+やまだ,おさむ
+ほんだ,まさひで
+かねこ,しげる
+まつしま,ひろずみ
+こみや,こうじ
+わだ,つよし
+よしだ,たかし
+もりさき,ゆうじ
+いまひがし,ひでお
+くらもち,わたる
+ゆかわ,さとし
+てらお,じろう
+こんど,まき
+さいとう,まさゆき
+よしなが,ひろし
+ゆあさ,はるゆき
+せんが,よしお
+にしぐち,としあき
+うえだ,なおき
+やまおか,としお
+やまもと,かずお
+ふじかわ,としたけ
+おぐら,たかし
+かわの,ひでお
+かねずか,ひろあき
+おかもと,ゆうすけ
+かわつき,かずお
+すえよし,たつや
+かわべ,しげゆき
+たかはし,たかゆき
+もり,しんすけ
+すぎやま,てつじ
+まえやま,きよし
+こめたに,ゆうじ
+ふじわら,きよし
+あでがわ,ひろゆき
+とみざわ,おさむ
+なかた,まさあき
+たちばなき,はるあき
+こだま,しょうご
+はない,ちほ
+ちのね,かずお
+しみず,こういち
+たきざわ,まさと
+くどう,けんじ
+もりおか,まさかず
+かねひら,あきお
+さとう,ひろのぶ
+やばな,としお
+さかずめ,ひろゆき
+はしもと,きよ
+よのもと,ひでき
+ばんしょう,くにお
+ふちえ,かずお
+すずき,いくお
+すずき,ゆきのり
+こばやし,かずひろ
+かとう,たかつぐ
+くすだ,かずいち
+みやたけ,よしひろ
+さの,ひでじ
+まるた,としあき
+まきた,まりこ
+かしわぎ,はじめ
+たに,よしみ
+ありやす,えつお
+かとう,しゅうじ
+たなか,まさひと
+つじた,ひろし
+おおがわら,ただお
+むらさわ,としひろ
+せきもと,ひさし
+つじもと,ひさと
+しおたに,よういちろう
+みわ,としお
+ながさか,せいじ
+こいで,あきら
+おぐら,つとむ
+つつみ,たかのり
+ふかみ,じゅんいち
+よしだ,たかし
+もろほし,すすむ
+しおの,ただひで
+やまぐち,のぶみち
+まみや,つかさ
+さいとう,しげゆき
+あきやま,きよし
+あだち,かずひろ
+かわの,としみつ
+なかむら,あきひろ
+やまぐち,としき
+さくま,ひでみ
+もちずき,よしたか
+わたなべ,ようじ
+こばやし,せいじ
+きし,みれい
+はやさか,みちよ
+こふじ,まさのぶ
+さいとう,あきこ
+のむら,しゅんじ
+まつい,ゆきお
+はやしだ,まさえ
+おがわ,たかし
+ほんだ,たかし
+こざわ,よしもと
+ささき,ひであき
+わだ,きよし
+やまわき,たみ
+ふじい,はるよ
+たきざわ,やすひこ
+さとう,こうじ
+みかみ,さとし
+みわ,のぼる
+おち,ひろし
+ふじた,けいじ
+ながた,いちろう
+くぼた,ようこ
+あおがき,げん
+かりやど,なおこ
+みはし,しんいち
+むらまつ,ちえこ
+かたやま,おさむ
+やまざき,としひこ
+おおぎそ,きよたか
+ばば,まさかず
+みしま,まさひこ
+やの,おさむ
+なかじま,あきひこ
+たけした,きょうこ
+なかの,みのる
+たかの,ゆき
+かわだ,かずまさ
+たじま,こうたろう
+もちずき,きよし
+きむら,かつみ
+あきほ,とみもと
+やまもと,あき
+かわせ,ゆたか
+ささ,ひさお
+のせ,かずなり
+ひらた,なおき
+こばやし,しゅういち
+あがわ,ゆうすけ
+てらもと,ひろふみ
+おざき,さかえ
+もり,きょうこ
+うつ,ひとし
+わかまつ,としさだ
+いまい,ふみこ
+くぼ,たかひろ
+たかの,じゅんじ
+ひびの,ひでお
+すずき,はるき
+たなか,たかはる
+さかもり,かよこ
+たきざわ,てつ
+よしかわ,たえこ
+とよだ,りゅういち
+うらしま,ゆうじ
+こんの,もとひろ
+てらかわ,たけなが
+こばやし,あきひこ
+きむら,たかこ
+かみお,れい
+くればやし,きよみ
+かねだ,ひろこ
+かわもと,こうへい
+いまむら,よしひろ
+こはぎざわ,みのる
+しのざき,しゅういちろう
+めぐろ,さとし
+くにさだ,まさはる
+もり,きよ
+かわぎし,たかゆき
+おおすが,かえで
+すだ,ひろし
+なかむら,きよかず
+いしこ,じゅん
+すずき,なおや
+きくち,かずひこ
+おぎた,あきら
+たかやま,たかとら
+なかしま,きよし
+つじもと,ひろし
+はやま,くにひろ
+いたがき,まさあき
+やまもと,ひろあき
+あだち,ひろし
+きたみ,ひろひで
+たまき,みちお
+まえだ,ゆうじ
+あだち,しょうぞう
+たまだ,ぐんじ
+もりぐち,ゆうじ
+よしなが,のりこ
+まえだ,たえこ
+わたなべ,たまき
+たかはし,よりたか
+いしこ,てつろう
+おじま,かつじ
+しばやま,よしあき
+しば,たけひこ
+ともの,けんいち
+すみ,まさふみ
+みつなが,あきこ
+うらの,まさき
+よこずか,さとし
+ふじかわ,はるひろ
+かぶらぎ,まさゆき
+よしだ,ゆたか
+さいとう,よしあき
+やの,たかひさ
+よこた,なおみ
+なかむら,あつし
+なみさと,まさかず
+ねぎし,けいぞう
+きの,のぼる
+なかじま,あきら
+つつみ,しゅういち
+こうだ,やすひこ
+ほり,みゆき
+こんの,かずや
+わだ,ゆみこ
+まつなが,さだお
+にしむら,としゆき
+いい,やすひろ
+やすい,なおき
+こばやし,しゅういち
+やまさき,まさひろ
+すずき,やすゆき
+いわた,はるひこ
+しげもり,たかし
+いまむら,のぶたか
+つかもと,あきよ
+いとう,しんすい
+くぼ,じろう
+さなえ,かずまさ
+こだま,あきお
+いとう,かつし
+あくつ,ようこ
+あたらし,みえこ
+たぐり,じゅんこ
+の,たつや
+あかまつ,けんじろう
+あさの,けんじ
+なかがわ,まさあき
+かわしま,あさこ
+さとう,ひでお
+おぐら,せいじ
+いしばし,ひろゆき
+まつおか,たかよし
+たきざわ,まさよし
+いたくら,さとし
+ほんごう,よしかず
+ながやす,たかゆき
+うちだ,ひろし
+やました,つねお
+いしぐろ,ひろし
+もり,とよひこ
+たなか,こういち
+ひぐち,しげと
+きと,しんいち
+たなか,かずゆき
+すずき,かずひろ
+すがい,けんじ
+よねざわ,よしかず
+あらかわ,りゅうじ
+いのだ,やすひさ
+かとう,まさお
+かげやま,まさし
+みやわき,としひこ
+みちやま,ただやす
+もり,としあき
+もりさわ,しんいちろう
+にしむら,かつゆき
+さいとう,やすのり
+やまもと,ようすけ
+まつうら,よしあき
+はせがわ,つとむ
+うちだ,じゅんいち
+やすだ,こういち
+いしだ,とおる
+もりの,かつまさ
+きたやま,よしひろ
+さかもと,よしのり
+そうみや,ひろゆき
+きくち,しんいち
+しぶい,こうじ
+とみた,あつし
+もり,こうじ
+やまぐち,じゅんじ
+きたやま,よしひろ
+まんもと,あきら
+たなか,ゆたか
+もり,かずひろ
+いたくら,いさむ
+いちみや,まさし
+にしやま,かつじ
+わたなべ,ひろし
+はんがい,はるお
+ながの,けいいちろう
+しば,けんじ
+こじま,すすむ
+たたの,さとし
+かわばた,まさひこ
+たけだ,たろう
+おむら,いくろう
+さこ,ひろし
+いしはら,みのる
+いちのせ,すすむ
+きしだ,よしみ
+みかみ,じゅん
+はやし,たくじ
+ささき,あゆみ
+よねみつ,かずなり
+せきね,よしなり
+いまにし,きよただ
+あおき,ただし
+すぎやま,いさお
+なかもり,よしふみ
+しまだ,まさひこ
+ますだ,ふさお
+つぼい,ひろし
+せきや,すすむ
+きじま,のりお
+よしずみ,ひでたか
+やなぎだて,しんや
+しげまつ,はるやす
+いのうえ,なおき
+たけうち,けいこ
+たなか,たけし
+ひがし,しゅうじ
+たかた,なおひろ
+なかい,つぎお
+はせがわ,じゅんいち
+たに,たかし
+こばやし,みきとよ
+たかはし,あさこ
+あべ,まさと
+こばやし,よしぞう
+おの,いくや
+たかはし,ゆきひろ
+くろだ,あつし
+わたなべ,ひろし
+あべ,しんじ
+いのうえ,ようこ
+えんど,よしお
+ののした,しげふみ
+かない,くみこ
+こたき,じ
+たかはし,ようこ
+しげやま,とみお
+ふかだ,あきお
+しおじ,かつゆき
+もりや,ふみひろ
+おおつか,まさや
+あべ,まさたか
+ひらい,たかゆき
+むらまつ,じゅん
+みずた,まさみ
+ほりえ,かずゆき
+ひかさ,まさたか
+おしたに,まこと
+こばやし,かつみ
+くらはし,ひでゆき
+ひらばる,たけお
+ふじえだ,まこと
+とざわ,かつみ
+やなせ,しげる
+くぼた,よしお
+まみや,まさき
+ゆはらぎ,まさみ
+ちょうなん,よしまろ
+みよし,とおる
+のじま,よしのり
+もりさき,まこと
+こやま,としあき
+かとう,ひろき
+きのした,やちよ
+かわむろ,さとし
+もり,けいいち
+ひらした,さだき
+かわしま,りょう
+ふるかわ,あきと
+いんでん,まさひこ
+やまだ,やすゆき
+つくだ,みのる
+いわさき,まさひと
+おまえ,おさむ
+すずき,まさゆき
+はら,まさひこ
+さかい,たつむね
+もりや,かずまさ
+みやもと,としひろ
+しげた,まさひろ
+いしかわ,ひでのり
+たざき,さだむ
+すえひろ,むねや
+かねだ,こういち
+すえひろ,じゅんいち
+ささき,りゅうさく
+ひやま,たつはる
+きどぐち,よしひろ
+しまだ,としゆき
+みやけ,ひとみ
+もり,じろう
+しらかわ,こうじ
+わかばやし,しんいちろう
+やました,かずお
+あまの,じゅんじ
+たけいち,ひろたか
+しん,けいこ
+かさはら,てつや
+たなか,けいし
+おくだ,あきら
+かとう,ともこ
+かわさき,まさこ
+かとう,かずお
+いちせ,まさあき
+きたがわ,げんへい
+やすい,よしのぶ
+えだ,とみかず
+はやし,たつじ
+ながい,さとし
+とのむら,まさのり
+たなか,のぶゆき
+くりばやし,よしのり
+きむら,かつこ
+はぜき,のぶゆき
+あんの,あつし
+たかよし,よしさと
+あんざい,しょうじろう
+たかはし,おさむ
+はらの,つねお
+なかがわ,かつよし
+にしかわ,ゆきお
+しぶや,かずひろ
+かとう,のぶひろ
+あだち,としひろ
+さくらい,やすたか
+くさの,としひろ
+みなみぞの,みのる
+つじむら,あきとし
+やまだ,いさむ
+かつしま,しげみ
+こやなか,ひろゆき
+たばた,あきら
+あだち,よしひろ
+ひろの,せいいち
+つざき,ひろあき
+たちばな,しげあき
+べっしょ,かずみ
+まつした,ちゅうぞう
+たにぐち,けんしゅう
+なかとも,むつみ
+にしむら,ひろし
+みうら,まこと
+こんど,おさむ
+まつい,まさき
+まつもと,ひろかず
+ほりい,ひろし
+ますもと,つとむ
+なかじま,ちかし
+きむら,けんいち
+みわ,ひろゆき
+いしばし,やすし
+えぐち,のりひさ
+いなふく,じゅん
+わたぬき,やすひろ
+ひぐち,よしひこ
+いけの,きくお
+うめはら,まなぶ
+のざわ,ただし
+いまい,まさき
+たかはし,かつじ
+いいだ,はるひさ
+ふじかわ,かおる
+にしえ,ただひこ
+こすげ,ひろし
+おおた,じゅんこ
+のじ,くにひこ
+こぼり,みきお
+すぎやま,よしあき
+かわた,てつひこ
+さめしま,みねお
+こやま,きよたか
+えんかい,たかし
+こもだ,つとむ
+おがわ,こういち
+やまむら,かずまさ
+えのもと,れいじ
+たかだ,ひさただ
+なかみぞ,ゆみこ
+おかむら,ひろし
+かみばやし,せいじ
+ふじもり,みきお
+くろだ,しんいち
+さとう,よりえ
+よしむら,たきお
+もたい,たくじ
+むらた,とおる
+みわ,なおと
+いはら,えみ
+いまい,たかし
+ひの,かずお
+まつもと,たかし
+せと,ようじ
+くまがい,やすひろ
+やまだ,よしお
+わたなべ,ゆうこ
+やさか,ひろし
+さとう,あきひろ
+みやたけ,ひろのぶ
+まつうら,ひとし
+まつした,まこと
+うらべ,いさむ
+しがき,まさよし
+てらだ,よしひと
+いわもと,よしあき
+いのうえ,じろう
+もちずき,ゆきお
+よしずみ,えいいち
+みうら,みつる
+みずの,たかゆき
+よしい,じゅんいち
+ふるい,よしひろ
+はやし,しげあき
+しらいし,ひでお
+すがわら,たつお
+なかい,けいいち
+のふじ,よしはる
+さとう,ひろかず
+くろだ,きいち
+いけだ,たかし
+さが,けいし
+みやかわ,いくひさ
+わらしな,しげる
+きたがわ,のぶゆき
+いまい,ふみあき
+みさき,ひろのぶ
+いしだ,たけし
+りくら,ひであき
+しょうじ,こういちろう
+ふくなが,よしかず
+くろき,たかお
+またき,しょうざん
+せきね,まさはる
+やました,みつひろ
+たなか,よしあき
+おおはま,まさひろ
+おおつぼ,よしあき
+たい,ひさはる
+つるや,まさのり
+よしだ,よういち
+ますみつ,たかし
+かすや,しげお
+よしだ,みのる
+かわむら,ひでき
+はやし,くにひこ
+くにもと,まさゆき
+あらかわ,ひなこ
+なかむら,まさのり
+いしぐろ,せいじ
+はやみ,かつひこ
+みなみぞの,きんじ
+さかた,みのる
+かわもと,ふみかず
+むらおか,やすのり
+いとう,よしお
+わたなべ,みちお
+のむら,まさかず
+さとう,はるな
+わたなべ,ひろし
+こばやし,まさかつ
+ぬるき,ひでひこ
+よしだ,よういち
+さいとう,ひろし
+ひらい,よしゆき
+きむら,たかし
+おく,ろう
+はやさか,やすこ
+あさの,けんじ
+ふじさき,しんや
+あきもと,りか
+しまだ,まさえ
+みずかみ,まさはる
+なかがわ,とおる
+さとう,てつや
+こばしり,けんじ
+あらき,よしお
+すずき,なおとし
+にしで,せつ
+おちあい,よしひさ
+のなか,たかし
+やすい,りゅうじ
+こはた,けんいち
+みのしま,あつお
+てらしま,きみひこ
+やくわ,よしお
+すがわら,みちお
+みつはし,てつろう
+のむら,のりこ
+ちょう,あずみ
+さとう,りょうこ
+しずはら,れいこ
+はやしかわ,けんじ
+にわ,よしお
+みえの,けんいち
+しまだ,ひでと
+なかむら,としお
+ひらの,りょういち
+やまとや,かずひこ
+つのだ,やすのり
+こばやし,のぶあき
+さかくら,きょうこ
+まつだ,まさあき
+いまむら,せいし
+やぎはし,なおこ
+おぎの,ひろお
+たなか,よしまさ
+ひが,よしかず
+さこ,つとむ
+たざき,たもつ
+いいだ,まさはる
+いいだ,りょうすけ
+まつぐま,しげほ
+むらた,けん
+やすもと,まこと
+しみず,ひろし
+わくい,よしたか
+たかはし,よしお
+きたい,としひこ
+あだち,しょういちろう
+はなぶち,はじめ
+さとう,くにひろ
+あらい,としひこ
+たけなか,さとし
+かい,みほこ
+あかだ,しずお
+くにすえ,ひろあき
+まえかわ,あきら
+みなみ,みつし
+たきがみ,ひでゆき
+まつい,まこと
+しらい,まさみち
+たけよし,せいのすけ
+たかだ,きよたか
+たかぎ,たかひこ
+くどう,きよたか
+しまだ,のぶこ
+かとう,かずお
+しぎょう,ひであき
+ひろの,そおじゃ
+きのした,よしえ
+しみず,しょうぞう
+しむら,ひろあき
+くさかり,みほ
+かるべ,としはる
+まつもと,なおゆき
+しまむら,とまさ
+かつかわ,たかお
+いず,いさお
+さくらもと,いつじ
+もりた,じろう
+たなべ,くにいち
+はっとり,ふみと
+りゅうご,しゅんいち
+おまつざわ,まさはる
+おとわ,ゆきよし
+こだま,せいいち
+かやしま,ゆうじ
+こばやし,しげる
+くにえだ,まきお
+こう,かずなり
+にしやま,ひとみ
+わだ,ひろや
+にしもと,たかし
+さいとう,かつのり
+としま,よういち
+おおつか,ほこく
+おの,まさる
+すずき,たかし
+さくらい,たかし
+おぜき,たかし
+おかだ,まさみつ
+おがわ,ひろし
+いけがみ,ひでとし
+こまつ,たかのり
+よしい,よしあき
+ひらの,しょういち
+たかすか,ひろし
+はしもと,やすゆき
+くわえ,きくお
+かねまつ,かねひで
+まつお,けいいち
+いど,たかひこ
+いの,じゅんいち
+さいとう,たけし
+かみやま,こうじ
+こしもと,こういち
+おおがわら,よしのぶ
+たかはし,まこと
+ながまつ,しんいち
+すずき,ごろう
+てらお,ようじ
+ほりけ,かおる
+すずき,たかし
+おがわ,こういち
+みやもと,のぶお
+おおすみ,ひろゆき
+いわぶち,のぶやす
+まつうら,たつお
+さわち,ちかお
+てらだ,せつこ
+いばやし,ゆたか
+いわせ,じゅんいちろ
+おがわ,せいじ
+あそ,やすとも
+ふくもと,さゆり
+いで,ふみたか
+かわさき,てつじ
+はるな,まさのり
+たじま,ゆきふみ
+かなやま,ようじ
+たなか,わたる
+まつざき,まさお
+いのさか,こうじ
+おしやま,よしひさ
+たけうち,たかし
+ささおか,としゆき
+こもり,まさあき
+たじま,ひろあき
+いけがみ,けんじ
+やまぐち,まさあき
+かわかみ,しげき
+いせき,えいすけ
+たけだ,ひでゆき
+たかやす,まなぶ
+かめだ,たけとし
+ふじの,まこと
+みさき,やすのり
+なかむら,としあき
+おがわ,こうじ
+なかざわ,ひでとし
+せき,やすくに
+よしかわ,たくや
+たがわ,たかし
+みたに,としひこ
+すえた,あきひと
+いぬい,けん
+おさだ,さとし
+ふるかわ,かつお
+すずき,まこと
+きたむら,りょうすけ
+こまつ,ひろたか
+あさだ,よういちろう
+かんざき,やすまさ
+うすい,よしふみ
+ふるや,としひこ
+よけむら,ふみよし
+よこえ,よしき
+あかいわ,としひこ
+ふくしま,ひろやす
+やじま,やすし
+はら,みゆき
+きしだ,ゆうぞう
+くぼ,みつる
+かたぎり,やすのり
+いちい,ふみや
+まつき,としあき
+わけべ,けんじ
+まるやま,ひでお
+つばき,しげる
+さの,ひろし
+みやもと,まさとし
+ふくやま,まさあき
+うえむら,まさる
+くわかど,りき
+くにまつ,まさる
+かたおか,のりゆき
+とみた,かずのり
+なかむら,あつひこ
+くどう,よしてる
+おぶち,てるひこ
+よしかわ,とおる
+かげやま,まこと
+とだ,けいいち
+たかはら,さとし
+まつした,しんじ
+こだいら,ひでし
+しんかい,もとお
+てらだ,まさひと
+かわきた,はじめ
+みうら,さなえ
+あべ,ひとし
+にしかわ,ゆきひろ
+ほそだ,いわお
+ますだ,よしお
+かざま,たけし
+あらまき,かずお
+わたぬき,みつぎ
+さかもと,つよし
+あまがみ,しん
+こんの,いさお
+おくだ,よしのり
+おはく,みつお
+なかむら,よしふみ
+なかむら,ゆういち
+うしやま,ゆきお
+やしき,あいいちろう
+きのせ,しゅんいち
+わかやま,こういち
+いまい,まさゆき
+まえだ,きよし
+まつした,えいじ
+ひらぐち,ひろし
+わだ,あつこ
+わたなべ,そういち
+まつい,しんいち
+まつもと,みきお
+なかむら,じゅんいちろ
+たきた,よしと
+ますだ,ともこ
+みやうち,まゆみ
+しむら,さかえ
+まつい,たきこ
+はらはた,とみたろう
+ひさたに,あつし
+かがみ,まさつぐ
+よしむら,ゆうじ
+おおつか,けいご
+たなか,しんいち
+ひらの,しゅう
+たけすえ,てつや
+にしの,よしゆき
+おおつか,めぐみ
+おだ,しんじ
+しみず,ゆたか
+はまもと,たかよし
+みやまえ,まさなり
+ながしま,えいじ
+みつめ,こうじ
+かごたに,よしかず
+よこやま,たかふみ
+さかた,けんじ
+おいくぼ,あきひで
+くらもち,ひろや
+あんざい,まさゆき
+ふくしま,りえ
+なかむら,ひとみ
+いとい,ゆりこ
+ほしの,みちこ
+こいで,ひろひこ
+おざき,じゅん
+せじも,まさみち
+すどう,まさみつ
+かじわら,みどり
+すずき,かつひろ
+ほしの,はるこ
+なかむら,よしあき
+もりた,あきかず
+やまざき,としひこ
+おくがわ,まさひこ
+ながはま,ひろゆき
+よしむら,あきみつ
+まつだ,たかとし
+ほかぞの,あつひさ
+あべ,としつぐ
+ながい,こうじ
+とがし,としひと
+やざき,ていぞう
+やまうち,ひでき
+みさき,なおき
+よしだ,しんじ
+なかもと,しげる
+しのはら,つねかず
+なかにし,あきら
+やじま,きよし
+とよふく,ゆうじ
+たかしま,かつじ
+ふしにし,きみえ
+むかい,てつや
+にしむら,ひろゆし
+かわばた,さとし
+むかえだ,さとる
+しせき,いっしん
+かたおか,よしひで
+ないとう,ひろき
+みと,やすと
+おおにし,としろう
+よこやま,たかし
+なかむら,たつあき
+いざわ,ひさのり
+たにがわ,とみえ
+すぎた,ゆか
+おした,まさゆき
+しまだ,ともこ
+やまむら,こういち
+ふくおか,まさし
+やなり,ひろあき
+すずき,しんじ
+さかい,さとる
+やまだ,ゆきひろ
+やまこし,しげる
+のもと,としゆき
+たけした,もとき
+みのだ,しげゆき
+あさい,しほ
+むねやす,ひでゆき
+かわにし,まこと
+さかぐち,やすひさ
+やまざき,としひこ
+あさおか,ひでのぶ
+きのした,みきぞう
+みま,きよみ
+ふくもりた,しげお
+かじやま,よしこ
+やまざき,じゅんいち
+さとう,としや
+かわべ,みつひこ
+まるやま,のぶよし
+おがらね,のぶこ
+どい,ゆうぞう
+たなか,みつお
+おぎしま,おさむ
+いのうえ,ひろゆき
+ふるや,ひろのり
+ふくい,つよし
+ますだ,たかひろ
+ほんだ,ゆみこ
+なかにし,なおたか
+みやまえ,なおひこ
+おかの,ひでお
+ばば,よういちろう
+だけやま,さくこ
+やまぐち,やすお
+はやし,としろう
+とみずか,やすひろ
+なかにし,はるひさ
+あべ,はじめ
+あおやぎ,ひろこ
+てらわき,きよこ
+かたぎり,のぼる
+なかがわ,まさお
+こばやし,かずひろ
+うえだ,ひろみ
+ふじわら,あきひろ
+はやさか,たつみ
+きむら,ひろし
+ごとう,まさひろ
+しむら,けいぞう
+せき,としかず
+あいざわ,あきお
+のむら,こすけ
+かんだ,しゅうじ
+うらい,ますみ
+もとやま,よしはる
+かみむら,てつお
+ひらい,まさゆき
+あらい,ともなり
+さいとう,よういち
+まきはら,まさし
+おおわく,おさむ
+もちずき,まさひろ
+はんがい,よしひろ
+いのうえ,かずひと
+ながいし,かつみ
+にしもと,あきら
+つちや,しょういち
+まつもと,たかし
+ほん,しょうご
+いわい,たつや
+くぼ,まさお
+はこい,まさお
+わたなべ,のりお
+すぎた,としみつ
+なかむら,かずひろ
+からさき,こういち
+のりまつ,みつひこ
+くすもと,たかよし
+にしむら,さとし
+こすげ,まさな
+ふくみつ,やすみ
+やまぐち,さぶろう
+いしぐろ,かずみ
+とくだ,なおや
+ありとみ,じつろう
+ひやま,しんいち
+ひろせ,まさとし
+にしだ,とおる
+はっとり,よしみ
+ひらばやし,けんいち
+はらしま,えいじ
+はら,たみお
+はまの,かずゆき
+はまだ,まさとし
+はしもと,かつひこ
+はやし,ひさじ
+ひぐち,まさみ
+ひらの,ゆたか
+ほんま,まさはる
+はるまし,よしまさ
+はしもと,やすお
+ひだ,たかし
+ひらすか,ちょうじ
+はぎわら,こういち
+はまだ,きみえ
+はしもと,みちはる
+ほんま,みよし
+ほかり,やすひろ
+はらだ,みちこ
+はやし,けんじ
+ほりべ,かずお
+はしもと,まさお
+はせがわ,ただかず
+ひろべ,みきお
+はしもと,かずみ
+ひらの,まさゆき
+はしもと,けん
+ひじかた,つぎえ
+おおぬま,いさお
+はぶつ,ひろゆき
+ひだか,かずひろ
+はしもと,きんや
+はまの,なおき
+ひしぬま,のぶゆき
+はら,よしみ
+はなき,しんいちろう
+はら,けんじ
+はが,たけお
+はなだ,まさのり
+ひらやなぎ,のぶたか
+ほりかわ,みつのり
+ほりかわ,けん
+はしもと,あきこ
+はた,としひこ
+ひらい,じゅん
+はらぐち,やすまさ
+ひらお,ゆういち
+はしずめ,かんた
+つじ,まなぶ
+さくらざわ,ひでとし
+あべ,こういち
+あべ,まさひろ
+あべ,ひろた
+あべ,こうじ
+あべ,おさむ
+あべ,たかお
+あかぎ,やすひと
+おかもと,しずお
+えんど,みちこ
+あかいし,つねはる
+にしな,まこと
+あきもと,としお
+あきずき,まさとし
+ひらばやし,しげまさ
+あめみや,あきら
+あみの,あきひろ
+あなみ,まさかず
+あなざわ,かおる
+あんどう,ゆうぞう
+あんどう,ひろき
+あおやま,まさき
+あおやま,こうじ
+あおやま,しんいち
+あらい,こういち
+あらい,まさし
+あらい,まこと
+あらい,たまお
+あらい,まさやす
+あらき,みゆき
+すがわら,ともみ
+あさひ,しげる
+あさくら,たかし
+あさみ,ふみとし
+あさむら,かつみ
+やましな,かずお
+あさり,まさこ
+あさず,ともこ
+あつみ,よしゆき
+ばん,ひろやす
+べっしょ,けいいち
+ちば,あこ
+ちかきよ,なおひさ
+ちむら,たみえ
+どばし,たけお
+えばし,しょうへい
+えびはら,よしふみ
+えがみ,ゆきお
+えぐち,ゆきたか
+えぐち,さとし
+えじり,すぐる
+えんど,まゆみ
+えんど,たつお
+えのもと,よしつぐ
+ふちの,とおる
+ふじい,おさむ
+ふじい,てつ
+いしい,じゅん
+むらやま,としひさ
+ふじかた,たつや
+ふじかわ,かずとも
+ふじまる,ひさと
+ふじもと,くにひろ
+ふじもと,ただよし
+ふじもと,としかず
+ふじの,やすとも
+ふじお,としあき
+ふじさか,さとし
+ふじさわ,のりお
+ふじさわ,たかひろ
+ふじた,まさゆき
+ふじた,まさゆき
+ふじわら,とおる
+ふじわら,まさゆき
+ふじわら,しんしょう
+ふかだ,ふみひろ
+ふかがわ,あつひろ
+ふかの,けい
+ふかわ,せいじ
+ふかや,としかず
+ふかざわ,ひとし
+ふくだ,こうじ
+ふくい,ひろし
+ふくもと,ひろたか
+ふくもと,ひろあき
+ふくもと,まさひこ
+ふくもと,すすむ
+ふくしま,ひろゆき
+ふくとみ,りゅうさく
+ふなき,しんじ
+ふるさわ,たろう
+あびこ,まさゆき
+ふせ,のりお
+ふせがわ,よしなお
+ふしみ,なおひさ
+ぎま,かずよし
+ごみ,まこと
+ごとう,のりこ
+ごとう,ともあき
+ごとう,ひさのり
+ぐんじ,みよ
+はぎわら,よしこ
+はぎわら,いちろう
+はいの,ひさよし
+はかまだ,のりゆき
+はまだ,ゆき
+はまだ,ゆきお
+はまぐち,けんじ
+はら,しんいち
+はら,きよたか
+はら,くにひこ
+はら,まさなり
+はらだ,ますみ
+はらだ,みなこ
+はらだ,のりこ
+はらこ,たかひろ
+はるな,たかあき
+はせがわ,たくや
+おしま,あきら
+はしもと,たかし
+はたの,かずひろ
+はたざわ,かずみち
+はと,まさし
+はつみ,あずさ
+はっとり,ともゆき
+はやかわ,としひろ
+はやかわ,あつろう
+はやかわ,としひこ
+はやの,あつし
+はやせ,しんご
+はやし,たかはる
+はやし,かおり
+はやし,よしひろ
+はやし,けいじ
+はやし,せいた
+いもと,まさよし
+はやつ,ひろし
+ひがき,ひであき
+ひがし,すみこ
+ひの,けんじ
+ひらばやし,なおと
+ひらの,かずひろ
+ひらの,けいいち
+ひらおか,まゆみ
+はらさき,たつや
+ひらて,ひでお
+ひらやま,とおる
+ひろえ,よしかず
+ひろかわ,しゅういち
+ひろせ,ひでたか
+ひろし,のぶこ
+ひさむね,けいこ
+ほんだ,こういち
+ほりかわ,のりあき
+ほりこし,しんいち
+ほりこし,ひろゆき
+ほし,ゆきお
+ほしこ,まさひろ
+ひらさわ,さだゆき
+ほそい,しんいち
+ひょうどう,たかし
+ひょうどう,ゆうすけ
+いべ,しんいち
+いちかわ,まさひろ
+いちかわ,まさる
+いちかわ,ゆみ
+いちのみや,みつる
+いで,みつゆき
+いで,ゆり
+いがらし,やすゆき
+いがわ,きよし
+いぐち,しんや
+いいだ,しゅういち
+いいだ,ひろし
+いいじま,こういち
+いいつか,のぶお
+いいずか,かずのり
+いいずか,ありさ
+いからし,ともき
+いけだ,なおき
+いけだ,まさふみ
+いけだ,じゅん
+いけだ,ひでと
+いけなが,ひろお
+みつもと,ひろたか
+いけやま,ひろゆき
+いけざ,ひとし
+いけざき,おさむ
+いくた,てるゆき
+いまい,よしのり
+いまいずみ,のりひろ
+いまむら,ひろゆき
+いまむら,えいり
+いまにし,ともひろ
+いながき,かおり
+いながき,かつゆき
+いながわ,たつや
+いなほ,まさる
+いなみ,ひろみち
+いなつぐ,みさお
+いなよし,たつお
+いの,かずと
+いのおか,しんや
+いのうえ,たかゆき
+いのうえ,たけし
+いのうえ,ひでかず
+いのうえ,たかし
+いのうえ,たかあき
+いのうえ,ゆういち
+いのうえ,きくお
+いりさわ,あきひこ
+いせ,ゆきお
+いせき,かつや
+いしだ,やすのり
+いしだ,つよし
+おかだ,はるみ
+いしい,えいじ
+やまだ,ひろぶみ
+すぎはら,ひろたか
+いしかわ,かつら
+いしかわ,まさこ
+いしかわ,まさみ
+いしまる,のりこ
+いしもと,たつお
+いしもと,まさひろ
+いしもと,けんじ
+いしの,かくいちろう
+いしつか,さとし
+いしわた,たくや
+いしわた,ゆうじ
+ひらばやし,えいじ
+いしざき,もとのり
+いしずか,とおる
+いそだ,たけし
+とおか,としゆき
+くりはら,けいじ
+いとう,けんいち
+いとう,よしあき
+いとう,えつき
+いとう,ようじ
+いとう,さとし
+いちやなぎ,しげひと
+いとう,つねひろ
+ながた,かつみ
+いとう,たかはる
+かみかわ,ただみつ
+いわい,のぼる
+いわかわ,てるひさ
+いわみ,としひこ
+いわみ,たかし
+いわもと,ともこ
+いわなが,まさひろ
+いわさき,けいこ
+いわさき,ふみかず
+いわせ,ひろゆき
+いわした,おさむ
+いわた,こうせい
+いわた,さとし
+いわたて,ひでき
+いずみ,みわ
+じんの,たかやす
+かがわ,ひでお
+かいぬま,のぶお
+かじた,たかみち
+かけがわ,かずたか
+かきぬま,なおき
+かまだ,たかひろ
+かまた,ひろき
+かめたに,くにあき
+かみ,まさのり
+かみむら,まさし
+かみやま,まさゆき
+かなうち,たかゆき
+たけうち,みき
+かねこ,やすのぶ
+かねこ,やすき
+かんぬき,せいいち
+かのう,きよくに
+からはし,ひろあき
+かさい,みのる
+のむら,えみこ
+かさい,ももこ
+かせ,じゅんいち
+かしくら,よしろう
+かしむら,さとし
+かしわぎ,かよこ
+かたの,てるひさ
+かたおか,やすし
+かとう,おさむ
+かとう,なおき
+かとう,けい
+かとう,まさはる
+かとう,たかあき
+かとう,たかし
+かとうおか,ゆかり
+かつい,じ
+かつまた,みのる
+かわばた,たかお
+かわちや,としあき
+かわだ,りせい
+かわだ,ひろゆき
+いりさわ,ふみお
+かわい,みわ
+かわかみ,けんじ
+かわかみ,みのる
+かわみ,あきら
+かわむら,けんじ
+いしい,やすき
+かわの,まさひろ
+かわむら,きよひろ
+かわさき,のぶゆき
+かわせ,なおき
+かわせ,ひろし
+かわせ,えいじ
+かわしま,えいこ
+かわたに,くにひこ
+けいだ,まさあき
+きだ,しげこ
+きだち,しげお
+きはら,ともえ
+きくかわ,ゆかり
+きもと,まさひで
+きむら,けんいち
+かまた,ひろゆき
+いくみ,まゆみ
+きのした,しげかず
+きのうち,まき
+きし,たくし
+きしもと,かずひろ
+きうち,とよあき
+こば,ひろゆき
+もり,ひでき
+こばやかわ,たけし
+くぼた,ひとし
+こばやし,てつや
+おおかわ,しん
+こばやし,てつじ
+こばやし,きよのり
+こまた,えいたつ
+こばやし,かつみ
+こばやし,かつゆき
+こばやし,かずひこ
+こだま,やすし
+こえじ,つとむ
+こぐち,けんじ
+こはた,としひこ
+こひら,きみお
+なかがわ,りえこ
+こやま,あきら
+こいで,よしろう
+こいで,じゅん
+こいけ,しげる
+こいずみ,もとこ
+こじま,たくや
+こけぐち,やすまさ
+こくぼ,ようこ
+こまつ,たかこ
+こまつ,ゆみこ
+こみや,ようじ
+こんど,かずとし
+こんど,あきら
+こんど,みえ
+こんど,たかゆき
+こんど,たつお
+こにし,たかこ
+こさか,まさひろ
+こせき,としひこ
+こしいし,たつや
+こしお,まさとし
+こすげ,としあき
+こうや,まさのり
+こやま,かずし
+こやま,おさむ
+たけち,しゅうぞう
+くぼ,としや
+くぼ,つとむ
+くぼ,ふみき
+くがい,たかゆき
+いからし,かずひろ
+くまざわ,のぶこ
+くにみつ,ひさよし
+くの,せいし
+ほしの,としや
+くらしげ,こうじ
+くりはら,みか
+なかがわ,しょういち
+やなぎだ,ゆきお
+くりやま,ひであき
+くろかわ,ひでゆき
+くさかわ,けいいち
+くさなぎ,おさむ
+くさの,ひでひこ
+くせ,さとる
+くしだ,ちえ
+くすだ,こういちろう
+くすき,ちえこ
+くすみ,ゆたか
+まえだ,たつや
+まえだ,あきお
+まえかわ,ひろこ
+まえかわ,たかお
+まがりふち,よしお
+まきの,ちひろ
+まきの,けんじ
+まなべ,まさよ
+あがつま,たつゆき
+まるお,しげる
+まるた,なおき
+まるやま,ゆか
+まるやま,まこと
+まるやま,たかひろ
+まるやま,ゆうじ
+ますだ,てるみつ
+ますだ,としや
+かんばら,いずみ
+まつばら,ひろし
+なかむら,ちとせ
+まつだ,くにのり
+まつだ,まさゆき
+まつい,ひろゆき
+まつい,よしのり
+まつい,しゅういちろう
+まつい,ちよこ
+まつもと,あつし
+まつもと,けんじ
+まつもと,まさかつ
+まつもと,しんや
+まつおか,みほ
+なるせ,りゅうじ
+まつや,のぶひこ
+めざわ,ひとし
+みぎた,まゆみ
+みかみ,しょうじ
+みむら,かずや
+やなぎ,こういち
+みなかた,まさゆき
+みね,まさやす
+みね,やすえい
+みのわ,きよえ
+みさわ,まきこ
+みさわ,たかひろ
+みしま,つよし
+みたむら,ともひろ
+みと,のぶお
+みつひら,まりこ
+みついし,まさふみ
+みつなり,たかえ
+みうら,ひろかず
+みやべ,けんじ
+みやじま,しげき
+みやもと,しげる
+みやもと,ともみ
+みやさか,ゆういちろ
+みやさか,けんいちろ
+みやした,ひろか
+みやした,じゅんこ
+みやざき,のりしげ
+みやざわ,かつみ
+みやざわ,たかゆき
+みぞはし,たけひこ
+さかい,ひろし
+みずの,ひろあき
+みずおち,たかお
+みずしま,けんじ
+みずた,けんじ
+もちはら,くに
+もちずき,こういち
+ももせ,しゅういち
+もり,ひろき
+もり,あきひろ
+もり,ちえ
+もり,はずき
+もり,ひでき
+もり,まもる
+もりかわ,まさよ
+もりもと,やすひろ
+もりもと,こういち
+もりもと,まなぶ
+もりむら,しんいち
+もりの,かずみ
+もりさわ,くにかず
+しまおか,おさむ
+もりした,ゆか
+もりやま,ひろこ
+もろおか,みつひろ
+もろとみ,なおき
+もとき,ただとし
+もとの,かつゆき
+もとたか,ひでき
+むぐるま,たくじ
+むかい,よしみ
+あんどう,いわお
+はね,こうき
+むらかみ,としかず
+むらまつ,つとむ
+むらしげ,かずゆき
+しもむら,じゅん
+むらた,まこと
+みょうが,たかゆき
+ながはら,ひろし
+いとう,かつみ
+ながい,けいた
+ながい,とおる
+いわと,よしき
+たけしげ,ちほこ
+ながお,あきひろ
+ながお,みちのり
+ながお,いさえ
+ふくつか,けいこ
+ながさわ,ひでき
+ながさわ,やすひろ
+ながせ,すすむ
+ながしま,あきお
+ながたに,ふみひこ
+ながわき,ひろやす
+ながやま,まさひで
+なごや,もりお
+ないとう,のぶゆき
+ないとう,さだみつ
+なかだ,たくや
+なかがき,ひろあき
+なかがわ,てるのぶ
+なかがわ,としひろ
+なかがわ,やすひろ
+なかがわ,まさし
+なかじま,とおる
+ほりうち,とよじ
+なかはら,かずひと
+なかじま,かずゆき
+なかじま,こうじ
+きくた,みか
+なかじま,としあき
+なかまる,としこ
+なかむら,よし
+なかむら,まこと
+なかむら,ちえ
+なかむら,のりこ
+なかむら,たかお
+なかむら,たかし
+なかむら,りゅういち
+なかむら,しげかず
+はっとり,まなぶ
+なかむら,さぶろう
+なかむら,とおる
+なかむら,たつじ
+みやもと,いずる
+なかにし,ひでと
+なかにし,すなお
+なかの,よしあき
+なかの,ちゆき
+なかの,やすひで
+なかの,おさむ
+なかの,つかさ
+なかの,けい
+なかの,よしのぶ
+なかお,たかひろ
+なかおか,まさかつ
+なかしま,しんいち
+なかしま,かずなり
+しなだ,あきら
+なかた,かずなり
+なかや,たくじ
+さいかわ,ひとし
+はせがわ,ひろし
+なかざわ,まみ
+なまつ,まみ
+なりた,たくじ
+なすの,たかあき
+ねもと,みねあき
+ねおい,まこと
+ねず,なおき
+にいむら,かずまさ
+にいやま,ちかげ
+にいやま,ひろし
+にのみや,ひろし
+にのみや,かずあき
+にし,たかお
+にしだ,まさのり
+にしだ,まさし
+にしどの,よしのり
+にしかわ,あきら
+にしきど,あきひこ
+にしむら,あきら
+にしな,だいいつ
+にしお,じゅんじ
+いのうえ,かずとし
+にしざわ,たかあき
+にしずか,としや
+にった,ひとみ
+のだ,わかこ
+のむら,さとし
+ののむら,ひろゆき
+のりはし,いさお
+ひの,かずゆき
+のざき,しん
+のざわ,まさひろ
+ぬまの,のぶこ
+おびせ,ひろき
+おぼかた,けんすけ
+おち,あきひろ
+はせがわ,みつあき
+まなべ,ひろゆき
+おだ,かつみ
+おだ,しんすけ
+おだ,ひでひろ
+おだ,じゅんこ
+おだくら,ぎょ
+おがた,ひとし
+おがわ,としひこ
+あべ,ようすけ
+おぐち,こうき
+おぐま,まさよし
+おぐら,たまき
+おぐら,ひでお
+むさし,みつる
+おぐら,まさひこ
+おぐり,まこと
+おおば,けんじ
+おおはし,よういち
+おおい,ひろかず
+おおいえ,けんじ
+おおくぼ,はるし
+おおくま,いさむ
+おおくま,ひろし
+おの,かつみ
+おおぬま,かよこ
+たかせ,よしひで
+おおさわ,ひでき
+おおさわ,ひろし
+おおさわ,けんじ
+おおさわ,そうすけ
+おしま,まりこ
+おしま,ひろお
+おしま,みつひろ
+おおた,しんじ
+おおたか,ひろゆき
+おおたき,たけし
+おおたに,ようじ
+おおつか,ひろのぶ
+おおつか,てつお
+おおわ,まこと
+おおわだ,ひろのり
+おおやま,ひとし
+おぞね,のぶゆき
+おか,やすし
+おか,ひろあき
+おか,かずしげ
+おか,たかのり
+おかだ,たかよし
+おかだ,ひとし
+おかだ,まさゆき
+おかだ,とよあき
+おかどめ,きよかつ
+おかもと,やすし
+おかもと,こうじ
+おかもと,ひろし
+おかむら,りか
+おかの,あきら
+おかのや,みつる
+おかお,やすじ
+おかざき,ひでお
+おき,ひろゆき
+おきもと,まさひこ
+おくむら,ともこ
+おくむら,ゆきひこ
+おくの,あい
+おまた,あきよし
+おにき,ひろゆき
+おにつか,まさあき
+おのでら,あきら
+おのざわ,ひでつぐ
+おおにし,けん
+おおにし,くによし
+おおつか,なおひさ
+おさだ,とものぶ
+おさき,たかし
+おさなみ,しずよし
+おやまだ,やすのり
+おざわ,こうじろう
+おざわ,しろう
+おざわ,やすのり
+さえぐさ,やすのり
+さえき,よしひろ
+なかじま,たけし
+さいた,ちえこ
+おがわ,やすはる
+さいとう,かずひさ
+さいとう,たかひこ
+さいとう,よしのり
+さかい,りょうじ
+さかい,ひでのり
+さかい,けいじ
+さかい,たけし
+さかい,たく
+さかい,しょうご
+さかいり,ひろゆき
+さかき,きょうこ
+さかま,まさのり
+さかまき,まさとも
+さかもと,まさとし
+さかもと,さとる
+さかもと,しゅういち
+さかた,たかし
+さかうえ,たかゆき
+さかずめ,たくみ
+なかの,ともひろ
+さくま,よしひこ
+さんぼんまつ,かずひろ
+さの,たけし
+さの,としふみ
+ささがわ,ゆたか
+ささき,ゆりこ
+ささき,やすゆき
+ささき,かずよし
+ささき,こうじ
+ささざわ,としゆき
+さとう,やすし
+さとう,かつひと
+さとう,よしたか
+さとう,たかゆき
+さとう,のぶたか
+さとう,ゆうすけ
+さとう,ひでゆき
+さとう,さとし
+さとう,おさむ
+さとう,まゆみ
+さとう,のぶお
+さとう,ひでのり
+さつま,みわこ
+さわぐち,なおと
+さわい,みちひろ
+さわらぎ,やすお
+さわたに,くにお
+せいた,あつし
+せき,まさまろ
+せき,のぶひろ
+せき,のりやす
+せきはら,あきら
+せきね,ゆうすけ
+せきね,ひろゆき
+しらいし,まさひろ
+せんが,のぶお
+せの,のりゆき
+せしも,しゅういち
+せと,たつお
+せとぐち,たつや
+てるや,ゆういち
+しいば,りか
+しばの,ともゆき
+しばさき,いくこ
+しばた,てつろう
+しぶさわ,まさふみ
+しぶさわ,よしひろ
+しち,だいえい
+しちた,たかゆき
+しげひさ,とおる
+しげさわ,みゆき
+むらた,りゅうたろう
+しまず,たかつぐ
+しまず,たつし
+きしだ,たかし
+しみず,みちお
+しみず,えいいち
+しみず,ひろし
+しみず,はやとし
+しみず,くんじ
+しみず,けいこ
+しみず,ひろしげ
+みやこし,としひろ
+しもみち,まりこ
+なかばやし,かおる
+しもおさ,たけし
+しもつじ,しんじ
+しなだ,ちかし
+しながわ,のぶお
+しんもと,まさひろ
+しの,よしのり
+しのだ,りゅうたろう
+しのだ,はつえ
+しのざき,しょうじ
+しおたに,てつひろ
+しおや,つかさ
+しらべ,いっせい
+しらがき,よしはる
+しらい,かずひこ
+しらいし,えつひろ
+しらいし,ひろし
+しらき,かずひろ
+しずた,けいこ
+しょうじ,けいた
+そのだ,みどり
+すどう,もとゆき
+すえだ,せいこ
+すえつぐ,たかし
+すがた,やすすけ
+すがわら,よしあき
+すぎの,よしのぶ
+すぎさき,ゆうじ
+すぎしま,まさる
+ながい,まりこ
+すぎやま,としひろ
+すみ,かつひろ
+すみたに,しんいち
+すさき,ひろゆき
+すすき,こういち
+すやま,とものり
+すずき,みちお
+すずき,けんいち
+すずき,こういち
+たじま,さとき
+すずき,たくや
+すずき,やすこ
+すずき,ゆたか
+すずき,あきこ
+すずき,あつし
+すずき,ひでとも
+すずき,ひでとし
+すずき,ひでとし
+すずき,ひろき
+しゅくや,じゅんいち
+たちばな,かよ
+たちやま,こういち
+たどころ,まさあき
+たがわ,まさひと
+たぐち,もとかず
+たぐち,なおゆき
+たぐち,のぶひさ
+たい,のりお
+たじま,さちえ
+たかだ,さとる
+たかだ,しげのぶ
+たかぎ,すすむ
+みやもと,たかし
+たかはま,てつお
+たかはし,やすあき
+たかはし,まさのり
+たかはし,つとむ
+たかはし,まさゆき
+たかはし,まこと
+たかはし,けんりゅう
+たかはし,としひさ
+たかはし,やすし
+たかはし,ひろゆき
+たかはし,やすのり
+たかはし,ひろし
+たかはし,もとやす
+たかはし,ゆきえ
+たかはし,やすこ
+たかはし,たかし
+たかはし,よしひさ
+たかはし,としゆき
+たかはし,さとこ
+たかはし,ひでき
+たかはし,いちろう
+たかはし,のぶあき
+たかはし,みつる
+たかなし,しん
+たかの,かつのり
+たかおか,てつや
+たかせ,しげき
+たかしな,こうせい
+たかしな,だいさく
+たかた,ひろあき
+たかやま,ひろゆき
+たかやなぎ,じゅん
+たけばやし,かつみ
+みかみ,けいすけ
+たけい,まこと
+たけき,ましゅう
+たけもり,のぶひこ
+たけむら,おさむ
+たけうち,けん
+たけや,しょういち
+たけやま,としあき
+たきぐち,としかず
+たきした,としゆき
+たきざわ,あきら
+たまい,しげる
+たみや,あきこ
+たむら,ようすけ
+たなべ,ひろゆき
+たなはし,よしゆき
+たなか,しげと
+たなか,ひでのり
+たなか,ひろゆき
+たなか,ひろき
+たなか,ゆきこ
+たなか,ひろこ
+たなか,じゅんいち
+たなか,しん
+たなか,まさかず
+たなか,じゅんこ
+こだま,よしひこ
+たなか,あさお
+たなか,のりあき
+たなか,さとし
+たなか,おさむ
+たなむら,さとし
+たんば,かずなり
+たにぐち,けいじ
+たにぐち,じゅんこ
+たにい,げん
+たにむら,とものり
+たにわき,おさむ
+たるい,しょうじ
+たさき,かずゆき
+たしろ,まさや
+たていし,なおや
+たうち,りょうこ
+たうら,ひろあき
+てらだ,よしお
+さとう,あきら
+てらにし,もりゆき
+てらした,ひろし
+てるきな,あきよ
+とべ,えりこ
+とうごう,たかはる
+とぐち,えいじ
+とじ,かつのり
+とみなが,まさと
+とみなが,やすまさ
+とみおか,なおき
+とみた,すぐる
+とみやま,ひろたか
+とねがわ,あきら
+としなり,じゅんこ
+とよだ,こうじ
+とよだ,かつや
+とよだ,まさひこ
+おおもり,よういちろう
+とずか,ひでお
+やまかわ,りゅうへい
+つぼい,じゅんこ
+つちはし,かつみ
+つちの,みのる
+つちや,よしひろ
+まき,ひでのり
+つだ,みつのぶ
+つがわ,けんじ
+つじ,さとし
+つじ,とよかず
+つじ,ひろし
+つかだ,ひろゆき
+つかもと,きよし
+つむら,たかゆき
+つなしま,ゆきお
+おくやま,まもる
+つのだ,さだはる
+つのがい,やすのり
+つしま,のぼる
+つつみ,ひろし
+つずき,かつみ
+つるおか,ひでと
+うちだ,ひさし
+うちだ,まさる
+うちだ,まさふみ
+うちだ,やすし
+うちの,あきひこ
+うちのくら,めぐみ
+うちやま,みちはる
+うちやま,たかのり
+うちやま,のぶひろ
+うだ,けいじ
+うえだ,しげる
+うえだ,なつこ
+うえだ,よしと
+うえだ,としはる
+うえはら,しげる
+うえはら,まさお
+うえはら,しんじ
+うえじま,ひろゆき
+うえき,えりこ
+うえむら,くにひろ
+うえの,たかひで
+うえの,とくひろ
+うえの,ゆうじ
+うえやま,よしこ
+うい,けいすけ
+うめだ,しょういち
+うめだ,あつし
+うめだ,ちはる
+うめだ,けんじ
+うめはら,まこと
+うめかわ,まさのり
+うるしだに,まさゆき
+いのうえ,たけし
+うさみ,ゆうこ
+うしまる,たつひろ
+うしやま,かつゆき
+うすい,こうへい
+うすい,おさむ
+うつみ,じろう
+ささがわ,かずあき
+そめや,けんじ
+わだ,まさお
+わだ,まさよし
+わだ,よしあき
+たのうえ,ゆういち
+わしだ,ひであき
+わたい,みちあき
+わたなべ,まさゆき
+わたなべ,あきお
+わたなべ,かずひさ
+わたなべ,さとし
+わたなべ,ひでき
+わたなべ,とおる
+わたなべ,ひろゆき
+わたなべ,あきら
+やぎ,かずお
+やご,まさひこ
+やはぎ,なおふみ
+やくし,おさむ
+やまだ,れいき
+やまだ,たかし
+やまだ,とみやす
+やまだ,としひろ
+やまだ,としお
+やまだ,よしお
+やまだ,ゆか
+やまがた,たけし
+やまぎし,まさえ
+はり,まさゆき
+やまぐち,かつし
+やまぐち,ともかず
+やまぐち,ともみ
+あおつか,よしさと
+やまぐち,まさのり
+やまじ,みちお
+やまもと,ひろのり
+やまもと,じゅんいち
+やまもと,けんじろう
+やまもと,かずひろ
+やまもと,ひろふみ
+やまもと,たかゆき
+やまもと,あきひで
+やまもと,としのり
+やまもと,えいじ
+やまもと,まなぶ
+やまもと,としゆき
+やまもと,なおふみ
+やまむら,ともかず
+やまなか,ゆたか
+やましな,しんじ
+やました,ゆきひろ
+やました,りんじゅ
+やました,けんじ
+やました,ひとし
+やまて,けい
+やまうち,あきら
+やまざき,ゆきひさ
+やまざき,のぼる
+やまざき,ひとし
+やなぎ,かずお
+やなぎだ,こういちろう
+やなぎだ,みほ
+やない,さとし
+やなか,ただし
+やすだ,まさみ
+やすだ,いわお
+やすだ,せきこ
+やすもと,かずや
+やつか,なおき
+やざわ,みずほ
+よだ,てつや
+よどがわ,のりお
+よだ,ひろのり
+よこはた,ひろや
+よこやま,いわお
+よこやま,しげる
+よもり,あきよし
+よねもち,よしつぐ
+よろずや,なおひさ
+よしだ,たつぞう
+よしだ,たかし
+よしだ,のりお
+ふじさき,こういち
+よしだ,ひとし
+よしだ,てつお
+よしまつ,ちはる
+よしもと,ゆうすけ
+よしむら,かつや
+いしばし,ただし
+よしの,たつや
+たかの,けいご
+ゆはし,しょうこ
+えだひろ,みどり
+はらだ,まさゆき
+はやさか,りゅうせい
+いながき,まさき
+いのうえ,さとし
+いしはら,たかし
+こじま,やすひさ
+こすぎ,しんご
+くぼた,なるみ
+もり,たかし
+なかばやし,なおひさ
+ねもと,たかし
+にのみや,けい
+おがわ,めぐみ
+おおたに,まさこ
+せき,くみ
+しぶたに,つとむ
+しんと,ひろゆき
+そぶえ,ひとし
+たかはし,たけし
+たかせ,まみこ
+とよだ,ひろひで
+うえだ,しんたろう
+やまもと,やすゆき
+やまずみ,ひろし
+よしだ,こうじ
+あさかい,なるとし
+ふくた,かずみ
+かわさき,かずお
+ひろせ,よしかず
+かさはら,せつこ
+おざわ,けいいち
+かとう,けいいち
+なかむら,せいえい
+たぐち,ひろむ
+あだち,りょうせい
+あかし,よしひさ
+あきやま,えみ
+あおき,しょうじ
+あらき,ともたけ
+あさひ,ふみのり
+あさの,としひこ
+あわの,おさむ
+あわの,じゅんじろう
+どうじ,なおゆき
+どうぞの,せいや
+ふちかみ,かつろう
+ふじい,けんじ
+ふじい,こういち
+ふじいえ,のぶや
+こわ,しゅんいち
+ふじしろ,まさお
+ふじた,ようこ
+ふじた,ひろゆき
+ふじわら,こうじ
+ふくだ,なおゆき
+ふくだ,たつお
+ふくだ,けん
+さいとう,おさみ
+ふくやま,じゅんいち
+ふるはた,こうじ
+ごとう,ひろかず
+はむろ,おさむ
+はせ,たくひさ
+はしもと,まさひろ
+はしもと,じゅんいち
+はっとり,じゅん
+はやし,かつひこ
+はやし,としあき
+はやし,まさかず
+はやし,しげみつ
+はやし,めい
+はやし,まさつぐ
+ひび,ひろゆき
+ひぐま,たくや
+ひらい,ひろたか
+ひらかわ,つねとも
+ひらの,かずひこ
+ひろなか,みのる
+ほりぐち,のぶあき
+ほさか,さとし
+ほそや,せいじ
+いちい,しげゆき
+いちかわ,もとひろ
+いぐま,えいいち
+いいさか,まゆみ
+いかわ,いわお
+いけだ,あゆこ
+いけだ,いくじろう
+いけがみ,まもる
+いのうえ,しろう
+いのうえ,ひさあき
+こばやし,とくじろう
+いしばし,やすひさ
+いしだ,よしゆき
+いしまる,みわ
+いしずか,としゆき
+いそ,ひであき
+いとう,ひであき
+いとう,あきひこ
+いとう,まさひろ
+いとう,さわこ
+いとう,てつや
+いとう,よしみね
+いとう,けんいち
+いわた,さとし
+かりや,せいいち
+がさき,しげお
+かが,かずひさ
+かげやま,つよし
+かじなみ,たかゆき
+かみひらた,ひろゆき
+かなもり,たつや
+かねこ,てるお
+かねこ,よしお
+かにわ,あきら
+かさま,のりまさ
+かせ,ひろゆき
+かしむら,ふみとし
+かたおか,けんじ
+かとう,じゅんこ
+かとう,けいじ
+かとう,こうた
+かとう,あきひこ
+かとう,のぶひで
+かわち,けいこ
+かわぐち,ちさと
+かわの,みつお
+かわしま,てつじ
+きくち,ともあき
+きもと,よしひろ
+きむら,かつや
+きのした,てつ
+きしはら,つぐあき
+きしかわ,ひでゆき
+きた,りえ
+きたがわ,みちはる
+きたの,りえこ
+きたやま,せいこ
+きよおか,まさよ
+きよせ,つかさ
+こばり,たてき
+こばやし,かおる
+こばやし,こうたろう
+こぼり,たまみ
+こいわ,たけし
+こじま,ふみよ
+はしもと,こういち
+こみやま,たかひろ
+こんど,ともゆき
+こんど,のりこ
+こんど,ようすけ
+こしかわ,あきふみ
+こてがわ,けんじ
+こわ,のぶゆき
+くぼた,しょういち
+くぼた,ひろゆき
+くどう,はやと
+くが,よしひろ
+もり,ゆきひろ
+くにたけ,はじめ
+くらかけ,ひろかず
+くり,まさひと
+くさふか,しのぶ
+くわばら,とおる
+まちだ,ひろゆき
+まるやま,ゆき
+たけうち,あきお
+まつば,あつし
+まつばら,たけろ
+まつだいら,まき
+まつもと,よりこ
+まつもと,よしあき
+まつなが,みほ
+まつお,まさや
+まつお,のりゆき
+まつお,しんや
+みくに,やすし
+みながわ,わたる
+みながわ,しげる
+みのて,ともあき
+みた,よしくに
+みとめ,たけし
+みつやま,しゅういち
+みやち,たかふみ
+みやじ,こうじ
+みやじま,みつお
+みやた,けいこ
+みやざき,きよあき
+みやざき,まこと
+みやざと,よしなり
+みやざわ,ひろき
+みぞぐち,もとこ
+みずい,まさよし
+もんの,えいじ
+もり,みつひろ
+もり,のりすみ
+もりた,くるみ
+もりた,としあき
+もりやま,まりこ
+むらかみ,りゅういち
+むらかみ,こういちろう
+むらかみ,みのる
+むらまつ,しんすけ
+むろぞの,ひろあき
+ながぶち,ひろし
+ながの,みつる
+ながせ,りゅういち
+ながたに,しほ
+なごや,ひろあき
+なかがわ,かおり
+なかみち,しょう
+なかむら,じゅんいちろ
+なかむら,まさのり
+なかの,ひろし
+なかしま,ひろのり
+にしだ,じゅん
+にしはら,あつと
+にしむら,しんや
+にしおか,かずひこ
+のぐち,のぼる
+のせ,まさずみ
+おばた,ゆうじ
+おちあい,いくこ
+おちあい,ひでひこ
+おがわ,たかし
+おがわ,まさと
+おがわ,たみや
+おがわ,かつとし
+おぎの,まゆみ
+おぐら,たかあき
+こんど,やすゆき
+おおえ,まさみち
+おおがき,じろう
+おおにし,のりあき
+おおの,まさみち
+おおた,ひろし
+おしろ,かずしげ
+おおた,たかし
+おおたしろ,ひでき
+おおつ,まさかず
+おおつ,めぐみ
+おおやぎ,えいじ
+おおやま,ちはる
+おかもと,ひろぶみ
+おかやま,みつより
+おけたに,たつこ
+おくやま,くみこ
+おのでら,ひでとし
+おざわ,みのる
+さいとう,かずひで
+さいとう,てるお
+さいとう,たかのぶ
+さかぐち,ひろかず
+さかなか,もとむ
+さかにわ,よりこ
+さかうち,としたか
+さくらい,つとむ
+さくらい,まさゆき
+さの,たくや
+ささき,まさみ
+ささき,えり
+ささき,りえ
+ささま,まさかず
+さとう,たけや
+さとう,ひろゆき
+さとう,たかし
+さとう,みわ
+にしまた,てつお
+さわだ,まさひさ
+せんば,ゆういち
+せと,よしのり
+しぶや,ゆきお
+しい,みさこ
+しまだ,こうへい
+しまだ,みえ
+おかもと,まさとし
+しながわ,さちえ
+しんかわ,ひさや
+しんきゅう,まさゆき
+しのだ,てるえ
+しのはら,せいいち
+あさかわ,かおる
+しおはら,まさと
+しろた,かつひろ
+すぎもと,かずひで
+すぎやま,きよたか
+すぐち,のぶこ
+もろとみ,はるこ
+すずき,まさふみ
+たぐち,あきお
+たぐち,ゆうじ
+たはら,ひろゆき
+たかぎ,よしお
+たかはし,かずお
+たかい,けんじ
+たかやま,かずこ
+たけ,なおき
+たけばやし,りゅうじ
+たけかわ,じゅんこ
+たけうち,かほる
+わたなべ,こうじ
+たけうち,ひでき
+たみや,まさかず
+たむら,ひろし
+たなべ,まさひろ
+たなか,けいこ
+たなか,のぶこ
+たなか,つよし
+たにぐち,あつし
+たにぐち,かずひろ
+たにむら,たつお
+たのうえ,あきひろ
+たるさわ,あきこ
+たしろ,としはる
+てらだ,ゆきひこ
+とうが,ひでみね
+とがし,しげお
+とうごう,しんや
+とくなが,あやこ
+ともの,かずみ
+とよだ,ようじろう
+つちや,ひろあき
+つかはら,のぶひろ
+うらさき,ゆうじ
+わだ,ともやす
+わだ,れいこ
+わたなべ,まさとし
+わたなべ,ふみお
+やぎぬま,けいこ
+やまだ,としあき
+やまだ,ひさし
+やまだ,けいじ
+やまもと,まさあき
+やまもと,ひでと
+やまもと,たつや
+やまもと,ゆきひろ
+やまなか,ちひろ
+やまなか,かおる
+やました,まさひろ
+ひぐち,じゅんじ
+やまざき,ふみの
+やなぎ,ひろし
+やすだ,のぶゆき
+やすえ,としや
+よこえ,のぶあき
+よこやま,りえこ
+よねはら,こういち
+よねみつ,まこと
+よりまつ,ともこ
+よしだ,ふみひろ
+よしの,みつひろ
+よしたき,おさむ
+ゆかわ,じゅんや
+ゆり,ともお
+もり,たかひさ
+ささき,かつひこ
+しらはま,たけひろ
+てんぱく,ゆういちろ
+うちだ,なおや
+やまうら,とおる
+まつぐま,ふみこ
+あべ,ひろゆき
+あべ,かつみ
+あべ,かずお
+あべ,なおあき
+あだち,ななお
+あいはら,つよし
+あじま,やすあき
+あかさか,とおる
+あきもと,こうぞう
+あきやま,たかし
+あきやま,たつや
+あくね,ひろし
+あまの,まなぶ
+あまの,ちあき
+あめみや,まさつぐ
+あんどう,みき
+あんどう,みわ
+あんどう,かずお
+あんじき,ゆうこ
+あんぺいじ,しゅんいち
+あおき,よしこ
+あおき,しげはる
+あおき,ゆきこ
+あおき,じゅん
+あおき,としあき
+はらしま,りか
+あおき,つとむ
+あおき,なおひさ
+あおやぎ,たかゆき
+あおやま,よういち
+あおやま,けいすけ
+あらい,こういち
+あらき,まこと
+あらき,かつじ
+あらた,みき
+あらや,しんいち
+こばやかわ,やすひろ
+ありた,なるひと
+あさば,よしゆき
+あさか,ともちか
+あさくら,たつお
+あさの,しゅうじ
+あさの,ともあき
+あしべ,まさひこ
+あわみや,ひろゆき
+あざみ,つとむ
+あぜやなぎ,ひろみ
+あずま,りえ
+あずま,たかゆき
+あずま,なおゆき
+ばば,よしかず
+ばば,かつゆき
+ばば,だいすけ
+ばなか,かずや
+さたけ,けいこ
+ちば,もとはる
+ちぎら,のぶひこ
+ちはら,たかふみ
+ちかい,あつし
+ちゅうま,たけし
+だい,まさひろ
+だいお,ひでき
+だて,ひろし
+でぐち,こうじ
+でわ,えみこ
+どい,たいぞう
+えびさわ,ひろみつ
+なかむら,たかこ
+えいもり,はるみ
+えんど,なおき
+えんど,たかお
+えのもと,けいこ
+ふじい,ひろかず
+ふじい,けんいちろ
+ふじい,たつのり
+ふじい,みつよし
+ふじい,としあき
+ふじかわ,しのぶ
+ふじもり,あきこ
+あおき,あきら
+ふじもと,なおや
+ふじおか,てつろう
+ふじた,やすひさ
+ふじた,むつお
+ふかお,しんいち
+ふくだ,かつひこ
+ふくだ,ひろし
+ふくい,ひでお
+ふくい,こうじ
+ふくもと,ひでたか
+ふくしま,ひでのぶ
+ふくしま,のぶこ
+ひの,さち
+ふくざわ,きょうこ
+ふくざわ,みきこ
+ふなだ,ゆうこ
+ふるだて,けいこ
+ふるや,けいすけ
+ふたむら,みきや
+なかむら,もとひさ
+ごとう,しげき
+ごとう,かずや
+ごとう,かいちろう
+ごとう,ようこ
+はば,ようこ
+はちやま,まさみ
+はぎわら,しん
+はまべ,たかゆき
+はまだ,よしみ
+はまだ,たかひで
+まえおか,ひとし
+はなみ,やすひで
+はなおか,あきこ
+せざい,なおき
+はら,りょうじ
+さとう,せいご
+はら,あつし
+はらだ,なつみ
+はらだ,えいいち
+はらだ,かずひこ
+はらだ,まさあき
+はらだ,みつのり
+はりま,なおき
+ほんま,のぶあき
+はるやま,しげる
+はせ,よういち
+はせがわ,たつお
+はせがわ,やよい
+はせがわ,けんたろう
+はせがわ,あきひこ
+はしぐち,ひとし
+はしもと,かつこ
+はしもと,かずや
+はしずめ,こうたろう
+はしずめ,みわ
+はしずめ,しゅんすけ
+はた,しんいちろう
+はたの,ちから
+はたの,かずとも
+はとり,なおき
+はっとり,たけし
+はっとり,よういち
+はっとり,あきひこ
+はっとり,ゆき
+はっとり,さとし
+はっとり,まさき
+はっとり,わたる
+はやかわ,けいこ
+はやかわ,なおみ
+はやみ,すみひと
+はやし,ひであき
+はやし,ゆみこ
+はやし,まさたか
+はやし,まゆみ
+はやし,やすひろ
+ささたに,あきら
+はやし,まさのり
+はざま,せいいち
+へんみ,かなこ
+ひび,ともみ
+ひだか,とうこ
+ひだか,ゆうこ
+ひだか,たろう
+ひえだ,みちかず
+ひがき,しょうじ
+ひがし,よしひさ
+ひいどめ,ひろみち
+ひじくろ,せいいち
+ふくい,いさお
+ひま,よしき
+ひおき,とうめい
+ひらい,まり
+みき,まさゆき
+ひらの,ふきよ
+ひらの,かずひろ
+ひらた,しろう
+ひらつか,ふみかず
+ほだ,ひろき
+ひらやま,なおこ
+ひろべ,きくみ
+ひろい,まさひろ
+ひろさわ,まさひろ
+ひろさわ,なおこ
+ひろすえ,じゅんこ
+ひろた,おさむ
+はやま,ゆうこ
+ひろわたり,さゆり
+ひさもと,みかこ
+ひさの,よしあき
+ひさゆき,ゆかり
+ひしだ,ひろし
+ひしたに,やすし
+わだ,ふみえ
+ひやま,のぶひこ
+ありくら,ゆたか
+ほんだ,みのる
+ほんだ,けいすけ
+ほんごう,まさと
+ほんま,ゆういち
+ほんま,あきのぶ
+まつもと,けんた
+ほり,まなぶ
+ほり,あきと
+ほりべ,としゆき
+ほりえ,あきのり
+ほりえ,まさひこ
+ほりえ,ただし
+ほりうち,よしふみ
+ほしば,とおる
+ほしかわ,ひでお
+かとう,なおき
+ほしな,こういち
+ほり,のりゆき
+ほしの,たかし
+ほそだ,のぶお
+ほった,さおり
+ほちど,たかや
+いぶか,よしてる
+いちかわ,ひとし
+いちかわ,まりこ
+いちます,つとむ
+いちのせ,かつみ
+いで,まさひこ
+いがらし,まさと
+いがた,えいいちろう
+いい,ゆりこ
+いいだ,まさよし
+いいだ,まさゆき
+いいだ,しんじ
+いいの,いちろう
+いいより,みちはる
+いいずか,まこと
+いかるぎ,かつや
+いかわ,けいすけ
+いけち,まみ
+いけだ,こういちろう
+いけだ,もとはる
+いけだ,たかこ
+いけだ,たかゆき
+いけがみ,ともひろ
+いけじり,かずや
+いけたき,くにおみ
+いくもと,しん
+いまい,たけし
+いまい,れいこ
+ほそい,けんたろう
+いまい,さぶろう
+いまにし,たけし
+いなだ,はじめ
+いながき,まなぶ
+いなげ,けんいち
+はざま,ひさもと
+いの,じゅん
+いのまた,けいたろう
+いのうえ,りえ
+やすかわ,たかひと
+はる,とおる
+いのうえ,てるお
+いのうえ,つとむ
+いのうえ,ふみのり
+いのうえ,ひろひさ
+いおき,まさみち
+いりえ,のぶゆき
+いさか,とおる
+いさか,わたる
+おおもり,けんいちろ
+いしばし,まなぶ
+いしだ,けいいち
+いしだ,うらら
+いしはら,よしと
+いしはら,はるお
+ひらと,ひでお
+いしい,けいじろう
+いしい,みきお
+いしい,あつし
+いしい,はるお
+いしい,けいじ
+いしい,まさこ
+はねいし,しんすけ
+いしい,やすし
+いしかわ,ようこ
+いしかわ,ようすけ
+いしかわ,よしひこ
+いしかわ,ゆか
+いしかわ,のりこ
+いしおか,よしゆき
+いしつか,としゆき
+いしわた,ありひろ
+いしざか,こうじ
+いしざか,えいいち
+いしざき,こうじ
+いしずき,なおと
+いそ,しげひと
+いそがい,ゆうこ
+いたば,ゆうじ
+いとう,いのり
+いとう,まさひろ
+いとう,まさひろ
+いとう,ばん
+いとう,さとし
+いとう,あつし
+ひだか,ひでつぐ
+いとう,まさひろ
+いとう,ゆき
+にし,しんいち
+いわだれ,よしのり
+いわはし,ゆうこ
+いわき,みずほ
+いわもと,よしのり
+いわさき,のぶかず
+ひらつか,ひろし
+いわさき,ひろゆき
+いわさき,まさゆき
+いわさき,ひろゆき
+じんぐう,さとこ
+いわしげ,まこと
+いわた,ひろし
+じんぐう,よしのり
+ご,やすかず
+かが,かつや
+かがぶ,しんじろう
+かぎやま,ひでお
+かい,ゆうぞう
+かいだ,のりゆき
+かいだ,のりまさ
+かまち,ひろゆき
+かまだ,まさこ
+かまほり,ともひこ
+かまた,こういちろう
+かめだ,まゆみ
+かめい,ふみひこ
+かみの,たけし
+かみの,ひとし
+かみとの,りゅうじ
+かみや,のぶゆき
+かみや,ちあき
+かみやま,けんぎ
+かもん,ひでき
+かもん,えいたろう
+かん,とものり
+かない,のりこ
+かない,すみこ
+かなじ,まさゆき
+かなおか,たみお
+かなざわ,かつひさ
+かんべ,さおり
+かんだ,やすたか
+かんだ,ちえ
+かねき,えいすけ
+かねきよ,ひろと
+かねこ,ひろゆき
+かねした,かずひろ
+かねやす,なおや
+かのう,しんじ
+かのう,たけし
+かんずい,たみゆき
+かさはら,ななこ
+かさはら,ひでひさ
+かさい,えいいち
+かさまつ,くにとし
+かさも,けんいちろ
+たまたに,しま
+かしわぎ,ゆりみ
+かしわぐら,ひでゆき
+かただ,さちこ
+かたおか,なおき
+ほし,ひろと
+かたおか,しゅうじ
+かとう,ひろき
+かとう,やすゆき
+かとう,もりひろ
+かとう,しんいち
+かとう,りょうた
+かとう,けいこ
+かとう,てるひこ
+かとう,じゅんこ
+かとう,みちや
+かとの,きよし
+かつむら,ひでき
+かわばた,いちろう
+かわごえ,あきら
+かわぐち,こうじ
+かわはら,ますみ
+かしむら,ゆうこ
+かわい,なおみ
+かわい,ひろゆき
+かわもと,まなぶ
+かわむら,さとる
+かわむら,しゅうじ
+かわな,ゆきひと
+かわな,まさかず
+かわなみ,ひでひこ
+かわの,しんじ
+かわせ,じゅんいちろ
+はらだ,しゅうこう
+かわしま,のぶこ
+かざみ,なおと
+かずさわ,やすひろ
+きばやし,ゆういち
+きだ,たけし
+きはら,よしひこ
+きくち,ひろし
+きくち,いちろう
+さいとう,けんじ
+きくい,つよし
+きもと,ようこ
+きむら,のぶゆき
+きむら,つよし
+きむら,としつぐ
+きむら,たかひさ
+きむら,はるみ
+きの,かずまさ
+きりの,かずや
+きさぬき,まこと
+きし,まさき
+きし,なおき
+きしだ,さとし
+きしかわ,しん
+ひらて,しんじ
+きしなみ,やすまさ
+きそ,よしお
+きた,ひであき
+きたがわ,なおみ
+きたじま,ひろゆき
+きたじま,せいか
+きたむら,のりこ
+きたの,としゆき
+きたざき,ただし
+きたざわ,たつし
+きよはら,つとむ
+はしもと,おさむ
+のざき,ふみきよ
+こばやし,ふみお
+こばやし,まさゆき
+こばやし,なおき
+こばやし,たかはる
+こばやし,けんじ
+こばやし,あつし
+こばやし,えいじ
+こばやし,さちこ
+こばやし,しょうじ
+こばやし,ともひろ
+こうち,ゆき
+こだま,やすひろ
+こが,あきひろ
+とうどう,しゅういち
+こはら,なおすみ
+こひ,はるみ
+こんの,ひろふみ
+こいけ,とおる
+こいわ,ともゆき
+こいずみ,しゅうご
+こじか,みえこ
+こじま,ながお
+こじま,りちこ
+こじま,かずひこ
+こじま,さとし
+こまつばら,りゅうた
+こみや,きよし
+こもだ,あきよし
+こむろ,としゆき
+こんど,なつみ
+こんど,けんじ
+こんど,けんいち
+こさけ,こういち
+こせ,たかし
+こすぎ,たけし
+こずか,やすのり
+くぼ,はるみ
+くぼ,たけひろ
+くぼ,なおき
+くぼ,しげお
+くぼ,ひろし
+くどう,まり
+くどう,せいいち
+くどう,まさき
+くまかわ,けんじ
+くまくら,けんいち
+くましろ,せいいち
+くまた,しろう
+くにもと,じゅんじ
+くらもち,しゅういち
+くらしま,ひろし
+くりはら,かずひろ
+ひらい,こうじ
+くりはら,よしゆき
+くりはら,かつよ
+くりはら,ゆうじ
+くりはら,てつお
+くりはし,みつのぶ
+くりす,ようこ
+くろだ,あつし
+くろだ,ひろゆき
+くろき,たかひろ
+くろき,ともこ
+くろき,えいじ
+くろめ,まこと
+くろさわ,えいじろう
+くるみや,こうき
+くさやなぎ,まさとし
+くすのせ,なおおみ
+くわはら,しんじ
+まちだ,ようこ
+まだらめ,としたか
+まえだ,さとし
+まえだ,さとる
+まえだ,しんいちろう
+まえがわ,ふみひで
+まえはら,ぎんじ
+まえきた,かずこ
+まきの,たかひろ
+しぶたに,こうじ
+まなべ,よしのり
+まるやま,あきら
+まるやま,ひろゆき
+まるやま,けいいち
+まさおか,たかし
+ますぶち,よしのり
+ますだ,ゆうこ
+ますだ,よしはる
+ますだ,たかとし
+ますだ,たくや
+ますだ,ひろかず
+ますだ,ひろき
+まつば,のぞみ
+はら,けんじ
+まつだ,けんじ
+まつだ,だいすけ
+まつふじ,あきお
+まつふじ,かずなり
+たちくい,みき
+まつい,しんじ
+まつかわ,たかひろ
+まつまる,しゅうさく
+まつもと,あきお
+まつもと,かずのり
+まつもと,あきひこ
+まつもと,のりこ
+まつもと,ひろし
+まつもと,つとむ
+しおばら,しんいち
+まつむら,しゅんいち
+まつむら,よしのり
+まつなが,ゆきこ
+まつなが,まさひろ
+まつなみ,よしこ
+まつお,としや
+まつお,ともひろ
+まつおか,えいこ
+はやしだ,かずひろ
+まつおか,せいいち
+あぜやなぎ,せいじ
+まつおか,しんご
+まつおか,ひろあき
+まつせ,たかゆき
+まつしま,けんじ
+まつした,こうじ
+まつたに,しんじ
+まつわか,さとし
+まつやま,あきら
+まつざき,きくお
+まつなが,まこと
+ほんな,きわむ
+めかた,けんじ
+みかじり,きょうこ
+みかみ,しんすけ
+みかみ,ひでお
+みき,まさゆき
+みみた,みちろ
+みなくち,ふみはる
+みなみ,さとし
+みなみ,ともゆき
+みなみ,あきら
+みなと,しょうじ
+みね,よしたか
+みね,あつし
+みしま,こうじ
+みしま,おさむ
+みその,ひろひさ
+みたむら,まさとし
+みたんだ,けんいち
+みつぼ,よしかず
+みつぼし,としひろ
+はすむら,としふみ
+みつはし,ひろみつ
+しなだ,ひろゆき
+みつま,かずひと
+みやはら,じつや
+みやはら,ひではる
+みやい,みえこ
+みやじま,ゆかこ
+みやもと,かずなり
+みやもと,ひでのり
+みやした,ひろゆき
+みやた,ひろゆき
+みやた,かおる
+みやうち,けんじ
+みやうち,おさむ
+みやうら,たけひさ
+みやざき,たけし
+はしぐち,しげき
+みやざわ,こうじ
+みやざわ,あきお
+みやず,やすひと
+みぞかみ,じゅんいち
+みずの,てつひこ
+みずの,としゆき
+みずたに,のぶゆき
+もちだ,あきひろ
+もちずき,あきお
+もちずき,じろう
+みよし,たかし
+もり,まさき
+もり,まさし
+もり,だいいち
+もり,まさゆき
+もり,てつや
+もり,ひろかず
+もり,つねあき
+もり,いずみ
+もり,ひろかず
+もりぐち,ひろき
+もりかわ,こうじ
+もりなが,まさし
+もりさき,あけみ
+もりた,よういち
+もりた,えいじ
+もりや,むつお
+もりやま,ひでお
+もてぎ,みつひろ
+もとき,くにひろ
+はぎわら,のぶよし
+むかいだ,しこ
+むねひろ,ひでゆき
+むねかた,かずよし
+むらかみ,つよし
+むらかみ,やすひろ
+むらかみ,やすお
+むらこし,ひろこ
+むらまつ,まさと
+むらぬき,けいじ
+むらた,ゆきもと
+むらた,まさき
+むらた,せいじ
+むらやま,よしはる
+やました,あきひろ
+むろた,ひろかず
+みょうじん,みちお
+ながい,のりこ
+ながぬま,ゆきお
+ながお,えり
+ながおか,みほ
+ながさわ,かおる
+ながしま,たかし
+ながしま,よしかず
+ながた,よしやす
+ながた,ちえこ
+はせがわ,ひろあき
+いがらし,かずひろ
+ながやま,けんじ
+ながよし,まさかつ
+ないとう,まさき
+なかばやし,まさのり
+なかがわ,しんいち
+なかごめ,さとし
+なかしま,としあき
+なかじま,やすまさ
+なかじま,ゆうこ
+なかじま,てるみ
+なかじま,くらと
+なかじま,ゆうじ
+なかくき,しんいちろう
+なかまる,りか
+なかみち,みか
+なかもと,ゆきひろ
+なかもと,ひろかず
+なかもと,ひろゆき
+わたなべ,ひろふみ
+なかむら,まさなり
+なかむら,しんいちろう
+なかむら,せいじ
+なかむら,かずのり
+なかむら,ゆうじ
+なかむら,てるゆき
+はぎわら,さとこ
+なかむら,まきこ
+なかむら,ひでゆき
+なかむら,てつや
+なかむら,けんた
+なかの,やすし
+なかお,ゆうこ
+なかお,ひろゆき
+なかおか,ともゆき
+なかしま,さとし
+にしじま,たかし
+なかや,わたる
+なかやま,ひろし
+なかざと,かつあき
+なまため,まもる
+なめら,もりひと
+ななみ,ただとし
+なんば,たかお
+なん,けいすけ
+なんぽ,あきら
+ならぶ,ひでき
+なりはら,ひろみ
+なりとみ,なおき
+なるしま,まこと
+なすかわ,じゅんや
+なとり,けんや
+ねぎし,えみこ
+ねもと,いずみ
+にえだ,とおる
+にいじま,まこと
+にいくら,まさる
+にいつま,けんじ
+にいざわ,よしのり
+にしだ,ひろひと
+にしだ,たけし
+にしだ,えいじ
+にしだ,ひでと
+ひだか,ゆきまさ
+にしだ,やすお
+にしかど,あつし
+にしかわ,えいじゅ
+にしかわ,ともあき
+にしかわ,まさのぶ
+にしもと,ひでや
+にしむら,まさのり
+にしな,きよし
+にしの,ひろかず
+にした,みき
+ふかみ,かずよ
+にしわき,たけひこ
+にしやま,かつし
+にしやま,ひとし
+にしざわ,よしひろ
+にった,ひろよし
+にわた,ほずみ
+にわやま,ちず
+のあみ,くにこ
+のぼりたて,まなぶ
+のだ,たかゆき
+のがわ,ひろや
+のぐち,ともあき
+のぐち,たかし
+のじり,ひろゆき
+のもと,ゆうこ
+のむら,みきこ
+はやさか,かずひろ
+のむら,まさひろ
+のと,そのみ
+のざき,としや
+こさか,やすし
+おばな,あやこ
+おち,まさてる
+おだ,はるのぶ
+おがさわら,かずてる
+おがた,ひろやす
+くき,ゆたか
+おかだ,ひろあき
+おがわ,ひろゆき
+おがわ,まさゆき
+おがわ,やすのり
+おぎはら,かずとし
+おぎの,こういち
+おぶ,みか
+おおはら,ただひこ
+はまもと,やすこ
+おおはら,ゆうじ
+おはし,さとし
+おおかわ,まさと
+おおくぼ,まさあき
+おおみや,せいじ
+おおもり,てつや
+おむら,りょういち
+おおにし,まさたか
+おおの,ひろやす
+おおぬき,かずお
+おおさき,さとし
+おおさき,ゆうこ
+おおさわ,しろう
+おしま,たけし
+おしま,たかお
+おしま,つとむ
+おおた,やすお
+おおた,のぶひろ
+おおた,みか
+おおた,ひろし
+あんどう,けんいち
+おたか,たかあき
+おおたき,ふとし
+おおたに,かずひこ
+おおたに,のりひさ
+おおたに,まさかず
+はやし,ゆきこ
+おおつぼ,たけひさ
+おおつか,よしのり
+おおつか,えいき
+おおつか,あつし
+はやし,えみこ
+おおつる,みちえ
+おふち,としこ
+おおわ,たけし
+おおや,むねお
+おじお,ふみのぶ
+おか,まさとし
+おかべ,あゆむ
+おかだ,まさき
+おかだ,たかや
+おかだ,とおる
+おかだ,ひろゆき
+おかもと,たかゆき
+おかもと,ゆう
+おかもと,ともゆき
+おかむら,ひろくに
+おかむら,けいいち
+おかざき,ひろとし
+おかざき,こうたろう
+おきの,かおる
+おくだ,はじめ
+おくだ,まさのり
+おくがわ,じゅんいち
+はぎはら,けんじ
+おくうち,むねし
+おおみ,あやこ
+おむら,ひとし
+おんだ,かずひろ
+おおの,ゆたか
+おおの,ひょうぞう
+おおの,みのる
+おおの,しゅんすけ
+おのでら,まさひこ
+おのでら,よしのり
+おのでら,としお
+おのむら,みのる
+おのざわ,しんや
+おおぬき,てつろう
+おの,たかあき
+おおやま,ひとし
+おりど,ひであき
+おりしきだ,こういち
+おおさか,ただお
+おやま,たいち
+おざき,たつや
+おざき,よしまさ
+おざわ,ゆうすけ
+こざわ,ひろし
+おざわ,まさはる
+おざわ,たけし
+はたなか,みつひろ
+さえき,りょうこ
+さいだ,ももこ
+さいぐさ,ひろし
+はんだ,たけし
+さいとう,やすとも
+さいとう,まさひさ
+さいとう,しげひと
+さかち,まさお
+さかぐち,こうじ
+さかい,みのる
+さかい,こうぞう
+ひらの,あきひろ
+さかい,あきら
+さかい,ひろみ
+さかい,みきお
+さかい,なおき
+さかもと,たかし
+さかもと,やすひろ
+ひろせ,よしあき
+さかもと,ようきち
+さかた,ともじ
+きしだ,ひろあき
+さこ,あかし
+さくま,まさる
+さくらば,えみ
+さくらい,はるみ
+さくらやま,ひろし
+さめしま,かずよし
+さんべ,まこと
+さるわたり,まさき
+はせがわ,まさと
+ささえ,なおき
+ささはら,りょうじ
+ささき,たかまさ
+ささき,たかし
+ささき,ゆたか
+ささき,ゆきこ
+はびろ,ゆたか
+ささお,かずしげ
+ささおか,ともこ
+ささたに,よしみ
+さた,ともみ
+さたけ,としき
+さとう,じゅん
+ほしの,けいじ
+さとう,まさはる
+はっとり,しんや
+さとう,とおる
+さとう,しげき
+さとう,ゆきたか
+さとう,りょういち
+さとう,たつき
+さとう,けいじ
+さとう,まりお
+さとう,としあき
+さとう,けいいち
+ひらの,ひろあき
+さとう,ひろゆき
+さとう,やすのり
+さわだ,けいいち
+さわだ,こうへい
+さわふじ,たかひろ
+さわき,こうへい
+さわむら,ひろし
+せがわ,しんたろう
+せがわ,かずき
+せき,りつこ
+せき,たいち
+せきぐち,ひさし
+せきね,かずあき
+せきね,かつみ
+ひらの,えいいち
+せんごく,やすし
+せお,ひろし
+せら,ただし
+せら,ひろかつ
+しばはら,かずの
+しばた,かずひこ
+しばた,ともひろ
+はせがわ,ともみつ
+しばた,ゆたか
+しばた,まさたけ
+しばた,まさゆき
+しばざき,まさこ
+しぶたに,ともはる
+しぶや,ともかつ
+しちひょう,きみあき
+しき,まさる
+しきしま,たけし
+しま,あきこ
+しま,こすけ
+しまだ,かつひろ
+しまぬき,たかし
+しまおか,やすたか
+しました,なおひろ
+しまず,けいいち
+しみず,ひでき
+しみず,けいすけ
+はせがわ,ちえこ
+しみず,まさお
+しみず,ゆりこ
+しみず,かずひさ
+しもがい,としこ
+しもかわべ,あきひろ
+しもおか,あきひろ
+しもさか,ひでゆき
+しもやま,てつや
+しんぼり,ひろえ
+しのはら,なおたか
+しのはら,ひさとし
+しのざき,ひろし
+しのざき,よしこ
+しのずか,けんいち
+しんや,ひでこ
+しおた,じゅんきち
+しおたに,けんじ
+しおや,とおる
+しらはま,みちひさ
+しらい,みか
+しらいし,みさ
+しらいし,やすひと
+しらいし,つとむ
+しらき,けいすけ
+しらさき,かずゆき
+しょうなご,たかしげ
+おおやま,みか
+しゅとう,ひろき
+しもいず,よりと
+そえだ,たくみ
+ほりの,ひろかつ
+そとじま,ふとし
+すだ,めいじろう
+すだ,こうこ
+すどう,ひでひと
+すが,はじめ
+すがぬま,ひろかず
+すがわら,けい
+すぎばやし,まさとし
+すぎもと,みか
+すぎもと,のぶこ
+すぎむら,のりひこ
+すぎの,さとる
+すぎさき,しんいち
+すぎさわ,たかお
+すぎた,たかゆき
+はやし,たみ
+すぎうら,とおる
+すぎやま,としや
+すぎやま,しんじ
+すご,やすお
+すいた,よしひさ
+すみだ,あつし
+すみかわ,さとし
+すなが,とおる
+すのはら,まさみ
+すずき,あきら
+すずき,ともゆき
+すずき,よしゆき
+すずき,まさふみ
+すずき,しょうご
+すずき,たけひろ
+すずき,よしのり
+すずき,かずふ
+すずき,あきこ
+すずき,かつひこ
+すずき,しげる
+やまかわ,たつお
+すずき,あさこ
+すずき,あきひこ
+はが,ひろかず
+すずき,いさと
+すずき,かおり
+すずの,かつふみ
+しゅとう,くにひで
+たばら,まこ
+ただ,まさる
+はりがい,たかのぶ
+ただ,まさゆき
+たがしら,みなこ
+たぐち,みゆき
+たぐち,のぶあき
+たじま,しんじ
+たじま,しんじ
+ほった,しゅんいち
+たかだ,とものり
+たかぎ,としかず
+たかぎ,よういち
+たかぎ,ゆうこ
+たかはし,えいこ
+はしぐち,ひろあき
+たかはし,ひろし
+たかはし,なおみ
+たかはし,ひろみち
+たかはし,かつとし
+たかはし,かずこ
+たかはし,かずお
+たかはし,ともひろ
+はせがわ,てるお
+たかはし,けんたろう
+たかはし,ひでのり
+たかはし,かつみ
+たかはし,しんいち
+たかはし,よしみつ
+たかはし,かずひろ
+たかはし,いちたろう
+たかはし,あつのり
+たかはし,けんいち
+たかはし,ふさひこ
+おおみ,けんじ
+たかひら,みのる
+たかい,よしとも
+たかみや,こうじ
+たかなし,りほ
+たかの,みきこ
+たかの,よしひろ
+たかの,たまよ
+たかの,よしひと
+たかの,あきひろ
+はやかわ,もとひろ
+たかしま,ただし
+たかす,かつのり
+たかとうり,ひでひこ
+たかとり,ふさみ
+たかや,のりあき
+たけ,あきひろ
+たけだ,せいじ
+たけだ,いずみ
+ほり,こうぞう
+たけだ,しんいち
+たけはら,ひかる
+たけい,しんいち
+たけもと,あき
+たけもと,あきすけ
+たけなか,けんいち
+はやし,まさひこ
+たかぎ,まさき
+たけとみ,まさのり
+たけうち,みほ
+たけうち,みつお
+たけうち,のぶよし
+たけやす,れいじ
+たけざわ,りょうじ
+たきば,さとし
+たくぼ,たかのり
+はにゅう,つよし
+たまより,ゆうこ
+たもつ,ゆうた
+たむら,ひろゆき
+たむら,あけみ
+たむら,あきら
+たなべ,やすのり
+たなべ,ひでひこ
+たなか,ひろゆき
+たなか,よしゆき
+たなか,こういち
+たなか,あつし
+たけだ,よしこ
+たなか,ただし
+はせがわ,まさる
+たなか,ひでゆき
+たなか,たかよし
+たなか,まなぶ
+たなか,かつき
+たなか,まこと
+たなか,ゆうこ
+たなか,こういち
+たなか,よしお
+たなか,とおる
+たに,ひろこ
+みたに,へいご
+たにぐち,ひであき
+はっとり,ひろこ
+たにぐち,けんいち
+たにぐち,ゆうこ
+たにぐち,かつひこ
+たにかわ,けんし
+たさか,まこと
+たしま,けいすけ
+たてかわ,まさる
+たての,こうじ
+てらじま,はじめ
+てらまえ,せいいちろう
+てらさわ,まこと
+てらやま,みよこ
+てしま,えつまさ
+とだ,もとゆき
+ととみ,たけひこ
+とおやま,ゆきひこ
+ときわ,ちえこ
+ふくやま,けんじ
+とくざわ,まさる
+とみなが,こうじ
+とみた,ひでし
+とみやま,かずのり
+さわむら,たつみ
+とりごえ,さだゆき
+とりたに,ひでのり
+とさか,しゅうじ
+つぼい,まさひこ
+ひらばやし,ともなり
+つちだ,ひろゆき
+つちたに,ひでき
+つちや,しげと
+つだ,ひろし
+つだ,あつよし
+つじ,ひろし
+つじい,かずお
+つじむら,なると
+つじむら,たかし
+つじの,しゅういち
+つじさわ,ゆみ
+つかだ,たいぞう
+つかはら,てつお
+つかもと,やすき
+つかもと,よしみ
+つかもと,けんたろう
+つねだ,まさひろ
+つのだ,たけし
+つのだ,けんいちろ
+つるまる,たかし
+つさか,けん
+つつい,たかしげ
+つつみ,まさのり
+つつみ,まさはる
+つつみはら,たかお
+うちだ,まこと
+うちだ,さだゆき
+はやし,たかゆき
+うちだ,たつや
+うちの,さとし
+うちやま,あやの
+うだがわ,しんいち
+うえだ,ひろゆき
+うえだ,けんじ
+うえだ,たけし
+ねず,としあき
+うえむら,さとし
+うえむら,しょうた
+うえむら,けんいち
+うえの,しんや
+うえの,ともふみ
+うえさわ,としひろ
+うえつぼ,よしたか
+うえつき,よしてる
+うけの,ゆうすけ
+うまはし,ひでふみ
+うめだ,やすたか
+うめむら,かおる
+うみだ,こうきち
+うおずみ,さんぺい
+うらた,せんた
+うしくさ,としゆき
+うすなみ,じゅん
+わだ,じゅんいち
+わだ,かおり
+わだ,みき
+わだ,みつのり
+わかせ,さとよし
+わき,ただし
+わたなべ,たけし
+わたなべ,ともあき
+わたなべ,よしひさ
+わたなべ,ていじ
+わたなべ,よしき
+わたなべ,よしゆき
+わたなべ,かずと
+わたぬき,よしひさ
+わたぬき,ひでお
+わたり,ひろみつ
+はしぐち,じゅんや
+やぶ,こうじ
+やぎぬま,みつあき
+やじま,なおき
+やまだ,しげふみ
+やまだ,よしたか
+やまだ,ゆうすけ
+やまだ,ゆうこ
+やまだ,あきあつ
+やまだ,あきら
+やまだ,ちえ
+やまだ,ひろこ
+やまだ,かずみ
+やまだ,まさよし
+ひさの,りか
+やまだ,さとし
+やまだ,さやか
+やまふじ,たつや
+やまぎわ,やすひこ
+やまぐち,やすひろ
+やまぐち,よしひろ
+やまぐち,のりゆき
+やまぐち,ゆい
+やまぐち,いさお
+やまぐち,てつや
+やまぐち,たけはる
+やまぐち,あきら
+やまぐち,たかひろ
+やまかわ,ゆきこ
+やまもと,ひろし
+やまもと,かなこ
+みずたに,きみお
+やまもと,みどり
+やまもと,みつひろ
+やまもと,よのすけ
+やまもと,なおと
+やまもと,たかし
+やまもと,かつじ
+やまもと,かず
+やまもと,かずあき
+やまもと,ひなこ
+やまもと,しんいち
+やまね,まこと
+やまね,やすひさ
+やました,としお
+やました,かずひさ
+はんだ,いさお
+やまうち,よしや
+やまうち,しんいちろう
+やまうら,たかし
+やまざき,ひろと
+やまざき,かずよし
+やまざき,けんいち
+たむら,まさとし
+やまざき,さとし
+やまざき,たかお
+やまぞえ,たかし
+やなぎさわ,ゆみこ
+やの,たけし
+やすだ,ひでき
+やすはら,けいこ
+こしもと,もと
+はぎわら,みきお
+よこた,てるひさ
+よこやま,たけし
+よもだ,あきら
+よなが,さとし
+よねだ,ひろたけ
+よねやま,さちよ
+よねざわ,えり
+よねざわ,ともひさ
+よしだ,まゆみ
+よしだ,てるやす
+よしだ,かつひろ
+よしだ,まさと
+よしだ,あきひさ
+よしだ,さちこ
+よしだ,けんご
+よしだ,きよひと
+よしぐち,のぶこ
+よしい,ゆきお
+よしいけ,きよゆき
+よしまつ,けんたろう
+よしの,ひさよし
+よしの,しげお
+よしざわ,おさむ
+よつたに,みつひろ
+ゆきざね,せいじ
+ゆやま,よしひさ
+ずし,ゆきお
+あらい,まさと
+ふじき,ゆういち
+ひらの,しげる
+かめやま,ひでのぶ
+こじま,かずお
+なかお,めぐみ
+いわかわ,そうたろう
+つちや,たつや
+いじろ,こうじ
+くどう,ともこ
+ながしま,かずひと
+はしぐち,かつゆき
+つちや,けいこ
+いしまつ,ひろやす
+はらだ,ひろたか
+みずの,ふみお
+ほしの,はるお
+あべ,しげのり
+あべ,たかこ
+あべ,ゆたか
+あべ,えいいち
+あぶかわ,みさ
+あだち,けんたろう
+あいざわ,きりこ
+あじろ,まさゆき
+あかい,としあき
+たもと,みきお
+あかいし,えいち
+あかし,まゆみ
+あきいけ,やすひろ
+あきた,のりちか
+あきやま,むつみ
+あまがい,ひでふみ
+あまがた,たかし
+あまの,みほ
+あめみや,かつみ
+あんどう,かずひろ
+あんどう,たかゆき
+あんどう,だいご
+あんどう,しんご
+あんざい,まさひで
+あおき,まさとし
+あおき,あきふみ
+あおやぎ,あつと
+あおやま,ゆうこ
+あらい,まさし
+あらい,ともなり
+あらき,としみつ
+あらや,ひろあき
+ありま,しんいち
+ありたけ,せいじ
+あさだ,たけお
+あさひ,ゆうじ
+あさの,じゅんこ
+あしだ,さとし
+あしかわ,さとし
+ばば,やすゆき
+ばば,たかはる
+ばば,けんじ
+ちば,じゅんこ
+ごとう,まさひこ
+ちょう,えいじ
+だいど,ゆうこ
+どあい,こうじ
+どい,ともひろ
+ほそい,たくじ
+どい,いさお
+どい,けんいち
+えがしら,ひでたか
+えぐち,やすひろ
+えばら,つとむ
+えんど,しんいち
+えんど,さとし
+あまり,けんじ
+えのもと,きよみ
+えのもと,まさみ
+えのもと,あきら
+えのもと,ちから
+えざき,かずひと
+ふじはら,まさはる
+ふじい,たかし
+ふじい,さつき
+ひるかわ,けん
+ふじい,まさひこ
+ふじさわ,はるみ
+ふじさわ,ひろゆき
+ひご,かつゆき
+ふじた,つよし
+ふじた,たかし
+ふじわら,とおる
+ふかみ,やすゆき
+ふかざわ,たけし
+はせがわ,ようすけ
+ふくだ,じゅんこ
+ふくもと,みつお
+ふくむろ,たかし
+ふくろ,やすこ
+ふくし,ひろみ
+ふくしま,たかみ
+ふくしま,しんいち
+はぎわら,としお
+ふくしま,あきら
+ふなき,なおき
+ふなくぼ,ふみお
+はらだ,みのる
+ふるはた,もとふみ
+ふるかわ,まちこ
+ふるもと,たかし
+ふるや,ともや
+ふしみ,ひろみ
+ごうだ,みきお
+いりえ,しんじ
+いしはら,あきら
+いちかわ,まさゆき
+いば,まみ
+いわさき,さえこ
+いのうえ,あやこ
+いいもり,まさひろ
+いはら,せいじ
+いわむら,しょうた
+いながき,ゆきお
+いしじま,かずひろ
+いとう,しろう
+ごんどう,しゅうじ
+ごとう,すみれ
+いしかわ,まさひこ
+いとう,まさのぶ
+いせき,りこ
+ごとう,ひろゆき
+はだ,ひであき
+はぎわら,みわこ
+はぎわら,ともこ
+はいじま,あいこ
+はまだ,ひろし
+はまの,ひろつぐ
+はまおか,こすけ
+はなど,みのる
+はなた,てつや
+はら,ともひこ
+はら,ゆうじ
+はら,たけし
+はら,きょうこ
+はらだ,しん
+はらだ,たけし
+はらだ,あきひと
+すずき,たけろ
+はらが,たつや
+はらみ,けんたろう
+はらやま,のぶひこ
+はらぞの,のぶひろ
+はせべ,たくじ
+かねこ,ともあき
+つちだ,よういち
+はしもと,りえ
+はしもと,ふみひろ
+はしもと,かなえ
+はしもと,さとし
+はしもと,たかあき
+はしもと,ひでき
+はしもと,ひでき
+はしもと,よしひこ
+はた,けいこ
+はっとり,ひであき
+はっとり,まこと
+はっとり,せいじ
+はやかわ,きよし
+はやかわ,ひではる
+はやさか,よしかず
+はやさき,せいご
+はやし,としひこ
+はやし,たかよし
+はやし,たかなり
+はやし,やすき
+はやし,あきら
+はやしだ,けんぞう
+ひび,かずのぶ
+ひがし,やすひろ
+ひがし,かずお
+ひぐち,こういちろう
+ひじかた,けんじ
+ひじや,よしお
+ひなが,たけし
+ひらかわ,ひであき
+ひらの,ひろこ
+ひらの,いたる
+ひらの,ただお
+ひらお,たかひと
+ひらしま,なおき
+ひらやま,としろう
+ひらやす,ひとし
+ひりき,けんいちろ
+ひろまさ,わたる
+ひろもと,しんじ
+ひろおか,まなぶ
+ひろせ,ゆみこ
+ひろせ,まつたろう
+うめだ,りょういち
+ほんだ,さなえ
+ほんど,たけし
+ほりもと,やすゆき
+ほりの,かずしげ
+ほりうち,たかね
+ほさか,あきこ
+ほしの,まこと
+ほしやま,みぎふみ
+ほそかわ,てつや
+ほそかわ,よしひろ
+ほそかわ,しげお
+ほそや,ひろし
+いばらき,のぶお
+いちはら,ひさみつ
+いちはら,たかし
+いちはら,のぶこ
+いちかわ,けんいち
+いちのせ,さとし
+いだ,たけし
+いでぐち,かずひと
+いど,まさし
+いがらし,かつのぶ
+いがらし,ゆきひこ
+いがらし,ひろし
+いいだ,ひろお
+いいだ,かつとし
+いいじま,こうじ
+いけだ,りょう
+いけだ,ともみ
+いけだ,ともみ
+いけだ,ようこ
+いまい,こうき
+いまいずみ,けいこ
+いまいずみ,みわ
+いまむら,おさむ
+いまむら,みのる
+いもん,かずゆき
+いなだ,ますみ
+いながき,かずや
+いながき,みつや
+いなむら,たかし
+いなむら,とものり
+いの,せいいちろう
+いのかわ,あすこ
+いのまた,かずひと
+いのうえ,ひろかず
+いのうえ,さとし
+いのうえ,しほ
+いのうえ,やすひろ
+いのうえ,ゆうじ
+いのうえ,ゆうた
+いのうえ,こういちろう
+いぬい,しんいちろう
+いぬしま,まゆみ
+いりえ,まさのり
+いさか,しげる
+いしば,ちひろ
+いしばし,だいすけ
+いしばし,ひでき
+いしだ,ひろみつ
+いしだ,ひろし
+いしだ,かつひろ
+いしだ,けいいち
+いしがみ,こういち
+いしぐろ,こうじ
+いしはら,まりこ
+いしい,まさひろ
+いしい,なおみ
+いしい,のぼる
+いしい,せつこ
+いしい,ただし
+いしい,たかはる
+いしかわ,としお
+いしまる,つよし
+かわず,よういち
+いしずか,ゆきお
+いたや,のりひさ
+いいだ,あきひろ
+いとう,ひろみち
+いとう,ひろし
+いとう,いくお
+いとう,かずや
+いとう,しょうこ
+いとう,かずひろ
+いとう,じゅん
+いとう,まこと
+いとう,おさむ
+いとう,よしまさ
+いとう,まさゆき
+いとう,まさみ
+いとう,ひろあき
+いとう,たまき
+いとう,きよたか
+いとう,まさふみ
+いとう,ひろかず
+いとう,ゆきお
+いとう,えいじ
+いとう,みほこ
+いわい,たかゆき
+いわい,かずしげ
+いわみ,きよし
+いわむら,よしたか
+いわなが,なおこ
+いわお,かずあき
+いわさき,りゅうこ
+いわた,きよこ
+いわた,みつひろ
+いわた,しんじ
+いずみ,のぞむ
+じんば,つねのり
+のうち,りえ
+らく,よしのり
+かがみ,ひろし
+かがわ,けいた
+かげやま,たまき
+かい,じゅん
+かじもと,たくや
+かじわら,せいじ
+くりはら,えいじ
+かきむら,じゅん
+かきのき,たかあき
+かきうち,ひろゆき
+かきざき,こうじ
+かこ,としひこ
+かめしま,だいすけ
+かみえす,えいいち
+かみくら,ひろし
+かみむら,こういちろう
+かみたき,まさじ
+かみよしかわ,まさゆき
+かん,たくや
+かない,としかず
+かんばやし,いちろう
+かんだ,よしひと
+かねこ,たかゆき
+かねこ,やすゆき
+かねた,たかし
+かのう,まゆみ
+かりの,ひろし
+かさみ,かなえ
+かさなみ,たかと
+かせ,まもる
+かすが,ひろし
+かすや,まさなり
+かたおか,のりこ
+かとう,なおこ
+かとう,ひろし
+かとう,まさゆき
+かとう,のりあき
+かとう,ただあき
+かとう,けんじ
+かとう,けんじ
+かとう,たかゆき
+かとう,あきひと
+かとう,じろう
+かつまた,くみ
+かつら,まさき
+かわべ,よしゆき
+かわだ,たけし
+かわぐち,ひでき
+さいとう,ひでたか
+かわぐち,いくこ
+かわはた,かおり
+かわかみ,かずよし
+かわかみ,けんいち
+やじま,みつよ
+かわもと,つよし
+かわむら,ひであき
+かわむら,ひろし
+かわむら,じゅんいち
+かわむら,まり
+かわの,まさひこ
+かわの,まさかつ
+かわさき,しげゆき
+かわせ,けんじ
+かわしま,としや
+かわしま,よしはる
+かわしま,ひでき
+かわしま,やすのぶ
+きだ,みのる
+きくち,かずや
+きくち,たかひで
+やまもと,やすひろ
+あきよし,やすひろ
+きくち,まもる
+きくち,たつや
+きくち,みつる
+きくち,あきこ
+きむら,ふみひこ
+きむら,まさひこ
+きむら,あきひこ
+きむら,あつし
+きむら,ひろし
+きむら,まさき
+きむら,みのる
+かとう,しょうじ
+きなせ,ゆうじ
+きね,まさこ
+きの,あき
+きの,かずひろ
+きのした,けいた
+きら,ようこ
+きしもと,とおる
+きたばたけ,あきお
+きたばたけ,たかひこ
+きたがわ,おさむ
+きたがわ,ちかこ
+きたむら,ひろあき
+たかはし,めぐみ
+きたやま,えいじ
+きよなり,ひろし
+こばやし,きよし
+こばやし,としひろ
+こばやし,あきこ
+こばやし,たかし
+こばやし,ひろし
+こばやし,ひろあき
+こばやし,なおき
+いとう,しんじ
+こんの,よういち
+こんの,たかみつ
+こんの,ひろし
+こんの,かずあき
+こいけ,ともふみ
+こじま,わたる
+こくしょう,まさる
+こまき,かずや
+まかべ,さぶろう
+こまつ,たけし
+こまつ,ひろえ
+こんど,しん
+こんど,たくみ
+こんど,まさゆき
+こしば,みき
+よこえ,やすのり
+こてがわ,まさのり
+こんの,かずあき
+こやま,れいこ
+こやま,もとくに
+こやま,ひろたか
+こざす,としのり
+くちいし,かずとし
+くぎみや,りゅうすけ
+くじらい,あつし
+くまのみど,ひろし
+くまざき,ともき
+くれまつ,たかひで
+くりき,まさゆき
+くりやま,としろう
+くりやま,ひろし
+くろべ,なおと
+くろさわ,ともあき
+くろさわ,やすゆき
+くりゅう,よしえ
+くさの,かつゆき
+くわはら,じゅん
+くずの,よしたか
+きゅうだ,たくや
+まぶち,けんいち
+まちた,まさき
+まえだ,よういち
+まえいえ,あきふみ
+まえかわ,ちあき
+ままだ,ひろし
+まなべ,ひろたか
+まなべ,かずお
+まるいち,まさゆき
+まるたに,たかひで
+まるやま,たかこ
+まさおか,たかゆき
+ますだ,たつみ
+ますだ,つよし
+ますだ,よしぶみ
+ますだ,ゆきこ
+ますだ,ひろかず
+まつばら,こうぞう
+まつだ,かつや
+まつだ,ひろゆき
+まつだいら,としふみ
+まつえだ,あゆみ
+まつい,ひでし
+まつい,ひろき
+まつもと,のぶお
+まつもと,せいいち
+まつもと,かずひろ
+まつもと,きよかず
+まつもと,きょうこ
+まつもと,よしき
+まつもと,なりあき
+まつもと,あきのり
+まつもと,けん
+まつもと,としかず
+まつもと,けん
+まつもと,だい
+なかむら,ひろゆき
+まつむら,くみ
+まつなが,けんじろう
+まつの,かずと
+まつお,りゅういち
+まつお,たかお
+まつおか,たけし
+まつおか,かずのり
+まつおか,ただあき
+まつおか,ひろし
+まつおか,あつし
+まつしま,きみお
+まつたに,あや
+まつやま,こうたろう
+みちもと,まゆみ
+みえき,たくろう
+みかみ,かずみ
+みかみ,よしたか
+みながわ,つよし
+みなかわ,しょうこ
+みしま,かずみ
+みしま,しのぶ
+みしま,ひろあき
+みたち,こうじ
+みつだ,なおき
+みつはし,じゅん
+みつい,ひろし
+みつもと,きよみ
+みうら,きょうじ
+みうら,まさひろ
+みやべ,あきら
+みやち,まさゆき
+みやじま,あきのり
+ばん,まなぶ
+みやもと,としあき
+よこえ,こうぞう
+みやさか,けいいち
+みやた,ひろゆき
+みやた,かずお
+みやうち,まさひろ
+うちやま,みきこ
+さかい,りょうすけ
+みやざわ,としあき
+みぞぶち,えいこ
+みぞぐち,あきら
+みぞぐち,いずみ
+みずもと,あつひこ
+みずの,まさよし
+みずの,まさゆき
+みずの,ゆうじ
+みずしま,ゆきお
+みずた,ゆたか
+みずたに,ひさと
+もぎ,かずのり
+もぎ,もゆる
+もぎ,ひろし
+ももせ,だいすけ
+もんま,ゆうじ
+もり,れいこ
+もり,けいすけ
+もり,けんいち
+もり,まさひろ
+もり,りか
+もり,つとむ
+もりもと,ゆきひろ
+もりの,ようすけ
+よしだ,なおふみ
+もりた,ひでのぶ
+もりた,かずひさ
+もりた,かつみ
+もりた,よしや
+もりた,しげお
+もりわき,たくお
+もろ,よしろう
+もたい,ひろし
+もとばやし,さとる
+もとはし,しげまさ
+もとやま,まさのり
+もとざわ,ゆうじ
+むかわ,いつこ
+むなかた,ふみこ
+むらかみ,ひろあき
+むらかみ,よしき
+むらかみ,ひろゆき
+むらかみ,やすこ
+むらかみ,あきひさ
+むらかわ,まさこ
+むらなか,まゆこ
+むらた,とものり
+むらた,ひろき
+むらやま,けんじ
+むらやま,ひろし
+むろはし,こうじ
+むとう,かおる
+むとう,あきこ
+なば,ひろゆき
+ながい,まさる
+ながい,なおあき
+ながの,かつや
+ながの,たまみ
+ながお,やすひろ
+やまもと,かずひろ
+ながおけ,さとし
+ながおさ,あきひろ
+ながしま,かつや
+ながしま,くみ
+ながた,みき
+おおば,さとし
+ながた,しんじ
+ながた,しょうへい
+ながたに,つよし
+ないとう,やすのり
+なかち,よしはる
+なかだ,よしゆき
+なかだい,ゆういち
+なかがわ,なおゆき
+なかがわ,よしゆき
+なかがわ,あつし
+なかがわ,ひろゆき
+なかはら,じゅん
+なかい,けいいち
+なかい,しの
+なかじま,たかし
+なかじま,こうじ
+なかむら,しゅうご
+なかむら,まさゆき
+きみひら,みか
+いとう,たかひさ
+なかむら,こうじ
+なかむら,たつや
+なかむら,かずゆき
+なかむら,はじめ
+なかむら,まさあき
+なかむら,ひろき
+なかむら,みき
+なかむら,ともお
+なかにし,いずる
+なかにし,たかひろ
+なかの,ゆうこ
+なかの,やすあき
+なかの,てつや
+なかの,かずのり
+なかの,あつし
+なかお,あきこ
+なかさく,しょうたつ
+なかせ,ひろたか
+なかた,くるみ
+なかた,ひろみ
+なかた,やすひろ
+なかたけ,たくお
+なかやま,ふみお
+なみき,けいし
+ななさわ,なみじ
+なんば,だいすけ
+なんもく,えみこ
+ねもと,なつこ
+ねもと,みつあき
+にい,よしこ
+にいで,ひでつぐ
+にいくら,ひでや
+にいずま,たいちろう
+にかみ,あきら
+にしばやし,まさひこ
+にしだ,よしや
+にしはら,しきこ
+にしはら,さとし
+にしかわ,たかひろ
+にしかぜ,かずのり
+にしみや,さとし
+にしむら,しんいち
+にしむら,きわむ
+にしやま,ひとし
+にしやま,もとあき
+にった,かつあき
+にわ,きよし
+とうごう,まなぶ
+にわ,かつや
+のぶはら,こうじ
+おがわ,ゆうこ
+のがみ,おさむ
+のがみ,じゅんいち
+のもと,みか
+のむら,まなぶ
+のむら,たかひろ
+のぞえ,はじめ
+ぬまた,てつ
+おだじま,えり
+おおがえり,とおる
+おがた,ひでき
+おがわ,しげる
+おがわ,たけお
+おおぎ,たけし
+おぎくぼ,ようじろう
+おご,ともき
+おぐら,ひろゆき
+おおば,ともひろ
+おおばやし,よりこ
+おおえ,よういち
+おおがま,こういち
+おはし,なおき
+おおいし,けんじ
+おおかわ,やすひこ
+おおきど,まさお
+おおくぼ,ひろゆき
+おおくぼ,ひろふみ
+おおくま,まこと
+おま,まもる
+おまえ,むつろう
+おまえ,たかし
+おおもり,ともひろ
+おおもり,みつよし
+おおもり,なおき
+おおもり,ひろき
+おおもり,まさやす
+おおもと,みつる
+おおにし,あいこ
+おおにし,けんじ
+おおにし,まさてる
+おの,あきら
+おおぬま,ひろき
+おおさか,りさ
+おおさわ,たかひろ
+おおさわ,すみこ
+おしま,たかし
+おしろ,しんいち
+おおた,あさこ
+おおた,あつお
+おおた,ひでゆき
+おおた,まさみ
+おおた,むねやす
+おおた,しんいちろう
+おおたに,やすひろ
+おおつ,ひろゆき
+おおつか,たかし
+おおつき,あきひろ
+おいかわ,みちお
+おか,よしひさ
+おか,ひでき
+おか,ふみこ
+おかだ,みき
+おかだ,やすし
+おかだ,ゆういち
+おかだ,さとる
+おかぐち,のぶひろ
+おかい,ゆたか
+おかまつ,たかひろ
+おかもと,よしあき
+おかもと,えいいち
+おかもと,ひでお
+おかもと,まさぶみ
+おかもと,まさひろ
+おかもと,みちはる
+おかもと,のりお
+おかの,ともひろ
+おかざき,ゆきと
+おきもと,えつこ
+おくの,よしたみ
+おくやま,やすお
+おおみ,しげる
+おおの,なおき
+おおの,ひろふみ
+おおの,ひろし
+おおのせ,じゅんこ
+おのざき,たかし
+おりえ,よしこ
+おざき,まさこ
+とくみや,てつや
+さいち,かおり
+さいとう,しんいち
+さいとう,ひとき
+さいとう,ひであき
+さいとう,ひろたか
+さいとう,ゆたか
+さいとう,やすひこ
+さいとう,たいし
+さいとう,かおる
+はかまだ,かよ
+さかぐち,こうじ
+さかい,まりこ
+さかきばら,たかお
+さかきもと,よしえ
+さかもと,えいじ
+さかもと,えり
+さかもと,ひでひろ
+さかもと,いずみ
+さかもと,けいいち
+みたに,けんいち
+さかうち,くにひこ
+さきもと,まさひこ
+さくま,みつる
+さくらい,もとのり
+さの,りきや
+さの,りゅういち
+さの,しゅうぞう
+ささだ,しゅんすけ
+ささはら,すすむ
+ささき,たかひと
+ささき,としひこ
+ささき,やすふみ
+とだに,つよし
+ささき,せいじ
+さたけ,つねのり
+さとう,やすひろ
+さとう,しんご
+さとう,ひさはる
+さとう,ゆういち
+さとう,よしあき
+さとう,たかかず
+さとう,りえこ
+さとう,とおる
+さとう,ゆういち
+さとう,はるお
+さとう,しんいちろう
+さとう,のぼる
+さとう,こうじ
+さとう,だいすけ
+さとう,あきら
+さとう,けいたろう
+さとう,ともこ
+さとう,じゅんじ
+さとう,ともき
+さわだ,けいたろう
+さわだ,まこ
+さわだ,みちよ
+いわた,まゆみ
+さわい,としひこ
+さわい,そういちろう
+さやの,いくや
+せき,たけし
+せきぐち,まさよし
+せきぐち,みか
+せきぐち,あきら
+せきね,あきひろ
+せきの,たかし
+せんな,としみつ
+せりざわ,ひろゆき
+せと,かつや
+しばた,こういち
+しばた,まさひで
+しばた,けいすけ
+しばたに,さとし
+しぶたに,きょうこ
+しが,さとる
+しげのぶ,かずよし
+しま,みきこ
+しまだ,れいじろう
+しまだ,さとこ
+しまむら,よしみつ
+しみず,たけかず
+しみず,さだみち
+しもばやし,きよし
+しもがわ,こうじ
+しもひごし,てつひさ
+しもいで,たいし
+しなだ,かつみ
+しねい,ゆか
+しんがい,ただし
+しのだ,こうじ
+しのはら,たかひろ
+しのざき,ともよし
+しおや,たくや
+しらはま,たろう
+しらいし,ゆういち
+しらいし,たかし
+したら,たけし
+しょうじ,ひろゆき
+しょうじ,しん
+ますやま,まさひで
+しゅとう,ゆみこ
+そえだ,ひでかず
+そね,ひでき
+そねだ,たくお
+そのべ,まさひろ
+そのべ,まさし
+そらの,みほ
+すだ,なおひろ
+すがい,のりゆき
+すがわら,せいま
+すぎもと,たかひろ
+すぎもと,たかまさ
+すぎうら,よしのり
+すぎやま,まさひろ
+すぎやま,ひでまさ
+すぎやま,れいこ
+すじゃく,たかやす
+すか,とおる
+すけがわ,ひろゆき
+すみなが,きみこ
+すみおか,ともや
+すなやま,けんいち
+すずき,まさや
+すずき,ひろし
+いしい,やすひこ
+すずき,しげる
+すずき,たかゆき
+すずき,ひでひろ
+やましろ,ひでき
+すずき,ひろし
+すずき,
+すずき,かつゆき
+すずき,かずのり
+すずき,こういち
+たばこ,くみこ
+たばた,まさき
+なかじま,てるゆき
+たばた,よしつぐ
+たちばな,としゆき
+たがみ,たいせい
+ままだ,けんじ
+たがわ,まこと
+たじま,もとひろ
+たかばやし,ゆき
+たかだ,ともよ
+たかだ,たかひろ
+たかぎ,えみ
+たかぎ,だいすけ
+たかはし,しんや
+たかはし,ゆきお
+たかはし,ひろき
+たかはし,ひろこ
+たかはし,いずる
+たかはし,まさき
+たかはし,みしょう
+わたなべ,まき
+たかはし,やすし
+たかはし,ゆたか
+たかはし,こうへい
+たかはし,まさふみ
+たかい,ひでき
+たかくら,けんすけ
+たかくら,しほ
+たかまち,かつのり
+たかまつ,あきよし
+まつなが,やすひろ
+たかもと,よしき
+たかむら,のぶかつ
+たかおか,ごう
+たかすぎ,はるこ
+たかや,ひであき
+たかやま,ひろゆき
+きたはら,けんいち
+たけだ,くにひで
+たけだ,まさひろ
+たけはな,まさかつ
+たけまつ,まさみ
+たけおか,みのる
+いしかわ,もとふみ
+たけした,なおき
+たけたに,のぶゆき
+たけうち,さとし
+たけうち,さとし
+たけやま,たけし
+たけざわ,きよじ
+たきざわ,つとむ
+たきざわ,ちから
+たまい,ともゆき
+たなはし,のぶゆき
+たなか,けんたろう
+たなか,こすけ
+たなか,ひろゆき
+たなか,ひろし
+たなか,けいこ
+たなか,もとき
+たなか,せいじ
+たなか,かずひと
+たなか,ゆうこ
+たなか,えいいち
+たなか,えいじ
+たなか,つねひろ
+たなか,まさひろ
+たなか,のりひろ
+たなか,かずなお
+たなか,のぼる
+いしだ,けんや
+たなか,かずお
+たにぐち,しげる
+たにぐち,けんいち
+たにい,ゆりこ
+たにむら,みちよ
+たにおか,ともこ
+たんの,ゆきお
+たぬま,まもる
+よこやま,わたる
+たしろ,あきら
+たしろ,けんいち
+たて,ひでと
+たうら,まこと
+たぞえ,ゆうこ
+たずけ,まこと
+てんも,かよこ
+てらだ,ちえこ
+てらもと,えいじ
+てらおか,けい
+てずか,ひろゆき
+とぐち,じゅんこ
+とうま,こういち
+とうま,ひろやす
+とおやま,かずゆき
+ときおか,たかしげ
+たにやま,ひであき
+みうら,そういち
+とくら,かずお
+とくやま,ひろや
+とみいし,くにひこ
+とみかわ,のりこ
+とみなが,あつし
+とみた,ふみえ
+とみた,もとよし
+おおもり,まさゆき
+ともた,ひでひこ
+ともの,けいじ
+とりかい,なおき
+とりうみ,よしのぶ
+とつか,あやこ
+とよだ,けいいち
+とよだ,みきひろ
+とよおか,たくのぶ
+つちだ,こうじ
+つだ,こういち
+つじたに,まさつぐ
+つかもと,よしてる
+つかもと,ひろあき
+つかわき,まさたか
+つるまき,ようこ
+いちばんがせ,ゆきこ
+さかい,みほこ
+うちだ,かずひろ
+かなおか,こうへい
+うちだ,たつや
+うちうみ,なおひこ
+うちやま,ふみたか
+うちやま,ゆき
+うだ,あつこ
+うだがわ,たろう
+おしま,あつこ
+うえだ,えいか
+うえだ,よしみつ
+うえはら,ひでゆき
+うえむら,まさき
+うえの,おさむ
+うえの,ひろのり
+うえすぎ,まさみ
+うえつき,たいち
+うかわ,まさひで
+うまずめ,しんや
+うめはら,としお
+うめむら,ひろふみ
+うめざわ,ひろし
+うの,ひろし
+うの,ひさや
+うらもと,けい
+うるま,まさふみ
+うしば,みのる
+ながた,りゅうた
+うしぐさ,としあき
+はせがわ,よしあき
+さかまき,ゆり
+うわべ,まさゆき
+わだ,あきこ
+わかお,けいじ
+わかお,れいこ
+わきた,ようこ
+いのまた,ひろみ
+わくい,まさや
+わしざわ,けいこ
+わしずか,こうじ
+わたべ,まさとし
+わたなべ,のりゆき
+わたなべ,かずひろ
+わたなべ,しげる
+わたなべ,たかお
+わたなべ,つよし
+わたなべ,ともゆき
+わたなべ,だいち
+わたなべ,ひでき
+わたなべ,ひろかず
+わたなべ,ひろみ
+とよた,ひとし
+わたり,けいこ
+とみやす,としひさ
+やえがき,よしあき
+やぎ,みよこ
+やぎ,よしまさ
+やぎぬま,だいすけ
+やく,あきと
+やまだ,かずひこ
+やまだ,まき
+やまだ,ようこ
+やまぎし,あつし
+やまぐち,こういち
+やまぐち,としゆき
+やまぐち,かおる
+やまぐち,あきら
+やまこし,だいすけ
+やまもと,まさひろ
+やまもと,けんじ
+やまもと,たけお
+やまもと,せいいち
+やまもと,しゅうじ
+たちばな,まさとし
+やまもと,じゅん
+やまもと,けんいち
+はらたに,ともこ
+やまなか,たかし
+やまね,よしふみ
+やました,あきひこ
+やました,ひろし
+やました,なおこ
+やまたに,たかし
+やまうち,ともこ
+やまざき,あきら
+やな,ひろあき
+やなべ,ひろき
+やながわ,りょう
+やなぎ,としあき
+やなぎだ,りゅういち
+やさか,かずひで
+やすだ,まさみつ
+やすふく,ゆたか
+やすかわ,きよかず
+よこさわ,たくや
+よこた,ひろし
+よこた,かずひろ
+はらだ,こすけ
+よこうち,まさひろ
+よこうち,しんすけ
+よこやま,まこと
+よこやま,かずのぶ
+よねだ,なおき
+よねの,なおみ
+かさはら,さとみ
+よしだ,ひでお
+よしだ,じゅん
+よしだ,ひろし
+よしだ,なおと
+よしだ,ひろし
+よしどめ,しずか
+よしはら,たかひろ
+よしい,さとる
+よしい,まこと
+よしかわ,しおり
+よしみ,たいき
+よしの,ふみお
+よしの,やすし
+よしの,ともこ
+よしおか,けんいち
+よしおか,こういちろう
+よしたけ,ただし
+よしざわ,としかつ
+ゆずはら,こうじ
+ぜんげ,かずたか
+ずし,みお
+ごみ,ひろき
+ごとう,ひろし
+いけだ,たけはる
+いま,まさひろ
+あべ,まなぶ
+かとう,しげる
+かわばた,しげる
+こばやし,ゆきひこ
+こんど,くにむね
+くぼ,まさひこ
+くらもち,ようこ
+まるやま,よしあき
+もりかく,ゆきお
+むらおか,ひろゆき
+ながしま,ようこ
+なか,としや
+なかはら,たくや
+なかむら,つよし
+なかせ,とみ
+なりた,ひさえ
+にしむら,えみこ
+のなか,ひでなお
+おがわ,よしお
+おぐら,とおる
+おおみ,まこと
+おかの,まさや
+しまだ,じゅんじ
+しみず,かずのしん
+しむら,ひでゆき
+たかはし,みつまさ
+たかまつ,けんいち
+うえだ,むつお
+うじ,ごう
+うつみ,しゅういち
+あべ,よういち
+こんど,たかし
+たかのうち,けんさく
+いのうえ,むねひろ
+なかはら,ひとし
+あだち,ゆたか
+なかの,ひろき
+あいば,のりあき
+あいば,たけし
+あいば,さとし
+あいだ,まさひろ
+あいはら,あつし
+あかいし,まさおみ
+あかいわ,よしひろ
+あかおぎ,としひで
+あきた,つよし
+あまの,なおこ
+あおき,ひろこ
+あおき,ゆきこ
+あおぬま,ひとし
+あおやぎ,えいじ
+あらき,あきら
+ありまち,としのぶ
+ありた,ひであき
+あさだ,てつや
+あさえだ,たかひろ
+あさはら,よしはる
+あさかわ,かずひこ
+あさもと,つとむ
+あさの,ゆたか
+あたぐち,ひろし
+あやき,はるこ
+ばば,しゅんすけ
+ばば,かおる
+ばば,ななこ
+ばん,たけし
+だいこく,みちよ
+だて,しげひこ
+さの,じゅんいち
+みつおか,しげき
+でんだ,かずひこ
+どい,えみ
+えんど,ともひこ
+えんど,よういちろう
+えざわ,なりひで
+ふじえ,たけふみ
+ふじい,かずひろ
+ふじい,まさあき
+ふじまき,まさかつ
+ふじもと,みわ
+ふじもと,みきお
+ふじむろ,こうじ
+もろずみ,かんじ
+ふじさわ,けんじ
+ふじた,ひろゆき
+ふかせ,たつや
+ふくだ,しせい
+ふくどめ,たかし
+ふくい,ひさし
+ふくなが,ふみひさ
+ふくしま,ひでお
+ふくざわ,まりか
+ふるばやし,あきら
+ふるかわ,ひでき
+ふるかわ,あけみ
+ごう,はな
+ごまる,すすむ
+ごとう,しょう
+ごとう,たつや
+ごとう,ちずか
+のもと,かおる
+はぎわら,りゅうた
+はいやま,きょうこ
+はま,かずみち
+はまち,しゅういち
+はまだ,なおひさ
+はまたに,しげお
+はない,やすひと
+はなた,ひらく
+はねじ,ひろこ
+はんざわ,まさひこ
+はら,みほ
+はら,しんじ
+はらだ,かずひで
+はらだ,きよし
+はせがわ,ゆたか
+はせがわ,なおこ
+はせがわ,てつや
+はしぐち,まさよし
+はしもと,やすゆき
+ごとう,けい
+かじわら,よしこ
+はすみ,つぐのり
+かたやなぎ,えいいち
+はたけやま,しんいち
+むらい,みつゆき
+はたに,りゅういち
+はっとり,やすのぶ
+はっとり,たかゆき
+はやし,たかゆき
+おおすみ,まさこ
+はやし,かずなり
+はやし,よしのぶ
+はやしだ,さき
+ひが,たけお
+ひがし,りゅうすけ
+ひがしだ,しゅういち
+とよだ,ゆういちろ
+ひの,たけひこ
+ひら,てつや
+ひらもと,じゅんこ
+ひらお,まさと
+ひらお,まさゆき
+ひらた,なおみ
+ひらやま,たけし
+ひろい,たかし
+ひろかわ,のりかず
+ひろかわ,よたろう
+ひろます,かずゆき
+ひろせ,みつる
+ひろせ,たかお
+ひしや,さとし
+ほうしょう,あきこ
+ほんだ,みほこ
+はやし,のぞむ
+ほんま,たけし
+ほりぐち,てるお
+ほりい,ひろみ
+ほし,あきひこ
+ほそい,かつや
+ほそみ,やすお
+ほった,まさひで
+ふくろい,けんじ
+ふるや,あきひと
+いぶか,そういち
+いちば,たかし
+いちはら,ひろし
+いちかわ,ひろし
+いちむら,じゅんいちろ
+いちのせき,としひろ
+いいだ,としや
+いいだ,じゅんこ
+いいじま,ようこ
+しのはら,はじめ
+いけだ,りえ
+いけだ,ゆき
+いけだ,ゆたか
+いけだ,ようこ
+いけざわ,かずたか
+いまい,まゆみ
+いまい,けいた
+いまい,くにひこ
+いまき,みのる
+いまむら,けんすけ
+いもと,しょういち
+あべ,よしやす
+いなだ,ゆきこ
+いのうえ,ともひろ
+いのうえ,たかし
+いのうえ,まさひこ
+いのうえ,かずお
+いりえ,よしひこ
+つるおか,ひとし
+おおはし,ひさとし
+いしだ,ゆうじ
+いしだ,けんじ
+いしだ,こうじ
+いしだ,はじめ
+いしぐろ,よしき
+いしはら,しげお
+いしはら,じゅんこ
+いしい,みつひこ
+いしかわ,まさのり
+いしかわ,あきら
+いしわた,まさのり
+いとう,たかし
+いとう,あきこ
+いとやま,としお
+いつき,かずひろ
+いわき,こうたろう
+いわさき,たけし
+いずつ,ゆうじ
+じぶ,えみこ
+かどい,てるやす
+あだち,けんじ
+かい,たかゆき
+かいせ,ひろあき
+かいずか,ひろこ
+かじわら,ひろし
+かき,かつとし
+かきみ,こうじ
+すぎた,れいき
+かくたに,やすこ
+かみばやし,かつひこ
+かみがき,のりひで
+かみや,さとし
+かもだ,こういち
+かもと,たもつ
+かんばやし,もとひろ
+かねこ,しんご
+かねこ,みつや
+かねこ,くにひこ
+かねこ,みつお
+かにさわ,たつや
+かる,たかゆき
+かしわぎ,てつや
+かすみ,よういちろう
+かたぎり,なおゆき
+かとう,みつひろ
+かとう,あつし
+かとう,ゆうこ
+かとう,のぶお
+かとう,たつろう
+たぐち,じゅんこ
+かとう,けんじ
+かとう,こう
+かとう,しんいち
+かつら,あきら
+そご,けん
+かわひと,まこと
+かわい,りえこ
+かわかみ,こうじ
+かわみ,しげる
+かわむら,しんじ
+かわむら,てるき
+かわさき,ひろし
+かわさき,ともかず
+かわうち,まさあき
+かつき,あきとも
+きだ,へいじ
+きどころ,ひろし
+もり,けんじ
+きくち,まこと
+きくがわ,みえ
+きむら,みつひろ
+きむら,さとる
+きむら,たけし
+きむら,たくみ
+きのした,とよき
+きのした,よしあき
+きのした,よしはる
+きのした,ゆかり
+きしだ,ゆきこ
+きしかわ,まさひこ
+きた,としお
+きたぐち,けいすけ
+あまの,みちよ
+きたむら,まなぶ
+きたやま,ちひろ
+こばやし,なおと
+こばやし,もとのり
+こばやし,ひろゆき
+こばやし,やすてる
+こばやし,ともあき
+こばやし,じゅんじ
+あめした,なおき
+こばやし,こういち
+こばやし,ひろみ
+こばやし,けんじ
+こばやし,きよたか
+こばやし,まゆみ
+こばやし,だいすけ
+こばやし,たかひろ
+おだ,まさひこ
+こぼり,ひでみ
+こだいら,のぶひろ
+こだま,せいじ
+かわぐち,あつし
+こだて,みつる
+こが,のりゆき
+こが,あきら
+こがねまる,まさみ
+こはら,ともなり
+こうだ,けんいち
+こんの,まなぶ
+こざい,こういち
+こいけ,あきお
+こいずみ,まさお
+こじま,やすろ
+こじま,けん
+こまつ,たかし
+こもり,よしたか
+こんど,とものり
+こんど,いさむ
+こんた,けんいち
+こたか,みつのり
+こたけ,まさき
+こやま,とうろく
+くぼ,ひろし
+くぼき,いくこ
+くぼた,よういち
+くが,たつじ
+くまがい,やすなり
+くにもり,よういち
+くらもと,じゅん
+くらさわ,あつし
+くらしな,かつひと
+くらた,さとし
+くりもと,たけお
+くりた,よしまさ
+くろだ,としかず
+くろだ,ひであき
+くろかわ,しんご
+くろき,つよし
+くろさき,りょういち
+くろさわ,ひろゆき
+くりゅう,けんじ
+くわた,まさひこ
+くずみ,たかひろ
+まぶち,たくみ
+まえだ,やすひろ
+まえだ,けいし
+まえがわ,あきひこ
+まえかわ,やすとし
+まきお,せいいち
+まめはら,あきひろ
+まさだ,ひろゆき
+ますだ,ようすけ
+ますだ,ひろし
+ますだ,たかし
+ますだ,ともこ
+ますやま,りつこ
+まつだ,むつみ
+まつだ,なおみ
+まつえだ,つよし
+まつい,たかまさ
+まつもと,けんたろう
+まつもと,けいじ
+まつもと,せいいち
+まつもと,ゆういち
+まつもと,しゅういち
+まつもと,ようたろう
+まつなが,まさゆき
+まつの,やすひこ
+まつの,しんいち
+まつおか,みちこ
+まゆみ,あきら
+めかた,ひろき
+めら,こうじ
+みたに,たろう
+みたに,みちひと
+みと,ゆみこ
+みやがみ,しげひさ
+いおき,まさあき
+みやもと,あきひろ
+みやむら,ともゆき
+みやの,たかあき
+みやうち,まさはる
+みやざき,まさかつ
+もちずき,ゆき
+ももい,ひでまさ
+もり,ゆか
+もり,くみこ
+もりもと,よういち
+もりもと,むつこ
+もりおか,けんじ
+もりさわ,ともひろ
+もりた,かずよし
+もりた,ひろのぶ
+もりた,あきひこ
+もりた,しんや
+もりやま,たかし
+もりやま,たつひこ
+もてぎ,とおる
+むらかみ,まさあき
+あさの,けんご
+あゆかわ,さとし
+むらお,だいすけ
+むらおか,しげる
+むらた,ともかず
+むしあけ,えみこ
+むた,ひさし
+なべい,まさひろ
+ながい,こういち
+ながい,まさこ
+ながみね,さゆり
+ながさわ,ただし
+ながた,てつお
+ながやま,てつや
+なぐら,ゆみこ
+ないとう,ひろし
+なかがわ,りゅうじ
+なかがわ,ゆみこ
+なかがわ,やすし
+なかがわ,まさひろ
+なかはら,たかこ
+なかい,しげる
+なかい,たかひろ
+なかじま,とおる
+なかじま,ゆみこ
+なかじま,かつや
+さわだ,みえこ
+なかむら,あきのぶ
+ばんば,てつや
+なかむら,ひでひと
+なかむら,こういち
+なかむら,まさのり
+なかむら,かずお
+なかむら,まり
+なかむら,たけし
+なかむら,あきひろ
+なかの,ふみこ
+なかの,ひろかず
+なかお,のぶゆき
+なかしま,やすひろ
+なかた,こういち
+なかた,あきこ
+なかやま,なおやす
+なかやま,ひろふみ
+なかやま,あきひろ
+なかやま,けいこ
+なかざわ,かつや
+なかざわ,けいすけ
+ながおか,ゆたか
+ななしゃ,よしひろ
+なりた,つよし
+なりた,まこと
+なす,たけし
+なすた,ひろし
+にし,かねのぶ
+にしだ,のぶゆき
+にしむら,さちお
+まさだ,たけひこ
+にしむら,ともこ
+にしむら,まさゆき
+にしお,よしただ
+にしやま,みなこ
+にった,かおり
+のがみ,やすひろ
+のなか,たかひろ
+のせ,ひでお
+のたべ,しんご
+のと,じゅんいち
+のて,ひろき
+ぬくい,まさひろ
+おち,あきひこ
+おちあい,としゆき
+おだ,よしかず
+おがさわら,ゆうじ
+おがわ,ようじ
+おがわ,こうじ
+おがわ,まさひこ
+おがわ,まさや
+おがわ,なおたけ
+おがわ,ともみ
+おぎの,まこと
+おおば,まさひで
+たきみや,ゆきお
+おおはし,ただゆき
+おおはし,たくみん
+おおい,ちさと
+おおかわ,えみ
+おおもり,じゅんか
+おむら,まゆ
+おなかはら,たけつぐ
+おおにし,よしのり
+おの,あきこ
+おおおか,たかし
+おしま,のぶ
+おしま,けんいち
+いけまつ,たかこ
+おおた,たけし
+おおた,たかし
+おおた,さちこ
+おおた,たみこ
+ふくだ,みえ
+おぜき,けいいち
+おいだ,ひとし
+おいじ,くにひろ
+おかだ,しんじ
+すぎもと,たかゆき
+おかざき,やすひろ
+おかざき,やすし
+おかざわ,ひとし
+おくだ,てつや
+おくだ,まさき
+おくむら,しげる
+おくむら,ひでひと
+おくの,こうたろう
+おくやま,あきひろ
+おの,なおみ
+おおぬき,ひでのり
+おおはし,としお
+とおや,まさひろ
+おとぐろ,のぶゆき
+さいごう,たけひろ
+さいとう,よしたろう
+さいとう,あきひさ
+さいとう,ふみひこ
+さいとう,ひろき
+さいとう,ひろし
+さいとう,じゅん
+さいとう,かんじ
+さかえだに,みか
+さかい,のぶやす
+さかい,とくじろう
+さかた,つよし
+さかた,かずひこ
+さくま,たかひろ
+さくらばやし,あつし
+さくらい,まつお
+さくた,よしあき
+ささき,まさかず
+ささき,あきら
+ささき,さちこ
+ささき,よしゆき
+ささめ,よういち
+さとう,かずのり
+さとう,まさひこ
+さとう,よしひろ
+さとう,よしろう
+さとう,はじめ
+さとう,ひろみ
+さとう,ひろし
+さとう,こうじ
+さとう,しょうじ
+さとう,やえ
+さとう,くみこ
+さとう,ひろやす
+さとう,りえ
+さわだ,たかね
+さわはし,たつゆき
+さわの,かずひろ
+せぐち,しゅうへい
+せき,ともこ
+せきぐち,よしひろ
+せきぐち,さとし
+しば,かおり
+しばた,あやこ
+しばた,まさはる
+しぶや,たかし
+しまだ,しゅうじ
+しみず,かつゆき
+いしかわ,たかゆき
+しみず,ともひろ
+しみず,かつゆき
+しみず,けんじ
+しみず,けんたろう
+ふじえだ,こういちろう
+しもやまだ,しんいち
+しながわ,ともひで
+しんや,みつのり
+しおみ,しんじ
+しおつ,かつひこ
+せきぐち,とおる
+つのだ,たかし
+しらさか,あつお
+しろした,ひろゆき
+したら,ひさし
+しょう,じゅんいち
+すがわら,みほ
+すがわら,さとし
+すぎもと,しょういち
+すぎた,ともかず
+すぎた,まさより
+すぎた,かつひこ
+すぎうら,さとこ
+すぎうら,とよひさ
+すぎやま,みずほ
+いけぞえ,まさとし
+すぎやま,ひろあき
+すか,ともゆき
+すけがわ,のぶよし
+すみのうえ,ひでき
+すみよし,たねかず
+すみよし,としみつ
+すなみ,ひろゆき
+すずき,やちよ
+すずき,まもる
+すずき,あきひろ
+すずき,あきら
+すずき,ひろあき
+すずき,いっぺい
+すずき,まさと
+すずき,のぶあき
+しょうじ,しず
+しょう,しょうたろう
+たばた,そういちろう
+ただ,としお
+たどころ,ひでゆき
+たがみ,こうじ
+たぐち,たかし
+たぐち,ひろあき
+たい,まさてる
+たいら,あつし
+たいさ,みつひろ
+たじま,きよし
+たかだ,ただなお
+たかだ,えつろう
+たかぎ,てつろう
+たかはし,あつや
+たかはし,ひろし
+たかはし,とおる
+たかはし,なおき
+たかはし,さとし
+たかはし,ゆうじ
+たかはし,としお
+たかはし,ゆうすけ
+たかはし,なおき
+たかはし,よしふみ
+たかい,しのぶ
+たかの,かんこ
+たかしま,なおや
+たかやま,ひでつぐ
+たけだ,かずよし
+たけいち,けいすけ
+たけまさ,けんいち
+たけむら,しほ
+たけむら,しゅんすけ
+たけなか,なおと
+たけした,しょうぞう
+たけうち,あつと
+たけうち,ひとし
+たけうち,えいいちろう
+たきかわ,あつし
+たききた,たかし
+たきざわ,ひでと
+たこ,よしき
+たかの,もとゆき
+たまがわ,ひろゆき
+たまき,おさむ
+たむら,かずたか
+たなべ,ひろのぶ
+たなべ,ふみお
+たなか,きょうへい
+たなか,きょうこ
+たなか,みほ
+たなか,よしひさ
+たなか,ようこ
+たなか,まさよし
+たに,かずなり
+たにぐち,のぶひろ
+たにしょう,しんご
+たてやま,よしふみ
+たつみ,ますみ
+たうら,たかとし
+たざわ,ともゆき
+たずけ,せいいち
+てらだ,けいこ
+とうま,かずひろ
+とおやま,かずひろ
+とめおく,あきお
+とみいえ,はやと
+ふたつぎ,ひろし
+ともとし,けんじ
+とねがわ,あきこ
+おくむら,のりひこ
+とししげ,ひろし
+とよだ,かずなり
+とよなか,まさや
+つばき,てつや
+つちもと,ふみお
+つだ,さとし
+つだ,かよ
+つだ,としえ
+つじい,ともたか
+つじむら,のりこ
+つかはら,としろう
+つのだ,しょうじ
+つるぎ,はるひこ
+つるた,てるひこ
+つしま,きぬよ
+つつい,ひろゆき
+つちだ,かつゆき
+うちだ,さとる
+うちだ,たくじ
+うちくら,たけし
+うちたに,かつこ
+うえだ,さきこ
+うえだ,ちえ
+うえだ,がく
+うえだ,あきのり
+うえむら,ひろこ
+うえの,ひろし
+うえつき,まき
+いけ,まさる
+うめだ,みほ
+うめむら,なつこ
+うのき,のぶひこ
+うらした,ともこ
+うらた,ともゆき
+うしお,よしお
+うたがわ,てつや
+わだ,ともこ
+わだ,あきひと
+わだ,ひろたつ
+わだ,まさひろ
+わがつま,しょういち
+わかまつ,ゆうじ
+わきた,ひろあき
+わこ,ひろかず
+わりかた,なおゆき
+わしず,しょう
+わたなべ,しゅんじ
+わたなべ,よしゆき
+わたなべ,としお
+わたなべ,がく
+わたなべ,ひろふみ
+おむら,ひろひで
+わたなべ,こうせい
+わたなべ,なおこ
+わたなべ,りゅういち
+わたなべ,てつろう
+やぎ,ともみ
+やぎ,ゆうこ
+やまだ,たかと
+やまだ,のりとし
+やまだ,ひでふみ
+やまだ,しげお
+やまだ,たけひろ
+やまふく,ひでお
+やまぐち,まりこ
+やまぐち,ようじ
+やまぐち,ようこ
+やまぐち,ひろかず
+やまじ,とおる
+やまかわ,こうじ
+やまもと,たかのり
+やまもと,けんいち
+やまもと,みつぞう
+やまもと,ゆきこ
+やまもと,ひろやす
+やまもと,こうじ
+やまもと,まさき
+やまもと,ゆうじ
+やまもと,ゆたか
+やまな,せいいちろう
+やまさき,かつみ
+やました,のりとし
+やました,とおる
+やまざき,ひろし
+やなぎ,りょう
+やの,けんたろう
+やしろ,たけし
+やすい,ふとし
+やすむろ,たかし
+やすうじ,よしゆき
+よこえ,ひでのり
+よこい,まや
+よこみぞ,きよしげ
+よこやま,まさひこ
+よねざわ,かずひこ
+よしだ,けんや
+よしだ,のぶひろ
+よしだ,かつや
+よしだ,かずあき
+よしだ,ともみ
+よしい,しげと
+よしむら,てるかず
+よしやま,えいじ
+よしざわ,さちこ
+ふじしま,けんたろう
+ゆあさ,けい
+ゆき,せつこ
+ゆき,あきよ
+ゆい,だいすけ
+あだち,なおたけ
+ばん,たかし
+ふるい,よしのり
+はせがわ,はじめ
+ひらかわ,まなぶ
+いとう,としひこ
+いわさき,りょうじ
+かとう,けんじ
+かわはら,よしみつ
+まえはら,おさむ
+まつたに,しげお
+もりいち,えいじろう
+にしうち,のぶゆき
+ふじまき,たいぞう
+おおはら,たかし
+さなだ,ひであき
+そね,つとむ
+とのむら,よしゆき
+しみず,けい
+みしま,まりこ
+ふじた,たろう
+ふじた,ひでき
+ふじた,よう
+ふじわら,こうじろう
+ふじゅう,しんいち
+ふかだ,たくや
+ふくだ,ゆたか
+ふくひさ,なおたか
+ふくざと,あや
+ふくざわ,たかし
+ふるさわ,きはる
+はがわ,たかし
+はぎ,ひろたか
+はらだ,みつる
+はらだ,のぶひろ
+はらだ,まき
+はらまき,なおこ
+はせがわ,りえ
+はせがわ,ひであき
+はしお,ゆか
+はすみ,ひろし
+はすみ,けんいちろ
+はっとり,よりこ
+いしかわ,ぶんぺい
+はやし,たかこ
+ひらの,たくや
+ひらの,かずあき
+ひらの,としあき
+ひろべ,ひでき
+しのだ,けんじ
+ひさだ,たかゆき
+ほ,たけし
+ほんごう,てるひこ
+ほし,みちこ
+ほしの,まさき
+ほそかわ,ひろかず
+ほその,ゆみ
+かとう,よしろう
+いぎ,ようこ
+いけだ,としゆき
+いくろ,のりひろ
+いまい,かずよし
+いなだ,こうへい
+いのぐち,たかゆき
+いしぐろ,つぐかず
+いしかわ,ひろき
+いしかわ,けんじ
+いしざき,ゆかり
+いしぜき,よしと
+いとう,てつや
+いとう,まさよし
+いとう,なおき
+いとう,よしみ
+いまがわ,けい
+いざわ,こうじ
+いずみ,しょうじ
+いずみだて,のりとし
+かぶらぎ,かおり
+かみやま,とおる
+かなやま,こうじ
+かなざわ,じろう
+かんばら,かつよし
+かんだ,ゆうこ
+かんだ,みすまる
+かねこ,なりとも
+かしむら,ひろし
+かたぎり,しんすけ
+かとう,ひろのり
+かとう,のぶひさ
+かわだ,はるみ
+かわすみ,ようこ
+きど,しゅんいち
+きくち,のぶひろ
+きもと,たくや
+きむら,けんた
+きんど,みちはる
+きたむら,みほ
+きたの,さだお
+きたわたせ,すすむ
+きった,やすこ
+きやま,せいじ
+きよた,ひろゆき
+こばやし,じゅんじ
+こばやし,ようこ
+こが,あつや
+こはら,たかゆき
+こじな,けん
+こんの,けいご
+こずか,まさき
+こいで,しんじ
+こまつ,りゅうすけ
+こみなと,しゅうじ
+こもり,さとこ
+こんど,ひろひこ
+こにし,のりこ
+くぼやま,ただあき
+くまがい,りょうじ
+くまた,たかこ
+くりはら,たけし
+くりはら,けいこ
+くりた,さとし
+くさの,ひろふみ
+くしだ,あきひこ
+まえだ,ゆき
+まき,けいすけ
+まきた,しんじ
+まるやま,つねお
+ますだ,だいち
+まつばら,ちから
+まつばら,ひでとし
+まつい,けいこ
+まつもと,まさゆき
+まつむら,しんたろう
+まつお,かずひろ
+みかみ,みつお
+みき,たかあき
+みのうら,せいじ
+みしま,けんいち
+みつなが,よしゆき
+みうら,まさのり
+みわ,たかのぶ
+みやお,やすはる
+みやた,かなう
+みずたに,かずひこ
+みずたに,ひでのぶ
+もちずき,みつる
+もちずき,くみこ
+もちずき,のぶゆき
+もぎ,ひろし
+もり,さとる
+もり,ただひこ
+もり,ただゆき
+もり,ともひさ
+もり,としき
+もりやま,としお
+もろおか,ゆき
+もとば,だいさく
+むねと,かつまさ
+むらい,よしこ
+むらおか,けん
+むろい,ひでひろ
+ながふじ,きみひと
+ながい,あきら
+ないとう,ゆきこ
+ないとう,たろう
+なかがわ,みのる
+なかはら,みやこ
+なかじま,ゆたか
+なかじま,まさひこ
+なかむら,たけし
+なかむら,ひろし
+なかむら,あや
+なかむら,あきら
+なかむら,あきら
+なかむら,あつし
+なかむら,ひさと
+やまだ,たかし
+なかお,えいじ
+なかつかさ,きよし
+なかやま,まり
+なむら,むねゆき
+なすの,なおき
+にいぜき,としはる
+にしかわ,こうぞう
+にしきおり,よしあき
+にしざわ,かつのり
+のあき,ようこ
+のだ,けんたろう
+のだ,ゆうこ
+のぐち,ひさし
+のむら,ひでき
+おちあい,こすけ
+もり,まりこ
+おがさわら,みつひさ
+おがさわら,たつし
+おがわ,りょうこ
+おがわ,たかひろ
+おがわ,やすひさ
+おぐら,ふみのり
+おぐら,まさき
+おおいし,ひろや
+おおかわ,としあき
+おおかわ,じゅんこ
+おかぜ,なおき
+おき,てつや
+おむら,あつし
+おおすみ,まさひろ
+おおた,ふみひこ
+おおたけ,てつじ
+おおたに,けん
+おおやま,けんじ
+おぜき,ひろし
+おかもと,じゅん
+おかむら,こうしん
+おかむら,まもる
+おくむら,まなみ
+おんだ,のりひこ
+おのでら,のりゆき
+おやべ,たかのり
+さが,としあき
+さいとう,ゆうこ
+さかい,さなえ
+いぎ,あきのり
+さかもと,ひさね
+さかもと,よしひろ
+さかつぎ,かずお
+さかうえ,けんじ
+さくま,まりこ
+さくら,えいき
+さなだ,よしひろ
+ささき,たけお
+ささき,なおや
+さとう,かつゆき
+さとう,たかひろ
+さとう,としあき
+さとう,しゅういち
+さとう,ひでひさ
+さとう,かつひろ
+さとう,きょうこ
+さとう,やすひと
+さとう,かずひで
+さとう,さとみ
+せいけ,まさのり
+せき,よういち
+せき,てつや
+せき,てつ
+せきぐち,たけし
+せた,としお
+しんがい,あきこ
+しばた,よしこ
+しばた,ゆきのり
+しぶき,じろう
+しげとみ,かずみつ
+しが,ひろし
+しいば,みか
+しまだ,いちろう
+しまかわ,しげる
+しみず,すすむ
+しみず,たかつな
+しみず,おさむ
+しみず,たかし
+しもむら,たかし
+しもむら,あきら
+しおじり,ひろし
+しおざわ,あやこ
+しらい,ゆうこ
+しらかわ,ふみえ
+そまん,じん
+そうや,まさと
+そのだ,まゆみ
+すだ,ともはる
+すがの,けんいち
+すがぬま,さとし
+すがわ,せいいち
+すぎうら,きょうすけ
+すぎやま,ともひろ
+すずき,けん
+すずき,こうじ
+すずき,あつし
+すずき,しんいちろう
+しょうじ,てつや
+たぐち,かつや
+たいら,ただと
+たじま,りえ
+たかだ,たかのり
+おかやま,あさこ
+たかぎし,みかこ
+たかはし,しんいちろう
+たかはし,やすし
+たかはし,まさよし
+たかはし,とおる
+たかはし,きょうこ
+たかき,よういち
+たかおか,たくや
+たかおか,ひろゆき
+いまいずみ,よしお
+たかさわ,たかし
+たかす,つよし
+たけい,せつこ
+たけなか,たけし
+たけざき,よしこ
+たまいし,ひであき
+たまき,しげる
+たなか,あきら
+たにぐち,なおき
+たうち,ひろなお
+てらみつ,だいすけ
+とだ,まや
+とみなが,しんいちろう
+とみた,あきよ
+とんぐう,ひでとし
+つねかわ,ひろふみ
+つつい,かつよし
+うちだ,たけし
+うちはし,たくお
+うえだ,まさひこ
+いとう,よういち
+うえだ,ひろし
+うえはら,ひであき
+ふじた,しほ
+うめだ,てつや
+うめはら,やよい
+うらべ,ひさこ
+わたべ,やすし
+やがさき,すみか
+やぎもと,ひろし
+やじま,かつみ
+やまだ,みちこ
+やまだ,たかし
+やまだ,みかこ
+やまぐち,さとこ
+やまぐち,ともこ
+やまもと,やすひろ
+やまもと,やすひろ
+やまもと,なおき
+やまもと,こうじ
+やまね,かずひろ
+やまさき,はるのり
+やました,かずき
+やまざき,まさゆき
+やまさき,としや
+やながわ,たけし
+やなぎだ,やすお
+おの,ひでのぶ
+やなぎさわ,やすし
+やざき,なおき
+やざわ,せいじ
+よこやま,ひろこ
+よこやま,たけし
+よも,きょうじ
+よしだ,ひでお
+よしだ,ゆうじ
+よしだ,はるひこ
+よしはら,あゆみ
+よしはら,まさひで
+よしもり,たかし
+ぜっつ,ひでよ
+あべ,よしただ
+あだち,こうじ
+あいかわ,ひろふみ
+あかえ,みちこ
+あんどう,まき
+あさみ,みさ
+いまなか,はるよ
+べっぷ,ゆうすけ
+べっぷ,ひろあき
+ちかはら,おさむ
+ふじい,みつとし
+ふじさき,たかゆき
+ふくしま,あずさ
+くろだ,としみ
+もり,まさひで
+わたなべ,たかえ
+くろだ,あさこ
+みやうち,じゅんこ
+いとう,きくこ
+いいだ,まゆみ
+かわの,まい
+あいうら,としお
+のざき,てるあき
+びたに,あやみ
+たにあい,だいすけ
+あおき,じゅんいち
+おき,きさく
+あおき,かずゆき
+あおやぎ,けんた
+あかにし,なおひろ
+あさお,まさひこ
+あさくら,かえ
+あしざわ,かずき
+あたく,ひろし
+あだち,ゆうこ
+いとう,ゆり
+しまもと,あとむ
+さいとう,まさる
+しのはら,かつみ
+おかの,ひでこ
+おかもと,ひろし
+ひらかわ,よごろう
+すがぬま,ともみち
+あなざわ,みのる
+あらい,としかず
+あらい,きんや
+あらかわ,ゆみこ
+あらかね,あきこ
+あらき,しげのり
+あんどう,ひろひさ
+いうち,まこと
+いけだ,やすひろ
+いけや,まさき
+いしかわ,ひろし
+いしかわ,まさみ
+いしかわ,ひろし
+いしかわ,こういち
+いしがき,ひろし
+いしぐろ,かおる
+いしはら,まさき
+いそむら,くみこ
+いたがき,きよみ
+いいだ,しろう
+いちかわ,そよ
+いちかわ,よしとし
+いで,いたる
+いとう,ひろふみ
+いぬい,まきと
+いのうえ,のぶひろ
+いまにし,むねたか
+いまはやし,しんいち
+いわさき,まさつぐ
+いわさき,まゆみ
+いわもと,けいいち
+うえの,えいじ
+うえの,かずのり
+うちいけ,よしあき
+うちやま,よしたか
+うめだ,しゅうじ
+うめむら,さよ
+うめもと,ちほこ
+うるしばら,よしひこ
+えぐま,えり
+えら,なおや
+おうさか,まさたか
+おおかわ,まさみつ
+おおさわ,まさひこ
+おしま,よしたか
+おしま,まなぶ
+おおすが,たつひこ
+おおたに,ひでき
+おおつ,まさふみ
+おおつか,ただひさ
+おね,まさゆき
+おおの,あきら
+おおはし,けんいち
+おおはし,けんご
+おおばやし,しんじ
+おおよし,たかゆき
+おかもと,ただゆき
+おがさわら,よしこ
+おがわ,ひでのり
+おくたに,ごう
+おくむら,ゆうこ
+おぐら,ひろこ
+いいかわ,けんいちろ
+おぐら,さとし
+おざわ,たかのり
+おざわ,ひでひこ
+おおの,やすのり
+かきもと,れいこ
+かきもと,ひろし
+かげやま,ともみ
+いしかわ,ひろし
+かそり,やすひと
+かつみ,なおき
+かとう,なおこ
+かとう,のりこ
+かとう,しげのり
+かとう,だいすけ
+かとう,けいじ
+けずか,あきら
+かどわき,みつしろう
+かねこ,あきひろ
+かのう,のりこ
+かみやま,ひろかず
+かわしま,ひろゆき
+かわせ,さとる
+かわの,かずき
+かわもと,まさたか
+かわもと,しん
+かわせ,なおき
+かんだ,ひでとし
+きくち,ひさゆき
+きくち,あきこ
+きくち,のぶお
+きたあらし,まいこ
+きたおか,みゆき
+きたじま,あきひろ
+きたむら,たけみ
+きたむら,あつし
+きてら,さとし
+きのした,じゅんこ
+きむら,たかひろ
+きりう,たけし
+くさかべ,まえこ
+くぼた,こすけ
+くまがい,けんじろう
+くまの,さり
+くりはら,まさと
+くるしま,あきよし
+なかがわ,ちか
+こいで,ひでき
+こんの,まさし
+こもと,ゆうこ
+こが,くにはる
+こじま,たいじ
+こにし,かよこ
+こばやし,せいう
+こまつ,けいいち
+こみや,しんや
+こんど,さとし
+こんど,つとむ
+ごとう,だいすけ
+さいとう,たつや
+さいとう,こうじ
+さいとう,ひでき
+さかもと,たけお
+さくま,としかず
+しみず,なおき
+さだちか,けいじゅ
+さと,さよこ
+さとう,じゅん
+さとう,ひとみ
+さとう,みか
+さとう,かつゆき
+さわだ,じゅんじ
+いそわ,まさひこ
+しも,たかあき
+しゅう,まさや
+しおかわ,あやの
+しおざわ,まさひこ
+しかうち,みつる
+しずり,たけし
+しの,てつじ
+しのざき,じゅんじろう
+しのだ,ますみ
+しのだ,ゆきこ
+しばざき,あきひと
+しばた,さおり
+しまむら,のぼる
+しみず,みまこ
+しみず,ゆうじ
+しみず,さとし
+しみず,しんいちろう
+たきたに,ゆういち
+しらの,たかゆき
+すえひろ,けん
+すがい,みきお
+すがよし,けんじ
+すがわら,しげふみ
+すぎうら,のりあき
+すぎしま,しゅんすけ
+すぎもと,ひさし
+すずかわ,よしえ
+すだ,あきよし
+すみかわ,かつあき
+すみの,こうじ
+せきぐち,しげみ
+そえじま,やすなり
+たおか,ただし
+たかき,きょうこ
+たかしま,しんいち
+たかせ,きよたか
+たかはし,かつや
+たかはし,たつや
+たかはし,えいいち
+たきたに,なな
+たけうち,ひろぶみ
+たけだ,ただゆき
+たけだ,けいいち
+たけだ,いくひこ
+たけむら,なおひさ
+たご,まさこ
+たきざわ,ちかこ
+たなか,ようこ
+たなか,りょうすけ
+たなか,けんじ
+いわの,かずしげ
+たなか,ひろし
+たにえ,さだよし
+たにぐち,かずえ
+たにぐち,じ
+たにまつ,ひろし
+たばた,みわこ
+たまき,たつや
+いせもと,
+たみや,あき
+ちゃもと,ふさし
+ちの,よういちろう
+つかもと,ようこ
+つちはし,むねひろ
+てらさわ,たつや
+と,みちこ
+ふくしま,なおし
+とば,きょうこ
+とみよし,ひとき
+とむろ,なつひこ
+とよしま,じゅんいち
+とりやま,なおゆき
+ないとう,ひろゆき
+いで,みちかず
+はた,ふさお
+なかがき,みき
+なかがわ,たかこ
+なかざわ,よしこ
+なかで,しょうこ
+なかはら,あつし
+たけうち,かつひさ
+なかむら,さとし
+なかむら,たけし
+なす,ひろし
+にいむら,としひろ
+にしおか,ひであき
+にしかわ,あきら
+にしざわ,しげる
+にしと,やすこ
+にしの,こうじ
+にしはら,なおき
+にしむら,くにもり
+ねもと,さちよ
+のぐち,えみ
+のぐち,まさや
+のじり,よしなお
+のじり,たかひろ
+のむら,かずひこ
+はった,あきこ
+はしば,ちかこ
+はしもと,ゆか
+はしもと,いちろう
+いのうえ,きよし
+はしもと,たかこ
+はせがわ,けんいち
+はた,かずき
+はた,よしかつ
+はたの,まいこ
+はやし,ひろゆき
+はやし,くみこ
+はらだ,ともこ
+はらだ,けんいち
+ばば,ひろふみ
+ばば,あすか
+ひぐち,のぶひこ
+ひぐち,きょうこ
+ひさき,ごうじ
+ひじり,えり
+ひらやま,たかゆき
+ふくだ,まゆみ
+ふじい,ひろふみ
+すがい,さとみ
+ふじた,かずや
+ふじた,ゆきこ
+ふじた,のぶこ
+ふじたに,さとし
+ふじなみ,しげゆき
+ふじの,たつゆき
+ののむら,かつじ
+ふせ,たてる
+すぎもと,よういちろう
+ほそかわ,たつお
+ほりうち,なおみ
+ほりかわ,ひろあき
+まきの,いくこ
+まきの,のりひこ
+ましこ,としひこ
+ますだ,かずや
+ますぶち,たかし
+ますぶち,あきひろ
+まつい,まきこ
+まつざわ,まさと
+とみなが,たかし
+まつなが,よしこ
+まつなが,ゆき
+すずき,やすじ
+まつむら,けいいち
+まつもと,ひでふみ
+まつもと,ともひさ
+まつやま,のりこ
+まつやま,こうじ
+まつやま,てつや
+まつよし,あきこ
+まの,せいじ
+まるおか,としやす
+みかみ,ようこ
+みき,ひろき
+みぞぐち,まさみ
+みた,みのる
+みね,ちあき
+みねお,さとる
+さとう,かつのり
+いくた,あや
+みやざき,ひでき
+たかぎわ,しげる
+みよし,ようこ
+むかい,みつたか
+むらかみ,まさあき
+いしだ,つかさ
+むらかみ,さとし
+むらかみ,かずたか
+むらやま,こうじ
+むらやま,まこと
+むろい,まさたか
+もたい,かずまさ
+もとき,かずや
+もとむら,こうじ
+もり,かつひろ
+かせ,あきよし
+もりした,かずひろ
+もりた,なおき
+もろとみ,ひでのぶ
+もろはし,ゆきこ
+かわもと,ひろのり
+やぐち,てるひこ
+やじま,なおこ
+やすかわ,ひろし
+やすだ,まさひと
+やつずか,まりこ
+やなぎさわ,ゆき
+やまぐち,きんや
+やまさき,たかや
+やまざき,ひろゆき
+やまざき,よしこ
+やまざき,せいじろう
+やまだ,けんたろう
+やまだ,なおき
+やまだ,たかのり
+やまなか,しゅういち
+くりはら,まさき
+やまもと,まさこ
+やまもと,しんたろう
+やまもと,やすし
+まつお,ますみ
+よぎ,ちとせ
+よこやま,ひでき
+よこやま,ようこ
+よしかわ,なおひで
+よしかわ,よしこ
+よしだ,こうじ
+わくい,てつや
+わたなべ,けんたろう
+わたなべ,しほ
+わたなべ,よしひと
+わたなべ,まなぶ
+はやし,たかし
+やまだ,のぶや
+わかばやし,さとし
+いわむら,のりまさ
+わたなべ,のぼる
+くわしま,すぐる
+おばた,さとみ
+あなざわ,ひかる
+やぎ,こすけ
+あかお,ともかず
+しみず,なつこ
+さかもと,ひでのぶ
+あおき,しげあき
+あずま,こういち
+いいだ,えな
+いけうち,めばえ
+いしかわ,てつお
+いそがい,まこと
+いとう,ただひろ
+いば,あずさ
+いわもと,しんじ
+うえさか,たけひろ
+うえの,まもる
+うえひら,けんご
+うちやま,けんじ
+うめない,すすむ
+えむら,たかひろ
+おきた,じゅんいち
+おおくぼ,ひろし
+おおたに,あや
+おおつ,ひろこ
+おおつか,よしみ
+おかしろ,しろう
+おだ,あつし
+おの,ひろみ
+かとう,よしゆき
+かねひさ,なおこ
+かみや,おさむ
+かわい,たくよし
+かわおか,ひでき
+きたの,じゅんいち
+きぶし,つへ
+きむら,まさたか
+きむら,まさこ
+くさか,さとみ
+くば,たかし
+くぼた,しろう
+くろいわ,しんじ
+くわばら,えいじ
+こいけ,すみお
+こいたばし,つかさ
+こうだ,ひでお
+こうだ,まさたけ
+こしむら,あつし
+こやなぎ,ひさこ
+はとり,ゆうこ
+さかうえ,さわ
+あべ,こういち
+さとう,やすみつ
+さとう,まゆみ
+さとう,よしお
+しまだ,りえ
+いまい,かつあき
+すがぬま,ちよ
+せき,あきひろ
+せの,たかやす
+あべ,まさはる
+たかすが,まゆみ
+たかすぎ,のぶこ
+たかはし,ともみ
+たかはし,けんたろう
+たかはし,あきひと
+たかはし,こうじ
+たかはし,ひさみ
+たきもと,ゆうた
+たくぼ,よしゆき
+たけうち,ともこ
+たけなか,ゆきひこ
+たなか,もといち
+たなか,ちずる
+たばた,かつゆき
+たみや,たけし
+たむら,れいこ
+ちゅうま,ひろたか
+ほんごう,ゆうこ
+なかお,のぶあき
+なかがわ,こういち
+なかぞの,ひでのり
+なかの,みつひろ
+にった,はな
+にわ,りょういち
+のじ,ひろあき
+はざの,たかし
+はしもと,とおる
+はしもと,ゆうこ
+はやし,ちおり
+はやし,とうこ
+はらぐち,たかし
+はるぐち,としお
+ひらで,いさむ
+ひらの,まさたか
+ひらやま,ゆき
+ふかざわ,ひろみ
+ふくます,かよ
+ふくもり,まさる
+ふじかわ,しげる
+ほしの,のりこ
+ほその,あきひと
+まつおか,よしなり
+まつむら,なみこ
+みずかみ,てつろう
+みつい,たいすけ
+みのかみ,としゆき
+みやもと,たつし
+むらかみ,けいこ
+やた,なおこ
+やなぎた,みのる
+やまぐち,こうじ
+やました,みちお
+やまもと,ゆういちろ
+よしたけ,ひでのり
+よしむら,えり
+ひぐち,たけし
+はしもと,あつし
+わたなべ,ゆき
+あきば,たけひこ
+あきもと,みつよ
+あまや,まさる
+あんどう,てつろう
+あんざわ,のぶひろ
+あさはた,かずひと
+ばば,みちひと
+べっしょ,てるひと
+ちかもと,さおり
+ちょう,だいすけ
+ふじひら,みわこ
+ふじい,けいこ
+ふじたに,よしかつ
+ふかだ,まさあき
+ふるだて,なおき
+ふるやま,ひろゆき
+ごうだ,きよのぶ
+こいけ,よしゆき
+はかまだ,こうぞう
+はせがわ,たかお
+はしもと,こういち
+はった,けんいち
+はっとり,たかひろ
+はやかわ,ひろき
+はやかわ,なるつぐ
+ひぬま,たくや
+ひろき,ともひで
+ほりのうち,ゆうじ
+ほその,あつこ
+ふじおか,ひでき
+ふるた,なるき
+ふさの,けん
+ふしみ,おさむ
+いたど,ひとし
+いだ,まさひろ
+いはら,けい
+いいだ,たかひろ
+いなやま,ひろかず
+いの,じゅんいち
+いのうえ,めぐみ
+いしだ,よしつぐ
+いしもと,やすよし
+いしわ,みつる
+いしわたり,ひろかつ
+いたくら,なほこ
+いとう,たかひろ
+いとう,しゅういち
+いわい,ななこ
+いざわ,
+じぶ,すぐる
+かばやま,まさき
+かい,ゆうこ
+かきぬま,じゅん
+かきざき,まさき
+かくだ,しゅうすけ
+かながわ,しん
+かんべ,たけお
+かんだ,やすひと
+かさだ,みちたか
+かわい,ともこ
+ささき,いくえ
+かわせ,さほ
+きもと,みきね
+きたはら,のぶお
+きたむら,よしお
+こばやし,ひろえ
+こぶけ,ゆうこ
+こいずみ,かなこ
+こみやま,まりこ
+こんのかずひろ,やすひと
+こしかわ,たかゆき
+こんの,こういち
+くぼ,まさのぶ
+くぼかわ,なつき
+くどう,ともか
+くりはら,かついち
+くろぎ,さえこ
+まちだ,はるみ
+まじま,やすこ
+いしず,のりゆき
+まかべ,ひろよ
+まるやま,ひであき
+ますだ,かよ
+まつがさき,あきら
+まつい,たけし
+まつい,さおり
+まつもと,けんじ
+まわたり,かんじ
+みちもと,としひろ
+みき,すみこ
+みつま,たかのり
+みうら,けいご
+みわ,まこと
+みやもと,かつひさ
+みやもと,やすのぶ
+みやもと,たけのぶ
+みやた,まさし
+むらかみ,とおる
+たはら,のりこ
+みずたに,ともか
+もり,ゆき
+もりぐち,まさひこ
+もりかわ,ひろし
+もりもと,かずみ
+もりた,れいこ
+むらかみ,たつひこ
+あでがわ,あい
+ながさか,ひかる
+ながた,じゅり
+ながた,かつのぶ
+いざわ,かおり
+なかみね,まもる
+なかむら,ひろのり
+なかむら,たつや
+いもと,こういちろう
+なかむら,たけし
+なかお,ゆうじ
+なかやま,うしん
+なかざわ,きよし
+なみき,はるよし
+にいみ,あきひろ
+にいぜき,かおり
+にしで,ひであき
+にわ,ひでき
+のべ,みさ
+おおた,しげあき
+おがわ,まさよし
+おぐす,ゆうすけ
+おおもと,しょうじ
+おしま,たかのり
+おおた,けんいち
+おおや,ひみこ
+いしかわ,よう
+おかだ,たけし
+おく,ふみゆき
+おくだ,まさき
+おしくぼ,けんいち
+おぜき,かつひこ
+らい,ゆうじ
+いとう,ともや
+さいき,ひろし
+さいとう,たつや
+よしだ,みちやす
+さこ,しげみつ
+ささじま,じゅんや
+ささき,ゆきこ
+さとう,つぐひで
+いわもと,かずひこ
+さとう,ちえこ
+さわだ,ひでやす
+せきかわ,いずみ
+せきね,みつお
+しばた,なおき
+しげはら,しんや
+しまおか,あきひこ
+しみず,かずひろ
+しも,まさあき
+しもむら,たかし
+しむら,たかひさ
+そめや,あきひこ
+すえよし,けんいち
+すずき,ひでゆき
+すずき,なおき
+たかだ,いちろう
+たかはし,
+たかせ,まなぶ
+たけだ,あきら
+たけい,ひさよし
+たけもと,はじめ
+たまい,としひこ
+たむら,たかゆき
+たむら,さとる
+いしかわ,ひとし
+たなか,こういちろう
+たなか,まさひろ
+たにぐち,たけのり
+たにぐち,ひろたか
+たにぐち,けんじ
+たにぐち,けん
+いしだ,あつし
+たにした,ふみの
+てらにし,つよし
+とおやま,きょうこ
+とみた,みわ
+とねがわ,たく
+とよだ,のりこ
+とよた,しゅうじ
+つちや,よしこ
+いしかわ,なおき
+つむら,としあき
+つのかわ,よしみ
+うちだ,ひとし
+うさみ,たけし
+わじま,りこ
+わたなべ,まき
+わたなべ,よういち
+わたなべ,やよい
+やぎ,けいいち
+やぎ,きょうこ
+やくわ,ひろふみ
+やまだ,ひろき
+やまだ,たかゆき
+やまぐち,としゆき
+やまのくち,まさこ
+やました,こういち
+やました,なおゆき
+やまざき,ひでゆき
+やまざき,ゆたか
+やながわ,たつろう
+やすだ,とよあき
+やすえ,ともゆき
+いそがい,ただのぶ
+やたがい,えり
+よしだ,りょうこ
+たかはし,まさき
+おかだ,しゅういち
+あおき,まさる
+あきば,あきこ
+あべ,あきこ
+あまの,まさお
+ありもと,しゅうじ
+あんどう,ゆき
+いかわ,たいへい
+いしい,のりひろ
+いしかわ,なおこ
+いしずか,ゆみ
+いしばし,しゅんすけ
+いしもと,りょうすけ
+いで,さとこ
+いちのせ,さとし
+いなだ,まなぶ
+いぬい,やすよ
+いのうえ,まみこ
+いやま,こうじ
+いわさき,みずまさ
+いわま,かずこ
+いわまつ,おさなお
+うえだ,ひろこ
+うえの,ひろき
+うちだ,たかお
+うど,けんじ
+うめはら,たかし
+えぐち,とみさぶ
+えのき,よしこ
+えもと,みつもと
+えもり,せいや
+なかがわ,なおあき
+おおた,ひでゆき
+おがた,やすし
+おがわ,のぶたか
+おがわ,れいこ
+おくい,たくじ
+おくむら,もとこ
+おおたに,てるあき
+おつとも,ゆきこ
+おにざわ,しげき
+おの,のりあき
+おばな,せいいちろう
+おまがり,まさや
+かきざわ,てつひろ
+かけひ,えりこ
+かさはら,まどか
+かじ,おさむ
+かじた,たかお
+かじた,たかお
+かじやま,みのる
+かとう,よしのぶ
+かなだ,けい
+かねこ,のぶかつ
+かねこ,りょうた
+いたの,けんすけ
+ながつま,しゅうへい
+かのう,せいじ
+かまえ,なおき
+かわい,てつお
+かわまた,ひろき
+かんの,まいこ
+きうち,いずみ
+きし,ようこ
+きたがわ,とものぶ
+きのした,なりとし
+きょうがく,まこと
+くぼ,とものり
+くぼた,たくや
+くぼた,しんぺい
+くりはら,りえ
+くりやま,けいこ
+いしがき,としふさ
+くろい,いつろう
+こうさき,こういち
+こうだ,あつし
+こばやし,のぶあき
+こばやし,てつや
+こばやし,ゆうすけ
+こばやし,こうじ
+いのうえ,のぶあき
+さいほ,なるひろ
+さかがわ,ようへい
+かわむら,ゆたか
+ささおか,ようこ
+ささき,のぼる
+さとう,のりかず
+さとう,まなぶ
+さなだ,おさむ
+さるやま,けんいち
+しおつ,えいすけ
+しおのや,しのぶ
+しおやま,のぼる
+しぎはら,ひろゆき
+ししど,くにお
+しのざき,かずひと
+しばた,みのる
+しみず,
+しょうの,しんいち
+しらき,ひろゆき
+すぎおか,みつかず
+すぎはら,きよしげ
+すずき,ひさてる
+すずき,しげゆき
+すみやま,せいじ
+せった,まさき
+いしわた,だいじゅ
+せんごく,みのる
+たかおか,ゆみ
+たかざわ,たかしげ
+たかはし,あやこ
+たかむら,たかゆき
+たきと,ひでき
+たなか,かず
+たなか,あきこ
+いとう,じゅんじ
+たなべ,けんじ
+たにぐち,まなぶ
+ちゃわんや,よしはる
+てらさか,ひろき
+ところ,じゅんいち
+なかい,たかし
+なかお,しんじ
+ながおか,みほ
+なかがわ,もとあき
+なかじま,すひち
+ながせ,たつや
+なかの,せいた
+なかの,じ
+ながの,ゆうこ
+いけだ,あきこ
+なかむら,まりこ
+なかやま,かつとし
+にお,じゅんいち
+にしお,のりこ
+にしかい,としみつ
+にしざか,よしこ
+にしだ,だいすけ
+にしだ,たかし
+いいじま,まさき
+にしはら,かずゆき
+にしむら,かずや
+ねろめ,ひろし
+のじま,さねひろ
+のなか,だいすけ
+はしば,のりかず
+はちや,たかひろ
+はっとり,こ
+いいだ,ひろゆき
+はぶ,まこと
+はやかわ,てつろう
+はやし,なおこ
+はやしま,ひでし
+はら,たくみ
+ひがしだ,まさる
+せきぐち,きょういち
+ひらい,かおり
+ひろすえ,ひろゆき
+ひろはた,たくや
+ふくしま,みつお
+ふじお,てんぺい
+ふじた,ゆういちろう
+ふじまき,ゆきひこ
+ふじわら,とおる
+ふるいち,ゆうすけ
+ほさか,たけし
+ほしの,こうじ
+ほり,ゆきこ
+ほりもと,ゆうじ
+ほんま,ゆきのぶ
+まえかわ,たけはる
+まえだ,たかひと
+まえだ,みきお
+まえだ,たつや
+まさい,くみ
+まつい,ひでのぶ
+まつざわ,ちから
+まつだ,たかゆき
+まつとも,まさなお
+まつなが,けんじ
+まつもと,ようすけ
+みずぐち,ともたか
+みやもと,まゆみ
+みやもと,やすじ
+むらかみ,かずひで
+むらかみ,まさひろ
+むらなか,さとし
+もちずき,たくや
+もとくら,ともこ
+もり,くにかず
+もりや,ほまれ
+やすい,たいげん
+やすだ,みきこ
+やすだ,きよひと
+やた,かずひろ
+やたき,のぶお
+やち,ふみひこ
+やの,ひろし
+やまいずみ,よしあき
+やまおか,まさき
+やまぐち,やすひろ
+やまぐち,よしのり
+やまざき,あきお
+やまざき,なな
+やました,まいこ
+やまもと,けん
+よこぜき,たいち
+よしだ,なおと
+よしの,やすお
+よしみ,たかし
+よだ,たかひろ
+よだ,ひろあき
+ろじ,ふみあき
+わだ,まみ
+わたなべ,ゆきお
+わたなべ,ひでき
+わたなべ,かずお
+わたべ,たかし
+かのう,たかとし
+にった,おさむ
+あおき,しゅう
+あおき,はなこ
+あおやま,まさあき
+あおやま,ぬい
+あきば,けいいち
+あさだ,まりこ
+あだち,ともみ
+あだち,ゆうこ
+あとべ,はると
+あべ,かつひこ
+あべ,のぶお
+あべ,まゆみ
+あまの,まき
+あまの,じゅんいちろ
+あらかわ,りょうすけ
+ありた,ようへい
+ありとも,ひろし
+あんざい,ひであき
+いとう,ようじ
+あんどう,りえこ
+いがらし,みおこ
+いけだ,いずみ
+たかはし,あつお
+いしばし,ただし
+いしむら,ゆみこ
+いしもと,まりこ
+いちい,けいこ
+いちかわ,ひろと
+いちかわ,まきこ
+いちのせ,きよし
+いとう,あきひろ
+いとう,まさる
+いとう,りさ
+いなおか,まさふみ
+いなば,ひろたけ
+いぬずか,まゆみ
+いのうえ,ひでおみ
+いのかわ,しゅんすけ
+いまい,たけし
+いましゅく,りょう
+いわい,ともひこ
+いわしま,しゅういち
+うえぞの,めぐみ
+うえだ,たかひろ
+うえはら,たかゆき
+うえはら,もとこ
+かきた,けん
+うさみ,ひじり
+うちだ,ひろき
+うちだ,あやこ
+うちぼり,みさと
+うめがい,かずえ
+うめつ,あきひこ
+うめの,たけし
+うらかわ,ゆき
+うらべ,しげひさ
+えぐち,ただし
+えずみ,いくよ
+えのもと,たろう
+いまにし,ひろゆき
+えのもと,ふみこ
+えんど,よしき
+おいかわ,まさき
+おいかわ,ゆきふみ
+おおい,ようじ
+おおいし,まさはる
+おおた,ふみかず
+おおつか,しんすけ
+おおにし,かつあき
+おおにし,みちえ
+おかだ,やすお
+おかだ,まさる
+おかの,ゆき
+おかべ,よしひろ
+おかべ,ひであき
+おかむら,りょう
+おかもと,みき
+おかもと,みゆき
+おがわ,たえこ
+おがわ,とおる
+おくだ,けん
+おくだ,てつや
+おざき,まみこ
+おの,なおこ
+おおやま,たかし
+かいずか,としふみ
+かがみ,えりか
+かきた,かおる
+かく,こうじ
+かさい,ゆきのり
+かじい,あかね
+かじた,なおや
+かたえ,ゆうじん
+かたやま,みつこ
+かつ,とおる
+かとう,たく
+かとう,だいすけ
+かみ,あつこ
+かねこ,くにひと
+かまだ,かずひろ
+かみ,よしてる
+かみひさ,ゆうじ
+かみもと,かおり
+かみや,かずお
+かみやま,まき
+かわかみ,ますみ
+かわさき,ひとし
+かわせ,ひろかず
+かわはた,たけちか
+かわはら,じゅんこ
+かわむら,かずひろ
+かわもと,けいすけ
+かわもと,ひろし
+かわもと,みちお
+かんだ,たけし
+きくち,えり
+きたがわ,まさぶみ
+きたなが,さかえ
+きたの,しんご
+きたむら,たつや
+きたもと,つとむ
+きのえ,ひろし
+きぶせ,たかえ
+きむら,じゅんいち
+きむら,ともき
+きもと,ひでゆき
+きもと,ゆり
+ぎょうぶ,ひろこ
+くに,みほ
+くにまさ,みえこ
+くまさか,たいせつ
+くらしげ,あきお
+くりはら,たけし
+こいけ,めぐみ
+こいけだ,たつろう
+こいずみ,ひろし
+こいぬま,みちこ
+こつか,かずあき
+こが,しげき
+こしもと,ひろみつ
+こだま,たいちろう
+こだま,まさかず
+ごとう,ありよし
+こにし,ともこ
+こばやし,よしじ
+こばやし,まさき
+こばやし,やすたか
+こばやし,ひでひと
+こまき,たつや
+こまば,かずのり
+こみや,かつひこ
+こやま,まさのり
+こやま,やすのり
+さいき,ともひさ
+さいごう,みわこ
+さいとう,けんじ
+さいとう,てつお
+さいとう,いさむ
+いがらし,しょうご
+さえぐさ,なみ
+さかい,あきら
+さかがみ,いちろう
+さかね,だいき
+さかもと,とものり
+さかもと,まこと
+さくらい,ひろみ
+さくらだ,りょうじ
+さこん,まさひろ
+ささき,ななえ
+ささはら,わかこ
+さとう,げん
+さとう,じゅんいち
+さとう,けんご
+さとう,なおと
+さの,ひであき
+さわ,けんご
+しぶや,ただし
+しぶや,ひでお
+しまだ,まなえ
+しまだ,ひでたけ
+しまだ,やよい
+しみず,ゆきお
+しみず,だいすけ
+しみず,ひでき
+しみず,あきの
+しみず,なおゆき
+いのうえ,けいすけ
+しも,さとし
+しょうだ,しげのり
+じんの,まこと
+じんの,りゅうじ
+しんまち,たけし
+すぎい,まさなお
+すぎおか,たかひこ
+すぎもと,みちのり
+すずき,かずひら
+すずき,だいすけ
+すずき,かずひろ
+すずき,ひろしげ
+すずき,ゆういちろう
+せお,のりこ
+せき,そう
+いしはま,けんと
+そのだ,こうたろう
+たい,よしあき
+たかいわ,きよし
+たかぎ,ゆうじ
+たかはし,まきこ
+たかはし,のぶゆき
+たかはし,まきこ
+たかはし,たけし
+たかはし,あきひこ
+たかむく,けんし
+たぐち,ひろこ
+たけうち,よしこ
+たけかわ,まさし
+たけわ,しんじ
+ただまつ,ひでき
+たたら,こうじ
+たなか,たかし
+たにもと,ゆうじ
+たねむら,あきふみ
+たはら,さとし
+たむら,ひろし
+だん,たかゆき
+いいだ,むねのり
+ちば,えいすけ
+ちょうとく,ひでゆき
+つかはら,ひろゆき
+つつみ,まこと
+つもり,まりこ
+てらした,ゆういちろう
+どい,ゆたか
+どい,よしえ
+どい,よういち
+としま,こうへい
+ないとう,こうじ
+なかい,まさひろ
+なかい,しゅうへい
+なかお,きほこ
+なかがわ,ちあき
+ながさき,かおり
+なかじま,たかふみ
+なかじま,のぞむ
+なかしま,さなえ
+なかだ,きよこ
+なかはら,みなこ
+なかむら,じゅんぞう
+なかむら,しゅうたろう
+なかむら,ゆり
+なかむら,そういちろう
+なかむら,みつひろ
+なかむら,かつひこ
+なかむら,ひでや
+ほしの,としはる
+なかもと,あきこ
+いけだ,まさたか
+なかもり,とおる
+ながよし,たかまさ
+なではら,ひろし
+ななもり,つとむ
+ならさか,ひろし
+なんば,ゆき
+にし,つねあき
+にしかわ,ひであき
+にしだ,けんし
+にしむら,ゆき
+のぐち,さとし
+のだ,けんいち
+のなみ,すぐる
+ののいちや,ますお
+のむら,ともひこ
+のもと,ゆういち
+はがや,なおゆき
+はぎわら,やすゆき
+はく,ともひと
+はし,たかし
+はしずめ,ゆうこ
+はしば,まこと
+はせべ,たかまさ
+はた,まさみち
+はたえ,みきと
+はたの,あきよし
+はちの,すすむ
+はっとり,ゆう
+はやし,れいこ
+はやしだ,あきら
+はやふね,よしあき
+はら,たつじ
+はらだ,くみこ
+はらだ,まさこ
+いのぐち,かつふみ
+はらだ,たかゆき
+ひがしやま,ようこ
+ひぐち,ひでき
+ひご,ひろし
+ひだの,ともや
+ひまき,とものり
+くらしげ,かずゆき
+いしはら,れいこ
+ひらた,しげお
+ひろさわ,ゆきこ
+ひろた,けいこ
+ふかさわ,みきこ
+ふかざわ,りえ
+ふかざわ,たかし
+ふくむろ,まさとも
+ふじい,てつや
+いとう,けいこ
+ふじい,みおこ
+ふじなが,けいじ
+ふじなが,ふみこ
+ふじわら,のりひろ
+ふじわら,りえ
+ふじわら,なおゆき
+ふたつぎ,つよし
+ふたつもり,しずか
+ふるはた,のぶあき
+ふるや,まりこ
+へんみ,まさる
+ほし,まいこ
+ほしの,かつあき
+ほり,きみひろ
+ほりえ,しんじ
+ほりおか,あつこ
+ほりかわ,ともひろ
+まえふね,なみこ
+まきの,やすのり
+ますだ,おくと
+まつうら,たけし
+まつした,あきし
+まつもと,ひでたか
+いぐち,たかひろ
+まつやま,まさひろ
+まなべ,ちの
+まるやま,なおゆき
+みうら,みちる
+みき,たかゆき
+みつはし,えいいち
+みつべ,まさと
+みとべ,ひさや
+ちょうとく,たまき
+いけふじ,のぶよし
+みやざき,まさはる
+みやざき,あきら
+みやした,ようこ
+みやた,たかし
+むこうやま,みちひで
+むらい,みほ
+むらかみ,まみ
+むらかみ,みつあき
+むらた,ともゆき
+むらまつ,まさゆき
+もとき,じゅんた
+もとよし,せいいち
+もみやま,えいじ
+もり,たかし
+もり,たけや
+もりうえ,よしたか
+いのうえ,あきのり
+もりうち,しんたろう
+もりた,ゆうき
+やぎさわ,かずみ
+やしま,こうじ
+やすだ,ふみひこ
+やの,みき
+やの,ただたか
+やまぐち,じゅん
+やまさき,ふみひこ
+やまざき,のぶひこ
+やました,けいじ
+やました,あつし
+やまだ,たつお
+やまな,かな
+やまみち,けいすけ
+いなか,げんた
+やまもと,こうじ
+やまもと,たくや
+やまもと,ひでお
+やまもと,むねたか
+ゆば,ゆたか
+よこたに,まこと
+よこやま,よしお
+よしだ,かずひろ
+よしだ,としかず
+いわさき,としかず
+よしだ,りょう
+よだ,えみ
+わかまつ,みちえ
+わさ,りょうこ
+わだ,かおる
+わたなべ,けいぞう
+いわくら,えいいち
+わたなべ,ひでゆき
+わたなべ,かずみね
+わたなべ,しょうたろう
+わたなべ,ゆき
+わたなべ,しげる
+わたなべ,ひろゆき
+わたなべ,きよかず
+わたなべ,としえ
+おおい,のぶひろ
+いいだ,ゆきこ
+むかい,たかし
+ふみはら,かおり
+かわごえ,まさはる
+くろかわ,ひろみ
+こうだ,さとる
+ふじた,ゆうこ
+こばやし,たけし
+はまむら,かよ
+いわせ,やすひろ
+たけだ,まさる
+おがわ,ひろあき
+みずた,さとる
+いいだ,あつし
+あいはら,やすこ
+あおう,としき
+あおき,しんこう
+あおば,ひろよし
+あきもと,すすむ
+あさい,ゆうこ
+いしやま,しゅんすけ
+あさお,えみこ
+あさだ,としき
+あさだ,けんたろう
+あさの,ふじお
+あさの,ともひこ
+あざみ,としゆき
+あすま,しゅうへい
+あそう,ゆか
+あだち,きょういち
+あとみ,のりひろ
+あなみ,やすひさ
+あべ,まさおみ
+あべ,まこと
+あべ,まこと
+あまの,まさとし
+あやべ,たろう
+たけきた,まなぶ
+あらい,まき
+いつの,みきお
+ありかわ,よしのぶ
+ありた,こういち
+あんじゅ,つよし
+あんどう,まさき
+あんどう,りゅうた
+いちのせ,こずえ
+いいぬま,ひろゆき
+いうえ,よしあき
+いがらし,あきこ
+いけうち,おりか
+いけがみ,みのる
+いけだ,たけし
+いりた,やすあき
+いけだ,しゅういち
+いけだ,しょういち
+いけだ,じろう
+いしい,じゅんいち
+いしい,ともこ
+いしい,なおみ
+いしおか,しんいち
+いまい,たけし
+いしかわ,りょうへい
+いしかわ,とものぶ
+いしぐろ,ゆきひろ
+いしだ,たつゆき
+いせき,たけし
+いちき,まさと
+いちのせ,ともひろ
+いちのみや,ふみたけ
+いとう,しんいち
+いとう,のりこ
+いなだ,よしたか
+いなば,せいいちろう
+いはら,きよたか
+いのうえ,おさむ
+いのうえ,のりこ
+いのうえ,ともゆき
+いまいずみ,あつし
+いま,さとこ
+いまだ,みお
+いまず,つよし
+いまむら,みつとし
+いりたに,たくじ
+いわき,たつや
+いわさき,まり
+いわさき,まな
+いわすぎ,みか
+いわはし,いちろう
+いわぶち,なほ
+いわほり,あきひこ
+うえだ,のぶえ
+うえまつ,たかし
+うすい,ともいち
+うすい,まさひろ
+うちだ,かおり
+うつみ,まきこ
+うめだ,ひでのぶ
+うらの,やすひろ
+えがわ,たけし
+えざき,あつこ
+えとう,けんじ
+えのもと,はるひら
+えのもと,あきら
+えま,あきこ
+えんど,ひさのり
+えんど,よしまさ
+おいたに,ゆき
+おう,よしひろ
+おおい,かおる
+おおえ,あきひろ
+おき,あや
+おおくぼ,ふみのり
+おおさわ,いさお
+おおさわ,ひさし
+いわきり,わたる
+おおすみ,もとひこ
+おおた,みつひろ
+おおた,たかし
+おおつか,あきのり
+おおつか,こういち
+おおつか,ともひろ
+おおつき,じゅん
+おなか,だいすけ
+おおにし,ようこ
+おおぼ,まさこ
+おま,きよし
+おむら,しのぶ
+おむら,くみ
+いしい,なおこ
+おおもり,よしひろ
+おおもり,ひろかず
+おおもり,のぶひさ
+おおわだ,たかふみ
+おかい,れい
+おかざき,ともみち
+おかざき,かずひと
+いけだ,あきお
+おかの,えいいち
+おかべ,うらら
+おかもと,えつこ
+おがわ,ゆうこ
+おがわ,あきら
+おがわ,りょういち
+おがわ,きよの
+おおがわら,くにはる
+おくはら,さとし
+おくやま,まこ
+おぐら,やすはる
+きたむら,まりこ
+おざわ,しげみつ
+おち,もとひろ
+おの,たかし
+おおの,ちか
+おのでら,けんし
+おばた,かつよし
+おおやま,ちずる
+おんた,めぐみ
+いわた,たけし
+かいぶき,ゆみ
+かきもと,まちこ
+かざぐち,まさのり
+かさざき,よしひろ
+かじ,さおり
+かじむら,はるな
+かしわい,のりこ
+かしわばら,なおや
+かたくら,よしゆき
+かたやま,まいこ
+かつの,たかのり
+かど,ちえこ
+かとう,のぶゆき
+いその,みどり
+かとう,たかし
+かとう,しほ
+かとう,あきよし
+かとり,けんじ
+かなさか,もとひろ
+かなざわ,みちこ
+かなやま,かなこ
+かねこ,ゆきお
+かねこ,ともこ
+かねだ,もとき
+がみ,ひろし
+かめおか,まなみ
+からさわ,あきてる
+からしま,きよふみ
+かるいし,いずみ
+かわい,なおゆき
+かわい,たかおみ
+かわかみ,まさみ
+かわかみ,けんた
+かわず,あつし
+かわなか,えいすけ
+かわの,たかし
+かわばた,なおや
+かわべ,しほ
+かわみ,しんじ
+かんばし,みちこ
+かんばら,あつし
+きしい,やすえ
+きしだ,あきひろ
+きたがわ,まさき
+きたしろ,かずよし
+きたはら,よしかず
+きたむら,よういち
+きど,ちえこ
+きのした,わかこ
+えだ,えい
+きむら,なつこ
+きむら,しげる
+きむら,あつし
+きよなが,のりみつ
+きよみや,たかお
+きりや,まさき
+いとう,ともや
+くしだ,きょうこ
+くじらおか,だいき
+くにもと,たけとし
+くぬぎ,とおる
+くぼ,あつし
+くぼさわ,まさき
+くぼた,たかひろ
+くめの,のぶお
+いしぐろ,たろう
+くら,ともあき
+くらさわ,ふみはる
+くらた,りょうこ
+くろかわ,たかひさ
+くろす,まみこ
+くろやなぎ,さんしろう
+いなとみ,だいすけ
+こいけ,まゆこ
+こいけ,わたる
+こいしかわ,ひでゆき
+こいずみ,てるみ
+こいずみ,のりまさ
+こいで,まどか
+こずま,まいこ
+こんの,あつこ
+こやま,だいき
+こり,たかひで
+かつかわ,せいいちろう
+こがの,あきふみ
+こしい,ともひろ
+こしまる,だいとく
+こすぎ,まさし
+こせき,まなぶ
+こたに,やいち
+こだま,せんじ
+こにし,たみこ
+こにし,ただし
+こば,ともき
+こばたけ,けいいち
+こばやし,あきこ
+こばやし,やすゆき
+こばやし,ようじ
+こばやし,まさや
+こばやし,よしお
+なかむら,ようへい
+こばやし,ひろこ
+こぼり,くにひこ
+こまつ,つよし
+こやま,つぎお
+こんの,たかこ
+さいとう,ともえ
+さいとう,あつこ
+さいとう,ひろゆき
+さいとう,ひろゆき
+いとう,ふきこ
+さかい,ちひろ
+さかい,きよし
+さかい,みねお
+さかきばら,としき
+さかぐち,いちろう
+いわさき,れいこ
+さかもと,のりお
+さかもと,ようじ
+さかもと,じゅんこ
+ささき,かつとし
+ささき,こさく
+ささき,じゅんこ
+ささき,れな
+いまはし,ひろみ
+さつみ,たかゆき
+さとう,しんいちろう
+さとう,ゆうじ
+さとう,ともくに
+さとう,まりこ
+さとう,こうき
+さとう,ゆみこ
+さの,しの
+いしぐろ,ひでたか
+さわやなぎ,みつひろ
+しおた,けいすけ
+しき,ゆうこ
+しげおか,れい
+しげた,まもる
+ししど,りか
+しなだ,よしこ
+いで,よしふみ
+しばた,ようこ
+しばた,ありひと
+しばた,りょう
+しばた,しゅういち
+しまず,もなみ
+しまだ,よしさだ
+しまず,つねお
+しみず,ひでただ
+しみず,くにえ
+しもはし,ひろのぶ
+しもやま,かおり
+じょう,たかし
+いとう,きょうこ
+すがた,のぶえ
+すがや,あきひろ
+すぎた,たかひろ
+すぎなか,えいじ
+すぎもと,ふみお
+すぎやま,かずな
+すぎやま,ゆうじ
+すぎやま,とおる
+すげの,ごう
+すずき,こうじ
+すずき,まさひろ
+すずき,ひであき
+すずき,こうじ
+すずき,ゆうこ
+いわさき,ともふみ
+すずき,ようこ
+すずき,こうじ
+いちかわ,りか
+せき,まさよし
+せきぐち,けいこ
+せきや,けんじ
+せこ,けんたろう
+せら,ひろゆき
+そが,ゆか
+そが,えいこ
+いとう,あきら
+かみや,かすみ
+そんく,としかず
+たかき,ゆみこ
+たかぎ,よしはる
+たかさき,やすお
+いけだ,ひとし
+たかしま,やすひと
+たかの,けんいち
+たかの,ひでき
+たかの,まきこ
+たかの,なおひろ
+たかの,よしひさ
+たかはし,よしお
+たかはし,こうへい
+たかはし,こういちろう
+たかはし,がく
+たかはし,かな
+たかはし,たかのり
+たかまつ,ひろし
+たがみ,ひとし
+たかみざわ,りゅうき
+たからだ,しんいち
+たきかわ,えみこ
+たきざわ,いわお
+いいの,ゆみ
+たけい,よしひろ
+たけうち,しんいちろう
+たけうち,たかきよ
+たけきた,まき
+たけなか,ふみお
+たけのうち,りょうじ
+たけはな,ふみ
+いとう,とくこ
+たけもと,まさる
+たけもと,かずひこ
+たご,すすむ
+たさか,よしのぶ
+たじま,ひろかず
+たしろ,よしこ
+たしろ,ごう
+たたら,さなえ
+たちばな,あやこ
+いちむら,さとし
+たていし,ゆき
+たての,ひさし
+たての,だいぞ
+たなか,けんいちろ
+たなか,まさひろ
+たなか,なおこ
+たなか,とおる
+たなか,きょうこ
+たなか,やすし
+たなか,ようこ
+がみ,まこと
+たなみ,つねお
+たに,まみ
+たにぐち,ゆみこ
+なかおか,ゆき
+たにざわ,よしのり
+たにだ,のぶゆき
+たにもと,あきみ
+たのおか,みえこ
+たばた,まさき
+たはら,みかこ
+たむら,ゆきひろ
+ちかざわ,のりひと
+ちの,たかのぶ
+ちはら,ひさの
+ちゅう,さやか
+ちゅうま,けいいち
+つかだ,ひでたけ
+つかもと,のぶたか
+つかもと,ゆたか
+つだ,とものり
+つちだ,まさお
+つちや,せれな
+つちや,あき
+つねき,くみこ
+でみせ,たかし
+てらおか,かなこ
+いずみ,あつし
+とう,せいじ
+とじ,まさこ
+としおか,みすず
+とだ,はなえ
+とびない,あきこ
+ともい,みねき
+とやま,あいこ
+とよしま,こういち
+とよだ,たくや
+とよはま,としお
+ながえ,けんじ
+ながえ,しほ
+なかお,ともひで
+なかお,けんたろう
+なかじま,ともこ
+なかじま,よしたか
+なかじま,つよし
+ながしま,まり
+ながせ,こういちろう
+なかぞの,じゅんこ
+なかた,あさこ
+ながた,よしひこ
+ながと,まりこ
+なかにし,げん
+なかの,よしこ
+ながの,ひろき
+ながの,たかし
+ながの,てつや
+ながはら,よしゆき
+なかひがし,めぐみ
+なかむら,きふみ
+いぬずか,ともかず
+なかむら,ふみき
+なかむら,ひとし
+なかむら,みほ
+なかむら,まさかつ
+なかや,ゆたか
+なかや,けい
+ならさき,のぶなり
+なりた,りゅうた
+なりた,よしこ
+にいだ,ともあき
+にしかわ,いわお
+にしむら,ちぎり
+にしむら,たいいち
+にしむら,かつみ
+にしやま,とおる
+にしやま,のりまさ
+にむら,ひろゆき
+にわ,ゆきえ
+ぬまた,なおこ
+ぬまた,たかひろ
+ぬまだ,つよし
+ねぎし,いさお
+のざき,たかなお
+のがみ,ゆか
+のだ,たつや
+のはら,つよし
+のぶはら,ゆうこ
+はが,まさと
+はぎわら,ただかず
+はぎわら,かつら
+はしずめ,たかし
+はしもと,たかゆき
+はしもと,そよか
+はしもと,あきら
+はせがわ,まこと
+はせがわ,まゆみ
+はせがわ,かずたか
+はせべ,ようへい
+はた,まさひろ
+はたけやま,はずき
+はたなか,いくぞう
+はたの,あつよ
+はっとり,あきよし
+はなざき,たつや
+はなぶさ,おさむ
+はなむら,ごう
+ばば,あきこ
+はまさき,よしゆき
+はまだ,つぐき
+はやし,まなぶ
+はやし,たけひろ
+はやし,まこと
+はやし,りょう
+はら,まさひで
+はらしま,おさむ
+はらだ,なおや
+はらだ,りえ
+はるたに,たかひろ
+ひがしの,まき
+ひがしやま,ゆう
+ひぐち,しげみつ
+いしはら,たけよし
+ひじかた,ひろあき
+ひび,たつと
+ひょうえ,ともひろ
+ひらい,ひでのり
+ひらかわ,じゅんや
+ひらく,しげき
+ひらさわ,けんじ
+いのはら,たくひろ
+ひらた,くにつぐ
+ひらぬま,かずお
+ひらの,たろう
+ひらやま,しげる
+ひろうち,れい
+ひろおか,ゆかこ
+ひろかわ,けんたろう
+ふくい,まさき
+ふくだ,たかひろ
+ふくだ,すすむ
+こり,きょうこ
+ふじい,じゅんいち
+ふじい,だいぞ
+いで,ちえこ
+ふじい,ひろかず
+ふじお,たかゆき
+ふじおか,けんいち
+ふじくら,きくこ
+ふじさわ,こうじ
+ふじさわ,けんたろう
+ふじしげ,けいいち
+ふじた,けんいち
+いのうえ,のりお
+ふじと,ゆか
+ふじなが,ながまさ
+ふじわら,ともはる
+ふじわら,としき
+ふせ,かおる
+ふるかわ,まさみつ
+ふるかわ,ゆういち
+いしい,だいすけ
+ふるさわ,ひろき
+ふるた,こういち
+ふるた,よしあき
+ふるた,なおこ
+ふわ,みお
+ほし,まゆみ
+ほそだ,けいすけ
+いしい,ひろみち
+ほりかわ,なおこ
+ほりこし,ひろあき
+ほんだ,のぼる
+まえかわ,るみ
+まえだ,みなこ
+まえだ,たろう
+まえだ,たかし
+まえの,さとし
+まき,なみ
+まきぞの,さやか
+まきた,かつゆき
+まきの,むねき
+まさき,ゆずる
+ますざき,よしこ
+ますだ,ゆうすけ
+ますぶち,かずひろ
+まちだ,みゆき
+まつうら,えりこ
+まつかわ,もとよ
+まつざき,だいすけ
+まつざき,まき
+まつした,こずえ
+まつしま,ひでお
+まつだ,しげゆき
+まつだ,たかし
+まつだ,あゆみ
+まつなが,たかし
+まつなみ,こうじ
+まつばら,のりふみ
+まつばら,さとみ
+まつみや,けんいち
+まつもと,まこと
+まつもと,かずひで
+まつもと,たけふみ
+まつもと,ゆうすけ
+まつもと,ひろこ
+まつやま,ちずこ
+まなべ,りょうすけ
+まるやま,まさき
+まるやま,ひろき
+みうら,やすみつ
+みくに,ふみなり
+みずかみ,ひでき
+みつはし,のりよし
+みなと,ひろゆき
+みなみ,たかゆき
+みふね,よしひろ
+みやがわ,まさし
+みやさか,しのぶ
+みやざわ,じゅん
+むらお,まさこ
+むらかみ,まさみ
+むらた,けんすけ
+むらまつ,のぶゆき
+むらやま,としお
+むらやま,かずあき
+めぐろ,ともひこ
+もちずき,こういち
+もとよし,まこと
+ももず,ゆきこ
+もり,まさき
+もり,やすたか
+もり,みほ
+もり,たまよ
+もりた,けんじ
+もりた,けんいちろ
+もりの,みちお
+もりもと,たかし
+もりもと,ゆきこ
+もりやま,かずゆき
+もりわき,ふみあき
+やぎ,けいすけ
+やぎ,ゆたか
+やくしじ,おさむ
+やこ,つよし
+やざわ,けんいち
+やすま,けんじろう
+やとご,あい
+がん,はなえ
+やなぶ,さとし
+やの,しゅうこう
+やぶた,ひろし
+やまうち,ゆきこ
+やまうち,みつはる
+やまぐち,りょう
+やまぐち,やすまさ
+やまぐち,なおこ
+じだい,ひろあき
+やまぐち,えいた
+やまぐち,せいこ
+やまぐち,こうじ
+やまさき,やすひろ
+やまさき,じゅん
+やまざき,あつや
+やました,かずひろ
+やました,まさと
+やました,たくや
+やまだ,たかし
+やまだ,やすお
+やまだ,たつじ
+やまだ,やすひさ
+やまだ,きょうこ
+やまとや,まりこ
+やまなか,ひふみ
+やまなし,じゅん
+やまにし,なおき
+やまもと,ちか
+やまもと,かずや
+やまもと,りか
+やまもと,まなみ
+やまもと,ようすけ
+やまもと,たつや
+よこた,ともふみ
+よこた,しげゆき
+よこた,かよ
+よこて,せいいちろう
+よしおか,たかし
+よしおか,あつし
+よしおか,ひでと
+よしかわ,たくや
+よしかわ,りょういち
+よしだ,まさゆき
+よしだ,じゅんこ
+よしだ,あかね
+よしの,みのる
+よしみ,まさゆき
+よしむら,くにひこ
+よだ,のりひさ
+よねざわ,あらた
+りゅうと,けい
+わかつき,しんすけ
+わきざか,しんや
+わきた,ゆうすけ
+わきた,とおる
+わきもと,しょうこ
+わだ,たかし
+わだ,あきこ
+わたせ,だい
+わたなべ,やすはる
+わたなべ,そう
+わたなべ,ひろゆき
+わたなべ,なおこ
+わたなべ,よしたか
+きのした,ゆうこ
+あおき,よしひこ
+やなぎはら,きよし
+あまこ,よしお
+こんどう,しおり
+しらかわ,ようこ
+こやま,たかゆき
+こんど,まこと
+もり,としお
+おおの,ひでよし
+まの,あき
+ながの,すみこ
+さとう,えり
+みやざき,あや
+おがわ,あきら
+きむら,ひでとし
+よこお,けんじ
+うちむら,ちなつ
+ごしま,りゅういち
+さえき,みき
+なかじま,ひろみ
+いわみ,みほ
+えげ,れい
+うめぞの,かおり
+さくらい,まみ
+わたなべ,まや
+ながい,しょうご
+おそがみ,あつひこ
+くろかわ,まさよし
+たかすか,よしかず
+おばた,まさひこ
+しらい,ゆたか
+まつうら,まこと
+なかざわ,よしひさ
+まつい,ゆういち
+こせき,こうたろう
+つかだ,のりゆき
+てらくら,ようじ
+にへい,きよし
+かわむら,たかゆき
+ひご,まさゆき
+こばやし,きよのり
+ふるた,たかゆき
+もちずき,ひろゆき
+おかだ,たつし
+さいとう,ゆきこ
+かわはら,ゆき
+すずかけ,たくや
+いとう,あつこ
+いしずか,ひさと
+たべい,やすまさ
+ごとう,あきひろ
+しもさか,とおる
+かわい,かずま
+わたなべ,よしかず
+すずき,いつふみ
+まつやま,ひろし
+はら,りょうへい
+つばき,せいいちろう
+やすい,たかゆき
+こばやし,けんたろう
+おかべ,さゆり
+おがわ,しょうこ
+やまぐち,さとし
+ふじかわ,けんじ
+いながき,ひでとし
+ちぞ,としひこ
+はなだ,じゅんや
+おおこ,もとあき
+おおくら,すみひろ
+まつお,つとむ
+えんど,まりこ
+ほりべ,もとじ
+かつ,てつひろ
+おたか,まさのぶ
+たかはし,としや
+むらやま,ゆうこ
+よしおか,さゆり
+かい,よしえ
+たかはし,わかこ
+ぐんげ,たまよ
+やの,たい
+はやし,あやこ
+みうら,まなみ
+あおやぎ,ひろたか
+たかだ,とくひこ
+ぬまた,けんじ
+かたおか,かおる
+しみず,さちこ
+しみず,ゆうこ
+まつむら,たろう
+おりと,さとし
+こたに,ふみひこ
+おおはし,りょう
+かんせき,けいこ
+きたむら,こうたろう
+さくた,しんいちろう
+よしだ,たかし
+こはら,とおる
+いはら,けいこ
+つじうら,かずひろ
+なかむら,つよし
+あおき,あきこ
+あおやま,だいすけ
+あかいけ,ひろみ
+あかつ,じゅん
+あきはら,しゅんすけ
+あきもと,まり
+あさくら,たかし
+あさの,りょう
+あびる,あいこ
+あべ,のりたか
+あべ,ゆき
+あべ,たくや
+あべかわ,ともこ
+あらい,のりひと
+あらい,まさとし
+あらかわ,ひろき
+あらき,たかあき
+あらき,ひろし
+ありえ,まさふみ
+あんどう,けんたろう
+いいだ,じゅんいち
+いけだ,しゅんすけ
+いけだ,たけし
+いけだ,なおき
+いしい,のぶやす
+いしい,はやと
+いしがき,みやこ
+いしかわ,ゆき
+いしかわ,ゆみこ
+いしざわ,てるき
+いしずみ,しゅうへい
+いしぜき,だいすけ
+いしだ,ゆうじ
+いしだ,れいこ
+いしだ,よしたか
+いしづ,たかし
+いしはら,ふみなお
+いしまる,しゅういち
+いたに,たかし
+いたはら,ひさつぐ
+いちま,なおと
+いとう,ゆうこ
+いとう,ゆういちろう
+いとう,ひろかず
+いとう,あきこ
+いとう,しずこ
+いとう,おき
+いとう,つよし
+いとう,ひろゆき
+いながき,しげき
+いなみ,れお
+いの,みき
+いのうえ,まさき
+いのうえ,たかし
+いまお,じゅんぺい
+いまだ,けんいち
+いわかみ,ゆうすけ
+いわくら,ゆたか
+いわざき,ひろたか
+いわた,こうじ
+いわもと,ひろき
+うえすぎ,じゅんこ
+うえだ,まさや
+うえたか,しょうじ
+うえち,まり
+うえの,けんじ
+ひりゅう,こうじ
+うえむら,まさひろ
+うちだ,あや
+うちだ,きいち
+うちはし,ごう
+うちやま,れみ
+うめはら,なつこ
+うりたに,ますみ
+おいかわ,けんたろう
+おおい,ともゆき
+おおい,かよこ
+おおいし,まさひこ
+おうち,けんしん
+おおえ,だいすけ
+おおおか,まさひろ
+おおかわ,まさや
+おおくぼ,りょう
+おおくま,のりひろ
+おおた,のぶひろ
+おおたに,しずか
+おおつ,ちえ
+おおつ,てつや
+おおつか,じゅん
+おおつか,てるひろ
+おおつか,あきら
+おおつか,けい
+おおつぼ,まさみつ
+おおはた,あきこ
+おおまさ,たつお
+おおや,けいじ
+おおやま,たいすけ
+おか,たろう
+おかじま,みつのぶ
+おかだ,たつや
+おかだ,ちひろ
+おかだ,のりよし
+おかだ,さとし
+おかだ,るみ
+おかはた,たつや
+おかべ,やすまさ
+おかもと,ひさし
+おかもと,よしのり
+おかもと,ひでき
+おがわ,けいこ
+おがわ,だいすけ
+おくだ,こうへい
+おくと,さち
+おくなか,せいし
+おぐら,たろう
+おざき,のぶあき
+おさだ,ひろし
+おざわ,ひろみ
+おじま,まこと
+おじま,まさし
+おばら,ゆりこ
+かいとう,たかし
+かきくら,まさゆき
+かきもと,てつや
+かく,こうじ
+かげやま,ただひさ
+かじなが,ゆたか
+かしま,よしひこ
+かたおか,たかひろ
+かたぎり,なつこ
+かたやま,まひと
+かど,ゆみこ
+かとう,りつこ
+かとう,りょう
+かとう,ふみ
+かとう,れいこ
+かとう,すみれ
+かとう,ひろし
+かとう,てつや
+かとう,さとし
+かとう,わたる
+かとう,こういちろう
+かなもと,あきこ
+かなや,しんや
+かねこ,よしかず
+かねもり,ゆう
+かわ,よしかず
+かわい,こうじ
+かわい,はるこ
+かわかみ,まさおみ
+かわぐち,ちかこ
+かわぐち,しゅんすけ
+かわぐち,としひこ
+かわぐち,ひろき
+かわぐち,すすむ
+かわごいし,たかゆき
+かわしま,ごろう
+かわな,たけし
+かわのべ,ゆきこ
+かんの,やすのぶ
+きくち,のぞみ
+きし,れいこ
+きしもと,たけし
+きしろ,やすし
+きたお,しん
+きたはま,たけのり
+きたむら,よしのり
+きどころ,あつし
+きむら,こういち
+きむら,まこと
+きむら,あいこ
+きりあけ,えいさく
+くきもと,としき
+くぼ,くにゆき
+くぼた,まゆみ
+くまくら,りか
+くまだ,ゆうすけ
+くまもと,ひろあき
+くめ,まさひと
+くらや,こうへい
+くりわき,まきこ
+くわばら,ゆかり
+ごう,てるお
+こいけ,さとる
+こいけ,れおな
+こさか,むつみ
+こうだ,あやこ
+こが,こういち
+こくぼ,ももえ
+こくら,りえ
+こご,りゅうじ
+こさき,りょうすけ
+こじま,ひろこ
+こでら,かずと
+ごとう,だいすけ
+ごとう,けいこ
+ごとう,かずのり
+こはた,ちよみ
+こばやし,とおる
+こばやし,なほこ
+こまつばら,みほ
+こみや,とくこ
+こみやま,まさよし
+こやなぎ,しんや
+こやま,たかこ
+こんど,のぶか
+こんの,のぶほ
+さいとう,ひろひで
+さいとう,しげる
+さいとう,けんいち
+さいとう,けんご
+さいとう,あい
+さかい,りょうすけ
+さかの,ゆきこ
+さかもと,わたる
+さかもと,ちから
+さくらい,まさふみ
+ささき,よしこ
+ささき,たけゆき
+ささき,ゆきお
+ささき,さき
+ささき,やすひろ
+ささの,あかぎ
+さだもと,げんこう
+さとう,ひろき
+さとう,ゆういちろ
+さとう,たかし
+さとう,たかひろ
+さとう,ともこ
+さなだ,まさゆき
+さねしげ,としのぶ
+さの,かずひこ
+しげとみ,さとこ
+しのはら,もりひこ
+しばかわ,けんじろう
+しばの,りょう
+しまだ,たけし
+しまだ,たつろう
+しみず,たかお
+しむら,たかのり
+しむら,たけし
+しもかわ,ともや
+しもふじ,のぶひこ
+しもやま,ひでかず
+しょう,ひろゆき
+しらい,りえ
+しらが,こうじ
+しらかわ,やすこ
+しらす,みゆき
+しわ,けんいち
+しんけ,ないしん
+しんどう,ともかず
+すがはら,ひろかず
+すぎうち,しょうたろう
+すぎうら,ちあき
+すぎさわ,ようこ
+すぎはら,ひろのぶ
+すぎもと,てるゆき
+すぎやま,たつや
+すずき,まさゆき
+すずき,しんいち
+すずき,たいすけ
+すずき,まこと
+すずき,まさや
+すずき,りゅうた
+すずき,のりこ
+すずき,みかこ
+すだ,りんや
+すと,てつや
+すみだ,あきひろ
+せき,あつなり
+せき,かずき
+せんだ,ゆきこ
+そめみや,ちえ
+そや,ひろき
+だいまる,あきら
+たかお,はなえ
+たかぎ,かよ
+たかざわ,だん
+たかせ,けんじ
+たかね,さとし
+たかはし,じゅんこ
+たかはし,たかし
+たかはし,ひろなお
+たかはし,ひろゆき
+たかはし,まなぶ
+たかやま,ゆきお
+たきうち,りえ
+たきかわ,あきら
+たきぐち,けんたろう
+たきざわ,さとし
+たきざわ,こうじろう
+たきざわ,ちひろ
+たきた,あきら
+たぐち,けんたろう
+たけい,くにお
+たけうち,しんご
+たけだ,ゆういちろ
+たけはら,ようこ
+たての,なおたか
+たなか,だいすけ
+たなか,すすむ
+たなか,あきら
+たなか,なお
+たなか,せいじ
+たなか,とおる
+たなか,なおこ
+たなか,えりこ
+たなか,みつえ
+たなべ,しんいちろう
+たに,ちかよ
+たにかわ,よしつぐ
+たになか,ひろたか
+たにもと,ちずる
+たぬま,ふみひこ
+たばた,じゅん
+たばた,こ
+たばた,ようすけ
+たばた,けいたろう
+たむら,こういち
+たるき,ゆき
+たんじ,きよのり
+ちば,かずゆき
+ちば,ひろかず
+つかだ,りえ
+つきもと,あつし
+つじ,ひろし
+つだ,きみひこ
+つちもと,しんご
+つつみ,ともこ
+つつみ,じゅんいち
+つぼた,まさや
+てい,わかみ
+てらかど,みつあき
+みのうら,まなぶ
+てるい,まり
+どい,こうたろう
+とう,まきこ
+とうかいりん,ゆみ
+どうめん,えつこ
+とうかい,かおり
+とくなが,きみたか
+とくやま,たいが
+としま,みわこ
+どうち,ともゆき
+とのい,あきこ
+とのむら,りえこ
+とみた,くにお
+ともの,ひでかず
+とりい,まもる
+ながい,とものり
+なかがわ,いくま
+なかがわ,よしのり
+なかがわ,だいすけ
+なかざと,もとのぶ
+なかしま,ちかこ
+ながた,ゆか
+なかの,かな
+ながの,りょうた
+ながの,りょう
+なかむら,ようこ
+なかむら,さとし
+なかむら,たけし
+なかむら,てつや
+なかもり,とくこ
+なかやま,ともひろ
+なるせ,たかし
+なんご,まさき
+なんば,けん
+なんば,こうじ
+にいみ,こうへい
+にしお,ようじ
+にしおか,しんいち
+にしおか,ともこ
+にしさか,まみ
+にしざき,たくま
+にしざわ,なおき
+にしの,さとし
+ぬまたき,もとき
+ねぎし,りか
+ねやま,たけし
+のだ,ちあき
+のぐち,のりこ
+のぐち,ようすけ
+のぐち,けいじ
+のぐち,しんきち
+のざき,だいすけ
+のだ,ひろこ
+のぼり,よしひろ
+のむら,しゅういち
+のむら,みさこ
+のむら,けんじ
+はぎわら,しょうたろう
+はしぐち,としひろ
+はしもと,たかふみ
+まき,かずと
+はせがわ,たけお
+はせがわ,おさむ
+はだ,あやこ
+はっとり,ゆういち
+はっとり,まゆこ
+ばば,まさき
+ばば,けんじ
+ばば,しんいちろう
+ばば,りかこ
+はまだ,くみこ
+はまだ,だいじ
+はまだ,りさ
+はまだ,ふみひろ
+はまの,まさゆき
+はやし,あきのり
+ひぐち,こうき
+ひさつね,まこと
+ひしぬま,あつし
+びょうどう,ひろこ
+ひらい,まさかず
+ひらおか,みき
+ひらかわ,ともひろ
+ひらさわ,たくじ
+ひらしま,じろう
+ひらた,まみこ
+ひらの,やよい
+ひるま,ゆういち
+ひろせ,ひでき
+ひろせ,かつよし
+ひろた,ひろし
+ふくい,あずさ
+ふくだ,たかし
+ふくば,かなめ
+ふくむら,ゆみこ
+ふくもと,だいすけ
+ふじい,けん
+ふじい,ゆき
+ふじい,みわ
+ふじえだ,ひさかず
+ふじた,ひでかず
+ふじた,ゆきこ
+ふじつ,たけし
+ふじの,たかほ
+ふじもと,さとこ
+ふじわら,たくと
+ふじわら,りな
+ふじわら,くみ
+ふるかわ,りょう
+ほ,まさのり
+ほしの,むねとも
+ほそかわ,てるひこ
+ほりかわ,しゅうじ
+ほんごう,よしあき
+まえだ,あつし
+まおか,つとむ
+ますぶち,つよし
+ますみつ,きょうへい
+まつい,けんたろう
+まつお,ひでのり
+まつおか,きょうすけ
+まつおか,さちこ
+まつだ,りょう
+まつばら,あきこ
+わたなべ,だいすけ
+まつやま,たけし
+まつやま,みつてる
+まつやま,よしき
+まとば,ともひろ
+みうら,まさき
+みつぎ,たけし
+みと,しゅういち
+みのうら,やすひさ
+みや,あきら
+みやけ,ひでまさ
+みやした,あい
+みやした,ゆきお
+みやた,あきひろ
+みやもと,たつや
+みやもと,くにこ
+みやもと,まさひろ
+むくだ,ともあり
+むしか,ゆきこ
+むとう,あきら
+むらかみ,ゆか
+むらかみ,かなこ
+むらかみ,たつひろ
+むらかみ,ひでつぐ
+むらたに,もとひろ
+むらまつ,まさこ
+むらやま,よしあき
+もちずき,としひこ
+もりぐち,みさと
+もりた,まみ
+もりばやし,こうめい
+もろと,ひろたつ
+やえがし,ひでゆき
+やおやま,げんた
+やがみ,よしひろ
+やぎ,けいじ
+やぐら,しんじ
+やすこち,のぼる
+やすだ,ゆうすけ
+やすだ,のりこ
+やまぐち,ゆうすけ
+やまぐち,しょうしん
+やまだ,わいけん
+やまだ,みずほ
+やまだ,あきら
+やまみち,かつゆき
+やまもと,じゅんこ
+やまもと,ひろみ
+ゆき,まみこ
+ゆみば,けいいち
+ゆら,けんいち
+よこすか,はるのぶ
+よこた,あい
+よこやま,あやこ
+よしおか,なおこ
+よしおか,かずひろ
+よしざわ,ゆうこ
+よしだ,みつる
+よしだ,あかり
+よしだ,たかし
+よしの,かずみ
+よしむら,ゆうこ
+りゅう,えいじ
+ろく,あきこ
+さかもと,けいこ
+わたなべ,れいな
+わたなべ,ゆふこ
+わたなべ,ゆう
+わたなべ,たかこ
+わたなべ,やよい
+わらび,ひろのり
+のざわ,ゆうこ
+くぼ,やすこ
+よしもと,こ
+やまもと,たかし
+やまもと,たかし
+ひろさわ,りえ
+みひら,りょうへい
+おおの,ひろゆき
+おだ,かずひこ
+おおばたけ,みほこ
+かどえ,あい
+にしだ,とよひろ
+まつもと,よしあき
+みぎた,まな
+みやもり,みお
+やました,まどか
+やまだ,しんご
+のりとみ,ちえ
+いけだ,ゆうすけ
+もりた,りょうじ
+たけうち,りょう
+みた,よしのり
+いぬい,けん
+とう,のりゆき
+まきの,まり
+なつめ,しんや
+おのでら,くにひろ
+おおた,みきこ
+うるしさこ,りつこ
+さかきばら,しげのり
+あおき,えいすけ
+あおき,なおと
+あおき,ゆうこ
+あかがわ,もとこ
+あかつか,かずひと
+あかほり,けいじろう
+あきやま,かずひろ
+あさい,てるみ
+あさい,しんぺい
+あさおか,けんじ
+あさぬま,あや
+あそ,なおふみ
+あたけ,としき
+あだち,しんご
+あべ,たかみち
+あべ,のぶやす
+あべ,ゆきえ
+あらい,つよし
+ありま,ともこ
+いいずか,だいすけ
+いがらし,ゆたか
+いけだ,こずえ
+いけだ,けんたろう
+いけはた,ひろき
+いざわ,ちはる
+いしい,やすし
+いしかわ,りょうこ
+いしぐろ,あきひろ
+いしだ,こうたろう
+いしだ,たつお
+いしばし,としゆき
+いしはら,たかひろ
+いしもと,まゆこ
+いそはた,あさこ
+いたみ,たかあき
+いちかわ,なるたか
+いっしき,たつや
+いで,なるみ
+いで,こうじ
+いとう,まゆみ
+いとう,じゅんぺい
+いとう,まさお
+いとう,なつこ
+いとう,まい
+いのうえ,まこと
+いのうえ,ようすけ
+いのうえ,なおき
+いのうえ,かつき
+いのくち,のりゆき
+いまい,りほ
+いまきゅうれい,れいこ
+いまぜき,くみこ
+いまむら,ますみ
+いまむら,けんいちろ
+いわい,さとる
+いわい,たかし
+いわさき,ともこ
+いわせ,すすむ
+いわた,こうじ
+いわで,けんたろう
+いわむら,まさひと
+うえだ,ふみお
+うえの,まさふみ
+うえの,しんじ
+うかい,ひろき
+うさみ,まりこ
+うちうみ,りえこ
+うちやま,まさふみ
+うらはら,たいじ
+えぎ,たかひこ
+えじり,ひろし
+えのきど,よりこ
+えもり,いつき
+えんど,はじめ
+おおい,なつこ
+おおいけ,ともかず
+おふら,だいすけ
+おおかわ,よしこ
+おきた,ゆきのり
+おおさわ,まさゆき
+おおた,ともこ
+おおた,あきなお
+おおた,ようへい
+おおたに,たかあき
+おおたに,ゆきひで
+おおつか,もとい
+おおつか,よしのり
+おおつか,だいじろう
+おおつき,さとる
+おど,たくみ
+おとんべ,たつや
+おの,まさひこ
+おの,ひろし
+おおはし,たつや
+おおはた,あきら
+おおみち,みほ
+おおやま,みきひと
+おかざき,たつふみ
+おかじま,みなこ
+おかだ,かずひろ
+おかだ,たくま
+おかもと,たけし
+おかもと,だいすけ
+おがわ,じゅん
+おぎた,としふみ
+おくくぼ,たかし
+おちあい,とものり
+おまた,けん
+かさ,ゆきこ
+かしわ,だいすけ
+かとう,こうへい
+かとう,ただし
+かない,けんいち
+かなやま,だいすけ
+かねこ,ふみや
+かねつき,じゅんや
+かねまる,あずさ
+かべうち,なおと
+かみむら,かおり
+かみや,さちこ
+かみや,こういちろう
+かわい,ゆみこ
+かわい,ひろし
+かわかみ,らい
+かわさき,やすひろ
+かわさき,てつあき
+かわさき,ひろき
+かわしま,たかお
+かわた,けいいち
+かわまた,こうた
+かわもと,けいすけ
+きしもと,あきよし
+きしろ,けいた
+きだ,えいすけ
+きたおか,じゅん
+きたの,まさひこ
+きたはら,そうへい
+きたむら,たろう
+きたもと,みほ
+きむら,たけひろ
+きむら,ふみと
+きもと,けいこ
+きん,よしゆき
+くしやま,あきよ
+くどう,とものり
+くどう,しゅんすけ
+くめうち,けんじ
+くらしげ,こうじ
+くらち,かずひろ
+くらなか,たけし
+くりはら,ようすけ
+くろき,まさき
+くろさか,ようこ
+くわはら,しの
+ゆえ,かつのり
+こいずみ,しんや
+こうじま,よしひこ
+こうだ,かつゆき
+こんの,けんいち
+こが,しょういち
+こが,たくじ
+こくぶん,ちかこ
+こさか,あきこ
+こって,まいこ
+はたなか,たかし
+こばやし,ゆか
+こばやし,ひでき
+こばやし,あんな
+こばやし,のりあき
+こばやし,きみひこ
+こまつ,しんすけ
+こまつばら,ふみ
+こめだに,てつろう
+さいき,あつし
+さいとう,けんいち
+さかい,ひろあき
+さかぐち,たろう
+さくま,ゆきこ
+さこ,まや
+ささい,なおや
+ささお,かずきみ
+ささき,はなこ
+ささき,まさお
+さとう,かつひこ
+さとう,かずゆき
+さとう,ひろひと
+さとう,まさき
+さとう,みき
+さとう,まさこ
+さとう,みき
+さとう,のぶゆき
+さとう,りょうさく
+さの,まさこ
+さの,なぎさ
+さはら,たかふみ
+さるやま,たかゆき
+さわぐち,あや
+しい,えみ
+しおざき,ひであき
+しおだ,えいじ
+しき,まさる
+しだ,よしひろ
+しのはら,ひとし
+しのはら,ひさし
+しぶさわ,ようすけ
+しまだ,りゅうた
+しまだ,みほこ
+しまだ,けんたろう
+しみず,たつお
+しみず,わたる
+しみず,ともこ
+しみず,さとこ
+しみず,じゅんいち
+しみず,じろう
+しも,きぬえ
+しもざき,たつひこ
+しもじま,えいいちろう
+しもつ,たかひろ
+しもの,あきひこ
+しもや,よりこ
+しらす,しんご
+すぎうら,まさのぶ
+すぎうら,としろう
+すずき,ともみ
+すずき,えりこ
+すずき,ゆうすけ
+すずき,よしのり
+すずき,よしき
+すと,さとし
+すなだ,さとし
+すやま,だいすけ
+せお,かおり
+せき,こうへい
+せきね,みつる
+せきば,まき
+せと,けいじ
+せんごく,のりひさ
+せんだ,ゆうこ
+せんば,みずほ
+そめや,けいご
+たかぎ,ひでき
+たかぎ,あい
+たかぎ,のりゆき
+たかせ,よういちろう
+たかだ,ようすけ
+たかはし,やすゆき
+たかはし,よしのり
+たかはし,たかのり
+たかはし,まさと
+たかはし,みか
+たかはし,やすひろ
+たかみざわ,こずえ
+たきざわ,けいぞう
+たぐち,きょうこ
+たけした,けん
+たけだ,かずま
+たけだ,ゆうじ
+たけだ,こうじ
+たけなか,たかひろ
+たけはら,みきこ
+たけやま,みつる
+たじ,みか
+ただ,よしたか
+だて,くみこ
+たなか,ちかふみ
+たなか,のりひこ
+たなか,たくなが
+たなか,たかゆき
+たなか,たかゆき
+たにぐち,たかのり
+たにこし,けんたろう
+たにの,たかあき
+たぶき,たろう
+たぶち,よしひと
+たまおき,まさよし
+たまがわ,ともこ
+たむら,けいこ
+ためのり,ようへい
+たんの,えり
+たんぼ,あきひこ
+ちだ,かつひさ
+ちねん,ゆき
+つがねざわ,のぶゆき
+つかはら,みずほ
+つちや,まゆみ
+つちや,ようすけ
+つちや,やすゆき
+つずき,まみ
+つずらはら,さちこ
+つねよし,てるのぶ
+つぼうち,あきふみ
+つるしま,りえ
+でぐち,たくや
+てずか,みつのぶ
+てらかわ,たかし
+てらぐち,むねのり
+てらしま,けんじ
+てらだ,よしき
+とがし,だいすけ
+とくむら,こういち
+とざわ,ゆうこ
+とびおか,たけし
+とまりの,じゅんこ
+とみい,じゅんこ
+とみざわ,あや
+とみた,たいち
+とみた,ゆうた
+とみなが,ようこ
+とよだ,そうたろう
+とらたに,まさこ
+ないとう,たかお
+ながい,ちえ
+ながい,じゅんこ
+なかいけ,しんご
+なかうえ,だいすけ
+ながお,りょうこ
+なかこじ,さやか
+ながさか,こうじ
+なかじま,ゆきこ
+なかじま,まり
+ながた,かつや
+ながた,あつひさ
+ながた,なおき
+なかつる,ひろあき
+ながの,やすお
+なかむら,さとる
+なかむら,ひろし
+なかむら,くみこ
+なかむら,ひろし
+なかむら,ゆか
+なかむら,まさあき
+なかむら,えいじ
+なつはら,さやか
+なりさだ,しんすけ
+なんぶ,のぶゆき
+にかいどう,ともや
+にし,そういちろう
+にし,なおゆき
+にしお,としや
+にしかわ,けんじ
+にしくら,さとこ
+にしざわ,いさむ
+にしざわ,えりな
+にしだ,しんいち
+にしだ,りょうへいた
+にしやま,ひさのり
+ぬのや,しげお
+ぬまざき,ゆきお
+ぬまた,たけし
+のどみ,りな
+のみ,まさき
+のぐち,かずよし
+のじま,てるあき
+のじり,としゆき
+のだ,みきこ
+のだ,ゆきこ
+のむら,しんへい
+のむら,かずえ
+のむら,かずお
+はこしま,わたる
+はしもと,りょう
+はしもと,けい
+はせがわ,けんたろう
+はたけやま,ゆふこ
+はった,ゆひ
+はっとり,さとみ
+はない,たけはる
+はなだ,けいすけ
+はまぐち,けん
+はまだ,まなみ
+はまだ,けいこ
+はまの,たかゆき
+はやかわ,ゆき
+はやし,てつお
+はやし,ともなが
+はやし,けんたろう
+はら,ちかこ
+はら,やすあき
+はらだ,みえ
+ひえかた,さとこ
+ひがさ,あつし
+ひがみ,せいじ
+ひきの,てつじ
+ひだ,たかし
+ひだか,しん
+ひでしま,みきこ
+さかい,じゅんや
+ひらい,はやと
+ひらいわ,えつこ
+ひらた,ひでき
+ひらばやし,なおゆき
+ひろせ,あやこ
+ふかお,みゆき
+ふくい,ひでひこ
+ふくざき,みれい
+ふくだ,ようへい
+ふくだ,やすひろ
+ふくだ,まさる
+ふくだ,じゅんいち
+ふくはら,ゆきこ
+ふくむろ,ひろふみ
+ふじうら,あや
+ふじおか,こういちろう
+ふじおか,まや
+ふじた,しげる
+ふじもと,ゆかり
+ふじもと,えりこ
+ふじわら,あきひろ
+ふたむれ,いさお
+ふるさわ,いちろう
+ふるた,ひさお
+ふるや,ひでお
+ほこら,まつお
+ほしの,すみお
+ほしの,たもつ
+ほその,ひろみち
+ほり,とし
+ほりうち,えつお
+ほりおか,やすお
+ほりぐち,じゅんいち
+ほんま,いさお
+まえかわ,ともゆき
+まえじま,こうじ
+まえだ,としひろ
+まえはら,としひこ
+まき,しげのり
+まきの,たけお
+ますい,ひろし
+ますだ,きよし
+ますだ,まさみつ
+まつい,かんじ
+くまがい,かつひこ
+かねこ,りょうじ
+こみや,のぼる
+こがいと,みちこ
+かんばやし,てるまさ
+きのした,はるひこ
+きくち,みのる
+こまば,ゆたか
+こくぶ,みつこ
+こばやし,ひろし
+こばやし,てるお
+きつたか,ちゅうけん
+まつお,たかゆき
+かわい,まなぶ
+くりはら,とおる
+かどの,ひろよし
+かみくぼ,けんじ
+かわぐち,たかし
+かまた,まさもと
+かんだ,かずみ
+かんだ,みつお
+こしむら,としゆき
+まつお,きよし
+くさき,じゅんじ
+かもはら,まさふみ
+かさじま,としまさ
+まつき,よしかず
+かみくら,つねお
+くりはら,のぶあき
+なかち,きよし
+かがわ,しんいち
+こばやし,せいじ
+かんの,としお
+まつした,ふみお
+かしわだ,おさむ
+こんの,かずお
+こすぎ,よしみ
+こもり,としろう
+かわの,ゆきお
+きたむら,たけひこ
+かじま,てつや
+かとう,ひでお
+こやの,ゆきお
+かつまた,としかず
+くわだ,けいじ
+こたに,やまと
+かじうち,のぶこ
+こんど,たかし
+こんど,よしかず
+まつなみ,しんや
+かがやま,まさはる
+かねこ,やすひこ
+こやま,やすはる
+きつかわ,こうせい
+かしくら,かんじ
+くろき,よしゆき
+こいずみ,しゅうへい
+くぜ,みきお
+かわかみ,けいこ
+かみ,さちお
+きむら,とおる
+まつの,かずひさ
+きくた,おさむ
+くまだ,まさあき
+くにはら,しゅんいち
+こじま,ゆたか
+くりはら,まさのり
+よねくら,よしたみ
+こばやし,つねお
+こばやし,てつお
+こじょう,さなえ
+きむら,じゅんいち
+こばやし,まさあき
+こんど,のぶかず
+かわい,としかつ
+くまはら,けんじ
+きせ,みちやす
+かしくま,けんぞう
+かこ,じゅんいち
+いしがい,よしあき
+かみぐち,ただし
+くもだ,としお
+こまつ,しょういち
+かねだ,みつお
+きくち,よしひさ
+こたに,よしゆき
+こばやし,やすと
+かわぐち,よしお
+かねこ,ひろあき
+かも,よしあき
+かわむら,えいじ
+くまの,まさゆき
+こばやし,よしえ
+きむら,かずひさ
+きしもと,ひろひさ
+きむら,きしお
+かみぐち,てつや
+きむら,まさはち
+こばやし,しゅんじ
+かどくら,かなこ
+きたむら,ひでよ
+かつき,ひさし
+かんざき,まさのぶ
+かたぎり,いくみ
+こばやし,のぶこ
+こまつざき,こうぞう
+きた,ひろのり
+かつはら,しゅう
+こぐれ,あきえ
+こじま,あつし
+こめだ,ひさし
+こにし,けんいち
+くわはら,やすまさ
+こやま,ひであき
+まつもと,のりゆき
+かじもと,よしあき
+くまざわ,かつみ
+きむら,としお
+こばしがわ,ひとし
+かみや,ゆう
+まつもと,しょうじ
+こはし,えいぞう
+こだま,ぜんいち
+かわかみ,かずみ
+まつもと,はるお
+かいど,みほ
+きむら,としお
+くご,きよみ
+まつもと,よしゆき
+まつやま,りょうすけ
+まるやま,さちこ
+こんの,きよし
+くろき,じゅん
+こみや,りょうこ
+きむら,なおゆき
+きの,みあ
+こまつ,ゆき
+かねちか,りょうすけ
+かなたに,りえ
+こばやし,よしろう
+きたやま,かなこ
+かじ,ひろこ
+かわしま,なおき
+きむら,まきこ
+こばら,たくま
+きたがわ,なおたか
+まるやま,なほこ
+かもん,まさし
+みうら,たかし
+みしま,かつひろ
+みすぎ,ともあき
+みずた,じゅんこ
+みずもと,なるき
+みぞぐち,まさこ
+みずか,ゆたか
+みなみ,たける
+みなみたに,まさと
+みねた,ゆきこ
+みやい,こうた
+みやおか,けんろう
+みやざき,まゆみ
+みやざき,じゅり
+みやはら,たつひこ
+みよし,あきのぶ
+むらかみ,まさひで
+むらき,あつこ
+むらた,けんじ
+むらた,みちや
+むらた,めぐみ
+むらやま,まさこ
+もとの,やすまさ
+もり,としゆき
+もり,なお
+もりた,ひでとも
+もりた,りえ
+もりやま,あつし
+もりやま,かおり
+やざわ,かずこ
+やじま,ともひろ
+やなぎだ,えりこ
+やまがた,けいいち
+やまかわ,しんや
+やまぐち,さとみ
+やまぐち,ゆき
+やまぐち,ただゆき
+やまさき,まさき
+やまざき,けん
+やました,しゅくほ
+やまだ,よしあき
+やまだ,けんいち
+やまだ,しゅん
+やまなか,まさし
+やまね,しんご
+やまもと,やすのり
+やまもと,かずひろ
+やまもと,ひでゆき
+ゆかわ,さとし
+ゆざ,あきこ
+ゆたに,りえ
+ゆたに,だいすけ
+よご,とものり
+よこぼり,まさたけ
+よしおか,ただあき
+よしかわ,ひろみ
+よしだ,ひろたか
+よしだ,きょうこ
+よしもと,もとお
+よねだ,ゆみこ
+わかさや,しずか
+わたなべ,じゅんいちろ
+わたなべ,やすひろ
+みつやま,まさみ
+ひらおか,りさ
+かんの,かつと
+わこ,りえ
+あおき,わたる
+あかお,まさのり
+あかぎ,りょうへい
+あかし,ひろこ
+あかつか,やすゆき
+あかはね,ひろあき
+あかほり,ゆうこ
+あきもと,ちえ
+あきやま,みほ
+あさい,まさかず
+あさの,やすひろ
+あさひ,あさこ
+あさべ,かよ
+あはれん,だいすけ
+あべ,としひこ
+あべ,かおる
+あべ,ひろふみ
+あまの,まさみ
+あめもり,ありさ
+あらい,ひでお
+あらい,えつこ
+あらい,かつひろ
+あらたに,さつき
+ありなか,ともひろ
+いいご,のりあき
+いいだ,まゆみ
+いけだ,よしたか
+いこが,えみこ
+いしい,かおり
+いしおか,たかし
+いしざか,ゆきえ
+いしじま,みお
+いしだ,ゆい
+いしど,ゆきこ
+いしの,たかお
+いしまぶし,あきひと
+いせり,おとひこ
+いそべ,はるか
+いたに,たかあき
+いずの,みつひろ
+いでの,ようへい
+いとう,ようこ
+いとう,みつたか
+いとう,よしあき
+いとう,ゆかり
+いとう,まな
+いとう,たけし
+いとやま,あつし
+いな,あきら
+いなさき,やすのり
+いなば,ようすけ
+いなば,ただし
+いのうえ,たけし
+いのうえ,のぶたか
+いのうえ,まりこ
+いべ,きょうこ
+いまい,ゆきえ
+いまおか,しゅうへい
+いまむら,まさし
+いわた,たけひろ
+いわた,よしひろ
+いわた,おさむ
+いわみ,ゆうこ
+いわもと,けんいちろ
+うえだ,れいこ
+うえの,さら
+うえはら,たかのり
+うかい,ひさなが
+うだがわ,ゆういち
+うちやま,ひろまさ
+うつみ,ひろゆき
+うつみ,まりこ
+うの,まこと
+えがしら,しゅんすけ
+えとう,ひろき
+えとみ,ひでみ
+えんど,めぐみ
+えんど,ひろき
+おかど,たかひさ
+おおくら,ひろこ
+おおさか,たてき
+おおさか,こうたろう
+おおさわ,さち
+おおすみ,さとこ
+おた,ちえこ
+おおたに,まこと
+おおにし,まさひろ
+おおにし,みつる
+おおにし,むさし
+おおにし,まさお
+おおの,なほこ
+おおの,みかこ
+おの,ようこ
+おまつ,ようすけ
+おむら,ともこ
+おおや,ゆきえ
+おか,のりひと
+おかい,けんいち
+おかうち,とものり
+おかだ,ゆうき
+おかだ,まりこ
+おかの,やすふみ
+おかむら,あかり
+おかもと,そう
+おがわ,いずみ
+おがわ,こずえ
+おがわ,きんや
+おがわ,みちこ
+おがわ,たくや
+おがわ,ゆみこ
+おぎの,えりこ
+おく,さやか
+おくかわ,ひろあき
+おくだ,あきお
+おくむら,さとこ
+おざき,たかゆき
+おじま,たかし
+おぜき,けいいち
+おだ,ひろゆき
+おだ,あつこ
+おちあい,なおき
+おとがわ,りょうこ
+おの,みずき
+おおはら,けいこ
+かいじま,けんた
+かがわ,ともみつ
+かきお,たかや
+かけひ,ともみ
+かさい,なおこ
+かさみ,よしふみ
+かじた,けいいち
+かじたに,まさなり
+かしま,やすひろ
+かしま,ゆうこ
+かじもと,あやこ
+かすが,さなこ
+かせ,れいこ
+かたぎり,かずしげ
+かたやま,りょうこ
+かたやま,ゆうじ
+かとう,ひとし
+かとう,くにあき
+かとう,けんいちろ
+かなざわ,ひろかず
+かねみつ,とものり
+かのう,ゆきえ
+かまた,ひろたか
+かみざき,まさとし
+かみ,よういち
+かめたか,たいすけ
+かも,けんや
+かわい,ともかず
+かわい,じゅり
+かわかみ,たかし
+かわかみ,みお
+かわぐち,あゆみ
+かわぐち,かずひで
+かわぐち,さとし
+かわさき,じん
+かわさき,なおき
+かわなみ,あきこ
+かわね,かなこ
+かわばた,あゆみ
+かわむら,もう
+かわもと,ゆう
+かんだ,みどり
+かんだ,なおし
+かんの,まさこ
+きしもと,けんたろう
+きたがわ,たけし
+きたはら,ともはる
+きたむら,しょう
+きたむら,しんご
+きぬや,としみ
+きのした,てつ
+きはら,たつや
+きむら,よしかず
+きむら,まさひろ
+きむら,あきよし
+きむら,じゅん
+きよしま,はるみ
+きよずか,ゆき
+きら,たかし
+きりさこ,てっぺい
+きん,さゆり
+きん,なおこ
+くにえだ,かずあき
+くぼ,ごう
+くまの,たけと
+くらた,あきひろ
+くらはし,たかあき
+くれ,とおる
+くろい,よしたか
+くろき,ゆうこ
+くわの,ひろたか
+ごう,さえ
+ごうだ,たけひろ
+こが,けい
+こくしょう,つよし
+こさか,しゅういちろう
+こじま,りょうすけ
+こぞの,あいわ
+こだま,いくお
+こてら,きみひろ
+こでら,しんたろう
+ごとう,ただのり
+ごとう,ひろこ
+こにし,みさき
+こにし,ようこ
+こにし,ともや
+こばやし,なつこ
+こばやし,こうじ
+こばやし,ちえ
+こばやし,つよし
+こぶせ,ひでゆき
+こまき,ひろなお
+こまざわ,たかまさ
+こまつばら,ともひさ
+こやま,いちろう
+こんど,ひろこ
+さいき,かおる
+さい,かずや
+さいとう,きょうこ
+さいとう,こういち
+さいとう,てるひさ
+さいとう,はじめ
+さいとう,ひろみ
+さいとう,ふみこ
+さいとう,ひとし
+さいとう,まきこ
+さかい,たかゆき
+さかみ,たかし
+さかもと,こうじ
+さかもと,ひでき
+さかもと,まさよし
+さかもと,ななこ
+さかもと,よういちろう
+さくらい,さだよし
+さくらぎ,なほこ
+ささき,まさき
+ささき,ゆみえ
+さとう,ふくたろう
+さとう,しゅうさく
+さとう,たかし
+さとう,あき
+さとう,けんいちろ
+さとう,かずみち
+さとう,ゆみ
+さとう,りょうすけ
+さの,とおる
+さの,りょうすけ
+さわさき,たかし
+さわだ,ひろこ
+さんぺい,さとる
+しおずか,あつし
+しの,かずのり
+しばた,かずたか
+しま,じゅん
+しまの,としあき
+しみず,よしこ
+しみず,まみ
+しもかわ,よしおみ
+しもむら,えいぶ
+しゅくり,まなみ
+しょうじま,たつお
+しょうだ,くみ
+しらいし,のりかず
+しらかた,じゅん
+しらさき,ももこ
+しろた,まさひろ
+じんぐうじ,しげかず
+しんたに,けんた
+しんぼ,のぶゆき
+じんぼ,もとはる
+しんむら,ひでとし
+すがい,つとむ
+すぎもと,みほ
+すぎもり,ひろこ
+すぎやま,たかね
+すぎやま,じゅん
+すぎやま,たくま
+すずき,きくこ
+せがわ,じゅん
+せき,けんじ
+せきね,ひろし
+せきもと,かつあき
+せと,あつし
+せら,かずよし
+そでやま,そらこ
+そのい,てるえ
+たいら,まさし
+たかき,みちる
+たかはし,れい
+たかはし,みねこ
+たかはし,ともお
+たかはま,こうき
+たかみや,ちはる
+たかやなぎ,かずひこ
+たかやま,さとし
+たぐち,わたる
+たけうち,あつし
+たけざき,まゆこ
+たけした,さとみ
+たけもと,ひろとも
+ただ,あつこ
+たちかわ,まこと
+たちばな,なおと
+たつがわ,ともこ
+たなか,やすのり
+たなか,あきよ
+たなか,まさたか
+たなか,こうすけ
+たなか,さちえ
+たなか,しょうへい
+たなべ,のりこ
+たにぐち,たけし
+たにわき,ひろふみ
+たばた,よしひさ
+たはら,けんじ
+たまき,なおこ
+たまむら,まこと
+たるみ,ひろみ
+たんばら,りょうこ
+ちかつ,てつひこ
+ちば,かほり
+ちょう,りょうた
+つかだ,てつや
+つかもと,さちか
+つじもと,みき
+つちだ,けいこ
+つちや,たかあき
+つちや,ちから
+つつみ,さとし
+つぼくら,たくや
+つむら,ともえ
+てしま,あきこ
+てらさき,まさひと
+てらさき,くみ
+てらだ,たけはる
+どい,ともこ
+どい,のぶたか
+とう,ひろこ
+ときた,しんいちろう
+ときと,りょうすけ
+とくだ,えみ
+としずみ,まほ
+とだ,しゅんすけ
+とよだ,ひろあき
+ないとう,りょうた
+なかい,まさとし
+なかお,あきひこ
+ながお,えりこ
+なかがわ,ともみ
+ながさか,みちこ
+なかさか,やすひろ
+ながさき,ゆういちろ
+なかざわ,ゆうへい
+なかざわ,ようこ
+なかしま,ゆうや
+なかじま,えみこ
+なかしま,あきひろ
+なかじま,しゅうたろう
+なかじま,りょうすけ
+なかだ,かよこ
+なかだ,あやこ
+ながつか,いさお
+なかと,しゅうじ
+なかにし,みどり
+なかにし,すすむ
+なかにし,いたる
+ながまつ,まさひろ
+なかむら,しげとし
+なかむら,きょうこ
+なかむら,あやこ
+なかむら,まゆ
+なかむら,けいこ
+なかむら,なおこ
+なかむら,ひろかず
+なかむら,さやこ
+なかもり,てつや
+なかや,ゆうじ
+なかやま,たけし
+なす,こうじ
+なりとみ,しんたろう
+なんぶ,ともや
+にいみ,やすたか
+にしかわ,そのこ
+にしの,ゆか
+にしやま,たかひろ
+ぬかだ,よしこ
+ぬまた,ゆういち
+ぬまた,さとし
+のがみ,さとし
+のぎ,あやこ
+のくお,かおり
+のぐち,たかゆき
+のざき,なつね
+のじ,ゆき
+のま,れいこ
+のむら,まさお
+のむら,ゆういち
+ばこし,しんご
+はしもと,なおこ
+はすぬま,ちえ
+はせ,よういち
+はせがわ,ひろし
+はたがわ,じゅんこ
+はたけやま,ゆうこ
+はたの,ようこ
+はない,りか
+はまさき,まこと
+はまだ,ひろたか
+はまで,たかし
+はやかわ,あき
+はやし,あや
+はやし,さとこ
+はやし,さとし
+はやし,じゅん
+はやし,ようこ
+はやし,すすむ
+はら,ともひさ
+はらしな,のぶき
+はらだ,あつし
+はらだ,みどり
+はるな,しゅうすけ
+ひきた,ひでと
+ひだい,まゆみ
+ひらい,きょうこ
+ひらい,ゆうすけ
+ひらい,えりこ
+ひらいわ,くみこ
+ひらお,ひでかず
+ひらかわ,まき
+ひらた,よしあき
+ひらまつ,たかお
+ひろえ,あつし
+ひろせ,ひでのり
+ふかざわ,ひでゆき
+ふかほり,のりひろ
+ふくしま,まきお
+ふくだ,ひろゆき
+ふくだ,ひろふみ
+ふくだ,さやか
+ふじい,りえこ
+ふじかわ,かずみ
+ふじた,けんじ
+ふじた,まさお
+ふじた,よしろう
+ふじむら,ともゆき
+ふじむら,あきこ
+ふじもと,しょうへい
+ふじもと,りゅうへい
+ふじわら,けいさく
+ふじわら,さとし
+ふたかた,じろう
+ふない,さちこ
+ふるかわ,ひろこ
+ふるかわ,じゅんいち
+ふるまた,ともや
+ほし,ゆき
+ほしうら,ひろし
+ほしろ,いつみ
+ほそだ,しゅんご
+ほり,のぶひで
+ほり,ゆき
+ほりえ,のぶと
+ほりぐち,のぞむ
+ほんな,かおる
+ほんぼ,ひろゆき
+まえかわ,みわ
+まえだ,こすけ
+まえだ,たかし
+まえだ,えつこ
+まきうち,けいじ
+まきの,しょうこ
+まきもと,とものり
+まさとうみ,まいこ
+ますい,ようすけ
+ますだ,まさゆき
+ますだ,みほ
+まつい,みお
+まつうら,かずひさ
+まつおか,あきひろ
+まつおか,ともこ
+まつおか,まゆみ
+まつおか,だいすけ
+まつかげ,ひさお
+まつした,さとし
+まつなが,わたる
+まつばら,のぞみ
+まつばら,あきこ
+まつもと,ひろみつ
+まつもと,ほくと
+まつやま,まいこ
+みうら,りょう
+みうら,あつし
+みうら,あつし
+みうら,きよまさ
+みき,ゆうじ
+みずかわ,ひろゆき
+みずたに,ゆきこ
+みずの,ゆうせい
+みその,ただまさ
+みぞはた,ちえ
+みながわ,まちこ
+みながわ,あや
+みなみ,ひろゆき
+みなみ,たかし
+みなみかた,たかのぶ
+みなみむら,ひでき
+みはら,まさき
+みむら,みきこ
+みやい,のぶあき
+みやざき,あつし
+みやざわ,なおや
+みやざわ,あきら
+みやむら,かおり
+みやむら,あや
+みやもと,ゆうへい
+みやもと,まさや
+みよし,つかさ
+むねむら,ちかふみ
+むらかた,ともゆき
+むらずみ,みつのり
+むらた,くみこ
+むらた,まき
+むらもと,かずのぶ
+むらやま,なお
+もり,なおこ
+もり,かつまさ
+もり,あつひこ
+もり,くみこ
+もり,みき
+もりうち,のりこ
+もりした,ゆういちろ
+もりたに,かずと
+もりもと,げん
+もりやま,こうじ
+もろえ,ひろかず
+やご,みのる
+やすがき,ともふみ
+やすだ,あやこ
+やすもと,あつし
+やつなみ,あきお
+やなぎさわ,けいすけ
+やなぎはら,しんすけ
+やぶなか,たいし
+やまうち,たかゆき
+やまおか,ただし
+やまおか,なおや
+やまおき,ひろゆき
+やまがた,まこと
+やまぐち,しんいち
+やまぐち,ひろこ
+やました,まどか
+やました,ちえ
+やまだ,ちえ
+やまだ,じゅんじ
+やまだ,のぶこ
+やまだ,あや
+やまだ,まきこ
+やまなか,めぐみ
+やまむら,いっせい
+やまむろ,かなこ
+やまもと,こうへい
+やまもと,てるひこ
+やまもと,まさゆき
+やまもと,みつよし
+やまもと,みのる
+やまもと,しのぶ
+やまもと,とおる
+やまもと,あすか
+やまもと,わたる
+ゆあさ,くみこ
+ゆき,なおこ
+ゆりやま,のりひろ
+よこた,あつひさ
+よこはま,としゆき
+よこやま,あゆみ
+よこやま,かずき
+よしおか,きょうこ
+よしおか,まいこ
+よしおか,まりこ
+よしだ,たかとし
+よしだ,なおこ
+よしだ,なおこ
+よしだ,まりえ
+よしだ,ゆうじ
+よしだ,ゆうじ
+よしの,ゆか
+よしひろ,ゆみ
+よしまつ,とおる
+よしむら,だいすけ
+よしむら,かずふみ
+わかまつ,ひろや
+わきた,かずお
+わきた,けんしろう
+わしお,よしあき
+わしざわ,ちあき
+わだ,いさむ
+わだ,としお
+わだ,いさお
+わだ,たけし
+わだ,かつえ
+わたなべ,かずしん
+わたなべ,とくじ
+わたなべ,ひろし
+わたなべ,きよおみ
+わたなべ,よしひろ
+わたなべ,よりみつ
+わたなべ,けいじ
+やまぐち,もとじ
+すずき,じろう
+ささの,すすむ
+かねこ,たけし
+くぼた,れいこ
+こすけがわ,まさなお
+かない,さぶろう
+かとう,こういち
+こだま,たかひこ
+こばやし,としひろ
+こじま,とおる
+かめやま,かずひこ
+くらばやし,のぶお
+かんだ,かずゆき
+こんの,じゅんじ
+かわしま,まさなり
+かわかみ,こうじ
+かなか,かくたろう
+かわむら,ひろうみ
+きむら,しゅんいち
+かすが,ひろし
+こじま,もとよし
+かわの,こういち
+かわな,よしまさ
+こずま,たけし
+かわさき,まさあき
+かたの,まさあき
+かただ,あきお
+きくち,まさおみ
+かみうら,かずひで
+かねだ,てつお
+こんの,やすお
+かわもと,しげみ
+かばや,ひろし
+こぶくろ,けんきち
+くまがい,ゆうじ
+こんの,ひでき
+こやま,しょういち
+きたしろ,ひとし
+こだま,たけし
+かとう,えいいち
+きむら,としはる
+こいで,いさお
+くやま,たけし
+きりはら,もりひろ
+かよ,まさただ
+かねこ,としお
+こはら,いわお
+かとう,ゆきお
+こい,せいいちろう
+かやま,いさお
+こいけ,くにひこ
+こじま,あきと
+こまつ,まさじ
+きたむら,のりよし
+きたわき,ぜんいちろ
+かさじま,ひろふみ
+きむら,てつろう
+かみぐち,さちお
+かとう,ふじお
+かわむら,としひと
+かどた,のぶたか
+おおたけ,しげる
+かとう,ともみ
+きの,のぶひさ
+かみ,まさみ
+きくち,まさゆき
+かきうち,ひろひさ
+こじま,まさみ
+かたおか,しゅんすけ
+くぼた,ひろゆき
+きたざわ,まさあき
+こみね,もとゆき
+くぼ,たかゆき
+きたずめ,かずとし
+こばやし,かつお
+かわぐち,よしひこ
+けがさわ,ひさし
+こうち,みちお
+こやま,とおる
+かわきた,たかひで
+かわみつ,しょうぞう
+かたひら,あつお
+かわぎし,ひろし
+こんど,よしみつ
+きむら,あきひこ
+くぼやま,しんたろう
+くまもと,まさき
+かわた,ふみよ
+くにのぶ,やすお
+かまだ,たかし
+かく,おさむ
+かねこ,おさむ
+こばやし,あきら
+かしお,けんじ
+かないわ,けいじ
+けんもち,ただし
+きくち,おさむ
+かざま,やすあき
+こまつもと,えいこ
+こんど,かつひこ
+きくしま,かつまさ
+こばやし,せいこ
+くまがい,まさとし
+かとう,かずひこ
+まるばやし,たかし
+むとう,かつみ
+みたに,たけし
+みわ,まさし
+しみず,つとむ
+みずの,としお
+まちだ,かずお
+まつい,かずたみ
+みうら,りゅういち
+ひの,りょういち
+むらかみ,まさひろ
+みやの,ひろゆき
+まるい,まさのり
+むらさき,としお
+まさか,ひでのり
+みねた,たけみ
+まつなが,ゆたか
+みながわ,せいじ
+みやけ,なおあき
+まつもと,けんいち
+みさわ,としゆき
+まえだ,こうぞう
+うだがわ,としかつ
+みやはら,こうじ
+むらい,しょうじ
+まつもり,しげき
+まさき,きくお
+みうら,えいじ
+もとみや,きよし
+むらかみ,ひろふみ
+まとば,まさあき
+みうら,としお
+まつかわ,かずひろ
+みずたに,なおひこ
+みやの,まさゆき
+まつだ,ふさちか
+みす,あきら
+まつやま,としえ
+みやもと,ただあつ
+みずの,ふみお
+まるやま,せいじ
+まるこ,みちたか
+もちだ,とおる
+もとはし,まもる
+みずや,こうじ
+みやざき,みちまさ
+みやがわ,みつる
+むらしま,ただお
+ますさこ,せいいち
+もり,いちろう
+もりた,かずお
+みなみ,よしあき
+みやき,まさお
+もりやま,けんじ
+みずた,よしお
+まつい,みつぐ
+まつお,まさよ
+まつした,ゆたか
+こばやし,かつみ
+むかえ,まさじ
+もりい,ぎょじ
+もりた,たいぞう
+むかい,まさお
+まつお,ときわ
+むらやま,よしひこ
+まつもと,としお
+みやさと,みのる
+みやざわ,よしお
+もりむら,たかし
+むらの,ひでお
+ますだ,みのる
+むらた,のぶお
+みやさか,けんじ
+もとばやし,まさみつ
+みずの,ゆりこ
+ももい,よしお
+まつだ,とくお
+すがわら,なおえ
+まつばら,まこと
+まつもと,みのる
+みやはら,あつよし
+むらいし,まもる
+まつむら,まもる
+みよし,てつよし
+もりもと,かずお
+みずたに,たけし
+まつば,あつし
+まつい,かん
+むらかみ,かずお
+もりた,しげはる
+むらた,しげお
+まさき,ひろし
+みやざき,よしき
+まつばら,しんいち
+むらまつ,あつし
+もり,のぶゆき
+もりむら,まさかず
+すわ,よしみ
+こわたり,なおき
+まつざき,よしのぶ
+まっさき,まさひろ
+みたく,けいぞう
+まつかわ,さとし
+もぎ,しこ
+まぶち,きよし
+まつもと,としろう
+もり,りょういち
+まつうら,かずなり
+まえだ,あきお
+ますだ,ひろし
+まえにし,ひろし
+まるやま,なおや
+まつだ,たかお
+まき,としひこ
+もうえ,しんいちろう
+むらい,とよみ
+まつい,くにひこ
+もりた,まさる
+まえだ,たかぶみ
+むらうち,いさむ
+みつやす,あきら
+もり,けんじ
+まつだ,さとし
+まつお,まさふみ
+まるやま,あきお
+まつがえ,しげひろ
+かみくら,こういち
+みどりかわ,ゆうじろう
+ますだ,しげのぶ
+みてら,やすお
+まつなが,あきら
+もりおか,よしみ
+みそお,えつお
+むらやま,かつよし
+もりもと,しげる
+もり,つとむ
+ますだ,ひろたか
+みやもと,かつまさ
+むらた,よしてる
+みなみさわ,かずひろ
+ましま,すみひろ
+もりぐち,よしあき
+まつい,たかし
+まえかわ,ひとし
+もちずき,じゅん
+ますだ,しんきち
+まつもと,じゅんぞう
+もりなが,かずのり
+ますだ,ひろたみ
+みうら,くにお
+まつの,ただお
+まつおか,よしてる
+まちい,こういち
+みずたに,としお
+まつもと,よしのり
+まさき,ひでと
+まつもと,たけし
+みつや,ひでやす
+みずの,じろう
+まえだ,ふみお
+むらまつ,けんじ
+むさしの,あきら
+まえはた,まさひこ
+まつざわ,よしお
+みつい,よしかず
+ももだ,みつかず
+まつお,かつみ
+みわ,しゅうじ
+むらかみ,てつや
+みかみ,はるき
+ぬかざわ,しんじ
+なかむら,しずえ
+にしむら,くにひこ
+にった,けんじ
+ながつゆ,ときやす
+にいの,ひろし
+たぶち,けんじ
+にしの,さぶろう
+ぬかた,たもつ
+にしむら,ひさお
+ながの,たかゆき
+なかがわ,よしあき
+にしやま,ひろし
+なかじま,まさひろ
+にしだ,みつお
+なかむら,ふみお
+のむら,ゆきお
+なかもと,のりあき
+なかがわ,かずたみ
+なるさわ,つねお
+ないとう,たけお
+のべ,よしひで
+にしな,やすのり
+のむら,ただし
+なかむら,しんじろう
+にかいどう,よしやす
+なかだ,たつお
+にしな,きみひと
+なりた,としお
+のぐち,よしひろ
+のや,こうき
+ながい,まさと
+なかむら,きよし
+にいずま,たかみ
+なかがみ,しゅういち
+ながた,きしお
+にしざわ,はつえ
+のせ,じゅうろう
+ながい,ゆきお
+にしざわ,まさお
+なかはた,かずとし
+なかじま,ひろし
+なかだ,まつお
+のなか,まさき
+なかがわ,まさあき
+なかしま,たみお
+なかもと,まさる
+にしおか,ひろし
+にしまえ,しんたろう
+なかむら,まさお
+なかにし,かずお
+のだ,むつや
+なかむら,あきひこ
+なかざわ,りょういち
+にしだ,よしろう
+にしだ,ただゆき
+にい,りょうじ
+やまもと,ひとし
+なかうち,やすお
+なかじま,かずたか
+なかむら,まさみ
+のむら,くにひこ
+にしむら,やすひろ
+のなか,ただひこ
+にしむら,としひで
+にしお,きよし
+ながお,きよし
+にいみ,けんじ
+なかむら,ひでゆき
+ねずか,よしのり
+なかむら,ゆきとし
+なかざと,てつや
+あさの,じゅん
+のがみ,くにひろ
+なかじま,かずひこ
+ないとう,かずあき
+なかむら,よしのり
+なかにし,きよあき
+なかだ,たみお
+ながさわ,たかし
+ながの,かずゆき
+にった,ゆたか
+なんば,みつひろ
+のずえ,くにみつ
+ながみ,ひろし
+ながい,じゅんいち
+なかはら,みずほ
+なかじま,たけよし
+なかじま,かつお
+にしだ,あきひこ
+なおい,しちろう
+なべしま,よしまさ
+なかの,しょういち
+なかむら,はるお
+のだ,みつよし
+なかせ,としあき
+なかじま,みつしげ
+ながさわ,ただし
+にへい,みつよ
+ながい,りょうすけ
+なかしま,たかお
+なかお,せい
+なかがわ,のぶお
+ないとう,こういちろう
+のじま,ゆうすけ
+ながの,ゆきお
+にしだ,かずお
+なかだ,きよし
+なかはら,たかのすけ
+なかじま,むねたか
+ねもと,きよし
+なかむら,けんじ
+ながとも,まさみ
+なかむら,ひとみ
+なかやま,よしお
+なかむら,ほずみ
+なかむら,ふみのり
+のじま,てつろう
+ながふち,やすろ
+なかの,ごいち
+にしやま,しんいち
+なかむら,まさゆき
+ながしま,なおじ
+にわ,ゆたか
+なかの,やすあき
+おにざわ,ゆきお
+おしかた,まさお
+おか,かつひろ
+おくやま,のぼる
+おき,すみお
+おかみや,けんじ
+おぐら,まさき
+おおで,まさのり
+おのだ,まさひこ
+おおにし,まさき
+おくだ,きょういちろう
+おくだ,としお
+おがわ,こうじ
+おの,まさお
+おおすみ,こうじ
+おおつか,たかし
+おおとも,まさあき
+おかざき,ゆうじ
+おおはし,ひろし
+おぎの,ふみお
+おさだ,しずあき
+おおば,ひさし
+おしま,あやこ
+おおかわ,かずや
+おかもと,ひろし
+おがわ,とおる
+おの,きよと
+おかの,とおる
+おざわ,ゆきまさ
+おはく,ひろし
+おしたに,たかし
+おざわ,ひろし
+おおはし,たかのぶ
+おおはた,こうとく
+おのでら,みや
+おの,ふみお
+おおおか,ふじこ
+おおの,よしのり
+おおはし,ゆたか
+おおた,たかし
+おおもり,けんたろう
+おしま,こ
+おかもと,こういち
+ひろせ,ともゆき
+おおみず,やすお
+おおの,みつお
+おちあい,まさひさ
+おかべ,たい
+おおたに,あきひろ
+おくの,しげお
+おおすが,けんいち
+おおのき,かおる
+おおいし,じ
+おかだ,もとつぐ
+おおみや,ゆきひろ
+さたけ,つねお
+おだぎ,はちろう
+おおた,さとる
+おふち,ただよし
+おおかわ,かおる
+おかど,さとる
+おおさわ,ひでき
+おぎさわ,ゆきひろ
+おかべ,あつし
+おとよし,ひでお
+おがわ,たつろう
+おりがさ,やすたけ
+おおば,ゆきこ
+おばた,たかし
+おおの,たかよし
+おおさか,まさや
+おおみね,けんぞう
+おおた,よしひこ
+いのうえ,あきお
+おおこし,しげき
+おざわ,ひでお
+おかべ,けいいち
+おおぼら,えいじろう
+おおた,じょういちろう
+おざき,じゅんいち
+おくだ,やすひろ
+おざわ,てるあき
+おかだ,すすむ
+おおつか,こうじ
+おのでら,こういち
+おしお,ただしげ
+おだしま,ただし
+おざき,しげる
+まえだ,みつお
+おき,まさお
+おのだ,ときえ
+おなぎ,あきら
+おくだ,よしきよ
+おおひら,せつじ
+おのざわ,としひこ
+おぎはら,くにあき
+おおくま,かずお
+おおはら,のぶひろ
+おき,かつすけ
+おがわ,たつや
+おおや,ひでほ
+おおさわ,さぶろう
+おおはら,ひろよし
+おだ,たかこ
+おざわ,みつお
+おがた,りょうすけ
+おかの,あきこ
+おおいし,しま
+おない,ひろゆき
+おおつか,じゅんこ
+おおつか,てつお
+おいで,よしあき
+おきやま,かずこ
+おぐし,あけみ
+おだ,やすし
+おかばやし,ただひろ
+おおたに,じゅんじ
+おおつき,あゆみ
+おかだ,ひろし
+おおすみ,ちはる
+おおいがわ,たかはる
+おかだ,すすむ
+おざわ,かずひこ
+おおたに,てつろう
+おざき,ひろゆき
+おおた,まさこ
+やなぎや,ゆかり
+なかたに,しんいち
+こばやし,ひでし
+みくに,よしひろ
+すずき,じゅんいち
+はだの,ゆきまさ
+みやま,かおり
+たかはし,まさと
+しらおがわ,らいた
+なかむら,あそか
+まつざき,きいちろう
+やました,たかよし
+しもやま,しげる
+ふたむら,のぶゆき
+くわ,たかし
+なかむら,としみつ
+よこやま,ひろあき
+ひるま,ゆきこ
+たちかわ,なおみ
+わかばやし,てるみ
+たかはた,とも
+あべ,えみこ
+せき,りゅうご
+やまざき,ひとし
+やまね,よしひろ
+たざわ,じゅんじ
+かじかわ,あさこ
+さとう,まさひろ
+かわうち,まりえ
+おおやま,のぶこ
+しんみょう,じゅんこ
+たちわだ,なおみ
+おおくぼ,てつや
+とうごう,ひろゆき
+ながくら,たかはる
+いとう,けんそう
+やまざき,せい
+かざま,はるゆき
+かんばやし,ひでお
+ささの,めいこ
+かわしま,みゆき
+しんぐう,のりあき
+こいずみ,たくや
+かねこ,よしみ
+こばやし,すえつぐ
+かもした,しゅういち
+たむら,さちよ
+はせがわ,たかし
+くりはら,ひろふみ
+かなおか,ひろし
+こばやし,ゆきたか
+ひいし,たかゆき
+にへい,いくこ
+まるた,なおこ
+とおやま,なみ
+せきざわ,ちか
+ありま,やよい
+くりはら,ともえ
+すみの,みのる
+よしだ,ひでき
+きのした,ともこ
+おちあい,みゆき
+うまやはら,やすみ
+ほそかわ,ひろこ
+ふかがわ,しんじ
+かわむら,えいぞう
+まつい,けいこ
+よしもと,たかひろ
+うなかみ,ともこ
+かねまつ,さきこ
+かわかみ,まこと
+とよだ,ひでお
+やの,あきひこ
+せき,たかあき
+なかにし,ひとし
+はしもと,あき
+ふかや,くにあき
+みやもと,ひでくに
+たけだ,としふみ
+みやざわ,みきお
+いけだ,かずひこ
+おしま,ひろし
+なかむら,えりこ
+ごとう,ゆういちろう
+うしごめ,ひろし
+くわやま,ひろあき
+つかだ,ちはる
+むらた,ちかお
+さとう,よしたか
+くろだ,かおり
+すぎもと,くにお
+やすだ,こういち
+きうち,さとし
+けどういん,じゅんいち
+たなか,ちか
+なかむら,ひろあき
+くりはら,とよひこ
+たきざわ,かずのり
+うえだ,ひであき
+こべ,ひであき
+のぐち,ふみお
+こんの,ともひこ
+とみた,かなめ
+おおた,ゆきこ
+まき,ひかる
+あまの,けんいちろ
+こみね,あきひろ
+さとう,ともや
+いまで,ゆうじ
+まつなが,たつや
+すずき,たけし
+まつお,かえ
+さいとう,きょういち
+よしざわ,わたる
+うやま,けいこ
+あんどう,まさひこ
+すずき,さとし
+よしだ,かずとし
+かわだ,えみこ
+ふくだ,けい
+もりしま,まさし
+つちだ,とおる
+さかい,みちやす
+つかだ,あつし
+はっとり,ひろし
+たむら,こうじ
+わたなべ,なおき
+こすぎ,たかあき
+ひらた,けいた
+すぎやま,よしゆき
+もりかわ,もとはる
+かどた,あきひろ
+さの,ひろし
+おざき,てつお
+よこまつ,かつひさ
+たなか,ゆみこ
+いしさか,こういちろう
+いしざわ,ゆずき
+こばやし,じゅん
+よしだ,ともあき
+きむら,りえこ
+おおつか,たける
+あだち,たかし
+あかさか,しょうじ
+みやもと,みどり
+いちむら,かおり
+おした,のぶゆき
+ほんだ,おさむ
+かやぬま,こうじ
+のざき,ゆうじ
+かどわき,ふじえ
+おじ,やすひろ
+たぐち,やすつね
+たけいし,あきと
+ひらい,しんじ
+かなざわ,じゅんいち
+ふるかわ,えりか
+もりなか,まさよ
+あらい,としあき
+たなか,よしのり
+しみず,よしゆき
+いちはら,まさる
+きたのはら,ひでひろ
+きたお,ともひと
+もりもと,ひでき
+きたむら,りかこ
+ささざわ,たけし
+まつおか,なおこ
+こうら,たかひろ
+みわ,ひろこ
+よしおか,ひろこ
+ほり,ゆみこ
+さいとう,よしひと
+ながせ,ひではる
+もりしま,ひろか
+おわり,まきこ
+たなか,みき
+てらむら,としまさ
+こばやし,きょうぞう
+さいとう,ひろのり
+きむら,たけし
+はしもと,よしひさ
+なかがわ,てつや
+なかむら,まさおき
+はぎわら,くにひこ
+にしかわ,ともみ
+きたじま,こういち
+たかうら,やすお
+あさだ,ひでよ
+きたずめ,あらた
+ねもと,わかこ
+たなか,まさひこ
+たなか,かずひろ
+あだち,かずひこ
+はら,まさゆき
+あかまつ,けんご
+いまむら,あつし
+むらやま,ようじ
+たけうち,たかゆき
+ずし,やすお
+こばやし,かほ
+やまざき,あつこ
+はまぐち,そういち
+かげやま,ひろゆき
+かなもり,ひでき
+かとり,つよし
+あらい,しょうへい
+みやた,まりこ
+すずき,えみこ
+はるた,ひでや
+なかざわ,たかし
+すが,まさゆき
+まえでら,てるゆき
+あらまき,あつし
+きたの,たつや
+よしの,しげみつ
+みくりや,ようこ
+おくのぎ,けんじ
+さくらい,よしかつ
+こんど,なお
+すずき,のりこ
+くりはら,くみこ
+むこうぐち,まき
+ふじい,あきひろ
+かげ,ゆうこ
+まえだ,のぶや
+ながほり,ゆきこ
+つじ,ももこ
+きむら,しんたろう
+まつお,こういち
+たての,のりよし
+きむら,まこと
+すざき,たつや
+いわさき,みやび
+さとう,ゆり
+にった,だいかん
+たなか,まり
+しまだ,あかね
+たにぐち,のりこ
+ほんだ,すなお
+なかたに,たかし
+みやじま,しゅん
+くきやま,こうじ
+せきね,りょうたろう
+よしはら,さとる
+ひらた,まさかず
+ながさわ,としお
+なかがき,けいこ
+くろかわ,やすゆき
+かけたり,けんじろう
+いとう,かよこ
+まえかわ,じゅんじ
+まつだ,あきお
+くわはら,まこと
+いいずか,わかこ
+まじま,ひでゆき
+むらた,ともこ
+あきいけ,ゆういち
+なみき,てつや
+よしの,みきこ
+すずき,ゆき
+たむら,みどり
+かめだ,しんや
+にし,やすし
+いなおか,けんじ
+いわさき,ゆうじ
+かんだ,なみ
+ただ,えいき
+うつ,ともあき
+しまだ,まさお
+よしだ,ひろゆき
+おくがわ,よしふみ
+すずき,けいこ
+たんぽ,みねこ
+わだ,なおこ
+うるしはら,えいすけ
+いいお,たろう
+にいはら,きょうこ
+おむら,たくや
+いのうえ,ぜんじろう
+もりなが,としひろ
+さの,ひろし
+なかたに,まさやす
+あべ,まさなお
+うちだ,けんじ
+ひろた,ゆうさく
+いわくら,かいじろう
+いしおか,ひであき
+ときた,なつこ
+きのした,なおすけ
+みずの,あいこ
+やすえ,まさみ
+いわもと,さとる
+やまじ,ゆかり
+こさい,ゆうこ
+くぼ,としえ
+ちば,ひかる
+やつたに,あつし
+いがらし,たかずみ
+あらかわ,あかね
+てらさき,もとあき
+せごえ,さとこ
+とくしま,まさこ
+ばんどう,しょうこ
+たきざわ,けんじ
+みずさき,けんたろう
+たきぐち,けい
+ひおき,まさし
+なかい,あつみ
+おいかわ,れいこ
+まつむら,ちぐさ
+えんど,よしお
+たじま,さとこ
+やまざき,えいじ
+せのお,こうじ
+はらだ,としまさ
+ふくい,ともか
+まつうら,けい
+かわむら,ゆういち
+てらもと,たかみち
+はぎわら,たくみ
+なかしま,えみこ
+きのした,みちお
+あらい,ちずる
+むらやま,じゅんこ
+さえぐさ,ともみ
+たなか,みつこ
+まえだ,おさむ
+みやざき,かずみ
+いけべ,あきら
+くわばら,たかのり
+よだ,たかお
+たちばな,やすあき
+やまぐち,よしあき
+いしはら,けいこ
+たきざわ,まさあき
+ひらの,よしぶみ
+かわさき,たかよし
+やまもと,ひさとし
+あらせ,あつし
+やなぎさわ,まさのぶ
+しおや,あきえ
+さとう,こういちろう
+かとう,ひとみ
+おの,よしたか
+きたはま,やすまさ
+ごとう,のりこ
+にのみや,まゆみ
+うすい,とものり
+みずしま,たける
+すどう,まこと
+いけだ,あきこ
+なかひがし,ありしげ
+くりもと,ろわる
+とだ,ひろたか
+はかまた,あつのぶ
+たにぐち,はるみ
+いまぜき,いくこ
+ほりお,まゆみ
+かすが,つよし
+かわせ,なおこ
+さとう,ひろみ
+たかなし,のぶあき
+まつした,たかし
+やぐち,ひでき
+かねこ,かずゆき
+ひだか,みお
+さっさ,たいち
+そが,たくや
+すぎうら,けんたろう
+さとう,あみこ
+たにばやし,さちこ
+にしおか,たかし
+ともなが,なおき
+おおはし,ひでき
+ながしま,せいた
+たにがき,せいこ
+こうだ,こみな
+きよの,さとし
+やまかわ,としお
+なかじま,ひろし
+もてぎ,こうじ
+おおぬま,ゆたか
+さとう,しげお
+ふるいえ,よしこ
+あいもと,もとふみ
+よこお,くにお
+にしかわ,けんじ
+びとう,よしなが
+きたむら,しんや
+やまかわ,さだはる
+とみた,たけし
+つちだ,ひでと
+いしぐろ,りえ
+まつお,とおる
+うえもと,こういちろう
+いいだ,みきこ
+すずき,しげひろ
+たむら,かずよし
+おくだ,のぼる
+ほり,よしみ
+くさつぐ,やすし
+やまだ,まさなお
+あさはら,たかひろ
+とくだ,まんなり
+いでた,よしひろ
+いとう,てるみち
+さとう,きいちろう
+つじさわ,けい
+おの,こうじ
+いわま,のぶあき
+だいごく,じゅんいち
+やまむら,よしかず
+はせがわ,としかず
+いぎ,たかひろ
+まかべ,まさかつ
+おかもと,かつお
+おおはら,ゆきなお
+せきやま,かずお
+きたじま,ひろあき
+とりうみ,まさひろ
+みやざき,たてお
+うい,よしひと
+くらもち,かずひろ
+しおぬま,ひでとし
+らいた,いくお
+しもこうべ,のぶかず
+さわの,てるお
+さかにし,ゆうじ
+ささき,としお
+せいの,けいぞう
+すずき,あきよし
+さかもと,としお
+すずき,しろう
+さわの,かつや
+しが,てつや
+ごとう,とくまさ
+すだ,じゅんじ
+すずき,よしこ
+さかきばら,としお
+さとう,けんじ
+さかぐち,よしのり
+すぎさき,みつくに
+すえき,たかし
+すずき,のぶあき
+しばた,ことじ
+すぎやま,ただお
+さかい,まさゆき
+しみず,ただし
+すぎもと,としお
+さとう,たくじ
+せき,おさむ
+さくらい,はるゆき
+せきぐち,こすけ
+さとう,えいじ
+すずき,ゆうのすけ
+さいとう,ただお
+せきね,とよふみ
+すずき,つとむ
+いいだ,きよたか
+すずき,ひろし
+ささき,みつお
+すえなが,としお
+さかもと,ひであき
+さいとう,まさみ
+すがお,てつじ
+しまず,みのる
+さいとう,ふみお
+しのざき,あきら
+すずき,よしゆき
+すなが,けん
+さとう,おさむ
+すずき,けいたろう
+せきね,さだのり
+ささき,としお
+さわだ,あきら
+さいとう,かずお
+しもぞの,ただひこ
+すえ,たかし
+さどとも,あきら
+せきね,けんすけ
+さとう,さとし
+さんご,よしのぶ
+すどう,くにあき
+そのだ,なおみ
+しま,みのる
+さとう,よねぞう
+さとう,とみお
+しぶや,かずあき
+さとう,かずお
+さとう,てるひこ
+さかた,よねお
+さいとう,おさむ
+すわき,たかし
+そり,たけじ
+さかもと,しゅんいち
+しらいし,まさとし
+すずき,あきお
+しまだ,としお
+すずき,まさひろ
+すずき,よしお
+さとう,はじめ
+すずき,きよし
+さとう,つとむ
+しげまつ,きよし
+さがら,たかとし
+さいとう,ゆきお
+しんぐう,たかお
+すがぬま,てるのぶ
+そが,たけし
+ささき,のぶゆき
+さとう,しげる
+さわだ,てつお
+そま,おさむ
+しばた,たけお
+さとう,みちこ
+さとう,きよし
+しまだ,ひでお
+ささき,のぶお
+さとう,けんじ
+さいとう,しげる
+しもで,ひでき
+ささき,としお
+さとう,よう
+さとう,ひさお
+さわだ,しんいち
+しろさき,よういち
+しばい,すすむ
+さいとう,みちお
+すずき,としお
+そがべ,いさお
+せがわ,ちひろ
+しみず,みのる
+すずき,ようじろう
+しろやま,よしひこ
+しいな,よしお
+さやま,まもる
+さかもと,まこと
+さとう,ひろし
+すずき,ただよし
+すずき,てつろう
+ささせ,かつゆき
+さくらい,まさき
+しまだ,せいじ
+さとう,かつひろ
+しもの,ようすけ
+すずき,よしなり
+すぎもと,まさお
+しみず,たけお
+さの,よしのぶ
+すずき,こうへい
+しまだ,かずひこ
+すずき,はるひさ
+すぎふじ,ひとし
+さかい,しんいち
+さかぐち,えいじ
+すがわら,だいさく
+しのずか,じゅんいち
+しが,みつお
+さかがみ,とよま
+すずき,かずゆき
+すぎの,ひでお
+すぎうら,すすむ
+しみず,かずみ
+すずき,たけしげ
+ささこ,せいぞう
+せき,ゆきよし
+さとう,たつじ
+しま,ひろし
+すずき,きよてる
+さかもと,よしかず
+ささき,ひろし
+しまだ,いそじ
+さいとう,ただひさ
+しおた,とよお
+しおだ,いさむ
+すだ,えいじ
+しいな,けんぞう
+しおのや,てつお
+さいしょう,やすひろ
+そいだ,えいいち
+そま,かんじ
+さとう,ひろし
+さとう,たけみち
+しおばら,きよえ
+ささおか,よしたか
+ささき,みつのぶ
+せと,ふみお
+しゅどう,たかお
+さかもと,ひろし
+さくま,たかし
+しのざわ,つよし
+しおばら,ひろゆき
+さくらい,ゆずる
+さとう,めぐむ
+さくらい,としお
+ささべ,ひろし
+さとう,りゅうぞう
+すぎうら,ゆうぞう
+さかい,まさお
+そま,のぶお
+そうや,せいじ
+そねかつ,あきら
+せきね,たけお
+すずき,のりお
+せきね,としつぐ
+さかきばら,かずとし
+しもかわべ,けん
+さわむら,なるみ
+せき,じゅんいち
+すずき,こずえ
+さかまき,ひであき
+さがわ,としひさ
+すぎやま,たけゆき
+すぎもと,こ
+せお,ゆうじ
+さいとう,たかし
+さかい,みきお
+さくらい,ただひろ
+せきね,まさのり
+さとう,はつみ
+しみず,たかし
+しみず,としお
+さいとう,まさお
+さくらい,まさあき
+すぎやま,やすお
+しずか,ひさなお
+しらかわ,あきら
+さいとう,ゆずる
+さきもり,いわお
+さとう,てつお
+せきぐち,おきとし
+せきね,のりこ
+しばた,こうじろう
+すずき,たかひろ
+さいとう,ひさお
+さとう,のりお
+せきね,おさむ
+さかい,はるひこ
+ささお,しんじ
+すどう,まこと
+もり,しょうじ
+しみず,えいぞう
+さとう,てるお
+すずき,いさお
+しむら,ひろとし
+しばさき,ひろし
+すがまた,かずお
+すずき,ひろし
+しおのや,きよかず
+たかはし,としろう
+つきやま,きくお
+つのだ,よしき
+たかはし,なおと
+とくざわ,もりはる
+たぐち,まさお
+たかぎ,ひでお
+たかの,てるみつ
+たはら,きよかず
+とよさわ,こういち
+とよます,けいいち
+たかはし,まさのぶ
+たけうち,ていじ
+たきいし,りょうじ
+たかいし,しげお
+たかさき,けんじ
+たにがわ,ひろゆき
+たかはし,まさとし
+たなはし,こうじ
+たまき,ひろし
+とば,まさし
+たばた,たかし
+つじ,たかお
+たなか,あつし
+たかはし,まさのり
+とくなが,きみお
+たぐち,まさお
+たきざわ,かつしげ
+とみ,たねまさ
+つじ,けいこ
+うちだ,としお
+たなか,いわお
+つねよし,のりかず
+たかの,むねお
+たかはし,ゆきち
+たかやなぎ,よういち
+たけだ,けいすけ
+たぼ,ゆたか
+たなか,かずお
+たけうち,まさき
+たかやす,とよみ
+つちや,ゆはつ
+とくなが,けんじ
+つちだ,なおかた
+つぼい,えいえつ
+たかはし,まさしげ
+つかもと,さだむ
+たなか,しげる
+ともつね,すすむ
+ちじ,としはる
+さとう,せいじ
+たかた,つねお
+とはた,よしみ
+たかはし,みのる
+たかはま,よしあき
+てらさわ,なおこ
+たかばやし,しょうじ
+てらだ,しゅうじ
+つかだ,せいじ
+たなか,ひでお
+とりまる,たみお
+つちだ,まもる
+たきもと,としひこ
+たきい,ひであき
+たねだ,けんじ
+たむら,よしのり
+たどころ,ひさお
+たかお,ますみ
+たなか,ひかる
+たかはし,はつお
+たかはし,しげゆき
+たかはし,ふじお
+とみた,とおる
+たかはし,あつのり
+たにぐち,みちあき
+たなか,ゆうぞう
+つぼい,ひろみ
+たけうち,ほぶん
+つだ,とよし
+たけだ,まさゆき
+たけい,しげお
+つじかわ,ゆういち
+たけむら,せいじゅ
+たき,まさあき
+たかだ,まさあき
+たきざわ,しげる
+たなか,まさじ
+たにむら,たけよし
+よしざわ,まさはる
+つねかわ,たろう
+たなか,ひろし
+たかだ,かつお
+つる,あきら
+たに,まさひろ
+たぐち,いさお
+たなか,じゅんぞう
+たにぐち,かずひろ
+たなか,のりみつ
+つじ,ゆういち
+たなか,かつみ
+つゆき,ひさお
+たまる,まさみ
+つちや,けいじ
+つるおか,のぶお
+たかはし,てつお
+たかはし,みつこ
+とうふくじ,としお
+たなか,おきつぐ
+たかぎ,きょうこ
+たかはし,よしひさ
+たにぐち,りょうじ
+とよだ,ひとし
+たかぎ,たけし
+たけい,しげる
+つだ,ふみお
+つねひろ,じゅんじ
+たきざわ,としお
+たちばな,ごいち
+たかはし,かつゆき
+たにぐち,こすけ
+たけだ,かずと
+つちや,けんいち
+たかはし,としあき
+たのうえ,ひこさぶろう
+たかばたけ,まさのぶ
+たかはし,またさぶろう
+ふなき,てるやす
+たけだ,かつまさ
+とくなが,たつ
+あさい,ゆうじ
+たかはし,みきこ
+たかはし,のりお
+たがわ,しょういち
+たなか,のぶゆき
+たちかわ,たけし
+たぐち,かずよし
+たかさき,あきら
+たまおき,しずお
+たなか,せいいちろう
+たかの,しん
+たけうち,しげる
+つだ,せんじ
+たかなみ,まさる
+つきなわ,よしなお
+とみもり,すすむ
+たけだ,とおる
+とがし,てつひこ
+つずき,しげとし
+とびた,のぶあき
+ともなが,つねかず
+つつい,しげあき
+たかぎ,じゅんじ
+たにぐち,かずとし
+たかの,としひろ
+たなか,さとし
+とまつり,しろう
+たかぎ,いつお
+たかしま,ふみお
+たはら,よしあき
+たなか,かずこ
+たかだ,よしお
+とりい,みつゆき
+たけべ,のぶゆき
+つかもと,あきお
+たむら,のぶひろ
+とみなが,さかえ
+たかいわ,さとし
+たばた,けんじ
+たかはし,くにお
+てんぽうりん,そういち
+てらうち,さだゆき
+たかはし,きよし
+たかせ,ちから
+たけむら,もとい
+たむかい,ふみお
+たかはし,ゆうじ
+たけつ,かつじ
+たのおか,すすむ
+たかはし,ただし
+とおやま,きよのぶ
+たけうち,あつし
+たかはし,まさお
+うしお,ゆずる
+うすぎ,かずひろ
+うちやま,よういち
+うめだ,かずすけ
+うけもり,まさな
+うちだ,みちや
+うえだ,ひさお
+うちだ,けいじ
+うつき,てつお
+うえだ,みきひこ
+うちだ,ひでき
+うえはら,しゅう
+うえむら,のぶや
+うちだ,さだゆき
+うちむら,けいいち
+うちだ,けんすけ
+うちだ,けいいち
+うえき,あきこ
+うかじ,まさてる
+うちだ,まさあき
+うえむら,ひでお
+うしお,とくじ
+うめむら,としお
+うめしま,りきつぐ
+うこん,かおる
+うちいけ,じゅんいち
+うるしの,たかあき
+うちなし,へいた
+うぐさ,まさゆき
+うの,としひで
+うえき,みのる
+うえもと,けん
+うえむら,ゆきお
+うえはら,ひろし
+うえだ,しんぺい
+わたなべ,ひさゆき
+わたなべ,かつみ
+わたなべ,きんや
+わかむら,やすろ
+わたなべ,ひでじ
+わたなべ,よしたか
+わたなべ,ひろはる
+わたなべ,かつなり
+わたなべ,ひでお
+わたなべ,かつひこ
+わたなべ,やすあき
+わたなべ,ただし
+わきた,こうめい
+わたなべ,ときお
+わたなべ,こんごう
+わたなべ,あきら
+わたなべ,おさむ
+わたなべ,けんじ
+わたなべ,すみただ
+わだ,やすし
+わたなべ,たつひこ
+わだ,たけみつ
+わだ,ほまれ
+わたなべ,まさあき
+わたなべ,あきら
+わたなべ,しげあき
+わかばやし,みねお
+わたなべ,ひさお
+おおた,まこと
+ふじわら,すみあき
+こいけ,みちお
+かたおか,てつや
+ひろしげ,きよし
+しんざわ,ひろし
+みずかみ,まさみつ
+なかじま,けいいち
+ふくしま,しげき
+なか,ひろし
+ひらやま,まさこ
+にわやま,かつじ
+しみず,そうじろう
+ふるさわ,つよし
+さくらい,みずほ
+たけなか,あつのぶ
+すぎうら,かよこ
+かとう,けんじ
+ほしかわ,まさお
+おがわ,いさお
+かしわぎ,こ
+さかい,ひろこ
+もり,はるお
+ほんぼ,のぶゆき
+いいじま,よしあき
+こじま,たかお
+たかはし,のぼる
+はた,しょうすけ
+おがわ,あきのり
+つちや,かつや
+こやま,いさお
+ふるみ,てつお
+くめ,つねお
+くらた,せつお
+うしじま,まさかず
+えばと,かつのり
+さとう,のぶゆき
+むしゃ,なおひこ
+ゆあさ,まもる
+きくち,なおき
+まつばやし,てるよし
+まつい,あきら
+たけむら,ひろし
+てらしま,ようすけ
+くら,ひでくに
+まつい,よしお
+うえだ,いさお
+はやし,しんいち
+かわな,だいじろう
+はやし,かずお
+でもと,まさひろ
+しぶき,たけし
+はま,たつお
+えんど,こうざぶろう
+みやもと,たかひさ
+まつだ,ひろし
+やまもと,ともこ
+むらかみ,しげお
+おかだ,だいきち
+わたなべ,かずゆき
+いわさき,あきよ
+よしだ,すみゆき
+おおもり,まさのり
+みずたに,ひさえ
+すぎうら,かずお
+のなか,みつたか
+わたなべ,いさむ
+さいとう,たけお
+おおかわら,げんたろう
+かどいけ,たけただ
+まつもと,のりかず
+なか,たかお
+かとう,けんぞう
+かわいし,ゆうこ
+ながさわ,つとむ
+すやま,くんろう
+くましろ,ひろし
+たかばやし,ひでお
+こんど,けんぞう
+いなば,さとる
+こばやし,としひろ
+やまぐち,みかこ
+すずき,ゆうじ
+あきやま,ゆたか
+たかだ,あきら
+さわい,まさひこ
+なかた,きよゆき
+いたば,ゆういち
+くにぎた,よういち
+やまだ,ようこ
+やまだ,ゆうこ
+たかはし,よういちろう
+うめむら,のりひこ
+こばやし,のぶあき
+かねみつ,ただお
+きど,まさし
+かねき,ただお
+こむら,まさひろ
+ふじもり,けんいち
+やました,てるたけ
+くりやま,まさひろ
+とざわ,たかし
+いしい,ちかとし
+たかはし,よういち
+たなか,かずみ
+いしざき,てつお
+はらだ,まさひろ
+とくひさ,しげやす
+いしむら,ただひろ
+うえだ,たかし
+おふち,くにひろ
+やつるぎ,みつお
+みなと,まゆみ
+よしだ,まさひろ
+みなみ,やすお
+おか,あきお
+いちかわ,かずお
+おおくぼ,ひでき
+いしだ,ひろゆき
+とみた,いさお
+ひらおか,ひろひさ
+かとう,ひでお
+おむら,むつお
+おさじま,としや
+ふなこし,せつお
+こうだ,ひであき
+あさおか,たつお
+かすが,あけみ
+ももはら,ぶんいち
+うえむら,としひで
+おばた,かずこ
+おのだ,ゆきお
+みやした,かんじ
+ほそや,やすお
+やしろ,ゆきお
+わたなべ,あつし
+きむら,ときち
+かみじょう,ひさえ
+さとう,よしおき
+まつしま,あきら
+かたやま,ようこ
+ひらの,ごへい
+なからい,だいすけ
+よこやま,ひさお
+おおがね,ともひろ
+きむら,まこと
+のざさ,よしのり
+もりの,かずしげ
+えちごや,みちひこ
+ふくしま,ひでお
+いとう,まさゆき
+いけだ,ゆきこ
+とくなが,りえ
+きもと,あいこ
+おしだ,さとこ
+はしもと,のりかず
+のぐち,としのり
+みやべ,かずと
+くわはら,やすえ
+きむら,ひろみ
+おだ,かずゆき
+あいざわ,たみお
+うえの,かつお
+まつばら,のりゆき
+たまい,かずみち
+しらい,よしお
+おおはし,こうじ
+たみや,ふみや
+はらだ,よしこ
+うすい,たかし
+こり,こういちろう
+のだ,しげひこ
+なみき,まさと
+なかお,まさみつ
+かどや,あきら
+おの,としひで
+しぶかわ,しんいち
+いわさわ,まなぶ
+たぶせ,いちろう
+おさわ,たかよし
+なかだい,けんじ
+えがしら,ひろゆき
+ささき,かつお
+ふくち,かずひこ
+よしやす,ごう
+わたなべ,こさと
+うえの,れいこ
+えとう,まさのり
+よしだ,まさお
+たけい,ゆういち
+はやし,ひさし
+またき,しんご
+もりもと,いちろう
+いはら,けんじ
+つかはら,てるお
+かのう,ともこ
+むねゆき,ひでまさ
+おおつぼ,よしたか
+やまもり,かつお
+あんどう,せいき
+やまざき,よしあき
+たきもと,よういち
+たけむら,なおかず
+むらかみ,まこと
+たかた,のりお
+ひろせ,つたひろ
+やくわ,たかし
+しんぐりょう,ようこ
+たち,まさし
+さとう,かずお
+やまもと,まさひろ
+すどう,しょうこ
+ほんま,ひろき
+おおつぼ,としお
+かざま,みつひろ
+あがわ,みほこ
+いのうえ,りゅういち
+あらい,まさち
+うえむら,ゆたか
+にしくら,まさひろ
+みやざき,よしかず
+ふくだ,もりまさ
+つりや,ただお
+たなか,ひろかず
+おがわ,こうじ
+すずき,みのる
+はまぐち,たくじ
+かめだ,かつや
+ももはら,ひでお
+ひらお,たかこ
+たかだ,なおゆき
+いけだ,よしひろ
+すずき,あきら
+たかはし,かずよし
+たなか,じろう
+せら,たいち
+たけむら,としあき
+ほりきり,まもる
+いけだ,みのる
+あらき,せきね
+おおつか,かずいちろう
+くにまつ,せいざぶろう
+うしば,たかし
+はやし,まさと
+いしい,みきお
+かだ,あきら
+やぎ,ただお
+ひらい,こういちろう
+くろせ,ひろし
+おかべ,いさむ
+かねこ,としゆき
+こじま,さとる
+にしより,みのる
+なかじょう,じろう
+はしくら,つとむ
+たかはし,たつお
+うえくさ,のぶあき
+しばた,ひろし
+たかはし,てるお
+いなば,かずと
+じゅんいちろ,あきのり
+はやかわ,ひでお
+いとう,たけし
+きもと,まさつぐ
+いだ,ひろし
+ほうじょう,かつひこ
+ほりい,つねお
+かいせ,あつし
+はしもと,やすあき
+すずき,ひとし
+かねさか,よしお
+やまぐち,ゆうじ
+すずき,まさかず
+すどう,まさひこ
+おおば,みほこ
+むらた,としこ
+あきやま,まさし
+あすま,たけお
+かわじり,ひでお
+まつもと,きょうじ
+しろやま,こ
+ふじい,あつこ
+ごとう,だいすけ
+たにあい,やすまさ
+かつぼり,まき
+ひあて,くみこ
+てらい,あきこ
+はんだ,まさこ
+みしま,ひろみ
+たかしま,かずみ
+まつだ,あきら
+こんど,のりこ
+いたや,けんじ
+まつもと,なおたけ
+いいやま,ひでお
+じっと,かつひろ
+くぼた,さちこ
+いしぐろ,えいじ
+もり,うつみ
+かんの,さちこ
+いとう,せいじ
+よしだ,りゅうじ
+まるやま,くにお
+さとう,なほ
+こうだ,ようじ
+わたに,まもる
+させ,いくお
+そとやま,かつのり
+ほんだ,てるくに
+いぬい,ゆたか
+すずき,よしのり
+こにし,よしのぶ
+すぎい,ゆきひさ
+あらき,のぶお
+ひらおか,やすし
+おおつか,むつお
+かとう,しげお
+しおの,ひろし
+かたやま,ひろのり
+ふちかみ,たけひこ
+ひらき,たもつ
+いわさき,きみお
+えのき,じゅん
+いわた,せいいち
+しゅとう,ただし
+とおやま,まつのり
+こいで,じゅんざぶろ
+たなべ,ゆうじろう
+やまもと,しゅんいち
+かいはつ,せいし
+あらい,かつじ
+うえだ,ゆうぞう
+くらおか,そういちろう
+こばやし,えつひろ
+ためちか,たてお
+よしだ,しずお
+まつもと,しげる
+さかした,かねお
+わだ,としあき
+いとう,やすお
+よしだ,かつじ
+よねだ,としひで
+おむら,まさみ
+たかぎ,しちろう
+うちやま,あきこ
+かしわぎ,けいこ
+にしだ,せつお
+おしか,たけお
+えじま,とものり
+おか,けんいち
+よしだ,やすえ
+いまい,やすしろう
+やまみち,ともこ
+あいもの,かつお
+ひの,もとこ
+たかはし,みさこ
+よこた,えいこ
+いのう,たえこ
+よしだ,ひろこ
+よしおか,あきこ
+うめざわ,うきこ
+てらお,ひろひさ
+かわはら,はるお
+はせがわ,みのる
+きし,てるこ
+はしずめ,みつひろ
+よしだ,めぐみ
+みねふじ,なおこ
+ほんだ,ゆみ
+たかさわ,みゆき
+おおはし,ようこ
+かがわ,ちか
+にしだ,まり
+いたがき,あきこ
+あきやま,のりひろ
+おちり,やすひろ
+のざわ,こうじ
+さいとう,けんじ
+きむら,ちえ
+あべ,なおと
+くすのき,ともこ
+はやし,やすひろ
+おおい,なおみ
+かみおか,はるよし
+あきやま,いさお
+ありた,かつみ
+きたむら,みちゆき
+ますむら,たかのり
+おおさわ,けん
+かわい,みのる
+いたがき,ひでお
+もり,たかお
+あおき,みきお
+ふじしろ,こうじ
+しみず,もとしげ
+むらかみ,みよし
+なかじま,てつお
+もぎ,あきお
+みうら,かずお
+たかまつ,けんじ
+たかだ,しょういち
+こんど,まさこ
+なかじま,ひとし
+ねれい,ひろし
+うしく,おさむ
+きたざわ,こ
+さっさ,のぶひろ
+いっしき,よしひろ
+かわの,のりつぐ
+いしはら,ふみたか
+かめおか,ただお
+きうち,のりかず
+ながい,ひとし
+のぐち,みちお
+おした,たかお
+よしむら,としみち
+あかほり,みつのぶ
+まるなが,よしつぐ
+よしの,こうたろう
+やの,よしひろ
+やまぐち,まさひで
+やまぐち,かつとし
+せんどだ,まさる
+やすだ,あきら
+よこえ,じゅんいち
+やました,せいざぶろう
+よしだ,とみぞう
+やました,すすむ
+やすい,かずお
+やまおか,きょうすけ
+よこせ,ともしげ
+やまぐち,けんじ
+やはぎ,やすはる
+やまおか,ひろまる
+よつや,とおる
+やまもと,じゅんこ
+よしかわ,としろう
+やました,しょうじ
+やまおか,ひろこ
+よねみつ,せいじ
+よしだ,けんいち
+やまざき,てつお
+やまもと,ひかる
+やまぐち,みのる
+やまうち,さかえ
+よしざわ,かつみ
+よしおか,かつひと
+やまもと,のぶお
+やまおか,みちとし
+やまざき,あきら
+よしむら,まさひこ
+やすだ,こうじ
+やました,せいいち
+やだ,しんや
+よしだ,いちろう
+やまもと,つとむ
+やまだ,ごろう
+よねだ,かおる
+よしだ,まさひろ
+やまだ,くすお
+やまぐち,たかふみ
+やまぐち,ふみひろ
+やまもと,たかこ
+よしだ,すすむ
+やました,しょうぞう
+やんべ,あつひろ
+やまぐち,のりよし
+やまもと,じゅんじ
+やまね,こうじろう
+やまさき,けんたろう
+やすおか,ゆきお
+やまだ,えいぞう
+よしざわ,じろう
+やじま,あきら
+やない,てつお
+やまざき,かずお
+やまうち,ふくみち
+やまざき,すすむ
+よしの,たつゆき
+やまかげ,ただのぶ
+やぎ,じつのり
+やすだ,まさお
+やまや,のぶお
+たかぐち,のぼる
+よしだ,ひろし
+よしの,こうじ
+やまむら,じゅんいち
+やぎ,かつのり
+やまだ,こすけ
+ゆかわ,まさとし
+やまもと,じょうじ
+やまたに,ひろつぐ
+やまむろ,よしかね
+よしだ,としひこ
+よこかわ,ともよし
+やまざき,こういち
+やまもと,たけお
+よしの,きよし
+やまね,よねたか
+やすなが,あきひろ
+やなか,けいいち
+やまね,てつお
+やまうち,よしゆき
+やまぐち,ゆうじ
+やまわき,しょうたろう
+やまかわ,じゅんいち
+やまだ,かずみ
+よこやま,しょうたろう
+やまもと,やそみ
+やまぐち,のぼる
+やまぐち,たかよし
+よしだ,たかお
+やまなか,かずみ
+やまもと,ただはる
+よしだ,たかお
+やまだ,さとる
+やまおか,よしとも
+よこやま,まさひさ
+やまさき,のりお
+やまもと,かつひこ
+やまかわ,まさよし
+やうち,ただよし
+よしはら,かつじ
+よこみぞ,しげる
+やまもと,しゅうぞう
+やまもと,てるお
+やまもと,えいいちろう
+よしだ,まさひろ
+よしだ,ふみひろ
+やすい,みのる
+やまぐち,しげる
+やまもと,あきら
+よこた,えいいち
+よしだ,ゆたか
+よこやま,ひでき
+やすい,かずもと
+やまさき,かずひろ
+よしおか,のぶお
+よしだ,しゅんろく
+やまだ,かつひろ
+やまもと,ようじ
+よしだ,せいぞう
+やまざき,せいしろう
+やまね,なおじ
+ゆたに,すすむ
+よねざわ,よしひろ
+よしの,だいすけ
+よしだ,たけお
+よしもり,ひさとよ
+よしわら,たけし
+やまだ,としき
+よしだ,としかず
+よしだ,むつお
+やまもと,もりひこ
+こじま,くにかつ
+おの,しげお
+まえかわ,こうたろう
+こんの,のぶゆき
+まきせ,きよし
+のむら,まさたか
+やすはら,まさひこ
+ながしま,あつよし
+きたはし,まさお
+つる,きよみち
+つくだ,みちお
+てらうち,たけし
+やまだ,さとる
+せんば,すすむ
+さえき,のりお
+おかだ,しょういち
+みやうち,ひさお
+こんど,としお
+ふきあげ,やすお
+いしかわ,ちよたけ
+いわもと,まさお
+くぼ,じゅんいちろ
+たなか,ひろかつ
+わだ,のりお
+いわお,つねのり
+くまがい,たかひろ
+すずき,ひろふみ
+たかむら,ひろし
+にしうら,せいいちろう
+みつじ,まさし
+たききた,あきら
+おうち,けんじ
+こま,あきお
+ますだ,けんじ
+かとう,としろう
+いいずか,かずひこ
+まるやま,のぶあき
+としたに,とおる
+はなぶち,まさひろ
+いまい,まさぞう
+おかひろ,つねお
+きむら,としひこ
+たじま,まさはる
+かんだ,つらゆき
+どい,おさむ
+あらがき,やすのぶ
+きゅうそじん,けんすけ
+たけうち,つねよ
+うぬま,ひでなり
+やまぐち,よしたか
+よもり,もとひさ
+しまざき,くにひこ
+とくや,としお
+やまだ,あきら
+ふかや,しげお
+えぐち,はるお
+さの,ひでのぶ
+とくの,あきら
+おおとも,さだむ
+しらおがわ,ひろし
+ひらの,たいき
+おだ,ゆうじ
+たなか,りょうぞう
+ふじた,あきら
+あらい,あきひで
+ふじた,ゆうじ
+なかがわ,ひろゆき
+なかにし,かずしげ
+はら,あきひろ
+ちば,としこ
+いしわた,としひさ
+やぐち,たけひろ
+てじま,かずお
+たつた,しげる
+くさか,たけし
+ふるた,たけはる
+ごとう,まさのぶ
+おだぎり,ただし
+くまがい,たける
+むらかみ,みずほ
+みむら,まさお
+よこい,くにひこ
+いなげ,ともゆき
+あめみや,みつお
+いのうえ,さだお
+ぬまた,じんいち
+さかもと,ごへい
+ひらまつ,さだお
+なりた,かおる
+つねみ,いちろう
+たかしま,ふさひこ
+みす,かずみ
+さきやま,よしひこ
+ふじわら,ただし
+とみた,まさひろ
+つなわき,みねお
+はせがわ,たけし
+ふくざわ,ゆうぞう
+ごえけ,あきら
+なか,まさひろ
+えばと,けいこ
+こばやし,しんいちろう
+ひらつか,きよし
+さとう,のぶお
+いのうえ,あきら
+はすぬま,まさお
+ふるはた,あさこ
+うえの,あつし
+たけなか,まさひろ
+くにたけ,よしお
+ひらた,ゆうこ
+はせがわ,げん
+ふくはら,あつし
+ふなぐち,とおる
+あまの,のりこ
+おおの,みずのり
+すわ,のりこ
+のがみ,みか
+うめの,やすゆき
+いけの,ゆうこ
+なかじま,はなこ
+いしい,きょうこ
+さいとう,ともこ
+たなか,かずゆき
+たていし,としかず
+すずき,よしひこ
+きのした,ひかる
+おおさわ,よしひろ
+いで,さきこ
+おがわ,しほ
+えのもと,わきこ
+おざわ,みずほ
+はたけやま,ともひろ
+いいだ,みつあき
+しのざき,じゅんいち
+おかだ,りえこ
+たかま,まさし
+やぎ,ひろゆき
+さかい,まさよ
+しみず,こうじ
+ほりかわ,ようこ
+ながお,こうへい
+ひらいし,まり
+さがわ,たもつ
+はらだ,まさみ
+たかはし,りゅういち
+たち,まさよ
+ひえ,きみお
+ただ,みなこ
+よしもと,ひろこ
+もちずき,ちひろ
+たなか,こうじ
+たぐち,まゆみ
+さとう,いくお
+さかした,ゆきえ
+かわしま,まゆみ
+ほりぐち,かおり
+ふくま,すみたか
+かわたに,あきら
+じびき,おさむ
+さいとう,みつる
+しおつ,いさお
+とばた,のりかず
+やまもと,まさひこ
+おふち,ひろみち
+しのはら,のぶお
+やまかわ,かずただ
+たむら,としお
+はたけやま,たかこ
+たなか,ひかる
+かなざわ,ひであき
+たかはし,えりこ
+ふじむら,みなこ
+ながしま,よしゆき
+きのした,ときこ
+こんど,まみ
+あんべ,まなみ
+さいとう,いずみ
+あさだ,みき
+きのした,ふみえ
+かどや,あきこ
+うえだ,とおる
+さいとう,もに
+たかはし,まさひろ
+いしざき,しもん
+おざわ,てるひさ
+はやし,おさむ
+やがわ,みちお
+たかはし,たみお
+とみやま,よしあき
+あだち,ゆうぞう
+あかいわ,しょうすけ
+かがや,ゆきのぶ
+あらい,さおり
+おしきり,たかし
+やまむら,えいじ
+たかやま,としゆき
+よこやま,おさむ
+ばん,つぐお
+いずみ,よしのり
+みずの,ただお
+ぶんや,みのる
+てらおか,しょうじ
+みやした,みのる
+あさま,けいこ
+ささき,てつお
+にしお,よりと
+ふるや,てつお
+いまだ,ひでゆき
+いしはら,いくえ
+はしもと,みきお
+まるやま,ともゆき
+かじ,かずたか
+かねこ,はなこ
+なかだ,のりひと
+ちざわ,なほ
+さわ,あさこ
+とがめ,みわこ
+よしだ,げん
+おおの,ひろこ
+やこ,まさひこ
+いしかわ,あきのり
+ことだ,ひろこ
+さがわ,かずま
+のぐち,かずまさ
+でんぼ,ひろふみ
+はるき,あきひこ
+いね,しょうえい
+おおの,くにお
+かねだ,たつひこ
+のぐち,あきら
+おおば,ひろみつ
+おた,とくいちろう
+しもまき,やすお
+わたひき,ゆうこ
+やまもと,まり
+ふじむら,まりこ
+そうみや,けんじ
+しま,くみ
+ささき,たかゆき
+かがわ,れいこ
+たけうち,くみこ
+さいき,みよこ
+いとう,のりこ
+きむら,ようじ
+たばた,たかひろ
+くめ,とよあき
+たかだ,まりこ
+たむら,みえ
+たかまつ,まきこ
+しろした,しゅうさく
+かとう,ともゆき
+あわい,としのり
+ほさか,のりこ
+たなか,るみ
+みひら,しゅうさく
+さとう,けいこ
+おざわ,ゆきお
+すずき,けんじ
+みやざき,りゅうぞう
+もりたに,ゆかり
+いわぐろ,つとむ
+うえま,しょうこ
+ふかた,ちか
+ひろせ,あきこ
+おかだ,ひろみ
+かとう,ありか
+まき,さゆり
+のだ,ともかず
+くぼ,きょうこ
+にしきおり,つぎお
+やの,じゅんこ
+かわむこう,なおき
+やすむら,みよこ
+とにし,ともこ
+やまもと,ひかる
+しもだ,だいすけ
+おおたに,くにお
+おのさと,はん
+かなざわ,ひろあき
+おかもと,みわこ
+さいとう,みなこ
+かしわばら,のぶこ
+たかはし,まさのぶ
+さいとう,まなぶ
+まつだ,よしあき
+たちざき,わかこ
+こんど,ともこ
+しみず,だいすけ
+ながおか,かおり
+なかがわ,あつし
+たかと,ひろゆき
+きむら,たかし
+なるせ,きよみ
+おぐま,かえ
+たかはし,みなえ
+きくち,せいこ
+さとう,はじめ
+えんど,まりこ
+たむら,とものり
+やまもと,こうじ
+あさい,よしひろ
+もり,おさむ
+たかしろ,めぐみ
+おか,さいか
+かとう,としや
+いぐち,さちこ
+たなか,きょうこ
+よしだ,こうじ
+あきもと,まどか
+にしい,じゅんじ
+わしおか,こうじ
+いぬまる,ひろじ
+ほし,しずか
+よねやま,まさのぶ
+くろべ,ゆういち
+いしい,ひさえ
+ひぐち,じゅんいち
+なかだ,たかはる
+おのでら,なおこ
+とだ,としゆき
+まえだ,ひろこ
+ながい,ゆきこ
+こぬた,ひさよし
+しばさき,かつとし
+うかい,あきか
+すずき,ちはる
+ひらき,のぶこ
+なかむら,ゆうこ
+やまだ,まさみ
+かどくら,まさし
+たかさき,こうじ
+なかた,きよみ
+たにかわ,ほずえ
+にしむら,まさや
+みなみ,あやみ
+おおぬき,みのる
+さとう,ひろし
+たかはし,たかお
+ひだ,おさむ
+さくま,しま
+にえだ,たかし
+よこい,れみ
+よねくら,たけお
+ばんば,りえ
+やまだ,あきひで
+いまむら,るりこ
+いけだ,ちあき
+なかむら,みなこ
+すどう,りえ
+なかそね,かおり
+おおさわ,ちかこ
+さとう,しちろう
+えいどめ,ゆき
+いがらし,みか
+たや,たかこ
+おおひら,よしこ
+さかもと,さとし
+すぎもと,こうじ
+かとう,みなこ
+よしい,ただひろ
+いわや,ようこ
+きのした,きょうこ
+すぎさわ,かずよ
+わだ,みよこ
+みやした,えみこ
+うえの,のぶこ
+おおたき,ゆみこ
+いしばし,きょうこ
+いわした,まさお
+いしかわ,ひでひこ
+きし,たてお
+まるやま,ひさお
+ほんま,たかお
+くすもと,いさお
+いまの,きみひで
+おおにし,せいぞう
+やまだ,しょう
+ふじおか,とらお
+はなだ,やすかず
+しばた,あさお
+みやした,ゆきお
+かさはら,まさお
+おおやけ,はるお
+いまい,くにお
+こせき,まりこ
+おおた,のぼる
+まちい,かずひろ
+きくち,せつお
+ひぐち,かずえ
+みなよし,じゅんじ
+すずき,ひろかず
+なんば,なおき
+おおにし,だいさく
+はやしだ,たかとし
+たなか,ひでひろ
+かねこ,かずのり
+つちや,ともゆき
+いいだ,えつお
+ふるや,かずお
+なかむら,みつぐ
+はるはら,たかし
+ほりえ,よりしげ
+おおた,たけし
+すずき,やすつぐ
+おと,まさとし
+なかがわ,まゆみ
+かわしま,ようへい
+てらもと,ゆうじろう
+きむら,あきら
+よどなわ,ゆかり
+こだいら,ひであき
+かくらい,ようこ
+おぐり,ひろよし
+はた,けんじ
+まつもり,かずお
+よしおか,せいじ
+しげた,みちあき
+かわぐち,ともひろ
+かねこ,まさお
+あさひ,ただあき
+わたなべ,こうじ
+ありやま,つぐお
+つじた,たつお
+よしはし,ひでお
+みしま,せいし
+さとう,かつじ
+かねまる,えつひろ
+かねこ,やすし
+えじま,ひろあき
+みつくち,じゅん
+もり,きみお
+おち,せいいち
+まえかわ,かずお
+たなか,まさのり
+おりがさ,まつのり
+こせき,かおる
+ひらやま,ただし
+こぼり,えつよし
+なかうえ,たつお
+すとう,まさお
+ごとう,きよひこ
+つかもと,ひろみち
+えびはら,よしあき
+もりの,ひでのり
+すずき,まさあき
+よしだ,まこと
+いまい,まさき
+ひの,むねたか
+よしだ,みな
+おにずか,すみただ
+たかぎ,まさひこ
+おむら,かつひと
+うちやま,えつこ
+くろかわ,よしのぶ
+やました,たきお
+にしだ,ひさえ
+かしわぎ,ひろし
+かねこ,ゆきこ
+くまだ,みきお
+こじま,なおずみ
+しらい,てつひこ
+ふるかわ,りえ
+むしう,ただあき
+よしの,としお
+すぎうら,せいいち
+ふじさわ,まり
+さとう,あきひろ
+えざき,たかゆき
+むらかみ,たかお
+にわやま,まつもり
+やすの,みか
+どうだ,ともひこ
+かじい,もなみ
+たなか,ようこ
+まつなり,いさお
+おおばやし,こうきち
+たかはし,たくや
+まつむら,やすまさ
+こもり,まきこ
+のぞえ,かずえ
+おの,きよみ
+かんの,こずえ
+さとう,けいこ
+のなか,わかこ
+かわはら,ゆみ
+なかむら,まゆみ
+やました,としかず
+こういち,ももえ
+いたや,ひでお
+やま,ふみこ
+やまもと,そういちろう
+くらた,やすこ
+かわず,いたる
+みかみ,こういち
+たきがわ,よしかず
+たなか,ひろあき
+みやた,たかてる
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt
new file mode 100644
index 0000000..86502c9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Japanese_k.txt
@@ -0,0 +1,22749 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+アキモト,ヤスオ
+アキバ,シゲル
+アライ,ヒデアキ
+アライ,ケンイチ
+アカガワ,トシオ
+アラキ,セイゴ
+アイカワ,ノリオ
+アキノ,ユキオ
+アキヤマ,ツヨシ
+アサイ,ヒトシ
+アベ,マモル
+アリガ,ツトム
+アキタ,ヨシテル
+アカツカ,カズヒコ
+アライ,マサハル
+アサハラ,カズオ
+アツミ,マサアキ
+アワヤ,ヒトシ
+アサカワ,トシアキ
+アオキ,オサム
+アワズ,アキラ
+アキクサ,ヨウスケ
+アオヤギ,ハツカズ
+アジサワ,シュウイチ
+アイソ,ヤスシ
+アオシマ,チヨカズ
+アトウ,マサヒコ
+アサノ,ヨシヤ
+アリガ,ソウイチ
+アオキ,リョウヘイ
+アイカワ,ユキオ
+アキタ,マサヒロ
+アサノ,ノリアキ
+アサト,ヒデシ
+アラキ,ヨシカズ
+アンドウ,ヤスシ
+アサカワ,ヒロシ
+イイダ,マコト
+イワサワ,マサキ
+イシカワ,マサオ
+イノウエ,ヒロヒト
+イシハラ,ヨシノリ
+ウカジ,サチコ
+ウメタニ,カツヒコ
+オケタニ,ケンジ
+オオスギ,アキヒロ
+オオカワ,ミキヒコ
+カトウ,マサトシ
+カモ,マサアキ
+クマガイ,マサシ
+コンド,アキラ
+スギモト,オサム
+ハマサキ,ヨシノリ
+チダ,シュンジ
+ナカムラ,ケイゾウ
+ナガタ,チエコ
+サワムラ,カチコ
+ナルオ,ヨシノブ
+ナリタ,ユミコ
+ハセガワ,ヒロコ
+フジタ,ケイコ
+フジワラ,タカコ
+ブヨウ,テツオ
+ホリ,コウジ
+ミナミムラ,チアキ
+ミヤジマ,チヨリ
+ヤマダ,マリ
+ヤマグチ,タカシ
+ヤナギハラ,ミドリ
+ヨシノ,シンイチ
+ニイダ,クニヒコ
+オオイヤマ,ユウコ
+カナガワ,イチロウ
+キムラ,リエコ
+ツカザキ,ミホ
+カワダ,ナオコ
+アサカワ,ミサコ
+シモツ,マサアキ
+オカ,タカヒト
+オガワ,コスケ
+タイラ,ショウイチ
+イシノ,キヨナガ
+キミシマ,アキラ
+サトウ,テツヤ
+ヤマダ,オサム
+オオタ,ナオミチ
+マエダ,ヒデトシ
+カザラシ,ミツル
+ゴトウ,カツノリ
+ホシ,マモル
+クロダ,シンヤ
+ツカワキ,トシヤ
+イナガキ,マサヒロ
+イワモト,タモツ
+ツルタ,タカシ
+イシジマ,リョウヘイ
+ヤマナカ,ヒロトシ
+ウエキ,アキコ
+ニシムラ,アツコ
+ワイダ,タダシ
+ヨシダ,ルミ
+シブヤ,ユタカ
+アトウ,マサノリ
+ミヤタ,カオル
+オオタキ,ツギオ
+キヨオカ,マコト
+オオタニ,タカシ
+ニシワキ,ナオミ
+ニシヤマ,タカシ
+ミシマ,タカユキ
+カトウ,ヒロシ
+イマオ,ミズホ
+オザキ,コウジ
+セキヤ,マサユキ
+ツクダ,ノブユキ
+ミヨシ,ノブマサ
+ヨシミ,タカユキ
+ササオカ,タカシ
+オシマ,チハル
+クボタ,チズコ
+シバヤマ,シュウゾウ
+オオクボ,トナミ
+タチノ,ジュン
+ワダ,ミチヨ
+マツシタ,マサモリ
+コムラ,ヤスヒコ
+マキシタ,ケイコ
+アカオ,ヤスヒロ
+ハシモト,ヒトシ
+オオノ,カズオ
+セキモト,ヨシオ
+マエダ,チカラ
+ミツホリ,ナオキ
+ミナミゾノ,マサキ
+セガワ,カオリ
+スズキ,トヨジ
+キタガワ,ヨシタカ
+ヨシヤス,ジロウ
+ヤマモト,マリ
+カトウ,ヒロシ
+カワカミ,ヨウ
+マキノ,ナオキ
+スズキ,マサオ
+フルサワ,サトシ
+ハヤシ,ジ
+イマニシ,トシヒコ
+ミヤモト,ユカ
+マキ,クニアキ
+コイデ,サホ
+ワタナベ,マサコ
+オオハシ,ヒトシ
+アカオ,アキオ
+アサイ,カズコ
+イマイ,タカシ
+キラ,マサヒコ
+ニシムラ,テルキ
+ヨシカワ,トシユキ
+ミナミ,ケンジ
+ツルタ,ノリオ
+ナカムラ,ジュンイチ
+タナカ,ケンジ
+マツウラ,タケシ
+スギタ,ジ
+カワイ,トシオ
+コクボ,サツキ
+ツダ,マコト
+ミヤタケ,トシタカ
+クロサワ,ヨシカズ
+スミヒラ,マサヒコ
+タカキ,マサオ
+イシト,コウキ
+ヤマダ,モトカズ
+ニイツ,ノブアキ
+イワムラ,カンジ
+カワナベ,ヨシヒロ
+ナガイ,ヒロユキ
+ヤマネ,チアキ
+イマイ,タカユキ
+ナカオ,イサオ
+オシキリ,フミハル
+イシカワ,ジュン
+オカジマ,ジュン
+オオニシ,マサハル
+スズキ,テツ
+ヤマナカ,サツミ
+タニグチ,カズヒロ
+カワベ,トキオ
+コンノ,ミキ
+サトウ,ヤスヒロ
+タカヤマ,シンイチ
+モリミチ,イタル
+ホリカワ,カツミ
+フクイ,タマコ
+キタムラ,アキラ
+ナカハラ,ヒロミ
+イチイ,ヒデノリ
+イワサ,カヨコ
+スズキ,シュンジ
+ヨネタニ,カツフミ
+タノ,タケシ
+シバタ,ヒデヨ
+イノウエ,マサノリ
+イシカワ,トシオ
+キシ,マサミ
+アワエ,アツシ
+タケオ,ヨシアキ
+キノシタ,カズヒコ
+ツカダ,フミアキ
+アリドメ,トシユキ
+キッカワ,トシアキ
+オガサワラ,ヒサカズ
+ナガセ,タカヒロ
+ハルヤマ,アツヒコ
+オズ,ヤスオ
+コサカ,トシカズ
+シラサキ,トオル
+タナベ,ツトム
+イケガミ,ツヨシ
+コバヤシ,ジュンイチ
+マツバラ,ナオト
+ナカガワ,モリヒロ
+オガワ,セイジ
+ヨシダ,マサノブ
+イケ,サダノブ
+タニグチ,マサミチ
+マエダ,ヒロシ
+ヒラノ,タカユキ
+シミズ,キミコ
+ヤマダ,アキトシ
+タナカ,ヒロアキ
+コマツザキ,マモル
+カトウ,マサカズ
+オワ,ノリコ
+イワムラ,ヒロタダ
+イリエ,カズユキ
+アカヤマ,マサユキ
+アキモト,ヒロアキ
+カミムラ,アキヒコ
+スミタ,カオル
+ハマサキ,アツシ
+ヤスダ,マモル
+タケムラ,ミキヤ
+ムラカミ,トミツグ
+ナカジマ,ヒサトモ
+モリモト,コウジ
+セキグチ,タカユキ
+ナカジマ,マサヒコ
+キガワ,ヒロヒサ
+タカヒラ,タカシ
+モチダ,アツシ
+カメヤマ,タカシ
+オヤマダ,マサヒサ
+タナカ,テルヒサ
+ホンマ,シンジ
+キノシタ,ヤスヒコ
+シノツカ,ノブシゲ
+アイハラ,ヤスフミ
+ナガマツ,エイジ
+トヨムラ,マサアキ
+ヒラノ,タカシ
+キムラ,ジュン
+イケダ,セイジ
+イシハラ,ユウコ
+ノグチ,マサル
+コケツ,ミツマサ
+オクヤマ,アツヒコ
+ハマグチ,シンジ
+ツジサカ,ヒデアキ
+イチカワ,サトル
+ヨシダ,セイゴ
+ヤマダ,ヨウイチ
+シミズ,ヤスシ
+サカガミ,ノリカズ
+コスギ,ヒサヒコ
+ニシダ,セイジ
+イイダ,カツラ
+ウチダ,ヤスミ
+モトヤマ,チハヤ
+ミヤモト,イクヨ
+コバヤシ,ヤスシ
+カトウ,ヒロユキ
+シライ,サトシ
+ハギワラ,コウジ
+ヤマウチ,ユキヒデ
+ミツハシ,カオリ
+モンジ,ヨウイチ
+タキモト,ノリコ
+オクダ,シュウジ
+ツカモト,シュウジ
+ムコハラ,ヤスイク
+サルヤ,ミチオ
+オカジマ,トシヒコ
+ホシノ,ヒサト
+ホシ,ヒロフミ
+フシミ,コウイチ
+タカハシ,タツヤ
+ニシヤマ,シンジ
+ツルマチ,ショウイチ
+トミタ,ナルト
+ウチダ,トオル
+オオタカ,ユウコ
+サカイ,タカヒサ
+ソガベ,カツミ
+ワダ,ケンジ
+コサカ,マサミ
+アソ,アケミ
+アライ,トシハル
+スギムラ,シゲオ
+アキヨシ,カズオ
+アサカワ,ツトム
+ワダ,サカエ
+イケダ,コウイチ
+オカモト,リョウジ
+アオキ,マサル
+ウエサワ,ツヨシ
+ウヤマ,ヒデアキ
+ナカハマ,ススム
+カワモト,マサユキ
+スエマツ,ジュンジ
+ナガイ,サトシ
+ナカハラ,ユウゾウ
+ナワタ,ナリアキ
+カツザワ,ヒロシ
+ヤマウチ,ミユキ
+アカギシ,ツヨシ
+クサズミ,トシヒコ
+ホカリ,ヒロシ
+カトウ,オサム
+キリウ,ヒロキ
+オガワ,マサト
+タナカ,マサヨシ
+アイムラ,ツトム
+イガラシ,マサト
+カワワキ,タカミチ
+マエサカ,トモミツ
+マツシマ,アツシ
+マツモト,ヒデト
+カタイ,マサヒロ
+コジマ,マサアキ
+ツジモト,トオル
+ナワタ,サトシ
+フジタニ,カズヒコ
+キセ,テツロウ
+サカグチ,ジュンイチ
+スズキ,トシユキ
+ハマサキ,マサヒロ
+ヨシダ,ヒトシ
+ホッタ,シゲヒト
+マスコ,ヒサオ
+タケナカ,コスケ
+イシイ,ハルキ
+タサカ,ヒロシ
+マツダ,マサヒロ
+ハタ,タカシ
+アキヤマ,ユタカ
+タカハシ,ヤスヒト
+ヤマカワ,ショウジ
+ヨコチ,マサヒロ
+ヨネタニ,キイチロウ
+フジノ,ユウスケ
+ハセガワ,カツトシ
+フジタ,マサユキ
+アンラク,マサコ
+ハシモト,ノブユキ
+イナダ,レイコ
+ユゲ,マサヨシ
+イマダ,イズミ
+サカモト,カズヒサ
+トヨナガ,ヤスヒロ
+ハシモト,テツオ
+ハナイ,ヨシノリ
+シミズ,タツオ
+ナカムラ,ヨシハル
+カジムラ,ヨシヒコ
+イシガキ,ケンゾウ
+ハットリ,マサオ
+アマノ,リョウ
+ミカミ,カオル
+フルテラ,マユミ
+マミヤ,ヒデキ
+ツルノ,ムツコ
+アサイ,ヤスキ
+ノムラ,シゲオ
+ヨコヤマ,シンジ
+イケダ,ユタカ
+アンドウ,アキオ
+オカヤス,ヤスコ
+ゴトウ,ヒデアキ
+カワシマ,タカコ
+ハギワラ,エリ
+アタラシ,ユミコ
+タカヤマ,トシヒト
+ニシヤマ,トシユキ
+エチゴ,シンイチ
+ヤマザキ,ヨシヒロ
+ムロヤ,テツオ
+キムラ,ユキオ
+ナカハラ,フミオ
+ウエノ,タカシ
+ヨシダ,ケンタ
+ツカモト,タダシ
+オザキ,トオル
+アシカワ,ヤスシゲ
+ネギシ,トモノリ
+キュウノ,シュウイチ
+サトウ,ヨシヒデ
+イノウエ,カズヒコ
+キクズミ,マサル
+マツモト,ダイサク
+ハヤシ,タカオ
+フクオジ,カンジ
+ナルセ,ケンタロウ
+マツモト,マサキ
+モリ,マサシ
+ミキ,ノブオ
+ナカタニ,ヨシアキ
+ミヤガワ,フミノリ
+アリヨシ,イクオ
+シライ,ヨシユキ
+ミナミ,マサヨシ
+トリゴエ,フジオ
+コスガ,タダシ
+ツジノ,カズヒロ
+オグラ,ヤスヒロ
+オリタ,チカシ
+アミモト,ジュンイチ
+オサカ,トオル
+ハヤシ,ヨシヒロ
+ミナミ,ミノル
+ヨシダ,トシヒコ
+ニシハラ,ヨシオ
+オクガワ,マサトモ
+ツジ,テルユキ
+ナカイ,タカシ
+ニシムラ,ツグオ
+ニタナイ,ケンゴ
+クドウ,ヒロシ
+サイ,タカオ
+ショウ,マナブ
+イノウエ,カオル
+タニグチ,ヒロタネ
+ナカニシ,シンジ
+オオモリ,ヒロユキ
+クマガイ,タカユキ
+イシアイ,トヨカズ
+ハギハラ,カズノリ
+タガタ,ケンジ
+スズキ,ミチオ
+クボ,ゼンサク
+カナウチ,シンヤ
+ニシオ,ヒデキ
+イナダ,ヒデノブ
+タケイチ,シンジ
+アンドウ,マコト
+マツナミ,ショウイチ
+ミナクチ,シュウサク
+カナウチ,ナオキ
+オオイヤマ,ノボル
+マスダ,ショウジ
+ヤギハラ,トシオ
+ミズノ,ケンジ
+ノブクミ,トオル
+ナダ,タカアキ
+タケタニ,フトシ
+イマイズミ,イチロウ
+イナダ,イサオ
+イマニ,タカフミ
+オキ,マサヒロ
+フクシマ,ヨウスケ
+イイオ,ヒロトモ
+イシダ,カツヤ
+ヒラタ,コウジ
+イタガキ,カズヒロ
+ヤマフク,サトシ
+サトウ,ノリオ
+ナカガワ,リョウ
+オサカ,シュウイチ
+オイカワ,ノブアキ
+カシオ,ヨシヒロ
+ホシザキ,シゲキ
+セキジマ,コウジ
+オカマエ,ノリヒロ
+サトウ,タカシ
+コイデ,タカナオ
+タカハシ,セイジ
+オガワ,コウイチ
+テラシマ,タクオ
+ヤマシタ,マサアキ
+ノセ,ヒデユキ
+マツマエ,アユミ
+ヨシタ,ノリアキ
+ムラタ,トオル
+ハラ,ノリヒコ
+ヤマウチ,ケンジ
+カミ,カツユキ
+スガイ,タツユキ
+タカノ,ヨシノブ
+トコロ,ヨシヒロ
+スズキ,ススム
+ササキ,アツユキ
+ツノダ,テツロウ
+ヤマサキ,テツヤ
+ミウラ,カツミ
+オダギリ,アツコ
+ハヤシ,シンチョウ
+トミオカ,ヒトシ
+イグチ,セイイチ
+コンド,タカシ
+クボ,ヒデオ
+クラヌキ,キョウコ
+トミマツ,ナオコ
+クロカワ,マサアキ
+ノザワ,スミオ
+カワサキ,クニアキ
+タケダ,カツヤ
+シノハラ,アキヒロ
+フルヤ,シゲル
+ナカムラ,サトル
+ヤジマ,トオル
+ニシガキ,キヨシ
+ナカガワ,ソウ
+ヒラヤマ,シュンイチ
+ヤマグチ,ムツヒロ
+ヨシムラ,ユウジ
+ツダ,タカユキ
+カツライ,ワタル
+ミナイ,トシカズ
+タキグチ,カズオ
+ワケベ,ヨシヒロ
+ニシカワ,マサヤ
+シラガキ,ヒロアキ
+ババ,マサカズ
+アカリ,リョウジ
+アベ,タクヤ
+カイ,クニヒロ
+オオモリ,ヒデカツ
+スズキ,タカシ
+ナガサワ,ヒトシ
+サワダ,エミコ
+アズマ,ノブユキ
+オノ,ヒデキ
+カワニシ,ノブヒデ
+マナベ,カズヒロ
+アリヤマ,ユウジ
+ニシカワ,キヨシ
+アツミ,シュウジ
+イトウ,ヒロユキ
+ヒロタ,トシヤ
+ホカゾノ,カズト
+ホシノ,ヤスヒロ
+ヤマグチ,マコト
+アガタ,コウジ
+マルオ,ヨシユキ
+コイデ,ヒロアキ
+カミムラ,マサヒデ
+サイトウ,ナオキ
+フクミツ,アツシ
+ヒラヤマ,ヒカル
+サイトウ,テツヤ
+イケオ,ミノル
+フルカワ,ジュンイチ
+イイダ,ヒロアキ
+ミヤザキ,モトヒロ
+ヨシダ,ヤスユキ
+キクタ,エリコ
+チバ,テツオ
+トリヤマ,リツオ
+エザワ,リュウタロウ
+オオバ,ヨシタミ
+ヤマモト,オサム
+ニシカワ,マサノブ
+エンド,マサハル
+フクイ,オサム
+ハマノ,ヨウイチ
+キタハラ,ケンジョウ
+サトウ,ユキヒロ
+マツオ,マサフミ
+トヨタ,ヒデヤ
+ヒラモト,トシヒデ
+ヤマモト,コウタロウ
+ハマダ,マユミ
+イワカミ,ミノル
+クボ,テツオ
+エンド,カズヒロ
+カゲヤマ,マサノリ
+ニイヤ,トモユキ
+コウチ,ユウスケ
+アダチ,シゲユキ
+ハヤシ,シュンジ
+ナカノ,マコト
+イシハマ,マサヒロ
+コクボ,リュウイチ
+カワノ,ハジメ
+ナカジマ,ノリヒコ
+タイラ,ツヨシ
+タケギ,リツオ
+モリシマ,トモコ
+ナカムラ,ヒロアキ
+ノグチ,ヒロキ
+アラキ,ヤステル
+アラ,ヒロシ
+イトウ,ナオコ
+ハヤサカ,フトシ
+コツカ,マサカズ
+タケウチ,ヒロシ
+イワタ,タカシ
+マエダ,ヨシオ
+ホソカワ,マサヒロ
+アライ,ヤスヒロ
+オオクラ,カンジ
+タケコシ,アツシ
+ヤマグチ,ケンジ
+シミズ,カツトシ
+イトウ,ヨシツグ
+イズミ,カネミツ
+ゴトウ,ソウタロウ
+オオツボ,カズミ
+カミコガワ,シンイチ
+タケイ,サトコ
+ミヤハラ,マサシ
+アワジ,アツオ
+ウシロダ,カオル
+モリイズミ,ハジメ
+ナガノ,アツシ
+タナカ,ムネユキ
+フカエ,ケンジ
+フルヤ,ミサオ
+ミズヒキ,ヨシオ
+クボ,ミツヨシ
+タグチ,フミアキ
+ナカオ,ツギト
+ヤマシタ,ユウイチ
+クロキ,ショウゴ
+マツダ,ケンイチ
+オダジマ,ナホミ
+ホリ,ユキオ
+タニグチ,ツネヤス
+アライ,トシノリ
+ゴトウ,テツジ
+トネガワ,ノリユキ
+モリタ,タカコ
+フルカワ,シゲオ
+ユキ,ヨシノリ
+シライシ,タカヒロ
+イケヤ,サチコ
+ワタナベ,タツオキ
+タニグチ,コウイチ
+マスダ,シノブ
+ミズグチ,ジロウ
+ハヤミズ,ユミ
+ホカリ,アキヒコ
+イシイ,ノリヒコ
+シライシ,マサヒコ
+シモカワラ,シゲヒロ
+モリモト,トモコ
+イトウ,ヒロシ
+オオヤ,ケイジ
+ミヨシ,ミノル
+シバタ,ノリヒロ
+タンザン,トモヒコ
+イワサキ,ヒデカズ
+フクイ,サトシ
+モリバヤシ,カズヤ
+ヤマダ,ヒデミ
+フジワラ,サトシ
+ナツメ,ヤスト
+シノハラ,ヒロシ
+オサダ,マサシ
+フジハラ,タケヒト
+フジモト,ヒロミ
+キノ,ヨシオ
+ヤマモト,モトキ
+イシジマ,モリヒロ
+イガ,アキラ
+ナカエ,ダイジ
+ヤノ,ユウジ
+カナミツ,オサム
+スズキ,テルオ
+タカダ,リョウコ
+イシバシ,ヒロユキ
+オオツボ,ミツハル
+スギ,タカシ
+ハヤシグチ,ヒロシ
+テラシタ,カズオ
+シモヤマ,ヨシフミ
+ミヤザキ,ミツル
+モリ,ヤスヒロ
+ヤマモト,ヒトシ
+デアイ,キヨヒロ
+ホリ,トシユキ
+アネザキ,カズオ
+クボタ,タカヒロ
+ゴ,マサトシ
+ヒキダ,ヒロシ
+サカグチ,ノリアキ
+ヨシイ,タカシ
+キタハラ,カツト
+フジイ,ミドリ
+ナメキ,ヤスコ
+ヨシムラ,トシオ
+タムラ,ダイスケ
+ウミノ,ヒロシ
+アンドウ,ヒロシ
+ヨシモト,タケシ
+ネモト,ヨシフミ
+ミヤザキ,マサヒコ
+タカモリ,チエコ
+クマガイ,クニオ
+ゴウダ,コウタロウ
+ハタ,コウイチ
+クズミ,サチコ
+ナツイ,イクオ
+シマダ,ヒデオ
+オオツキ,カズヒロ
+マミヤ,ヒロカズ
+サトウ,ケンジ
+コバリ,ヒデユキ
+ササキ,ヤスユキ
+カネコ,マサキ
+オノ,トオル
+オオヤマ,ヨシエ
+マトバ,マサハル
+イタクラ,ジュンイチ
+オダシマ,カツロウ
+シイキ,ノリコ
+シバタ,カズヒロ
+カツラ,チカコ
+アライ,ヨシノリ
+サイトウ,ツヨシ
+マツモト,マサノリ
+ウエヤマ,ミツナリ
+マノ,シンイチ
+ミサオ,ナオキ
+ソノベ,キミユキ
+スズキ,アキオ
+ヤタニ,キョウコ
+ムタ,マナブ
+マルヤマ,フミアキ
+フダ,タカヨシ
+コバヤシ,ケイイチロウ
+ワタナベ,カオル
+オダ,マコト
+オフチ,マサオ
+タナカ,シゲオ
+サワキ,マサシ
+サイトウ,ヒロシ
+ハギノ,ノボル
+ウシヤマ,タカシ
+オクヒラ,ノブヒロ
+ヨシイケ,サナエ
+コンノ,ユウコ
+ノダ,トシオ
+エンド,トシユキ
+スズキ,ミツオ
+タナカ,ヨシヒロ
+キド,ケイジ
+イトウ,マサノブ
+フジワラ,トシハル
+ハセガワ,アキラ
+マスモト,ケイジ
+カイ,ヒトシ
+タカハタ,トモコ
+ヒデシマ,カズノリ
+タカヤマ,シゲキ
+ミヤキ,ユタカ
+フセ,カズヒコ
+モモイ,ヒロヤス
+ツユキ,ミツグ
+カワハラ,シゲル
+マツイ,アキヒロ
+ハナワ,マサヒロ
+ヒワダ,テツヤ
+マスイ,タカシ
+カトウ,タダツグ
+タケマ,フミオ
+シライシ,ヨシオ
+フルカワ,ショウイチ
+テジマ,アキラ
+アキモト,サトシ
+スギヤマ,ヒロアキ
+ナンブ,ユキヒロ
+ツジノ,ケン
+テラサカ,イッシン
+サカイ,ヒデアキ
+クボ,アツシ
+マルタニ,マサヤ
+タカハシ,ミノル
+マツウラ,シンヤ
+タナカ,センジ
+ユザワ,タカアキ
+タカハシ,カズヤ
+オオバ,シンゴ
+マエカワ,トオル
+ニワ,トオル
+カワムラ,マサキ
+コイケ,カズエ
+クリシタ,トシユキ
+ヒロセ,オサム
+コンノ,タクヤ
+ハセガワ,ヒロヒコ
+イトウ,ヒロシ
+キザキ,アツシ
+エナミ,ノリアキ
+ツカナカ,フミアキ
+サカモト,ヒロミ
+マツバラ,ヒデオ
+テライ,シゲアキ
+オシタ,タカヨシ
+タナカ,ヨシアキ
+ヤマモト,マナブ
+イシグロ,ヨシト
+ハシモト,スミコ
+サトウ,ヤスヒロ
+ヤマモト,トオル
+フルカワ,トシノブ
+ヤマダ,ヒロト
+イクタ,ショウコ
+サトウ,ユウイチ
+ワタナベ,カズヒロ
+カコ,タツジ
+マスダ,ヒロノリ
+カミジ,タカユキ
+イハラ,カズヒロ
+アサミ,カズヒロ
+ナカジマ,タカシ
+コタキ,テツヤ
+カワモト,エイイチ
+カワシマ,カズヒコ
+アズマ,リュウジ
+ナカノ,シュウイチ
+ヒラノ,サトシ
+タカハシ,マサル
+フカヤ,モモキ
+オオバ,タケシ
+サクライ,ヒロアキ
+サカイ,イッセイ
+アオキ,タクオ
+ヨシダ,ヤスシ
+コハシ,マサノリ
+マツウラ,テッペイ
+サトウ,オサム
+ニシキオリ,トモコ
+ミヨシ,ヨシヒサ
+コスギ,ツカサ
+サトウ,タカイチ
+フジイ,ヨシヒロ
+フナダ,カズヒコ
+スギタ,トオル
+ショウダ,カズヒロ
+モリシタ,トシオ
+ヒラ,ヒトシ
+シンタク,ヒロユキ
+ヒガシダ,トシユキ
+クリタ,マサヨシ
+イナダ,ユウサク
+ニシノ,トシヤ
+イケジリ,ノリアキ
+ナカムラ,ナオヒロ
+ナカカド,ヨウイチ
+イノマタ,ヒロシ
+ツルミ,ヒロヨシ
+ヒラモト,シゲキ
+ミヨシ,フミアキ
+アワノ,タカシ
+アキタ,ヨシエ
+ヒガシヤマ,タケシ
+サトウ,ヒロミ
+カワサキ,ケイイチ
+マルヤマ,ハツオ
+スナガ,ヒデキ
+イマイ,タミコ
+フジイ,ユキオ
+マキタ,ミツオ
+イトウ,タツシ
+タカハシ,リュウイチ
+キリマ,シンジ
+オオニシ,トモユキ
+ミノシマ,タケヒト
+サトウ,カズタカ
+ヤマシタ,タカユキ
+ミタムラ,マユミ
+サトウ,シゲル
+トマツ,タマミ
+エビシマ,ヤスユキ
+ワダ,カズヤ
+スズキ,キヨタカ
+スガハラ,ミツル
+タグチ,ヒロム
+トガシ,マサヒコ
+ナガハラ,サトル
+ヤマモト,ケイコ
+タケダ,マサユキ
+サトウ,ミノル
+タカミヤ,ヒデノブ
+アオキ,タカヒロ
+コヤギ,スミタカ
+オノザキ,リョウスケ
+モリタ,ノリコ
+サクラギ,ユミコ
+オカサカ,ヒロノリ
+ヤマグチ,コスケ
+カワシマ,ヨシノリ
+イワノ,カズノリ
+ゴウコ,ヤスハル
+モリタ,ヤスジ
+シゲタカ,ナオキ
+テズカ,エイサク
+オタ,ツヨシ
+ヤマダ,マサハル
+フカダ,ヒサユキ
+ハセベ,モトアキ
+マツノ,アツシ
+ツジカワ,ケンイチロ
+マツモト,カツミ
+セノオ,ハジメ
+ノムラ,サトシ
+アライ,トヨシゲ
+オグリ,スミエ
+ジンノ,マサヒロ
+ヒロズミ,ミノル
+マツイ,ススム
+シバザキ,アツシ
+イノウエ,ヒデオ
+タナカ,ヒデカズ
+サソ,ナオフミ
+シラハマ,アキヒコ
+タナカ,ナオキ
+ナカムラ,ヤスヒロ
+イシガミ,ヨシアキ
+シバタ,テッペイ
+ノグチ,アユミ
+イチバ,コウジ
+カワグチ,ヒデコ
+ヨシミ,ヒデミ
+フジカワ,ヒロユキ
+カトウ,ツヨシ
+タカハシ,イサム
+フジサワ,カズオ
+ミズタニ,トモフミ
+セキグチ,ヨシロウ
+マエカワ,ムツミ
+アライ,リュウジ
+モリ,ケイタロウ
+サトウ,ナオコ
+クワタ,ショウイチ
+オグリ,ヒロシ
+ヒライ,カツヒコ
+ニシムラ,フミトシ
+オオクラ,ヒサノリ
+ソノベ,アキコ
+イイダ,ヤスアキ
+コグチ,エイイチロウ
+モロホシ,ヒデカズ
+ハマダ,ノリカツ
+カナザワ,カズユキ
+マツバ,シゲル
+イワタ,ヒデトシ
+アズチ,マサル
+コンド,イサオ
+タカハシ,ヨシオ
+アマノ,ヒロアキ
+カタダ,オサム
+タメヒロ,モトコ
+マツダ,タカシ
+ナリイシ,ヤスヨシ
+オキタ,モリミチ
+ヤマシタ,ヒロシ
+スズキ,ユウジ
+マンポ,カツミ
+イチイ,ケンジ
+コイデ,トモコ
+タカハシ,ナオコ
+ナカガワ,カズオ
+オハマ,タカシ
+タカハタ,ヒロミ
+コグチ,タカシ
+ミヤガワ,カズヤ
+シバヤマ,ハジメ
+アライ,ヤスヒロ
+ワタナベ,ススム
+ナカムラ,ユタカ
+フルハタ,マサナリ
+タニグチ,ナオスケ
+ホンダ,ススム
+マツモト,アキヒロ
+タカキ,ハルミツ
+キクチ,シンヤ
+イノウエ,コウイチ
+ハラ,マサオ
+ヤマモト,タカヒロ
+ムラカミ,トモヤス
+ババ,マサヒコ
+ハセガワ,トシヒコ
+ササキ,アキフミ
+アツタ,ヒトミ
+タチカワ,ヒロツグ
+ヒラモト,ヒデアキ
+ナカムラ,トシヤ
+ツムラ,タカオ
+タカハシ,ソウイチロウ
+ヨコヤマ,ミノル
+コタケ,ミツオ
+アンラク,タカシ
+ミズノ,シンイチ
+オオヌキ,アキラ
+サカイ,ハジメ
+オタ,ショウゾウ
+ハヤシ,ノリオ
+サイトウ,アキヒロ
+タナカ,ノリコ
+ハルハラ,トウゴ
+オオツカ,マサユキ
+キタガワ,ヒデミ
+ヨコタ,カッペイ
+ヨシムラ,アツコ
+オオヒラ,シンイチ
+チャキ,シゲヒデ
+サカグチ,コウイチ
+スズキ,アキヒロ
+チカザワ,マユミ
+ナカジマ,マサノリ
+ワタナベ,タダオ
+シバ,ジュンコ
+サカイ,チハル
+ヤマミサカ,テツオ
+ヨシガミ,アキラ
+ヒラテ,マサユキ
+ワクシマ,タダシ
+アサマ,チカラ
+アズミ,タダシ
+イナオカ,ヒロカズ
+サナイ,ヒロシ
+ヤマウチ,ヤスヒロ
+イハラ,トシヒコ
+タヤマ,オサム
+ササキ,シンヤ
+フジウチ,トシアキ
+ウシジマ,シンイチ
+ノノムラ,マサタカ
+ニシ,タケヒロ
+イケダ,ヒロミ
+スギタニ,ヒロシ
+オザキ,タケシ
+コケツ,アキヒサ
+サトウ,ヨウスケ
+センバ,アツシ
+アズマ,ヒデト
+ナオイ,イチロウ
+ホシノ,ヨシキ
+カミヤ,ヤスヒロ
+ムラタ,ヒトシ
+イチミヤ,ケイコ
+タルイ,ヤスアキ
+ハギハラ,ミワコ
+タカハシ,タカシ
+オチアイ,ヒトシ
+アキヤマ,ケイスケ
+キムラ,ヨシヒロ
+ハヤシ,ヒデオ
+ヤマグチ,ミツル
+トコロ,ナオタカ
+カスヤ,エツコ
+イリエ,シュウジ
+ムライシ,ミナコ
+シンタニ,リュウジ
+ウエノ,ミホ
+ウチダ,コウジ
+ハセガワ,
+クロダ,ルリコ
+イトウ,カツヒロ
+ホリウチ,マヤ
+オオハタ,ノブアキ
+ホンダ,ヒデユキ
+ナカムラ,ススム
+サエキ,オキモリ
+アベ,テルヒサ
+ウメダ,タカヒロ
+ヌマ,マサユキ
+タブチ,ユタカ
+キムラ,ミツル
+ウダ,タカミ
+アオキ,ノリコ
+ナカムラ,マサト
+フジコシ,サトシ
+スミダ,キヨシ
+クズハラ,ノボル
+ワタナベ,ヒロシ
+アラタ,サトミ
+ロッカク,マユミ
+イノウエ,ミツマサ
+ツジモト,マサミ
+ミウラ,ナナコ
+ネモト,ヨシオ
+アメミヤ,ヨシカズ
+ナカムラ,ヒロユキ
+アイバ,ノブタカ
+ヨネザワ,シンヤ
+フジムラ,シュウ
+リュウト,ヒロミ
+ワタナベ,トモミ
+キタガワ,シンジ
+アタラシ,トモナオ
+キクチ,ジュン
+スズキ,アキラ
+タナカ,ヒロシ
+イケダ,ヒロナリ
+ヨコカワ,ミツヒコ
+クサツグ,タカシ
+ミズノ,ケンジ
+ナガホリ,コウイチ
+スギモト,コウジ
+アンドウ,ツネオ
+タカヤナギ,ヒロフミ
+シバ,マサコ
+カミヤマ,カズヒロ
+オオヒラ,ヒロミ
+ホンマ,ハルユキ
+タバタ,ノブヨシ
+エンド,ケンイチ
+イシガキ,セイジ
+シバ,ユウイチロ
+ヤマダ,マサヒト
+タカノ,カツオ
+ヨシダ,タツヤ
+アマサキ,トシヒコ
+オシカワ,シンジ
+ニシノ,ミホコ
+カトウ,オサム
+ハマオカ,トモコ
+サノ,タカカズ
+スエシゲ,クニテル
+ナカタ,ヒロミ
+コバヤシ,ヒデユキ
+スドウ,ヤスシ
+ツツミ,キヨヒト
+ミタニ,コウジ
+イシダ,ヤスフミ
+イイズカ,ユタカ
+シライ,ユミ
+ヤマダ,イワオ
+ツジカド,カズコ
+マツナガ,コウイチ
+タナカ,カズエ
+ミナミ,ヒロシ
+サカイ,マサユキ
+ウエキ,シオリ
+オダ,マサオ
+マエダ,セイジ
+デキタニ,ジュン
+アマノ,タカヒロ
+ミヤコシ,シゲカズ
+アンザイ,トシミチ
+ウメダ,ユキオ
+タキザワ,アツシ
+ムラニシ,キヨシ
+クリハラ,トシヒコ
+ヤマサキ,マリ
+オオツカ,ミツヒロ
+アミノ,タカシ
+モリ,ヤスノリ
+ニシモリ,シンジ
+タケノ,マサオ
+シンガキ,ヨシカズ
+マツオ,ヨシキ
+フジネ,マサキ
+カナマル,ヒロヨシ
+カナザワ,タツユキ
+シミズ,リュウジ
+ワダ,イツコ
+イシクラ,タケシ
+フクダ,アキヒロ
+ウカイ,ヨシコ
+アリマ,オサム
+オオタ,タカアキ
+モリタニ,タカシ
+アダチ,ヨシヒロ
+クマデ,マサノリ
+アラ,ススム
+ハシモト,トオル
+トヨオカ,マコト
+オオツ,テツロウ
+ミヤキ,ケイイチ
+イシカワ,ジュンイチ
+イガラシ,ナオツグ
+オオニシ,キンヤ
+シライシ,コウイチ
+ヨコメ,ヨシアキ
+フジモト,カズヒロ
+カンノ,モリヤス
+タチバナ,ミチオ
+ヤマダ,チナミ
+アサミ,シゲオ
+ミウラ,ヤスシ
+トクヒロ,ヒロノブ
+モリカワ,マサノブ
+イトウ,ミキヒサ
+サノ,トモミツ
+スズキ,マコト
+シモトノ,マナブ
+マカベ,サトミ
+イトウ,コウジ
+ツクダ,ジュンジ
+ヨシカワ,ミツグ
+タカヤナギ,ヒロキ
+ホンダ,タカヨシ
+ニシノ,ユウジ
+キムラ,ヨシヒロ
+カトウ,コウイチ
+オオハタ,ジュン
+ウツミ,カズヒコ
+アンドウ,カズヒサ
+ハマタニ,ミノル
+キノシタ,タカフミ
+カワセ,トシタカ
+ウエノ,ヨシヒコ
+シカマ,リョウジ
+スズキ,マサユキ
+フジオカ,マサヒロ
+イノウエ,トモヒロ
+キタザキ,ヤスユキ
+アイベ,ヒロシ
+オオカワ,サカエ
+タケイ,ヤスハル
+カラハシ,ヒロシ
+スズキ,マユミ
+アライ,ヒロシ
+イノダ,ノリユキ
+オクムラ,エリ
+マルイ,ジュンコ
+ヒロズミ,アキヒサ
+ワシズ,タクヤ
+ヨシムラ,タカヒサ
+カツマタ,タカシ
+マスカワ,カツラ
+イワオ,シュウジ
+ヤマモト,ヨシヒト
+タナカ,サトル
+タケウチ,ノリユキ
+ノハラ,シュウゾウ
+フナハシ,カズノリ
+ナゴシ,ケンジ
+ウメダ,カズヤ
+アキヤマ,ヒトシ
+ナカダ,マサト
+サイトウ,メグミ
+タハラ,ジュンイチロ
+ニシマツ,ヨシヒロ
+ヒラミツ,マコト
+メカタ,マサル
+タカミ,リュウタロウ
+ソノダ,ヒデユキ
+ミヤザキ,ユウジ
+マルヤマ,ヒデアキ
+ツノカワ,マサシ
+ハラダ,カツミ
+ツジ,ツグヒコ
+イガラシ,トシオ
+ヨシダ,カオリ
+タケガタ,コウキ
+アベ,リョウジ
+アカヌマ,トクヒロ
+カワダ,ヒロアキ
+タゴ,ヒロシ
+カミムラ,マサシ
+マツヤ,ゲン
+イワタ,アキヒコ
+マエカワ,サトシ
+ヤマグチ,レイコ
+シロシタ,トモヒロ
+ヤマシタ,マサト
+ツジカワ,ジュンイチ
+タナカ,ヨシフミ
+ミナミ,トモヒロ
+サトウ,ヨシアキ
+ウオズミ,アキラ
+スギヤマ,ヒロユキ
+チバ,マサユキ
+カナイ,サトシ
+マツヤマ,ツヨシ
+タカノ,アキラ
+クマガイ,コウイチ
+タケコシ,ムツヒサ
+フタバ,トシアキ
+ウメザキ,カズタダ
+オイワケ,ヨウスケ
+ナガツカ,マナブ
+イマガワ,ヒトミ
+ハシモト,アキラ
+オオヒラ,ユウタロウ
+ミヤヒラ,ミチアキ
+ノグチ,ケイゾウ
+スギモト,カズフミ
+カワグチ,カツノリ
+シノセ,ツヨシ
+ナリサワ,ヨシヒト
+ヒロセ,アキヒロ
+ニシザキ,ススム
+モリ,ノブユキ
+フカオ,ヨシコ
+ミヤジマ,ケイゾウ
+マツノ,カズシゲ
+イワイ,シゲノブ
+カイ,ミドリ
+タナカ,クニコ
+チバ,マサミ
+ソノ,ヒロシ
+ヨコヤマ,アキヒサ
+タカシマ,ジュン
+オカモト,コウジ
+ミヤカワ,ダイスケ
+ムラモト,トモアキ
+キムラ,コウイチ
+マツナガ,ユミコ
+フクダ,ツトム
+オオニシ,マサシ
+アイ,ヒデカズ
+マエダ,ヒサカズ
+イノウエ,ヨシミ
+イイダ,タカヒサ
+フジイ,ヒロユキ
+サクライ,タクヤ
+マツイ,ウイリ
+イマダ,シンジ
+ミヤケ,アツシ
+サカイ,ヒロヒサ
+カトウ,オサム
+イワタ,ナオト
+オオノ,マサヤ
+イソベ,タカヨシ
+オヤマダ,ツトム
+トウジマ,タツヒロ
+タケウチ,カズヒコ
+ナカヤマ,マスオ
+シライシ,オサム
+カノマタ,アツシ
+スドウ,タカヒロ
+シラヤマ,アキヒロ
+オオヤ,マサル
+ミナガワ,トモヒロ
+キムラ,タツヤ
+タカギ,ダイゾ
+サトウ,ユキオ
+フジワラ,ミツル
+イモト,ヨウタ
+ウエノ,トモヒロ
+キョウノ,ケンゴ
+キリウ,ヨシタダ
+クボタ,ツネオ
+コセキ,タカシ
+スザキ,マサヒロ
+タカサキ,ヤスヒサ
+ツカモト,シンイチ
+ナイトウ,ケンジ
+ナカゴメ,ヒロカズ
+ナカムラ,ヒデヤス
+ハギワラ,カツミ
+マツモト,カヨコ
+コンノ,ヨシヒサ
+サイグサ,タモツ
+ホンダ,ユキオ
+タナカ,ヒロシ
+マツトミ,カヨコ
+アカサカ,ヒロアキ
+センガン,アキヒデ
+タケオ,ノリカズ
+ムラタ,ヒロユキ
+カワセ,トモヒロ
+ニシザキ,タツユキ
+ヘイトウ,エイイチ
+オオサワ,マサハル
+ウエダ,ヨウイチ
+カナヤマ,ヤスヒコ
+ハラダ,トモユキ
+ナカガワ,アツシ
+ミヤモリ,マコト
+カイ,ケンジ
+キグチ,シュウジ
+サタケ,ケンジ
+オオオカ,トシロウ
+ナカザワ,コウジ
+ヤスオカ,マサヒデ
+クロミツ,ヤスタカ
+カナダ,ヒデキ
+マルカワ,ヒデキ
+ナガサワ,タケユキ
+コバヤシ,シュウ
+エンド,マサノリ
+インナミ,ハルオ
+ヤマモト,キヨタカ
+ナガクラ,サトシ
+ウエノ,マチコ
+ニシザカ,ミカ
+サトウ,テツロウ
+モリヤマ,タツオ
+コハヤセ,シゲオ
+ドイタ,ヒロシ
+ホソカワ,ノブオ
+アオキ,ミツイ
+マスミダ,トモヒコ
+オチ,マサイチ
+スズキ,ケンジ
+スギヤマ,ケンイチ
+フジワラ,セイヤ
+タナベ,ミツユキ
+トダ,アツシ
+ツボイ,ヤスオ
+スギタ,マサノリ
+アダチ,ケイタ
+フジイ,マサキ
+スガモリ,ヒロシ
+ヤスダ,ナオヒコ
+タカハシ,ヒロユキ
+タガミ,マサル
+トミヤマ,ユウジ
+ハネダ,ヤスユキ
+オザキ,タケシ
+オグラ,ヤスユキ
+テラサキ,ノブヤ
+ツチヤ,エツコ
+オカダ,テルオ
+アベ,ノブユキ
+アベ,ミツエ
+モリワキ,コウイチロウ
+ハヤノ,ケンタ
+トミナガ,ジュン
+スズキ,ミキ
+カタギリ,サトシ
+アハラ,ハヤト
+ホシ,ナナコ
+イシカワ,タツヤ
+シモムラ,ヨシヒサ
+ワキモト,ミユキ
+カワテ,タカシ
+アブラカワ,カズオミ
+ヨシタケ,タカシ
+イシダ,マサユキ
+ホンダ,トシロウ
+シタマ,ヨシオ
+ノグチ,タケシ
+ミズイ,アヤオ
+アンドウ,ナオフミ
+ヨネシマ,ナツミ
+アキタ,ジュンコ
+ウエ,アツシ
+スギ,コウイチ
+ナカジマ,マリ
+カサオカ,トシヒコ
+ノダ,テツフミ
+マツザワ,コウイチロウ
+ワタベ,タツオ
+アイザワ,ケイジロウ
+イワサ,シン
+コガ,アキヒコ
+ヒガシタニ,ヒデフミ
+イケダ,トシヤ
+アキナカ,ヤスハル
+フジタ,カズヤ
+ヤマオカ,ヒサタカ
+ワチ,セツヤ
+ウエノ,ケンタロウ
+ウシキ,カズイチ
+ヤマモト,ハルヒコ
+カトウ,マサトシ
+ナガイ,タダヒロ
+フクダ,アヤコ
+ナカタニ,エミ
+ヒラサワ,ナガコ
+ミヤザキ,マサル
+テラシマ,ムネカズ
+アライ,チガ
+タナカ,シンイチ
+カネコ,タカアキ
+サトウ,テツジ
+ナリタ,シュウイチ
+ナガシマ,ジュンイチロ
+サカノ,トシオ
+ミウラ,サトシ
+ヤマグチ,ケイ
+オデラ,ナオトシ
+アベ,アツシ
+コダマ,カズヒロ
+ヤマモト,ヒロユキ
+オシマ,トオル
+イシズ,ツトム
+カンバヤシ,ユキオ
+オオカワ,ヒロユキ
+ヒエダ,タケヒコ
+イノマタ,ヒロミ
+マキタ,トシヤ
+ガナハ,タカユキ
+ハヤカワ,ヒロユキ
+アカヌマ,テツヤ
+ムロカワ,マサノリ
+オノ,ケイスケ
+キムラ,ショウゴ
+ハタザワ,ヤスコ
+フジタ,マサキ
+ウエダ,ダイスケ
+ヤマノウチ,イサオ
+フルタ,ヨシヒロ
+オクヤマ,ケンイチロ
+イトウ,フミオ
+オサナイ,セイイチ
+コタニ,タケシ
+オオツカ,タダアキ
+フクシマ,コスケ
+イイズカ,ケン
+ワタナベ,テルアキ
+モリタ,ケンイチロ
+カトウ,ヒロキ
+ホンダ,トシアキ
+カトウ,アキノリ
+アサヌマ,ヤスヒロ
+アズマ,マサオ
+テラサワ,ミツオ
+アカシ,ツネオ
+カトウ,ナオト
+オノサト,タカシ
+ナカムラ,ヒロツグ
+ノムラ,ヒデミ
+イノウエ,エイイチ
+ハヤシ,シンイチ
+タムラ,ガク
+サカイ,スエノブ
+スギムラ,リョウ
+トミヤマ,ケイ
+カキザワ,トシアキ
+ニシタニ,ショウイチロウ
+アサクラ,シンヤ
+イシザキ,サトシ
+マツモト,シンイチロウ
+ナガオ,トシオ
+キノ,リエ
+アベ,タスク
+ト,コウジ
+ヤマキ,コウイチ
+アライ,ゲン
+ヤマダ,ケイジ
+オクムラ,カズエ
+ハラ,ショウタロウ
+ヤマモト,カツヒサ
+ナカムラ,シンイチロウ
+アライ,カズヤ
+イケド,マサタカ
+イトウ,ケイジ
+イトウ,ユウジ
+ウリュウ,アキラ
+ウチヤマ,タダシ
+エノモト,ヒロミチ
+エズラ,トオル
+オオツカ,ケイスケ
+エニャ,ススム
+アカオ,ケイスケ
+オオニシ,ショウジ
+カガヤ,イナン
+カマタ,タカヒロ
+カワカミ,ノブヒサ
+ササキ,ヤスヨシ
+タカハシ,ナオヒコ
+タダ,コウイチ
+ニシノ,マサヨシ
+アサオ,ナオキ
+ハシモト,ナオキ
+ハットリ,タカコ
+ホシ,タオ
+ホリタ,シンイチ
+マエゾノ,ナルヒデ
+マエジマ,ミノル
+ミヤザキ,ユミコ
+アライ,ヨシミ
+モリ,コスケ
+マエダ,ヒロシ
+オチ,ケン
+アサクラ,ノリオ
+ウサミ,アツシ
+オクヤマ,タカシ
+カリヤ,タカヒコ
+ウエダ,ヒデユキ
+オタベ,ケイゾウ
+キムラ,イサム
+クシダ,ヨシハル
+アマハ,コウジ
+コンド,ヨシキ
+シミズ,ショウイチロウ
+スズキ,シュウコウ
+スン,スミオ
+タドコロ,ヒトシ
+トネサク,イサム
+ナカムラ,ヒロシ
+マスダ,ヒロオ
+ミヤザキ,ミハル
+ヨシナガ,アキヒサ
+ヨコカワ,タクマ
+ツチヤ,マユミ
+タカハシ,マサノリ
+タナベ,マサジ
+イトウ,ケイスケ
+ナガオ,シンイチ
+サトウ,タケシ
+タダ,トモヒロ
+アキモト,シュンスケ
+タムラ,マモル
+タムラ,カズユキ
+オカ,ミチハル
+サクラギ,ケンイチ
+スズキ,ヒロシ
+モリオカ,タダシ
+ヤグチ,ユウシ
+ミヤモト,サトシ
+シラカワ,ヒデキ
+オオツカ,ヒデキ
+ヤマモト,トモヤス
+ナカマチ,ヤスフミ
+ワカハラ,ヤスオ
+アキ,タカシ
+タキタ,カズヒロ
+アラカワ,ケイイチ
+マツオ,コウジ
+チョウ,ユウイチ
+クロダ,シゲル
+ヤマシタ,タロウ
+トモオカ,エミコ
+ナカオ,ワタル
+アソ,テルカズ
+フクダ,ノブタカ
+アオキ,ヒトシ
+クル,ヒサト
+ムラカミ,ヤスヒロ
+クロダ,タクヤ
+ミカミ,アキヒロ
+カミムラ,ヒロユキ
+キタジマ,ナオキ
+マルヤマ,ヨシヒサ
+サタケ,ケンイチ
+モテキ,タケシ
+トミタ,フキ
+ニワ,フミコ
+タカバタケ,シゲノリ
+アズマ,マサル
+フルヤ,サチコ
+ナス,ヨシヒロ
+コリ,マリ
+イケダ,マサヒロ
+ゴトウ,コウジ
+フクダ,ヒロユキ
+スガハラ,ジュンジ
+キムラ,トシヒコ
+タカセ,マリ
+ニシオカ,リョウ
+フルカワ,テツオ
+クドウ,ケンイチ
+タカハシ,ケント
+ヤマモト,ヨシヒロ
+ミヤモト,リョウヘイ
+ノタ,ユキヒロ
+ナカムラ,シノブ
+アキバ,ミヤ
+イワキ,マコト
+カトウ,シホ
+モリモト,マサカズ
+ナカムラ,カズトシ
+ナカヤマ,カズヤ
+オオタニ,シゲヒロ
+スギヤマ,ミノル
+スン,トヨユキ
+ヤマモト,ヒロシ
+ホンド,ユタカ
+ハガ,カクジ
+シオザキ,カズヒコ
+フジノ,ミノル
+オノ,ケンジ
+アンドウ,ヨシオ
+ヤマグチ,トシアキ
+クロダ,タカシ
+ウノ,リョウイチ
+イトウタニ,タケヒコ
+オカ,エツミ
+ミウラ,ノブユキ
+ハシモト,カナ
+エモト,マコト
+コガ,ヒロシ
+キハラ,ヒロシ
+マツダ,フミタダ
+ヤマダ,アキコ
+タカハシ,ヨウイチ
+ヤハタ,ヒデオ
+タザキ,ケイタ
+ヤマモト,リュウイチ
+タカダ,ヒロミ
+ノダ,マサツグ
+サイミョウ,カオル
+コバヤシ,アラタ
+フジキ,ケンジ
+シラサカ,フミオ
+タカハシ,トオル
+ヤツ,アツオ
+ウオタニ,フミヒコ
+タムラ,トシヒコ
+マツオ,サトシ
+ナカザワ,タクヤ
+キダ,ユキコ
+タンゲ,テツロウ
+ヒロセ,ススム
+マツシマ,ミチヤ
+オカノ,サトル
+アオキ,ヨウイチロウ
+ハセガワ,リュウジ
+ニシホリ,チカラ
+イシズカ,タカヤ
+ツボイ,ヒデユキ
+イシダ,マサル
+ハシモト,サトル
+ゴトウ,シンジ
+アキヤマ,ヒロキ
+ミツハシ,シゲル
+ゴシマ,カズオ
+フクダ,ヒロシ
+ヤマシタ,ナオフミ
+ナカザワ,ヒサシ
+ニシカワ,ヒトシ
+イケウチ,カズユキ
+タガミ,タカオ
+カワキタ,ケンジロウ
+ナカムラ,ガク
+コマイ,コスケ
+ホシヤ,アユム
+スミト,マサフミ
+ホシノ,カズオ
+ナカヤ,シンイチ
+ハラ,ミズホ
+ムロヤマ,カズヒコ
+モリ,ヒデキ
+シライシ,マサヒロ
+ヒラノ,コウジ
+ハシモト,ユウコ
+アベ,ジュンジ
+イシカワ,アリカツ
+アズマ,ヨシミ
+オオツカ,ノブオ
+イトウ,ケイ
+オシマ,チカオ
+コザイ,キヨヒロ
+カワカミ,マサトシ
+ナカノ,ムネヒコ
+ウジモト,マサヒコ
+キシダ,ヒトシ
+コイズミ,ノリコ
+ナイトウ,トシヒロ
+ヨシズミ,ヨシキ
+スギモリ,トシヒロ
+アオキ,トモハル
+タカハシ,コウイチ
+イガ,ノリカネ
+カワバタ,ノゾミ
+シバタ,ヒロヒデ
+ダン,マナミ
+タグチ,カズヒロ
+マチダ,トモオ
+アシダ,ユウコ
+アンドウ,テイジ
+ムトウ,カツノリ
+コヤマ,キヨト
+スズキ,ケイイチ
+ノムラ,ジュン
+イトヤ,マサトシ
+チカオカ,ツトム
+ジンブ,ミチヤス
+アダチ,マサシ
+カワイ,ヤスシ
+ミノワ,コウイチ
+アサヒ,トシアキ
+オオタ,ヨシアキ
+タナカ,キヨシ
+キラ,マサシ
+ヤマザキ,ミカ
+ヤマウチ,ミツル
+ホッタ,ヨシノリ
+アラカワ,シゲオ
+オクムラ,ジュン
+カネコ,イタル
+アヤノ,コウキ
+ハヤカワ,トモナリ
+イトウ,マサヒコ
+オクムラ,ヒサノリ
+タンザワ,タツオ
+サキノ,ヨシヒロ
+カワハラ,トオル
+タルイ,ヨシオ
+アリモト,アツシ
+エビコ,トモナリ
+ヒノ,カツヤ
+ヤマダ,ショウヨウ
+オオノ,クミ
+タケシタ,ユリコ
+ハヤシ,キョウコ
+イシダ,ケン
+シオヤ,タケシ
+アンドウ,ノボル
+マツバラ,マサフミ
+ニシダ,マサル
+ナカムラ,マサノリ
+イケダ,ジュン
+ハヤミ,ヒデオ
+スズキ,ショウゾウ
+オガワ,アキラ
+イシカワ,トシアキ
+アサミ,ケンジ
+ハタケヤマ,タカシ
+ホリミゾ,ケイスケ
+マルタニ,チヒロ
+サトウ,アキオ
+サカナカ,カズオ
+ナカムラ,トモヒコ
+イトウ,カオル
+フルナガ,ハルヒコ
+フクシマ,マサト
+ミズガミ,ヨシユキ
+タケウチ,ミチオ
+トリウミ,ミノル
+ネギシ,シゲキ
+コヤマ,アキノリ
+オシマ,ナスオ
+カタオカ,タカシ
+タキグチ,ヒデフミ
+コマツ,カズオ
+ヤギ,タカシ
+タカギ,ヨシオ
+マスイ,テツロウ
+ハヤシ,ヒトシ
+アネタイ,マサユキ
+キハラ,ケンイチ
+サイトウ,シゲオ
+キタワキ,ミチヒコ
+ノグチ,ヒロミチ
+サカグチ,モトイ
+ニシ,ユキミツ
+イケダ,テツオ
+サトウ,タカシ
+イマイ,マサヒト
+ヤマダ,シゲイク
+タナカ,ヤスヒサ
+オオサコ,マコト
+コムロ,カナメ
+サイトウ,ヒデキ
+スズキ,ケンイチ
+フナトガワ,ユカリ
+イシイ,テルアキ
+マツイ,ノボル
+スエヒラ,ヒトシ
+ヒロタニ,ヨシオ
+ヒガシ,キヨシ
+イムラ,アツコ
+アベ,ヤスノリ
+ヨネクラ,ノブトシ
+ワタナベ,ヨシミツ
+スガ,ヒロシ
+サノ,ヒロシ
+シバ,トモジ
+ヤマグチ,シュンジ
+キザワ,ヨシヒロ
+カサマキ,ヨシロウ
+キムラ,ケイスケ
+ツルミ,アキヒサ
+アオキ,ショウコ
+イシダ,モトシ
+モロ,アキオ
+オクムラ,ヒロユキ
+タカギ,コウジ
+イケヤ,ミチオ
+トミヤマ,カズミツ
+ヤギ,タカオ
+トミキ,テツロウ
+トノムラ,ミノル
+ヤツズカ,トシヒロ
+ブマ,ケンショウ
+ナカザワ,フミトモ
+ヤマザキ,ヨウコ
+マツシタ,シノブ
+イダ,シン
+スズキ,ヨシヒロ
+ナカノ,ヤスヒロ
+カワグチ,マサオ
+タカハシ,ツトム
+イシダ,ショウイチロウ
+ウダ,サトル
+フジワラ,リュウジ
+コイデ,トシタケ
+ツカダ,ヘイハチ
+ヒラヤマ,ヒロシ
+ウチトミ,アキラ
+イマハラ,ヒロヨシ
+ウエダ,ヒトシ
+ササカワ,ヨシヒロ
+アイカワ,タカアキ
+ウエキ,タカヨシ
+ナカヤマ,ヨシミ
+オオサワ,ヨシカズ
+タカオカ,トシユキ
+ワダ,ツギオ
+イヌズカ,クニヒサ
+タナカ,コウキチ
+タケダ,キヨタカ
+ヤマダ,ノボル
+ヤナギ,ヒデヒロ
+タケシタ,ヨシタケ
+ニシ,タツヒコ
+オオタケ,ユウイチ
+ニタナイ,シゲオ
+ホンマ,ノブヒコ
+ナカノ,ヨシノリ
+ミヤシタ,ヒデキ
+ウエノ,ジュンジロウ
+ババ,サダム
+ミヤザキ,マサオ
+クニイ,ツトム
+コバヤシ,ケイジ
+マスダ,ヒロシ
+タカハシ,コウジ
+ツカオ,ヒロキ
+カワムラ,タカユキ
+カワバタ,コウゾウ
+アカサカ,ジュンコ
+イイダ,テツヤ
+シラハマ,タダシ
+トガワ,ヒロユキ
+イトウ,ヒデイチ
+オカベ,マサシ
+ワタナベ,ヒロオ
+サカバ,トシヒロ
+ヒロサワ,ヒトシ
+ナカムラ,シゲル
+ヤスイ,サトシ
+ヒラタ,カズヒサ
+キタガワ,シンイチ
+アマノ,テツヤ
+ツジムラ,エツロウ
+カワサキ,コウイチ
+ウエムラ,タケシ
+ムラカミ,シゲナ
+イノウエ,キヨシ
+ハゼ,ケン
+トシヒロ,キミヒロ
+コバヤシ,シゲユキ
+イノ,タダノリ
+アサノ,ユウイチ
+モリ,コウジ
+イナザワ,コウヨウ
+コバヤシ,テルヒロ
+サカキ,ヨシヒコ
+ウチヤマ,セイジ
+マナベ,ヤスキ
+オオヤマ,ケンジ
+シミズ,マサヒコ
+ヨネムラ,ヒロユキ
+バラダ,アキヒコ
+フルゾノ,ヨシカズ
+フジモト,カズアキ
+サノ,マモル
+カワノ,エイコ
+ホシカワ,コウジ
+ササモト,モトツグ
+スドウ,マサト
+サトウ,タカオ
+ハヤシ,ヒロシ
+ババ,ヒデノリ
+ババ,ヒトシ
+オオヤネ,ヒデオ
+ナガサワ,ヤスユキ
+サカモト,マサハル
+アオキ,セイジ
+ムナカタ,マサハル
+イトウ,シンイチ
+カワバタ,ヒロユキ
+スギモト,ミチオ
+バンドウ,ジュン
+ノムラ,アキヒコ
+コンノ,ヨシミチ
+カワイ,カズノリ
+ウエノ,ノブユキ
+ハラダ,ヒロシ
+カノウ,アキラ
+オオハタ,ミキオ
+スドウ,タカシ
+マツダ,ヒトシ
+イケガミ,マコト
+シライ,ケンシン
+サトウ,タカアキ
+サカイ,タケシ
+オキ,トシユキ
+カワムラ,ケンジ
+ヤマダ,ヒロオ
+イトウ,アキヒサ
+イカミ,ハルオ
+アズマオ,ヒデト
+フジムラ,トオル
+キタムラ,ユウジ
+トガミ,トシミ
+コスゲ,マサオ
+セキ,ヒロユキ
+カワシマ,トモユキ
+タカイ,ユウゴ
+アキヤマ,ユキオ
+スズキ,トシフミ
+ナカムラ,シュウイチ
+ニシノ,タカユキ
+ミヤケ,タカヒロ
+ヨネモチ,モトジ
+タカシマ,シゲオ
+サカイ,トシノリ
+オオツキ,アキトシ
+カワサキ,ミキ
+ニシカワ,タキオ
+サクライ,ケンジ
+スギ,ヒデアキ
+ホリコシ,トオル
+モリ,カツヤ
+ハケダ,タカシ
+ニイダ,シンイチ
+キクタニ,サトシ
+タケノシタ,シュウヘイ
+タカハシ,ヒロミ
+タナベ,マサコ
+イケモト,ノリコ
+マツヤマ,ユキコ
+ヨシザワ,ヨシヒサ
+アカイ,ミノル
+ニシオカ,セイイチロウ
+タケモト,ノブオ
+トクダ,ヨシオ
+オオモリ,ヤスヒロ
+カトウ,タツシ
+カワト,フミオ
+マエダ,ソウイチ
+クロキ,マサヨシ
+イイダ,クミコ
+コヤナギ,ハジメ
+マツナガ,アツシ
+イトウ,ヤスアキ
+ヤマモト,タツオ
+ツツイ,トシアキ
+タナカ,ミノル
+フクシマ,シュンイチ
+コジマ,ヨシヒコ
+ニシダ,ミツグ
+ニシヤマ,ジュンコ
+スズキ,ダイスケ
+イイジマ,タカシ
+タマイ,ススム
+コンノ,オサム
+ミマス,トシミツ
+ヨネハラ,セイイチ
+ヨシダ,カズミ
+フクダ,ヒロシ
+サトウ,ヒロアキ
+ヤマモト,ヒロシ
+キタゴ,ノボル
+サンノ,トモトシ
+ヤサカ,トシオ
+ムラタ,シゲミ
+ナカモト,アキシ
+サクライ,カズシゲ
+ハラダ,ヨシモト
+サトウ,アツオ
+サイトウ,ミツオ
+ソネ,ケイコ
+ハスミ,アキヒロ
+ヒラタ,カズヒロ
+ヤナギサワ,ノブオ
+タチバナ,ヨウコ
+イトウ,マサズミ
+ハラ,アキラ
+サイトウ,トシヒロ
+イトウ,コウイチ
+タナカ,カズヤ
+ウチヤマ,シゲヨシ
+カガワ,ケイイチ
+タキザワ,ユウジン
+シナガワ,クニヒコ
+カキハラ,シロウ
+スガヌマ,ジュンイチ
+カメイ,トシヤ
+オクツ,カズトシ
+イシカワ,ショウシュン
+スギウラ,モリオ
+ウメダ,ヒサシ
+ミナグチ,イチロウ
+ホシノ,タケヒコ
+ニシヤマ,セイジ
+タケダ,タツヤ
+サカイ,キイチロウ
+ヤツダ,タケシ
+モリタ,ケイゾウ
+サキマ,ナオヒロ
+アライ,ユタカ
+タケダ,タカコ
+タムラ,ヨシコ
+オカダ,ハルミ
+ヤマネ,チハル
+ナカムラ,ユウイチ
+アオノ,タツオ
+スギヤマ,カネヨシ
+フリハラ,カズオ
+ワタナベ,ノブト
+カツ,ツカサ
+サハラ,ヒロミ
+カクタ,アキヒコ
+エノモト,タカシ
+ワタナベ,マコト
+ヤブキ,マサヒロ
+アマサキ,コウイチ
+ヨコタ,マサヒデ
+ホリノウチ,トシアキ
+キハラ,ツネオ
+タケダ,ツルマツ
+イネナ,マサヒコ
+ナカ,カズヒロ
+イチヤナギ,タダシ
+スズキ,ショウケイ
+ナルシマ,ナオキチ
+シライシ,タカシ
+オノ,トオル
+ヨシオカ,カズヤ
+マツウラ,ヒロカズ
+フジタ,テツジ
+イワミ,トヨハル
+トクシゲ,ケイジ
+タナダ,キミヒコ
+オカノ,カズマサ
+モチズキ,タカユキ
+タカシマ,コウイチ
+トリウミ,カズオ
+タカミ,ヨシタカ
+ハヤセ,トモユキ
+タカハラ,エイジ
+キン,マサユキ
+スギヤマ,ヒデヒロ
+キタジマ,コウジ
+ニッタ,ヨシノブ
+オカ,ユキノブ
+オオハシ,ヒロシ
+ハラダ,キハチロウ
+ワキサカ,ヒロシ
+イワナガ,ケイイチ
+カワシリ,ミツオ
+イナモト,マサカズ
+サワ,ヒロユキ
+タケダ,タケヒコ
+イイダ,ヨシヒト
+カジノ,マモル
+ミワ,ハルカズ
+フクイ,ケイイチ
+スエナガ,トオル
+クニエダ,ユタカ
+キタオカ,カズヒコ
+イド,トオル
+オクダ,リョウスケ
+ホリカワ,カツキ
+スエモト,テツヤ
+ヨコヤマ,トシヒロ
+フジモト,トミオ
+キセ,ショウジ
+ニシムラ,ヒデヒコ
+タカダ,コウジ
+ツカダ,マサカズ
+トヨダ,エイジ
+サノ,トオル
+ニシダ,マサヒコ
+オオモリ,イチロウ
+オザキ,トオル
+イシマル,シゲヤス
+タナカ,コウイチ
+カシワバラ,ノボル
+アサノ,ヤスカズ
+ヒラノ,シンジ
+タニヤマ,テツロウ
+ウメバヤシ,ケンジ
+オムラ,ヒデオ
+サカグチ,キヨカズ
+オカムラ,ショウゴ
+ヤマモト,アキラ
+エチゴ,コレアキ
+サワダ,ヤスヒコ
+ヨコイ,カズユキ
+キタムラ,リカ
+ヤス,カオル
+タカオ,ジュンコ
+カツラオカ,シンゾウ
+ツボイ,マサヒコ
+ツジ,シゲオ
+タカハシ,アキオ
+スギキ,タカキ
+タケウチ,タカヒロ
+カミ,トシカズ
+コバヤカワ,ヤスヒコ
+アオト,ジツジ
+タダ,ヨリコ
+ヒダカ,ノリコ
+ニシムラ,チエコ
+エバラ,ツネオ
+ミズモト,カズヤ
+スズキ,キヨシ
+シイナ,ハルヨシ
+シオタ,ミツヒコ
+ナカハラ,コウイチ
+ゴウダ,キヨシ
+フルタ,マサヒサ
+マスモト,ジュンイチ
+ナカガワ,キイチ
+イド,タカユキ
+ヨリフジ,ノボル
+マツモト,アキラ
+サイトウ,クニアキ
+ナツイ,ヒデキ
+ウオノ,カオリ
+タナゴ,ケイコ
+タマガワ,ノリヒト
+オカ,タカシ
+フクシマ,マサル
+オカダ,ユウコ
+キノシタ,ヒデヒコ
+シミズ,アキラ
+コバヤシ,キヨタカ
+ノダ,マサシ
+カノウ,ツグヒロ
+カジオカ,アキヒト
+オオノ,タカシ
+オオハシ,マサユキ
+コバヤシ,ユウイチ
+コイズミ,イクオ
+タナカ,ヒトシ
+フクダ,トシヤ
+ナカザワ,ノボル
+ホリカワ,サトシ
+ウチヤマ,モリヒロ
+イズタニ,ジュンイチ
+タキイ,トシコ
+タカセ,ノブツグ
+マスザキ,タカシ
+アンドウ,トオル
+カタギリ,シゲイチロウ
+モリヤマ,トシヤ
+サトウ,アキヒロ
+ヒルカワ,サトシ
+ウエダ,マサオ
+ナカ,トシタカ
+ミヤザキ,ヒロシ
+オオクボ,マサタカ
+タチカワ,マコト
+ワタナベ,ミチナオ
+アサカワ,セイジ
+カワハラ,マサヤ
+オサダ,ハジメ
+サカイ,ハルオ
+クリヤマ,サナエ
+サイトウ,コズエ
+スキガラ,ヨシコ
+アケヒ,クミコ
+ハヤシ,キヨミ
+カワタ,ナオミ
+シマガキ,ミサエ
+ホリ,カズヨ
+ノムラ,ヨシコ
+トムラ,シンイチ
+クボ,キヨコ
+ニシモト,ノリヒト
+ヨシダ,コウジ
+サギ,タカヨシ
+カンノ,ケイコ
+ヤブノ,マサキ
+ヤスナガ,ヒロユキ
+ヒガシウエ,ヒロヒト
+コサキ,マサユキ
+ナカ,トシヒロ
+オノ,トオル
+ムラタ,コウゾウ
+ショウジ,ヒデアキ
+カワモト,アキヒロ
+エサキ,マサル
+エイドメ,ヒデカズ
+スズキ,ユタカ
+モトヤマ,ヤスカズ
+ハマダ,アキラ
+コシカワ,トシオ
+ハヤシ,マサハル
+ヤマザキ,ユキヤ
+マツモト,ヨシマサ
+オノ,シンイチ
+ハナワ,タダシ
+ハセガワ,ケイジ
+ミヤタ,マサアキ
+キタザワ,マサカズ
+エンド,ヤスヒコ
+ナガサカ,ヨシアキ
+ヨシモト,ヒロミツ
+クロサワ,ケンサク
+マルヤマ,ヨシハル
+ナカニシ,カズユキ
+ヨシダ,ケイイチ
+フクタ,ヒデヤ
+フジサワ,カツヒコ
+サクマ,ヨシハル
+ハシモト,カツミ
+ワダ,マサオミ
+ニシザキ,ノブオ
+フカガワ,エツコ
+アオヤマ,マサカズ
+キヨタニ,ツトム
+トリハラ,ヒロユキ
+ナガノ,タケシ
+オオガ,ユタカ
+サカノ,タカシ
+ミツハシ,マサヒロ
+アリモト,セイコ
+ヨシマツ,タカアキ
+アオヤギ,アキオ
+ヤマダ,マサヒコ
+ムラタ,ユミコ
+イリエ,シンイチ
+ヤマザキ,マサノリ
+エゾエ,ケイイチ
+サトウ,ツヨシ
+オオタ,キヨシ
+イノウ,モリヒト
+カド,タツヤ
+ササキ,ヨシヒロ
+カケヒ,ヨシヒロ
+ツチヤ,カズヤ
+マサオカ,ショウゾウ
+スズキ,ヤスオ
+トネ,トミヒロ
+オオワダ,ノリアキ
+ウエキ,マサト
+マエダ,カズノリ
+フジオカ,ヤスコ
+ウラベ,ナオコ
+ナカムラ,ユウイチ
+イサカ,マサアキ
+ニシサカ,ノブオ
+イワサ,エイイチ
+タクシマ,ヨシオ
+ツカモト,フミオ
+サクマ,タケヒコ
+ヒョウドウ,ヒロシ
+ナカムラ,コウイチロウ
+ササキ,マサオ
+フクワキ,トシヤ
+オクムラ,マサヨシ
+タカハシ,トヨヒコ
+シロイ,ヤスシ
+コカブ,タダオ
+ノグチ,ヒロキ
+タカツ,ヒロカズ
+ヨネザワ,テツヤ
+サカイダ,ヤスヒロ
+コイズミ,ミツヤ
+マエダ,カツユキ
+マンダ,タダシ
+コグレ,イチロウ
+アキモト,ヨシト
+タケムラ,トモアキ
+スズキ,コウジ
+ヤマウチ,ジュンイチ
+サエキ,ユウジ
+ワカバヤシ,ノブユキ
+アキモト,マサヒコ
+ヨシダ,ヒロアキ
+サトウ,ツネオ
+オシマ,ヤストシ
+ササキ,マサヒデ
+アライ,アキヒデ
+ワタナベ,テツジ
+イケモト,ユキオ
+キクイ,コウイチ
+ヒラタ,ヒロミ
+マキウチ,タクヤ
+コセキ,シロウ
+ニシカワ,ヤスヒロ
+イガラシ,フミオ
+タナカ,タダツネ
+ホンダ,エイイチ
+ハッタ,ヒロミ
+ハラダ,ヒサカズ
+ヨシダ,オサム
+ワタナベ,ヒロシ
+コイズミ,リョウイチ
+コスダ,ナオヒサ
+ミヤケ,マサアキ
+フジヤ,タケシ
+マサキ,アキラ
+サクライ,ヒデキ
+ニシヤマ,ヨシオ
+カワセ,タカノブ
+オカザワ,シンヤ
+アサカ,トシユキ
+オガワ,ノブアキ
+ナガサワ,ハジメ
+キタワキ,マサオ
+シミズ,マサノリ
+コバヤシ,マサハル
+タチバナ,シゲコ
+イマナカ,サトミ
+ウシマル,ケン
+オカムラ,ケンイチ
+ヤマノ,ユウイチ
+キタムラ,ミチカズ
+タカマツ,ヒデキ
+トキカワ,カズヒデ
+イケダ,トシヤ
+イシダ,ノブタカ
+タニハラ,ミツギ
+オガワ,ヒトシ
+タナカ,ショウスケ
+ナカ,ケイコ
+トモザワ,ノブコ
+ハラダ,セツコ
+ハナブサ,アツコ
+トクオカ,アツシ
+ベッショ,マサヒロ
+ナカシマ,カツヒコ
+アサクラ,ヤスヒコ
+ミヤデラ,ヒロシ
+スズキ,ナオキ
+ヨシムラ,ヨシヒサ
+サワ,マサユキ
+ナカヤマ,コウイチ
+ヒラザワ,ヨシヒロ
+フジワラ,マサアキ
+スガワラ,トオル
+タニガワ,マリオ
+ホンダ,ヤスト
+ハナイ,コウイチ
+エグチ,サクメイ
+カサイ,ヨウイチ
+クロサワ,ヒロシ
+タジマ,シン
+サトウ,タツシ
+ヒビノ,ツネオ
+スガヤ,シュウ
+クラタ,コウイチ
+マスダ,ハルキ
+スギハラ,ケイコ
+カネコ,ヨシユキ
+カツ,タカシ
+マル,ヒロヤ
+タナカ,ヒデカズ
+トシオカ,アキラ
+シゲノ,リョウジ
+ヤマモト,サトミ
+ナカガワ,カツミ
+ヤマグチ,ヒロキ
+カワモリ,ヨシヒロ
+ムラヤマ,マサル
+シュウ,ナオヤ
+イケダ,ヒロユキ
+コダマ,タツオ
+カトウ,サトル
+ハクチョウ,イサオ
+カゲン,カオル
+テズカ,コウジ
+タニグチ,マサタケ
+テラダ,ナオキ
+カトウ,タカキ
+ナイトウ,タケオ
+イトウ,タカシ
+コバヤシ,ケンジ
+タナカ,ヒデトシ
+ササキ,ワタル
+ホンダ,ミチト
+ヒエダ,アキオ
+サカイ,カズノリ
+カツミ,タカシ
+タケベ,タカシ
+ノグチ,ツヨシ
+ワダ,エイジ
+ウエヤマ,ケンジ
+ウエノ,タカヒロ
+タンゴ,ヒデオ
+ムラカミ,カツミ
+アラキ,コウゾウ
+アラセ,マスヒロ
+ヤマモト,シロウ
+ワシオ,ヒロユキ
+ワケジマ,ヨシフミ
+コイズミ,ケンスケ
+トクヤマ,トシフミ
+トミナガ,ケンジ
+キシダ,セイジ
+ケン,ミチヒロ
+ヒロセ,ヨシユキ
+ウチヤマ,ケンイチ
+ワカスギ,タダタカ
+イシグロ,カツノリ
+ニシムラ,ヒロカズ
+イノマタ,カオル
+ツツミ,トシヒコ
+イリエ,アツシ
+サイトウ,カズオ
+ウエノ,シンイチ
+ホンダ,オサム
+キタムラ,カヨコ
+ヤマガミ,ナミ
+ナカニシ,マサヒロ
+ウエダ,タカシ
+ヒロタ,ワタル
+ウエダ,トモキ
+イケダ,ヒロシ
+ハナブサ,ヨリノブ
+コダマ,ヒロアキ
+オカモト,ナオキ
+スズキ,ヒロミツ
+スズキ,ヒサエ
+ニイクラ,アキヒロ
+ニシダ,ヒロヒサ
+オサベ,ジュンイチ
+ホソカワ,ケンイチ
+イマオ,ヨウイチ
+フジタ,ヨシノブ
+オオノ,ヨシノリ
+ナカヤマ,ヨシオ
+ハヤシ,ケイジ
+スガハラ,カズノリ
+ハラダ,イチロウ
+アベ,シュンイチ
+アベ,ケイイチ
+アベ,ケンイチ
+アダチ,タダヒロ
+アイバ,ダイスケ
+アカバネ,カズオ
+アンドウ,エイホ
+アンドウ,トモユキ
+アオキ,マサシ
+シイキ,ヒロシ
+アライ,ショウイチ
+アライ,トオル
+アライ,タケシ
+アラカワ,イサオ
+アラキ,タツヤ
+アラキ,タカユキ
+アラキ,キヨハル
+アラキ,カズアキ
+アラマキ,マキオ
+アラメ,タカネ
+アリムラ,タケシ
+アサミ,シュウイチ
+アズマ,ヒロヨシ
+ババ,ヒデカズ
+ババ,モトコ
+チバ,ノブアキ
+チバ,コウイチ
+チノ,トモユキ
+ダイコク,ヨシノブ
+デグチ,ヒロノリ
+デキ,ヨシアキ
+ドイ,ノブヒコ
+エダサワ,ヒデキ
+エグチ,ヨシナリ
+エンド,カズロ
+エンド,マサオ
+エリカワ,ユウコ
+フジイ,ヒロシ
+フジモト,ヒデト
+フジモト,マユミ
+フジノ,ヨシアキ
+フカハラ,アキラ
+フカミ,ナオキ
+フカヤマ,ノブユキ
+フクダ,マサユキ
+フクイ,マサヒコ
+フクモト,ヒロシ
+フクナガ,マサヒコ
+フクシマ,ノブオ
+フクシマ,カズタカ
+フナキ,サカエ
+フナキ,ヤスフミ
+フルヤ,イサオ
+ゴウハラ,ヨシヒサ
+ゴトウ,シンイチロウ
+ハガ,タダシ
+ハギノ,カズロ
+イチムラ,マコト
+ハマ,ナオキ
+ハナダ,マサヨシ
+イバ,キヨサダ
+ハセベ,カツヘイ
+ハセガワ,トシロウ
+ハシモト,ノリアキ
+ハシ,ナオアキ
+ハタノ,ノブヒロ
+ハトリ,シンタロウ
+ハヤシ,アキヒコ
+ハヤシ,コウジ
+ヒダカ,カズコ
+ヒガシ,キヨタカ
+マノ,ヨシカズ
+ヒライ,ヨシタカ
+カミサキ,トシヒコ
+ヒラノ,マサヒコ
+ヒロイ,ヒデオ
+ヒロモリ,ヨシハル
+ヒロサワ,アツシ
+ヒロサワ,オサム
+ヒロセ,シンイチ
+ホンダ,ヨウ
+ホンマ,ヒロヤス
+ホリベ,シゲル
+ホリエ,ヒロシ
+ホリグチ,ユウイチ
+マツモト,トシヒデ
+ホリ,ハジメ
+ホリ,ヒロミ
+ホシカワ,ノリユキ
+ホソカワ,ススム
+ヒョウドウ,マサハル
+イバラキ,ユウイチ
+イチオカ,アツフミ
+イケダ,タカヒト
+イマイ,ヨシタカ
+イマムラ,タカアキ
+イマナカ,トモヤ
+イナダ,ヒロシ
+イナムラ,コウイチ
+イノウエ,サトル
+アライ,トシミ
+イノウエ,エイジ
+イシイ,キヨミ
+イシイ,ヒロシ
+イシカワ,ミキオ
+イシカワ,アキラ
+イシオカ,マコト
+イソダ,
+イトウ,マサヒロ
+イトウ,チズコ
+イトウ,カズヒト
+イトイ,タダシ
+イトウ,シンジ
+イワイ,アキラ
+イズミヤ,マサノリ
+カジタ,サトシ
+カメイ,シンジ
+カナイ,マサヒロ
+カナザシ,ノリコ
+カネコ,タケシ
+カネコ,マコト
+カノウ,イクオ
+カリウ,シゲジ
+ツキジ,タカノリ
+カサマツ,ヒロユキ
+カタギシ,マサシ
+カタヤマ,アキラ
+カタヤマ,テツメイ
+イソダ,タカオ
+カタヤマ,コウジ
+カトウ,サツオ
+カトウ,マコト
+カトウ,ヤスシ
+カトウ,チエ
+カツマタ,タクヤ
+カワベ,ユキノブ
+カワベ,アツシ
+カワベ,ムネヒト
+カワダ,ケンスケ
+カワダ,アキヒコ
+カワモト,アキオ
+カワタニ,セイキ
+キミズカ,ミチロ
+キムラ,カズヤ
+キムラ,リョウタロウ
+キノシタ,ヤスヒロ
+キサカ,ヒデオ
+キシダ,タカコ
+キタガワ,キョウイチ
+キタムラ,ヨシヒロ
+キタ,ヒデト
+キヨノ,マサユキ
+コバヤシ,カツノリ
+コダマ,カズナリ
+ドヒ,ヒラヤス
+コハラ,マサキ
+コイデ,トシヤ
+コイワ,ヒョウジ
+コイズミ,ハルコ
+コマツ,ヤスタカ
+コメダ,ヒロユキ
+コンド,ミキ
+コンド,トオル
+コニシ,ジュンジ
+コサカ,ヒロアキ
+コタキ,ジュン
+コタニ,ヒデキ
+コトブキ,ヒロシ
+タシロ,カズノリ
+クボタ,ユキマサ
+クボ,テツヤ
+クドウ,マサト
+クマガイ,ヤスヒロ
+クロセ,オサム
+クシマ,ヤスコ
+クシミヤ,コウキ
+クツカケ,シンイチ
+クワノ,シュウゾウ
+マツナガ,ヒデキ
+マエダ,ユウジ
+マエハラ,サトシ
+エノキ,トシヤ
+マエカワ,コウジロウ
+マエキ,アヤコ
+マンノ,シンギ
+マノ,エイジ
+マンタニ,ヨウイチ
+マルヤマ,ヤスヒロ
+マセ,カズヒコ
+マスザワ,マサオ
+マツダ,ミツノリ
+マツイ,イツコ
+マツイ,マサト
+マツモト,ヤスアキ
+マツムラ,カズアキ
+マツノ,ノリユキ
+マツザキ,レイコ
+ミキ,シゲル
+ミコダ,テルユキ
+ミムラ,カズタカ
+ミムラ,シゲノブ
+ミナミ,サトシ
+ミナミ,ノブヒロ
+ミナト,ヤスシ
+ミネマツ,ノリコ
+ミネ,マサタカ
+ミシマ,ヒロユキ
+ミワ,マサヒロ
+ミヤグチ,タカヒロ
+ミヨシ,ユウコ
+ミズタ,ジュンコ
+モモノイ,ケイスケ
+ホンダ,タケシ
+モリタ,ヤスシ
+モリタ,アキヒコ
+モリ,アキラ
+モリ,アツシ
+モリ,カズヒロ
+モリ,ミノル
+モリ,タカシ
+ムネムラ,トシミツ
+ムラカミ,ヨウジ
+ムラオカ,コウジ
+ミョウガ,ヒロキ
+ナガミネ,マサシ
+ヤマダ,シンイチ
+ナガオ,トシカズ
+ナガタ,ケンジ
+ナイトウ,コウイチロウ
+ナカガワ,タロウ
+ナカイチ,ヒロノリ
+ササキ,ツカサ
+ナカジマ,ヒロシ
+ナカシマ,ソウタロウ
+ナカコジ,タツヤ
+ナカムラ,マサフミ
+ナカムラ,サトシ
+ナカムラ,トオル
+ナカムラ,ジュン
+ナカムラ,ダイスケ
+ナカムラ,ユウコ
+ナカムラ,ヨウイチ
+ナカムラ,クミコ
+ナカニシ,トシユキ
+ナカノ,テツヤ
+ナカノ,キンヤ
+ナカシオ,コウイチロウ
+ナカタ,カナコ
+ナカヤマ,タカシ
+ナンケ,アツシ
+ナラザキ,タイチロウ
+ナリセ,ユキヒロ
+ナルオカ,イサム
+ネモト,タダシ
+ニムラ,ススム
+ニムラ,マサユキ
+ニシムラ,ツトム
+ニシノ,カズマサ
+ニシシタ,テツノリ
+ニシウチ,シュウイチ
+ニシヤマ,ナオヒト
+ヤジマ,ヨシエ
+ニシザワ,ユタカ
+ニワ,アキラ
+ノブナガ,ミツシ
+ノガミ,マコト
+ノグチ,シンイチ
+ノグチ,ミユキ
+ノマ,トヨミ
+ノマ,コウイチ
+ノムラ,コウジ
+ノムラ,ノリオ
+ノムラ,シュンイチロウ
+ノセ,タダアキ
+ノザワ,ヨウイチ
+ヌキイ,カツミ
+ヌマオ,アキラ
+ヌマタ,カズヒロ
+オチアイ,タカユキ
+オチアイ,ヨシオ
+オダハラ,イクオ
+オダ,ミノル
+オガサワラ,シュウジ
+オドマリ,トウイチロウ
+オカド,フミオ
+オマサ,アキラ
+オナガ,ヒロユキ
+オオノ,ヒデユキ
+オオサキ,アツシ
+オオサワ,ヒデタカ
+オオスミ,カズユキ
+ヤマシタ,マサル
+オオタ,ナンテツ
+オオタ,タカシ
+オオツカ,タツヤ
+マツナガ,ヨシアキ
+オオヤマ,ノリユキ
+オカダ,リエ
+オカダ,タケシ
+オカダ,ヒロフミ
+オカダ,ヨシノリ
+オノデラ,タカオ
+オカモト,ヒロユキ
+オカザキ,タカアキ
+オクダ,トシユキ
+オク,ノブユキ
+オノ,サチコ
+オノ,ケイイチロウ
+オリテ,ケンイチ
+オサダ,ムツミ
+サイトウ,ムツオ
+サイトウ,シンゴ
+サイトウ,シュウジ
+サイトウ,ヨウイチ
+サイトウ,ユタカ
+サイトウ,カズヒロ
+サイトウ,アキヒロ
+サカイ,イチロウ
+イシザキ,ユキノリ
+サカモト,ヒロシ
+サカノウエ,ヒデオ
+サカウエ,カズマサ
+サコダ,ノブオ
+サクライ,シゲノリ
+サクライ,タカシ
+サヌキ,リュウタロウ
+ササキ,アキト
+トミタ,トモナリ
+サトウ,テツオ
+サトウ,ナオキ
+サトウ,ヨシノリ
+サトウ,マサユキ
+サトウ,トシヤ
+サトウ,アツコ
+サワダ,マサト
+セオ,ケンサク
+セザイ,カズヤス
+シバタ,タケヒコ
+シバタ,ヨウ
+シガキ,アキヒコ
+シミズ,ヒロム
+シミズ,ヨシミ
+シミズ,アキラ
+シミズ,アキトシ
+シミズ,ヒデオ
+シモムラ,ヒロアキ
+シノハラ,カズヒロ
+シラツ,マコト
+シロシタ,サトシ
+ショウジ,ユウコ
+ショウミツ,ヨシヒロ
+ソダ,カツスケ
+ソモリ,タツオ
+ソウ,カズヒコ
+ナカ,ユウジ
+スギムラ,ケイシ
+スギノ,マサヒロ
+スギサワ,ノブユキ
+スギタ,サユリ
+スギウチ,シンスケ
+スギヤマ,アキノリ
+スギヤマ,マサノリ
+スギヤマ,カズミ
+スズキ,シンヤ
+スズキ,ユウジ
+スズキ,シン
+スズキ,ヒロアキ
+スズキ,トシアキ
+スズキ,ヒデト
+スズキ,コウイチ
+スズキ,ユウコ
+タチバナ,タカシ
+タイラ,アキラ
+タイラ,ヒデアキ
+タカダ,ヒロユキ
+タカギ,マサカズ
+タカハシ,ノリイツ
+タカハシ,タカユキ
+タカハシ,ハジメ
+マスザワ,ヒトシ
+タカハシ,マサアキ
+タカマ,ヒサト
+タカノ,ミエコ
+タカノ,カズヨシ
+タカサカ,ハジメ
+タカセ,カツジ
+タカタ,クミコ
+タカヤマ,アツシ
+タカヤナギ,アリヒロ
+タケダ,エリ
+タケダ,アキラ
+フジイ,アツコ
+タケノリ,イクシ
+タケシタ,ヒロカズ
+タケウチ,ユウジ
+タケウチ,タカトシ
+タキザワ,マサアキ
+タキザワ,ツヨシ
+タマキ,サトコ
+タムラ,アキヒロ
+タムラ,テツネ
+タムラ,ノブオ
+タナカ,ショウゴ
+ワタナベ,アキヒロ
+タニヤマ,ノボル
+タニ,カズヒコ
+テラキタ,ナガノリ
+テズカ,シンイチ
+トバリ,ススム
+トガシ,ジュンイチ
+ヤマダ,ケンイチ
+トキゾノ,シゲオ
+トミナガ,モトヒサ
+トミナガ,シンジ
+トミタ,シンジ
+トミタ,テツオ
+トモオカ,ヒトシ
+トノサキ,ヨシノリ
+トリザワ,エミ
+コイケ,ヒロコ
+トヨカワ,マサヨシ
+トヨカワ,ヒサヨシ
+ツボイ,タダシ
+ツカダ,トオル
+ツクイ,ヒサシ
+ツルカワ,エイジ
+ツツイ,トシカズ
+ツツイ,ユウジ
+ウチダ,ヒロキ
+ウチダ,ジュンイチ
+ウチマ,シュンイチ
+ウチヤマ,アキヒロ
+ウダ,ヒサヨシ
+ウエダ,カズノリ
+ウエノ,キヨシ
+ウエノ,ノリオ
+ウエノ,タカシ
+ウケガワ,タカユキ
+ウマズメ,ヨシヒロ
+ウメムラ,キミヒロ
+ワダ,ヒロシ
+ワダ,ヤスヒコ
+ワタナベ,リョウ
+イイダ,サトシ
+ワタナベ,タカシ
+ワタリ,ヤスヨシ
+ヤギ,ヨシユキ
+ヤマダ,ヒロユキ
+ヤマガ,ヒデオ
+ヤマグチ,マサノリ
+ヤマグチ,ヒデオ
+ヤマグチ,マサシ
+ヤマモト,テツヤ
+ヤマモト,マサユキ
+ヤマモト,カズユキ
+ヤマモト,ヒデシ
+ヤマモト,マサノリ
+ヤマモト,カズト
+ヤマモト,カオル
+ヤマモト,マサヨシ
+ヤマナカ,エイジ
+ヤマシタ,サトル
+ヤマウチ,カズアキ
+ヤマザキ,ハルヒコ
+ヤマザキ,マサトシ
+ヤマザキ,ケンジ
+ヤノ,ユキオ
+ヤノ,コウイチ
+ヤスダ,タケシ
+ヤスマツ,カツナリ
+ヤスモト,コウジ
+ヤスニワ,タカユキ
+ヨダ,オサム
+ヨダ,イサオ
+ヨシダ,ヨシヒロ
+ヨシイ,タツヤ
+ヨシナガ,ユミコ
+ヨシノ,タツミ
+ヨシタケ,アキヒロ
+タキザワ,タカシ
+ヤマグチ,カズヨシ
+カバシマ,カズヒサ
+サクラ,ユウスケ
+ムラヤマ,ヒロユキ
+ヒキダ,カズミ
+ムライ,クニヒロ
+ホ,アキラ
+エンド,セイジ
+テラムラ,タツオ
+ワタナベ,タカヒコ
+イマイ,シゲヤ
+モリモト,トシカズ
+コヤリ,セイジ
+マツミヤ,ユウイチ
+シバタ,カズオ
+チシロ,ヨシヒロ
+イタミ,ヒデオ
+オザキ,ヒトシ
+フクモト,マサツグ
+オカダ,ヒロシ
+サワダ,ヒロシ
+サクライ,タカシ
+ハヤシ,ヨシノリ
+マツオカ,ヤスノリ
+ミヨシ,ノリヨシ
+ヤマナカ,コウジロウ
+シミズ,ヒトシ
+コハラ,マサノリ
+ニシカワ,ヒロシ
+イマイ,ヤスオ
+フジムラ,ヒロユキ
+コジマ,ヤスユキ
+コバヤシ,ヒロシ
+キクチ,カツヒコ
+サイトウ,ミツル
+ヤマシタ,ヒデアキ
+アベ,シンジ
+テズカ,タカシ
+タナカ,ワタル
+ニワ,ミノル
+カメイ,ミズホ
+ヤノ,ミツオ
+ナカマル,ヤスシ
+オオハタ,マサノリ
+ヤスヤマ,マサヒロ
+カスガ,ミツオ
+イシイ,アキヒコ
+フジモリ,ノリコ
+イワモト,ヒロシ
+ヤマシタ,ルミコ
+キタ,トモミ
+ムラオカ,ユウコ
+イグサ,ヨシズミ
+ナガサワ,ヒロジ
+ヤマグチ,ヤスヒロ
+オダジマ,ユタカ
+オオタ,マミ
+ハギノ,ナオイチロウ
+ヤブキ,トシアキ
+イキ,ヨシトシ
+サイトウ,マサト
+ヤマダ,タカシ
+ナカヤマ,
+ムラマツ,カオル
+タシロ,ショウイチ
+イシハラ,マサユキ
+シバオカ,タツオ
+ナカオ,ヤスノリ
+フジタ,トシキ
+サクタ,マサユキ
+ハタ,ススム
+オオヤマ,タダシ
+タゴ,キョウコ
+マツムラ,カズオ
+イトウ,マサユキ
+キムラ,タケオ
+アオキ,ミツタカ
+コマガタ,ヒデトシ
+ナラムラ,カズコ
+フジモト,マサキ
+ミヤサカ,トシヒコ
+ハヤシ,マサヒロ
+サイトウ,カズヒコ
+オガサワラ,ショウジ
+オオツカ,トシユキ
+カワイ,トモユキ
+シマズ,ヨウイチ
+タカハシ,キシコ
+マエザワ,イズミ
+ハダ,カオル
+マツヒラ,エリ
+スギハラ,ノボル
+ナカジマ,ヨシノブ
+ハタケヤマ,テツヤ
+アオキ,マサヒコ
+シブカワ,キヨヒサ
+イシダ,シゲル
+オカダ,タカシ
+イトウ,アキラ
+カトウ,マサヒロ
+コバヤシ,ナオミツ
+ムラサワ,ミノル
+ミホ,マサノリ
+スガネ,ヨシノブ
+イシカワ,ヨシヒコ
+オカ,ヤスヒロ
+イワミ,ユミコ
+ナカヤマ,ヒロシ
+イトウ,カズキ
+スギヤマ,シンイチ
+カシモト,ヨシコ
+ナカムラ,マサユキ
+アオヤマ,ヒデノリ
+シバタ,ケンイチ
+マツオ,ヨシノリ
+シノムラ,アオイ
+フルカワ,ヨシフミ
+モトキ,シュウイチ
+ワタナベ,チオ
+アンドウ,マサヒロ
+タケヒ,サチコ
+イシイ,アキフミ
+ノチセ,カズヒコ
+ミヤナガ,トシコ
+シンドウ,ヒロミ
+オオタ,ミヨコ
+タニ,ヨシアキ
+コムロ,フミノリ
+イワサ,ヒロミチ
+マツモト,ヒデアキ
+キムラ,ヒサト
+アオキ,アキヒコ
+マツバヤシ,ヒロシ
+ゴトウ,フミユキ
+オガワ,アキラ
+スギタニ,ハルオ
+オクノ,ユキオ
+サクラダ,シンペイ
+ムコヤマ,ノリコ
+イトウ,サトシ
+ヤマモト,タダシ
+ヤマモト,マサトシ
+カネコ,シュウヘイ
+ヤマザキ,ヤスヒロ
+ナカムラ,トモ
+ミワ,オサム
+サムカワ,シロウ
+ナカダ,トシユキ
+ヨシトミ,ケンイチ
+タカシマ,ツネジ
+イシゲ,アキコ
+スエハラ,ヒロユキ
+イノウエ,ヒデミ
+ノジマ,
+サクマ,サチエ
+サノ,ヨシミチ
+ムラオカ,カツジ
+ミウラ,リュウゾウ
+サカモト,ジュン
+ナルオ,セイコ
+ハセガワ,ミツヒロ
+オカダ,テツオ
+ヤヒロ,ノブユキ
+ババ,タクヤ
+アタ,アヤノ
+ナガセ,キヨシ
+カワエ,イズミ
+ミウラ,マキヨ
+フジタ,サトコ
+ツルミ,ヨシオ
+モチズキ,エミコ
+ヨシダ,カズアキ
+オカモト,マサフミ
+ヤスモト,ミツハル
+ネモト,タクジ
+ヒダカ,ウエミツ
+マスダ,クミコ
+トクナガ,フミヒト
+ナカザワ,ススム
+フジナワ,ヨシハル
+ヨビカワ,カズヒロ
+キタダ,タケシ
+ヨシノ,ヤスヒロ
+ババ,ヨシト
+クロカワ,ヒロシ
+カトウ,タカシ
+ワタナベ,トシオ
+ツチダ,アツコ
+スズキ,ミユキ
+ミズノ,アキラ
+タニモト,タクミ
+イケノ,メグミ
+イトウ,ショウコ
+タケダ,トオル
+マエダ,コウヘイ
+クドウ,カツミ
+カゲヤマ,ミネオ
+ヤマカゲ,ヨウジ
+サエグサ,レイコ
+ミズタニ,ナオコ
+クドウ,トシヒコ
+コオリヤマ,ミズホ
+カタヨセ,ヨシエ
+オサダ,ケイコ
+ヤギハシ,シュウイチ
+スミ,タツオ
+タナカ,アツシ
+クドウ,ユキオ
+タケヒ,アキラ
+アメミヤ,ミチヒロ
+ナカムラ,タカシ
+キヨミツ,ケンジ
+イズミダ,ヨシカ
+フナキ,ヒロアキ
+タケシタ,カズヒコ
+ミウラ,キクオ
+イシバシ,ノブコ
+モリアイ,ケイジ
+ムラヤマ,エイジュ
+オサワ,ヤスノリ
+フカダ,ヨシカズ
+ヤマダ,ヒデヒコ
+イトウ,アキラ
+オノデラ,トミオ
+ハヤサカ,マサミチ
+オオツカ,ヒデヒコ
+トオヤマ,ヒロタカ
+カワハラ,ミツル
+エビサワ,マサキ
+ヤマカワ,テツヤ
+ヤマモト,ヤストモ
+スズキ,トオル
+オヤマダ,タカシ
+マツヤマ,リュウイチ
+アベ,ノブヒロ
+アベ,ヤスオ
+アベ,カズマサ
+アベ,ユキオ
+アゲタ,ジュンイチ
+アカハネ,ヒデヒロ
+アケナガ,ジュン
+アキヤマ,シゲオ
+アキザワ,ヒデカズ
+アマダ,ミキオ
+アマノ,マサシ
+アモウ,アキオ
+アンドウ,ヒデアキ
+アンドウ,ナオキ
+アンドウ,トシフミ
+アオノ,ヒロキ
+アオヤマ,イワオ
+アライ,カズヒロ
+アラカワ,ヒデシ
+アリモト,ヒデキ
+アリオ,マコト
+アサイ,アキラ
+アサカワ,ヨシヒト
+クロキ,ユキノリ
+アズマ,シンジ
+バンノ,マサキヨ
+ベツヤク,ケンゴ
+ビトウ,ジン
+チバ,ヒロシ
+チュウ,カツキ
+エダ,ケンイチロ
+エンド,ナオミ
+エサキ,シンイチ
+フジイ,ヒロシ
+フジイ,フミオ
+フジモト,アキラ
+フジタ,キヨナオ
+フジタ,アキヒロ
+フジワラ,サトシ
+フカザワ,トモヒト
+フクダ,ススム
+フクハラ,ヤスヒコ
+フクシマ,カズヨシ
+フクドメ,カズヒサ
+フクヤマ,サトシ
+フナバシ,マサユキ
+フルダテ,アキヒコ
+フルサワ,シンジ
+フルタ,リキヤ
+フルヤ,シンイチ
+フシキ,ユウイチ
+ハマダ,コウイチロウ
+ハナダ,カツノリ
+ハナミ,ヒデオ
+ハラダ,アキラ
+ハルカワ,イズミ
+ハセガワ,ヨウイチ
+オオツ,ムネヒロ
+ハシモト,アツシ
+ハシモト,エミコ
+ハスモト,アツシ
+ハットリ,ツヨシ
+ハヤサカ,タカオ
+ヒダカ,ケサオ
+ヒグチ,ケイコ
+ヒグチ,フサユキ
+ヒジクロ,ナオユキ
+ヒラカワ,ジュンイチ
+ヒラノ,ヒロヨ
+ヒラタ,マサヒロ
+ヒロセ,サチコ
+ヒサダ,タカシ
+ホリ,ノリヤス
+ホウヤ,カズヒコ
+ホンダ,シゲユキ
+ホンマ,タツヤ
+タナカ,ツヨシ
+ホシジマ,タツオ
+ホシカ,タケシ
+ホソダ,チエミ
+イチカワ,ヤスヒロ
+イチムラ,ケイゴ
+イガノ,ミドリ
+イイダ,マサユキ
+イイオカ,ヒロシ
+ナガノ,サトル
+イケザワ,ノブヤス
+イモト,スミレ
+イナズミ,ヤスハル
+クシミヤ,シンイチ
+イノウエ,シンヤ
+イノウエ,アキラ
+イノウエ,トモユキ
+イヌツカ,ナオキ
+イサジ,ヒデト
+イシダ,シュウイチ
+イシダ,イサオ
+イシダ,クニアキ
+イシガキ,エリコ
+イシガミ,ジュンイチ
+カジタニ,オサム
+イシハラ,ヒロユキ
+イシムラ,マサヒコ
+イシヤマ,シュウイチ
+イシザキ,ノブオ
+イソベ,ヨシヒコ
+イソザキ,マサアキ
+イトウ,チクサ
+イトウ,ヒサト
+イワアサ,ケンタロウ
+イワイ,ナオタカ
+イワマ,サトシ
+イワモト,ヨウイチ
+イワナガ,ヒロノリ
+イワシタ,シコ
+イワタ,カズマサ
+イワタ,エイジ
+カドワキ,サトシ
+カゲヤマ,ケンイチ
+ワタナベ,イズミ
+カミヤ,クニアキ
+カミヤ,ケンイチ
+カンバヤシ,キンジ
+カノウ,ヒロシ
+カリヤ,ナリヤス
+カサキ,ジュン
+カシマ,マサオ
+カスヤ,アキラ
+カトウ,タカキ
+カトウ,カズヒロ
+カトウ,ケンジ
+カトウ,ミツグ
+カトウ,ヒデノリ
+カトウ,ヒロユキ
+カワバタ,ダイ
+カワバタ,アツシ
+カワグチ,ヒデミチ
+カワハラ,ヒロミ
+カワハラ,カズフミ
+カワジリ,ミチオ
+カワカミ,テツオ
+カワクボ,カズトシ
+カワマタ,タカノブ
+カワムラ,ヒトシ
+カワノ,ノリアキ
+カワサキ,マサヒト
+カワシマ,トシヒサ
+カワズ,マサノリ
+キバシ,ヒデヒコ
+キマチ,マサキ
+キモト,タケシ
+キムラ,タクヤ
+キンバラ,ヨシミチ
+キノシタ,ヤスシ
+キノシタ,ヒロキ
+キリサワ,イチロウ
+コバヤシ,ジュンイチ
+コバヤシ,ヒロアキ
+コバヤシ,マサオ
+コバヤシ,フジヒコ
+コダマ,コウジ
+コダマ,オサム
+タカムラ,モトヒコ
+コヒナタ,ユウスケ
+コンノ,ヒロシ
+コンノ,タカヒロ
+コヤマ,コウジ
+コズキ,トシオ
+トウドウ,コウジ
+コジマ,シンジ
+コンド,アキラ
+コンド,タカシ
+コンド,マサトシ
+コンノ,カオル
+コタキ,ヒトシ
+コヤイシ,ミカ
+コヤナギ,ノボル
+クボ,ケンタロウ
+クドウ,キミヒト
+クマガイ,ナオユキ
+クマキ,シンジ
+クラチ,タカユキ
+クラタ,コスケ
+クリタ,ミキ
+クリヤマ,シュンジ
+クロダ,コスケ
+クロカギ,マサノブ
+クロサワ,シンジ
+クロサワ,セイキ
+クワノ,ヒロタカ
+マエバシ,トシアキ
+マエザワ,ノブユキ
+マノ,ヨシオ
+マルワカ,ヒデナオ
+ウチヤマ,タツオ
+マスダ,ジュン
+マツイ,シゲキ
+マツイ,サトシ
+マツモト,シンイチ
+マツモト,ヒサト
+マツナガ,マサトシ
+マツシマ,モリヒロ
+マツシタ,タダシ
+マツザキ,タケシ
+イナイシ,ヨシオ
+ミカミ,ケイイチ
+ミナギ,アキミツ
+ミツヤマ,コウイチロウ
+ミウラ,シゲキ
+ミヤケ,アツシ
+ミヤモト,アツコ
+ミヤタ,コウジ
+ミヤウチ,マサキ
+ミヤウチ,イチロウ
+ミヤザワ,アキラ
+ミヤザワ,タカシ
+ミヨダ,タカヒサ
+ミゾブチ,ケンジ
+ミゾタ,タケオ
+チバ,ヒロヒサ
+ミズハシ,マコト
+ミズマチ,セイジ
+ミズタニ,サトシ
+ミズタニ,ツヨシ
+ミズタニ,ヒロユキ
+モチズキ,ミノル
+モリモト,ナナコ
+モリタニ,タカシ
+モリタ,トヨヒコ
+モリタ,タカシ
+モリワキ,シンイチロウ
+オクイ,タケヒコ
+モリ,タケミ
+モリ,タカユキ
+ムコヤマ,ヒロユキ
+ムラテ,シンイチ
+ムトウ,カツキ
+ナガイ,ミツヒロ
+ナガノ,ミツトシ
+ナガオカ,タカヒロ
+ナガセ,カツミ
+ナガタ,ヒロユキ
+ナガタ,モトキ
+ナガワ,シンイチ
+ナカマル,ヨシキ
+ナカムラ,アキラ
+ナカムラ,トモコ
+アベ,ヨウイチロウ
+ナカムラ,トシヤ
+ナカムラ,アキラ
+ナカシマ,ヒサヨシ
+ナカシオ,ヒロユキ
+ナカ,ノリコ
+ナミキ,ノリカズ
+ナンブ,ヒロシゲ
+ヤマグチ,シンジ
+ニイミ,シゲフミ
+ニシダ,ヒロヨシ
+ニシダ,エイジ
+ニシダ,マサアキ
+ニシダ,ススム
+ニシクボ,アキヒロ
+ニシムラ,タカアキ
+ニシムラ,ツヨシ
+ニシオ,マサト
+ニシオ,シンジ
+ニシヤマ,タカシ
+ヤガワ,ケイジ
+ニッタ,ヒロミ
+ノベオカ,アキホ
+ノジリ,ヨシノブ
+ノムラ,テツヤ
+ノナカ,カツシ
+オバナ,ミノル
+オチアイ,トシユキ
+オチミズ,タカシ
+オチ,ミツノリ
+オダオオハラ,シンゴ
+オダ,ヒロカズ
+オガタ,マサキ
+オガワ,マサトシ
+オガワ,エツコ
+オグラ,ナオユキ
+オオヒラ,ノブユキ
+オオヒラ,イチロウ
+オオイシ,アキラ
+オオイシ,マコト
+オキ,カユ
+オオクボ,カズコ
+オオノ,ケイコ
+オオヌマ,シゲノブ
+オオヌマ,ナルシ
+オオタキ,マサヒデ
+オオタ,トオル
+オオタ,ヨシナガ
+オオタ,コウイチ
+オト,マサズミ
+オオツボ,ヒロフミ
+オオヤギ,マサヒロ
+オオヤマ,アツシ
+オイエ,カズヤ
+オジマ,アキラ
+オカベ,イチロウ
+オカダ,トオル
+オカモト,マサキ
+オカネ,タカシ
+オカノ,ヒデオ
+オカノ,マサコ
+オカザキ,ハルヒコ
+ワタナベ,マサトシ
+オクダ,アツヒロ
+オクノ,カツシ
+オナヤ,カズコ
+オノ,キヨシ
+オノ,シンヤ
+オオノ,ユタカ
+オサナイ,キヨアキ
+オザキ,ヒデオ
+サイトウ,ヨシミ
+サイトウ,ジュン
+サジ,ヤスヒデ
+サジ,カズオ
+サカイ,カズヒコ
+サカイ,トモスケ
+サカクラ,タカヒロ
+サカウエ,ヤスユキ
+ササベ,マコト
+ササキ,ヒデカズ
+ナミキ,ヒロシ
+サタケ,カツヒロ
+サタケ,ワキ
+サトウ,シュウイチ
+サトウ,タケシ
+サトウ,ナオキ
+サトウ,ユウゾウ
+サトウ,シゲキ
+サトウ,ヒロシ
+サワダ,ハジメ
+セキグチ,ヒロアキ
+セキモト,トシユキ
+セキネ,キイチ
+セキオカ,マモル
+セキヤ,ヒロアキ
+セキ,ジュンイチロ
+センタ,ノリアキ
+シバタ,サトシ
+シイナ,フミハル
+シイヤ,ヒデキ
+シマバヤシ,マモル
+シマダ,シンイチロウ
+シマダ,ミチトシ
+シマムラ,アキヒト
+シミズ,ヒデトシ
+シミズ,イタル
+シモムラ,カツアキ
+シノダ,コウジ
+シノハラ,モトユキ
+シオザワ,ノブユキ
+シライシ,ユウジ
+シラサキ,ヨウコ
+シラトリ,ヒデジ
+シサイ,マサヒロ
+ショウダ,ケイスケ
+ソウ,ナオキ
+ソノベ,トオル
+スドウ,シュンイチ
+スドウ,サトコ
+スギウラ,ナオキ
+スギヤマ,リョウイチ
+スギヤマ,トモジ
+スミダ,ヒロキ
+スミカワ,ヒトシ
+スズキ,ミネカズ
+スズキ,ヒロシ
+スズキ,アツシ
+スズキ,トシナリ
+スズキ,ヨシユキ
+スズキ,ヤスゾ
+スズキ,ハジメ
+スズキ,カズアキ
+ホソカワ,ユリ
+タブシ,イクタ
+タチザワ,ノリフミ
+タダ,タカアキ
+タダ,ヒロトシ
+タカタ,ユウスケ
+タカガキ,ヒデカズ
+ヤマザキ,ナオキ
+タカハシ,ヨシツグ
+タカハシ,ヒロキ
+タカハシ,マサヤス
+タカノ,タカヒロ
+タカサキ,タカシ
+タカス,カズヨ
+タカトリ,コウジ
+タカヤマ,マサミ
+タカヤマ,シゲル
+タカヤマ,ユウジ
+タカヤ,ヨシカズ
+タケダ,タエコ
+タケダ,ヒロユキ
+マツオカ,ヨシヒロ
+タケイ,ノブヒコ
+タケウチ,トモオキ
+タケウチ,ノリトシ
+タケ,ケイコ
+タキミヤ,トモヒロ
+タマタニ,カズアキ
+タムラ,ヨシヒロ
+タムラ,ケンジ
+タナカ,カズヒサ
+タナカ,トモヤス
+タナカ,アヤコ
+タナカ,ノリヒロ
+タニモト,シンイチ
+タニヤマ,アキヒコ
+タンノ,オサム
+タノ,ヒサオ
+テラザワ,アキラ
+トクシゲ,サトル
+ゴトウ,ナオキ
+トミナガ,ヒロヒサ
+トンショウ,ヒデユキ
+ツボイ,ショウイチ
+ツボタ,ショウジ
+ツジムラ,ナオキ
+マツムラ,アキラ
+ツカダ,ヒデキ
+ツネヨシ,サトミ
+ツルオカ,マサヤ
+ツル,ヨシオ
+ウチダ,ヒデユキ
+ウエダ,タモツ
+ウメサキ,キヨシ
+ウラカワ,ユウジ
+ウラカワ,カズシ
+ワダ,ジュン
+ワカバヤシ,ケンジ
+ワカマツ,ヨシカズ
+ワタナベ,アツコ
+ワタナベ,タカシ
+ワタリ,コウジ
+ヤベ,コウイチ
+ヤハギ,シンジ
+ヤマダ,カズヒロ
+ヤマダ,カズヒロ
+ヤマコシ,マサユキ
+ヤマモト,ソウイチ
+ヤマモト,アツシ
+ヤマモト,ヨウイチ
+ヤマモト,サチ
+ヤマモト,マサミ
+ヤマウチ,トオル
+ヤマノ,ヒロフミ
+ヤマオカ,トモタカ
+ヤマシタ,トシヒデ
+ヤマウチ,タケシ
+ヤマザキ,ヒロマサ
+ヤマザキ,ユカリ
+ヤナギシマ,マスミ
+ヤマモト,ミカコ
+ヤノ,タカヒコ
+ヤザキ,タケシ
+ヨゴ,ヤスハル
+ヨコイ,カツマサ
+ヨコミゾ,トシキ
+ヨコタ,ユウジ
+ヨコタ,ヒサオ
+ヨコタ,ユウコ
+ヨシダ,シンイチロウ
+ヨシダ,マチコ
+ヨシフサ,イクフミ
+ヨシハラ,トモマサ
+ヨシイエ,ハジメ
+ヨシカワ,チエ
+ヨシカワ,ミツヒロ
+ヨシオ,ユウジ
+ユアサ,マサヨシ
+ユキ,アキラ
+アダチ,トシユキ
+オオニシ,カズオ
+オオタ,ミワコ
+アサノ,ミチコ
+ニシムラ,ミツヨシ
+ヤマダ,ヒロノリ
+サイ,クニオ
+ミヤモト,カズオ
+スズキ,カズヒコ
+フクイ,クニヤ
+オクダ,ヒサコ
+サイトウ,タカオ
+フルヤ,カツミ
+モトヤマ,ナオヒロ
+ヨシザキ,ユウイチ
+ナカムラ,アツロウ
+トキワ,シュウイチ
+イナダ,マサツナ
+トキワ,ノリユキ
+ヨシダ,タカユキ
+タカノ,ケイコ
+ウエダ,トモコ
+ツチヤ,ユウコ
+シモカワ,フミヒコ
+マツイ,カツミ
+スガヤ,ヨシオ
+ミノグチ,ヤスコ
+ウエダ,ヒカル
+イノ,トモジ
+マエダ,マコト
+ツボタ,ノリオ
+ヨシミ,イクオ
+イチカワ,シゲヒロ
+ホリ,ヒデヤ
+ハヤシ,ユタカ
+シバタ,イクコ
+コバヤシ,マスヒコ
+オオクボ,タケシ
+イワタ,ノブユキ
+フジタ,マサヒロ
+キタムラ,カズオ
+クロキ,ケイコ
+ヤマモト,タカシ
+ヤマバタ,ユキコ
+サイトウ,シュウイチ
+フジワラ,タダシ
+イトウ,カズト
+イイケ,トオル
+サムカワ,アキノリ
+アズマ,マサキ
+アオキ,アツシ
+フジタ,ツネオ
+ミヨシ,トシカズ
+セキヤマ,ヨシオ
+テラダ,テルヒサ
+エンド,タケシ
+カキモト,ケンジロウ
+フルヤ,イワオ
+マキムラ,タケオ
+コンノ,ヒロシ
+スギサキ,トシユキ
+ヨシダ,シゲオ
+ハギワラ,ヒロシ
+ヤザキ,ユウジ
+ニノミヤ,カズオ
+コサカ,ヒロヤス
+サノ,シンゴ
+サイトウ,ダイスケ
+シモセ,タカヨシ
+タカハシ,カズヒト
+タツオカ,マサキ
+タバタ,ヨシタカ
+ナオイ,マサコ
+ナガタ,マサオ
+ニシオカ,シゲル
+マツカワ,アツシ
+ミズノ,ユウコ
+トクナガ,ケイコ
+ムラカミ,ヒロキ
+ヤスカワ,トシノリ
+ヤマグチ,ユキオ
+ヨコウエ,タダシ
+アズマ,ノボル
+イナダ,ミツユキ
+イシイ,ノボル
+イマニシ,タケオ
+オカノ,カネミツ
+キシ,トシコ
+クボタ,マサノリ
+コミナミ,マユミ
+アイヤマ,ショウジロウ
+サノ,チカラ
+タキガワ,シゲヨシ
+コンノ,ヒロヤス
+センダイ,タカシ
+ニワノ,ヒデスケ
+シ,ナオヨシ
+カトウ,カズナリ
+アカサカ,クニオ
+オンズカ,ヒロシ
+コガ,コウイチ
+ハヤカワ,トモミ
+ハセガワ,マサヨシ
+フルカワ,タケシ
+フジカド,ユウジ
+トノカワ,タケシ
+マツオ,ヨシオ
+キミズカ,マサノリ
+オチ,マコト
+イチコハラ,マサヤス
+イケダ,アキコ
+アラタケ,イクオ
+イケダ,トキオ
+イトウ,ヨウイチ
+イケダ,エツ
+イイダ,マサト
+オオクマ,カズエ
+クサバ,マサキ
+コバヤシ,サヨコ
+ゴトウ,カズヤ
+スズキ,モトノリ
+セキネ,ヒロシ
+タカダ,トシユキ
+コンド,ヨウスケ
+タケヤマ,ケイシロウ
+タカイチ,オサム
+ソダ,ケンジ
+タノ,マコト
+シノザキ,サトシ
+ハラダ,アヤ
+クドウ,カツコ
+ツノダ,ナオコ
+フルカワ,トシアキ
+モリタ,マサユキ
+ヤマモト,トオル
+ヤマシタ,ヨシハル
+ユカワ,ヨシオ
+ヨシダ,エイコ
+ハヤシ,トシタカ
+タンノ,エイイチ
+タカハシ,マコト
+ナリアイ,ヨシノリ
+タカムラ,アキオ
+タンノ,テツオ
+コバヤシ,コウイチ
+ゴトウ,トオル
+ゴウダ,キョウコ
+ナカシマ,ミツオ
+ホシノ,フミタダ
+ワコ,ナオキ
+スズキ,シゲオ
+ヨシマツ,マサクニ
+ナミオカ,シンジ
+ヤマグチ,ヒロカズ
+イシバシ,マコト
+イシダ,センヤ
+ウチヤマ,セイジ
+エンド,シゲル
+ナカノ,マサフミ
+イマイ,カズオ
+オサナイ,アツシ
+サカモト,キヨシ
+シオミ,チカシ
+シマザキ,ナオキ
+テルヤ,トシヤ
+ナカタニ,ナオキ
+ハギワラ,キヨカズ
+ヒガシ,ショウコ
+ホリウチ,ヨシオ
+ミゾロギ,ナオキ
+モリ,タモツ
+イノウエ,タケヒコ
+シダ,ミチヨ
+ヤマモト,ミチコ
+ヤマモト,ヒデアキ
+オオタキ,カズヤ
+フジ,サナエ
+アキモト,マモル
+イイジマ,アキコ
+オグマ,ユミコ
+サトウ,タカオ
+ツチヤ,ヨシヒロ
+サイトウ,カズヨシ
+ハラ,セイイチロウ
+フジマキ,シンヤ
+ムロタ,ミツマサ
+モリ,トオル
+ミゾグチ,トシユキ
+イケハタ,ヒロユキ
+オガワ,ヒロタカ
+ウエノ,マサトシ
+タナカ,カズヒロ
+コバヤシ,マサカズ
+クロス,ヤスジ
+キタガワ,ヒロシ
+シノミ,マサユキ
+ハセ,ユウゾウ
+テルヌマ,ヨウコ
+キクチ,サトシ
+ハシモト,ノリユキ
+オオカワ,シント
+オオニシ,ソウイチ
+アベ,マサヒト
+アダチ,ヒデキ
+アダチ,マサト
+アダチ,トシユキ
+アゴ,カオリ
+アイハラ,アキヒコ
+アイハラ,ヒデオ
+アイザワ,ジュンイチ
+アカマツ,タツオ
+アカマ,トモミ
+アカセ,マサユキ
+アカヤマ,シンゲン
+フクシマ,トモノ
+アキバ,ツトム
+アキノ,ハルキ
+アキシカ,ユウジ
+ナメキ,ナオミ
+アキズキ,シンイチ
+アマダ,ユキオ
+アマノ,トオル
+アミノ,ノブハル
+アンベ,ヤスシ
+アンドウ,ヒロトシ
+アンザイ,タカヨシ
+アンザイ,ヒロシ
+アオキ,サトシ
+アオヤギ,タカオ
+アオヤギ,ヒロユキ
+アオヤギ,ヒサシ
+アラカワ,タイスケ
+アラカワ,マサユキ
+アラキ,トシユキ
+アラヤス,ヒトシ
+アラ,アキオ
+アリタ,キョウコ
+アサダ,クニオ
+アサダ,ヒロアキ
+アサカワ,ノリエ
+アサクラ,トモユキ
+ナカサト,アキラ
+アサノ,ヨシヒロ
+アサリ,カズキ
+アツミ,アキヨシ
+アワカ,カツミ
+ババ,カズヒロ
+バン,ケンゾウ
+バン,ワタル
+バン,コウタロウ
+チョウサ,マサシ
+ダイド,ケイシン
+ダイモン,ナオヒコ
+デムラ,ヨシト
+ドイ,タカシ
+エビヌマ,アケミ
+エグチ,ジュン
+エハラ,カズオ
+エナミ,ナツコ
+エトウ,ヨシナル
+イワサキ,カズオ
+エザキ,ユウジ
+フジエダ,ジュン
+フジエ,コウイチ
+フジガキ,ヨシチカ
+フジイ,トシユキ
+フジイ,アキラ
+フジイ,ジュンイチ
+フジイ,ミユキ
+フジイ,シゲノリ
+フジカワ,シンイチ
+フジモリ,トモノ
+フジモト,ショウゴ
+フジモト,シノ
+フジノ,タカシ
+フジオカ,ヤスシ
+オグラ,アヤコ
+フジタ,マサト
+フジタ,サトル
+フジタ,ユキオ
+フジタ,ショウジ
+フジワラ,ヒロシ
+フカダ,アツシ
+フカオ,ミツヒロ
+フカオ,ミサキ
+フカセ,
+フクチ,ヨシヒロ
+フクダ,ユウコ
+フクダ,フミヒコ
+マツカワ,ヒデオ
+フクダ,ミカ
+フクダ,ユキコ
+フクダ,ケンジ
+フクハラ,ユキオ
+フクイ,ヒロシ
+フクイ,ジュンイチ
+フクオカ,シンゴ
+シガ,ナオト
+フクシマ,アツシ
+フクシマ,チカコ
+フクシマ,ナオキ
+オオノ,ナオキ
+フナツ,トシユキ
+ゴウダ,ヨリコ
+ゴウダ,ヒデアキ
+ゴウ,カイロウ
+コグレ,キンヤ
+ゴトウ,タカシ
+ゴトウ,ユキヨ
+ハガ,リョウイチ
+ハギワラ,キクオ
+ハマダ,アキオ
+マエダ,ケンイチ
+ハマハタ,ノボル
+ハマノ,ノブヒロ
+ハナブサ,リュウイチロウ
+ハナタ,ヨシジ
+ハナミツ,ヨシタカ
+ハンダ,スミト
+ハラダ,アヤコ
+ハラダ,フミオ
+ハラダ,ジュンイチ
+ハラダ,マサノリ
+ハラ,マサユキ
+ハラ,ミユキ
+ハセガワ,マコト
+ハシグチ,イサオ
+ハシモト,マサトシ
+ハシモト,ノリキ
+ハタケヤマ,サトシ
+ハタナカ,キヨシ
+ハツシマ,ケン
+ハットリ,ヨシヒサ
+ハットリ,ツネヒサ
+ハットリ,マサコ
+ハットリ,フミオ
+ハットリ,ユキヒコ
+ハットリ,ヨシノリ
+ハヤカワ,アキラ
+ハヤシダ,マサヤ
+カンダ,ケンジ
+ハヤシ,コウジ
+ハヤシ,ツヨシ
+ハヤシ,ヒロシ
+ハヤシ,カツミ
+トビカワ,ミユキ
+ヒゲタ,ヨウイチ
+ヒグチ,ミツヒロ
+ヒグチ,ユウコ
+ヒジカワ,ヨシノリ
+ヒカイ,マドカ
+ヒナタ,ジュン
+ヒノ,ショウイチ
+ヒノ,タカユキ
+ヒラギ,ヤスシ
+ヨモダ,カズト
+ヒラノ,マサノブ
+ヒラノ,ヒロユキ
+ヒラサワ,カズヒロ
+ヒラタ,マサヒロ
+アサノ,ヒロシ
+ヒラタ,ヒサオ
+ヒラツカ,タケシ
+ヒロカワ,フミアキ
+ヒロナカ,カズヒサ
+ヒロセ,ヒサユキ
+タシロ,キミコ
+ヒロセ,マコト
+ヒシヌマ,ヒロノブ
+イワモト,ジュン
+ヒウラ,ヒトシ
+スギモト,セイイチ
+ホンマ,ヤスユキ
+ホンマ,ツヨシ
+ホンマ,タイラ
+ホンマ,タツロウ
+ホリカワ,ジュンイチ
+ホリオ,カツヨシ
+ホリ,カズオ
+ホリ,アツシ
+ホリ,コウイチ
+ホシノ,シンジ
+ホシノ,アキコ
+ホシノ,フトシ
+ホシ,ヒロコ
+ホソ,カズミ
+ホタテ,ユカ
+イチカワ,ユミコ
+イチカワ,サトシ
+イチキ,タケシ
+イチノセ,アリ
+イダ,ナオキ
+イデイ,マサカズ
+イガラシ,ユウジ
+イグチ,ゴウ
+イイダ,エイザブロウ
+イイダ,フジオ
+イイジマ,ヒロユキ
+イイジマ,カズノリ
+イイムラ,ヨシノブ
+イイノ,ヒデキ
+イイズカ,ヒロシ
+イイズカ,カツヒコ
+ハルタ,トシコ
+イケダ,ナオヒロ
+スズキ,トオル
+イケダ,クニヒロ
+イソベ,コウジ
+イケヤマ,スギオ
+イクタ,トシアキ
+イマイズミ,チズコ
+モリシタ,シゲキ
+イマイ,タダシ
+イマムラ,マナブ
+イマムラ,ノリユキ
+イナミ,ケンヤ
+イノウエ,ヤスヒデ
+イノウエ,ヒロシ
+イノウエ,ヒロシ
+イノウエ,ヒロタカ
+イノウエ,ミツコ
+イヌイ,ユキトシ
+イシダ,マナブ
+イシダ,トシヒロ
+イシダ,ユタカ
+イシグロ,マリ
+イシグロ,ヒロシ
+イシハラ,ジュンイチ
+イシイ,カオル
+イシイ,ケイイチ
+イシイ,コウジ
+ユキマサ,マサトシ
+イシカワ,タカシ
+イシカワ,ヨウコ
+イシクラ,ユタカ
+イシモリ,ヒロアキ
+イシモト,リエ
+イシモト,サチコ
+イシオカ,ユカ
+イシオカ,ノブオ
+イシワタ,ナオヒサ
+カン,ヨウイチロウ
+イシザカ,カヨコ
+イソガイ,タカヒロ
+イタバシ,シンイチ
+イタバシ,シゲキ
+サギヤ,ヒデアキ
+イトウ,テツヤ
+イトウ,アケミ
+イトウ,ノゾム
+イトウ,ナオヨシ
+イトウ,カズシゲ
+イトウ,ナオユキ
+イトウ,タカシ
+サカイ,コウイチ
+イトウ,カズユキ
+イワイ,カオル
+シマムラ,フサチカ
+イワイ,キョウコ
+カワナカ,カズミ
+イワクボ,タカユキ
+イワモト,サヤカ
+イワモト,ヒデアキ
+タケダ,サチコ
+イワムラ,ヒロユキ
+イワナガ,ヒデオ
+イワオ,コウイチ
+イワサキ,タツヒコ
+イワサキ,トラヒコ
+セガワ,マサタカ
+イワシロ,ヨシヒサ
+イズミ,マコト
+カエリヤマ,ナオキ
+カガミ,イクオ
+カガミ,シゲヨシ
+カジタニ,カズヒコ
+ヤマモト,エイイチ
+カキヌマ,ヒロアキ
+カク,ヒロユキ
+カマダ,マコト
+イナガキ,マサエ
+カマモト,タエコ
+カマタニ,ナオフミ
+カマタ,トモコ
+ヤマダ,エイジ
+カメダ,アキコ
+カメヤ,ヒデキ
+カミ,マコト
+カミオ,マナミ
+カミヤ,マサノリ
+カモト,ヨリコ
+カナダ,マサタカ
+カナイ,キョウコ
+カナイ,リエコ
+カナザワ,サダイチ
+カンダ,タカヒロ
+カネイチ,アキオ
+カネコ,ヒロブミ
+カネコ,マスオ
+カネコ,シュウジ
+カネコ,タケヒコ
+カネコ,ヤエ
+カネコ,ヒサシ
+カネマル,アツシ
+カリヤ,ヨシノブ
+カルベ,キョウジ
+カシマ,ヒロユキ
+カシワギ,ヨシユキ
+カシワギ,ヒロシ
+カスヤ,ケイゴ
+カスヤ,ショウコ
+カスヤ,タカシ
+カタノ,ケンイチ
+シラキ,カツオ
+カタオカ,ヨウイチロウ
+カタオカ,アツシ
+カタヤマ,
+カトウ,タテオ
+カトウ,ヒロシ
+カトウ,ヒロコ
+カトウ,ヒロヤ
+カトウ,タケシ
+ゴトウ,ヒロカズ
+カツヤ,ヒロシ
+カワダ,ミチオ
+カワダ,サチコ
+カワグチ,サトシ
+カワハラ,セイイチロウ
+カワハラ,ヒロアキ
+カワハタ,ヒロユキ
+カワイ,ジュンイチ
+カワイ,カヨコ
+カワイ,ミホ
+カワカミ,タケシ
+カワキタ,トモアキ
+カワキタ,ヤスコ
+カワムラ,ユキマサ
+カワムラ,ユキ
+カワムラ,マサユキ
+カワゾエ,ミナ
+フタクチ,タダシ
+キダ,ヤスヒロ
+キダ,ヨシフミ
+キド,アキオ
+キハラ,カツトシ
+キクチ,コウジ
+キクチ,アイコ
+キクタ,イサオ
+キモト,カズマサ
+キムラ,ミノル
+キムラ,ナホミ
+キムラ,シュンイチ
+キムラ,スミヒロ
+マツモト,タクロウ
+キムラ,トシオ
+キムラ,ジュンコ
+オカザキ,タケオ
+キムラ,ユカ
+キムラ,アツシ
+キノシタ,ケイコ
+キシ,キミヒコ
+キス,ジュンコ
+キタカゼ,ノブキ
+キタムラ,アキオ
+キウチ,ナオト
+キウチ,タカゾウ
+キヨタ,ダイスケ
+コバヤシ,マサハル
+コバヤシ,ケンジ
+コバヤシ,ミヨコ
+コバヤシ,ヨシユキ
+コバヤシ,タカシ
+コバヤシ,ヒデアキ
+コバヤシ,ユウイチ
+コバヤシ,ヨシオ
+コバヤシ,ヒロヒデ
+ヒロセ,ハルオ
+コデラ,アキヒロ
+コガイ,ヒサタカ
+コグレ,カズオ
+モリタ,ミチヒコ
+コモト,ヨウスケ
+コンノ,アキヒロ
+コサカ,ヨシユキ
+コイケ,キヨシ
+コイケ,ヨウイチ
+コイシ,アキオ
+コジマ,カズタカ
+コジマ,テツ
+コクホ,カツヤ
+コクマイ,ミエコ
+コマガタ,マコト
+コマキ,カズユキ
+コマツ,ヨウイチ
+コマツ,アツシ
+コミネ,カツノリ
+コミヤマ,ヨシノブ
+コモオカ,フミオ
+コモリ,シゲノリ
+コンド,ヒロシ
+コンド,ミキオ
+コンド,ヨシゾウ
+コンド,タカユキ
+コンドウ,タツト
+コンノ,テツオ
+コスギ,ヨウイチ
+コウダ,トシユキ
+コヤナギ,ノブヒコ
+クボタ,ヒロユキ
+クボタ,ナオキ
+クボ,タカユキ
+クドウ,ゴウ
+クガ,シゲル
+クジマ,エリ
+クマダ,ヒロシ
+クマキ,マキ
+クマクラ,カツト
+クマモト,アキヒコ
+クモカワ,ヒロノリ
+クラシマ,コウイチ
+クリハラ,コウジ
+クリハラ,ユミコ
+クリムラ,シュウジ
+クリス,ヒロシ
+クリヤマ,ユキエ
+クリヤマ,ジュンイチ
+クロダ,アキラ
+クロカワ,ヒロシ
+クロキ,ノブヤ
+クロサキ,ノブアキ
+クロス,ヒロシ
+クシダ,ワタル
+クスダ,ヨシコ
+クワバラ,イチロウ
+ウチダ,ケイイチ
+マエダ,ヤスヒコ
+ニワ,シゲミツ
+マエヒラ,マサト
+マエカワ,ヒデタカ
+マキムラ,ヒロミツ
+マキノ,ユウジ
+マキノ,マリ
+ヨウコタ,ミチヤス
+マルヤマ,タダシ
+マスダ,ミキオ
+マスダ,テルアキ
+マスヒロ,キミ
+マスヤマ,タクジ
+マツバラ,コウジ
+マツバラ,ヤスナリ
+マツダイラ,マサト
+マツダ,シゲオ
+ササモト,サユリ
+マツダ,トシミ
+マツフサ,カツジ
+マツイ,トオル
+マツイ,ジュンイチ
+マツキ,アキヒコ
+カノウ,ヒロユキ
+マツモト,ユウイチ
+マツモト,トシユキ
+マツモト,フジオ
+ハシモト,ショウジ
+マツムラ,キニチ
+マツムラ,ヒロユキ
+マツナミ,ヒロユキ
+マツナミ,ユキオ
+チバ,テツヤ
+マツシバ,コウイチ
+マツシタ,ヒロシ
+マツシタ,エイイチ
+マツウラ,イチロウ
+マツザキ,タダシ
+イマイ,マサユキ
+マユヤマ,アツシ
+メン,マサト
+ミチガミ,ノリオ
+ミハラ,ハルコ
+ミキ,アツシ
+ミモリ,ヒロシ
+ミナミグチ,カナメ
+ミナズキ,ナオユキ
+ミネムラ,ユカリ
+ミシナ,カズヒロ
+ミツイ,タケハル
+ミウラ,ヨウイチ
+ミウラ,ケンイチ
+ムラカミ,マサハル
+ミワ,シゲユキ
+ミヤガワ,マサオ
+ミヤギ,ミチコ
+ミヤハラ,トシオ
+ミヤハシ,キョウコ
+ミヤカワ,マサトシ
+ミヤキ,マサズミ
+ミヤモト,セイジ
+ミヤモト,ヒロシ
+ミヤモト,マサヒロ
+ミヤサカ,ナオキ
+ミヤタケ,シゲミ
+ミヤタ,トシヒロ
+ミヤタ,ユウジ
+ミヤタ,マサミチ
+クロダ,ケイコ
+ミヨシ,ナオコ
+ミズコシ,マキオ
+ミズコシ,トシオ
+ミズノ,タツヤ
+ミズノ,ノブハル
+ミズタニ,シンジ
+モリ,ショウジ
+モリ,ノリコ
+モリカワ,アキコ
+モリキ,ヤスヒロ
+モリシタ,ヨシミ
+モリタ,タダシ
+モリタ,カズヒロ
+モリヤマ,トシオ
+モリゾノ,ツヨシ
+モリ,サトル
+モリ,カツトミ
+モリ,ヤスオ
+モリ,ヒロノリ
+モロズミ,ノボル
+イノハナ,カズオ
+コジマ,シンゴ
+ムカイ,タツミ
+ムカイ,サチオ
+ムライ,チナツ
+ムラカミ,トオル
+ムラカミ,チハル
+ムラマツ,マサカズ
+ニワ,カツヒロ
+ムラタ,サトシ
+ムラタ,イチロウ
+オオノ,タカシ
+ムラヤマ,チハル
+ムトウ,ヒロヤ
+ムトウ,タカシ
+ムトウ,アマネ
+ムツシカ,エイイチ
+ナガイ,ヒロシ
+ナガイ,カツユキ
+ナガモト,ケンイチ
+アライ,タケトシ
+ナガオ,ヤスナリ
+ナガサワ,アツシ
+ナガサワ,カズト
+ナガヤマ,アキヒロ
+ナイトウ,フサノブ
+ナイトウ,カツオ
+ナカバヤシ,カズヒサ
+ナカダテ,コウイチ
+ナカガキ,マサノリ
+ナガエ,タカユキ
+ナカガワ,テルジ
+ナカガワ,トシユキ
+ナカゴメ,ヨシナリ
+ナカヒラ,ユタカ
+ナカイ,エミコ
+ナカジマ,カツトモ
+ナカジマ,ミエコ
+ナカジマ,ナオヤ
+ナカジマ,エリ
+ナカジマ,ツネアキ
+ナカジマ,ケイイチ
+ナカジマ,ナオヒデ
+ナカマタ,ノリヒロ
+ナカミチ,シュンイチロウ
+ナカムラ,マサキ
+ナカムラ,トシアキ
+ナカムラ,マコト
+ナカムラ,テルヒロ
+ナカムラ,シンジ
+ナカムラ,ハジメ
+ナカムラ,ノリアキ
+ナカムラ,ヒロユキ
+ナカムラ,カズヒコ
+ナカムラ,マサユキ
+ナカムラ,ナオキ
+ナカニシ,トシアキ
+オオニシ,マサノリ
+ナカニシ,トシユキ
+ナカニシ,ノブヤス
+ナカノ,キヨタカ
+オカザワ,カヨコ
+ナカノ,ノゾミ
+ナカノ,ヨシフミ
+ナカノ,モエコ
+ナカオカ,テツヤ
+ナカオ,フミコ
+ナカオ,エイジ
+ナカセ,コウシ
+ナカソギ,マサトミ
+ナカタ,シゲコ
+ナカツカ,タカシ
+ナカツカ,マコト
+ナカヤマ,ヒデキ
+ナカヤマ,アツシ
+ナカヤマ,タツヤ
+ナカヤマ,コウヘイ
+ナカヤマ,カツヒコ
+ナカザワ,ミツグ
+ナミキ,クニオ
+ナラシマ,マサアキ
+ナラ,タケヒコ
+クドウ,ヒサシ
+ナツノ,ミチハル
+ナツヤマ,ユウコ
+エトウ,ヒロシ
+ニヘイ,タカシ
+オクノ,サユリ
+マエホリ,ヒロミ
+ニシダ,ヒトシ
+ニシグチ,タツオ
+モリ,ユキコ
+ニシカワ,マサシ
+ニシクラ,シゲル
+ニシモト,マサキ
+ニシオ,トシヒコ
+ニシワキ,ケイコ
+ニシ,マサル
+ニワ,マサキ
+ノブマサ,ミサト
+ノダ,モトヒコ
+ノグチ,タカシ
+ノグチ,ケン
+ノホリ,ヒデユキ
+ノタニ,マサタケ
+ノマ,サトシ
+ノミヤマ,トシロウ
+ノモト,トシアキ
+タンザン,ミチオ
+オオカワ,カズヒコ
+ノノヤマ,マサキ
+ノリカネ,マサル
+ノロ,セイイチ
+ノ,シンイチ
+オバナ,ヒロシ
+オビナタ,アキヒコ
+オチアイ,ヨシノリ
+シマムラ,ヒロシ
+オダネ,ヨシカズ
+オガワ,ナオミ
+オグラ,ヒデトシ
+オグラ,セイジ
+オグラ,シンスケ
+オオグロ,イワオ
+オオバヤシ,ケイゾウ
+オオバヤシ,ヤスユキ
+オオバ,エリコ
+オチ,シンゴ
+オオデ,トシヒコ
+オオホリ,ノリオ
+オホ,コスケ
+オオイシ,モトイチ
+オキ,ヨシユキ
+オオクボ,マサヒロ
+オオクボ,マサクニ
+オオミチ,タケノリ
+オムラ,ツネアキ
+オオニシ,イサオ
+オノ,コウイチロウ
+オライ,ススム
+オサキ,サトシ
+オオサワ,ソウイチロウ
+オオサワ,タダシ
+オオサワ,リュウジ
+オオタニ,ケンジ
+オオタ,ナオキ
+オオトモ,アキオ
+オザキ,コウジ
+オオツカ,タケシ
+オオツカ,トシロウ
+オオツキ,テツヤ
+オオヤ,マサヒロ
+オヒャ,クニヒコ
+オオヤ,スグル
+オカダ,ツグオ
+オカダ,ヨシヒロ
+オカダ,トシヒロ
+オカダ,シンイチ
+オカハラ,ヒロキ
+オカモト,ヨシオ
+クサバ,ヒロシ
+オカムラ,マサカズ
+オカムラ,マサキ
+オカノ,ヒロシ
+トビタ,シュウヘイ
+ホソカワ,コウジ
+ウエダ,トヨカズ
+コセキ,ユミ
+タザワ,シュンジ
+ヤマザキ,ヨシカズ
+エグチ,ヒロユキ
+モチダ,ススム
+アキモト,キエイ
+ニシ,アツキ
+イマイシ,シゲトシ
+タカヤス,ノブヨシ
+ハタ,マサユキ
+フジサワ,アキラ
+ムトウ,ヒサシ
+モタイ,シンイチ
+タダ,タカユキ
+コイズミ,カズヨシ
+ツボクラ,コウゾウ
+ヒラバヤシ,ヒロジ
+ツジカワ,ヒロカズ
+ミツイシ,セイイチ
+ヤマシタ,ケンジ
+マルオカ,ノブタカ
+フカオ,トオル
+ツムラ,カナコ
+マユミ,トシエ
+アラカワ,ミドリ
+オフチ,ジュン
+ササモリ,ユタカ
+サトウ,アキラ
+タカギ,マコト
+タナカ,マサミツ
+ツボゴ,フミヒコ
+トリサワ,ヒロユキ
+ナカグキ,ケイゴ
+ハセガワ,トモユキ
+ハヤシ,コウジ
+ヒラヤマ,シゲル
+フクシマ,トシキ
+マツシマ,カズヒロ
+ヨシイ,ヒデキ
+イシイ,ノリコ
+イマイ,ミユキ
+ナカツジ,ユキエ
+ホイダ,ツネオ
+サワハタ,ミツル
+タハラ,ショウジ
+タカハシ,ミネマサ
+スズキ,ヒデアキ
+ヨコヤマ,ケンジ
+イシカワ,ケンジ
+アサノ,ヨシタカ
+カネコ,シュウジ
+クロセ,ヨウスケ
+サカキバラ,アラタ
+カサマ,ケイコ
+スギヤマ,ヨシマサ
+スダ,テツヤ
+タナカ,アヤ
+ツボイ,エツコ
+ハシモト,チエコ
+フクチ,サトミ
+アライ,トモコ
+タナカ,ケンジ
+ヤシマ,ナオユキ
+カワマタ,タケノリ
+スンダ,アツヤ
+ミズタニ,ミノル
+ヤマコシ,ノリユキ
+アマガヤ,ユメノ
+アラキ,ヒサヨ
+イマイ,トシハル
+イマザキ,タカヒサ
+キムラ,カツヒデ
+スギヤマ,イサオ
+スズキ,ダイスケ
+ツル,ミノル
+ハコザキ,アキラ
+タキザワ,ツヨシ
+イトウ,カズノブ
+マスダ,ヨシノリ
+ツバキ,チアキ
+ミスミ,チカコ
+ヤイタ,マキ
+カワツ,ヒトシ
+ツカダ,タケヒコ
+ナカモト,フミコ
+フナビキ,サナエ
+ヨシザワ,キョウコ
+トウマ,ヨウコ
+セキ,マリ
+ムラタ,ナオキ
+カタヤマ,マサヒロ
+キド,シュウジ
+コバヤシ,コウジ
+シノミヤ,トモカズ
+タナカ,カズユキ
+ハラ,ヨシノリ
+モリタニ,ショウヘイ
+イチノセ,カズユキ
+フジモト,カツユキ
+ウエノ,コウジ
+シシド,トシノリ
+ミウラ,ススム
+ウチダ,ルミコ
+ドイ,コウイチ
+ソスミ,トシユキ
+ヨシダ,マサユキ
+タカハシ,トシオ
+ヤマグチ,ナエコ
+ササ,ユキコ
+ハセガワ,カオリ
+アツタ,ヨシオ
+イチカワ,マサアキ
+ウノ,サトミ
+オガワ,ユキコ
+オダ,ヒロカズ
+タカサキ,マキコ
+タカハシ,ツヨシ
+タダ,タダシ
+タナカ,ヒロシ
+トクナガ,ヒロシ
+トミタ,ジュンコ
+ナイトウ,リエ
+ハラダ,エミコ
+ヒラカワ,トモコ
+フナモト,ヒロタカ
+ドバシ,ユキ
+ミウラ,チコ
+ヨシダ,ヒロアキ
+オオタケ,ジュンジ
+クラタ,ヤスヒロ
+クリタ,サトシ
+ダン,マコト
+モリシマ,シンジ
+ヨシダ,ヨウジ
+ワカバヤシ,ユミコ
+アゲマツ,ヒロミチ
+イシグロ,コスケ
+カトウ,カズヒロ
+サイトウ,シンイチ
+ナイトウ,ミチヨ
+ミヤマエ,トシヤ
+カドワキ,アツシ
+フクモト,ミキオ
+ニシハラ,アキラ
+オカヤマ,カズナリ
+オカヤス,ミエコ
+クロカワ,トオル
+オキタ,ヨシヒサ
+オクミヤ,マサカズ
+オクムラ,ダイ
+オノダ,ナルミ
+オノデラ,ヒトシ
+オノ,ハルユキ
+オノ,ナオフミ
+オノ,ヨシフミ
+マツイ,テルオ
+オソエガワ,ヤスナリ
+オザキ,ノブユキ
+オゼキ,ヒロユキ
+タカノ,イサオ
+リョウカイ,ヨシキ
+サゲサカ,リュウイチ
+サギヤ,キョウイチ
+サイタ,マサヒロ
+サイトウ,アキミツ
+サイトウ,ゴロウ
+サイトウ,ヒロユキ
+サイトウ,ツネオ
+サイトウ,リカ
+サカグチ,ヒデアキ
+サカイ,ヒロミ
+シマダ,ヒロシ
+サカキバラ,イツロウ
+サカモト,ケンジ
+サカモト,マサキ
+サカモト,ムネヒロ
+サカリ,ノブヒロ
+サカタ,サトル
+サクマ,シンジ
+サクライ,タカノブ
+サクライ,タカシ
+サクライ,ヨシヒロ
+サンノウマル,ユキオ
+サノ,ユタカ
+ササベ,タツロウ
+ササキ,シンゴ
+ササキ,トモヒロ
+ササキ,タケシ
+ササキ,ナオト
+ヨシダ,ヒロシ
+サトウ,ヨシヒコ
+サトウ,カズノリ
+サトウ,タカノリ
+サトウ,ハヤト
+サトウ,ヤスヒコ
+サトウ,ヨシユキ
+サトウ,ヨシト
+サトウ,アキオ
+サトウ,マサコ
+サトウ,トモコ
+サトウ,ユウイチ
+サトウ,チアキ
+サトウ,カズヤ
+サトウ,マサミ
+サトウ,サトシ
+サワイデ,ユウイチ
+サワイ,コウイチロウ
+サヤナギ,マリ
+セガワ,ヨシヒロ
+セイミヤ,ヒロシ
+セイヤマ,シゲキ
+セキカワ,アキラ
+セキ,コウジ
+セキ,タケシ
+センダ,ヒロタカ
+センゴク,キョウコ
+セノ,トシアキ
+セシモ,コウジ
+セタカ,ケイ
+スガ,リョウイチ
+ミナミ,ヤスシ
+シバタ,チアキ
+シブヤ,ヒロミチ
+シブヤ,ツヨシ
+シブヤ,マサノリ
+シイノ,ヒロコ
+シカタ,タカヒロ
+シキブ,ヒロシ
+シマダ,マサヒロ
+シマダ,ヒロシ
+シマガミ,トシアキ
+シマモリ,マサヒコ
+シマムラ,ユキノリ
+シマザキ,コウ
+シマザキ,タカアキ
+シミズ,エイゾウ
+シミズ,リエ
+シミズ,ヒロシ
+シモダ,ケイミン
+シモヒラ,コウタロウ
+シノハラ,アキヒロ
+シノハラ,マナブ
+シノザキ,ノブコ
+シノザキ,ヒロキ
+シンポ,カスミ
+シンタニ,ユウジ
+オオキド,ソトヒロ
+シオヌマ,キヨミ
+シオタ,クニアキ
+シオヤ,マサヒロ
+シオザワ,イサオ
+シライ,シゲキ
+シラサキ,ヒロシ
+シラトリ,マサトシ
+シラトリ,タカヒロ
+シロキ,ヒトシ
+シロシタ,シゲキ
+カシマ,ヨシオ
+シュウ,ゴイチ
+イマイ,ヒデハル
+ソエダ,ヒロコ
+ソガ,イズル
+ソワ,カズナリ
+スダ,コウイチ
+スダ,マサル
+スダ,ナオキ
+スエダ,ノリヨシ
+スエモリ,サキコ
+スエオカ,ショウイチ
+スガワラ,シンジ
+スゲノ,ヤスヒロ
+スギモト,ヤスオ
+スギタ,ユウイチロ
+スギヤマ,ミツオ
+スギヤマ,ケイイチロウ
+スギヤマ,エイジ
+スミトモ,ノボル
+スミ,ユキ
+スナガ,ヒデユキ
+スザキ,テツヤ
+スズキ,テルミ
+スズキ,アキラ
+スズキ,ヤスシ
+スズキ,ユキオ
+スズキ,シノブ
+スズキ,シンイチ
+スズキ,トシヤ
+スズキ,ヒロシ
+スズキ,カズアキ
+スズキ,ケイジ
+オオニシ,マサハル
+スズキ,ノブオ
+スズキ,ノリユキ
+スズキ,リョウスケ
+タボ,シン
+タブチ,タツヤ
+タブサ,トシフミ
+タチカワ,ヤスユキ
+ヒラキ,ユウイチ
+タガイ,ヤスシ
+タガワ,ミホ
+タガ,ノブタカ
+タグチ,ミサオ
+タグチ,シン
+タグチ,ミナコ
+タカバタケ,ヨウイチ
+タカギ,ケンタロウ
+タカハラ,トシヤ
+タカハシ,トシユキ
+タカハシ,ヒロシ
+タカハシ,セイイチ
+タカハシ,ヨシヒサ
+タカハシ,ハルサダ
+タカハシ,マサコ
+タカハシ,マサユキ
+タカハシ,ヒデオ
+タカハシ,カズシゲ
+タカハシ,ノリヒコ
+タカハシ,トヨミ
+タカハシ,ミノル
+タカイシ,トモアキ
+コバヤシ,カズヒロ
+タカミ,ミノル
+タカムラ,シロウ
+タカナシ,ヨシノリ
+ハセガワ,ヒロユキ
+タカノ,キョウコ
+タカオカ,タカキ
+タカオカ,ノブユキ
+タカタニ,アキラ
+タカツジ,カツジ
+タカツカ,キヨシ
+タカツ,マサミ
+タカヤマ,シンイチ
+タカヤマ,トオル
+タカヤマ,ヤスシ
+タケダ,コウイチ
+タケダ,ヤスノリ
+タケダ,タカカズ
+タケダ,ナオヒト
+タケモト,ノゾミ
+タケモト,カツシ
+タケウチ,タカコ
+タケウチ,ヒロカズ
+タケウチ,ユウイチ
+タケウチ,トオル
+タキモト,タカヒロ
+タマチ,ヒロシ
+タムラ,トシヒロ
+タナベ,ツカサ
+タナカ,ケイコ
+タナカ,ナギサ
+タナカ,タカユキ
+タナカ,マキ
+タナカ,ヒロフミ
+タナカ,クニヒコ
+タナカ,カオリ
+タンダ,ミキコ
+タニダ,キミホ
+タニガワ,ヨシタカ
+タニムラ,ヨシナリ
+タニ,ヒロブミ
+タシロ,ユキオ
+ヒラサカ,ノブユキ
+タワダ,エイエツ
+タワラ,シンジ
+テラダ,トヨヒサ
+テラサキ,ヒロユキ
+テラシマ,ヒデコ
+コバヤシ,タイゾウ
+テラウチ,ヤスミツ
+ワタナベ,シンイチ
+トキトモ,マサノリ
+トクダ,タカユキ
+サクラギ,ノリヒサ
+トミモト,マサヒコ
+トミタ,ヒデオ
+トモミ,ヒロミツ
+トングウ,マサシ
+トリウミ,ヒロスケ
+トヨダ,カツヒサ
+トヨサト,ヒロシ
+トヨシマ,テツヤ
+ツチダ,ジュン
+ツチモト,マコト
+ツチヤ,メグミ
+ツダ,タツロウ
+ツダ,ユカ
+ツジモト,ユキオ
+ツジ,ノリオ
+ツジ,ヒロシ
+ツカゴシ,トシカズ
+ツカモト,ケイジ
+ツキダテ,ヒロシ
+モリタ,コウゾウ
+ツルタ,シノブ
+ツシマ,トモアキ
+ツシ,トシヒコ
+ツツミ,スミト
+ツヤマ,ヤスキ
+ウチダ,ユキオ
+ウチダ,ヨウコ
+ウチヤマ,タケシ
+ウダ,ユカリ
+ウエダ,サオリ
+ウエダ,ヒロシ
+ツカモト,チエミ
+ウエダ,ヒデオ
+キキョウ,ヨシタカ
+ウエダ,イクエ
+ウエグリ,トオル
+ウエハラ,ヒロユキ
+ウエマツ,カツヤ
+サトウ,カズヒコ
+ウエノ,ヒデタカ
+ウエノ,ヨシコ
+ウエノ,ヒロユキ
+ウエノ,シゲキ
+ウエノ,ヒデキ
+ウエヤマ,ヒロノリ
+ウメダ,カナウ
+ウメカワ,カヨ
+ナガタ,ノリコ
+ウラゴ,トヨヒロ
+ウルシザカ,ユキオ
+タカハシ,ショウイチ
+ウツノミヤ,シンペイ
+ワダ,カズヒロ
+ワダ,ミキエ
+ワダ,シズオ
+ワカバヤシ,ユミコ
+ワカバヤシ,カズヒコ
+ワカマツ,カズキ
+ワカマツ,コウジ
+ワキモト,ナリト
+ワクイ,シュウジ
+イトイ,ヨシヒサ
+ワタベ,カツヤ
+ワタベ,ナオタカ
+ワタナベ,シュンイチ
+ワタナベ,ヒロシ
+ワタナベ,タダシ
+ワタナベ,エイイチ
+ワタナベ,ヒデトシ
+ワタナベ,ヒロユキ
+ワタナベ,ヒロユキ
+ワタヌキ,マサル
+ヤブシタ,ミドリ
+ヤブタ,ミツヨシ
+ヤブウチ,ショウヘイ
+ヤジマ,ヨウコ
+ヤクシジ,フミヒロ
+ヤマダ,ユキコ
+ヤマダ,ヒロエ
+ヤマダ,ヒサ
+ヤマダ,アキノブ
+ヤマダ,アキオ
+ヤマダ,エイスケ
+ヤマガミ,ヒロフミ
+ヤマグチ,ジロウ
+ヤマグチ,コウジ
+ヤマカワ,シン
+ヤマコシ,タカシ
+ヤマモト,アキヒロ
+ヤマモト,ケイ
+ヤマモト,マサミチ
+ヤマモト,ヒロユキ
+ヤマモト,エイジ
+ヤマモト,ヒロフミ
+ヤマモト,マサノリ
+ヤマモト,マサトシ
+カワグチ,アキラ
+ヤマムロ,ヒロミチ
+イワタ,タケシ
+ヤマオカ,カズヒロ
+ヤマサキ,ヒデクニ
+ヤマシタ,ヒロシ
+ヤマシタ,ツトム
+ヤマシタ,トシアキ
+ヤマシタ,アキコ
+ヤマシタ,ヒロユキ
+ヤマシタ,カズヒデ
+ヤマシタ,カツユキ
+ヤマシタ,アキラ
+ヤマザキ,ヒロユキ
+ヤマザキ,カオル
+ヤマザキ,コウジ
+ヤナガワ,マサヒロ
+タカオカ,ヒカル
+ヤナセ,リョウイチ
+ヤノ,トモユキ
+ヤオ,エリコ
+ヤスダ,トシフミ
+ヤスカワ,ヒトミ
+ヨガイ,コウイチ
+ヨコガワ,セイジ
+ヨコサワ,マサユキ
+ヨコタ,ミナコ
+ヨコタ,ヤスシ
+ヨコウチ,ツトム
+ナカヤマ,アツシ
+ヨコヤマ,ハルヒコ
+ヨコヤマ,マサオ
+ヨネハラ,トシユキ
+ヨネムラ,タダシ
+ヨシダ,マサトシ
+ミヤムラ,ツトム
+ヨシダ,キミアキ
+ヨシダ,マサカツ
+ナカ,ヨシヒロ
+ヨシムラ,ヨウイチ
+ヨシムラ,ヒロミ
+ヌマオ,ミネオ
+ヨシザキ,エイジ
+ナカムラ,ケンジ
+ユアサ,リョウタ
+ユゲ,タカヒロ
+ユカワ,ヨシタカ
+マツダ,ヨシツグ
+アベ,ヤスヒロ
+ハセガワ,カツマサ
+ハシモト,ヒトシ
+ヒラツカ,タモツ
+ホシカワ,ミノル
+ホソヤ,ショウジ
+イシハラ,タカシ
+イワキ,タチハル
+カネダ,コウジ
+キムラ,タケシ
+コンノ,マコト
+マツダ,ヨシヒサ
+ミヤシタ,シゲトモ
+サカモト,マリ
+ノムラ,シンイチ
+オオバヤシ,エツコ
+サイトウ,ユキエ
+ササガワ,ユウコ
+サトウ,ヤヨイ
+シガ,マサミツ
+シノハラ,マサシ
+ショウ,メグミ
+タケガワ,ミエコ
+タツミ,ユタカ
+トミエ,ノリヒコ
+ワタナベ,マモル
+ヤマダ,ユウイチ
+ヤマダ,トミヒロ
+ヤマモト,タケシ
+ヤマザキ,マサオ
+コマツザキ,チアキ
+フチダ,マサヒコ
+タナカ,カズユキ
+ハヤシ,サホリ
+ナガタ,セイイチ
+ババ,マコト
+アカマ,タカシ
+カザマ,カズシゲ
+モリ,ヒロアキ
+イケダ,ツヨシ
+ワタナベ,カツト
+ミマ,フミオ
+アンドウ,トモヒロ
+マエゾノ,ミツヒロ
+オタカ,コウイチ
+ハヤシ,マサヒロ
+ウエノ,カズタカ
+ツノダ,ケイイチ
+スドウ,タカトシ
+サカモト,ミツアキ
+タナカ,モリシゲ
+コトウダ,ユキノリ
+カルベ,フミヒロ
+サイトウ,テルヨシ
+ヒラノ,ヒロコ
+サトウ,ヒロマサ
+ナカヤマ,ケンイチ
+ノダ,ユリコ
+マ,ヤスヒロ
+シナガワ,チカラ
+ナガヤス,コウジ
+アオキ,コウジ
+ナカタ,ハヤト
+ミクリヤ,テルユキ
+マルヤマ,ヒデトシ
+エチゼン,ヒサシ
+ナカニシ,ショウイチ
+ハギオ,トモヒコ
+タムラ,マサアキ
+タグチ,ヨシトシ
+オザワ,オサム
+ヤオイタ,トシヒロ
+アサノ,ノリヤス
+クサノ,テルヒロ
+ハマダ,マサジ
+イリヤマ,ハナコ
+ムラタ,ナオヤ
+アサノ,ヨウジ
+タカノ,ケンイチ
+ヤマグチ,アキトシ
+ムラカミ,ノリヒロ
+タナカ,カツジ
+タカオカ,ジュンイチ
+スズキ,ミサホ
+ミネギシ,ナオヤ
+アベ,ノリアキ
+アベ,ミズホ
+アベ,シュンジ
+アベ,ヒデキ
+アガツマ,アキラ
+アイザワ,タカシ
+アカイケ,ジュンコ
+アキモト,ヨシノブ
+アキタヤ,ユキオ
+アキヤマ,トシユキ
+アクツ,シゲキ
+アマノ,タダカツ
+アマノ,アツノリ
+アマノ,フミエ
+アメミヤ,カズミ
+アンドウ,マサヒロ
+アンドウ,テンセイ
+アンザイ,ユウジ
+アオキ,リツコ
+アオキ,タカユキ
+アオキ,サダハル
+アライ,ハルヒト
+アラキ,ヨウイチ
+アラキ,シゲミツ
+アラヤ,ヨシタカ
+アリヨシ,トモノブ
+アサヒナ,ヨウイチ
+アサイ,ナリト
+アサミ,ヒロユキ
+アサツケ,カズユキ
+アソ,クニカズ
+アズマ,マコト
+アズマ,サトコ
+ババ,スミコ
+ババ,トモコ
+カガ,ヨシキ
+ババ,ユウスケ
+バン,ユカ
+ビルカワ,レイコ
+ボウ,フクオ
+ダイゴ,シュンスケ
+ダイゴク,ジュンイチ
+ドバシ,トオル
+エビサワ,ヒロシ
+エハラ,ヒロトシ
+フチガミ,リュウタロウ
+フジバヤシ,ヒロシ
+フジエダ,リョウイチ
+フジイ,セイゴ
+フジイ,シンジ
+フジイ,ヨシノリ
+フジイ,マサヤ
+フジイ,ヒデアキ
+サカモト,シュウヘイ
+キタダ,エイイチ
+フジイ,カオル
+フジイ,シンイチ
+フジイ,タツヤ
+フジカワ,カズヒコ
+フジモリ,キョウコ
+フジモト,ヒロシ
+フジノ,セイジ
+フジサワ,ヒロタカ
+フジタ,トシヤ
+フジタ,ヒロシ
+フジタ,ケイジ
+クスモト,ヒロフミ
+フジワラ,ヒロシ
+フジワラ,ケイ
+フジワラ,マコト
+フジワラ,ヒロム
+フジワラ,トシキ
+フカボリ,ヒデオ
+フカミ,サナエ
+フカミ,ヒサコ
+フクダ,ユウコ
+フクダ,サトミ
+フクダ,ジュン
+フクダ,ユカ
+フクイ,ノリチカ
+フクイ,トモジ
+フクナガ,ケンジ
+フクナガ,マサヤス
+フクオカ,ミノル
+フクオカ,イサオ
+フクシ,ヤスノリ
+フクシマ,トシユキ
+フクトメ,セイジ
+フクヤマ,カツヒト
+フナバシ,トオル
+フルノ,アキラ
+フルヤ,トシユキ
+フルヤ,ヒロユキ
+フルヤマ,ミノル
+フタバ,ユミコ
+アナミ,ヒサノリ
+フタミ,フジオ
+フタムラ,トモコ
+ガド,ヒサシ
+ゴウ,リョウコ
+ゴウダ,シン
+ゴカ,タツヤ
+ゴトウ,トシタカ
+ゴトウ,シノブ
+ハブ,ショウジ
+ハガ,アツシ
+ハギ,ケンジ
+ハマ,タダヒロ
+ハマダ,マサル
+ハマノ,オサム
+ハマノ,タツヤ
+ハマシマ,ユミ
+ハマシマ,サダミツ
+ハナイ,テツオ
+ハラ,タツキ
+オタ,コウイチ
+ハラダ,ナオキ
+ハラコ,タツヒロ
+ハセ,ユタカ
+ハセガワ,ヒロシ
+ハセガワ,ショウジ
+ハシモト,サトシ
+ハシモト,セツオ
+ハシモト,アケミ
+ハシズメ,マサキ
+ハシズメ,ナオキ
+ハタ,シンイチ
+ハタ,ヨシヒコ
+ハタ,タケヒコ
+ハタノ,キョウコ
+ハタノ,ヤスユキ
+ハタノ,ヨシヒロ
+ツダ,ヒロコ
+ハヤカワ,ヨシノリ
+ハヤノ,カナコ
+ハヤシ,サオリ
+ハヤシ,ススム
+ハヤシ,ノブユキ
+ハヤシ,ヒロユキ
+ハヤシ,トシロウ
+ハヤシタニ,アキラ
+ヒガシノ,キミタケ
+ヒグチ,カズヒコ
+ヒグチ,シンイチロウ
+ヒメノ,ヤスシ
+ヒラバヤシ,ユウコ
+ヒライ,ユウイチ
+ヒラカワ,ヒロシ
+ヒラキ,ヒロシ
+ヒラノ,セイリョウ
+アオキ,ミチコ
+ヒラオカ,マサヤ
+ヒラサカ,ヒロユキ
+ヒラヤマ,ヨシノリ
+ヒロハタ,ユウイチロ
+マエカワ,ヤスヒロ
+ヒロセ,マナブ
+ヒロセ,ヒロヨシ
+ヒロタ,マサノブ
+ヒロワタリ,タカヒロ
+ヒロミツ,ヒロシ
+ヒウラ,マモル
+ホボ,タイスケ
+ホクラ,マコト
+ホンダ,イサオ
+ホンダ,ヨウコ
+スズキ,ヒデキ
+ホンゴウ,カズタカ
+ホリグチ,キイチロウ
+ホリイ,キニチ
+ホリカワ,テルオ
+ホシノ,ヤスヒロ
+ホソカワ,ヒデユキ
+ホソミ,ヒロアキ
+ホッタ,カズアキ
+イブカ,ノブミチ
+イブキ,ヒデユキ
+イチカワ,ヒロシ
+イチムラ,キミエ
+イダ,カナメ
+イダ,チハル
+イデ,ヤスヒデ
+イデ,キヨタカ
+イデ,ナオユキ
+イデタ,タカシ
+イガラシ,ケイコ
+イガラシ,ユキヤ
+イゲ,サツキ
+イイダ,ショウゾウ
+イイダ,タカユキ
+イイダ,タマミ
+イイダ,ヨシヒサ
+イイハラ,ヒロシ
+イイジマ,タケシ
+イケダ,カツヤ
+イケダ,マサアキ
+イコマ,ノブマサ
+イマイ,キヨヒト
+イマイ,マコト
+タナカ,キョウコ
+イマムラ,コウイチ
+イマナリ,タツヤ
+イマゼキ,ジュンジ
+イナダ,マユミ
+イナマス,ヒロシ
+イノウエ,ヒロユキ
+イデ,マサヒロ
+イレイ,マサル
+イシハラ,ミツミ
+イシハラ,ミユキ
+イシハラ,ナオキ
+イシハラ,ススム
+イシハラ,ジュンイチ
+イシイ,タカユキ
+イシイ,トモユキ
+イシカワ,ユウジ
+イシカワ,ナオフミ
+イシムラ,ヒロユキ
+イシワタリ,マスミ
+イシザキ,ノリヨシ
+イシズカ,ナオトク
+イソノ,ミツトシ
+イソヤマ,ミツノブ
+イスダ,シゲオ
+イタクラ,マサヒロ
+イトウ,マサヒロ
+イトウ,ヒロフミ
+イトウ,ヨシマサ
+イトウ,ハルオ
+マツイ,タケヒコ
+イトウ,タケヒコ
+イトウ,マサチカ
+イトウ,マサヒコ
+イワカミ,ツトム
+イワサ,トシミ
+イワサキ,ユウジ
+イワサキ,ナオユキ
+イワシタ,ミチタカ
+イズミ,トオル
+イトウ,アツシ
+イズミ,トヘイ
+イズミサワ,セイジ
+ジンノ,ヤスシ
+ミド,リュウジ
+カガ,アケミ
+カガミ,フサオ
+カゲヤマ,ヒサナガ
+カイ,ヒトシ
+カイダ,コウジ
+カイズ,タケヒト
+カジタ,ジ
+カケヒ,アケミ
+カキモト,トモヒロ
+カキヌマ,サチコ
+カキヌマ,シズカ
+カマタ,トシエ
+カマタ,ケンイチ
+カミグチ,ミエコ
+カミムラ,ヨシオ
+カネコ,マサノリ
+カナマル,ジ
+カナザワ,マモル
+カンベ,タカヒロ
+カンダ,コウゾウ
+カネハラ,ケン
+ゴトウ,シゲカズ
+カネコ,タケシ
+カネコ,ヤスナオ
+カネコ,アキラ
+カネコ,ヒデトシ
+カネコ,ヒロフミ
+カネミツ,ヒロミツ
+カネムラ,カズオ
+カネタ,コウイチ
+タナカ,マサヨシ
+ヨネモチ,ナオシ
+カンノ,ヤスマサ
+カサイ,ユカリ
+カシマ,コウジロウ
+タカギ,ヒデキ
+キタムラ,マサミ
+カタオカ,ヤスユキ
+カタオカ,カズヒコ
+カタオカ,シゲユキ
+カタセ,ヤスナリ
+カタヤマ,ミチコ
+カタヤマ,ナオユキ
+カタヤマ,ユウコ
+カタヤマ,キョウコ
+カトウ,ヤスヒロ
+カトウ,ヒロアキ
+カトウ,シンイチ
+カトウ,ツトム
+カトウ,ヒロユキ
+カトウ,トシヒロ
+カトウ,ヨシミ
+カトウ,ユウジ
+カトウ,ツトム
+ソメヤ,ジュンコ
+カワバタ,マコト
+カワグチ,マサイチ
+カワグチ,シンヤ
+タマガワ,コウイチロウ
+カワハラ,ヒサシ
+カワハラ,ジュンジ
+カワヒト,カツヒサ
+カワイ,ノリヒサ
+カワイ,ノリコ
+ハギワラ,シゲキ
+ナルケ,タカシ
+カワサキ,ヨシヒロ
+カワシマ,ユカリ
+カワシマ,ユキコ
+カワタ,ユタカ
+カヤマ,ヒロカズ
+カザマツリ,ヒロコ
+キド,タカフミ
+キガミ,マナブ
+キゴシ,ヒサヤ
+モリサワ,キヨシ
+キクチ,ミツグ
+キクチ,キイチ
+キクチ,ノリオ
+キクラ,カツミ
+キムラ,ツネオ
+キムラ,ヒロキ
+キムラ,アケミ
+キムラ,トモヒサ
+キムラ,カツノリ
+キムラ,ケイイチ
+キムラ,マサキ
+キムラ,マサユキ
+キムラ,ケンイチ
+キムラ,ノリコ
+キムラ,シンキチ
+キノシタ,タイコ
+キノシタ,トシヒコ
+キノシタ,ヤスヒロ
+キシベ,ヒロキ
+キシダ,ヨシノリ
+キシモト,タケシ
+キシモト,タツヤ
+キタ,タカミチ
+キタアキ,ヒロユキ
+キタダ,ヒロユキ
+キタガワ,トシユキ
+キタホリ,ヒロユキ
+キタジマ,タツヤ
+キタムラ,ヒロシ
+コバヤシ,シゲヨシ
+コバヤシ,カズヒロ
+コバヤシ,チフユ
+コバヤシ,ヤスユキ
+シライ,ダイスケ
+コバヤシ,ヒロユキ
+コバヤシ,シンイチ
+コバヤシ,トシヤ
+コバヤシ,トシキ
+コバヤシ,ナオフミ
+コダマ,ヒロユキ
+コギタ,ケイイチ
+コグレ,ヨシカズ
+コハシ,ノリシゲ
+コゴ,タカヒデ
+コンノ,ヨウ
+コンノ,キンヤ
+コンノ,ヤスヒロ
+コンノス,ヒロカズ
+コイデ,コウジ
+コマツバラ,ヒデトシ
+コミヤ,オサム
+コミヤマ,ヨシヒロ
+コモダ,タカシ
+コンド,カズマサ
+コンド,マサト
+コンド,ヒトシ
+コンド,カツヤ
+コンド,カズトシ
+コニシ,アキノリ
+コサ,マサト
+コスギ,ケンイチロ
+コタキ,マサユキ
+コタニ,ケイイチ
+コヤマ,ミキ
+コヤマ,ヒロミ
+コヤマ,カツヒコ
+コザワ,マサノリ
+コズル,ヨシアキ
+クボタ,ヒロシ
+クボタ,ジュンコ
+クボヤ,トモコ
+クドウ,ジュン
+セノオ,ヒトシ
+クマガイ,カズノリ
+クラドミ,キヨフミ
+クラモト,ノリユキ
+クラトミ,ケイスケ
+クリノ,ヤスヒロ
+クリヤ,ユウイチ
+クロダ,ヒロシ
+クロカワ,ミツアキ
+クサカワ,ノブミツ
+クサノ,サトシ
+クワバラ,トシヒロ
+クワノ,ヤスヒロ
+ヨシダ,サトル
+クズノ,ヒロカズ
+マチダ,ヒロシ
+マエダ,ケンイチ
+マエカワ,ミネカズ
+オオタニ,タダシゲ
+マキ,タクヤ
+マキノ,トシオ
+マルオカ,ヤスヒロ
+マルヤマ,ジュンコウ
+マルヤマ,ノリヒロ
+マルヤマ,ミノル
+マサイ,シンゴ
+マサキ,ヒデヨ
+マセ,タカシ
+マスダ,ユタカ
+マトバ,タカトシ
+マトバ,クニヒコ
+マツバラ,タカアキ
+マツイ,ヒサシ
+マツイ,ヤスヒロ
+マツカワ,セイイチ
+マツモリ,ショウゾ
+マツモト,タカシ
+マツモト,マサヨシ
+マツモト,シゲル
+マツモト,ジュンコ
+マツモト,タケシ
+マツモト,トオル
+マツモト,サダオ
+マツオ,カズヨシ
+マツオカ,タケトシ
+マツシマ,タカヒロ
+ナカニワ,トシロウ
+マツヤマ,ジュン
+マツヤマ,ジュンジ
+マツザワ,ヒデヨ
+ミムラ,シュンイチ
+ミニュウ,コウイチ
+ミタ,マナブ
+ミタ,ヒロカズ
+ミタムラ,ジュン
+ミツダ,オサム
+ミツダ,ジュンイチ
+ミツマタ,ヨシノリ
+ミツオカ,アヤコ
+ミウラ,キョウコ
+ミウラ,ミドリ
+ミワタ,ナオキ
+ナガセ,タカシ
+ミヤケ,アキオ
+ミヤケ,ユカリ
+ミヤマ,セイジ
+ミヤモト,テツオ
+ミヤモト,ヒトミ
+ミヤナガ,マサカツ
+ミヤザキ,モトフミ
+ミズバ,ヒロシ
+ミズヌマ,カツミ
+ミズサキ,ミワ
+ミズタ,ノリアキ
+モチズキ,シュウイチ
+モチズキ,アツキ
+モチズキ,チカラ
+モギ,ヒロシ
+モモセ,ツヨシ
+ヒラノ,アキヒデ
+モリ,ユウキ
+モリ,マサユキ
+モリ,マサユキ
+モリ,シゲオ
+モリカワ,シンジ
+ヤギシタ,イサオ
+モリモト,コウイチロウ
+モリモト,コウジ
+マツダ,ケンジ
+モリオカ,アキヒコ
+モリシタ,リエ
+モリタ,クニヒロ
+モリタ,キヨエイ
+カネコ,カズアキ
+モリタ,マサユキ
+モリワキ,ノブユキ
+モロドミ,ヨウイチ
+モトハシ,ヨシヒデ
+モトジマ,テツオ
+モトキ,ケイコ
+モリ,ミワ
+ウスイ,カオル
+ムラカミ,タケオ
+ムラカミ,ダイセイ
+ムラカミ,ヒデシ
+ムラカミ,ヒトシ
+ムラタ,ヨシオ
+ムラタ,キヨヒコ
+ムラヤマ,サトシ
+ムトウ,ヨシヒロ
+ナダグチ,スミト
+ナガハシ,イサオ
+ナガイ,マサヒロ
+ナガムラ,マコト
+ナガオ,マサミ
+ナガシマ,ミチノリ
+ナガシマ,ミヨコ
+ナガタ,ナオリ
+ナガタ,ノボル
+ナガツカ,ノリユキ
+ナガヤマ,サナエ
+ウチダ,タカヒデ
+ウチゾノ,タカシ
+ナカダ,トシヤ
+ナカガワ,ヤスヒロ
+ナカガワ,ユキヒロ
+ナカガワ,チハル
+ナカガワ,ナオユキ
+ナカジマ,コウイチロウ
+ナカジマ,ヒロアキ
+ナカジマ,キョウコ
+ナカミチ,リュウイチ
+ナカモト,ヤストモ
+ナカモト,ヒロシ
+ナカムラ,ヒロシ
+ナカムラ,ユミコ
+ナカムラ,ヒロシ
+アキヤマ,タカジ
+ナカムラ,ヒデト
+ナカムラ,ツトム
+ナカムラ,タカコ
+ナカムラ,ユキコ
+ナカムラ,ヨシヒコ
+ナカムラ,セイジ
+ナカムラ,ユウイチ
+ナカムラ,ヒロミ
+ナカムラ,サトシ
+ナカノ,タカシ
+ナカノ,ケイジ
+ナカシマ,ノリオ
+ナカツボ,マサヒコ
+ナカツカ,テツロウ
+ナカヤマ,マコト
+ナカヤマ,マサヒコ
+ナカザワ,オサム
+ナオツカ,アキコ
+ナラハラ,サトシ
+ナルシマ,マサコ
+ナトリ,ヒロタカ
+ニイジマ,ユカ
+ニイヤ,リカ
+ニシ,トシヒサ
+ニシ,マサヒロ
+ニシブ,アヤコ
+ニシダ,タツヤ
+ニシハラ,タカアキ
+ニシカワ,マサコ
+タナカ,イサオ
+ニシカワ,マサト
+ニシモト,ヒデアキ
+ニシモト,ナオコ
+ニシムラ,タカシ
+ニシムラ,コウゾウ
+ニシノ,ケンジ
+ニシノ,シンヤ
+ニシオカ,マサノブ
+ニシザキ,ケンジ
+ニシザワ,ダイスケ
+ニワ,モリヨシ
+ノブ,ミノル
+ノガイト,ノブユキ
+ノグチ,ヨウコ
+ノジ,ヒロユキ
+ノジマ,ノリオ
+ノムラ,アキコ
+ノムラ,シンイチ
+ノナカ,ユキノリ
+ナカジマ,チフユ
+ノザキ,ミキオ
+ノザキ,ヨシユキ
+ヌワ,タケシ
+オチ,タカシ
+オチアイ,トシユキ
+オダ,アツシ
+オガサワラ,ヨシユキ
+オガサワラ,トミオ
+オガタ,カズハル
+オガワ,ケンイチ
+オギハラ,ヒロキ
+オオハラ,カツミ
+オオバ,ユミコ
+オオバ,エイジ
+マツダ,シゲユキ
+オオエ,ユウジ
+オオガキ,カズヒロ
+ショウジマ,トシヒデ
+オハマ,ヒロユキ
+オオハシ,ケイコ
+オギノ,シゲキ
+オオカワ,コウイチ
+オオカワラ,マナブ
+オキ,マサヒコ
+ネモト,ジュン
+オオクボ,ノブユキ
+オオクラ,トモヒコ
+オマ,トモヒサ
+オオミカ,テツシ
+オオモリ,ヒデミ
+オオモリ,ヒロアキ
+ワタナベ,カズアキ
+オオニシ,ミツル
+オオニシ,マサヒデ
+オノ,サナエ
+オノ,ジュンコ
+オオヌマ,マサオ
+オシマ,タカユキ
+オシマ,マサシ
+オオタ,マサユキ
+オオタ,モトイ
+オオタ,カオル
+オオタカ,トシアキ
+オオタケ,サエコ
+オオタケ,ヒデフミ
+オオタニ,クニオ
+オオツボ,アツユキ
+オオツカ,テツオ
+オオツカ,トシヒコ
+オオツキ,イズミ
+サコダ,シュウイチ
+オオワ,サトシ
+オオヤ,ジュンセイ
+オイカワ,マサキ
+オカベ,マナブ
+コバヤシ,ソウ
+オカダ,ヤスミツ
+オカダ,テツジ
+オカダ,テツヤ
+オカモト,ヒデアキ
+オカモト,ヒデノブ
+メラ,ヒロユキ
+オカノ,カズノリ
+オカザキ,カズユキ
+オキタ,サトコ
+オクダ,エイイチロウ
+オクヌキ,マサカズ
+オンダ,チズコ
+オンダ,ヒラタカ
+ウツミ,マサヒロ
+オオノ,タカシ
+オオノ,ユキヒロ
+カワモト,ヒデユキ
+カド,クニヒロ
+オシマ,シロウ
+オオスミ,アキラ
+オオタ,カズユキ
+オリイ,シュンジ
+オリタ,シュウイチ
+オオサカ,トヨヒデ
+オソノイ,ユキオ
+オザサ,ユキノブ
+オザワ,タツジ
+オザワ,ナオノリ
+オザワ,ヤスヒロ
+シラトリ,ジュン
+オゾネ,アキオ
+サノ,ヒロヒサ
+サイトウ,マサミ
+サイトウ,ナオキ
+サイトウ,ミエコ
+サイトウ,ケイジ
+サイトウ,チカコ
+サカイ,ヒロミ
+サカイ,ケンジ
+サカイ,マコト
+サカキバラ,ミツアキ
+サカモト,レイコ
+サカモト,ヨシオ
+サカモト,トモコ
+サカモト,ジュンペイ
+サカモト,カオル
+サカムラ,ケンジ
+サカネ,コウジ
+サカタ,マサヒコ
+サカタ,マサヒロ
+アクタガワ,マサヒロ
+サクライ,マサト
+サクライ,ルリコ
+マツバラ,リョウコ
+サクライ,サトル
+サナギ,ヨシキ
+サノ,ユキコ
+オオガキ,チヒロ
+ササキ,フミヒロ
+ササキ,トオル
+ササキ,ヒデユキ
+ササキ,イクフミ
+ササキ,ナガマサ
+ササキ,トモコ
+サタケ,タカユキ
+コダマ,マサヒロ
+サトウ,トオル
+サトウ,フジオ
+サトウ,ヒデハル
+サトウ,マモル
+サトウ,マユミ
+サトウ,シロウ
+サトウ,ケンジ
+サトウ,ヒデノリ
+サトウ,ケイイチ
+サトウ,アキヒロ
+サトウ,ヒデキ
+サカイ,ケンジ
+サワダ,コウタロウ
+セガワ,サトル
+セイノ,ショウジ
+セキ,ツトム
+セキド,シンジ
+セキノ,ノリヒロ
+セオ,タカユキ
+セリカワ,オサム
+シバサキ,ヒロノリ
+シガ,カナミ
+シゲル,ヨシコ
+シマダ,アツシ
+シマダ,ミツエ
+シマダ,マコト
+シマダ,カオル
+シマモト,ミツヤス
+シマムラ,タツヤ
+シマノ,タカシ
+シミズ,タカアキ
+シミズ,トシヒロ
+シミズ,タダシ
+シミズ,ツトム
+シミズ,コウジロウ
+シミズ,サトル
+シミズ,ミズキ
+シモダ,ヒロユキ
+シモガキ,ケンヤ
+シモハタ,ヒロユキ
+シモムラ,ノブヒロ
+シモオカ,トシアキ
+シムラ,ショウイチ
+ヤエガシ,アツコ
+シノザキ,アツシ
+ハギワラ,ヒデオ
+シオダ,マサヒト
+シオタ,ヒサヨシ
+シオザワ,ケンイチ
+シライ,タケシ
+シライシ,トモヒサ
+ショウダ,ケンジ
+シュウ,トモコ
+ソメヤ,マサシ
+スダ,クミコ
+スエ,ヒデオ
+スエタ,ヒデオ
+シブイチ,ヒデユキ
+スガノ,ヒロユキ
+スガワラ,ヒサタカ
+スギエ,カツトシ
+スギマサ,ケイタ
+スギモリ,ノブユキ
+スギモト,トオル
+スギサキ,ヨウコ
+スギウラ,ユキオ
+スギウラ,ジュンイチ
+ミズオチ,タカシ
+スギヤマ,マサヤ
+スギヤマ,マナブ
+スギヤマ,ケン
+スギヤマ,タケシ
+スミ,マサモト
+タベイ,ヨシノリ
+スナミ,ヒロコ
+スサワ,オサム
+スズキ,アキコ
+スズキ,エイジ
+スズキ,ヒデユキ
+スズキ,ヒロアキ
+スズキ,カナコ
+スズキ,カナコ
+スズキ,カズヨシ
+スズキ,ケンタ
+スズキ,コウジ
+スズキ,マサノリ
+スズキ,ナリマサ
+タベ,リュウイチロウ
+タチハラ,タカシ
+タゲ,トシキ
+タグチ,ワタル
+ナカタ,ワタル
+タグチ,シン
+タジマ,アキラ
+タジマ,マコト
+タカダ,コウイチ
+タカギワ,ミツヒロ
+タカハシ,カズヨシ
+タカハシ,ヒロヤス
+タカハシ,カズノリ
+タカハシ,ミツトシ
+タカクラ,コウジ
+タカクラ,ヤスマサ
+タカハシ,ヤヒロ
+タカハシ,アキフミ
+タカハシ,オサム
+タカハシ,ユウジ
+タカハシ,ヒロユキ
+タカハシ,ツカサ
+タカハシ,シンイチ
+タカハシ,ユウコ
+タカハシ,マコト
+タカハシ,ヒデキ
+タカクラ,ツトム
+タカミヤ,タマミ
+タカサゴ,クニヒコ
+タカサキ,マサト
+タカセ,マサヒト
+タカツカ,シンイチ
+タカヤナギ,シゲル
+タカヤナギ,ヤエキチ
+タケチ,ヒデアキ
+タケダ,ヒロシ
+タケダ,イツヒト
+タケガミ,カツミ
+タケヒサ,マコト
+タケイ,ノブオ
+タケイ,タダユキ
+タケカワ,タケヒコ
+タケムラ,トシヒデ
+タケナカ,トシヒロ
+イマイ,ヨウイチ
+タケサコ,ヨウイチ
+タケシマ,カツシロウ
+タケウチ,ヒロトシ
+ヒダカ,トオル
+タキモト,ミドリ
+タキザワ,キクミ
+タマイ,マサル
+タムラ,ショウイチ
+タナベ,エイジ
+タナベ,ヨウヘイ
+タナカ,アキト
+タナカ,イサム
+タナカ,ミドリ
+タナカ,ヨシナリ
+タナカ,ヤスジ
+タナカ,タカシ
+タナカ,アリヒト
+タナカ,シンゴ
+タナカ,シュウイチ
+タナカ,ヒロユキ
+タナカ,タカシ
+サノ,ヒロフミ
+タニ,エイイチロウ
+タニムラ,ヨシフミ
+タニヤマ,ダイスケ
+タサカ,ヤスマサ
+カトウ,エイジ
+テラダ,ヨシユキ
+テラマエ,マキ
+テラニシ,ノブユキ
+テラニシ,ヒロミツ
+テラゾノ,カオリ
+トビタ,マサミ
+イズミサワ,ヒデキ
+トダ,サトシ
+トグチ,タケシ
+トマツ,トモアキ
+アキムラ,ノブユキ
+トキタケ,タケシ
+トクマス,アキヒロ
+トクタケ,アキヒコ
+トマキ,カズヤ
+トミイ,マサヒロ
+トミタ,キミオ
+トミヤマ,マサト
+トモダ,クミコ
+トモナガ,マサノリ
+トサカ,ナオト
+トットリ,アキヒコ
+マツオ,ヨシユキ
+トヨダ,ヨシユキ
+ツボイ,アキラ
+カトウ,トシヒロ
+ツチヤ,カズシ
+ツダ,シンゴ
+ツジ,マサヒコ
+ツジ,ヨウイチ
+ツジノ,ヨウスケ
+ツカコシ,アキラ
+ツカモト,シゲヒロ
+ツカザキ,フミヒロ
+ツキアシ,アキラ
+ツキザワ,コウジ
+ツミタ,エイイチ
+エンド,タダヒコ
+ツト,トシヒロ
+ツムラ,ヨシオ
+ツネカワ,ソノスケ
+ツルオカ,ヨシヒコ
+ツルタ,ノリコ
+ツルタ,モトユキ
+ツルタ,タツユキ
+ツツミ,シュンヤ
+ツツミ,カツミ
+ツワコ,ユカ
+ツヤマ,キヨフサ
+ウチダ,ショウコ
+ウチダ,マサヒロ
+ウチダ,セツコ
+ウチヤマ,シンゴ
+ウチヤマ,ヒデオ
+ウド,キヨミ
+ウエダ,ハルキ
+ウエダ,ヨウスケ
+マツムラ,ダイジロウ
+ウエダ,アケミ
+ウエダ,アキオ
+ウエマツ,ヒデオ
+ウエノ,ヒロミ
+ウエノ,ジュンジ
+イシダ,カズヒコ
+ウメダ,コウセイ
+ウメガキ,クニコ
+ウノ,マモル
+ウラハシ,
+シミズ,サトシ
+エガシラ,タダシ
+スエカネ,テルユキ
+ウツ,トオル
+ウツハシ,トシヒロ
+ウツミ,ケイイチ
+ワダ,ツネフミ
+ワダ,タツミ
+キタワキ,セイキ
+ワシズ,ハルナガ
+ワタベ,フミヨ
+ワタナベ,ヒロシ
+ワタナベ,マサヤ
+ワタナベ,サトミ
+ワタナベ,シンイチ
+ワタナベ,タカシ
+ワタナベ,ツトム
+ワタナベ,ヨシアキ
+ワタナベ,ツネオ
+ワタナベ,マサヨ
+ワタナベ,エイジ
+ワタナベ,ヒロコ
+ワタナベ,ヒロユキ
+ワタナベ,カツシ
+ワタナベ,ユウジロウ
+ワタナベ,ヤスオ
+エハラ,アツシ
+ワタナベ,ヒデアキ
+ワタライ,ジロウ
+ヤエガシ,オサム
+ヤハギ,シノブ
+ヤマダ,シュウイチ
+ヤマダ,タケシ
+ヤマダ,ヨウジ
+コンド,トシヤ
+ヤマダ,アツシ
+ヤマダ,オサム
+ヤマダ,ミキ
+ヤマダ,アキヒロ
+エノモト,ヒロシ
+サイトウ,ヒロユキ
+ヤマグチ,キンヤ
+フジタ,マサトシ
+ヤマグチ,サトコ
+ヤマグチ,ヤスヒロ
+エザキ,ヒトシ
+ヤマグチ,サトル
+ヤマモト,サトシ
+ヤマモト,トオル
+ヤマモト,ヤスシ
+ヤマモト,タケシ
+ヤマモト,コウイチ
+ヤマモト,コウキ
+ヤマモト,トシユキ
+ヤマモト,マサル
+ヤマナカ,ヒロシ
+ヤマネ,ミチル
+ヤマノクチ,サトシ
+ヤマサキ,タカシ
+ヤマシタ,マサカズ
+ヤマシタ,ヒロキ
+ヤマシタ,ケイイチロウ
+ヤマシタ,コウキ
+ヤマシタ,シゲミ
+シサイ,マサユキ
+ヤマシタ,トシヒロ
+ヤマウチ,トシユキ
+ヤマウチ,マコト
+ヤマザキ,ヒデオ
+ヤマザキ,タダシ
+ヤマザキ,ムツミ
+ヤナギモト,タケシ
+ヤノ,リョウジ
+ヤノ,ヒロキ
+ヤシロ,ヤスシ
+ヤザワ,マコト
+ヨダ,シュンスケ
+ヨギ,フミユキ
+ヨコイ,コウジ
+ヨコヤマ,ケンショウ
+ヨネザキ,フトシ
+ヨシダ,ジュン
+ヨシダ,リエコ
+ヨシダ,カズヨシ
+ヨシダ,ジュンコ
+エビナ,セイイチ
+ヨシダ,タダシ
+ヨシダ,タツオ
+ヨシイケ,ヤスノリ
+ヨシムラ,ミツユキ
+ヨシムラ,サトル
+ヨシノ,シンイチ
+ヨシオ,ノボル
+ヨシタケ,シゲヨシ
+ユアサ,テツジ
+オオワダ,ショウジ
+エグチ,サトル
+オザワ,カツユキ
+サトウ,ミツアキ
+シンタニ,タケミ
+スギタニ,ヨシヒコ
+タカハシ,イズミ
+タキザワ,ナオキ
+ミヨダ,ケンジ
+ヤマダ,キヨシ
+ヤハギ,サトシ
+キヤ,タダシ
+ミセキ,ノリカズ
+エノモト,ケンタロウ
+サクラダ,マサキ
+ササキ,ノブユキ
+ババ,タケオ
+アボ,カオリ
+アダチ,コウヘイ
+アカサカ,マサヒロ
+アマサキ,ヒデト
+アオキ,カンジ
+アゼガミ,シゲカズ
+エドノ,フミヒロ
+ドイ,カズオ
+フジイ,トモヒト
+フジイ,サユリ
+フジモト,ヒロキ
+フジモト,タケシ
+フクハラ,ノブユキ
+フクオカ,テツヤ
+フクシマ,ケンイチ
+フサヤマ,コウイチ
+ゴトウ,ヨシヒロ
+ハマベ,エイジ
+ハナダ,ケイスケ
+ハシモト,ヨシヒロ
+ヒビ,サカエ
+ヒラツカ,カズユキ
+イカリ,タカユキ
+イクタ,アキヒコ
+イマイ,テツシ
+イシハラ,ヤスヒロ
+イソダ,コウイチ
+イソザキ,ヨシタカ
+ジングウ,ヨシアキ
+ナイ,ミノル
+ジョウニシ,オサミ
+カジハラ,ヨシアキ
+カマタ,タツヤ
+カメイ,アキラ
+カミヤマ,テツヤ
+カトウ,タツジ
+カトウ,トシユキ
+エミ,ヒデアキ
+カワモリ,マモル
+キムラ,ヨシヒロ
+キムラ,カズオ
+キシベ,クニヒコ
+キシカワ,カズヨシ
+キタガワ,シンイチ
+キタナカ,メグミ
+コバヤシ,マサユキ
+コバヤシ,ゲン
+コイケ,トウタ
+コイズミ,カズヤ
+コジマ,タカヒサ
+コニシ,キヨカズ
+コヤマ,タクヤ
+クドウ,カズヤ
+クマサキ,ヨシアキ
+クロダ,ヒロカズ
+クサカ,シンゴ
+エンド,ケンジ
+マエカワ,マサヒロ
+マルタ,ヒデキ
+マツシタ,シンゴ
+ミクニ,トミオ
+エンド,ヨシノリ
+ミネ,ヤスタカ
+ミウラ,シュウイチ
+ミゾグチ,ショウジ
+ホン,ヨシアキ
+ミズシマ,シゲル
+エダ,タカシ
+ナガオ,アツシ
+ナカムラ,トオル
+ナカニシ,ユウジ
+ナカノ,ヨウコ
+ナカオ,カツヤ
+ネモト,マサユキ
+ニシカワ,コウジ
+ニシワキ,ケンイチ
+ノダ,タカコ
+ノグチ,ミトシ
+オチアイ,コウジ
+オオハシ,ヤスヨシ
+オノ,タクジ
+エミ,ヒデオ
+オクムラ,マサヒロ
+オクノ,ヒデミツ
+エンド,ヨシタダ
+オオニシ,アキラ
+オザキ,クニハル
+サエキ,ノリユキ
+サガワ,ノボル
+サクマ,マサホ
+サトウ,シゲアキ
+サトウ,ミツヒロ
+サワ,キヨタカ
+セガワ,コウジ
+セキ,ユキオ
+センダ,ケンジ
+シブヤ,シュウイチ
+シミズ,ヨシハル
+シンデン,アキヨシ
+シオタ,ヒトシ
+シュクタニ,トシオ
+スヤマ,ヒロコ
+スズムラ,イサオ
+タカオカ,ヨシユキ
+タケウチ,カツノリ
+タケウチ,カズシ
+タマイ,マサヒロ
+タン,カズヒロ
+タナカ,ケンゴ
+エトウ,テルアキ
+タニヒラ,カズヒロ
+タニヤマ,キクオ
+タオカ,シゲキ
+タシマ,マサユキ
+タザワ,ミキオ
+トキタ,カツヨシ
+トミタ,シゲキ
+トミタ,ケンジ
+トミタ,アキオ
+ツジベ,ヒロコ
+ツジカワ,ケンイチ
+エンド,ジュンコ
+ミヤザキ,マキコ
+ワダ,ヨシタカ
+ワタナベ,ヒロミ
+ヤマダ,ナオヤ
+ヤマダ,タダシ
+ヤマダ,サヤカ
+ヤマグチ,ノリオ
+ヤマモト,タカコ
+ヤマオカ,カツノリ
+ヤマシタ,ノブオ
+ヤマシタ,カズヒサ
+ヤマゾエ,ヒロマサ
+ヤオ,ヤスハル
+ヤスダ,サトシ
+ヨツタニ,ヨシオ
+ヨシハラ,ヒデオ
+ヨコウラ,マサオ
+ヒラセ,シゲオ
+マツイ,イチタロウ
+コバヤシ,カズヒサ
+スズキ,タケシ
+カトウ,トシクニ
+クニトモ,ノブユキ
+エンド,ゴウ
+イトウ,サトル
+オカザキ,ヒデオ
+ヒロハシ,ヤスオ
+サカキ,ヨウコ
+ミキ,トキコ
+クマキ,マサオ
+タヤマ,テツオ
+オオワキ,キハチ
+ミョウドウ,マサト
+カトウ,ヒロヨシ
+ババ,ミキオ
+カネコ,ハルヒコ
+コグレ,ヒロアキ
+タケダ,ヨシノリ
+イチムラ,マモル
+イトウ,ノボル
+ウエハマ,ミノル
+ナカイ,コウジ
+コバヤシ,マサオ
+シマダ,マナオ
+メグロ,シゲル
+ヤマヤ,ヒロシ
+フジタ,ミツグ
+マトバ,チヒロ
+イトウ,モトカズ
+ナカイ,シズオ
+オカダ,マサヒト
+ノモト,トシキ
+ナガシマ,ヨウジ
+ヨネカワ,タモツ
+ワタナベ,トオル
+ムラマツ,トモチカ
+キタニ,ユウイチロ
+ミカミ,ヒロシ
+アダチ,ミツオ
+イノウエ,マサアキ
+オカダ,タカアキ
+カワシマ,テツオ
+セキ,アキラ
+タカハシ,ヨシジ
+ワタナベ,マサル
+クリハラ,チハル
+ワタナベ,ケイスケ
+フジカタ,ミツオ
+ヨシト,ノリオ
+カワセ,オサム
+タナカ,マコト
+イマイ,ケンジ
+コムロ,ユキトシ
+マエダ,エイゴ
+コイケ,オサム
+ワタナベ,ミチアキ
+コンド,ヒサトシ
+イシイ,ヒサヤ
+ミシマ,タカシ
+コバヤシ,ヨシカズ
+ヤマシタ,ケンジ
+タナカ,リョウゾウ
+ヤマダ,マサトシ
+カミヤ,ミチヤス
+ヤマモト,リキオ
+シオザキ,トオル
+ナカムラ,チカシ
+タケモト,サチオ
+ダケヤマ,ヒロユキ
+アラカワ,ゼンジ
+ヨコタ,マサユキ
+ナカムラ,カズヒコ
+アラカワ,トシオ
+オオミチ,マコト
+マツキ,エイキ
+クシビキ,スケヒデ
+ニッタ,テルヒコ
+ツボウチ,ミキオ
+サイトウ,ヒロユキ
+タケムラ,トシヒロ
+タナベ,カズオ
+マエダ,モトクニ
+スガハラ,テツオ
+カネコ,ショウジ
+ヤマウチ,マサヒコ
+カミザワ,ヒロフミ
+コガ,トクヒロ
+ツルサキ,スナオ
+ヒガシ,フミヒロ
+イシダ,ヤスヒロ
+ナカガワ,ハルオ
+テラシマ,ヒサハル
+キタムラ,シュンジ
+ハットリ,ヒデミ
+ササキ,ヨシヒロ
+ホカ,ケンタロウ
+ノムラ,テルオ
+ハヤノ,カズオ
+アンザイ,シンイチ
+フルノ,キヨヒデ
+ニシワキ,クニ
+ハセガワ,マサオ
+イワタ,タカユキ
+トダ,ヒロアキ
+ナカムラ,マサト
+フルイシ,マスミ
+ナカムラ,フジオ
+ナカガワ,ヒデオ
+ナカマ,タツヤ
+スガワラ,マスコ
+マツモト,ツトム
+ハシモト,ヨウタロウ
+ナカツ,ヤスカズ
+サトウリ,アキラ
+イキタ,ユキノブ
+キクチ,タケシ
+スト,マサミ
+シバタ,ヒサノリ
+ナイトウ,コウジ
+モリ,カズコ
+イトイ,アキラ
+イトウ,ケンジ
+マツザキ,マサノリ
+ウエノ,ミツノリ
+カタオカ,キヨカズ
+バンドウ,タツオ
+サイトウ,ジュンジ
+イワイ,シゲル
+シモヤマ,ミノル
+アカマル,オサム
+ゴトウ,ハジメ
+マツダ,ススム
+ネガミ,トシオ
+ヤマシタ,マサオミ
+ヨネヤマ,リュウヘイ
+イシヤマ,ヒサオ
+アベカワ,レイジ
+イマムラ,シゲル
+イワナガ,ミノル
+ウエダ,クニヒコ
+フジカワ,ユキオ
+タムラ,ヨシヒサ
+カシイ,マサト
+ヨネダ,マサオ
+ヨコツ,アキオ
+アサオ,ユウジ
+タナカ,ケイジ
+タナカ,タダミ
+ヤシキ,ヤスユキ
+カイガイ,タケシ
+ソガベ,ユキオ
+フルカワ,ケンジ
+カワウチ,ユウイチ
+フジイ,ノリユキ
+イケノヤ,タツオ
+オチ,ノリオ
+ナカモト,ナオハル
+ワカバヤシ,ハレオ
+アラキ,フミオ
+ヤベ,ヒデオ
+タカハシ,ヤスヒロ
+シバノ,ミツオ
+タガシラ,トシオ
+スミタ,テツヤ
+サトウ,コウジロウ
+チノ,シゲト
+ヤマダ,ヤスヒロ
+イガラシ,ノリヨシ
+イケガミ,ケンイチ
+フナダ,タカユキ
+イノウエ,タカヨシ
+ニシヤマ,ヒロシ
+イシハラ,トシタカ
+スズキ,タイチ
+コモリヤ,カズオ
+チュウゴ,ヒロシ
+コバヤシ,オサム
+ミヤモト,ツトム
+ナカタ,タカユキ
+イリタニ,タクオ
+オガワ,ユキチ
+オネ,ケンジ
+コマツ,マサアキ
+ミノワ,ヒロシ
+フジカワ,ナオト
+カワグチ,ヤスヒロ
+チバ,トシヒコ
+ナカニシ,サダオ
+サクマ,ヒトシ
+タケマサ,トシユキ
+セキ,ヨウイチ
+サイトウ,フミオ
+フジモト,ヤスオ
+オグリ,タツジ
+イシバシ,キヨシ
+アザミ,シゲル
+オガサワラ,ナオイチ
+サイトウ,ヒロシ
+タナベ,ケンジ
+モリヤマ,シュウヘイ
+キタザワ,ヒデトシ
+カナザワ,カツオ
+ハラダ,マサト
+オクヤマ,サトシ
+シミズ,セイジ
+イノマタ,ユキオ
+フルサワ,セイキ
+タケウチ,シロウ
+オオノ,ツトム
+モロオカ,ケンジ
+シノザキ,フミアキ
+ノグチ,シゲアキ
+シマダ,コウジ
+カワサキ,ユタカ
+オオカワ,マコト
+サメシマ,マサヒロ
+ホソジマ,カズヒコ
+ワタナベ,トミオ
+カワナミ,マサアキ
+クサノ,ケイサク
+ツチタ,トモアキ
+オオハシ,コウジ
+ノダ,ミキオ
+ワタナベ,ヒサオ
+ヨシタケ,ヤスヒロ
+フクシマ,アキラ
+イワヤ,タカオ
+サカモト,モトハル
+クボタ,ショウジ
+イソヤマ,コウイチ
+オオノ,ミツアキ
+アベ,タツオ
+オダワラ,ミチオ
+キウチ,ケンジ
+イシカワ,トシフミ
+ヨシダ,タツオ
+チャバタケ,マサフミ
+サカイ,ヨシオ
+オオタ,ヨウジ
+ナカノ,マサミ
+ハダ,タカシ
+ナカヤマ,ジュンジ
+サカグチ,ケンジ
+ナガシマ,ヤスオ
+サガラ,トシヒロ
+カワノ,タダヨシ
+カネコ,イサオ
+ナカダ,ミツル
+アマノ,タカシ
+ヤザキ,シュウジ
+ヒラギノ,カズオ
+タバタ,イチオ
+クニユキ,ヤスヒロ
+オクウチ,ヒロノリ
+スギモト,ヒデジ
+ナカムラ,リョウジ
+スギサキ,ワタル
+ヤマシタ,タカテル
+ノムラ,カズミ
+シマダ,ミツル
+フクダ,カズノリ
+サトウ,ヒデオ
+オクボリ,ヒロシ
+ヨコカワ,マサミ
+デンダ,キヨシ
+フクナガ,ススム
+タカシマ,ミツギ
+カトウ,テツオ
+イシグロ,アキノリ
+イケベ,クニユキ
+オオツカ,ススム
+シミズ,ヨシノリ
+スズキ,タカオ
+ツヤ,マコト
+ウチダ,マサタカ
+オチ,ケンイチ
+アリガ,タケシ
+ナカシマ,カツジ
+マサキ,マツミ
+ナカシマ,マサオ
+アサハラ,マサヨシ
+ゴトウ,ヒサオ
+ウエマツ,ヒロシ
+サキモリ,ヨシアキ
+ヨシダ,ツトム
+フジタ,ヤスヨシ
+ヤギシタ,トシオ
+ムロフシ,マサヒロ
+カメダ,エイイチ
+イカワ,ヒロタダ
+ヤマザキ,ヒロシ
+ツルハシ,マコト
+ミノシマ,ノリオ
+キシモト,マコト
+タケシタ,マサシ
+ナカタ,シンイチ
+エンド,キヨシ
+モリヤ,ケイメイ
+クボタ,スミオ
+ナオハラ,ヒロシ
+クゲ,ケンジ
+カサノ,マサハル
+イイムラ,タカシ
+オオタ,マサユキ
+タケコ,ヒロフミ
+ムラコシ,トシオ
+ヨシダ,ケンジ
+アサノ,ヨシアキ
+ヨシダ,マサトシ
+ハヤシ,テツロウ
+スズキ,タツヤ
+オダ,リョウイチ
+ヤマウチ,キヨシ
+カワカミ,ツネオ
+ウスダ,コウジ
+サトウ,シンイチ
+クラシマ,シンジ
+マセ,ノボル
+コンノ,ヒロシ
+マツザワ,アキラ
+シマダ,シュウイチ
+ヤマモト,ヨシノリ
+オオクボ,ケンジ
+オグラ,カズノリ
+サクマ,エイジ
+ノグチ,ヒロノリ
+ヒナタ,コウイチ
+フジイ,シュンイチ
+スギモト,マサシ
+ツカハラ,ゴロウ
+ミツナガ,マサアキ
+ナカムラ,マサヨシ
+ヤジマ,タケシ
+カミタ,ススム
+ヒガ,ジュンキ
+ミナガワ,ヨシテル
+トミ,タカオ
+サカキバラ,ヒロシ
+カクタ,アキヒロ
+ツチヤ,ヒデユキ
+ムラタ,ケン
+タナベ,アキラ
+シモダ,ヨシノリ
+ツカモト,クラジ
+ハナハタ,ヒデオ
+カンダ,シンジ
+カワダ,ユキオ
+ヨシイ,ツネオ
+クラヤ,キヘイ
+テラシマ,ヒデユキ
+キタガワ,ヨシオ
+イデ,トシヒロ
+ツル,ヒサオ
+ウツノミヤ,トシカズ
+ナカザワ,マサヒト
+ヒダ,ヨシノブ
+ホソカワ,ヒデジ
+チグサ,セイジ
+ソウヤ,ヒロミ
+ヤマグチ,コウヘイ
+サカテ,フミオ
+アワタ,シゲル
+ワカバヤシ,カズヒコ
+エンジュウジ,マコト
+ノグチ,コウイチ
+カワムラ,マサオ
+モリモト,ミキオ
+ヨネハナ,タダヒロ
+ジダ,アキオ
+ウエダ,ケンジ
+シノハラ,イサム
+タカヤマ,マサカズ
+ヤマムロ,マサノブ
+ワキ,ジュンコ
+アマノ,マツオ
+ホソカワ,トシオ
+トウゴウ,ヒロヒサ
+ナカ,トミオ
+ノダ,タカノリ
+ヤマシタ,チエコ
+ナカジマ,ヒロシ
+ナガオカ,コウジ
+シブヤ,ヨシカズ
+セリザワ,コウゾウ
+フジモリ,セイジ
+フクダ,タツヒロ
+フジタ,タカヒサ
+ヤマジ,ヒデアキ
+コバヤシ,イズミ
+コバヤシ,キヨシ
+シシクラ,ヨシアキ
+コグレ,マサハル
+モリ,ヨウイチ
+ナカムラ,ノリタカ
+イイジマ,ノリユキ
+キタガワ,ヨシテル
+タムラ,タダヨシ
+ナガシマ,ヤスエ
+エノキ,イズミ
+サトウ,ヨシノブ
+マツモト,ヨシオ
+ウエダ,ヒロオ
+ミズタニ,アキラ
+アカシ,タツオ
+ナカモト,オサム
+ナカヤマ,ヒロノブ
+フジイ,ヤスヒロ
+ナカヤマ,ショウイチ
+ヨネミツ,テツオ
+タカセ,トシオ
+ワタナベ,ヒトシ
+フカザワ,トシノブ
+カゲウラ,マサミ
+シンドウ,カツジ
+シミズ,タツミ
+サカシタ,ヨシノ
+ミヤムラ,トオル
+タナカ,マサトシ
+タカイシ,ススム
+イシガキ,ケンジ
+タカダ,ヨシカズ
+タテイシ,カズナカ
+サカタ,ヒデオ
+ヨコハタ,トシヒコ
+クヤ,タモツ
+ヨシダ,マサヒデ
+キタダ,ハルオ
+ヨシダ,シンジロウ
+コバヤシ,カズミ
+ナリタ,ミツヨシ
+イヌイ,マサヨシ
+ヤスカワ,フミオ
+ノグチ,スナオ
+ショウダ,イチゾウ
+ヤマダ,テルヒサ
+ワクダ,ツトム
+アベ,サダヒロ
+タケカワ,タカオ
+サトウ,ヒデキ
+ハナオカ,ヨシオ
+オオノ,ヒデオ
+タナカ,ケンゾウ
+ツノダ,アキオ
+ナマエ,ケンジ
+タカハシ,タダヒサ
+ナカジマ,シゲル
+ナカムラ,キミコ
+ウリウ,ハルタケ
+フジイワ,フミヒコ
+ササキ,タカシ
+キムラ,ユタカ
+タカギ,シュウイチ
+カタヤマ,ヒロト
+イグチ,オサム
+アベ,テルオ
+スズキ,タカヒロ
+ヒラ,カズヒロ
+ナゴシ,ヒデアキ
+アダチ,ケンジ
+ムラヤマ,マモル
+クニカタ,ススム
+マツイ,マコト
+コイデ,ミツオ
+ヒロタ,ヒロヤス
+トミナカ,ヨシオ
+ワキタ,フジオ
+ウメムラ,ショウジ
+フケ,ヨウイチ
+ウエマツ,カツミ
+マツザキ,ヤスヒロ
+ナカノ,ツモル
+コダカ,タケオ
+ヒロタニ,ケンジ
+タカハシ,コウイチ
+サノ,ジュンイチロ
+シミズ,ヨシカズ
+カンザキ,テルヨシ
+オオサク,カズオ
+ワシダ,マサヒデ
+クニモト,ヤスマサ
+シロカワ,マコト
+カワハラ,ケンイチ
+オカ,ツネカズ
+コモリ,ヨシアキ
+ハヤシ,シゲアキ
+カネコ,イクオ
+カドイケ,ナオミチ
+オカムラ,ジュンイチ
+オカムロ,ジュンイチロ
+タブチ,ナオコ
+ヤマモト,アキノリ
+オオサ,タカシ
+イリエ,シンイチロウ
+タカハ,カズヒコ
+タイラ,ハルオ
+ミナミ,ヤスマサ
+イケダ,シゲル
+アオキ,フミオ
+ヤマウチ,ジ
+ヨシハラ,マサフミ
+ササキ,アキヒト
+ミズタニ,トシイチ
+ヒラノ,カツユキ
+ナガタ,アキラ
+カタヤマ,ケイ
+オダ,リョウジ
+エノモト,ユウキ
+タケナカ,サカエ
+マツザキ,ヒロシ
+マツバラ,コウジ
+ヤマシタ,セツコ
+メグロ,ヒロヨシ
+オザキ,ヒデユキ
+オオガミ,コウイチ
+オマエ,シンイチ
+キダ,カンジ
+ウエノ,オサム
+オカダ,カツユキ
+カナサキ,トミオ
+ヤカベ,ヒロユキ
+ナムラ,ユミコ
+イイジマ,モトアキ
+ササキ,ノブユキ
+モチズキ,ヨシノブ
+ブンヤ,トシオ
+オカノ,ヤスオ
+タケウチ,サトシ
+ウエノ,トオル
+フジモト,ヒデト
+カワグチ,ミツハル
+タキモト,マサノリ
+カタオカ,シゲル
+クサカワ,ナオキ
+アサイ,ヒトシ
+モリ,エイイチ
+クボ,ヨシクニ
+アンドウ,イチロウ
+ウラヤマ,オサム
+クリタ,ヨシオ
+イノウエ,タケシ
+カネカワ,ヒデオ
+ウエモト,リョウゾウ
+ナカオ,ケンイチ
+オカモト,ハルオ
+ニシムラ,キヨシ
+ヤダ,カズオミ
+キド,オサム
+オカバヤシ,ミツヒロ
+カワシマ,ジュンゾウ
+ハシキ,タカミチ
+ミヤモト,イチロウ
+ナカオ,タカヒコ
+マツオカ,ユキオ
+ヒビノ,ヒロミ
+ニシカワ,カオル
+カブタ,ケンジ
+ワタナベ,キヨシ
+ヤマノ,コウイチ
+サイトウ,シゲミツ
+スズキ,ユウジ
+クワハラ,サトシ
+モリタ,トシヒロ
+フジイ,スミヨシ
+ナガシマ,ツネユキ
+イナムラ,マサヒロ
+オザワ,ヒトシ
+タキモト,クニオ
+ミヤシタ,ヒサシ
+モウリ,マサユキ
+イノウエ,ミツオ
+ナガノ,モトアキ
+ハラト,ヨシオ
+マミヤ,トシカズ
+ヒガシバタ,ヒデオ
+ニシタニ,サトシ
+タカク,ノブユキ
+ハナダ,ミノル
+アサノ,ミチオ
+ババ,ヒロシ
+イトウ,シンキチ
+イイダ,ケンシ
+コハヤカワ,タケヒコ
+フジワラ,カツミ
+シュクリ,ヤスヒコ
+ユタニ,ケン
+ムネカワ,イクコ
+カンノ,マサヒロ
+ニト,カツミ
+タムラ,ヨシアキ
+ナカシマ,サトシ
+オオタ,チカコ
+イノウエ,ヨシコ
+クママル,ケンジ
+タナカ,シゲル
+マエダ,マサアキ
+アミ,ノブオ
+ミナト,アキラ
+ニシダ,カズオ
+イシハラ,サブロウ
+ナカシマ,トシオ
+イクタ,ヤスヒサ
+オキ,タダオ
+カガワ,シュウイチロウ
+ヒラカワ,トシオ
+ヤマザキ,トシノリ
+クマガイ,コウジロウ
+タシロ,ミツシゲ
+サノ,ヒデマサ
+ミドリカワ,フミヒコ
+ナカムラ,マサノリ
+ヨシミ,ヒロコ
+イナミ,ヒデト
+ワタナベ,キヨシ
+コガ,トモヒデ
+スガワラ,ヤスヒロ
+タケウチ,ヨウイチ
+エダ,ヨシロウ
+アンドウ,ヒロオ
+タルイ,ユタカ
+ゴトウ,ヒロシ
+シモガキ,シゲル
+ナガタ,ユキオ
+ホシカワ,ジュンイチ
+コミナミ,マサオ
+カガ,ヨウ
+ハゼカワ,ノブオ
+チバ,シズカ
+ウラノ,サトシ
+コンノ,トシキ
+コバヤシ,カズヨシ
+モモセ,ユウコ
+ツゲ,ジュンジ
+ヤスコチ,ヤスタカ
+ホソザワ,ショウイチ
+スギヤマ,カツユキ
+アベ,タケユキ
+タナカ,ノブユキ
+セイケ,ヤスヒロ
+ツゲ,マサノブ
+ワカバヤシ,アキオ
+オオクボ,タカオ
+オカベ,フミオ
+イワイ,ヒサオ
+タナカ,テルユキ
+ヤマモト,ミツオ
+タカヤマ,ナオキ
+タジマ,ヒデノリ
+カズシロ,マサハル
+コイデ,タカシ
+カモ,タツノリ
+キタジマ,ヨシユキ
+ハマノ,シゲル
+イイヤマ,トシユキ
+ヤマシタ,ショウイチ
+キタ,シゲユキ
+イシタニ,サトシ
+クジメ,サダオ
+キシカワ,カズオ
+ナガノ,マサヒロ
+ヨムラ,タダノリ
+ナカシマ,トシユキ
+モリ,エイジ
+ヤマジ,ヨシカズ
+オゼキ,マサタカ
+イナダ,ヤスシ
+ハヤセ,タカシ
+ホンポ,ススム
+オオヤ,カンジ
+キタムラ,タカシ
+トシン,サトル
+タケイ,ヤスフミ
+オカヤマ,ノブオ
+イシズカ,コウタロウ
+ハタ,トシアキ
+スガハラ,ユウジ
+イワミ,ヤスオ
+ユモト,ヒデオ
+キタガワ,ユタカ
+イハラ,ユウゾウ
+ノムラ,イチロウ
+ミヤサカ,ケンジ
+ヨシダ,トモヨシ
+フカダ,タカシ
+フジワラ,カズミツ
+キト,トシアキ
+ウエモリ,イサオ
+ヤマカワ,マサミ
+クロダ,ミチロ
+オオツカ,ヒロシ
+ウエダ,ユウジ
+ソノ,ミキオ
+ダイ,トモミチ
+シンゾウ,ヒロカズ
+ウエダ,ユタカ
+ワカミヤ,カズミ
+カムラ,フミツグ
+フルタニ,タカマサ
+カツウラ,カツミ
+クマイ,セイジ
+ババ,ハルツグ
+カネトモ,タツミ
+ムラハシ,トオル
+ドイ,タカシ
+ナミカワ,シゲハル
+タカオカ,ケンジ
+マツモト,リュウイチロウ
+ワタナベ,ヨゾ
+タダ,マサヒロ
+アリマ,ヨシテル
+ナガノ,トシノリ
+ヤノ,テルユキ
+イサカ,ユキヒロ
+イトウ,トクイチ
+ヤマザキ,スミオ
+クノ,カズオ
+シバ,ケンジ
+キムラ,アキラ
+スミダ,カズオ
+モトガイト,ヒロカズ
+ニワ,シゲコ
+タケウチ,ユウジ
+タムラ,カズヨシ
+ボウタ,ケイスケ
+カドヤ,ユウゴ
+ハラダ,ヨシノブ
+ミツイシ,ヒロシ
+イノウエ,ケイスケ
+ムラハシ,マコト
+ニシカワ,シンイチ
+マスダ,コウジ
+オオタ,クニオ
+フクイ,マサオ
+カゲヤマ,ケンジ
+ナガツカ,タダユキ
+クサノ,シゲオ
+コジマ,ヒロユキ
+クラタ,タダシ
+タケウチ,ケンイチロ
+イケダ,アツオ
+タカノ,ユタカ
+クラヤ,シンイチ
+オノ,ツトム
+ナカダ,ジュンゾウ
+トクモト,タカアキ
+オオハシ,トシフミ
+ヤマダ,アキラ
+ハンダ,テツオ
+イシハラ,セイジ
+ヨシハラ,サトシ
+タテイシ,トシヒコ
+イトウ,シフミ
+サトウ,タカオ
+オオクラ,ショウジロウ
+ナカスジ,ヨウイチ
+タイラ,ヒロシ
+キヒラ,ハルヒコ
+ナカジマ,ヒデツネ
+ヤマザキ,トキオ
+トビタ,アキラ
+ナカザワ,ハルオ
+ニシハラ,カズオ
+メグロ,ジュンジ
+マルヤマ,コウゾウ
+キクチ,ヒサノリ
+アオキ,ヨシミ
+キッタカ,タミオ
+ヤスイ,ユキコ
+イチマル,ヨシアキ
+ヤマザキ,トシユキ
+スガハラ,ジュンイチ
+トミナガ,ヨシヒコ
+チギリ,エイジロウ
+オオバ,ユリコ
+マツイ,フクミ
+ヒラヤマ,マサヒロ
+ヤマムラ,ミツノブ
+オオデ,マサミ
+ヨシナガ,チカエ
+コジマ,タケノリ
+トミナガ,チエコ
+サガ,テツヤ
+ハラ,ユウジロウ
+トミヨシ,タカシ
+ヨシダ,ソノエ
+ヒラバヤシ,ヒロカズ
+マツド,ヒデオ
+イマフク,ユウシ
+キヨセ,シンヤ
+ハナブサ,ススム
+チバ,トシノリ
+ヤマザキ,リュウジ
+ナカハラ,ケンジ
+オノ,コウヘイ
+ウエマツ,カヨコ
+アキヤマ,マサアキ
+トタニ,ヨウイチ
+ヨネダ,マサヒロ
+フルクサ,サカエ
+ヒロヤ,ノリヒロ
+ヨシダ,シンサク
+カネコ,シゲル
+ナガタ,マサハル
+イベ,シンジ
+セキネ,マサユキ
+オカダ,マサハル
+カナイ,カンセイ
+サトウ,ヒトシ
+サカキバラ,ヨシオ
+イマイ,ミハル
+ヒメジ,シンゾウ
+オギハラ,マサヨシ
+タケムラ,タカノリ
+トオヤマ,タカシ
+キタハラ,タカヒサ
+オオサカ,カツヒコ
+オオコウチ,カズマサ
+タカオ,ノリコ
+ウド,トシロウ
+ウノ,キンゴ
+フジキ,ヒロミ
+サトウ,トシオ
+イソガイ,マサミ
+カラサキ,ヨシオ
+ヤマダ,タモツ
+ワダ,エツオ
+シバタ,トシオ
+シオザキ,タツオ
+シガ,ミツノブ
+クリタ,ミチオ
+ハシモト,ヨシロウ
+ヨシムラ,タカシ
+ミヤザキ,ヒロノリ
+キタガワ,キハチロウ
+オダケ,チカラ
+スズキ,アキラ
+ヤマイシ,キヨアキ
+オゼキ,ヒロシ
+タカイ,サトミ
+カネコ,ケンジ
+ハラダ,ヒデユキ
+シマダ,ケンサク
+ヤナギ,タケオ
+スズキ,タカヒト
+タカハシ,ヤスオ
+オグリヤマ,トオル
+ワタナベ,ノブユキ
+ヤマムラ,ケンジ
+タカハシ,タダヒデ
+シオジマ,カオル
+ツルオカ,トオル
+イトウ,トシミチ
+マツウラ,セイキ
+ヤマモト,タカオ
+クマミ,ユウゾウ
+ケンヨシ,タカシ
+ヤマカゲ,ヨシアキ
+ゴトウ,ヒロオ
+タケウチ,マサトシ
+ハヤシ,カズユキ
+イシバシ,トシユキ
+イナ,リョウ
+イノウエ,タカユキ
+ニシカワ,ヒデオ
+ハンダ,キヨジ
+タテバヤシ,カズヨシ
+オシマ,クニヒコ
+シバタ,ハルキ
+ミウラ,アツシ
+コカゴ,カズノリ
+イイダ,ユタカ
+タケスエ,カズミ
+イガラシ,テツヤ
+マスヤマ,ヨシオ
+サクヤマ,カズオ
+サクライ,ケン
+タマリ,マサオ
+イマニシ,ミノル
+オガワ,マサヒト
+ハギワラ,キヨシ
+オオクニ,ヒデヒコ
+イケダ,セイイチ
+マエジマ,アキラ
+イワイ,カツミ
+ヤマダ,マサキ
+スダ,マサト
+トキワ,オサム
+ハヤシ,ユウイチ
+タケモト,カズオ
+カンバヤシ,マサオ
+トザワ,ツトム
+タテノ,シンゴ
+カンベ,ケイコ
+オクダ,ヨシト
+タモト,トミオ
+ナガイ,ノブタカ
+オザワ,シンイチ
+サトウ,ヤスナリ
+コンド,アキオ
+ネギシ,タダシ
+タナカ,テツオ
+コムロ,リョウイチ
+ヨシダ,トヨフミ
+イイジマ,ヒロミ
+ニイホリ,カズオ
+コモリヤ,ヨシタカ
+シンドウ,ヒデズミ
+ヤノ,ヨウイチ
+タナカ,マサトシ
+ハギタニ,ロクロウ
+コスギ,ダイキチ
+イベ,ノリオ
+カナザワ,ヒロシ
+タダ,タダヒサ
+ナガタ,リュウスケ
+カマダ,ヒロシ
+タカハシ,ヨシオ
+オイデ,マコト
+タカクラ,ヒロシ
+ヤスマツ,ススム
+マル,ヨシヒサ
+クボタ,ノボル
+タバタ,ケイイチ
+モリタ,ノリオ
+クニトモ,ツネジ
+アサヌマ,ヒロカズ
+ホシナ,ヤスオ
+ノザワ,ハルヒサ
+マツムラ,シンイチ
+ヒラカタ,カズオ
+ヒラマ,ハルオ
+シミズ,タカシ
+ヨコカワ,ワタル
+キクチ,アツシ
+クロサワ,イサム
+タケウチ,テツオ
+ヒラガ,ヨウジ
+サイトウ,ノリオ
+ウチボリ,コウイチ
+イナムラ,ヨシハル
+オサダ,タカシ
+スギヤマ,タカトシ
+イマズ,ヤスタダ
+ウラノ,マサヨシ
+モチズキ,カズオ
+スガワ,シゲル
+イケダ,トシオ
+タナカ,ハルオ
+サイトウ,タツジ
+フジタ,トシミチ
+ミヤネ,ツトム
+カマダ,ミノル
+ネギシ,ヨシノリ
+オクガワ,ユキオ
+ハヤシ,ヒサシ
+ババ,ノブヒコ
+ヤマモト,ツトム
+エンド,ノボル
+ソメヤ,オサム
+アライ,ヨシユキ
+アベ,アキラ
+チバ,タツオ
+タカヤマ,ミノル
+ヤマキ,ユウジ
+タケウチ,シゲフサ
+タケベ,タカオ
+アダチ,ヨシアキ
+タカシマ,アキラ
+ヨコヤマ,ノリナオ
+シライチ,マサル
+クドウ,シゲオ
+スズキ,キヨシ
+タカシマ,タカシ
+ヤマガタ,ミノル
+ヨシダ,タクオ
+ミヤカワ,ケンジ
+ササキ,ムツミ
+イデウラ,カズコ
+タナカ,ヒロシ
+イトウ,アツヒコ
+オオツ,タケシ
+フエキ,トシカズ
+シモフサ,アツシ
+ミヤカワ,マサタカ
+ハシモト,タカシ
+ヤマゾエ,コウジ
+ニイクラ,ノブオ
+ワタナベ,トシノリ
+ムロフシ,カナ
+カンダ,カツマサ
+クドウ,ケイコ
+タカハラ,ワタル
+オカダ,ケイジ
+ドイ,サトル
+タナベ,マモル
+コムロ,ケンイチ
+モリヤマ,フミコ
+アラマキ,ノブオ
+コシベ,カズロ
+サノ,ノブヒロ
+オカダ,ヨシマサ
+フジワラ,キョウコ
+マツオ,カズミ
+タナカ,ミネオ
+キハラ,ナオキ
+ニシハタ,ユウ
+ニシワキ,ヨシタカ
+オカザキ,ヒロカズ
+フジワラ,オサム
+ヤスダ,ユカコ
+オカ,キョウ
+ホソノ,シゲオ
+アカシ,タクマ
+ナカイ,コウイチ
+ヤスダ,キクジ
+テラムラ,フミタカ
+クボタ,ヨシユキ
+コニシ,シゲミ
+ノムラ,アキラ
+イノセ,クニコ
+ワタナベ,ヤスヒコ
+ニシオ,カズヒサ
+モミキ,コスケ
+スナダ,ヒロタカ
+タケウチ,サチコ
+アキセ,ヒロシ
+シオタ,ヨシヒコ
+キド,ヨシアキ
+イシワタリ,トシオ
+シラガミ,タカヒロ
+ウチナガ,ヒデヤ
+タナカ,シンイチロウ
+クロサキ,テツオ
+オトシ,ユウイチ
+サトウ,マサオ
+スズキ,マサユキ
+ヒロタ,サイジ
+ヤノカワ,ジュンイチ
+サカモト,マモル
+コムロ,マサト
+イマタ,ヨウイチ
+ホソヤ,カズタカ
+テラサカ,マサユキ
+ホンマ,カズエ
+カスガ,ヒロシゲ
+マツダイラ,エイジ
+カワカミ,シュウジ
+ネゴロ,シンジ
+フクダ,エイゾウ
+スズキ,ヒロシ
+トマツ,ヨシジ
+イノ,タツロウ
+スズキ,ジュンジ
+アサイ,カズオ
+ハラ,タカノリ
+ホシ,クニカツ
+ナルカワ,カズノリ
+オダ,タカアキ
+オバナ,シゲヤス
+タニザワ,マサヒロ
+フジオカ,タカシ
+ゴトウ,タカジ
+コレナガ,トシアキ
+タカハシ,ダイスケ
+タカラ,ミツハル
+オオクワ,キヨシ
+タナカ,ヒデカズ
+サトウ,ノリオ
+シマヌキ,ケン
+ソネ,ヒロシ
+タナカ,カズオ
+フジムラ,コウジ
+ゴトウ,シンジ
+ハシモト,ヤスタカ
+ヒルマ,アキラ
+ホシバ,ヒデヨ
+カメワリ,ヒロミ
+オクイ,ヒロシ
+ヒサモト,オサム
+スズキ,キヨシ
+ヒラサワ,ヨシタカ
+キタデ,ノリアキ
+フクダ,カズヒサ
+シオザキ,ケイジ
+ムトウ,ユタカ
+ニシオカ,サブロウ
+ツボノ,ヒロヒサ
+ナツウメ,トシマサ
+タニガキ,ヒロアキ
+オオスガ,カズオ
+ウチダ,ヒデオ
+カトウ,エイジ
+ササキ,ヒデオ
+カシマ,ノリオ
+アカサカ,カズオ
+カワカミ,ヨウイチ
+シド,タツヤ
+ヤマウチ,ヨシヒデ
+カノ,ユタカ
+ハラ,イクオ
+マツバラ,ケンジ
+テラカド,カズヒロ
+シオタ,ヨシノリ
+オカダ,ヒトシ
+クロダ,リョウ
+モリモト,フジオ
+セキ,ヒロシ
+スズキ,アキラ
+タケクサ,ヒロシ
+タガシラ,ノブオ
+コバヤシ,オサム
+サエキ,ケイジ
+タツザワ,キミアキ
+サイトウ,ヒトシ
+フルカワ,キヨシ
+タムラ,フミト
+ツリヤ,マチオ
+サカグチ,フミトシ
+フクシマ,ヨウイチ
+オオカワ,ヒロシ
+フジタ,シュンスケ
+カワグチ,カツノリ
+トキオカ,テルオ
+ナカノ,トミオ
+イノウエ,マサユキ
+クニトシ,タクロウ
+サカタ,コウイチ
+モリカワ,ツネオ
+ノグチ,ヒロシ
+クボタ,ムツミ
+ナカオカ,タツオ
+ノフジ,ケイジ
+モガリ,エイジ
+マエザキ,イサオ
+オオツカ,シゲヨシ
+ミズタ,ケンノスケ
+スギヤマ,ヨシヒサ
+カガワ,ヨシタカ
+ニシハラ,ヨシフミ
+テズカ,シンイチ
+シオミ,ミツオ
+オオハラ,タダアキ
+アサクラ,アキヒロ
+シマダ,テツヤ
+シマカワ,ススム
+ハシモト,ヒトシ
+ウズ,シズオ
+タカクワ,マサノブ
+ミチタ,シュンイチ
+ウエダ,ウイリ
+シガ,タカツグ
+イケミ,ミツグ
+モリ,マサアキ
+カシモト,マスミ
+イシハラ,チエコ
+カネコ,チエコ
+タカハシ,トシオ
+モトイ,マサオ
+コタケ,ミチオ
+カサイ,スエコ
+カトウ,ノリコ
+コクボ,ケイコ
+ワカヤマ,シゲヤ
+サナダ,マサヒコ
+サカタ,トミヨシ
+ノムラ,ミツオ
+ハヤカワ,カズミ
+ミヤザキ,シゲオ
+オニツカ,ケンジ
+イデ,オサム
+ナガサコ,タカノリ
+イトウ,ミチタカ
+カネタケ,テルアキ
+クボタ,キヨユキ
+アリマ,ケイコ
+ワカオ,ヒロシ
+イシザカ,タカユキ
+オタ,ゼンハチロウ
+サカモト,ケイゴ
+オオホリ,ユキオ
+シンタニ,トシアキ
+ウチヤマ,タカシ
+ヒラタ,ミナコ
+アリゾノ,サトコ
+イトウ,タカシ
+アオヤギ,マサアキ
+ナカムラ,サダオ
+イイダ,ミチオ
+ナシキ,カオル
+ムラセ,カズオ
+マツオ,ケイゴ
+サトウ,シロウ
+アサヌマ,シンイチロウ
+フタミ,ヤスマサ
+フナト,クニミ
+フジタ,ユミコ
+フルカワ,タケオ
+フナハシ,ヒサヤ
+ブトウ,ヒロユキ
+カノウ,カツヒロ
+オキツ,ヒロタカ
+タカギワ,イサム
+ホシノ,チエコ
+ニシジマ,クニヒロ
+カマタ,チアキ
+ツジモト,トシイチ
+ハナダ,シンジ
+ヒロセ,マサオ
+ニシダ,ヒトシ
+ウエキ,トシカズ
+ヨシノ,キヨオ
+キタムラ,セイイチ
+シミズ,ミチコ
+イシザキ,ヒサシ
+ハヤシ,ミツノブ
+キクチ,ヒデフミ
+オカド,ツグオ
+コムラ,シゲル
+ハシモト,ツトム
+ナカツカ,タケシ
+オオイシ,マスヨシ
+クロダ,マサヨシ
+ナカイ,マサミ
+キタザワ,ノリアキ
+キシダ,シゲル
+カナマル,マコト
+アライ,シズオ
+フタツギ,ハルオ
+キクチ,トシオ
+イイダ,ヤスシ
+ナカエ,アキオ
+ヒラマツ,ミノル
+ニシオカ,ジュンゾウ
+サトウ,ケイキ
+モリ,ハルオ
+ホシノ,イサオ
+ヤマグチ,ノブヒロ
+ウスイ,ヨウイチ
+マツバラ,エイイチ
+アリサカ,マサキ
+ニシオ,エイジ
+キダ,テツオ
+ヤノ,ユウイチ
+カトウ,ケンタ
+ワタナベ,チヒロ
+ハヤシ,ヤスオ
+ワタベ,ヨウイチ
+ワタナベ,マサオ
+ユグチ,ヒロコ
+ヤマモト,ヒサシ
+サイトウ,フミオ
+カイズ,ケンイチ
+ホシノ,ヒデオ
+シノハラ,ノブヒロ
+オオヌマ,マモル
+ミワ,タケシ
+ホリムキ,ヨシマ
+イシタテ,シンイチロウ
+ミフネ,キヨシ
+モミキ,マコト
+ハセガワ,テルオ
+スギヤマ,シュンジ
+ツクダ,タダシ
+アダチ,フミノリ
+デザワ,タダヨシ
+オタ,キヨシ
+サトウ,アキラ
+セキグチ,ミツノリ
+コクブン,ヨシキ
+ホシナ,ユキフミ
+ウラノ,コウイチ
+タケムラ,ヤスヒロ
+トクナガ,ヒトシ
+クリハラ,ヒデト
+オクムラ,ジュンイチ
+サイトウ,シンイチロウ
+マツシタ,ケイゾウ
+タケダ,ミチコ
+ニシキ,モトヨシ
+ウメダ,サカエ
+ホンダ,イクオ
+カモ,カズウミ
+ウシダ,ツヨシ
+サイトウ,ヒロツグ
+ハスダ,マスオ
+ミカワ,ヨウコ
+ウチダ,クニヒコ
+ニシザキ,ショウイチ
+イガラシ,ショウジ
+ワタナベ,アサコ
+シマムラ,コウジ
+カトウ,ノリコ
+カワベ,ショウコ
+サカモト,ヨウジ
+モリシタ,モトヨシ
+スガハラ,リョウ
+トミヤマ,カツヒコ
+フクダ,ツヨシ
+オトザキ,アツヒコ
+フジモリ,タカオ
+コモリ,キヨユキ
+フクナガ,マサアキ
+ミヤハラ,カツノリ
+ジンノ,ミツオ
+キムラ,エイコ
+イナガキ,ユキコ
+モリ,ノリオ
+ワタナベ,カツノリ
+ツジモト,アキオ
+モンゼン,ヒロユキ
+ナムラ,
+ヤマモト,エリコ
+ハシモト,ヒロキ
+アライ,ヤスノリ
+フジイ,ヒロシ
+ワタナベ,テツ
+ハセガワ,トヨカズ
+シゲヤス,エイイチ
+ヤマノイ,タクマ
+コバヤシ,マサル
+ナガイ,ヨシアキ
+サワ,ノブオ
+マツヨシ,ミチオ
+サイトウ,カオル
+カノウ,ヒロアキ
+ウシゴメ,ヤスオ
+イシイ,コウジ
+ウスキ,イズル
+スドウ,ヨシオ
+カジヤマ,タカキミ
+オオバ,ヒデキ
+スワ,フミオ
+イワタ,ヤスト
+トウ,ハジメ
+オイカワ,ヒトシ
+ヒライ,エイコ
+タカシマ,トシオ
+フミノ,ヒロシ
+オカザキ,ノリオ
+シラキ,マサツネ
+タケモト,ユウジ
+マツモト,ノリヒコ
+マツバラ,ヒロシ
+エビハラ,コウジ
+フジノ,ヤスオ
+フカヤ,マサヒロ
+ホシノ,タカシ
+カタヤマ,サチコ
+アラカワ,マサユキ
+タカノ,カズオ
+クロダ,ヤスヒロ
+イトウ,ジュンコ
+コザイ,ミツル
+ウエヤマ,キヨシ
+ハットリ,トシキ
+ニシムラ,トシタカ
+フルカワ,タカオ
+ヤシキ,シゲキ
+ホドヤマ,ヒデオ
+エトウ,トモヒコ
+ヤマモト,マサトシ
+セキグチ,イサム
+タナベ,ヒデトシ
+タケダ,トシユキ
+シンタニ,カタシ
+クボタ,キヨシ
+スギオカ,サトミ
+ヤマザキ,サダノリ
+サイトウ,ヒデキ
+ウエノ,トシタケ
+シマモト,コスケ
+キタノ,マサミ
+イイズカ,リョウコ
+イズミ,キョウジ
+ハラダ,タカユキ
+オチアイ,サトシ
+ヤマウチ,アキヒロ
+エグチ,ヒデツネ
+ハギワラ,タケシ
+タカギ,タケノリ
+オクモト,マナブ
+マツザキ,リョウイチ
+イチムラ,ユリコ
+ミヤサカ,トモコ
+ミヤタ,セイイチ
+ナガオ,ショウキチ
+イワオ,マサシ
+フカザワ,シゲル
+タムラ,マサオ
+キリュウ,タダオ
+マツザキ,ヨシオ
+カトウ,テルミツ
+ミタ,ナオト
+イシイ,イサム
+オカモト,テツオ
+ウエオカ,ノブオ
+キョウノ,マサト
+カネコ,ユウゾウ
+サクライ,キョウコ
+ワカバヤシ,トシヒデ
+ワタナベ,ヨシヒロ
+アサイ,ニスケ
+カドノ,ユウジ
+ヤマザキ,トヨヒロ
+アワノ,トシユキ
+オガワ,タカノリ
+ゼンケ,トシオ
+フクモト,トモヒコ
+オド,カズノリ
+モリモト,タカオ
+トウボウ,カズミ
+カタヤマ,マサシ
+ナガマツ,タカアキ
+ワタベ,ヨシミ
+イシキ,ユウ
+イナガワ,ユウコ
+ナカノ,タカハル
+ニシヤマ,ヤスヨシ
+シモダ,ミヨコ
+シゲタ,タカオ
+マツモト,ヒロシゲ
+カタヤマ,ユウ
+ソノ,カツミ
+イセキ,ユキオ
+イトウ,ヨシカズ
+セキネ,マサオ
+ムラヤマ,フジオ
+マルヤマ,ケイジ
+クロサワ,ヨシフミ
+スミ,トオル
+ノグチ,ユウジ
+サトウミ,ヒデキ
+オオカワ,ツグヒト
+ナカノ,ヒデノリ
+オオイシ,ジ
+ハブ,アキラ
+ウチダ,ノリマサ
+ミキ,フミノブ
+スズキ,ツネユキ
+カサハラ,イズミ
+オオクボ,カズハル
+カタカミ,ノリカズ
+タカハシ,トシヒコ
+イシカワ,カズヤ
+タカトリ,タカオ
+タニグチ,シンジ
+セキ,ユキマサ
+クボタ,マサト
+アベカワ,ムツオ
+フジマキ,タケシ
+カタヤマ,マサユキ
+コヤマ,ケンジ
+ハシモト,アケミ
+スミ,ミチオ
+ニシカワ,ヒロシ
+サワマ,アヤコ
+ハシモト,ユウコ
+ナカタ,ヤスマサ
+ウチヤマ,ヒロシ
+ササキ,マリ
+アサハラ,ミツヒロ
+ニッタ,フミコ
+ダン,ルリコ
+スギタ,テツシ
+ヤマモト,シンイチ
+オフチ,ミキ
+コバヤシ,ミワコ
+ミヨシ,コウキチ
+イシダ,ヒデヒコ
+オニキ,ノボル
+クリハラ,タミオ
+シライ,ツカサ
+サカニシ,ケンイチ
+オダ,ヒサシ
+カマス,ケンゾウ
+ナカガワ,マサヨシ
+カシモト,キョウイチ
+バンドウ,ユズル
+フタミ,マサシ
+ヤマシタ,タカシ
+ハヤシ,ユウジ
+カゲヤマ,ミノル
+アスマ,ノブオ
+シモムラ,ユウイチ
+ヤマグチ,タダシ
+ヤマト,ヒロシ
+サトウ,シゲル
+マツダイラ,カズヤ
+マツムラ,トシミチ
+コンノ,ヨシヤ
+オオハシ,ヤサブロウ
+キクタ,シゲキ
+ヨシオカ,ヒロシ
+サノ,ヨシオ
+タナカ,ユキノリ
+ササキ,ススム
+カワグチ,アツシ
+ヤマシタ,タツオ
+タケムラ,フミオ
+フクチ,カズエ
+マナカ,トミエ
+アラキ,タカノブ
+ヒラノ,ヨシカズ
+ナカムラ,ツトム
+ハシモト,トシカツ
+カトウ,イクコ
+ハマカワ,クニオ
+ハヤシ,ケイコ
+イトウ,ケンイチ
+スズキ,イチロウ
+タケウチ,カズヒコ
+ニシ,コウイチ
+イワホリ,トシマサ
+イマイ,クミコ
+モリノ,タカシ
+ニシハラ,ケイ
+キリヤ,ヒサト
+サトウ,トヨコ
+ホソダ,ヒサコ
+タカハシ,タダシ
+ナカジマ,シゲル
+ヤスハラ,ナルユキ
+クロイワ,タカシ
+カモ,ヒロシ
+アカマツ,クニアキ
+キタムラ,マユミ
+ニシダ,ユキコ
+オカダ,シンイチ
+ササキ,トシユキ
+タカハシ,ヒロシ
+シミズ,イサム
+エンド,シンスケ
+ウダガワ,テルオ
+シミズ,ノリフミ
+アオヤギ,セイゾウ
+ハシモト,カズオ
+タケウチ,ヒデアツ
+アライ,ヤスシ
+イシジマ,イサオ
+コガネ,ヒデオ
+サワシマ,シンイチ
+タカヤナギ,ミノル
+マサダ,ヒロミチ
+シミズ,アキヒデ
+オノデラ,タカオ
+タナカ,ミツル
+ノムラ,ノブオ
+ヨシダ,ヒロシ
+ヨシダ,トシスケ
+サタケ,シンジ
+サイトウ,マモル
+ミヤギ,ヒロシ
+タカシマ,ケイジ
+カバヤ,ヒロフミ
+イシザキ,シンイチ
+カガヤ,ヨウイチ
+コタニ,タクモリ
+コスダ,ヤスアキ
+イジリ,ユタカ
+マルヤマ,タミヤ
+カナイ,ヨシオ
+ヤギ,ミツグ
+フジノ,サトシ
+コデラ,マサト
+スギオ,マサユキ
+スガハラ,コウイチ
+サイトウ,ミツヤス
+オカ,ハルヤス
+イシマル,オサム
+ミヤザキ,コウゾウ
+ハマノ,ミチオ
+コタジマ,ヨシノリ
+タカシマ,アケフミ
+ツカダ,セイイチ
+ナカムラ,カツフミ
+タケダ,マサノリ
+ヤスムロ,ハルヒコ
+ナカムラ,ヒロシ
+フジシマ,シゲマサ
+オカダ,タケシ
+アヤ,ミツマル
+ナカムラ,ミツマル
+タカハシ,タケヒロ
+スガハラ,シゲタダ
+ユアサ,ケンジ
+イシイ,ムネヨシ
+オオクボ,ヒロトシ
+オサワ,マサタケ
+ヤマモト,ミキオ
+イマイズミ,カズヒコ
+オカダ,ヨシヒロ
+ナカムラ,クニオ
+タナカ,キヨシ
+ナカノ,タクオ
+オオモリ,カズヒコ
+ヤマモト,カズオ
+ナガイ,ユキマサ
+コバヤシ,ヨシハル
+ヒキチ,ヒサシ
+ヤマダ,トシオ
+ツカモト,ツトム
+イノウエ,マサト
+イノウエ,アキラ
+スミカワ,カオル
+フクダ,ジュンイチ
+ヤマモト,セツコ
+サイトウ,ユウコ
+カンバ,ヨシミツ
+サライ,マサアキ
+サカキ,ショウジ
+ヤスイ,タカシ
+カミムラ,タカシ
+セベ,ヨシタカ
+ヨシダ,トシカズ
+ナガセ,タダシ
+フクチ,イズミ
+フクダ,ジ
+ノナカ,ノブヒコ
+イマダ,マサヒロ
+ニシカワ,マスコ
+コヤノ,ヒデオ
+ナカザワ,アキオ
+オガワ,タカシ
+ナカヤマ,ハルヒサ
+ヌノカワ,ケイコ
+ソネ,フミオ
+ミゾグチ,ユキオ
+コバヤシ,イワオ
+ヨシマツ,マサオ
+オオハラ,マサオミ
+ヤマダ,シンジ
+ミノグチ,ヨシノリ
+シンメン,タカフミ
+ノセ,マサオ
+イワハシ,リョウイチ
+アカイ,タケシ
+ツタモト,マサハル
+ナカモト,ミノル
+クダナミ,マサユキ
+イチダ,タカシ
+ヤノ,エイジ
+マツキ,キミオ
+ササキ,ヨシシゲ
+フルノ,カオル
+フジタ,アキラ
+イノウエ,ミドリ
+タヤ,ミツヤス
+ミヤザワ,タロウ
+ワタナベ,ヨウコ
+アクネ,トシロウ
+ホシノ,シンイチ
+ヨシダ,カズオ
+ウエムラ,ノボル
+カミヤ,ケンジ
+スズキ,タケシ
+アンドウ,タカハル
+トヨイズミ,トシオ
+クワナ,ノリコ
+ニイミ,カツシ
+ミウラ,オサム
+ノムラ,アキラ
+オカダ,ジュン
+アサヌマ,カズヒロ
+ササオ,ヒデユキ
+イナガキ,マサト
+スガワラ,サトシ
+ショウジ,タケサダ
+タガワ,ミノル
+ソガ,ノブトモ
+ショウワ,キヨミ
+マツカワ,ヒロユキ
+シモムラ,ユウジ
+ワタナベ,ナオユキ
+コバヤシ,シンジ
+イイダ,コウイチ
+フクモト,ケンイチ
+ムラヤマ,ヒロキ
+ホリ,マサアキ
+ヤマノ,ヒデオ
+ニシワキ,ヨウジ
+マツオ,マサナ
+オカモト,マコト
+オオサキ,ケンイチ
+ウメモト,ナオフミ
+オカムラ,アタル
+コイケ,コウセイ
+オオタニ,マサアキ
+カタオカ,マサキ
+オカダ,シチロウ
+フクシマ,ヨシオ
+エダナカ,ヤスノリ
+スズキ,シゲル
+イチカワ,セイイチ
+クロカワ,キヨシ
+サトウ,キヨヒサ
+オオサワ,カズヒコ
+モチズキ,スエヒロ
+ヤマシタ,ケイイチロウ
+イチカワ,タカシ
+フカザワ,カズホ
+クボタ,ノブオ
+ニシムラ,コウジ
+ネギシ,ヒサユキ
+コンド,ケンジ
+フルヤ,ミツギ
+コバヤシ,タツオ
+タムラ,ヒロヒコ
+ミツハシ,ダイハチロウ
+クマザワ,カツミ
+ヤマダ,ヨシオ
+ヒロツ,カズミツ
+カネダ,ユタカ
+アソ,ユキオ
+エビハラ,キイチ
+ヤスイ,クニオ
+スドウ,ヒロコ
+ヤハタ,マサノリ
+サカイ,トモヒロ
+サガ,ヨシオ
+ヤマザキ,エミコ
+ナカムラ,ヨウコ
+イザワ,ヒロチカ
+アライ,ケンイチ
+ウブカタ,サダミ
+ワタヌキ,タダユキ
+ヒシタ,ノボル
+カトウ,ユウコ
+ヤマネ,ヨシト
+ヤマシタ,ヒロシ
+ノムラ,ヨシロウ
+ヤナイ,マサユキ
+ムラカミ,マサミチ
+アオキ,アキラ
+ヤシロ,ススム
+アサマ,マサヒロ
+オクダ,フミオ
+イシバシ,ユウジ
+ミナミデ,ヒデアキ
+イヌズカ,コウヘイ
+トキワ,ヨシハル
+ミウラ,ヤスノブ
+マブチ,トシハル
+オバラ,ヒロユキ
+マツキ,ヒロシ
+エグチ,ケンイチ
+オオミ,タケシ
+ワタナベ,タケシ
+アラカワ,シンジ
+スガノ,アキラ
+ヤスイ,コウヘイ
+ミヤモト,ヒロヤス
+フジギワ,コウイチ
+キタガワ,ミキオ
+タニグチ,ミツル
+コジマ,ヨシアキ
+アマカワ,ユタカ
+オオヌキ,ユタカ
+タナベ,コウジ
+マルハシ,イサオ
+ヤドヤ,ジュンイチ
+オオガク,ヨシヒロ
+サカタ,コウヘイ
+ハラ,ヒデミ
+タカギ,ヒデオ
+アイハラ,アキラ
+オオタ,トオル
+アキヤマ,ヨシヒロ
+シミズ,タカオ
+コバヤシ,オサフミ
+ハタモト,ケンジ
+ウスダ,タカノブ
+タカハシ,カズオ
+ナカガワ,テツオ
+マツバラ,ハルオ
+クヌギ,ユタカ
+オガワ,ヨシオ
+ツジ,カズタカ
+カワイ,ケイイチロウ
+スガワラ,シュウイチ
+ムトウ,カズオ
+オバラ,ヤストシ
+カトウ,タカユキ
+カブラキ,ユキオ
+ワカタベ,ツトム
+オガワ,コウシロウ
+イワサキ,ヒロユキ
+ナリタ,オサム
+アキヤマ,タカシ
+ミツイ,ケイイチ
+エンド,ユタカ
+ヨネタ,アキオ
+アオイ,キヨシ
+オカモト,ヨシヒサ
+オオツカ,シンイチ
+フクモリ,サカエ
+テシマ,カズマサ
+ハマ,ヒデキ
+ヨシダ,ハジメ
+カワベ,ヨシハル
+タナカ,ヤスノリ
+タカハシ,キョウイチ
+タナベ,フミアキ
+アソ,ヒロイチ
+タカダ,ヒロシ
+ミヤノ,トシオ
+ウエズミ,ヒトシ
+イチカワ,ヤスアキ
+アサワ,トモフミ
+イナモト,カズオ
+モリヤ,ヒトシ
+ナカタニ,ケン
+ミヤモト,イチゾウ
+ミクニ,エイイチ
+キタムラ,タダマサ
+ヤタベ,マサヒデ
+ナガカワ,リョウイチ
+ヤナ,カズオ
+サクマ,ミツル
+アライ,トシオ
+シマダ,ナオコ
+テズカ,シュンイチ
+ウエノ,シュンイチ
+サイトウ,ヒロユキ
+オオクワダ,マナブ
+ヨコヤマ,ヨシオミ
+ワタナベ,ヨウイチ
+ニシムラ,アキノリ
+タカマツ,コウイチ
+ニシムラ,タツマ
+イチキ,ヒロシ
+イワシタ,ノブツナ
+オノ,トシオ
+ニシキ,タツオ
+サワ,カズオ
+タカミ,オサム
+ヤスフク,ケンジ
+オオタ,ヒロシ
+オカモト,ヒロマサ
+サカイ,ヤスオ
+フジモト,トキオ
+マツモト,シゲノリ
+オオヤブ,カズヤ
+ニシムラ,シュウイチ
+ホリウチ,ケイイチ
+イシモト,シュウイチ
+マツモト,ナリオ
+タケウチ,シンイチロウ
+モトヤマ,コウシロウ
+ヨシナガ,コウジ
+フルカワ,ミチオ
+タニグチ,ヨシオ
+タケコシ,マサトシ
+ツムラ,コウセイ
+オノ,シゲオ
+オカモト,サトシ
+フルタ,マサヒロ
+ニシノ,ソウイチロウ
+ミズタニ,ヒロユキ
+コヤマ,ヒサシ
+キクチ,ケンイチ
+オオコウチ,マサアキ
+カワタ,タカシ
+クハラ,ヨシユキ
+フルハシ,コウゾウ
+タカヨシ,フミトヨ
+カス,ノブユキ
+アミモト,ススム
+ムネトウ,トシオ
+マツモト,ススム
+タカナシ,マサアキ
+アキタ,トシオ
+タカハシ,ヤスミチ
+ナガイ,タカシ
+ヨシダ,ツカサ
+マツモト,ヤスアキ
+トクダ,ミチオ
+ヒライ,ノゾム
+オクシマ,タカシ
+マシタ,シゲオ
+ヤマダ,キミヒロ
+サクライ,トモオ
+タキザワ,サトシ
+マスコ,ユウジ
+シンカワ,ヒロエ
+オオタニ,タダヒロ
+カワノ,ヨシミツ
+アラカワ,テツオ
+アダチ,タカユキ
+ウチダ,ケンジ
+コハラ,トシヒコ
+オオハシ,カズヒコ
+カメオカ,ヨシオ
+ミムラ,トミオ
+イキ,ヨゾ
+アシズカ,ヒロシ
+ヤマモト,ヒロノリ
+ヨシダ,オサム
+ハラオカ,カツヤス
+ウルワシ,ヒロシ
+オンダ,ケンジ
+インド,マサオ
+タケナカ,マサトシ
+フジサワ,マモル
+オオモリ,マサユキ
+ナカムラ,ヒロシ
+ショウジ,ヨシノリ
+キタジマ,ヨシアキ
+イトウ,アキラ
+ヒラオ,カズタカ
+スミモト,ノブヤ
+ナカタニ,ヒロシ
+アラシマ,ユキオ
+カタヤマ,ユキノブ
+ウエダ,マサヒロ
+フジモト,ヒロフミ
+ヤマハタ,リュウジ
+オオタニ,ツトム
+イイヌマ,ヨシヒロ
+ナガサワ,ヨシロウ
+ヤスダ,シュウジ
+フクシマ,リョウイチ
+サカキバラ,アヤコ
+カトウ,タカシ
+ヨコザワ,フミタカ
+カドノ,カズミ
+ヤマオカ,キヨシ
+カミタニ,ヒロキ
+カトウ,エツロウ
+ノモト,トシカズ
+スギモト,セイイチ
+フジノ,コウジ
+イノウエ,ショウジ
+ハセ,マサカツ
+モリ,エラブ
+カワバタ,ヒデオ
+カワゾエ,ショウイチ
+ハシモト,ダイシン
+ヒロマサ,ヤスヒロ
+キシモト,クニオ
+ヒラツカ,ミノル
+ウエダ,ヨシユキ
+アライ,トシヒコ
+イイダ,マサユキ
+ヒロシマ,ショウゾウ
+イサカ,カツヒロ
+スズキ,ヨシオ
+クラモチ,タカオ
+サイトウ,マサオ
+スズキ,ミツグ
+フカヤ,テツジ
+サカイ,トシロウ
+オオワダ,トシオ
+カメヤ,カツミ
+クサウラ,トシオ
+ワダ,カズオ
+ゴトウ,キョウイチ
+ヒラフク,アキラ
+モロヤ,ヒデトシ
+イケダ,サダユキ
+マスダ,マサハル
+ミズノ,トシタカ
+ハヤシ,キヨトシ
+アオキ,トシヒコ
+コバリ,マサユキ
+ミサワ,サブロウ
+タカギ,テツオ
+エンド,ケンイチ
+スガサワ,セイジ
+オリハラ,トヨミ
+マツナガ,タカフミ
+カサイ,キヨアキ
+セムラ,タカシ
+サクライ,タカアキ
+テラカド,ヨシユキ
+フジタ,ヤスアキ
+カワノベ,カイチ
+アオバ,マサル
+ムラモト,ユキヨシ
+ツボウチ,タカシ
+フルショウ,フジオ
+シバヤマ,フミオ
+ヤマモト,タカヒロ
+ウチダ,ヒロフミ
+マエザワ,トミオ
+コムラ,アキノブ
+ヤマサキ,ヨシジ
+ウシキ,カズミ
+マチヤマ,ショウジ
+フジヌキ,ススム
+ナカムラ,マツミ
+クスモト,テルオ
+スズキ,ヨシオ
+ウエヤマ,トシユキ
+コイケ,ヒロシ
+ハセガワ,ミツアキ
+フルカワ,ヤスヒロ
+ヤマダ,アキオ
+ユハラギ,ミツヨシ
+オシマ,ノリユキ
+ソネ,マサヒロ
+トウマ,サチヒロ
+タカハシ,シズオ
+カケハタ,マサオ
+イシイ,シゲル
+サトウ,ノリユキ
+ムラヤマ,ケンジ
+ホリグチ,マコト
+ナカザト,ヒロシ
+サトウ,マコト
+カネコ,リュウゾウ
+カシマ,トシノブ
+トグチ,ヒロム
+コミヤマ,キミアキラ
+ヤマオカ,ヨシノブ
+タカハシ,ケイイチ
+モリタ,ケイイチ
+ヨコイ,ヨシノブ
+ヒライ,ケイイチ
+シイバシ,マサタケ
+カネコ,マサフミ
+ナカネ,ノブハル
+セキグチ,テツオ
+ミモリ,タカヒコ
+キクチ,マサタカ
+ヤマモト,カツジ
+アラカワ,タカオ
+トモクニ,マサキ
+トミタ,ノリカズ
+タカハシ,シュウヘイ
+トガシ,ノブオ
+カワムラ,トシヒロ
+フクナガ,ケイジ
+マキタ,トクミ
+サノ,ミノル
+サトムラ,ケイジ
+サカノ,ジュンヤ
+ツチハシ,シゲアキ
+ウエノ,ケンゾウ
+ナカガワ,ヒデアキ
+トクナガ,ケンジ
+イトウ,カズオ
+ヒサマツ,トヨトシ
+オオツカ,カメオ
+カワモト,シゲキ
+ノムラ,ヨシイチ
+カノウ,ユタカ
+ウエサカ,ユウジ
+フジワラ,ヒラオ
+オガワ,マサト
+クラタ,トモフミ
+ハナソト,トヨフミ
+ニシカワ,タカヨシ
+エビス,ヒデオ
+ヤスノリ,ヨシハル
+サカイ,タケシ
+マエダ,ヨシアキ
+フクダ,シゲタカ
+ヤマモト,マサズミ
+シオタ,ヤスマサ
+ムラカミ,トモヨ
+イクミ,タカシ
+ナカギ,ユミ
+トクマツ,タカオ
+タニイ,トシユキ
+オオヤマ,ケンジ
+タノ,タカチホ
+オオタ,ヒロノブ
+クマノ,アキオ
+サワグチ,マサクニ
+アサノ,カズオ
+サカグチ,ノリユキ
+ワタナベ,ツトム
+カトウ,カズオ
+マエカワ,タカシ
+マツモト,カズオ
+マツモト,トシオ
+ヤマナカ,エイジ
+コバヤシ,コウジ
+フジタ,タツオ
+ヤギ,マサミ
+イワイ,マサタカ
+フクシマ,ヒデミ
+フルカワ,コウイチ
+オガタ,マサノリ
+スズキ,タダヒコ
+シカマ,タカシ
+キシモト,シュンイチ
+コロギ,カツミ
+フタミ,キヨシ
+ヤシロ,トシオ
+ハリイケ,ヨシハル
+シムラ,アリマサ
+ナガクラ,イチロウ
+ミナミ,コウジ
+トクナガ,キヨシ
+タナカ,フクム
+テラサキ,シロウ
+カトウ,トオル
+ミズノ,ヨシアキ
+タモト,ヒトシ
+ウチダ,ヒロカズ
+タケイチ,ヨシユキ
+ヒビノ,ヒロシ
+コバヤシ,リョウヘイ
+ワタナベ,ヒロタダ
+フカダ,マサヒロ
+イシタニ,カズヒサ
+イデ,ヨシユキ
+ニイサト,マサユキ
+スナハラ,ショウジ
+シミズ,マサオ
+カトウ,ノリユキ
+ナイトウ,ジュンジ
+コイケ,トウスケ
+キタムラ,トヨヒコ
+カガワ,トシユキ
+イケダ,タカシ
+カノウ,タカシ
+オカモト,ソウジ
+コバヤシ,サダヒロ
+イシイ,マサヒロ
+サエキ,マスユキ
+サワダ,タカシ
+ゴトウ,ノブユキ
+オノ,マサヒロ
+フナオカ,マサアキ
+シンヤ,マサカズ
+ホンザワ,ヒカル
+ヤマウチ,シゲジ
+イシノ,ツトム
+イオク,ヒデトシ
+アラキ,ヨウコ
+フジワキ,ミノル
+イチムラ,マサキ
+ハヤシ,ヨシサダ
+モリ,タクジ
+キムラ,シゲル
+ユキフキ,マサヒサ
+ハギモト,イワオ
+ハシモト,ヒデオ
+キタヤマ,ヨシテル
+フジモリ,ケンジ
+オクノ,オサム
+ヤマダ,ミツオ
+タゴ,タカシ
+アサイ,ヨシヒロ
+モリノ,ヒロシ
+ミナイ,ケイコ
+モリサワ,トヨコ
+ナリサワ,フミコ
+モリモト,マサル
+コバヤシ,ヨシノリ
+シマダ,ヒデキ
+スズキ,ミサコ
+フクダ,ケイ
+アライ,アキノブ
+タニヤマ,シュウイチ
+オカモト,マツオ
+ダイモン,ミノル
+ハヤシ,ヨシナオ
+イシダ,フクオ
+ヒロサワ,ヨシミチ
+ヨシオカ,マサズミ
+マツモト,シンイチ
+ナカジマ,サカエ
+キタ,サナエ
+ニシムラ,シゲカズ
+ハットリ,ヒデオ
+ヤマモト,カズオ
+イトウ,アキラ
+キタムラ,マスミ
+タナカ,トミオ
+イオキ,トミヤス
+カマタ,コウジ
+シミズ,ヒロシ
+マスオカ,ヒデオ
+サワダ,ショウコ
+ナカイシ,タケユキ
+ワタナベ,マサヒロ
+ヨシザワ,アキオ
+ササオカ,ノリアキ
+ヤマグチ,トシオ
+イマフク,タダシ
+カミヤ,トミエ
+ワサ,ヒデオ
+キクチ,アキヒコ
+ウカイ,ミキオ
+イワマ,セイイチ
+ツジ,ブンジ
+タケダ,サダツグ
+セトガワ,シゲトシ
+コシムラ,マサシ
+ワタナベ,ジュンイチ
+ウサミ,ミツノブ
+オカダ,トシヒコ
+フジワラ,ショウジ
+カトウ,ヤスユキ
+イシハラ,マサル
+ヒナタ,キョウヘイ
+ウエスギ,シゲヒロ
+シバタ,ノブカズ
+オクダ,マサル
+スナヤマ,ヨシオ
+イマイ,アキヒコ
+ナカムラ,ノブオ
+ナカモリ,コウジ
+フカサワ,ムネヒサ
+ミズタ,シンイチ
+オノ,カズシ
+サイトウ,ヒロシ
+シュドウ,ミノル
+フクイ,タツヒコ
+ノダ,カナエ
+オオノ,ハルキ
+コガミ,ヨシマサ
+ミキ,マサユキ
+イケダ,フミオ
+フジモリ,トシヒコ
+タカダ,カズオ
+イケダ,ノブゾウ
+イトウ,ノブタカ
+ワタナベ,カズヒロ
+サワダ,マサフミ
+マエジマ,マコト
+イナムラ,ススム
+ナカムラ,ヒロシ
+ナカジマ,シノブ
+イワマ,ヨシユキ
+ワカツキ,ヒデキ
+ハセガワ,ヨシロウ
+イノウエ,タカシ
+カサハラ,コウジ
+ニシヤマ,マサヒロ
+スドウ,ジュンイチ
+オカベ,トシヒロ
+フクバ,ケンジ
+マツナガ,ヤスオ
+サカイ,ヒロヒコ
+フジタ,ユキオ
+ナカヤマ,タカヤス
+ヨネダ,ケンゾウ
+クマタ,コウイチ
+コヤマ,ヒロユキ
+ヨネヤマ,タケシ
+フジカワ,ケンジ
+ハリガヤ,ヒロアキ
+ハセガワ,カズヒト
+ヨシダ,タダシ
+クスノキ,ヨシフミ
+タカハシ,サチコ
+ナガタ,シンジ
+ソノクラ,ヒロシ
+マスモト,ヨシオ
+オギハラ,ヒロシ
+ヨシダ,マナブ
+タナカ,マサヒコ
+エダ,セイイチ
+ナカ,タモツ
+イイズカ,ノボル
+テラニシ,マサノブ
+フクイ,セイジ
+デムラ,カズヒコ
+サエキ,シゲハル
+ウチダ,ヒデノリ
+シイナ,ノブオ
+フルヤ,ヨシハル
+ナガクボ,オサム
+テラウチ,ヒデアキ
+オオタカ,マサアキ
+フジヨシ,トオル
+サイトウ,マサオ
+クロサワ,フサエ
+イシカワ,ケンソウ
+ヨシノ,タカシ
+コミヤ,カズヨシ
+ヤマガタ,トシオ
+ツヤ,カオル
+ニシノ,ノリユキ
+ウチダ,ヒサオ
+ワタナベ,カズミチ
+モリタ,ノボル
+コシダ,コウゾウ
+ヒロセ,リョウヘイ
+ヨシムラ,カツトシ
+ミウラ,ヨシカズ
+コイズミ,ヒデノブ
+テラオ,ミツヒロ
+セガワ,ミチオ
+カイズカ,アキラ
+フクマス,スズヨ
+イトウズ,ジ
+セキガミ,ヒロシ
+フジ,イズミ
+ヨシムラ,キヨジ
+フルモト,ヨシユキ
+タキタ,マナブ
+オカダ,ヒロヒサ
+タカハシ,アキラ
+タニフジ,マサアキ
+イマオカ,カズヒロ
+ワタナベ,ケンジ
+ヤマモト,カオル
+ヨダ,ヤスオ
+フカヤマ,ヒロシ
+ヤマグチ,ヒサオ
+サノ,キミ
+タカハシ,ユリ
+マツモト,キヨシ
+ヤノ,ヒサシ
+アキバ,カズヨシ
+ミドリカワ,ヒロミツ
+タカシ,ミヨコ
+フルカワ,ミノル
+ヒキタ,エイジ
+オザキ,ヨシアキ
+アオキ,シゲオミ
+サエグサ,マサヒロ
+フジモト,ヒロシ
+コニシ,ユウジ
+オオニシ,シュンスケ
+ヒグチ,フジキ
+クボタ,ジュンイチ
+ヤマグチ,シロウ
+フルカワ,マサト
+ナリタ,イチロウ
+タナカ,フサイチ
+ハタケヤマ,テツオ
+ミヤモト,ミサオ
+ノザキ,ヤスハル
+ハセガワ,チョウシロウ
+シラカワ,ヨシヒコ
+アイダ,コウヘイ
+ヒロカワ,ヒロシ
+リュウカワ,ツヨム
+ヤマグチ,マスミ
+クリサキ,ヒデオ
+モリモト,ヨシミチ
+クボタ,マサアキ
+クマサコ,モリシゲ
+アダチ,ケンタ
+コンノ,ヒロアキ
+ヤマモト,エツコ
+イワイ,リョウタ
+オオハラ,ヒデオ
+イシハラ,トモノリ
+アオキ,タケシ
+モリ,ヨリコ
+ロッポンギ,マサアキ
+カトウ,コウイチ
+サトウ,ヤスオ
+マエゾノ,エイジロウ
+フジモト,ヒデノブ
+タニムラ,ヒロシ
+ナカニシ,ユタカ
+タカハシ,シンジ
+ナカイ,カズミ
+タカハシ,タケフミ
+シモ,ユウイチロ
+シバタ,イサム
+フルミチ,ヨシオ
+タケダ,アキラ
+フジタ,ヒロシ
+カギヤマ,テツヤ
+ワチ,マサノリ
+フジタ,ヒトシ
+コンド,シゲノリ
+マツモト,タカシ
+フクイ,ヒデユキ
+スガワラ,コウジョウ
+フカヤマ,アキラ
+イマイ,マサタカ
+サトウ,クニヒコ
+カナザワ,カズオ
+フチザキ,オサム
+ツカダ,ショウイチ
+イシザキ,タカユキ
+トクラ,ミキオ
+トノサキ,モトヨシ
+タカキ,ヒデオ
+フジタ,ヒロユキ
+ナガセ,レイコ
+タナカ,ヒロユキ
+タツミ,ヨシアキ
+ヤマモト,ユウイチ
+フクタ,タカナオ
+クワハラ,ヨシユキ
+フジタ,エイゾウ
+イナクマ,トシコ
+ミサオ,コウゾウ
+ナカシタ,マコト
+オクヤマ,ユウジ
+ナガエ,カズヒロ
+ナガイ,ショウゴ
+ヤマザキ,マサル
+シライシ,ショウイチ
+ウエダ,シゲル
+オジマ,ヒロアキ
+ヒロセ,マサノブ
+ヒラノ,マサル
+フルタ,タカオ
+コヌマ,カオル
+タカヤマ,トモハル
+アサシタ,マサフミ
+ヨツハシ,ヒロシ
+ツチヤ,タカミ
+オオニシ,イサオ
+ヤマグチ,ショウジ
+シズノ,イサム
+ハシベ,リョウイチ
+ホリイ,ミヨシ
+ナガオカ,ノリコ
+クリタ,ショウヘイ
+キバ,サナエ
+イダ,マチコ
+フクトミ,カズミ
+コバヤシ,ノボル
+イリ,ケンイチ
+サタ,マスグ
+マルヤマ,ヒロフミ
+アオヤマ,シゲル
+シンドウ,ヤスオ
+アイカワ,キョウジ
+サカノウエ,ケンイチ
+フジマキ,タダアキ
+カワハラ,マコト
+ムラタ,ヒデユキ
+ヨシダ,ユウイチ
+イタクラ,テツヤ
+ジゾバラ,ヨウ
+タナカ,トシオ
+カジワラ,シュウイチ
+タナカ,オサム
+ハスイケ,シュウジ
+トウマ,ユミコ
+カワキタ,アキラ
+マツモト,ヤスヒコ
+ハセガワ,ミツオ
+フジイ,トオル
+ノムラ,ミチタカ
+ヨウコタ,ヒデオ
+カナザワ,コウゾウ
+マスヤマ,シンイチ
+カノウ,ヒロシ
+フナヤマ,エツオ
+ヤマシタ,キチヒコ
+サトウ,マサカズ
+カメモト,ヨシフミ
+イトウ,キヨシ
+オクムラ,シゲオ
+フジイ,テルオ
+キハラ,タカシ
+ノムラ,リサク
+アクタガワ,ツトム
+イシダ,クニオ
+ウメハラ,シゲル
+オオギ,ナオユキ
+コンド,ハルオ
+タケダ,ケイコ
+マツイ,フミエイ
+カミオカ,マサル
+カモシタ,ヒロミ
+ヤナギサワ,タケヒロ
+タケウチ,マモル
+モンマ,ミノル
+イイダ,カナエ
+ハセガワ,トシジ
+ナガホリ,ヒロシ
+モリオカ,タダノリ
+ニシヤマ,アキオ
+ヤマモト,ヤスオ
+イシダ,トシオ
+フルド,マサオ
+カンダ,マサアキ
+イシダ,シゲル
+サイトウ,タカヒロ
+キムラ,ヒトシ
+イワミ,ヤスノブ
+モリ,シュウイチ
+タカヤマ,ショウゾウ
+ハヤシグチ,アキヒコ
+サイトウ,ヤスオ
+シバタキ,クニアキ
+オギハラ,ヨシハル
+カトウ,イサミ
+フクト,ナオヤ
+オダ,ヒデアキ
+サトウ,マサヒロ
+ナカムラ,ユタカ
+ハマダ,タカヒロ
+オガサワラ,テツヤ
+ムラキ,カズヒコ
+オオハシ,アキヒト
+タカノ,タカシ
+ナカザワ,カズトシ
+ミヤジ,アキヒロ
+スエナガ,ヤスオ
+タタキ,アキラ
+ヨシダ,イワオ
+アオキ,ヒデシ
+スギムラ,カオル
+イトウ,マサトシ
+タカハシ,シンイチ
+スズキ,イサム
+カタヤマ,トシヒコ
+サイトウ,マサシ
+タジマ,ヒロシ
+アベ,ヨウイチロウ
+ナカジマ,シゲキ
+ヤマグチ,マコト
+ワキザカ,マサヒコ
+サコ,サダト
+オオツカ,トモヒロ
+ツカモト,ススム
+イノウエ,フミオ
+ナガオ,トオル
+ウラバ,マサオ
+コジマ,ヤスヒロ
+タケダ,ユウジ
+アオノ,ジンイチ
+イズカワ,ノブオ
+クドウ,カズアキ
+ナカムラ,トシユキ
+マツオ,マサフミ
+イナガキ,シンイチ
+ニシモト,ショウイチ
+イノウエ,ヒトシ
+オノデラ,テツヤ
+イシザカ,トシヒコ
+ハギワラ,ケンゾウ
+フルタ,マサル
+ウエジマ,トミオ
+ヌマタ,シュウイチ
+エンド,マサヒロ
+カガヤマ,シンヤ
+ユリモト,ヒトシ
+フチ,タダオ
+フジオキ,ヒロノブ
+サイトウ,マサトシ
+マツモト,ミツアキ
+ヒロセ,ヨシカツ
+ババ,ジュンイチロ
+コバヤシ,ヒロユキ
+スズキ,マサミ
+ナカヤマ,カズオ
+キシ,ヒロシ
+アサノ,マサカズ
+エンド,アキオ
+イシバシ,ダイゴ
+カイダ,ミツオ
+イケジマ,ヒデアキ
+ハラダ,トシオ
+ハマノ,コノム
+カワイ,ミチル
+ワダ,トシマサ
+サトウ,ヒロシ
+タナカ,セイジ
+アクツ,ヨシノリ
+イトウ,キヨミ
+アンドウ,イワジ
+アイザワ,フトシ
+クボタ,キヨシ
+フカウミ,サトシ
+シミズ,ヒトシ
+タカハシ,サトシ
+ナミキ,テツロウ
+ノザワ,ヤスシ
+コイタバシ,キヨヒロ
+タテイシ,ヒロミ
+カワカミ,カズオ
+コバヤシ,カズノリ
+オノズカ,ヒデオ
+タグチ,ミツグ
+タカハシ,マサアキ
+サトウ,ヤスヒロ
+クワハラ,シロウ
+セト,サトシ
+ゴケ,ヒデキ
+ヨシムラ,キヨシ
+タカヤマ,ノブユキ
+ササキ,ユキオ
+カノウ,シゲキ
+タカハシ,シゲハル
+ナガオカ,トモユキ
+スズキ,ヒデキ
+ヤマグチ,アキラ
+モリ,サトル
+スズキ,イツオ
+ウエムラ,マサトシ
+ヤブハラ,ミツヨシ
+シライシ,カズキ
+キクタ,マサノブ
+ナカイ,ミツノリ
+クラモト,ユタカ
+スミヨシ,ヒデオ
+タカギ,ヒロヒサ
+ショウジ,ノリオ
+オサダ,マサユキ
+アサノ,サトシ
+イワサ,キヨシ
+ババ,ユタカ
+ヒロタ,サトル
+フジモト,ミサコ
+サノ,マサル
+モトキ,ヤスユキ
+イトウ,マサノリ
+ウケガワ,フミオ
+ウメバヤシ,イサオ
+イナトミ,カズヨシ
+タカヤナギ,マサアキ
+ハラ,イサオ
+ナカハラ,ブンロウ
+サイタケ,セイジ
+カシヤマ,ヒロシ
+サカイ,トモユキ
+イトウ,ノリカツ
+ナカムラ,ヨシノブ
+オオノギ,タケシ
+イカミ,ユタカ
+タカハシ,シンイチ
+シイナ,トミオ
+タマノイ,ショウイチ
+クボ,ヒデアキ
+キムラ,タカシ
+ホッタ,ヒトシ
+ホカリ,タカユキ
+サトウ,アキオ
+ホシノ,シュウイチ
+カブラギ,トシヒロ
+オサダ,トシフミ
+スエヒロ,タカオ
+ムラカワ,ヨシミ
+イワサキ,ケンジ
+ヤマムラ,シンジ
+モリタ,タツオ
+イケダ,ヨシノリ
+ヤウチ,ヒロシ
+ヤマシタ,カズヒデ
+ワタナベ,ヒロシ
+アナン,エツジ
+ニシノ,タツロウ
+コシミズ,ヤスオ
+タカハシ,カズオ
+エガワ,トシオ
+ヤマザキ,タツヒロ
+イマゼキ,ヨシフユ
+スズキ,ヒデキ
+ニシハラ,ユウイチ
+オカベ,イサム
+サカイ,マサヒロ
+タダ,トシオ
+スエヨシ,ミキオ
+ハヤシ,イタル
+タカハシ,ケンジ
+コアシ,ハジメ
+モリカワ,エイシ
+カトウ,ヤスクニ
+マエバ,マサヒロ
+ヤノ,タツオ
+イトウ,ヨシハル
+ナカイ,ヒロシ
+オダギリ,カズオ
+エンド,テツオ
+タケイ,ヤスユキ
+ナカタニ,ミチノリ
+イワサキ,トモヒロ
+カラカサ,アキヒロ
+アサノ,ケンイチ
+イワブチ,マサル
+ハンダ,トオル
+テラオ,ヨシユキ
+タケイ,ヨシモト
+ハシモト,ヨシミ
+ミヤサカ,ツトム
+テラダ,イチロウ
+サカタ,ヤスユキ
+ナガヤ,カツミ
+ハシモト,ケンジ
+オオクラ,ツトム
+ナカサキ,ミツグ
+キリハラ,トシユキ
+アライ,シュンジ
+イワノ,ヒロユキ
+ハットリ,ヒロノリ
+スズキ,トオル
+ニシハラ,ヒロシ
+ササキ,シズオ
+ハナフサ,ツトム
+ノドノ,タツユキ
+カワバタ,クニオ
+シミズ,ヨシナオ
+ナガシマ,ツグヒコ
+モリ,カズオ
+シミズ,シゲアキ
+ヒサヤス,ケイゾウ
+カタウラ,シゲユキ
+タケムラ,アキミツ
+イマニシ,マサト
+オカダ,アキヒコ
+ナカエ,オサム
+シロノ,ジュンイチ
+ヨコヤマ,ノブオ
+オカザワ,マサヒコ
+カミ,ノリトシ
+クマベ,マサオ
+シミズ,タツロウ
+ヤナギサワ,ショウイチ
+マキノ,ユウジ
+サワ,ワタル
+ウシロダ,クニオ
+マチダ,ツカサ
+コバヤシ,タカオ
+シゲムラ,トシハル
+ヒグチ,タカシ
+イイヌマ,マサユキ
+イズミ,ミノル
+ハヤシ,ヒロトシ
+ヤギ,チハル
+オオカワラ,キヨタケ
+フクオジ,オサム
+ウガジン,マサミ
+タナベ,シン
+ゴシマ,マサヒデ
+アンドウ,ヒロシ
+オダマ,ユキオ
+オカザキ,イワオ
+イシカワ,フミユキ
+ムラヤマ,マサコ
+ハヤサカ,ケイジ
+ナカジマ,タク
+タケモト,ヨシミ
+キタジマ,ジュンコ
+ミカミ,ナミ
+ワラシナ,ジュンヤ
+キムラ,シン
+オザワ,ヨシカズ
+ヤマムラ,ヒトシ
+ヨシダ,シゲキ
+タチバナ,タクロウ
+マツモト,ノリノスケ
+ミシマ,ヒデアキ
+セキ,ヒロシ
+タカハシ,ヤスヒサ
+オオイケ,マサシ
+フジモト,シュウジ
+ヨシムラ,ノブヒコ
+コバヤシ,メイジ
+オオガミ,ヨシユキ
+カイ,ショウタロウ
+カエツ,マサハル
+モロイ,タカヒロ
+ミズノ,イクオ
+オオツカ,アキヒコ
+オオタ,カオル
+セキネ,リュウジ
+ミヤグチ,カズタカ
+ヨネダ,ナホコ
+ホリウチ,マサコ
+エグチ,カツミ
+ウシロマツ,カズミ
+イイダ,ユキヒロ
+ヨシダ,ヨシミ
+ナカセ,アキオ
+スズキ,ユウコ
+オイカワ,エイコ
+カワベ,サツコ
+タニザワ,タカオ
+カネコ,ハルヨ
+フジオカ,ケイコ
+ムラオカ,ツヨシ
+ウヌマ,ケイコ
+ミヤケ,フキコ
+ナカムラ,チアキ
+オオワ,マサハル
+ネモト,イチロウ
+ニシムラ,トモヒサ
+タツミ,イワオ
+サトウ,アキオ
+スノハラ,トシヒコ
+アスマ,キヨカズ
+タカバ,ノブアキ
+ヨシムラ,サトシ
+アベ,ナオト
+キクチ,ケイジ
+ナカムラ,カズマサ
+ハムラ,ツトム
+スズキ,ノブヒト
+カワムラ,トシヤ
+ヒビノ,ヒサエ
+キタダ,マサヒロ
+サトウ,ツネオ
+カトウ,カズオ
+イトウ,ユウジ
+フクトミ,マサル
+ムロズミ,マサヒロ
+ヤマナカ,ジュンイチ
+オカダ,ケンイチ
+トウゴウ,タケシ
+ナリタ,タカシ
+イケザキ,タケシ
+カワバタ,シロウ
+マツオカ,ノブオ
+ナカダ,ヒロシ
+サトウ,シンヤ
+タケザワ,ヨシヒロ
+ヤナガワ,ヒロシ
+ヤマサキ,ノリユキ
+シガキ,ノリアキ
+ユミ,タケシ
+オザキ,ツトム
+ナガシマ,タイスケ
+ヤブウチ,ヒサオ
+ホソヤ,ヒサシ
+ニシザワ,ソウジ
+ハヤミ,ヨシオ
+ハセガワ,ナオミ
+カワサキ,カツヒコ
+トヨイズミ,タカユキ
+オクムラ,マサト
+ヤマダ,ノブヒロ
+ニワ,エイヒコ
+ニシザキ,ヒロシ
+スギモト,シゲル
+オオサワ,トモナオ
+トダ,トシアキ
+ナカノ,ヨシカツ
+ミウラ,ヒサシ
+ヤマザキ,ナオユキ
+サカモト,ヒラク
+ヤマダ,ミチコ
+イノウエ,カヨコ
+ヤスイ,マサヨ
+マツダ,ユミ
+カタオカ,アケミ
+スズキ,ケイコ
+ハヤシ,ケイコ
+ハママツ,ヤスコ
+ハマノ,エリ
+ミズタニ,ミヨコ
+スミタ,モトチカ
+ハヤシ,マキコ
+トクナガ,ユミコ
+カトウ,ノブコ
+マツウラ,ミエコ
+ヒャクナ,ヒデコ
+アンザイ,ヨウコ
+フカマチ,スミオ
+ミサキ,タケシ
+モチズキ,トヨヒコ
+アオヤギ,アキラ
+タカハシ,ユキヒデ
+キセ,アキラ
+ウエモリ,シゲル
+アズマ,ミエコ
+オダクラ,ヒロミチ
+タナカ,ヒサオ
+トイタニ,カツロウ
+ヤマザキ,ケンイチ
+ハシモト,タカシ
+マツミヤ,マサヒコ
+フシミ,チカト
+キョウヤマ,テルオ
+ヨシダ,ケイコ
+ウルシド,アツコ
+セオ,ミエコ
+ミナカワ,ツキコ
+フジノ,カズユキ
+ヒロタ,タカシ
+オオタ,ヨシミ
+オオガ,マサノリ
+ナガハマ,タツオ
+ジンノ,ヤスキ
+イチカワ,ハジメ
+ハヤシ,タダシ
+ハタヤ,トシユキ
+ホリコシ,ノブヒコ
+カニ,アキオ
+ホンダ,モトヒサ
+ツチヤ,トミオ
+タマテ,ミツル
+ユカワ,エイジ
+サカイ,ユウジ
+ミヤジ,ユウイチ
+タムラ,ヒトシ
+カワグチ,ヒデマル
+サノ,マサカズ
+ナカムラ,ユウイチ
+コバヤシ,ユキオ
+イダ,イチロウ
+セキモト,ヨシヒロ
+カワマタ,カズオ
+クボ,ヒロシ
+タカノ,ヤスヒロ
+ワタナベ,ヤヨイ
+イカルギ,ミノル
+サトウ,タダシ
+ヒダカ,ヨシヒコ
+ヨシイ,コウゾウ
+シマムラ,エイロ
+オビ,トシオ
+ナカジマ,トクノブ
+ホシノ,ノボル
+カワモト,ジュンジ
+ニシダ,ヤスヒデ
+シミズ,マサアキ
+タムラ,ジュン
+トヨシマ,ヨシミツ
+エンド,タカオ
+オガワ,ナツアキ
+キタハラ,フミオ
+オグニ,ケンジ
+オブチ,ケイゾウ
+ミヨシ,カズオ
+イケノ,シンイチ
+ウエマツ,カツアキ
+フクザト,リュウイチ
+アオキ,タカシ
+サメジマ,サチオ
+キドマ,ケンジ
+コダイラ,キクオ
+ヒグチ,タツオ
+マエシロ,カズヒロ
+タナカ,セイジ
+ナカガワ,ヨウスケ
+イノウエ,ヤスヒデ
+トリウ,マサアキ
+マルヤマ,ナオキ
+マツウラ,ケンジ
+タメチカ,カオル
+ササキ,キョウコ
+オオタキ,シンスケ
+オガワ,マコト
+マツミ,マスエ
+アリマツ,シゲオ
+コラク,ユウゾウ
+ミヤシタ,ミノル
+オズチ,ミツオ
+サカキバラ,タカコ
+サトウ,アキラ
+ヒロセ,トモコ
+ツチダ,トシアキ
+ハシラ,チヨ
+フロモト,ミノル
+コサカ,アキヒロ
+タケイチ,ヨウイチ
+テラダ,ヨシカズ
+コイデ,ヒデキ
+サイトウ,ショウイチ
+ミヤナガ,ノリヒコ
+ニシムラ,シンヤ
+タナカ,ユウゾウ
+,ユミコ
+ユクヒロ,レイコ
+ヨシワラ,ジュン
+アオキ,ルミコ
+タテイシ,ユリコ
+タケダ,トミコ
+ヤスダ,フジコ
+アオキ,ヒデユキ
+ヨシダ,ナオコ
+アダチ,アキコ
+ノグチ,ヨシノブ
+ワタナベ,シゲユキ
+タケトミ,コウイチ
+クリワキ,マサキ
+キタズメ,モトヒコ
+オサダ,トシオ
+アシガイ,ヨシタカ
+サカシタ,キヨシ
+ツチダ,シュンイチ
+オカダ,ミチオ
+タナカ,ヒデチカ
+オオタゴシ,コウゾウ
+クロサカ,エイジ
+スザキ,アツシ
+カネミツ,ヒロユキ
+マト,カズユキ
+トヨフク,マサオ
+アライ,ヒロカズ
+フジカワ,ノブアキ
+ヨコオ,タカヨシ
+アマノ,ハルオ
+オオノ,タカフミ
+スズキ,アキヨシ
+カトウ,マサユキ
+サイトウ,ミツオ
+オウ,カツミ
+ミヤザキ,イサオ
+キヤ,フミタマ
+フジタ,カズヒコ
+ムカイ,ヨウイチ
+マツモト,カオル
+カワイ,ユキオ
+マツモト,キヨタカ
+タケウチ,リョウジ
+コジマ,ヒデオ
+ハセガワ,タツオ
+コガ,ヤスオ
+ヤマダ,コウイチ
+オオタ,ミノル
+ヤマモト,シンスケ
+サクラモト,フジト
+ヤナギサワ,クニオ
+フクイ,コウジ
+カトウ,カズミ
+イワタ,ヤスユキ
+フジモト,タダフサ
+キノシタ,アキヒコ
+ヤマダ,ジロウ
+クラマエ,コウジ
+クラタ,タカシ
+ヨコイ,フミトシ
+コバヤシ,ヒデヤ
+カトウ,モリヨシ
+マスイ,ヒトシ
+ウラタ,テルアキ
+タカハシ,マサヒロ
+ウシゴメ,マサタカ
+ハライ,シンジ
+ウダガワ,トシロウ
+タカギ,カズユキ
+ミヤザキ,サトミ
+ヤマムラ,マサヒロ
+ヤマギシ,リュウイチ
+コマツ,ヨシタカ
+ハマグチ,ユカ
+モリ,ヒロカズ
+ヤマダ,ヤスノリ
+カガワ,ミチオ
+キクチ,フミキ
+クジ,ヤスシ
+イトウ,ヒサアキ
+カワグチ,ヨシカズ
+アラキ,シンスケ
+オカベ,ヒロミ
+コボリ,シンイチ
+オチ,オサム
+マルオ,ハジメ
+サトウ,シュンスケ
+タナカ,ヒデノリ
+マツヤマ,トシオ
+オオツカ,クニオ
+ヤマモト,ケンジ
+フジオ,ミツエ
+ノムラ,ヒサタカ
+ヒロセ,ノリヨシ
+アンザイ,シゲノリ
+オオツボ,ミチロ
+サイトウ,リュウジ
+イトウ,サトシ
+ワラサワ,キクオ
+アラカワ,ヤスナリ
+ゴミ,ジュン
+エンド,サチオ
+ヨシダ,マサハル
+ウチダ,ヒデオ
+アサイネ,テツヤ
+オシマ,シゲオ
+タナカ,タツオ
+オオコ,マサロウ
+イズツ,ナオル
+ハヤシ,マサユキ
+フジキ,トオル
+シオカイ,カズヒコ
+ナガフチ,キヨツグ
+マツモト,タイイチ
+カトウ,ヒロシ
+ワタナベ,ケイジ
+ハマグチ,リュウイチ
+カネコ,ユタカ
+サトウ,トシオ
+オオイ,マサキ
+ハヤシ,セイジ
+キミツカ,マサオ
+フクダ,マモル
+ナカムラ,タダシ
+ヤバシ,ケンジ
+コバヤシ,タカユキ
+トクダ,トモカズ
+タカハシ,カツヒロ
+イトウ,ミツオ
+ノグチ,ヨウイチロウ
+カワナ,ノリオ
+ナカノ,ツヤコ
+ヤマダ,マサコ
+ヒラマツ,ソウタロウ
+アライ,トシユキ
+ヨシノ,カオリ
+ハマダ,カズオ
+オオタ,トシヒコ
+シバタ,マスアキ
+ワカヤマ,アキヒロ
+ホシ,キヨシ
+ミワ,マサオ
+タナカ,ユウジ
+カナヤ,ノリヒコ
+タケナカ,ジン
+サトウ,トシユキ
+ミズシマ,トヨウイチ
+テラダ,シゲル
+モリヤ,タダユキ
+スギヤマ,モトハル
+ウミ,ハルオ
+キグチ,ヨウイチロウ
+ウルワシ,タケシ
+ヒラマツ,ミチオキ
+イズハ,ハルオ
+イトウ,マコト
+サトウ,マスオ
+シゲノブ,ケンジ
+ヨシモト,カズオ
+シバタ,ツヨシ
+フナコシ,イチゾウ
+スナダ,ヤスジロウ
+,ヤスオ
+キクマ,ナオヒコ
+スト,サトシ
+ニシザワ,ヒデオ
+コバヤシ,ミツコ
+カワゴエ,マサヒコ
+イジマ,フミオ
+ニシオ,ヒロシ
+ニシヤマ,ノブユキ
+サイトウ,ヨシアキ
+カドワキ,ヒロミ
+ヒロセ,タカオ
+タグチ,タカヨシ
+タカダ,トシハル
+ワタナベ,ケンジ
+カトウ,シゲアキ
+ナカハラ,クニオ
+イシクボ,リュウイチ
+ヤマダ,ヨシオ
+ワカマツ,コウジ
+カワシマ,ヒロユキ
+カタモト,ケンジ
+タカヤマ,キミヒコ
+ツチダ,タツシ
+タチバナ,ヒデオ
+コバヤシ,アキラ
+ツダ,トシユキ
+モリカワ,ユキオ
+オクノ,ヨシオ
+イマイ,マモル
+ムラオ,タダシ
+シモムラ,ジロウ
+エンド,トシノブ
+ホシクマ,マサハル
+カワセ,シンサク
+マチダ,ムネシ
+コバヤシ,タツオ
+ハダ,ヒロシ
+ツクダ,マサハル
+ニシカワ,ショウ
+ホンダ,ヒロミ
+ワシオカ,トシヒロ
+ムロイ,ヨウ
+ヤスダ,マサシ
+ヨシダ,ヒロユキ
+ホリ,アツコ
+コウダ,コウエイ
+カマダ,エイジ
+ウエムラ,ヒロミ
+マツバラ,カズヤ
+ミナトグチ,シゲル
+クガテン,ヤスシ
+イワセ,ノブヒロ
+ハヤシ,ミツヒロ
+イクナミ,シンジ
+イトウ,タカシ
+コヤマ,ヒロミチ
+オトマル,ヨシヒト
+ナガイ,モトハル
+イトウ,マコト
+イマイ,タツル
+マスダ,タカヒロ
+カワベ,リョウタ
+サトウ,ケイジ
+サコ,マサハル
+ムカイ,ジュンイチ
+オシマ,クスタカ
+ツチヤ,イズミ
+ハヤシグチ,トシアキ
+サトウ,セイイチ
+ムラサト,ユキヒコ
+ハルヤマ,マサオ
+シゲモリ,シュンイチ
+フナキ,ヒサオ
+ワダ,イクト
+ツボカ,シンスケ
+トダ,ジュンイチロ
+ヤマムラ,タダアキ
+イシグロ,シンイチ
+フナハシ,ユキ
+スズキ,ヨシオ
+ヨシダ,キミヒロ
+ワタナベ,ツギオ
+ナカニシ,タカミツ
+ヤマモト,ジュンジ
+イシカワ,マサユキ
+タケウチ,コウイチ
+オクノ,サトシ
+ダテ,ジュン
+タベ,マサトシ
+ヤギ,リョウイチ
+ヨシダ,カズオ
+フルタ,タカユキ
+カワグチ,リュウタロウ
+ハスコ,ヨシノリ
+ナガミネ,シュンジ
+タケシタ,サトシ
+アカオ,カズユキ
+ワキモト,タカシ
+タサカ,ケンジ
+ナカシマ,ヤスヨシ
+タケナカ,ヒロアキ
+ヤマシタ,ナオヒコ
+クボエ,テルオ
+オグシ,ショウイチ
+アサカ,シゲトシ
+エグチ,ヒロヨシ
+オオサキ,マコト
+オクダ,カズオ
+オクムラ,カズロ
+カナマル,ヨシヒコ
+キノシタ,オサム
+ササキ,キヨヒデ
+タカノ,タツオ
+ハシダ,シゲル
+ホシ,ユウスケ
+ミズノ,カツヒコ
+ミツハシ,タツヤ
+モトハシ,マサシ
+ヤマダ,テツジ
+ナガノ,マサユキ
+イシイ,ユキヒロ
+カメダ,カオル
+キハタ,タケヒデ
+コバヤシ,オサム
+シラフネ,タカヨシ
+ナツハラ,ヒロアキ
+ニシハラ,ヤスヒサ
+ハシバ,タクオ
+ヒシヌマ,ヒロフミ
+ヒビヤ,シンタロウ
+ミヤ,ヒデハル
+ムラカミ,フミオ
+ムラタ,ハジメ
+ワタナベ,ショウイチ
+オオニシ,ヒロアキ
+タケシタ,ヒロシ
+ツバキモト,ヤスシ
+ハマオカ,タケオ
+ミズノ,トヨタカ
+アベ,ヒロミ
+アライシ,マサミ
+サトウ,マサアキ
+サワノ,セイザブロウ
+シモジョウ,タダミ
+タカダ,カズヒデ
+ナガタ,ヤスヒロ
+ニシハタ,マサフミ
+ハヤシ,ソウイチ
+ホソカワ,アキラ
+アオキ,ミキトシ
+ヨシダ,ヒロトシ
+ワタナベ,タカオ
+イワサワ,タカハル
+ノセ,スエオ
+ヒラシタ,ヒロヤス
+ヨシザワ,ヒデオ
+ムトウ,ケイゾウ
+ミワウラ,ヒデアキ
+キクチ,ハジメ
+エゾエ,ヒロミ
+イシカワ,タケシ
+イチカワ,タカシ
+ハラダ,ヨシタカ
+ムラタ,ヨシト
+イトウ,ミキオ
+ホシナ,ケイヤ
+トクダ,ノリオ
+タグリ,カズヨシ
+ササキ,トモユキ
+タマル,ハルオ
+ニシハシ,シゲオ
+ジツカワ,カズヒコ
+スズキ,サイチ
+オオニシ,キミコ
+ナガサキ,ユウコ
+イイダ,ヒデミ
+タカノ,マサヒロ
+ヒサノ,トシツグ
+イノウエ,ヒデキ
+イシクラ,マサユキ
+アキヤマ,コウジ
+イチカワ,センリ
+キガワ,コウイチ
+サイトウ,ヒロユキ
+ヨダ,ミキオ
+アラキ,ユウジ
+スギハラ,ヒデヒサ
+カワグチ,テイジ
+ミヤ,マサヒコ
+イケオ,ヒロユキ
+サクライ,フジオ
+コシノ,ヨウスケ
+キクカワ,カズオ
+ユアサ,タカシ
+スズキ,ユウジ
+マスダ,シンタロウ
+アライ,ヤスオ
+イケダ,トシオ
+キス,アキラ
+ウシヤマ,レイ
+カマタ,エツシ
+ウサミ,キヨシ
+ナカノ,タケシ
+カキカワ,ジュンイチ
+キジマ,ヒロユキ
+ムカイ,マサヨシ
+ナガヤマ,マサコ
+ハットリ,マサオ
+ミシマ,ツヨシ
+ゴトウ,クニトシ
+イトウ,ヒロユキ
+オガタ,カヨコ
+クサバ,ハルユキ
+テラエ,ヒサト
+ホンダ,ノリオ
+アクタガワ,ミノル
+ミヤコシ,ヤスエ
+フクシマ,ケイスケ
+シノズカ,トモコ
+オオタキ,ショウジ
+ナガマツ,セイイチロウ
+アライ,マサル
+マツダ,サチヨ
+フジタ,アツミ
+カミグチ,ヒロアキ
+カトウ,ヒトシ
+ヤマザキ,タケノリ
+ウメタニ,アツコ
+ナルセ,ジュンコ
+クボ,クニオ
+クラタ,ヒロユキ
+コンド,テルオ
+タケウチ,ミキヤ
+イノウエ,ノリオ
+タカダ,ヨシカズ
+アクツ,カツユキ
+トリイ,ヒロミ
+モリオカ,ユミコ
+カクタニ,マナブ
+タケイチ,チエコ
+タイ,ケイコ
+ツチヤ,マサフミ
+マスダ,マサタカ
+カンダ,ヒサオ
+ヤマウラ,ヤスヨシ
+キノシタ,シゲミツ
+ホサカ,クニオ
+マルオカ,ヒデユキ
+カマタ,ヒロシ
+ハタナカ,マサミ
+クロハ,ヨウコ
+トツカ,ヨウコ
+イシイ,フヨ
+モリタ,マチ
+ホンマ,シゲル
+アラカキ,ヨシトモ
+タケ,タケヒコ
+イズハラ,ナオカズ
+ヒサトミ,タロウ
+スズキ,ヨシヒロ
+ニシナカ,ヒサノリ
+ミズノ,コウゾウ
+モリムラ,アキラ
+タカハシ,トシカズ
+シゲトメ,ヨシアキ
+サトウ,ユウジ
+マエカワ,マサミ
+ヨシイ,トシノリ
+ホソヤ,ヒデヒコ
+サカモト,カズオ
+コイズミ,シゲミ
+ニシ,ヤスフミ
+カネコ,アキラ
+スミクラ,ショウヘイ
+ヨコオ,タカオ
+ササキ,カズオ
+ハヤシ,アキラ
+タナカ,キヨシ
+アキヤマ,トミオ
+サイス,ヨシカズ
+ノガミ,セイジ
+トヨシマ,シュウイチロウ
+シン,タカシ
+フキノ,モリヨシ
+イケダ,カズキチ
+オダワラ,リツ
+タカハシ,トシカツ
+ケイマ,ジュン
+シミズ,コウジ
+イマイズミ,トモジ
+モリタ,ユミコ
+モリ,ヤスミ
+マエカワ,ヤスカズ
+ヤナギダ,ススム
+ムラモト,ヒロシ
+スズキ,ヒロシ
+ホソエ,マサヒコ
+イシクラ,セイジ
+ヒロカワ,ユウジ
+カラシマ,タカシ
+マチダ,シンイチ
+モリヤマ,ヒサノリ
+タケムラ,テツゾウ
+ツカモト,アキフミ
+ヤマグチ,ヒロヒト
+ソメヤ,アキオ
+ナカゴメ,ヒデオ
+イワナガ,ケイスケ
+セキヤ,ケンジ
+テライ,カズヒロ
+タナカ,ヒデオ
+セキヤ,ジュンロウ
+サクライ,エミコ
+イソベ,マツタロウ
+マツオカ,タカヒコ
+イチ,マサノリ
+ヤマモト,シロウ
+デグチ,タカトシ
+ヒラマツ,ヨシオ
+ミズノ,イサム
+トミナガ,マサヒロ
+タカシマ,ヒトシ
+ノガミ,ヒロシ
+オオツ,ヒロフミ
+コバヤシ,ケンイチ
+テラダ,トシカズ
+サイトウ,タツヤ
+アサノ,タカヤ
+シモムラ,ノリトシ
+オオイシ,ノリヨシ
+タナカ,ツネオ
+マツモト,キヨシ
+ヒラマツ,シゲル
+タケウチ,ミノル
+シゲハラ,テルマサ
+オカモト,ハジメ
+ムラヤマ,モトコ
+コマツバラ,シズオ
+エバタ,ケンジ
+オオタ,ゴロウ
+テラオ,ヒロユキ
+オオサワ,マサル
+カワシマ,タツミ
+アライ,マサシ
+ハシズメ,アキラ
+ミズシマ,コウジ
+ヒラマツ,エツオ
+オクムラ,ヨシコ
+ミズナカ,コウシ
+ホリウチ,シュウイチ
+タキモト,トシオ
+ヤスバ,コウジ
+キタノ,モトノブ
+ニシダ,ユキオ
+イシカワ,トシミ
+オオバ,ヒサオ
+カシワギ,カズユキ
+サトウ,オサム
+マツダ,アキオ
+コムロ,ナオキ
+ムラタ,ヒデユキ
+ササガワ,カズオ
+サタケ,ハルトシ
+クワノ,ヒサオ
+ゴトウ,カツミ
+フジイ,シンイチ
+ミズコシ,ケンイチ
+フジマキ,カズヤ
+イデタ,ヒトシ
+ナカツカ,タカシ
+ウンノ,タケミ
+スズキ,カズヒロ
+ハマ,ヒロシ
+トミタ,タカオ
+タニツ,ユウゴ
+スズキ,マサミチ
+オクムラ,チヨジ
+フクシマ,カズヒコ
+オオハシ,ヒカル
+ヤマシタ,タカオ
+カワミ,セイイチ
+ハルタ,ケンイチロ
+ミヤモト,ヒロシ
+ツジタ,ユウコ
+イマムラ,マサオ
+サトウ,サブロウ
+ナカジマ,ユキコ
+シイノ,シゲオ
+ゴトウ,ミノル
+カトウ,モトハル
+ナガイ,チエコ
+ウチノ,アツシ
+エイジマ,オサム
+ヤマナカ,コウジ
+ナカムラ,ノブオ
+スズキ,ヤスユキ
+セムラ,リュウイチ
+ナカガワ,カツヒロ
+タヤ,タカシ
+ムラカミ,ヒロノリ
+イシカワ,コウイチ
+セキグチ,ショウイチロウ
+オオノ,ヨシユキ
+オイカワ,トシヤ
+イワイ,クニヤス
+アサヒ,ケンジ
+ゴトウ,カオル
+カネタケ,カナメ
+ウエマツ,トシノリ
+フクシマ,ヒロジ
+フクダ,タカユキ
+スズキ,キョウコ
+オグラ,ユキヒコ
+ヒラデ,ノブカズ
+オシゲ,タイチ
+マツモト,エリコ
+ササキ,エツオ
+ゴンダ,マサル
+マツオカ,セイジ
+ウメザワ,マサツグ
+ニシオ,カズナリ
+コジマ,ユウゾウ
+タニグチ,ヨシツグ
+オオギス,ヒロシ
+サダヒサ,コウイチ
+フジワラ,モリオ
+ハットリ,ナオユキ
+カマタ,トシオ
+トバ,マコト
+ヤマダ,タダヒロ
+ヤマモト,ミキオ
+タケウチ,タケシ
+アラキ,ヒデフミ
+ニシオ,セツコ
+モリウチ,サナエ
+イワタ,ヒデアキ
+ササキ,マサロウ
+マエガワ,ヤスツグ
+フクニシ,カズノブ
+ウエダ,トモヨ
+ヤマギシ,マコト
+オノ,ケンジ
+フジタ,フクキチ
+キタムラ,ヨシミツ
+ヨシハラ,ユリコ
+イワサワ,タクミ
+コマツ,タツヨシ
+タニムラ,ヒロアキ
+コサカ,ヒサタケ
+タシマ,マサユキ
+ニシオカ,カツユキ
+スズキ,トシオ
+ゴトウ,ヤスヒラ
+カワハラ,ジュンイチ
+タジマ,ショウジ
+カンノ,アキオ
+カタシマ,シンヤ
+ハシモト,ミスズ
+ナカダ,ヒロシ
+カサハラ,セイイチ
+テラモト,タカアキ
+ワカマツ,マナミ
+イトウ,トシツグ
+ワダ,ヒデミ
+タンジ,ヒロアキ
+オオツカ,メグミ
+ツジモト,ケイイチ
+セリザワ,ノブハル
+トノサキ,フミエ
+タカギ,ミチコ
+オフチ,カツナリ
+アマノ,ミチオ
+ナカムラ,アキラ
+タバタ,ユウジ
+トヨズミ,マサアキ
+シュクヤ,ヨシロウ
+タカノ,シンイチ
+ムラカミ,ヒトシ
+イシズカ,ノブヨシ
+イイズカ,トシヒコ
+シライ,アキラ
+フクハラ,スエハル
+イナガキ,テツオ
+ヒラシマ,ヒトシ
+ツジバヤシ,アツシ
+マツオ,マサミ
+ヤマモト,マナブ
+モリノ,タカオ
+タジマ,トシオ
+ノザキ,ジュン
+アダチ,ノブタカ
+タカヤ,タカシ
+オノ,マサオ
+マツモト,カツアキ
+ハシモト,カズヒデ
+カノ,ヤスシ
+タケダ,フミコ
+キリハラ,ケイコ
+タナカ,ヤスヒコ
+トリイ,アキノブ
+ナカシマ,マサオ
+セスミ,ジュン
+マエノソノ,カズナリ
+ゴトウ,シンジ
+ホリ,ユキヨシ
+タカイラ,キョウイチ
+タニダ,アキヒロ
+フルドイ,シュウイチロウ
+オオギヤ,マサナオ
+ナカジマ,ノブヨシ
+ホリカワ,カズヒロ
+スズキ,マコト
+アオキ,ノブユキ
+オクハタ,マサヒロ
+クワバラ,ユウスケ
+カンダ,ヒロミツ
+スギモト,リョウ
+ヤマモト,ヒデアキ
+カネコ,マサル
+ナリタ,モトユキ
+ニシオ,タケヒロ
+イカリ,ハルオ
+フルカワ,ケンイチ
+アライ,セイジ
+クズカミ,ヒロシ
+ゴトウ,シュウイチ
+ヤマハラ,マスミ
+ヤマダ,シゲル
+イジ,トシロウ
+クラモチ,ミキオ
+フジワラ,ヒデスギ
+タケダ,サトシ
+タカノセ,エツオ
+トモムラ,シゲフミ
+サトウ,ハジメ
+サカキバラ,マサユキ
+ミヤザキ,ユウジ
+ヨシダ,シュウイチ
+タナカ,ヨシヒコ
+ゴトウ,ミチオ
+ニシダ,ケイイチ
+ナカシマ,ミツヒロ
+キムラ,シゲユキ
+イノウエ,マサトシ
+オシマ,タケシ
+オオヤ,マモル
+ミヤモト,マサノリ
+ヤマシタ,オサム
+タナカ,マスミ
+モリ,アツシ
+ナルミ,オサム
+ゴトウ,ダイジロウ
+ヤマチカ,アキラ
+ササキ,マサヒト
+キシダ,ミチオ
+オオヤマ,ヨウスケ
+シイノ,カツヤ
+イズミサワ,ヨシトモ
+カミムラ,ダイチ
+サカイ,ケンイチ
+ゴトウ,カズオ
+カトウ,キイチロウ
+タカハシ,コウジ
+クノ,タツヒコ
+イワブチ,マサツグ
+ホンブ,マサフミ
+モリタ,ジュン
+セキヤ,コ
+ヌマタ,カズヤ
+ゴトウ,メイサイ
+マナベ,マサル
+イマキタ,ショウジ
+コダカ,ケンジ
+ヨシダ,タケヒサ
+サトウ,タケシ
+クスミ,カズユキ
+ハギワラ,トシカズ
+フルセ,テルヒコ
+ムラタ,ショウコ
+オクムラ,マサヒコ
+タニガミ,タイチ
+ナカムラ,シンジ
+コイズミ,マサヒコ
+スドウ,ヒロシ
+イデ,テツヤ
+シモノ,カズヒロ
+タカギ,ヨシアキ
+サカイ,アツシ
+イノウエ,カズオ
+フルタ,ミチノブ
+アサイ,キヨシ
+フカサワ,クニヒコ
+ゴカイチ,コウジ
+オオツカ,ヤスノリ
+サトウ,サトシ
+イノウエ,シゲル
+タケダ,マサユキ
+マスダ,ヨシヒコ
+ヤマモト,ノボル
+オオハラ,マナブ
+フナツ,カズヒコ
+コヤマ,ジュンゾウ
+ヤマザキ,トシヒロ
+タジリ,ミネハル
+サトウ,ツヨシ
+ナガシマ,ジロウ
+ツダ,タカシ
+ナガオ,トモミ
+オオスギ,ヒロユキ
+イトウ,トモナリ
+タマイ,ユタカ
+ミヤシタ,ヨウイチロウ
+ミシマ,ヨシヒロ
+ホリイ,ナオアキ
+ゴトウ,マコト
+ヤオ,ジュンイチ
+ヒジヤ,タツヤ
+ホリイ,ヒデジ
+タケダ,タカヨシ
+ヤスナガ,カツミ
+ヤマザキ,ヒデヒト
+ヤノ,アキラ
+シワク,ミノル
+カミノ,アキラ
+ナカジマ,タイジロウ
+マスダ,クニヒコ
+オフチ,ジロウ
+フクザキ,レイコ
+イタガキ,シゲキ
+シモ,チエ
+フクイ,ノブアキ
+イビ,ジンイチ
+コムカイ,キヨミ
+フジエ,ノブユキ
+マツキ,カズヒコ
+コバヤシ,カズヨシ
+ゴウチ,カズトシ
+ハセガワ,ケン
+カワゴエ,トモフミ
+ナガサワ,タイセイ
+ヤマシタ,サカエ
+イシザキ,シンイチロウ
+オダ,ミチヒロ
+シンドウ,タカアキ
+シモサコ,ハルヒサ
+ツツミ,キヨシ
+キタオカ,カズヒコ
+キタザワ,コウジ
+ナカオカ,エイジ
+イシバシ,ミユキ
+ハシグチ,ミワコ
+ワタナベ,アキヒロ
+オオバ,カナメ
+ハラ,カズヤ
+シミズ,コミナ
+イザワ,ヨシヒコ
+ヨシヤマ,アキラ
+スギモト,ヒロユキ
+コマツ,コウイチ
+ヘンミ,コウゾウ
+フカダ,ノリフミ
+コバヤシ,ヨシヒサ
+スギモト,ケンジ
+ヨコヤマ,ツトム
+タナカ,ノリヒコ
+ミヤタニ,サトル
+ハセガワ,アツシ
+キタガワ,タカアキ
+フクオカ,ヒロユキ
+オムラ,サトル
+イグチ,マコト
+ハヤシ,マリコ
+ヒライ,カエコ
+オオモリ,レイコ
+オギノ,イチロウ
+タムラ,ミツオ
+タケダ,ヒデアキ
+ミヤナガ,コウイチロウ
+ヒライ,ノリマサ
+ニシムラ,ヒロユキ
+ハブチ,ヒデカズ
+オオクラ,ヨシアキ
+ハッタ,エイジ
+イコマ,ヒロユキ
+アサヒナ,タカシ
+カノウ,シンゴ
+ナカニシ,シュウジ
+ミヤザキ,ヒロム
+イチカド,トヨアキ
+ナガサワ,アキノブ
+ハマグチ,ハルオ
+ヤシロ,ヒロノリ
+ムラオ,マキ
+オオギマチ,アキラ
+シロタ,マサユキ
+テシマ,ミツオ
+カワサキ,ヤスユキ
+ヤマダ,オサム
+ホンダ,マサヒデ
+カネコ,シゲル
+マツシマ,ヒロズミ
+コミヤ,コウジ
+ワダ,ツヨシ
+ヨシダ,タカシ
+モリサキ,ユウジ
+イマヒガシ,ヒデオ
+クラモチ,ワタル
+ユカワ,サトシ
+テラオ,ジロウ
+コンド,マキ
+サイトウ,マサユキ
+ヨシナガ,ヒロシ
+ユアサ,ハルユキ
+センガ,ヨシオ
+ニシグチ,トシアキ
+ウエダ,ナオキ
+ヤマオカ,トシオ
+ヤマモト,カズオ
+フジカワ,トシタケ
+オグラ,タカシ
+カワノ,ヒデオ
+カネズカ,ヒロアキ
+オカモト,ユウスケ
+カワツキ,カズオ
+スエヨシ,タツヤ
+カワベ,シゲユキ
+タカハシ,タカユキ
+モリ,シンスケ
+スギヤマ,テツジ
+マエヤマ,キヨシ
+コメタニ,ユウジ
+フジワラ,キヨシ
+アデガワ,ヒロユキ
+トミザワ,オサム
+ナカタ,マサアキ
+タチバナキ,ハルアキ
+コダマ,ショウゴ
+ハナイ,チホ
+チノネ,カズオ
+シミズ,コウイチ
+タキザワ,マサト
+クドウ,ケンジ
+モリオカ,マサカズ
+カネヒラ,アキオ
+サトウ,ヒロノブ
+ヤバナ,トシオ
+サカズメ,ヒロユキ
+ハシモト,キヨ
+ヨノモト,ヒデキ
+バンショウ,クニオ
+フチエ,カズオ
+スズキ,イクオ
+スズキ,ユキノリ
+コバヤシ,カズヒロ
+カトウ,タカツグ
+クスダ,カズイチ
+ミヤタケ,ヨシヒロ
+サノ,ヒデジ
+マルタ,トシアキ
+マキタ,マリコ
+カシワギ,ハジメ
+タニ,ヨシミ
+アリヤス,エツオ
+カトウ,シュウジ
+タナカ,マサヒト
+ツジタ,ヒロシ
+オオガワラ,タダオ
+ムラサワ,トシヒロ
+セキモト,ヒサシ
+ツジモト,ヒサト
+シオタニ,ヨウイチロウ
+ミワ,トシオ
+ナガサカ,セイジ
+コイデ,アキラ
+オグラ,ツトム
+ツツミ,タカノリ
+フカミ,ジュンイチ
+ヨシダ,タカシ
+モロホシ,ススム
+シオノ,タダヒデ
+ヤマグチ,ノブミチ
+マミヤ,ツカサ
+サイトウ,シゲユキ
+アキヤマ,キヨシ
+アダチ,カズヒロ
+カワノ,トシミツ
+ナカムラ,アキヒロ
+ヤマグチ,トシキ
+サクマ,ヒデミ
+モチズキ,ヨシタカ
+ワタナベ,ヨウジ
+コバヤシ,セイジ
+キシ,ミレイ
+ハヤサカ,ミチヨ
+コフジ,マサノブ
+サイトウ,アキコ
+ノムラ,シュンジ
+マツイ,ユキオ
+ハヤシダ,マサエ
+オガワ,タカシ
+ホンダ,タカシ
+コザワ,ヨシモト
+ササキ,ヒデアキ
+ワダ,キヨシ
+ヤマワキ,タミ
+フジイ,ハルヨ
+タキザワ,ヤスヒコ
+サトウ,コウジ
+ミカミ,サトシ
+ミワ,ノボル
+オチ,ヒロシ
+フジタ,ケイジ
+ナガタ,イチロウ
+クボタ,ヨウコ
+アオガキ,ゲン
+カリヤド,ナオコ
+ミハシ,シンイチ
+ムラマツ,チエコ
+カタヤマ,オサム
+ヤマザキ,トシヒコ
+オオギソ,キヨタカ
+ババ,マサカズ
+ミシマ,マサヒコ
+ヤノ,オサム
+ナカジマ,アキヒコ
+タケシタ,キョウコ
+ナカノ,ミノル
+タカノ,ユキ
+カワダ,カズマサ
+タジマ,コウタロウ
+モチズキ,キヨシ
+キムラ,カツミ
+アキホ,トミモト
+ヤマモト,アキ
+カワセ,ユタカ
+ササ,ヒサオ
+ノセ,カズナリ
+ヒラタ,ナオキ
+コバヤシ,シュウイチ
+アガワ,ユウスケ
+テラモト,ヒロフミ
+オザキ,サカエ
+モリ,キョウコ
+ウツ,ヒトシ
+ワカマツ,トシサダ
+イマイ,フミコ
+クボ,タカヒロ
+タカノ,ジュンジ
+ヒビノ,ヒデオ
+スズキ,ハルキ
+タナカ,タカハル
+サカモリ,カヨコ
+タキザワ,テツ
+ヨシカワ,タエコ
+トヨダ,リュウイチ
+ウラシマ,ユウジ
+コンノ,モトヒロ
+テラカワ,タケナガ
+コバヤシ,アキヒコ
+キムラ,タカコ
+カミオ,レイ
+クレバヤシ,キヨミ
+カネダ,ヒロコ
+カワモト,コウヘイ
+イマムラ,ヨシヒロ
+コハギザワ,ミノル
+シノザキ,シュウイチロウ
+メグロ,サトシ
+クニサダ,マサハル
+モリ,キヨ
+カワギシ,タカユキ
+オオスガ,カエデ
+スダ,ヒロシ
+ナカムラ,キヨカズ
+イシコ,ジュン
+スズキ,ナオヤ
+キクチ,カズヒコ
+オギタ,アキラ
+タカヤマ,タカトラ
+ナカシマ,キヨシ
+ツジモト,ヒロシ
+ハヤマ,クニヒロ
+イタガキ,マサアキ
+ヤマモト,ヒロアキ
+アダチ,ヒロシ
+キタミ,ヒロヒデ
+タマキ,ミチオ
+マエダ,ユウジ
+アダチ,ショウゾウ
+タマダ,グンジ
+モリグチ,ユウジ
+ヨシナガ,ノリコ
+マエダ,タエコ
+ワタナベ,タマキ
+タカハシ,ヨリタカ
+イシコ,テツロウ
+オジマ,カツジ
+シバヤマ,ヨシアキ
+シバ,タケヒコ
+トモノ,ケンイチ
+スミ,マサフミ
+ミツナガ,アキコ
+ウラノ,マサキ
+ヨコズカ,サトシ
+フジカワ,ハルヒロ
+カブラギ,マサユキ
+ヨシダ,ユタカ
+サイトウ,ヨシアキ
+ヤノ,タカヒサ
+ヨコタ,ナオミ
+ナカムラ,アツシ
+ナミサト,マサカズ
+ネギシ,ケイゾウ
+キノ,ノボル
+ナカジマ,アキラ
+ツツミ,シュウイチ
+コウダ,ヤスヒコ
+ホリ,ミユキ
+コンノ,カズヤ
+ワダ,ユミコ
+マツナガ,サダオ
+ニシムラ,トシユキ
+イイ,ヤスヒロ
+ヤスイ,ナオキ
+コバヤシ,シュウイチ
+ヤマサキ,マサヒロ
+スズキ,ヤスユキ
+イワタ,ハルヒコ
+シゲモリ,タカシ
+イマムラ,ノブタカ
+ツカモト,アキヨ
+イトウ,シンスイ
+クボ,ジロウ
+サナエ,カズマサ
+コダマ,アキオ
+イトウ,カツシ
+アクツ,ヨウコ
+アタラシ,ミエコ
+タグリ,ジュンコ
+ノ,タツヤ
+アカマツ,ケンジロウ
+アサノ,ケンジ
+ナカガワ,マサアキ
+カワシマ,アサコ
+サトウ,ヒデオ
+オグラ,セイジ
+イシバシ,ヒロユキ
+マツオカ,タカヨシ
+タキザワ,マサヨシ
+イタクラ,サトシ
+ホンゴウ,ヨシカズ
+ナガヤス,タカユキ
+ウチダ,ヒロシ
+ヤマシタ,ツネオ
+イシグロ,ヒロシ
+モリ,トヨヒコ
+タナカ,コウイチ
+ヒグチ,シゲト
+キト,シンイチ
+タナカ,カズユキ
+スズキ,カズヒロ
+スガイ,ケンジ
+ヨネザワ,ヨシカズ
+アラカワ,リュウジ
+イノダ,ヤスヒサ
+カトウ,マサオ
+カゲヤマ,マサシ
+ミヤワキ,トシヒコ
+ミチヤマ,タダヤス
+モリ,トシアキ
+モリサワ,シンイチロウ
+ニシムラ,カツユキ
+サイトウ,ヤスノリ
+ヤマモト,ヨウスケ
+マツウラ,ヨシアキ
+ハセガワ,ツトム
+ウチダ,ジュンイチ
+ヤスダ,コウイチ
+イシダ,トオル
+モリノ,カツマサ
+キタヤマ,ヨシヒロ
+サカモト,ヨシノリ
+ソウミヤ,ヒロユキ
+キクチ,シンイチ
+シブイ,コウジ
+トミタ,アツシ
+モリ,コウジ
+ヤマグチ,ジュンジ
+キタヤマ,ヨシヒロ
+マンモト,アキラ
+タナカ,ユタカ
+モリ,カズヒロ
+イタクラ,イサム
+イチミヤ,マサシ
+ニシヤマ,カツジ
+ワタナベ,ヒロシ
+ハンガイ,ハルオ
+ナガノ,ケイイチロウ
+シバ,ケンジ
+コジマ,ススム
+タタノ,サトシ
+カワバタ,マサヒコ
+タケダ,タロウ
+オムラ,イクロウ
+サコ,ヒロシ
+イシハラ,ミノル
+イチノセ,ススム
+キシダ,ヨシミ
+ミカミ,ジュン
+ハヤシ,タクジ
+ササキ,アユミ
+ヨネミツ,カズナリ
+セキネ,ヨシナリ
+イマニシ,キヨタダ
+アオキ,タダシ
+スギヤマ,イサオ
+ナカモリ,ヨシフミ
+シマダ,マサヒコ
+マスダ,フサオ
+ツボイ,ヒロシ
+セキヤ,ススム
+キジマ,ノリオ
+ヨシズミ,ヒデタカ
+ヤナギダテ,シンヤ
+シゲマツ,ハルヤス
+イノウエ,ナオキ
+タケウチ,ケイコ
+タナカ,タケシ
+ヒガシ,シュウジ
+タカタ,ナオヒロ
+ナカイ,ツギオ
+ハセガワ,ジュンイチ
+タニ,タカシ
+コバヤシ,ミキトヨ
+タカハシ,アサコ
+アベ,マサト
+コバヤシ,ヨシゾウ
+オノ,イクヤ
+タカハシ,ユキヒロ
+クロダ,アツシ
+ワタナベ,ヒロシ
+アベ,シンジ
+イノウエ,ヨウコ
+エンド,ヨシオ
+ノノシタ,シゲフミ
+カナイ,クミコ
+コタキ,ジ
+タカハシ,ヨウコ
+シゲヤマ,トミオ
+フカダ,アキオ
+シオジ,カツユキ
+モリヤ,フミヒロ
+オオツカ,マサヤ
+アベ,マサタカ
+ヒライ,タカユキ
+ムラマツ,ジュン
+ミズタ,マサミ
+ホリエ,カズユキ
+ヒカサ,マサタカ
+オシタニ,マコト
+コバヤシ,カツミ
+クラハシ,ヒデユキ
+ヒラバル,タケオ
+フジエダ,マコト
+トザワ,カツミ
+ヤナセ,シゲル
+クボタ,ヨシオ
+マミヤ,マサキ
+ユハラギ,マサミ
+チョウナン,ヨシマロ
+ミヨシ,トオル
+ノジマ,ヨシノリ
+モリサキ,マコト
+コヤマ,トシアキ
+カトウ,ヒロキ
+キノシタ,ヤチヨ
+カワムロ,サトシ
+モリ,ケイイチ
+ヒラシタ,サダキ
+カワシマ,リョウ
+フルカワ,アキト
+インデン,マサヒコ
+ヤマダ,ヤスユキ
+ツクダ,ミノル
+イワサキ,マサヒト
+オマエ,オサム
+スズキ,マサユキ
+ハラ,マサヒコ
+サカイ,タツムネ
+モリヤ,カズマサ
+ミヤモト,トシヒロ
+シゲタ,マサヒロ
+イシカワ,ヒデノリ
+タザキ,サダム
+スエヒロ,ムネヤ
+カネダ,コウイチ
+スエヒロ,ジュンイチ
+ササキ,リュウサク
+ヒヤマ,タツハル
+キドグチ,ヨシヒロ
+シマダ,トシユキ
+ミヤケ,ヒトミ
+モリ,ジロウ
+シラカワ,コウジ
+ワカバヤシ,シンイチロウ
+ヤマシタ,カズオ
+アマノ,ジュンジ
+タケイチ,ヒロタカ
+シン,ケイコ
+カサハラ,テツヤ
+タナカ,ケイシ
+オクダ,アキラ
+カトウ,トモコ
+カワサキ,マサコ
+カトウ,カズオ
+イチセ,マサアキ
+キタガワ,ゲンヘイ
+ヤスイ,ヨシノブ
+エダ,トミカズ
+ハヤシ,タツジ
+ナガイ,サトシ
+トノムラ,マサノリ
+タナカ,ノブユキ
+クリバヤシ,ヨシノリ
+キムラ,カツコ
+ハゼキ,ノブユキ
+アンノ,アツシ
+タカヨシ,ヨシサト
+アンザイ,ショウジロウ
+タカハシ,オサム
+ハラノ,ツネオ
+ナカガワ,カツヨシ
+ニシカワ,ユキオ
+シブヤ,カズヒロ
+カトウ,ノブヒロ
+アダチ,トシヒロ
+サクライ,ヤスタカ
+クサノ,トシヒロ
+ミナミゾノ,ミノル
+ツジムラ,アキトシ
+ヤマダ,イサム
+カツシマ,シゲミ
+コヤナカ,ヒロユキ
+タバタ,アキラ
+アダチ,ヨシヒロ
+ヒロノ,セイイチ
+ツザキ,ヒロアキ
+タチバナ,シゲアキ
+ベッショ,カズミ
+マツシタ,チュウゾウ
+タニグチ,ケンシュウ
+ナカトモ,ムツミ
+ニシムラ,ヒロシ
+ミウラ,マコト
+コンド,オサム
+マツイ,マサキ
+マツモト,ヒロカズ
+ホリイ,ヒロシ
+マスモト,ツトム
+ナカジマ,チカシ
+キムラ,ケンイチ
+ミワ,ヒロユキ
+イシバシ,ヤスシ
+エグチ,ノリヒサ
+イナフク,ジュン
+ワタヌキ,ヤスヒロ
+ヒグチ,ヨシヒコ
+イケノ,キクオ
+ウメハラ,マナブ
+ノザワ,タダシ
+イマイ,マサキ
+タカハシ,カツジ
+イイダ,ハルヒサ
+フジカワ,カオル
+ニシエ,タダヒコ
+コスゲ,ヒロシ
+オオタ,ジュンコ
+ノジ,クニヒコ
+コボリ,ミキオ
+スギヤマ,ヨシアキ
+カワタ,テツヒコ
+サメシマ,ミネオ
+コヤマ,キヨタカ
+エンカイ,タカシ
+コモダ,ツトム
+オガワ,コウイチ
+ヤマムラ,カズマサ
+エノモト,レイジ
+タカダ,ヒサタダ
+ナカミゾ,ユミコ
+オカムラ,ヒロシ
+カミバヤシ,セイジ
+フジモリ,ミキオ
+クロダ,シンイチ
+サトウ,ヨリエ
+ヨシムラ,タキオ
+モタイ,タクジ
+ムラタ,トオル
+ミワ,ナオト
+イハラ,エミ
+イマイ,タカシ
+ヒノ,カズオ
+マツモト,タカシ
+セト,ヨウジ
+クマガイ,ヤスヒロ
+ヤマダ,ヨシオ
+ワタナベ,ユウコ
+ヤサカ,ヒロシ
+サトウ,アキヒロ
+ミヤタケ,ヒロノブ
+マツウラ,ヒトシ
+マツシタ,マコト
+ウラベ,イサム
+シガキ,マサヨシ
+テラダ,ヨシヒト
+イワモト,ヨシアキ
+イノウエ,ジロウ
+モチズキ,ユキオ
+ヨシズミ,エイイチ
+ミウラ,ミツル
+ミズノ,タカユキ
+ヨシイ,ジュンイチ
+フルイ,ヨシヒロ
+ハヤシ,シゲアキ
+シライシ,ヒデオ
+スガワラ,タツオ
+ナカイ,ケイイチ
+ノフジ,ヨシハル
+サトウ,ヒロカズ
+クロダ,キイチ
+イケダ,タカシ
+サガ,ケイシ
+ミヤカワ,イクヒサ
+ワラシナ,シゲル
+キタガワ,ノブユキ
+イマイ,フミアキ
+ミサキ,ヒロノブ
+イシダ,タケシ
+リクラ,ヒデアキ
+ショウジ,コウイチロウ
+フクナガ,ヨシカズ
+クロキ,タカオ
+マタキ,ショウザン
+セキネ,マサハル
+ヤマシタ,ミツヒロ
+タナカ,ヨシアキ
+オオハマ,マサヒロ
+オオツボ,ヨシアキ
+タイ,ヒサハル
+ツルヤ,マサノリ
+ヨシダ,ヨウイチ
+マスミツ,タカシ
+カスヤ,シゲオ
+ヨシダ,ミノル
+カワムラ,ヒデキ
+ハヤシ,クニヒコ
+クニモト,マサユキ
+アラカワ,ヒナコ
+ナカムラ,マサノリ
+イシグロ,セイジ
+ハヤミ,カツヒコ
+ミナミゾノ,キンジ
+サカタ,ミノル
+カワモト,フミカズ
+ムラオカ,ヤスノリ
+イトウ,ヨシオ
+ワタナベ,ミチオ
+ノムラ,マサカズ
+サトウ,ハルナ
+ワタナベ,ヒロシ
+コバヤシ,マサカツ
+ヌルキ,ヒデヒコ
+ヨシダ,ヨウイチ
+サイトウ,ヒロシ
+ヒライ,ヨシユキ
+キムラ,タカシ
+オク,ロウ
+ハヤサカ,ヤスコ
+アサノ,ケンジ
+フジサキ,シンヤ
+アキモト,リカ
+シマダ,マサエ
+ミズカミ,マサハル
+ナカガワ,トオル
+サトウ,テツヤ
+コバシリ,ケンジ
+アラキ,ヨシオ
+スズキ,ナオトシ
+ニシデ,セツ
+オチアイ,ヨシヒサ
+ノナカ,タカシ
+ヤスイ,リュウジ
+コハタ,ケンイチ
+ミノシマ,アツオ
+テラシマ,キミヒコ
+ヤクワ,ヨシオ
+スガワラ,ミチオ
+ミツハシ,テツロウ
+ノムラ,ノリコ
+チョウ,アズミ
+サトウ,リョウコ
+シズハラ,レイコ
+ハヤシカワ,ケンジ
+ニワ,ヨシオ
+ミエノ,ケンイチ
+シマダ,ヒデト
+ナカムラ,トシオ
+ヒラノ,リョウイチ
+ヤマトヤ,カズヒコ
+ツノダ,ヤスノリ
+コバヤシ,ノブアキ
+サカクラ,キョウコ
+マツダ,マサアキ
+イマムラ,セイシ
+ヤギハシ,ナオコ
+オギノ,ヒロオ
+タナカ,ヨシマサ
+ヒガ,ヨシカズ
+サコ,ツトム
+タザキ,タモツ
+イイダ,マサハル
+イイダ,リョウスケ
+マツグマ,シゲホ
+ムラタ,ケン
+ヤスモト,マコト
+シミズ,ヒロシ
+ワクイ,ヨシタカ
+タカハシ,ヨシオ
+キタイ,トシヒコ
+アダチ,ショウイチロウ
+ハナブチ,ハジメ
+サトウ,クニヒロ
+アライ,トシヒコ
+タケナカ,サトシ
+カイ,ミホコ
+アカダ,シズオ
+クニスエ,ヒロアキ
+マエカワ,アキラ
+ミナミ,ミツシ
+タキガミ,ヒデユキ
+マツイ,マコト
+シライ,マサミチ
+タケヨシ,セイノスケ
+タカダ,キヨタカ
+タカギ,タカヒコ
+クドウ,キヨタカ
+シマダ,ノブコ
+カトウ,カズオ
+シギョウ,ヒデアキ
+ヒロノ,ソオジャ
+キノシタ,ヨシエ
+シミズ,ショウゾウ
+シムラ,ヒロアキ
+クサカリ,ミホ
+カルベ,トシハル
+マツモト,ナオユキ
+シマムラ,トマサ
+カツカワ,タカオ
+イズ,イサオ
+サクラモト,イツジ
+モリタ,ジロウ
+タナベ,クニイチ
+ハットリ,フミト
+リュウゴ,シュンイチ
+オマツザワ,マサハル
+オトワ,ユキヨシ
+コダマ,セイイチ
+カヤシマ,ユウジ
+コバヤシ,シゲル
+クニエダ,マキオ
+コウ,カズナリ
+ニシヤマ,ヒトミ
+ワダ,ヒロヤ
+ニシモト,タカシ
+サイトウ,カツノリ
+トシマ,ヨウイチ
+オオツカ,ホコク
+オノ,マサル
+スズキ,タカシ
+サクライ,タカシ
+オゼキ,タカシ
+オカダ,マサミツ
+オガワ,ヒロシ
+イケガミ,ヒデトシ
+コマツ,タカノリ
+ヨシイ,ヨシアキ
+ヒラノ,ショウイチ
+タカスカ,ヒロシ
+ハシモト,ヤスユキ
+クワエ,キクオ
+カネマツ,カネヒデ
+マツオ,ケイイチ
+イド,タカヒコ
+イノ,ジュンイチ
+サイトウ,タケシ
+カミヤマ,コウジ
+コシモト,コウイチ
+オオガワラ,ヨシノブ
+タカハシ,マコト
+ナガマツ,シンイチ
+スズキ,ゴロウ
+テラオ,ヨウジ
+ホリケ,カオル
+スズキ,タカシ
+オガワ,コウイチ
+ミヤモト,ノブオ
+オオスミ,ヒロユキ
+イワブチ,ノブヤス
+マツウラ,タツオ
+サワチ,チカオ
+テラダ,セツコ
+イバヤシ,ユタカ
+イワセ,ジュンイチロ
+オガワ,セイジ
+アソ,ヤストモ
+フクモト,サユリ
+イデ,フミタカ
+カワサキ,テツジ
+ハルナ,マサノリ
+タジマ,ユキフミ
+カナヤマ,ヨウジ
+タナカ,ワタル
+マツザキ,マサオ
+イノサカ,コウジ
+オシヤマ,ヨシヒサ
+タケウチ,タカシ
+ササオカ,トシユキ
+コモリ,マサアキ
+タジマ,ヒロアキ
+イケガミ,ケンジ
+ヤマグチ,マサアキ
+カワカミ,シゲキ
+イセキ,エイスケ
+タケダ,ヒデユキ
+タカヤス,マナブ
+カメダ,タケトシ
+フジノ,マコト
+ミサキ,ヤスノリ
+ナカムラ,トシアキ
+オガワ,コウジ
+ナカザワ,ヒデトシ
+セキ,ヤスクニ
+ヨシカワ,タクヤ
+タガワ,タカシ
+ミタニ,トシヒコ
+スエタ,アキヒト
+イヌイ,ケン
+オサダ,サトシ
+フルカワ,カツオ
+スズキ,マコト
+キタムラ,リョウスケ
+コマツ,ヒロタカ
+アサダ,ヨウイチロウ
+カンザキ,ヤスマサ
+ウスイ,ヨシフミ
+フルヤ,トシヒコ
+ヨケムラ,フミヨシ
+ヨコエ,ヨシキ
+アカイワ,トシヒコ
+フクシマ,ヒロヤス
+ヤジマ,ヤスシ
+ハラ,ミユキ
+キシダ,ユウゾウ
+クボ,ミツル
+カタギリ,ヤスノリ
+イチイ,フミヤ
+マツキ,トシアキ
+ワケベ,ケンジ
+マルヤマ,ヒデオ
+ツバキ,シゲル
+サノ,ヒロシ
+ミヤモト,マサトシ
+フクヤマ,マサアキ
+ウエムラ,マサル
+クワカド,リキ
+クニマツ,マサル
+カタオカ,ノリユキ
+トミタ,カズノリ
+ナカムラ,アツヒコ
+クドウ,ヨシテル
+オブチ,テルヒコ
+ヨシカワ,トオル
+カゲヤマ,マコト
+トダ,ケイイチ
+タカハラ,サトシ
+マツシタ,シンジ
+コダイラ,ヒデシ
+シンカイ,モトオ
+テラダ,マサヒト
+カワキタ,ハジメ
+ミウラ,サナエ
+アベ,ヒトシ
+ニシカワ,ユキヒロ
+ホソダ,イワオ
+マスダ,ヨシオ
+カザマ,タケシ
+アラマキ,カズオ
+ワタヌキ,ミツギ
+サカモト,ツヨシ
+アマガミ,シン
+コンノ,イサオ
+オクダ,ヨシノリ
+オハク,ミツオ
+ナカムラ,ヨシフミ
+ナカムラ,ユウイチ
+ウシヤマ,ユキオ
+ヤシキ,アイイチロウ
+キノセ,シュンイチ
+ワカヤマ,コウイチ
+イマイ,マサユキ
+マエダ,キヨシ
+マツシタ,エイジ
+ヒラグチ,ヒロシ
+ワダ,アツコ
+ワタナベ,ソウイチ
+マツイ,シンイチ
+マツモト,ミキオ
+ナカムラ,ジュンイチロ
+タキタ,ヨシト
+マスダ,トモコ
+ミヤウチ,マユミ
+シムラ,サカエ
+マツイ,タキコ
+ハラハタ,トミタロウ
+ヒサタニ,アツシ
+カガミ,マサツグ
+ヨシムラ,ユウジ
+オオツカ,ケイゴ
+タナカ,シンイチ
+ヒラノ,シュウ
+タケスエ,テツヤ
+ニシノ,ヨシユキ
+オオツカ,メグミ
+オダ,シンジ
+シミズ,ユタカ
+ハマモト,タカヨシ
+ミヤマエ,マサナリ
+ナガシマ,エイジ
+ミツメ,コウジ
+カゴタニ,ヨシカズ
+ヨコヤマ,タカフミ
+サカタ,ケンジ
+オイクボ,アキヒデ
+クラモチ,ヒロヤ
+アンザイ,マサユキ
+フクシマ,リエ
+ナカムラ,ヒトミ
+イトイ,ユリコ
+ホシノ,ミチコ
+コイデ,ヒロヒコ
+オザキ,ジュン
+セジモ,マサミチ
+スドウ,マサミツ
+カジワラ,ミドリ
+スズキ,カツヒロ
+ホシノ,ハルコ
+ナカムラ,ヨシアキ
+モリタ,アキカズ
+ヤマザキ,トシヒコ
+オクガワ,マサヒコ
+ナガハマ,ヒロユキ
+ヨシムラ,アキミツ
+マツダ,タカトシ
+ホカゾノ,アツヒサ
+アベ,トシツグ
+ナガイ,コウジ
+トガシ,トシヒト
+ヤザキ,テイゾウ
+ヤマウチ,ヒデキ
+ミサキ,ナオキ
+ヨシダ,シンジ
+ナカモト,シゲル
+シノハラ,ツネカズ
+ナカニシ,アキラ
+ヤジマ,キヨシ
+トヨフク,ユウジ
+タカシマ,カツジ
+フシニシ,キミエ
+ムカイ,テツヤ
+ニシムラ,ヒロユシ
+カワバタ,サトシ
+ムカエダ,サトル
+シセキ,イッシン
+カタオカ,ヨシヒデ
+ナイトウ,ヒロキ
+ミト,ヤスト
+オオニシ,トシロウ
+ヨコヤマ,タカシ
+ナカムラ,タツアキ
+イザワ,ヒサノリ
+タニガワ,トミエ
+スギタ,ユカ
+オシタ,マサユキ
+シマダ,トモコ
+ヤマムラ,コウイチ
+フクオカ,マサシ
+ヤナリ,ヒロアキ
+スズキ,シンジ
+サカイ,サトル
+ヤマダ,ユキヒロ
+ヤマコシ,シゲル
+ノモト,トシユキ
+タケシタ,モトキ
+ミノダ,シゲユキ
+アサイ,シホ
+ムネヤス,ヒデユキ
+カワニシ,マコト
+サカグチ,ヤスヒサ
+ヤマザキ,トシヒコ
+アサオカ,ヒデノブ
+キノシタ,ミキゾウ
+ミマ,キヨミ
+フクモリタ,シゲオ
+カジヤマ,ヨシコ
+ヤマザキ,ジュンイチ
+サトウ,トシヤ
+カワベ,ミツヒコ
+マルヤマ,ノブヨシ
+オガラネ,ノブコ
+ドイ,ユウゾウ
+タナカ,ミツオ
+オギシマ,オサム
+イノウエ,ヒロユキ
+フルヤ,ヒロノリ
+フクイ,ツヨシ
+マスダ,タカヒロ
+ホンダ,ユミコ
+ナカニシ,ナオタカ
+ミヤマエ,ナオヒコ
+オカノ,ヒデオ
+ババ,ヨウイチロウ
+ダケヤマ,サクコ
+ヤマグチ,ヤスオ
+ハヤシ,トシロウ
+トミズカ,ヤスヒロ
+ナカニシ,ハルヒサ
+アベ,ハジメ
+アオヤギ,ヒロコ
+テラワキ,キヨコ
+カタギリ,ノボル
+ナカガワ,マサオ
+コバヤシ,カズヒロ
+ウエダ,ヒロミ
+フジワラ,アキヒロ
+ハヤサカ,タツミ
+キムラ,ヒロシ
+ゴトウ,マサヒロ
+シムラ,ケイゾウ
+セキ,トシカズ
+アイザワ,アキオ
+ノムラ,コスケ
+カンダ,シュウジ
+ウライ,マスミ
+モトヤマ,ヨシハル
+カミムラ,テツオ
+ヒライ,マサユキ
+アライ,トモナリ
+サイトウ,ヨウイチ
+マキハラ,マサシ
+オオワク,オサム
+モチズキ,マサヒロ
+ハンガイ,ヨシヒロ
+イノウエ,カズヒト
+ナガイシ,カツミ
+ニシモト,アキラ
+ツチヤ,ショウイチ
+マツモト,タカシ
+ホン,ショウゴ
+イワイ,タツヤ
+クボ,マサオ
+ハコイ,マサオ
+ワタナベ,ノリオ
+スギタ,トシミツ
+ナカムラ,カズヒロ
+カラサキ,コウイチ
+ノリマツ,ミツヒコ
+クスモト,タカヨシ
+ニシムラ,サトシ
+コスゲ,マサナ
+フクミツ,ヤスミ
+ヤマグチ,サブロウ
+イシグロ,カズミ
+トクダ,ナオヤ
+アリトミ,ジツロウ
+ヒヤマ,シンイチ
+ヒロセ,マサトシ
+ニシダ,トオル
+ハットリ,ヨシミ
+ヒラバヤシ,ケンイチ
+ハラシマ,エイジ
+ハラ,タミオ
+ハマノ,カズユキ
+ハマダ,マサトシ
+ハシモト,カツヒコ
+ハヤシ,ヒサジ
+ヒグチ,マサミ
+ヒラノ,ユタカ
+ホンマ,マサハル
+ハルマシ,ヨシマサ
+ハシモト,ヤスオ
+ヒダ,タカシ
+ヒラスカ,チョウジ
+ハギワラ,コウイチ
+ハマダ,キミエ
+ハシモト,ミチハル
+ホンマ,ミヨシ
+ホカリ,ヤスヒロ
+ハラダ,ミチコ
+ハヤシ,ケンジ
+ホリベ,カズオ
+ハシモト,マサオ
+ハセガワ,タダカズ
+ヒロベ,ミキオ
+ハシモト,カズミ
+ヒラノ,マサユキ
+ハシモト,ケン
+ヒジカタ,ツギエ
+オオヌマ,イサオ
+ハブツ,ヒロユキ
+ヒダカ,カズヒロ
+ハシモト,キンヤ
+ハマノ,ナオキ
+ヒシヌマ,ノブユキ
+ハラ,ヨシミ
+ハナキ,シンイチロウ
+ハラ,ケンジ
+ハガ,タケオ
+ハナダ,マサノリ
+ヒラヤナギ,ノブタカ
+ホリカワ,ミツノリ
+ホリカワ,ケン
+ハシモト,アキコ
+ハタ,トシヒコ
+ヒライ,ジュン
+ハラグチ,ヤスマサ
+ヒラオ,ユウイチ
+ハシズメ,カンタ
+ツジ,マナブ
+サクラザワ,ヒデトシ
+アベ,コウイチ
+アベ,マサヒロ
+アベ,ヒロタ
+アベ,コウジ
+アベ,オサム
+アベ,タカオ
+アカギ,ヤスヒト
+オカモト,シズオ
+エンド,ミチコ
+アカイシ,ツネハル
+ニシナ,マコト
+アキモト,トシオ
+アキズキ,マサトシ
+ヒラバヤシ,シゲマサ
+アメミヤ,アキラ
+アミノ,アキヒロ
+アナミ,マサカズ
+アナザワ,カオル
+アンドウ,ユウゾウ
+アンドウ,ヒロキ
+アオヤマ,マサキ
+アオヤマ,コウジ
+アオヤマ,シンイチ
+アライ,コウイチ
+アライ,マサシ
+アライ,マコト
+アライ,タマオ
+アライ,マサヤス
+アラキ,ミユキ
+スガワラ,トモミ
+アサヒ,シゲル
+アサクラ,タカシ
+アサミ,フミトシ
+アサムラ,カツミ
+ヤマシナ,カズオ
+アサリ,マサコ
+アサズ,トモコ
+アツミ,ヨシユキ
+バン,ヒロヤス
+ベッショ,ケイイチ
+チバ,アコ
+チカキヨ,ナオヒサ
+チムラ,タミエ
+ドバシ,タケオ
+エバシ,ショウヘイ
+エビハラ,ヨシフミ
+エガミ,ユキオ
+エグチ,ユキタカ
+エグチ,サトシ
+エジリ,スグル
+エンド,マユミ
+エンド,タツオ
+エノモト,ヨシツグ
+フチノ,トオル
+フジイ,オサム
+フジイ,テツ
+イシイ,ジュン
+ムラヤマ,トシヒサ
+フジカタ,タツヤ
+フジカワ,カズトモ
+フジマル,ヒサト
+フジモト,クニヒロ
+フジモト,タダヨシ
+フジモト,トシカズ
+フジノ,ヤストモ
+フジオ,トシアキ
+フジサカ,サトシ
+フジサワ,ノリオ
+フジサワ,タカヒロ
+フジタ,マサユキ
+フジタ,マサユキ
+フジワラ,トオル
+フジワラ,マサユキ
+フジワラ,シンショウ
+フカダ,フミヒロ
+フカガワ,アツヒロ
+フカノ,ケイ
+フカワ,セイジ
+フカヤ,トシカズ
+フカザワ,ヒトシ
+フクダ,コウジ
+フクイ,ヒロシ
+フクモト,ヒロタカ
+フクモト,ヒロアキ
+フクモト,マサヒコ
+フクモト,ススム
+フクシマ,ヒロユキ
+フクトミ,リュウサク
+フナキ,シンジ
+フルサワ,タロウ
+アビコ,マサユキ
+フセ,ノリオ
+フセガワ,ヨシナオ
+フシミ,ナオヒサ
+ギマ,カズヨシ
+ゴミ,マコト
+ゴトウ,ノリコ
+ゴトウ,トモアキ
+ゴトウ,ヒサノリ
+グンジ,ミヨ
+ハギワラ,ヨシコ
+ハギワラ,イチロウ
+ハイノ,ヒサヨシ
+ハカマダ,ノリユキ
+ハマダ,ユキ
+ハマダ,ユキオ
+ハマグチ,ケンジ
+ハラ,シンイチ
+ハラ,キヨタカ
+ハラ,クニヒコ
+ハラ,マサナリ
+ハラダ,マスミ
+ハラダ,ミナコ
+ハラダ,ノリコ
+ハラコ,タカヒロ
+ハルナ,タカアキ
+ハセガワ,タクヤ
+オシマ,アキラ
+ハシモト,タカシ
+ハタノ,カズヒロ
+ハタザワ,カズミチ
+ハト,マサシ
+ハツミ,アズサ
+ハットリ,トモユキ
+ハヤカワ,トシヒロ
+ハヤカワ,アツロウ
+ハヤカワ,トシヒコ
+ハヤノ,アツシ
+ハヤセ,シンゴ
+ハヤシ,タカハル
+ハヤシ,カオリ
+ハヤシ,ヨシヒロ
+ハヤシ,ケイジ
+ハヤシ,セイタ
+イモト,マサヨシ
+ハヤツ,ヒロシ
+ヒガキ,ヒデアキ
+ヒガシ,スミコ
+ヒノ,ケンジ
+ヒラバヤシ,ナオト
+ヒラノ,カズヒロ
+ヒラノ,ケイイチ
+ヒラオカ,マユミ
+ハラサキ,タツヤ
+ヒラテ,ヒデオ
+ヒラヤマ,トオル
+ヒロエ,ヨシカズ
+ヒロカワ,シュウイチ
+ヒロセ,ヒデタカ
+ヒロシ,ノブコ
+ヒサムネ,ケイコ
+ホンダ,コウイチ
+ホリカワ,ノリアキ
+ホリコシ,シンイチ
+ホリコシ,ヒロユキ
+ホシ,ユキオ
+ホシコ,マサヒロ
+ヒラサワ,サダユキ
+ホソイ,シンイチ
+ヒョウドウ,タカシ
+ヒョウドウ,ユウスケ
+イベ,シンイチ
+イチカワ,マサヒロ
+イチカワ,マサル
+イチカワ,ユミ
+イチノミヤ,ミツル
+イデ,ミツユキ
+イデ,ユリ
+イガラシ,ヤスユキ
+イガワ,キヨシ
+イグチ,シンヤ
+イイダ,シュウイチ
+イイダ,ヒロシ
+イイジマ,コウイチ
+イイツカ,ノブオ
+イイズカ,カズノリ
+イイズカ,アリサ
+イカラシ,トモキ
+イケダ,ナオキ
+イケダ,マサフミ
+イケダ,ジュン
+イケダ,ヒデト
+イケナガ,ヒロオ
+ミツモト,ヒロタカ
+イケヤマ,ヒロユキ
+イケザ,ヒトシ
+イケザキ,オサム
+イクタ,テルユキ
+イマイ,ヨシノリ
+イマイズミ,ノリヒロ
+イマムラ,ヒロユキ
+イマムラ,エイリ
+イマニシ,トモヒロ
+イナガキ,カオリ
+イナガキ,カツユキ
+イナガワ,タツヤ
+イナホ,マサル
+イナミ,ヒロミチ
+イナツグ,ミサオ
+イナヨシ,タツオ
+イノ,カズト
+イノオカ,シンヤ
+イノウエ,タカユキ
+イノウエ,タケシ
+イノウエ,ヒデカズ
+イノウエ,タカシ
+イノウエ,タカアキ
+イノウエ,ユウイチ
+イノウエ,キクオ
+イリサワ,アキヒコ
+イセ,ユキオ
+イセキ,カツヤ
+イシダ,ヤスノリ
+イシダ,ツヨシ
+オカダ,ハルミ
+イシイ,エイジ
+ヤマダ,ヒロブミ
+スギハラ,ヒロタカ
+イシカワ,カツラ
+イシカワ,マサコ
+イシカワ,マサミ
+イシマル,ノリコ
+イシモト,タツオ
+イシモト,マサヒロ
+イシモト,ケンジ
+イシノ,カクイチロウ
+イシツカ,サトシ
+イシワタ,タクヤ
+イシワタ,ユウジ
+ヒラバヤシ,エイジ
+イシザキ,モトノリ
+イシズカ,トオル
+イソダ,タケシ
+トオカ,トシユキ
+クリハラ,ケイジ
+イトウ,ケンイチ
+イトウ,ヨシアキ
+イトウ,エツキ
+イトウ,ヨウジ
+イトウ,サトシ
+イチヤナギ,シゲヒト
+イトウ,ツネヒロ
+ナガタ,カツミ
+イトウ,タカハル
+カミカワ,タダミツ
+イワイ,ノボル
+イワカワ,テルヒサ
+イワミ,トシヒコ
+イワミ,タカシ
+イワモト,トモコ
+イワナガ,マサヒロ
+イワサキ,ケイコ
+イワサキ,フミカズ
+イワセ,ヒロユキ
+イワシタ,オサム
+イワタ,コウセイ
+イワタ,サトシ
+イワタテ,ヒデキ
+イズミ,ミワ
+ジンノ,タカヤス
+カガワ,ヒデオ
+カイヌマ,ノブオ
+カジタ,タカミチ
+カケガワ,カズタカ
+カキヌマ,ナオキ
+カマダ,タカヒロ
+カマタ,ヒロキ
+カメタニ,クニアキ
+カミ,マサノリ
+カミムラ,マサシ
+カミヤマ,マサユキ
+カナウチ,タカユキ
+タケウチ,ミキ
+カネコ,ヤスノブ
+カネコ,ヤスキ
+カンヌキ,セイイチ
+カノウ,キヨクニ
+カラハシ,ヒロアキ
+カサイ,ミノル
+ノムラ,エミコ
+カサイ,モモコ
+カセ,ジュンイチ
+カシクラ,ヨシロウ
+カシムラ,サトシ
+カシワギ,カヨコ
+カタノ,テルヒサ
+カタオカ,ヤスシ
+カトウ,オサム
+カトウ,ナオキ
+カトウ,ケイ
+カトウ,マサハル
+カトウ,タカアキ
+カトウ,タカシ
+カトウオカ,ユカリ
+カツイ,ジ
+カツマタ,ミノル
+カワバタ,タカオ
+カワチヤ,トシアキ
+カワダ,リセイ
+カワダ,ヒロユキ
+イリサワ,フミオ
+カワイ,ミワ
+カワカミ,ケンジ
+カワカミ,ミノル
+カワミ,アキラ
+カワムラ,ケンジ
+イシイ,ヤスキ
+カワノ,マサヒロ
+カワムラ,キヨヒロ
+カワサキ,ノブユキ
+カワセ,ナオキ
+カワセ,ヒロシ
+カワセ,エイジ
+カワシマ,エイコ
+カワタニ,クニヒコ
+ケイダ,マサアキ
+キダ,シゲコ
+キダチ,シゲオ
+キハラ,トモエ
+キクカワ,ユカリ
+キモト,マサヒデ
+キムラ,ケンイチ
+カマタ,ヒロユキ
+イクミ,マユミ
+キノシタ,シゲカズ
+キノウチ,マキ
+キシ,タクシ
+キシモト,カズヒロ
+キウチ,トヨアキ
+コバ,ヒロユキ
+モリ,ヒデキ
+コバヤカワ,タケシ
+クボタ,ヒトシ
+コバヤシ,テツヤ
+オオカワ,シン
+コバヤシ,テツジ
+コバヤシ,キヨノリ
+コマタ,エイタツ
+コバヤシ,カツミ
+コバヤシ,カツユキ
+コバヤシ,カズヒコ
+コダマ,ヤスシ
+コエジ,ツトム
+コグチ,ケンジ
+コハタ,トシヒコ
+コヒラ,キミオ
+ナカガワ,リエコ
+コヤマ,アキラ
+コイデ,ヨシロウ
+コイデ,ジュン
+コイケ,シゲル
+コイズミ,モトコ
+コジマ,タクヤ
+コケグチ,ヤスマサ
+コクボ,ヨウコ
+コマツ,タカコ
+コマツ,ユミコ
+コミヤ,ヨウジ
+コンド,カズトシ
+コンド,アキラ
+コンド,ミエ
+コンド,タカユキ
+コンド,タツオ
+コニシ,タカコ
+コサカ,マサヒロ
+コセキ,トシヒコ
+コシイシ,タツヤ
+コシオ,マサトシ
+コスゲ,トシアキ
+コウヤ,マサノリ
+コヤマ,カズシ
+コヤマ,オサム
+タケチ,シュウゾウ
+クボ,トシヤ
+クボ,ツトム
+クボ,フミキ
+クガイ,タカユキ
+イカラシ,カズヒロ
+クマザワ,ノブコ
+クニミツ,ヒサヨシ
+クノ,セイシ
+ホシノ,トシヤ
+クラシゲ,コウジ
+クリハラ,ミカ
+ナカガワ,ショウイチ
+ヤナギダ,ユキオ
+クリヤマ,ヒデアキ
+クロカワ,ヒデユキ
+クサカワ,ケイイチ
+クサナギ,オサム
+クサノ,ヒデヒコ
+クセ,サトル
+クシダ,チエ
+クスダ,コウイチロウ
+クスキ,チエコ
+クスミ,ユタカ
+マエダ,タツヤ
+マエダ,アキオ
+マエカワ,ヒロコ
+マエカワ,タカオ
+マガリフチ,ヨシオ
+マキノ,チヒロ
+マキノ,ケンジ
+マナベ,マサヨ
+アガツマ,タツユキ
+マルオ,シゲル
+マルタ,ナオキ
+マルヤマ,ユカ
+マルヤマ,マコト
+マルヤマ,タカヒロ
+マルヤマ,ユウジ
+マスダ,テルミツ
+マスダ,トシヤ
+カンバラ,イズミ
+マツバラ,ヒロシ
+ナカムラ,チトセ
+マツダ,クニノリ
+マツダ,マサユキ
+マツイ,ヒロユキ
+マツイ,ヨシノリ
+マツイ,シュウイチロウ
+マツイ,チヨコ
+マツモト,アツシ
+マツモト,ケンジ
+マツモト,マサカツ
+マツモト,シンヤ
+マツオカ,ミホ
+ナルセ,リュウジ
+マツヤ,ノブヒコ
+メザワ,ヒトシ
+ミギタ,マユミ
+ミカミ,ショウジ
+ミムラ,カズヤ
+ヤナギ,コウイチ
+ミナカタ,マサユキ
+ミネ,マサヤス
+ミネ,ヤスエイ
+ミノワ,キヨエ
+ミサワ,マキコ
+ミサワ,タカヒロ
+ミシマ,ツヨシ
+ミタムラ,トモヒロ
+ミト,ノブオ
+ミツヒラ,マリコ
+ミツイシ,マサフミ
+ミツナリ,タカエ
+ミウラ,ヒロカズ
+ミヤベ,ケンジ
+ミヤジマ,シゲキ
+ミヤモト,シゲル
+ミヤモト,トモミ
+ミヤサカ,ユウイチロ
+ミヤサカ,ケンイチロ
+ミヤシタ,ヒロカ
+ミヤシタ,ジュンコ
+ミヤザキ,ノリシゲ
+ミヤザワ,カツミ
+ミヤザワ,タカユキ
+ミゾハシ,タケヒコ
+サカイ,ヒロシ
+ミズノ,ヒロアキ
+ミズオチ,タカオ
+ミズシマ,ケンジ
+ミズタ,ケンジ
+モチハラ,クニ
+モチズキ,コウイチ
+モモセ,シュウイチ
+モリ,ヒロキ
+モリ,アキヒロ
+モリ,チエ
+モリ,ハズキ
+モリ,ヒデキ
+モリ,マモル
+モリカワ,マサヨ
+モリモト,ヤスヒロ
+モリモト,コウイチ
+モリモト,マナブ
+モリムラ,シンイチ
+モリノ,カズミ
+モリサワ,クニカズ
+シマオカ,オサム
+モリシタ,ユカ
+モリヤマ,ヒロコ
+モロオカ,ミツヒロ
+モロトミ,ナオキ
+モトキ,タダトシ
+モトノ,カツユキ
+モトタカ,ヒデキ
+ムグルマ,タクジ
+ムカイ,ヨシミ
+アンドウ,イワオ
+ハネ,コウキ
+ムラカミ,トシカズ
+ムラマツ,ツトム
+ムラシゲ,カズユキ
+シモムラ,ジュン
+ムラタ,マコト
+ミョウガ,タカユキ
+ナガハラ,ヒロシ
+イトウ,カツミ
+ナガイ,ケイタ
+ナガイ,トオル
+イワト,ヨシキ
+タケシゲ,チホコ
+ナガオ,アキヒロ
+ナガオ,ミチノリ
+ナガオ,イサエ
+フクツカ,ケイコ
+ナガサワ,ヒデキ
+ナガサワ,ヤスヒロ
+ナガセ,ススム
+ナガシマ,アキオ
+ナガタニ,フミヒコ
+ナガワキ,ヒロヤス
+ナガヤマ,マサヒデ
+ナゴヤ,モリオ
+ナイトウ,ノブユキ
+ナイトウ,サダミツ
+ナカダ,タクヤ
+ナカガキ,ヒロアキ
+ナカガワ,テルノブ
+ナカガワ,トシヒロ
+ナカガワ,ヤスヒロ
+ナカガワ,マサシ
+ナカジマ,トオル
+ホリウチ,トヨジ
+ナカハラ,カズヒト
+ナカジマ,カズユキ
+ナカジマ,コウジ
+キクタ,ミカ
+ナカジマ,トシアキ
+ナカマル,トシコ
+ナカムラ,ヨシ
+ナカムラ,マコト
+ナカムラ,チエ
+ナカムラ,ノリコ
+ナカムラ,タカオ
+ナカムラ,タカシ
+ナカムラ,リュウイチ
+ナカムラ,シゲカズ
+ハットリ,マナブ
+ナカムラ,サブロウ
+ナカムラ,トオル
+ナカムラ,タツジ
+ミヤモト,イズル
+ナカニシ,ヒデト
+ナカニシ,スナオ
+ナカノ,ヨシアキ
+ナカノ,チユキ
+ナカノ,ヤスヒデ
+ナカノ,オサム
+ナカノ,ツカサ
+ナカノ,ケイ
+ナカノ,ヨシノブ
+ナカオ,タカヒロ
+ナカオカ,マサカツ
+ナカシマ,シンイチ
+ナカシマ,カズナリ
+シナダ,アキラ
+ナカタ,カズナリ
+ナカヤ,タクジ
+サイカワ,ヒトシ
+ハセガワ,ヒロシ
+ナカザワ,マミ
+ナマツ,マミ
+ナリタ,タクジ
+ナスノ,タカアキ
+ネモト,ミネアキ
+ネオイ,マコト
+ネズ,ナオキ
+ニイムラ,カズマサ
+ニイヤマ,チカゲ
+ニイヤマ,ヒロシ
+ニノミヤ,ヒロシ
+ニノミヤ,カズアキ
+ニシ,タカオ
+ニシダ,マサノリ
+ニシダ,マサシ
+ニシドノ,ヨシノリ
+ニシカワ,アキラ
+ニシキド,アキヒコ
+ニシムラ,アキラ
+ニシナ,ダイイツ
+ニシオ,ジュンジ
+イノウエ,カズトシ
+ニシザワ,タカアキ
+ニシズカ,トシヤ
+ニッタ,ヒトミ
+ノダ,ワカコ
+ノムラ,サトシ
+ノノムラ,ヒロユキ
+ノリハシ,イサオ
+ヒノ,カズユキ
+ノザキ,シン
+ノザワ,マサヒロ
+ヌマノ,ノブコ
+オビセ,ヒロキ
+オボカタ,ケンスケ
+オチ,アキヒロ
+ハセガワ,ミツアキ
+マナベ,ヒロユキ
+オダ,カツミ
+オダ,シンスケ
+オダ,ヒデヒロ
+オダ,ジュンコ
+オダクラ,ギョ
+オガタ,ヒトシ
+オガワ,トシヒコ
+アベ,ヨウスケ
+オグチ,コウキ
+オグマ,マサヨシ
+オグラ,タマキ
+オグラ,ヒデオ
+ムサシ,ミツル
+オグラ,マサヒコ
+オグリ,マコト
+オオバ,ケンジ
+オオハシ,ヨウイチ
+オオイ,ヒロカズ
+オオイエ,ケンジ
+オオクボ,ハルシ
+オオクマ,イサム
+オオクマ,ヒロシ
+オノ,カツミ
+オオヌマ,カヨコ
+タカセ,ヨシヒデ
+オオサワ,ヒデキ
+オオサワ,ヒロシ
+オオサワ,ケンジ
+オオサワ,ソウスケ
+オシマ,マリコ
+オシマ,ヒロオ
+オシマ,ミツヒロ
+オオタ,シンジ
+オオタカ,ヒロユキ
+オオタキ,タケシ
+オオタニ,ヨウジ
+オオツカ,ヒロノブ
+オオツカ,テツオ
+オオワ,マコト
+オオワダ,ヒロノリ
+オオヤマ,ヒトシ
+オゾネ,ノブユキ
+オカ,ヤスシ
+オカ,ヒロアキ
+オカ,カズシゲ
+オカ,タカノリ
+オカダ,タカヨシ
+オカダ,ヒトシ
+オカダ,マサユキ
+オカダ,トヨアキ
+オカドメ,キヨカツ
+オカモト,ヤスシ
+オカモト,コウジ
+オカモト,ヒロシ
+オカムラ,リカ
+オカノ,アキラ
+オカノヤ,ミツル
+オカオ,ヤスジ
+オカザキ,ヒデオ
+オキ,ヒロユキ
+オキモト,マサヒコ
+オクムラ,トモコ
+オクムラ,ユキヒコ
+オクノ,アイ
+オマタ,アキヨシ
+オニキ,ヒロユキ
+オニツカ,マサアキ
+オノデラ,アキラ
+オノザワ,ヒデツグ
+オオニシ,ケン
+オオニシ,クニヨシ
+オオツカ,ナオヒサ
+オサダ,トモノブ
+オサキ,タカシ
+オサナミ,シズヨシ
+オヤマダ,ヤスノリ
+オザワ,コウジロウ
+オザワ,シロウ
+オザワ,ヤスノリ
+サエグサ,ヤスノリ
+サエキ,ヨシヒロ
+ナカジマ,タケシ
+サイタ,チエコ
+オガワ,ヤスハル
+サイトウ,カズヒサ
+サイトウ,タカヒコ
+サイトウ,ヨシノリ
+サカイ,リョウジ
+サカイ,ヒデノリ
+サカイ,ケイジ
+サカイ,タケシ
+サカイ,タク
+サカイ,ショウゴ
+サカイリ,ヒロユキ
+サカキ,キョウコ
+サカマ,マサノリ
+サカマキ,マサトモ
+サカモト,マサトシ
+サカモト,サトル
+サカモト,シュウイチ
+サカタ,タカシ
+サカウエ,タカユキ
+サカズメ,タクミ
+ナカノ,トモヒロ
+サクマ,ヨシヒコ
+サンボンマツ,カズヒロ
+サノ,タケシ
+サノ,トシフミ
+ササガワ,ユタカ
+ササキ,ユリコ
+ササキ,ヤスユキ
+ササキ,カズヨシ
+ササキ,コウジ
+ササザワ,トシユキ
+サトウ,ヤスシ
+サトウ,カツヒト
+サトウ,ヨシタカ
+サトウ,タカユキ
+サトウ,ノブタカ
+サトウ,ユウスケ
+サトウ,ヒデユキ
+サトウ,サトシ
+サトウ,オサム
+サトウ,マユミ
+サトウ,ノブオ
+サトウ,ヒデノリ
+サツマ,ミワコ
+サワグチ,ナオト
+サワイ,ミチヒロ
+サワラギ,ヤスオ
+サワタニ,クニオ
+セイタ,アツシ
+セキ,マサマロ
+セキ,ノブヒロ
+セキ,ノリヤス
+セキハラ,アキラ
+セキネ,ユウスケ
+セキネ,ヒロユキ
+シライシ,マサヒロ
+センガ,ノブオ
+セノ,ノリユキ
+セシモ,シュウイチ
+セト,タツオ
+セトグチ,タツヤ
+テルヤ,ユウイチ
+シイバ,リカ
+シバノ,トモユキ
+シバサキ,イクコ
+シバタ,テツロウ
+シブサワ,マサフミ
+シブサワ,ヨシヒロ
+シチ,ダイエイ
+シチタ,タカユキ
+シゲヒサ,トオル
+シゲサワ,ミユキ
+ムラタ,リュウタロウ
+シマズ,タカツグ
+シマズ,タツシ
+キシダ,タカシ
+シミズ,ミチオ
+シミズ,エイイチ
+シミズ,ヒロシ
+シミズ,ハヤトシ
+シミズ,クンジ
+シミズ,ケイコ
+シミズ,ヒロシゲ
+ミヤコシ,トシヒロ
+シモミチ,マリコ
+ナカバヤシ,カオル
+シモオサ,タケシ
+シモツジ,シンジ
+シナダ,チカシ
+シナガワ,ノブオ
+シンモト,マサヒロ
+シノ,ヨシノリ
+シノダ,リュウタロウ
+シノダ,ハツエ
+シノザキ,ショウジ
+シオタニ,テツヒロ
+シオヤ,ツカサ
+シラベ,イッセイ
+シラガキ,ヨシハル
+シライ,カズヒコ
+シライシ,エツヒロ
+シライシ,ヒロシ
+シラキ,カズヒロ
+シズタ,ケイコ
+ショウジ,ケイタ
+ソノダ,ミドリ
+スドウ,モトユキ
+スエダ,セイコ
+スエツグ,タカシ
+スガタ,ヤススケ
+スガワラ,ヨシアキ
+スギノ,ヨシノブ
+スギサキ,ユウジ
+スギシマ,マサル
+ナガイ,マリコ
+スギヤマ,トシヒロ
+スミ,カツヒロ
+スミタニ,シンイチ
+スサキ,ヒロユキ
+ススキ,コウイチ
+スヤマ,トモノリ
+スズキ,ミチオ
+スズキ,ケンイチ
+スズキ,コウイチ
+タジマ,サトキ
+スズキ,タクヤ
+スズキ,ヤスコ
+スズキ,ユタカ
+スズキ,アキコ
+スズキ,アツシ
+スズキ,ヒデトモ
+スズキ,ヒデトシ
+スズキ,ヒデトシ
+スズキ,ヒロキ
+シュクヤ,ジュンイチ
+タチバナ,カヨ
+タチヤマ,コウイチ
+タドコロ,マサアキ
+タガワ,マサヒト
+タグチ,モトカズ
+タグチ,ナオユキ
+タグチ,ノブヒサ
+タイ,ノリオ
+タジマ,サチエ
+タカダ,サトル
+タカダ,シゲノブ
+タカギ,ススム
+ミヤモト,タカシ
+タカハマ,テツオ
+タカハシ,ヤスアキ
+タカハシ,マサノリ
+タカハシ,ツトム
+タカハシ,マサユキ
+タカハシ,マコト
+タカハシ,ケンリュウ
+タカハシ,トシヒサ
+タカハシ,ヤスシ
+タカハシ,ヒロユキ
+タカハシ,ヤスノリ
+タカハシ,ヒロシ
+タカハシ,モトヤス
+タカハシ,ユキエ
+タカハシ,ヤスコ
+タカハシ,タカシ
+タカハシ,ヨシヒサ
+タカハシ,トシユキ
+タカハシ,サトコ
+タカハシ,ヒデキ
+タカハシ,イチロウ
+タカハシ,ノブアキ
+タカハシ,ミツル
+タカナシ,シン
+タカノ,カツノリ
+タカオカ,テツヤ
+タカセ,シゲキ
+タカシナ,コウセイ
+タカシナ,ダイサク
+タカタ,ヒロアキ
+タカヤマ,ヒロユキ
+タカヤナギ,ジュン
+タケバヤシ,カツミ
+ミカミ,ケイスケ
+タケイ,マコト
+タケキ,マシュウ
+タケモリ,ノブヒコ
+タケムラ,オサム
+タケウチ,ケン
+タケヤ,ショウイチ
+タケヤマ,トシアキ
+タキグチ,トシカズ
+タキシタ,トシユキ
+タキザワ,アキラ
+タマイ,シゲル
+タミヤ,アキコ
+タムラ,ヨウスケ
+タナベ,ヒロユキ
+タナハシ,ヨシユキ
+タナカ,シゲト
+タナカ,ヒデノリ
+タナカ,ヒロユキ
+タナカ,ヒロキ
+タナカ,ユキコ
+タナカ,ヒロコ
+タナカ,ジュンイチ
+タナカ,シン
+タナカ,マサカズ
+タナカ,ジュンコ
+コダマ,ヨシヒコ
+タナカ,アサオ
+タナカ,ノリアキ
+タナカ,サトシ
+タナカ,オサム
+タナムラ,サトシ
+タンバ,カズナリ
+タニグチ,ケイジ
+タニグチ,ジュンコ
+タニイ,ゲン
+タニムラ,トモノリ
+タニワキ,オサム
+タルイ,ショウジ
+タサキ,カズユキ
+タシロ,マサヤ
+タテイシ,ナオヤ
+タウチ,リョウコ
+タウラ,ヒロアキ
+テラダ,ヨシオ
+サトウ,アキラ
+テラニシ,モリユキ
+テラシタ,ヒロシ
+テルキナ,アキヨ
+トベ,エリコ
+トウゴウ,タカハル
+トグチ,エイジ
+トジ,カツノリ
+トミナガ,マサト
+トミナガ,ヤスマサ
+トミオカ,ナオキ
+トミタ,スグル
+トミヤマ,ヒロタカ
+トネガワ,アキラ
+トシナリ,ジュンコ
+トヨダ,コウジ
+トヨダ,カツヤ
+トヨダ,マサヒコ
+オオモリ,ヨウイチロウ
+トズカ,ヒデオ
+ヤマカワ,リュウヘイ
+ツボイ,ジュンコ
+ツチハシ,カツミ
+ツチノ,ミノル
+ツチヤ,ヨシヒロ
+マキ,ヒデノリ
+ツダ,ミツノブ
+ツガワ,ケンジ
+ツジ,サトシ
+ツジ,トヨカズ
+ツジ,ヒロシ
+ツカダ,ヒロユキ
+ツカモト,キヨシ
+ツムラ,タカユキ
+ツナシマ,ユキオ
+オクヤマ,マモル
+ツノダ,サダハル
+ツノガイ,ヤスノリ
+ツシマ,ノボル
+ツツミ,ヒロシ
+ツズキ,カツミ
+ツルオカ,ヒデト
+ウチダ,ヒサシ
+ウチダ,マサル
+ウチダ,マサフミ
+ウチダ,ヤスシ
+ウチノ,アキヒコ
+ウチノクラ,メグミ
+ウチヤマ,ミチハル
+ウチヤマ,タカノリ
+ウチヤマ,ノブヒロ
+ウダ,ケイジ
+ウエダ,シゲル
+ウエダ,ナツコ
+ウエダ,ヨシト
+ウエダ,トシハル
+ウエハラ,シゲル
+ウエハラ,マサオ
+ウエハラ,シンジ
+ウエジマ,ヒロユキ
+ウエキ,エリコ
+ウエムラ,クニヒロ
+ウエノ,タカヒデ
+ウエノ,トクヒロ
+ウエノ,ユウジ
+ウエヤマ,ヨシコ
+ウイ,ケイスケ
+ウメダ,ショウイチ
+ウメダ,アツシ
+ウメダ,チハル
+ウメダ,ケンジ
+ウメハラ,マコト
+ウメカワ,マサノリ
+ウルシダニ,マサユキ
+イノウエ,タケシ
+ウサミ,ユウコ
+ウシマル,タツヒロ
+ウシヤマ,カツユキ
+ウスイ,コウヘイ
+ウスイ,オサム
+ウツミ,ジロウ
+ササガワ,カズアキ
+ソメヤ,ケンジ
+ワダ,マサオ
+ワダ,マサヨシ
+ワダ,ヨシアキ
+タノウエ,ユウイチ
+ワシダ,ヒデアキ
+ワタイ,ミチアキ
+ワタナベ,マサユキ
+ワタナベ,アキオ
+ワタナベ,カズヒサ
+ワタナベ,サトシ
+ワタナベ,ヒデキ
+ワタナベ,トオル
+ワタナベ,ヒロユキ
+ワタナベ,アキラ
+ヤギ,カズオ
+ヤゴ,マサヒコ
+ヤハギ,ナオフミ
+ヤクシ,オサム
+ヤマダ,レイキ
+ヤマダ,タカシ
+ヤマダ,トミヤス
+ヤマダ,トシヒロ
+ヤマダ,トシオ
+ヤマダ,ヨシオ
+ヤマダ,ユカ
+ヤマガタ,タケシ
+ヤマギシ,マサエ
+ハリ,マサユキ
+ヤマグチ,カツシ
+ヤマグチ,トモカズ
+ヤマグチ,トモミ
+アオツカ,ヨシサト
+ヤマグチ,マサノリ
+ヤマジ,ミチオ
+ヤマモト,ヒロノリ
+ヤマモト,ジュンイチ
+ヤマモト,ケンジロウ
+ヤマモト,カズヒロ
+ヤマモト,ヒロフミ
+ヤマモト,タカユキ
+ヤマモト,アキヒデ
+ヤマモト,トシノリ
+ヤマモト,エイジ
+ヤマモト,マナブ
+ヤマモト,トシユキ
+ヤマモト,ナオフミ
+ヤマムラ,トモカズ
+ヤマナカ,ユタカ
+ヤマシナ,シンジ
+ヤマシタ,ユキヒロ
+ヤマシタ,リンジュ
+ヤマシタ,ケンジ
+ヤマシタ,ヒトシ
+ヤマテ,ケイ
+ヤマウチ,アキラ
+ヤマザキ,ユキヒサ
+ヤマザキ,ノボル
+ヤマザキ,ヒトシ
+ヤナギ,カズオ
+ヤナギダ,コウイチロウ
+ヤナギダ,ミホ
+ヤナイ,サトシ
+ヤナカ,タダシ
+ヤスダ,マサミ
+ヤスダ,イワオ
+ヤスダ,セキコ
+ヤスモト,カズヤ
+ヤツカ,ナオキ
+ヤザワ,ミズホ
+ヨダ,テツヤ
+ヨドガワ,ノリオ
+ヨダ,ヒロノリ
+ヨコハタ,ヒロヤ
+ヨコヤマ,イワオ
+ヨコヤマ,シゲル
+ヨモリ,アキヨシ
+ヨネモチ,ヨシツグ
+ヨロズヤ,ナオヒサ
+ヨシダ,タツゾウ
+ヨシダ,タカシ
+ヨシダ,ノリオ
+フジサキ,コウイチ
+ヨシダ,ヒトシ
+ヨシダ,テツオ
+ヨシマツ,チハル
+ヨシモト,ユウスケ
+ヨシムラ,カツヤ
+イシバシ,タダシ
+ヨシノ,タツヤ
+タカノ,ケイゴ
+ユハシ,ショウコ
+エダヒロ,ミドリ
+ハラダ,マサユキ
+ハヤサカ,リュウセイ
+イナガキ,マサキ
+イノウエ,サトシ
+イシハラ,タカシ
+コジマ,ヤスヒサ
+コスギ,シンゴ
+クボタ,ナルミ
+モリ,タカシ
+ナカバヤシ,ナオヒサ
+ネモト,タカシ
+ニノミヤ,ケイ
+オガワ,メグミ
+オオタニ,マサコ
+セキ,クミ
+シブタニ,ツトム
+シント,ヒロユキ
+ソブエ,ヒトシ
+タカハシ,タケシ
+タカセ,マミコ
+トヨダ,ヒロヒデ
+ウエダ,シンタロウ
+ヤマモト,ヤスユキ
+ヤマズミ,ヒロシ
+ヨシダ,コウジ
+アサカイ,ナルトシ
+フクタ,カズミ
+カワサキ,カズオ
+ヒロセ,ヨシカズ
+カサハラ,セツコ
+オザワ,ケイイチ
+カトウ,ケイイチ
+ナカムラ,セイエイ
+タグチ,ヒロム
+アダチ,リョウセイ
+アカシ,ヨシヒサ
+アキヤマ,エミ
+アオキ,ショウジ
+アラキ,トモタケ
+アサヒ,フミノリ
+アサノ,トシヒコ
+アワノ,オサム
+アワノ,ジュンジロウ
+ドウジ,ナオユキ
+ドウゾノ,セイヤ
+フチカミ,カツロウ
+フジイ,ケンジ
+フジイ,コウイチ
+フジイエ,ノブヤ
+コワ,シュンイチ
+フジシロ,マサオ
+フジタ,ヨウコ
+フジタ,ヒロユキ
+フジワラ,コウジ
+フクダ,ナオユキ
+フクダ,タツオ
+フクダ,ケン
+サイトウ,オサミ
+フクヤマ,ジュンイチ
+フルハタ,コウジ
+ゴトウ,ヒロカズ
+ハムロ,オサム
+ハセ,タクヒサ
+ハシモト,マサヒロ
+ハシモト,ジュンイチ
+ハットリ,ジュン
+ハヤシ,カツヒコ
+ハヤシ,トシアキ
+ハヤシ,マサカズ
+ハヤシ,シゲミツ
+ハヤシ,メイ
+ハヤシ,マサツグ
+ヒビ,ヒロユキ
+ヒグマ,タクヤ
+ヒライ,ヒロタカ
+ヒラカワ,ツネトモ
+ヒラノ,カズヒコ
+ヒロナカ,ミノル
+ホリグチ,ノブアキ
+ホサカ,サトシ
+ホソヤ,セイジ
+イチイ,シゲユキ
+イチカワ,モトヒロ
+イグマ,エイイチ
+イイサカ,マユミ
+イカワ,イワオ
+イケダ,アユコ
+イケダ,イクジロウ
+イケガミ,マモル
+イノウエ,シロウ
+イノウエ,ヒサアキ
+コバヤシ,トクジロウ
+イシバシ,ヤスヒサ
+イシダ,ヨシユキ
+イシマル,ミワ
+イシズカ,トシユキ
+イソ,ヒデアキ
+イトウ,ヒデアキ
+イトウ,アキヒコ
+イトウ,マサヒロ
+イトウ,サワコ
+イトウ,テツヤ
+イトウ,ヨシミネ
+イトウ,ケンイチ
+イワタ,サトシ
+カリヤ,セイイチ
+ガサキ,シゲオ
+カガ,カズヒサ
+カゲヤマ,ツヨシ
+カジナミ,タカユキ
+カミヒラタ,ヒロユキ
+カナモリ,タツヤ
+カネコ,テルオ
+カネコ,ヨシオ
+カニワ,アキラ
+カサマ,ノリマサ
+カセ,ヒロユキ
+カシムラ,フミトシ
+カタオカ,ケンジ
+カトウ,ジュンコ
+カトウ,ケイジ
+カトウ,コウタ
+カトウ,アキヒコ
+カトウ,ノブヒデ
+カワチ,ケイコ
+カワグチ,チサト
+カワノ,ミツオ
+カワシマ,テツジ
+キクチ,トモアキ
+キモト,ヨシヒロ
+キムラ,カツヤ
+キノシタ,テツ
+キシハラ,ツグアキ
+キシカワ,ヒデユキ
+キタ,リエ
+キタガワ,ミチハル
+キタノ,リエコ
+キタヤマ,セイコ
+キヨオカ,マサヨ
+キヨセ,ツカサ
+コバリ,タテキ
+コバヤシ,カオル
+コバヤシ,コウタロウ
+コボリ,タマミ
+コイワ,タケシ
+コジマ,フミヨ
+ハシモト,コウイチ
+コミヤマ,タカヒロ
+コンド,トモユキ
+コンド,ノリコ
+コンド,ヨウスケ
+コシカワ,アキフミ
+コテガワ,ケンジ
+コワ,ノブユキ
+クボタ,ショウイチ
+クボタ,ヒロユキ
+クドウ,ハヤト
+クガ,ヨシヒロ
+モリ,ユキヒロ
+クニタケ,ハジメ
+クラカケ,ヒロカズ
+クリ,マサヒト
+クサフカ,シノブ
+クワバラ,トオル
+マチダ,ヒロユキ
+マルヤマ,ユキ
+タケウチ,アキオ
+マツバ,アツシ
+マツバラ,タケロ
+マツダイラ,マキ
+マツモト,ヨリコ
+マツモト,ヨシアキ
+マツナガ,ミホ
+マツオ,マサヤ
+マツオ,ノリユキ
+マツオ,シンヤ
+ミクニ,ヤスシ
+ミナガワ,ワタル
+ミナガワ,シゲル
+ミノテ,トモアキ
+ミタ,ヨシクニ
+ミトメ,タケシ
+ミツヤマ,シュウイチ
+ミヤチ,タカフミ
+ミヤジ,コウジ
+ミヤジマ,ミツオ
+ミヤタ,ケイコ
+ミヤザキ,キヨアキ
+ミヤザキ,マコト
+ミヤザト,ヨシナリ
+ミヤザワ,ヒロキ
+ミゾグチ,モトコ
+ミズイ,マサヨシ
+モンノ,エイジ
+モリ,ミツヒロ
+モリ,ノリスミ
+モリタ,クルミ
+モリタ,トシアキ
+モリヤマ,マリコ
+ムラカミ,リュウイチ
+ムラカミ,コウイチロウ
+ムラカミ,ミノル
+ムラマツ,シンスケ
+ムロゾノ,ヒロアキ
+ナガブチ,ヒロシ
+ナガノ,ミツル
+ナガセ,リュウイチ
+ナガタニ,シホ
+ナゴヤ,ヒロアキ
+ナカガワ,カオリ
+ナカミチ,ショウ
+ナカムラ,ジュンイチロ
+ナカムラ,マサノリ
+ナカノ,ヒロシ
+ナカシマ,ヒロノリ
+ニシダ,ジュン
+ニシハラ,アツト
+ニシムラ,シンヤ
+ニシオカ,カズヒコ
+ノグチ,ノボル
+ノセ,マサズミ
+オバタ,ユウジ
+オチアイ,イクコ
+オチアイ,ヒデヒコ
+オガワ,タカシ
+オガワ,マサト
+オガワ,タミヤ
+オガワ,カツトシ
+オギノ,マユミ
+オグラ,タカアキ
+コンド,ヤスユキ
+オオエ,マサミチ
+オオガキ,ジロウ
+オオニシ,ノリアキ
+オオノ,マサミチ
+オオタ,ヒロシ
+オシロ,カズシゲ
+オオタ,タカシ
+オオタシロ,ヒデキ
+オオツ,マサカズ
+オオツ,メグミ
+オオヤギ,エイジ
+オオヤマ,チハル
+オカモト,ヒロブミ
+オカヤマ,ミツヨリ
+オケタニ,タツコ
+オクヤマ,クミコ
+オノデラ,ヒデトシ
+オザワ,ミノル
+サイトウ,カズヒデ
+サイトウ,テルオ
+サイトウ,タカノブ
+サカグチ,ヒロカズ
+サカナカ,モトム
+サカニワ,ヨリコ
+サカウチ,トシタカ
+サクライ,ツトム
+サクライ,マサユキ
+サノ,タクヤ
+ササキ,マサミ
+ササキ,エリ
+ササキ,リエ
+ササマ,マサカズ
+サトウ,タケヤ
+サトウ,ヒロユキ
+サトウ,タカシ
+サトウ,ミワ
+ニシマタ,テツオ
+サワダ,マサヒサ
+センバ,ユウイチ
+セト,ヨシノリ
+シブヤ,ユキオ
+シイ,ミサコ
+シマダ,コウヘイ
+シマダ,ミエ
+オカモト,マサトシ
+シナガワ,サチエ
+シンカワ,ヒサヤ
+シンキュウ,マサユキ
+シノダ,テルエ
+シノハラ,セイイチ
+アサカワ,カオル
+シオハラ,マサト
+シロタ,カツヒロ
+スギモト,カズヒデ
+スギヤマ,キヨタカ
+スグチ,ノブコ
+モロトミ,ハルコ
+スズキ,マサフミ
+タグチ,アキオ
+タグチ,ユウジ
+タハラ,ヒロユキ
+タカギ,ヨシオ
+タカハシ,カズオ
+タカイ,ケンジ
+タカヤマ,カズコ
+タケ,ナオキ
+タケバヤシ,リュウジ
+タケカワ,ジュンコ
+タケウチ,カホル
+ワタナベ,コウジ
+タケウチ,ヒデキ
+タミヤ,マサカズ
+タムラ,ヒロシ
+タナベ,マサヒロ
+タナカ,ケイコ
+タナカ,ノブコ
+タナカ,ツヨシ
+タニグチ,アツシ
+タニグチ,カズヒロ
+タニムラ,タツオ
+タノウエ,アキヒロ
+タルサワ,アキコ
+タシロ,トシハル
+テラダ,ユキヒコ
+トウガ,ヒデミネ
+トガシ,シゲオ
+トウゴウ,シンヤ
+トクナガ,アヤコ
+トモノ,カズミ
+トヨダ,ヨウジロウ
+ツチヤ,ヒロアキ
+ツカハラ,ノブヒロ
+ウラサキ,ユウジ
+ワダ,トモヤス
+ワダ,レイコ
+ワタナベ,マサトシ
+ワタナベ,フミオ
+ヤギヌマ,ケイコ
+ヤマダ,トシアキ
+ヤマダ,ヒサシ
+ヤマダ,ケイジ
+ヤマモト,マサアキ
+ヤマモト,ヒデト
+ヤマモト,タツヤ
+ヤマモト,ユキヒロ
+ヤマナカ,チヒロ
+ヤマナカ,カオル
+ヤマシタ,マサヒロ
+ヒグチ,ジュンジ
+ヤマザキ,フミノ
+ヤナギ,ヒロシ
+ヤスダ,ノブユキ
+ヤスエ,トシヤ
+ヨコエ,ノブアキ
+ヨコヤマ,リエコ
+ヨネハラ,コウイチ
+ヨネミツ,マコト
+ヨリマツ,トモコ
+ヨシダ,フミヒロ
+ヨシノ,ミツヒロ
+ヨシタキ,オサム
+ユカワ,ジュンヤ
+ユリ,トモオ
+モリ,タカヒサ
+ササキ,カツヒコ
+シラハマ,タケヒロ
+テンパク,ユウイチロ
+ウチダ,ナオヤ
+ヤマウラ,トオル
+マツグマ,フミコ
+アベ,ヒロユキ
+アベ,カツミ
+アベ,カズオ
+アベ,ナオアキ
+アダチ,ナナオ
+アイハラ,ツヨシ
+アジマ,ヤスアキ
+アカサカ,トオル
+アキモト,コウゾウ
+アキヤマ,タカシ
+アキヤマ,タツヤ
+アクネ,ヒロシ
+アマノ,マナブ
+アマノ,チアキ
+アメミヤ,マサツグ
+アンドウ,ミキ
+アンドウ,ミワ
+アンドウ,カズオ
+アンジキ,ユウコ
+アンペイジ,シュンイチ
+アオキ,ヨシコ
+アオキ,シゲハル
+アオキ,ユキコ
+アオキ,ジュン
+アオキ,トシアキ
+ハラシマ,リカ
+アオキ,ツトム
+アオキ,ナオヒサ
+アオヤギ,タカユキ
+アオヤマ,ヨウイチ
+アオヤマ,ケイスケ
+アライ,コウイチ
+アラキ,マコト
+アラキ,カツジ
+アラタ,ミキ
+アラヤ,シンイチ
+コバヤカワ,ヤスヒロ
+アリタ,ナルヒト
+アサバ,ヨシユキ
+アサカ,トモチカ
+アサクラ,タツオ
+アサノ,シュウジ
+アサノ,トモアキ
+アシベ,マサヒコ
+アワミヤ,ヒロユキ
+アザミ,ツトム
+アゼヤナギ,ヒロミ
+アズマ,リエ
+アズマ,タカユキ
+アズマ,ナオユキ
+ババ,ヨシカズ
+ババ,カツユキ
+ババ,ダイスケ
+バナカ,カズヤ
+サタケ,ケイコ
+チバ,モトハル
+チギラ,ノブヒコ
+チハラ,タカフミ
+チカイ,アツシ
+チュウマ,タケシ
+ダイ,マサヒロ
+ダイオ,ヒデキ
+ダテ,ヒロシ
+デグチ,コウジ
+デワ,エミコ
+ドイ,タイゾウ
+エビサワ,ヒロミツ
+ナカムラ,タカコ
+エイモリ,ハルミ
+エンド,ナオキ
+エンド,タカオ
+エノモト,ケイコ
+フジイ,ヒロカズ
+フジイ,ケンイチロ
+フジイ,タツノリ
+フジイ,ミツヨシ
+フジイ,トシアキ
+フジカワ,シノブ
+フジモリ,アキコ
+アオキ,アキラ
+フジモト,ナオヤ
+フジオカ,テツロウ
+フジタ,ヤスヒサ
+フジタ,ムツオ
+フカオ,シンイチ
+フクダ,カツヒコ
+フクダ,ヒロシ
+フクイ,ヒデオ
+フクイ,コウジ
+フクモト,ヒデタカ
+フクシマ,ヒデノブ
+フクシマ,ノブコ
+ヒノ,サチ
+フクザワ,キョウコ
+フクザワ,ミキコ
+フナダ,ユウコ
+フルダテ,ケイコ
+フルヤ,ケイスケ
+フタムラ,ミキヤ
+ナカムラ,モトヒサ
+ゴトウ,シゲキ
+ゴトウ,カズヤ
+ゴトウ,カイチロウ
+ゴトウ,ヨウコ
+ハバ,ヨウコ
+ハチヤマ,マサミ
+ハギワラ,シン
+ハマベ,タカユキ
+ハマダ,ヨシミ
+ハマダ,タカヒデ
+マエオカ,ヒトシ
+ハナミ,ヤスヒデ
+ハナオカ,アキコ
+セザイ,ナオキ
+ハラ,リョウジ
+サトウ,セイゴ
+ハラ,アツシ
+ハラダ,ナツミ
+ハラダ,エイイチ
+ハラダ,カズヒコ
+ハラダ,マサアキ
+ハラダ,ミツノリ
+ハリマ,ナオキ
+ホンマ,ノブアキ
+ハルヤマ,シゲル
+ハセ,ヨウイチ
+ハセガワ,タツオ
+ハセガワ,ヤヨイ
+ハセガワ,ケンタロウ
+ハセガワ,アキヒコ
+ハシグチ,ヒトシ
+ハシモト,カツコ
+ハシモト,カズヤ
+ハシズメ,コウタロウ
+ハシズメ,ミワ
+ハシズメ,シュンスケ
+ハタ,シンイチロウ
+ハタノ,チカラ
+ハタノ,カズトモ
+ハトリ,ナオキ
+ハットリ,タケシ
+ハットリ,ヨウイチ
+ハットリ,アキヒコ
+ハットリ,ユキ
+ハットリ,サトシ
+ハットリ,マサキ
+ハットリ,ワタル
+ハヤカワ,ケイコ
+ハヤカワ,ナオミ
+ハヤミ,スミヒト
+ハヤシ,ヒデアキ
+ハヤシ,ユミコ
+ハヤシ,マサタカ
+ハヤシ,マユミ
+ハヤシ,ヤスヒロ
+ササタニ,アキラ
+ハヤシ,マサノリ
+ハザマ,セイイチ
+ヘンミ,カナコ
+ヒビ,トモミ
+ヒダカ,トウコ
+ヒダカ,ユウコ
+ヒダカ,タロウ
+ヒエダ,ミチカズ
+ヒガキ,ショウジ
+ヒガシ,ヨシヒサ
+ヒイドメ,ヒロミチ
+ヒジクロ,セイイチ
+フクイ,イサオ
+ヒマ,ヨシキ
+ヒオキ,トウメイ
+ヒライ,マリ
+ミキ,マサユキ
+ヒラノ,フキヨ
+ヒラノ,カズヒロ
+ヒラタ,シロウ
+ヒラツカ,フミカズ
+ホダ,ヒロキ
+ヒラヤマ,ナオコ
+ヒロベ,キクミ
+ヒロイ,マサヒロ
+ヒロサワ,マサヒロ
+ヒロサワ,ナオコ
+ヒロスエ,ジュンコ
+ヒロタ,オサム
+ハヤマ,ユウコ
+ヒロワタリ,サユリ
+ヒサモト,ミカコ
+ヒサノ,ヨシアキ
+ヒサユキ,ユカリ
+ヒシダ,ヒロシ
+ヒシタニ,ヤスシ
+ワダ,フミエ
+ヒヤマ,ノブヒコ
+アリクラ,ユタカ
+ホンダ,ミノル
+ホンダ,ケイスケ
+ホンゴウ,マサト
+ホンマ,ユウイチ
+ホンマ,アキノブ
+マツモト,ケンタ
+ホリ,マナブ
+ホリ,アキト
+ホリベ,トシユキ
+ホリエ,アキノリ
+ホリエ,マサヒコ
+ホリエ,タダシ
+ホリウチ,ヨシフミ
+ホシバ,トオル
+ホシカワ,ヒデオ
+カトウ,ナオキ
+ホシナ,コウイチ
+ホリ,ノリユキ
+ホシノ,タカシ
+ホソダ,ノブオ
+ホッタ,サオリ
+ホチド,タカヤ
+イブカ,ヨシテル
+イチカワ,ヒトシ
+イチカワ,マリコ
+イチマス,ツトム
+イチノセ,カツミ
+イデ,マサヒコ
+イガラシ,マサト
+イガタ,エイイチロウ
+イイ,ユリコ
+イイダ,マサヨシ
+イイダ,マサユキ
+イイダ,シンジ
+イイノ,イチロウ
+イイヨリ,ミチハル
+イイズカ,マコト
+イカルギ,カツヤ
+イカワ,ケイスケ
+イケチ,マミ
+イケダ,コウイチロウ
+イケダ,モトハル
+イケダ,タカコ
+イケダ,タカユキ
+イケガミ,トモヒロ
+イケジリ,カズヤ
+イケタキ,クニオミ
+イクモト,シン
+イマイ,タケシ
+イマイ,レイコ
+ホソイ,ケンタロウ
+イマイ,サブロウ
+イマニシ,タケシ
+イナダ,ハジメ
+イナガキ,マナブ
+イナゲ,ケンイチ
+ハザマ,ヒサモト
+イノ,ジュン
+イノマタ,ケイタロウ
+イノウエ,リエ
+ヤスカワ,タカヒト
+ハル,トオル
+イノウエ,テルオ
+イノウエ,ツトム
+イノウエ,フミノリ
+イノウエ,ヒロヒサ
+イオキ,マサミチ
+イリエ,ノブユキ
+イサカ,トオル
+イサカ,ワタル
+オオモリ,ケンイチロ
+イシバシ,マナブ
+イシダ,ケイイチ
+イシダ,ウララ
+イシハラ,ヨシト
+イシハラ,ハルオ
+ヒラト,ヒデオ
+イシイ,ケイジロウ
+イシイ,ミキオ
+イシイ,アツシ
+イシイ,ハルオ
+イシイ,ケイジ
+イシイ,マサコ
+ハネイシ,シンスケ
+イシイ,ヤスシ
+イシカワ,ヨウコ
+イシカワ,ヨウスケ
+イシカワ,ヨシヒコ
+イシカワ,ユカ
+イシカワ,ノリコ
+イシオカ,ヨシユキ
+イシツカ,トシユキ
+イシワタ,アリヒロ
+イシザカ,コウジ
+イシザカ,エイイチ
+イシザキ,コウジ
+イシズキ,ナオト
+イソ,シゲヒト
+イソガイ,ユウコ
+イタバ,ユウジ
+イトウ,イノリ
+イトウ,マサヒロ
+イトウ,マサヒロ
+イトウ,バン
+イトウ,サトシ
+イトウ,アツシ
+ヒダカ,ヒデツグ
+イトウ,マサヒロ
+イトウ,ユキ
+ニシ,シンイチ
+イワダレ,ヨシノリ
+イワハシ,ユウコ
+イワキ,ミズホ
+イワモト,ヨシノリ
+イワサキ,ノブカズ
+ヒラツカ,ヒロシ
+イワサキ,ヒロユキ
+イワサキ,マサユキ
+イワサキ,ヒロユキ
+ジングウ,サトコ
+イワシゲ,マコト
+イワタ,ヒロシ
+ジングウ,ヨシノリ
+ゴ,ヤスカズ
+カガ,カツヤ
+カガブ,シンジロウ
+カギヤマ,ヒデオ
+カイ,ユウゾウ
+カイダ,ノリユキ
+カイダ,ノリマサ
+カマチ,ヒロユキ
+カマダ,マサコ
+カマホリ,トモヒコ
+カマタ,コウイチロウ
+カメダ,マユミ
+カメイ,フミヒコ
+カミノ,タケシ
+カミノ,ヒトシ
+カミトノ,リュウジ
+カミヤ,ノブユキ
+カミヤ,チアキ
+カミヤマ,ケンギ
+カモン,ヒデキ
+カモン,エイタロウ
+カン,トモノリ
+カナイ,ノリコ
+カナイ,スミコ
+カナジ,マサユキ
+カナオカ,タミオ
+カナザワ,カツヒサ
+カンベ,サオリ
+カンダ,ヤスタカ
+カンダ,チエ
+カネキ,エイスケ
+カネキヨ,ヒロト
+カネコ,ヒロユキ
+カネシタ,カズヒロ
+カネヤス,ナオヤ
+カノウ,シンジ
+カノウ,タケシ
+カンズイ,タミユキ
+カサハラ,ナナコ
+カサハラ,ヒデヒサ
+カサイ,エイイチ
+カサマツ,クニトシ
+カサモ,ケンイチロ
+タマタニ,シマ
+カシワギ,ユリミ
+カシワグラ,ヒデユキ
+カタダ,サチコ
+カタオカ,ナオキ
+ホシ,ヒロト
+カタオカ,シュウジ
+カトウ,ヒロキ
+カトウ,ヤスユキ
+カトウ,モリヒロ
+カトウ,シンイチ
+カトウ,リョウタ
+カトウ,ケイコ
+カトウ,テルヒコ
+カトウ,ジュンコ
+カトウ,ミチヤ
+カトノ,キヨシ
+カツムラ,ヒデキ
+カワバタ,イチロウ
+カワゴエ,アキラ
+カワグチ,コウジ
+カワハラ,マスミ
+カシムラ,ユウコ
+カワイ,ナオミ
+カワイ,ヒロユキ
+カワモト,マナブ
+カワムラ,サトル
+カワムラ,シュウジ
+カワナ,ユキヒト
+カワナ,マサカズ
+カワナミ,ヒデヒコ
+カワノ,シンジ
+カワセ,ジュンイチロ
+ハラダ,シュウコウ
+カワシマ,ノブコ
+カザミ,ナオト
+カズサワ,ヤスヒロ
+キバヤシ,ユウイチ
+キダ,タケシ
+キハラ,ヨシヒコ
+キクチ,ヒロシ
+キクチ,イチロウ
+サイトウ,ケンジ
+キクイ,ツヨシ
+キモト,ヨウコ
+キムラ,ノブユキ
+キムラ,ツヨシ
+キムラ,トシツグ
+キムラ,タカヒサ
+キムラ,ハルミ
+キノ,カズマサ
+キリノ,カズヤ
+キサヌキ,マコト
+キシ,マサキ
+キシ,ナオキ
+キシダ,サトシ
+キシカワ,シン
+ヒラテ,シンジ
+キシナミ,ヤスマサ
+キソ,ヨシオ
+キタ,ヒデアキ
+キタガワ,ナオミ
+キタジマ,ヒロユキ
+キタジマ,セイカ
+キタムラ,ノリコ
+キタノ,トシユキ
+キタザキ,タダシ
+キタザワ,タツシ
+キヨハラ,ツトム
+ハシモト,オサム
+ノザキ,フミキヨ
+コバヤシ,フミオ
+コバヤシ,マサユキ
+コバヤシ,ナオキ
+コバヤシ,タカハル
+コバヤシ,ケンジ
+コバヤシ,アツシ
+コバヤシ,エイジ
+コバヤシ,サチコ
+コバヤシ,ショウジ
+コバヤシ,トモヒロ
+コウチ,ユキ
+コダマ,ヤスヒロ
+コガ,アキヒロ
+トウドウ,シュウイチ
+コハラ,ナオスミ
+コヒ,ハルミ
+コンノ,ヒロフミ
+コイケ,トオル
+コイワ,トモユキ
+コイズミ,シュウゴ
+コジカ,ミエコ
+コジマ,ナガオ
+コジマ,リチコ
+コジマ,カズヒコ
+コジマ,サトシ
+コマツバラ,リュウタ
+コミヤ,キヨシ
+コモダ,アキヨシ
+コムロ,トシユキ
+コンド,ナツミ
+コンド,ケンジ
+コンド,ケンイチ
+コサケ,コウイチ
+コセ,タカシ
+コスギ,タケシ
+コズカ,ヤスノリ
+クボ,ハルミ
+クボ,タケヒロ
+クボ,ナオキ
+クボ,シゲオ
+クボ,ヒロシ
+クドウ,マリ
+クドウ,セイイチ
+クドウ,マサキ
+クマカワ,ケンジ
+クマクラ,ケンイチ
+クマシロ,セイイチ
+クマタ,シロウ
+クニモト,ジュンジ
+クラモチ,シュウイチ
+クラシマ,ヒロシ
+クリハラ,カズヒロ
+ヒライ,コウジ
+クリハラ,ヨシユキ
+クリハラ,カツヨ
+クリハラ,ユウジ
+クリハラ,テツオ
+クリハシ,ミツノブ
+クリス,ヨウコ
+クロダ,アツシ
+クロダ,ヒロユキ
+クロキ,タカヒロ
+クロキ,トモコ
+クロキ,エイジ
+クロメ,マコト
+クロサワ,エイジロウ
+クルミヤ,コウキ
+クサヤナギ,マサトシ
+クスノセ,ナオオミ
+クワハラ,シンジ
+マチダ,ヨウコ
+マダラメ,トシタカ
+マエダ,サトシ
+マエダ,サトル
+マエダ,シンイチロウ
+マエガワ,フミヒデ
+マエハラ,ギンジ
+マエキタ,カズコ
+マキノ,タカヒロ
+シブタニ,コウジ
+マナベ,ヨシノリ
+マルヤマ,アキラ
+マルヤマ,ヒロユキ
+マルヤマ,ケイイチ
+マサオカ,タカシ
+マスブチ,ヨシノリ
+マスダ,ユウコ
+マスダ,ヨシハル
+マスダ,タカトシ
+マスダ,タクヤ
+マスダ,ヒロカズ
+マスダ,ヒロキ
+マツバ,ノゾミ
+ハラ,ケンジ
+マツダ,ケンジ
+マツダ,ダイスケ
+マツフジ,アキオ
+マツフジ,カズナリ
+タチクイ,ミキ
+マツイ,シンジ
+マツカワ,タカヒロ
+マツマル,シュウサク
+マツモト,アキオ
+マツモト,カズノリ
+マツモト,アキヒコ
+マツモト,ノリコ
+マツモト,ヒロシ
+マツモト,ツトム
+シオバラ,シンイチ
+マツムラ,シュンイチ
+マツムラ,ヨシノリ
+マツナガ,ユキコ
+マツナガ,マサヒロ
+マツナミ,ヨシコ
+マツオ,トシヤ
+マツオ,トモヒロ
+マツオカ,エイコ
+ハヤシダ,カズヒロ
+マツオカ,セイイチ
+アゼヤナギ,セイジ
+マツオカ,シンゴ
+マツオカ,ヒロアキ
+マツセ,タカユキ
+マツシマ,ケンジ
+マツシタ,コウジ
+マツタニ,シンジ
+マツワカ,サトシ
+マツヤマ,アキラ
+マツザキ,キクオ
+マツナガ,マコト
+ホンナ,キワム
+メカタ,ケンジ
+ミカジリ,キョウコ
+ミカミ,シンスケ
+ミカミ,ヒデオ
+ミキ,マサユキ
+ミミタ,ミチロ
+ミナクチ,フミハル
+ミナミ,サトシ
+ミナミ,トモユキ
+ミナミ,アキラ
+ミナト,ショウジ
+ミネ,ヨシタカ
+ミネ,アツシ
+ミシマ,コウジ
+ミシマ,オサム
+ミソノ,ヒロヒサ
+ミタムラ,マサトシ
+ミタンダ,ケンイチ
+ミツボ,ヨシカズ
+ミツボシ,トシヒロ
+ハスムラ,トシフミ
+ミツハシ,ヒロミツ
+シナダ,ヒロユキ
+ミツマ,カズヒト
+ミヤハラ,ジツヤ
+ミヤハラ,ヒデハル
+ミヤイ,ミエコ
+ミヤジマ,ユカコ
+ミヤモト,カズナリ
+ミヤモト,ヒデノリ
+ミヤシタ,ヒロユキ
+ミヤタ,ヒロユキ
+ミヤタ,カオル
+ミヤウチ,ケンジ
+ミヤウチ,オサム
+ミヤウラ,タケヒサ
+ミヤザキ,タケシ
+ハシグチ,シゲキ
+ミヤザワ,コウジ
+ミヤザワ,アキオ
+ミヤズ,ヤスヒト
+ミゾカミ,ジュンイチ
+ミズノ,テツヒコ
+ミズノ,トシユキ
+ミズタニ,ノブユキ
+モチダ,アキヒロ
+モチズキ,アキオ
+モチズキ,ジロウ
+ミヨシ,タカシ
+モリ,マサキ
+モリ,マサシ
+モリ,ダイイチ
+モリ,マサユキ
+モリ,テツヤ
+モリ,ヒロカズ
+モリ,ツネアキ
+モリ,イズミ
+モリ,ヒロカズ
+モリグチ,ヒロキ
+モリカワ,コウジ
+モリナガ,マサシ
+モリサキ,アケミ
+モリタ,ヨウイチ
+モリタ,エイジ
+モリヤ,ムツオ
+モリヤマ,ヒデオ
+モテギ,ミツヒロ
+モトキ,クニヒロ
+ハギワラ,ノブヨシ
+ムカイダ,シコ
+ムネヒロ,ヒデユキ
+ムネカタ,カズヨシ
+ムラカミ,ツヨシ
+ムラカミ,ヤスヒロ
+ムラカミ,ヤスオ
+ムラコシ,ヒロコ
+ムラマツ,マサト
+ムラヌキ,ケイジ
+ムラタ,ユキモト
+ムラタ,マサキ
+ムラタ,セイジ
+ムラヤマ,ヨシハル
+ヤマシタ,アキヒロ
+ムロタ,ヒロカズ
+ミョウジン,ミチオ
+ナガイ,ノリコ
+ナガヌマ,ユキオ
+ナガオ,エリ
+ナガオカ,ミホ
+ナガサワ,カオル
+ナガシマ,タカシ
+ナガシマ,ヨシカズ
+ナガタ,ヨシヤス
+ナガタ,チエコ
+ハセガワ,ヒロアキ
+イガラシ,カズヒロ
+ナガヤマ,ケンジ
+ナガヨシ,マサカツ
+ナイトウ,マサキ
+ナカバヤシ,マサノリ
+ナカガワ,シンイチ
+ナカゴメ,サトシ
+ナカシマ,トシアキ
+ナカジマ,ヤスマサ
+ナカジマ,ユウコ
+ナカジマ,テルミ
+ナカジマ,クラト
+ナカジマ,ユウジ
+ナカクキ,シンイチロウ
+ナカマル,リカ
+ナカミチ,ミカ
+ナカモト,ユキヒロ
+ナカモト,ヒロカズ
+ナカモト,ヒロユキ
+ワタナベ,ヒロフミ
+ナカムラ,マサナリ
+ナカムラ,シンイチロウ
+ナカムラ,セイジ
+ナカムラ,カズノリ
+ナカムラ,ユウジ
+ナカムラ,テルユキ
+ハギワラ,サトコ
+ナカムラ,マキコ
+ナカムラ,ヒデユキ
+ナカムラ,テツヤ
+ナカムラ,ケンタ
+ナカノ,ヤスシ
+ナカオ,ユウコ
+ナカオ,ヒロユキ
+ナカオカ,トモユキ
+ナカシマ,サトシ
+ニシジマ,タカシ
+ナカヤ,ワタル
+ナカヤマ,ヒロシ
+ナカザト,カツアキ
+ナマタメ,マモル
+ナメラ,モリヒト
+ナナミ,タダトシ
+ナンバ,タカオ
+ナン,ケイスケ
+ナンポ,アキラ
+ナラブ,ヒデキ
+ナリハラ,ヒロミ
+ナリトミ,ナオキ
+ナルシマ,マコト
+ナスカワ,ジュンヤ
+ナトリ,ケンヤ
+ネギシ,エミコ
+ネモト,イズミ
+ニエダ,トオル
+ニイジマ,マコト
+ニイクラ,マサル
+ニイツマ,ケンジ
+ニイザワ,ヨシノリ
+ニシダ,ヒロヒト
+ニシダ,タケシ
+ニシダ,エイジ
+ニシダ,ヒデト
+ヒダカ,ユキマサ
+ニシダ,ヤスオ
+ニシカド,アツシ
+ニシカワ,エイジュ
+ニシカワ,トモアキ
+ニシカワ,マサノブ
+ニシモト,ヒデヤ
+ニシムラ,マサノリ
+ニシナ,キヨシ
+ニシノ,ヒロカズ
+ニシタ,ミキ
+フカミ,カズヨ
+ニシワキ,タケヒコ
+ニシヤマ,カツシ
+ニシヤマ,ヒトシ
+ニシザワ,ヨシヒロ
+ニッタ,ヒロヨシ
+ニワタ,ホズミ
+ニワヤマ,チズ
+ノアミ,クニコ
+ノボリタテ,マナブ
+ノダ,タカユキ
+ノガワ,ヒロヤ
+ノグチ,トモアキ
+ノグチ,タカシ
+ノジリ,ヒロユキ
+ノモト,ユウコ
+ノムラ,ミキコ
+ハヤサカ,カズヒロ
+ノムラ,マサヒロ
+ノト,ソノミ
+ノザキ,トシヤ
+コサカ,ヤスシ
+オバナ,アヤコ
+オチ,マサテル
+オダ,ハルノブ
+オガサワラ,カズテル
+オガタ,ヒロヤス
+クキ,ユタカ
+オカダ,ヒロアキ
+オガワ,ヒロユキ
+オガワ,マサユキ
+オガワ,ヤスノリ
+オギハラ,カズトシ
+オギノ,コウイチ
+オブ,ミカ
+オオハラ,タダヒコ
+ハマモト,ヤスコ
+オオハラ,ユウジ
+オハシ,サトシ
+オオカワ,マサト
+オオクボ,マサアキ
+オオミヤ,セイジ
+オオモリ,テツヤ
+オムラ,リョウイチ
+オオニシ,マサタカ
+オオノ,ヒロヤス
+オオヌキ,カズオ
+オオサキ,サトシ
+オオサキ,ユウコ
+オオサワ,シロウ
+オシマ,タケシ
+オシマ,タカオ
+オシマ,ツトム
+オオタ,ヤスオ
+オオタ,ノブヒロ
+オオタ,ミカ
+オオタ,ヒロシ
+アンドウ,ケンイチ
+オタカ,タカアキ
+オオタキ,フトシ
+オオタニ,カズヒコ
+オオタニ,ノリヒサ
+オオタニ,マサカズ
+ハヤシ,ユキコ
+オオツボ,タケヒサ
+オオツカ,ヨシノリ
+オオツカ,エイキ
+オオツカ,アツシ
+ハヤシ,エミコ
+オオツル,ミチエ
+オフチ,トシコ
+オオワ,タケシ
+オオヤ,ムネオ
+オジオ,フミノブ
+オカ,マサトシ
+オカベ,アユム
+オカダ,マサキ
+オカダ,タカヤ
+オカダ,トオル
+オカダ,ヒロユキ
+オカモト,タカユキ
+オカモト,ユウ
+オカモト,トモユキ
+オカムラ,ヒロクニ
+オカムラ,ケイイチ
+オカザキ,ヒロトシ
+オカザキ,コウタロウ
+オキノ,カオル
+オクダ,ハジメ
+オクダ,マサノリ
+オクガワ,ジュンイチ
+ハギハラ,ケンジ
+オクウチ,ムネシ
+オオミ,アヤコ
+オムラ,ヒトシ
+オンダ,カズヒロ
+オオノ,ユタカ
+オオノ,ヒョウゾウ
+オオノ,ミノル
+オオノ,シュンスケ
+オノデラ,マサヒコ
+オノデラ,ヨシノリ
+オノデラ,トシオ
+オノムラ,ミノル
+オノザワ,シンヤ
+オオヌキ,テツロウ
+オノ,タカアキ
+オオヤマ,ヒトシ
+オリド,ヒデアキ
+オリシキダ,コウイチ
+オオサカ,タダオ
+オヤマ,タイチ
+オザキ,タツヤ
+オザキ,ヨシマサ
+オザワ,ユウスケ
+コザワ,ヒロシ
+オザワ,マサハル
+オザワ,タケシ
+ハタナカ,ミツヒロ
+サエキ,リョウコ
+サイダ,モモコ
+サイグサ,ヒロシ
+ハンダ,タケシ
+サイトウ,ヤストモ
+サイトウ,マサヒサ
+サイトウ,シゲヒト
+サカチ,マサオ
+サカグチ,コウジ
+サカイ,ミノル
+サカイ,コウゾウ
+ヒラノ,アキヒロ
+サカイ,アキラ
+サカイ,ヒロミ
+サカイ,ミキオ
+サカイ,ナオキ
+サカモト,タカシ
+サカモト,ヤスヒロ
+ヒロセ,ヨシアキ
+サカモト,ヨウキチ
+サカタ,トモジ
+キシダ,ヒロアキ
+サコ,アカシ
+サクマ,マサル
+サクラバ,エミ
+サクライ,ハルミ
+サクラヤマ,ヒロシ
+サメシマ,カズヨシ
+サンベ,マコト
+サルワタリ,マサキ
+ハセガワ,マサト
+ササエ,ナオキ
+ササハラ,リョウジ
+ササキ,タカマサ
+ササキ,タカシ
+ササキ,ユタカ
+ササキ,ユキコ
+ハビロ,ユタカ
+ササオ,カズシゲ
+ササオカ,トモコ
+ササタニ,ヨシミ
+サタ,トモミ
+サタケ,トシキ
+サトウ,ジュン
+ホシノ,ケイジ
+サトウ,マサハル
+ハットリ,シンヤ
+サトウ,トオル
+サトウ,シゲキ
+サトウ,ユキタカ
+サトウ,リョウイチ
+サトウ,タツキ
+サトウ,ケイジ
+サトウ,マリオ
+サトウ,トシアキ
+サトウ,ケイイチ
+ヒラノ,ヒロアキ
+サトウ,ヒロユキ
+サトウ,ヤスノリ
+サワダ,ケイイチ
+サワダ,コウヘイ
+サワフジ,タカヒロ
+サワキ,コウヘイ
+サワムラ,ヒロシ
+セガワ,シンタロウ
+セガワ,カズキ
+セキ,リツコ
+セキ,タイチ
+セキグチ,ヒサシ
+セキネ,カズアキ
+セキネ,カツミ
+ヒラノ,エイイチ
+センゴク,ヤスシ
+セオ,ヒロシ
+セラ,タダシ
+セラ,ヒロカツ
+シバハラ,カズノ
+シバタ,カズヒコ
+シバタ,トモヒロ
+ハセガワ,トモミツ
+シバタ,ユタカ
+シバタ,マサタケ
+シバタ,マサユキ
+シバザキ,マサコ
+シブタニ,トモハル
+シブヤ,トモカツ
+シチヒョウ,キミアキ
+シキ,マサル
+シキシマ,タケシ
+シマ,アキコ
+シマ,コスケ
+シマダ,カツヒロ
+シマヌキ,タカシ
+シマオカ,ヤスタカ
+シマシタ,ナオヒロ
+シマズ,ケイイチ
+シミズ,ヒデキ
+シミズ,ケイスケ
+ハセガワ,チエコ
+シミズ,マサオ
+シミズ,ユリコ
+シミズ,カズヒサ
+シモガイ,トシコ
+シモカワベ,アキヒロ
+シモオカ,アキヒロ
+シモサカ,ヒデユキ
+シモヤマ,テツヤ
+シンボリ,ヒロエ
+シノハラ,ナオタカ
+シノハラ,ヒサトシ
+シノザキ,ヒロシ
+シノザキ,ヨシコ
+シノズカ,ケンイチ
+シンヤ,ヒデコ
+シオタ,ジュンキチ
+シオタニ,ケンジ
+シオヤ,トオル
+シラハマ,ミチヒサ
+シライ,ミカ
+シライシ,ミサ
+シライシ,ヤスヒト
+シライシ,ツトム
+シラキ,ケイスケ
+シラサキ,カズユキ
+ショウナゴ,タカシゲ
+オオヤマ,ミカ
+シュトウ,ヒロキ
+シモイズ,ヨリト
+ソエダ,タクミ
+ホリノ,ヒロカツ
+ソトジマ,フトシ
+スダ,メイジロウ
+スダ,コウコ
+スドウ,ヒデヒト
+スガ,ハジメ
+スガヌマ,ヒロカズ
+スガワラ,ケイ
+スギバヤシ,マサトシ
+スギモト,ミカ
+スギモト,ノブコ
+スギムラ,ノリヒコ
+スギノ,サトル
+スギサキ,シンイチ
+スギサワ,タカオ
+スギタ,タカユキ
+ハヤシ,タミ
+スギウラ,トオル
+スギヤマ,トシヤ
+スギヤマ,シンジ
+スゴ,ヤスオ
+スイタ,ヨシヒサ
+スミダ,アツシ
+スミカワ,サトシ
+スナガ,トオル
+スノハラ,マサミ
+スズキ,アキラ
+スズキ,トモユキ
+スズキ,ヨシユキ
+スズキ,マサフミ
+スズキ,ショウゴ
+スズキ,タケヒロ
+スズキ,ヨシノリ
+スズキ,カズフ
+スズキ,アキコ
+スズキ,カツヒコ
+スズキ,シゲル
+ヤマカワ,タツオ
+スズキ,アサコ
+スズキ,アキヒコ
+ハガ,ヒロカズ
+スズキ,イサト
+スズキ,カオリ
+スズノ,カツフミ
+シュトウ,クニヒデ
+タバラ,マコ
+タダ,マサル
+ハリガイ,タカノブ
+タダ,マサユキ
+タガシラ,ミナコ
+タグチ,ミユキ
+タグチ,ノブアキ
+タジマ,シンジ
+タジマ,シンジ
+ホッタ,シュンイチ
+タカダ,トモノリ
+タカギ,トシカズ
+タカギ,ヨウイチ
+タカギ,ユウコ
+タカハシ,エイコ
+ハシグチ,ヒロアキ
+タカハシ,ヒロシ
+タカハシ,ナオミ
+タカハシ,ヒロミチ
+タカハシ,カツトシ
+タカハシ,カズコ
+タカハシ,カズオ
+タカハシ,トモヒロ
+ハセガワ,テルオ
+タカハシ,ケンタロウ
+タカハシ,ヒデノリ
+タカハシ,カツミ
+タカハシ,シンイチ
+タカハシ,ヨシミツ
+タカハシ,カズヒロ
+タカハシ,イチタロウ
+タカハシ,アツノリ
+タカハシ,ケンイチ
+タカハシ,フサヒコ
+オオミ,ケンジ
+タカヒラ,ミノル
+タカイ,ヨシトモ
+タカミヤ,コウジ
+タカナシ,リホ
+タカノ,ミキコ
+タカノ,ヨシヒロ
+タカノ,タマヨ
+タカノ,ヨシヒト
+タカノ,アキヒロ
+ハヤカワ,モトヒロ
+タカシマ,タダシ
+タカス,カツノリ
+タカトウリ,ヒデヒコ
+タカトリ,フサミ
+タカヤ,ノリアキ
+タケ,アキヒロ
+タケダ,セイジ
+タケダ,イズミ
+ホリ,コウゾウ
+タケダ,シンイチ
+タケハラ,ヒカル
+タケイ,シンイチ
+タケモト,アキ
+タケモト,アキスケ
+タケナカ,ケンイチ
+ハヤシ,マサヒコ
+タカギ,マサキ
+タケトミ,マサノリ
+タケウチ,ミホ
+タケウチ,ミツオ
+タケウチ,ノブヨシ
+タケヤス,レイジ
+タケザワ,リョウジ
+タキバ,サトシ
+タクボ,タカノリ
+ハニュウ,ツヨシ
+タマヨリ,ユウコ
+タモツ,ユウタ
+タムラ,ヒロユキ
+タムラ,アケミ
+タムラ,アキラ
+タナベ,ヤスノリ
+タナベ,ヒデヒコ
+タナカ,ヒロユキ
+タナカ,ヨシユキ
+タナカ,コウイチ
+タナカ,アツシ
+タケダ,ヨシコ
+タナカ,タダシ
+ハセガワ,マサル
+タナカ,ヒデユキ
+タナカ,タカヨシ
+タナカ,マナブ
+タナカ,カツキ
+タナカ,マコト
+タナカ,ユウコ
+タナカ,コウイチ
+タナカ,ヨシオ
+タナカ,トオル
+タニ,ヒロコ
+ミタニ,ヘイゴ
+タニグチ,ヒデアキ
+ハットリ,ヒロコ
+タニグチ,ケンイチ
+タニグチ,ユウコ
+タニグチ,カツヒコ
+タニカワ,ケンシ
+タサカ,マコト
+タシマ,ケイスケ
+タテカワ,マサル
+タテノ,コウジ
+テラジマ,ハジメ
+テラマエ,セイイチロウ
+テラサワ,マコト
+テラヤマ,ミヨコ
+テシマ,エツマサ
+トダ,モトユキ
+トトミ,タケヒコ
+トオヤマ,ユキヒコ
+トキワ,チエコ
+フクヤマ,ケンジ
+トクザワ,マサル
+トミナガ,コウジ
+トミタ,ヒデシ
+トミヤマ,カズノリ
+サワムラ,タツミ
+トリゴエ,サダユキ
+トリタニ,ヒデノリ
+トサカ,シュウジ
+ツボイ,マサヒコ
+ヒラバヤシ,トモナリ
+ツチダ,ヒロユキ
+ツチタニ,ヒデキ
+ツチヤ,シゲト
+ツダ,ヒロシ
+ツダ,アツヨシ
+ツジ,ヒロシ
+ツジイ,カズオ
+ツジムラ,ナルト
+ツジムラ,タカシ
+ツジノ,シュウイチ
+ツジサワ,ユミ
+ツカダ,タイゾウ
+ツカハラ,テツオ
+ツカモト,ヤスキ
+ツカモト,ヨシミ
+ツカモト,ケンタロウ
+ツネダ,マサヒロ
+ツノダ,タケシ
+ツノダ,ケンイチロ
+ツルマル,タカシ
+ツサカ,ケン
+ツツイ,タカシゲ
+ツツミ,マサノリ
+ツツミ,マサハル
+ツツミハラ,タカオ
+ウチダ,マコト
+ウチダ,サダユキ
+ハヤシ,タカユキ
+ウチダ,タツヤ
+ウチノ,サトシ
+ウチヤマ,アヤノ
+ウダガワ,シンイチ
+ウエダ,ヒロユキ
+ウエダ,ケンジ
+ウエダ,タケシ
+ネズ,トシアキ
+ウエムラ,サトシ
+ウエムラ,ショウタ
+ウエムラ,ケンイチ
+ウエノ,シンヤ
+ウエノ,トモフミ
+ウエサワ,トシヒロ
+ウエツボ,ヨシタカ
+ウエツキ,ヨシテル
+ウケノ,ユウスケ
+ウマハシ,ヒデフミ
+ウメダ,ヤスタカ
+ウメムラ,カオル
+ウミダ,コウキチ
+ウオズミ,サンペイ
+ウラタ,センタ
+ウシクサ,トシユキ
+ウスナミ,ジュン
+ワダ,ジュンイチ
+ワダ,カオリ
+ワダ,ミキ
+ワダ,ミツノリ
+ワカセ,サトヨシ
+ワキ,タダシ
+ワタナベ,タケシ
+ワタナベ,トモアキ
+ワタナベ,ヨシヒサ
+ワタナベ,テイジ
+ワタナベ,ヨシキ
+ワタナベ,ヨシユキ
+ワタナベ,カズト
+ワタヌキ,ヨシヒサ
+ワタヌキ,ヒデオ
+ワタリ,ヒロミツ
+ハシグチ,ジュンヤ
+ヤブ,コウジ
+ヤギヌマ,ミツアキ
+ヤジマ,ナオキ
+ヤマダ,シゲフミ
+ヤマダ,ヨシタカ
+ヤマダ,ユウスケ
+ヤマダ,ユウコ
+ヤマダ,アキアツ
+ヤマダ,アキラ
+ヤマダ,チエ
+ヤマダ,ヒロコ
+ヤマダ,カズミ
+ヤマダ,マサヨシ
+ヒサノ,リカ
+ヤマダ,サトシ
+ヤマダ,サヤカ
+ヤマフジ,タツヤ
+ヤマギワ,ヤスヒコ
+ヤマグチ,ヤスヒロ
+ヤマグチ,ヨシヒロ
+ヤマグチ,ノリユキ
+ヤマグチ,ユイ
+ヤマグチ,イサオ
+ヤマグチ,テツヤ
+ヤマグチ,タケハル
+ヤマグチ,アキラ
+ヤマグチ,タカヒロ
+ヤマカワ,ユキコ
+ヤマモト,ヒロシ
+ヤマモト,カナコ
+ミズタニ,キミオ
+ヤマモト,ミドリ
+ヤマモト,ミツヒロ
+ヤマモト,ヨノスケ
+ヤマモト,ナオト
+ヤマモト,タカシ
+ヤマモト,カツジ
+ヤマモト,カズ
+ヤマモト,カズアキ
+ヤマモト,ヒナコ
+ヤマモト,シンイチ
+ヤマネ,マコト
+ヤマネ,ヤスヒサ
+ヤマシタ,トシオ
+ヤマシタ,カズヒサ
+ハンダ,イサオ
+ヤマウチ,ヨシヤ
+ヤマウチ,シンイチロウ
+ヤマウラ,タカシ
+ヤマザキ,ヒロト
+ヤマザキ,カズヨシ
+ヤマザキ,ケンイチ
+タムラ,マサトシ
+ヤマザキ,サトシ
+ヤマザキ,タカオ
+ヤマゾエ,タカシ
+ヤナギサワ,ユミコ
+ヤノ,タケシ
+ヤスダ,ヒデキ
+ヤスハラ,ケイコ
+コシモト,モト
+ハギワラ,ミキオ
+ヨコタ,テルヒサ
+ヨコヤマ,タケシ
+ヨモダ,アキラ
+ヨナガ,サトシ
+ヨネダ,ヒロタケ
+ヨネヤマ,サチヨ
+ヨネザワ,エリ
+ヨネザワ,トモヒサ
+ヨシダ,マユミ
+ヨシダ,テルヤス
+ヨシダ,カツヒロ
+ヨシダ,マサト
+ヨシダ,アキヒサ
+ヨシダ,サチコ
+ヨシダ,ケンゴ
+ヨシダ,キヨヒト
+ヨシグチ,ノブコ
+ヨシイ,ユキオ
+ヨシイケ,キヨユキ
+ヨシマツ,ケンタロウ
+ヨシノ,ヒサヨシ
+ヨシノ,シゲオ
+ヨシザワ,オサム
+ヨツタニ,ミツヒロ
+ユキザネ,セイジ
+ユヤマ,ヨシヒサ
+ズシ,ユキオ
+アライ,マサト
+フジキ,ユウイチ
+ヒラノ,シゲル
+カメヤマ,ヒデノブ
+コジマ,カズオ
+ナカオ,メグミ
+イワカワ,ソウタロウ
+ツチヤ,タツヤ
+イジロ,コウジ
+クドウ,トモコ
+ナガシマ,カズヒト
+ハシグチ,カツユキ
+ツチヤ,ケイコ
+イシマツ,ヒロヤス
+ハラダ,ヒロタカ
+ミズノ,フミオ
+ホシノ,ハルオ
+アベ,シゲノリ
+アベ,タカコ
+アベ,ユタカ
+アベ,エイイチ
+アブカワ,ミサ
+アダチ,ケンタロウ
+アイザワ,キリコ
+アジロ,マサユキ
+アカイ,トシアキ
+タモト,ミキオ
+アカイシ,エイチ
+アカシ,マユミ
+アキイケ,ヤスヒロ
+アキタ,ノリチカ
+アキヤマ,ムツミ
+アマガイ,ヒデフミ
+アマガタ,タカシ
+アマノ,ミホ
+アメミヤ,カツミ
+アンドウ,カズヒロ
+アンドウ,タカユキ
+アンドウ,ダイゴ
+アンドウ,シンゴ
+アンザイ,マサヒデ
+アオキ,マサトシ
+アオキ,アキフミ
+アオヤギ,アツト
+アオヤマ,ユウコ
+アライ,マサシ
+アライ,トモナリ
+アラキ,トシミツ
+アラヤ,ヒロアキ
+アリマ,シンイチ
+アリタケ,セイジ
+アサダ,タケオ
+アサヒ,ユウジ
+アサノ,ジュンコ
+アシダ,サトシ
+アシカワ,サトシ
+ババ,ヤスユキ
+ババ,タカハル
+ババ,ケンジ
+チバ,ジュンコ
+ゴトウ,マサヒコ
+チョウ,エイジ
+ダイド,ユウコ
+ドアイ,コウジ
+ドイ,トモヒロ
+ホソイ,タクジ
+ドイ,イサオ
+ドイ,ケンイチ
+エガシラ,ヒデタカ
+エグチ,ヤスヒロ
+エバラ,ツトム
+エンド,シンイチ
+エンド,サトシ
+アマリ,ケンジ
+エノモト,キヨミ
+エノモト,マサミ
+エノモト,アキラ
+エノモト,チカラ
+エザキ,カズヒト
+フジハラ,マサハル
+フジイ,タカシ
+フジイ,サツキ
+ヒルカワ,ケン
+フジイ,マサヒコ
+フジサワ,ハルミ
+フジサワ,ヒロユキ
+ヒゴ,カツユキ
+フジタ,ツヨシ
+フジタ,タカシ
+フジワラ,トオル
+フカミ,ヤスユキ
+フカザワ,タケシ
+ハセガワ,ヨウスケ
+フクダ,ジュンコ
+フクモト,ミツオ
+フクムロ,タカシ
+フクロ,ヤスコ
+フクシ,ヒロミ
+フクシマ,タカミ
+フクシマ,シンイチ
+ハギワラ,トシオ
+フクシマ,アキラ
+フナキ,ナオキ
+フナクボ,フミオ
+ハラダ,ミノル
+フルハタ,モトフミ
+フルカワ,マチコ
+フルモト,タカシ
+フルヤ,トモヤ
+フシミ,ヒロミ
+ゴウダ,ミキオ
+イリエ,シンジ
+イシハラ,アキラ
+イチカワ,マサユキ
+イバ,マミ
+イワサキ,サエコ
+イノウエ,アヤコ
+イイモリ,マサヒロ
+イハラ,セイジ
+イワムラ,ショウタ
+イナガキ,ユキオ
+イシジマ,カズヒロ
+イトウ,シロウ
+ゴンドウ,シュウジ
+ゴトウ,スミレ
+イシカワ,マサヒコ
+イトウ,マサノブ
+イセキ,リコ
+ゴトウ,ヒロユキ
+ハダ,ヒデアキ
+ハギワラ,ミワコ
+ハギワラ,トモコ
+ハイジマ,アイコ
+ハマダ,ヒロシ
+ハマノ,ヒロツグ
+ハマオカ,コスケ
+ハナド,ミノル
+ハナタ,テツヤ
+ハラ,トモヒコ
+ハラ,ユウジ
+ハラ,タケシ
+ハラ,キョウコ
+ハラダ,シン
+ハラダ,タケシ
+ハラダ,アキヒト
+スズキ,タケロ
+ハラガ,タツヤ
+ハラミ,ケンタロウ
+ハラヤマ,ノブヒコ
+ハラゾノ,ノブヒロ
+ハセベ,タクジ
+カネコ,トモアキ
+ツチダ,ヨウイチ
+ハシモト,リエ
+ハシモト,フミヒロ
+ハシモト,カナエ
+ハシモト,サトシ
+ハシモト,タカアキ
+ハシモト,ヒデキ
+ハシモト,ヒデキ
+ハシモト,ヨシヒコ
+ハタ,ケイコ
+ハットリ,ヒデアキ
+ハットリ,マコト
+ハットリ,セイジ
+ハヤカワ,キヨシ
+ハヤカワ,ヒデハル
+ハヤサカ,ヨシカズ
+ハヤサキ,セイゴ
+ハヤシ,トシヒコ
+ハヤシ,タカヨシ
+ハヤシ,タカナリ
+ハヤシ,ヤスキ
+ハヤシ,アキラ
+ハヤシダ,ケンゾウ
+ヒビ,カズノブ
+ヒガシ,ヤスヒロ
+ヒガシ,カズオ
+ヒグチ,コウイチロウ
+ヒジカタ,ケンジ
+ヒジヤ,ヨシオ
+ヒナガ,タケシ
+ヒラカワ,ヒデアキ
+ヒラノ,ヒロコ
+ヒラノ,イタル
+ヒラノ,タダオ
+ヒラオ,タカヒト
+ヒラシマ,ナオキ
+ヒラヤマ,トシロウ
+ヒラヤス,ヒトシ
+ヒリキ,ケンイチロ
+ヒロマサ,ワタル
+ヒロモト,シンジ
+ヒロオカ,マナブ
+ヒロセ,ユミコ
+ヒロセ,マツタロウ
+ウメダ,リョウイチ
+ホンダ,サナエ
+ホンド,タケシ
+ホリモト,ヤスユキ
+ホリノ,カズシゲ
+ホリウチ,タカネ
+ホサカ,アキコ
+ホシノ,マコト
+ホシヤマ,ミギフミ
+ホソカワ,テツヤ
+ホソカワ,ヨシヒロ
+ホソカワ,シゲオ
+ホソヤ,ヒロシ
+イバラキ,ノブオ
+イチハラ,ヒサミツ
+イチハラ,タカシ
+イチハラ,ノブコ
+イチカワ,ケンイチ
+イチノセ,サトシ
+イダ,タケシ
+イデグチ,カズヒト
+イド,マサシ
+イガラシ,カツノブ
+イガラシ,ユキヒコ
+イガラシ,ヒロシ
+イイダ,ヒロオ
+イイダ,カツトシ
+イイジマ,コウジ
+イケダ,リョウ
+イケダ,トモミ
+イケダ,トモミ
+イケダ,ヨウコ
+イマイ,コウキ
+イマイズミ,ケイコ
+イマイズミ,ミワ
+イマムラ,オサム
+イマムラ,ミノル
+イモン,カズユキ
+イナダ,マスミ
+イナガキ,カズヤ
+イナガキ,ミツヤ
+イナムラ,タカシ
+イナムラ,トモノリ
+イノ,セイイチロウ
+イノカワ,アスコ
+イノマタ,カズヒト
+イノウエ,ヒロカズ
+イノウエ,サトシ
+イノウエ,シホ
+イノウエ,ヤスヒロ
+イノウエ,ユウジ
+イノウエ,ユウタ
+イノウエ,コウイチロウ
+イヌイ,シンイチロウ
+イヌシマ,マユミ
+イリエ,マサノリ
+イサカ,シゲル
+イシバ,チヒロ
+イシバシ,ダイスケ
+イシバシ,ヒデキ
+イシダ,ヒロミツ
+イシダ,ヒロシ
+イシダ,カツヒロ
+イシダ,ケイイチ
+イシガミ,コウイチ
+イシグロ,コウジ
+イシハラ,マリコ
+イシイ,マサヒロ
+イシイ,ナオミ
+イシイ,ノボル
+イシイ,セツコ
+イシイ,タダシ
+イシイ,タカハル
+イシカワ,トシオ
+イシマル,ツヨシ
+カワズ,ヨウイチ
+イシズカ,ユキオ
+イタヤ,ノリヒサ
+イイダ,アキヒロ
+イトウ,ヒロミチ
+イトウ,ヒロシ
+イトウ,イクオ
+イトウ,カズヤ
+イトウ,ショウコ
+イトウ,カズヒロ
+イトウ,ジュン
+イトウ,マコト
+イトウ,オサム
+イトウ,ヨシマサ
+イトウ,マサユキ
+イトウ,マサミ
+イトウ,ヒロアキ
+イトウ,タマキ
+イトウ,キヨタカ
+イトウ,マサフミ
+イトウ,ヒロカズ
+イトウ,ユキオ
+イトウ,エイジ
+イトウ,ミホコ
+イワイ,タカユキ
+イワイ,カズシゲ
+イワミ,キヨシ
+イワムラ,ヨシタカ
+イワナガ,ナオコ
+イワオ,カズアキ
+イワサキ,リュウコ
+イワタ,キヨコ
+イワタ,ミツヒロ
+イワタ,シンジ
+イズミ,ノゾム
+ジンバ,ツネノリ
+ノウチ,リエ
+ラク,ヨシノリ
+カガミ,ヒロシ
+カガワ,ケイタ
+カゲヤマ,タマキ
+カイ,ジュン
+カジモト,タクヤ
+カジワラ,セイジ
+クリハラ,エイジ
+カキムラ,ジュン
+カキノキ,タカアキ
+カキウチ,ヒロユキ
+カキザキ,コウジ
+カコ,トシヒコ
+カメシマ,ダイスケ
+カミエス,エイイチ
+カミクラ,ヒロシ
+カミムラ,コウイチロウ
+カミタキ,マサジ
+カミヨシカワ,マサユキ
+カン,タクヤ
+カナイ,トシカズ
+カンバヤシ,イチロウ
+カンダ,ヨシヒト
+カネコ,タカユキ
+カネコ,ヤスユキ
+カネタ,タカシ
+カノウ,マユミ
+カリノ,ヒロシ
+カサミ,カナエ
+カサナミ,タカト
+カセ,マモル
+カスガ,ヒロシ
+カスヤ,マサナリ
+カタオカ,ノリコ
+カトウ,ナオコ
+カトウ,ヒロシ
+カトウ,マサユキ
+カトウ,ノリアキ
+カトウ,タダアキ
+カトウ,ケンジ
+カトウ,ケンジ
+カトウ,タカユキ
+カトウ,アキヒト
+カトウ,ジロウ
+カツマタ,クミ
+カツラ,マサキ
+カワベ,ヨシユキ
+カワダ,タケシ
+カワグチ,ヒデキ
+サイトウ,ヒデタカ
+カワグチ,イクコ
+カワハタ,カオリ
+カワカミ,カズヨシ
+カワカミ,ケンイチ
+ヤジマ,ミツヨ
+カワモト,ツヨシ
+カワムラ,ヒデアキ
+カワムラ,ヒロシ
+カワムラ,ジュンイチ
+カワムラ,マリ
+カワノ,マサヒコ
+カワノ,マサカツ
+カワサキ,シゲユキ
+カワセ,ケンジ
+カワシマ,トシヤ
+カワシマ,ヨシハル
+カワシマ,ヒデキ
+カワシマ,ヤスノブ
+キダ,ミノル
+キクチ,カズヤ
+キクチ,タカヒデ
+ヤマモト,ヤスヒロ
+アキヨシ,ヤスヒロ
+キクチ,マモル
+キクチ,タツヤ
+キクチ,ミツル
+キクチ,アキコ
+キムラ,フミヒコ
+キムラ,マサヒコ
+キムラ,アキヒコ
+キムラ,アツシ
+キムラ,ヒロシ
+キムラ,マサキ
+キムラ,ミノル
+カトウ,ショウジ
+キナセ,ユウジ
+キネ,マサコ
+キノ,アキ
+キノ,カズヒロ
+キノシタ,ケイタ
+キラ,ヨウコ
+キシモト,トオル
+キタバタケ,アキオ
+キタバタケ,タカヒコ
+キタガワ,オサム
+キタガワ,チカコ
+キタムラ,ヒロアキ
+タカハシ,メグミ
+キタヤマ,エイジ
+キヨナリ,ヒロシ
+コバヤシ,キヨシ
+コバヤシ,トシヒロ
+コバヤシ,アキコ
+コバヤシ,タカシ
+コバヤシ,ヒロシ
+コバヤシ,ヒロアキ
+コバヤシ,ナオキ
+イトウ,シンジ
+コンノ,ヨウイチ
+コンノ,タカミツ
+コンノ,ヒロシ
+コンノ,カズアキ
+コイケ,トモフミ
+コジマ,ワタル
+コクショウ,マサル
+コマキ,カズヤ
+マカベ,サブロウ
+コマツ,タケシ
+コマツ,ヒロエ
+コンド,シン
+コンド,タクミ
+コンド,マサユキ
+コシバ,ミキ
+ヨコエ,ヤスノリ
+コテガワ,マサノリ
+コンノ,カズアキ
+コヤマ,レイコ
+コヤマ,モトクニ
+コヤマ,ヒロタカ
+コザス,トシノリ
+クチイシ,カズトシ
+クギミヤ,リュウスケ
+クジライ,アツシ
+クマノミド,ヒロシ
+クマザキ,トモキ
+クレマツ,タカヒデ
+クリキ,マサユキ
+クリヤマ,トシロウ
+クリヤマ,ヒロシ
+クロベ,ナオト
+クロサワ,トモアキ
+クロサワ,ヤスユキ
+クリュウ,ヨシエ
+クサノ,カツユキ
+クワハラ,ジュン
+クズノ,ヨシタカ
+キュウダ,タクヤ
+マブチ,ケンイチ
+マチタ,マサキ
+マエダ,ヨウイチ
+マエイエ,アキフミ
+マエカワ,チアキ
+ママダ,ヒロシ
+マナベ,ヒロタカ
+マナベ,カズオ
+マルイチ,マサユキ
+マルタニ,タカヒデ
+マルヤマ,タカコ
+マサオカ,タカユキ
+マスダ,タツミ
+マスダ,ツヨシ
+マスダ,ヨシブミ
+マスダ,ユキコ
+マスダ,ヒロカズ
+マツバラ,コウゾウ
+マツダ,カツヤ
+マツダ,ヒロユキ
+マツダイラ,トシフミ
+マツエダ,アユミ
+マツイ,ヒデシ
+マツイ,ヒロキ
+マツモト,ノブオ
+マツモト,セイイチ
+マツモト,カズヒロ
+マツモト,キヨカズ
+マツモト,キョウコ
+マツモト,ヨシキ
+マツモト,ナリアキ
+マツモト,アキノリ
+マツモト,ケン
+マツモト,トシカズ
+マツモト,ケン
+マツモト,ダイ
+ナカムラ,ヒロユキ
+マツムラ,クミ
+マツナガ,ケンジロウ
+マツノ,カズト
+マツオ,リュウイチ
+マツオ,タカオ
+マツオカ,タケシ
+マツオカ,カズノリ
+マツオカ,タダアキ
+マツオカ,ヒロシ
+マツオカ,アツシ
+マツシマ,キミオ
+マツタニ,アヤ
+マツヤマ,コウタロウ
+ミチモト,マユミ
+ミエキ,タクロウ
+ミカミ,カズミ
+ミカミ,ヨシタカ
+ミナガワ,ツヨシ
+ミナカワ,ショウコ
+ミシマ,カズミ
+ミシマ,シノブ
+ミシマ,ヒロアキ
+ミタチ,コウジ
+ミツダ,ナオキ
+ミツハシ,ジュン
+ミツイ,ヒロシ
+ミツモト,キヨミ
+ミウラ,キョウジ
+ミウラ,マサヒロ
+ミヤベ,アキラ
+ミヤチ,マサユキ
+ミヤジマ,アキノリ
+バン,マナブ
+ミヤモト,トシアキ
+ヨコエ,コウゾウ
+ミヤサカ,ケイイチ
+ミヤタ,ヒロユキ
+ミヤタ,カズオ
+ミヤウチ,マサヒロ
+ウチヤマ,ミキコ
+サカイ,リョウスケ
+ミヤザワ,トシアキ
+ミゾブチ,エイコ
+ミゾグチ,アキラ
+ミゾグチ,イズミ
+ミズモト,アツヒコ
+ミズノ,マサヨシ
+ミズノ,マサユキ
+ミズノ,ユウジ
+ミズシマ,ユキオ
+ミズタ,ユタカ
+ミズタニ,ヒサト
+モギ,カズノリ
+モギ,モユル
+モギ,ヒロシ
+モモセ,ダイスケ
+モンマ,ユウジ
+モリ,レイコ
+モリ,ケイスケ
+モリ,ケンイチ
+モリ,マサヒロ
+モリ,リカ
+モリ,ツトム
+モリモト,ユキヒロ
+モリノ,ヨウスケ
+ヨシダ,ナオフミ
+モリタ,ヒデノブ
+モリタ,カズヒサ
+モリタ,カツミ
+モリタ,ヨシヤ
+モリタ,シゲオ
+モリワキ,タクオ
+モロ,ヨシロウ
+モタイ,ヒロシ
+モトバヤシ,サトル
+モトハシ,シゲマサ
+モトヤマ,マサノリ
+モトザワ,ユウジ
+ムカワ,イツコ
+ムナカタ,フミコ
+ムラカミ,ヒロアキ
+ムラカミ,ヨシキ
+ムラカミ,ヒロユキ
+ムラカミ,ヤスコ
+ムラカミ,アキヒサ
+ムラカワ,マサコ
+ムラナカ,マユコ
+ムラタ,トモノリ
+ムラタ,ヒロキ
+ムラヤマ,ケンジ
+ムラヤマ,ヒロシ
+ムロハシ,コウジ
+ムトウ,カオル
+ムトウ,アキコ
+ナバ,ヒロユキ
+ナガイ,マサル
+ナガイ,ナオアキ
+ナガノ,カツヤ
+ナガノ,タマミ
+ナガオ,ヤスヒロ
+ヤマモト,カズヒロ
+ナガオケ,サトシ
+ナガオサ,アキヒロ
+ナガシマ,カツヤ
+ナガシマ,クミ
+ナガタ,ミキ
+オオバ,サトシ
+ナガタ,シンジ
+ナガタ,ショウヘイ
+ナガタニ,ツヨシ
+ナイトウ,ヤスノリ
+ナカチ,ヨシハル
+ナカダ,ヨシユキ
+ナカダイ,ユウイチ
+ナカガワ,ナオユキ
+ナカガワ,ヨシユキ
+ナカガワ,アツシ
+ナカガワ,ヒロユキ
+ナカハラ,ジュン
+ナカイ,ケイイチ
+ナカイ,シノ
+ナカジマ,タカシ
+ナカジマ,コウジ
+ナカムラ,シュウゴ
+ナカムラ,マサユキ
+キミヒラ,ミカ
+イトウ,タカヒサ
+ナカムラ,コウジ
+ナカムラ,タツヤ
+ナカムラ,カズユキ
+ナカムラ,ハジメ
+ナカムラ,マサアキ
+ナカムラ,ヒロキ
+ナカムラ,ミキ
+ナカムラ,トモオ
+ナカニシ,イズル
+ナカニシ,タカヒロ
+ナカノ,ユウコ
+ナカノ,ヤスアキ
+ナカノ,テツヤ
+ナカノ,カズノリ
+ナカノ,アツシ
+ナカオ,アキコ
+ナカサク,ショウタツ
+ナカセ,ヒロタカ
+ナカタ,クルミ
+ナカタ,ヒロミ
+ナカタ,ヤスヒロ
+ナカタケ,タクオ
+ナカヤマ,フミオ
+ナミキ,ケイシ
+ナナサワ,ナミジ
+ナンバ,ダイスケ
+ナンモク,エミコ
+ネモト,ナツコ
+ネモト,ミツアキ
+ニイ,ヨシコ
+ニイデ,ヒデツグ
+ニイクラ,ヒデヤ
+ニイズマ,タイチロウ
+ニカミ,アキラ
+ニシバヤシ,マサヒコ
+ニシダ,ヨシヤ
+ニシハラ,シキコ
+ニシハラ,サトシ
+ニシカワ,タカヒロ
+ニシカゼ,カズノリ
+ニシミヤ,サトシ
+ニシムラ,シンイチ
+ニシムラ,キワム
+ニシヤマ,ヒトシ
+ニシヤマ,モトアキ
+ニッタ,カツアキ
+ニワ,キヨシ
+トウゴウ,マナブ
+ニワ,カツヤ
+ノブハラ,コウジ
+オガワ,ユウコ
+ノガミ,オサム
+ノガミ,ジュンイチ
+ノモト,ミカ
+ノムラ,マナブ
+ノムラ,タカヒロ
+ノゾエ,ハジメ
+ヌマタ,テツ
+オダジマ,エリ
+オオガエリ,トオル
+オガタ,ヒデキ
+オガワ,シゲル
+オガワ,タケオ
+オオギ,タケシ
+オギクボ,ヨウジロウ
+オゴ,トモキ
+オグラ,ヒロユキ
+オオバ,トモヒロ
+オオバヤシ,ヨリコ
+オオエ,ヨウイチ
+オオガマ,コウイチ
+オハシ,ナオキ
+オオイシ,ケンジ
+オオカワ,ヤスヒコ
+オオキド,マサオ
+オオクボ,ヒロユキ
+オオクボ,ヒロフミ
+オオクマ,マコト
+オマ,マモル
+オマエ,ムツロウ
+オマエ,タカシ
+オオモリ,トモヒロ
+オオモリ,ミツヨシ
+オオモリ,ナオキ
+オオモリ,ヒロキ
+オオモリ,マサヤス
+オオモト,ミツル
+オオニシ,アイコ
+オオニシ,ケンジ
+オオニシ,マサテル
+オノ,アキラ
+オオヌマ,ヒロキ
+オオサカ,リサ
+オオサワ,タカヒロ
+オオサワ,スミコ
+オシマ,タカシ
+オシロ,シンイチ
+オオタ,アサコ
+オオタ,アツオ
+オオタ,ヒデユキ
+オオタ,マサミ
+オオタ,ムネヤス
+オオタ,シンイチロウ
+オオタニ,ヤスヒロ
+オオツ,ヒロユキ
+オオツカ,タカシ
+オオツキ,アキヒロ
+オイカワ,ミチオ
+オカ,ヨシヒサ
+オカ,ヒデキ
+オカ,フミコ
+オカダ,ミキ
+オカダ,ヤスシ
+オカダ,ユウイチ
+オカダ,サトル
+オカグチ,ノブヒロ
+オカイ,ユタカ
+オカマツ,タカヒロ
+オカモト,ヨシアキ
+オカモト,エイイチ
+オカモト,ヒデオ
+オカモト,マサブミ
+オカモト,マサヒロ
+オカモト,ミチハル
+オカモト,ノリオ
+オカノ,トモヒロ
+オカザキ,ユキト
+オキモト,エツコ
+オクノ,ヨシタミ
+オクヤマ,ヤスオ
+オオミ,シゲル
+オオノ,ナオキ
+オオノ,ヒロフミ
+オオノ,ヒロシ
+オオノセ,ジュンコ
+オノザキ,タカシ
+オリエ,ヨシコ
+オザキ,マサコ
+トクミヤ,テツヤ
+サイチ,カオリ
+サイトウ,シンイチ
+サイトウ,ヒトキ
+サイトウ,ヒデアキ
+サイトウ,ヒロタカ
+サイトウ,ユタカ
+サイトウ,ヤスヒコ
+サイトウ,タイシ
+サイトウ,カオル
+ハカマダ,カヨ
+サカグチ,コウジ
+サカイ,マリコ
+サカキバラ,タカオ
+サカキモト,ヨシエ
+サカモト,エイジ
+サカモト,エリ
+サカモト,ヒデヒロ
+サカモト,イズミ
+サカモト,ケイイチ
+ミタニ,ケンイチ
+サカウチ,クニヒコ
+サキモト,マサヒコ
+サクマ,ミツル
+サクライ,モトノリ
+サノ,リキヤ
+サノ,リュウイチ
+サノ,シュウゾウ
+ササダ,シュンスケ
+ササハラ,ススム
+ササキ,タカヒト
+ササキ,トシヒコ
+ササキ,ヤスフミ
+トダニ,ツヨシ
+ササキ,セイジ
+サタケ,ツネノリ
+サトウ,ヤスヒロ
+サトウ,シンゴ
+サトウ,ヒサハル
+サトウ,ユウイチ
+サトウ,ヨシアキ
+サトウ,タカカズ
+サトウ,リエコ
+サトウ,トオル
+サトウ,ユウイチ
+サトウ,ハルオ
+サトウ,シンイチロウ
+サトウ,ノボル
+サトウ,コウジ
+サトウ,ダイスケ
+サトウ,アキラ
+サトウ,ケイタロウ
+サトウ,トモコ
+サトウ,ジュンジ
+サトウ,トモキ
+サワダ,ケイタロウ
+サワダ,マコ
+サワダ,ミチヨ
+イワタ,マユミ
+サワイ,トシヒコ
+サワイ,ソウイチロウ
+サヤノ,イクヤ
+セキ,タケシ
+セキグチ,マサヨシ
+セキグチ,ミカ
+セキグチ,アキラ
+セキネ,アキヒロ
+セキノ,タカシ
+センナ,トシミツ
+セリザワ,ヒロユキ
+セト,カツヤ
+シバタ,コウイチ
+シバタ,マサヒデ
+シバタ,ケイスケ
+シバタニ,サトシ
+シブタニ,キョウコ
+シガ,サトル
+シゲノブ,カズヨシ
+シマ,ミキコ
+シマダ,レイジロウ
+シマダ,サトコ
+シマムラ,ヨシミツ
+シミズ,タケカズ
+シミズ,サダミチ
+シモバヤシ,キヨシ
+シモガワ,コウジ
+シモヒゴシ,テツヒサ
+シモイデ,タイシ
+シナダ,カツミ
+シネイ,ユカ
+シンガイ,タダシ
+シノダ,コウジ
+シノハラ,タカヒロ
+シノザキ,トモヨシ
+シオヤ,タクヤ
+シラハマ,タロウ
+シライシ,ユウイチ
+シライシ,タカシ
+シタラ,タケシ
+ショウジ,ヒロユキ
+ショウジ,シン
+マスヤマ,マサヒデ
+シュトウ,ユミコ
+ソエダ,ヒデカズ
+ソネ,ヒデキ
+ソネダ,タクオ
+ソノベ,マサヒロ
+ソノベ,マサシ
+ソラノ,ミホ
+スダ,ナオヒロ
+スガイ,ノリユキ
+スガワラ,セイマ
+スギモト,タカヒロ
+スギモト,タカマサ
+スギウラ,ヨシノリ
+スギヤマ,マサヒロ
+スギヤマ,ヒデマサ
+スギヤマ,レイコ
+スジャク,タカヤス
+スカ,トオル
+スケガワ,ヒロユキ
+スミナガ,キミコ
+スミオカ,トモヤ
+スナヤマ,ケンイチ
+スズキ,マサヤ
+スズキ,ヒロシ
+イシイ,ヤスヒコ
+スズキ,シゲル
+スズキ,タカユキ
+スズキ,ヒデヒロ
+ヤマシロ,ヒデキ
+スズキ,ヒロシ
+スズキ,
+スズキ,カツユキ
+スズキ,カズノリ
+スズキ,コウイチ
+タバコ,クミコ
+タバタ,マサキ
+ナカジマ,テルユキ
+タバタ,ヨシツグ
+タチバナ,トシユキ
+タガミ,タイセイ
+ママダ,ケンジ
+タガワ,マコト
+タジマ,モトヒロ
+タカバヤシ,ユキ
+タカダ,トモヨ
+タカダ,タカヒロ
+タカギ,エミ
+タカギ,ダイスケ
+タカハシ,シンヤ
+タカハシ,ユキオ
+タカハシ,ヒロキ
+タカハシ,ヒロコ
+タカハシ,イズル
+タカハシ,マサキ
+タカハシ,ミショウ
+ワタナベ,マキ
+タカハシ,ヤスシ
+タカハシ,ユタカ
+タカハシ,コウヘイ
+タカハシ,マサフミ
+タカイ,ヒデキ
+タカクラ,ケンスケ
+タカクラ,シホ
+タカマチ,カツノリ
+タカマツ,アキヨシ
+マツナガ,ヤスヒロ
+タカモト,ヨシキ
+タカムラ,ノブカツ
+タカオカ,ゴウ
+タカスギ,ハルコ
+タカヤ,ヒデアキ
+タカヤマ,ヒロユキ
+キタハラ,ケンイチ
+タケダ,クニヒデ
+タケダ,マサヒロ
+タケハナ,マサカツ
+タケマツ,マサミ
+タケオカ,ミノル
+イシカワ,モトフミ
+タケシタ,ナオキ
+タケタニ,ノブユキ
+タケウチ,サトシ
+タケウチ,サトシ
+タケヤマ,タケシ
+タケザワ,キヨジ
+タキザワ,ツトム
+タキザワ,チカラ
+タマイ,トモユキ
+タナハシ,ノブユキ
+タナカ,ケンタロウ
+タナカ,コスケ
+タナカ,ヒロユキ
+タナカ,ヒロシ
+タナカ,ケイコ
+タナカ,モトキ
+タナカ,セイジ
+タナカ,カズヒト
+タナカ,ユウコ
+タナカ,エイイチ
+タナカ,エイジ
+タナカ,ツネヒロ
+タナカ,マサヒロ
+タナカ,ノリヒロ
+タナカ,カズナオ
+タナカ,ノボル
+イシダ,ケンヤ
+タナカ,カズオ
+タニグチ,シゲル
+タニグチ,ケンイチ
+タニイ,ユリコ
+タニムラ,ミチヨ
+タニオカ,トモコ
+タンノ,ユキオ
+タヌマ,マモル
+ヨコヤマ,ワタル
+タシロ,アキラ
+タシロ,ケンイチ
+タテ,ヒデト
+タウラ,マコト
+タゾエ,ユウコ
+タズケ,マコト
+テンモ,カヨコ
+テラダ,チエコ
+テラモト,エイジ
+テラオカ,ケイ
+テズカ,ヒロユキ
+トグチ,ジュンコ
+トウマ,コウイチ
+トウマ,ヒロヤス
+トオヤマ,カズユキ
+トキオカ,タカシゲ
+タニヤマ,ヒデアキ
+ミウラ,ソウイチ
+トクラ,カズオ
+トクヤマ,ヒロヤ
+トミイシ,クニヒコ
+トミカワ,ノリコ
+トミナガ,アツシ
+トミタ,フミエ
+トミタ,モトヨシ
+オオモリ,マサユキ
+トモタ,ヒデヒコ
+トモノ,ケイジ
+トリカイ,ナオキ
+トリウミ,ヨシノブ
+トツカ,アヤコ
+トヨダ,ケイイチ
+トヨダ,ミキヒロ
+トヨオカ,タクノブ
+ツチダ,コウジ
+ツダ,コウイチ
+ツジタニ,マサツグ
+ツカモト,ヨシテル
+ツカモト,ヒロアキ
+ツカワキ,マサタカ
+ツルマキ,ヨウコ
+イチバンガセ,ユキコ
+サカイ,ミホコ
+ウチダ,カズヒロ
+カナオカ,コウヘイ
+ウチダ,タツヤ
+ウチウミ,ナオヒコ
+ウチヤマ,フミタカ
+ウチヤマ,ユキ
+ウダ,アツコ
+ウダガワ,タロウ
+オシマ,アツコ
+ウエダ,エイカ
+ウエダ,ヨシミツ
+ウエハラ,ヒデユキ
+ウエムラ,マサキ
+ウエノ,オサム
+ウエノ,ヒロノリ
+ウエスギ,マサミ
+ウエツキ,タイチ
+ウカワ,マサヒデ
+ウマズメ,シンヤ
+ウメハラ,トシオ
+ウメムラ,ヒロフミ
+ウメザワ,ヒロシ
+ウノ,ヒロシ
+ウノ,ヒサヤ
+ウラモト,ケイ
+ウルマ,マサフミ
+ウシバ,ミノル
+ナガタ,リュウタ
+ウシグサ,トシアキ
+ハセガワ,ヨシアキ
+サカマキ,ユリ
+ウワベ,マサユキ
+ワダ,アキコ
+ワカオ,ケイジ
+ワカオ,レイコ
+ワキタ,ヨウコ
+イノマタ,ヒロミ
+ワクイ,マサヤ
+ワシザワ,ケイコ
+ワシズカ,コウジ
+ワタベ,マサトシ
+ワタナベ,ノリユキ
+ワタナベ,カズヒロ
+ワタナベ,シゲル
+ワタナベ,タカオ
+ワタナベ,ツヨシ
+ワタナベ,トモユキ
+ワタナベ,ダイチ
+ワタナベ,ヒデキ
+ワタナベ,ヒロカズ
+ワタナベ,ヒロミ
+トヨタ,ヒトシ
+ワタリ,ケイコ
+トミヤス,トシヒサ
+ヤエガキ,ヨシアキ
+ヤギ,ミヨコ
+ヤギ,ヨシマサ
+ヤギヌマ,ダイスケ
+ヤク,アキト
+ヤマダ,カズヒコ
+ヤマダ,マキ
+ヤマダ,ヨウコ
+ヤマギシ,アツシ
+ヤマグチ,コウイチ
+ヤマグチ,トシユキ
+ヤマグチ,カオル
+ヤマグチ,アキラ
+ヤマコシ,ダイスケ
+ヤマモト,マサヒロ
+ヤマモト,ケンジ
+ヤマモト,タケオ
+ヤマモト,セイイチ
+ヤマモト,シュウジ
+タチバナ,マサトシ
+ヤマモト,ジュン
+ヤマモト,ケンイチ
+ハラタニ,トモコ
+ヤマナカ,タカシ
+ヤマネ,ヨシフミ
+ヤマシタ,アキヒコ
+ヤマシタ,ヒロシ
+ヤマシタ,ナオコ
+ヤマタニ,タカシ
+ヤマウチ,トモコ
+ヤマザキ,アキラ
+ヤナ,ヒロアキ
+ヤナベ,ヒロキ
+ヤナガワ,リョウ
+ヤナギ,トシアキ
+ヤナギダ,リュウイチ
+ヤサカ,カズヒデ
+ヤスダ,マサミツ
+ヤスフク,ユタカ
+ヤスカワ,キヨカズ
+ヨコサワ,タクヤ
+ヨコタ,ヒロシ
+ヨコタ,カズヒロ
+ハラダ,コスケ
+ヨコウチ,マサヒロ
+ヨコウチ,シンスケ
+ヨコヤマ,マコト
+ヨコヤマ,カズノブ
+ヨネダ,ナオキ
+ヨネノ,ナオミ
+カサハラ,サトミ
+ヨシダ,ヒデオ
+ヨシダ,ジュン
+ヨシダ,ヒロシ
+ヨシダ,ナオト
+ヨシダ,ヒロシ
+ヨシドメ,シズカ
+ヨシハラ,タカヒロ
+ヨシイ,サトル
+ヨシイ,マコト
+ヨシカワ,シオリ
+ヨシミ,タイキ
+ヨシノ,フミオ
+ヨシノ,ヤスシ
+ヨシノ,トモコ
+ヨシオカ,ケンイチ
+ヨシオカ,コウイチロウ
+ヨシタケ,タダシ
+ヨシザワ,トシカツ
+ユズハラ,コウジ
+ゼンゲ,カズタカ
+ズシ,ミオ
+ゴミ,ヒロキ
+ゴトウ,ヒロシ
+イケダ,タケハル
+イマ,マサヒロ
+アベ,マナブ
+カトウ,シゲル
+カワバタ,シゲル
+コバヤシ,ユキヒコ
+コンド,クニムネ
+クボ,マサヒコ
+クラモチ,ヨウコ
+マルヤマ,ヨシアキ
+モリカク,ユキオ
+ムラオカ,ヒロユキ
+ナガシマ,ヨウコ
+ナカ,トシヤ
+ナカハラ,タクヤ
+ナカムラ,ツヨシ
+ナカセ,トミ
+ナリタ,ヒサエ
+ニシムラ,エミコ
+ノナカ,ヒデナオ
+オガワ,ヨシオ
+オグラ,トオル
+オオミ,マコト
+オカノ,マサヤ
+シマダ,ジュンジ
+シミズ,カズノシン
+シムラ,ヒデユキ
+タカハシ,ミツマサ
+タカマツ,ケンイチ
+ウエダ,ムツオ
+ウジ,ゴウ
+ウツミ,シュウイチ
+アベ,ヨウイチ
+コンド,タカシ
+タカノウチ,ケンサク
+イノウエ,ムネヒロ
+ナカハラ,ヒトシ
+アダチ,ユタカ
+ナカノ,ヒロキ
+アイバ,ノリアキ
+アイバ,タケシ
+アイバ,サトシ
+アイダ,マサヒロ
+アイハラ,アツシ
+アカイシ,マサオミ
+アカイワ,ヨシヒロ
+アカオギ,トシヒデ
+アキタ,ツヨシ
+アマノ,ナオコ
+アオキ,ヒロコ
+アオキ,ユキコ
+アオヌマ,ヒトシ
+アオヤギ,エイジ
+アラキ,アキラ
+アリマチ,トシノブ
+アリタ,ヒデアキ
+アサダ,テツヤ
+アサエダ,タカヒロ
+アサハラ,ヨシハル
+アサカワ,カズヒコ
+アサモト,ツトム
+アサノ,ユタカ
+アタグチ,ヒロシ
+アヤキ,ハルコ
+ババ,シュンスケ
+ババ,カオル
+ババ,ナナコ
+バン,タケシ
+ダイコク,ミチヨ
+ダテ,シゲヒコ
+サノ,ジュンイチ
+ミツオカ,シゲキ
+デンダ,カズヒコ
+ドイ,エミ
+エンド,トモヒコ
+エンド,ヨウイチロウ
+エザワ,ナリヒデ
+フジエ,タケフミ
+フジイ,カズヒロ
+フジイ,マサアキ
+フジマキ,マサカツ
+フジモト,ミワ
+フジモト,ミキオ
+フジムロ,コウジ
+モロズミ,カンジ
+フジサワ,ケンジ
+フジタ,ヒロユキ
+フカセ,タツヤ
+フクダ,シセイ
+フクドメ,タカシ
+フクイ,ヒサシ
+フクナガ,フミヒサ
+フクシマ,ヒデオ
+フクザワ,マリカ
+フルバヤシ,アキラ
+フルカワ,ヒデキ
+フルカワ,アケミ
+ゴウ,ハナ
+ゴマル,ススム
+ゴトウ,ショウ
+ゴトウ,タツヤ
+ゴトウ,チズカ
+ノモト,カオル
+ハギワラ,リュウタ
+ハイヤマ,キョウコ
+ハマ,カズミチ
+ハマチ,シュウイチ
+ハマダ,ナオヒサ
+ハマタニ,シゲオ
+ハナイ,ヤスヒト
+ハナタ,ヒラク
+ハネジ,ヒロコ
+ハンザワ,マサヒコ
+ハラ,ミホ
+ハラ,シンジ
+ハラダ,カズヒデ
+ハラダ,キヨシ
+ハセガワ,ユタカ
+ハセガワ,ナオコ
+ハセガワ,テツヤ
+ハシグチ,マサヨシ
+ハシモト,ヤスユキ
+ゴトウ,ケイ
+カジワラ,ヨシコ
+ハスミ,ツグノリ
+カタヤナギ,エイイチ
+ハタケヤマ,シンイチ
+ムライ,ミツユキ
+ハタニ,リュウイチ
+ハットリ,ヤスノブ
+ハットリ,タカユキ
+ハヤシ,タカユキ
+オオスミ,マサコ
+ハヤシ,カズナリ
+ハヤシ,ヨシノブ
+ハヤシダ,サキ
+ヒガ,タケオ
+ヒガシ,リュウスケ
+ヒガシダ,シュウイチ
+トヨダ,ユウイチロ
+ヒノ,タケヒコ
+ヒラ,テツヤ
+ヒラモト,ジュンコ
+ヒラオ,マサト
+ヒラオ,マサユキ
+ヒラタ,ナオミ
+ヒラヤマ,タケシ
+ヒロイ,タカシ
+ヒロカワ,ノリカズ
+ヒロカワ,ヨタロウ
+ヒロマス,カズユキ
+ヒロセ,ミツル
+ヒロセ,タカオ
+ヒシヤ,サトシ
+ホウショウ,アキコ
+ホンダ,ミホコ
+ハヤシ,ノゾム
+ホンマ,タケシ
+ホリグチ,テルオ
+ホリイ,ヒロミ
+ホシ,アキヒコ
+ホソイ,カツヤ
+ホソミ,ヤスオ
+ホッタ,マサヒデ
+フクロイ,ケンジ
+フルヤ,アキヒト
+イブカ,ソウイチ
+イチバ,タカシ
+イチハラ,ヒロシ
+イチカワ,ヒロシ
+イチムラ,ジュンイチロ
+イチノセキ,トシヒロ
+イイダ,トシヤ
+イイダ,ジュンコ
+イイジマ,ヨウコ
+シノハラ,ハジメ
+イケダ,リエ
+イケダ,ユキ
+イケダ,ユタカ
+イケダ,ヨウコ
+イケザワ,カズタカ
+イマイ,マユミ
+イマイ,ケイタ
+イマイ,クニヒコ
+イマキ,ミノル
+イマムラ,ケンスケ
+イモト,ショウイチ
+アベ,ヨシヤス
+イナダ,ユキコ
+イノウエ,トモヒロ
+イノウエ,タカシ
+イノウエ,マサヒコ
+イノウエ,カズオ
+イリエ,ヨシヒコ
+ツルオカ,ヒトシ
+オオハシ,ヒサトシ
+イシダ,ユウジ
+イシダ,ケンジ
+イシダ,コウジ
+イシダ,ハジメ
+イシグロ,ヨシキ
+イシハラ,シゲオ
+イシハラ,ジュンコ
+イシイ,ミツヒコ
+イシカワ,マサノリ
+イシカワ,アキラ
+イシワタ,マサノリ
+イトウ,タカシ
+イトウ,アキコ
+イトヤマ,トシオ
+イツキ,カズヒロ
+イワキ,コウタロウ
+イワサキ,タケシ
+イズツ,ユウジ
+ジブ,エミコ
+カドイ,テルヤス
+アダチ,ケンジ
+カイ,タカユキ
+カイセ,ヒロアキ
+カイズカ,ヒロコ
+カジワラ,ヒロシ
+カキ,カツトシ
+カキミ,コウジ
+スギタ,レイキ
+カクタニ,ヤスコ
+カミバヤシ,カツヒコ
+カミガキ,ノリヒデ
+カミヤ,サトシ
+カモダ,コウイチ
+カモト,タモツ
+カンバヤシ,モトヒロ
+カネコ,シンゴ
+カネコ,ミツヤ
+カネコ,クニヒコ
+カネコ,ミツオ
+カニサワ,タツヤ
+カル,タカユキ
+カシワギ,テツヤ
+カスミ,ヨウイチロウ
+カタギリ,ナオユキ
+カトウ,ミツヒロ
+カトウ,アツシ
+カトウ,ユウコ
+カトウ,ノブオ
+カトウ,タツロウ
+タグチ,ジュンコ
+カトウ,ケンジ
+カトウ,コウ
+カトウ,シンイチ
+カツラ,アキラ
+ソゴ,ケン
+カワヒト,マコト
+カワイ,リエコ
+カワカミ,コウジ
+カワミ,シゲル
+カワムラ,シンジ
+カワムラ,テルキ
+カワサキ,ヒロシ
+カワサキ,トモカズ
+カワウチ,マサアキ
+カツキ,アキトモ
+キダ,ヘイジ
+キドコロ,ヒロシ
+モリ,ケンジ
+キクチ,マコト
+キクガワ,ミエ
+キムラ,ミツヒロ
+キムラ,サトル
+キムラ,タケシ
+キムラ,タクミ
+キノシタ,トヨキ
+キノシタ,ヨシアキ
+キノシタ,ヨシハル
+キノシタ,ユカリ
+キシダ,ユキコ
+キシカワ,マサヒコ
+キタ,トシオ
+キタグチ,ケイスケ
+アマノ,ミチヨ
+キタムラ,マナブ
+キタヤマ,チヒロ
+コバヤシ,ナオト
+コバヤシ,モトノリ
+コバヤシ,ヒロユキ
+コバヤシ,ヤステル
+コバヤシ,トモアキ
+コバヤシ,ジュンジ
+アメシタ,ナオキ
+コバヤシ,コウイチ
+コバヤシ,ヒロミ
+コバヤシ,ケンジ
+コバヤシ,キヨタカ
+コバヤシ,マユミ
+コバヤシ,ダイスケ
+コバヤシ,タカヒロ
+オダ,マサヒコ
+コボリ,ヒデミ
+コダイラ,ノブヒロ
+コダマ,セイジ
+カワグチ,アツシ
+コダテ,ミツル
+コガ,ノリユキ
+コガ,アキラ
+コガネマル,マサミ
+コハラ,トモナリ
+コウダ,ケンイチ
+コンノ,マナブ
+コザイ,コウイチ
+コイケ,アキオ
+コイズミ,マサオ
+コジマ,ヤスロ
+コジマ,ケン
+コマツ,タカシ
+コモリ,ヨシタカ
+コンド,トモノリ
+コンド,イサム
+コンタ,ケンイチ
+コタカ,ミツノリ
+コタケ,マサキ
+コヤマ,トウロク
+クボ,ヒロシ
+クボキ,イクコ
+クボタ,ヨウイチ
+クガ,タツジ
+クマガイ,ヤスナリ
+クニモリ,ヨウイチ
+クラモト,ジュン
+クラサワ,アツシ
+クラシナ,カツヒト
+クラタ,サトシ
+クリモト,タケオ
+クリタ,ヨシマサ
+クロダ,トシカズ
+クロダ,ヒデアキ
+クロカワ,シンゴ
+クロキ,ツヨシ
+クロサキ,リョウイチ
+クロサワ,ヒロユキ
+クリュウ,ケンジ
+クワタ,マサヒコ
+クズミ,タカヒロ
+マブチ,タクミ
+マエダ,ヤスヒロ
+マエダ,ケイシ
+マエガワ,アキヒコ
+マエカワ,ヤストシ
+マキオ,セイイチ
+マメハラ,アキヒロ
+マサダ,ヒロユキ
+マスダ,ヨウスケ
+マスダ,ヒロシ
+マスダ,タカシ
+マスダ,トモコ
+マスヤマ,リツコ
+マツダ,ムツミ
+マツダ,ナオミ
+マツエダ,ツヨシ
+マツイ,タカマサ
+マツモト,ケンタロウ
+マツモト,ケイジ
+マツモト,セイイチ
+マツモト,ユウイチ
+マツモト,シュウイチ
+マツモト,ヨウタロウ
+マツナガ,マサユキ
+マツノ,ヤスヒコ
+マツノ,シンイチ
+マツオカ,ミチコ
+マユミ,アキラ
+メカタ,ヒロキ
+メラ,コウジ
+ミタニ,タロウ
+ミタニ,ミチヒト
+ミト,ユミコ
+ミヤガミ,シゲヒサ
+イオキ,マサアキ
+ミヤモト,アキヒロ
+ミヤムラ,トモユキ
+ミヤノ,タカアキ
+ミヤウチ,マサハル
+ミヤザキ,マサカツ
+モチズキ,ユキ
+モモイ,ヒデマサ
+モリ,ユカ
+モリ,クミコ
+モリモト,ヨウイチ
+モリモト,ムツコ
+モリオカ,ケンジ
+モリサワ,トモヒロ
+モリタ,カズヨシ
+モリタ,ヒロノブ
+モリタ,アキヒコ
+モリタ,シンヤ
+モリヤマ,タカシ
+モリヤマ,タツヒコ
+モテギ,トオル
+ムラカミ,マサアキ
+アサノ,ケンゴ
+アユカワ,サトシ
+ムラオ,ダイスケ
+ムラオカ,シゲル
+ムラタ,トモカズ
+ムシアケ,エミコ
+ムタ,ヒサシ
+ナベイ,マサヒロ
+ナガイ,コウイチ
+ナガイ,マサコ
+ナガミネ,サユリ
+ナガサワ,タダシ
+ナガタ,テツオ
+ナガヤマ,テツヤ
+ナグラ,ユミコ
+ナイトウ,ヒロシ
+ナカガワ,リュウジ
+ナカガワ,ユミコ
+ナカガワ,ヤスシ
+ナカガワ,マサヒロ
+ナカハラ,タカコ
+ナカイ,シゲル
+ナカイ,タカヒロ
+ナカジマ,トオル
+ナカジマ,ユミコ
+ナカジマ,カツヤ
+サワダ,ミエコ
+ナカムラ,アキノブ
+バンバ,テツヤ
+ナカムラ,ヒデヒト
+ナカムラ,コウイチ
+ナカムラ,マサノリ
+ナカムラ,カズオ
+ナカムラ,マリ
+ナカムラ,タケシ
+ナカムラ,アキヒロ
+ナカノ,フミコ
+ナカノ,ヒロカズ
+ナカオ,ノブユキ
+ナカシマ,ヤスヒロ
+ナカタ,コウイチ
+ナカタ,アキコ
+ナカヤマ,ナオヤス
+ナカヤマ,ヒロフミ
+ナカヤマ,アキヒロ
+ナカヤマ,ケイコ
+ナカザワ,カツヤ
+ナカザワ,ケイスケ
+ナガオカ,ユタカ
+ナナシャ,ヨシヒロ
+ナリタ,ツヨシ
+ナリタ,マコト
+ナス,タケシ
+ナスタ,ヒロシ
+ニシ,カネノブ
+ニシダ,ノブユキ
+ニシムラ,サチオ
+マサダ,タケヒコ
+ニシムラ,トモコ
+ニシムラ,マサユキ
+ニシオ,ヨシタダ
+ニシヤマ,ミナコ
+ニッタ,カオリ
+ノガミ,ヤスヒロ
+ノナカ,タカヒロ
+ノセ,ヒデオ
+ノタベ,シンゴ
+ノト,ジュンイチ
+ノテ,ヒロキ
+ヌクイ,マサヒロ
+オチ,アキヒコ
+オチアイ,トシユキ
+オダ,ヨシカズ
+オガサワラ,ユウジ
+オガワ,ヨウジ
+オガワ,コウジ
+オガワ,マサヒコ
+オガワ,マサヤ
+オガワ,ナオタケ
+オガワ,トモミ
+オギノ,マコト
+オオバ,マサヒデ
+タキミヤ,ユキオ
+オオハシ,タダユキ
+オオハシ,タクミン
+オオイ,チサト
+オオカワ,エミ
+オオモリ,ジュンカ
+オムラ,マユ
+オナカハラ,タケツグ
+オオニシ,ヨシノリ
+オノ,アキコ
+オオオカ,タカシ
+オシマ,ノブ
+オシマ,ケンイチ
+イケマツ,タカコ
+オオタ,タケシ
+オオタ,タカシ
+オオタ,サチコ
+オオタ,タミコ
+フクダ,ミエ
+オゼキ,ケイイチ
+オイダ,ヒトシ
+オイジ,クニヒロ
+オカダ,シンジ
+スギモト,タカユキ
+オカザキ,ヤスヒロ
+オカザキ,ヤスシ
+オカザワ,ヒトシ
+オクダ,テツヤ
+オクダ,マサキ
+オクムラ,シゲル
+オクムラ,ヒデヒト
+オクノ,コウタロウ
+オクヤマ,アキヒロ
+オノ,ナオミ
+オオヌキ,ヒデノリ
+オオハシ,トシオ
+トオヤ,マサヒロ
+オトグロ,ノブユキ
+サイゴウ,タケヒロ
+サイトウ,ヨシタロウ
+サイトウ,アキヒサ
+サイトウ,フミヒコ
+サイトウ,ヒロキ
+サイトウ,ヒロシ
+サイトウ,ジュン
+サイトウ,カンジ
+サカエダニ,ミカ
+サカイ,ノブヤス
+サカイ,トクジロウ
+サカタ,ツヨシ
+サカタ,カズヒコ
+サクマ,タカヒロ
+サクラバヤシ,アツシ
+サクライ,マツオ
+サクタ,ヨシアキ
+ササキ,マサカズ
+ササキ,アキラ
+ササキ,サチコ
+ササキ,ヨシユキ
+ササメ,ヨウイチ
+サトウ,カズノリ
+サトウ,マサヒコ
+サトウ,ヨシヒロ
+サトウ,ヨシロウ
+サトウ,ハジメ
+サトウ,ヒロミ
+サトウ,ヒロシ
+サトウ,コウジ
+サトウ,ショウジ
+サトウ,ヤエ
+サトウ,クミコ
+サトウ,ヒロヤス
+サトウ,リエ
+サワダ,タカネ
+サワハシ,タツユキ
+サワノ,カズヒロ
+セグチ,シュウヘイ
+セキ,トモコ
+セキグチ,ヨシヒロ
+セキグチ,サトシ
+シバ,カオリ
+シバタ,アヤコ
+シバタ,マサハル
+シブヤ,タカシ
+シマダ,シュウジ
+シミズ,カツユキ
+イシカワ,タカユキ
+シミズ,トモヒロ
+シミズ,カツユキ
+シミズ,ケンジ
+シミズ,ケンタロウ
+フジエダ,コウイチロウ
+シモヤマダ,シンイチ
+シナガワ,トモヒデ
+シンヤ,ミツノリ
+シオミ,シンジ
+シオツ,カツヒコ
+セキグチ,トオル
+ツノダ,タカシ
+シラサカ,アツオ
+シロシタ,ヒロユキ
+シタラ,ヒサシ
+ショウ,ジュンイチ
+スガワラ,ミホ
+スガワラ,サトシ
+スギモト,ショウイチ
+スギタ,トモカズ
+スギタ,マサヨリ
+スギタ,カツヒコ
+スギウラ,サトコ
+スギウラ,トヨヒサ
+スギヤマ,ミズホ
+イケゾエ,マサトシ
+スギヤマ,ヒロアキ
+スカ,トモユキ
+スケガワ,ノブヨシ
+スミノウエ,ヒデキ
+スミヨシ,タネカズ
+スミヨシ,トシミツ
+スナミ,ヒロユキ
+スズキ,ヤチヨ
+スズキ,マモル
+スズキ,アキヒロ
+スズキ,アキラ
+スズキ,ヒロアキ
+スズキ,イッペイ
+スズキ,マサト
+スズキ,ノブアキ
+ショウジ,シズ
+ショウ,ショウタロウ
+タバタ,ソウイチロウ
+タダ,トシオ
+タドコロ,ヒデユキ
+タガミ,コウジ
+タグチ,タカシ
+タグチ,ヒロアキ
+タイ,マサテル
+タイラ,アツシ
+タイサ,ミツヒロ
+タジマ,キヨシ
+タカダ,タダナオ
+タカダ,エツロウ
+タカギ,テツロウ
+タカハシ,アツヤ
+タカハシ,ヒロシ
+タカハシ,トオル
+タカハシ,ナオキ
+タカハシ,サトシ
+タカハシ,ユウジ
+タカハシ,トシオ
+タカハシ,ユウスケ
+タカハシ,ナオキ
+タカハシ,ヨシフミ
+タカイ,シノブ
+タカノ,カンコ
+タカシマ,ナオヤ
+タカヤマ,ヒデツグ
+タケダ,カズヨシ
+タケイチ,ケイスケ
+タケマサ,ケンイチ
+タケムラ,シホ
+タケムラ,シュンスケ
+タケナカ,ナオト
+タケシタ,ショウゾウ
+タケウチ,アツト
+タケウチ,ヒトシ
+タケウチ,エイイチロウ
+タキカワ,アツシ
+タキキタ,タカシ
+タキザワ,ヒデト
+タコ,ヨシキ
+タカノ,モトユキ
+タマガワ,ヒロユキ
+タマキ,オサム
+タムラ,カズタカ
+タナベ,ヒロノブ
+タナベ,フミオ
+タナカ,キョウヘイ
+タナカ,キョウコ
+タナカ,ミホ
+タナカ,ヨシヒサ
+タナカ,ヨウコ
+タナカ,マサヨシ
+タニ,カズナリ
+タニグチ,ノブヒロ
+タニショウ,シンゴ
+タテヤマ,ヨシフミ
+タツミ,マスミ
+タウラ,タカトシ
+タザワ,トモユキ
+タズケ,セイイチ
+テラダ,ケイコ
+トウマ,カズヒロ
+トオヤマ,カズヒロ
+トメオク,アキオ
+トミイエ,ハヤト
+フタツギ,ヒロシ
+トモトシ,ケンジ
+トネガワ,アキコ
+オクムラ,ノリヒコ
+トシシゲ,ヒロシ
+トヨダ,カズナリ
+トヨナカ,マサヤ
+ツバキ,テツヤ
+ツチモト,フミオ
+ツダ,サトシ
+ツダ,カヨ
+ツダ,トシエ
+ツジイ,トモタカ
+ツジムラ,ノリコ
+ツカハラ,トシロウ
+ツノダ,ショウジ
+ツルギ,ハルヒコ
+ツルタ,テルヒコ
+ツシマ,キヌヨ
+ツツイ,ヒロユキ
+ツチダ,カツユキ
+ウチダ,サトル
+ウチダ,タクジ
+ウチクラ,タケシ
+ウチタニ,カツコ
+ウエダ,サキコ
+ウエダ,チエ
+ウエダ,ガク
+ウエダ,アキノリ
+ウエムラ,ヒロコ
+ウエノ,ヒロシ
+ウエツキ,マキ
+イケ,マサル
+ウメダ,ミホ
+ウメムラ,ナツコ
+ウノキ,ノブヒコ
+ウラシタ,トモコ
+ウラタ,トモユキ
+ウシオ,ヨシオ
+ウタガワ,テツヤ
+ワダ,トモコ
+ワダ,アキヒト
+ワダ,ヒロタツ
+ワダ,マサヒロ
+ワガツマ,ショウイチ
+ワカマツ,ユウジ
+ワキタ,ヒロアキ
+ワコ,ヒロカズ
+ワリカタ,ナオユキ
+ワシズ,ショウ
+ワタナベ,シュンジ
+ワタナベ,ヨシユキ
+ワタナベ,トシオ
+ワタナベ,ガク
+ワタナベ,ヒロフミ
+オムラ,ヒロヒデ
+ワタナベ,コウセイ
+ワタナベ,ナオコ
+ワタナベ,リュウイチ
+ワタナベ,テツロウ
+ヤギ,トモミ
+ヤギ,ユウコ
+ヤマダ,タカト
+ヤマダ,ノリトシ
+ヤマダ,ヒデフミ
+ヤマダ,シゲオ
+ヤマダ,タケヒロ
+ヤマフク,ヒデオ
+ヤマグチ,マリコ
+ヤマグチ,ヨウジ
+ヤマグチ,ヨウコ
+ヤマグチ,ヒロカズ
+ヤマジ,トオル
+ヤマカワ,コウジ
+ヤマモト,タカノリ
+ヤマモト,ケンイチ
+ヤマモト,ミツゾウ
+ヤマモト,ユキコ
+ヤマモト,ヒロヤス
+ヤマモト,コウジ
+ヤマモト,マサキ
+ヤマモト,ユウジ
+ヤマモト,ユタカ
+ヤマナ,セイイチロウ
+ヤマサキ,カツミ
+ヤマシタ,ノリトシ
+ヤマシタ,トオル
+ヤマザキ,ヒロシ
+ヤナギ,リョウ
+ヤノ,ケンタロウ
+ヤシロ,タケシ
+ヤスイ,フトシ
+ヤスムロ,タカシ
+ヤスウジ,ヨシユキ
+ヨコエ,ヒデノリ
+ヨコイ,マヤ
+ヨコミゾ,キヨシゲ
+ヨコヤマ,マサヒコ
+ヨネザワ,カズヒコ
+ヨシダ,ケンヤ
+ヨシダ,ノブヒロ
+ヨシダ,カツヤ
+ヨシダ,カズアキ
+ヨシダ,トモミ
+ヨシイ,シゲト
+ヨシムラ,テルカズ
+ヨシヤマ,エイジ
+ヨシザワ,サチコ
+フジシマ,ケンタロウ
+ユアサ,ケイ
+ユキ,セツコ
+ユキ,アキヨ
+ユイ,ダイスケ
+アダチ,ナオタケ
+バン,タカシ
+フルイ,ヨシノリ
+ハセガワ,ハジメ
+ヒラカワ,マナブ
+イトウ,トシヒコ
+イワサキ,リョウジ
+カトウ,ケンジ
+カワハラ,ヨシミツ
+マエハラ,オサム
+マツタニ,シゲオ
+モリイチ,エイジロウ
+ニシウチ,ノブユキ
+フジマキ,タイゾウ
+オオハラ,タカシ
+サナダ,ヒデアキ
+ソネ,ツトム
+トノムラ,ヨシユキ
+シミズ,ケイ
+ミシマ,マリコ
+フジタ,タロウ
+フジタ,ヒデキ
+フジタ,ヨウ
+フジワラ,コウジロウ
+フジュウ,シンイチ
+フカダ,タクヤ
+フクダ,ユタカ
+フクヒサ,ナオタカ
+フクザト,アヤ
+フクザワ,タカシ
+フルサワ,キハル
+ハガワ,タカシ
+ハギ,ヒロタカ
+ハラダ,ミツル
+ハラダ,ノブヒロ
+ハラダ,マキ
+ハラマキ,ナオコ
+ハセガワ,リエ
+ハセガワ,ヒデアキ
+ハシオ,ユカ
+ハスミ,ヒロシ
+ハスミ,ケンイチロ
+ハットリ,ヨリコ
+イシカワ,ブンペイ
+ハヤシ,タカコ
+ヒラノ,タクヤ
+ヒラノ,カズアキ
+ヒラノ,トシアキ
+ヒロベ,ヒデキ
+シノダ,ケンジ
+ヒサダ,タカユキ
+ホ,タケシ
+ホンゴウ,テルヒコ
+ホシ,ミチコ
+ホシノ,マサキ
+ホソカワ,ヒロカズ
+ホソノ,ユミ
+カトウ,ヨシロウ
+イギ,ヨウコ
+イケダ,トシユキ
+イクロ,ノリヒロ
+イマイ,カズヨシ
+イナダ,コウヘイ
+イノグチ,タカユキ
+イシグロ,ツグカズ
+イシカワ,ヒロキ
+イシカワ,ケンジ
+イシザキ,ユカリ
+イシゼキ,ヨシト
+イトウ,テツヤ
+イトウ,マサヨシ
+イトウ,ナオキ
+イトウ,ヨシミ
+イマガワ,ケイ
+イザワ,コウジ
+イズミ,ショウジ
+イズミダテ,ノリトシ
+カブラギ,カオリ
+カミヤマ,トオル
+カナヤマ,コウジ
+カナザワ,ジロウ
+カンバラ,カツヨシ
+カンダ,ユウコ
+カンダ,ミスマル
+カネコ,ナリトモ
+カシムラ,ヒロシ
+カタギリ,シンスケ
+カトウ,ヒロノリ
+カトウ,ノブヒサ
+カワダ,ハルミ
+カワスミ,ヨウコ
+キド,シュンイチ
+キクチ,ノブヒロ
+キモト,タクヤ
+キムラ,ケンタ
+キンド,ミチハル
+キタムラ,ミホ
+キタノ,サダオ
+キタワタセ,ススム
+キッタ,ヤスコ
+キヤマ,セイジ
+キヨタ,ヒロユキ
+コバヤシ,ジュンジ
+コバヤシ,ヨウコ
+コガ,アツヤ
+コハラ,タカユキ
+コジナ,ケン
+コンノ,ケイゴ
+コズカ,マサキ
+コイデ,シンジ
+コマツ,リュウスケ
+コミナト,シュウジ
+コモリ,サトコ
+コンド,ヒロヒコ
+コニシ,ノリコ
+クボヤマ,タダアキ
+クマガイ,リョウジ
+クマタ,タカコ
+クリハラ,タケシ
+クリハラ,ケイコ
+クリタ,サトシ
+クサノ,ヒロフミ
+クシダ,アキヒコ
+マエダ,ユキ
+マキ,ケイスケ
+マキタ,シンジ
+マルヤマ,ツネオ
+マスダ,ダイチ
+マツバラ,チカラ
+マツバラ,ヒデトシ
+マツイ,ケイコ
+マツモト,マサユキ
+マツムラ,シンタロウ
+マツオ,カズヒロ
+ミカミ,ミツオ
+ミキ,タカアキ
+ミノウラ,セイジ
+ミシマ,ケンイチ
+ミツナガ,ヨシユキ
+ミウラ,マサノリ
+ミワ,タカノブ
+ミヤオ,ヤスハル
+ミヤタ,カナウ
+ミズタニ,カズヒコ
+ミズタニ,ヒデノブ
+モチズキ,ミツル
+モチズキ,クミコ
+モチズキ,ノブユキ
+モギ,ヒロシ
+モリ,サトル
+モリ,タダヒコ
+モリ,タダユキ
+モリ,トモヒサ
+モリ,トシキ
+モリヤマ,トシオ
+モロオカ,ユキ
+モトバ,ダイサク
+ムネト,カツマサ
+ムライ,ヨシコ
+ムラオカ,ケン
+ムロイ,ヒデヒロ
+ナガフジ,キミヒト
+ナガイ,アキラ
+ナイトウ,ユキコ
+ナイトウ,タロウ
+ナカガワ,ミノル
+ナカハラ,ミヤコ
+ナカジマ,ユタカ
+ナカジマ,マサヒコ
+ナカムラ,タケシ
+ナカムラ,ヒロシ
+ナカムラ,アヤ
+ナカムラ,アキラ
+ナカムラ,アキラ
+ナカムラ,アツシ
+ナカムラ,ヒサト
+ヤマダ,タカシ
+ナカオ,エイジ
+ナカツカサ,キヨシ
+ナカヤマ,マリ
+ナムラ,ムネユキ
+ナスノ,ナオキ
+ニイゼキ,トシハル
+ニシカワ,コウゾウ
+ニシキオリ,ヨシアキ
+ニシザワ,カツノリ
+ノアキ,ヨウコ
+ノダ,ケンタロウ
+ノダ,ユウコ
+ノグチ,ヒサシ
+ノムラ,ヒデキ
+オチアイ,コスケ
+モリ,マリコ
+オガサワラ,ミツヒサ
+オガサワラ,タツシ
+オガワ,リョウコ
+オガワ,タカヒロ
+オガワ,ヤスヒサ
+オグラ,フミノリ
+オグラ,マサキ
+オオイシ,ヒロヤ
+オオカワ,トシアキ
+オオカワ,ジュンコ
+オカゼ,ナオキ
+オキ,テツヤ
+オムラ,アツシ
+オオスミ,マサヒロ
+オオタ,フミヒコ
+オオタケ,テツジ
+オオタニ,ケン
+オオヤマ,ケンジ
+オゼキ,ヒロシ
+オカモト,ジュン
+オカムラ,コウシン
+オカムラ,マモル
+オクムラ,マナミ
+オンダ,ノリヒコ
+オノデラ,ノリユキ
+オヤベ,タカノリ
+サガ,トシアキ
+サイトウ,ユウコ
+サカイ,サナエ
+イギ,アキノリ
+サカモト,ヒサネ
+サカモト,ヨシヒロ
+サカツギ,カズオ
+サカウエ,ケンジ
+サクマ,マリコ
+サクラ,エイキ
+サナダ,ヨシヒロ
+ササキ,タケオ
+ササキ,ナオヤ
+サトウ,カツユキ
+サトウ,タカヒロ
+サトウ,トシアキ
+サトウ,シュウイチ
+サトウ,ヒデヒサ
+サトウ,カツヒロ
+サトウ,キョウコ
+サトウ,ヤスヒト
+サトウ,カズヒデ
+サトウ,サトミ
+セイケ,マサノリ
+セキ,ヨウイチ
+セキ,テツヤ
+セキ,テツ
+セキグチ,タケシ
+セタ,トシオ
+シンガイ,アキコ
+シバタ,ヨシコ
+シバタ,ユキノリ
+シブキ,ジロウ
+シゲトミ,カズミツ
+シガ,ヒロシ
+シイバ,ミカ
+シマダ,イチロウ
+シマカワ,シゲル
+シミズ,ススム
+シミズ,タカツナ
+シミズ,オサム
+シミズ,タカシ
+シモムラ,タカシ
+シモムラ,アキラ
+シオジリ,ヒロシ
+シオザワ,アヤコ
+シライ,ユウコ
+シラカワ,フミエ
+ソマン,ジン
+ソウヤ,マサト
+ソノダ,マユミ
+スダ,トモハル
+スガノ,ケンイチ
+スガヌマ,サトシ
+スガワ,セイイチ
+スギウラ,キョウスケ
+スギヤマ,トモヒロ
+スズキ,ケン
+スズキ,コウジ
+スズキ,アツシ
+スズキ,シンイチロウ
+ショウジ,テツヤ
+タグチ,カツヤ
+タイラ,タダト
+タジマ,リエ
+タカダ,タカノリ
+オカヤマ,アサコ
+タカギシ,ミカコ
+タカハシ,シンイチロウ
+タカハシ,ヤスシ
+タカハシ,マサヨシ
+タカハシ,トオル
+タカハシ,キョウコ
+タカキ,ヨウイチ
+タカオカ,タクヤ
+タカオカ,ヒロユキ
+イマイズミ,ヨシオ
+タカサワ,タカシ
+タカス,ツヨシ
+タケイ,セツコ
+タケナカ,タケシ
+タケザキ,ヨシコ
+タマイシ,ヒデアキ
+タマキ,シゲル
+タナカ,アキラ
+タニグチ,ナオキ
+タウチ,ヒロナオ
+テラミツ,ダイスケ
+トダ,マヤ
+トミナガ,シンイチロウ
+トミタ,アキヨ
+トングウ,ヒデトシ
+ツネカワ,ヒロフミ
+ツツイ,カツヨシ
+ウチダ,タケシ
+ウチハシ,タクオ
+ウエダ,マサヒコ
+イトウ,ヨウイチ
+ウエダ,ヒロシ
+ウエハラ,ヒデアキ
+フジタ,シホ
+ウメダ,テツヤ
+ウメハラ,ヤヨイ
+ウラベ,ヒサコ
+ワタベ,ヤスシ
+ヤガサキ,スミカ
+ヤギモト,ヒロシ
+ヤジマ,カツミ
+ヤマダ,ミチコ
+ヤマダ,タカシ
+ヤマダ,ミカコ
+ヤマグチ,サトコ
+ヤマグチ,トモコ
+ヤマモト,ヤスヒロ
+ヤマモト,ヤスヒロ
+ヤマモト,ナオキ
+ヤマモト,コウジ
+ヤマネ,カズヒロ
+ヤマサキ,ハルノリ
+ヤマシタ,カズキ
+ヤマザキ,マサユキ
+ヤマサキ,トシヤ
+ヤナガワ,タケシ
+ヤナギダ,ヤスオ
+オノ,ヒデノブ
+ヤナギサワ,ヤスシ
+ヤザキ,ナオキ
+ヤザワ,セイジ
+ヨコヤマ,ヒロコ
+ヨコヤマ,タケシ
+ヨモ,キョウジ
+ヨシダ,ヒデオ
+ヨシダ,ユウジ
+ヨシダ,ハルヒコ
+ヨシハラ,アユミ
+ヨシハラ,マサヒデ
+ヨシモリ,タカシ
+ゼッツ,ヒデヨ
+アベ,ヨシタダ
+アダチ,コウジ
+アイカワ,ヒロフミ
+アカエ,ミチコ
+アンドウ,マキ
+アサミ,ミサ
+イマナカ,ハルヨ
+ベップ,ユウスケ
+ベップ,ヒロアキ
+チカハラ,オサム
+フジイ,ミツトシ
+フジサキ,タカユキ
+フクシマ,アズサ
+クロダ,トシミ
+モリ,マサヒデ
+ワタナベ,タカエ
+クロダ,アサコ
+ミヤウチ,ジュンコ
+イトウ,キクコ
+イイダ,マユミ
+カワノ,マイ
+アイウラ,トシオ
+ノザキ,テルアキ
+ビタニ,アヤミ
+タニアイ,ダイスケ
+アオキ,ジュンイチ
+オキ,キサク
+アオキ,カズユキ
+アオヤギ,ケンタ
+アカニシ,ナオヒロ
+アサオ,マサヒコ
+アサクラ,カエ
+アシザワ,カズキ
+アタク,ヒロシ
+アダチ,ユウコ
+イトウ,ユリ
+シマモト,アトム
+サイトウ,マサル
+シノハラ,カツミ
+オカノ,ヒデコ
+オカモト,ヒロシ
+ヒラカワ,ヨゴロウ
+スガヌマ,トモミチ
+アナザワ,ミノル
+アライ,トシカズ
+アライ,キンヤ
+アラカワ,ユミコ
+アラカネ,アキコ
+アラキ,シゲノリ
+アンドウ,ヒロヒサ
+イウチ,マコト
+イケダ,ヤスヒロ
+イケヤ,マサキ
+イシカワ,ヒロシ
+イシカワ,マサミ
+イシカワ,ヒロシ
+イシカワ,コウイチ
+イシガキ,ヒロシ
+イシグロ,カオル
+イシハラ,マサキ
+イソムラ,クミコ
+イタガキ,キヨミ
+イイダ,シロウ
+イチカワ,ソヨ
+イチカワ,ヨシトシ
+イデ,イタル
+イトウ,ヒロフミ
+イヌイ,マキト
+イノウエ,ノブヒロ
+イマニシ,ムネタカ
+イマハヤシ,シンイチ
+イワサキ,マサツグ
+イワサキ,マユミ
+イワモト,ケイイチ
+ウエノ,エイジ
+ウエノ,カズノリ
+ウチイケ,ヨシアキ
+ウチヤマ,ヨシタカ
+ウメダ,シュウジ
+ウメムラ,サヨ
+ウメモト,チホコ
+ウルシバラ,ヨシヒコ
+エグマ,エリ
+エラ,ナオヤ
+オウサカ,マサタカ
+オオカワ,マサミツ
+オオサワ,マサヒコ
+オシマ,ヨシタカ
+オシマ,マナブ
+オオスガ,タツヒコ
+オオタニ,ヒデキ
+オオツ,マサフミ
+オオツカ,タダヒサ
+オネ,マサユキ
+オオノ,アキラ
+オオハシ,ケンイチ
+オオハシ,ケンゴ
+オオバヤシ,シンジ
+オオヨシ,タカユキ
+オカモト,タダユキ
+オガサワラ,ヨシコ
+オガワ,ヒデノリ
+オクタニ,ゴウ
+オクムラ,ユウコ
+オグラ,ヒロコ
+イイカワ,ケンイチロ
+オグラ,サトシ
+オザワ,タカノリ
+オザワ,ヒデヒコ
+オオノ,ヤスノリ
+カキモト,レイコ
+カキモト,ヒロシ
+カゲヤマ,トモミ
+イシカワ,ヒロシ
+カソリ,ヤスヒト
+カツミ,ナオキ
+カトウ,ナオコ
+カトウ,ノリコ
+カトウ,シゲノリ
+カトウ,ダイスケ
+カトウ,ケイジ
+ケズカ,アキラ
+カドワキ,ミツシロウ
+カネコ,アキヒロ
+カノウ,ノリコ
+カミヤマ,ヒロカズ
+カワシマ,ヒロユキ
+カワセ,サトル
+カワノ,カズキ
+カワモト,マサタカ
+カワモト,シン
+カワセ,ナオキ
+カンダ,ヒデトシ
+キクチ,ヒサユキ
+キクチ,アキコ
+キクチ,ノブオ
+キタアラシ,マイコ
+キタオカ,ミユキ
+キタジマ,アキヒロ
+キタムラ,タケミ
+キタムラ,アツシ
+キテラ,サトシ
+キノシタ,ジュンコ
+キムラ,タカヒロ
+キリウ,タケシ
+クサカベ,マエコ
+クボタ,コスケ
+クマガイ,ケンジロウ
+クマノ,サリ
+クリハラ,マサト
+クルシマ,アキヨシ
+ナカガワ,チカ
+コイデ,ヒデキ
+コンノ,マサシ
+コモト,ユウコ
+コガ,クニハル
+コジマ,タイジ
+コニシ,カヨコ
+コバヤシ,セイウ
+コマツ,ケイイチ
+コミヤ,シンヤ
+コンド,サトシ
+コンド,ツトム
+ゴトウ,ダイスケ
+サイトウ,タツヤ
+サイトウ,コウジ
+サイトウ,ヒデキ
+サカモト,タケオ
+サクマ,トシカズ
+シミズ,ナオキ
+サダチカ,ケイジュ
+サト,サヨコ
+サトウ,ジュン
+サトウ,ヒトミ
+サトウ,ミカ
+サトウ,カツユキ
+サワダ,ジュンジ
+イソワ,マサヒコ
+シモ,タカアキ
+シュウ,マサヤ
+シオカワ,アヤノ
+シオザワ,マサヒコ
+シカウチ,ミツル
+シズリ,タケシ
+シノ,テツジ
+シノザキ,ジュンジロウ
+シノダ,マスミ
+シノダ,ユキコ
+シバザキ,アキヒト
+シバタ,サオリ
+シマムラ,ノボル
+シミズ,ミマコ
+シミズ,ユウジ
+シミズ,サトシ
+シミズ,シンイチロウ
+タキタニ,ユウイチ
+シラノ,タカユキ
+スエヒロ,ケン
+スガイ,ミキオ
+スガヨシ,ケンジ
+スガワラ,シゲフミ
+スギウラ,ノリアキ
+スギシマ,シュンスケ
+スギモト,ヒサシ
+スズカワ,ヨシエ
+スダ,アキヨシ
+スミカワ,カツアキ
+スミノ,コウジ
+セキグチ,シゲミ
+ソエジマ,ヤスナリ
+タオカ,タダシ
+タカキ,キョウコ
+タカシマ,シンイチ
+タカセ,キヨタカ
+タカハシ,カツヤ
+タカハシ,タツヤ
+タカハシ,エイイチ
+タキタニ,ナナ
+タケウチ,ヒロブミ
+タケダ,タダユキ
+タケダ,ケイイチ
+タケダ,イクヒコ
+タケムラ,ナオヒサ
+タゴ,マサコ
+タキザワ,チカコ
+タナカ,ヨウコ
+タナカ,リョウスケ
+タナカ,ケンジ
+イワノ,カズシゲ
+タナカ,ヒロシ
+タニエ,サダヨシ
+タニグチ,カズエ
+タニグチ,ジ
+タニマツ,ヒロシ
+タバタ,ミワコ
+タマキ,タツヤ
+イセモト,
+タミヤ,アキ
+チャモト,フサシ
+チノ,ヨウイチロウ
+ツカモト,ヨウコ
+ツチハシ,ムネヒロ
+テラサワ,タツヤ
+ト,ミチコ
+フクシマ,ナオシ
+トバ,キョウコ
+トミヨシ,ヒトキ
+トムロ,ナツヒコ
+トヨシマ,ジュンイチ
+トリヤマ,ナオユキ
+ナイトウ,ヒロユキ
+イデ,ミチカズ
+ハタ,フサオ
+ナカガキ,ミキ
+ナカガワ,タカコ
+ナカザワ,ヨシコ
+ナカデ,ショウコ
+ナカハラ,アツシ
+タケウチ,カツヒサ
+ナカムラ,サトシ
+ナカムラ,タケシ
+ナス,ヒロシ
+ニイムラ,トシヒロ
+ニシオカ,ヒデアキ
+ニシカワ,アキラ
+ニシザワ,シゲル
+ニシト,ヤスコ
+ニシノ,コウジ
+ニシハラ,ナオキ
+ニシムラ,クニモリ
+ネモト,サチヨ
+ノグチ,エミ
+ノグチ,マサヤ
+ノジリ,ヨシナオ
+ノジリ,タカヒロ
+ノムラ,カズヒコ
+ハッタ,アキコ
+ハシバ,チカコ
+ハシモト,ユカ
+ハシモト,イチロウ
+イノウエ,キヨシ
+ハシモト,タカコ
+ハセガワ,ケンイチ
+ハタ,カズキ
+ハタ,ヨシカツ
+ハタノ,マイコ
+ハヤシ,ヒロユキ
+ハヤシ,クミコ
+ハラダ,トモコ
+ハラダ,ケンイチ
+ババ,ヒロフミ
+ババ,アスカ
+ヒグチ,ノブヒコ
+ヒグチ,キョウコ
+ヒサキ,ゴウジ
+ヒジリ,エリ
+ヒラヤマ,タカユキ
+フクダ,マユミ
+フジイ,ヒロフミ
+スガイ,サトミ
+フジタ,カズヤ
+フジタ,ユキコ
+フジタ,ノブコ
+フジタニ,サトシ
+フジナミ,シゲユキ
+フジノ,タツユキ
+ノノムラ,カツジ
+フセ,タテル
+スギモト,ヨウイチロウ
+ホソカワ,タツオ
+ホリウチ,ナオミ
+ホリカワ,ヒロアキ
+マキノ,イクコ
+マキノ,ノリヒコ
+マシコ,トシヒコ
+マスダ,カズヤ
+マスブチ,タカシ
+マスブチ,アキヒロ
+マツイ,マキコ
+マツザワ,マサト
+トミナガ,タカシ
+マツナガ,ヨシコ
+マツナガ,ユキ
+スズキ,ヤスジ
+マツムラ,ケイイチ
+マツモト,ヒデフミ
+マツモト,トモヒサ
+マツヤマ,ノリコ
+マツヤマ,コウジ
+マツヤマ,テツヤ
+マツヨシ,アキコ
+マノ,セイジ
+マルオカ,トシヤス
+ミカミ,ヨウコ
+ミキ,ヒロキ
+ミゾグチ,マサミ
+ミタ,ミノル
+ミネ,チアキ
+ミネオ,サトル
+サトウ,カツノリ
+イクタ,アヤ
+ミヤザキ,ヒデキ
+タカギワ,シゲル
+ミヨシ,ヨウコ
+ムカイ,ミツタカ
+ムラカミ,マサアキ
+イシダ,ツカサ
+ムラカミ,サトシ
+ムラカミ,カズタカ
+ムラヤマ,コウジ
+ムラヤマ,マコト
+ムロイ,マサタカ
+モタイ,カズマサ
+モトキ,カズヤ
+モトムラ,コウジ
+モリ,カツヒロ
+カセ,アキヨシ
+モリシタ,カズヒロ
+モリタ,ナオキ
+モロトミ,ヒデノブ
+モロハシ,ユキコ
+カワモト,ヒロノリ
+ヤグチ,テルヒコ
+ヤジマ,ナオコ
+ヤスカワ,ヒロシ
+ヤスダ,マサヒト
+ヤツズカ,マリコ
+ヤナギサワ,ユキ
+ヤマグチ,キンヤ
+ヤマサキ,タカヤ
+ヤマザキ,ヒロユキ
+ヤマザキ,ヨシコ
+ヤマザキ,セイジロウ
+ヤマダ,ケンタロウ
+ヤマダ,ナオキ
+ヤマダ,タカノリ
+ヤマナカ,シュウイチ
+クリハラ,マサキ
+ヤマモト,マサコ
+ヤマモト,シンタロウ
+ヤマモト,ヤスシ
+マツオ,マスミ
+ヨギ,チトセ
+ヨコヤマ,ヒデキ
+ヨコヤマ,ヨウコ
+ヨシカワ,ナオヒデ
+ヨシカワ,ヨシコ
+ヨシダ,コウジ
+ワクイ,テツヤ
+ワタナベ,ケンタロウ
+ワタナベ,シホ
+ワタナベ,ヨシヒト
+ワタナベ,マナブ
+ハヤシ,タカシ
+ヤマダ,ノブヤ
+ワカバヤシ,サトシ
+イワムラ,ノリマサ
+ワタナベ,ノボル
+クワシマ,スグル
+オバタ,サトミ
+アナザワ,ヒカル
+ヤギ,コスケ
+アカオ,トモカズ
+シミズ,ナツコ
+サカモト,ヒデノブ
+アオキ,シゲアキ
+アズマ,コウイチ
+イイダ,エナ
+イケウチ,メバエ
+イシカワ,テツオ
+イソガイ,マコト
+イトウ,タダヒロ
+イバ,アズサ
+イワモト,シンジ
+ウエサカ,タケヒロ
+ウエノ,マモル
+ウエヒラ,ケンゴ
+ウチヤマ,ケンジ
+ウメナイ,ススム
+エムラ,タカヒロ
+オキタ,ジュンイチ
+オオクボ,ヒロシ
+オオタニ,アヤ
+オオツ,ヒロコ
+オオツカ,ヨシミ
+オカシロ,シロウ
+オダ,アツシ
+オノ,ヒロミ
+カトウ,ヨシユキ
+カネヒサ,ナオコ
+カミヤ,オサム
+カワイ,タクヨシ
+カワオカ,ヒデキ
+キタノ,ジュンイチ
+キブシ,ツヘ
+キムラ,マサタカ
+キムラ,マサコ
+クサカ,サトミ
+クバ,タカシ
+クボタ,シロウ
+クロイワ,シンジ
+クワバラ,エイジ
+コイケ,スミオ
+コイタバシ,ツカサ
+コウダ,ヒデオ
+コウダ,マサタケ
+コシムラ,アツシ
+コヤナギ,ヒサコ
+ハトリ,ユウコ
+サカウエ,サワ
+アベ,コウイチ
+サトウ,ヤスミツ
+サトウ,マユミ
+サトウ,ヨシオ
+シマダ,リエ
+イマイ,カツアキ
+スガヌマ,チヨ
+セキ,アキヒロ
+セノ,タカヤス
+アベ,マサハル
+タカスガ,マユミ
+タカスギ,ノブコ
+タカハシ,トモミ
+タカハシ,ケンタロウ
+タカハシ,アキヒト
+タカハシ,コウジ
+タカハシ,ヒサミ
+タキモト,ユウタ
+タクボ,ヨシユキ
+タケウチ,トモコ
+タケナカ,ユキヒコ
+タナカ,モトイチ
+タナカ,チズル
+タバタ,カツユキ
+タミヤ,タケシ
+タムラ,レイコ
+チュウマ,ヒロタカ
+ホンゴウ,ユウコ
+ナカオ,ノブアキ
+ナカガワ,コウイチ
+ナカゾノ,ヒデノリ
+ナカノ,ミツヒロ
+ニッタ,ハナ
+ニワ,リョウイチ
+ノジ,ヒロアキ
+ハザノ,タカシ
+ハシモト,トオル
+ハシモト,ユウコ
+ハヤシ,チオリ
+ハヤシ,トウコ
+ハラグチ,タカシ
+ハルグチ,トシオ
+ヒラデ,イサム
+ヒラノ,マサタカ
+ヒラヤマ,ユキ
+フカザワ,ヒロミ
+フクマス,カヨ
+フクモリ,マサル
+フジカワ,シゲル
+ホシノ,ノリコ
+ホソノ,アキヒト
+マツオカ,ヨシナリ
+マツムラ,ナミコ
+ミズカミ,テツロウ
+ミツイ,タイスケ
+ミノカミ,トシユキ
+ミヤモト,タツシ
+ムラカミ,ケイコ
+ヤタ,ナオコ
+ヤナギタ,ミノル
+ヤマグチ,コウジ
+ヤマシタ,ミチオ
+ヤマモト,ユウイチロ
+ヨシタケ,ヒデノリ
+ヨシムラ,エリ
+ヒグチ,タケシ
+ハシモト,アツシ
+ワタナベ,ユキ
+アキバ,タケヒコ
+アキモト,ミツヨ
+アマヤ,マサル
+アンドウ,テツロウ
+アンザワ,ノブヒロ
+アサハタ,カズヒト
+ババ,ミチヒト
+ベッショ,テルヒト
+チカモト,サオリ
+チョウ,ダイスケ
+フジヒラ,ミワコ
+フジイ,ケイコ
+フジタニ,ヨシカツ
+フカダ,マサアキ
+フルダテ,ナオキ
+フルヤマ,ヒロユキ
+ゴウダ,キヨノブ
+コイケ,ヨシユキ
+ハカマダ,コウゾウ
+ハセガワ,タカオ
+ハシモト,コウイチ
+ハッタ,ケンイチ
+ハットリ,タカヒロ
+ハヤカワ,ヒロキ
+ハヤカワ,ナルツグ
+ヒヌマ,タクヤ
+ヒロキ,トモヒデ
+ホリノウチ,ユウジ
+ホソノ,アツコ
+フジオカ,ヒデキ
+フルタ,ナルキ
+フサノ,ケン
+フシミ,オサム
+イタド,ヒトシ
+イダ,マサヒロ
+イハラ,ケイ
+イイダ,タカヒロ
+イナヤマ,ヒロカズ
+イノ,ジュンイチ
+イノウエ,メグミ
+イシダ,ヨシツグ
+イシモト,ヤスヨシ
+イシワ,ミツル
+イシワタリ,ヒロカツ
+イタクラ,ナホコ
+イトウ,タカヒロ
+イトウ,シュウイチ
+イワイ,ナナコ
+イザワ,
+ジブ,スグル
+カバヤマ,マサキ
+カイ,ユウコ
+カキヌマ,ジュン
+カキザキ,マサキ
+カクダ,シュウスケ
+カナガワ,シン
+カンベ,タケオ
+カンダ,ヤスヒト
+カサダ,ミチタカ
+カワイ,トモコ
+ササキ,イクエ
+カワセ,サホ
+キモト,ミキネ
+キタハラ,ノブオ
+キタムラ,ヨシオ
+コバヤシ,ヒロエ
+コブケ,ユウコ
+コイズミ,カナコ
+コミヤマ,マリコ
+コンノカズヒロ,ヤスヒト
+コシカワ,タカユキ
+コンノ,コウイチ
+クボ,マサノブ
+クボカワ,ナツキ
+クドウ,トモカ
+クリハラ,カツイチ
+クロギ,サエコ
+マチダ,ハルミ
+マジマ,ヤスコ
+イシズ,ノリユキ
+マカベ,ヒロヨ
+マルヤマ,ヒデアキ
+マスダ,カヨ
+マツガサキ,アキラ
+マツイ,タケシ
+マツイ,サオリ
+マツモト,ケンジ
+マワタリ,カンジ
+ミチモト,トシヒロ
+ミキ,スミコ
+ミツマ,タカノリ
+ミウラ,ケイゴ
+ミワ,マコト
+ミヤモト,カツヒサ
+ミヤモト,ヤスノブ
+ミヤモト,タケノブ
+ミヤタ,マサシ
+ムラカミ,トオル
+タハラ,ノリコ
+ミズタニ,トモカ
+モリ,ユキ
+モリグチ,マサヒコ
+モリカワ,ヒロシ
+モリモト,カズミ
+モリタ,レイコ
+ムラカミ,タツヒコ
+アデガワ,アイ
+ナガサカ,ヒカル
+ナガタ,ジュリ
+ナガタ,カツノブ
+イザワ,カオリ
+ナカミネ,マモル
+ナカムラ,ヒロノリ
+ナカムラ,タツヤ
+イモト,コウイチロウ
+ナカムラ,タケシ
+ナカオ,ユウジ
+ナカヤマ,ウシン
+ナカザワ,キヨシ
+ナミキ,ハルヨシ
+ニイミ,アキヒロ
+ニイゼキ,カオリ
+ニシデ,ヒデアキ
+ニワ,ヒデキ
+ノベ,ミサ
+オオタ,シゲアキ
+オガワ,マサヨシ
+オグス,ユウスケ
+オオモト,ショウジ
+オシマ,タカノリ
+オオタ,ケンイチ
+オオヤ,ヒミコ
+イシカワ,ヨウ
+オカダ,タケシ
+オク,フミユキ
+オクダ,マサキ
+オシクボ,ケンイチ
+オゼキ,カツヒコ
+ライ,ユウジ
+イトウ,トモヤ
+サイキ,ヒロシ
+サイトウ,タツヤ
+ヨシダ,ミチヤス
+サコ,シゲミツ
+ササジマ,ジュンヤ
+ササキ,ユキコ
+サトウ,ツグヒデ
+イワモト,カズヒコ
+サトウ,チエコ
+サワダ,ヒデヤス
+セキカワ,イズミ
+セキネ,ミツオ
+シバタ,ナオキ
+シゲハラ,シンヤ
+シマオカ,アキヒコ
+シミズ,カズヒロ
+シモ,マサアキ
+シモムラ,タカシ
+シムラ,タカヒサ
+ソメヤ,アキヒコ
+スエヨシ,ケンイチ
+スズキ,ヒデユキ
+スズキ,ナオキ
+タカダ,イチロウ
+タカハシ,
+タカセ,マナブ
+タケダ,アキラ
+タケイ,ヒサヨシ
+タケモト,ハジメ
+タマイ,トシヒコ
+タムラ,タカユキ
+タムラ,サトル
+イシカワ,ヒトシ
+タナカ,コウイチロウ
+タナカ,マサヒロ
+タニグチ,タケノリ
+タニグチ,ヒロタカ
+タニグチ,ケンジ
+タニグチ,ケン
+イシダ,アツシ
+タニシタ,フミノ
+テラニシ,ツヨシ
+トオヤマ,キョウコ
+トミタ,ミワ
+トネガワ,タク
+トヨダ,ノリコ
+トヨタ,シュウジ
+ツチヤ,ヨシコ
+イシカワ,ナオキ
+ツムラ,トシアキ
+ツノカワ,ヨシミ
+ウチダ,ヒトシ
+ウサミ,タケシ
+ワジマ,リコ
+ワタナベ,マキ
+ワタナベ,ヨウイチ
+ワタナベ,ヤヨイ
+ヤギ,ケイイチ
+ヤギ,キョウコ
+ヤクワ,ヒロフミ
+ヤマダ,ヒロキ
+ヤマダ,タカユキ
+ヤマグチ,トシユキ
+ヤマノクチ,マサコ
+ヤマシタ,コウイチ
+ヤマシタ,ナオユキ
+ヤマザキ,ヒデユキ
+ヤマザキ,ユタカ
+ヤナガワ,タツロウ
+ヤスダ,トヨアキ
+ヤスエ,トモユキ
+イソガイ,タダノブ
+ヤタガイ,エリ
+ヨシダ,リョウコ
+タカハシ,マサキ
+オカダ,シュウイチ
+アオキ,マサル
+アキバ,アキコ
+アベ,アキコ
+アマノ,マサオ
+アリモト,シュウジ
+アンドウ,ユキ
+イカワ,タイヘイ
+イシイ,ノリヒロ
+イシカワ,ナオコ
+イシズカ,ユミ
+イシバシ,シュンスケ
+イシモト,リョウスケ
+イデ,サトコ
+イチノセ,サトシ
+イナダ,マナブ
+イヌイ,ヤスヨ
+イノウエ,マミコ
+イヤマ,コウジ
+イワサキ,ミズマサ
+イワマ,カズコ
+イワマツ,オサナオ
+ウエダ,ヒロコ
+ウエノ,ヒロキ
+ウチダ,タカオ
+ウド,ケンジ
+ウメハラ,タカシ
+エグチ,トミサブ
+エノキ,ヨシコ
+エモト,ミツモト
+エモリ,セイヤ
+ナカガワ,ナオアキ
+オオタ,ヒデユキ
+オガタ,ヤスシ
+オガワ,ノブタカ
+オガワ,レイコ
+オクイ,タクジ
+オクムラ,モトコ
+オオタニ,テルアキ
+オツトモ,ユキコ
+オニザワ,シゲキ
+オノ,ノリアキ
+オバナ,セイイチロウ
+オマガリ,マサヤ
+カキザワ,テツヒロ
+カケヒ,エリコ
+カサハラ,マドカ
+カジ,オサム
+カジタ,タカオ
+カジタ,タカオ
+カジヤマ,ミノル
+カトウ,ヨシノブ
+カナダ,ケイ
+カネコ,ノブカツ
+カネコ,リョウタ
+イタノ,ケンスケ
+ナガツマ,シュウヘイ
+カノウ,セイジ
+カマエ,ナオキ
+カワイ,テツオ
+カワマタ,ヒロキ
+カンノ,マイコ
+キウチ,イズミ
+キシ,ヨウコ
+キタガワ,トモノブ
+キノシタ,ナリトシ
+キョウガク,マコト
+クボ,トモノリ
+クボタ,タクヤ
+クボタ,シンペイ
+クリハラ,リエ
+クリヤマ,ケイコ
+イシガキ,トシフサ
+クロイ,イツロウ
+コウサキ,コウイチ
+コウダ,アツシ
+コバヤシ,ノブアキ
+コバヤシ,テツヤ
+コバヤシ,ユウスケ
+コバヤシ,コウジ
+イノウエ,ノブアキ
+サイホ,ナルヒロ
+サカガワ,ヨウヘイ
+カワムラ,ユタカ
+ササオカ,ヨウコ
+ササキ,ノボル
+サトウ,ノリカズ
+サトウ,マナブ
+サナダ,オサム
+サルヤマ,ケンイチ
+シオツ,エイスケ
+シオノヤ,シノブ
+シオヤマ,ノボル
+シギハラ,ヒロユキ
+シシド,クニオ
+シノザキ,カズヒト
+シバタ,ミノル
+シミズ,
+ショウノ,シンイチ
+シラキ,ヒロユキ
+スギオカ,ミツカズ
+スギハラ,キヨシゲ
+スズキ,ヒサテル
+スズキ,シゲユキ
+スミヤマ,セイジ
+セッタ,マサキ
+イシワタ,ダイジュ
+センゴク,ミノル
+タカオカ,ユミ
+タカザワ,タカシゲ
+タカハシ,アヤコ
+タカムラ,タカユキ
+タキト,ヒデキ
+タナカ,カズ
+タナカ,アキコ
+イトウ,ジュンジ
+タナベ,ケンジ
+タニグチ,マナブ
+チャワンヤ,ヨシハル
+テラサカ,ヒロキ
+トコロ,ジュンイチ
+ナカイ,タカシ
+ナカオ,シンジ
+ナガオカ,ミホ
+ナカガワ,モトアキ
+ナカジマ,スヒチ
+ナガセ,タツヤ
+ナカノ,セイタ
+ナカノ,ジ
+ナガノ,ユウコ
+イケダ,アキコ
+ナカムラ,マリコ
+ナカヤマ,カツトシ
+ニオ,ジュンイチ
+ニシオ,ノリコ
+ニシカイ,トシミツ
+ニシザカ,ヨシコ
+ニシダ,ダイスケ
+ニシダ,タカシ
+イイジマ,マサキ
+ニシハラ,カズユキ
+ニシムラ,カズヤ
+ネロメ,ヒロシ
+ノジマ,サネヒロ
+ノナカ,ダイスケ
+ハシバ,ノリカズ
+ハチヤ,タカヒロ
+ハットリ,コ
+イイダ,ヒロユキ
+ハブ,マコト
+ハヤカワ,テツロウ
+ハヤシ,ナオコ
+ハヤシマ,ヒデシ
+ハラ,タクミ
+ヒガシダ,マサル
+セキグチ,キョウイチ
+ヒライ,カオリ
+ヒロスエ,ヒロユキ
+ヒロハタ,タクヤ
+フクシマ,ミツオ
+フジオ,テンペイ
+フジタ,ユウイチロウ
+フジマキ,ユキヒコ
+フジワラ,トオル
+フルイチ,ユウスケ
+ホサカ,タケシ
+ホシノ,コウジ
+ホリ,ユキコ
+ホリモト,ユウジ
+ホンマ,ユキノブ
+マエカワ,タケハル
+マエダ,タカヒト
+マエダ,ミキオ
+マエダ,タツヤ
+マサイ,クミ
+マツイ,ヒデノブ
+マツザワ,チカラ
+マツダ,タカユキ
+マツトモ,マサナオ
+マツナガ,ケンジ
+マツモト,ヨウスケ
+ミズグチ,トモタカ
+ミヤモト,マユミ
+ミヤモト,ヤスジ
+ムラカミ,カズヒデ
+ムラカミ,マサヒロ
+ムラナカ,サトシ
+モチズキ,タクヤ
+モトクラ,トモコ
+モリ,クニカズ
+モリヤ,ホマレ
+ヤスイ,タイゲン
+ヤスダ,ミキコ
+ヤスダ,キヨヒト
+ヤタ,カズヒロ
+ヤタキ,ノブオ
+ヤチ,フミヒコ
+ヤノ,ヒロシ
+ヤマイズミ,ヨシアキ
+ヤマオカ,マサキ
+ヤマグチ,ヤスヒロ
+ヤマグチ,ヨシノリ
+ヤマザキ,アキオ
+ヤマザキ,ナナ
+ヤマシタ,マイコ
+ヤマモト,ケン
+ヨコゼキ,タイチ
+ヨシダ,ナオト
+ヨシノ,ヤスオ
+ヨシミ,タカシ
+ヨダ,タカヒロ
+ヨダ,ヒロアキ
+ロジ,フミアキ
+ワダ,マミ
+ワタナベ,ユキオ
+ワタナベ,ヒデキ
+ワタナベ,カズオ
+ワタベ,タカシ
+カノウ,タカトシ
+ニッタ,オサム
+アオキ,シュウ
+アオキ,ハナコ
+アオヤマ,マサアキ
+アオヤマ,ヌイ
+アキバ,ケイイチ
+アサダ,マリコ
+アダチ,トモミ
+アダチ,ユウコ
+アトベ,ハルト
+アベ,カツヒコ
+アベ,ノブオ
+アベ,マユミ
+アマノ,マキ
+アマノ,ジュンイチロ
+アラカワ,リョウスケ
+アリタ,ヨウヘイ
+アリトモ,ヒロシ
+アンザイ,ヒデアキ
+イトウ,ヨウジ
+アンドウ,リエコ
+イガラシ,ミオコ
+イケダ,イズミ
+タカハシ,アツオ
+イシバシ,タダシ
+イシムラ,ユミコ
+イシモト,マリコ
+イチイ,ケイコ
+イチカワ,ヒロト
+イチカワ,マキコ
+イチノセ,キヨシ
+イトウ,アキヒロ
+イトウ,マサル
+イトウ,リサ
+イナオカ,マサフミ
+イナバ,ヒロタケ
+イヌズカ,マユミ
+イノウエ,ヒデオミ
+イノカワ,シュンスケ
+イマイ,タケシ
+イマシュク,リョウ
+イワイ,トモヒコ
+イワシマ,シュウイチ
+ウエゾノ,メグミ
+ウエダ,タカヒロ
+ウエハラ,タカユキ
+ウエハラ,モトコ
+カキタ,ケン
+ウサミ,ヒジリ
+ウチダ,ヒロキ
+ウチダ,アヤコ
+ウチボリ,ミサト
+ウメガイ,カズエ
+ウメツ,アキヒコ
+ウメノ,タケシ
+ウラカワ,ユキ
+ウラベ,シゲヒサ
+エグチ,タダシ
+エズミ,イクヨ
+エノモト,タロウ
+イマニシ,ヒロユキ
+エノモト,フミコ
+エンド,ヨシキ
+オイカワ,マサキ
+オイカワ,ユキフミ
+オオイ,ヨウジ
+オオイシ,マサハル
+オオタ,フミカズ
+オオツカ,シンスケ
+オオニシ,カツアキ
+オオニシ,ミチエ
+オカダ,ヤスオ
+オカダ,マサル
+オカノ,ユキ
+オカベ,ヨシヒロ
+オカベ,ヒデアキ
+オカムラ,リョウ
+オカモト,ミキ
+オカモト,ミユキ
+オガワ,タエコ
+オガワ,トオル
+オクダ,ケン
+オクダ,テツヤ
+オザキ,マミコ
+オノ,ナオコ
+オオヤマ,タカシ
+カイズカ,トシフミ
+カガミ,エリカ
+カキタ,カオル
+カク,コウジ
+カサイ,ユキノリ
+カジイ,アカネ
+カジタ,ナオヤ
+カタエ,ユウジン
+カタヤマ,ミツコ
+カツ,トオル
+カトウ,タク
+カトウ,ダイスケ
+カミ,アツコ
+カネコ,クニヒト
+カマダ,カズヒロ
+カミ,ヨシテル
+カミヒサ,ユウジ
+カミモト,カオリ
+カミヤ,カズオ
+カミヤマ,マキ
+カワカミ,マスミ
+カワサキ,ヒトシ
+カワセ,ヒロカズ
+カワハタ,タケチカ
+カワハラ,ジュンコ
+カワムラ,カズヒロ
+カワモト,ケイスケ
+カワモト,ヒロシ
+カワモト,ミチオ
+カンダ,タケシ
+キクチ,エリ
+キタガワ,マサブミ
+キタナガ,サカエ
+キタノ,シンゴ
+キタムラ,タツヤ
+キタモト,ツトム
+キノエ,ヒロシ
+キブセ,タカエ
+キムラ,ジュンイチ
+キムラ,トモキ
+キモト,ヒデユキ
+キモト,ユリ
+ギョウブ,ヒロコ
+クニ,ミホ
+クニマサ,ミエコ
+クマサカ,タイセツ
+クラシゲ,アキオ
+クリハラ,タケシ
+コイケ,メグミ
+コイケダ,タツロウ
+コイズミ,ヒロシ
+コイヌマ,ミチコ
+コツカ,カズアキ
+コガ,シゲキ
+コシモト,ヒロミツ
+コダマ,タイチロウ
+コダマ,マサカズ
+ゴトウ,アリヨシ
+コニシ,トモコ
+コバヤシ,ヨシジ
+コバヤシ,マサキ
+コバヤシ,ヤスタカ
+コバヤシ,ヒデヒト
+コマキ,タツヤ
+コマバ,カズノリ
+コミヤ,カツヒコ
+コヤマ,マサノリ
+コヤマ,ヤスノリ
+サイキ,トモヒサ
+サイゴウ,ミワコ
+サイトウ,ケンジ
+サイトウ,テツオ
+サイトウ,イサム
+イガラシ,ショウゴ
+サエグサ,ナミ
+サカイ,アキラ
+サカガミ,イチロウ
+サカネ,ダイキ
+サカモト,トモノリ
+サカモト,マコト
+サクライ,ヒロミ
+サクラダ,リョウジ
+サコン,マサヒロ
+ササキ,ナナエ
+ササハラ,ワカコ
+サトウ,ゲン
+サトウ,ジュンイチ
+サトウ,ケンゴ
+サトウ,ナオト
+サノ,ヒデアキ
+サワ,ケンゴ
+シブヤ,タダシ
+シブヤ,ヒデオ
+シマダ,マナエ
+シマダ,ヒデタケ
+シマダ,ヤヨイ
+シミズ,ユキオ
+シミズ,ダイスケ
+シミズ,ヒデキ
+シミズ,アキノ
+シミズ,ナオユキ
+イノウエ,ケイスケ
+シモ,サトシ
+ショウダ,シゲノリ
+ジンノ,マコト
+ジンノ,リュウジ
+シンマチ,タケシ
+スギイ,マサナオ
+スギオカ,タカヒコ
+スギモト,ミチノリ
+スズキ,カズヒラ
+スズキ,ダイスケ
+スズキ,カズヒロ
+スズキ,ヒロシゲ
+スズキ,ユウイチロウ
+セオ,ノリコ
+セキ,ソウ
+イシハマ,ケント
+ソノダ,コウタロウ
+タイ,ヨシアキ
+タカイワ,キヨシ
+タカギ,ユウジ
+タカハシ,マキコ
+タカハシ,ノブユキ
+タカハシ,マキコ
+タカハシ,タケシ
+タカハシ,アキヒコ
+タカムク,ケンシ
+タグチ,ヒロコ
+タケウチ,ヨシコ
+タケカワ,マサシ
+タケワ,シンジ
+タダマツ,ヒデキ
+タタラ,コウジ
+タナカ,タカシ
+タニモト,ユウジ
+タネムラ,アキフミ
+タハラ,サトシ
+タムラ,ヒロシ
+ダン,タカユキ
+イイダ,ムネノリ
+チバ,エイスケ
+チョウトク,ヒデユキ
+ツカハラ,ヒロユキ
+ツツミ,マコト
+ツモリ,マリコ
+テラシタ,ユウイチロウ
+ドイ,ユタカ
+ドイ,ヨシエ
+ドイ,ヨウイチ
+トシマ,コウヘイ
+ナイトウ,コウジ
+ナカイ,マサヒロ
+ナカイ,シュウヘイ
+ナカオ,キホコ
+ナカガワ,チアキ
+ナガサキ,カオリ
+ナカジマ,タカフミ
+ナカジマ,ノゾム
+ナカシマ,サナエ
+ナカダ,キヨコ
+ナカハラ,ミナコ
+ナカムラ,ジュンゾウ
+ナカムラ,シュウタロウ
+ナカムラ,ユリ
+ナカムラ,ソウイチロウ
+ナカムラ,ミツヒロ
+ナカムラ,カツヒコ
+ナカムラ,ヒデヤ
+ホシノ,トシハル
+ナカモト,アキコ
+イケダ,マサタカ
+ナカモリ,トオル
+ナガヨシ,タカマサ
+ナデハラ,ヒロシ
+ナナモリ,ツトム
+ナラサカ,ヒロシ
+ナンバ,ユキ
+ニシ,ツネアキ
+ニシカワ,ヒデアキ
+ニシダ,ケンシ
+ニシムラ,ユキ
+ノグチ,サトシ
+ノダ,ケンイチ
+ノナミ,スグル
+ノノイチヤ,マスオ
+ノムラ,トモヒコ
+ノモト,ユウイチ
+ハガヤ,ナオユキ
+ハギワラ,ヤスユキ
+ハク,トモヒト
+ハシ,タカシ
+ハシズメ,ユウコ
+ハシバ,マコト
+ハセベ,タカマサ
+ハタ,マサミチ
+ハタエ,ミキト
+ハタノ,アキヨシ
+ハチノ,ススム
+ハットリ,ユウ
+ハヤシ,レイコ
+ハヤシダ,アキラ
+ハヤフネ,ヨシアキ
+ハラ,タツジ
+ハラダ,クミコ
+ハラダ,マサコ
+イノグチ,カツフミ
+ハラダ,タカユキ
+ヒガシヤマ,ヨウコ
+ヒグチ,ヒデキ
+ヒゴ,ヒロシ
+ヒダノ,トモヤ
+ヒマキ,トモノリ
+クラシゲ,カズユキ
+イシハラ,レイコ
+ヒラタ,シゲオ
+ヒロサワ,ユキコ
+ヒロタ,ケイコ
+フカサワ,ミキコ
+フカザワ,リエ
+フカザワ,タカシ
+フクムロ,マサトモ
+フジイ,テツヤ
+イトウ,ケイコ
+フジイ,ミオコ
+フジナガ,ケイジ
+フジナガ,フミコ
+フジワラ,ノリヒロ
+フジワラ,リエ
+フジワラ,ナオユキ
+フタツギ,ツヨシ
+フタツモリ,シズカ
+フルハタ,ノブアキ
+フルヤ,マリコ
+ヘンミ,マサル
+ホシ,マイコ
+ホシノ,カツアキ
+ホリ,キミヒロ
+ホリエ,シンジ
+ホリオカ,アツコ
+ホリカワ,トモヒロ
+マエフネ,ナミコ
+マキノ,ヤスノリ
+マスダ,オクト
+マツウラ,タケシ
+マツシタ,アキシ
+マツモト,ヒデタカ
+イグチ,タカヒロ
+マツヤマ,マサヒロ
+マナベ,チノ
+マルヤマ,ナオユキ
+ミウラ,ミチル
+ミキ,タカユキ
+ミツハシ,エイイチ
+ミツベ,マサト
+ミトベ,ヒサヤ
+チョウトク,タマキ
+イケフジ,ノブヨシ
+ミヤザキ,マサハル
+ミヤザキ,アキラ
+ミヤシタ,ヨウコ
+ミヤタ,タカシ
+ムコウヤマ,ミチヒデ
+ムライ,ミホ
+ムラカミ,マミ
+ムラカミ,ミツアキ
+ムラタ,トモユキ
+ムラマツ,マサユキ
+モトキ,ジュンタ
+モトヨシ,セイイチ
+モミヤマ,エイジ
+モリ,タカシ
+モリ,タケヤ
+モリウエ,ヨシタカ
+イノウエ,アキノリ
+モリウチ,シンタロウ
+モリタ,ユウキ
+ヤギサワ,カズミ
+ヤシマ,コウジ
+ヤスダ,フミヒコ
+ヤノ,ミキ
+ヤノ,タダタカ
+ヤマグチ,ジュン
+ヤマサキ,フミヒコ
+ヤマザキ,ノブヒコ
+ヤマシタ,ケイジ
+ヤマシタ,アツシ
+ヤマダ,タツオ
+ヤマナ,カナ
+ヤマミチ,ケイスケ
+イナカ,ゲンタ
+ヤマモト,コウジ
+ヤマモト,タクヤ
+ヤマモト,ヒデオ
+ヤマモト,ムネタカ
+ユバ,ユタカ
+ヨコタニ,マコト
+ヨコヤマ,ヨシオ
+ヨシダ,カズヒロ
+ヨシダ,トシカズ
+イワサキ,トシカズ
+ヨシダ,リョウ
+ヨダ,エミ
+ワカマツ,ミチエ
+ワサ,リョウコ
+ワダ,カオル
+ワタナベ,ケイゾウ
+イワクラ,エイイチ
+ワタナベ,ヒデユキ
+ワタナベ,カズミネ
+ワタナベ,ショウタロウ
+ワタナベ,ユキ
+ワタナベ,シゲル
+ワタナベ,ヒロユキ
+ワタナベ,キヨカズ
+ワタナベ,トシエ
+オオイ,ノブヒロ
+イイダ,ユキコ
+ムカイ,タカシ
+フミハラ,カオリ
+カワゴエ,マサハル
+クロカワ,ヒロミ
+コウダ,サトル
+フジタ,ユウコ
+コバヤシ,タケシ
+ハマムラ,カヨ
+イワセ,ヤスヒロ
+タケダ,マサル
+オガワ,ヒロアキ
+ミズタ,サトル
+イイダ,アツシ
+アイハラ,ヤスコ
+アオウ,トシキ
+アオキ,シンコウ
+アオバ,ヒロヨシ
+アキモト,ススム
+アサイ,ユウコ
+イシヤマ,シュンスケ
+アサオ,エミコ
+アサダ,トシキ
+アサダ,ケンタロウ
+アサノ,フジオ
+アサノ,トモヒコ
+アザミ,トシユキ
+アスマ,シュウヘイ
+アソウ,ユカ
+アダチ,キョウイチ
+アトミ,ノリヒロ
+アナミ,ヤスヒサ
+アベ,マサオミ
+アベ,マコト
+アベ,マコト
+アマノ,マサトシ
+アヤベ,タロウ
+タケキタ,マナブ
+アライ,マキ
+イツノ,ミキオ
+アリカワ,ヨシノブ
+アリタ,コウイチ
+アンジュ,ツヨシ
+アンドウ,マサキ
+アンドウ,リュウタ
+イチノセ,コズエ
+イイヌマ,ヒロユキ
+イウエ,ヨシアキ
+イガラシ,アキコ
+イケウチ,オリカ
+イケガミ,ミノル
+イケダ,タケシ
+イリタ,ヤスアキ
+イケダ,シュウイチ
+イケダ,ショウイチ
+イケダ,ジロウ
+イシイ,ジュンイチ
+イシイ,トモコ
+イシイ,ナオミ
+イシオカ,シンイチ
+イマイ,タケシ
+イシカワ,リョウヘイ
+イシカワ,トモノブ
+イシグロ,ユキヒロ
+イシダ,タツユキ
+イセキ,タケシ
+イチキ,マサト
+イチノセ,トモヒロ
+イチノミヤ,フミタケ
+イトウ,シンイチ
+イトウ,ノリコ
+イナダ,ヨシタカ
+イナバ,セイイチロウ
+イハラ,キヨタカ
+イノウエ,オサム
+イノウエ,ノリコ
+イノウエ,トモユキ
+イマイズミ,アツシ
+イマ,サトコ
+イマダ,ミオ
+イマズ,ツヨシ
+イマムラ,ミツトシ
+イリタニ,タクジ
+イワキ,タツヤ
+イワサキ,マリ
+イワサキ,マナ
+イワスギ,ミカ
+イワハシ,イチロウ
+イワブチ,ナホ
+イワホリ,アキヒコ
+ウエダ,ノブエ
+ウエマツ,タカシ
+ウスイ,トモイチ
+ウスイ,マサヒロ
+ウチダ,カオリ
+ウツミ,マキコ
+ウメダ,ヒデノブ
+ウラノ,ヤスヒロ
+エガワ,タケシ
+エザキ,アツコ
+エトウ,ケンジ
+エノモト,ハルヒラ
+エノモト,アキラ
+エマ,アキコ
+エンド,ヒサノリ
+エンド,ヨシマサ
+オイタニ,ユキ
+オウ,ヨシヒロ
+オオイ,カオル
+オオエ,アキヒロ
+オキ,アヤ
+オオクボ,フミノリ
+オオサワ,イサオ
+オオサワ,ヒサシ
+イワキリ,ワタル
+オオスミ,モトヒコ
+オオタ,ミツヒロ
+オオタ,タカシ
+オオツカ,アキノリ
+オオツカ,コウイチ
+オオツカ,トモヒロ
+オオツキ,ジュン
+オナカ,ダイスケ
+オオニシ,ヨウコ
+オオボ,マサコ
+オマ,キヨシ
+オムラ,シノブ
+オムラ,クミ
+イシイ,ナオコ
+オオモリ,ヨシヒロ
+オオモリ,ヒロカズ
+オオモリ,ノブヒサ
+オオワダ,タカフミ
+オカイ,レイ
+オカザキ,トモミチ
+オカザキ,カズヒト
+イケダ,アキオ
+オカノ,エイイチ
+オカベ,ウララ
+オカモト,エツコ
+オガワ,ユウコ
+オガワ,アキラ
+オガワ,リョウイチ
+オガワ,キヨノ
+オオガワラ,クニハル
+オクハラ,サトシ
+オクヤマ,マコ
+オグラ,ヤスハル
+キタムラ,マリコ
+オザワ,シゲミツ
+オチ,モトヒロ
+オノ,タカシ
+オオノ,チカ
+オノデラ,ケンシ
+オバタ,カツヨシ
+オオヤマ,チズル
+オンタ,メグミ
+イワタ,タケシ
+カイブキ,ユミ
+カキモト,マチコ
+カザグチ,マサノリ
+カサザキ,ヨシヒロ
+カジ,サオリ
+カジムラ,ハルナ
+カシワイ,ノリコ
+カシワバラ,ナオヤ
+カタクラ,ヨシユキ
+カタヤマ,マイコ
+カツノ,タカノリ
+カド,チエコ
+カトウ,ノブユキ
+イソノ,ミドリ
+カトウ,タカシ
+カトウ,シホ
+カトウ,アキヨシ
+カトリ,ケンジ
+カナサカ,モトヒロ
+カナザワ,ミチコ
+カナヤマ,カナコ
+カネコ,ユキオ
+カネコ,トモコ
+カネダ,モトキ
+ガミ,ヒロシ
+カメオカ,マナミ
+カラサワ,アキテル
+カラシマ,キヨフミ
+カルイシ,イズミ
+カワイ,ナオユキ
+カワイ,タカオミ
+カワカミ,マサミ
+カワカミ,ケンタ
+カワズ,アツシ
+カワナカ,エイスケ
+カワノ,タカシ
+カワバタ,ナオヤ
+カワベ,シホ
+カワミ,シンジ
+カンバシ,ミチコ
+カンバラ,アツシ
+キシイ,ヤスエ
+キシダ,アキヒロ
+キタガワ,マサキ
+キタシロ,カズヨシ
+キタハラ,ヨシカズ
+キタムラ,ヨウイチ
+キド,チエコ
+キノシタ,ワカコ
+エダ,エイ
+キムラ,ナツコ
+キムラ,シゲル
+キムラ,アツシ
+キヨナガ,ノリミツ
+キヨミヤ,タカオ
+キリヤ,マサキ
+イトウ,トモヤ
+クシダ,キョウコ
+クジラオカ,ダイキ
+クニモト,タケトシ
+クヌギ,トオル
+クボ,アツシ
+クボサワ,マサキ
+クボタ,タカヒロ
+クメノ,ノブオ
+イシグロ,タロウ
+クラ,トモアキ
+クラサワ,フミハル
+クラタ,リョウコ
+クロカワ,タカヒサ
+クロス,マミコ
+クロヤナギ,サンシロウ
+イナトミ,ダイスケ
+コイケ,マユコ
+コイケ,ワタル
+コイシカワ,ヒデユキ
+コイズミ,テルミ
+コイズミ,ノリマサ
+コイデ,マドカ
+コズマ,マイコ
+コンノ,アツコ
+コヤマ,ダイキ
+コリ,タカヒデ
+カツカワ,セイイチロウ
+コガノ,アキフミ
+コシイ,トモヒロ
+コシマル,ダイトク
+コスギ,マサシ
+コセキ,マナブ
+コタニ,ヤイチ
+コダマ,センジ
+コニシ,タミコ
+コニシ,タダシ
+コバ,トモキ
+コバタケ,ケイイチ
+コバヤシ,アキコ
+コバヤシ,ヤスユキ
+コバヤシ,ヨウジ
+コバヤシ,マサヤ
+コバヤシ,ヨシオ
+ナカムラ,ヨウヘイ
+コバヤシ,ヒロコ
+コボリ,クニヒコ
+コマツ,ツヨシ
+コヤマ,ツギオ
+コンノ,タカコ
+サイトウ,トモエ
+サイトウ,アツコ
+サイトウ,ヒロユキ
+サイトウ,ヒロユキ
+イトウ,フキコ
+サカイ,チヒロ
+サカイ,キヨシ
+サカイ,ミネオ
+サカキバラ,トシキ
+サカグチ,イチロウ
+イワサキ,レイコ
+サカモト,ノリオ
+サカモト,ヨウジ
+サカモト,ジュンコ
+ササキ,カツトシ
+ササキ,コサク
+ササキ,ジュンコ
+ササキ,レナ
+イマハシ,ヒロミ
+サツミ,タカユキ
+サトウ,シンイチロウ
+サトウ,ユウジ
+サトウ,トモクニ
+サトウ,マリコ
+サトウ,コウキ
+サトウ,ユミコ
+サノ,シノ
+イシグロ,ヒデタカ
+サワヤナギ,ミツヒロ
+シオタ,ケイスケ
+シキ,ユウコ
+シゲオカ,レイ
+シゲタ,マモル
+シシド,リカ
+シナダ,ヨシコ
+イデ,ヨシフミ
+シバタ,ヨウコ
+シバタ,アリヒト
+シバタ,リョウ
+シバタ,シュウイチ
+シマズ,モナミ
+シマダ,ヨシサダ
+シマズ,ツネオ
+シミズ,ヒデタダ
+シミズ,クニエ
+シモハシ,ヒロノブ
+シモヤマ,カオリ
+ジョウ,タカシ
+イトウ,キョウコ
+スガタ,ノブエ
+スガヤ,アキヒロ
+スギタ,タカヒロ
+スギナカ,エイジ
+スギモト,フミオ
+スギヤマ,カズナ
+スギヤマ,ユウジ
+スギヤマ,トオル
+スゲノ,ゴウ
+スズキ,コウジ
+スズキ,マサヒロ
+スズキ,ヒデアキ
+スズキ,コウジ
+スズキ,ユウコ
+イワサキ,トモフミ
+スズキ,ヨウコ
+スズキ,コウジ
+イチカワ,リカ
+セキ,マサヨシ
+セキグチ,ケイコ
+セキヤ,ケンジ
+セコ,ケンタロウ
+セラ,ヒロユキ
+ソガ,ユカ
+ソガ,エイコ
+イトウ,アキラ
+カミヤ,カスミ
+ソンク,トシカズ
+タカキ,ユミコ
+タカギ,ヨシハル
+タカサキ,ヤスオ
+イケダ,ヒトシ
+タカシマ,ヤスヒト
+タカノ,ケンイチ
+タカノ,ヒデキ
+タカノ,マキコ
+タカノ,ナオヒロ
+タカノ,ヨシヒサ
+タカハシ,ヨシオ
+タカハシ,コウヘイ
+タカハシ,コウイチロウ
+タカハシ,ガク
+タカハシ,カナ
+タカハシ,タカノリ
+タカマツ,ヒロシ
+タガミ,ヒトシ
+タカミザワ,リュウキ
+タカラダ,シンイチ
+タキカワ,エミコ
+タキザワ,イワオ
+イイノ,ユミ
+タケイ,ヨシヒロ
+タケウチ,シンイチロウ
+タケウチ,タカキヨ
+タケキタ,マキ
+タケナカ,フミオ
+タケノウチ,リョウジ
+タケハナ,フミ
+イトウ,トクコ
+タケモト,マサル
+タケモト,カズヒコ
+タゴ,ススム
+タサカ,ヨシノブ
+タジマ,ヒロカズ
+タシロ,ヨシコ
+タシロ,ゴウ
+タタラ,サナエ
+タチバナ,アヤコ
+イチムラ,サトシ
+タテイシ,ユキ
+タテノ,ヒサシ
+タテノ,ダイゾ
+タナカ,ケンイチロ
+タナカ,マサヒロ
+タナカ,ナオコ
+タナカ,トオル
+タナカ,キョウコ
+タナカ,ヤスシ
+タナカ,ヨウコ
+ガミ,マコト
+タナミ,ツネオ
+タニ,マミ
+タニグチ,ユミコ
+ナカオカ,ユキ
+タニザワ,ヨシノリ
+タニダ,ノブユキ
+タニモト,アキミ
+タノオカ,ミエコ
+タバタ,マサキ
+タハラ,ミカコ
+タムラ,ユキヒロ
+チカザワ,ノリヒト
+チノ,タカノブ
+チハラ,ヒサノ
+チュウ,サヤカ
+チュウマ,ケイイチ
+ツカダ,ヒデタケ
+ツカモト,ノブタカ
+ツカモト,ユタカ
+ツダ,トモノリ
+ツチダ,マサオ
+ツチヤ,セレナ
+ツチヤ,アキ
+ツネキ,クミコ
+デミセ,タカシ
+テラオカ,カナコ
+イズミ,アツシ
+トウ,セイジ
+トジ,マサコ
+トシオカ,ミスズ
+トダ,ハナエ
+トビナイ,アキコ
+トモイ,ミネキ
+トヤマ,アイコ
+トヨシマ,コウイチ
+トヨダ,タクヤ
+トヨハマ,トシオ
+ナガエ,ケンジ
+ナガエ,シホ
+ナカオ,トモヒデ
+ナカオ,ケンタロウ
+ナカジマ,トモコ
+ナカジマ,ヨシタカ
+ナカジマ,ツヨシ
+ナガシマ,マリ
+ナガセ,コウイチロウ
+ナカゾノ,ジュンコ
+ナカタ,アサコ
+ナガタ,ヨシヒコ
+ナガト,マリコ
+ナカニシ,ゲン
+ナカノ,ヨシコ
+ナガノ,ヒロキ
+ナガノ,タカシ
+ナガノ,テツヤ
+ナガハラ,ヨシユキ
+ナカヒガシ,メグミ
+ナカムラ,キフミ
+イヌズカ,トモカズ
+ナカムラ,フミキ
+ナカムラ,ヒトシ
+ナカムラ,ミホ
+ナカムラ,マサカツ
+ナカヤ,ユタカ
+ナカヤ,ケイ
+ナラサキ,ノブナリ
+ナリタ,リュウタ
+ナリタ,ヨシコ
+ニイダ,トモアキ
+ニシカワ,イワオ
+ニシムラ,チギリ
+ニシムラ,タイイチ
+ニシムラ,カツミ
+ニシヤマ,トオル
+ニシヤマ,ノリマサ
+ニムラ,ヒロユキ
+ニワ,ユキエ
+ヌマタ,ナオコ
+ヌマタ,タカヒロ
+ヌマダ,ツヨシ
+ネギシ,イサオ
+ノザキ,タカナオ
+ノガミ,ユカ
+ノダ,タツヤ
+ノハラ,ツヨシ
+ノブハラ,ユウコ
+ハガ,マサト
+ハギワラ,タダカズ
+ハギワラ,カツラ
+ハシズメ,タカシ
+ハシモト,タカユキ
+ハシモト,ソヨカ
+ハシモト,アキラ
+ハセガワ,マコト
+ハセガワ,マユミ
+ハセガワ,カズタカ
+ハセベ,ヨウヘイ
+ハタ,マサヒロ
+ハタケヤマ,ハズキ
+ハタナカ,イクゾウ
+ハタノ,アツヨ
+ハットリ,アキヨシ
+ハナザキ,タツヤ
+ハナブサ,オサム
+ハナムラ,ゴウ
+ババ,アキコ
+ハマサキ,ヨシユキ
+ハマダ,ツグキ
+ハヤシ,マナブ
+ハヤシ,タケヒロ
+ハヤシ,マコト
+ハヤシ,リョウ
+ハラ,マサヒデ
+ハラシマ,オサム
+ハラダ,ナオヤ
+ハラダ,リエ
+ハルタニ,タカヒロ
+ヒガシノ,マキ
+ヒガシヤマ,ユウ
+ヒグチ,シゲミツ
+イシハラ,タケヨシ
+ヒジカタ,ヒロアキ
+ヒビ,タツト
+ヒョウエ,トモヒロ
+ヒライ,ヒデノリ
+ヒラカワ,ジュンヤ
+ヒラク,シゲキ
+ヒラサワ,ケンジ
+イノハラ,タクヒロ
+ヒラタ,クニツグ
+ヒラヌマ,カズオ
+ヒラノ,タロウ
+ヒラヤマ,シゲル
+ヒロウチ,レイ
+ヒロオカ,ユカコ
+ヒロカワ,ケンタロウ
+フクイ,マサキ
+フクダ,タカヒロ
+フクダ,ススム
+コリ,キョウコ
+フジイ,ジュンイチ
+フジイ,ダイゾ
+イデ,チエコ
+フジイ,ヒロカズ
+フジオ,タカユキ
+フジオカ,ケンイチ
+フジクラ,キクコ
+フジサワ,コウジ
+フジサワ,ケンタロウ
+フジシゲ,ケイイチ
+フジタ,ケンイチ
+イノウエ,ノリオ
+フジト,ユカ
+フジナガ,ナガマサ
+フジワラ,トモハル
+フジワラ,トシキ
+フセ,カオル
+フルカワ,マサミツ
+フルカワ,ユウイチ
+イシイ,ダイスケ
+フルサワ,ヒロキ
+フルタ,コウイチ
+フルタ,ヨシアキ
+フルタ,ナオコ
+フワ,ミオ
+ホシ,マユミ
+ホソダ,ケイスケ
+イシイ,ヒロミチ
+ホリカワ,ナオコ
+ホリコシ,ヒロアキ
+ホンダ,ノボル
+マエカワ,ルミ
+マエダ,ミナコ
+マエダ,タロウ
+マエダ,タカシ
+マエノ,サトシ
+マキ,ナミ
+マキゾノ,サヤカ
+マキタ,カツユキ
+マキノ,ムネキ
+マサキ,ユズル
+マスザキ,ヨシコ
+マスダ,ユウスケ
+マスブチ,カズヒロ
+マチダ,ミユキ
+マツウラ,エリコ
+マツカワ,モトヨ
+マツザキ,ダイスケ
+マツザキ,マキ
+マツシタ,コズエ
+マツシマ,ヒデオ
+マツダ,シゲユキ
+マツダ,タカシ
+マツダ,アユミ
+マツナガ,タカシ
+マツナミ,コウジ
+マツバラ,ノリフミ
+マツバラ,サトミ
+マツミヤ,ケンイチ
+マツモト,マコト
+マツモト,カズヒデ
+マツモト,タケフミ
+マツモト,ユウスケ
+マツモト,ヒロコ
+マツヤマ,チズコ
+マナベ,リョウスケ
+マルヤマ,マサキ
+マルヤマ,ヒロキ
+ミウラ,ヤスミツ
+ミクニ,フミナリ
+ミズカミ,ヒデキ
+ミツハシ,ノリヨシ
+ミナト,ヒロユキ
+ミナミ,タカユキ
+ミフネ,ヨシヒロ
+ミヤガワ,マサシ
+ミヤサカ,シノブ
+ミヤザワ,ジュン
+ムラオ,マサコ
+ムラカミ,マサミ
+ムラタ,ケンスケ
+ムラマツ,ノブユキ
+ムラヤマ,トシオ
+ムラヤマ,カズアキ
+メグロ,トモヒコ
+モチズキ,コウイチ
+モトヨシ,マコト
+モモズ,ユキコ
+モリ,マサキ
+モリ,ヤスタカ
+モリ,ミホ
+モリ,タマヨ
+モリタ,ケンジ
+モリタ,ケンイチロ
+モリノ,ミチオ
+モリモト,タカシ
+モリモト,ユキコ
+モリヤマ,カズユキ
+モリワキ,フミアキ
+ヤギ,ケイスケ
+ヤギ,ユタカ
+ヤクシジ,オサム
+ヤコ,ツヨシ
+ヤザワ,ケンイチ
+ヤスマ,ケンジロウ
+ヤトゴ,アイ
+ガン,ハナエ
+ヤナブ,サトシ
+ヤノ,シュウコウ
+ヤブタ,ヒロシ
+ヤマウチ,ユキコ
+ヤマウチ,ミツハル
+ヤマグチ,リョウ
+ヤマグチ,ヤスマサ
+ヤマグチ,ナオコ
+ジダイ,ヒロアキ
+ヤマグチ,エイタ
+ヤマグチ,セイコ
+ヤマグチ,コウジ
+ヤマサキ,ヤスヒロ
+ヤマサキ,ジュン
+ヤマザキ,アツヤ
+ヤマシタ,カズヒロ
+ヤマシタ,マサト
+ヤマシタ,タクヤ
+ヤマダ,タカシ
+ヤマダ,ヤスオ
+ヤマダ,タツジ
+ヤマダ,ヤスヒサ
+ヤマダ,キョウコ
+ヤマトヤ,マリコ
+ヤマナカ,ヒフミ
+ヤマナシ,ジュン
+ヤマニシ,ナオキ
+ヤマモト,チカ
+ヤマモト,カズヤ
+ヤマモト,リカ
+ヤマモト,マナミ
+ヤマモト,ヨウスケ
+ヤマモト,タツヤ
+ヨコタ,トモフミ
+ヨコタ,シゲユキ
+ヨコタ,カヨ
+ヨコテ,セイイチロウ
+ヨシオカ,タカシ
+ヨシオカ,アツシ
+ヨシオカ,ヒデト
+ヨシカワ,タクヤ
+ヨシカワ,リョウイチ
+ヨシダ,マサユキ
+ヨシダ,ジュンコ
+ヨシダ,アカネ
+ヨシノ,ミノル
+ヨシミ,マサユキ
+ヨシムラ,クニヒコ
+ヨダ,ノリヒサ
+ヨネザワ,アラタ
+リュウト,ケイ
+ワカツキ,シンスケ
+ワキザカ,シンヤ
+ワキタ,ユウスケ
+ワキタ,トオル
+ワキモト,ショウコ
+ワダ,タカシ
+ワダ,アキコ
+ワタセ,ダイ
+ワタナベ,ヤスハル
+ワタナベ,ソウ
+ワタナベ,ヒロユキ
+ワタナベ,ナオコ
+ワタナベ,ヨシタカ
+キノシタ,ユウコ
+アオキ,ヨシヒコ
+ヤナギハラ,キヨシ
+アマコ,ヨシオ
+コンドウ,シオリ
+シラカワ,ヨウコ
+コヤマ,タカユキ
+コンド,マコト
+モリ,トシオ
+オオノ,ヒデヨシ
+マノ,アキ
+ナガノ,スミコ
+サトウ,エリ
+ミヤザキ,アヤ
+オガワ,アキラ
+キムラ,ヒデトシ
+ヨコオ,ケンジ
+ウチムラ,チナツ
+ゴシマ,リュウイチ
+サエキ,ミキ
+ナカジマ,ヒロミ
+イワミ,ミホ
+エゲ,レイ
+ウメゾノ,カオリ
+サクライ,マミ
+ワタナベ,マヤ
+ナガイ,ショウゴ
+オソガミ,アツヒコ
+クロカワ,マサヨシ
+タカスカ,ヨシカズ
+オバタ,マサヒコ
+シライ,ユタカ
+マツウラ,マコト
+ナカザワ,ヨシヒサ
+マツイ,ユウイチ
+コセキ,コウタロウ
+ツカダ,ノリユキ
+テラクラ,ヨウジ
+ニヘイ,キヨシ
+カワムラ,タカユキ
+ヒゴ,マサユキ
+コバヤシ,キヨノリ
+フルタ,タカユキ
+モチズキ,ヒロユキ
+オカダ,タツシ
+サイトウ,ユキコ
+カワハラ,ユキ
+スズカケ,タクヤ
+イトウ,アツコ
+イシズカ,ヒサト
+タベイ,ヤスマサ
+ゴトウ,アキヒロ
+シモサカ,トオル
+カワイ,カズマ
+ワタナベ,ヨシカズ
+スズキ,イツフミ
+マツヤマ,ヒロシ
+ハラ,リョウヘイ
+ツバキ,セイイチロウ
+ヤスイ,タカユキ
+コバヤシ,ケンタロウ
+オカベ,サユリ
+オガワ,ショウコ
+ヤマグチ,サトシ
+フジカワ,ケンジ
+イナガキ,ヒデトシ
+チゾ,トシヒコ
+ハナダ,ジュンヤ
+オオコ,モトアキ
+オオクラ,スミヒロ
+マツオ,ツトム
+エンド,マリコ
+ホリベ,モトジ
+カツ,テツヒロ
+オタカ,マサノブ
+タカハシ,トシヤ
+ムラヤマ,ユウコ
+ヨシオカ,サユリ
+カイ,ヨシエ
+タカハシ,ワカコ
+グンゲ,タマヨ
+ヤノ,タイ
+ハヤシ,アヤコ
+ミウラ,マナミ
+アオヤギ,ヒロタカ
+タカダ,トクヒコ
+ヌマタ,ケンジ
+カタオカ,カオル
+シミズ,サチコ
+シミズ,ユウコ
+マツムラ,タロウ
+オリト,サトシ
+コタニ,フミヒコ
+オオハシ,リョウ
+カンセキ,ケイコ
+キタムラ,コウタロウ
+サクタ,シンイチロウ
+ヨシダ,タカシ
+コハラ,トオル
+イハラ,ケイコ
+ツジウラ,カズヒロ
+ナカムラ,ツヨシ
+アオキ,アキコ
+アオヤマ,ダイスケ
+アカイケ,ヒロミ
+アカツ,ジュン
+アキハラ,シュンスケ
+アキモト,マリ
+アサクラ,タカシ
+アサノ,リョウ
+アビル,アイコ
+アベ,ノリタカ
+アベ,ユキ
+アベ,タクヤ
+アベカワ,トモコ
+アライ,ノリヒト
+アライ,マサトシ
+アラカワ,ヒロキ
+アラキ,タカアキ
+アラキ,ヒロシ
+アリエ,マサフミ
+アンドウ,ケンタロウ
+イイダ,ジュンイチ
+イケダ,シュンスケ
+イケダ,タケシ
+イケダ,ナオキ
+イシイ,ノブヤス
+イシイ,ハヤト
+イシガキ,ミヤコ
+イシカワ,ユキ
+イシカワ,ユミコ
+イシザワ,テルキ
+イシズミ,シュウヘイ
+イシゼキ,ダイスケ
+イシダ,ユウジ
+イシダ,レイコ
+イシダ,ヨシタカ
+イシヅ,タカシ
+イシハラ,フミナオ
+イシマル,シュウイチ
+イタニ,タカシ
+イタハラ,ヒサツグ
+イチマ,ナオト
+イトウ,ユウコ
+イトウ,ユウイチロウ
+イトウ,ヒロカズ
+イトウ,アキコ
+イトウ,シズコ
+イトウ,オキ
+イトウ,ツヨシ
+イトウ,ヒロユキ
+イナガキ,シゲキ
+イナミ,レオ
+イノ,ミキ
+イノウエ,マサキ
+イノウエ,タカシ
+イマオ,ジュンペイ
+イマダ,ケンイチ
+イワカミ,ユウスケ
+イワクラ,ユタカ
+イワザキ,ヒロタカ
+イワタ,コウジ
+イワモト,ヒロキ
+ウエスギ,ジュンコ
+ウエダ,マサヤ
+ウエタカ,ショウジ
+ウエチ,マリ
+ウエノ,ケンジ
+ヒリュウ,コウジ
+ウエムラ,マサヒロ
+ウチダ,アヤ
+ウチダ,キイチ
+ウチハシ,ゴウ
+ウチヤマ,レミ
+ウメハラ,ナツコ
+ウリタニ,マスミ
+オイカワ,ケンタロウ
+オオイ,トモユキ
+オオイ,カヨコ
+オオイシ,マサヒコ
+オウチ,ケンシン
+オオエ,ダイスケ
+オオオカ,マサヒロ
+オオカワ,マサヤ
+オオクボ,リョウ
+オオクマ,ノリヒロ
+オオタ,ノブヒロ
+オオタニ,シズカ
+オオツ,チエ
+オオツ,テツヤ
+オオツカ,ジュン
+オオツカ,テルヒロ
+オオツカ,アキラ
+オオツカ,ケイ
+オオツボ,マサミツ
+オオハタ,アキコ
+オオマサ,タツオ
+オオヤ,ケイジ
+オオヤマ,タイスケ
+オカ,タロウ
+オカジマ,ミツノブ
+オカダ,タツヤ
+オカダ,チヒロ
+オカダ,ノリヨシ
+オカダ,サトシ
+オカダ,ルミ
+オカハタ,タツヤ
+オカベ,ヤスマサ
+オカモト,ヒサシ
+オカモト,ヨシノリ
+オカモト,ヒデキ
+オガワ,ケイコ
+オガワ,ダイスケ
+オクダ,コウヘイ
+オクト,サチ
+オクナカ,セイシ
+オグラ,タロウ
+オザキ,ノブアキ
+オサダ,ヒロシ
+オザワ,ヒロミ
+オジマ,マコト
+オジマ,マサシ
+オバラ,ユリコ
+カイトウ,タカシ
+カキクラ,マサユキ
+カキモト,テツヤ
+カク,コウジ
+カゲヤマ,タダヒサ
+カジナガ,ユタカ
+カシマ,ヨシヒコ
+カタオカ,タカヒロ
+カタギリ,ナツコ
+カタヤマ,マヒト
+カド,ユミコ
+カトウ,リツコ
+カトウ,リョウ
+カトウ,フミ
+カトウ,レイコ
+カトウ,スミレ
+カトウ,ヒロシ
+カトウ,テツヤ
+カトウ,サトシ
+カトウ,ワタル
+カトウ,コウイチロウ
+カナモト,アキコ
+カナヤ,シンヤ
+カネコ,ヨシカズ
+カネモリ,ユウ
+カワ,ヨシカズ
+カワイ,コウジ
+カワイ,ハルコ
+カワカミ,マサオミ
+カワグチ,チカコ
+カワグチ,シュンスケ
+カワグチ,トシヒコ
+カワグチ,ヒロキ
+カワグチ,ススム
+カワゴイシ,タカユキ
+カワシマ,ゴロウ
+カワナ,タケシ
+カワノベ,ユキコ
+カンノ,ヤスノブ
+キクチ,ノゾミ
+キシ,レイコ
+キシモト,タケシ
+キシロ,ヤスシ
+キタオ,シン
+キタハマ,タケノリ
+キタムラ,ヨシノリ
+キドコロ,アツシ
+キムラ,コウイチ
+キムラ,マコト
+キムラ,アイコ
+キリアケ,エイサク
+クキモト,トシキ
+クボ,クニユキ
+クボタ,マユミ
+クマクラ,リカ
+クマダ,ユウスケ
+クマモト,ヒロアキ
+クメ,マサヒト
+クラヤ,コウヘイ
+クリワキ,マキコ
+クワバラ,ユカリ
+ゴウ,テルオ
+コイケ,サトル
+コイケ,レオナ
+コサカ,ムツミ
+コウダ,アヤコ
+コガ,コウイチ
+コクボ,モモエ
+コクラ,リエ
+コゴ,リュウジ
+コサキ,リョウスケ
+コジマ,ヒロコ
+コデラ,カズト
+ゴトウ,ダイスケ
+ゴトウ,ケイコ
+ゴトウ,カズノリ
+コハタ,チヨミ
+コバヤシ,トオル
+コバヤシ,ナホコ
+コマツバラ,ミホ
+コミヤ,トクコ
+コミヤマ,マサヨシ
+コヤナギ,シンヤ
+コヤマ,タカコ
+コンド,ノブカ
+コンノ,ノブホ
+サイトウ,ヒロヒデ
+サイトウ,シゲル
+サイトウ,ケンイチ
+サイトウ,ケンゴ
+サイトウ,アイ
+サカイ,リョウスケ
+サカノ,ユキコ
+サカモト,ワタル
+サカモト,チカラ
+サクライ,マサフミ
+ササキ,ヨシコ
+ササキ,タケユキ
+ササキ,ユキオ
+ササキ,サキ
+ササキ,ヤスヒロ
+ササノ,アカギ
+サダモト,ゲンコウ
+サトウ,ヒロキ
+サトウ,ユウイチロ
+サトウ,タカシ
+サトウ,タカヒロ
+サトウ,トモコ
+サナダ,マサユキ
+サネシゲ,トシノブ
+サノ,カズヒコ
+シゲトミ,サトコ
+シノハラ,モリヒコ
+シバカワ,ケンジロウ
+シバノ,リョウ
+シマダ,タケシ
+シマダ,タツロウ
+シミズ,タカオ
+シムラ,タカノリ
+シムラ,タケシ
+シモカワ,トモヤ
+シモフジ,ノブヒコ
+シモヤマ,ヒデカズ
+ショウ,ヒロユキ
+シライ,リエ
+シラガ,コウジ
+シラカワ,ヤスコ
+シラス,ミユキ
+シワ,ケンイチ
+シンケ,ナイシン
+シンドウ,トモカズ
+スガハラ,ヒロカズ
+スギウチ,ショウタロウ
+スギウラ,チアキ
+スギサワ,ヨウコ
+スギハラ,ヒロノブ
+スギモト,テルユキ
+スギヤマ,タツヤ
+スズキ,マサユキ
+スズキ,シンイチ
+スズキ,タイスケ
+スズキ,マコト
+スズキ,マサヤ
+スズキ,リュウタ
+スズキ,ノリコ
+スズキ,ミカコ
+スダ,リンヤ
+スト,テツヤ
+スミダ,アキヒロ
+セキ,アツナリ
+セキ,カズキ
+センダ,ユキコ
+ソメミヤ,チエ
+ソヤ,ヒロキ
+ダイマル,アキラ
+タカオ,ハナエ
+タカギ,カヨ
+タカザワ,ダン
+タカセ,ケンジ
+タカネ,サトシ
+タカハシ,ジュンコ
+タカハシ,タカシ
+タカハシ,ヒロナオ
+タカハシ,ヒロユキ
+タカハシ,マナブ
+タカヤマ,ユキオ
+タキウチ,リエ
+タキカワ,アキラ
+タキグチ,ケンタロウ
+タキザワ,サトシ
+タキザワ,コウジロウ
+タキザワ,チヒロ
+タキタ,アキラ
+タグチ,ケンタロウ
+タケイ,クニオ
+タケウチ,シンゴ
+タケダ,ユウイチロ
+タケハラ,ヨウコ
+タテノ,ナオタカ
+タナカ,ダイスケ
+タナカ,ススム
+タナカ,アキラ
+タナカ,ナオ
+タナカ,セイジ
+タナカ,トオル
+タナカ,ナオコ
+タナカ,エリコ
+タナカ,ミツエ
+タナベ,シンイチロウ
+タニ,チカヨ
+タニカワ,ヨシツグ
+タニナカ,ヒロタカ
+タニモト,チズル
+タヌマ,フミヒコ
+タバタ,ジュン
+タバタ,コ
+タバタ,ヨウスケ
+タバタ,ケイタロウ
+タムラ,コウイチ
+タルキ,ユキ
+タンジ,キヨノリ
+チバ,カズユキ
+チバ,ヒロカズ
+ツカダ,リエ
+ツキモト,アツシ
+ツジ,ヒロシ
+ツダ,キミヒコ
+ツチモト,シンゴ
+ツツミ,トモコ
+ツツミ,ジュンイチ
+ツボタ,マサヤ
+テイ,ワカミ
+テラカド,ミツアキ
+ミノウラ,マナブ
+テルイ,マリ
+ドイ,コウタロウ
+トウ,マキコ
+トウカイリン,ユミ
+ドウメン,エツコ
+トウカイ,カオリ
+トクナガ,キミタカ
+トクヤマ,タイガ
+トシマ,ミワコ
+ドウチ,トモユキ
+トノイ,アキコ
+トノムラ,リエコ
+トミタ,クニオ
+トモノ,ヒデカズ
+トリイ,マモル
+ナガイ,トモノリ
+ナカガワ,イクマ
+ナカガワ,ヨシノリ
+ナカガワ,ダイスケ
+ナカザト,モトノブ
+ナカシマ,チカコ
+ナガタ,ユカ
+ナカノ,カナ
+ナガノ,リョウタ
+ナガノ,リョウ
+ナカムラ,ヨウコ
+ナカムラ,サトシ
+ナカムラ,タケシ
+ナカムラ,テツヤ
+ナカモリ,トクコ
+ナカヤマ,トモヒロ
+ナルセ,タカシ
+ナンゴ,マサキ
+ナンバ,ケン
+ナンバ,コウジ
+ニイミ,コウヘイ
+ニシオ,ヨウジ
+ニシオカ,シンイチ
+ニシオカ,トモコ
+ニシサカ,マミ
+ニシザキ,タクマ
+ニシザワ,ナオキ
+ニシノ,サトシ
+ヌマタキ,モトキ
+ネギシ,リカ
+ネヤマ,タケシ
+ノダ,チアキ
+ノグチ,ノリコ
+ノグチ,ヨウスケ
+ノグチ,ケイジ
+ノグチ,シンキチ
+ノザキ,ダイスケ
+ノダ,ヒロコ
+ノボリ,ヨシヒロ
+ノムラ,シュウイチ
+ノムラ,ミサコ
+ノムラ,ケンジ
+ハギワラ,ショウタロウ
+ハシグチ,トシヒロ
+ハシモト,タカフミ
+マキ,カズト
+ハセガワ,タケオ
+ハセガワ,オサム
+ハダ,アヤコ
+ハットリ,ユウイチ
+ハットリ,マユコ
+ババ,マサキ
+ババ,ケンジ
+ババ,シンイチロウ
+ババ,リカコ
+ハマダ,クミコ
+ハマダ,ダイジ
+ハマダ,リサ
+ハマダ,フミヒロ
+ハマノ,マサユキ
+ハヤシ,アキノリ
+ヒグチ,コウキ
+ヒサツネ,マコト
+ヒシヌマ,アツシ
+ビョウドウ,ヒロコ
+ヒライ,マサカズ
+ヒラオカ,ミキ
+ヒラカワ,トモヒロ
+ヒラサワ,タクジ
+ヒラシマ,ジロウ
+ヒラタ,マミコ
+ヒラノ,ヤヨイ
+ヒルマ,ユウイチ
+ヒロセ,ヒデキ
+ヒロセ,カツヨシ
+ヒロタ,ヒロシ
+フクイ,アズサ
+フクダ,タカシ
+フクバ,カナメ
+フクムラ,ユミコ
+フクモト,ダイスケ
+フジイ,ケン
+フジイ,ユキ
+フジイ,ミワ
+フジエダ,ヒサカズ
+フジタ,ヒデカズ
+フジタ,ユキコ
+フジツ,タケシ
+フジノ,タカホ
+フジモト,サトコ
+フジワラ,タクト
+フジワラ,リナ
+フジワラ,クミ
+フルカワ,リョウ
+ホ,マサノリ
+ホシノ,ムネトモ
+ホソカワ,テルヒコ
+ホリカワ,シュウジ
+ホンゴウ,ヨシアキ
+マエダ,アツシ
+マオカ,ツトム
+マスブチ,ツヨシ
+マスミツ,キョウヘイ
+マツイ,ケンタロウ
+マツオ,ヒデノリ
+マツオカ,キョウスケ
+マツオカ,サチコ
+マツダ,リョウ
+マツバラ,アキコ
+ワタナベ,ダイスケ
+マツヤマ,タケシ
+マツヤマ,ミツテル
+マツヤマ,ヨシキ
+マトバ,トモヒロ
+ミウラ,マサキ
+ミツギ,タケシ
+ミト,シュウイチ
+ミノウラ,ヤスヒサ
+ミヤ,アキラ
+ミヤケ,ヒデマサ
+ミヤシタ,アイ
+ミヤシタ,ユキオ
+ミヤタ,アキヒロ
+ミヤモト,タツヤ
+ミヤモト,クニコ
+ミヤモト,マサヒロ
+ムクダ,トモアリ
+ムシカ,ユキコ
+ムトウ,アキラ
+ムラカミ,ユカ
+ムラカミ,カナコ
+ムラカミ,タツヒロ
+ムラカミ,ヒデツグ
+ムラタニ,モトヒロ
+ムラマツ,マサコ
+ムラヤマ,ヨシアキ
+モチズキ,トシヒコ
+モリグチ,ミサト
+モリタ,マミ
+モリバヤシ,コウメイ
+モロト,ヒロタツ
+ヤエガシ,ヒデユキ
+ヤオヤマ,ゲンタ
+ヤガミ,ヨシヒロ
+ヤギ,ケイジ
+ヤグラ,シンジ
+ヤスコチ,ノボル
+ヤスダ,ユウスケ
+ヤスダ,ノリコ
+ヤマグチ,ユウスケ
+ヤマグチ,ショウシン
+ヤマダ,ワイケン
+ヤマダ,ミズホ
+ヤマダ,アキラ
+ヤマミチ,カツユキ
+ヤマモト,ジュンコ
+ヤマモト,ヒロミ
+ユキ,マミコ
+ユミバ,ケイイチ
+ユラ,ケンイチ
+ヨコスカ,ハルノブ
+ヨコタ,アイ
+ヨコヤマ,アヤコ
+ヨシオカ,ナオコ
+ヨシオカ,カズヒロ
+ヨシザワ,ユウコ
+ヨシダ,ミツル
+ヨシダ,アカリ
+ヨシダ,タカシ
+ヨシノ,カズミ
+ヨシムラ,ユウコ
+リュウ,エイジ
+ロク,アキコ
+サカモト,ケイコ
+ワタナベ,レイナ
+ワタナベ,ユフコ
+ワタナベ,ユウ
+ワタナベ,タカコ
+ワタナベ,ヤヨイ
+ワラビ,ヒロノリ
+ノザワ,ユウコ
+クボ,ヤスコ
+ヨシモト,コ
+ヤマモト,タカシ
+ヤマモト,タカシ
+ヒロサワ,リエ
+ミヒラ,リョウヘイ
+オオノ,ヒロユキ
+オダ,カズヒコ
+オオバタケ,ミホコ
+カドエ,アイ
+ニシダ,トヨヒロ
+マツモト,ヨシアキ
+ミギタ,マナ
+ミヤモリ,ミオ
+ヤマシタ,マドカ
+ヤマダ,シンゴ
+ノリトミ,チエ
+イケダ,ユウスケ
+モリタ,リョウジ
+タケウチ,リョウ
+ミタ,ヨシノリ
+イヌイ,ケン
+トウ,ノリユキ
+マキノ,マリ
+ナツメ,シンヤ
+オノデラ,クニヒロ
+オオタ,ミキコ
+ウルシサコ,リツコ
+サカキバラ,シゲノリ
+アオキ,エイスケ
+アオキ,ナオト
+アオキ,ユウコ
+アカガワ,モトコ
+アカツカ,カズヒト
+アカホリ,ケイジロウ
+アキヤマ,カズヒロ
+アサイ,テルミ
+アサイ,シンペイ
+アサオカ,ケンジ
+アサヌマ,アヤ
+アソ,ナオフミ
+アタケ,トシキ
+アダチ,シンゴ
+アベ,タカミチ
+アベ,ノブヤス
+アベ,ユキエ
+アライ,ツヨシ
+アリマ,トモコ
+イイズカ,ダイスケ
+イガラシ,ユタカ
+イケダ,コズエ
+イケダ,ケンタロウ
+イケハタ,ヒロキ
+イザワ,チハル
+イシイ,ヤスシ
+イシカワ,リョウコ
+イシグロ,アキヒロ
+イシダ,コウタロウ
+イシダ,タツオ
+イシバシ,トシユキ
+イシハラ,タカヒロ
+イシモト,マユコ
+イソハタ,アサコ
+イタミ,タカアキ
+イチカワ,ナルタカ
+イッシキ,タツヤ
+イデ,ナルミ
+イデ,コウジ
+イトウ,マユミ
+イトウ,ジュンペイ
+イトウ,マサオ
+イトウ,ナツコ
+イトウ,マイ
+イノウエ,マコト
+イノウエ,ヨウスケ
+イノウエ,ナオキ
+イノウエ,カツキ
+イノクチ,ノリユキ
+イマイ,リホ
+イマキュウレイ,レイコ
+イマゼキ,クミコ
+イマムラ,マスミ
+イマムラ,ケンイチロ
+イワイ,サトル
+イワイ,タカシ
+イワサキ,トモコ
+イワセ,ススム
+イワタ,コウジ
+イワデ,ケンタロウ
+イワムラ,マサヒト
+ウエダ,フミオ
+ウエノ,マサフミ
+ウエノ,シンジ
+ウカイ,ヒロキ
+ウサミ,マリコ
+ウチウミ,リエコ
+ウチヤマ,マサフミ
+ウラハラ,タイジ
+エギ,タカヒコ
+エジリ,ヒロシ
+エノキド,ヨリコ
+エモリ,イツキ
+エンド,ハジメ
+オオイ,ナツコ
+オオイケ,トモカズ
+オフラ,ダイスケ
+オオカワ,ヨシコ
+オキタ,ユキノリ
+オオサワ,マサユキ
+オオタ,トモコ
+オオタ,アキナオ
+オオタ,ヨウヘイ
+オオタニ,タカアキ
+オオタニ,ユキヒデ
+オオツカ,モトイ
+オオツカ,ヨシノリ
+オオツカ,ダイジロウ
+オオツキ,サトル
+オド,タクミ
+オトンベ,タツヤ
+オノ,マサヒコ
+オノ,ヒロシ
+オオハシ,タツヤ
+オオハタ,アキラ
+オオミチ,ミホ
+オオヤマ,ミキヒト
+オカザキ,タツフミ
+オカジマ,ミナコ
+オカダ,カズヒロ
+オカダ,タクマ
+オカモト,タケシ
+オカモト,ダイスケ
+オガワ,ジュン
+オギタ,トシフミ
+オククボ,タカシ
+オチアイ,トモノリ
+オマタ,ケン
+カサ,ユキコ
+カシワ,ダイスケ
+カトウ,コウヘイ
+カトウ,タダシ
+カナイ,ケンイチ
+カナヤマ,ダイスケ
+カネコ,フミヤ
+カネツキ,ジュンヤ
+カネマル,アズサ
+カベウチ,ナオト
+カミムラ,カオリ
+カミヤ,サチコ
+カミヤ,コウイチロウ
+カワイ,ユミコ
+カワイ,ヒロシ
+カワカミ,ライ
+カワサキ,ヤスヒロ
+カワサキ,テツアキ
+カワサキ,ヒロキ
+カワシマ,タカオ
+カワタ,ケイイチ
+カワマタ,コウタ
+カワモト,ケイスケ
+キシモト,アキヨシ
+キシロ,ケイタ
+キダ,エイスケ
+キタオカ,ジュン
+キタノ,マサヒコ
+キタハラ,ソウヘイ
+キタムラ,タロウ
+キタモト,ミホ
+キムラ,タケヒロ
+キムラ,フミト
+キモト,ケイコ
+キン,ヨシユキ
+クシヤマ,アキヨ
+クドウ,トモノリ
+クドウ,シュンスケ
+クメウチ,ケンジ
+クラシゲ,コウジ
+クラチ,カズヒロ
+クラナカ,タケシ
+クリハラ,ヨウスケ
+クロキ,マサキ
+クロサカ,ヨウコ
+クワハラ,シノ
+ユエ,カツノリ
+コイズミ,シンヤ
+コウジマ,ヨシヒコ
+コウダ,カツユキ
+コンノ,ケンイチ
+コガ,ショウイチ
+コガ,タクジ
+コクブン,チカコ
+コサカ,アキコ
+コッテ,マイコ
+ハタナカ,タカシ
+コバヤシ,ユカ
+コバヤシ,ヒデキ
+コバヤシ,アンナ
+コバヤシ,ノリアキ
+コバヤシ,キミヒコ
+コマツ,シンスケ
+コマツバラ,フミ
+コメダニ,テツロウ
+サイキ,アツシ
+サイトウ,ケンイチ
+サカイ,ヒロアキ
+サカグチ,タロウ
+サクマ,ユキコ
+サコ,マヤ
+ササイ,ナオヤ
+ササオ,カズキミ
+ササキ,ハナコ
+ササキ,マサオ
+サトウ,カツヒコ
+サトウ,カズユキ
+サトウ,ヒロヒト
+サトウ,マサキ
+サトウ,ミキ
+サトウ,マサコ
+サトウ,ミキ
+サトウ,ノブユキ
+サトウ,リョウサク
+サノ,マサコ
+サノ,ナギサ
+サハラ,タカフミ
+サルヤマ,タカユキ
+サワグチ,アヤ
+シイ,エミ
+シオザキ,ヒデアキ
+シオダ,エイジ
+シキ,マサル
+シダ,ヨシヒロ
+シノハラ,ヒトシ
+シノハラ,ヒサシ
+シブサワ,ヨウスケ
+シマダ,リュウタ
+シマダ,ミホコ
+シマダ,ケンタロウ
+シミズ,タツオ
+シミズ,ワタル
+シミズ,トモコ
+シミズ,サトコ
+シミズ,ジュンイチ
+シミズ,ジロウ
+シモ,キヌエ
+シモザキ,タツヒコ
+シモジマ,エイイチロウ
+シモツ,タカヒロ
+シモノ,アキヒコ
+シモヤ,ヨリコ
+シラス,シンゴ
+スギウラ,マサノブ
+スギウラ,トシロウ
+スズキ,トモミ
+スズキ,エリコ
+スズキ,ユウスケ
+スズキ,ヨシノリ
+スズキ,ヨシキ
+スト,サトシ
+スナダ,サトシ
+スヤマ,ダイスケ
+セオ,カオリ
+セキ,コウヘイ
+セキネ,ミツル
+セキバ,マキ
+セト,ケイジ
+センゴク,ノリヒサ
+センダ,ユウコ
+センバ,ミズホ
+ソメヤ,ケイゴ
+タカギ,ヒデキ
+タカギ,アイ
+タカギ,ノリユキ
+タカセ,ヨウイチロウ
+タカダ,ヨウスケ
+タカハシ,ヤスユキ
+タカハシ,ヨシノリ
+タカハシ,タカノリ
+タカハシ,マサト
+タカハシ,ミカ
+タカハシ,ヤスヒロ
+タカミザワ,コズエ
+タキザワ,ケイゾウ
+タグチ,キョウコ
+タケシタ,ケン
+タケダ,カズマ
+タケダ,ユウジ
+タケダ,コウジ
+タケナカ,タカヒロ
+タケハラ,ミキコ
+タケヤマ,ミツル
+タジ,ミカ
+タダ,ヨシタカ
+ダテ,クミコ
+タナカ,チカフミ
+タナカ,ノリヒコ
+タナカ,タクナガ
+タナカ,タカユキ
+タナカ,タカユキ
+タニグチ,タカノリ
+タニコシ,ケンタロウ
+タニノ,タカアキ
+タブキ,タロウ
+タブチ,ヨシヒト
+タマオキ,マサヨシ
+タマガワ,トモコ
+タムラ,ケイコ
+タメノリ,ヨウヘイ
+タンノ,エリ
+タンボ,アキヒコ
+チダ,カツヒサ
+チネン,ユキ
+ツガネザワ,ノブユキ
+ツカハラ,ミズホ
+ツチヤ,マユミ
+ツチヤ,ヨウスケ
+ツチヤ,ヤスユキ
+ツズキ,マミ
+ツズラハラ,サチコ
+ツネヨシ,テルノブ
+ツボウチ,アキフミ
+ツルシマ,リエ
+デグチ,タクヤ
+テズカ,ミツノブ
+テラカワ,タカシ
+テラグチ,ムネノリ
+テラシマ,ケンジ
+テラダ,ヨシキ
+トガシ,ダイスケ
+トクムラ,コウイチ
+トザワ,ユウコ
+トビオカ,タケシ
+トマリノ,ジュンコ
+トミイ,ジュンコ
+トミザワ,アヤ
+トミタ,タイチ
+トミタ,ユウタ
+トミナガ,ヨウコ
+トヨダ,ソウタロウ
+トラタニ,マサコ
+ナイトウ,タカオ
+ナガイ,チエ
+ナガイ,ジュンコ
+ナカイケ,シンゴ
+ナカウエ,ダイスケ
+ナガオ,リョウコ
+ナカコジ,サヤカ
+ナガサカ,コウジ
+ナカジマ,ユキコ
+ナカジマ,マリ
+ナガタ,カツヤ
+ナガタ,アツヒサ
+ナガタ,ナオキ
+ナカツル,ヒロアキ
+ナガノ,ヤスオ
+ナカムラ,サトル
+ナカムラ,ヒロシ
+ナカムラ,クミコ
+ナカムラ,ヒロシ
+ナカムラ,ユカ
+ナカムラ,マサアキ
+ナカムラ,エイジ
+ナツハラ,サヤカ
+ナリサダ,シンスケ
+ナンブ,ノブユキ
+ニカイドウ,トモヤ
+ニシ,ソウイチロウ
+ニシ,ナオユキ
+ニシオ,トシヤ
+ニシカワ,ケンジ
+ニシクラ,サトコ
+ニシザワ,イサム
+ニシザワ,エリナ
+ニシダ,シンイチ
+ニシダ,リョウヘイタ
+ニシヤマ,ヒサノリ
+ヌノヤ,シゲオ
+ヌマザキ,ユキオ
+ヌマタ,タケシ
+ノドミ,リナ
+ノミ,マサキ
+ノグチ,カズヨシ
+ノジマ,テルアキ
+ノジリ,トシユキ
+ノダ,ミキコ
+ノダ,ユキコ
+ノムラ,シンヘイ
+ノムラ,カズエ
+ノムラ,カズオ
+ハコシマ,ワタル
+ハシモト,リョウ
+ハシモト,ケイ
+ハセガワ,ケンタロウ
+ハタケヤマ,ユフコ
+ハッタ,ユヒ
+ハットリ,サトミ
+ハナイ,タケハル
+ハナダ,ケイスケ
+ハマグチ,ケン
+ハマダ,マナミ
+ハマダ,ケイコ
+ハマノ,タカユキ
+ハヤカワ,ユキ
+ハヤシ,テツオ
+ハヤシ,トモナガ
+ハヤシ,ケンタロウ
+ハラ,チカコ
+ハラ,ヤスアキ
+ハラダ,ミエ
+ヒエカタ,サトコ
+ヒガサ,アツシ
+ヒガミ,セイジ
+ヒキノ,テツジ
+ヒダ,タカシ
+ヒダカ,シン
+ヒデシマ,ミキコ
+サカイ,ジュンヤ
+ヒライ,ハヤト
+ヒライワ,エツコ
+ヒラタ,ヒデキ
+ヒラバヤシ,ナオユキ
+ヒロセ,アヤコ
+フカオ,ミユキ
+フクイ,ヒデヒコ
+フクザキ,ミレイ
+フクダ,ヨウヘイ
+フクダ,ヤスヒロ
+フクダ,マサル
+フクダ,ジュンイチ
+フクハラ,ユキコ
+フクムロ,ヒロフミ
+フジウラ,アヤ
+フジオカ,コウイチロウ
+フジオカ,マヤ
+フジタ,シゲル
+フジモト,ユカリ
+フジモト,エリコ
+フジワラ,アキヒロ
+フタムレ,イサオ
+フルサワ,イチロウ
+フルタ,ヒサオ
+フルヤ,ヒデオ
+ホコラ,マツオ
+ホシノ,スミオ
+ホシノ,タモツ
+ホソノ,ヒロミチ
+ホリ,トシ
+ホリウチ,エツオ
+ホリオカ,ヤスオ
+ホリグチ,ジュンイチ
+ホンマ,イサオ
+マエカワ,トモユキ
+マエジマ,コウジ
+マエダ,トシヒロ
+マエハラ,トシヒコ
+マキ,シゲノリ
+マキノ,タケオ
+マスイ,ヒロシ
+マスダ,キヨシ
+マスダ,マサミツ
+マツイ,カンジ
+クマガイ,カツヒコ
+カネコ,リョウジ
+コミヤ,ノボル
+コガイト,ミチコ
+カンバヤシ,テルマサ
+キノシタ,ハルヒコ
+キクチ,ミノル
+コマバ,ユタカ
+コクブ,ミツコ
+コバヤシ,ヒロシ
+コバヤシ,テルオ
+キツタカ,チュウケン
+マツオ,タカユキ
+カワイ,マナブ
+クリハラ,トオル
+カドノ,ヒロヨシ
+カミクボ,ケンジ
+カワグチ,タカシ
+カマタ,マサモト
+カンダ,カズミ
+カンダ,ミツオ
+コシムラ,トシユキ
+マツオ,キヨシ
+クサキ,ジュンジ
+カモハラ,マサフミ
+カサジマ,トシマサ
+マツキ,ヨシカズ
+カミクラ,ツネオ
+クリハラ,ノブアキ
+ナカチ,キヨシ
+カガワ,シンイチ
+コバヤシ,セイジ
+カンノ,トシオ
+マツシタ,フミオ
+カシワダ,オサム
+コンノ,カズオ
+コスギ,ヨシミ
+コモリ,トシロウ
+カワノ,ユキオ
+キタムラ,タケヒコ
+カジマ,テツヤ
+カトウ,ヒデオ
+コヤノ,ユキオ
+カツマタ,トシカズ
+クワダ,ケイジ
+コタニ,ヤマト
+カジウチ,ノブコ
+コンド,タカシ
+コンド,ヨシカズ
+マツナミ,シンヤ
+カガヤマ,マサハル
+カネコ,ヤスヒコ
+コヤマ,ヤスハル
+キツカワ,コウセイ
+カシクラ,カンジ
+クロキ,ヨシユキ
+コイズミ,シュウヘイ
+クゼ,ミキオ
+カワカミ,ケイコ
+カミ,サチオ
+キムラ,トオル
+マツノ,カズヒサ
+キクタ,オサム
+クマダ,マサアキ
+クニハラ,シュンイチ
+コジマ,ユタカ
+クリハラ,マサノリ
+ヨネクラ,ヨシタミ
+コバヤシ,ツネオ
+コバヤシ,テツオ
+コジョウ,サナエ
+キムラ,ジュンイチ
+コバヤシ,マサアキ
+コンド,ノブカズ
+カワイ,トシカツ
+クマハラ,ケンジ
+キセ,ミチヤス
+カシクマ,ケンゾウ
+カコ,ジュンイチ
+イシガイ,ヨシアキ
+カミグチ,タダシ
+クモダ,トシオ
+コマツ,ショウイチ
+カネダ,ミツオ
+キクチ,ヨシヒサ
+コタニ,ヨシユキ
+コバヤシ,ヤスト
+カワグチ,ヨシオ
+カネコ,ヒロアキ
+カモ,ヨシアキ
+カワムラ,エイジ
+クマノ,マサユキ
+コバヤシ,ヨシエ
+キムラ,カズヒサ
+キシモト,ヒロヒサ
+キムラ,キシオ
+カミグチ,テツヤ
+キムラ,マサハチ
+コバヤシ,シュンジ
+カドクラ,カナコ
+キタムラ,ヒデヨ
+カツキ,ヒサシ
+カンザキ,マサノブ
+カタギリ,イクミ
+コバヤシ,ノブコ
+コマツザキ,コウゾウ
+キタ,ヒロノリ
+カツハラ,シュウ
+コグレ,アキエ
+コジマ,アツシ
+コメダ,ヒサシ
+コニシ,ケンイチ
+クワハラ,ヤスマサ
+コヤマ,ヒデアキ
+マツモト,ノリユキ
+カジモト,ヨシアキ
+クマザワ,カツミ
+キムラ,トシオ
+コバシガワ,ヒトシ
+カミヤ,ユウ
+マツモト,ショウジ
+コハシ,エイゾウ
+コダマ,ゼンイチ
+カワカミ,カズミ
+マツモト,ハルオ
+カイド,ミホ
+キムラ,トシオ
+クゴ,キヨミ
+マツモト,ヨシユキ
+マツヤマ,リョウスケ
+マルヤマ,サチコ
+コンノ,キヨシ
+クロキ,ジュン
+コミヤ,リョウコ
+キムラ,ナオユキ
+キノ,ミア
+コマツ,ユキ
+カネチカ,リョウスケ
+カナタニ,リエ
+コバヤシ,ヨシロウ
+キタヤマ,カナコ
+カジ,ヒロコ
+カワシマ,ナオキ
+キムラ,マキコ
+コバラ,タクマ
+キタガワ,ナオタカ
+マルヤマ,ナホコ
+カモン,マサシ
+ミウラ,タカシ
+ミシマ,カツヒロ
+ミスギ,トモアキ
+ミズタ,ジュンコ
+ミズモト,ナルキ
+ミゾグチ,マサコ
+ミズカ,ユタカ
+ミナミ,タケル
+ミナミタニ,マサト
+ミネタ,ユキコ
+ミヤイ,コウタ
+ミヤオカ,ケンロウ
+ミヤザキ,マユミ
+ミヤザキ,ジュリ
+ミヤハラ,タツヒコ
+ミヨシ,アキノブ
+ムラカミ,マサヒデ
+ムラキ,アツコ
+ムラタ,ケンジ
+ムラタ,ミチヤ
+ムラタ,メグミ
+ムラヤマ,マサコ
+モトノ,ヤスマサ
+モリ,トシユキ
+モリ,ナオ
+モリタ,ヒデトモ
+モリタ,リエ
+モリヤマ,アツシ
+モリヤマ,カオリ
+ヤザワ,カズコ
+ヤジマ,トモヒロ
+ヤナギダ,エリコ
+ヤマガタ,ケイイチ
+ヤマカワ,シンヤ
+ヤマグチ,サトミ
+ヤマグチ,ユキ
+ヤマグチ,タダユキ
+ヤマサキ,マサキ
+ヤマザキ,ケン
+ヤマシタ,シュクホ
+ヤマダ,ヨシアキ
+ヤマダ,ケンイチ
+ヤマダ,シュン
+ヤマナカ,マサシ
+ヤマネ,シンゴ
+ヤマモト,ヤスノリ
+ヤマモト,カズヒロ
+ヤマモト,ヒデユキ
+ユカワ,サトシ
+ユザ,アキコ
+ユタニ,リエ
+ユタニ,ダイスケ
+ヨゴ,トモノリ
+ヨコボリ,マサタケ
+ヨシオカ,タダアキ
+ヨシカワ,ヒロミ
+ヨシダ,ヒロタカ
+ヨシダ,キョウコ
+ヨシモト,モトオ
+ヨネダ,ユミコ
+ワカサヤ,シズカ
+ワタナベ,ジュンイチロ
+ワタナベ,ヤスヒロ
+ミツヤマ,マサミ
+ヒラオカ,リサ
+カンノ,カツト
+ワコ,リエ
+アオキ,ワタル
+アカオ,マサノリ
+アカギ,リョウヘイ
+アカシ,ヒロコ
+アカツカ,ヤスユキ
+アカハネ,ヒロアキ
+アカホリ,ユウコ
+アキモト,チエ
+アキヤマ,ミホ
+アサイ,マサカズ
+アサノ,ヤスヒロ
+アサヒ,アサコ
+アサベ,カヨ
+アハレン,ダイスケ
+アベ,トシヒコ
+アベ,カオル
+アベ,ヒロフミ
+アマノ,マサミ
+アメモリ,アリサ
+アライ,ヒデオ
+アライ,エツコ
+アライ,カツヒロ
+アラタニ,サツキ
+アリナカ,トモヒロ
+イイゴ,ノリアキ
+イイダ,マユミ
+イケダ,ヨシタカ
+イコガ,エミコ
+イシイ,カオリ
+イシオカ,タカシ
+イシザカ,ユキエ
+イシジマ,ミオ
+イシダ,ユイ
+イシド,ユキコ
+イシノ,タカオ
+イシマブシ,アキヒト
+イセリ,オトヒコ
+イソベ,ハルカ
+イタニ,タカアキ
+イズノ,ミツヒロ
+イデノ,ヨウヘイ
+イトウ,ヨウコ
+イトウ,ミツタカ
+イトウ,ヨシアキ
+イトウ,ユカリ
+イトウ,マナ
+イトウ,タケシ
+イトヤマ,アツシ
+イナ,アキラ
+イナサキ,ヤスノリ
+イナバ,ヨウスケ
+イナバ,タダシ
+イノウエ,タケシ
+イノウエ,ノブタカ
+イノウエ,マリコ
+イベ,キョウコ
+イマイ,ユキエ
+イマオカ,シュウヘイ
+イマムラ,マサシ
+イワタ,タケヒロ
+イワタ,ヨシヒロ
+イワタ,オサム
+イワミ,ユウコ
+イワモト,ケンイチロ
+ウエダ,レイコ
+ウエノ,サラ
+ウエハラ,タカノリ
+ウカイ,ヒサナガ
+ウダガワ,ユウイチ
+ウチヤマ,ヒロマサ
+ウツミ,ヒロユキ
+ウツミ,マリコ
+ウノ,マコト
+エガシラ,シュンスケ
+エトウ,ヒロキ
+エトミ,ヒデミ
+エンド,メグミ
+エンド,ヒロキ
+オカド,タカヒサ
+オオクラ,ヒロコ
+オオサカ,タテキ
+オオサカ,コウタロウ
+オオサワ,サチ
+オオスミ,サトコ
+オタ,チエコ
+オオタニ,マコト
+オオニシ,マサヒロ
+オオニシ,ミツル
+オオニシ,ムサシ
+オオニシ,マサオ
+オオノ,ナホコ
+オオノ,ミカコ
+オノ,ヨウコ
+オマツ,ヨウスケ
+オムラ,トモコ
+オオヤ,ユキエ
+オカ,ノリヒト
+オカイ,ケンイチ
+オカウチ,トモノリ
+オカダ,ユウキ
+オカダ,マリコ
+オカノ,ヤスフミ
+オカムラ,アカリ
+オカモト,ソウ
+オガワ,イズミ
+オガワ,コズエ
+オガワ,キンヤ
+オガワ,ミチコ
+オガワ,タクヤ
+オガワ,ユミコ
+オギノ,エリコ
+オク,サヤカ
+オクカワ,ヒロアキ
+オクダ,アキオ
+オクムラ,サトコ
+オザキ,タカユキ
+オジマ,タカシ
+オゼキ,ケイイチ
+オダ,ヒロユキ
+オダ,アツコ
+オチアイ,ナオキ
+オトガワ,リョウコ
+オノ,ミズキ
+オオハラ,ケイコ
+カイジマ,ケンタ
+カガワ,トモミツ
+カキオ,タカヤ
+カケヒ,トモミ
+カサイ,ナオコ
+カサミ,ヨシフミ
+カジタ,ケイイチ
+カジタニ,マサナリ
+カシマ,ヤスヒロ
+カシマ,ユウコ
+カジモト,アヤコ
+カスガ,サナコ
+カセ,レイコ
+カタギリ,カズシゲ
+カタヤマ,リョウコ
+カタヤマ,ユウジ
+カトウ,ヒトシ
+カトウ,クニアキ
+カトウ,ケンイチロ
+カナザワ,ヒロカズ
+カネミツ,トモノリ
+カノウ,ユキエ
+カマタ,ヒロタカ
+カミザキ,マサトシ
+カミ,ヨウイチ
+カメタカ,タイスケ
+カモ,ケンヤ
+カワイ,トモカズ
+カワイ,ジュリ
+カワカミ,タカシ
+カワカミ,ミオ
+カワグチ,アユミ
+カワグチ,カズヒデ
+カワグチ,サトシ
+カワサキ,ジン
+カワサキ,ナオキ
+カワナミ,アキコ
+カワネ,カナコ
+カワバタ,アユミ
+カワムラ,モウ
+カワモト,ユウ
+カンダ,ミドリ
+カンダ,ナオシ
+カンノ,マサコ
+キシモト,ケンタロウ
+キタガワ,タケシ
+キタハラ,トモハル
+キタムラ,ショウ
+キタムラ,シンゴ
+キヌヤ,トシミ
+キノシタ,テツ
+キハラ,タツヤ
+キムラ,ヨシカズ
+キムラ,マサヒロ
+キムラ,アキヨシ
+キムラ,ジュン
+キヨシマ,ハルミ
+キヨズカ,ユキ
+キラ,タカシ
+キリサコ,テッペイ
+キン,サユリ
+キン,ナオコ
+クニエダ,カズアキ
+クボ,ゴウ
+クマノ,タケト
+クラタ,アキヒロ
+クラハシ,タカアキ
+クレ,トオル
+クロイ,ヨシタカ
+クロキ,ユウコ
+クワノ,ヒロタカ
+ゴウ,サエ
+ゴウダ,タケヒロ
+コガ,ケイ
+コクショウ,ツヨシ
+コサカ,シュウイチロウ
+コジマ,リョウスケ
+コゾノ,アイワ
+コダマ,イクオ
+コテラ,キミヒロ
+コデラ,シンタロウ
+ゴトウ,タダノリ
+ゴトウ,ヒロコ
+コニシ,ミサキ
+コニシ,ヨウコ
+コニシ,トモヤ
+コバヤシ,ナツコ
+コバヤシ,コウジ
+コバヤシ,チエ
+コバヤシ,ツヨシ
+コブセ,ヒデユキ
+コマキ,ヒロナオ
+コマザワ,タカマサ
+コマツバラ,トモヒサ
+コヤマ,イチロウ
+コンド,ヒロコ
+サイキ,カオル
+サイ,カズヤ
+サイトウ,キョウコ
+サイトウ,コウイチ
+サイトウ,テルヒサ
+サイトウ,ハジメ
+サイトウ,ヒロミ
+サイトウ,フミコ
+サイトウ,ヒトシ
+サイトウ,マキコ
+サカイ,タカユキ
+サカミ,タカシ
+サカモト,コウジ
+サカモト,ヒデキ
+サカモト,マサヨシ
+サカモト,ナナコ
+サカモト,ヨウイチロウ
+サクライ,サダヨシ
+サクラギ,ナホコ
+ササキ,マサキ
+ササキ,ユミエ
+サトウ,フクタロウ
+サトウ,シュウサク
+サトウ,タカシ
+サトウ,アキ
+サトウ,ケンイチロ
+サトウ,カズミチ
+サトウ,ユミ
+サトウ,リョウスケ
+サノ,トオル
+サノ,リョウスケ
+サワサキ,タカシ
+サワダ,ヒロコ
+サンペイ,サトル
+シオズカ,アツシ
+シノ,カズノリ
+シバタ,カズタカ
+シマ,ジュン
+シマノ,トシアキ
+シミズ,ヨシコ
+シミズ,マミ
+シモカワ,ヨシオミ
+シモムラ,エイブ
+シュクリ,マナミ
+ショウジマ,タツオ
+ショウダ,クミ
+シライシ,ノリカズ
+シラカタ,ジュン
+シラサキ,モモコ
+シロタ,マサヒロ
+ジングウジ,シゲカズ
+シンタニ,ケンタ
+シンボ,ノブユキ
+ジンボ,モトハル
+シンムラ,ヒデトシ
+スガイ,ツトム
+スギモト,ミホ
+スギモリ,ヒロコ
+スギヤマ,タカネ
+スギヤマ,ジュン
+スギヤマ,タクマ
+スズキ,キクコ
+セガワ,ジュン
+セキ,ケンジ
+セキネ,ヒロシ
+セキモト,カツアキ
+セト,アツシ
+セラ,カズヨシ
+ソデヤマ,ソラコ
+ソノイ,テルエ
+タイラ,マサシ
+タカキ,ミチル
+タカハシ,レイ
+タカハシ,ミネコ
+タカハシ,トモオ
+タカハマ,コウキ
+タカミヤ,チハル
+タカヤナギ,カズヒコ
+タカヤマ,サトシ
+タグチ,ワタル
+タケウチ,アツシ
+タケザキ,マユコ
+タケシタ,サトミ
+タケモト,ヒロトモ
+タダ,アツコ
+タチカワ,マコト
+タチバナ,ナオト
+タツガワ,トモコ
+タナカ,ヤスノリ
+タナカ,アキヨ
+タナカ,マサタカ
+タナカ,コウスケ
+タナカ,サチエ
+タナカ,ショウヘイ
+タナベ,ノリコ
+タニグチ,タケシ
+タニワキ,ヒロフミ
+タバタ,ヨシヒサ
+タハラ,ケンジ
+タマキ,ナオコ
+タマムラ,マコト
+タルミ,ヒロミ
+タンバラ,リョウコ
+チカツ,テツヒコ
+チバ,カホリ
+チョウ,リョウタ
+ツカダ,テツヤ
+ツカモト,サチカ
+ツジモト,ミキ
+ツチダ,ケイコ
+ツチヤ,タカアキ
+ツチヤ,チカラ
+ツツミ,サトシ
+ツボクラ,タクヤ
+ツムラ,トモエ
+テシマ,アキコ
+テラサキ,マサヒト
+テラサキ,クミ
+テラダ,タケハル
+ドイ,トモコ
+ドイ,ノブタカ
+トウ,ヒロコ
+トキタ,シンイチロウ
+トキト,リョウスケ
+トクダ,エミ
+トシズミ,マホ
+トダ,シュンスケ
+トヨダ,ヒロアキ
+ナイトウ,リョウタ
+ナカイ,マサトシ
+ナカオ,アキヒコ
+ナガオ,エリコ
+ナカガワ,トモミ
+ナガサカ,ミチコ
+ナカサカ,ヤスヒロ
+ナガサキ,ユウイチロ
+ナカザワ,ユウヘイ
+ナカザワ,ヨウコ
+ナカシマ,ユウヤ
+ナカジマ,エミコ
+ナカシマ,アキヒロ
+ナカジマ,シュウタロウ
+ナカジマ,リョウスケ
+ナカダ,カヨコ
+ナカダ,アヤコ
+ナガツカ,イサオ
+ナカト,シュウジ
+ナカニシ,ミドリ
+ナカニシ,ススム
+ナカニシ,イタル
+ナガマツ,マサヒロ
+ナカムラ,シゲトシ
+ナカムラ,キョウコ
+ナカムラ,アヤコ
+ナカムラ,マユ
+ナカムラ,ケイコ
+ナカムラ,ナオコ
+ナカムラ,ヒロカズ
+ナカムラ,サヤコ
+ナカモリ,テツヤ
+ナカヤ,ユウジ
+ナカヤマ,タケシ
+ナス,コウジ
+ナリトミ,シンタロウ
+ナンブ,トモヤ
+ニイミ,ヤスタカ
+ニシカワ,ソノコ
+ニシノ,ユカ
+ニシヤマ,タカヒロ
+ヌカダ,ヨシコ
+ヌマタ,ユウイチ
+ヌマタ,サトシ
+ノガミ,サトシ
+ノギ,アヤコ
+ノクオ,カオリ
+ノグチ,タカユキ
+ノザキ,ナツネ
+ノジ,ユキ
+ノマ,レイコ
+ノムラ,マサオ
+ノムラ,ユウイチ
+バコシ,シンゴ
+ハシモト,ナオコ
+ハスヌマ,チエ
+ハセ,ヨウイチ
+ハセガワ,ヒロシ
+ハタガワ,ジュンコ
+ハタケヤマ,ユウコ
+ハタノ,ヨウコ
+ハナイ,リカ
+ハマサキ,マコト
+ハマダ,ヒロタカ
+ハマデ,タカシ
+ハヤカワ,アキ
+ハヤシ,アヤ
+ハヤシ,サトコ
+ハヤシ,サトシ
+ハヤシ,ジュン
+ハヤシ,ヨウコ
+ハヤシ,ススム
+ハラ,トモヒサ
+ハラシナ,ノブキ
+ハラダ,アツシ
+ハラダ,ミドリ
+ハルナ,シュウスケ
+ヒキタ,ヒデト
+ヒダイ,マユミ
+ヒライ,キョウコ
+ヒライ,ユウスケ
+ヒライ,エリコ
+ヒライワ,クミコ
+ヒラオ,ヒデカズ
+ヒラカワ,マキ
+ヒラタ,ヨシアキ
+ヒラマツ,タカオ
+ヒロエ,アツシ
+ヒロセ,ヒデノリ
+フカザワ,ヒデユキ
+フカホリ,ノリヒロ
+フクシマ,マキオ
+フクダ,ヒロユキ
+フクダ,ヒロフミ
+フクダ,サヤカ
+フジイ,リエコ
+フジカワ,カズミ
+フジタ,ケンジ
+フジタ,マサオ
+フジタ,ヨシロウ
+フジムラ,トモユキ
+フジムラ,アキコ
+フジモト,ショウヘイ
+フジモト,リュウヘイ
+フジワラ,ケイサク
+フジワラ,サトシ
+フタカタ,ジロウ
+フナイ,サチコ
+フルカワ,ヒロコ
+フルカワ,ジュンイチ
+フルマタ,トモヤ
+ホシ,ユキ
+ホシウラ,ヒロシ
+ホシロ,イツミ
+ホソダ,シュンゴ
+ホリ,ノブヒデ
+ホリ,ユキ
+ホリエ,ノブト
+ホリグチ,ノゾム
+ホンナ,カオル
+ホンボ,ヒロユキ
+マエカワ,ミワ
+マエダ,コスケ
+マエダ,タカシ
+マエダ,エツコ
+マキウチ,ケイジ
+マキノ,ショウコ
+マキモト,トモノリ
+マサトウミ,マイコ
+マスイ,ヨウスケ
+マスダ,マサユキ
+マスダ,ミホ
+マツイ,ミオ
+マツウラ,カズヒサ
+マツオカ,アキヒロ
+マツオカ,トモコ
+マツオカ,マユミ
+マツオカ,ダイスケ
+マツカゲ,ヒサオ
+マツシタ,サトシ
+マツナガ,ワタル
+マツバラ,ノゾミ
+マツバラ,アキコ
+マツモト,ヒロミツ
+マツモト,ホクト
+マツヤマ,マイコ
+ミウラ,リョウ
+ミウラ,アツシ
+ミウラ,アツシ
+ミウラ,キヨマサ
+ミキ,ユウジ
+ミズカワ,ヒロユキ
+ミズタニ,ユキコ
+ミズノ,ユウセイ
+ミソノ,タダマサ
+ミゾハタ,チエ
+ミナガワ,マチコ
+ミナガワ,アヤ
+ミナミ,ヒロユキ
+ミナミ,タカシ
+ミナミカタ,タカノブ
+ミナミムラ,ヒデキ
+ミハラ,マサキ
+ミムラ,ミキコ
+ミヤイ,ノブアキ
+ミヤザキ,アツシ
+ミヤザワ,ナオヤ
+ミヤザワ,アキラ
+ミヤムラ,カオリ
+ミヤムラ,アヤ
+ミヤモト,ユウヘイ
+ミヤモト,マサヤ
+ミヨシ,ツカサ
+ムネムラ,チカフミ
+ムラカタ,トモユキ
+ムラズミ,ミツノリ
+ムラタ,クミコ
+ムラタ,マキ
+ムラモト,カズノブ
+ムラヤマ,ナオ
+モリ,ナオコ
+モリ,カツマサ
+モリ,アツヒコ
+モリ,クミコ
+モリ,ミキ
+モリウチ,ノリコ
+モリシタ,ユウイチロ
+モリタニ,カズト
+モリモト,ゲン
+モリヤマ,コウジ
+モロエ,ヒロカズ
+ヤゴ,ミノル
+ヤスガキ,トモフミ
+ヤスダ,アヤコ
+ヤスモト,アツシ
+ヤツナミ,アキオ
+ヤナギサワ,ケイスケ
+ヤナギハラ,シンスケ
+ヤブナカ,タイシ
+ヤマウチ,タカユキ
+ヤマオカ,タダシ
+ヤマオカ,ナオヤ
+ヤマオキ,ヒロユキ
+ヤマガタ,マコト
+ヤマグチ,シンイチ
+ヤマグチ,ヒロコ
+ヤマシタ,マドカ
+ヤマシタ,チエ
+ヤマダ,チエ
+ヤマダ,ジュンジ
+ヤマダ,ノブコ
+ヤマダ,アヤ
+ヤマダ,マキコ
+ヤマナカ,メグミ
+ヤマムラ,イッセイ
+ヤマムロ,カナコ
+ヤマモト,コウヘイ
+ヤマモト,テルヒコ
+ヤマモト,マサユキ
+ヤマモト,ミツヨシ
+ヤマモト,ミノル
+ヤマモト,シノブ
+ヤマモト,トオル
+ヤマモト,アスカ
+ヤマモト,ワタル
+ユアサ,クミコ
+ユキ,ナオコ
+ユリヤマ,ノリヒロ
+ヨコタ,アツヒサ
+ヨコハマ,トシユキ
+ヨコヤマ,アユミ
+ヨコヤマ,カズキ
+ヨシオカ,キョウコ
+ヨシオカ,マイコ
+ヨシオカ,マリコ
+ヨシダ,タカトシ
+ヨシダ,ナオコ
+ヨシダ,ナオコ
+ヨシダ,マリエ
+ヨシダ,ユウジ
+ヨシダ,ユウジ
+ヨシノ,ユカ
+ヨシヒロ,ユミ
+ヨシマツ,トオル
+ヨシムラ,ダイスケ
+ヨシムラ,カズフミ
+ワカマツ,ヒロヤ
+ワキタ,カズオ
+ワキタ,ケンシロウ
+ワシオ,ヨシアキ
+ワシザワ,チアキ
+ワダ,イサム
+ワダ,トシオ
+ワダ,イサオ
+ワダ,タケシ
+ワダ,カツエ
+ワタナベ,カズシン
+ワタナベ,トクジ
+ワタナベ,ヒロシ
+ワタナベ,キヨオミ
+ワタナベ,ヨシヒロ
+ワタナベ,ヨリミツ
+ワタナベ,ケイジ
+ヤマグチ,モトジ
+スズキ,ジロウ
+ササノ,ススム
+カネコ,タケシ
+クボタ,レイコ
+コスケガワ,マサナオ
+カナイ,サブロウ
+カトウ,コウイチ
+コダマ,タカヒコ
+コバヤシ,トシヒロ
+コジマ,トオル
+カメヤマ,カズヒコ
+クラバヤシ,ノブオ
+カンダ,カズユキ
+コンノ,ジュンジ
+カワシマ,マサナリ
+カワカミ,コウジ
+カナカ,カクタロウ
+カワムラ,ヒロウミ
+キムラ,シュンイチ
+カスガ,ヒロシ
+コジマ,モトヨシ
+カワノ,コウイチ
+カワナ,ヨシマサ
+コズマ,タケシ
+カワサキ,マサアキ
+カタノ,マサアキ
+カタダ,アキオ
+キクチ,マサオミ
+カミウラ,カズヒデ
+カネダ,テツオ
+コンノ,ヤスオ
+カワモト,シゲミ
+カバヤ,ヒロシ
+コブクロ,ケンキチ
+クマガイ,ユウジ
+コンノ,ヒデキ
+コヤマ,ショウイチ
+キタシロ,ヒトシ
+コダマ,タケシ
+カトウ,エイイチ
+キムラ,トシハル
+コイデ,イサオ
+クヤマ,タケシ
+キリハラ,モリヒロ
+カヨ,マサタダ
+カネコ,トシオ
+コハラ,イワオ
+カトウ,ユキオ
+コイ,セイイチロウ
+カヤマ,イサオ
+コイケ,クニヒコ
+コジマ,アキト
+コマツ,マサジ
+キタムラ,ノリヨシ
+キタワキ,ゼンイチロ
+カサジマ,ヒロフミ
+キムラ,テツロウ
+カミグチ,サチオ
+カトウ,フジオ
+カワムラ,トシヒト
+カドタ,ノブタカ
+オオタケ,シゲル
+カトウ,トモミ
+キノ,ノブヒサ
+カミ,マサミ
+キクチ,マサユキ
+カキウチ,ヒロヒサ
+コジマ,マサミ
+カタオカ,シュンスケ
+クボタ,ヒロユキ
+キタザワ,マサアキ
+コミネ,モトユキ
+クボ,タカユキ
+キタズメ,カズトシ
+コバヤシ,カツオ
+カワグチ,ヨシヒコ
+ケガサワ,ヒサシ
+コウチ,ミチオ
+コヤマ,トオル
+カワキタ,タカヒデ
+カワミツ,ショウゾウ
+カタヒラ,アツオ
+カワギシ,ヒロシ
+コンド,ヨシミツ
+キムラ,アキヒコ
+クボヤマ,シンタロウ
+クマモト,マサキ
+カワタ,フミヨ
+クニノブ,ヤスオ
+カマダ,タカシ
+カク,オサム
+カネコ,オサム
+コバヤシ,アキラ
+カシオ,ケンジ
+カナイワ,ケイジ
+ケンモチ,タダシ
+キクチ,オサム
+カザマ,ヤスアキ
+コマツモト,エイコ
+コンド,カツヒコ
+キクシマ,カツマサ
+コバヤシ,セイコ
+クマガイ,マサトシ
+カトウ,カズヒコ
+マルバヤシ,タカシ
+ムトウ,カツミ
+ミタニ,タケシ
+ミワ,マサシ
+シミズ,ツトム
+ミズノ,トシオ
+マチダ,カズオ
+マツイ,カズタミ
+ミウラ,リュウイチ
+ヒノ,リョウイチ
+ムラカミ,マサヒロ
+ミヤノ,ヒロユキ
+マルイ,マサノリ
+ムラサキ,トシオ
+マサカ,ヒデノリ
+ミネタ,タケミ
+マツナガ,ユタカ
+ミナガワ,セイジ
+ミヤケ,ナオアキ
+マツモト,ケンイチ
+ミサワ,トシユキ
+マエダ,コウゾウ
+ウダガワ,トシカツ
+ミヤハラ,コウジ
+ムライ,ショウジ
+マツモリ,シゲキ
+マサキ,キクオ
+ミウラ,エイジ
+モトミヤ,キヨシ
+ムラカミ,ヒロフミ
+マトバ,マサアキ
+ミウラ,トシオ
+マツカワ,カズヒロ
+ミズタニ,ナオヒコ
+ミヤノ,マサユキ
+マツダ,フサチカ
+ミス,アキラ
+マツヤマ,トシエ
+ミヤモト,タダアツ
+ミズノ,フミオ
+マルヤマ,セイジ
+マルコ,ミチタカ
+モチダ,トオル
+モトハシ,マモル
+ミズヤ,コウジ
+ミヤザキ,ミチマサ
+ミヤガワ,ミツル
+ムラシマ,タダオ
+マスサコ,セイイチ
+モリ,イチロウ
+モリタ,カズオ
+ミナミ,ヨシアキ
+ミヤキ,マサオ
+モリヤマ,ケンジ
+ミズタ,ヨシオ
+マツイ,ミツグ
+マツオ,マサヨ
+マツシタ,ユタカ
+コバヤシ,カツミ
+ムカエ,マサジ
+モリイ,ギョジ
+モリタ,タイゾウ
+ムカイ,マサオ
+マツオ,トキワ
+ムラヤマ,ヨシヒコ
+マツモト,トシオ
+ミヤサト,ミノル
+ミヤザワ,ヨシオ
+モリムラ,タカシ
+ムラノ,ヒデオ
+マスダ,ミノル
+ムラタ,ノブオ
+ミヤサカ,ケンジ
+モトバヤシ,マサミツ
+ミズノ,ユリコ
+モモイ,ヨシオ
+マツダ,トクオ
+スガワラ,ナオエ
+マツバラ,マコト
+マツモト,ミノル
+ミヤハラ,アツヨシ
+ムライシ,マモル
+マツムラ,マモル
+ミヨシ,テツヨシ
+モリモト,カズオ
+ミズタニ,タケシ
+マツバ,アツシ
+マツイ,カン
+ムラカミ,カズオ
+モリタ,シゲハル
+ムラタ,シゲオ
+マサキ,ヒロシ
+ミヤザキ,ヨシキ
+マツバラ,シンイチ
+ムラマツ,アツシ
+モリ,ノブユキ
+モリムラ,マサカズ
+スワ,ヨシミ
+コワタリ,ナオキ
+マツザキ,ヨシノブ
+マッサキ,マサヒロ
+ミタク,ケイゾウ
+マツカワ,サトシ
+モギ,シコ
+マブチ,キヨシ
+マツモト,トシロウ
+モリ,リョウイチ
+マツウラ,カズナリ
+マエダ,アキオ
+マスダ,ヒロシ
+マエニシ,ヒロシ
+マルヤマ,ナオヤ
+マツダ,タカオ
+マキ,トシヒコ
+モウエ,シンイチロウ
+ムライ,トヨミ
+マツイ,クニヒコ
+モリタ,マサル
+マエダ,タカブミ
+ムラウチ,イサム
+ミツヤス,アキラ
+モリ,ケンジ
+マツダ,サトシ
+マツオ,マサフミ
+マルヤマ,アキオ
+マツガエ,シゲヒロ
+カミクラ,コウイチ
+ミドリカワ,ユウジロウ
+マスダ,シゲノブ
+ミテラ,ヤスオ
+マツナガ,アキラ
+モリオカ,ヨシミ
+ミソオ,エツオ
+ムラヤマ,カツヨシ
+モリモト,シゲル
+モリ,ツトム
+マスダ,ヒロタカ
+ミヤモト,カツマサ
+ムラタ,ヨシテル
+ミナミサワ,カズヒロ
+マシマ,スミヒロ
+モリグチ,ヨシアキ
+マツイ,タカシ
+マエカワ,ヒトシ
+モチズキ,ジュン
+マスダ,シンキチ
+マツモト,ジュンゾウ
+モリナガ,カズノリ
+マスダ,ヒロタミ
+ミウラ,クニオ
+マツノ,タダオ
+マツオカ,ヨシテル
+マチイ,コウイチ
+ミズタニ,トシオ
+マツモト,ヨシノリ
+マサキ,ヒデト
+マツモト,タケシ
+ミツヤ,ヒデヤス
+ミズノ,ジロウ
+マエダ,フミオ
+ムラマツ,ケンジ
+ムサシノ,アキラ
+マエハタ,マサヒコ
+マツザワ,ヨシオ
+ミツイ,ヨシカズ
+モモダ,ミツカズ
+マツオ,カツミ
+ミワ,シュウジ
+ムラカミ,テツヤ
+ミカミ,ハルキ
+ヌカザワ,シンジ
+ナカムラ,シズエ
+ニシムラ,クニヒコ
+ニッタ,ケンジ
+ナガツユ,トキヤス
+ニイノ,ヒロシ
+タブチ,ケンジ
+ニシノ,サブロウ
+ヌカタ,タモツ
+ニシムラ,ヒサオ
+ナガノ,タカユキ
+ナカガワ,ヨシアキ
+ニシヤマ,ヒロシ
+ナカジマ,マサヒロ
+ニシダ,ミツオ
+ナカムラ,フミオ
+ノムラ,ユキオ
+ナカモト,ノリアキ
+ナカガワ,カズタミ
+ナルサワ,ツネオ
+ナイトウ,タケオ
+ノベ,ヨシヒデ
+ニシナ,ヤスノリ
+ノムラ,タダシ
+ナカムラ,シンジロウ
+ニカイドウ,ヨシヤス
+ナカダ,タツオ
+ニシナ,キミヒト
+ナリタ,トシオ
+ノグチ,ヨシヒロ
+ノヤ,コウキ
+ナガイ,マサト
+ナカムラ,キヨシ
+ニイズマ,タカミ
+ナカガミ,シュウイチ
+ナガタ,キシオ
+ニシザワ,ハツエ
+ノセ,ジュウロウ
+ナガイ,ユキオ
+ニシザワ,マサオ
+ナカハタ,カズトシ
+ナカジマ,ヒロシ
+ナカダ,マツオ
+ノナカ,マサキ
+ナカガワ,マサアキ
+ナカシマ,タミオ
+ナカモト,マサル
+ニシオカ,ヒロシ
+ニシマエ,シンタロウ
+ナカムラ,マサオ
+ナカニシ,カズオ
+ノダ,ムツヤ
+ナカムラ,アキヒコ
+ナカザワ,リョウイチ
+ニシダ,ヨシロウ
+ニシダ,タダユキ
+ニイ,リョウジ
+ヤマモト,ヒトシ
+ナカウチ,ヤスオ
+ナカジマ,カズタカ
+ナカムラ,マサミ
+ノムラ,クニヒコ
+ニシムラ,ヤスヒロ
+ノナカ,タダヒコ
+ニシムラ,トシヒデ
+ニシオ,キヨシ
+ナガオ,キヨシ
+ニイミ,ケンジ
+ナカムラ,ヒデユキ
+ネズカ,ヨシノリ
+ナカムラ,ユキトシ
+ナカザト,テツヤ
+アサノ,ジュン
+ノガミ,クニヒロ
+ナカジマ,カズヒコ
+ナイトウ,カズアキ
+ナカムラ,ヨシノリ
+ナカニシ,キヨアキ
+ナカダ,タミオ
+ナガサワ,タカシ
+ナガノ,カズユキ
+ニッタ,ユタカ
+ナンバ,ミツヒロ
+ノズエ,クニミツ
+ナガミ,ヒロシ
+ナガイ,ジュンイチ
+ナカハラ,ミズホ
+ナカジマ,タケヨシ
+ナカジマ,カツオ
+ニシダ,アキヒコ
+ナオイ,シチロウ
+ナベシマ,ヨシマサ
+ナカノ,ショウイチ
+ナカムラ,ハルオ
+ノダ,ミツヨシ
+ナカセ,トシアキ
+ナカジマ,ミツシゲ
+ナガサワ,タダシ
+ニヘイ,ミツヨ
+ナガイ,リョウスケ
+ナカシマ,タカオ
+ナカオ,セイ
+ナカガワ,ノブオ
+ナイトウ,コウイチロウ
+ノジマ,ユウスケ
+ナガノ,ユキオ
+ニシダ,カズオ
+ナカダ,キヨシ
+ナカハラ,タカノスケ
+ナカジマ,ムネタカ
+ネモト,キヨシ
+ナカムラ,ケンジ
+ナガトモ,マサミ
+ナカムラ,ヒトミ
+ナカヤマ,ヨシオ
+ナカムラ,ホズミ
+ナカムラ,フミノリ
+ノジマ,テツロウ
+ナガフチ,ヤスロ
+ナカノ,ゴイチ
+ニシヤマ,シンイチ
+ナカムラ,マサユキ
+ナガシマ,ナオジ
+ニワ,ユタカ
+ナカノ,ヤスアキ
+オニザワ,ユキオ
+オシカタ,マサオ
+オカ,カツヒロ
+オクヤマ,ノボル
+オキ,スミオ
+オカミヤ,ケンジ
+オグラ,マサキ
+オオデ,マサノリ
+オノダ,マサヒコ
+オオニシ,マサキ
+オクダ,キョウイチロウ
+オクダ,トシオ
+オガワ,コウジ
+オノ,マサオ
+オオスミ,コウジ
+オオツカ,タカシ
+オオトモ,マサアキ
+オカザキ,ユウジ
+オオハシ,ヒロシ
+オギノ,フミオ
+オサダ,シズアキ
+オオバ,ヒサシ
+オシマ,アヤコ
+オオカワ,カズヤ
+オカモト,ヒロシ
+オガワ,トオル
+オノ,キヨト
+オカノ,トオル
+オザワ,ユキマサ
+オハク,ヒロシ
+オシタニ,タカシ
+オザワ,ヒロシ
+オオハシ,タカノブ
+オオハタ,コウトク
+オノデラ,ミヤ
+オノ,フミオ
+オオオカ,フジコ
+オオノ,ヨシノリ
+オオハシ,ユタカ
+オオタ,タカシ
+オオモリ,ケンタロウ
+オシマ,コ
+オカモト,コウイチ
+ヒロセ,トモユキ
+オオミズ,ヤスオ
+オオノ,ミツオ
+オチアイ,マサヒサ
+オカベ,タイ
+オオタニ,アキヒロ
+オクノ,シゲオ
+オオスガ,ケンイチ
+オオノキ,カオル
+オオイシ,ジ
+オカダ,モトツグ
+オオミヤ,ユキヒロ
+サタケ,ツネオ
+オダギ,ハチロウ
+オオタ,サトル
+オフチ,タダヨシ
+オオカワ,カオル
+オカド,サトル
+オオサワ,ヒデキ
+オギサワ,ユキヒロ
+オカベ,アツシ
+オトヨシ,ヒデオ
+オガワ,タツロウ
+オリガサ,ヤスタケ
+オオバ,ユキコ
+オバタ,タカシ
+オオノ,タカヨシ
+オオサカ,マサヤ
+オオミネ,ケンゾウ
+オオタ,ヨシヒコ
+イノウエ,アキオ
+オオコシ,シゲキ
+オザワ,ヒデオ
+オカベ,ケイイチ
+オオボラ,エイジロウ
+オオタ,ジョウイチロウ
+オザキ,ジュンイチ
+オクダ,ヤスヒロ
+オザワ,テルアキ
+オカダ,ススム
+オオツカ,コウジ
+オノデラ,コウイチ
+オシオ,タダシゲ
+オダシマ,タダシ
+オザキ,シゲル
+マエダ,ミツオ
+オキ,マサオ
+オノダ,トキエ
+オナギ,アキラ
+オクダ,ヨシキヨ
+オオヒラ,セツジ
+オノザワ,トシヒコ
+オギハラ,クニアキ
+オオクマ,カズオ
+オオハラ,ノブヒロ
+オキ,カツスケ
+オガワ,タツヤ
+オオヤ,ヒデホ
+オオサワ,サブロウ
+オオハラ,ヒロヨシ
+オダ,タカコ
+オザワ,ミツオ
+オガタ,リョウスケ
+オカノ,アキコ
+オオイシ,シマ
+オナイ,ヒロユキ
+オオツカ,ジュンコ
+オオツカ,テツオ
+オイデ,ヨシアキ
+オキヤマ,カズコ
+オグシ,アケミ
+オダ,ヤスシ
+オカバヤシ,タダヒロ
+オオタニ,ジュンジ
+オオツキ,アユミ
+オカダ,ヒロシ
+オオスミ,チハル
+オオイガワ,タカハル
+オカダ,ススム
+オザワ,カズヒコ
+オオタニ,テツロウ
+オザキ,ヒロユキ
+オオタ,マサコ
+ヤナギヤ,ユカリ
+ナカタニ,シンイチ
+コバヤシ,ヒデシ
+ミクニ,ヨシヒロ
+スズキ,ジュンイチ
+ハダノ,ユキマサ
+ミヤマ,カオリ
+タカハシ,マサト
+シラオガワ,ライタ
+ナカムラ,アソカ
+マツザキ,キイチロウ
+ヤマシタ,タカヨシ
+シモヤマ,シゲル
+フタムラ,ノブユキ
+クワ,タカシ
+ナカムラ,トシミツ
+ヨコヤマ,ヒロアキ
+ヒルマ,ユキコ
+タチカワ,ナオミ
+ワカバヤシ,テルミ
+タカハタ,トモ
+アベ,エミコ
+セキ,リュウゴ
+ヤマザキ,ヒトシ
+ヤマネ,ヨシヒロ
+タザワ,ジュンジ
+カジカワ,アサコ
+サトウ,マサヒロ
+カワウチ,マリエ
+オオヤマ,ノブコ
+シンミョウ,ジュンコ
+タチワダ,ナオミ
+オオクボ,テツヤ
+トウゴウ,ヒロユキ
+ナガクラ,タカハル
+イトウ,ケンソウ
+ヤマザキ,セイ
+カザマ,ハルユキ
+カンバヤシ,ヒデオ
+ササノ,メイコ
+カワシマ,ミユキ
+シングウ,ノリアキ
+コイズミ,タクヤ
+カネコ,ヨシミ
+コバヤシ,スエツグ
+カモシタ,シュウイチ
+タムラ,サチヨ
+ハセガワ,タカシ
+クリハラ,ヒロフミ
+カナオカ,ヒロシ
+コバヤシ,ユキタカ
+ヒイシ,タカユキ
+ニヘイ,イクコ
+マルタ,ナオコ
+トオヤマ,ナミ
+セキザワ,チカ
+アリマ,ヤヨイ
+クリハラ,トモエ
+スミノ,ミノル
+ヨシダ,ヒデキ
+キノシタ,トモコ
+オチアイ,ミユキ
+ウマヤハラ,ヤスミ
+ホソカワ,ヒロコ
+フカガワ,シンジ
+カワムラ,エイゾウ
+マツイ,ケイコ
+ヨシモト,タカヒロ
+ウナカミ,トモコ
+カネマツ,サキコ
+カワカミ,マコト
+トヨダ,ヒデオ
+ヤノ,アキヒコ
+セキ,タカアキ
+ナカニシ,ヒトシ
+ハシモト,アキ
+フカヤ,クニアキ
+ミヤモト,ヒデクニ
+タケダ,トシフミ
+ミヤザワ,ミキオ
+イケダ,カズヒコ
+オシマ,ヒロシ
+ナカムラ,エリコ
+ゴトウ,ユウイチロウ
+ウシゴメ,ヒロシ
+クワヤマ,ヒロアキ
+ツカダ,チハル
+ムラタ,チカオ
+サトウ,ヨシタカ
+クロダ,カオリ
+スギモト,クニオ
+ヤスダ,コウイチ
+キウチ,サトシ
+ケドウイン,ジュンイチ
+タナカ,チカ
+ナカムラ,ヒロアキ
+クリハラ,トヨヒコ
+タキザワ,カズノリ
+ウエダ,ヒデアキ
+コベ,ヒデアキ
+ノグチ,フミオ
+コンノ,トモヒコ
+トミタ,カナメ
+オオタ,ユキコ
+マキ,ヒカル
+アマノ,ケンイチロ
+コミネ,アキヒロ
+サトウ,トモヤ
+イマデ,ユウジ
+マツナガ,タツヤ
+スズキ,タケシ
+マツオ,カエ
+サイトウ,キョウイチ
+ヨシザワ,ワタル
+ウヤマ,ケイコ
+アンドウ,マサヒコ
+スズキ,サトシ
+ヨシダ,カズトシ
+カワダ,エミコ
+フクダ,ケイ
+モリシマ,マサシ
+ツチダ,トオル
+サカイ,ミチヤス
+ツカダ,アツシ
+ハットリ,ヒロシ
+タムラ,コウジ
+ワタナベ,ナオキ
+コスギ,タカアキ
+ヒラタ,ケイタ
+スギヤマ,ヨシユキ
+モリカワ,モトハル
+カドタ,アキヒロ
+サノ,ヒロシ
+オザキ,テツオ
+ヨコマツ,カツヒサ
+タナカ,ユミコ
+イシサカ,コウイチロウ
+イシザワ,ユズキ
+コバヤシ,ジュン
+ヨシダ,トモアキ
+キムラ,リエコ
+オオツカ,タケル
+アダチ,タカシ
+アカサカ,ショウジ
+ミヤモト,ミドリ
+イチムラ,カオリ
+オシタ,ノブユキ
+ホンダ,オサム
+カヤヌマ,コウジ
+ノザキ,ユウジ
+カドワキ,フジエ
+オジ,ヤスヒロ
+タグチ,ヤスツネ
+タケイシ,アキト
+ヒライ,シンジ
+カナザワ,ジュンイチ
+フルカワ,エリカ
+モリナカ,マサヨ
+アライ,トシアキ
+タナカ,ヨシノリ
+シミズ,ヨシユキ
+イチハラ,マサル
+キタノハラ,ヒデヒロ
+キタオ,トモヒト
+モリモト,ヒデキ
+キタムラ,リカコ
+ササザワ,タケシ
+マツオカ,ナオコ
+コウラ,タカヒロ
+ミワ,ヒロコ
+ヨシオカ,ヒロコ
+ホリ,ユミコ
+サイトウ,ヨシヒト
+ナガセ,ヒデハル
+モリシマ,ヒロカ
+オワリ,マキコ
+タナカ,ミキ
+テラムラ,トシマサ
+コバヤシ,キョウゾウ
+サイトウ,ヒロノリ
+キムラ,タケシ
+ハシモト,ヨシヒサ
+ナカガワ,テツヤ
+ナカムラ,マサオキ
+ハギワラ,クニヒコ
+ニシカワ,トモミ
+キタジマ,コウイチ
+タカウラ,ヤスオ
+アサダ,ヒデヨ
+キタズメ,アラタ
+ネモト,ワカコ
+タナカ,マサヒコ
+タナカ,カズヒロ
+アダチ,カズヒコ
+ハラ,マサユキ
+アカマツ,ケンゴ
+イマムラ,アツシ
+ムラヤマ,ヨウジ
+タケウチ,タカユキ
+ズシ,ヤスオ
+コバヤシ,カホ
+ヤマザキ,アツコ
+ハマグチ,ソウイチ
+カゲヤマ,ヒロユキ
+カナモリ,ヒデキ
+カトリ,ツヨシ
+アライ,ショウヘイ
+ミヤタ,マリコ
+スズキ,エミコ
+ハルタ,ヒデヤ
+ナカザワ,タカシ
+スガ,マサユキ
+マエデラ,テルユキ
+アラマキ,アツシ
+キタノ,タツヤ
+ヨシノ,シゲミツ
+ミクリヤ,ヨウコ
+オクノギ,ケンジ
+サクライ,ヨシカツ
+コンド,ナオ
+スズキ,ノリコ
+クリハラ,クミコ
+ムコウグチ,マキ
+フジイ,アキヒロ
+カゲ,ユウコ
+マエダ,ノブヤ
+ナガホリ,ユキコ
+ツジ,モモコ
+キムラ,シンタロウ
+マツオ,コウイチ
+タテノ,ノリヨシ
+キムラ,マコト
+スザキ,タツヤ
+イワサキ,ミヤビ
+サトウ,ユリ
+ニッタ,ダイカン
+タナカ,マリ
+シマダ,アカネ
+タニグチ,ノリコ
+ホンダ,スナオ
+ナカタニ,タカシ
+ミヤジマ,シュン
+クキヤマ,コウジ
+セキネ,リョウタロウ
+ヨシハラ,サトル
+ヒラタ,マサカズ
+ナガサワ,トシオ
+ナカガキ,ケイコ
+クロカワ,ヤスユキ
+カケタリ,ケンジロウ
+イトウ,カヨコ
+マエカワ,ジュンジ
+マツダ,アキオ
+クワハラ,マコト
+イイズカ,ワカコ
+マジマ,ヒデユキ
+ムラタ,トモコ
+アキイケ,ユウイチ
+ナミキ,テツヤ
+ヨシノ,ミキコ
+スズキ,ユキ
+タムラ,ミドリ
+カメダ,シンヤ
+ニシ,ヤスシ
+イナオカ,ケンジ
+イワサキ,ユウジ
+カンダ,ナミ
+タダ,エイキ
+ウツ,トモアキ
+シマダ,マサオ
+ヨシダ,ヒロユキ
+オクガワ,ヨシフミ
+スズキ,ケイコ
+タンポ,ミネコ
+ワダ,ナオコ
+ウルシハラ,エイスケ
+イイオ,タロウ
+ニイハラ,キョウコ
+オムラ,タクヤ
+イノウエ,ゼンジロウ
+モリナガ,トシヒロ
+サノ,ヒロシ
+ナカタニ,マサヤス
+アベ,マサナオ
+ウチダ,ケンジ
+ヒロタ,ユウサク
+イワクラ,カイジロウ
+イシオカ,ヒデアキ
+トキタ,ナツコ
+キノシタ,ナオスケ
+ミズノ,アイコ
+ヤスエ,マサミ
+イワモト,サトル
+ヤマジ,ユカリ
+コサイ,ユウコ
+クボ,トシエ
+チバ,ヒカル
+ヤツタニ,アツシ
+イガラシ,タカズミ
+アラカワ,アカネ
+テラサキ,モトアキ
+セゴエ,サトコ
+トクシマ,マサコ
+バンドウ,ショウコ
+タキザワ,ケンジ
+ミズサキ,ケンタロウ
+タキグチ,ケイ
+ヒオキ,マサシ
+ナカイ,アツミ
+オイカワ,レイコ
+マツムラ,チグサ
+エンド,ヨシオ
+タジマ,サトコ
+ヤマザキ,エイジ
+セノオ,コウジ
+ハラダ,トシマサ
+フクイ,トモカ
+マツウラ,ケイ
+カワムラ,ユウイチ
+テラモト,タカミチ
+ハギワラ,タクミ
+ナカシマ,エミコ
+キノシタ,ミチオ
+アライ,チズル
+ムラヤマ,ジュンコ
+サエグサ,トモミ
+タナカ,ミツコ
+マエダ,オサム
+ミヤザキ,カズミ
+イケベ,アキラ
+クワバラ,タカノリ
+ヨダ,タカオ
+タチバナ,ヤスアキ
+ヤマグチ,ヨシアキ
+イシハラ,ケイコ
+タキザワ,マサアキ
+ヒラノ,ヨシブミ
+カワサキ,タカヨシ
+ヤマモト,ヒサトシ
+アラセ,アツシ
+ヤナギサワ,マサノブ
+シオヤ,アキエ
+サトウ,コウイチロウ
+カトウ,ヒトミ
+オノ,ヨシタカ
+キタハマ,ヤスマサ
+ゴトウ,ノリコ
+ニノミヤ,マユミ
+ウスイ,トモノリ
+ミズシマ,タケル
+スドウ,マコト
+イケダ,アキコ
+ナカヒガシ,アリシゲ
+クリモト,ロワル
+トダ,ヒロタカ
+ハカマタ,アツノブ
+タニグチ,ハルミ
+イマゼキ,イクコ
+ホリオ,マユミ
+カスガ,ツヨシ
+カワセ,ナオコ
+サトウ,ヒロミ
+タカナシ,ノブアキ
+マツシタ,タカシ
+ヤグチ,ヒデキ
+カネコ,カズユキ
+ヒダカ,ミオ
+サッサ,タイチ
+ソガ,タクヤ
+スギウラ,ケンタロウ
+サトウ,アミコ
+タニバヤシ,サチコ
+ニシオカ,タカシ
+トモナガ,ナオキ
+オオハシ,ヒデキ
+ナガシマ,セイタ
+タニガキ,セイコ
+コウダ,コミナ
+キヨノ,サトシ
+ヤマカワ,トシオ
+ナカジマ,ヒロシ
+モテギ,コウジ
+オオヌマ,ユタカ
+サトウ,シゲオ
+フルイエ,ヨシコ
+アイモト,モトフミ
+ヨコオ,クニオ
+ニシカワ,ケンジ
+ビトウ,ヨシナガ
+キタムラ,シンヤ
+ヤマカワ,サダハル
+トミタ,タケシ
+ツチダ,ヒデト
+イシグロ,リエ
+マツオ,トオル
+ウエモト,コウイチロウ
+イイダ,ミキコ
+スズキ,シゲヒロ
+タムラ,カズヨシ
+オクダ,ノボル
+ホリ,ヨシミ
+クサツグ,ヤスシ
+ヤマダ,マサナオ
+アサハラ,タカヒロ
+トクダ,マンナリ
+イデタ,ヨシヒロ
+イトウ,テルミチ
+サトウ,キイチロウ
+ツジサワ,ケイ
+オノ,コウジ
+イワマ,ノブアキ
+ダイゴク,ジュンイチ
+ヤマムラ,ヨシカズ
+ハセガワ,トシカズ
+イギ,タカヒロ
+マカベ,マサカツ
+オカモト,カツオ
+オオハラ,ユキナオ
+セキヤマ,カズオ
+キタジマ,ヒロアキ
+トリウミ,マサヒロ
+ミヤザキ,タテオ
+ウイ,ヨシヒト
+クラモチ,カズヒロ
+シオヌマ,ヒデトシ
+ライタ,イクオ
+シモコウベ,ノブカズ
+サワノ,テルオ
+サカニシ,ユウジ
+ササキ,トシオ
+セイノ,ケイゾウ
+スズキ,アキヨシ
+サカモト,トシオ
+スズキ,シロウ
+サワノ,カツヤ
+シガ,テツヤ
+ゴトウ,トクマサ
+スダ,ジュンジ
+スズキ,ヨシコ
+サカキバラ,トシオ
+サトウ,ケンジ
+サカグチ,ヨシノリ
+スギサキ,ミツクニ
+スエキ,タカシ
+スズキ,ノブアキ
+シバタ,コトジ
+スギヤマ,タダオ
+サカイ,マサユキ
+シミズ,タダシ
+スギモト,トシオ
+サトウ,タクジ
+セキ,オサム
+サクライ,ハルユキ
+セキグチ,コスケ
+サトウ,エイジ
+スズキ,ユウノスケ
+サイトウ,タダオ
+セキネ,トヨフミ
+スズキ,ツトム
+イイダ,キヨタカ
+スズキ,ヒロシ
+ササキ,ミツオ
+スエナガ,トシオ
+サカモト,ヒデアキ
+サイトウ,マサミ
+スガオ,テツジ
+シマズ,ミノル
+サイトウ,フミオ
+シノザキ,アキラ
+スズキ,ヨシユキ
+スナガ,ケン
+サトウ,オサム
+スズキ,ケイタロウ
+セキネ,サダノリ
+ササキ,トシオ
+サワダ,アキラ
+サイトウ,カズオ
+シモゾノ,タダヒコ
+スエ,タカシ
+サドトモ,アキラ
+セキネ,ケンスケ
+サトウ,サトシ
+サンゴ,ヨシノブ
+スドウ,クニアキ
+ソノダ,ナオミ
+シマ,ミノル
+サトウ,ヨネゾウ
+サトウ,トミオ
+シブヤ,カズアキ
+サトウ,カズオ
+サトウ,テルヒコ
+サカタ,ヨネオ
+サイトウ,オサム
+スワキ,タカシ
+ソリ,タケジ
+サカモト,シュンイチ
+シライシ,マサトシ
+スズキ,アキオ
+シマダ,トシオ
+スズキ,マサヒロ
+スズキ,ヨシオ
+サトウ,ハジメ
+スズキ,キヨシ
+サトウ,ツトム
+シゲマツ,キヨシ
+サガラ,タカトシ
+サイトウ,ユキオ
+シングウ,タカオ
+スガヌマ,テルノブ
+ソガ,タケシ
+ササキ,ノブユキ
+サトウ,シゲル
+サワダ,テツオ
+ソマ,オサム
+シバタ,タケオ
+サトウ,ミチコ
+サトウ,キヨシ
+シマダ,ヒデオ
+ササキ,ノブオ
+サトウ,ケンジ
+サイトウ,シゲル
+シモデ,ヒデキ
+ササキ,トシオ
+サトウ,ヨウ
+サトウ,ヒサオ
+サワダ,シンイチ
+シロサキ,ヨウイチ
+シバイ,ススム
+サイトウ,ミチオ
+スズキ,トシオ
+ソガベ,イサオ
+セガワ,チヒロ
+シミズ,ミノル
+スズキ,ヨウジロウ
+シロヤマ,ヨシヒコ
+シイナ,ヨシオ
+サヤマ,マモル
+サカモト,マコト
+サトウ,ヒロシ
+スズキ,タダヨシ
+スズキ,テツロウ
+ササセ,カツユキ
+サクライ,マサキ
+シマダ,セイジ
+サトウ,カツヒロ
+シモノ,ヨウスケ
+スズキ,ヨシナリ
+スギモト,マサオ
+シミズ,タケオ
+サノ,ヨシノブ
+スズキ,コウヘイ
+シマダ,カズヒコ
+スズキ,ハルヒサ
+スギフジ,ヒトシ
+サカイ,シンイチ
+サカグチ,エイジ
+スガワラ,ダイサク
+シノズカ,ジュンイチ
+シガ,ミツオ
+サカガミ,トヨマ
+スズキ,カズユキ
+スギノ,ヒデオ
+スギウラ,ススム
+シミズ,カズミ
+スズキ,タケシゲ
+ササコ,セイゾウ
+セキ,ユキヨシ
+サトウ,タツジ
+シマ,ヒロシ
+スズキ,キヨテル
+サカモト,ヨシカズ
+ササキ,ヒロシ
+シマダ,イソジ
+サイトウ,タダヒサ
+シオタ,トヨオ
+シオダ,イサム
+スダ,エイジ
+シイナ,ケンゾウ
+シオノヤ,テツオ
+サイショウ,ヤスヒロ
+ソイダ,エイイチ
+ソマ,カンジ
+サトウ,ヒロシ
+サトウ,タケミチ
+シオバラ,キヨエ
+ササオカ,ヨシタカ
+ササキ,ミツノブ
+セト,フミオ
+シュドウ,タカオ
+サカモト,ヒロシ
+サクマ,タカシ
+シノザワ,ツヨシ
+シオバラ,ヒロユキ
+サクライ,ユズル
+サトウ,メグム
+サクライ,トシオ
+ササベ,ヒロシ
+サトウ,リュウゾウ
+スギウラ,ユウゾウ
+サカイ,マサオ
+ソマ,ノブオ
+ソウヤ,セイジ
+ソネカツ,アキラ
+セキネ,タケオ
+スズキ,ノリオ
+セキネ,トシツグ
+サカキバラ,カズトシ
+シモカワベ,ケン
+サワムラ,ナルミ
+セキ,ジュンイチ
+スズキ,コズエ
+サカマキ,ヒデアキ
+サガワ,トシヒサ
+スギヤマ,タケユキ
+スギモト,コ
+セオ,ユウジ
+サイトウ,タカシ
+サカイ,ミキオ
+サクライ,タダヒロ
+セキネ,マサノリ
+サトウ,ハツミ
+シミズ,タカシ
+シミズ,トシオ
+サイトウ,マサオ
+サクライ,マサアキ
+スギヤマ,ヤスオ
+シズカ,ヒサナオ
+シラカワ,アキラ
+サイトウ,ユズル
+サキモリ,イワオ
+サトウ,テツオ
+セキグチ,オキトシ
+セキネ,ノリコ
+シバタ,コウジロウ
+スズキ,タカヒロ
+サイトウ,ヒサオ
+サトウ,ノリオ
+セキネ,オサム
+サカイ,ハルヒコ
+ササオ,シンジ
+スドウ,マコト
+モリ,ショウジ
+シミズ,エイゾウ
+サトウ,テルオ
+スズキ,イサオ
+シムラ,ヒロトシ
+シバサキ,ヒロシ
+スガマタ,カズオ
+スズキ,ヒロシ
+シオノヤ,キヨカズ
+タカハシ,トシロウ
+ツキヤマ,キクオ
+ツノダ,ヨシキ
+タカハシ,ナオト
+トクザワ,モリハル
+タグチ,マサオ
+タカギ,ヒデオ
+タカノ,テルミツ
+タハラ,キヨカズ
+トヨサワ,コウイチ
+トヨマス,ケイイチ
+タカハシ,マサノブ
+タケウチ,テイジ
+タキイシ,リョウジ
+タカイシ,シゲオ
+タカサキ,ケンジ
+タニガワ,ヒロユキ
+タカハシ,マサトシ
+タナハシ,コウジ
+タマキ,ヒロシ
+トバ,マサシ
+タバタ,タカシ
+ツジ,タカオ
+タナカ,アツシ
+タカハシ,マサノリ
+トクナガ,キミオ
+タグチ,マサオ
+タキザワ,カツシゲ
+トミ,タネマサ
+ツジ,ケイコ
+ウチダ,トシオ
+タナカ,イワオ
+ツネヨシ,ノリカズ
+タカノ,ムネオ
+タカハシ,ユキチ
+タカヤナギ,ヨウイチ
+タケダ,ケイスケ
+タボ,ユタカ
+タナカ,カズオ
+タケウチ,マサキ
+タカヤス,トヨミ
+ツチヤ,ユハツ
+トクナガ,ケンジ
+ツチダ,ナオカタ
+ツボイ,エイエツ
+タカハシ,マサシゲ
+ツカモト,サダム
+タナカ,シゲル
+トモツネ,ススム
+チジ,トシハル
+サトウ,セイジ
+タカタ,ツネオ
+トハタ,ヨシミ
+タカハシ,ミノル
+タカハマ,ヨシアキ
+テラサワ,ナオコ
+タカバヤシ,ショウジ
+テラダ,シュウジ
+ツカダ,セイジ
+タナカ,ヒデオ
+トリマル,タミオ
+ツチダ,マモル
+タキモト,トシヒコ
+タキイ,ヒデアキ
+タネダ,ケンジ
+タムラ,ヨシノリ
+タドコロ,ヒサオ
+タカオ,マスミ
+タナカ,ヒカル
+タカハシ,ハツオ
+タカハシ,シゲユキ
+タカハシ,フジオ
+トミタ,トオル
+タカハシ,アツノリ
+タニグチ,ミチアキ
+タナカ,ユウゾウ
+ツボイ,ヒロミ
+タケウチ,ホブン
+ツダ,トヨシ
+タケダ,マサユキ
+タケイ,シゲオ
+ツジカワ,ユウイチ
+タケムラ,セイジュ
+タキ,マサアキ
+タカダ,マサアキ
+タキザワ,シゲル
+タナカ,マサジ
+タニムラ,タケヨシ
+ヨシザワ,マサハル
+ツネカワ,タロウ
+タナカ,ヒロシ
+タカダ,カツオ
+ツル,アキラ
+タニ,マサヒロ
+タグチ,イサオ
+タナカ,ジュンゾウ
+タニグチ,カズヒロ
+タナカ,ノリミツ
+ツジ,ユウイチ
+タナカ,カツミ
+ツユキ,ヒサオ
+タマル,マサミ
+ツチヤ,ケイジ
+ツルオカ,ノブオ
+タカハシ,テツオ
+タカハシ,ミツコ
+トウフクジ,トシオ
+タナカ,オキツグ
+タカギ,キョウコ
+タカハシ,ヨシヒサ
+タニグチ,リョウジ
+トヨダ,ヒトシ
+タカギ,タケシ
+タケイ,シゲル
+ツダ,フミオ
+ツネヒロ,ジュンジ
+タキザワ,トシオ
+タチバナ,ゴイチ
+タカハシ,カツユキ
+タニグチ,コスケ
+タケダ,カズト
+ツチヤ,ケンイチ
+タカハシ,トシアキ
+タノウエ,ヒコサブロウ
+タカバタケ,マサノブ
+タカハシ,マタサブロウ
+フナキ,テルヤス
+タケダ,カツマサ
+トクナガ,タツ
+アサイ,ユウジ
+タカハシ,ミキコ
+タカハシ,ノリオ
+タガワ,ショウイチ
+タナカ,ノブユキ
+タチカワ,タケシ
+タグチ,カズヨシ
+タカサキ,アキラ
+タマオキ,シズオ
+タナカ,セイイチロウ
+タカノ,シン
+タケウチ,シゲル
+ツダ,センジ
+タカナミ,マサル
+ツキナワ,ヨシナオ
+トミモリ,ススム
+タケダ,トオル
+トガシ,テツヒコ
+ツズキ,シゲトシ
+トビタ,ノブアキ
+トモナガ,ツネカズ
+ツツイ,シゲアキ
+タカギ,ジュンジ
+タニグチ,カズトシ
+タカノ,トシヒロ
+タナカ,サトシ
+トマツリ,シロウ
+タカギ,イツオ
+タカシマ,フミオ
+タハラ,ヨシアキ
+タナカ,カズコ
+タカダ,ヨシオ
+トリイ,ミツユキ
+タケベ,ノブユキ
+ツカモト,アキオ
+タムラ,ノブヒロ
+トミナガ,サカエ
+タカイワ,サトシ
+タバタ,ケンジ
+タカハシ,クニオ
+テンポウリン,ソウイチ
+テラウチ,サダユキ
+タカハシ,キヨシ
+タカセ,チカラ
+タケムラ,モトイ
+タムカイ,フミオ
+タカハシ,ユウジ
+タケツ,カツジ
+タノオカ,ススム
+タカハシ,タダシ
+トオヤマ,キヨノブ
+タケウチ,アツシ
+タカハシ,マサオ
+ウシオ,ユズル
+ウスギ,カズヒロ
+ウチヤマ,ヨウイチ
+ウメダ,カズスケ
+ウケモリ,マサナ
+ウチダ,ミチヤ
+ウエダ,ヒサオ
+ウチダ,ケイジ
+ウツキ,テツオ
+ウエダ,ミキヒコ
+ウチダ,ヒデキ
+ウエハラ,シュウ
+ウエムラ,ノブヤ
+ウチダ,サダユキ
+ウチムラ,ケイイチ
+ウチダ,ケンスケ
+ウチダ,ケイイチ
+ウエキ,アキコ
+ウカジ,マサテル
+ウチダ,マサアキ
+ウエムラ,ヒデオ
+ウシオ,トクジ
+ウメムラ,トシオ
+ウメシマ,リキツグ
+ウコン,カオル
+ウチイケ,ジュンイチ
+ウルシノ,タカアキ
+ウチナシ,ヘイタ
+ウグサ,マサユキ
+ウノ,トシヒデ
+ウエキ,ミノル
+ウエモト,ケン
+ウエムラ,ユキオ
+ウエハラ,ヒロシ
+ウエダ,シンペイ
+ワタナベ,ヒサユキ
+ワタナベ,カツミ
+ワタナベ,キンヤ
+ワカムラ,ヤスロ
+ワタナベ,ヒデジ
+ワタナベ,ヨシタカ
+ワタナベ,ヒロハル
+ワタナベ,カツナリ
+ワタナベ,ヒデオ
+ワタナベ,カツヒコ
+ワタナベ,ヤスアキ
+ワタナベ,タダシ
+ワキタ,コウメイ
+ワタナベ,トキオ
+ワタナベ,コンゴウ
+ワタナベ,アキラ
+ワタナベ,オサム
+ワタナベ,ケンジ
+ワタナベ,スミタダ
+ワダ,ヤスシ
+ワタナベ,タツヒコ
+ワダ,タケミツ
+ワダ,ホマレ
+ワタナベ,マサアキ
+ワタナベ,アキラ
+ワタナベ,シゲアキ
+ワカバヤシ,ミネオ
+ワタナベ,ヒサオ
+オオタ,マコト
+フジワラ,スミアキ
+コイケ,ミチオ
+カタオカ,テツヤ
+ヒロシゲ,キヨシ
+シンザワ,ヒロシ
+ミズカミ,マサミツ
+ナカジマ,ケイイチ
+フクシマ,シゲキ
+ナカ,ヒロシ
+ヒラヤマ,マサコ
+ニワヤマ,カツジ
+シミズ,ソウジロウ
+フルサワ,ツヨシ
+サクライ,ミズホ
+タケナカ,アツノブ
+スギウラ,カヨコ
+カトウ,ケンジ
+ホシカワ,マサオ
+オガワ,イサオ
+カシワギ,コ
+サカイ,ヒロコ
+モリ,ハルオ
+ホンボ,ノブユキ
+イイジマ,ヨシアキ
+コジマ,タカオ
+タカハシ,ノボル
+ハタ,ショウスケ
+オガワ,アキノリ
+ツチヤ,カツヤ
+コヤマ,イサオ
+フルミ,テツオ
+クメ,ツネオ
+クラタ,セツオ
+ウシジマ,マサカズ
+エバト,カツノリ
+サトウ,ノブユキ
+ムシャ,ナオヒコ
+ユアサ,マモル
+キクチ,ナオキ
+マツバヤシ,テルヨシ
+マツイ,アキラ
+タケムラ,ヒロシ
+テラシマ,ヨウスケ
+クラ,ヒデクニ
+マツイ,ヨシオ
+ウエダ,イサオ
+ハヤシ,シンイチ
+カワナ,ダイジロウ
+ハヤシ,カズオ
+デモト,マサヒロ
+シブキ,タケシ
+ハマ,タツオ
+エンド,コウザブロウ
+ミヤモト,タカヒサ
+マツダ,ヒロシ
+ヤマモト,トモコ
+ムラカミ,シゲオ
+オカダ,ダイキチ
+ワタナベ,カズユキ
+イワサキ,アキヨ
+ヨシダ,スミユキ
+オオモリ,マサノリ
+ミズタニ,ヒサエ
+スギウラ,カズオ
+ノナカ,ミツタカ
+ワタナベ,イサム
+サイトウ,タケオ
+オオカワラ,ゲンタロウ
+カドイケ,タケタダ
+マツモト,ノリカズ
+ナカ,タカオ
+カトウ,ケンゾウ
+カワイシ,ユウコ
+ナガサワ,ツトム
+スヤマ,クンロウ
+クマシロ,ヒロシ
+タカバヤシ,ヒデオ
+コンド,ケンゾウ
+イナバ,サトル
+コバヤシ,トシヒロ
+ヤマグチ,ミカコ
+スズキ,ユウジ
+アキヤマ,ユタカ
+タカダ,アキラ
+サワイ,マサヒコ
+ナカタ,キヨユキ
+イタバ,ユウイチ
+クニギタ,ヨウイチ
+ヤマダ,ヨウコ
+ヤマダ,ユウコ
+タカハシ,ヨウイチロウ
+ウメムラ,ノリヒコ
+コバヤシ,ノブアキ
+カネミツ,タダオ
+キド,マサシ
+カネキ,タダオ
+コムラ,マサヒロ
+フジモリ,ケンイチ
+ヤマシタ,テルタケ
+クリヤマ,マサヒロ
+トザワ,タカシ
+イシイ,チカトシ
+タカハシ,ヨウイチ
+タナカ,カズミ
+イシザキ,テツオ
+ハラダ,マサヒロ
+トクヒサ,シゲヤス
+イシムラ,タダヒロ
+ウエダ,タカシ
+オフチ,クニヒロ
+ヤツルギ,ミツオ
+ミナト,マユミ
+ヨシダ,マサヒロ
+ミナミ,ヤスオ
+オカ,アキオ
+イチカワ,カズオ
+オオクボ,ヒデキ
+イシダ,ヒロユキ
+トミタ,イサオ
+ヒラオカ,ヒロヒサ
+カトウ,ヒデオ
+オムラ,ムツオ
+オサジマ,トシヤ
+フナコシ,セツオ
+コウダ,ヒデアキ
+アサオカ,タツオ
+カスガ,アケミ
+モモハラ,ブンイチ
+ウエムラ,トシヒデ
+オバタ,カズコ
+オノダ,ユキオ
+ミヤシタ,カンジ
+ホソヤ,ヤスオ
+ヤシロ,ユキオ
+ワタナベ,アツシ
+キムラ,トキチ
+カミジョウ,ヒサエ
+サトウ,ヨシオキ
+マツシマ,アキラ
+カタヤマ,ヨウコ
+ヒラノ,ゴヘイ
+ナカライ,ダイスケ
+ヨコヤマ,ヒサオ
+オオガネ,トモヒロ
+キムラ,マコト
+ノザサ,ヨシノリ
+モリノ,カズシゲ
+エチゴヤ,ミチヒコ
+フクシマ,ヒデオ
+イトウ,マサユキ
+イケダ,ユキコ
+トクナガ,リエ
+キモト,アイコ
+オシダ,サトコ
+ハシモト,ノリカズ
+ノグチ,トシノリ
+ミヤベ,カズト
+クワハラ,ヤスエ
+キムラ,ヒロミ
+オダ,カズユキ
+アイザワ,タミオ
+ウエノ,カツオ
+マツバラ,ノリユキ
+タマイ,カズミチ
+シライ,ヨシオ
+オオハシ,コウジ
+タミヤ,フミヤ
+ハラダ,ヨシコ
+ウスイ,タカシ
+コリ,コウイチロウ
+ノダ,シゲヒコ
+ナミキ,マサト
+ナカオ,マサミツ
+カドヤ,アキラ
+オノ,トシヒデ
+シブカワ,シンイチ
+イワサワ,マナブ
+タブセ,イチロウ
+オサワ,タカヨシ
+ナカダイ,ケンジ
+エガシラ,ヒロユキ
+ササキ,カツオ
+フクチ,カズヒコ
+ヨシヤス,ゴウ
+ワタナベ,コサト
+ウエノ,レイコ
+エトウ,マサノリ
+ヨシダ,マサオ
+タケイ,ユウイチ
+ハヤシ,ヒサシ
+マタキ,シンゴ
+モリモト,イチロウ
+イハラ,ケンジ
+ツカハラ,テルオ
+カノウ,トモコ
+ムネユキ,ヒデマサ
+オオツボ,ヨシタカ
+ヤマモリ,カツオ
+アンドウ,セイキ
+ヤマザキ,ヨシアキ
+タキモト,ヨウイチ
+タケムラ,ナオカズ
+ムラカミ,マコト
+タカタ,ノリオ
+ヒロセ,ツタヒロ
+ヤクワ,タカシ
+シングリョウ,ヨウコ
+タチ,マサシ
+サトウ,カズオ
+ヤマモト,マサヒロ
+スドウ,ショウコ
+ホンマ,ヒロキ
+オオツボ,トシオ
+カザマ,ミツヒロ
+アガワ,ミホコ
+イノウエ,リュウイチ
+アライ,マサチ
+ウエムラ,ユタカ
+ニシクラ,マサヒロ
+ミヤザキ,ヨシカズ
+フクダ,モリマサ
+ツリヤ,タダオ
+タナカ,ヒロカズ
+オガワ,コウジ
+スズキ,ミノル
+ハマグチ,タクジ
+カメダ,カツヤ
+モモハラ,ヒデオ
+ヒラオ,タカコ
+タカダ,ナオユキ
+イケダ,ヨシヒロ
+スズキ,アキラ
+タカハシ,カズヨシ
+タナカ,ジロウ
+セラ,タイチ
+タケムラ,トシアキ
+ホリキリ,マモル
+イケダ,ミノル
+アラキ,セキネ
+オオツカ,カズイチロウ
+クニマツ,セイザブロウ
+ウシバ,タカシ
+ハヤシ,マサト
+イシイ,ミキオ
+カダ,アキラ
+ヤギ,タダオ
+ヒライ,コウイチロウ
+クロセ,ヒロシ
+オカベ,イサム
+カネコ,トシユキ
+コジマ,サトル
+ニシヨリ,ミノル
+ナカジョウ,ジロウ
+ハシクラ,ツトム
+タカハシ,タツオ
+ウエクサ,ノブアキ
+シバタ,ヒロシ
+タカハシ,テルオ
+イナバ,カズト
+ジュンイチロ,アキノリ
+ハヤカワ,ヒデオ
+イトウ,タケシ
+キモト,マサツグ
+イダ,ヒロシ
+ホウジョウ,カツヒコ
+ホリイ,ツネオ
+カイセ,アツシ
+ハシモト,ヤスアキ
+スズキ,ヒトシ
+カネサカ,ヨシオ
+ヤマグチ,ユウジ
+スズキ,マサカズ
+スドウ,マサヒコ
+オオバ,ミホコ
+ムラタ,トシコ
+アキヤマ,マサシ
+アスマ,タケオ
+カワジリ,ヒデオ
+マツモト,キョウジ
+シロヤマ,コ
+フジイ,アツコ
+ゴトウ,ダイスケ
+タニアイ,ヤスマサ
+カツボリ,マキ
+ヒアテ,クミコ
+テライ,アキコ
+ハンダ,マサコ
+ミシマ,ヒロミ
+タカシマ,カズミ
+マツダ,アキラ
+コンド,ノリコ
+イタヤ,ケンジ
+マツモト,ナオタケ
+イイヤマ,ヒデオ
+ジット,カツヒロ
+クボタ,サチコ
+イシグロ,エイジ
+モリ,ウツミ
+カンノ,サチコ
+イトウ,セイジ
+ヨシダ,リュウジ
+マルヤマ,クニオ
+サトウ,ナホ
+コウダ,ヨウジ
+ワタニ,マモル
+サセ,イクオ
+ソトヤマ,カツノリ
+ホンダ,テルクニ
+イヌイ,ユタカ
+スズキ,ヨシノリ
+コニシ,ヨシノブ
+スギイ,ユキヒサ
+アラキ,ノブオ
+ヒラオカ,ヤスシ
+オオツカ,ムツオ
+カトウ,シゲオ
+シオノ,ヒロシ
+カタヤマ,ヒロノリ
+フチカミ,タケヒコ
+ヒラキ,タモツ
+イワサキ,キミオ
+エノキ,ジュン
+イワタ,セイイチ
+シュトウ,タダシ
+トオヤマ,マツノリ
+コイデ,ジュンザブロ
+タナベ,ユウジロウ
+ヤマモト,シュンイチ
+カイハツ,セイシ
+アライ,カツジ
+ウエダ,ユウゾウ
+クラオカ,ソウイチロウ
+コバヤシ,エツヒロ
+タメチカ,タテオ
+ヨシダ,シズオ
+マツモト,シゲル
+サカシタ,カネオ
+ワダ,トシアキ
+イトウ,ヤスオ
+ヨシダ,カツジ
+ヨネダ,トシヒデ
+オムラ,マサミ
+タカギ,シチロウ
+ウチヤマ,アキコ
+カシワギ,ケイコ
+ニシダ,セツオ
+オシカ,タケオ
+エジマ,トモノリ
+オカ,ケンイチ
+ヨシダ,ヤスエ
+イマイ,ヤスシロウ
+ヤマミチ,トモコ
+アイモノ,カツオ
+ヒノ,モトコ
+タカハシ,ミサコ
+ヨコタ,エイコ
+イノウ,タエコ
+ヨシダ,ヒロコ
+ヨシオカ,アキコ
+ウメザワ,ウキコ
+テラオ,ヒロヒサ
+カワハラ,ハルオ
+ハセガワ,ミノル
+キシ,テルコ
+ハシズメ,ミツヒロ
+ヨシダ,メグミ
+ミネフジ,ナオコ
+ホンダ,ユミ
+タカサワ,ミユキ
+オオハシ,ヨウコ
+カガワ,チカ
+ニシダ,マリ
+イタガキ,アキコ
+アキヤマ,ノリヒロ
+オチリ,ヤスヒロ
+ノザワ,コウジ
+サイトウ,ケンジ
+キムラ,チエ
+アベ,ナオト
+クスノキ,トモコ
+ハヤシ,ヤスヒロ
+オオイ,ナオミ
+カミオカ,ハルヨシ
+アキヤマ,イサオ
+アリタ,カツミ
+キタムラ,ミチユキ
+マスムラ,タカノリ
+オオサワ,ケン
+カワイ,ミノル
+イタガキ,ヒデオ
+モリ,タカオ
+アオキ,ミキオ
+フジシロ,コウジ
+シミズ,モトシゲ
+ムラカミ,ミヨシ
+ナカジマ,テツオ
+モギ,アキオ
+ミウラ,カズオ
+タカマツ,ケンジ
+タカダ,ショウイチ
+コンド,マサコ
+ナカジマ,ヒトシ
+ネレイ,ヒロシ
+ウシク,オサム
+キタザワ,コ
+サッサ,ノブヒロ
+イッシキ,ヨシヒロ
+カワノ,ノリツグ
+イシハラ,フミタカ
+カメオカ,タダオ
+キウチ,ノリカズ
+ナガイ,ヒトシ
+ノグチ,ミチオ
+オシタ,タカオ
+ヨシムラ,トシミチ
+アカホリ,ミツノブ
+マルナガ,ヨシツグ
+ヨシノ,コウタロウ
+ヤノ,ヨシヒロ
+ヤマグチ,マサヒデ
+ヤマグチ,カツトシ
+センドダ,マサル
+ヤスダ,アキラ
+ヨコエ,ジュンイチ
+ヤマシタ,セイザブロウ
+ヨシダ,トミゾウ
+ヤマシタ,ススム
+ヤスイ,カズオ
+ヤマオカ,キョウスケ
+ヨコセ,トモシゲ
+ヤマグチ,ケンジ
+ヤハギ,ヤスハル
+ヤマオカ,ヒロマル
+ヨツヤ,トオル
+ヤマモト,ジュンコ
+ヨシカワ,トシロウ
+ヤマシタ,ショウジ
+ヤマオカ,ヒロコ
+ヨネミツ,セイジ
+ヨシダ,ケンイチ
+ヤマザキ,テツオ
+ヤマモト,ヒカル
+ヤマグチ,ミノル
+ヤマウチ,サカエ
+ヨシザワ,カツミ
+ヨシオカ,カツヒト
+ヤマモト,ノブオ
+ヤマオカ,ミチトシ
+ヤマザキ,アキラ
+ヨシムラ,マサヒコ
+ヤスダ,コウジ
+ヤマシタ,セイイチ
+ヤダ,シンヤ
+ヨシダ,イチロウ
+ヤマモト,ツトム
+ヤマダ,ゴロウ
+ヨネダ,カオル
+ヨシダ,マサヒロ
+ヤマダ,クスオ
+ヤマグチ,タカフミ
+ヤマグチ,フミヒロ
+ヤマモト,タカコ
+ヨシダ,ススム
+ヤマシタ,ショウゾウ
+ヤンベ,アツヒロ
+ヤマグチ,ノリヨシ
+ヤマモト,ジュンジ
+ヤマネ,コウジロウ
+ヤマサキ,ケンタロウ
+ヤスオカ,ユキオ
+ヤマダ,エイゾウ
+ヨシザワ,ジロウ
+ヤジマ,アキラ
+ヤナイ,テツオ
+ヤマザキ,カズオ
+ヤマウチ,フクミチ
+ヤマザキ,ススム
+ヨシノ,タツユキ
+ヤマカゲ,タダノブ
+ヤギ,ジツノリ
+ヤスダ,マサオ
+ヤマヤ,ノブオ
+タカグチ,ノボル
+ヨシダ,ヒロシ
+ヨシノ,コウジ
+ヤマムラ,ジュンイチ
+ヤギ,カツノリ
+ヤマダ,コスケ
+ユカワ,マサトシ
+ヤマモト,ジョウジ
+ヤマタニ,ヒロツグ
+ヤマムロ,ヨシカネ
+ヨシダ,トシヒコ
+ヨコカワ,トモヨシ
+ヤマザキ,コウイチ
+ヤマモト,タケオ
+ヨシノ,キヨシ
+ヤマネ,ヨネタカ
+ヤスナガ,アキヒロ
+ヤナカ,ケイイチ
+ヤマネ,テツオ
+ヤマウチ,ヨシユキ
+ヤマグチ,ユウジ
+ヤマワキ,ショウタロウ
+ヤマカワ,ジュンイチ
+ヤマダ,カズミ
+ヨコヤマ,ショウタロウ
+ヤマモト,ヤソミ
+ヤマグチ,ノボル
+ヤマグチ,タカヨシ
+ヨシダ,タカオ
+ヤマナカ,カズミ
+ヤマモト,タダハル
+ヨシダ,タカオ
+ヤマダ,サトル
+ヤマオカ,ヨシトモ
+ヨコヤマ,マサヒサ
+ヤマサキ,ノリオ
+ヤマモト,カツヒコ
+ヤマカワ,マサヨシ
+ヤウチ,タダヨシ
+ヨシハラ,カツジ
+ヨコミゾ,シゲル
+ヤマモト,シュウゾウ
+ヤマモト,テルオ
+ヤマモト,エイイチロウ
+ヨシダ,マサヒロ
+ヨシダ,フミヒロ
+ヤスイ,ミノル
+ヤマグチ,シゲル
+ヤマモト,アキラ
+ヨコタ,エイイチ
+ヨシダ,ユタカ
+ヨコヤマ,ヒデキ
+ヤスイ,カズモト
+ヤマサキ,カズヒロ
+ヨシオカ,ノブオ
+ヨシダ,シュンロク
+ヤマダ,カツヒロ
+ヤマモト,ヨウジ
+ヨシダ,セイゾウ
+ヤマザキ,セイシロウ
+ヤマネ,ナオジ
+ユタニ,ススム
+ヨネザワ,ヨシヒロ
+ヨシノ,ダイスケ
+ヨシダ,タケオ
+ヨシモリ,ヒサトヨ
+ヨシワラ,タケシ
+ヤマダ,トシキ
+ヨシダ,トシカズ
+ヨシダ,ムツオ
+ヤマモト,モリヒコ
+コジマ,クニカツ
+オノ,シゲオ
+マエカワ,コウタロウ
+コンノ,ノブユキ
+マキセ,キヨシ
+ノムラ,マサタカ
+ヤスハラ,マサヒコ
+ナガシマ,アツヨシ
+キタハシ,マサオ
+ツル,キヨミチ
+ツクダ,ミチオ
+テラウチ,タケシ
+ヤマダ,サトル
+センバ,ススム
+サエキ,ノリオ
+オカダ,ショウイチ
+ミヤウチ,ヒサオ
+コンド,トシオ
+フキアゲ,ヤスオ
+イシカワ,チヨタケ
+イワモト,マサオ
+クボ,ジュンイチロ
+タナカ,ヒロカツ
+ワダ,ノリオ
+イワオ,ツネノリ
+クマガイ,タカヒロ
+スズキ,ヒロフミ
+タカムラ,ヒロシ
+ニシウラ,セイイチロウ
+ミツジ,マサシ
+タキキタ,アキラ
+オウチ,ケンジ
+コマ,アキオ
+マスダ,ケンジ
+カトウ,トシロウ
+イイズカ,カズヒコ
+マルヤマ,ノブアキ
+トシタニ,トオル
+ハナブチ,マサヒロ
+イマイ,マサゾウ
+オカヒロ,ツネオ
+キムラ,トシヒコ
+タジマ,マサハル
+カンダ,ツラユキ
+ドイ,オサム
+アラガキ,ヤスノブ
+キュウソジン,ケンスケ
+タケウチ,ツネヨ
+ウヌマ,ヒデナリ
+ヤマグチ,ヨシタカ
+ヨモリ,モトヒサ
+シマザキ,クニヒコ
+トクヤ,トシオ
+ヤマダ,アキラ
+フカヤ,シゲオ
+エグチ,ハルオ
+サノ,ヒデノブ
+トクノ,アキラ
+オオトモ,サダム
+シラオガワ,ヒロシ
+ヒラノ,タイキ
+オダ,ユウジ
+タナカ,リョウゾウ
+フジタ,アキラ
+アライ,アキヒデ
+フジタ,ユウジ
+ナカガワ,ヒロユキ
+ナカニシ,カズシゲ
+ハラ,アキヒロ
+チバ,トシコ
+イシワタ,トシヒサ
+ヤグチ,タケヒロ
+テジマ,カズオ
+タツタ,シゲル
+クサカ,タケシ
+フルタ,タケハル
+ゴトウ,マサノブ
+オダギリ,タダシ
+クマガイ,タケル
+ムラカミ,ミズホ
+ミムラ,マサオ
+ヨコイ,クニヒコ
+イナゲ,トモユキ
+アメミヤ,ミツオ
+イノウエ,サダオ
+ヌマタ,ジンイチ
+サカモト,ゴヘイ
+ヒラマツ,サダオ
+ナリタ,カオル
+ツネミ,イチロウ
+タカシマ,フサヒコ
+ミス,カズミ
+サキヤマ,ヨシヒコ
+フジワラ,タダシ
+トミタ,マサヒロ
+ツナワキ,ミネオ
+ハセガワ,タケシ
+フクザワ,ユウゾウ
+ゴエケ,アキラ
+ナカ,マサヒロ
+エバト,ケイコ
+コバヤシ,シンイチロウ
+ヒラツカ,キヨシ
+サトウ,ノブオ
+イノウエ,アキラ
+ハスヌマ,マサオ
+フルハタ,アサコ
+ウエノ,アツシ
+タケナカ,マサヒロ
+クニタケ,ヨシオ
+ヒラタ,ユウコ
+ハセガワ,ゲン
+フクハラ,アツシ
+フナグチ,トオル
+アマノ,ノリコ
+オオノ,ミズノリ
+スワ,ノリコ
+ノガミ,ミカ
+ウメノ,ヤスユキ
+イケノ,ユウコ
+ナカジマ,ハナコ
+イシイ,キョウコ
+サイトウ,トモコ
+タナカ,カズユキ
+タテイシ,トシカズ
+スズキ,ヨシヒコ
+キノシタ,ヒカル
+オオサワ,ヨシヒロ
+イデ,サキコ
+オガワ,シホ
+エノモト,ワキコ
+オザワ,ミズホ
+ハタケヤマ,トモヒロ
+イイダ,ミツアキ
+シノザキ,ジュンイチ
+オカダ,リエコ
+タカマ,マサシ
+ヤギ,ヒロユキ
+サカイ,マサヨ
+シミズ,コウジ
+ホリカワ,ヨウコ
+ナガオ,コウヘイ
+ヒライシ,マリ
+サガワ,タモツ
+ハラダ,マサミ
+タカハシ,リュウイチ
+タチ,マサヨ
+ヒエ,キミオ
+タダ,ミナコ
+ヨシモト,ヒロコ
+モチズキ,チヒロ
+タナカ,コウジ
+タグチ,マユミ
+サトウ,イクオ
+サカシタ,ユキエ
+カワシマ,マユミ
+ホリグチ,カオリ
+フクマ,スミタカ
+カワタニ,アキラ
+ジビキ,オサム
+サイトウ,ミツル
+シオツ,イサオ
+トバタ,ノリカズ
+ヤマモト,マサヒコ
+オフチ,ヒロミチ
+シノハラ,ノブオ
+ヤマカワ,カズタダ
+タムラ,トシオ
+ハタケヤマ,タカコ
+タナカ,ヒカル
+カナザワ,ヒデアキ
+タカハシ,エリコ
+フジムラ,ミナコ
+ナガシマ,ヨシユキ
+キノシタ,トキコ
+コンド,マミ
+アンベ,マナミ
+サイトウ,イズミ
+アサダ,ミキ
+キノシタ,フミエ
+カドヤ,アキコ
+ウエダ,トオル
+サイトウ,モニ
+タカハシ,マサヒロ
+イシザキ,シモン
+オザワ,テルヒサ
+ハヤシ,オサム
+ヤガワ,ミチオ
+タカハシ,タミオ
+トミヤマ,ヨシアキ
+アダチ,ユウゾウ
+アカイワ,ショウスケ
+カガヤ,ユキノブ
+アライ,サオリ
+オシキリ,タカシ
+ヤマムラ,エイジ
+タカヤマ,トシユキ
+ヨコヤマ,オサム
+バン,ツグオ
+イズミ,ヨシノリ
+ミズノ,タダオ
+ブンヤ,ミノル
+テラオカ,ショウジ
+ミヤシタ,ミノル
+アサマ,ケイコ
+ササキ,テツオ
+ニシオ,ヨリト
+フルヤ,テツオ
+イマダ,ヒデユキ
+イシハラ,イクエ
+ハシモト,ミキオ
+マルヤマ,トモユキ
+カジ,カズタカ
+カネコ,ハナコ
+ナカダ,ノリヒト
+チザワ,ナホ
+サワ,アサコ
+トガメ,ミワコ
+ヨシダ,ゲン
+オオノ,ヒロコ
+ヤコ,マサヒコ
+イシカワ,アキノリ
+コトダ,ヒロコ
+サガワ,カズマ
+ノグチ,カズマサ
+デンボ,ヒロフミ
+ハルキ,アキヒコ
+イネ,ショウエイ
+オオノ,クニオ
+カネダ,タツヒコ
+ノグチ,アキラ
+オオバ,ヒロミツ
+オタ,トクイチロウ
+シモマキ,ヤスオ
+ワタヒキ,ユウコ
+ヤマモト,マリ
+フジムラ,マリコ
+ソウミヤ,ケンジ
+シマ,クミ
+ササキ,タカユキ
+カガワ,レイコ
+タケウチ,クミコ
+サイキ,ミヨコ
+イトウ,ノリコ
+キムラ,ヨウジ
+タバタ,タカヒロ
+クメ,トヨアキ
+タカダ,マリコ
+タムラ,ミエ
+タカマツ,マキコ
+シロシタ,シュウサク
+カトウ,トモユキ
+アワイ,トシノリ
+ホサカ,ノリコ
+タナカ,ルミ
+ミヒラ,シュウサク
+サトウ,ケイコ
+オザワ,ユキオ
+スズキ,ケンジ
+ミヤザキ,リュウゾウ
+モリタニ,ユカリ
+イワグロ,ツトム
+ウエマ,ショウコ
+フカタ,チカ
+ヒロセ,アキコ
+オカダ,ヒロミ
+カトウ,アリカ
+マキ,サユリ
+ノダ,トモカズ
+クボ,キョウコ
+ニシキオリ,ツギオ
+ヤノ,ジュンコ
+カワムコウ,ナオキ
+ヤスムラ,ミヨコ
+トニシ,トモコ
+ヤマモト,ヒカル
+シモダ,ダイスケ
+オオタニ,クニオ
+オノサト,ハン
+カナザワ,ヒロアキ
+オカモト,ミワコ
+サイトウ,ミナコ
+カシワバラ,ノブコ
+タカハシ,マサノブ
+サイトウ,マナブ
+マツダ,ヨシアキ
+タチザキ,ワカコ
+コンド,トモコ
+シミズ,ダイスケ
+ナガオカ,カオリ
+ナカガワ,アツシ
+タカト,ヒロユキ
+キムラ,タカシ
+ナルセ,キヨミ
+オグマ,カエ
+タカハシ,ミナエ
+キクチ,セイコ
+サトウ,ハジメ
+エンド,マリコ
+タムラ,トモノリ
+ヤマモト,コウジ
+アサイ,ヨシヒロ
+モリ,オサム
+タカシロ,メグミ
+オカ,サイカ
+カトウ,トシヤ
+イグチ,サチコ
+タナカ,キョウコ
+ヨシダ,コウジ
+アキモト,マドカ
+ニシイ,ジュンジ
+ワシオカ,コウジ
+イヌマル,ヒロジ
+ホシ,シズカ
+ヨネヤマ,マサノブ
+クロベ,ユウイチ
+イシイ,ヒサエ
+ヒグチ,ジュンイチ
+ナカダ,タカハル
+オノデラ,ナオコ
+トダ,トシユキ
+マエダ,ヒロコ
+ナガイ,ユキコ
+コヌタ,ヒサヨシ
+シバサキ,カツトシ
+ウカイ,アキカ
+スズキ,チハル
+ヒラキ,ノブコ
+ナカムラ,ユウコ
+ヤマダ,マサミ
+カドクラ,マサシ
+タカサキ,コウジ
+ナカタ,キヨミ
+タニカワ,ホズエ
+ニシムラ,マサヤ
+ミナミ,アヤミ
+オオヌキ,ミノル
+サトウ,ヒロシ
+タカハシ,タカオ
+ヒダ,オサム
+サクマ,シマ
+ニエダ,タカシ
+ヨコイ,レミ
+ヨネクラ,タケオ
+バンバ,リエ
+ヤマダ,アキヒデ
+イマムラ,ルリコ
+イケダ,チアキ
+ナカムラ,ミナコ
+スドウ,リエ
+ナカソネ,カオリ
+オオサワ,チカコ
+サトウ,シチロウ
+エイドメ,ユキ
+イガラシ,ミカ
+タヤ,タカコ
+オオヒラ,ヨシコ
+サカモト,サトシ
+スギモト,コウジ
+カトウ,ミナコ
+ヨシイ,タダヒロ
+イワヤ,ヨウコ
+キノシタ,キョウコ
+スギサワ,カズヨ
+ワダ,ミヨコ
+ミヤシタ,エミコ
+ウエノ,ノブコ
+オオタキ,ユミコ
+イシバシ,キョウコ
+イワシタ,マサオ
+イシカワ,ヒデヒコ
+キシ,タテオ
+マルヤマ,ヒサオ
+ホンマ,タカオ
+クスモト,イサオ
+イマノ,キミヒデ
+オオニシ,セイゾウ
+ヤマダ,ショウ
+フジオカ,トラオ
+ハナダ,ヤスカズ
+シバタ,アサオ
+ミヤシタ,ユキオ
+カサハラ,マサオ
+オオヤケ,ハルオ
+イマイ,クニオ
+コセキ,マリコ
+オオタ,ノボル
+マチイ,カズヒロ
+キクチ,セツオ
+ヒグチ,カズエ
+ミナヨシ,ジュンジ
+スズキ,ヒロカズ
+ナンバ,ナオキ
+オオニシ,ダイサク
+ハヤシダ,タカトシ
+タナカ,ヒデヒロ
+カネコ,カズノリ
+ツチヤ,トモユキ
+イイダ,エツオ
+フルヤ,カズオ
+ナカムラ,ミツグ
+ハルハラ,タカシ
+ホリエ,ヨリシゲ
+オオタ,タケシ
+スズキ,ヤスツグ
+オト,マサトシ
+ナカガワ,マユミ
+カワシマ,ヨウヘイ
+テラモト,ユウジロウ
+キムラ,アキラ
+ヨドナワ,ユカリ
+コダイラ,ヒデアキ
+カクライ,ヨウコ
+オグリ,ヒロヨシ
+ハタ,ケンジ
+マツモリ,カズオ
+ヨシオカ,セイジ
+シゲタ,ミチアキ
+カワグチ,トモヒロ
+カネコ,マサオ
+アサヒ,タダアキ
+ワタナベ,コウジ
+アリヤマ,ツグオ
+ツジタ,タツオ
+ヨシハシ,ヒデオ
+ミシマ,セイシ
+サトウ,カツジ
+カネマル,エツヒロ
+カネコ,ヤスシ
+エジマ,ヒロアキ
+ミツクチ,ジュン
+モリ,キミオ
+オチ,セイイチ
+マエカワ,カズオ
+タナカ,マサノリ
+オリガサ,マツノリ
+コセキ,カオル
+ヒラヤマ,タダシ
+コボリ,エツヨシ
+ナカウエ,タツオ
+ストウ,マサオ
+ゴトウ,キヨヒコ
+ツカモト,ヒロミチ
+エビハラ,ヨシアキ
+モリノ,ヒデノリ
+スズキ,マサアキ
+ヨシダ,マコト
+イマイ,マサキ
+ヒノ,ムネタカ
+ヨシダ,ミナ
+オニズカ,スミタダ
+タカギ,マサヒコ
+オムラ,カツヒト
+ウチヤマ,エツコ
+クロカワ,ヨシノブ
+ヤマシタ,タキオ
+ニシダ,ヒサエ
+カシワギ,ヒロシ
+カネコ,ユキコ
+クマダ,ミキオ
+コジマ,ナオズミ
+シライ,テツヒコ
+フルカワ,リエ
+ムシウ,タダアキ
+ヨシノ,トシオ
+スギウラ,セイイチ
+フジサワ,マリ
+サトウ,アキヒロ
+エザキ,タカユキ
+ムラカミ,タカオ
+ニワヤマ,マツモリ
+ヤスノ,ミカ
+ドウダ,トモヒコ
+カジイ,モナミ
+タナカ,ヨウコ
+マツナリ,イサオ
+オオバヤシ,コウキチ
+タカハシ,タクヤ
+マツムラ,ヤスマサ
+コモリ,マキコ
+ノゾエ,カズエ
+オノ,キヨミ
+カンノ,コズエ
+サトウ,ケイコ
+ノナカ,ワカコ
+カワハラ,ユミ
+ナカムラ,マユミ
+ヤマシタ,トシカズ
+コウイチ,モモエ
+イタヤ,ヒデオ
+ヤマ,フミコ
+ヤマモト,ソウイチロウ
+クラタ,ヤスコ
+カワズ,イタル
+ミカミ,コウイチ
+タキガワ,ヨシカズ
+タナカ,ヒロアキ
+ミヤタ,タカテル
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt
new file mode 100644
index 0000000..e5731c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Korean.txt
@@ -0,0 +1,49795 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+가재범
+가효림
+가길기
+가원학
+가재완
+가동수
+가중종
+가병봉
+갈보금
+갈상종
+갈운권
+갈수열
+갈종용
+갈병원
+갈기섭
+갈달덕
+감동훈
+감갑운
+감강하
+감국희
+감정화
+감성철
+감민철
+감성원
+강경구
+강영생
+강춘식
+강용덕
+강경례
+강병규
+강한수
+강정이
+강경록
+강종수
+강규봉
+강만성
+강경숙
+강석하
+강정화
+강점조
+강경인
+강승현
+강병헌
+강은환
+강경자
+강명태
+강성조
+강미조
+강경자
+강종희
+강용석
+강기하
+강곡지
+강대순
+강대순
+강경근
+강광식
+강회조
+강석수
+강종춘
+강구승
+강재철
+강충구
+강광열
+강구환
+강만영
+강종환
+강길범
+강귀점
+강장우
+강기용
+강정휴
+강귀환
+강점순
+강 방
+강경호
+강근수
+강경수
+강용훈
+강병순
+강근환
+강해선
+강홍석
+강춘규
+강금배
+강명연
+강세태
+강진숙
+강금배
+강종연
+강정승
+강월분
+강금자
+강철수
+강경학
+강석태
+강기순
+강현선
+강상하
+강재진
+강기완
+강정준
+강본환
+강하필
+강기원
+강사희
+강용문
+강원진
+강기임
+강상조
+강동태
+강재헌
+강기형
+강순봉
+강광옥
+강인희
+강기형
+강병용
+강태태
+강봉원
+강길원
+강학현
+강재식
+강갑삼
+강남중
+강정임
+강영원
+강태호
+강남중
+강용진
+강덕달
+강현흠
+강노형
+강점조
+강회분
+강영식
+강달수
+강춘영
+강억철
+강종진
+강대석
+강교학
+강상주
+강이철
+강대영
+강차순
+강영국
+강수희
+강대용
+강숙향
+강상희
+강윤철
+강대용
+강태택
+강규술
+강홍학
+강대익
+강만길
+강일래
+강상석
+강대진
+강남호
+강상호
+강무의
+강대현
+강영란
+강선금
+강창열
+강대형
+강재수
+강순근
+강재환
+강대희
+강해생
+강수현
+강규숙
+강덕수
+강경원
+강향석
+강무덕
+강덕용
+강완태
+강옥원
+강중임
+강덕윤
+강태운
+강장례
+강영학
+강동중
+강용열
+강수운
+강 금
+강동철
+강달덕
+강귀태
+강명학
+강동철
+강광암
+강상모
+강옥만
+강동현
+강태섭
+강재술
+강신조
+강두진
+강상국
+강육열
+강영종
+강록중
+강성복
+강민석
+강선자
+강만수
+강관현
+강재홍
+강병선
+강만흥
+강점기
+강귀산
+강천윤
+강말분
+강재구
+강순조
+강정칠
+강말임
+강재수
+강영용
+강병찬
+강명관
+강명조
+강재이
+강석호
+강명암
+강수곤
+강권규
+강성구
+강무중
+강택철
+강종환
+강대석
+강문돌
+강철호
+강상진
+강환란
+강문술
+강용호
+강형현
+강현섭
+강미숙
+강승화
+강태식
+강성자
+강병규
+강성복
+강일종
+강동희
+강병석
+강창미
+강필기
+강계현
+강병열
+강복길
+강광수
+강영석
+강병환
+강연룡
+강철술
+강진이
+강복춘
+강동철
+강정조
+강상백
+강봉우
+강원수
+강명호
+강권현
+강분도
+강도석
+강해태
+강위섭
+강사현
+강후수
+강윤상
+강희국
+강삼록
+강명석
+강화임
+강철화
+강삼문
+강강수
+강복호
+강선섭
+강삼문
+강한현
+강용갑
+강태동
+강삼조
+강태정
+강창일
+강해원
+강상백
+강복용
+강기열
+강창규
+강상복
+강경제
+강순원
+강순열
+강상봉
+강영의
+강종윤
+강효원
+강상윤
+강수영
+강달철
+강영숙
+강상희
+강병배
+강순규
+강귀상
+강석대
+강인운
+강원수
+강정식
+강석주
+강용복
+강희길
+강종남
+강석주
+강태봉
+강성한
+강상성
+강선동
+강명명
+강기갑
+강희수
+강선조
+강춘출
+강인석
+강정옥
+강성락
+강현록
+강학직
+강월섭
+강성배
+강월진
+강상환
+강진환
+강성일
+강정자
+강달주
+강재교
+강성해
+강기숙
+강용명
+강명헌
+강세규
+강기기
+강정기
+강두자
+강소준
+강재호
+강정기
+강광기
+강수기
+강계현
+강진형
+강인호
+강수진
+강순화
+강종식
+강술민
+강수형
+강재배
+강옥은
+강성기
+강숙희
+강낙우
+강필분
+강종식
+강순경
+강영원
+강복열
+강금악
+강순옥
+강춘환
+강대경
+강상난
+강순이
+강종일
+강경정
+강병헌
+강신균
+강헌수
+강말조
+강은숙
+강신영
+강호만
+강영태
+강용록
+강신영
+강호용
+강수식
+강춘수
+강신임
+강의찬
+강판선
+강승문
+강신찬
+강병웅
+강복래
+강만열
+강신택
+강명구
+강현갑
+강인석
+강쌍득
+강천용
+강재국
+강기조
+강언술
+강의수
+강경호
+강근원
+강연구
+강희석
+강영준
+강병진
+강연이
+강창연
+강상희
+강상열
+강영규
+강재봉
+강호관
+강연진
+강영수
+강판호
+강영현
+강금휴
+강영수
+강경수
+강재식
+강천이
+강영수
+강광태
+강면제
+강윤석
+강영수
+강환례
+강계광
+강말규
+강영수
+강병도
+강용견
+강삼식
+강영원
+강해환
+강선수
+강말진
+강옥구
+강학원
+강만선
+강칠식
+강옥구
+강병희
+강수광
+강황이
+강옥금
+강태종
+강정기
+강상삼
+강외순
+강인찬
+강병택
+강연식
+강용덕
+강병봉
+강석일
+강상연
+강용식
+강경용
+강영화
+강을정
+강용판
+강부희
+강성자
+강상순
+강용희
+강재이
+강애태
+강석미
+강원정
+강석운
+강수기
+강대배
+강원진
+강기호
+강동자
+강홍쇄
+강원태
+강담식
+강종태
+강창식
+강유복
+강경덕
+강정명
+강순수
+강육문
+강석대
+강영순
+강재한
+강윤득
+강성하
+강용금
+강규조
+강윤자
+강욱암
+강범국
+강이조
+강인수
+강용원
+강재용
+강종인
+강인열
+강병규
+강은태
+강배애
+강일분
+강인년
+강분윤
+강정흠
+강일호
+강장식
+강재수
+강기열
+강장수
+강경성
+강동열
+강성기
+강재영
+강수연
+강홍주
+강춘본
+강전철
+강태호
+강성순
+강영길
+강점덕
+강헌웅
+강민찬
+강만영
+강점복
+강갑용
+강해주
+강병현
+강점숙
+강상수
+강재출
+강홍대
+강정길
+강두수
+강문국
+강경석
+강정모
+강종관
+강상복
+강해도
+강정복
+강문호
+강성필
+강기국
+강정석
+강기철
+강재록
+강점현
+강정숙
+강경우
+강재자
+강술우
+강정숙
+강수희
+강성식
+강정운
+강정숙
+강복석
+강판생
+강석배
+강정애
+강우만
+강구규
+강원열
+강정열
+강재호
+강영곤
+강종유
+강종덕
+강완현
+강상호
+강구식
+강종만
+강명세
+강성범
+강영배
+강종열
+강대만
+강재호
+강선현
+강종차
+강대태
+강호정
+강태선
+강종필
+강현대
+강태이
+강지준
+강주석
+강대조
+강교균
+강경화
+강주원
+강순태
+강강완
+강영열
+강주훈
+강기덕
+강금기
+강영순
+강중부
+강순출
+강한수
+강동교
+강진영
+강태식
+강유환
+강영대
+강진호
+강대구
+강말광
+강상수
+강진호
+강옥대
+강근원
+강만출
+강창록
+강정섭
+강양근
+강인정
+강창석
+강개식
+강태환
+강종수
+강창섭
+강정동
+강종규
+강감호
+강창수
+강무연
+강해환
+강용운
+강창원
+강명학
+강영규
+강무담
+강천석
+강동문
+강윤조
+강준철
+강충규
+강용관
+강승원
+강원조
+강쾌수
+강재점
+강상철
+강석계
+강태문
+강춘환
+강규운
+강상조
+강태상
+강종길
+강성이
+강영배
+강태석
+강풍술
+강연만
+강용세
+강태성
+강정한
+강종태
+강정경
+강태수
+강동모
+강달용
+강태란
+강태순
+강광명
+강영돌
+강순석
+강태승
+강석장
+강태규
+강영희
+강태일
+강정영
+강영희
+강규순
+강태자
+강점원
+강문헌
+강해주
+강태진
+강채조
+강수덕
+강만도
+강태진
+강용대
+강길근
+강지숙
+강태형
+강영휘
+강경재
+강흥섭
+강태호
+강순환
+강경기
+강정호
+강팔권
+강규자
+강판태
+강윤조
+강필임
+강근상
+강우선
+강성환
+강학구
+강정식
+강애상
+강광기
+강학규
+강찬환
+강부섭
+강인주
+강헌중
+강해원
+강낙만
+강태수
+강현석
+강상노
+강재자
+강갑수
+강현완
+강숙출
+강금리
+강양숙
+강혜원
+강영종
+강쌍일
+강기숙
+강호경
+강동환
+강경점
+강성종
+강홍근
+강춘택
+강영원
+강경국
+강홍배
+강헌식
+강원교
+강용숙
+강홍섭
+강종임
+강창호
+강곤원
+강효근
+강귀범
+강순찬
+강만옥
+강휘규
+강재호
+강수조
+강태균
+강휘규
+강병종
+강태상
+강희수
+강흥찬
+강미기
+강종신
+강기태
+강희갑
+강재호
+강귀시
+강석식
+강희규
+강해성
+강성근
+강용도
+강희석
+강명근
+강봉한
+강정훈
+강희영
+강쾌우
+강수현
+강성연
+강희점
+강의식
+강경수
+강창열
+경권호
+경영수
+경경교
+경용식
+경두호
+경상태
+경옥욱
+경석남
+경세호
+경용자
+경맹자
+경석열
+고광수
+고홍길
+고기자
+고창석
+고광숙
+고재준
+고영주
+고진수
+고광희
+고상권
+고종옥
+고홍수
+고귀임
+고우규
+고경원
+고재익
+고대종
+고명우
+고막설
+고연인
+고덕용
+고경심
+고주호
+고 식
+고덕이
+고복현
+고타갑
+고재우
+고동순
+고 암
+고현현
+고한수
+고동현
+고복태
+고진곤
+고만호
+고래임
+고갑조
+고무윤
+고성순
+고말남
+고덕화
+고두성
+고태호
+고명식
+고학효
+고동숙
+고곤득
+고민희
+고외호
+고광이
+고상숙
+고병욱
+고재식
+고동해
+고전호
+고병희
+고만일
+고용화
+고동태
+고석권
+고순애
+고점석
+고재조
+고석원
+고홍란
+고순호
+고태봉
+고성웅
+고권순
+고운주
+고영숙
+고수권
+고용기
+고철조
+고복수
+고수빈
+고계룡
+고병운
+고덕수
+고순맹
+고종주
+고판순
+고재복
+고순호
+고좌식
+고성교
+고근철
+고시목
+고정호
+고석희
+고석욱
+고영길
+고갑숙
+고종자
+고해해
+고영원
+고재희
+고영록
+고종용
+고유진
+고영수
+고순택
+고응한
+고윤범
+고태길
+고무덕
+고창석
+고은선
+고성원
+고석호
+고홍숙
+고의만
+고용원
+고진준
+고임순
+고의진
+고삼훈
+고동선
+고원희
+고인석
+고태찬
+고종조
+고민동
+고일환
+고기익
+고소섭
+고형수
+고장국
+고갑혜
+고점남
+고천균
+고재완
+고종순
+고경경
+고연근
+고정석
+고임택
+고태지
+고춘희
+고정석
+고봉기
+고승기
+고현형
+고중석
+고용희
+고기호
+고영수
+고창석
+고상우
+고진순
+고도수
+고철규
+고윤조
+고상철
+고종수
+고충국
+고판환
+고영태
+고옥건
+고태경
+고순련
+고순만
+고영근
+고학문
+고경순
+고상수
+고부보
+고현산
+고봉일
+고경길
+고순희
+고효영
+고동기
+고미출
+고현은
+고효영
+고성만
+고임범
+고태태
+고효영
+고소용
+고우수
+고학숙
+고희석
+고용분
+고재석
+고재우
+공광용
+공금충
+공정령
+공세익
+공만수
+공은서
+공근수
+공임수
+공명수
+공부순
+공해석
+공종암
+공병래
+공병근
+공화도
+공창기
+공석붕
+공재분
+공재원
+공종학
+공석이
+공창수
+공기중
+공홍휘
+공석철
+공인호
+공춘영
+공석덕
+공수남
+공쌍순
+공재도
+공재석
+공순분
+공신현
+공정성
+공윤만
+공시동
+공진용
+공상현
+공판옥
+공억수
+공재운
+공수수
+공현희
+공영대
+공종우
+공종숙
+공영석
+공영선
+공성근
+공익술
+공천도
+공영자
+공경성
+공준수
+공성호
+공임석
+공상연
+공달진
+공병식
+공재갑
+공재순
+공일현
+공순희
+공재숙
+공준용
+공희란
+공언식
+공재익
+공철택
+공수호
+공태열
+공재익
+공광술
+공태환
+공병현
+공종열
+공복현
+공판덕
+공두금
+공종춘
+공풍화
+공계영
+공춘수
+공종춘
+공덕열
+공종기
+공칠학
+곽 포
+곽병우
+곽기식
+곽태수
+곽갑영
+곽만현
+곽병성
+곽정동
+곽경근
+곽광화
+곽창기
+곽미정
+곽경룡
+곽영연
+곽상수
+곽청옥
+곽경순
+곽동석
+곽해문
+곽광규
+곽경용
+곽태연
+곽팔선
+곽진옥
+곽경호
+곽한수
+곽종섭
+곽칠자
+곽광섭
+곽덕희
+곽효조
+곽을술
+곽광섭
+곽태순
+곽은열
+곽두준
+곽광수
+곽만석
+곽종정
+곽윤일
+곽교순
+곽남호
+곽진태
+곽근수
+곽권섭
+곽차식
+곽종찬
+곽동분
+곽기설
+곽 경
+곽기수
+곽말호
+곽기순
+곽종덕
+곽승판
+곽양수
+곽기진
+곽삼영
+곽규환
+곽일주
+곽길한
+곽창기
+곽경재
+곽현열
+곽길환
+곽수판
+곽운배
+곽용현
+곽남옥
+곽종우
+곽교기
+곽태국
+곽노창
+곽성호
+곽준구
+곽 수
+곽도영
+곽희준
+곽용시
+곽경성
+곽도영
+곽소석
+곽윤순
+곽영옥
+곽돈영
+곽계숙
+곽수만
+곽봉규
+곽동득
+곽재만
+곽성호
+곽정득
+곽동만
+곽분규
+곽용열
+곽교환
+곽동민
+곽규숙
+곽명곤
+곽달부
+곽동신
+곽복순
+곽금식
+곽명수
+곽동용
+곽문호
+곽귀화
+곽현걸
+곽동용
+곽광선
+곽일길
+곽광준
+곽동헌
+곽태준
+곽태휘
+곽종석
+곽두식
+곽용춘
+곽용배
+곽동곤
+곽만수
+곽경호
+곽효수
+곽영숙
+곽만수
+곽규석
+곽화돌
+곽영남
+곽만조
+곽연현
+곽관일
+곽영택
+곽만호
+곽영준
+곽재태
+곽순웅
+곽말용
+곽승이
+곽봉근
+곽정형
+곽명섭
+곽장영
+곽 석
+곽준순
+곽명식
+곽만우
+곽창열
+곽성옥
+곽명욱
+곽우식
+곽종갑
+곽종원
+곽명호
+곽재임
+곽병식
+곽해명
+곽무선
+곽일순
+곽재진
+곽명행
+곽무익
+곽난현
+곽옥오
+곽정영
+곽무현
+곽업출
+곽헌기
+곽영진
+곽문순
+곽건성
+곽태우
+곽달학
+곽미석
+곽화영
+곽리열
+곽경원
+곽민창
+곽기우
+곽칠일
+곽정기
+곽범권
+곽수훈
+곽수영
+곽성원
+곽병도
+곽재용
+곽종진
+곽정기
+곽병묵
+곽차옥
+곽애수
+곽기석
+곽병수
+곽권화
+곽증록
+곽태현
+곽병숙
+곽 제
+곽해경
+곽덕문
+곽병열
+곽차남
+곽훈재
+곽경태
+곽병오
+곽선오
+곽계배
+곽차연
+곽병율
+곽인호
+곽환용
+곽해석
+곽병철
+곽성진
+곽병주
+곽원진
+곽병태
+곽재미
+곽희식
+곽준열
+곽병태
+곽유순
+곽홍자
+곽윤선
+곽병헌
+곽호열
+곽임우
+곽윤덕
+곽보순
+곽기현
+곽강영
+곽태자
+곽봉선
+곽명길
+곽종자
+곽상록
+곽봉하
+곽일락
+곽성개
+곽재조
+곽부치
+곽윤수
+곽영석
+곽정우
+곽분규
+곽임호
+곽강호
+곽용덕
+곽분혜
+곽성숙
+곽순희
+곽동선
+곽사영
+곽병봉
+곽 배
+곽 출
+곽상갑
+곽소택
+곽창섭
+곽청복
+곽상건
+곽옥화
+곽순태
+곽선식
+곽상국
+곽판기
+곽욱길
+곽연경
+곽상규
+곽성기
+곽동순
+곽종재
+곽상규
+곽세호
+곽기근
+곽진국
+곽상도
+곽영섭
+곽승봉
+곽용혁
+곽상두
+곽종영
+곽원성
+곽원제
+곽상영
+곽도권
+곽부봉
+곽인열
+곽상오
+곽소재
+곽병자
+곽태식
+곽상조
+곽상기
+곽두하
+곽판호
+곽상철
+곽호식
+곽 근
+곽종태
+곽상춘
+곽영인
+곽영순
+곽종삼
+곽상학
+곽종수
+곽상조
+곽윤석
+곽상현
+곽주철
+곽양래
+곽주구
+곽상현
+곽현례
+곽주영
+곽우태
+곽석이
+곽수희
+곽찬진
+곽기태
+곽석조
+곽성열
+곽판희
+곽덕수
+곽성규
+곽성준
+곽성권
+곽점인
+곽성규
+곽인석
+곽풍근
+곽호대
+곽성섭
+곽정근
+곽수순
+곽태득
+곽성영
+곽종철
+곽경현
+곽명암
+곽성호
+곽두준
+곽윤수
+곽진희
+곽성화
+곽혜주
+곽태현
+곽수식
+곽소선
+곽소학
+곽성주
+곽남주
+곽소순
+곽증행
+곽귀규
+곽재화
+곽수근
+곽종주
+곽 수
+곽점해
+곽수연
+곽성호
+곽종기
+곽석석
+곽수영
+곽재경
+곽신영
+곽재휴
+곽수환
+곽상석
+곽순수
+곽성섭
+곽순영
+곽정근
+곽성제
+곽계현
+곽순이
+곽태정
+곽영현
+곽광수
+곽순호
+곽호선
+곽병천
+곽수빈
+곽술용
+곽경금
+곽홍명
+곽회환
+곽신섭
+곽명열
+곽종기
+곽학훈
+곽신효
+곽신영
+곽경응
+곽경호
+곽양남
+곽태태
+곽노도
+곽동모
+곽양웅
+곽상수
+곽달홍
+곽동곤
+곽열규
+곽영호
+곽종태
+곽광준
+곽영길
+곽재응
+곽윤숙
+곽팔우
+곽영길
+곽수동
+곽조옥
+곽태갑
+곽영만
+곽영천
+곽철호
+곽주동
+곽영상
+곽창동
+곽일교
+곽흥환
+곽영섭
+곽호숙
+곽형순
+곽기열
+곽영옥
+곽미춘
+곽태석
+곽수석
+곽영자
+곽용주
+곽학태
+곽송봉
+곽영조
+곽태수
+곽경동
+곽태우
+곽영철
+곽영근
+곽문삼
+곽병현
+곽영태
+곽원용
+곽태편
+곽진우
+곽영호
+곽재수
+곽봉식
+곽경오
+곽영화
+곽 상
+곽필성
+곽대익
+곽영희
+곽성호
+곽경완
+곽오철
+곽옥선
+곽종국
+곽종현
+곽태현
+곽옥연
+곽병표
+곽홍천
+곽명갑
+곽왕규
+곽필기
+곽원조
+곽상환
+곽외섭
+곽성식
+곽영섭
+곽성식
+곽용수
+곽태득
+곽주동
+곽팔정
+곽용숙
+곽재조
+곽인이
+곽규강
+곽용순
+곽지봉
+곽신범
+곽홍호
+곽우식
+곽홍연
+곽태이
+곽점맹
+곽우열
+곽환철
+곽태호
+곽조수
+곽우영
+곽용도
+곽모규
+곽점순
+곽원규
+곽관오
+곽종해
+곽일로
+곽원규
+곽쌍국
+곽월곤
+곽주식
+곽원영
+곽일일
+곽공일
+곽도덕
+곽원영
+곽현자
+곽팔생
+곽유규
+곽유성
+곽재식
+곽석숙
+곽남출
+곽유태
+곽기순
+곽근권
+곽희권
+곽윤광
+곽용원
+곽강정
+곽기영
+곽윤구
+곽병성
+곽용식
+곽순선
+곽윤규
+곽병복
+곽삼완
+곽옥연
+곽은열
+곽교균
+곽종상
+곽부오
+곽을순
+곽재수
+곽도선
+곽기선
+곽의호
+곽분가
+곽영환
+곽광근
+곽일룡
+곽인갑
+곽갑섭
+곽성철
+곽임수
+곽기주
+곽창화
+곽진오
+곽자용
+곽종희
+곽연남
+곽은원
+곽재경
+곽오근
+곽만조
+곽병도
+곽재근
+곽준록
+곽형자
+곽윤수
+곽재석
+곽호채
+곽성길
+곽희관
+곽재식
+곽회현
+곽계협
+곽춘덕
+곽재열
+곽성기
+곽현수
+곽삼천
+곽재영
+곽산숙
+곽정운
+곽욱자
+곽재영
+곽성태
+곽상식
+곽용하
+곽재영
+곽영수
+곽원순
+곽용식
+곽재욱
+곽명숙
+곽영금
+곽연철
+곽재원
+곽석구
+곽현재
+곽호호
+곽재천
+곽삼수
+곽덕용
+곽창기
+곽재철
+곽광해
+곽삼호
+곽태철
+곽재철
+곽종돌
+곽종진
+곽무출
+곽재호
+곽대연
+곽경양
+곽영수
+곽재환
+곽정원
+곽수종
+곽영도
+곽재훈
+곽차호
+곽작조
+곽용일
+곽점용
+곽재출
+곽외규
+곽정조
+곽정만
+곽기흠
+곽태희
+곽재자
+곽정연
+곽제종
+곽정율
+곽순수
+곽종관
+곽경재
+곽안수
+곽광환
+곽종국
+곽영열
+곽종수
+곽원자
+곽종권
+곽석언
+곽상철
+곽갑옥
+곽종대
+곽일봉
+곽외수
+곽희영
+곽종대
+곽한선
+곽주문
+곽기자
+곽종덕
+곽건영
+곽상기
+곽정석
+곽종만
+곽윤구
+곽근식
+곽주숙
+곽종암
+곽정만
+곽종철
+곽영용
+곽종열
+곽정기
+곽재암
+곽순호
+곽종주
+곽길시
+곽헌대
+곽병종
+곽종학
+곽례호
+곽남학
+곽영진
+곽종형
+곽정희
+곽무주
+곽상일
+곽종훈
+곽진태
+곽정호
+곽준철
+곽주석
+곽광식
+곽종조
+곽태석
+곽주섭
+곽우래
+곽귀덕
+곽경수
+곽지영
+곽종준
+곽태대
+곽장휘
+곽진곤
+곽봉갑
+곽명동
+곽종호
+곽진수
+곽승열
+곽삼순
+곽오순
+곽차상
+곽종득
+곽재진
+곽계환
+곽차용
+곽효수
+곽만자
+곽삼원
+곽창섭
+곽동우
+곽일관
+곽정삼
+곽창수
+곽운율
+곽영용
+곽기언
+곽창식
+곽원석
+곽현실
+곽기수
+곽창왕
+곽영동
+곽창윤
+곽원완
+곽천석
+곽위택
+곽남환
+곽삼이
+곽철수
+곽복섭
+곽승분
+곽태옥
+곽철환
+곽정주
+곽경향
+곽창희
+곽칠용
+곽진조
+곽애선
+곽종옥
+곽태경
+곽태정
+곽원수
+곽윤기
+곽태석
+곽동식
+곽무일
+곽대조
+곽태석
+곽상연
+곽세식
+곽영희
+곽태섭
+곽재만
+곽선경
+곽건출
+곽태식
+곽상식
+곽재식
+곽해권
+곽태식
+곽기수
+곽석택
+곽동훈
+곽태열
+곽영건
+곽판수
+곽춘우
+곽태영
+곽준호
+곽용석
+곽기환
+곽태용
+곽문조
+곽태환
+곽재술
+곽태중
+곽남년
+곽욱호
+곽창열
+곽태환
+곽덕근
+곽청용
+곽명식
+곽태희
+곽미조
+곽갑동
+곽극익
+곽택열
+곽승만
+곽기문
+곽환대
+곽판개
+곽상호
+곽종자
+곽명홍
+곽판수
+곽태광
+곽주용
+곽광헌
+곽평섭
+곽만연
+곽성룡
+곽천배
+곽표경
+곽상모
+곽외성
+곽병동
+곽학출
+곽정출
+곽주태
+곽진우
+곽한곤
+곽영용
+곽범헌
+곽차조
+곽한수
+곽병택
+곽성호
+곽태섭
+곽한영
+곽용숙
+곽준석
+곽현택
+곽해규
+곽현호
+곽병분
+곽성기
+곽해만
+곽기준
+곽승우
+곽한중
+곽해석
+곽동헌
+곽태태
+곽문식
+곽해석
+곽재수
+곽태홍
+곽광달
+곽호순
+곽경희
+곽점순
+곽영록
+곽홍규
+곽종호
+곽동현
+곽순열
+곽화열
+곽태범
+곽억규
+곽우수
+곽후열
+곽판현
+곽준권
+곽억오
+곽휘소
+곽용수
+곽성춘
+곽삼식
+곽흥섭
+곽태준
+곽태삼
+곽경길
+곽희순
+곽경섭
+곽덕우
+곽진집
+곽희웅
+곽문열
+곽병준
+곽혜현
+구경서
+구종조
+구쌍석
+구차부
+구경숙
+구원옥
+구한국
+구설우
+구경숙
+구득숙
+구수희
+구윤대
+구귀화
+구상화
+구말록
+구명태
+구길회
+구성진
+구일상
+구덕우
+구동만
+구경현
+구인이
+구성수
+구동석
+구근봉
+구삼식
+구종헌
+구동수
+구재원
+구병현
+구쌍우
+구동원
+구충순
+구기남
+구석병
+구동철
+구승희
+구일식
+구기식
+구두선
+구명운
+구주호
+구영순
+구명숙
+구복희
+구순옥
+구태래
+구민회
+구규선
+구금욱
+구경학
+구병수
+구달섭
+구영석
+구희식
+구병찬
+구순련
+구두근
+구이수
+구본선
+구순희
+구수병
+구수춘
+구본승
+구윤웅
+구영수
+구주주
+구본현
+구재자
+구광현
+구한술
+구부임
+구재헌
+구정표
+구태설
+구석봉
+구태태
+구재식
+구태익
+구선이
+구홍모
+구현철
+구무윤
+구용길
+구수웅
+구기식
+구철수
+구용태
+구영택
+구외화
+구중호
+구이용
+구태하
+구돈재
+구종수
+구자관
+구창현
+구원선
+구구기
+구자덕
+구정부
+구태호
+구기호
+구자우
+구윤오
+구종목
+구석성
+구자익
+구동동
+구재화
+구봉기
+구점식
+구성자
+구만연
+구상중
+구제남
+구금이
+구연환
+구용치
+구중서
+구학자
+구정달
+구차연
+구춘식
+구진태
+구장순
+구원연
+구춘식
+구기길
+구영균
+구동탁
+구충모
+구복자
+구병한
+구훈희
+구태희
+구무용
+구병고
+구동석
+구평길
+구성식
+구삼두
+구영희
+구현옥
+구효희
+구순용
+구양용
+구화이
+구상규
+구성원
+구영수
+구희경
+구병철
+구재준
+구영록
+구희숙
+구영범
+구봉헌
+구부수
+국윤환
+국상석
+국환남
+국민태
+권 수
+권영국
+권대현
+권정주
+권갑조
+권상란
+권성현
+권태규
+권경관
+권재원
+권기순
+권상수
+권경덕
+권창연
+권점춘
+권봉웅
+권경란
+권석성
+권재빈
+권수석
+권경생
+권규길
+권홍주
+권기윤
+권경숙
+권기원
+권충오
+권흥상
+권경술
+권용희
+권규십
+권종옥
+권경자
+권종환
+권창동
+권성갑
+권경조
+권영석
+권영현
+권억섭
+권경환
+권봉기
+권성순
+권진돌
+권광식
+권희창
+권성상
+권성지
+권광웅
+권범배
+권명동
+권재섭
+권광호
+권승영
+권철곤
+권삼국
+권귀남
+권승오
+권인석
+권선득
+권귀임
+권노환
+권권현
+권석근
+권금악
+권정수
+권 호
+권헌모
+권금연
+권경열
+권수원
+권만효
+권기동
+권윤순
+권금준
+권시기
+권기섭
+권장완
+권만교
+권점호
+권기성
+권영출
+권헌수
+권계도
+권기수
+권명수
+권복휴
+권연민
+권기영
+권철기
+권종춘
+권희호
+권기용
+권덕숙
+권일석
+권기태
+권기종
+권정팔
+권금환
+권갑홍
+권기철
+권영열
+권석애
+권재희
+권기헌
+권해신
+권덕근
+권계빈
+권남수
+권외순
+권증섭
+권상도
+권늠이
+권용식
+권창섭
+권세용
+권달출
+권성수
+권순욱
+권윤익
+권대영
+권찬철
+권성화
+권일정
+권대윤
+권동수
+권진민
+권기희
+권덕용
+권성자
+권재훈
+권춘출
+권도인
+권승헌
+권춘기
+권동범
+권돌이
+권수길
+권판석
+권천섭
+권동권
+권종영
+권종록
+권현웅
+권두리
+권종암
+권병영
+권기경
+권두현
+권헌조
+권상연
+권용기
+권득수
+권경웅
+권도수
+권필영
+권령현
+권순훈
+권창기
+권홍화
+권말수
+권일교
+권광준
+권진생
+권말용
+권대원
+권종호
+권문종
+권말임
+권복곤
+권경규
+권일근
+권명복
+권인수
+권진후
+권호석
+권명삼
+권태철
+권응진
+권순호
+권명용
+권후삼
+권정연
+권영홍
+권무웅
+권임권
+권태옥
+권용진
+권무홍
+권문덕
+권종계
+권태화
+권미란
+권주연
+권정대
+권재수
+권미란
+권석자
+권수구
+권업자
+권미영
+권기영
+권용웅
+권왕영
+권미자
+권종삼
+권달대
+권평순
+권미자
+권태자
+권우선
+권영우
+권병문
+권주교
+권장정
+권태상
+권병철
+권언현
+권동표
+권태군
+권복길
+권신홍
+권두홍
+권시길
+권복길
+권정정
+권병옥
+권태정
+권복만
+권재원
+권영자
+권효남
+권복주
+권종연
+권화식
+권성정
+권봉학
+권선덕
+권경희
+권홍희
+권분향
+권정렬
+권상미
+권성학
+권분향
+권인규
+권봉식
+권기한
+권삼량
+권재환
+권임석
+권필립
+권삼술
+권재봉
+권덕기
+권성배
+권상규
+권기복
+권태이
+권상배
+권상우
+권우환
+권두숙
+권병석
+권석우
+권원제
+권태이
+권영열
+권선복
+권중석
+권현순
+권영성
+권선희
+권상구
+권명원
+권주영
+권선희
+권미철
+권종수
+권대출
+권성근
+권동석
+권종기
+권정용
+권성기
+권병웅
+권세석
+권수희
+권성대
+권용출
+권정철
+권용준
+권성웅
+권주우
+권필성
+권정호
+권성준
+권용철
+권정호
+권원희
+권세용
+권귀희
+권상영
+권상호
+권세용
+권나문
+권재식
+권재숙
+권소관
+권병진
+권명곤
+권광오
+권소돌
+권동문
+권문원
+권세택
+권수만
+권점옥
+권원학
+권동열
+권수만
+권분수
+권규출
+권정희
+권수원
+권경출
+권기표
+권종주
+권수자
+권종구
+권재배
+권의탁
+권수자
+권윤용
+권차호
+권광현
+권수자
+권명조
+권은식
+권정호
+권수자
+권동호
+권인이
+권병모
+권순덕
+권지학
+권미기
+권시국
+권순목
+권성석
+권병호
+권용건
+권순옥
+권사호
+권재달
+권성홍
+권순환
+권금원
+권귀종
+권중근
+권암우
+권갑순
+권보자
+권윤수
+권애자
+권계생
+권대춘
+권영숙
+권연주
+권태수
+권대용
+권한원
+권영계
+권정수
+권욱조
+권상열
+권영관
+권한주
+권중국
+권태경
+권영교
+권용길
+권충형
+권학준
+권영구
+권성학
+권종향
+권인복
+권영구
+권성용
+권주수
+권승호
+권영구
+권병돌
+권병교
+권기선
+권영국
+권려문
+권상태
+권기동
+권영근
+권상복
+권호석
+권상환
+권영대
+권석복
+권종자
+권무자
+권영돈
+권복한
+권기숙
+권상식
+권영록
+권진수
+권인우
+권상곤
+권영목
+권권대
+권필태
+권재길
+권영문
+권노연
+권도수
+권자식
+권영보
+권용남
+권종길
+권세희
+권영복
+권경옥
+권무수
+권찬재
+권영복
+권진식
+권은우
+권수찬
+권영봉
+권인근
+권희경
+권종희
+권영봉
+권창근
+권옥출
+권준호
+권영수
+권승주
+권장석
+권명영
+권영순
+권맹현
+권일경
+권무호
+권영순
+권용임
+권동갑
+권복원
+권영순
+권성만
+권영호
+권철세
+권영아
+권정규
+권계갑
+권성순
+권영일
+권대기
+권병계
+권영수
+권영제
+권선생
+권분섭
+권성자
+권영주
+권덕리
+권광해
+권광순
+권영준
+권태수
+권영분
+권의길
+권영창
+권덕경
+권금효
+권기이
+권영칠
+권성영
+권금경
+권금배
+권영택
+권용환
+권태기
+권용준
+권영필
+권재수
+권정희
+권춘수
+권영하
+권옥주
+권귀룡
+권영화
+권영하
+권현출
+권상익
+권정대
+권영헌
+권춘식
+권기원
+권태열
+권영현
+권병연
+권경배
+권지무
+권영호
+권윤국
+권석호
+권정조
+권영환
+권위길
+권칠화
+권명광
+권오광
+권태수
+권환자
+권종두
+권오광
+권길곤
+권광수
+권종락
+권오근
+권상조
+권중균
+권선건
+권오근
+권수기
+권종식
+권길건
+권오룡
+권영태
+권미수
+권만식
+권오만
+권태정
+권점봉
+권형상
+권오만
+권금학
+권성열
+권권철
+권오명
+권재권
+권곡동
+권기만
+권오상
+권태희
+권두호
+권석식
+권오상
+권만근
+권소제
+권옥문
+권오상
+권종진
+권석섭
+권훈덕
+권오석
+권정원
+권성수
+권정우
+권오석
+권태련
+권록제
+권진철
+권오석
+권은정
+권남학
+권인수
+권오성
+권락우
+권외호
+권재만
+권오성
+권영구
+권노수
+권병도
+권오성
+권은철
+권효영
+권연술
+권오성
+권승구
+권용열
+권기경
+권오수
+권동각
+권상배
+권영현
+권오수
+권성한
+권태덕
+권점분
+권오수
+권동년
+권원덕
+권지용
+권오승
+권동신
+권종문
+권 태
+권오열
+권회연
+권영규
+권정출
+권오욱
+권명욱
+권홍영
+권기열
+권오웅
+권재기
+권맹곤
+권종섭
+권오주
+권도재
+권영식
+권영한
+권오준
+권홍경
+권성출
+권주효
+권오추
+권한용
+권경창
+권석호
+권오칠
+권호하
+권재율
+권상이
+권오현
+권영희
+권병열
+권문호
+권오호
+권태천
+권갑출
+권만환
+권오휘
+권구영
+권명배
+권재희
+권옥성
+권복호
+권덕주
+권재성
+권옥출
+권득려
+권경윤
+권성식
+권외수
+권영욱
+권문임
+권명숙
+권용기
+권판수
+권이경
+권정곤
+권용득
+권성봉
+권온용
+권석정
+권용만
+권지동
+권경헌
+권신희
+권용철
+권용성
+권일옥
+권황운
+권용태
+권명수
+권욱련
+권경례
+권용태
+권종호
+권덕동
+권판형
+권용태
+권동희
+권언창
+권한수
+권원국
+권광용
+권성준
+권영이
+권원조
+권창희
+권실술
+권태학
+권원출
+권정조
+권병채
+권진기
+권월태
+권정길
+권양술
+권진열
+권은정
+권소도
+권복분
+권래경
+권의효
+권완로
+권병중
+권만열
+권익현
+권성현
+권석규
+권병원
+권임선
+권명택
+권현원
+권삼용
+권재건
+권근수
+권상권
+권인창
+권재덕
+권명태
+권이윤
+권영근
+권재화
+권동일
+권장수
+권차희
+권점순
+권효선
+권기수
+권영효
+권점태
+권정희
+권보곤
+권미억
+권정아
+권규복
+권재상
+권삼자
+권정오
+권겸옥
+권상호
+권형수
+권정희
+권항숙
+권필순
+권상의
+권제호
+권이식
+권재이
+권진익
+권종민
+권상조
+권재식
+권영수
+권종안
+권윤기
+권우선
+권용덕
+권종임
+권인희
+권영환
+권만오
+권좌근
+권기열
+권은영
+권윤식
+권주찬
+권석학
+권헌오
+권문수
+권주혁
+권사순
+권장기
+권종희
+권준우
+권종연
+권영혁
+권복용
+권준우
+권영연
+권근수
+권재근
+권준일
+권우근
+권병식
+권옥제
+권준일
+권주찬
+권용병
+권문화
+권준일
+권중호
+권기태
+권규길
+권중규
+권형철
+권기호
+권명민
+권중기
+권용달
+권상도
+권가필
+권중기
+권순화
+권억현
+권수숙
+권중달
+권홍연
+권신춘
+권경식
+권중대
+권삼수
+권재석
+권윤익
+권중대
+권재선
+권재명
+권무성
+권중만
+권순석
+권돈환
+권계연
+권중상
+권종출
+권장권
+권명열
+권중상
+권안진
+권위재
+권현원
+권중석
+권승표
+권덕응
+권병득
+권중열
+권병균
+권성경
+권영자
+권중열
+권경각
+권장출
+권봉웅
+권중철
+권평철
+권호석
+권경익
+권중화
+권영단
+권근준
+권보정
+권지영
+권순종
+권귀욱
+권계길
+권진상
+권우임
+권철철
+권종신
+권차남
+권춘기
+권수열
+권남연
+권차술
+권봉수
+권현열
+권종용
+권차연
+권길이
+권장열
+권미순
+권창기
+권정월
+권석득
+권운록
+권창식
+권흥이
+권성호
+권영욱
+권창화
+권진봉
+권정배
+권세수
+권춘궁
+권승운
+권민옥
+권경우
+권춘식
+권문표
+권준훈
+권차재
+권춘식
+권상열
+권상식
+권성배
+권춘오
+권한기
+권상근
+권영임
+권춘자
+권을범
+권금수
+권해목
+권춘자
+권영호
+권준화
+권복수
+권춘자
+권쌍필
+권종섭
+권영여
+권춘태
+권순구
+권해철
+권길희
+권칠만
+권종조
+권환수
+권근봉
+권태관
+권소성
+권경옥
+권상균
+권태관
+권명훈
+권종철
+권명숙
+권태국
+권태규
+권상천
+권인수
+권태근
+권주호
+권용배
+권만호
+권태달
+권명구
+권영관
+권영출
+권태동
+권창웅
+권병철
+권호숙
+권태생
+권덕재
+권난문
+권희덕
+권태숙
+권상석
+권원암
+권학외
+권태술
+권동훈
+권동명
+권점희
+권태식
+권정희
+권태석
+권윤근
+권태식
+권상기
+권태숙
+권범인
+권태암
+권점성
+권영선
+권성삼
+권태용
+권봉흠
+권시철
+권의득
+권태우
+권병옥
+권경식
+권수엽
+권태원
+권수관
+권정봉
+권재일
+권태일
+권영희
+권문환
+권중석
+권태정
+권태현
+권승훈
+권영원
+권태종
+권영영
+권재환
+권장봉
+권태창
+권현열
+권정명
+권븝도
+권태철
+권성단
+권석욱
+권상분
+권태철
+권정갑
+권록수
+권현이
+권태헌
+권무성
+권중근
+권영섭
+권태홍
+권만일
+권정만
+권영화
+권태휘
+권우구
+권기산
+권찬식
+권태희
+권종동
+권영건
+권천용
+권택종
+권병만
+권준재
+권모도
+권판순
+권용연
+권충수
+권영식
+권해철
+권태용
+권태철
+권재진
+권혁동
+권영양
+권쌍정
+권무섭
+권혁률
+권경춘
+권원삼
+권정기
+권혁우
+권현호
+권장제
+권양원
+권혁일
+권경조
+권용순
+권쌍하
+권혁종
+권진신
+권희선
+권성철
+권혁태
+권형식
+권삼자
+권말숙
+권혁호
+권복래
+권원구
+권일순
+권혁훈
+권종동
+권상희
+권기순
+권현순
+권종현
+권소조
+권석용
+권홍기
+권병천
+권석기
+권교래
+권홍기
+권순섭
+권점길
+권재호
+권화자
+권성순
+권해남
+권구차
+금기숙
+금성수
+금경세
+금금근
+금세환
+금영용
+금경국
+금정주
+금임년
+금근우
+금태희
+금순우
+금재현
+금말출
+금호수
+금노희
+금재호
+금재환
+금병순
+금병순
+기광섭
+기귀봉
+기재양
+기동순
+기광섭
+기성근
+기현희
+기재화
+기광섭
+기영선
+기시선
+기석호
+기권섭
+기정모
+기선제
+기진곤
+기남섭
+기진임
+기용순
+기성홍
+기말임
+기종근
+기태휘
+기상준
+기무섭
+기재재
+기무헌
+기소대
+기범석
+기성범
+기점생
+기언순
+기성현
+기인돌
+기임지
+기정선
+기세국
+기승봉
+기철훈
+기철섭
+기세록
+기대태
+기정석
+기윤경
+기세록
+기창현
+기종도
+기정성
+기세문
+기성중
+기상순
+기욱조
+기세준
+기상천
+기덕산
+기분광
+기신국
+기용수
+기근악
+기주훈
+기우근
+기미우
+기병현
+기종수
+기우달
+기영윤
+기규대
+기동하
+기우봉
+기병석
+기무현
+기 원
+기우분
+기창곤
+기종권
+기태희
+기우순
+기희태
+기월진
+기명곤
+기우종
+기달연
+기노돌
+기영숙
+기우주
+기옥란
+기해조
+기수출
+기우철
+기종욱
+기종례
+기동준
+기우해
+기대원
+기판석
+기삼석
+기인현
+기욱규
+기종우
+기삼진
+기인희
+기주조
+기판국
+기종진
+기일선
+기성용
+기홍용
+기은길
+기점환
+기점용
+기경영
+기진식
+기정섭
+기학석
+기준득
+기성희
+기종석
+기태생
+기재선
+기완미
+기준석
+기유봉
+기병규
+기종현
+기진연
+기승업
+기춘열
+기기주
+기청길
+기선호
+기판호
+기옥식
+기행남
+기진출
+기도종
+기근곤
+기효연
+기내운
+기진출
+기진열
+기희석
+기정천
+기태복
+기송태
+길석환
+길일원
+길승진
+길명조
+김 등
+김갑선
+김의수
+김오열
+김 성
+김남수
+김곡복
+김명완
+김 성
+김영옥
+김동근
+김광규
+김 용
+김술동
+김기춘
+김기용
+김 원
+김순묵
+김남교
+김희훈
+김 윤
+김광기
+김철자
+김오곤
+김 인
+김종길
+김성현
+김태만
+김 청
+김용성
+김재천
+김영환
+김 혁
+김연일
+김미흠
+김화기
+김 현
+김승래
+김억호
+김중형
+김 호
+김기남
+김명곤
+김운동
+김 훈
+김석용
+김일용
+김영철
+김가희
+김해경
+김봉철
+김정자
+김각중
+김재두
+김춘수
+김청휴
+김갑룡
+김성모
+김춘식
+김갑환
+김갑만
+김종옥
+김종식
+김혜갑
+김갑문
+김덕록
+김명직
+김규태
+김갑생
+김윤식
+김병정
+김종남
+김갑수
+김진석
+김순균
+김희환
+김갑수
+김경중
+김영수
+김해철
+김갑순
+김병호
+김인구
+김기삼
+김갑연
+김환동
+김덕모
+김상영
+김갑주
+김경정
+김창흠
+김재운
+김갑준
+김영모
+김필규
+김순학
+김갑진
+김장현
+김태수
+김오범
+김갑진
+김두길
+김연필
+김경순
+김갑현
+김종자
+김태호
+김종식
+김강덕
+김흥원
+김원춘
+김인오
+김강수
+김주자
+김상환
+김현림
+김강식
+김미수
+김판호
+김경수
+김강행
+김광표
+김영현
+김혜니
+김강호
+김무현
+김보희
+김창호
+김강화
+김춘영
+김진연
+김업자
+김개선
+김효조
+김성철
+김보윤
+김건개
+김병봉
+김호술
+김재일
+김건기
+김용수
+김선상
+김성길
+김건덕
+김석인
+김적도
+김재천
+김경구
+김철수
+김용률
+김상수
+김경도
+김준주
+김근영
+김성원
+김경란
+김은운
+김재연
+김대식
+김경례
+김달호
+김세홍
+김 수
+김경만
+김성일
+김덕용
+김석숙
+김경상
+김만태
+김장수
+김명화
+김경석
+김종수
+김수정
+김규현
+김경수
+김종호
+김원련
+김영화
+김경수
+김용수
+김영수
+김종수
+김경수
+김종택
+김성선
+김동용
+김경수
+김작교
+김영규
+김광견
+김경수
+김교조
+김인덕
+김권준
+김경숙
+김영자
+김태원
+김태현
+김경식
+김종호
+김용순
+김재자
+김경암
+김국군
+김윤조
+김판호
+김경애
+김두덕
+김갑황
+김동호
+김경애
+김주필
+김무금
+김상호
+김경오
+김경윤
+김복복
+김헌재
+김경오
+김언선
+김일웅
+김무희
+김경옥
+김태권
+김영관
+김하철
+김경우
+김수출
+김윤자
+김시규
+김경원
+김태팔
+김팔상
+김광현
+김경원
+김윤복
+김정분
+김성오
+김경인
+김재선
+김성덕
+김달균
+김경자
+김화득
+김영우
+김광이
+김경자
+김석재
+김문생
+김원현
+김경자
+김재원
+김칠현
+김현순
+김경자
+김세희
+김병호
+김재용
+김경재
+김재관
+김미홍
+김종호
+김경조
+김종학
+김본영
+김세우
+김경조
+김명수
+김영선
+김임돌
+김경종
+김진인
+김진동
+김상태
+김경태
+김일석
+김국택
+김중환
+김경태
+김철희
+김순희
+김상근
+김경태
+김동범
+김양기
+김수생
+김경태
+김상계
+김상동
+김재곤
+김경팔
+김상진
+김여석
+김종운
+김경호
+김재택
+김재출
+김주수
+김경호
+김창주
+김영준
+김두호
+김경호
+김춘규
+김경순
+김시한
+김경환
+김학택
+김재출
+김태현
+김경환
+김용실
+김광지
+김막순
+김경희
+김일수
+김정영
+김춘숙
+김경희
+김영용
+김태안
+김필애
+김경희
+김준방
+김재환
+김쾌근
+김경희
+김달조
+김현규
+김용원
+김경희
+김무수
+김소자
+김봉욱
+김경희
+김영국
+김상동
+김재자
+김계윤
+김상순
+김정식
+김정암
+김계택
+김종일
+김진극
+김성우
+김계한
+김중자
+김은홍
+김영호
+김계호
+김일용
+김정섭
+김재선
+김공주
+김원식
+김순철
+김기환
+김관두
+김점희
+김용진
+김차수
+김관영
+김호환
+김호하
+김원흠
+김관우
+김중형
+김선석
+김무동
+김관이
+김석기
+김신도
+김진하
+김광곤
+김수엽
+김용웅
+김순숙
+김광규
+김희환
+김기흥
+김구도
+김광덕
+김길근
+김정권
+김재열
+김광동
+김주택
+김무희
+김은구
+김광두
+김정희
+김재권
+김광용
+김광석
+김창승
+김승녀
+김상식
+김광석
+김병철
+김영동
+김주자
+김광수
+김동길
+김도봉
+김재철
+김광수
+김태석
+김양식
+김도경
+김광수
+김성수
+김춘우
+김분조
+김광수
+김정술
+김광화
+김화호
+김광수
+김극운
+김분환
+김두호
+김광수
+김해포
+김진식
+김록득
+김광수
+김병수
+김성경
+김철훈
+김광식
+김금환
+김재식
+김일현
+김광연
+김동철
+김재수
+김강기
+김광연
+김준화
+김덕조
+김성래
+김광열
+김병우
+김경규
+김춘재
+김광열
+김형섭
+김달빈
+김성봉
+김광엽
+김영균
+김성원
+김순련
+김광영
+김갑주
+김행철
+김차길
+김광영
+김규운
+김정호
+김재수
+김광영
+김준식
+김태이
+김용분
+김광우
+김경수
+김기곤
+김주대
+김광웅
+김우임
+김우홍
+김영섭
+김광웅
+김갑자
+김건수
+김희조
+김광웅
+김민칠
+김소수
+김희효
+김광웅
+김경수
+김광근
+김용록
+김광윤
+김양채
+김일석
+김진환
+김광일
+김갑중
+김호수
+김정목
+김광일
+김상우
+김재철
+김기수
+김광조
+김태배
+김인용
+김경순
+김광진
+김태수
+김오완
+김건도
+김광택
+김삼수
+김경직
+김효암
+김광택
+김기화
+김찬현
+김수선
+김광현
+김동용
+김세환
+김재운
+김광호
+김노민
+김용수
+김순년
+김광호
+김경우
+김종향
+김무수
+김광화
+김정호
+김철학
+김강돈
+김광회
+김연운
+김임권
+김성조
+김광효
+김명승
+김일웅
+김말호
+김광희
+김선우
+김순길
+김해삼
+김교락
+김영원
+김석환
+김일주
+김교순
+김대열
+김영섭
+김 열
+김교준
+김근주
+김상도
+김기배
+김교준
+김한규
+김종철
+김중관
+김교태
+김한문
+김영식
+김기석
+김교희
+김차열
+김영호
+김경기
+김구봉
+김선규
+김진식
+김용덕
+김구현
+김이우
+김원근
+김종웅
+김구현
+김광식
+김상철
+김복목
+김국동
+김춘상
+김만근
+김병선
+김국동
+김도수
+김성주
+김기헌
+김군남
+김만수
+김종욱
+김영선
+김군자
+김윤자
+김영복
+김봉설
+김권식
+김순재
+김필자
+김덕향
+김귀관
+김신학
+김기선
+김철은
+김귀남
+김상열
+김희영
+김일연
+김귀덕
+김점모
+김용난
+김길추
+김귀선
+김희자
+김상성
+김규수
+김귀순
+김재현
+김서환
+김승향
+김귀연
+김영용
+김태식
+김상현
+김귀연
+김정순
+김외국
+김일호
+김귀열
+김건환
+김정호
+김창종
+김귀용
+김진호
+김병철
+김주자
+김귀조
+김정남
+김기옥
+김의수
+김규대
+김철수
+김문주
+김용근
+김규배
+김영휴
+김중수
+김삼식
+김규상
+김태섬
+김준열
+김규택
+김규섭
+김영조
+김동규
+김재분
+김규섭
+김상수
+김실원
+김영율
+김규성
+김노섭
+김홍현
+김광철
+김규영
+김용수
+김세궁
+김병수
+김규우
+김영출
+김팔국
+김홍수
+김규욱
+김인영
+김원진
+김원문
+김규철
+김용자
+김기수
+김해연
+김규철
+김신환
+김승용
+김정권
+김규철
+김종무
+김주근
+김태현
+김규철
+김창권
+김해기
+김호식
+김규태
+김상열
+김용우
+김석팔
+김규태
+김국덕
+김이재
+김현식
+김규현
+김영악
+김호수
+김준현
+김규현
+김범근
+김재근
+김성황
+김규현
+김봉식
+김동호
+김상영
+김규환
+김미진
+김수수
+김용선
+김규희
+김명락
+김차선
+김두현
+김근생
+김동도
+김학석
+김광조
+김근식
+김정현
+김애복
+김재호
+김근식
+김상교
+김국득
+김재익
+김근중
+김지태
+김윤국
+김봉운
+김근호
+김상재
+김순문
+김순영
+김근호
+김혜주
+김영열
+김판수
+김금난
+김광우
+김경도
+김경술
+김금보
+김노도
+김정제
+김영성
+김금석
+김환현
+김명욱
+김한웅
+김금선
+김상식
+김금영
+김해환
+김금순
+김차철
+김소옥
+김홍봉
+김금순
+김상제
+김희환
+김영수
+김금순
+김종악
+김명열
+김태형
+김금연
+김용환
+김윤용
+김성보
+김금연
+김용호
+김만천
+김학주
+김금옥
+김애성
+김정정
+김홍우
+김금옥
+김기석
+김만만
+김용열
+김금용
+김타일
+김치봉
+김광일
+김금이
+김경근
+김원진
+김춘수
+김금이
+김춘식
+김재상
+김범국
+김금이
+김수규
+김우팔
+김상균
+김금자
+김분동
+김주이
+김해규
+김금자
+김근현
+김선학
+김해환
+김금하
+김인형
+김효선
+김을황
+김긍호
+김창득
+김진조
+김규돌
+김기고
+김돈배
+김문종
+김인하
+김기균
+김 환
+김태곤
+김재환
+김기균
+김영웅
+김해인
+김삼오
+김기년
+김문자
+김영선
+김광규
+김기년
+김동자
+김영범
+김봉순
+김기년
+김인범
+김강순
+김행철
+김기덕
+김금운
+김정환
+김필기
+김기덕
+김경용
+김홍숙
+김동수
+김기덕
+김경균
+김두옥
+김정섭
+김기도
+김재호
+김원한
+김홍자
+김기미
+김곡만
+김인재
+김암주
+김기범
+김기석
+김태대
+김운수
+김기병
+김만규
+김용문
+김태연
+김기봉
+김순중
+김규기
+김동만
+김기봉
+김광권
+김헌섭
+김장식
+김기분
+김명선
+김병순
+김상훈
+김기삼
+김순경
+김상수
+김영술
+김기석
+김만희
+김장대
+김수정
+김기석
+김상철
+김동열
+김선현
+김기선
+김광대
+김영열
+김의식
+김기성
+김평수
+김금래
+김희하
+김기수
+김해분
+김소남
+김선기
+김기수
+김정준
+김광동
+김동영
+김기수
+김재록
+김종숙
+김차수
+김기수
+김종재
+김양경
+김태기
+김기수
+김자은
+김영철
+김한식
+김기수
+김태수
+김혁오
+김성영
+김기순
+김준숙
+김 식
+김성병
+김기술
+김일규
+김병권
+김용한
+김기술
+김광원
+김태규
+김의오
+김기식
+김태숙
+김순하
+김규구
+김기식
+김상석
+김태우
+김원윤
+김기식
+김정재
+김효일
+김진석
+김기식
+김진술
+김병천
+김용훈
+김기식
+김재재
+김영열
+김경옥
+김기연
+김영건
+김근순
+김암준
+김기연
+김필열
+김봉석
+김진용
+김기열
+김완옥
+김석현
+김무세
+김기영
+김용달
+김병기
+김갑환
+김기옥
+김형현
+김금빈
+김판옥
+김기용
+김기석
+김태철
+김권영
+김기용
+김선원
+김신배
+김재미
+김기용
+김도규
+김윤조
+김종암
+김기원
+김순기
+김홍규
+김강우
+김기원
+김희순
+김태악
+김원선
+김기원
+김공권
+김수동
+김영환
+김기정
+김해미
+김윤익
+김정순
+김기준
+김종학
+김명희
+김쌍화
+김기준
+김재규
+김태희
+김기화
+김기중
+김인호
+김실기
+김문섭
+김기철
+김정생
+김안덕
+김기근
+김기철
+김소수
+김권태
+김태천
+김기철
+김종정
+김재학
+김학수
+김기태
+김용식
+김정진
+김호진
+김기필
+김수석
+김태자
+김병운
+김기현
+김차근
+김원덕
+김근석
+김기현
+김동희
+김순정
+김순수
+김기협
+김노숙
+김정호
+김재분
+김기호
+김달술
+김노훈
+김동보
+김기호
+김점진
+김상희
+김의탁
+김기호
+김윤용
+김태훈
+김영종
+김기호
+김하배
+김영열
+김진현
+김기홍
+김동영
+김순태
+김순희
+김기홍
+김용원
+김병한
+김성수
+김기홍
+김재식
+김상원
+김판형
+김기환
+김철범
+김주봉
+김봉열
+김기환
+김궁율
+김곤석
+김순재
+김기환
+김상경
+김수준
+김태우
+김기희
+김일자
+김상휴
+김재석
+김길동
+김병강
+김흥순
+김미철
+김길동
+김학규
+김창규
+김병록
+김길상
+김경문
+김경용
+김동지
+김길수
+김기천
+김용선
+김낙길
+김길환
+김운술
+김택영
+김윤태
+김나진자
+김정수용
+김원우영
+김정순정
+김나현
+김용동
+김지영
+김승권
+김낙동
+김상태
+김영룡
+김현호
+김낙호
+김수상
+김봉표
+김부현
+김난이
+김점겸
+김준권
+김희술
+김남근
+김혜호
+김천일
+김만이
+김남기
+김승만
+김인대
+김재연
+김남수
+김연희
+김성호
+김해탁
+김남수
+김차호
+김종호
+김정옥
+김남수
+김 옥
+김임이
+김영표
+김남순
+김일달
+김희희
+김현배
+김남용
+김재익
+김태구
+김해우
+김남우
+김헌선
+김경선
+김치석
+김남이
+김정정
+김곡기
+김동원
+김남조
+김채현
+김덕일
+김만근
+김노수
+김동식
+김현자
+김창철
+김다남
+김수웅
+김해주
+김찬계
+김달막
+김철호
+김종곤
+김병일
+김달막
+김홍애
+김기성
+김종원
+김달분
+김치호
+김외선
+김경교
+김달성
+김연환
+김재호
+김문암
+김달수
+김동봉
+김영현
+김영만
+김달식
+김천곤
+김두옥
+김지용
+김달식
+김소근
+김순술
+김영웅
+김달암
+김태군
+김복수
+김정환
+김달유
+김광숙
+김순기
+김옥준
+김달태
+김선량
+김미술
+김소지
+김달호
+김정환
+김병섭
+김길우
+김달화
+김필향
+김영자
+김영덕
+김대경
+김상봉
+김수식
+김성태
+김대규
+김미득
+김윤준
+김영택
+김대기
+김현필
+김진현
+김무남
+김대기
+김상식
+김성혁
+김윤복
+김대석
+김황만
+김장덕
+김성홍
+김대성
+김철헌
+김상원
+김재환
+김대수
+김상기
+김성철
+김승출
+김대식
+김병기
+김재화
+김찬영
+김대식
+김정철
+김득조
+김상근
+김대식
+김민철
+김정주
+김종권
+김대연
+김순술
+김효선
+김무상
+김대용
+김은미
+김규석
+김현환
+김대원
+김재창
+김형임
+김명만
+김대윤
+김기연
+김경석
+김종례
+김대응
+김수출
+김낙환
+김일실
+김대일
+김도철
+김보호
+김임철
+김대일
+김희준
+김을석
+김윤기
+김대종
+김동만
+김재화
+김덕방
+김대진
+김정옥
+김봉회
+김주원
+김대현
+김상권
+김춘오
+김용창
+김대현
+김대호
+김복석
+김성휴
+김대현
+김상택
+김윤희
+김노곤
+김대호
+김과수
+김재수
+김봉성
+김대환
+김기수
+김계한
+김성석
+김대희
+김은환
+김종열
+김병희
+김덕고
+김상빈
+김해곤
+김종만
+김덕곤
+김일수
+김기성
+김장석
+김덕리
+김기원
+김지정
+김승호
+김덕림
+김만문
+김금정
+김강동
+김덕만
+김종배
+김봉식
+김정표
+김덕수
+김상수
+김정희
+김영조
+김덕수
+김태로
+김연철
+김주용
+김덕순
+김상열
+김종기
+김화갑
+김덕순
+김성두
+김수연
+김하묵
+김덕연
+김귀현
+김외한
+김광자
+김덕연
+김성이
+김한규
+김종배
+김덕열
+김임춘
+김재규
+김상현
+김덕용
+김용완
+김해용
+김선웅
+김덕원
+김남만
+김창돌
+김수곤
+김덕조
+김현삼
+김영구
+김준제
+김덕조
+김경규
+김태규
+김인철
+김덕중
+김성로
+김석식
+김무수
+김덕해
+김호철
+김홍창
+김원휘
+김도경
+김태주
+김경선
+김수원
+김도기
+김상종
+김동대
+김기수
+김도암
+김영훈
+김주균
+김혜숙
+김도영
+김봉권
+김태미
+김봉길
+김도원
+김영근
+김노목
+김정말
+김도윤
+김태순
+김세식
+김재희
+김도중
+김칠용
+김성영
+김재곤
+김도한
+김광덕
+김성규
+김명운
+김도훈
+김차옥
+김봉갑
+김강모
+김도희
+김용선
+김해일
+김재오
+김동곤
+김이석
+김용택
+김성석
+김동권
+김태병
+김일도
+김인식
+김동근
+김건덕
+김정복
+김영일
+김동기
+김용대
+김흥기
+김대호
+김동기
+김경두
+김임호
+김승수
+김동기
+김수운
+김명덕
+김명환
+김동길
+김기모
+김복선
+김영수
+김동남
+김윤만
+김정순
+김선순
+김동례
+김명수
+김강숙
+김석득
+김동만
+김태환
+김쌍효
+김삼희
+김동섭
+김상연
+김유원
+김장권
+김동성
+김해경
+김경선
+김선록
+김동성
+김군영
+김맹호
+김갑준
+김동숙
+김월환
+김태교
+김윤수
+김동순
+김상선
+김재채
+김미락
+김동식
+김숙만
+김종출
+김윤기
+김동식
+김학학
+김기기
+김수용
+김동열
+김준순
+김명경
+김병환
+김동열
+김정률
+김광남
+김용규
+김동열
+김재이
+김태섭
+김일환
+김동용
+김욱윤
+김헌우
+김병철
+김동원
+김차길
+김정은
+김사열
+김동주
+김상득
+김충주
+김용찬
+김동주
+김준덕
+김홍은
+김동근
+김동준
+김홍형
+김해현
+김영규
+김동진
+김재관
+김필곤
+김수현
+김동진
+김희삼
+김성후
+김인동
+김동춘
+김정목
+김제용
+김태식
+김동춘
+김윤술
+김명규
+김영달
+김동춘
+김인현
+김중현
+김승래
+김동현
+김용화
+김진수
+김정회
+김동호
+김순경
+김병섭
+김수석
+김동환
+김윤오
+김종상
+김미이
+김동환
+김춘경
+김종술
+김항기
+김동환
+김병구
+김성식
+김일용
+김동환
+김석오
+김낙시
+김경성
+김동환
+김병수
+김인웅
+김창철
+김동효
+김태홍
+김남준
+김연원
+김동효
+김정식
+김구규
+김규임
+김두식
+김창호
+김근순
+김무둔
+김두연
+김희달
+김영준
+김원조
+김두연
+김영숙
+김인곤
+김인일
+김두완
+김차생
+김상동
+김창년
+김두천
+김원호
+김만만
+김태상
+김두출
+김춘정
+김정순
+김순건
+김두호
+김정영
+김용희
+김범백
+김두환
+김재규
+김상임
+김필환
+김두희
+김영철
+김하열
+김종조
+김득규
+김판관
+김정훈
+김상천
+김득석
+김영학
+김홍경
+김대휴
+김득용
+김태구
+김인수
+김해규
+김등길
+김순웅
+김재우
+김말화
+김만균
+김후심
+김선희
+김영현
+김만금
+김종숙
+김정두
+김운호
+김만금
+김병현
+김태술
+김인희
+김만길
+김지준
+김덕만
+김세현
+김만길
+김만문
+김채섭
+김경남
+김만달
+김상한
+김용길
+김영규
+김만덕
+김국수
+김미홍
+김현완
+김만덕
+김수수
+김재오
+김정호
+김만도
+김우달
+김한식
+김태용
+김만득
+김기갑
+김칠식
+김완구
+김만복
+김복용
+김이종
+김석옥
+김만석
+김병섭
+김성원
+김임규
+김만선
+김덕조
+김차순
+김태애
+김만수
+김효봉
+김문광
+김태판
+김만수
+김금주
+김봉수
+김병술
+김만수
+김매달
+김윤성
+김재현
+김만술
+김용호
+김금환
+김순호
+김만열
+김홍열
+김장권
+김인석
+김만용
+김상덕
+김준곤
+김종순
+김만원
+김창호
+김해자
+김원철
+김만원
+김영순
+김지근
+김창철
+김만이
+김상순
+김영평
+김대수
+김만조
+김자열
+김숙호
+김정도
+김만종
+김동성
+김지출
+김종균
+김만태
+김동근
+김석근
+김석재
+김만훈
+김정수
+김상도
+김창규
+김말난
+김복열
+김희호
+김희덕
+김말래
+김승기
+김순수
+김동봉
+김말련
+김정호
+김출원
+김옥진
+김말분
+김태연
+김차금
+김윤권
+김말석
+김기래
+김재영
+김순임
+김말선
+김달철
+김광윤
+김복준
+김말수
+김준선
+김태록
+김달기
+김말술
+김동우
+김태국
+김수이
+김말암
+김영술
+김판영
+김일숙
+김말이
+김순분
+김건곤
+김정왕
+김말임
+김용국
+김동종
+김태호
+김말조
+김철덕
+김명규
+김광자
+김맹환
+김한달
+김영근
+김극이
+김명곤
+김술만
+김일이
+김판대
+김명곤
+김소향
+김기호
+김재률
+김명국
+김상호
+김차희
+김종호
+김명규
+김윤범
+김태남
+김명철
+김명규
+김경호
+김종돌
+김동식
+김명락
+김갑기
+김 선
+김승윤
+김명섭
+김병순
+김승수
+김성흠
+김명수
+김차호
+김무권
+김숙순
+김명수
+김태환
+김미주
+김해국
+김명숙
+김점수
+김화구
+김태기
+김명숙
+김병덕
+김창대
+김안홍
+김명숙
+김태수
+김명식
+김종순
+김명순
+김태조
+김오화
+김용수
+김명순
+김태이
+김현곤
+김임구
+김명순
+김영화
+김정조
+김옥숙
+김명순
+김규화
+김성종
+김귀준
+김명식
+김을은
+김도발
+김운래
+김명애
+김문호
+김태경
+김원순
+김명오
+김일숙
+김윤희
+김환세
+김명옥
+김도호
+김채용
+김두열
+김명자
+김현자
+김상득
+김수완
+김명자
+김문율
+김규순
+김태완
+김명정
+김홍영
+김규호
+김영태
+김명중
+김성소
+김순택
+김전규
+김명진
+김항복
+김순래
+김진금
+김명진
+김춘규
+김정식
+김난영
+김명철
+김종영
+김자순
+김성붕
+김명철
+김태윤
+김일술
+김광례
+김명출
+김춘화
+김소희
+김순기
+김명출
+김만이
+김정양
+김태철
+김명출
+김순진
+김낙숙
+김성곤
+김명하
+김재수
+김동호
+김창석
+김명학
+김남호
+김태열
+김순규
+김명호
+김석일
+김재분
+김관순
+김명화
+김상철
+김일호
+김민영
+김명환
+김정수
+김길동
+김차길
+김명희
+김상화
+김상식
+김동옥
+김명희
+김기희
+김경가
+김순기
+김명희
+김상현
+김기태
+김두구
+김묘월
+김병주
+김재교
+김기정
+김무근
+김장선
+김갑일
+김헌재
+김무금
+김만출
+김성식
+김계순
+김무배
+김달휴
+김남조
+김재곤
+김무배
+김길준
+김재철
+김재득
+김무선
+김광동
+김병진
+김태탁
+김무식
+김병대
+김성구
+김성현
+김무연
+김규호
+김해용
+김계식
+김무열
+김경호
+김범자
+김상탁
+김무열
+김태갑
+김위수
+김진출
+김무철
+김환일
+김현수
+김재규
+김무태
+김복욱
+김 식
+김종영
+김무현
+김무수
+김명수
+김만조
+김무호
+김종수
+김태환
+김홍언
+김무환
+김귀용
+김관천
+김규식
+김무환
+김소동
+김을돌
+김윤이
+김문구
+김영균
+김재수
+김성석
+김문기
+김정관
+김태홍
+김기섭
+김문돌
+김종희
+김기천
+김판희
+김문배
+김순연
+김교수
+김종봉
+김문배
+김성옥
+김용도
+김상수
+김문수
+김몽곤
+김재희
+김창식
+김문수
+김판선
+김병식
+김영곤
+김문수
+김수원
+김태광
+김인희
+김문식
+김동림
+김선기
+김정덕
+김문열
+김성준
+김원조
+김재우
+김문열
+김윤만
+김재준
+김상동
+김문영
+김영식
+김분하
+김의하
+김문용
+김일보
+김정수
+김말주
+김문주
+김성원
+김재만
+김기욱
+김문호
+김명국
+김종동
+김억천
+김미경
+김신용
+김영휴
+김수철
+김미숙
+김영기
+김용준
+김재수
+김미옥
+김천구
+김운진
+김보우
+김미자
+김종근
+김상필
+김달근
+김미정
+김삼길
+김광곤
+김성순
+김미정
+김상준
+김병순
+김용연
+김민애
+김근열
+김영환
+김용용
+김민우
+김덕현
+김강윤
+김가호
+김민자
+김장복
+김인조
+김성영
+김민정
+김재희
+김병자
+김홍호
+김민철
+김순식
+김명교
+김종춘
+김범수
+김영훈
+김해식
+김익순
+김범준
+김병권
+김봉연
+김병섭
+김범출
+김기현
+김장두
+김효구
+김범태
+김양길
+김태순
+김용재
+김병관
+김충훈
+김용기
+김수호
+김병권
+김영택
+김상수
+김진욱
+김병규
+김호감
+김미노
+김낙호
+김병근
+김계기
+김헌문
+김일환
+김병기
+김용술
+김숙조
+김상욱
+김병달
+김차섭
+김상영
+김충영
+김병덕
+김규열
+김상준
+김만우
+김병덕
+김충수
+김점노
+김언식
+김병려
+김송호
+김수봉
+김종희
+김병련
+김종곤
+김승숙
+김종연
+김병림
+김노숙
+김동용
+김성균
+김병만
+김호휴
+김수자
+김문도
+김병삼
+김성원
+김우숙
+김원봉
+김병삼
+김인수
+김창순
+김동국
+김병상
+김본자
+김규완
+김종갑
+김병수
+김치순
+김동영
+김보모
+김병수
+김연석
+김수순
+김영도
+김병수
+김석래
+김종영
+김혜권
+김병식
+김 부
+김도용
+김만도
+김병연
+김해춘
+김종도
+김강섭
+김병열
+김숙순
+김정수
+김승길
+김병완
+김석길
+김윤우
+김용범
+김병용
+김소만
+김동길
+김용기
+김병우
+김용주
+김말엽
+김은수
+김병우
+김병옥
+김원구
+김우수
+김병원
+김창록
+김달호
+김필종
+김병익
+김주호
+김승석
+김봉도
+김병주
+김정문
+김현례
+김상근
+김병준
+김홍원
+김기성
+김택수
+김병준
+김정수
+김풍소
+김명규
+김병진
+김경일
+김형진
+김재환
+김병철
+김유기
+김영학
+김명성
+김병춘
+김달현
+김태순
+김덕자
+김병태
+김은문
+김정우
+김인순
+김병호
+김경식
+김덕필
+김태덕
+김병호
+김효섭
+김왕환
+김수태
+김병환
+김병환
+김상도
+김정숙
+김병훈
+김태금
+김희실
+김국상
+김병훈
+김진선
+김주국
+김구기
+김병희
+김옥호
+김해호
+김정숙
+김보환
+김여조
+김갑휘
+김임곤
+김복란
+김달분
+김수자
+김대금
+김복련
+김재곤
+김종애
+김영영
+김복례
+김종식
+김필도
+김상철
+김복석
+김점석
+김범정
+김기조
+김복수
+김병우
+김영규
+김교민
+김복수
+김상동
+김윤만
+김영택
+김복숙
+김경자
+김미호
+김외환
+김복순
+김성희
+김동환
+김태규
+김복순
+김신조
+김병섭
+김영옥
+김복술
+김상구
+김세갑
+김무돈
+김복시
+김재선
+김영열
+김재익
+김복심
+김봉훈
+김수분
+김도현
+김복연
+김계규
+김윤원
+김용호
+김복연
+김인래
+김진봉
+김상기
+김복용
+김옥봉
+김영례
+김학기
+김복임
+김용용
+김태철
+김을택
+김복조
+김춘숙
+김만록
+김광용
+김복준
+김기두
+김만경
+김재해
+김복현
+김진우
+김기규
+김태준
+김복희
+김기연
+김필권
+김만곤
+김봉갑
+김윤희
+김영율
+김영근
+김봉관
+김광도
+김상욱
+김원열
+김봉권
+김수식
+김귀성
+김상이
+김봉권
+김진권
+김성길
+김춘종
+김봉기
+김태순
+김태규
+김동선
+김봉기
+김중영
+김갑영
+김이석
+김봉길
+김태준
+김종희
+김강희
+김봉늠
+김석철
+김의야
+김광학
+김봉도
+김근택
+김추석
+김신진
+김봉선
+김흥만
+김남숙
+김성분
+김봉선
+김두목
+김정옥
+김금열
+김봉섭
+김창도
+김대만
+김기자
+김봉수
+김 덕
+김종자
+김정현
+김봉수
+김재조
+김주학
+김효찬
+김봉자
+김동욱
+김두순
+김성준
+김봉주
+김순태
+김승용
+김동욱
+김봉진
+김윤내
+김재식
+김경길
+김봉진
+김태환
+김상남
+김동재
+김봉호
+김준식
+김은규
+김효무
+김봉호
+김문헌
+김희우
+김귀희
+김봉호
+김경수
+김학득
+김해호
+김부근
+김분연
+김효생
+김기균
+김부형
+김영삼
+김정동
+김병조
+김분남
+김정자
+김길주
+김대분
+김분선
+김희달
+김삼식
+김태구
+김분악
+김정용
+김수배
+김제덕
+김분열
+김광호
+김영수
+김광수
+김분이
+김동래
+김태자
+김태순
+김분이
+김영계
+김우남
+김양준
+김분조
+김차희
+김관대
+김성선
+김사곤
+김태식
+김진우
+김수식
+김사순
+김상철
+김재준
+김종조
+김사일
+김윤영
+김경기
+김기동
+김사조
+김정수
+김성철
+김만애
+김삼국
+김성근
+김규호
+김기분
+김삼남
+김용우
+김태중
+김병성
+김삼동
+김삼태
+김정식
+김요석
+김삼명
+김창희
+김홍희
+김태순
+김삼방
+김병봉
+김영훈
+김려길
+김삼봉
+김기권
+김영준
+김종식
+김삼상
+김대수
+김명구
+김상희
+김삼수
+김희상
+김종중
+김금래
+김삼수
+김종운
+김정현
+김영수
+김삼용
+김익진
+김명호
+김재원
+김삼용
+김성동
+김순로
+김소호
+김삼조
+김영래
+김복한
+김원환
+김삼진
+김영종
+김종규
+김종해
+김삼출
+김태춘
+김일구
+김상준
+김삼출
+김윤식
+김진금
+김영석
+김삼호
+김철상
+김인봉
+김의호
+김상
+김택
+김철
+김태
+김상곤
+김영구
+김상빈
+김두종
+김상곤
+김진암
+김공현
+김진규
+김상곤
+김준출
+김순자
+김성운
+김상관
+김희수
+김선권
+김수섭
+김상구
+김선석
+김미용
+김해선
+김상구
+김태하
+김규연
+김연수
+김상구
+김극일
+김태운
+김종용
+김상구
+김희훈
+김해원
+김윤출
+김상권
+김병표
+김상천
+김필난
+김상규
+김성경
+김곡찬
+김귀호
+김상규
+김순곤
+김명연
+김천병
+김상규
+김용영
+김종섭
+김종숙
+김상규
+김무희
+김우출
+김경기
+김상균
+김영수
+김의일
+김응희
+김상근
+김춘탁
+김성점
+김원옥
+김상근
+김차봉
+김정범
+김좌순
+김상기
+김희배
+김종덕
+김병정
+김상길
+김욱휴
+김일배
+김세수
+김상덕
+김해선
+김대갑
+김연봉
+김상덕
+김창봉
+김재선
+김재희
+김상덕
+김경태
+김분천
+김갑수
+김상덕
+김순달
+김재호
+김미진
+김상돈
+김용자
+김영식
+김병호
+김상록
+김미섭
+김호호
+김경식
+김상만
+김을우
+김명용
+김열진
+김상만
+김달세
+김자욱
+김윤호
+김상문
+김옥용
+김 창
+김희택
+김상문
+김용용
+김헌택
+김명현
+김상미
+김기영
+김채일
+김성호
+김상배
+김영길
+김명현
+김상순
+김상석
+김추연
+김윤건
+김정열
+김상섭
+김종식
+김순출
+김종국
+김상수
+김언덕
+김삼혜
+김수래
+김상수
+김재이
+김상현
+김강선
+김상수
+김정봉
+김태옥
+김삼래
+김상수
+김진동
+김칠이
+김성한
+김상숙
+김홍석
+김병조
+김월환
+김상술
+김호배
+김삼석
+김손석
+김상시
+김장윤
+김기현
+김재이
+김상식
+김종성
+김은화
+김춘현
+김상연
+김영태
+김진관
+김선준
+김상연
+김용해
+김상곤
+김건원
+김상열
+김덕찬
+김윤우
+김주성
+김상열
+김병훈
+김상근
+김명달
+김상영
+김금동
+김분석
+김중식
+김상오
+김병호
+김순동
+김창용
+김상용
+김정현
+김홍준
+김말교
+김상용
+김찬원
+김기식
+김보하
+김상용
+김준덕
+김윤근
+김일룡
+김상운
+김연호
+김미곤
+김경만
+김상원
+김동계
+김점희
+김도식
+김상윤
+김응문
+김호록
+김인생
+김상율
+김영하
+김화순
+김경록
+김상율
+김용수
+김동근
+김재성
+김상율
+김진태
+김광학
+김해조
+김상응
+김봉기
+김병국
+김노균
+김상일
+김윤학
+김상종
+김광정
+김상일
+김병찬
+김창형
+김석섭
+김상일
+김소대
+김승라
+김상근
+김상재
+김유수
+김건원
+김종환
+김상조
+김춘도
+김식덕
+김동호
+김상종
+김춘섭
+김홍수
+김재완
+김상중
+김상희
+김상후
+김장봉
+김상진
+김노석
+김달남
+김용원
+김상진
+김명석
+김병열
+김은술
+김상천
+김순진
+김태구
+김영자
+김상철
+김송수
+김실한
+김현영
+김상철
+김용길
+김상호
+김금자
+김상철
+김남석
+김영수
+김웅대
+김상태
+김미석
+김호규
+김영옥
+김상태
+김지호
+김준성
+김태식
+김상태
+김중호
+김승복
+김재권
+김상하
+김상섭
+김면호
+김상옥
+김상한
+김호훈
+김봉권
+김동식
+김상헌
+김영자
+김지호
+김관현
+김상혁
+김영환
+김종희
+김명찬
+김상현
+김경준
+김점봉
+김중학
+김상현
+김삼수
+김효춘
+김영복
+김상현
+김성환
+김기문
+김종성
+김상호
+김우규
+김경갑
+김창현
+김상호
+김은현
+김기경
+김경득
+김상호
+김복술
+김재순
+김분효
+김상호
+김내택
+김은성
+김은자
+김상홍
+김영암
+김숙미
+김채희
+김상환
+김일환
+김춘호
+김미현
+김상훈
+김재하
+김달순
+김우호
+김상희
+김광영
+김건기
+김만철
+김상희
+김기옥
+김헌희
+김문숙
+김상희
+김태우
+김학술
+김용석
+김서암
+김대태
+김계석
+김종금
+김석곤
+김순애
+김태조
+김노희
+김석관
+김복양
+김용환
+김해현
+김석규
+김영규
+김태득
+김종영
+김석균
+김경희
+김대황
+김차용
+김석근
+김점경
+김판필
+김정천
+김석근
+김인옥
+김창열
+김태세
+김석근
+김갑만
+김정암
+김해곤
+김석노
+김정두
+김도창
+김숙표
+김석도
+김순재
+김태원
+김해만
+김석동
+김판전
+김용호
+김일수
+김석란
+김종봉
+김병수
+김원평
+김석수
+김봉덕
+김춘열
+김말근
+김석순
+김길복
+김경술
+김조현
+김석암
+김동삼
+김대식
+김경호
+김석연
+김귀봉
+김상출
+김진건
+김석열
+김진현
+김노봉
+김길애
+김석이
+김태연
+김운식
+김태만
+김석재
+김달탁
+김종록
+김상현
+김석조
+김권익
+김문규
+김상범
+김석종
+김헌규
+김미준
+김태만
+김석준
+김동석
+김미일
+김기복
+김석진
+김상석
+김수임
+김용조
+김석천
+김경관
+김영유
+김성석
+김석철
+김재금
+김영용
+김규준
+김석환
+김소장
+김낙순
+김대정
+김선교
+김영수
+김중갑
+김성수
+김선덕
+김영임
+김병섭
+김정수
+김선만
+김성제
+김차오
+김춘수
+김선미
+김창자
+김효미
+김정수
+김선봉
+김용윤
+김복성
+김우영
+김선분
+김성성
+김필태
+김광현
+김선술
+김진자
+김홍각
+김태천
+김선우
+김복용
+김종희
+김복환
+김선욱
+김점용
+김병수
+김상수
+김선욱
+김기운
+김준호
+김해재
+김선이
+김정수
+김상숙
+김기자
+김선이
+김춘우
+김정식
+김순인
+김선이
+김경호
+김선수
+김희섭
+김선이
+김윤원
+김정표
+김윤군
+김선이
+김영애
+김재수
+김삼규
+김선자
+김근주
+김동중
+김경석
+김선자
+김정련
+김동자
+김홍동
+김선중
+김석선
+김영훈
+김연진
+김선태
+김영식
+김규웅
+김재진
+김선태
+김병돌
+김상덕
+김쌍표
+김선태
+김상행
+김영동
+김수조
+김선효
+김수천
+김옥일
+김종포
+김선희
+김종달
+김무기
+김경석
+김선희
+김삼화
+김의한
+김조고
+김선희
+김주임
+김환기
+김혁수
+김설자
+김주동
+김상술
+김재원
+김성계
+김차윤
+김덕빈
+김경희
+김성곤
+김옥길
+김인동
+김소훈
+김성곤
+김사설
+김판만
+김동천
+김성곤
+김윤준
+김태균
+김팔옥
+김성곤
+김진하
+김소효
+김성환
+김성구
+김재일
+김종수
+김우순
+김성구
+김상대
+김인수
+김영대
+김성구
+김만환
+김희기
+김석분
+김성구
+김영문
+김병구
+김진권
+김성구
+김태기
+김순점
+김상조
+김성규
+김순철
+김사규
+김일호
+김성규
+김무배
+김영현
+김재옥
+김성규
+김봉규
+김진우
+김성도
+김성근
+김범숙
+김훈철
+김우환
+김성근
+김호희
+김태자
+김승선
+김성기
+김종현
+김점범
+김용수
+김성기
+김임제
+김성일
+김병태
+김성기
+김옥국
+김태화
+김천희
+김성기
+김영분
+김옥석
+김덕관
+김성기
+김노원
+김영식
+김윤동
+김성기
+김운운
+김영순
+김상종
+김성기
+김병주
+김무호
+김용학
+김성기
+김상우
+김병학
+김정진
+김성남
+김중상
+김준희
+김종완
+김성덕
+김해용
+김영구
+김상진
+김성도
+김원곤
+김인원
+김락식
+김성도
+김봉이
+김유채
+김정조
+김성락
+김상환
+김주칠
+김연옥
+김성렬
+김정철
+김상철
+김억목
+김성례
+김응주
+김수환
+김타숙
+김성률
+김호수
+김경호
+김현락
+김성만
+김창일
+김철표
+김희학
+김성목
+김광만
+김택언
+김진소
+김성문
+김근기
+김을주
+김순돌
+김성배
+김정생
+김소권
+김건기
+김성배
+김관건
+김정희
+김성환
+김성복
+김용희
+김분포
+김기목
+김성복
+김용현
+김광모
+김준택
+김성생
+김명홍
+김주웅
+김종건
+김성선
+김기홍
+김점탁
+김재권
+김성수
+김선숙
+김낙진
+김분문
+김성수
+김동제
+김춘박
+김기웅
+김성수
+김태복
+김완옥
+김광순
+김성수
+김춘익
+김길호
+김성영
+김성순
+김세진
+김소식
+김근진
+김성식
+김용주
+김자식
+김명홍
+김성열
+김영우
+김정광
+김헌일
+김성열
+김무순
+김심임
+김갑수
+김성열
+김천일
+김재대
+김영도
+김성열
+김동식
+김유식
+김영락
+김성영
+김인덕
+김충목
+김성호
+김성용
+김남순
+김종환
+김문규
+김성용
+김외동
+김칠도
+김경노
+김성용
+김중철
+김수현
+김옥복
+김성우
+김장술
+김영정
+김태천
+김성우
+김건길
+김명식
+김관근
+김성우
+김명설
+김삼인
+김종희
+김성우
+김의우
+김수인
+김시술
+김성욱
+김소두
+김근배
+김성수
+김성운
+김근진
+김영달
+김현태
+김성운
+김재종
+김정춘
+김광순
+김성운
+김경호
+김진환
+김만근
+김성윤
+김정석
+김도주
+김병한
+김성일
+김시학
+김수학
+김강기
+김성일
+김장개
+김덕교
+김근동
+김성일
+김병우
+김상언
+김기웅
+김성재
+김광철
+김병치
+김재순
+김성조
+김재환
+김만철
+김연순
+김성주
+김덕태
+김원규
+김재호
+김성준
+김태순
+김정기
+김혜득
+김성진
+김용주
+김금완
+김재도
+김성진
+김춘이
+김현조
+김희례
+김성출
+김종호
+김 용
+김유섭
+김성치
+김병도
+김재진
+김재석
+김성태
+김정호
+김용해
+김성길
+김성태
+김진환
+김명선
+김영철
+김성태
+김효점
+김태종
+김왕소
+김성태
+김태란
+김노희
+김기선
+김성택
+김수철
+김점우
+김성윤
+김성필
+김병영
+김재호
+김병술
+김성한
+김종재
+김월경
+김홍선
+김성호
+김병길
+김명주
+김효덕
+김성호
+김덕명
+김만기
+김성근
+김성호
+김노기
+김재옥
+김명덕
+김성환
+김쾌문
+김영름
+김태하
+김성환
+김을도
+김석봉
+김수용
+김성훈
+김상수
+김판로
+김차이
+김성훈
+김옥태
+김영득
+김석조
+김성훈
+김철봉
+김종준
+김찬명
+김성희
+김상주
+김해수
+김정열
+김성희
+김재애
+김경택
+김영천
+김성희
+김순우
+김옥덕
+김종희
+김세기
+김성태
+김승란
+김봉식
+김세덕
+김종용
+김해환
+김상국
+김세연
+김태식
+김성홍
+김일덕
+김세완
+김수락
+김종자
+김분섭
+김세운
+김동석
+김행술
+김광상
+김세호
+김미진
+김해구
+김용권
+김세훈
+김규원
+김현동
+김진소
+김소경
+김부성
+김재현
+김철선
+김소남
+김영동
+김관웅
+김기웅
+김소덕
+김필복
+김관휴
+김정순
+김소덕
+김태영
+김원기
+김기구
+김소도
+김수현
+김윤남
+김재교
+김소도
+김임덕
+김규원
+김규철
+김소득
+김봉환
+김태환
+김병진
+김소배
+김계조
+김영용
+김숙열
+김소선
+김택애
+김춘수
+김판언
+김소순
+김용영
+김기억
+김정호
+김소연
+김악선
+김현중
+김남술
+김소조
+김성숙
+김상열
+김영희
+김소철
+김병갑
+김용란
+김만휴
+김소철
+김연학
+김성희
+김기석
+김소춘
+김대태
+김경이
+김종목
+김소한
+김우문
+김종준
+김영희
+김소향
+김병철
+김강근
+김정련
+김수갑
+김용일
+김조무
+김갑호
+김수강
+김태우
+김해배
+김희경
+김수경
+김경호
+김봉희
+김중규
+김수관
+김정원
+김혜모
+김병수
+김수길
+김계자
+김홍학
+김영림
+김수길
+김수원
+김수대
+김희임
+김수길
+김억웅
+김영연
+김장우
+김수길
+김미운
+김태우
+김분명
+김수년
+김동호
+김희포
+김길선
+김수동
+김지순
+김성우
+김주출
+김수만
+김종찬
+김수태
+김보두
+김수병
+김수분
+김정도
+김진이
+김수복
+김희석
+김성준
+김홍환
+김수복
+김기백
+김영이
+김봉분
+김수상
+김창남
+김채곤
+김중용
+김수석
+김수학
+김태태
+김상식
+김수선
+김무호
+김한선
+김점옥
+김수식
+김무현
+김명용
+김경만
+김수연
+김영규
+김규수
+김장철
+김수열
+김명금
+김용학
+김말선
+김수열
+김정호
+김효출
+김상완
+김수영
+김석연
+김행근
+김상수
+김수용
+김정석
+김진주
+김춘돌
+김수운
+김태명
+김낙진
+김자수
+김수웅
+김재수
+김진범
+김광웅
+김수원
+김복선
+김재은
+김일석
+김수익
+김모기
+김대열
+김주엽
+김수일
+김인기
+김기재
+김병환
+김수정
+김광흠
+김재금
+김달식
+김수종
+김충열
+김순자
+김경조
+김수준
+김기순
+김병봉
+김성년
+김수창
+김일호
+김태호
+김인우
+김수철
+김열윤
+김옥호
+김시수
+김수철
+김계균
+김순선
+김웅분
+김수태
+김등길
+김나기
+김상영
+김수태
+김춘춘
+김은조
+김명수
+김수택
+김금순
+김정조
+김태선
+김수택
+김우기
+김창기
+김인술
+김수현
+김미식
+김장룡
+김정궁
+김수현
+김광자
+김진현
+김금균
+김수호
+김창우
+김일식
+김원길
+김수호
+김주만
+김성자
+김익자
+김수호
+김상룡
+김방원
+김유한
+김수호
+김완일
+김행덕
+김병현
+김수화
+김지수
+김성원
+김성한
+김수환
+김춘혁
+김동진
+김동옥
+김수환
+김병범
+김성철
+김주석
+김수효
+김영연
+김정덕
+김윤수
+김수효
+김병점
+김영조
+김계오
+김숙이
+김정철
+김장래
+김석수
+김숙자
+김용중
+김월정
+김상노
+김숙자
+김담수
+김우순
+김삼숙
+김숙자
+김규선
+김해화
+김종근
+김숙현
+김장조
+김장태
+김무영
+김숙희
+김진상
+김동열
+김해세
+김순국
+김준권
+김인택
+김종수
+김순금
+김영필
+김영술
+김숙권
+김순기
+김윤근
+김소선
+김승연
+김순남
+김영성
+김문봉
+김성화
+김순남
+김순식
+김순길
+김철원
+김순남
+김명규
+김문조
+김창영
+김순남
+김형자
+김도호
+김권헌
+김순덕
+김상순
+김진웅
+김위철
+김순동
+김명일
+김종휴
+김재상
+김순득
+김영일
+김세열
+김석홍
+김순례
+김병준
+김한근
+김규환
+김순배
+김광원
+김상주
+김점섭
+김순분
+김우경
+김태수
+김종탁
+김순생
+김신삼
+김영영
+김종훈
+김순선
+김교기
+김제화
+김정희
+김순선
+김곤학
+김성구
+김원학
+김순식
+김정환
+김용주
+김말휴
+김순애
+김상창
+김혜도
+김혁용
+김순연
+김종일
+김정수
+김종동
+김순연
+김상윤
+김재호
+김춘진
+김순연
+김영식
+김영삼
+김신원
+김순옥
+김현조
+김경태
+김도열
+김순완
+김병분
+김정주
+김오오
+김순이
+김태영
+김순호
+김영선
+김순이
+김행향
+김성대
+김하동
+김순이
+김순환
+김보구
+김영영
+김순임
+김두생
+김재기
+김희태
+김순임
+김완흠
+김춘환
+김수수
+김순자
+김봉수
+김석관
+김문지
+김순호
+김경무
+김정용
+김범조
+김순화
+김영이
+김수덕
+김낙연
+김순희
+김정말
+김정식
+김옥대
+김순희
+김재식
+김해한
+김광권
+김순희
+김분식
+김원호
+김국식
+김술이
+김의희
+김성암
+김만재
+김술이
+김준직
+김정기
+김귀돌
+김승구
+김동현
+김영인
+김 순
+김승구
+김화해
+김순림
+김동식
+김승목
+김상섭
+김종화
+김영숙
+김승민
+김점돌
+김태용
+김기근
+김승정
+김종호
+김상석
+김춘수
+김승진
+김장철
+김유근
+김종대
+김승호
+김판순
+김명희
+김정금
+김시경
+김준환
+김승호
+김호임
+김시덕
+김준희
+김상판
+김석문
+김시동
+김원환
+김태교
+김범근
+김시래
+김병규
+김극애
+김남모
+김시운
+김영훈
+김용일
+김희식
+김시하
+김윤수
+김용환
+김근점
+김시환
+김만찬
+김주호
+김분덕
+김시환
+김진태
+김우경
+김하래
+김식규
+김성억
+김이주
+김상원
+김신숙
+김필조
+김병숙
+김정달
+김신식
+김남호
+김순석
+김태준
+김신열
+김태원
+김헌원
+김필점
+김신우
+김복도
+김훈석
+김재원
+김신일
+김대태
+김분향
+김현수
+김실경
+김임달
+김정호
+김병식
+김실광
+김달호
+김점섭
+김주욱
+김실광
+김도수
+김노열
+김춘원
+김쌍길
+김정덕
+김영노
+김양선
+김쌍례
+김경복
+김영호
+김태수
+김쌍봉
+김금완
+김용원
+김문운
+김쌍섭
+김인도
+김경호
+김종권
+김쌍암
+김동숙
+김기구
+김순자
+김아수
+김손권
+김종수
+김금이
+김악이
+김순수
+김윤수
+김동태
+김안수
+김순길
+김상수
+김광태
+김암남
+김장생
+김봉오
+김병옥
+김애연
+김익원
+김쾌옥
+김 모
+김양석
+김진운
+김해선
+김영원
+김양순
+김상섭
+김성태
+김희열
+김양순
+김창준
+김작락
+김재술
+김양식
+김교열
+김일덕
+김래출
+김양웅
+김상래
+김선현
+김성곤
+김양웅
+김순석
+김명순
+김경식
+김양원
+김인기
+김명한
+김성표
+김양주
+김관구
+김봉일
+김주운
+김양회
+김민희
+김광용
+김옥환
+김양흠
+김재한
+김대규
+김수덕
+김양희
+김규규
+김무우
+김강만
+김억년
+김철화
+김덕경
+김세문
+김억만
+김윤수
+김현걸
+김태률
+김억배
+김치호
+김병성
+김순생
+김억수
+김봉관
+김영악
+김윤권
+김언숙
+김성윤
+김문홍
+김종본
+김언식
+김수원
+김춘식
+김분경
+김연선
+김봉환
+김복현
+김홍경
+김연선
+김종률
+김홍식
+김대동
+김연수
+김춘곤
+김영환
+김의자
+김연수
+김정규
+김정성
+김쌍오
+김연수
+김삼식
+김용측
+김이일
+김연순
+김금석
+김진도
+김행종
+김연이
+김만식
+김범탁
+김종재
+김연조
+김인철
+김동근
+김말수
+김연조
+김성생
+김인규
+김용자
+김연주
+김석암
+김소동
+김선수
+김연향
+김인종
+김태용
+김영순
+김연희
+김양근
+김점주
+김병주
+김연희
+김형홍
+김재길
+김수길
+김영갑
+김종보
+김찬경
+김태영
+김영계
+김윤분
+김옥규
+김태도
+김영계
+김갑숙
+김구계
+김동연
+김영공
+김상화
+김세우
+김천연
+김영관
+김정경
+김해민
+김용재
+김영광
+김윤길
+김위수
+김경규
+김영교
+김영태
+김기태
+김종각
+김영구
+김채화
+김종원
+김병일
+김영구
+김원원
+김용희
+김철용
+김영구
+김영태
+김영현
+김해식
+김영국
+김준용
+김임수
+김면성
+김영국
+김동성
+김성현
+김재호
+김영귀
+김순진
+김순용
+김정동
+김영규
+김용범
+김동환
+김수진
+김영규
+김석성
+김경경
+김학영
+김영규
+김용식
+김귀덕
+김영헌
+김영규
+김한조
+김구재
+김영억
+김영규
+김병수
+김후도
+김태환
+김영균
+김재규
+김민흠
+김필용
+김영근
+김진윤
+김재심
+김재일
+김영근
+김우환
+김경태
+김현봉
+김영기
+김명옥
+김윤임
+김경용
+김영기
+김광호
+김경환
+김경오
+김영기
+김건주
+김석의
+김형운
+김영기
+김한중
+김동숙
+김양영
+김영길
+김희석
+김성래
+김창현
+김영길
+김명호
+김중용
+김용태
+김영길
+김종수
+김판용
+김용숙
+김영길
+김석순
+김오식
+김영석
+김영대
+김해년
+김용이
+김노철
+김영대
+김지규
+김태희
+김정희
+김영도
+김태석
+김태재
+김상천
+김영도
+김재록
+김소식
+김종호
+김영돈
+김정도
+김종학
+김임섭
+김영득
+김임현
+김인동
+김미순
+김영락
+김정근
+김창향
+김상순
+김영란
+김신경
+김용도
+김월환
+김영란
+김재환
+김윤용
+김삼덕
+김영만
+김록일
+김춘철
+김말광
+김영만
+김일부
+김재태
+김호규
+김영만
+김승갑
+김쌍건
+김종조
+김영만
+김장식
+김귀응
+김점식
+김영모
+김시호
+김차동
+김성선
+김영모
+김성순
+김종자
+김광영
+김영미
+김원기
+김상현
+김재수
+김영미
+김종성
+김의이
+김선현
+김영배
+김영길
+김명문
+김창이
+김영배
+김윤술
+김영근
+김학회
+김영봉
+김종호
+김수백
+김인환
+김영봉
+김상석
+김광국
+김성경
+김영부
+김재호
+김길근
+김태래
+김영빈
+김정인
+김문석
+김수원
+김영삼
+김수석
+김용곤
+김재정
+김영삼
+김규열
+김익환
+김영환
+김영상
+김영직
+김창수
+김성자
+김영석
+김상향
+김재수
+김진세
+김영석
+김수미
+김무철
+김규준
+김영석
+김상영
+김상규
+김봉윤
+김영석
+김형연
+김판섭
+김상일
+김영석
+김을식
+김병선
+김이경
+김영석
+김미복
+김영록
+김대만
+김영성
+김원헌
+김맹이
+김병우
+김영수
+김헌상
+김금순
+김재분
+김영수
+김희숙
+김세길
+김병수
+김영수
+김형애
+김갑기
+김희열
+김영수
+김재교
+김순광
+김용현
+김영수
+김봉희
+김대식
+김효철
+김영수
+김석철
+김무묵
+김철자
+김영수
+김양기
+김정우
+김영균
+김영수
+김점분
+김순윤
+김용태
+김영수
+김갑난
+김주희
+김병열
+김영수
+김경희
+김인호
+김연정
+김영수
+김두도
+김필태
+김인식
+김영수
+김춘헌
+김준순
+김상기
+김영수
+김성호
+김금조
+김주이
+김영수
+김헌권
+김진노
+김계길
+김영숙
+김상근
+김한목
+김상열
+김영숙
+김정연
+김이서
+김계근
+김영숙
+김권철
+김용덕
+김동만
+김영숙
+김재규
+김말분
+김용준
+김영숙
+김대수
+김민식
+김영선
+김영숙
+김희균
+김종경
+김원모
+김영숙
+김철영
+김지문
+김혜배
+김영숙
+김수인
+김영진
+김중갑
+김영숙
+김갑휘
+김차용
+김기선
+김영숙
+김의경
+김한국
+김정행
+김영숙
+김재재
+김달식
+김금분
+김영숙
+김택택
+김근호
+김치교
+김영순
+김원연
+김원실
+김경수
+김영순
+김계덕
+김상철
+김기기
+김영순
+김월열
+김성환
+김동종
+김영순
+김천성
+김홍구
+김연혜
+김영식
+김상길
+김석연
+김희관
+김영식
+김창애
+김대범
+김승임
+김영식
+김현용
+김전득
+김민화
+김영식
+김용주
+김임암
+김병호
+김영식
+김태식
+김용수
+김정이
+김영식
+김형근
+김상흠
+김중호
+김영식
+김상식
+김구숙
+김풍희
+김영식
+김대한
+김시옥
+김임관
+김영식
+김장숙
+김판현
+김재식
+김영식
+김창웅
+김재훈
+김종순
+김영신
+김태수
+김동섭
+김국갑
+김영옥
+김인현
+김성희
+김재복
+김영옥
+김창한
+김봉려
+김홍욱
+김영옥
+김택득
+김오영
+김기조
+김영옥
+김대환
+김병형
+김영식
+김영완
+김막호
+김영만
+김소화
+김영완
+김상채
+김지일
+김정준
+김영우
+김동운
+김분영
+김희모
+김영월
+김영철
+김태만
+김달호
+김영윤
+김정만
+김기성
+김영기
+김영은
+김상섭
+김태복
+김달문
+김영이
+김상배
+김영연
+김승돌
+김영인
+김영호
+김혜재
+김래도
+김영일
+김태태
+김옥규
+김지화
+김영일
+김병모
+김청식
+김경진
+김영자
+김타원
+김사희
+김병호
+김영자
+김숙진
+김소길
+김태태
+김영자
+김정숙
+김태길
+김삼생
+김영자
+김태고
+김소춘
+김민연
+김영자
+김상찬
+김낙규
+김승열
+김영자
+김우준
+김시술
+김해숙
+김영자
+김강효
+김재웅
+김영현
+김영자
+김호태
+김진용
+김민순
+김영조
+김인복
+김광재
+김차교
+김영조
+김종입
+김경수
+김동영
+김영주
+김대식
+김수조
+김용홍
+김영준
+김원우
+김재용
+김상희
+김영준
+김곤천
+김사완
+김석근
+김영준
+김 길
+김성자
+김석룡
+김영준
+김봉수
+김금수
+김필용
+김영진
+김차팔
+김상구
+김천화
+김영진
+김연선
+김정지
+김말주
+김영진
+김유희
+김장일
+김호근
+김영진
+김종조
+김영한
+김태룡
+김영집
+김근자
+김정권
+김달철
+김영집
+김우현
+김정건
+김동수
+김영철
+김동연
+김한선
+김두태
+김영철
+김상행
+김정계
+김영권
+김영철
+김경학
+김복현
+김상권
+김영춘
+김규훈
+김삼우
+김성환
+김영춘
+김성원
+김영출
+김상권
+김영출
+김성근
+김재동
+김근환
+김영출
+김상택
+김영국
+김재재
+김영출
+김현도
+김윤옥
+김호용
+김영출
+김만화
+김종완
+김우도
+김영칠
+김상순
+김영식
+김윤규
+김영태
+김한록
+김영자
+김병일
+김영태
+김상현
+김외모
+김분대
+김영택
+김영식
+김연옥
+김종찬
+김영택
+김월헌
+김말효
+김청천
+김영택
+김수정
+김규우
+김훈덕
+김영택
+김종태
+김호범
+김복용
+김영학
+김익오
+김상수
+김인규
+김영한
+김원관
+김성형
+김월길
+김영현
+김호기
+김금원
+김태수
+김영호
+김영구
+김재연
+김술원
+김영호
+김영환
+김효권
+김경근
+김영호
+김오규
+김점적
+김차환
+김영호
+김순식
+김소태
+김학술
+김영호
+김소우
+김재영
+김순섭
+김영호
+김현석
+김병술
+김종모
+김영호
+김종대
+김정철
+김현환
+김영호
+김충연
+김병현
+김판종
+김영호
+김성로
+김만철
+김영덕
+김영화
+김종우
+김 경
+김헌준
+김영환
+김갑순
+김재애
+김성만
+김영환
+김영조
+김인환
+김기일
+김영환
+김희영
+김광애
+김창정
+김영환
+김민경
+김봉환
+김장승
+김영환
+김정대
+김현숙
+김상배
+김영희
+김상세
+김정희
+김삼득
+김영희
+김종환
+김상부
+김일순
+김영희
+김 자
+김일석
+김석득
+김영희
+김용상
+김경석
+김소근
+김영희
+김규희
+김영장
+김재수
+김영희
+김진태
+김홍태
+김성두
+김오금
+김경철
+김정헌
+김성이
+김오기
+김득덕
+김재조
+김경석
+김오수
+김만희
+김정복
+김두재
+김오중
+김성종
+김성리
+김윤보
+김오중
+김태중
+김칠란
+김수화
+김오태
+김상길
+김재성
+김규기
+김오현
+김영순
+김지태
+김상환
+김옥남
+김충주
+김기준
+김진길
+김옥분
+김인한
+김기수
+김갑열
+김옥선
+김원향
+김대생
+김태원
+김옥선
+김석임
+김명헌
+김관세
+김옥선
+김봉규
+김영용
+김태우
+김옥수
+김한근
+김춘동
+김병태
+김옥순
+김낙명
+김중순
+김영교
+김옥순
+김태주
+김은석
+김일용
+김옥순
+김대학
+김승선
+김규호
+김옥순
+김태수
+김외이
+김한술
+김옥순
+김상헌
+김만영
+김재기
+김옥술
+김찬찬
+김희환
+김송연
+김옥연
+김선수
+김영호
+김광용
+김옥이
+김용목
+김진수
+김순춘
+김옥이
+김동영
+김규성
+김옥순
+김옥자
+김응희
+김재복
+김봉희
+김옥정
+김성락
+김 영
+김호성
+김옥중
+김헌환
+김석길
+김성준
+김옥천
+김상모
+김헌만
+김태수
+김완석
+김화구
+김학술
+김종자
+김완수
+김행태
+김규목
+김성기
+김완순
+김성대
+김순숙
+김경용
+김왕규
+김말숙
+김월열
+김종식
+김왕순
+김학태
+김봉옥
+김동암
+김외만
+김영진
+김재동
+김영조
+김외만
+김일기
+김병재
+김정빈
+김외분
+김인조
+김영연
+김순효
+김외상
+김덕승
+김은수
+김봉용
+김외생
+김영현
+김창화
+김원운
+김외수
+김금수
+김진석
+김수호
+김외순
+김말호
+김말용
+김진성
+김외순
+김소복
+김정식
+김만이
+김외술
+김용성
+김태식
+김주계
+김용갑
+김병선
+김금갑
+김철일
+김용겸
+김중훈
+김태현
+김영환
+김용구
+김계율
+김영연
+김승배
+김용국
+김종래
+김재기
+김덕성
+김용국
+김덕석
+김영수
+김일헌
+김용규
+김태철
+김종수
+김옥태
+김용규
+김판돌
+김규환
+김갑경
+김용규
+김성선
+김은수
+김정명
+김용균
+김정수
+김수일
+김홍규
+김용근
+김임부
+김석분
+김 호
+김용근
+김재득
+김홍식
+김동흠
+김용근
+김남근
+김용석
+김병하
+김용기
+김소호
+김효오
+김판종
+김용길
+김성황
+김두술
+김정배
+김용길
+김광국
+김태이
+김봉용
+김용남
+김현덕
+김선모
+김정근
+김용대
+김영태
+김준곤
+김순식
+김용대
+김태수
+김철열
+김춘덕
+김용덕
+김장순
+김외태
+김억수
+김용도
+김수석
+김동하
+김병천
+김용돌
+김종상
+김순근
+김임환
+김용동
+김병효
+김상규
+김중기
+김용득
+김기업
+김원현
+김해현
+김용만
+김종문
+김창식
+김금규
+김용만
+김종배
+김부호
+김태표
+김용문
+김병명
+김정원
+김만술
+김용배
+김옥희
+김해용
+김해현
+김용배
+김순덕
+김윤복
+김정연
+김용석
+김종환
+김병수
+김영택
+김용석
+김덕윤
+김기기
+김열용
+김용선
+김태옥
+김수교
+김순삼
+김용수
+김재태
+김영동
+김윤수
+김용수
+김응욱
+김옥순
+김종남
+김용수
+김상수
+김차란
+김석계
+김용수
+김종석
+김종현
+김종례
+김용수
+김삼석
+김종천
+김재우
+김용수
+김춘봉
+김영진
+김기정
+김용수
+김소흠
+김수래
+김창자
+김용수
+김승남
+김두동
+김 환
+김용술
+김경이
+김옥명
+김종탁
+김용술
+김명석
+김영구
+김수현
+김용식
+김연용
+김상환
+김재수
+김용식
+김재조
+김우희
+김병륜
+김용암
+김정호
+김서봉
+김동배
+김용암
+김병란
+김상선
+김병율
+김용운
+김정규
+김귀기
+김충숙
+김용운
+김무수
+김주팔
+김맹현
+김용운
+김정춘
+김성순
+김명환
+김용운
+김정흠
+김영우
+김의덕
+김용윤
+김진조
+김수갑
+김영각
+김용이
+김정식
+김진영
+김학규
+김용익
+김재호
+김동준
+김도용
+김용자
+김학용
+김춘하
+김희완
+김용전
+김성완
+김재원
+김태열
+김용주
+김현근
+김성순
+김선자
+김용주
+김석조
+김해용
+김억석
+김용준
+김윤영
+김성재
+김영지
+김용준
+김달교
+김영수
+김정겸
+김용철
+김재광
+김성훈
+김인환
+김용철
+김수식
+김윤철
+김중목
+김용철
+김차조
+김을섭
+김수수
+김용출
+김영섭
+김병조
+김만호
+김용출
+김창준
+김정윤
+김영덕
+김용택
+김한조
+김용수
+김이술
+김용택
+김형학
+김광식
+김재자
+김용판
+김종원
+김종길
+김동호
+김용학
+김성칙
+김무실
+김영성
+김용해
+김순수
+김명탁
+김상맹
+김용현
+김재향
+김영윤
+김석규
+김용호
+김종만
+김동악
+김철섭
+김용화
+김화수
+김해식
+김복언
+김용화
+김마환
+김용춘
+김병분
+김용화
+김무경
+김경동
+김을균
+김용환
+김재경
+김성선
+김갑호
+김용환
+김수완
+김세안
+김두희
+김용환
+김동우
+김희곤
+김성윤
+김용환
+김인식
+김남애
+김원암
+김용회
+김타근
+김영숙
+김항영
+김우견
+김윤복
+김석성
+김인태
+김우곤
+김명용
+김세진
+김순석
+김우금
+김재도
+김상기
+김형노
+김우기
+김다우
+김병용
+김춘이
+김우석
+김학화
+김명부
+김종덕
+김우수
+김재길
+김옥수
+김갑곤
+김우식
+김홍락
+김경자
+김호래
+김우식
+김정록
+김삼조
+김상수
+김우연
+김삼조
+김달순
+김정동
+김우종
+김재운
+김주호
+김병동
+김우중
+김인규
+김병권
+김무환
+김우찬
+김유열
+김현영
+김승식
+김우철
+김주도
+김봉기
+김재천
+김우한
+김복호
+김종완
+김지모
+김우현
+김병희
+김수국
+김주재
+김우현
+김경상
+김상기
+김재곤
+김우환
+김종묘
+김홍운
+김상태
+김우희
+김종호
+김성평
+김의규
+김욱생
+김도분
+김국봉
+김성식
+김욱창
+김진자
+김중만
+김기호
+김운길
+김채순
+김영만
+김춘윤
+김운남
+김천연
+김해근
+김인순
+김운배
+김기래
+김임수
+김동원
+김운세
+김상달
+김재설
+김옥준
+김운식
+김창근
+김문근
+김운숙
+김운식
+김병녀
+김태훈
+김창기
+김운우
+김희명
+김정원
+김선은
+김운우
+김순열
+김영찬
+김용임
+김운조
+김영신
+김영례
+김균일
+김운태
+김광노
+김성욱
+김도수
+김운호
+김근길
+김강호
+김근규
+김원곤
+김소호
+김현균
+김재순
+김원규
+김오영
+김만희
+김상순
+김원기
+김소칠
+김근수
+김수복
+김원길
+김몽종
+김태구
+김종수
+김원도
+김순숙
+김도우
+김노수
+김원돌
+김광수
+김재용
+김태일
+김원상
+김미자
+김상우
+김철일
+김원석
+김복헌
+김승열
+김삼덕
+김원석
+김우환
+김옥선
+김광호
+김원수
+김현술
+김태선
+김용상
+김원식
+김한현
+김소관
+김특수
+김원식
+김찬곤
+김하학
+김술수
+김원억
+김성갑
+김대일
+김정용
+김원용
+김정익
+김수문
+김임원
+김원출
+김창근
+김례균
+김남식
+김원태
+김종희
+김은중
+김영구
+김원포
+김용용
+김상순
+김규길
+김원호
+김춘출
+김옥조
+김성옥
+김원호
+김춘국
+김성한
+김규휴
+김월생
+김창기
+김정현
+김재원
+김월선
+김효열
+김영환
+김점익
+김월순
+김은갑
+김병리
+김경택
+김월순
+김정호
+김성규
+김주호
+김월악
+김순자
+김제걸
+김상연
+김월조
+김종만
+김만범
+김성수
+김월화
+김대돈
+김소명
+김월구
+김월화
+김영석
+김효갑
+김남도
+김위영
+김의수
+김백야
+김순순
+김유곤
+김우래
+김말조
+김재욱
+김유금
+김남연
+김규복
+김현호
+김유식
+김철재
+김칠남
+김태호
+김유식
+김순호
+김상권
+김재복
+김윤건
+김재철
+김윤호
+김표옥
+김윤건
+김정선
+김귀란
+김정옥
+김윤광
+김홍배
+김병화
+김광순
+김윤기
+김홍태
+김종철
+김 석
+김윤덕
+김성용
+김호호
+김달혁
+김윤돌
+김달식
+김경희
+김철규
+김윤동
+김규례
+김판순
+김보근
+김윤미
+김의수
+김경남
+김상분
+김윤배
+김효성
+김승소
+김정화
+김윤복
+김현영
+김원국
+김재영
+김윤석
+김대철
+김상재
+김용태
+김윤선
+김상연
+김경선
+김광숙
+김윤선
+김용철
+김영자
+김 원
+김윤선
+김노이
+김성곤
+김병기
+김윤섬
+김영숙
+김세담
+김태기
+김윤섭
+김미원
+김순우
+김대숙
+김윤수
+김사범
+김서권
+김태석
+김윤수
+김경용
+김미일
+김교열
+김윤식
+김정순
+김종조
+김상웅
+김윤식
+김갑숙
+김하화
+김세문
+김윤식
+김성열
+김수수
+김재상
+김윤식
+김해훈
+김태연
+김영태
+김윤옥
+김복현
+김병국
+김병식
+김윤원
+김수욱
+김민옥
+김석도
+김윤자
+김병용
+김춘희
+김시호
+김윤자
+김일모
+김영동
+김차회
+김윤자
+김영석
+김성열
+김추이
+김윤자
+김금연
+김태철
+김태늠
+김윤점
+김진원
+김병근
+김향현
+김윤종
+김진철
+김병갑
+김현찬
+김윤천
+김진숙
+김동병
+김택호
+김윤태
+김진웅
+김말수
+김용석
+김윤택
+김재열
+김판교
+김춘춘
+김윤택
+김수권
+김찬술
+김영환
+김윤하
+김점윤
+김운섭
+김재수
+김윤하
+김선재
+김헌호
+김일수
+김윤하
+김칠남
+김영문
+김일점
+김윤하
+김대웅
+김욱웅
+김종선
+김윤호
+김경주
+김광택
+김성영
+김윤호
+김미탁
+김미현
+김복동
+김은기
+김봉현
+김홍수
+김해열
+김은동
+김우기
+김삼희
+김훈도
+김은례
+김성재
+김 영
+김석균
+김은수
+김정식
+김갑수
+김상학
+김은숙
+김주수
+김쌍봉
+김기봉
+김은숙
+김영학
+김팽현
+김순애
+김은식
+김재봉
+김강기
+김경만
+김은아
+김복익
+김숙순
+김순정
+김은옥
+김점의
+김상열
+김성근
+김은이
+김상주
+김병희
+김병모
+김은재
+김태현
+김병열
+김진식
+김은정
+김화식
+김영훈
+김정자
+김은주
+김영희
+김동기
+김태숙
+김은진
+김윤용
+김숙식
+김천순
+김은희
+김태연
+김용이
+김금상
+김은희
+김정수
+김종교
+김성선
+김을규
+김재빈
+김교학
+김영채
+김을성
+김영수
+김준호
+김순후
+김을수
+김준연
+김용차
+김부숙
+김을수
+김호우
+김기순
+김삼만
+김을임
+김원석
+김원순
+김옥조
+김을준
+김고만
+김달동
+김동옥
+김응권
+김규열
+김호덕
+김동민
+김응권
+김원임
+김영용
+김종대
+김응도
+김광노
+김명호
+김인도
+김응돌
+김준환
+김운재
+김상기
+김응렬
+김재완
+김진이
+김병원
+김응무
+김영숙
+김병영
+김정희
+김의건
+김병달
+김윤순
+김현헌
+김의근
+김재훈
+김강석
+김필한
+김의근
+김상호
+김치출
+김진우
+김의수
+김재조
+김동환
+김청조
+김의수
+김종호
+김경성
+김춘이
+김의일
+김재숙
+김은복
+김성희
+김의정
+김춘영
+김상상
+김우길
+김의현
+김정생
+김중열
+김영석
+김이근
+김장주
+김환목
+김복이
+김이동
+김기득
+김창규
+김정극
+김이수
+김정관
+김재수
+김일연
+김인국
+김금만
+김문자
+김재흥
+김인규
+김승석
+김순호
+김상정
+김인규
+김덕달
+김차일
+김경우
+김인덕
+김병정
+김준두
+김석호
+김인배
+김기도
+김태용
+김두영
+김인섭
+김채문
+김국기
+김현석
+김인수
+김은자
+김준수
+김태준
+김인수
+김곤보
+김의경
+김춘웅
+김인수
+김정희
+김점주
+김영열
+김인수
+김명칠
+김종용
+김재우
+김인숙
+김철은
+김영선
+김명선
+김인식
+김길교
+김상철
+김순례
+김인재
+김장상
+김상옥
+김상순
+김인주
+김완일
+김선상
+김순호
+김인탁
+김대추
+김상삼
+김헌술
+김인태
+김영식
+김동택
+김 원
+김인태
+김필석
+김광교
+김재암
+김인택
+김동정
+김일택
+김정술
+김인혁
+김이갑
+김찬태
+김혜준
+김인현
+김용윤
+김수수
+김병선
+김인호
+김주웅
+김광헌
+김영열
+김인환
+김만철
+김순호
+김재원
+김인회
+김수암
+김홍호
+김효철
+김일곤
+김정주
+김장식
+김주현
+김일곤
+김갑구
+김해영
+김학열
+김일규
+김소우
+김상규
+김영분
+김일년
+김수귀
+김정분
+김재순
+김일두
+김 칠
+김태영
+김상일
+김일만
+김영기
+김재수
+김근노
+김일봉
+김병복
+김유순
+김곡리
+김일봉
+김귀이
+김상우
+김기근
+김일석
+김영조
+김정수
+김도식
+김일수
+김태화
+김성조
+김삼호
+김일수
+김웅식
+김성웅
+김부한
+김일순
+김천탁
+김명인
+김재성
+김일술
+김득성
+김현주
+김수식
+김일용
+김태철
+김희연
+김현순
+김일용
+김왕호
+김운태
+김우남
+김일웅
+김근길
+김달술
+김귀근
+김일태
+김재길
+김용경
+김준열
+김일태
+김수순
+김홍호
+김정선
+김일해
+김영철
+김영목
+김대노
+김일호
+김영수
+김쌍호
+김낙용
+김일호
+김승남
+김재순
+김경경
+김일홍
+김성숙
+김선철
+김영대
+김일화
+김고균
+김판훈
+김근금
+김일환
+김정열
+김화수
+김준수
+김일환
+김병흔
+김기이
+김종남
+김일희
+김현호
+김지률
+김강기
+김일희
+김태천
+김만영
+김문희
+김임곤
+김상희
+김외식
+김칠용
+김임순
+김 선
+김조현
+김미호
+김임주
+김복성
+김성수
+김경관
+김자근검
+김부진기
+김매유규
+김정수오
+김자희
+김성열
+김경남
+김금호
+김장배
+김세희
+김영호
+김인근
+김장보
+김유재
+김옥도
+김현관
+김장옥
+김경식
+김인년
+김은섭
+김장원
+김철완
+김학식
+김제귀
+김장원
+김복호
+김영열
+김기석
+김장환
+김재향
+김순수
+김유섭
+김장희
+김운범
+김영조
+김지하
+김재곤
+김춘조
+김우환
+김재복
+김재광
+김태열
+김강기
+김영호
+김재구
+김상섭
+김광건
+김상돈
+김재규
+김순태
+김완남
+김해홍
+김재규
+김근덕
+김병희
+김성기
+김재규
+김강주
+김정도
+김현연
+김재규
+김기용
+김춘자
+김석자
+김재균
+김삼구
+김민열
+김병술
+김재근
+김신진
+김재원
+김용길
+김재남
+김수애
+김건덕
+김상남
+김재남
+김두규
+김건화
+김판자
+김재대
+김천원
+김성규
+김태환
+김재덕
+김재우
+김성주
+김도용
+김재덕
+김중규
+김덕달
+김무주
+김재덕
+김인달
+김영호
+김의조
+김재덕
+김순근
+김재흠
+김영순
+김재도
+김원수
+김성원
+김태균
+김재도
+김성규
+김영원
+김창현
+김재동
+김창세
+김필상
+김영영
+김재득
+김우순
+김을균
+김임만
+김재만
+김용학
+김금식
+김한환
+김재만
+김상호
+김상수
+김상환
+김재만
+김선웅
+김영회
+김이조
+김재문
+김병승
+김창열
+김성웅
+김재복
+김희호
+김호철
+김규정
+김재봉
+김동수
+김태태
+김재식
+김재생
+김명근
+김정권
+김규용
+김재석
+김진호
+김병용
+김대성
+김재선
+김석호
+김해조
+김재진
+김재섭
+김명묵
+김문성
+김판진
+김재수
+김영도
+김용곤
+김주조
+김재수
+김재옥
+김상민
+김윤호
+김재수
+김태한
+김문진
+김학권
+김재수
+김호흠
+김병봉
+김대섭
+김재수
+김무규
+김위철
+김해암
+김재순
+김은숙
+김춘이
+김남설
+김재식
+김동수
+김금원
+김영근
+김재양
+김은증
+김소열
+김재수
+김재연
+김정기
+김태용
+김정현
+김재연
+김수석
+김영석
+김영삼
+김재열
+김지석
+김진숙
+김용용
+김재열
+김도범
+김재수
+김 이
+김재열
+김외훈
+김금범
+김경석
+김재영
+김병화
+김홍완
+김충상
+김재영
+김영규
+김무대
+김옥길
+김재영
+김채녀
+김태형
+김수곤
+김재옥
+김윤원
+김성숙
+김경석
+김재옥
+김성철
+김광숙
+김영선
+김재용
+김윤선
+김대근
+김효현
+김재용
+김완열
+김순록
+김용호
+김재용
+김복열
+김기권
+김상섭
+김재용
+김성범
+김이량
+김옥정
+김재우
+김경완
+김호교
+김상열
+김재원
+김영회
+김성조
+김경태
+김재원
+김복정
+김상남
+김순환
+김재일
+김상웅
+김치호
+김재희
+김재임
+김종호
+김돈기
+김병주
+김재전
+김재식
+김용옥
+김삼교
+김재철
+김애출
+김희홍
+김상석
+김재철
+김수태
+김원구
+김헌권
+김재청
+김종하
+김근운
+김명식
+김재학
+김용순
+김점교
+김홍용
+김재한
+김한기
+김동수
+김학도
+김재현
+김민용
+김종진
+김동진
+김재현
+김장길
+김달근
+김임완
+김재현
+김영선
+김경수
+김동득
+김재현
+김형수
+김범준
+김시태
+김재호
+김금관
+김봉환
+김성숙
+김재호
+김실재
+김동선
+김춘열
+김재호
+김일순
+김승현
+김남연
+김재홍
+김효옥
+김봉곤
+김강수
+김재홍
+김태영
+김미호
+김재진
+김재화
+김정우
+김윤두
+김기우
+김재화
+김충연
+김성섭
+김영윤
+김재화
+김종규
+김옥정
+김원선
+김재환
+김종태
+김종호
+김진종
+김재환
+김천호
+김 덕
+김정길
+김재환
+김진년
+김점순
+김일용
+김재환
+김원영
+김경규
+김경출
+김재환
+김재선
+김희우
+김종갑
+김재후
+김서이
+김이이
+김지균
+김재후
+김혜홍
+김 환
+김선완
+김재훅
+김회용
+김수주
+김수호
+김재훈
+김정보
+김경수
+김재숙
+김재훈
+김광도
+김정경
+김종경
+김재희
+김정현
+김국현
+김범희
+김적환
+김병언
+김병술
+김재원
+김전균
+김경선
+김선실
+김병인
+김전기
+김재근
+김영진
+김병이
+김점근
+김영섭
+김분채
+김경석
+김점남
+김기선
+김운철
+김만용
+김점돌
+김명우
+김천환
+김용희
+김점례
+김대재
+김덕분
+김만순
+김점만
+김복태
+김용남
+김외구
+김점봉
+김윤순
+김응환
+김원영
+김점생
+김 표
+김남용
+김삼곤
+김점수
+김 이
+김무익
+김광기
+김점수
+김인식
+김주진
+김업련
+김점숙
+김영현
+김태옥
+김덕수
+김점순
+김차욱
+김승학
+김상섭
+김점순
+김인만
+김만수
+김윤영
+김점술
+김일자
+김금원
+김운주
+김점술
+김점술
+김남만
+김성준
+김점옥
+김동연
+김수환
+김태선
+김점자
+김상환
+김만태
+김동숙
+김점철
+김성조
+김명남
+김경례
+김점출
+김창순
+김만용
+김성택
+김점팔
+김춘록
+김동교
+김용화
+김점호
+김만달
+김홍식
+김영현
+김점환
+김병율
+김인선
+김주보
+김정강
+김희룡
+김용재
+김병민
+김정강
+김채열
+김건기
+김종동
+김정건
+김남배
+김원진
+김태기
+김정건
+김정란
+김인자
+김태환
+김정고
+김중석
+김간규
+김성수
+김정권
+김정곤
+김을남
+김준웅
+김정권
+김석웅
+김기우
+김효황
+김정규
+김교한
+김성석
+김홍영
+김정규
+김술숙
+김근수
+김세우
+김정근
+김봉식
+김종연
+김정휴
+김정근
+김수택
+김정기
+김용윤
+김정근
+김진용
+김영근
+김태출
+김정기
+김병희
+김동도
+김숙주
+김정길
+김우름
+김원훈
+김재도
+김정길
+김용철
+김홍수
+김용호
+김정남
+김해섭
+김응기
+김욱주
+김정대
+김연채
+김인철
+김미택
+김정대
+김종훈
+김상동
+김원순
+김정덕
+김의조
+김순곤
+김준제
+김정도
+김오규
+김정준
+김선철
+김정동
+김성준
+김삼수
+김천환
+김정득
+김한양
+김성곤
+김영생
+김정득
+김윤곤
+김동순
+김창수
+김정득
+김성석
+김병호
+김수훈
+김정락
+김연쇄
+김승영
+김형대
+김정록
+김영숙
+김종상
+김병태
+김정묵
+김은인
+김영고
+김재학
+김정문
+김규현
+김인수
+김권지
+김정미
+김달상
+김재양
+김명수
+김정민
+김기랑
+김정식
+김선근
+김정배
+김중석
+김종수
+김성규
+김정범
+김성조
+김영창
+김희구
+김정범
+김영원
+김사근
+김태국
+김정복
+김종우
+김성길
+김인기
+김정봉
+김재규
+김정순
+김일택
+김정봉
+김웅식
+김재윤
+김성식
+김정부
+김옥수
+김점남
+김정구
+김정부
+김무자
+김영호
+김갑국
+김정부
+김경권
+김명수
+김규우
+김정빈
+김만규
+김상정
+김경순
+김정상
+김재균
+김병열
+김순택
+김정생
+김이환
+김종구
+김기현
+김정석
+김태수
+김원식
+김원봉
+김정선
+김재정
+김인갑
+김진흠
+김정선
+김달선
+김봉엽
+김수섭
+김정선
+김태순
+김황현
+김영주
+김정수
+김범래
+김 이
+김지숙
+김정수
+김삼자
+김중석
+김사수
+김정수
+김석권
+김옥연
+김인숙
+김정수
+김한일
+김정혜
+김영천
+김정수
+김규연
+김정명
+김종암
+김정수
+김병호
+김소남
+김종삼
+김정수
+김탁진
+김경원
+김광욱
+김정숙
+김철희
+김영호
+김석권
+김정숙
+김봉상
+김충보
+김정철
+김정숙
+김종철
+김채재
+김준석
+김정순
+김용모
+김정택
+김운도
+김정순
+김병이
+김운준
+김중호
+김정순
+김성운
+김출수
+김상년
+김정순
+김대철
+김 목
+김용운
+김정순
+김월순
+김영순
+김장민
+김정순
+김종애
+김우출
+김을학
+김정술
+김태향
+김광수
+김윤주
+김정식
+김옥열
+김재기
+김인옥
+김정애
+김연영
+김은일
+김병한
+김정애
+김노진
+김재구
+김태열
+김정양
+김용성
+김숙귀
+김한식
+김정연
+김향엽
+김헌호
+김필구
+김정열
+김종열
+김수연
+김옥선
+김정열
+김성희
+김종태
+김상순
+김정열
+김남식
+김위훈
+김하춘
+김정오
+김상현
+김상순
+김진홍
+김정옥
+김도희
+김만헌
+김금만
+김정옥
+김부기
+김봉균
+김성효
+김정용
+김정열
+김상규
+김양악
+김정우
+김태수
+김태목
+김석수
+김정웅
+김용용
+김기원
+김타호
+김정윤
+김봉술
+김차구
+김창운
+김정은
+김명근
+김경식
+김재리
+김정이
+김대순
+김경연
+김영수
+김정이
+김판근
+김종석
+김경기
+김정일
+김달만
+김용수
+김수호
+김정자
+김인우
+김승도
+김순영
+김정재
+김경원
+김경미
+김우운
+김정차
+김성경
+김혁호
+김 유
+김정차
+김금석
+김재흥
+김판권
+김정출
+김성성
+김풍병
+김순용
+김정치
+김동진
+김재연
+김수현
+김정태
+김삼재
+김봉준
+김석희
+김정태
+김상수
+김동열
+김삼화
+김정태
+김양갑
+김화미
+김진호
+김정학
+김옥암
+김덕덕
+김대익
+김정학
+김정현
+김대환
+김병복
+김정헌
+김정창
+김병돌
+김관화
+김정호
+김운현
+김점덕
+김심연
+김정호
+김영복
+김현목
+김정홍
+김정호
+김정련
+김재태
+김수임
+김정호
+김상태
+김재기
+김상영
+김정호
+김병준
+김정용
+김종일
+김정호
+김중덕
+김호웅
+김현탁
+김정호
+김종배
+김광명
+김관윤
+김정호
+김주호
+김대용
+김영환
+김정호
+김경영
+김석석
+김만원
+김정호
+김태환
+김인돈
+김갑섭
+김정홍
+김만식
+김상정
+김원영
+김정화
+김재웅
+김창선
+김석철
+김정화
+김종준
+김재한
+김점현
+김정환
+김인식
+김영현
+김순국
+김정환
+김홍봉
+김중열
+김정한
+김정환
+김덕호
+김병교
+김진수
+김정환
+김평병
+김말성
+김황호
+김정환
+김석생
+김종수
+김신철
+김정환
+김춘숙
+김길석
+김재기
+김정환
+김명돌
+김희규
+김일숙
+김정환
+김남헌
+김경훈
+김정성
+김정훈
+김은언
+김승승
+김정오
+김정흠
+김원환
+김윤덕
+김일술
+김정희
+김영덕
+김봉이
+김경식
+김정희
+김준용
+김경주
+김남갑
+김정희
+김이호
+김동현
+김도곤
+김정희
+김종원
+김혜국
+김일호
+김정희
+김재용
+김윤수
+김외팔
+김정희
+김순숙
+김태동
+김점석
+김제기
+김경옥
+김승훈
+김말희
+김제원
+김외춘
+김성철
+김재수
+김제천
+김수덕
+김복화
+김춘현
+김제현
+김점식
+김태조
+김화호
+김제흠
+김대준
+김기석
+김희길
+김제흠
+김세출
+김용돌
+김세호
+김조웅
+김형일
+김귀태
+김무경
+김종갑
+김종섭
+김상구
+김명희
+김종결
+김영경
+김기수
+김충목
+김종경
+김상대
+김태석
+김음려
+김종광
+김병용
+김정운
+김쾌봉
+김종구
+김옥일
+김진우
+김대채
+김종구
+김재식
+김순대
+김석이
+김종구
+김계학
+김순권
+김상숙
+김종구
+김종록
+김두조
+김경규
+김종구
+김구식
+김영현
+김묘재
+김종구
+김월조
+김소팔
+김영환
+김종구
+김위덕
+김춘자
+김옥규
+김종규
+김석웅
+김원향
+김영만
+김종규
+김진원
+김점근
+김유수
+김종규
+김원윤
+김점길
+김정원
+김종규
+김태출
+김수환
+김경호
+김종균
+김태재
+김환선
+김정호
+김종근
+김기우
+김을천
+김재열
+김종기
+김영복
+김득수
+김대덕
+김종길
+김종근
+김현상
+김현현
+김종길
+김해열
+김동대
+김석구
+김종길
+김낙성
+김금권
+김갑인
+김종길
+김사식
+김중화
+김명식
+김종달
+김재표
+김오립
+김차식
+김종달
+김진훈
+김강치
+김덕현
+김종대
+김한식
+김인호
+김병훈
+김종대
+김연대
+김상돌
+김경선
+김종덕
+김판호
+김세우
+김용석
+김종래
+김석동
+김상금
+김차현
+김종립
+김재상
+김종화
+김만임
+김종만
+김일기
+김강홍
+김경진
+김종만
+김현태
+김복식
+김정도
+김종만
+김장남
+김종이
+김우홍
+김종배
+김소근
+김의용
+김기수
+김종배
+김상정
+김칠식
+김용숙
+김종백
+김호수
+김재호
+김을계
+김종범
+김부용
+김복락
+김기수
+김종범
+김형주
+김윤이
+김규철
+김종복
+김진숙
+김종우
+김천말
+김종복
+김영석
+김상우
+김월구
+김종복
+김종흠
+김경주
+김인호
+김종복
+김성휴
+김상한
+김희연
+김종복
+김종경
+김두기
+김종혁
+김종봉
+김준주
+김기권
+김상영
+김종석
+김태세
+김정숙
+김도호
+김종석
+김만희
+김연권
+김희태
+김종석
+김재덕
+김봉분
+김문선
+김종선
+김병석
+김기구
+김헌섭
+김종선
+김덕근
+김태대
+김미일
+김종성
+김희원
+김태숙
+김인석
+김종성
+김무재
+김상강
+김원옥
+김종수
+김희진
+김득수
+김명균
+김종수
+김금봉
+김무순
+김병만
+김종수
+김철홍
+김옥진
+김명태
+김종수
+김한규
+김진규
+김차채
+김종순
+김수십
+김재희
+김윤천
+김종식
+김면덕
+김현소
+김환수
+김종식
+김영웅
+김춘임
+김성환
+김종십
+김상철
+김봉복
+김재이
+김종억
+김문운
+김만현
+김차호
+김종연
+김성태
+김희덕
+김영원
+김종연
+김칠식
+김학은
+김덕찬
+김종열
+김홍대
+김문광
+김도천
+김종엽
+김인남
+김필영
+김소조
+김종영
+김문식
+김말수
+김무근
+김종오
+김민근
+김윤판
+김영준
+김종욱
+김화일
+김재선
+김오영
+김종운
+김순표
+김건권
+김종춘
+김종원
+김규순
+김중욱
+김상영
+김종원
+김홍암
+김우길
+김근만
+김종원
+김화생
+김세탁
+김필규
+김종윤
+김대병
+김철정
+김기용
+김종율
+김광영
+김상대
+김갑구
+김종이
+김성기
+김숙순
+김상이
+김종이
+김상효
+김본길
+김현권
+김종일
+김태석
+김득효
+김득희
+김종조
+김호입
+김현덕
+김치만
+김종진
+김순주
+김태정
+김필호
+김종진
+김범문
+김병원
+김용호
+김종철
+김정화
+김정호
+김종철
+김종철
+김덕화
+김순인
+김창덕
+김종철
+김준숙
+김대득
+김점조
+김종태
+김영순
+김종조
+김만석
+김종태
+김순진
+김기갑
+김일순
+김종태
+김영우
+김호경
+김의옥
+김종태
+김주구
+김승식
+김칠근
+김종태
+김채천
+김수수
+김상제
+김종태
+김치남
+김동구
+김동용
+김종태
+김태봉
+김천상
+김송경
+김종하
+김영분
+김규악
+김삼현
+김종학
+김병영
+김용원
+김정영
+김종학
+김유이
+김식태
+김정연
+김종한
+김용자
+김진임
+김환영
+김종해
+김현찬
+김규식
+김영양
+김종현
+김휘완
+김인정
+김길남
+김종현
+김봉훈
+김헌기
+김갑령
+김종호
+김재식
+김재경
+김홍환
+김종호
+김상석
+김도규
+김원결
+김종호
+김의원
+김차수
+김구호
+김종화
+김현중
+김기립
+김일삼
+김종화
+김봉중
+김만웅
+김수학
+김종환
+김세엽
+김재덕
+김해조
+김종환
+김말필
+김동섭
+김용성
+김종훈
+김이영
+김일순
+김상수
+김종흠
+김용근
+김월식
+김창길
+김종희
+김우출
+김모숙
+김용선
+김주갑
+김중용
+김현홍
+김태겸
+김주덕
+김재범
+김진덕
+김의노
+김주복
+김대자
+김종란
+김봉희
+김주봉
+김승환
+김익수
+김수진
+김주상
+김귀철
+김원양
+김계이
+김주상
+김진현
+김삼수
+김영경
+김주석
+김동우
+김종선
+김월선
+김주석
+김석근
+김일환
+김미자
+김주성
+김선용
+김근연
+김구용
+김주순
+김동태
+김재권
+김월규
+김주인
+김시봉
+김호표
+김중재
+김주일
+김종연
+김용수
+김창석
+김주태
+김운희
+김종태
+김일철
+김주택
+김석분
+김인조
+김원진
+김주하
+김석영
+김태식
+김 우
+김주학
+김상호
+김영훈
+김인목
+김주현
+김호희
+김병호
+김삼래
+김주호
+김덕조
+김용수
+김하찬
+김주환
+김정도
+김주생
+김숙수
+김주흠
+김질이
+김명휘
+김일대
+김죽선
+김유일
+김말학
+김학구
+김준곤
+김휘상
+김 덕
+김용동
+김준규
+김창이
+김영로
+김지립
+김준기
+김삼련
+김시식
+김원원
+김준보
+김청현
+김용율
+김남수
+김준식
+김판석
+김재아
+김정일
+김준식
+김훈준
+김상진
+김종정
+김준연
+김순석
+김정정
+김호건
+김준영
+김판호
+김해호
+김경철
+김준우
+김상식
+김윤열
+김해태
+김준웅
+김석규
+김갑덕
+김종영
+김준자
+김종수
+김상도
+김명곤
+김준철
+김현순
+김휘가
+김윤웅
+김준택
+김무호
+김학호
+김태자
+김준택
+김한홍
+김은권
+김상철
+김준호
+김영일
+김중등
+김현선
+김준호
+김용남
+김종순
+김용이
+김준호
+김윤연
+김상만
+김하상
+김준환
+김성원
+김한현
+김병경
+김중건
+김점기
+김성환
+김주희
+김중건
+김경섭
+김재수
+김동조
+김중광
+김금휴
+김성현
+김연득
+김중근
+김동열
+김원수
+김광현
+김중기
+김한화
+김순수
+김상혁
+김중련
+김영순
+김외호
+김유상
+김중련
+김응순
+김준화
+김상식
+김중석
+김동운
+김상윤
+김국환
+김중수
+김상득
+김운억
+김수광
+김중수
+김규실
+김금덕
+김홍성
+김중원
+김상호
+김성우
+김철호
+김중일
+김효배
+김외렬
+김숙태
+김중자
+김동호
+김대호
+김인택
+김중현
+김영기
+김계호
+김경수
+김중혜
+김우열
+김명호
+김기곤
+김중희
+김점석
+김희용
+김분창
+김증숙
+김차득
+김을현
+김갑애
+김증순
+김수채
+김병노
+김도태
+김증준
+김원수
+김영환
+김애제
+김지근
+김용오
+김천석
+김한종
+김지봉
+김순원
+김상호
+김효근
+김지봉
+김선자
+김태호
+김영일
+김지승
+김승식
+김승용
+김현묵
+김지애
+김귀용
+김한영
+김학원
+김지연
+김성희
+김종갑
+김성국
+김지현
+김재수
+김종표
+김병술
+김지혜
+김인동
+김춘암
+김홍현
+김지희
+김태원
+김삼화
+김명희
+김진경
+김동조
+김복심
+김용홍
+김진곤
+김연현
+김용수
+김용권
+김진곤
+김 옥
+김순식
+김기수
+김진곤
+김선자
+김선호
+김만순
+김진구
+김태일
+김철원
+김정일
+김진권
+김문재
+김은근
+김연형
+김진권
+김규권
+김재화
+김정호
+김진규
+김춘식
+김영순
+김혜관
+김진규
+김재장
+김형현
+김병호
+김진규
+김상조
+김진숙
+김미현
+김진기
+김점자
+김남이
+김등출
+김진대
+김두생
+김풍야
+김병점
+김진대
+김홍욱
+김근철
+김두순
+김진동
+김경숙
+김원진
+김동호
+김진동
+김병수
+김은조
+김환태
+김진동
+김우득
+김상순
+김태동
+김진록
+김철림
+김성준
+김천갑
+김진배
+김순목
+김태철
+김성웅
+김진석
+김기헌
+김정태
+김재돌
+김진석
+김택향
+김종일
+김대일
+김진섭
+김쾌일
+김재도
+김정관
+김진섭
+김후환
+김의하
+김상자
+김진수
+김영만
+김상선
+김원차
+김진수
+김용경
+김영제
+김일구
+김진숙
+김영현
+김종호
+김연주
+김진숙
+김말환
+김동춘
+김궁한
+김진술
+김태태
+김원상
+김경배
+김진식
+김우헌
+김성석
+김기우
+김진식
+김재열
+김재수
+김세종
+김진열
+김상식
+김기득
+김일동
+김진영
+김규수
+김정규
+김영암
+김진영
+김이동
+김태식
+김기향
+김진오
+김성식
+김전기
+김원남
+김진용
+김미근
+김윤웅
+김승철
+김진우
+김영종
+김칠현
+김영수
+김진웅
+김태정
+김형복
+김병도
+김진일
+김정춘
+김인훈
+김채건
+김진종
+김인만
+김종수
+김연천
+김진주
+김진희
+김대이
+김창칠
+김진천
+김용희
+김찬웅
+김수주
+김진태
+김대훈
+김정수
+김점열
+김진태
+김병원
+김정순
+김영춘
+김진태
+김근열
+김재선
+김기강
+김진태
+김일견
+김일길
+김정영
+김진택
+김기탁
+김태순
+김원진
+김진학
+김주자
+김인태
+김재륜
+김진학
+김만정
+김해형
+김병무
+김진형
+김언진
+김수원
+김재일
+김진호
+김재돈
+김정호
+김종기
+김진호
+김홍철
+김재식
+김순남
+김진호
+김재환
+김익기
+김정호
+김진호
+김용용
+김구준
+김일규
+김진홍
+김정찬
+김사석
+김성태
+김진환
+김영오
+김수숙
+김태석
+김진효
+김 권
+김일환
+김성길
+김진희
+김소순
+김덕자
+김원선
+김진희
+김기학
+김재일
+김종구
+김진희
+김대운
+김태권
+김봉환
+김진희
+김수원
+김순봉
+김연술
+김질판
+김수돌
+김종권
+김광수
+김차노
+김석임
+김병용
+김종남
+김차봉
+김재건
+김갑연
+김재진
+김차석
+김영훈
+김순식
+김정두
+김차석
+김병호
+김시식
+김기심
+김차암
+김윤술
+김오제
+김청락
+김차암
+김일한
+김상환
+김은훈
+김차연
+김용수
+김상경
+김상율
+김차영
+김도해
+김규수
+김판희
+김차천
+김국조
+김숙규
+김삼관
+김차출
+김정돌
+김재동
+김한숙
+김차홍
+김완정
+김귀문
+김헌순
+김차희
+김춘호
+김낙철
+김수언
+김찬경
+김노섭
+김연기
+김태준
+김찬수
+김장욱
+김기재
+김묘환
+김창구
+김명호
+김정이
+김근태
+김창근
+김분석
+김춘숙
+김정철
+김창근
+김성수
+김경태
+김기극
+김창기
+김타식
+김봉녕
+김민삼
+김창기
+김수석
+김장득
+김윤규
+김창문
+김상배
+김선수
+김병희
+김창배
+김정식
+김창수
+김동순
+김창선
+김숙현
+김경철
+김영오
+김창성
+김상태
+김억기
+김기휴
+김창수
+김수환
+김병남
+김수철
+김창수
+김용호
+김태희
+김규효
+김창수
+김상준
+김승연
+김호암
+김창숙
+김병숙
+김상순
+김신근
+김창식
+김경식
+김건만
+김재수
+김창식
+김성준
+김장자
+김천연
+김창식
+김외아
+김석조
+김석수
+김창애
+김종동
+김남궁
+김원두
+김창억
+김용순
+김승배
+김정계
+김창억
+김병봉
+김우희
+김동현
+김창열
+김정호
+김재근
+김상환
+김창열
+김영욱
+김태만
+김정선
+김창열
+김명덕
+김기출
+김정한
+김창완
+김재재
+김을수
+김상분
+김창운
+김종을
+김영규
+김규호
+김창일
+김부순
+김상화
+김태춘
+김창진
+김백현
+김천규
+김영배
+김창태
+김정숙
+김준희
+김산규
+김창학
+김문문
+김판득
+김태철
+김창해
+김효호
+김휘호
+김옥규
+김창현
+김희택
+김정용
+김해교
+김창현
+김임옥
+김명호
+김철윤
+김창호
+김경준
+김성철
+김현수
+김창호
+김환수
+김병석
+김기규
+김창호
+김택진
+김정근
+김정수
+김창호
+김정학
+김형혁
+김중춘
+김창호
+김태현
+김금순
+김봉순
+김창호
+김상철
+김성덕
+김기인
+김창환
+김창길
+김남기
+김재태
+김채수
+김덕문
+김한복
+김실휴
+김채식
+김원기
+김상태
+김석환
+김천득
+김준숙
+김재연
+김원희
+김천석
+김영언
+김재수
+김행구
+김천수
+김봉희
+김두이
+김영분
+김천학
+김해균
+김영호
+김삼봉
+김천호
+김귀필
+김금복
+김정일
+김철기
+김순해
+김동란
+김종훈
+김철두
+김동수
+김상한
+김영득
+김철랑
+김춘완
+김선덕
+김인복
+김철수
+김인동
+김성빈
+김재교
+김철수
+김판현
+김권수
+김영정
+김철수
+김정중
+김수규
+김정열
+김철수
+김휘현
+김성석
+김경조
+김철수
+김상철
+김경숙
+김해춘
+김철수
+김장금
+김영동
+김태일
+김철정
+김사태
+김정준
+김지훈
+김청석
+김월희
+김상수
+김병길
+김추량
+김기목
+김재용
+김창형
+김추자
+김종록
+김희문
+김진식
+김추환
+김상현
+김기웅
+김경행
+김춘균
+김기연
+김사룡
+김주분
+김춘길
+김분옥
+김태순
+김병수
+김춘녀
+김재막
+김판섭
+김점영
+김춘배
+김판근
+김익석
+김세수
+김춘복
+김정오
+김순현
+김태식
+김춘생
+김중호
+김경철
+김재진
+김춘수
+김일률
+김남철
+김해순
+김춘식
+김숙호
+김혜출
+김영석
+김춘식
+김순섭
+김성득
+김인택
+김춘실
+김호호
+김재우
+김주옥
+김춘자
+김동한
+김봉조
+김상인
+김춘자
+김영동
+김규오
+김곡환
+김춘자
+김규명
+김홍갑
+김상양
+김춘하
+김경교
+김장준
+김봉준
+김춘하
+김동식
+김태선
+김순순
+김춘희
+김종철
+김용연
+김금훈
+김충권
+김치건
+김영자
+김양기
+김충남
+김영일
+김수미
+김주권
+김충부
+김재호
+김용수
+김광권
+김충원
+김승순
+김오상
+김석수
+김충원
+김상교
+김두업
+김윤봉
+김충헌
+김홍옥
+김호식
+김진태
+김충환
+김영길
+김칠수
+김판용
+김충훈
+김충철
+김선학
+김영근
+김충희
+김덕택
+김장기
+김동갑
+김치권
+김윤영
+김 태
+김중출
+김치권
+김다용
+김명일
+김경윤
+김치권
+김종기
+김영순
+김을영
+김치선
+김점연
+김장상
+김옥권
+김치일
+김상하
+김영근
+김동모
+김치훈
+김금배
+김차태
+김사숙
+김치휘
+김주자
+김창식
+김종균
+김칠동
+김지만
+김만석
+김정권
+김칠동
+김정기
+김동황
+김도휴
+김칠선
+김창수
+김명환
+김을춘
+김칠용
+김용수
+김진동
+김주열
+김칠용
+김광우
+김주출
+김석왕
+김칠홍
+김금희
+김석용
+김현영
+김칠희
+김구우
+김음동
+김옥상
+김쾌석
+김인식
+김평조
+김명섭
+김타원
+김일하
+김석호
+김영기
+김태곤
+김노태
+김점순
+김경환
+김태교
+김윤배
+김세덕
+김석현
+김태구
+김상창
+김용숙
+김정현
+김태구
+김윤덕
+김난원
+김희출
+김태권
+김경수
+김홍래
+김태경
+김태규
+김수동
+김상현
+김봉식
+김태근
+김영훈
+김덕걸
+김경상
+김태근
+김판조
+김석현
+김성구
+김태길
+김규철
+김언희
+김귄경
+김태길
+김창현
+김재기
+김진기
+김태도
+김영수
+김호석
+김신자
+김태돌
+김근성
+김용달
+김영준
+김태동
+김한분
+김성구
+김세수
+김태동
+김남기
+김성도
+김영선
+김태만
+김분구
+김영학
+김명상
+김태명
+김진로
+김봉순
+김종동
+김태문
+김재성
+김태철
+김천수
+김태복
+김광욱
+김재표
+김석선
+김태봉
+김동근
+김명진
+김경학
+김태석
+김헌운
+김순범
+김경태
+김태선
+김성남
+김인복
+김수구
+김태섭
+김만호
+김필호
+김학해
+김태섭
+김을명
+김우현
+김용재
+김태성
+김병근
+김성영
+김규열
+김태수
+김진준
+김점훈
+김정하
+김태수
+김수원
+김을수
+김열석
+김태수
+김원식
+김봉출
+김선식
+김태수
+김영수
+김운암
+김화배
+김태수
+김학호
+김재화
+김외혜
+김태수
+김진근
+김은수
+김국개
+김태숙
+김신정
+김영우
+김종구
+김태숙
+김을택
+김준희
+김진연
+김태순
+김병연
+김완선
+김외우
+김태순
+김기환
+김판완
+김영곤
+김태술
+김태선
+김성수
+김노용
+김태식
+김석석
+김복수
+김광호
+김태식
+김용문
+김영준
+김수암
+김태연
+김봉도
+김용윤
+김중열
+김태열
+김영준
+김순모
+김창일
+김태엽
+김국삼
+김진규
+김상옥
+김태영
+김규규
+김재철
+김인철
+김태영
+김송현
+김한진
+김응근
+김태영
+김성성
+김상준
+김갑휴
+김태오
+김무권
+김판임
+김영길
+김태용
+김진화
+김원산
+김무수
+김태용
+김병호
+김정화
+김우희
+김태용
+김용수
+김사기
+김기임
+김태용
+김정오
+김복조
+김명영
+김태욱
+김욱숙
+김수선
+김윤식
+김태운
+김동수
+김규자
+김재선
+김태원
+김덕기
+김석출
+김영홍
+김태원
+김지석
+김용식
+김영길
+김태원
+김희헌
+김경열
+김윤식
+김태원
+김병권
+김용희
+김진현
+김태유
+김성순
+김만학
+김종식
+김태육
+김달연
+김병식
+김성제
+김태율
+김영수
+김상덕
+김호영
+김태은
+김점기
+김상극
+김석봉
+김태의
+김인명
+김영국
+김진욱
+김태이
+김영말
+김두숙
+김기섭
+김태일
+김윤생
+김재대
+김상식
+김태일
+김인학
+김한길
+김정헌
+김태일
+김상준
+김광구
+김인화
+김태일
+김갑석
+김헌환
+김주순
+김태일
+김점영
+김상섭
+김태조
+김태정
+김정봉
+김태현
+김귀수
+김태조
+김갑석
+김주수
+김기태
+김태조
+김종준
+김영조
+김인해
+김태중
+김동일
+김원희
+김세수
+김태중
+김태한
+김원숙
+김만자
+김태지
+김봉록
+김임곤
+김재순
+김태진
+김도우
+김정식
+김태헌
+김태철
+김이관
+김봉수
+김병수
+김태철
+김말환
+김명수
+김재호
+김태철
+김종우
+김차태
+김종식
+김태철
+김대준
+김선호
+김태태
+김태출
+김윤목
+김석호
+김계준
+김태출
+김정실
+김태식
+김소준
+김태헌
+김현열
+김용송
+김상환
+김태현
+김종이
+김한열
+김영우
+김태형
+김윤성
+김규우
+김수현
+김태형
+김해재
+김순만
+김태석
+김태호
+김원원
+김성철
+김웅영
+김태호
+김송규
+김정우
+김상철
+김태호
+김선현
+김민환
+김원준
+김태호
+김상분
+김수덕
+김영임
+김태호
+김은문
+김영우
+김홍범
+김태호
+김정순
+김월주
+김옥업
+김태호
+김종출
+김호만
+김은근
+김태호
+김용정
+김병웅
+김영도
+김태호
+김대환
+김종암
+김상생
+김태호
+김동옥
+김용조
+김임선
+김태화
+김복준
+김난근
+김종암
+김태환
+김정화
+김수숙
+김의철
+김태환
+김지수
+김기봉
+김순호
+김태희
+김종경
+김영주
+김병기
+김태희
+김순수
+김동섭
+김원철
+김태희
+김금이
+김상순
+김삼도
+김판경
+김계식
+김삼배
+김오득
+김판규
+김송돈
+김순리
+김규기
+김판길
+김흥근
+김석두
+김병욱
+김판덕
+김문용
+김진석
+김순근
+김판돌
+김순현
+김희규
+김태성
+김판봉
+김종현
+김인자
+김남실
+김판석
+김옥호
+김효자
+김인성
+김판석
+김영향
+김경희
+김말열
+김판수
+김재석
+김성선
+김현근
+김판수
+김수규
+김종한
+김경수
+김판술
+김소열
+김점우
+김종란
+김판연
+김정환
+김명돌
+김쌍근
+김판열
+김주수
+김순식
+김진철
+김판용
+김재원
+김봉금
+김선조
+김판운
+김장원
+김근갑
+김윤주
+김판조
+김일년
+김태은
+김판중
+김판진
+김순암
+김광규
+김민용
+김판태
+김철생
+김영훈
+김갑집
+김판현
+김정교
+김종용
+김병정
+김판호
+김동호
+김금란
+김쌍주
+김팔곤
+김창동
+김재조
+김태만
+김팔봉
+김태우
+김국규
+김세대
+김표원
+김상대
+김상배
+김창림
+김필구
+김윤일
+김영순
+김익식
+김필연
+김경환
+김상석
+김세만
+김하석
+김춘호
+김인섭
+김무표
+김하조
+김정만
+김승병
+김규국
+김학권
+김광만
+김기인
+김규국
+김학기
+김운영
+김춘근
+김남환
+김학기
+김영기
+김황연
+김주문
+김학도
+김금태
+김옥권
+김순용
+김학봉
+김순덕
+김순현
+김을진
+김학봉
+김홍환
+김업생
+김해자
+김학봉
+김방춘
+김오권
+김기현
+김학석
+김은곤
+김명순
+김말철
+김학수
+김석영
+김홍환
+김병희
+김학우
+김종곤
+김헌희
+김현재
+김학우
+김만조
+김진연
+김성기
+김학윤
+김인석
+김갑근
+김희성
+김학이
+김종희
+김용순
+김봉식
+김학이
+김기수
+김재관
+김규식
+김학주
+김정용
+김철미
+김판희
+김한곤
+김현원
+김석범
+김칠호
+김한권
+김태갑
+김종영
+김판현
+김한규
+김근정
+김명이
+김해배
+김한규
+김정환
+김영용
+김광경
+김한기
+김금관
+김미태
+김형감
+김한도
+김귀준
+김호숙
+김영이
+김한배
+김해순
+김권웅
+김맹자
+김한석
+김덕수
+김영술
+김영학
+김한수
+김인규
+김영호
+김종순
+김한수
+김정철
+김태헌
+김두준
+김한수
+김상화
+김성탁
+김재걸
+김한수
+김영이
+김돈수
+김수성
+김한순
+김문호
+김윤조
+김계덕
+김한순
+김석조
+김재월
+김삼근
+김한식
+김형희
+김홍애
+김난해
+김한용
+김윤학
+김지길
+김수선
+김한조
+김종령
+김승철
+김경용
+김한종
+김정희
+김미희
+김병배
+김한중
+김중래
+김남곤
+김성순
+김한태
+김낙택
+김용화
+김옥규
+김한호
+김원일
+김만란
+김윤보
+김한홍
+김종애
+김윤정
+김대덕
+김한홍
+김운식
+김동암
+김인화
+김한희
+김갑보
+김종희
+김귀일
+김해곤
+김재주
+김영달
+김기출
+김해동
+김육한
+김성희
+김갑기
+김해림
+김상완
+김주석
+김태환
+김해봉
+김의조
+김한모
+김대호
+김해석
+김광준
+김석조
+김동호
+김해석
+김창현
+김민환
+김철복
+김해선
+김숙순
+김영권
+김양창
+김해수
+김원구
+김임환
+김창근
+김해수
+김대성
+김연길
+김화덕
+김해수
+김무기
+김해기
+김덕조
+김해연
+김순덕
+김의순
+김성자
+김해열
+김귀봉
+김인순
+김삼섭
+김해용
+김종고
+김성철
+김운호
+김해은
+김기규
+김호수
+김영훅
+김해은
+김신근
+김전규
+김기준
+김해은
+김세환
+김종동
+김오호
+김해정
+김병동
+김차수
+김귀균
+김해조
+김윤성
+김춘연
+김정호
+김해진
+김수근
+김태희
+김재곤
+김행순
+김성하
+김정수
+김경홍
+김향연
+김기명
+김정환
+김근철
+김향이
+김미환
+김정숙
+김용래
+김헌갑
+김황택
+김기화
+김용남
+김헌식
+김점식
+김혜건
+김순철
+김헌재
+김득연
+김규익
+김진대
+김헌태
+김영철
+김태봉
+김윤연
+김현기
+김명선
+김복인
+김기운
+김현기
+김태원
+김호홍
+김선열
+김현득
+김극경
+김환용
+김옥익
+김현래
+김의우
+김병조
+김달해
+김현묵
+김영준
+김경용
+김광출
+김현복
+김재용
+김덕현
+김희근
+김현석
+김호수
+김동룡
+김환철
+김현수
+김문운
+김동기
+김재순
+김현수
+김병장
+김재희
+김학철
+김현숙
+김순도
+김성영
+김우호
+김현숙
+김성만
+김준호
+김임규
+김현숙
+김갑봉
+김점규
+김종욱
+김현옥
+김상곤
+김재선
+김순문
+김현욱
+김중덕
+김맹술
+김정식
+김현웅
+김영재
+김달인
+김면배
+김현재
+김광규
+김상수
+김광수
+김현창
+김동대
+김정덕
+김하철
+김현철
+김달율
+김선암
+김재환
+김현철
+김홍현
+김덕석
+김운영
+김현철
+김영환
+김자이
+김정학
+김형구
+김영복
+김종숙
+김재조
+김형동
+김봉식
+김경륜
+김윤훈
+김형락
+김종운
+김정권
+김정수
+김형섭
+김상순
+김동호
+김기석
+김형수
+김헌이
+김영영
+김무민
+김형철
+김성우
+김종집
+김필숙
+김형태
+김대덕
+김성학
+김중원
+김형해
+김영곤
+김은규
+김정천
+김형희
+김종구
+김학기
+김명환
+김혜경
+김병자
+김병달
+김사숙
+김혜경
+김기군
+김성치
+김도은
+김혜경
+김강희
+김수백
+김규철
+김혜경
+김달문
+김병환
+김우정
+김혜숙
+김재동
+김영애
+김해우
+김혜영
+김일원
+김옥순
+김오권
+김혜자
+김점훈
+김민식
+김외권
+김호근
+김차선
+김종식
+김유봉
+김호기
+김성영
+김병희
+김병순
+김호룡
+김현철
+김재일
+김주철
+김호봉
+김세락
+김동헌
+김정자
+김호석
+김우옥
+김희이
+김용만
+김호성
+김철수
+김분배
+김영수
+김호야
+김경순
+김전순
+김상석
+김호용
+김용빈
+김복윤
+김유규
+김호용
+김병태
+김수선
+김연준
+김호인
+김상규
+김정진
+김기술
+김호일
+김문임
+김장청
+김태덕
+김호조
+김영택
+김성규
+김남표
+김호준
+김수광
+김영순
+김옥창
+김호철
+김정학
+김낙술
+김진준
+김홍건
+김 춘
+김호기
+김병순
+김홍겸
+김대섭
+김기춘
+김태금
+김홍구
+김기호
+김덕주
+김경호
+김홍국
+김종호
+김흥기
+김구규
+김홍규
+김정균
+김경석
+김술성
+김홍규
+김점학
+김태열
+김재숙
+김홍규
+김학수
+김상우
+김의영
+김홍균
+김수만
+김영득
+김태태
+김홍근
+김정천
+김 우
+김영식
+김홍근
+김계화
+김영덕
+김용순
+김홍달
+김원배
+김옥규
+김자웅
+김홍덕
+김필천
+김소복
+김창열
+김홍범
+김월영
+김홍우
+김종용
+김홍섭
+김종수
+김태재
+김준선
+김홍수
+김봉일
+김상래
+김정옥
+김홍수
+김진남
+김태숙
+김소락
+김홍식
+김광식
+김효천
+김규봉
+김홍식
+김상우
+김장학
+김옥성
+김홍열
+김병섭
+김용광
+김수호
+김홍열
+김일성
+김의목
+김근태
+김홍엽
+김학선
+김갑태
+김철권
+김홍일
+김진숙
+김점조
+김철복
+김홍조
+김유이
+김판환
+김금환
+김홍준
+김도우
+김대현
+김용희
+김화생
+김주빈
+김병수
+김선은
+김화식
+김천중
+김춘환
+김창영
+김화식
+김종옥
+김재희
+김인조
+김환성
+김삼철
+김일말
+김인연
+김환이
+김만식
+김상철
+김경미
+김환이
+김재경
+김재길
+김복순
+김환철
+김문기
+김현갑
+김대규
+김환호
+김태영
+김광봉
+김증경
+김황규
+김경해
+김대술
+김영순
+김효문
+김순광
+김선덕
+김술암
+김효선
+김순현
+김명모
+김병기
+김효선
+김판란
+김오상
+김창조
+김효숙
+김중원
+김조식
+김기중
+김효순
+김건학
+김태효
+김완효
+김효식
+김만동
+김창희
+김성관
+김효원
+김두수
+김성중
+김연조
+김효점
+김삼우
+김주태
+김규용
+김효진
+김부환
+김성율
+김영호
+김훈교
+김상술
+김석이
+김인식
+김흥숙
+김무복
+김제기
+김종구
+김희
+김석
+김암
+김순
+김희길
+김준회
+김언계
+김영수
+김희덕
+김재순
+김수화
+김점인
+김희도
+김병규
+김희열
+김철용
+김희동
+김문욱
+김선분
+김동이
+김희선
+김연윤
+김행호
+김정동
+김희성
+김영경
+김옥갑
+김동규
+김희수
+김양전
+김현희
+김태현
+김희수
+김일규
+김수수
+김재근
+김희수
+김난환
+김덕덕
+김선수
+김희수
+김갑호
+김귀덕
+김규인
+김희숙
+김이경
+김규헌
+김헌원
+김희순
+김숙동
+김광연
+김효수
+김희순
+김종순
+김선덕
+김병철
+김희정
+김용각
+김만호
+김의호
+김희준
+김화희
+김학한
+김성열
+김희준
+김정주
+김문순
+김진훈
+김희준
+김용출
+김운호
+김지훈
+김희진
+김정숙
+김승탁
+김갑상
+김희태
+김웅희
+김석환
+김공경
+나갑연
+나기언
+나경서
+나현교
+나건수
+나정이
+나태연
+나태수
+나광수
+나행영
+나철호
+나선태
+나국택
+나영홍
+나무선
+나삼현
+나규식
+나신만
+나주영
+나경영
+나규택
+나후순
+나영수
+나 원
+나규택
+나영익
+나창운
+나정영
+나규택
+나경옥
+나규수
+나성갑
+나금자
+나만분
+나태현
+나병교
+나금자
+나원이
+나판영
+나규명
+나기남
+나영권
+나재석
+나기채
+나기조
+나덕순
+나정주
+나영진
+나뇌성
+나금막
+나윤호
+나형기
+나대현
+나의수
+나원숙
+나충연
+나덕시
+나성웅
+나영관
+나수정
+나동선
+나영대
+나재립
+나술태
+나동연
+나 환
+나성현
+나병록
+나동춘
+나부언
+나순미
+나정구
+나동춘
+나성우
+나영출
+나호경
+나명철
+나수선
+나수봉
+나학웅
+나명철
+나정태
+나득숙
+나순지
+나무열
+나범술
+나해경
+나경기
+나무열
+나인선
+나해익
+나순식
+나병택
+나승희
+나병배
+나상휴
+나병택
+나차건
+나봉근
+나금홍
+나성수
+나동석
+나진자
+나덕출
+나성택
+나광자
+나영원
+나병태
+나성택
+나남석
+나정수
+나사덕
+나순세
+나영술
+나희식
+나영호
+나순연
+나성흠
+나정오
+나헌식
+나쌍선
+나귀일
+나인우
+나정현
+나양균
+나일모
+나철생
+나기용
+나억기
+나수천
+나헌욱
+나영재
+나영범
+나순근
+나인준
+나봉지
+나영삼
+나수영
+나재수
+나정환
+나영삼
+나홍희
+나임영
+나종명
+나영식
+나달석
+나병선
+나태정
+나영완
+나진수
+나홍숙
+나현수
+나영원
+나외열
+나옥수
+나충수
+나영자
+나영훈
+나학규
+나미진
+나영주
+나근판
+나일숙
+나규우
+나영진
+나상석
+나형용
+나종용
+나영호
+나춘호
+나경현
+나태열
+나영희
+나철남
+나병수
+나사미
+나영희
+나광수
+나종영
+나쌍원
+나용엽
+나수호
+나용자
+나정호
+나우덕
+나순식
+나칠희
+나국식
+나우연
+나성조
+나동석
+나경연
+나원식
+나성준
+나진현
+나종숙
+나월봉
+나운집
+나동도
+나옥애
+나월생
+나용호
+나성기
+나말한
+나익표
+나순술
+나광홍
+나민남
+나재기
+나재웅
+나계희
+나재수
+나재식
+나만석
+나성수
+나경남
+나정금
+나치범
+나범정
+나병우
+나정의
+나명호
+나영로
+나윤남
+나정태
+나재경
+나한준
+나영수
+나정희
+나명석
+나운기
+나명연
+나종곤
+나재진
+나선남
+나종수
+나종문
+나병도
+나점용
+나무조
+나종열
+나정임
+나삼련
+나은영
+나종태
+나성열
+나순환
+나춘도
+나종택
+나동부
+나평옥
+나종신
+나종한
+나재화
+나인율
+나정주
+나주택
+나길용
+나주윤
+나태식
+나지연
+나봉식
+나영환
+나방순
+나진관
+나현달
+나판조
+나진표
+나진관
+나정만
+나영숙
+나건수
+나진길
+나병미
+나갑오
+나용향
+나진도
+나봉운
+나영택
+나정운
+나진도
+나민자
+나갑숙
+나판자
+나진락
+나선현
+나찬철
+나근연
+나진상
+나남자
+나안현
+나천준
+나진오
+나희철
+나옥성
+나원돌
+나진유
+나원희
+나수대
+나승오
+나진한
+나상진
+나한록
+나윤식
+나진해
+나점자
+나경대
+나용강
+나진희
+나중수
+나수식
+나권교
+나채관
+나갈원
+나정오
+나경호
+나채권
+나태동
+나석태
+나종호
+나채성
+나효경
+나정관
+나소영
+나채식
+나영길
+나종조
+나근식
+나채향
+나종태
+나대심
+나태철
+나춘택
+나태옥
+나재용
+나이지
+나태임
+나명향
+나충윤
+나재근
+나해용
+나좌순
+나영현
+나태호
+나해용
+나운무
+나병철
+나재선
+나호연
+나명찬
+나홍자
+나용훈
+나희열
+나환섭
+나윤용
+나용자
+나희정
+나일식
+나승호
+나원동
+남 훈
+남태헌
+남봉호
+남대해
+남개곤
+남성술
+남희희
+남중기
+남궁정
+남판식
+남상숙
+남규배
+남규명
+남원선
+남순미
+남재달
+남규진
+남성웅
+남용호
+남낙포
+남기술
+남영형
+남대관
+남명수
+남기정
+남기호
+남점직
+남원숙
+남기홍
+남성기
+남성규
+남근열
+남덕수
+남재복
+남안애
+남상길
+남문희
+남배호
+남말암
+남일식
+남병두
+남창태
+남선태
+남운보
+남병춘
+남대구
+남경기
+남금영
+남상수
+남석봉
+남철기
+남진곤
+남상술
+남은남
+남광식
+남윤곤
+남상염
+남삼훈
+남봉태
+남윤태
+남상인
+남희관
+남광현
+남영헌
+남상훈
+남영수
+남판현
+남대섭
+남석현
+남건기
+남종창
+남명태
+남성우
+남상광
+남 수
+남상호
+남수용
+남홍봉
+남귀식
+남현곤
+남순우
+남영무
+남영재
+남태준
+남영우
+남판근
+남재교
+남용근
+남영현
+남상선
+남창도
+남정문
+남영현
+남하호
+남명치
+남을근
+남오조
+남상현
+남영국
+남병택
+남옥희
+남종화
+남재현
+남정연
+남용덕
+남영암
+남문택
+남영희
+남원덕
+남종기
+남동자
+남태순
+남원희
+남봉철
+남달항
+남계동
+남윤숙
+남임교
+남종수
+남근기
+남윤조
+남용희
+남원천
+남이수
+남은정
+남민대
+남분환
+남현화
+남을순
+남종영
+남가선
+남상구
+남이식
+남창태
+남찬수
+남범진
+남이식
+남국흠
+남구출
+남순심
+남이직
+남정진
+남광경
+남창오
+남인식
+남삼훈
+남장국
+남태식
+남재만
+남상이
+남종덕
+남광수
+남재봉
+남무우
+남삼만
+남행기
+남재우
+남명열
+남영섭
+남남식
+남재우
+남순헌
+남준곤
+남정수
+남정호
+남호진
+남인자
+남상만
+남정호
+남재정
+남상욱
+남정조
+남창기
+남화열
+남옥봉
+남영옥
+남철우
+남주식
+남종호
+남동암
+남춘화
+남병부
+남칠호
+남흥식
+남칠조
+남태동
+남병우
+남선권
+남태종
+남호석
+남혜성
+남재해
+남판준
+남재현
+남원국
+남영식
+남하우
+남진이
+남상순
+남중화
+남현일
+남도홍
+남수화
+남순수
+남현일
+남의순
+남희규
+남길규
+노갑수
+노군권
+노규세
+노성아
+노경도
+노경석
+노태헌
+노일자
+노광덕
+노대윤
+노용자
+노삼종
+노광웅
+노강언
+노승동
+노경근
+노근열
+노헌호
+노무규
+노병순
+노기근
+노향출
+노삼미
+노중진
+노기록
+노준태
+노외규
+노종환
+노기수
+노희희
+노동섭
+노옥석
+노기창
+노석순
+노성후
+노수수
+노기현
+노준수
+노도석
+노장환
+노대곤
+노병선
+노중욱
+노한정
+노동남
+노창상
+노재생
+노쾌숙
+노동덕
+노창암
+노경분
+노홍택
+노동수
+노태식
+노옥열
+노철규
+노동조
+노겸조
+노우록
+노근자
+노동조
+노중호
+노의한
+노영화
+노명분
+노수식
+노정환
+노정견
+노명암
+노승술
+노영점
+노경탁
+노무수
+노춘식
+노종정
+노정순
+노무종
+노윤돌
+노정진
+노재만
+노방식
+노상갑
+노영열
+노을택
+노병우
+노헌도
+노진태
+노철현
+노복천
+노윤원
+노명호
+노차순
+노봉열
+노주률
+노영문
+노용병
+노분조
+노중규
+노희천
+노동수
+노사호
+노종경
+노일여
+노현수
+노삼수
+노일이
+노우수
+노인순
+노상수
+노중림
+노은수
+노순덕
+노상열
+노진봉
+노상구
+노춘진
+노상태
+노춘호
+노민화
+노진수
+노상필
+노병우
+노영교
+노정군
+노상화
+노태만
+노한대
+노재식
+노석수
+노태태
+노성환
+노병문
+노석식
+노한갑
+노종희
+노한호
+노석식
+노병숙
+노성상
+노두수
+노석열
+노영자
+노뇌창
+노수철
+노석호
+노말기
+노권도
+노경혁
+노성대
+노길현
+노용도
+노달기
+노성덕
+노철국
+노봉한
+노홍환
+노성례
+노동환
+노영성
+노상자
+노성식
+노태숙
+노진완
+노병출
+노성열
+노영기
+노상희
+노병현
+노성환
+노무순
+노병호
+노제기
+노수한
+노상기
+노정선
+노연현
+노순남
+노영석
+노정조
+노두원
+노순조
+노경진
+노용식
+노승숙
+노순학
+노한성
+노영곤
+노상열
+노순해
+노순화
+노창문
+노창현
+노영수
+노진조
+노병동
+노수성
+노영숙
+노수종
+노주애
+노칠연
+노완구
+노종출
+노준수
+노태철
+노완식
+노종기
+노오환
+노정석
+노용규
+노도호
+노성갑
+노일제
+노용문
+노명난
+노경상
+노순식
+노용범
+노태우
+노수교
+노병균
+노용식
+노오숙
+노한분
+노상홍
+노용자
+노시춘
+노경관
+노부형
+노운동
+노차국
+노성화
+노종열
+노월선
+노상옥
+노사식
+노판우
+노윤규
+노무운
+노덕태
+노점복
+노윤금
+노오교
+노명석
+노정금
+노은섭
+노경길
+노상관
+노광자
+노은희
+노명숙
+노명석
+노만수
+노을연
+노현수
+노대용
+노병신
+노인상
+노욱식
+노광화
+노명연
+노인호
+노원호
+노재진
+노영우
+노장수
+노영주
+노명경
+노종휴
+노장오
+노춘봉
+노우옥
+노대웅
+노재연
+노용출
+노병탁
+노상상
+노재윤
+노익부
+노윤휴
+노달현
+노재창
+노만숙
+노정만
+노칠길
+노재환
+노종철
+노태희
+노판진
+노재환
+노규순
+노영희
+노달호
+노정익
+노해만
+노성식
+노춘숙
+노정환
+노영근
+노만곤
+노용술
+노종권
+노용균
+노일옥
+노만도
+노종운
+노상이
+노근덕
+노동기
+노종현
+노천수
+노일순
+노시열
+노준현
+노경용
+노성근
+노한우
+노준현
+노광현
+노봉이
+노정화
+노진식
+노한석
+노근식
+노진렬
+노창락
+노강남
+노원이
+노선순
+노창석
+노현일
+노철권
+노분하
+노창호
+노억학
+노무철
+노필현
+노창화
+노정태
+노병곤
+노용우
+노철규
+노길태
+노호철
+노영만
+노춘길
+노명연
+노경희
+노정순
+노칠규
+노정치
+노정석
+노대욱
+노태길
+노홍관
+노태극
+노무자
+노태술
+노진선
+노재자
+노상이
+노태원
+노태봉
+노세만
+노용철
+노택봉
+노용화
+노춘희
+노덕환
+노판규
+노노철
+노영석
+노순호
+노필주
+노명원
+노기선
+노재원
+노한규
+노영열
+노미권
+노문성
+노현배
+노종순
+노상규
+노한화
+노현정
+노두상
+노삼익
+노호봉
+노혜경
+노질규
+노광섭
+노재용
+노회준
+노정수
+노호중
+노두일
+노효동
+노경소
+노성성
+노차석
+노후득
+노을배
+노재계
+노만연
+노희수
+노영웅
+노성규
+노상만
+노희열
+노태조
+노태태
+노재호
+노희찬
+노윤욱
+노노호
+노상열
+도규탁
+도임용
+도광수
+도호기
+도동승
+도윤성
+도정전
+도주태
+도두탁
+도소홍
+도병건
+도주석
+도문환
+도문연
+도철용
+도팔갑
+도병기
+도율익
+도영수
+도순인
+도상기
+도호생
+도태갑
+도규환
+도상철
+도병환
+도성우
+도병용
+도상호
+도재식
+도찬자
+도적재
+도수영
+도소영
+도헌식
+도학식
+도수영
+도용보
+도재정
+도홍수
+도신우
+도기근
+도해용
+도정근
+도영철
+도분근
+도현창
+도해생
+도영희
+도문이
+도덕우
+도기만
+도옥희
+도공림
+도인분
+도해수
+도원수
+도용순
+도삼철
+도영선
+도임술
+도순순
+도국순
+도차호
+도재동
+도영자
+도광숙
+도상원
+도재동
+도윤건
+도석석
+도승만
+도재욱
+도순찬
+도명구
+도차덕
+도정만
+도창호
+도상기
+도일우
+도정봉
+도판길
+도옥로
+도철희
+도정탁
+도경규
+도재식
+도철세
+도제현
+도덕수
+도쾌선
+도기태
+도종환
+도태근
+도종록
+도인선
+도준탁
+도영모
+도개화
+도병식
+도증조
+도갑관
+도영순
+도태수
+도창록
+도병환
+도병복
+도창성
+도창수
+도태희
+도문진
+도주제
+도팔만
+도효용
+도선수
+도현정
+도하석
+도화교
+도정조
+도만양
+도현석
+도연암
+도군식
+도태춘
+도현영
+도한상
+도만성
+도동주
+도호길
+도인현
+도규춘
+도효희
+도화석
+도대석
+도진석
+도노목
+도회운
+도경동
+도동삼
+도태식
+라규혁
+라기봉
+라숙기
+라재돌
+라병호
+라일용
+라재정
+라교조
+라보원
+라기경
+라병근
+라차현
+라석문
+라종목
+라충기
+라용미
+라세만
+라달주
+라소환
+라완호
+라연당
+라승기
+라태원
+라윤수
+라영노
+라명계
+라종관
+라규영
+라영도
+라희성
+라병익
+라원돌
+라영준
+라미래
+라영임
+라삼영
+라요한
+라희순
+라만연
+라주담
+라우곤
+라일균
+라두태
+라희돌
+라인수
+라세섭
+라태조
+라대식
+라장수
+라해도
+라영민
+라수룡
+라종철
+라희홍
+라순수
+라주건
+라주택
+라봉기
+라도진
+라정성
+라진강
+라연석
+라순순
+라병숙
+라진식
+라상환
+라재숙
+라원길
+라진한
+라규상
+라영식
+라승운
+라치운
+라경기
+라용수
+라정진
+라택연
+라상석
+라영석
+라봉재
+라한길
+라상순
+라창재
+라홍만
+라현문
+라일만
+라정진
+라필주
+류 강
+류은자
+류영원
+류복호
+류갑록
+류영구
+류태식
+류하순
+류광열
+류태영
+류재학
+류경남
+류광지
+류함섭
+류현동
+류학수
+류근숙
+류완훈
+류해우
+류무복
+류도용
+류승선
+류이집
+류상랑
+류동훈
+류문임
+류근기
+류현욱
+류동훈
+류철갑
+류사무
+류세종
+류병칠
+류금애
+류명부
+류문효
+류상렬
+류철동
+류재동
+류형이
+류상우
+류광용
+류종재
+류재철
+류성복
+류은옥
+류중성
+류규남
+류성복
+류문연
+류금기
+류상근
+류성호
+류영대
+류시조
+류철철
+류수빈
+류성영
+류길국
+류문용
+류시재
+류형희
+류규정
+류학득
+류연자
+류소덕
+류경현
+류동수
+류용희
+류세호
+류상태
+류순덕
+류윤형
+류만식
+류강준
+류광배
+류의수
+류을곤
+류병민
+류성실
+류장화
+류서홍
+류기영
+류실학
+류종래
+류종용
+류동호
+류호현
+류종문
+류수선
+류용택
+류혜영
+류종채
+류종탁
+류창수
+류수환
+류태명
+류수곤
+류현호
+류이원
+류태문
+류승태
+류영환
+류봉석
+류태춘
+류정선
+류필삼
+류원호
+류필선
+류정수
+류영창
+류상기
+류해복
+류복기
+류수성
+류상출
+류해양
+류동주
+류기봉
+류판식
+류해춘
+류혜호
+류세연
+류신순
+류호대
+류선우
+류상무
+류정극
+마석일
+마동혁
+마태선
+마상석
+맹경락
+맹주옥
+맹금규
+맹혜균
+모상영
+모암태
+모해수
+모성길
+목성수
+목달근
+목화권
+목재팔
+문강민
+문철현
+문기태
+문길표
+문건택
+문종준
+문동만
+문영오
+문경술
+문헌호
+문해덕
+문보호
+문경애
+문용기
+문대영
+문성대
+문경호
+문명술
+문영환
+문강원
+문경희
+문을대
+문계선
+문연식
+문계남
+문점열
+문재기
+문재섭
+문계선
+문석준
+문판석
+문재오
+문광재
+문상출
+문쌍원
+문형문
+문교익
+문주자
+문재재
+문정섭
+문구의
+문교철
+문용수
+문종수
+문귀열
+문태기
+문석태
+문태경
+문근식
+문군신
+문창식
+문현태
+문근영
+문정희
+문재순
+문말수
+문근영
+문근훈
+문태하
+문영혜
+문기수
+문수숙
+문성경
+문윤목
+문기택
+문대우
+문준희
+문승만
+문기택
+문해택
+문순권
+문진복
+문남식
+문영전
+문상금
+문종열
+문남천
+문상택
+문홍경
+문정식
+문달수
+문상각
+문홍경
+문낙순
+문대희
+문중열
+문병봉
+문성돌
+문동수
+문창순
+문영수
+문수길
+문두열
+문용태
+문인근
+문일경
+문만열
+문상복
+문영정
+문성정
+문말연
+문명환
+문말식
+문미노
+문매자
+문상분
+문중열
+문일옥
+문맹주
+문태호
+문상대
+문석열
+문명용
+문종식
+문희애
+문대원
+문무연
+문정석
+문영화
+문진선
+문미영
+문병애
+문종행
+문말수
+문병근
+문정남
+문학석
+문병숙
+문병인
+문영점
+문도조
+문해근
+문병지
+문상선
+문일기
+문금규
+문복곤
+문명탁
+문원화
+문성혁
+문복순
+문병기
+문갑훈
+문재순
+문복열
+문승태
+문명상
+문희환
+문상도
+문성숙
+문선효
+문갑식
+문상래
+문성진
+문병백
+문창열
+문상모
+문복근
+문기언
+문종순
+문상석
+문문우
+문상재
+문정경
+문상수
+문동훈
+문석경
+문태주
+문상수
+문안성
+문기식
+문철식
+문상운
+문재중
+문종조
+문쌍원
+문상웅
+문복복
+문성숙
+문현래
+문상현
+문춘자
+문기원
+문영포
+문상호
+문태자
+문기선
+문판강
+문상화
+문재오
+문병란
+문태호
+문상흠
+문용룡
+문낙순
+문미선
+문상희
+문병화
+문상자
+문숙자
+문선남
+문소수
+문영성
+문규준
+문선호
+문종홍
+문봉경
+문석한
+문성준
+문동자
+문상덕
+문위호
+문세열
+문문출
+문주탁
+문경경
+문순구
+문장수
+문진원
+문옥빈
+문순례
+문회배
+문용복
+문준문
+문순자
+문상수
+문영억
+문태일
+문순조
+문홍명
+문문순
+문성연
+문순향
+문봉술
+문태기
+문행길
+문신현
+문진석
+문성전
+문광술
+문양웅
+문태일
+문영식
+문판환
+문영복
+문종기
+문분만
+문윤석
+문영상
+문성아
+문성영
+문인준
+문영석
+문풍식
+문월기
+문경호
+문영오
+문은덕
+문태임
+문재업
+문영채
+문병원
+문기근
+문인창
+문영희
+문삼기
+문연수
+문상언
+문오교
+문용순
+문송순
+문태문
+문옥주
+문재호
+문덕귀
+문희인
+문온숙
+문용태
+문옥래
+문종섭
+문용운
+문정은
+문설국
+문영호
+문우선
+문태식
+문인섭
+문증우
+문웅열
+문수숙
+문창출
+문인수
+문원출
+문순수
+문건덕
+문종길
+문은기
+문인국
+문도모
+문명덕
+문은식
+문원식
+문경성
+문태석
+문을생
+문소훈
+문성학
+문석자
+문응학
+문인식
+문신한
+문승유
+문익기
+문규원
+문난덕
+문성기
+문인곤
+문기재
+문성균
+문영옥
+문인기
+문복규
+문상철
+문병희
+문인기
+문쾌천
+문윤희
+문상식
+문인수
+문순호
+문상재
+문민의
+문일주
+문소호
+문영해
+문중니
+문장운
+문영곤
+문정순
+문재용
+문장호
+문찬욱
+문재교
+문안조
+문재철
+문쾌도
+문용준
+문길조
+문재희
+문기갑
+문효주
+문종호
+문전국
+문은용
+문만원
+문복조
+문전국
+문익희
+문재희
+문희열
+문점랑
+문현현
+문영교
+문두태
+문점분
+문대민
+문순환
+문윤옥
+문정국
+문말종
+문외자
+문재수
+문정범
+문영진
+문태규
+문근복
+문정분
+문성수
+문경화
+문종종
+문정선
+문지봉
+문옥권
+문석환
+문정수
+문금숙
+문정호
+문영수
+문정순
+문정식
+문우준
+문의수
+문정술
+문건근
+문문령
+문영구
+문정자
+문오순
+문재석
+문정우
+문정자
+문일국
+문종걸
+문건수
+문정자
+문연근
+문경동
+문기철
+문정자
+문성실
+문순연
+문인석
+문정희
+문원준
+문소현
+문명호
+문종래
+문추봉
+문명열
+문의태
+문주선
+문원홍
+문복훈
+문호수
+문주섭
+문창남
+문대환
+문용영
+문주종
+문만주
+문태열
+문병휴
+문주호
+문임만
+문경오
+문종수
+문차관
+문선홍
+문태교
+문재조
+문창래
+문칠은
+문말수
+문용준
+문창식
+문종용
+문상수
+문병택
+문창열
+문재규
+문덕섭
+문병식
+문창열
+문사연
+문무우
+문진원
+문철운
+문육석
+문진식
+문태국
+문춘옥
+문상학
+문주길
+문노갑
+문판권
+문분달
+문말호
+문해훈
+문판순
+문순연
+문병일
+문영택
+문판오
+문종수
+문원희
+문상학
+문팔봉
+문영녀
+문만석
+문해선
+문필순
+문태주
+문한준
+문성상
+문학조
+문인영
+문재주
+문경권
+문행성
+문달선
+문인정
+문춘일
+문현자
+문삼권
+문용창
+문광범
+문호식
+문만수
+문지조
+문득식
+문홍재
+문정한
+문분희
+문궁준
+문홍재
+문중기
+문해환
+문용태
+문홍주
+문용휘
+문장복
+문윤도
+문화춘
+문윤난
+문달임
+문진군
+문환주
+문근호
+문동상
+문재순
+문효열
+문기애
+문상일
+문등남
+문희교
+문달환
+문정근
+문해석
+문희성
+문오옥
+문병도
+문홍자
+문희순
+문영수
+문희병
+문상호
+문희식
+문무춘
+문경화
+문미호
+문희연
+문성원
+문상열
+문승주
+문희원
+문성철
+문옥균
+문말분
+민공식
+민일철
+민영보
+민신준
+민도기
+민원길
+민운석
+민성훈
+민문희
+민소주
+민종환
+민의원
+민병기
+민윤희
+민홍근
+민도수
+민병목
+민분구
+민종순
+민부정
+민병성
+민길복
+민수술
+민주종
+민병오
+민창수
+민남재
+민석희
+민병오
+민진우
+민대백
+민강환
+민병오
+민창호
+민병윤
+민용욱
+민병우
+민진용
+민정목
+민선순
+민병욱
+민정육
+민태숙
+민재현
+민병창
+민정소
+민영재
+민점오
+민병천
+민계석
+민유이
+민성훈
+민병현
+민주업
+민현석
+민기기
+민복기
+민숙일
+민영구
+민주현
+민봉근
+민 태
+민태정
+민상원
+민석조
+민상회
+민성식
+민인준
+민성기
+민헌희
+민쌍현
+민호수
+민성재
+민 수
+민상현
+민영연
+민영우
+민호년
+민경용
+민기철
+민재기
+민성차
+민만민
+민특향
+민점수
+민주주
+민 교
+민경호
+민종선
+민일연
+민재숙
+민명대
+민진노
+민정규
+민행홍
+민용기
+민진수
+민재환
+민영암
+민삼수
+민찬식
+민병열
+민철수
+민수환
+민창식
+민외득
+민정영
+민석은
+민철진
+민이순
+민정순
+민수만
+민태식
+민혜수
+민원규
+민재규
+민향란
+민상식
+민풍득
+민문관
+민현숙
+민경희
+민재만
+민상숙
+민혜원
+민태재
+민정식
+민득준
+박 교
+박용조
+박인기
+박민석
+박 근
+박선근
+박상옥
+박수권
+박 옥
+박광득
+박용곤
+박우조
+박 용
+박윤덕
+박본곤
+박용권
+박 용
+박태경
+박석학
+박계석
+박 은
+박기재
+박경숙
+박태순
+박 훈
+박호희
+박찬수
+박도열
+박갑도
+박윤식
+박세순
+박석규
+박갑상
+박재옥
+박덕우
+박신갑
+박갑선
+박태복
+박해호
+박원화
+박갑수
+박동동
+박일희
+박동석
+박갑수
+박동식
+박경현
+박장모
+박갑순
+박태복
+박정한
+박성숙
+박갑악
+박병태
+박종우
+박성현
+박갑주
+박임순
+박혁순
+박좌근
+박강본
+박충근
+박태덕
+박대연
+박강조
+박효택
+박일술
+박연우
+박건동
+박경호
+박기호
+박영도
+박경규
+박상소
+박복환
+박태임
+박경기
+박영근
+박석현
+박인길
+박경달
+박인종
+박해봉
+박기수
+박경동
+박윤래
+박찬아
+박장구
+박경동
+박임근
+박정환
+박정용
+박경선
+박순진
+박상인
+박구연
+박경수
+박병철
+박국경
+박주수
+박경수
+박태동
+박덕출
+박영성
+박경수
+박우희
+박진조
+박춘한
+박경수
+박임출
+박상재
+박내연
+박경술
+박종생
+박기섭
+박옥기
+박경열
+박화아
+박형요
+박연배
+박경영
+박청철
+박지석
+박길원
+박경용
+박오길
+박병수
+박태판
+박경우
+박재욱
+박범화
+박민철
+박경원
+박병우
+박명석
+박덕석
+박경재
+박규천
+박봉석
+박병석
+박경조
+박홍문
+박창출
+박금수
+박경준
+박만재
+박쌍현
+박원춘
+박경출
+박광편
+박재석
+박운경
+박경호
+박순정
+박상근
+박만수
+박경호
+박명근
+박신자
+박진수
+박경화
+박윤철
+박근열
+박갑수
+박경희
+박은락
+박홍숙
+박응용
+박계만
+박세순
+박경득
+박학심
+박계순
+박하등
+박경점
+박문원
+박계순
+박주호
+박형천
+박필영
+박계순
+박태식
+박재선
+박판문
+박계양
+박재환
+박사자
+박철조
+박고윤
+박도만
+박영호
+박미철
+박곡지
+박상태
+박중수
+박헌선
+박관욱
+박기덕
+박환태
+박진래
+박광근
+박봉천
+박영기
+박형식
+박광근
+박찬돌
+박휘천
+박영조
+박광기
+박 진
+박추용
+박월차
+박광배
+박태태
+박문암
+박종숙
+박광배
+박양래
+박병태
+박우석
+박광빈
+박종덕
+박명호
+박광수
+박광석
+박현수
+박정도
+박종덕
+박광선
+박기곤
+박동도
+박태용
+박광수
+박병도
+박춘석
+박계수
+박광수
+박상모
+박태수
+박성길
+박광열
+박필덕
+박성곤
+박순락
+박광열
+박순기
+박창섭
+박종렬
+박광용
+박만수
+박석포
+박은정
+박광용
+박기근
+박홍덕
+박창근
+박광욱
+박중연
+박필정
+박환열
+박광진
+박정덕
+박춘출
+박태련
+박광진
+박규춘
+박광모
+박병연
+박광호
+박무헌
+박종순
+박성기
+박광훈
+박칠훈
+박명호
+박천식
+박교찬
+박덕근
+박순수
+박숙식
+박구열
+박을조
+박말석
+박차환
+박국주
+박연술
+박상희
+박상이
+박귀순
+박옥호
+박수진
+박상장
+박귀환
+박태배
+박성곤
+박말종
+박규근
+박홍수
+박창연
+박태두
+박규만
+박갑진
+박승호
+박강준
+박규봉
+박주술
+박인율
+박은수
+박규이
+박상훈
+박세연
+박정주
+박규천
+박영택
+박병순
+박중룡
+박규학
+박옥자
+박성식
+박학우
+박규흠
+박두호
+박충호
+박창환
+박근덕
+박상완
+박노성
+박동현
+박근배
+박영진
+박영호
+박우국
+박근배
+박기덕
+박복상
+박정자
+박근순
+박태배
+박상일
+박명달
+박근식
+박경선
+박기준
+박복희
+박근영
+박성재
+박부환
+박연규
+박근우
+박순숙
+박한호
+박무영
+박근윤
+박소우
+박정규
+박상회
+박근윤
+박보호
+박길연
+박영명
+박근자
+박상수
+박정열
+박현희
+박근해
+박석철
+박달란
+박용식
+박근화
+박사암
+박환종
+박기상
+박근희
+박만석
+박담수
+박인준
+박금석
+박숙홍
+박성병
+박창식
+박금연
+박순자
+박종곤
+박창관
+박금주
+박용완
+박춘식
+박승식
+박기곤
+박민이
+박정훈
+박영순
+박기모
+박주순
+박규영
+박태계
+박기문
+박낙이
+박경자
+박승득
+박기봉
+박성오
+박금호
+박금순
+박기봉
+박영식
+박삼삼
+박은환
+박기성
+박자석
+박철헌
+박건원
+박기성
+박갑덕
+박재종
+박기수
+박기순
+박대동
+박민연
+박외경
+박기옥
+박재봉
+박영화
+박태철
+박기완
+박원선
+박재택
+박순열
+박기원
+박영근
+박태경
+박영석
+박기원
+박영여
+박진희
+박영호
+박기정
+박쾌석
+박재태
+박병석
+박기종
+박화희
+박학영
+박인태
+박기태
+박병태
+박현우
+박영태
+박기태
+박우태
+박수만
+박일순
+박기태
+박대순
+박계익
+박안주
+박기택
+박태갑
+박원범
+박종현
+박기현
+박기기
+박도재
+박천찬
+박기현
+박호선
+박장섭
+박갑만
+박기홍
+박금익
+박영교
+박도규
+박기홍
+박상희
+박연주
+박중인
+박기홍
+박기수
+박규희
+박상흠
+박기홍
+박주일
+박상찬
+박민만
+박기화
+박용평
+박재흠
+박정환
+박기훈
+박병호
+박승권
+박미화
+박길효
+박경덕
+박정완
+박성조
+박낙하
+박차배
+박종순
+박준례
+박남석
+박경권
+박만정
+박순수
+박남숙
+박창규
+박호조
+박학섭
+박남식
+박판동
+박광운
+박정태
+박남정
+박을일
+박순회
+박태진
+박노갑
+박상화
+박영식
+박정자
+박노갑
+박 근
+박미준
+박재주
+박노권
+박기진
+박호훈
+박대식
+박노기
+박성선
+박석용
+박만범
+박노만
+박위옥
+박성경
+박진필
+박노분
+박재옥
+박상자
+박팔배
+박노순
+박성덕
+박달호
+박영덕
+박노신
+박숙현
+박태수
+박태혁
+박노열
+박수혜
+박염석
+박정분
+박노영
+박광동
+박심룡
+박경호
+박노용
+박인규
+박인도
+박영생
+박노윤
+박홍규
+박종호
+박옥배
+박노윤
+박영준
+박영용
+박학근
+박노정
+박원규
+박순순
+박운윤
+박노철
+박재경
+박동표
+박세도
+박노학
+박창수
+박순상
+박의수
+박노현
+박종호
+박정웅
+박준용
+박노화
+박태술
+박임규
+박경규
+박달규
+박정일
+박근섭
+박창준
+박달선
+박 숙
+박권순
+박봉봉
+박달수
+박정성
+박덕호
+박동임
+박달용
+박노홍
+박한자
+박석순
+박달회
+박정환
+박원선
+박달남
+박대성
+박재자
+박해주
+박영봉
+박대성
+박정일
+박왕자
+박진호
+박대성
+박창수
+박갑성
+박형태
+박대성
+박근철
+박창근
+박길선
+박대식
+박상열
+박성조
+박병일
+박대식
+박경호
+박태옥
+박기준
+박대원
+박수실
+박명자
+박명태
+박대철
+박동영
+박학호
+박규기
+박대형
+박훈암
+박오조
+박종복
+박덕근
+박판철
+박삼자
+박태구
+박덕순
+박호봉
+박장기
+박경남
+박덕암
+박동용
+박수선
+박윤춘
+박덕이
+박진덕
+박억성
+박옥식
+박도금
+박계철
+박은환
+박장원
+박도선
+박제우
+박영영
+박현수
+박도환
+박규화
+박운식
+박하숙
+박도환
+박인호
+박영호
+박용문
+박돈헌
+박영일
+박정기
+박대하
+박동근
+박봉기
+박균호
+박욱분
+박동길
+박세택
+박청재
+박필태
+박동명
+박덕순
+박광우
+박종현
+박동명
+박상돌
+박정태
+박영규
+박동성
+박금규
+박병경
+박경연
+박동수
+박종일
+박영자
+박대곤
+박동수
+박혜선
+박상호
+박희식
+박동수
+박병화
+박의이
+박용선
+박동숙
+박광일
+박우환
+박광표
+박동식
+박경철
+박종일
+박명직
+박동식
+박운순
+박성숙
+박상민
+박동열
+박봉복
+박근조
+박명준
+박동열
+박정식
+박신술
+박우철
+박동영
+박병선
+박정옥
+박낙익
+박동용
+박석정
+박기동
+박옥호
+박동욱
+박영식
+박대현
+박충택
+박동운
+박복이
+박종만
+박기조
+박동일
+박재형
+박말수
+박계수
+박동일
+박상연
+박태기
+박점순
+박동자
+박용덕
+박덕구
+박영련
+박동정
+박정근
+박상한
+박희호
+박동준
+박재성
+박경성
+박덕실
+박동준
+박영제
+박남욱
+박용환
+박동준
+박해희
+박재우
+박말배
+박동천
+박철율
+박강근
+박상일
+박동철
+박갑환
+박영득
+박문열
+박동철
+박영봉
+박영수
+박판현
+박동춘
+박인영
+박정규
+박을고
+박동헌
+박택일
+박상우
+박윤영
+박두용
+박성덕
+박정화
+박순숙
+박두익
+박의이
+박갑민
+박태술
+박두헌
+박만전
+박관원
+박준옥
+박두호
+박치식
+박교호
+박창환
+박두환
+박영문
+박영만
+박용환
+박두희
+박점영
+박노순
+박재현
+박득근
+박진수
+박선식
+박순식
+박래하
+박창식
+박기용
+박재효
+박막래
+박길호
+박문식
+박 수
+박만규
+박정석
+박희순
+박정자
+박만규
+박상희
+박정준
+박귀운
+박만석
+박영채
+박말영
+박병갑
+박만수
+박재희
+박화웅
+박현오
+박만수
+박태석
+박현용
+박욱규
+박만수
+박종용
+박동철
+박병대
+박만심
+박태원
+박한동
+박해환
+박만정
+박희용
+박영순
+박태종
+박만조
+박일호
+박소경
+박수곤
+박만출
+박영학
+박병영
+박무주
+박만흠
+박정칙
+박계렬
+박월식
+박말수
+박규희
+박해출
+박대초
+박말순
+박은수
+박용규
+박차조
+박말순
+박보이
+박성현
+박병석
+박말조
+박을열
+박승남
+박규운
+박말출
+박태수
+박점학
+박태향
+박말한
+박소규
+박순근
+박술모
+박명돌
+박국준
+박정길
+박규진
+박명봉
+박장용
+박광선
+박한경
+박명식
+박헌철
+박정주
+박경옥
+박명옥
+박철숙
+박을현
+박임표
+박명용
+박차환
+박해한
+박철택
+박명임
+박민택
+박화열
+박종영
+박명진
+박원재
+박홍희
+박한영
+박명철
+박상수
+박진선
+박덕교
+박명한
+박항기
+박중칠
+박병수
+박명호
+박대록
+박점용
+박보열
+박명호
+박재수
+박경섭
+박수구
+박명회
+박은자
+박태달
+박종란
+박명희
+박병오
+박무순
+박영철
+박묘년
+박쌍곤
+박영돌
+박종수
+박무길
+박언응
+박정석
+박미훈
+박무웅
+박점원
+박태용
+박차수
+박무웅
+박광진
+박규운
+박홍용
+박무호
+박차찬
+박준석
+박상덕
+박무환
+박종기
+박갑용
+박귀극
+박문갑
+박명근
+박형우
+박광식
+박문권
+박판분
+박대원
+박옥현
+박문규
+박병환
+박홍철
+박업선
+박문수
+박수호
+박영식
+박설윤
+박문식
+박해련
+박필여
+박은식
+박문조
+박영수
+박병정
+박보명
+박문조
+박운순
+박성호
+박천악
+박문철
+박희철
+박병영
+박주이
+박문호
+박성악
+박용련
+박태일
+박문희
+박판종
+박석형
+박동철
+박미자
+박성기
+박해순
+박태규
+박미자
+박위도
+박강배
+박한구
+박미자
+박정운
+박영덕
+박창희
+박미정
+박성호
+박상현
+박종영
+박미화
+박오희
+박정현
+박술조
+박민우
+박진식
+박성만
+박차경
+박방자
+박성화
+박덕평
+박제구
+박범태
+박병수
+박쌍대
+박정호
+박병구
+박병재
+박남영
+박태로
+박병근
+박기수
+박정희
+박경희
+박병기
+박명창
+박종순
+박은선
+박병기
+박광보
+박화식
+박미래
+박병기
+박옥자
+박태열
+박대봉
+박병남
+박석경
+박용이
+박영수
+박병립
+박용한
+박진구
+박정기
+박병목
+박점일
+박현민
+박영환
+박병선
+박술식
+박승율
+박병자
+박병순
+박금자
+박경운
+박재철
+박병용
+박한호
+박재영
+박점악
+박병용
+박덕현
+박영식
+박상덕
+박병진
+박창희
+박학수
+박은식
+박병천
+박원식
+박수임
+박용호
+박병헌
+박재순
+박민수
+박제석
+박병호
+박경수
+박순림
+박정종
+박병호
+박윤지
+박승희
+박정술
+박병호
+박태한
+박용현
+박정희
+박보근
+박해자
+박갈란
+박웅세
+박복근
+박춘도
+박윤웅
+박윤술
+박복난
+박명교
+박성석
+박위석
+박복만
+박선암
+박수부
+박이명
+박복연
+박희환
+박원자
+박정정
+박봉근
+박기길
+박진호
+박근균
+박봉기
+박순운
+박홍조
+박동희
+박봉병
+박규희
+박일중
+박무상
+박봉상
+박재생
+박동보
+박순정
+박봉석
+박덕권
+박제덕
+박 길
+박봉출
+박지조
+박경진
+박숙용
+박봉하
+박석희
+박영돌
+박영길
+박봉환
+박준준
+박정찬
+박정호
+박분선
+박종필
+박윤곤
+박삼환
+박분술
+박상두
+박영식
+박도주
+박분이
+박규훈
+박완학
+박봉식
+박삼동
+박규복
+박정식
+박우순
+박삼술
+박원성
+박만원
+박태산
+박삼암
+박오상
+박태호
+박영돌
+박삼조
+박증옥
+박상순
+박순식
+박삼조
+박희득
+박임권
+박재모
+박삼출
+박진재
+박영천
+박광희
+박삼헌
+박용원
+박동철
+박강봉
+박상구
+박성하
+박기복
+박난동
+박상규
+박규호
+박명환
+박효용
+박상규
+박문기
+박갑순
+박복수
+박상규
+박지이
+박경례
+박상식
+박상규
+박재호
+박영호
+박순임
+박상기
+박갑동
+박승남
+박영선
+박상길
+박장환
+박일수
+박순섭
+박상달
+박교주
+박관숙
+박해덕
+박상도
+박길하
+박호숙
+박일란
+박상록
+박기환
+박순식
+박을자
+박상률
+박수수
+박동원
+박광이
+박상만
+박학범
+박을동
+박 재
+박상범
+박경봉
+박태식
+박태교
+박상서
+박종자
+박재자
+박중수
+박상수
+박경호
+박헌진
+박재수
+박상순
+박성자
+박인수
+박현식
+박상술
+박규원
+박인식
+박 현
+박상식
+박병우
+박윤용
+박형옥
+박상식
+박은태
+박수호
+박 화
+박상연
+박인현
+박종구
+박장상
+박상열
+박평호
+박해현
+박순옥
+박상옥
+박병기
+박남진
+박봉년
+박상용
+박덕호
+박말훈
+박원전
+박상용
+박만돌
+박태주
+박명철
+박상욱
+박영철
+박상출
+박영근
+박상윤
+박수순
+박정상
+박태수
+박상태
+박용락
+박영수
+박일환
+박상태
+박은오
+박달수
+박쌍증
+박상현
+박용수
+박정자
+박동규
+박상호
+박진원
+박영조
+박판수
+박상홍
+박의수
+박태재
+박명모
+박상훈
+박범규
+박영교
+박재자
+박상희
+박덕수
+박효숙
+박종진
+박상희
+박수석
+박필호
+박태현
+박석규
+박영호
+박삼원
+박규석
+박석근
+박일수
+박상기
+박준덕
+박석동
+박두환
+박정현
+박규철
+박석식
+박칠하
+박인하
+박병동
+박석철
+박춘규
+박태희
+박동조
+박선영
+박상출
+박상희
+박병남
+박선옥
+박병식
+박덕구
+박남익
+박선진
+박연순
+박영연
+박상영
+박선호
+박상용
+박장록
+박창천
+박성곤
+박일수
+박태조
+박재애
+박성구
+박일원
+박정보
+박영원
+박성규
+박재세
+박영호
+박은원
+박성규
+박정문
+박윤철
+박규성
+박성규
+박상익
+박영영
+박종조
+박성기
+박기화
+박수덕
+박대균
+박성기
+박규준
+박우석
+박정연
+박성남
+박진임
+박소주
+박일록
+박성달
+박미호
+박 금
+박세열
+박성득
+박동욱
+박석택
+박선덕
+박성득
+박관분
+박필수
+박근청
+박성룡
+박 오
+박선순
+박동종
+박성배
+박종태
+박상배
+박재애
+박성배
+박석식
+박용휴
+박점연
+박성배
+박종회
+박만순
+박진동
+박성배
+박명대
+박광암
+박동길
+박성배
+박점태
+박윤용
+박황식
+박성범
+박창식
+박필우
+박정암
+박성봉
+박권철
+박인조
+박태권
+박성분
+박일희
+박재순
+박운상
+박성빈
+박상수
+박종주
+박점철
+박성순
+박명숙
+박홍희
+박미화
+박성순
+박인자
+박영흠
+박정임
+박성식
+박 학
+박사규
+박성훈
+박성실
+박성수
+박민식
+박타구
+박성양
+박옥태
+박필화
+박인술
+박성열
+박송근
+박일연
+박혁호
+박성열
+박옥순
+박상조
+박진실
+박성용
+박성작
+박인수
+박미교
+박성율
+박두열
+박황오
+박수봉
+박성일
+박봉환
+박석덕
+박금우
+박성철
+박흥차
+박갑석
+박종길
+박성한
+박정호
+박필수
+박규도
+박성현
+박기민
+박종봉
+박종열
+박성현
+박일임
+박일경
+박창수
+박성호
+박태석
+박태용
+박재기
+박성호
+박태균
+박혜석
+박무원
+박성환
+박재순
+박태순
+박영기
+박성희
+박호준
+박소용
+박규수
+박세학
+박영부
+박판열
+박만웅
+박세헌
+박태채
+박윤회
+박영규
+박소선
+박행철
+박충삼
+박식현
+박송견
+박영우
+박춘이
+박성현
+박송연
+박봉철
+박몽호
+박영우
+박수갑
+박인실
+박대수
+박강종
+박수걸
+박재수
+박진화
+박두헌
+박수경
+박성진
+박재식
+박규운
+박수규
+박선성
+박창란
+박병도
+박수명
+박상철
+박남성
+박선길
+박수목
+박태덕
+박삼길
+박정홍
+박수민
+박수도
+박헌열
+박성열
+박수복
+박진곤
+박차용
+박무리
+박수열
+박석순
+박병우
+박재선
+박수원
+박수식
+박영수
+박봉숙
+박수찬
+박 수
+박우연
+박학신
+박수천
+박애복
+박윤우
+박복빈
+박수학
+박재팔
+박종곤
+박홍길
+박수한
+박광용
+박종근
+박문인
+박수향
+박재환
+박병택
+박건재
+박수호
+박금자
+박정국
+박만출
+박수희
+박재수
+박영우
+박재열
+박숙현
+박성문
+박낙길
+박사휴
+박숙희
+박재철
+박태열
+박월모
+박순갑
+박성동
+박종석
+박해식
+박순관
+박판이
+박월이
+박강천
+박순금
+박철균
+박태식
+박종식
+박순길
+박주성
+박 웅
+박정웅
+박순남
+박순수
+박석식
+박도영
+박순덕
+박재조
+박하환
+박호원
+박순도
+박무수
+박상숙
+박영동
+박순돌
+박종배
+박석순
+박해길
+박순동
+박현수
+박규하
+박일택
+박순득
+박영인
+박성호
+박승재
+박순복
+박음진
+박용덕
+박차운
+박순석
+박상이
+박태열
+박인수
+박순암
+박진경
+박상수
+박영주
+박순옥
+박운윤
+박용란
+박광목
+박순옥
+박영현
+박용수
+박점우
+박순옥
+박찬자
+박광용
+박종종
+박순옥
+박중식
+박봉성
+박연명
+박순옥
+박소순
+박은훈
+박창갑
+박순옥
+박덕제
+박해태
+박오용
+박순임
+박성용
+박수헌
+박미대
+박순자
+박선호
+박안암
+박기점
+박순자
+박경현
+박종제
+박칠숙
+박순자
+박한순
+박외조
+박충원
+박순자
+박오규
+박진선
+박영순
+박순조
+박승연
+박철강
+박용천
+박순직
+박용목
+박창국
+박정태
+박순찬
+박홍술
+박진복
+박영욱
+박순천
+박 식
+박재식
+박용중
+박순호
+박효배
+박소기
+박일남
+박순희
+박광석
+박규우
+박기상
+박술헌
+박현식
+박권호
+박명분
+박승규
+박필수
+박직영
+박주한
+박승대
+박기태
+박순자
+박순일
+박승립
+박용호
+박성호
+박일한
+박승목
+박병찬
+박도만
+박수금
+박신웅
+박동석
+박동부
+박태현
+박신율
+박석영
+박대도
+박태숙
+박신제
+박순희
+박상균
+박영수
+박신지
+박경현
+박만주
+박종택
+박신하
+박선호
+박점일
+박명순
+박신회
+박상철
+박경암
+박말운
+박쌍술
+박종암
+박희숙
+박정복
+박암부
+박용길
+박종희
+박장조
+박양순
+박두윤
+박청식
+박칠중
+박양회
+박병조
+박만기
+박주호
+박언규
+박상만
+박재성
+박주룡
+박언숙
+박만수
+박홍락
+박금석
+박언업
+박남진
+박금상
+박용수
+박연수
+박운목
+박태성
+박만권
+박연순
+박병성
+박상오
+박점호
+박연심
+박영선
+박태덕
+박팔식
+박연용
+박조말
+박태도
+박상조
+박연차
+박재복
+박승훈
+박진란
+박연황
+박학호
+박명란
+박정기
+박연흠
+박선우
+박희순
+박정작
+박연희
+박은순
+박태명
+박정월
+박영규
+박종희
+박진윤
+박상진
+박영길
+박귀모
+박무욱
+박의진
+박영덕
+박장식
+박삼군
+박영웅
+박영득
+박필인
+박희식
+박정수
+박영란
+박신오
+박재걸
+박성선
+박영록
+박동원
+박기이
+박덕철
+박영봉
+박덕순
+박창도
+박병일
+박영선
+박동수
+박소용
+박학진
+박영선
+박춘열
+박보수
+박애경
+박영선
+박종휘
+박하기
+박진이
+박영섭
+박병연
+박점학
+박타규
+박영수
+박영악
+박영균
+박규호
+박영술
+박규규
+박준식
+박재수
+박영식
+박순수
+박종조
+박형진
+박영식
+박재자
+박만기
+박성선
+박영오
+박재호
+박중화
+박충식
+박영우
+박순범
+박광성
+박병현
+박영욱
+박동환
+박진태
+박영명
+박영이
+박경황
+박태훈
+박영윤
+박영일
+박규록
+박경봉
+박석수
+박영자
+박남호
+박순서
+박성관
+박영재
+박창식
+박문수
+박해석
+박영제
+박오재
+박하재
+박주규
+박영조
+박광원
+박봉태
+박기갑
+박영주
+박정옥
+박문훈
+박이영
+박영준
+박덕임
+박복구
+박삼수
+박영철
+박성환
+박재석
+박정악
+박영철
+박동문
+박시결
+박재원
+박영철
+박탁순
+박석경
+박운돌
+박영철
+박창석
+박말수
+박기태
+박영춘
+박재문
+박쾌환
+박청경
+박영출
+박수택
+박상녀
+박규병
+박영태
+박중용
+박재석
+박영조
+박영필
+박영봉
+박달수
+박원승
+박영하
+박동열
+박영복
+박순수
+박영화
+박진분
+박병자
+박만심
+박영화
+박정경
+박장희
+박중희
+박영화
+박상숙
+박중숙
+박광조
+박영환
+박남오
+박주옥
+박월주
+박영환
+박칠득
+박우복
+박만은
+박영휘
+박귀호
+박종수
+박봉련
+박오득
+박광옥
+박학태
+박종석
+박오순
+박명택
+박영수
+박학은
+박오주
+박춘호
+박승섭
+박춘호
+박옥균
+박정화
+박진승
+박영중
+박옥동
+박헌덕
+박영열
+박길순
+박옥수
+박수영
+박기근
+박재홍
+박옥순
+박연완
+박병덕
+박은래
+박옥순
+박재세
+박응순
+박복섭
+박옥이
+박우영
+박동태
+박영완
+박옥자
+박경규
+박경병
+박성영
+박옥태
+박소홍
+박동현
+박성혁
+박왕렬
+박종선
+박환하
+박우준
+박외수
+박형자
+박우기
+박만석
+박외환
+박상현
+박두국
+박용선
+박용관
+박동호
+박영환
+박종율
+박용구
+박판준
+박현호
+박정묵
+박용권
+박승덕
+박 화
+박재호
+박용근
+박유영
+박병희
+박달배
+박용근
+박명상
+박태택
+박복채
+박용대
+박수길
+박문목
+박광호
+박용도
+박만관
+박점완
+박쌍옥
+박용만
+박말도
+박숙희
+박창만
+박용보
+박영우
+박동구
+박희기
+박용석
+박기준
+박묘진
+박종순
+박용수
+박의희
+박용모
+박용관
+박용수
+박해준
+박상영
+박숙춘
+박용수
+박주한
+박기규
+박왕환
+박용순
+박춘식
+박창열
+박영만
+박용암
+박경기
+박상태
+박낙홍
+박용준
+박연식
+박태룡
+박준수
+박용준
+박상록
+박동열
+박영규
+박용철
+박영식
+박우수
+박재관
+박용철
+박병환
+박암봉
+박상연
+박용학
+박민연
+박영국
+박상연
+박용학
+박기순
+박영국
+박장석
+박용한
+박수남
+박종호
+박만성
+박용헌
+박태오
+박봉중
+박임렬
+박용헌
+박혜술
+박동보
+박원임
+박용현
+박두수
+박춘기
+박광웅
+박용호
+박태생
+박태희
+박상돌
+박용호
+박판암
+박용길
+박수일
+박우목
+박춘현
+박판일
+박하경
+박우미
+박경자
+박동근
+박상수
+박우식
+박장순
+박중식
+박장호
+박운환
+박성권
+박영환
+박경호
+박원구
+박종수
+박용조
+박광석
+박원석
+박종민
+박정석
+박광수
+박원석
+박영조
+박선이
+박명미
+박원여
+박경조
+박영갑
+박수중
+박원이
+박상호
+박진모
+박의근
+박원종
+박강탁
+박지현
+박익술
+박원종
+박기호
+박영기
+박성라
+박원태
+박상철
+박호규
+박용홍
+박원학
+박일희
+박만순
+박정향
+박원회
+박철조
+박문형
+박중채
+박월남
+박영원
+박윤식
+박권학
+박월선
+박종태
+박정식
+박문순
+박월수
+박재식
+박경진
+박영열
+박위순
+박효영
+박운필
+박세동
+박위한
+박일규
+박용배
+박현식
+박유덕
+박 륜
+박인순
+박옥포
+박윤도
+박환기
+박기선
+박성주
+박윤락
+박일희
+박종수
+박현식
+박윤목
+박소순
+박복택
+박상선
+박윤수
+박재기
+박남정
+박태조
+박윤옥
+박진용
+박희진
+박성은
+박윤정
+박현준
+박동용
+박숙길
+박윤정
+박상선
+박금갑
+박영연
+박윤정
+박상노
+박재태
+박달주
+박윤준
+박효진
+박진암
+박진순
+박윤헌
+박원현
+박병문
+박태순
+박윤현
+박대호
+박채연
+박말선
+박윤환
+박노권
+박태균
+박정수
+박은경
+박말길
+박윤이
+박병돈
+박은교
+박영순
+박판철
+박한성
+박은동
+박선환
+박안주
+박순현
+박은수
+박순문
+박필순
+박달한
+박은수
+박태권
+박수길
+박한찬
+박은수
+박헌흔
+박용식
+박충준
+박은주
+박세순
+박태조
+박영국
+박은찬
+박분례
+박순동
+박해현
+박을선
+박정호
+박금순
+박광희
+박응모
+박원곤
+박인만
+박춘열
+박의인
+박옥부
+박부규
+박정일
+박이규
+박영극
+박재순
+박수조
+박이상
+박미남
+박판춘
+박기자
+박이술
+박성식
+박도태
+박공수
+박이형
+박태근
+박충술
+박윤혁
+박이호
+박효수
+박화조
+박수숙
+박이환
+박기철
+박근식
+박세태
+박익규
+박해수
+박상열
+박재채
+박인권
+박명수
+박주보
+박태식
+박인배
+박정수
+박계순
+박준희
+박인숙
+박정근
+박영남
+박천호
+박인순
+박수용
+박철택
+박양돌
+박인술
+박맹수
+박영애
+박상현
+박인식
+박원덕
+박수원
+박성택
+박인자
+박홍오
+박인달
+박호영
+박인철
+박수이
+박갑식
+박장우
+박인표
+박해진
+박도용
+박진원
+박인헌
+박병기
+박순조
+박해호
+박일권
+박연종
+박명순
+박대우
+박일권
+박매병
+박재용
+박창곤
+박일규
+박종치
+박우선
+박상교
+박일규
+박대만
+박인술
+박정규
+박일동
+박인배
+박우원
+박진석
+박일동
+박상배
+박천문
+박갑술
+박일명
+박해조
+박순철
+박주균
+박일병
+박점배
+박대만
+박충성
+박일봉
+박 남
+박정술
+박윤철
+박일석
+박민복
+박종장
+박옥주
+박일선
+박성조
+박상칠
+박성정
+박일용
+박진봉
+박종범
+박태덕
+박일헌
+박정석
+박관종
+박오돌
+박일호
+박진종
+박종희
+박진식
+박일화
+박병만
+박순호
+박해철
+박임극
+박경선
+박타수
+박대운
+박임원
+박부용
+박일범
+박상강
+박자동
+박도석
+박금성
+박지권
+박장길
+박장조
+박성화
+박태덕
+박장명
+박병석
+박상홍
+박준호
+박장출
+박봉선
+박수술
+박충원
+박장회
+박노학
+박경식
+박태현
+박장흠
+박의종
+박만흠
+박명자
+박재갑
+박주도
+박안헌
+박상재
+박재갑
+박욱현
+박판영
+박보흠
+박재경
+박재수
+박명경
+박무경
+박재경
+박금순
+박정완
+박종식
+박재경
+박득식
+박곡수
+박갑근
+박재곤
+박윤용
+박준열
+박성열
+박재관
+박정도
+박소청
+박병주
+박재권
+박영환
+박명규
+박우은
+박재규
+박경인
+박상주
+박재봉
+박재규
+박현조
+박천득
+박종영
+박재규
+박양호
+박동원
+박석규
+박재규
+박경호
+박준권
+박봉자
+박재규
+박일일
+박수연
+박길조
+박재근
+박증윤
+박헌식
+박용진
+박재근
+박규향
+박성현
+박수하
+박재금
+박동석
+박춘환
+박태생
+박재기
+박재수
+박충철
+박영근
+박재기
+박영현
+박성수
+박용갑
+박재기
+박은희
+박성석
+박종길
+박재노
+박영주
+박영호
+박희규
+박재동
+박계조
+박기화
+박태수
+박재두
+박영문
+박문막
+박귀호
+박재란
+박의구
+박옥자
+박선학
+박재리
+박언환
+박혜환
+박순섭
+박재림
+박성도
+박태태
+박승태
+박재만
+박정재
+박재지
+박순기
+박재명
+박소동
+박준건
+박락조
+박재복
+박판순
+박기묵
+박정진
+박재분
+박인재
+박윤희
+박종남
+박재상
+박삼식
+박상훈
+박휘환
+박재선
+박성자
+박노준
+박대기
+박재열
+박희래
+박재암
+박해영
+박재영
+박인조
+박용규
+박홍훈
+박재옥
+박운섭
+박건순
+박진모
+박재옥
+박귀현
+박철복
+박덕록
+박재완
+박동주
+박석희
+박태채
+박재완
+박영영
+박상갑
+박봉이
+박재용
+박강협
+박차건
+박병주
+박재운
+박성석
+박기근
+박미출
+박재원
+박권동
+박상례
+박명근
+박재원
+박태연
+박해상
+박외식
+박재윤
+박헌규
+박규웅
+박무상
+박재일
+박태현
+박홍길
+박호식
+박재일
+박종자
+박태기
+박필철
+박재진
+박항주
+박점식
+박기걸
+박재진
+박수희
+박재봉
+박봉식
+박재철
+박상주
+박인식
+박재복
+박재출
+박양태
+박상휴
+박의현
+박재학
+박원도
+박상일
+박홍현
+박재항
+박영원
+박우학
+박덕영
+박재현
+박기영
+박동중
+박태희
+박재현
+박진권
+박정문
+박용배
+박재현
+박문강
+박윤기
+박병연
+박재호
+박인원
+박병조
+박일현
+박재호
+박종삼
+박의해
+박재태
+박재호
+박우숙
+박규선
+박진대
+박재홍
+박말호
+박상석
+박귀배
+박재홍
+박태수
+박태복
+박진웅
+박재홍
+박두호
+박성호
+박영봉
+박재홍
+박술환
+박태영
+박기득
+박재환
+박철웅
+박재식
+박경로
+박재환
+박중운
+박창휴
+박진장
+박재환
+박용자
+박명원
+박은지
+박재환
+박중근
+박태철
+박우덕
+박재훈
+박우기
+박종환
+박영상
+박점동
+박석선
+박옥홍
+박정현
+박점보
+박창동
+박창완
+박구택
+박점수
+박점이
+박석수
+박억윤
+박점순
+박덕묵
+박창회
+박명현
+박점술
+박종덕
+박진선
+박형화
+박점술
+박화식
+박영명
+박광주
+박점식
+박병환
+박만호
+박차언
+박점용
+박두조
+박윤호
+박계재
+박점이
+박헌환
+박만조
+박헌숙
+박정국
+박준수
+박동규
+박을영
+박정규
+박우기
+박승문
+박경화
+박정기
+박부덕
+박명상
+박상숙
+박정기
+박묘원
+박영경
+박상경
+박정남
+박상현
+박영춘
+박재돌
+박정덕
+박종자
+박금열
+박영호
+박정덕
+박종남
+박재길
+박복수
+박정도
+박경수
+박성옥
+박연순
+박정도
+박동호
+박남기
+박태수
+박정동
+박학목
+박순분
+박인식
+박정득
+박선식
+박영자
+박순학
+박정례
+박삼호
+박태옥
+박주언
+박정배
+박대호
+박성헌
+박범재
+박정봉
+박광구
+박미수
+박문수
+박정부
+박재자
+박영선
+박수애
+박정성
+박희호
+박복문
+박영희
+박정수
+박동석
+박종배
+박병숙
+박정수
+박춘연
+박도규
+박선배
+박정수
+박성출
+박석식
+박월길
+박정수
+박승남
+박소원
+박수수
+박정수
+박기선
+박임익
+박상승
+박정수
+박용덕
+박용찬
+박석복
+박정순
+박관일
+박두조
+박임덕
+박정순
+박대남
+박재철
+박순식
+박정식
+박기일
+박월하
+박수하
+박정식
+박병우
+박금관
+박정곤
+박정실
+박상선
+박종원
+박병대
+박정애
+박국남
+박창길
+박병용
+박정연
+박필현
+박영중
+박재웅
+박정열
+박승순
+박영례
+박종호
+박정오
+박헌웅
+박인도
+박태돌
+박정용
+박영석
+박일용
+박주현
+박정용
+박춘철
+박득조
+박학규
+박정운
+박상출
+박석기
+박원춘
+박정운
+박낙학
+박주웅
+박병석
+박정일
+박겸갑
+박종동
+박양노
+박정임
+박동수
+박관수
+박경현
+박정자
+박상화
+박동수
+박천진
+박정자
+박욱순
+박 춘
+박사현
+박정자
+박기호
+박외석
+박윤조
+박정철
+박점하
+박수동
+박성식
+박정출
+박영학
+박선태
+박순출
+박정하
+박동욱
+박승희
+박혜조
+박정하
+박주기
+박석현
+박광록
+박정학
+박재석
+박영윤
+박주순
+박정한
+박노천
+박시대
+박영수
+박정향
+박 상
+박정현
+박병만
+박정헌
+박정만
+박희용
+박용호
+박정호
+박기근
+박영균
+박세식
+박정화
+박현이
+박한호
+박분진
+박정희
+박기렬
+박도식
+박상창
+박정희
+박향희
+박명호
+박판아
+박정희
+박해중
+박충옥
+박계술
+박제남
+박희환
+박오근
+박왕석
+박조이
+박이조
+박남득
+박임복
+박조이
+박용범
+박경환
+박진석
+박종걸
+박선수
+박보순
+박광봉
+박종국
+박주가
+박인도
+박광진
+박종권
+박태봉
+박난숙
+박상목
+박종규
+박계흥
+박상기
+박대용
+박종규
+박선화
+박세제
+박선열
+박종근
+박동식
+박기희
+박정호
+박종근
+박경철
+박연훈
+박종연
+박종근
+박병영
+박재배
+박정자
+박종기
+박대근
+박황호
+박정점
+박종길
+박남기
+박기숙
+박춘분
+박종달
+박재정
+박진출
+박맹수
+박종대
+박영경
+박종숙
+박계석
+박종득
+박용순
+박봉이
+박헌수
+박종락
+박희권
+박병율
+박경덕
+박종래
+박재노
+박재성
+박병섭
+박종민
+박태윤
+박환권
+박혜구
+박종민
+박원훈
+박옥현
+박상출
+박종복
+박경조
+박성영
+박병호
+박종상
+박영섭
+박용우
+박삼학
+박종석
+박용성
+박성래
+박재관
+박종석
+박 중
+박홍아
+박주근
+박종섭
+박병도
+박제선
+박경근
+박종섭
+박성조
+박삼수
+박재영
+박종수
+박동하
+박주봉
+박상규
+박종수
+박길화
+박정식
+박정순
+박종수
+박현정
+박도관
+박수희
+박종숙
+박진선
+박외포
+박병민
+박종순
+박해권
+박주수
+박동기
+박종순
+박영태
+박수섭
+박대찬
+박종술
+박해열
+박중우
+박용향
+박종식
+박복수
+박남용
+박태배
+박종식
+박건호
+박창우
+박쌍도
+박종식
+박정곤
+박병순
+박윤기
+박종식
+박영경
+박명삼
+박주식
+박종열
+박연술
+박희원
+박종호
+박종열
+박말환
+박덕조
+박태해
+박종영
+박종호
+박정임
+박관균
+박종오
+박순건
+박태철
+박창록
+박종오
+박광현
+박주열
+박희환
+박종옥
+박병철
+박용수
+박소석
+박종우
+박극관
+박민원
+박정수
+박종욱
+박근승
+박봉숙
+박수석
+박종원
+박사권
+박일출
+박판배
+박종원
+박문호
+박용기
+박금식
+박종율
+박삼성
+박봉락
+박미부
+박종인
+박성옥
+박재식
+박정기
+박종주
+박수학
+박종도
+박규복
+박종진
+박점환
+박일옥
+박득례
+박종진
+박판정
+박운용
+박남운
+박종철
+박상호
+박수균
+박상조
+박종한
+박규식
+박병희
+박성석
+박종호
+박명환
+박만수
+박상태
+박종호
+박성규
+박순식
+박계곤
+박종호
+박재용
+박상준
+박승원
+박종호
+박영규
+박복술
+박병채
+박종호
+박종석
+박희인
+박부임
+박종화
+박성현
+박길규
+박용성
+박종화
+박창만
+박병기
+박종준
+박종훈
+박임현
+박주호
+박판곤
+박종훈
+박병윤
+박동준
+박장기
+박종휘
+박경순
+박찬부
+박일수
+박종희
+박보영
+박칠주
+박영조
+박주관
+박덕호
+박상애
+박태애
+박주국
+박종순
+박도환
+박호복
+박주노
+박상석
+박상철
+박성도
+박주도
+박호수
+박기생
+박해영
+박주돌
+박신기
+박기걸
+박재식
+박주말
+박해운
+박창수
+박태일
+박주복
+박선연
+박제포
+박재학
+박주석
+박현숙
+박수택
+박규택
+박주성
+박계리
+박달기
+박만치
+박주수
+박복갑
+박용환
+박소호
+박주양
+박태용
+박정복
+박용길
+박주오
+박판조
+박귀만
+박성래
+박주완
+박호옥
+박희배
+박경로
+박주우
+박상곤
+박환련
+박상수
+박주원
+박승준
+박승선
+박정덕
+박주탁
+박효옥
+박윤섭
+박 근
+박주태
+박성도
+박영선
+박윤환
+박주택
+박영명
+박영규
+박상복
+박주팔
+박면돌
+박정연
+박영인
+박주해
+박병현
+박명수
+박미달
+박주현
+박주오
+박정만
+박성숙
+박주환
+박순화
+박용임
+박용조
+박준규
+박재연
+박병백
+박동한
+박준무
+박재석
+박달석
+박석형
+박준배
+박대식
+박해호
+박홍준
+박준석
+박성규
+박주호
+박수곤
+박준열
+박귀량
+박태언
+박재복
+박준용
+박석근
+박차술
+박두재
+박준태
+박양하
+박중수
+박옥석
+박준호
+박은년
+박학순
+박진주
+박준호
+박도시
+박순차
+박만경
+박중건
+박진식
+박갑훈
+박상식
+박중규
+박석립
+박용수
+박효수
+박중채
+박상우
+박성기
+박재선
+박지섭
+박연균
+박수암
+박병전
+박지수
+박상수
+박종호
+박선덕
+박지술
+박병수
+박중우
+박영옥
+박지옥
+박병유
+박영진
+박용조
+박지용
+박춘호
+박영천
+박근소
+박지용
+박종식
+박대섭
+박소식
+박지주
+박진식
+박영근
+박호영
+박지한
+박재환
+박춘선
+박삼주
+박지혁
+박윤주
+박길성
+박정자
+박지호
+박우길
+박익수
+박태출
+박지환
+박점도
+박정회
+박진숙
+박지훈
+박종철
+박규수
+박갑우
+박진규
+박성자
+박원헌
+박부곤
+박진규
+박수환
+박병식
+박재수
+박진부
+박길현
+박종탁
+박현자
+박진성
+박덕석
+박상식
+박인배
+박진성
+박무태
+박상웅
+박경환
+박진우
+박재종
+박병선
+박영용
+박진우
+박삼성
+박균명
+박동희
+박진철
+박수호
+박수화
+박병수
+박진헌
+박숙진
+박정자
+박찬열
+박진호
+박쌍태
+박연률
+박태호
+박진화
+박재운
+박상주
+박행윤
+박진환
+박성환
+박대남
+박기태
+박차근
+박묘곤
+박경이
+박상수
+박차만
+박정옥
+박숙동
+박정규
+박차봉
+박철승
+박재옥
+박범석
+박차수
+박현식
+박영선
+박주주
+박차임
+박원연
+박영식
+박해곤
+박차헌
+박선순
+박창환
+박용민
+박찬규
+박태관
+박정출
+박이희
+박찬동
+박쌍복
+박용숙
+박덕학
+박찬부
+박장우
+박재호
+박학국
+박찬수
+박종수
+박재동
+박상선
+박찬현
+박정수
+박석호
+박근봉
+박찬호
+박익영
+박창출
+박성관
+박찬호
+박희숙
+박순식
+박태희
+박찬훈
+박기판
+박강단
+박일석
+박창갑
+박진태
+박태식
+박정윤
+박창규
+박월흠
+박성식
+박용성
+박창규
+박종식
+박순고
+박봉만
+박창균
+박석열
+박재환
+박분성
+박창대
+박학영
+박태택
+박한건
+박창수
+박래수
+박경희
+박무환
+박창수
+박상학
+박인호
+박장택
+박창순
+박동수
+박원길
+박정계
+박창식
+박영주
+박순호
+박재재
+박창현
+박정준
+박성은
+박재자
+박창호
+박용욱
+박원환
+박순현
+박창호
+박동수
+박화규
+박성근
+박창호
+박준환
+박점순
+박판만
+박창호
+박상연
+박석순
+박종호
+박창환
+박정숙
+박옥선
+박영기
+박천덕
+박근기
+박기수
+박연훈
+박천섭
+박해철
+박왕하
+박사화
+박천수
+박영철
+박동향
+박중진
+박천후
+박성훈
+박삼윤
+박갑규
+박철규
+박한광
+박영배
+박은철
+박철규
+박범랑
+박상훈
+박효환
+박철수
+박재기
+박정우
+박영복
+박철우
+박주희
+박영훈
+박동수
+박철호
+박중태
+박태곤
+박미자
+박철호
+박규규
+박대훈
+박재진
+박철회
+박재홍
+박경섭
+박광숙
+박청이
+박권수
+박만상
+박복병
+박청회
+박종기
+박시문
+박증순
+박춘
+박병
+박순
+박두
+박춘경
+박점모
+박정란
+박소황
+박춘광
+박익준
+박정생
+박칠용
+박춘길
+박승서
+박덕수
+박영도
+박춘복
+박순영
+박성환
+박상만
+박춘선
+박무옥
+박노우
+박범근
+박춘수
+박덕명
+박대천
+박춘준
+박춘수
+박해훈
+박흥호
+박현미
+박춘식
+박중래
+박호섭
+박기계
+박춘영
+박석숙
+박종천
+박학환
+박춘영
+박진현
+박정선
+박병동
+박춘영
+박태호
+박상원
+박명경
+박춘일
+박상곤
+박상호
+박삼희
+박춘호
+박경도
+박용환
+박태재
+박춘화
+박태수
+박판용
+박기실
+박춘희
+박금운
+박쌍도
+박두철
+박충흠
+박성우
+박미균
+박중식
+박치숙
+박종선
+박순광
+박천수
+박칠문
+박창원
+박평무
+박경흠
+박칠용
+박만수
+박석수
+박한주
+박태경
+박병달
+박충용
+박재익
+박태곤
+박병돌
+박경찬
+박인양
+박태규
+박기순
+박종규
+박동연
+박태규
+박성희
+박 오
+박덕희
+박태규
+박병운
+박임연
+박복만
+박태균
+박광수
+박병근
+박을인
+박태근
+박소희
+박진목
+박재순
+박태근
+박정규
+박용진
+박대화
+박태동
+박용옥
+박진구
+박상자
+박태득
+박정암
+박재윤
+박종식
+박태림
+박충태
+박시호
+박봉분
+박태문
+박수조
+박승주
+박암선
+박태범
+박영미
+박희훈
+박상일
+박태봉
+박용래
+박종근
+박영근
+박태봉
+박명택
+박태철
+박진수
+박태상
+박찬부
+박금식
+박양순
+박태석
+박필수
+박성규
+박남환
+박태선
+박호식
+박해성
+박수호
+박태섭
+박재규
+박쾌선
+박낙출
+박태성
+박양태
+박재빈
+박원식
+박태성
+박상보
+박태식
+박영관
+박태수
+박상국
+박운근
+박영기
+박태수
+박봉택
+박건윤
+박우택
+박태순
+박환택
+박근수
+박상순
+박태식
+박영근
+박은용
+박일진
+박태식
+박종연
+박양재
+박학희
+박태암
+박우오
+박병복
+박소열
+박태연
+박풍이
+박만명
+박숙근
+박태영
+박시복
+박동술
+박경복
+박태영
+박원근
+박광련
+박정영
+박태완
+박성옥
+박규열
+박헌자
+박태용
+박영순
+박정채
+박명태
+박태우
+박광수
+박광경
+박규섭
+박태원
+박용영
+박차수
+박갑조
+박태윤
+박학식
+박대길
+박태택
+박태일
+박무식
+박영만
+박준수
+박태정
+박삼순
+박수현
+박희임
+박태주
+박상호
+박용형
+박성선
+박태주
+박정경
+박길순
+박효환
+박태철
+박영이
+박월호
+박진수
+박태학
+박정술
+박남진
+박혜조
+박태헌
+박정문
+박해국
+박연순
+박태현
+박동수
+박수영
+박을현
+박태형
+박석호
+박병근
+박무선
+박태호
+박기기
+박경섭
+박용수
+박태호
+박익봉
+박종조
+박진기
+박태호
+박임록
+박종춘
+박차현
+박태홍
+박헌태
+박병진
+박재선
+박태화
+박남금
+박영정
+박길훈
+박태환
+박종주
+박주우
+박송철
+박태회
+박정순
+박동권
+박주영
+박태훈
+박재숙
+박영상
+박설길
+박판고
+박정권
+박순숙
+박효근
+박판근
+박명식
+박종대
+박욱동
+박판덕
+박태만
+박영호
+박옥이
+박판도
+박종수
+박수수
+박종식
+박판석
+박연권
+박삼호
+박정익
+박판출
+박성랑
+박기호
+박성식
+박판헌
+박영주
+박보고
+박수석
+박팔수
+박종수
+박구택
+박문주
+박풍언
+박화연
+박수규
+박희준
+박하경
+박무식
+박희란
+박경이
+박학서
+박태용
+박동봉
+박윤우
+박한규
+박묘원
+박철은
+박신석
+박한기
+박철식
+박태식
+박근배
+박한수
+박부근
+박병규
+박정호
+박한조
+박재환
+박선갑
+박장삼
+박항치
+박달순
+박성용
+박채옥
+박해규
+박효옥
+박수기
+박용훈
+박해도
+박춘강
+박석식
+박성호
+박해도
+박태식
+박희기
+박춘노
+박해동
+박봉현
+박광기
+박순기
+박해동
+박신규
+박연연
+박정왕
+박해동
+박정삼
+박정환
+박인석
+박해룡
+박길섭
+박성순
+박귀봉
+박해룡
+박병수
+박성상
+박수구
+박해붕
+박분영
+박상선
+박유연
+박해석
+박자순
+박구자
+박봉수
+박해성
+박규수
+박후연
+박영수
+박해자
+박정구
+박기재
+박영동
+박해조
+박도숙
+박상이
+박상용
+박향연
+박면기
+박삼환
+박동용
+박헌규
+박성회
+박태운
+박정길
+박헌덕
+박순수
+박명삼
+박병한
+박헌원
+박점선
+박근남
+박창천
+박현민
+박갑봉
+박영택
+박상조
+박현섭
+박재선
+박병식
+박양수
+박현섭
+박금선
+박성수
+박기홍
+박현수
+박인순
+박갑환
+박현갑
+박현수
+박회진
+박광련
+박옥도
+박현수
+박인도
+박기열
+박학기
+박현숙
+박태영
+박복우
+박승도
+박현신
+박봉홍
+박영웅
+박승열
+박현업
+박기헌
+박은자
+박영순
+박현우
+박규계
+박홍규
+박종호
+박현주
+박태강
+박중근
+박진수
+박현채
+박일영
+박수규
+박계제
+박현태
+박순성
+박재탁
+박동열
+박현환
+박영기
+박병동
+박동분
+박형래
+박해원
+박차옥
+박기향
+박형서
+박영희
+박영조
+박원홍
+박형재
+박형자
+박병해
+박희영
+박혜자
+박봉순
+박철숙
+박분용
+박호규
+박옥구
+박상문
+박삼순
+박호근
+박영율
+박종섭
+박영구
+박호동
+박갑영
+박규조
+박정태
+박호봉
+박상환
+박종식
+박태암
+박호석
+박한식
+박성갑
+박효남
+박호정
+박창암
+박동종
+박명선
+박호진
+박옥주
+박재수
+박덕철
+박호춘
+박경만
+박장이
+박상원
+박홍근
+박동수
+박찬기
+박달태
+박홍길
+박경영
+박용필
+박화순
+박홍동
+박귀선
+박위철
+박순우
+박홍묵
+박소미
+박영익
+박복규
+박홍빈
+박인준
+박태균
+박삼선
+박환열
+박성환
+박광구
+박성재
+박환이
+박영숙
+박미헌
+박명야
+박황경
+박무우
+박택호
+박용윤
+박회근
+박춘택
+박선금
+박구길
+박효규
+박상술
+박말호
+박대식
+박효종
+박덕례
+박진상
+박병규
+박휘삼
+박진옥
+박옥원
+박상순
+박희동
+박수동
+박순섭
+박영호
+박희복
+박갑난
+박영현
+박일헌
+박희상
+박홍도
+박재현
+박시제
+박희석
+박병성
+박광식
+박종재
+박희성
+박성련
+박정문
+박재세
+박희성
+박광금
+박대돌
+박봉환
+박희송
+박선범
+박량철
+박재국
+박희연
+박민덕
+박두호
+박성동
+박희열
+박동석
+박태재
+박경철
+박희장
+박종란
+박옥권
+박덕치
+박희진
+박수규
+박성걸
+박상상
+박희채
+박갑원
+박종갑
+박기근
+박희철
+박성래
+박성복
+박겸환
+박희철
+박 봉
+박재현
+박종화
+박희태
+박창남
+박길기
+박대용
+방 길
+방일형
+방태제
+방용업
+방경조
+방돈수
+방옥중
+방자섭
+방길정
+방시현
+방건해
+방승화
+방덕준
+방옥이
+방수용
+방태조
+방미정
+방인화
+방인식
+방순호
+방병섭
+방종영
+방병정
+방옥수
+방상곤
+방영식
+방경환
+방오연
+방승규
+방재수
+방상원
+방상운
+방신선
+방선자
+방갑도
+방상구
+방영균
+방임순
+방상우
+방병수
+방영대
+방호창
+방종택
+방재순
+방영익
+방낙묘
+방정연
+방노호
+방옥금
+방영관
+방대술
+방영도
+방원제
+방승재
+방현헌
+방한성
+방윤선
+방상노
+방광출
+방을덕
+방윤조
+방칠선
+방항자
+방점희
+방점순
+방상웅
+방중애
+방병언
+방점연
+방정인
+방성웅
+방주규
+방정순
+방기자
+방우수
+방상선
+방종기
+방기남
+방주열
+방재순
+방주남
+방판구
+방차하
+방도우
+방태훈
+방상수
+방영수
+방경석
+방한정
+방무봉
+방지동
+방부일
+방한정
+방억선
+방응실
+방말완
+배 용
+배성호
+배석오
+배태준
+배갑덕
+배윤호
+배병분
+배병현
+배갑석
+배석조
+배종규
+배종훈
+배경륜
+배종출
+배옥순
+배종규
+배경병
+배상이
+배용학
+배용주
+배경열
+배해철
+배수준
+배강순
+배경호
+배현영
+배정이
+배태한
+배계술
+배종자
+배세수
+배영복
+배관호
+배원만
+배윤주
+배기구
+배광수
+배재택
+배일분
+배성학
+배교문
+배헌수
+배윤근
+배만식
+배국리
+배미배
+배영환
+배수우
+배권식
+배재암
+배태호
+배정호
+배권향
+배성고
+배종헌
+배상덕
+배귀선
+배길영
+배영덕
+배영수
+배규환
+배호식
+배해찬
+배용섭
+배근옥
+배영상
+배영순
+배호근
+배근호
+배하원
+배문섭
+배종호
+배금순
+배세웅
+배영점
+배명희
+배금악
+배한선
+배은개
+배영득
+배기봉
+배태기
+배진범
+배성주
+배기분
+배헌지
+배재수
+배해욱
+배기서
+배기순
+배상규
+배준철
+배기효
+배영태
+배학기
+배분환
+배길환
+배홍상
+배이준
+배승용
+배낙포
+배정현
+배성화
+배병동
+배남조
+배명석
+배근이
+배헌미
+배남희
+배병길
+배광철
+배을근
+배달권
+배사기
+배지재
+배순옥
+배대식
+배영기
+배경식
+배용술
+배대호
+배성숙
+배원순
+배종웅
+배덕문
+배영성
+배영용
+배종열
+배덕문
+배윤태
+배수국
+배재수
+배덕석
+배종배
+배진이
+배중기
+배덕수
+배복흠
+배자갑
+배영용
+배덕재
+배근환
+배종석
+배기자
+배도연
+배상환
+배동석
+배영종
+배도연
+배수규
+배말연
+배분일
+배동수
+배병자
+배태현
+배일곤
+배동언
+배정자
+배흥희
+배순삼
+배동훈
+배기상
+배용철
+배재행
+배만권
+배상철
+배의익
+배재일
+배만식
+배춘이
+배순춘
+배영래
+배만실
+배남용
+배원철
+배태일
+배만영
+배무연
+배수근
+배윤철
+배만현
+배기홍
+배미덕
+배홍자
+배말만
+배혜무
+배정희
+배갑호
+배말만
+배병련
+배순용
+배성태
+배말식
+배석택
+배기규
+배현수
+배무길
+배영윤
+배계숙
+배영우
+배무성
+배칠근
+배세섭
+배기수
+배무흠
+배한순
+배해보
+배윤현
+배문자
+배진희
+배경춘
+배순동
+배문호
+배재덕
+배영수
+배재환
+배문휴
+배성하
+배화숙
+배선기
+배범용
+배동수
+배문관
+배현식
+배병국
+배기혜
+배헌희
+배창남
+배병원
+배병식
+배면열
+배영술
+배병제
+배정희
+배금문
+배옥출
+배병하
+배계규
+배영옥
+배외옥
+배병해
+배은도
+배복웅
+배혜운
+배보근
+배석조
+배경연
+배상근
+배복순
+배성조
+배영창
+배희룡
+배봉금
+배말진
+배중술
+배민학
+배봉석
+배오욱
+배필진
+배문호
+배봉용
+배승흠
+배진섭
+배영한
+배봉조
+배복한
+배충성
+배성오
+배봉현
+배재선
+배진월
+배무애
+배봉호
+배재욱
+배만종
+배천표
+배분란
+배종원
+배해식
+배대관
+배분주
+배영화
+배미덕
+배종자
+배삼식
+배영식
+배동욱
+배임기
+배삼환
+배규식
+배갑지
+배재덕
+배상권
+배행수
+배춘옥
+배순득
+배상규
+배길식
+배남조
+배한철
+배상길
+배중래
+배형우
+배소홍
+배상길
+배재연
+배동식
+배흥결
+배상길
+배병구
+배강래
+배태근
+배상대
+배병연
+배준태
+배학길
+배상모
+배만화
+배진호
+배운구
+배상봉
+배차철
+배성용
+배재호
+배상봉
+배미조
+배수송
+배기식
+배상술
+배성식
+배점성
+배남연
+배상열
+배주암
+배수회
+배명옥
+배상용
+배기일
+배분부
+배재한
+배상일
+배규균
+배상수
+배종수
+배상종
+배 천
+배경득
+배기선
+배상창
+배채우
+배갑석
+배상태
+배상한
+배정태
+배상래
+배현순
+배상현
+배주순
+배선목
+배부길
+배상현
+배상수
+배재경
+배종동
+배상호
+배애자
+배재숙
+배애환
+배상훈
+배판운
+배오학
+배주호
+배상희
+배오조
+배길윤
+배응수
+배석문
+배귀성
+배기식
+배종도
+배석암
+배중철
+배태숙
+배원우
+배석출
+배경완
+배성태
+배은일
+배선용
+배난석
+배철원
+배영준
+배선정
+배동순
+배미호
+배인요
+배선호
+배일식
+배질환
+배청영
+배성록
+배황남
+배창곤
+배성군
+배성범
+배학숙
+배용화
+배수규
+배성우
+배종수
+배갑경
+배운우
+배성욱
+배광석
+배항한
+배미건
+배성조
+배기암
+배덕호
+배만빈
+배성태
+배홍관
+배철자
+배귀조
+배성한
+배복준
+배동애
+배유식
+배성혜
+배용현
+배강숙
+배덕복
+배세열
+배성구
+배경택
+배영국
+배소복
+배승원
+배경배
+배경석
+배소순
+배병영
+배창희
+배준섭
+배수광
+배 종
+배판석
+배병성
+배수규
+배순화
+배외상
+배기갑
+배수자
+배영정
+배태용
+배동도
+배수정
+배한수
+배술준
+배명용
+배수현
+배수호
+배흥정
+배재순
+배수호
+배남문
+배난희
+배광모
+배숙환
+배순수
+배영수
+배명도
+배순덕
+배제암
+배나환
+배성호
+배순석
+배순규
+배현호
+배종학
+배순연
+배말종
+배진외
+배남용
+배순옥
+배해호
+배영식
+배상선
+배순태
+배수출
+배정운
+배영규
+배순흠
+배차영
+배선호
+배근주
+배술홍
+배상갑
+배병근
+배홍술
+배신국
+배을진
+배상희
+배교선
+배신호
+배종환
+배성호
+배양대
+배쌍식
+배광용
+배민호
+배삼란
+배암이
+배달조
+배종선
+배보태
+배영기
+배해기
+배유주
+배상현
+배영기
+배종기
+배병선
+배연순
+배영길
+배재홍
+배명치
+배래현
+배영대
+배교수
+배행식
+배병호
+배영도
+배석상
+배두기
+배귀우
+배영문
+배증석
+배봉연
+배병우
+배영문
+배임주
+배기원
+배태화
+배영백
+배기치
+배용순
+배제수
+배영석
+배수동
+배상현
+배희자
+배영섭
+배성진
+배상주
+배수권
+배영수
+배칠희
+배윤춘
+배영국
+배영식
+배영환
+배광택
+배광식
+배영실
+배윤래
+배병동
+배용숙
+배영옥
+배전교
+배학희
+배태순
+배영원
+배을덕
+배광운
+배제동
+배영율
+배 자
+배재효
+배동남
+배영조
+배선국
+배희옥
+배용식
+배영조
+배종정
+배영기
+배순동
+배영준
+배동만
+배용태
+배창복
+배영태
+배달환
+배정호
+배영희
+배영필
+배상술
+배창자
+배상대
+배영호
+배춘자
+배성룡
+배윤현
+배영호
+배백찬
+배무곤
+배영성
+배영환
+배갑식
+배정구
+배덕태
+배옥순
+배창량
+배정길
+배무수
+배옥자
+배대현
+배선영
+배현수
+배옥종
+배정윤
+배형순
+배해식
+배용기
+배효빈
+배점주
+배진수
+배용득
+배금수
+배오근
+배한성
+배용순
+배명선
+배판금
+배대범
+배용술
+배정오
+배상원
+배순환
+배용식
+배용현
+배계성
+배사호
+배용식
+배대일
+배선갑
+배한만
+배용암
+배도록
+배의순
+배판주
+배용진
+배수희
+배경익
+배동성
+배용택
+배병순
+배지재
+배한금
+배용헌
+배은희
+배교정
+배찬철
+배용호
+배천영
+배실수
+배정수
+배우원
+배덕수
+배성선
+배진수
+배욱기
+배일점
+배한지
+배소태
+배원분
+배소기
+배숙조
+배춘수
+배원석
+배호성
+배창균
+배쌍현
+배원표
+배찬조
+배수준
+배선임
+배원호
+배인우
+배작식
+배종수
+배원환
+배순기
+배홍분
+배학수
+배원희
+배경이
+배창희
+배인후
+배윤섭
+배태건
+배귀석
+배한배
+배윤종
+배말익
+배구남
+배두정
+배윤진
+배정희
+배언웅
+배옥억
+배윤천
+배정수
+배영관
+배기란
+배윤표
+배종호
+배수윤
+배복근
+배윤한
+배태강
+배종례
+배병식
+배을봉
+배호웅
+배정태
+배홍혜
+배을선
+배재대
+배경호
+배찬구
+배음연
+배인수
+배은진
+배용섭
+배응원
+배영선
+배성선
+배태출
+배의표
+배우요
+배유근
+배지문
+배의표
+배현희
+배은섭
+배해봉
+배의표
+배영암
+배춘경
+배상려
+배이화
+배성환
+배헌훈
+배금말
+배인기
+배기운
+배명연
+배명동
+배인호
+배명곤
+배종년
+배기열
+배일경
+배종달
+배송근
+배광수
+배일권
+배문조
+배명규
+배종기
+배일선
+배경래
+배극옥
+배영만
+배일현
+배수희
+배철현
+배종주
+배일현
+배원배
+배명자
+배기관
+배일화
+배재근
+배동암
+배종현
+배일환
+배장림
+배병호
+배순선
+배임도
+배영계
+배헌화
+배춘교
+배임도
+배재순
+배채석
+배근섭
+배임순
+배세식
+배강식
+배영금
+배장수
+배신우
+배양기
+배미옥
+배장호
+배종현
+배경수
+배말직
+배장호
+배홍봉
+배두진
+배규열
+배재관
+배병종
+배종진
+배희배
+배재권
+배노시
+배명원
+배수흠
+배재규
+배득율
+배현구
+배양봉
+배재년
+배판수
+배진선
+배덕임
+배재덕
+배차만
+배용식
+배동수
+배재만
+배태성
+배재조
+배세택
+배재봉
+배수오
+배종호
+배성봉
+배재상
+배수수
+배선량
+배종조
+배재수
+배달우
+배돈필
+배수동
+배재영
+배성포
+배철자
+배영만
+배재윤
+배준재
+배준항
+배영훈
+배재은
+배상남
+배규용
+배광영
+배재익
+배영식
+배세현
+배을훈
+배재흥
+배도열
+배성영
+배정식
+배점복
+배태영
+배승수
+배학용
+배점선
+배동암
+배두춘
+배귀년
+배점표
+배정용
+배노수
+배명만
+배정갑
+배영이
+배기현
+배동자
+배정길
+배소복
+배진식
+배성영
+배정도
+배미형
+배장수
+배영암
+배정수
+배길보
+배정태
+배종배
+배정식
+배말광
+배춘구
+배달원
+배정웅
+배응용
+배원준
+배금원
+배정원
+배갑길
+배진화
+배홍용
+배정제
+배경팔
+배명현
+배래석
+배정태
+배창경
+배경권
+배원기
+배정한
+배대현
+배청배
+배헌오
+배정환
+배수영
+배규근
+배명오
+배정희
+배정현
+배영환
+배장선
+배종만
+배삼규
+배세용
+배태술
+배종식
+배병애
+배경술
+배차국
+배종욱
+배홍수
+배기식
+배종여
+배종철
+배현섭
+배경오
+배종자
+배종화
+배덕식
+배종호
+배임규
+배종희
+배태도
+배상열
+배교봉
+배주한
+배만수
+배원기
+배운원
+배준근
+배오용
+배효재
+배원악
+배준호
+배지식
+배태웅
+배순경
+배중호
+배영환
+배선훈
+배성수
+배진동
+배차수
+배성학
+배경현
+배진영
+배주맹
+배상섭
+배석자
+배차문
+배일석
+배갑호
+배자기
+배창대
+배지해
+배규수
+배선균
+배창수
+배성수
+배말화
+배금규
+배창식
+배정순
+배쌍상
+배오열
+배창욱
+배달용
+배옥암
+배경열
+배창인
+배종오
+배귀수
+배병조
+배창호
+배호식
+배정돌
+배용용
+배창호
+배정희
+배성용
+배을현
+배천범
+배달근
+배종준
+배종대
+배칠진
+배영근
+배재중
+배인호
+배칠환
+배도철
+배의열
+배재현
+배태곤
+배사금
+배숙수
+배태호
+배태만
+배상호
+배준호
+배송남
+배태명
+배종태
+배인윤
+배귀영
+배태석
+배일자
+배재원
+배세권
+배태연
+배효철
+배성환
+배경희
+배태자
+배재심
+배병한
+배종곤
+배태현
+배래호
+배동수
+배을혹
+배태호
+배해자
+배영희
+배우순
+배태호
+배상수
+배광규
+배재희
+배태환
+배진일
+배장환
+배갑선
+배판식
+배덕언
+배문남
+배종열
+배판이
+배정숙
+배병암
+배차원
+배필남
+배성계
+배경기
+배정현
+배필련
+배헌식
+배성익
+배수준
+배필연
+배학근
+배기문
+배미생
+배하영
+배미호
+배태욱
+배정식
+배하영
+배승철
+배상숙
+배순득
+배하현
+배정부
+배대남
+배재희
+배학돌
+배영하
+배백태
+배태희
+배학식
+배공교
+배윤영
+배외순
+배한모
+배학근
+배옥환
+배삼수
+배한모
+배성화
+배영순
+배성권
+배한조
+배수종
+배병희
+배건현
+배해만
+배중순
+배현룡
+배성희
+배해석
+배원휘
+배기성
+배좌호
+배해성
+배성화
+배영열
+배상구
+배해술
+배중곤
+배건희
+배남휴
+배현순
+배운근
+배다권
+배태문
+배형한
+배임치
+배현자
+배덕홍
+배혜숙
+배영휴
+배대석
+배점조
+배호경
+배대원
+배태철
+배정운
+배호권
+배달주
+배창식
+배주원
+배호조
+배점이
+배성주
+배병희
+배호진
+배무형
+배무곤
+배기영
+배홍대
+배석석
+배종근
+배대출
+배홍덕
+배종조
+배노수
+배상국
+배홍열
+배세호
+배정호
+배병연
+배홍탁
+배수광
+배용륜
+배종근
+배효욱
+배수현
+배홍근
+배광남
+배효원
+배영술
+배문수
+배정학
+배효원
+배용규
+배성숙
+배태휘
+배효주
+배정이
+배태상
+배정기
+백 석
+백수희
+백재균
+백영출
+백갑흠
+백해희
+백재희
+백성현
+백경림
+백희길
+백정준
+백광익
+백경순
+백경출
+백민순
+백정산
+백경철
+백성백
+백인임
+백준우
+백광수
+백중선
+백홍균
+백의복
+백광웅
+백회도
+백용식
+백주희
+백광일
+백기식
+백소길
+백규희
+백광전
+백본재
+백의준
+백성식
+백권욱
+백경순
+백상철
+백홍석
+백근호
+백금열
+백정환
+백을호
+백기조
+백운근
+백순덕
+백해환
+백기태
+백덕준
+백무주
+백덕분
+백길선
+백경호
+백재섭
+백경환
+백남룡
+백석성
+백진만
+백순성
+백남석
+백문선
+백외율
+백재열
+백남수
+백대자
+백교태
+백규식
+백남진
+백일세
+백 호
+백성기
+백노수
+백무무
+백호숙
+백금완
+백대학
+백술원
+백상현
+백환암
+백대현
+백주문
+백두출
+백도문
+백대호
+백영용
+백점철
+백용철
+백도봉
+백기명
+백태출
+백명호
+백동술
+백현분
+백정희
+백태조
+백동제
+백주열
+백의택
+백판식
+백동제
+백용운
+백천식
+백연왕
+백두재
+백성근
+백경교
+백용준
+백두현
+백상억
+백성규
+백일심
+백두현
+백홍기
+백판택
+백복덕
+백두현
+백덕수
+백영복
+백신옥
+백두현
+백동문
+백상기
+백영선
+백만기
+백주환
+백 호
+백점용
+백만대
+백정현
+백종영
+백형균
+백말수
+백질현
+백관환
+백정옥
+백매향
+백경숙
+백득현
+백희석
+백명수
+백영락
+백윤락
+백종환
+백명현
+백동서
+백은술
+백일호
+백몽련
+백순식
+백명준
+백범기
+백무갑
+백 현
+백은춘
+백차대
+백무용
+백달석
+백헌수
+백삼임
+백무조
+백기희
+백성훈
+백중희
+백문만
+백상기
+백육은
+백재수
+백문상
+백두순
+백숙덕
+백주영
+백문현
+백근태
+백복정
+백봉원
+백민숙
+백진식
+백창중
+백경현
+백방기
+백 원
+백영희
+백경치
+백보배
+백영식
+백뇌삼
+백한상
+백보현
+백이호
+백영훈
+백무식
+백복기
+백현탁
+백형화
+백청호
+백복순
+백기조
+백영환
+백민만
+백봉문
+백상연
+백광기
+백태업
+백부임
+백호식
+백성남
+백석훈
+백사강
+백지영
+백광태
+백근호
+백삼수
+백정례
+백재우
+백두진
+백상결
+백재웅
+백경치
+백성채
+백상덕
+백동숙
+백종규
+백근연
+백석도
+백성봉
+백재식
+백영희
+백석자
+백원영
+백귀호
+백성덕
+백석준
+백규진
+백재정
+백성국
+백석진
+백태연
+백영찬
+백찬복
+백선현
+백재향
+백장수
+백창철
+백성국
+백영오
+백국용
+백구정
+백성권
+백창규
+백아호
+백석길
+백성기
+백갑덕
+백선호
+백은돌
+백성기
+백태림
+백신호
+백국진
+백소돌
+백경순
+백삼재
+백위규
+백소부
+백정달
+백용호
+백판재
+백소수
+백태학
+백판훈
+백학만
+백소웅
+백성환
+백종조
+백판국
+백소조
+백달경
+백동수
+백용원
+백송학
+백세조
+백봉균
+백준암
+백수정
+백종용
+백봉춘
+백범상
+백수창
+백태기
+백삼노
+백기호
+백숙자
+백용수
+백옥조
+백상호
+백순덕
+백종석
+백사임
+백황옥
+백순선
+백기문
+백창득
+백혁준
+백순옥
+백명원
+백문수
+백정자
+백순태
+백상출
+백성균
+백기건
+백승규
+백동수
+백성석
+백옥성
+백승덕
+백해환
+백용규
+백병하
+백승로
+백동길
+백명천
+백순희
+백승만
+백정영
+백정식
+백규수
+백승열
+백철찬
+백중우
+백소순
+백승욱
+백미수
+백술근
+백용광
+백승태
+백점원
+백정수
+백성길
+백승태
+백영철
+백영구
+백정효
+백승택
+백은극
+백종선
+백덕한
+백영규
+백영영
+백규술
+백영태
+백영규
+백흥의
+백수률
+백영홍
+백영기
+백석수
+백영환
+백기수
+백영배
+백칠순
+백만오
+백재오
+백영수
+백순익
+백도근
+백명주
+백영수
+백상건
+백남배
+백종길
+백영식
+백광출
+백일준
+백 명
+백영주
+백화우
+백홍자
+백용보
+백영준
+백옥수
+백손철
+백진규
+백영철
+백재도
+백대태
+백춘조
+백영춘
+백운국
+백재태
+백운선
+백영호
+백병원
+백기효
+백판동
+백영호
+백상호
+백영권
+백종주
+백영호
+백제동
+백순환
+백영한
+백영호
+백근조
+백종근
+백교자
+백영희
+백상기
+백규궁
+백봉순
+백옥란
+백문자
+백환희
+백동진
+백욱용
+백연수
+백중억
+백재희
+백운로
+백성종
+백윤순
+백성문
+백운우
+백청중
+백성용
+백소진
+백운우
+백정식
+백주조
+백종필
+백운철
+백노이
+백봉월
+백태수
+백운태
+백한연
+백질대
+백성치
+백운학
+백양대
+백규용
+백분숙
+백운호
+백재곤
+백삼식
+백영범
+백웅열
+백태권
+백정수
+백병경
+백원기
+백재태
+백응환
+백종국
+백원치
+백재희
+백승향
+백의술
+백유분
+백환수
+백소현
+백진현
+백윤식
+백상순
+백재종
+백중숙
+백윤철
+백상복
+백영춘
+백재순
+백윤철
+백재식
+백창호
+백광련
+백윤현
+백지락
+백정열
+백수준
+백은식
+백원모
+백태용
+백종수
+백인길
+백영수
+백기연
+백복곤
+백인석
+백영길
+백삼조
+백석덕
+백인찬
+백계술
+백의호
+백순임
+백인현
+백정식
+백선윤
+백성환
+백인흠
+백순연
+백용모
+백재우
+백일기
+백순복
+백봉순
+백은희
+백일현
+백용환
+백태환
+백의용
+백장개
+백기동
+백재운
+백정길
+백재봉
+백판숙
+백제화
+백규수
+백재선
+백태택
+백분성
+백종기
+백재현
+백학윤
+백태윤
+백곤수
+백재호
+백재곤
+백송옥
+백준남
+백재호
+백창정
+백학진
+백금성
+백전태
+백동용
+백성길
+백성자
+백점봉
+백학원
+백재식
+백두경
+백점수
+백희구
+백규선
+백순태
+백점수
+백 춘
+백해균
+백임진
+백정덕
+백정소
+백태균
+백종현
+백정영
+백병용
+백정궁
+백점균
+백정영
+백정준
+백태식
+백재구
+백정용
+백병구
+백석완
+백만구
+백정종
+백필표
+백영근
+백종조
+백정현
+백정태
+백태문
+백웅우
+백정환
+백윤수
+백낙출
+백갑대
+백정희
+백성봉
+백기홍
+백기수
+백종계
+백칠희
+백경식
+백만수
+백종기
+백영대
+백영환
+백규자
+백종철
+백성고
+백경영
+백종술
+백진웅
+백도윤
+백봉식
+백철준
+백창기
+백인학
+백재규
+백제의
+백청운
+백상기
+백옥식
+백인재
+백춘기
+백항훈
+백무석
+백순재
+백태욱
+백순창
+백성이
+백본문
+백태종
+백연록
+백현종
+백숙치
+백태진
+백소광
+백병준
+백구희
+백태현
+백병진
+백근진
+백재연
+백태호
+백수석
+백만필
+백봉헌
+백학기
+백영태
+백수관
+백진팔
+백학수
+백옥란
+백종상
+백만진
+백한권
+백충화
+백은갑
+백영순
+백현우
+백경봉
+백임수
+백종세
+백현학
+백분웅
+백월도
+백 순
+백현학
+백상수
+백인례
+백상익
+백현학
+백영식
+백태식
+백상희
+백형도
+백순임
+백재준
+백구자
+백형일
+백주찬
+백경원
+백복근
+백호현
+백광숙
+백규연
+백영일
+백화숙
+백기숙
+백종영
+백사록
+변갑조
+변창영
+변택선
+변동업
+변경식
+변주기
+변용희
+변창갑
+변금순
+변재분
+변남숙
+변상호
+변동필
+변중석
+변신원
+변정동
+변동해
+변병균
+변원출
+변 한
+변명근
+변덕열
+변영한
+변시동
+변사룡
+변용재
+변보술
+변민림
+변상근
+변양문
+변병덕
+변주옥
+변성수
+변홍순
+변교열
+변주웅
+변성원
+변영준
+변수암
+변광희
+변순여
+변영식
+변병종
+변태종
+변오식
+변문갑
+변준휴
+변창수
+변용식
+변춘목
+변달옥
+변병수
+변용진
+변경유
+변영현
+변경구
+변위식
+변성섭
+변병화
+변준용
+변윤식
+변광조
+변정수
+변석태
+변은식
+변순식
+변학원
+변복웅
+변이규
+변충숙
+변석선
+변성옥
+변장우
+변명윤
+변태희
+변필택
+변재곤
+변정원
+변성식
+변상조
+변종봉
+변상환
+변병룡
+변옥권
+변종식
+변상권
+변성내
+변정남
+변찬기
+변주희
+변정억
+변태소
+변창혁
+변대일
+변은권
+변명영
+변철우
+변태용
+변창수
+변중술
+변철우
+변영향
+변명이
+변종용
+변태수
+변재화
+변권우
+변창구
+변판규
+변명택
+변학현
+변대권
+변호현
+변용걸
+변경훈
+변태국
+변화자
+변소연
+변대우
+변권수
+변환규
+변인수
+변훈근
+변영웅
+빈욱출
+빈관훈
+빈해승
+빈명우
+빈종욱
+빈천암
+빈석석
+빈돈순
+빈춘옥
+빈용열
+빈중복
+빈선생
+사복환
+사정숙
+사은학
+사병오
+상정균
+상기자
+상정해
+상효석
+서갑문
+서문숙
+서세우
+서성세
+서갑수
+서죽오
+서점달
+서일균
+서갑수
+서기환
+서동조
+서광열
+서경규
+서수달
+서옥용
+서남호
+서경규
+서판섭
+서진경
+서신희
+서경규
+서경철
+서상준
+서종호
+서경석
+서은숙
+서덕영
+서재희
+서경수
+서상환
+서찬교
+서준곤
+서경숙
+서경오
+서달순
+서천문
+서경암
+서병래
+서윤인
+서두학
+서경점
+서언섭
+서영기
+서영규
+서경화
+서해암
+서학학
+서석배
+서경희
+서재헌
+서순이
+서동선
+서경희
+서운섭
+서복복
+서상구
+서경희
+서동근
+서종건
+서후원
+서계석
+서덕한
+서수현
+서해웅
+서곡지
+서명국
+서두태
+서정채
+서광식
+서찬재
+서준길
+서윤우
+서광악
+서옥재
+서재만
+서이국
+서광언
+서신운
+서차우
+서두자
+서광택
+서태숙
+서상영
+서상규
+서교욱
+서진점
+서광희
+서양선
+서교희
+서선균
+서승표
+서종명
+서교희
+서영범
+서병영
+서영원
+서구석
+서형순
+서병이
+서봉기
+서근호
+서현문
+서수열
+서완철
+서금이
+서정입
+서병화
+서석동
+서남숙
+서태선
+서계술
+서득석
+서남조
+서남태
+서우숙
+서태덕
+서다임
+서병윤
+서차수
+서규문
+서달선
+서영기
+서규영
+서기준
+서대경
+서정성
+서강숙
+서석석
+서대관
+서길연
+서해기
+서정구
+서대환
+서영숙
+서수표
+서병록
+서덕선
+서원만
+서형탁
+서삼순
+서동덕
+서석근
+서재열
+서명희
+서동수
+서연연
+서신동
+서형호
+서동수
+서윤선
+서기용
+서명근
+서동재
+서광호
+서암완
+서택민
+서동준
+서경길
+서태환
+서해규
+서동훈
+서갑식
+서병숙
+서창조
+서두선
+서순고
+서 섭
+서시순
+서말도
+서원남
+서병열
+서현호
+서말선
+서교복
+서무수
+서규용
+서맹수
+서기선
+서태기
+서원술
+서명곤
+서광곤
+서원식
+서은현
+서명교
+서인원
+서용옥
+서소섭
+서명달
+서춘억
+서경선
+서병곤
+서명수
+서영수
+서옥선
+서영이
+서명암
+서종원
+서선교
+서미학
+서무남
+서점길
+서일훈
+서상호
+서무조
+서 수
+서만열
+서진호
+서무종
+서정근
+서남록
+서태수
+서무호
+서상수
+서대택
+서하정
+서문덕
+서동성
+서충상
+서광봉
+서문수
+서종율
+서무조
+서용술
+서문수
+서용원
+서성기
+서영태
+서미경
+서철운
+서인식
+서정홍
+서미자
+서선태
+서소현
+서병화
+서민석
+서재일
+서상우
+서순철
+서범식
+서경주
+서수식
+서순철
+서병수
+서성곤
+서상보
+서재립
+서병재
+서진옥
+서순봉
+서순석
+서보근
+서창조
+서옥수
+서태자
+서보덕
+서도용
+서정호
+서기자
+서보영
+서태석
+서해천
+서판조
+서보운
+서일순
+서춘이
+서상중
+서보원
+서정섭
+서석철
+서창호
+서보진
+서명덕
+서일덕
+서석조
+서보찬
+서대호
+서치옥
+서무희
+서보혁
+서원희
+서회수
+서의숙
+서보희
+서광재
+서을정
+서일식
+서복경
+서명희
+서창배
+서윤술
+서복순
+서시환
+서경응
+서석식
+서봉교
+서행식
+서재완
+서인우
+서봉덕
+서양준
+서순천
+서재득
+서분순
+서국홍
+서광수
+서판수
+서사현
+서시성
+서위섭
+서권수
+서삼권
+서용봉
+서성기
+서차영
+서상근
+서재식
+서병규
+서용희
+서상노
+서경선
+서만식
+서은이
+서상덕
+서수권
+서원종
+서철기
+서상돌
+서병순
+서준조
+서 우
+서상록
+서구병
+서창수
+서운운
+서상록
+서옥길
+서금선
+서상석
+서상록
+서태웅
+서원호
+서창화
+서상말
+서영철
+서학곤
+서수수
+서상문
+서계조
+서석구
+서웅환
+서상세
+서명진
+서태호
+서병경
+서상식
+서철담
+서진교
+서영욱
+서상열
+서성수
+서은철
+서덕헌
+서상자
+서사열
+서옥동
+서근열
+서상준
+서사기
+서장출
+서성득
+서상태
+서현호
+서광환
+서필수
+서상태
+서성수
+서영상
+서규조
+서상태
+서오열
+서영철
+서근리
+서상현
+서오희
+서봉태
+서정열
+서상현
+서만수
+서은생
+서상태
+서상호
+서석훈
+서장규
+서영조
+서상화
+서재모
+서영종
+서해희
+서상화
+서용조
+서기흠
+서성수
+서상효
+서종수
+서옥구
+서갑문
+서상희
+서찬열
+서갑현
+서병봉
+서석교
+서상규
+서용관
+서세만
+서석규
+서태천
+서용희
+서종도
+서석영
+서육기
+서병은
+서기기
+서석윤
+서경운
+서태양
+서영성
+서석홍
+서순현
+서정철
+서병조
+서석희
+서유원
+서정주
+서윤운
+서선교
+서병연
+서중연
+서재화
+서성교
+서중욱
+서해조
+서명이
+서성만
+서갑수
+서인석
+서판열
+서성암
+서행문
+서상팔
+서승대
+서성윤
+서외숙
+서점철
+서영은
+서성출
+서순재
+서영배
+서종환
+서소권
+서일조
+서종순
+서태심
+서소용
+서도학
+서병한
+서수형
+서수경
+서일대
+서현수
+서보하
+서수연
+서재홍
+서인규
+서해석
+서수웅
+서종주
+서호정
+서병우
+서순교
+서연태
+서태경
+서주희
+서순남
+서영재
+서태숙
+서점대
+서순도
+서경성
+서보우
+서장석
+서순돌
+서병원
+서창만
+서인기
+서순란
+서태연
+서 진
+서상난
+서순석
+서차섭
+서명오
+서재조
+서순이
+서재기
+서재호
+서경용
+서승기
+서규홍
+서상하
+서연영
+서승원
+서명규
+서상식
+서광현
+서영규
+서재자
+서일림
+서길호
+서영달
+서봉향
+서영근
+서귀례
+서영달
+서주열
+서원옥
+서재남
+서영돌
+서희용
+서종향
+서명환
+서영목
+서현기
+서대갑
+서성용
+서영석
+서경현
+서판우
+서병술
+서영수
+서진태
+서정옥
+서석태
+서영웅
+서상규
+서병파
+서경길
+서영원
+서대호
+서병화
+서무용
+서영은
+서명호
+서영애
+서병순
+서영창
+서상숙
+서해곤
+서병권
+서영태
+서정호
+서금섭
+서호동
+서오조
+서재봉
+서중용
+서대환
+서옥출
+서갑동
+서돈부
+서용한
+서완식
+서상수
+서재하
+서판록
+서외수
+서충택
+서상봉
+서막훈
+서용만
+서만광
+서병훈
+서규인
+서용부
+서기순
+서봉표
+서영만
+서용석
+서수배
+서기조
+서무주
+서용조
+서선종
+서준환
+서석홍
+서용판
+서상학
+서용조
+서호호
+서용해
+서창종
+서오연
+서기순
+서용해
+서종견
+서숙수
+서윤응
+서용호
+서정희
+서상홍
+서근훈
+서우철
+서성숙
+서명출
+서태희
+서웅길
+서하천
+서금석
+서종준
+서유산
+서석식
+서보악
+서만형
+서윤석
+서재대
+서쾌호
+서창수
+서윤선
+서호애
+서성기
+서재점
+서윤옥
+서재목
+서춘종
+서재남
+서윤출
+서종준
+서인자
+서종정
+서윤희
+서시건
+서홍수
+서춘호
+서은경
+서영기
+서주태
+서병석
+서이선
+서병칠
+서응길
+서용식
+서이진
+서윤인
+서정교
+서태용
+서익순
+서석하
+서달우
+서수근
+서인덕
+서병조
+서학기
+서무희
+서인순
+서영호
+서건용
+서종조
+서인열
+서기수
+서석임
+서성순
+서일교
+서연적
+서재남
+서재태
+서일부
+서종동
+서경순
+서영차
+서임선
+서성현
+서금우
+서억동
+서임조
+서희권
+서창진
+서상문
+서장택
+서남경
+서분춘
+서민식
+서재교
+서응태
+서현이
+서재우
+서재덕
+서인섬
+서창생
+서기각
+서재덕
+서진기
+서성식
+서승철
+서재열
+서사개
+서차원
+서봉동
+서재영
+서영호
+서해도
+서지선
+서재행
+서정영
+서석현
+서태홍
+서재호
+서정환
+서대원
+서영원
+서재환
+서종하
+서문재
+서태운
+서재환
+서동근
+서상준
+서광오
+서재희
+서만연
+서세길
+서재재
+서점돌
+서명상
+서재석
+서광구
+서점수
+서영찬
+서성식
+서남구
+서점수
+서근성
+서오행
+서재자
+서점술
+서대수
+서태자
+서기자
+서점암
+서권의
+서기택
+서경집
+서점조
+서정규
+서태규
+서수순
+서정경
+서태동
+서명호
+서재수
+서정계
+서효도
+서귀기
+서병환
+서정구
+서윤구
+서석수
+서건경
+서정군
+서종호
+서영도
+서환영
+서정극
+서말숙
+서태규
+서일복
+서정근
+서태선
+서병록
+서장원
+서정도
+서광우
+서정곤
+서종득
+서정록
+서대조
+서말형
+서기량
+서정박
+서철덕
+서순출
+서성시
+서정생
+서남혁
+서주규
+서정석
+서정석
+서재훈
+서규계
+서차자
+서정수
+서소경
+서쌍호
+서도호
+서정수
+서운정
+서성순
+서운순
+서정수
+서재영
+서정규
+서영희
+서정술
+서근순
+서재상
+서정조
+서정식
+서성효
+서우정
+서종탁
+서정열
+서진규
+서을식
+서현남
+서정우
+서상석
+서재배
+서소환
+서정우
+서태순
+서영기
+서윤웅
+서정운
+서광엽
+서재율
+서경일
+서정의
+서진지
+서옥강
+서금자
+서정태
+서승기
+서차인
+서영교
+서정태
+서재봉
+서옥수
+서양기
+서정태
+서종충
+서중호
+서해재
+서정태
+서임철
+서종수
+서영호
+서정한
+서영철
+서태숙
+서석순
+서정화
+서준영
+서기준
+서우환
+서정환
+서귀득
+서정용
+서갑현
+서정희
+서병술
+서학영
+서봉자
+서종이
+서장수
+서노헌
+서윤이
+서주덕
+서옥찬
+서병권
+서말호
+서주필
+서진경
+서종효
+서동기
+서준교
+서혜한
+서만현
+서고광
+서중강
+서덕현
+서창규
+서영연
+서중규
+서명태
+서영곤
+서성식
+서진고
+서극자
+서운숙
+서학규
+서진교
+서건희
+서윤희
+서영순
+서진교
+서용정
+서병진
+서성천
+서진석
+서경술
+서성식
+서대일
+서진수
+서홍보
+서재제
+서말태
+서차갑
+서태웅
+서영희
+서병남
+서차랑
+서재수
+서종기
+서무란
+서차용
+서수원
+서영호
+서광식
+서창교
+서무수
+서병수
+서성용
+서창덕
+서수수
+서재모
+서홍수
+서창덕
+서우화
+서윤환
+서순섭
+서창수
+서태정
+서점순
+서재남
+서창술
+서충재
+서경모
+서판채
+서창현
+서수영
+서동현
+서부탁
+서철교
+서규술
+서용숙
+서형정
+서춘길
+서막진
+서경석
+서상용
+서춘수
+서로영
+서진운
+서쾌출
+서춘자
+서의덕
+서건순
+서원현
+서칠권
+서봉기
+서종이
+서봉웅
+서태교
+서헌진
+서일란
+서종종
+서태구
+서석호
+서순영
+서상춘
+서태만
+서정완
+서말문
+서승철
+서태석
+서수호
+서희순
+서윤근
+서태수
+서삼업
+서연기
+서보호
+서태술
+서경희
+서칠영
+서준욱
+서태암
+서정하
+서수현
+서광자
+서태원
+서성수
+서재자
+서선규
+서팔봉
+서영영
+서대호
+서수호
+서필금
+서수호
+서호용
+서신식
+서필연
+서을원
+서영선
+서성영
+서학원
+서태숙
+서해원
+서상상
+서학조
+서동석
+서종원
+서대용
+서한교
+서무희
+서태출
+서태열
+서한기
+서원자
+서영호
+서경재
+서해원
+서춘천
+서정수
+서기순
+서헌교
+서병구
+서수희
+서선섭
+서호관
+서춘찬
+서순남
+서동일
+서호창
+서창복
+서동관
+서동수
+서호출
+서진기
+서태선
+서칠열
+서홍교
+서태식
+서명구
+서정동
+서홍교
+서해환
+서한삼
+서계희
+서홍숙
+서재호
+서판수
+서인상
+서홍식
+서창식
+서찬우
+서봉주
+서환수
+서학건
+서화명
+서택문
+서훈태
+서정섭
+서순표
+서일숙
+서희철
+서송호
+서분자
+서창옥
+석광진
+석학배
+석성양
+석월우
+석기봉
+석재희
+석관석
+석성난
+석도정
+석장균
+석덕환
+석현원
+석무영
+석덕주
+석수일
+석무수
+석무호
+석정구
+석석순
+석준준
+석봉남
+석열권
+석순지
+석상경
+석분선
+석현하
+석상수
+석병헌
+석상수
+석재출
+석영식
+석해자
+석상운
+석국곤
+석을화
+석병규
+석선부
+석경숙
+석혜균
+석귀애
+석성만
+석광대
+석정용
+석칠남
+석소돌
+석형구
+석쾌규
+석규석
+석승태
+석선창
+석경순
+석정운
+석연이
+석상화
+석영량
+석태학
+석영호
+석병해
+석병숙
+석철훈
+석윤암
+석태열
+석춘수
+석경선
+석의자
+석병식
+석영덕
+석옥호
+석이효
+석순현
+석성태
+석상선
+석점효
+석재길
+석쾌래
+석춘동
+석정출
+석춘세
+석차종
+석남기
+석정출
+석기태
+석근순
+석동미
+석종화
+석광범
+석남기
+석상수
+석종화
+석명진
+석쾌원
+석차준
+석진영
+석종하
+석환상
+석석조
+석질암
+석봉희
+석상조
+석경석
+석차암
+석종란
+석미석
+석기용
+석춘옥
+석동암
+석차석
+석영조
+석효정
+석희제
+석평수
+석문우
+선승호
+선용수
+선일중
+선만판
+선우경
+선복돌
+선순자
+선원회
+선우영길
+선대목광
+선덕기경
+선남배병
+설강수
+설차순
+설희연
+설기택
+설동석
+설병열
+설영석
+설세철
+설명순
+설금석
+설정도
+설순임
+설묘순
+설복돌
+설찬연
+설준태
+설삼수
+설계현
+설해덕
+설성기
+설상규
+설상식
+설인균
+설재병
+설성구
+설용암
+설효선
+설종영
+설소주
+설지윤
+설후흠
+설용택
+설순옥
+설상원
+설재욱
+설병우
+설영구
+설상덕
+설수우
+설금자
+설영준
+설호호
+설무남
+설충운
+설용준
+설귀진
+설재봉
+설병분
+설원식
+설산규
+설지운
+설순자
+설원준
+설월돌
+설규봉
+설윤권
+설윤성
+설윤원
+설순우
+설설석
+설윤형
+설계욱
+설상호
+설승우
+설의준
+설동호
+설석고
+설태수
+설인갑
+설상시
+설수조
+설장학
+설정준
+설명출
+설판훈
+설구술
+설진구
+설교숙
+설교준
+설병석
+설창
+설순
+설종
+설영
+설창수
+설종국
+설일봉
+설헌길
+설천수
+설은임
+설한덕
+설기환
+설춘수
+설윤균
+설선호
+설매화
+설현수
+설영현
+설태종
+설윤택
+성경모
+성중식
+성재우
+성상우
+성경태
+성운희
+성명연
+성옥길
+성계종
+성원고
+성순규
+성희식
+성규용
+성삼희
+성해섭
+성명남
+성금용
+성귀섭
+성말홍
+성종식
+성기덕
+성승덕
+성광원
+성백란
+성기복
+성석선
+성성욱
+성태영
+성기은
+성 순
+성준희
+성재용
+성기학
+성진명
+성금금
+성해문
+성기흔
+성혜기
+성남규
+성용환
+성낙구
+성 환
+성종수
+성동용
+성낙권
+성광분
+성명기
+성창석
+성낙균
+성영현
+성자규
+성영헌
+성낙동
+성인현
+성규출
+성삼태
+성낙동
+성귀식
+성재우
+성현석
+성낙동
+성말석
+성기희
+성정기
+성낙동
+성분대
+성순동
+성선권
+성낙순
+성순수
+성한조
+성인문
+성낙영
+성휘운
+성해환
+성해자
+성낙완
+성병준
+성차수
+성진수
+성낙중
+성부호
+성선금
+성용건
+성낙진
+성선호
+성무완
+성재식
+성낙찬
+성진영
+성소문
+성광일
+성낙팔
+성우균
+성덕신
+성수익
+성낙하
+성창교
+성용복
+성태일
+성낙훈
+성병근
+성춘희
+성재한
+성남경
+성치조
+성태철
+성명길
+성두용
+성준경
+성채수
+성태옥
+성락경
+성우진
+성상식
+성종종
+성락관
+성준동
+성창자
+성신환
+성만정
+성재기
+성원주
+성태중
+성말연
+성선조
+성차수
+성기주
+성명근
+성규석
+성순기
+성순돌
+성백신
+성종희
+성인수
+성일선
+성병남
+성영수
+성기문
+성헌호
+성병우
+성한호
+성한관
+성소준
+성복식
+성정규
+성은천
+성을호
+성분시
+성해자
+성문용
+성영수
+성사영
+성영문
+성세식
+성지곤
+성상모
+성기현
+성종동
+성말환
+성상수
+성기연
+성상도
+성태환
+성상현
+성팔국
+성이용
+성점식
+성석경
+성장구
+성중기
+성점우
+성선이
+성병순
+성말팔
+성행규
+성소환
+성병헌
+성성암
+성지상
+성수경
+성상태
+성태현
+성정봉
+성수광
+성정곤
+성태규
+성판묵
+성순자
+성민선
+성무순
+성원훈
+성양수
+성상균
+성병근
+성해선
+성영경
+성주오
+성정모
+성용오
+성영란
+성광년
+성호민
+성수환
+성오제
+성태수
+성순훈
+성교동
+성외석
+성용희
+성인기
+성교식
+성용경
+성정식
+성주윤
+성영일
+성용칠
+성판득
+성점영
+성사련
+성우경
+성규완
+성복헌
+성정길
+성원경
+성병무
+성규연
+성만섭
+성위선
+성해태
+성정희
+성점열
+성은모
+성태원
+성석조
+성승환
+성은용
+성하호
+성병학
+성임난
+성의종
+성명윤
+성하삼
+성인식
+성일금
+성종호
+성대철
+성의호
+성재갑
+성수윤
+성태흠
+성삼희
+성재근
+성혜권
+성수환
+성재경
+성정순
+성경전
+성기시
+성상태
+성조근
+성상길
+성영성
+성연호
+성주곤
+성순기
+성정호
+성동규
+성준환
+성왕교
+성종민
+성종권
+성중환
+성춘조
+성운호
+성차동
+성증원
+성장태
+성우호
+성영원
+성창경
+성점주
+성만기
+성정자
+성철용
+성순휴
+성상진
+성성권
+성태경
+성재유
+성정수
+성진욱
+성태덕
+성수율
+성병득
+성동만
+성태용
+성소권
+성길국
+성병호
+성풍국
+성정수
+성정희
+성정이
+성한경
+성태길
+성종택
+성정희
+성해용
+성철연
+성종도
+성병순
+성흥식
+성영수
+성무집
+성봉화
+성희준
+성영술
+성병준
+성필혜
+소병문
+소정태
+소종호
+소재수
+소병양
+소종준
+소준세
+소남한
+소수섭
+소상관
+소병우
+소종근
+소영희
+소말자
+소광용
+소홍환
+소진덕
+소병문
+소판균
+소범춘
+소황옥
+소병진
+소덕임
+소광조
+손계련
+손소용
+손동용
+손성현
+손계임
+손영기
+손성수
+손 화
+손계탁
+손학호
+손광기
+손정오
+손공수
+손해록
+손갑현
+손점중
+손귀악
+손성경
+손은태
+손광길
+손규달
+손병우
+손종구
+손상정
+손규영
+손인연
+손용문
+손호성
+손규학
+손우인
+손천두
+손응오
+손금순
+손태식
+손계환
+손윤수
+손금순
+손지준
+손왕국
+손용희
+손금조
+손영숙
+손정자
+손남석
+손기목
+손미태
+손상득
+손수석
+손기용
+손성진
+손영후
+손대훈
+손노탁
+손정열
+손해순
+손명섭
+손달근
+손옥욱
+손일필
+손삼임
+손대봉
+손효영
+손재숙
+손주우
+손동황
+손영구
+손세태
+손갑숙
+손동황
+손상순
+손홍세
+손병룡
+손막내
+손한용
+손성배
+손만상
+손만수
+손헌홍
+손영태
+손종구
+손말순
+손형순
+손영제
+손순호
+손명국
+손봉욱
+손봉주
+손원석
+손명국
+손진기
+손수배
+손소권
+손명순
+손혜량
+손병곤
+손우규
+손명술
+손해호
+손계준
+손병자
+손명자
+손상오
+손광덕
+손진이
+손무종
+손경희
+손찬근
+손흥이
+손문기
+손상환
+손봉우
+손외임
+손민정
+손정수
+손윤희
+손경길
+손병권
+손명주
+손국배
+손태태
+손병기
+손종오
+손상숙
+손병공
+손병길
+손영천
+손민자
+손덕기
+손병문
+손해호
+손재근
+손진원
+손병언
+손윤표
+손창환
+손대암
+손병우
+손상수
+손정용
+손성옥
+손병은
+손말돌
+손윤수
+손상홍
+손병천
+손우호
+손재학
+손완조
+손병호
+손우태
+손중수
+손수호
+손봉권
+손상철
+손기동
+손종현
+손봉래
+손오의
+손태근
+손병성
+손봉화
+손순술
+손덕현
+손정도
+손삼조
+손한식
+손숙동
+손병애
+손삼출
+손담균
+손창애
+손순시
+손상권
+손달호
+손종재
+손칠근
+손상규
+손영태
+손상영
+손숙교
+손상규
+손찬태
+손선태
+손금도
+손상규
+손순섭
+손종호
+손춘천
+손상규
+손진식
+손동수
+손광환
+손상기
+손복권
+손삼병
+손운길
+손상모
+손상호
+손삼오
+손중열
+손상진
+손중태
+손풍억
+손만록
+손상철
+손막자
+손대길
+손시효
+손선경
+손상호
+손교숙
+손재현
+손성향
+손영랑
+손상호
+손재심
+손소범
+손수식
+손종운
+손재숙
+손수근
+손상조
+손석호
+손윤식
+손수난
+손용기
+손창상
+손동덕
+손수모
+손규조
+손중호
+손상열
+손수암
+손수환
+손병진
+손상철
+손수용
+손형교
+손태이
+손진길
+손수원
+손하분
+손한태
+손봉진
+손수익
+손춘옥
+손봉욱
+손경숙
+손수인
+손재환
+손칠순
+손판경
+손순계
+손영분
+손남홍
+손재건
+손순향
+손수배
+손수기
+손일완
+손승준
+손희복
+손이득
+손문원
+손승희
+손순덕
+손재구
+손병식
+손심숙
+손재석
+손태우
+손만희
+손영옥
+손헌영
+손원우
+손순봉
+손영제
+손철정
+손영철
+손길연
+손영진
+손영원
+손장찬
+손병석
+손옥란
+손순조
+손대암
+손명진
+손외순
+손선환
+손병홍
+손재남
+손용수
+손재술
+손정연
+손호용
+손용식
+손대웅
+손오옥
+손 주
+손우식
+손진환
+손광진
+손갑영
+손우주
+손명현
+손성암
+손금배
+손욱수
+손석록
+손인열
+손병정
+손원익
+손동자
+손재규
+손해희
+손윤숙
+손우렬
+손희준
+손선호
+손인상
+손병길
+손기락
+손옥환
+손일식
+손중수
+손금말
+손충원
+손일향
+손명수
+손희순
+손호완
+손일호
+손삼복
+손태철
+손창호
+손장수
+손달석
+손동숙
+손성은
+손장오
+손중란
+손운상
+손점분
+손재원
+손경연
+손영영
+손기모
+손재윤
+손정호
+손진호
+손의도
+손정석
+손용영
+손용진
+손성순
+손정수
+손동출
+손성상
+손상순
+손정숙
+손묘원
+손장훈
+손재수
+손정열
+손정영
+손광석
+손명영
+손정원
+손말식
+손영수
+손운자
+손정유
+손준선
+손재국
+손봉덕
+손정희
+손상춘
+손광세
+손운표
+손종모
+손효동
+손광식
+손마도
+손종식
+손용수
+손한순
+손온현
+손종채
+손안선
+손미식
+손태빈
+손주순
+손희연
+손관익
+손현성
+손중호
+손치영
+손재진
+손판철
+손창웅
+손정막
+손재옥
+손소식
+손채봉
+손준헌
+손헌환
+손기덕
+손청순
+손영모
+손태출
+손근술
+손청호
+손경현
+손준용
+손재태
+손칠봉
+손영만
+손선보
+손건웅
+손태곤
+손현진
+손용학
+손종희
+손태욱
+손세환
+손종준
+손은희
+손태욱
+손삼수
+손준동
+손원묘
+손태원
+손헌주
+손기열
+손진복
+손태원
+손양래
+손춘호
+손수숙
+손태원
+손권봉
+손석석
+손기학
+손태조
+손권욱
+손철환
+손광주
+손태종
+손정희
+손일규
+손지익
+손태환
+손형석
+손순수
+손우훈
+손택근
+손숙홍
+손칠호
+손주자
+손판권
+손점수
+손태도
+손종동
+손판석
+손경중
+손광수
+손태식
+손학기
+손영암
+손준주
+손도녕
+손학식
+손현태
+손기세
+손영욱
+손해경
+손병자
+손경덕
+손갑식
+손해동
+손일수
+손병식
+손도득
+손현권
+손지식
+손규기
+손석환
+손화택
+손도생
+손광연
+손효우
+손훈재
+손은규
+손명석
+손의옥
+손흥열
+손병암
+손차배
+손수술
+손희야
+손이선
+손태근
+손길석
+손희택
+손의환
+손기호
+손응순
+송강부
+송명만
+송만성
+송정학
+송강호
+송경웅
+송홍규
+송태환
+송경석
+송옥우
+송만근
+송낙수
+송관율
+송현규
+송성경
+송시용
+송광재
+송경하
+송석환
+송기고
+송구섭
+송수원
+송헌호
+송채정
+송규섭
+송재정
+송기식
+송석순
+송금옥
+송원식
+송명경
+송길수
+송기원
+송영득
+송병희
+송만연
+송기춘
+송경일
+송진철
+송종기
+송달호
+송윤석
+송해기
+송영효
+송대중
+송영선
+송중욱
+송춘섭
+송대호
+송사현
+송병식
+송문언
+송덕순
+송병용
+송인철
+송순달
+송덕홍
+송경만
+송효덕
+송영조
+송덕환
+송영임
+송생근
+송을호
+송동섭
+송순환
+송일숙
+송기화
+송동영
+송원배
+송성수
+송상조
+송만영
+송인호
+송중호
+송수성
+송만헌
+송춘동
+송정태
+송준순
+송말조
+송수열
+송종열
+송병례
+송무영
+송인순
+송선진
+송영환
+송문옥
+송영기
+송종식
+송순식
+송문한
+송미수
+송외수
+송문수
+송미령
+송용희
+송부기
+송대환
+송민숙
+송병출
+송호순
+송민출
+송번수
+송준근
+송정식
+송광포
+송병휘
+송효규
+송동철
+송두진
+송상교
+송계학
+송길열
+송금우
+송상열
+송만길
+송상철
+송만식
+송석규
+송순보
+송대화
+송경훈
+송석호
+송강환
+송상수
+송흥학
+송선달
+송영덕
+송정연
+송현년
+송선영
+송달준
+송봉봉
+송정호
+송성근
+송만선
+송영상
+송덕길
+송성동
+송명득
+송수수
+송무석
+송수근
+송종덕
+송종모
+송판민
+송수일
+송춘이
+송동환
+송말기
+송수현
+송원순
+송증열
+송순중
+송순자
+송용학
+송병주
+송지조
+송애자
+송기녀
+송점희
+송운복
+송연태
+송대재
+송만선
+송원경
+송영규
+송대열
+송동련
+송기식
+송용덕
+송신희
+송계현
+송차화
+송운한
+송경옥
+송기환
+송수상
+송원복
+송병자
+송희선
+송복호
+송원재
+송건한
+송학근
+송인식
+송인상
+송학조
+송세옥
+송동복
+송인선
+송광홍
+송판철
+송기휴
+송장헌
+송점환
+송봉묵
+송소두
+송재달
+송화수
+송생수
+송공욱
+송재도
+송정준
+송종색
+송광용
+송재석
+송상자
+송병우
+송성진
+송재심
+송태자
+송문주
+송대용
+송재용
+송영오
+송병운
+송영희
+송재욱
+송미기
+송희석
+송이수
+송재은
+송주원
+송식수
+송금훈
+송재준
+송세구
+송선영
+송태근
+송재진
+송진석
+송경용
+송말구
+송재철
+송광호
+송수교
+송봉율
+송재택
+송개순
+송경진
+송성철
+송정로
+송영덕
+송석기
+송해현
+송정민
+송귀철
+송효구
+송경용
+송정성
+송을차
+송용웅
+송영숙
+송정조
+송재중
+송금동
+송춘학
+송종수
+송외자
+송승웅
+송성인
+송준석
+송영제
+송낙환
+송삼일
+송직선
+송덕돌
+송해섭
+송경열
+송진철
+송주수
+송형규
+송태희
+송창섭
+송구민
+송두순
+송제열
+송춘성
+송한현
+송병우
+송정종
+송춘익
+송순열
+송성수
+송임모
+송춘희
+송옥필
+송병신
+송병용
+송태수
+송미옥
+송광현
+송은수
+송학선
+송성용
+송명국
+송광현
+송한철
+송문식
+송병현
+송정희
+송헌영
+송윤근
+송승섭
+송정록
+송호선
+송수교
+송재환
+송차선
+송호성
+송동성
+송형삼
+송태근
+송희성
+송영호
+송윤권
+송순근
+시광준
+시소근
+시기천
+시상호
+시만식
+시학기
+시창정
+시덕희
+시말분
+시도목
+시두암
+시보한
+시명술
+시우호
+시규생
+시소식
+시명환
+시경호
+시승길
+시기로
+시무준
+시규호
+시춘태
+시윤성
+시민기
+시복술
+시화수
+시상태
+시병규
+시한호
+시재찬
+시일용
+시병기
+시해선
+시문락
+시무호
+시병모
+시상술
+시인헌
+시순식
+시병생
+시외자
+시수원
+시석진
+시병수
+시재곤
+시미수
+시관생
+시병영
+시상숙
+시휘경
+시월환
+시병익
+시창희
+시찬우
+시정규
+시병임
+시인홍
+시귀희
+시영섭
+시병택
+시덕만
+시정분
+시재수
+시병환
+시점록
+시상서
+시성현
+시봉호
+시주환
+시종식
+시재규
+시상준
+시정연
+시종용
+시일근
+시석이
+시일석
+시영만
+시정지
+시선식
+시승선
+시병석
+시순환
+시소식
+시신한
+시상욱
+시경성
+시수준
+시성옥
+시석규
+시의자
+시숭구
+시차규
+시영훈
+시상수
+시연준
+시일기
+시팔희
+시재수
+시옥순
+시은표
+시종규
+시영수
+시용식
+시영근
+시용영
+시종환
+시우식
+시창근
+시명만
+시위윤
+시이준
+시명환
+시봉현
+시해철
+시재규
+시분록
+시한분
+시정철
+시종국
+시삼봉
+시국진
+시분수
+시종원
+시윤교
+시응극
+시판숙
+시진권
+시용임
+시창년
+시노식
+시찬준
+시득균
+시운성
+시용주
+시춘자
+시종봉
+시재목
+시현호
+시칠문
+시진철
+시태용
+시희학
+시태수
+시정용
+시순수
+시종옥
+시태술
+시아영
+시봉천
+시준희
+시택규
+시학섭
+시경수
+시을진
+시해선
+시태호
+시을범
+시지호
+시현기
+시명이
+시수수
+시학희
+시호준
+시점근
+시병한
+시준택
+시호진
+시철석
+시소주
+시춘용
+시환준
+시복기
+시권택
+시옥재
+신갑성
+신인철
+신복석
+신연복
+신갑순
+신택철
+신혜재
+신 현
+신강식
+신순완
+신미식
+신용조
+신건우
+신경순
+신종수
+신진환
+신경만
+신종규
+신일운
+신성우
+신경모
+신상우
+신종생
+신정형
+신경식
+신상경
+신강권
+신일석
+신경우
+신순경
+신해수
+신영응
+신경원
+신임화
+신태수
+신병군
+신경조
+신규환
+신길우
+신수옥
+신계주
+신강순
+신경근
+신인자
+신곡점
+신도준
+신우우
+신영국
+신광복
+신승용
+신명석
+신용상
+신광용
+신종호
+신차선
+신하근
+신광인
+신도우
+신오현
+신영식
+신광지
+신헌섭
+신제규
+신화수
+신구생
+신정배
+신주우
+신석기
+신귀남
+신기하
+신순식
+신준기
+신균우
+신성원
+신종채
+신경자
+신균우
+신창식
+신경규
+신권국
+신금달
+신창석
+신영승
+신희수
+신긍우
+신중한
+신정호
+신현균
+신기우
+신주자
+신상호
+신정이
+신기원
+신창호
+신한한
+신 갑
+신기원
+신원택
+신성만
+신소규
+신기출
+신순희
+신도개
+신갈기
+신기출
+신추성
+신광극
+신용광
+신길우
+신달모
+신연섭
+신상헌
+신길운
+신소조
+신춘재
+신원수
+신난우
+신대출
+신병민
+신종채
+신남근
+신대권
+신순재
+신경학
+신남숙
+신정동
+신정상
+신병숙
+신남순
+신이석
+신덕렬
+신영택
+신달휴
+신차관
+신도영
+신순웅
+신덕우
+신광득
+신장길
+신태주
+신도용
+신한준
+신은규
+신용조
+신돈우
+신명택
+신정기
+신해섭
+신돈휴
+신순원
+신도숙
+신수옥
+신동관
+신분환
+신태규
+신병영
+신동구
+신명세
+신춘호
+신태범
+신동국
+신상로
+신수노
+신흥세
+신동진
+신성철
+신정권
+신정승
+신동진
+신은희
+신태원
+신진남
+신동현
+신재식
+신수열
+신태환
+신동현
+신명현
+신상우
+신석종
+신동호
+신상수
+신해출
+신용휘
+신동호
+신수국
+신대규
+신천량
+신동화
+신의수
+신효배
+신재호
+신동훈
+신기만
+신남모
+신재수
+신동훈
+신철만
+신낙동
+신상주
+신만식
+신영성
+신만호
+신정륜
+신말선
+신종철
+신옥원
+신천영
+신명숙
+신석덕
+신노호
+신지화
+신명우
+신수찬
+신진이
+신성근
+신명은
+신인운
+신상구
+신기연
+신명자
+신병식
+신덕주
+신영익
+신몽우
+신윤환
+신종현
+신일술
+신묘순
+신 곤
+신영준
+신춘화
+신무철
+신은호
+신태철
+신영규
+신무홍
+신용건
+신병근
+신부영
+신문호
+신춘주
+신병식
+신성덕
+신미숙
+신의수
+신필우
+신기재
+신범균
+신운정
+신병형
+신경영
+신범현
+신춘옥
+신풍수
+신재석
+신병열
+신세정
+신동석
+신차근
+신병우
+신판봉
+신 하
+신수수
+신병주
+신상악
+신영득
+신인섭
+신병휴
+신성환
+신무석
+신정식
+신봉휴
+신이근
+신원모
+신호식
+신봉휴
+신소기
+신동문
+신기수
+신삼옥
+신말희
+신곡일
+신한천
+신상수
+신화근
+신판종
+신명범
+신상수
+신한우
+신규구
+신재태
+신상재
+신상건
+신대식
+신석국
+신상휴
+신근숙
+신백태
+신해기
+신상휴
+신덕용
+신만도
+신계수
+신석복
+신위수
+신상양
+신중기
+신석조
+신영성
+신점수
+신경조
+신석철
+신명천
+신근규
+신영태
+신선명
+신광숙
+신상주
+신진수
+신선순
+신현한
+신성오
+신삼율
+신성근
+신광임
+신규호
+신순수
+신성우
+신한정
+신우한
+신순이
+신성호
+신기화
+신성수
+신규식
+신성휴
+신정철
+신명자
+신춘호
+신성휴
+신응래
+신종한
+신영환
+신소분
+신정주
+신문득
+신성도
+신소선
+신태환
+신홍수
+신항영
+신수자
+신석남
+신순기
+신구철
+신순득
+신보이
+신맹국
+신명화
+신순분
+신복화
+신종환
+신문춘
+신순수
+신정환
+신성세
+신영규
+신순옥
+신상재
+신정규
+신정환
+신순조
+신면현
+신태성
+신시준
+신순희
+신일집
+신자필
+신상숙
+신승범
+신보선
+신광금
+신재태
+신승우
+신도권
+신순민
+신원옥
+신애희
+신경홍
+신규식
+신종근
+신양옥
+신용문
+신규호
+신권열
+신양우
+신정권
+신철방
+신계원
+신언호
+신달조
+신정선
+신계식
+신연이
+신호호
+신영완
+신원자
+신열휴
+신대백
+신헌호
+신은주
+신열휴
+신영극
+신정정
+신광십
+신영건
+신갑강
+신규윤
+신성국
+신영식
+신기봉
+신영우
+신승연
+신영식
+신수하
+신주도
+신말형
+신영일
+신경화
+신말순
+신건직
+신영조
+신갑술
+신일결
+신장곤
+신영준
+신해재
+신대철
+신혜식
+신영휴
+신판상
+신소복
+신판자
+신옥자
+신근자
+신상호
+신병숙
+신옥자
+신용현
+신대출
+신우식
+신완모
+신창호
+신영화
+신명늠
+신완우
+신규동
+신성경
+신창호
+신외숙
+신경범
+신원출
+신창천
+신용구
+신진식
+신성조
+신신열
+신용근
+신주연
+신길선
+신경호
+신용석
+신종봉
+신종주
+신동수
+신용수
+신노춘
+신병환
+신정대
+신용준
+신옥수
+신창호
+신춘식
+신용호
+신금택
+신주연
+신보건
+신우철
+신수현
+신경선
+신동철
+신웅용
+신재세
+신노우
+신태용
+신원순
+신금일
+신혜근
+신오석
+신원우
+신만열
+신재조
+신영조
+신월구
+신흥명
+신석담
+신선락
+신유야
+신화섭
+신환태
+신귀구
+신육란
+신연동
+신영영
+신동춘
+신윤생
+신환도
+신기완
+신기출
+신윤숙
+신춘열
+신희만
+신태택
+신윤식
+신원호
+신승림
+신금만
+신윤식
+신회라
+신경용
+신경호
+신윤식
+신상희
+신상상
+신두희
+신윤식
+신석식
+신무훈
+신수관
+신윤우
+신병태
+신상열
+신순연
+신윤조
+신준택
+신명남
+신태복
+신을수
+신기성
+신찬란
+신숙명
+신을식
+신성송
+신동환
+신기기
+신을철
+신옥호
+신안영
+신수연
+신응태
+신용출
+신분종
+신신남
+신인기
+신삼승
+신대근
+신태원
+신인숙
+신현대
+신진식
+신소모
+신인식
+신선철
+신상석
+신학돌
+신인우
+신성환
+신판식
+신수도
+신일섭
+신회석
+신태용
+신용윤
+신임이
+신종수
+신헌천
+신진균
+신임휴
+신정진
+신하락
+신근희
+신장경
+신영조
+신명영
+신재희
+신재문
+신효영
+신선복
+신홍기
+신재수
+신종철
+신성룡
+신달원
+신재우
+신규욱
+신공년
+신병식
+신재운
+신일호
+신재태
+신덕설
+신재운
+신동연
+신춘식
+신노홍
+신재의
+신수연
+신맹환
+신은용
+신재학
+신몽이
+신광호
+신종분
+신재호
+신중운
+신춘식
+신희연
+신점득
+신상옥
+신철근
+신인규
+신점용
+신봉우
+신갑웅
+신철순
+신정규
+신행철
+신경숙
+신정학
+신정순
+신상웅
+신봉형
+신경웅
+신정순
+신한원
+신운돌
+신원애
+신정식
+신성재
+신용호
+신정식
+신정철
+신범곤
+신영직
+신은년
+신정휴
+신두옥
+신 호
+신정민
+신정휴
+신한우
+신호희
+신숙종
+신제호
+신기식
+신동목
+신점환
+신종구
+신영득
+신태헌
+신효기
+신종도
+신병도
+신창철
+신성차
+신종식
+신태택
+신정월
+신재귀
+신종인
+신희수
+신수직
+신해재
+신종휴
+신희환
+신종술
+신정식
+신종휴
+신병도
+신수환
+신종권
+신진금
+신성용
+신대현
+신병종
+신진섭
+신무도
+신형석
+신은우
+신진호
+신태연
+신출춘
+신일용
+신차분
+신무옥
+신영호
+신병규
+신차순
+신만부
+신복한
+신기화
+신찬식
+신순표
+신흥길
+신명순
+신창호
+신수식
+신해길
+신기규
+신창훈
+신영병
+신수철
+신수덕
+신철우
+신 현
+신종채
+신병식
+신철이
+신만경
+신원호
+신병수
+신청균
+신정근
+신계칠
+신덕발
+신춘기
+신경남
+신만규
+신순선
+신춘호
+신관돌
+신고준
+신남록
+신충식
+신진호
+신성환
+신환수
+신쾌식
+신소순
+신중도
+신태조
+신태양
+신구길
+신사근
+신중곤
+신태우
+신분상
+신복희
+신영순
+신태운
+신무식
+신석도
+신혁고
+신태진
+신상선
+신재보
+신점덕
+신태휴
+신동호
+신복숙
+신신진
+신판술
+신대오
+신기립
+신정윤
+신필호
+신재한
+신정호
+신태규
+신하규
+신준만
+신태득
+신질주
+신학봉
+신정수
+신조준
+신규영
+신학식
+신병태
+신진석
+신대진
+신한우
+신영성
+신수순
+신형배
+신항식
+신영조
+신영식
+신철규
+신해봉
+신지홍
+신재근
+신성진
+신해식
+신명수
+신건식
+신종천
+신해식
+신석식
+신창성
+신진무
+신현구
+신순희
+신종문
+신구하
+신현구
+신영남
+신제현
+신형달
+신현근
+신용형
+신춘만
+신근오
+신현덕
+신장경
+신차천
+신두태
+신현만
+신상택
+신이술
+신설출
+신현세
+신영용
+신태곤
+신만옥
+신현아
+신보호
+신재조
+신호봉
+신현우
+신선판
+신석호
+신광화
+신현장
+신 수
+신운곤
+신규호
+신현창
+신수철
+신휘재
+신사천
+신현휴
+신삼연
+신월효
+신춘수
+신형휴
+신점학
+신성용
+신준권
+신혜순
+신이이
+신태석
+신기만
+신혜현
+신석식
+신영균
+신영수
+신호우
+신태수
+신상란
+신문기
+신홍순
+신규오
+신원우
+신욱학
+신홍식
+신봉이
+신제기
+신성영
+신홍식
+신기실
+신성환
+신창주
+신홍철
+신보창
+신영석
+신상홍
+신흥식
+신영룡
+신상덕
+신광호
+신흥열
+신정웅
+신헌순
+신신연
+신희성
+신구석
+신경달
+신재명
+심경두
+심효국
+심영호
+심동호
+심경애
+심기학
+심재기
+심용규
+심광수
+심동상
+심무후
+심병동
+심규연
+심임근
+심명환
+심말대
+심근보
+심기식
+심병만
+심차자
+심기택
+심정균
+심차상
+심원희
+심동석
+심경래
+심화수
+심재희
+심동욱
+심완길
+심말이
+심인식
+심명보
+심상수
+심민진
+심임정
+심무자
+심강광
+심현선
+심문재
+심민순
+심광학
+심쌍옥
+심용포
+심복래
+심인조
+심재춘
+심병용
+심부소
+심영수
+심판순
+심규옥
+심부자
+심종순
+심외영
+심영원
+심상섭
+심효근
+심선서
+심언환
+심상열
+심정식
+심갑수
+심윤진
+심상열
+심원오
+심선규
+심종권
+심상희
+심금종
+심원현
+심광부
+심석보
+심성장
+심용조
+심 희
+심설화
+심동섭
+심칠선
+심순호
+심수보
+심진주
+심명주
+심인순
+심영보
+심래진
+심병도
+심판수
+심영봉
+심진태
+심무봉
+심행이
+심영숙
+심권상
+심제하
+심병규
+심재달
+심봉호
+심정목
+심명기
+심재봉
+심상오
+심춘기
+심상윤
+심재용
+심희호
+심명율
+심재한
+심재원
+심종영
+심종동
+심광희
+심재익
+심복재
+심칠근
+심병동
+심재현
+심분운
+심 해
+심재원
+심점철
+심태용
+심근숙
+심이주
+심정섭
+심효화
+심정경
+심월암
+심주섭
+심광현
+심분열
+심윤주
+심중섭
+심귀난
+심제소
+심성현
+심차조
+심태길
+심석순
+심춘봉
+심창섭
+심영준
+심신자
+심순이
+심춘섭
+심종택
+심훈규
+심돈석
+심춘섭
+심동재
+심영완
+심운남
+심태준
+심혁수
+심정국
+심범용
+심해진
+심덕일
+심관수
+심창이
+심현주
+심동중
+심은흠
+심봉준
+안 순
+안용환
+안인란
+안종순
+안갑현
+안득화
+안영숙
+안귀순
+안경숙
+안운석
+안수택
+안순부
+안경숙
+안행동
+안병수
+안영남
+안경옥
+안순조
+안상태
+안영현
+안경조
+안호교
+안병경
+안영조
+안경호
+안원주
+안정희
+안귀태
+안계순
+안원학
+안재화
+안용호
+안광석
+안상도
+안양민
+안태수
+안귀학
+안용봉
+안임경
+안경대
+안규호
+안광훈
+안기수
+안용수
+안도상
+안중석
+안재희
+안대식
+안동문
+안영태
+안범순
+안명식
+안두이
+안영용
+안황호
+안영규
+안말선
+안종열
+안동수
+안성란
+안명준
+안재수
+안선만
+안일순
+안미애
+안학원
+안상팔
+안동주
+안미현
+안춘우
+안영화
+안태석
+안민권
+안용미
+안순임
+안월용
+안봉옥
+안재권
+안점곤
+안남순
+안봉조
+안종원
+안태생
+안용계
+안봉하
+안태칠
+안갑주
+안종영
+안분늠
+안춘일
+안현순
+안명지
+안상국
+안지련
+안정수
+안은갑
+안상옥
+안용국
+안제배
+안상열
+안상용
+안근오
+안재규
+안근근
+안상태
+안일진
+안해훈
+안순담
+안설아
+안정용
+안순현
+안기하
+안성섭
+안호규
+안국미
+안준곤
+안성은
+안태희
+안경용
+안말택
+안성일
+안석지
+안연규
+안충렬
+안성철
+안궁석
+안유현
+안쌍식
+안성호
+안소순
+안준식
+안성권
+안성희
+안진철
+안한식
+안상진
+안세방
+안주정
+안갑홍
+안정한
+안수남
+안병현
+안종화
+안용호
+안수용
+안창웅
+안태재
+안보철
+안수정
+안신휴
+안장영
+안순석
+안수천
+안영관
+안영탁
+안경영
+안순득
+안영부
+안종관
+안성기
+안순자
+안죽중
+안성술
+안태일
+안순희
+안재용
+안달권
+안계필
+안승수
+안병기
+안형열
+안현치
+안신철
+안동순
+안갑동
+안판태
+안영경
+안명덕
+안재욱
+안창수
+안영근
+안재건
+안분자
+안승선
+안영달
+안문영
+안해식
+안수권
+안영무
+안영문
+안연희
+안정탁
+안영수
+안만만
+안정란
+안남수
+안영주
+안 용
+안헌용
+안순태
+안영철
+안윤택
+안문자
+안종권
+안영한
+안종석
+안정두
+안정수
+안영호
+안완룡
+안태덕
+안경갑
+안용수
+안금노
+안종곤
+안순근
+안용태
+안석도
+안선영
+안정화
+안용환
+안동자
+안건호
+안일인
+안윤정
+안정곤
+안주기
+안종일
+안은미
+안호태
+안만식
+안한현
+안일훈
+안 동
+안만수
+안운종
+안재관
+안현영
+안지용
+안일수
+안재원
+안응호
+안건규
+안경원
+안재희
+안자원
+안양자
+안상안
+안정웅
+안성옥
+안분용
+안영도
+안정현
+안영식
+안보란
+안무호
+안정호
+안성길
+안정분
+안영대
+안종갑
+안일수
+안봉화
+안철록
+안종표
+안홍옥
+안도현
+안부숙
+안태식
+안석순
+안영용
+안해준
+안태식
+안완세
+안해성
+안병순
+안평수
+안종환
+안강칠
+안재용
+안피가로
+안영환중
+안정춘오
+안영권정
+안학주
+안순달
+안돈자
+안두수
+안해숙
+안권호
+안교갑
+안삼주
+안현석
+안말세
+안완호
+안병영
+안현숙
+안진수
+안충조
+안종환
+안형대
+안윤우
+안태남
+안영경
+안호섭
+안은만
+안태유
+안근수
+안호준
+안영수
+안연규
+안상익
+안홍문
+안해동
+안광택
+안경근
+안홍수
+안진희
+안현영
+안점수
+안효문
+안영식
+안이국
+안택태
+안효용
+안광수
+안운상
+안우일
+안희도
+안종용
+안정옥
+안재록
+양갑석
+양은석
+양온숙
+양충도
+양갑승
+양기식
+양영도
+양규남
+양경미
+양명숙
+양동기
+양호교
+양경화
+양선태
+양대자
+양복옥
+양구현
+양동덕
+양갑철
+양수채
+양귀선
+양계범
+양학호
+양금자
+양금옥
+양장구
+양진수
+양경환
+양기준
+양정수
+양병철
+양증근
+양기철
+양신진
+양정석
+양금연
+양대길
+양운술
+양이휴
+양영화
+양도일
+양봉원
+양수수
+양영길
+양동명
+양연출
+양진황
+양학진
+양동문
+양경진
+양태만
+양윤식
+양동연
+양해이
+양수수
+양태식
+양만수
+양병호
+양재채
+양성주
+양면수
+양성조
+양봉희
+양삼훈
+양면수
+양소경
+양완교
+양정휴
+양문현
+양경섭
+양말주
+양창봉
+양미경
+양상희
+양창조
+양순곤
+양부석
+양규수
+양성석
+양일열
+양사용
+양봉환
+양수수
+양용식
+양삼순
+양동종
+양윤호
+양용자
+양상근
+양순진
+양홍권
+양재덕
+양상열
+양상연
+양소현
+양용선
+양상환
+양동수
+양익영
+양애태
+양선길
+양영호
+양한영
+양영태
+양성경
+양희성
+양의경
+양병남
+양성관
+양현태
+양달정
+양홍태
+양성옥
+양무우
+양환영
+양응국
+양성옥
+양옥희
+양진수
+양영석
+양성욱
+양호식
+양상권
+양용수
+양성훈
+양승진
+양선영
+양기남
+양소록
+양경인
+양철희
+양성순
+양순심
+양순규
+양영율
+양종헌
+양순연
+양인분
+양준자
+양현규
+양순용
+양상희
+양한년
+양인철
+양승태
+양운이
+양태만
+양연창
+양연옥
+양헌오
+양갑복
+양인호
+양연용
+양동기
+양기식
+양종용
+양영규
+양종식
+양태숙
+양태열
+양영규
+양원희
+양기준
+양용우
+양영만
+양애철
+양춘택
+양분중
+양영석
+양담조
+양우순
+양용리
+양영선
+양기원
+양순섭
+양기주
+양옥조
+양상원
+양춘태
+양태옥
+양용이
+양영식
+양영탁
+양연호
+양용판
+양선준
+양오호
+양말해
+양월임
+양영현
+양세근
+양성식
+양유호
+양하환
+양종묵
+양구상
+양은옥
+양봉삼
+양일우
+양정기
+양을생
+양두형
+양현갑
+양동식
+양장수
+양정자
+양화성
+양규희
+양재철
+양용택
+양철호
+양근점
+양재철
+양종헌
+양판호
+양외규
+양재헌
+양외복
+양영갑
+양정동
+양정석
+양용석
+양철곤
+양학현
+양정호
+양근자
+양준규
+양근대
+양정환
+양정권
+양점철
+양학금
+양증수
+양인현
+양부숙
+양규암
+양진석
+양분지
+양재목
+양교환
+양진태
+양해택
+양시호
+양근규
+양차수
+양영환
+양태숙
+양종원
+양철곤
+양진일
+양판민
+양종기
+양춘립
+양기분
+양현근
+양상해
+양해근
+양수지
+양연현
+양태웅
+양해장
+양홍애
+양태수
+양선득
+양헌도
+양윤숙
+양수자
+양수관
+양현석
+양경준
+양점이
+양장용
+양형학
+양성동
+양준관
+양윤훅
+양호승
+양종호
+양해동
+양덕진
+어문조
+어원중
+어동혁
+어근철
+어현태
+어종목
+어재구
+어위수
+엄간직
+엄기호
+엄경진
+엄원현
+엄계봉
+엄말남
+엄재수
+엄우수
+엄규현
+엄환수
+엄판자
+엄해선
+엄기환
+엄남연
+엄정섭
+엄휘도
+엄막이
+엄상수
+엄봉희
+엄범진
+엄삼주
+엄우식
+엄해원
+엄상수
+엄상기
+엄위헌
+엄규수
+엄병대
+엄상용
+엄자수
+엄운진
+엄성구
+엄상용
+엄판수
+엄수조
+엄장호
+엄상우
+엄석호
+엄상수
+엄규숙
+엄성일
+엄갑길
+엄시근
+엄창선
+엄성흠
+엄사순
+엄수홍
+엄명규
+엄소덕
+엄찬근
+엄병학
+엄광홍
+엄소점
+엄재출
+엄효환
+엄정숙
+엄영섭
+엄석석
+엄명형
+엄승효
+엄외덕
+엄수조
+엄상대
+엄세재
+엄용덕
+엄갑선
+엄순국
+엄재율
+엄익균
+엄정연
+엄준순
+엄자자
+엄익기
+엄병귀
+엄태철
+엄상돌
+엄익덕
+엄만태
+엄진호
+엄우동
+엄정섭
+엄강술
+엄순복
+엄규철
+엄정자
+엄홍수
+엄정대
+엄도늠
+엄종섭
+엄상만
+엄정수
+엄원윤
+엄주섭
+엄중양
+엄영희
+엄일재
+엄중현
+엄영수
+엄계도
+엄윤규
+엄필화
+엄병영
+엄옥영
+엄원선
+엄호진
+엄희택
+엄종호
+엄상건
+엄희순
+엄경조
+엄맹덕
+엄용헌
+여기동
+여영년
+여석환
+여태식
+여기연
+여희칠
+여용구
+여철출
+여남환
+여윤훈
+여순대
+여재광
+여맹동
+여진태
+여동영
+여학숙
+여명환
+여용수
+여보춘
+여만술
+여병기
+여영섭
+여재갑
+여옥수
+여보연
+여태열
+여태태
+여병식
+여복연
+여정휴
+여신헌
+여한근
+여상갑
+여두태
+여동욱
+여판명
+여상균
+여용운
+여종현
+여영묵
+여상근
+여응행
+여일출
+여병식
+여상덕
+여종용
+여태윤
+여희호
+여상목
+여명길
+여정원
+여철준
+여상선
+여성이
+여승곤
+여병식
+여상연
+여경남
+여종수
+여태란
+여상우
+여성수
+여숭인
+여동식
+여상욱
+여선봉
+여오희
+여용용
+여상천
+여수록
+여영순
+여분봉
+여상헌
+여재준
+여재현
+여영태
+여상화
+여부자
+여근만
+여쌍수
+여석동
+여대연
+여광선
+여옥시
+여석윤
+여정한
+여상자
+여용우
+여성연
+여동팔
+여용석
+여두생
+여수용
+여영영
+여종봉
+여경숙
+여수원
+여대재
+여점금
+여종순
+여수철
+여종수
+여창술
+여성숙
+여술용
+여갑순
+여진식
+여소암
+여언숙
+여종현
+여재기
+여태한
+여원동
+여갑연
+여준득
+여상욱
+여원석
+여창근
+여병숙
+여태운
+여유동
+여영수
+여성상
+여명준
+여인협
+여부곤
+여재일
+여태이
+여재희
+여성택
+여길수
+여수건
+여점악
+여병호
+여대재
+여판봉
+여점출
+여병선
+여선우
+여동철
+여정구
+여성록
+여상호
+여상분
+여중갑
+여영현
+여성전
+여태현
+여청길
+여만훈
+여세경
+여명선
+여태순
+여용남
+여종만
+여의창
+여태욱
+여광호
+여헌원
+여융식
+여학동
+여치애
+여보형
+여환봉
+여해동
+여종태
+여대구
+여상일
+여홍민
+여용양
+여윤환
+여현수
+여환수
+여오석
+여재훈
+여경도
+여환식
+여연도
+여기갑
+여길태
+여환옥
+여근우
+여재만
+여왕길
+염곡지
+염인열
+염영자
+염주식
+염기천
+염봉덕
+염기화
+염주우
+염대득
+염남호
+염윤태
+염재배
+염덕술
+염지임
+염갑석
+염병례
+염상우
+염경진
+염소용
+염석희
+염숙이
+염정일
+염호우
+염면철
+염용준
+염태호
+염점학
+염남득
+염인실
+염식석
+염규창
+염경만
+염점례
+염상우
+염홍택
+염기권
+염종덕
+염근선
+염성호
+염종도
+염종환
+염영상
+염수이
+염종갑
+예수해
+예세식
+예임일
+예진배
+예용해
+예명동
+예승조
+예상범
+예종락
+예남률
+예회진
+예성환
+예한식
+예성호
+예수태
+예재숙
+예한태
+예규자
+예영용
+예석연
+오갑선
+오상순
+오점진
+오정만
+오건국
+오석홍
+오경용
+오근재
+오경렬
+오순익
+오갑완
+오명표
+오경출
+오을수
+오철옥
+오소균
+오경환
+오근호
+오길립
+오동우
+오경환
+오경표
+오종기
+오점학
+오경환
+오재복
+오두모
+오종호
+오광석
+오금수
+오치식
+오금정
+오광열
+오판용
+오하규
+오영만
+오광태
+오성열
+오정이
+오용식
+오광환
+오지열
+오부구
+오두학
+오국창
+오춘길
+오경문
+오삼희
+오귀님
+오상홍
+오봉란
+오경만
+오규식
+오천남
+오인섭
+오치희
+오규영
+오규용
+오방덕
+오근호
+오규오
+오제석
+오동돌
+오기학
+오규오
+오성동
+오용조
+오성상
+오규현
+오효래
+오영술
+오영식
+오근수
+오동성
+오문태
+오덕선
+오근식
+오홍경
+오병옥
+오용경
+오금이
+오분말
+오수연
+오겸만
+오기주
+오명찬
+오창호
+오태정
+오기환
+오영만
+오재석
+오덕용
+오기환
+오도원
+오광석
+오경업
+오난주
+오극식
+오기성
+오병자
+오남진
+오홍현
+오경태
+오태찬
+오남진
+오진춘
+오 연
+오종곤
+오달선
+오재익
+오상현
+오남식
+오달환
+오태암
+오연용
+오민웅
+오대근
+오의일
+오수규
+오진수
+오대용
+오남자
+오종권
+오용준
+오덕만
+오호홍
+오재현
+오준립
+오덕호
+오정이
+오용환
+오강영
+오도덕
+오병철
+오성용
+오은수
+오도현
+오명현
+오재난
+오진달
+오동연
+오원록
+오태민
+오승순
+오동열
+오가한
+오삼명
+오상희
+오동춘
+오년환
+오홍중
+오규순
+오동환
+오헌모
+오점석
+오선익
+오득조
+오외향
+오금분
+오태석
+오득환
+오휘호
+오병자
+오학웅
+오명록
+오혜세
+오점호
+오원야
+오명수
+오상순
+오윤현
+오종진
+오명숙
+오형희
+오찬남
+오한석
+오명희
+오태화
+오성호
+오하태
+오명희
+오장정
+오증주
+오영학
+오문갑
+오춘수
+오성희
+오시래
+오문환
+오정진
+오학덕
+오정정
+오병권
+오옥연
+오덕두
+오국도
+오병수
+오재옥
+오동순
+오영영
+오병철
+오유옥
+오태규
+오삼연
+오병훈
+오성채
+오태배
+오상이
+오복남
+오점한
+오옥숙
+오영덕
+오봉춘
+오청배
+오용호
+오현석
+오봉현
+오필지
+오규홍
+오철암
+오부길
+오경식
+오재동
+오영목
+오분석
+오용완
+오종환
+오세백
+오삼용
+오정표
+오규교
+오석균
+오삼용
+오영순
+오구철
+오수현
+오상근
+오만철
+오상옥
+오순수
+오상만
+오동출
+오창세
+오창현
+오상세
+오삼득
+오영영
+오현철
+오상조
+오순권
+오종규
+오선환
+오석만
+오윤창
+오순정
+오대영
+오석순
+오창호
+오희구
+오수계
+오석현
+오영용
+오운국
+오종술
+오선미
+오복임
+오영덕
+오븝숙
+오선숙
+오재학
+오숙태
+오덕석
+오성근
+오순원
+오성석
+오철연
+오성득
+오진구
+오복규
+오길조
+오성열
+오 욱
+오병조
+오규한
+오성찬
+오귀순
+오영열
+오곤조
+오세광
+오정곤
+오일익
+오기호
+오세웅
+오광봉
+오상수
+오수욱
+오세원
+오재영
+오종순
+오봉조
+오세인
+오진진
+오용철
+오옥구
+오세일
+오윤용
+오후술
+오필열
+오수현
+오재자
+오헌석
+오명희
+오수환
+오대도
+오수훈
+오상영
+오순화
+오세자
+오용식
+오재자
+오술현
+오효규
+오영원
+오갑환
+오승열
+오두학
+오정호
+오옥준
+오연석
+오재수
+오금돌
+오귀동
+오연호
+오한업
+오태권
+오정열
+오염각
+오흥순
+오상선
+오기복
+오영식
+오명동
+오익우
+오말기
+오영화
+오수자
+오대준
+오순호
+오영환
+오부갑
+오정철
+오원준
+오오환
+오쌍권
+오관도
+오석상
+오옥선
+오한열
+오규선
+오용식
+오왕수
+오상흠
+오범순
+오인익
+오용술
+오경순
+오정용
+오성호
+오우춘
+오숙경
+오문빈
+오만수
+오운용
+오태상
+오창수
+오갑한
+오원문
+오영섭
+오해배
+오준수
+오원배
+오병정
+오칠균
+오영열
+오원선
+오재재
+오화기
+오수섭
+오원수
+오문모
+오임희
+오삼진
+오월봉
+오운옥
+오종환
+오오학
+오윤규
+오재재
+오장기
+오병홍
+오윤복
+오옥호
+오희희
+오동돌
+오윤해
+오영자
+오중찬
+오을완
+오윤환
+오재환
+오복재
+오윤진
+오은도
+오선근
+오병철
+오삼석
+오은환
+오해년
+오윤식
+오학동
+오의열
+오순환
+오대열
+오종운
+오인현
+오성주
+오상화
+오삼호
+오일성
+오영백
+오영원
+오정걸
+오임석
+오광구
+오근한
+오상호
+오자종
+오규기
+오성광
+오주용
+오재곤
+오장모
+오정규
+오미경
+오재권
+오혜호
+오윤표
+오소태
+오재근
+오영팔
+오정섭
+오태원
+오재동
+오덕웅
+오태열
+오한성
+오재범
+오윤호
+오제분
+오원태
+오재석
+오영기
+오원주
+오병흠
+오재수
+오찬석
+오태이
+오정상
+오재순
+오헌기
+오막정
+오상기
+오재영
+오대향
+오상혁
+오선배
+오재용
+오소진
+오국춘
+오인봉
+오재용
+오승원
+오희조
+오두근
+오재우
+오경문
+오형옥
+오일운
+오재윤
+오영대
+오홍길
+오태도
+오재일
+오창훈
+오택흠
+오선학
+오재천
+오상일
+오병종
+오점보
+오재춘
+오용선
+오만준
+오광만
+오점순
+오복억
+오태태
+오순곤
+오점환
+오장인
+오진인
+오창균
+오정래
+오상연
+오상원
+오병우
+오정애
+오문근
+오현규
+오재섭
+오정열
+오장덕
+오동곤
+오경선
+오정열
+오영욱
+오갑헌
+오상기
+오정현
+오승구
+오정연
+오현준
+오정호
+오윤출
+오민선
+오윤상
+오정환
+오덕철
+오록숙
+오광대
+오정환
+오은욱
+오재재
+오태돌
+오제열
+오재옥
+오영주
+오봉수
+오종수
+오상재
+오정선
+오삼일
+오종탁
+오정영
+오종옥
+오원균
+오종호
+오재화
+오종문
+오원순
+오종화
+오성일
+오영복
+오진호
+오종환
+오선경
+오의연
+오근상
+오주범
+오희호
+오규수
+오길기
+오준표
+오명식
+오태혁
+오태환
+오준현
+오원성
+오해장
+오영규
+오준호
+오병석
+오호배
+오종준
+오준환
+오점호
+오재휴
+오남수
+오준희
+오남현
+오영순
+오홍종
+오중열
+오명철
+오계운
+오홍건
+오창국
+오무호
+오언수
+오길성
+오창환
+오금태
+오상영
+오찬계
+오춘자
+오우생
+오보조
+오영성
+오칠규
+오종영
+오말도
+오봉술
+오칠옥
+오수환
+오영성
+오용필
+오칠환
+오낙진
+오재로
+오동용
+오칠환
+오정봉
+오종순
+오용식
+오타분
+오점규
+오정춘
+오성태
+오태수
+오판연
+오점숙
+오기순
+오태재
+오홍한
+오석의
+오대숙
+오태준
+오명호
+오준숙
+오동섬
+오태진
+오영일
+오일학
+오종식
+오태호
+오욱준
+오동식
+오월수
+오태환
+오찬수
+오태석
+오종식
+오판진
+오영기
+오동달
+오문효
+오학근
+오영림
+오상현
+오용수
+오한권
+오광우
+오달희
+오남심
+오한철
+오영기
+오돈수
+오순암
+오해근
+오방고
+오태열
+오원근
+오해만
+오학이
+오영분
+오의열
+오해찬
+오용동
+오재기
+오동철
+오헌철
+오영택
+오말홍
+오헌교
+오혜정
+오윤순
+오주래
+오영을
+오호이
+오광길
+오한호
+오중교
+오호찬
+오승헌
+오상성
+오기란
+오화자
+오문기
+오교호
+오태철
+오화진
+오점택
+오정환
+오상동
+오효재
+오한갑
+오진인
+오문이
+오흥열
+오옥한
+오현흠
+오용근
+오희숙
+오삼환
+오충천
+오기운
+옥유봉
+옥정팔
+옥재주
+옥종래
+왕태호
+왕동숙
+왕병상
+왕상정
+우도열
+우덕란
+우찬호
+우노조
+우명구
+우근복
+우교대
+우수득
+우봉천
+우의수
+우종철
+우영현
+우상선
+우두철
+우도명
+우점연
+우상선
+우장수
+우한율
+우용기
+우상수
+우증곤
+우성열
+우매주
+우상수
+우대식
+우용남
+우규목
+우상현
+우종태
+우정자
+우덕제
+우석조
+우순일
+우재재
+우창순
+우성균
+우병민
+우진수
+우병호
+우성용
+우창호
+우용대
+우종윤
+우세근
+우재명
+우순화
+우경숙
+우수영
+우선경
+우막수
+우소조
+우수하
+우영교
+우규보
+우종향
+우순례
+우종술
+우일복
+우만옥
+우실용
+우윤수
+우종수
+우규수
+우영문
+우근술
+우재영
+우용영
+우영태
+우종점
+우문헌
+우종차
+우옥기
+우수익
+우갑우
+우필규
+우원환
+우희암
+우정식
+우중호
+우위선
+우명수
+우우애
+우종순
+우인걸
+우귀화
+우순숙
+우언선
+우인걸
+우종열
+우명현
+우수권
+우정순
+우범열
+우진실
+우동환
+우정임
+우문수
+우만태
+우영명
+우종곤
+우태규
+우재모
+우광식
+우종보
+우화철
+우병석
+우병섭
+우종열
+우갑문
+우갑하
+우일환
+우종필
+우홍식
+우순식
+우진곤
+우종학
+우재옥
+우중목
+우오조
+우종환
+우순수
+우만술
+우호수
+우종희
+우재환
+우윤해
+우상문
+우진호
+우옥성
+우영성
+우공남
+우창효
+우만기
+우종윤
+우쌍용
+우치홍
+우동문
+우봉정
+우점학
+우태섭
+우병순
+우종자
+우용보
+우행자
+우홍주
+우소현
+우일호
+우화춘
+우상태
+우순남
+우이술
+우희도
+우홍생
+우주종
+우우혁
+우희조
+우학상
+우덕섭
+우혜숙
+원영옥
+원연규
+원훈규
+원태재
+원용주
+원성득
+원상곤
+원태금
+원종길
+원원래
+원봉래
+원순수
+위성기
+위순규
+위판희
+위형덕
+유갑용
+유화목
+유규분
+유익국
+유갑진
+유해단
+유상근
+유종성
+유경수
+유현심
+유인선
+유용식
+유경열
+유상선
+유한덕
+유천출
+유경재
+유장숙
+유혜열
+유교완
+유경재
+유정수
+유귀미
+유분식
+유경종
+유희일
+유순식
+유의수
+유경팔
+유석선
+유숙수
+유효춘
+유경희
+유춘선
+유혜환
+유판술
+유계열
+유순천
+유영순
+유갑석
+유광열
+유규출
+유두구
+유수호
+유광우
+유춘만
+유태해
+유동동
+유광익
+유달수
+유병생
+유정식
+유광자
+유정석
+유만랑
+유판희
+유귀분
+유동오
+유재근
+유봉필
+유귀연
+유용수
+유경균
+유병대
+유근배
+유의동
+유경주
+유재근
+유근선
+유방호
+유정이
+유재선
+유근식
+유인권
+유희선
+유기성
+유기범
+유성숙
+유상석
+유수원
+유기재
+유환형
+유태근
+유다수
+유길돌
+유중정
+유만배
+유호권
+유남재
+유일정
+유해연
+유봉희
+유달수
+유순수
+유태기
+유동순
+유대근
+유용구
+유기악
+유건철
+유대근
+유청희
+유대환
+유상환
+유대만
+유영시
+유성숙
+유영성
+유대원
+유종표
+유순기
+유영수
+유덕환
+유두정
+유기선
+유재환
+유덕희
+유오배
+유학범
+유호현
+유동일
+유달수
+유청식
+유명웅
+유동재
+유현수
+유해돌
+유광봉
+유동희
+유순훈
+유한봉
+유영칠
+유두식
+유종도
+유문임
+유대희
+유두연
+유삼호
+유호택
+유옥현
+유득환
+유강수
+유일웅
+유무찬
+유만섭
+유남남
+유칠국
+유규환
+유만재
+유용정
+유병기
+유종세
+유말임
+유대해
+유용식
+유홍희
+유명대
+유재호
+유진남
+유문덕
+유명열
+유동우
+유형창
+유윤익
+유명의
+유영열
+유종일
+유헌남
+유무상
+유귀우
+유헌필
+유철열
+유무하
+유오경
+유재전
+유복영
+유문재
+유명도
+유재여
+유실재
+유문재
+유순희
+유의숙
+유점화
+유미영
+유 훈
+유상경
+유병수
+유민자
+유주갑
+유태태
+유순봉
+유배근
+유오술
+유동진
+유타리
+유병관
+유동수
+유영덕
+유재현
+유병권
+유효조
+유상자
+유덕용
+유병규
+유명구
+유봉회
+유복희
+유병길
+유기주
+유성식
+유동식
+유병대
+유대수
+유소용
+유점영
+유병덕
+유점성
+유영윤
+유설숙
+유병두
+유춘영
+유중조
+유상종
+유병래
+유갑철
+유영말
+유진천
+유병록
+유영호
+유현규
+유영호
+유병묵
+유인준
+유채석
+유환수
+유병묵
+유영휴
+유현자
+유근용
+유병문
+유삼래
+유선택
+유임길
+유병배
+유무열
+유연복
+유기제
+유병석
+유임수
+유호교
+유삼진
+유병섭
+유현동
+유종학
+유영호
+유병수
+유춘남
+유정순
+유윤길
+유병순
+유용규
+유기식
+유승란
+유병열
+유정경
+유금팔
+유숙원
+유병영
+유명로
+유영열
+유병옥
+유병옥
+유동문
+유창생
+유용황
+유병완
+유응희
+유영용
+유덕녀
+유병외
+유주갑
+유영순
+유세호
+유병용
+유순순
+유태호
+유원한
+유병원
+유경섭
+유우섭
+유희욱
+유병원
+유원달
+유상상
+유차문
+유병윤
+유홍암
+유수수
+유성득
+유병은
+유광대
+유태여
+유재술
+유병이
+유옥배
+유정기
+유석리
+유병주
+유헌자
+유종환
+유석제
+유병주
+유덕식
+유영순
+유용문
+유병주
+유춘영
+유근석
+유명근
+유병철
+유상수
+유순용
+유순봉
+유병철
+유종락
+유부영
+유정학
+유병출
+유영순
+유정일
+유소남
+유병충
+유효순
+유정수
+유호곤
+유병태
+유칠근
+유대철
+유판진
+유병택
+유명세
+유정석
+유종환
+유병하
+유상수
+유의주
+유구원
+유병현
+유영수
+유효균
+유갑대
+유병호
+유무원
+유현희
+유봉상
+유병호
+유경선
+유종봉
+유순자
+유병훈
+유양숙
+유성환
+유 서
+유봉덕
+유순웅
+유응항
+유미섭
+유봉식
+유동식
+유학창
+유동전
+유삼수
+유명판
+유순숙
+유경국
+유상근
+유옥조
+유두복
+유봉락
+유상근
+유윤수
+유일영
+유태화
+유상근
+유규화
+유성용
+유성규
+유상길
+유창덕
+유성일
+유정주
+유상덕
+유철태
+유용선
+유도식
+유상천
+유종식
+유용환
+유종천
+유상태
+유선중
+유점수
+유인한
+유석재
+유문완
+유한필
+유봉문
+유석재
+유봉식
+유충경
+유지지
+유석호
+유성운
+유수숙
+유병해
+유선자
+유영시
+유조수
+유상자
+유선태
+유종석
+유준교
+유분구
+유성수
+유종근
+유태한
+유기수
+유성자
+유선원
+유진달
+유계희
+유성재
+유외식
+유용근
+유성수
+유세록
+유태원
+유양근
+유영건
+유소선
+유장덕
+유수선
+유인경
+유소순
+유창기
+유동권
+유원수
+유송옥
+유순욱
+유성표
+유갑효
+유수남
+유순환
+유달준
+유소은
+유숙자
+유재권
+유용도
+유종관
+유숙희
+유상옥
+유신호
+유춘각
+유순도
+유순수
+유석상
+유현돌
+유순연
+유태권
+유윤정
+유영래
+유순자
+유증운
+유금무
+유화영
+유순조
+유재결
+유순현
+유덕태
+유승교
+유분영
+유기룡
+유정희
+유승훈
+유달근
+유병술
+유종정
+유암이
+유미흠
+유홍원
+유창수
+유애자
+유대순
+유정주
+유홍이
+유애희
+유삼성
+유성희
+유천권
+유양근
+유명태
+유성수
+유언생
+유억식
+유상남
+유성현
+유정숙
+유영계
+유곡청
+유창하
+유원학
+유영수
+유선성
+유문판
+유은강
+유영순
+유선재
+유오찬
+유명록
+유영재
+유상준
+유해판
+유우진
+유영팔
+유정남
+유무희
+유미란
+유용구
+유태학
+유상구
+유봉정
+유용구
+유주화
+유종학
+유명호
+유용범
+유기정
+유보용
+유중동
+유용선
+유성준
+유하국
+유수수
+유용수
+유도복
+유종환
+유영순
+유용식
+유일태
+유용선
+유정태
+유용재
+유정현
+유남교
+유칠조
+유용조
+유순완
+유재래
+유분권
+유우길
+유종석
+유정진
+유순현
+유운영
+유정록
+유동곤
+유상도
+유원근
+유진호
+유병재
+유한삼
+유원일
+유재윤
+유이봉
+유동빈
+유원출
+유규진
+유종호
+유용목
+유원호
+유순남
+유정태
+유을휘
+유월식
+유덕두
+유필선
+유민정
+유위상
+유의주
+유재만
+유영철
+유윤상
+유춘춘
+유학석
+유영남
+유윤재
+유병래
+유정임
+유연우
+유은선
+유태수
+유광세
+유명언
+유은전
+유원석
+유만호
+유윤식
+유은정
+유창주
+유재호
+유정훈
+유은진
+유점덕
+유용근
+유정호
+유을수
+유태만
+유유곤
+유수병
+유을희
+유상태
+유무옥
+유항이
+유인봉
+유상웅
+유병길
+유재오
+유인재
+유문환
+유금순
+유준성
+유일성
+유영호
+유대택
+유성기
+유일성
+유종숙
+유길중
+유재용
+유일성
+유상훈
+유영규
+유원훈
+유장리
+유환웅
+유정국
+유균술
+유재견
+유석구
+유상수
+유상정
+유재곤
+유태식
+유수수
+유은근
+유재근
+유식갑
+유미만
+유순자
+유재도
+유창호
+유영출
+유상우
+유재등
+유필진
+유남만
+유운현
+유재만
+유재훈
+유용원
+유태달
+유재사
+유재종
+유화희
+유일운
+유재선
+유판균
+유청태
+유정연
+유재선
+유호암
+유수복
+유옥열
+유재성
+유만열
+유월엽
+유순태
+유재수
+유영조
+유수범
+유재태
+유재수
+유창점
+유영수
+유응찬
+유재영
+유정진
+유삼연
+유정만
+유재영
+유종원
+유용정
+유충자
+유재용
+유동수
+유재술
+유정달
+유재웅
+유주배
+유주일
+유우배
+유재철
+유인경
+유명석
+유호자
+유재호
+유영봉
+유덕출
+유연희
+유재호
+유종원
+유창태
+유기조
+유재홍
+유홍식
+유사수
+유재재
+유재회
+유상관
+유상란
+유계수
+유재훈
+유을선
+유상순
+유남숙
+유재훈
+유정식
+유철식
+유정계
+유재훈
+유인준
+유강영
+유정덕
+유점분
+유백도
+유상호
+유창택
+유점태
+유신욱
+유문수
+유대덕
+유정경
+유성도
+유영병
+유홍한
+유정근
+유국성
+유재종
+유윤현
+유정도
+유일영
+유재곤
+유창종
+유정식
+유광원
+유경현
+유기동
+유정식
+유양권
+유한식
+유영용
+유정식
+유태식
+유익종
+유차한
+유정자
+유은원
+유영이
+유경태
+유정재
+유동웅
+유종현
+유경연
+유정화
+유복식
+유보기
+유영대
+유제연
+유대호
+유원호
+유나국
+유제춘
+유임열
+유말완
+유병곤
+유제호
+유우욱
+유태택
+유동호
+유종군
+유영형
+유기종
+유옥근
+유종수
+유병필
+유광현
+유태난
+유종식
+유장봉
+유성조
+유차출
+유종중
+유순덕
+유복갑
+유순춘
+유종현
+유옥열
+유석운
+유태수
+유지호
+유삼영
+유상구
+유치만
+유진근
+유재희
+유영복
+유월식
+유차석
+유병호
+유기이
+유현염
+유차선
+유학순
+유광훈
+유응식
+유창근
+유영이
+유종기
+유수표
+유춘영
+유병순
+유봉노
+유철시
+유춘자
+유종실
+유용조
+유도진
+유칠용
+유삼원
+유인자
+유병섭
+유태선
+유창용
+유인열
+유철일
+유태수
+유동대
+유윤연
+유혜호
+유태종
+유철영
+유윤철
+유성보
+유판오
+유승원
+유덕철
+유금수
+유필이
+유인근
+유현영
+유재윤
+유한상
+유지암
+유인덕
+유희순
+유한식
+유성구
+유진영
+유병학
+유한열
+유개홍
+유종상
+유기돌
+유한종
+유준수
+유동용
+유수실
+유해년
+유철종
+유화환
+유상택
+유해운
+유종순
+유창청
+유양희
+유해정
+유마하
+유차권
+유철복
+유해준
+유치순
+유근규
+유정숙
+유행지
+유영수
+유경병
+유대수
+유헌식
+유봉철
+유일수
+유정수
+유현식
+유효택
+유찬웅
+유지한
+유현호
+유형호
+유기재
+유말동
+유홍근
+유영교
+유기숙
+유용헌
+유홍재
+유수종
+유중이
+유해달
+유화웅
+유천곤
+유영우
+유외근
+유효덕
+유금식
+유덕관
+유용조
+유효선
+유정귀
+유광우
+유영수
+유후근
+유점봉
+유영도
+유진종
+유휘선
+유동욱
+유재식
+유록규
+유흥관
+유영순
+유영자
+유철경
+유흥기
+유분래
+유익순
+유병수
+육무웅
+육성석
+육동현
+육진중
+육종근
+육충복
+육영규
+육무수
+육종대
+육석익
+육성일
+육귀근
+육희숙
+육의준
+육재표
+육규우
+윤 순
+윤기섭
+윤광휴
+윤화열
+윤갑순
+윤강개
+윤종군
+윤종한
+윤경복
+윤용록
+윤용국
+윤팔연
+윤경식
+윤정등
+윤금철
+윤수년
+윤경조
+윤헌호
+윤정재
+윤 수
+윤경호
+윤명기
+윤천환
+윤설태
+윤경희
+윤주옥
+윤차선
+윤춘석
+윤계연
+윤세선
+윤해자
+윤봉상
+윤공원
+윤낙규
+윤명흥
+윤애환
+윤관식
+윤태현
+윤해우
+윤인학
+윤광기
+윤계준
+윤명선
+윤상조
+윤권식
+윤금기
+윤달철
+윤선용
+윤권정
+윤영기
+윤점창
+윤태찬
+윤귀연
+윤용학
+윤장원
+윤계술
+윤규영
+윤우영
+윤춘구
+윤양진
+윤규영
+윤금식
+윤재수
+윤창규
+윤근만
+윤선태
+윤광조
+윤호계
+윤근수
+윤정선
+윤춘연
+윤재환
+윤금선
+윤주택
+윤태식
+윤춘규
+윤금식
+윤종기
+윤영보
+윤연실
+윤기덕
+윤순구
+윤지해
+윤경교
+윤기연
+윤명황
+윤진환
+윤정기
+윤기원
+윤순근
+윤기태
+윤심영
+윤길기
+윤윤일
+윤영리
+윤병호
+윤남기
+윤영주
+윤재이
+윤종길
+윤남식
+윤용길
+윤원일
+윤득량
+윤대영
+윤재미
+윤용문
+윤상호
+윤대현
+윤본연
+윤혁범
+윤실찬
+윤덕기
+윤병창
+윤춘준
+윤수점
+윤덕준
+윤영호
+윤용원
+윤덕호
+윤도균
+윤소원
+윤영종
+윤흥창
+윤도환
+윤영보
+윤수혁
+윤수기
+윤도희
+윤봉승
+윤안철
+윤옥봉
+윤동식
+윤례균
+윤점남
+윤재식
+윤동환
+윤옥중
+윤창호
+윤웅봉
+윤두기
+윤방동
+윤은학
+윤종휘
+윤두연
+윤종철
+윤해규
+윤옥봉
+윤명국
+윤정철
+윤주식
+윤헌기
+윤명기
+윤정희
+윤상수
+윤병희
+윤모임
+윤홍택
+윤상열
+윤무수
+윤문구
+윤일희
+윤미환
+윤도대
+윤문기
+윤수균
+윤을호
+윤임훈
+윤문영
+윤태규
+윤태남
+윤기철
+윤병관
+윤말현
+윤균호
+윤봉봉
+윤병국
+윤달동
+윤만일
+윤호술
+윤병금
+윤남분
+윤삼기
+윤인철
+윤병기
+윤성순
+윤봉석
+윤권식
+윤병기
+윤명학
+윤진윤
+윤성환
+윤병길
+윤인국
+윤재균
+윤종배
+윤병길
+윤성웅
+윤영갑
+윤인선
+윤병노
+윤상조
+윤순원
+윤덕한
+윤병만
+윤수연
+윤낙석
+윤문묵
+윤병섭
+윤명원
+윤석강
+윤병경
+윤병욱
+윤천삼
+윤용희
+윤병기
+윤병입
+윤민화
+윤병국
+윤재철
+윤병조
+윤중선
+윤문기
+윤인규
+윤병천
+윤광희
+윤임택
+윤정홍
+윤병혁
+윤재흠
+윤종순
+윤재철
+윤병화
+윤기권
+윤상용
+윤성의
+윤보수
+윤영호
+윤삼현
+윤수식
+윤복용
+윤종성
+윤삼출
+윤정동
+윤봉춘
+윤영현
+윤준석
+윤영종
+윤분덕
+윤율정
+윤정중
+윤남헌
+윤분악
+윤정국
+윤복자
+윤대호
+윤분조
+윤손경
+윤진용
+윤홍태
+윤삼수
+윤쌍학
+윤매금
+윤욱생
+윤삼순
+윤주길
+윤성효
+윤성열
+윤삼암
+윤봉환
+윤원성
+윤수동
+윤상기
+윤동윤
+윤승호
+윤호원
+윤상노
+윤석옥
+윤태이
+윤무이
+윤상문
+윤영복
+윤정호
+윤순순
+윤상호
+윤연강
+윤황우
+윤남섭
+윤석기
+윤재현
+윤오일
+윤말용
+윤석암
+윤정천
+윤정열
+윤극상
+윤석용
+윤태란
+윤재근
+윤외세
+윤석주
+윤범하
+윤재회
+윤태열
+윤석찬
+윤삼호
+윤기우
+윤종화
+윤석한
+윤상환
+윤이득
+윤영기
+윤수기
+윤복옥
+윤영호
+윤사분
+윤수원
+윤강악
+윤동식
+윤용명
+윤수한
+윤수청
+윤기성
+윤태현
+윤숙자
+윤태진
+윤장석
+윤현용
+윤순이
+윤기택
+윤성창
+윤분홍
+윤순조
+윤영각
+윤재술
+윤택이
+윤순학
+윤오권
+윤규수
+윤기태
+윤순황
+윤재우
+윤홍연
+윤진학
+윤신오
+윤후우
+윤근차
+윤미복
+윤실경
+윤점기
+윤경수
+윤상호
+윤언기
+윤주대
+윤옥주
+윤영길
+윤언주
+윤보란
+윤상길
+윤등흠
+윤영국
+윤병동
+윤용일
+윤옥웅
+윤영숙
+윤갑환
+윤창경
+윤신영
+윤영임
+윤성순
+윤홍희
+윤학례
+윤영자
+윤정환
+윤오남
+윤장호
+윤영채
+윤영웅
+윤덕순
+윤석환
+윤영화
+윤중호
+윤성석
+윤봉임
+윤영희
+윤수익
+윤기곤
+윤정균
+윤영희
+윤영모
+윤연생
+윤숙구
+윤옥순
+윤국수
+윤춘업
+윤승석
+윤용관
+윤 기
+윤재철
+윤덕국
+윤용근
+윤지결
+윤사출
+윤영순
+윤용수
+윤술태
+윤상복
+윤천량
+윤원식
+윤봉웅
+윤진준
+윤용재
+윤원식
+윤수재
+윤재옥
+윤용규
+윤월만
+윤동연
+윤옥창
+윤점환
+윤을수
+윤수원
+윤용자
+윤봉기
+윤의웅
+윤실철
+윤일동
+윤정희
+윤이수
+윤영호
+윤을재
+윤삼순
+윤인섭
+윤해구
+윤만원
+윤용돌
+윤일식
+윤선호
+윤동열
+윤종식
+윤일식
+윤청열
+윤항수
+윤만곤
+윤일영
+윤삼성
+윤종섭
+윤관효
+윤임순
+윤문하
+윤노철
+윤수환
+윤재기
+윤동복
+윤성호
+윤경선
+윤재성
+윤용모
+윤영수
+윤영식
+윤점식
+윤원용
+윤권배
+윤희태
+윤점원
+윤말호
+윤의수
+윤외석
+윤정규
+윤현화
+윤대석
+윤원술
+윤정길
+윤기준
+윤도태
+윤욱동
+윤정옥
+윤신식
+윤영조
+윤태수
+윤정현
+윤덕중
+윤경도
+윤장수
+윤정호
+윤외석
+윤문식
+윤기식
+윤정효
+윤정건
+윤학식
+윤정조
+윤종각
+윤영문
+윤종룡
+윤억학
+윤종갑
+윤기인
+윤종선
+윤태조
+윤종구
+윤기호
+윤순길
+윤순일
+윤종규
+윤학덕
+윤기윤
+윤병성
+윤종극
+윤준원
+윤재용
+윤신수
+윤종대
+윤덕애
+윤병조
+윤창기
+윤종덕
+윤철순
+윤종남
+윤해세
+윤종덕
+윤순기
+윤판택
+윤정선
+윤종록
+윤영구
+윤범민
+윤정양
+윤종립
+윤태화
+윤주호
+윤수자
+윤종립
+윤태호
+윤운래
+윤옥수
+윤종문
+윤소호
+윤학용
+윤의경
+윤종민
+윤원식
+윤정홍
+윤종재
+윤종석
+윤정배
+윤양백
+윤두이
+윤종선
+윤영순
+윤재성
+윤극용
+윤종설
+윤석욱
+윤윤만
+윤손포
+윤종식
+윤경선
+윤동태
+윤원사
+윤종우
+윤주금
+윤기명
+윤득영
+윤종원
+윤세철
+윤성호
+윤종근
+윤종율
+윤기수
+윤병근
+윤태우
+윤종조
+윤계숙
+윤인상
+윤봉이
+윤종철
+윤윤익
+윤환도
+윤수수
+윤종해
+윤오익
+윤종근
+윤욱순
+윤종희
+윤한관
+윤언건
+윤미봉
+윤주건
+윤원석
+윤진하
+윤열환
+윤준겸
+윤상덕
+윤성우
+윤경우
+윤중기
+윤삼규
+윤승도
+윤세순
+윤지균
+윤희임
+윤한용
+윤성호
+윤진균
+윤말구
+윤소자
+윤석준
+윤진율
+윤광호
+윤은현
+윤기보
+윤진철
+윤형재
+윤광우
+윤상금
+윤찬기
+윤용현
+윤덕영
+윤태돌
+윤창락
+윤주한
+윤상현
+윤순호
+윤철중
+윤봉석
+윤대룡
+윤원구
+윤충길
+윤계균
+윤명섭
+윤문두
+윤태금
+윤소덕
+윤병식
+윤승준
+윤태수
+윤병숙
+윤정길
+윤필갑
+윤태식
+윤태복
+윤종이
+윤명진
+윤택기
+윤상식
+윤향희
+윤재미
+윤판균
+윤연희
+윤영금
+윤종철
+윤판기
+윤해철
+윤홍희
+윤춘화
+윤판술
+윤길건
+윤기태
+윤전홍
+윤학범
+윤석덕
+윤창식
+윤성순
+윤학원
+윤용호
+윤기노
+윤병구
+윤학조
+윤환기
+윤상성
+윤정열
+윤한동
+윤태이
+윤인현
+윤성훈
+윤한동
+윤한우
+윤용만
+윤선천
+윤한식
+윤용경
+윤경순
+윤좌홍
+윤함균
+윤노언
+윤원수
+윤대수
+윤현교
+윤성리
+윤 득
+윤전금
+윤현숙
+윤성종
+윤태호
+윤영조
+윤현우
+윤명홍
+윤종덕
+윤경수
+윤호용
+윤진교
+윤봉희
+윤희태
+윤화선
+윤홍철
+윤기도
+윤락식
+윤효기
+윤금일
+윤태란
+윤소동
+윤희달
+윤복암
+윤태진
+윤하주
+윤희대
+윤정익
+윤정만
+윤봉봉
+윤희덕
+윤윤식
+윤홍덕
+윤갑원
+윤희선
+윤종규
+윤홍익
+윤성광
+은덕기
+은헌선
+은상순
+은용진
+은충기
+은광희
+은분수
+은순병
+이 건
+이승기
+이원암
+이헌근
+이 경
+이삼해
+이병호
+이용권
+이 상
+이종택
+이성호
+이점백
+이 수
+이영수
+이종순
+이춘영
+이 숙
+이병교
+이정석
+이계조
+이 엄
+이해재
+이재행
+이대출
+이 인
+이창근
+이석원
+이재섭
+이 정
+이정룡
+이태학
+이상연
+이 준
+이순선
+이종권
+이춘석
+이 증
+이춘일
+이정식
+이순구
+이 진
+이정도
+이소자
+이종범
+이 청
+이상희
+이삼수
+이언돌
+이 학
+이함순
+이종재
+이경길
+이 호
+이재환
+이창훈
+이금수
+이 훈
+이음철
+이구용
+이태호
+이 훈
+이도욱
+이상말
+이경철
+이가매
+이종수
+이규만
+이수옥
+이감우
+이성근
+이영출
+이철원
+이갑노
+이세부
+이영성
+이경문
+이갑득
+이상수
+이상환
+이동호
+이갑석
+이경각
+이선호
+이영보
+이갑선
+이준윤
+이고호
+이재기
+이갑수
+이판용
+이종춘
+이윤기
+이갑순
+이승조
+이영호
+이영수
+이갑용
+이선영
+이정근
+이효섭
+이갑용
+이상호
+이점기
+이근학
+이갑임
+이내식
+이상순
+이길동
+이갑임
+이광균
+이면율
+이술갑
+이갑조
+이태분
+이국술
+이재기
+이갑조
+이기도
+이기순
+이효태
+이갑주
+이무식
+이태섭
+이광희
+이강렬
+이기집
+이수숙
+이영규
+이강명
+이은원
+이상식
+이준율
+이강석
+이윤순
+이경수
+이창희
+이강석
+이성화
+이두동
+이성혁
+이강세
+이태자
+이영선
+이재섭
+이강수
+이복종
+이소규
+이재원
+이강식
+이봉수
+이달대
+이갑한
+이강천
+이상율
+이성석
+이광호
+이강호
+이세순
+이수영
+이윤중
+이강호
+이영길
+이수임
+이종훈
+이강희
+이기병
+이범련
+이정수
+이개동
+이무호
+이금동
+이정석
+이개동
+이상수
+이상식
+이동섭
+이건곤
+이병현
+이권향
+이나철
+이건석
+이규자
+이수수
+이경수
+이건영
+이진균
+이선석
+이윤호
+이건옥
+이현도
+이선철
+이용용
+이건웅
+이용영
+이갑분
+이성순
+이건호
+이영서
+이명환
+이정환
+이건희
+이주학
+이윤배
+이종호
+이겸갑
+이미길
+이광만
+이영준
+이겸갑
+이교식
+이복영
+이옥순
+이경근
+이삼화
+이대문
+이문우
+이경노
+이종호
+이종우
+이원현
+이경동
+이외규
+이노회
+이혜옥
+이경동
+이노복
+이재수
+이명제
+이경란
+이찬정
+이정균
+이병원
+이경렬
+이영열
+이선이
+이정수
+이경만
+이남회
+이재덕
+이을만
+이경만
+이윤준
+이동근
+이근원
+이경목
+이점오
+이언봉
+이명환
+이경문
+이성연
+이종길
+이만윤
+이경봉
+이정진
+이금순
+이춘기
+이경석
+이영석
+이경분
+이종록
+이경석
+이중봉
+이명석
+이기관
+이경석
+이태근
+이한용
+이삼숙
+이경석
+이순종
+이삼봉
+이장우
+이경선
+이희원
+이점임
+이봉환
+이경수
+이성성
+이정섭
+이영우
+이경수
+이우철
+이판수
+이중순
+이경숙
+이동석
+이기찬
+이복출
+이경숙
+이상득
+이용선
+이수기
+이경순
+이경동
+이상호
+이구렬
+이경순
+이오진
+이덕덕
+이판길
+이경순
+이선복
+이수동
+이창덕
+이경식
+이정수
+이경용
+이달동
+이경식
+이신권
+이영문
+이말환
+이경암
+이만기
+이순숙
+이봉규
+이경영
+이광길
+이종석
+이순구
+이경옥
+이 화
+이기석
+이삼순
+이경이
+이수환
+이성호
+이명수
+이경자
+이소도
+이경집
+이석술
+이경출
+이우인
+이분관
+이주태
+이경탁
+이종숙
+이노택
+이경도
+이경호
+이종호
+이동수
+이윤분
+이경호
+이삼철
+이희흠
+이길섭
+이경호
+이성수
+이인수
+이창희
+이경후
+이태정
+이영운
+이만상
+이경훈
+이병홍
+이경석
+이주근
+이경희
+이종록
+이혁종
+이채섭
+이경희
+이복조
+이상수
+이차영
+이경희
+이정재
+이종래
+이유근
+이계로
+이정현
+이순기
+이사영
+이계문
+이경환
+이명문
+이정경
+이계분
+이근식
+이윤입
+이호상
+이계분
+이영오
+이점경
+이업철
+이계자
+이공악
+이순동
+이순근
+이계출
+이현강
+이칠완
+이제교
+이계호
+이영선
+이인열
+이장자
+이계홍
+이필구
+이택근
+이정권
+이계화
+이오기
+이춘조
+이여관
+이계훈
+이의식
+이필순
+이용중
+이고훈
+이만립
+이태천
+이재기
+이공만
+이창정
+이계태
+이영수
+이관기
+이명기
+이상배
+이성기
+이관식
+이윤리
+이동수
+이소길
+이관식
+이상철
+이태봉
+이정출
+이관이
+이점동
+이경웅
+이명입
+이관희
+이규용
+이진도
+이병근
+이광덕
+이원일
+이태만
+이분향
+이광배
+이상수
+이대건
+이동환
+이광석
+이위열
+이남식
+이쌍근
+이광석
+이재주
+이태현
+이수용
+이광수
+이종재
+이석성
+이상이
+이광수
+이상배
+이한식
+이긍조
+이광수
+이순자
+이규경
+이금태
+이광수
+이명봉
+이태국
+이상원
+이광수
+이승국
+이병호
+이억자
+이광수
+이석삼
+이상진
+이수화
+이광식
+이동근
+이만완
+이진환
+이광열
+이소곤
+이도원
+이상규
+이광일
+이차식
+이명동
+이태기
+이광자
+이명철
+이한주
+이희국
+이광재
+이종숙
+이종민
+이수희
+이광재
+이만래
+이해필
+이정덕
+이광조
+이기준
+이종순
+이태남
+이광조
+이기리
+이미종
+이세택
+이광준
+이성학
+이복석
+이춘석
+이광택
+이분환
+이윤택
+이종호
+이광행
+이상식
+이희도
+이술조
+이광호
+이만학
+이연택
+이길철
+이광호
+이종술
+이옥용
+이광호
+이광호
+이기관
+이진부
+이한숙
+이광호
+이인윤
+이재우
+이덕경
+이광호
+이승길
+이옥희
+이윤일
+이광호
+이병호
+이태섭
+이임용
+이광희
+이성서
+이규천
+이진훈
+이교선
+이미희
+이춘규
+이기호
+이교주
+이실욱
+이재규
+이준석
+이교주
+이언갑
+이재기
+이판열
+이교철
+이기복
+이흥용
+이종헌
+이구복
+이선동
+이계철
+이용완
+이구원
+이정수
+이영열
+이승태
+이구철
+이호경
+이의복
+이용희
+이구호
+이동흠
+이영분
+이상식
+이구홍
+이상선
+이재만
+이낙수
+이국균
+이갑일
+이해원
+이대석
+이국조
+이중형
+이병달
+이소천
+이국환
+이진태
+이기권
+이육두
+이국희
+이판숙
+이종석
+이자남
+이권도
+이재봉
+이점성
+이태식
+이권순
+이한현
+이종치
+이미광
+이권술
+이교래
+이일진
+이도형
+이권한
+이학도
+이용순
+이명식
+이권호
+이현상
+이태곤
+이남복
+이귀남
+이대식
+이광식
+이근복
+이귀남
+이동우
+이갑용
+이성희
+이귀덕
+이재숙
+이병순
+이순식
+이귀희
+이을이
+이영옥
+이정갑
+이귄식
+이상명
+이장석
+이정익
+이규경
+이학용
+이경배
+이영덕
+이규남
+이성환
+이말규
+이선봉
+이규년
+이수수
+이갑수
+이순구
+이규담
+이영수
+이인용
+이덕기
+이규도
+이옥출
+이병원
+이순고
+이규돈
+이송기
+이용현
+이동열
+이규례
+이상식
+이홍열
+이병환
+이규명
+이동학
+이종근
+이대석
+이규복
+이두상
+이문식
+이준경
+이규복
+이상호
+이양회
+이해섭
+이규부
+이원용
+이병식
+이종기
+이규상
+이원규
+이승우
+이재봉
+이규상
+이갑헌
+이경수
+이성덕
+이규석
+이상호
+이경호
+이병훈
+이규섭
+이태교
+이월연
+이도태
+이규섭
+이의호
+이동점
+이태선
+이규성
+이조관
+이해선
+이승기
+이규숙
+이상춘
+이운칠
+이임증
+이규안
+이원군
+이태환
+이용호
+이규옥
+이진식
+이경진
+이선우
+이규옥
+이기열
+이심오
+이일길
+이규완
+이부환
+이명일
+이석석
+이규완
+이광조
+이춘선
+이운덕
+이규용
+이석봉
+이수용
+이원곤
+이규용
+이원태
+이헌두
+이상동
+이규원
+이두호
+이상기
+이말태
+이규인
+이정범
+이판억
+이정배
+이규주
+이수환
+이수진
+이종숙
+이규진
+이현태
+이순경
+이경욱
+이규진
+이승표
+이영완
+이상근
+이규찬
+이재수
+이정란
+이영량
+이규찬
+이규익
+이한수
+이연규
+이규태
+이정주
+이근해
+이규홍
+이규태
+이해수
+이원문
+이명자
+이규택
+이장자
+이윤호
+이상협
+이규한
+이구순
+이덕언
+이용해
+이규현
+이종우
+이선조
+이호영
+이규홍
+이윤열
+이용희
+이태훈
+이균암
+이수상
+이수암
+이상호
+이균열
+이혜희
+이희문
+이윤동
+이균호
+이중화
+이봉주
+이혜만
+이근갑
+이경병
+이영영
+이춘생
+이근기
+이동용
+이령수
+이낙재
+이근길
+이수선
+이영우
+이미영
+이근배
+이윤원
+이춘식
+이광길
+이근백
+이상호
+이만규
+이순원
+이근범
+이현환
+이순복
+이갑식
+이근보
+이용순
+이성연
+이철병
+이근봉
+이규동
+이영술
+이래형
+이근서
+이정원
+이한만
+이윤치
+이근석
+이창주
+이 환
+이태순
+이근수
+이윤기
+이성석
+이광화
+이근영
+이재향
+이한석
+이수조
+이근우
+이삼술
+이분생
+이성숙
+이근우
+이태례
+이칠수
+이호이
+이근우
+이용대
+이술상
+이경기
+이근준
+이인윤
+이말근
+이영일
+이근중
+이영숙
+이세종
+이영희
+이근직
+이호식
+이우식
+이용형
+이근태
+이영용
+이동용
+이수권
+이근택
+이종수
+이창일
+이완용
+이근호
+이경이
+이기조
+이태규
+이근화
+이창효
+이용환
+이종분
+이근황
+이성진
+이정호
+이맹봉
+이금례
+이순득
+이한호
+이한조
+이금삼
+이옥득
+이명현
+이옥석
+이금석
+이만정
+이용태
+이선식
+이금석
+이덕분
+이성현
+이동갑
+이금석
+이성수
+이대규
+이태만
+이금선
+이종경
+이성세
+이봉수
+이금선
+이동순
+이신석
+이만호
+이금식
+이송숙
+이상옥
+이인봉
+이금연
+이태재
+이말식
+이남현
+이금연
+이복석
+이옥환
+이경택
+이금옥
+이대병
+이수남
+이성용
+이금옥
+이경식
+이수순
+이규동
+이금자
+이태출
+이재배
+이대창
+이금주
+이인수
+이우봉
+이도윤
+이금치
+이정종
+이정연
+이주조
+이기동
+이완준
+이점철
+이병태
+이기로
+이수진
+이갑순
+이흥수
+이기만
+이효남
+이태환
+이계찬
+이기목
+이한철
+이상상
+이이철
+이기병
+이인강
+이성기
+이달환
+이기복
+이원오
+이덕현
+이종숙
+이기분
+이순범
+이인주
+이상심
+이기빈
+이병석
+이길순
+이재보
+이기상
+이경호
+이정현
+이태영
+이기상
+이태철
+이광봉
+이기학
+이기상
+이일연
+이성준
+이의순
+이기생
+이봉우
+이쾌규
+이차만
+이기세
+이종성
+이원근
+이정이
+이기송
+이순민
+이정열
+이정희
+이기순
+이진한
+이도한
+이장인
+이기순
+이채정
+이주희
+이관화
+이기식
+이상규
+이장식
+이의만
+이기암
+이현수
+이상임
+이종국
+이기연
+이채철
+이태근
+이채순
+이기영
+이영동
+이대열
+이재복
+이기영
+이타용
+이진상
+이광철
+이기완
+이윤학
+이원희
+이준천
+이기용
+이순학
+이성옥
+이정계
+이기우
+이주수
+이동순
+이추복
+이기웅
+이충흠
+이석희
+이상석
+이기원
+이병홍
+이대경
+이영효
+이기원
+이대근
+이암진
+이출두
+이기자
+이춘희
+이경희
+이한호
+이기전
+이정숙
+이택득
+이정희
+이기종
+이종훈
+이기수
+이수숙
+이기주
+이두권
+이두갑
+이상수
+이기주
+이판진
+이풍근
+이경열
+이기진
+이부선
+이성작
+이대봉
+이기창
+이정석
+이병열
+이천식
+이기창
+이갑수
+이기수
+이동희
+이기철
+이상동
+이충만
+이팔훈
+이기철
+이성철
+이원식
+이천연
+이기태
+이점태
+이강호
+이낙우
+이기태
+이도표
+이준태
+이용구
+이기태
+이계악
+이한환
+이호술
+이기호
+이상호
+이행근
+이상원
+이기호
+이명문
+이욱운
+이태환
+이기호
+이두일
+이만남
+이선호
+이기홍
+이명중
+이병준
+이부대
+이기홍
+이정숙
+이종현
+이순자
+이기화
+이춘순
+이성현
+이태연
+이기환
+이춘석
+이봉일
+이점로
+이기훈
+이태규
+이소식
+이종섭
+이길석
+이우봉
+이신열
+이영조
+이길선
+이종호
+이희흠
+이대현
+이길용
+이호숙
+이재환
+이성석
+이길용
+이상엽
+이해기
+이재순
+이길재
+이덕환
+이옥래
+이희종
+이길재
+이정응
+이우욱
+이종중
+이길철
+이민술
+이종섭
+이일영
+이길태
+이태석
+이창화
+이진목
+이길한
+이태식
+이순득
+이효회
+이길호
+이종식
+이계순
+이규녀
+이길호
+이천원
+이중호
+이병준
+이길환
+이선상
+이창석
+이동선
+이길휘
+이종경
+이윤용
+이준헌
+이남기
+이부식
+이종오
+이태학
+이남기
+이대근
+이주표
+이일형
+이남덕
+이상환
+이종헌
+이채구
+이남선
+이광구
+이재영
+이재완
+이남순
+이주식
+이정분
+이해주
+이남술
+이선렬
+이영분
+이명희
+이남철
+이경열
+이영웅
+이판동
+이노근
+이광구
+이경상
+이태돌
+이노석
+이성성
+이채희
+이창배
+이노종
+이주우
+이정만
+이영두
+이다순
+이기록
+이상술
+이환동
+이달관
+이형율
+이판연
+이정호
+이달기
+이옥영
+이수석
+이용욱
+이달기
+이분운
+이명룡
+이등주
+이달기
+이계암
+이운민
+이현암
+이달례
+이순환
+이태식
+이은주
+이달로
+이해임
+이영세
+이상이
+이달봉
+이병록
+이 운
+이성용
+이달삼
+이인수
+이해연
+이현순
+이달수
+이신재
+이상복
+이민덕
+이달영
+이순연
+이동기
+이한훈
+이달영
+이수조
+이형출
+이주국
+이달완
+이영팔
+이만미
+이오헌
+이달웅
+이명진
+이세기
+이순주
+이달창
+이우출
+이봉익
+이영수
+이달초
+이영래
+이재동
+이경환
+이달파
+이영환
+이희운
+이헌진
+이달포
+이일분
+이병영
+이성규
+이달호
+이필창
+이정만
+이우국
+이달호
+이우봉
+이철은
+이재현
+이달호
+이찬호
+이상수
+이명재
+이달호
+이종운
+이철돌
+이한암
+이달화
+이장옥
+이근근
+이수자
+이달화
+이해성
+이재해
+이안암
+이달휴
+이한분
+이정수
+이경흔
+이달희
+이순균
+이대희
+이병수
+이대병
+이동성
+이기진
+이동수
+이대석
+이영량
+이기천
+이천덕
+이대성
+이순우
+이기순
+이억수
+이대성
+이양연
+이원만
+이점완
+이대세
+이병량
+이국필
+이병병
+이대세
+이진복
+이헌기
+이태우
+이대식
+이인복
+이석경
+이호진
+이대식
+이동근
+이해식
+이택순
+이대용
+이기연
+이형규
+이연욱
+이대우
+이호복
+이정립
+이병연
+이대우
+이시섭
+이병용
+이성희
+이대우
+이대현
+이주완
+이학우
+이대원
+이석홍
+이진순
+이봉영
+이대항
+이상구
+이두오
+이원수
+이대훈
+이국식
+이봉노
+이일애
+이대훈
+이언주
+이세자
+이신식
+이대희
+이헌근
+이진출
+이남억
+이덕남
+이복권
+이말연
+이화원
+이덕녕
+이쾌덕
+이순해
+이영자
+이덕래
+이문규
+이순수
+이경윤
+이덕배
+이수영
+이태식
+이말호
+이덕봉
+이선남
+이정찬
+이정수
+이덕봉
+이해갑
+이종희
+이정화
+이덕상
+이주순
+이현도
+이태순
+이덕석
+이태환
+이일덕
+이원현
+이덕순
+이영용
+이덕남
+이주복
+이덕순
+이찬찬
+이덕환
+이종림
+이덕순
+이동자
+이미자
+이봉상
+이덕영
+이진연
+이진동
+이한조
+이덕용
+이덕애
+이원이
+이소우
+이덕윤
+이태수
+이옥애
+이영환
+이덕재
+이해헌
+이점인
+이지준
+이덕형
+이용자
+이노수
+이재향
+이덕호
+이대수
+이정순
+이광범
+이덕환
+이국세
+이주동
+이상열
+이덕희
+이우현
+이차율
+이영석
+이덕희
+이상주
+이진환
+이남덕
+이도기
+이길성
+이광진
+이재웅
+이도석
+이태일
+이순효
+이동환
+이도석
+이순덕
+이세선
+이재하
+이도수
+이대수
+이동영
+이상열
+이도원
+이영림
+이진윤
+이종탁
+이도환
+이도희
+이수환
+이한우
+이돈춘
+이상연
+이순현
+이병호
+이동건
+이용강
+이원재
+이재준
+이동규
+이태덕
+이남순
+이영순
+이동균
+이재종
+이두악
+이석열
+이동균
+이영호
+이달만
+이현득
+이동녕
+이현호
+이수태
+이우현
+이동대
+이양철
+이동환
+이산점
+이동만
+이혜강
+이태용
+이주수
+이동발
+이판상
+이선수
+이인웅
+이동봉
+이재권
+이치학
+이희선
+이동석
+이상호
+이광직
+이옥익
+이동석
+이일호
+이해효
+이윤자
+이동석
+이정구
+이돈학
+이찬우
+이동수
+이은득
+이부옥
+이재광
+이동순
+이채길
+이정덕
+이규환
+이동열
+이상인
+이낙수
+이인훈
+이동옥
+이상환
+이양수
+이영석
+이동우
+이덕희
+이경국
+이차구
+이동운
+이정식
+이오헌
+이성영
+이동원
+이지준
+이정경
+이태철
+이동원
+이동희
+이재십
+이광대
+이동원
+이용희
+이규수
+이영인
+이동주
+이태호
+이성호
+이원윤
+이동찬
+이영규
+이만호
+이경도
+이동천
+이대식
+이임섭
+이득태
+이동철
+이영술
+이만홍
+이상해
+이동철
+이일호
+이경순
+이경기
+이동철
+이진미
+이상관
+이영열
+이동춘
+이장수
+이순옥
+이광옥
+이동춘
+이소현
+이판진
+이성이
+이동태
+이차도
+이삼열
+이웅근
+이동태
+이무옥
+이형록
+이용리
+이동학
+이인환
+이인용
+이남섭
+이동해
+이영자
+이성재
+이정국
+이동헌
+이경태
+이홍현
+이대식
+이동헌
+이재제
+이윤용
+이미광
+이동호
+이임조
+이식색
+이장남
+이동호
+이영해
+이해옥
+이희창
+이동훈
+이진호
+이용출
+이상선
+이동훈
+이봉섭
+이태호
+이태경
+이두열
+이연태
+이말돌
+이화인
+이두원
+이점원
+이창덕
+이수목
+이두원
+이상성
+이재준
+이만식
+이두이
+이학목
+이병수
+이순홍
+이두현
+이정수
+이종일
+이영춘
+이두호
+이정분
+이수순
+이현식
+이두환
+이상부
+이웅완
+이건권
+이두희
+이영원
+이추태
+이성열
+이득우
+이순성
+이영도
+이영용
+이득춘
+이태교
+이수웅
+이종곤
+이란순
+이수식
+이오식
+이윤원
+이래연
+이윤균
+이연성
+이경우
+이량균
+이영감
+이종룡
+이승근
+이리자
+이옥생
+이선경
+이성창
+이만경
+이철근
+이두준
+이상동
+이만규
+이명휴
+이택철
+이태래
+이만기
+이용원
+이삼노
+이춘일
+이만도
+이명호
+이성휴
+이정윤
+이만석
+이수상
+이순학
+이창모
+이만석
+이차숙
+이봉남
+이춘용
+이만수
+이윤주
+이종환
+이종수
+이만수
+이호진
+이영원
+이의헌
+이만순
+이호재
+이정문
+이영구
+이만용
+이석환
+이삼헌
+이익종
+이만용
+이일정
+이소수
+이유암
+이만원
+이수득
+이헌술
+이재성
+이만원
+이두휘
+이선권
+이용주
+이만원
+이철순
+이장만
+이권운
+이만원
+이태훈
+이점정
+이현오
+이만원
+이옥홍
+이차운
+이석태
+이만조
+이한규
+이병문
+이호랑
+이만진
+이승철
+이용란
+이순자
+이만화
+이호술
+이병운
+이동권
+이만효
+이재선
+이소수
+이병덕
+이말문
+이상자
+이문호
+이추욱
+이말분
+이기태
+이금연
+이광지
+이말숙
+이홍호
+이삼화
+이명수
+이말순
+이정웅
+이운일
+이연혜
+이말술
+이상배
+이남진
+이종기
+이말여
+이을용
+이영희
+이성이
+이말임
+이덕영
+이병준
+이영균
+이말준
+이수광
+이점주
+이정권
+이말태
+이강덕
+이종기
+이용자
+이맹수
+이재식
+이진순
+이헌선
+이면기
+이정용
+이신순
+이태국
+이면우
+이봉철
+이만완
+이희식
+이면희
+이진이
+이은수
+이광주
+이명근
+이길주
+이완계
+이만희
+이명기
+이기영
+이병탁
+이연표
+이명기
+이봉양
+이재호
+이말희
+이명남
+이재경
+이성춘
+이성하
+이명대
+이종숙
+이수길
+이종태
+이명석
+이형기
+이진철
+이만근
+이명선
+이종순
+이태섭
+이종환
+이명선
+이수수
+이광조
+이정태
+이명섭
+이종용
+이정우
+이동규
+이명성
+이기욱
+이길석
+이봉근
+이명세
+이의두
+이경생
+이석칠
+이명수
+이대환
+이용호
+이병곤
+이명수
+이동분
+이판철
+이영길
+이명수
+이귀남
+이수미
+이경석
+이명숙
+이성태
+이해숙
+이경락
+이명숙
+이성리
+이영조
+이준이
+이명순
+이무훈
+이효학
+이정태
+이명순
+이경자
+이순동
+이등식
+이명술
+이광웅
+이이조
+이윤돌
+이명술
+이선우
+이철국
+이순자
+이명술
+이상분
+이봉호
+이성붕
+이명애
+이금곤
+이기득
+이명문
+이명연
+이차순
+이용환
+이규성
+이명오
+이문환
+이상출
+이기동
+이명오
+이방숙
+이말영
+이태수
+이명오
+이영기
+이헌목
+이상이
+이명원
+이연희
+이은준
+이수포
+이명재
+이말찬
+이병득
+이춘형
+이명조
+이성영
+이광윤
+이점구
+이명진
+이경찬
+이상우
+이달용
+이명학
+이성숙
+이성기
+이윤윤
+이명호
+이미일
+이오수
+이남균
+이명호
+이상권
+이수희
+이정희
+이명환
+이영식
+이만성
+이규곤
+이명환
+이기배
+이성재
+이성찬
+이명환
+이성섭
+이상용
+이해정
+이명환
+이강태
+이종달
+이수수
+이명희
+이응식
+이상술
+이인문
+이명희
+이윤섭
+이문식
+이휘목
+이명희
+이명식
+이진성
+이영수
+이명희
+이영연
+이강윤
+이재환
+이모설
+이창규
+이한자
+이기달
+이묘금
+이귄영
+이극식
+이무용
+이무근
+이수길
+이철수
+이대삼
+이무생
+이정성
+이영수
+이덕규
+이무선
+이영용
+이영태
+이해숙
+이무성
+이동일
+이성창
+이백화
+이무순
+이용자
+이종석
+이수응
+이무순
+이길업
+이순헌
+이상옥
+이무영
+이인란
+이재자
+이차삼
+이무우
+이영기
+이옥칠
+이일익
+이무웅
+이지호
+이현회
+이재식
+이무일
+이정식
+이재석
+이용우
+이무임
+이성길
+이지용
+이헌현
+이무천
+이헌인
+이희권
+이국은
+이무현
+이영주
+이치동
+이창환
+이무현
+이길기
+이미희
+이정덕
+이무호
+이남복
+이영환
+이준우
+이무호
+이정홍
+이순택
+이숙형
+이무호
+이영자
+이동현
+이부동
+이무환
+이인수
+이해선
+이종용
+이문갑
+이덕수
+이영철
+이우상
+이문식
+이태상
+이규민
+이상환
+이문자
+이명완
+이태현
+이진행
+이문출
+이영희
+이경환
+이무순
+이문태
+이기재
+이종규
+이종석
+이문호
+이창원
+이영철
+이병기
+이문호
+이춘규
+이용호
+이병선
+이미경
+이민동
+이점환
+이용배
+이미경
+이정란
+이만철
+이홍현
+이미경
+이달찬
+이성만
+이상규
+이미선
+이옥훈
+이경호
+이만식
+이미숙
+이호상
+이상용
+이왕우
+이미숙
+이만출
+이상범
+이대희
+이미순
+이수화
+이대규
+이수수
+이미원
+이성현
+이인성
+이영숙
+이미자
+이인석
+이종안
+이수수
+이미재
+이춘분
+이정수
+이문훈
+이미현
+이식자
+이창명
+이광원
+이미현
+이대희
+이봉탁
+이윤군
+이민용
+이종대
+이재광
+이태화
+이민우
+이복구
+이상규
+이재환
+이민재
+이영출
+이동덕
+이정웅
+이민준
+이무용
+이광모
+이덕원
+이민철
+이홍우
+이주길
+이주수
+이민호
+이봉동
+이선식
+이동룡
+이민환
+이기득
+이영선
+이순한
+이방남
+이헌희
+이소자
+이차준
+이방실
+이창철
+이한수
+이상현
+이방우
+이홍준
+이규열
+이종식
+이범
+이임
+이상
+이대
+이범경
+이영한
+이승열
+이계련
+이범세
+이영태
+이도덕
+이정주
+이범세
+이상택
+이상득
+이병출
+이범세
+이영태
+이상권
+이윤순
+이범순
+이태권
+이동렬
+이태숙
+이범식
+이봉호
+이홍환
+이임녕
+이범우
+이춘숙
+이용일
+이정석
+이범이
+이순용
+이봉수
+이희열
+이범택
+이성순
+이수석
+이철용
+이병걸
+이윤근
+이운아
+이동의
+이병국
+이석권
+이영우
+이경영
+이병국
+이인복
+이성용
+이혜성
+이병권
+이소석
+이영이
+이인춘
+이병권
+이종연
+이국대
+이재구
+이병규
+이수부
+이병호
+이대수
+이병규
+이정분
+이이식
+이만평
+이병극
+이정우
+이을규
+이수호
+이병극
+이상철
+이건영
+이월진
+이병길
+이한병
+이정원
+이석덕
+이병득
+이명수
+이효익
+이주주
+이병무
+이정우
+이태태
+이석근
+이병삼
+이판영
+이재환
+이원호
+이병선
+이준희
+이태석
+이광기
+이병소
+이문현
+이춘두
+이달호
+이병수
+이성종
+이난복
+이일희
+이병식
+이창영
+이용일
+이창석
+이병옥
+이정현
+이정년
+이명인
+이병우
+이태욱
+이영익
+이정자
+이병욱
+이용호
+이인순
+이순욱
+이병원
+이미호
+이종만
+이석달
+이병원
+이상춘
+이재주
+이학희
+이병윤
+이삼숙
+이철은
+이충해
+이병인
+이춘현
+이정태
+이래호
+이병재
+이영희
+이종복
+이갑희
+이병정
+이규복
+이칠규
+이명기
+이병주
+이태환
+이용준
+이문임
+이병주
+이화수
+이덕동
+이점보
+이병준
+이만선
+이해정
+이담순
+이병찬
+이금선
+이용규
+이한운
+이병천
+이영곤
+이인점
+이병철
+이병철
+이영훈
+이규기
+이영곤
+이병철
+이재우
+이윤범
+이항우
+이병철
+이영지
+이용향
+이종준
+이병철
+이용기
+이이용
+이학철
+이병태
+이성곤
+이손태
+이대선
+이병택
+이강호
+이만규
+이영호
+이병택
+이경식
+이수국
+이창근
+이병필
+이정춘
+이태근
+이기덕
+이병하
+이정염
+이용자
+이길옥
+이병하
+이수래
+이양현
+이대철
+이병한
+이복선
+이호도
+이중자
+이병해
+이두석
+이순래
+이관하
+이병형
+이덕석
+이재조
+이병대
+이병호
+이영만
+이두호
+이창길
+이병호
+이중운
+이만환
+이상섭
+이병홍
+이분선
+이석환
+이홍기
+이병화
+이보근
+이양봉
+이순도
+이병화
+이선규
+이재원
+이선동
+이병화
+이재연
+이소선
+이성자
+이병희
+이경화
+이태서
+이태학
+이보곤
+이종무
+이기봉
+이정열
+이보현
+이석재
+이성성
+이두호
+이복도
+이천근
+이영호
+이판중
+이복림
+이우술
+이을기
+이윤석
+이복생
+이현길
+이우률
+이명부
+이복술
+이재룡
+이호택
+이광교
+이복실
+이종경
+이대석
+이순보
+이복용
+이태순
+이경식
+이숙희
+이복우
+이 용
+이순호
+이춘무
+이복진
+이용진
+이동근
+이용영
+이복출
+이형수
+이일택
+이영중
+이복현
+이천출
+이석환
+이임완
+이봉곤
+이장섭
+이호래
+이기호
+이봉곤
+이재순
+이룡인
+이경식
+이봉규
+이상순
+이종호
+이환식
+이봉기
+이정철
+이중환
+이이봉
+이봉기
+이은주
+이윤애
+이상출
+이봉길
+이상호
+이대식
+이연용
+이봉녀
+이부광
+이상환
+이광환
+이봉녀
+이득연
+이인임
+이의화
+이봉대
+이호모
+이중석
+이오기
+이봉래
+이기술
+이원도
+이차연
+이봉모
+이외조
+이동용
+이기팔
+이봉선
+이곤기
+이익경
+이창지
+이봉영
+이재성
+이종남
+이정호
+이봉주
+이점명
+이수섭
+이기한
+이봉철
+이용현
+이옥동
+이헌회
+이봉춘
+이중부
+이휘동
+이욱수
+이봉헌
+이월춘
+이용구
+이상복
+이봉환
+이영광
+이술숙
+이상도
+이봉환
+이상세
+이순순
+이상복
+이봉희
+이종옥
+이영순
+이중규
+이부길
+이영태
+이장순
+이교용
+이부돌
+이정출
+이창배
+이달성
+이부세
+이주환
+이외록
+이현환
+이부열
+이환경
+이칠출
+이규이
+이분기
+이석운
+이춘식
+이한웅
+이분난
+이응호
+이정기
+이성순
+이분남
+이미형
+이용한
+이용숙
+이분남
+이필모
+이을계
+이연식
+이분선
+이재일
+이재희
+이태식
+이분연
+이충우
+이규철
+이종연
+이분영
+이석학
+이병규
+이성선
+이분이
+이성선
+이호승
+이명순
+이분이
+이안열
+이일한
+이오용
+이분이
+이재욱
+이재태
+이인향
+이분조
+이귀도
+이도길
+이재국
+이분조
+이병희
+이중혁
+이천춘
+이분학
+이선준
+이주선
+이경경
+이분희
+이갑규
+이흥하
+이인운
+이븝세
+이용길
+이소희
+이병왕
+이사련
+이칠호
+이이용
+이지기
+이사조
+이호정
+이현돌
+이수태
+이삼덕
+이재석
+이정자
+이호식
+이삼랑
+이차감
+이연춘
+이종성
+이삼수
+이 환
+이갑섭
+이순구
+이삼수
+이분근
+이삼수
+이주동
+이삼수
+이정영
+이원봉
+이차현
+이삼영
+이해진
+이정희
+이병문
+이삼용
+이태의
+이기숙
+이인환
+이삼조
+이종오
+이용복
+이종신
+이삼조
+이만규
+이운용
+이봉용
+이삼훈
+이삼경
+이해식
+이칠태
+이상경
+이수진
+이진운
+이천송
+이상경
+이한순
+이을수
+이승환
+이상구
+이종운
+이영임
+이장탁
+이상규
+이정우
+이중무
+이증환
+이상균
+이명식
+이소정
+이찬박
+이상근
+이옥기
+이문희
+이근호
+이상근
+이봉건
+이용배
+이선수
+이상근
+이해호
+이영술
+이수금
+이상기
+이병주
+이무선
+이주직
+이상기
+이준영
+이태훈
+이철판
+이상기
+이남근
+이정기
+이정정
+이상길
+이임용
+이정출
+이안훈
+이상달
+이태철
+이건관
+이정평
+이상대
+이분상
+이차순
+이판용
+이상대
+이동수
+이용근
+이순봉
+이상덕
+이희암
+이근경
+이병덕
+이상도
+이점일
+이우기
+이광자
+이상돈
+이영구
+이태규
+이복차
+이상돈
+이찬준
+이용모
+이정용
+이상득
+이민수
+이동돌
+이주태
+이상란
+이순원
+이도호
+이영옥
+이상록
+이경출
+이광식
+이문도
+이상록
+이수식
+이정종
+이성석
+이상률
+이남희
+이병섭
+이재교
+이상모
+이태우
+이성순
+이원기
+이상문
+이영이
+이오천
+이영조
+이상민
+이창주
+이헌철
+이종웅
+이상배
+이호태
+이성덕
+이상래
+이상복
+이재현
+이종용
+이종희
+이상복
+이 수
+이환출
+이병영
+이상복
+이만용
+이근석
+이수희
+이상봉
+이삼환
+이수수
+이태옥
+이상봉
+이희현
+이정현
+이학준
+이상빈
+이병득
+이학호
+이주봉
+이상선
+이무돌
+이대수
+이종동
+이상섭
+이영규
+이경중
+이현철
+이상수
+이찬성
+이두분
+이순록
+이상수
+이정생
+이영길
+이우용
+이상수
+이덕기
+이순희
+이용석
+이상숙
+이정촌
+이성남
+이경삼
+이상숙
+이사우
+이성근
+이태엽
+이상숙
+이용진
+이철호
+이영복
+이상식
+이용동
+이태영
+이홍태
+이상언
+이준철
+이희환
+이인래
+이상연
+이적원
+이현희
+이동기
+이상열
+이억회
+이삼생
+이해태
+이상열
+이희욱
+이호영
+이동표
+이상열
+이태갑
+이규옥
+이승이
+이상열
+이만생
+이원수
+이성수
+이상열
+이기수
+이을헌
+이휘덕
+이상열
+이헌식
+이정흠
+이일상
+이상영
+이태진
+이도희
+이한환
+이상오
+이왕이
+이주연
+이지회
+이상완
+이상덕
+이무호
+이세현
+이상용
+이규교
+이현성
+이정태
+이상용
+이상달
+이 식
+이외조
+이상용
+이준석
+이의한
+이덕순
+이상우
+이정식
+이명근
+이경옥
+이상우
+이상자
+이정환
+이태범
+이상욱
+이재홍
+이중판
+이태태
+이상운
+이태술
+이란현
+이태영
+이상원
+이정득
+이영철
+이홍동
+이상원
+이화수
+이갑열
+이옥율
+이상윤
+이병호
+이혜현
+이장봉
+이상윤
+이전필
+이상석
+이정동
+이상은
+이인엽
+이팽선
+이영여
+이상일
+이봉용
+이종이
+이경철
+이상일
+이남기
+이용도
+이영순
+이상일
+이규수
+이기신
+이남석
+이상재
+이광식
+이미태
+이종곤
+이상정
+이암수
+이감열
+이을은
+이상조
+이분규
+이달철
+이태범
+이상조
+이영연
+이차택
+이영주
+이상준
+이봉수
+이판운
+이재열
+이상직
+이영철
+이명길
+이민수
+이상직
+이점정
+이용란
+이석천
+이상진
+이대득
+이상상
+이국선
+이상천
+이순길
+이종대
+이중웅
+이상천
+이이식
+이우식
+이영분
+이상천
+이영관
+이영태
+이영선
+이상철
+이창태
+이재생
+이영득
+이상철
+이 구
+이정란
+이윤순
+이상철
+이기영
+이태준
+이성환
+이상철
+이인술
+이광옥
+이세국
+이상철
+이주경
+이경분
+이재진
+이상철
+이칠철
+이석교
+이동우
+이상철
+이삼환
+이도선
+이대수
+이상철
+이주성
+이해규
+이재수
+이상탁
+이진만
+이규겁
+이옥재
+이상태
+이을자
+이수문
+이태길
+이상태
+이원순
+이재자
+이동본
+이상태
+이상섭
+이대길
+이기진
+이상학
+이명완
+이정호
+이인출
+이상한
+이오석
+이정철
+이종훈
+이상해
+이근환
+이근임
+이기식
+이상헌
+이소동
+이인숙
+이중선
+이상현
+이준호
+이효호
+이우상
+이상현
+이상권
+이홍희
+이수군
+이상현
+이진헌
+이종숙
+이경태
+이상현
+이형호
+이병연
+이차점
+이상현
+이성식
+이용양
+이용희
+이상현
+이태명
+이문균
+이기수
+이상호
+이회우
+이재성
+이석주
+이상호
+이하진
+이문도
+이성호
+이상호
+이무길
+이해현
+이칠길
+이상호
+이해종
+이영호
+이영수
+이상호
+이정학
+이명금
+이우희
+이상호
+이순경
+이춘태
+이정완
+이상화
+이오건
+이대조
+이혜흠
+이상화
+이철신
+이봉호
+이영근
+이상화
+이인자
+이경암
+이기석
+이상화
+이종달
+이재준
+이유혁
+이상환
+이효조
+이민년
+이춘조
+이상황
+이성중
+이순식
+이근기
+이상효
+이근열
+이두덕
+이광기
+이상훈
+이삼칠
+이창자
+이영준
+이상훈
+이금덕
+이정호
+이재현
+이생규
+이찬구
+이덕준
+이병조
+이서분
+이병교
+이도호
+이일범
+이서운
+이태수
+이용수
+이상덕
+이석갑
+이창래
+이정암
+이병수
+이석곤
+이용이
+이회석
+이정아
+이석귀
+이우식
+이두대
+이순우
+이석규
+이영용
+이수배
+이성석
+이석록
+이인만
+이도웅
+이정조
+이석록
+이성수
+이영봉
+이성관
+이석만
+이달철
+이홍봉
+이중호
+이석범
+이순재
+이광희
+이분석
+이석병
+이분수
+이진화
+이쌍용
+이석복
+이명호
+이동호
+이홍열
+이석수
+이용용
+이대욱
+이창주
+이석영
+이한우
+이종림
+이춘수
+이석완
+이곡제
+이기모
+이병자
+이석용
+이정란
+이인국
+이양수
+이석원
+이민환
+이주양
+이준조
+이석일
+이수선
+이영열
+이재만
+이석재
+이만목
+이성집
+이병연
+이석재
+이종종
+이수남
+이용한
+이석주
+이병철
+이동원
+이연수
+이석지
+이광규
+이주해
+이병근
+이석진
+이순숙
+이도권
+이한조
+이석찬
+이근성
+이병창
+이병숙
+이석천
+이문홍
+이희규
+이영규
+이석출
+이기옥
+이오연
+이달섭
+이석태
+이은화
+이동화
+이사진
+이석현
+이영모
+이점생
+이덕국
+이석현
+이태일
+이복출
+이경숙
+이석홍
+이채순
+이수옥
+이다곤
+이석환
+이병이
+이한암
+이애선
+이석환
+이덕출
+이길주
+이연철
+이선봉
+이재중
+이대목
+이증용
+이선수
+이종원
+이봉영
+이대삼
+이선영
+이학학
+이효이
+이상분
+이선우
+이태구
+이장철
+이종복
+이선이
+이태연
+이낙점
+이노권
+이선호
+이두중
+이봉범
+이석운
+이성곤
+이상현
+이칠식
+이순수
+이성구
+이상아
+이동주
+이태영
+이성구
+이세모
+이상구
+이일자
+이성구
+이판기
+이화원
+이병용
+이성권
+이자덕
+이수권
+이영혁
+이성권
+이홍순
+이진우
+이진도
+이성규
+이명술
+이안경
+이병목
+이성근
+이석수
+이성덕
+이석주
+이성근
+이미수
+이점갑
+이종호
+이성기
+이현길
+이영정
+이대익
+이성기
+이득열
+이한호
+이정식
+이성도
+이근길
+이면순
+이진근
+이성동
+이성순
+이두남
+이순헌
+이성래
+이건교
+이원도
+이정식
+이성룡
+이성성
+이양수
+이 원
+이성만
+이상우
+이태순
+이규권
+이성말
+이상찬
+이명율
+이경종
+이성민
+이지만
+이재성
+이지호
+이성범
+이행동
+이창철
+이상용
+이성복
+이용삼
+이병희
+이양춘
+이성복
+이헌기
+이광숙
+이무근
+이성세
+이점헌
+이운만
+이상환
+이성수
+이은복
+이대하
+이동옥
+이성순
+이춘금
+이삼성
+이희배
+이성실
+이성길
+이재욱
+이종규
+이성안
+이을성
+이성문
+이기길
+이성애
+이병택
+이병희
+이영욱
+이성엽
+이정환
+이용환
+이종화
+이성옥
+이정순
+이정득
+이영균
+이성우
+이충수
+이봉수
+이준호
+이성우
+이광자
+이상옥
+이동배
+이성운
+이재율
+이순숙
+이연순
+이성원
+이정운
+이영경
+이범율
+이성익
+이제숙
+이상효
+이금열
+이성임
+이태환
+이정향
+이효원
+이성조
+이태룡
+이명진
+이영환
+이성준
+이상곤
+이상관
+이무준
+이성준
+이인율
+이진식
+이안식
+이성준
+이재호
+이상수
+이춘자
+이성찬
+이상호
+이창석
+이두호
+이성철
+이일복
+이인환
+이성화
+이성철
+이병연
+이선공
+이종기
+이성태
+이헌복
+이신표
+이만일
+이성태
+이태욱
+이용조
+이대순
+이성평
+이주하
+이환식
+이내달
+이성하
+이한진
+이호열
+이정륜
+이성현
+이두호
+이달석
+이정길
+이성현
+이병주
+이병금
+이광춘
+이성호
+이조구
+이광용
+이명석
+이성호
+이중자
+이영곤
+이윤종
+이성호
+이상목
+이정우
+이기석
+이성호
+이을선
+이진순
+이심권
+이성호
+이종덕
+이병경
+이재덕
+이성호
+이융일
+이낙출
+이대근
+이성홍
+이석조
+이종규
+이순상
+이성화
+이국조
+이구덕
+이동용
+이성환
+이승해
+이상호
+이순만
+이성환
+이기규
+이호영
+이태오
+이성환
+이상권
+이병조
+이일일
+이성훈
+이범원
+이의정
+이구서
+이성희
+이규중
+이무선
+이성휴
+이성희
+이영년
+이헌태
+이궁이
+이세병
+이옥호
+이의계
+이종분
+이세영
+이석희
+이이이
+이상이
+이세영
+이순복
+이윤곤
+이삼규
+이세용
+이동현
+이경근
+이근수
+이세일
+이용섭
+이장장
+이근철
+이세중
+이일조
+이점만
+이재원
+이세현
+이종식
+이우래
+이남향
+이세현
+이동용
+이일군
+이선식
+이세호
+이충웅
+이경조
+이을근
+이소갑
+이태근
+이홍일
+이동희
+이소돌
+이준근
+이정현
+이재기
+이소석
+이진영
+이병탁
+이태자
+이소수
+이종길
+이영근
+이동원
+이소수
+이숙규
+이영봉
+이무순
+이소수
+이융호
+이삼호
+이위동
+이소수
+이호운
+이도담
+이언호
+이소숙
+이금근
+이갑성
+이상길
+이소순
+이회보
+이세현
+이용제
+이소식
+이선순
+이말연
+이철수
+이소암
+이우근
+이한립
+이용조
+이소원
+이무우
+이달희
+이창덕
+이소조
+이태조
+이남병
+이순식
+이소조
+이태란
+이진운
+이경이
+이손숙
+이선기
+이주용
+이태상
+이손주
+이남길
+이진기
+이동현
+이송건
+이동구
+이호정
+이상진
+이송록
+이호용
+이세열
+이점로
+이송양
+이진수
+이형호
+이대석
+이송열
+이기길
+이병옥
+이영만
+이수경
+이용철
+이재국
+이국석
+이수경
+이태훈
+이구육
+이석원
+이수근
+이성하
+이명돈
+이수식
+이수기
+이범호
+이효숙
+이수국
+이수길
+이승경
+이재대
+이윤봉
+이수덕
+이해식
+이영이
+이순기
+이수도
+이병영
+이재수
+이삼운
+이수만
+이성기
+이병인
+이성술
+이수백
+이남돌
+이기용
+이명대
+이수복
+이종열
+이돈상
+이성선
+이수복
+이수주
+이혁상
+이상환
+이수복
+이동숙
+이영순
+이구자
+이수상
+이갑남
+이상락
+이익용
+이수석
+이상철
+이태자
+이수상
+이수야
+이병연
+이차식
+이근관
+이수언
+이위용
+이차규
+이희경
+이수열
+이종자
+이시표
+이재완
+이수열
+이성분
+이승광
+이본호
+이수옥
+이정홍
+이성수
+이병근
+이수용
+이종식
+이봉성
+이숙용
+이수용
+이원석
+이학불
+이삼태
+이수우
+이창돌
+이일수
+이종임
+이수웅
+이광식
+이석권
+이태립
+이수원
+이창돌
+이춘덕
+이 배
+이수의
+이영조
+이영권
+이학식
+이수인
+이순웅
+이영만
+이천호
+이수점
+이윤호
+이상천
+이용오
+이수종
+이종헌
+이병진
+이출식
+이수준
+이주열
+이영희
+이창석
+이수진
+이문자
+이종호
+이금성
+이수진
+이월관
+이정용
+이태근
+이수찬
+이상용
+이두석
+이하성
+이수창
+이성현
+이공암
+이정황
+이수철
+이순순
+이헌진
+이주호
+이수학
+이군기
+이을돌
+이판택
+이수현
+이경훈
+이실열
+이구문
+이수현
+이은우
+이화문
+이희호
+이수현
+이용호
+이지준
+이종호
+이수현
+이승정
+이성희
+이병현
+이수호
+이상규
+이중현
+이실석
+이수호
+이종택
+이광모
+이정길
+이수호
+이춘옥
+이중주
+이정임
+이수호
+이복규
+이경천
+이태규
+이수홍
+이재식
+이현행
+이효열
+이수환
+이선태
+이상춘
+이종선
+이수황
+이기식
+이석애
+이용분
+이수흥
+이병환
+이남식
+이용화
+이숙경
+이봉섭
+이석휴
+이명원
+이숙기
+이홍원
+이용오
+이국규
+이숙연
+이광식
+이병철
+이호헌
+이숙희
+이태근
+이계구
+이영일
+이순경
+이수조
+이상규
+이명립
+이순구
+이종호
+이점규
+이만성
+이순구
+이효상
+이복도
+이영주
+이순덕
+이광오
+이혜우
+이기환
+이순도
+이동조
+이순숙
+이천원
+이순말
+이노철
+이보선
+이윤헌
+이순분
+이명조
+이순휴
+이증오
+이순분
+이근준
+이세근
+이선기
+이순세
+이봉배
+이중봉
+이대복
+이순신
+이기근
+이현자
+이운철
+이순연
+이구상
+이형여
+이일수
+이순영
+이종조
+이복준
+이영철
+이순욱
+이한이
+이철동
+이재용
+이순원
+이을옥
+이태수
+이규용
+이순이
+이동규
+이기희
+이진경
+이순자
+이근돌
+이보길
+이동춘
+이순자
+이소교
+이동열
+이관덕
+이순자
+이영순
+이재우
+이재석
+이순자
+이종정
+이창원
+이태욱
+이순재
+이화흠
+이열균
+이규한
+이순점
+이태택
+이광순
+이제윤
+이순조
+이성호
+이도동
+이성숙
+이순조
+이점학
+이우각
+이만수
+이순태
+이영자
+이달호
+이희술
+이순현
+이주규
+이효만
+이대십
+이순호
+이택식
+이팔현
+이노영
+이순홍
+이상완
+이술련
+이명환
+이순홍
+이병우
+이용대
+이상열
+이순희
+이태수
+이재복
+이상열
+이순희
+이호열
+이정일
+이만주
+이술봉
+이상수
+이상만
+이환수
+이술희
+이동용
+이태호
+이순실
+이승곤
+이호수
+이근림
+이옥운
+이승달
+이봉현
+이국호
+이길대
+이승동
+이순휴
+이의현
+이은열
+이승렬
+이병목
+이호신
+이현선
+이승모
+이오형
+이석재
+이세호
+이승배
+이진권
+이해희
+이일식
+이승분
+이광진
+이태연
+이득석
+이승언
+이준계
+이갑철
+이춘열
+이승열
+이해순
+이판열
+이경생
+이승옥
+이동규
+이상연
+이학화
+이승우
+이경국
+이삼경
+이주우
+이승욱
+이종도
+이만원
+이은동
+이승조
+이춘욱
+이용교
+이장곤
+이승주
+이봉화
+이칠상
+이만준
+이승천
+이헌근
+이재준
+이종기
+이승천
+이의용
+이영만
+이태범
+이승칠
+이세경
+이해권
+이충제
+이승형
+이정근
+이규락
+이세택
+이승홍
+이영회
+이용호
+이연택
+이승화
+이영한
+이장중
+이동열
+이승화
+이홍혁
+이기수
+이광식
+이승훈
+이성하
+이영규
+이춘갑
+이승훈
+이기현
+이선구
+이증조
+이승훈
+이창신
+이인묵
+이대구
+이승희
+이기범
+이태원
+이병분
+이시동
+이병연
+이원현
+이남애
+이시영
+이순곤
+이수석
+이춘련
+이시우
+이진호
+이용수
+이성기
+이시원
+이동재
+이정구
+이오호
+이시원
+이태호
+이상영
+이병환
+이신구
+이충원
+이명효
+이삼배
+이신복
+이윤수
+이학형
+이갑열
+이신우
+이타익
+이영도
+이영철
+이신이
+이동원
+이상진
+이평철
+이쌍갑
+이태식
+이자영
+이순환
+이쌍석
+이상석
+이정식
+이정운
+이쌍승
+이혜자
+이위회
+이용구
+이쌍연
+이정상
+이영원
+이경경
+이안기
+이정탁
+이근근
+이기섭
+이안생
+이진일
+이용월
+이원동
+이안순
+이성도
+이상석
+이점현
+이암우
+이일순
+이종술
+이주섭
+이양숙
+이영백
+이만환
+이소길
+이양우
+이주희
+이기휴
+이해애
+이양임
+이숙광
+이수홍
+이문한
+이양훈
+이맹은
+이무수
+이판덕
+이억근
+이태일
+이의섭
+이병일
+이업주
+이상영
+이재창
+이해정
+이연동
+이재회
+이말노
+이명식
+이연실
+이은준
+이상환
+이만곤
+이연실
+이영곤
+이방효
+이병근
+이연실
+이내홍
+이종숙
+이부구
+이연이
+이판호
+이용동
+이재주
+이영구
+이금도
+이성곤
+이계경
+이영국
+이순근
+이정환
+이정순
+이영국
+이태철
+이재경
+이명신
+이영근
+이삼결
+이화화
+이태식
+이영기
+이제진
+이선열
+이영해
+이영기
+이종률
+이순원
+이기용
+이영기
+이영조
+이제경
+이병석
+이영기
+이성진
+이달식
+이규일
+이영기
+이원재
+이성봉
+이태규
+이영길
+이상호
+이명진
+이대석
+이영길
+이은주
+이충택
+이정순
+이영길
+이영행
+이옥곤
+이병현
+이영동
+이우환
+이천만
+이준희
+이영락
+이정련
+이승순
+이병표
+이영란
+이덕금
+이종윤
+이중열
+이영로
+이상노
+이을우
+이수하
+이영목
+이창훈
+이해석
+이화진
+이영민
+이태주
+이태배
+이윤철
+이영민
+이갑운
+이제하
+이경호
+이영상
+이승도
+이수연
+이태도
+이영석
+이갑수
+이동환
+이태환
+이영선
+이두식
+이서규
+이주식
+이영섭
+이우술
+이병원
+이분수
+이영세
+이두순
+이균암
+이판교
+이영세
+이홍식
+이현익
+이기노
+이영수
+이점희
+이양환
+이기규
+이영수
+이삼봉
+이창희
+이경혜
+이영수
+이윤석
+이명숙
+이기갑
+이영수
+이희록
+이일규
+이진영
+이영수
+이석규
+이병호
+이노도
+이영수
+이남규
+이팔배
+이성순
+이영숙
+이병암
+이덕화
+이복표
+이영숙
+이정덕
+이판무
+이 일
+이영숙
+이인구
+이명진
+이진식
+이영숙
+이종목
+이한정
+이점수
+이영순
+이태수
+이옥기
+이규석
+이영순
+이판환
+이성한
+이상숙
+이영순
+이오조
+이찬조
+이규희
+이영순
+이용영
+이우분
+이효희
+이영식
+이규모
+이창운
+이외교
+이영식
+이우연
+이문덕
+이만호
+이영연
+이만수
+이계이
+이기수
+이영열
+이노희
+이장기
+이은주
+이영오
+이태우
+이용규
+이병자
+이영옥
+이광순
+이정옥
+이재주
+이영우
+이매탁
+이영수
+이명상
+이영웅
+이판자
+이옥권
+이해곤
+이영원
+이근찬
+이곡학
+이종근
+이영윤
+이오우
+이재상
+이영중
+이영인
+이두우
+이규옥
+이형호
+이영일
+이영용
+이철환
+이경배
+이영일
+이상철
+이재현
+이병현
+이영자
+이경빈
+이근선
+이상악
+이영재
+이정오
+이광술
+이동세
+이영조
+이태용
+이형구
+이순구
+이영조
+이동희
+이치근
+이인운
+이영조
+이점찬
+이상연
+이수연
+이영주
+이경천
+이은희
+이동도
+이영진
+이영수
+이한석
+이영순
+이영철
+이두수
+이정준
+이기석
+이영태
+이소경
+이세현
+이회운
+이영학
+이종수
+이상동
+이석희
+이영호
+이영분
+이지식
+이용철
+이영호
+이태환
+이기복
+이주영
+이영호
+이필경
+이창효
+이상재
+이영호
+이순만
+이기임
+이병태
+이영호
+이장종
+이달헌
+이미철
+이영호
+이현봉
+이한삼
+이선철
+이영호
+이홍경
+이대원
+이종조
+이영호
+이오규
+이경묵
+이상옥
+이영화
+이재숙
+이삼윤
+이홍배
+이영환
+이병자
+이영상
+이현화
+이영환
+이정환
+이한순
+이진암
+이영환
+이명춘
+이여호
+이인화
+이영훈
+이세식
+이기점
+이성립
+이영훈
+이영제
+이형복
+이정효
+이영훈
+이복섭
+이인휘
+이태동
+이영희
+이점준
+이재범
+이원구
+이영희
+이미성
+이상호
+이춘철
+이영희
+이미봉
+이선도
+이중열
+이영희
+이근조
+이이복
+이선순
+이영희
+이영숙
+이정이
+이병경
+이오근
+이인권
+이진주
+이원영
+이옥경
+이삼일
+이수규
+이호순
+이옥기
+이광명
+이태환
+이천수
+이옥난
+이 수
+이규숙
+이재정
+이옥돌
+이윤갑
+이호환
+이석태
+이옥란
+이임우
+이영호
+이봉동
+이옥란
+이상호
+이윤오
+이인래
+이옥련
+이선배
+이재영
+이종수
+이옥분
+이교순
+이영목
+이극이
+이옥선
+이병교
+이기용
+이성배
+이옥선
+이진이
+이호오
+이성호
+이옥순
+이종도
+이공술
+이문학
+이옥연
+이이덕
+이재임
+이재해
+이옥이
+이준현
+이옥덕
+이동환
+이옥자
+이오연
+이달동
+이태대
+이옥주
+이노일
+이만건
+이인도
+이옥주
+이종화
+이명석
+이석재
+이옥희
+이인선
+이삼필
+이경준
+이완국
+이선원
+이용식
+이태식
+이완범
+이덕정
+이태철
+이수호
+이완이
+이기선
+이언록
+이 용
+이완희
+이연규
+이기수
+이기호
+이왕재
+이태배
+이화진
+이희화
+이왕조
+이해희
+이점일
+이은기
+이외남
+이동홍
+이지철
+이사란
+이외순
+이종기
+이상룡
+이균조
+이외준
+이태환
+이소래
+이 진
+이용건
+이말호
+이근혹
+이정환
+이용견
+이상금
+이병락
+이흥수
+이용관
+이대원
+이종병
+이은호
+이용구
+이영동
+이진준
+이종수
+이용구
+이형선
+이해수
+이우환
+이용국
+이인제
+이점영
+이순점
+이용권
+이경대
+이석용
+이학노
+이용규
+이명성
+이차임
+이경호
+이용기
+이동점
+이대숙
+이건문
+이용기
+이계탁
+이봉찬
+이진양
+이용득
+이영국
+이봉정
+이성동
+이용문
+이전암
+이종현
+이천인
+이용문
+이소영
+이효원
+이영덕
+이용백
+이술년
+이구형
+이춘호
+이용복
+이명도
+이영동
+이임숙
+이용석
+이병식
+이금식
+이용순
+이용석
+이인열
+이기수
+이태덕
+이용수
+이제용
+이근욱
+이중태
+이용수
+이만호
+이승원
+이해규
+이용식
+이차춘
+이규수
+이언현
+이용업
+이성화
+이복림
+이명돌
+이용업
+이준복
+이용천
+이윤호
+이용열
+이판분
+이쌍권
+이응구
+이용운
+이재진
+이태복
+이종랑
+이용운
+이유식
+이익성
+이재환
+이용원
+이동달
+이노왕
+이일종
+이용조
+이영석
+이말권
+이태조
+이용주
+이병영
+이삼연
+이종자
+이용주
+이복상
+이정자
+이대홍
+이용철
+이정흠
+이병운
+이만진
+이용철
+이태득
+이창국
+이성수
+이용출
+이순규
+이만선
+이대자
+이용태
+이순용
+이희수
+이석규
+이용택
+이순일
+이상옥
+이성희
+이용택
+이도훈
+이종휴
+이두준
+이용택
+이영균
+이해식
+이영환
+이용팔
+이소석
+이석선
+이재자
+이용팔
+이정출
+이갑식
+이영수
+이용한
+이효도
+이상차
+이성교
+이용혁
+이윤숙
+이영숙
+이동용
+이용현
+이운운
+이재자
+이외도
+이용호
+이명욱
+이윤욱
+이원택
+이용화
+이상호
+이춘호
+이동국
+이용환
+이정훈
+이기호
+이호율
+이용환
+이은철
+이춘웅
+이만돌
+이용희
+이영기
+이태규
+이정원
+이용희
+이상동
+이성대
+이혜수
+이우근
+이명현
+이병용
+이소선
+이우동
+이지칙
+이범승
+이윤만
+이우동
+이철련
+이영창
+이상식
+이우석
+이용섭
+이종진
+이명식
+이우식
+이호기
+이돈태
+이순규
+이우식
+이용분
+이중택
+이경준
+이우식
+이병조
+이명용
+이재열
+이우식
+이응일
+이영주
+이진가
+이우임
+이정용
+이영선
+이귀석
+이우환
+이지홍
+이말태
+이해암
+이욱노
+이분수
+이재희
+이항욱
+이욱환
+이갑도
+이현자
+이수환
+이욱환
+이호학
+이우수
+이남수
+이운석
+이영석
+이충식
+이신수
+이운철
+이남준
+이태상
+이영남
+이운학
+이정점
+이현도
+이병이
+이운호
+이상재
+이기주
+이은순
+이웅열
+이종자
+이을수
+이준용
+이원구
+이만열
+이복용
+이분인
+이원규
+이주화
+이정만
+이판빈
+이원규
+이봉철
+이창수
+이광호
+이원규
+이효관
+이응숙
+이종일
+이원기
+이석년
+이원식
+이봉자
+이원기
+이효봉
+이계남
+이수미
+이원길
+이철조
+이승기
+이광호
+이원대
+이선신
+이문용
+이해호
+이원배
+이태분
+이한규
+이기완
+이원배
+이 옥
+이을현
+이진환
+이원분
+이우배
+이영호
+이기순
+이원소
+이재기
+이선제
+이소순
+이원수
+이용하
+이동옥
+이영식
+이원수
+이대기
+이선열
+이성태
+이원수
+이상수
+이용현
+이종운
+이원식
+이재호
+이준현
+이임수
+이원식
+이수욱
+이태출
+이영돈
+이원영
+이소득
+이현섭
+이병식
+이원우
+이성환
+이봉모
+이용헌
+이원우
+이무완
+이영종
+이천훈
+이원일
+이동진
+이봉선
+이면출
+이원자
+이경길
+이상완
+이한철
+이원재
+이진현
+이교판
+이영완
+이원조
+이미휴
+이창선
+이중선
+이원진
+이주양
+이원출
+이봉채
+이원철
+이도성
+이용웅
+이문양
+이원출
+이승자
+이미덕
+이형교
+이원형
+이정희
+이장복
+이용계
+이원호
+이길기
+이종용
+이수현
+이원화
+이복근
+이인자
+이상경
+이원희
+이수성
+이명근
+이자득
+이월계
+이재식
+이광택
+이남종
+이월선
+이형석
+이정목
+이재룡
+이월성
+이대현
+이철분
+이제규
+이월한
+이금훈
+이제학
+이일대
+이월희
+이석호
+이병연
+이상섭
+이위만
+이문웅
+이병환
+이재금
+이위섭
+이수호
+이운섭
+이재동
+이위숙
+이영재
+이종윤
+이양숙
+이위출
+이화이
+이기수
+이태암
+이위호
+이석자
+이기칠
+이두봉
+이유열
+이갑환
+이재오
+이기윤
+이유원
+이쾌정
+이정규
+이창석
+이유환
+이현수
+이유국
+이건근
+이육택
+이석용
+이순근
+이순애
+이윤규
+이채우
+이삼돌
+이춘달
+이윤근
+이강락
+이창선
+이 호
+이윤기
+이업교
+이경도
+이효연
+이윤기
+이재선
+이세길
+이춘봉
+이윤노
+이영연
+이순수
+이외열
+이윤만
+이상춘
+이태선
+이병식
+이윤수
+이순박
+이태학
+이원원
+이윤수
+이명호
+이지원
+이태향
+이윤식
+이경태
+이동현
+이철준
+이윤옥
+이수동
+이주옥
+이종수
+이윤원
+이성현
+이재영
+이형수
+이윤재
+이종오
+이판용
+이원진
+이윤정
+이탁수
+이윤권
+이병영
+이윤종
+이종덕
+이일걸
+이이주
+이윤종
+이부희
+이기준
+이지식
+이윤진
+이원희
+이성황
+이선옥
+이윤채
+이삼택
+이태열
+이정일
+이윤철
+이판필
+이두수
+이홍연
+이윤철
+이상용
+이영화
+이호우
+이윤철
+이광국
+이수권
+이쾌태
+이윤현
+이민정
+이태학
+이병호
+이윤현
+이명금
+이수주
+이혜현
+이윤훈
+이월대
+이태분
+이구찬
+이윤희
+이헌영
+이홍태
+이용순
+이융기
+이태훈
+이인술
+이현목
+이은경
+이해영
+이남기
+이윤태
+이은광
+이헌희
+이 환
+이창홍
+이은숙
+이강우
+이만현
+이한애
+이은영
+이윤출
+이성선
+이건희
+이은우
+이상해
+이판근
+이정현
+이은조
+이재식
+이남립
+이경식
+이은주
+이선칠
+이성덕
+이도식
+이은주
+이현규
+이두진
+이영자
+이은주
+이현관
+이종대
+이명성
+이은철
+이조례
+이봉희
+이경희
+이은탁
+이상충
+이광순
+이경자
+이을선
+이두환
+이종한
+이영기
+이을주
+이기택
+이이오
+이재강
+이을형
+이영철
+이삼홍
+이후희
+이응도
+이정우
+이기규
+이인훈
+이응복
+이재희
+이차욱
+이승분
+이응준
+이쌍규
+이광운
+이계자
+이의소
+이 석
+이양출
+이고안
+이의수
+이무용
+이영흠
+이헌연
+이의신
+이준재
+이대근
+이정순
+이의용
+이인도
+이상수
+이순호
+이의웅
+이만기
+이병현
+이수은
+이의출
+이윤석
+이금택
+이덕희
+이의환
+이영남
+이재수
+이한조
+이이경
+이해만
+이영춘
+이순윤
+이이근
+이진수
+이상해
+이남돌
+이이남
+이재석
+이경진
+이차자
+이이득
+이외하
+이준암
+이재현
+이이석
+이원관
+이순문
+이문대
+이이용
+이원석
+이용광
+이만진
+이익현
+이칠열
+이태규
+이장행
+이인곤
+이종숙
+이옥현
+이상철
+이인곤
+이양일
+이석현
+이상용
+이인구
+이재희
+이이규
+이상규
+이인규
+이중순
+이화명
+이월순
+이인동
+이쌍윤
+이기교
+이철정
+이인모
+이이배
+이명생
+이수주
+이인석
+이성의
+이영선
+이노준
+이인섭
+이경주
+이의봉
+이홍조
+이인수
+이무수
+이영찬
+이상춘
+이인수
+이석자
+이상환
+이일숙
+이인수
+이호훈
+이광희
+이장욱
+이인숙
+이해균
+이석이
+이재은
+이인숙
+이태덕
+이홍권
+이영민
+이인영
+이규금
+이병호
+이승제
+이인우
+이용민
+이재이
+이태분
+이인자
+이만종
+이운희
+이자연
+이인철
+이군분
+이부재
+이재섭
+이인표
+이성곤
+이대식
+이기용
+이인향
+이문덕
+이환돌
+이숙득
+이인호
+이영태
+이기수
+이몽환
+이인호
+이용정
+이언주
+이영현
+이인호
+이영인
+이종덕
+이준원
+이인환
+이금대
+이말식
+이용집
+이인환
+이상순
+이학녀
+이만석
+이인환
+이인환
+이양숙
+이승웅
+이일권
+이진용
+이종조
+이남곤
+이일균
+이우범
+이해기
+이성학
+이일색
+이명봉
+이수식
+이명옥
+이일수
+이영호
+이충옥
+이태란
+이일수
+이창록
+이병덕
+이상호
+이일순
+이두연
+이찬영
+이순현
+이일순
+이성복
+이감태
+이소수
+이일순
+이소도
+이영숙
+이판호
+이일웅
+이태호
+이주현
+이기열
+이일원
+이노근
+이종현
+이금장
+이일호
+이말진
+이현식
+이정식
+이일호
+이명옥
+이재기
+이봉석
+이일환
+이서현
+이성교
+이언성
+이일환
+이의환
+이상화
+이석규
+이임득
+이순용
+이현악
+이종길
+이임석
+이낙권
+이의석
+이창수
+이임선
+이 수
+이해홍
+이정옥
+이임선
+이보석
+이정희
+이경석
+이임선
+이영순
+이정련
+이점길
+이임숙
+이흥수
+이선현
+이해출
+이임순
+이갑하
+이한호
+이영용
+이임식
+이광자
+이동조
+이복곤
+이임용
+이영덕
+이원규
+이인준
+이임이
+이용태
+이영성
+이진호
+이임이
+이병호
+이주혁
+이홍용
+이임자
+이남연
+이병수
+이해희
+이임학
+이상기
+이도용
+이삼자
+이임호
+이관용
+이수영
+이봉열
+이자연
+이재달
+이영오
+이판규
+이장근
+이규균
+이한국
+이분운
+이장노
+이정수
+이영수
+이순만
+이장덕
+이석수
+이덕덕
+이화수
+이장배
+이일주
+이상식
+이종원
+이장쇄
+이종기
+이성국
+이동호
+이장수
+이상도
+이정조
+이순포
+이장수
+이점중
+이진석
+이선귀
+이장오
+이기재
+이석숙
+이영동
+이장우
+이경강
+이재애
+이윤돌
+이장우
+이갑조
+이인식
+이해기
+이장욱
+이도균
+이창숙
+이응기
+이장주
+이신철
+이해률
+이봉기
+이장춘
+이태홍
+이대국
+이금견
+이장춘
+이영철
+이용주
+이상기
+이장호
+이태한
+이증옥
+이재준
+이장호
+이영숙
+이재현
+이태재
+이장환
+이옥혁
+이종영
+이양술
+이장환
+이기식
+이수회
+이태기
+이장희
+이길덕
+이주려
+이정임
+이재갑
+이오희
+이영열
+이영석
+이재경
+이춘길
+이근영
+이광순
+이재관
+이석옥
+이영달
+이종구
+이재구
+이회립
+이영식
+이숙수
+이재구
+이정화
+이정구
+이정길
+이재국
+이점순
+이명용
+이봉자
+이재권
+이세봉
+이용희
+이일섭
+이재균
+이판광
+이재식
+이종태
+이재근
+이해석
+이영청
+이정석
+이재근
+이윤희
+이계래
+이동연
+이재기
+이도순
+이태만
+이명자
+이재길
+이건표
+이병돌
+이동문
+이재덕
+이계길
+이종용
+이달성
+이재덕
+이종중
+이팔우
+이옥철
+이재덕
+이기만
+이석도
+이종포
+이재도
+이원승
+이점동
+이태섭
+이재동
+이석수
+이성용
+이창학
+이재만
+이성하
+이명돌
+이재모
+이재만
+이상곤
+이동조
+이강권
+이재명
+이면대
+이성하
+이억용
+이재문
+이영만
+이영규
+이재숙
+이재문
+이 태
+이헌묵
+이하석
+이재문
+이성익
+이진남
+이분천
+이재병
+이정화
+이광근
+이기용
+이재복
+이종석
+이만식
+이성권
+이재봉
+이덕열
+이동남
+이규재
+이재봉
+이이헌
+이현흠
+이태팔
+이재봉
+이영춘
+이인택
+이명훈
+이재불
+이진현
+이성준
+이은수
+이재선
+이휘일
+이종선
+이흥회
+이재선
+이병성
+이태판
+이덕중
+이재성
+이경호
+이두조
+이일종
+이재성
+이영담
+이동생
+이원용
+이재성
+이운만
+이태택
+이순숙
+이재순
+이기호
+이정일
+이홍우
+이재식
+이용택
+이종창
+이종오
+이재연
+이학수
+이길쇄
+이한운
+이재열
+이경창
+이환곤
+이직선
+이재영
+이영윤
+이경현
+이승기
+이재완
+이달현
+이순열
+이태이
+이재우
+이학우
+이동환
+이복재
+이재우
+이동봉
+이동현
+이희용
+이재우
+이명조
+이영규
+이영식
+이재우
+이현부
+이용도
+이달진
+이재우
+이분영
+이춘양
+이장태
+이재웅
+이철덕
+이영차
+이구호
+이재원
+이수재
+이상수
+이근규
+이재율
+이진득
+이창준
+이성경
+이재익
+이판석
+이정식
+이무재
+이재인
+이윤택
+이수우
+이종옥
+이재일
+이정대
+이성흠
+이권세
+이재정
+이일석
+이광상
+이주호
+이재준
+이영휴
+이윤기
+이용관
+이재천
+이점십
+이성옥
+이설덕
+이재천
+이영우
+이창수
+이양수
+이재철
+이달래
+이연영
+이분구
+이재호
+이병현
+이종수
+이낙분
+이재호
+이동균
+이동식
+이미헌
+이재호
+이영원
+이춘현
+이종철
+이재호
+이갑주
+이용권
+이인국
+이재호
+이추모
+이구도
+이철룡
+이재환
+이재석
+이중화
+이광영
+이재훈
+이운웅
+이병현
+이희태
+이재희
+이경탁
+이길오
+이영식
+이재희
+이성근
+이태근
+이갑기
+이점니
+이원우
+이용국
+이만천
+이점도
+이윤용
+이인대
+이재도
+이점선
+이곡기
+이석원
+이현현
+이점세
+이수이
+이옥철
+이정경
+이점수
+이병호
+이상암
+이종문
+이점수
+이동열
+이범주
+이만훈
+이점순
+이수근
+이상화
+이공한
+이점순
+이창만
+이태철
+이두운
+이점암
+이충원
+이동조
+이용태
+이점암
+이환열
+이태휴
+이하득
+이점암
+이광덕
+이인성
+이지식
+이점암
+이현숙
+이봉수
+이기근
+이점오
+이영갑
+이병섭
+이희규
+이점조
+이동춘
+이영겸
+이한수
+이점호
+이봉규
+이한선
+이상식
+이정갑
+이용일
+이규식
+이한기
+이정건
+이종욱
+이병기
+이석진
+이정곤
+이병수
+이상환
+이개열
+이정관
+이동규
+이덕상
+이길태
+이정구
+이동태
+이명철
+이귀기
+이정국
+이영욱
+이정기
+이진하
+이정국
+이영호
+이현일
+이삼수
+이정권
+이상록
+이성섭
+이명규
+이정규
+이병국
+이재재
+이명경
+이정규
+이민용
+이홍일
+이경홍
+이정규
+이성영
+이수모
+이두강
+이정균
+이우희
+이명복
+이광자
+이정균
+이용길
+이태조
+이영원
+이정기
+이상순
+이성모
+이진홍
+이정길
+이진순
+이태원
+이정열
+이정남
+이재필
+이선술
+이낙경
+이정달
+이일재
+이승한
+이영규
+이정덕
+이임철
+이병숙
+이용주
+이정덕
+이충기
+이전규
+이오규
+이정도
+이일태
+이한각
+이경술
+이정돌
+이재열
+이영호
+이태선
+이정두
+이석수
+이상선
+이정민
+이정란
+이윤근
+이용훈
+이종제
+이정로
+이종화
+이상천
+이영식
+이정률
+이원리
+이헌석
+이구연
+이정립
+이점환
+이병설
+이태준
+이정미
+이성진
+이수곤
+이서구
+이정민
+이해수
+이홍조
+이덕수
+이정분
+이제홍
+이주태
+이영종
+이정선
+이승기
+이정태
+이시환
+이정세
+이옥효
+이세연
+이창영
+이정세
+이칠기
+이자기
+이순문
+이정수
+이석호
+이영이
+이정태
+이정수
+이성용
+이윤상
+이재만
+이정수
+이우성
+이기형
+이영진
+이정숙
+이관만
+이용태
+이삼선
+이정숙
+이선봉
+이정완
+이태학
+이정숙
+이현호
+이삼호
+이영갑
+이정숙
+이정희
+이성자
+이상윤
+이정숙
+이찬기
+이현원
+이달식
+이정순
+이용태
+이달기
+이종식
+이정순
+이성철
+이태달
+이해분
+이정순
+이정창
+이태곤
+이종남
+이정식
+이학환
+이용숙
+이익성
+이정애
+이병곤
+이 태
+이일조
+이정애
+이임균
+이영자
+이태철
+이정애
+이재희
+이태태
+이현화
+이정연
+이성옥
+이해수
+이태암
+이정열
+이동수
+이순수
+이진웅
+이정오
+이철준
+이해종
+이명진
+이정옥
+이개술
+이진록
+이문근
+이정웅
+이재교
+이행태
+이성웅
+이정웅
+이 희
+이대중
+이종조
+이정웅
+이윤택
+이춘수
+이원준
+이정원
+이정수
+이창순
+이정환
+이정윤
+이진만
+이광길
+이태고
+이정의
+이덕섭
+이기용
+이병헌
+이정일
+이성정
+이영열
+이교진
+이정임
+이소철
+이중찬
+이정중
+이정임
+이정원
+이종순
+이형남
+이정주
+이양상
+이주회
+이문배
+이정주
+이용길
+이일진
+이봉균
+이정주
+이현탁
+이윤행
+이일래
+이정채
+이경난
+이홍철
+이천진
+이정철
+이상영
+이영재
+이성남
+이정출
+이진섭
+이재철
+이홍환
+이정태
+이수배
+이성준
+이학일
+이정택
+이재호
+이성자
+이혜태
+이정하
+이정덕
+이영모
+이성성
+이정행
+이재재
+이판광
+이남규
+이정헌
+이정일
+이영갑
+이재희
+이정현
+이종택
+이상길
+이호운
+이정형
+이희주
+이광섭
+이구기
+이정호
+이상세
+이갑애
+이도근
+이정호
+이영순
+이상수
+이태수
+이정호
+이옥범
+이희강
+이광권
+이정호
+이중관
+이영득
+이정순
+이정호
+이방모
+이현주
+이성삼
+이정호
+이은국
+이종조
+이환진
+이정호
+이영봉
+이정근
+이정선
+이정화
+이대출
+이수철
+이호노
+이정환
+이일노
+이재파
+이상정
+이정환
+이용이
+이성상
+이구수
+이정효
+이숙석
+이상숙
+이규식
+이정훈
+이수광
+이재수
+이귀만
+이정희
+이윤도
+이해수
+이대용
+이정희
+이한희
+이광현
+이교수
+이정희
+이칠순
+이형호
+이윤국
+이정희
+이순정
+이실철
+이병호
+이제심
+이정현
+이환민
+이양환
+이제철
+이기성
+이영수
+이헌문
+이조영
+이인병
+이태효
+이갑수
+이조원
+이훈조
+이정수
+이필숙
+이조이
+이창준
+이근권
+이춘돈
+이종각
+이용희
+이재근
+이희득
+이종갑
+이동근
+이순자
+이재용
+이종갑
+이갑락
+이순기
+이인태
+이종경
+이재규
+이중태
+이상복
+이종구
+이갑식
+이호암
+이오열
+이종구
+이임형
+이종환
+이상선
+이종구
+이경덕
+이진석
+이군진
+이종구
+이동동
+이이표
+이병재
+이종권
+이만택
+이재순
+이영근
+이종귀
+이명악
+이광희
+이만화
+이종규
+이분연
+이진배
+이세자
+이종규
+이선수
+이점철
+이효균
+이종균
+이인교
+이덕지
+이남오
+이종기
+이부연
+이기대
+이광관
+이종길
+이희수
+이 현
+이정덕
+이종대
+이종열
+이동석
+이기술
+이종대
+이용선
+이판원
+이순석
+이종덕
+이윤문
+이세국
+이영수
+이종락
+이대년
+이태희
+이광국
+이종록
+이덕태
+이학순
+이생현
+이종록
+이재년
+이대수
+이병모
+이종만
+이영순
+이인근
+이과황
+이종말
+이상식
+이재복
+이종준
+이종명
+이주수
+이기득
+이창우
+이종명
+이중성
+이진갑
+이채식
+이종목
+이옥선
+이정오
+이선태
+이종문
+이월순
+이말원
+이규래
+이종배
+이갑성
+이태효
+이동상
+이종백
+이철회
+이황환
+이민국
+이종복
+이해춘
+이기영
+이갑용
+이종복
+이한암
+이수균
+이이갑
+이종석
+이도태
+이영성
+이성종
+이종석
+이말륜
+이명수
+이만열
+이종선
+이봉조
+이광균
+이상진
+이종성
+이권임
+이순수
+이복연
+이종수
+이재완
+이회화
+이기구
+이종수
+이 성
+이상연
+이장근
+이종수
+이병철
+이성철
+이태수
+이종수
+이재용
+이응희
+이정홍
+이종수
+이태주
+이일열
+이태섭
+이종술
+이세문
+이기희
+이영진
+이종식
+이주환
+이만동
+이원숙
+이종식
+이명희
+이가웅
+이종조
+이종식
+이용란
+이해이
+이익용
+이종애
+이경도
+이외석
+이종삼
+이종언
+이쌍균
+이광재
+이상자
+이종언
+이주영
+이분야
+이차일
+이종열
+이상석
+이호용
+이태권
+이종열
+이창탁
+이철식
+이태성
+이종오
+이 식
+이삼분
+이대환
+이종오
+이구원
+이재생
+이상인
+이종오
+이말순
+이상기
+이승순
+이종용
+이태교
+이성원
+이영기
+이종우
+이소철
+이수덕
+이윤달
+이종욱
+이한철
+이수규
+이국열
+이종욱
+이태도
+이준식
+이병철
+이종원
+이종순
+이팔영
+이이상
+이종원
+이애원
+이동현
+이재근
+이종윤
+이정훈
+이정태
+이동포
+이종윤
+이양현
+이윤룡
+이갑준
+이종윤
+이윤혁
+이준근
+이 만
+이종율
+이동규
+이정문
+이수재
+이종주
+이호기
+이준곤
+이종희
+이종찬
+이주원
+이판철
+이종화
+이종철
+이옥찬
+이태선
+이정문
+이종춘
+이상덕
+이태노
+이종이
+이종태
+이정미
+이문모
+이판수
+이종태
+이석규
+이병일
+이칠우
+이종태
+이갑술
+이철운
+이성수
+이종태
+이상정
+이재환
+이성열
+이종택
+이일용
+이칠희
+이봉술
+이종택
+이춘규
+이노출
+이희희
+이종판
+이철교
+이수관
+이숙교
+이종하
+이석수
+이봉수
+이수근
+이종하
+이무암
+이 자
+이선단
+이종학
+이갑길
+이연기
+이종태
+이종학
+이점성
+이오철
+이태삼
+이종학
+이수기
+이장영
+이용구
+이종한
+이만기
+이명호
+이재호
+이종한
+이금오
+이중수
+이윤호
+이종해
+이상남
+이기제
+이재영
+이종현
+이계우
+이은운
+이종희
+이종호
+이순일
+이소해
+이동부
+이종호
+이옥만
+이용출
+이세태
+이종호
+이정성
+이동인
+이영권
+이종호
+이중원
+이순대
+이춘천
+이종호
+이광권
+이덕학
+이영용
+이종호
+이혜길
+이병호
+이난웅
+이종호
+이경환
+이덕구
+이삼길
+이종환
+이광경
+이창용
+이연수
+이종환
+이동수
+이현수
+이말수
+이종환
+이휘기
+이춘권
+이홍수
+이종환
+이정노
+이찬계
+이우갑
+이종환
+이유순
+이대영
+이우순
+이종훈
+이영호
+이순광
+이분원
+이종희
+이부덕
+이용옥
+이술옥
+이종희
+이명구
+이성보
+이순수
+이주경
+이래근
+이상수
+이상술
+이주경
+이중배
+이태진
+이태근
+이주근
+이규직
+이상생
+이순순
+이주삼
+이충숙
+이남목
+이한덕
+이주석
+이재식
+이석환
+이주영
+이주석
+이만혜
+이재길
+이일자
+이주선
+이명열
+이갑만
+이말규
+이주섭
+이득출
+이영규
+이금곤
+이주승
+이정희
+이광철
+이상운
+이주연
+이근규
+이승선
+이복도
+이주영
+이영수
+이규균
+이정술
+이주영
+이순돌
+이임우
+이석기
+이주영
+이춘만
+이영기
+이정복
+이주이
+이석문
+이기우
+이정균
+이주태
+이말용
+이기호
+이한교
+이주헌
+이상운
+이성문
+이상용
+이주현
+이상기
+이성원
+이덕식
+이주호
+이병기
+이순윤
+이진봉
+이주호
+이봉호
+이영조
+이재환
+이주호
+이남순
+이중현
+이수일
+이준구
+이말수
+이문식
+이진조
+이준열
+이상길
+이창성
+이옥연
+이준영
+이병모
+이규호
+이성운
+이준영
+이곡희
+이자재
+이희연
+이준영
+이임남
+이점선
+이부환
+이준용
+이점열
+이부홍
+이재용
+이준웅
+이용웅
+이기하
+이필순
+이준재
+이태진
+이진목
+이해태
+이준재
+이장순
+이갑홍
+이재동
+이준조
+이수필
+이근우
+이수포
+이준하
+이천환
+이해오
+이외순
+이준혁
+이기운
+이규환
+이영암
+이준호
+이한훈
+이종태
+이석봉
+이준환
+이명돌
+이탁호
+이재자
+이중각
+이경한
+이정종
+이영정
+이중권
+이기병
+이 원
+이을화
+이중규
+이서열
+이범현
+이태섭
+이중근
+이삼기
+이금지
+이두철
+이중길
+이삼식
+이차연
+이윤하
+이중철
+이창길
+이환수
+이주규
+이중화
+이종효
+이성수
+이재철
+이중환
+이남만
+이경자
+이헌기
+이중환
+이정옥
+이정식
+이성성
+이중희
+이원출
+이대달
+이무호
+이증수
+이경숙
+이병호
+이태원
+이지로
+이춘남
+이진상
+이만규
+이지연
+이원영
+이재시
+이정묵
+이지철
+이원주
+이상희
+이복정
+이지혜자
+이영학점
+이대탁길
+이성근정
+이지호
+이규호
+이무헌
+이국복
+이직로
+이창호
+이현정
+이금대
+이진구
+이종지
+이윤준
+이영만
+이진노
+이용곤
+이사호
+이태련
+이진노
+이술철
+이성광
+이영감
+이진무
+이희석
+이노술
+이한래
+이진세
+이창구
+이분선
+이지복
+이진수
+이광달
+이정윤
+이상돌
+이진수
+이명훈
+이부팔
+이필순
+이진용
+이덕상
+이복홍
+이상숙
+이진우
+이헌순
+이상이
+이금석
+이진우
+이금선
+이일열
+이종옥
+이진원
+이재호
+이진우
+이정연
+이진일
+이인한
+이정옥
+이영원
+이진일
+이충섭
+이종경
+이원근
+이진재
+이찬경
+이병국
+이인섭
+이진정
+이일오
+이달택
+이기희
+이진태
+이택수
+이종순
+이성출
+이진태
+이옥근
+이돈곤
+이겸조
+이진태
+이재순
+이숙식
+이태열
+이진항
+이은암
+이영아
+이경식
+이진호
+이주선
+이점열
+이성일
+이진환
+이정영
+이대자
+이장술
+이진환
+이재수
+이명술
+이정현
+이진희
+이종숙
+이기윤
+이덕국
+이진희
+이동식
+이규기
+이상우
+이진희
+이광헌
+이낙순
+이신식
+이차봉
+이기남
+이정휴
+이수형
+이차봉
+이양성
+이순탁
+이춘승
+이차봉
+이홍만
+이순순
+이춘중
+이차연
+이광수
+이경홍
+이석자
+이차조
+이말숙
+이성제
+이현자
+이차환
+이태순
+이만만
+이선동
+이찬규
+이강춘
+이진숙
+이숙주
+이찬복
+이재도
+이종택
+이월길
+이찬성
+이전갑
+이무규
+이순출
+이찬수
+이동열
+이면자
+이영흥
+이찬수
+이상향
+이삼수
+이호식
+이찬이
+이기호
+이현순
+이본세
+이찬이
+이득병
+이융석
+이광희
+이찬홍
+이문선
+이성석
+이태한
+이찬환
+이연열
+이석술
+이소덕
+이창규
+이상갑
+이기갑
+이상구
+이창근
+이용수
+이월득
+이복규
+이창기
+이현구
+이재수
+이정수
+이창림
+이종련
+이하덕
+이만현
+이창수
+이용덕
+이제수
+이상수
+이창순
+이대훈
+이만현
+이병호
+이창식
+이상형
+이선철
+이상준
+이창열
+이성연
+이판성
+이희조
+이창용
+이항봉
+이삼호
+이상득
+이창우
+이선길
+이홍순
+이홍영
+이창우
+이무우
+이영숙
+이규철
+이창윤
+이정복
+이태경
+이도분
+이창재
+이종기
+이만자
+이순구
+이창제
+이재옥
+이정술
+이성문
+이창주
+이정출
+이언민
+이혜우
+이창주
+이종열
+이준훈
+이재태
+이창직
+이원순
+이용자
+이병우
+이창하
+이정민
+이양세
+이학식
+이창헌
+이인원
+이의만
+이재택
+이창호
+이경호
+이경성
+이민동
+이창호
+이소조
+이봉철
+이재용
+이창호
+이영곤
+이택선
+이선식
+이창호
+이시주
+이외태
+이우래
+이창환
+이정란
+이성영
+이남업
+이창희
+이종호
+이진주
+이억규
+이채식
+이맹우
+이순선
+이규석
+이채훈
+이홍식
+이기록
+이원수
+이채훈
+이용자
+이달옥
+이복득
+이천곤
+이유목
+이성문
+이수열
+이천광
+이성자
+이주은
+이성종
+이천세
+이정덕
+이종득
+이윤호
+이천수
+이동상
+이정님
+이외녀
+이천조
+이준이
+이우견
+이범석
+이철기
+이연상
+이성길
+이성국
+이철상
+이영태
+이쌍주
+이헌익
+이철수
+이현채
+이극태
+이인수
+이철수
+이안성
+이일병
+이해춘
+이철수
+이정택
+이진수
+이재연
+이철순
+이외영
+이종식
+이광기
+이철우
+이진석
+이병석
+이선록
+이철우
+이사분
+이창길
+이동곤
+이철우
+이창식
+이현석
+이경규
+이철우
+이우한
+이재직
+이영오
+이철주
+이석순
+이태묵
+이문진
+이철호
+이병교
+이재환
+이무기
+이철호
+이경경
+이윤조
+이문자
+이철호
+이의재
+이달동
+이제운
+이철호
+이형원
+이경조
+이효옥
+이철환
+이종봉
+이성임
+이칠석
+이철희
+이용국
+이성용
+이준수
+이청기
+이택욱
+이정치
+이윤용
+이청석
+이한지
+이신식
+이복주
+이청석
+이석이
+이정영
+이분근
+이청수
+이광혁
+이순찬
+이영근
+이청수
+이동화
+이정용
+이상오
+이추자
+이도식
+이종훈
+이보주
+이춘길
+이정진
+이이철
+이병제
+이춘길
+이현만
+이현규
+이정준
+이춘길
+이남산
+이진식
+이성오
+이춘길
+이정원
+이영세
+이성석
+이춘남
+이주숙
+이오수
+이치균
+이춘발
+이외니
+이기화
+이호율
+이춘석
+이장근
+이한극
+이세호
+이춘세
+이원정
+이형재
+이종종
+이춘식
+이기구
+이 택
+이경수
+이춘식
+이신우
+이상효
+이욱종
+이춘실
+이준선
+이지록
+이맹경
+이춘언
+이기목
+이순득
+이기숙
+이춘옥
+이분필
+이상영
+이재호
+이춘우
+이두균
+이의우
+이형제
+이춘우
+이옥임
+이윤연
+이종준
+이춘재
+이순수
+이정석
+이영돌
+이춘탁
+이규강
+이창수
+이영관
+이춘택
+이성일
+이명현
+이동수
+이춘택
+이성순
+이월정
+이성삼
+이춘택
+이형조
+이인주
+이천남
+이춘호
+이중대
+이창자
+이재도
+이춘호
+이태길
+이해한
+이사조
+이춘희
+이종기
+이금천
+이광조
+이춘희
+이원재
+이달석
+이복수
+이춘희
+이타인
+이용선
+이금희
+이춘희
+이명열
+이순생
+이구동
+이출곤
+이정태
+이태환
+이종현
+이출이
+이실호
+이판만
+이대순
+이충근
+이문순
+이수군
+이감영
+이충기
+이영영
+이무아
+이병수
+이충길
+이용달
+이형우
+이경성
+이충길
+이현학
+이홍우
+이순구
+이충헌
+이현섭
+이용범
+이광택
+이충형
+이원환
+이막수
+이용필
+이충호
+이헌각
+이정웅
+이희환
+이충환
+이만길
+이병자
+이정웅
+이충환
+이성한
+이수우
+이수순
+이치권
+이옥수
+이영진
+이석연
+이칠만
+이필수
+이해연
+이복식
+이칠수
+이종용
+이병호
+이월용
+이칠암
+이삼희
+이영복
+이일우
+이칠인
+이진숙
+이영재
+이영규
+이쾌우
+이상란
+이달구
+이수철
+이쾌호
+이호재
+이현동
+이문달
+이탁원
+이갑근
+이한용
+이을석
+이태경
+이태억
+이수모
+이경구
+이태경
+이진흠
+이광배
+이장섭
+이태경
+이태택
+이영순
+이호수
+이태곤
+이인수
+이성선
+이창태
+이태곤
+이대언
+이희문
+이진석
+이태규
+이학수
+이행백
+이재용
+이태근
+이정순
+이호갑
+이양봉
+이태근
+이수호
+이칠호
+이창우
+이태근
+이영수
+이용호
+이원조
+이태근
+이정영
+이윤상
+이성렬
+이태근
+이병수
+이성신
+이래곤
+이태근
+이태구
+이달중
+이진원
+이태근
+이인숙
+이한자
+이순일
+이태근
+이상호
+이정동
+이병옥
+이태근
+이현석
+이정덕
+이주우
+이태근
+이두호
+이정갑
+이경순
+이태기
+이봉암
+이판표
+이석흠
+이태달
+이성경
+이대자
+이증규
+이태덕
+이두학
+이제효
+이금희
+이태동
+이성태
+이정태
+이태언
+이태복
+이규호
+이순철
+이상일
+이태봉
+이명고
+이규배
+이봉우
+이태봉
+이삼연
+이갑례
+이홍경
+이태분
+이정연
+이윤태
+이성헌
+이태석
+이철재
+이행구
+이영자
+이태석
+이재악
+이칠환
+이재호
+이태석
+이순남
+이낙학
+이팔경
+이태선
+이태웅
+이영래
+이봉훈
+이태선
+이근재
+이평옥
+이현희
+이태성
+이종천
+이태호
+이은숙
+이태성
+이규건
+이상환
+이수남
+이태성
+이종용
+이계영
+이회창
+이태성
+이차포
+이도호
+이종진
+이태수
+이록길
+이소복
+이정이
+이태수
+이성만
+이현국
+이정희
+이태수
+이정선
+이춘준
+이순웅
+이태수
+이만근
+이병암
+이윤출
+이태수
+이태자
+이재이
+이윤근
+이태순
+이무택
+이말귀
+이재용
+이태술
+이근기
+이영석
+이경득
+이태술
+이정도
+이성섭
+이재태
+이태술
+이경순
+이기자
+이상선
+이태식
+이점도
+이 환
+이종현
+이태식
+이은식
+이원수
+이병극
+이태식
+이성수
+이을봉
+이병주
+이태식
+이수섭
+이충호
+이헌일
+이태식
+이정연
+이인대
+이영호
+이태신
+이규순
+이정일
+이성주
+이태암
+이근철
+이윤주
+이복호
+이태연
+이윤순
+이태식
+이명우
+이태열
+이재석
+이형석
+이재철
+이태옥
+이종준
+이질필
+이해욱
+이태원
+이중택
+이승순
+이용식
+이태원
+이준철
+이영수
+이성용
+이태원
+이태선
+이경철
+이태경
+이태윤
+이창범
+이근래
+이영식
+이태임
+이복규
+이우태
+이복태
+이태조
+이상헌
+이영용
+이만희
+이태조
+이도희
+이충한
+이병환
+이태조
+이일호
+이기애
+이난근
+이태준
+이재자
+이광희
+이보성
+이태철
+이옥이
+이영호
+이병리
+이태현
+이인경
+이이출
+이필환
+이태현
+이월환
+이화훈
+이경용
+이태호
+이종화
+이재희
+이효근
+이태호
+이달일
+이재언
+이영현
+이태호
+이종용
+이현식
+이양흔
+이태환
+이순철
+이병식
+이정택
+이태효
+이태호
+이명수
+이규섭
+이태훈
+이흥출
+이외로
+이헌자
+이태훈
+이의학
+이장남
+이순출
+이태희
+이광군
+이귀희
+이임숙
+이택곤
+이경인
+이재태
+이헌규
+이택춘
+이문호
+이인득
+이병배
+이특성
+이재창
+이정조
+이하자
+이판기
+이기숙
+이석곤
+이정곤
+이판돌
+이 환
+이윤희
+이길구
+이판동
+이우일
+이귀열
+이인석
+이판석
+이근숙
+이상호
+이칠선
+이판순
+이용경
+이준호
+이재준
+이판순
+이수진
+이순성
+이윤순
+이판술
+이준희
+이창석
+이주철
+이판식
+이정완
+이분수
+이봉택
+이판용
+이정길
+이기설
+이만훈
+이팔용
+이순원
+이지성
+이흥술
+이평구
+이문달
+이병순
+이종하
+이풍미
+이성요
+이경형
+이종래
+이필기
+이타식
+이헌환
+이복현
+이필남
+이재남
+이윤경
+이숙중
+이필수
+이선규
+이종왕
+이기희
+이필수
+이재환
+이종록
+이도원
+이필연
+이재종
+이대수
+이종현
+이필환
+이영환
+이쌍백
+이점연
+이하경
+이기화
+이재갑
+이문동
+이하식
+이성래
+이정곤
+이장호
+이학노
+이성완
+이중택
+이종주
+이학석
+이규호
+이진식
+이동탁
+이학제
+이경현
+이춘권
+이시한
+이학조
+이차호
+이봉헌
+이성진
+이한구
+이기고
+이정출
+이병정
+이한균
+이 조
+이명관
+이숙자
+이한근
+이점식
+이대찬
+이순화
+이한덕
+이뇌열
+이순복
+이인목
+이한성
+이병근
+이분석
+이영열
+이한순
+이현도
+이칠진
+이영환
+이한식
+이무명
+이영대
+이수남
+이한용
+이판권
+이성식
+이영동
+이한평
+이광순
+이용구
+이상태
+이한홍
+이성진
+이정남
+이쌍진
+이항용
+이순술
+이춘수
+이진자
+이해석
+이용식
+이태덕
+이영환
+이해시
+이외성
+이홍환
+이피태
+이해영
+이충호
+이정선
+이영석
+이해옥
+이수희
+이영웅
+이의순
+이해우
+이종우
+이용환
+이명순
+이해욱
+이창국
+이천현
+이원우
+이해운
+이용제
+이종만
+이래교
+이해웅
+이길연
+이태주
+이광선
+이해자
+이상석
+이종식
+이무규
+이해정
+이성수
+이상열
+이필석
+이해정
+이정대
+이규도
+이경연
+이해조
+이옥동
+이종서
+이영용
+이해주
+이명순
+이호준
+이치남
+이해준
+이남택
+이차주
+이순덕
+이해철
+이익조
+이혁경
+이병영
+이행수
+이맹열
+이상선
+이정혜
+이행운
+이봉세
+이창곤
+이진조
+이행자
+이차연
+이용인
+이경분
+이행탁
+이소우
+이희숙
+이경태
+이향미
+이근웅
+이명철
+이금돌
+이향석
+이종섭
+이경익
+이용영
+이헌갑
+이상숙
+이성만
+이영덕
+이헌국
+이기태
+이귀국
+이원덕
+이헌기
+이태희
+이순훈
+이영호
+이헌기
+이봉덕
+이이식
+이재호
+이헌달
+이봉근
+이명금
+이경원
+이헌문
+이수섭
+이동현
+이기선
+이헌방
+이선철
+이인희
+이석범
+이헌상
+이일출
+이금현
+이수범
+이헌식
+이장헌
+이재수
+이대선
+이헌영
+이광재
+이경구
+이광용
+이헌오
+이수우
+이영환
+이세주
+이헌용
+이병홍
+이월원
+이재이
+이헌우
+이기학
+이계조
+이두순
+이헌웅
+이윤식
+이수출
+이노일
+이헌익
+이금하
+이동순
+이학기
+이헌적
+이순용
+이장순
+이태일
+이헌주
+이팔수
+이완효
+이손규
+이헌진
+이영숙
+이상기
+이대목
+이헌출
+이영량
+이경하
+이공석
+이헌치
+이종철
+이완식
+이미웅
+이헌탁
+이복규
+이상조
+이해구
+이헌태
+이재식
+이성덕
+이경태
+이헌태
+이기태
+이명광
+이만용
+이헌태
+이돌순
+이순곤
+이일철
+이헌포
+이영현
+이재출
+이복웅
+이헌포
+이차진
+이대홍
+이용도
+이헌호
+이근경
+이명석
+이갑봉
+이헌호
+이진대
+이규웅
+이상환
+이헌호
+이종희
+이정섭
+이종명
+이혁진
+이종영
+이동성
+이태원
+이현구
+이용배
+이현진
+이은용
+이현령
+이동권
+이원호
+이상용
+이현모
+이업출
+이화훈
+이동태
+이현상
+이종식
+이영준
+이경생
+이현상
+이하희
+이태철
+이금길
+이현상
+이윤호
+이동생
+이진열
+이현숙
+이철자
+이수진
+이홍일
+이현식
+이정애
+이재배
+이영련
+이현열
+이상술
+이일택
+이광호
+이현재
+이동휘
+이영연
+이난운
+이현정
+이복오
+이운성
+이상원
+이현조
+이진균
+이기열
+이위식
+이현종
+이태희
+이재도
+이범주
+이현철
+이광술
+이기동
+이효순
+이현철
+이병재
+이재곤
+이정범
+이현태
+이석현
+이점암
+이윤식
+이현희
+이순자
+이병희
+이수석
+이형광
+이용원
+이윤찬
+이이재
+이형노
+이선식
+이명익
+이만욱
+이형대
+이종태
+이술택
+이용문
+이형묵
+이피득
+이맹순
+이병조
+이형식
+이상석
+이치말
+이재선
+이형식
+이월숙
+이의문
+이말호
+이형조
+이덕남
+이명암
+이영우
+이형태
+이규조
+이인현
+이관규
+이형태
+이택주
+이용일
+이재순
+이혜경
+이표항
+이정호
+이심창
+이혜경
+이동섭
+이이규
+이정출
+이혜경
+이상식
+이종석
+이헌주
+이혜림
+이기욱
+이석훈
+이귀남
+이혜숙
+이재열
+이구환
+이효준
+이혜숙
+이창호
+이원진
+이이만
+이혜주
+이광식
+이종술
+이갑조
+이호권
+이명환
+이대조
+이우성
+이호권
+이옥권
+이외복
+이우옥
+이호동
+이한호
+이태선
+이광용
+이호만
+이경만
+이계환
+이승도
+이호상
+이판열
+이복제
+이오세
+이호석
+이순숙
+이위준
+이정준
+이호성
+이철술
+이성웅
+이춘제
+이호신
+이정섭
+이학도
+이규화
+이호영
+이덕하
+이진호
+이태균
+이호원
+이재호
+이주실
+이기호
+이호원
+이정열
+이용립
+이종식
+이호재
+이대영
+이태대
+이성호
+이호정
+이신탁
+이동만
+이정식
+이호중
+이준준
+이홍수
+이재재
+이호춘
+이정엽
+이석수
+이규환
+이호측
+이광운
+이석균
+이병환
+이홍구
+이동선
+이성식
+이형권
+이홍구
+이병조
+이수석
+이말수
+이홍구
+이원환
+이육진
+이광선
+이홍국
+이동이
+이지근
+이판조
+이홍균
+이주철
+이상식
+이춘근
+이홍기
+이병춘
+이준학
+이영성
+이홍란
+이은복
+이종우
+이재종
+이홍석
+이남용
+이을근
+이청돌
+이홍식
+이영호
+이석수
+이홍현
+이홍식
+이판화
+이이래
+이진복
+이홍열
+이지수
+이달균
+이규자
+이홍택
+이추학
+이윤숙
+이기준
+이홍택
+이종언
+이추득
+이종기
+이화경
+이의덕
+이달국
+이정재
+이화경
+이대태
+이순수
+이동학
+이화락
+이태규
+이이홍
+이순섭
+이화석
+이한래
+이순현
+이희희
+이화세
+이상우
+이병관
+이봉만
+이화수
+이갑조
+이필석
+이종형
+이화자
+이재식
+이태연
+이호원
+이화종
+이병관
+이영술
+이충춘
+이환수
+이태복
+이동우
+이민열
+이환이
+이소희
+이정진
+이재곤
+이환종
+이분재
+이귀곤
+이연숙
+이황수
+이봉근
+이상일
+이영준
+이회순
+이민수
+이덕대
+이영조
+이효균
+이상호
+이태운
+이덕운
+이효수
+이영수
+이혜우
+이정규
+이효원
+이윤수
+이화대
+이명택
+이후봉
+이윤종
+이형호
+이태휴
+이흥기
+이봉상
+이재성
+이종헌
+이흥순
+이달선
+이경억
+이만선
+이흥식
+이종화
+이광배
+이영환
+이흥재
+이상호
+이수제
+이병규
+이희응
+이영현
+이석수
+이정기
+이희자
+이충원
+이현종
+이은식
+이희자
+이은철
+이혜수
+이종대
+인명편
+인종기
+인쌍구
+인정용
+인재환
+인재환
+인상진
+인득도
+임 영
+임장재
+임노규
+임성호
+임경배
+임창수
+임동훈
+임재진
+임경석
+임려철
+임영의
+임외호
+임경식
+임종동
+임진조
+임수철
+임경우
+임용석
+임소부
+임석호
+임경화
+임병삼
+임정수
+임남영
+임광민
+임원식
+임용근
+임주분
+임광식
+임영재
+임기석
+임현배
+임광춘
+임차현
+임분호
+임종제
+임구호
+임창동
+임상한
+임성돌
+임귀숙
+임판석
+임일관
+임철한
+임근덕
+임영돌
+임명택
+임수선
+임금영
+임희순
+임노자
+임성식
+임기오
+임영효
+임성원
+임태도
+임기표
+임정만
+임경치
+임현성
+임기혁
+임대도
+임월희
+임선수
+임기호
+임봉원
+임근희
+임차철
+임길용
+임영현
+임강수
+임정식
+임남순
+임구호
+임병갑
+임신수
+임노식
+임형남
+임덕길
+임인림
+임달석
+임진환
+임석실
+임수만
+임달출
+임상규
+임기명
+임태철
+임달호
+임성미
+임무우
+임복운
+임대희
+임경암
+임헌진
+임근래
+임도석
+임영영
+임부순
+임현희
+임동수
+임재생
+임정배
+임종환
+임록향
+임인곤
+임과숙
+임경정
+임록향
+임성봉
+임영락
+임점동
+임명권
+임원섭
+임응원
+임유연
+임명순
+임진우
+임영래
+임규선
+임명애
+임윤상
+임낙기
+임광천
+임명희
+임상수
+임용근
+임진재
+임무산
+임경호
+임왕수
+임의범
+임무수
+임애조
+임영호
+임정기
+임무연
+임수현
+임왕세
+임인상
+임문순
+임정옥
+임태봉
+임현상
+임병곤
+임희기
+임광우
+임헌택
+임병곤
+임창영
+임인진
+임용희
+임병군
+임순기
+임소철
+임희광
+임병길
+임순철
+임성원
+임순부
+임병삼
+임명순
+임상호
+임상홍
+임병수
+임외삼
+임영훈
+임의덕
+임병오
+임병수
+임용환
+임순노
+임병철
+임득암
+임영현
+임현우
+임병철
+임상호
+임봉호
+임석흠
+임병태
+임원열
+임명봉
+임석규
+임복영
+임칠태
+임종석
+임무영
+임봉우
+임용옥
+임상조
+임채열
+임분조
+임치락
+임무재
+임상생
+임상수
+임재황
+임정기
+임창숙
+임상학
+임윤헌
+임외선
+임말백
+임석점
+임창두
+임태선
+임재술
+임선미
+임준형
+임병출
+임윤곤
+임선우
+임삼경
+임기선
+임종수
+임성규
+임감종
+임희렬
+임천수
+임성기
+임용용
+임진순
+임교영
+임성원
+임순조
+임덕석
+임오홍
+임성호
+임광애
+임덕화
+임재록
+임수동
+임춘신
+임재훈
+임태선
+임수식
+임영우
+임태희
+임태석
+임수일
+임정봉
+임병경
+임상환
+임수칙
+임상여
+임종정
+임종수
+임숙영
+임은표
+임미곤
+임두규
+임숙자
+임갑석
+임대규
+임종진
+임숙자
+임춘문
+임재태
+임말보
+임순덕
+임석선
+임무목
+임기석
+임순덕
+임인휴
+임성순
+임판수
+임순임
+임미남
+임상환
+임기철
+임순자
+임환석
+임규학
+임혁동
+임순환
+임근순
+임진섭
+임영란
+임술호
+임원수
+임면길
+임호욱
+임승곤
+임호수
+임말은
+임영교
+임승권
+임남식
+임필형
+임진순
+임승배
+임영표
+임상수
+임영득
+임승순
+임행근
+임종길
+임치조
+임승팔
+임낙기
+임신규
+임신순
+임양우
+임문이
+임세수
+임명석
+임연호
+임수배
+임성배
+임규석
+임영국
+임차희
+임계진
+임인환
+임영모
+임일호
+임동수
+임언철
+임영종
+임갑흠
+임중순
+임성수
+임영태
+임휘옥
+임만경
+임성수
+임영호
+임병용
+임군철
+임재연
+임영호
+임신홍
+임병자
+임구윤
+임영호
+임금련
+임찬순
+임진옥
+임옥연
+임유흥
+임경태
+임순용
+임외수
+임용기
+임호진
+임상경
+임용진
+임운열
+임경범
+임정호
+임용진
+임상화
+임수조
+임기술
+임용택
+임덕열
+임선붕
+임부복
+임용해
+임용순
+임옥섭
+임용덕
+임우성
+임기자
+임정욱
+임규섭
+임원자
+임명수
+임순배
+임종규
+임원희
+임복석
+임성정
+임재규
+임윤호
+임이화
+임종식
+임영균
+임은경
+임운현
+임인걸
+임용용
+임을상
+임일열
+임석선
+임경수
+임인순
+임보식
+임덕례
+임해준
+임인재
+임희근
+임익순
+임쌍길
+임일우
+임춘효
+임창호
+임충자
+임장규
+임영구
+임태숙
+임장갑
+임재건
+임인선
+임정환
+임진훈
+임재권
+임주생
+임복돌
+임재현
+임재근
+임계조
+임태우
+임만성
+임재근
+임영섭
+임차상
+임달복
+임재근
+임창식
+임삼조
+임수진
+임재천
+임근환
+임기재
+임용호
+임재호
+임성오
+임순우
+임재수
+임점식
+임원봉
+임창영
+임순문
+임정갑
+임학이
+임규학
+임영수
+임정갑
+임삼근
+임해천
+임판제
+임정달
+임종란
+임교기
+임상학
+임정대
+임창아
+임종열
+임자권
+임정모
+임이완
+임상학
+임춘룡
+임정배
+임춘현
+임광대
+임영열
+임정숙
+임용주
+임정자
+임영곤
+임정술
+임진신
+임진권
+임면욱
+임정진
+임임선
+임재조
+임은득
+임정철
+임용식
+임점용
+임용석
+임정태
+임수덕
+임수진
+임수이
+임정혜
+임일섭
+임상이
+임치일
+임정호
+임귀석
+임항등
+임교열
+임정환
+임낙범
+임석상
+임점현
+임제우
+임병헌
+임상춘
+임종희
+임조강
+임용환
+임대생
+임성석
+임종국
+임용자
+임완환
+임재선
+임종길
+임보술
+임순환
+임순성
+임종만
+임재식
+임창순
+임정호
+임종만
+임은선
+임정옥
+임종희
+임종정
+임수섭
+임길선
+임춘식
+임종택
+임순도
+임월우
+임봉화
+임종호
+임종욱
+임상구
+임정수
+임종환
+임재수
+임광한
+임보학
+임주섭
+임상태
+임명수
+임상기
+임중수
+임차곤
+임명조
+임동균
+임증권
+임경희
+임상임
+임태협
+임지환
+임용기
+임동길
+임옥택
+임진규
+임재섭
+임원순
+임수행
+임진모
+임정순
+임춘택
+임점관
+임진목
+임상용
+임동태
+임영현
+임진웅
+임명천
+임사오
+임정호
+임진태
+임상휴
+임명기
+임성권
+임차도
+임종남
+임영만
+임경희
+임차술
+임근억
+임상태
+임연갑
+임창근
+임윤철
+임정태
+임영곤
+임채식
+임영윤
+임형현
+임문철
+임채용
+임정철
+임동준
+임도옥
+임채호
+임태용
+임관용
+임동환
+임천택
+임영용
+임종우
+임부필
+임청석
+임진희
+임봉경
+임정일
+임춘근
+임을선
+임태순
+임화종
+임춘배
+임동옥
+임술남
+임성순
+임춘생
+임중용
+임 기
+임승구
+임춘자
+임경효
+임갑열
+임기식
+임치조
+임주석
+임말동
+임영걸
+임태경
+임기분
+임철일
+임옥진
+임태길
+임효호
+임병의
+임모일
+임태길
+임석곤
+임완택
+임병걸
+임태수
+임시운
+임종권
+임순희
+임태순
+임해윤
+임장구
+임규애
+임태순
+임점종
+임선재
+임정채
+임태순
+임광희
+임하화
+임월춘
+임태자
+임종혹
+임춘문
+임병자
+임태조
+임명현
+임태우
+임윤철
+임태진
+임상규
+임규출
+임소열
+임태호
+임병균
+임재출
+임중웅
+임태호
+임종호
+임홍환
+임종애
+임판석
+임경영
+임종완
+임병규
+임판수
+임영경
+임영환
+임무현
+임팔용
+임복이
+임근석
+임소조
+임학기
+임원근
+임민한
+임말호
+임학술
+임효선
+임영열
+임동수
+임한옥
+임수태
+임술광
+임곤구
+임해철
+임해덕
+임윤조
+임재현
+임행택
+임순임
+임용경
+임영구
+임헌영
+임숙순
+임희조
+임경기
+임헌우
+임교숙
+임두주
+임성채
+임헌철
+임태모
+임경개
+임호수
+임호영
+임홍천
+임운조
+임선희
+임화순
+임만영
+임재임
+임 갑
+임환택
+임재환
+임경숙
+임이호
+장 호
+장병숙
+장치열
+장영정
+장경숙
+장춘자
+장희권
+장기연
+장경술
+장병선
+장혜웅
+장순웅
+장계암
+장경택
+장갑종
+장명후
+장관식
+장문건
+장덕한
+장광열
+장광옥
+장정희
+장암근
+장병용
+장국남
+장 현
+장용희
+장영근
+장규문
+장흥민
+장무관
+장지성
+장규식
+장병기
+장봉순
+장영식
+장규현
+장인완
+장경선
+장한진
+장규홍
+장승화
+장해성
+장재대
+장금영
+장도모
+장송도
+장은환
+장기리
+장진희
+장옥헌
+장일호
+장기식
+장민백
+장재덕
+장재원
+장기왕
+장영철
+장주만
+장증춘
+장기주
+장동봉
+장성출
+장영금
+장기화
+장재호
+장은우
+장병달
+장남순
+장희범
+장진수
+장재우
+장남이
+장계오
+장규조
+장기현
+장대성
+장완완
+장종우
+장윤명
+장덕식
+장원호
+장종태
+장추기
+장덕현
+장말우
+장수규
+장춘수
+장동석
+장계봉
+장상오
+장명청
+장동식
+장대개
+장원수
+장광술
+장동호
+장상조
+장재길
+장일조
+장동호
+장근생
+장수오
+장해현
+장두권
+장대근
+장우연
+장경아
+장두석
+장계점
+장계주
+장지종
+장두순
+장한용
+장종영
+장한용
+장두열
+장상분
+장봉철
+장순석
+장두익
+장시우
+장성호
+장시천
+장만수
+장복관
+장수호
+장원수
+장명호
+장학숙
+장일호
+장태석
+장민식
+장병훈
+장영출
+장영조
+장병국
+장정권
+장정원
+장상출
+장병규
+장영재
+장 수
+장재만
+장병대
+장분우
+장교교
+장영종
+장병식
+장정근
+장선한
+장기우
+장병오
+장순진
+장태득
+장늠자
+장병욱
+장상숙
+장근열
+장정수
+장병운
+장수우
+장동자
+장운갑
+장병준
+장용식
+장지민
+장귀오
+장병철
+장승호
+장석우
+장성우
+장병헌
+장창태
+장상석
+장성팔
+장병호
+장정환
+장익식
+장점선
+장병호
+장금정
+장순기
+장무용
+장복진
+장상진
+장창조
+장계민
+장봉이
+장중수
+장상기
+장순철
+장삼복
+장미수
+장혜대
+장선권
+장삼술
+장종정
+장순재
+장병조
+장삼조
+장기옥
+장해석
+장종득
+장삼환
+장진학
+장구웅
+장정수
+장상기
+장성우
+장정용
+장칠길
+장상기
+장원천
+장옥선
+장형희
+장상기
+장분환
+장만조
+장의희
+장상도
+장삼형
+장자덕
+장호춘
+장상명
+장규기
+장동범
+장경호
+장상부
+장재철
+장영섭
+장종계
+장상식
+장동배
+장호우
+장주분
+장상하
+장철선
+장덕호
+장인희
+장석금
+장만길
+장병재
+장병식
+장석윤
+장종식
+장동률
+장진범
+장석조
+장순주
+장성교
+장철자
+장선식
+장영선
+장학덕
+장 란
+장성규
+장말식
+장경선
+장세호
+장성기
+장태술
+장덕동
+장복기
+장성웅
+장원영
+장차상
+장용도
+장성조
+장영만
+장종언
+장영표
+장성환
+장종서
+장우암
+장진선
+장세열
+장영숙
+장성철
+장암식
+장세원
+장창복
+장보성
+장혁석
+장세중
+장덕철
+장형열
+장수식
+장소권
+장두태
+장점현
+장병환
+장소선
+장석동
+장현곤
+장병환
+장소순
+장병용
+장종연
+장병현
+장소측
+장정진
+장성평
+장종운
+장순명
+장명원
+장성환
+장철분
+장순선
+장 현
+장춘진
+장종도
+장순자
+장태복
+장병하
+장본경
+장순태
+장외수
+장상종
+장성곤
+장순표
+장안헌
+장명이
+장분건
+장순희
+장겸용
+장갑진
+장석권
+장승록
+장재이
+장창대
+장석문
+장승옥
+장의화
+장종헌
+장인분
+장승호
+장정미
+장상임
+장순기
+장시혜
+장정복
+장춘식
+장종복
+장안임
+장혁완
+장현야
+장교철
+장연식
+장춘길
+장태균
+장영근
+장연화
+장현현
+장일호
+장미석
+장영갑
+장중호
+장억주
+장동복
+장영권
+장두찬
+장종훈
+장유식
+장영기
+장규덕
+장 수
+장병희
+장영길
+장명련
+장병병
+장승조
+장영도
+장동관
+장중권
+장한규
+장영복
+장낙흥
+장외규
+장찬길
+장영상
+장종용
+장현영
+장경례
+장영수
+장창이
+장오기
+장주조
+장영작
+장도식
+장영천
+장병현
+장영주
+장성식
+장상도
+장홍식
+장영환
+장영성
+장정환
+장태록
+장영희
+장오선
+장병웅
+장병식
+장옥상
+장소자
+장만희
+장도경
+장옥순
+장영희
+장정호
+장윤권
+장옥순
+장순환
+장재진
+장정이
+장외자
+장칠운
+장정란
+장유연
+장용현
+장영호
+장수숙
+장욱성
+장용호
+장수구
+장여주
+장상숙
+장우출
+장원재
+장인종
+장기관
+장운봉
+장영식
+장청수
+장상경
+장운용
+장호건
+장대석
+장노정
+장운용
+장순열
+장선희
+장선석
+장운용
+장금봉
+장상섭
+장오규
+장원식
+장언환
+장태주
+장점덕
+장원열
+장장출
+장선봉
+장소준
+장원재
+장동삼
+장덕순
+장보수
+장월술
+장만상
+장한환
+장승우
+장육문
+장원호
+장한일
+장정호
+장윤돌
+장명문
+장숙도
+장재곤
+장율이
+장찬근
+장청국
+장규길
+장을경
+장헌권
+장연익
+장선우
+장을성
+장규순
+장점수
+장성순
+장을술
+장동문
+장태현
+장영식
+장을식
+장언호
+장판동
+장정용
+장익용
+장상만
+장광식
+장정만
+장인석
+장진조
+장익태
+장희정
+장인식
+장만재
+장태용
+장상란
+장인학
+장현량
+장노대
+장현태
+장작지
+장홍경
+장상태
+장귀식
+장재만
+장두동
+장덕기
+장현돌
+장재만
+장영록
+장병권
+장윤호
+장재성
+장덕용
+장석호
+장삼이
+장재식
+장종희
+장종란
+장판웅
+장재식
+장쌍광
+장희홍
+장성이
+장재식
+장희성
+장우옥
+장순남
+장재학
+장현호
+장용화
+장이회
+장점도
+장남향
+장재숙
+장외조
+장점수
+장정권
+장태태
+장광남
+장정석
+장소화
+장연중
+장성덕
+장정석
+장정구
+장윤구
+장준돌
+장정숙
+장말로
+장수우
+장순천
+장정순
+장성회
+장 광
+장인석
+장정순
+장기흔
+장영혁
+장재길
+장정용
+장세경
+장남록
+장귀길
+장정자
+장상웅
+장정서
+장위경
+장정호
+장영갑
+장헌신
+장동섭
+장정희
+장수용
+장준숙
+장윤유
+장종경
+장인승
+장상호
+장재택
+장종식
+장태주
+장재출
+장수향
+장종환
+장해화
+장만범
+장건대
+장준기
+장국일
+장복호
+장태자
+장준동
+장 자
+장정기
+장경순
+장준상
+장광환
+장미숙
+장종식
+장지현
+장상출
+장기순
+장숙림
+장진호
+장해주
+장정홍
+장영갑
+장차식
+장소임
+장진희
+장팔희
+장창수
+장인옥
+장재식
+장기백
+장창영
+장용우
+장종주
+장성한
+장창조
+장준곤
+장삼호
+장신석
+장창환
+장수니
+장환섭
+장창학
+장천수
+장규수
+장용탁
+장복균
+장철기
+장태식
+장차희
+장무소
+장철식
+장양원
+장규숙
+장종섭
+장충균
+장헌정
+장희기
+장용석
+장치혁
+장명학
+장근중
+장영수
+장태권
+장종태
+장성우
+장병조
+장태권
+장식식
+장채자
+장진식
+장태복
+장일애
+장병애
+장은호
+장태성
+장선근
+장채자
+장순상
+장태희
+장정석
+장정준
+장정조
+장판돌
+장순조
+장용수
+장금치
+장학수
+장숙식
+장용태
+장하환
+장학이
+장태영
+장상룡
+장만희
+장학조
+장재술
+장우이
+장재연
+장해준
+장채덕
+장진권
+장정열
+장현숙
+장광숙
+장해달
+장기도
+장현식
+장진환
+장헌선
+장승영
+장형희
+장현환
+장교희
+장기식
+장호순
+장만욱
+장병호
+장 환
+장홍식
+장봉규
+장태휴
+장기섭
+장홍진
+장재실
+장한규
+장영영
+장회상
+장영범
+장대동
+장대호
+장훈식
+장인남
+장태우
+장두중
+장휘지
+장연보
+장재식
+장점선
+장희규
+장점우
+장명보
+장경조
+장희자
+장오주
+장공원
+장낙정
+장희철
+장재규
+장준암
+장옥수
+장희현
+장수호
+장헌진
+장영현
+전갑덕
+전형병
+전금선
+전순익
+전갑덕
+전원봉
+전길석
+전연권
+전갑식
+전영원
+전인주
+전종철
+전갑준
+전일순
+전광덕
+전종환
+전강수
+전하화
+전희옥
+전대원
+전강일
+전갑영
+전인향
+전홍택
+전강호
+전길철
+전필봉
+전성남
+전경련
+전달주
+전태웅
+전삼경
+전경배
+전덕세
+전길화
+전용순
+전경배
+전난옥
+전태금
+전신영
+전경식
+전세선
+전점철
+전정성
+전경식
+전화술
+전구철
+전성경
+전경애
+전태철
+전종조
+전상룡
+전경태
+전신호
+전용권
+전성철
+전경표
+전재수
+전응호
+전경권
+전경호
+전재학
+전순옥
+전오준
+전경희
+전희봉
+전종광
+전대상
+전계순
+전명식
+전동덕
+전택재
+전계술
+전두기
+전성철
+전주영
+전곡분
+전부동
+전재주
+전현술
+전공석
+전교임
+전소우
+전말분
+전광식
+전기준
+전해수
+전상윤
+전규성
+전영기
+전홍원
+전정윤
+전규철
+전기철
+전칠천
+전규이
+전근식
+전정옥
+전용욱
+전성영
+전기범
+전기호
+전영우
+전규명
+전기석
+전건삼
+전명옥
+전성임
+전기석
+전민술
+전석국
+전도종
+전기준
+전정수
+전규자
+전영덕
+전기찬
+전주한
+전영향
+전병길
+전기출
+전수호
+전한녕
+전재기
+전기현
+전임운
+전 란
+전병화
+전기홍
+전용국
+전점현
+전태기
+전기홍
+전주자
+전재영
+전남환
+전기환
+전영준
+전현열
+전봉경
+전길연
+전재숙
+전동옥
+전준숙
+전달용
+전옥득
+전선탁
+전채자
+전대두
+전명악
+전영영
+전인호
+전대식
+전의규
+전종양
+전정일
+전대식
+전상동
+전해업
+전오식
+전말연
+전헌철
+전재환
+전진기
+전명석
+전달숙
+전순우
+전이돌
+전명수
+전강연
+전진현
+전동자
+전명호
+전병덕
+전석수
+전승진
+전문식
+전영문
+전창강
+전병조
+전문출
+전종이
+전양곤
+전중홍
+전문평
+전천동
+전세금
+전광철
+전문호
+전종택
+전지덕
+전상호
+전미진
+전성열
+전진환
+전홍동
+전병기
+전자동
+전순연
+전정식
+전병길
+전수성
+전원조
+전하임
+전병달
+전원칠
+전언순
+전정수
+전병대
+전충숙
+전판선
+전병석
+전병두
+전두현
+전찬구
+전규준
+전병립
+전은성
+전달복
+전영찬
+전병목
+전철덕
+전병배
+전성우
+전병무
+전성태
+전수재
+전상수
+전병석
+전범청
+전상천
+전용회
+전병섭
+전동용
+전순철
+전상순
+전병수
+전광수
+전용태
+전평영
+전병순
+전무현
+전순름
+전 선
+전병순
+전승필
+전재민
+전대상
+전병식
+전구만
+전창석
+전영필
+전병옥
+전술조
+전미석
+전성홍
+전병옥
+전덕조
+전복식
+전다규
+전병용
+전병규
+전순연
+전한락
+전병용
+전옥덕
+전점오
+전병동
+전병욱
+전순제
+전윤팔
+전영석
+전병원
+전태숙
+전억수
+전성규
+전병원
+전금호
+전우희
+전임훈
+전병입
+전대진
+전형호
+전상양
+전병주
+전연기
+전기향
+전정환
+전병준
+전경성
+전봉수
+전정연
+전병창
+전순옥
+전대복
+전용화
+전병천
+전석무
+전일의
+전하도
+전병철
+전판균
+전부봉
+전홍영
+전병탁
+전영용
+전정만
+전태희
+전병태
+전판웅
+전철수
+전정향
+전병택
+전봉일
+전태순
+전쾌식
+전병택
+전영조
+전연록
+전성복
+전병혁
+전일우
+전광식
+전태규
+전병호
+전헌호
+전태길
+전윤남
+전병화
+전태평
+전희자
+전종이
+전병환
+전종준
+전동자
+전해배
+전병휴
+전광훈
+전상기
+전강연
+전보수
+전동식
+전현순
+전인철
+전봉권
+전점숙
+전용석
+전재학
+전봉수
+전강보
+전현암
+전종식
+전분술
+전순남
+전명득
+전수희
+전사경
+전경희
+전준홍
+전대섭
+전삼덕
+전용호
+전준이
+전진용
+전삼수
+전상복
+전상대
+전원용
+전삼출
+전청호
+전용조
+전명길
+전삼현
+전진원
+전도상
+전태호
+전삼현
+전태조
+전우규
+전현희
+전상단
+전장수
+전명택
+전옥웅
+전상립
+전상경
+전성일
+전월숙
+전상봉
+전병만
+전선복
+전상련
+전상우
+전해성
+전지자
+전종일
+전상운
+전권상
+전태희
+전정건
+전상운
+전수우
+전상영
+전주진
+전상조
+전창중
+전귀자
+전수순
+전상준
+전득갑
+전석철
+전교휴
+전상철
+전상현
+전언선
+전원호
+전상환
+전미호
+전윤욱
+전성수
+전석모
+전수기
+전열관
+전상열
+전석성
+전덕애
+전용이
+전성식
+전석주
+전일권
+전창태
+전은열
+전선현
+전규식
+전태환
+전천현
+전성곤
+전대빈
+전종태
+전동현
+전성배
+전영완
+전정수
+전정용
+전성배
+전경원
+전 수
+전기열
+전성용
+전면정
+전상현
+전흥주
+전성희
+전용섭
+전소직
+전해진
+전소연
+전복이
+전태식
+전수덕
+전소영
+전재옥
+전해기
+전근환
+전수근
+전선자
+전윤명
+전일원
+전수득
+전영환
+전호성
+전수명
+전수식
+전재숙
+전무수
+전희선
+전수용
+전경한
+전문자
+전명복
+전수학
+전세길
+전수빈
+전정립
+전수학
+전덕봉
+전은임
+전정철
+전수현
+전상태
+전인현
+전욱호
+전수환
+전소선
+전중천
+전삼장
+전수환
+전장식
+전병호
+전종성
+전숙자
+전종환
+전양동
+전재곤
+전순단
+전경부
+전문용
+전우태
+전순득
+전국수
+전수장
+전준리
+전순연
+전동수
+전강영
+전쌍숙
+전순자
+전태용
+전병돌
+전정진
+전순채
+전춘구
+전삼한
+전판식
+전쌍근
+전영숙
+전광언
+전수기
+전쌍수
+전해용
+전창원
+전병락
+전연이
+전승식
+전수태
+전영현
+전영균
+전재호
+전일구
+전치상
+전영균
+전찬균
+전경덕
+전주윤
+전영기
+전복길
+전태권
+전기천
+전영덕
+전점양
+전기봉
+전광숙
+전영록
+전수식
+전정근
+전찬원
+전영삼
+전원호
+전지춘
+전원옥
+전영석
+전태래
+전용하
+전철팔
+전영우
+전휘식
+전창곤
+전대극
+전영자
+전영연
+전윤수
+전종정
+전영종
+전수식
+전충선
+전태희
+전영채
+전현호
+전태부
+전광진
+전영탁
+전헌권
+전석숙
+전동문
+전영판
+전삼호
+전형춘
+전정숙
+전영호
+전재운
+전정구
+전영혜
+전영화
+전윤석
+전중석
+전추석
+전영화
+전종철
+전대권
+전경영
+전영환
+전만식
+전동철
+전판훈
+전영희
+전춘석
+전장남
+전경동
+전오출
+전만자
+전소기
+전상금
+전옥봉
+전석배
+전덕자
+전승철
+전옥성
+전종윤
+전주주
+전강주
+전옥순
+전수덕
+전재순
+전상임
+전완석
+전병진
+전석순
+전재희
+전외출
+전용균
+전미선
+전기우
+전용기
+전수옥
+전영성
+전기돌
+전용석
+전규규
+전덕성
+전성동
+전용수
+전명철
+전정석
+전점득
+전용제
+전경수
+전병한
+전영종
+전용채
+전성선
+전주규
+전태숙
+전용호
+전정복
+전병휴
+전명선
+전용효
+전덕희
+전진용
+전무건
+전용희
+전임복
+전창재
+전영원
+전우수
+전종대
+전석환
+전덕영
+전우진
+전영준
+전범영
+전영순
+전욱남
+전유순
+전태순
+전일열
+전원길
+전태호
+전창일
+전두혜
+전원석
+전해환
+전용철
+전대희
+전원종
+전수순
+전상순
+전복수
+전원중
+전수분
+전영보
+전수일
+전윤덕
+전춘태
+전성환
+전보창
+전윤상
+전은호
+전화정
+전병광
+전윤출
+전경선
+전일환
+전준자
+전윤태
+전현수
+전춘자
+전만호
+전은근
+전말문
+전윤환
+전육기
+전을모
+전용남
+전월용
+전증진
+전을상
+전봉출
+전휘열
+전영규
+전을순
+전하열
+전춘권
+전일현
+전의준
+전유택
+전봉주
+전남기
+전장수
+전안호
+전기범
+전규세
+전장식
+전권우
+전진환
+전규환
+전재봉
+전상철
+전동길
+전기숙
+전재성
+전윤봉
+전희선
+전명균
+전재식
+전호구
+전귀균
+전경현
+전재익
+전동식
+전태철
+전지근
+전재춘
+전현수
+전홍수
+전용순
+전재현
+전영식
+전두진
+전교도
+전재현
+전수환
+전덕호
+전흥경
+전재현
+전영호
+전상영
+전병곤
+전재현
+전효환
+전대호
+전원헌
+전재호
+전효진
+전용용
+전용석
+전점생
+전차근
+전윤희
+전영숙
+전점성
+전상우
+전일동
+전준태
+전정규
+전종국
+전성기
+전영준
+전정만
+전호영
+전만오
+전경권
+전정수
+전현수
+전말석
+전영준
+전정우
+전영순
+전원옥
+전달수
+전정자
+전춘대
+전외회
+전진덕
+전정촌
+전윤기
+전기이
+전필호
+전정태
+전일원
+전은명
+전성표
+전정향
+전준발
+전태영
+전성용
+전정현
+전홍재
+전철정
+전삼선
+전제현
+전점원
+전동재
+전상연
+전종근
+전수학
+전혜식
+전도우
+전종두
+전암규
+전헌운
+전건호
+전종득
+전기원
+전태순
+전윤술
+전종석
+전달락
+전한숙
+전종수
+전종수
+전상수
+전호담
+전진국
+전종여
+전판순
+전삼오
+전증운
+전종현
+전갑탁
+전만호
+전장운
+전종호
+전오상
+전정춘
+전장하
+전주도
+전정덕
+전탁근
+전진희
+전주이
+전천전
+전 모
+전승은
+전준도
+전윤호
+전홍주
+전선영
+전준해
+전기기
+전동경
+전영외
+전준희
+전문원
+전금경
+전영수
+전차덕
+전정섭
+전동선
+전종경
+전차출
+전경달
+전차규
+전경택
+전창규
+전정일
+전창옥
+전선곤
+전창근
+전완규
+전봉선
+전정호
+전창수
+전궁식
+전태구
+전정경
+전창수
+전성순
+전병일
+전금현
+전춘국
+전정구
+전홍남
+전영화
+전춘라
+전응용
+전인수
+전영기
+전춘배
+전유용
+전태수
+전봉은
+전춘웅
+전학용
+전정광
+전치완
+전춘웅
+전상철
+전칠환
+전동식
+전춘희
+전중달
+전학만
+전겸견
+전충일
+전희서
+전채길
+전익수
+전칠수
+전보재
+전명준
+전장래
+전태경
+전재숙
+전창수
+전수재
+전태균
+전도준
+전병덕
+전달희
+전태도
+전명수
+전 국
+전대욱
+전태봉
+전욱덕
+전영환
+전대자
+전태순
+전방섭
+전철철
+전수우
+전태순
+전옥자
+전영동
+전태원
+전태식
+전종선
+전규희
+전기범
+전태조
+전정준
+전무영
+전영석
+전태환
+전위훈
+전진희
+전태권
+전판갑
+전경성
+전태환
+전청철
+전판권
+전국련
+전용건
+전선말
+전판근
+전복오
+전신순
+전지수
+전판수
+전선옥
+전영출
+전진식
+전팔십
+전묘림
+전연원
+전시웅
+전필순
+전병도
+전근규
+전영준
+전하수
+전홍길
+전규경
+전일규
+전학열
+전오휘
+전병근
+전춘희
+전한갑
+전정섭
+전종택
+전일희
+전한규
+전호혁
+전춘종
+전상영
+전한용
+전복찬
+전정수
+전명호
+전항조
+전두자
+전남규
+전희수
+전해관
+전대식
+전칠래
+전창우
+전해근
+전원자
+전승석
+전정기
+전해석
+전철순
+전영목
+전병철
+전해종
+전진용
+전순봉
+전무중
+전해주
+전호동
+전윤교
+전형호
+전해철
+전순의
+전홍열
+전현장
+전해철
+전윤출
+전한조
+전연주
+전해포
+전임조
+전재관
+전홍식
+전헌수
+전승애
+전기자
+전주태
+전현국
+전성근
+전중현
+전광조
+전현수
+전상수
+전상화
+전재연
+전형배
+전경영
+전삼원
+전연준
+전형채
+전성수
+전재진
+전성용
+전형채
+전진일
+전태현
+전기경
+전혜선
+전영현
+전병정
+전철열
+전혜숙
+전미호
+전서웅
+전용현
+전호경
+전봉배
+전경열
+전명홍
+전호근
+전학국
+전성주
+전만식
+전호근
+전홍수
+전종이
+전명래
+전호식
+전춘천
+전만숙
+전계선
+전호진
+전병재
+전홍식
+전정규
+전홍섭
+전달갑
+전명향
+전근일
+전홍열
+전규수
+전외규
+전경욱
+전홍일
+전무근
+전상수
+전팔식
+전홍진
+전팔응
+전재해
+전영출
+전홍태
+전승수
+전정분
+전석표
+전화수
+전도상
+전익홍
+전용덕
+전화자
+전석술
+전수권
+전재연
+전효근
+전학희
+전인남
+전조호
+전효근
+전창도
+전송달
+전동연
+전효배
+전경랑
+전소희
+전도수
+전효진
+전복우
+전삼남
+전근순
+전흥수
+전기순
+전금국
+전재기
+전흥주
+전동희
+전영철
+전재목
+전희득
+전이환
+전순수
+전영규
+전희영
+전우종
+전인규
+전태열
+전희철
+전지선
+전환오
+전환범
+전희환
+전봉규
+전재호
+전혜화
+정 걸
+정성숙
+정경옥
+정성태
+정 숙
+정재영
+정호이
+정은찬
+정 용
+정진근
+정용학
+정봉무
+정 훈
+정상남
+정태기
+정말환
+정갑식
+정창수
+정윤이
+정병희
+정갑주
+정영순
+정공학
+정칠영
+정갑진
+정철임
+정삼식
+정태석
+정건영
+정재록
+정귀식
+정정희
+정경란
+정종필
+정갑근
+정종자
+정경문
+정구수
+정정영
+정태용
+정경숙
+정덕희
+정균규
+정택곤
+정경식
+정 춘
+정원수
+정덕열
+정경식
+정미동
+정외선
+정규근
+정경연
+정영효
+정 식
+정중채
+정경열
+정정림
+정기구
+정순철
+정경준
+정대이
+정정수
+정혁선
+정경훈
+정성현
+정용돌
+정소화
+정계남
+정중호
+정필욱
+정석희
+정계원
+정말옥
+정희덕
+정오수
+정계향
+정무이
+정환섭
+정영갑
+정관옥
+정혁호
+정수규
+정광조
+정관의
+정쌍숙
+정재숙
+정경영
+정광남
+정명진
+정주연
+정판식
+정광덕
+정호창
+정호이
+정봉이
+정광명
+정명우
+정헌대
+정태화
+정광식
+정무수
+정석요
+정철환
+정광식
+정문호
+정정포
+정애현
+정광식
+정수득
+정희용
+정옥홍
+정광영
+정재임
+정상진
+정문룡
+정광용
+정현화
+정평필
+정무술
+정광웅
+정상태
+정용돌
+정호삼
+정광진
+정영진
+정인택
+정용석
+정광태
+정룡선
+정삼철
+정기진
+정교인
+정조식
+정창훈
+정준조
+정구관
+정삼기
+정선식
+정문희
+정구상
+정석악
+정복분
+정성수
+정구석
+정광기
+정정명
+정정권
+정구진
+정분철
+정기한
+정정달
+정구현
+정영열
+정정암
+정상이
+정구호
+정영조
+정재국
+정대기
+정국란
+정상출
+정판진
+정진정
+정권름
+정복원
+정인기
+정태익
+정권판
+정명석
+정장환
+정위기
+정권한
+정현기
+정분일
+정영실
+정귀동
+정응현
+정상이
+정명우
+정귀봉
+정만기
+정병연
+정재옥
+정귀섭
+정태례
+정종용
+정재덕
+정귀순
+정신철
+정성열
+정석계
+정규동
+정판채
+정순순
+정복열
+정규삼
+정정열
+정기호
+정태관
+정규수
+정선호
+정정순
+정상옥
+정규인
+정대규
+정세선
+정준배
+정규태
+정언완
+정종진
+정경우
+정규환
+정말내
+정원일
+정무동
+정규환
+정재산
+정재조
+정도수
+정극보
+정용철
+정윤구
+정무자
+정근재
+정영오
+정헌길
+정상세
+정근철
+정규석
+정평홍
+정병진
+정근포
+정성흠
+정주호
+정인자
+정금남
+정용수
+정의출
+정선목
+정금덕
+정희생
+정재호
+정동홍
+정금옥
+정우점
+정기자
+정효연
+정금이
+정삼순
+정석윤
+정순차
+정기둔
+정일구
+정순연
+정철용
+정기봉
+정상식
+정재덕
+정미술
+정기봉
+정종수
+정규호
+정성규
+정기상
+정상심
+정금노
+정금용
+정기석
+정성운
+정재열
+정권학
+정기석
+정진재
+정태수
+정영현
+정기선
+정영석
+정판희
+정유호
+정기수
+정세환
+정재영
+정민의
+정기숙
+정덕원
+정연식
+정순봉
+정기식
+정남택
+정준우
+정원주
+정기열
+정차림
+정숙석
+정삼수
+정기열
+정종환
+정기천
+정종웅
+정기자
+정병일
+정낙택
+정영현
+정기준
+정영윤
+정복옥
+정진수
+정기진
+정달보
+정근호
+정용도
+정기현
+정기조
+정상선
+정석선
+정길원
+정대열
+정영분
+정만환
+정길행
+정명학
+정수경
+정동득
+정길호
+정군회
+정선석
+정현자
+정길흠
+정순기
+정상환
+정영국
+정길흠
+정호인
+정광호
+정재악
+정낙도
+정남근
+정희빈
+정종순
+정남보
+정재남
+정점현
+정인락
+정남석
+정태희
+정준보
+정건기
+정남섭
+정명일
+정상복
+정우구
+정남이
+정경태
+정윤용
+정대숙
+정남조
+정연기
+정설호
+정문근
+정남택
+정명길
+정수휴
+정정순
+정남필
+정원환
+정인희
+정창출
+정년자
+정우암
+정병기
+정범근
+정대곤
+정상봉
+정문태
+정병옥
+정대균
+정병태
+정홍열
+정현금
+정대성
+정재윤
+정오훈
+정희곤
+정대식
+정희용
+정병기
+정려우
+정대영
+정재환
+정태남
+정우돌
+정덕길
+정학원
+정수숙
+정익호
+정덕길
+정정술
+정태덕
+정영호
+정덕만
+정종학
+정재복
+정용호
+정덕원
+정규봉
+정해학
+정규연
+정덕자
+정석관
+정노현
+정길영
+정덕한
+정종곤
+정소희
+정병섭
+정덕화
+정필열
+정정도
+정원오
+정덕환
+정범외
+정금길
+정윤곤
+정도식
+정성일
+정준조
+정준환
+정도식
+정재홍
+정은술
+정일옥
+정도용
+정재학
+정석호
+정규만
+정동근
+정영재
+정정수
+정호권
+정동식
+정영원
+정우제
+정도준
+정동연
+정만하
+정준수
+정원관
+정동일
+정경석
+정기만
+정병옥
+정동현
+정왕일
+정수석
+정식옥
+정두만
+정문목
+정복수
+정상희
+정두환
+정경여
+정홍석
+정운석
+정두환
+정태이
+정주호
+정관갑
+정두환
+정두엄
+정외규
+정성용
+정득상
+정성화
+정권태
+정원수
+정득우
+정창용
+정홍동
+정광룡
+정등용
+정병이
+정인기
+정상덕
+정례수
+정길주
+정성우
+정생출
+정로식
+정종철
+정상원
+정점원
+정막순
+정삼주
+정윤수
+정남돌
+정만근
+정영권
+정병출
+정행돌
+정만덕
+정종무
+정영천
+정명훈
+정만석
+정함수
+정천덕
+정정원
+정만술
+정광순
+정행택
+정증암
+정만우
+정점향
+정웅교
+정풍연
+정만호
+정광준
+정대선
+정수호
+정만호
+정재연
+정경열
+정경길
+정명국
+정태식
+정정봉
+정기암
+정명수
+정정순
+정장길
+정선야
+정명순
+정정철
+정점우
+정창용
+정명술
+정민평
+정재형
+정선동
+정명옥
+정쌍분
+정봉상
+정봉근
+정명용
+정승준
+정영봉
+정춘덕
+정명지
+정성래
+정주순
+정규덕
+정명표
+정종철
+정창태
+정의호
+정명환
+정인영
+정종익
+정문주
+정명희
+정주동
+정상수
+정창목
+정명희
+정고규
+정동수
+정민태
+정명희
+정영연
+정철만
+정재이
+정목이
+정칠돌
+정만림
+정태구
+정묘선
+정희식
+정정용
+정봉식
+정무상
+정승태
+정수곤
+정수근
+정무성
+정을권
+정로수
+정상출
+정문현
+정영담
+정수기
+정성기
+정미숙
+정차호
+정명만
+정판휘
+정미화
+정해구
+정대홍
+정향분
+정민수
+정동의
+정재수
+정순수
+정민웅
+정경원
+정쌍순
+정재식
+정병수
+정갑희
+정동임
+정희구
+정병용
+정재국
+정옥덕
+정용수
+정병은
+정윤식
+정현자
+정석희
+정병을
+정삼열
+정방환
+정원완
+정병일
+정병훈
+정석성
+정점기
+정병재
+정성호
+정점호
+정갑영
+정병재
+정승선
+정종안
+정하선
+정병종
+정상란
+정재일
+정정오
+정병준
+정경기
+정미기
+정규근
+정병철
+정등태
+정종봉
+정장우
+정병칠
+정일기
+정경근
+정문화
+정병택
+정춘판
+정규옥
+정옥생
+정병화
+정우조
+정휘탁
+정근열
+정보경
+정수운
+정분용
+정상원
+정복순
+정철호
+정정환
+정재원
+정복영
+정광순
+정상대
+정용운
+정봉갑
+정태암
+정진술
+정영자
+정봉권
+정노복
+정태식
+정헌경
+정봉욱
+정건문
+정태용
+정철헌
+정봉욱
+정학기
+정시금
+정문용
+정봉운
+정수제
+정치암
+정선호
+정봉환
+정종자
+정영자
+정일락
+정부광
+정봉수
+정수자
+정춘호
+정부영
+정원숙
+정세춘
+정복중
+정분교
+정윤용
+정공순
+정안호
+정분돌
+정영환
+정한섭
+정종득
+정분조
+정달섭
+정요곤
+정윤희
+정산용
+정일진
+정신복
+정장영
+정삼목
+정재옥
+정재한
+정노철
+정삼수
+정두홍
+정규성
+정영희
+정삼수
+정금태
+정종수
+정명일
+정삼영
+정동욱
+정영석
+정창남
+정삼용
+정술표
+정재출
+정병배
+정삼준
+정병석
+정광길
+정세현
+정삼호
+정헌수
+정지기
+정정근
+정상관
+정재원
+정정정
+정남규
+정상기
+정만팔
+정제범
+정희정
+정상수
+정의숙
+정현경
+정삼재
+정상열
+정재룡
+정선영
+정종대
+정상영
+정학선
+정태웅
+정헌범
+정상용
+정순우
+정석용
+정종석
+정상용
+정봉순
+정영태
+정영조
+정상운
+정주악
+정유술
+정미아
+정상원
+정환호
+정명락
+정만배
+정상일
+정판석
+정창석
+정옥경
+정상정
+정정석
+정광순
+정영순
+정상진
+정덕수
+정상수
+정경곤
+정상철
+정영달
+정병식
+정득란
+정상태
+정칠자
+정성애
+정종례
+정상태
+정근철
+정희석
+정정자
+정상학
+정귀성
+정교환
+정관조
+정상현
+정정태
+정점보
+정동호
+정상호
+정용환
+정기도
+정도환
+정상호
+정이견
+정창웅
+정용선
+정상호
+정상미
+정원선
+정인희
+정상훈
+정명홍
+정대기
+정태혁
+정상희
+정종근
+정창식
+정홍호
+정석광
+정성국
+정병수
+정하진
+정석용
+정태곤
+정광권
+정인교
+정석원
+정병용
+정재도
+정혜이
+정석조
+정창봉
+정행상
+정봉근
+정석철
+정연호
+정금옥
+정삼정
+정석현
+정창웅
+정무숙
+정봉래
+정석화
+정 준
+정용근
+정건갑
+정선오
+정영작
+정영선
+정종경
+정선옥
+정구표
+정성락
+정대우
+정선호
+정구동
+정점제
+정웅희
+정선호
+정성일
+정순섭
+정준도
+정선희
+정기효
+정용희
+정칠동
+정성균
+정태옥
+정정수
+정성용
+정성균
+정길웅
+정임성
+정상덕
+정성근
+정정이
+정태우
+정달술
+정성근
+정인춘
+정남태
+정금환
+정성근
+정만용
+정학선
+정금동
+정성기
+정헌기
+정균리
+정용오
+정성도
+정정열
+정춘길
+정춘훈
+정성란
+정성환
+정동성
+정경헌
+정성순
+정수태
+정현리
+정달호
+정성식
+정성기
+정순숙
+정상석
+정성식
+정동용
+정순정
+정평기
+정성식
+정지로
+정점광
+정상열
+정성식
+정창봉
+정영곤
+정종곤
+정성영
+정주홍
+정헌현
+정만성
+정성한
+정경상
+정용순
+정남영
+정성혜
+정봉석
+정기상
+정성학
+정성호
+정순성
+정종근
+정정지
+정성호
+정승득
+정수경
+정복조
+정성홍
+정태환
+정춘래
+정진덕
+정성환
+정상대
+정태덕
+정상현
+정성환
+정영난
+정춘사
+정태진
+정성훈
+정윤엽
+정성선
+정병기
+정성훈
+정명근
+정정기
+정금조
+정세완
+정순순
+정난수
+정영소
+정소조
+정기자
+정희기
+정만섭
+정손돌
+정태근
+정한이
+정언용
+정손태
+정태진
+정종우
+정용재
+정송덕
+정선기
+정태수
+정금수
+정송목
+정수규
+정선용
+정상술
+정수년
+정동환
+정순휴
+정인생
+정수덕
+정봉기
+정정숙
+정삼식
+정수동
+정종현
+정을수
+정정섭
+정수목
+정노진
+정영복
+정태학
+정수복
+정창준
+정철련
+정기우
+정수상
+정선정
+정범광
+정광조
+정수석
+정상옥
+정광암
+정영경
+정수석
+정정용
+정영종
+정학희
+정수억
+정경해
+정정원
+정순진
+정수웅
+정판욱
+정대현
+정숙한
+정수조
+정영진
+정창규
+정병식
+정수종
+정기태
+정근기
+정양재
+정수주
+정봉술
+정태수
+정은건
+정수진
+정태순
+정상술
+정영배
+정수철
+정광현
+정병현
+정기득
+정수학
+정운연
+정영주
+정정국
+정수학
+정명순
+정환술
+정중길
+정수학
+정영경
+정봉조
+정병규
+정수현
+정영달
+정종종
+정종기
+정수현
+정용영
+정동춘
+정세배
+정수홍
+정영원
+정효흠
+정원운
+정수환
+정점효
+정정택
+정완철
+정수환
+정상자
+정원홍
+정기현
+정수환
+정재준
+정태락
+정태석
+정숙도
+정성기
+정규호
+정태양
+정숙자
+정희기
+정경호
+정영범
+정순기
+정종무
+정용보
+정상삼
+정순득
+정종호
+정순근
+정용고
+정순목
+정원식
+정병식
+정점주
+정순범
+정석자
+정경환
+정창수
+정순봉
+정기순
+정숙양
+정정오
+정순석
+정홍기
+정표봉
+정동준
+정순승
+정세완
+정기수
+정용수
+정순업
+정동영
+정인연
+정훈환
+정순영
+정묘순
+정덕식
+정옥호
+정순옥
+정오철
+정작호
+정영남
+정순원
+정영집
+정귀록
+정병재
+정순조
+정성수
+정례혁
+정순일
+정순태
+정근영
+정숙수
+정종수
+정순표
+정영철
+정남자
+정의권
+정순현
+정장이
+정지우
+정종화
+정순화
+정동옥
+정숙건
+정철남
+정순환
+정재순
+정말수
+정판경
+정순희
+정상이
+정병혁
+정석철
+정순희
+정쌍우
+정태흠
+정순숙
+정승고
+정현련
+정득경
+정병상
+정승교
+정현규
+정창현
+정정식
+정승윤
+정해숙
+정홍순
+정계현
+정식현
+정지호
+정동수
+정문용
+정신섭
+정경권
+정대수
+정일희
+정쌍도
+정현재
+정재호
+정종호
+정쌍득
+정영영
+정희용
+정성두
+정안민
+정재이
+정윤재
+정만희
+정안순
+정보만
+정근집
+정주락
+정양대
+정재동
+정종만
+정기록
+정양영
+정윤수
+정창주
+정태희
+정억조
+정세호
+정정해
+정정호
+정업우
+정광숙
+정인규
+정태경
+정여필
+정정문
+정희식
+정상태
+정연동
+정수수
+정성이
+정동숙
+정연오
+정무수
+정차선
+정인한
+정연우
+정용화
+정정현
+정병치
+정연욱
+정봉희
+정진열
+정성상
+정연진
+정병열
+정상옥
+정용우
+정연환
+정기교
+정사일
+정종재
+정영구
+정운규
+정기연
+정홍석
+정영구
+정무한
+정상연
+정갑수
+정영기
+정교영
+정시용
+정형영
+정영길
+정두경
+정순우
+정종도
+정영도
+정춘호
+정기주
+정차향
+정영복
+정석조
+정동병
+정만섭
+정영석
+정용호
+정문조
+정준숙
+정영석
+정석훈
+정강동
+정부포
+정영수
+정상학
+정경수
+정현익
+정영숙
+정춘복
+정영목
+정임용
+정영옥
+정덕상
+정선주
+정점정
+정영자
+정동진
+정왕순
+정두옥
+정영조
+정원환
+정영로
+정명숙
+정영주
+정성봉
+정복환
+정상길
+정영태
+정홍연
+정주수
+정하강
+정영태
+정한상
+정정주
+정명환
+정영현
+정영열
+정성호
+정필기
+정영환
+정영돌
+정수이
+정일수
+정영환
+정숙수
+정명찬
+정병환
+정오상
+정부학
+정용웅
+정용규
+정옥남
+정춘환
+정인수
+정치진
+정옥련
+정대화
+정창주
+정영해
+정옥순
+정재수
+정춘옥
+정문익
+정외수
+정판수
+정월철
+정장열
+정외환
+정근경
+정해춘
+정영인
+정용관
+정복원
+정신수
+정연남
+정용권
+정순찬
+정일석
+정대웅
+정용균
+정대훈
+정남조
+정정조
+정용돌
+정영건
+정진행
+정도을
+정용모
+정월탁
+정일실
+정상자
+정용암
+정무준
+정호우
+정차규
+정용태
+정삼성
+정영섭
+정옥근
+정용현
+정수출
+정정순
+정운성
+정용현
+정중환
+정주원
+정동석
+정용호
+정억화
+정미자
+정상국
+정용호
+정운헌
+정경술
+정병희
+정용화
+정태학
+정정갑
+정억수
+정용화
+정태하
+정금기
+정일태
+정우석
+정태철
+정창암
+정종희
+정우영
+정위복
+정중달
+정재훈
+정우현
+정용성
+정원연
+정동향
+정우현
+정소국
+정경열
+정기성
+정운복
+정봉석
+정철대
+정명배
+정운현
+정홍분
+정현창
+정성수
+정웅희
+정영형
+정은환
+정병봉
+정원권
+정영형
+정홍고
+정부순
+정원분
+정사희
+정의환
+정오오
+정원석
+정재명
+정판섭
+정을운
+정원승
+정홍정
+정달원
+정성우
+정원용
+정두부
+정홍곤
+정정순
+정원조
+정윤순
+정정래
+정용술
+정원진
+정성섭
+정성철
+정영환
+정원택
+정백유
+정연식
+정성태
+정원현
+정병조
+정학자
+정성섭
+정위태
+정진출
+정길희
+정정민
+정유암
+정대옥
+정용복
+정자국
+정유철
+정동구
+정현완
+정종식
+정윤권
+정호환
+정광호
+정봉수
+정윤기
+정재대
+정교택
+정달민
+정윤덕
+정해규
+정태이
+정환섭
+정윤생
+정경수
+정외수
+정순우
+정윤수
+정재봉
+정선흠
+정용희
+정윤식
+정동봉
+정중국
+정재재
+정윤화
+정삼식
+정기식
+정정열
+정은영
+정연곤
+정창섭
+정상준
+정은희
+정차석
+정위석
+정동복
+정을선
+정태수
+정회중
+정영례
+정을순
+정명석
+정정순
+정해실
+정의원
+정정순
+정효진
+정윤석
+정의현
+정주이
+정애문
+정정희
+정이규
+정부덕
+정종규
+정칠환
+정이규
+정용기
+정병철
+정태식
+정이출
+정성택
+정순례
+정영해
+정이호
+정춘태
+정병기
+정영이
+정이환
+정철순
+정헌호
+정철진
+정익호
+정한갑
+정기근
+정달현
+정인규
+정경성
+정춘촌
+정성규
+정인상
+정호도
+정호영
+정정교
+정인상
+정기환
+정봉이
+정태기
+정인식
+정용환
+정차근
+정경열
+정인식
+정성영
+정영수
+정술자
+정인재
+정장조
+정영석
+정영동
+정인진
+정경선
+정주환
+정태재
+정인채
+정종식
+정선동
+정춘석
+정인태
+정상성
+정옥섭
+정상희
+정인태
+정명석
+정강식
+정영임
+정인환
+정일주
+정정이
+정명용
+정인환
+정수래
+정풍곤
+정태출
+정인희
+정옥중
+정정효
+정종일
+정일권
+정말호
+정 덕
+정삼양
+정일영
+정한윤
+정만국
+정영현
+정일우
+정진식
+정형임
+정한근
+정일한
+정용섭
+정봉모
+정윤환
+정일호
+정재옥
+정성철
+정정수
+정일환
+정보문
+정상래
+정수기
+정임길
+정종근
+정재봉
+정태석
+정임섭
+정현용
+정순원
+정영기
+정임평
+정규천
+정태남
+정현환
+정장목
+정순복
+정영수
+정우호
+정장성
+정창권
+정영양
+정임석
+정장수
+정명애
+정복태
+정길상
+정재경
+정충록
+정일순
+정태형
+정재규
+정문욱
+정명렬
+정선동
+정재규
+정장희
+정정권
+정점오
+정재근
+정철권
+정점순
+정순익
+정재근
+정인식
+정용익
+정태술
+정재봉
+정진길
+정규곤
+정상숙
+정재선
+정순대
+정기판
+정란용
+정재선
+정원연
+정경환
+정석동
+정재수
+정소규
+정차균
+정희옥
+정재식
+정팔철
+정윤용
+정강돌
+정재영
+정진원
+정휘수
+정길윤
+정재요
+정우희
+정재진
+정태화
+정재철
+정현태
+정직심
+정병철
+정재현
+정영빈
+정용철
+정정선
+정재호
+정정순
+정혜만
+정신범
+정재호
+정광택
+정영호
+정쌍웅
+정재홍
+정영봉
+정정환
+정삼자
+정재환
+정정수
+정영찬
+정순태
+정점덕
+정종수
+정현상
+정홍모
+정점순
+정노영
+정순호
+정정훈
+정점용
+정점노
+정장정
+정두수
+정점조
+정유환
+정태군
+정상칠
+정정길
+정재영
+정귀용
+정성권
+정정상
+정명문
+정남권
+정상욱
+정정섭
+정병근
+정상계
+정봉태
+정정숙
+정정희
+정영건
+정광동
+정정숙
+정욱경
+정현덕
+정연태
+정정순
+정기우
+정기호
+정연병
+정정식
+정판익
+정해현
+정충배
+정정식
+정영권
+정금수
+정달곤
+정정용
+정명봉
+정용호
+정상식
+정정원
+정리한
+정경동
+정병원
+정정현
+정충호
+정준윤
+정진한
+정정화
+정근식
+정호옥
+정석학
+정정환
+정곡휘
+정재웅
+정태주
+정조문
+정원수
+정주선
+정길수
+정종달
+정경수
+정경준
+정영판
+정종대
+정순오
+정현자
+정명환
+정종덕
+정구자
+정헌야
+정병권
+정종목
+정이현
+정순재
+정복우
+정종민
+정태열
+정의길
+정기수
+정종선
+정병도
+정보식
+정우흠
+정종수
+정태금
+정부환
+정재태
+정종수
+정 석
+정금인
+정석재
+정종술
+정인진
+정영순
+정윤순
+정종익
+정선현
+정석철
+정현자
+정종진
+정인하
+정선용
+정영수
+정종태
+정순경
+정성세
+정용만
+정종태
+정재관
+정종걸
+정현삼
+정종태
+정귀호
+정복순
+정재웅
+정종환
+정종석
+정재덕
+정정오
+정주열
+정범세
+정성이
+정종강
+정주영
+정월이
+정석하
+정수정
+정주헌
+정태식
+정태한
+정봉기
+정주현
+정효실
+정중탁
+정수수
+정주현
+정환원
+정수영
+정영수
+정주호
+정명현
+정영덕
+정주문
+정주호
+정태림
+정 조
+정중용
+정주환
+정석이
+정필금
+정순길
+정주환
+정헌우
+정의건
+정태진
+정준석
+정성옥
+정채관
+정운권
+정준식
+정창진
+정봉식
+정 용
+정중화
+정수보
+정정근
+정병한
+정지순
+정명대
+정일연
+정승석
+정지자
+정종순
+정진길
+정영우
+정지환
+정태용
+정주용
+정무규
+정진곤
+정갑섭
+정석재
+정용규
+정진국
+정정각
+정용자
+정선선
+정진돌
+정상훈
+정종관
+정종수
+정진상
+정일숙
+정학수
+정영흠
+정진석
+정유필
+정무진
+정성규
+정진세
+정명출
+정영일
+정문수
+정진식
+정인식
+정병석
+정천도
+정진영
+정경순
+정분식
+정영환
+정진영
+정재식
+정회환
+정팔완
+정진용
+정영건
+정종연
+정정현
+정진우
+정칠옥
+정지구
+정연동
+정차경
+정승술
+정병배
+정달환
+정차권
+정해교
+정항순
+정이영
+정차돌
+정성우
+정만교
+정세철
+정차식
+정태교
+정경석
+정상찬
+정차식
+정종호
+정나동
+정장인
+정차원
+정호옥
+정금성
+정면태
+정창덕
+정차태
+정귀훈
+정정익
+정창수
+정해만
+정춘구
+정차배
+정창식
+정영련
+정철순
+정재상
+정창진
+정응돌
+정윤희
+정연성
+정창택
+정현열
+정일영
+정범철
+정창호
+정정진
+정창훈
+정윤란
+정창환
+정청현
+정재우
+정정숙
+정채룡
+정성동
+정귀화
+정정기
+정천식
+정종휴
+정봉기
+정이근
+정철규
+정정화
+정돈준
+정면국
+정철수
+정진현
+정종연
+정문주
+정철주
+정노술
+정헌규
+정일인
+정추월
+정기명
+정기순
+정용억
+정춘교
+정호근
+정대화
+정영복
+정치원
+정용현
+정분수
+정민고
+정칠선
+정정란
+정석희
+정봉권
+정쾌선
+정분규
+정영희
+정경수
+정쾌용
+정용길
+정대호
+정재선
+정태갑
+정창건
+정경호
+정경기
+정태곤
+정운집
+정기득
+정영연
+정태근
+정병택
+정추식
+정준태
+정태길
+정만희
+정길강
+정성태
+정태도
+정순이
+정기열
+정정순
+정태봉
+정성식
+정용식
+정재수
+정태석
+정헌석
+정상숙
+정원종
+정태성
+정삼만
+정희환
+정기선
+정태성
+정정동
+정남훈
+정재열
+정태순
+정동호
+정인흔
+정의근
+정태술
+정남권
+정건이
+정남민
+정태식
+정헌자
+정진식
+정성남
+정태식
+정태택
+정순문
+정종경
+정태영
+정상금
+정선재
+정세섭
+정태용
+정호원
+정수찬
+정수식
+정태용
+정재택
+정함수
+정용출
+정태원
+정병호
+정동종
+정남석
+정태윤
+정임옥
+정동표
+정석조
+정태일
+정기환
+정영로
+정순수
+정태호
+정재학
+정기호
+정운권
+정태호
+정용고
+정규식
+정여남
+정태환
+정년호
+정철균
+정상순
+정태환
+정순용
+정오유
+정해호
+정태환
+정정상
+정재효
+정시훈
+정판득
+정명이
+정봉열
+정종도
+정판득
+정돈실
+정경중
+정은석
+정판정
+정재천
+정달곤
+정한배
+정판태
+정청진
+정재주
+정이은
+정판현
+정점희
+정진춘
+정화상
+정평근
+정무환
+정병희
+정병성
+정필묘
+정해훈
+정수호
+정분연
+정필분
+정석갑
+정순호
+정금태
+정필현
+정태단
+정영호
+정판태
+정하연
+정병덕
+정성철
+정위만
+정하윤
+정인우
+정영찬
+정동호
+정하자
+정태화
+정종정
+정재호
+정학균
+정윤윤
+정 이
+정호호
+정학동
+정곤호
+정영방
+정용분
+정학래
+정대식
+정헌식
+정영주
+정한감
+정혜현
+정영태
+정재중
+정한영
+정부선
+정은호
+정월봉
+정한조
+정봉숙
+정경만
+정기식
+정한조
+정열용
+정상문
+정영화
+정한철
+정휘수
+정용택
+정윤수
+정해경
+정성균
+정용규
+정순한
+정해규
+정종현
+정영덕
+정한생
+정해봉
+정태기
+정순호
+정외운
+정해상
+정순춘
+정용석
+정원수
+정해성
+정석봉
+정순남
+정용희
+정해성
+정차득
+정정국
+정춘세
+정해영
+정관숙
+정성수
+정영석
+정해용
+정춘호
+정양갑
+정영철
+정해용
+정병현
+정상술
+정창수
+정해운
+정갑완
+정광흥
+정주연
+정해조
+정애섭
+정현석
+정현희
+정해창
+정월경
+정광현
+정태석
+정해철
+정언윤
+정병조
+정한만
+정해춘
+정정주
+정원진
+정창호
+정헌택
+정점선
+정원준
+정도섭
+정현도
+정선정
+정기곤
+정태암
+정현미
+정웅영
+정영택
+정종덕
+정현아
+정옥목
+정선주
+정계성
+정현오
+정재명
+정상식
+정상균
+정형오
+정충자
+정판종
+정일호
+정혜영
+정학용
+정춘출
+정상이
+정혜원
+정순직
+정재훈
+정원막
+정호경
+정정수
+정한훈
+정충만
+정호근
+정영희
+정정모
+정점호
+정호연
+정덕웅
+정대현
+정동이
+정호현
+정영탁
+정갑철
+정인태
+정홍기
+정종노
+정상순
+정석주
+정홍석
+정병도
+정창태
+정 선
+정화춘
+정종주
+정병수
+정성정
+정환상
+정정태
+정기영
+정상호
+정환택
+정두근
+정석우
+정원윤
+정환택
+정타득
+정인호
+정용선
+정회봉
+정동이
+정성출
+정민환
+정효조
+정태진
+정영웅
+정주이
+정효환
+정영규
+정오남
+정용우
+정훈식
+정용복
+정상분
+정은호
+정흥국
+정영수
+정원동
+정두호
+정흥기
+정송길
+정판완
+정갑봉
+정흥숙
+정동수
+정해래
+정분호
+정흥열
+정온철
+정월원
+정의치
+정희원
+정기구
+정영범
+정상근
+정희택
+정명혁
+정월곤
+정문언
+정희택
+정병수
+정헌목
+정홍용
+제갈병도
+제태웅순
+제대호동
+제이석순
+제갈병술
+제수관효
+제명천길
+제준규남
+제갈태암
+제천희장
+제정수대
+제수억태
+제경숙
+제태용
+제영자
+제준상
+제규식
+제장학
+제소준
+제찬진
+제금범
+제오식
+제기철
+제한호
+제상우
+제창호
+제경화
+제호원
+제순자
+제용환
+제경숙
+제태윤
+제실경
+제 배
+제상현
+제석호
+제영해
+제병상
+제홍섭
+제맹원
+제재식
+제석선
+제성성
+제동원
+제점옥
+제진우
+제귀선
+제정춘
+제정화
+제기조
+제재석
+제동상
+제종호
+제병용
+제인균
+제창수
+제주식
+제기순
+제영상
+제중수
+제준식
+제남란
+제병기
+제승진
+제천봉
+제소순
+제순식
+제인희
+제천봉
+제남학
+제종호
+제상웅
+제평치
+제덕운
+제한명
+제봉순
+제환석
+제진생
+제언순
+제열흠
+조 무
+조만휴
+조일석
+조윤길
+조 분
+조성현
+조종길
+조길점
+조 호
+조종희
+조성재
+조창호
+조 홍
+조경식
+조치열
+조민춘
+조 환
+조재선
+조헌수
+조홍섭
+조강남
+조금주
+조홍욱
+조성수
+조건래
+조도우
+조영영
+조영용
+조경국
+조영덕
+조춘식
+조진재
+조경래
+조학완
+조홍순
+조태경
+조경래
+조선태
+조영홍
+조경시
+조경수
+조주연
+조영호
+조소일
+조경숙
+조정우
+조명영
+조원만
+조경옥
+조명덕
+조은난
+조병석
+조경출
+조경환
+조상옥
+조상식
+조경호
+조재금
+조종근
+조 을
+조경호
+조병훈
+조종출
+조병호
+조계연
+조상연
+조철돌
+조종열
+조계원
+조용주
+조원조
+조기헌
+조광래
+조재태
+조현천
+조재길
+조광래
+조재원
+조문철
+조수호
+조광래
+조차연
+조상은
+조옥호
+조광웅
+조삼지
+조이태
+조한석
+조광흠
+조인경
+조임호
+조응옥
+조국광
+조정철
+조종봉
+조병상
+조귀연
+조정심
+조승석
+조종순
+조귀자
+조상연
+조기석
+조종규
+조규대
+조만도
+조삼훈
+조영규
+조규상
+조두현
+조기출
+조성순
+조규상
+조우태
+조학호
+조정견
+조규상
+조창준
+조주현
+조순표
+조규수
+조희오
+조창근
+조성학
+조규오
+조원수
+조호채
+조희규
+조규오
+조복이
+조연환
+조호희
+조규정
+조용숙
+조 용
+조경미
+조규천
+조현갑
+조천화
+조금조
+조규화
+조안숙
+조일기
+조상순
+조근제
+조창천
+조병식
+조순한
+조금옥
+조성조
+조홍자
+조노봉
+조금자
+조중천
+조승도
+조응휴
+조기동
+조동환
+조석환
+조창진
+조남혁
+조종수
+조용덕
+조재숙
+조내용
+조이락
+조종정
+조판덕
+조달경
+조재해
+조판용
+조종규
+조달권
+조주갑
+조점윤
+조달화
+조달석
+조해호
+조복범
+조금환
+조달석
+조정구
+조도근
+조춘길
+조대화
+조희기
+조대진
+조세현
+조대화
+조근국
+조재경
+조문란
+조대화
+조석리
+조재흠
+조기출
+조덕래
+조영조
+조태수
+조용교
+조덕임
+조복화
+조창식
+조장우
+조덕주
+조준규
+조윤철
+조낙숙
+조덕희
+조도석
+조일국
+조만호
+조도용
+조인호
+조정수
+조한환
+조도제
+조종도
+조상홍
+조충수
+조동열
+조삼권
+조용근
+조선설
+조동점
+조진우
+조정천
+조종운
+조동철
+조정수
+조호철
+조현봉
+조동훈
+조중상
+조병상
+조동대
+조두현
+조복덕
+조영수
+조만우
+조득용
+조규석
+조혜호
+조기필
+조만호
+조재태
+조용곤
+조오석
+조말상
+조회환
+조칠수
+조봉현
+조말학
+조태수
+조두재
+조재석
+조맹조
+조용봉
+조재재
+조호순
+조명숙
+조영환
+조태식
+조제자
+조명현
+조청근
+조청택
+조봉수
+조무섭
+조만덕
+조필곤
+조이현
+조무원
+조종영
+조상호
+조성순
+조문규
+조종희
+조은성
+조암성
+조문석
+조영래
+조세규
+조태규
+조문효
+조병덕
+조진일
+조권희
+조미경
+조성영
+조태만
+조성조
+조미선
+조남정
+조숙선
+조승곤
+조민남
+조중길
+조용자
+조평수
+조민재
+조신기
+조규훈
+조원호
+조민호
+조경겸
+조장태
+조준규
+조백섭
+조선호
+조대출
+조수환
+조백섭
+조무기
+조수복
+조재중
+조범래
+조금용
+조화진
+조수수
+조병건
+조균석
+조재영
+조무곤
+조병구
+조영진
+조기애
+조성순
+조병규
+조신규
+조길석
+조차주
+조병수
+조외정
+조주애
+조말경
+조병순
+조정열
+조정석
+조정희
+조병오
+조쌍현
+조장동
+조영환
+조병우
+조순기
+조원암
+조상구
+조병준
+조정석
+조윤식
+조영덕
+조병현
+조해봉
+조지옥
+조복순
+조복래
+조덕동
+조호순
+조기술
+조복래
+조동희
+조석호
+조태철
+조복용
+조응철
+조재호
+조승영
+조복제
+조종포
+조덕섭
+조성문
+조봉규
+조재수
+조춘재
+조병희
+조봉룡
+조진현
+조계차
+조홍동
+조봉석
+조낙희
+조태길
+조영례
+조봉순
+조재조
+조달자
+조영욱
+조봉호
+조복근
+조상갑
+조상준
+조부환
+조재희
+조진흠
+조동철
+조분이
+조종수
+조성공
+조제용
+조삼돌
+조원택
+조삼길
+조진규
+조삼돌
+조선연
+조영문
+조문영
+조삼용
+조분규
+조상수
+조병남
+조상기
+조규곤
+조용순
+조성화
+조상래
+조말란
+조상섭
+조장해
+조상록
+조이인
+조세호
+조정원
+조상목
+조상성
+조병희
+조태택
+조상연
+조정용
+조태우
+조진연
+조상오
+조영택
+조동훈
+조낙웅
+조상옥
+조대용
+조재조
+조차병
+조상용
+조정춘
+조한봉
+조영식
+조상태
+조용숙
+조청훈
+조정양
+조상학
+조숙숙
+조금철
+조근만
+조상호
+조선대
+조춘흠
+조도숙
+조석락
+조석자
+조종효
+조재덕
+조석래
+조임연
+조소영
+조순진
+조석만
+조계점
+조상용
+조철술
+조석암
+조해원
+조경백
+조윤기
+조석지
+조종옥
+조정용
+조용윤
+조석현
+조재남
+조남철
+조임정
+조선제
+조진중
+조진호
+조재희
+조선제
+조창호
+조헌현
+조병기
+조성곤
+조순수
+조경준
+조양정
+조성국
+조익제
+조영자
+조응순
+조성권
+조정이
+조한선
+조 근
+조성근
+조홍환
+조성이
+조영홍
+조성득
+조미춘
+조영조
+조병권
+조성룡
+조귀길
+조달상
+조칠관
+조성복
+조인부
+조일권
+조광선
+조성순
+조정희
+조순영
+조석환
+조성옥
+조갑기
+조천환
+조신교
+조성우
+조재봉
+조순석
+조재선
+조성진
+조임일
+조교환
+조찬술
+조성천
+조용택
+조운태
+조영로
+조성현
+조재덕
+조소해
+조수열
+조성환
+조환국
+조주숙
+조병한
+조소석
+조광호
+조은식
+조태인
+조소순
+조금선
+조동근
+조영기
+조소술
+조영학
+조재원
+조태원
+조소조
+조성만
+조순진
+조월용
+조손용
+조일구
+조영이
+조정수
+조수덕
+조춘돈
+조헌득
+조재순
+조수동
+조복옥
+조재식
+조언호
+조수암
+조석목
+조근규
+조재정
+조수암
+조강섭
+조추수
+조주환
+조수원
+조증기
+조병만
+조성국
+조수찬
+조윤배
+조인조
+조삼선
+조수태
+조민성
+조작자
+조원덕
+조수환
+조일순
+조용경
+조창원
+조순남
+조삼복
+조주구
+조술열
+조순득
+조경철
+조영숙
+조춘도
+조순암
+조안덕
+조명완
+조용동
+조순암
+조종재
+조재연
+조병철
+조순연
+조경범
+조태붕
+조해덕
+조순재
+조기녀
+조점근
+조성근
+조순재
+조경실
+조점균
+조정영
+조순제
+조건덕
+조정준
+조문희
+조순집
+조덕수
+조칠진
+조장연
+조순현
+조홍식
+조임열
+조인대
+조승무
+조위호
+조인진
+조수종
+조쌍이
+조식배
+조상수
+조호박
+조안재
+조영옥
+조용우
+조동우
+조애주
+조병우
+조순용
+조순균
+조양래
+조대섭
+조진원
+조정상
+조억제
+조병식
+조운희
+조갑옥
+조연이
+조도태
+조달숙
+조제근
+조연자
+조선술
+조 득
+조오호
+조영기
+조재조
+조현주
+조노순
+조영기
+조다철
+조분록
+조소래
+조영기
+조분명
+조명근
+조영희
+조영길
+조노섭
+조해선
+조 석
+조영래
+조영근
+조복식
+조육호
+조영래
+조용수
+조문근
+조운화
+조영래
+조연순
+조학상
+조춘성
+조영만
+조노성
+조상규
+조점관
+조영목
+조용고
+조칠석
+조기희
+조영석
+조정판
+조미탁
+조 희
+조영성
+조성식
+조진석
+조동돌
+조영수
+조점영
+조숙주
+조기덕
+조영수
+조종열
+조태환
+조성석
+조영숙
+조광열
+조귀원
+조수환
+조영옥
+조동옥
+조해덕
+조길연
+조영자
+조상자
+조건학
+조춘환
+조영자
+조명엽
+조호조
+조상흠
+조영재
+조병순
+조위석
+조대순
+조영제
+조진우
+조한수
+조성덕
+조영조
+조영찬
+조삼천
+조태섭
+조영집
+조진효
+조수주
+조윤석
+조영철
+조종성
+조정룡
+조학관
+조영탁
+조욱섭
+조윤홍
+조주수
+조영학
+조연복
+조춘기
+조가덕
+조영호
+조수복
+조삼배
+조병대
+조영호
+조상생
+조인지
+조일정
+조영효
+조옥재
+조대동
+조외림
+조영희
+조금애
+조학래
+조기이
+조예인
+조진양
+조용도
+조순연
+조오태
+조종석
+조장곤
+조봉연
+조옥계
+조정철
+조주연
+조희표
+조옥분
+조정무
+조문선
+조정순
+조옥선
+조진노
+조동효
+조순희
+조옥현
+조하완
+조종수
+조재민
+조외술
+조인호
+조경환
+조수석
+조용건
+조은영
+조재만
+조대출
+조용권
+조순화
+조선균
+조혁세
+조용근
+조준섭
+조규선
+조병천
+조용기
+조신근
+조태조
+조종준
+조용대
+조장천
+조재상
+조판숙
+조용돌
+조종창
+조종호
+조남술
+조용복
+조종우
+조봉영
+조재규
+조용분
+조경철
+조구춘
+조일옥
+조용성
+조석진
+조숙호
+조용용
+조용순
+조성호
+조원임
+조일호
+조용술
+조우선
+조홍정
+조일환
+조용준
+조태열
+조중야
+조용경
+조용출
+조화석
+조문호
+조일이
+조용택
+조상상
+조점용
+조태상
+조용판
+조찬정
+조 상
+조종호
+조용학
+조경호
+조정분
+조태영
+조용한
+조경덕
+조현섭
+조분환
+조용혁
+조정호
+조효태
+조주기
+조용호
+조병이
+조명열
+조충호
+조욱래
+조삼성
+조지진
+조인택
+조운학
+조위일
+조종환
+조수갑
+조원규
+조육훈
+조만찬
+조명자
+조원재
+조상인
+조호호
+조태이
+조원주
+조교호
+조채덕
+조덕달
+조원현
+조중석
+조상배
+조순열
+조원호
+조정현
+조호현
+조수자
+조위조
+조판수
+조창조
+조경수
+조육조
+조영생
+조순곤
+조봉섭
+조윤구
+조근수
+조윤희
+조병부
+조윤기
+조선수
+조춘교
+조차기
+조윤래
+조재권
+조신선
+조철창
+조윤삼
+조학희
+조형수
+조판익
+조윤식
+조기용
+조명출
+조수순
+조윤제
+조만일
+조용종
+조철철
+조윤제
+조동구
+조옥자
+조선돌
+조의판
+조영기
+조수자
+조양포
+조의환
+조길섭
+조정덕
+조현철
+조이기
+조광완
+조두석
+조재숙
+조이기
+조성배
+조종수
+조영수
+조익성
+조용룡
+조점석
+조석현
+조인석
+조도순
+조태만
+조무선
+조인수
+조정수
+조정곤
+조덕식
+조인숙
+조경순
+조갑준
+조이천
+조인순
+조정철
+조춘동
+조태식
+조인식
+조윤석
+조경열
+조인우
+조인제
+조복미
+조명옥
+조한기
+조인필
+조영석
+조승윤
+조성수
+조인현
+조선근
+조창섭
+조부자
+조인현
+조경득
+조복향
+조효숙
+조인희
+조용학
+조승규
+조원술
+조일도
+조호식
+조춘기
+조성근
+조일선
+조종진
+조창현
+조혜웅
+조임식
+조영현
+조갑원
+조진열
+조임학
+조수창
+조동식
+조대연
+조장근
+조월록
+조종현
+조동용
+조장래
+조성림
+조병술
+조재곤
+조장섭
+조순재
+조종조
+조재수
+조장수
+조상희
+조옥환
+조태기
+조장호
+조현태
+조광홍
+조호정
+조재규
+조현종
+조영대
+조학웅
+조재대
+조정길
+조정기
+조희연
+조재덕
+조태주
+조점완
+조종현
+조재도
+조기선
+조종원
+조월열
+조재동
+조원택
+조옥주
+조성영
+조재만
+조기만
+조병조
+조재술
+조재문
+조성수
+조근찬
+조경희
+조재문
+조학이
+조병식
+조창원
+조재순
+조준철
+조승식
+조달태
+조재옥
+조희태
+조미훈
+조정수
+조재용
+조영연
+조수덕
+조병용
+조재정
+조명정
+조성출
+조석현
+조재천
+조창자
+조선화
+조명수
+조재천
+조주수
+조손출
+조미태
+조재철
+조재용
+조현남
+조흥철
+조재철
+조실식
+조 숙
+조남용
+조재철
+조무만
+조재원
+조수이
+조재태
+조해숙
+조재석
+조석수
+조재태
+조영호
+조명호
+조철섭
+조재한
+조상호
+조명희
+조진묵
+조재호
+조상홍
+조경승
+조용식
+조재훈
+조정길
+조재남
+조호대
+조점덕
+조갑권
+조동호
+조정헌
+조점수
+조순규
+조인식
+조병상
+조점술
+조상련
+조태수
+조남운
+조점옥
+조성병
+조태동
+조시동
+조정각
+조년현
+조홍희
+조봉훈
+조정기
+조수현
+조재환
+조태순
+조정래
+조필자
+조판종
+조기수
+조정미
+조인희
+조범붕
+조석자
+조정보
+조향환
+조태호
+조행식
+조정섭
+조종현
+조진구
+조영순
+조정수
+조기분
+조준수
+조명자
+조정수
+조정원
+조일길
+조명욱
+조정숙
+조경세
+조석판
+조상근
+조정식
+조재석
+조종훈
+조영순
+조정현
+조만원
+조재운
+조광희
+조정현
+조규진
+조풍원
+조광배
+조정호
+조철상
+조일근
+조정철
+조정호
+조경균
+조수수
+조종인
+조정호
+조인길
+조은천
+조원숙
+조정효
+조운용
+조호탁
+조진우
+조종석
+조신진
+조점우
+조상호
+조종석
+조인수
+조소상
+조복용
+조종수
+조태기
+조미철
+조병학
+조종수
+조태진
+조정호
+조평준
+조종술
+조근년
+조숙식
+조종선
+조주희
+조명기
+조점래
+조규태
+조준기
+조형상
+조사덕
+조갑분
+조준석
+조규국
+조문순
+조윤원
+조준연
+조진호
+조복관
+조원섭
+조준우
+조승학
+조춘길
+조영태
+조준철
+조차문
+조재배
+조숙갑
+조준희
+조용진
+조춘재
+조헌환
+조중제
+조혁복
+조정관
+조갑태
+조중환
+조상수
+조석식
+조돈대
+조지갑
+조성대
+조영희
+조충석
+조진애
+조영포
+조금우
+조주창
+조진호
+조기만
+조한경
+조정혜
+조차생
+조봉현
+조우화
+조재순
+조차용
+조회래
+조춘근
+조갑근
+조창근
+조진환
+조영준
+조병장
+조창기
+조헌이
+조 우
+조덕용
+조창석
+조명길
+조태수
+조주호
+조창호
+조상한
+조영덕
+조대윤
+조천석
+조준태
+조분기
+조진영
+조철수
+조유우
+조상진
+조진출
+조철진
+조필원
+조민조
+조말수
+조춘길
+조호순
+조명수
+조수환
+조춘만
+조선영
+조현녀
+조주길
+조춘자
+조원철
+조희규
+조석호
+조칠학
+조병쇄
+조재열
+조영길
+조타순
+조정열
+조문우
+조광하
+조태수
+조전동
+조충회
+조동표
+조태일
+조송선
+조경조
+조순규
+조태조
+조중탁
+조낙원
+조상이
+조태환
+조원흠
+조명현
+조종기
+조태희
+조희례
+조호국
+조재주
+조택상
+조창만
+조병완
+조동철
+조택상
+조광현
+조재우
+조경동
+조판년
+조범오
+조옥순
+조상웅
+조판암
+조삼현
+조홍환
+조조탁
+조필임
+조일봉
+조상대
+조추수
+조하강
+조만도
+조종수
+조상고
+조학래
+조충권
+조오규
+조기배
+조학제
+조동순
+조용용
+조덕경
+조한수
+조점일
+조일범
+조천영
+조한영
+조재호
+조근모
+조순대
+조해민
+조익호
+조상출
+조정록
+조해선
+조태상
+조성환
+조영배
+조해수
+조철수
+조인임
+조원훈
+조해숙
+조인섭
+조신숙
+조종재
+조해식
+조기기
+조석용
+조욱군
+조해용
+조윤준
+조분애
+조진식
+조헌재
+조호영
+조희조
+조만동
+조현석
+조숙준
+조응섭
+조병상
+조현석
+조동자
+조현팔
+조민웅
+조현수
+조해용
+조기균
+조광자
+조현영
+조한욱
+조태태
+조태수
+조현용
+조영호
+조용수
+조헌균
+조현재
+조이종
+조규호
+조제갑
+조현정
+조종하
+조창희
+조순구
+조현조
+조금석
+조영호
+조말호
+조현조
+조춘례
+조성성
+조월수
+조현준
+조윤성
+조상헌
+조영배
+조현중
+조달조
+조선란
+조한진
+조현태
+조용연
+조태암
+조육수
+조현택
+조병봉
+조윤호
+조금선
+조현호
+조태윤
+조성환
+조광현
+조현호
+조병효
+조상희
+조구준
+조현혹
+조두수
+조소선
+조오수
+조형섭
+조준량
+조진성
+조광탁
+조형연
+조행순
+조자오
+조재순
+조호규
+조해익
+조영열
+조홍원
+조호조
+조태익
+조경리
+조용종
+조호조
+조용수
+조정식
+조병태
+조호현
+조준기
+조민봉
+조수완
+조홍석
+조재조
+조명조
+조인미
+조홍석
+조성호
+조종익
+조정호
+조홍섭
+조만현
+조관자
+조춘식
+조환규
+조수준
+조병곤
+조수수
+조황석
+조만갑
+조철철
+조한광
+조희갑
+조경승
+조재덕
+조종자
+조희관
+조재규
+조민임
+조복용
+조희동
+조장학
+조도만
+조경분
+조희래
+조순주
+조재재
+조강택
+조희수
+조신석
+조문숙
+조상용
+조희원
+조용생
+조성임
+조동춘
+조희정
+조영이
+조현헌
+조인개
+조희중
+조승도
+조석관
+조성환
+조희출
+조재석
+조수이
+조상로
+조희태
+조지찬
+조문호
+조태춘
+주 강
+주승환
+주무암
+주진희
+주경진
+주연선
+주상호
+주차팔
+주계숙
+주우덕
+주만녀
+주일봉
+주도홍
+주의윤
+주선숙
+주태균
+주동식
+주봉철
+주판길
+주한득
+주만순
+주재광
+주종원
+주해익
+주명자
+주영영
+주일주
+주옥이
+주민국
+주인태
+주광수
+주달향
+주봉순
+주영우
+주병진
+주근주
+주순옥
+주인웅
+주상갑
+주종국
+주순자
+주판세
+주해권
+주상숙
+주옥분
+주악호
+주하호
+주수달
+주윤표
+주학열
+주성환
+주부상
+주정웅
+주용호
+주귀수
+주재홍
+주중석
+주명종
+주승준
+주병태
+주지종
+주봉순
+주청영
+주홍선
+주춘호
+주순순
+주순록
+주남남
+지병철
+지헌현
+지창조
+지갑자
+지병호
+지병구
+지성이
+지수원
+지수득
+지덕효
+지광희
+지노수
+지영주
+지판진
+지영윤
+지을규
+지옥환
+지제자
+지용렬
+지기현
+지재삼
+지상덕
+지삼철
+지의대
+지재용
+지향호
+지윤원
+지태준
+지종호
+지정숙
+지길기
+지천주
+지춘식
+지우조
+지진임
+지영한
+진갑연
+진명하
+진인상
+진소상
+진갑용
+진정원
+진동득
+진우균
+진규홍
+진외문
+진병조
+진헌환
+진기수
+진시갑
+진연수
+진유기
+진기숙
+진지돌
+진효규
+진재택
+진기용
+진석성
+진순정
+진대우
+진덕희
+진봉식
+진용세
+진철암
+진두봉
+진명권
+진성근
+진성실
+진말선
+진소종
+진갑근
+진삼호
+진명자
+진명태
+진정호
+진계기
+진명자
+진권오
+진계례
+진순식
+진문교
+진석학
+진영대
+진상용
+진병학
+진영헌
+진두식
+진경식
+진봉길
+진명모
+진성돌
+진춘덕
+진봉식
+진원배
+진명이
+진본팔
+진삼조
+진정곤
+진홍래
+진무희
+진상기
+진수호
+진소정
+진석수
+진상욱
+진봉길
+진규환
+진재우
+진상운
+진용춘
+진월규
+진동권
+진상진
+진상선
+진석식
+진극호
+진상환
+진재순
+진재중
+진성선
+진석은
+진용식
+진한태
+진용대
+진석호
+진판호
+진문용
+진길수
+진성만
+진문자
+진순환
+진환술
+진성욱
+진규향
+진인옥
+진경근
+진수웅
+진영달
+진종철
+진준애
+진수판
+진원자
+진해웅
+진병길
+진순도
+진옥선
+진달준
+진학판
+진영국
+진무철
+진병숙
+진경욱
+진영수
+진찬호
+진동창
+진현길
+진영웅
+진석수
+진만철
+진병연
+진영자
+진상수
+진성자
+진명홍
+진외조
+진동영
+진성선
+진재규
+진용돌
+진성순
+진재국
+진수미
+진용수
+진복조
+진암식
+진병남
+진용암
+진정선
+진귀규
+진종식
+진용일
+진옥정
+진상용
+진재관
+진용호
+진재근
+진영원
+진덕춘
+진우권
+진정상
+진의연
+진성식
+진우선
+진갑식
+진점종
+진복태
+진원석
+진영호
+진종도
+진종일
+진이수
+진진영
+진기출
+진호근
+진재용
+진병훈
+진희중
+진명천
+진정란
+진노관
+진근동
+진달환
+진정래
+진상식
+진희수
+진강태
+진정상
+진진원
+진병태
+진석선
+진정세
+진재교
+진장배
+진남근
+진정숙
+진달식
+진용혁
+진재호
+진정숙
+진창영
+진월규
+진진식
+진정언
+진장혁
+진관식
+진춘식
+진종근
+진종학
+진태용
+진정희
+진종대
+진말순
+진수석
+진진선
+진차용
+진상윤
+진경구
+진춘관
+진찬임
+진영수
+진헌순
+진상세
+진찬현
+진미원
+진석석
+진종진
+진창돌
+진홍우
+진영로
+진준학
+진창석
+진남미
+진정구
+진남희
+진창윤
+진한환
+진청제
+진이길
+진천도
+진경만
+진상숙
+진소봉
+진천수
+진해희
+진승헌
+진말수
+진천수
+진신주
+진원우
+진차조
+진철상
+진금환
+진성홍
+진정주
+진칠권
+진찬수
+진홍임
+진준일
+진판개
+진종표
+진상식
+진효근
+진판돌
+진상현
+진금진
+진용채
+진판재
+진윤래
+진재덕
+진병섭
+진행자
+진지용
+진해섭
+진병웅
+진헌수
+진달성
+진경철
+진병훈
+진헌택
+진재환
+진명영
+진기림
+진현이
+진영복
+진종덕
+진호규
+진혜영
+진동숙
+진원석
+진용종
+차 숙
+차갈이
+차병영
+차재도
+차갑석
+차동훈
+차규길
+차순녕
+차경순
+차종순
+차복섭
+차정기
+차극태
+차삼진
+차해연
+차정환
+차근석
+차상팔
+차상봉
+차동진
+차기수
+차윤래
+차성훈
+차인웅
+차기호
+차승옥
+차한순
+차철래
+차길상
+차판효
+차규선
+차용자
+차대륜
+차정덕
+차태근
+차일제
+차덕용
+차상훈
+차재택
+차소우
+차도정
+차상곤
+차상홍
+차효연
+차돌용
+차현석
+차동환
+차종임
+차동석
+차경동
+차경화
+차점암
+차동섭
+차주수
+차규홍
+차재택
+차만용
+차점관
+차언규
+차영순
+차명행
+차영우
+차정희
+차재수
+차민도
+차영수
+차칠군
+차병봉
+차봉도
+차태문
+차성희
+차일순
+차봉훈
+차병현
+차성영
+차홍석
+차삼천
+차창환
+차운복
+차정경
+차상연
+차용운
+차종자
+차흥수
+차상영
+차희식
+차세증
+차덕수
+차상환
+차근희
+차신서
+차복호
+차선이
+차순석
+차필배
+차창교
+차선이
+차숙엽
+차효택
+차종국
+차쌍술
+차갑태
+차기돌
+차분연
+차양현
+차재종
+차영용
+차국열
+차영열
+차유호
+차선섭
+차용계
+차영진
+차원영
+차은실
+차갑조
+차영진
+차상희
+차기동
+차태준
+차영환
+차말근
+차방수
+차정길
+차옥선
+차도만
+차태섭
+차성호
+차용덕
+차판열
+차종화
+차기선
+차용섭
+차진차
+차석찬
+차노갑
+차용수
+차나구
+차철표
+차재곤
+차유섭
+차세선
+차동준
+차기무
+차이순
+차재태
+차성문
+차태수
+차인식
+차명영
+차분배
+차순록
+차일용
+차희도
+차성원
+차대화
+차임선
+차선수
+차위용
+차진민
+차임용
+차한주
+차해승
+차범경
+차장환
+차용만
+차동자
+차상권
+차재규
+차우화
+차광식
+차준우
+차정자
+차차호
+차수자
+차팔정
+차종록
+차상훈
+차쌍국
+차규석
+차증용
+차기재
+차봉이
+차서수
+차지훈
+차상준
+차충석
+차영규
+차진섭
+차종순
+차장길
+차형우
+차질용
+차호동
+차석수
+차현분
+차창석
+차옥전
+차만자
+차소하
+차철휴
+차태조
+차건종
+차경출
+차춘순
+차정익
+차미동
+차경수
+차춘호
+차신만
+차철수
+차구강
+차쾌야
+차묘출
+차두출
+차상덕
+차태선
+차은선
+차종조
+차태섭
+차태진
+차무철
+차창자
+차상열
+차판수
+차선근
+차상갑
+차우표
+차필상
+차성순
+차석식
+차길희
+차필용
+차정현
+차종현
+차규득
+차한용
+차삼식
+차종아
+차정조
+차한천
+차철조
+차수훈
+차성용
+차한출
+차창원
+차호화
+차성남
+차해섭
+차상광
+차곤숙
+차병이
+차호섭
+차복순
+차태희
+차노환
+채경준
+채성규
+채무천
+채상현
+채군묵
+채동출
+채상영
+채옥환
+채규학
+채종욱
+채석상
+채광차
+채노석
+채종호
+채남태
+채재석
+채민준
+채만옥
+채정석
+채정원
+채영희
+채덕석
+채명례
+채윤남
+채윤덕
+채석화
+채환자
+채규주
+채일만
+채영환
+채하자
+채태열
+채정영
+채말도
+채현자
+채호기
+채종률
+채철경
+채종진
+채순수
+채종유
+채우기
+채규근
+채칠수
+채진우
+채재임
+채홍성
+채상호
+채차갑
+채석식
+채대목
+채병배
+채한식
+채길교
+채홍봉
+채인래
+천경용
+천순남
+천광규
+천영규
+천경호
+천성술
+천용룡
+천경석
+천배영
+천영건
+천금오
+천태구
+천우영
+천태숙
+천재환
+천언례
+천우태
+천태용
+천영극
+천우환
+천재근
+천이수
+천윤기
+천봉현
+천재식
+천운덕
+천은수
+천천호
+천태종
+천원용
+천영원
+천상순
+천호균
+천용택
+천수이
+천철희
+최 건
+최갑배
+최정지
+최영환
+최 건
+최남춘
+최혜희
+최경훈
+최 상
+최오아
+최기만
+최병식
+최 윤
+최용주
+최진진
+최성인
+최갑동
+최우붕
+최정원
+최용옥
+최갑철
+최세숙
+최삼권
+최미수
+최경동
+최홍석
+최정애
+최석배
+최경섭
+최선출
+최종갑
+최군현
+최경순
+최상혁
+최해길
+최기용
+최경애
+최정복
+최정태
+최종식
+최경옥
+최영경
+최만주
+최성조
+최경일
+최손완
+최덕호
+최원동
+최경자
+최근득
+최병수
+최상조
+최경자
+최재식
+최주이
+최만화
+최경창
+최윤태
+최성술
+최장용
+최경칠
+최태욱
+최금곤
+최태혁
+최경칠
+최희유
+최상호
+최석이
+최경호
+최을출
+최중용
+최상석
+최경환
+최상열
+최금호
+최강학
+최경훈
+최순우
+최경수
+최덕이
+최경희
+최종호
+최한근
+최운석
+최곤이
+최재호
+최인식
+최상우
+최광식
+최필순
+최일수
+최광숙
+최광임
+최삼남
+최봉석
+최달우
+최광철
+최태호
+최동호
+최교선
+최국렬
+최승순
+최재경
+최상호
+최국진
+최인순
+최기래
+최일연
+최국철
+최용출
+최기배
+최의수
+최귀곤
+최달식
+최용연
+최용복
+최귀주
+최종균
+최임건
+최희희
+최규만
+최환호
+최익이
+최영남
+최규병
+최정현
+최병만
+최영근
+최규석
+최상호
+최동영
+최진곤
+최규찬
+최시수
+최창환
+최중동
+최규태
+최진귀
+최재조
+최칠기
+최극용
+최기순
+최성영
+최점정
+최근모
+최영자
+최병현
+최병환
+최금돌
+최준만
+최호운
+최갑홍
+최금선
+최숙식
+최병배
+최현수
+최금이
+최봉정
+최봉봉
+최세곤
+최기만
+최성락
+최돈수
+최재현
+최기문
+최정곤
+최운호
+최이용
+최기성
+최영호
+최기암
+최재석
+최기원
+최치수
+최부식
+최덕선
+최기환
+최해희
+최영현
+최봉동
+최길동
+최동수
+최재환
+최진규
+최길미
+최중열
+최병택
+최갑수
+최길용
+최이임
+최현만
+최중준
+최낙문
+최창열
+최종규
+최권원
+최낙인
+최명현
+최병환
+최성유
+최난선
+최소식
+최노군
+최현일
+최남원
+최해기
+최병득
+최진택
+최남이
+최복균
+최춘철
+최희희
+최남정
+최태희
+최재설
+최점식
+최남조
+최유희
+최상재
+최경선
+최남철
+최정태
+최호용
+최상복
+최남희
+최순수
+최금이
+최일수
+최내삼
+최용희
+최상준
+최춘철
+최대곤
+최영아
+최기근
+최귀환
+최대웅
+최해영
+최일덕
+최무화
+최대종
+최의국
+최근달
+최강춘
+최대환
+최영수
+최소헌
+최병한
+최덕순
+최학식
+최기정
+최록정
+최돈곤
+최상환
+최용기
+최태일
+최돈헌
+최일포
+최한신
+최분만
+최동건
+최운규
+최종훈
+최상호
+최동국
+최건문
+최재숙
+최윤환
+최동기
+최경록
+최승숙
+최귀분
+최동길
+최태식
+최재경
+최자호
+최동목
+최유복
+최영환
+최상성
+최동서
+최우철
+최인이
+최정이
+최동술
+최창환
+최기홍
+최석술
+최동식
+최정순
+최외근
+최원숙
+최동욱
+최길란
+최종자
+최 운
+최동주
+최년문
+최기태
+최상빈
+최동준
+최갑순
+최경호
+최해조
+최동진
+최우곤
+최수수
+최헌기
+최동진
+최기구
+최재흠
+최상래
+최동춘
+최영희
+최용일
+최오정
+최동호
+최상식
+최상진
+최경춘
+최동홍
+최용이
+최동수
+최주갑
+최동화
+최창문
+최옥열
+최점해
+최동훈
+최종환
+최순갑
+최재호
+최두기
+최희판
+최생해
+최성철
+최두열
+최재조
+최영진
+최종웅
+최두원
+최환원
+최태애
+최미심
+최두형
+최진문
+최차이
+최상환
+최려현
+최규택
+최이순
+최묘석
+최마용
+최호동
+최영도
+최 련
+최만권
+최판규
+최수두
+최봉경
+최만도
+최교희
+최명진
+최준흠
+최만돌
+최준원
+최병규
+최해구
+최만재
+최소수
+최종권
+최정조
+최말석
+최동훈
+최상순
+최태문
+최말선
+최병중
+최재환
+최무호
+최말선
+최외호
+최윤용
+최재수
+최말선
+최용기
+최근영
+최석진
+최명구
+최재순
+최윤숙
+최재수
+최명근
+최봉규
+최시상
+최창수
+최명기
+최성금
+최재경
+최기수
+최명길
+최인한
+최윤용
+최삼환
+최명길
+최성대
+최만분
+최말희
+최명덕
+최상기
+최병규
+최종환
+최명란
+최연조
+최용균
+최진근
+최명룡
+최우식
+최태금
+최영완
+최명선
+최행봉
+최란호
+최달래
+최명술
+최숙희
+최수성
+최영남
+최명원
+최인성
+최영동
+최부천
+최명화
+최익문
+최천식
+최의식
+최몽기
+최융희
+최곤화
+최영종
+최무정
+최상중
+최영진
+최두배
+최무현
+최중수
+최갑순
+최일각
+최문복
+최삼철
+최태기
+최기형
+최문석
+최선기
+최효기
+최장철
+최문섭
+최상순
+최종희
+최암호
+최문재
+최수배
+최광숙
+최월연
+최미성
+최해인
+최광수
+최영인
+최미숙
+최종민
+최용임
+최주호
+최민희
+최필철
+최갑복
+최쾌열
+최범용
+최판래
+최순홍
+최만세
+최범주
+최영희
+최종희
+최창호
+최병규
+최철철
+최종임
+최가헌
+최병길
+최명호
+최차주
+최영촌
+최병길
+최춘건
+최상진
+최성임
+최병길
+최영희
+최태봉
+최태광
+최병담
+최세남
+최병환
+최세곤
+최병수
+최오수
+최갑욱
+최정교
+최병수
+최재구
+최영구
+최금경
+최병수
+최공호
+최춘래
+최창우
+최병술
+최만정
+최호연
+최춘상
+최병암
+최구훈
+최갑수
+최재복
+최병열
+최대기
+최무기
+최용길
+최병오
+최계중
+최진우
+최영용
+최병운
+최태영
+최복교
+최보태
+최병주
+최재기
+최범현
+최신택
+최병준
+최화열
+최의희
+최종만
+최병찬
+최규조
+최수묵
+최영열
+최병찬
+최상규
+최대택
+최창우
+최병철
+최해훈
+최보식
+최상오
+최병철
+최현준
+최규성
+최정관
+최병택
+최흥추
+최일란
+최대연
+최병필
+최낙숙
+최승관
+최경용
+최병하
+최중도
+최의범
+최태자
+최병환
+최상수
+최춘천
+최차호
+최보근
+최영섭
+최성수
+최기평
+최복란
+최병윤
+최순옥
+최승현
+최복련
+최을순
+최영현
+최성명
+최복순
+최도조
+최철조
+최수천
+최복연
+최해섭
+최도연
+최임조
+최복영
+최점이
+최종수
+최성근
+최복용
+최광갑
+최용용
+최장진
+최복출
+최순용
+최효길
+최영식
+최복호
+최영휴
+최석운
+최용수
+최봉권
+최석택
+최훈영
+최용희
+최봉선
+최종기
+최다현
+최흥민
+최봉효
+최동호
+최휘수
+최무덕
+최봉희
+최윤경
+최종수
+최정용
+최부식
+최종복
+최재희
+최남달
+최분남
+최태규
+최복희
+최찬태
+최분선
+최영갑
+최재국
+최분현
+최분옥
+최현종
+최남영
+최영헌
+최분이
+최남해
+최태호
+최휘효
+최삼복
+최성덕
+최기술
+최승길
+최삼순
+최정출
+최정원
+최규욱
+최삼용
+최학선
+최정옥
+최정조
+최삼조
+최형정
+최관진
+최명원
+최삼희
+최명설
+최대순
+최석지
+최상곤
+최재오
+최병재
+최병옥
+최상균
+최기곤
+최 식
+최교웅
+최상기
+최문분
+최연수
+최효생
+최상두
+최원구
+최규진
+최병철
+최상림
+최태삼
+최호교
+최판순
+최상림
+최종조
+최문호
+최영식
+최상림
+최강구
+최수운
+최경정
+최상무
+최도환
+최인희
+최외진
+최상백
+최정근
+최말치
+최봉규
+최상석
+최태환
+최상균
+최종조
+최상숙
+최판식
+최한규
+최종권
+최상열
+최장구
+최지환
+최용식
+최상영
+최중호
+최원환
+최보식
+최상이
+최쌍선
+최 태
+최태열
+최상종
+최의기
+최성덕
+최선실
+최상호
+최대용
+최사근
+최점용
+최상호
+최상수
+최이홍
+최성원
+최상호
+최석자
+최길호
+최태식
+최상환
+최경환
+최무운
+최상수
+최상환
+최세조
+최병모
+최득봉
+최상훈
+최용문
+최신섭
+최상덕
+최석관
+최주욱
+최대주
+최병기
+최석광
+최명배
+최한희
+최득열
+최석근
+최성태
+최성석
+최용탁
+최석명
+최상경
+최중조
+최영수
+최석문
+최유자
+최광호
+최상재
+최석배
+최금규
+최정수
+최우섭
+최석오
+최세홍
+최영열
+최수금
+최석재
+최영술
+최석정
+최구진
+최석철
+최한용
+최재헌
+최미수
+최석철
+최상갑
+최준이
+최용식
+최석헌
+최일경
+최중석
+최명진
+최석헌
+최용건
+최상휴
+최의종
+최석호
+최권록
+최을진
+최상자
+최선규
+최월찬
+최성국
+최범균
+최선이
+최금희
+최수연
+최의열
+최선희
+최경주
+최정권
+최범화
+최성경
+최미호
+최병래
+최원근
+최성곤
+최경돌
+최점준
+최재수
+최성관
+최병성
+최영용
+최종헌
+최성구
+최선완
+최정목
+최정열
+최성규
+최성준
+최덕순
+최미한
+최성규
+최용자
+최동열
+최남일
+최성규
+최규식
+최재식
+최재두
+최성규
+최희우
+최영출
+최원기
+최성대
+최영용
+최헌철
+최춘용
+최성대
+최위윤
+최규돈
+최성용
+최성덕
+최대환
+최월용
+최태근
+최성동
+최준근
+최주철
+최정진
+최성룡
+최범림
+최남호
+최진래
+최성문
+최한철
+최종섭
+최준식
+최성민
+최영현
+최헌수
+최규석
+최성봉
+최자남
+최정향
+최성숙
+최성수
+최국철
+최 혁
+최승기
+최성열
+최말용
+최정덕
+최팔화
+최성열
+최태종
+최익호
+최승섭
+최성열
+최쾌준
+최승임
+최재현
+최성용
+최재자
+최정재
+최명준
+최성욱
+최욱화
+최태수
+최대호
+최성운
+최근이
+최재권
+최상홍
+최성원
+최성연
+최보노
+최해열
+최성원
+최정택
+최종봉
+최정훈
+최성재
+최방자
+최태호
+최태제
+최성재
+최종도
+최판식
+최근순
+최성조
+최재진
+최삼일
+최정용
+최성준
+최무석
+최학건
+최갑조
+최성탁
+최달하
+최재효
+최병희
+최성태
+최정종
+최중언
+최이동
+최성태
+최동주
+최재조
+최동인
+최성택
+최석배
+최형구
+최환용
+최성현
+최술규
+최호배
+최순기
+최성호
+최춘홍
+최진경
+최영문
+최성호
+최경문
+최화석
+최은휴
+최성화
+최말출
+최진용
+최호하
+최성화
+최동수
+최성덕
+최차복
+최성환
+최선수
+최성윤
+최재구
+최성훈
+최석용
+최동호
+최무호
+최소도
+최석옥
+최갑호
+최홍용
+최소도
+최종업
+최무기
+최홍용
+최소임
+최병순
+최은숙
+최석이
+최수남
+최한동
+최윤부
+최세호
+최수동
+최인철
+최차호
+최상녀
+최수동
+최세룡
+최원운
+최승재
+최수련
+최동훈
+최관규
+최유조
+최수만
+최길희
+최재현
+최병헌
+최수열
+최삼현
+최화성
+최재경
+최수인
+최금용
+최성수
+최상택
+최수일
+최일규
+최대선
+최철철
+최수장
+최노관
+최승한
+최세덕
+최수종
+최학선
+최호규
+최재학
+최수종
+최범회
+최영근
+최덕식
+최순근
+최해이
+최영원
+최월문
+최순기
+최정호
+최진상
+최구만
+최순기
+최상홍
+최준술
+최춘분
+최순길
+최대숙
+최태춘
+최순환
+최순녀
+최재옥
+최임순
+최순동
+최순덕
+최창회
+최경국
+최순욱
+최순덕
+최무길
+최종규
+최정갑
+최순동
+최월만
+최운익
+최계환
+최순상
+최종호
+최정덕
+최술권
+최순선
+최종식
+최경석
+최한태
+최순신
+최정갑
+최봉희
+최숙모
+최순연
+최윤호
+최해재
+최 오
+최순연
+최정준
+최필옥
+최복용
+최순욱
+최명진
+최기수
+최영완
+최순이
+최성자
+최영영
+최광조
+최순익
+최 곤
+최분규
+최광권
+최순재
+최점관
+최일창
+최채호
+최순재
+최경천
+최성만
+최권암
+최순출
+최노석
+최병술
+최풍옥
+최순택
+최소석
+최병문
+최동학
+최순호
+최원규
+최태일
+최금삼
+최순화
+최종옥
+최원도
+최정문
+최순희
+최돈학
+최영종
+최종현
+최승락
+최정국
+최영호
+최광현
+최승현
+최상운
+최을봉
+최춘균
+최승환
+최남득
+최점섭
+최말환
+최시영
+최해래
+최광휘
+최황주
+최식태
+최병원
+최영규
+최진호
+최애정
+최윤익
+최혜조
+최성화
+최양자
+최대문
+최형열
+최상관
+최언식
+최미식
+최명연
+최대근
+최여교
+최재담
+최승전
+최상수
+최연구
+최계주
+최막찬
+최문수
+최연홍
+최영영
+최기권
+최순희
+최영곤
+최병선
+최대숙
+최월석
+최영관
+최호복
+최용성
+최근규
+최영국
+최오국
+최해원
+최수이
+최영규
+최 래
+최만호
+최인연
+최영규
+최악갑
+최소규
+최윤수
+최영근
+최일조
+최병원
+최성훈
+최영대
+최양재
+최효호
+최종자
+최영덕
+최기환
+최낙철
+최미자
+최영도
+최소판
+최순향
+최말원
+최영동
+최명자
+최대금
+최덕곤
+최영만
+최영희
+최수구
+최태상
+최영만
+최범규
+최도인
+최운문
+최영만
+최판진
+최정수
+최귀상
+최영석
+최종직
+최종규
+최재택
+최영수
+최 영
+최월도
+최영배
+최영수
+최석철
+최재호
+최형석
+최영숙
+최효석
+최연재
+최성원
+최영순
+최정한
+최만용
+최영기
+최영순
+최진현
+최광숙
+최호점
+최영식
+최명설
+최환순
+최월순
+최영엽
+최성암
+최정식
+최철진
+최영오
+최형근
+최정순
+최이기
+최영의
+최익중
+최삼식
+최윤학
+최영자
+최용삼
+최명렬
+최소숙
+최영자
+최태순
+최수덕
+최분수
+최영재
+최권수
+최세옥
+최태규
+최영주
+최수열
+최진동
+최설호
+최영준
+최경만
+최정경
+최학영
+최영직
+최성경
+최순환
+최찬이
+최영진
+최옥철
+최순호
+최정조
+최영찬
+최창환
+최외준
+최상수
+최영채
+최신정
+최종규
+최동이
+최영철
+최홍호
+최춘희
+최영여
+최영태
+최달자
+최정혁
+최대하
+최영태
+최순욱
+최귀수
+최영영
+최영포
+최홍진
+최무수
+최수호
+최영항
+최창용
+최순덕
+최성창
+최영현
+최천대
+최병채
+최소필
+최영호
+최재택
+최승인
+최재동
+최영효
+최청용
+최희갑
+최명수
+최영희
+최춘규
+최종달
+최순정
+최오근
+최상주
+최금수
+최병열
+최오생
+최병철
+최영철
+최강용
+최옥균
+최인선
+최대애
+최기현
+최옥암
+최용수
+최호용
+최재철
+최외택
+최근동
+최정근
+최연원
+최용권
+최기오
+최해준
+최승홍
+최용규
+최재백
+최정구
+최유동
+최용균
+최수학
+최종례
+최한모
+최용근
+최인숙
+최순근
+최희환
+최용근
+최인옥
+최장진
+최영호
+최용덕
+최덕노
+최운태
+최영운
+최용선
+최상자
+최규환
+최경호
+최용성
+최경용
+최상문
+최성남
+최용수
+최헌희
+최운섭
+최규환
+최용수
+최진문
+최정식
+최순길
+최용승
+최영명
+최진호
+최태상
+최용조
+최중기
+최병환
+최재석
+최용주
+최해덕
+최주갑
+최순덕
+최용준
+최삼조
+최재애
+최재록
+최용태
+최응도
+최달건
+최영훈
+최용택
+최기태
+최영호
+최경용
+최용한
+최점길
+최성용
+최영실
+최용환
+최동오
+최효식
+최현호
+최우권
+최창복
+최달술
+최태선
+최우득
+최용희
+최룡경
+최기희
+최우순
+최준모
+최윤출
+최윤태
+최우영
+최만채
+최재길
+최용천
+최우영
+최호명
+최성원
+최유수
+최운곤
+최상석
+최미열
+최병열
+최운섭
+최재임
+최상희
+최경수
+최운용
+최동범
+최원구
+최해태
+최운원
+최분동
+최분영
+최점길
+최운형
+최병술
+최근곤
+최권하
+최원규
+최종수
+최차완
+최상경
+최원길
+최을창
+최재오
+최옥종
+최원달
+최순연
+최길수
+최영우
+최원덕
+최태근
+최동아
+최팔희
+최원보
+최정곤
+최홍호
+최해구
+최원석
+최영자
+최주영
+최중충
+최원익
+최정득
+최관희
+최노율
+최원일
+최옥복
+최말자
+최기선
+최원조
+최술규
+최점호
+최순진
+최원택
+최기현
+최선금
+최종경
+최원택
+최종식
+최삼훈
+최하중
+최원호
+최효조
+최교포
+최주향
+최원홍
+최분환
+최현순
+최수돌
+최원홍
+최선욱
+최화래
+최남걸
+최월순
+최귀홍
+최기필
+최석철
+최위경
+최성효
+최말악
+최중열
+최윤곤
+최정권
+최신열
+최태섭
+최윤곤
+최기성
+최기준
+최명진
+최윤기
+최옥금
+최진진
+최원수
+최윤남
+최광렬
+최병병
+최한상
+최윤도
+최영석
+최문선
+최원철
+최윤복
+최영윤
+최병윤
+최봉술
+최윤영
+최연수
+최원견
+최옥수
+최윤호
+최성환
+최삼삼
+최종주
+최윤호
+최원대
+최두락
+최상원
+최율태
+최영웅
+최병경
+최주선
+최은경
+최한순
+최옥현
+최재칠
+최은영
+최용태
+최희학
+최수희
+최은종
+최상석
+최인익
+최영조
+최응곤
+최위기
+최상화
+최병헌
+최의권
+최종채
+최상수
+최종수
+최의현
+최점견
+최상환
+최기탁
+최이기
+최하래
+최태열
+최석녀
+최익권
+최연춘
+최원선
+최재순
+최익상
+최화섭
+최상진
+최동현
+최익현
+최성남
+최성진
+최태석
+최인권
+최성한
+최소헌
+최종봉
+최인대
+최진복
+최계범
+최소필
+최인동
+최태록
+최양길
+최호련
+최인수
+최동철
+최만원
+최소열
+최인식
+최상우
+최태근
+최태균
+최인옥
+최명식
+최수춘
+최영만
+최인주
+최제제
+최환철
+최태술
+최인철
+최외수
+최순홍
+최분식
+최인환
+최용노
+최경동
+최운랑
+최일금
+최향주
+최원재
+최두주
+최일동
+최영호
+최원수
+최규태
+최일수
+최종경
+최성화
+최병길
+최일출
+최일교
+최경수
+최 식
+최일호
+최홍미
+최창순
+최동용
+최일환
+최동건
+최칠용
+최준용
+최일환
+최영익
+최봉국
+최기선
+최일훈
+최갑기
+최상묘
+최성일
+최자도
+최경웅
+최재택
+최진경
+최장강
+최선선
+최복난
+최화홍
+최장기
+최광덕
+최춘행
+최재순
+최장수
+최연곤
+최창덕
+최원식
+최장술
+최외환
+최태회
+최용모
+최장준
+최규근
+최창인
+최복화
+최재규
+최학주
+최재호
+최원윤
+최재규
+최영은
+최균수
+최준호
+최재덕
+최명주
+최재성
+최무홍
+최재만
+최인열
+최성윤
+최현환
+최재문
+최영화
+최교심
+최경곤
+최재복
+최경한
+최용학
+최영윤
+최재봉
+최양이
+최성진
+최인달
+최재상
+최동현
+최용식
+최기경
+최재석
+최덕현
+최일화
+최상주
+최재수
+최원배
+최양호
+최영도
+최재숙
+최순현
+최봉옥
+최정석
+최재숙
+최상조
+최선표
+최복하
+최재식
+최영순
+최상완
+최광이
+최재오
+최준수
+최정학
+최강대
+최재우
+최수우
+최복기
+최동순
+최재욱
+최만태
+최 기
+최상조
+최재운
+최용성
+최일성
+최석수
+최재윤
+최삼수
+최재원
+최달정
+최재춘
+최구준
+최대련
+최팔문
+최재출
+최교열
+최삼선
+최외오
+최재학
+최주수
+최혜명
+최병치
+최재헌
+최수수
+최무연
+최성연
+최재호
+최쾌관
+최재희
+최태용
+최재호
+최수진
+최임석
+최창선
+최재호
+최길헌
+최도방
+최필희
+최재호
+최봉암
+최일태
+최명호
+최재환
+최연식
+최호환
+최기주
+최전근
+최옥국
+최인창
+최을열
+최점기
+최용섭
+최의현
+최점식
+최점덕
+최석록
+최정천
+최재기
+최점식
+최오도
+최만길
+최영호
+최점용
+최수명
+최기철
+최태석
+최점준
+최성석
+최규조
+최창조
+최정덕
+최종근
+최승조
+최상출
+최정봉
+최두달
+최점호
+최천식
+최정수
+최종석
+최재열
+최설석
+최정수
+최만생
+최진제
+최호길
+최정수
+최재국
+최광학
+최방규
+최정연
+최용우
+최재준
+최기병
+최정오
+최선호
+최용래
+최진근
+최정우
+최남복
+최철홍
+최원용
+최정윤
+최문수
+최근숙
+최정덕
+최정임
+최덕덕
+최언이
+최해우
+최정종
+최재순
+최봉찬
+최삼섭
+최정준
+최정원
+최을흠
+최중민
+최정철
+최상락
+최주이
+최일순
+최정호
+최종기
+최창식
+최영석
+최정환
+최정호
+최관종
+최병이
+최정환
+최공우
+최병수
+최숙숙
+최정효
+최기원
+최경문
+최장애
+최종갑
+최길미
+최갑로
+최연건
+최종경
+최향기
+최태자
+최병랑
+최종교
+최석준
+최경순
+최종현
+최종국
+최영식
+최기이
+최성부
+최종규
+최경호
+최현범
+최임만
+최종기
+최재우
+최타재
+최윤순
+최종기
+최창수
+최은화
+최칠석
+최종기
+최강구
+최동중
+최헌호
+최종기
+최성훈
+최유화
+최분향
+최종길
+최기해
+최종기
+최원진
+최종길
+최재찬
+최차흠
+최선빈
+최종명
+최태하
+최학숙
+최억분
+최종민
+최기종
+최기조
+최상식
+최종선
+최종준
+최용희
+최영련
+최종성
+최순홍
+최희기
+최부배
+최종숙
+최정환
+최태주
+최대규
+최종식
+최영수
+최병돌
+최광곤
+최종열
+최장복
+최복득
+최분국
+최종운
+최난희
+최정백
+최정철
+최종율
+최상옥
+최춘평
+최말조
+최종일
+최경식
+최상학
+최강기
+최종찬
+최해득
+최광석
+최은봉
+최종태
+최광민
+최용철
+최경암
+최종팔
+최만헌
+최지의
+최학권
+최종현
+최종숙
+최동순
+최중원
+최종현
+최만우
+최봉식
+최영호
+최종호
+최상화
+최규춘
+최태희
+최종홍
+최삼호
+최성문
+최복희
+최종홍
+최기준
+최진태
+최기주
+최종환
+최한고
+최인순
+최석일
+최주환
+최전도
+최진섭
+최경진
+최준복
+최옥식
+최상상
+최이선
+최준생
+최수상
+최은숙
+최윤환
+최준식
+최옥수
+최종섭
+최덕환
+최준식
+최충홍
+최재식
+최혁철
+최중강
+최상분
+최길철
+최인춘
+최중곤
+최삼식
+최상규
+최귀석
+최중권
+최세동
+최분봉
+최미도
+최중기
+최정오
+최정탁
+최재호
+최지훈
+최규연
+최종경
+최장환
+최진국
+최상철
+최현식
+최상병
+최진국
+최인태
+최해재
+최경식
+최진규
+최성곤
+최재매
+최덕성
+최진동
+최만준
+최인계
+최삼분
+최진수
+최명경
+최성환
+최정길
+최진우
+최치도
+최인호
+최병자
+최진운
+최종원
+최덕이
+최임호
+최진원
+최승유
+최용선
+최준교
+최진종
+최만용
+최판회
+최경록
+최진철
+최원환
+최진철
+최삼렬
+최질도
+최장규
+최봉형
+최성태
+최질임
+최병옥
+최창수
+최근익
+최차석
+최은금
+최남영
+최상형
+최차암
+최일순
+최호옥
+최수근
+최차재
+최갑우
+최봉자
+최흥경
+최찬수
+최영협
+최원태
+최재선
+최창규
+최대호
+최행순
+최남희
+최창남
+최동길
+최원훈
+최용규
+최창동
+최헌환
+최성연
+최병석
+최창락
+최종례
+최재일
+최종태
+최창복
+최정수
+최병봉
+최용호
+최창수
+최성수
+최시판
+최인우
+최창숙
+최석연
+최성오
+최규순
+최창지
+최만국
+최문식
+최소견
+최천식
+최광국
+최병철
+최학환
+최천호
+최말희
+최춘환
+최준동
+최철규
+최영석
+최성수
+최순돌
+최철기
+최성근
+최인수
+최태동
+최철동
+최달구
+최만란
+최병래
+최철수
+최중석
+최용기
+최태재
+최철현
+최재숙
+최재정
+최수훈
+최철호
+최원연
+최재출
+최애봉
+최철호
+최재영
+최종돌
+최영기
+최청운
+최윤복
+최수수
+최원수
+최춘돌
+최주태
+최용환
+최지희
+최춘순
+최재임
+최헌구
+최정희
+최춘식
+최창자
+최갑만
+최춘순
+최춘희
+최원록
+최필열
+최무자
+최충국
+최상연
+최영동
+최일현
+최충권
+최학영
+최기원
+최권금
+최충일
+최상훈
+최분현
+최선무
+최쾌동
+최영태
+최순재
+최성용
+최타용
+최동규
+최인자
+최선규
+최태곤
+최정영
+최정환
+최종용
+최태곤
+최상식
+최용호
+최태택
+최태권
+최재생
+최정향
+최점호
+최태규
+최원형
+최태수
+최경수
+최태기
+최칠수
+최전봉
+최창호
+최태기
+최광조
+최천호
+최태운
+최태남
+최선용
+최재달
+최용근
+최태남
+최규달
+최재선
+최성종
+최태봉
+최월출
+최종상
+최영목
+최태수
+최윤석
+최기해
+최용영
+최태수
+최홍희
+최병자
+최수천
+최태수
+최희태
+최영주
+최위현
+최태수
+최종복
+최준혜
+최진자
+최태수
+최원덕
+최상권
+최강갑
+최태숙
+최례원
+최세근
+최장재
+최태술
+최상욱
+최신수
+최미아
+최태열
+최무록
+최종호
+최은식
+최태영
+최준길
+최명태
+최일기
+최태영
+최상기
+최동종
+최호욱
+최태자
+최정환
+최경수
+최석규
+최태종
+최소도
+최철교
+최재래
+최태종
+최영웅
+최장상
+최대기
+최태진
+최대복
+최일규
+최성태
+최태호
+최경숙
+최인균
+최용운
+최태화
+최태연
+최순호
+최영대
+최태흥
+최한우
+최태석
+최성술
+최판군
+최태식
+최정호
+최대영
+최판남
+최삼철
+최삼수
+최조종
+최판동
+최광언
+최순석
+최수식
+최판봉
+최우환
+최종식
+최노호
+최판암
+최석도
+최성만
+최병옥
+최판열
+최정호
+최원연
+최용인
+최판용
+최윤재
+최달휴
+최상오
+최판태
+최병순
+최태식
+최수일
+최판호
+최숙율
+최홍곤
+최성숙
+최팔생
+최병숙
+최구기
+최규갑
+최팔수
+최정석
+최복교
+최선명
+최팽주
+최창오
+최정철
+최상열
+최풍웅
+최성막
+최태수
+최상도
+최필동
+최외대
+최길수
+최인윤
+최필분
+최가원
+최세경
+최진인
+최필순
+최희희
+최장조
+최정조
+최필식
+최원원
+최연용
+최교표
+최하영
+최동기
+최승준
+최근곤
+최하자
+최용배
+최진훈
+최양기
+최학도
+최달학
+최양호
+최현환
+최학석
+최갑호
+최 동
+최보기
+최학식
+최춘선
+최병수
+최승석
+최한성
+최세복
+최주희
+최사성
+최한수
+최찬순
+최영란
+최황봉
+최한수
+최병자
+최희완
+최필달
+최한주
+최미규
+최인곤
+최우경
+최한천
+최춘신
+최환권
+최병만
+최한철
+최재숙
+최창진
+최선철
+최한호
+최태문
+최쌍규
+최인길
+최해곤
+최대양
+최수학
+최상자
+최해숙
+최상홍
+최오식
+최현룡
+최해술
+최태규
+최종덕
+최민석
+최해식
+최규순
+최정수
+최후영
+최해주
+최원환
+최호도
+최명호
+최해천
+최춘환
+최미영
+최용주
+최해천
+최종식
+최수호
+최근식
+최해철
+최무식
+최길택
+최사도
+최해환
+최태형
+최만옥
+최정태
+최혁기
+최길호
+최용순
+최도찬
+최현성
+최점연
+최양공
+최인용
+최형곤
+최삼문
+최덕권
+최진혁
+최형관
+최성미
+최상열
+최상숙
+최형로
+최주호
+최한길
+최태우
+최형석
+최인옥
+최경우
+최낙구
+최호겁
+최진수
+최은만
+최경미
+최호득
+최옥석
+최용인
+최성직
+최호선
+최기천
+최대자
+최석호
+최호진
+최영분
+최영희
+최철지
+최홍곤
+최판철
+최병화
+최영규
+최홍석
+최해연
+최원숙
+최태순
+최홍석
+최재규
+최오환
+최영년
+최홍식
+최삼철
+최상호
+최덕태
+최홍식
+최희록
+최미수
+최수정
+최홍식
+최정락
+최효평
+최용동
+최홍익
+최재욱
+최호남
+최근모
+최홍집
+최춘찬
+최선구
+최상조
+최화숙
+최태훈
+최점익
+최문배
+최환동
+최정희
+최애환
+최갑태
+최효곤
+최지기
+최을한
+최막섭
+최효동
+최한호
+최상추
+최규길
+최흥기
+최기선
+최재환
+최의자
+추미숙
+추갑권
+추삼옥
+추기록
+추연현
+추두주
+추재윤
+추상효
+추영호
+추상권
+추윤영
+추현한
+추인수
+추용자
+추재환
+추정숙
+추정옥
+추태진
+추이선
+추상진
+추태호
+추철억
+추금호
+추병택
+탁미옥
+탁정천
+탁철기
+탁영고
+탁재동
+탁갑희
+탁재열
+탁권생
+탁종희
+탁창권
+탁영남
+탁미득
+탁희곤
+탁재남
+탁기재
+탁진권
+편석진
+편덕정
+편원양
+편숙옥
+표선희
+표희수
+표윤환
+표봉기
+표세문
+표상춘
+표인식
+표준조
+표순기
+표월경
+표영인
+표윤석
+표옥현
+표차연
+표경정
+표삼갑
+표원섭
+표기철
+표병섭
+표창영
+표재수
+표재순
+표재암
+표국조
+표점원
+표수곤
+표광선
+표호근
+피동석
+피강환
+피영호
+피윤홍
+하갑식
+하홍주
+하황희
+하영희
+하경만
+하봉연
+하윤수
+하차노
+하경조
+하수희
+하종택
+하영덕
+하경희
+하기주
+하태수
+하경만
+하계선
+하광호
+하종만
+하병우
+하구록
+하증익
+하성조
+하미생
+하기주
+하상연
+하광석
+하영기
+하길수
+하심재
+하재석
+하대수
+하남순
+하상원
+하쾌세
+하기태
+하대호
+하옥열
+하재작
+하정이
+하동찬
+하태동
+하재호
+하원욱
+하만태
+하민석
+하내성
+하영용
+하명동
+하수환
+하재일
+하진진
+하무순
+하병병
+하경돌
+하영상
+하미경
+하수태
+하종세
+하재호
+하미정
+하병성
+하동수
+하상호
+하병관
+하성탁
+하진보
+하윤덕
+하병원
+하상병
+하태욱
+하재철
+하봉갑
+하광식
+하세철
+하정달
+하분조
+하재봉
+하석종
+하말윤
+하삼금
+하만회
+하영오
+하경난
+하상식
+하종수
+하석자
+하용호
+하석근
+하규복
+하헌수
+하해윤
+하석수
+하성수
+하종호
+하희세
+하세진
+하종기
+하화철
+하윤호
+하순남
+하성환
+하양순
+하달호
+하순숙
+하윤권
+하인자
+하상호
+하순헌
+하병금
+하성암
+하우곤
+하술성
+하수웅
+하태교
+하윤구
+하심홍
+하연춘
+하 규
+하창욱
+하연희
+하복근
+하원오
+하건열
+하영태
+하일노
+하석흠
+하미식
+하외수
+하경향
+하경우
+하동출
+하용수
+하영득
+하태갑
+하우성
+하윤이
+하정열
+하승균
+하석봉
+하인수
+하용섭
+하일삼
+하승현
+하인옥
+하정일
+하보동
+하신호
+하임순
+하재남
+하손경
+하주택
+하장연
+하달조
+하병자
+하수문
+하재순
+하노주
+하정규
+하인회
+하재주
+하봉모
+하영선
+하덕상
+하점순
+하수진
+하해길
+하점홍
+하점옥
+하익열
+하용환
+하수수
+하정연
+하정선
+하승선
+하상이
+하정열
+하칠선
+하용주
+하영열
+하정희
+하경택
+하규춘
+하윤진
+하종배
+하성희
+하종환
+하정섭
+하종연
+하상흠
+하순기
+하혁수
+하창부
+하응찬
+하병환
+하정호
+하춘룡
+하영동
+하종석
+하재경
+하타용
+하득하
+하영모
+하재학
+하태갑
+하옥원
+하영연
+하공영
+하태구
+하종석
+하종배
+하재연
+하태환
+하래훈
+하두명
+하윤치
+하학술
+하순기
+하춘문
+하하호
+하학용
+하무진
+하종상
+하대조
+하해명
+하영복
+하분호
+하종현
+하해명
+하한연
+하백수
+하순현
+하화순
+하현희
+하국생
+하창자
+하후조
+하홍근
+하인용
+하상창
+한 길
+한해봉
+한달근
+한미영
+한 옥
+한재열
+한원수
+한남석
+한갑수
+한태룡
+한위옥
+한복식
+한갑순
+한상악
+한명진
+한광수
+한강제
+한규칠
+한석용
+한복연
+한경애
+한호대
+한성아
+한홍학
+한경이
+한판석
+한태술
+한방근
+한경철
+한윤이
+한중덕
+한홍원
+한곤석
+한경삼
+한순한
+한영현
+한과희
+한춘조
+한븝숙
+한형이
+한관현
+한분춘
+한청식
+한덕환
+한구일
+한석재
+한성근
+한향규
+한국식
+한기호
+한판만
+한철출
+한금섭
+한재현
+한병목
+한차미
+한기철
+한재호
+한기선
+한순섭
+한기학
+한병목
+한일조
+한영희
+한길웅
+한찬석
+한진효
+한인호
+한노수
+한성강
+한영순
+한태균
+한담옥
+한점덕
+한일종
+한순덕
+한대근
+한삼홍
+한정득
+한성규
+한대성
+한현옥
+한일구
+한진도
+한대영
+한수세
+한영영
+한은복
+한덕교
+한혜현
+한영수
+한삼도
+한덕윤
+한질정
+한수오
+한태갑
+한도치
+한숙묵
+한정섭
+한태호
+한동권
+한명수
+한성원
+한인현
+한동수
+한창근
+한종문
+한우득
+한동양
+한수석
+한경선
+한성순
+한두교
+한삼석
+한차택
+한덕조
+한두현
+한일원
+한기길
+한경구
+한만위
+한응호
+한인식
+한무만
+한만호
+한오열
+한인효
+한수은
+한맹교
+한규덕
+한충영
+한동동
+한명갑
+한재국
+한재택
+한기기
+한명수
+한태기
+한춘현
+한수수
+한명순
+한용암
+한종섭
+한태덕
+한무교
+한학수
+한중채
+한석문
+한무현
+한난만
+한진창
+한경룡
+한문교
+한준윤
+한병호
+한주규
+한민자
+한춘광
+한해홍
+한종옥
+한병권
+한삼희
+한준섭
+한옥주
+한병원
+한태수
+한현재
+한용상
+한병철
+한하우
+한시교
+한삼명
+한병한
+한쌍호
+한판현
+한순성
+한복란
+한정경
+한몽기
+한종덕
+한복수
+한태근
+한영완
+한영순
+한복수
+한대태
+한경이
+한학석
+한봉석
+한은환
+한동수
+한황수
+한봉선
+한성석
+한태태
+한미일
+한봉수
+한용우
+한영민
+한무이
+한봉희
+한병운
+한용호
+한재호
+한부교
+한판수
+한낙완
+한태갑
+한사일
+한학문
+한영화
+한규선
+한삼순
+한정이
+한광동
+한경환
+한삼율
+한상준
+한석출
+한문호
+한상대
+한원진
+한승호
+한홍열
+한상모
+한덕우
+한상희
+한종기
+한상봉
+한원호
+한진목
+한창환
+한상석
+한주식
+한영학
+한호열
+한상선
+한광화
+한귀모
+한종육
+한상설
+한갑갑
+한성규
+한효춘
+한상수
+한인일
+한삼기
+한용원
+한상수
+한점미
+한유용
+한해우
+한상우
+한남현
+한상조
+한원태
+한상욱
+한태만
+한만수
+한원학
+한상학
+한찬기
+한왕오
+한일우
+한상학
+한태술
+한양수
+한호보
+한상호
+한해영
+한조훈
+한무용
+한생기
+한상호
+한용규
+한상록
+한석록
+한학덕
+한남엽
+한용인
+한석범
+한춘봉
+한성섭
+한명덕
+한석식
+한종영
+한창곤
+한학표
+한석원
+한동소
+한길석
+한용년
+한선주
+한기임
+한언호
+한윤희
+한성교
+한현환
+한석기
+한우화
+한성구
+한택균
+한용기
+한기식
+한성구
+한혜석
+한문조
+한수용
+한성국
+한희덕
+한병철
+한명순
+한세영
+한종호
+한철철
+한봉숙
+한세용
+한병구
+한용곤
+한분학
+한소순
+한영식
+한용갑
+한철자
+한수상
+한춘기
+한웅흠
+한영식
+한수완
+한재근
+한만진
+한연하
+한순원
+한태남
+한한호
+한익보
+한순찬
+한정은
+한승율
+한종호
+한승세
+한규식
+한재연
+한필호
+한승인
+한의조
+한태길
+한규철
+한승호
+한희식
+한상수
+한송선
+한열찬
+한쌍호
+한용영
+한윤해
+한영대
+한승덕
+한상례
+한영묵
+한영모
+한희태
+한무열
+한복조
+한영섭
+한갑현
+한창림
+한원숙
+한영수
+한동돌
+한진창
+한용란
+한영옥
+한경덕
+한분혁
+한외복
+한영철
+한대헌
+한기석
+한상영
+한영태
+한인수
+한경숙
+한영희
+한영현
+한병수
+한순순
+한성현
+한영희
+한정수
+한소오
+한종태
+한용수
+한영호
+한원문
+한응홍
+한우술
+한상옥
+한강향
+한형동
+한우찬
+한필용
+한임수
+한승학
+한원교
+한상출
+한한진
+한용식
+한원수
+한유희
+한형식
+한한술
+한유교
+한상성
+한태구
+한증영
+한육지
+한금상
+한경태
+한종갑
+한윤현
+한정출
+한규섭
+한동규
+한이술
+한주연
+한미규
+한주재
+한인교
+한규학
+한진용
+한재우
+한인숙
+한재휴
+한채완
+한영규
+한일석
+한승화
+한태임
+한인호
+한장학
+한원석
+한정국
+한우태
+한장현
+한충순
+한중중
+한봉규
+한장현
+한병용
+한의수
+한인경
+한재권
+한판규
+한교욱
+한상원
+한재수
+한종남
+한언수
+한희택
+한정교
+한삼태
+한순경
+한억준
+한정순
+한상상
+한종태
+한상하
+한정진
+한우부
+한병자
+한영조
+한정호
+한동만
+한춘용
+한경태
+한종수
+한월경
+한재자
+한원규
+한종수
+한성호
+한쌍환
+한재환
+한종열
+한양준
+한종수
+한말국
+한종채
+한양섭
+한옥호
+한을오
+한준교
+한석석
+한영현
+한재학
+한준수
+한성주
+한상기
+한춘길
+한중식
+한남희
+한영성
+한술호
+한중악
+한기조
+한양실
+한시철
+한지원
+한병경
+한웅길
+한필해
+한진교
+한용문
+한양수
+한인자
+한진애
+한종현
+한수진
+한윤익
+한창근
+한근수
+한명근
+한기한
+한창석
+한형오
+한순만
+한동동
+한창수
+한필용
+한재길
+한동호
+한철수
+한석홍
+한춘모
+한상영
+한칠용
+한석립
+한국우
+한상홍
+한태남
+한달일
+한기성
+한성환
+한태순
+한태하
+한종호
+한영실
+한태출
+한일찬
+한용숙
+한재현
+한판달
+한말주
+한정헌
+한찬근
+한현수
+한태조
+한계의
+한갑석
+한현정
+한환구
+한춘학
+한용측
+한형수
+한쌍술
+한수석
+한쌍덕
+한호열
+한수대
+한용식
+한미경
+한홍석
+한세순
+한월권
+한선수
+한효균
+한달순
+한광식
+한정호
+한효동
+한정호
+한성우
+한종태
+한흥수
+한기문
+한희분
+한수석
+한희경
+한한현
+한근재
+한광현
+함계술
+함진란
+함경호
+함연봉
+함병원
+함종자
+함두술
+함병동
+함수태
+함성근
+함구규
+함순운
+함영조
+함태순
+함영옥
+함원식
+함우암
+함상혜
+함동순
+함정연
+함원환
+함해홍
+함정옥
+함인목
+함정웅
+함상재
+함기근
+함근숙
+함환종
+함상용
+함기원
+함선학
+허 광
+허현수
+허정용
+허종달
+허 동
+허만봉
+허주동
+허승석
+허 석
+허의술
+허성원
+허귀원
+허 순
+허상호
+허상자
+허진현
+허 완
+허병준
+허순재
+허호선
+허 원
+허정대
+허태화
+허중갑
+허 유
+허정영
+허정림
+허덕수
+허 작
+허동제
+허태대
+허주화
+허경출
+허홍열
+허삼환
+허정순
+허광수
+허숙갑
+허정훈
+허재문
+허권찬
+허판수
+허춘수
+허석출
+허규태
+허장수
+허술용
+허옥철
+허기식
+허필열
+허만희
+허선기
+허기철
+허희덕
+허준호
+허영항
+허난연
+허동원
+허재식
+허윤식
+허남일
+허종창
+허병석
+허봉국
+허동량
+허영태
+허달철
+허이준
+허동량
+허선암
+허낙희
+허춘수
+허동량
+허호묘
+허명건
+허성원
+허동록
+허영석
+허찬달
+허복식
+허동성
+허학섭
+허간섭
+허귀모
+허동수
+허철성
+허정덕
+허영준
+허동진
+허장기
+허규자
+허덕용
+허만구
+허현식
+허규락
+허수교
+허만상
+허규철
+허정익
+허종현
+허만선
+허달연
+허외기
+허태태
+허만업
+허명진
+허원구
+허형섭
+허만열
+허상진
+허영엽
+허연경
+허만영
+허장래
+허병권
+허춘구
+허만옥
+허일연
+허상환
+허상수
+허만우
+허재선
+허재홍
+허병훈
+허만정
+허장우
+허경만
+허만근
+허만조
+허수상
+허옥재
+허봉관
+허만철
+허정태
+허정임
+허종열
+허만희
+허영옥
+허성용
+허광국
+허만희
+허경현
+허상노
+허홍웅
+허문규
+허동훈
+허용규
+허창수
+허봉순
+허광기
+허소열
+허충학
+허삼수
+허근대
+허수용
+허창호
+허상기
+허정우
+허석용
+허정원
+허상숙
+허영설
+허광덕
+허갑성
+허상용
+허각수
+허남권
+허순용
+허상철
+허치석
+허광웅
+허정연
+허상출
+허시정
+허석민
+허상욱
+허석구
+허묘교
+허수춘
+허칠철
+허석구
+허무찬
+허말갑
+허영수
+허선출
+허영휘
+허기섭
+허분열
+허성용
+허상권
+허동우
+허재근
+허수양
+허의야
+허도경
+허문석
+허순양
+허동만
+허창해
+허정현
+허순이
+허경헌
+허 귀
+허삼한
+허승조
+허영길
+허태정
+허제오
+허양학
+허만홍
+허기오
+허병환
+허연구
+허상식
+허수환
+허성석
+허영석
+허현희
+허태득
+허경연
+허영원
+허만진
+허팔문
+허병열
+허영택
+허원훈
+허영술
+허무열
+허영호
+허한태
+허정자
+허문춘
+허옥선
+허신영
+허세대
+허상정
+허용권
+허경연
+허경도
+허종재
+허용한
+허순탁
+허석하
+허병안
+허운용
+허경균
+허철곤
+허수선
+허웅섭
+허상철
+허동화
+허과순
+허위구
+허원수
+허규출
+허중래
+허이선
+허병식
+허점자
+허홍득
+허이호
+허일해
+허정덕
+허진율
+허인규
+허홍현
+허근열
+허병강
+허인중
+허병순
+허기국
+허우수
+허인출
+허오식
+허춘환
+허병양
+허임양
+허정선
+허명용
+허태영
+허재명
+허충종
+허재배
+허태휴
+허재원
+허재생
+허돌우
+허성필
+허재필
+허덕오
+허택열
+허점순
+허재훈
+허종연
+허완선
+허이용
+허점돌
+허순노
+허용길
+허순명
+허점암
+허원섭
+허광식
+허종권
+허정식
+허재영
+허무수
+허성조
+허정아
+허성일
+허한규
+허대정
+허정우
+허길철
+허세수
+허우례
+허종래
+허소헌
+허태원
+허진춘
+허주호
+허정도
+허외모
+허 자
+허준
+허문
+허화
+허장
+허진석
+허상우
+허옥길
+허성구
+허진욱
+허기철
+허현옥
+허규조
+허춘우
+허영철
+허재필
+허영남
+허춘재
+허영선
+허충돌
+허무규
+허태상
+허기현
+허명석
+허용순
+허태수
+허갑숙
+허조태
+허판철
+허태수
+허경일
+허오훈
+허을창
+허태진
+허규생
+허윤분
+허한열
+허판성
+허증철
+허용택
+허상이
+허판수
+허성술
+허창순
+허근수
+허필조
+허탁철
+허도경
+허운출
+허현숙
+허위도
+허도동
+허외길
+허홍규
+허태웅
+허정태
+허정연
+허휘웅
+허옥중
+허종출
+허태주
+현금순
+현정석
+현두원
+현상순
+현동열
+현근권
+현규홍
+현원탁
+현문식
+현태영
+현태석
+현기곤
+현석원
+현소선
+현춘대
+현춘영
+현수용
+현문환
+현근곤
+현한제
+현순희
+현재교
+현상원
+현재한
+현용식
+현태모
+현주현
+현규식
+현창환
+현정술
+현헌현
+현충영
+현희훈
+현금수
+현광호
+현태자
+형남진
+형상현
+형순현
+형판숙
+홍 헌
+홍재규
+홍주근
+홍승호
+홍갑순
+홍세수
+홍명홍
+홍병갑
+홍경도
+홍수수
+홍지민
+홍정호
+홍경호
+홍정욱
+홍인원
+홍동덕
+홍계연
+홍병순
+홍우용
+홍기량
+홍광식
+홍태태
+홍인용
+홍현식
+홍기문
+홍선자
+홍영중
+홍용기
+홍대순
+홍보지
+홍귀동
+홍남관
+홍도생
+홍진선
+홍만지
+홍광란
+홍동기
+홍태섭
+홍금호
+홍희출
+홍동석
+홍윤조
+홍원만
+홍석달
+홍두식
+홍치진
+홍태식
+홍원래
+홍두진
+홍춘근
+홍경진
+홍대수
+홍명순
+홍달석
+홍판희
+홍재수
+홍무웅
+홍피이
+홍재봉
+홍환수
+홍미화
+홍청명
+홍영석
+홍상식
+홍병숙
+홍오성
+홍무봉
+홍상수
+홍복실
+홍준순
+홍만기
+홍상정
+홍부기
+홍종립
+홍성철
+홍윤기
+홍분남
+홍충균
+홍남택
+홍민진
+홍삼기
+홍용석
+홍윤준
+홍종출
+홍상기
+홍말주
+홍수홍
+홍종례
+홍상조
+홍팔호
+홍병찬
+홍광우
+홍상희
+홍영순
+홍영순
+홍윤도
+홍석봉
+홍성순
+홍영곤
+홍병규
+홍석윤
+홍태석
+홍병자
+홍현규
+홍석진
+홍귀자
+홍광필
+홍노점
+홍석환
+홍장재
+홍상복
+홍영임
+홍선균
+홍용복
+홍정희
+홍점이
+홍선모
+홍순조
+홍삼원
+홍선철
+홍선표
+홍재환
+홍상권
+홍동택
+홍선희
+홍구근
+홍정갑
+홍순해
+홍성관
+홍봉연
+홍용조
+홍종동
+홍성근
+홍동호
+홍교섭
+홍세철
+홍성기
+홍사율
+홍영숙
+홍해길
+홍성민
+홍병희
+홍상암
+홍강현
+홍성수
+홍덕병
+홍두덕
+홍만호
+홍성열
+홍정곤
+홍재자
+홍미배
+홍성원
+홍봉호
+홍회현
+홍규석
+홍성윤
+홍옥성
+홍성용
+홍옥철
+홍성태
+홍범수
+홍필상
+홍선학
+홍성태
+홍덕용
+홍점진
+홍순규
+홍성태
+홍상시
+홍우웅
+홍용용
+홍성환
+홍영호
+홍정길
+홍정화
+홍성효
+홍기규
+홍석호
+홍은식
+홍세기
+홍시술
+홍명석
+홍윤권
+홍수덕
+홍태식
+홍명만
+홍성상
+홍순교
+홍세호
+홍광선
+홍재도
+홍순호
+홍화연
+홍남서
+홍정봉
+홍승일
+홍용선
+홍재호
+홍종한
+홍영구
+홍연무
+홍태조
+홍웅록
+홍영권
+홍무돌
+홍옥출
+홍호암
+홍영애
+홍임이
+홍영길
+홍인원
+홍영우
+홍태연
+홍수호
+홍규명
+홍오곤
+홍성선
+홍상도
+홍판환
+홍옥표
+홍분동
+홍용환
+홍용훈
+홍용학
+홍순남
+홍영진
+홍규태
+홍우석
+홍성현
+홍봉오
+홍헌주
+홍운희
+홍점우
+홍수근
+홍재래
+홍원전
+홍혜행
+홍 학
+홍재록
+홍원표
+홍기수
+홍명용
+홍 우
+홍의식
+홍승방
+홍정보
+홍종남
+홍재기
+홍만영
+홍우환
+홍동재
+홍재기
+홍송용
+홍영암
+홍택헌
+홍재남
+홍재이
+홍타재
+홍남덕
+홍재모
+홍해자
+홍희측
+홍승달
+홍정수
+홍상천
+홍원희
+홍근택
+홍정엽
+홍순열
+홍진조
+홍병식
+홍정웅
+홍영춘
+홍병호
+홍도성
+홍정표
+홍점근
+홍호기
+홍갑웅
+홍종윤
+홍동희
+홍호길
+홍경자
+홍주난
+홍전석
+홍진환
+홍용빈
+홍지운
+홍석용
+홍태형
+홍현홍
+홍진곤
+홍상구
+홍세선
+홍재형
+홍진년
+홍재준
+홍주열
+홍동화
+홍진문
+홍병철
+홍기순
+홍영선
+홍진석
+홍순윤
+홍정문
+홍기식
+홍진성
+홍대록
+홍문자
+홍순희
+홍진성
+홍춘곤
+홍정규
+홍갑이
+홍진수
+홍철열
+홍해한
+홍진숙
+홍진욱
+홍영식
+홍정택
+홍하경
+홍진철
+홍영규
+홍소만
+홍병영
+홍진평
+홍재원
+홍민화
+홍병교
+홍창기
+홍용한
+홍종환
+홍인식
+홍창기
+홍차수
+홍경수
+홍청호
+홍채희
+홍영한
+홍옥옥
+홍민도
+홍철기
+홍상석
+홍중기
+홍선수
+홍철기
+홍안현
+홍경도
+홍두봉
+홍철재
+홍연의
+홍삼경
+홍광윤
+홍태기
+홍신숙
+홍태석
+홍경덕
+홍태암
+홍종용
+홍재열
+홍만후
+홍태희
+홍복조
+홍한재
+홍외식
+홍한기
+홍개기
+홍운익
+홍영훈
+홍항길
+홍칠용
+홍영일
+홍용목
+홍해성
+홍형수
+홍성화
+홍용희
+홍현진
+홍을민
+홍영만
+홍태석
+홍현철
+홍동규
+홍원구
+홍석하
+홍현필
+홍필평
+홍정석
+홍수천
+홍황기
+홍효동
+홍정술
+홍분열
+황건오
+황선한
+황대호
+황복현
+황경숙
+황기복
+황점재
+황종록
+황경순
+황영욱
+황택환
+황원돌
+황경술
+황암명
+황태실
+황영근
+황경운
+황명우
+황석호
+황덕환
+황경임
+황백성
+황희원
+황일상
+황경한
+황선덕
+황상조
+황용길
+황광연
+황의완
+황해기
+황말희
+황광용
+황태도
+황춘환
+황영도
+황교일
+황종복
+황진환
+황근수
+황교장
+황경영
+황종교
+황형덕
+황국향
+황종조
+황영임
+황점련
+황규미
+황재천
+황기옥
+황수현
+황규완
+황영복
+황영호
+황경용
+황규전
+황추채
+황영순
+황재선
+황금돌
+황일식
+황병식
+황현갑
+황금성
+황기이
+황현희
+황용용
+황기도
+황수자
+황월자
+황금희
+황기석
+황정원
+황병자
+황삼자
+황기호
+황한화
+황학준
+황옥제
+황길현
+황분용
+황삼이
+황광만
+황남이
+황주조
+황상섭
+황신석
+황달금
+황수근
+황기렬
+황현원
+황대선
+황경종
+황연순
+황종원
+황대철
+황근숙
+황옥수
+황동규
+황덕성
+황시계
+황정태
+황원태
+황동석
+황명수
+황정갑
+황연춘
+황동식
+황영훈
+황오기
+황용철
+황두철
+황귀조
+황병섭
+황우대
+황래성
+황병식
+황희수
+황희수
+황룡기
+황달주
+황명만
+황정수
+황말수
+황숙환
+황희헌
+황태암
+황말순
+황길두
+황효득
+황학희
+황명규
+황성호
+황창암
+황영국
+황명순
+황향술
+황영철
+황시일
+황병구
+황규석
+황철수
+황성호
+황병일
+황삼한
+황태선
+황정희
+황보옥수
+황창봉영
+황경석재
+황훈숙병
+황분주
+황무호
+황우규
+황수록
+황상규
+황천고
+황태진
+황수일
+황상임
+황성용
+황명채
+황의준
+황상표
+황선우
+황용도
+황경금
+황선규
+황화수
+황광주
+황정수
+황선근
+황석희
+황성용
+황진철
+황선도
+황용재
+황수만
+황외양
+황선동
+황호숙
+황원금
+황봉수
+황선두
+황명근
+황태석
+황구환
+황선용
+황덕용
+황윤열
+황문석
+황선우
+황진근
+황준철
+황종규
+황선욱
+황순선
+황인흠
+황윤범
+황선욱
+황영옥
+황은철
+황홍자
+황선웅
+황유순
+황연한
+황재오
+황선출
+황소환
+황무기
+황태진
+황선홍
+황세선
+황영향
+황봉순
+황성규
+황정란
+황인실
+황옥욱
+황성근
+황재양
+황말주
+황용종
+황성태
+황노당
+황창술
+황재원
+황소호
+황동태
+황근길
+황복용
+황수근
+황점행
+황차봉
+황정우
+황수찬
+황태택
+황상열
+황윤단
+황숙자
+황영호
+황성재
+황영규
+황순규
+황현용
+황정용
+황용수
+황순조
+황창각
+황창준
+황영갑
+황시철
+황옥숙
+황선교
+황현기
+황영국
+황종모
+황영관
+황옥구
+황영국
+황용륜
+황정환
+황지상
+황영규
+황원룡
+황길희
+황정인
+황영길
+황진근
+황성운
+황상선
+황영문
+황무환
+황윤준
+황옥정
+황영선
+황태당
+황화종
+황재임
+황영숙
+황홍욱
+황정기
+황금숙
+황영순
+황명헌
+황옥순
+황종영
+황영재
+황재원
+황원기
+황지석
+황영팔
+황영식
+황영길
+황용호
+황영호
+황창달
+황성은
+황삼호
+황영환
+황명호
+황흥철
+황교분
+황오진
+황홍차
+황달규
+황일경
+황옥희
+황수석
+황주식
+황운동
+황용대
+황상자
+황칠동
+황성철
+황용장
+황병세
+황의순
+황명배
+황용학
+황소인
+황병돌
+황삼운
+황원이
+황영희
+황금표
+황병석
+황원준
+황광석
+황정학
+황휘호
+황원학
+황영곤
+황정덕
+황계재
+황윤석
+황용오
+황병봉
+황무열
+황을술
+황천수
+황진환
+황영호
+황응복
+황춘희
+황수수
+황동근
+황의영
+황영선
+황재대
+황성록
+황의출
+황석숙
+황병일
+황종천
+황의훈
+황재한
+황우호
+황창현
+황이철
+황태덕
+황상균
+황규식
+황인덕
+황운출
+황정율
+황영순
+황인봉
+황이숙
+황병연
+황재권
+황인출
+황승학
+황삼희
+황대태
+황일구
+황갑웅
+황한적
+황철기
+황일선
+황규식
+황윤영
+황의환
+황일출
+황소선
+황무범
+황영표
+황재복
+황복용
+황영덕
+황종식
+황재수
+황경진
+황일조
+황세용
+황재용
+황주교
+황부숙
+황무철
+황재의
+황동정
+황 식
+황동수
+황재철
+황임남
+황상한
+황달문
+황재학
+황동순
+황헌술
+황학남
+황재호
+황을랑
+황태금
+황웅현
+황정곤
+황기수
+황종선
+황평택
+황정봉
+황재제
+황태순
+황인중
+황정수
+황우우
+황경국
+황황철
+황정수
+황월달
+황문조
+황종희
+황정환
+황효홍
+황배환
+황희만
+황종구
+황완근
+황해만
+황재현
+황종덕
+황삼석
+황연상
+황인련
+황종석
+황수관
+황태수
+황의용
+황종윤
+황영근
+황창경
+황문술
+황종일
+황규아
+황영언
+황 동
+황종철
+황원동
+황금수
+황정문
+황지출
+황제웅
+황현춘
+황재영
+황진호
+황진기
+황세현
+황길진
+황진환
+황영철
+황효배
+황차우
+황창규
+황태균
+황운구
+황경세
+황창수
+황청성
+황기암
+황규숙
+황창익
+황종식
+황이우
+황대출
+황천규
+황용국
+황병춘
+황영숙
+황철갑
+황영수
+황태선
+황증환
+황철도
+황철우
+황성태
+황종숙
+황청순
+황용용
+황민구
+황순수
+황태금
+황창애
+황호기
+황천구
+황태옥
+황태수
+황춘희
+황원조
+황태원
+황장영
+황송식
+황태태
+황필선
+황영열
+황경도
+황용동
+황필성
+황충환
+황영현
+황희헌
+황필수
+황재자
+황성규
+황윤조
+황한규
+황순권
+황관용
+황교희
+황혁주
+황병출
+황현갑
+황달이
+황현구
+황인선
+황낙수
+황정현
+황효영
+황수호
+황말택
+황영규
+황희자
+황태홍
+황상식
+황재수
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt
new file mode 100644
index 0000000..2aa7549
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Latin.txt
@@ -0,0 +1,7611 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+Aachen, Hans von
+Aalto, Alvar
+Abakanowicz, Magdalena
+Abaquesne, Masséot
+Abbasi, Riza-i
+Abbey, Edwin Austin
+Abbott, Berenice
+Abbott, Lemuel Francis
+A'Becket, Maria
+Abel de Pujol
+Abercrombie, Gertrude
+Abeyta, Tony
+Abildgaard, Nicolai
+Abrahams, Ivor
+Abrahamson, Mark
+Abramowitz, Albert
+Accardi, Carla
+Acconci, Vito
+Achenbach, Andreas
+Achenbach, Oswald
+Achilles Painter, The
+Acord, James
+Adam, Lambert-Sigisbert
+Adam, Robert
+Adams, Ansel
+Adams, Herbert
+Adams, John Ottis
+Adams, John Wolcott
+Adams, Robert
+Adams, Wayman
+Adderson, Walter
+Adeshina, Agbonbiofe
+Adomeit, George
+Adshead, Mary
+Aelst, Pieter Coecke van
+Aelst, Willem van
+Aertsen, Pieter
+Affecter, The
+Agam, Yaacov
+Agar, Eileen
+Agasse, Jacques-Laurent
+Agger, Knud
+Agostino dei Musi
+Agostino di Duccio
+Agostino di Giovanni
+Agostino Veneziano
+Agrasot y Juan, Joaquín
+Airò, Mario
+Aivazovsky, Ivan
+Ajmone, Giuseppe
+Akagawa, Kinji
+Akeley, Carl Ethan
+Akers, Benjamin Paul
+Albani, Francesco
+Albarelli, Jacopo
+Alberghetti I, Giovanni
+Albers, Anni
+Albers, Josef
+Alberti, Cherubino
+Alberti, Giovanni
+Alberti, Leon Baptista
+Albertinelli, Mariotto
+Albright, Ivan
+Albrizio, Conrad
+Alcain Partearroyo, Alfredo
+Alcolea, Carlos García
+Aldegrever, Heinrich
+Alechinsky, Pierre
+Alen, William Van
+Alexander, Francis
+Alexander, John White
+Alexander, William
+Alfano, Carlo
+Alfaro, Andreu
+Algardi, Alessandro
+Ali ibn Muhhamad
+Ali, Mihr
+Alikatuktuk, Thomasie
+Alinari, Fratelli
+Alinari, Giuseppe
+Alken Sr., Samuel
+Alken, Henry Thomas
+Allan, David
+Allan, William
+Allegrain, Gabriel
+Allen, Anne
+Allen, Anne Huntington
+Allen, Douglas
+Allen, Greta
+Allen, Marion Boyd
+Allen, Mary Cecil
+Allen, Terry
+Allingham, Helen
+Allington, Edward
+Allori, Alessandro
+Allori, Cristofano
+Allston, Washington
+Alma-Tadema, Laura
+Alma-Tadema, Sir Lawrence
+Almeida Júnior, José Ferraz de
+Alpern, Rami
+Als, Peder
+Alsloot, Denys van
+Alt, Jakob
+Alt, Otmar
+Altdorfer, Albrecht
+Altichiero
+Altson, Aby
+Alva de la Canal, Ramón
+Alvarez Bravo, Manuel
+Alvarez, Mabel
+Amadeo, Giovanni Antonio
+Aman-Jean, Edmond-François
+Amantea, Nicholas
+Amaral, Antônio Henrique
+Amaral, Tarsila do
+Amasis Painter, The
+Amaury-Duval, Eugène-Emmanuel
+Amberger, Christoph
+Amenoff, Gregory
+Amiconi, Giacomo
+Amittu, Davidialuk Alaska
+Amman, Jost
+Ammanati, Bartolommeo
+An He
+Ancher, Anna
+Ancher, Michael
+Anchi, Kaigetsudo
+Anderegg, Wesley
+Andersen, Mogens
+Anderson, Carlos
+Anderson, Gordon
+Anderson, J.
+Anderson, Ruth A.
+Anderson, Sophie
+Anderson, Stanley
+Andokides
+Andre, Carl
+Andrea da Firenze
+Andrea del Castagno
+Andrea del Sarto
+Andrea di Bartolo
+Andrea, Zoan
+Andreani, Andre
+Andreotti, Libero
+Andrés de Nájera
+Andreson, Carlos
+Andrews, Benny
+Andrews, Sybil
+Andrieu, Pierre
+Andrus, Barbara
+Angel, Abraham
+Angeli, Giuseppe
+Angeli, Heinrich von
+Angelico, Fra
+Angellis, Peter
+Anglada-Camarasa, Hermenegildo
+Anguiano Valadez, Raúl
+Anguier, François
+Anguier, Michel
+Anguissola, Lucia
+Anguissola, Sofonisba
+Anker, Albert
+Annesley, David
+Anquetin, Louis
+Anraadt, Pieter van
+Anselmi, Michelangelo
+Anselmo da Campione
+Anselmo, Giovanni
+Anshutz, Thomas
+Antelami, Benedetto
+Antico
+Antigna, Alexandre
+Antimenes Painter
+Antolínez, José Claudio
+Antonakos, Stephen
+Antonello da Messina
+Antonello de Saliba
+Antonio da Fabriano
+Antreasian, Garo Zareh
+Antropov, Aleksei
+Antúnez, Nemesio
+Anuszkiewicz, Richard
+Aono, Kristine Yuki
+Aparicio, José
+Aponovich, James
+Appel, Karel
+Appian, Adolphe
+Appiani, Andrea
+Applebroog, Ida
+Apt the Elder, Ulrich
+Aragon, Jose
+Arai, Junichi
+Arakawa, Shusaku
+Araldi, Alessandro
+Arbus, Diane
+Archer, James
+Archipenko, Alexander
+Archuleta, Felipe
+Arcimboldo, Giuseppe
+Arden, Roy
+Ardon, Mordecai
+Arellano, Juan de
+Arentsz., Arent
+Argunov, Ivan Petrovich
+Arikha, Avigdor
+Arisman, Marshall
+Armajani, Siah
+Arman
+Armfield, Maxwell
+Armitage, Edward
+Armitage, Kenneth
+Arms, John Taylor
+Armstead, Henry Hugh
+Armstrong, David Maitland
+Armstrong, Ian
+Armstrong, John
+Armstrong, William
+Arnald, George
+Arneson, Robert
+Arnold, Aden
+Arnoldi, Alberto
+Arnolfo di Cambio
+Arnould, Jean
+Arp, Jean
+Arroyo, Eduardo
+Art and Language
+Artaud, William
+Artschwager, Richard
+Arvilland
+Asam, Egid Quirin
+Asam, Kosmas Damian
+Ash, Sam
+Asher, Michael
+Ashevak, Kenojuak
+Ashevak, Tommy
+Ashoona, Kaka
+Ashoona, Kiawak
+Ashoona, Pitseolak
+Ashton, Julian
+Asins Rodriguez, Elena
+Aspertini, Amico
+Aspetti, Tiziano
+Assael, Steven
+Asselyn, Jan
+Assereto, Gioacchino
+Assler, Federico
+Ast, Balthasar van der
+Asteas
+Astruc, Zacharie
+Atchealak, Davie
+Atget, Eugène
+Atkinson, John Augustus
+Atkinson, W.E.
+Atkison, George A.
+Atl, Dr.
+Attavante Degli Attavanti
+Audubon, John James
+Audubon, John Woodhouse
+Auerbach, Frank
+Auerbach-Levy, William
+Auguin, Louis-Augustin
+Auguste, Robert-Joseph
+Ault, George
+Aumonier, James
+Austin, Darrel
+Autio, Lela
+Autio, Rudy
+Aved, Jacques-André-Joseph
+Avedon, Richard
+Avelli, Francesco Xanto
+Avercamp, Hendrick
+Avery, Milton
+Awalt, Elizabeth
+Aylesford, Heneage Finch, Fifth Earl of
+Aylesford, Heneage Finch, Fourth Earl of
+Ay-O
+Ayrton, Michael
+Azaceta, Luis Cruz
+Baburen, Dirck van
+Bacchiacca, Francesco
+Bacciarelli, Marcello
+Bachar, Joseph
+Bacher, Otto Henry
+Bachrodt, Sarah
+Baciccio, Il
+Backer, Jacob Adriaensz.
+Backhuysen, Ludolf
+Bacon, Francis
+Bacon, Henry
+Bacon, John Henry F.
+Bacon, Peggy
+Bacon, Sir Nathaniel
+Bada Shanren
+Badalocchio, Sisto
+Badger, Joseph
+Baechler, Donald
+Baeder, John
+Baen, Jan de
+Baer, George
+Bagg, Henry Howard
+Baglione, Giovanni
+Bagnoli, Marco
+Baiitsu, Yamamoto
+Bailey, Roger
+Bailey, William
+Baillairgé, François
+Bailly, David
+Baizerman, Saul
+Baker, William Bliss
+Bakst, Leon
+Baldessari, John
+Baldovinetti, Alessio
+Baldridge, Cyrus LeRoy
+Baldung Grien, Hans
+Baldwin, Douglas
+Balen, Hendrick van
+Balestra, Antonio
+Ball, Alice Worthington
+Ball, Thomas
+Balla, Giacomo
+Balling, Ole Peter Hansen
+Ballotta, Pete
+Balmes, José
+Balson, Ralph
+Balthus
+Baltimore Painter, The
+Balzac, Alain
+Balzac, Edme-Pierre
+Bama, James
+Bambaia
+Bandeira, Antônio
+Bandinelli, Baccio
+Bandini, Giovanni
+Banks, Mel
+Bannerman, Frances M. Jones
+Bannister, Edward M.
+Bapst, Evrard
+Baptista, Marciano
+Barabás, Miklós
+Barak, William
+Baranek, Frida
+Baranoff-Rossine, Wladimir
+Barbe
+Barberi, Giuseppe
+Barbet, Jean
+Barbour, Carl
+Barchus, Eliza Rosanna
+Bard, James
+Bard, John
+Barenger, James
+Bargue, Charles
+Barisani, Renato
+Barisano da Trani
+Barker of Bath, Thomas
+Barker, Albert Winslow
+Barker, Clive
+Barker, Margaret
+Barker, Wright
+Barlach, Ernst
+Barlow, Francis
+Barna da Siena
+Barnard, Rev. William Henry
+Barnes, Ernie
+Barnet, Will
+Barney, Matthew
+Barnsley, J.M.
+Barocci, Federico
+Barradas, Rafael
+Barraud, Henry
+Barraud, William
+Barret Jr., George
+Barret Sr., George
+Barrett, Bill
+Barrias, Louis-Ernest
+Barrios, Gracia
+Barron, Hugh
+Barron, Ron
+Barrow, Joseph Charles
+Barry, Anne Meredith
+Barry, James
+Barry, William Gerard
+Barsotti, Hércules
+Barthel, Melchiorre
+Bartholdi, Frédéric-Auguste
+Bartholome
+Bartle, Sara Norwood
+Bartlett, Bo
+Bartlett, Jennifer
+Bartolini, Lorenzo
+Bartolo di Fredi
+Bartolomeo da Brescia
+Bartolomeo di Giovanni
+Bartolomeo Veneto
+Bartolommeo, Fra
+Bartolozzi, Francesco
+Bary, Hendrik
+Barye, Antoine-Louis
+Basaiti, Marco
+Basaldella, Mirko
+Basan, Pierre François
+Baschenis, Evaristo
+Baselitz, Georg
+Bashkirtseff, Maria
+Basire, James
+Baskin, Leonard
+Basquiat, Jean-Michel
+Bassano, Francesco
+Bassano, Jacopo
+Bassano, Leandro
+Bassen, Bartholomeus van
+Bastiani, Lazzaro
+Bastianini, Giovanni
+Bastien-Lepage, Jules
+Bateman 1842-2008, Robert
+Bateman, James
+Bateman, Robert
+Bates, David
+Bates, Harry
+Bates, Maxwell
+Batoni, Pompeo
+Baudouin, Pierre-Antoine
+Baudry, Paul
+Baugin, Lubin
+Baum, Charles
+Bauman, Leila T.
+Baumann, Gustave
+Baumann, Karl
+Baumeister, Willi
+Baumgarten, Lothar
+Baumgartner, Peter
+Bawden, Edward
+Baxter, George
+Baxter, Thomas Tennant
+Bayeu y Subías, Francisco
+Bayeu, Ramon
+Bazicaluva, Ercole
+Bazille, Frédéric
+Baziotes, William
+Bazzaro, Ernesto
+Beach, Thomas
+Beal, Gifford
+Beal, Jack
+Beale, Mary
+Beall-Smith, Lawrence
+Beals, Jesse Tarbox
+Beam, Carl
+Beam, Mark
+Bean, Caroline Van Hook
+Beard, Adelia Belle
+Beard, Richard
+Beard, William Holbrook
+Bearden, Romare
+Beardsley Limner, The
+Beardsley, Aubrey
+Beardy, Jackson
+Beare, George
+Beasley, Bruce
+Beato, Felice A.
+Beatty, J.W.
+Beaumont, Sir George Howland
+Beauneveu, André
+Beaux, Cecilia
+Beccafumi, Domenico
+Becher, Bernhard
+Becher, Hilla
+Bechtel, Merlin
+Bechtle, Robert
+Beck, Leonhard
+Becker, Ferdinand
+Becker, Fred
+Beckett, Clarice
+Beckett, Francis A.
+Beck-Friedman, Tova
+Beckmann, Max
+Beckwith, James Carroll
+Bedford, Francis
+Bedia, José
+Bedwash, Richard
+Beechey, Sir William
+Beem, Olive
+Beerbohm, Sir Max
+Beers, Julie Hart
+Beerstraten, Jan Abrahamsz.
+Beert the Elder, Osias
+Bega, Cornelis
+Begay, Harrison
+Begeyn, Abraham
+Beham, Barthel
+Beham, Hans Sebald
+Behles, Edmund
+Behnes, William
+Behnke, Leigh
+Belbello da Pavia
+Bell, Cecil C.
+Bell, Charles
+Bell, Edward A.
+Bell, George
+Bell, Harriet
+Bell, John Zephaniah
+Bell, Kevin
+Bell, Larry
+Bell, Peter
+Bell, Trevor
+Bell, Vanessa
+Bellangé, Hippolyte
+Bellange, Jacques
+Bellano, Bartolomeo
+Belle, Alexis Simon
+Bellechose, Henri
+Bellegambe, Jean
+Bellette, Jean
+Belli, Valerio
+Bellingham-Smith, Elinor
+Bellini, Gentile
+Bellini, Giovanni
+Bellini, Jacopo
+Bellmer, Hans
+Belloguet, A.
+Bellotto, Bernardo
+Bellows, Albert Fitch
+Bellows, George Wesley
+Bell-Smith, F.M.
+Bellucci, Antonio
+Benaglio, Francesco
+Benazech, Peter Paul
+Benbridge, Henry
+Bendz, Wilhelm
+Bendzsa, Sylvia
+Benedetto da Maiano
+Benedetto da Rovezzano
+Benglis, Lynda
+Benn, Ben
+Bennett, John
+Bennett, Rainey
+Bennett, William James
+Benney, Robert
+Benois, Aleksandr
+Benois, Nadia
+Benoist, Marie-Guillemine
+Benson, Ambrosius
+Benson, Frank Weston
+Benson, Leslie Langille
+Bentham, Douglas Wayne
+Benton, Fletcher
+Benton, Thomas Hart
+Benvenuto di Giovanni
+Benziger, August
+Benzoni, Giovanni Maria
+Béraud, Jean
+Berchem, Claes
+Berchem, Nicolaes
+Berckheyde, Gerrit Adriaensz.
+Berckheyde, Job
+Berdann, Elizabeth
+Berg, Adrian
+Berger, Jacques
+Berghash, Mark
+Berghe, Christoffel van den
+Bergmüller, Johann Georg
+Bergner, Yosl
+Bergognone
+Berkeley, Rev. C.J.R.
+Berkman, Christine
+Berlant, Tony
+Berlin Painter, The
+Berlinghieri, Bonaventura
+Berman, Eugene
+Bermejo, Bartolomé
+Bernard, Emile
+Bernardi, Giovanni
+Bernat, Martin
+Berninghaus, Oscar Edmund
+Bernini, Gianlorenzo
+Bernini, Pietro
+Bernstein, Theresa Ferber
+Béroud, Louis
+Berruguete, Alonso
+Berruguete, Pedro
+Berry, David
+Bershad, Helen
+Bertin, Édouard
+Bertoldo di Giovanni
+Bertrand, Ray
+Bertrand, Vincent
+Bertucci, Giovanni Battista
+Besnard, Albert
+Best Maugard, Adolfo
+Bettelheim, Jolan Gross
+Bettera, Bartolomeo
+Bettes, John
+Betts, Louis
+Beuckelaer, Joachim
+Beug, Lorne
+Beuys, Joseph
+Bevan, Robert
+Bevan, Tony
+Beyer, Jan de
+Beyeren, Abraham Hendrickz. van
+Biagio d'Antonio da Firenze
+Bianchi, Domenico
+Biard, Pierre
+Bibiena, Ferdinando Galli
+Bibiena, Francesco Galli
+Bibiena, Giuseppe Galli
+Bicknell, Frank
+Biddle, George
+Biduino
+Biederman, Charles
+Biegas, Boleslas
+Biennais, Martin-Guillaume
+Bierstadt, Albert
+Bigarelli, Guido
+Biggers, John
+Biggerstaff, Myra
+Bigot, Trophime
+Bigum, Martin
+Bijlert, Jan van
+Bilinska, Anna
+Bilivert, Giovanni
+Bille, Ejler
+Binck, Jacob
+Bingham, George Caleb
+Binnie, Paul
+Birch, Charles Bell
+Birch, Thomas
+Birch, William Russell
+Birley, Sir Oswald Hornby Joseph
+Birnbaum, Dara
+Birolli, Renato
+Bischoff, Elmer
+Bischoff, Franz
+Bishop, Isabel
+Bison, Giuseppe Bernardino
+Bisschop, Cornelis
+Bissier, Julius
+Bissière, Roger
+Bissolo, Pier Francesco
+Bistolfi, Leonardo
+Bitner, Rhona
+Blaas, Eugene de
+Black, Helene
+Black, Olive Parker
+Blackadder, Elizabeth
+Blackburn, Ed
+Blackburn, Joseph
+Blackman, Charles
+Blackwell, Tom
+Blackwood, David
+Bladen, Ronald
+Blagg, Dennis
+Blair-Leighton, Edmund
+Blais, Normand
+Blake, Jim
+Blake, Peter
+Blake, William
+Blakelock, Marian
+Blakelock, Ralph Albert
+Blamey, Norman
+Blampied, Edmund
+Blanchard, Jacques
+Blanchard, María
+Blanche, Jacques-Emile
+Blanchet, Louis-Gabriel
+Bland, Beatrice
+Blarenberghe, Louis Nicolas van
+Blashfield, Edwin Howland
+Blauvelt, Charles F.
+Blechen, Carl
+Bleckner, Ross
+Blery, Eugene
+Bliss, Douglas Percy
+Bloch, Albert
+Bloch, Lucienne
+Bloch, Martin
+Block, Benjamin
+Bloemaert, Abraham
+Bloemen, Jan Frans van
+Blondel, Merry-Joseph
+Bloom, Barbara
+Blow, Sandra
+Blue Eagle, Acee
+Bluemner, Oscar
+Bluhm, Norman
+Bluhm, Oscar
+Blum, Robert Frederick
+Blume, Peter
+Blumenschein, Ernest Leonard
+Blythe, David Gilmour
+Boccaccino, Boccaccio
+Boccioni, Umberto
+Bochner, Mel
+Böcklin, Arnold
+Bockstorffer, Christoffel
+Bodini, Floriano
+Bodmer, Karl
+Boeckhorst, Johann
+Boehm, Sir Joseph Edgar
+Boehme, Karl
+Boel, Pieter
+Boetti, Alighiero e
+Boggs, Frank M.
+Boghossian, Skunder
+Bogle, John
+Bohl, Walter E.
+Bohrod, Aaron
+Boilly, Louis-Léopold
+Boisseau, Alfred
+Boisselier, Félix
+Boissieu, Jean-Jacques de
+Bol, Ferdinand
+Bol, Hans
+Boldini, Giovanni
+Bolduque, Pedro de
+Bolotowsky, Ilya
+Boltanski, Christian
+Boltraffio, Giovanni Antonio
+Bomberg, David
+Bon, Bartolomeo
+Bon, Giovanni
+Bonanno da Pisa
+Bonasone, Giulio di Antonio
+Bonazza, Antonio
+Boncinelli, Evaristo
+Bond, Charles V.
+Bond, Marion
+Bone, Henry
+Bone, Sir Muirhead
+Bone, Stephen
+Bonheur, Auguste
+Bonheur, Rosa
+Bonington, Richard Parkes
+Bonino da Campione
+Bonnard, Pierre
+Bonnat, Léon
+Bonnaud, Pierre
+Bonnefond, Jean-Claude
+Bonnell, William
+Bonner, Jonathan
+Bonnet, Louis-Marin
+Bonsignori, Francesco
+Bontecou, Lee
+Bonvin, François
+Booth, Cameron
+Borcht, Hendrik van der
+Borcht, Pieter Van Der
+Bordone, Paris
+Bordoni, Francesco
+Borduas, Paul-Émile
+Boread Painter, The
+Borein, Edward
+Bores Lopez, Francisco
+Borg, Carl Oscar
+Borges, Pedro Alexandrino
+Borget, Auguste
+Borgianni, Orazio
+Borglum, Solon H.
+Borgoña, Juan de
+Borofsky, Jonathan
+Borovikovskii, Vladimir Lukich
+Borrassá, Luís
+Borregaard, Eduard
+Borro, Luigi
+Borromini, Francesco
+Bosboom, Johannes
+Bosch, Hieronymus
+Boscoli, Andrea
+Boshier, Derek
+Bosio, François-Joseph
+Boss, Homer
+Bosschaert the Elder, Ambrosius
+Bossche, Aert van den
+Bosse, Abraham
+Botero, Fernando
+Both, Andries
+Both, Jan Dirksz
+Botke, Jessie Arms
+Botticelli, Sandro
+Botticini, Francesco
+Bouchardon, Edmé
+Bouché, Louis
+Boucher, François
+Boudewyns, Adriaen Frans
+Boudin, Eugène
+Bough, Samuel
+Boughton, George Henry
+Bouguereau, Adolphe William
+Bouguereau, Elizabeth Gardner
+Boulanger, Gustave
+Boulle, André-Charles
+Boullée, Étienne-Louis
+Boulogne, Valentin de
+Bourdelle, Emile Antoine
+Bourdon, Sébastien
+Bourgeois, Louise
+Bourke-White, Margaret
+Bourne, James
+Boursse, Esaias
+Boussard, Dana
+Boutet de Monvel, Louis-Maurice
+Boutibonne, Charles Edward
+Bouts the Elder, Dieric
+Bouts the Younger, Dieric
+Bouts, Aelbrecht
+Bouvard, Antoine
+Bouvier, Laurent Joseph Daniel
+Bowden, Harry
+Bowden, Paul
+Bowdoin, Harriette
+Bowen, Ashley
+Bowler, Henry Alexander
+Bowling, Frank
+Bowling, Tom
+Bowman, Roger
+Boxall, Sir William
+Boyce, George Price
+Boyd Jr., Arthur
+Boyd Sr., Arthur
+Boyd, Emma Minnie
+Boyer, Bob
+Boyle, Eleanor Vere
+Boyle, Mark
+Boyne, John
+Boys, Thomas Shotter
+Boziot, François-Joseph
+Brabazon, Hercules Brabazon
+Braccesco, Carlo di
+Bracci, Pietro
+Brack, John
+Brackman, Robert
+Bracquemond, Félix
+Bracquemond, Marie
+Bradford, William
+Bradley, John
+Bradley, Martin
+Bradshaw, Dove
+Bradshaw, J.W.
+Brady, Carolyn
+Brady, Mathew
+Braekeleer, Henri De
+Brailes, William de
+Brakhage, Stan
+Bramante, Donato
+Bramantino
+Bramer, Leonaert
+Bramley, Frank
+Brancusi, Constantin
+Brandani, Federico
+Brandard, Robert
+Brandi, Giacinto
+Brandt, Bill
+Brangwyn, Sir Frank William
+Brants, Wally
+Braque, Georges
+Brascassat, Jacques-Raymond
+Brassaï
+Bratby, John
+Braun, Maurice
+Bravo, Cecco
+Bravo, Claudio
+Bravo, Lola Alvarez
+Bray, Alan
+Bray, Jan de
+Brébiette, Pierre
+Brecht, George
+Breck, John Leslie
+Breckenridge, Hugh Henry
+Breda, Carl Fredrik von
+Bredin, Rae Sloan
+Breenbergh, Bartholomeus
+Bregno, Andrea
+Bregno, Antonio
+Brekelenkam, Quirijn van
+Brenet, Nicolas-Guy
+Bresdin, Rodolphe
+Breton, André
+Breton, Jules
+Brett, John
+Breu the Elder, Jörg
+Breu the Younger, Jörg
+Brewster Jr., John
+Brewster, Anna Richards
+Brewtnall, Edward Frederick
+Bricher, Alfred Thompson
+Bridges, Fidelia
+Bridges, John
+Bridgewood, J.C.
+Brigden, F.H.
+Briggs, Henry Perronet
+Bright, Henry
+Bril, Paul
+Brion, Gustave
+Briosco, Benedetto
+Briscoe, Arthur
+Bristol, John Bunyan
+Briullov, Karl
+Broc, Jean
+Brock, Sir Thomas
+Brockhurst, Gerald Leslie
+Brodsky, Alexander
+Broederlam, Melchior
+Broer, Roger
+Broggini, Luigi
+Broghammer, Joseph
+Brogi, Giacomo
+Brompton, Richard
+Bronzino, Agnolo
+Brooke, William Henry
+Brooker, Bertram
+Brooking, Charles
+Brooks, Cora Smalley
+Brooks, Erica
+Brooks, Henry Jamyn
+Brooks, James
+Brooks, Nicholas Alden
+Brosamer, Hans
+Brouet, Auguste
+Brough, Robert
+Brouwer, Adriaen
+Brown, Bob
+Brown, Christopher
+Brown, Deborah
+Brown, Douglas
+Brown, Ford Madox
+Brown, Frederick James
+Brown, George Loring
+Brown, J. Appleton
+Brown, Joan
+Brown, John George
+Brown, John-Lewis
+Brown, Lucy Madox
+Brown, Mae Bennett
+Brown, Mather
+Brown, Mike
+Brown, Roger
+Brown, W.H.
+Brown, William Mason
+Browne, Archibald
+Browne, Belmore
+Browne, Byron
+Browne, Hablot Knight
+Browne, Henriette
+Browne, Margaret Fitzhugh
+Browne, Matilda
+Browne, Syd
+Brownell, Franklin
+Browning, Colleen
+Browning, Robert Barrett
+Brownscombe, Jennie Augusta
+Bruce, Patrick Henry
+Bruce, William Blair
+Bruch, Klaus von
+Bruegel the Elder, Jan
+Bruegel the Elder, Pieter
+Bruegel the Younger, Jan
+Bruegel the Younger, Pieter
+Bruestle, George M.
+Brunelleschi, Filippo
+Brus, Günter
+Brusasorci
+Brush, George deForest
+Bruya, Marilyn
+Bruyn the Elder, Barthel
+Bruyn the Younger, Bartel
+Bryans, Lina
+Bryant, Charles
+Brygos Painter, The
+Brymner, William
+Brzezinski, Emilie Benes
+Bucci Painter, The
+Buchheit, Manfred
+Buchser, Frank
+Buck, John
+Buckley, James
+Buckley, Stephen
+Bucklow, Christopher
+Budington, Jonathan
+Buffet, Bernard
+Bugiardini, Giuliano
+Buhler, Robert
+Buhot, Félix-Hilaire
+Buland, Eugène
+Bulfinch, Charles
+Buller, Cecil Tremayne
+Bunbury, Charles
+Bunbury, Henry William
+Bunce, Kate Elizabeth
+Bunce, Louis
+Bundy, Edgar
+Bundy, Horace
+Bunker, Dennis Miller
+Bunn, Ken
+Bunny, Rupert
+Bunrin, Shiokawa
+Bunrô
+Bunse, Donald
+Burbank, Elbridge Ayer
+Burch, Hendrick van der
+Burchard, Pablo
+Burchartz, Max
+Burchfield, Charles
+Burck, Jacob
+Burden, Chris
+Buren, Daniel
+Burgess, Joseph E.
+Burgess, Lowry
+Burgess, Ruth Payne
+Burgkmair the Elder, Hans
+Burn, Henry
+Burn, Ian
+Burnand, Eugène
+Burne-Jones, Edward
+Burnell, Benjamin
+Burnet, James
+Burnet, John
+Burney, Edward Francis
+Burpee, William Partridge
+Burr, George Elbert
+Burri, Alberto
+Burrill, Edward
+Burroughs, Bryson
+Burroughs, Margaret
+Burrowes, Thomas
+Burton, Frederic William
+Burton, Judith
+Burton, Scott
+Burton, William Shakespeare
+Bush, Charles
+Bush, Jack
+Bushnell, John
+Bussola, Dionigi
+Buster, Kendall
+Buswell, Richard S.
+Butcher, Enid
+Butinone, Bernardino Jacopi
+Butler, Elizabeth
+Butler, James
+Butler, Mary
+Butler, Reg
+Butler, Samuel
+Butler, Theodore
+Butt, Gail
+Butterfield, Deborah
+Buttersworth, James E.
+Buttersworth, Thomas
+Butts, Freeman
+Buvelot, Louis
+Buytewech, Willem
+Byars, James Lee
+Bygrave, William
+Bywaters, Jerry
+Cabanel, Alexandre
+Cabot, Hugh
+Cabrera, Rosario
+Caccini, Giovanni
+Cadmus, Paul
+Cadwell, Mike
+Caffa, Melchiore
+Caffieri, Jean-Jacques
+Cagnacci, Guido
+Cahill, William Vincent
+Cahn, Miriam
+Cai Dizhi
+Cai Liang
+Caillebotte, Gustave
+Cairo, Francesco del
+Cajés, Eugenio
+Calame, Alexandre
+Calandrucci, Giacinto
+Calcagno, Lawrence
+Calcar, Johan Stephen von
+Calder, Alexander
+Calderon, William Frank
+Calixto de Jesus, Benedito
+Call I, Jan van
+Call, H.
+Callahan, Harry
+Callcott, Sir Augustus Wall
+Callery, Mary
+Callet, Antoine François
+Callot, Jacques
+Callow, William
+Calò, Aldo
+Calraet, Abraham van
+Cals, Adolphe-Felix
+Calthrop, Claude
+Calvaert, Denys
+Calvert, Charles
+Calvert, Edward
+Calzolari, Pier Paolo
+Cambiaso, Luca
+Camelio
+Camelote
+Cameron, Eric
+Cameron, James
+Cameron, John
+Cameron, Julia Margaret
+Cameron, Sir David
+Cammillieri, Nicholas S.
+Cammillieri, Nicolas
+Camp, Jeffery
+Campagna, Girolamo
+Campagnola, Domenico
+Campagnola, Giulio
+Campaña, Pedro de
+Campbell, Isabella Frowe
+Campbell, James
+Campbell, Jim
+Campen, Jacob van
+Campendonk, Heinrich
+Camphuysen, Govert Dircksz
+Campi, Giulio
+Campi, Vincenzo
+Campigli, Massimo
+Campin, Robert
+Canaletto
+Candid, Pieter
+Caneja Betegon, Juan
+Cannon, T.C.
+Cano Manilla, Ramón
+Cano, Alonso
+Canogar, Rafael
+Canova, Antonio
+Cantagallina, Remigio
+Cantarini, Simone
+Cantatore, Domenico
+Canuti, Domenico Maria
+Capa, Robert
+Capanna, Puccio
+Caple, Spencer
+Caponigro, Paul
+Caporali, Bartolommeo
+Cappelle, Jan van de
+Cappello, Carmelo
+Capps, Kenneth
+Capriolo, Domenico
+Carabin, Rupert
+Caracciolo, Giovanni Battista
+Caradosso
+Caraffe, Armand-Charles
+Caraglio, Gian Jacopo
+Caravaggio
+Caravaggio, Polidoro da
+Carbone, Giovanni Bernado
+Carducci, Bartolommeo
+Carducci, Vincenzo
+Cariani, Giovanni
+Carles, Arthur B.
+Carleton, Anne
+Carlevaris, Luca
+Carline, George
+Carline, Richard
+Carlisle, George Howard, Ninth Earl of
+Carloni, Carlo
+Carlsen, Emil
+Carlson, John Fabian
+Carlson, Ken
+Carlu, Jean
+Carmichael, Franklin
+Carmontelle, Louis de
+Carnevale, Fra
+Carnicero, Antonio
+Caro, Sir Anthony
+Carolus-Duran
+Caron, Antoine
+Caron, Paul
+Carpaccio, Vittore
+Carpeaux, Jean-Baptiste
+Carpenter Painter, The
+Carpenter, Ed
+Carpenter, Francis Bicknell
+Carpioni, Giulio
+Carr, Emily
+Carr, Samuel S.
+Carrà, Carlo
+Carracci, Agostino
+Carracci, Annibale
+Carracci, Lodovico
+Carreño de Miranda, Juan
+Carreño, Mario
+Carriera, Rosalba
+Carrier-Belleuse, Albert-Ernest
+Carrière, Eugène
+Carrington, Dora
+Carrington, Leonora
+Cars, Laurent
+Carse, J.H.
+Carten, Virginia
+Carter, Hugh
+Carter, Keith
+Carter, Lee
+Cartier-Bresson, Henri
+Cartwright, Isabel Branson
+Carvalho, Flávio de
+Carwitham, Thomas
+Casanova, Giovanni
+Casas, Juan Vila
+Cascella, Andrea
+Casilear, John William
+Cassandre
+Cassara, Frank
+Cassatt, Mary
+Casselli Jr., Henry C.
+Cassidy, Shaun
+Cassinari, Bruno
+Casson, A.J.
+Castagneto, João Batista
+Castagnola, Gabriele
+Castellani, Enrico
+Castellanos, Julio
+Castelli, Alfio
+Castello, Bernardo
+Castello, Valerio
+Castellón, Federico
+Castiglione, Giovanni Benedetto
+Castiglione, Giuseppe
+Castillo y Saavedra, Antonio
+Castillo, José del
+Castle, James
+Castle, Wendell
+Catesby, Mark
+Catlett, Elizabeth
+Catlin, George
+Cats, Jacob
+Cattaneo, Danese
+Cattelan, Maurizio
+Caulfield, Patrick
+Cavael, Rolf
+Cavalcanti, Emiliano Di
+Cavallaro, Cosimo
+Cavallini, Pietro
+Cavallino, Bernardo
+Cavedone, Giacomo
+Cayot, Claude-Augustin
+Cazin, Jean-Charles
+Cazin, Marie
+Cecioni, Adriano
+Cederström, Gustaf
+Cellini, Benvenuto
+Celmins, Vija
+Ceracchi, Giuseppe
+Cerquozzi, Michelangelo
+César
+Cesare da Sesto
+Cesari, Giuseppe
+Cesark, Mark
+Cézanne, Paul
+Chabot, Lucille
+Chadwick, Lynn
+Chadwick, William
+Chagall, Marc
+Chahine, Edgar
+Challener, F.S.
+Chalon, Alfred
+Chalon, Henry Bernard
+Chamberlain, John
+Chamberlain, Samuel
+Chambers, Thomas
+Champaigne, Jean-Baptiste de
+Champaigne, Philippe de
+Chan Hongshou
+Chandler, Joseph Goodhue
+Chandler, Winthrop
+Chandor, Douglas
+Chang Chi-shu
+Chang Dai-chien
+Chang Jin
+Chang Shuhong
+Chang-bae, Hwang
+Chang-sop, Chung
+Chantrey, Sir Francis Legatt
+Chao Shao'ang
+Chaperon, Nicolas
+Chapin, James
+Chapin, Lucy Grosvenor
+Chaplin, Mary Millicent
+Chapman, Conrad Wise
+Chapman, John Gadsby
+Chappel, Alonzo
+Chapu, Henri Michel Antoine
+Chardin, Jean-Baptiste-Siméon
+Charles, James
+Charles, Michael Ray
+Charlesworth, Sarah
+Charlet, Nicolas-Toussaint
+Charlier, Jacques
+Charlton, Alan
+Charton de Treville, Ernesto
+Chase, Adelaide Cole
+Chase, Richard
+Chase, William Merritt
+Chassériau, Théodore
+Chatelain, Jean Baptiste Claude
+Chatham, Russell
+Chatterton, Clarence K.
+Chaudet, Antoine-Denis
+Chauvin, Pierre-Athanase
+Chávez Morado, José
+Chavez, Edward Arcenio
+Cheffetz, Asa
+Chen Banding
+Chen Chi
+Chen Danqing
+Chen Fushan
+Chen Hengque
+Chen Kuan
+Chen Ping
+Chen Qiucao
+Chen Rong
+Chen Tiegeng
+Chen Yanning
+Chen Yanqiao
+Chen Yifei
+Chen Yusheng
+Chen Zhifo
+Chen Ziyi
+Cheng Conglin
+Cheng Shifa
+Cheng Zhang
+Cherchi, Sandro
+Chereshnovsky, Mykhailo
+Chéret, Jules
+Cherico, Francesco Antonio del
+Chevalier, Nicolas
+Chia, Sandro
+Chiari, Giuseppi
+Chicago Painter, The
+Chicago, Judy
+Chifflart, François-Nicolas
+Chihuly, Dale
+Chi'i Pai-shih
+Childe, James Warren
+Chillida, Eduardo
+Chimenti, Jacopo
+Chimera Painter, The
+Chin, Mel
+Chinard, Joseph
+Chinnery, George
+Chipman
+Chirino López, Martín
+Chobunsai Eishi
+Chodowiecki, Daniel Nikolaus
+Choensai Eishin
+Choi Sokhwan
+Choki, Eishosai
+Chokosai Eisho
+Chong-yung, Kim
+Chou, Shen
+Christansen, Hans
+Christenberry, William
+Christensen, C.C.A.
+Christensen, Dan
+Christiansen, Rasmus
+Christie, Robert Duncan
+Christinek, Carl-Ludwig
+Christ-Janer, Albert William
+Christo
+Christophe, Ernest
+Christus, Petrus
+Christy, John
+Chung Sook, Kim
+Church, Frederic Edwin
+Church, Frederick Stuart
+Church, Michael
+Churchill, Winston Spencer
+Churchyard, Thomas
+Cienfuegos Browne, Gonzalo
+Cigoli, Lodovico
+Cimabue
+Ciminaghi, Virginio
+Cincinato, Francesco Romulo
+Cioli, Valerio
+Cipriani, Giovanni Battista
+Cirino, Antonio
+Cisneros, Domingo
+Citron, Minna Wright
+Ciurlionis, Mikalojus
+Civerchio, Vincenzo
+Civitale, Matteo
+Civitico, Bruno
+Claeissens I, Pieter
+Claesz, Pieter
+Clague, Richard
+Clairin, Georges
+Clairmont, Corwin
+Clapp, William Henry
+Clará, José
+Clark, Alson Skinner
+Clark, Claude
+Clark, Floyd
+Clark, Joseph
+Clark, Kate Freeman
+Clark, Larry
+Clark, Paraskeva
+Clark, Thomas
+Clark, Tim
+Clarke Hall, Lady Edna
+Clarke, Geoffrey
+Clarke, John Clem
+Claude Lorrain
+Claudel, Camille
+Claudet, Antoine
+Clausell, Joaquín
+Clausen, C.
+Clausen, Franciska
+Clausen, Sir George
+Clavé, Antonio
+Claxton, Marshall
+Clay, Alyson
+Clayes, Gertrude des
+Cleaver, Alice
+Clemens, J.F.
+Clemente da Urbino
+Clemente, Francesco
+Clerck, Hendrik de
+Clésinger, Jean Baptiste
+Cleve, Joos van
+Cleyn, Franz
+Clime, Winfield Scott
+Climo, Lindee
+Clint, George
+Clodion
+Close, Chuck
+Close, May Lewis
+Cloudman, John Greenleaf
+Clouet the Younger, Jean
+Clouet, François
+Clough, George Lafayette
+Clough, Prunella
+Clovio, Giorgio Giulio
+Coates, Edmund
+Coates, George
+Coburn, Frank
+Cochereau, Léon-Matthieu
+Cochin the Younger, Charles-Nicolas
+Cochran, Malcolm
+Cock, Hieronymous
+Cock, Matthys
+Codazzi, Viviano
+Codde, Pieter
+Codman, Charles
+Coe, Elias V.
+Coe, Ethel Louise
+Coe, Sue
+Coello, Claudio
+Cogniet, Léon
+Cohen, Becky
+Cohen, Bernard
+Cohoon, Hannah Harrison
+Coignet, Jules
+Coker, Peter
+Cola Dell'Amatrice
+Coldstream, Sir William
+Cole, George Vicat
+Cole, J. Foxcroft
+Cole, Thomas
+Cole, Timothy
+Cole, Willie
+Coleman, Charles Caryl
+Coleman, Michael
+Coleopy, Steve
+Colescott, Robert
+Coll, Joseph Clement
+Colla, Ettore
+Collaert, Adriaen
+Collantes, Francisco
+Collazo, Raphael
+Collet, John
+Collier, Edwaert
+Collier, John
+Collings, Samuel
+Collins, Cecil
+Collins, Charles
+Collins, Charles Allston
+Collins, William
+Collinson, James
+Collot, Marie-Anne
+Colman 1780-2008, Samuel
+Colman 1832-2008, Samuel
+Colombe, Michel
+Colquhoun, Alexander
+Colquhoun, Robert
+Colton, William Robert
+Colville, Alex
+Colvin Andrade, Marta
+Coman, Charlotte Buell
+Comfort, Charles F.
+Conant Limner, The
+Conca, Sebastiano
+Conde, Eduardo
+Conder, Charles
+Condo, George
+Cone, Marvin
+Conegliano, Giambattista Cima da
+Congdon, William
+Coninxloo, Gillis van
+Connah, John
+Connard, Philip
+Connell, Stephen
+Connell, Sybil
+Connelly, Brian
+Conrad, Cyril H.
+Conroy, Stephen
+Consagra, Pietro
+Constable, John
+Constable, Lionel Bicknell
+Constant, Benjamin
+Constantin, Dimitrios
+Cook of Plymouth, William
+Cook, Ethel
+Cook, Gladys Emerson
+Cook, Howard
+Cook, Lia
+Cooke, Barrie
+Cooke, Edward William
+Cooke, George
+Cooke, L.M.
+Cooper Jr., Richard
+Cooper, Abraham
+Cooper, Alfred Egerton
+Cooper, Colin Campbell
+Cooper, Emma Lampert
+Cooper, George
+Cooper, Samuel
+Cooper, Thomas Sidney
+Cooper, Washington Bogart
+Cooper, William
+Coornhert, Dirck Volkertszoon
+Cope, George
+Copley, John Singleton
+Coppedge, Fern Isabel
+Coppo di Marcovaldo
+Coques, Gonzales
+Corbet, Matthew Ridley
+Corbett, Edward
+Corbino, Jon
+Corbould, Henry
+Corbould, Richard
+Corbusier, Le
+Cordier, Charles Henri Joseph
+Cordier, Nicolas
+Corenzio, Belisario
+Corinth, Lovis
+Corinthianizing Painter, The
+Coriolano, Bartolomeo
+Cornè, Michele Felice
+Corneille de Lyon
+Corneille, Jean-Baptiste
+Cornelius, Peter von
+Cornell, Joseph
+Cornell, Thomas
+Cornoyer, Paul
+Corot, Jean-Baptiste-Camille
+Corradini, Antonio
+Correggio
+Cortes, Edouard
+Corvi, Domenico
+Cosgrove, Stanley
+Cossa, Francesco del
+Cossiers, Jan
+Cossio, Pancho
+Costa, Artur Timóteo da
+Costa, Lorenzo
+Costa, Olga
+Costanzi, Placido
+Costigan, John E.
+Cosway, Maria
+Cosway, Richard
+Cot, Pierre-Auguste
+Coter, Colijn de
+Cotes, Francis
+Cotman, John Joseph
+Cotman, John Sell
+Cottier, Daniel
+Cottingham, Robert
+Couder, Louis-Charles-Auguste
+Counihan, Noel
+Couper, William
+Courbet, Gustave
+Courter, Franklin C.
+Courtois, Guillaume
+Courtois, Jacques
+Couse, Eanger Irving
+Cousin the Elder, Jean
+Cousinet, Henri-Nicolas
+Cousins, Samuel
+Coustou the Elder, Guillaume
+Coustou, Nicolas
+Couture, Christin
+Couture, Thomas
+Covarrubias, Miguel
+Cowert, Hank
+Cowin, Eileen
+Cowles, Russell
+Cowley, Reta Madeline
+Cowper, Frank
+Cox, David
+Cox, Gardner
+Cox, John Rogers
+Cox, Ken
+Cox, Kenyon
+Cox, Stephen
+Cox, Walter I.
+Coxcie, Michiel van
+Coye, Lee Brown
+Coypel, Antoine
+Coypel, Charles-Antoine
+Coypel, Noël
+Coysevox, Antoine
+Cozens, Alexander
+Cozens, John Robert
+Cozzarelli, Giacomo
+Cozzarelli, Guidoccio
+Cradock, Marmaduke
+Cragg, Tony
+Craig-Martin, Michael
+Cranach the Elder, Lucas
+Cranach the Younger, Lucas
+Cranch, John
+Crane, Anne
+Crane, Bruce
+Crane, Walter
+Cranston, Toller
+Crawford, Len
+Crawford, Ralston
+Crawford, Thomas
+Craxton, John
+Crayer, Gaspar de
+Crema, Giovan Battista
+Crespi, Daniele
+Crespi, Giovanni Battista
+Crespi, Giuseppe Maria
+Creswick, Thomas
+Creti, Donato
+Creuznach, Conrad Faber von
+Criollo, José
+Criss, J. Francis
+Cristall, Joshua
+Cristofol Peralba, Leandre
+Criswell, Warren
+Critcher, Catherine
+Crivelli, Carlo
+Crivelli, Vittorio
+Crocefissi, Simone dei
+Croix I, Jean de la
+Crola, Georg-Heinrich
+Crome, John
+Cromwell, Joane
+Crona, Rudolf
+Crooke, Ray
+Croos, Anthonie Jansz. van der
+Cropsey, Jasper Francis
+Crosato, Giovanni Battista
+Cross, Dorothy
+Cross, Henri-Edmond
+Crotch, Dr. William
+Crowe, Eyre
+Crozier, William
+Cruickshank, William
+Cruikshank, George
+Cruikshank, Isaac
+Crumbo, Woody
+Cruz, Emilio
+Cruz, Juan Pantoja de la
+Csók, István
+Csontváry Kosztka, Tivadar
+Cucchi, Enzo
+Cuevas, José Luis
+Cuitt Jr., George
+Cullen, Maurice Galbraith
+Culverhouse, Johann M.
+Cummings, Michael
+Cumpston, Nevin
+Cundall, Charles
+Cuneo, Rinaldo
+Cunningham, Ben
+Cunningham, Earl
+Cunningham, Imogen
+Curnoe, Greg
+Curradi, Francesco
+Curran, Charles Courtney
+Currier and Ives
+Curry ,Chuck
+Curry II, Austin
+Curry, John Steuart
+Curtis, Edward S.
+Curtis, Philip
+Curtis, R.W.
+Custis, Eleanor Parke
+Cuthbertson, Arch
+Cuyck Van Myerop, Frans
+Cuyp, Aelbert
+Cuyp, Benjamin Gerritsz.
+Cuyp, Jacob Gerritz.
+Dabo, Leon
+Dacosta, Milton
+Dacre, Lady
+Dadd, Richard
+Daddi, Bernardo
+Dael, Jan Frans van
+Dagnan-Bouveret, Pascal-Adolphe-Jean
+Dahl, Johan Christian
+Dahl, Michael
+Daingerfield, Elliott
+Dal Ponte, Giovanni
+dal Sole, Giovanni Gioseffo
+Dalem, Cornelis van
+Dalgaard, Christen
+Dalí, Salvador
+Dall, Nicholas Thomas
+Dalle Masegne, Jacobello
+Dalmata, Giovanni
+Dalmau, Luís
+Dalou, Jules
+Dalsgaard, Sven
+Dalton, Richard
+Daly, Steve
+Daly, Steve
+Damer, Anne Seymour
+Dana, Fra
+Danby, Francis
+Danby, Ken
+Dance II, George
+Dance-Holland, Sir Nathaniel
+Dandini, Cesare
+Dandré-Bardon, Michel-François
+Dandridge, Bartholomew
+d'Angers, Pierre Jean David
+Daniell, Thomas
+Daniell, William
+Danloux, Henri-Pierre
+Danner, Josef
+Danti, Vincenzo
+Danziger, Yitzhak
+Daphnis, Nassos
+Darboven, Hanne
+Darby, Henry F.
+D'Arcangelo, Allan
+Daret, Jacques
+Daret, Jean
+Darius Painter, The
+Darley, Felix Octavius Carr
+Dasburg, Andrew
+Daubigny, Charles-François
+Daucher, Adolf
+Daullé, Jean
+Daumier, Honoré
+Daux, C. Edmond
+Dauzats, Adrien
+Davenport, Ian
+David, Charles
+David, Gerard
+David, Jacques-Louis
+David, Michael
+Davidson, Jo
+Davidson, Robert
+Davie, Alan
+Davies, Arthur Bowen
+Davies, Danny
+Davies, David
+Davies, John
+Davies, Kenneth
+Davies, T.
+Davis, Charles Harold
+Davis, Douglas
+Davis, Emma Earlenbaugh
+Davis, Gene
+Davis, Henry William Banks
+Davis, John Scarlett
+Davis, Joseph H.
+Davis, Richard Thomas
+Davis, Stuart
+Davis, Ulysses
+Davis, William
+Daw, Leila
+Dawe, George
+Dawes, Edwin
+Dawson, David
+Dawson, Janet
+Dawson-Watson, John
+Day, Forshaw
+Day, Francis
+Day, Frank
+Dayes, Edward
+De Backer, Jacques
+de Chirico, Giorgio
+De Forest, Roy
+De Francia, Peter
+De Grey, Sir Roger
+De Haven, Franklin
+de Kooning, Elaine Fried
+de Kooning, Willem
+De Loutherbourg, Philippe Jacques
+de Meyer, Baron Adolf Gayne
+De Monchaux, Cathy
+De Morgan, Evelyn
+de Rivera, José
+de Stael, Nicholas
+de Vries, Auke
+De Wilde, Samuel
+De Wint, Peter
+De Witte, Peter
+Deacon, James
+Deacon, Richard
+Deák-Ébner, Lajos
+Deakin, Edwin
+DeAndrea, John
+Deare, John
+Dearth, Henry Golden
+de'Barbari, Jacopo
+Debassige, Blake
+Debat-Ponsan, Edouard
+Debucourt, Louis-Philibert
+DeCamp, Joseph
+DeCamp, Ralph E.
+Decamps, Alexandre-Gabriel
+DeCarava, Roy
+DeCreeft, José
+deDeigo, Julio
+Defrance, Léonard
+Degas, Edgar
+Degouve de Nuncques, William
+DeGrailly, V.
+Dehaas, Alice Preble Tucker
+Dehn, Adolf
+Dehner, Dorothy
+Dekkers, Ad
+del Casentino, Jacopo
+Del Pezzo, Lucio
+Delacroix, Eugène
+Delamotte, William Alfred
+Delaney, Beauford
+Delaney, Joseph
+Delaroche, Paul
+Delaunay, Jules-Elie
+Delaunay, Robert
+Delaunay, Sonia
+Delaune, Étienne
+Delbos, C. Edmund
+Delen, Dirck van
+Delfino
+della Valle, Filippo
+dell'Abbate, Niccolò
+Delort, Charles Edouard
+Delvaux, Paul
+Delville, Jean
+Delvoye, Wim
+Delyen, Jacques-François
+Demarne, Jean-Louis
+Demarteau, Gilles
+DeMartelly, John S.
+deMartini, Joseph
+Demuth, Charles
+Denes, Agnes
+Denham, John Charles
+Denis, Maurice
+Denison Limner, The
+Denner, Balthasar
+Denning, Stephen Poyntz
+Dennis, Michael
+Dennis, Wayne
+Denny, Robyn
+Denon, Baron Dominique Vivant
+Depero, Fortunato
+Deppe, Ferdinand
+Derain, André
+Derby, William
+Dernovich, Don
+de'Roberti, Ercole
+Derouin, René
+Deruet, Claude
+Des Granges, David
+Desboutin, Marcellin Gilbert
+Desch, Frank H.
+Descourtis, Charles-Melchior
+Deshays, Jean-Baptiste
+Desiderio da Settignano
+Desiderio, Vincent
+Desjardins, Martin
+Despiau, Charles
+Desportes, Alexandre-François
+Dessar, Louis Paul
+DeStaebler, Stephen
+Desubleo, Michele
+Détaille, Édouard
+Detouche, Henry-Julien
+Devambez, André
+Deverell, Walter Howell
+Devéria, Achille
+Devilly, Louis-Théodore
+Devis, Anthony
+Devis, Arthur
+Devoto, John
+Dew, James
+DeWeese, Bob
+DeWeese, Gennie
+DeWeese, Robert
+Dewing, Maria Oakey
+Dewing, Thomas Wilmer
+Dexter, Henry
+Dexter, Walter
+d'Hondecoeter, Melchior
+Di Ruggiero, Carmine
+di Suvero, Mark
+Dial Sr., Thornton
+Diamond, Dr. Hugh Welch
+Diana, Benedetto
+Díaz de la Peña, Narcisse-Virgile
+Dibbets, Jan
+Dickerson, Robert
+Dickinson, Preston
+Dickinson, Sidney E.
+Dicksee, Sir Frank
+Dicksee, Thomas Francis
+Dickson, Jane
+Diebenkorn, Richard
+Diego de Pesquera
+Diepraam, Abraham
+Dietrich, Christian Wilhelm Ernst
+Diggs, Peggy
+Dighton, Richard
+Dighton, Robert
+Dijck, Floris van
+Dillingham, Rick
+Dillis, Johann Georg von
+Dine, Jim
+Dinerstein, James
+Ding Cong
+Ding Yanyong
+Ding Yunpeng
+Dinglinger, Johann Melchior
+Dinsmore, Stephen
+Dionisii
+Dipre, Nicolas
+Discon, Warren
+Dix, Eulabee
+Dix, Otto
+Dixon, Ken
+Dixon, Maria
+Dixon, Maynard
+Dixon, William
+Diziani, Gaspare
+Do, Giovanni
+Dobbs, Everett
+Dobell, William
+Dobson, William
+Dobson, William Charles Thomas
+Dodd, Daniel
+Dodd, Francis
+Dodd, Lamar
+Dodd, Robert
+Dodge, William DeLeftwich
+Doesburg, Theo van
+Dohan, Kaigetsudo
+Dohanos, Stevan
+Doig, Peter
+Doisneau, Robert
+Dolan, Elizabeth
+Dolci, Carlo
+Dolph, John Henry
+Dombrowski, Carl Ritter von
+Domenichino
+Domenico De'Cori
+Domenico di Bartolo
+Domenico di Paris
+Domenico Veneziano
+Dominguez, Oscar
+Dominicis, Gino de
+Donagh, Rita
+Donahue, Vic
+Donald Lipski
+Donaldson, Anthony
+Donát, János
+Donatello
+Donati, Enrico
+Donck, Gerard
+Doner, Michele Oka
+Dong Qichang
+Dongen, Dionys van
+Dongen, Kees van
+Donnelly, Chuck
+Donner, Georg Raphael
+Donoghue, Lynn
+Donoho, Gaines Ruger
+Doolittle, Amos
+Doornik, Frans van
+Dorazio, Piero
+Doré, Gustave
+Dorfmeister, István
+d'Orléans, Evrard
+Dorner, Johann
+Dorrien, Carlos
+Dorris, Roy
+Dorsey, John
+D'Orsi, Achille
+Dosamantes, Francisco
+Dossi, Dosso
+Dou, Gerrit
+Dougherty, Paul
+Doughten, Alice
+Doughty, Thomas
+Doughty, William
+Douglas, Aaron
+Douglas, Edwin
+Douglas, Sir William Fettes
+Douris
+Doutney, Charles
+Dove, Arthur
+Dowling, Robert
+Downard, Ebenezer Newman
+Downing, Tom
+Downman, John
+Doyle, Charles Altamont
+Doyle, Richard
+Draper, Herbert
+Draper, William Franklin
+Drechsler, Johann Baptist
+Drew, Clement
+Drewes, Werner
+Dreyer, Clarice
+Driggs, Elsie
+Drölling, Martin
+Drost, Willem
+Drouais, François-Hubert
+Drouais, Jean-Germain
+Drummond, Arthur
+Drummond, Samuel
+Drysdale, Russell
+Du Maurier, George
+Du Ziling
+Dubois, Jacques
+Dubois-Drahonet, Alexandre-Jean
+Dubreuil, Victor
+Dubufe, Louis-Edouard
+Dubuffet, Jean
+Duccio di Buoninsegna
+Duchamp, Marcel
+Duchamp-Villon, Raymond
+Duck, Jacob
+Ducreux, Joseph
+Ducreux, Rose Adélaïde
+Dudley, Frank V.
+Duez, Ernest
+Dufresne, Charles
+Dufy, Raoul
+Dugdale, Thomas Cantrell
+Dugger, John
+Dughet, Gaspard
+Dujardin, Karel
+Duk-hyun, Cho
+Dulac, Edmund
+Dumesnil the Younger, Pierre Louis
+Dumond, Frank
+Dumonstier, Pierre
+Dumont, Jacques-Edme
+Dumoustier the Elder, Pierre
+Dunand, Jean
+Dunbar, Evelyn
+Dunbar, Harold Crocker
+Dunbier, Augustus
+Duncan, John
+Duncan, Robert
+Duncan, Steve
+Duncanson, Robert Scott
+Dundas, Douglas
+Dunker, Balthazar Anton
+Dunlap, William
+Dunoyer de Segonzac, André
+Dunst, Heinrich
+Dunton, William Herbert
+Duparc, Françoise
+Dupas, Jean
+Duplessis, Joseph-Siffred
+Dupont, Gainsborough
+Duprà, Domenico
+Dupré, Giovanni
+Dupré, Guillaume
+Dupré, Jules
+Dupré, Julien
+Dupuis, Georges
+Duquesnoy, François
+Duranceau, Suzanne
+Durand, Asher B.
+Durand, John
+Duranti, Fortunato
+Duren, Terence
+Dürer, Albrecht
+Durham, Joseph
+Durrie, George Henry
+Dusart, Cornelis
+Duseigneur, Jehan
+Dusenbery, Walter
+Duskiewicz, Rick
+Duskiewicz, Rick
+Duval, Jeanne
+Duval, Marc
+Duveneck, Elizabeth Lyman Boott
+Duveneck, Frank
+Duvet, Jean
+Duyckinck, Gerardus
+Duyfhuysen, Pieter
+Duyster, Willem Cornelisz.
+Dwight, Mabel
+Dwyer, Nancy
+Dyce, William
+Dyer, Charles Gifford
+Dyer, Nancy
+Eagle Painter, The
+Eakins, Susan Macdowell
+Eakins, Thomas
+Eames, Charles
+Eames, Ray
+Eardley, Joan
+Earl, Maud
+Earl, Ralph
+Earl, Ralph Eleaser Whiteside
+Earle, Augustus
+Earlom, Richard
+East, Sir Alfred
+Eastlake, Sir Charles Lock
+Eastman, Emily
+Eastman, Rico
+Eastman, Seth
+Eaton, Charles Warren
+Eaton, William B.
+Eaton, Wyatt
+Ebert, Charles
+Ebert, Mary Roberts
+Eberz, Josef
+Eby, Kerr
+Echevarría, Juan de
+Eckart, Christian
+Eckersberg, Christoffer Wilhelm
+Eddis, Eden Upton
+Eddy, Don
+Edelfelt, Albert
+Edenshaw, Charles
+Edmonds, Francis William
+Edmondson, William
+Edridge, Henry
+Edson, Alan
+Edwards, Billy
+Edwards, Edwin
+Edwards, George Wharton
+Edwards, Melvin
+Eeckhout, Gerbrand van den
+Eertvelt, Andries van
+Egenau Moore, Juan
+Egeri, Karl von
+Egg, Augustus Leopold
+Eggemeyer, Maude Kaufman
+Egger, Vilmos
+Eggleston, William
+Egry, József
+Ehninger, John Whetten
+Ehrenberg, Wilhelm Schubert van
+Eichenberg, Fritz
+Eichholtz, Jacob
+Eickhoff, Gottfred
+Eilshemius, Louis
+Eisen, Charles Dominique
+Eisentrager, James
+Eisui, Ichirakutei
+Eizan, Kikugawa
+Elinga, Pieter Janssens
+Elk, Ger van
+Ellerhusen, Florence Cooney
+Elliott, Charles Loring
+Ellis, Harvey
+Elsheimer, Adam
+Elvgren, Gil
+Emery, Lin
+Emin, Tracey
+Emmet, Lydia Field
+Emslie, Alfred Edward
+Enckell, Magnus
+Engleheart, George
+Enjaku
+Enjorlas, Delphin
+Enkyo, Kabukido
+Enneking, John J.
+Ensor, James
+Epiktetos
+Epimenes
+Epstein, Jacob
+Erhardt, Michel
+Erhart, Gregor
+Erichsen, Vigilius
+Erickson, Nancy
+Ericson, David
+Erlebacher, Martha Mayer
+Ernst, Jimmy
+Ernst, Max
+Ernst, Rudolph
+Erri, Agnolo degli
+Erró
+Erté
+Es, Jacob van
+Escalante, Juan Antonio
+Escher, M.C.
+Esiguo, Maestro
+Espinosa, Juan de
+Espoy, Angel
+Esselens, Jacob
+Estense, Baldassare
+Estes, Richard
+Etidlooie, Kingmeata
+Etrog, Sorel
+Etty, William
+Eun-ho, Kim
+Euphronios
+Eupolis Painter
+Eurich, Richard
+Eustace, A.W.
+Euxitheos
+Evans, De Scott
+Evans, Edwin
+Evans, Frederick Henry
+Evans, Gary
+Evans, Jessie Benton
+Evans, Mary Page
+Evans, Minnie
+Evans, Walker
+Everdingen, Allart van
+Everdingen, Cesar van
+Evergood, Miles
+Evergood, Philip
+Eversen, Adrianus
+Ewbank, John Wilson
+Ewen, Paterson
+Eworth, Hans
+Exekias
+Eyck, Hubert van
+Eyck, Jan van
+Eyre, Ivan
+Eyton, Anthony
+Fabbri, Angenore
+Faber the Younger, John
+Fabergé, Carl
+Fabre, François-Xavier
+Fabritius, Barent
+Fabritius, Carel
+Fabro, Luciano
+Faccini, Pietro
+Faed, John
+Faed, Thomas
+Faes, Peter
+Fafard, Joe
+Fagan, Robert
+Faggi, Alfeo
+Fairbanks, Avard T.
+Fairbanks, Semantha
+Fairbrother, Rob
+Fairweather, Ian
+Falciatore, Filippo
+Falcieri, Biagio
+Falconet, Étienne-Maurice
+Falconet, Pierre-Étienne
+Falero, Luis Ricardo
+Falk, Gathie
+Falter, John Phillip
+Fan Kuan
+Fancelli, Cosimo
+Fancelli, Pietro
+Fang Jizhong
+Fang Zengxian
+Fang Zhaolin
+Fantin-Latour, Henri
+Fanzago, Cosimo
+Farinati, Paolo
+Farington, Joseph
+Faris, Joseph Anderson
+Farkas, István
+Farm, Gerald
+Farmer, John
+Farny, Henry F.
+Farquarson, David
+Farr, Ellen Burpee
+Farrell, Katherine Levine
+Farrer, Charles
+Farrer, Henry
+Farreras, Francisco
+Fattori, Giovanni
+Fauvelet, Jean-Baptiste
+Faxon, Richard
+Faydherbe, Luc
+Faye, Assane
+Fazzini, Pericle
+Fearon, Hilda
+Fechin, Nicolai
+Fedi, Giuseppi
+Feininger, Lyonel
+Feitelson, Lorser
+Feke, Robert
+Felguérez, Manuel
+Fenderich, Charles
+Fendi, Peter
+Feng Kanghou
+Feng Mengbo
+Feng Zikai
+Fenneker, Josef
+Fenton, Roger
+Fenton, Terry
+Fényes, Adolf
+Ferber, Herbert
+Ferenczy, Károly
+Ferguson, Gerald
+Fernández Ledesma, Gabriel
+Fernández, Gregorio
+Fernández, Luis
+Ferneley I, John
+Ferneley II, John
+Ferrant y Vazquez, Angel
+Ferrara, Jackie
+Ferrari, Defendente
+Ferrari, Gaudenzio
+Ferrat, Jean-Joseph-Hippolyte-Romain
+Ferrata, Ercole
+Ferren, John
+Ferrer, Rafael
+Ferretti, Giovanni Domenico
+Ferrière, François
+Ferrill, Martin Edgar
+Fery, John
+Feti, Domenico
+Fetting, Rainer
+Feuchère, Jean-Jacques
+Feuerbach, Anselm
+Feure, Georges de
+Field, Erastus Salisbury
+Field, Robert
+Fielding, Anthony Vandyke Copley
+Fiene, Ernest
+Figueiredo e Mello, Pedro Américo de
+Filarete
+Fildes, Sir Luke
+Filippi, Sebastiano
+Fillier, Scott
+Filonov, Pavel
+Finch, Francis Oliver
+Finck, Hazel
+Fine, Perle
+Fine, Sally S.
+Finelli, Giuliano
+Finlay, Ian Hamilton
+Finson, Ludovicus
+Fiorentino, Antonio
+Fiorentino, 'Pseudo' Pier Francesco
+Fiori, Ernesto de
+Fiorini, Clem & Tony
+Firmin-Girard, Marie-François
+Fischer, Paul
+Fischl, Eric
+Fischli, Peter
+Fish, Janet
+Fisher, Alvan
+Fisher, Anna
+Fisher, Elizabeth Clay
+Fisher, Ellen Bowditch Thayer
+Fisher, Mark
+Fisher, Samuel Melton
+Fisher, Vernon
+Fisk, Lars-Erik
+Fiske, Gertrude
+Fitch, Walter
+Fitton, Hedley
+Fitzgerald, John Anster
+Fitzgerald, Lionel
+Flack, Audrey
+Flagg, James Montgomery
+Flamen, Anselme
+Flameng, Léopold
+Flanagan, Barry
+Flandrin, Hippolyte
+Flannagan, John Bernard
+Flavin, Dan
+Flaxman, John
+Flegel, Georg
+Fleischner, Richard
+Flexor, Samson
+Flicke, Gerlach
+Flinck, Govert
+Flint, William Leroy
+Flipart, Charles
+Floris, Cornelis
+Floris, Frans
+Flory, Arthur L.
+Fogarty, Mary Beth
+Foggini, Giambattista
+Foley, John Henry
+Foliage Master
+Foligno, Bartolomeo di Tommaso da
+Folinsbee, John Fulton
+Folwell, Jody
+Fontana, Annibale
+Fontana, Lavinia
+Fontana, Lucio
+Fontana, Prospero
+Fontebasso, Francesco
+Foote, Mary
+Foote, Will Howe
+Foppa, Vincenzo
+Forabosco, Girolamo
+Forain, Jean-Louis
+Forbes, Donald Emery
+Forbes, Elizabeth Adela Armstrong
+Forbes, John Colin
+Forbes, Stanhope Alexander
+Ford, Edward Onslow
+Ford, Lauren
+Ford, William
+Förg, Günter
+Forrest, Jonathan Alistair
+Forrestall, Tom
+Forsman, Chuck
+Forster, Thomas
+Forsyth, William
+Fortescue-Brickdale, Eleanor
+Fortin, Marc-Aurèle
+Fortini, Giovacchino
+Fortuny y Madrazo, Mariano
+Fortuny y Marsal, Mariano
+Forty, Jean Jacques
+Foschi, Pierfrancesco
+Fossati, Davide Antonio
+Fosso, Samuel
+Foster, Ben
+Foster, Myles Birket
+Foster, William
+Foujita, Tsugoharu
+Foundry Painter, The
+Fouquet, Jean
+Four Bears
+Fournier, Alexis Jean
+Fowle, Isaac
+Fox, E. Phillips
+Foy Suzor-Coté, Marc-Aurèle de
+Fragonard, Jean-Honoré
+Fragonard, Marie Anne Gérard
+Frampton, Edward Reginald
+Frampton, Hollis
+Frampton, Meredith
+Francalancia, Riccardo
+Francavilla, Pietro
+France, Eurilda Loomis
+Frances, Esteban
+Francés, Nicolás
+Franceschini, Marcantonio
+Francesco de Mura
+Francesco di Giorgio Martini
+Francesco di Vannuccio
+Franchina, Nino
+Franchoys the Younger, Lucas
+Francia, Francesco
+Francia, François Louis Thomas
+Franciabigio
+Francis, John F.
+Francis, Mark
+Francis, Sam
+Francken I, Frans
+Francken II, Frans
+Francken II, Hieronymus
+Franco, Giovanni Battista
+Francqueville, Pierre
+Frank, Mary
+Frank, Robert
+Frankel, Godfrey
+Frankenthaler, Helen
+Franzen, August
+Frasconi, Antonio
+Fraser, Alexander
+Fraser, Carol Hoorn
+Fraser, James Earle
+Frater, William
+Fratin, Christophe
+Frazetta, Frank
+Freake Limner, The
+Freckelton, Sondra
+Freddie, Wilhelm
+Frédéric, Léon
+Freeland, Anna Chamberlain
+Freeman, Don
+Freeman, Edith
+Freeman, Jane
+Freiberger, Benny
+Freilicher, Jane
+Frélaut, Jean
+Fremin, René
+French, Daniel Chester
+French, Jared
+Frère, Charles-Théodore
+Fresnaye, Roger de la
+Freud, Lucian
+Freundlich, Otto
+Frey, Viola
+Friebert, Joseph
+Friedeberg, Pedro
+Friedlander, Isac
+Friedlander, Lee
+Friedrich, Caspar David
+Friend, Donald
+Friend, Washington
+Fries, Ernst
+Friese, Richard
+Frieseke, Frederick Carl
+Friesz, Othon
+Frink, Dame Elisabeth
+Fripp, Alfred Downing
+Fripp, George Arthur
+Fripp, Thomas
+Frishmuth, Harriet Whitney
+Frith, William Powell
+Fritsch, Katharina
+Froment, Nicolas
+Fromentin, Eugène
+Froment-Meurice, François-Désiré
+Frost, John
+Frost, Terry
+Frost, William Edward
+Fry, Roger
+Frye, Thomas
+Fu Baoshi
+Fu Ershi
+Fuertes, Louis Agassiz
+Füger, Friedrich Heinrich
+Fujiwara Nobuzane
+Fujiwara Takanobu
+Fuka, Eva
+Fuller, Buckminster
+Fuller, George
+Fuller, Meta Warrick
+Fullwood, John
+Fulton, Hamish
+Fungai, Bernardino
+Furini, Francesco
+Furse, Charles Wellington
+Fusatane
+Fuseli, John Henry
+Fuss, Adam
+Fyt, Jan
+Gabbiani, Anton Domenico
+Gabo, Naum
+Gaddi, Agnolo
+Gaddi, Taddeo
+Gaertner, Eduard
+Gág, Wanda
+Gagen, Robert
+Gagini, Domenico
+Gagnon, Clarence
+Gainsborough, Thomas
+Galán, Julio
+Gale, William
+Gallagher, Sears
+Gallait, Louis
+Galle I, Cornelis
+Gallé, Emile
+Galle, Philip
+Gallego, Fernando
+Gallen-Kallela, Akseli
+Galliani, Omar
+Gallo, Oscar
+Gambara, Lattanzio
+Gamble, John
+Gamelin, Jacques
+Gammell, R.H. Ives
+Gandolfi, Gaetano
+Gandolfi, Ubaldo
+Gandolfino da Roreto
+Gano di Fazio
+Gans, Donna H.
+Gansevoort Limner, The
+Ganso, Emil
+Gao Fenghan
+Gao Jianfu
+Gao Qifeng
+Garber, Daniel
+Garcia, Rupert
+Gardner, Daniel
+Gardner, Todd
+Garelli, Franco
+Gargallo, Pablo
+Gargiulo, Domenico
+Garman, Ed
+Garner, Sarah
+Garnier, Michel
+Garofalo
+Garrard, George
+Garretson, Martin S.
+Garrigus, Keith
+Garstin, Norman
+Gartner, Allan
+Garza, Carmen Lomas
+Gaspard, Leon
+Gassel, Lucas
+Gaudí, Antoni
+Gaudier-Brzeska, Henri
+Gauffier, Louis
+Gaugengigl, Ignaz Marcel
+Gauguin, Paul
+Gauthier, Suzanne
+Gavarni, Paul
+Gavarrone, Domenico
+Gay, Edward
+Gay, Nikolay
+Gaywood, Richard
+Geddes, Andrew
+Gedovius, Germán
+Geer, Grace Woodbridge
+Gehrk, Robert J.
+Gehry, Frank
+Geiger, Anna Bella
+Geikie, Walter
+Geisted, Jørgen
+Gelder, Aert de
+Gelsavage, John Zygmund
+Gemito, Vincenzo
+Genga, Girolamo
+Gennari, Benedetto
+Gensler, Martin
+Gent, G.W.
+Genth, Lillian Mathilde
+Genthe, Arnold
+Gentile da Fabriano
+Gentileschi, Artemisia
+Gentileschi, Orazio
+Gentilini, Franco
+Gentling, Scott
+Geoffroy, Henry-Jules-Jean
+George, Ray
+Gérard, François
+Gérard, Marguerite
+Gerardi, Alberto
+Gerardo
+Gerhaert, Nicolaus
+Gerhard, Hubert
+Gerhold, Mel
+Géricault, Théodore
+Gerini, Niccolò di Pietro
+Gerlovin, Valeriy
+Gerlovina, Rimma
+Germain, François-Thomas
+Germain, Louis
+Gérôme, Jean-Léon
+Gerstl, Richard
+Gertler, Mark
+Gertsch, Franz
+Gervex, Henri
+Gerzso, Gunther
+Getz, Arthur
+Geuer, Juan
+Gheeraerts the Younger, Marcus
+Gherardo di Giovanni
+Gheyn II, Jacques de
+Gheyn, Jacques de
+Ghezzi, Pier Leone
+Ghiberti, Lorenzo
+Ghirlandaio, Benedetto
+Ghirlandaio, Domenico
+Ghirlandaio, Ridolfo
+Ghislandi, Giuseppe
+Giacometti, Alberto
+Giacometti, Giovanni
+Giambologna
+Giambono, Michele
+Giampietrino
+Giannetti, Raffaele
+Giannicola di Paolo
+Giaquinto, Corrado
+Gibbs, Henry
+Gibbs, Percy W.
+Gibson, Ralph
+Giergl, Alajos Györgyi
+Giesbrecht, Garry
+Gifford, Sanford Robinson
+Giger, H.R.
+Gignoux, Règis-François
+Gigola, Giovanni Battista
+Gijsbrechts, Cornelius
+Gil de Castro, José
+Gilbert and George
+Gilbert, Alfred
+Gilbert, Arthur Hill
+Gilbert, John Conrad
+Gilbert, Sir John
+Gilbert, Victor-Gabriel
+Gilder, Robert
+Gile, Selden Connor
+Gilhooly, David
+Gill, Eric
+Gillespie, Gregory
+Gillett, Frank
+Gilliam, Sam
+Gillini, Alberto
+Gillot, Claude
+Gillray, James
+Gilman, Harold
+Gilpin, Rev. William
+Gilpin, Sawrey
+Ginnever, Charles
+Giordano, Luca
+Giorgione
+Giottino
+Giotto di Bondone
+Giovanni da Balduccio
+Giovanni da Campione
+Giovanni da Milano
+Giovanni da Nola
+Giovanni da San Giovanni
+Giovanni del Biondo
+Giovanni di Paolo
+Giovenone, Girolamo
+Gipe, Lawrence
+Girardon, François
+Girodet de Roussy-Trioson, Anne-Louis
+Girolamo da Carpi
+Girolamo dai Libri
+Girolamo di Benvenuto
+Gironella, Alberto
+Giroux, André
+Girtin, Thomas
+Giulio Romano
+Glackens, William
+Glaize, Auguste
+Glaize, Pierre-Paul-Léon
+Glarner, Fritz
+Gleeson, James
+Glehn, Wilfrid de
+Gleizes, Albert
+Glendenning, Alfred
+Gleyre, Charles
+Glick, John
+Glintenkamp, Hendrik
+Glover, John
+Glyde, Henry George
+Gober, Robert
+Goble, Paul
+Godfrey, DeWitt
+Godward, John William
+Goeneutte, Norbert
+Goes, Hugo van der
+Gogas, George
+Goings, Ralph
+Goitia, Francisco
+Goldberg, Rube
+Goldin, Nan
+Goldsworthy, Andy
+Golinkin, Joseph
+Gollings, E. W.
+Goltzius, Hendrick
+Golub, Leon
+Gomez de Mora, Juan
+Gómez, Vicente Salvador
+Gonçalves, Nuno
+Goncharova, Natalia
+Gong Xian
+Gonzaga, Pietro
+Gonzales, Eva
+González Escobar, Juan Francisco
+González Pellicer, Julio
+Gonzalez Ruiz, Daniel
+Gonzalez y Serrano, Bartolome
+González, Joan
+Gonzalez, Juan
+González, Vicente Palmaroli
+Gonzalez-Torres, Felix
+Good, Thomas Sword
+Goodall, Frederick
+Goodfellow, Stephen
+Goodman, Brenda
+Goodman, Sidney
+Goodnough, Robert
+Goodridge, Eliza
+Goodsir, Agnes
+Goodwin, Arthur Clifton
+Goodwin, Gilberta Daniels
+Goodwin, Philip R.
+Goodwin, Richard LaBarre
+Goodwin, Steve
+Gookins, James Farrington
+Gordillo, Luis Rodríguez
+Gordon, Arturo
+Gordon, Douglas
+Gordon, Harry H.
+Gordon, Julia Emily
+Gordon, Lady
+Gordon, Russell T.
+Gordon, Sir Harry Percy
+Gordon, Sir John Watson
+Gore, Charles
+Gore, Spencer
+Gorenko, Richard Williams Samuel
+Gorgoni, G.
+Gorin, Jean
+Gorky, Arshile
+Gormley, Antony
+Gornik, April
+Goro di Gregorio
+Gorsline, Douglas
+Gorson, Aaron Harry
+Goshin
+Goshun, Matsumara
+Gotch, Thomas Cooper
+Gottlieb, Adolph
+Gottlieb, Harry
+Goudie, Scott
+Goudt, Hendrik
+Goujon, Jean
+Gould, William
+Goupil, Jules-Adolphe
+Govaers, Daniel
+Govaerts, Abraham
+Gow, Andrew Carrick
+Gower, George
+Gowing, Sir Lawrence
+Goya, Francisco de
+Goyen, Jan van
+Goyo, Hashiguchi
+Gozzoli, Benozzo
+Graevenitz, Gerhard von
+Graf, Genevieve Goth
+Graf, Urs
+Graff, Anton
+Graham, Dan
+Graham, John
+Graham, Paul
+Graham, Peter
+Graham, Robert
+Gramza, Leroy
+Granacci, Francesco
+Grandi, Gian Girolamo
+Grandi, Giuseppe
+Grandin, Eugene
+Grandmaison, Nicholas de
+Granet, François-Marius
+Granger, Charles Henry
+Grant, Duncan
+Grant, Frederic Milton
+Grant, Gordon
+Grant, Sir Francis
+Gras, Caspar
+Grass, Philippe
+Grasser, Erasmus
+Grausman, Philip
+Gravelot, Hubert François
+Graves, Abbott Fuller
+Graves, Henry Richard
+Graves, Morris
+Graves, Nancy
+Gravesande, Charles Storm van S'
+Gray, Cleve
+Gray, Gustave Le
+Gray, Henry Percy
+Gray, Jack
+Gray, Mary
+Graziose, Phil
+Greacen, Edmund W.
+Greacen, Nan
+Greaves, Walter
+Grebber, Pieter de
+Greco, El
+Greco, Emilio
+Green, Alan
+Green, Anthony
+Green, C.E.L.
+Green, Frank Russell
+Green, Homer
+Green, Renée
+Green, Samuel M.
+Green, Valentine
+Green, Walter
+Greenamyer, George
+Greenblat, Rodney Alan
+Greenham, Peter
+Greenhill, Harold
+Greenleaf, Benjamin
+Greenough, Horatio
+Greenwood, John
+Greeves, Richard V.
+Gregory, Edward John
+Gregory, Sheila
+Greiffenhagen, Maurice William
+Greuze, Jean-Baptiste
+Grey, Alex
+Gribbroek, Robert
+Griffa, Giorgio
+Griffier the Elder, John
+Griffin, Walter
+Griffiths, James
+Griggs, Frederick Landseer Maur
+Griggs, Lee
+Griggs, Samuel W.
+Grigorescu, Nicolae
+Grimaldi, Giovanni Francesco
+Grimm, Samuel Hieronymous
+Grimmer, Abel
+Grimou, Alexis
+Grimshaw, Atkinson
+Grinager, Alex
+Grippe, Peter
+Gris, Juan
+Gritten, Henry
+Grogan, Nathaniel
+Groll, Albert L.
+Grooms, Red
+Gropper, William
+Gros, Antoine-Jean
+Grose, Harriet Estella
+Gross, Anthony
+Gross, Chaim
+Gross, Sidney
+Grossman, Elias M.
+Grossmann, Rudolf
+Grosso, Luigi
+Grosz, George
+Groux, Henry de
+Gruamonte
+Gruber, Francis
+Gruelle, Richard B.
+Gruner, Elioth
+Grünewald, Matthias
+Gruppé, Emile A.
+Gruppe, Virginia
+Gu Linshi
+Gu Yuan
+Gu Yun
+Gualitieri di Giovanni da Pisa
+Guan Shanyue
+Guan Zilan
+Guardi, Francesco
+Guardi, Gian Antonio
+Guariento di Arpo
+Gude, Hans Fredrik
+Gudin, Théodore
+Guérard, Eugene von
+Guercino
+Guerin, Gilles
+Guérin, Pierre-Narcisse
+Guerrero Galván, Jesús
+Guerrero García, José
+Guglielmi, Gregorio
+Guglielmi, O. Louis
+Guglielmo, Fra
+Guglielmo, Mastro
+Guidi, Domenico
+Guidi, Virgilio
+Guido da Siena
+Guignet, Adrien
+Guigou, Paul-Camille
+Guild, Lurelle
+Guillain, Simon
+Guillaumin, Armand
+Guillou, Alfred
+Guinovart Bertran, Josep
+Guirand de Scevola, Lucien-Victor
+Gulácsy, Lajos
+Gunther, Franz Ignaz
+Guo Bi
+Gurschner, Herbert
+Gursky, Andreas
+Guston, Philip
+Guthrie, Sir James
+Gutiérrez, Juan Simón
+Gutmann, Bernhard
+Gutmann, John
+Guttuso, Renato
+Guy, Francis
+Guy, Seymour Joseph
+Guys, Constantin
+Guyton, Tyree
+Gwathmey, Robert
+Gwynne-Jones, Allan
+Gyárfás, Jenó
+Gyles, Henry
+Gyokudo, Uragami
+Gysels, Pieter
+Haagen, Joris Abrahamsz. van der
+Haarlem, Cornelis Cornelisz. van
+Haas, Mauritz F.H. De
+Haberle, John
+Hackaert, Jan
+Hacker, Arthur
+Hackert, Jacob Philippe
+Haddock, A.
+Haden, Sir Francis Seymour
+Haes, Carlos de
+Hahn, Emanuel
+Hahn, Gustav
+Hahn, Herbert C.
+Hahn, William
+Haid, Johann Lorenz
+Haile, Samuel
+Hale, Edward Matthew
+Hale, Ellen Day
+Hale, Josephine
+Hale, Lilian Westcott
+Hale, Philip Leslie
+Hall 1739-2008, John
+Hall 1885, Douglas
+Hall, Ann
+Hall, Bernard
+Hall, Cyrenius
+Hall, Doug
+Hall, George Henry
+Hall, Harry
+Hall, John
+Hall, Pam
+Hallé, Edward Charles
+Hallen, Ambrose
+Halley, Peter
+Halliday, Edward Irvine
+Hals, Dirk
+Hals, Frans
+Halsman, Philippe
+Halswelle, Keeley
+Hamblin, Sturtevant J.
+Hamen y León, Juan van der
+Hamilton, Ann
+Hamilton, Gavin
+Hamilton, Gawen
+Hamilton, Grant
+Hamilton, Hamilton
+Hamilton, Hugh Douglas
+Hamilton, James
+Hamilton, Juan
+Hamilton, Mary Riter
+Hamilton, Mike
+Hamilton, Richard
+Hamilton, William
+Hammershøi, Vilhelm
+Hammond, Jane
+Hammons, David
+Hamon, Jean-Louis
+Han Gan
+Hanfstaengl, Dresden
+Hanias, Johannes
+Hankey, William Lee
+Hanneman, Adriaen
+Hannock, Stephen
+Hansen, Armin Carl
+Hansen, Constantin
+Hansen, Svend Wiig
+Hanson, Duane
+Haozous, Bob
+Harcourt, George
+Hardie, Martin
+Harding, Charles Stewart
+Harding, Chester
+Harding, George Perfect
+Harding, James Duffield
+Harding, Sylvester
+Hardrick, John Wesley
+Hardwick, Alice
+Hardwick, Melbourne
+Hardy, Anna Eliza
+Hardy, Heywood
+Hare, David
+Harford, John Scandrett
+Haring, Keith
+Harlow, George Henry
+Harnett, William Michael
+Harper, Henry Andrew
+Harpignies, Henri-Joseph
+Harrich, Jobst
+Harries, Mags
+Harris, Bob
+Harris, John
+Harris, Lawren S.
+Harris, Robert
+Harris, Sam Hyde
+Harrison, H.B.
+Harrison, T. Alexander
+Harrison, Wallace
+Hart, Frederick
+Hart, James McDougal
+Hart, Letitia Bonnet
+Hart, 'Pop'
+Hart, Solomon Alexander
+Hart, William
+Hartigan, Grace
+Hartley, J. Scott
+Hartley, Marsden
+Hartrath, Lucie
+Hartung, Hans
+Harunobu
+Harushige, Suzuki
+Harvey, Bunny
+Harvey, Herbert Johnson
+Harvey, William
+Harwood, Francis
+Harwood, James Taylor
+Hasegawa Tohaku
+Haseltine, William Stanley
+Hashagen, A.
+Hashimoto, Okiie
+Haskell, Ernest
+Hassam, Childe
+Hassell, John
+Hasui, Kawase
+Hatch, Jim
+Hatcher, Brower
+Hatoum, Mona
+Hatt, Emilie Demant
+Hauer, Stanley
+Haughton, Matthew
+Haupers, Clement
+Hausmann, Raoul
+Havel, Joseph
+Havell, Robert
+Havell, William
+Havens, Leonard M.
+Hawkins, Basil
+Hawkins, Henry
+Hawkins, Louis Welden
+Hawthorne, Charles Webster
+Haxton, Elaine
+Hay, Gilbert
+Hayden, Henri
+Haydon, Benjamin Robert
+Hayes, Edwin
+Hayes, George A.
+Hayez, Francesco
+Hayls, John
+Hayman, Francis
+Haynes, Douglas Hector
+Haynes, F. Jay
+Haynes-Williams, John
+Haynie, Keith
+Hays, William Jacob
+Hayter, John
+Hayter, Sir George
+Hayter, Stanley William
+Haytley, Edward
+Hazelton, Mary Brewster
+He Baitao
+He Kongde
+He Tianjian
+Head, Guy
+Head, Tim
+Heade, Martin Johnson
+Healy, George P.A.
+Heaney, Charles
+Heaphy, Thomas
+Hearne, Thomas
+Heartfield, John
+Heath, Henry
+Heath, William
+HeavyShield, Faye
+Hébert, Adrien
+Hébert, Ernest
+Hébert, Pierre-Eugène-Emile
+Heckel, Erich
+Hecken, Abraham van der
+Heckman, Albert
+Heda, Gerret Willemsz.
+Heda, Willem Claesz.
+Heem, Cornelis de
+Heem, Jan Davidsz. de
+Heem, Jan Jansz. de
+Heemskerck, Maerten van
+Hegedus, Laszlo
+Heil, Daniel van
+Heilbuth, Ferdinand
+Heilmann, Mary
+Heim, François-Joseph
+Heimlich, Herman
+Heintz, Joseph
+Heintzelman, Arthur William
+Heizer, Michael
+Hejduk, John
+Held Jr., John
+Held, Al
+Held, Marion
+Helder, Zama V.
+Heller, Helen West
+Helm, Alison
+Helmbreker, Dirk
+Helmick, Ralph
+Helst, Bartholomeus van der
+Helzer, Richard
+Hemessen, Caterina van
+Hemessen, Jan Sanders van
+Heming, Arthur
+Hemy, Charles Napier
+Henderson, Charles Cooper
+Henderson, John
+Henderson, Joseph
+Henderson, Nigel
+Hendrickson, Daniel
+Henner, Jean-Jacques
+Hennessy, William John
+Hennings, E. Martin
+Henri, Robert
+Henry, Edward Lamson
+Hensel, Salome
+Hepher, David
+Hepworth, Barbara
+Herbert, John Rogers
+Herbin, Auguste
+Herlick, George
+Hernandez Pijuan, Joan
+Heron, Patrick
+Herrán, Saturnino
+Herrera Barnuevo, Sebastian de
+Herrera the Younger, Francisco de
+Herring, John Frederick
+Herter, Albert
+Herthel, Ludwig
+Hertle, James
+Herzog, Herman
+Hesse, Eva
+Hesselius, John
+Hessing, Valjean
+Heward, Prudence
+Hey, Jean
+Heyboer, Anton
+Heyden, Jan van der
+Heyden, Pieter van Der
+Heynsius, Kees
+Heysen, Hans
+Heywood, J.C.
+Hick, Jacqueline
+Hickey, Dale
+Hickey, Thomas
+Hickox, Elizabeth
+Hicks, Edward
+Hicks, George Elgar
+Hicks, Sheila
+Hicks, Thomas
+Hicks, William
+Hidalgo, Juan
+Higgins III, Edward F.
+Higgins, Eugene
+Higgins, Victor
+Highmore, Joseph
+Highstein, Jene
+Hildebrandt, Edward
+Hiler, Hilaire
+Hill, Anthony
+Hill, Carl Fredrik
+Hill, David Octavius
+Hill, John
+Hill, John William
+Hill, Thomas
+Hilliard, Nicholas
+Hillier, Tristram
+Hilling, John
+Hills, Anna Althea
+Hills, Laura Coombs
+Hills, Robert
+Hilton the Younger, William
+Hilton, Roger
+Himid, Lubaina
+Hind, William G.R.
+Hine, Lewis Wickes
+Hinkle, Clarence
+Hiratsuka, Un'ichi
+Hiroaki, Morino
+Hirosada
+Hiroshige II
+Hiroshige, Ando
+Hirsch, Joseph
+Hirschvogel the Elder, Veit
+Hirschvogel, Augustin
+Hirst, Claude Raguet
+Hirst, Damien
+Hirszenberg, Samuel
+Hitchcock, George
+Hitchcock, Harold
+Hitchens, Ivon
+Hnizdovsky, Jacques
+Hoare, Prince
+Hoare, Sir Richard Colt
+Hoare, William
+Hobbema, Meindert
+Höch, Hannah
+Hocking, Robert
+Hockney, David
+Hodges, Jim
+Hodges, William
+Hodgkin, Howard
+Hodgkins, Frances
+Hodler, Ferdinand
+Hoeck, Richard
+Hoecke, Jan van den
+Hoefnagel, Joris
+Hoerman, Carl
+Hofer, Carl
+Hoff, Rayner
+Hoffbauer, Charles
+Hoffman, Irwin
+Hoffman, Malvina
+Hoffmann, Hans
+Hoffmeister, George
+Hofland, Thomas Christopher
+Hofmann, Charles C.
+Hofmann, Hans
+Hofmeister, Andrew
+Hogarth, William
+Hogers, Jacob
+Hogue, Alexandre
+Hoin, Claude
+Hoit, Albert Gallatin
+Hokuei
+Hokusai Katsushika
+Holbein the Elder, Hans
+Holbein the Younger, Hans
+Holbein, Ambrosius
+Holberg, Ruth Langland
+Holcomb, Alice
+Holdstock, Alfred W.
+Holgate, Edwin
+Holiday, Henry
+Holl, Frank
+Holland, James
+Holland, Tish
+Hollar, Wenceslaus
+Hollósy, Simon
+Holm, Julius
+Holman, Francis
+Holmes, Kenneth
+Holmes, Melville
+Holmes, Tim
+Holoun, Hal
+Holroyd, Sir Charles
+Holsman, Elizabeth T.
+Holt, Nancy
+Holzer, Jenny
+Homer, Winslow
+Hon'ami Koetsu
+Hondius the Elder, Hendrik
+Hondius, Abraham
+Hone, Nathaniel
+Hoñgeeýesa
+Hong-Joo, Kim
+Hongren
+Honthorst, Gerrit van
+Hooch, Pieter de
+Hood, Raymond
+Hoogstraten, Samuel van
+Hook, Dr. Richard
+Hook, James Clarke
+Hook, Walter
+Hopfer, Daniel
+Hopfer, Hieronymous
+Hopkins, Frances Anne
+Hopkins, James R.
+Hopkins, Milton W.
+Hopper, Edward
+Hoppner, John
+Hopwood, Henry Silkstone
+Horemans the Elder, Jan Josef
+Hori, Tetsuzan
+Horn, Rebecca
+Horn, Roni
+Hornebout, Gerard
+Hornung, Preben
+Horsley, John Callcott
+Horton, William Samuel
+Hoskins, John
+Hosmer, Harriet Goodhue
+Hou Mougong
+Hou Yimin
+Houasse, Michel-Ange
+Houbraken, Jacobus
+Houdon, Jean-Antoine
+Houel, Jean
+Houghton, Arthur Boyd
+House, Gordon
+House, Seth
+Houser, Allan
+Houshiary, Shirazeh
+Hovenden, Thomas
+Hovey, Otis
+Howard, Bessie Jeannette
+Howard, Dan
+Howard, Edith Lucile
+Howard, Joseph
+Howe, Oscar
+Howitt, Samuel
+Howlett, Robert
+Hoyland, John
+Hron, Vincent
+Hu Yichuan
+Hu Yuan
+Hua Yan
+Huang Binhong
+Huang Lizhen
+Huang Xinbo
+Huang Zhou
+Hubbard, John
+Hubbard, Whitney
+Hubbell, Henry Salem
+Huber, Wolf
+Hudson, Grace Carpenter
+Hudson, Henry J.
+Hudson, Thomas
+Huet, Jean-Baptiste Marie
+Huet, Paul
+Huffman, Laton Alton
+Huge, Jurgan Frederick
+Huggins, William
+Huggins, William John
+Hughes, Arthur
+Hughes, Cornelius Jabez
+Hughes, Edward Robert
+Hughes, Patrick
+Hugo, Jean
+Hugo, Valentine
+Hugo, Victor
+Hugonin, James
+Hugue, Manuel
+Huguet, Jaume
+Huilliot, Pierre Nicolas
+Huizong, Emperor
+Hull, Lynne
+Hull, Marie Atkinson
+Humphrey, Jack
+Humphrey, Ralph
+Humphrey, Tom
+Humphreys, Charles S.
+Hundertwasser
+Hung Liu
+Hunt, Alfred William
+Hunt, Alice
+Hunt, Bryan
+Hunt, Calvin
+Hunt, Esther Anna
+Hunt, Mabelle Alcott
+Hunt, Richard
+Hunt, Tommy
+Hunt, William Henry
+Hunt, William Holman
+Hunt, William Morris
+Hunter, Colin
+Hunter, George Leslie
+Huntington, Anna V. Hyatt
+Huntington, Daniel
+Huntington, Elizabeth Hamilton
+Huntington, Jim
+Huntley, Victoria Hutson
+Huntoon, Mary
+Hurd, Peter
+Hurlstone, Frederick Yeates
+Hurrell, George
+Husain, M.F.
+Hussey, Giles
+Hustwick, C.
+Hutin, Charles-François
+Hutty, Alfred Heber
+Huysmans, Corneille
+Huysmans, Jacob
+Huysmans, Jean-Baptiste
+Huysum, Jan van
+Hyde, Helen
+Hyo-joong, Yun
+Ianelli, Arcângelo
+Ibbetson, Julius Caesar
+Ibels, Henri Gabriel
+Icaza, Ernesto
+Ihara, Michio
+Ihle, John
+Ike-no-Taiga
+Imber, Jonathan
+Immendorff, Joerg
+Immenraet, Philippe-Augustin
+Ince, Joseph Murray
+Inchbold, John William
+Indiana, Robert
+In-du, Ha
+Ingham, Charles Cromwell
+Inglés, Jorge
+Ingres, Jean-Auguste-Dominique
+Inman, Henry
+Innes, James Dickson
+Inness, George
+Innocenzo da Imola
+Inscription Painter, The
+Inurria, Mateo
+Inza, Joaquín
+Irvin, Albert
+Irvine, Wilson
+Irwin, Robert
+Isabey, Eugène
+Isabey, Jean Baptiste
+Isenbrant, Adriaen
+Ishikawa Komei
+Iskowitz, Gershon
+Israels, Isaac
+Israëls, Jozef
+Ito Jakuchu
+Itten, Johannes
+Ittenbach, Franz
+Ivanov, Alexander
+Ivanov, Andrei
+Ivanov, Sergei
+Ivanov, Victor
+Iverny, Jacques
+Ives, Chauncey B.
+Izquierdo, María
+Jack, Mabel Wellington
+Jack, Richard
+Jackson, A.Y.
+Jackson, Billy Morrow
+Jackson, Gilbert
+Jackson, John
+Jackson, Samuel Phillips
+Jackson, William Henry
+Jacob-Desmalter, François-Honoré-Georges
+Jacobello Del Fiore
+Jacobi, Otto
+Jacobsen, Antonio
+Jacobshagen, Keith
+Jacobson, Jake
+Jacobsz, Dirck
+Jacobsz, Lambert
+Jacometto
+Jacopino del Conte
+Jacopo del Sellaio
+Jacopo di Cione
+Jacopo di Domenico Foschi
+Jacopo Nizzola da Trezzo
+Jacopo, Meliore di
+Jacoulet, Paul
+Jacquand, Claudius
+Jacque, Charles Émile
+Jacquemart de Hesdin
+Jacquemart, Jules Ferdinand
+Jacquemin, Jeanne
+Jacquet, Mathieu
+Jacquette, Yvonne
+Jaffee, Jay
+Jalabeat, Charles François
+James, Alexander
+James, Alice Archer
+James, Frederick
+James, Rebecca Salsbury
+James, Will
+Jameson, Anne Brownell
+Jamieson, Bernice Evelyn
+Jamieson, Mitchell
+Jamin, Paul
+Janinet, Jean-François
+Janowitz, Joel
+Jansen, Franz M.
+Janssens, Abraham
+Jansson, Eugene
+Janvier, Alex
+Jarvis, Charles Wesley
+Jarvis, John Wesley
+Jawlensky, Alexei
+Jean de Liège
+Jean de Touyl
+Jeanne-Claude
+Jeaurat, Étienne
+Jefferys, James
+Jeffries, Jim
+Jegher, Christoffel
+Jenkins, Paul
+Jennewein, C. Paul
+Jenney, Neil
+Jennys, William
+Jénot, Paulin
+Jensen, Alfred
+Jensen, Christian Albrecht
+Jenssen, Olav Christopher
+Jerry Kruss
+Jess
+Jessup, Robert
+Jewell, Ron
+Jewett, William
+Ji, Byun Shi
+Jia Youfu
+Jiang Feng
+Jiang Tingxi
+Jihei, Sugimura
+Jiménez Aranda, Luis
+Jiménez, Luis
+Jin Shangyi
+Jin-kyu, Kwon
+Jocelyn, Nathaniel
+Johannot, Antoine
+John, Augustus
+John, Gwen
+John, Philip
+Johns, Jasper
+Johnsgard, Paul
+Johnson Jr., J. Seward
+Johnson, Charles Edward
+Johnson, Cornelius
+Johnson, David
+Johnson, Eastman
+Johnson, Frank Tenney
+Johnson, Isabelle
+Johnson, Joshua
+Johnson, Philip
+Johnson, Rae
+Johnson, Raymond
+Johnson, Sargent Claude
+Johnson, William H.
+Johnson-Calloway, Marie
+Johnston, Frank
+Johnston, John
+Johnston, Ynez
+Joli, Antonio
+Jollain, Nicolas-René
+Jonas, Louis Paul
+Jones, Allen
+Jones, Ben
+Jones, Bradley
+Jones, David
+Jones, Fay
+Jones, Francis Coates
+Jones, George
+Jones, Hugh Bolton
+Jones, Joe
+Jones, Loïs Mailou
+Jones, Luther
+Jones, Mildred
+Jones, Nell Choate
+Jones, Thomas
+Jones, William
+Jongh, Ludolf Leendertsz. de
+Jong-Hak, Kim
+Jonghelinck, Jacques
+Jongkind, Johan Barthold
+Jonson, Raymond
+Jónsson, Ásgrímur
+Joo, Michael
+Joos van Wassenhove
+Jordaens, Jacob
+Jordan, Samuel
+Josephson, Ernst
+Josetsu
+Joslin, Richard
+Joue II, Jacques de la
+Jouett, Matthew Harris
+Jouvenet, Jean
+Joy, George William
+Juan de Flandes
+Juan de Herrera
+Juan de Juni
+Juan de Villanueva
+Juanes, Juan de
+Juárez, Luis
+Juarez, Roberto
+Judd, Donald
+Judson, William Lees
+Juel, Jens
+Jules, Mervin
+Julien, Henri
+Julien, Pierre
+Jumbo, Julia
+Juvarra, Filippo
+Kabakov, Ilya
+Kabotie, Fred
+Kacere, John
+Kadishman, Menashe
+Kahlo, Frida
+Kahn, Albert
+Kahn, Wolf
+Kaiho Yusho
+Kainen, Jacob
+Kaisermann, Franz
+Kalf, Willem
+Kalleo, Josephina
+Kamenev, L.
+Kandinsky, Wassily
+Kane, Paul
+Kang Shiyao
+Kang Youwei
+Kano Eitoku
+Kano Hideyori
+Kano Motonobu
+Kano Sanraku
+Kano Sansetsu
+Kanpô, Yoshikawa
+Kantor, Morris
+Kapoor, Anish
+Karpik, Andrew
+Karsh, Yousuf
+Kartner Meister
+Käsebier, Gertrude
+Kass, Deborah
+Katz, Alex
+Katz, Cima
+Katzen, Lila
+Kauffmann, Angelica
+Kaufmann, Isidor
+Kaula, Lee Lufkin
+Kawakami, Sumio
+Kawano, Kaoru
+Kawara, On
+Kaye, Otis
+Kazuma, Oda
+Kcho
+Keane, John
+Keene, Charles Samuel
+Keesey, W.M.
+Keibun
+Keil, Bernhard
+Keirincx, Alexander
+Keisai Eisen
+Keisai Masayoshi
+Keith, Elizabeth
+Keith, William
+Keller, Henry
+Kelley, Mike
+Kelly, Ellsworth
+Kemeys, Edward
+Kemmelmeyer, Frederick
+Kempton, Elmira
+Kempton, Greta
+Kemp-Welch, Lucy
+Kendall, William Sergeant
+Kendrick, Mel
+Kennedy, Garry Neil
+Kennedy, Mary
+Kennedy, Shannon
+Kennington, Eric
+Kensett, George
+Kensett, John Frederick
+Kent, Corita
+Kent, Rockwell
+Kern, Dennis
+Kern, Leonhard
+Kerr, Charles Henry Malcolm
+Kerr, Illingworth Holey
+Kerr-Lawson, James
+Kersting, Georg Friedrich
+Kertész, André
+Kessel the Younger, Jan van
+Kessel, Jan van
+Kessler, Wynn
+Ketchum, Robert Glenn
+Ketel, Cornelis
+Kettle, Tilly
+Keuninck, Kerstiaen de
+Key, John Ross
+Keyl, Friedrich Wilhelm
+Keyser I, Hendrick de
+Keyser, Thomas de
+Khatchatur
+Khnopff, Fernand
+Khrutsky, Ivan
+Kick, Simon
+Kicking Bear
+Kidd, Joseph Bartholomew
+Kiefer, Anselm
+Kienerk, Giorgio
+Kienholz, Edward
+Kienholz, Nancy Reddin
+Kienzer, Michael
+Kiitsu, Suzuki
+Kim, Guilin
+Kimball, Wayne
+King, Carl
+King, Charles Bird
+King, John Henry Yeend
+King, Philip
+King, Ronald
+King, Samuel
+King, William
+Kingman, Dong
+Kinkade, Thomas
+Kinley, Peter
+Kinnard, W.
+Kinoshita, Tomio
+Kinson, François-Joseph
+Kinstler, Everett Raymond
+Kipp, Lyman
+Kippell, Niclauss
+Kipping, Brian
+Kiprensky, Orest
+Kirberg, Otto Karl
+Kirchner, Ernst Ludwig
+Kirkeby, Per
+Kirkland, Vance
+Kirmse, Marguerite
+Kirsch, Dwight
+Kirsta, Georg
+Kiss, Sámuel
+Kissel, Eleonora
+Kitaj, R.B.
+Kitaoka, Fumio
+Kiti, Mwama
+Kiyomasu, Torii
+Kiyomitsu, Torii
+Kiyonaga
+Kiyonobu
+Kiyonobu II, Torii
+Kiyotsune, Torii
+Klebe, Gene
+Klee, Paul
+Kleemann, Ron
+Klein, Yves
+Kleinholz, Frank
+Kleitsch, Joseph
+Kleophrades Painter, The
+Klimt, Gustav
+Kline, Franz
+Klinger, Max
+Klumpke, Anna Elizabeth
+Klunder, Tim
+Klutsis, Gustav
+Knapton, George
+Knaths, Karl
+Knaub, Ray
+Knauber, Alma Jordan
+Kneale, Bryan
+Kneller, Sir Godfrey
+Knight, Dame Laura
+Knight, Daniel Ridgway
+Knight, John Baverstock
+Knight, John Prescott
+Knight, John William Buxton
+Knight, Joseph
+Knight, Louis Aston
+Knight, Susan
+Knoebel, Imi
+Knott, Henry
+Knowles, Dorothy Elsie
+Knowles, Farquhar McGillivray
+Knowling, Kathleen
+Knox, Susan Ricker
+Knüpfer, Nicolaus
+Kobell, Wilhelm von
+Købke, Christen
+Koch, John
+Koch, Joseph Anton
+Koehler, Robert
+Koekkoek, Barend Cornelius
+Koekkoek, Willem
+Koellin, Peter
+Koerbecke, Johann
+Koerner, Henry
+Koester, Alexander
+Kogler, Peter
+Kogvik, Charlie
+Kokei, Tsuruya
+Kokoschka, Oskar
+Kolbe, Georg
+Koller, Rudolf
+Kollwitz, Käthe
+Konchalovsky, Pyotr
+Koninck, Philips
+Konrad of Soest
+Koo Mei
+Koons, Jeff
+Kooyoo Peter
+Kopman, Benjamin
+Korin, Pavel
+Korling, Torkel
+Korovin, Konstantin
+Koryusai
+Kosaka, Gajin
+Kossoff, Leon
+Kostabi, Mark
+Kosuth, Joseph
+Kotaku, Hosoi
+Kotondo, Torii
+Kounellis, Jannis
+Kouwenbergh, Philip van
+Kowal, Dennis
+Kozina, Sándor
+Krafft, Johann Peter
+Kraft, Adam
+Kramskoy, Ivan Nikolaevich
+Krasner, Lee
+Krehbiel, Albert H.
+Kremer, Nicolaus
+Kretsch, Karl
+Krieghoff, Cornelius
+Krohg, Christian
+Kroll, Leon
+Krøyer, Peder Severin
+Krueger, David
+Kruger, Barbara
+Kruger, Franz
+Krumper, Hans
+Krylov, Nikifor
+Kuang Yaoding
+Kubin, Alfred
+Kubinyi, Kalman
+Kubota, Itchiku
+Kubovy, Jirí
+Kuehne, Max
+Kuemmel, Cornelia
+Kuhn, Bob
+Kühn, Justus Engelhardt
+Kuhn, Walt
+Kuhnert, Friedrich Wilhelm
+Kuindzhi, Arkhip Ivanovich
+Kuitca, Guillermo
+Kuk-kwang, Chun
+Kuliuksin, Nektarii
+Kulmbach, Hans Süss von
+Kunc, Karen
+Kunichika
+Kunihiro, Utagawa
+Kunikazu
+Kunimasa
+Kunimasu
+Kunisada, Utagawa
+Kuniyoshi, Utagawa
+Kuniyoshi, Yasuo
+Kunst, Pieter Cornelisz.
+Kupferman, Lawrence E.
+Kupferman, Moshe
+Kupka, Frantisek
+Kurosaki, Akira
+Kusama, Yayoi
+Kustodiev, Boris
+Kuytenbrouwer, Martinus Adrianus
+Kuznetsov, Nikolai Dmitrievich
+Kuznetsov, Pavel
+Kwan-sik, Byeon
+Kyle, Joseph
+Kyoung Ae Cho
+Kyung-ja, Chun
+La Cave, Peter
+La Croix de Marseille, Charles
+La Farge, John
+La Fosse, Charles de
+La Hyre, Laurent de
+La Thangue, Henry H.
+La Tour, Georges de
+La Tour, Maurice Quentin de
+Labaudt, Lucien
+Labille-Guiard, Adélaïde
+Laboureur, Jean-Émile
+Labruzzi, Carlo
+Lachaise, Gaston
+Lacombe, Georges
+Lacoste, Charles
+Lacour, Pierre
+Lacroix, Paul
+Ladbrooke, Robert
+Ladd, Daniel
+Laemmle, Cheryl
+Laer, Pieter van
+LaFargue, Paulus Constantijn
+Lafrensen, Niclas
+Lagerino, Stefano
+Lagrenee, Jean-Jacques
+Lagrenée, Louis Jean François
+Laguardia, Eloy Giménez
+Lai Shaoqi
+Lai Sung
+Laib, Conrad
+Laidlay, William James
+Laing, Gerald
+Laing, J.S.
+Lairesse, Gerard de
+Lalanne, Maxime
+Lalique, René
+Lam, Wilfredo
+Lamb, A.A.
+Lamb, Andrian
+Lamb, Henry
+Lambdin, James Reid
+Lambert, George
+Lambert, George W.
+Lambert, James
+Lamberti, Piero di Niccolo
+Lami, Eugène
+Lamm, Leonid
+LaMore, Chet
+Lamqua
+Lan Ying
+Lancaster, Rev. Richard Hume
+Lance, George
+Lancret, Nicolas
+Landacre, Paul Hambelton
+Landeck, Armin
+Landelle, Charles
+Landini, Taddeo
+Landis, John
+Landseer, Charles
+Landseer, Sir Edwin Henry
+Lane, Fitz Hugh
+Lane, Samuel
+Lane, Theodore
+Laneuville, Jean-Louis
+Lanfranco, Giovanni
+Lange, Dorothea
+Langendijk, Dirk
+Langetti, Giovan Battista
+Langhans, Karl Ferdinand
+Langlois, Jérôme-Martin
+Laning, Edward
+Lanino, Bernardino
+LaNoue, Terrence
+Lansil, Walter Franklin
+Lanteri, Edouard
+Lanyon, Ellen
+Lanyon, Peter
+Lapointe, Frank
+Laporte, George Henry
+Laporte, John
+Laprade, Pierre
+Larciani, Giovanni
+Lardera, Berto
+Largillière, Nicolas de
+Larionov, Mikhail
+Larkin, William
+Laroon the Younger, Marcellus
+Larson, Philip
+Larsson, Carl
+Larter, Richard
+Lasansky, Mauricio
+Laserstein, Lotte
+Lash, Jon
+Lassaw, Ibram
+Lassnig, Maria
+Last, First name
+Lastman, Pieter
+Laszlo, Philip Alexius de
+Latham, John
+Lathrop, Ida Pulis
+Laurana, Francesco
+Laurence, Samuel
+Laurencin, Marie
+Laurens, Henri
+Laurens, Jean-Paul
+Laurent, Ernest
+Laurent, J.
+Laurent, Jean Antoine
+Laurent, Robert
+Laurie, Robert
+Lautensack, Hans Sebald
+Lauvergne, Barthelemy
+Lavery, Sir John
+Lavier, Bertrand
+LaVigne II, Joseph
+Law, Alfred
+Lawranson, Thomas
+Lawrence, Jacob
+Lawrence, Sir Thomas
+Lawson, Ernest
+Lay, Ernest
+Lazo, Agustín
+Lazzell, Blanche
+Le Barbier, Jean-Jacques-François
+Le Bas, Edward
+Le Blon, Jakob Christof
+Le Brun, Charles
+Le Court, Giusto
+Le Fauconnier, Henri
+Le Gros I, Pierre
+Le Gros II, Pierre
+Le Lorrain, Louis-Joseph
+Le Lorrain, Robert
+Le Mire, Noël
+Le Moyne, François
+Le Nain, Antoine
+Le Nain, Louis
+Le Nain, Mathieu
+Le Prince, Jean-Baptiste
+Le Secq, Henri Jean-Louis
+Le Sidaner, Henri Eugene Augustin
+Le Sueur, Eustache
+Lea, Tom
+Leader, Benjamin Williams
+Leal, Fernando
+Léandre, Charles
+Lear, Edward
+Lebourg, Albert
+Lebrun, Rico
+Leck, Bart van der
+LeClear, Thomas
+Lederer, Johann Georg
+Leduc, Ozias
+Lee, Doris
+Lee, Frederick Richard
+Lee, John
+Leech, John
+Leeke, Ferdinand
+Leen, Nina
+Lee-Smith, Hughie
+Lefebvre, Jules-Joseph
+Lefévre, Robert-Jacques-François
+Lega, Sylvestro
+Légaré, Joseph
+Léger, Fernand
+Legros, Alphonse
+Leheutre, Gustave
+Lehmann, Arthur
+Lehmann, Henri
+Lehmann, Rolf
+Lehmbruck, Wilhelm
+Lehmden, Anton
+Leibl, Wilhelm
+Leigh, William R.
+Leighton, A.C.
+Leighton, Clare
+Leighton, Frederic, Lord
+Leighton, Nicholas Winfield Scott
+Leirner, Jac
+Leitch, William Leighton
+Leleu, Jean-François
+Leluja
+Lely, Sir Peter
+Lemaire, Jean
+Lemberger, Georg
+Lemieux, Annette
+Lemieux, Jean Paul
+Lemmen, Georges
+Lemmens, Théophile-Victor-Emile
+Lemoine, Jacques Antoine Marie
+Lemoine, Marie-Victoire
+Lemoyne II, Jean-Baptiste
+Lemoyne, Jean-Louis
+Lempicka, Tamara de
+Lenbach, Franz von
+Lenders, Emil W.
+Lenepveu, Jules-Eugène
+Leningrad Painter, The
+Lennox, Lord William Pitt
+Lens, Bernard
+Lenson, Michael
+Leochares
+Leonardo da Vinci
+Leoncillo, Leonardi
+Leoni, Leone
+Leoni, Ottavio
+Leoni, Pompeo
+Leonid
+Lepère, Auguste-Louis
+Lepicié, Michael Nicolas-Bernard
+Lépine, Stanislas
+Lerman, Leonid
+Lermond, Charles C.E.
+Lerolle, Henry
+Leslie, Alfred
+Leslie, Charles Robert
+Lessore, John
+Letendre, Rita
+Leth, Harald
+Lethière, Guillaume
+Leu the Elder, Hans
+Leutze, Emanuel Gottlieb
+Levi, Julian
+Levine, Jack
+Levine, Marilyn
+Levine, Sherrie
+Levinthal, David
+Levitan, Isaak Il'ich
+Levitskii, Dmitrii Grigorevich
+Levitt, Helen
+Lévy, Emile
+Levy, Joan
+Lévy-Dhurmer, Lucien
+Lewandowski, Edmund
+Lewis, Edmonia
+Lewis, George Robert
+Lewis, Jennie
+Lewis, John Frederick
+Lewis, Lucy M.
+Lewis, Martin
+Lewis, Maud
+Lewis, Norman
+Lewis, Professor Henry
+Lewis, Wyndham
+Lewitt, Sol
+Lexier, Micah
+Leyden, Lucas van
+Leys, Hendrick
+Leyster, Judith
+L'hermitte, Léon Augustin
+Lheureux, Louis-Ernest
+Lhote, André
+Li Fangying
+Li Hua
+Li Huayi
+Li Huixian
+Li Kan
+Li Keran
+Li Kuchan
+Li Pingfan
+Li Qi
+Li Wenxi
+Li Xiongcai
+Liang Zhihe
+Liao Lu
+Liberale da Verona
+Liberi, Pietro
+Liberman, Alexander
+Lichanotus, Indris
+Lichtenstein, Roy
+Licinio, Bernardino
+Lie, Jonas
+Liebermann, Max
+Liebling, Jerome
+Liefrinck, Cornelius
+Lievens, Jan
+Ligeti, Antal
+Ligozzi, Jacopo
+Liles, Catharine
+Liljefors, Bruno Andreas
+Lillio, Andrea
+Limbach, Russell
+Limbourg, Hermann
+Limbourg, Jean
+Limbourg, Paul
+Limosin, Léonard
+Lin Fengmian
+Lin Gang
+Lin Liang
+Lin Sanzhi
+Lin Yong
+Lin, Maya
+Linares, Don
+Linburg, Sue
+Linder, Ronald F.
+Lindner, Richard
+Lindquist, Mark
+Lindquist, Melvin
+Lingelbach, Johannes
+Linnell, John
+Linton, William
+Liotard, Jean-Étienne
+Lipchitz, Jacques
+Lippi, Filippino
+Lippi, Fra Filippo
+Lippi, Raffaele
+Lipscomb, CD
+Lira, Pedro
+Lismer, Arthur
+Liss, Johann
+Lissitzky, El
+Little, Ken
+Littlefield, William Horace
+Littleton, Harvey K.
+Liu Danzhai
+Liu Guosong
+Liu Jiyou
+Liu Kuiling
+Liu Shiru
+Liu Wenfu
+Liu Wenxi
+Liu Xian
+Liu Zijian
+Liverseege, Henry
+Livingston, Alex
+Lixars, S.C.
+Lizars, William Home
+Lobe, Robert
+Lochner, Stephan
+Lochrie, Elizabeth
+Locke Jr. of Norbury, William
+Locke, Charles Wheeler
+Locker, Edward Hawke
+Lockey, Rowland
+Lockhart, Sharon
+Logan, James
+Loggan, David
+Logsdail, William
+Lomahaftewa, Dan V.
+Lombard, Lambert
+Lombard, Warren P.
+Lombardo, Antonio
+Lombardo, Lodovico
+Lombardo, Pietro
+Lombardo, Tullio
+Long Tingba
+Long, Amelia
+Long, Charles
+Long, Edwin
+Long, McKendree Robbins
+Long, Richard
+Long, Sydney
+Long, Ted
+Longhi, Alessandro
+Longhi, Barbara
+Longhi, Pietro
+Longo, Robert
+Longstaff, John
+Lonsdale, James
+Lonsing, François-Louis
+Loo, Jean Baptiste van
+Loop, Leota Williams
+Lopez Garcia, Antonio
+Lopez Hernandez, Julio
+López y Portaña, Vicente
+Lopez, Bernardo
+Lopez, Carlos
+Lopez, George
+Lopez, George T.
+Lord, Caroline
+Lorenz, Richard
+Lorenzetti, Ambrogio
+Lorenzetti, Pietro
+Lorenzetti, Ugolino
+Lorenzi, Stoldo
+Lorenzo di Credi
+Lorenzo Monaco
+Lorenzo Veneziano
+Loth, Johann Carl
+Lotto, Lorenzo
+Lotz, Károly
+Lou, Liza
+Loudoun, Edith Maud Rawdon-Hastings, Countess of
+Lough, John Graham
+Louis de Clercq
+Louis, Hubert-Noël
+Louis, Morris
+Louis, Victor
+Love, Jim
+Lovell, Shaun
+Lovet-Lorski, Boris
+Low, Bertha Lea
+Lowe, Truman
+Lowinsky, Thomas
+Lowry, Keith
+Lowry, Laurence S.
+Lozowick, Louis
+Lu Fusheng
+Lu Hui
+Lu Shoukun
+Lu Xun
+Lu Yanshao
+Lu Zhi
+Luber, Patrick
+Luca di Tommè
+Lucas Villamil, Eugenio
+Lucas, David
+Lucas, John Seymour
+Lucchesi, Bruno
+Luce, Maximilien
+Lucero, Michael
+Luchian, Stefan
+Lucier, Mary
+Lucioni, Luigi
+Ludins, Ryah
+Luini, Bernardino
+Luks, George
+Lum, Ken
+Luminais, Evariste-Vital
+Lumis, Harriet Randall
+Lumsden, Ernest Stephen
+Luna, James
+Lundeberg, Helen
+Lundeen, George
+Lundstrøm, Vilhelm
+Lungren, Fernand Harvey
+Luo Gongliu
+Luo Zhongli
+Lüpertz, Markus
+Lurçat, Jean
+Lurie, Nan
+Luscomb, William Henry
+Luzzo, Giovanni
+Lyall, Laura Muntz
+Lydos
+Lyman, John Goodwin
+Lysippides Painter, The
+Lysippus
+Ma Yuan
+Maas the Younger, Johannes
+Mabe, Manabu
+Mabuse
+Macartney, Carlile Henry Hayes
+Mac'Avoy
+Maccallum, Andrew
+MacCameron, Robert Lee
+Macció, Rómulo
+Macdonald, Georgina
+MacDonald, J.E.H.
+MacDonald, J.W.G.
+MacDonald, Margaret
+Macdonald-Wright, Stanton
+MacDowell, Patrick
+Machiavelli, Zanobi
+MacIver, Loren
+MacKay
+Macke, August
+Mackennal, Bertram
+Mackenzie, Frederick
+Mackey, Beatrice Howie
+Mackie, Ray
+Mackintosh, Charles Rennie
+MacLaughlan, Donald Shaw
+Maclise, Daniel
+MacMonnies, Frederick W.
+MacMonnies, Mary Fairchild
+MacNair, Frances
+Macnair, Herbert
+MacNee, Colin
+MacNeil, Hermon Atkins
+Macomber, Mary
+MacPherson, Robert
+Macrae, Emma Fordyce
+MacRitchie, Lewis
+Maddelena Master
+Mader, Louis
+Maderno, Stefano
+Madrazo y Agudo, Jose De
+Madrazo y Garreta, Raimundo de
+Madrazo y Küntz, Federico de
+Maes, Nicolaes
+Maestosi, Francesco
+Maestro Pugliese-Abruzzese
+Maffei, Francesco
+Maganza, Alessandro
+Maggiotto, Domenico
+Magnasco, Alessandro
+Magner, Philippe
+Magritte, René
+Mahaffey, Merrill
+Mahdi, Muhammad
+Maher, Alice
+Mahon, Josephine
+Mahoney, Mike
+Mai Xianyang
+Maillol, Aristide
+Mainardi, Sebastiano
+Maine, Camillo
+Maineri, Francesco
+Mainolfi, Luigi
+Mair von Landshut
+Mais, Hilarie
+Maisch, Johann
+Maitani, Lorenzo
+Maitland, Paul
+Major, Ernest Lee
+Makart, Hans
+Makovsky, Konstantin Egorovich
+Makowski, Tadeusz
+Malbone, Edward Greene
+Malchair, John Baptist
+Maldonado, Alexander A.
+Maler zu Schwaz, Hans
+Malevich, Kasimir
+Malfatti, Anita
+Malinconico, Nicola
+Mallet, Jean-Baptiste
+Mallo, Maruja
+Malone, Robert R.
+Malouel, Jean
+Malpass, Michael
+Maltese, Francesco
+Maltwood, Katherine Emma
+Man Ray
+Mander, Karel van
+Mandijn, Jan
+Mandlebaum, Bill
+Manessier, Alfred
+Manet, Édouard
+Manfredi, Bartolomeo
+Mangold, Robert
+Mangold, Sylvia Plimack
+Mangos, Simone
+Manguin, Henri
+Manley, Thomas
+Mann, J.H.S.
+Mann, Sally
+Manship, Paul
+Manson, James Bolivar
+Mansueti, Giovanni
+Mantegazza, Antonio
+Mantegazza, Cristoforo
+Mantegna, Andrea
+MANUAL
+Manuel, Niklaus
+Man-young, Han
+Manzoni, Piero
+Manzù, Giacomo
+Manzuoli, Tommaso
+Mao Lizi (Zhang Zhunli)
+Maoye, Sheng
+Ma-Pe-Wi
+Mapplethorpe, Robert
+Maratta, Carlo
+Marc, Franz
+Marca-Relli, Conrad
+Marchesini, Alessandro
+Marchiori, Giovanni
+Marcillat, Guillaume de
+Marcks, Gerhard
+Marco d'Oggiono
+Marcoussis, Louis
+Marden, Brice
+Marées, Hans von
+Marescotti, Antonio
+Margaritone d'Arezzo
+Margolies, Samuel
+Mariani, Camillo
+Mariani, Carlo Maria
+Marie, Jane Golding
+Marieschi, Michele Giovanni
+Marilhat, Prosper
+Marillier, Clément Pierre
+Marin, Javier
+Marin, John
+Marinali, Orazio
+Marinari, Onorio
+Marinetti, Filippo Tommaso
+Marini, Marino
+Marioni, Dante
+Marioni, Joseph
+Maris, Jacob Henricus
+Maris, Matthijs
+Maris, Willem
+Marisaldi, Eva
+Marisol
+Mark, George Washington
+Mark, Mary Ellen
+Markham, Kyra
+Markow, Jack
+Marks, Henry Stacy
+Marlow, William
+Marmion, Simon
+Marmitta, Francesco
+Marochetti, Carlo
+Maron, Anton von
+Marquet, Albert
+Marquez de Velasco, Esteban
+Marsh, Reginald
+Marshall, Benjamin
+Marsingall, A.
+Marsy II, Gaspard
+Marsyas Painter, The
+Marta, Luigi
+Martens, Conrad
+Martens, Willem
+Martin, Agnes
+Martin, Charles
+Martin, David Stone
+Martin, Dennis
+Martin, Douglas
+Martin, Elias
+Martin, Henri
+Martin, Homer Dodge
+Martin, John
+Martin, Thomas Mower
+Martineau, Robert Braithwaite
+Martinek, Dwight
+Martinelli, Giovanni
+Martinez, Julian
+Martinez, María
+Martinez, Santana
+Martini, Arturo
+Martini, Simone
+Martino di Bartolomeo di Biago
+Martorell, Bernardo
+Maruyama Okyo
+Masaccio
+Masaji Yoshida
+Masanobu, Okumura
+Masayoshi, Kitao
+Mascherini, Marcello
+Masek, Vitezlav Karel
+Maso di Banco
+Masolino da Panicale
+Mason, Elaine
+Mason, George
+Mason, James
+Mason, Maud Mary
+Mason, Raymond
+Mason, Roy
+Masson, André
+Massou, Benoît
+Massys, Quentin
+Master A.C.
+Master A.G.
+Master B. of the Die
+Master Bertram
+Master E.S.
+Master F.V.B.
+Master I.K.
+Master Jacomo
+Master LCz
+Master M.S.
+Master M.Z.
+Master of 1419
+Master of Apollo and Daphne
+Master of Female Half-Lengths
+Master of Flora
+Master of Frankfurt
+Master of Heiligenkreuz
+Master of Hoogstraeten
+Master of Jánosrét
+Master of Mary of Burgundy
+Master of Pratovecchio
+Master of Saint Francis
+Master of Saint Gilles
+Master of Saint Gregory
+Master of Saint Veronica
+Master of San Francesco Bardi
+Master of San Jacopo a Mucciana
+Master of Santo Spirito
+Master of the Acts of Mercy
+Master of the Aix-en-Chapel Altarpiece
+Master of the Annunciation to the Shepherds
+Master of the Augsburg Visitation
+Master of the Avignon School
+Master of the Bardi Saint Francis
+Master of the Baroncelli Portraits
+Master of the Battle of Fornovo
+Master of the Berswordt Altar
+Master of the Candle
+Master of the Castello Nativity
+Master of the Coburg Roundels
+Master of the Codex of Saint George
+Master of the Cypresses
+Master of the David and Saint John Statuettes
+Master of the Dinteville Allegory
+Master of the Dominican Effigies
+Master of the Duke of Bedford
+Master of the Embroidered Foliage
+Master of the Fogg Pietà
+Master of the Franciscan Crucifixes
+Master of the Griselda Legend
+Master of the Holy Family
+Master of the Housebook
+Master of the Joseph Legend
+Master of the Karlsruhe Passion
+Master of the Khanenko Adoration
+Master of the Latour d'Auvergne Triptych
+Master of the Life of Saint John the Baptist
+Master of the Life of the Virgin
+Master of the Magdalen Legend
+Master of the Manna
+Master of the Marble Madonnas
+Master of the Mascoli Altar
+Master of the Middle-Rhine
+Master of the Morrison Triptych
+Master of the Osservanza
+Master of the Pfullendorf Altar
+Master of the Playing Cards
+Master of the Polling Panels
+Master of the Portraits of the Princes
+Master of the Prado's Adoration of the Magi
+Master of the Procession
+Master of the Rebel Angels
+Master of the Retablo of the Reyes Catolicos
+Master of the Rinuccini Chapel
+Master of the Saint Bartholomew Altarpiece
+Master of the Saint Catherine Legend
+Master of the Saint Lucy Legend
+Master of the Saint Ursula Legend
+Master of the Stötteritz Altar
+Master of the Tegernsee Passion
+Master of the Thuison Altarpiece
+Master of the Tibertine Sibyl
+Master of the View of Sainte Gudule
+Master of Virgo inter Virgines
+Master S.
+Masters of the Fontainebleau
+Masters, E.
+Mastroianni, Umberto
+Mastro-Valerio, Alessandro
+Matejko, Jan
+Matham, Jacob
+Mathews, Arthur Frank
+Matisse, Henri
+Matisse, Paul
+Matsubara, Naoko
+Matta, Roberto
+Matta-Clark, Gordon
+Matteis, Paolo de'
+Matteo da Gualdo
+Matteo di Giovanni
+Matteson, Tompkins Harrison
+Matthews, Marmaduke
+Mattiacci, Eliseo
+Mattioli, Carlo
+Mattis-Teutsch, Hans
+Matulka, Jan
+Maufra, Maxime
+Maulbertsch, Franz Anton
+Mauperché, Henri
+Maureau, Alphonse
+Maurer, Alfred Henry
+Mauve, Anton
+Maverick, Peter Rushton
+Max, Peter
+Maxence, Edgar
+Maxwell, Donald
+May, Phil
+Mayall, John Jabez Edwin
+Mayer, Frank Blackwell
+Mayer-Lamartinière, Marie-Françoise-Constance
+Mayhew, Frederick W.
+Mayno, Juan Bautista
+Mayr, Christian
+Mazo, Juan Bautista Martínez del
+Mazzacurati, Marino
+Mazzinghi, Pietro
+Mazzola Bedoli, Girolamo
+Mazzolino, Ludovico
+Mazzoni, Guido
+Mazzucconi, Marco
+Mazzuoli, Giuseppe
+McAvoy, Marilyn
+McBey, James
+McCarthy, Catherine
+McCarthy, Gail
+McCartney, Linda
+McCaslin, Jack
+McCloskey, William J.
+McCollum, Allan
+McCubbin, Frederick
+McDermott, Emma
+McEvoy, Ambrose
+McEwen, John
+McFarlane, Duncan
+McGee, Charles
+McIntosh, Harrison
+McKenzie, Robert Tait
+McKissick, Louise
+McLaughlin, John
+McLean, Richard
+McLean, T.W.
+McMaster, Gerald
+McMillan, Leo
+McMillen, Michael
+McNeil, George
+McNicoll, Helen
+McSheehy, Cornelia
+McTaggart, William
+McVeigh, Blanche
+Mead, Mary
+Mead, Ray
+Meadows, Bernard
+Meatyard, Ralph Eugene
+Meckenem, Israhel van
+Meegan, Tim
+Mehoffer, Józef
+Meidias Painter, The
+Meidner, Ludwig
+Meireles de Lima, Vítor
+Meissner, Leo J.
+Meissonier, Jean-Louis-Ernest
+Meistermann, Georg
+Meit, Conrad
+Melchers, Gari
+Meldrum, Max
+Meleager Painter, The
+Meléndez, Luis Egidio
+Mellan, Claude
+Mellery, Xavier
+Melli, Roberto
+Mellis, Margaret
+Melotti, Fausto
+Melozzo da Forlí
+Melrose, Andrew
+Meltsner, Paul
+Melville, Arthur
+Melzi, Francesco
+Memling, Hans
+Memmi, Lippo
+Menabuoi, Giusto de
+Méndez, Leopoldo
+Mendieta, Ana
+Mendoza, June
+Mene, Pierre-Jules
+Meneses Osorio, Francisco
+Mengin, Charles August
+Mengs, Anton Raphael
+Menière, Paul-Nicolas
+Mennie, Steve
+Menpes, Mortimer
+Menzel, Adolf von
+Menzler-Payton, Bertha
+Mercié, Marius-Jean-Antonin
+Mercier, Philip
+Meredith, John
+Merian, Maria Sibylla
+Mérida, Carlos
+Merivale, Francis
+Merle, Hugues
+Merritt, Anna Lea
+Meryon, Charles
+Merz, Mario
+Merz, Marisa
+Messager, Annette
+Messerschmidt, Franz Xaver
+Messina, Francesco
+Mestrovic, Ivan
+Met de Bles, Henry
+Metcalf, Willard Leroy
+Meteyard, Sidney
+Metson, Graham
+Metsu, Gabriel
+Metzinger, Jean
+Metzner, Barry 
+Meulen, Adam-Franz van der
+Meulen, Steven van der
+Meurer, Charles A.
+Meyer II, Hendrik de
+Meyer, James
+Meyer, Johann Georg
+Meyerowitz, Joel
+Meytens, Martin van
+Mi Fu
+Michaels, James
+Michallon, Achille Etna
+Michalov, Ann
+Michel, Alfonso
+Michel, Georges
+Michelangelo Buonarroti
+Michele da Verona
+Michele Pannonio
+Micheli, Parrasio
+Michelin, Jean
+Michelli, Andrea
+Michelmore, Richard
+Michelozzo di Bartolomeo
+Miel, Jan
+Mielatz, Charles Frederick William
+Mielich, Hans
+Miereveld, Michiel Jansz.
+Mieris the Elder, Frans van
+Mieris, Jan van
+Mieris, Willem van
+Mies van der Rohe, Ludwig
+Mignard, Nicolas
+Mignard, Pierre
+Mignon, Abraham
+Mignot, Louis Rémy
+Mijn, Frans van der
+Milani, Aureliano
+Milani, Umberto
+Millais, John Everett
+Millar, James
+Millares Sall, Manuel
+Miller, Alfred Jacob
+Miller, Dewey
+Miller, Fred E.
+Miller, George M.
+Miller, James
+Miller, Kenneth Hayes
+Miller, Melissa
+Miller, Richard
+Miller, Richard Emil
+Miller, Ross
+Miller, Sally
+Miller, Samuel
+Miller, William Rickarby
+Millet, Francis Davis
+Millet, Francisque
+Millet, Jean-François
+Millier, Arthur H.
+Millington, Professor
+Milne, David
+Minguzzi, Luciano
+Minne, George
+Mino da Fiesole
+Minor, Anne Rogers
+Minozzi, Flaminio Innocenzo
+Minton, John
+Mir, Joaquín
+Mirbel, Lizinka-Aimée-Zoé de
+Miró, Joan
+Mirola, Girolamo
+Miseroni, Ottavio
+Mitchell, Joan
+Mitchnick, Nancy
+Mitsunobu, Hasegawa
+Miyajima, Tatsuo
+Mocetto, Girolamo
+Mochi, Francesco
+Moderno
+Modersohn-Becker, Paula
+Modigliani, Amadeo
+Modotti, Tina
+Moeller, Louis Charles
+Mohalyi, Yolanda
+Moholy-Nagy, László
+Mohrmann, John Henry
+Moillon, Louisa
+Mola, Pier Francesco
+Moldvay, Albert
+Molenaer, Jan Miense
+Molinari, Guido
+Moll, Carl
+Molyn, Pieter de
+Molzahn, Johannes
+Momper II, Joos de
+Mompó, Manuel Hernández
+Monaldi, Paolo
+Monamy, Peter
+Mondrian, Piet
+Monet, Claude
+Monnington, Sir Thomas
+Monnot, Pierre Étienne
+Monnoyer, Jean-Baptiste
+Monro, Dr. Thomas
+Montagna, Bartolomeo
+Montañez, Juan Martinez
+Montardier
+Montenegro, Roberto
+Montgomerie, Stewart
+Monti, Francesco
+Monti, Gaetano
+Monticelli, Adolphe-Joseph-Thomas
+Montorsoli, Giovanni Angelo
+Montoya, Gustavo
+Monvoisin, Raymond
+Moody, Ronald
+Moon-seup, Shim
+Moore 1831-2008, Henry
+Moore, Albert Joseph
+Moore, Charles
+Moore, Henry
+Moore, T.
+Moore-Park, Carton
+Mooy, Jan
+Mopope, Stephen
+Moppett, Carroll
+Mor, Anthonis
+Mora, Francis Luis
+Moraldo, Paolo
+Morales, Luis de
+Moran, Edward
+Moran, Kate
+Moran, Thomas
+Morandi, Giorgio
+Mordecai, Joseph
+More, Jacob
+Moreau, Gustave
+Moreau, Jean-Michel
+Moreau, Louis Gabriel
+Moreau, Luc-Albert
+Moreelse, Paulus
+Morellet, François
+Moret, Henri
+Moretto da Brescia
+Morgan, Barbara
+Morgan, Georgia Weston
+Morgan, Leslie
+Morgan, William Evan Charles
+Mori Yoshitoshi
+Mori, Camilo
+Mori, Mariko
+Morimura, Yasumasa
+Morisot, Berthe
+Moriyama, Daido
+Morlaiter, Giovan Maria
+Morland, George
+Morland, Henry Robert
+Morley, Eugene
+Morley, Malcolm
+Morlotti, Ennio
+Moro, Liliana
+Moroles, Jesús Bautista
+Moroni, Giovanni Battista
+Moronobu, Hishikawa
+Morrice, James Wilson
+Morris, Charles
+Morris, George L.K.
+Morris, glassmaker William
+Morris, Philip Richard
+Morris, Robert
+Morris, Sir Cedric
+Morris, William
+Morris, Wright
+Morrison, George
+Morrisseau, Norval
+Morse, Samuel F.B.
+Mortensen, Richard
+Mortimer, John Hamilton
+Morton, Andrew
+Morton, Christina
+Moses, Ed
+Moses, Grandma
+Moses, Henry
+Mosnier, Jean-Laurent
+Mossa, Gustave Adolphe
+Mostaert, Jan
+Motherwell, Robert
+Motley, Archibald
+Mottet, Jeanie Gallup
+Mottez, Victor
+Moucheron, Isaac de
+Moulin, Hypolyte-Alex-Andre-Julien
+Mount, William Sidney
+Mowbray, H. Siddons
+Moynihan, Rodrigo
+Mu Xi
+Muccini, Marcello
+Mucha, Alphonse
+Mueller, Otto
+Muerarity, R. Bruce
+Mühl, Otto
+Mulier, Pieter
+Müller, Charles
+Müller, Fritz
+Muller, Jan H.
+Müller, William James
+Mullican, Matt
+Mulready, William
+Multscher, Hans
+Munakata, Shiko
+Munari, Cristoforo
+Munch, Edvard
+Munger, Gilbert
+Munkácsy, Mihály
+Munn, Paul Sandby
+Munnings, Sir Alfred James
+Muñoz Martinez, Lucio
+Muñoz, Juan
+Münter, Gabriele
+Muray, Nickolas
+Murch, Walter
+Murillo, Bartolomé Esteban
+Murphy, Catherine
+Murphy, Deborah
+Murphy, John Francis
+Murphy, John J.A.
+Murphy, Minnie Lois
+Murphy, Myles
+Murphy, Nelly Littlehale
+Murray, Albert K.
+Murray, Charles Fairfax
+Murray, Dr. John
+Murray, Elizabeth
+Murray, Robert
+Musgrave, George
+Musikiysky, Grigoriis
+Musscher, Michiel van
+Mussoff, Jody
+Muybridge, Eadweard
+Muziano, Girolamo
+Myers, Jerome
+Mytens the Elder, Daniel
+Nadar, Félix
+Nadelman, Elie
+Nagahide, Yûrakusai
+Nahl, Charles Christian
+Nakian, Reuben
+Naldini, Giovanni Battista
+Namingha, Dan
+Nampeyo
+Nanni di Banco
+Nanni di Bartolo
+Nanteuil, Célestin François
+Nanteuil, Robert
+Naples Painter, The
+Nardo di Cione
+Nardo, Mariotto di
+Narovec, G.
+Nash, David
+Nash, Frederick
+Nash, John
+Nash, Paul
+Nasmyth, Patrick
+Nason, Gertrude
+Nason, Thomas Willoughby
+Nast, Thomas
+Natkin, Robert
+Natoire, Charles Joseph
+Natt, Phoebe Davis
+Nattes, John Claude
+Nattier, Jean-Marc
+Nauman, Bruce
+Navez, François-Joseph
+Nay, Ernst Wilhelm
+Naylor, Marie J.
+Neagle, John
+Neale, John Preston
+Nebot, Balthazar
+Neeffs I, Peeter
+Neel, Alice
+Neel, David
+Neer, Aert van der
+Neer, Eglon Hendrick van der
+Neff, Bill
+Nègre, Charles
+Negri, Mario
+Nehlig, Victor
+Nelson, Eric
+Nerdrum, Odd
+Nerger, Ethel Pearce
+Neri di Bicci
+Neri, Manuel
+Neroccio
+Nesbitt, Lowell
+Nesfield, William Andrews
+Nesterov, Mikhail Vasil'evich
+Netscher, Caspar
+Netzer, Don
+Neufchatel, Nicolas
+Neumann, Gilbert F.
+Neuville, Alphonse-Marie-Adolphe de
+Nevelson, Louise
+Nevinson, Christopher Richard Wynne
+Nevitt, Richard Barrington
+Newdigate, Ann
+Newhall, Harriot
+Newman, Barnett
+Newman, John
+Newman, Richard
+Newns, Bill
+Newton, Ann Mary
+Newton, Gilbert Stuart
+Newton, Lilias Torrance
+Newton, Sir William
+Niccolò d'Angelo
+Niccolo Dell'Arca
+Niccolo di Buonaccorso
+Niccolò di Ser Sozzo Tegliacci
+Niccolò Fiorentino
+Nicholls, Burr
+Nicholls, Rhoda Holmes
+Nichols, Dale
+Nicholson, Ben
+Nicholson, Francis
+Nicholson, Mabel
+Nicholson, Sir William
+Nicholson, Thomas Henry
+Nicholson, Winifred
+Nick, George
+Nickel, Grace
+Niclaus of Haguenau
+Nicodemo da Guardiagrele
+Nicol, Erskine
+Nicola da Urbino
+Nicola di Maestro Antonio d'Ancona
+Nicolaus
+Nicoll, Marion
+Nicolò
+Nicolo da Bologna
+Nicolo de Bonis
+Nicosia, Nic
+Nielsen, Jais
+Nielsen, Kay
+Nilsson, Gladys
+Niobid Painter, The
+Nitsch, Hermann
+Nix, Darwin
+Nixon, Job
+Nixon, John
+Noda, Tetsuya
+Noel, Scott
+Nogari, Giuseppe
+Noguchi, Isamu
+Nolan, Sidney
+Noland, Cady
+Noland, Kenneth
+Nolde, Emil
+Nollekens, Joseph
+Nonell, Isidro
+Nooms, Reinier
+Noordt, Joan van
+Nordfeldt, Bror Julius Olsson
+Nordman, Maria
+North, F.E.
+Northcote, James
+Noseworthy, George
+Nourse, Elizabeth
+Novelli, Pietro Antonio
+Nunez de Villavicencio, Pedro
+Nunez del Valle, Pedro
+Nuñez, Guillermo
+Nutt, Jim
+Nuvaquirq, Mosesie
+Nuvolone, Carlo Francesco
+Nuyen, Wijnand
+Nuzi, Allegretto
+Oakley, Violet
+Óbidos, Josefa de
+O'Brien, John
+O'Brien, Lucius R.
+Ocampo, Isidoro
+Ochsner, Ernest
+Ochtervelt, Jacob
+Ochtman, Dorothy
+Ochtman, Mina Fonda
+O'Connor, James Arthur
+Odjig, Daphne
+Odom, Randy E.
+Oelschig, Augusta
+Offner, Elliot
+Ogata Korin
+O'Gorman, Juan
+O'Higgins, Pablo
+Ohr, George E.
+Ohtake, Tomie
+O'Keeffe, Georgia
+Oldenburg, Claes
+Oldermann
+Oldfield, Otis W.
+Olds, Elizabeth
+Oliveira, Nathan
+Oliver, Isaac
+Oliver, Madge
+Oliver, T. Clark
+Oliver, William
+Olowe of Ise
+Oltos
+Omaha Painter, The
+Onderdonk, Robert
+O'Neill, George Bernard
+Onofrij, Crescenzio
+Onofrio, Judy
+Onosato, Toshinobu
+Oonark, Jessie
+Oost the Elder, Jacob van
+Oostsanen, Jacob Cornelisz van
+Opalka, Roman
+Opazo Bernales, Rodolfo
+Opie, John
+Opie, Julian
+Opitz, Georg Emanuel
+Oppenheim, Dennis
+Oppenheim, Meret
+Oppenheim, Moritz Daniel
+Oppenheimer, J.
+Opstal, Gerard van
+Oram, W.
+Orazio De Ferrari
+Orcagna, Andrea di
+Orchardson, Sir William Quiller
+Orley, Bernaert van
+Orloff, Gregory
+Orozco Romero, Carlos
+Orozco, José Clemente
+Orpen, Sir William
+Orrente, Pedro
+Orsi, Lelio
+Orso
+Ortiz, Angel
+Ortiz, Francisco Pradilla
+Ortman, George
+Ortolano Ferrarese
+Ortuzar Worthington, Carlos
+Os, Pieter Gerardus van
+Osai
+Osbert, Alphonse
+Osborn, Emily Mary
+Osborn, William Evelyn
+Osborne, Malcolm
+Osborne, Michael
+Osborne, Walter Frederick
+Osgood, Charles
+Oshuitoq, Ningeeuga
+Osorio, Pepón
+Ossorio, Alfonso
+Ostade, Adriaen van
+Ostade, Isaack van
+Osthaus, Edmund Henry
+Osuitok, Ipeelee
+O'Sullivan, Timothy
+Oteiza Embil, Jorge de
+Otero, Paul
+Otterson, Joel
+Ottley, William Young
+Ouattara
+Oudry, Jean-Baptiste
+Ouizille, Charles
+Ouless, Walter William
+Oulton, Thérèse
+Oursler, Tony
+Outterbridge, John
+Ovens, Jürgen
+Overbeck, Johann Friedrich
+Owen, William
+Pablo de San Leocadio
+Pacecco de Rosa
+Pacher, Michael
+Pacino di Bonaguida
+Paelinck, Joseph
+Pagani, Gregorio
+Paganin, Giovanni
+Page, Edward A.
+Page, William
+Pai, John
+Paik, Nam June
+Pajou, Augustin
+Palacios, Francisco de
+Paladino, Mimmo
+Palazuelo, Pablo
+Palencia, Benjamín
+Palissy, Bernard
+Palladio, Andrea
+Palma Giovane
+Palma Vecchio
+Palmer, Alfred Herbert
+Palmer, Erastus Dow
+Palmer, Frances Flora Bond
+Palmer, Herbert S.
+Palmer, Samuel
+Palmezzano, Marco
+Pamphaios
+Pan Painter, The
+Pan Tianshou
+Pan Yuliang
+Panamarenko
+Pancetti, José
+Pancho V
+Pang Tao
+Pang Xunqin
+Pannini, Giovanni Paolo
+Panunzi, Benito
+Paolini, Giulio
+Paolo di Giovanni Fei
+Paolo Romano
+Paolo Veneziano
+Paolozzi, Eduardo
+Papageorge, Georgie
+Papéty, Dominique Louis
+Parenzano, Bernardino
+Paris, Matthew
+Parish, David
+Park, David
+Park, Linton
+Parker, Barry
+Parker, Lawton
+Parker, William A.
+Parks, Gordon
+Parler, Peter
+Parmigianino
+Parodi, Filippo
+Parr
+Parr, Mike
+Parris, Edmund Thomas
+Parrish, Maxfield
+Parrott, William
+Pars, William
+Parsons, Alfred
+Parsons, Charles
+Parsons, Paul
+Partridge, Nehemiah
+Partridge, Roi
+Pascali, Pino
+Paschke, Edward
+Pascin, Jules
+Pasinelli, Lorenzo
+Pasmore, Victor
+Pasquier, Pierre
+Passeri, Giuseppe
+Passerotti, Bartolomeo
+Patas, Charles Emmanuel
+Patel, Pierre
+Pater, Jean-Baptiste Joseph
+Patinir, Joachim
+Paton, Sir Joseph Noel
+Patrick, James McIntosh
+Pattein, Cesar
+Patten, George
+Patten, William
+Paudiss, Christopher
+Paul, Joseph
+Paulsen, Brian
+Paxson, Edgar S.
+Paxson, Ethel
+Paxton, William McGregor
+Payette, Jacques
+Payne, Edgar Alwin
+Payne, Elsie
+Payne, Henry Arthur
+Payne, Jon, CML
+Payne, William
+Peake, Robert
+Peale, Anna Claypoole
+Peale, Charles Willson
+Peale, Harriet Cany
+Peale, James
+Peale, Margaretta Angelica
+Peale, Mary
+Peale, Raphaelle
+Peale, Rembrandt
+Peale, Rubens
+Peale, Sarah Miriam
+Peale, Titian
+Pearce, Charles Sprague
+Pearce, Edward
+Pearce, Gary
+Pearlstein, Philip
+Pearson, Bruce
+Pearson, Marguerite Stuber
+Pearson, Mary Martha
+Pechstein, Max
+Pecht, August Friedrich
+Peck, Augustus H.
+Pedro de la Cuadra
+Pedro de Mena
+Peed, Michael
+Peel, Paul
+Peeters I, Bonaventura
+Peeters, Clara
+Pei, I.M.
+Pelham, Peter
+Pellan, Alfred
+Pellegrin, Honoré
+Pellegrini, Domenico
+Pellegrini, Giovanni Antonio
+Pelouse, Léon-Germain
+Pels, Marsha
+Pemberton, Sophie
+Peña, Tonita
+Penck, A.R.
+Pencz, Georg
+Pène du Bois, Guy
+Penn, Irving
+Pennell, Joseph
+Penni, Giovan Francesco
+Pennington, Bud
+Pennington, Harper
+Penone, Giuseppe
+Penrose, Sir Roland
+Pensionante del Saraceni
+Pepion, Ernie
+Pepper, Beverly
+Peracino, Lorenzo
+Percy, Lady Susan Elizabeth
+Pereda, Antonio de
+Perehudoff, William
+Pereira, I. Rice
+Peress, Gilles
+Perez, Augusto
+Perignon I, Alexis Nicolas
+Perino del Vaga
+Perlin, Rae
+Permoser, Balthasar
+Perraud, Philibert
+Perréal, Jean
+Perrin, Philippe
+Perronneau, Jean-Baptiste
+Perry, Clara Greenleaf
+Perry, Lilla Cabot
+Persico, Mario
+Perugini, Charles E.
+Perugino, Pietro
+Pesellino
+Pesne, Antoine
+Petel, Jörg
+Peterdi, Gabor
+Peterson, Jacob
+Peterson, Jane
+Peterson, Larry
+Pether, Abraham
+Pethick, Jerry
+Peto, John Frederick
+Petrascu, Gheorghe
+Pettenkofen, August Xaver Karl
+Petter, Franz Xaver
+Pettie, John
+Pettit, Carol
+Pettrich, Ferdinand
+Peyron, Pierre
+Pfaff, Judy
+Pfeiler, Maximilian
+Pforr, Franz
+Phiale Painter
+Phidias
+Phillip, John
+Phillips, Ammi
+Phillips, Gordon
+Phillips, Laura
+Phillips, Marjorie
+Phillips, Peter
+Phillips, Richard
+Phillips, Tom
+Phillips, Walter J.
+Philpot, Glyn
+Phrynos Painter, The
+Piazetta, Giovanni Batista
+Piazza, Callisto
+Picabia, Francis
+Picart, Bernard
+Picasso, Pablo
+Pickenoy, Nicolaes Eliasz.
+Pickersgill, Frederick Richard
+Pickersgill, Henry Hall
+Pickersgill, Henry William
+Pierino da Vinci
+Piero della Francesca
+Piero di Cosimo
+Pierre, Jean-Baptiste Marie
+Piet, Fernand
+Pietersz the Younger, Pieter
+Pietro da Cortona
+Pietro da Rho
+Pietro degli Ingannati
+Pietro di Giovanni d'Ambrogio
+Piette, Ludovic
+Pigalle, Jean-Baptiste
+Pignoni, Simone
+Pike, John
+Pillement, Jean Baptiste
+Pilo, Carl Gustaf
+Pilon, Germain
+Pils, Isidore
+Pinaigiers, Jean
+Pindell, Howardena
+Pine, Robert Edge
+Pine, Theodore E.
+Pineda, Jose
+Pinkney, Jerry
+Pinney, Eunice
+Pinturicchio
+Pintz, Johann Georg
+Piola, Domenico
+Piper, John
+Piper, Rose
+Pippin, Horace
+Piqtoukun, David Ruben
+Piranesi, Giovanni Battista
+Pisanello
+Pisani, Gianni
+Pisani, Vettor
+Pisano, Andrea
+Pisano, Giovanni
+Pisano, Nicola
+Pisano, Nino
+Pissarro, Camille
+Pissarro, Lucien
+Pistoletto, Michelangelo
+Pitsiulak, Lipa
+Pittman, Lari
+Pittoni, Giovanni Battista
+Piza, Arthur Luiz
+Pizzinato, Armando
+Place, Francis
+Plamondon, Antoine
+Plas, Pieter van der
+Platzer, Johann Georg
+Pleissner, Ogden
+Plepp, Joseph
+Pleydenwurff, Hans
+Pocci, Graf Franz Von
+Pocock, Isaac
+Pocock, Nicholas
+Poel, Egbert van der
+Poelenburgh, Cornelis van
+Poggini, Domenico
+Point, Armand
+Polack, Jan
+Polenov, Vasiliy
+Poliakoff, Serge
+Polidoro Lanzani
+Polk, Charles Peale
+Polke, Sigmar
+Pollaiolo, Antonio
+Pollaiolo, Piero
+Pollard Limner, The
+Pollard, James
+Pollard, Robert
+Pollock, Jackson
+Pollock, John
+Polos, Theodore C.
+Polygnotos
+Pommer, Julius J.
+Pomodoro, Giò
+Ponç, Joan
+Ponce de Leon y Cabello, Alfonso
+Pont, Charles Ernest
+Pontormo
+Poole, Abram
+Poons, Lawrence
+Pootoogook, Kananginak
+Pope Jr., Carl Robert
+Popova, Liubov
+Poppi, Il
+Porcellis, Jan
+Pordenone, Il
+Porta, Giacomo della
+Porta, Giuseppe
+Porta, Guglielmo della
+Portail, Jacques André
+Porter, Brian
+Porter, Charles
+Porter, Fairfield
+Porter, Sir Robert Ker
+Portinari, Candido
+Posada, José Guadalupe
+Post, Frans
+Pot, Hendrick Gerritsz.
+Potre, Le
+Potter, Beatrix
+Potter, Carter
+Potter, Frank Huddlestone
+Potter, Mary
+Potter, Mike
+Potter, Paulus
+Potthast, Edward Henry
+Pougny, Jean
+Pourbus the Elder, Frans
+Pourbus the Younger, Frans
+Pourbus, Pieter
+Pousette-Dart, Richard
+Poussin, Nicolas
+Powell, Joseph
+Powers, Asahel
+Powers, Hiram
+Powers, Marion
+Poyet, Jean
+Poynter, Sir Edward
+Pozzatti, Rudy
+Pozzi, Lucio
+Pozzo, Andrea
+Pradier, James
+Prado, Marina Nuñez del
+Prampolini, Enrico
+Pranghofer, Frank
+Pratt, Bela Lyon
+Pratt, Christopher
+Pratt, Frances
+Pratt, Mary
+Pratt, Matthew
+Praxiteles
+Predator
+Predis, Ambrogio de
+Prendergast, Charles
+Prendergast, Maurice
+Prentice, Levi Wells
+Preston, Jessie Goodwin
+Preston, Margaret
+Prestopino, Gregorio
+Preti, Mattia
+Price, Irene
+Prieur, Barthélémy
+Prikker, Johan Thorn
+Primaticcio, Francesco
+Prince, Richard
+Pringle, J.
+Pringle, John Quinton
+Prinsep, Valentine Cameron
+Prinsep, William
+Printz, Hank
+Prior, Scott
+Prior, William Matthew
+Procaccini Il Giovane, Ercole
+Procaccini, Giulio Cesare
+Procter, Dod
+Proctor, Alexander Phimister
+Properzia de Rossi
+Prout, Samuel
+Provost, Jan
+Prud'hon, Pierre-Paul
+Pruna, Pedro
+Pruszkowski, Witold
+Puccio di Simone
+Pucelle, Jean
+Pudlat, Pudlo
+Puelma, Hernán
+Puelz, Susan
+Puga, Antonio
+Puget, Pierre
+Puligo, Domenico
+Puryear, Martin
+Pusey, John
+Pushman, Hovsep
+Puthuff, Hanson D.
+Putnam, Jane
+Puvis de Chavannes, Pierre
+Puy, Jean
+Pyle, Aaron
+Pyle, Howard
+Pynacker, Adam
+Pynas, Jacob
+Pynas, Jan
+Pyne, William Henry
+Python
+Qi Baishi
+Qian Juntao
+Qian Songyan
+Qian Xuan
+Qianlong, Emperor
+Qipei, Gao
+Qiu Ti
+Qu Ding
+Quadal, Martin Ferdinand
+Quan Shanshi
+Quarenghi, Giacomo
+Quarton, Enguerrand
+Quast, Pieter Jansz
+Quellinus, Erasmus
+Quercia, Jacopo della
+Quesnel, François
+Quidor, John
+Quinn, Marc
+Quinn, Thomas
+Quinnuayuak, Lucy
+Raadal, Erik
+Raboy, Mac
+Rackham, Arthur
+Rae, Fiona
+Raeburn, Sir Henry
+Raetz, Markus
+Raffael, Joseph
+Raffaëlli, Jean-François
+Raffet, Denis Auguste Marie
+Ráfols Casamada, Albert
+Ragalzi, Sergio
+Raggi, Antonio
+Raimondi, Marcantonio
+Rain, Charles
+Rainer, Arnulf
+Raleigh, Charles S.
+Ralph, Benjamin
+Ralston, John
+Rambaldi, Carlo Antonio
+Ramenghi, Giovan Battista
+Ramírez de Arellano, Christóbal
+Ramos Martínez, Alfredo
+Ramos, Mel
+Ramsay, Allan
+Ramsay, Hugh
+Ramunno, Tony
+Randall, A.M.
+Randall-Page, Peter
+Randolph, Lynn M.
+Rangel, Ricardo
+Ranger, Henry Ward
+Rankin, Jerry
+Ranney, William Tylee
+Ranson, Paul
+Raoux, Jean
+Raphael
+Raphael Mafai, Antonietta
+Raphael, Joseph
+Raphael, Mary F.
+Raschen, Henry
+Ratgeb, Jörg
+Rathsack, Sterling
+Rattner, Abraham
+Rau, William Herman
+Rauschenberg, Robert
+Raveel, Roger
+Raven, John Samuel
+Ravilious, Eric
+Ray, Charles
+Read, David Charles
+Read, James B.
+Read, Thomas Buchanan
+Ream, Carducius P.
+Reardon, Tim
+Reaugh, Charles Franklin
+Rebecca, Biagio
+Rebillé, Nicolas
+Recco, Giuseppe
+Red Star, Kevin
+Redfield, Edward Willis
+Redgrave, Richard
+Redmond, Granville
+Redon, Odilon
+Redouté, Pierre Joseph
+Redpath
+Reeb, David
+Reed, David
+Reed, Robert
+Rees, Michael
+Refregier, Anton
+Register, John
+Regnault, Baron Jean Baptiste
+Regnault, Henri
+Regnier, Nicolas
+Rego, Paula
+Regoyos, Darío de
+Reichel, Hans
+Reichlich, Marx
+Reid, Bill
+Reid, George A.
+Reid, Janet
+Reid, John Robertson
+Reid, Robert
+Reiffel, Charles
+Reinagle, Philip
+Reinagle, Ramsay Richard
+Reindel, William George
+Reinders, Jim
+Reinhardt, Ad
+Reisman, Philip
+Rejlander, Oscar Gustave
+Rembrandt van Rijn
+Remington, Frederic
+Ren Xiong
+Ren Xun
+Ren Yi
+Reni, Guido
+Renieri, Niccolo
+Renoir, Pierre-Auguste
+Renouf, Edda
+Repin, Iliya
+Resler, George Earl
+Resmann, Francesco
+Restout, Jean
+Rethel, Alfred
+Rethel, Ponce Jacquiot
+Réti, István
+Revere, Paul
+Révoil, Pierre-Henri
+Reymerswaele, Marinus van
+Reymond, Pierre
+Reynard, Grant
+Reynolds Jr., Samuel William
+Reynolds, Alan
+Reynolds, Sir Joshua
+Reysschoot, Peter John Van
+Rhead, Louis John
+Rheam, Henry Maynell
+Ribalta, Francisco
+Ribalta, Jorge
+Ribera, Jusepe de
+Rible, Dave
+Ribot, Augustin Théodule
+Ricard, Louis-Gustave
+Ricci, Marco
+Ricci, Sebastiano
+Riccio, Il
+Rich, Alfred William
+Richards, Frances
+Richards, John Inigo
+Richards, William Trost
+Richardson I, Jonathan
+Richardson Jr., Thomas Miles
+Richardson, Sam
+Richardson, Steven
+Richardson, William
+Richier, Germaine
+Richmond, Agnes Millen
+Richmond, George
+Richmond, Sir William Blake
+Richter, Gerhard
+Richter, Giovanni
+Rickey, George
+Rico, Dan
+Rider, Arthur Grover
+Ridgway, Peter
+Riechardt, Richard
+Riedell, Don
+Riemenschneider, Tilman
+Riezio, Martino
+Rigaud, Hyacinthe
+Rigaud, John Francis
+Rigby, Elizabeth
+Riggs, Robert
+Righetti, Francesco
+Riis, Jacob
+Riley, Bridget
+Riley, John
+Rimmer, William
+Rindisbacher, Peter
+Rinehart, Frank
+Rinehart, William Henry
+Ring, L.A.
+Ring, Pieter de
+Ringgold, Faith
+Rinzy, John Henry de
+Riopelle, Jean Paul
+Rios, Miguel Angel
+Ripley, Aiden Lassell
+Rippon, Tom
+Rist, Pipilotti
+Ritchie, William B.
+Ritman, Louis
+Ritschel, William
+Rittermann, Philip Scholz
+Ritts, Herb
+Ritzos, Andreas
+Rivalz, Antoine
+Rive, Roberto
+Rivera Hernandez, Manuel
+Rivera, Diego
+Rivers, Larry
+Rivière, Briton
+Rixens, Jean André
+Rizzo, Antonio
+Robbia, Andrea della
+Robbia, Giovanni della
+Robbia, Girolamo della
+Robbia, Luca della
+Robbins, David
+Robbins, Ellen
+Robert, Hubert
+Robert, John
+Robert, Louis-Léopold
+Robert-Fleury, Joseph-Nicolas
+Roberto
+Roberts, David
+Roberts, Goodridge
+Roberts, Tom
+Roberts, William
+Robertson, Archibald
+Robertson, Christina
+Robertson, Sarah
+Robetta, Cristofano
+Robineau, Adelaide
+Robins, William Palmer
+Robinson, Ann
+Robinson, Charles
+Robinson, F. Cayley
+Robinson, J.C.
+Robinson, Leonard
+Robinson, Theodore
+Robinson, William
+Robson, George Fennel
+Robusti, Domenico
+Roccatagliata, Niccolò
+Roche, Pierre
+Roche-Rabell, Arnaldo
+Rochussen, Charles
+Rockenschaub, Gerwald
+Rockwell, Norman
+Rodchenko, Alexander
+Rodin, Auguste
+Rodríguez Lozano, Manuel
+Roebling, John
+Roebling, Washington
+Roelofs, Willem
+Roentgen, Abraham
+Roentgen, David
+Roerich, Nicholas
+Roesen, Severin
+Rogers, John
+Roghman, Roelant
+Rohlfs, Christian
+Rokotov, Fedor
+Roland, Philippe-Laurent
+Roldán, Luisa
+Rollins, Tim
+Romako, Anton
+Román Rojas, Samuel
+Romanelli, Romano
+Romanino, Girolamo
+Romano, Gian Cristoforo
+Rombouts, Gillis
+Rombouts, Salomon
+Rombouts, Théodore
+Romney, George
+Rondel, Frederick
+Roo, Roelof de
+Rooker, Michael Angelo
+Roos, Johan Heinrich
+Roos, Joseph
+Roos, Philipp Peter
+Roper, Richard
+Ropes Jr., George
+Rops, Félicien
+Roqueplan, Camille
+Roques, Joseph
+Rosa, Ercole
+Rosa, Salvator
+Rosai, Ottone
+Rosales, Eduardo
+Rosas, Rubén
+Rosati, James
+Rose, Guy
+Rose, Knut
+Rosenberg, Henry M.
+Rosenberg, Isaac
+Rosenberg, Louis Conrad
+Rosenblum, Richard
+Rosenquist, James
+Rosenthal, Ann Tevy
+Rosenthal, Doris
+Rosenthal, Tony
+Roshu, Fukae
+Roslin, Alexander
+Roslin, Le Chevalier
+Roslin, T'oros
+Ross, Sir William Charles
+Rossbach, Edward
+Rosselli, Cosimo
+Rosselli, Matteo
+Rossellino, Antonio
+Rossellino, Bernardo
+Rossetti, Dante Gabriel
+Rossiter, Thomas Prichard
+Rosso Fiorentino
+Rosso, Medardo
+Rosso, Mino
+Roszak, Theodore
+Rotari, Pietro
+Rotella, Mimmo
+Roth, Ernest David
+Rothenberg, Susan
+Rothenstein, Michael
+Rothenstein, Sir William
+Rothermel, Peter Frederick
+Rothko, Mark
+Rothschild, Gail
+Rothstein, Arthur
+Rottenhammer, Hans
+Rouault, Georges
+Roubiliac, Louis-François
+Rouget, Georges
+Rousseau, Henri
+Rousseau, Théodore
+Roussel, Ker Xavier
+Roussel, Théodore
+Rousselet, Gilles
+Roux, Ange-Joseph Antoine
+Roux, François Geoffroi
+Roux, François Joseph Frédéric
+Roux, Joseph
+Roux, Louis
+Roux, Mathieu Antoine
+Roux-Champion, Joseph Victor
+Rowan, Patrick
+Rowe, Sandra
+Rowlandson, Thomas
+Rowley, Reuben
+Royen, Willem Frederik van
+Rrap, Julie
+Rubens, Peter Paul
+Rubin, Reuven
+Rublev, Andrei
+Rude, François
+Rude, Olaf
+Ruelas, Julio
+Ruff, Thomas
+Rugendas I, Georg Philipp
+Rugendas, Juan Mauricio
+Ruisdael, Jacob van
+Ruiz, Antonio M.
+Rulfo, Juan
+Rummel, Jay
+Rumney, Ralph
+Rungius, Carl Clemens Moritz
+Rupert, Prince
+Ruscha, Ed
+Rusconi, Camillo
+Rusell, Edward J.
+Rush, Olive
+Rush, William
+Rushbury, Henry
+Ruskin, John
+Russell, Andrew
+Russell, Charles M.
+Russell, John
+Russell, Morgan
+Russo, Alexander
+Rustici, Giovanni Francesco
+Rutelli, Mario
+Ruthart, Carl Borromäus Andreas
+Ruysch, Rachel
+Ruysdael, Salomon van
+Ryan, Anne
+Ryckere, Bernhart de
+Rycroft Painter, The
+Ryder, Albert Pinkham
+Rydingsvard, Ursula von
+Rydzewski, William 
+Ryman, Robert
+Saar, Alison
+Saar, Betye
+Saar, Lezley
+Saarinen, Eero
+Sacchetti, Lorenzo
+Sacchi, Andrea
+Sachs, Lambert
+Sadeler I, Jan
+Sadeler II, Aegidius
+Sadler, Walter Dendy
+Saenredam, Jan
+Saenredam, Pieter Jansz.
+Safran, Bernard
+Saftleven the Younger, Herman
+Saftleven, Cornelis
+Sage, Kay
+Sager, Peter Winchell
+Said Abdullah of the Mayac
+Saila, Pauta
+Sailmaker, Isaac
+Saint Cecilia Master
+Saint-Andre, Simon Renard de
+Saint-Aubin, Augustin de
+Saint-Aubin, Charles Germain de
+Saint-Aubin, Gabriel Jacques de
+Saint-Gaudens, Augustus
+Saint-Jean, Simon
+Saint-Mémin, Charles-Balthazar-Julien Févret de
+Saint-Phalle, Niki de
+Saito, Kiyoshi
+Saitowitz, Stanley
+Sakai Hoichi
+Sakai Hoitsu
+Sala, George Augustus Henry
+Salathé, Friedrich
+Salle, David
+Sallee, Charles
+Salmon, Robert
+Salt, John
+Salter, William
+Salvadori, Remo
+Salvi, Nicola
+Salviati, Francesco
+Saly, Jacques-François-Joseph
+Samacchini, Orazio
+Samaras, Lucas
+Sample, Paul Starrett
+Sánchez Coello, Alonso
+Sánchez Cotán, Juan
+Sánchez Perez, Alberto
+Sanchez, Abel
+Sanchez, Pedro
+Sandby, Paul
+Sandby, Thomas
+Sander, August
+Sanders, Ann
+Sandler, Barbara
+Sandrart, Joachim von
+Sandys, Emma
+Sandys, Frederick
+Sangallo, Francesco da
+Sangallo, Giuliano da
+Sang-Hwa, Chung
+Sanmartino, Giuseppe
+Sano di Pietro
+Sanseverino, Lorenzo di Alessandro da
+Sansovino, Andrea
+Sansovino, Jacopo
+Sant, James
+Santacroce, Girolamo
+Santerre, Jean-Baptiste
+Santomaso, Giuseppe
+Santos Torroella, Angeles
+Sanyu
+Sapousek, Frank
+Saraceni, Carlo
+Sargent, Henry
+Sargent, John Singer
+Sarkisian, Paul
+Sarkisian, Sarkis
+Sartain, John
+Sartorius, John Nost
+Sasajima, Kihei
+Sassetta
+Sassoferrato
+Sassu, Aligi
+Saunders, Gary
+Saura Atares, Antonio
+Savage, Edward
+Savery, Roelandt
+Savoldo, Giovanni Girolamo
+Savrasov, Alexey
+Sawyer, Helen
+Saxe, Andres Marsal de
+Scanga, Italo
+Scarlett, Rolph
+Scarpitta, Salvatore
+Scarsellino
+Schad, Christian
+Schadow, Johann Gottfried
+Schaechter, Judith
+Schaefer, Carl
+Schalcken, Godfried
+Schamberg, Morton Livingston
+Schanker, Louis
+Schapiro, Miriam
+Schardt, Bernard P.
+Scharf, Kenny
+Scharff, Edwin
+Schäufelein, Hans Leonhard
+Schedoni, Bartolomeo
+Scheffer, Ary
+Scheiber, Hugó
+Schelfhout, Andreas
+Schenau, Johann Eleazar
+Scherer, Hermann
+Scherschel, Joseph J.
+Schiaffino, Francesco Maria
+Schiavone, Andrea
+Schiele, Egon
+Schindler, Emil Jakob
+Schinkel, Karl Friedrich
+Schlemmer, Oskar
+Schlüter, Andreas
+Schmidt, Julius
+Schmidt, Katherine
+Schmidt-Rottluff, Karl
+Schmutzer, Ferdinand
+Schnabel, Julian
+Schneider, Bernhard
+Schnorr von Carolsfeld, Julius
+Scholder, Fritz
+Scholderer, Otto
+Schonfeld, Johann Heinrich
+Schongauer, Martin
+Schonzeit, Ben
+Schoonhoven, Jan
+Schoonover, Frank E.
+Schooten, Floris van
+Schopin, Henri-Frédéric
+Schrader, Julius
+Schrag, Karl
+Schreyer, Adolf
+Schreyer, Lothar
+Schreyvogel, Charles
+Schro, Dietrich
+Schuchardt Jr., Ferdinand
+Schuffenecker, Claude-Emile
+Schulte, Larry
+Schultheiss, Karl Max
+Schultz, Daniel
+Schultze, Ray
+Schumacher, William
+Schuppen, Jacob van
+Schussele, Christian
+Schuster, Donna Norine
+Schutler, John
+Schuyler Limner, The
+Schwabe, Carlos
+Schwalbe, Ole
+Schwartz, Aubrey
+Schwartz, Lester O.
+Schweickhardt, Heinrich Wilhelm
+Schwieger, C. Robert
+Schwiering, Conrad
+Schwind, Moritz Von
+Schwitters, Kurt
+Scolari, Giuseppe
+Scorel, Jan van
+Scott, Anna Page
+Scott, Bill
+Scott, Bob
+Scott, Frances
+Scott, John
+Scott, Louise
+Scott, Mary
+Scott, Samuel
+Scott, William
+Scott, William Edouard
+Scudder, Janet
+Scully, Sean
+Seago, Edward
+Seavey, Julien R.
+Seba, Albert
+Sébah, J. Pascal
+Sebastián
+Sebastiano del Piombo
+Sebree, Charles
+Sebron, Hyppolyte Victor Valentin
+Se-choong, Kim
+Second Gouda Woodcutter
+Secrest, David
+Seddon, Thomas
+Segal, George
+Segall, Lasar
+Segantini, Giovanni
+Segerstrom, Rick
+Seghers, Daniel
+Seghers, Gérard
+Seghers, Hercules
+Segna di Buonaventure
+Seisenegger, Jacob
+Sekino, Jun'ichirô
+Sekka, Kamisaka
+Seligmann, Kurt
+Sellier, Charles
+Selous, Henry Courtney
+Semmes, Beverly
+Sempere Juan, Eusebio
+Senior, C.F.
+Séon, Alexandre
+Sergel, Johan Tobias
+Seriakov, Iakov Panfilovich
+Serov, Valentin Aleksandrovich
+Serpotta, Giacomo
+Serra, Richard
+Serrano Aguilar, Pablo
+Serrano, Andres
+Serres, Dominic
+Serres, John Thomas
+Serrur, Henri
+Sérusier, Paul
+Sesshu Toyo
+Sesson Shukei
+Setch, Terry
+Seurat, Georges
+Severini, Gino
+Severn, Joseph
+Severo da Ravenna
+Sevilla Portillo, Soledad
+Seyffert, Leopold
+Seyler, Julius
+Seymour, David
+Seymour, James
+Sha Qi
+Shadbolt, Jack
+Shahn, Abby
+Shahn, Ben
+Shamsuddin, Asaf Jahi
+Shannon, Sir James Jebusa
+Shannonhouse, Sandy
+Shapiro, David
+Shapiro, Joel
+Shapiro, Joseph
+Sharaf
+Sharp, Joseph Henry
+Sharpe, Charles Kirkpatrick
+Sharpe, Stephen
+Sharples, Rolinda
+Shaughnessy, Michael
+Shaw, John Byam
+Shaw, Joshua
+Shaw, Richard
+Shaw, Scott
+Shaw, Wilfred Byron
+Shay, Ed
+Shayer Sr., William
+Shchedrin, Sil'vestr Feodosievich
+Shea, Judith
+Shee, Sir Martin Archer
+Sheeler, Charles
+Sheets, Millard
+Sheffield, Isaac
+Shelby, Lila Norma
+Shelley, Samuel
+Shelton, Margaret
+Shen Jiawei
+Shen Yinmo
+Sheouak
+Shepard, Ernest
+Shepherd, Helen Parsons
+Shepherd, Reginald
+Shepler, Dwight
+Sheridan, Mary
+Sherlock, William P.
+Sherman Limner, The
+Sherman, Cindy
+Sherr, Ron
+Shi Dawei
+Shi Lu
+Shie, Susan
+Shields, Alan
+Shields, Francis B.
+Shigemasa
+Shigenaga, Nishimura
+Shigenobu II, Yanagawa
+Shikibu Terutada
+Shima, Tamami
+Shimomura, Roger
+Shinagawa, Takumi
+Shinn, Everett
+Shinohara, Ushio
+Shishkin, Ivan
+Shitao
+Shôkôsai, Hanbei
+Short, Sir Frank
+Shoson, Ohara
+Shrady, Henry Merwin
+Shu Chuanxi
+Shuebrook, Ron
+Shûhô, Yamakawa
+Shulz, Alberta Rehm
+Shuncho
+Shun'ei, Katsukawa
+Shunsen, Katsukawa
+Shunsen, Natori
+Shunso, Katsukawa
+Shunzan, Katsukawa
+Shute, Nell Choate
+Siberechts, Jan
+Sickert, Bernard
+Sickert, Walter Richard
+Siddal, Elizabeth Eleanor
+Siemiradzki, Henryk
+Sierra, Paul
+Sieverding, Katharina
+Signac, Paul
+Signer, Roman
+Signorelli, Luca
+Sikander, Shahzia
+Silo, Adam
+Siloé, Diego de
+Siloe, Gil de
+Silva, Francis A.
+Silva, Guillermo
+Silver, Jonathan
+Silvestre the Younger, Israel
+Silvestro Dell'Acquila
+Silvy, Camille-Léon-Louis
+Simberg, Hugo
+Simon, T. Frantisek
+Simonds, Charles
+Simone dei Crocifissi
+Simonini, Francesco
+Simpson, Buster
+Simpson, John
+Simpson, Lorna
+Sims, Karl
+Sims, L.W. "Rocky"
+Simun, Konstantin
+Singer, Clyde
+Singer, Michael
+Singleton, Henry
+Sintenis, Renée
+Sint-Jans, Geertgen Tot
+Siqueiros, David Alfaro
+Sirani, Elisabetta
+Sironi, Mario
+Siskind, Aaron
+Sisley, Alfred
+Sisyphus Painter, The
+Sittow, Michel
+Sivuraq, Thomas
+Skeaf, D.
+Skelton, Jonathan
+Skerbisch, Hartmut
+Skillet, Stephan D.
+Skinner, Clara
+Skippe, John
+Skoglund, Sandy
+Skynner, Thomas
+Slaughter, Stephen
+Sleter, Francesco
+Slevogt, Max
+Slingelandt, Pieter Cornelisz. van
+Sloan, Helen Farr
+Sloan, Jeanette Pasin
+Sloan, John
+Sloan, Junius R.
+Sloan, Marianna
+Slodtz, Michelangelo
+Slott-Møller, Harald
+Slowinski, Ronald
+Sluijters, Jan
+Slusser, Jean Paul
+Sluter, Claus
+Smallwood, William Frome
+Smart, John
+Smartly, Henry
+Smibert, John
+Smidth, Hans
+Smillie, George Henry
+Smirke, Robert
+Smith III, Lee N.
+Smith, Alexis
+Smith, Alfred
+Smith, Allen
+Smith, Dana
+Smith, David
+Smith, Debbie
+Smith, Edith Agnes
+Smith, Grace Cossington
+Smith, Jack
+Smith, Jaune Quick-To-See
+Smith, Jessie Willcox
+Smith, John Christopher
+Smith, John Raphael
+Smith, John Thomas
+Smith, John 'Warwick'
+Smith, Joseph B.
+Smith, Kiki
+Smith, Leon Polk
+Smith, Lewis
+Smith, Marion C.
+Smith, Oliver Phelps
+Smith, Phebe A.
+Smith, Rick
+Smith, Royall Brewster
+Smith, Sir Matthew
+Smith, Thomas
+Smith, Tony
+Smith, Tucker
+Smith, W. Eugene
+Smith, Walter Granville
+Smithers, Collier
+Smithson, Robert
+Smits, Jacob
+Smythe, Lionel Percy
+Snow, Michael
+Snowden, Gilda
+Snyder, Amanda
+Snyder, Dean
+Snyders, Frans
+Soane, Sir John
+Sodoma, Il
+Soest, Gerard
+Sogliani, Giovanni Antonio
+Sohlberg, Harald
+Solana, José Gutiérrez
+Solari, Cristoforo
+Solario, Andrea
+Solaro, Gentine
+Soldani, Massimiliano
+Soldati, Atanasio
+Soldner, Paul
+Soleri, Paolo
+Solimena, Francesco
+Solis, Virgil
+Solomon, Abraham
+Solomon, Rebecca
+Solomon, Simeon
+Solomon, Solomon Joseph
+Somers, Fred
+Somerscales, Thomas J.
+Sommer, Frederick
+Sommer, Giorgio
+Somogyi, Dániel
+Somov, Konstantin
+Søndergaard, Jens
+Song Wenzhi
+Sonnier, Keith
+Sonntag, William Louis
+Sons, Giovanni
+Soreau, Isaac
+Sørensen, Arne Haugen
+Sorgh, Hendrik Martensz
+Soriano, Juan
+Sorolla y Bastida, Joaquin
+Soseki
+Sosen, Mori
+Soto, Jesús-Rafael
+Souch, John
+Soulages, Pierre
+Southall, Joseph Edward
+Soutine, Chaim
+Soyer, Isaac
+Soyer, Moses
+Soyer, Raphael
+Spadini, Armando
+Spaeth, Marie Haughton
+Spagna, Lo
+Spalletti, Ettore
+Sparagana, John
+Spaulding, Freda
+Spear, Ruskin
+Speckaert, Hans
+Spence, Thomas Ralph
+Spencer, Frederick R.
+Spencer, Gilbert
+Spencer, Joseph
+Spencer, Lady
+Spencer, Lilly Martin
+Spencer, Niles
+Spencer, Stanley
+Spencer, Thomas
+Spengler, Jeronimus
+Sperandio, Savelli
+Spero, Nancy
+Spiegel, Doris
+Spilberg, Johann
+Spilliaert, Léon
+Spin, Jacob
+Spinelli, Parri
+Spinello Aretino
+Spinosa, Domenico
+Spitzweg, Carl
+Spoerri, Daniel
+Spoilum
+Spolverini, Ilario
+Sporring, Ole
+Spranger, Bartholomeus
+Springer, Cornelis
+Spruance, Benton Murdoch
+Spybuck, Ernest
+Squires, Gerald
+Stadler, Joseph Constantin
+Stadtbäumer, Pia
+Stahlecker, Karen
+Stamos, Theodoros
+Stanczak, Julian
+Stanfield, Clarkson Frederick
+Stanhope, John Roddam Spencer
+Stankiewicz, Richard
+Stanlaws, Penrhyn
+Stanley, Abram Ross
+Stanley, Jane C.
+Stanley, John Mix
+Stanzione, Massimo
+Stark, James
+Stark, Otto
+Stati, Cristoforo
+Stautberg, Ann
+Staveren, Jan Adriaensz. van
+Stead, Gary
+Steadman, Ralph
+Stearns, Junius Brutus
+Stearns, William
+Steck, Paul
+Steele, Ben
+Steele, Frederic Dorr
+Steele, Theodore Clement
+Steen, Erling
+Steen, Jan
+Steenwijck, Harmen
+Steenwyck the Younger, Hendrik van
+Steer, Philip Wilson
+Stefano da Verona
+Stefano della Bella
+Stefano di Zevio
+Steffen, Bernard J.
+Steichen, Edward J.
+Steinbach, Haim
+Steinberg, Saul
+Steinbruck, Edouard
+Steiner, John
+Steinlen, Théophile Alexandre
+Steir, Pat
+STELARC
+Stella, Frank
+Stella, Jacques de
+Stella, Joseph
+Stephens, Frederic George
+Stephens, Thomas Edgar
+Stephenson, John Cecil
+Stephenson, Peter
+Sternberg, Harry
+Sterne, Maurice
+Sterner, Albert Edward
+Steth, Raymond
+Stettheimer, Florine
+Stettner, Louis
+Stevens 1817-2008, Alfred
+Stevens 1823-2008, Alfred
+Stevens, Ruth Tunander
+Steward, Joseph
+Stewardson, Thomas
+Stewart, Albert
+Stewart, David
+Stewart, John P.
+Stewart, Julius L.
+Stieglitz, Alfred
+Stieler, Joseph
+Still, Clyfford
+Stillman, Marie Spartali
+Stillman-Myers, Joyce
+Stock, Andries
+Stock, Joseph Whiting
+Stockt, Vrancke van der
+Stockton, Bill
+Stodart, Edward William
+Stokes 1854-2008, Adrian
+Stokes 1902-2008, Adrian
+Stokes, Marianne
+Stoll, Leopold von
+Stolzl, Gunta
+Stomer, Matthias
+Stone, Anne Belle
+Stone, Elinore
+Stone, Marcus
+Stone, Nicholas
+Stone, Richard
+Stoop, Dirck
+Storck, Abraham
+Storck, Jacob
+Storrs, Frances Hudson
+Storrs, John
+Story, George H.
+Story, Julian
+Story, William Wetmore
+Stoss, Veit
+Stothard, Thomas
+Stott, Edward
+Stott, William
+Stouf, Jean-Baptiste
+Stoumen, Lou
+Stout, Renée
+Stouter, D.G.
+Straet, Jan van der
+Strand, Paul
+Strang, William
+Stratton, Mary Chase
+Straub, Philippe Jakob
+Street, Robert
+Streeton, Arthur
+Streuli, Beat
+Strigel, Bernhard
+Stromeyer, David
+Strong, Elizabeth
+Strong-Cuevas
+Strother, David Hunter
+Strozzi, Bernardo
+Strub the Younger, Peter
+Struck, Hermann
+Strudwick, John Melhuish
+Struss, Ethel
+Struth, Thomas
+Strutt, Arthur John
+Stuart, Gilbert
+Stuart, Jane
+Stuart, Michelle
+Stuart, Signe
+Stubbins, Kyle
+Stubbs, George
+Stuber, Nikolaus Gottfried
+Stuck, Franz von
+Stuempfig, Walter
+Sturtevant, Helena
+Su Hanchen
+Subleyras, Pierre
+Sueharu, Fukami
+Sugimoto, Hiroshi
+Suio, Tamura
+Sukenobu
+Sukola, Jason
+Sukwon, Park
+Suleiman, Master
+Sullivan, Louis
+Sullivan, Marty
+Sully, Thomas
+Sully, Thomas Wilcocks
+Sultan Muhammad
+Sultan, Donald
+Sun Zixi
+Sunderland, Thomas
+Sunqua
+Surls, James
+Susini, Antonio
+Susini, Gianfrancesco
+Sustermans, Justus
+Sutcliffe, Frank
+Sutherland, Elizabeth Leveson-Gower, Countess of
+Sutherland, Graham
+Sutton, David
+Suvée, Joseph-Benoît
+Svendsen, Bjarke Regn
+Svennson, Carsten
+Swan, John Macallan
+Swan, Margaret
+Swanevelt, Herman van
+Sweerts, Michiel
+Swendson, Trygve
+Swentzell, Roxanne
+Swing Painter, The
+Swynnerton, Annie Louise
+Syleus Painter, The
+Symonds, William Robert
+Symons, George Gardner
+Syriskos
+Székely, Bertalan
+Szilard, Vic
+Szilasi, Gabor
+Taaffe, Philip
+Tacca, Pietro
+Tack, Augustus Vincent
+Taddeo di Bartolo
+Tafoya, Margaret
+Tailfeathers, Gerald
+Taillasson, Jean-Joseph
+Tait, Agnes
+Takaezu, Toshiko
+Takahashi, Rikio
+Talbot, Tom
+Talbot, William Henry Fox
+Tal-Coat, Pierre
+Talirunili, Joe
+Talpino, Enea
+Tamayo, Rufino
+Tamotzu, Chuzo
+Tanabe, Takao
+Tang Muli
+Tang Yihe
+Tang Yin
+Tang Yingwei
+Tanguy, Yves
+Tanner, Benjamin
+Tanner, Henry Ossawa
+Tanner, J.G.
+Tanning, Dorothea
+Tansey, Mark
+Tanzio da Varallo
+T'ao Ch'eng
+Tao Yuanqing
+Tàpies, Antoni
+Tapies, Modest
+Taraval, Hughes
+Taraval, Louis Gustave
+Tarbell, Edmund Charles
+Tassaert, Jean-Pierre-Antoine
+Tassaert, Philippe Joseph
+Tatafiore, Guido
+Taunay, Nicolas-Antoine
+Tavernari, Vittorio
+Taverner, William
+Tavernier, Jules
+Tawaraya Sotatsu
+Tayler, Albert Chevallier
+Taylor, Anna Heyward
+Taylor, John W.
+Taylor, Prentiss
+Taylor, Richard
+Taylor, Wes
+Taylor-Lindoe, Carroll
+Tchelitchew, Pavel
+Teerline, Levina
+Teichert, Minerva
+Teixeira de Mattos, Joseph
+Tempel, Abraham van den
+Templeton, Robert
+Tenerani, Pietro
+Teng Hiok Chiu
+Tengnagel, Jan
+Teniers the Younger, David
+Tenniel, Sir John
+Tenyu Shokei
+Terborch, Gerard
+Terbrugghen, Hendrick
+Terrell, Elizabeth
+Tesi, Mauro Antonio
+Testa, Pietro
+Teupken Sr., D.A.
+Than, Mór
+Thayer, Abbott Handerson
+Theed, William
+Théodon, Jean Baptiste
+Theophanes the Greek
+Therbusch, Anna Dorothea
+Therien, Robert
+Theus, Jeremiah
+Thiebaud, Wayne
+Thiele II, Johann Friedrich Alexander
+Thielen, Jan Philips van
+Thieme, Anthony
+Thierry, Jean
+Thiessen, Leonard
+Thomas, Alma
+Thomas, James Havard
+Thompson, Benjamin
+Thompson, Bob
+Thompson, Richard Earl
+Thompson, Wilfred
+Thompson, Wordsworth
+Thomson, Alfred Reginald
+Thomson, Rev. John
+Thomson, Tom
+Thon, William
+Thornhill, Sir James
+Thornycroft, Sir Hamo
+Thorvaldsen, Bertel
+Thrash, Dox
+Thulden, Theodoor van
+Tian Shiguang
+Tiarini, Alessandro
+Tibaldi, Pellegrino
+Tibbetts, Gary
+Tice, George
+Tien Chi
+Tiepolo, Giovanni Battista
+Tiepolo, Giovanni Domenico
+Tiffany, Louis Comfort
+Tiisala, Eeva
+Tillemans, Peter
+Tillers, Imants
+Tilson, Joe
+Timchak, Gary
+Timmann, Bill
+Tinelli, Tiberio
+Ting, Walasse
+Tingqua
+Tinguely, Jean
+Tino da Camaino
+Tinqua
+Tintoretto
+Tironi, Francesco
+Tischbein, Johann Heinrich Wilhelm
+Tischbein, Johann-Friedrich-August
+Tissot, James
+Titian
+Title, Christian
+Tobey, Mark
+Tocqué, Louis
+Todd, James
+Todd, Michael
+Toderi, Grazia
+Toeput, Lodewyk
+Togores i Llach, José de
+Toikka, Oiva
+Toledo, Francisco
+Tomea, Fiorenzo
+Tomkins, William
+Tommaso Cazzaniga
+Tomoyuki, Shokyusai
+Tongeren, Herk Van
+Tonnancour, Jacques G. de
+Tooker, George
+Tookoome, Simon
+Toole, John
+Tooley Jr., James
+Toorop, Charley
+Toorop, Jan
+Topchevsky, Morris
+Topolski, Feliks
+Torbert, Stephanie
+Torlakson, James
+Toroni, Niele
+Torrens, Bernardo
+Torres-García, Joaquín
+Torretti, Giuseppe
+Torrey, Hiram Dwight
+Torrigiani, Sebastiano
+Torrigiano, Pietro
+Tosa, Mitsuyoshi
+Tosani, Patrick
+Toscani, Giovanni
+Toshusai Sharaku
+Tosini, Michele
+Toulouse-Lautrec, Henri de
+Tournier, Nicolas
+Tousignant, Claude
+Toutant, Wally
+Town, Harold
+Towne, Francis
+Toyoharu, Utagawa
+Toyokuni
+Toyokuni II, Utagawa
+Toyomasa, Naito
+Traini, Francesco
+Traver, Marion Gray
+Traylor, Bill
+Treat, Henry
+Tregor, Nison
+Treiman, Joyce
+Tresham, Henry
+Trevelyan, Julian
+Trevino, Jesse
+Trevisani, Francesco
+Tribolo, Niccolo
+Trinquesse, Louis Rolland
+Triqueti, Henri de
+Tristán de Escamilla, Luis
+Trockel, Rosemarie
+Trombadori, Francesco
+Troostwijk, Wouter Johannes van
+Tropinin, Vasilii Andreevich
+Trouillebert, Paul Desiré
+Trower, Walter John
+Troy, François de
+Troy, Jean-François de
+Troyon, Constant
+Trumbull, John
+Tryon, Dwight W.
+Tsihnahjinnie, Hulleah
+Tsireh, Awa
+Tsukimaro, Kitagawa
+Tu, Baixiong
+Tuby I, Jean-Baptiste
+Tuchfarber, Frank
+Tucker, Allen
+Tucker, William
+Tuckerman, Jane
+Tudgay, Frederik
+Tudgay, John
+Tudlik
+Tudot, Edmond
+Tully, Sydney Strickland
+Tunnicliffe, Charles Frederick
+Tunnillie, Oviloo
+Tura, Cosmè
+Turchi, Alessandro
+Turnbull, James
+Turnbull, William
+Turner, Charles
+Turner, Daniel
+Turner, Helen M.
+Turner, Joseph Mallord William
+Turner, Robin
+Turner, W.
+Turpin de Crissé, Henry Roland Lancelot
+Turpin de Crissé, Lancelot-Théodore
+Turrell, James
+Turton, M.
+Tuxen, Laurits
+Twachtman, John Henry
+Twitty, James
+Twombly, Cy
+Tworkov, Jack
+Tyler, Brad
+Tyler, James Gale
+Uccello, Paolo
+Uc-chin, Chang
+Uchida, Bart
+Udaltsova, Nadezhda Andreevna
+Udell, Janice
+Uden, Lucas van
+Ufer, Walter
+Ugo Da Carpi
+Ugolino da Siena
+Uhde, Fritz Karl Hermann von
+Uhlmann, Hans
+Ukeles, Mierle Laderman
+Ukita Ikkei
+Ullberg, Kent
+Ullulaq, Judas
+Ulmann, Doris
+Underwood, Thomas Richard
+Underworld Painter, The
+Unkoku Togan
+Unold, Max
+Urushibara, Yoshijiro
+Ushakov, Simon
+Utamaro, Kitagawa
+Utkin, Ilya
+Utrillo, Maurice
+Uwins, Thomas
+Uyttenbroeck, Moses van
+Va, Barry Le
+Vaccaro, Andrea
+Vacher, Charles
+Vadder, Lodewijk de
+Vail, Eugene Lawrence
+Vaillant, Wallerant
+Valadon, Suzanne
+Valckenborch, Lucas van
+Valdambrino, Francesco di
+Valdés Leal, Juan de
+Valenciennes, Pierre-Henri de
+Valenzuela Llanos, Alberto
+Valet, Joan
+Vallejo, Boris
+Vallotton, Félix
+Valls Subira, Xavier
+Valtat, Louis
+Van Aken, Joseph
+Van Alstine, John
+Van Assen, Benedict Anthony
+van Beest, Albertus
+van Bruggen, Coosje
+Van Cleve, Corneille
+van de Velde III, Jan Jansz.
+van der Schardt, Johan Gregor
+Van Derzee, James
+Van Dyck, Sir Anthony
+van Gogh, Vincent
+van Heemskerk I, Egbert
+van Heemskerk III, Egbert
+Van Hoesen, Beth
+van Hove, Hubertus
+Van Laar, Tim
+Van Laer, Alexander Theobald
+van Loo, Louis-Michel
+Van Ness, Beatrice W.
+Van Somer, Paul
+van Spaendonck, Cornelis
+van Stry, Abraham
+Vanderbank, John
+Vanderlyn, John
+Vanloo, Carle
+Vanloo, Charles Amédée Philippe
+Vanni, Francesco
+Vanni, Lippo
+Vanvitelli, Luigi
+Vargas, Alberto
+Varian, Lester E.
+Varley, Cornelius
+Varley, F.H.
+Varley, John
+Varley, William Fleetwood
+Varnelis, Kazys
+Varo, Remedios
+Vasarely, Victor
+Vasari, Giorgio
+Vasco de la Zarza
+Vasnetsov, Viktor Mikhailovich
+Vassalletto, Pietro
+Vassallo, Antonio Maria
+Vautier, Ben
+Vázquez Díaz, Daniel
+Vebell, Edward
+Vecchia, Pietro della
+Vecchietta
+Vedder, Elihu
+Vedova, Emilio
+Veerendael, Nicolaes van
+Vela, Vincenzo
+Velarde, Pablita
+Velasco Belausteguigoitia, Rosario de
+Velasco, José María
+Velázquez, Diego
+Velde II, Jan van de
+Velde the Elder, Willem van de
+Velde the Younger, Willem van de
+Velde, Adriaen van de
+Velde, Esaias van de
+Venne, Adriaen Pietersz. van de
+Venusti, Marcello
+Verbeeck, Cornelis
+Verboeckhoven, Eugène
+Verbruggen, Hendrick Frans
+Verburg, JoAnn
+Vercruysse, Jan
+Verelst, Harman
+Verelst, Maria
+Verelst, Simon
+Verhaecht, Tobias
+Verhoef, Toon
+Verhulst, Rombout
+Verkade, Jan
+Verkolje, Jan
+Vermeer III, Jan
+Vermeer, Jan
+Vermeyen, Jan
+Verner, Elizabeth O'Neill
+Verner, Frederick A.
+Vernet, Carle
+Vernet, Claude-Joseph
+Vernet, Horace
+Veronese, Bonifacio
+Veronese, Paolo
+Verrocchio, Andrea del
+Verschuur, Wouterus
+Verspronck, Jan Cornelisz.
+Verster, Floris
+Vertue, George
+Vespignani, Renzo
+Viani, Alberto
+Vibert, Jehan Georges
+Vicente, Esteban
+Vickrey, Robert
+Victoria Marz, Salvador
+Victors, Jan
+Vien, Joseph Marie
+Viesulas, Romas
+Vigarny, Felipe
+Vigée-Lebrun, Marie Louise Élisabeth
+Vigeland, Gustav
+Vignaud, Jean
+Villa, Claudio
+Villabrille y Ron, Juan Alonso
+Villalba Florez, Darío
+Villers, Marie-Denise
+Villon, Jacques
+Vincent, François-André
+Vincenzo di Catena
+Vinckboons, David
+Vinne, Vincent Laurensz van der
+Vinton, Frederick Porter
+Viola, Bill
+Viola, Gian Battista
+Vischer the Elder, Peter
+Vischer the Younger, Peter
+Visconti, Eliseu
+Vishnyakov, Ivan
+Visscher, Claes Jansz.
+Vitale da Bologna
+Vittoria, Alessandro
+Vitullo, Sesostris
+Vivarini, Alvise
+Vivarini, Antonio
+Vivarini, Bartolomeo
+Vlaminck, Maurice de
+Vlieger, Simon de
+Vliet, Hendrik Cornelisz van der
+Voet, Ferdinand
+Vogel, Joseph
+Voille, Jean-Louis
+Volaire, Pierre-Jacques
+Volk, Douglas
+Voll, F. Usher De
+Vollmer, Adolf Friedrich
+Vollon, Antoine
+Volterra, Daniele da
+von Defregger, Franz
+von Herkomer, Sir Hubert
+Vonck, Jan
+Vondrous, Jan C.
+Vonnoh, Bessie Potter
+Vonnoh, Robert
+Vorsterman the Elder, Lucas
+Vos, Cornelis de
+Vos, Martin de
+Vos, Simon de
+Vosmaer, Daniel
+Voss, Paul
+Vouet, Aubin
+Vouet, Simon
+Voulkos, Peter
+Vrancx, Bastiaen
+Vranken, Dutch
+Vredeman de Vries, Hans
+Vrel, Jacobus
+Vrelant, Willem
+Vries, Abraham de
+Vries, Adriaen de
+Vroom, Cornelis
+Vroom, Hendrick Cornelisz.
+Vrubel, Mikhail
+Vuillard, Édouard
+Vuolvinio
+Wachtel, Elmer
+Wachtel, Marion Kavanaugh
+Waddell, Ted
+Waddell, Theodore J.
+Wadleigh, Pete
+Wadsworth, Edward
+Wages, Bob
+Wagguno
+Wagner, Otto
+Wainwright, John
+Waite, Emily Burling
+Wakelin, Roland
+Waldmüller, Ferdinand Georg
+Waldo, Samuel Lovett
+Waldorp, Antonie
+Wale, Samuel
+Wales, Kitty
+Walker, Anthony
+Walker, Douglas
+Walker, Frederick
+Walker, Kara
+Walker, William A.
+Walkley, Peter
+Walkowitz, Abraham
+Wall, Brian
+Wall, Jeff
+Wall, William Allen
+Wall, William Guy
+Wallace, Ian
+Wallace, J. Laurie
+Wallis, Henry
+Walter, Martha
+Walters, Miles
+Walters, Samuel
+Walton, Edward Arthur
+Walton, Henry
+Walton, John Whitehead
+Waltrous, Harry Wilson
+Wang Chunjie
+Wang Dongling
+Wang Geyi
+Wang Huaiqing
+Wang Hui
+Wang Jiqian (C.C. Wang)
+Wang Mengqi
+Wang Shenglie
+Wang Wen
+Wang Wuxie (Wucius Wong)
+Wang Xuetao
+Wang Yingchun
+Wang Yuangi
+Wang Yun
+Wang Zhen
+Wangersky, Barbara Pratt
+Wappers, Gustave
+Ward, Edward Matthew
+Ward, James
+Ward, John Quincy Adams
+Ward, Leslie
+Wardle, Arthur
+Warhol, Andy
+Warlow, Herbert Gordon
+Warner, Everett
+Warner, Olin Levi
+Warren, Henry
+Warsager, Hyman
+Warshawsky, Abraham G.
+Waser, Anna
+Washington, Elizabeth Fisher
+Washington, Timothy
+Watanabe Kazan
+Watanabe Shiko
+Watanabe, Sadao
+Waterhouse, John William
+Waterloo, Anthonie
+Waterlow, Sir Ernest Albert
+Waters, Herbert Ogden
+Waters, Susan C.
+Watkins, Carleton
+Watson, Homer
+Watt, Alison
+Watteau, Jean-Antoine
+Wattles, Virginia
+Watts, George Frederic
+Waugh, Frederick Judd
+Wauters, Emile
+Way, Thomas Robert
+Wearing, Gillian
+Weaver, Robert
+Weaver, Thomas
+Webb, James
+Webb, Todd
+Weber, Chris
+Weber, Idelle
+Weber, John Pitman
+Weber, Max
+Webster, Meg
+Webster, Thomas
+Weegee
+Weekes, Henry
+Weeks, James
+Weems, Carrie Mae
+Weenix II, Jan
+Weenix, Jan Baptist
+Weerts, Jean-Joseph
+Weggeland, Terry
+Wegman, William
+Weguelin, John Reinhard
+Wei Jingshan
+Wei Jiuding
+Weinberg, Emilie Sievert
+Weiner, Lawrence
+Weir, Julian Alden
+Weir, Robert W.
+Weirotter, Franz Edmund
+Weisbrod, Carl Wilhelm
+Weiss, David
+Weissenbruch, Jan
+Weissenbruch, Johan Hendrik
+Weissman, Barry
+Weisweiler, Adam
+Welch, Denton
+Weller, Paul
+Welliver, Neil
+Wells, Henry Tanworth
+Wells, Joanna Mary
+Wells, Lynton
+Welti, Albert
+Wen Bao
+Wen Lou
+Wen Zhengming
+Wen Zhenming
+Wenck, Ernst
+Wendel, Theodore
+Wendorf, Jim
+Wendt, William
+Wengenroth, Stow
+Wenzel von Olmutz
+Werff, Adriaen van der
+Werner, Bettina
+Wertheim, Gary
+Wertinger, Hans
+Wertmüller, Adolf-Ulrik
+Wessel, Bessie Hoover
+Wessel, Herman H.
+Wesselmann, Tom
+West, Benjamin
+West, Benjamin Franklin
+Westall, Richard
+Westmacott, James Sherwood
+Weston, Edward
+Wet, Jacob de
+Weyden, Rogier van der
+Weyer, Hermann
+Whale, Robert R.
+Wharncliffe, Lady
+Wheatley, Clara
+Wheatley, Francis
+Wheeler, Steve
+Wheelwright, Joseph
+Wheelwright, Roland
+Whetstone, Dan
+Whistler, James McNeill
+White 1773-2008, Charles
+White, Charles Wilbert
+White, Randy Lee
+White, Robert
+Whitehead, Frances
+Whiteley, Brett
+Whiteman, Ernest
+Whiteread, Rachel
+Whitney, Anne
+Whittle, Charles
+Whittredge, Thomas Worthington
+Wicar, Jean-Baptiste Joseph
+Wicks, Mary
+Wieland, Joyce
+Wiener, Phyllis
+Wieringen, Cornelis Claesz. van
+Wiertz, Antoine
+Wiggins, Guy
+Wilber, Jessie
+Wilbert, Robert
+Wilcox, Leslie
+Wilding, Alison
+Wildman, John R.
+Wildt, Adolfo
+Wiles, Irving R.
+Wiley, William
+Wiligelmo
+Wilke, Hannah
+Wilkie, Robert
+Wilkie, Sir David
+Wilkins, Mike
+Willaerts, Abraham
+Willard, Archibald M.
+Willets, Robert
+Williams, Arch
+Williams, Fred
+Williams, Hugh William
+Williams, Keith Shaw
+Williams, Margaret Lindsay
+Williams, Pauline Bliss
+Williams, Rod
+Williams, William
+Williamson, Daniel Alexander
+Willink, Carel
+Willmann, Michael Lukas Leopold
+Willoughby, Robert
+Wills, William Gorman
+Willson, Barbara
+Willson, Mary Ann
+Wilson, Andrew
+Wilson, Benjamin
+Wilson, Charles J.A.
+Wilson, George Washington
+Wilson, John
+Wilson, Richard
+Wilson, William A.
+Wilton, Joseph
+Wimar, Charles
+Windus, William Lindsay
+Winegar, Anna
+Winkler, John W.
+Winogrand, Garry
+Winsor, Jackie
+Winstanley, William
+Winter, Friedrich
+Winter, George
+Winterhalter, Franz Xavier
+Winterhalter, Hermann
+Winters, Terry
+Wintour, John Crawford
+Wirsum, Karl
+Wirt von Wil, Nicolaus
+Wirtz, Robert
+Wit, Jacob de
+Witherington, William Frederick
+Witkiewicz, Stanislaw Ignacy
+Witkin, Isaac
+Witkin, Jerome Paul
+Witte, Emanuel de
+Wittel, Gaspar van
+Witz, Conrad
+Wo Zha
+Woehrman, Ralph
+Woiceske, Ronau William
+Wojtkiewicz, Witold
+Wolf, Henry
+Wolfe, Meyer
+Wolfe, Ruth Mitchell
+Wolffort, Artus
+Wölfli, Adolf
+Wolfram, William
+Wollaston, John
+Wollheim, Gert
+Wood, Christopher
+Wood, Elizabeth Wyn
+Wood, Ella Mirriam
+Wood, Grant
+Wood, John
+Wood, Thomas Waterman
+Woodbury, Charles Herbert
+Woodruff, Hale
+Woods, Jan
+Woodville, Richard Caton
+Woodward, George Montard
+Woodward, John Douglas
+Woodward, Mabel May
+Woodward, Stanley Wingate
+Woodward, Thomas
+Woo-hee, Cha
+Wook-Kyung, Choi
+Wool, Christopher
+Woolsey, Clarence
+Woolsey, Grace
+Wootton, John
+Wores, Theodore
+Worlidge, Thomas
+Wotruba, Fritz
+Wouters, Rik
+Wouwerman, Philips
+Wren, Sir Christopher
+Wrenn, Charles
+Wright of Derby, Joseph
+Wright, Autin
+Wright, Don
+Wright, Frank Lloyd
+Wright, James Henry
+Wright, John Michael
+Wright, Redmond Stephens
+Wrinch, Mary
+Wtewael, Joachim Antonisz.
+Wu Biduan
+Wu Changshi
+Wu Changshuo
+Wu Guanzhong
+Wu Hufan
+Wu Jiayou
+Wu Jingting
+Wu Li
+Wu Zuoren
+Wujcik, Theo
+Wurtzburger, Skip
+Wurzelbauer, Benedikt
+Wutky, Michael
+Wyant, Alexander Helwig
+Wyck, Jan
+Wyck, Thomas
+Wyeth, Andrew
+Wyeth, Henriette
+Wyeth, Jamie
+Wyeth, N.C.
+Wynants, Jan
+Wyon, Edward William
+Wyse, Alex
+Xenophantos
+Xia Gui
+Xiao Haichun
+Xiao Yuncong
+Xu Beihong
+Xu Daoning
+Xu Lei
+Xu Lele
+Xu, Guo
+Xugu
+Ya Ming
+Yan Han
+Yan Hui
+Yan Liben
+Yáñez, Fernando
+Yang Jingsheng
+Yang Kewu
+Yang Keyang
+Yang Lizhou
+Yang Nawei
+Yang Shanshen
+Yang Yong
+Yang Zhiguang
+Ye Minren
+Yeames, William Frederick
+Yeats, Jack B.
+Yeggster 
+Yelland, Raymond
+Yin Rongsheng
+Ykens, François
+Yong-Yop, Hwang
+Yorke, William G.
+Yorke, William Howard
+Yosa Buson
+Yoshida, Hiroshi
+Yoshitaki, Nakai
+Yoshitora, Utagawa
+Yoshitoshi, Tsukioka
+Yoshitsuya I, Ichieisai
+Yoshiyuki, Rakkaken
+Young, Blamire
+Young, Brent Kee
+Young, Mahonri Macintosh
+Young, Stephen Scott
+Young-lim, Choi
+Young-soo, Song
+Youqua
+Youse, Gay
+Yphantis, George
+Yu Ben
+Yu Youren
+Yun Ge
+Yun Shouping
+Yunkers, Adja
+Zabaleta Fuentes, Rafael
+Zaganelli, Francesco
+Zais, Giuseppe
+Zak, Eugène
+Zakanitch, Robert
+Zalce, Alfredo
+Zanguidi, Jacopo
+Zao Wou-ki
+Zaritsky, Yossef
+Zárraga, Angel
+Zehnacker, Russ
+Zeliff, Amzi Emmons
+Zenale, Bernardino
+Zeng Mi
+Zentz, Patrick
+Zerbe, Karl
+Zeshin, Shibata
+Zha Shibiao
+Zhan Jianjun
+Zhang Daqian
+Zhang Dazhuang
+Zhang Hong
+Zhang Hui
+Zhang Wang
+Zhang Yi
+Zhao Chungxiang
+Zhao Shou
+Zhao Yannian
+Zhao Zhiqian
+Zhao Zhiquan
+Zheng Guogu
+Zheng Wu
+Zheng Wuchang
+Zhong Weisheng
+Zhou Changjiang
+Zhou Luyun
+Zhou Shuqiao
+Zhou Sicong
+Zhu Da
+Zhu Qizhan
+Zhu Rui
+Zhu Xinghua
+Ziem, Félix
+Zingg, Adrian
+Ziveri, Alberto
+Zobernig, Heimo
+Zoffany, Johann
+Zoppo, Marco
+Zorach, Marguerite Thompson
+Zorach, William
+Zorio, Gilberto
+Zorn, Anders
+Zox, Larry
+Zuccarelli, Francesco
+Zuccaro, Federico
+Zuccaro, Taddeo
+Zucchi, Antonio
+Zucchi, Jacopo
+Zucker, Joe
+Zugno, Francesco
+Zuloaga, Ignacio
+Zündt, Mathias
+Zúñiga, Francisco
+Zurawski, Norm
+Zurbarán, Francisco de
+Zurbarán, Juan de
+Zürn, Michael
+Zynsky, Toots
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt
new file mode 100644
index 0000000..cb23570
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Russian.txt
@@ -0,0 +1,1310 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+Лукашев, Игорь Львович
+Cеменов, Владимир Магомедович
+Лукашенко, Александр Григорьевич
+Абалкин, Леонид Иванович
+Лукашенко, Дмитрий Борисович
+Абдулатипов, Рамазан Гаджимурадович
+Лукин, Владимир Петрович
+Абдулбасиров, Магомедтагир Меджидович
+Лукьяненко, Татьяна Константиновна
+Абельцев, Сергей Николаевич
+Лукьянов, Анатолий Иванович
+Абраменков, Дмитрий Николаевич
+Лукьянов, Владимир Николаевич
+Абрамов, Александр Сергеевич
+Лунтовский, Георгий Иванович
+Абрамович, Роман Аркадьевич
+Лухманов, Николай Евгеньевич
+Авалиани, Теймураз Георгиевич
+Лучин, Виктор Осипович
+Авалишвили, Гурами Джемалович
+Лыжин, Юрий Васильевич
+Авдеев, Валерий Валентинович
+Лымарь, Любовь Михайловна
+Лысенко, Анатолий Григорьевич
+Авен, Петр Олегович
+Лысенко, Владимир Николаевич
+Аверчев, Владимир Петрович
+Лысенко, Николай Николаевич
+Лычаков, Андрей Анатольевич
+Агапов, Юрий Васильевич
+Любимцев, Анатолий Васильевич
+Агапова, Елена Александровна
+Ляшко, Юрий Гаврилович
+Агафонов, Валентин Алексеевич
+Мавроди, Сергей Пантелеевич
+Агафонов, Егор Андреевич
+Магомедов, Магомедали Магомедович
+Агеева, Любовь Анатольевна
+Магомедов, Станислав Юнусович
+Адамишин, Анатолий Леонидович
+Мазур, Александр Алексеевич
+Адамов, Евгений Олегович
+Майоров, Леонид Сергеевич
+Макаров, Андрей Михайлович
+Макашов, Альберт Михайлович
+Аксененко, Николай Емельянович
+Максаков, Александр Иванович
+Аксенов, Владимир Викторович
+Максимов, Евгений Васильевич
+Аксентьев-Кикалишвили, Анзори Иосифович
+Максимов, Константин Николаевич
+Аксючиц, Виктор Владимирович
+Малаев, Алексей Никифорович
+Малашенко, Игорь Евгеньевич
+Алекперов, Вагит Юсуфович
+Малкин, Виталий Борисович
+Александров, Алексей Иванович
+Мальков, Игорь Олегович
+Алексеев, Александр Сергеевич.
+Мальцев, Александр Николаевич
+Алексеев, Геннадий Алексеевич
+Мальцев, Борис Алексеевич
+Алексий, Второй патриарх
+Малютина, Татьяна Григорьевна
+Маневич, Михаил Владиславович
+Алкснис, Виктор Имантович
+Манжосов, Николай Иванович
+Алтухов, Владимир Николаевич
+Манилов, Валерий Леонидович
+Алтынбаев, Жакслык Куантаевич
+Алферов, Жорес Иванович
+Манякин, Сергей Иосифович
+Альмяшкин, Василий Петрович
+Маргелов, Михаил Витальевич
+Амбарцумов, Евгений Аршакович
+Маркелов, Леонид Игоревич
+Амелина, Алла Леонидовна
+Марков, Владимир Николаевич
+Аметистов, Эрнест Михайлович
+Маркова, Римма Васильевна
+Ананьев, Евгений Николаевич
+Мартынов, Александр Гаврилович
+Андреев, Алексей Петрович
+Мартынов, Борис Алексеевич
+Марченко, Петр Петрович
+Андреева, Нина Александровна
+Марычев, Вячеслав Антонович
+Аничкин, Иван Степанович
+Масарский, Марк Вениаминович
+Анпилов, Виктор Иванович
+Маслов, Михаил Александрович
+Антонов, Игорь Васильевич
+Маслов, Николай Васильевич
+Маслюков, Юрий Дмитриевич
+Антуфьев, Сергей Владимирович
+Масхадов, Аслан (Халид) Алиевич
+Апарина, Алевтина Викторовна
+Масхадов, Аслан Алиевич
+Аракчаа, Кара-Кыс Донгаковна
+Арбатов, Алексей Георгиевич
+Матвиенко, Валентина Ивановна
+Арбузов, Валерий Петрович
+Маточкин, Юрий Семенович
+Арефьев, Николай Васильевич
+Матяшов, Петр Иванович
+Аринин, Александр Николаевич
+Арсланова, Фануза Шарафиевна
+Машинский, Виктор Леонидович
+Машковцев, Михаил Борисович
+Артюхов, Виталий Григорьевич
+Медведев, Владимир Сергеевич
+Архипов, Сергей Сергеевич
+Медведев, Дмитрий Анатольевич
+Асаев, Раис Бадыгутдинович
+Медведев, Николай Павлович
+Аскерханов, Гамид Рашидович
+Медведев, Павел Алексеевич
+Аслаханов, Асланбек Ахмедович
+Медведев, Рой Александрович
+Ассекритов, Станислав Борисович
+Медведев, Сергей Константинович
+Астафьев, Михаил Георгиевич
+Медиков, Виктор Яковлевич
+Астафьев, Николай Павлович
+Меликьян, Геннадий Георгиевич
+Астраханкина, Татьяна Александровна
+Мельков, Алексей Константинович
+Аулов, Александр Петрович
+Мельников, Алексей Юрьевич
+Аушев, Мухарбек Измаилович
+Мельников, Иван Иванович
+Аушев, Руслан Султанович
+Мень, Михаил Александрович
+Ахмадиев, Фаниль Наилович
+Меремянин, Константин Георгиевич
+Ачалов, Владислав Алексеевич
+Меркулов, Александр Федорович
+Аюшиев, Болот Ванданович
+Меркулов, Геннадий Константинович
+Аяцков, Дмитрий Федорович
+Меркушин, Николай Иванович
+Бабин, Николай Андреевич
+Мизулина, Елена Борисовна
+Бабичев, Владимир Степанович
+Микитаев, Абдулах Касбулатович
+Бабичев, Игорь Викторович
+Бабурин, Сергей Николаевич
+Милосердов, Владимир Иванович
+Бабух, Лариса Владимировна
+Минаков, Виктор Михайлович
+Багаутдинов, Габдулвахид Гильмутдинович
+Минкин, Александр Викторович
+Баглай, Марат Викторович
+Мирзоев, Гасан Борисович
+Баженов, Александр Васильевич
+Миронов, Валерий Иванович
+Базылева, Тамара Васильевна
+Миронов, Виктор Пименович
+Бакатин, Вадим Викторович
+Миронов, Владимир Николаевич
+Балакшин, Павел Николаевич
+Миронов, Геннадий Анатольевич
+Балалаев, Вячеслав Ефимович
+Миронов, Олег Орестович
+Балтин, Эдуард Дмитриевич
+Мисник, Борис Григорьевич
+Барабанов, Владимир Алексеевич
+Митин, Сергей Герасимович
+Баранов, Александр Иванович
+Митина, Дарья Александровна
+Баранов, Валерий Петрович
+Миткова, Татьяна Ростиславовна
+Бариев, Марат Мансурович
+Митрофанов, Алексей Валентинович
+Баркашов, Александр Петрович
+Митрохин, Сергей Сергеевич
+Барсуков, Михаил Иванович
+Митюков, Михаил Алексеевич
+Барышев, Владимир Иванович
+Митяев, Иван Иванович
+Барышников, Николай Павлович
+Михайлов, Александр Николаевич
+Басаев, Шамиль Салманович
+Михайлов, Алексей Юрьевич
+Басин, Ефим Владимирович
+Михайлов, Виктор Григорьевич
+Батагаев, Алексей Николаевич
+Михайлов, Виктор Никитович
+Батурин, Юрий Михайлович
+Михайлов, Вячеслав Александрович
+Бауэр, Владимир Анатольевич
+Михайлов, Вячеслав Федорович
+Башмачников, Владимир Федорович
+Михайлов, Евгений Эдуардович
+Баюнов, Владимир Александрович
+Михайлов, Николай Васильевич
+Безбородов, Николай Максимович
+Михайлов, Сергей Владимирович
+Безверхий, Сергей Федорович
+Михайлова, Эльмира Германовна
+Безлепкина, Людмила Федоровна
+Михалков, Никита Сергеевич
+Бекетов, Владимир Андреевич
+Михалков-Кончаловский, Андрон Сергеевич
+Беклемищева, Ольга Алексеевна
+Михеев, Михаил Александрович
+Мишин, Виктор Максимович
+Моисеев, Борис Александрович
+Моисеева, Вероника Владимировна
+Монастырский, Михаил Львович
+Белозерцев, Сергей Владимирович
+Морозов, Анатолий Тимофеевич
+Белоногов, Анатолий Николаевич
+Морозов, Владимир Васильевич
+Морозов, Олег Викторович
+Беляев, Сергей Георгиевич
+Морщакова, Тамара Георгиевна
+Беляков, Александр Семенович
+Мостовой, Петр Петрович
+Бендукидзе, Каха Автандилович
+Мошняков, Валерий Владимирович
+Бенов, Геннадий Матвеевич
+Мукомель, Владимир Изявич
+Бердникова, Нина Владимировна
+Муладжанов, Шод Саидович
+Муравленко, Сергей Викторович
+Березовский, Борис Абрамович
+Мусалатов, Хасан Аласханович
+Берестовой, Виктор Иванович
+Мусатов, Михаил Иванович
+Беспалов, Юрий Александрович
+Муха, Виталий Петрович
+Бессарабов, Владимир Григорьевич
+Назаров, Александр Викторович
+Назарчук, Александр Григорьевич
+Бигнов, Рамиль Имамагзамович
+Наздратенко, Евгений Иванович
+Бикалова, Надежда Александровна
+Биндюков, Николай Гаврилович
+Найчукова, Светлана Ивановна
+Найшуль, Виталий Аркадьевич
+Бирюков, Анатолий Михайлович
+Наролин, Михаил Тихонович
+Бирюков, Владимир Афанасьевич
+Нарусова, Людмила Борисовна
+Бичелдей, Каадыр-Оол Алексеевич
+Нахманович, Петр Абрамович
+Благоволин, Сергей Евгеньевич
+Неверов, Валерий Иванович
+Невзлин, Леонид Борисович
+Богатов, Владимир Владимирович
+Невзоров, Александр Глебович
+Богачев, Владимир Валентинович
+Неделин, Геннадий Павлович
+Богданов, Владимир Леонидович
+Недошивин, Вячеслав Михайлович
+Богданова, Елена Михайловна
+Неелов, Юрий Васильевич
+Богданчиков, Сергей Михайлович
+Некрасов, Леонид Васильевич
+Богомолов, Олег Алексеевич
+Некрутенко, Виктор Юрьевич
+Божедомова, Галина Клавдиевна
+Немцов, Борис Ефимович
+Бойко, Вадим Анатольевич
+Нестеренко, Татьяна Геннадьевна
+Бойко, Вячеслав Андреевич
+Нестеров, Юрий Михайлович
+Бойко, Максим Владимирович
+Неумывакин, Александр Яковлевич
+Нечаев, Андрей Алексеевич
+Бойцев, Анатолий Александрович
+Нещадин, Андрей Афанасьевич
+Боковиков, Александр Александрович
+Нигкоев, Сергей Георгиевич
+Болдырев, Юрий Юрьевич
+Никитин, Александр Иванович
+Большаков, Алексей Алексеевич
+Никитин, Андрей Владимирович
+Большаков, Евгений Александрович
+Никитин, Валентин Иванович
+Большаков, Сергей Владимирович
+Никитин, Владимир Петрович
+Бондарев, Григорий Семенович
+Никитин, Владимир Степанович
+Никитчук, Иван Игнатьевич
+Боос, Георгий Валентинович
+Никифоренко, Юрий Васильевич
+Борисенко, Николай Иванович
+Никифоров, Сергей Михайлович
+Николаев, Алексей Васильевич
+Борисоглебский, Александр Игоревич
+Николаев, Андрей Иванович
+Боровков, Владимир Семенович
+Николаев, Михаил Ефимович
+Боровой, Константин Натанович
+Николаевский, Владимир Юрьевич
+Бородаев, Валерий Васильевич
+Никологорский, Валерий Григорьевич
+Бородин, Виктор Иванович
+Никонов, Вячеслав Алексеевич
+Никулин, Валерий Афанасьевич
+Борщев, Валерий Васильевич
+Никулин, Юрий Владимирович
+Босхолов, Сергей Семенович
+Ниязов, Сапармурат Атаевич
+Бочаров, Михаил Александрович
+Новиков, Олег Иванович
+Бочин, Леонид Арнольдович
+Новодворская, Валерия Ильинична
+Брагинский, Александр Павлович
+Ножиков, Юрий Абрамович
+Братищев, Игорь Михайлович
+Носов, Валерий Борисович
+Бревнов, Борис Анатольевич
+Оболенский, Александр Митрофанович
+Брусникин, Николай Юрьевич
+Овченков, Вячеслав Иванович
+Брусницын, Юрий Александрович
+Овчинников, Константин Николаевич
+Брынцалов, Владимир Алексеевич
+Озеров, Виктор Алексеевич
+Ойкина, Зоя Николаевна
+Брынцалов, Юрий Григорьевич
+Ойнвид, Григорий Михайлович
+Бугера, Михаил Евгеньевич
+Олейник, Владимир Иванович
+Будажапов, Сергей Пурбуевич
+Олейник, Любовь Васильевна
+Ольшанский, Дмитрий Вадимович
+Букато, Виктор Иванович
+Ооржак, Шериг-оол Дизижикович
+Булавинов, Вадим Евгеньевич
+Орджоникидзе, Иосиф Николаевич
+Булгак, Владимир Борисович
+Орлов, Виктор Петрович
+Орлов, Владимир Андреевич
+Бунич, Павел Григорьевич
+Орлова, Светлана Юрьевна
+Бурбулис, Геннадий Эдуардович
+Осмаев, Амин Ахмедович
+Бурдуков, Павел Тимофеевич
+Основная, деятельность:
+Буренин, Владимир Арсеньевич
+Остальский, Дмитрий Всеволодович
+Останина, Нина Александровна
+Бурков, Сергей Васильевич
+Бурлуцкий, Юрий Иванович
+Павлов, Николай Александpович
+Бутаев, Владимир Иванович
+Павловский, Глеб Олегович
+Бутов, Евгений Леонидович
+Бученков, Евгений Викторович
+Бушмин, Евгений Викторович
+Пальчевский, Андрей Иванович
+Памфилова, Элла Александровна
+Быков, Валерий Алексеевич
+Панарин, Николай Васильевич
+Быков, Роллан Анатольевич
+Панин, Виктор Евгеньевич
+Былевский, Павел Геннадьевич
+Панков, Анатолий Семенович
+Быстрицкая, Элина Авраамовна
+Панкратов-Черный, Александр Васильевич
+Быстров, Сергей Николаевич
+Пансков, Владимир Георгиевич
+Бычков, Андрей Иванович
+Панфилов, Анатолий Алексеевич
+Вавилов, Андрей Петрович
+Панфилов, Анатолий Анатольевич
+Вавилов, Станислав Владимирович
+Панькин, Вячеслав Владимирович
+Вагин, Валерий Андреевич
+Парадиз, Александр Лазаревич
+Вайншток, Семен Михайлович
+Парамонова, Татьяна Владимировна
+Вакуленко, Михаил Юрьевич
+Паринов, Вячеслав Семенович
+Варенников, Валентин Иванович
+Варнавский, Владимир Алексеевич
+Паршаков, Юрий Николаевич
+Вартазарова, Людмила Степановна
+Пастухов, Борис Николаевич
+Васильев, Владимир Абдуалиевич
+Патрушев, Николай Платонович
+Пашуто, Владимир Ростиславович
+Васильев, Сергей Александрович
+Перминов, Анатолий Николаевич
+Вахруков, Сергей Алексеевич
+Петошин, Владимир Анатольевич
+Ведерников, Владимир Павлович
+Петренко, Сергей Васильевич
+Ведерников, Николай Трофимович
+Петрик, Александр Григорьевич
+Венгеров, Анатолий Борисович
+Петров, Андрей Юрьевич
+Венгеровский, Александр Дмитриевич
+Петров, Владимир Анатольевич
+Вепрев, Аркадий Филимонович
+Петров, Владимир Иванович
+Верещагин, Виктор Владимирович
+Петров, Олег Вадимович
+Вернигора, Владимир Сергеевич
+Петров, Юрий Владимирович
+Верховский, Александр Маркович
+Вершинин, Павел Николаевич
+Пехтин, Владимир Алексеевич
+Веселкин, Павел Михайлович
+Пешков, Виктор Петрович
+Пивненко, Валентина Николаевна
+Вечкасов, Юрий Иванович
+Пилипенко, Юрий Владимирович
+Вешняков, Александр Альбертович
+Пилипешин, Николай Анатольевич
+Вигдорчик, Елена Александровна
+Пискун, Николай Леонидович
+Пияшева, Лариса Ивановна
+Викторов, Валерьян Николаевич
+Платов, Владимир Игнатьевич
+Вилинбахов, Георгий Вадимович
+Платонов, Владимир Константинович
+Виноградов, Владимир Викторович
+Платонов, Владимир Михайлович
+Виноградов, Николай Владимирович
+Плетнева, Тамара Васильевна
+Виноградов, Павел Владимирович
+Плиев, Руслан Султанович
+Витрук, Николай Васильевич
+Плотников, Владимир Николаевич
+Вишняков, Виктор Григорьевич
+Побединская, Людмила Васильевна
+Вишняков, Виталий Евгеньевич
+Поводырь, Сергей Александрович
+Владиславлев, Александр Павлович
+Поволяев, Владимир Митрофанович
+Власов, Алексей Феликсович
+Подберезкин, Алексей Иванович
+Власов, Валентин Степанович
+Подгорнов, Николай Михайлович
+Власов, Юрий Васильевич
+Подколзин, Евгений Николаевич
+Подопригора, Владимир Николаевич
+Власова, Анна Петровна
+Подуфалов, Николай Дмитриевич
+Воеводин, Вадим Алексеевич
+Полдников, Юрий Иванович
+Войков, Андрей Иванович
+Полеванов, Владимир Павлович
+Волков, Александр Александрович
+Полежаев, Леонид Константинович
+Полтавченко, Георгий Сергеевич
+Волков, Василий Петрович
+Полторанин, Михаил Никифорович
+Волков, Владимир Николаевич
+Полуянов, Николай Андреевич
+Волков, Геннадий Константинович
+Поляков, Андрей Александрович
+Волков, Николай Михайлович
+Поляков, Николай Иванович
+Волкова, Ольга Николаевна
+Поляков, Юрий Александрович
+Воловик, Александр Михайлович
+Поморов, Александр Адрианович
+Володин, Николай Андреевич
+Понасов, Степан Николаевич
+Волошин, Александр Стальевич
+Пономарев, Александр Михайлович
+Волчек, Галина Борисовна
+Пономарев, Александр Сергеевич
+Вольский, Аркадий Иванович
+Пономарев, Алексей Алексеевич
+Воробьев, Эдуард Аркадьевич
+Пономарев, Алексей Филиппович
+Ворогушин, Виктор Анатольевич
+Пономарев, Геннадий Семенович
+Воронин, Владимир Васильевич
+Пономарев, Лев Александрович
+Воронин, Геннадий Петрович
+Попкович, Роман Семенович
+Воронин, Юрий Михайлович
+Попов, Александр Васильевич
+Воронцов, Алексей Алексеевич
+Попов, Алексей Анатольевич
+Воронцова, Зоя Ивановна
+Попов, Аркадий Алексеевич
+Воротников, Валерий Павлович
+Попов, Виктор Михайлович
+Выучейский, Вячеслав Алексеевич
+Попов, Гавриил Харитонович
+Вяхирев, Рэм Иванович
+Попов, Сергей Алексеевич
+Габидуллин, Ринат Гиндуллович
+Попов, Сергей Борисович
+Габуния, Георгий Валерьевич
+Попова, Татьяна Львовна
+Попцов, Олег Максимович
+Гаджиев, Гадис Абдуллаевич
+Пороховщиков, Александр Шалвович
+Гаер, Евдокия Александровна
+Потанин, Владимир Олегович
+Газеев, Евгений Иванович
+Потапенко, Александр Федорович
+Газизуллин, Фарит Рафикович
+Потапов, Леонид Васильевич
+Гайдар, Егор Тимурович
+Потапов, Сергей Александрович
+Гайдаш, Мария Ивановна
+Похмелкин, Виктор Валерьевич
+Гайсин, Малик Фавзавиевич
+Починок, Александр Петрович
+Галаган, Дмитрий Андреевич
+Премьяк, Петр Григорьевич
+Галазий, Григорий Иванович
+Примаков, Евгений Максимович
+Галазов, Ахсарбек Хаджимурзаевич
+Приходько, Сергей Эдуардович
+Галиев, Ахметгали Мухаметгалиевич
+Прокопенко, Вера Владимировна
+Гамза, Геннадий Ефимович
+Гамидов, Гамид Мустафаевич
+Проханов, Александр Андреевич
+Ганеев, Мулланур Фахразиевич
+Прудников, Виктор Алексеевич
+Гантамиров, Бислан Сайд-Алиевич
+Прусак, Михаил Михайлович
+Гареев, Махмут Ахметович
+Пузановский, Адриан Георгиевич
+Гаюльский, Виктор Иванович
+Пуликовский, Константин Борисович
+Гвоздева, Светлана Николаевна
+Путин, Владимир Владимирович
+Гдлян, Тельман Хоренович
+Пчелкин, Владимир Викторович
+Генералов, Андрей Иванович
+Пызин, Владимир Александрович
+Генералов, Сергей Владимирович
+Пыльнев, Виктор Викторович
+Гениатулин, Равиль Фаритович
+Пятницкий, Юрий Георгиевич
+Герасименко, Николай Федорович
+Рoйтман, Илья Борисович
+Герасимов, Сергей Иванович
+Рабданов, Владимир Рабданович
+Геращенко, Виктор Владимирович
+Радуев, Салман
+Раевская, Наталия Алексеевна
+Гинзбург, Соломон Израилевич
+Райков, Геннадий Иванович
+Гитин, Виктор Владимирович
+Рахимов, Муртаза Губайдуллович
+Глазьев, Сергей Юрьевич
+Рахманин, Владимир Олегович
+Глотов, Сергей Александрович
+Рахмонов, Эмомали Шарипович
+Глубоковский, Михаил Константинович
+Рейман, Леонид Дододжонович
+Глухих, Виктор Константинович
+Решульский, Сергей Николаевич
+Глушенков, Анатолий Егорович
+Римский, Владимир Львович
+Глущенко, Михаил Иванович
+Рогозин, Дмитрий Олегович
+Говорин, Борис Александрович
+Родионов, Игорь Николаевич
+Говорухин, Станислав Сергеевич
+Родионов, Петр Иванович
+Голембиовский, Игорь Несторович
+Родионов, Сергей Сергеевич
+Голов, Анатолий Григорьевич
+Рожков, Виктор Дмитриевич
+Головков, Алексей Леонардович
+Рокецкий, Леонид Юлианович
+Головлев, Владимир Иванович
+Романов, Валентин Степанович
+Гоман, Владимир Владимирович
+Романов, Петр Васильевич
+Гонжаров, Олег Павлович
+Романовский, Михаил Александрович
+Гончар, Николай Николаевич
+Ромашкин, Виктор Васильевич
+Горбачев, Михаил Сергеевич
+Россель, Эдуард Эргартович
+Горбачева, Раиса Максимовна
+Рохлин, Лев Яковлевич
+Гордеев, Алексей Васильевич
+Рощина, Татьяна Николаевна
+Гордеев, Анатолий Николаевич
+Руга, Владимир Эдуардович
+Горлов, Александр Викторович
+Рудкин, Юрий Дмитриевич
+Горшков, Михаил Константинович
+Руднов, Олег Константинович
+Горюнов, Владимир Дмитриевич
+Румянцев, Александр Юрьевич
+Горюнов, Евгений Владимирович
+Румянцев, Олег Германович
+Горячев, Валерий Сергеевич
+Горячев, Марк Леонидович
+Рутковский, Олег Всеволодович
+Горячев, Юрий Фролович
+Руцкой, Александр Владимирович
+Горячева, Светлана Петровна
+Рушайло, Владимир Борисович
+Гостев, Руслан Георгиевич
+Рыбаков, Юлий Андреевич
+Рыбкин, Иван Петрович
+Грачев, Павел Сергеевич
+Рыгалов, Александр Андреевич
+Гребенников, Валерий Васильевич
+Рыжков, Владимир Александрович
+Рыжков, Николай Иванович
+Грешневиков, Анатолий Николаевич
+Рюриков, Дмитрий Борисович
+Григориади, Владимир Стиллианович
+Рябов, Александр Иванович
+Григорьев, Валерий Николаевич
+Рябов, Николай Тимофеевич
+Григорьев, Владимир Федорович
+Гришин, Василий Дмитриевич
+Рябухин, Сергей Николаевич
+Гришкевич, Олег Петрович
+Сабиров, Марат Хамзинович
+Гришуков, Владимир Витальевич
+Савельев, Александр Георгиевич
+Савельев, Константин Сергеевич
+Громов, Борис Всеволодович
+Савельев, Николай Николаевич
+Громов, Владимир Павлович
+Громов, Феликс Николаевич
+Савиных, Виктор Петрович
+Грошев, Владимир Павлович
+Савицкая, Светлана Евгеньевна
+Грущак, Сергей Владимирович
+Савицкий, Виталий Викторович
+Савицкий, Олег Владимирович
+Губенко, Николай Николаевич
+Савченко, Евгений Степанович
+Губкин, Игорь Владимирович
+Савченко, Олег Витальевич
+Гудима, Тамара Михайловна
+Савчук, Вера Семеновна
+Гужвин, Анатолий Петрович
+Сагалаев, Эдуард Михайлович
+Гуров, Александр Иванович
+Садчиков, Георгий Михайлович
+Гусарова, Галина Ивановна
+Саетгалиев, Зифкат Исламович
+Гусев, Владимир Кузьмич
+Сажинов, Павел Александрович
+Гусев, Павел Николаевич
+Сайфуллин, Альзам Тухватуллинович
+Гусинский, Владимир Александрович
+Сайфуллин, Инсаф Шарифуллович
+Гусман, Юлий Соломонович
+Салий, Александр Иванович
+Густов, Вадим Анатольевич
+Салов, Евгений Иванович
+Гуськов, Юрий Александрович
+Салчак, Галина Алексеевна
+Гуцериев, Михаил Сафарбекович
+Салье, Марина Евгеньевна
+Давиденко, Владимир Иванович
+Сальников, Виктор Иванович
+Давиташвили, Евгения Ювашевна (Джуна)
+Сандлер, Маргарита Ревмировна
+Давыдкин, Виктор Алексеевич
+Сапиро, Евгений Саулович
+Давыдов, Александр Семенович
+Сапожников, Николай Иванович
+Давыдов, Андрей Александрович
+Сатаров, Георгий Александрович
+Давыдов, Виктор Федорович
+Сафаров, Раджаб Саттарович
+Давыдов, Всеволод Геннадьевич
+Сафронов, Виталий Александрович
+Давыдов, Олег Дмитриевич
+Сахарков, Юрий Викторович
+Давыдов, Сергей Вячеславович
+Свечников, Петр Григорьевич
+Дальский, Николай Николаевич
+Свинин, Сергей Васильевич
+Даниленко, Сергей Андреевич
+Севастьянов, Виталий Иванович
+Данилов, Юрий Михайлович
+Севенард, Константин Юрьевич
+Данилова, Нина Петровна
+Севенард, Юрий Константинович
+Данченко, Борис Иванович
+Севрюгин, Николай Васильевич
+Селезнев, Геннадий Николаевич
+Дейнекин, Петр Степанович
+Селезнев, Николай Васильевич
+Дементьева, Наталья Леонидовна
+Селиванов, Андрей Владимирович
+Демидов, Иван Иванович
+Селиверстов, Юрий Иванович
+Семаго, Владимир Владимирович
+Денисенко, Бэлла Анатольевна
+Семенов, Виктор Александрович
+Денисов, Анатолий Кузьмич
+Семенов, Михаил Иннокентьевич
+Деревянко, Виктор Васильевич
+Семенов, Сергей Сергеевич
+Дерипаска, Олег Владимирович
+Семенов, Юрий Павлович
+Дерюгин, Юрий Иванович
+Семергей, Леонид Васильевич
+Дерябин, Юрий Степанович
+Сенин, Григорий Николаевич
+Десятников, Василий Алексеевич
+Сергеев, Игорь Дмитриевич
+Сергеенков, Владимир Нилович
+Джанибеков, Владимир Александрович
+Сергиенко, Валерий Иванович
+Джаримов, Аслан Алиевич
+Серов, Валерий Михайлович
+Сеславинский, Михаил Вадимович
+Дзасохов, Александр Сергеевич
+Сивак, Анатолий Васильевич
+Дмитриева, Оксана Генриховна
+Сигарев, Сергей Федорович
+Дмитриева, Татьяна Борисовна
+Сидоров, Анатолий Степанович
+Долголаптев, Анатолий Васильевич
+Сидоров, Евгений Юрьевич
+Сидоров, Михаил Викторович
+Дондуков, Александр Николаевич
+Симонов, Алексей Кириллович
+Доренко, Сергей Леонидович
+Симонов, Валерий Петрович
+Драчевский, Леонид Вадимович
+Симонов, Михаил Петрович
+Дубенецкий, Яков Николаевич
+Сироткин, Владимир Дмитриевич
+Дубинин, Сергей Константинович
+Ситников, Алексей Петрович
+Дубровина, Елена Павловна
+Скворцов, Вячеслав Николаевич
+Дурягин, Иван Николаевич
+Скворцов, Сергей Борисович
+Душенов, Константин Юрьевич
+Скляров, Иван Петрович
+Дьяченко, Владимир Николаевич
+Скоков, Юрий Владимирович
+Дьяченко, Татьяна Борисовна
+Скуратов, Юрий Ильич
+Евстафьев, Аркадий Вячеславович
+Скурихин, Сергей Васильевич
+Скурлатов, Валерий Иванович
+Егоров, Александр Кирьянович
+Славный, Василий Дмитриевич
+Егоров, Владимир Константинович
+Слива, Анатолий Яковлевич
+Егоров, Михаил Константинович
+Слиска, Любовь Константиновна
+Егоров, Николай Дмитриевич
+Сметанкин, Евгений Александрович
+Егоров, Сергей Ефимович
+Смирнов, Анатолий Анатольевич
+Елагин, Владимир Васильевич
+Смирнов, Валерий Марксович
+Елисеев, Александр Игоревич
+Смирнов, Евгений Александрович
+Елчев, Виктор Алексеевич
+Смирнов, Михаил Владимирович
+Ельцин, Борис Николаевич
+Смоленский, Александр Павлович
+Емельянов, Алексей Михайлович
+Смолин, Олег Николаевич
+Емельянов, Михаил Васильевич
+Смоляков, Владимир Николаевич
+Еньков, Сергей Алексеевич
+Собакин, Евгений Юрьевич
+Соболев, Анатолий Николаевич
+Ермаченко, Станислав Васильевич
+Собчак, Анатолий Александрович
+Ермишин, Александр Викторович
+Собянин, Сергей Семенович
+Ефимов, Виталий Борисович
+Сокол, Святослав Михайлович
+Ефремов, Анатолий Антонович
+Соколов, Александр Сергеевич
+Жабоев, Махмуд Надирович
+Соколов, Андрей Владимирович
+Жамсуев, Баир Баясхаланович
+Соколов, Вячеслав Константинович
+Ждакаев, Иван Андреевич
+Сокур, Дмитрий Иванович
+Соловьев, Анатолий Яковлевич
+Жебровский, Станислав Михайлович
+Соловьев, Вадим Павлович
+Жимиров, Вадим Николаевич
+Соловьев, Владимир Владимирович
+Жириновский, Владимир Вольфович
+Соломатин, Анатолий Васильевич
+Жуков, Александр Дмитриевич
+Соломатин, Егор Юрьевич
+Жукова, Нелля Николаевна
+Солонников, Дмитрий Владимирович
+Жуковский, Александр Иванович
+Солтаганов, Вячеслав Федорович
+Журбенко, Владимир Михайлович
+Солуянов, Андрей Владимирович
+Журко, Василий Васильевич
+Сорокина, Елена Станиславовна
+Забейворота, Александр Иванович
+Сосковец, Олег Николаевич
+Завгаев, Доку Гапурович
+Сохов, Владимир Казбулатович
+Заверюха, Александр Харлампиевич
+Спиридонов, Юрий Алексеевич
+Завидия, Андрей Федорович
+Станкевич, Сергей Борисович
+Задорин, Игорь Вениаминович
+Станков, Анатолий Георгиевич
+Задорнов, Михаил Михайлович
+Старков, Владислав Андреевич
+Зайцев, Анатолий Александрович
+Старовойтова, Галина Васильевна
+Залыгин, Сергей Павлович
+Стародубов, Владимир Иванович
+Заричанский, Станислав Константинович
+Стародубцев, Василий Александрович
+Заславская, Татьяна Ивановна
+Старостенко, Владимир Иванович
+Застрожная, Ольга Кирилловна
+Степанков, Валентин Георгиевич
+Затулин, Константин Федорович
+Степанов, Андрей Георгиевич
+Захаров, Алексей Константинович
+Степанов, Виктор Николаевич
+Зацепина, Нина Андреевна
+Степанов, Виктор Федорович
+Зволинский, Вячеслав Петрович
+Степанов, Владимир Алексеевич
+Зеленин, Владимир Михайлович
+Степанов, Евгений Иванович
+Зеленкин, Виктор Васильевич
+Степанов, Сергей Борисович
+Зеленкин, Виталий Афанасьевич
+Степанов, Теймураз Георгиевич
+Зеленов, Евгений Алексеевич
+Степашин, Сергей Вадимович
+Зелент, Иван Зигмундович
+Стерлигов, Александр Николаевич
+Зеренков, Валерий Георгиевич
+Столяров, Николай Сергеевич
+Злобин, Владимир Вениаминович
+Столярова, Насима Калимовна
+Злобина, Лариса Афанасьевна
+Страхов, Алексей Леонидович
+Злотникова, Тамара Владимировна
+Стрекозов, Владимир Георгиевич
+Золотарев, Виктор Борисович
+Золотарев, Владимир Антонович
+Суворов, Александр Сергеевич
+Зоркальцев, Виктор Ильич
+Судаков, Гурий Васильевич
+Зорькин, Валерий Дмитриевич
+Сударенков, Валерий Васильевич
+Зотиков, Алексей Алексеевич
+Сулакшин, Степан Степанович
+Зотин, Владислав Максимович
+Сулейменов, Ибрагим Абдурахманович
+Султанов, Ринат Ишбулдович
+Зубов, Валерий Михайлович
+Сурганов, Вячеслав Сергеевич
+Зырянов, Сергей Владимирович
+Суриков, Александр Александрович
+Зюганов, Геннадий Андреевич
+Сурков, Михаил Семенович
+Зяблицев, Евгений Геннадьевич
+Суров, Петр Сергеевич
+Иваненко, Сергей Викторович
+Сысуев, Олег Николаевич
+Иванков, Владимир Иванович
+Сычев, Анатолий Павлович
+Иванов, Василий Васильевич
+Сычев, Сергей Владимирович
+Танаев, Кирилл Валерьевич
+Иванов, Игорь Владимирович
+Таранцов, Михаил Александрович
+Иванов, Игорь Сергеевич
+Тарасов, Артем Михайлович
+Тарасов, Валерий Михайлович
+Тарачев, Владимир Александрович
+Иванова, Татьяна Борисовна
+Татаркин, Александр Иванович
+Иванченко, Леонид Андреевич
+Тацюн, Мирон Васильевич
+Иванюженков, Борис Викторович
+Темиржанов, Владимир Хасанбиевич
+Игнатенко, Виталий Никитич
+Теребов, Олег Владимирович
+Игнатьев, Игорь Владимирович
+Терентьев, Василий Дмитриевич
+Игнатьев, Кирилл Борисович
+Терехов, Станислав Николаевич
+Игнатьев, Сергей Михайлович
+Тетельмин, Владимир Владимирович
+Игрунов, Вячеслав Владимирович
+Тизяков, Александр Иванович
+Игумнов, Геннадий Вячеславович
+Титкин, Александр Алексеевич
+Илларионов, Андрей Николаевич
+Титов, Герман Степанович
+Ильюшенко, Алексей Николаевич
+Титов, Константин Алексеевич
+Ильясов, Станислав Валентинович
+Тиунов, Олег Иванович
+Илюмжинов, Кирсан Николаевич
+Тихомиров, Валерий Викторович
+Илюхин, Виктор Иванович
+Тихомиров, Владислав Николаевич
+Илюшин, Виктоp Васильевич
+Тихонов, Александр Анатольевич
+Ионов, Анатолий Васильевич
+Тихонов, Александр Николаевич
+Ипполитов, Ксенофонт Христофорович
+Тихонов, Виктор Васильевич
+Исаков, Владимир Борисович
+Тихонов, Владимир Ильич
+Исаков, Николай Алексеевич
+Тихонов, Георгий Иванович
+Тишков, Андрей Николаевич
+Ишмуратов, Минниарис Минигалиевич
+Ткачев, Александр Николаевич
+Ищенко, Евгений Петрович
+Топорков, Владимир Федорович
+Топорков, Михаил Николаевич
+Кагаловский, Константин Григорьевич
+Топоров, Владимир Михайлович
+Каданников, Владимир Васильевич
+Торлопов, Владимир Александрович
+Тосунян, Гарегин Ашотович
+Казаков, Александр Иванович
+Тотиев, Сергей Александрович
+Казаков, Леонид Андреевич
+Тохтабиев, Сергей Аминович
+Казакова, Римма Федоровна
+Травкин, Николай Ильич
+Казаковцев, Владимир Александрович
+Трапезников, Валерий Владимирович
+Казанник, Алексей Иванович
+Третьяков, Виталий Товиевич
+Трошев, Геннадий Николаевич
+Казаров, Олег Владимирович
+Трошкин, Николай Никитич
+Казеннов, Сергей Юрьевич
+Трубников, Вячеслав Иванович
+Трушников, Валерий Георгиевич
+Каламанов, Владимир Авдашевич
+Тулеев, Аман-гельды Молдагазыевич
+Калачев, Константин Эдуардович
+Туманов, Вадим Иванович
+Калашников, Сергей Вячеславович
+Туманов, Владимир Александрович
+Калугин, Олег Данилович
+Туманов, Владислав Николаевич
+Калюжный, Виктор Иванович
+Туманов, Сергей Владимирович
+Калягин, Владимир Александрович
+Туполев, Алексей Андреевич
+Камышинский, Николай Акимович
+Турусин, Анатолий Афанасьевич
+Канаев, Леонид Михайлович
+Тюлькин, Виктор Аркадьевич
+Караганов, Сергей Александрович
+Тягунов, Александр Александрович
+Карапетян, Саак Альбертович
+Тяжлов, Анатолий Степанович
+Карев, Владимир Николаевич
+Убожко, Лев Григорьевич
+Карелин, Александр Александрович
+Уваров, Вячеслав Николаевич
+Карелова, Галина Николаевна
+Удугов, Мовлади
+Каримова, Дания Юсуфовна
+Ульбашев, Мухарби Магомедович
+Карпов, Анатолий Евгеньевич
+Улюкаев, Алексей Валентинович
+Карпов, Станислав Анатольевич
+Умалатова, Сажи Зайндиновна
+Касатонов, Игорь Владимирович
+Уразбаев, Нурлан Уланович
+Касьянов, Михаил Михайлович
+Уринсон, Яков Моисеевич
+Катальников, Владимир Дмитриевич
+Устинов, Владимир Васильевич
+Квашнин, Анатолий Васильевич
+Устюгов, Валерий Николаевич
+Кечкин, Валерий Алексеевич
+Уткин, Владимир Петрович
+Кибирев, Борис Григорьевич
+Уткин, Юрий Васильевич
+Кивелиди, Иван Харлампиевич
+Ушаков, Вячеслав Юрьевич
+Кинелев, Владимир Георгиевич
+Фалалеев, Сергей Николаевич
+Кириенко, Сергей Владиленович
+Фархутдинов, Игорь Павлович
+Кирилл, митрополит
+Федоров, Борис Григорьевич
+Кирпичников, Валерий Александрович
+Федоров, Валерий Валерьевич
+Кирпичников, Михаил Петрович
+Федоров, Евгений Алексеевич
+Кирпичников, Юрий Александрович
+Федоров, Николай Васильевич
+Киселев, Александр Николаевич
+Федоров, Святослав Николаевич
+Киселев, Вячеслав Викторович
+Федосеев, Анатолий Михайлович
+Киселев, Евгений Алексеевич
+Федосеева-Шукшина, Лидия Николаевна
+Киселев, Олег Владимирович
+Федосов, Виктор Иванович
+Кислюк, Михаил Борисович
+Федулова, Алевтина Васильевна
+Киц, Александр Владимирович
+Федутинов, Юрий Юрьевич
+Клебанов, Илья Иосифович
+Филатов, Александр Валентинович
+Климантова, Галина Ивановна
+Филимонов, Вадим Донатович
+Клямкин, Игорь Моисеевич
+Филин, Владимир Иванович
+Кныш, Валентин Филиппович
+Филипенко, Александр Васильевич
+Кобелев, Виктор Васильевич
+Филиппов, Владимир Михайлович
+Кобец, Константин Иванович
+Филиппов, Петр Сергеевич
+Кобзон, Иосиф Давыдович
+Фильшин, Михаил Владимирович
+Кобылкин, Василий Федорович
+Финько, Олег Александрович
+Ковалев, Александр Яковлевич
+Фоминцев, Сергей Анатольевич
+Ковалев, Валентин Алексеевич
+Фортов, Владимир Евгеньевич
+Ковалев, Николай Дмитриевич
+Фрадков, Михаил Ефимович
+Ковалев, Сергей Адамович
+Франк, Сергей Оттович
+Коваленок, Владимир Васильевич
+Хабаров, Владимир Викторович
+Ковальский, Леон Иосифович
+Хабаров, Олег Сергеевич
+Ковлягин, Анатолий Федорович
+Хакамада, Ирина Муцуовна
+Коган, Евгений Владимирович
+Хамаев, Азат Киямович
+Кожокин, Евгений Михайлович
+Харитонов, Александр Петрович
+Козак, Дмитрий Николаевич
+Харитонов, Евгений Михайлович
+Козерадский, Анатолий Александрович
+Харитонов, Николай Михайлович
+Козицын, Николай Иванович
+Хаттаб, (Хабиб Абдул Рахман)
+Козлов, Андрей Андреевич
+Хватков, Николай Павлович
+Козлов, Евгений Александрович
+Хижа, Георгий Степанович
+Козырев, Александр Иванович
+Хлыстун, Виктор Николаевич
+Козырев, Андрей Владимирович
+Ходорковский, Михаил Борисович
+Козырева, Александра Михайловна
+Ходырев, Геннадий Максимович
+Коков, Валерий Мухамедович
+Холод, Леонид Иванович
+Кокошин, Андрей Афанасьевич
+Хохлов, Вячеслав Александрович
+Колесников, Виктор Иванович
+Хохрякова, Ольга Сергеевна
+Колесников, Михаил Петрович
+Хрипель, Геннадий Тимофеевич
+Христенко, Виктор Борисович
+Колюшин, Евгений Иванович
+Хрусталев, Герман Александрович
+Комаров, Александр Сергеевич
+Хубиев, Владимир Исламович
+Комаров, Евгений Борисович
+Хутанов, Леонид Александрович
+Комаровский, Юрий Владимирович
+Комов, Николай Васильевич
+Цветков, Валентин Иванович
+Комчатов, Владимир Федорович
+Циблиев, Василий Васильевич
+Кондратенко, Николай Игнатович
+Цику, Казбек Асланбечевич
+Кондратьев, Георгий Григорьевич
+Кононов, Анатолий Леонидович
+Чайка, Юрий Яковлевич
+Константинов, Илья Владиславович
+Чаптынов, Валерний Иванович
+Конташов, Анатолий Павлович
+Чахкиев, Башир Ахмедович
+Черепков, Виктор Иванович
+Коргунюк, Юрий Григорьевич
+Черкесов, Виктор Васильевич
+Коржаков, Александр Васильевич
+Черненко, Андрей Григорьевич
+Корниенко, Виктор Ульянович
+Черниченко, Юрий Дмитриевич
+Корнилова, Зоя Афанасьевна
+Черногоров, Александр Леонидович
+Корнуков, Анатолий Михайлович
+Черномырдин, Виктор Степанович
+Коровников, Александр Венидиктович
+Черный, (Черной) Михаил Семенович
+Королев, Олег Петрович
+Чернышев, Алексей Андреевич
+Коротков, Леонид Викторович
+Чернышев, Василий Иванович
+Корсаков, Николай Николаевич
+Чеснаков, Алексей Александрович
+Корсун, Юрий Николаевич
+Четин, Иван Васильевич
+Коршунов, Лев Александрович
+Чехоев, Анатолий Георгиевич
+Косиков, Михаил Филиппович
+Чечеватов, Виктор Степанович
+Костерин, Евгений Алексеевич
+Чикин, Валентин Васильевич
+Костин, Георгий Васильевич
+Чилингаров, Артур Николаевич
+Костоев, Исса Магомедович
+Чистоходова, Рита Васильевна
+Костюткин, Владимир Михайлович
+Чуб, Владимир Федорович
+Чубайс, Анатолий Борисович
+Котелкин, Александр Иванович
+Чумиков, Александр Николаевич
+Котенков, Александр Алексеевич
+Чуньков, Юрий Иванович
+Котков, Анатолий Степанович
+Чурилов, Алексей Викторович
+Кох, Альфред Рейнгольдович
+Чуркин, Геннадий Иванович
+Кошева, Виолетта Константиновна
+Шабанов, Александр Александрович
+Кошелюк, Мирослав Евгеньевич
+Шабанов, Иван Михайлович
+Кошкин, Михаил Петрович
+Шабдурасулов, Игорь Владимирович
+Шабунин, Иван Петрович
+Кравец, Александр Алексеевич
+Шагидулин, Анвер Галлямович
+Кравцов, Юрий Анатольевич
+Шаинский, Владимир Яковлевич
+Кравчук, Леонид Макарович
+Шаймиев, Минтимер Шарипович
+Крапивин, Юрий Васильевич
+Шаккум, Мартин Люцианович
+Красников, Дмитрий Федорович
+Шаманов, Владимир Анатольевич
+Краснов, Михаил Александрович
+Шандыбин, Василий Иванович
+Крашенинников, Павел Владимирович
+Шаповальянц, Андрей Георгиевич
+Кременец, Ирина Васильевна
+Шапошников, Евгений Иванович
+Кресс, Виктор Мельхиорович
+Шарапов, Владимир Федорович
+Крестьянинов, Евгений Владимирович
+Шарова, Галина Михайловна
+Кривельская, Нина Викторовна
+Шаталин, Станислав Сергеевич
+Кругликов, Александр Леонидович
+Шаталов, Сергей Дмитриевич
+Круглов, Анатолий Сергеевич
+Шафраник, Юрий Константинович
+Крупнов, Александр Евгеньевич
+Шахов, Владимир Николаевич
+Крючков, Анатолий Викторович
+Шахрай, Сергей Михайлович
+Куваев, Александр Александрович
+Шашурин, Сергей Петрович
+Кувшинов, Александр Иванович
+Швец, Любовь Никитична
+Куделина, Любовь Кондратьевна
+Швидлер, Евгений Маркович
+Кудрин, Алексей Леонидович
+Швыдкой, Михаил Ефимович
+Куевда, Григорий Андреевич
+Шевелуха, Виктор Степанович
+Кузнецов, Александр Владимирович
+Шевченко, Вячеслав Алексеевич
+Кузнецов, Борис Юрьевич
+Шевченко, Юрий Леонидович
+Кузнецов, Владислав Алексеевич
+Шейнис, Виктор Леонидович
+Кузнецов, Вячеслав Юрьевич
+Шелищ, Петр Борисович
+Кузнецов, Леонтий Васильевич
+Шенин, Олег Семенович
+Кузнецов, Михаил Варфоломеевич
+Шенкарев, Олег Александрович
+Кузнецов, Юрий Павлович
+Шестаков, Владимир Афанасьевич
+Кузьмин, Владимир Васильевич
+Шестаков, Дмитрий Юрьевич
+Кулешов, Олег Степанович
+Шипов, Александр Борисович
+Кулик, Геннадий Васильевич
+Шишлов, Александр Владимирович
+Куликов, Александр Дмитриевич
+Шкирко, Анатолий Афанасьевич
+Куликов, Анатолий Сергеевич
+Шмаков, Михаил Викторович
+Кульбака, Нина Ивановна
+Шматов, Юрий Анисимович
+Кульянов, Евгений Георгиевич
+Шмелев, Николай Петрович
+Кулясова, Нина Александровна
+Шойгу, Сергей Кужугетович
+Кумачев, Владимир Николаевич
+Шохин, Александр Николаевич
+Купцов, Валентин Александрович
+Шпигель, Леонид Теодорович
+Курамин, Владимир Петрович
+Штогрин, Сергей Иванович
+Курбатов, Владимир Николаевич
+Штыгашев, Владимир Николаевич
+Кургинян, Сергей Ервандович
+Шуба, Виталий Борисович
+Куркова, Бэлла Алексеевна
+Шубина, Татьяна Ивановна
+Куроедов, Владимир Иванович
+Курочкин, Виктор Васильевич
+Шугуров, Расуль Игдисамович
+Лапин, Александр Александрович
+Шумейко, Владимир Филлипович
+Лаптев, Иван Дмитриевич
+Шурчанов, Валентин Сергеевич
+Лапшин, Михаил Иванович
+Шутеев, Василий Иванович
+Ларионов, Егор Михайлович
+Шушкевич, Станислав Станиславович
+Ларицкий, Владимир Ермолаевич
+Щекочихин, Юрий Петрович
+Лахова, Екатерина Филипповна
+Щербак, Владимир Николаевич
+Лацис, Отто Рудольфович
+Щербаков, Владимир Иванович
+Лебедев, Вячеслав Михайлович
+Эбзеев, Борис Сафарович
+Лебедь, Александp Иванович
+Лебедь, Алексей Иванович
+Юмашев, Валентин Борисович
+Лемешев, Михаил Яковлевич
+Юрков, Анатолий Петрович
+Лемешов, Геннадий Владимирович
+Юрчик, Владислав Григорьевич
+Леонид, Николаевич Чернышев
+Юрьев, Михаил Зиновьевич
+Юшенков, Сергей Николаевич
+Леончев, Владимир Александрович
+Явлинский, Григорий Алексеевич
+Лесин, Михаил Юрьевич
+Якимов, Анатолий Михайлович
+Леушкин, Сергей Геннадьевич
+Якимов, Виктор Васильевич
+Лившиц, Александр Яковлевич
+Яковлев, Вениамин Федорович
+Лимонов, (Савенко) Эдуард Вениаминович
+Яковлев, Владимир Анатольевич
+Линник, Виталий Викторович
+Яковлев, Владимир Николаевич
+Липицкий, Василий Семенович
+Якубович, Леонид Аркадьевич
+Липсиц, Игорь Владимирович
+Якунин, Глеб Павлович
+Лисецкий, Петр Иванович
+Якуш, Михаил Михайлович
+Лисицин, Анатолий Иванович
+Якушкин, Дмитрий Дмитриевич
+Лисичкин, Владимир Александрович
+Яндарбиев, Зелимхан Абдумуслимович
+Лисовский, Сергей Федорович
+Янковский, Аркадий Эдуардович
+Лиханов, Альберт Анатольевич
+Яриханов, Хож-Ахмед
+Лихачев, Василий Николаевич
+Лихачев, Владимир Николаевич
+Ярославцев, Владимир Григорьевич
+Лобанов, Александр Владимирович
+Ярошенко, Анатолий Иванович
+Яруллин, Вафа Сейтбатталович
+Логинов, Евгений Юрьевич
+Ярыгина, Татьяна Владимировна
+Лодкин, Юрий Евгеньевич
+Ясин, Евгений Григорьевич
+Лозинская, Жанна Михайловна
+Ястржембский, Сергей Владимирович
+Лопатин, Владимир Николаевич
+Яхин, Халит Ахметович
+Лоторев, Александр Николаевич
+Яцкевич, Борис Александрович
+Лужков, Юрий Михайлович
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSH.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSH.txt
new file mode 100644
index 0000000..246f48e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSH.txt
@@ -0,0 +1,61254 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2006, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+ČAČIĆ ALEKSANDAR
+ČAČIĆ JELICA
+ČAČIĆ MARIJA
+ČAČIĆ NIKOLA
+ČAČIJA BRANKO
+ČAĐENOVIĆ ŽARKO
+ČAĐENOVIĆ SABINA
+ČABAI ANDRIJA
+ČABAI LAJOŠ
+ČABAI MARIJA
+ČABAI STEVAN
+ČABAI STEVAN
+ČABARKAPA BRANKO
+ČABARKAPA MILENKO
+ČABARKAPA MIROSLAV
+ČABARKAPA SIMO
+ČABARKAPA STANKO
+ČABARKAPA TAMARA
+ČABARKAPA TOMAŠ
+ČABDARIĆ NIKOLA
+ČABDARIĆ ZORICA
+ČABI NANDOR
+ČABOVIĆ MILAN
+ČABRADI AGNEZIJA
+ČABRADI IVAN
+ČABRADI JELENA
+ČABRADI LJUBICA
+ČABRADI STEVAN
+ČABRDA MARTIN
+ČABRILO BOGDAN
+ČABRILO BRANISLAV
+ČABRILO LAZAR
+ČABRILO LJUBICA
+ČABRILO SPASOJA
+ČADEŠ ZDENKA
+ČADESKI BLAGOJE
+ČADOVSKI VLADIMIR
+ČAGLJEVIĆ TOMA
+ČAGOROVIĆ VLADIMIR
+ČAJA VANKA
+ČAJIĆ BOGOLJUB
+ČAJIĆ BORISLAV
+ČAJIĆ RADOSLAV
+ČAKŠIRAN MILADIN
+ČAKAN EUGEN
+ČAKAN EVGENIJE
+ČAKAN IVAN
+ČAKAN JULIJAN
+ČAKAN MIHAJLO
+ČAKAN STEVAN
+ČAKAN VLADIMIR
+ČAKAN VLADIMIR
+ČAKAN VLADIMIR
+ČAKARA ANA
+ČAKAREVIĆ MOMIR
+ČAKAREVIĆ NEDELJKO
+ČAKI ŠANDOR
+ČAKI AMALIJA
+ČAKI ANDRAŠ
+ČAKI LADISLAV
+ČAKI LAJOŠ
+ČAKI LASLO
+ČAKI MIHALJ
+ČAKI MIHALJ
+ČAKI PIROŠKA
+ČAKIĆ SAVA
+ČAKIĆ ZLATOJE DR
+ČAKMAK DANICA
+ČAKMAK DEJAN
+ČAKMAK LAZAR
+ČAKMAK LJILJANA
+ČAKMAK LJUBICA
+ČAKMAK SOFIJA
+ČAKMAK SVETOZAR
+ČAKMAL VOJISLAV
+ČAKOVAC BORISLAV
+ČAKOVAC MIROSLAV
+ČAKOVAC PANTELIJA
+ČAKOVAC SAVA
+ČAKOVIĆ ZDRAVKO
+ČAKRA MILENA
+ČALA ĐULA
+ČALA IREN
+ČALA IVANKA
+ČALA LENKA
+ČALAKIĆ BRANKO
+ČALAKIĆ LJUBOMIR
+ČALAKIĆ MARKO
+ČALAKIĆ MILAN
+ČALE IVAN
+ČALE JOSIP
+ČALE MILAN
+ČALE SOFIJA
+ČALE VLADIMIR
+ČALENIĆ BORISLAV
+ČALENIĆ BRANISLAVA
+ČALENIĆ DINA
+ČALENIĆ DRAGICA
+ČALENIĆ LAZAR
+ČALENIĆ LJILJANA
+ČALENIĆ LJUBOMIR
+ČALENIĆ LUKA
+ČALENIĆ MILOSAVA
+ČALENIĆ MIRJANA
+ČALENIĆ STEVAN
+ČALIĆ BOŠKO
+ČALIĆ JOVO
+ČALIĆ MARIJA
+ČALIJA DANICA
+ČALIJA JOVAN
+ČALIJA LAZAR
+ČALIJA MILAN
+ČAMĐIĆ JAHIJA
+ČAMANGOS ĐORĐE
+ČAMANGOS KATICA
+ČAMBER LJUBICA
+ČAMBOR ĐURO
+ČAMBOR ANDRIJA
+ČAMBOR JOSIP
+ČAMDŽIĆ NEAD
+ČAMO BARBARA
+ČAMPRAG ĐORĐE LEKAR
+ČAMPRAG DRAGA
+ČAMPRAG DUŠAN
+ČAMPRAG LJUBICA
+ČAMPRAG MILAN
+ČANČAR ĐORĐE
+ČANČAREVIĆ JOVANKA
+ČANČAREVIĆ MIROLJUB
+ČANČAREVIĆ MLADEN
+ČANADŽIĆ ĐORĐE
+ČANADŽIĆ JOVAN
+ČANADŽIĆ SANJA
+ČANADANOVIĆ ANDRIJA
+ČANADANOVIĆ MIRKO
+ČANADANOVIĆ RADMILA
+ČANADI JANOŠ MR
+ČANADI LJILJANA
+ČANAGLIĆ ĐOKA
+ČANAK ŽELJKO
+ČANAK ĐURA
+ČANAK BOSILJKA DR
+ČANAK MIHAJLO
+ČANAK MIRKO
+ČANAK MOMČILO
+ČANAK NEVENKA
+ČANAK NIKOLA
+ČANAK NIKOLA
+ČANAK NIKOLA
+ČANAK OLIVERA
+ČANAK VELJKO
+ČANAK VESELIN
+ČANAK VUKAŠIN
+ČANGALIĆ DUŠAN
+ČANIĆ LJILJANA
+ČANIĆ MILOŠ
+ČANIĆ OSTOJA
+ČANJEVAC ŠARLOTA
+ČANJI ANDRIJA
+ČANJI GABI
+ČANJI GABOR
+ČANJI GIZELA
+ČANJI IRENA
+ČANJI IRENA
+ČANJI JANKO
+ČANJI KARLO
+ČANJI LASLO
+ČANJI LASLO
+ČANJI NADA
+ČANJI SAMUEL
+ČANJI STEVAN
+ČANJI STEVAN
+ČANJI VLADIMIR
+ČANJI ZOLTAN
+ČANJI ZUZANA
+ČANKOVIĆ ĐORĐE
+ČANKOVIĆ BOŠKO
+ČANKOVIĆ BOJA
+ČANKOVIĆ BRANKO
+ČANKOVIĆ DANE
+ČANKOVIĆ DANE
+ČANKOVIĆ DANE
+ČANKOVIĆ DANICA
+ČANKOVIĆ JOVA
+ČANKOVIĆ LJUBINKA
+ČANKOVIĆ MARIJA
+ČANKOVIĆ MARKO
+ČANKOVIĆ MIKA
+ČANKOVIĆ MILAN
+ČANKOVIĆ MILAN
+ČANKOVIĆ MILIVOJ
+ČANKOVIĆ MILORAD
+ČANKOVIĆ MLADEN
+ČANKOVIĆ OLGA
+ČANKOVIĆ PETAR MR
+ČANKOVIĆ PETAR
+ČANKOVIĆ RADOMIR
+ČANKOVIĆ RADOMIR
+ČANKOVIĆ SLAĐANA
+ČANKOVIĆ SLAVKO
+ČANKOVIĆ SLOBODAN
+ČANKOVIĆ ZLATA
+ČANKOVIĆ ZORAN
+ČAP ANTAL
+ČAPANDA JOSIP
+ČAPELJA DRAGAN
+ČAPELJA JAN DR
+ČAPELJA JOVAN
+ČAPELJA PAVLE
+ČAPKO JULIJAN
+ČAPKO MILORAD
+ČAPKO MIROSLAV
+ČAPKO NESTOR
+ČAPO ADAM
+ČAPO ILIJA
+ČAPO JANOŠ
+ČAPO MARIJA
+ČAPO NADA
+ČAPRIĆ MILORAD
+ČARAPIĆ TOMISLAV
+ČASNJI ERŽEBET
+ČASNJI FERENC
+ČASTVEN JULIJANA
+ČAT ANDRIJA
+ČATALINAC MILAN
+ČATALINAC NIKOLA
+ČATALOV STOJAN
+ČATLAJA STANA
+ČATLAK OLIVERA
+ČATUŠ ZLATKO
+ČAUŠEVIĆ KEMAL
+ČAUŠEVIĆ MIDHAT
+ČAUŠEVIĆ TATJANA
+ČAVIĆ ŠTEFICA
+ČAVIĆ ŽIVKA
+ČAVIĆ ĐORĐE
+ČAVIĆ BOŠKO
+ČAVIĆ BRANISLAV
+ČAVIĆ DEJAN
+ČAVIĆ DEJAN
+ČAVIĆ DRAGICA
+ČAVIĆ DRAGO
+ČAVIĆ GORDANA
+ČAVIĆ GORDANA
+ČAVIĆ KRSTAN
+ČAVIĆ LJUBOMIR
+ČAVIĆ LJUBOMIR
+ČAVIĆ LJUBOMIR
+ČAVIĆ MARIJA
+ČAVIĆ MILENA
+ČAVIĆ MIRKO
+ČAVIĆ PETAR
+ČAVIĆ RADOMIR
+ČAVIĆ RADOVAN
+ČAVIĆ SLOBODAN
+ČAVIĆ SLOBODAN
+ČAVIĆ SOKA
+ČAVIĆ TOŠA
+ČAVIĆ VELIZAR
+ČAVIĆ VLADO
+ČAVIĆ ZORKA
+ČAZIM ČELEBIJA
+ČEČEK DRAGICA
+ČEČEK VILIM
+ČEČUK ALEKSANDAR
+ČEČUK BRANISLAV
+ČEČUK MILOŠ
+ČEČUK SLAVICA
+ČEČUK STEVAN
+ČEŠLJAR ĐURA
+ČEŠLJAR ALEKSANDAR
+ČEŠLJAR DARINKA
+ČEŠLJAR JOSIP
+ČEŠLJAR JOVAN
+ČEŠLJAR STEVAN
+ČEŠLJEVIĆ DUŠAN
+ČEŠLJEVIĆ KOSTA
+ČEŠLJEVIĆ MILENKO
+ČEŠLJEVIĆ MIROSLAVA
+ČEŠLJEVIĆ MOMČILO
+ČEŠLJEVIĆ STANKO
+ČEBAC LJUBICA
+ČEBAC PAVLE
+ČEBEDŽIĆ MILAN
+ČEBSKI VLADIMIR
+ČEBZAN PANTA
+ČEDIĆ REDŽO
+ČEGAR BOŽO
+ČEGAR DESANKA
+ČEGAR DRAGAN
+ČEGAR MILOŠ
+ČEGAR MIRKO
+ČEGAR PANE
+ČEGAR SRETKO
+ČEGAR STEVANIJA
+ČEGAR SVETLANA
+ČEGAR TODOR
+ČEH ANTON
+ČEH JOŽEF
+ČEH JOSIP
+ČEH JOVAN
+ČEH MIKLOŠ
+ČEH STANKA
+ČEH ZLATA
+ČEHAK KALMAN DR
+ČEHOV IVAN
+ČEHOV PETAR
+ČEJOVIĆ BISERKA
+ČEJOVIĆ SLOBODAN
+ČEJOVIĆ VELIMIR
+ČEJOVIĆ VLADIMIR
+ČEKANOVIĆ ŽIVANA
+ČEKANOVIĆ VITOMIR
+ČEKE DEŽE
+ČEKE MARIJA
+ČEKE SNEŽANA
+ČEKE STEVAN
+ČEKEREVAC BRANKO
+ČEKERINAC DUŠAN
+ČEKERINAC ZORAN
+ČEKI DARINKA
+ČEKI DAVID
+ČEKIĆ ANA
+ČEKIĆ DARINKA
+ČEKIĆ DIMITRIJE
+ČEKIĆ DRAGAN
+ČEKIĆ ILIJA
+ČEKIĆ JOVAN
+ČEKIĆ MILORAD
+ČEKIĆ MILORAD
+ČEKIĆ MILOVAN
+ČEKIĆ MIRJANA
+ČEKIĆ MOMČILO
+ČEKIĆ SAVA
+ČEKIĆ SAVA
+ČEKIĆ VASA
+ČEKIĆ ZDRAVKO
+ČEKRDŽIN RADISLAV
+ČELAR STEVAN
+ČELEBIĆ ALEKSANDAR
+ČELEBIĆ BOŽO
+ČELEBIĆ ILIJA
+ČELEBIĆ MILORAD
+ČELEBIĆ MOMČILO
+ČELEBIĆ OLGA
+ČELEBIĆ-TUBIĆ VESNA
+ČELEBIĆ ZORKA
+ČELEKETIĆ JOVAN
+ČELEKETIĆ JOVAN
+ČELEKETIĆ MIROSLAV
+ČELEKETIĆ MIROSLAV
+ČELEKETIĆ RADOVAN
+ČELEKETIĆ TAMARA
+ČELENAK KATALIN
+ČELESNIK DRAGUTIN
+ČELIĆ BANE
+ČELIĆ DINKA
+ČELIĆ GLIGORIJE
+ČELIĆ ILIJA
+ČELIĆ KATARINA
+ČELIĆ LJUBINKO
+ČELIĆ LJUBOMIR
+ČELIĆ MILIVOJ
+ČELIĆ PAVLE
+ČELIĆ SRĐAN
+ČELIĆ STANKO DR
+ČELIĆ VERA
+ČELICA JELENA
+ČELIKOVIĆ EMIL
+ČELOFIGA ANTONIJA
+ČELOVIĆ MIRJANA
+ČELOVSKI ANDREJ
+ČELOVSKI DRAGICA
+ČEMAN ĐORĐE
+ČEMAN ĐURA
+ČEMAN ANDRIJA
+ČEMAN DANILO
+ČEMAN GORDANA
+ČEMAN JAN
+ČEMAN JOVAN
+ČEMAN MIŠA
+ČEMAN MIROSLAV
+ČEMAN OLGA
+ČEMAN RUŽENKA
+ČEMAN SAMUEL
+ČEMAN STEVAN
+ČEMAN TEREZA
+ČEMBIĆ MILAN
+ČEMERE ERŽEBET
+ČEMERE LAJOŠ
+ČEMERLIĆ PETAR
+ČENDEŠ BRANKO
+ČENEJAC ŽIVAN
+ČENEJAC GRUJA
+ČENEJAC LJUBICA
+ČENEJAC LJUBICA
+ČENEJAC MILOŠ
+ČENEJAC MILUTIN
+ČENEJAC TOMISLAV
+ČENEJAC VELISLAV
+ČENGERI ATILA
+ČENGIĆ MARIJA
+ČENUŠA GEORGINA
+ČEPČANJI MIRJANA
+ČEPE ANICA
+ČEPI JANOŠ
+ČEPI LASLO
+ČEPI MARIJA
+ČEPI NANDOR
+ČEPIĆ BORISLAV
+ČEPIĆ SLOBODAN
+ČEPIĆ SMILJA
+ČEPIĆ VELIMIR
+ČEPIN VIKTOR
+ČEPLE STEVAN
+ČEPREGI IRENA
+ČEPREGI JULIJA
+ČEPSKI JOVAN
+ČEPSKI STEVAN
+ČER ŠANDOR
+ČER ALEKSANDAR
+ČER FRANJA
+ČER LADISLAV
+ČER MARIJA
+ČEREKOVIĆ ELIZABETA
+ČEREKOVIĆ RISTO
+ČEREKOVIĆ SLAVKO
+ČEREKOVIĆ VASKRSIJE
+ČEREVIĆ IVAN
+ČEREVIĆ VERICA
+ČEREVICKI ALEKSANDAR
+ČEREVICKI DUŠAN
+ČEREVICKI JOVAN
+ČEREVICKI LJUBICA
+ČEREVICKI MITA
+ČEREVICKI NADA
+ČEREVICKI RADA
+ČEREVICKI RUŽICA
+ČEREVICKI STEVAN
+ČEREVICKI SVETISLAV
+ČEREVICKI TEODOR
+ČERGE BELA
+ČERI JOŽEF
+ČERKEZ BOGDANKA
+ČERKEZ DUŠANKA
+ČERKEZ EVICA
+ČERKEZ JOVANKA
+ČERKEZ STEVAN
+ČERKEZOV DUŠANKA
+ČERKIĆ OSMAN
+ČERKIĆ VASILIJE
+ČERNČEC VERA
+ČERNAK EVA
+ČERNEK-APRO ŽUŽANA
+ČERNEKA STEVAN
+ČERNI IŠTVAN
+ČERNIČEK ERŽEBET
+ČERNIČEK IŠTVAN
+ČERNIČEK IŠTVAN
+ČERNIĆ DUŠAN
+ČERNIK ATILA
+ČERNIK JOŽEF
+ČERNIK MARGITA
+ČERNIVEC TATJANA
+ČERNJA MARIJA
+ČERNJA MATILDA
+ČERNJAK LADISLAV
+ČERNJANSKI DRAGOMIR
+ČERNJEVSKI SVETISLAV
+ČERNJUŠ JAKIM
+ČERNOGUBOV BORIS
+ČERNUŠ IBOLJA
+ČERNUŠ TIBOR
+ČEROVIĆ RATKO
+ČERUBDŽIĆ DRAGOMIR
+ČERUBDŽIĆ JOVAN
+ČERUBDŽIĆ MARGITA
+ČERUBDŽIĆ MARGITA
+ČERUPOŽIĆ OLGA
+ČERVARI ERŽEBET
+ČERVENJAK JELISAVETA
+ČERVENJAK JOSIP
+ČERVENJAK LJUBICA
+ČERVENJAK OLGA
+ČERVENJAK PETAR
+ČERVENJAK ZAGORKA
+ČERVENKO ALEKSANDAR
+ČERVENKO ANA
+ČESAK ANDRIJA
+ČETE ARON DIPL ING
+ČETIĆ MILORAD
+ČETLE MARIJA
+ČETNIK BOGDAN
+ČETNIK JOVAN
+ČETNIK ZAGORKA
+ČETNIKOVIĆ PETAR DIPL OEC
+ČETOJEVIĆ MILKA
+ČETOJEVIĆ RADIVOJE
+ČEVARI ĐORĐE
+ČEVARI ANTAL
+ČEVARI MARIJA
+ČEVARI MIHAJLO
+ČEVARI ZOLTAN
+ČIČA JOVAN
+ČIČA NIKOLA
+ČIČAI JOŽEF
+ČIČAK ANKICA
+ČIČAK MIRKO
+ČIČAKIN ANĐELKA
+ČIČAREVIĆ SAVO
+ČIČEK DANIJEL
+ČIČIĆ DRAGOLJUB
+ČIČIĆ MILE
+ČIČIĆ MIROSLAV
+ČIČKOVIĆ SVETKO
+ČIČOVAČKI BORISLAV
+ČIČOVAČKI DIMITRIJE
+ČIČOVAC ĐORĐE
+ČIČOVAC KOSTA
+ČIČOVAC MILICA
+ČIČOVAC RADOSLAV
+ČIČOVAC VLADIMIR
+ČIŽEK PAVLE
+ČIŽEK SLAVOMIR
+ČIŽMEŠIJA IVAN
+ČIBRI JANOŠ
+ČIBRI PIROŠKA
+ČIEF JAN
+ČIEF MARTIN
+ČIEF SAMUEL
+ČIHI FERENC
+ČIHI JANOŠ
+ČIHI JANOŠ
+ČIK ANDRIJA
+ČIK ILIJA
+ČIK JENE
+ČIK ZOLTAN
+ČIKI JOSIP
+ČIKI MARIJA
+ČIKIĆ ĐORĐE
+ČIKIĆ CVETOMIR
+ČIKIĆ DRAGICA
+ČIKIĆ EMIL
+ČIKIĆ EVICA
+ČIKIĆ MILAN
+ČIKIĆ NIKOLA
+ČIKIĆ STEVAN
+ČIKOŠ ŽUŽANA
+ČIKOŠ ĐERĐ
+ČIKOŠ ĐORĐE
+ČIKOŠ ERŽEBET
+ČIKOŠ ERŽEBET
+ČIKOŠ FERENC
+ČIKOŠ JOSIP DR
+ČIKOŠ JULIJANA
+ČIKOŠ LADISLAV
+ČIKOŠ LEHEL
+ČIKOŠ MARIJA
+ČIKOJEVIĆ VINKO
+ČIKOVIĆ SRETKO
+ČIKVAR KARLO
+ČILAG JANOŠ
+ČILAG NANDOR
+ČILAG NANDOR
+ČILEG EVA
+ČILIĆ AVDO
+ČILIĆ IŠTVAN
+ČILIĆ JOSIP
+ČILIĆ JULIANA
+ČILIĆ MALVINA
+ČILIĆ MARKO
+ČILIK ANKA
+ČILIK ILONKA
+ČILINGIRIS PAVLE
+ČINČAK GABOR
+ČINČURAK MIHAJLO
+ČINČURAK PAVLE
+ČINČURAK STEVAN
+ČINČUREK BOŠKO
+ČINDRAK DAUT
+ČINDRAK SANIJA
+ČIP MATO
+ČIPAK-FAZEKAŠ IBOJA
+ČIPE ĐORĐE
+ČIPE ERŽEBET
+ČIPE ERŽIKA
+ČIPE FRANJA
+ČIPE IREN
+ČIPE JANOŠ
+ČIPE JOSIP
+ČIPE JULIJANA
+ČIPE LASLO
+ČIPE LASLO
+ČIPE MARIJA
+ČIPE MARTA
+ČIPE MIHALJ
+ČIPE MIHALJ
+ČIPE STJEPAN
+ČIPIĆ KATICA
+ČIPKAR ANDREJ
+ČIPKAR STEVAN
+ČIPLIĆ LAZAR
+ČIPLIĆ MILAN
+ČIPLIĆ VERA
+ČIPLIĆ VIDA
+ČIRH DEŽE
+ČIRH VASKA
+ČIRIĆ JOŽEF
+ČISAR FERENC DIPL ING
+ČISAR LASLO
+ČITLUČANIN MILICA
+ČIVČIĆ ERŽEBET
+ČIVČIĆ MIHAJLO
+ČIVČIĆ MILE
+ČIVČIĆ MILJA
+ČIVČIĆ RADOMIR
+ČIVČIĆ SAVO
+ČIVOVIĆ MILEVA
+ČIVOVIĆ RADOVAN
+ČIZMADIA GUSTAV
+ČIZMADIA VERONIKA
+ČIZMADIJA ĐULA
+ČIZMADIJA IŠTVAN
+ČIZMADIJA JANOŠ
+ČIZMADIJA KAROLJ
+ČIZMADIJA MIKI
+ČIZMAR ANA
+ČIZMAR ANICA
+ČIZMAR JANKO
+ČIZMAR JOAKIM
+ČIZMAR LAJOŠ
+ČIZMAR MARIJA
+ČIZMAR MIRKO
+ČIZMAR PAVLE
+ČIZMAR STEVAN
+ČIZMAR VLADIMIR
+ČIZMEŠIJA MAGDA
+ČIZMIĆ ANICA
+ČIZMIĆ IVAN
+ČIZMIĆ RADA
+ČIZMIĆ ZORA
+ČIZMOVIĆ VIDAK
+ČMELIK MARTIN
+ČMELIK RASTISLAV
+ČOČAJ SULO
+ČOŠKOV NADA
+ČOAŠ IRENA
+ČOBAN JON
+ČOBAN JOVAN
+ČOBAN JOVAN
+ČOBAN LIDIJA
+ČOBAN MARIJA
+ČOBAN NIKU
+ČOBANOV ŽIVKA
+ČOBANOV BILJANA
+ČOBANOV DRAGICA
+ČOBANOV DRAGOMIR
+ČOBANOV DUŠAN
+ČOBANOV JELENA
+ČOBANOV LJILJANA
+ČOBANOV MELANIJA
+ČOBANOV MILJKA
+ČOBANOV RUŽICA
+ČOBANOV SLOBODAN
+ČOBANOV SVETO
+ČOBANOV VASA
+ČOBANOV VLADISLAV
+ČOBANOV ZORAN
+ČOBANOVIĆ BOŠKO
+ČOBANOVIĆ BRANISLAV
+ČOBANOVIĆ DRAGAN
+ČOBANOVIĆ DRAGAN
+ČOBANOVIĆ DRAGAN
+ČOBANOVIĆ DUŠAN
+ČOBANOVIĆ-GEZ MARIJA
+ČOBANOVIĆ ILIJA
+ČOBANOVIĆ JELENA
+ČOBANOVIĆ LAZAR
+ČOBANOVIĆ LJILJANA
+ČOBANOVIĆ NIKOLA
+ČOBANOVIĆ RADMILA
+ČOBANOVIĆ SAVA
+ČOBANOVIĆ SAVO
+ČOBANOVIĆ SLOBODAN
+ČOBANOVIĆ VALERIJA
+ČOBANOVIĆ ZORAN
+ČOBANSKI DRAGAN
+ČOBANSKI MILENA
+ČOBANSKI RADOJKA
+ČOBIĆ RELJA
+ČOBIĆ STRAHINJA
+ČOBIĆ TIMOTEJ
+ČOBOT ILONKA
+ČOBRDA JANKO
+ČOBRDA JANKO
+ČOJIĆ STEFANIDA
+ČOKA IVANKA
+ČOKAŠ LUCIJA
+ČOKAN NIKOLA
+ČOKANICA SAVA
+ČOKANICA SOFIJA
+ČOKIĆ MILAN
+ČOKLJAT ZDENKA
+ČOKRLIĆ BARBARA
+ČOKRLIĆ JOSIP
+ČOLAK ALEKSANDAR
+ČOLAK DRAGOLJUB
+ČOLAK DRAGOLJUB
+ČOLAK GORAN
+ČOLAK KRISTINA
+ČOLAK MIHAJLO
+ČOLAK-MIHALIK MARIJA
+ČOLAKOV MILAN
+ČOLAKOV MILE
+ČOLAKOV PAVLE
+ČOLAKOVIĆ ANĐELKA
+ČOLAKOVIĆ MOMA
+ČOLAKOVIĆ NIKOLA
+ČOLAKOVIĆ SVETOZAR
+ČOLAKOVIĆ TEODOR
+ČOLAKOVIĆ VANJA
+ČOLEVIĆ SVETISLAV
+ČOLIĆ ĐURO
+ČOLIĆ ANĐELKA
+ČOLIĆ BORO
+ČOLIĆ DESA
+ČOLIĆ DUŠAN
+ČOLIĆ DUŠKO
+ČOLIĆ ELIZABETA
+ČOLIĆ-GAĆEŠA SLAVICA
+ČOLIĆ IVAN
+ČOLIĆ JOVANKA
+ČOLIĆ JOVAN
+ČOLIĆ JOVAN
+ČOLIĆ LUKA
+ČOLIĆ MARA
+ČOLIĆ MARIJA
+ČOLIĆ MILAN
+ČOLIĆ MILAN
+ČOLIĆ MILAN
+ČOLIĆ MIRJANA
+ČOLIĆ MIRKO
+ČOLIĆ MIROSLAVKA
+ČOLIĆ PETAR
+ČOLIĆ RADA
+ČOLIĆ RADMILA
+ČOLIĆ RISTO
+ČOLIĆ SAVA
+ČOLOVIĆ BOGOLJUB
+ČOLOVIĆ DRAGAN
+ČOLOVIĆ DUŠAN
+ČOLOVIĆ MILE
+ČOLOVIĆ MILIJANA
+ČOLOVIĆ OLGA
+ČOLOVIĆ PETAR
+ČOLOVIĆ RADOSLAV
+ČOLOVIĆ RADOVAN
+ČOLOVIĆ STEVAN
+ČOLOVIĆ VIDOSAV
+ČOLOVIĆ VLADO
+ČOMA ĐULA
+ČOMA ĐULA
+ČOMIĆ ĐURĐINA
+ČOMIĆ DARA
+ČOMIĆ DRAGAN
+ČOMIĆ DUŠANKA
+ČOMIĆ ERŽEBET
+ČOMIĆ ILIJA
+ČOMIĆ JAŠKO
+ČOMIĆ JAŠKO
+ČOMIĆ KRSTA
+ČOMIĆ LIDIJA
+ČOMIĆ LJUBOMIR
+ČOMIĆ MILOŠ
+ČOMIĆ MIROLJUB
+ČOMIĆ MLADEN
+ČOMIĆ SLOBODAN
+ČOMIĆ SMILJANA
+ČOMIĆ TODOR
+ČOMIĆ TODOR
+ČOMOR ILONKA
+ČOMOR MATILDA
+ČONGRADAC DANIJELA
+ČONGRADAC IVANKA
+ČONGRADAC RADOSLAV
+ČONIĆ ANKA
+ČONIĆ MILENKO
+ČONIĆ MILOŠ
+ČONIĆ PETAR
+ČONIĆ TIJANA
+ČONIĆ ZORAN
+ČONKA ĐERĐ
+ČONKA GORDANA
+ČONKA KAROLJ
+ČONKA PETAR
+ČONKAŠ EMIL
+ČONKAŠ GABRIELA
+ČONKAŠ LADISLAV
+ČONKIĆ ŽIVKO
+ČONKIĆ ALEKSA
+ČONKIĆ BILJANA
+ČONKIĆ BOGOLJUB LEKAR
+ČONKIĆ BORISLAV
+ČONKIĆ DRAGAN
+ČONKIĆ JELA
+ČONKIĆ JUDIT
+ČONKIĆ LJILJANA
+ČONKIĆ MARIJA
+ČONKIĆ MILANKA
+ČONKIĆ MILENA
+ČONKIĆ MILOŠ
+ČONKIĆ MILORAD
+ČONKIĆ MILORAD
+ČONKIĆ MILOVAN
+ČONKIĆ MOMČILO DIPL ING
+ČONKIĆ NEBOJŠA
+ČONKIĆ NESTOR
+ČONKIĆ PETAR
+ČONKIĆ RADENKO
+ČONKIĆ RADOSLAV
+ČONKIĆ SAŠA
+ČONKIĆ SLAVKO
+ČONKIĆ SLOBODAN
+ČONKIĆ SNEŽANA
+ČONKIĆ STAMENA
+ČONKIĆ STEVAN
+ČONKIĆ TIHOMIR
+ČONTOŠ JOŽEF
+ČONTOŠ ZORA
+ČOPČIĆ MARTIN
+ČOPIK PETAR
+ČOPIK VASILIJA
+ČOPORDA VUKOSAVA
+ČOR FRANJA
+ČOR JOSIP
+ČORAK JOSIP
+ČORAK STIPE
+ČORALIĆ IVANKA
+ČORBA ĐERĐ
+ČORBA IŠTVAN
+ČORBA JOVAN
+ČORBA JOVAN
+ČORBA MIHALJ
+ČORDA ALEKSANDRA
+ČORDA ALIJA
+ČORDA NADEŽDA
+ČORDA TOMISLAV
+ČORDA VERA
+ČORDAŠ ANDRIJA
+ČORDAŠ ARPAD
+ČORDAŠ DUŠANKA
+ČORDAŠ ERŽEBET
+ČORDAŠ HARGITA
+ČORDAŠ IRENA
+ČORDAŠ LASLO
+ČORDAŠ MIHALJ
+ČORDAŠ SLAVKO
+ČORDAR BRANKO
+ČORDAREV LJILJANA
+ČORDAREV VERA
+ČORDAROV BORISLAVKA
+ČORDAROV IVAN
+ČORDAROV SVETISLAV
+ČORDAROV TEODOR
+ČORDAROV TEODOR
+ČORIĆ MARIJAN
+ČORNENKI BORISLAV
+ČORNENKI DRAGOLJUB
+ČORNENKI JOVAN
+ČORNENKI VLADA
+ČORNI MILUNA
+ČORNIJ MIROSLAV
+ČORTAN ŽIVKO
+ČORTAN BOŠKO
+ČORTAN MILICA
+ČORTAN NADA
+ČORTAN RADIVOJ
+ČORTANOVAČKI SLOBODAN
+ČOVIĆ DARKO
+ČOVIĆ DARKO
+ČOVIĆ DRAGAN
+ČOVIĆ GUSTAV
+ČOVIĆ IVAN
+ČOVIĆ JANKO
+ČOVIĆ JOSIP
+ČOVIĆ KOVILJKA
+ČOVIĆ KRSTO
+ČOVIĆ LADA
+ČOVIĆ MARIJANA
+ČOVIĆ MILAN
+ČOVIĆ MILEVA
+ČOVIĆ MOMIR
+ČOVIĆ OLGA
+ČOVIĆ PETAR
+ČOVIĆ RADOŠ
+ČOVIĆ RADOSLAV
+ČOVIĆ RATKO
+ČOVIĆ SNEŽANA
+ČOVIĆ STANKO
+ČOVIĆ VLADA
+ČOVIĆ VLATKO
+ČOVIĆ ZORICA
+ČOVILO BRANISLAV
+ČOVS JAŠA
+ČOVS PAVLE
+ČOVS PAVLE
+ČOVS VERICA
+ČRETNIK-CVEJANOVIĆ OLGA DIPL ING
+ČRNJEKA ZLATKO
+ČRNOJAČKI DANISLAV
+ČUČ JELENA
+ČUČ MARIJA
+ČUČILOVIĆ BRANKA
+ČUČKOVIĆ ČEDO
+ČUČKOVIĆ ŽELJKO
+ČUČKOVIĆ ĐURO
+ČUČKOVIĆ BOŽIDAR
+ČUČKOVIĆ DRAGAN
+ČUČKOVIĆ RADOJKA
+ČUČKOVIĆ SAVA DIPL ING
+ČUČKOVIĆ SLOBODAN
+ČUČKOVIĆ SPASA
+ČUČKOVIĆ VLADIMIR
+ČUČULIS DIMITRIJE
+ČUBRANOVIĆ RADOMIR
+ČUBRILO ANKA
+ČUBRILO DRAGAN
+ČUBRILO DUŠAN
+ČUBRILO JOVO
+ČUBRILO LAZO
+ČUBRILO MILAN
+ČUBRILO PETAR
+ČUBRILO SOFIJA
+ČUBRILO VLADIMIR
+ČUBRILOVIĆ MILAN
+ČUBROVIĆ STEVAN
+ČUDANOV ČEDA
+ČUDANOV ALEKSANDAR
+ČUDANOV MARIJA
+ČUDANOV MILICA
+ČUDIĆ IVAN
+ČUDIĆ JOVANKA
+ČUDIĆ MILORAD
+ČUDIĆ NIKOLA
+ČUDIĆ PREDRAG
+ČUDIĆ SLOBODAN
+ČUDOMIROVIĆ BOGDAN
+ČUDOMIROVIĆ UROŠ
+ČUGALJ ANKA
+ČUGALJ MIRJANA
+ČUGALJ SVETO
+ČUGELJ ANGELINA
+ČUHA MARIJA
+ČUHA PAVLE
+ČUHA SLAVKO
+ČUHA STEVAN
+ČUHA-VUJKOV RUŽA
+ČUHA ZLATA
+ČUJANOV BORIS
+ČUKA VJEKOSLAV
+ČUKALJIĆ NEVENKA
+ČUKIĆ BORIVOJE
+ČUKIĆ MILKA
+ČUKIĆ MIRSADA
+ČUKIĆ SLOBODAN
+ČUKIĆ ZORAN
+ČUKLJAŠ IVAN
+ČUKLJEK FRANJA
+ČUKLJEK MARGITA
+ČUKLJEVIĆ BUDIMKA
+ČUKOVIĆ SLAVKO
+ČUKURANOVIĆ ŽIKA
+ČUKURANOVIĆ MIJA
+ČULAJEVIĆ JOVAN
+ČULAJEVIĆ STANKO
+ČULIĆ JOVA
+ČULIK HAJNERIK
+ČULINA ŽELJKO
+ČULJAK DRAGA
+ČULJAK IVAN
+ČULJAK KARLO
+ČULJAK MIRKO
+ČULJAK NADA
+ČULJAT DANE
+ČULJAT JAKOV
+ČULJIĆ ŽIVOJIN
+ČULO BOŽA
+ČULO MARKO
+ČULO MATO
+ČUNKO BRANKO
+ČUPAK ALEKSANDAR
+ČUPELJIĆ MILIVOJE
+ČUPIĆ ĐORĐE
+ČUPIĆ BOŽIDAR
+ČUPIĆ BOJAN
+ČUPIĆ BRANISLAV
+ČUPIĆ DRAGAN
+ČUPIĆ DUŠAN
+ČUPIĆ HRISTIFOR
+ČUPIĆ JELENA
+ČUPIĆ KAJKA
+ČUPIĆ KAJKA
+ČUPIĆ KATICA
+ČUPIĆ KATICA
+ČUPIĆ KOSTADINKA
+ČUPIĆ KRISTINA
+ČUPIĆ LJUBOMIR
+ČUPIĆ MILAN
+ČUPIĆ MILICA
+ČUPIĆ MIODRAG
+ČUPIĆ MIODRAG
+ČUPIĆ MIODRAG
+ČUPIĆ MIRJANA
+ČUPIĆ MIROSLAV
+ČUPIĆ OLGA
+ČUPIĆ RADINKA
+ČUPIĆ RADOSLAV
+ČUPIĆ SPOMENKA
+ČUPIĆ STEVAN
+ČUPIĆ STEVAN
+ČUPIĆ STOJAN
+ČUPIĆ UROŠ
+ČUPIĆ ZORAN
+ČURČIĆ DUŠAN
+ČURČIĆ ILIJA
+ČURČIĆ LAZAR
+ČURČIĆ SLOBODANKA
+ČURGANOV EMIL
+ČURIĆ ŽARKO
+ČURIĆ ĐORĐE
+ČURIĆ DRAGOSLAVA
+ČURIĆ DUŠANKA
+ČURIĆ MILENA
+ČURIĆ MILOŠ
+ČURIĆ NATALIJA
+ČURIĆ RADOSLAV DR PROF
+ČURIĆ SLOBODAN
+ČURIĆ VASA
+ČURIĆ VELINKA
+ČURIĆ VIDOSAVA
+ČURIĆ VIDOSAVA
+ČUROVIĆ DANILO
+ČUROVIĆ VUKSAN
+ČURUŠKI GAVRA
+ČURUŠKI MICA
+ČUSTOVIĆ ARIF
+ČUTURA MARKO
+ČUTURIĆ JERONIM
+ČUTURILO ČEDOMIR
+ČUTURILO BOŽA
+ČUTURILO MILIVOJE
+ČUTURILO SLOBODAN DIPL ING
+ČUTURILOV MARIJA
+ČUTURILOV MILOŠ
+ČUTURILOV MILOŠ
+ČUTURILOV SVETOZAR
+ČUTURILOV VELINKA
+ČUTURILOV VUJICA
+ČUVALO LJUBICA
+ČUVARDIĆ ANTUN
+ČVOKIĆ MARKO
+ČVOKIĆ RATKO
+ČVORIĆ DUŠAN
+ČVORIĆ MILOJE
+ČVORKOV LJUBOMIR
+ČVORKOV ZDRAVKO
+ČVORKOV ZLATAN
+ČVORO-ĐUKIĆ DUŠANKA
+ČVORO DOBROSLAV
+ČVOROVIĆ JELENKA
+ČVOROVIĆ LJUBO
+ČVOROVIĆ RATKO
+ČVOROVIĆ VUJICA
+ŠĆEKIĆ BUDIMIR
+ŠĆEKIĆ DRAGOMIR
+ŠĆEKIĆ KOSA
+ŠĆEKIĆ MILANKA
+ŠĆEKIĆ MILIĆ
+ŠĆEKIĆ MILICA
+ŠĆEKIĆ MIOMIR
+ŠĆEKIĆ SLOBODAN
+ŠĆEKIĆ SVETOZAR
+ŠĆEKIĆ VUKO
+ŠĆEPANČEVIĆ ĐORĐE
+ŠĆEPANČEVIĆ NIKOLA
+ŠĆEPANOVIĆ BOGOLJUB
+ŠĆEPANOVIĆ BRANISLAV
+ŠĆEPANOVIĆ DOBROSLAVA
+ŠĆEPANOVIĆ DRAGAN
+ŠĆEPANOVIĆ DRAGAN
+ŠĆEPANOVIĆ DRAGUTIN
+ŠĆEPANOVIĆ DUŠAN
+ŠĆEPANOVIĆ GORAN
+ŠĆEPANOVIĆ GORDANA
+ŠĆEPANOVIĆ LJUBOMIR
+ŠĆEPANOVIĆ MILEVA
+ŠĆEPANOVIĆ MILOVAN
+ŠĆEPANOVIĆ MIODRAG
+ŠĆEPANOVIĆ RAŠKO
+ŠĆEPANOVIĆ RADOVAN
+ŠĆEPANOVIĆ RANKO DIPL ING
+ŠĆEPANOVIĆ SINIŠA
+ŠĆEPANOVIĆ ZORAN
+ŠĆEPANOVIĆ ZORA
+ŠĆEPOVIĆ PETAR
+ŠĆERBAĆEV GLIGORIJE
+ŠĆEVČIK PAVLE
+ŠĆIBAN MARINA
+ŠĆOPIĆ MIODRAG
+ŠĆOPIĆ STANIMIR
+ŠĆOPULOVIĆ PETAR
+ŠĆURIC JOSIP
+ŠAŠIĆ ŽIVKO
+ŠAŠIĆ ĐORĐE
+ŠAŠIĆ DUŠAN
+ŠAŠIĆ MILAN
+ŠAŠIĆ MILAN
+ŠAŠIĆ MILOŠ
+ŠAŠIĆ MIRKO
+ŠAŠIĆ NEVENKA
+ŠAŠIĆ PETAR
+ŠAŠIĆ SAVO
+ŠAŠIĆ STEVAN
+ŠAŠIĆ ZORAN
+ŠAŠIN DANICA
+ŠAŠIN RADOMIR
+ŠAŠINAČKI MARIJA
+ŠAŠINAČKI SONJA
+ŠAŠINAČKI VASILIJE
+ŠAŠLJIN LAZAR
+ŠAŠOVIĆ TRIFKO
+ŠABANI NAZIM
+ŠABANOVIĆ ABDURAHMAN
+ŠABANOVIĆ OBRAD
+ŠABEC DRAGICA
+ŠABIĆ ĐURO
+ŠABIĆ HUSEIN
+ŠABIĆ PAVLE
+ŠABLI MARTON
+ŠABLI MIHAJLO
+ŠABOVIĆ MEHMEDALIJA
+ŠADE JELENA
+ŠAFARIK LJILJANA
+ŠAFRANJ ANDRIJA
+ŠAFRANJ DEŽE
+ŠAFRANJ FRANJA
+ŠAFRANJ LASLO
+ŠAFRANJ LASLO
+ŠAFRANJ PIROŠKA
+ŠAFRANJ STEVAN
+ŠAFRANJ TEODORA
+ŠAGUNOVIĆ DUŠAN
+ŠAGUNOVIĆ MILIVOJ
+ŠAIN ANDRIJA
+ŠAIN MILEVA
+ŠAIN ZAGORKA
+ŠAINOVIĆ DUŠAN
+ŠAINOVIĆ MARINA
+ŠAJATOVIĆ JELICA
+ŠAJATOVIĆ ZDRAVKO
+ŠAJBER DANICA
+ŠAJBER MILENKO
+ŠAJDIK FRANCIŠKA
+ŠAJFAR PAVLE
+ŠAJIN MILORAD
+ŠAJINOVIĆ DRAGOSLAV
+ŠAJINOVIĆ DUŠAN
+ŠAJINOVIĆ GORDANA
+ŠAJINOVIĆ MARINKO
+ŠAJINOVIĆ SIDA
+ŠAJN DUŠAN
+ŠAJNBERGER JOVAN
+ŠAJNBERGER LILI
+ŠAJNOV JOVAN
+ŠAJNOV KATICA
+ŠAJNOV PETAR
+ŠAJNOVIĆ RADINKA
+ŠAJTI ETELKA
+ŠAJTI GIZELA
+ŠAJTI KATICA
+ŠAJTI MARIJA
+ŠAJTOŠ ĐORĐE
+ŠAJTOŠ ĐURA
+ŠAJTOŠ LJUBIŠA
+ŠAJTOŠ NIKOLA
+ŠAJTOŠ SIMA
+ŠAJTOŠ SIMA
+ŠAKIĆ ŽELJKO
+ŠAKIĆ ĐORĐE
+ŠAKIĆ ILIJA
+ŠAKIĆ ILIJA
+ŠAKIĆ ILIJA
+ŠAKIĆ JANJA
+ŠAKIĆ KATA
+ŠAKIĆ MANE
+ŠAKIĆ MILUTIN
+ŠAKIĆ RADE
+ŠAKIĆ ZORKA
+ŠAKOTA DUŠAN
+ŠAKOTA KOJO
+ŠAKOTA MILAN
+ŠAKOTA MILORAD
+ŠAKOTA SIMEON
+ŠAKOTIĆ LJUBOMIR
+ŠAKOTIĆ MIRJANA
+ŠAKU MEHMED
+ŠALABALIJA DRAGOMIR
+ŠALABALIJA VASO
+ŠALAJIĆ STEVAN
+ŠALAMON ŠANDOR
+ŠALAMON ANDRIJA
+ŠALAMON JOSIP
+ŠALAMON JOSIP
+ŠALAMON MIŠA
+ŠALAMON MIHAJLO
+ŠALAMON MIHAJLO
+ŠALANKI JANOŠ
+ŠALANKI JANOŠ
+ŠALBOT ZUZA
+ŠALER VERA
+ŠALGO JELISAVETA
+ŠALIPUROVIĆ MILOVAN
+ŠALIPUROVIĆ SLAVIŠA
+ŠAMATIĆ NEMANJA
+ŠAMEC MILICA
+ŠANDOL ATILA
+ŠANDOL ATILA
+ŠANDOL IŠTVAN
+ŠANDOL KATICA
+ŠANDOL MATIJA
+ŠANDOL MIHAJLO
+ŠANDOR ILONA
+ŠANDOR JOSIP
+ŠANDOR LADISLAV
+ŠANDOR MARIJA
+ŠANDOR TIBOR
+ŠANDORI ŠARIKA
+ŠANJIĆ MILADIN
+ŠANOVIĆ DUŠAN
+ŠANTA ŠANDOR
+ŠANTA AMALIJA
+ŠANTA BELA
+ŠANTA DUŠANKA
+ŠANTA FERENC
+ŠANTA IŠTVAN
+ŠANTA ILONKA
+ŠANTA IMRE
+ŠANTA JOSIP
+ŠANTA LASLO
+ŠANTA MIROSLAV
+ŠANTA PAL
+ŠANTA SIMA
+ŠANTA SLAVKO
+ŠANTA SOFIJA
+ŠANTA STEVAN
+ŠANTA VINKO
+ŠANTA VLADIMIR
+ŠANTAK JOSIP
+ŠANTAK KARLO
+ŠANTALAB SOFIJA
+ŠANTEK ŽELJKO
+ŠANTEK ZDENKA
+ŠAPI PIROŠKA DIPL ING
+ŠAPIĆ NIKOLA
+ŠAPINA MIROSLAV
+ŠAPONJA JOVAN
+ŠAPONJA MARKO
+ŠAPONJAC ŽARKO
+ŠAPONJAC ŽARKO
+ŠAPONJAC ALEKSANDAR
+ŠAPONJAC JELKA PROFESOR
+ŠAPONJAC RADA
+ŠAPONJAC STEVAN
+ŠAPONJSKI RADIVOJ
+ŠAPURIĆ SVETOZAR
+ŠARČANSKI JULKA
+ŠARČANSKI MILICA
+ŠARČANSKI MIROSLAV
+ŠARČEV ANTONIJA
+ŠARČEV JELENA
+ŠARČEV MIROSLAVA
+ŠARČEV NIKOLA
+ŠARČEV VLADIMIR
+ŠARČEVIĆ ŽARKO
+ŠARČEVIĆ ŽELIMIR
+ŠARČEVIĆ ANICA
+ŠARČEVIĆ BRATIMIR
+ŠARČEVIĆ DUŠAN
+ŠARČEVIĆ GROZDANA
+ŠARČEVIĆ ILKA
+ŠARČEVIĆ KATICA
+ŠARČEVIĆ MARGITA DR
+ŠARČEVIĆ MILENA
+ŠARČEVIĆ NEBOJŠA
+ŠARČEVIĆ PETAR
+ŠARČEVIĆ PREDRAG
+ŠARČEVIĆ RAJKO
+ŠARČEVIĆ VIDOJE
+ŠARČEVIĆ VOJISLAV
+ŠARŠANSKI MARINKO
+ŠARŠANSKI MILAN
+ŠARA IMRE
+ŠARA IMRE
+ŠARAC ĐORĐE
+ŠARAC BILJANA
+ŠARAC BOŠKO
+ŠARAC DUŠAN
+ŠARAC DUŠAN
+ŠARAC MILAN
+ŠARAC MILE
+ŠARAC MILICA
+ŠARAC MIODRAG
+ŠARAC RADOJE
+ŠARAC RADOMIR
+ŠARAC RADOVAN
+ŠARAC RUŽICA
+ŠARAC STEVA
+ŠARAC SVETOZAR
+ŠARANDI ŠANDOR
+ŠARANOVIĆ ANITA
+ŠARANOVIĆ DRAGIŠA
+ŠARANOVIĆ MILADIN DR LEKAR
+ŠARANOVIĆ MILOŠ
+ŠARANOVIĆ MIODRAG
+ŠARANOVIĆ ZORAN
+ŠARENAC BOŽIDAR
+ŠARENAC MARKO
+ŠARENAC ROZINA
+ŠARENAC VIDAK
+ŠARENAC VOJISLAV
+ŠARGAČ BRANKO
+ŠARGIĆ MILORAD
+ŠARGIĆ VLADIMIR
+ŠARGIĆ ZLATICA
+ŠARGIN ŽARKO
+ŠARGIN MARIJA
+ŠARI MARIJA
+ŠARI STEVAN
+ŠARIĆ JOSIP
+ŠARIĆ KATARINA
+ŠARIĆ KOSTA
+ŠARIĆ LJUBICA
+ŠARIĆ MARIJA
+ŠARIĆ MATO
+ŠARIĆ NENAD
+ŠARIĆ SLOBODAN
+ŠARIĆ SOFIJA
+ŠARIĆ STEVAN
+ŠARIĆ TOMISLAV MR
+ŠARIĆ ZVEZDANA
+ŠARIK ANA
+ŠARIK ANDRIJA
+ŠARIK JOVAN
+ŠARIK KATICA
+ŠARIK LJUBICA
+ŠARIK MIROSLAV
+ŠARIK STEVAN
+ŠARIK-VIDIĆ NADA
+ŠARIK VLADIMIR
+ŠARKADI VERONIKA
+ŠARKANJ ANTON
+ŠARKANJ FERENC
+ŠARKANJ FRANJA
+ŠARKANJ JANOŠ
+ŠARKANJAC FERENC
+ŠARKEZI-PETRIĆ MARGITA
+ŠARKIĆ SRĐAN
+ŠARKOVIĆ DUŠAN
+ŠARKOVIĆ MIODRAG DR
+ŠARKOVIĆ ZORAN
+ŠARNJAI ANKICA
+ŠARNJAI MIKLOŠ
+ŠARNJAI PAL
+ŠARO JOVAN
+ŠARO NADA
+ŠAROŠI VALERIJA
+ŠAROŠKOVIĆ VUKICA
+ŠAROI-SABO VERA
+ŠAROVIĆ ĐURO
+ŠAROVIĆ MIRKO
+ŠAROVIĆ PETAR
+ŠARU DUŠICA
+ŠARVARI ŠANDOR
+ŠARVARI KAROLJ
+ŠARVARI MARTA
+ŠARVARI ROZALIJA
+ŠARVARI VALERIJA
+ŠASIVAR AHMED
+ŠATARA MILAN
+ŠATORA STOJAN
+ŠATRIĆ ANA
+ŠATRIĆ BRANISLAV
+ŠAULA GORAN
+ŠAULA RADOVAN
+ŠAULIĆ DIMITRIJE
+ŠAVELIN ŠANDOR
+ŠAVELIN JOSIP
+ŠAVELIN JOVAN
+ŠAVELIN JULIJA
+ŠAVERDIJA NIKOLA
+ŠAVIJA DUŠAN
+ŠAVIJA MILE
+ŠAVIJA MILORAD
+ŠAVIJA PETAR
+ŠAVIJA RADE
+ŠAVRLJUGA MILAN
+ŠEČIĆ ALIJA
+ŠEČIĆ JULKA
+ŠEŠA SLAVKO
+ŠEŠELJA BRANIMIR
+ŠEŠELJA MARIJAN
+ŠEŠERINAC ĐORĐE
+ŠEŠEVIĆ ĐORĐE
+ŠEŠEVIĆ DRAGICA
+ŠEŠEVIĆ LEONA
+ŠEŠEVIĆ LJILJANA
+ŠEŠEVIĆ MARA
+ŠEŠEVIĆ MILIVOJ
+ŠEŠEVIĆ STEVAN
+ŠEŠIĆ ŽIVOTA DIPL ING
+ŠEŠIĆ AURELIJA
+ŠEŠIĆ DRAGOLJUB
+ŠEŠIĆ DRAGOLJUB
+ŠEŠIĆ VERA
+ŠEŠIĆ VIDA
+ŠEŠKAR NADA
+ŠEŠLIJA ČEDA
+ŠEŠLIJA BRANKO
+ŠEŠLIJA DRAGAN
+ŠEŠLIJA DUŠAN
+ŠEŠUM BRANKO
+ŠEŠUM DRAGOLJUB
+ŠEŠUM ILIJA
+ŠEŠUM MIHAJLO
+ŠEŠUM MILAN
+ŠEŠUM MILAN
+ŠEŠUM MILENKO
+ŠEŠUM SAVA
+ŠEŠUM SLAVICA
+ŠEŠUM TOMA
+ŠEĆEROV ANĐELIJA
+ŠEĆEROV BILJANA
+ŠEĆEROV BRANISLAV
+ŠEĆEROV DRENKA
+ŠEĆEROV DUŠAN
+ŠEĆEROV EMIL
+ŠEĆEROV IDA
+ŠEĆEROV IVAN
+ŠEĆEROV JOVAN
+ŠEĆEROV KAJA
+ŠEĆEROV MATA
+ŠEĆEROV MILAN
+ŠEĆEROV PAVLE
+ŠEĆEROV PETAR DIPL ING
+ŠEĆEROV PETAR
+ŠEĆEROV PRODAN
+ŠEĆEROV RADOSLAV
+ŠEĆEROV SAVA
+ŠEĆEROV SINIŠA
+ŠEĆEROV SVETLANA
+ŠEĆEROV SVETOZAR
+ŠEĆEROV SVETOZAR
+ŠEĆEROV SVETOZAR
+ŠEĆEROV ZLATOJE
+ŠEĆEROV ZLATOJE
+ŠEBEŠĆEN IMRE
+ŠEBEŠĆEN JOŽEF
+ŠEBEDINI NEVZAD
+ŠEBEK ĐULA
+ŠEBEK ANUŠKA
+ŠEBEK IVAN
+ŠEBEK JOSIP
+ŠEBEKOVIĆ PAVLE
+ŠEBEZ DRAGAN
+ŠEBEZ DUŠAN
+ŠEBEZ LAZO
+ŠEBEZ RADOJKA
+ŠEBEZ SIMO
+ŠEBEZ STEVAN
+ŠEBEZ STEVO
+ŠEBEZ STEVO
+ŠEBI JELICA
+ŠEFČIĆ EMIL
+ŠEFČIĆ MIRKO
+ŠEFER ĐORĐE DIPL ING
+ŠEFER ALEKSANDRA
+ŠEFER JULIJE DR
+ŠEFER KATARINA
+ŠEFER KLARA
+ŠEFER MIODRAG
+ŠEFER PETAR
+ŠEFER RADOJE
+ŠEFER SLAVKO
+ŠEGEC EDUARD
+ŠEGINA NIKOLA
+ŠEGO NIKOLA
+ŠEGOVIĆ DRAGAN
+ŠEGOVIĆ MILOŠ
+ŠEGRT ČEDOMIR
+ŠEGRT ČEDOMIR
+ŠEGRT JOVO
+ŠEGRT JOVO
+ŠEGRT MATO
+ŠEGRT MLADEN
+ŠEGRT NADA
+ŠEGRT PETAR
+ŠEGRT VOJISLAV
+ŠEGULJEV DUŠAN
+ŠEGULJEV DUŠAN
+ŠEGULJEV DUŠAN
+ŠEGULJEV GRUJA
+ŠEGULJEV JOVAN
+ŠEGULJEV MARKO
+ŠEGULJEV MIKA
+ŠEGULJEV MILENKO
+ŠEGULJEV PAJA
+ŠEGULJEV PETAR
+ŠEGULJEV RADOSLAV
+ŠEGULJEV RUŽICA
+ŠEGULJEV SLAVKO
+ŠEGULJEV SNEŽANA
+ŠEGULJEV ZAGORKA
+ŠEGULJEV ZORICA
+ŠEHIĆ LJUBICA
+ŠEHIĆ MIRSA
+ŠEHIĆ SLAVICA
+ŠEHOVIĆ RAMIZ
+ŠEJMEŠI STEVAN
+ŠEJPEŠ ŠARLOTA
+ŠEJPEŠ FEDOR
+ŠEJPEŠ FEDOR
+ŠEJPEŠ GALINA
+ŠEJPEŠ ILONA
+ŠEK JULIJAN
+ŠEKARIĆ MILOSAV
+ŠEKARIĆ NADA
+ŠEKEROVIĆ DRAGAN
+ŠEKULARAC ALEKSANDRA
+ŠEKULARAC BRANISLAV DIPL OEC
+ŠEKULARAC DUŠAN
+ŠEKULARAC PREDRAG
+ŠEKULARAC SAVKA
+ŠEKULARAC SLOBODAN
+ŠEL MARGITA
+ŠELB LASLO
+ŠELEST SLOBODANKA
+ŠELJEM JULIJANA
+ŠELJEM KAROLJ DIPL ING
+ŠELJEM LJILJANA
+ŠELJEM STEVAN
+ŠELJEM ZOLTAN
+ŠELKEN ILONKA
+ŠELMIĆ VUKOMAN DIPL ING
+ŠENČEVIĆ MILOMIR
+ŠENBORN ADALBERT DR PROF
+ŠENDULA ŠANDOR
+ŠENDULA ANTAL
+ŠENDULA GABOR
+ŠENHAUZER TOMISLAV
+ŠENK ALBINA
+ŠENK IVAN DIPL ING
+ŠENK VOJIN
+ŠENTALER EMIL
+ŠEP LENKA
+ŠEPŠEI KRISTINA
+ŠEPA SVETOZAR
+ŠEPAREVIĆ DARKO
+ŠEPAROVIĆ DARKO
+ŠEPAROVIĆ LJILJANA
+ŠEPAROVIĆ MIROSLAV
+ŠEPAROVIĆ ZORA
+ŠEPEC VLADIMIR
+ŠEPECANOVIĆ MILOŠ
+ŠEPELJ LENKA
+ŠEPERAC RANKA
+ŠEPIĆ ZADA
+ŠEPINSKI ĐURA
+ŠEPINSKI ĐURA
+ŠEPINSKI JOAKIM
+ŠEPINSKI SLAVICA
+ŠERBAN SLOBODANKA
+ŠERBEDŽIJA DRAGOLJUB
+ŠERBEDŽIJA MIRKO
+ŠERBEDŽIJA MIRKO
+ŠERBIĆ JELKA
+ŠERBIĆ ZAGORKA
+ŠERBIĆ ZAGORKA
+ŠERBULA BRANKO
+ŠERBULA MILAN
+ŠEREŠ ŠANDOR
+ŠEREŠ ŽUŽANA
+ŠEREŠ ANA
+ŠEREŠ ANTUN
+ŠEREŠ ENDRE
+ŠEREŠ ESTER
+ŠEREŠ FRANCIŠKA
+ŠEREŠ GIZELA
+ŠEREŠ IMRE
+ŠEREŠ JANOŠ
+ŠEREŠ KAROLJ MR
+ŠEREŠ LASLO
+ŠEREŠ STEVAN
+ŠEREGI ZOLTAN
+ŠEREMETKOVSKI ALEKSA
+ŠEREMETKOVSKI BONA
+ŠERER LENKA
+ŠERFEZI ĐURA
+ŠERIĆ MILKA
+ŠERIF NEŠAT
+ŠERIFI RABIJA
+ŠERIFI SAFET
+ŠERKOV LJILJANA
+ŠERKOV RADOSLAV
+ŠEROVIĆ JOVICA
+ŠESEK STANISLAV
+ŠESTAN BORIS
+ŠESTANOV BRANKO
+ŠESTANOV MILENA
+ŠESTIĆ BOGDAN
+ŠETALO ŠANDOR
+ŠETALO FRANJA
+ŠETALO IMRE
+ŠETALO IMRE
+ŠETALO KARLO
+ŠETALO KAROLJ
+ŠETKA KATA
+ŠETKA TOMISLAV
+ŠETRAJČIĆ ILDIKO
+ŠEVČIĆ ĐORĐE
+ŠEVAR EMILIJA
+ŠEVAR JOSIP VETERINAR
+ŠEVAR VLADISLAV
+ŠEVARLIĆ KOSTA
+ŠEVEROV RADOSLAV
+ŠEVIĆ ĐORĐE MR
+ŠEVIĆ ĐORĐE
+ŠEVIĆ ĐORĐE
+ŠEVIĆ ALEKSANDAR
+ŠEVIĆ BORISLAV
+ŠEVIĆ DRAGAN
+ŠEVIĆ DRAGOLJUB
+ŠEVIĆ DRAGOLJUB
+ŠEVIĆ JOVO
+ŠEVIĆ LAZAR
+ŠEVIĆ MILAN
+ŠEVIĆ MILOŠ
+ŠEVIĆ MILORAD
+ŠEVIĆ MIROSLAVA
+ŠEVIĆ NADA
+ŠEVIĆ NADA
+ŠEVIĆ PETAR
+ŠEVIĆ PETAR
+ŠEVIĆ PREDRAG
+ŠEVIĆ RADOVAN
+ŠEVIĆ SAVKA
+ŠEVIĆ SLOBODAN
+ŠEVIĆ SRĐAN
+ŠEVIĆ TRIVO
+ŠEVO ČEDOMIR
+ŠEVO ALEKSANDAR
+ŠEVO BOŠKO
+ŠEVO BOŠKO
+ŠEVO BRANKO
+ŠEVO DUŠAN
+ŠEVO JOVO
+ŠEVO MILAN
+ŠEVO MILAN
+ŠEVO MILAN
+ŠEVO MLADEN
+ŠEVO SLAVICA
+ŠEVO VLADO
+ŠIŠA JOSIP
+ŠIŠA JOSIP
+ŠIŠAKOVIĆ MILENA
+ŠIŠAKOVIĆ MIROSLAV
+ŠIŠARICA LJUPKO
+ŠIŠARICA ZDRAVKO
+ŠIŠEVIĆ ANĐELKA
+ŠIŠIĆ MILAN
+ŠIŠIĆ MLADEN
+ŠIŠIĆ PETKA
+ŠIŠIĆ STJEPAN
+ŠIŠKA MARGITA
+ŠIŠKOV ANTE
+ŠIŠKOVIĆ DRAGOLJUB
+ŠIŠKOVIĆ DRAGOLJUB
+ŠIŠLJAGIĆ ČEDO
+ŠIŠLJAGIĆ DUŠAN
+ŠIŠOVIĆ DRAGOLJUB
+ŠIŠOVIĆ MILAŠIN
+ŠIĐANIN BRANISLAV
+ŠIĐANIN DUŠAN DIPL ING
+ŠIĐANIN MILICA
+ŠIĐANIN MILOJE DIPL ING
+ŠIĐANSKI BUDIMIR
+ŠIĐANSKI MIROSLAV
+ŠIBALIĆ ILIJA
+ŠIBALIĆ LJUBOMIR
+ŠIBUL ZORAN
+ŠIBUL ZORICA
+ŠIBULOV ĐURA
+ŠIC MARIJA
+ŠIC TEREZA
+ŠIFLIŠ JAGODA
+ŠIFLIŠ LAJOŠ
+ŠIFLIŠ SLAVKO
+ŠIGUD ĐORĐE
+ŠIHA IŠTVAN
+ŠIJAČIĆ ALEKSANDAR
+ŠIJAČIĆ ALEKSANDAR
+ŠIJAČIĆ BORISLAV
+ŠIJAČIĆ BOSILJKA
+ŠIJAČIĆ BRANISLAV
+ŠIJAČIĆ DANICA
+ŠIJAČIĆ DANICA
+ŠIJAČIĆ DANILO
+ŠIJAČIĆ DANILO
+ŠIJAČIĆ DUŠAN
+ŠIJAČIĆ DUŠICA
+ŠIJAČIĆ DUŠICA
+ŠIJAČIĆ JELICA
+ŠIJAČIĆ LESA
+ŠIJAČIĆ MILIVOJE
+ŠIJAČIĆ MILORAD
+ŠIJAČIĆ MIROSLAV
+ŠIJAČIĆ RADOSLAV
+ŠIJAČIĆ STANKA
+ŠIJAČIĆ STEVAN
+ŠIJAČIĆ ZORICA
+ŠIJAČKI ŽIVA
+ŠIJAČKI ŽIVKO
+ŠIJAČKI ĐURĐINKA
+ŠIJAČKI BOŽIDAR
+ŠIJAČKI DRAGANA
+ŠIJAČKI GORDANA
+ŠIJAČKI ISA
+ŠIJAČKI JOVAN
+ŠIJAČKI KOSTA
+ŠIJAČKI LAZAR
+ŠIJAČKI MILAN
+ŠIJAČKI MILENKO
+ŠIJAČKI MILOŠ
+ŠIJAČKI MIRJANA
+ŠIJAČKI NESTOR DR
+ŠIJAČKI PETAR
+ŠIJAČKI PREDRAG
+ŠIJAČKI RADOSLAVA
+ŠIJAČKI SIMA
+ŠIJAČKI SLAVKO
+ŠIJAČKI SLOBODAN
+ŠIJAČKI STEVAN
+ŠIJAČKI TOMISLAV
+ŠIJAČKI VITOMIR
+ŠIJAČKI VUJICA
+ŠIJAK ĐORĐE
+ŠIJAK JELICA
+ŠIJAK MILENKO
+ŠIJAK MILOŠ
+ŠIJAK PAVLE
+ŠIJAK PETAR
+ŠIJAK TOMA
+ŠIJAKOV STANISLAVA
+ŠIJAKOV VELJKO
+ŠIJAKOVIĆ DRAGICA
+ŠIJAKOVIĆ MILORAD
+ŠIJAKOVIĆ STEVA
+ŠIJAKOVIĆ ZORAN
+ŠIJAN ALEKSANDRA
+ŠIJAN BOJA
+ŠIJAN BRANKO
+ŠIJAN BRANKO
+ŠIJAN BRANKO
+ŠIJAN DANE
+ŠIJAN ILIJA
+ŠIJAN MILEVA
+ŠIJAN MILOŠ
+ŠIJAN MIRKO
+ŠIJAN NEVENKA
+ŠIJAN NIKOLA
+ŠIJAN RADE
+ŠIJAN SLOBODAN
+ŠIJUK DRAGAN
+ŠIK TIBOR
+ŠIKET IŠTVAN
+ŠIKET IŠTVAN
+ŠIKET IMRE
+ŠIKET JOŽEF
+ŠIKET LASLO
+ŠIKET LASLO
+ŠIKET LASLO
+ŠIKET MAGDA
+ŠIKET STEVAN
+ŠIKIĆ BOGDAN
+ŠIKIĆ RADOSLAV
+ŠIKMAN ZVONKO
+ŠIKOPARIJA ĐORĐE
+ŠIKOPARIJA BORISLAV
+ŠIKOPARIJA DUŠAN
+ŠIKOPARIJA JELENA
+ŠIKOPARIJA MILAN
+ŠIKOPARIJA NEVENA
+ŠIKOPARIJA TIHOMIR
+ŠIKOPARIJA TIHOMIR
+ŠIKOPARIJA VLADIMIR
+ŠILE ŠANDOR
+ŠILE LADISLAV
+ŠILE ZOLTAN
+ŠILER MILORAD
+ŠILER MILORAD
+ŠILI IŠTVAN
+ŠILI KARLO
+ŠILI MIHAJLO
+ŠILI VALERIJA
+ŠILIĆ ĐORĐE
+ŠILIĆ ĐORĐE
+ŠILIĆ ĐORĐE
+ŠILIĆ ANA
+ŠILIĆ BOGDAN
+ŠILIĆ DANICA
+ŠILIĆ DRAGOMIR
+ŠILIĆ DUŠICA
+ŠILIĆ JOVAN
+ŠILIĆ LJUBICA
+ŠILIĆ MILORAD DR
+ŠILIĆ MILOSAVA
+ŠILIĆ MIRJANA
+ŠILIĆ MIRKO
+ŠILIĆ MIRKO
+ŠILIĆ NADA
+ŠILIĆ NIKOLA
+ŠILIĆ OLGICA
+ŠILIĆ OLGICA
+ŠILIĆ PETAR
+ŠILIĆ PETAR
+ŠILIĆ RACKO
+ŠILIĆ SAVA
+ŠILIĆ SPASENKA
+ŠILIĆ STOJAN
+ŠILIĆ TOŠA
+ŠILIĆ TODOR
+ŠILIĆ VASA
+ŠILIĆ VERA
+ŠILIĆ VITOMIR
+ŠILJEG JOZO
+ŠILJEGOVIĆ BOŠKO
+ŠILJEGOVIĆ BOŠKO
+ŠILJEGOVIĆ DRAGOLJUB
+ŠILJEGOVIĆ DUŠAN
+ŠILJEGOVIĆ JOVANKA
+ŠILJEGOVIĆ MILAN
+ŠILJEGOVIĆ NADA
+ŠILJIĆ ĆAMIL
+ŠILJKUT MILAN
+ŠILJKUT MILAN
+ŠILJKUT MIRKO
+ŠIMČIĆ OLGICA
+ŠIMŠIĆ DUŠAN
+ŠIMŠIĆ ILIJA
+ŠIMŠIĆ SAVO
+ŠIMA JOAKIM
+ŠIMA MARGITA
+ŠIMA VERONIKA
+ŠIMAK JAN
+ŠIMALA VIKTOR
+ŠIMAN ALEKSEJ
+ŠIMANDI GABRIJELA
+ŠIMANDI STEVAN
+ŠIMEK VLATKO
+ŠIMIČIĆ PETAR
+ŠIMIČIĆ SVETISLAV
+ŠIMIĆ ANTO
+ŠIMIĆ BOŽANA
+ŠIMIĆ FRANJO
+ŠIMIĆ GIZELA
+ŠIMIĆ HRVOJE
+ŠIMIĆ JULA DIPL ING
+ŠIMIĆ MILAN
+ŠIMIĆ MILAN
+ŠIMIĆ MIROSLAV
+ŠIMIĆ MLADEN
+ŠIMIĆ NINOSLAV
+ŠIMIĆ SLAVKO
+ŠIMIĆ SLAVKO
+ŠIMIĆ STEVAN
+ŠIMIG TIBOR
+ŠIMOKOVIĆ KATARINA
+ŠIMON ŠANDOR
+ŠIMON ĐERĐ
+ŠIMON ARPAD
+ŠIMON ERŽEBET
+ŠIMON MARICA
+ŠIMON MIHALJ
+ŠIMON VILMOŠ DR
+ŠIMONIK VLADA
+ŠIMONJI ŠANDOR
+ŠIMONJI BARBARA
+ŠIMONJI JANOŠ
+ŠIMONJI SOFIJA
+ŠIMONJI ZOLTAN
+ŠIMONJI ZVONKO
+ŠIMONJIK MATIJA
+ŠIMOVIĆ JOŽEF
+ŠIMOVIĆ MIRO
+ŠIMPRAGA DUŠAN
+ŠIMPRAGA JADRANKA
+ŠIMUDVARAC PAVAO
+ŠIMULIJA DRAŽEN
+ŠIMULIJA JOVO
+ŠIMUNĐA LJUBOMIR
+ŠIMUNEC MARIJA
+ŠIMUNIĆ ANKA
+ŠIMUNIĆ IVAN
+ŠIMUNIĆ KARLO
+ŠIMUNIĆ STEVAN
+ŠIMUNOVAČKI KATICA
+ŠIMUNOVAČKI NIKOLA
+ŠIMUNOVAČKI NIKOLA
+ŠIMUNOVAČKI SLAVKO
+ŠIMUNOVIĆ GORDANA
+ŠIMUNOVIĆ GORDANA
+ŠIMUNOVIĆ JOSIP
+ŠIMUNOVIĆ JOSIP
+ŠIMUNOVIĆ JOSIP
+ŠIMUNOVIĆ NENAD
+ŠIMUNOVIĆ NIKOLA DIPL ING
+ŠIMUNOVIĆ STANISLAV
+ŠIMUNOVIĆ STANKO
+ŠIMUNOVIĆ SVETLANA
+ŠIMUNOVIĆ TOMA
+ŠINAGL KAROLJ
+ŠINAGL KAROLJ
+ŠINAGL OTO
+ŠINAGL STEVAN
+ŠINIK DRAGAN
+ŠINIKOV ĐORĐE
+ŠINIKOV MILAN
+ŠINKA MARGITA
+ŠINKA ZLATKO
+ŠINKO GIZELA
+ŠINKO IVANKA
+ŠINKO JANOŠ
+ŠINKO STEVAN
+ŠINKO VLADISLAV
+ŠINKOVIĆ MARIJA
+ŠIPČIĆ LJUBOMIR
+ŠIPČIĆ MARIJA
+ŠIPČIĆ MIDO
+ŠIPČIĆ MIJODRAG
+ŠIPČIĆ NINOSLAV
+ŠIPEK JOSIP NOVINAR
+ŠIPETIĆ ANĐA
+ŠIPETIĆ MOMČILO
+ŠIPIĆ ALEKSANDRA
+ŠIPIN JOVANKA
+ŠIPKA BOŽA
+ŠIPKA BOŽO
+ŠIPKA BRANKO
+ŠIPKA DRAGAN
+ŠIPKA DRAGO
+ŠIPKA GRUJO
+ŠIPKA MARKO
+ŠIPKA MIRKO
+ŠIPKA MIROSLAV
+ŠIPKA MIRO
+ŠIPKA NEĐO
+ŠIPKA ZORAN
+ŠIPKA ZORAN
+ŠIPOŠ ŠANDOR
+ŠIPOŠ ĐORĐE
+ŠIPOŠ ĐORĐE
+ŠIPOŠ ĐURA
+ŠIPOŠ ĐURO
+ŠIPOŠ EDIT
+ŠIPOŠ ERŽEBET
+ŠIPOŠ IGNJAC
+ŠIPOŠ JANOŠ
+ŠIPOŠ JOVANKA
+ŠIPOŠ JOVAN
+ŠIPOŠ JULIJANA
+ŠIPOŠ MIRJANA
+ŠIPOŠ ROZALIJA
+ŠIPOŠ VLADIMIR
+ŠIPOŠEVIĆ RADOJKA
+ŠIPOSKI KRSTE
+ŠIPOVAC CVIJETA
+ŠIPOVAC DANILO
+ŠIPOVAC JANJA
+ŠIPOVAC NEDELJKO
+ŠIPOVAC RADICA
+ŠIPOVAC VASILIJA
+ŠIPRAGA UROŠ
+ŠIPUŠIĆ HELENA
+ŠIRADOVIĆ BRANISLAV
+ŠIRIJOVSKI GOCE
+ŠIRKA JAN
+ŠIRKA SAMUEL
+ŠIROČKA ANTUN
+ŠIROKI ADAM
+ŠIROLA IVAN
+ŠIRONIĆ LJUBO
+ŠISTOV DRAGO
+ŠITE KAROLJ
+ŠITE MARIJA
+ŠITE TIBOR
+ŠITER KARLO
+ŠITER RUŽICA
+ŠITER SLOBODAN
+ŠIVEGI IMRE
+ŠKALJAC STANKO
+ŠKALJAC ZORAN
+ŠKARIČIĆ MIROSLAV
+ŠKARICA DOLORES
+ŠKARICA STJEPAN
+ŠKARIN TODOR
+ŠKATARIĆ ZORAN
+ŠKAVIĆ CVIJO
+ŠKAVIĆ JOVO
+ŠKAVIĆ MILAN
+ŠKAVIĆ NIKOLA
+ŠKEKIĆ MIOMIR
+ŠKILJAJICA VLADIMIR
+ŠKILJEVIĆ MILIDRAG
+ŠKOBALJ NADA
+ŠKOBALJ VOJISLAV
+ŠKODAK PAVLE
+ŠKOLOPIJA LAZAR
+ŠKONDRIĆ DRAGOMIR
+ŠKORIĆ ČEDOMIR
+ŠKORIĆ ŠTRACIMIR
+ŠKORIĆ ĐUJA
+ŠKORIĆ ĐURO
+ŠKORIĆ ANKA
+ŠKORIĆ BOSILJKA
+ŠKORIĆ BRANISLAV
+ŠKORIĆ BRANKO
+ŠKORIĆ DRAGAN DR
+ŠKORIĆ DRAGAN
+ŠKORIĆ DRAGAN
+ŠKORIĆ DUŠAN
+ŠKORIĆ DUŠAN
+ŠKORIĆ DUŠAN
+ŠKORIĆ DUŠKO
+ŠKORIĆ GRUMIKOV
+ŠKORIĆ JOVAN
+ŠKORIĆ JOVAN
+ŠKORIĆ KSENIJA
+ŠKORIĆ LAZAR
+ŠKORIĆ LJILJANA
+ŠKORIĆ MARA
+ŠKORIĆ MARIJA
+ŠKORIĆ MARIJA
+ŠKORIĆ MIĆO
+ŠKORIĆ MILAN
+ŠKORIĆ MILAN
+ŠKORIĆ MILAN
+ŠKORIĆ MILAN
+ŠKORIĆ MILENKO
+ŠKORIĆ MILIVOJ
+ŠKORIĆ MILKA
+ŠKORIĆ MILOŠ
+ŠKORIĆ MIRJANA
+ŠKORIĆ MIRKO
+ŠKORIĆ MIRKO
+ŠKORIĆ MIRKO
+ŠKORIĆ NIKOLA
+ŠKORIĆ NIKOLA
+ŠKORIĆ PAVLE
+ŠKORIĆ PAVLE
+ŠKORIĆ PERO
+ŠKORIĆ SLAVKO
+ŠKORIĆ SLOBODAN
+ŠKORIĆ SMILJA
+ŠKORIĆ SMILJA
+ŠKORIĆ SREĆKO
+ŠKORIĆ STANA
+ŠKORIĆ VLADIMIR
+ŠKORIĆ ZORA
+ŠKORO ŠIME
+ŠKORO MIRJANA
+ŠKORO VASILIJA
+ŠKRAVAN ANDRIJA
+ŠKRBIĆ ŽELJKO
+ŠKRBIĆ ĐURO
+ŠKRBIĆ ANICA
+ŠKRBIĆ BLAŽO
+ŠKRBIĆ BOŽO
+ŠKRBIĆ BOJANA
+ŠKRBIĆ BRANKO
+ŠKRBIĆ DRAGICA
+ŠKRBIĆ DUŠAN
+ŠKRBIĆ JOVAN
+ŠKRBIĆ JOVAN
+ŠKRBIĆ LJUBICA
+ŠKRBIĆ MARA
+ŠKRBIĆ MARICA
+ŠKRBIĆ MILE
+ŠKRBIĆ MILORAD
+ŠKRBIĆ MILORAD
+ŠKRBIĆ NEBOJŠA
+ŠKRBIĆ OSTOJA
+ŠKRBIĆ PETAR
+ŠKRBIĆ RADOSLAV
+ŠKRBIĆ SVETOZAR
+ŠKRBIĆ ZORKA
+ŠKRBINA STJEPAN
+ŠKRGET JOSIP
+ŠKRIJEL DRAGAN
+ŠKRIJEL MILAN
+ŠKRIJELJ AJNIJA
+ŠKRIJELJ SAMIR
+ŠKRIJELJ VEHBO
+ŠKRINJAR KAROLJ
+ŠKRINJAR MARIO
+ŠKRINJAR ZVONIMIR
+ŠKRIVAN ĐURA
+ŠKRIVAN ANTUN
+ŠKRIVAN FRANJA
+ŠKRIVAN KARLO
+ŠKRIVAN LADISLAV
+ŠKRIVAN PETAR
+ŠKRIVAN STEVAN
+ŠKRIVAN STEVAN
+ŠKRIVANJ PIŠTA
+ŠKULETIĆ OLGA
+ŠKULETIĆ ZORAN
+ŠKUNCA IVAN
+ŠKUNCA JELICA
+ŠKUNDRIĆ DUŠAN
+ŠKUNDRIĆ MILICA
+ŠKUNDRIĆ PETAR
+ŠKUNDRIĆ ROZALIJA
+ŠKVAREK VLADA
+ŠLAHTER VENDEL
+ŠLAJER RUDOLF
+ŠLAVIK ILONA
+ŠLEHTA ZDENKO
+ŠLEMENDER ĐORĐE
+ŠLEMENDER ANGELA
+ŠLEMENDER IRENA
+ŠLJAPIĆ GORAN
+ŠLJAPIĆ MIRJANA
+ŠLJAPIĆ OBREN
+ŠLJAPIĆ RUŽICA
+ŠLJAPIĆ STEVAN
+ŠLJAPIĆ TATJANA
+ŠLJAPIĆ TOMISLAV
+ŠLJAPIĆ VELEMIR
+ŠLJIVANČANIN JOVAN
+ŠLJIVANČANIN JOVAN
+ŠLJIVANČANIN MARIJA
+ŠLJIVANČANIN MILUTIN
+ŠLJIVIĆ ĐORĐE
+ŠLJIVIĆ BORKA
+ŠLJIVIĆ JELENA
+ŠLJIVIĆ LJILJANA
+ŠLJIVIĆ MIRJANA
+ŠLJIVIĆ RADOJICA
+ŠLJIVIĆ SPASOJE
+ŠLJIVIĆ VLADISLAV
+ŠLJIVKOVIĆ ĐORĐE
+ŠLJUKA DRAGIŠA
+ŠLJUKA MIJODRAG
+ŠLJUKA MILAN
+ŠLJUKA MILOŠ
+ŠLJUKIĆ ŽIVAN DR
+ŠLJUKIĆ MILIVOJ
+ŠLJUKIĆ ROSANDA
+ŠMANJA MIRKO
+ŠMANJA SLAVKO
+ŠMIDERKAL FRANJA
+ŠMIGELJSKI NIKOLA
+ŠMIGIĆ BORISLAV
+ŠMIGIĆ MILORAD
+ŠMIGIĆ SVETOZAR
+ŠMIT FERDINAND
+ŠMIT GIZELA
+ŠMIT JOSIP
+ŠMIT JOVAN
+ŠMIT-KOTA KATICA
+ŠMIT MARIJA
+ŠMIT MIRJANA
+ŠMIT-PROKIN ĐURĐINA
+ŠMIT REŽE
+ŠMIT STANA
+ŠMIT STANOJKA
+ŠMIT STEVAN
+ŠMIT STEVAN
+ŠMIT VIOLETA
+ŠMIT ZLATKO
+ŠMITRAN ĐORĐE
+ŠMUK IVAN
+ŠNAJDER ŠANDOR
+ŠNAJDER ANICA
+ŠNAJDER ILINKA
+ŠNAJDER JANOŠ
+ŠNAJDER JAROSLAV
+ŠNAJDER STEVAN
+ŠNAJDER VERA
+ŠNAJDEROV JOSIP
+ŠNAJDEROV VESNA
+ŠNAUTIL DRAGUTIN
+ŠNEL PETER
+ŠNJARIĆ IVAN
+ŠOŠ ANTAL
+ŠOŠ ANTAL
+ŠOŠ BALINT
+ŠOŠ DEZIDER
+ŠOŠ GIZELA
+ŠOŠ ILONA
+ŠOŠ JELICA
+ŠOŠ LAJOŠ
+ŠOŠ MARIJA
+ŠOŠ TIBOR
+ŠOŠIĆ MIRKO
+ŠOŠIĆ NATAŠA
+ŠOŠIĆ OLGA
+ŠOŠIĆ RADOSLAV
+ŠOŠIĆ VUK
+ŠOŠKIĆ DRAGOMIR
+ŠOŠKIĆ MIRA
+ŠOĆ BOJANA
+ŠOĆ DUŠAN
+ŠOĆ TOMISLAV
+ŠOBAJIĆ DRAGOSLAV
+ŠOBAKI MARIJA
+ŠOBIĆ MIRA
+ŠOBIĆ RADE
+ŠOBIĆ VERA
+ŠOBIĆ ZORAN
+ŠOBIĆ ZORAN
+ŠOBOT ĐURA
+ŠOBOT BOŠKO
+ŠOBOT BRANKO
+ŠOBOT DRAGAN
+ŠOBOT JOVAN
+ŠOBOT LJUBOMIR
+ŠOBOT MILAN
+ŠOBOT MILICA
+ŠOBOT PETKO
+ŠOBOT SEKULA
+ŠOBOT SLAVICA
+ŠODIĆ DOBRILA
+ŠODIĆ DRAGINJA
+ŠODIĆ GIZELA
+ŠODIĆ MILAN
+ŠODIĆ TODOR
+ŠODOROVIĆ ROSA
+ŠOFHAUZER MIHAJLO
+ŠOFHAUZER ROZALIJA
+ŠOFRAN MARIJA
+ŠOFRANAC MELANIJA
+ŠOGOROV STEVAN
+ŠOJIĆ ŽIVKO
+ŠOJIĆ BRANKO
+ŠOJIĆ DRAGICA
+ŠOJIĆ NEDELJKA
+ŠOJLEVSKA SANJA
+ŠOKIĆ ĐORĐE
+ŠOKIĆ JUDITA
+ŠOKIĆ MILAN
+ŠOKIĆ PETAR
+ŠOKIĆ RADOVAN
+ŠOKIĆ SMILJA
+ŠOKICA ŽIVKO
+ŠOKICA BRANISLAV
+ŠOKICA DIMITRIJE
+ŠOKICA DRAGIŠA
+ŠOKICA JOVAN
+ŠOKICA JUDITA
+ŠOKICA LJUBICA
+ŠOKICA MILOŠ
+ŠOKICA ZORA
+ŠOKLOVAČKI ŽIVKO
+ŠOKLOVAČKI DRAGOLJUB
+ŠOKLOVAČKI NADA
+ŠOKLOVAČKI RATOMIR
+ŠOL BELA
+ŠOLAJA ĐORĐE
+ŠOLAJA DIMITRIJE
+ŠOLAJA GOJKO
+ŠOLAJA MILAN
+ŠOLAJA MIROSLAV
+ŠOLAJA NADA
+ŠOLAJA NADA
+ŠOLAJA RADOSLAV
+ŠOLAJA SLAVKO
+ŠOLAJA SLAVKO
+ŠOLAJA SLOBODAN
+ŠOLAJA VIŠNJA
+ŠOLAK JOKA
+ŠOLAK MARINKO
+ŠOLAK MILE
+ŠOLAK RADE
+ŠOLEVIĆ MILIVOJE
+ŠOLTES ŠANDOR
+ŠOLTES IBOLJA
+ŠOLTES JOŽEF
+ŠOMKEREKI ILONKA
+ŠOMKEREKI JOSIP
+ŠOMKEREKI JULIJANA
+ŠOMKEREKI LADISLAV
+ŠOMKEREKI STEVAN
+ŠOMKEREKI STEVAN
+ŠOMOĐI ŽOFIJA
+ŠOMOĐI ĐORĐE
+ŠOMOĐI EVA
+ŠOMOĐI FRANJA
+ŠOMOĐI IŠTVAN
+ŠOMOĐI JELENA
+ŠOMOĐI JOVAN
+ŠOMOĐI LASLO
+ŠOMOĐI MIHAJLO
+ŠOMOĐI PAL
+ŠOMOĐI PAL
+ŠOMOĐI PAL
+ŠOMOĐI ROZA
+ŠOMOĐI ZOLTAN
+ŠOMOĐI ZORA
+ŠOP MAGDALENA
+ŠOP MILAN
+ŠOPALO ĐURĐINA
+ŠOPALO ĐURĐINA
+ŠOPALO MIODRAG DIPL OEC
+ŠOPALO MIODRAG
+ŠORĐAN ROMAN
+ŠORAK MIRJANA
+ŠORALOV MILOŠ
+ŠORALOV MIROSLAV
+ŠORMAZ DUŠAN
+ŠORMAZ MILAN
+ŠORMAZ NIKOLA
+ŠORMAZ VLADIMIR
+ŠORONJA SAVA
+ŠORONJA VERA
+ŠOSBERGER BORIŠKA
+ŠOSBERGER JOSIP DIPL OEC
+ŠOSBERGER PAVLE
+ŠOSTAKOV RASTISLAV DIPL ING
+ŠOTI-ČALENIĆ MARIJA
+ŠOTI FEĐA
+ŠOTI IVANA
+ŠOTI JOSIP
+ŠOTI JOSIP
+ŠOTI MARIJA
+ŠOTI MARIJA
+ŠOTRA MOMČILO
+ŠOUC MILAN
+ŠOUC MIROSLAV
+ŠOUC ZLATA
+ŠOVŠ JANKO
+ŠOVŠ JOAKIM
+ŠOVANJ JOAKIM
+ŠOVENJ ALEKSANDAR
+ŠOVENJ KARLO
+ŠOVENJ VERA
+ŠOVLJAKOV JOVAN
+ŠOVLJAKOV MILOŠ
+ŠOVLJAKOV MILOŠ
+ŠOVLJANSKI ĐORĐE DIPL ING
+ŠOVLJANSKI ĐORĐE
+ŠOVLJANSKI ANKICA
+ŠOVLJANSKI BOSILJKA
+ŠOVLJANSKI BRANKO
+ŠOVLJANSKI DANICA
+ŠOVLJANSKI DANILO
+ŠOVLJANSKI DANKA
+ŠOVLJANSKI DIMITRIJE
+ŠOVLJANSKI DRAGIŠA
+ŠOVLJANSKI DRAGICA
+ŠOVLJANSKI DRAGICA
+ŠOVLJANSKI DRAGICA
+ŠOVLJANSKI DRAGOMIR
+ŠOVLJANSKI DRAGOMIR
+ŠOVLJANSKI DRAGOSLAV
+ŠOVLJANSKI DRENKA
+ŠOVLJANSKI EMIL
+ŠOVLJANSKI JULKA
+ŠOVLJANSKI LAZAR
+ŠOVLJANSKI LJUBICA
+ŠOVLJANSKI LJUBOMIR
+ŠOVLJANSKI MARGITA
+ŠOVLJANSKI MILAN
+ŠOVLJANSKI MILOŠ
+ŠOVLJANSKI MILORAD
+ŠOVLJANSKI MIRJANA
+ŠOVLJANSKI MIRJANA
+ŠOVLJANSKI MIRJANA
+ŠOVLJANSKI MIROSLAV DR
+ŠOVLJANSKI NADA
+ŠOVLJANSKI PAVLE
+ŠOVLJANSKI RADIVOJ
+ŠOVLJANSKI RADOSLAV
+ŠOVLJANSKI SAVA
+ŠOVLJANSKI STOJAN
+ŠPADIJER TATIJANA
+ŠPAGOVIĆ DRAGOSLAV
+ŠPAK VLADIMIR
+ŠPANČIĆ RADMILA
+ŠPANG LASLO
+ŠPANG ZOLTAN
+ŠPANIĆ BOŠKO
+ŠPANIĆ FRANJA
+ŠPANIĆ LADISLAV
+ŠPANIĆ NADA
+ŠPANIĆ OTO
+ŠPANJEVIĆ SUZANA
+ŠPANJEVIĆ VUKOTA
+ŠPANOVIĆ ĐORĐE
+ŠPANOVIĆ ALEKSA
+ŠPANOVIĆ MILOŠ
+ŠPANOVIĆ NIKOLA
+ŠPARAVALO MARIJA
+ŠPARAVALO NATAŠA
+ŠPARAVALO SAVA
+ŠPARAVALO ZDRAVKO
+ŠPAROVIĆ ILIJA
+ŠPEGAR LAZAR
+ŠPEHAR MARIJA
+ŠPES ETEL
+ŠPES VILIM
+ŠPES VILIM
+ŠPICA MIODRAG
+ŠPIKA MILAN
+ŠPINDLER MARIJA
+ŠPINDLER-TRBOJEVIĆ MIRJANA
+ŠPIRIĆ BORIVOJE
+ŠPIRIĆ GORDANA
+ŠPIRIĆ GOSPAVA
+ŠPIRIĆ ILE
+ŠPIRIĆ JOVO
+ŠPIRIĆ LUKA
+ŠPIRIĆ LUKA
+ŠPIRIĆ MILE
+ŠPIRIĆ NEĐO
+ŠPIRIĆ OBRAD
+ŠPIRIĆ STOJAN
+ŠPIRIĆ TODE
+ŠPIRIĆ UROŠ
+ŠPIRIĆ ZORAN
+ŠPIRKA MATILD
+ŠPIRTA ALEKSANDAR
+ŠPIRTA ALEKSANDAR
+ŠPIS DANILO
+ŠPIS DANILO
+ŠPIS LAJOŠ
+ŠPIS MIRJANA
+ŠPIS NANDOR
+ŠPONJA KOVILJKO
+ŠPROH DRENKA
+ŠPROH JANKO
+ŠPROH MAGDA
+ŠPROH SLAVKO
+ŠPROH STANKO
+ŠPROH STEVAN
+ŠRAHOL HILDA
+ŠRAHOL KARLO
+ŠRAHOL LJUDEVIT
+ŠRAJ VLADIMIR
+ŠRAK JOVICA
+ŠRAK LADISLAV
+ŠRAK LASLO
+ŠRAK OTO
+ŠRAK OTO
+ŠRAM HUGO
+ŠRANC RIHARD
+ŠRANC RIHARD
+ŠRANKA ANA
+ŠRANKA DESANKA
+ŠREDER JANOŠ
+ŠREDER JANOŠ
+ŠREK ANDRIJA DIPL ING
+ŠREK STEVAN DIPL ING
+ŠTABI ŠTEFICA
+ŠTAJN LIVIJA
+ŠTAJNER KREŠIMIR
+ŠTAJNER MIRJANA
+ŠTAJNER MIROSLAV
+ŠTAJNER ZVONIMIR
+ŠTAJNFELD MIHAJLO
+ŠTAJNIC MIROSLAV
+ŠTAJNIC TIBOR
+ŠTANDI KATICA
+ŠTANDI ZOLTAN
+ŠTANFELJ ALOJZ
+ŠTANFELJ MIROSLAV
+ŠTANGL ĐORĐE
+ŠTANJO-TOT GIZELA
+ŠTARK EGON DIPL ING
+ŠTARK MIRKO
+ŠTASNI JOSIP
+ŠTASNI KATICA
+ŠTATKIĆ MIROSLAV
+ŠTAUHER JOSIP
+ŠTEBL JELENA
+ŠTEFAN ĐORĐE
+ŠTEFAN EUĐEN
+ŠTEFAN JULIJANA
+ŠTEFAN MATIJA
+ŠTEFAN OSKAR
+ŠTEFAN RUDOLF
+ŠTEFAN TRAJAN
+ŠTEFANAC STEVAN
+ŠTEFANICKI MIŠO
+ŠTEFANIDES KARLO DR
+ŠTEFANIDES KARLO
+ŠTEFANKO VIKTORIJA
+ŠTEFANOVIĆ DRAGAN
+ŠTEFANOVIĆ DRAGUTIN
+ŠTEFANOVIĆ TOMISLAV
+ŠTEFKO ĐORĐE
+ŠTEFKO ĐORĐE
+ŠTEFOVIĆ VLADIMIR
+ŠTEFULIK JOŽEF
+ŠTEGER ROŽI
+ŠTEGER VALENTINA
+ŠTEHER RADMILA
+ŠTELCER JOSIP
+ŠTELI ANTUN
+ŠTERLE JOSIP
+ŠTERLE STEVAN
+ŠTERLEMAN KRISTIJAN
+ŠTERLEMAN PERA
+ŠTETIĆ KRISTINA
+ŠTETIĆ TIHOMIR
+ŠTETIĆ VESNA
+ŠTETIĆ VIDA
+ŠTETIN HELENA
+ŠTETIN MILAN
+ŠTETIN MILE
+ŠTETIN SVETISLAV
+ŠTEVANČEV LJUBOMIR
+ŠTICA VITOMIR
+ŠTIGLER IVAN
+ŠTIGLER MILAN
+ŠTIGLIĆ DRAGAN
+ŠTIGLIĆ SVETOZAR
+ŠTIKAVAC KOSOVKA
+ŠTIKOVAC SPASOJE
+ŠTIMAC OTO
+ŠTIMAC RUDOLF
+ŠTOKOVAC JOVAN
+ŠTOKOVAC TOMISLAV
+ŠTOLBA ZVONIMIR
+ŠTOS KATICA
+ŠTRAJH IŠTVAN
+ŠTRAJH JOSIP
+ŠTRAJH OTTO
+ŠTRANGAR NADA
+ŠTRANGAROV BORIVOJ
+ŠTRANGAROV DIMITRIJE
+ŠTRANGAROV JELENA
+ŠTRANGAROV JELENA
+ŠTRANGAROV MILICA
+ŠTRANGAROV SLOBODAN
+ŠTRAPAJEVIĆ JULIJANA
+ŠTRASER MIHAJLO DR LEKAR
+ŠTRASER NADA
+ŠTRAUB ERŽEBET
+ŠTRAUB IŠTVAN
+ŠTRAUB STEVAN
+ŠTRBA DANILO
+ŠTRBA MILAN
+ŠTRBAČKI BORISLAV
+ŠTRBAC ŽELJKO
+ŠTRBAC ĐORĐE
+ŠTRBAC ĐURO
+ŠTRBAC ANĐELKA
+ŠTRBAC BOŠKO
+ŠTRBAC BORISLAV
+ŠTRBAC BRANKA
+ŠTRBAC DARINKA
+ŠTRBAC DESANKA
+ŠTRBAC DRAGAN
+ŠTRBAC DUŠAN
+ŠTRBAC DUŠAN
+ŠTRBAC DUŠAN
+ŠTRBAC DUŠAN
+ŠTRBAC JOVAN
+ŠTRBAC LJUBICA
+ŠTRBAC LJUBOMIR
+ŠTRBAC MARIJA
+ŠTRBAC MIĆO
+ŠTRBAC MIĆO
+ŠTRBAC MILANKO
+ŠTRBAC MILAN
+ŠTRBAC MILAN
+ŠTRBAC MILAN
+ŠTRBAC MILAN
+ŠTRBAC MILENA
+ŠTRBAC MILICA
+ŠTRBAC MILIVOJ
+ŠTRBAC MILOŠ
+ŠTRBAC MIRJANA
+ŠTRBAC MIRKO
+ŠTRBAC MOMČILO
+ŠTRBAC NEMANJA
+ŠTRBAC NIKOLA
+ŠTRBAC RADOJKA
+ŠTRBAC RADOVAN
+ŠTRBAC SAVKA
+ŠTRBAC SLAVICA
+ŠTRBAC SLAVKO
+ŠTRBAC STANA
+ŠTRBAC STEVAN
+ŠTRBAC TOMISLAV
+ŠTRBAC UROŠ
+ŠTRBAC VLADO
+ŠTRBAC VUKICA
+ŠTRBAC ZORICA
+ŠTRBENK IVANKA
+ŠTRBENK NIKOLA
+ŠTRBOJA ŽIVKO
+ŠTRBOJA ĐORĐE
+ŠTRBOJA ĐORĐE
+ŠTRBOJA RADA
+ŠTRBOJA RADIVOJ
+ŠTRBOJA STEVAN
+ŠTRBOJE DIMITRIJE
+ŠTRICKI JOSIP
+ŠTRK JOSIP
+ŠTRK MARIJA
+ŠTRKIĆ MIROSLAV
+ŠTRKIĆ MOMIR
+ŠTROK ŽELJKO
+ŠTRTAK SLAVKO
+ŠTRTAK SLOBODAN
+ŠTULA MILE
+ŠTULIĆ BOŽIDAR
+ŠTULIĆ GORAN
+ŠTULIĆ JOVO
+ŠTULIĆ MARKO
+ŠTULIĆ RADOVAN
+ŠTUMPF HELMUT
+ŠTUMPF OSVALD
+ŠUŠČEVIĆ JOVO
+ŠUŠČEVIĆ ZDRAVKO
+ŠUŠA ČEDOMIR
+ŠUŠA DUŠAN
+ŠUŠA JOVAN
+ŠUŠA KEMAL
+ŠUŠA STOJANKA
+ŠUŠAK ĐOKA
+ŠUŠAK ĐORĐE
+ŠUŠAK GOSPAVA
+ŠUŠAK MARIJA
+ŠUŠAK NEVENA
+ŠUŠAK STAMENKO DR
+ŠUŠAK TOMISLAV
+ŠUŠAKOV PAJA
+ŠUŠEVSKI MILAN
+ŠUŠIĆ RISTO
+ŠUŠIĆ TOMISLAV
+ŠUŠKAVČEVIĆ ILIJA
+ŠUŠKAVČEVIĆ MIODRAG
+ŠUŠKOVIĆ BORIS
+ŠUŠLJIK JOVAN
+ŠUŠNJAR ŽARKO
+ŠUŠNJAR BORISLAV
+ŠUŠNJAR BORISLAV
+ŠUŠNJAR MIHAJLO
+ŠUŠNJAR MILAN
+ŠUŠNJAR MILAN
+ŠUŠNJAR PETAR
+ŠUŠNJAR PETAR
+ŠUŠNJAR PETAR
+ŠUŠNJAR SLAVKO
+ŠUŠNJAR SOFIJA
+ŠUŠNJAR STANKO
+ŠUŠNJEVIĆ DUŠAN
+ŠUŠNJEVIĆ MOMČILO
+ŠUŠNJEVIĆ RADOSLAV
+ŠUŠNJIĆ STANKA
+ŠUŠTRAN MLADEN
+ŠUŠTUM JOVAN
+ŠUĆAK MILAN
+ŠUĆOV ĆIRA
+ŠUĆOV DANICA
+ŠUĆOV DANILO
+ŠUĆOV MILOŠ
+ŠUĆOV VUKOSAVA
+ŠUBARA MLADEN
+ŠUBARIĆ LUKA
+ŠUBARIĆ VLASTIMIR
+ŠUBARIĆ ZORAN
+ŠUBERT ILONKA
+ŠUBIĆ JOVANKA
+ŠUBONJ SILVIUS
+ŠUDAR JOŽEF
+ŠUDAR JOSIP
+ŠUDICKI JOŽEF
+ŠUGIĆ MILAN
+ŠUGIĆ NADA
+ŠUGIĆ PETAR
+ŠUGIN ŽIVKO
+ŠUGIN BERISAV
+ŠUGIN DIMITRIJE
+ŠUGIN LEKSA
+ŠUGIN LJILJANA
+ŠUGIN LJILJANA
+ŠUGIN MILKA
+ŠUGIN MIODRAG
+ŠUGIN MIODRAG
+ŠUGIN RADA
+ŠUGIN RANKA
+ŠUHAJDA ĐURA
+ŠUHAJDA IMRE
+ŠUHAJDA LAJOŠ
+ŠUJDOVIĆ ZORAN
+ŠUJIĆ DRAGOMIR
+ŠUJIĆ REDŽO
+ŠUJICA MILAN
+ŠUKA ALEKSA
+ŠUKALOVIĆ ĐORĐE
+ŠUKARA BOGDAN
+ŠUKARA DMITAR
+ŠUKARA DUŠAN
+ŠUKIĆ DRAGICA
+ŠUKIĆ MIROLJUB
+ŠUKIĆ ZORICA
+ŠUKLA SLAVKO
+ŠUKOVIĆ MILAN
+ŠUKOVIĆ ZORKA
+ŠUKUNDA MARIJA
+ŠUKUNDA MILAN
+ŠUKURMA STEVO
+ŠULAJA MIROSLAV
+ŠULC ANDRAŠ
+ŠULC DELIMIR DR PROF
+ŠULC IMRE DIPL ING
+ŠULC IMRE
+ŠULC JOŽEF
+ŠULC JOŽEF
+ŠULC KOSANA
+ŠULC VERA
+ŠULENTIĆ MILE
+ŠULHOF JOŽEF KNJIŽEVNIK
+ŠULJAN ANA
+ŠULJAN JANKO
+ŠULJAN JAN
+ŠULJAN JAN
+ŠULJAN JAROSLAV
+ŠULJAN PAL
+ŠULJMANAC-ŠEĆEROV MIRJANA
+ŠULJMANAC BRANIMIR
+ŠULJMANAC JOVAN
+ŠULJMANAC UROŠ
+ŠULOVIĆ PETAR
+ŠUMAHER ILONA
+ŠUMAHER JANOŠ
+ŠUMAJSKI BLAŽENKA
+ŠUMAN VITOMIR
+ŠUMANOVAC PAVLE DIPL ING
+ŠUMANOVIĆ BRANISLAV
+ŠUMANOVIĆ LJILJANA
+ŠUMAR BOŽO
+ŠUMAR MILAN
+ŠUMAR SIMA
+ŠUMAREVIĆ DRAGORAD
+ŠUMAROV NIKOLA
+ŠUMARUNA CVETA
+ŠUMARUNIĆ PAVLE
+ŠUMEC ERNA
+ŠUMEC JANOŠ
+ŠUMIĆ MLADEN
+ŠUMONJA MILAN
+ŠUNDOVA FLORA
+ŠUNIĆ JOVO
+ŠUNJIĆ PETAR
+ŠUNJKA MARKO
+ŠUNJKA MILICA
+ŠUNJKA RATKO
+ŠUNKA JOVAN
+ŠUNKIĆ LAZAR
+ŠUNTIĆ MATEJ
+ŠUPE ŠIME
+ŠUPICA DUŠAN
+ŠUPICA LAZAR
+ŠUPICA LAZA
+ŠUPICA LJUBICA
+ŠUPICA MARA
+ŠUPICA MILAN
+ŠUPICA MILOŠ
+ŠUPICA PETAR
+ŠUPICA SLAVKO
+ŠUPICA VASA
+ŠUPUT ŽARKO DIPL ING
+ŠUPUT ĐURO
+ŠUPUT DUŠAN
+ŠUPUT SLOBODAN
+ŠUPUT SVETOZAR
+ŠURANJI TEREZIJA
+ŠURBANOVIĆ BRANKO
+ŠURJAN JANOŠ
+ŠURJAN JOVAN
+ŠURJANČEV IVAN
+ŠURJANOVIĆ MILAN
+ŠURJANOVIĆ MILENA
+ŠURKALOVIĆ MILENA
+ŠURKOVIĆ DORAN
+ŠURKOVIĆ IRFAN DIPL ING
+ŠURLAN ČEDOMIR
+ŠURLAN ĐORĐO
+ŠURLAN DRAGOMIR
+ŠURLAN DRAGOSLAV
+ŠURLAN GOJKO
+ŠURLAN JOVAN
+ŠURLAN MARINKO
+ŠURLAN MARKO
+ŠURLAN MILOŠ
+ŠURLAN MIRKO
+ŠURLAN MOMIR
+ŠURLAN NEDELJKO
+ŠURLAN RUŠKO
+ŠURLAN VOJISLAV
+ŠURLAN VUKOSAVA
+ŠUSTER NEGOSLAV
+ŠUSTRIJAN OLGA
+ŠUTANOVIĆ NADA
+ŠUTILOVIĆ MILORAD
+ŠUTILOVIĆ NEVENKA
+ŠUTULOVIĆ DANKA
+ŠUTULOVIĆ VESNA
+ŠUTVIĆ BRANKA
+ŠUVAK MIODRAG
+ŠUVAKOV DARINKA
+ŠUVAKOV DEJAN
+ŠUVAKOV JOVAN
+ŠUVAKOV MILENA
+ŠUVAKOV MILORAD
+ŠUVAKOV STEVAN
+ŠUVAKOV TIHOMIR DR
+ŠUVAKOV VESELINKA
+ŠUVAKOVIĆ ĐURĐICA
+ŠUVAKOVIĆ BOGOSLAV
+ŠUVAKOVIĆ DAMJAN DR LEKAR
+ŠUVAKOVIĆ JULIJANA
+ŠUVAKOVIĆ ZORAN
+ŠVAB ESTER
+ŠVAB HENRIJETA
+ŠVAGER MARTIN
+ŠVAJBERIĆ VIRGINIJA
+ŠVAJCER GIZELA
+ŠVAJCER IVICA
+ŠVAJCER-RAKIĆ IRENA
+ŠVAJCER ROZALIJA
+ŠVANDILIK JOŽEF
+ŠVARC ILONA
+ŠVARC TIBOR
+ŠVARC VLADIMIR
+ŠVEDIĆ AĆIM
+ŠVEDIĆ DUŠAN
+ŠVEDIĆ ELIZABETA
+ŠVEDIĆ ERŽIKA
+ŠVEDIĆ GRUJA
+ŠVEDIĆ JOVAN
+ŠVEDIĆ MILICA
+ŠVEDIĆ MILORAD
+ŠVEDIĆ MILUTIN
+ŠVEDIĆ NIKOLA
+ŠVEDIĆ PETAR
+ŠVELJA BOGDAN
+ŠVELJA PETAR
+ŠVEM ĐURA
+ŠVENDA GORAN
+ŠVER KARLO
+ŠVERER RUDOLF
+ŠVERKO ANĐELIJA
+ŠVIND NENAD
+ŠVOB JOSIP
+ŠVOB LAJOŠ
+ŠVONJA ŽELJKO
+ŠVONJA ĐURĐINKA
+ŠVONJA BILJANA
+ŠVONJA BOŠKO
+ŠVONJA BOŠKO
+ŠVONJA BOŽIDAR
+ŠVONJA BORIVOJ
+ŠVONJA BRANKO
+ŠVONJA DRAGOLJUB
+ŠVONJA DUŠAN
+ŠVONJA DUŠKO
+ŠVONJA MILAN
+ŠVONJA MIRA
+ŠVONJA RATKO
+ŠVONJA RATKO
+ŠVONJA SVETOZAR
+ŠVONJA VELJKO
+ŠVRAKA FRANJO
+ŠVRAKA STEVAN DIPL ING
+ŠVRAKA STEVAN
+ĆAĆIĆ DANICA
+ĆAĆIĆ DUŠAN
+ĆAĆIĆ MARKO
+ĆAĆIĆ NINOSLAV
+ĆAHUN KARLO DIPL ING
+ĆAJA VANKA
+ĆAKIĆ GIZA
+ĆALASAN JOVAN
+ĆALASAN STOJAN
+ĆALETA IVICA
+ĆALIĆ ILIJA
+ĆALIĆ JOVAN
+ĆALIĆ JOVAN
+ĆALIĆ LUKA
+ĆALIĆ MILOŠ
+ĆALIĆ MOMČILO
+ĆALIĆ SLOBODAN
+ĆALIĆ ZORAN
+ĆALOV MILORAD
+ĆALOVIĆ LAKIĆ
+ĆALOVIĆ RADOMIR
+ĆALUŠIĆ JAKOV
+ĆATIĆ RADENKO
+ĆATIĆ SMILJANA
+ĆATOVIĆ DRAGAN
+ĆATOVIĆ GOSPAVA
+ĆATOVIĆ MAHIT
+ĆATOVIĆ SIMAN
+ĆAVAR MARKO
+ĆAZIĆ ĐORĐE
+ĆAZIĆ MILE
+ĆAZIĆ MILE
+ĆAZIĆ PETAR
+ĆEBIĆ BORIVOJ
+ĆEBIĆ MILAN
+ĆEBIĆ SLAVICA
+ĆEBOVIĆ NENAD
+ĆEHA BRANE
+ĆEJIĆ DUŠAN
+ĆEJIĆ DUŠAN
+ĆELAP MLADEN
+ĆELAP SVETOZAR
+ĆELIĆ LJUBA
+ĆELIĆ SLAVKO
+ĆELIĆ VIKTORIJA
+ĆENANOVIĆ MIRJANA
+ĆERAN BOŠKO
+ĆERAN DUŠAN
+ĆERAN JELKA
+ĆERAN MILENKO
+ĆERAN STOJAN
+ĆERAN VELJKO
+ĆERAN ZORANKA
+ĆERANIĆ BRANISLAV
+ĆERANIĆ MILAN
+ĆERANIĆ MILICA
+ĆERANIĆ RADINKA
+ĆERANIĆ SNEŽANA
+ĆERANIĆ ZORAN
+ĆERIMAGIĆ ETHEM
+ĆERMOV-KAVEČAN BOJANA
+ĆESAROV ŽARKO
+ĆESAROV BRANISLAV
+ĆESAROV RUŽICA
+ĆESAROV SIMA
+ĆESAROV STEVAN
+ĆESAROV SVETOZAR
+ĆESAROVIĆ BOSILJKA
+ĆESAROVIĆ RADIVOJ
+ĆETKOVIĆ ŽARKO
+ĆETKOVIĆ BOŽIDAR
+ĆETKOVIĆ DUŠANKA
+ĆETKOVIĆ MILENKO
+ĆETKOVIĆ NENAD
+ĆETKOVIĆ PREDRAG
+ĆETOJEVIĆ ĐORĐE
+ĆETOJEVIĆ BOSA
+ĆETOJEVIĆ DRAGOLJUB
+ĆETOJEVIĆ JOVO
+ĆETOJEVIĆ MILOŠ
+ĆETOJEVIĆ MILOVAN
+ĆETOJEVIĆ MIROSLAV
+ĆETOJEVIĆ NEDELJKO
+ĆETOJEVIĆ RADOVAN
+ĆEVAP BOŽA
+ĆIŠIN DUŠANKA
+ĆINKUL SAVA
+ĆINKUL VALTA
+ĆIPE ERŽEBET
+ĆIPROVAC SAVA
+ĆIPROVAC TOŠA
+ĆIPROVAC ZDRAVKO
+ĆIRAK MILORAD
+ĆIRAKOVIĆ ŽIVORAD
+ĆIRAKOVIĆ MARKO
+ĆIRAKOVIĆ MILORAD
+ĆIRAKOVIĆ SAJA
+ĆIREVSKI BUDIMIR
+ĆIRIĆ ĆIRA
+ĆIRIĆ ŽIVKA
+ĆIRIĆ ŽIVKA
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐORĐE
+ĆIRIĆ ĐURĐINKA
+ĆIRIĆ ANICA
+ĆIRIĆ ANITA
+ĆIRIĆ BOŠKO
+ĆIRIĆ BOŽIDAR DR
+ĆIRIĆ BOŽIDAR
+ĆIRIĆ BOŽO
+ĆIRIĆ BORISLAV
+ĆIRIĆ BORISLAV
+ĆIRIĆ BORISLAV
+ĆIRIĆ BRANKA
+ĆIRIĆ BRANKO
+ĆIRIĆ DANICA
+ĆIRIĆ DANILO
+ĆIRIĆ DESANKA
+ĆIRIĆ DIVKO
+ĆIRIĆ DOBRILA
+ĆIRIĆ DRAGAN
+ĆIRIĆ DRAGICA
+ĆIRIĆ DRAGINJA
+ĆIRIĆ DRAGOLJUB
+ĆIRIĆ DUŠAN DIPL ING
+ĆIRIĆ DUŠANKA
+ĆIRIĆ DUŠAN
+ĆIRIĆ DUŠAN
+ĆIRIĆ DUŠICA
+ĆIRIĆ GAVRILO
+ĆIRIĆ GORDANA
+ĆIRIĆ IVANKA
+ĆIRIĆ IVAN
+ĆIRIĆ JELISAVETA
+ĆIRIĆ JORDAN
+ĆIRIĆ JOVANKA
+ĆIRIĆ JOVAN
+ĆIRIĆ JOVAN
+ĆIRIĆ JOVAN
+ĆIRIĆ KAMENKO
+ĆIRIĆ KATICA
+ĆIRIĆ LAZAR
+ĆIRIĆ LENKA
+ĆIRIĆ LJUBICA
+ĆIRIĆ LJUBICA
+ĆIRIĆ LJUBOMIR
+ĆIRIĆ MARKO
+ĆIRIĆ MILAN DIPL ING
+ĆIRIĆ MILAN
+ĆIRIĆ MILENKO
+ĆIRIĆ MILENKO
+ĆIRIĆ MILETA
+ĆIRIĆ MILICA
+ĆIRIĆ MILKA
+ĆIRIĆ MILOŠ
+ĆIRIĆ MILOŠ
+ĆIRIĆ MILORAD
+ĆIRIĆ MILORAD
+ĆIRIĆ MIODRAG
+ĆIRIĆ MIRA
+ĆIRIĆ MLADEN
+ĆIRIĆ NIKOLA
+ĆIRIĆ PAJA
+ĆIRIĆ PETAR
+ĆIRIĆ PETAR
+ĆIRIĆ-PETROVIĆ KATARINA
+ĆIRIĆ PREDRAG
+ĆIRIĆ RADE
+ĆIRIĆ RADMILA
+ĆIRIĆ RADMILO
+ĆIRIĆ RADOMIR
+ĆIRIĆ RADOVAN
+ĆIRIĆ ROBERT
+ĆIRIĆ SAVA
+ĆIRIĆ SLAVICA
+ĆIRIĆ SLAVKO
+ĆIRIĆ SLAVKO
+ĆIRIĆ SLOBODAN
+ĆIRIĆ SMILJA
+ĆIRIĆ SOFIJA
+ĆIRIĆ SREDOJE
+ĆIRIĆ STANISLAV
+ĆIRIĆ STEVAN
+ĆIRIĆ STEVAN
+ĆIRIĆ STEVAN
+ĆIRIĆ SVETISLAV
+ĆIRIĆ SVETOZAR
+ĆIRIĆ SVETOZAR
+ĆIRIĆ SVETOZAR
+ĆIRIĆ SVETOZAR
+ĆIRIĆ TOMISLAV
+ĆIRIĆ TOMISLAV
+ĆIRIĆ-TON JELICA
+ĆIRIĆ VASA
+ĆIRIĆ VERA
+ĆIRIĆ VLADIMIR
+ĆIRIĆ VLADIMIR
+ĆIRIĆ VLADISLAV
+ĆIRIĆ VUČKO
+ĆIRIĆ ZORAN
+ĆIRIĆ ZORA
+ĆIRIĆ ZORA
+ĆIRIĆ ZORKA
+ĆIRILOV MILAN
+ĆIRILOVIĆ ANICA
+ĆIRILOVIĆ BRANISLAV
+ĆIRILOVIĆ MILIVOJ
+ĆIRILOVIĆ MLADEN
+ĆIRILOVIĆ OLGA
+ĆIRILOVIĆ PETAR
+ĆIRILOVIĆ VERA
+ĆIRIN DRAGOSLAV
+ĆIRIN-NOVTA VERA
+ĆIRIN SLOBODAN
+ĆIRITOVIĆ DUŠANKA
+ĆIRJAKOVIĆ GORDANA
+ĆIRJAKOVIĆ SLAVOLJUB
+ĆIRJAKOVIĆ SLOBODAN
+ĆIRKOVIĆ ĐORĐE
+ĆIRKOVIĆ CVETANKA
+ĆIRKOVIĆ IVAN
+ĆIRKOVIĆ IVAN
+ĆIRKOVIĆ JANKO
+ĆIRKOVIĆ KATICA
+ĆIRKOVIĆ MARKO
+ĆIRKOVIĆ MARTA
+ĆIRKOVIĆ MILENKO
+ĆIRKOVIĆ MIROSLAV
+ĆIRKOVIĆ NENAD
+ĆIRKOVIĆ RADMILA
+ĆIROVIĆ ŽARKO
+ĆIROVIĆ DEJAN
+ĆIROVIĆ GRUJICA
+ĆIROVIĆ MILUTIN
+ĆIROVIĆ NIKOLA
+ĆIROVIĆ VELIMIR
+ĆIROVIĆ VELIMIR
+ĆIRPANOV MIODRAG
+ĆIRUŠIĆ RAJKO
+ĆITIĆ DUŠAN
+ĆITIĆ MILOVAN
+ĆOĆKALO SIMA
+ĆOJANOVIĆ BOŽIDAR
+ĆOJANOVIĆ BORO
+ĆOJANOVIĆ MILKA
+ĆOJDER GOJKO
+ĆOMA KATARINA
+ĆOPIĆ ANDRIJA
+ĆOPIĆ EVICA
+ĆOPIĆ MIĆA
+ĆOPIĆ MILE
+ĆOPIĆ MILOŠ
+ĆOPIĆ VERA
+ĆORIĆ-ĐOKIĆ NADA
+ĆORIĆ ĐORĐE
+ĆORIĆ ĐURO
+ĆORIĆ ĐURO
+ĆORIĆ ANDRIJA
+ĆORIĆ BISERKA
+ĆORIĆ BLAGOJE
+ĆORIĆ BORA
+ĆORIĆ JOVAN
+ĆORIĆ KATARINA
+ĆORIĆ LJILJANA
+ĆORIĆ MARIJA
+ĆORIĆ MIĆO
+ĆORIĆ MIKAILO
+ĆORIĆ RAJKO
+ĆORKOVIĆ IVAN
+ĆORKOVIĆ MARKO
+ĆOROVIĆ DANILO
+ĆOROVIĆ JOVAN
+ĆOROVIĆ MIRČETA
+ĆOROVIĆ MIRO
+ĆOROVIĆ RENATA
+ĆOROVIĆ SLOBODAN
+ĆOSIĆ ŠTEFICA
+ĆOSIĆ ŽARKO
+ĆOSIĆ ŽIVANA
+ĆOSIĆ ŽIVKA
+ĆOSIĆ ALEKSANDAR
+ĆOSIĆ ALEKSANDAR
+ĆOSIĆ BOGDAN SUDIJA
+ĆOSIĆ BRANKO
+ĆOSIĆ BRANKO
+ĆOSIĆ DANICA
+ĆOSIĆ DRAGANA
+ĆOSIĆ DRAGAN
+ĆOSIĆ DRAGICA
+ĆOSIĆ DRAGICA
+ĆOSIĆ DUŠAN
+ĆOSIĆ DUŠAN
+ĆOSIĆ DUŠKO
+ĆOSIĆ FADIL
+ĆOSIĆ ILIJA
+ĆOSIĆ JELKA
+ĆOSIĆ JOVAN
+ĆOSIĆ JOVAN
+ĆOSIĆ JOVAN
+ĆOSIĆ JOZO
+ĆOSIĆ LJILJANA
+ĆOSIĆ MARIJA
+ĆOSIĆ MARIJA
+ĆOSIĆ MILAN
+ĆOSIĆ MILENA
+ĆOSIĆ MILICA
+ĆOSIĆ MIRJANA
+ĆOSIĆ MUHAMED
+ĆOSIĆ OLGA
+ĆOSIĆ PANTELIJA
+ĆOSIĆ SAVKA
+ĆOSIĆ SMILJA
+ĆOSIĆ SNEŽANA
+ĆOSIĆ STANKA
+ĆOSIĆ STOJAN
+ĆOSIĆ TODOR DIPL ING
+ĆOSIĆ VERA
+ĆOSIĆ VEROSLAV
+ĆOSIĆ VLADIMIR
+ĆOSIĆ ZORAN
+ĆOSIĆ ZORKA
+ĆOSIN DUŠAN
+ĆOSIN ZORAN
+ĆOSO GAVRILO
+ĆOSOVIĆ JELENA
+ĆOSOVIĆ MILETA
+ĆOSOVIĆ TOMISLAV
+ĆOVIĆ LAZAR
+ĆOVIN MILAN
+ĆUĆA ADAM
+ĆUĆILOVIĆ CVIJA
+ĆUĆILOVIĆ MOMČILO
+ĆUĆILOVIĆ RUŽICA
+ĆUĆUZ MARKO
+ĆUĆUZ SAŠA
+ĆUĆUZ STANKO
+ĆUBA RATKO DIPL ING
+ĆUBIĆ DUŠAN
+ĆUIĆ ILIJA
+ĆUIĆ MARA
+ĆUIĆ MILKA
+ĆUJIĆ LJUBICA
+ĆUJIĆ STEVAN
+ĆUK ĐURO
+ĆUK DRAGO
+ĆUK DUŠAN
+ĆUK DUŠAN
+ĆUK GOJKO
+ĆUK LELA
+ĆUK LUKA
+ĆUK MARA
+ĆUK MILAN DIPL ING
+ĆUK MILE
+ĆUK MILICA
+ĆUK MILKAN
+ĆUK MILORAD
+ĆUK MIROSLAV
+ĆUK NIKOLA
+ĆUK RADIVOJ
+ĆUK RATKO
+ĆUK SLOBODAN
+ĆUK TOMISLAV
+ĆUK ZORKA
+ĆUKOVIĆ MILUN
+ĆUKOVIĆ MIRA
+ĆUKOVIĆ RADOMIR DIPL ING
+ĆUKOVIĆ RADOVAN
+ĆUKOVIĆ TIHOMIRKA
+ĆUKOVIĆ ZORAN
+ĆULIĆ ĐORĐE
+ĆULIĆ JASMINKA
+ĆULIBRK BOGDAN
+ĆULIBRK DRAGAN
+ĆULIBRK DRAGAN
+ĆULIBRK DRAGOSLAV
+ĆULIBRK DUŠANKA
+ĆULIBRK DUŠAN
+ĆULIBRK GOSPAVA
+ĆULIBRK JELICA
+ĆULIBRK JELKA
+ĆULIBRK MILAN
+ĆULIBRK MILE
+ĆULIBRK MILE
+ĆULIBRK MIODRAG
+ĆULIBRK MIRKO
+ĆULIBRK MLADEN
+ĆULIBRK MOMČILO
+ĆULIBRK RADIVOJE
+ĆULIBRK RADOJKA
+ĆULIBRK RATKO
+ĆULIBRK RISTO
+ĆULIBRK SLOBODAN
+ĆULIBRK SOKA
+ĆULIBRK STEVAN
+ĆULIBRK TRIVO
+ĆULUM BRANKO
+ĆULUM GOJKO
+ĆULUM ILIJA
+ĆULUM JELICA
+ĆULUM JOVAN
+ĆULUM LAZAR
+ĆULUM MARA
+ĆULUM MARA
+ĆULUM MIHAJLO
+ĆULUM MILAN
+ĆULUM MILETA
+ĆULUM MILOŠ
+ĆULUM MIODRAG
+ĆULUM MIRKO
+ĆULUM MIRKO
+ĆULUM NADA
+ĆULUM NADA
+ĆULUM NIKOLA
+ĆULUM PERO
+ĆULUM RADE
+ĆULUM RADE
+ĆULUM SAVA
+ĆULUM SLAVKO
+ĆULUM STANKA
+ĆULUM STANKA
+ĆULUM STEVO
+ĆULUM STEVO
+ĆULUM UROŠ
+ĆULUM VASA
+ĆULUMAN STEVAN
+ĆULUMOVIĆ STJEPAN
+ĆUMUROVIĆ SLAVICA
+ĆUPIĆ DUŠAN
+ĆUPINA BRANKO
+ĆUPINA MILADIN
+ĆUPINA NOVICA
+ĆUPINA TOMISLAV DR
+ĆUPURDIJA JELENA
+ĆUPURDIJA MILAN
+ĆUPURDIJA MILOVAN
+ĆUPURDIJA SAŠA
+ĆUPURDIJA STEVAN
+ĆURČIĆ ČEDOMIR
+ĆURČIĆ ŽIVAN
+ĆURČIĆ ŽIVAN
+ĆURČIĆ ŽIVKO
+ĆURČIĆ ĐORĐE
+ĆURČIĆ ALEKSANDAR
+ĆURČIĆ ANDRIJA
+ĆURČIĆ BOŠKO
+ĆURČIĆ BOGDAN
+ĆURČIĆ BORIVOJ
+ĆURČIĆ BRANISLAV
+ĆURČIĆ BRANKO
+ĆURČIĆ BRANKO
+ĆURČIĆ BRANKO
+ĆURČIĆ DANILO
+ĆURČIĆ DESPINA
+ĆURČIĆ DRAGAN
+ĆURČIĆ DRAGAN
+ĆURČIĆ DRAGAN
+ĆURČIĆ DRAGOMIR
+ĆURČIĆ DRAGOSLAV
+ĆURČIĆ DUŠANKA
+ĆURČIĆ DUŠAN
+ĆURČIĆ DUŠAN
+ĆURČIĆ DUŠAN
+ĆURČIĆ GEORGIJE
+ĆURČIĆ GOJKO
+ĆURČIĆ GORDANA
+ĆURČIĆ IBOJA
+ĆURČIĆ ILIJA
+ĆURČIĆ ILIJA
+ĆURČIĆ JASMINA
+ĆURČIĆ JELENA
+ĆURČIĆ JOVAN NOVINAR
+ĆURČIĆ JOVA
+ĆURČIĆ KAMENKO
+ĆURČIĆ-KASALICA BOSA
+ĆURČIĆ KATICA
+ĆURČIĆ LAZAR
+ĆURČIĆ LAZAR
+ĆURČIĆ LJILJANA
+ĆURČIĆ LJILJANA
+ĆURČIĆ LJUBIŠA
+ĆURČIĆ LJUBOMIR
+ĆURČIĆ MARA
+ĆURČIĆ MARA
+ĆURČIĆ MARIJA
+ĆURČIĆ MARIJA
+ĆURČIĆ MARIJA
+ĆURČIĆ MIHAJLO
+ĆURČIĆ MIJO
+ĆURČIĆ MILAN
+ĆURČIĆ MILAN
+ĆURČIĆ MILAN
+ĆURČIĆ MILAN
+ĆURČIĆ MILAN
+ĆURČIĆ MILENA
+ĆURČIĆ MILEVA
+ĆURČIĆ MILE
+ĆURČIĆ MILE
+ĆURČIĆ MILIĆ
+ĆURČIĆ MILICA
+ĆURČIĆ MILIVOJ
+ĆURČIĆ MILORAD
+ĆURČIĆ MILORAD
+ĆURČIĆ MIODRAG
+ĆURČIĆ MIODRAG
+ĆURČIĆ MIRJANA
+ĆURČIĆ MIRJANA
+ĆURČIĆ MIRKO
+ĆURČIĆ MIROSLAV
+ĆURČIĆ MIROSLAV
+ĆURČIĆ MLADEN
+ĆURČIĆ MOMČILO
+ĆURČIĆ NADA
+ĆURČIĆ NENAD
+ĆURČIĆ NIKOLA
+ĆURČIĆ OLGA
+ĆURČIĆ OLGA
+ĆURČIĆ PAVLE
+ĆURČIĆ PETAR
+ĆURČIĆ RADE
+ĆURČIĆ RADIVOJ
+ĆURČIĆ RADMILA
+ĆURČIĆ RADMILA
+ĆURČIĆ RADOSLAV
+ĆURČIĆ RADOSLAV
+ĆURČIĆ RADOSLAV
+ĆURČIĆ RAJKO
+ĆURČIĆ RAJKO
+ĆURČIĆ RATKA
+ĆURČIĆ RATOMIR
+ĆURČIĆ SAVA
+ĆURČIĆ SLAVICA
+ĆURČIĆ SLAVKO
+ĆURČIĆ SLOBODAN
+ĆURČIĆ SLOBODAN
+ĆURČIĆ SLOBODAN
+ĆURČIĆ STEVAN
+ĆURČIĆ STEVO
+ĆURČIĆ UROŠ
+ĆURČIĆ VASILIJE
+ĆURČIĆ VERA
+ĆURČIĆ VESELINKA
+ĆURČIĆ VUKAŠIN
+ĆURČIĆ ZDRAVKO
+ĆURČIĆ ZLATA
+ĆURČIĆ ZORAN
+ĆURČIĆ ZORAN
+ĆURČIJA SIMA
+ĆURČIN ŽIVKO
+ĆURČIN ŽIVKO
+ĆURČIN ĐORĐE
+ĆURČIN ĐURA
+ĆURČIN ALEKSANDAR
+ĆURČIN BOŽIDAR
+ĆURČIN BRANKO
+ĆURČIN DRAGOMIR
+ĆURČIN DRAGOSLAV
+ĆURČIN DRENKA
+ĆURČIN DUŠAN
+ĆURČIN DUŠAN
+ĆURČIN EMILIJA
+ĆURČIN JELENA
+ĆURČIN JELISAVETA
+ĆURČIN LJUBICA
+ĆURČIN MAKSA
+ĆURČIN MILAN
+ĆURČIN MILENA
+ĆURČIN MILORAD
+ĆURČIN MILORAD
+ĆURČIN OBRAD
+ĆURČIN PETAR
+ĆURČIN RADIVOJ
+ĆURČIN RADOSLAV
+ĆURČIN RUŽA
+ĆURČIN SARA
+ĆURČIN SVETOZAR
+ĆURČIN TODOR
+ĆURČIN VASA
+ĆURČIN VELEMIR
+ĆURČIN VELIMIR
+ĆURČIN VERICA
+ĆURČIN VUKICA
+ĆURČIN ZORA
+ĆURĆIJIĆ RATOMIR
+ĆURDIĆ JOVAN
+ĆURDIĆ VASILIJE
+ĆURDIĆ ZORAN
+ĆURGUZ ILIJA
+ĆURGUZ MILORAD
+ĆURGUZ NADA
+ĆURGUZ VERICA
+ĆURIČIĆ TATJANA
+ĆURIĆ ĐORĐE
+ĆURIĆ JOVAN
+ĆURIĆ MILAN
+ĆURIĆ MILOŠ
+ĆURIĆ MILORAD
+ĆURIĆ MILUTIN
+ĆURIĆ PELAGIJA
+ĆURIĆ SAVO
+ĆURIĆ SIMO
+ĆURIĆ SINIŠA
+ĆURIĆ SUZANA
+ĆURIĆ VLADISLAV
+ĆURKOVIĆ ŠPIRO
+ĆURKOVIĆ-ĐORĐEVIĆ MIOMIRA
+ĆURKOVIĆ KATICA
+ĆURLIBRK BOSILJKA
+ĆURUVIJA BRANKO
+ĆURUVIJA NIKOLA
+ĆURUVIJA NIKOLA
+ĆURUVIJA VLADO
+ĆUTILO STEVO
+ĆUZOVIĆ BRANE
+ĆUZOVIĆ DRAGOLJUB
+ĆUZOVIĆ DRAGOLJUB
+ĆUZOVIĆ GORAN
+ĆUZOVIĆ MIRKO
+ŽABALJAC VOJISLAV
+ŽABIĆ GORAN
+ŽABIĆ LJUBOMIR
+ŽABULJAC PAVLE
+ŽAFRAN MARTIN
+ŽAGAR DRAGAN
+ŽAGAR ERNEST
+ŽAGAR IVAN
+ŽAGAR JOVAN
+ŽAGAR LJILJA
+ŽAGAR MARIJA
+ŽAGAR MATIJA
+ŽAGAR PAVAO
+ŽAGAR RADOSLAVA
+ŽAJA TOMISLAV
+ŽAJAČKO ŽELJKO
+ŽAK DRAGUTIN
+ŽAKIĆ LJUBICA
+ŽAKIĆ MARIJA
+ŽAKIĆ MIODRAG
+ŽAKIĆ MLADEN
+ŽAKIĆ VERA
+ŽAKIĆ VLADIMIR
+ŽAKIĆ VOJISLAV
+ŽAKULA ARANKA
+ŽAKULA BORISLAV
+ŽAKULA MILAN
+ŽAKULA MILAN
+ŽAKULA MIODRAG
+ŽAKULA MIRA
+ŽAKULA RADIVOJ DR PROF
+ŽAKULA ZORA
+ŽAMBOKI MARIJA
+ŽAMBOKI VERONA
+ŽARČANIN BRANKO
+ŽARČANIN PREDRAG
+ŽARIN RADOJICA
+ŽARIN SINIŠA
+ŽARIN-TABAK NATALIJA
+ŽARIN VESELIN
+ŽARKO LADISLAV
+ŽARKO MIHAJLO
+ŽARKOV DUŠAN
+ŽARKOV KOSTA
+ŽARKOV LJILJANA
+ŽARKOV VESELKA
+ŽARKOV ZLATOJE
+ŽARKOVAČKI ILIJA
+ŽARKOVAČKI MIRKO
+ŽARKOVIĆ ŽARKO
+ŽARKOVIĆ DANILO
+ŽARKOVIĆ DANILO
+ŽARKOVIĆ DRAGOJE DR PROF
+ŽARKOVIĆ GOJKO
+ŽARKOVIĆ GOJKO
+ŽARKOVIĆ JOVAN
+ŽARKOVIĆ JOVAN
+ŽARKOVIĆ MILENA
+ŽARKOVIĆ MIODRAG
+ŽARKOVIĆ MIODRAG
+ŽARKOVIĆ MIRKO
+ŽARKOVIĆ NEBOJŠA
+ŽARKOVIĆ NENAD
+ŽARKOVIĆ NENAD
+ŽARKOVIĆ NOVICA
+ŽARKOVIĆ RISTO
+ŽARKOVIĆ RISTO
+ŽARKOVIĆ SLAVKO
+ŽARKOVIĆ VLAJKO
+ŽARKOVIĆ ZDRAVKO
+ŽARKOVIĆ ZDRAVKO
+ŽARKOVIĆ ZORA
+ŽDERIĆ JELICA
+ŽDERIĆ MARIJA
+ŽDERIĆ MILAN
+ŽDERIĆ MILENKO
+ŽDERO DRAGINJA
+ŽDERO DUŠICA
+ŽDERO GOJKO
+ŽDERO MARINKO
+ŽDERO PETAR
+ŽDERO PETAR
+ŽDERO RADOMIR
+ŽDRALE RADOVAN
+ŽDRALIĆ VASO
+ŽDRNJA MILAN
+ŽDRNJA MILAN
+ŽDRNJA MIRKO
+ŽDRNJA NEĐO
+ŽDRNJA NEĐO
+ŽDRNJA SIMO
+ŽEŽELJ BRANKO
+ŽEŽELJ MILAN
+ŽEŽELJ MILAN
+ŽEŽELJ SAVA
+ŽEŽELJ SVETISLAV
+ŽEBELJAN MILENA
+ŽEBELJAN MILENKO
+ŽEBELJAN MILORAD
+ŽEBELJAN MITA
+ŽEBELJAN NEDELJKO
+ŽEBERAN ANĐELKA
+ŽEGARAC ĐORĐE
+ŽEGARAC DANICA
+ŽEGARAC DUŠAN
+ŽEGARAC LAZAR
+ŽEGARAC MILAN
+ŽEGARAC MILENKO
+ŽEGARAC MIRJANA
+ŽEGARAC STEVAN
+ŽEGARAC VOJISLAV
+ŽEKIĆ ŽIVKO
+ŽEKIĆ BOŠKO
+ŽEKIĆ RADISLAV
+ŽEKIĆ RUŽA
+ŽEKIĆ ZORAN
+ŽELEM STEVAN
+ŽELER ĐURĐEVKA
+ŽELEZEN JOSIP
+ŽELI ANDRAŠ
+ŽELI IŠTVAN
+ŽELI KATARINA
+ŽELI SILVESTER
+ŽEMBERI ŠANDOR
+ŽEMBERI JOSIP
+ŽEMBERI ROBERT
+ŽEMBERI ROBERT
+ŽENER KARLO
+ŽENILO BOŽIDAR
+ŽERAJIĆ GAVRILO
+ŽERAVICA DAMJAN
+ŽERAVICA MILADIN
+ŽERAVICA NADA
+ŽERAVICA STANOJE
+ŽERAVLJEV ILIJA
+ŽERIĆ IRMA
+ŽESTIĆ ŠTEFANIJA
+ŽIŽA NADA
+ŽIŽAKIĆ SAVA
+ŽIŽAKOV DRAGOLJUB
+ŽIŽAKOV KATICA
+ŽIŽAKOV MILOŠ
+ŽIŽAKOV PAVLE
+ŽIŽAKOV VELINKA
+ŽIŽAKOV VITOMIR
+ŽIŽAKOV VLADA
+ŽIŽAKOV VLADIMIR
+ŽIŽIĆ ČEDOMIR
+ŽIŽIĆ ANĐELIJA
+ŽIŽIĆ BRANISLAV
+ŽIŽIĆ DRAGAN
+ŽIŽIĆ MILORAD
+ŽIŽIĆ VESELIN
+ŽIŽOVIĆ SLOBODANKA
+ŽIBREG ALEKSANDAR
+ŽIBREG IVANA
+ŽIDEK JOSIP
+ŽIDIŠIĆ ZORAN
+ŽIGA JELENA
+ŽIGA KARLO
+ŽIGA MIRKO
+ŽIGA MUSTAFA
+ŽIGALAC VERONA
+ŽIGIĆ BOGDAN
+ŽIGIĆ BRANKO
+ŽIGIĆ DANICA
+ŽIGIĆ DIMITRIJE
+ŽIGIĆ DUŠAN
+ŽIGIĆ JULIJA
+ŽIGIĆ LJUBIŠA
+ŽIGIĆ MILAN
+ŽIGIĆ MILAN
+ŽIGIĆ MILAN
+ŽIGIĆ MILEVA
+ŽIGIĆ MILKA
+ŽIGIĆ MIRKO
+ŽIGIĆ NEDELJKO
+ŽIGIĆ NIKOLA
+ŽIGIĆ PETAR
+ŽIGIĆ PETAR
+ŽIGIĆ PETAR
+ŽIGIĆ RADE
+ŽIGIĆ RADOSLAV
+ŽIGIĆ SAVKA
+ŽIGIĆ VOJIN
+ŽIGMOND BELA
+ŽIGMOND BRANKA
+ŽIGRAI ĐORĐE
+ŽIGRAI IŠTVAN MR
+ŽIGRAI JOVAN
+ŽIGRI JOSIP
+ŽIGRI LJUBICA
+ŽIGRI MIRKO
+ŽIGURSKI PAVLE
+ŽIHA MARIJA
+ŽIHLAVSKI JULKA
+ŽIJIĆ VUKOSAVA
+ŽIKIĆ ĐORĐE
+ŽIKIĆ ĐORĐE
+ŽIKIĆ ĐORĐE
+ŽIKIĆ ALEKSANDAR
+ŽIKIĆ DIMITRIJE
+ŽIKIĆ DOBRILA
+ŽIKIĆ DRAGAN
+ŽIKIĆ DUŠAN
+ŽIKIĆ JOVANKA
+ŽIKIĆ JOVAN
+ŽIKIĆ JOVAN
+ŽIKIĆ KATICA
+ŽIKIĆ LJUBICA
+ŽIKIĆ MARICA
+ŽIKIĆ MARIJA
+ŽIKIĆ MIHAJLO
+ŽIKIĆ MILAN
+ŽIKIĆ MILORAD DR
+ŽIKIĆ NEVENA
+ŽIKIĆ NIKOLA
+ŽIKIĆ NIKOLA
+ŽIKIĆ OLGA
+ŽIKIĆ OLIVERA
+ŽIKIĆ RADIVOJ
+ŽIKIĆ RADOMIR
+ŽIKIĆ SLOBODAN
+ŽIKIĆ SOFIJA
+ŽIKIĆ TAMARA
+ŽIKIĆ TIHOMIR DIPL ING
+ŽIKIĆ TODOR
+ŽIKIĆ VASA
+ŽIKIĆ-VASIĆ TAMARA
+ŽIKIĆ VELIMIR
+ŽIKIĆ VERA
+ŽIKIĆ VERICA
+ŽIKIĆ VITOMIR
+ŽIKIĆ VLADIMIR
+ŽIKOVIĆ NENAD
+ŽILEVSKI KRSTO
+ŽILIĆ MILENKO
+ŽILIĆ MIROSLAV
+ŽILIĆ STOJAN
+ŽILNIK ĐURA
+ŽILNIK ĐURA
+ŽILNIK PAVLE DIPL ING
+ŽILNIK-PETROVIĆ ŽELIMIR
+ŽINIĆ MARINA
+ŽIRAVAC STEVAN
+ŽIRKA PAVEL
+ŽIROŠ MIRON
+ŽIROVNIK ANTON
+ŽIVČIĆ SVETLANA
+ŽIVALJEVIĆ DRAGOMIR
+ŽIVALJEVIĆ GORAN
+ŽIVALJEVIĆ OLGA
+ŽIVALJEVIĆ STANA
+ŽIVANČEV ILIJA
+ŽIVANČEV JOVAN
+ŽIVANČEV KASA DIPL ING
+ŽIVANČEV MIKA
+ŽIVANČEV MILAN
+ŽIVANČEV MILAN
+ŽIVANČEV PAJA
+ŽIVANČEV RADA
+ŽIVANČEV RANKO
+ŽIVANČEV STEVAN
+ŽIVANČEV STRAHINJA
+ŽIVANČEVIĆ LAZAR
+ŽIVANČEVIĆ MILJKO
+ŽIVANČEVIĆ MILORAD DR
+ŽIVANČEVIĆ SLOBODAN
+ŽIVANČEVIĆ VELIMIR
+ŽIVANAC DEJAN
+ŽIVANAC DEJAN
+ŽIVANAC LAZAR
+ŽIVANAC ZORICA
+ŽIVANIĆ ĐOKA
+ŽIVANIĆ MIHAJLO
+ŽIVANIĆ MILAN
+ŽIVANIĆ MILORAD
+ŽIVANIĆ MITAR
+ŽIVANIĆ PREDRAG
+ŽIVANIĆ VLADIMIR
+ŽIVANIĆ ZORAN
+ŽIVANKIĆ EVICA
+ŽIVANKOV IGNJAT
+ŽIVANOV ŽARKO
+ŽIVANOV ŽIVAN
+ŽIVANOV ŽIVKO
+ŽIVANOV ANĐELIJA
+ŽIVANOV BOGOLJUB
+ŽIVANOV BRANKO
+ŽIVANOV DANICA
+ŽIVANOV DIMITRIJE
+ŽIVANOV DOBRILA
+ŽIVANOV DOBRIVOJ
+ŽIVANOV DRAGOJLA
+ŽIVANOV DRAGOSLAV
+ŽIVANOV DRAGOSLAV
+ŽIVANOV DUŠAN
+ŽIVANOV GOROSLAVA
+ŽIVANOV JUSTINA
+ŽIVANOV LAZAR
+ŽIVANOV LAZAR
+ŽIVANOV LEPOSAVA
+ŽIVANOV LJUBICA
+ŽIVANOV MAGDA
+ŽIVANOV MAKSIN
+ŽIVANOV MARIJA
+ŽIVANOV MARIJA
+ŽIVANOV MARIJA
+ŽIVANOV MARIJA
+ŽIVANOV MILAN
+ŽIVANOV MILETA
+ŽIVANOV MILIVOJ
+ŽIVANOV MILOŠ
+ŽIVANOV MILOŠ
+ŽIVANOV MILORAD
+ŽIVANOV MIODRAG
+ŽIVANOV MIOMIR
+ŽIVANOV MITA
+ŽIVANOV MLADEN
+ŽIVANOV MLADEN
+ŽIVANOV MLADEN
+ŽIVANOV MOMIR
+ŽIVANOV NATAŠA
+ŽIVANOV NIKOLA
+ŽIVANOV PAVICA
+ŽIVANOV PAVLE
+ŽIVANOV PAVLE
+ŽIVANOV PAVLE
+ŽIVANOV PAVLE
+ŽIVANOV RADIŠA
+ŽIVANOV RAJKO
+ŽIVANOV SAVA
+ŽIVANOV SLAVKO
+ŽIVANOV SRĐAN
+ŽIVANOV SRBISLAV
+ŽIVANOV STANISLAV
+ŽIVANOV SVETOZAR
+ŽIVANOV TODOR
+ŽIVANOV TOMISLAV
+ŽIVANOV TUGOMIR
+ŽIVANOV VELIMIR
+ŽIVANOV VLADIMIR
+ŽIVANOV VLADIMIR
+ŽIVANOV VOJISLAV
+ŽIVANOV ZLATINKA
+ŽIVANOVIĆ ŽARKO
+ŽIVANOVIĆ ŽIKA
+ŽIVANOVIĆ ŽIVAN
+ŽIVANOVIĆ ŽIVOJIN DIPL PRAVNIK
+ŽIVANOVIĆ ŽIVOJIN
+ŽIVANOVIĆ ĐORĐE
+ŽIVANOVIĆ ALEKSANDAR
+ŽIVANOVIĆ ALEKSANDAR
+ŽIVANOVIĆ ALEKSIJA
+ŽIVANOVIĆ ANKICA
+ŽIVANOVIĆ BOŠKO
+ŽIVANOVIĆ BOŠKO
+ŽIVANOVIĆ BOGDAN
+ŽIVANOVIĆ BORKA
+ŽIVANOVIĆ BUDIMKA
+ŽIVANOVIĆ DRAGIŠA
+ŽIVANOVIĆ DRAGOLJUB
+ŽIVANOVIĆ DRAGOSLAV
+ŽIVANOVIĆ JADRANKA
+ŽIVANOVIĆ JELENA
+ŽIVANOVIĆ JOVAN
+ŽIVANOVIĆ JOVAN
+ŽIVANOVIĆ LAZAR
+ŽIVANOVIĆ-LEŠ DUŠICA
+ŽIVANOVIĆ LJILJANA
+ŽIVANOVIĆ MARICA
+ŽIVANOVIĆ MARIJA
+ŽIVANOVIĆ MILAN
+ŽIVANOVIĆ MILISAV
+ŽIVANOVIĆ MILIVOJ
+ŽIVANOVIĆ MILOŠ
+ŽIVANOVIĆ MILORAD
+ŽIVANOVIĆ MILOVAN
+ŽIVANOVIĆ MIODRAG DR
+ŽIVANOVIĆ MIODRAG
+ŽIVANOVIĆ MIRJANA
+ŽIVANOVIĆ MOMČILO
+ŽIVANOVIĆ NOVICA
+ŽIVANOVIĆ OBRAD
+ŽIVANOVIĆ PETAR
+ŽIVANOVIĆ PETAR
+ŽIVANOVIĆ PETAR
+ŽIVANOVIĆ RADA
+ŽIVANOVIĆ RADMILA
+ŽIVANOVIĆ SLAVKA
+ŽIVANOVIĆ SLAVKO
+ŽIVANOVIĆ STEVAN
+ŽIVANOVIĆ TOMISLAV
+ŽIVANOVIĆ VIDOJE
+ŽIVANOVIĆ VLADIMIR
+ŽIVANOVIĆ VLADISLAV
+ŽIVANOVIĆ VOJISLAV
+ŽIVANOVIĆ ZORAN
+ŽIVANOVIĆ ZORAN
+ŽIVANOVIĆ ZORKA
+ŽIVIĆ ĐORĐE
+ŽIVIĆ ĐORĐE
+ŽIVIĆ BOŽIDAR
+ŽIVIĆ GAVRA
+ŽIVIĆ JEFTA
+ŽIVIĆ JELICA
+ŽIVIĆ JOVAN
+ŽIVIĆ LAZAR
+ŽIVIĆ LJUBICA
+ŽIVIĆ RADOJICA
+ŽIVIĆ SAVA
+ŽIVIĆ SAVA
+ŽIVIĆ SMILJA
+ŽIVIĆ SPASOJE
+ŽIVIĆ VELIBOR
+ŽIVIĆ VINKA DR
+ŽIVIĆ ZORKA
+ŽIVIN NADA
+ŽIVKANOVIĆ JOVAN
+ŽIVKIĆ STEVAN
+ŽIVKOV ĐORĐE
+ŽIVKOV ANĐELKA
+ŽIVKOV ANĐELKA
+ŽIVKOV BORISLAVA
+ŽIVKOV BRANISLAV
+ŽIVKOV DRAGINJA
+ŽIVKOV DRAGOLJUB
+ŽIVKOV DUŠKO
+ŽIVKOV ESTER
+ŽIVKOV GRADIMIR
+ŽIVKOV IVAN
+ŽIVKOV KOSTA
+ŽIVKOV MARKO
+ŽIVKOV MELANIJA
+ŽIVKOV NENAD
+ŽIVKOV PAVLE
+ŽIVKOV RADOJKA
+ŽIVKOV SAVA
+ŽIVKOV SAVA
+ŽIVKOV SLAVKO
+ŽIVKOV SLAVKO
+ŽIVKOV VASA
+ŽIVKOVIĆ ČASLAV
+ŽIVKOVIĆ ŽAKLINA
+ŽIVKOVIĆ ŽIVKA
+ŽIVKOVIĆ ŽIVOJIN
+ŽIVKOVIĆ ĐOKA
+ŽIVKOVIĆ ĐORĐE
+ŽIVKOVIĆ ĐORĐE
+ŽIVKOVIĆ AJKA
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALEKSANDAR
+ŽIVKOVIĆ ALOJZIJA
+ŽIVKOVIĆ ANĐELKA
+ŽIVKOVIĆ BLAŠKO
+ŽIVKOVIĆ BOGDAN
+ŽIVKOVIĆ BOGDAN
+ŽIVKOVIĆ BOGOLJUB
+ŽIVKOVIĆ BOGOMIR
+ŽIVKOVIĆ BOGOMIR
+ŽIVKOVIĆ BORISLAV
+ŽIVKOVIĆ BORISLAV
+ŽIVKOVIĆ BORO
+ŽIVKOVIĆ BRANISLAV
+ŽIVKOVIĆ BRANISLAV
+ŽIVKOVIĆ BRANISLAV
+ŽIVKOVIĆ BRANKA DR
+ŽIVKOVIĆ BRANKO
+ŽIVKOVIĆ DANILO
+ŽIVKOVIĆ DEJAN
+ŽIVKOVIĆ DIMITRIJE
+ŽIVKOVIĆ DIMITRIJE
+ŽIVKOVIĆ DOBROSAV
+ŽIVKOVIĆ DRAGANA
+ŽIVKOVIĆ DRAGANA
+ŽIVKOVIĆ DRAGAN
+ŽIVKOVIĆ DRAGAN
+ŽIVKOVIĆ DRAGAN
+ŽIVKOVIĆ DRAGAN
+ŽIVKOVIĆ DRAGIŠA DR
+ŽIVKOVIĆ DRAGIŠA
+ŽIVKOVIĆ DRAGIĆ
+ŽIVKOVIĆ DRAGOLJUB
+ŽIVKOVIĆ DUŠANKA
+ŽIVKOVIĆ DUŠAN
+ŽIVKOVIĆ DUŠAN
+ŽIVKOVIĆ DUŠAN
+ŽIVKOVIĆ DUŠICA
+ŽIVKOVIĆ GABRIJELA
+ŽIVKOVIĆ GABRIJELA
+ŽIVKOVIĆ GORAN
+ŽIVKOVIĆ GORDANA
+ŽIVKOVIĆ ILIJA
+ŽIVKOVIĆ ILIJA
+ŽIVKOVIĆ ILONKA
+ŽIVKOVIĆ IVANKA
+ŽIVKOVIĆ IVICA
+ŽIVKOVIĆ JASMINA
+ŽIVKOVIĆ JELICA
+ŽIVKOVIĆ JELICA
+ŽIVKOVIĆ JOVAN
+ŽIVKOVIĆ JOVAN
+ŽIVKOVIĆ JOVICA
+ŽIVKOVIĆ JULKA
+ŽIVKOVIĆ JULKA
+ŽIVKOVIĆ JULKICA
+ŽIVKOVIĆ KOSTA
+ŽIVKOVIĆ KREŠO
+ŽIVKOVIĆ LAZAR
+ŽIVKOVIĆ LAZAR
+ŽIVKOVIĆ LEPOSAVA
+ŽIVKOVIĆ LJILJANA
+ŽIVKOVIĆ LJUBICA
+ŽIVKOVIĆ LJUBINKA
+ŽIVKOVIĆ LJUBOMIR
+ŽIVKOVIĆ LJUBOMIR
+ŽIVKOVIĆ MARIJA
+ŽIVKOVIĆ MIHAJLO
+ŽIVKOVIĆ MILANKA
+ŽIVKOVIĆ MILAN
+ŽIVKOVIĆ MILICA
+ŽIVKOVIĆ MILIVOJ
+ŽIVKOVIĆ MILKA
+ŽIVKOVIĆ MILKA
+ŽIVKOVIĆ MILOŠ
+ŽIVKOVIĆ MILOŠ
+ŽIVKOVIĆ MILOMIR
+ŽIVKOVIĆ MILORAD
+ŽIVKOVIĆ MILORAD
+ŽIVKOVIĆ MILUTIN
+ŽIVKOVIĆ MIODRAG
+ŽIVKOVIĆ MIRČETA
+ŽIVKOVIĆ MIRJANA
+ŽIVKOVIĆ MIRKO
+ŽIVKOVIĆ MIROSLAV
+ŽIVKOVIĆ MIROSLAV
+ŽIVKOVIĆ MOMČILO
+ŽIVKOVIĆ NEBOJŠA
+ŽIVKOVIĆ NEBOJŠA
+ŽIVKOVIĆ NEDELJKO
+ŽIVKOVIĆ NIKOLA
+ŽIVKOVIĆ OBRAD
+ŽIVKOVIĆ PAVLE
+ŽIVKOVIĆ PETAR
+ŽIVKOVIĆ PETAR
+ŽIVKOVIĆ PETAR
+ŽIVKOVIĆ PETAR
+ŽIVKOVIĆ RADENKO
+ŽIVKOVIĆ RADE
+ŽIVKOVIĆ RADIVOJ
+ŽIVKOVIĆ RADMILA
+ŽIVKOVIĆ RADMILO
+ŽIVKOVIĆ RADOMIR
+ŽIVKOVIĆ RADOSLAVA
+ŽIVKOVIĆ RADOSLAV
+ŽIVKOVIĆ RADOSLAV
+ŽIVKOVIĆ RADOSLAV
+ŽIVKOVIĆ ROSA
+ŽIVKOVIĆ RUŽICA
+ŽIVKOVIĆ SAŠA
+ŽIVKOVIĆ SAVA
+ŽIVKOVIĆ SAVA
+ŽIVKOVIĆ SAVA
+ŽIVKOVIĆ SAVA
+ŽIVKOVIĆ SINIŠA
+ŽIVKOVIĆ SLAVKO
+ŽIVKOVIĆ SLAVKO
+ŽIVKOVIĆ SLAVKO
+ŽIVKOVIĆ SLOBODAN DR
+ŽIVKOVIĆ SLOBODAN
+ŽIVKOVIĆ SMILJKA
+ŽIVKOVIĆ SNEŽANA
+ŽIVKOVIĆ SRETEN
+ŽIVKOVIĆ STAMENKO
+ŽIVKOVIĆ STEPAN
+ŽIVKOVIĆ STEVAN
+ŽIVKOVIĆ STOJANKA
+ŽIVKOVIĆ STOJAN
+ŽIVKOVIĆ STOJAN
+ŽIVKOVIĆ SVETISLAV
+ŽIVKOVIĆ SVETLANA
+ŽIVKOVIĆ SVETOZAR
+ŽIVKOVIĆ TANASIJE
+ŽIVKOVIĆ TINKA
+ŽIVKOVIĆ TOŠA
+ŽIVKOVIĆ TOMISLAV
+ŽIVKOVIĆ TOMISLAV
+ŽIVKOVIĆ VEKOSLAV
+ŽIVKOVIĆ VERA
+ŽIVKOVIĆ VERA
+ŽIVKOVIĆ VIDOJKO
+ŽIVKOVIĆ VLADAN
+ŽIVKOVIĆ VLADIMIR
+ŽIVKOVIĆ VLASTIMIR
+ŽIVKOVIĆ VOJIN
+ŽIVKOVIĆ VOJISLAV
+ŽIVKOVIĆ ZDENKA
+ŽIVKOVIĆ ZDENKO
+ŽIVKOVIĆ ZDRAVKO
+ŽIVKOVIĆ ZLATOMIR
+ŽIVKOVIĆ ZORAN
+ŽIVKOVIĆ ZORAN
+ŽIVKOVIĆ ZORAN
+ŽIVKOVIĆ ZORAN
+ŽIVKOVIĆ ZORAN
+ŽIVKOVLJEVIĆ VIDOSAVA
+ŽIVKUCIN MIROSLAVA
+ŽIVKUCIN SLOBODAN
+ŽIVNI ANA
+ŽIVNI FRANJA
+ŽIVOJINOV BORIVOJ
+ŽIVOJINOV LJUBICA
+ŽIVOJINOV MILOVAN
+ŽIVOJINOV RADIVOJ
+ŽIVOJINOVIĆ ROZALIJA
+ŽIVOJINOVIĆ VLADIMIR
+ŽIVOJNOV BRANISLAV
+ŽIVOJNOV MIROSLAV
+ŽIVOJNOVIĆ ŽIVOJIN
+ŽIVOJNOVIĆ SANJA
+ŽIVOJNOVIĆ SRĐAN DR LEKAR
+ŽIVOJNOVIĆ ZORKA
+ŽIVOTIĆ ANGELINA
+ŽIVOTIĆ DUŠAN
+ŽIVOTIĆ STANISLAV
+ŽIVOTIĆ STEVAN
+ŽIVOTIĆ VELIMIR
+ŽIVOTIN MARICA
+ŽIVOTIN MITAR
+ŽMUKIĆ BRANKO
+ŽMUKIĆ GORDANA
+ŽMUKIĆ NIKOLA
+ŽNIDARŠIĆ IGNAC
+ŽNIDAREC IVAN
+ŽNIDAREC IVAN
+ŽOLCER FERENC
+ŽOLCER VILMOŠ
+ŽOLJOM KLARA
+ŽOLJOM MIRJANA
+ŽORŽ ALEKSANDAR
+ŽORIĆ FILIP
+ŽUŽA MIRKO
+ŽUBORI MILENA
+ŽUGIĆ DRAGOLJUB
+ŽUGIĆ KRSTO
+ŽUGIĆ MARIJA
+ŽUGIĆ MILIJA
+ŽUGIĆ MILISAV
+ŽUGIĆ MILORAD
+ŽUGIĆ MIRKO
+ŽUGIĆ RADOJKA
+ŽUGIĆ RATKO
+ŽUGIĆ-RIJAVEC SILVIJA
+ŽUGIĆ STANIŠA
+ŽUGIĆ STANKO
+ŽUJIĆ MOMIR
+ŽUJIĆ SLAVKO
+ŽUJO MARJAN
+ŽUMBERKOVIĆ ĐORĐE MR
+ŽUNAC JULKA
+ŽUNAC TOMISLAV
+ŽUNGUL SMILJA
+ŽUNIĆ BOŠKO
+ŽUNIĆ DARKO
+ŽUNIĆ JOVIŠA
+ŽUNIĆ MILAN
+ŽUNIĆ MILENKO
+ŽUNIĆ MILIJAN
+ŽUNIĆ MOMČILO
+ŽUNIĆ NENAD
+ŽUNIĆ-POPOV SNEŽANA
+ŽUNIĆ RADA
+ŽUNIĆ SIMA
+ŽUNIĆ SONJA
+ŽUNIĆ VELIMIR
+ŽUNJIĆ DRAGOMIR
+ŽUNTER ANTUN DIPL ING
+ŽUNTER BOŽANA
+ŽUPAN EDUARD
+ŽUPAN MIRKO
+ŽUPANČIĆ MARGARETA
+ŽUPANEC ALBERT DR
+ŽUPANEC KSENIJA
+ŽUPANEC MIRA
+ŽUPANEC MIRA
+ŽUPARIĆ VIKTOR
+ŽUPIĆ ANTE
+ŽUPIĆ DANE
+ŽUPIĆ DRAGICA
+ŽUPIĆ MIJO
+ŽUPUNSKI ŽARKO
+ŽUPUNSKI ŽIVORAD
+ŽUPUNSKI GOJKO
+ŽUPUNSKI GROZDANA
+ŽUPUNSKI GRUJICA
+ŽUPUNSKI HELENA
+ŽUPUNSKI IVAN
+ŽUPUNSKI MARINKO
+ŽUPUNSKI STEVAN
+ŽUPUNSKI VESELINKA
+ŽURŽEVIĆ CVETKO
+ŽURŽINOVIĆ KOSTA
+ŽURŽOVAN LIA
+ŽURŽOVAN NELU
+ŽURŽOVAN TRANDAFIR
+ŽURŽUL BOŠKO
+ŽURŽUL STANOJE
+ŽURIĆ MIHAILO
+ŽURIĆ VASO
+ŽURKA AURORA
+ŽUTIĆ MILKA
+ŽUTIĆ PETAR
+ŽUTIĆ STEVO
+ĐAČANIN RADOVAN
+ĐAČIĆ VLADIMIR
+ĐAIĆ MIROSLAV
+ĐAJIĆ ŽARKO
+ĐAJIĆ ŽELJKO
+ĐAJIĆ ALEKSANDRA
+ĐAJIĆ BOGDAN
+ĐAJIĆ JELENKO
+ĐAJIĆ-JOVANOVIĆ RAJKA
+ĐAJIĆ MILORAD
+ĐAJIĆ NADA
+ĐAJIĆ NEVENA
+ĐAJIĆ NIKOLA
+ĐAJIĆ VELJKO
+ĐAJIĆ VLADISLAVA
+ĐAKONOV MILKA
+ĐAKONOV STEVAN
+ĐAKONOVIĆ MILOVAN
+ĐAKONOVIĆ SLAVICA
+ĐAKONOVIĆ STEVAN
+ĐAKOV LJILJANA
+ĐAKOV MIHAJLO
+ĐAKOV MILAN
+ĐAKOVIĆ ŽIVKA
+ĐAKOVIĆ ĐORĐE DR
+ĐAKOVIĆ ĐORĐE
+ĐAKOVIĆ ĐORĐE
+ĐAKOVIĆ ĐURA
+ĐAKOVIĆ ĐURO
+ĐAKOVIĆ ĐURO
+ĐAKOVIĆ ANKA
+ĐAKOVIĆ DARA
+ĐAKOVIĆ DRAGAN
+ĐAKOVIĆ DRAGAN
+ĐAKOVIĆ DRAGOLJUB DR
+ĐAKOVIĆ DRAGOLJUB
+ĐAKOVIĆ DUŠAN
+ĐAKOVIĆ ILE
+ĐAKOVIĆ ILIJA
+ĐAKOVIĆ JOKA
+ĐAKOVIĆ JOVANKA
+ĐAKOVIĆ JOVAN
+ĐAKOVIĆ JOVICA
+ĐAKOVIĆ JOVO
+ĐAKOVIĆ LJUBOMIR DR ING
+ĐAKOVIĆ LJUBOMIR
+ĐAKOVIĆ MARIJA
+ĐAKOVIĆ MILAN
+ĐAKOVIĆ MILAN
+ĐAKOVIĆ MILAN
+ĐAKOVIĆ MILKA
+ĐAKOVIĆ MIRJANA
+ĐAKOVIĆ MIRJANA
+ĐAKOVIĆ NEĐO
+ĐAKOVIĆ NEDELJKO
+ĐAKOVIĆ NIKOLA
+ĐAKOVIĆ OSTOJA
+ĐAKOVIĆ PERSIDA
+ĐAKOVIĆ PETAR
+ĐAKOVIĆ PREDRAG
+ĐAKOVIĆ PREDRAG
+ĐAKOVIĆ RADOMIR
+ĐAKOVIĆ RADOSAV
+ĐAKOVIĆ RANKO
+ĐAKOVIĆ SAVA
+ĐAKOVIĆ SLAVICA
+ĐAKOVIĆ SLAVOLJUB
+ĐAKOVIĆ SLOBODAN
+ĐAKOVIĆ STEVAN
+ĐAKOVIĆ STEVAN
+ĐAKOVIĆ STOJAN
+ĐAKOVIĆ TATJANA
+ĐAKOVIĆ VASO
+ĐAKOVIĆ VLADIMIR
+ĐAKOVIĆ VOJO
+ĐAKOVIĆ VUKOSAVA
+ĐAKOVIĆ ZORAN
+ĐALAI LAJOŠ
+ĐALINAC GORDANA
+ĐALINAC RADIVOJ
+ĐALO MIRKO
+ĐALOVIĆ RADOSLAV
+ĐALUŠ STEVAN
+ĐAN JOVAN
+ĐANIŠ LAZAR
+ĐANIŠ OLIVERA
+ĐANIĆ MATO
+ĐANKOVIĆ MILOŠ
+ĐANTAR ANĐELIJA
+ĐANTAR JOŽEF
+ĐAPA ALEKSANDAR
+ĐAPA DUŠAN
+ĐAPA MARKO
+ĐAPA PETAR
+ĐAPIĆ DAVID
+ĐAPIĆ KRSTA
+ĐAPIĆ MILESA
+ĐAPIĆ MILESA
+ĐAPIĆ-MILIĆ TATJANA LEKAR
+ĐAPIĆ PAVLE
+ĐARMATI FRANJA
+ĐARMATI GIZELA
+ĐARMATI ILONA
+ĐARMATI JULIO
+ĐARMATI LASLO
+ĐARMATI MIHAJLO
+ĐARMATI SNEŽANA
+ĐATKOV RADA
+ĐEBNAR OBRAD
+ĐEKER ROZALIJA
+ĐEKIĆ ŽIVOJIN
+ĐEKIĆ KATICA
+ĐEKIĆ MILAN
+ĐEKIĆ MILENA
+ĐEKIĆ MILOMIR
+ĐEKIĆ NADA
+ĐEKIĆ NEDELJKO
+ĐEKIĆ PAVLE
+ĐEKIĆ RADE
+ĐEKIĆ RADMILA
+ĐEKIĆ STANA
+ĐEKIĆ STOJANKA
+ĐELIĆ UROŠ
+ĐEMBER IŠTVAN
+ĐEMROVSKI TOMAŠ
+ĐEMROVSKI VLATKO
+ĐEMROVSKI ZDENKO
+ĐENADIĆ DRAGIŠA
+ĐENADIJA PETAR
+ĐENDIĆ JOVAN DIPL ING
+ĐENDIĆ LAZAR
+ĐENEŠ PETAR
+ĐENGE ANDRAŠ
+ĐENGE ANDRIJA
+ĐENGE PETER
+ĐENIĆ JELENA
+ĐENIĆ SLOBODAN
+ĐENIĆ SLOBODAN
+ĐENIĆ ZORICA
+ĐENISIĆ STANIMIR
+ĐERĐ ĐURA
+ĐERĐ ANTUN
+ĐERĐ IGOR
+ĐERĐ JOSIP
+ĐERĐ KATARINA
+ĐERĐ LJUBICA
+ĐERĐ PETAR
+ĐERĐ VILMOŠ
+ĐERE KORNEL
+ĐERE ZOLTAN
+ĐERFI ALEKSANDAR
+ĐERI ŠANDOR
+ĐERI ENDRE
+ĐERI ERŽEBET
+ĐERI GEZA
+ĐERI KAROLJ
+ĐERI LADISLAV
+ĐERI LASLO
+ĐERI SABOLČ
+ĐERI SALOME
+ĐERIĆ ŽIVAN
+ĐERIĆ ĐORĐE
+ĐERIĆ ĐURA
+ĐERIĆ BRANKO
+ĐERIĆ DANICA
+ĐERIĆ DESANKA
+ĐERIĆ DIMITRIJE
+ĐERIĆ DOBRINKO
+ĐERIĆ DRAGAN
+ĐERIĆ FELIKS
+ĐERIĆ JAROSLAV
+ĐERIĆ JOVAN
+ĐERIĆ JOVAN
+ĐERIĆ JULKA
+ĐERIĆ MICA
+ĐERIĆ MIHAJLO
+ĐERIĆ MILAN
+ĐERIĆ MILENKO
+ĐERIĆ MILE
+ĐERIĆ MILIVOJE
+ĐERIĆ MILOŠ
+ĐERIĆ MIODRAG
+ĐERIĆ MIRJANA
+ĐERIĆ NADA
+ĐERIĆ OLGA
+ĐERIĆ OLIVERA
+ĐERIĆ PETAR
+ĐERIĆ RADE
+ĐERIĆ RADIVOJ
+ĐERIĆ RADOMIR
+ĐERIĆ RADOSLAV
+ĐERIĆ RADOVAN
+ĐERIĆ SLAVKO
+ĐERIĆ STANISLAV
+ĐERIĆ VELJKO
+ĐERIĆ VOJIN
+ĐERKI VERA
+ĐERKOVIĆ MIRČETA
+ĐERKOVIĆ RADOJKA
+ĐERKOVIĆ VLADETA
+ĐERMAN ŽIVKO
+ĐERMAN NEDELJKO
+ĐERMANOV IVAN
+ĐERMANOV LJUBOMIR
+ĐERMANOV MILAN
+ĐERMANOV MILENA
+ĐERMANOV NADEŽDA
+ĐERMANOV OLGA
+ĐERMANOV PETAR
+ĐERMANOV TODOR
+ĐERMANOV VLADA
+ĐERMANOVIĆ JELICA
+ĐERMANOVIĆ MARIJA
+ĐERMANOVIĆ MILODANKA
+ĐERMANOVIĆ SLAVKO
+ĐERMANOVIĆ STANKO
+ĐERMATI IRENA
+ĐETKA JANO
+ĐETKA MIHAL
+ĐETKA MIHAL
+ĐETKA MIRKO
+ĐETVAI ANDRAŠ DIPL ING
+ĐETVAI ANDRAŠ
+ĐETVAI ANICA
+ĐETVAI FERENC
+ĐETVAI IMRE
+ĐETVAI LAJOŠ
+ĐEVEKI JOVAN
+ĐIDIĆ MARIJA
+ĐIDIĆ MARINKO
+ĐIKIĆ STOJAN
+ĐIKIĆ VIKTORIJA
+ĐILAS BORO
+ĐILAS DRAGAN
+ĐILAS DUŠAN
+ĐILAS GROZDANA
+ĐILAS MARINKO
+ĐILAS MILORAD
+ĐILAS MILORAD
+ĐILAS MILORAD
+ĐILAS NIKOLA
+ĐILAS STEVAN
+ĐILVESI ŠANDOR
+ĐILVESI KARLO
+ĐIN ĐURA
+ĐIN JULIJANA
+ĐINĐIĆ MILOJKO
+ĐINIĆ IVICA
+ĐINIĆ NIKOLA
+ĐINIĆ SLAVKA
+ĐINIĆ SOFIJA
+ĐINIĆ VLADETA
+ĐINIĆ ZORAN
+ĐINJA ANDREJ
+ĐINOVIĆ CVETKO
+ĐINOVIĆ IVKO
+ĐINOVIĆ KOLE
+ĐIPALO ĐURO
+ĐIPALO GOJKO
+ĐIPALO MILAN
+ĐIPALO MIRKO
+ĐIPALO MIROSLAV
+ĐIPALO RADE
+ĐIPANOV IDA
+ĐIPANOV NIKOLA
+ĐIPANOV RELJA
+ĐIPANOV SVETOZAR
+ĐIRIŠI IŠTVAN
+ĐIRLIĆ STEVAN
+ĐISALOV BRANISLAV
+ĐISALOV JELENA
+ĐISALOV JELENA
+ĐISALOV LAZAR
+ĐISALOV LJUBINKA
+ĐISALOV MILAN
+ĐISALOV MILAN
+ĐISALOV MILIVOJ
+ĐISALOV MILIVOJ
+ĐISALOV MIODRAG
+ĐISALOV MIODRAG
+ĐISALOV NADA
+ĐISALOV SONJA
+ĐISALOVIĆ KATICA
+ĐITKOV JOVAN
+ĐITKOV SOFIJA
+ĐJAK ŽIVKO
+ĐOĐIĆ MILORAD
+ĐOGO MILOVAN
+ĐOGO MIRJANA
+ĐOGO RUŽICA
+ĐOGO ZORAN
+ĐOGOVIĆ MILORAD
+ĐOGOVIĆ RADIVOJKA
+ĐOKIĆ ALEKSANDAR
+ĐOKIĆ BOŠKO
+ĐOKIĆ BORIVOJE
+ĐOKIĆ BRATISLAV
+ĐOKIĆ CVETKO
+ĐOKIĆ DARINKA
+ĐOKIĆ DRAGAN
+ĐOKIĆ DRAGIŠA
+ĐOKIĆ DRAGOLJUB
+ĐOKIĆ DRAGO
+ĐOKIĆ GORAN
+ĐOKIĆ IVAN
+ĐOKIĆ JELISAVA
+ĐOKIĆ JORDAN
+ĐOKIĆ LJUBINKO
+ĐOKIĆ LJUBO
+ĐOKIĆ LUKA
+ĐOKIĆ MARINKO
+ĐOKIĆ MATILDA
+ĐOKIĆ MIHAJLO
+ĐOKIĆ MILAN
+ĐOKIĆ MILAN
+ĐOKIĆ MILISAV
+ĐOKIĆ MILIVOJE
+ĐOKIĆ MILOVAN
+ĐOKIĆ MILUTIN
+ĐOKIĆ PANTELIJA
+ĐOKIĆ PETAR
+ĐOKIĆ RADISAV
+ĐOKIĆ RADOVAN
+ĐOKIĆ RATKO
+ĐOKIĆ RUŽA
+ĐOKIĆ SLOBODANKA
+ĐOKIĆ SLOBODAN
+ĐOKIĆ SOFIJA
+ĐOKIĆ STANIŠA
+ĐOKIĆ SVETISLAV
+ĐOKIĆ VERA
+ĐOKIĆ VLADISLAV
+ĐOKIĆ VOJISLAV
+ĐOKIĆ VUJADIN
+ĐOKIĆ VUKADIN
+ĐOKIĆ ZORAN
+ĐOKOVIĆ DRAGOMIR
+ĐOKOVIĆ MARKO
+ĐOKOVIĆ MILAN
+ĐOKOVIĆ MILOVAN
+ĐOKOVIĆ PETAR
+ĐOKOVIĆ RADOMIR
+ĐOKOVIĆ RADOVAN
+ĐOKOVIĆ STOJAN
+ĐOKVUČIĆ NADA
+ĐOLAI IMRE
+ĐOLAI MATILDA
+ĐOLJEVIĆ ĐOKA
+ĐOLOVIĆ ČEDOMIR
+ĐOMPARIĆ DUŠAN
+ĐOMPARIĆ ILIJA
+ĐOMPARIĆ MELANIJA
+ĐOMPARIĆ NIKOLA
+ĐOMPARIĆ NIKOLA
+ĐOMPARIĆ NIKOLA
+ĐOMPARIĆ VLADISLAVA
+ĐONOVIĆ ĐORĐIJE
+ĐONOVIĆ KAROLINA
+ĐONOVIĆ ZARIJA
+ĐORĐEVIĆ ČEDOMIR
+ĐORĐEVIĆ ŽIVKO
+ĐORĐEVIĆ ŽIVOJIN
+ĐORĐEVIĆ ŽIVOJIN
+ĐORĐEVIĆ ŽIVOJIN
+ĐORĐEVIĆ ŽIVORAD
+ĐORĐEVIĆ ŽIVORAD
+ĐORĐEVIĆ ŽIVOTA
+ĐORĐEVIĆ ĐOKA
+ĐORĐEVIĆ ĐORĐE
+ĐORĐEVIĆ ĐORĐE
+ĐORĐEVIĆ ĐURA
+ĐORĐEVIĆ ACA
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDAR
+ĐORĐEVIĆ ALEKSANDRA
+ĐORĐEVIĆ BOGDAN
+ĐORĐEVIĆ BORA
+ĐORĐEVIĆ BORISAV
+ĐORĐEVIĆ BORIVOJE
+ĐORĐEVIĆ BRANIMIR
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANISLAV
+ĐORĐEVIĆ BRANKO
+ĐORĐEVIĆ BUDIMIR
+ĐORĐEVIĆ BUDIMIR
+ĐORĐEVIĆ DARKO
+ĐORĐEVIĆ DESANKA
+ĐORĐEVIĆ DESPOT
+ĐORĐEVIĆ DIMITRIJE
+ĐORĐEVIĆ DOBRIVOJE
+ĐORĐEVIĆ DRAŽA
+ĐORĐEVIĆ DRAGANA
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGAN
+ĐORĐEVIĆ DRAGA
+ĐORĐEVIĆ DRAGIŠA
+ĐORĐEVIĆ DRAGIŠA
+ĐORĐEVIĆ DRAGIŠA
+ĐORĐEVIĆ DRAGOLJUB DR
+ĐORĐEVIĆ DRAGOLJUB
+ĐORĐEVIĆ DRAGOLJUB
+ĐORĐEVIĆ DRAGOLJUB
+ĐORĐEVIĆ DRAGOLJUB
+ĐORĐEVIĆ DRAGOSLAV
+ĐORĐEVIĆ DRAGUTIN
+ĐORĐEVIĆ DUŠANKA
+ĐORĐEVIĆ DUŠAN
+ĐORĐEVIĆ DUŠAN
+ĐORĐEVIĆ DUŠAN
+ĐORĐEVIĆ DUŠAN
+ĐORĐEVIĆ ERNEST
+ĐORĐEVIĆ EVICA
+ĐORĐEVIĆ FATIMA
+ĐORĐEVIĆ GIZELA
+ĐORĐEVIĆ GORA
+ĐORĐEVIĆ GORDANA
+ĐORĐEVIĆ GRADIMIR
+ĐORĐEVIĆ GRADIMIR
+ĐORĐEVIĆ HRANISLAV
+ĐORĐEVIĆ ILINKA
+ĐORĐEVIĆ ILONA
+ĐORĐEVIĆ IVANA
+ĐORĐEVIĆ IVAN
+ĐORĐEVIĆ JAGODA
+ĐORĐEVIĆ JELENA
+ĐORĐEVIĆ JELENA
+ĐORĐEVIĆ JELENA
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVAN
+ĐORĐEVIĆ JOVICA
+ĐORĐEVIĆ JULKICA
+ĐORĐEVIĆ JULKICA
+ĐORĐEVIĆ KATARINA
+ĐORĐEVIĆ KONSTANDINA
+ĐORĐEVIĆ KOSTA
+ĐORĐEVIĆ LAZAR
+ĐORĐEVIĆ LAZAR
+ĐORĐEVIĆ LJILJANA
+ĐORĐEVIĆ LJUBA DIPL ING
+ĐORĐEVIĆ LJUBIŠA
+ĐORĐEVIĆ LJUBIŠA
+ĐORĐEVIĆ LJUBICA
+ĐORĐEVIĆ LJUBICA
+ĐORĐEVIĆ LJUBICA
+ĐORĐEVIĆ LJUBINKA
+ĐORĐEVIĆ LJUBISAV
+ĐORĐEVIĆ LJUBOMIR
+ĐORĐEVIĆ LJUBOMIR
+ĐORĐEVIĆ MARIJA
+ĐORĐEVIĆ MARIJA
+ĐORĐEVIĆ MILANKA
+ĐORĐEVIĆ MILANKA
+ĐORĐEVIĆ MILAN
+ĐORĐEVIĆ MILAN
+ĐORĐEVIĆ MILENA
+ĐORĐEVIĆ MILENKO
+ĐORĐEVIĆ MILENKO
+ĐORĐEVIĆ MILIJA
+ĐORĐEVIĆ MILOŠ DR
+ĐORĐEVIĆ MILOŠ
+ĐORĐEVIĆ MILORAD
+ĐORĐEVIĆ MILORAD
+ĐORĐEVIĆ MILOSAV
+ĐORĐEVIĆ MILOVAN
+ĐORĐEVIĆ MILOVAN
+ĐORĐEVIĆ MILUTIN
+ĐORĐEVIĆ MIODRAG
+ĐORĐEVIĆ MIODRAG
+ĐORĐEVIĆ MIODRAG
+ĐORĐEVIĆ MIRJANA
+ĐORĐEVIĆ MIRJANA
+ĐORĐEVIĆ MIRKO
+ĐORĐEVIĆ MIRKO
+ĐORĐEVIĆ MIROSLAV
+ĐORĐEVIĆ MIROSLAV
+ĐORĐEVIĆ MIROSLAV
+ĐORĐEVIĆ MLADEN
+ĐORĐEVIĆ NADA
+ĐORĐEVIĆ NADA
+ĐORĐEVIĆ NEDELJKO DR
+ĐORĐEVIĆ NEVENKA
+ĐORĐEVIĆ NIKOLA
+ĐORĐEVIĆ PAJA
+ĐORĐEVIĆ PANTA
+ĐORĐEVIĆ PAVLE
+ĐORĐEVIĆ PAVLE
+ĐORĐEVIĆ PAVLE
+ĐORĐEVIĆ PETAR
+ĐORĐEVIĆ RADOMIR
+ĐORĐEVIĆ RADOMIR
+ĐORĐEVIĆ RADOSLAV
+ĐORĐEVIĆ RADOSLAV
+ĐORĐEVIĆ RADOSLAV
+ĐORĐEVIĆ RAJKA
+ĐORĐEVIĆ RANĐEL
+ĐORĐEVIĆ SAŠA
+ĐORĐEVIĆ SAVA
+ĐORĐEVIĆ SINIŠA
+ĐORĐEVIĆ SLAĐANA
+ĐORĐEVIĆ SLAVKO
+ĐORĐEVIĆ SLAVKO
+ĐORĐEVIĆ SLAVKO
+ĐORĐEVIĆ SLOBODAN
+ĐORĐEVIĆ SLOBODAN
+ĐORĐEVIĆ SLOBODAN
+ĐORĐEVIĆ SLOBODAN
+ĐORĐEVIĆ SNEŽANA
+ĐORĐEVIĆ SOFIJA
+ĐORĐEVIĆ SOFIJA
+ĐORĐEVIĆ SRĐAN
+ĐORĐEVIĆ SRĐAN
+ĐORĐEVIĆ SRETEN
+ĐORĐEVIĆ STANA
+ĐORĐEVIĆ STANISLAV
+ĐORĐEVIĆ STANKA
+ĐORĐEVIĆ STEVANA
+ĐORĐEVIĆ STEVAN
+ĐORĐEVIĆ STEVAN
+ĐORĐEVIĆ SVETISLAV
+ĐORĐEVIĆ SVETISLAV
+ĐORĐEVIĆ SVETOZAR
+ĐORĐEVIĆ TIOSAV
+ĐORĐEVIĆ TOMISLAV
+ĐORĐEVIĆ TOMISLAV
+ĐORĐEVIĆ VELISAV
+ĐORĐEVIĆ VELIZAR
+ĐORĐEVIĆ VERA
+ĐORĐEVIĆ VERA
+ĐORĐEVIĆ VIDOSAVA
+ĐORĐEVIĆ VLADIMIR
+ĐORĐEVIĆ VLAJKO
+ĐORĐEVIĆ VLASTIMIR
+ĐORĐEVIĆ VLASTIMIR
+ĐORĐEVIĆ VOJIN
+ĐORĐEVIĆ VUČKO
+ĐORĐEVIĆ ZORAN
+ĐORĐEVIĆ ZORAN
+ĐORĐEVIĆ ZORAN
+ĐORĐEVIĆ ZORAN
+ĐORĐIĆ BRANKO
+ĐORĐIĆ MARKO
+ĐORĐIĆ MILAN
+ĐORĐIJEVSKI DRAGAN
+ĐORĐIJEVSKI DUŠAN
+ĐORĐIJEVSKI ZORAN
+ĐORĐIN FEMKA
+ĐORĐIN RADE
+ĐORĐIN SAVA
+ĐORĐIOSKI KIRO
+ĐOREVSKI GORAN
+ĐORGIEVA JELICA
+ĐORIĆ ANTONIJE
+ĐORIĆ GORDANA
+ĐORIĆ LJUBISAV
+ĐORIĆ MILIVOJE
+ĐORIĆ MIODRAG
+ĐORIĆ VERICA
+ĐOROJEVIĆ VUKOTA
+ĐOTEVA TRAJANKA
+ĐOTUNOVIĆ ANĐELIJA
+ĐOZIĆ ŠUKRIJA
+ĐUĐAR MELANIJA
+ĐUĐAR VLADA
+ĐUĐAR VLADIMIR
+ĐUĐAR ZVONIMIR
+ĐUĐIĆ DRAGAN
+ĐUDUROVIĆ DUŠAN
+ĐUGA PAVEL
+ĐUKANOV BORIVOJ
+ĐUKANOV EMILIJAN
+ĐUKANOV MILAN
+ĐUKANOV NADA
+ĐUKANOV SLOBODAN
+ĐUKANOVIĆ ALEKSANDAR
+ĐUKANOVIĆ BRANKO
+ĐUKANOVIĆ IVO
+ĐUKANOVIĆ LJUBICA
+ĐUKANOVIĆ MARA
+ĐUKANOVIĆ MILAN
+ĐUKANOVIĆ MIROLJUB
+ĐUKANOVIĆ NADA
+ĐUKANOVIĆ NADA
+ĐUKANOVIĆ PUNIŠA
+ĐUKANOVIĆ SRETEN
+ĐUKANOVIĆ STAKA
+ĐUKANOVIĆ VLADIMIR
+ĐUKANOVIĆ ZORA
+ĐUKIČIN JOVANKA
+ĐUKIČIN MARIJA
+ĐUKIČIN SREDOJE
+ĐUKIČIN SREDOJE
+ĐUKIĆ-ŠABIĆ GORDANA
+ĐUKIĆ ŽARKA
+ĐUKIĆ ŽARKO
+ĐUKIĆ ŽELJKO
+ĐUKIĆ ŽIVOTA
+ĐUKIĆ ĐORĐE
+ĐUKIĆ ĐORĐE
+ĐUKIĆ ĐORĐE
+ĐUKIĆ ĐORĐE
+ĐUKIĆ ĐUR0
+ĐUKIĆ ĐURA
+ĐUKIĆ ĐURO
+ĐUKIĆ AGNICA
+ĐUKIĆ ALEKSANDAR DIPL ING
+ĐUKIĆ ANA
+ĐUKIĆ ANA
+ĐUKIĆ ANDRIJA
+ĐUKIĆ ANICA
+ĐUKIĆ BILJANA
+ĐUKIĆ BORISLAV
+ĐUKIĆ BRANISLAV
+ĐUKIĆ BRANISLAV
+ĐUKIĆ BRANKO
+ĐUKIĆ DANICA DR
+ĐUKIĆ DANILO
+ĐUKIĆ DIJANA
+ĐUKIĆ DIMITRIJE
+ĐUKIĆ DOBRILA
+ĐUKIĆ DOBRIVOJ
+ĐUKIĆ DRAGAN
+ĐUKIĆ DRAGAN
+ĐUKIĆ DRAGOJLO
+ĐUKIĆ DRAGOMIR
+ĐUKIĆ DUŠAN
+ĐUKIĆ DUŠAN
+ĐUKIĆ DUŠAN
+ĐUKIĆ DUŠAN
+ĐUKIĆ DUŠAN
+ĐUKIĆ GENA
+ĐUKIĆ GENO
+ĐUKIĆ GIZELA
+ĐUKIĆ GORDANA
+ĐUKIĆ ILIJA
+ĐUKIĆ ILIJA
+ĐUKIĆ IVAN DIPL ING
+ĐUKIĆ IVANKA
+ĐUKIĆ JAŠA
+ĐUKIĆ JELENA
+ĐUKIĆ JOVAN
+ĐUKIĆ JOVICA
+ĐUKIĆ JULKA
+ĐUKIĆ LEO
+ĐUKIĆ LJILJANA
+ĐUKIĆ LJUBICA
+ĐUKIĆ LJUBOMIR
+ĐUKIĆ LJUBOMIR
+ĐUKIĆ MAKSIM
+ĐUKIĆ MARA
+ĐUKIĆ MARIJA
+ĐUKIĆ MARINA
+ĐUKIĆ MIJODRAG
+ĐUKIĆ MILANKA
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILAN
+ĐUKIĆ MILENKO
+ĐUKIĆ MILEVA
+ĐUKIĆ MILE
+ĐUKIĆ MILE
+ĐUKIĆ MILICA
+ĐUKIĆ MILICA
+ĐUKIĆ MILJKO
+ĐUKIĆ MILKA
+ĐUKIĆ MILOŠ
+ĐUKIĆ MILOŠ
+ĐUKIĆ MILORAD
+ĐUKIĆ MILOVAN
+ĐUKIĆ MIRKO
+ĐUKIĆ MIRKO
+ĐUKIĆ MIRKO
+ĐUKIĆ MIRKO
+ĐUKIĆ MIRKO
+ĐUKIĆ NEĐO
+ĐUKIĆ NEDELJKO
+ĐUKIĆ NIKOLA
+ĐUKIĆ NIKOLA
+ĐUKIĆ NOVAK
+ĐUKIĆ NOVAK
+ĐUKIĆ NOVAK
+ĐUKIĆ OSTOJA
+ĐUKIĆ PANE
+ĐUKIĆ PAVLE
+ĐUKIĆ PERIŠA
+ĐUKIĆ PETAR
+ĐUKIĆ PETAR
+ĐUKIĆ RADE
+ĐUKIĆ RADIVOJ
+ĐUKIĆ RADOJICA
+ĐUKIĆ RADOVAN
+ĐUKIĆ RAJKO
+ĐUKIĆ ROSA
+ĐUKIĆ RUŽICA LOKAL
+ĐUKIĆ SAVA
+ĐUKIĆ SAVKA
+ĐUKIĆ SAVO DR
+ĐUKIĆ SLAVICA
+ĐUKIĆ SLAVKO
+ĐUKIĆ SLAVOLJUB
+ĐUKIĆ SLOBODAN
+ĐUKIĆ SRĐAN
+ĐUKIĆ SRBOLJUB
+ĐUKIĆ STANA
+ĐUKIĆ STANKO
+ĐUKIĆ STANKO
+ĐUKIĆ STEVAN
+ĐUKIĆ STOJANKA
+ĐUKIĆ STOJAN
+ĐUKIĆ SVETLANA
+ĐUKIĆ SVETLANA
+ĐUKIĆ TOMISLAV
+ĐUKIĆ TOMISLAV
+ĐUKIĆ VALERIJA
+ĐUKIĆ VELEMIR
+ĐUKIĆ VERICA
+ĐUKIĆ VERONIKA
+ĐUKIĆ VIDAK
+ĐUKIĆ VIDA
+ĐUKIĆ VLADIMIR
+ĐUKIĆ VLADIMIR
+ĐUKIĆ VLADIMIR
+ĐUKIĆ VLAJKO
+ĐUKIĆ VOJIN
+ĐUKIĆ VOJISLAV
+ĐUKIĆ VUKAN
+ĐUKIĆ ZORAN
+ĐUKIN DUŠAN
+ĐUKIN STEVAN
+ĐUKNIĆ SRETEN
+ĐULA KARLO
+ĐULINAC JELICA
+ĐULINAC VESELIN
+ĐULIZIBARIĆ-OREŠKOVIĆ DANICA
+ĐULVEZAN KOSA
+ĐULVEZAN MILOŠ
+ĐULVEZAN ROZALIJA
+ĐUMIĆ BOGDAN
+ĐUMIĆ DUŠAN
+ĐUMIĆ GOSPAVA
+ĐUMIĆ ILIJA
+ĐUMIĆ MARIJA
+ĐUMIĆ MILENKO
+ĐUMIĆ SLAVKO
+ĐUMIĆ STANKO
+ĐUMIĆ UROŠ
+ĐUNDIĆ MARINKO
+ĐURČEK MILENKO
+ĐURČEVIĆ KSENIJA
+ĐURČIANSKI MIROSLAV
+ĐURČIANSKI PAVLE
+ĐURČIK JOSIP
+ĐURČJANSKI MIROSLAV
+ĐURČOK MILINA
+ĐURĐEV ŽARKO
+ĐURĐEV ĐORĐE
+ĐURĐEV ALEKSANDAR
+ĐURĐEV ALEKSANDAR
+ĐURĐEV BOŽIDAR
+ĐURĐEV BRANISLAV
+ĐURĐEV DIMITRIJE
+ĐURĐEV DOBRILA
+ĐURĐEV DRAGOLJUB
+ĐURĐEV DUŠAN
+ĐURĐEV DUŠAN
+ĐURĐEV KAĆA
+ĐURĐEV KATA
+ĐURĐEV LJUBIŠA
+ĐURĐEV MARIJA
+ĐURĐEV MARIJA
+ĐURĐEV MILETA
+ĐURĐEV MLADEN
+ĐURĐEV NADEŽDA
+ĐURĐEV NEVENKA
+ĐURĐEV NOVAK
+ĐURĐEV OBRAD
+ĐURĐEV PAVA
+ĐURĐEV PRVOSLAV
+ĐURĐEV SAVICA
+ĐURĐEV SLAVKO
+ĐURĐEV STEVAN
+ĐURĐEV TODOR
+ĐURĐEV VASA
+ĐURĐEV VERA
+ĐURĐEV ZORKA
+ĐURĐEVAC DRAGOLJUB
+ĐURĐEVIĆ ŽELJKO
+ĐURĐEVIĆ ŽIVAN
+ĐURĐEVIĆ ŽIVKO
+ĐURĐEVIĆ ŽIVKO
+ĐURĐEVIĆ ĐORĐE
+ĐURĐEVIĆ ĐURĐICA DIPL ING
+ĐURĐEVIĆ ANĐELKO
+ĐURĐEVIĆ BOGDAN
+ĐURĐEVIĆ BRANKO
+ĐURĐEVIĆ BRANKO
+ĐURĐEVIĆ BUDIMIR
+ĐURĐEVIĆ DRAGUTIN
+ĐURĐEVIĆ DUŠAN
+ĐURĐEVIĆ DUŠAN
+ĐURĐEVIĆ DUŠICA
+ĐURĐEVIĆ GORDANA
+ĐURĐEVIĆ JAKOV
+ĐURĐEVIĆ JELENA
+ĐURĐEVIĆ JELENA
+ĐURĐEVIĆ JELICA
+ĐURĐEVIĆ JOVANKA
+ĐURĐEVIĆ JOVAN
+ĐURĐEVIĆ JULKA
+ĐURĐEVIĆ LAZAR
+ĐURĐEVIĆ LAZO
+ĐURĐEVIĆ LJUBOMIR
+ĐURĐEVIĆ MANOJLO
+ĐURĐEVIĆ MARIJA
+ĐURĐEVIĆ MILAN
+ĐURĐEVIĆ MILAN
+ĐURĐEVIĆ MILAN
+ĐURĐEVIĆ MILENKO
+ĐURĐEVIĆ MILICA
+ĐURĐEVIĆ MILIVOJ
+ĐURĐEVIĆ MILORAD
+ĐURĐEVIĆ MILORAD
+ĐURĐEVIĆ MIRJANA
+ĐURĐEVIĆ MIRJANA
+ĐURĐEVIĆ MOMČILO
+ĐURĐEVIĆ NEDELJKO
+ĐURĐEVIĆ NIKOLA
+ĐURĐEVIĆ RADINKA
+ĐURĐEVIĆ RANKO
+ĐURĐEVIĆ SAVA
+ĐURĐEVIĆ SAVA
+ĐURĐEVIĆ SLOBODAN
+ĐURĐEVIĆ SRĐAN DR
+ĐURĐEVIĆ STANKO
+ĐURĐEVIĆ STANOJKA
+ĐURĐEVIĆ STEVAN
+ĐURĐEVIĆ SVETOZAR
+ĐURĐEVIĆ TODOR
+ĐURĐEVIĆ TOMISLAV
+ĐURĐEVIĆ TOMISLAV
+ĐURĐEVIĆ VESELIN
+ĐURĐEVIĆ VID
+ĐURĐEVIĆ VLADA
+ĐURĐEVIĆ VLADA
+ĐURĐEVIĆ VLADIMIR
+ĐURĐEVIĆ VLADIMIR
+ĐURĐEVIĆ VLADISLAV
+ĐURĐEVIĆ ZORAN
+ĐURĐEVIĆ ZORAN
+ĐURĐEVSKI BOŠKO
+ĐURĐIĆ BOŽIDAR
+ĐURĐIĆ MILOŠ
+ĐURĐIĆ MOMČILO
+ĐURĐIĆ SAVO
+ĐURĐIĆ STANA
+ĐURĐIN STEVAN
+ĐURĐULOV DEJAN
+ĐURĐULOV EVICA
+ĐURA FRANJA
+ĐURA JELISAVETA
+ĐURA JULIJANA MR
+ĐURAČIĆ DRAGAN
+ĐURAŠ MIODRAG
+ĐURAŠEVIĆ ĐORĐE
+ĐURAŠEVIĆ ĐURO
+ĐURAŠEVIĆ GOJKO
+ĐURAŠEVIĆ IVO
+ĐURAŠEVIĆ MARIJANA
+ĐURAŠEVIĆ MILE
+ĐURAŠEVIĆ RADOMIR
+ĐURAŠEVIĆ TIBOR
+ĐURAŠEVIĆ ZORAN
+ĐURAŠINOV VELIMIR
+ĐURAŠINOVIĆ ILIJA
+ĐURAŠKOVIĆ ŽIVOJIN
+ĐURAŠKOVIĆ BOŽO
+ĐURAŠKOVIĆ DRAGAN
+ĐURAŠKOVIĆ DRAGO
+ĐURAŠKOVIĆ GORDANA
+ĐURAŠKOVIĆ JOVAN
+ĐURAŠKOVIĆ JOVAN
+ĐURAŠKOVIĆ JOVICA
+ĐURAŠKOVIĆ RAJKO
+ĐURAŠKOVIĆ STANOJE
+ĐURAGIĆ ĐORĐE
+ĐURAGIĆ DILE
+ĐURAGIĆ DRAGAN
+ĐURAGIĆ GIGA
+ĐURAGIĆ JOVAN
+ĐURAGIĆ JULKA
+ĐURAGIĆ LAZAR
+ĐURAGIĆ MIROSLAV
+ĐURAGIĆ SAVA
+ĐURAGIĆ STEVAN
+ĐURAGIN JOVAN
+ĐURAGIN STANKA
+ĐURAK JOŽEF
+ĐURAK JOSIF
+ĐURAKOVAC FATMIRA
+ĐURAN BOJANA
+ĐURAN ILIJA
+ĐURAN JELENA
+ĐURAN JOVO
+ĐURAN MILAN
+ĐURAN MILAN
+ĐURAN RAJKO
+ĐURAN RAJKO
+ĐURAN SLAVKO
+ĐURAN SNEŽANA
+ĐURAN ZDRAVKO
+ĐURANOVIĆ DUŠAN
+ĐURANOVIĆ ILONA
+ĐURANOVIĆ MIHAILO
+ĐURANOVIĆ MILAN
+ĐURANOVIĆ MIODRAG
+ĐURANOVIĆ MIRKO
+ĐURANOVIĆ NADA
+ĐURANOVIĆ SLAĐANA
+ĐURASINOVIĆ MILE
+ĐURDKOV EVA
+ĐUREKOVIĆ KARLO
+ĐUREKOVIĆ LJUBICA
+ĐUREKOVIĆ ZVONIMIR
+ĐURENDIĆ ĐORĐE
+ĐURENDIĆ DUŠAN
+ĐURETIĆ NIKOLA
+ĐURIČIĆ DRAGINJA
+ĐURIČIĆ DRAGO
+ĐURIČIĆ DRAGUTIN
+ĐURIČIĆ DUŠAN
+ĐURIČIĆ JOVAN
+ĐURIČIĆ MILJOJKO
+ĐURIČIĆ MILOŠ
+ĐURIČIĆ NEŠKO
+ĐURIČIĆ NIKOLA
+ĐURIČIĆ PAVLE
+ĐURIČIĆ RUŽA
+ĐURIČIĆ SLAVKO
+ĐURIČIĆ SLAVKO
+ĐURIČIĆ STANKO
+ĐURIČIĆ TANKOSAVA
+ĐURIČIĆ ZLATICA
+ĐURIČIĆ ZORAN
+ĐURIČIN ĐORĐE
+ĐURIČIN ALEKSANDAR
+ĐURIČIN DRAGAN
+ĐURIČIN DRAGUTIN
+ĐURIČIN KATARINA
+ĐURIČIN KATICA
+ĐURIČIN MARKO
+ĐURIČIN MILAN
+ĐURIČIN MILORAD
+ĐURIČIN MIODRAG
+ĐURIČIN PETAR
+ĐURIČIN RADOSLAVA
+ĐURIČIN RUŽICA
+ĐURIČIN SINIŠA
+ĐURIČIN SOFIJA
+ĐURIČIN STANIJA
+ĐURIČIN STEVAN
+ĐURIČIN SVETLANA
+ĐURIČIN TOMISLAV
+ĐURIČIN VASILIJE
+ĐURIČIN ZORKA
+ĐURIČKOVIĆ MILORAD
+ĐURIČKOVIĆ PAVLE
+ĐURIČKOVIĆ ZLATANA
+ĐURIŠ KLARA
+ĐURIŠ MIROSLAV
+ĐURIŠ PALJO
+ĐURIŠEVIĆ MILENA
+ĐURIŠIĆ DUŠAN
+ĐURIŠIĆ JELENA
+ĐURIŠIĆ LAZAR
+ĐURIŠIĆ MATO
+ĐURIŠIĆ MILAN
+ĐURIŠIĆ MILAN
+ĐURIŠIĆ MILIJA
+ĐURIŠIĆ MILISAV
+ĐURIŠIĆ NIKOLA
+ĐURIŠIĆ RADMILA
+ĐURIŠIĆ RADOMIR
+ĐURIŠIĆ SLAVKO
+ĐURIŠIĆ SVETLANA
+ĐURIŠIĆ VERA
+ĐURIŠIĆ VIDA
+ĐURIŠIĆ ZLATANA
+ĐURIŠIĆ ZLATA
+ĐURIĆ ŽARKO
+ĐURIĆ ŽELJKO
+ĐURIĆ ŽIVORAD
+ĐURIĆ ĐERĐ
+ĐURIĆ ĐORĐE
+ĐURIĆ ĐORĐE
+ĐURIĆ ĐORĐE
+ĐURIĆ ĐURA
+ĐURIĆ ĐURICA
+ĐURIĆ ALEKSANDAR
+ĐURIĆ ANĐELKA
+ĐURIĆ ANGELINA
+ĐURIĆ ANKA
+ĐURIĆ ARSENIJE
+ĐURIĆ BLAGOMIR
+ĐURIĆ BOŽIDAR
+ĐURIĆ BOŽIDAR
+ĐURIĆ BOGOLJUB
+ĐURIĆ BOGOLJUB
+ĐURIĆ BOJAN
+ĐURIĆ BORIVOJ
+ĐURIĆ BORKA
+ĐURIĆ BORKA
+ĐURIĆ BRANISLAV DR LEKAR
+ĐURIĆ BRANISLAVA
+ĐURIĆ BRANKA
+ĐURIĆ BRANKA
+ĐURIĆ BRANKO
+ĐURIĆ BRATISLAV
+ĐURIĆ BUDIMIR
+ĐURIĆ DEJAN
+ĐURIĆ DEJAN
+ĐURIĆ DESPOT
+ĐURIĆ DOBRE
+ĐURIĆ DOBRILA
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGAN
+ĐURIĆ DRAGICA
+ĐURIĆ DRAGICA
+ĐURIĆ DRAGUTIN DR
+ĐURIĆ DUŠAN
+ĐURIĆ DUŠAN
+ĐURIĆ EVA
+ĐURIĆ FRANJA
+ĐURIĆ GOJKO
+ĐURIĆ GOJKO
+ĐURIĆ GORDANA
+ĐURIĆ HRANISLAV
+ĐURIĆ HRANISLAV
+ĐURIĆ ILIJA
+ĐURIĆ ILIJA
+ĐURIĆ JASMINKA
+ĐURIĆ JELICA
+ĐURIĆ JOVAN
+ĐURIĆ JOVAN
+ĐURIĆ JOVAN
+ĐURIĆ JOVO
+ĐURIĆ KRISTINA
+ĐURIĆ LJILJANA
+ĐURIĆ LJUBIŠA
+ĐURIĆ LJUBIŠA
+ĐURIĆ LJUBICA
+ĐURIĆ LJUBICA
+ĐURIĆ LJUBODRAG
+ĐURIĆ LJUBOMIR
+ĐURIĆ MARA
+ĐURIĆ MARIJA
+ĐURIĆ MIĆA
+ĐURIĆ MILANKO
+ĐURIĆ MILAN
+ĐURIĆ MILAN
+ĐURIĆ MILAN
+ĐURIĆ MILAN
+ĐURIĆ MILENKO
+ĐURIĆ MILICA
+ĐURIĆ MILIVOJE
+ĐURIĆ MILOŠ
+ĐURIĆ MILORAD
+ĐURIĆ MILORAD
+ĐURIĆ MILOVAN
+ĐURIĆ MILUN
+ĐURIĆ MIODRAG
+ĐURIĆ MIODRAG
+ĐURIĆ MIRJANA
+ĐURIĆ MIRKO
+ĐURIĆ MIROLJUB
+ĐURIĆ MIROSLAVA
+ĐURIĆ MIROSLAV
+ĐURIĆ MITAR
+ĐURIĆ MOMČILO
+ĐURIĆ NEDELJKO
+ĐURIĆ NEMANJA
+ĐURIĆ NENAD
+ĐURIĆ NEVENKA
+ĐURIĆ PETRA
+ĐURIĆ PREDRAG
+ĐURIĆ PREDRAG
+ĐURIĆ RADIVOJE
+ĐURIĆ RADMILA
+ĐURIĆ RADOICA
+ĐURIĆ RADOJKA
+ĐURIĆ RADOSLAV
+ĐURIĆ RATKO
+ĐURIĆ SANJA
+ĐURIĆ SAVKA
+ĐURIĆ SAVO
+ĐURIĆ SEKULA
+ĐURIĆ SLAVICA
+ĐURIĆ SLAVKA
+ĐURIĆ SLAVKO
+ĐURIĆ SLAVKO
+ĐURIĆ SRBOLJUB
+ĐURIĆ STANIMIR
+ĐURIĆ STANIMIR
+ĐURIĆ STEVAN
+ĐURIĆ STOJANKA
+ĐURIĆ STOJANKA
+ĐURIĆ TEODOR
+ĐURIĆ TEREZA
+ĐURIĆ TODOR
+ĐURIĆ TODOR
+ĐURIĆ TUGOMIR
+ĐURIĆ VASA
+ĐURIĆ VELJKO
+ĐURIĆ VERA
+ĐURIĆ VERA
+ĐURIĆ VIDA
+ĐURIĆ VIDOJE
+ĐURIĆ VLADA
+ĐURIĆ VLADIMIR
+ĐURIĆ VLADIMIR
+ĐURIĆ VLADIMIR
+ĐURIĆ VOJIN
+ĐURIĆ VOJISLAV
+ĐURIĆ VUKAŠIN
+ĐURIĆ ZDENKA
+ĐURIĆ ZDRAVKO
+ĐURIĆ ZORAN
+ĐURICA MILOŠ
+ĐURICA NEVENKA
+ĐURICA RADE
+ĐURICA RANKO
+ĐURICA RANKO
+ĐURICA RATKO
+ĐURICA SLOBODAN DIPL OEC
+ĐURIK DUŠAN
+ĐURIK JULKA
+ĐURIK MILAN
+ĐURIK OTILIJA
+ĐURIKIN ILIJA
+ĐURIKIN VERA
+ĐURIN ILIJA
+ĐURIN JOSIP
+ĐURIN NOVA
+ĐURIN NOVA
+ĐURIN SAVA DIPL ING
+ĐURIN SVETLANA
+ĐURIN TEODOR
+ĐURKIĆ DRAGICA
+ĐURKIN MILENKO
+ĐURKIN RADIŠKO
+ĐURKIN VLADIMIR
+ĐURKOVIĆ ČASLAV
+ĐURKOVIĆ ĐENA
+ĐURKOVIĆ ALEKSANDAR DIPL ING
+ĐURKOVIĆ ANTON
+ĐURKOVIĆ MAGDALENA
+ĐURKOVIĆ PERICA
+ĐURKOVIĆ RADE
+ĐURKOVIĆ RUŽICA
+ĐURKOVIĆ STEVAN
+ĐURKOVIĆ SVETOMIR
+ĐURKOVIĆ VLAJKO
+ĐURKOVSKI PAVEL
+ĐURNIĆ RADMILA
+ĐURNIĆ VOJISLAV
+ĐUROVIĆ ŽIVKA
+ĐUROVIĆ ALEKSANDAR
+ĐUROVIĆ BOŠKO
+ĐUROVIĆ BOJA
+ĐUROVIĆ BORISLAV
+ĐUROVIĆ BOSILJKA
+ĐUROVIĆ DANILO
+ĐUROVIĆ DARINKA
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGAN
+ĐUROVIĆ DRAGOLJUB
+ĐUROVIĆ GOJKO
+ĐUROVIĆ JASMINKA
+ĐUROVIĆ JOVAN
+ĐUROVIĆ LJUBICA
+ĐUROVIĆ MILENKO
+ĐUROVIĆ MILICA
+ĐUROVIĆ MILISAV
+ĐUROVIĆ MILKA
+ĐUROVIĆ NADEŽDA
+ĐUROVIĆ NIKOLA
+ĐUROVIĆ OLGICA
+ĐUROVIĆ RADENKO
+ĐUROVIĆ RADE
+ĐUROVIĆ RADOMIR
+ĐUROVIĆ RADOMIR
+ĐUROVIĆ RADOSLAV
+ĐUROVIĆ RADOVAN
+ĐUROVIĆ SOFIJA
+ĐUROVIĆ SVETLANA
+ĐUROVIĆ SVETOMIR
+ĐUROVIĆ VASO
+ĐUROVIĆ VESNA
+ĐUROVIĆ VUKAŠIN
+ĐUROVIĆ VUKADIN
+ĐUROVIĆ ZORKA
+ĐUROVKA MARIJA
+ĐUROVKA ONDREJ
+ĐUROVKA VLADISLAV
+ĐUROVSKI JOVICA
+ĐUSIĆ MIODRAG
+ĐUZA STEVO
+AČ ŠANDOR
+AČ FERENC
+AČ FRANJA DR PRIMARIJUS
+AČ GABOR
+AČ JOŽEF AKADEMSKI SLIKAR
+AČ JOŽEF BIOLOG
+AČ JOVAN
+AČ KATICA
+AČ LAJOŠ
+AČ-NIKOLIĆ ERŽEBET
+AČ OTO
+AČ PAVLE
+AČ TIBOR
+AČAI IŠTVAN
+AČAI ZOLTAN
+AČANASKI VESNA
+AČANSKI ŽIVKO
+AČANSKI ALBINA
+AČANSKI ALEKSANDAR
+AČANSKI BRANISLAV
+AČANSKI DOBRIVOJ
+AČANSKI DRAGICA
+AČANSKI DRAGOMIR
+AČANSKI JELISOV
+AČANSKI KOSANA
+AČANSKI LAZAR
+AČANSKI LAZAR
+AČANSKI NIKOLA
+AČANSKI RADA
+AČANSKI STANA
+AČANSKI STANISLAV
+AČANSKI TEODOR DIPL ING
+AČANSKI TODOR
+AČANSKI VIDOSAVA
+AČANSKI ZDRAVKO
+AČANSKI ZORICA
+AŠĆERIĆ STEVAN
+AŠĆERIĆ STEVAN
+AŠĆERIĆ ZORA
+AŠANIN RADIVOJE
+AŠANIN ZORAN
+AŠIKU VITALIS DR LEKAR
+AŠKOVIĆ SLAVKO DIPL ING
+AŠKOVIĆ TOMISLAV
+AŠKOVIĆ VOJISLAVA
+AŠONJA NEDELJKO
+AŠONJA OLGA
+AŠTALKOVSKI ALEKSANDAR
+AŠTALKOVSKI KRISTINA
+AĆANSKI ĐORĐE
+AĆANSKI LAZAR
+AĆIĆ ILIJA
+AĆIĆ MIRKO
+AĆIĆ STEVAN
+AĆIMOV ALEKSANDAR
+AĆIMOV BOŠKO
+AĆIMOV DRAGICA
+AĆIMOV LELA
+AĆIMOV MARKO
+AĆIMOV MILAN
+AĆIMOV MIRJANA PROFESOR
+AĆIMOV NEDELJKO
+AĆIMOV RADIVOJ
+AĆIMOV RADOSLAVA
+AĆIMOVIĆ ŽIVKO
+AĆIMOVIĆ ŽIVOJIN
+AĆIMOVIĆ ĐORĐE
+AĆIMOVIĆ ĐORĐE
+AĆIMOVIĆ ĐURĐINKA
+AĆIMOVIĆ BOŠKO
+AĆIMOVIĆ BOGDANKA
+AĆIMOVIĆ BORKA
+AĆIMOVIĆ BRANKO
+AĆIMOVIĆ BRANKO
+AĆIMOVIĆ DRAGAN
+AĆIMOVIĆ DRAGOLJUB
+AĆIMOVIĆ DRAGOSLAV
+AĆIMOVIĆ DUŠANKA
+AĆIMOVIĆ DUŠAN
+AĆIMOVIĆ DUŠAN
+AĆIMOVIĆ GOJKO
+AĆIMOVIĆ ILIJA
+AĆIMOVIĆ JOVA
+AĆIMOVIĆ MILAN
+AĆIMOVIĆ MILA
+AĆIMOVIĆ MILIVOJE DR
+AĆIMOVIĆ MILIVOJ
+AĆIMOVIĆ MILOJICA
+AĆIMOVIĆ MIODRAG
+AĆIMOVIĆ OBRAD
+AĆIMOVIĆ RADMILA
+AĆIMOVIĆ RADOVAN
+AĆIMOVIĆ RATKO
+AĆIMOVIĆ SAVA
+AĆIMOVIĆ SAVA
+AĆIMOVIĆ SLAVKO
+AĆIMOVIĆ SLOBODAN
+AĆIMOVIĆ TADIJA
+AĆIMOVIĆ VASA
+AĆIMOVIĆ VASILIJE
+AĆIMPVIĆ ALEKSANDAR
+AĐANSKI BRANISLAV
+AĐANSKI IVANA
+AĐANSKI MILIVOJ
+AĐANSKI NADA
+AĐANSKI STEVAN
+AĐIĆ DRAGO
+AĐIĆ OTO
+AĐIN ADAM
+ABADŽIĆ MARKO
+ABADŽIĆ RADMILA
+ABADŽIĆ SAVO
+ABADŽIĆ STANKO
+ABAZA VESNA
+ABAZI ILJAZ
+ABAZI RAMADAN
+ABAZOVSKI SULTAN
+ABDIJEVIĆ ŠUKRIJA
+ABDIJEVIĆ ISMET
+ABRAHAM EVA
+ABRAHAM IRENA
+ABRAHAM PAVEL
+ABRAMOVIĆ DUŠANKA
+ABRAMOVIĆ LIVIJA
+ABRAMOVIĆ MILORAD
+ABRAMOVIĆ MIRJANA
+ABRAMOVIĆ NADA
+ABRAMOVIĆ STANA
+ABRAMOVIĆ VALERIJA
+ABRLIĆ NADA
+ABT LASLO
+ABU-ABED MUHAMED
+ACIGAN JOVANKA
+ACIN-PETROVIĆ IVANKA
+ACKETA DRAGAN
+ACKETA MIRJANA
+ACKETA TIHOMIR
+ACKOVIĆ MARA
+ADŽAIP MILORAD
+ADŽAIP MIRJANA
+ADŽEMOVIĆ ALEKSANDAR
+ADŽEMOVIĆ GRUJO
+ADŽIĆ ŽARKO
+ADŽIĆ BOŠKO
+ADŽIĆ BRANKO
+ADŽIĆ DESANKA
+ADŽIĆ DRAGOLJUB
+ADŽIĆ DUŠICA
+ADŽIĆ GORAN
+ADŽIĆ ILIJA
+ADŽIĆ JOVANKA
+ADŽIĆ JOVAN
+ADŽIĆ LJUBODRAG
+ADŽIĆ MILAN
+ADŽIĆ MILEN
+ADŽIĆ MILISAV
+ADŽIĆ MILIVOJE
+ADŽIĆ MILORAD
+ADŽIĆ NEDELJKO
+ADŽIĆ PERO
+ADŽIĆ RADISAV
+ADŽIĆ RADONJA
+ADŽIĆ RANKO
+ADŽIĆ RATKO
+ADŽIĆ SLOBODAN
+ADŽIĆ VLADO
+ADŽIĆ ZORAN
+ADŽIBABA MILICA
+ADŽIBABA NIKOLA
+ADAM ŠARLOTA
+ADAM ĐURA
+ADAM DENEŠ
+ADAM IRMA
+ADAM JOŽEF
+ADAM JOSIP
+ADAM KRUNICA DR
+ADAM LADISLAV
+ADAM LADISLAV
+ADAM LASLO
+ADAM OLGICA
+ADAM TIBOR NOVINAR
+ADAMOV ĐORĐE
+ADAMOV BOŽIDAR
+ADAMOV DRAGAN
+ADAMOV DUŠAN
+ADAMOV IVAN
+ADAMOV JOVAN
+ADAMOV JULIANA
+ADAMOV JULKA
+ADAMOV JULKA
+ADAMOV KATARINA
+ADAMOV LJUBA
+ADAMOV MARIJA
+ADAMOV MIROSLAVA
+ADAMOV RADOVAN
+ADAMOV TICA
+ADAMOV VITOMIR
+ADAMOVIĆ ĐURA
+ADAMOVIĆ BOŠKO
+ADAMOVIĆ DRAGA
+ADAMOVIĆ DRAGOLJUB
+ADAMOVIĆ DRAGOLJUB
+ADAMOVIĆ DRAGUTIN
+ADAMOVIĆ DUŠAN
+ADAMOVIĆ DUŠAN
+ADAMOVIĆ DUŠAN
+ADAMOVIĆ DUŠAN
+ADAMOVIĆ GOJKO
+ADAMOVIĆ GOJKO
+ADAMOVIĆ GORAN
+ADAMOVIĆ ILONA
+ADAMOVIĆ IVAN
+ADAMOVIĆ JELA
+ADAMOVIĆ JELENA
+ADAMOVIĆ JOVANKA
+ADAMOVIĆ JOVAN
+ADAMOVIĆ KATA
+ADAMOVIĆ LAZAR
+ADAMOVIĆ LAZAR
+ADAMOVIĆ LJILJANA
+ADAMOVIĆ LJUBOMIR
+ADAMOVIĆ MARA
+ADAMOVIĆ MARA
+ADAMOVIĆ MARA
+ADAMOVIĆ MARINKO
+ADAMOVIĆ MILENA
+ADAMOVIĆ MILICA
+ADAMOVIĆ MILKAN
+ADAMOVIĆ MIRKO
+ADAMOVIĆ MIRKO
+ADAMOVIĆ MOMČILO
+ADAMOVIĆ MOMČILO
+ADAMOVIĆ MOMČILO
+ADAMOVIĆ RADMILA
+ADAMOVIĆ RADOSAV
+ADAMOVIĆ SLAVKO
+ADAMOVIĆ SONJA
+ADAMOVIĆ STOJANKA
+ADAMOVIĆ SVETOZAR
+ADAMOVIĆ TOMISLAV
+ADAMOVIĆ TOMISLAV
+ADAMOVIĆ VLADIMIR
+ADEMI GORDANA
+ADEMI IMER
+ADEMOV KEMAL
+ADEMOVIĆ JUSUF
+ADEMOVIĆ OSMAN
+ADLEŠIĆ LJUBICA
+ADNAĐEVIĆ SVETOZAR
+ADOR JOVAN
+AGARSKI JAN DR
+AGATIĆ MATE
+AGATIĆ MIRKO
+AGATIĆ VELIMIR
+AGBABA BRANKA
+AGBABA DANE
+AGBABA DANICA
+AGBABA DANILO
+AGBABA DUŠAN
+AGBABA JOVAN
+AGBABA NEDELJKA
+AGBABA NEDELJKO
+AGBABA NIKOLA DR
+AGBABA NIKOLA
+AGBABA VIDA
+AGIĆ MARKO
+AGIĆ NADA
+AGIĆ NIKOLAJ
+AGIĆ NIKOLA
+AGIĆ SLOBODAN DIPL OEC
+AGIĆ SRBISLAV
+AGIĆ VLADIMIR
+AGO MARKO
+AGO ZORICA
+AGOČ DUŠAN
+AGOŠTON BELA
+AGOŠTON FERENC
+AGOŠTON KAROLJ
+AGOŠTON LASLO
+AGOŠTON MIHALJ
+AGOŠTON VERA
+AGRAMOVIĆ DESANKA
+AGRAMOVIĆ RADE
+AGUŠEVIĆ SLOBODANKA
+AGUCIĆ OLGICA
+AHMED ELEZ
+AHMETOV ŠUKRI
+AHMETOVIĆ KARLO
+AHMETOVIĆ SOFIJA
+AHMETOVIĆ ZLATKO
+AIRALDI BOŽIDAR
+AJ BRANISLAV
+AJ VESNA
+AJANOVIĆ SALKO
+AJCEV DUŠAN
+AJDŽANOVIĆ ANASTASIJA DR LEKAR
+AJDARIĆ RADOSLAV
+AJDER ŽELJKO
+AJDER BOŠKO
+AJDER DANICA
+AJDIĆ ĐORĐE
+AJDINI SABRIJA
+AJDINOVIĆ NIKOLA
+AJDUK JOSIM
+AJDUK MARKO
+AJDUK MILICA
+AJDUK TOŠA
+AJDUKOVIĆ GOJKO
+AJDUKOVIĆ LJILJANA
+AJDUKOVIĆ MILAN
+AJDUKOVIĆ SOFIJA
+AJGENMAHT MARINA
+AJKUNIĆ ADIL
+AJKUNIĆ NEZIR
+AJRANOVIĆ JUSUF
+AJTIĆ SVETISLAV
+AJTLBEZ MIJAT
+AJTLBEZ MIJAT
+AJVAZOVIĆ AĆIF
+AJVAZOVIĆ ASLAN
+AJVAZOVIĆ ESMA
+AJVAZOVIĆ FAID
+AJVILER STEVAN
+AJZENBERGER BELA
+AKŠAMOVIĆ PLAVŠA
+AKIK DRAGICA
+AKIK DUŠAN
+AKIN DRAGA
+AKIN SOFIJA
+AKONČIĆ ZORAN
+AKRAP FILIP PROF
+AKRAPOVIĆ MIROSLAV
+AKSENTIJEVIĆ JOVAN
+AKSENTIJEVIĆ NIKOLA SUDIJA
+AKSENTIJEVIĆ STOJADIN
+AKSIN BRANISLAV
+AKSIN MILOVAN
+AKSIN VLADIMIR DR ING
+ALAĐI ŠANDOR
+ALABAŠOVSKI GRUJA
+ALABAŠOVSKI IBRAHIM
+ALABURIĆ PAVLE
+ALABURIĆ TEODOR DIPL ING
+ALADŽIĆ ĐORĐO
+ALADIĆ ALEKSANDAR
+ALADIĆ ALEKSANDAR
+ALADIĆ BRANISLAVA
+ALADIĆ IDA
+ALADIĆ STEVAN
+ALAGIĆ DUŠAN
+ALAGIĆ MUJO
+ALAGIĆ NADA
+ALAGIĆ RADOSLAV
+ALAGIĆ VERA
+ALAICA RADOJKA
+ALAJICA BRANKO
+ALAJICA JOVO
+ALAN VERA
+ALANOV RUŽICA
+ALARGIĆ JELENA
+ALARGIĆ MILICA
+ALARGIĆ PETAR
+ALARGIĆ RADE
+ALARGIĆ RANKA
+ALARGIĆ TIMA
+ALASOV DRAGOSLAV
+ALASOV LAZAR DIPL ING
+ALAVANJA MIRJANA
+ALBIJANIĆ BORO
+ALBIJANIĆ DRAGUTIN
+ALBOT ILIJA
+ALBREHT JANOŠ
+ALBREHT MARIJA
+ALBREHT MARIJA
+ALBULJ DIVNA
+ALBULJ GORDANA
+ALBULJ VESELIN
+ALBULJ VOJISLAVKA
+ALEKSANDER ANA
+ALEKSANDER RUDOLF
+ALEKSANDRIĆ MILESA DR
+ALEKSANDROV SLAVČA
+ALEKSANDROVIĆ DRAGAN
+ALEKSANDROVIĆ DUŠAN
+ALEKSI STEVAN
+ALEKSIĆ ČASLAV
+ALEKSIĆ ČEDOMIR
+ALEKSIĆ ŽIVOMIR
+ALEKSIĆ ĐORĐE
+ALEKSIĆ ĐURA
+ALEKSIĆ ACA
+ALEKSIĆ ADAM
+ALEKSIĆ ARSA
+ALEKSIĆ BISERKA
+ALEKSIĆ BOŽIDAR
+ALEKSIĆ BOŽIDAR
+ALEKSIĆ BOGDAN
+ALEKSIĆ BRANISLAV
+ALEKSIĆ BRANKO
+ALEKSIĆ BRANKO
+ALEKSIĆ BRANKO
+ALEKSIĆ BUDIMIR
+ALEKSIĆ DANICA
+ALEKSIĆ DARINKA
+ALEKSIĆ DRAGAN
+ALEKSIĆ DRAGA
+ALEKSIĆ DRAGOLJUB
+ALEKSIĆ DRAGOMIR
+ALEKSIĆ DRAGOSLAV DR
+ALEKSIĆ DUŠAN
+ALEKSIĆ DUŠAN
+ALEKSIĆ EVICA
+ALEKSIĆ GOJKO
+ALEKSIĆ GORAN
+ALEKSIĆ GORDANA
+ALEKSIĆ-GRISER NIKOLA
+ALEKSIĆ ILINKA
+ALEKSIĆ IVAN
+ALEKSIĆ JELENA
+ALEKSIĆ JELICA
+ALEKSIĆ JELICA
+ALEKSIĆ JOSIP
+ALEKSIĆ JOVAN
+ALEKSIĆ JOVO
+ALEKSIĆ KATA
+ALEKSIĆ KATICA
+ALEKSIĆ KATICA
+ALEKSIĆ KOSA
+ALEKSIĆ KOSTA
+ALEKSIĆ KOSTA
+ALEKSIĆ LEPOSAVA
+ALEKSIĆ LEPOSAVA
+ALEKSIĆ LJILJANA
+ALEKSIĆ LJILJANA
+ALEKSIĆ LJUBIŠA
+ALEKSIĆ LJUTOMIR
+ALEKSIĆ MARIN
+ALEKSIĆ MILANKA
+ALEKSIĆ MILAN
+ALEKSIĆ MILAN
+ALEKSIĆ MILAN
+ALEKSIĆ MILENA
+ALEKSIĆ MILINKA
+ALEKSIĆ MILIVOJ
+ALEKSIĆ MILIVOJ
+ALEKSIĆ MILOŠ
+ALEKSIĆ MILOŠ
+ALEKSIĆ MILOŠ
+ALEKSIĆ MILOJE
+ALEKSIĆ MILORAD
+ALEKSIĆ MILOVAN
+ALEKSIĆ MIODRAG
+ALEKSIĆ MIODRAG
+ALEKSIĆ MIODRAG
+ALEKSIĆ MIRJANA
+ALEKSIĆ MIRKO
+ALEKSIĆ MIROSLAV
+ALEKSIĆ MOMČILO
+ALEKSIĆ MOMČILO
+ALEKSIĆ MOMIR
+ALEKSIĆ NADA
+ALEKSIĆ NATALIJA
+ALEKSIĆ NEBOJŠA
+ALEKSIĆ NIKOLA
+ALEKSIĆ NIKOLA
+ALEKSIĆ PAULINA
+ALEKSIĆ PAVLE
+ALEKSIĆ PETAR
+ALEKSIĆ PETAR
+ALEKSIĆ PETAR
+ALEKSIĆ PREDRAG
+ALEKSIĆ RADE
+ALEKSIĆ RADMILA
+ALEKSIĆ RADOMIR
+ALEKSIĆ RAJKO
+ALEKSIĆ RATKO
+ALEKSIĆ RATKO
+ALEKSIĆ RISTO
+ALEKSIĆ SAVO
+ALEKSIĆ SLAVNA
+ALEKSIĆ SMILJA
+ALEKSIĆ STEVAN
+ALEKSIĆ STEVAN
+ALEKSIĆ VASA
+ALEKSIĆ VERA
+ALEKSIĆ VERA
+ALEKSIĆ VESNA
+ALEKSIĆ VITOMIR
+ALEKSIĆ VLASTIMIR
+ALEKSIĆ VOJISLAV
+ALEKSIĆ ZDRAVENKA
+ALEKSIĆ ZDRAVKO
+ALEKSIĆ ZLATIBOR
+ALEKSIĆ ZORAN
+ALEKSIJEVIĆ BOGDAN
+ALEKSIJEVIĆ BORA
+ALEKSIJEVIĆ ISIDOR
+ALEKSIJEVIĆ JOVAN
+ALEKSIJEVIĆ MARIJA
+ALEKSOV GEORGI
+ALEKSOV MILUTIN
+ALEKSOV SIMEON
+ALEKSOV ZORAN
+ALEKSOVSKI MILE
+ALEKSOVSKI SRBOLJUB
+ALEMPIĆ SAVO
+ALEMPIJEVIĆ ZORAN
+ALEMPIJEVIĆ ZORAN
+ALENDER ŠEFIK
+ALI JULISTAN
+ALIŠIĆ BESIM
+ALIŠIĆ NIJAZ
+ALIŠIĆ REDŽEP
+ALIŠIĆ VASVIJA
+ALIĐUKIĆ ILIJA
+ALIBAŠIĆ HAMID
+ALIJA ABDIRAHMAN
+ALIJA IZET
+ALIJEVIĆ NEZIR
+ALIJEVIĆ SADRIJA
+ALILOVIĆ VINKO
+ALIMPIĆ ŽIVKO
+ALIMPIĆ ALEKSANDAR
+ALIMPIĆ BARBARA
+ALIMPIĆ BOGOMIR
+ALIMPIĆ BORIVOJE
+ALIMPIĆ DRAGAN
+ALIMPIĆ DRAGICA
+ALIMPIĆ JELA
+ALIMPIĆ JOVAN
+ALIMPIĆ LJUBICA
+ALIMPIĆ MOMČILO
+ALIMPIĆ SLAVKA
+ALIMPIĆ SLAVKO
+ALIMPIĆ STEVAN
+ALIMPIĆ TIHOMIR
+ALIMPIĆ TOMISLAV
+ALIMPIĆ VOJISLAV
+ALIMPIJEVIĆ ĐORĐE
+ALIMPIJEVIĆ DIMITRIJE
+ALIMPIJEVIĆ JOVAN
+ALIMPIJEVIĆ JOVAN
+ALIMPIJEVIĆ VESELINKA
+ALIOV HUSEIN
+ALIOV OMER
+ALJI AJRADIN
+ALJI MAKSUT
+ALJIĆ KATARINA
+ALJIĆ RAMO
+ALJIJUPI ČERIM
+ALKIĆ STEVAN
+ALKIĆ VLADIMIR
+ALMAŠI ETEL
+ALMAŠI MARIŠKA
+ALMAŠI MATIJA
+ALMAŠI SAMUEL
+ALMAŽAN SLAVKO NOVINAR
+ALORIĆ DRAGOMIRKA
+ALORIĆ ILIJA
+ALTEROV ANA
+ALTKORN MALVINA
+ALVADŽIN DRAGUTIN
+ALVIROVIĆ DRAGORAD
+ALVIROVIĆ MIODRAG
+AMAMOVIĆ DUŠAN
+AMAMOVIĆ MILEVA
+AMBARDŽIJEV HRISTO
+AMBO ILIJA
+AMBROZIĆ RASTKO
+AMBRUŠ ATILA
+AMBRUŠIĆ MAGDA
+AMBRUSOV JOVAN
+AMETOV OSMAN
+AMETOVIĆ ĐORĐE
+AMETOVIĆ ĐORĐO
+AMETOVIĆ ĐURO
+AMETOVIĆ BUDIMIR
+AMETOVIĆ JELENA
+AMETOVIĆ JOVAN
+AMETOVIĆ KATICA
+AMETOVIĆ LAZAR
+AMETOVIĆ LAZAR
+AMETOVIĆ MARKO
+AMETOVIĆ MILADIN
+AMETOVIĆ MILORAD
+AMETOVIĆ MIRKO
+AMETOVIĆ MOMČILO
+AMETOVIĆ RAJKO
+AMETOVIĆ RATKO
+AMETOVIĆ RUSMIRA
+AMETOVIĆ SOFIJA
+AMETOVIĆ VOJIN
+AMIŽIĆ DANICA
+AMIŽIĆ MIROSLAV
+AMIŽIĆ TEODORA
+ANČIĆ ALEKSANDRA
+ANČIĆ MILAN
+ANČIĆ NEVENKA DR
+ANĐELIĆ ANĐELKO
+ANĐELIĆ ANDRIJA
+ANĐELIĆ ANICA
+ANĐELIĆ BILJANA
+ANĐELIĆ BLAGIŠA
+ANĐELIĆ BOŽIDAR DR
+ANĐELIĆ BORIVOJE
+ANĐELIĆ BORIVOJE
+ANĐELIĆ BRANISLAV
+ANĐELIĆ DARINKA
+ANĐELIĆ DRAGICA
+ANĐELIĆ DRAGOMIR
+ANĐELIĆ DUŠANKA
+ANĐELIĆ GORAN
+ANĐELIĆ ILIJA
+ANĐELIĆ ILIJA
+ANĐELIĆ MILENKO
+ANĐELIĆ MILIVOJE
+ANĐELIĆ MILORAD
+ANĐELIĆ MILORAD
+ANĐELIĆ MIRJANA
+ANĐELIĆ MIRJANA
+ANĐELIĆ MITAR
+ANĐELIĆ NIKOLA
+ANĐELIĆ RADMILA
+ANĐELIĆ RADOJICA
+ANĐELIĆ RADOSLAV
+ANĐELIĆ SAVA
+ANĐELIĆ SLOBODAN DR LEKAR
+ANĐELIĆ SLOBODAN
+ANĐELIĆ SLOBODAN
+ANĐELIĆ STEVAN
+ANĐELIĆ VASA
+ANĐELIĆ VASO
+ANĐELIĆ VELJKO
+ANĐELIĆ VESELIN
+ANĐELIĆ VESNA
+ANĐELIĆ VLADA
+ANĐELIĆ VOJISLAV
+ANĐELKOVIĆ ANĐELKO
+ANĐELKOVIĆ BOŽIDAR
+ANĐELKOVIĆ DRAGOMIR
+ANĐELKOVIĆ-DUDIĆ ZLATA
+ANĐELKOVIĆ JELICA
+ANĐELKOVIĆ JOVAN
+ANĐELKOVIĆ LIDIJA
+ANĐELKOVIĆ LJUBIŠA
+ANĐELKOVIĆ MILAN
+ANĐELKOVIĆ MILOŠ
+ANĐELKOVIĆ MILORAD
+ANĐELKOVIĆ MIROSLAV
+ANĐELKOVIĆ MIROSLAV
+ANĐELKOVIĆ NATAŠA
+ANĐELKOVIĆ PETAR
+ANĐELKOVIĆ PREDRAG
+ANĐELKOVIĆ RADOMIR
+ANĐELKOVIĆ ROBERT
+ANĐELKOVIĆ SIMA
+ANĐELKOVIĆ SLOBODAN
+ANĐELKOVIĆ STANIMIR
+ANĐELKOVIĆ STANKO
+ANĐELKOVIĆ STEVAN
+ANĐELKOVIĆ STOJAN
+ANĐELKOVIĆ SVETISLAV
+ANĐELKOVIĆ SVETISLAV
+ANĐELKOVIĆ SVETOMIR
+ANĐELKOVIĆ VALERIJA
+ANĐELKOVIĆ VERA
+ANĐELKOVIĆ VINKO
+ANĐELKOVIĆ VINKO
+ANĐELKOVIĆ VINKO
+ANĐELKOVIĆ VUKADIN
+ANĐELKOVIĆ ZORAN
+ANĐELKOVIĆ ZORAN
+ANĐELKOVIĆ ZORA
+ANĐELOVIĆ LJUBIŠA
+ANĐELOVIĆ VERICA
+ANĐELOVSKI ĐORĐE
+ANĐIĆ STEVAN
+ANĐUŠIĆ ŽARKO
+ANĐUŠIĆ JELISAVKA
+ANĐUŠIĆ MILORAD
+ANĐUŠIĆ SLOBODAN
+ANASTASIJEVIĆ DUŠAN
+ANASTASIJEVIĆ JULKICA
+ANASTASIJEVIĆ ZORICA
+ANASTASIJEVIĆ ZORICA
+ANASTASOV MARKO
+ANASTASOV NIKOLA
+ANASTASOVSKI ALEKSANDAR
+ANAU GABRIELA
+ANAU STEVAN
+ANDABAK MARKO
+ANDABAKA ANTE
+ANDABAKA SLAVICA
+ANDER IMRE
+ANDERLON STEVICA
+ANDESELIĆ ŠTEFICA
+ANDEVSKI RADE
+ANDIĆ SVETOZAR
+ANDIĆ VLADIMIR
+ANDONIADIS MILICA
+ANDONOV DIMITRIJE
+ANDONOV NENAD
+ANDONOV ZORICA
+ANDONOVIĆ DIMITRIJE
+ANDRAŠIK PAVEL
+ANDREATA SLAVKO
+ANDREIĆ RADOVAN
+ANDREJEV HELENA
+ANDREJEV MIHAJLO
+ANDREJEVIĆ BOGOSAV
+ANDREJEVIĆ BORIVOJE
+ANDREJEVIĆ GRADIMIR
+ANDREJEVIĆ IVAN
+ANDREJEVIĆ MARKO
+ANDREJEVIĆ MILAN
+ANDREJEVIĆ MIROSLAV
+ANDREJEVIĆ SLOBODAN
+ANDREJEVIĆ TEODOR
+ANDREJEVIĆ VUKAŠIN DIPL ING
+ANDREJIĆ ŽARKO
+ANDREJIĆ BORISLAV
+ANDREJIĆ DRAGAN
+ANDREJIĆ RADOSLAV
+ANDREJIĆ SLAVOLJUB
+ANDREJIĆ SRETEN
+ANDREJIĆ VERA
+ANDREJIĆ ZORAN
+ANDREJIĆ ZORICA
+ANDRES ANĐELKO
+ANDRIČEK ANA
+ANDRIČEK LAJOŠ
+ANDRIČEK MAGDALENA
+ANDRIČEK PAVAO
+ANDRIČEK PAVLE
+ANDRIĆ ŽELJKA
+ANDRIĆ ŽIKA
+ANDRIĆ ŽIVAN
+ANDRIĆ ĐORĐE
+ANDRIĆ ĐURĐINA
+ANDRIĆ ALEKSANDAR
+ANDRIĆ BOGOLJUB
+ANDRIĆ BOJAN
+ANDRIĆ BOSILJKA
+ANDRIĆ BRANIMIR
+ANDRIĆ BRANISLAV
+ANDRIĆ DARINKA
+ANDRIĆ DOSTA
+ANDRIĆ DRAGAN
+ANDRIĆ DRAGOLJUB
+ANDRIĆ DUŠAN
+ANDRIĆ DUŠAN
+ANDRIĆ DUŠAN
+ANDRIĆ DUŠAN
+ANDRIĆ DUŠAN
+ANDRIĆ FRIDA
+ANDRIĆ ILIJA
+ANDRIĆ JELENA
+ANDRIĆ JELISAVETA
+ANDRIĆ JOVICA
+ANDRIĆ-KOVAČEVIĆ OLIVERA
+ANDRIĆ LAZAR
+ANDRIĆ LAZA
+ANDRIĆ LJILJANA
+ANDRIĆ LJILJANA
+ANDRIĆ LUDMILA
+ANDRIĆ MILE
+ANDRIĆ MILOŠ
+ANDRIĆ MILOŠ
+ANDRIĆ NEBOJŠA
+ANDRIĆ NESTOR
+ANDRIĆ NIKOLA
+ANDRIĆ PERICA
+ANDRIĆ PETAR
+ANDRIĆ RADISAV
+ANDRIĆ RADISLAV
+ANDRIĆ SAVA
+ANDRIĆ SIMA
+ANDRIĆ SLAVKA
+ANDRIĆ SLAVKA
+ANDRIĆ SLAVOLJUB
+ANDRIĆ SLOBODAN
+ANDRIĆ STEVAN
+ANDRIĆ STEVAN
+ANDRIĆ TODOR
+ANDRIĆ TOMISLAV
+ANDRIĆ VERICA
+ANDRIĆ VLADA
+ANDRIĆ VLADIMIRA
+ANDRIĆ VUKOMAN
+ANDRIĆ ZORA
+ANDRIGA ALEKSANDAR
+ANDRIJAŠEV KOSANA
+ANDRIJAŠEV RUŽICA
+ANDRIJAŠEVIĆ ŽELJKO
+ANDRIJAŠEVIĆ ANKA
+ANDRIJAŠEVIĆ BRANKO
+ANDRIJAŠEVIĆ JELENA
+ANDRIJAŠEVIĆ RADOVAN
+ANDRIJEVIĆ ŽIVA
+ANDRIJEVIĆ JOVAN
+ANDRIN ANĐELKA
+ANDRIN ISIDOR
+ANDRIN KATICA
+ANDRIN MILADINKA
+ANDRIN NADA
+ANDROCKI PAL DIPL ING
+ANDULAJEVIĆ STEVO
+ANGEBRANT ILONKA
+ANGELESKI VANGEL
+ANGELOV DUŠAN
+ANGELOV SREĆKO
+ANGELOVSKI DUŠAN
+ANGELOVSKI ILIJA
+ANGELOVSKI JANDRE
+ANGELOVSKI MITRE
+ANGELOVSKI TOMO
+ANIČIĆ ŽIVOTA
+ANIČIĆ BRANISLAV
+ANIČIĆ DRAGAN
+ANIČIĆ DUŠAN DIPL OEC
+ANIČIĆ FILIP
+ANIČIĆ ILIJA
+ANIČIĆ KOVINKA
+ANIČIĆ MILENA DIPL ECC
+ANIČIĆ MIRKO
+ANIČIĆ MIRO
+ANIČIĆ MIRO
+ANIČIĆ NENAD
+ANIČIĆ OSTOJA
+ANIČIĆ PREDRAG
+ANIČIĆ STAKA
+ANIČIĆ STOJANKA
+ANIČIĆ TODOR
+ANIČIĆ ZDRAVKO
+ANIČIN ŽARKO
+ANIČIN BRANISLAV
+ANIŠIĆ JASMINKA
+ANIĆ DUŠAN
+ANIĆ SLOBODAN
+ANIĆ ZORA
+ANIKA GAVRILO
+ANIKA JULIJE PROFESOR
+ANITIĆ IŠTVAN
+ANKIĆ MARJAN
+ANKIĆ PERICA
+ANOJČIĆ ŽELJKO
+ANOJČIĆ LAZAR
+ANOJČIĆ MILAN
+ANOJČIĆ RADIVOJ
+ANOJČIĆ RADIVOJ
+ANOJČIĆ SPASOJE
+ANOJČIĆ-STOJKOVIĆ JASMINKA
+ANTAL ALEKSANDAR
+ANTAL VERONA
+ANTANASIĆ STANKO
+ANTANASIJEVIĆ BORA
+ANTELJEVIĆ ALEKSANDAR
+ANTIĆ ĐOKA
+ANTIĆ ĐORĐE
+ANTIĆ ĐORĐE
+ANTIĆ ALEKSANDAR
+ANTIĆ ANGELINA
+ANTIĆ BOŠKO
+ANTIĆ BOŽIDAR DR STOMATOLOG
+ANTIĆ BOŽIDAR
+ANTIĆ BRANKO
+ANTIĆ BRATISLAV
+ANTIĆ DIMITRIJE
+ANTIĆ DRAGAN
+ANTIĆ DRAGAN
+ANTIĆ DRAGIŠA
+ANTIĆ DUŠANKA
+ANTIĆ DUŠANKA
+ANTIĆ JULKA
+ANTIĆ KOSTA
+ANTIĆ LJUBIŠA
+ANTIĆ LUKA
+ANTIĆ MARICA
+ANTIĆ MARIJA
+ANTIĆ MILAN
+ANTIĆ MILAN
+ANTIĆ MILAN
+ANTIĆ MILAN
+ANTIĆ MILIVOJ
+ANTIĆ MILUTIN
+ANTIĆ MIODRAG
+ANTIĆ MIRKO
+ANTIĆ MIRKO
+ANTIĆ NENAD
+ANTIĆ NEVENA
+ANTIĆ OLGA
+ANTIĆ PAVLE
+ANTIĆ PAVLE
+ANTIĆ PAVLE
+ANTIĆ PETAR
+ANTIĆ RADOJKO
+ANTIĆ RADOMIR
+ANTIĆ RADOVAN
+ANTIĆ SLAĐANA
+ANTIĆ SLAVICA
+ANTIĆ SLOBODAN
+ANTIĆ SMILJA
+ANTIĆ SMILJA
+ANTIĆ SOFIJA
+ANTIĆ STANČA
+ANTIĆ STANISLAV
+ANTIĆ STANOJE
+ANTIĆ STOJAN
+ANTIĆ SVETISLAV
+ANTIĆ SVETLANA
+ANTIĆ SVETOVID
+ANTIĆ VERICA
+ANTIĆ VUKAŠIN
+ANTIĆ ZAGORKA
+ANTIĆ ZLATAN
+ANTIN IVANKA
+ANTIN VELEMIR
+ANTOLOVIĆ IVAN
+ANTONIĆ ŽIVKO DIPL ING
+ANTONIĆ ŽIVKO
+ANTONIĆ ĐORĐE
+ANTONIĆ BORIVOJ
+ANTONIĆ BRANKO
+ANTONIĆ DOBRIVOJ
+ANTONIĆ DRAGAN
+ANTONIĆ DRAGAN
+ANTONIĆ GORDANA
+ANTONIĆ JADRANKA
+ANTONIĆ JASMINKA
+ANTONIĆ JELENA
+ANTONIĆ LJUBICA
+ANTONIĆ MARIJA
+ANTONIĆ MILAN
+ANTONIĆ MILAN
+ANTONIĆ MILAN
+ANTONIĆ MILIVOJ
+ANTONIĆ NEBOJŠA DIPL ING
+ANTONIĆ RADISAV
+ANTONIĆ RANKO
+ANTONIĆ RATKO
+ANTONIĆ SIMA
+ANTONIĆ SLAVICA
+ANTONIĆ SLOBODAN
+ANTONIĆ SLOBODAN
+ANTONIĆ STEVAN
+ANTONIĆ ZORKA
+ANTONIJEVIĆ ALEKSANDAR
+ANTONIJEVIĆ BILJANA
+ANTONIJEVIĆ BOŽUR
+ANTONIJEVIĆ BRANKO
+ANTONIJEVIĆ DAMNJAN
+ANTONIJEVIĆ DUŠAN DR
+ANTONIJEVIĆ DUŠAN
+ANTONIJEVIĆ LJILJA
+ANTONIJEVIĆ PETAR
+ANTONIJEVIĆ STEVA
+ANTONINI MARIJA
+ANTONOVIĆ MILIVOJ
+ANTOVIĆ LJUBICA
+ANTUN MILOŠ
+ANTUNOVIĆ ANDRIJA
+ANTUNOVIĆ BOGDAN
+ANTUNOVIĆ GIZELA
+ANTUNOVIĆ LAZAR
+ANTUNOVIĆ MLADEN
+ANTUNOVIĆ MOMČILO
+ANTUNOVIĆ NEDA
+ANTUNOVIĆ TOMISLAV
+ANUČIN NENAD
+ANUKIĆ KOSTA
+APARAC SVETOZAR
+APATOVIĆ JOVAN
+APATOVIĆ LAZAR
+APATOVIĆ NIKOLA
+APATOVIĆ SAVA
+APERLIĆ VOJIN
+APIĆ ĐORĐE
+APIĆ ANKICA
+APIĆ BRANKO DR VETERINE
+APIĆ BRANKO
+APIĆ DUŠAN
+APIĆ JULKA
+APIĆ KATARINA
+APIĆ MILAN
+APIĆ MILAN
+APIĆ MILICA
+APIĆ MILOŠ
+APIĆ MILORAD
+APIĆ MIRJANA
+APIĆ MIROSLAV
+APIĆ OLIVERA
+APIĆ PAJA
+APIĆ PAJA
+APIĆ RADIŠKO
+APIĆ RADIVOJE
+APIĆ RATOMIR DIPL ING
+APIĆ SRETA
+APIĆ STEVAN
+APIĆ STOJAN
+APIĆ SVETOZAR
+APIĆ SVETOZAR
+APIĆ VERA
+APIĆ ZDRAVKO
+APIĆ ZORKA
+APOSTOLOV LJUBOMIR
+APOSTOLOVIĆ BOŽIDAR
+APOSTOLOVIĆ MILORAD
+APRO FRANJA
+APRO JANOŠ
+APRO JOŽEF
+APRO LASLO
+APRO LJUBOMIR
+APRO RIHARD
+APRO-SAMARDŽIJA VERA DR
+APRO STEVAN
+APRO ZOLTAN
+APT BOGOLJUB
+APT MARKO
+ARŠINOV ĐORĐE
+ARŠINOV MILORAD
+ARĐELAM-ŠRAK EDIT
+ARĐELAN IŠTVAN
+ARAČIĆ SLOBODAN
+ARAĐANIN TIMOTIJE
+ARAĐANSKI KATICA
+ARAĐANSKI NADA
+ARAĐANSKI-RAJKOV MAJA
+ARACKI ERŽIKA
+ARACKIĆ ĐORĐE
+ARACKIĆ MILICA
+ARACKIĆ ZLATOJE DIPL PRAVNIK
+ARADSKI ALEKSANDAR DIPL ING
+ARADSKI IVANKA
+ARADSKI MILORAD
+ARADSKI MITA
+ARADSKI RADIVOJ
+ARADSKI SOFIJA
+ARADSKI SRETENKA
+ARADSKI STOJANKA
+ARADSKI ZLATA
+ARALICA RAJKO
+ARAMBAŠIĆ ĐORĐE
+ARAMBAŠIĆ DRAGAN
+ARANČIĆ ALEKSANDAR
+ARANČIĆ KARLO
+ARANĐELOVIĆ ALEKSANDAR
+ARANĐELOVIĆ BOŽIDAR
+ARANĐELOVIĆ DIMITRIJE
+ARANĐELOVIĆ NJEGOVAN
+ARANĐELOVIĆ SAVA
+ARANĐELOVIĆ SRETEN
+ARANĐUS ANTON
+ARANICKI DINKA
+ARANICKI GLIGORIJE
+ARANICKI MILANA
+ARANICKI MILICA
+ARANICKI MILOŠ DR PROF
+ARANICKI ZAGORKA
+ARANICKI ZORICA
+ARANITOVIĆ LAZAR
+ARANJOŠ PAL
+ARAPČIĆ PAŠAGA
+ARAPINAC MILICA
+ARAPOVIĆ DRAGO
+ARAPOVIĆ DRAGUTIN
+ARAR PETAR
+ARAS BRANKO
+ARAS JUGOSLAV
+ARAS LJUBO
+ARBES NENAD
+ARBUNIĆ PERA
+ARBUTINA ĐURĐINKA
+ARBUTINA BRANISLAV
+ARBUTINA MARIJA
+ARBUTINA NATALIJA
+ARBUTINA VELIMIR
+ARBUTINA VLADIMIR
+ARDŽON NATALIJA
+ARDALIĆ JOVANKA
+ARDALIĆ LEPOSAVA
+ARDALIĆ SLAVKO
+ARDELJAN JON
+ARDELJAN MARIJA
+ARDELJAN PETAR
+ARDOCKI IŠTVAN
+AREŽINA ĐORĐE
+AREŽINA BOŠKO
+ARIFI IBRAHIM
+ARIFOVIĆ SRBICA
+ARIZATOVIĆ JASMINA
+ARKULA BLAŽE
+ARKULA SLAVICA
+ARKULA SLAVICA
+ARLOV DRAGAN
+ARMACKI BRANISLAV
+ARMACKI RADOVAN
+ARMACKI SOFIJA
+ARMACKI STEVAN
+ARMBRUSTER LASLO
+ARMBRUSTER MARIJA
+ARNAUT ĐORĐE
+ARNAUT DRAGINJA
+ARNAUT MILICA
+ARNAUT VASA
+ARNOUS TEREZA
+ARNOVLJEVIĆ KATARINA
+AROK-DIVJAK GORDANA
+ARPAŠI ĐORĐE
+ARPAŠI LASLO
+ARSENIĆ ŽIVKO
+ARSENIĆ BRATISLAVA
+ARSENIĆ DIMITRIJE
+ARSENIĆ DRAŠKO
+ARSENIĆ JOVANKA
+ARSENIĆ MOMIR
+ARSENIĆ OLGICA
+ARSENIĆ VELJKO
+ARSENIJEVIĆ BORISLAV
+ARSENIJEVIĆ JOVAN
+ARSENIJEVIĆ MILAN
+ARSENIJEVIĆ MILORAD
+ARSENIJEVIĆ MILOVAN
+ARSENIJEVIĆ MILUNKA
+ARSENIJEVIĆ MOMČILO DR
+ARSENIJEVIĆ MOMČILO
+ARSENIJEVIĆ MOMIR
+ARSENIJEVIĆ SLAVKA
+ARSENIJEVIĆ SMILJA
+ARSENIJEVIĆ VOJISLAV
+ARSENIJEVIĆ VOJISLAV
+ARSENIN ĐURĐINKA
+ARSENIN ALEKSANDAR
+ARSENIN ALEKSANDAR
+ARSENIN BOGOLJUB
+ARSENIN GAJA
+ARSENIN JOVAN
+ARSENIN JOVAN
+ARSENIN KOSTA
+ARSENIN KRISTINA
+ARSENIN MARIJA
+ARSENIN MITA
+ARSENIN MLADEN
+ARSENIN MLADEN
+ARSENIN SVETOZAR
+ARSENIN VITOMIR
+ARSENIN VLADIMIR
+ARSENJEV ALEKSEJ
+ARSENOV ALEKSA
+ARSENOV ARIŠKO
+ARSENOV BRANISLAV
+ARSENOV BRANISLAV
+ARSENOV BRANISLAV
+ARSENOV DRAGICA
+ARSENOV KATICA
+ARSENOV MILAN
+ARSENOV MIROSLAV
+ARSENOV PERA
+ARSENOV PETAR
+ARSENOV PETAR
+ARSENOV RADIVOJ
+ARSENOV SAŠA
+ARSENOV VASILIJE
+ARSENOVIĆ ŽIVKO
+ARSENOVIĆ MARICA
+ARSENOVIĆ NADA DR
+ARSENOVIĆ RADISAV
+ARSENOVIĆ RADOMIR
+ARSENOVIĆ SAVO
+ARSENOVIĆ SRĐAN
+ARSENOVIĆ STOJADIN
+ARSENOVIĆ TRIVO
+ARSENOVIĆ VESNA
+ARSENOVIĆ VLADA
+ARSENOVIĆ ZORAN
+ARSIĆ ČEDOMIR
+ARSIĆ ŽARKO
+ARSIĆ ŽIVKO
+ARSIĆ ALEKSANDAR
+ARSIĆ DOBRIVOJE
+ARSIĆ DUŠKO
+ARSIĆ ERŽEBET
+ARSIĆ LAZAR
+ARSIĆ LIDIJA
+ARSIĆ LJUBIŠA
+ARSIĆ MARIJA
+ARSIĆ MIHAILO
+ARSIĆ MIHOLJKA
+ARSIĆ MILOŠ
+ARSIĆ MILOSLAV DR
+ARSIĆ MILUTIN
+ARSIĆ MIODRAG
+ARSIĆ MIOMIR
+ARSIĆ MIRJANA
+ARSIĆ MIRJANA
+ARSIĆ MOMČILO
+ARSIĆ OBRAD
+ARSIĆ PERICA
+ARSIĆ PETAR
+ARSIĆ RADOMIR
+ARSIĆ RADOSAV
+ARSIĆ SAVETA
+ARSIĆ SLAVKA
+ARSIĆ SLAVOJKA
+ARSIĆ SLAVOLJUB
+ARSIĆ STANKO
+ARSIĆ TOMISLAV
+ARSIĆ TOMISLAV
+ARSIĆ TOMISLAV
+ARSIĆ TRAJAN
+ARSIĆ ZORAN
+ARSIĆ ZORAN
+ARSIĆ ZORAN
+ARSIKIN MILANKO
+ARSIKIN PAVLE
+ARSLANAGIĆ NAĐA
+ARSOVIĆ ALEKSANDAR
+ARSOVIĆ DOBROSAV
+ARSOVIĆ JOVAN
+ARSOVIĆ MATEJA
+ARSOVIĆ MILAN
+ARSOVIĆ MILICA
+ART ĐURA
+ART ZVONIMIR
+ARTUKOV DUŠAN
+ARTUKOV OLGA
+ARULA MIĆO
+ARVAI ALEKSANDAR
+ARVAI ARPAD
+ARVAI DANICA
+ARVAI PAVAO
+ARVAI TEREZA
+ARVAJI PAVAO
+ARVANITIDIS STERJOS
+ASANI ASAN
+ASANI HURIŠA
+ASANI NAILJA
+ASANI NAZIFA
+ASANOV ZORA
+ASANOVIĆ MILEVA
+ASANOVIĆ STANKA
+ASANOVIĆ ZUHRA
+ASANOVSKI ROZALIJA
+ASIĆ MILAN
+ASODI JANOŠ
+ASODI JOŽEF
+ASODI MIRKO
+ASOTIĆ MUAMER
+ASTAHOV-JEREMIĆ MARIJA
+ASTALOŠ IŠTVAN
+ASURDŽIĆ KRISTINA
+ASURDŽIĆ LUKA
+ASURDŽIĆ MILOŠ
+ASURDŽIĆ MILOŠ
+ASURDŽIĆ MILOŠ
+ASURDŽIĆ MOLOŠ
+ASURDŽIĆ NIKOLA
+ASURDŽIĆ NIKOLA
+ASURDŽIĆ SOFIJA
+ASURDŽIĆ STEVAN
+ASURDŽIĆ TEODOR
+ASURDŽIĆ TEODOR
+ATANACKOV ĐORĐE
+ATANACKOV BORA
+ATANACKOV BORIVOJ
+ATANACKOV DRAGAN
+ATANACKOV ILONA
+ATANACKOV MARIJA
+ATANACKOV MIRJANA
+ATANACKOV MIRKO
+ATANACKOV NOVA
+ATANACKOV OLGA
+ATANACKOV PAVLE
+ATANACKOV SAŠA
+ATANACKOV STEVAN
+ATANACKOV STEVAN
+ATANACKOVIĆ ŽIVAN
+ATANACKOVIĆ ĐORĐE
+ATANACKOVIĆ ALEKSANDAR
+ATANACKOVIĆ ANA
+ATANACKOVIĆ BOGOBOJ
+ATANACKOVIĆ BORISLAV
+ATANACKOVIĆ BORISLAV
+ATANACKOVIĆ BRANKA DIPL PRAVNIK
+ATANACKOVIĆ DRAGIŠA DR
+ATANACKOVIĆ DUŠAN DR LEKAR
+ATANACKOVIĆ GRADIMIR
+ATANACKOVIĆ IVAN
+ATANACKOVIĆ KATARINA
+ATANACKOVIĆ LAZA
+ATANACKOVIĆ LUKA
+ATANACKOVIĆ MILENKO
+ATANACKOVIĆ MILENKO
+ATANACKOVIĆ MIRKO
+ATANACKOVIĆ MLADEN
+ATANACKOVIĆ RATKO
+ATANACKOVIĆ SAVA
+ATANACKOVIĆ SLAĐANA
+ATANACKOVIĆ STEVAN
+ATANACKOVIĆ SVETOMIR
+ATANACKOVIĆ TEODOR DR
+ATANACKOVIĆ TOŠA
+ATANACKOVIĆ VASILJKA
+ATANACKOVIĆ VLADIMIR DIPL ING
+ATANACKOVIĆ ZORAN
+ATANASIADIS HRISTOFOROS
+ATANASIJADIS ANESTI
+ATANASKOVIĆ GORDANA
+ATANASKOVIĆ MIRJANA
+ATANASKOVIĆ MIROLJUB
+ATANASOSKI STEVO
+ATANASOV MARKO
+ATANASOVSKI RISTO
+ATARAC DRAGOŠ
+ATELJEVIĆ DUŠAN
+ATELJEVIĆ MILOVAN
+ATIĆ DANICA
+ATLAGIĆ BRANKO
+ATLAGIĆ JOVAN
+ATLAGIĆ MILAN
+ATLAGIĆ MILICA
+ATLAGIĆ ZDRAVKO
+ATLAGIĆ ZDRAVKO
+ATLAS ĐORĐE DR
+ATLAS IVAN
+ATLAS MIRKO
+ATLIĆ LAZAR
+ATLIĆ MILAN
+AUŽINA MILICA
+AUŽINA MIRA
+AUŽINA MIROSLAVA
+AUER MARA
+AUGUSTIN IVICA
+AUGUSTINOV ANTON
+AUGUSTINOV IVAN
+AULIK ILONA
+AURELIJAN ĐAN
+AVAKUMOVIĆ LJUBINKA
+AVAKUMOVIĆ NIKOLA
+AVDALOVIĆ GORDANA
+AVDALOVIĆ MILADIN
+AVDALOVIĆ VIDOSAVA
+AVDALOVIĆ VLADIMIR
+AVDI RAMADAN
+AVDIĆ ALEKSANDAR
+AVDIĆ FUAD
+AVDIĆ GORDANA
+AVDIĆ HUSNIJA
+AVDIĆ MALIĆ
+AVDIĆ MULIJA
+AVEMARIA PETAR
+AVRAMOV BOŠKO
+AVRAMOV BRANISLAV
+AVRAMOV DIMITRIJE
+AVRAMOV DOBRILA
+AVRAMOV GAVRA
+AVRAMOV IVAN
+AVRAMOV JOVANKA
+AVRAMOV JOVAN
+AVRAMOV LJILJANA
+AVRAMOV MILADIN
+AVRAMOV MILEVA
+AVRAMOV MILKA
+AVRAMOV MIRJANA
+AVRAMOV MITA
+AVRAMOV PAJA
+AVRAMOV PERA
+AVRAMOV PETAR
+AVRAMOV RADIVOJ
+AVRAMOV STEVAN
+AVRAMOV SVETOLIK
+AVRAMOV SVETOLIK
+AVRAMOV ZORAN
+AVRAMOV ZORAN
+AVRAMOVIĆ ŽIVKO
+AVRAMOVIĆ BORIVOJE
+AVRAMOVIĆ DARINKA
+AVRAMOVIĆ DIMITRIJE
+AVRAMOVIĆ DIMITRIJE
+AVRAMOVIĆ DRAGO
+AVRAMOVIĆ FRANCIŠKA
+AVRAMOVIĆ GOJKO
+AVRAMOVIĆ ILINKA
+AVRAMOVIĆ JOVAN DR LEKAR
+AVRAMOVIĆ LJUBIŠA
+AVRAMOVIĆ LJUBINKO
+AVRAMOVIĆ LJUBOMIR
+AVRAMOVIĆ MILAN
+AVRAMOVIĆ MILAN
+AVRAMOVIĆ MILAN
+AVRAMOVIĆ MILIVOJ
+AVRAMOVIĆ MIRJANA
+AVRAMOVIĆ MITA
+AVRAMOVIĆ MOMIR
+AVRAMOVIĆ NIKOLA
+AVRAMOVIĆ RADIVOJ
+AVRAMOVIĆ RADOSLAV
+AVRAMOVIĆ RATKO
+AVRAMOVIĆ RATKO
+AVRAMOVIĆ SINIŠA
+AVRAMOVIĆ STANKA
+AVRAMOVIĆ STEVAN
+AVRAMOVIĆ TEODOR
+AVRAMOVIĆ TOMA
+AVRAMOVIĆ VELJKO
+AVRAMOVIĆ VERA
+AVRAMOVIĆ VERA
+AVRAMOVIĆ VERA
+AVRAMOVSKI BORIS
+AZLEN BORISLAV
+BAČA ŠANDOR
+BAČA LADISLAV
+BAČANOVIĆ NENAD
+BAČIĆ ČEDOMIR PROFESOR
+BAČIĆ ŽIVKO
+BAČIĆ ĐORĐE
+BAČIĆ ANTE
+BAČIĆ BRANKA
+BAČIĆ DRAGOSLAV
+BAČIĆ JOVAN
+BAČIĆ KARA
+BAČIĆ MARIJA
+BAČIĆ MILAN DR VETERINE
+BAČIĆ MILICA
+BAČIĆ MIRKO
+BAČIĆ NIKOLA
+BAČIĆ SMILJANA
+BAČKALIĆ ĐORĐE
+BAČKALIĆ ALEKSANDAR
+BAČKALIĆ DOBRA
+BAČKALIĆ DOBRICA
+BAČKALIĆ JOVAN
+BAČKALIĆ LAZAR
+BAČKALIĆ LJUBICA
+BAČKALIĆ LJUBOMIR
+BAČKALIĆ MILAN
+BAČKALIĆ MILA
+BAČKALIĆ NOVAK
+BAČKO MILANA
+BAČKO PETAR
+BAČLIĆ ĐORĐE
+BAČLIĆ BRANISLAV
+BAČLIĆ LAZAR
+BAČLIĆ LJUBICA
+BAČLIJA JOSIP
+BAČLIJA MARKO
+BAČLIJA RUŽICA
+BAČLIJA SLAVICA
+BAČULOV STEVAN
+BAČVANIN ŽIVOJIN
+BAČVANSKI BOŠKO
+BAČVANSKI STEVAN DR ING
+BAŠ JULIA
+BAŠA DUŠAN
+BAŠA JOVAN
+BAŠEVIĆ ČEDOMIR
+BAŠEVIĆ NEVENKA
+BAŠIČEVIĆ VOJIN DR
+BAŠIČEVIĆ VOJIN
+BAŠIĆ ŽARKO
+BAŠIĆ ĐURO
+BAŠIĆ ALEKSANDAR
+BAŠIĆ BILJANA
+BAŠIĆ BOŽO
+BAŠIĆ DRAGUTIN
+BAŠIĆ DRAGUTIN
+BAŠIĆ DUŠAN
+BAŠIĆ DUŠAN
+BAŠIĆ DUŠAN
+BAŠIĆ DUŠAN
+BAŠIĆ DUŠAN
+BAŠIĆ FRANJO
+BAŠIĆ GAVRA
+BAŠIĆ GRUJICA
+BAŠIĆ IDRIZ
+BAŠIĆ ILIJA
+BAŠIĆ JANKO
+BAŠIĆ JELA
+BAŠIĆ JELENA
+BAŠIĆ JOVAN
+BAŠIĆ JOVAN
+BAŠIĆ JURE
+BAŠIĆ LAZAR
+BAŠIĆ LJUBICA
+BAŠIĆ LJUBICA
+BAŠIĆ LUKA
+BAŠIĆ MARIJA
+BAŠIĆ MILAN
+BAŠIĆ MILAN
+BAŠIĆ MILA
+BAŠIĆ MILICA
+BAŠIĆ MILUTIN DIPL ING
+BAŠIĆ MITA
+BAŠIĆ NEDELJKA
+BAŠIĆ NESTOR
+BAŠIĆ NIKOLA
+BAŠIĆ PAVLE
+BAŠIĆ PETAR
+BAŠIĆ RADOSLAV
+BAŠIĆ SAVA
+BAŠIĆ SAVA
+BAŠIĆ SIMKA
+BAŠIĆ SLOBODANKA
+BAŠIĆ SLOBODANKA
+BAŠIĆ SLOBODAN
+BAŠIĆ SLOBODAN
+BAŠIĆ SONJA
+BAŠIĆ SPASOJE
+BAŠIĆ STEVAN
+BAŠIĆ TOMISLAV
+BAŠIĆ VERA
+BAŠIĆEVIĆ DESA
+BAŠICA MILAN
+BAŠICA RANKO
+BAŠICA RISTO
+BAŠKALO MARKO
+BAŠNEC IVAN
+BAŠTIĆ BOŽIDAR
+BAŠTIĆ MILKA
+BAŠTIĆ PETAR
+BAŠTOVANOV DANICA
+BAŠTOVANOV STEVAN
+BAŠTOVANOVIĆ IVAN
+BAŠTOVANOVIĆ MILAN
+BAĆAN DRAGOMIR
+BAĆANOV DRAGICA
+BAĆANOV STANKO
+BAĆANOV STEVAN
+BAĆANOVIĆ DANICA
+BAĆANOVIĆ JUCA
+BAĆANOVIĆ MILAN
+BAĆANOVIĆ MILOŠ
+BAĆANOVIĆ NEMANJA
+BAĆANOVIĆ SINIŠA
+BAĆANOVIĆ STOJAN
+BAĆIĆ LJILJANA
+BAĆIĆ LJUBOMIR
+BAĆINA MLADEN
+BAĆINAC RADOSLAV
+BAŽANČIK BELA
+BAŽANTIK MARA
+BAŽDAR BRUNO
+BAŽDAR MILORAD
+BAŽENOV ANGELINA
+BAĐI ŠANDOR
+BAĐI-RIBAR RENATA
+BAĐIN SMILJKA
+BABA ILONKA
+BABA JANOŠ
+BABA JON
+BABAJIĆ ALEKSANDAR
+BABARIKIN MARKO
+BABEC ZORAN
+BABI IVAN
+BABIĆ ŽARKO
+BABIĆ ŽELJKA
+BABIĆ ŽIVAN
+BABIĆ ŽIVAN
+BABIĆ ĐORĐE
+BABIĆ ĐORĐE
+BABIĆ ĐORĐE
+BABIĆ ĐORĐE
+BABIĆ ĐORĐE
+BABIĆ ĐURĐICA
+BABIĆ ĐURA
+BABIĆ ĐURA
+BABIĆ ĐURO
+BABIĆ ACA
+BABIĆ AIDA
+BABIĆ ALEKSANDAR
+BABIĆ ALEKSANDAR
+BABIĆ ALEKSANDRA
+BABIĆ ALEKSA
+BABIĆ ALKA
+BABIĆ ANA
+BABIĆ ANA
+BABIĆ ANA
+BABIĆ BILJANA
+BABIĆ BOŽICA
+BABIĆ BOŽIDARKA
+BABIĆ BOGDAN
+BABIĆ BOJA
+BABIĆ BORIŠA
+BABIĆ BORISLAVA
+BABIĆ BORIVOJE
+BABIĆ BRANKO
+BABIĆ CVIJO
+BABIĆ DANE
+BABIĆ DARINKA
+BABIĆ DAVID
+BABIĆ DRAŠKO
+BABIĆ DRAGANA
+BABIĆ DRAGAN
+BABIĆ DRAGIŠA
+BABIĆ DRAGIŠA
+BABIĆ DRAGIŠA
+BABIĆ DRAGIŠA
+BABIĆ DRAGIŠA
+BABIĆ DRAGO
+BABIĆ DUŠANKA
+BABIĆ DUŠAN
+BABIĆ DUŠAN
+BABIĆ DUŠAN
+BABIĆ DUŠAN
+BABIĆ DUŠICA
+BABIĆ GOJKO
+BABIĆ GOJKO
+BABIĆ GORAN
+BABIĆ GORDANA
+BABIĆ GORICA
+BABIĆ GOSPAVA
+BABIĆ HELENA
+BABIĆ ILIJA
+BABIĆ ILIJA
+BABIĆ ILIJA
+BABIĆ ILINKA
+BABIĆ IVAN
+BABIĆ IVAN
+BABIĆ IVAN
+BABIĆ JOVAN
+BABIĆ JOVAN
+BABIĆ JOVAN
+BABIĆ JOVAN
+BABIĆ JOVAN
+BABIĆ KATICA
+BABIĆ KAZIMIR
+BABIĆ-KOPLJAN ROŽA
+BABIĆ KOSA
+BABIĆ KOSTADIN
+BABIĆ KOSTA
+BABIĆ KRSTA
+BABIĆ LAZO
+BABIĆ LAZO
+BABIĆ LEONID
+BABIĆ LJILJANA
+BABIĆ LJILJANA
+BABIĆ LJILJANA
+BABIĆ LJUBIŠA
+BABIĆ LJUBICA
+BABIĆ LJUBOMIR
+BABIĆ LJUBOMIR
+BABIĆ LUKA
+BABIĆ MAJA
+BABIĆ MARIJANA
+BABIĆ MARIJA
+BABIĆ MARINKO
+BABIĆ MARKO
+BABIĆ MATO
+BABIĆ MIJO
+BABIĆ MILADIN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILAN
+BABIĆ MILETA
+BABIĆ MILEVA
+BABIĆ MILEVA
+BABIĆ MILIĆ
+BABIĆ MILIVOJE DIPL ING
+BABIĆ MILIVOJ
+BABIĆ MILIVOJ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILOŠ
+BABIĆ MILORAD
+BABIĆ MILORAD
+BABIĆ MILORAD
+BABIĆ MILOSAV
+BABIĆ MIRA
+BABIĆ MIRA
+BABIĆ MIRJANA
+BABIĆ MIROSLAV
+BABIĆ MIROSLAV
+BABIĆ MIROSLAV
+BABIĆ MOMČILO
+BABIĆ MOMIR
+BABIĆ-MRKŠIĆ JULKA
+BABIĆ MURIZ
+BABIĆ NADA
+BABIĆ NADA
+BABIĆ NADA
+BABIĆ NATAŠA
+BABIĆ NEDELJKO
+BABIĆ NENAD
+BABIĆ NIKOLA
+BABIĆ NIKOLA
+BABIĆ NIKOLA
+BABIĆ OLGICA
+BABIĆ OSTOJA
+BABIĆ OSTOJA
+BABIĆ PERSA
+BABIĆ PERSIDA
+BABIĆ PETAR
+BABIĆ PETAR
+BABIĆ PETAR
+BABIĆ PETAR
+BABIĆ PETAR
+BABIĆ PREDRAG
+BABIĆ RADENKO
+BABIĆ RADE
+BABIĆ RADE
+BABIĆ RADINKA
+BABIĆ RADISAV
+BABIĆ RADIVOJE
+BABIĆ RADOJE
+BABIĆ RADOJKA
+BABIĆ RADOJKA
+BABIĆ RADOMIR
+BABIĆ RADOSLAV
+BABIĆ RADOVAN
+BABIĆ RADOVAN
+BABIĆ RAJKO
+BABIĆ RAJKO
+BABIĆ RANKO
+BABIĆ SAŠA
+BABIĆ SAVO
+BABIĆ SLADE
+BABIĆ SLAVICA
+BABIĆ SLOBODAN
+BABIĆ SLOBODAN
+BABIĆ SMILJKA
+BABIĆ SMILJKA
+BABIĆ SNEŽANA
+BABIĆ SOFIJA
+BABIĆ STAKA
+BABIĆ STANKO
+BABIĆ STEVAN
+BABIĆ STEVAN
+BABIĆ STEVAN
+BABIĆ STEVAN
+BABIĆ STEVAN
+BABIĆ STEVO
+BABIĆ SVETLANA
+BABIĆ SVETLANA
+BABIĆ TOMO
+BABIĆ VASA
+BABIĆ VASA
+BABIĆ VERA
+BABIĆ VERICA
+BABIĆ VESNA
+BABIĆ VIDOSAVA
+BABIĆ VUJO
+BABIĆ VUKMAN
+BABIĆ ZAGORKA
+BABIĆ ZDRAVKO
+BABIĆ ZORAN
+BABIĆ ZORAN
+BABIĆ ZORKA
+BABIJANOVIĆ JULKA
+BABILON VLADIMIR
+BABILON VLADIMIR
+BABIN ĐORĐE
+BABIN BOGDAN
+BABIN BRANISLAV
+BABIN DIMITRIJE
+BABIN DUŠAN
+BABIN JOVAN
+BABIN KATARINA
+BABIN KRISTINA
+BABIN LAZAR
+BABIN LJUBOMIR
+BABIN MARIJA
+BABIN MARIN
+BABIN MIHAJLO
+BABIN MILAN
+BABIN MILENA
+BABIN MILENKO DR ING
+BABIN MILENKO
+BABIN MIODRAG
+BABIN MIRJANA
+BABIN MIRJANA
+BABIN NADA
+BABIN NIKOLA
+BABIN PETAR
+BABIN RADOJKA
+BABIN SAVA
+BABIN ZORAN
+BABJAK SLOBODAN
+BABKA JAN
+BABORAC DRAGAN
+BABOVIĆ ČEDOMIR
+BABOVIĆ BRANISLAV
+BABOVIĆ JASMINA
+BABOVIĆ JELENA
+BABOVIĆ JOVAN
+BABOVIĆ LJUBOMIR
+BABOVIĆ MIHAILO
+BABOVIĆ MILISAV
+BABOVIĆ MOMČILO
+BABOVIĆ SINIŠA DR
+BABOVIĆ TOMISLAV
+BABOVIĆ ZORA
+BACKOVIĆ DOBROSLAV
+BACKOVIĆ DRAGAN
+BACKOVIĆ MARIJA
+BACKOVIĆ MILICA
+BACKOVIĆ MILIVOJE
+BACKOVIĆ MILORAD
+BACKOVIĆ MILOVAN
+BACKOVIĆ RADIVOJE
+BADA IŠTVAN
+BADALIĆ MAJDA
+BADANJAC JELENA
+BADNJAR MILAN
+BADNJAR MILIVOJE
+BADNJAR VLADO
+BADNJAREVIĆ ALEKSANDAR DIPL PRAVNIK
+BADNJAREVIĆ BOŽIDAR
+BADNJAREVIĆ MILANA
+BADNJAREVIĆ MIODRAG
+BADNJAREVIĆ RADOŠ
+BADNJAREVIĆ STANA
+BADOVINAC DRAGUTIN
+BADOVINAC NIKOLA
+BADRKIĆ NIKOLA
+BADRLJICA DUŠICA
+BADRLJICA GAVRA
+BADRLJICA LAZAR
+BADRLJICA MLADEN
+BADRLJICA OLGA
+BADRLJICA PETAR
+BADRLJICA RADOJKA
+BAFUS LASLO
+BAGI ĐULA
+BAGI-BENKOVIĆ PAL
+BAGI FERENC
+BAGI IŠTVAN
+BAGI JANOŠ
+BAGIĆ MIRJANA
+BAGINJ LAZAR
+BAGINJ LEPOSAVA
+BAGLAVA MILAN
+BAGONJA JAN
+BAGONJA MARIJA
+BAGONJA NADA
+BAH ERNA
+BAHMAN MARKO
+BAHTIJAREVIĆ JELA
+BAHUN NIKOLA
+BAHUN PETAR
+BAIĆ MIRKO
+BAIĆ STANA
+BAJČETA MOMČILO
+BAJČETA RADOSLAV
+BAJČETIĆ BOGDAN DR
+BAJČETIĆ LJUBICA
+BAJČETIĆ MARIJA
+BAJČETIĆ MARKO
+BAJČETIĆ MILENKO
+BAJČETIĆ MIRKO
+BAJČETIĆ PAVLE
+BAJČETIĆ PETAR
+BAJČEV JOVAN
+BAJČEV MIRJANA
+BAJŠANSKI DRAGOSLAV
+BAJŠANSKI JOVAN
+BAJŠANSKI LJILJANA
+BAJŠANSKI MILADIN
+BAJŠANSKI MILENKO
+BAJŠANSKI RADOVAN
+BAJŠANSKI SAVA
+BAJŠANSKI SAVA
+BAJŠANSKI SMILJA
+BAJŠANSKI ZORAN
+BAJŠEV DRAGOMIR
+BAJŠEV ILIJA
+BAJŠEV MILICA
+BAJŠEV STEVAN
+BAJŠEV SVETISLAV
+BAJŠIĆ ŽARKO
+BAJŠIĆ DRAGAN
+BAJŠIĆ MILAN
+BAJA ĐORĐE
+BAJA STEVAN
+BAJAC BORISLAV
+BAJAC EMILIJA DR
+BAJAC ISAK
+BAJAC LJUBICA
+BAJAC MILAN
+BAJAC MILOŠ
+BAJAC MILUTIN
+BAJAC SVETLANA
+BAJAC VERA
+BAJAGIĆ KATICA
+BAJAGIĆ MILENA
+BAJAGIĆ MIODRAG
+BAJAGIĆ MOMČILO
+BAJAGIĆ MOMČILO
+BAJAGIĆ PETAR
+BAJAGIĆ RADA
+BAJAGIĆ RADE
+BAJAGIĆ SAVO
+BAJAGIĆ SVETOZAR
+BAJAGIĆ TAMARA
+BAJAKIĆ MARA
+BAJALO JOVANKA
+BAJALOVIĆ SOFIJA
+BAJALOVIĆ SVETISLAV
+BAJAT MILORAD
+BAJAT MIRKO
+BAJAT MIRKO
+BAJAT NEDELJKO
+BAJAT NIKOLA
+BAJAT RADOVAN
+BAJAT TRIFUN
+BAJAT VELIMIR
+BAJAZET JEVGENIJA
+BAJAZET TODOR
+BAJAZET VERA DIPL ING
+BAJAZETOV DRAGAN
+BAJAZETOV DRAGAN
+BAJAZETOV RADIVOJ
+BAJAZIT MILAN
+BAJBARAK IVAN
+BAJGO ZOLTAN
+BAJI ARANKA
+BAJI-HRIBAR JULIJA
+BAJI STEVAN
+BAJIĆ ČEDOMIR
+BAJIĆ ŽARKO
+BAJIĆ ŽIKA
+BAJIĆ ŽIVKO
+BAJIĆ ŽIVOJIN
+BAJIĆ ĐORĐE DR
+BAJIĆ ĐURA
+BAJIĆ ĐURO
+BAJIĆ ALEKSANDAR
+BAJIĆ BOŠKO
+BAJIĆ BOŽICA
+BAJIĆ BOGDAN
+BAJIĆ BOGOLJUB
+BAJIĆ BOJKA
+BAJIĆ BORA
+BAJIĆ BORIVOJE
+BAJIĆ BOSILJKA
+BAJIĆ BRANISLAV
+BAJIĆ BRANISLAV
+BAJIĆ BRANISLAV
+BAJIĆ BRANISLAV
+BAJIĆ BRANISLAV
+BAJIĆ BRANKO
+BAJIĆ DANICA
+BAJIĆ DIMITRIJE
+BAJIĆ DRAGICA
+BAJIĆ DRAGOSLAV
+BAJIĆ DRAGUTIN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠAN
+BAJIĆ DUŠKO
+BAJIĆ GOJKO
+BAJIĆ GORDANA
+BAJIĆ ILIJA
+BAJIĆ ILINKA
+BAJIĆ ILONA
+BAJIĆ JAGOŠ
+BAJIĆ JANKO
+BAJIĆ JANKO
+BAJIĆ JELICA
+BAJIĆ JOVAN
+BAJIĆ JOVAN
+BAJIĆ JOVAN
+BAJIĆ JOVICA
+BAJIĆ KRSTA
+BAJIĆ LAZAR
+BAJIĆ LUKA
+BAJIĆ MARA
+BAJIĆ MARA
+BAJIĆ MARICA
+BAJIĆ MARIJA
+BAJIĆ MARIJA
+BAJIĆ MELANIJA
+BAJIĆ MIĆO
+BAJIĆ MIHAJLO DR
+BAJIĆ MILAN DR PROF
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILAN
+BAJIĆ MILENKO
+BAJIĆ MILE
+BAJIĆ MILICA
+BAJIĆ MILKA
+BAJIĆ MILOVAN
+BAJIĆ MIODRAG
+BAJIĆ MIRKO
+BAJIĆ MIRKO
+BAJIĆ MIROSLAV
+BAJIĆ MIROSLAV
+BAJIĆ MIROSLAV
+BAJIĆ MIROSLAV
+BAJIĆ MITAR
+BAJIĆ MITAR
+BAJIĆ MITA
+BAJIĆ MLADEN
+BAJIĆ MLADEN
+BAJIĆ MLADEN
+BAJIĆ MOMČILO
+BAJIĆ NADA
+BAJIĆ NADA
+BAJIĆ NATAŠA
+BAJIĆ NEĐO
+BAJIĆ NEVENA
+BAJIĆ NIKOLA
+BAJIĆ NIKOLA
+BAJIĆ PERA
+BAJIĆ PERO
+BAJIĆ PERSIDA
+BAJIĆ PETAR
+BAJIĆ PETAR
+BAJIĆ RADE
+BAJIĆ RADE
+BAJIĆ RADE
+BAJIĆ RADIVOJ
+BAJIĆ RADMILA
+BAJIĆ RADOSLAV
+BAJIĆ SAVA
+BAJIĆ SAVO
+BAJIĆ SIMO
+BAJIĆ SINIŠA
+BAJIĆ SLAVKO
+BAJIĆ SLAVKO
+BAJIĆ SNEŽANA
+BAJIĆ SNEŽANA
+BAJIĆ SOFIJA
+BAJIĆ SOFIJA
+BAJIĆ SOFIJA
+BAJIĆ SONJA
+BAJIĆ SPASOJE
+BAJIĆ STANISLAV
+BAJIĆ STEVAN
+BAJIĆ STEVAN
+BAJIĆ STEVAN
+BAJIĆ STEVAN
+BAJIĆ SVETLANA
+BAJIĆ TODOR
+BAJIĆ TOMISLAV
+BAJIĆ-TURINSKI MIRJANA
+BAJIĆ VASA
+BAJIĆ VASA
+BAJIĆ VERONA
+BAJIĆ VESELIN
+BAJIĆ VIDA
+BAJIĆ VLADIMIR
+BAJIĆ VLADIMIR
+BAJIĆ VLADIMIR
+BAJIĆ ZORANKA
+BAJIĆ ZORAN
+BAJIĆ ZORAN
+BAJIĆ ZORAN
+BAJIĆ ZORICA
+BAJILO DRAGOMIR
+BAJILO DRAGOMIR
+BAJILO DUŠAN
+BAJILO PERO
+BAJILO VIDOSAVA
+BAJILOV LJILJANA
+BAJIN BORISLAV
+BAJIN BRANISLAV
+BAJIN GAVRILO
+BAJIN IVAN
+BAJIN KAĆA
+BAJIN LJUBICA
+BAJIN MILANKA
+BAJIN NADA
+BAJIN RADOJKA
+BAJIN RAJKO
+BAJIN RUŽICA
+BAJIN SAVA
+BAJIN SAVETA
+BAJIN STOJANKA
+BAJKIN ANĐELKO
+BAJKIN STOJAN
+BAJKIN SVETOZAR
+BAJKIN VESELIN
+BAJKIN VITOMIR
+BAJOR MARIJA
+BAJOVIĆ BRANKO
+BAJOVIĆ MARA
+BAJOVIĆ MITAR
+BAJOVIĆ VERA
+BAJRAMI ŠEFKI
+BAJRAMI ŠEFKI
+BAJRAMI AGRON
+BAJRAMI BATIJA
+BAJRAMI GANI
+BAJRAMI SKENDER
+BAJRAMOVIĆ ŠERIF
+BAJRAMOVIĆ HIVZIJA
+BAJRIĆ RADMILA
+BAJS FRANC
+BAJUNOVIĆ MLADEN
+BAJUS JOŽEF
+BAKŠA ĐORĐE
+BAKŠA IMRE
+BAKŠA JOŽEF
+BAKŠA LAJOŠ
+BAKŠA LAJOŠ
+BAKŠA LASLO
+BAKŠA MAGDA
+BAKŠA MIHAJLO
+BAKŠA ZOLTAN
+BAKŠA ZOLTAN
+BAKA ANTAL
+BAKA IŠTVAN
+BAKA IŠTVAN
+BAKA IŠTVAN
+BAKA IBOLJA
+BAKA MILICA
+BAKAI IREN
+BAKAJ IVAN
+BAKAJ MILJKO
+BAKAJIĆ MILAN
+BAKAJIN DOBRILA
+BAKAJIN LJUBOMIR
+BAKAJIN NEVENKA
+BAKAJIN TODOR
+BAKALIĆ ĐULINKA SUDIJA
+BAKALIĆ MIHAJLO
+BAKALIĆ VOJISLAV
+BAKALOVIĆ NEMANJA
+BAKEV ĐORĐE
+BAKI IRENA
+BAKI OTO
+BAKI VERA
+BAKIŠ ČEDOMIR DIPL ING
+BAKIĆ BORIVOJE
+BAKIĆ DIMITRIJE
+BAKIĆ DUŠAN DIPL ING
+BAKIĆ IVAN
+BAKIĆ JOVAN
+BAKIĆ KOSTA
+BAKIĆ MIJOMIR
+BAKIĆ MILOŠ
+BAKIĆ MILOŠ
+BAKIĆ MILUTIN
+BAKIĆ MIRA
+BAKIĆ MIROSLAV
+BAKIĆ MIROSLAV
+BAKIĆ NADA
+BAKIĆ SINIŠA
+BAKIĆ SONJA
+BAKLAIĆ JOVANKA
+BAKMAZ LAZO
+BAKMAZ LJUBAN
+BAKMAZ ZORAN
+BAKO MIŠA
+BAKOČEVIĆ MIRJANA
+BAKOŠ ĐERĐI
+BAKOŠ GABOR
+BAKOŠ LAJOŠ
+BAKOŠ LASLO
+BAKOŠ MARIJA
+BAKOŠ PAL
+BAKOŠ PETAR
+BAKOŠ TEREZIJA
+BAKOVIĆ RADE
+BAKTAI STEVAN
+BAKUNIĆ IVAN
+BAKUNIĆ VIDOSAVA
+BAKVIĆ MILAN
+BAL KARLO
+BAL ZVONIMIR
+BALČAKOVIĆ VASO
+BALŠIĆ RANKA
+BALA ETELKA
+BALA IŠTVAN
+BALA JANOŠ
+BALA JULIJANA
+BALA JULIJA
+BALA KARLO
+BALA KARLO
+BALA KAROLJ
+BALA LADISLAV
+BALA MIHALJ
+BALA TEREZ
+BALAŠA JOŽEF
+BALAĆ ANA
+BALAĆ DUŠANKA
+BALAĆ JOVAN
+BALAĆ LJUBO
+BALAĆ MIROSLAV
+BALAĆ MIROSLAV
+BALAĆ SLAVKO
+BALAĆ SRBISLAV
+BALAĆ STEVAN
+BALAĆ VUJO
+BALAĆ ZORA
+BALAŽ ŠANDOR
+BALAŽ ĐULA
+BALAŽ ĐULA
+BALAŽ ĐULA
+BALAŽ ĐULA
+BALAŽ ADALBERT
+BALAŽ ANA
+BALAŽ ETELKA
+BALAŽ GEZA
+BALAŽ GEZA
+BALAŽ IRENA
+BALAŽ IVANKA
+BALAŽ JANIKA
+BALAŽ JELISAVETA
+BALAŽ JOSIP
+BALAŽ JOVAN
+BALAŽ KATARINA
+BALAŽ LASLO
+BALAŽ PAL
+BALAŽ PAL
+BALAŽ-PIRI ĐERĐ
+BALAŽ ZITA
+BALAŽEV STIPAN
+BALAŽEVIĆ SLOBODANKA
+BALABAN BOŠKO
+BALABAN BRANKO
+BALABAN MILOVAN
+BALABAN MILUTIN
+BALABAN NEĐO
+BALABAN PETAR
+BALABAN SAVO
+BALABAN SPOMENKA
+BALABAN VID
+BALABAN VUKAŠIN
+BALABANOV ANA
+BALABANOVIĆ BOŠKO
+BALABANOVIĆ MILORAD
+BALABANOVIĆ NIKOLA
+BALABANOVIĆ PETAR
+BALABANOVIĆ VOJISLAV
+BALAJ MIHAJLO
+BALALIĆ DŽEVAD DIPL ING
+BALALIĆ DŽEVAD
+BALANESKO ALEKSANDAR
+BALAT IRENA
+BALATON ĐERĐ
+BALATON ĐERĐ
+BALATON ĐERĐ
+BALATON BELA
+BALATON IMRE
+BALATON MAGDOLNA
+BALATON PETAR
+BALCA VLADIMIR
+BALCA VLADIMIR
+BALDIĆ SLOBODAN
+BALENOVIĆ ANDRIJA
+BALER JOSIP
+BALEVIĆ MILIVOJ
+BALGO FRANCIŠKA
+BALI ALEKSANDRA
+BALI GABOR
+BALI LASLO
+BALIĆ ESAD
+BALIŽ ILDA
+BALIŽ MIHALJ
+BALIŽ ZOLTAN
+BALIND PAL
+BALIND SILVIA
+BALINOVIĆ MILEVA
+BALINOVIĆ SINIŠA
+BALINT ŠANDOR MR
+BALINT ŽIGMUND
+BALINT ĐORĐE
+BALINT ĐURA
+BALINT ANDREJ
+BALINT DEŽE
+BALINT IŠTVAN
+BALINT ILONA
+BALINT IMRE
+BALINT IMRE
+BALINT JOŽEF
+BALINT JOŽEF
+BALINT JOSIP
+BALINT JOSIP
+BALINT JOSIP
+BALINT JULIJANA
+BALINT KAROLJ
+BALINT MAĆAŠ
+BALINT MARGARETA
+BALINT MARIA
+BALINT MARIJA
+BALINT MARIJA
+BALINT MIHAILO
+BALINT MIROSLAV
+BALINT-MITROVIĆ OLGA
+BALINT RADOSLAV
+BALINT ROBERT
+BALINT SLAVOMIR
+BALJ BRANKO
+BALJ MILORAD
+BALJ SAVO
+BALJA IDRIZ
+BALJAK ČEDOMIR
+BALJOŠEVIĆ ALEKSANDAR
+BALJOŠEVIĆ BOGDANKA
+BALJOŠEVIĆ JOVAN
+BALJOŠEVIĆ MIRO
+BALJOZOVIĆ OLIVERA
+BALJOZOVIĆ TOMISLAV DR
+BALKOVOJ VLADIMIR
+BALNOŽAN NEVENKA
+BALNOŽAN SIMA
+BALO GAŠPAR
+BALO PETAR
+BALOŠ NUCA
+BALOŠ TODOR
+BALOŠ TODOR
+BALOBAN MILAN
+BALOBAN MILAN
+BALOG ŠANDOR
+BALOG ŽIVKA
+BALOG ŽUŽANA
+BALOG ĐORĐE
+BALOG ĐORĐE
+BALOG ĐORĐE
+BALOG ĐURA
+BALOG ĐURA
+BALOG ALEKSANDAR
+BALOG ANA
+BALOG ANA
+BALOG ANA
+BALOG ANDRAŠ
+BALOG ANDRIJA
+BALOG BELA
+BALOG BRANKO
+BALOG DEŽE
+BALOG DEŽE
+BALOG DRAGAN
+BALOG DUŠANKA
+BALOG FERENC
+BALOG FRANJA
+BALOG FRANJA
+BALOG FRANJA
+BALOG IŠTVAN
+BALOG IBOJKA
+BALOG IMRE
+BALOG IMRE
+BALOG JOŽEF
+BALOG JOCA
+BALOG JOVAN
+BALOG JULIJANA
+BALOG JULIJANA
+BALOG KALMAN
+BALOG KAROLJ
+BALOG KAROLJ
+BALOG KATARINA
+BALOG LADISLAV
+BALOG LADISLAV
+BALOG LASLO
+BALOG MAGDA
+BALOG MARA
+BALOG MARIJA
+BALOG MARIJA
+BALOG MARIJA
+BALOG MARIJA
+BALOG MARIJA
+BALOG MARTA
+BALOG MILENA
+BALOG MIRKO
+BALOG NIKOLA
+BALOG NIKOLA
+BALOG PIŠTA
+BALOG PIROŠKA
+BALOG SIMA
+BALOG SMILJA
+BALOG SPOMENKA
+BALOG STEVAN
+BALOG STEVAN
+BALOG STEVAN
+BALOG TIBOR
+BALOG VELIMIR
+BALOG ZORAN
+BALOK IŠTVAN
+BALOVIĆ MILIĆ
+BALTA ANA
+BALTIĆ DANICA
+BALTIĆ RADMILA
+BALTIĆ VLADIMIR DR
+BALTOVIĆ DRAGAN
+BALTOVIĆ PETAR
+BALUNOVIĆ IVAN
+BAMBULOVIĆ MILKA
+BAN STEVAN
+BANČEVIĆ PETAR
+BANČEVIĆ RADE
+BANČI BALINT
+BANČI KAROLJ
+BANČIĆ ŽIVKO
+BANČIĆ ALEKSANDAR
+BANČIĆ JOVAN
+BANČIĆ JULKA
+BANČIĆ LAZA
+BANČIĆ MARIJA
+BANČIĆ SOFIJA
+BANČIĆ STEVICA
+BANČIĆ TODOR
+BANĐUR MIRKO
+BANAĆANIN LJILJANA
+BANAĆANIN OLGA
+BANAI TIBOR
+BANAI VERA
+BANAJ JOSIP
+BANDA ŽIVKO
+BANDIĆ BLAGOJE
+BANDIĆ JELICA
+BANDIĆ LJUBOMIR
+BANDIĆ LJUBO
+BANDIĆ RADE
+BANDIĆ SAVKA
+BANDIĆ TOMISLAV
+BANDIĆ VERICA
+BANDIĆ VUJADIN
+BANDIN ŽIVORAD
+BANDIN IVAN
+BANDIN KATICA
+BANDIN MIODRAG
+BANDIN MLADEN
+BANDOBRANSKI OLGA
+BANDOLO DRAGICA
+BANDUKA DRAGUTIN
+BANFI MARIJA
+BANGO LJUDEVIT
+BANIĆ ANĐA
+BANIĆ BOŽIDAR
+BANIĆ BRANKO DR
+BANIĆ EMILIJA
+BANIĆ EVICA
+BANIĆ KATICA
+BANIĆ MILOŠ
+BANIĆ MILOVAN
+BANIĆ PANE
+BANIĆ PETAR
+BANIĆ RADE
+BANIĆ RADOMIR
+BANIĆ RASTKO
+BANIĆ RUŽICA
+BANIĆ SLAVKO
+BANIĆ SVETOZAR
+BANIĆ ZORKA
+BANIĆEVIĆ JELENA
+BANIĆEVIĆ VESELIN
+BANIA-ŽIVADINOVIĆ MIRJANA
+BANJAŠ ĐURA
+BANJAC ČEDOMIR
+BANJAC ČEDO
+BANJAC ČEDO
+BANJAC ŠPIRO DIPL ING
+BANJAC ŽIVAN
+BANJAC ĐORĐE
+BANJAC ĐORĐE
+BANJAC ĐORĐE
+BANJAC BOSILJKA
+BANJAC DANILO
+BANJAC DMITAR
+BANJAC DRAGAN DIPL ING
+BANJAC DRAGAN
+BANJAC DRAGICA
+BANJAC DRAGICA
+BANJAC DUŠAN
+BANJAC DUŠKO
+BANJAC DUŠKO
+BANJAC EMIL
+BANJAC GAVRA
+BANJAC GOJKO
+BANJAC JELENA
+BANJAC JOVAN
+BANJAC JOVAN
+BANJAC KATICA
+BANJAC MILAN
+BANJAC MILAN
+BANJAC MILE
+BANJAC MILORAD
+BANJAC MIRKO
+BANJAC NEDELJKO
+BANJAC NIKOLA
+BANJAC OLGA
+BANJAC PERO
+BANJAC PETAR
+BANJAC RADA
+BANJAC RADONJA
+BANJAC SAVA
+BANJAC SAVA
+BANJAC SAVETA
+BANJAC SAVO
+BANJAC SLAVKO
+BANJAC SLAVNA
+BANJAC SLOBODAN
+BANJAC STEVAN
+BANJAC TEODOR
+BANJAC VESNA
+BANJAC VINKO
+BANJAC VITOMIR
+BANJAC VOJISLAV
+BANJAI JAGA
+BANJAI JANOŠ
+BANJAI JOVAN
+BANJAI LAJOŠ
+BANJAI MAĆAŠ
+BANJAI MARIJA
+BANJAI ROMAN
+BANJAI RUŽA
+BANJANAC BRANKO
+BANJANAC BRATISLAV
+BANJANAC MILAN
+BANJANAC RADE
+BANJANAC SLAVICA
+BANJANIN DANICA
+BANJANIN DARA
+BANJANIN JELENA
+BANJANIN JELISAVETA
+BANJANIN JOVAN
+BANJANIN NEDELJKO
+BANJANIN NEDELJKO
+BANJANIN NIKOLA
+BANJANIN NIKOLA
+BANJANIN RADMILA
+BANJANIN SOFIJA
+BANJANIN VELIMIR
+BANJARI LAJOŠ
+BANJEGLAV BOŽA
+BANJEGLAV DRAGAN
+BANJEGLAV DUŠAN
+BANJEGLAV NIKOLA
+BANJEGLAV RADIVOJ
+BANJEVIĆ SLOBODANKA
+BANKA LAJOŠ
+BANKOVAČKI ĐURA
+BANKOVAČKI JOVAN
+BANKOVAČKI MARIJA
+BANKOVAČKI NADA
+BANKOVAČKI PETAR
+BANKOVAČKI SAVA
+BANKOVAČKI SVETOZAR
+BANKOVIĆ MILUN
+BANOVČANIN DRAGICA
+BANOVČANIN MILAN
+BANOVČANIN MOMČILO
+BANOVAČKI ĐORĐE
+BANOVAČKI JOVAN
+BANOVAČKI MARIJA
+BANOVAČKI RUŽICA
+BANOVIĆ ŽARKO
+BANOVIĆ ŽIVORAD
+BANOVIĆ DUŠAN
+BANOVIĆ JOVANKA
+BANOVIĆ LEPOSAVA
+BANOVIĆ-LOC NADA
+BANOVIĆ MILAN
+BANOVIĆ MILAN
+BANOVIĆ MILJKO
+BANOVIĆ NIKOLA
+BANOVIĆ SLAVA
+BANOVIĆ SLOBODAN
+BANSKI ERIKA
+BANSKI MARIJA
+BARČIKIN ĐORĐE
+BARŠI ENDRE
+BARŠI LASLO
+BARAČANIN DANICA
+BARAČANIN LAZAR
+BARAČANIN PAJA
+BARAČANIN SAVKA
+BARAČI STEVAN
+BARAČKOV ČEDOMIR
+BARAČKOV ĐORĐE
+BARAČKOV GORINKA
+BARAČKOV MILAN
+BARAČKOV SREDOJE
+BARAČKOV VESELIN
+BARAŠEVIĆ MIROSLAVA
+BARAŠEVIĆ TOMISLAV
+BARAŠIN GORAN
+BARAŠIN LJUBOMIR
+BARAŠIN NEVENKA
+BARAŠIN SAVA
+BARAĆ ŽARKO
+BARAĆ DRAGICA
+BARAĆ DUŠANKA
+BARAĆ GODIMIR
+BARAĆ GOJKO
+BARAĆ JOSIP
+BARAĆ KOVILJKA
+BARAĆ MILAN
+BARAĆ MILOŠ
+BARAĆ MILOŠ
+BARAĆ MILOSAVA
+BARAĆ MOMČILO
+BARAĆ RADONJA
+BARAĆ SARAFINA
+BARAĆ STANIMIRKA
+BARAĆ VESELIN
+BARAĆ VIDAK
+BARAĆ VUČINA
+BARAC MALIŠA
+BARAC MARKO
+BARAC NOVO
+BARAC TOMISLAV
+BARAJEVAC JOVA
+BARAKO SAVA
+BARALIĆ MIROSLAV
+BARAN JAKIM
+BARAN MIHAJLO
+BARAN MIRON DIPL ING
+BARANIN VASILIJE
+BARANJAI JENE
+BARANJI FERENC
+BARANJI FERENC
+BARANJI LASLO
+BARANJI PAVLE
+BARANJI STEVAN
+BARANOVSKI VLADA
+BARAS TOMA DR
+BARAT ALEKSANDAR
+BARAT DRAGICA
+BARAT DRAGINJA
+BARAT FERENC
+BARAT IMRE
+BARAT OLGA
+BARAT OSKAR
+BARATOV BOŠKO
+BARBARIĆ ANTE
+BARBARIĆ PAVLE
+BARBATESKOVIĆ LJUBIŠA
+BARBERIĆ DRAGAN
+BARBERIĆ MIRKO
+BARBIR ANTE
+BARBIR LJUBA
+BARBU VASA
+BARBUL MARIJA
+BARBUL MILAN
+BARBUL MILAN
+BARBUL SAVA
+BARBUL STOJAN
+BARBUL VLADISLAVA
+BARBULOV DIMITRIJE
+BARBULOV DOBRIVOJ
+BARBULOV MILIVOJ
+BARBULOV NIKOLA
+BARBULOVIĆ DRAGAN
+BARBUZAN JASNA
+BARBUZAN RUŽICA
+BARCAL ĐERĐ
+BARCAL ANA
+BARCAL JOŽEF
+BARCAL LASLO DIPL ING
+BARCEL KATICA
+BARDAK ALEKSANDAR
+BARDAK ANKICA
+BARDAK LUKA
+BARDIĆ ŽELJKO
+BARDIĆ MIRKO
+BARDOŠ JOŽEF
+BARDOŠ MELANIJA
+BARDUN KARLO
+BAREŠIĆ IVAN
+BAREŠIĆ MATO
+BARETIĆ DRAGOLJUB
+BARIČEVIĆ STIPE
+BARIČIĆ BISERKA
+BARIŠIĆ ANĐELKO
+BARIŠIĆ BLAGOJE
+BARIŠIĆ BOŠKO
+BARIŠIĆ ILIJA
+BARIŠIĆ ILIJA
+BARIŠIĆ JANJA
+BARIŠIĆ LJUBICA
+BARIŠIĆ MARKO
+BARIŠIĆ MILAN
+BARIŠIĆ MILAN
+BARIŠIĆ PETAR
+BARIŠIĆ STJEPAN
+BARIŠIĆ VERONIKA
+BARIŠIĆ ZORKA
+BARIĆ LJUBICA
+BARIĆ PAULINA
+BARIĆ SLAVICA
+BARJAKTAR SPASENIJA
+BARJAKTAR STEVA
+BARJAKTAREVIĆ ŽIVKO
+BARJAKTAREVIĆ DRAGAN
+BARJAKTAREVIĆ MARA
+BARJAKTAREVIĆ MARA
+BARJAKTAREVIĆ MILAN
+BARJAKTAREVIĆ MILKA
+BARJAKTAREVIĆ MILOJE
+BARJAKTAREVIĆ VALERIJA
+BARJAKTAREVIĆ ZLATKO
+BARJAKTAROV MILICA
+BARJAKTAROVIĆ ĐOKO
+BARJAKTAROVIĆ ANKA
+BARJAKTAROVIĆ MILOŠ
+BARJAKTAROVIĆ SNEŽANA
+BARJAKTAROVIĆ VUČINA
+BARJAKTAROVIĆ VUČINA
+BARJAKTAROVIĆ ZORKA
+BARJAMOVIĆ ALIL
+BARJAMOVIĆ ARSENIJE
+BARJAMOVIĆ SLOBODAN
+BARNA GAŠPAR
+BARNA IVAN
+BARNA JANOŠ
+BARNA JOSIP
+BARNA MIHALJ
+BARO FRANJO
+BARO JELENA
+BARO JOŽEF
+BARO JOŽEF
+BARO JOSIP
+BAROŠ BOŽO
+BAROŠ BORISLAV DR
+BAROŠ BORISLAV
+BAROŠ LAZO
+BAROŠ NEBOJŠA
+BAROŠ NIKOLA
+BAROŠ NIKOLA
+BAROŠEVIĆ JOVO
+BAROVIĆ VELIMIR
+BAROVIĆ VOJISLAV
+BARTA ĐERĐ
+BARTA ĐORĐE
+BARTA ARPAD
+BARTA DEŽE
+BARTA EMA
+BARTA ILDIKO
+BARTA IRMA
+BARTA MAGDALENA
+BARTEK ANDRIJA
+BARTEK KATARINA
+BARTEK RUDOLF DIPL ING
+BARTEK STEVAN
+BARTOŠ DANILO
+BARTOŠ DRAGICA
+BARTOŠ IMRE
+BARTOŠ LADISLAV
+BARTOŠ LASLO
+BARTOŠ SVETLANA
+BARTOŠ ZVONIMIR
+BARTOJ MIRJANA
+BARTOK MARGIT
+BARTOLOVIĆ ANTUN
+BARTOLOVIĆ JOSIP
+BARTOLOVIĆ MARIN
+BARTULOVIĆ PAVLE
+BARUŠIĆ MARTIN
+BARUDŽIJA MARKO
+BARUDANOV DUŠANKA
+BASARA ĐURO
+BASARA ANKA
+BASARA DIVNA
+BASARA DRAGICA
+BASARA JOVAN
+BASARA MARTA
+BASARA MILIVOJ
+BASARA MIRA
+BASARA PAJO
+BASARABA DUŠICA
+BASARIĆ BOGDAN
+BASARIĆ DANE
+BASARIĆ DRAGINJA
+BASARIĆ DUŠAN
+BASARIĆ JELENA
+BASARIĆ JOVAN
+BASARIĆ LJUBOMIR
+BASARIĆ MILAN
+BASARIĆ MILAN
+BASARIĆ MILKA
+BASARIĆ MIRJANA
+BASARIĆ NIKOLA
+BASARIĆ STEVAN
+BASARIĆ VERA
+BASIĆ KOVILJKA
+BASIĆ SRĐAN
+BASIOLI SREĆKO
+BASKIJIN ZORA
+BASRAK BRANKO
+BASRAK MILAN
+BASTA DANE
+BASTA DANIELA
+BASTA DRAGUTIN
+BASTA DUŠAN
+BASTA IVANA
+BASTA KATICA
+BASTA LJUBICA
+BASTA MARIJA
+BASTA MARIJA
+BASTA MARIJA
+BASTA MILAN
+BASTA MILOŠ
+BASTA MIROSLAV
+BASTA NIKOLA
+BASTA STEVA
+BASTA VLADO
+BASTAH BRANKO
+BASTAJA BRANKO
+BASTAJA MILAN
+BATA DEZIDER
+BATA ILONA
+BATA KAROLJ
+BATA LASLO
+BATA LASLO
+BATA MARGITA
+BATAJIĆ BOGOLJUB
+BATAK EMIL
+BATAK MIRKO
+BATAKOVIĆ KOSARA
+BATAKOVIĆ MILAN
+BATAKOVIĆ VITOMIR
+BATALOV RADICA
+BATANČEV JOVAN
+BATANČEV SLAVNA
+BATANJSKI MILAN
+BATANJSKI MILAN
+BATANOVIĆ ANKA
+BATAR ČEDOMIR
+BATAR ČEDOMIR
+BATAR MILOŠ
+BATAR MOMIR
+BATAR SLOBODAN
+BATAR VELIMIR
+BATAR VOJIN
+BATARILO ŽELJKO
+BATAS BOŽANA
+BATAZ VLADO
+BATERNEK IVAN
+BATIĆ ĐURAĐ
+BATIĆ BOŽIDAR
+BATIĆ BRANKA
+BATIĆ IVANA
+BATIĆ MIHAJLO
+BATINIĆ ĐURO
+BATINIĆ DRAGAN
+BATINIĆ GORDANA
+BATINIĆ SAVA
+BATINIĆ SPASOJE
+BATISTIĆ IVAN
+BATKIĆ JUSUF
+BATKIĆ STANISLAVA
+BATKOVIĆ MARA
+BATORI JANOŠ
+BATORI JOŽEF
+BATORI MARIJA
+BATORI MARIJA
+BATORI MIHALJ
+BATORI MIHALJ
+BATORI MIHALJ
+BATOS ALEKSANDAR
+BATOS BOŠKO
+BATOS BOŠKO
+BATOS MILAN
+BATOS NADA
+BATOS RADIVOJ
+BATOS ZORICA
+BATRNEK ZDENKA
+BATURAN OBRAD
+BATURAN RADOVAN
+BAUER EVA
+BAUER JULIJANA
+BAUER KSENIJA
+BAUER OTO
+BAUK DRAGAN
+BAUKOV VLADIMIR
+BAURANOV LAZAR
+BAVARČIĆ MILORAD
+BAVARČIĆ VESELIN
+BAZANČIK VALERIJA
+BAZOKIN ŽIVICA
+BEČ JANJA
+BEČEI LAJOŠ
+BEČEJAC ALEKSANDAR
+BEČEJAC BOŠKO
+BEČEJAC BRANISLAV
+BEČEJAC JOVAN
+BEČEJAC KAMENKO
+BEČEJAC MILAN
+BEČEJAC RADENKO
+BEČEJAC RADOJKA
+BEČEJAC SAVA
+BEČELIĆ ĐORĐE
+BEČELIĆ BISERKA
+BEČELIĆ BOSILJKA
+BEČELIĆ DOBRINKO
+BEČELIĆ DRAGICA
+BEČELIĆ GINA
+BEČELIĆ JOVAN
+BEČELIĆ LAZAR
+BEČELIĆ MARIJA
+BEČELIĆ MARIJA
+BEČELIĆ MILAN
+BEČELIĆ MILENA
+BEČELIĆ MILICA
+BEČELIĆ MILOŠ
+BEČELIĆ PETAR
+BEČELIĆ RADIVOJ
+BEČELIĆ RADOVAN
+BEČELIĆ STEVAN
+BEČELIĆ STEVAN
+BEČELIĆ VASA
+BEČELIĆ VESELIN
+BEČELIĆ VESELIN
+BEČIĆ MUHIBA
+BEČIĆ VEROLJUB
+BEČKEI JANOŠ
+BEČKEI PETAR
+BEČKEJI KARLO
+BEČVARDI ALEKSANDAR
+BEČVARDI JOSIP
+BEŠANIĆ BOŽANA
+BEŠANIĆ ZDRAVKO
+BEŠENJI KARLO
+BEŠENJI KARLO
+BEŠENSKI NIKOLA
+BEŠEVIĆ ALEKSA
+BEŠEVIĆ JOVAN
+BEŠEVIĆ MIRJANA
+BEŠEVIĆ NIKOLA DIPL OEC
+BEŠIĆ MARIJA
+BEŠIĆ MARIJA
+BEŠIĆ MEHMED
+BEŠIĆ MIHAJLO
+BEŠIĆ SLOBODAN
+BEŠIĆ SVETISLAV
+BEŠKER ANDRIJA
+BEŠKER BOŽO
+BEŠKER SREĆKA
+BEŠLIĆ JOVAN
+BEŠLIĆ TEREZIJA
+BEŠLIJA GOSPAVA
+BEŠLIN ŽIVKO DIPL OEC
+BEŠLIN BRANKO
+BEŠLIN IVAN
+BEŠLIN IVICA
+BEŠLIN JELISAVETA
+BEŠLIN MIODRAG
+BEŠLIN STOJAN
+BEŠLIN VLADISLAVA
+BEĆAGUL SAVA
+BEĆIN ALEKSANDAR
+BEĆIN OLGA
+BEĆIROVSKI ADEM
+BEŽAN VIKTOR
+BEŽANOV ALEKSANDAR
+BEŽANOV BRANISLAV
+BEŽANOV DRAGOLJUB
+BEŽANOV MIROLJUB
+BEŽANOVIĆ ĐORĐE
+BEADER JOVAN
+BEARA ŽIVKO
+BEARA ĐORĐE
+BEARA JOVAN
+BEARA MARKO
+BEARA PETAR
+BEARA PETAR
+BEATOVIĆ NEBOJŠA
+BEBEK MATO
+BEBELJA-MATUŠ ANKA
+BEBIĆ ANA
+BEBIĆ LJILJANA
+BEBIĆ NEVENKA
+BEBIĆ NEVENKA
+BEBIĆ PETAR
+BEBIĆ STOJANKA
+BECE BELA
+BECE TIBOR
+BECIĆ STEVAN
+BEDŽETI MARIJA
+BEDAK BILJANA
+BEDE ŠANDOR
+BEDE PETAR DR
+BEDE PETAR
+BEDEKOVIĆ ANTON
+BEDNARIK ANDRIJA
+BEDNARIK DARINKA
+BEDNARIK JANOŠ
+BEDNARIK JOSIP
+BEDNARIK MIHALJ
+BEDOV BISERKA
+BEDOV JOVAN
+BEDOV LJUBICA
+BEDOV MARIJA
+BEDOV MIROSLAV
+BEDOV NADA
+BEDOV PREDRAG
+BEDOV RADA
+BEDOV SRĐAN
+BEDOV SUNČICA
+BEDOV SVETISLAV
+BEDRIK ALEKSANDAR
+BEG ANDRIJA
+BEG-VALOVIČIĆ ANĐELKO
+BEG-VOLOVIČIĆ IVAN
+BEGANI ŠERIF
+BEGANOVIĆ MEHMED
+BEGANOVIĆ SANID
+BEGEČKI RAJKO
+BEGEČKI SAVA
+BEGENIŠIĆ DRAGORAD
+BEGENIŠIĆ VUKAŠIN
+BEGIĆ MILOŠ
+BEGIĆ MIRKO
+BEGLERBEGOVIĆ DŽEVAD
+BEGOJEV ANKA
+BEGOJEV BOGDAN
+BEGOJEV LAZAR
+BEGOJEV LAZA
+BEGOJEV PETAR
+BEGOJEV RADOJKA
+BEGOJEV TOŠA
+BEGOJEVIĆ RADIVOJ
+BEGOVIĆ EVICA
+BEGOVIĆ JASMINA
+BEGOVIĆ JOVAN
+BEGOVIĆ LADISLAV
+BEGOVIĆ-LIVAJA ILIJA
+BEGOVIĆ LJUBAN
+BEGOVIĆ MILIJA
+BEGOVIĆ MILORAD
+BEGOVIĆ MIRKO
+BEGOVIĆ ROĆKO
+BEGOVIĆ SAVO
+BEGOVIĆ TODOR
+BEGOVIĆ ZORO
+BEHER EVA
+BEHERANO JOSIP
+BEHTER ALEKSANDAR
+BEJAROVIĆ MARKO
+BEJAROVIĆ NENAD
+BEJATOVIĆ ĐORĐE
+BEJATOVIĆ MILORAD
+BEJATOVIĆ MIRKO
+BEJTOVIĆ ALIJA
+BEK ANTONIJA
+BEK DRAGANA
+BEK JOVAN
+BEK LADISLAV
+BEK LJILJANA
+BEK RUŽA
+BEK STEVAN
+BEKČIĆ MILORAD
+BEKAREK ILINKA
+BEKE LASLO
+BEKE MARIJAN
+BEKER FREDERIK
+BEKER IŠTVAN
+BEKER IDA
+BEKER JOŽEF
+BEKER JOSIP
+BEKER STEVAN
+BEKIĆ BORIS
+BEKIĆ BRANKA
+BEKIĆ JURE
+BEKIĆ MILORAD
+BEKIĆ TOMISLAV
+BEKIĆ VERA
+BEKRIĆ DRAGAN
+BEKRIĆ MIRA
+BEKRIĆ TOMISLAV
+BEKTAŠ DANICA
+BEKTAŠ SLAVKO
+BEKUT DRAGAN
+BEKUT PETAR
+BEKVALAC ŽIVAN
+BEKVALAC BRANISLAV
+BEKVALAC BRANISLAV
+BEKVALAC BRANKA
+BEKVALAC BRANKO
+BEKVALAC BRANKO
+BEKVALAC DRAGOLJUB
+BEKVALAC EMILIJA
+BEKVALAC ISA
+BEKVALAC LAZAR
+BEKVALAC LJUBICA
+BEKVALAC LJUBICA
+BEKVALAC LJUBINKO
+BEKVALAC MARA
+BEKVALAC MIJA
+BEKVALAC MILANKO
+BEKVALAC MILAN
+BEKVALAC MILISAV
+BEKVALAC MIRJANA
+BEKVALAC RADIVOJ
+BEKVALAC RADMILA
+BEKVALAC SERAFINA
+BEKVALAC STEVAN
+BELČEVIĆ GRADIMIR
+BELČEVIĆ RATKO
+BELAK ŠANDOR
+BELAK ANA
+BELAK MARGITA
+BELAK MIJO
+BELAK VLADA
+BELAN JOŽEF
+BELANČIĆ ELIZABETA
+BELANOVIĆ ĐORĐE
+BELANOVIĆ ALEKSANDRA
+BELANOVIĆ KATICA
+BELANOVIĆ MILIVOJ
+BELANOVIĆ TIBOR
+BELECKI JELENA
+BELEGIŠANIN DRAGOMIR DR
+BELESLIJIN MILORAD
+BELESLIJIN SLOBODAN
+BELESLIN DOBRILA
+BELESLIN MIROSLAV
+BELESLIN SVETOZAR DR
+BELETIĆ JELENA
+BELI ANDRIJA
+BELI EMIL
+BELI ROZALIJA
+BELI STEVAN
+BELI VOJISLAV
+BELIČKA ANA
+BELIČKA BRANISLAV
+BELIČKA MIROSLAV
+BELIĆ ŽIVKA
+BELIĆ ĐORĐE
+BELIĆ ĐORĐE
+BELIĆ ĐURICA
+BELIĆ BOŠKO
+BELIĆ BOŽIDAR
+BELIĆ BOŽIDAR
+BELIĆ BORISLAV
+BELIĆ BORISLAV
+BELIĆ BORIS
+BELIĆ BORIVOJE
+BELIĆ BORIVOJE
+BELIĆ BRANISLAV
+BELIĆ-BRKIĆ VLADISLAVA
+BELIĆ DANICA
+BELIĆ DANIJELA
+BELIĆ DRAGAN
+BELIĆ DRAGICA
+BELIĆ DRAGUTIN
+BELIĆ DUŠAN DR
+BELIĆ DUŠAN DR
+BELIĆ DUŠAN
+BELIĆ DUŠAN
+BELIĆ DUŠAN
+BELIĆ DUŠKO
+BELIĆ DUŠKO
+BELIĆ FLORIKA
+BELIĆ ILIJA
+BELIĆ JOSIM
+BELIĆ JOVANKA
+BELIĆ JOVICA
+BELIĆ JULIJANA
+BELIĆ JULKA
+BELIĆ LAZAR
+BELIĆ LJUBICA
+BELIĆ MARICA
+BELIĆ MILAN
+BELIĆ MILAN
+BELIĆ MILAN
+BELIĆ MILAN
+BELIĆ MILENA
+BELIĆ MILIVOJ
+BELIĆ MILOŠ
+BELIĆ MILORAD
+BELIĆ MIRJANA
+BELIĆ MIROSLAV
+BELIĆ NENAD
+BELIĆ NESTOR
+BELIĆ NIKOLA
+BELIĆ PETAR
+BELIĆ PETAR
+BELIĆ RADINKA
+BELIĆ RADOJKA
+BELIĆ RADOSLAV
+BELIĆ RADOVAN
+BELIĆ SAVA
+BELIĆ SENA
+BELIĆ SIMA
+BELIĆ SLAVKO DIPL ING
+BELIĆ SLAVKO
+BELIĆ SLOBODANKA
+BELIĆ SOFIJA
+BELIĆ SRĐAN
+BELIĆ STANKO
+BELIĆ STEVAN
+BELIĆ STOJANKA
+BELIĆ STOJAN
+BELIĆ SVETISLAV
+BELIĆ SVETISLAV
+BELIĆ SVETLANA
+BELIĆ TODOR
+BELIĆ VERA
+BELIĆ VESNA
+BELIĆ VLADISLAV
+BELIĆ VLADISLAV
+BELIĆ VOJISLAV
+BELIĆ VUKA
+BELIĆ ZORA
+BELIMARKOVIĆ SLAVOLJUB
+BELINIĆ ĐURA
+BELINSKI ALEKSANDAR
+BELINSKI SPASENIJA
+BELJAKOV MILICA
+BELJANSKI ŽIVKA
+BELJANSKI ŽIVKA
+BELJANSKI ĐORĐE
+BELJANSKI ĐORĐE
+BELJANSKI ĐORĐE
+BELJANSKI ANĐELIJA
+BELJANSKI ANKICA
+BELJANSKI-BAJIĆ KAĆUŠA
+BELJANSKI BORA
+BELJANSKI BORA
+BELJANSKI BORIVOJ
+BELJANSKI DRAGANA
+BELJANSKI DRAGICA
+BELJANSKI EMILIJA
+BELJANSKI GAVRA
+BELJANSKI GORDANA
+BELJANSKI JELISAVETA
+BELJANSKI JOVAN
+BELJANSKI JOVAN
+BELJANSKI JULIJANA
+BELJANSKI LAZAR
+BELJANSKI LAZAR
+BELJANSKI LAZAR
+BELJANSKI LEPOJKA
+BELJANSKI LJUBOMIR
+BELJANSKI MILAN
+BELJANSKI MILENKO
+BELJANSKI MILORAD
+BELJANSKI MILORAD
+BELJANSKI MILUTIN
+BELJANSKI MIRJANA
+BELJANSKI PAVLE
+BELJANSKI RADA
+BELJANSKI RADMILA
+BELJANSKI RADOVAN
+BELJANSKI RANKO
+BELJANSKI RUŽICA
+BELJANSKI SLOBODAN
+BELJANSKI STEVAN
+BELJANSKI TEODOR
+BELJANSKI TOŠA
+BELJANSKI VASILIJE
+BELJANSKI VERA
+BELJANSKI VLADIMIR
+BELJANSKI VLADISLAV
+BELJANSKI VOJISLAV
+BELJANSKI ZAGORKA
+BELJANSKI ZDENKA
+BELJIN ŽIVA
+BELJIN ĐORĐE
+BELJIN BRANISLAVA
+BELJIN DIMITRIJE
+BELJIN MARIJA MAGDALENA
+BELJIN NEDELJKO
+BELJIN RADIVOJ
+BELJIN RADOSLAV
+BELJIN RUŽA
+BELJIN SAVA
+BELJIN SOFIJA
+BELJIN VLADIMIR
+BELJINAC ZORAN
+BELOŠEV NEVENKA
+BELOBRADIĆ MILAN
+BELOBRADIĆ SAVA
+BELOBRK BRANISLAV
+BELOBRK DRAGOSLAV
+BELOBRK LIVIJE
+BELOCIĆ MILENKO
+BELOCIĆ RADMILA
+BELOICA RADOSLAV
+BELOICA VIDAN
+BELOPAVLOVIĆ DRAGA DR
+BELOPAVLOVIĆ MILOJKO
+BELOPAVLOVIĆ ZORAN DR
+BELOPAVLOVIĆ ZORAN DR
+BELOSAVIĆ JELICA
+BELOTI IVANKO
+BELOVARI IVAN
+BELOVIĆ BILJANA
+BELOVIĆ RADA
+BELOVIĆ STEVAN
+BELUŠEVIĆ BOŽIDAR
+BELUŠEVIĆ NOVICA
+BELUŽIĆ DARINKA
+BELUŽIĆ STJEPAN
+BEM IVAN
+BEM JOVAN
+BEM KARLO
+BEM MIROSLAV
+BEMILER MAGDALENA
+BENČIK ĐULA
+BENČIK ILONKA
+BENA MILOSAVA
+BENAŠIĆ VINKO
+BENAK PAL
+BENARIK LASLO
+BENARIK MAGDALENA
+BENC BRANISLAVA
+BENC DRAGAN
+BENCE MARIJA
+BENCE MIHALJ
+BENCE MIKEŠ
+BENCETIĆ ANDRIJA
+BENCETIĆ LJUDEVIT
+BENCUN VELINKA
+BENDEK MILAN
+BENEŠ LJUDMILA
+BENEŽAN LJUBICA
+BENEDEKOVIĆ IVAN
+BENGIN-ĐURKIĆ NEZA
+BENGIN BOŽIDAR
+BENGIN DOBRINKA
+BENGIN DUŠAN
+BENGIN KOVICA
+BENGIN MILAN
+BENIČAK KARLO
+BENIČAK MAGDALENA
+BENIŠEK DRAGUTIN
+BENIĆ EVA
+BENIĆ GRUJICA
+BENIĆ PETAR
+BENIĆ SEKULA
+BENIĆ ZDENKO
+BENIN ŽIVOJIN
+BENJA KATARINA
+BENJAK DRAGOSLAVA
+BENJAK EVICA
+BENKA MARIJA
+BENKA MIHAILO
+BENKE ELZA
+BENKOVIĆ JOCA
+BENKOVIĆ JOCA
+BENO TIBOR
+BENOVIĆ JOSIP
+BENOVIĆ STANA
+BEOČANIN JOVAN
+BEOČANIN MIODRAG
+BEOČANIN PAVLE
+BEODRANSKI DRAGOMIR
+BEODRANSKI STOJAN
+BEOKOVIĆ DAMIR
+BER ALEKSIJE
+BER FRANJO
+BERČEK ĐERĐ
+BERČEK BOŽIDAR
+BERČEK FRANJA
+BERČEK LADISLAV
+BERČEK MARIJA
+BERČEK MIHAILO
+BERČEK OSKAR
+BERČEK SANISLO
+BERĆAN MIRJANA
+BERĆAN PETAR
+BERĆAN SLAVKO
+BERA ĐORĐO
+BERA DRAGAN
+BERAK NEBOJŠA
+BERANOVIĆ ALEKSANDAR
+BERAR ŽIVANA
+BERAR BORIVOJ
+BERAR BRANISLAV
+BERAR BRANISLAV
+BERAR DUŠANKA
+BERAR MILAN
+BERAR MILAN
+BERAR MILAN
+BERAR RADIVOJ
+BERAR SLOBODAN
+BERAR SLOBODAN
+BERAR TIMA
+BERAR VLADIMIR
+BERAROV ĐURICA
+BERBAKOV LJUBICA
+BERBAKOV MARA
+BERBAKOV MILOŠ
+BERBAKOV PETAR
+BERBAKOV STEVAN
+BERBATOVIĆ ŽARKO
+BERBATOVIĆ MIRJANA
+BERBER LJILJANA
+BERBER STEVAN
+BERBERIĆ JELISAVETA
+BERBERIĆ JOVAN
+BERBERIĆ LAZAR
+BERBERIĆ MILUTIN
+BEREŠ ĐORĐE
+BEREŠ DANILO
+BEREŠ ILONA
+BEREŠ JOSIP
+BEREŠ JULIŠKA
+BEREŠ KAROLJ
+BEREŠ KORNEL
+BEREŠ TIBOR
+BEREŠ-TOT KORNEL
+BEREHANIĆ JULKA
+BERENJI EUGEN
+BERENJI JANOŠ
+BERENJI JELENA
+BERENJI MIKLOŠ
+BERENJI MIKLOŠ
+BERENJI ROZALIJA
+BERENJI STEVAN
+BERENJI TIBOR
+BERENTA JOSIP
+BERENTE ILONA
+BERETIĆ ANTUN
+BERETIĆ LADISLAV
+BERETIĆ MARGITA
+BERETKA ŠANDOR
+BERETKA GORDANA
+BERETKA JULIJANA
+BERETKA KARLO
+BERETKA MIHALJ
+BERGEL ĐURA
+BERGEL ANTUN
+BERGER FRANJA DR STOMATOLOG
+BERGER MIROSLAV
+BERIŠA AZIS
+BERIŠA BOJKA
+BERIŠA DEMO
+BERIŠA FAIK
+BERIŠA MIRVETA
+BERIŠA RAGIB
+BERIĆ ŽIVKO
+BERIĆ ANĐELKO
+BERIĆ ANTA
+BERIĆ ANTA
+BERIĆ BERISLAV DR PROF
+BERIĆ BILJANA
+BERIĆ BOŽIDAR
+BERIĆ BOGDAN
+BERIĆ DRAGINJA
+BERIĆ DUŠANKA
+BERIĆ DUŠAN
+BERIĆ GOJKO
+BERIĆ GOJKO
+BERIĆ GOJKO
+BERIĆ ILIJA
+BERIĆ JORDANA
+BERIĆ JOVO
+BERIĆ KOSTA
+BERIĆ MARA
+BERIĆ-MASKAREL KARMENSITA DR
+BERIĆ MILAN
+BERIĆ MILAN
+BERIĆ MILAN
+BERIĆ MILICA MR
+BERIĆ MILIVOJ
+BERIĆ MILORAD
+BERIĆ MILORAD
+BERIĆ MILOVAN
+BERIĆ NADA
+BERIĆ NIKOLA
+BERIĆ PERSIDA
+BERIĆ PETAR
+BERIĆ RADIVOJ
+BERIĆ RAJKO
+BERIĆ RAJKO
+BERIĆ SAVA
+BERIĆ TODE
+BERIĆ VERA
+BERIĆ VERICA
+BERIĆ VESNA DR
+BERIĆ ZORICA
+BERISAVLJEVIĆ RAJKO
+BERISAVLJEVIĆ ZORICA
+BERKEŠ IŠTVAN
+BERKI JOŽEF
+BERKIĆ RUŽICA
+BERKOVIĆ BERISLAV
+BERKOVIĆ DŽAFER
+BERKOVIĆ MIROSLAV
+BERKOVIĆ SLAVOLJUB
+BERLANČIĆ DANIJEL
+BERLOVAN GEORGINA
+BERNACKI ADOLF
+BERNARD ĐORĐE
+BERNHARD ŽARKO
+BERNHARD BOŽIDAR
+BERNHARD BOJANA
+BERNHARD FILIP
+BERNHARD ILIJA
+BERNHARD LJUBAN
+BERNHARD MARIJA
+BERNHARD MILAN
+BERNHARD MILICA DR
+BERNHARD MILORAD
+BERNHARD RADOSLAV
+BERNHARD RAJKO
+BERNHARD SIMO
+BERNHARD TRIVO
+BEROŠ LJUBICA
+BERTA JANOŠ
+BERTA MILICA
+BERTA PAL
+BERTA PETAR
+BERTIĆ TATJANA
+BERTIĆ ZVONKO
+BERTOK JANOŠ
+BERTOK JULIJANA
+BERTOK LAJOŠ
+BERTRON LENKE
+BERUS VJEKOSLAV
+BERZA ALEKSANDAR
+BESEDEŠ JOŽEF
+BESERMENJI ĐORĐE
+BESERMENJI BRANKO
+BESERMENJI DIONIZIJE
+BESERMENJI EUFEMIJA
+BESERMENJI IRENA
+BESERMENJI IVAN
+BESERMENJI KIRIL
+BESERMENJI KSENIJA
+BESERMENJI LEONA
+BESERMENJI MELANIJA
+BESERMENJI OLGA
+BESERMENJI VLADIMIR
+BESERMENJI VLADIMIR
+BESKOROVAJNI VLADIMIR
+BESLAĆ DRAGANA
+BESLAĆ MILUTIN
+BESLAĆ RADMILA
+BESNILOV BOŠKO
+BESNILOV OLIVERA
+BESU SILA
+BESU TODOR
+BESU TRANDAFIR
+BETI STANKO ADVOKAT
+BEUC ŽIVAN
+BEUC MIRA
+BEUC OLGA
+BEZDAN ANA
+BEZDAN FRANJA
+BEZDAN ILDIKO
+BEZDAN IRENA
+BEZDAN JOSIP
+BEZENŠEK NATALIJA
+BEZI KATICA
+BEZJAK MILANKA
+BEZJAK ZDENKO
+BEZULJ ĐORĐE
+BEZULJ LJILJANA PROFESOR
+BIČAK IGNAC
+BIČAK JUSTINA
+BIČAN ANKA
+BIČAN IVICA
+BIČKEI TEREZIJA
+BIĆANIĆ DANICA
+BIĆANIĆ KRISTINA
+BIĆANIĆ MARIJA
+BIĆANIĆ PETAR
+BIĆANIĆ PETRA
+BIBER STEVAN
+BIBERDŽIĆ RADOMIR
+BIBIĆ ALEKSANDAR
+BIBIĆ PAVLE
+BIBIĆ SOFIJA
+BIBIĆ STJEPAN
+BIBIN JUGOSLAV
+BIBIN MILINKO
+BICIKIN MILAN
+BICK DRAGUTIN
+BICO RUŽICA
+BICOK ETELKA
+BICOK MARGITA
+BICOK MARGITA
+BIELČIK LIDIJA
+BIGA BORISLAV
+BIGA MILAN
+BIGA NADA
+BIGA SMILJA
+BIGOVIĆ-ŠIROKI ZORICA
+BIGOVIĆ ANA
+BIGOVIĆ VOJIN
+BIGOVIĆ VOJISLAV
+BIHORAC MIRJANA
+BIJANIĆ MILENKO
+BIJANKO PETAR
+BIJEDIĆ MILORAD
+BIJELIĆ ALEKSA
+BIJELIĆ BRANISLAV
+BIJELIĆ DARA
+BIJELIĆ IVICA
+BIJELIĆ JOVAN
+BIJELIĆ JOVICA
+BIJELIĆ MATO
+BIJELIĆ MILAN
+BIJELIĆ MILE
+BIJELIĆ MILE
+BIJELIĆ MILE
+BIJELIĆ MILE
+BIJELIĆ NOVAK
+BIJELIĆ PERO
+BIJELIĆ RISTO
+BIJELIĆ STOJAN
+BIJELIĆ STOJAN
+BIJELJAC NEDELJKO DIPL ING
+BIJELOVIĆ NOVKA
+BIJUKLIĆ DRAGOSLAV
+BIJUKLIĆ DRAGOSLAV
+BIJUKLIĆ MARINKO
+BIKAR DRAGANA
+BIKAR FEDORA
+BIKAREVIĆ DRAGAN
+BIKIĆ ŽIVAN
+BIKIĆ ĐORĐE
+BIKIĆ DANICA
+BIKIĆ DUŠAN
+BIKIĆ KONSTANTIN
+BIKIĆ LJILJANA
+BIKIĆ MILOVAN
+BIKIĆ MIODRAG
+BIKIĆ NIKOLA
+BIKIĆ PERA
+BIKICKI ĐORĐE
+BIKICKI ALEKSANDAR
+BIKICKI BRANISLAV
+BIKICKI JELICA
+BIKICKI JELICA
+BIKICKI JOVAN
+BIKICKI JOVAN
+BIKICKI KATARINA
+BIKICKI MILOŠ
+BIKICKI MIROSLAV
+BIKICKI RADOJKA
+BIKICKI SINIŠA
+BIKICKI SINIŠA
+BIKICKI VASILIJE
+BIKIT MAGDOLNA
+BIKIT NORBERT
+BIKOVIĆ LJUBICA
+BIKOVIĆ VLADIMIR
+BILČAR HILDA
+BILČAR VERA
+BILA MIRKO
+BILAK MILAN
+BILAK NADA
+BILALOVIĆ SABAHUDIN
+BILANDŽIJA DANICA
+BILANIĆ NADA
+BILANOVIĆ DUŠAN
+BILANOVIĆ GORDANA
+BILANOVIĆ PERO
+BILAS SMILJA
+BILBIJA BOGDAN
+BILBIJA DEJAN
+BILBIJA DRAGAN
+BILBIJA JASNA
+BILBIJA MILAN
+BILBIJA SMILJA
+BILEK MILICA
+BILER ĐORĐE
+BILI JULIJA
+BILIČIĆ STJEPAN
+BILIĆ ANTE
+BILIĆ BRANKICA
+BILIĆ GORDANA
+BILIĆ IVAN DIPL ING
+BILIĆ IVAN
+BILIĆ JAKOV
+BILIĆ JELENA
+BILIĆ MILAN
+BILIĆ MILAN
+BILIĆ MILENKO
+BILIĆ MILORAD
+BILIĆ MIRO
+BILIĆ PREDRAG
+BILIĆ SRĐAN
+BILIĆ STJEPAN
+BILIĆ STRAIN
+BILICKI LASLO
+BILINOVIĆ BORIS
+BILINOVIĆ SAŠA
+BILJANIĆ RADOJKA
+BILJNJA VLADIMIR
+BILOKAPIĆ IVAN
+BILOKAPIĆ JURE
+BILOKAPIĆ STEVAN
+BILUŠIĆ SLAVICA
+BIN ALEKSANDAR
+BIN MUHAMET
+BINAKAJ BAJRAM
+BINDAS ĐURA
+BINDAS DRAGICA
+BINDAS MIHAJLO
+BINDER ARANKA
+BINGOLD DRAGUTIN
+BINGOLD KARLO
+BINGOLD RUDOLF
+BINGULAC ŽIVKO
+BINGULAC BOJANA
+BINGULAC MIRJANA
+BIONDIĆ JELENA
+BIORAC DESIMIR
+BIORAC RANKO
+BIRĆA SRETKO
+BIRCLIN RUŽICA
+BIRDIĆ BELA
+BIREŠ LENKA
+BIREŠ ROZALIJA
+BIRGEMAJER MARIJA
+BIRHMAN ANA
+BIRINJI DENEŠ
+BIRINJI EUGEN
+BIRMANAC DUŠAN
+BIRO ANTON
+BIRO GIZELA
+BIRO GIZELA
+BIRO IŠTVAN
+BIRO ILONA
+BIRO IMRE
+BIRO IMRE
+BIRO KATALIN
+BIRO LAJOŠ
+BIRO MIKLOŠ
+BIRO MILOŠ
+BIROŠEVIĆ MILICA
+BIROVLJEV BRANIMIR
+BIROVLJEV BRANISLAV
+BIROVLJEV MILAN
+BIROVLJEV MILORAD
+BIROVLJEV MILOSAV
+BIROVLJEV MIROSLAV
+BIROVLJEV TODOR DR
+BIROVLJEVIĆ DRAGAN
+BIROVLJEVIĆ LJUBICA
+BIRTA VLADIMIR
+BIRVALSKI DUŠAN
+BISERČIĆ ANDRIJA
+BISERČIĆ DRAGO
+BISERČIĆ MILKANA
+BISIĆ JOVAN
+BISTRICAN OLGA
+BISTROVIĆ ANTON
+BITIĆ DŽEMAIL
+BITO STEVAN
+BIUK MARIJA
+BIVOLAREVIĆ VUKAŠIN
+BIZJAK RENATO
+BIZUMIĆ GEORGIJE
+BIZUMIĆ JELKA
+BIZUMIĆ LAZAR
+BIZUMIĆ MILAN
+BJEDIĆ DESANKA
+BJEDOV ĐUKA
+BJEDOV DRAGO
+BJEDOV NIKOLA
+BJEGOVIĆ DANILKA
+BJEGOVIĆ GOJKO
+BJEKIĆ LUKA
+BJEKIĆ OSTOJA
+BJEKOVIĆ MIRJANA
+BJEKOVIĆ RADE
+BJELAC ĐURA
+BJELAC DRAGAN
+BJELAC DRAGAN
+BJELAC ETELKA
+BJELAJAC DRAGAN
+BJELAJAC MILJA
+BJELAJAC SVETOZAR
+BJELAKOVIĆ RADIVOJE
+BJELANOVIĆ MILOSAV
+BJELANOVIĆ MIRKO
+BJELANOVIĆ RAJKO
+BJELANOVIĆ STANIMIR
+BJELANOVIĆ TANJA
+BJELETIĆ BOGDAN
+BJELETIĆ LJUBICA
+BJELETIĆ LUKA
+BJELI-HADŽIĆ JELICA
+BJELIĆ ĐURA
+BJELIĆ BORISLAV
+BJELIĆ BRANKO
+BJELIĆ DANILKA
+BJELIĆ DMITAR
+BJELIĆ GORDANA
+BJELIĆ JOVAN
+BJELIĆ KATICA
+BJELIĆ KRSTAN
+BJELIĆ LJUBOMIR
+BJELIĆ MILAN
+BJELIĆ MIRKO
+BJELIĆ NEDELJKO
+BJELIĆ OLGA
+BJELIĆ PETAR
+BJELIĆ PETAR
+BJELIĆ SLAVKO
+BJELIĆ SLOBODAN
+BJELIĆ STEVO
+BJELIĆ SVETLANA
+BJELIĆ VERA
+BJELIĆ VLADIMIR
+BJELICA ČEDO
+BJELICA ĐORĐIJA
+BJELICA ALEKSA
+BJELICA BOGDAN
+BJELICA BRANISLAV
+BJELICA DANILO
+BJELICA DOBRIVOJE
+BJELICA DRAGUTIN
+BJELICA GOJKO
+BJELICA GOJKO
+BJELICA JADRANKA
+BJELICA JADRANKA
+BJELICA LUKA
+BJELICA MILAN
+BJELICA MILICA
+BJELICA MIODRAG
+BJELICA NADA
+BJELICA-POPOVIĆ LJUBICA
+BJELICA RAJKO
+BJELICA RAKO
+BJELICA RATKO
+BJELICA SAVKA
+BJELICA SLAVKO
+BJELICA SPASOJE
+BJELICA TIGRAN
+BJELICA VELJKO
+BJELICA VELJKO
+BJELICA VOJO
+BJELICA VUKOSAVA
+BJELICA ZORAN
+BJELINIĆ DARINKA
+BJELINIĆ JOVO
+BJELIVUK GORAN
+BJELIVUK VLADIMIR
+BJELJAC ANA
+BJELJAC BORA
+BJELJAC BRANKO
+BJELJAC MILAN
+BJELJAC MILORAD
+BJELOŠ DANICA
+BJELOŠ MIROSLAV
+BJELOŠ MIROSLAV
+BJELOŠEVIĆ SLAVKO
+BJELOBABA ALEKSANDAR
+BJELOBABA DARA
+BJELOBRK BOŠKO
+BJELOBRK BOŠKO
+BJELOBRK GORAN
+BJELOBRK LAZAR
+BJELOBRK LAZAR
+BJELOBRK MANE
+BJELOBRK MARKO
+BJELOBRK MILAN
+BJELOBRK MILOŠ
+BJELOBRK PETAR
+BJELOBRK-VARGA JASNA
+BJELOGRLIĆ ĐORĐE
+BJELOGRLIĆ BLAGOJE
+BJELOGRLIĆ DEJANA
+BJELOGRLIĆ DRAGAN
+BJELOGRLIĆ LJUBICA
+BJELOGRLIĆ LJUBO
+BJELOGRLIĆ MITAR
+BJELOGRLIĆ MOMČILO
+BJELOTOMIĆ JOVO
+BJELOVIĆ RATKO
+BJELOVUK MIRJANA
+BJELOVUK SLAVICA
+BJELOVUK SLAVKO
+BLAŠKO TIBOR
+BLAŠKOVIĆ FRANJO
+BLAŠKOVIĆ LASLO
+BLAŠKOVIĆ PAVLE
+BLAŽAN FRANJO
+BLAŽAN IVO
+BLAŽAN MARKO
+BLAŽAN SLAVKO
+BLAŽEK GUSTAV
+BLAŽEK JELENA
+BLAŽEK MARIJA
+BLAŽEK MIHALJ
+BLAŽEVA OLGA
+BLAŽEVIĆ ANDRIJA
+BLAŽEVIĆ DRAGANA
+BLAŽEVIĆ DRAGO
+BLAŽEVIĆ DUŠANKA
+BLAŽEVIĆ DUŠICA
+BLAŽEVIĆ DUBRAVKA
+BLAŽEVIĆ FRANJO
+BLAŽEVIĆ MIODRAG
+BLAŽEVIĆ RADE DR LEKAR
+BLAŽEVIĆ STJEPAN
+BLAŽEVIĆ SUZANA
+BLAŽEVIĆ VERA
+BLAŽEVIĆ ZORAN
+BLAŽIĆ ĐORĐE
+BLAŽIĆ BOŠKO
+BLAŽIĆ BRANISLAVA
+BLAŽIĆ DRAGAN
+BLAŽIĆ DRAGAN
+BLAŽIĆ DRAGOLJUB
+BLAŽIĆ HRISTINA
+BLAŽIĆ IVAN
+BLAŽIĆ JELENA
+BLAŽIĆ KSENIJA
+BLAŽIĆ MARIJA
+BLAŽIĆ METODIJE
+BLAŽIĆ MIHAJLO
+BLAŽIĆ SAVA
+BLAŽIĆ SAVKO
+BLAŽIĆ SVETOZAR
+BLAŽIĆ VIDA
+BLAŽIK ANTAL
+BLAŽIN DRAGINJA
+BLAGOJEV ŽIVKO
+BLAGOJEV ŽIVKO
+BLAGOJEV ĐORĐE
+BLAGOJEV IVAN
+BLAGOJEV MILIVOJ
+BLAGOJEV MILORAD
+BLAGOJEV MITA
+BLAGOJEV RADA
+BLAGOJEV RADOSLAV
+BLAGOJEV STEVAN
+BLAGOJEV VELIMIR
+BLAGOJEVIĆ ČEDO
+BLAGOJEVIĆ ŽARKO
+BLAGOJEVIĆ ĐORĐE
+BLAGOJEVIĆ ĐORĐE
+BLAGOJEVIĆ ANA
+BLAGOJEVIĆ BEĆKO
+BLAGOJEVIĆ BORA
+BLAGOJEVIĆ BORISLAV
+BLAGOJEVIĆ BORIVOJE
+BLAGOJEVIĆ BORIVOJ
+BLAGOJEVIĆ BORKO
+BLAGOJEVIĆ BRANISLAV
+BLAGOJEVIĆ DANICA
+BLAGOJEVIĆ DRAGOMIR
+BLAGOJEVIĆ DUŠAN DIPL ING
+BLAGOJEVIĆ DUŠAN
+BLAGOJEVIĆ JAGICA
+BLAGOJEVIĆ JANKO
+BLAGOJEVIĆ KRSTAN
+BLAGOJEVIĆ LJUBOMIR
+BLAGOJEVIĆ MARINKO
+BLAGOJEVIĆ MIKA
+BLAGOJEVIĆ MIKA
+BLAGOJEVIĆ MILAN
+BLAGOJEVIĆ MILAN
+BLAGOJEVIĆ MILAN
+BLAGOJEVIĆ MILENA
+BLAGOJEVIĆ MILICA
+BLAGOJEVIĆ MILIVOJE
+BLAGOJEVIĆ MILOŠ
+BLAGOJEVIĆ MIROSLAV
+BLAGOJEVIĆ MLAĐA
+BLAGOJEVIĆ MOMIR
+BLAGOJEVIĆ NADA
+BLAGOJEVIĆ PREDRAG
+BLAGOJEVIĆ RADE
+BLAGOJEVIĆ RADOMIR
+BLAGOJEVIĆ SERAFINA
+BLAGOJEVIĆ SLOBODAN
+BLAGOJEVIĆ SLOBODAN
+BLAGOJEVIĆ SLOBODAN
+BLAGOJEVIĆ SNEŽANA
+BLAGOJEVIĆ SNJEŽANA
+BLAGOJEVIĆ STANKO
+BLAGOJEVIĆ STEVO
+BLAGOJEVIĆ SVETKO
+BLAGOJEVIĆ VLADISLAV
+BLAGOVIĆ MARIJA
+BLAHO JOŽEF
+BLANARIK ŠANDOR
+BLANARIK ĐURA
+BLANARIK ALEKSANDAR
+BLANARIK ETELKA
+BLANARIK ILONA
+BLANARIK JOŽEF
+BLANARIK LADISLAV
+BLANARIK OLGA
+BLANARIK STEVAN
+BLANARIK TIBOR
+BLANARIK VALERIJA
+BLANUŠA BRANKO
+BLANUŠA ILIJA
+BLANUŠA RADE
+BLANUŠA VERA
+BLANUŠA ZORAN
+BLATEŠIĆ MIOLJKA
+BLATEŠIĆ RAJKO
+BLATNICKI VESNA
+BLEČIĆ JELENA
+BLEČIĆ LJUBICA
+BLEČIĆ MILADIN
+BLEČIĆ MIODRAG
+BLEČIĆ RADOSAV MR
+BLEČIĆ SAŠA
+BLEHL JOVANKA
+BLITVA ĐORĐE
+BLITVA BRANKO
+BLIZANAC DOBRIVOJ
+BLIZANAC DRAGOLJUB
+BLIZANAC DUŠAN
+BLIZANAC JELKICA
+BLIZANAC LEPOSAVA
+BLIZANAC MILORAD
+BLIZANAC MIROSLAV
+BLIZANAC NENAD
+BLIZANAC SAVA
+BLIZANAC VUJICA
+BLOŽIĆ DIMITRIJE
+BLUMENŠAJN KARLO
+BOČAN IVAN
+BOČKOR NIKOLA
+BOŠČANIN BOŠKO
+BOŠKIĆ BORKA
+BOŠKIĆ MIRJANA
+BOŠKIĆ NATAŠA
+BOŠKIĆ ZORA
+BOŠKOV ŽARKO DIPL ING
+BOŠKOV ŽIVOJIN
+BOŠKOV-JAGODIĆ ZORICA
+BOŠKOV LJUBINKA
+BOŠKOV LUKA
+BOŠKOV MILIVOJE
+BOŠKOV MILOŠ
+BOŠKOV MIRJANA
+BOŠKOV SAVKA
+BOŠKOV SOFIJA
+BOŠKOV SRETEN
+BOŠKOV STEVAN
+BOŠKOV STOJAN
+BOŠKOV VESNA
+BOŠKOV VUJADIN
+BOŠKOVIĆ ŽELJKO
+BOŠKOVIĆ ŽIVKO
+BOŠKOVIĆ ALEKSANDAR
+BOŠKOVIĆ ALEKSA
+BOŠKOVIĆ ALEKSA
+BOŠKOVIĆ ANĐA
+BOŠKOVIĆ BILJANA
+BOŠKOVIĆ BLAGOJE
+BOŠKOVIĆ BOŠKO
+BOŠKOVIĆ BOGDANKA
+BOŠKOVIĆ BOGDAN
+BOŠKOVIĆ BORIS
+BOŠKOVIĆ BUDIMIR
+BOŠKOVIĆ CVETKO
+BOŠKOVIĆ DANILO
+BOŠKOVIĆ DESANKA
+BOŠKOVIĆ DRAGAN
+BOŠKOVIĆ DRAGICA
+BOŠKOVIĆ DRAGOJLO
+BOŠKOVIĆ DRAGOLJUB
+BOŠKOVIĆ DRAGOMIR
+BOŠKOVIĆ DRAGOMIR
+BOŠKOVIĆ DUŠAN
+BOŠKOVIĆ DUŠAN
+BOŠKOVIĆ DUŠKO
+BOŠKOVIĆ GORAN
+BOŠKOVIĆ GORAN
+BOŠKOVIĆ HEDVIGA
+BOŠKOVIĆ JOVAN
+BOŠKOVIĆ KRSTO
+BOŠKOVIĆ LJILJANA
+BOŠKOVIĆ LJUBIŠA
+BOŠKOVIĆ LJUBINKA
+BOŠKOVIĆ LJUBOMIR
+BOŠKOVIĆ LJUBOMIR
+BOŠKOVIĆ MILEVA
+BOŠKOVIĆ MILIVOJE
+BOŠKOVIĆ MILIVOJE
+BOŠKOVIĆ MILORAD
+BOŠKOVIĆ MILORAD
+BOŠKOVIĆ MILORAD
+BOŠKOVIĆ MILORAD
+BOŠKOVIĆ MILOVAN
+BOŠKOVIĆ MIODRAG
+BOŠKOVIĆ MIRKO
+BOŠKOVIĆ MOMČILO
+BOŠKOVIĆ MOMČILO
+BOŠKOVIĆ NADA
+BOŠKOVIĆ NADA
+BOŠKOVIĆ NEDELJKO
+BOŠKOVIĆ NIKOLA
+BOŠKOVIĆ NIKOLA
+BOŠKOVIĆ NOVKA
+BOŠKOVIĆ-PEROVIĆ IVANA
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ PETAR
+BOŠKOVIĆ RADOMIR
+BOŠKOVIĆ RATOMIR
+BOŠKOVIĆ ROSA
+BOŠKOVIĆ SAVA
+BOŠKOVIĆ SLOBODANKA
+BOŠKOVIĆ SLOBODAN
+BOŠKOVIĆ SLOBODAN
+BOŠKOVIĆ STEVAN ADVOKAT
+BOŠKOVIĆ STEVAN
+BOŠKOVIĆ STEVAN
+BOŠKOVIĆ TOMISLAV
+BOŠKOVIĆ TOMISLAV
+BOŠKOVIĆ VELJKO
+BOŠKOVIĆ VLADA
+BOŠKOVIĆ VLADIMIR
+BOŠKOVIĆ VOJISLAV
+BOŠKOVSKI DOJČIN
+BOŠKOVSKI RADA
+BOŠNJAČIĆ RAJKO
+BOŠNJAK ĐORĐE
+BOŠNJAK ĐURA
+BOŠNJAK ĐURO
+BOŠNJAK ANA
+BOŠNJAK BOŽIDAR
+BOŠNJAK DARKO
+BOŠNJAK DEJAN
+BOŠNJAK DESANKA
+BOŠNJAK FERENC
+BOŠNJAK IŠTVAN
+BOŠNJAK JELENA
+BOŠNJAK JELICA
+BOŠNJAK JELICA
+BOŠNJAK JULKA
+BOŠNJAK KATARINA
+BOŠNJAK KOSTA
+BOŠNJAK LJUBOMIR
+BOŠNJAK LJUBOMIR
+BOŠNJAK MAGDALENA
+BOŠNJAK MARIJA
+BOŠNJAK MILAN
+BOŠNJAK MILENA
+BOŠNJAK MILORAD
+BOŠNJAK MIRKO
+BOŠNJAK NEĐO
+BOŠNJAK NIKOLA
+BOŠNJAK PAVLE
+BOŠNJAK PETAR
+BOŠNJAK RADMILA
+BOŠNJAK RADOJKA
+BOŠNJAK RADOVAN
+BOŠNJAK SLAVKA
+BOŠNJAK SLAVKO
+BOŠNJAK TOMISLAV
+BOŠNJAK VELIMIR
+BOŠNJAK VIDOSAVA
+BOŠNJAK VINKA
+BOŠNJAK VOJISLAV
+BOŠNJAK ZORAN
+BOŠNJAKOVIĆ ALEKSANDAR DIPL ING
+BOŠNJAKOVIĆ ALEKSANDAR DIPL PRAVNIK
+BOŠNJAKOVIĆ ANTONIJA
+BOŠNJAKOVIĆ BILJANA
+BOŠNJAKOVIĆ BORISLAV
+BOŠNJAKOVIĆ BORISLAV
+BOŠNJAKOVIĆ BRANKA
+BOŠNJAKOVIĆ CVIJETIN
+BOŠNJAKOVIĆ DOBRINKA
+BOŠNJAKOVIĆ KORNELIJE
+BOŠNJAKOVIĆ LJUBOMIR
+BOŠNJAKOVIĆ MARICA DIPL OEC
+BOŠNJAKOVIĆ MILUTIN
+BOŠNJAKOVIĆ MIROSLAV
+BOŠNJAKOVIĆ MITAR
+BOŠNJAKOVIĆ PAVAO
+BOŠNJAKOVIĆ RADOSLAV
+BOŠNJAKOVIĆ RATKO
+BOŠNJAKOVIĆ SINIŠA
+BOŠNJAKOVIĆ SLAVKA
+BOĆAN MARIJA
+BOĆEREG ZUZANA
+BOŽA PAL
+BOŽANIĆ ŽIKA
+BOŽANIĆ ĐORĐE
+BOŽANIĆ ANĐELKA
+BOŽANIĆ DUŠAN
+BOŽANIĆ GOJKO
+BOŽANIĆ JELENA
+BOŽANIĆ KOSA
+BOŽANIĆ MILICA
+BOŽANIĆ MILORAD
+BOŽANIĆ NEVENKA
+BOŽANOVIĆ RAJKA
+BOŽANOVIĆ ZORAN
+BOŽER LAJOŠ
+BOŽER LJUDEVIT
+BOŽER ZORA
+BOŽIČIĆ MILAN
+BOŽIČIĆ MILENKO
+BOŽIČIĆ PETAR
+BOŽIČKOVIĆ JOVAN
+BOŽIČKOVIĆ NEDELJKO DR
+BOŽIČKOVIĆ NERA
+BOŽIČKOVIĆ VOJISLAV
+BOŽIČKOVIĆ ZORKA
+BOŽIĆ ČEDOMIR
+BOŽIĆ ŽARKO
+BOŽIĆ ŽIVANA
+BOŽIĆ ŽIVKO
+BOŽIĆ ĐORĐE
+BOŽIĆ ĐURĐINA
+BOŽIĆ ĐURA
+BOŽIĆ ALEKSANDAR
+BOŽIĆ ALEKSANDAR
+BOŽIĆ ANĐELKA
+BOŽIĆ BOŠKO
+BOŽIĆ BOŽANA
+BOŽIĆ BORIVOJ
+BOŽIĆ BORKO
+BOŽIĆ BRANISLAV
+BOŽIĆ BRANISLAV
+BOŽIĆ DARINKA
+BOŽIĆ DEJO
+BOŽIĆ DESANKA
+BOŽIĆ DRAGAN
+BOŽIĆ DRAGAN
+BOŽIĆ DRAGAN
+BOŽIĆ DRAGAN
+BOŽIĆ DRAGOLJUB
+BOŽIĆ DRAGOMIR
+BOŽIĆ DRAGOMIR
+BOŽIĆ DRAGOMIR
+BOŽIĆ DUŠAN
+BOŽIĆ GAVRO
+BOŽIĆ GOJKO
+BOŽIĆ GORDANA
+BOŽIĆ GORDANA
+BOŽIĆ GRADIMIR
+BOŽIĆ ILIJA
+BOŽIĆ IVAN
+BOŽIĆ JOVANKA
+BOŽIĆ JOVAN
+BOŽIĆ JOVAN
+BOŽIĆ JOVICA
+BOŽIĆ JULKA
+BOŽIĆ KSENIJA
+BOŽIĆ LAZAR
+BOŽIĆ LAZAR
+BOŽIĆ LJILJANA
+BOŽIĆ MARA
+BOŽIĆ MARINKO
+BOŽIĆ MARKO
+BOŽIĆ MARKO
+BOŽIĆ MARKO
+BOŽIĆ MATIJA
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILAN
+BOŽIĆ MILEVA
+BOŽIĆ MILE
+BOŽIĆ MILISAV
+BOŽIĆ MILJKO
+BOŽIĆ MILORAD
+BOŽIĆ MIODRAG
+BOŽIĆ MIRJANA
+BOŽIĆ MIRKO
+BOŽIĆ MIRKO
+BOŽIĆ MOMČILO
+BOŽIĆ MOMČILO
+BOŽIĆ NEĐO
+BOŽIĆ NENAD
+BOŽIĆ NENAD
+BOŽIĆ NIKOLA
+BOŽIĆ OLGA
+BOŽIĆ OZREN
+BOŽIĆ PAVLE DIPL ING
+BOŽIĆ PERA
+BOŽIĆ PETAR
+BOŽIĆ RADIVOJ
+BOŽIĆ RADMILA
+BOŽIĆ-RADOMIROVIĆ JOKA
+BOŽIĆ RADOVAN
+BOŽIĆ RAJKO
+BOŽIĆ RANKO
+BOŽIĆ SANJA
+BOŽIĆ SAVA
+BOŽIĆ SAVA
+BOŽIĆ SAVO
+BOŽIĆ SLOBODAN
+BOŽIĆ SLOBODAN
+BOŽIĆ SRETEN
+BOŽIĆ STANIMIR
+BOŽIĆ STEVAN
+BOŽIĆ STEVO
+BOŽIĆ STOJANKA
+BOŽIĆ TAMARA
+BOŽIĆ TATJANA
+BOŽIĆ TEODOR
+BOŽIĆ TOMISLAV
+BOŽIĆ VERICA
+BOŽIĆ-VILIĆ JELENA
+BOŽIĆ VLADANKA
+BOŽIĆ VLADA
+BOŽIĆ VLADA
+BOŽIĆ VLADA
+BOŽIĆ VLADISLAV
+BOŽIĆ VUKOSAVA
+BOŽIĆ ZLATA
+BOŽIĆ ZLATICA
+BOŽIĆ ZORAN
+BOŽIĆ ZORAN
+BOŽIĆ ZORAN
+BOŽIĆ ZORAN
+BOŽIĆ ZORKA
+BOŽIDAR ALEKSANDAR
+BOŽIDAR BORISLAV
+BOŽIDAR BORISLAV
+BOŽIDAR-KRIŽAK IRENA
+BOŽIDAR LJUBOMIR
+BOŽIDAREVIĆ ĐURA
+BOŽIDAREVIĆ DESANKA
+BOŽIDAREVIĆ PERSIDA
+BOŽIDAREVIĆ VELJKO
+BOŽIN ŽARKO
+BOŽIN ĐORĐE
+BOŽIN DANICA
+BOŽIN DARINKA
+BOŽIN DESANKA
+BOŽIN IGNJAT DIPL ING
+BOŽIN ISIDOR
+BOŽIN JELICA
+BOŽIN JULIJANA
+BOŽIN KRISTINA
+BOŽIN KSENIJA
+BOŽIN LAZAR
+BOŽIN LJUBICA
+BOŽIN LJUBICA
+BOŽIN MILOŠ
+BOŽIN MILOŠ
+BOŽIN MIROSLAV
+BOŽIN NIKOLA
+BOŽIN PAVLE
+BOŽIN PETAR
+BOŽIN RADIVOJ
+BOŽIN RADOVAN
+BOŽIN SINIŠA
+BOŽIN SLAVICA
+BOŽIN SLOBODAN
+BOŽIN STEVAN
+BOŽIN STEVAN
+BOŽIN STEVAN
+BOŽINIĆ RUŽICA
+BOŽINOVSKI ANGEL
+BOŽINOVSKI RISTE
+BOŽINOVSKI TRAJAN
+BOŽJAK FRANJO
+BOŽJAK MIKA
+BOŽJAKOVIĆ LJUBINKA
+BOŽO ELEONORA
+BOŽOKI ERNE
+BOŽOKI ILONA
+BOŽOVIĆ BOŽIDAR
+BOŽOVIĆ BORIVOJ
+BOŽOVIĆ BRATISLAV
+BOŽOVIĆ GORČIN
+BOŽOVIĆ GORDANA
+BOŽOVIĆ LJUBICA
+BOŽOVIĆ MILADIN DIPL ING
+BOŽOVIĆ MILADIN
+BOŽOVIĆ MILORAD
+BOŽOVIĆ MILOVAN
+BOŽOVIĆ MIRJANA
+BOŽOVIĆ MIROLJUB
+BOŽOVIĆ RAŠKO
+BOŽOVIĆ SLAVKO
+BOŽOVIĆ SNEŽANA
+BOŽOVIĆ STANKA
+BOŽOVIĆ VELIMIR
+BOŽOVIĆ VERA
+BOŽOVIĆ VLADIMIR
+BOŽULIĆ ANĐELKO
+BOŽULIĆ IVAN
+BOŽULIĆ IVICA
+BOŽULIĆ SINIŠA
+BOŽUNOVIĆ DUŠAN
+BOĐA ĐURA
+BOĐA ANDRIJA
+BOĐA ANDRIJA
+BOĐA ANDRIJA
+BOĐA IVAN
+BOĐA IVAN
+BOĐA JOVAN
+BOĐA SAŠA
+BOĐA STEVAN
+BOĐANAC JELENA
+BOĐANAC MIROSLAV
+BOĐANAC ZDRAVKO
+BOĐANSKI ALEKSANDAR
+BOAROV DIMITRIJE
+BOAROV JOVAN
+BOAROV KATARINA
+BOAROV MILANKA
+BOB JUSTINA
+BOBAK IŠTVAN
+BOBAK KATICA
+BOBAN ĐERĐ
+BOBAN MARIJA
+BOBAN MERIMA
+BOBAN NEDELJKO
+BOBAN STIPE
+BOBAN SUZANA
+BOBAN-VARNUS ERŽEBET
+BOBANJ IMRE
+BOBAR BOŠKO
+BOBAREVIĆ RUŽICA
+BOBERIĆ OLGA
+BOBERIĆ ZORKA
+BOBIĆ ĐORĐE
+BOBIĆ ĐORĐE
+BOBIĆ BOGDAN
+BOBIĆ BRANISLAV
+BOBIĆ IVAN
+BOBIĆ JOSIP
+BOBIĆ KAJA
+BOBIĆ LJUBOMIR
+BOBIĆ MILANKA
+BOBIĆ MILICA
+BOBIĆ MLADEN
+BOBIĆ NENAD
+BOBIĆ RUŽICA
+BOBIĆ TANJA
+BOBINAC JOSIP
+BOBINAC LUCIJA
+BOBINEC JOSIP
+BOBLJAGOVIĆ BOGOSLAV
+BOBOŠ STANKO
+BOC STEVAN
+BOCA DANE
+BOCA DUŠAN
+BOCA MILE
+BOCA MILOŠ
+BOCONADI MARTON
+BODŽONI GIZELA
+BODŽONI STEVAN
+BODA JOVAN
+BODAKOŠ JOSIP
+BODAKOŠ STJEPAN
+BODEGRAJAC SOFIJA
+BODI ERŽEBET
+BODI JASMINA
+BODI LAJOŠ
+BODI LASLO
+BODI MIHAJLO
+BODIŠ JOŽEF
+BODIŠ MILICA
+BODIROŽA PETAR
+BODIROŽA RADIVOJ
+BODIROGA JOVAN
+BODIROGA MARIJA
+BODIROGA NIKO
+BODIROGA PREDRAG
+BODLOVIĆ NIKOLA
+BODNAR ŠANDOR
+BODNAR RISTA
+BODNAR STEVAN
+BODNAR VERICA
+BODO IŠTVAN
+BODO KAROLJ
+BODO MARIJA
+BODO MARIJA
+BODO MATIJA
+BODO STEVAN
+BODOČI JOŽEF
+BODOLO ŠANDOR
+BODOLO IŠTVAN
+BODONJI KARLO
+BODOR ANTON
+BODOR ANTUN
+BODOR BOSILJKA
+BODOR FRANJA
+BODOR FRANJA
+BODOR IŠTVAN
+BODOR JANOŠ
+BODOR JOSIP
+BODOR PETAR
+BODOR SINIŠA
+BODRE IŠTVAN
+BODRIČ-HERĆAN ARANKA
+BODRIČ MIHAJLO
+BODRIČ STEVAN
+BODRIČ VESNA
+BODRIĆ JELISAVETA
+BODROŽA BRANKO
+BODROŽA OLGA
+BODROŽIĆ ILIJA
+BODROŽIĆ ILIJA
+BODROŽIĆ JOVAN
+BODROŽIĆ MILAN
+BODROŽIĆ STEVAN
+BODULIĆ ŠTEFANIJA
+BODULIĆ JELENA
+BODULIĆ PETAR
+BODULIĆ SLOBODAN
+BODULIĆ SLOBODAN
+BODVAI JANKO
+BOGAROŠI SLOBODAN
+BOGAROŠKI ANDRIJA
+BOGATINOSKI TOMISLAV
+BOGAVAC ALEKSANDAR DR
+BOGAVAC BRANISLAV
+BOGAVAC DRAGICA
+BOGAVAC JADRANKA
+BOGAVAC MIRJANA
+BOGDAN ANDRAŠ
+BOGDAN BILJANA
+BOGDAN DUŠAN
+BOGDAN IŠTVAN
+BOGDAN IMRE
+BOGDAN IVAN
+BOGDAN JOSIP
+BOGDAN JOSIP
+BOGDAN MANE
+BOGDAN-MIJIN DUŠANKA
+BOGDAN MILKA
+BOGDAN NIKOLA
+BOGDAN STEVAN
+BOGDAN STEVA
+BOGDAN VERICA
+BOGDAN ZORAN
+BOGDANFI ŠANDOR NOVINAR
+BOGDANFI MARINKO
+BOGDANOV-ANTONIĆ BILJANA
+BOGDANOV BISERKA
+BOGDANOV BRANISLAV DR PROF
+BOGDANOV BRANKA DR LEKAR
+BOGDANOV DANILO
+BOGDANOV DIMITRIJE
+BOGDANOV DRAGAN
+BOGDANOV DUŠAN
+BOGDANOV-HIL DOBRILA
+BOGDANOV IRMA
+BOGDANOV IVAN
+BOGDANOV LAZAR
+BOGDANOV MARICA
+BOGDANOV MILAN
+BOGDANOV MILENA
+BOGDANOV MILOŠ
+BOGDANOV MILORAD
+BOGDANOV NADA
+BOGDANOV OLGA
+BOGDANOV PETAR
+BOGDANOV SLAVKO
+BOGDANOV SLAVNA
+BOGDANOV SMILJA
+BOGDANOV STANKO
+BOGDANOV STEVAN
+BOGDANOV STEVAN
+BOGDANOV ZORAN
+BOGDANOVIĆ ŽIVAN MR
+BOGDANOVIĆ ĐORĐE
+BOGDANOVIĆ ĐORĐE
+BOGDANOVIĆ ĐURA
+BOGDANOVIĆ ALEKSANDAR
+BOGDANOVIĆ ANKA
+BOGDANOVIĆ BLAGOJA
+BOGDANOVIĆ BOŠKO
+BOGDANOVIĆ BOŽIDAR
+BOGDANOVIĆ BOGDAN
+BOGDANOVIĆ BORA
+BOGDANOVIĆ BORIVOJ
+BOGDANOVIĆ BRANISLAVA
+BOGDANOVIĆ BRANISLAV
+BOGDANOVIĆ BRANISLAV
+BOGDANOVIĆ BRANISLAV
+BOGDANOVIĆ BRANISLAV
+BOGDANOVIĆ BRANKO
+BOGDANOVIĆ DARINKA
+BOGDANOVIĆ DESANKA
+BOGDANOVIĆ DIMITRIJE
+BOGDANOVIĆ DOBRIVOJ
+BOGDANOVIĆ DRAGAN
+BOGDANOVIĆ DRAGAN
+BOGDANOVIĆ DRAGOLJUB
+BOGDANOVIĆ DRAGOLJUB
+BOGDANOVIĆ DUŠKO
+BOGDANOVIĆ ETELKA
+BOGDANOVIĆ GEDEON
+BOGDANOVIĆ GOJKO
+BOGDANOVIĆ GORDANA
+BOGDANOVIĆ ILIJA
+BOGDANOVIĆ ILONA
+BOGDANOVIĆ IVAN
+BOGDANOVIĆ JOVAN
+BOGDANOVIĆ JOVICA
+BOGDANOVIĆ KSENIJA
+BOGDANOVIĆ LAZAR
+BOGDANOVIĆ LAZAR
+BOGDANOVIĆ LJILJANA
+BOGDANOVIĆ LJUBISAV
+BOGDANOVIĆ LJUBOMIR
+BOGDANOVIĆ LJUBOMIR
+BOGDANOVIĆ MARINA
+BOGDANOVIĆ MIĆO
+BOGDANOVIĆ MIHAJLO
+BOGDANOVIĆ MILAN
+BOGDANOVIĆ MILAN
+BOGDANOVIĆ MILAN
+BOGDANOVIĆ MILAN
+BOGDANOVIĆ MILKA
+BOGDANOVIĆ MILOŠ
+BOGDANOVIĆ MILOSAV
+BOGDANOVIĆ MIODRAG
+BOGDANOVIĆ MIRJANA
+BOGDANOVIĆ MITAR
+BOGDANOVIĆ MLADEN
+BOGDANOVIĆ NADA
+BOGDANOVIĆ NADA
+BOGDANOVIĆ NEDELJKO
+BOGDANOVIĆ NIKOLA
+BOGDANOVIĆ NIKOLA
+BOGDANOVIĆ NOVAK
+BOGDANOVIĆ PAJA
+BOGDANOVIĆ PAVLE
+BOGDANOVIĆ PAVLE
+BOGDANOVIĆ PETAR
+BOGDANOVIĆ PETAR
+BOGDANOVIĆ PETAR
+BOGDANOVIĆ PETAR
+BOGDANOVIĆ PRVOSLAV
+BOGDANOVIĆ RADISAV
+BOGDANOVIĆ RADIVOJE
+BOGDANOVIĆ RADOSLAV
+BOGDANOVIĆ RADOVAN
+BOGDANOVIĆ RANKO
+BOGDANOVIĆ RATOMIR
+BOGDANOVIĆ RUŽICA
+BOGDANOVIĆ SLAVKO MR PRAVNIK
+BOGDANOVIĆ SLOBODANKA PROFESOR
+BOGDANOVIĆ SLOBODAN
+BOGDANOVIĆ SLOBODAN
+BOGDANOVIĆ SOFIJA
+BOGDANOVIĆ SONJA
+BOGDANOVIĆ STEVAN
+BOGDANOVIĆ STEVAN
+BOGDANOVIĆ STEVO
+BOGDANOVIĆ SVETISLAV
+BOGDANOVIĆ TIHOMIR
+BOGDANOVIĆ TIHOMIR
+BOGDANOVIĆ VAJA
+BOGDANOVIĆ VASA
+BOGDANOVIĆ VERA
+BOGDANOVIĆ VITOMIR
+BOGDANOVIĆ VLADIMIR
+BOGDANOVIĆ VLAJKO
+BOGDANOVIĆ ZDRAVKO
+BOGDANOVIĆ ZORAN
+BOGDANOVSKI DIMITRIJE
+BOGDANOVSKI SLOBODAN
+BOGETIĆ DRAGOLJUB
+BOGETIĆ SANJA
+BOGIČEVIĆ ŽIVKO
+BOGIČEVIĆ ANĐELKA
+BOGIČEVIĆ DANICA
+BOGIČEVIĆ DUŠAN
+BOGIČEVIĆ GEORGIJE
+BOGIČEVIĆ KOSTADINKA
+BOGIČEVIĆ KRSTA
+BOGIČEVIĆ LJUBIŠA
+BOGIČEVIĆ LJUBICA
+BOGIČEVIĆ MARIJA
+BOGIČEVIĆ MILICA
+BOGIČEVIĆ NIKOLA
+BOGIČEVIĆ NIKOLA
+BOGIČEVIĆ TIHOMIR
+BOGIČEVIĆ ZORKA
+BOGIŠIĆ ANDRIJA
+BOGIŠIĆ FRANJA
+BOGIŠIĆ JOSIP
+BOGIĆ ALEKSANDAR
+BOGIĆ ANĐELKA
+BOGIĆ BRANISLAV
+BOGIĆ DIMITRIJE
+BOGIĆ DRAGAN
+BOGIĆ DUŠANKA
+BOGIĆ ILDIKO
+BOGIĆ JELENA
+BOGIĆ JELISAVETA
+BOGIĆ JOVAN
+BOGIĆ LJUBICA
+BOGIĆ MARIJA
+BOGIĆ MILAN
+BOGIĆ MIRJANA
+BOGIĆ SOFIJA
+BOGIĆ SREĆKO
+BOGIĆ STEVAN
+BOGIĆEVIĆ ŽELJKA
+BOGIĆEVIĆ ANĐELKA
+BOGIĆEVIĆ BRANISLAV
+BOGIĆEVIĆ DIMITRIJE
+BOGIĆEVIĆ JELISAVETA
+BOGIĆEVIĆ JELKA
+BOGIĆEVIĆ JOLETA
+BOGIĆEVIĆ KONSTANTIN
+BOGIĆEVIĆ MILAN
+BOGNAR ŠANDOR
+BOGNAR ALEKSANDAR DIPL ING
+BOGNAR ANTAL
+BOGNAR ELIZABETA
+BOGNAR ELIZABETA
+BOGNAR GIZELA
+BOGNAR JOŽEF
+BOGNAR KALMAN
+BOGNAR LAJOŠ
+BOGNAR MARIA
+BOGNAR MARIJA
+BOGNAR MIRKO
+BOGNAR ROZIKA
+BOGNAR SILARD
+BOGNAR STEVAN DR
+BOGOJEV ŽIVKO
+BOGOJEVAC ERŽEBET
+BOGOJEVAC JOVAN
+BOGOJEVIĆ ANGELINA
+BOGOJEVIĆ BILJANA
+BOGOJEVIĆ BOŽO
+BOGOJEVIĆ BRANISLAV
+BOGOJEVIĆ BRANKO
+BOGOJEVIĆ DRAGO
+BOGOJEVIĆ JOVANKA
+BOGOJEVIĆ LAZO
+BOGOJEVIĆ LJUBISAV
+BOGOJEVIĆ MILAN
+BOGOJEVIĆ MILORAD
+BOGOJEVIĆ MITAR
+BOGOJEVIĆ MOMČILO
+BOGOJEVIĆ RADMILA
+BOGOJEVIĆ RADOJKA
+BOGOJEVIĆ RADOMIR
+BOGOJEVIĆ RADOMIR
+BOGOJEVIĆ RAJKO
+BOGOJEVIĆ STANIJA
+BOGOJEVIĆ TODOR
+BOGOJEVIĆ VELIMIR
+BOGOJEVIĆ VLADA
+BOGOJEVIĆ VLADICA
+BOGOJEVIĆ VLAJKO
+BOGOSAV MILAN
+BOGOSAVAC MIROSLAV
+BOGOSAVAC MIROSLAV
+BOGOSAVAC ZDRAVKO
+BOGOSAVLJEV JOVANKA
+BOGOSAVLJEVIĆ ŽARKO
+BOGOSAVLJEVIĆ BRANISLAV
+BOGOSAVLJEVIĆ DOBRILA
+BOGOSAVLJEVIĆ DOBRIVOJE
+BOGOSAVLJEVIĆ DRAGICA
+BOGOSAVLJEVIĆ DRAGOMIR
+BOGOSAVLJEVIĆ MILADIN
+BOGOSAVLJEVIĆ MIODRAG DR ING
+BOGOSAVLJEVIĆ RADE
+BOGOSAVLJEVIĆ STANIMIR
+BOGOSAVLJEVIĆ ZLATA
+BOGOVAC DOBROSLAVA
+BOGOVAC DRAGOLJUB
+BOGOVAC MILAN DR
+BOGOVAC NIKOLA
+BOGOVAC SLOBODAN
+BOGOVIĆ IBOJA
+BOGOVIĆ MIJO
+BOGOVIĆ NIKOLA
+BOGOVIĆ STEVAN
+BOGOVIĆ TOMISLAV
+BOGOVIĆ VESNA
+BOGOVIĆ VESNA
+BOGOVIĆ ZLATKO
+BOGUNOVIĆ ĐORĐE
+BOGUNOVIĆ BOGDAN
+BOGUNOVIĆ BRANKO
+BOGUNOVIĆ DRAGAN
+BOGUNOVIĆ MILAN
+BOGUNOVIĆ TOMISLAV
+BOGUNOVIĆ VLADE
+BOGUNOVIĆ ZORAN
+BOGUT LJUBO
+BOGUT NADA
+BOHAČEK VALTER
+BOHINC BOŽANA
+BOHOCKI JANOŠ
+BOHOCKI JULIJANA
+BOHOCKI PETAR
+BOHOCKI ROBERT
+BOHOTA SILVESTER
+BOHUŠ JOVAN
+BOJČETA GORAN
+BOJČEVSKI NAUM
+BOJČIĆ MILAN
+BOJA ANDRAŠ
+BOJA ERIKA
+BOJAC DAFINA
+BOJAC RADIVOJ
+BOJADIĆ MIRKO
+BOJAGIĆ MARKO
+BOJANIĆ ALEKSANDAR
+BOJANIĆ ANA
+BOJANIĆ BOGOSAV
+BOJANIĆ BORIKA
+BOJANIĆ BOSILJKA
+BOJANIĆ BRANE
+BOJANIĆ BUDIMIR
+BOJANIĆ DARINKA
+BOJANIĆ DESANKA
+BOJANIĆ DRAGICA
+BOJANIĆ DRAGOLJUB
+BOJANIĆ DUŠAN
+BOJANIĆ DUŠAN
+BOJANIĆ ILIJA
+BOJANIĆ JELICA
+BOJANIĆ LJUBO
+BOJANIĆ MILAN
+BOJANIĆ MILIVOJ
+BOJANIĆ MILIVOJ
+BOJANIĆ MILOŠ
+BOJANIĆ MILUN
+BOJANIĆ MIODRAG
+BOJANIĆ RANKO
+BOJANIĆ SLOBODAN
+BOJANIĆ SVETLANA
+BOJANIĆ VELIMIR
+BOJANIĆ ZORAN
+BOJANIĆ ZORA
+BOJANOVIĆ ČEDO
+BOJANOVIĆ DUŠKO
+BOJANOVIĆ LAZAR
+BOJANOVIĆ MARJAN
+BOJANOVIĆ MILORAD
+BOJANOVIĆ RISTAN
+BOJANOVIĆ VUJADIN
+BOJANOVIĆ VUJADIN
+BOJAT JANKO
+BOJAT MILORAD
+BOJAT RADOMIR
+BOJAT VESELIN DR
+BOJBIĆ RAJKO
+BOJIČIĆ RADIVOJ
+BOJIĆ ANĐELIJA
+BOJIĆ BLAGOTA
+BOJIĆ BOGDAN
+BOJIĆ BOGOLJUB
+BOJIĆ BOGOMIR
+BOJIĆ BORISLAV
+BOJIĆ BRANISLAVA
+BOJIĆ BRANISLAV
+BOJIĆ BRANISLAV
+BOJIĆ BRANISLAV
+BOJIĆ DANICA
+BOJIĆ DEJAN
+BOJIĆ DRAGAN
+BOJIĆ DRAGAN
+BOJIĆ DRAGICA
+BOJIĆ DRAGINJA
+BOJIĆ DUŠANKA
+BOJIĆ DUŠAN
+BOJIĆ DUŠAN
+BOJIĆ GORDANA DR
+BOJIĆ GORDANA
+BOJIĆ GORDANA
+BOJIĆ KATICA
+BOJIĆ-KOLARSKI GORDANA
+BOJIĆ LAZAR
+BOJIĆ MARKO
+BOJIĆ MIŠKO
+BOJIĆ MILA
+BOJIĆ MILENKO
+BOJIĆ MILIDAR
+BOJIĆ MILOVAN
+BOJIĆ MIODRAG
+BOJIĆ MIRKO
+BOJIĆ MIROSLAV
+BOJIĆ RADOSLAVA
+BOJIĆ RAJKO
+BOJIĆ RAJKO
+BOJIĆ SENKA
+BOJIĆ SNEŽANA
+BOJIĆ SNEŽANA
+BOJIĆ SONJICA
+BOJIĆ SRETEN
+BOJIĆ STEVAN
+BOJIĆ TOMISLAV
+BOJIĆ UGLJEŠA
+BOJIĆ VERA
+BOJINOVIĆ JELENA
+BOJKIĆ ALEKSANDAR
+BOJKIĆ MILICA
+BOJKO ALEKSANDAR
+BOJKO JOVANKA
+BOJKO MARIJA
+BOJKO NEVENKA
+BOJKOV FEODOR
+BOJKOV ROMAN
+BOJKOVIĆ DANICA
+BOJKOVIĆ KRISTINA
+BOJKOVIĆ LENA
+BOJKOVIĆ MILICA
+BOJKOVIĆ SLOBODAN
+BOJOVIĆ ŽIVORAD
+BOJOVIĆ BOŠKO
+BOJOVIĆ BOGDAN
+BOJOVIĆ BRANKO
+BOJOVIĆ BRANKO
+BOJOVIĆ DRAGOJE
+BOJOVIĆ DRAGOSLAV
+BOJOVIĆ DRAGUTIN
+BOJOVIĆ DRAGUTIN
+BOJOVIĆ IKONIJA
+BOJOVIĆ JAKOV
+BOJOVIĆ LJUBICA
+BOJOVIĆ LJUBO
+BOJOVIĆ MILAN
+BOJOVIĆ MILAN
+BOJOVIĆ MILICA
+BOJOVIĆ MILICA
+BOJOVIĆ MILOJE
+BOJOVIĆ MIROSLAV
+BOJOVIĆ NADA
+BOJOVIĆ NOVICA
+BOJOVIĆ PETAR
+BOJOVIĆ SRETKO
+BOJOVIĆ TOMISLAV
+BOJOVIĆ VELIŠA
+BOJOVIĆ VELJKO
+BOJOVIĆ VLADAN
+BOJOVIĆ VOJIN
+BOJOVIĆ ZORAN
+BOKŠAN ANKA
+BOKŠAN EMILIJAN
+BOKŠAN STOJAN
+BOKŠIĆ ĐOKA
+BOKŠIĆ JELENA
+BOKŠIĆ LAZAR
+BOKŠIĆ MIRJANA
+BOKŠIĆ MIRJANA
+BOKŠIĆ RADA
+BOKŠIĆ RADOJKA
+BOKŠIĆ RADOSLAV
+BOKŠIĆ RUŽENKA
+BOKŠIĆ SOKA
+BOKA ŽIVKA
+BOKA SILVIO
+BOKA STJEPAN
+BOKAN ANĐA
+BOKAN ANICA
+BOKAN DRAGO
+BOKAN MILAN
+BOKAN MILAN
+BOKAN MILENA
+BOKAN MIRKO
+BOKAN NIKOLA
+BOKAN RADE
+BOKAN RADOMIR
+BOKAN SLOBODAN
+BOKAN TOMISLAV
+BOKAN VELJKO
+BOKANIĆ BRANISLAV
+BOKANIĆ VLADIMIR
+BOKIĆ DANILO
+BOKIĆ DUŠAN
+BOKIĆ MILAN
+BOKIĆ RADOJICA
+BOKIĆ VID
+BOKOR ĐORĐE DIPL ING
+BOKOR ĐORĐE
+BOKOR GAVRA
+BOKOR LASLO DIPL ING
+BOKOR LASLO
+BOKOR MARIJA
+BOKOROV TANASIJE DIPL ING
+BOKUN DUBRAVKA
+BOKUN NOVAK
+BOKUN PETAR
+BOKUN SPASIJA
+BOKUN STEVA
+BOKUN VLADIMIR
+BOLANOVIĆ RAJKA
+BOLDIŽAR JOŽEF
+BOLDIŽAR LASLO
+BOLDIN RUDOLF
+BOLDOCKI JOŽEF
+BOLDOCKI VLADIMIR
+BOLDOG LAJOŠ
+BOLERAC ANA
+BOLESNIKOV BRANISLAV
+BOLESNIKOV DARINKA
+BOLESNIKOV MILORAD
+BOLESNIKOV ZORAN
+BOLF BRANKO
+BOLF NEVENKA
+BOLFIK JOSIP
+BOLIĆ ZLATKO
+BOLINOVSKA SOFIJA
+BOLINOVSKI MIROSLAV
+BOLJANOVIĆ ĐORĐE
+BOLJANOVIĆ ALEKSANDAR
+BOLJANOVIĆ MILIVOJE
+BOLJANOVIĆ NIKOLA
+BOLJANOVIĆ RADOVAN
+BOLJANOVIĆ ZORICA
+BOLJEVIĆ SVETOZAR
+BOLMANAC BRANKO
+BOLMANAC EVGENIJE
+BOLO ŽOLT
+BOLOK ANDRAŠ
+BOLOK JOŽEF
+BOLOK KARLO
+BOLOK KAROLJ
+BOLOK PAL
+BOLORIN RADIVOJ
+BOLTA ŽELJKO
+BOLTA ĐURA
+BOLTA BRANKO
+BOLTA DRAGICA
+BOMEŠTAR RADA
+BONA STEVAN
+BONDŽIĆ DEJAN
+BONDARENKO ALEKSANDAR DR
+BONDOKIĆ BORIVOJE
+BONDOKIĆ LJUBICA
+BONERT DUŠAN DR
+BONERT DUŠAN
+BONIĆ DRAGAN
+BONIĆ MARJAN
+BONIĆ MILICA
+BONIĆ VLADIMIR
+BONUS LJUBICA
+BOR ENDRE
+BORČANIN LJUBICA
+BORČANIN SOFIJA
+BORČANSKI TINKA
+BORČIĆ BUDE
+BORČIĆ DRAGANA
+BORČIĆ JOVAN
+BORŠI TIVADAR DIPL OEC
+BORŠOŠ ATILA
+BORŠOŠ BARBARA
+BORŠOŠ IŠTVAN
+BORŠOŠ IŠTVAN
+BORŠOŠ IMRE
+BORŠTNAR HENRIK
+BORŠTNER NADA
+BORĐIN LAZAR
+BORĐOŠKI ĐORĐE DIPL ING
+BORĐOŠKI BOŠKO
+BORĐOŠKI MILICA
+BORĐOŠKI TAMARA
+BORĐOŠKI VOJIN
+BORAŠ IRENA
+BORAS BORISLAV
+BORAS MARIJA
+BORAS MILICA
+BORBAŠ KAROLJ
+BORBAŠ VIOLETA
+BORBAŠ ZOLTAN
+BORBELJ ALEKSANDAR
+BORBELJ JANOŠ
+BORBELJ JOSIP
+BORBELJ LJUBICA
+BORBELJ MARIJA
+BORBELJ NEVENKA
+BORDAŠ ĐEZE
+BORDAŠ AKOŠ
+BORDAŠ BELA
+BORDAŠ FERENC
+BORDAŠ FRANJA
+BORDAŠ HILDA
+BORENOVIĆ ANTONIJE
+BORENOVIĆ MILE
+BORENOVIĆ VERA
+BORI IMRE DR
+BORI MARIJA
+BORIČIĆ LAZAR
+BORIČIĆ NOVAK
+BORIČIĆ RADIVOJE
+BORIČIĆ RADULE
+BORIŠEV BORISLAV
+BORIŠEV LJILJANA
+BORIŠEV MILENKO
+BORIŠEV NIKOLA
+BORIŠEV RUŽICA
+BORIŠEV SAVA
+BORIŠEV TEODOR
+BORIŠEV VASA
+BORIŠIĆ MARIJA
+BORIŠIĆ VLADIMIR
+BORIĆ ČEDOMIR
+BORIĆ ALEKSANDAR
+BORIĆ DUŠAN
+BORIĆ KAMENKO
+BORIĆ KATICA
+BORIĆ MILAN
+BORIĆ MILKA
+BORIĆ NIKOLA
+BORIĆ PETAR
+BORIĆ STEVAN
+BORIĆ ZORAN
+BORIĆ ZORAN
+BORIS JOSIP
+BORIVOJEVIĆ VITOMIR
+BORJANIN SLAVKO
+BORJANOVIĆ GORDANA
+BORJANOVIĆ ILIJA
+BORJANOVIĆ NIKOLA
+BORKO STANISLAV
+BORKOVAČKI ZORAN
+BORKOVAC KATARINA
+BORKOVIĆ DRAGOSLAVA
+BORKOVIĆ MILAN
+BORLJA STEVAN
+BOROŠ ŠANDOR
+BOROŠ ŠANDOR
+BOROŠ ĐERĐ
+BOROŠ-ĐEVI ŽELJKO
+BOROŠ ĐORĐE
+BOROŠ ALEKSANDAR
+BOROŠ ANDRIJA
+BOROŠ ANTUN
+BOROŠ ERNE
+BOROŠ EVA
+BOROŠ IŠTVAN
+BOROŠ JOŽEF
+BOROŠ JOLAN
+BOROŠ JULIJA
+BOROŠ LADISLAV
+BOROŠ LAJOŠ
+BOROŠ MARGITA
+BOROŠ MIHAJLO
+BOROŠ MIHAJLO
+BOROŠ MIKLOŠ
+BOROŠ VERA
+BOROŠIĆ ELIZABETA
+BOROCKI ALEKSANDAR
+BOROCKI DANICA
+BOROCKI LJUBINKA
+BOROJA LJUBAN
+BOROJA RUŽICA
+BOROJEV ARSEN DR LEKAR
+BOROJEV EMILIJAN DR
+BOROJEV JAGODA
+BOROJEV LJUBOMIR
+BOROJEV RADMILA
+BOROJEVIĆ ANA
+BOROJEVIĆ BOŠKO
+BOROJEVIĆ BOŠKO
+BOROJEVIĆ BOŠKO
+BOROJEVIĆ BRANKO
+BOROJEVIĆ DRAGAN
+BOROJEVIĆ DRAGOLJUB
+BOROJEVIĆ DUŠAN
+BOROJEVIĆ KRSTA
+BOROJEVIĆ LJILJANA
+BOROJEVIĆ MILAN
+BOROJEVIĆ PAVLE
+BOROJEVIĆ PETRA
+BOROJEVIĆ SLAVKO PROF
+BOROMISA DRAGICA
+BOROMISA JELENA
+BORONJAC DRAGAN
+BORONJAC MILICA
+BORONJAC OLGA
+BORONJAC VERA
+BOROTA ALEKSANDAR
+BOROTA JOVANKA
+BOROTA MILAN
+BOROTA MILORAD
+BOROTA MIRA
+BOROTA RADOSLAV DR LEKAR
+BOROVČANIN LJUBOMIR
+BOROVČANIN MILISAV
+BOROVČANIN NEDELJKO
+BOROVČANIN RADOMIR
+BOROVČANIN SLOBODAN
+BOROVAC ARSO
+BOROVAC BRANISLAV
+BOROVAC KATICA
+BOROVAC MILORAD
+BOROVIČANIN MILORAD
+BOROVIĆ ATILA
+BOROVIĆ JOSIP
+BOROVIĆ JOVAN
+BOROVIĆ KOSTA
+BOROVIĆ MENA
+BOROVIĆ PETAR
+BOROVIĆ RUDOLF
+BOROVIĆ VLADE
+BOROVIĆANIN MIROSLAV
+BOROVICA BOJKA
+BOROVICA IVAN
+BOROVICA IVAN
+BOROVICA JELENA
+BOROVICA MIODRAG
+BOROVNICA BRANKO
+BOROVNICA MARKO
+BOROVNICA MILAN
+BOROVNICA MILEVA
+BOROZAN MILORAD
+BORUŠ IŠTVAN
+BORUŠ IRENA
+BORZAŠKI BRATISLAVA
+BORZAŠKI RADOMIR
+BORZAŠKI STEVAN
+BOSAK IRENA
+BOSAKOV DRAGAN
+BOSANČIĆ BOŠKO
+BOSANČIĆ BOGDAN
+BOSANČIĆ BOGDAN
+BOSANČIĆ JELICA
+BOSANČIĆ MANOJLO
+BOSANČIĆ MILEVA
+BOSANČIĆ MIODRAG
+BOSANČIĆ RADOVAN
+BOSANČIĆ RAJKO
+BOSANČIĆ TRIVA
+BOSANČIĆ VASO
+BOSANČIĆ VLADO
+BOSANČIĆ VUJO
+BOSANAC JOVAN
+BOSANAC LJUBICA
+BOSANAC MARIJA
+BOSANAC NIKOLA
+BOSANAC VERA
+BOSIĆ BOŽANA
+BOSIĆ BRANKO
+BOSIĆ DUŠAN DR
+BOSIĆ JOVAN
+BOSIĆ MIODRAG
+BOSIĆ RADOVAN
+BOSIĆ SLAVKA
+BOSILJKIĆ LAZAR
+BOSILJKIĆ LUKA
+BOSIN SLOBODAN
+BOSIOK DORU
+BOSNAI-BABA LUCIJA
+BOSNAI JANOŠ
+BOSNIĆ ČEDOMIR
+BOSNIĆ ĐURĐINKA
+BOSNIĆ ALEKSANDAR
+BOSNIĆ BOŽIDAR
+BOSNIĆ BOSILJKA
+BOSNIĆ DAVID
+BOSNIĆ DAVID
+BOSNIĆ JOVAN
+BOSNIĆ MARA
+BOSNIĆ MIRKO
+BOSNIĆ MLADEN
+BOSNIĆ NADA
+BOSNIĆ NURIJA
+BOSNIĆ RADOSA
+BOSNIĆ RAJKO
+BOSNIĆ VERA
+BOSNIĆ VLADA
+BOSNIĆ VLADA
+BOSNIĆ ZORAN
+BOTA BRANISLAV
+BOTIČ OLIVERA
+BOTIĆ ALEKSANDAR
+BOTIĆ BOGDAN
+BOTIĆ DANICA
+BOTIĆ DARKO
+BOTIĆ DARKO
+BOTIĆ GAVRA
+BOTIĆ MILAN
+BOTIĆ MILAN
+BOTIĆ MILE
+BOTIĆ MILORAD ADVOKAT
+BOTIĆ MIROSLAVA
+BOTIĆ OLIVERA
+BOTIĆ PROKA
+BOTIĆ RADOSLAVA
+BOTIĆ VERICA
+BOTIĆ VLADIMIR
+BOTIĆ ZORANKA
+BOTKA ANTAL
+BOTKA DAVID
+BOTKA ERŽEBET
+BOTKA VERONA
+BOTKA ZOLTAN
+BOTLIK GEZA
+BOTLIK MARIJA
+BOTOŠKI DRAGOVAN
+BOTOŠKI SAVA
+BOTORIĆ RADOJICA
+BOTZA IŠTVAN
+BOZEJAC ANTAL DIPL PRAVNIK
+BOZEJAC DUŠAN
+BOZEJAC GORDANA
+BOZEJAC MILENKO
+BOZEJAC SMILJKA
+BOZEJAC SVETISLAV
+BOZEJAC VERA
+BOZOKIN STEVICA
+BRČIĆ IGNJAC
+BRČIĆ MIROSLAV
+BRČIĆ NEĐO
+BRČIĆ RADOVAN
+BRČIN ĐORĐE
+BRČIN MILINKA
+BRČIN NIKOLA
+BRČIN RATOMIR
+BRČIN SLAVICA
+BRČIN SVETOZAR
+BRČINOVIĆ PAVLE
+BRČKALOVIĆ LJUBOMIR
+BRAČEVIĆ IVAN
+BRAČEVIĆ MIRJANA
+BRAŠANAC BORISLAV
+BRAŠANAC GAVRILO DIPL ING
+BRAŠANAC ILIJA
+BRAŠANAC MIRJANA
+BRAŠANAC MIROSLAV
+BRAŠKO JOŽEF
+BRAŠNJO GUSTAV
+BRAŠNJO IŠTVAN
+BRAŠNJO IŠTVAN
+BRACANOVIĆ DAMJAN
+BRACANOVIĆ MILUTIN
+BRACIĆ MILAN
+BRADAČ ELIZABETA
+BRADAČ IMRE
+BRADAŠ ŽIVA DIPL ING
+BRADARIĆ NEDELJKO
+BRADIĆ ĐORĐE
+BRADIĆ ĐORĐE
+BRADIĆ BOŽIDAR
+BRADIĆ BOGOLJUB
+BRADIĆ BOGOLJUB
+BRADIĆ BRANKO
+BRADIĆ EVGENIJA
+BRADIĆ GAVRILO
+BRADIĆ JUSTINA
+BRADIĆ MILAN DIPL ING
+BRADIĆ MILAN
+BRADIĆ MILICA
+BRADIĆ MILIVOJE
+BRADIĆ MILJKO
+BRADIĆ SLOBODAN
+BRADIĆ SRETA
+BRADIĆ-TENJI ZORICA
+BRADIĆ TEODORA
+BRADIĆ TOMISLAVA
+BRADIĆ VIDOJE
+BRADIĆ ZORICA
+BRADOŠ SLOBODAN
+BRAHTL MARICA
+BRAJDIĆ IVAN
+BRAJER FRANJA
+BRAJEVIĆ PREDRAG
+BRAJIĆ MILICA
+BRAJIĆ RADOVAN
+BRAJIĆ SLOBODAN
+BRAJKOV MARKO
+BRAJKOVIĆ IVO
+BRAJKOVIĆ MIRJANA
+BRAJOVIĆ MILIVOJE
+BRAJOVIĆ MILOŠ
+BRAJOVIĆ SLAVKA
+BRAJOVIĆ SPASOJE
+BRAJOVIĆ STANKA
+BRAJOVIĆ VELJKO
+BRAKOČEVIĆ JOVAN
+BRAKUS DUŠANKA
+BRAKUS LJILJANA
+BRAKUS MARIJA
+BRAKUS MILAN
+BRAKUS MOMČILO
+BRALOVIĆ RATKO
+BRANČIĆ BORIS DIPL ING
+BRANČIĆ JASNA
+BRANČIĆ MILENA
+BRANČIĆ MILUŠKO
+BRANA PETAR
+BRANILOVIĆ STJEPAN
+BRANKOV ĐORĐE
+BRANKOV ĐORĐE
+BRANKOV ALEKSANDRA
+BRANKOV-BOKA ROZALIJA
+BRANKOV BORIVOJ
+BRANKOV BRANISLAV
+BRANKOV DOBRICA
+BRANKOV DRAGANA
+BRANKOV DRAGAN
+BRANKOV DUŠAN
+BRANKOV EMIL
+BRANKOV ILIJA
+BRANKOV JELICA
+BRANKOV JOVANKA
+BRANKOV KOSTA
+BRANKOV KOSTA
+BRANKOV LJUBICA
+BRANKOV LJUBICA
+BRANKOV LJUBINKO
+BRANKOV MILICA
+BRANKOV MILORAD
+BRANKOV MIRKO
+BRANKOV MITA
+BRANKOV MITA
+BRANKOV MLADEN
+BRANKOV MOMIR
+BRANKOV NADA
+BRANKOV OLIVERA
+BRANKOV RADIVOJ
+BRANKOV RADOVAN
+BRANKOV RADOVAN
+BRANKOV SVETISLAV
+BRANKOV VELJKO
+BRANKOV VLADIMIR
+BRANKOV ZLATINKA
+BRANKOVAN ĐORĐE
+BRANKOVAN VLASTIMIR
+BRANKOVIĆ BOGOLJUB
+BRANKOVIĆ BOJA
+BRANKOVIĆ BRANKO
+BRANKOVIĆ BRANKO
+BRANKOVIĆ DRAGAN
+BRANKOVIĆ DUŠANKA
+BRANKOVIĆ DUŠAN
+BRANKOVIĆ DUŠAN
+BRANKOVIĆ ILIJA
+BRANKOVIĆ-KOVAČEVIĆ RADMILA
+BRANKOVIĆ LJILJANA
+BRANKOVIĆ LJUBICA
+BRANKOVIĆ MILAN
+BRANKOVIĆ MILENA
+BRANKOVIĆ MILORAD
+BRANKOVIĆ MIRKO
+BRANKOVIĆ MLADEN
+BRANKOVIĆ SAVKA
+BRANKOVIĆ SLAVKO
+BRANKOVIĆ SLAVOLJUB
+BRANKOVIĆ SLAVOLJUB
+BRANKOVIĆ SVETLANA
+BRANKOVIĆ TUGOMIR
+BRANKOVIĆ ZINA
+BRANKOVIĆ ZORAN
+BRANOVAČKI ĐORĐE
+BRANOVAČKI ANGELINA
+BRANOVAČKI GAVRILO
+BRANOVAČKI IVANA
+BRANOVAČKI LJUBICA
+BRANOVAČKI OLGA
+BRANOVAČKI SVETISLAV
+BRANOVIĆ BISERKA
+BRANOVIĆ RUŽA
+BRAOVIĆ SANDRA
+BRAOVIĆ VLADIMIR
+BRAT DUŠAN
+BRATIĆ AŠIR
+BRATIĆ DRAGO
+BRATIĆ DUŠAN
+BRATIĆ GORAN
+BRATIĆ LJUBICA
+BRATIĆ LJUBOMIR
+BRATIĆ MUHO
+BRATIĆ NEDELJKO
+BRATIĆ RADOVAN
+BRATIĆ VOJISLAV
+BRATONOŽIĆ MARGITA
+BRBORIĆ LAZAR
+BRBORIĆ SRBISLAV
+BRCANOV ĐURĐINKA
+BRCANOV OLGA
+BRCANOV SIMA
+BRCANOV TIHOMIR
+BRCANSKI NIKOLA
+BRDAR DANE
+BRDAR DRAGO
+BRDAR ILIJA
+BRDAR IVANKA
+BRDAR MILAN
+BRDAR PERO
+BRDAR SLAVIŠA
+BRDAREVIĆ DUŠKO
+BRDARIĆ DRAGOMIR
+BRDARIĆ KOSTA
+BRDARIĆ MILAN
+BRDARIĆ PETAR
+BREŠĆANSKI MARIJA
+BREŠKOVIĆ STANISLAVA
+BREŠKOVSKI DRAGICA
+BREŽAN ILONA
+BREŽAN LEONORA
+BREŽAN MARIJA
+BREBER LJUBICA
+BREBERINA MILAN
+BREBERINA STEVAN
+BREGUN ĐORĐE
+BREGUN ALEKSANDRA
+BREGUN NIKOLA
+BREGUN RADOSLAV DIPL ING
+BREKALO JOSIP
+BREKIĆ ILIJA
+BREKIĆ NIKOLA
+BREKIĆ STEVAN
+BRENECKI ZDRAVKO
+BRENESEL DRAGAN
+BRENESEL GABRIEL
+BRENESEL MIRJANA
+BRENESEL NIKOLA
+BRESTOVAČKI IVAN
+BRESTOVAČKI JASMINA
+BRESTOVAČKI MILKA
+BRESTOVAČKI STEVA
+BRET VERA
+BRETŠNAJDER ANA
+BREZNIK ERNE
+BREZNJAK JANOŠ
+BREZNJAK MARIJA
+BREZOVČEK JOVANKA
+BREZOVAC DRAGICA
+BREZOVAC DUŠAN
+BREZOVAC IVAN
+BREZOVAC IVAN
+BREZOVAC JURAJ
+BREZOVAC KATARINA
+BREZOVAC LJUBINKA
+BREZOVAC MILENA
+BREZOVAC MILOŠ
+BREZOVAC PETAR
+BREZOVAC SAVA
+BREZOVIĆ MIRJANA
+BRIŠEVAC JURE
+BRIKER SMILJANA
+BRINJAK DRAGO
+BRITVEC MARKO
+BRIZA ŽELMIRA
+BRIZA JAN
+BRIZA LUKRECIJA
+BRK SIMO
+BRKANIĆ MARKO
+BRKANIĆ MILENKO
+BRKANIĆ TATJANA
+BRKANLIĆ ŽELJKO
+BRKANLIĆ DUŠAN
+BRKIĆ ĐORĐE
+BRKIĆ ĐORĐE
+BRKIĆ ĐURO
+BRKIĆ ABAZ
+BRKIĆ ALEKSANDAR
+BRKIĆ ALEKSANDAR
+BRKIĆ ANKA
+BRKIĆ ANKICA
+BRKIĆ-BELIĆ DANICA
+BRKIĆ BOGDAN
+BRKIĆ BRANKO
+BRKIĆ DRAGAN
+BRKIĆ DRAGA
+BRKIĆ DRAGO
+BRKIĆ DUŠANKA
+BRKIĆ GOJKO
+BRKIĆ ILIJA
+BRKIĆ IVAN
+BRKIĆ IVICA
+BRKIĆ JELISAVETA
+BRKIĆ JOVAN
+BRKIĆ JOVAN
+BRKIĆ JOVAN
+BRKIĆ JOVAN
+BRKIĆ LJUBOMIR
+BRKIĆ LUKA
+BRKIĆ MAGDALENA
+BRKIĆ MANDA
+BRKIĆ MARIJA
+BRKIĆ MARIJA
+BRKIĆ MILADIN
+BRKIĆ MILAN
+BRKIĆ MILAN
+BRKIĆ MILAN
+BRKIĆ MIRJANA
+BRKIĆ MITAR
+BRKIĆ NADA
+BRKIĆ NEBOJŠA
+BRKIĆ NIKOLA
+BRKIĆ NIKOLA
+BRKIĆ PETAR
+BRKIĆ PETAR
+BRKIĆ PETRA
+BRKIĆ RADOJKA
+BRKIĆ RADOSLAV
+BRKIĆ RADOSLAV
+BRKIĆ RADOSLAV
+BRKIĆ RATKO
+BRKIĆ RUŽA
+BRKIĆ SILVIJA
+BRKIĆ SLAVKO
+BRKIĆ SNEŽANA
+BRKIĆ SNEŽANA
+BRKIĆ TOMO DIPL ING
+BRKIĆ UROŠ
+BRKIĆ VEZILIJA
+BRKIĆ VLADIMIR
+BRKIĆ VLADIMIR
+BRKIĆ VLADIMIR
+BRKIĆ VOJISLAV
+BRKIĆ ZDRAVKO
+BRKIĆ ZORAN
+BRKLJAČ BRANIMIR
+BRKLJAČ BRANISLAV
+BRKLJAČ DRAGOLJUB
+BRKLJAČ ILIJA
+BRKLJAČ KATARINA
+BRKLJAČ MILANKO
+BRKLJAČ MILAN
+BRKLJAČ NIKOLA
+BRKLJAČ NIKOLA
+BRKLJAČ RUŽICA
+BRKLJAČ SLOBODAN
+BRKLJAČ STEVAN
+BRKLJAČA BRATOLJUB
+BRKLJAČIĆ BOŽENA
+BRKLJAČIĆ VLADIMIR
+BRKO NIKOLA
+BRKOVIĆ ĐORĐE
+BRKOVIĆ ANTUN
+BRKOVIĆ BOSILJKA
+BRKOVIĆ DRAGO
+BRKOVIĆ DUŠAN
+BRKOVIĆ EMILIJA
+BRKOVIĆ JOVANKA
+BRKOVIĆ LJUBOMIR
+BRKOVIĆ MAGDA
+BRKOVIĆ MILAN
+BRKOVIĆ MILICA
+BRKOVIĆ NADA
+BRKOVIĆ NIKOLA
+BRKOVIĆ RADOVAN
+BRKOVIĆ VIODSAVA
+BRKOVIĆ VJEKOSLAV
+BRKOVIĆ ZLATKO
+BRLIĆ DRAGUTIN
+BRLIĆ IVAN
+BRMBOTA JOVAN
+BRMBOTA JOVAN
+BRNJAKOVIĆ MARIJA
+BRNOVIĆ SVETOZAR
+BROŠTEAN VIOREL
+BROĆETA BOGDAN
+BROĆETA MIĆA
+BROĆETA MILORAD
+BROĆETA NEDELJKO
+BROĆETA OBRAD
+BRODRANSKI SVETLANA
+BROJČIN DUŠAN
+BROJČIN SAVA
+BRONZA DRAGAN
+BRONZA RAJKO
+BROZOVIĆ IVAN
+BRSANOVIĆ KRSTA
+BRSTINA VASILIJE
+BRTAN JOSIP
+BRTKA JAN
+BRUŠNJAI JOSIP
+BRUŠNJAK PERO
+BRUJIĆ DUŠAN
+BRUJIĆ JOVAN
+BRUJIĆ MANOJLO
+BRUJIĆ MILAN
+BRUJIĆ MILICA
+BRUJIĆ SLAVKO
+BRUJIĆ VLADIMIR
+BRUK ANDRIJA DR
+BRUKNER BOGDAN
+BRUKNER BOGDAN
+BRUNČEVIĆ HIVZO
+BRUNČEVIĆ REDŽEP
+BRUNDZA CECILIJA
+BRUNDZA VLADIMIR MR
+BRUNER JOSIP
+BRUNET ELEMER
+BRUNET FRANJA
+BRUNET IŠTVAN
+BRUNET ZOLTAN
+BRUNET ZOLTAN
+BRUSIN DUŠKO
+BRUSIN KAJICA
+BRUSIN MILOJKO
+BRUSIN MILOVAN
+BRUSIN RADICA
+BRUSIN SLAVKO
+BRUSNJAI KARLO
+BRUSNJAI LASLO
+BRUSNJAI MARGARITA
+BRZAK ŽIVKA
+BRZAK ŽIVORAD
+BRZAK ĐORĐE
+BRZAK ĐORĐE
+BRZAK ĐORĐE
+BRZAK ĐORĐE
+BRZAK ĐUKA
+BRZAK ALEKSANDAR
+BRZAK ALEKSANDAR
+BRZAK ANĐELKA
+BRZAK BOGDANKA
+BRZAK BORISLAV
+BRZAK BOSA
+BRZAK BRANISLAV
+BRZAK DRAGAN
+BRZAK DRAGAN
+BRZAK DRAGICA
+BRZAK DRAGOMIR
+BRZAK DUŠKO
+BRZAK GOJKO
+BRZAK ILIJA
+BRZAK JADRANKA
+BRZAK JELENA
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK JOVAN
+BRZAK KOSTA
+BRZAK LAZAR
+BRZAK LEPOSAVA
+BRZAK MARIJA
+BRZAK MILA
+BRZAK MILENKO
+BRZAK MILENKO
+BRZAK MILENKO
+BRZAK MILOVAN
+BRZAK MILOVAN
+BRZAK MIRA
+BRZAK MIRA
+BRZAK MIROSLAV
+BRZAK MITAR
+BRZAK PETAR
+BRZAK PREDRAG
+BRZAK RADOSLAV
+BRZAK SAVA
+BRZAK SAVETA
+BRZAK SIMEON
+BRZAK SLAVKO
+BRZAK SLOBODANKA
+BRZAK STEVAN
+BRZAK STEVAN
+BRZAK STEVAN
+BRZAK STOJANKA
+BRZAK SVETLANA
+BRZAK SVETOZAR
+BRZAK TOŠA
+BRZAK TOŠA
+BRZAK TOŠICA
+BRZAK TODOR
+BRZAK VASA
+BRZAK VASA
+BRZAK VASA
+BRZAK VELJKO
+BRZAK VIDA
+BRZAK VIDOSAVA
+BRZAK VIDOSLAV
+BRZAK VLADISLAV
+BRZAK ZORAN
+BRZAKOVIĆ IGOR
+BRZAKOVIĆ NENAD DR
+BRZAKOVIĆ VITOMIR DR LEKAR
+BRZANOVIĆ DRAGAN
+BRZIĆ ŽIVAN
+BRZIĆ ĐORĐE
+BRZIĆ BRANKO
+BRZIĆ FRANJA
+BRZIĆ IVAN
+BRZIĆ JOVAN
+BRZIĆ LAZAR
+BRZIĆ LAZAR
+BRZIĆ MIRJANA
+BRZIĆ PETAR
+BRZIĆ PETAR
+BRZIĆ RADOSLAV
+BRZIĆ STEVAN
+BRZIĆ SVETOZAR
+BRZIĆ TODOR
+BRZIĆ ZLATA
+BRZICA BRANKA
+BRZICA FERDO
+BRZICA IVANKA
+BRZICA MARINKO
+BRZOVAN BEHIJA
+BU IŠTVAN
+BUČA DUŠAN
+BUČA DUŠICA
+BUČA IRINA
+BUČA VASA
+BUČANSKI JOŽEF
+BUČIĆ BORISLAV
+BUČKO AHNETA
+BUČKO JANKO
+BUČKO MARIJA
+BUČO DANIJELA
+BUČU-MARTONOŠI GIZELA
+BUŠ ANA
+BUŠ MAGDALENA
+BUŠ SILVESTER
+BUŠIĆ SREĆKO
+BUŠLJETA BRANKA
+BUŠTREVIĆ MIRJANA
+BUŠTREVIĆ SLOBODANKA
+BUŠTROVIĆ OLGA
+BUĆAN DUŠAN
+BUĆAN DUŠAN
+BUĆAN MILEVA
+BUĆAN SLAVKA
+BUĆANSKI MAĆAŠ
+BUĆIN RADE
+BUĆO ZAGORKA
+BUŽANČIĆ MIRA
+BUŽANIN MILE
+BUĐI ĐULA
+BUĐILAN PETAR
+BUAČA DRAGAN
+BUAČA OLGICA
+BUAČA STEVAN
+BUBALO DRAGAN
+BUBALO DRAGINJA
+BUBALO GORAN
+BUBALO ILIJA
+BUBALO JOVAN
+BUBALO JOVO
+BUBALO MIROSLAV
+BUBALO PETAR
+BUBALO RATOMIR
+BUBALO SIMO
+BUBALO TEODORA
+BUBANJ BRANISLAV
+BUBANJ DANE
+BUBANJ IVANKA
+BUBANJ MILICA
+BUBANJ MILOŠ
+BUBANJ RADE
+BUBANJ RADOJKA
+BUBANJ SRBOLJUB
+BUBANJ VIDOSAVA
+BUBANJA ALEKSANDAR
+BUBANJA BATRIĆ
+BUBANJA DARINKA
+BUBANJA KATICA
+BUBANJA MAŠAN
+BUBANJA RADISAV
+BUBANJA TADIJA
+BUBANJA VOJISLAV
+BUBANJA ZORKA
+BUBIĆ MILAN
+BUBNIĆ VERONA
+BUBNJEVIĆ ĐORĐE
+BUBNJEVIĆ BORE
+BUBNJEVIĆ DARA
+BUBNJEVIĆ DRAGO
+BUBNJEVIĆ GOJKO
+BUBNJEVIĆ JANJA
+BUBNJEVIĆ LJUBOMIR
+BUBNJEVIĆ MARICA
+BUBNJEVIĆ MARINKO
+BUBNJEVIĆ MIRKO
+BUBNJEVIĆ NENAD
+BUBNJEVIĆ OSTOJA
+BUBNJEVIĆ RADA
+BUBNJEVIĆ RADOMIR
+BUBNJEVIĆ RELJA
+BUBNJEVIĆ SRBOLJUB
+BUBNJEVIĆ SRETEN
+BUBNJEVIĆ STOJANKA
+BUBNJEVIĆ VASKRSIJE
+BUBNJEVIĆ VLADIMIR
+BUBNJIĆ ŽELJKO
+BUBONJA BORIS
+BUBONJA DOSTANA
+BUBONJA DUŠAN
+BUBONJA RADOVAN
+BUBREŠKO GORDANA
+BUBULJ MILIĆ
+BUBULJ NADA
+BUBULJ STOJANKA
+BUBULJ STOJA
+BUCALO MILADIN
+BUCALO MIRA
+BUCALO MITAR
+BUCALOVIĆ DUŠAN
+BUCIĆ ANTE
+BUCIĆ MILIVOJ
+BUCULJEVIĆ ALEKSANDAR
+BUCULJEVIĆ ZLATOMIR DR
+BUDŽAKOSKI TOMA
+BUDŽAROV SAVA
+BUDA ADA
+BUDA EVA
+BUDA HAJNALKA
+BUDA JOŽEF
+BUDA TEREZA
+BUDAĆ ZORAN
+BUDAI GORICA
+BUDAI ILONKA
+BUDAI JOŽEF
+BUDAI JOLAN
+BUDAI JOVAN
+BUDAI LAJOŠ
+BUDAI LAJOŠ
+BUDAI ZORA
+BUDAK DRAGAN
+BUDAK IVICA
+BUDAK MILAN
+BUDAK VERA
+BUDAKOV ALEKSANDRA
+BUDAKOV BRANISLAV
+BUDAKOV DRAGAN
+BUDAKOV GORICA
+BUDAKOV IVAN
+BUDAKOV LJILJANA
+BUDAKOV MILAN
+BUDAKOV MILUTIN
+BUDAKOV OLIVERA
+BUDAKOV SLOBODAN
+BUDANOV ANTAL
+BUDANOV DANICA
+BUDANOVIĆ SAVETA
+BUDANOVIĆ STANA
+BUDERKA MARIJA
+BUDIŠA BOŽA
+BUDIŠA BORA
+BUDIŠA MIRKO
+BUDIŠA TIHOMIR
+BUDIŠIĆ DRAGAN
+BUDIŠIN ĐORĐE
+BUDIŠIN IVAN
+BUDIŠIN MILOŠ
+BUDIŠIN MILOŠ
+BUDIŠIN NIKOLA DR
+BUDIŠIN-SAKAČ SONJA DR
+BUDIŠIN VLADIMIR
+BUDIĆ ŽELJKO
+BUDIĆ DANILO
+BUDIĆ DRAGOSLAV
+BUDIĆ DUŠANKA
+BUDIĆ MILAN
+BUDIĆ ZORKA
+BUDIMČIĆ JOVAN
+BUDIMČIĆ LJILJANA
+BUDIMČIĆ MILIVOJ
+BUDIMA BAJRUŠ
+BUDIMAC BUDIMIR
+BUDIMAC ZORAN
+BUDIMIR MARIJA
+BUDIMIR MILAN
+BUDIMIR MILOJKO
+BUDIMIROVIĆ DRAGICA
+BUDIMIROVIĆ NEGOVAN
+BUDIMIROVIĆ UROŠ
+BUDIMKIĆ-KRSTIĆ DRAGANA
+BUDIMLIJA ALEKSANDAR
+BUDIMLIJA DRAGICA
+BUDIMLIJA ILIJA
+BUDIMLIJA MILAN
+BUDIMLIJA MILAN
+BUDIMLIJA RADE
+BUDIMSKI ĐURA
+BUDIMSKI SLAVUJ
+BUDINČEVIĆ GABOR
+BUDINČEVIĆ JULIJANA
+BUDINČEVIĆ MIRKO
+BUDINČEVIĆ NIKOLA
+BUDINSKI KIRIL
+BUDINSKI LJUBA
+BUDINSKI MARIJA
+BUDINSKI VLADIMIR
+BUDISAVLJEVIĆ BRANKO
+BUDISAVLJEVIĆ DUŠAN
+BUDISAVLJEVIĆ KAROLINA
+BUDISAVLJEVIĆ MARIJA
+BUDISAVLJEVIĆ NATALIJA
+BUDISAVLJEVIĆ NEVENKA
+BUDISAVLJEVIĆ RUŽICA
+BUDISAVLJEVIĆ VERICA
+BUDJILAN PETAR
+BUDOŠAN ŽIVKO
+BUDOŠAN ĐORĐE
+BUDOŠAN ALEKSANDAR
+BUDOŠAN-KOVAČ JELENA
+BUDOŠAN MILOŠ
+BUDOŠAN NADA
+BUDOŠAN SAVA
+BUDOŠAN SAVA
+BUDOŠAN STEVAN
+BUDOŠAN TOŠICA
+BUDOŠAN VASA
+BUDOŠAN VASA
+BUDOŠAN VUKOSAVA
+BUDOVALČEV ARSA
+BUDOVALČEV OLGA
+BUDOVALČEV PETAR
+BUDOVALČEV PETAR
+BUDURIN RADOJE
+BUGADŽIJA LAJOŠ
+BUGADŽIJA STEVAN
+BUGARČIĆ PETAR
+BUGARČIĆ RADMILO
+BUGARČIĆ SMILJKA
+BUGARIN-ČONKIĆ RADOJKA
+BUGARIN ŽIVAN
+BUGARIN ŽIVAN
+BUGARIN ŽIVAN
+BUGARIN ŽIVAN
+BUGARIN BOŠKO
+BUGARIN BORISLAV
+BUGARIN DANICA
+BUGARIN ILIJA
+BUGARIN IVANA
+BUGARIN JEVROSIMA
+BUGARIN LJILJANA
+BUGARIN LJUBOMIR
+BUGARIN MARIJA
+BUGARIN MILOŠ
+BUGARIN MILORAD
+BUGARIN RADISLAV
+BUGARIN RADOSLAV
+BUGARIN SINIŠA
+BUGARIN SPASOJE
+BUGARIN STEVAN
+BUGARIN VELIBOR
+BUGARIN VESNA
+BUGARIN ZORAN
+BUGARIN ZORICA
+BUGARINOVIĆ MARGARETA
+BUGARIU JULIJAN
+BUGARSKI ŽARKO
+BUGARSKI ŽIKA
+BUGARSKI ŽIVAN DIPL ING
+BUGARSKI ĐORĐE
+BUGARSKI ĐORĐE
+BUGARSKI ĐURICA
+BUGARSKI BOJANA
+BUGARSKI BRANKO
+BUGARSKI DIMITRIJE
+BUGARSKI DIMITRIJE
+BUGARSKI DRAGAN
+BUGARSKI DRAGICA
+BUGARSKI DRAGOLJUB DR
+BUGARSKI DRAGOLJUB
+BUGARSKI DRAGOSLAV
+BUGARSKI DRAGOSLAV
+BUGARSKI DRAGOSLAV
+BUGARSKI DUŠAN DR
+BUGARSKI DUŠAN
+BUGARSKI DUŠICA
+BUGARSKI DUŠICA
+BUGARSKI DUŠKO
+BUGARSKI EVICA
+BUGARSKI JOVAN
+BUGARSKI JULKA
+BUGARSKI KATA
+BUGARSKI KRSTA
+BUGARSKI KSENIJA
+BUGARSKI LAZAR
+BUGARSKI LAZAR
+BUGARSKI MILAN
+BUGARSKI MILAN
+BUGARSKI MILENA
+BUGARSKI MILENKO
+BUGARSKI MILETA
+BUGARSKI MILICA
+BUGARSKI MILORAD
+BUGARSKI MIRA
+BUGARSKI MIRJANA
+BUGARSKI MIRJANA
+BUGARSKI MIROSLAVA
+BUGARSKI MIROSLAV
+BUGARSKI NADA
+BUGARSKI NEDELJKO
+BUGARSKI NIKOLA
+BUGARSKI OLIVERA
+BUGARSKI PAJA
+BUGARSKI PAVLE
+BUGARSKI RADOSLAV
+BUGARSKI RASTKO
+BUGARSKI RATOMIR
+BUGARSKI SAVA
+BUGARSKI SAVA
+BUGARSKI SLOBODAN
+BUGARSKI SLOBODAN
+BUGARSKI SLOBODAN
+BUGARSKI SOFIJA
+BUGARSKI STEVAN
+BUGARSKI STEVAN
+BUGARSKI STEVAN
+BUGARSKI STEVAN
+BUGARSKI SVETLANA
+BUGARSKI TATJANA
+BUGARSKI VOJISLAVA
+BUGARSKI VOJISLAV
+BUGARSKI VOJISLAV
+BUGARSKI ZORA
+BUGELJ IVAN
+BUHA BRANKA
+BUHA RADIVOJE
+BUHA VUKAŠIN
+BUHMILER AGNEŠ
+BUHMILER ATILA
+BUHMILER EVA
+BUHMILER JOSIP
+BUHMILER JOSIP
+BUHMILER KARLO
+BUIŠA MILINKO
+BUILA ANA
+BUILA IRINEJ
+BUILA LJUBICA
+BUILA MAKSIMILIJAN
+BUILA MIROSLAV
+BUILA SLAVICA
+BUILA SLAVOMIR
+BUJAK EMIL
+BUJAK MATILDA
+BUJAK SAVA
+BUJANDRIĆ ANĐELKA
+BUJANDRIĆ JOVAN
+BUJANDRIĆ LJUBICA
+BUJANDRIĆ MARIJA
+BUJANDRIĆ MILIVOJ
+BUJANDRIĆ MITAR
+BUJANDRIĆ NIKOLA
+BUJANDRIĆ PAVLE
+BUJANDRIĆ PETAR
+BUJANDRIĆ SVETOZAR
+BUJANDRIĆ VLADIMIR
+BUJAS MILENKO
+BUJAS VENČESLAV
+BUJDOŠA STEVAN
+BUJDOŠIK BOHOMIL
+BUJDOŠIK KLARA
+BUJDOŠIK MIROSLAV
+BUJDOŠO IŠTVAN
+BUJIŠIĆ ŽIVKO
+BUJIĆ BORIVOJE
+BUJLA ETELKA
+BUJLA JASMINA
+BUJNOVIĆ ĐORĐE
+BUJNOVIĆ MILINKO
+BUKALOV ZORA
+BUKARA DUŠANKA
+BUKARICA DANICA
+BUKARICA JOVAN
+BUKATKA ANDREJ
+BUKATKA RADOSLAV
+BUKATKO VLADIMIR
+BUKATKOV IVAN
+BUKIĆ JAKOV
+BUKILIĆ DRAGA
+BUKILIĆ DRAGICA
+BUKIN NIKOLA DIPL ING
+BUKINAC ĐORĐE
+BUKINAC BILJANA
+BUKINAC BOGUMILA
+BUKINAC DINA
+BUKINAC GLIGORIJE
+BUKINAC IVAN
+BUKINAC JULKA
+BUKINAC LAZAR
+BUKINAC MILADIN
+BUKINAC MILAN
+BUKINAC MILICA
+BUKINAC MILOSAVA
+BUKINAC MIRKO
+BUKINAC MIROSLAV
+BUKINAC RUŽICA
+BUKINAC SLAVKO
+BUKINAC STANKA
+BUKINAC STEVAN
+BUKINAC UROŠ
+BUKOVČANIN ACA
+BUKOVAČKI MIODRAG
+BUKOVAČKI PERA
+BUKOVAČKI SVETOZAR
+BUKOVAC ANKICA
+BUKOVAC ATILA
+BUKOVAC STEVAN
+BUKOVAC VLADO
+BUKOVALA DESANKA
+BUKOVIČANIN RELJA
+BUKOVIĆ ANDRAŠ
+BUKOVICA DIMITRIJE
+BUKOVICA RANKO
+BUKTA NADA
+BUKTA ZVONKO
+BUKUMIROVIĆ MILOMIR
+BUKUMIROVIĆ MILORAD DIPL ING
+BUKURECKI BRANISLAV
+BUKURECKI SINIŠA
+BUKURIĆ TATJANA
+BUKUROV ŽARKO
+BUKUROV ŽIVAN
+BUKUROV ŽIVAN
+BUKUROV BOŠKO
+BUKUROV BRANISLAV DR PROF
+BUKUROV KSENIJA
+BUKVA VELIMIR
+BUKVIĆ ŽELJKA
+BUKVIĆ ALEKSANDAR
+BUKVIĆ BRANKO
+BUKVIĆ BUDE
+BUKVIĆ DANE
+BUKVIĆ DANILO
+BUKVIĆ DANILO
+BUKVIĆ DRAGAN
+BUKVIĆ DUŠAN
+BUKVIĆ ILIJA
+BUKVIĆ ILINKA
+BUKVIĆ JANKO
+BUKVIĆ JELISAVETA
+BUKVIĆ JOVAN
+BUKVIĆ KOVILJKA
+BUKVIĆ LJUBOMIR
+BUKVIĆ MARIJA
+BUKVIĆ MARINKO
+BUKVIĆ MILENKO
+BUKVIĆ MILKA
+BUKVIĆ MILOŠ
+BUKVIĆ MILOŠ
+BUKVIĆ MILOŠ
+BUKVIĆ MILORAD
+BUKVIĆ MIROSLAV
+BUKVIĆ MLADEN
+BUKVIĆ NOVICA
+BUKVIĆ RADOVAN
+BUKVIĆ SLAVICA
+BUKVIĆ SOFIJA
+BUKVIĆ STEVAN
+BUKVIĆ SVETOZAR
+BUKVIĆ TOMISLAV
+BUKVIĆ VELIMIR
+BUKVIĆ VLADO
+BULAIĆ RELJA
+BULAJIĆ ĐURO
+BULAJIĆ DANICA
+BULAJIĆ MIODRAG
+BULAJIĆ NATALIJA
+BULAJIĆ NEDELJKO
+BULAJIĆ VLADIMIR
+BULAKIĆ VUKAŠIN
+BULATOVIĆ ALEKSANDAR
+BULATOVIĆ BRANISLAV
+BULATOVIĆ DIMITRIJE
+BULATOVIĆ DRAGAN
+BULATOVIĆ DRAGAN
+BULATOVIĆ DUŠANKA
+BULATOVIĆ DUŠAN
+BULATOVIĆ GRADIMIR
+BULATOVIĆ ILIJA
+BULATOVIĆ MILADIN
+BULATOVIĆ MILIJANA
+BULATOVIĆ MILINKO
+BULATOVIĆ MILUTIN
+BULATOVIĆ MOMIR
+BULATOVIĆ NIKOLA
+BULATOVIĆ NIKOLA
+BULATOVIĆ NOVAK
+BULATOVIĆ PAVLE
+BULATOVIĆ PERO
+BULATOVIĆ PREDRAG
+BULATOVIĆ RADMILO
+BULATOVIĆ RADONJA
+BULATOVIĆ SAVA
+BULATOVIĆ SLAĐANA
+BULATOVIĆ SPASA
+BULATOVIĆ SVETOZAR
+BULATOVIĆ VOJIN
+BULATOVIĆ VOJISLAV
+BULATOVIĆ ZLATIJA
+BULATOVIĆ ZORAN
+BULETINAC MILOVAN
+BULEVSKA VERA
+BULIĆ ŠUĆO
+BULIĆ ADILA
+BULIĆ ANTE
+BULIĆ ARIF
+BULIĆ BORIS
+BULIĆ DRAGAN
+BULIĆ DRAGOLJUB
+BULIĆ DUŠAN
+BULIĆ MARA
+BULIĆ MARIJA
+BULIĆ MARINA
+BULIĆ OZREN
+BULIĆ PERSA
+BULIĆ PETAR
+BULIĆ PREDRAG
+BULIĆ SMILJA
+BULIĆ STEVAN
+BULIĆ TOMISLAV
+BULIK-ILEANA DORINA
+BULJ ĐURA
+BULJ BOSILJKA
+BULJ MILAN
+BULJČIK EUGEN
+BULJČIK JOAKIM
+BULJČIK MIHAJLO
+BULJČIK NIKOLA
+BULJČIK PAULINA
+BULJAK RATKO
+BULJAN DRAGUTIN DIPL ING
+BULJAN PETAR
+BULJAN SLAVICA
+BULJIĆ ILIJA
+BULJIĆ JELENA
+BULJIĆ JOVAN
+BULJIĆ LJUBICA
+BULJIĆ MILAN
+BULJIĆ MILE
+BULJIĆ NOVAK
+BULJIĆ PAVO
+BULJIĆ RADOVAN
+BULJIĆ SEKULA
+BULJIĆ SNEŽANA
+BULJIĆ STEVA
+BULJIĆ VASO
+BULJIN BRANKO
+BULJIN SLAVKO
+BULJIN TOMISLAV
+BULJOVČIĆ STIPAN
+BULJUGIĆ RADOJE
+BULOVAN BRANISLAV
+BULOVIĆ IRINEJ
+BULUM PETAR
+BULUT ANĐELKO
+BULUT NOVICA
+BUMB ANTON
+BUMBAROSKI RADA
+BUMBIĆ MILADIN DR
+BUMBIĆ RADMILA
+BUMBIĆ RAJKO
+BUMBIĆ VELJKO
+BUMBIĆ VELJKO
+BUNČIĆ ĐORĐE
+BUNČIĆ ALEKSANDAR
+BUNČIĆ ALEKSANDAR
+BUNČIĆ DRAGAN
+BUNČIĆ MARIJANA
+BUNČIĆ MILAN
+BUNAJ MUHAMED
+BUNDALESKI MILOŠ
+BUNDALO BRANKO
+BUNDALO NEBOJŠA
+BUNDALO NIKOLA
+BUNDALO SLAVKO
+BUNDALO SLOBODAN
+BUNDALO SLOBODAN
+BUNDIĆ ANTUN
+BUNETA ALEKSANDAR
+BUNETA MILAN
+BUNETA SNEŽANA
+BUNETA VUKOSAVA
+BUNIĆ DRAGAN
+BUNIĆ MILAN
+BUNJAC VASO
+BUNJAC VOJISLAV
+BUNJEVČEV ĐORĐE
+BUNJEVČEV ALEKSANDAR
+BUNJEVČEV SRĐAN
+BUNJEVAČKI ŽIVOJIN
+BUNJEVAČKI BRANKO
+BUNJEVAČKI DRAGINJA
+BUNJEVAČKI JOVANKA
+BUNJEVAČKI LJUBICA
+BUNJEVAČKI MILENA
+BUNJEVAČKI VOJISLAV
+BUNJIK ŠANDOR
+BUNJIK DRAGICA
+BUNJIK IVAN
+BUNJIK JOSIP
+BUNJIK KAROLJ
+BUNJIK ZOLTAN
+BUNJIK ZOLTAN
+BUNOVIĆ DRAGUTIN
+BUNOVIĆ LAZAR
+BUNT MIJO
+BURČER TOMISLAV
+BURŠIĆ TINKA
+BURAI ALEKSANDAR
+BURAI ANDRAŠ
+BURAI KAROLJ
+BURAI KATICA
+BURAI PETAR
+BURAJI JOSIP
+BURANJ BELA DR LEKAR
+BURANJ ENDRE
+BURANJ MARTA
+BURANJ NANDOR
+BURANJ SIDONIJA
+BURANJI MARIJA
+BURANJI NANDOR
+BURAZOR DRAGOJA
+BURAZOR ZDRAVKO
+BURBAH GERHARD
+BURBAN FILIP
+BURDA MELINDA
+BURDA STANISLAV
+BUREVIĆ MILIĆ
+BURGIĆ DRAGOJE
+BURGIĆ JOVAN
+BURGIĆ PETAR
+BURGIJAŠEV VESELIN
+BURIĆ ĐOKO DIPL ING
+BURIĆ DIMITRIJE
+BURIĆ DUŠAN DR
+BURIĆ DUŠANKA
+BURIĆ FRANJA
+BURIĆ GORDANA
+BURIĆ KATICA
+BURIĆ KOSTA
+BURIĆ LEONORA
+BURIĆ MILIVOJE
+BURIĆ NADA
+BURJAN ĐORĐE
+BURJANOVSKI STOJAN
+BURKA ELEONORA DR
+BURKA EMILIJA
+BURKA ERŽEBET
+BURKA JOVAN
+BURKA MIROSLAV
+BURKA PAVLE
+BURKA PETAR
+BURKA SOFIJA
+BURKA STEVAN
+BURKA STEVAN
+BURKERT EDVIN
+BURKIN ŽIVAN
+BURKIN ĐOKA
+BURLAK NATALIJA
+BURMAJA NIKOLA
+BURMUDŽIJA BRANKO
+BURMUDŽIJA MILAN
+BURMUDŽIJA NIKOLA
+BURNAĆ FELIKS
+BURNAĆ JELISAVETA
+BURNAĆ STEVAN
+BURNAĆ VLADIMIR
+BURNOV IVANA
+BURNOV IVAN
+BURNOV VESELINKA
+BUROVAC NADA
+BURSAĆ DARINKA
+BURSAĆ DRAGOSLAVA DIPL PRAVNIK
+BURSAĆ JOVAN
+BURSAĆ LJUBOMIR
+BURSAĆ MILANKA
+BURSAĆ MILAN
+BURSAĆ MILICA
+BURSAĆ MILORAD
+BURSAĆ MIRKO
+BURSAĆ NIKOLA
+BURSAĆ PERA
+BURSAĆ PERSA
+BURSAĆ SLOBODAN
+BURSAĆ SLOBODAN
+BURSAĆ VJEKOSLAVA
+BURSAĆ VLADO DIPL PRAVNIK
+BURSIĆ STEVAN
+BURSIĆ VLADIMIR
+BURUŠ ALEKSANDRA
+BURUŠ BOŠKO
+BURUMDŽIJA RADE
+BURZAN MIRJANA
+BURZELIĆ MILKA
+BURZELIĆ ZLATA
+BUSARČEVIĆ SLAVICA
+BUSARČEVIĆ STEVAN
+BUSIJA LJUBINKA
+BUSIJA MILAN
+BUSOV ALEKSIJE DIPL ING
+BUSOV IGOR
+BUSULADŽIĆ MUSTAFA
+BUTA LAZAR
+BUTA VOJISLAV DR
+BUTAŠ FERENC
+BUTER KSENIJA
+BUTERER IŠTVAN
+BUTERER JULIJA
+BUTERIN DEŠA
+BUTOR ALEKSANDAR
+BUTOR ENDRE
+BUTOR MIHAJLO
+BUTORAC JOSIP
+BUTORAC MARIJA
+BUTORAC ZORAN
+BUTULIJA BRANISLAV
+BUTUROVIĆ RATKO
+BUTUROVIĆ SVETOZAR
+BUZA IRENA
+BUZA KORNELIU
+BUZA MIHALJ
+BUZAŠ ŠANDOR
+BUZAŠ JOSIP
+BUZAŠ JOSIP
+BUZAŠ LAJOŠ
+BUZAŠ PAVAO
+BUZAŠ PAVLE
+BUZAŠI JOSIP
+BUZAŠI MIHAJLO
+BUZADŽIĆ LJILJANA
+BUZADŽIĆ MIRJANA
+BUZADŽIJA NENAD
+BUZADŽIJA NOVAK
+BUZALJKO JUSUF DIPL ING
+BUZANČIĆ JOSIP
+BUZANČIĆ NADEŽDA
+BUZANSKI MIŠA
+BUZAREVIĆ BRANKO
+BUZAREVIĆ RADOJKA
+BUZAREVIĆ RUŽA
+BUZAROV ŽIVAN
+BUZAROV JOVAN
+BUZAROV ZORA
+BUZARSKI ĐORĐE
+BUZGO JANOŠ
+BUZOGANJ MARIJA
+CACKO MARIJA
+CAJIĆ MILOŠ
+CAJNER JELENA
+CAJNER LJUBICA
+CAJNER STEVAN
+CAJNER STEVA
+CAKIĆ DUŠANKA
+CAKIĆ GORDANA
+CAKIĆ JELENKO
+CAKIĆ MIROSLAV
+CAKIĆ PETAR
+CAKIĆ STEVAN
+CANDIR FRANJA
+CANIĆ LJILJANA
+CANIĆ VELIMIR
+CAP ĐURA
+CAP BOŠKO
+CAP JOAKIM
+CAP JOVAN
+CAP NENAD
+CAP NENAD
+CAP RADOJKA
+CAP TAMARA
+CAPAR-JANKOVIĆ VALERIJA
+CAPAR JANOŠ
+CAPAR JOVAN
+CAPAR MARIJA
+CAPAR MARIJA
+CAPIK JOSIP
+CAPIK LJUDEVIT
+CAR MARIJA
+CARAN BOŠKO
+CARAN GEORGE
+CARAN PERSA
+CARAN PETAR
+CARANOVIĆ STANOJE
+CAREVIĆ ŽIVAN
+CAREVIĆ ŽIVKA
+CAREVIĆ ĐORĐE
+CAREVIĆ DUŠAN
+CAREVIĆ ESTER
+CAREVIĆ KATICA
+CAREVIĆ MIHAJLO
+CAREVIĆ MILENA
+CAREVIĆ MILE
+CAREVIĆ NADA
+CAREVIĆ PETAR
+CAREVIĆ SAVA
+CAREVIĆ SLAVKO
+CAREVIĆ SLAVKO
+CAREVIĆ STEVAN
+CAREVIĆ SVETOZAR
+CARIČIĆ SLAVKO
+CARIĆ ANDRIJA
+CARIĆ BRANKO
+CARIĆ GOJKO
+CARIĆ LAZAR
+CARIĆ MARIJA
+CARIĆ MIRJANA
+CARIĆ SLAVKO DR PROF
+CARIĆ SLOBODAN DR
+CARIĆEVIĆ MILENKO
+CARO GORAN
+CATIĆ LAZAR
+CAVNIĆ MARTA
+CAVNIĆ SVETLANA
+CAZIN DRAGAN
+CE PAVLE
+CECEL MARIJA
+CEGLEDI ĐURO
+CEHOLA FERENC
+CEKIĆ BORISLAV
+CEKIĆ BORIVOJE
+CEKIĆ BORKO
+CEKIĆ JULKA
+CEKIĆ PETAR
+CEKIĆ RADMILA
+CEKUŠ EVA
+CELIĆ BRANKO
+CELIN MILAN
+CELIN MILAN
+CENAJ TAHIR
+CENDER ANGELINA
+CENIĆ MILOVAN
+CEP STEVAN
+CEPF STEVAN
+CERGOL VIDOSAVA
+CERIĆ DANICA
+CERIĆ MEHMED
+CERNA RUDOLF
+CEROVAC ZORKA
+CEROVIĆ BATRIĆ
+CEROVIĆ BOGDAN
+CEROVIĆ BOJANA
+CEROVIĆ DARINKA
+CEROVIĆ IKONIJA
+CEROVIĆ LJUBIVOJE
+CEROVIĆ MIŠO
+CEROVIĆ NENAD
+CEROVIĆ NOVAK
+CEROVIĆ PETAR
+CEROVIĆ SLOBODAN
+CEROVIĆ SRETEN
+CEROVIĆ TOMISLAV
+CEROVIĆ UROŠ
+CEROVSKI DANIJEL
+CESNAK JANKO
+CESNAK PAVLE
+CESNAK ZLATKO
+CETENJI JOVAN
+CETINA JOVAN
+CETINA LJILJANA
+CEVC FRANJA
+CEVC SONJA
+CIBRIĆ TODOR
+CIBULA ĐURA
+CIBULA BELA
+CIBULA JANKO
+CIBULA JOVAN
+CIBULA JOVAN
+CIBULA MARJENKA
+CIBULA MIŠA
+CIBULA PERA
+CICERI FERENC
+CICERI KAROLJ
+CICERI LASLO
+CICERI MATILDA
+CICERI PERA
+CICERI VINKO
+CICKA ŠĆEFAN
+CICKA JAN
+CICMIL BOŽIDAR
+CICMIL BRANKO
+CICMIL KRSTO
+CICMIL MARIJA
+CICMIL MARKO
+CICMIL MILAN
+CICMIL STOJAN
+CICMIL TATJANA
+CICMIL ZORAN
+CICMILOVIĆ DRAGAN
+CICMILOVIĆ ZORKA
+CICO DUŠAN
+CICVARIN LJUBOMIR
+CIFRIĆ GALIB
+CIGAN ANTUN
+CIGAN IVAN
+CIGANJ JOSIP
+CIGANOVIĆ BRANKO
+CIGANOVIĆ DANE
+CIGANOVIĆ DUŠAN
+CIGANOVIĆ MILORAD
+CIGANOVIĆ OSTOJA
+CIGANOVIĆ RAJKO
+CIGANOVIĆ STEVO
+CIGIĆ IVAN
+CIGLER SNEŽANA
+CIGLJECKI FRANJA
+CIGLJECKI VERA
+CIKORA ŽUŽANA
+CIKOTA ŽELJKO
+CIKOTA OLGA
+CIKOTA SLAVKO
+CIKUŠA JOVAN
+CIKUŠA ZORAN
+CIMBAL ALEKSANDAR
+CIMBAL ALEKSANDAR
+CIMBAL TIBOR
+CIMBAL VERICA
+CIMBALJEVIĆ ZLATANA
+CIMERMAN LADISLAV
+CIMERMAN SMILJA
+CINCOVIĆ ŽIVKA
+CINDER VIDA
+CINDRIĆ ĐORĐE
+CINDRIĆ ERŽEBET
+CINDRIĆ PETAR DR
+CINGARA ALEKSANDAR
+CINGELI MILENA
+CINGI KARLO
+CINKLER JELISAVETA DIPL ING
+CINKLER JULIJE
+CINKLER KALMAN DIPL ING
+CINKLER KALMAN DIPL ING
+CINKLER KALMAN
+CINKLER MAGDOLNA
+CINKOCKI ĐORĐE
+CINKOCKI VOJISLAV
+CIPRUŠ ALEKSANDRA
+CIRBUS MARIJA
+CIRGER DUŠANKA
+CIROK ŠANDOR
+CITKOVIĆ IVKA
+CITKOVIĆ SLOBODAN
+CIVRIĆ MILKA
+CMILJANOVIĆ DRAGIŠA
+COCEK ŠTEFANIJA
+COCEK IMRE
+COCEK JOSIP
+COCEK STEVAN
+COCIN MIRA
+COCO VAHDETA
+COLIĆ BOŽIDAR
+COLIĆ BOGOSAV
+COLIĆ FRANJA
+COLIĆ JOSIP
+COLIĆ KATICA
+COLIĆ LADISLAV
+COLIĆ SVETLANA
+CONIĆ DRAGINJA
+CONIĆ JANKO MR ING
+CONIĆ MIODRAG
+COPKOV ŽELJKO
+CREPIĆ LADISLAV
+CREPULIĆ VIDOSAVA
+CREPULJA TODOR
+CREVAR BOGDAN
+CREVAR MILUTIN DIPL ING
+CREVAR SIMA
+CREVAR SLAVKO
+CRKVENJAKOV DANICA
+CRKVENJAKOV DUŠANKA
+CRKVENJAKOV SULTANIJA
+CRNČEVIĆ DARINKA
+CRNČEVIĆ MIRKO
+CRNČEVIĆ MIRKO
+CRNČEVIĆ NEDELJKA
+CRNČEVIĆ SLAVKO
+CRNČEVIĆ VERA
+CRNČEVIĆ VLADO
+CRNADAK VLATKO
+CRNI VERICA
+CRNI ZORICA
+CRNIĆ BRANKA
+CRNIĆ DRAGAN
+CRNIĆ GORAN
+CRNIĆ MARKO
+CRNIĆ MILAN
+CRNIĆ MILUTIN
+CRNIĆ NIKOLA
+CRNIĆ OSTOJA
+CRNIĆ RADOMIR
+CRNIĆ SOFIJA
+CRNIĆ UGLJEŠA
+CRNIĆ VASA
+CRNIĆ VERA
+CRNJAC MILENA
+CRNJAK ŽIVANKA
+CRNJAKOV DIMITRIJE
+CRNJANIN BRANISLAVA
+CRNJANIN ZAGORKA
+CRNJANSKI-ČENGERI KRISTINA
+CRNJANSKI ŽARKO
+CRNJANSKI ĐOKA
+CRNJANSKI BUDIMKA
+CRNJANSKI IVAN
+CRNJANSKI JELENA
+CRNJANSKI KATICA
+CRNJANSKI KUZMAN
+CRNJANSKI LAZAR
+CRNJANSKI RADIVOJ
+CRNJANSKI SANJA
+CRNJANSKI STEVAN
+CRNJANSKI VLADIMIR
+CRNJANSKI ZORAN
+CRNJANSKI ZORAN
+CRNKOVIĆ NIKOLA
+CRNKOVIĆ-SAVIĆ LJILJANA
+CRNKOVIĆ ZLATA
+CRNOBARAC DUŠAN
+CRNOBARAC JOVAN
+CRNOBRNJA MILAN
+CRNOBRNJA MIRJANA
+CRNOBRNJA PETAR
+CRNOGLAVAC MIHAJLO
+CRNOGLAVAC RADOSLAV
+CRNOGORČEVIĆ JELICA
+CRNOGORAC ĐOKO
+CRNOGORAC BORIŠA
+CRNOGORAC BOSILJKA
+CRNOGORAC DRAGAN
+CRNOGORAC DRAGOLJUB
+CRNOGORAC DUŠAN
+CRNOGORAC MILAN
+CRNOGORAC MILKA
+CRNOGORAC MILOSAV
+CRNOGORAC MIROSLAV
+CRNOGORAC PAVLE
+CRNOGORAC SLOBODAN
+CRNOGORAC SVETLANA
+CRNOGORAC VELIMIR DR
+CRNOGORAC ZDRAVKO
+CRNOGORAC ZORICA
+CRNOJA ANTE
+CRNOJA SLAVICA
+CRNOJAČKI BOGDAN
+CRNOJAČKI DANICA DR
+CRNOJAČKI DANILO
+CRNOJAČKI DRAGAN
+CRNOJAČKI DRAGOMIR
+CRNOJAČKI GORDANA
+CRNOJAČKI JOVAN
+CRNOJAČKI KATICA
+CRNOJAČKI MILENA DR
+CRNOJAČKI MILOŠ
+CRNOJAČKI MLADEN
+CRNOJAČKI OBRAD
+CRNOJAČKI OBRAD
+CRNOJAČKI RADMILA
+CRNOJAČKI SOFIJA
+CRNOJAČKI VLADIMIR
+CRNOJAČKI ZORICA
+CRNOKRAK JOVAN
+CRNOKRAK MILOŠ
+CRNOKRAK STEVAN
+CRNOMARKOVIĆ BOGDAN
+CRNOMARKOVIĆ DUŠAN
+CRNOMARKOVIĆ DUŠAN
+CRNOMARKOVIĆ GOJKO
+CRNOMARKOVIĆ LUKA
+CRNOMARKOVIĆ NIKOLA
+CRNOMARKOVIĆ PETAR
+CRNOMARKOVIĆ RANKO
+CRNOMARKOVIĆ STOJAN
+CRNOMARKOVIĆ VERICA
+CRNOMUT MIHAJLO
+CRVENI ŽARKO
+CRVENI ANA
+CRVENI BISERKA
+CRVENI DRAGAN
+CRVENI MARKO
+CRVENI MILAN
+CRVENI MILENKO
+CRVENI MIOMIR
+CRVENI SIMA
+CRVENI STEVAN
+CRVENI STEVAN
+CRVENKO JANKO
+CRVENKO MILAN
+CRVENKO RADOMIR
+CRVENKOV BORISLAV
+CRVENKOV MILOSAVA
+CRVENKOV PETAR
+CRVENKOVIĆ ĐORĐE
+CRVENKOVIĆ ĐURĐICA
+CRVENKOVIĆ PETAR
+CRVENKOVIĆ RADENKO
+CRVENKOVIĆ SINIŠA DR
+CRVENKOVIĆ VITOMIR
+CUCAK MIRJANA
+CUCAK RAHIM
+CUCIĆ ALEKSANDAR
+CUCIĆ BORISLAV
+CUCIĆ GINA
+CUCIĆ JELKA
+CUCIĆ LJILJANA
+CUCIĆ STANA
+CUCIĆ STANOJLO
+CUCIĆ VERA
+CUCIĆ VESNA
+CUCIĆ VLADIMIR
+CUCOVIĆ RAFET
+CUGLI JOVAN
+CUKIĆ RADA
+CUKIĆ RADOJICA
+CUKIĆ SVETOZAR
+CUNJAK MILUTIN
+CUPAĆ SVETOMIR DIPL PRAVNIK
+CUPARIĆ TOMA
+CURAKOVIĆ MILIVOJE
+CVEJANOV JELENA
+CVEJANOV NEBOJŠA
+CVEJANOV PREDRAG
+CVEJANOV VELIBOR
+CVEJANOVIĆ KSENIJA
+CVEJANOVIĆ LAZAR
+CVEJANOVIĆ NADA
+CVEJANOVIĆ NIKOLA
+CVEJANOVIĆ SPOMENKA
+CVEJANOVIĆ VIDOSAVA
+CVEJANOVIĆ VOJISLAV
+CVEJANOVIĆ ZORICA
+CVEJIĆ ČEDOMIR
+CVEJIĆ ŽARKO
+CVEJIĆ ŽIVOJIN
+CVEJIĆ ĐORĐE DR
+CVEJIĆ ĐURĐINKA
+CVEJIĆ ALEKSANDAR DR
+CVEJIĆ ALEKSANDAR
+CVEJIĆ ALEKSANDAR
+CVEJIĆ BOŽIDAR
+CVEJIĆ BORIVOJ
+CVEJIĆ DRAGAN
+CVEJIĆ DRAGOSLAV
+CVEJIĆ DRAGUTIN
+CVEJIĆ IGNJAT
+CVEJIĆ IVAN
+CVEJIĆ JELENA
+CVEJIĆ KATICA
+CVEJIĆ LAZAR
+CVEJIĆ MILAN
+CVEJIĆ MILAN
+CVEJIĆ MILISAV
+CVEJIĆ MILOŠ
+CVEJIĆ MIODRAG
+CVEJIĆ MIRJANA
+CVEJIĆ NADEŽDA
+CVEJIĆ NEDELJKA
+CVEJIĆ NIKOLA DIPL ING
+CVEJIĆ NIKOLA
+CVEJIĆ OLGA
+CVEJIĆ PAVLE
+CVEJIĆ RADOSLAV
+CVEJIĆ RADOVAN
+CVEJIĆ RUŽICA
+CVEJIĆ SLAVOLJUB
+CVEJIĆ STEVAN
+CVEJIĆ STEVAN
+CVEJIĆ VLADAN
+CVEJIĆ ZAGORKA
+CVEJIN BOŽA
+CVEJIN BOJANA
+CVEJIN DUŠAN DIPL ING
+CVEJIN MARIJA
+CVEJIN MILAN
+CVEJIN MILOŠ
+CVEJIN MIRJANA
+CVEJIN NOVAK
+CVEJIN SLOBODAN
+CVEJIN TRIVA
+CVEKIĆ MILETA
+CVEKIĆ VOJIN
+CVEKIĆ ZLATICA
+CVERDELJ JANKO
+CVERDELJ RUŽA
+CVERNJAK JENE
+CVETANOVIĆ ANITA
+CVETANOVIĆ DRAGOSLAV
+CVETANOVIĆ JELENA
+CVETANOVIĆ JERMINA DR LEKAR
+CVETANOVIĆ MAGDOLNA
+CVETANOVIĆ RADICA
+CVETANOVIĆ STOJADIN
+CVETANOVIĆ STOJANKA
+CVETANOVIĆ VELJA
+CVETANOVIĆ ZORAN
+CVETANOVIĆ ZORAN
+CVETANOVIĆ ZORAN
+CVETANOVSKI MANOJLO
+CVETANOVSKI MILE
+CVETIČANIN LJUBICA
+CVETIČANIN MILKA
+CVETIČANIN VESNA
+CVETIČANIN ZORAN
+CVETIĆ BOŠKO
+CVETIĆ DRAGOMIR
+CVETIĆ LAZAR
+CVETIĆ LAZO
+CVETIĆ LJUBICA
+CVETIĆ MARIJA
+CVETIĆ PETAR
+CVETIĆ SLAVKO
+CVETIĆ STANKO
+CVETIĆANIN BOŠKO
+CVETIĆANIN BRANKO
+CVETIĆANIN DANE
+CVETIĆANIN DANICA
+CVETIĆANIN DRAGOMIR
+CVETIĆANIN ILIJA
+CVETIĆANIN IRENA
+CVETIĆANIN MILOŠ
+CVETIĆANIN MILORAD
+CVETIĆANIN MIROSLAV
+CVETIĆANIN SNEŽANA
+CVETIĆANIN ZORAN
+CVETINIĆ MARKO
+CVETINIĆ MATIJA
+CVETINJANIN TOMISLAV
+CVETINOV SAVA
+CVETINOVIĆ ANKA
+CVETINOVIĆ BRANA
+CVETINOVIĆ BRANKO
+CVETINOVIĆ DIMITRIJE
+CVETINOVIĆ ILIJA
+CVETINOVIĆ IVANKO
+CVETINOVIĆ MILAN
+CVETINOVIĆ SIMO
+CVETINOVIĆ VERA
+CVETINOVIĆ ZORA
+CVETKOV JOVAN
+CVETKOV MILAN DIPL ING
+CVETKOV RADOJE
+CVETKOVIĆ ČEDOMIR
+CVETKOVIĆ ŽIVOJIN
+CVETKOVIĆ ĐORĐE
+CVETKOVIĆ ĐORĐE
+CVETKOVIĆ ALEKSANDAR
+CVETKOVIĆ ALEKSANDAR
+CVETKOVIĆ ALEKSANDAR
+CVETKOVIĆ ANKA
+CVETKOVIĆ BOJANA
+CVETKOVIĆ BORA
+CVETKOVIĆ BORISLAV
+CVETKOVIĆ BORISLAV
+CVETKOVIĆ BRANISLAV
+CVETKOVIĆ BRANKO
+CVETKOVIĆ BRANKO
+CVETKOVIĆ BUDIMIR
+CVETKOVIĆ DARINKA
+CVETKOVIĆ DESIMIR
+CVETKOVIĆ DRAGAN
+CVETKOVIĆ DRAGAN
+CVETKOVIĆ DRAGAN
+CVETKOVIĆ DRAGAN
+CVETKOVIĆ DRAGIŠA
+CVETKOVIĆ DRAGOLJUB
+CVETKOVIĆ DRAGOMIR MR
+CVETKOVIĆ DRAGOMIR
+CVETKOVIĆ DUŠAN
+CVETKOVIĆ DUŠAN
+CVETKOVIĆ-GLADIĆ SMILJA
+CVETKOVIĆ GROZDA
+CVETKOVIĆ ILIJA
+CVETKOVIĆ IVANKA
+CVETKOVIĆ JELENA
+CVETKOVIĆ JELENA
+CVETKOVIĆ JELKA
+CVETKOVIĆ JOVAN
+CVETKOVIĆ JOVAN
+CVETKOVIĆ JOVAN
+CVETKOVIĆ LIVIA
+CVETKOVIĆ LJILJANA
+CVETKOVIĆ LJILJANA
+CVETKOVIĆ MELANIJA
+CVETKOVIĆ MILAN
+CVETKOVIĆ MILAN
+CVETKOVIĆ MILICA
+CVETKOVIĆ MIODRAG
+CVETKOVIĆ MIODRAG
+CVETKOVIĆ MIODRAG
+CVETKOVIĆ MIRA
+CVETKOVIĆ MIRJANA
+CVETKOVIĆ MIROSLAV DR
+CVETKOVIĆ MIROSLAV
+CVETKOVIĆ NIKOLA
+CVETKOVIĆ NIKOLA
+CVETKOVIĆ NIKOLA
+CVETKOVIĆ PETAR
+CVETKOVIĆ RADMILA
+CVETKOVIĆ RADOJKO
+CVETKOVIĆ RADOSLAV
+CVETKOVIĆ RADOSLAV
+CVETKOVIĆ RADOVAN
+CVETKOVIĆ RADULA
+CVETKOVIĆ RATOMIR
+CVETKOVIĆ RISTO
+CVETKOVIĆ RUŽICA
+CVETKOVIĆ SLAVOLJUB
+CVETKOVIĆ SOKA
+CVETKOVIĆ SRBOBRAN
+CVETKOVIĆ STANKO
+CVETKOVIĆ STANOJE
+CVETKOVIĆ STANOJE
+CVETKOVIĆ SVETOZAR
+CVETKOVIĆ TATJANA
+CVETKOVIĆ TONI
+CVETKOVIĆ VELIMIR
+CVETKOVIĆ VLADIMIR
+CVETKOVIĆ ZORA
+CVETKOVSKI BORIS
+CVETKOVSKI DRAGOLJUB
+CVETKOVSKI NIKOLA
+CVETKOVSKI VOJO
+CVETOJEVIĆ LJILJANA
+CVETOJEVIĆ LJILJANA
+CVETOJEVIĆ MILISAV
+CVETOJEVIĆ SLAVKO
+CVIJAN MARIJA
+CVIJAN MARKO
+CVIJANOVIĆ ANĐA
+CVIJANOVIĆ ANA
+CVIJANOVIĆ ANTO
+CVIJANOVIĆ BOŠKO
+CVIJANOVIĆ BORO
+CVIJANOVIĆ DOBRICA
+CVIJANOVIĆ DRAGAN
+CVIJANOVIĆ DRAGUTIN
+CVIJANOVIĆ DUŠANKA
+CVIJANOVIĆ ILIJA
+CVIJANOVIĆ MILAN
+CVIJANOVIĆ MILAN
+CVIJANOVIĆ MILAN
+CVIJANOVIĆ MILEVA
+CVIJANOVIĆ MIROSLAV
+CVIJANOVIĆ MOMIR
+CVIJANOVIĆ PETAR
+CVIJANOVIĆ RADE
+CVIJANOVIĆ RANKO
+CVIJANOVIĆ SAVA
+CVIJANOVIĆ SLAVKO
+CVIJANOVIĆ SNEŽANA
+CVIJANOVIĆ VOJISLAV
+CVIJANOVIĆ ZLATA
+CVIJETAN MIRKO
+CVIJETIČANIN JOVO
+CVIJETIĆ IGOR
+CVIJETIĆ JOVO
+CVIJETIĆ MILE
+CVIJETIĆ NADA
+CVIJETINOVIĆ RUŽA
+CVIJETINOVIĆ RUŽICA
+CVIJETINOVIĆ SINIŠA
+CVIJIĆ ŽELJKO
+CVIJIĆ DRAGAN
+CVIJIĆ GORAN
+CVIJIĆ JELISAVA
+CVIJIĆ JOVANKA
+CVIJIĆ MILENKO
+CVIJIĆ MIODRAG
+CVIJIĆ MLAĐA
+CVIJIĆ NIKOLA
+CVIJIĆ PANTE
+CVIJIĆ RUŽICA
+CVIJIĆ STEVAN
+CVIJIN BRANKO
+CVIJOVIĆ MILENKO
+CVIJOVIĆ MILIVOJE
+CVIJOVIĆ NEĐELJKA
+CVIJOVIĆ RADOSAV
+CVIJOVIĆ VOJIN
+CVIKIĆ MIHAILO
+CVING JOSIP
+CVITANOVIĆ SNEŽANA
+CVITKO PETAR
+CVITKOVAC MARKO
+CVJETAN OLGA
+CVJETIĆ ILIJA
+CVJETIĆANIN ŽIVKO
+CVJETIĆANIN GOJKO
+CVJETIĆANIN STEVO
+CVJETKOVIĆ MIODRAG
+CVJETKOVIĆ NEBOJŠA
+CVJETOJEVIĆ ČEDOMIR
+CVOROVIĆ RADOŠ
+CVRKALJ ĐURO
+DŽABASAN DRAGOJE
+DŽABIĆ MILKA
+DŽADŽIĆ VUKOSAVA
+DŽAFEROVSKI REĐEP
+DŽAFIĆ HAMDIJA
+DŽAFO MATIJA
+DŽAJA MARICA
+DŽAKIĆ ČEDO
+DŽAKIĆ BOŽANA
+DŽAKIĆ LAZA
+DŽAKOVIĆ DRAGAN
+DŽAKULA ERŽEBET
+DŽAKULA ERŽEBET
+DŽAKULA IVAN
+DŽAKULA MARICA
+DŽAKULA NEDELJKO
+DŽAKULA PETAR
+DŽAKULA RADE
+DŽAKULA VIDOSAV
+DŽAKULIN DUŠANKA
+DŽAKULIN PETAR
+DŽAKULIN STEVAN
+DŽALIĆ STOJAN
+DŽAMBARSKI JOVAN
+DŽAMBAS DUŠAN DR LEKAR
+DŽAMBAS MILE
+DŽAMBASOVIĆ MILENKO
+DŽAMBIĆ BRANKO
+DŽAMBIĆ MILOVAN
+DŽAMBIĆ RADOVAN
+DŽAMBIĆ SLAVKO
+DŽAMBIĆ SRETA
+DŽANIĆ SAVA
+DŽANIĆ STAZA
+DŽARIĆ DOBRINKA
+DŽARIĆ RADOMIR
+DŽELETOVIĆ MILADIN
+DŽELETOVIĆ MILAN
+DŽELETOVIĆ MLADEN
+DŽELETOVIĆ RADOJKA
+DŽELETOVIĆ SLOBODAN
+DŽELETOVIĆ TOMO
+DŽELILOVIĆ JANA
+DŽEPINA JOVAN
+DŽEVELEKIDIS MARINA
+DŽEVELEKIDIS PANTA
+DŽEVER NEDELJKO
+DŽEVERDANOVIĆ ANITA
+DŽEVERDANOVIĆ LAZAR
+DŽEVERDANOVIĆ NASTO
+DŽEVERDANOVIĆ VELIZAR
+DŽIDA KATICA
+DŽIDA KATICA
+DŽIDA MILADIN
+DŽIDA MILOMIR
+DŽIGURAŠ MILENKO
+DŽIGURSKI BORIVOJ
+DŽIGURSKI BRANIMIR
+DŽIGURSKI BRANKO
+DŽIGURSKI DANILO
+DŽIGURSKI DUŠKO
+DŽIGURSKI LJILJANA
+DŽIGURSKI LJILJANA
+DŽIGURSKI MARIJA
+DŽIGURSKI MARIJA
+DŽIGURSKI MILAN
+DŽIGURSKI MILENKO
+DŽIGURSKI PETAR
+DŽIGURSKI PREDRAG
+DŽIKIĆ MILAN
+DŽILITOV ALEKSANDAR
+DŽILITOV KATICA
+DŽILITOV STEVAN
+DŽILITOV STEVA
+DŽILITOV VELINKA
+DŽILVIDŽIJEV MITKO
+DŽIN MIRKO
+DŽINIĆ MIROSLAV DR
+DŽINIĆ MIROSLAV
+DŽINOVIĆ VESELIN
+DŽIRIĆ RUŽICA
+DŽODŽO RISTO
+DŽODAN DRAGA
+DŽODAN MIRJANA
+DŽODAN NIKOLA
+DŽODAN VERA
+DŽOGANOVIĆ MILORAD
+DŽOGOVIĆ ŽIVAN
+DŽOGOVIĆ MILUN
+DŽOLEV ASEN DR STOMATOLOG
+DŽOLEV ASEN
+DŽOLEV ASEN
+DŽOLEV MITKO
+DŽOLEV PANDE
+DŽOLIĆ GORDANA
+DŽOLIĆ TOMISLAV
+DŽOMBA ŽIVKO
+DŽOMBETA KOSTA
+DŽOMBETA MILOŠ
+DŽOMBETA NIKOLA
+DŽOMBETA SVETOZAR
+DŽOMBETA VLADO
+DŽOMBIĆ DUŠAN
+DŽOMBIĆ MILJA
+DŽOMBIĆ SOKA
+DŽONLEZ PIROŠKA
+DŽOPALIĆ DRAGAN
+DŽUDŽAR ĐURA
+DŽUDŽAR JOAKIM
+DŽUDŽAR SLAVKO
+DŽUDOVIĆ SMILJKA
+DŽUDOVIĆ VASO
+DŽUKLEVSKI SAŠA
+DŽUKLJEV DRAGAN
+DŽUKLJEV STOJAN
+DŽUNIĆ ŽIVORAD
+DŽUNIĆ MILIVOJE
+DŽUNIĆ MIRJANA
+DŽUNIĆ RADOMIR
+DŽUNJA AMALIJA
+DŽUNJA EVGENIJE
+DŽUNJA GORDANA
+DŽUNJA IRENA
+DŽUNJA IVAN
+DŽUNJA JAKIM
+DŽUNJA JANKO
+DŽUNJA JELENA
+DŽUNJA LJUBOMIR
+DŽUNJA MIRON
+DŽUNJA VLADIMIR
+DŽUNJA ZVONIMIR
+DŽUVER VESELINKA
+DŽUVER VOJISLAV
+DŽUVEROVIĆ IVANKA
+DAČEVIĆ MILAN
+DAČEVIĆ MOMIR
+DAČIĆ DUŠAN
+DAČIĆ KRISTINA
+DAČIĆ LJUBOMIR
+DAČIĆ MIŠA
+DAČIĆ MILAN PROFESOR
+DAČIĆ MILAN
+DAČIĆ MILICA
+DAČIĆ NADEŽDA
+DAČIĆ RADMILA
+DAČIĆ VELINKA
+DAČIĆ VLASTIMIR
+DAŠIĆ-GULD LJILJANA
+DAŠIĆ MARIJA
+DAŠIĆ MILENKO
+DAŠIĆ RADULE
+DAŠIĆ VLADO
+DAŽĐU NISTOR
+DABANOVIĆ DANICA
+DABANOVIĆ VASILIJE
+DABERER ANTONIJA
+DABETIĆ RADISAV
+DABETIĆ RADOMIR
+DABIĆ ČEDOMIR DIPL OEC
+DABIĆ ĐORĐE
+DABIĆ ALEKSANDAR
+DABIĆ BORKO
+DABIĆ GOSPAVA
+DABIĆ JOVAN
+DABIĆ JOVAN
+DABIĆ MARIJA
+DABIĆ MARKO
+DABIĆ MILAN
+DABIĆ MILOŠ
+DABIĆ MILORAD
+DABIĆ MILUTIN
+DABIĆ MIODRAG
+DABIĆ NEDELJKO
+DABIĆ NENAD
+DABIĆ NENAD
+DABIĆ NENAD
+DABIĆ RADOMIR
+DABIĆ SLAVKO
+DABIĆ STEVAN
+DABIĆ SVETA
+DABIĆ VOJISLAV
+DABIN ĐORĐE
+DABOVIĆ BOGDAN
+DABOVIĆ BRANKO
+DACIN ŽELJKO
+DADAI ĐULA
+DADAI BARBARA
+DADAI LADISLAV
+DADAI LADISLAV
+DADAI LASLO
+DADAI STEVAN
+DADIĆ BRANISLAV
+DADIĆ LJUBICA
+DAIĆ LUKA
+DAIĆ MILAN
+DAJČ MIHAJLO
+DAJČ NADA
+DAJČ RUBEN
+DAJČ ZORICA
+DAJIĆ BRANKO
+DAJIĆ DRAGICA
+DAJIĆ DUŠAN
+DAJIĆ LJILJANA
+DAJIĆ VELIMIR
+DAJKO VLADIMIR
+DAJKO VLADIMIR
+DAJOVIĆ ZORA
+DAKIĆ ĐORĐE
+DAKIĆ ANTE
+DAKIĆ BOJANA
+DAKIĆ BORIS
+DAKIĆ BORKA
+DAKIĆ BRANKA
+DAKIĆ DANE
+DAKIĆ DANILO
+DAKIĆ DRAGO
+DAKIĆ DRAGO
+DAKIĆ DUŠANKA
+DAKIĆ GOJKO
+DAKIĆ ILIJA
+DAKIĆ JELENA
+DAKIĆ KSENIJA
+DAKIĆ MILAN
+DAKIĆ MILOJE
+DAKIĆ MILOMIR
+DAKIĆ MITAR
+DAKIĆ NEBOJŠA
+DAKIĆ NEDELJKO
+DAKIĆ NEDELJKO
+DAKIĆ NIKOLA
+DAKIĆ NIKOLA
+DAKIĆ PAVLE
+DAKIĆ PETAR
+DAKIĆ RAJKO
+DAKIĆ RANKO
+DAKIĆ RATKO
+DAKIĆ RELJA
+DAKIĆ SLAVICA
+DAKIĆ SLAVKO
+DAKIĆ SLOBODAN
+DAKIĆ SRETEN
+DAKIĆ SVETOZAR
+DAKIĆ VLADIMIR DR
+DAKIĆ VLADIMIR DR
+DAKIĆ VLADIMIR
+DAKIĆ VLADIMIR
+DAKIĆ VLADO
+DAKIĆ ZORAN
+DAKOVIĆ ĐOKO
+DAKOVIĆ BRANKO
+DAKOVIĆ VESELIN
+DAKOVIĆ ZORAN
+DAKSER JOVAN
+DAKSER STEVAN
+DALČEKOVIĆ ILIJA
+DALIPOV BUDIMIR
+DALIPOVIĆ ABDUL
+DALJAC LJUBICA
+DALJEV LJILJANA
+DALJEV MILAN
+DALMACIJA JADRANKA
+DALMACIJA MIRKO
+DALOŠ MARIJA
+DAMŠIĆ JOSIF
+DAMJAN JELISAVETA
+DAMJAN JON
+DAMJANAC RADMILA
+DAMJANAC RADOVAN
+DAMJANAC STOJANKA
+DAMJANIĆ ZORICA
+DAMJANOSKA SLAVKA
+DAMJANOV ŽIKA
+DAMJANOV ĐORĐE
+DAMJANOV BILJANA
+DAMJANOV BRANKA
+DAMJANOV CVETKO
+DAMJANOV DIMITRIJE
+DAMJANOV DRAGOMIR
+DAMJANOV IDA
+DAMJANOV JORDANKA
+DAMJANOV JOVAN
+DAMJANOV KATICA
+DAMJANOV LAZA
+DAMJANOV MILENKO
+DAMJANOV MILENKO
+DAMJANOV PAVLE
+DAMJANOV SOFIJA
+DAMJANOV STANKO
+DAMJANOV STEVAN
+DAMJANOVIĆ ĐORĐE
+DAMJANOVIĆ ALEKSANDAR
+DAMJANOVIĆ ARSENIJE
+DAMJANOVIĆ BOŠKO
+DAMJANOVIĆ BORISLAV
+DAMJANOVIĆ DARINKA
+DAMJANOVIĆ DRAGICA
+DAMJANOVIĆ DRAGOSLAV
+DAMJANOVIĆ DRAGO
+DAMJANOVIĆ DRAGUTIN
+DAMJANOVIĆ DUŠAN
+DAMJANOVIĆ DUŠAN
+DAMJANOVIĆ DUŠICA
+DAMJANOVIĆ DUŠKO
+DAMJANOVIĆ EMIL
+DAMJANOVIĆ GORDANA
+DAMJANOVIĆ JOVAN
+DAMJANOVIĆ JOVAN
+DAMJANOVIĆ JOVO
+DAMJANOVIĆ LJILJANA
+DAMJANOVIĆ LJUBIŠA
+DAMJANOVIĆ LJUBICA
+DAMJANOVIĆ MARIJA
+DAMJANOVIĆ MILAN
+DAMJANOVIĆ MILAN
+DAMJANOVIĆ-MILENKOVIĆ JELENA
+DAMJANOVIĆ MIODRAG
+DAMJANOVIĆ NOVO
+DAMJANOVIĆ OBRAD
+DAMJANOVIĆ PETAR
+DAMJANOVIĆ RADE
+DAMJANOVIĆ RADOVAN
+DAMJANOVIĆ RANKO
+DAMJANOVIĆ RATKO
+DAMJANOVIĆ SIMO
+DAMJANOVIĆ SINIŠA
+DAMJANOVIĆ SLAVKO
+DAMJANOVIĆ SLOBODANKA
+DAMJANOVIĆ SNEŽANA
+DAMJANOVIĆ STANISLAV
+DAMJANOVIĆ STEVAN
+DAMJANOVIĆ STEVAN
+DAMJANOVIĆ STEVO
+DAMJANOVIĆ TEREZA
+DAMJANOVIĆ TODOR
+DAMJANOVIĆ TOMISLAV
+DAMJANOVIĆ VASILIJE DR
+DAMJANOVIĆ VASILIJE
+DAMJANOVIĆ VASILIJE
+DAMJANOVIĆ VOJISLAV
+DAMJANOVIĆ ZORAN
+DAMJANOVSKI ŽIVKO
+DAMJANOVSKI ALEKSANDAR
+DAMJANOVSKI ALEKSANDAR
+DAMJANOVSKI MILAN
+DAMJANOVSKI RUŽICA
+DAMJANOVSKI VLADIMIR
+DAMLJANOVIĆ ŽIVOTA
+DAMNJANOVIĆ ALEKSANDAR
+DAMNJANOVIĆ KRISTINA
+DAMNJANOVIĆ LAZAR
+DAMNJANOVIĆ LJILJANA
+DAMNJANOVIĆ SLAVOLJUB
+DAMNJANOVIĆ ZORAN
+DAMNJANOVIĆ ZORAN
+DAN MIRA
+DANČ TIBOR
+DANČETOVIĆ ZORICA
+DANČO ČABA
+DANČO JENE
+DANAILOV ACA
+DANAILOV TEVA
+DANGUBIĆ ŽARKO
+DANGUBIĆ RADIVOJE DIPL ING
+DANGUBIĆ RATKO
+DANGUZOV DUŠAN
+DANI GAŠPAR
+DANI LASLO
+DANIČIĆ BORO
+DANIČIĆ BRANISLAV
+DANIČIĆ DRAGOLJUB
+DANIČIĆ DRAGO
+DANIČIĆ IRENA
+DANIČIĆ SAVICA
+DANIČIĆ ZDRAVKO
+DANIŠ EVA
+DANIŠ IŠTVAN
+DANIŠ MARIJA
+DANIĆ PETAR DIPL ING
+DANIĆ VESNA
+DANIĆ ZORICA
+DANIEL ANDRIJA
+DANIEL ARANKA
+DANIEL HILDA
+DANIEL JOSIP
+DANIEL PETAR
+DANIEL PIROŠKA
+DANIEL RUŽA
+DANIKOV MIROLJUB
+DANIKOV VALERIJA
+DANILOV ANICA
+DANILOV BOSILJKA
+DANILOV DUŠAN
+DANILOV MILAN
+DANILOV RADOMIR
+DANILOV SMILJANA
+DANILOV STOJAN
+DANILOV VASA
+DANILOVAC DIMITRIJE
+DANILOVAC PETAR
+DANILOVAC RUŽA
+DANILOVAC VITOMIR
+DANILOVIĆ ŽIVAN
+DANILOVIĆ ŽIVORAD
+DANILOVIĆ ALEKSANDAR
+DANILOVIĆ BRANKO
+DANILOVIĆ JOVAN
+DANILOVIĆ KATARINA
+DANILOVIĆ LJILJANA
+DANILOVIĆ MARKO
+DANILOVIĆ MILAN
+DANILOVIĆ MIRKO DR
+DANILOVIĆ NIKOLA
+DANILOVIĆ NIKOLA
+DANILOVIĆ PERSA
+DANILOVIĆ RADA
+DANILOVIĆ RADMILA
+DANILOVIĆ STANISLAVA
+DANILOVIĆ STEVAN
+DANILOVIĆ TIHOMIR
+DANILOVIĆ-VESELINOV VERA
+DANILOVIĆ ZDRAVKO
+DANJI FERENC
+DANJI GEZA
+DANJI KAROLJ
+DANJI LASLO
+DANJI MAĆAŠ
+DANKA MARKO
+DANKA ZLATA
+DANKO JANKO
+DANKO JAROSLAV
+DANKOVIĆ BOGOLJUB
+DANKOVIĆ SLAVIŠA
+DANKOVIĆ SLAVKA
+DANKUC DRAGAN
+DANKUC MILICA
+DANKUC VOJISLAV
+DANKUC VOJISLAV
+DANOJEVIĆ STEVAN
+DAPČEVIĆ DUŠAN
+DAPČEVIĆ JOVAN
+DAPČEVIĆ LJUBICA
+DAPČEVIĆ PAVLE
+DAPČEVIĆ RAJKO
+DAPČEVIĆ RUŽICA
+DAPČEVIĆ VERICA
+DARAŠ ŽELJKO
+DARAŽ JULIJANA
+DARAŽ STEVAN
+DARABANJ JOŽEF
+DARABOŠ JULKA
+DARABOŠ LADISLAV
+DARABOŠ MARIJA
+DARABOŠ PETAR
+DARABUC NEDELJKO
+DARADIĆ STEVAN
+DARMANOVIĆ MILAN
+DARMANOVIĆ STANKO
+DARMANOVIĆ TOMISLAV
+DAROJEVIĆ LAZAR
+DARVIŠ ZORICA
+DASOVIĆ STOJANKA
+DASOVIĆ ZLATA
+DAUTOVA-RUŠEVLJAN VELINKA DR
+DAUTOVIĆ ĐORĐE
+DAUTOVIĆ BOGDAN
+DAUTOVIĆ DŽEMAL
+DAUTOVIĆ DRAGAN
+DAUTOVIĆ MILAN
+DAUTOVIĆ MILAN
+DAVIĆ BRANISLAV
+DAVID ANDRAŠ
+DAVID ILONA
+DAVIDOV ĐURĐINA
+DAVIDOV BOGDAN
+DAVIDOV BUDIMKA
+DAVIDOV JELICA
+DAVIDOV JOVAN
+DAVIDOV LJUBOMIR
+DAVIDOV MILAN
+DAVIDOV MILAN
+DAVIDOV MILIĆ
+DAVIDOV MILIVOJ
+DAVIDOV MILKA
+DAVIDOV NEGOVAN
+DAVIDOV RADOSLAV
+DAVIDOV RADOVAN
+DAVIDOV SLAVKO
+DAVIDOV STOJAN
+DAVIDOV TIHOMIR
+DAVIDOVAC ĐORĐE
+DAVIDOVAC BOŠKO
+DAVIDOVAC DANILO
+DAVIDOVAC DUŠANKA
+DAVIDOVAC ELVIRA
+DAVIDOVAC GAVRA
+DAVIDOVAC GOJKO
+DAVIDOVAC LJUBICA
+DAVIDOVAC MIROSLAV
+DAVIDOVAC RADIVOJ
+DAVIDOVAC RADIVOJ
+DAVIDOVAC RADIVOJ
+DAVIDOVAC RADIVOJ
+DAVIDOVAC RADMILA
+DAVIDOVAC STEVAN
+DAVIDOVAC TODOR
+DAVIDOVAC VERICA
+DAVIDOVAC VESELINKA
+DAVIDOVAC ZDRAVKO
+DAVIDOVIĆ ČASLAV
+DAVIDOVIĆ DAVOR
+DAVIDOVIĆ DRAGAN
+DAVIDOVIĆ DRAGICA
+DAVIDOVIĆ DUŠANKA
+DAVIDOVIĆ DUŠKO
+DAVIDOVIĆ GORAN
+DAVIDOVIĆ JOVAN
+DAVIDOVIĆ JOVO
+DAVIDOVIĆ LJILJANA
+DAVIDOVIĆ MARIJA
+DAVIDOVIĆ MARIJA
+DAVIDOVIĆ MARJAN
+DAVIDOVIĆ MIHAILO
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILAN
+DAVIDOVIĆ MILA
+DAVIDOVIĆ MILOŠ
+DAVIDOVIĆ MILOŠ
+DAVIDOVIĆ MILOVAN
+DAVIDOVIĆ MILUTIN
+DAVIDOVIĆ MIRKO
+DAVIDOVIĆ MIROSLAV
+DAVIDOVIĆ MIROSLAV
+DAVIDOVIĆ MLADEN
+DAVIDOVIĆ NEBOJŠA
+DAVIDOVIĆ NENAD
+DAVIDOVIĆ OLGA
+DAVIDOVIĆ PERA
+DAVIDOVIĆ PETAR
+DAVIDOVIĆ PETAR
+DAVIDOVIĆ PETAR
+DAVIDOVIĆ RADE DR
+DAVIDOVIĆ RADE
+DAVIDOVIĆ RADOJE
+DAVIDOVIĆ RADOMIR
+DAVIDOVIĆ SAVA
+DAVIDOVIĆ SLAVKO
+DAVIDOVIĆ SRETA
+DAVIDOVIĆ STANKO
+DAVIDOVIĆ STEVAN
+DAVIDOVIĆ UROŠ
+DAVIDOVIĆ VASA
+DAVIDOVIĆ VITOMIR
+DAVIDOVIĆ VLADIMIR
+DAVIDOVIĆ VOJISLAV
+DAVIDOVIĆ ZORA
+DAVIDOVSKI MARA
+DAVINIĆ STOJAN
+DAVOGIĆ TEODOR
+DAVOSIR IVAN
+DAVOSIR MAKSIM
+DAVOSIR TEODOR
+DAVOSIR VLADIMIR
+DE-VRIES IVANKA
+DEŠI ZOLTAN
+DEŠIĆ MARA
+DEŠO ŽIVANKA
+DEŽE JOVAN
+DEŽE KARLO
+DEŽE ZDENKA
+DEŽELIĆ JOVANKA
+DEĐANSKI ĐORĐE
+DEĐANSKI DUŠAN
+DEĐANSKI PETAR
+DEAK ŽARKO
+DEAK ANDRAŠ
+DEAK ANDRIJANA
+DEAK ANDRIJA
+DEAK ARANKA
+DEAK FERENC
+DEAK ILEŠ
+DEAK LAURA
+DEAK MATILDA
+DEAN NEVENKA
+DEAROSKI FEHIM
+DEAROVIĆ SALIM
+DEBELJAČKI ŽIVOJIN
+DEBELJAČKI ĐORĐE
+DEBELJAČKI ALEKSANDAR
+DEBELJAČKI ALEKSANDAR
+DEBELJAČKI BOSILJKA
+DEBELJAČKI DRAGOMIR
+DEBELJAČKI IVAN
+DEBELJAČKI IVAN
+DEBELJAČKI KATICA
+DEBELJAČKI LJUBICA
+DEBELJAČKI MIRJANA
+DEBELJAČKI MIROSLAV
+DEBELJAČKI NADA
+DEBELJAČKI SRĐA
+DEBELJAČKI SVETOZAR
+DEBELJAČKI VERA
+DEBELJAČKI VUKOSAVA
+DEBELJEVIĆ VELIMIR
+DEC ANICA
+DEDAJ DAVID
+DEDAJ LEKO
+DEDEI ILONA
+DEDEIĆ ELIZABETA
+DEDIĆ BRANISLAV
+DEDIĆ DOBROSAV
+DEDIĆ DRAGAN
+DEDIĆ DRAGOSLAV
+DEDIĆ ELIZABETA
+DEDIĆ GAVRILO
+DEDIĆ JOVO
+DEDIĆ KOVINKA
+DEDIĆ MARA
+DEDIĆ MARIJA
+DEDIĆ MILIVOJ DR PROF
+DEDIĆ MILO
+DEDIĆ MIODRAG
+DEDIĆ NEMANJA
+DEDIĆ RADICA
+DEDIĆ SLAVKA
+DEDIĆ STEVAN
+DEDIĆ-TASIĆ MIRA
+DEDIN DEJAN
+DEDIN DIMITRIJE
+DEDIN DIMITRIJE
+DEDIN VASILIJE
+DEDINSKI TIBOR
+DEDOVIĆ MIŠO
+DEFRANGEPAN FRANSOA
+DEGA AVRAM
+DEJANAC MILORAD
+DEJANOSKI MILAN
+DEJANOV BERISLAV
+DEJANOV DANILO
+DEJANOV JELENA
+DEJANOV MITA
+DEJANOV SIMA
+DEJANOVIĆ ŽARKO
+DEJANOVIĆ ŽARKO
+DEJANOVIĆ ŽIVAN
+DEJANOVIĆ ŽIVOJIN
+DEJANOVIĆ ĐORĐE
+DEJANOVIĆ ĐURĐINKA
+DEJANOVIĆ ĐURICA
+DEJANOVIĆ ALEKSANDAR
+DEJANOVIĆ ALEKSANDRA
+DEJANOVIĆ ANĐELIJA
+DEJANOVIĆ ANKICA
+DEJANOVIĆ BORISLAVA
+DEJANOVIĆ DANILO
+DEJANOVIĆ DIMITRIJE
+DEJANOVIĆ DOBRIVOJE
+DEJANOVIĆ DOBRIVOJE
+DEJANOVIĆ DRAGAN
+DEJANOVIĆ DUŠAN
+DEJANOVIĆ DUŠAN
+DEJANOVIĆ DUŠAN
+DEJANOVIĆ IVAN
+DEJANOVIĆ JELENA
+DEJANOVIĆ JELICA
+DEJANOVIĆ JORDAN
+DEJANOVIĆ JOVAN
+DEJANOVIĆ KATICA
+DEJANOVIĆ LAZAR
+DEJANOVIĆ LAZAR
+DEJANOVIĆ MILANA
+DEJANOVIĆ MILAN
+DEJANOVIĆ MILAN
+DEJANOVIĆ MILICA
+DEJANOVIĆ MILOŠ
+DEJANOVIĆ MILOŠ
+DEJANOVIĆ MILORAD
+DEJANOVIĆ MILORAD
+DEJANOVIĆ MIRJANA
+DEJANOVIĆ MIROSLAV
+DEJANOVIĆ PETAR
+DEJANOVIĆ PETAR
+DEJANOVIĆ PETAR
+DEJANOVIĆ RADA
+DEJANOVIĆ STEVAN
+DEJANOVIĆ STEVAN
+DEJANOVIĆ VOJISLAV
+DEJANOVSKI MLADEN
+DEJANOVSKI TOMISLAV
+DEJANOVSKI VESELIN
+DEKANIĆ BRANKO
+DEKANIĆ GLIGORIJE
+DEKANIĆ MILOŠ
+DEKANIĆ MILOŠ
+DEKANIĆ VOJISLAV
+DEKANIĆ VOJISLAV
+DEKANJ ANTAL
+DEKANSKI DINA
+DEKANSKI PAVLE
+DEKIĆ DANE
+DELAČ FRANCIŠKA
+DELETIĆ GORDANA
+DELIĆ ĐORĐE
+DELIĆ BILJANA
+DELIĆ BOŽIDAR
+DELIĆ BOGDAN
+DELIĆ DARINKA
+DELIĆ DESIMIR
+DELIĆ DRAGICA
+DELIĆ DRAGICA
+DELIĆ DRAGUTIN
+DELIĆ-IBUKIĆ ESAD
+DELIĆ ILIJA
+DELIĆ JANJA
+DELIĆ JOVAN
+DELIĆ MARA
+DELIĆ MIĆO DR
+DELIĆ MIHAJLO
+DELIĆ MILANA
+DELIĆ MILAN
+DELIĆ MILICA
+DELIĆ MILKA
+DELIĆ MILOŠ
+DELIĆ MILOMIR
+DELIĆ MILOSAVA
+DELIĆ MUSTAFA
+DELIĆ PAŠKO
+DELIĆ PETAR
+DELIĆ RADMILA
+DELIĆ RADOJKA DR
+DELIĆ RADOMIR
+DELIĆ RADOSAV
+DELIĆ-SLAVKOVIĆ VERA
+DELIĆ SRETEN
+DELIĆ STOJAN
+DELIĆ SVETOZAR
+DELIĆ TOMISLAV
+DELIĆ VASA
+DELIĆ VESELKO
+DELIĆ VESNA
+DELIĆ VLADO
+DELIĆ VLADO
+DELIĐORĐEVIĆ STEVANKA
+DELIBAŠIĆ DEJAN DIPL ING
+DELIBAŠIĆ LJUBIŠA
+DELIBAŠIĆ LJUBICA
+DELIBAŠIĆ MARICA
+DELIBAŠIĆ MILIVOJE
+DELIBAŠIĆ MILIVOJE
+DELIBAŠIĆ MILORAD
+DELIBAŠIĆ MIODRAG
+DELIBAŠIĆ SAVO
+DELIBAŠIĆ SOFIJA
+DELIBAŠIĆ TOMISLAV
+DELIBLAĆANIN JOVAN
+DELKOVIĆ JOVICA
+DELOIK DRAGUTIN
+DELONGA STANKO
+DELOV ORDANČO
+DEMČEŠEN VASILIJE
+DEMŠAR GORDANA
+DEMŠAR-VEGER MARIJA
+DEMAK MIROSLAV
+DEMAN JANKO
+DEMAN RASTISLAV
+DEMBIC SMILJANA
+DEME EMA
+DEME FRANCIŠKA
+DEME IRENA
+DEME KLARA
+DEMEŠI ARPAD
+DEMELIS LJUBICA
+DEMENDI BELA
+DEMENDI DOROTEA
+DEMER BELA
+DEMER FRANC
+DEMETER FERENC
+DEMETER FRANJA
+DEMETER STEVAN
+DEMIĆ ŽIVORAD
+DEMJEN BORISLAV
+DEMKO-RIHTER JOSIP
+DEMOVSKI SEVDIJA
+DEMUT ROZALIJA
+DENČIK VLADISLAV
+DENDA DRAGAN
+DENDA MILIVOJ
+DENDIĆ SRETIMIR
+DENEŠI VILIM
+DENGORICIJA STJEPAN
+DENIĆ ČEDOMIR
+DENIĆ ŽIVOTA
+DENIĆ LJUBIŠA
+DENIĆ MOMČILO DIPL ING
+DENIĆ RADICA
+DENIĆ SINIŠA
+DENIĆ ZUZANA
+DENKOVIĆ LJUBOMIR
+DENKOVSKI JANE
+DEPČENJSKI STEFAN
+DER FRANJA
+DER JOŽEF
+DER LAJOŠ
+DER STEVAN
+DERAJIĆ STOJA
+DERBAKOV MARKO
+DERBOGOSIJAN BRANKO
+DERDIĆ RUDOLF
+DEREH SIMEON
+DERETA MILAN
+DERETA PETAR
+DERETA SVETOZAR
+DERETIĆ SVETOZAR
+DERIKRAVA MICA
+DERMENĐIJEVSKI DIMITAR
+DERONJIĆ TODOR
+DERUŠEK MILJENKO
+DERVIŠEVIĆ JUSUF
+DERVIŠEVIĆ NEDŽIB
+DERVIŠEVIĆ SLAVKO
+DERVIŠI MISIN
+DERVIŠI RAMADAN
+DERVIŠI RUŠIT
+DERVIĆ ŠEFKA
+DESNICA ĐORĐE
+DESNICA ĐURO MR
+DESNICA BOGDAN
+DESNICA BRANKO
+DESNICA JANKO
+DESNICA LUKA
+DESNICA NIKOLA
+DESNICA RADOMIR DIPL ING
+DESNICA RADOMIR
+DESNICA RELJA
+DESNICA SMILJKA
+DESNICA STANA
+DESPENIĆ ALEKSANDAR
+DESPI JOVA
+DESPI VELJKO
+DESPIĆ LAZAR
+DESPIĆ MARKO
+DESPIĆ MIRJANA
+DESPIĆ SRETEN
+DESPIĆ ZORAN
+DESPOT DUŠAN
+DESPOT MILAN
+DESPOT MILICA
+DESPOT MIRJANA
+DESPOT NADA
+DESPOT NENAD
+DESPOT SLOBODAN
+DESPOTOV ALEKSANDAR
+DESPOTOV DOBRILA
+DESPOTOV EVDOKIJA
+DESPOTOV ILIJA
+DESPOTOV JOCA
+DESPOTOV LJUBINKA
+DESPOTOV MILAN
+DESPOTOV MILOVAN
+DESPOTOV RADMILA
+DESPOTOV RUŽICA
+DESPOTOV VILMA
+DESPOTOV VITOMIRKA
+DESPOTOV VOJISLAV
+DESPOTOV ZORAN
+DESPOTOVIĆ BILJANA
+DESPOTOVIĆ DRAGUTIN
+DESPOTOVIĆ LJILJANA
+DESPOTOVIĆ PANTELIJA
+DESPOTOVIĆ RADISLAV
+DESPOTOVIĆ RADISLAV
+DESPOTOVIĆ RADIVOJE
+DESPOTOVIĆ RADIVOJE
+DESPOTOVIĆ RADMILA
+DESPOTOVIĆ RATKO
+DESPOTOVIĆ SIMKA
+DESPOTOVIĆ STANKO
+DESPOTOVIĆ VASO
+DESPOTOVIĆ VOJISLAV
+DESPOTOVSKI DUŠAN
+DETARI MARIJA
+DETELIN ĐURA
+DETELIN JOSIP
+DETELIN NADA
+DEURA DUŠAN DIPL PRAVNIK
+DEURA RAJKO
+DEURA VERA
+DEURIĆ RADMILA
+DEVAI ŠANDOR
+DEVAI IMRE
+DEVAI LAJOŠ
+DEVAI SANJA
+DEVAI ZORICA
+DEVAJA NADA
+DEVAJA OMER DR
+DEVALD ETELKA
+DEVALD IVAN
+DEVALD JOHAN
+DEVEČERI KRISTINA
+DEVEČERSKI AVRAM
+DEVEČERSKI DANICA
+DEVEČERSKI VASILIJE DR
+DEVEDAN ĐORĐE
+DEVEDAN BOGDAN
+DEVEDAN DRAGOJE
+DEVEDAN MARA
+DEVEDAN MILOVAN
+DEVEDAN MIRKO
+DEVETAK ZORA
+DEVIĆ-ČOBANKSI MILJENKA
+DEVIĆ ŽIVAN
+DEVIĆ ĐOKA
+DEVIĆ ĐORĐE
+DEVIĆ ALEKSANDAR
+DEVIĆ ANKICA
+DEVIĆ BILJANA
+DEVIĆ BRANISLAVA
+DEVIĆ BRANKA
+DEVIĆ CVIJETA
+DEVIĆ DANICA
+DEVIĆ DANILKA
+DEVIĆ DOBROSAV
+DEVIĆ DRAGOLJUB
+DEVIĆ DRAGOMIR
+DEVIĆ DRAGO
+DEVIĆ DUŠAN
+DEVIĆ EVICA
+DEVIĆ GORAN
+DEVIĆ GROZDA
+DEVIĆ IGNJAT
+DEVIĆ ILIJA
+DEVIĆ JOVAN DIPL ING
+DEVIĆ JOVANKA DR
+DEVIĆ JOVAN
+DEVIĆ KATICA
+DEVIĆ MILAN
+DEVIĆ MILAN
+DEVIĆ MILENKO
+DEVIĆ MILETA
+DEVIĆ MILOŠ
+DEVIĆ MIODRAG
+DEVIĆ MIRA
+DEVIĆ MLADEN
+DEVIĆ NEBOJŠA
+DEVIĆ NENAD
+DEVIĆ NOVKA
+DEVIĆ PETAR
+DEVIĆ RADOSLAV
+DEVIĆ SIMA
+DEVIĆ SLAVKO
+DEVIĆ SLOBODAN
+DEVIĆ TATJANA
+DEVIĆ TOMA
+DEVIĆ VELINKA
+DEVIĆ VLADA
+DEVIĆ VOJISLAV DIPL ING
+DEVIĆ ZAGORKA
+DEVRNJA BRANISLAV
+DEVRNJA DRAGICA
+DEVRNJA LJUBICA
+DEVRNJA-MIHAJLOVIĆ LJILJANA
+DEVRNJA MIODRAG
+DEVRNJA SPASOJE
+DEVUŠIĆ MILAN
+DICKOV ĐORĐE
+DICKOV ALEKSANDRA
+DICKOV DRAGAN
+DICKOV DRAGAN
+DICKOV DUŠKO
+DICKOV IVAN
+DICKOV KOSTA
+DICKOV MIRJANA
+DICKOV NIKOLA
+DICKOV STEVAN
+DICKOV VESELIN
+DICKOV VESELIN
+DICKOV ZORKA
+DICMAN ZDENKA
+DIDANOVIĆ ČEDOMIR
+DIDANOVIĆ BUDIMIR
+DIJAKOVIĆ PAVA
+DIJAMATOVIĆ DRAGICA
+DIKIĆ BRANISLAV
+DIKIĆ BRANKO
+DIKIĆ DUŠAN
+DIKIĆ GORAN
+DIKIĆ JOVANKA
+DIKIĆ JOVAN
+DIKIĆ MILAN
+DIKIĆ RATKO
+DIKIĆ SAVA DIPL ING
+DIKIĆ STEVAN
+DIKIĆ VELINKA
+DIKIĆ ZAGORKA
+DIKLIĆ ALEKSANDAR
+DIKLIĆ ALEKSANDAR
+DIKLIĆ BRANISLAV
+DIKLIĆ DRAGAN
+DIKLIĆ DRAGAN
+DIKLIĆ DUŠAN
+DIKLIĆ DUŠAN
+DIKLIĆ JASMINA
+DIKLIĆ JOVAN
+DIKLIĆ JUDIT
+DIKLIĆ MARTA
+DIKLIĆ MILAN
+DIKLIĆ MILETA
+DIKLIĆ MIROSLAV
+DIKLIĆ PETAR
+DIKLIĆ STANKO
+DIKOVIĆ NIKOLA
+DILBEROVIĆ ANTO
+DIMČOVSKI TRAJČE
+DIMŠIĆ ANKA
+DIMA BOSA
+DIMAŠEVIĆ ALEKSANDAR
+DIMAŠEVIĆ PETAR
+DIMANIĆ ANKA
+DIMANIĆ BRANISLAV
+DIMESKI ILIJA
+DIMESKI METODIJE
+DIMIĆ ŽARKO
+DIMIĆ ĐORĐE
+DIMIĆ AKSENTIJE
+DIMIĆ AKSENTIJE
+DIMIĆ ANĐELKA
+DIMIĆ BOGDAN
+DIMIĆ BRANKO
+DIMIĆ DANICA
+DIMIĆ DIMITRIJE
+DIMIĆ DRAGOLJUB DR
+DIMIĆ DRAGOMIR
+DIMIĆ DRAGO
+DIMIĆ DUŠAN DR
+DIMIĆ DUŠAN
+DIMIĆ DUŠAN
+DIMIĆ EMILIJA
+DIMIĆ ERŽEBET
+DIMIĆ IGNJAT
+DIMIĆ IVAN
+DIMIĆ JANKO
+DIMIĆ KOSTA
+DIMIĆ LAZAR
+DIMIĆ LAZAR
+DIMIĆ LJUBOMIR
+DIMIĆ MILAN
+DIMIĆ MILAN
+DIMIĆ MILEVA
+DIMIĆ MILICA
+DIMIĆ MILOŠ
+DIMIĆ MILOJE DIPL ING
+DIMIĆ MITA
+DIMIĆ NADA
+DIMIĆ NADA
+DIMIĆ NEBOJŠA
+DIMIĆ NIKOLA
+DIMIĆ NIKOLA
+DIMIĆ NIKOLA
+DIMIĆ NIKOLA
+DIMIĆ OLGA
+DIMIĆ OZREN
+DIMIĆ PETAR
+DIMIĆ STANKO
+DIMIĆ STEVAN
+DIMIĆ STEVAN
+DIMIĆ STEVAN
+DIMIĆ STEVA
+DIMIĆ VASA
+DIMIĆ VERICA
+DIMIĆ VITOMIR
+DIMIĆ VITOMIR
+DIMIĆ VLADIMIR
+DIMITRAŠKOVIĆ VLADIMIR
+DIMITRIĆ ŽIVORAD
+DIMITRIĆ BOGOLJUB
+DIMITRIĆ BRANKO
+DIMITRIĆ DRAGAN
+DIMITRIĆ MILENKO
+DIMITRIĆ MILEVA
+DIMITRIĆ NOVAK
+DIMITRIĆ PERO
+DIMITRIĆ RATKO
+DIMITRIĆ VLADAN
+DIMITRIĆ ZORAN
+DIMITRIADIS PAVLOS
+DIMITRIJEVIĆ ČEDOMIR
+DIMITRIJEVIĆ ČEDOMIR
+DIMITRIJEVIĆ ĐORĐE
+DIMITRIJEVIĆ ĐORĐE
+DIMITRIJEVIĆ ĐURĐA
+DIMITRIJEVIĆ ALEKSANDAR
+DIMITRIJEVIĆ ARSA
+DIMITRIJEVIĆ ARSEN
+DIMITRIJEVIĆ-BESERMENJI KATICA
+DIMITRIJEVIĆ BORIVOJE
+DIMITRIJEVIĆ BRANISLAVA
+DIMITRIJEVIĆ BRANISLAV
+DIMITRIJEVIĆ BRANISLAV
+DIMITRIJEVIĆ BRANKA
+DIMITRIJEVIĆ BRZOMIR
+DIMITRIJEVIĆ DANICA
+DIMITRIJEVIĆ DANICA
+DIMITRIJEVIĆ DESANKA
+DIMITRIJEVIĆ DIMITRIJE
+DIMITRIJEVIĆ DOBRICA
+DIMITRIJEVIĆ DRAGAN
+DIMITRIJEVIĆ DRAGAN
+DIMITRIJEVIĆ DRAGAN
+DIMITRIJEVIĆ DRAGAN
+DIMITRIJEVIĆ DUŠAN DR
+DIMITRIJEVIĆ DUŠANKA
+DIMITRIJEVIĆ DUŠAN
+DIMITRIJEVIĆ ERŽEBET
+DIMITRIJEVIĆ ETELA
+DIMITRIJEVIĆ EVICA
+DIMITRIJEVIĆ JELENA
+DIMITRIJEVIĆ JELENA
+DIMITRIJEVIĆ JELICA
+DIMITRIJEVIĆ JOVAN
+DIMITRIJEVIĆ JOVAN
+DIMITRIJEVIĆ JOVAN
+DIMITRIJEVIĆ LAZAR
+DIMITRIJEVIĆ LJUBICA DR
+DIMITRIJEVIĆ LJUBICA
+DIMITRIJEVIĆ LJUBICA
+DIMITRIJEVIĆ LJUBINKO
+DIMITRIJEVIĆ MARGITA
+DIMITRIJEVIĆ MARICA
+DIMITRIJEVIĆ MILAN MR
+DIMITRIJEVIĆ MILAN
+DIMITRIJEVIĆ MILAN
+DIMITRIJEVIĆ MILAN
+DIMITRIJEVIĆ MILA
+DIMITRIJEVIĆ MILIVOJ
+DIMITRIJEVIĆ MILKA
+DIMITRIJEVIĆ MILOJE
+DIMITRIJEVIĆ MILOVAN
+DIMITRIJEVIĆ MILUTIN
+DIMITRIJEVIĆ MIODRAG
+DIMITRIJEVIĆ MIODRAG
+DIMITRIJEVIĆ MIODRAG
+DIMITRIJEVIĆ MIRČE
+DIMITRIJEVIĆ MIROSLAVKA
+DIMITRIJEVIĆ MIROSLAV
+DIMITRIJEVIĆ MLADEN
+DIMITRIJEVIĆ NADA
+DIMITRIJEVIĆ NADA
+DIMITRIJEVIĆ NENAD
+DIMITRIJEVIĆ NEVENKA
+DIMITRIJEVIĆ PAJA
+DIMITRIJEVIĆ PETAR
+DIMITRIJEVIĆ PETAR
+DIMITRIJEVIĆ PETAR
+DIMITRIJEVIĆ PREDRAG
+DIMITRIJEVIĆ PREDRAG
+DIMITRIJEVIĆ RADISAV
+DIMITRIJEVIĆ RADIVOJE
+DIMITRIJEVIĆ RADIVOJ
+DIMITRIJEVIĆ RATKO
+DIMITRIJEVIĆ SAŠA
+DIMITRIJEVIĆ SAVA
+DIMITRIJEVIĆ SLAVKO
+DIMITRIJEVIĆ SLAVOLJUB
+DIMITRIJEVIĆ SRĐA
+DIMITRIJEVIĆ STANKO
+DIMITRIJEVIĆ STANOJE
+DIMITRIJEVIĆ STEVAN
+DIMITRIJEVIĆ STOJADIN
+DIMITRIJEVIĆ STOJADIN
+DIMITRIJEVIĆ SVETOMIR
+DIMITRIJEVIĆ TIHOMIR
+DIMITRIJEVIĆ TOMISLAV
+DIMITRIJEVIĆ VERA
+DIMITRIJEVIĆ VITOMIR
+DIMITRIJEVIĆ VUJICA
+DIMITRIJEVIĆ VUKOSAVA
+DIMITRIJEVIĆ ZLATIBOR
+DIMITRIJEVIĆ ZORAN
+DIMITRIJEVIĆ ZORAN
+DIMITRIJEVIĆ ZORICA
+DIMITRIJEVIĆ ZORICA
+DIMITRIJEVSKI MIHAJLO
+DIMITROV ŽIVOJIN
+DIMITROV ĐOKA
+DIMITROV ĐORĐE
+DIMITROV BOŠKO
+DIMITROV BORO
+DIMITROV BRANISLAV
+DIMITROV BRANKO
+DIMITROV DIMITRIJE
+DIMITROV DUŠAN
+DIMITROV DUŠAN
+DIMITROV EFTIM
+DIMITROV JOCA
+DIMITROV PETAR
+DIMITROV RADISLAV
+DIMITROV SLAVKO
+DIMITROV SOSA
+DIMITROV STEVAN
+DIMITROV SVETISLAV
+DIMITROV UROŠ
+DIMITROV VELIČKO
+DIMITROV ZLATA
+DIMITROVSKI ILONA
+DIMITROVSKI LJUBOMIR
+DIMITROVSKI LJUBOMIR
+DIMITROVSKI PAVLE
+DIMKOVIĆ BORISLAV
+DIMKOVSKI GORAN
+DIMKOVSKI LJUBIŠA
+DIMOSKI NIKOLA
+DIMOV DIMITAR
+DIMOV TODOR
+DIMOVA KATICA
+DIMOVIĆ SOFIJA
+DIMOVSKI ĐERO
+DIMOVSKI ANDRIJA
+DIMOVSKI LJUBICA
+DIMOVSKI MARINA
+DIMOVSKI MILICA
+DIMOVSKI TRAJČE
+DINČIĆ KATICA
+DINČIĆ MILORAD
+DINČIĆ SLOBODAN
+DINČIĆ SRETENKA
+DINČIK MARIJA
+DINIĆ ČEDOMIR
+DINIĆ BOŽIDAR
+DINIĆ BOSA
+DINIĆ JOŠKA
+DINIĆ-KNEŽEVIĆ DUŠANKA
+DINIĆ MILORAD
+DINIĆ RADOMIR
+DINIĆ VALERIJA
+DINIĆ VLADETA
+DINIĆ ZVONIMIR
+DINJAŠKI ŽARKO
+DINJAŠKI IRINA
+DINJAŠKI KSENIJA
+DINJAŠKI LEPA
+DINJAŠKI NESTOR
+DINJAŠKI STANIMIR
+DINJAŠKI STANKA
+DINJAŠKI STEVAN
+DINJAŠKI TRIVA
+DINJAŠKI ZDRAVKO
+DINJEŠ JOSIP
+DINULOVIĆ RADOSLAV
+DIOŠI JOSIP
+DIRNER ARANKA
+DISIĆ LJUBIŠA
+DISIĆ VLADIMIR
+DITRIH ANA
+DITRIH ROBERT
+DITRIH VLADIMIR
+DIVIĆ MILENKO
+DIVIJAČKI DRAGAN
+DIVIJAČKI DRAGAN
+DIVILD ĐORĐE
+DIVILD ANDRIJA
+DIVILD JELISAVETA
+DIVILD RADOSLAV
+DIVJAK DUŠAN
+DIVJAK DUŠAN
+DIVJAK DUŠAN
+DIVJAK MARINKO
+DIVJAK MILAN
+DIVJAK MILAN
+DIVJAK MILAN
+DIVJAK SAVA
+DIVJAKOVIĆ ĐORĐE
+DIVJAKOVIĆ BRANKO
+DIVJAKOVIĆ GAVRA
+DIVJAKOVIĆ JELICA
+DIVJAKOVIĆ LJUBICA
+DIVJAKOVIĆ MARIJA
+DIVJAKOVIĆ-RADIČEVA DORINA
+DIVJAKOVIĆ STEVAN
+DIVJAKOVIĆ TODOR
+DIVJAKOVIĆ VLADA
+DIVLJAK ALEKSANDAR
+DIVLJAK ANGELINA
+DIVLJAK BOŠKO
+DIVLJAK DESIMIR
+DIVLJAK DOBRIVOJ
+DIVLJAK DRAGO
+DIVLJAK MIROSLAV
+DIVLJAK MIROSLAV
+DIVLJAK RATKO
+DIVLJAK ZDRAVKO
+DIVLJAKOVIĆ DRAGUTIN
+DIVLJAKOVIĆ IVANKA
+DIVLJAN NENAD
+DIVNIĆ ŽIVAN
+DIVNIĆ ĐORĐE
+DIVNIĆ JELKA
+DIVNIĆ MIRJANA
+DIVNIĆ PAJA
+DIVNIĆ SLOBODAN
+DIVNIĆ SONJA
+DIVNIĆ SVETOZAR
+DIVOVIĆ RADOVAN
+DIZDAR ANĐA
+DIZDAR ANKICA
+DIZDAR IVICA
+DIZDAR JOSIP
+DIZDAR JURE
+DIZDAR JURO
+DIZDAR MARIJA
+DIZDAR MARKO
+DIZDAR PAVO
+DIZDAR SARAFINA
+DIZDAR VLADO
+DIZDAREVIĆ RADOLJUB
+DLUHI JOSIP
+DMITRAŠINOVIĆ RADE
+DMITRIJEV LIDIJA
+DMITROVIĆ DANICA
+DMITROVIĆ LJILJANA
+DMITROVIĆ MILOŠ
+DMITROVIĆ MIRJANA
+DMITROVIĆ RADENKO LEKAR
+DMITROVIĆ STEVAN
+DMITROVIĆ STEVAN
+DOŠEMOVIĆ PREDRAG
+DOŠEN ŽIVADIN
+DOŠEN BILJANA
+DOŠEN BRANKO
+DOŠEN DESANKA
+DOŠEN DRAGAN
+DOŠEN DUŠAN
+DOŠEN DUŠAN
+DOŠEN DUŠAN
+DOŠEN DUBRAVKA
+DOŠEN HRISTINA DR
+DOŠEN ILIJA
+DOŠEN IVAN
+DOŠEN IVAN
+DOŠEN JELENA
+DOŠEN MILAN
+DOŠEN MILAN
+DOŠEN MILE
+DOŠEN MILOŠ
+DOŠEN RADOSLAV
+DOŠEN RADOSLAV
+DOŠEN RATKO
+DOŠEN SVETLANA
+DOŠEN VOJIN
+DOŠENOVIĆ ČEDOMIR
+DOŠENOVIĆ MILIVOJE
+DOŠENOVIĆ MIROSLAVA
+DOŠENOVIĆ VASILJKA
+DOŠENOVIĆ VOJIN
+DOŠIĆ GIZELA
+DOŠLIĆ MILICA
+DOŠLIĆ NENAD
+DOŠLIĆ RADOSLAV
+DOŠLOV KRSTO
+DOŠLOV SLAVICA
+DOŽIĆ LJILJANA
+DOŽIĆ MARICA
+DOŽIĆ STEVAN
+DOŽIĆ STEVAN
+DOŽIĆ SVETISLAV
+DOŽIĆ VASILJKA
+DOBAN MARČEL
+DOBANOVAČKI ČEDOMIR
+DOBANOVAČKI ALEKSANDAR
+DOBANOVAČKI BORISLAV
+DOBANOVAČKI BRANISLAV
+DOBANOVAČKI DOBRINKA
+DOBANOVAČKI DUŠANKA
+DOBANOVAČKI DUŠANKA
+DOBANOVAČKI DUŠAN
+DOBANOVAČKI IRENA
+DOBANOVAČKI JELKA
+DOBANOVAČKI JULKA
+DOBANOVAČKI JULKICA
+DOBANOVAČKI MAKSIM
+DOBANOVAČKI MILAN
+DOBANOVAČKI MILAN
+DOBANOVAČKI MIRJANA
+DOBANOVAČKI MIRKO
+DOBANOVAČKI PETAR
+DOBANOVAČKI RADOMIR
+DOBANOVAČKI SAVA
+DOBANOVAČKI SAVA
+DOBANOVAČKI-SAVIĆ TINKA
+DOBANOVAČKI STEVAN
+DOBANOVAČKI TINKA
+DOBANOVAČKI ZORICA
+DOBANOVIĆ SOFIJA
+DOBEŠ JOVAN
+DOBI JULIJANA
+DOBIĆ BRANISLAV
+DOBIĆ PETAR
+DOBO ILEŠ
+DOBO JOŽEF
+DOBO JOŽEF
+DOBOŠ JOŽEF
+DOBOŠI ŠANDOR
+DOBOŠI ĐERĐ
+DOBOŠI ERŽEBET
+DOBOŠI JANOŠ
+DOBOŠI LASLO
+DOBOŠI MAGDALENA
+DOBOŠI MARGITA
+DOBOŠI PAL
+DOBOKAI MIHAJLO
+DOBOVIČEK FRANC
+DOBRA IVAN
+DOBRAŠ MILKA
+DOBRAN SLAVKO
+DOBRANIĆ RADOVAN
+DOBRANIĆ VIDOSAVA
+DOBRE BOŽA
+DOBRENOV DUŠAN DIPL ING
+DOBRENOV GRETA
+DOBRENOV JELISAVETA
+DOBRENOV JELISAVETA
+DOBRENOV NIKOLA
+DOBRENOV SANDRA
+DOBRENOV VOJIN
+DOBRETIĆ MARICA
+DOBRIČKI DUŠAN
+DOBRIČKI MARIJA
+DOBRIĆ ŽIVKO
+DOBRIĆ ĐORĐE
+DOBRIĆ BOŠKO
+DOBRIĆ BRANISLAV
+DOBRIĆ ERŽEBET
+DOBRIĆ GOJKO
+DOBRIĆ JOVAN
+DOBRIĆ KOSTA
+DOBRIĆ LJUBICA
+DOBRIĆ MILADIN
+DOBRIĆ MILAN
+DOBRIĆ MILAN
+DOBRIĆ NEGOSAVA
+DOBRIĆ RADISLAV
+DOBRIĆ RADIVOJ
+DOBRIĆ SLOBODAN
+DOBRIĆ STEVAN
+DOBRIĆ UGLJEŠA
+DOBRIĆ VERONIKA
+DOBRIĆ VESNA
+DOBRIĆ ZDRAVKO
+DOBRIJEVIĆ DUŠAN
+DOBRIJEVIĆ PETAR
+DOBRIJEVIĆ SLOBODANKA
+DOBRILOVIĆ RAJKO
+DOBRILOVIĆ RAJKO
+DOBRILOVIĆ SIMA
+DOBRIN DEŽE
+DOBRIN NIKOLA
+DOBRIN OLGA
+DOBRINIĆ DARINKA
+DOBRIVOJEVIĆ DUŠAN
+DOBRIVOJEVIĆ SVETLANA
+DOBRNJAC STOJANKA
+DOBRODEL FRANJO
+DOBRODOLSKI JELENA
+DOBRODOLSKI JULKA
+DOBRODOLSKI VUKICA
+DOBROKES MILENA
+DOBROMIROV ALEKSANDAR
+DOBROMIROV ALEKSANDAR
+DOBROMIROV DUŠAN
+DOBROMIROV EUFIMIJA
+DOBROMIROV NADA
+DOBROMIROV PETAR
+DOBROMIROV VITOMIR
+DOBROMIROV VLADIMIR
+DOBROMIROV VOJISLAV
+DOBROMIROVIĆ PAVLE
+DOBROSAVLJEV LAZAR
+DOBROSAVLJEV LAZAR
+DOBROSAVLJEV MILAN
+DOBROSAVLJEV MILAN
+DOBROSAVLJEV MILAN
+DOBROSAVLJEV MILOVAN
+DOBROSAVLJEV MIRA
+DOBROSAVLJEV PETAR
+DOBROSAVLJEV RADA
+DOBROSAVLJEV RANKO
+DOBROSAVLJEV SAVA
+DOBROSAVLJEV SVETOZAR
+DOBROSAVLJEVIĆ DRENKA
+DOBROSAVLJEVIĆ SLAVKO
+DOBROSAVLJEVIĆ VASA NOVINAR
+DOBROSAVLJEVIĆ VASILIJE
+DOBROSAVLJEVIĆ VASILIJE
+DOBROTA BISERKA
+DOBROTA DAMIR
+DOBROVIĆ ALEKSANDRA
+DOBROVIĆ DAMJANKA
+DOBROVIĆ LJUBOMIR
+DODEROVIĆ MILOSAV
+DODEROVIĆ RADIVOJ
+DODIĆ IVAN
+DODIĆ JELENA
+DODIĆ MILIVOJ
+DODIĆ MIODRAG
+DODIĆ MIODRAG
+DODIĆ SAVA
+DODIĆ SLOBODAN
+DODIĆ STANOJE
+DODIĆ STOJAN
+DODIĆ VERA
+DODIK BARTOL
+DODIK STEVAN
+DODLEK VLADIMIR
+DODOŠ LAZAR
+DOGANDŽIĆ DOBRIVOJE
+DOJČINOVIĆ ĐUJA
+DOJČINOVIĆ ĐURĐICA
+DOJČINOVIĆ BLAGOJE
+DOJČINOVIĆ BOŽIDAR
+DOJČINOVIĆ DUŠAN
+DOJČINOVIĆ JOSIF
+DOJČINOVIĆ MIHAJLO
+DOJČINOVIĆ MIROSLAV DR
+DOJČINOVIĆ RADOSLAV
+DOJČINOVIĆ VLADA
+DOJČINOVSKI VANČA
+DOJDER IVO
+DOJDER JAKOV
+DOJIĆ LAZAR
+DOJKIĆ BOŽIDAR
+DOJKIĆ JULKICA
+DOJKIĆ KSENIJA
+DOJKIĆ MARIJA
+DOJKIĆ MILORAD
+DOJKIĆ MILORAD
+DOJKIĆ MLADEN
+DOJKIĆ MLADEN
+DOJKIĆ PAJA
+DOJKIĆ PETAR DR
+DOJKIĆ PETAR
+DOJKIĆ RAJKO
+DOJKIĆ RAJKO
+DOJKIĆ SLAVKO
+DOJKIĆ VJEKOSLAV
+DOKLEAN ADAM
+DOKMANOVIĆ BORIVOJ
+DOKMANOVIĆ DEJAN
+DOKMANOVIĆ MARIJA
+DOKMANOVIĆ MILICA
+DOKMANOVIĆ NADA
+DOKMANOVIĆ RADIVOJ
+DOKNIĆ VELJKO
+DOKOŠIĆ MARIJA
+DOLAŠ MILOVAN
+DOLENEC FLORIJAN
+DOLGA MILENA
+DOLINAJ ĐURO
+DOLINAJ JAROSLAVA
+DOLINAR LJUBICA
+DOLINGA MARIORA
+DOLINGA NIKOLAJE
+DOLOŠ FRANJA
+DOLOVČAK KATICA
+DOLOVAC ANKICA
+DOLOVAC BISERKA
+DOLOVAC DRAGICA
+DOLOVAC JOVAN
+DOLOVAC LAZAR
+DOLOVAC LAZAR
+DOLOVAC MARIJA
+DOLOVAC MILICA
+DOLOVAC MILOŠ
+DOLOVAC RADIVOJ
+DOLOVAC RADOSLAV
+DOLOVAC RADOSLAV
+DOLOVAC SLAVKO
+DOLOVAC SLAVKO
+DOLOVAC SLOBODAN
+DOLOVAC VELIMIR
+DOLOVAC ZORKA
+DOMASTOVIĆ DANICA
+DOMAZET NIKOLA
+DOMAZET ZORICA
+DOMAZETOV VELIMIR
+DOMAZETOVIĆ ČEDOMIR
+DOMAZETOVIĆ MIRJANA
+DOMAZETOVIĆ MIRJANA
+DOMBI LASLO
+DOMBI RADOJKA
+DOMBI SMILJKA
+DOMINIĆ ANA
+DOMINIĆ NIKOLA
+DOMONJI MARTIN
+DOMONKOŠ EVA
+DOMONKOŠ VILMOŠ
+DOMONKOS IŠTVAN
+DOMOVIĆ MILAN
+DONČEV TODE
+DONČIĆ NADA
+DONAT DRAGUTIN
+DONAT SAVETA
+DONDUR ŽIVKO
+DONDUR DANICA
+DONDUR DARINKA
+DONDUR MILICA
+DONDUR SLAVKO
+DONDUR STANKO
+DONDUR ZDRAVKO
+DONEV TODOR
+DONEVSKI JELENA
+DONEVSKI KRISTINA
+DONIĆ ŽIVOJIN
+DONKOR DŽEMS
+DONSKOV SERGIJE
+DONSKOVA ZOJA DR LEKAR
+DOPUĐ BOŽIDAR
+DOPUĐ BRANKO
+DOPUĐ DUBRAVKA
+DOPUĐ GORAN
+DOPUĐ MARIJA
+DOPUĐ MILAN DR
+DOPUĐ MIROSLAVA
+DOPUĐA ŽIVKO
+DOPUĐA DARA
+DOPUĐA DRAGOMIR
+DOPUĐA SAVA
+DOPUĐA VLADIMIR
+DORČIĆ ALOJZA
+DORČIĆ-BIKIĆ OLGICA
+DORČIĆ BOŽO
+DORČIĆ KLEMENT
+DORČIĆ MARJAN
+DORIĆ ŽARKO
+DORIĆ BILJANA
+DORIĆ BILJANA
+DORIĆ BORISLAV
+DORIĆ FRANJA
+DORIĆ ILIJA
+DORIĆ IRMA
+DORIĆ JOSIP
+DORIĆ PETAR
+DORIĆ STEVAN
+DORIĆ VESELIN
+DORKO SOFIJA
+DORMAN LASLO
+DORO GEZA DR
+DOROŠEV ĐORĐE
+DOROŠKI ĐORĐE
+DOROŠKI BRANKO
+DOROŠKI DESANKA
+DOROŠKI JOVAN DR
+DOROŠKI LJILJANA
+DOROŠKI MARIJA
+DOROŠKI MILAN
+DOROŠKI MILA
+DOROŠKI MIRJANA
+DOROŠKI NIKOLA
+DOROŠKI SIMA
+DOROŠKI VIDOSAVA
+DOROŠKI VUJADIN
+DOROCKI MAHAL
+DOROGHAZI IRINA
+DOROGI ŠANDOR
+DORONJSKI DUŠAN
+DORONJSKI KATARINA
+DOROSLOVAČKI ĐURA
+DOROSLOVAČKI ALEKSANDAR
+DOROSLOVAČKI ANICA
+DOROSLOVAČKI DANICA
+DOROSLOVAČKI GRUJA
+DOROSLOVAČKI JELENA
+DOROSLOVAČKI KSENIJA
+DOROSLOVAČKI MARGITA
+DOROSLOVAČKI MARINA
+DOROSLOVAČKI MARJANA
+DOROSLOVAČKI MIROSLAV
+DOROSLOVAČKI NIKOLA
+DOROSLOVAČKI RADE
+DOROSLOVAČKI SAVETA
+DOROSLOVAČKI STEVANKA
+DOROSLOVAČKI VUJA
+DOROSLOVAČKI VUKA
+DOROSLOVAC BRANISLAVA
+DOROSLOVAC LAZAR
+DOROSLOVAC MARIJA
+DOROSLOVAC MILANA
+DOROSLOVAC MIROSLAV
+DOROSLOVAC PETAR
+DOROSLOVAC ZORAN
+DOROTIĆ ĐORĐE
+DOROTIĆ ĐORĐE
+DOROTIĆ GIZELA
+DOROTIĆ GORDAN
+DOROTIĆ-GUTEŠA LEONA
+DOROTIĆ ILA MR PROF
+DOROTIĆ MARIJA
+DOROTIĆ STEVAN
+DOROTKA DRAGAN
+DOROTKA MILOŠ
+DOSTAN ANA
+DOSTAN ARPAD
+DOSTAN DARINKA
+DOSTAN IŠTVAN
+DOSTAN JOŽEF
+DOSTAN LADISLAV
+DOSTAN PETAR
+DOSTAN STEVAN
+DOSTAN TIBOR
+DOSTANIĆ DRAGICA
+DOSTANIĆ RADMILO
+DOSTANIĆ VOISLAV
+DOSTANJ JOSIP
+DOSTANJ ROZALIJA
+DOSTIĆ SLAVKO
+DOSTIĆ SOFIJA
+DOTLIĆ ŽIVKO
+DOTLIĆ BOŠKO
+DOTLIĆ BORISLAV
+DOTLIĆ DOBRILA
+DOTLIĆ DUŠAN
+DOTLIĆ LAZAR
+DOTLIĆ LAZAR
+DOTLIĆ LUKA
+DOTLIĆ SAVA
+DOTLIĆ SOFIJA
+DOTLIĆ VASA
+DOTOV DRAGO
+DOVAT PAVLE DR
+DOVAT VLADIMIR
+DOVATOV ADAM
+DOVEDEN BORISLAV
+DOVGAN JOSIP
+DOVIJAROV MILOŠ
+DOVIJAROV RADIVOJ
+DOVIJARSKI BRANKA
+DOVIJARSKI MILENA
+DOVIJARSKI STANIMIR
+DOVNIKOVIĆ LAZAR
+DOZET ĐORĐE
+DOZET BOŽO
+DOZET DRAGICA
+DOZET ILIJA
+DOZET JASNA
+DOZET JULKICA
+DOZET LJUBICA
+DOZET LJUBOMIR
+DOZET MIHAJLO
+DOZET MILAN
+DOZET MILOVAN
+DOZET NIKOLA
+DOZET RADE
+DOZET RADMILA
+DOZET RADOSLAVKA
+DOZET SAVKA
+DOZET STANKO
+DRČA ANA
+DRČA BRANKO
+DRČA DRAGICA
+DRČA JANKO
+DRČA MILAN
+DRČA RATKO
+DRČA SLAVKO
+DRČA STEVAN
+DRČA-URGEN MARIJA
+DRČA VLATKO
+DRČELIĆ DOBRISAV
+DRČELIĆ MIRJANA
+DRŽAJIĆ DIMITRIJE PROFESOR
+DRŽIĆ ILIJA
+DRAČA ŽIVKO
+DRAČA ĐORĐE
+DRAČA ACA
+DRAČA DUBRAVKA
+DRAČA MILE
+DRAČA PETAR DR
+DRAČA PETAR
+DRAČA SPASENKA
+DRAČA TOMO DR
+DRAČIN KOSTA
+DRAŠIĆ NATALIJA
+DRAŠKO JELKA
+DRAŠKO MILOVAN
+DRAŠKO SLOBODAN
+DRAŠKOVIĆ BRANKO DIPL OEC
+DRAŠKOVIĆ DRAGA
+DRAŠKOVIĆ DUŠAN
+DRAŠKOVIĆ LJUBOMIR
+DRAŠKOVIĆ MIHAJLO
+DRAŠKOVIĆ MILOMIR
+DRAŠKOVIĆ MILORAD
+DRAŠKOVIĆ NENAD
+DRAŠKOVIĆ SAVO
+DRAŠKOVIĆ SLOBODANKA
+DRAŠKOVIĆ SLOBODAN
+DRAŠKOVIĆ SRETEN
+DRAŽETA MILENKO
+DRAŽETA STEVAN
+DRAŽETIN DUŠAN
+DRAŽETIN MLADEN
+DRAŽIĆ ŽARKO
+DRAŽIĆ ĐORĐE
+DRAŽIĆ ĐORĐE
+DRAŽIĆ ALEKSANDAR
+DRAŽIĆ BOGDAN
+DRAŽIĆ BUDO
+DRAŽIĆ DOBRIVOJ
+DRAŽIĆ DRAGOLJUB
+DRAŽIĆ DUŠAN
+DRAŽIĆ DUŠAN
+DRAŽIĆ EMIL
+DRAŽIĆ GORDANA
+DRAŽIĆ ILIJA
+DRAŽIĆ ILIJA
+DRAŽIĆ IRENA
+DRAŽIĆ JAŠA
+DRAŽIĆ JELICA
+DRAŽIĆ JOVAN
+DRAŽIĆ JOVAN
+DRAŽIĆ JOVAN
+DRAŽIĆ JOVAN
+DRAŽIĆ JOVAN
+DRAŽIĆ KATICA
+DRAŽIĆ KOSTA
+DRAŽIĆ LAZAR
+DRAŽIĆ LJUBICA
+DRAŽIĆ MARIJA
+DRAŽIĆ MILAN
+DRAŽIĆ MILAN
+DRAŽIĆ MILENKO
+DRAŽIĆ MILENKO
+DRAŽIĆ MILINKO DIPL ING
+DRAŽIĆ MILORAD
+DRAŽIĆ MILORAD
+DRAŽIĆ MILORAD
+DRAŽIĆ MIRA
+DRAŽIĆ MITA
+DRAŽIĆ NATALIJA
+DRAŽIĆ NATALIJA
+DRAŽIĆ NESTOR
+DRAŽIĆ NEVENKA
+DRAŽIĆ NIKOLA
+DRAŽIĆ NIKOLA
+DRAŽIĆ OSTOJA
+DRAŽIĆ PETAR
+DRAŽIĆ RADOVAN
+DRAŽIĆ RELJA
+DRAŽIĆ SLAVKO
+DRAŽIĆ SOFIJA
+DRAŽIĆ STANKO
+DRAŽIĆ STEVAN
+DRAŽIĆ STEVAN
+DRAŽIĆ SUZANA
+DRAŽIĆ TOMISLAV
+DRAŽIĆ VELINKA
+DRAŽIĆ VERA
+DRAŽIĆ VERA
+DRAŽIĆ VERA
+DRAŽIĆ ZLATKO
+DRAŽILOVIĆ STANIŠA
+DRAŽIN BORISLAV
+DRAGAŠ ĐORĐE
+DRAGAŠ ĐURO
+DRAGAŠ BORISLAV
+DRAGAŠ BRANKO
+DRAGAŠ DRAGOMIR
+DRAGAŠ IVAN
+DRAGAŠ KATICA
+DRAGAŠ-KOVAČ LJUBICA
+DRAGAŠ LEPOSAVA
+DRAGAŠ LJUBICA
+DRAGAŠ LJUBICA
+DRAGAŠ MANOJLO
+DRAGAŠ MILAN
+DRAGAŠ MILENKO
+DRAGAŠ MIRA
+DRAGAŠ MIRJANA
+DRAGAŠ MOMČILO
+DRAGAŠ RADIVOJ
+DRAGAŠ RADOMIR
+DRAGAŠ SPOMENKA
+DRAGAŠ SVETLANA
+DRAGAŠ ZORAN
+DRAGAŠEV VLADIMIR
+DRAGAN MILENA
+DRAGANIĆ DRAGA
+DRAGANIĆ JANKO
+DRAGANIĆ MIHAJLO
+DRAGANIĆ MILICA DR
+DRAGANIĆ MILKA
+DRAGANIĆ MIRKO
+DRAGANIĆ MIROSLAV
+DRAGANIĆ NADEŽDA
+DRAGANIĆ RANKO
+DRAGANIĆ VIDA
+DRAGANIĆ ZEKO
+DRAGANOV MILOŠ
+DRAGANOV OLGA
+DRAGANOV SLOBODAN
+DRAGANOV STOJANKA
+DRAGANOVIĆ SLAVKO
+DRAGELJEVIĆ DUŠAN
+DRAGELJEVIĆ JOVAN
+DRAGIČEVIĆ ADAM
+DRAGIČEVIĆ ALEKSANDAR
+DRAGIČEVIĆ BORISLAV
+DRAGIČEVIĆ GOJKO
+DRAGIČEVIĆ ILINKA
+DRAGIČEVIĆ IVKA
+DRAGIČEVIĆ KREŠIMIR
+DRAGIČEVIĆ LAZAR
+DRAGIČEVIĆ LJUBICA
+DRAGIČEVIĆ LJUBOMIR
+DRAGIČEVIĆ MILJA
+DRAGIČEVIĆ MILOŠ
+DRAGIČEVIĆ MIRKO
+DRAGIČEVIĆ RADENKO
+DRAGIČEVIĆ SPASA
+DRAGIČEVIĆ SRETEN
+DRAGIČEVIĆ VOJIN
+DRAGIČEVIĆ VOJISLAV
+DRAGIČEVIĆ ZORAN
+DRAGIŠA ŽARKO
+DRAGIŠIĆ BOGDAN
+DRAGIŠIĆ BORISLAVKA
+DRAGIŠIĆ JOVANKA
+DRAGIŠIĆ NIKOLA
+DRAGIŠIĆ PETAR
+DRAGIŠIĆ RADE
+DRAGIĆ ČEDOMIR
+DRAGIĆ ŽELJKO
+DRAGIĆ ĐORĐE
+DRAGIĆ ANA
+DRAGIĆ BRANKO
+DRAGIĆ DUŠAN
+DRAGIĆ DUŠAN
+DRAGIĆ ELVIRA
+DRAGIĆ ILIJA
+DRAGIĆ ILIJA
+DRAGIĆ ILIJA
+DRAGIĆ JELENA
+DRAGIĆ LJUBIŠA
+DRAGIĆ LJUBIŠA
+DRAGIĆ MARIJANA
+DRAGIĆ MILENKO
+DRAGIĆ MILIVOJE
+DRAGIĆ MILKA
+DRAGIĆ MILORAD
+DRAGIĆ NADA
+DRAGIĆ NEDELJKO
+DRAGIĆ NEVENKA
+DRAGIĆ NIKOLA
+DRAGIĆ OBRAD
+DRAGIĆ PAULA
+DRAGIĆ PAVLE
+DRAGIĆ PERA
+DRAGIĆ PETAR
+DRAGIĆ PETAR
+DRAGIĆ RANKO
+DRAGIĆ SAVA
+DRAGIĆ SLAVKO
+DRAGIĆ SPASOJE
+DRAGIĆ STEVAN
+DRAGIĆ STEVAN
+DRAGIĆ TOMISLAV
+DRAGIĆ VERA
+DRAGIĆ VESNA
+DRAGIĆEVIĆ BOGICA
+DRAGIĆEVIĆ BORISLAV
+DRAGIĆEVIĆ BRANISLAV
+DRAGIĆEVIĆ RAJICA
+DRAGIN ŽARKO
+DRAGIN BOGDAN
+DRAGIN BORIVOJ
+DRAGIN DANILO
+DRAGIN DESANKA
+DRAGIN DUŠKO
+DRAGIN GORDANA
+DRAGIN JOVAN DIPL ING
+DRAGIN JOVO DIPL ING
+DRAGIN LAZAR
+DRAGIN MARKO
+DRAGIN MIODRAG
+DRAGIN MIODRAG
+DRAGIN NIKOLA
+DRAGIN PETRIJA
+DRAGIN RADIVOJ
+DRAGIN RISTO
+DRAGIN SAŠA
+DRAGIN SOKICA
+DRAGIN STEVAN
+DRAGIN SVETISLAV
+DRAGIN VASA
+DRAGIN VOJISLAV
+DRAGIN ZORAN
+DRAGINČIĆ DUŠAN
+DRAGINČIĆ SLAVKO
+DRAGOŠEV DRAGAN
+DRAGOJEVIĆ ŽELJKO
+DRAGOJEVIĆ ANĐELKO
+DRAGOJEVIĆ BOŠKO
+DRAGOJEVIĆ BRANISLAV
+DRAGOJEVIĆ DARINKA
+DRAGOJEVIĆ DRAGUTIN
+DRAGOJEVIĆ GOJKO
+DRAGOJEVIĆ HRISTINA
+DRAGOJEVIĆ LJUBOMIR
+DRAGOJEVIĆ MILENA
+DRAGOJEVIĆ MILENKO
+DRAGOJEVIĆ MILENKO
+DRAGOJEVIĆ MILICA
+DRAGOJEVIĆ MILORAD
+DRAGOJEVIĆ NIKOLA
+DRAGOJEVIĆ RADIŠA
+DRAGOJEVIĆ STEVAN
+DRAGOJEVIĆ ZLATANA
+DRAGOJLOV ANKICA
+DRAGOJLOV BOŠKO
+DRAGOJLOV DUŠAN
+DRAGOJLOV DUBRAVKA
+DRAGOJLOV GAVRA
+DRAGOJLOV LAZAR
+DRAGOJLOV MARGITA
+DRAGOJLOV MILOŠ
+DRAGOJLOV MILOŠ
+DRAGOJLOV MIROSLAV
+DRAGOJLOV VOJISLAV
+DRAGOJLOVIĆ DUŠKO
+DRAGOJLOVIĆ LAZAR
+DRAGOJLOVIĆ MARA
+DRAGOJLOVIĆ MILAN
+DRAGOJLOVIĆ MILAN
+DRAGOJLOVIĆ ZORICA
+DRAGOLJEVIĆ GOJKO
+DRAGOLJEVIĆ MARINKO
+DRAGOLJEVIĆ MITAR
+DRAGOLJEVIĆ RANKO
+DRAGOLJEVIĆ SEKULA
+DRAGOLJEVIĆ STOJAN
+DRAGOLJEVIĆ VLADE
+DRAGOMIROVIĆ ĐOKA
+DRAGOMIROVIĆ DIMITRIJE
+DRAGOMIROVIĆ DRAGICA
+DRAGOMIROVIĆ IVAN
+DRAGOMIROVIĆ LJUBICA
+DRAGOMIROVIĆ SAVA
+DRAGOMIROVIĆ TODOR
+DRAGOSAVAC ANGELINA
+DRAGOSAVAC ILIJA
+DRAGOSAVAC KATICA
+DRAGOSAVAC MELANIJA
+DRAGOSAVAC MILANKO
+DRAGOSAVAC MILORAD
+DRAGOSAVAC NIKOLA
+DRAGOSAVAC ZUZANA
+DRAGOSAVLJEVIĆ ĐURA
+DRAGOSAVLJEVIĆ LJILJANA
+DRAGOSAVLJEVIĆ MARIJA
+DRAGOSAVLJEVIĆ MIRJANA
+DRAGOSAVLJEVIĆ MLADEN
+DRAGOSAVLJEVIĆ STEVA DIPL ING
+DRAGOSAVLJEVIĆ STOJŠA
+DRAGOSAVLJEVIĆ VOJA
+DRAGOSLAVIĆ VIDAK
+DRAGOVAC SLAVKO
+DRAGOVIĆ ČEDO
+DRAGOVIĆ BUDIMIR
+DRAGOVIĆ DRAGAN
+DRAGOVIĆ GOJKO
+DRAGOVIĆ GORDANA
+DRAGOVIĆ JASMINKA
+DRAGOVIĆ JOVANKA
+DRAGOVIĆ MILAN
+DRAGOVIĆ MILIĆ
+DRAGOVIĆ MILICA
+DRAGOVIĆ MIRA
+DRAGOVIĆ RANKO
+DRAGOVIĆ SNIJEŽANA
+DRAGOVIĆ STAMENKA
+DRAGOVIĆ SVETIMIR
+DRAGOVIĆ SVETOMIR
+DRAGOVIĆ VERA
+DRAGOVIĆ VIDAK
+DRAGOVIĆ VLADA
+DRAGOVIĆ ZORAN
+DRAGUMILO MILOMIR
+DRAGUMILO MILUTIN
+DRAGUNOVIĆ BORISLAV
+DRAGUNOVIĆ PERO
+DRAGUTINOVIĆ ŽIVKA
+DRAGUTINOVIĆ MILAN
+DRAGUTINOVIĆ PREDRAG
+DRAGUTINOVIĆ ZORAN
+DRAH JELISAVETA
+DRAH JELISAVETA
+DRAHOTUSKI BORISLAV
+DRAHOTUSKI PETAR
+DRAKIĆ DRAGIŠA
+DRAKIĆ SLOBODAN DR
+DRAKUL VASO
+DRAKULA DUŠAN
+DRAKULA RADMILA
+DRAKULIĆ ALEKSANDAR
+DRAKULIĆ BRANISLAV
+DRAKULIĆ DRAGOMIR DR STOMATOLOG
+DRAKULIĆ DRAGOMIR
+DRAKULIĆ ERŽEBET
+DRAKULIĆ JELENA
+DRAKULIĆ JOVAN
+DRAKULIĆ KOSTA
+DRAKULIĆ LAZAR
+DRAKULIĆ LJUBICA
+DRAKULIĆ MARA
+DRAKULIĆ MARA
+DRAKULIĆ MILAN
+DRAKULIĆ MILAN
+DRAKULIĆ MILAN
+DRAKULIĆ MILIVOJ
+DRAKULIĆ MIROSLAV
+DRAKULIĆ PREDRAG
+DRAKULIĆ SMILJA
+DRAKULIĆ SOFIJA
+DRAKULIĆ STEVAN
+DRAKULIĆ STOJANKA
+DRAKULIĆ SVETISLAV
+DRAKULIĆ SVETOZAR
+DRAKULIĆ SVETOZAR
+DRAKULIĆ TODOR
+DRAKULIĆ ZORAN
+DRAPŠIN ČAVA
+DRAPŠIN ĐORĐE
+DRAPŠIN DANICA
+DRAPŠIN LEPOSAVA
+DRAPŠIN MILAN
+DRAPŠIN MILENKO
+DRAPŠIN PETAR
+DRAPŠIN PREDRAG
+DRAPŠIN SAVA
+DRAPŠIN ZAGORKA
+DRAPŠIN ZORAN
+DRAPIĆ BOGDAN
+DRAPIĆ SENITA
+DRAPIĆ SLOBODAN
+DRAPIĆ VELIMIR
+DRAPOŠ STEVAN
+DREŠKAI ŠANDOR
+DRECUN VELJKO
+DREHER LAJOŠ
+DREHER NIKOLA
+DREHER OTO
+DREHER VILIM DIPL ING
+DREKOVIĆ ĐURO
+DREKOVIĆ KATICA
+DREKOVIĆ ZORAN
+DREMPETIĆ DARKO
+DREMPETIĆ PETAR
+DREMPETIĆ ZDENKO
+DRENJAKOVIĆ JELICA
+DRENKOVIĆ LASLO
+DRENOVČANIN LJUBOMIR
+DRENOVAC RANKO
+DRENOVEC CVETO
+DRETAR MIRKO
+DREZGA JAKOV
+DREZGA TODOR
+DREZGIĆ DARA
+DREZGIĆ ILIJA
+DREZGIĆ MARIJA
+DREZGIĆ MILAN
+DREZGIĆ RADIVOJ
+DREZGIĆ SVETLANA
+DREZGIĆ VLADIMIR
+DRIGULOV SPASOJE
+DRINČEVIĆ ŽIVOTA
+DRINČEVIĆ DESANKA DR
+DRINČIĆ MELANIJA
+DRINČIĆ MILOJKO
+DRINČIĆ RADMILA
+DRINIĆ ALEKSANDAR
+DRINIĆ BORISLAV
+DRINIĆ JAGODA
+DRINIĆ MILAN
+DRINIĆ MILENKO
+DRINIĆ MILETA
+DRINIĆ MILOVAN
+DRINIĆ MIRKO
+DRINIĆ NEDELJKO
+DRINIĆ PERO
+DRINIĆ RADMILA
+DRINIĆ SAVO
+DRINIĆ SLAVICA
+DRINIĆ STEVO
+DRINIĆ TOMO
+DRINIĆ ZDRAVKO
+DRINJOVSKI ALEKSANDAR
+DRINJOVSKI VOJISLAV
+DRK BARBARA
+DRKUŠIĆ ILIJA
+DRLJAČA ĐORĐE
+DRLJAČA ĐORĐE
+DRLJAČA BRANKA
+DRLJAČA DRAGAN
+DRLJAČA DUŠAN
+DRLJAČA MARKO
+DRLJAČA MIĆA
+DRLJAČA MILANKO
+DRLJAČA MILORAD
+DRLJAČA MIRKO
+DRLJAČA NEĐO
+DRLJAČA NENAD
+DRLJAČA RADOVAN
+DRLJAČA RADOVAN
+DRLJAČA STOJA
+DRLJAČA ZDRAVKA
+DRLJAČIĆ KATA
+DRLJEVIĆ ĐURO
+DRLJEVIĆ ANICA
+DRLJEVIĆ JOVANKA
+DRLJEVIĆ MILETA
+DRLJEVIĆ MILJA
+DRLJEVIĆ MIRJANA
+DRLJIĆ MILADIN
+DRLJIĆ PREDRAG
+DRMANAC MIROSLAV
+DRMANAC STANKO
+DRMANOVIĆ MILEVA
+DRNDAREVIĆ BORA
+DRNDAREVIĆ BORA
+DRNDAREVIĆ KATICA
+DRNDARSKI MILAN
+DRNDARSKI VELIMIR
+DROBAC ŽARKO
+DROBAC ŽARKO
+DROBAC ĐORĐE
+DROBAC ANA
+DROBAC BRANISLAV
+DROBAC LJILJANA
+DROBAC MILAN
+DROBAC MILAN
+DROBAC MILORAD
+DROBAC MIROSLAV
+DROBAC NENAD
+DROBAC NIKOLA
+DROBAC PREDRAG
+DROBAC RADOJKA
+DROBAC RADOJKA
+DROBAC SLAVKO
+DROBAC VLADO
+DROBAC VUKAŠIN NOVINAR
+DROBAC ZDRAVKO
+DROBINA JULIJANA
+DROBINA LJUBICA
+DROBINA MIHALJ
+DROBINJAK RUŽA
+DROBNJAK EVICA
+DROBNJAK LJILJANA
+DROBNJAK MILIVOJE
+DROBNJAK MIODRAG
+DROBNJAK MOMČILO
+DROBNJAK RADIŠA
+DROBNJAK RADOJICA
+DROBNJAK RADOJICA
+DROBNJAKOVIĆ DUŠAN
+DROBNJAKOVIĆ GVOZDEN
+DROBNJAKOVIĆ RISTIVOJE
+DROBNJIK JOSIP
+DROBNJIK JUDIT
+DRONJAK ŽIVANA
+DRONJAK ŽIVKO
+DRONJAK ĐORĐE
+DRONJAK DARINKA
+DRONJAK MILAN
+DRONJAK MIRJANA
+DRONJAK OLGA
+DRONJAK RASTKO
+DRONJAK SAVINKA
+DRONJAK STEVAN
+DROPKA ARPAD
+DROPKA JELENA
+DROPKA NATAŠA
+DROPKA STEVAN
+DROPO MILKA
+DROPO VASA
+DROPO ZORAN
+DROZDIK ILONA
+DROZDIK MARIJA
+DRUŽETIĆ ŽIKA
+DRUGOVIĆ RUŽICA
+DRUGOVIĆ RUŽICA
+DRVENDŽIJA RADOVAN
+DRVENDŽIJA SLAVKO
+DRVENJAK VERICA
+DUČEVIĆ VASILIJE
+DUČIĆ MILAN
+DUČIĆ SLOBODAN
+DUŠANIĆ DRAGAN
+DUŠANIĆ LAZAR
+DUŠANIĆ LJUBICA
+DUŠANIĆ NADA
+DUŠANIĆ NENAD
+DUŠANOVIĆ STANOJE
+DUŠANOVIĆ ZVEZDANA
+DUŠEK ZLATKO DIPL OEC
+DUŠIĆ BRANKO
+DUŠIĆ ZORAN
+DUĆAK ANDRIJA
+DUĆAK ARANKA
+DUĆAK BARBARA
+DUĆAK MIHAJLO
+DUĆAK TOMA
+DUĐAK DRAGUTIN
+DUĐIK FRANJA
+DUBAIĆ BOŽIDAR
+DUBAIĆ MILAN
+DUBAIĆ MIRKO
+DUBAJIĆ ŽARKO
+DUBAJIĆ ĐURA
+DUBAJIĆ ALEKSANDAR
+DUBAJIĆ BILJANA
+DUBAJIĆ DRAGAN
+DUBAJIĆ MILICA
+DUBAJIĆ MILOŠ
+DUBAJIĆ MIRKO
+DUBAJIĆ VIDA
+DUBLJEVIĆ SLOBODAN
+DUBLJEVIĆ STOJAN
+DUBLJEVIĆ VOJISLAV
+DUBLJEVIĆ ZLATA
+DUBNJAKOVIĆ MARTA
+DUBOVSKA MILOTA
+DUBOVSKI JANKO
+DUBOVSKI KATICA
+DUBRAVAC DUŠAN
+DUBROJA DANICA
+DUBROJA SLOBODAN
+DUCANOVIĆ BOŠKO
+DUCIĆ MILAN
+DUDA PAVLE
+DUDAŠ ĐURA
+DUDAŠ ĐURA
+DUDAŠ ĐURA
+DUDAŠ ANA
+DUDAŠ ANTAL
+DUDAŠ ARPAD
+DUDAŠ ARPAD
+DUDAŠ BORIS
+DUDAŠ HELENA
+DUDAŠ JANOŠ
+DUDAŠ JULIJAN
+DUDAŠ LAZAR
+DUDAŠ MARINKO
+DUDAŠ MIHALJ
+DUDAŠ PIROŠKA
+DUDAŠ ROMAN
+DUDAŠ SLAVOMIR
+DUDAK JAROSLAV
+DUDAK MARIJA
+DUDAK STEVAN
+DUDAN MILIVOJ
+DUDAR NIKOLA
+DUDARIN ŽARKO
+DUDARIN DRAGAN
+DUDARIN SAVA
+DUDARIN STEVAN
+DUDARIN STEVAN
+DUDARIN VESELIN
+DUDARIN ZORAN
+DUDARIN ZORAN
+DUDIĆ ANICA
+DUDIĆ KOSTA
+DUDIĆ KOSTA
+DUDIĆ MATE
+DUDIĆ MILA
+DUDIĆ MILE
+DUDIĆ MILOŠ
+DUDIĆ MILOŠ
+DUDIĆ NADA
+DUDIĆ SVETOZAR
+DUDIĆ VASA
+DUDIĆ VASA
+DUDIĆ VERICA
+DUDIĆ ZORAN
+DUDOJEVIĆ NEDŽAD
+DUDOK DANIEL DR
+DUDOK JANKO
+DUDOK PAVEL
+DUDUKOVIĆ ALEKSANDAR
+DUDUKOVIĆ SLOBODAN
+DUDUKOVIĆ STEVAN
+DUDVARSKI BOŽIDAR
+DUDVARSKI DRAGOLJUB
+DUDVARSKI IVAN
+DUDVARSKI PAJA
+DUDVARSKI VELINKA
+DUGAJLIĆ ANĐELKA
+DUGAJLIĆ ARJANA
+DUGAJLIĆ MILOŠ
+DUGAJLIĆ RADOVAN
+DUGALIĆ DRAGAN
+DUGANDŽIJA BRANKO
+DUGANDŽIJA DRAGOMIR
+DUGANDŽIJA DUŠAN
+DUGANDŽIJA NEDELJKO
+DUGIN STOJAN
+DUGOŠIJA ŽIVKO
+DUGOŠIJA-MAKSIMOVIĆ NADA
+DUGONJIĆ MILE
+DUGONJIĆ MILUTIN
+DUGONJIĆ NIKOLA
+DUGONJIĆ SVETOMIR
+DUH KATARINA
+DUHAČEK VLADO
+DUIĆ JOSIP
+DUJAKOVIĆ MILENA
+DUJAKOVIĆ MILICA
+DUJAKOVIĆ NOVA
+DUJAKOVIĆ VELJKO
+DUJEVSKI VANGEL DR
+DUJIĆ ĐORĐE
+DUJIĆ IVAN
+DUJIĆ IVICA
+DUJIĆ LJUBICA
+DUJIĆ SLOBODAN
+DUJIĆ SLOBODAN
+DUJIĆ SLOBODAN
+DUJIĆ SMILJA
+DUJIĆ STOJANKA
+DUJIN ŽIVA
+DUJIN ŽIVKO
+DUJIN DANICA
+DUJIN LUKA
+DUJIN SIMEON
+DUJIN SVETISLAV
+DUJIN TEODOR
+DUJIN VITOMIR
+DUJKIĆ VLADISLAV
+DUJKOVIĆ BRANKO
+DUJKOVIĆ PETAR
+DUJKOVIĆ TEODOR
+DUJKOVIĆ VLADIMIR
+DUJLOVIĆ BORA
+DUJMIĆ ANTE
+DUJMOVIĆ ELIZABETA
+DUJMOVIĆ EVA
+DUJMOVIĆ FERENC
+DUJMOVIĆ JOSIP
+DUJOVIĆ ILIJA
+DUJOVIĆ RADMILA
+DUJOVIĆ RADMILA
+DUKA MIROSLAV
+DUKAI ANDRAŠ
+DUKAN NATAŠA
+DUKARIĆ VIDA
+DUKES FOSKA
+DUKIĆ ĐURO
+DUKIĆ BORA
+DUKIĆ DANILO
+DUKIĆ DRAGAN
+DUKIĆ DRAGICA
+DUKIĆ DUŠAN
+DUKIĆ IVANKA
+DUKIĆ JELENA
+DUKIĆ JOVAN
+DUKIĆ JOVAN
+DUKIĆ KOSA
+DUKIĆ LJUBICA
+DUKIĆ MILAN
+DUKIĆ MILAN
+DUKIĆ MILAN
+DUKIĆ MILICA
+DUKIĆ MILICA
+DUKIĆ MIRJANA
+DUKIĆ PREDRAG
+DUKIĆ RADE
+DUKIĆ RADE
+DUKIĆ RAJKO
+DUKIĆ SLAVICA
+DUKIĆ SOFIJA
+DUKIĆ STEVO DIPL ING
+DUKIĆ VUKAŠIN DR
+DUKIĆ ZORAN
+DUKOVA LILI
+DUKOVSKI SVETISLAV
+DULEJAN ŽIVADINKA
+DULEJAN SLAVKO
+DULIĆ ŠANDOR
+DULIĆ ANKA
+DULIĆ IVAN
+DULIĆ JOSIP
+DULIĆ JOSIP
+DULIĆ LJUDEVIT
+DULIĆ MAGDA
+DULIĆ MIHAJLO
+DULIĆ MIROSLAV
+DULIĆ NIKOLA
+DULOVIĆ ANĐELKO
+DULOVIĆ BOGDAN
+DULOVIĆ BRANKO
+DULOVIĆ DUŠAN
+DULOVIĆ MILOVAN
+DULOVIĆ MILUN
+DULOVIĆ RADOVAN
+DULOVIĆ RANKO
+DULOVIĆ RATKA
+DULOVIĆ ZORAN
+DUMA MILORAD
+DUMANČIĆ SLAVICA
+DUMANČIĆ ZDRAVKO
+DUMANOVIĆ MLADEN
+DUMEDAŠ SPASOJE
+DUMEDAŠ VASILIJE
+DUMENČIĆ IVAN
+DUMIĆ SLAVICA
+DUMIĆ STEVAN DIPL ING
+DUMITROV ALEKSANDAR
+DUMITROV DIMITRIJE
+DUMITROV LUKA
+DUMITROV MARIJA
+DUMITROV MIODRAG
+DUMITROV NEDELJKO
+DUMITROV SLAVKO
+DUMITROV VERICA
+DUMITROV VOJIN
+DUMNIĆ ŠARIKA
+DUMNIĆ MILAN
+DUMONIĆ BRANKO
+DUMONIĆ PETAR
+DUNĐER RADE
+DUNĐER RADE
+DUNĐERIN ĐORĐE
+DUNĐEROV KOSANA
+DUNĐEROV NADA
+DUNĐEROV PIROŠKA
+DUNĐEROVIĆ RADOVAN
+DUNĐERSKI ŽIVAN
+DUNĐERSKI ĐORĐE
+DUNĐERSKI ĐORĐE
+DUNĐERSKI ALEKSANDAR
+DUNĐERSKI ANA
+DUNĐERSKI CVETANA
+DUNĐERSKI DRAGAN
+DUNĐERSKI IVANKA
+DUNĐERSKI IVAN
+DUNĐERSKI JOVAN
+DUNĐERSKI MARIJA
+DUNĐERSKI MILAN
+DUNĐERSKI MIRJANA
+DUNĐERSKI NOVAK
+DUNĐERSKI SIMA
+DUNĐERSKI SOFIJA
+DUNĐERSKI STANISLAV
+DUNĐERSKI TIHOMIR
+DUNĐERSKI TRIVA
+DUNĐERSKI ZDRAVKO
+DUNDIĆ HARALAMPIJE
+DUNDIĆ JELENA
+DUNDIĆ SLAVKO
+DUNDOVIĆ STJEPAN
+DUNIĆ DRAGIĆ
+DUNJIĆ STOJAN
+DUNOVIĆ MILKA
+DUNOVIĆ NATAŠA
+DUPAK IMRE
+DUPAK MARIJA
+DUPALO SLAVKA
+DUPOR GORDANA
+DUPOR MILOŠ
+DUPOR MIRKO
+DUPOR ZORICA
+DURAČKOVIĆ BAHRIJA
+DURAČKOVIĆ SENIJA
+DURAKOVIĆ ĐURO
+DURAKOVIĆ DRAGAN
+DURAKOVIĆ GOJKO
+DURAKOVIĆ GOJKO
+DURAN BRANKO
+DURANOVIĆ VLADIMIR
+DURGUTOVIĆ RIFAD
+DURKALIĆ VIKTOR
+DURKOVIĆ MILORAD
+DURKOVIĆ VLAJKO
+DURKULIĆ ALEKSANDAR
+DURKULIĆ SPASOJE
+DURLEVIĆ MILICA
+DURMAN DRAGOLJUB
+DURMAN GOJKO
+DURMAN NADA
+DURMAN RASTISLAV
+DUROŠKA ŠANDOR
+DUROŠKA IVANKA
+DUROŠKA JELENA
+DUROŠKA MIHAJLO
+DUROŠKI JULIJANA
+DURUŠKA PAL
+DURUTOVIĆ DRAGAN
+DURUTOVIĆ RADOVAN
+DURUTOVIĆ SENKA
+DUSIĆ GOSPAVA
+DUSPARA MILENA
+DUSPER ŠIMO
+DUTINA ANDRIJA
+DUTINA BRANISLAV
+DUTINA BRATOLJUB
+DUTINA DRAGAN
+DUTINA IRENA
+DUTINA MIOMIR
+DUTINA SLOBODAN
+DUTINA VLADIMIR
+DUVNJAK DIVNA
+DUVNJAK DIVNA
+DUVNJAK IVICA
+DUVNJAK KOSTA
+DUVNJAK LAZAR
+DUVNJAK LAZAR
+DUVNJAK MARA
+DUVNJAK MILENKO
+DUVNJAK MILORAD
+DUVNJAK NENAD
+DUVNJAK RADOJKA
+DUVNJAK STANA
+DVORAČKO ŠANDOR
+DVORNIĆ MIRJANA
+EŠKI ERŽEBET
+EŠKIČEVIĆ VASA
+EĆIM RADOVAN
+EĆIMOVIĆ GOJKO
+EĆIMOVIĆ NIKOLA
+EĆIMOVIĆ VESELIN
+EĐEDI JOŽEF
+EĐEDI JULIJANA
+EBENHE-JOVANOVIĆ JASNA DR
+EBENHE NIKOLA
+EBERHARD-MARKOVIĆ MIRJANA
+EBERHART PETAR
+EBERST-SEDLAČEK GABRIELA
+ECET JOVAN
+ECET JOVAN
+ECET KATALIN
+ECET PAL
+EDELENJI MARIJA
+EDELINSKI EUGEN
+EDELINSKI JOAKIM
+EDELINSKI LJUBICA
+EDELINSKI VERA
+EDELINSKI VERA
+EFTEMIJU NIKOLA
+EGELJA MILICA
+EGELJA NEBOJŠA
+EGERIĆ MIROSLAV DR
+EGIĆ ČEDMILA
+EGIĆ ĐOKA
+EGIĆ BRACO
+EGIĆ BRANISLAV
+EGIĆ CVETANKA
+EGIĆ DRAGAN
+EGIĆ MANE
+EGIĆ MARIJAN
+EGIĆ MICA
+EGIĆ MILAN
+EGIĆ MILAN
+EGIĆ OLGA
+EJIĆ MILAN
+EKEŠ ALEKSANDAR
+EKHARDT LJUBICA
+EKLIĆ MARJAN
+EKMEŠČIĆ MILISAV
+EKMEDŽIĆ ANKA
+EKMEDŽIĆ NIKOLA
+EKRES ĐORĐE
+EKRES ANDRIJA
+EKRES JANOŠ
+EKRES JULIJANA
+EKRES MILKA
+EKRES NANDOR
+EKRES OTO
+EKRES-RAKIĆ VERICA
+EKRES ROZALIJA
+EKRES VALERIJA
+ELEK EVA
+ELERO ZVEZDANA
+ELESIN BRANISLAV
+ELESIN BRANKA
+ELESIN DRAGA
+ELESIN DRAGOLJUB
+ELESIN DUŠANKA
+ELESIN GRADIMIR
+ELESIN MIROSLAV
+ELESIN SAVA
+ELESIN SINIŠA
+ELESIN VLADIMIR
+ELEZ ĐOKA
+ELEZ GORAN
+ELEZOVIĆ NIKOLA
+ELEZOVIĆ PETAR
+ELHART LAZAR
+ELHART LAZAR
+ELIAS IRENA
+ELIJAŠ JAN
+ELIZEK ŽUŽANA
+ELIZEK IVAN
+ELOR IŠTVAN
+ELOR JANOŠ
+ELOR LJUBICA
+ELOR PAVLE
+ELOR ZORICA
+ELTER JANOŠ
+ELTER ZOLTAN
+EMER JAKOV
+EMER MARKO
+EMINI BAJRAM
+EMINI GANI
+EMINI ROZALIJA
+ENAHOLO NADA
+ENGELMAN KATICA
+ENGERT MIHAJLO
+ENGLER LAJOŠ
+EPIFANIĆ CVETANA
+EPIFANIĆ DUŠKO
+ERČI-VARGA MARIŠKA
+ERČIĆ BOJANA
+ERČIĆ MILORAD
+ERČIĆ RADOVAN
+ERŠTE ŽELJKO
+ERAK BORO
+ERAK DUŠAN
+ERAK ILIJA
+ERAK LAZAR
+ERAK MARKO
+ERAKOVIĆ BOGDAN
+ERAKOVIĆ DANILO
+ERAKOVIĆ DRAGICA
+ERAKOVIĆ KRISTIVOJ
+ERAKOVIĆ LJUBIŠA
+ERAKOVIĆ LJUBOJE
+ERAKOVIĆ MILORAD
+ERAKOVIĆ MITAR
+ERAKOVIĆ RADE
+ERAKOVIĆ RAJKO
+ERAKOVIĆ SRETEN
+ERBEŠ ERŽEBET
+ERBEŽNIK SONJA
+ERBES BRANKA
+ERBES MARGITA
+ERBEZ BLAŽO
+ERBEZ ERŽEBET
+ERCEG ŠPIRO
+ERCEG ŽARKO
+ERCEG ŽIVKO
+ERCEG DARA
+ERCEG LJILJANA
+ERCEG MIKA
+ERCEG RADOVAN
+ERCEG RAJKO
+ERCEG RAJKO
+ERCEG SLOBODAN
+ERCEG STANA
+ERCEG ZDENKO
+ERCEG ZDRAVKO
+ERCEGAN GORAN
+ERCEGAN MITA
+ERCEGOVČEVIĆ ŽIVODAR
+ERCEGOVČEVIĆ DOSTA
+ERCEGOVAC ANĐELKO
+ERCEGOVAC BRATISLAV
+ERCEGOVAC MIODRAG
+ERCEGOVAC MITAR
+ERCEGOVAC NADA
+ERCEGOVAC SAVA
+ERCEGOVAC SLOBODAN
+ERCEGOVAC STEVAN
+ERCEGOVAC TOMISLAV
+ERCEGOVIĆ DANICA
+ERDEŠ DANIEL
+ERDEŠ EMIL
+ERDEŠ ESTER
+ERDEŠ ETELKA
+ERDEŠ ILONA
+ERDEŠ IVAN
+ERDEŠ JULIJANA
+ERDEŠ KLARA
+ERDEŠ LASLO
+ERDEŠ PAL
+ERDEŠ PETAR
+ERDEŠI LASLO
+ERDEŠI VALERIJA
+ERDEG ARANKA
+ERDEG ILONA
+ERDEG JANOŠ
+ERDEG JUSTINA
+ERDEG TOMISLAV
+ERDEI ŠANDOR
+ERDEI JOSIP
+ERDEI JOVAN
+ERDEI MIHAJLO
+ERDEI PETAR
+ERDEI ZOLTAN
+ERDELJ BRANKO
+ERDELJ EMIL
+ERDELJ GORAN
+ERDELJ LUDMILA
+ERDELJ MILUTIN
+ERDELJAN ŽIVKO
+ERDELJAN ALEKSANDAR
+ERDELJAN ALKSANDAR
+ERDELJAN BISERKA
+ERDELJAN BOŠKO
+ERDELJAN-BOGDANOV SLAVICA
+ERDELJAN DANILO
+ERDELJAN DOBRIVOJ
+ERDELJAN DUŠANKA
+ERDELJAN DUŠAN
+ERDELJAN DUŠAN
+ERDELJAN DUŠAN
+ERDELJAN DUŠAN
+ERDELJAN JELENA
+ERDELJAN KATICA
+ERDELJAN LJUBICA
+ERDELJAN LJUBOMIR
+ERDELJAN MILADIN
+ERDELJAN MILAN DIPL ING
+ERDELJAN MILAN
+ERDELJAN MILENKO
+ERDELJAN MILIVOJ
+ERDELJAN MILORAD
+ERDELJAN MILORAD
+ERDELJAN MILOVAN
+ERDELJAN MIRJANA
+ERDELJAN NADEŽDA
+ERDELJAN NIKOLA
+ERDELJAN PREDRAG
+ERDELJAN RADIVOJ
+ERDELJAN SLAVKA
+ERDELJAN SLAVKA
+ERDELJAN SLOBODAN DIPL ING
+ERDELJAN SREDOJE
+ERDELJAN STEVAN
+ERDELJAN SVETISLAV
+ERDELJAN TIHOMIR
+ERDELJAN VERICA
+ERDELJAN VUKICA
+ERDELJAN ZLATKO
+ERDELJAN ZORA
+ERDELJANIN ANĐELKO
+ERDELJI ĐERĐ
+ERDELJI ANTAL
+ERDELJI BELA
+ERDELJI BISERKA
+ERDELJI BORBALA
+ERDELJI DEŽE
+ERDELJI DRAGICA
+ERDELJI FRANJA
+ERDELJI GAŠPAR
+ERDELJI IŠTVAN
+ERDELJI JENE
+ERDELJI JOŽEF
+ERDELJI KAROLJ
+ERDELJI LAJOŠ
+ERDELJI LASLO DIPL ING
+ERDELJI MATILDA
+ERDELJI SOFRONA
+ERDELJI STEVAN
+ERDELJI TIBOR
+ERDEVIK MARA
+ERDEVIK MARIJA
+ERDEVIK SLOBODAN
+ERDEVIK VOJISLAV
+ERDEVIK VUKICA
+ERDEVIK ZDRAVKO
+EREŠ ŠANDOR
+EREŠ LASLO
+EREĐIN VUKAŠIN
+EREG LAJOŠ
+EREMIĆ JELICA
+EREMIĆ JOVAN
+EREMIĆ NINOSLAV
+EREMIĆ RADOVAN
+EREMIĆ SAVA
+EREMIĆ SLAVICA
+EREMIĆ STANISLAVA
+EREMIĆ TIHOMIR DR LEKAR
+EREMIĆ VESELINKA
+EREMIJA MILAN
+EREMIJA STANKO
+EREMIN NIKOLA
+ERENTA LJUBICA
+ERG OLGA
+ERGELAŠEV DUBRAVKA
+ERGELAŠEV IVAN
+ERGELAŠEV JOVAN
+ERGELAŠEV MILAN
+ERGELAŠEV MILOŠ
+ERGELAŠEV MOMČILO
+ERGELAŠEV NESTOR
+ERGELAŠEV SMILJKA
+ERGELAŠEV TIHOMIR
+ERGELAŠEV ZORKA
+ERHARTIČ ANA
+ERHARTIČ RUDOLF
+ERI ILONA
+ERI JANOŠ
+ERI JOVAN
+ERIĆ ĐULINKA
+ERIĆ BOŽIN
+ERIĆ LJILJANA
+ERIĆ MARKO
+ERIĆ MILOMIR
+ERIĆ NEBOJŠA
+ERIĆ PERO
+ERIĆ SNEŽANA
+ERIĆ SVETOMIR
+ERIĆ ZORICA
+ERKIĆ ĐORĐE
+ERKIĆ PETAR
+ERLAUER IVAN
+ERLAUER JOSIP
+ERLER VERONA
+ERNEST FRANJA
+EROR JOVAN
+EROR PETAR
+EROR STEVAN
+ERSKI PETAR
+ERSKI-PETKOVIĆ SONJA
+ERTL FERENC
+ERTL HEDVIGA
+ERTL LASLO
+ERTL VLASTA
+ES KLARA
+ESE ŠANDOR
+ESKIĆ SVETOZAR
+ESTER JOSIP
+ESTER MARIJA DR
+ESTER MARTA
+ETŠBERGER JAKOB
+ETER OTO
+ETEROVIĆ VERA
+ETINSKI ŽIVAN
+ETINSKI ŽIVOJIN
+ETINSKI ĐORĐE
+ETINSKI DRAGIĆ
+ETINSKI DRAGIĆ
+ETINSKI JOVAN
+ETINSKI LJUBIŠA
+ETINSKI MIHAJLO
+ETINSKI MILOŠ
+ETINSKI MILORAD
+ETINSKI MILORAD
+ETINSKI MILOVAN
+ETINSKI NADA
+ETINSKI PETAR
+ETINSKI RADOVAN
+ETINSKI SLOBODANKA
+ETINSKI VELJKO
+ETINSKI VERA
+ETINSKI VERICA
+ETORE ĐINA
+EVĐIĆ STANKA
+EVETOVIĆ BLAŠKO
+EVETOVIĆ JOSIP
+EVETOVIĆ JOVAN
+EVETOVIĆ JOVAN
+EVIĆ ALEKSANDAR
+EVIĆ DRAGICA
+EVIĆ JELISAVETA
+EVIĆ JOVAN
+EVIĆ LAZAR
+EVIĆ LAZAR
+EVIĆ PETAR
+EVIĆ SAVA
+FA MELANIJA
+FA MILKA
+FAČAR STEVAN
+FAČKO JOŽEF
+FAČKO SIMA
+FABIAN BORBALA
+FABIAN IŠTVAN
+FABIAN JANOŠ
+FABIJAN ŠANDOR
+FABIJAN ANA
+FABIJAN ILONA
+FABIJAN IMRE
+FABIJAN IVAN
+FABIJAN JANOŠ
+FABIJAN LASLO
+FABIJAN NIKOLA
+FABIJAN STEVAN
+FABIJAN STEVAN
+FABIJANČIĆ IVAN
+FABIJANČIĆ STJEPAN
+FABIJANIĆ MARIJA
+FABIJANOVIĆ ANA
+FABRI MIKLOŠ
+FABRI NANDOR
+FABRI STJEPAN
+FABRI ZVONKO
+FABRIK KATALIN
+FACIS PANTA
+FAIN ANA
+FAIN LAJOŠ
+FAIN STEVAN
+FAJ GABOR
+FAJDETIĆ LJUBICA
+FAJDIGA ALEKSANDAR
+FAJFER PETAR
+FAJGELJ IVAN
+FAJHNER HENRIK
+FAJHTNER JOSIP
+FAJHTNER RUŽA
+FAJIN IŠTVAN
+FAJKA DANICA
+FAJKA NADA
+FAJKA PAVLE
+FAJNIK MARIJA
+FAJT-GRANER ROŽA
+FAJT JELICA
+FAJTNER VERONIKA
+FAKIN FRANJA
+FAKIN IVAN
+FAKIN ZVONIMIR
+FALB ĐORĐE
+FALB BOSILJKA
+FALB JOSIP
+FALB KAROLJ
+FALB KAROLJ
+FALB MARINA
+FALB MATIJA
+FALB OTO
+FALB ZOLTAN
+FAMILIĆ ĐORĐE
+FAMILIĆ IVAN
+FANČEVIĆ ALEKSANDAR
+FANČEVIĆ JOSIP
+FANČEVIĆ KATALIN
+FANČEVIĆ LJUDEVIT
+FANČEVIĆ TEREZIJA
+FANKA DUŠAN
+FANKA MARA
+FARAGO ŠANDOR
+FARAGO ŠANDOR
+FARAGO ARANKA
+FARAGO ARPAD
+FARAGO FRANJA
+FARAGO JOŽEF
+FARAGO JOSIP
+FARAGO KARLO
+FARAGO LASLO
+FARAGO MARIJA
+FARK AMALIJA
+FARK BEATA
+FARKAŠ ALEKSANDAR
+FARKAŠ ALEKSANDAR
+FARKAŠ BOŽENA
+FARKAŠ DRAGUTIN
+FARKAŠ ELEMER
+FARKAŠ ELIZABETA
+FARKAŠ ELZA
+FARKAŠ ESTER
+FARKAŠ ESTER
+FARKAŠ FERENC
+FARKAŠ FERENC
+FARKAŠ FERENC
+FARKAŠ FERENC
+FARKAŠ FRANJA
+FARKAŠ GABOR
+FARKAŠ IŠTVAN
+FARKAŠ IŠTVAN
+FARKAŠ ILONA
+FARKAŠ ILONKA
+FARKAŠ IMRE
+FARKAŠ JAN
+FARKAŠ JAROSLAV
+FARKAŠ JELISAVETA
+FARKAŠ JOŽEF
+FARKAŠ JOŽEF
+FARKAŠ JOŽEF
+FARKAŠ JOŽEF
+FARKAŠ JOSIP
+FARKAŠ JOSIP
+FARKAŠ JOVAN
+FARKAŠ JOVGEN
+FARKAŠ JUDITA
+FARKAŠ KARLO
+FARKAŠ KATALIN
+FARKAŠ KLARA
+FARKAŠ LADISLAV
+FARKAŠ LAJOŠ
+FARKAŠ LASLO
+FARKAŠ MARIJA
+FARKAŠ MATILDA
+FARKAŠ MIHALJ
+FARKAŠ NADA
+FARKAŠ PAL
+FARKAŠ PAVLE
+FARKAŠ ROZALIJA
+FARKAŠ STEVAN
+FARKAŠ-TOT VIKTORIJA
+FARKAŠ VERA
+FARKAŠ VERICA
+FARKIĆ MILAN
+FARKOV JOVANKA
+FAT JOSIP
+FAT LASLO
+FAT MIHAL
+FATIĆ MARA
+FATUROVIĆ RAJKO
+FAUKOVIĆ NADA
+FAZEKAŠ ANTAL
+FAZEKAŠ JANOŠ
+FAZEKAŠ KATALIN
+FAZEKAŠ TIBOR
+FAZLIĆ JELICA
+FAZLIĆ JOVANKA
+FAZLINOVIĆ ELBISA
+FAZLINOVIĆ JASMINKA
+FEŠIŠ IMRE
+FEŠIŠ JOŽEF
+FEŠIŠ JOŽEF
+FECE IVAN
+FECE MARIJA
+FEDERER JOVAN
+FEDERER MIRKO
+FEDI JOŽEF
+FEHER ŠANDOR
+FEHER ŠANDOR
+FEHER ĐERĐ
+FEHER ĐULA
+FEHER ĐULA
+FEHER ANDRAŠ
+FEHER ARISTID
+FEHER ERNE
+FEHER ERNE
+FEHER FERENC
+FEHER JANOŠ
+FEHER JANOŠ
+FEHER JANOŠ
+FEHER JOŽEF
+FEHER JOŽEF
+FEHER JOVAN
+FEHER JOVAN
+FEHER JULIJA
+FEHER KALMAN
+FEHER LAJOŠ
+FEHER LASLO
+FEHER LASLO
+FEHER MARGITA
+FEHER MARIJA
+FEHER MIHAJLO
+FEHER NANDOR
+FEHER STEVAN
+FEHER STEVAN
+FEHER TEREZA
+FEHER VERA
+FEHERVARI JELISAVETA
+FEHIR ALEKSANDAR
+FEHIR PETAR
+FEHIROV AVRAM
+FEHIROV KOSANA
+FEHIROV MIRJANA
+FEJĐI VLADIMIR
+FEJDETIĆ TOMISLAV
+FEJEŠ ŠANDOR
+FEJEŠ ĐORĐE
+FEJEŠ ARANKA
+FEJEŠ GENA
+FEJEŠ IŠTVAN
+FEJEŠ IŠTVAN
+FEJEŠ JANOŠ
+FEJEŠ JANOŠ
+FEJEŠ LJILJANA
+FEJEŠ ZOLTAN
+FEJEŠ ZOLTAN
+FEJFAR JULIJANA
+FEJSA GEORGIJE
+FEJSA JANKO MR PH
+FEJSA MARGITA
+FEJSA-POPOVIĆ LEONA
+FEJSTHAMEL PAL
+FEJZULAHI FEJZULAH
+FEKETE ŠANDOR
+FEKETE ŠANDOR
+FEKETE ŽUŽANA
+FEKETE ADOLF
+FEKETE FERENC
+FEKETE FERENC
+FEKETE JAGODA
+FEKETE KARLO
+FEKETE KATICA
+FEKETE LASLO
+FEKETE MARIJA
+FEKETE MARIJA
+FEKETE MARIJA
+FEKETE MIHAJLO
+FEKETE MIHALJ
+FEKETE PETAR
+FEKETE STEVAN
+FEKETE VESNA
+FEKIĆ VLADIMIR
+FELBAB RADA
+FELBAB SAVA
+FELBAB STANIMIR
+FELBABOV DIMITRIJE
+FELBABOV JOVAN
+FELBABOV VLADISLAVA
+FELBAP JULKA
+FELBAP NIKOLA
+FELBAPOV DIMITRIJE
+FELBAPOV MILANKA
+FELBAPOV MILORAD
+FELBAPOV NEMANJA
+FELBAPOV RADMILA
+FELBAPOV RADOSLAV
+FELBAPOV STEVAN
+FELDŠER ANA
+FELDŠER KARLO
+FELDEŠDI ANDRIJA
+FELDEŠI FRANJA
+FELDEŠI IBOLJA DR
+FELDEŠI MARIJA
+FELDEŽDI JULIJANA
+FELDEŽDI LASLO
+FELDEŽDI PETAR
+FELDEŽDI STEVAN
+FELDEAK DANICA
+FELDEAK JOŽEF
+FELDI ŠANDOR
+FELDI ERŽEBET
+FELDI JAROSLAV
+FELDVARI JOSIP
+FELDVARI JOVAN
+FELDVARI JUSTINA
+FELDVARI KALMAN
+FELDVARI OLGICA
+FELDVARI STEVAN
+FELDVEBEL ROZALIJA
+FELE DRAŽEN LEKAR
+FELEĆ IZET
+FELEGI ANA
+FELEGI LADISLAV
+FELJA MIRJANA
+FELNER DUŠANKA
+FELNER TIBOR
+FEMIĆ ALEKSIJE
+FEMIĆ BLAGOJE
+FEMIĆ GRUJICA
+FEMIĆ MILIJA
+FEMIĆ MILOVAN
+FEMIĆ PETKO
+FEMIĆ RADMILA
+FEMIĆ STANKA
+FEMIĆ VELJKO
+FEMIĆ ZORA
+FENC RUŽICA
+FENDLER JOVAN
+FENDRIK ANDRIJA
+FENDRIK FRANJO
+FENDRIK KARLO
+FENJAC IVAN
+FENJAC JOVAN
+FENJAC SINIŠA
+FENJAC SLOBODANKA
+FENJEŠ ANA
+FENJEŠ FRANJA
+FENJVEŠI MARIŠKA
+FERČIK ANDRIJA
+FERARINOV PAVLE
+FERARIO SILVIO
+FERATI AFIZ
+FERATI BERO
+FERATI EHAT
+FERATI RAGIP
+FERATI SEJFIDIN
+FERATI SKENDER
+FERENČAK IVICA
+FERENČEK LJUBICA
+FERENČEK OLIVER DIPL ING
+FERENČEK VILKO
+FERENČEV MILORAD
+FERENČEV ZORA
+FERENČEVIĆ ĐORĐE
+FERENČEVIĆ-SALAJ JELENA
+FERENAC ANDRIJA
+FERENAC ANDRIJA
+FERENAC IVAN
+FERENAC RADMILA
+FERENC ANTAL
+FERENC JOŽEF
+FERENC JOŽEF
+FERENCI ĐERĐ
+FERENCI DEZIDER
+FERENCI EUGEN
+FERENCI FRANJA
+FERENCI JULIJANA
+FERENCI STEVAN
+FERENCI VERA
+FERIK JURAJ
+FERIK JURAJ
+FERIZOVIĆ AHMET
+FERKO ANDREJ DR LEKAR
+FERKO MILOŠ
+FERKO PAVEL
+FERKO PAVLE
+FERLAN RADMILA
+FETAHI BAJRAM
+FETAHOVIĆ ISMET
+FETAI ZIBER
+FIČOK ALOJZIJE
+FIŠAKOV KONSTADIN
+FIŠANG LJILJANA
+FIŠER ĐORĐE DR LEKAR
+FIŠER ĐORĐE
+FIŠER ALEKSANDAR DR
+FIŠER ALEKSANDAR
+FIŠER ANTON
+FIŠER BLANKA
+FIŠER DRAGUTIN
+FIŠER GAVRA
+FIŠER IRENA
+FIŠER IRENA
+FIŠER JENE
+FIŠER JOSIP
+FIŠER KAROLJ
+FIŠER LASLO
+FIŠER LEO DR
+FIŠER NATALIJA
+FIŠER PIROŠKA
+FIŠER STEVAN
+FIŠER ZVONIMIR
+FIŠL FEDOR
+FIŠL JULIJA DIPL ING
+FIŠTEŠ IMRE
+FIŠTEŠ MARIJA
+FIŠTEŠ MIHALJ
+FIŠTEŠ PIROŠKA
+FIALA IVANKA
+FIALA IVAN
+FIBIŠAN ĐURAĐ
+FIBIŠAN SLAVOLJUB
+FICE ERŽEBET
+FICINGER VALERIJA
+FIDUŠEK KATICA
+FIFA DRAGICA
+FIFA NEBI
+FIGURA ŠANDOR
+FIJATOVIĆ OLGA
+FIJUKOVIĆ SADETA
+FIJULJANIN ZULFO
+FILEKI MIROSLAV
+FILEKOVIĆ SEID
+FILEP ĐERĐ
+FILEP ĐORĐE
+FILEP ĐORĐE
+FILEP ANTAL
+FILEP BELA
+FILEP IDA
+FILEP JENE
+FILEP JOŽEF
+FILEP KALMAN
+FILEP KALMAN
+FILEP LADISLAV
+FILEP MIRJANA
+FILEP ZOLTAN
+FILEPI MIROSLAV
+FILIMONOVIĆ ŽIVORAD
+FILIMONOVIĆ ĐORĐE
+FILIP JOVAN DR PRAVNIK
+FILIP RADOSAV
+FILIPČEV ZDRAVKO
+FILIPAŠ DRAGAN
+FILIPAŠEV NADA
+FILIPEC ZITA
+FILIPENDIN MARKO
+FILIPOV ILIJA
+FILIPOV MILOŠ
+FILIPOV MIODRAG
+FILIPOV MOMIR
+FILIPOV NIKOLA
+FILIPOV PREDRAG
+FILIPOV RADOVAN
+FILIPOV SLAĐANA
+FILIPOV TIHOMIR
+FILIPOV TIJANA
+FILIPOVIĆ ČEDO
+FILIPOVIĆ ALEKSANDAR
+FILIPOVIĆ ANTON
+FILIPOVIĆ BOŠKO
+FILIPOVIĆ BOGOMIR
+FILIPOVIĆ BORA
+FILIPOVIĆ BRANKO
+FILIPOVIĆ-DAMJANOV NADA
+FILIPOVIĆ DESANKA
+FILIPOVIĆ DIJANA
+FILIPOVIĆ DOBRICA
+FILIPOVIĆ DOBRILA
+FILIPOVIĆ DRAGAN
+FILIPOVIĆ DRAGAN
+FILIPOVIĆ DUŠANKA
+FILIPOVIĆ DUŠANKA
+FILIPOVIĆ GORDANA
+FILIPOVIĆ IVAN
+FILIPOVIĆ IVAN
+FILIPOVIĆ JELISAVETA
+FILIPOVIĆ JOVAN
+FILIPOVIĆ JOVAN
+FILIPOVIĆ LEPOSAVA
+FILIPOVIĆ LJILJANA
+FILIPOVIĆ LJUBICA
+FILIPOVIĆ LJUBINKA
+FILIPOVIĆ LJUBINKO
+FILIPOVIĆ MILADIN
+FILIPOVIĆ MILADIN
+FILIPOVIĆ MILAN DIPL ING
+FILIPOVIĆ MILANKA
+FILIPOVIĆ MILANKA
+FILIPOVIĆ MILAN
+FILIPOVIĆ MILAN
+FILIPOVIĆ MILAN
+FILIPOVIĆ MILENA
+FILIPOVIĆ MILENKO
+FILIPOVIĆ MILIVOJE
+FILIPOVIĆ MILKA
+FILIPOVIĆ MILOJKO
+FILIPOVIĆ MILOVAN
+FILIPOVIĆ MIODRAG
+FILIPOVIĆ MIODRAG
+FILIPOVIĆ MIRJANA
+FILIPOVIĆ MIRKO
+FILIPOVIĆ MIROSLAV
+FILIPOVIĆ NATAŠA
+FILIPOVIĆ NIKOLA
+FILIPOVIĆ NIKOLA
+FILIPOVIĆ NIKOLA
+FILIPOVIĆ NIKOLA
+FILIPOVIĆ NIKOLINA
+FILIPOVIĆ PAULA
+FILIPOVIĆ PERO
+FILIPOVIĆ RADIVOJ
+FILIPOVIĆ RADOJKA
+FILIPOVIĆ RADOJKO
+FILIPOVIĆ RADOSLAV
+FILIPOVIĆ RADOVAN
+FILIPOVIĆ RANKA
+FILIPOVIĆ RUŽANA
+FILIPOVIĆ RUDOLF
+FILIPOVIĆ SAVA DIPL ING
+FILIPOVIĆ SAVA
+FILIPOVIĆ SIBIN
+FILIPOVIĆ SLAVKO
+FILIPOVIĆ SNEŽANA
+FILIPOVIĆ SPASOJE
+FILIPOVIĆ SRĐAN
+FILIPOVIĆ SREĆKO
+FILIPOVIĆ STEVAN DR STOMATOLOG
+FILIPOVIĆ STOJAN
+FILIPOVIĆ STOJAN
+FILIPOVIĆ TOMISLAV
+FILIPOVIĆ VESNA
+FILIPOVIĆ VIDOSAV
+FILIPOVIĆ VLADIMIR
+FILIPOVIĆ ZORAN
+FILIPOVIĆ ZORAN
+FILIPOVIĆ ZORAN
+FILIPOVIĆ ZORAN
+FILIPOVIĆ ZORICA
+FILIPOVSKA-OBRADOVIĆ VERA
+FILIPOVSKI BOŽO
+FILIPOVSKI TODOS
+FILKO DRAGICA
+FILKO JOSIP
+FILKO JOVAN
+FILKO MARIJA
+FILKO MIHALJ
+FILKO MIHALJ
+FILKO PAVEL
+FILKO TIHOMIR
+FINČUR ALEKSANDAR
+FINČUR JOŽEF
+FINČUR JULIJANA
+FINČUR LADISLAV
+FINDŽANOVIĆ GOJKO
+FINDŽANOVIĆ MIKO
+FINDŽANOVIĆ MIRKO
+FINDŽANOVIĆ OBRAD
+FINK-DIMITRIJEVIĆ DOROTEA
+FINK VIKTOR NOVINAR
+FINKA GORČAN
+FIR BEATA
+FIRANJ JOŽEF
+FIRANJI ĐERĐ
+FIRANJI ĐORĐE
+FIRANJI ĐORĐE
+FIRANJI ERŽEBET
+FIRANJI JOVAN
+FIRANJI VIKTOR
+FIRIĆ MARIJA
+FIRULOVIĆ KOSTANTIN
+FISTRIĆ ĐORĐE
+FISTRIĆ MIRJANA
+FIVEŠI GABOR
+FIVEŠI TIBOR
+FLAC IVANKA
+FLAC PETAR
+FLAJS JELISAVETA
+FLEGER STEVAN
+FLEGO IVAN
+FLEGO MARTA
+FLEKAČ VLADO
+FLITNER OSKAR
+FLOKA ĐENIKA
+FLORA VASA
+FLORIĆ DIMITRIJE
+FLORIĆ LJUBICA
+FLORIĆ ZORAN
+FLORIĆ ZORAN
+FLORIN VINKA
+FODOR ŽOFIJA
+FODOR ANA
+FODOR ANDRIJA
+FODOR ERŽEBET
+FODOR FERENC
+FODOR FRANJA
+FODOR FRANJA
+FODOR JOLAN
+FODOR JOVAN
+FODOR JOVAN
+FODOR KALMAN
+FODOR KATA
+FODOR LAJOŠ
+FODOR LASLO
+FODOR LASLO
+FODOR LASLO
+FODOR LASLO
+FODOR LIDIJA
+FODOR MARTA
+FODOR OSKAR DIPL OEC
+FODOR TIBOR
+FODOR TIBOR
+FODOR TIBOR
+FODOR ZDRAVKO
+FODORA JANKO
+FOGARAŠI ĐERĐ DR
+FOGARAŠI ĐERĐ
+FOGARAŠI ANDRIJA
+FOGARAŠI ANIKO
+FOGARAŠI ILONA
+FOGARAŠI STEVAN
+FOGL MAGDALENA
+FOJKAR JANKO
+FOLIĆ RADOMIR DR
+FOLTIN MARGITA
+FOLTIN MILICA
+FONTANJ LOTAR
+FORAI ZOLTAN
+FORAI ZORICA
+FORGAČ JELISAVETA
+FORGIĆ IVAN
+FORGO IŠTVAN
+FORGO LASLO
+FORIŠKOV JOVANKA
+FORIŠKOV LAZAR
+FORIŠKOVIĆ ALEKSANDAR
+FORKAPA SAVO
+FORKAPIĆ ALEKSANDAR
+FORKAPIĆ IVANKA
+FORKAPIĆ LAZAR
+FORKAPIĆ MARIJA
+FORKAPIĆ NIKOLA
+FORKAPIĆ SAVA
+FORKAPIĆ SLAVICA
+FORKAPIĆ VELINKA
+FORO IVAN
+FORO JULIJANA
+FOTIĆ ĐORĐE
+FOZEKOŠ ANKICA
+FRČEK ĐURA
+FRČEK MARIJA
+FRŽOP MIŠE
+FRŽOVIĆ ĐORĐE
+FRŽOVIĆ GAVRILO
+FRŽOVIĆ MIHAJLO
+FRŽOVIĆ MILENA
+FRACILE NICE
+FRAJST RUDOLF
+FRAJTOVIĆ MOMČILO
+FRAJZ PETAR
+FRANČIĆ ROK
+FRANC MAGDALENA DIPL ING
+FRANCELJ FRANC
+FRANCER IVAN
+FRANCER IVAN
+FRANCIŠKOVIĆ ATILA
+FRANCIŠKOVIĆ IVAN
+FRANCIŠKOVIĆ MATE
+FRANCIA ANDRIJA
+FRANCIA IŠTVAN
+FRANCIA PETAR
+FRANCIJA JOŽEF
+FRANCIJA-KUKIČKA MARGARETA
+FRANCISTI ĐORĐE
+FRANCISTI JAROSLAV
+FRANCISTI PAVLE
+FRANCISTI VLADIMIR
+FRANCUSKI ALEKSA
+FRANCUSKI BRANISLAV
+FRANCUSKI DARINKA
+FRANCUSKI DESANKA
+FRANCUSKI DRAGAN
+FRANCUSKI DUŠAN
+FRANCUSKI IVAN DR
+FRANCUSKI JOVANKA
+FRANCUSKI MARKO
+FRANCUSKI MILAN
+FRANCUSKI MIROSLAV
+FRANCUSKI PETAR
+FRANCUSKI RADOVAN
+FRANCUSKI SLOBODANKA
+FRANCUSKI STRAHINJA
+FRANCUSKI ZORAN
+FRANCUSKI ZORAN
+FRANCUSKI ZORKA
+FRANCUSKI ZORKA
+FRANCUZ DARINKA
+FRANCUZ JELENA
+FRANCUZ VELIMIR
+FRANCUZ VUK
+FRANETA JOVO
+FRANIĆ IVAN
+FRANIĆ MILKA
+FRANJIČEVIĆ NIKOLA
+FRANJIĆ MARICA
+FRANJO ŽUŽANA
+FRANK ĐERĐ
+FRANK FERENC
+FRANK ILEŠ
+FRANK JANOŠ
+FRANK TIBOR
+FRANKA MIHAJLO
+FRANKOVIĆ JOVAN
+FRANOVIĆ ALEKSANDRA
+FRANOVIĆ VLADIMIR
+FRANZER IVAN
+FRATOJ JOCA
+FRATRIĆ SIGMUND
+FRATUCAN ĐORĐE
+FRATUCAN ĐORĐE
+FRATUCAN FILIP
+FRATUCAN IVAN
+FRATUCAN NEVENA
+FRATUCAN PETAR
+FRATUCANOV IVANKA
+FREI ELIZABETA
+FREMER ANTUN
+FREML ŠANDOR
+FRENKEL ANA
+FRENKEL EVA
+FRENKL DRAGICA
+FRIČ BOŽIDAR
+FRIČ KATICA
+FRIŠ DRAGAN
+FRIŠ MILAN
+FRIŠČIĆ DRAGUTIN
+FRIC RUDOLF
+FRIDRIH ANA
+FRIDRIH JELENA
+FRIDRIH MAGDA
+FRIDRIH ZORICA
+FRINDIK FRANJA
+FRINDIK MIHALJ
+FRINDRIK BELA
+FRKA ARTUR
+FRKA NIKOLA
+FRLJ MUHAREM
+FROL MARIJAN
+FROL NADA
+FROL VILIM
+FRUŽA ALEKSANDAR
+FUČIK KARLO
+FUDERER JULIJE
+FUDERER MAGDALENA
+FUJKA ĐORĐE
+FUJTO VLADIMIR
+FULAJTER ĐORĐE
+FUNĆIK PAVLE
+FUNDURULJA MILENKO
+FUNK ŠTEFANIJA
+FUNK LAJOŠ
+FUNTEK IVAN
+FURJANOVIĆ VLADISLAV
+FURLAN ERŽEBET
+FURLAN MARKO
+FURMAN FRANJA
+FURMAN JOVAN
+FURMAN MARIJA
+FURMAN TIMOFEJ
+FURMAN TINKA
+FURO IMRE
+FUSKO ANGELA
+FUSKO IŠTVAN
+FUSKO MARIJA
+FUSKO MIHALJ
+FUTO ANTAL
+FUTO JOŽEF
+FUTO JOŽEF
+FUTO MIRKO
+FUTOŠKI MILAN
+FUTOŠKI MITA
+GAČANOVIĆ DRAGAN
+GAČEVIĆ MIROSLAV
+GAČEVIĆ RADENKO
+GAČEVIĆ TEREZA
+GAČIĆ BRANKO
+GAČIĆ DANICA
+GAČIĆ DANILO
+GAČIĆ MILAN
+GAČIĆ STEVAN
+GAČIĆ STEVAN
+GAČIĆ VLADAN
+GAŠEVIĆ MILORAD
+GAŠEVIĆ MILOVAN
+GAŠEVIĆ MOMČILO
+GAŠEVIĆ RADMILA
+GAŠEVIĆ SAVKA
+GAŠEVIĆ ZDRAVKO
+GAŠI ĐEMAILJ
+GAŠI HAMDI
+GAŠI JULIJANA
+GAŠI LJUAN
+GAŠI ZORAN
+GAŠIĆ BOGDAN
+GAŠIĆ DUŠAN
+GAŠIĆ KOVILJKA
+GAŠIĆ KOVILJKA
+GAŠIĆ KRSTA
+GAŠIĆ MIROLJUB
+GAŠIĆ NIKOLA
+GAŠIĆ SILVANA
+GAŠIĆ TODOR DIPL ING
+GAŠIĆ VALERIJA
+GAŠIĆ ZDRAVKO
+GAŠIĆ ZORA
+GAŠPAR BOGDAN
+GAŠPAR JANOŠ
+GAŠPAR LAJOŠ
+GAŠPAR LIDIJA
+GAŠPAR MILENKO
+GAŠPAREVIĆ ERIKA
+GAŠPAREVIĆ LJILJANA
+GAŠPARIĆ NADA
+GAŠPARIN LJILJANA
+GAŠPAROVIĆ JOSIP
+GAĆA BRANISLAV
+GAĆA MIODRAG
+GAĆA VLADIMIR
+GAĆAŠ DRAGICA
+GAĆAŠ SINIŠA
+GAĆAŠ STEVAN
+GAĆEŠA ĐURO
+GAĆEŠA BRANKA
+GAĆEŠA DRAGAN
+GAĆEŠA DRAGAN
+GAĆEŠA ILIJA
+GAĆEŠA MANOJLO
+GAĆEŠA MILOŠ
+GAĆEŠA MILORAD
+GAĆEŠA MILOVAN DR
+GAĆEŠA NIKOLA
+GAĆEŠA SLAVKO
+GAĆEŠA VELJKO
+GAĆEŠA VLADIMIR
+GAĆINA ŽARKO
+GAĆINA LJILJANA
+GAĆINOVIĆ BOŽO
+GAĆINOVIĆ BRANKO
+GAĆINOVIĆ MILIVOJE
+GAĆINOVIĆ MILORAD
+GAĆINOVIĆ RAJKO
+GAŽI JELISAVETA
+GAŽIK TEREZIJA
+GAŽO KATICA
+GAŽO-MATOŠKOVIĆ OLGICA
+GAŽO MIHAJLO
+GAŽO MIKLOŠ
+GAĐANSKI ZORAN
+GABLER VIKTORIJA
+GABOR ARPAD
+GABOR BELA
+GABOR ERŽEBET
+GABOR IRENA
+GABOR JOŽEF
+GABOR KAROLJ
+GABOR NANDOR
+GABOROV BRANISLAV
+GABOROV BRANISLAV
+GABOROV GAVRILO
+GABOROV MILAN
+GABOROV MITA
+GABOROV PAVLE
+GABOROV PETAR
+GABRE ROKO
+GABRIĆ EVICA
+GABRIĆ KSENIJA
+GABRIĆ MIHAJLO
+GABRIĆ NESTOR
+GABRIĆ PETAR
+GABRIĆ SLAVKO
+GABRIEL MIKLOŠ
+GABRIJELČIĆ ZDRAVKO
+GABROVIĆ ANDRAŠ
+GABROVIĆ ANDRIJA
+GACIN MIROSLAV
+GADŽA KRIŽAN
+GADŽA RUŽA
+GADŽIĆ MILAN
+GADŽIĆ VINKO
+GADŽUR IVAN
+GADŽURIĆ ZLATKO
+GADANEC KATARINA
+GADNJAI JOVA
+GADNJANSKI VLADIMIR
+GAGIĆ ALEKSANDAR
+GAGIĆ AVRAM
+GAGIĆ BOŠKO
+GAGIĆ BORIVOJE
+GAGIĆ DRAGICA
+GAGIĆ DUŠAN
+GAGIĆ-GRUBEŠA MILEVA
+GAGIĆ JOVANKA
+GAGIĆ JOVAN
+GAGIĆ NIKOLA
+GAGIĆ NIKOLA
+GAGIĆ RADOSLAV
+GAGIĆ RADOVAN
+GAGIĆ SLOBODAN
+GAGIĆ VIDOSAVA
+GAGOVIĆ MILORAD
+GAGOVIĆ NOVAK
+GAGOVIĆ OLGA
+GAGOVIĆ RADOSAV
+GAGRČIN LAZAR
+GAGRČIN MLADEN
+GAGRICA JOVAN
+GAGULA MUJO
+GAIĆ VELJKO
+GAICKI NIKOLA
+GAICKI SANJA
+GAICKI TANASIJE
+GAICKI VERICA
+GAINOV RADOVAN
+GAJŠIN SLAVICA
+GAJŠIN SMILJA
+GAJŠIN STANISLAV
+GAJANIĆ STJEPAN
+GAJDA ŠANDOR
+GAJDOŠ ĐULA
+GAJDOŠ IŠTVAN
+GAJDOŠ IBOLJA
+GAJDOŠ LASLO
+GAJDOŠ LJUBOMIR
+GAJDOŠ MIHAJLO
+GAJDOŠ NIKOLA
+GAJDOŠ PETAR
+GAJDOŠEVIĆ ĐORĐE
+GAJDOBRANSKI ĐORĐE DR
+GAJDOBRANSKI DANICA
+GAJDOBRANSKI DRAGICA
+GAJDOBRANSKI LJUBICA
+GAJDOBRANSKI MARIJA
+GAJDOBRANSKI MILIVOJ
+GAJDOBRANSKI PETAR
+GAJDOBRANSKI TODOR
+GAJER ĐURA
+GAJER JOCA
+GAJER LEONA
+GAJER MANOJLO
+GAJER NADA
+GAJGER JOŽEF
+GAJIŠIN DARA
+GAJIŠIN LAZAR
+GAJIŠIN MILICA
+GAJIŠIN PETAR
+GAJIŠIN STEVAN
+GAJIŠIN STEVAN
+GAJIŠIN TOMISLAV
+GAJIĆ ŽARKO
+GAJIĆ ŽARKO
+GAJIĆ ŽIVKA
+GAJIĆ ŽIVKO
+GAJIĆ ŽIVOTA
+GAJIĆ ĐORĐE
+GAJIĆ ĐURO
+GAJIĆ ALEKSANDAR
+GAJIĆ ANA
+GAJIĆ BOŽICA
+GAJIĆ BOŽIDAR
+GAJIĆ BOGDAN
+GAJIĆ BOGOLJUB
+GAJIĆ BORISLAV
+GAJIĆ BRANKO
+GAJIĆ BRANKO
+GAJIĆ CVIJAN
+GAJIĆ CVIJAN
+GAJIĆ DANICA
+GAJIĆ DEJAN
+GAJIĆ DEJAN
+GAJIĆ DEJAN
+GAJIĆ DIMITRIJE
+GAJIĆ DRAGAN
+GAJIĆ DRAGAN
+GAJIĆ DRAGICA
+GAJIĆ DRAGOLJUB
+GAJIĆ DRAGO
+GAJIĆ DUŠAN DIPL ING
+GAJIĆ DUŠKO DIPL PRAVNIK
+GAJIĆ GOJKO
+GAJIĆ GORAN
+GAJIĆ GORDANA
+GAJIĆ IBOLJA
+GAJIĆ JELENA
+GAJIĆ KATARINA
+GAJIĆ KRISTINA
+GAJIĆ KRUNA
+GAJIĆ LAZAR
+GAJIĆ LAZO
+GAJIĆ MAKSA
+GAJIĆ MARIJA DR
+GAJIĆ MARIJA
+GAJIĆ MARINKO DR
+GAJIĆ MIĆO
+GAJIĆ MIKA
+GAJIĆ MILANA
+GAJIĆ MILAN
+GAJIĆ MILAN
+GAJIĆ MILAN
+GAJIĆ MILAN
+GAJIĆ MILAN
+GAJIĆ MILINKO
+GAJIĆ MILIVOJ
+GAJIĆ MILOŠ
+GAJIĆ MILOJKA
+GAJIĆ MILOSAV
+GAJIĆ MILOVAN
+GAJIĆ MIODRAG
+GAJIĆ MIODRAG
+GAJIĆ MIRJANA
+GAJIĆ MIRKO DR
+GAJIĆ MIRKO
+GAJIĆ MIROSLAV
+GAJIĆ MITRA
+GAJIĆ MLADENKO
+GAJIĆ MLADEN
+GAJIĆ MOMČILO
+GAJIĆ NEDELJKO
+GAJIĆ NIKOLA DIPL ING
+GAJIĆ NIKOLA
+GAJIĆ NIKOLA
+GAJIĆ NOVAK
+GAJIĆ OLIVERA
+GAJIĆ PELKA
+GAJIĆ PERSA
+GAJIĆ RADENKO
+GAJIĆ RADMILA
+GAJIĆ RADOMIR
+GAJIĆ RAJKA
+GAJIĆ RATKO
+GAJIĆ RATKO
+GAJIĆ ROZALIJA
+GAJIĆ RUŽICA
+GAJIĆ SAVA
+GAJIĆ SLAKA
+GAJIĆ SLAVICA
+GAJIĆ SLAVKO
+GAJIĆ SLAVKO
+GAJIĆ SREĆKO
+GAJIĆ SRETO
+GAJIĆ STANIMIR
+GAJIĆ STANOJLO
+GAJIĆ STOJAN
+GAJIĆ STRAHINJA
+GAJIĆ SVETOZAR
+GAJIĆ TANASKO
+GAJIĆ VELIMIR
+GAJIĆ VESNA
+GAJIĆ VIDA
+GAJIĆ VIDOSAVA
+GAJIĆ VLADISLAV
+GAJIĆ ZORAN
+GAJICA BRANKO
+GAJICKI BRANKO
+GAJICKI DUŠAN
+GAJICKI JELENA
+GAJICKI LAZAR
+GAJICKI MARIJA
+GAJICKI MILA
+GAJICKI MILICA
+GAJICKI SAVA
+GAJIN ŽIVKO
+GAJIN ĐORĐE
+GAJIN ALEKSANDAR
+GAJIN ANKA
+GAJIN BRANKO
+GAJIN DRAGICA
+GAJIN JOVAN
+GAJIN LAZAR
+GAJIN MIHAJLO
+GAJIN MILAN
+GAJIN MILENKO
+GAJIN MILOVAN
+GAJIN MIRJANA
+GAJIN NADA
+GAJIN NEVENKA
+GAJIN PETAR
+GAJIN SLAVKA DR
+GAJIN SVETLANA
+GAJIN VLADIMIR
+GAJINA DRAGOMIR
+GAJINOV ŽIVAN
+GAJINOV ŽIVKO
+GAJINOV ŽIVKO
+GAJINOV ĐOKICA
+GAJINOV ALEKSANDAR
+GAJINOV ANĐELKA
+GAJINOV BRANKO
+GAJINOV DIMITRIJE
+GAJINOV DRAGOMIR
+GAJINOV IVANKA
+GAJINOV JELENA
+GAJINOV JOVAN
+GAJINOV JULKA
+GAJINOV KOSTA
+GAJINOV KOSTA
+GAJINOV LAZAR
+GAJINOV LAZAR
+GAJINOV LAZAR
+GAJINOV LJILJANA
+GAJINOV LJUBICA
+GAJINOV LJUBICA
+GAJINOV MARIJA
+GAJINOV MARKO
+GAJINOV MARKO
+GAJINOV MILAN
+GAJINOV MILORAD
+GAJINOV MILORAD
+GAJINOV MILORAD
+GAJINOV NIKOLA
+GAJINOV PERA
+GAJINOV PERSIDA
+GAJINOV RADA
+GAJINOV RADIVOJ
+GAJINOV RADIVOJ
+GAJINOV SAVA
+GAJINOV STEVAN
+GAJINOV STEVAN
+GAJINOV TODOR
+GAJINOV VELIMIR
+GAJINOVIĆ ĐORĐE
+GAJINOVIĆ ĐORĐE
+GAJINOVIĆ DANICA
+GAJINOVIĆ DRAGANA
+GAJINOVIĆ DUŠAN
+GAJINOVIĆ IKONIJA
+GAJINOVIĆ JOVAN
+GAJINOVIĆ JOVAN
+GAJINOVIĆ KATICA
+GAJINOVIĆ LJUBICA
+GAJINOVIĆ MILAN
+GAJO IŠTVAN
+GAJODI JOŽEF
+GAJODI MARIJA
+GAJOVIĆ JULIJANA
+GAJOVIĆ MOMČILO
+GAJOVIĆ RADOJE
+GAJTA ANICA
+GAJTA AURELIJA
+GAK ALEKSANDRA
+GAK MILAN
+GAK NEVENKA
+GAK RADE
+GAK SLAVKO
+GAK SNEŽANA
+GAK ZORKA
+GAKIĆ BOŠKO
+GAKOVIĆ ANTONIJA
+GAKOVIĆ JELENA
+GAKOVIĆ MARIJA
+GAKOVIĆ MIRKO
+GAKOVIĆ MIRKO
+GAKOVIĆ RANKO
+GAKOVIĆ ZORA
+GAL ŠANDOR
+GAL ĐULA
+GAL ĐULA
+GAL ANKA
+GAL FERENC
+GAL FERENC
+GAL FERENC
+GAL GABOR
+GAL GIZELA
+GAL JANOŠ
+GAL JOŽEF
+GAL JOŽEF
+GAL JOVAN
+GAL KALMAN
+GAL LAJOŠ
+GAL LAJOŠ
+GAL MARGIT
+GAL MARIA
+GAL MIŠA
+GAL MIKLOŠ
+GAL PAVLE
+GAL PETAR
+GAL PETAR
+GAL STEVAN
+GALAC JOSIP
+GALAC PAVLE
+GALAMB ATILA
+GALAMBOŠ ANA
+GALAMBOŠ ANTON
+GALAMBOŠ ERŽEBET
+GALAMBOŠ IMRE
+GALAMBOŠ JOSIP
+GALAMBOŠ LASLO
+GALAMBOŠ LASLO
+GALBAČ JOŽEF
+GALEČIĆ BRANISLAV
+GALEČIĆ DRAGAN
+GALEČIĆ MIROSLAV
+GALEČIĆ ZORAN
+GALEČIĆ ZORAN
+GALEŠEV ŽIVOJIN
+GALEŠEV DUBRAVKA
+GALEŠEV SLOBODAN
+GALETIĆ ALEKSANDAR
+GALETIĆ MARIJA
+GALETIĆ MILAN
+GALETIĆ VASA
+GALETIĆ VLADIMIR
+GALETIĆ ZORA
+GALETIN MILICA
+GALETIN NIKOLA
+GALETIN PAJICA
+GALETIN SIMA
+GALETIN SLAVKO
+GALETIN-SMIT RADOJKA
+GALETIN STEVAN
+GALETIN ZLATKO
+GALFI JOSIP
+GALFI MILENA
+GALGO IŠTVAN
+GALIČIĆ BRANKO
+GALIČIĆ MILICA
+GALIĆ DUŠANKA
+GALIĆ IVANKA
+GALIĆ JOVAN
+GALIĆ JOVAN
+GALIĆ JOVAN
+GALIĆ KATICA
+GALIĆ KATICA
+GALIĆ LADISLAV
+GALIĆ LJUBICA
+GALIĆ MARIJAN
+GALIĆ MILADIN
+GALIĆ MILENKO
+GALIĆ MILKA
+GALIĆ MILOŠ
+GALIĆ MILOVAN
+GALIĆ MIRKO
+GALIĆ MITAR
+GALIĆ MOMČILO
+GALIĆ NEDELJKO
+GALIĆ NIKOLA
+GALIĆ OLGA
+GALIĆ PETAR
+GALIĆ ROŽIKA
+GALIĆ SANJA
+GALIĆ SLAVKA
+GALIĆ STEVO
+GALIĆ TEREZA
+GALIĆ VOJISLAV
+GALIĆ ZDRAVKO
+GALICKI ĐURA
+GALIK ETELKA
+GALIPOVIĆ JOVICA
+GALKO JULIA
+GALO ĐURA
+GALONJA DESANKA
+GALONJA DRAGOLJUB
+GALONJA MIODRAG
+GALONJA MIRKO
+GALONJA RADE
+GALOVIĆ ĐORĐE
+GALOVIĆ ĐURA
+GALOVIĆ ALEKSANDRA
+GALOVIĆ ANĐELKA
+GALOVIĆ BRANKO
+GALOVIĆ DRAGICA DR
+GALOVIĆ IVICA
+GALOVIĆ JELICA
+GALOVIĆ LJUBICA
+GALOVIĆ MILAN
+GALOVIĆ MILAN
+GALOVIĆ MILENKO
+GALOVIĆ RADOMIR
+GALOVIĆ STEVO
+GALOVIĆ ZORKA
+GALUS LASLO
+GAMBER SLOBODAN
+GANDŽI SAVKA
+GANGLI ANA
+GANIĆ ALOJZIJE
+GANIĆ ALOJZIJE
+GANIĆ MIŠO
+GANIĆ STANISLAVA
+GANIĆ ZDENKO
+GANIĆ ZORICA
+GANJI SAMUEL
+GANTAR ALEKSANDRA
+GANTAR FILIP
+GANTAR MIROSLAV DR
+GARČEV DANICA
+GARČEV MILUTIN
+GARČEVIĆ PERO
+GARČEVIĆ PERO
+GARAŠEVIĆ MILKA
+GARABA ANDRIJA
+GARABANDIĆ ĐORĐE
+GARABANDIĆ MARIJA
+GARABANDIĆ MILENKO
+GARABANDIĆ NIKOLA
+GARABANTIN IVAN
+GARABANTIN MILOVAN
+GARABANTIN STEVAN
+GARAI BELA
+GARAI KORNELIJA
+GARAJ BRANIMIR
+GARAJ JELENA
+GARAJ OLGA
+GARALEJIĆ VERICA
+GARAPIĆ BRANKO DIPL ING
+GARDAŠEVIĆ MILOŠ
+GARDAŠEVIĆ-STRIČEVIĆ JOVANKA
+GARDAŠEVIĆ VESELIN
+GARDIĆ ALIJA
+GARDINOVAČKI ĐORĐE
+GARDINOVAČKI BORISLAV
+GARDINOVAČKI BRANIMIR
+GARDINOVAČKI CVETA
+GARDINOVAČKI MIORKA
+GARDINOVAČKI NEDELJKO
+GARDINOVAČKI STEVAN
+GARDINOVAČKI SVETOZAR
+GARELOVIĆ MIROSLAV
+GAREVSKI DIMITRIJA
+GARIĆ ŽARKO
+GARIĆ LAZAR
+GARIĆ LUKA
+GARIĆ MIROSLAV
+GARIĆ NADA
+GARIĆ STEVAN
+GAROVIĆ MILUTIN
+GAROVIĆ MILUTIN
+GAROVNIKOV ĐORĐE
+GAROVNIKOV BORKA
+GARTNER PETAR
+GARUNOVIĆ DANICA
+GARUNOVIĆ VASA
+GATALO GORAN
+GATALO RATKO
+GATARIĆ ŽELJKO
+GATARIĆ ŽELJKO
+GATARIĆ BOŠKO
+GATARIĆ DRAŽE
+GATARIĆ MANOJLO
+GATARIĆ SAVKA
+GATARIĆ STANA
+GATARIĆ SVETOZAR
+GATARIĆ ZLATIBOR
+GATER JOSIP
+GAUDENJI GABRIJELA
+GAUDENJI MATILD
+GAUDENJI TIVADAR
+GAVA ALEKSEJ
+GAVANSKI BRANISLAV ADVOKAT
+GAVANSKI BRANISLAVA
+GAVANSKI BRANISLAVA
+GAVANSKI DARA
+GAVANSKI DRAGAN
+GAVANSKI DUŠAN
+GAVANSKI GAVRILO
+GAVANSKI IVAN
+GAVANSKI JELENA
+GAVANSKI JUDITA
+GAVANSKI KONSTANTIN DR
+GAVANSKI KOSTA DPL ING
+GAVANSKI KOSTA
+GAVANSKI LAZAR
+GAVANSKI LUKA
+GAVANSKI MARGITA
+GAVANSKI MILICA
+GAVANSKI MILICA
+GAVANSKI NADA
+GAVANSKI NOVAK
+GAVANSKI PAVLE
+GAVANSKI PETRA
+GAVANSKI STEVAN
+GAVANSKI STEVAN
+GAVANSKI STEVAN
+GAVANSKI STEVAN
+GAVANSKI SVETOZAR
+GAVANSKI ZORAN
+GAVANSKI ZORAN
+GAVARIĆ ALEKSANDAR
+GAVARIĆ GAVRILO
+GAVARIĆ JEREMIJE
+GAVARIĆ LJUBICA
+GAVARIĆ MILENKO
+GAVLIK GERGELJ
+GAVODI ESTER
+GAVRAN GOJKO
+GAVRAN LJUBOMIR
+GAVRANČIĆ ĐURĐICA
+GAVRANČIĆ JOVAN
+GAVRANČIĆ KATICA
+GAVRANČIĆ MARGITA
+GAVRANČIĆ MARIJA
+GAVRANČIĆ NIKOLA
+GAVRANČIĆ VLADIMIR
+GAVRANIĆ GOJKO
+GAVRANIĆ ILIJA
+GAVRANIĆ ZVEZDANA
+GAVRANOV BOSA
+GAVRANOV SLOBODAN
+GAVRANOVIĆ TOMISLAV
+GAVRANOVIĆ ZDRAVKO
+GAVRIĆ ČEDOMIR
+GAVRIĆ ŽIVKA
+GAVRIĆ ĐORĐE
+GAVRIĆ BRANISLAV
+GAVRIĆ DIMITRIJE
+GAVRIĆ-GAZDIĆ NIKOLA
+GAVRIĆ IVAN
+GAVRIĆ IVAN
+GAVRIĆ JOVAN
+GAVRIĆ JOVO
+GAVRIĆ MARIJA
+GAVRIĆ MIHAJLO
+GAVRIĆ MILAN
+GAVRIĆ MILAN
+GAVRIĆ MILENA
+GAVRIĆ MILENKO
+GAVRIĆ MILENKO
+GAVRIĆ MILOŠ
+GAVRIĆ MIRKO
+GAVRIĆ MIROSLAV
+GAVRIĆ PETAR
+GAVRIĆ RADOMIR
+GAVRIĆ RADOSLAV
+GAVRIĆ SENKA
+GAVRIĆ SLAVKA
+GAVRIĆ SPASOJE
+GAVRIĆ SVETOZAR
+GAVRIĆ VELINKA
+GAVRIĆ VLADIMIR
+GAVRIĆ ZORAN
+GAVRIĆ ZORA
+GAVRILOV ŽIVKA
+GAVRILOV ANKICA
+GAVRILOV BOGDAN
+GAVRILOV GORDANA
+GAVRILOV HERMINA
+GAVRILOV JULKA
+GAVRILOV LJUBICA
+GAVRILOV MARTA
+GAVRILOV MILIVOJ
+GAVRILOV MILIVOJ
+GAVRILOV MILORAD
+GAVRILOV RADIVOJ
+GAVRILOV SLAVKO
+GAVRILOV SMILJA
+GAVRILOV TODOR
+GAVRILOV UROŠ
+GAVRILOVIĆ ŽIKICA
+GAVRILOVIĆ ŽIVKA
+GAVRILOVIĆ ŽIVOJIN DR
+GAVRILOVIĆ ALEKSANDAR
+GAVRILOVIĆ ALEKSANDAR
+GAVRILOVIĆ ALEKSA
+GAVRILOVIĆ BOGDANKA
+GAVRILOVIĆ BORIVOJ
+GAVRILOVIĆ BRANKA
+GAVRILOVIĆ BRANKO
+GAVRILOVIĆ DOBRILA
+GAVRILOVIĆ DOBRIVOJE
+GAVRILOVIĆ DUŠICA
+GAVRILOVIĆ EMIL
+GAVRILOVIĆ GROZDAN
+GAVRILOVIĆ JELISAVKA
+GAVRILOVIĆ JOVAN
+GAVRILOVIĆ JOVAN
+GAVRILOVIĆ KATICA
+GAVRILOVIĆ KLAUDIJA
+GAVRILOVIĆ LAZAR
+GAVRILOVIĆ LJUBOMIR
+GAVRILOVIĆ MARA
+GAVRILOVIĆ MARIJA
+GAVRILOVIĆ MARIJA
+GAVRILOVIĆ MILENA
+GAVRILOVIĆ MILENKO
+GAVRILOVIĆ MILENKO
+GAVRILOVIĆ MILICA
+GAVRILOVIĆ MILOŠ
+GAVRILOVIĆ MILOŠ
+GAVRILOVIĆ MILOJE
+GAVRILOVIĆ MILOSAVA
+GAVRILOVIĆ MILOVAN
+GAVRILOVIĆ MIRA
+GAVRILOVIĆ MIRJANA
+GAVRILOVIĆ MIRJANA
+GAVRILOVIĆ MIRKO
+GAVRILOVIĆ MIROSLAV
+GAVRILOVIĆ MIROSLAV
+GAVRILOVIĆ MITAR
+GAVRILOVIĆ MLADEN
+GAVRILOVIĆ NEBOJŠA
+GAVRILOVIĆ NIKOLA DR PROF
+GAVRILOVIĆ NIKOLA
+GAVRILOVIĆ PAVLE
+GAVRILOVIĆ RADOSLAV
+GAVRILOVIĆ RAJKA
+GAVRILOVIĆ SAVA DR
+GAVRILOVIĆ SAVO
+GAVRILOVIĆ SLAVICA
+GAVRILOVIĆ SLAVKO DR
+GAVRILOVIĆ SLAVKO
+GAVRILOVIĆ SLAVKO
+GAVRILOVIĆ SLAVOLJUB
+GAVRILOVIĆ SLOBODAN
+GAVRILOVIĆ SOFIJA
+GAVRILOVIĆ STANA
+GAVRILOVIĆ STEVA
+GAVRILOVIĆ STOJAN
+GAVRILOVIĆ TOŠA
+GAVRILOVIĆ TODOR
+GAVRILOVIĆ VERA DR
+GAVRILOVIĆ VERICA
+GAVRILOVIĆ VLADIMIR
+GAVRILOVIĆ VLADIMIR
+GAVRILOVIĆ VLADIMIR
+GAVRILOVIĆ VUKICA
+GAVRILOVIĆ ZLATA
+GAVRILOVSKI PAVLINA
+GAVROVIĆ GORAN
+GAVROVIĆ GORDANA
+GAVROVIĆ LJUBIVOJE
+GAVROVIĆ SVETLANA LOKAL
+GAZAFI LASLO
+GAZDIĆ BORIVOJ
+GAZEPOV ILIJA
+GAZIĆ IVAN
+GAZIBARIĆ IZETA
+GAZIBARIĆ JELENA
+GAZIBARIĆ JOVANKA
+GAZIBARIĆ SIMA
+GAZIJA JOVAN
+GAZIVODA GOJKO
+GEČEVSKI SRETKO
+GEBAUER ERVIN DR
+GEBELS ANA
+GECI ĐURA
+GEDELOVSKI DUŠAN
+GEDELOVSKI SOFIJA
+GEGEŠ JULIJANA
+GEGEŠ NANDOR
+GEGEŠ SLAVICA
+GEGENBAUER DRAGUTIN
+GEGENBAUER ILONKA
+GEGENBAUER ZORA
+GEGIĆ ALEKSANDAR
+GEGIĆ NEMANJA
+GELEI JENE
+GELER ŠANDOR
+GELER ĐULA
+GELER ADAM
+GELER ALEKSANDAR
+GELER BELA
+GELER JELISAVETA
+GELER JOVAN
+GELER LASLO
+GELER LASLO
+GELER MARIJA
+GELER MARTA
+GELER OLGA
+GELER-PETKOVIĆ GIZELA
+GELER TIBOR
+GELJIĆ MATO
+GEMOVIĆ ALEKSANDAR
+GENC FERENC
+GENC LAJOŠ
+GENCEL JULIJANA
+GENCEL MARIJANA
+GENCEL VALERIJA
+GENCI JOSIP
+GENEVAJN ĐURA
+GENEVAJN JOVAN
+GENEVAJN KARLO
+GENEVAJN LAJOŠ
+GENEVAJN LAJOŠ
+GENOVA MAJDA DIPL ING
+GENOVA MILICA DIPL ING
+GEORGIEV LEPOSAVA
+GEORGIEVSKI PERO
+GEORGIEVSKI VASIL
+GEORGIJEVIĆ ŽIVKO
+GEORGIJEVIĆ ALEKSANDAR
+GEORGIJEVIĆ IVANA
+GEORGIJEVIĆ JOVAN
+GEORGIJEVIĆ JOVAN
+GEORGIJEVIĆ LAZAR
+GEORGIJEVIĆ LAZA
+GEORGIJEVIĆ LJUBIŠA
+GEORGIJEVIĆ MILAN
+GEORGIJEVIĆ MILOSAV
+GEORGIJEVIĆ MILOVAN
+GEORGIJEVIĆ NESTOR
+GEORGIJEVIĆ RADOVAN
+GEORGIJEVIĆ VOJISLAV
+GERA IBOLJA
+GERAK EMILIJA
+GERASIMOVSKI ZLATE
+GERATOVIĆ ZORAN
+GERDIJAN ČEDOMIR
+GERE LAJOŠ
+GERE ZOLTAN
+GERECI JURAJ
+GEREG ŽUŽANA
+GEREG ANDRAŠ
+GEREG BLANKA
+GEREG EUGEN
+GEREG TIBOR
+GERGEČ SMILJA
+GERGELJ ŠIMON
+GERI TEREZA
+GERIĆ ŽARKO
+GERIĆ ĐORĐE
+GERIĆ ALEKSANDAR
+GERIĆ ANTON
+GERIĆ CVETA
+GERIĆ GINA
+GERIĆ GORDANA
+GERIĆ IVAN
+GERIĆ IVAN
+GERIĆ KOSTA
+GERIĆ KOVICA
+GERIĆ LJUBOMIR
+GERIĆ MARIJA
+GERIĆ MILAN
+GERIĆ MILOŠ
+GERIĆ MILOŠ
+GERIĆ MIRKO
+GERIĆ NEDELJKO
+GERIĆ NESTOR
+GERIĆ OBRAD
+GERIĆ PETAR
+GERIĆ RADINKA
+GERIĆ STEVAN
+GERIH ANDRIJA
+GERL FERDO
+GERL MARIJA
+GERLA DRAGANA
+GERLA LADISLAV
+GERLA TEODOR
+GERMANOVIĆ MILAN
+GERMANOVIĆ STANOJE
+GERNAČ ĐORĐE
+GERNAČ FRANJA
+GERNAČ LADISLAV
+GERO ĐERĐ
+GERO DUŠANKA
+GERO JANOŠ
+GERO JOŽEF
+GERO KARLO
+GERO LAJOŠ
+GERO MARGITA
+GEROLD JAKOB
+GEROLD LASLO
+GEROV ANGEL DIPL ING
+GERTNER ANA
+GERTNER FRANJA
+GERTNER JOŽEF
+GERTNER REŽE
+GETEL HELMUT
+GEZ JANOŠ
+GEZ JELICA
+GEZ KATICA
+GEZ TIBOR
+GEZ VERONIKA
+GHANDOUR-ŠAL JULIJANA
+GIADROŠIĆ MARIJA
+GIBANICA GEORGINA
+GIGA SRETEN
+GIGIĆ MIOMIR
+GIGIĆ MIRJANA
+GIGIĆ ZORAN
+GIKIĆ BOŽIDAR
+GIKIĆ DIMITRIJE
+GIKIĆ RADIVOJE
+GIKOVSKI MINO
+GILEZAN KORIOLAN
+GILG IRENA
+GILIĆ DRAGAN
+GILIĆ DRAGAN
+GIMBOŠ DOBRIVOJE
+GINCULJ SERGIJE DIPL ING
+GION ALEKSANDAR
+GION ANA DR
+GION IŠTVAN
+GION KALMAN
+GION NANDOR
+GIRIĆ MATIJA
+GIRIC BELA
+GIRIC ELENA
+GIRIC IMRE
+GIRIC JOŽEF
+GIRIC LASLO
+GIRIC-MOKUŠ KLARA
+GIRIZD LASLO NOVINAR
+GIRNT ROZALIJA
+GIS HEDVIGA
+GJAFO MATIJA
+GJER VLADIMIR
+GLADIŠ STEVAN
+GLADIĆ MILAN
+GLADIĆ RAJKO
+GLADIĆ SVETOZAR
+GLADOVIĆ DUŠAN
+GLADOVIĆ TATJANA
+GLAJH GEORG
+GLAMOČANIN NEVENKA
+GLAMOČANIN NEVENKA
+GLAMOČANIN PERO
+GLAMOČANIN VLADIMIR
+GLAMOČIĆ DANE
+GLAMOČIĆ SNEŽANA
+GLAMOČLIJA RUŽICA
+GLANC ANTUN
+GLASOVAC MARTA
+GLAVČIĆ MILORAD
+GLAVAŠ ŽARKO
+GLAVAŠ JOVO
+GLAVAŠ MILAN
+GLAVAŠ-TRBIĆ BOŠKO
+GLAVAŠEVIĆ ANĐELKO
+GLAVAŠEVIĆ ANĐELKO
+GLAVAŠKI ŽIVOJIN
+GLAVAŠKI ALEKSANDAR
+GLAVAŠKI ALEKSANDRA
+GLAVAŠKI ANĐELKA
+GLAVAŠKI BOGDAN DIPL ING
+GLAVAŠKI BRANISLAV
+GLAVAŠKI BRANKO DIPL PRAVNIK
+GLAVAŠKI DRAGAN
+GLAVAŠKI DUŠAN
+GLAVAŠKI GLIŠA
+GLAVAŠKI MILUTIN
+GLAVAŠKI NEMANJA
+GLAVAŠKI SIMA
+GLAVAŠKI SINIŠA
+GLAVAŠKI SMILJKA
+GLAVAN JOVAN
+GLAVANIĆ BOSILJKA
+GLAVANIĆ JULKA
+GLAVANIĆ MIRKO
+GLAVARDANOV ALEKSANDAR
+GLAVARDANOV IVAN DIPL ING
+GLAVARDANOV MARIJA
+GLAVARDANOV SOKO
+GLAVATOVIĆ DRAGAN
+GLAVATOVIĆ DUŠAN
+GLAVIČIĆ MARIJANA
+GLAVIĆ BOŠKO
+GLAVIĆ GAVRO
+GLAVIĆ JELKA
+GLAVIĆ RADISLAV
+GLAVINIĆ JOVO
+GLAVINIĆ MILORAD
+GLAVOČEVIĆ ILIJA
+GLEĐA MILENKO
+GLEDIĆ MILICA
+GLIŠIĆ ĐORĐO
+GLIŠIĆ BORISLAV
+GLIŠIĆ BRANKO
+GLIŠIĆ GRADIMIR
+GLIŠIĆ ILIJA
+GLIŠIĆ IVAN
+GLIŠIĆ JELICA
+GLIŠIĆ JOVAN
+GLIŠIĆ-KESEG VALERIJA
+GLIŠIĆ LJUBIŠA
+GLIŠIĆ MILEVA
+GLIŠIĆ NENAD
+GLIŠIĆ PREDRAG
+GLIŠIĆ RADOMIR
+GLIŠIĆ SIMO
+GLIŠIĆ SRETA
+GLIŠIĆ VESNA
+GLIŠIĆ ZORAN
+GLIŠIN ĐORĐE
+GLIŠIN BRANKA
+GLIŠIN NENAD
+GLIŠOVIĆ MARIJA
+GLIBIĆ MILAN
+GLIBOTA VLADO
+GLIGIĆ ŽELJKA
+GLIGIĆ MIRA
+GLIGIĆ NEDELJKO
+GLIGIĆ TOMISLAV
+GLIGOREVIĆ DUŠKO
+GLIGOREVIĆ TOMO
+GLIGORIĆ ŽELJKO
+GLIGORIĆ ŽIVOJIN
+GLIGORIĆ ŽIVORAD
+GLIGORIĆ ANĐELKA
+GLIGORIĆ CVETANKA
+GLIGORIĆ DRAGAN
+GLIGORIĆ DRAGAN
+GLIGORIĆ DRAGIŠA
+GLIGORIĆ DRAGICA
+GLIGORIĆ DRAGINJA
+GLIGORIĆ DRAGOMIR
+GLIGORIĆ JELENA
+GLIGORIĆ KATICA
+GLIGORIĆ LJUBOMIR
+GLIGORIĆ MILAN
+GLIGORIĆ MILAN
+GLIGORIĆ MILORAD
+GLIGORIĆ MLADEN
+GLIGORIĆ NIKOLA
+GLIGORIĆ RADIŠA
+GLIGORIĆ STANOJE
+GLIGORIĆ STEVAN
+GLIGORIĆ STEVAN
+GLIGORIJEVIĆ ALEKSANDAR
+GLIGORIJEVIĆ DRAGANA
+GLIGORIJEVIĆ DRAGICA
+GLIGORIJEVIĆ KRSTA
+GLIGORIJEVIĆ MIHAJLO
+GLIGORIJEVIĆ MIODRAG
+GLIGORIJEVIĆ PETRA
+GLIGORIJEVIĆ RUŽICA
+GLIGORIN ĐURĐINKA
+GLIGORIN BOJANA
+GLIGORIN MIROSLAV
+GLIGORIN SLAVICA
+GLIGORIN STEVAN
+GLIGORIN TOMISLAV
+GLIGORIN ZORAN
+GLIGORIN ZORKA
+GLIGOROV DESIMIR
+GLIGOROV JOVAN
+GLIGOROV LEKA
+GLIGOROV LJUBOMIR
+GLIGOROVIĆ SLAVKO
+GLIGOROVSKI TRAJKO
+GLINTIĆ MILE
+GLINTIĆ MIODRAG
+GLINTIĆ NIKOLA
+GLINTIĆ RADOSLAV
+GLINTIĆ SAVKA
+GLINTIĆ VESELKA
+GLOŽANSKI MARIJA
+GLOŽANSKI PETAR
+GLOŽANSKI VOJISLAV
+GLOGONJAC VITOMIR
+GLOGOVČAN MILOŠ DIPL ING
+GLOGOVAC JEVREM
+GLOGOVAC KORNELIJA
+GLOGOVAC MIRKO
+GLOGOVAC MOMČILO
+GLUŠAC BOŽIDAR
+GLUŠAC DUŠAN
+GLUŠAC MIHAJLO
+GLUŠAC MILAN
+GLUŠAC MILOŠ
+GLUŠAC MILORAD
+GLUŠAC PETAR
+GLUŠIĆ BRANKO
+GLUŠICA LJUBOMIR
+GLUŠICA MILAN
+GLUŠICA MILAN
+GLUŠICA MILE
+GLUŠICA NENAD
+GLUŠICA PETAR
+GLUŠICA SLAĐANA
+GLUŠICA SLAVKA
+GLUŠICA ZDRAVKO
+GLUHAIĆ ANĐELKO
+GLUHAJIĆ BOŽO
+GLUHAK KARLO
+GLUHOVIĆ MILOŠ
+GLUHOVIĆ MILOMIR
+GLUHOVIĆ VELJKO
+GLUMAC DANE
+GLUMAC DANILO
+GLUMAC DANILO
+GLUMAC DRAGAN
+GLUMAC DUŠAN
+GLUMAC GAVRA
+GLUMAC JELENA
+GLUMAC LAZO
+GLUMAC LJUBO
+GLUMAC MAGDALENA
+GLUMAC MILAN
+GLUMAC MILE
+GLUMAC MIODRAG DR
+GLUMAC MIROSLAV
+GLUMAC SLOBODAN DR
+GLUMIČIĆ MANDA
+GLUVAIĆ ĐORĐE
+GLUVAJIĆ DRAGAN
+GLUVAJIĆ JOVAN
+GLUVAKOV MILADINKA
+GLUVAKOV PAVLE
+GLUVAKOVIĆ VLADIMIR
+GLUVNJA STEVAN
+GMIZIĆ BRANISLAV
+GMIZIĆ NEGOVAN
+GMIZIĆ VLADA
+GNIP JOAKIM
+GNIP VELIMIR DIPL ING
+GNIP VERA
+GNIP VLADIMIR
+GNJATIĆ STOJANKA
+GNJEČ SVEN
+GOČANIN RADE
+GOČIĆ ANĐA
+GOŠIĆ JEVREM
+GOŠIĆ LJILJA
+GOŠIĆ PAVLE
+GOŠIĆ PAVLE
+GOŠIĆ PAVLE
+GOŠIĆ TOMISLAV
+GOŠIĆ TOMISLAV
+GOŠNJIĆ DOBRIVOJ
+GOĐEVAC BOSILJKA
+GOBEC KATICA
+GOBEC MILAN
+GOBELJIĆ MILOVAN
+GOBELJIĆ STRAHINJA
+GOBELJIĆ SVETISLAV
+GOBELJIĆ VUKADIN
+GOBELJIĆ VUK
+GOBOR ANA
+GOBOR LADISLAV
+GOBOR ZOLTAN
+GOBOR ZOLTAN
+GOCIĆ BOGOSAV
+GOCIĆ JEVROSIMA
+GOCIĆ VIDOJKO
+GODA OLIVIJA
+GODAR KATARINA
+GODIĆ MARIJA
+GODIĆ ZVONKO
+GODIĆ ZVONKO
+GODINA DARKO
+GODINA MILKO
+GODINSKI VLADIMIR
+GODOŠEV KRSTA
+GODOR ŠANDOR
+GODOR JANOŠ
+GODOR JOSIP
+GODUNC DUŠAN
+GOGIĆ DOBRILO
+GOGIĆ DRAGOLJUB
+GOGIĆ MARA
+GOGIĆ PAVLE
+GOGIĆ SLAVKO
+GOGIĆ VELINKA
+GOGOLAK MARGITA
+GOGOLJEV MIHAJLO
+GOGOLJEV ULJANA
+GOGOLJEV VASILIJE
+GOGOV MILAN
+GOJAN FERENC
+GOJIĆ DRAGAN
+GOJIĆ GOJKO
+GOJIĆ MILENA
+GOJIĆ MILE
+GOJKOV ŽIVKO
+GOJKOV JULIJANA
+GOJKOV MILENA
+GOJKOV RADOMIR
+GOJKOV VASILIJE
+GOJKOVIĆ DONKA
+GOJKOVIĆ DRAGAN
+GOJKOVIĆ DRAGORAD
+GOJKOVIĆ DUŠAN
+GOJKOVIĆ GEORGIJE DIPL ING
+GOJKOVIĆ ILIJA
+GOJKOVIĆ JELA
+GOJKOVIĆ LJUBIŠA
+GOJKOVIĆ MILISAV
+GOJKOVIĆ MITA
+GOJKOVIĆ NADEŽDA
+GOJKOVIĆ NEVENKA
+GOJKOVIĆ PAVLE
+GOJKOVIĆ RADMILO
+GOJKOVIĆ RADOLJUB
+GOJKOVIĆ SAVO
+GOJKOVIĆ TOMISLAV
+GOJNIĆ DAVOR
+GOJOVIĆ VUKOSAV
+GOKLER ILONA
+GOLDMAN ANKICA
+GOLDMAN-TOMAŠEVIĆ EVA
+GOLEŠ RUŽA
+GOLENIĆ SLAVKO
+GOLENJA BRANKO
+GOLENJA IRENA
+GOLENJA MIROSLAVA
+GOLENJA MIROSLAVA
+GOLEVA NADA
+GOLIŠEVIĆ MIRJANA
+GOLIĆ ŽIVAN
+GOLIĆ ĐORĐE
+GOLIĆ ALEKSANDAR
+GOLIĆ ANICA
+GOLIĆ DOBRIVOJE
+GOLIĆ FAID
+GOLIĆ LJUBOMIR
+GOLIĆ MARKO
+GOLIĆ SLAVKA
+GOLIĆ STANKA
+GOLIĆ TOMISLAV
+GOLIĆ VOJIN
+GOLIĆ VOJKO
+GOLIJAN ANA
+GOLIJANIN DUŠANKA
+GOLIJANIN ERŽEBET
+GOLIK OLGA
+GOLIK SLOBODAN
+GOLJEVAČKI DRAGICA
+GOLO ALEKSANDAR
+GOLO DRAGOSLAV
+GOLOČORBIN SLAVUJ
+GOLOČORDIN DRAGO
+GOLOŠIN-DIMITRIJEVIĆ LJILJANA
+GOLOŠIN STEVICA
+GOLOBOČANIN MILOSAV
+GOLOMEJIĆ MILORAD
+GOLONIĆ ZAGORKA
+GOLOUH IVAN
+GOLOVIĆ JOVAN
+GOLUŠIN BRANISLAV
+GOLUŠIN DRAGAN
+GOLUŠIN LJUBICA
+GOLUŠIN LJUBOMIR
+GOLUŠIN-MIĆIĆ MILENKO
+GOLUŠIN MIODRAG
+GOLUŠIN NADA
+GOLUŠIN NIKOLA
+GOLUBIČIĆ VERA
+GOLUBIĆ MILIVOJE
+GOLUBJATNIKOVA NINA
+GOLUBOV NAKA
+GOLUBOVIĆ ČEDOMIR
+GOLUBOVIĆ ĐORĐE
+GOLUBOVIĆ ALEKSANDAR
+GOLUBOVIĆ ARSEN
+GOLUBOVIĆ BOŠKO
+GOLUBOVIĆ BOGDAN
+GOLUBOVIĆ BORIVOJ
+GOLUBOVIĆ BRANKO
+GOLUBOVIĆ DIMITRIJE
+GOLUBOVIĆ DOBRILA
+GOLUBOVIĆ DRAGANA
+GOLUBOVIĆ DRAGAN
+GOLUBOVIĆ DRAGA
+GOLUBOVIĆ GOLUB
+GOLUBOVIĆ GOLUB
+GOLUBOVIĆ ILIJA
+GOLUBOVIĆ IVAN
+GOLUBOVIĆ JEREMIJE
+GOLUBOVIĆ JOVAN
+GOLUBOVIĆ KSENIJA
+GOLUBOVIĆ LJILJANA
+GOLUBOVIĆ LJUBINKA
+GOLUBOVIĆ LUKA
+GOLUBOVIĆ MANOJLO
+GOLUBOVIĆ MANOJLO
+GOLUBOVIĆ MARIJA
+GOLUBOVIĆ MIHAJLO
+GOLUBOVIĆ MILAN
+GOLUBOVIĆ MILENKO
+GOLUBOVIĆ MILENKO
+GOLUBOVIĆ MILUN
+GOLUBOVIĆ MILUTIN
+GOLUBOVIĆ MIODRAG
+GOLUBOVIĆ MIRJANA
+GOLUBOVIĆ MIROSLAV
+GOLUBOVIĆ MLAĐEN
+GOLUBOVIĆ MOMČILO
+GOLUBOVIĆ MOMČILO
+GOLUBOVIĆ MOMČILO
+GOLUBOVIĆ NADA
+GOLUBOVIĆ NIKOLA
+GOLUBOVIĆ OLGICA
+GOLUBOVIĆ PERIŠA
+GOLUBOVIĆ SEKULA
+GOLUBOVIĆ STANA
+GOLUBOVIĆ STANA
+GOLUBOVIĆ TEODORA
+GOLUBOVIĆ TIHOMIR
+GOLUBOVIĆ TOMO
+GOLUBOVIĆ VALERIJA
+GOLUBOVIĆ VELIZAR
+GOLUBOVIĆ VUKAŠIN
+GOLUBOVIĆ VUKAŠIN
+GOLUBOVIĆ ZORAN
+GOLUBOVIĆ ZVONIMIR
+GOLUBSKI MILICA
+GOLUBSKI RUŽA
+GOMBAŠ TAMAŠ
+GOMBAR ŠANDOR
+GOMBAR ELIZABETA
+GOMBAR FERENC
+GOMBAR IŠTVAN
+GOMBAR JANOŠ
+GOMBAR JANOŠ
+GOMBAR KATALIN
+GOMBAR MIHALJ
+GOMBAR ROZALIJA
+GOMBOŠ IŠTVAN
+GOMBOŠ IVICA
+GOMBOŠ KARLO
+GOMBOVIĆ BRANKO
+GOMIRAC ŽIVKO
+GOMIRAC BRANKO
+GOMIRAC STOJAN
+GONČIN SRETKO
+GONĐA ŽIVAN
+GONĐA MILENA
+GONĐA PETAR
+GONDA LADISLAV
+GONDAR RUŽA
+GONJA BRANIMIR
+GONJA MILOSLAV
+GONJA PETAR
+GORŠE ANDRIJA
+GORANOVIĆ DRAGO
+GORANOVIĆ MIRKO
+GORBANOV IVAN
+GORDANIĆ STOJAN
+GORDIĆ DARINKA
+GORDIĆ GOJKO
+GORDIĆ LAVINIJA
+GORDIĆ MILORAD
+GORDIĆ MILOVAN
+GORDIĆ RISTO
+GORDIĆ SLAVKO
+GORDIĆ STEVAN
+GORDIĆ VITOMIR
+GORDOŠ ŽUŽANA
+GOREČAN KARLO
+GOREC DRAGUTIN
+GOREC NADA
+GORENJAK RUDOLF
+GORIČANEC MIJO
+GORJANAC BRANKO
+GORJANAC MARIN
+GORNJAK KATICA
+GORTVA JOSIP
+GOSARIĆ FRANJA
+GOSPIĆ NEDELJKO
+GOSPOĐINAČKI RADOVAN
+GOSPODINOVIĆ IVAN
+GOSTIĆ ZDRAVKO
+GOSTIMIROVIĆ MARIN
+GOSTIMIROVIĆ PETAR
+GOSTOJIĆ ĐURĐINKA
+GOSTOJIĆ DUŠAN
+GOSTOJIĆ JOVAN
+GOSTOJIĆ LAZAR
+GOSTOJIĆ MILANA
+GOSTOJIĆ MILOŠ
+GOSTOJIĆ MIROSLAV
+GOSTOJIĆ MITAR
+GOSTOJIĆ SLAVKA
+GOSTOJIĆ SLOBODANKA
+GOSTOJIĆ TEODOR
+GOSTOVIĆ ĐORĐE
+GOSTOVIĆ BOGDAN
+GOSTOVIĆ IKA
+GOSTOVIĆ LJUBOMIR
+GOSTOVIĆ MOMIR
+GOTŠTAJN FERENC
+GOVEDARICA ČEDO
+GOVEDARICA ŽELIMIR
+GOVEDARICA DEJAN
+GOVEDARICA DRAGICA
+GOVEDARICA MILENKO
+GOVEDARICA MILOVAN
+GOVEDARICA MITAR
+GOVEDARICA MITAR
+GOVEDARICA PAVLE
+GOVEDARICA SIMO
+GOVEDARICA SLAVKO
+GOVEDARICA TATAJANA
+GOVEDARICA VELIMIR
+GOVEDARICA VLADIMIR
+GOVEDAROVIĆ JULIJA
+GOVEDAROVIĆ NIKOLA
+GOVEDAROVIĆ PETAR
+GOVORČIN ŽIVKA
+GOVORČIN BOGDAN
+GOVORČIN DARINKA
+GOVORČIN DELINKA
+GOVORČIN DIMITRIJE
+GOVORČIN DIMITRIJE
+GOVORČIN DUŠAN
+GOVORČIN GAVRA
+GOVORČIN LAZAR
+GOVORČIN MLADEN
+GOVORČIN SAVA
+GOVORČIN SLAVICA
+GOVORČIN SLOBODAN
+GOVORČIN STEVAN
+GOVORČIN STOJAN
+GOVORČIN VERA
+GOVORČIN VLADA
+GOVORČIN VLADIMIR
+GOVORČINOV MIROSLAV
+GRČANAC BRANKO
+GRČE MILAN
+GRČIĆ MILENKO
+GRČIĆ MILIVOJ
+GRČIĆ SLOBODAN DIPL ING
+GRČIĆ SVETISLAV
+GRČIĆ-TUBIĆ JOVANKA
+GRČIĆ VERICA
+GRČIĆ ZORKA
+GRČKI MILE
+GRČKI MIRJANA
+GRŠIĆ ĐORĐE
+GRŠIĆ ĐORĐE
+GRŠIĆ MILICA
+GRŠIĆ NIKOLA
+GRŠIĆ RUŽICA
+GRŠIĆ SOFIJA
+GRĐIĆ DRAGUTIN
+GRAČANIN IVAN
+GRAČANIN VALERIJA
+GRAČEK STEVAN
+GRAČIK SLAVKA
+GRAČIK STEVAN
+GRAČKO ŠANDOR
+GRAČKO OLGA
+GRAČKO OLGA
+GRAČKO ROZALIJA
+GRAŠA JOSIP
+GRAŠAR ANA
+GRAŠIĆ VALENTIN
+GRAŠIĆ ZDENKO
+GRAŠNER SOFIJA
+GRAĐIN MILOŠ
+GRAB FERENC
+GRABAR JOSIPA
+GRABAR JOSIP
+GRABAR MIRKO
+GRABEŽ ILE
+GRABEŽ JOJA
+GRABIĆ STEVAN
+GRABIĆ UROŠ
+GRABOCI RAMADAN
+GRABOVAC ACO
+GRABOVAC CVETA
+GRABOVAC DIMITRIJE
+GRABOVAC JOVAN
+GRABOVAC NEVENKA
+GRABOVAC RANKO
+GRABOVAC SIMEUN
+GRABUNDŽIJA JULIJANA
+GRADAŠČEVIĆ OSMAN
+GRADIĆ ŽIVKO
+GRADIĆ BOŽICA
+GRADIĆ DANKA
+GRADIĆ SPASOJE
+GRADINČEVIĆ ARSENIJE
+GRADINA SMILJKA
+GRADINAC ALEKSANDAR
+GRADINAC SREDOJE
+GRADINAC SREDOJE
+GRADINAC SREDOJE
+GRADINAROV DIMITRIJE
+GRADOJEVIĆ KATICA
+GRADOJEVIĆ LJUBICA
+GRAHEK NADA
+GRAHOVAC ĐORĐE
+GRAHOVAC ĐORĐE
+GRAHOVAC BRANISLAV
+GRAHOVAC CVIJO
+GRAHOVAC DANIJELA
+GRAHOVAC DRAGANA
+GRAHOVAC DRAGICA
+GRAHOVAC DUŠANKA
+GRAHOVAC DUŠAN
+GRAHOVAC DUŠAN
+GRAHOVAC DUŠAN
+GRAHOVAC GOJKO
+GRAHOVAC JANKO
+GRAHOVAC JOVAN
+GRAHOVAC JOVAN
+GRAHOVAC MIODRAG
+GRAHOVAC MIRKO
+GRAHOVAC MIROSLAV
+GRAHOVAC NADA
+GRAHOVAC NIKOLA
+GRAHOVAC OBRAD
+GRAHOVAC RADE
+GRAHOVAC RANKA
+GRAHOVAC SLAVICA
+GRAHOVAC SLAVKO
+GRAHOVAC SLAVKO
+GRAHOVAC SMILJA
+GRAHOVAC SPASO
+GRAHOVAC VASO
+GRAHOVAC VELIMIR
+GRAHOVAC ZDENKO
+GRAJLING EMIL
+GRANDIĆ MIJODRAG
+GRANDIĆ MILICA
+GRANDIĆ RADOVAN DR PROF
+GRANDIĆ STOJAN
+GRANIĆ MARIJA
+GRANIĆ MARIJA
+GRANIĆ NIKOLA
+GRANULA GOJKO
+GRAONJA ĐURO
+GRAOR MIROSLAV
+GRAOR SLAVKO
+GRAORAC ISIDOR
+GRAOVAC ĐORĐE
+GRAOVAC AORIKA
+GRAOVAC BLAŽ
+GRAOVAC BOGDAN
+GRAOVAC BOGDAN
+GRAOVAC BORISLAV
+GRAOVAC DUŠAN
+GRAOVAC MILOŠ
+GRAOVAC MILORAD
+GRAOVAC OLIVERA
+GRAOVAC-PADROV LJUBINKA
+GRAOVAC SLOBODANKA
+GRAPČAK JOSIP
+GRAVARA DRAGICA
+GRAVARA NIKOLA
+GRAVARA RADE
+GRBA KOSTA
+GRBA MILAN
+GRBA NEVENKA
+GRBA VUKOJICA
+GRBATINIĆ MILAN
+GRBATINIĆ MILOŠ
+GRBAV JON
+GRBAVAC NEVENKA
+GRBAVAC NIKOLA
+GRBIĆ ŽIVAN
+GRBIĆ ŽIVKO
+GRBIĆ ĐORĐE MR
+GRBIĆ ĐURAĐ
+GRBIĆ ĐURO
+GRBIĆ ANĐELIJA
+GRBIĆ ANKA
+GRBIĆ ANKICA
+GRBIĆ BOŠKO
+GRBIĆ BOGDANKA
+GRBIĆ BORIVOJE
+GRBIĆ BRANKO
+GRBIĆ DŽEVAD
+GRBIĆ DARINKA
+GRBIĆ DESA
+GRBIĆ DRAGAN
+GRBIĆ DRAGAN
+GRBIĆ DRAGAN
+GRBIĆ DRAGO
+GRBIĆ DRENKA
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠAN
+GRBIĆ DUŠICA
+GRBIĆ GOJKO
+GRBIĆ GORAN
+GRBIĆ JOVANKA
+GRBIĆ JOVANKA
+GRBIĆ JOVAN
+GRBIĆ JOVAN
+GRBIĆ JOVICA
+GRBIĆ JOVO
+GRBIĆ LAZAR
+GRBIĆ LJUBAN
+GRBIĆ LJUBIŠA
+GRBIĆ MARIJA
+GRBIĆ MILAN
+GRBIĆ MILAN
+GRBIĆ MILAN
+GRBIĆ MILENA
+GRBIĆ MILENA
+GRBIĆ MILENKO
+GRBIĆ MILENKO
+GRBIĆ MILE
+GRBIĆ MILIĆ
+GRBIĆ MILICA
+GRBIĆ MILKA
+GRBIĆ MILOŠ
+GRBIĆ MILOŠ
+GRBIĆ MILORAD
+GRBIĆ MILOVAN
+GRBIĆ MILOVAN
+GRBIĆ MILUTIN
+GRBIĆ MIRA
+GRBIĆ MIRA
+GRBIĆ MLADEN
+GRBIĆ NIKOLA
+GRBIĆ OSTOJA
+GRBIĆ PETAR
+GRBIĆ PETAR
+GRBIĆ PETAR
+GRBIĆ RADE
+GRBIĆ ROSA
+GRBIĆ SLOBODAN
+GRBIĆ STEVAN
+GRBIĆ STEVAN
+GRBIĆ STEVO
+GRBIĆ SVETKO
+GRBIĆ VASA DR
+GRBIĆ VERA
+GRBIĆ VID
+GRBIĆ VOJIN
+GRBIĆ VOJISLAV
+GRBIĆ VUKOSAVA
+GRBIN MARIJA
+GRBIN RADOSLAV
+GRBOVAC MIHALJ
+GRBOVIĆ ALIL
+GRBOVIĆ DRAGAN
+GRBOVIĆ GAVRILO
+GRBOVIĆ JOVAN
+GRBOVIĆ JOVAN
+GRBOVIĆ MILAN
+GRBOVIĆ MILAN
+GRBOVIĆ MIRČETA
+GRBOVIĆ MOMČILO
+GRBOVIĆ MURAT
+GRBOVIĆ MURAT
+GRBOVIĆ RADISAV
+GRBOVIĆ RUŽICA
+GRBOVIĆ SLAVKO
+GRBOVIĆ SMILJA
+GRCE ANICA
+GRCIĆ JOVAN
+GRCIĆ MILICA
+GRCIĆ NIKOLA
+GRCIĆ VESELIN
+GRCOVIĆ VERICA
+GRDIĆ IVICA
+GRDIĆ LUJKA
+GRDIĆ MARA
+GRDINIĆ MIRKO
+GRDINIĆ SLOBODAN
+GREČ ROZALIJA
+GREČEL KARLO
+GREČNIK JANKO
+GREČNIK MARIJA
+GREČNIK PAVLE
+GREBELDINGER LJUBICA
+GREBELDINGER PETAR
+GREBNJEV ROZALIJA
+GREBO NEDELJKO
+GREBOVIĆ RANKO
+GREGEC MARIJA
+GREGEC VILI
+GREGEC VILI
+GREGER HEDVIGA
+GREGOR JOSIP
+GREGORIĆ BRANKO
+GREGORIĆ DUŠAN
+GREGORIĆ MILANKA
+GREGORIN PETAR
+GREGOROVIĆ ANTONIJE
+GREGOROVIĆ IVAN
+GREGOROVIĆ VLADIMIR DIPL ING
+GREGUŠ ANTAL
+GREGUŠ JANOŠ
+GREGUŠ LASLO
+GREGUŠ PETAR
+GREGURIĆ IVAN
+GREISINGER DARINA
+GREIZER PETAR
+GREK SADIK
+GREKS PAVEL
+GREKU ADEM
+GREKU GANI
+GREKU HASAN
+GREKU MUHAMER
+GREKU NEZIR
+GREKU RAMIZ
+GREKU SABIT
+GREKULOVIĆ JOVAN
+GREKULOVIĆ STANČE
+GRGANOVIĆ ĐURA
+GRGAR ĐURICA
+GRGAR BRANKA
+GRGAR LAZAR
+GRGAR TOŠA
+GRGIČEVIĆ JULIŠKA
+GRGIĆ BOŠKO
+GRGIĆ BOJANA
+GRGIĆ DRAGOJE
+GRGIĆ MIJO
+GRGIĆ MILAN
+GRGIĆ SAVETA
+GRGIĆ SIMO
+GRGIĆ VERA
+GRGIĆ VERICA
+GRGIĆ ZVONIMIR
+GRGINČEVIĆ MIHAELA PROFESOR
+GRGINČEVIĆ VLADIMIR
+GRGUR DUŠAN
+GRGUR RADOSLAV
+GRGUR VLADA
+GRGUREVIĆ MIROSLAV
+GRGUREVIĆ RAJKO
+GRGURIĆ ANTUN
+GRGURIĆ JOSIP
+GRGURIĆ RUŽICA
+GRGUROV SLOBODAN
+GRGUROVIĆ MILORAD
+GRIFATONG KARLO
+GRIFATONG OTO
+GRIGORIJEV ALEKSANDAR
+GRIGORIJEVIĆ NIKOLA
+GRIGORIJEVIĆ PETAR
+GRIJAK DANICA
+GRIJAK KOSOVKA
+GRIJAK MILAN
+GRIJAKOVIĆ MILICA
+GRIJAKOVIĆ MILOŠ
+GRILEC STANKO
+GRILEC STANKO
+GRINHUT LADISLAV
+GRISA PETAR
+GRISHABER FRANJA
+GRIZELJ KARLO
+GRIZER PETAR
+GRIZER STEVAN
+GRKAVAC MILAN
+GRKAVAC MIROSLAV
+GRKINIĆ KOSARA
+GRKINIĆ MILAN
+GRKOVIĆ ŽIVAN
+GRKOVIĆ ĐORĐE
+GRKOVIĆ ĐURO
+GRKOVIĆ ANKA
+GRKOVIĆ BOŽIDAR
+GRKOVIĆ BOGOLJUB
+GRKOVIĆ BORISLAV
+GRKOVIĆ BRANKO
+GRKOVIĆ DANE
+GRKOVIĆ DUŠAN
+GRKOVIĆ DUŠAN
+GRKOVIĆ GAVRILO
+GRKOVIĆ JELENA
+GRKOVIĆ JOVAN DIPL ING
+GRKOVIĆ JOVAN
+GRKOVIĆ LJILJANA
+GRKOVIĆ MILICA DR
+GRKOVIĆ MIRJANA
+GRKOVIĆ STOJANKA
+GRKOVIĆ VERA
+GRKOVIĆ VOJIMIR
+GRKOVIĆ VOJIN
+GRKOVSKI PANTA
+GRLIĆ ĐORĐE
+GRLIĆ LJUBINKO
+GRLIĆ MILENKO
+GRLICA ŽELJKO
+GRLICA BOSILJKA
+GRLICA MILEVA
+GRLICA MILOVAN
+GRLICA STANKO
+GRLICA VOJIN
+GRLJEVIĆ MIRJANA
+GRMAŠ ĐURO
+GRMAŠ BRANKO
+GRMOŠ PREDRAG
+GRMUŠA ŽIVKO
+GRMUŠA ĐURO
+GRMUŠA MILAN
+GRMUŠA MILAN
+GRMUŠA RADE
+GRMUŠA SLAVKO
+GRMUŠA SMILJKA
+GRMUŠA STOJAN
+GRMUŠA VELKO
+GRNJA ĐURA
+GRNJA ANDRIJA
+GRNJA ANKA
+GRNJA-ASANI LJUMNIJA
+GRNJA DUŠAN
+GRNJA JANKO
+GRNJA JAN
+GRNJA JOVAN
+GRNJA JOVAN
+GRNJA JOVAN
+GRNJA JOVAN
+GRNJA JURAJ
+GRNJA LASLO
+GRNJA LJUDEVIT
+GRNJA MARIJA
+GRNJA OSKAR
+GRNJA SOFIJA
+GRNJA STEVAN
+GRNJA STEVAN
+GRNJA STEVAN
+GRNJA VLADIMIR
+GROŠEK ZVONIMIR
+GROŠKO MARIJA
+GROM CIRIL
+GROMILIĆ MILORAD
+GROS ĐORĐE
+GROS IVAN
+GROS LADISLAV
+GROZDANIĆ ĐORĐE
+GROZDANIĆ ENINKA
+GROZDANIĆ JOSIP
+GROZDANIĆ MILAN
+GROZDANIĆ MILAN
+GROZDANOV SLAVKO
+GROZDANOVSKI DAMJAN
+GROZDANOVSKI MILE
+GROZDANOVSKI PETAR
+GROZDIĆ BOŠKO
+GROZDIĆ BOGDAN
+GROZDIĆ DESANKA
+GROZDIĆ DOBRIVOJ
+GROZDIĆ DUŠAN
+GROZDIĆ JASMINA
+GROZDIĆ JOVAN
+GROZDIĆ JOVAN
+GROZDIĆ JOVAN
+GROZDIĆ KUZMAN
+GROZDIĆ LAZAR
+GROZDIĆ LJUBIŠA
+GROZDIĆ LJUBOMIR
+GROZDIĆ MILAN
+GROZDIĆ PETAR
+GROZDIĆ STEVAN
+GROZDIĆ VESNA
+GROZDIĆ ZDRAVKO
+GROZDIĆ ZORAN
+GROZDIĆ ZORICA
+GROZGUT TIBOR
+GRUBA DORU
+GRUBA TIBERIJE
+GRUBAČ GORDANA
+GRUBAČ MAKSA
+GRUBAČ MOMČILO
+GRUBAČ STANKA
+GRUBAČ TANASIJE
+GRUBAČIĆ GOJKO
+GRUBANOV DOBRIVOJ
+GRUBANOV DUŠANKA
+GRUBANOV NOVAK
+GRUBANOV ZAHARIJE
+GRUBEŠA NIKOLA
+GRUBEŠIĆ DRAGAN
+GRUBEŠIĆ DUŠAN
+GRUBEŠIĆ MELANIJA
+GRUBER EDUARD
+GRUBER EMIL
+GRUBER EVALD
+GRUBER FRANJA
+GRUBER RUDOLF
+GRUBETIĆ OLGA
+GRUBIŠA ANĐELO
+GRUBIŠIĆ MIRJANA
+GRUBIŠIĆ MIRKO
+GRUBIŠIĆ NIKOLA
+GRUBIĆ ŽARKO
+GRUBIĆ ŽARKO
+GRUBIĆ ANKA
+GRUBIĆ MILAN
+GRUBIĆ NIKOLA
+GRUBIN MILAN
+GRUBIN MIROSLAV
+GRUBJEŠIĆ BRANKO
+GRUBJEŠIĆ MILENKO
+GRUBJEŠIĆ MIRKO
+GRUBJEŠIĆ STEVO
+GRUBOR ADAM
+GRUBOR BRANKO
+GRUBOR EMA
+GRUBOR JEFTO
+GRUBOR-JOJIĆ SLAVICA
+GRUBOR JOVO
+GRUBOR LAZAR
+GRUBOR LAZO
+GRUBOR LJUBOMIR
+GRUBOR MILJANA
+GRUBOR MILOŠ
+GRUBOR NEĐO
+GRUBOR NEDELJKO
+GRUBOR NEVENA
+GRUBOR NIKOLA
+GRUBOR NIKOLA
+GRUBOR OLGA
+GRUBOR RADE
+GRUBOR SLOBODAN
+GRUBOR SRETO
+GRUBOR VUJO
+GRUBOR ZDRAVKO
+GRUBOROVIĆ MILE
+GRUBOVIĆ ILIJA
+GRUESKU-ĆIRIŠAN DELIJA
+GRUIČIĆ DRAGOLJUB
+GRUIK VERONIKA
+GRUJČIĆ NIKOLA
+GRUJANAC MILAN
+GRUJEV OGNJAN DIPL ING
+GRUJIČ SLOBODAN
+GRUJIČIĆ BILJANA
+GRUJIČIĆ JOVA
+GRUJIČIĆ MARINKO
+GRUJIČIĆ MIA
+GRUJIČIĆ MILICA
+GRUJIČIĆ MILOJE
+GRUJIČIĆ NENAD
+GRUJIČIĆ PETAR
+GRUJIČIĆ PREDRAG
+GRUJIČIĆ RADOMIR
+GRUJIČIN STANOJE
+GRUJIČKOV JOVAN
+GRUJIČKOV MILKA
+GRUJIĆ ŽIVKA
+GRUJIĆ ŽIVORAD
+GRUJIĆ ĐENA
+GRUJIĆ ĐENISIJE
+GRUJIĆ ĐORĐE
+GRUJIĆ ĐURĐICA
+GRUJIĆ ĐURA
+GRUJIĆ ĐURA
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ALEKSANDAR
+GRUJIĆ ANĐELKO
+GRUJIĆ ANDRIJA
+GRUJIĆ ANICA
+GRUJIĆ BOŽIDAR
+GRUJIĆ BOŽIDAR
+GRUJIĆ BORISLAV
+GRUJIĆ BORIVOJ
+GRUJIĆ BOSILJKA
+GRUJIĆ BRANISLAV
+GRUJIĆ BRANISLAV
+GRUJIĆ BRANKO
+GRUJIĆ CVIJETIN
+GRUJIĆ CVIJO
+GRUJIĆ DANICA
+GRUJIĆ DIMITRIJE
+GRUJIĆ DRAGICA
+GRUJIĆ DUŠAN
+GRUJIĆ DUŠAN
+GRUJIĆ DUŠAN
+GRUJIĆ FRANCIŠKA
+GRUJIĆ GAVRA
+GRUJIĆ GAVRILO
+GRUJIĆ GORAN
+GRUJIĆ GORICA
+GRUJIĆ GRUJA
+GRUJIĆ ILINKA
+GRUJIĆ IVAN DIPL ING
+GRUJIĆ IVANKA
+GRUJIĆ JANJA
+GRUJIĆ JELICA
+GRUJIĆ JELISAVETA
+GRUJIĆ JELKA DR
+GRUJIĆ JOVANKA
+GRUJIĆ JOVANKA
+GRUJIĆ JOVAN
+GRUJIĆ JOVAN
+GRUJIĆ JOVAN
+GRUJIĆ JOVAN
+GRUJIĆ JOVICA
+GRUJIĆ JULKA
+GRUJIĆ KOSTA DR
+GRUJIĆ KOSTA DR
+GRUJIĆ LAZAR
+GRUJIĆ LENKA
+GRUJIĆ LJILJANA
+GRUJIĆ LJUBICA
+GRUJIĆ LJUBOMIR
+GRUJIĆ LJUBO
+GRUJIĆ MARIJA
+GRUJIĆ MARIJA
+GRUJIĆ MARIJA
+GRUJIĆ MARIJA
+GRUJIĆ MARINA
+GRUJIĆ MIHAJLO
+GRUJIĆ MILAN
+GRUJIĆ MILAN
+GRUJIĆ MILAN
+GRUJIĆ MILENA
+GRUJIĆ MILENKO
+GRUJIĆ MILE
+GRUJIĆ MILICA
+GRUJIĆ MILOŠ
+GRUJIĆ MILOŠ
+GRUJIĆ MILORAD
+GRUJIĆ MILORAD
+GRUJIĆ MIRJANA
+GRUJIĆ MIROSLAV DIPL ING
+GRUJIĆ MIROSLAV
+GRUJIĆ MITAR
+GRUJIĆ NADA DR LEKAR
+GRUJIĆ NADA
+GRUJIĆ NADA
+GRUJIĆ NEDELJKO
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NIKOLA
+GRUJIĆ NOVAK
+GRUJIĆ PAVLE
+GRUJIĆ PETAR
+GRUJIĆ RADENKO
+GRUJIĆ RADE
+GRUJIĆ RADIŠA
+GRUJIĆ RADINKA
+GRUJIĆ RADIVOJ
+GRUJIĆ RADIVOJ
+GRUJIĆ RADMILA
+GRUJIĆ RADOJICA
+GRUJIĆ RADOVAN
+GRUJIĆ RUŽICA
+GRUJIĆ SANJA
+GRUJIĆ SAVA
+GRUJIĆ SAVA
+GRUJIĆ SINIŠA
+GRUJIĆ SLAVIŠA
+GRUJIĆ SLAVICA
+GRUJIĆ SLAVKA
+GRUJIĆ SLAVKO
+GRUJIĆ SLOBODAN DIPL ING
+GRUJIĆ SLOBODAN
+GRUJIĆ SLOBODAN
+GRUJIĆ SLOBODAN
+GRUJIĆ SLOBODAN
+GRUJIĆ SMILJANA
+GRUJIĆ SMILJA
+GRUJIĆ SMILJA
+GRUJIĆ SRĐAN
+GRUJIĆ STEVAN
+GRUJIĆ STEVAN
+GRUJIĆ STEVAN
+GRUJIĆ STEVAN
+GRUJIĆ STOJAN DR
+GRUJIĆ SVETOZAR
+GRUJIĆ SVETOZAR
+GRUJIĆ TATJANA
+GRUJIĆ VELIMIR
+GRUJIĆ VERICA
+GRUJIĆ VESELIN
+GRUJIĆ VESNA
+GRUJIĆ VOJISLAV
+GRUJIĆ ZDRAVKO
+GRUJIĆ ZLATICA
+GRUJIĆ ZLATICA
+GRUJIN DANICA
+GRUJIN DUŠAN
+GRUJIN LJUBICA
+GRUJIN MILAN
+GRUJIN MILOŠ
+GRUJIN NADA
+GRUJIN OLGA
+GRUJIN PETAR
+GRUJIN RADOSLAV
+GRUJIN SAŠA
+GRUJIN SMILJA
+GRUJIN SPASOJE
+GRUJIN TEREZA
+GRUJIN ZORAN
+GRUJINOVIĆ DRAGUTIN
+GRUJINOVIĆ ZORKA
+GRUJOVIĆ BRANISLAV
+GRUJOVIĆ MIHAJLO
+GRUJOVSKI LAZAR
+GRULOVIĆ RADOJKA
+GRULOVIĆ ZDENKO
+GRULOVIĆ ZDRAVKA
+GRULOVIĆ ZDRAVKO
+GRUNČIĆ JOVAN
+GRUNIK VLADIMIR DR
+GUŠA NIKOLA
+GUŠA PREDRAG
+GUŠAVAC ZORAN
+GUŠIĆ BOGDAN
+GUŠIĆ BORIS
+GUŠIĆ MANOJLO
+GUŠIĆ MANOJLO
+GUŠIĆ MILENKA
+GUŠIĆ RADENKO
+GUŠIĆ RADENKO
+GUŠIĆ UGLJEŠA
+GUŠIĆ VASILJKA
+GUŽALIĆ MARIJA
+GUŽALIĆ STJEPAN
+GUŽALIĆ VLADIMIR
+GUŽALIĆ ZVONIMIR
+GUŽELA LASLO
+GUŽVANJ IVICA
+GUŽVICA ĐORĐE
+GUŽVICA ĐORĐE
+GUŽVICA BRANISLAV
+GUŽVICA MILAN
+GUŽVICA MILAN
+GUŽVICA MIRKO
+GUŽVICA NIKOLA
+GUŽVICA STEVO
+GUŽVICA ZORAN
+GUBAŠ ANĐELIJA
+GUBAŠ MIROSLAV
+GUBAŠ VLADIMIR
+GUBAŠ ZAGORKA
+GUBANDA BARBARA
+GUBANDA LADISLAV
+GUBERINA DUŠAN
+GUBERINA SLOBODAN
+GUBERINIĆ LJUBICA
+GUBERNOV JULIJANA
+GUBIĆ MIRKO
+GUBICA JOVAN
+GUBIK ŠANDOR
+GUBIK ŠANDOR
+GUBIK KARLO
+GUBIK KATARINA
+GUBIK STEVAN
+GUC STEVAN
+GUCIJAN STEVA
+GUCU MIRJANA
+GUCULJ JELENA
+GUCULJ MARGITA
+GUCULJ VERA
+GUCUNJA JOVAN
+GUCUNJA MILAN
+GUCUNJA MILORAD
+GUCUNJA MILORAD
+GUCUNSKI ŽIVKA
+GUCUNSKI ĐORĐE
+GUCUNSKI BOŽIDAR
+GUCUNSKI BORISLAV
+GUCUNSKI BRANISLAV
+GUCUNSKI IVANKA
+GUCUNSKI IVANKA
+GUCUNSKI JELENA
+GUCUNSKI JOVAN
+GUCUNSKI MARIJA
+GUCUNSKI NADA
+GUCUNSKI PERSIDA
+GUCUNSKI RADE
+GUCUNSKI SIMA
+GUDALJ MARTA
+GUDALOVIĆ MOMIR
+GUDALOVIĆ RADMILA
+GUDELJ ĐORĐE
+GUDELJ BRANISLAV DIPL ING
+GUDELJ JOVAN
+GUDELJ MARIJA
+GUDELJ MILAN
+GUDELJ MILENA
+GUDELJ MOMČILO
+GUDELJ NEDELJKA
+GUDELJ SAVA DR
+GUDOVIĆ DRAGOMIR
+GUDOVIĆ PAVLE
+GUDOVIĆ RADMILA
+GUDOVIĆ STEVAN
+GUDURIĆ ALEKSANDAR
+GUDURIĆ ANĐELKA DR
+GUDURIĆ BRANIMIR DR
+GUDURIĆ DEJAN
+GUDURIĆ JOVAN
+GUDURIĆ SVETISLAV
+GUDURIĆ VASA
+GUDURIĆ ZORAN
+GUELMINO ŠANDOR
+GUELMINO FRIĐEŠ
+GUGA VERA
+GUGA VERA
+GUGIĆ SINIŠA
+GUGLETA SRBISLAV
+GUKODI MLADEN
+GULAČI JOSIP
+GULAĆI LJUBINKA
+GULAN BOŠKO
+GULAN BRANISLAV
+GULAN VIDOSAVA
+GULD VALERIJA
+GULEVIĆ TATJANA
+GULEVIĆ VLADIMIR DR LEKAR
+GULEVSKI DIMČE
+GULEVSKI DIMČE
+GULEVSKI DIMČE
+GULEVSKI DIMČE
+GULEVSKI DIMČE
+GULEVSKI MIHAJLO
+GULEVSKI SAŠA
+GULIČ IMRE
+GULIĆ STANKO
+GULIĆ VESNA
+GULIN MARICA
+GULIN ZLATKO
+GULJAŠ MARIJA
+GULJAŠ TEREZIJA
+GULJAŠ VESNA
+GULJPA MILAN
+GULJPA SAVA
+GUNEK MARIJA
+GUNEK MATE
+GUNEK TOMA
+GUNIĆ MILENA
+GUNJEVIĆ MILE
+GUNJEVIĆ NEVENKA
+GURAN TAMAŠ
+GURJANOV ŽARKO
+GURJANOV BLAGOJE
+GURJANOV JELICA
+GURJANOV VASA
+GUROVIĆ BOŽIDAR
+GUSIĆ MILEVA
+GUSMAN ĐORĐE DR LEKAR
+GUSMAN DRAGICA
+GUSMAN GERHARD
+GUSMAN HILDA
+GUSMAN IMRE
+GUT JANKO
+GUT JOVAN
+GUT NATALIJA
+GUTAI JOLAN
+GUTAI MIHALJ
+GUTAJI ILEŠ
+GUTALJ MILORAD
+GUTEŠA ĐURO
+GUTEŠA MIRKO
+GUTEŠA NIKOLA
+GUTEŠA VOJISLAV
+GUTI ŽOLT
+GUTIĆ ŠPIRO
+GUTIĆ GORAN
+GUTMAN ALEKSANDAR
+GUTMAN DARINKO
+GUTOVIĆ ANĐELKO
+GUTOVIĆ DANIELA
+GUTOVIĆ MILENKO
+GUTOVIĆ RADE
+GUTOVIĆ RISTO
+GUTOVIĆ SINIŠA
+GUTOVIĆ SNEŽANA
+GUTOVIĆ ZORAN
+GUTVAJN ADAM
+GUTVAJN ADAM
+GUTVAJN ELIZABETA
+GUTVAJN EVA
+GUZIJAN JOVO
+GUZIJAN MILAN
+GUZIJAN NIKOLA
+GUZINA ČEDOMIR
+GUZINA LJUBISAV
+GUZINA MIHAJLO
+GUZINA MILORAD
+GUZINA MILORAD
+GUZINA MILOSAV DR
+GUZINA VLADIMIR
+GUZINA VOJISLAV
+GUZINA VUKAŠIN
+GVERIĆ BORIVOJ
+GVERIĆ SNEŽANA
+GVERO LAZO
+GVERO MIRA
+GVOŽĐAN BORISLAVA
+GVOŽĐAN MIHAJLO
+GVOŽĐAN RADOVAN
+GVOIĆ BRANKO
+GVOIĆ MILAN
+GVOIĆ VALERIJA
+GVOJIĆ BORISLAV
+GVOJIĆ MILAN
+GVOJIĆ STANKO
+GVOJIĆ STEVAN
+GVOKA NADA
+GVOZDEN BOSILJKA
+GVOZDEN BRANKO
+GVOZDEN SRETO
+GVOZDEN VLADIMIR
+GVOZDENAC ŽIVKO
+GVOZDENAC BORA
+GVOZDENAC BORA
+GVOZDENAC BORKA
+GVOZDENAC DRAGOLJUB
+GVOZDENAC DUŠAN
+GVOZDENAC RAJKO
+GVOZDENAC SNEŽANA
+GVOZDENOV JOVAN
+GVOZDENOV MILAN
+GVOZDENOVIĆ ŽIVORAD
+GVOZDENOVIĆ ĐORĐE
+GVOZDENOVIĆ ĐURO
+GVOZDENOVIĆ BOŽO
+GVOZDENOVIĆ BRANKO
+GVOZDENOVIĆ BRANKO
+GVOZDENOVIĆ DEJAN
+GVOZDENOVIĆ DRAGINJA
+GVOZDENOVIĆ DUŠAN DR
+GVOZDENOVIĆ DUŠAN
+GVOZDENOVIĆ EMILIJA
+GVOZDENOVIĆ LJILJANA
+GVOZDENOVIĆ LJUBO
+GVOZDENOVIĆ MIĆO
+GVOZDENOVIĆ MILIVOJE
+GVOZDENOVIĆ MILOŠ
+GVOZDENOVIĆ MIRKO
+GVOZDENOVIĆ MIROSLAV
+GVOZDENOVIĆ MIROSLAV
+GVOZDENOVIĆ NIKOLA
+GVOZDENOVIĆ PETAR
+GVOZDENOVIĆ RAJKO
+GVOZDENOVIĆ RAJKO
+GVOZDENOVIĆ RAJKO
+GVOZDENOVIĆ STEVO
+GVOZDENOVIĆ-TODOROVIĆ ZAGORKA
+GVOZDENOVIĆ-TODOROVIĆ ZAGORKA
+GVOZDENOVIĆ VIDA
+GVOZDENOVIĆ VITOMIR
+GVOZDENOVIĆ VLADA
+GVOZDENOVIĆ VLADA
+GVOZDENOVIĆ ZORICA
+GVOZDIĆ ĐORĐE
+GVOZDIĆ MILAN
+HAŠOVIĆ ANDRIJA
+HAŠOVIĆ IMRE
+HAĐINAC BRANISLAV
+HABAŠ ZORAN
+HABAJEC LJUBICA
+HABEK ŽELJKO
+HABENŠUS MILENKO
+HABENŠUS MILENKO
+HABIJAN FRANJA
+HABIJAN VESNA
+HABIJANEC TIHOMIR
+HABOR JAN
+HABRAM ARANKA
+HABRAM KAROLJ
+HABUDA JOSIP
+HABUDA VALENTIN
+HACOPULOS ĐORĐE
+HACOPULOS NADA
+HADŽI ALEKSANDAR
+HADŽI KOSTA ADVOKAT
+HADŽI-MANOV LJUPČO
+HADŽI-PAVLOVIĆ OLGA
+HADŽI RAMADAN
+HADŽIĆ BOSILJKA
+HADŽIĆ GORANKA
+HADŽIĆ IBRAHIM
+HADŽIĆ ISMET
+HADŽIĆ LAZAR
+HADŽIĆ LAZAR
+HADŽIĆ MILAN DR
+HADŽIĆ MILEVA
+HADŽIĆ MONIKA
+HADŽIĆ MUHAREM
+HADŽIĆ NADA
+HADŽIĆ OLGA DR
+HADŽIĆ PAVLE
+HADŽIĆ RADIVOJ
+HADŽIĆ SLAVUJ
+HADŽIĆ VLADIMIR
+HADŽIAHMETOVIĆ RASIM
+HADŽIARSIĆ DOBRIVOJE
+HADŽIBABIĆ DRAGAN
+HADŽIBABIĆ RADOMIR
+HADŽIBABIĆ RADOMIR
+HADŽIBABIĆ ZORICA
+HADŽIHASANOVIĆ RADMILA
+HADŽIVUKOVIĆ STEVAN DR PROF
+HADŽOVIĆ JELISAVETA
+HADŽOVIĆ RATKO
+HADADI SMILJA
+HADIK ADRIEN
+HADIK JOŽEF
+HADNAĐ GIZELA
+HADNAĐ TEREZA
+HADNAĐ VERA
+HADNAĐ VERONIKA
+HADNAĐEV ARSEN
+HADNAĐEV DUŠAN DR
+HADNAĐEV DUŠAN
+HADNAĐEV ISIDOR
+HADNAĐEV MIODRAG
+HADNAĐEV MIRKO
+HADNAĐEV STANISLAV
+HADNAĐEV STEVAN
+HADNAĐEV STOJAN
+HAIN BRANISLAV
+HAIN ZORICA
+HAJČUNK JOŽEF
+HAJČUNK MIRKO
+HAJAŠ JELISAVETA
+HAJDAREVIĆ ORHAN
+HAJDARPAŠIĆ ESAD
+HAJDER ĐORĐE
+HAJDER DRAGAN
+HAJDER LUKA
+HAJDER MARICA
+HAJDER MARKO
+HAJDER MILOŠ
+HAJDER RADE
+HAJDER RAJKO
+HAJDER STOJANKA
+HAJDER VESNA
+HAJDER ZORAN
+HAJDIĆ ANĐELKO
+HAJDIN BOGDAN
+HAJDIN SLAVKO
+HAJDU ANA
+HAJDU ANDRIJA
+HAJDU ANTAL
+HAJDU FERENC
+HAJDU-GRAJLAH EMA
+HAJDU ILONKA
+HAJDU IRENA
+HAJDU JOŽEF
+HAJDU JOLIKA
+HAJDU JOSIP
+HAJDU KATICA
+HAJDU KLARA
+HAJDU LAJOŠ
+HAJDU LASLO
+HAJDU LJUDEVIT
+HAJDU MARIJA
+HAJDU OTO
+HAJDU PAVLE
+HAJDU STEVAN
+HAJDUK ĐORĐE
+HAJDUK IRINA
+HAJDUK JANKO
+HAJDUKOVIĆ ARSEN
+HAJDUKOVIĆ BOŠKO
+HAJDUKOVIĆ BOGDAN
+HAJDUKOVIĆ DESANKA
+HAJDUKOVIĆ DUŠAN
+HAJDUKOVIĆ JOVANKA
+HAJDUKOVIĆ LJILJANA
+HAJDUKOVIĆ MILANKA
+HAJDUKOVIĆ MILAN
+HAJDUKOVIĆ NADEŽDA
+HAJDUKOVIĆ OTO
+HAJDUKOVIĆ RADOSLAV DIPL ING
+HAJDUKOVIĆ SMILJA
+HAJNAL ANTAL
+HAJNAL GABRIJELA
+HAJNAL IVAN
+HAJNAL LASLO
+HAJNAL LJUBICA
+HAJNAL MARIJA
+HAJNAL NIKOLA
+HAJNC ĐORĐE
+HAJNC JOSIP
+HAJNC JOVAN
+HAJNC ZLATA
+HAJTFOGEL VLADA
+HAJTFOGEL VLADISLAV
+HAJTL IVAN
+HAJVAZ RAJKO
+HAJZLER ĐORĐE
+HAJZLER DUŠAN
+HAJZLER JOVAN
+HAKAČ MATIJA
+HAKER IVAN
+HAKER TEREZA
+HALAŠ ZUZANA
+HALAŠI ĐORĐE
+HALAŠI ETELKA
+HALAŠI-KIŠ FRANKA
+HALAŠI RUŽA DR ING
+HALAI IMRE
+HALAI MARIJA
+HALAI PETAR
+HALAI SABOLČ
+HALAPI DRAGICA
+HALAPI IRENA
+HALAPI IVAN
+HALAS ŠANDOR
+HALAS FRANJA
+HALAS MARIJA
+HALAVANJA ŽELJKO
+HALAVANJA LJUBAN
+HALAVANJA MILAN
+HALAVANJA RADE
+HALAVANJA STEVA
+HALER STEVAN
+HALILOVIĆ MUHAREM
+HALIM SEFER
+HALUPKA JOŽEF DR
+HAM ALEKSANDAR
+HAMU MIHALJ
+HAMZIĆ MILENA
+HAN SOFIJA
+HANCKO JOŽEF DR
+HANCKO JOŽEF DR
+HANDA KATICA
+HANG MATEJ
+HANG VLATKO
+HANGA ANTUN
+HANGA ANTUN
+HANGA MARIJA
+HANGOVSKI ANDRIJA
+HANSKO JOSIP
+HANSKO STEVAN
+HANUŠIĆ SEAD
+HARAČIĆ DŽEMAL
+HARAČIĆ LJUBICA
+HARAK PAVLE
+HARAMBAŠIĆ BOŽANA
+HARAMIJA MARIJA
+HARANGOZO ŠANDOR
+HARANGOZO ŠANDOR
+HARANGOZO ŠARIKA
+HARANGOZO BALINT
+HARANGOZO BOŠKO
+HARANGOZO ERŽEBET
+HARANGOZO ERŽEBET
+HARANGOZO IŠTVAN
+HARANGOZO IMRE
+HARANGOZO-JEGRIŠKI MARIJA
+HARANGOZO KAROLJ
+HARANGOZO-TORI ŽUŽANA
+HARANGOZO-TORI ĐURA
+HARANGOZO-TORI BOŽIDAR
+HARANGOZO-TORI IRINA
+HARANGOZO-TORI IVAN
+HARANGOZO-TORI JOAKIM
+HARANGOZO-TORI JOVAN
+HARANGOZO-TORI JOVAN
+HARANGOZO-TORI LJUBICA
+HARANGOZO-TORI NESTOR
+HARANGOZO-TORI NIKOLA
+HARANGOZO-TORI SILVESTER
+HARANGOZO-TORI STOJANKA
+HARANGOZO-TORI VESNA
+HARANGOZO-TORI VLADIMIR
+HARANGOZO-TORI VLADIMIR
+HARFMAN MARA
+HARHAI ŽELJKO
+HARHAI BOŽANA
+HARHAI JANKO
+HARHAJI HELENA
+HARHAJI JANKO
+HARHAJI JOAKIM
+HARHAJI JOAKIM
+HARHAJI LJUBOMIR
+HARHAJI LJUBOMIR
+HARHAJI MIRON
+HARHAJI NIKOLA
+HARHAJI VLADIMIR
+HARHAJI VLADIMIR
+HARIŠ JELISAVETA
+HARIŠ JELISAVETA
+HARIŠ LJUBIVOJE
+HARIŠ PIROŠKA
+HARIJAN ŠTEFICA
+HARKAI STEVAN
+HARMAT KONRAD
+HARPANJ MIHAL
+HART MARGITA
+HARTIG IRENA
+HARTIG TIBOR
+HARTMAN KATARINA
+HARTMAN VESNA
+HAS ALEKSANDAR
+HAS KARLO
+HAS MARTA
+HAS MILICA
+HASANAGIĆ ESNAF
+HASANAGIĆ MILAN
+HASENAUER JOSIP
+HASIĆ DŽEMAL
+HATALA MATE
+HATALA ZOLTAN
+HAUG ANICA
+HAUK ROBERT
+HAUPTMAN SLAVKO
+HAURDIĆ RABIJA
+HAUSER HILDA
+HAUZER OSKAR
+HAUZLOHNER IRENA
+HAVJAR VELIZAR
+HAVLEK FRANJA
+HAVLEK JOSIP
+HAVRAN ZLATKO
+HAVZI ŠERIF
+HAVZI LIMAN
+HEĐEŠ JANOŠ
+HEĐELAI STEVAN
+HEĐI ALEKSANDAR
+HEĐI MILICA
+HEDEŠ JANOŠ
+HEGEDIŠ ĐERĐ
+HEGEDIŠ BELA
+HEGEDIŠ BERTA
+HEGEDIŠ GEZA
+HEGEDIŠ IŠTVAN
+HEGEDIŠ JOŽEF
+HEGEDIŠ JOHANA
+HEGEDIŠ JOZEFINA
+HEGEDIŠ TEREZIJA
+HEGEDIŠ ZOLTAN
+HEGEDUŠ KAROLINA
+HEIM MAGDA
+HEKIĆ SLAVICA
+HELER GABRIJEL
+HELER INGRID
+HEM JANOŠ
+HEMI ANICA
+HEMI VLADISLAV
+HEMON BORIS
+HEMON MARIJA
+HEMON SLAVICA
+HEMON TEREZIJA
+HEMON VLADIMIR
+HEMON VLADIMIR
+HEMRIH KLARA
+HEMUN MIHAJLO
+HEN ŽELJKO
+HEN IVICA
+HEN MARIJA
+HENGL DAMJAN
+HENGL JOVAN
+HENGL RIHARD
+HENIŠ VILMA
+HENKEL FILIP
+HEP MAKSIM
+HERČIK ROBERT
+HERAK IVAN
+HERAK STANISLAV
+HERAKOVIĆ ALEKSANDAR
+HERAKOVIĆ BRANISLAV
+HERAKOVIĆ SLOBODAN
+HERBEZ MILENKO
+HERBST ANTUN
+HERBUT ĐORĐE
+HERBUT GABOR
+HERBUT JOŽEF
+HERBUT KAROLJ
+HERBUT KIRIL
+HERBUT MIHAJLO
+HERBUT SILVESTER
+HERCEG ĐORĐE
+HERCEG DRAGOSLAV
+HERCEG KARLO
+HERCENBERGER ĐULA
+HERCENBERGER ALEKSANDAR
+HERCENBERGER ALEKSANDAR
+HERCENBERGER GIZELA
+HERCENBERGER IREN
+HERCOG ĐORĐE
+HERDI JOSIP
+HERDI LJILJANA
+HERDI-STOJANOVIĆ ANGELINA
+HERENČIĆ LEOPOLD
+HERENDIJA ĐORĐE
+HERENDIJA MARKO
+HERETA SLOBODAN
+HERGET KATICA
+HERIĆ MIHOVIL
+HERING AMALIJA
+HERING IVAN
+HERMAN ČILA
+HERMAN ANĐA
+HERMAN IVAN
+HERMAN KARLO
+HERMAN VILIM
+HEROR LAZAR
+HERPKA DUBRAVKA
+HERPKA IVAN DR ING
+HERTL JOŽEF
+HERTL NADA
+HES ŠANDOR
+HES LASLO
+HESKO VIKTORIJA
+HEVER MARGITA
+HEVER PAVLE
+HEVERA MIHAJLO
+HEVERA ZUZANA
+HEVIZI ILONA
+HEVIZI PETAR
+HIĆIL ALEKSANDAR
+HIĆIL JOSIP
+HIĆIL KATARINA
+HIŽA JOVAN
+HIŽA MIŠA
+HIBŠ MARIJA
+HIBŠ RIHARD SUDIJA
+HIBŠ TANKRED
+HIEL KSENIJA
+HIL JOSIP
+HIL VERA
+HILIER-KOLAROV VALERIJA DR
+HILIER LAJOŠ DIPL ING
+HINIĆ ĐORĐE
+HINIĆ BRANKO
+HINIĆ MANE
+HINIĆ MILICA
+HINIĆ PREDRAG
+HIPIK ŠTEFANA
+HIPIK JOVAN
+HIPIK KARLO
+HIRŠ STJEPAN
+HIRŠENBERGER MARTA
+HIRŠENBERGER STEVAN DIPL ING
+HIRŠMAN ANTUN
+HIRJOVATI LJUBICA
+HIRJOVATIJ MIRON
+HIRMAN FRANJA
+HIRMAN ZOLTAN
+HITENBERGER ĐORĐE
+HITI FRANC
+HITL ELIZABETA
+HITL STEVAN
+HLAĐIK ZVONKO
+HLADNI IVAN
+HLADNI SLAVKO
+HLAPEC STJEPAN
+HLAVSA SLAVICA
+HLEBEC NORBERT
+HLOŽAN JOVAN
+HMILJ ILIJA
+HNATKO MIŠKO
+HOČKO AJET
+HOŠEK ČABA
+HOŠEK FRANJA
+HOBRAT MARTA
+HODŽA RAMADAN
+HODŽIĆ HALID
+HODŽIĆ OMER
+HODŽIĆ STAZA
+HODA MEJREM
+HODAK MILE
+HODAK SILVESTAR
+HODAK SOFIJA
+HODAK VERA
+HODAK VLADISLAV
+HODAR JOSIP
+HODI ERNE
+HODI ERNE
+HODI FERENC
+HODI VILMA
+HODIK BARBARA
+HODINKA MIHAILO
+HODNIK ALOJZ
+HODOBA DANIJELA
+HODOLIČ JANKO
+HODOLIĆ JAROSLAV
+HOFMAN ALEKSANDAR
+HOFMAN ARTUR
+HOFMAN BRUNO
+HOFMAN FRANJA
+HOFMAN LADISLAV
+HOFMAN MARIJA
+HOFMAN VESNA
+HOHNJEC DARKO
+HOHNJEC PETAR
+HOHNJEC VLADIMIR
+HOLCER LADISLAV
+HOLERBAH KATICA
+HOLI ANDRIJA MR PH
+HOLI KATARINA
+HOLIČEK LASLO
+HOLIČEK MARGIT
+HOLIČEK STEVAN
+HOLIGA KARLO
+HOLIGA SNEŽANA
+HOLIGA STEVAN
+HOLIK JANKO
+HOLIK JOAKIM
+HOLO LEONTINA
+HOLO VILMOŠ DIPL ING
+HOLOD STEVAN
+HOLODKOV VLADIMIR
+HOLOT RUŽA
+HOLOVKA ANKA
+HOLOVKA BRANKA
+HOLOVKA NATALIJA
+HOLPERT ERNEST
+HOLPERT LUJO
+HOMA ANA
+HOMA BOSILJKA
+HOMA EUGEN
+HOMA JANKO
+HOMA JOVGEN
+HOMA MIROSLAV
+HOMA NIKOLA
+HOMA PETAR DIPL ING
+HOMA VLADIMIR
+HOMA VLADIMIR
+HOMA VUKICA
+HOMOLJA JOŽEF
+HOR BOŽICA
+HOR ILIJA
+HOR PAVLE
+HORAK MIHAJLO
+HORAK NANDOR
+HORGAS IŠTVAN
+HORGAS MATILDA
+HORGOŠI ĐULA
+HORGOŠI KATARINA
+HORIĆ JELISAVETA
+HORIĆ KOSIM
+HORN VALENTIN
+HORNJAK ŽIVA
+HORNJAK ĐURO
+HORNJAK DIMITRIJE
+HORNJAK DIMITRIJE
+HORNJAK IVAN
+HORNJAK JANOŠ
+HORNJAK JAN
+HORNJAK MAGDALENA
+HORNJAK MIŠA
+HORNJAK MIRKO
+HORNJAK OLGA
+HORNJAK PETAR
+HORNJAK-PUŠKAŠOVA MARIJA
+HORNJAK SOFRONA
+HORNJAK STEVAN
+HORNJAK VLADA
+HORNJAK VLADA
+HORNJAK VLADIMIR
+HORNJIK ŠANDOR
+HORNJIK ĐERĐ
+HORNJIK ĐERĐ
+HORNJIK ZOLTAN
+HORNOK ZOLTAN
+HORNUNG-ŠOMAN ŠTEFANIJA
+HOROŠILOV SOFIJA
+HOROŠKO ALEKSANDAR
+HOROŠKO STEFAN DR
+HOROVIC DRAGINJA
+HOROVIC VLADIMIR
+HORTI DRAGANA
+HORTI GEZA
+HORTI JOSIP
+HORTI VLADISLAV
+HORVACKI MARKO
+HORVACKI SNEŽANA
+HORVAT ŠANDOR
+HORVAT ŠANDOR
+HORVAT ŽOLT
+HORVAT ĐULA
+HORVAT ĐURA
+HORVAT AGI
+HORVAT ALEKSANDAR
+HORVAT ALEKSANDAR
+HORVAT ANDRAŠ
+HORVAT ANDRIJA
+HORVAT ANKA
+HORVAT ANTAL
+HORVAT ARPAD
+HORVAT BELA
+HORVAT BISERKA
+HORVAT DEŽE
+HORVAT DIMITRIJE
+HORVAT EDIT
+HORVAT ELIZABETA
+HORVAT ERŽEBET
+HORVAT ERIKA
+HORVAT ESTER
+HORVAT FERENC
+HORVAT FERENC
+HORVAT FERENC
+HORVAT FERENC
+HORVAT FRANJA
+HORVAT FRANJA
+HORVAT FRANJO
+HORVAT GABOR
+HORVAT GIZELA
+HORVAT GROZDANA
+HORVAT IŠTVAN
+HORVAT IGOR
+HORVAT IGOR
+HORVAT ILONKA
+HORVAT IMRE
+HORVAT IMRE
+HORVAT IMRE
+HORVAT IRENA
+HORVAT IRENKA
+HORVAT IVANKA
+HORVAT IVAN
+HORVAT JANOŠ DIPL ING
+HORVAT JANOŠ
+HORVAT JELENA
+HORVAT JOŽEF
+HORVAT JOŽEF
+HORVAT JOŽEF
+HORVAT JOSIP
+HORVAT JOSIP
+HORVAT JOSIP
+HORVAT JOSIP
+HORVAT JOSIP
+HORVAT JOVAN
+HORVAT KALMAN
+HORVAT KARLO
+HORVAT KARLO
+HORVAT KARLO
+HORVAT KAROLJ
+HORVAT KATALIN
+HORVAT KATARINA
+HORVAT KATICA
+HORVAT KATICA
+HORVAT LAJOŠ
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LASLO
+HORVAT LUDVIG
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MARIJA
+HORVAT MATO
+HORVAT MIHALJ
+HORVAT-MILITIČI KAROLJ DR
+HORVAT MILKA
+HORVAT MILKA
+HORVAT MILOSLAV
+HORVAT MIRKO
+HORVAT PAJA
+HORVAT PAVLE
+HORVAT PETAR
+HORVAT RADMILA
+HORVAT ROŽA
+HORVAT ROZALIJA
+HORVAT RUŽA
+HORVAT RUDOLF
+HORVAT SAMUEL
+HORVAT SILVESTER
+HORVAT SLAVKO
+HORVAT SMILJA
+HORVAT STEVAN
+HORVAT TAMAŠ
+HORVAT TEREZA
+HORVAT TEREZA
+HORVAT TIBOR
+HORVAT TIBOR
+HORVAT TIBOR
+HORVAT TIBOR
+HORVAT VALERIJA
+HORVAT VERICA
+HORVAT VERONIKA
+HORVAT VERONIKA
+HORVAT VLADIMIR
+HORVAT ZOLTAN
+HORVAT ZOLTAN
+HORVATIĆ MARIJAN
+HORVATIĆ OLGA
+HORVATIĆ SLAVKO
+HORVATIĆ ZVONIMIR
+HORVATOV RASTKO
+HORVATOVIĆ ĐORĐE
+HORVATOVIĆ KATICA
+HORVATOVIĆ MIRJANA
+HORVATOVIĆ PAVLE DR
+HORVATSKI DUŠAN
+HORVATSKI LJUBICA
+HORVATSKI LJUBICA
+HORVATSKI MILENKO
+HORVATSKI MIROSLAV
+HORVATSKI RADIVOJ
+HORVATSKI RUŽICA
+HOSTIĆ BISERKA
+HOSTNIK KATICA
+HOSTONSKI STANA
+HOT ADEM
+HOUF ELVIRA
+HOVAN MARTIN
+HOVAN MIROSLAV
+HOVANEC VIKTORIJA
+HRĆAN JOVAN
+HRĆAN JOVAN
+HRABAR IVO
+HRABOVSKI ANTON
+HRABOVSKI ANTON
+HRABOVSKI BOJANA DR
+HRABOVSKI EDGAR DIPL OEC
+HRABOVSKI IMRE
+HRABOVSKI LADISLAV
+HRABRIĆ EUGEN
+HRADEČNI BELA
+HRADEČNI FRANJA
+HRADEČNI JOSIP
+HRANIČAK MIRKO
+HRANISAVLJEVIĆ PAVLE
+HRAPOVIĆ OSMAN
+HRDLIČKA DESANKA
+HREŠČAK VLADIMIR
+HRENAR LAURA
+HRGIĆ LJUBOMIR
+HRGIĆ MILAN
+HRGIĆ VLASTIMIR
+HRIČANEK MIROSLAV
+HRIČANEK NEDELJKA
+HRIBLJAN ANTON
+HRIBOVŠEK FRANC
+HRICKANIĆ LUKA
+HRIEŠIK MARIJA
+HRIJEŠIK JAN
+HRIJEŠIK JURAJ
+HRISTIĆ BLAGOJE
+HRISTIĆ DIMITRIJE
+HRISTIĆ LEPOSAVA
+HRISTIĆ LJUBICA
+HRISTIDIS APOSTOL
+HRISTIDIS NIKOLA
+HRISTIDIS NIKOLA
+HRISTOV BRANKO
+HRISTOV MILOSIJA
+HRISTOV VESNA
+HRISTOV ZAGORKA
+HRISTOVA EMILIJA
+HRISTOVSKI TOMA
+HRISTU TIHOMIR
+HRKALOVIĆ BOŠKO
+HRNČAR SAMUEL
+HRNČIĆ MARGITA
+HRNČIĆ MIHAD
+HRNČIĆ VAHID
+HRNČIAR ANA
+HRNČIAR JANKO
+HRNČIAROVA TEREZIA
+HRNČJAR ANDREJ
+HRNČJAR VLADIMIR
+HRNJAČKI ŽARKO
+HRNJAČKI ĐORĐE
+HRNJAČKI JELICA
+HRNJAČKI JOVAN
+HRNJAČKI LAZICA
+HRNJAČKI MILKA
+HRNJAČKI MLADEN
+HRNJAK DANE
+HRNJAK DRAGAN
+HRNJAK DUŠAN
+HRNJAK LJILJANA
+HRNJAK MARIJA
+HRNJAK RAJKO
+HRNJAK VELJKO
+HRNJAKOVIĆ BRANISLAV
+HRNJAKOVIĆ IVANA
+HRNJAKOVIĆ JOVAN
+HRNJAKOVIĆ MIRKO
+HRNJEZ OBRAD
+HROMIŠ AMALIJA
+HROMIŠ ANA
+HROMIŠ BARBARA
+HROMIŠ BORISLAV
+HROMIŠ JOAKIM
+HROMIŠ JOAKIM
+HROMIŠ KATICA
+HROMIŠ MARIJA
+HROMIŠ MELANIJA
+HROMIŠ MIHAJLO DIPL ING
+HROMIŠ MIROSLAV
+HROMIŠ MIROSLAV
+HROMIŠ NADA
+HROMIŠ NIKOLA
+HROMIŠ PETAR
+HROMIŠ SIMA
+HROMIŠ VLADIMIR
+HROMIŠ ZDENKA
+HRONJEC VIĆAZOSLAV
+HRSTO SLAVKO
+HRUBENJA ĐURA
+HRUBENJA FEBRONA
+HRUBENJA JANKO
+HRUBENJA JOAKIM
+HRUBENJA JOAKIM
+HRUBENJA JOAKIM
+HRUBENJA KARLO
+HRUBENJA MIHAJLO
+HRUBENJA MIROSLAV
+HRUBENJA PETAR
+HRUBENJA ZVONIMIR
+HRUBIK ANDREJ
+HRUBIK JOVAN
+HRUBIK KARLO
+HRUBIK MIRKO
+HRUBIK OSKAR DR LEKAR
+HRUBIK ROZALIJA
+HRUSTANOVIĆ TURSUN
+HRUSTIĆ EMIN
+HRUSTIĆ ENVER
+HRUSTIĆ ZIJAH
+HRUSTIĆ ZILHA
+HUČIĆ STJEPAN
+HUČKA JOVAN
+HUŽVAR ŠANDOR
+HUĐEC JOVANKA
+HUĐEC KARLO
+HUBAI GABOR
+HUBANIĆ MILENA
+HUBER BOJANA
+HUBER DRAGAN
+HUBER ELZA
+HUBER JOVAN DIPL ING
+HUBER MAGDALENA
+HUBER MARIJA
+HUBER MATILDA
+HUBER PETAR
+HUBER TIBOR
+HUBERT EVA
+HUBERT RADMILA
+HUBERT VERA
+HUBIJAR ENES
+HUBIJAR NADA
+HUDAK IRINEJ
+HUDAK NATALIJA
+HUDOMEL IVAN
+HUJDUR BRANKA
+HUMSKI ROSA
+HUNJADI ALEKSANDAR
+HUNJADI ILONKA
+HUNJADI OLGA
+HUPERT LAJOŠ
+HUPIK MIRJANA
+HUS IMRE
+HUSAG ARPAD
+HUSAGIĆ ESAD
+HUSAGIĆ SULEJMAN
+HUSAGIĆ ZINETA
+HUSAK RADOVAN
+HUSAR EVA
+HUSAR IŠTVAN
+HUSAR JANKO
+HUSAR LASLO
+HUSAR TODOR
+HUSEIN MEHMED
+HUSEINBEGOVIĆ NAMIK
+HUSEINOVIĆ ANICA
+HUSEINOVIĆ ATILA
+HUSEINOVIĆ ATILA
+HUSEINOVIĆ ESMERALDA
+HUSEINOVIĆ ISMET
+HUSENBEGOVIĆ ROZALIJA
+HUSIĆ ĐURĐINKA
+HUSIĆ LADISLAV
+HUSKA ILONA
+HUSKA-ROKA MAGDA DR
+HUSKO MIJO
+HUSOVIĆ HUSO
+HUTALAROVIĆ JELENA
+HUTALAROVIĆ KOSTA
+HUZJAN TIHOMIR
+HVALA MIRA
+HVETKOVIĆ JELISAVETA
+IČAGIĆ NIKOLA
+IČEVIĆ MOMČILO
+IČIN ŽIVKO
+IČIN MILENKO
+IČIN RADISLAV
+IČIN SRETEN
+IŠIĆ ELIZABETA
+IŠPAN ŠANDOR
+IŠPAN MARGITA
+IŠPANOVIĆ JOŽEF
+IŠTOK JOSIP
+IŠTOK JOSIP
+IŠTOK MIRJANA
+IŠTOK STEVAN
+IŠTOKOVIĆ STEVO
+IŠTVANOV STANISLAVA
+IĆITOVIĆ MILAN
+IĆURUP ŽIVOJIN
+IĆURUP MILORAD
+IĆURUP RADOSLAV DIPL ING
+IŽAK FERENC
+IŽAK KARLO
+IŽAK ROZALIJA
+IĐIDOV OLGA
+IĐIDOV VELINKA
+IĐOŠKI HORST
+IĐOŠKI NIKOLA
+IĐUŠKI STEVAN
+IBRAHIM DEMIR
+IBRAHIMAGIĆ NADA
+IBRAHIMI IBRAHIM
+IBRAHIMOVIĆ DERVIŠA
+IBRAHIMOVIĆ EMIL
+IBRAHIMOVIĆ HAMDIJA
+IBRAHIMOVIĆ MILAN
+IBRAHIMOVIĆ SLAVKO
+IBRAHIMOVIĆ VERA
+IBRAHIMPAŠIĆ ANA
+IBRAJTER IVAN
+IBRAJTER LJUBOMIR
+IBRAJTER MLADEN
+IBRIŠEVIĆ ĐULAGA
+IBRIŠEVIĆ MIRSAD
+IBRIŠEVIĆ SUAD
+IBROČIĆ DIMITRIJE DIPL ING
+IBROČIĆ MARIJA
+IBROČIĆ RATOMIR
+IBROČIĆ SLOBODAN
+IBROČIĆ VERA
+IBROLI BAN
+ICOSKI LAZAR
+IDEI NANDOR
+IDEJI JOVAN
+IDEJI VALERIJA
+IDRIZOVIĆ AHMET DR
+IDVOREAN TODOR
+IDVOREAN VIKENTIJE
+IFJU ANGELIKA
+IFJU GABOR
+IFKO ILDIKO DIPL ING
+IGIĆ ŽIVADIN
+IGIĆ ĐULVASIJA
+IGIĆ ANKA
+IGIĆ DRAGAN
+IGIĆ JOVANKA
+IGIĆ MILKA
+IGIĆ MILORAD
+IGIĆ MIROSLAVA
+IGIĆ MIROSLAV
+IGIĆ NIKOLA
+IGIĆ PAVLE
+IGIĆ RAJKO
+IGIĆ SAŠA
+IGIĆ STEVAN
+IGIĆ STEVAN
+IGIĆ SVETOZAR
+IGIĆ TOMISLAV
+IGIĆ VUKA
+IGNAC PERA
+IGNJAC VIDA
+IGNJATIĆ ANKA
+IGNJATIĆ BORIVOJ
+IGNJATIĆ DUŠANKA
+IGNJATIĆ GOJKO
+IGNJATIĆ NEVENKA
+IGNJATIĆ RADOVAN
+IGNJATIĆ VID
+IGNJATIJEVIĆ ALEKSANDAR
+IGNJATIJEVIĆ BRANISLAV
+IGNJATIJEVIĆ DOBRILA
+IGNJATIJEVIĆ DRAGOMIR
+IGNJATIJEVIĆ DUŠAN
+IGNJATIJEVIĆ DUŠAN
+IGNJATIJEVIĆ JOVAN
+IGNJATIJEVIĆ LJILJANA
+IGNJATIJEVIĆ LJILJANA
+IGNJATIJEVIĆ LJUBOMIR
+IGNJATIJEVIĆ MARA
+IGNJATIJEVIĆ MILAN
+IGNJATIJEVIĆ MILENA
+IGNJATIJEVIĆ MIROSLAV
+IGNJATIJEVIĆ MITA
+IGNJATIJEVIĆ NOVAK
+IGNJATIJEVIĆ RADAŠIN
+IGNJATIJEVIĆ RADOVAN
+IGNJATIJEVIĆ SVETISLAV
+IGNJATIJEVIĆ SVETOZAR
+IGNJATIJEVIĆ TOMISLAV
+IGNJATIJEVIĆ TOMISLAV
+IGNJATIJEVIĆ VOJISLAV
+IGNJATIJEVIĆ ZORAN
+IGNJATOV-RADOVANOVIĆ MILENA PROF
+IGNJATOVIĆ ŽIVKO
+IGNJATOVIĆ ŽIVORAD
+IGNJATOVIĆ ANGELA
+IGNJATOVIĆ ANKA
+IGNJATOVIĆ DANILO
+IGNJATOVIĆ GORDANA
+IGNJATOVIĆ KOSARA
+IGNJATOVIĆ LJUBIŠA
+IGNJATOVIĆ MARICA
+IGNJATOVIĆ MILAN
+IGNJATOVIĆ MILE
+IGNJATOVIĆ MILKA
+IGNJATOVIĆ MILOŠ DR PRAVNIK
+IGNJATOVIĆ MILOŠ
+IGNJATOVIĆ MILORAD
+IGNJATOVIĆ MILUTIN
+IGNJATOVIĆ MIRJANA
+IGNJATOVIĆ SAVA
+IGNJATOVIĆ SLOBODAN
+IGNJATOVIĆ VERA
+IGNJATOVIĆ VERA
+IGNJATOVIĆ VIDAK
+IGNJATOVIĆ VLADIMIR
+IGNJATOVIĆ VOJISLAV
+IGNJATOVIĆ VUČKO
+IGNJATOVSKI EFREM
+IGNJIĆ BRANKO
+IGNJIĆ JOVAN
+IGNJIĆ STOJAN
+IGNJIĆ ZIZA
+IGNJIĆ ZORAN
+IGNJOVIĆ MARIJA
+IGRAČKI ĐORĐE
+IGRAČKI ETELA
+IGRAČKI JULIN
+IGRAČKI KARLO
+IGRAČKI LASLO
+IGRIĆ NADA
+IGRIĆ STOJANKA
+IGRUTINOVIĆ SLOBODAN
+IHAS ILONA
+IJAČIĆ BRANKO
+IJAČIĆ MAKSIM
+IJEVLJEV FEODOR
+IKANOVIĆ DUŠAN
+IKANOVIĆ IVAN
+IKANOVIĆ JELENA
+IKANOVIĆ NIKOLA
+IKELJIĆ IRFAN
+IKIĆ DEJAN
+IKIĆ JOVAN
+IKIĆ MLADEN
+IKIĆ MLADEN
+IKIĆ SMILJANA
+IKODINOVIĆ DUŠAN
+IKONIĆ ĐURA
+IKONOV DEJAN
+IKOTIN JANOŠ
+IKOTIN JOVANKA
+IKOTIN MATIJA
+IKOTIN PAL
+IKOTIN PETAR
+IKOVAC BOŠKO
+IKOVAC STEVAN
+IKOVIĆ DRAGUTIN
+IKOVIĆ MILOŠ
+IKOVIĆ MILOSAV
+IKOVIĆ VELINKA
+IKRAŠEV JELICA
+IKRAŠEV JOVAN
+IL ALEKSANDAR
+IL JELICA
+ILČIK MARIJA
+ILEŠ FRANCIŠKA
+ILEŠ IMRE
+ILEŠ IRENA
+ILEŠ MIHAILO
+ILEŠ MILAN
+ILEŠ MIROSLAV
+ILIČIĆ ANTUN
+ILIČIĆ IVAN
+ILIČIĆ LJUBICA
+ILIČIĆ MIHAJLO
+ILIČIĆ PETAR
+ILIČIĆ-POPIĆ OLJA
+ILIĆ ČEDOMIR
+ILIĆ ČEDO
+ILIĆ ŠIMUN
+ILIĆ ŽELJKO
+ILIĆ ŽIVKO
+ILIĆ ŽIVKO
+ILIĆ ŽIVKO
+ILIĆ ŽIVOMIR
+ILIĆ ŽIVOMIR
+ILIĆ ŽIVOMIR
+ILIĆ ŽIVORAD
+ILIĆ ŽIVORAD
+ILIĆ ĐORĐE
+ILIĆ ĐORĐE
+ILIĆ ĐORĐE
+ILIĆ ALEKSA DR
+ILIĆ ALEKSANDAR
+ILIĆ ALEKSANDAR
+ILIĆ ALEKSANDAR
+ILIĆ ALEKSANDAR
+ILIĆ ANICA
+ILIĆ ANKICA
+ILIĆ ARSA
+ILIĆ ARSA
+ILIĆ BILJANA
+ILIĆ BLAGOJE
+ILIĆ BOŠKO
+ILIĆ BOŠKO
+ILIĆ BOŽIDAR
+ILIĆ BOBAN
+ILIĆ BOGDAN
+ILIĆ BOGOLJUB
+ILIĆ BORISLAVKA
+ILIĆ BORISLAV
+ILIĆ BORISLAV
+ILIĆ BORIVOJE
+ILIĆ BORKA
+ILIĆ BOSILJKA
+ILIĆ BRANISLAV
+ILIĆ BRANISLAV
+ILIĆ BRANISLAV
+ILIĆ BRANKO
+ILIĆ BRANKO
+ILIĆ BRANKO
+ILIĆ BRATISLAV
+ILIĆ BRATISLAV
+ILIĆ CECILIJA
+ILIĆ CVETA
+ILIĆ CVIJAN
+ILIĆ DANE
+ILIĆ DARINKA
+ILIĆ DEJAN
+ILIĆ DOBRIVOJE
+ILIĆ DOBROSAV
+ILIĆ DRAGAN
+ILIĆ DRAGAN
+ILIĆ DRAGAN
+ILIĆ DRAGICA
+ILIĆ DRAGOLJUB
+ILIĆ DRAGO
+ILIĆ DRAGUTIN
+ILIĆ DUŠANKA
+ILIĆ DUŠAN
+ILIĆ DUŠAN
+ILIĆ DUŠAN
+ILIĆ DUŠAN
+ILIĆ DUŠAN
+ILIĆ DUŠICA
+ILIĆ DUŠICA
+ILIĆ EDIT
+ILIĆ ERŽIKA
+ILIĆ GORAN
+ILIĆ GORAN
+ILIĆ-GREGOR MIRA
+ILIĆ ILIJA
+ILIĆ ILIJA
+ILIĆ ILIJA
+ILIĆ IRENA
+ILIĆ IVAN DR
+ILIĆ IVAN
+ILIĆ IVAN
+ILIĆ JELENA
+ILIĆ JELENA
+ILIĆ JELENKO
+ILIĆ JELISAVETA
+ILIĆ JELKA
+ILIĆ JOSIF
+ILIĆ JOVANKA
+ILIĆ JOVAN
+ILIĆ JOVAN
+ILIĆ JOVAN
+ILIĆ JOVAN
+ILIĆ JOVAN
+ILIĆ JOVICA
+ILIĆ KOVILJKA
+ILIĆ KRSTAN
+ILIĆ LAZAR
+ILIĆ LAZAR
+ILIĆ LAZAR
+ILIĆ LJUBIŠA
+ILIĆ LJUBIŠA
+ILIĆ LJUBICA
+ILIĆ LJUBICA
+ILIĆ LJUBICA
+ILIĆ LJUBINKO
+ILIĆ LJUBO
+ILIĆ MARA
+ILIĆ MARA
+ILIĆ MARIJA
+ILIĆ MARIJA
+ILIĆ MARIJA
+ILIĆ MARIJA
+ILIĆ MARINKO
+ILIĆ MARKO
+ILIĆ MIHAJLO
+ILIĆ MIHAJLO
+ILIĆ MILADIN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILAN
+ILIĆ MILA
+ILIĆ MILENA
+ILIĆ MILENA
+ILIĆ MILEN
+ILIĆ MILEVA
+ILIĆ MILE
+ILIĆ MILIĆ
+ILIĆ MILICA
+ILIĆ MILICA
+ILIĆ MILICA
+ILIĆ MILISAV
+ILIĆ MILIVOJE
+ILIĆ MILIVOJ
+ILIĆ MILIVOJ
+ILIĆ MILIVOJ
+ILIĆ MILOŠ
+ILIĆ MILOŠ
+ILIĆ MILOŠ
+ILIĆ MILOŠ
+ILIĆ MILORAD
+ILIĆ-MILUŠIĆ OLGA
+ILIĆ MILUŠKA
+ILIĆ MILUTIN
+ILIĆ MIODRAG DR
+ILIĆ MIODRAG
+ILIĆ MIODRAG
+ILIĆ MIODRAG
+ILIĆ MIRJANA
+ILIĆ MIRKO
+ILIĆ MIROSLAVA
+ILIĆ MIROSLAV
+ILIĆ MIROSLAV
+ILIĆ MITAR
+ILIĆ MOMČILO
+ILIĆ MOMČILO
+ILIĆ MOMČILO
+ILIĆ MOMČILO
+ILIĆ NADA
+ILIĆ NEĐO
+ILIĆ NEBOJŠA
+ILIĆ NEBOJŠA
+ILIĆ NENAD
+ILIĆ NEVENKA
+ILIĆ NIKOLA
+ILIĆ NIKOLA
+ILIĆ OBRAD
+ILIĆ OBREN
+ILIĆ OLGA
+ILIĆ OLGA
+ILIĆ OLIVERA
+ILIĆ OSTOJA
+ILIĆ PAVLE DIPL ING
+ILIĆ PAVLE
+ILIĆ PERO
+ILIĆ PETAR
+ILIĆ PETAR
+ILIĆ PETAR
+ILIĆ PETAR
+ILIĆ PETAR
+ILIĆ-PETROVIĆ SPOMENKA
+ILIĆ PREVISLAV
+ILIĆ RADE
+ILIĆ RADIVOJ
+ILIĆ RADOJKA
+ILIĆ RADOMIR
+ILIĆ RADOSLAV
+ILIĆ RADOSLAV
+ILIĆ RADOSLAV
+ILIĆ RADOVAN
+ILIĆ RADOVAN
+ILIĆ RADO
+ILIĆ RANKO
+ILIĆ RATKO
+ILIĆ RATKO
+ILIĆ RUŽA
+ILIĆ RUŽICA
+ILIĆ SAVA DR
+ILIĆ SAVA
+ILIĆ-SAVIĆ VOJISLAVA
+ILIĆ SIMO
+ILIĆ SINIŠA
+ILIĆ SLAVICA
+ILIĆ SLAVKO
+ILIĆ SLAVKO
+ILIĆ SLAVOLJUB
+ILIĆ SLOBODAN
+ILIĆ SLOBODAN
+ILIĆ SLOBODAN
+ILIĆ SLOBODAN
+ILIĆ SRĐAN
+ILIĆ SRĐAN
+ILIĆ SRĐAN
+ILIĆ SRETEN
+ILIĆ STANA
+ILIĆ STANIŠA
+ILIĆ STANIMIR
+ILIĆ STANIMIR
+ILIĆ STANKA
+ILIĆ STEVO
+ILIĆ STOJANČE
+ILIĆ STOJAN
+ILIĆ STOJAN
+ILIĆ SVETISLAV DR LEKAR
+ILIĆ SVETLANA
+ILIĆ SVETOZAR
+ILIĆ TATJANA
+ILIĆ TODE
+ILIĆ TODE
+ILIĆ TOMISLAV
+ILIĆ VASA
+ILIĆ VERA
+ILIĆ VIDOSAV
+ILIĆ VINKA
+ILIĆ VINKO
+ILIĆ VLADAN
+ILIĆ VLADAN
+ILIĆ VLADIMIR DR
+ILIĆ VLADIMIR
+ILIĆ VLADIMIR
+ILIĆ VLADIMIR
+ILIĆ VLADIMIR
+ILIĆ VLADIMIR
+ILIĆ VLATKA
+ILIĆ VOJISLAV
+ILIĆ VOJISLAV
+ILIĆ VOJISLAV
+ILIĆ VOJISLAV
+ILIĆ ZDRAVKO
+ILIĆ ZLATKO
+ILIĆ ZLATKO
+ILIĆ ZORAN
+ILIĆ ZORICA
+ILIBAŠIĆ DARINKA
+ILIBAŠIĆ NIKOLA
+ILIBAŠIĆ OSTOJA
+ILIBAŠIĆ STEVAN
+ILIBAŠIĆ STEVO
+ILIBAŠIĆ ZLATA
+ILIEVSKI ALEKSANDAR
+ILIJĆ SMILJA
+ILIJĆ SVETOLIK
+ILIJAŠEV SOFIJA
+ILIJAŠEVIĆ ALEKSANDAR
+ILIJAŠEVIĆ DARA
+ILIJAŠEVIĆ LJUBIŠA
+ILIJAŠEVIĆ SVETISLAV
+ILIJAZI ABDISAMI
+ILIJAZI DAUT
+ILIJAZI HAFIZA
+ILIJAZI JALČIN
+ILIJAZI ZAJNEL
+ILIJAZOVIĆ VEDŽRIJA
+ILIJEV IVAN
+ILIJEV IVAN
+ILIJEV LJUBEN
+ILIJEVIĆ DUŠAN DIPL ING
+ILIJEVIĆ NIKOLA
+ILIJEVIĆ RADE
+ILIJEVSKI ĆIRO
+ILIJEVSKI ĐORĐE
+ILIJEVSKI DANILO
+ILIJIN ŽARKO
+ILIJIN ŽIVAN
+ILIJIN DUŠAN
+ILIJIN JELENA
+ILIJIN JOVAN
+ILIJIN JOVAN
+ILIJIN MILAN
+ILIJIN MILIVOJ
+ILIJIN MILIVOJ
+ILIJIN MILOŠ
+ILIJIN MIRJANA
+ILIJIN STEVAN
+ILIJIN SVETOZAR
+ILIJIN TANASIJE
+ILIJIN UROŠ
+ILIJIN ZORKA
+ILIN ŽARKO
+ILIN ALEKSANDAR
+ILIN ANKICA
+ILIN BORISLAV
+ILIN BORKA
+ILIN DRAGINJA
+ILIN DRAGINJA
+ILIN DUŠAN
+ILIN DUŠAN
+ILIN IVAN
+ILIN LJUBINKO
+ILIN LJUBOMIR
+ILIN MILAN
+ILIN MILENKO
+ILIN MLADEN
+ILIN NEDELJKO
+ILIN NIKOLA
+ILIN RADE
+ILIN SNEŽANA
+ILIN SOFIJA
+ILIN TIMA
+ILIN ZORA
+ILINČIĆ MOMIR
+ILINČIĆ NEBOJŠA
+ILJAZI DŽAMILJ
+ILKIĆ JELA
+ILKIĆ MARICA
+ILKIĆ MILAN
+ILKIĆ MIRA
+ILKIĆ NADA
+ILKIĆ NEBOJŠA
+ILKIĆ NENAD
+ILKIĆ RADMILA
+ILKIĆ STEVICA
+ILKIĆ ZLATOJA
+ILKIN RADIVOJ
+ILOVAČA MARKO
+ILOVSKI ALEKSANDAR
+ILOVSKI ZLATA
+IMŠIROVIĆ KOLOMAN
+IMŠIROVIĆ MIROSLAV
+IMŠIROVIĆ SMAJIL
+IMAMOVIĆ JASMINA
+IMBRA ŽIVOJIN
+IMBRIŠIĆ BEHIJA
+IMBRIŠIĆ IVAN
+IMBRONJEV RAJKO
+IMBRONJEV RAJKO
+IMBRONJEV RAJKO
+IMBRONJEV SPASOJA
+IMBRONOVIĆ ĐORĐE
+IMBRONOVIĆ DUŠAN
+IMBRONOVIĆ JULKA
+IMREŠI IVAN
+INĐIĆ DRAGICA
+INĐIĆ DUŠAN
+INĐIĆ JELENA
+INĐIĆ JELICA
+INĐIĆ TEREZ
+INĐIĆ VOJIN
+INĐIN ŽIVKO
+INĐIN ĐURA
+INĐIN DUŠAN
+INĐIN VLADIMIR
+INIĆ BRANKO
+INIĆ DRAGAN
+INIĆ DUŠAN
+INIĆ JELENA
+INIĆ KRSTA
+INIĆ LJUBICA
+INIĆ MILAN DR
+INIĆ TINDA
+INIĆ VASO
+INJAC BOGDAN
+INJAC DRAGICA
+INJAC JOVAN
+INJAC LJUBICA
+INJAC MIRKO
+INJAC NIKOLA
+INJAC RADA
+INJAC RADE
+INJAC RADOMIR
+INJAC SLOBODAN
+INJAC VLADIMIR
+INOVAN DOBRIVOJE
+IPAČ KATALINA
+IPAČ KATICA
+IPIĆ ZORA
+IRŠAI IVAN
+IRŠAJI JOVAN
+IRŠAJI STEVA
+IRIĆ BOŽO
+IRIĆ GAŠPAR
+IRMEŠ MARIA
+IRMENJI JOŽEF
+IRMENJI JOSIP
+IRMENJI MARGIT
+ISAILOVIĆ LJUBIŠA
+ISAILOVIĆ MILANKA
+ISAILOVIĆ MIRKO
+ISAILOVIĆ VELISAV
+ISAJEV MARIJA
+ISAJEVIĆ LAZAR
+ISAJEVIĆ MILOŠ
+ISAJEVIĆ ZDRAVKO
+ISAJLOV JONEL
+ISAJLOV JONEL
+ISAJLOV JONEL
+ISAJLOVIĆ ALEKSANDAR
+ISAJLOVIĆ ALEKSANDAR
+ISAJLOVIĆ BRANKO
+ISAJLOVIĆ DUŠAN
+ISAJLOVIĆ FEDOR
+ISAK ILIJA
+ISAK STANKO
+ISAKOV ŽARKO
+ISAKOV ŽIVOJIN
+ISAKOV ACKO
+ISAKOV BORISLAV
+ISAKOV CVETKO
+ISAKOV DIMITRIJE
+ISAKOV DRAGANA
+ISAKOV DRAGOLJUB
+ISAKOV DUŠICA
+ISAKOV ESTER
+ISAKOV IVAN
+ISAKOV JELICA
+ISAKOV JOVANKA
+ISAKOV KATICA
+ISAKOV LEPOSAVA
+ISAKOV LJUBICA
+ISAKOV LJUBICA
+ISAKOV MILAN
+ISAKOV MILAN
+ISAKOV MILENKO
+ISAKOV MILIVOJ
+ISAKOV MILORAD
+ISAKOV MILUTIN
+ISAKOV MIODRAG
+ISAKOV MIROSLAV
+ISAKOV NENAD
+ISAKOV PETAR
+ISAKOV RADE
+ISAKOV RADICA
+ISAKOV RADINKA
+ISAKOV RADIVOJ
+ISAKOV RADMILA
+ISAKOV RADOMIR
+ISAKOV RADOVAN
+ISAKOV RUŽICA
+ISAKOV SAVA
+ISAKOV SLAVKO
+ISAKOV SMILJKA
+ISAKOV SREDOJE
+ISAKOV STEVAN
+ISAKOV STEVAN
+ISAKOV TODOR
+ISAKOV TOMISLAV
+ISAKOV VOJISLAV
+ISAKOV ZORICA
+ISAKOVIĆ ĐURA DIPL ING
+ISAKOVIĆ ANA
+ISAKOVIĆ MARKO
+ISAKOVIĆ STEVAN
+ISAKOVIĆ ZORAN
+ISAKOVSKI JAKOV
+ISAKOVSKI SLOBODAN DR
+ISANOVIĆ ANA
+ISIJANOV SLOBODANKA
+ISIJANOV VLADIMIR
+ISKALOV MARIJANA
+ISKIĆ MILADIN
+ISKRIN BRANKO
+ISKRIN JELENA
+ISLAMBAŠIĆ LJILJANA
+ISLAMI ABIB
+ISLAMOVIĆ MAHMUD
+ISLAMOVIĆ NADA
+ISMAILI ŠAĆIR
+ITALO EVICA
+ITALO MARKO
+ITEBEJAC ZORA
+IVAČKOVIĆ BRANISLAV
+IVAČKOVIĆ MANOJLO
+IVAČKOVIĆ NADA
+IVAŠČENKO ALEKSANDAR
+IVAŠČENKO ALEKSANDAR
+IVAŠČENKO KATICA
+IVAŠKU-MILOVANOVIĆ FELIČIA
+IVAK JAN
+IVAN ŠANDOR
+IVAN ĐURA
+IVAN ATILA
+IVAN CECILIJA
+IVAN GABOR
+IVAN JOŽEF
+IVAN JOVAN
+IVAN KATALIN
+IVAN MIHAJLO
+IVAN SILVESTER
+IVAN VERONA
+IVANČEV IRINA
+IVANČEV VLADIMIR
+IVANČEVIĆ ŽARKO DR
+IVANČEVIĆ BOŠKO
+IVANČEVIĆ BRANKA
+IVANČEVIĆ DARKO
+IVANČEVIĆ DIMITRIJE
+IVANČEVIĆ DRAGOSLAVA
+IVANČEVIĆ DUŠAN
+IVANČEVIĆ GAVRA
+IVANČEVIĆ JOVAN
+IVANČEVIĆ JOVAN
+IVANČEVIĆ MARICA
+IVANČEVIĆ MILAN
+IVANČEVIĆ MILAN
+IVANČEVIĆ MILENKO
+IVANČEVIĆ MILIVOJE PROFESOR
+IVANČEVIĆ OLIVERA
+IVANČEVIĆ PETAR
+IVANČEVIĆ PETAR
+IVANČEVIĆ RADIVOJ DIPL ING
+IVANČEVIĆ RADMILA
+IVANČEVIĆ SINIŠA
+IVANČEVIĆ STANKO
+IVANČEVIĆ SVETOZAR
+IVANČEVIĆ VLADA
+IVANČEVIĆ VLADIMIR DR
+IVANČIĆ ANTE
+IVANČIĆ BRANKO
+IVANČIĆ DRAGAN
+IVANČIĆ JOSIP
+IVANČIĆ JULIJANA
+IVANČIĆ MARIJA
+IVANČIĆ MILAN
+IVANČIĆ OLGA
+IVANČIĆ STANIMIR
+IVANČIĆ STANISLAV
+IVANČIĆ STEVAN
+IVANČIĆ STEVAN
+IVANČIĆ VLADIMIR
+IVANČIN NIKOLA
+IVANČIN OLJEG
+IVANČUK PAVAO
+IVANDIĆ IVICA
+IVANDIĆ RADMILA
+IVANEŽA ANDRIJA
+IVANEK ĐURA
+IVANEK DUŠKO
+IVANEK VIKTORIJA
+IVANI HILJA
+IVANIŠ KOVILJKA
+IVANIŠ SLAVKO
+IVANIŠ SLAVKO
+IVANIŠEVIĆ ĐURO
+IVANIŠEVIĆ DUŠAN
+IVANIŠEVIĆ EVICA
+IVANIŠEVIĆ ILIJA
+IVANIŠEVIĆ JELICA
+IVANIŠEVIĆ MIHAILO
+IVANIŠEVIĆ MILAN
+IVANIŠEVIĆ MIROSLAV
+IVANIŠEVIĆ MIROSLAV
+IVANIŠEVIĆ MITAR
+IVANIŠEVIĆ NADA
+IVANIŠEVIĆ NADA
+IVANIŠEVIĆ NEĐA
+IVANIŠEVIĆ NEMANJA
+IVANIŠEVIĆ OLGA
+IVANIŠEVIĆ PETAR
+IVANIŠEVIĆ RAJKO
+IVANIŠEVIĆ SVETOZAR
+IVANIŠEVIĆ TINA
+IVANIŠEVIĆ VUKICA
+IVANIĆ ČEDOMIR
+IVANIĆ ĐORĐE
+IVANIĆ ALBERT
+IVANIĆ ANA
+IVANIĆ BRANKO
+IVANIĆ DRAGANA
+IVANIĆ DRAGAN
+IVANIĆ DRAGICA
+IVANIĆ DUŠAN
+IVANIĆ DUŠAN
+IVANIĆ GROZDANA
+IVANIĆ IVANA
+IVANIĆ IVAN
+IVANIĆ IVAN
+IVANIĆ IVAN
+IVANIĆ JOVO
+IVANIĆ MARINA
+IVANIĆ MILAN
+IVANIĆ MILAN
+IVANIĆ MILAN
+IVANIĆ NEVENKA
+IVANIĆ PERSIDA
+IVANIĆ PETAR
+IVANIĆ SNEŽANA
+IVANIĆ STEVAN
+IVANIĆ ZLATOJE
+IVANJI SINIŠA
+IVANJI VERONIKA
+IVANKOVIĆ ČEDOMIR
+IVANKOVIĆ ĐORĐE
+IVANKOVIĆ BOŽANA
+IVANKOVIĆ BOŽO
+IVANKOVIĆ JANKO
+IVANKOVIĆ MARINKO
+IVANKOVIĆ MILENKO
+IVANKOVIĆ MILE
+IVANKOVIĆ MILKA
+IVANKOVIĆ MILKA
+IVANKOVIĆ NENAD
+IVANKOVIĆ NOVO
+IVANKOVIĆ RADE
+IVANKOVIĆ RADE
+IVANKOVIĆ SAVO
+IVANKOVIĆ SLAVKO
+IVANKOVIĆ TIHOMIR
+IVANKOVIĆ ZDRAVKO
+IVANOV ŽIVAN
+IVANOV ĐOKA
+IVANOV ĐORĐE
+IVANOV ĐURĐEVKA
+IVANOV ĐURĐINKA
+IVANOV BORIS
+IVANOV DIMITAR
+IVANOV DRAGICA
+IVANOV DRAGOSLAVA
+IVANOV EMILIJA
+IVANOV EVICA
+IVANOV GAVRA
+IVANOV JULKA
+IVANOV KATICA
+IVANOV LJUBOMIR
+IVANOV MARICA
+IVANOV MARIJA
+IVANOV MIŠA
+IVANOV MILENKO
+IVANOV MILE
+IVANOV MILORAD
+IVANOV MITA
+IVANOV NIKOLA
+IVANOV OLIVERA
+IVANOV PETAR
+IVANOV SERGIJE
+IVANOV SLAVKO
+IVANOV VERA
+IVANOV ZDRAVKO
+IVANOV ZORA
+IVANOV ZORICA
+IVANOVIĆ ČEDOMIR
+IVANOVIĆ ŽIKA
+IVANOVIĆ ŽIVORAD
+IVANOVIĆ ĐORĐE
+IVANOVIĆ ALEKSA
+IVANOVIĆ ANGELINA
+IVANOVIĆ BOŽA
+IVANOVIĆ BOGDAN
+IVANOVIĆ BRANISLAVA
+IVANOVIĆ BRANISLAV
+IVANOVIĆ BRANISLAV
+IVANOVIĆ BRANISLAV
+IVANOVIĆ BRANISLAV
+IVANOVIĆ CVEJA
+IVANOVIĆ DESANKA
+IVANOVIĆ DESA
+IVANOVIĆ DIMITRIJE
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGAN
+IVANOVIĆ DRAGOLJUB
+IVANOVIĆ DRAGOLJUB
+IVANOVIĆ DUŠANKA
+IVANOVIĆ DUŠAN
+IVANOVIĆ FRANJA
+IVANOVIĆ ILIJA
+IVANOVIĆ ILIJA
+IVANOVIĆ IVAN DR
+IVANOVIĆ JANOŠ
+IVANOVIĆ JELENA
+IVANOVIĆ JORDAN
+IVANOVIĆ JOVAN
+IVANOVIĆ KOVINKA
+IVANOVIĆ KRSTOMIR
+IVANOVIĆ KSENIJA
+IVANOVIĆ LJUBICA
+IVANOVIĆ LJUBISAV
+IVANOVIĆ LJUBOMIR
+IVANOVIĆ LJUDEVIT
+IVANOVIĆ MARIJA
+IVANOVIĆ MARINKO
+IVANOVIĆ MARKO
+IVANOVIĆ MILAN SUDIJA
+IVANOVIĆ MILENKO
+IVANOVIĆ MILENKO
+IVANOVIĆ MILETA
+IVANOVIĆ MILEVA
+IVANOVIĆ MILICA
+IVANOVIĆ MILIJA
+IVANOVIĆ MILKA
+IVANOVIĆ MILKO
+IVANOVIĆ MILORAD
+IVANOVIĆ MILUN
+IVANOVIĆ MILUTIN
+IVANOVIĆ MIODRAG
+IVANOVIĆ MIRA
+IVANOVIĆ MIRJANA
+IVANOVIĆ MIRKO
+IVANOVIĆ MIROSLAV
+IVANOVIĆ MIROSLAV
+IVANOVIĆ MLADEN
+IVANOVIĆ NEBOJŠA
+IVANOVIĆ NEGOVAN
+IVANOVIĆ NIKOLA
+IVANOVIĆ OBRAD
+IVANOVIĆ PETAR
+IVANOVIĆ PETRA
+IVANOVIĆ RAŠKO
+IVANOVIĆ RADMILA
+IVANOVIĆ RADOMIR
+IVANOVIĆ RADOSLAV
+IVANOVIĆ RADOVAN
+IVANOVIĆ SELIMIR
+IVANOVIĆ SIMO
+IVANOVIĆ SLOBODANKA
+IVANOVIĆ SLOBODAN
+IVANOVIĆ SLOBODAN
+IVANOVIĆ SLOBODAN
+IVANOVIĆ SLOBODAN
+IVANOVIĆ STAMEN
+IVANOVIĆ STANISLAVA
+IVANOVIĆ STANKA
+IVANOVIĆ STEVAN
+IVANOVIĆ STEVAN
+IVANOVIĆ STOJAN
+IVANOVIĆ VASILIJE
+IVANOVIĆ VELIBOR
+IVANOVIĆ VITOMIR
+IVANOVIĆ VLADA
+IVANOVIĆ VLADA
+IVANOVIĆ VOJISLAV
+IVANOVIĆ VOJISLAV
+IVANOVIĆ VUKOSAVA
+IVANOVIĆ ZORAN DIPL ING
+IVANOVIĆ ZORA
+IVANOVSKI ĐORĐE
+IVANOVSKI BLAGOJE
+IVANOVSKI ILIJA
+IVANOVSKI STANA
+IVATOVIĆ BRANKO
+IVEGEŠ ANA
+IVEGEŠ IŠTVAN DIPL ING
+IVEGEŠ LASLO
+IVEK VLADIMIR
+IVETIĆ BRANISLAVA
+IVETIĆ BRANISLAVA
+IVETIĆ DIMITRIJE
+IVETIĆ DRAGAN
+IVETIĆ LAZA
+IVETIĆ LJILJANA
+IVETIĆ MILOJKO
+IVETIĆ RADE DR
+IVETIĆ RADE DR
+IVETIĆ RADOVAN
+IVETIĆ VASA
+IVETIĆ VESNA
+IVEZIĆ ALEKSANDAR
+IVEZIĆ DRAGO
+IVEZIĆ GOJKO
+IVEZIĆ MARKO DR
+IVEZIĆ MILE
+IVEZIĆ ZORAN
+IVEZIĆ ZVONKO
+IVIČIĆ MIRA
+IVIČIĆ NADA
+IVIČIĆ-TOMIĆ BILJANA
+IVIĆ BLAGOMIR
+IVIĆ DESANKA
+IVIĆ JULIJA
+IVIĆ MELITA
+IVIĆ MIRKO MR PH
+IVIĆ PETAR DIPL OEC
+IVIĆ RADE
+IVIĆ STOJAN
+IVIĆ VASILIJE
+IVIĆ VASO
+IVIĆ VOJIMIR
+IVIĆ ZLATKO
+IVKOV ČEDOMIR
+IVKOV ŽIVKA
+IVKOV ĐORĐE
+IVKOV BOŠKO
+IVKOV BORIVOJ
+IVKOV DANILO
+IVKOV DOBRIVOJ
+IVKOV DUŠAN
+IVKOV ISA
+IVKOV IVAN
+IVKOV JELENA
+IVKOV JELENA
+IVKOV KATICA
+IVKOV KATICA
+IVKOV KATICA
+IVKOV MILENKO
+IVKOV MILICA
+IVKOV MILOVAN
+IVKOV OLGICA
+IVKOV PETAR
+IVKOV RADOSLAV
+IVKOV RADOVAN
+IVKOV SAVA
+IVKOV SEKULA
+IVKOV SLAVKO
+IVKOV SLOBODAN
+IVKOV SLOBODAN
+IVKOV STANA
+IVKOV STANISLAVA
+IVKOV STEVAN
+IVKOV STEVAN
+IVKOV STEVAN
+IVKOV UROŠ
+IVKOV VOJISLAV
+IVKOVIĆ ĐURO
+IVKOVIĆ ANTUN
+IVKOVIĆ ARSA
+IVKOVIĆ BOŽA
+IVKOVIĆ BOGDAN
+IVKOVIĆ BORISLAV
+IVKOVIĆ BORISLAV
+IVKOVIĆ DEJAN
+IVKOVIĆ DIVNA
+IVKOVIĆ DRAGAN DIPL ING
+IVKOVIĆ DUŠAN
+IVKOVIĆ DUŠAN
+IVKOVIĆ DUŠAN
+IVKOVIĆ ESTERA
+IVKOVIĆ GUSTAV DR
+IVKOVIĆ-IVANDEKIĆ DANICA
+IVKOVIĆ JELENA
+IVKOVIĆ JOVAN
+IVKOVIĆ KOVILJKA
+IVKOVIĆ-LAZAR TATJANA DR
+IVKOVIĆ LUKA
+IVKOVIĆ MIHAJLO
+IVKOVIĆ MILANKA
+IVKOVIĆ MILAN
+IVKOVIĆ MILENTIJE
+IVKOVIĆ MILEVA
+IVKOVIĆ MILE
+IVKOVIĆ MILICA
+IVKOVIĆ MILOLJUB DIPL ING
+IVKOVIĆ MILORAD
+IVKOVIĆ MILUTIN
+IVKOVIĆ MIRJANA
+IVKOVIĆ MLADEN
+IVKOVIĆ NATAŠA
+IVKOVIĆ NATAŠA
+IVKOVIĆ NEBOJŠA
+IVKOVIĆ NIKOLA
+IVKOVIĆ NIKOLA
+IVKOVIĆ PETAR
+IVKOVIĆ PREDRAG
+IVKOVIĆ RADISAV
+IVKOVIĆ RANKO
+IVKOVIĆ STEVAN
+IVKOVIĆ STOJAN
+IVKOVIĆ VERA
+IVKOVIĆ VERA
+IVKOVIĆ VERICA
+IVKOVIĆ VLADIMIR
+IVKOVIĆ VLAJKO
+IVKOVIĆ ZAGORKA
+IVKOVIĆ ZDRAVKO
+IVKOVIĆ ZORICA
+IVOŠ ALEKSANDAR
+IVOŠ RODOLJUB
+IVOŠ VOJISLAV
+IVOŠEV ALEKSANDAR
+IVOŠEV DUŠAN
+IVOŠEV ILIJA
+IVOŠEV KATARINA
+IVOŠEV KOSTA
+IVOŠEV MARKO
+IVOŠEV SLAVKO
+IVOŠEV VOJISLAV
+IVOŠEVIĆ ĐURO
+IVOŠEVIĆ ALEKSANDRA
+IVOŠEVIĆ DANICA
+IVOŠEVIĆ GOJKO
+IVOŠEVIĆ MILAN
+IVOŠEVIĆ MILENKO
+IVOŠEVIĆ SAVA
+IVOŠEVIĆ SLOBODAN
+IVOŠEVIĆ ZORAN
+IVOVIĆ LJUBIŠA
+IVOVIĆ PETAR
+IZBRADIĆ STEVAN
+IZGARJAN MILIVOJ
+JAŠČENKOV STANA
+JAŠAR HASAN
+JAŠARAGIĆ IVANKA
+JAŠARAGIĆ ZIJO
+JAŠAREVIĆ HUSEIN
+JAŠAREVIĆ MUHAREM
+JAŠAREVIĆ RAMO
+JAŠAREVIĆ VOJISLAV
+JAŠARI DŽAFER
+JAŠAROV ŠAIP
+JAŠIĆ DESANKA
+JAŠIĆ SINIŠA
+JAŠINSKI RUŽA
+JAŠO ANA
+JAŠO JOŽEF DR
+JAŠO MILOSAV
+JAŠO MIROSLAVA
+JAŠOVIĆ GOJKO
+JAĆEVIĆ MIODRAG
+JAĆIMOVIĆ ALEKSANDAR LEKAR
+JAĆIMOVIĆ BOJIN
+JAĆIMOVIĆ JOVA
+JAĆIMOVIĆ MILENKO
+JAĆIMOVIĆ MILOJKO
+JAĆIMOVIĆ MIRJANA
+JAĆIMOVIĆ PETAR
+JAĆIMOVIĆ STEVO
+JAĆIMOVIĆ VOJISLAV
+JAĆIMOVSKI MOJSE
+JABLANOV ĐUKA
+JABLANOV DRAGICA
+JABLANOV IGNJATIJE
+JABLANOV JELENA
+JABLANOV LJUBOMIR
+JABLANOV MILORAD DIPL ING
+JABLANOV ZORA
+JABLANOV ZORA
+JABLANOVIĆ DESANKA
+JABLANOVIĆ RATKO
+JACANOVIĆ ŽIVKA
+JACANOVIĆ GABRIJELA
+JACANOVIĆ VLADIMIR
+JACIŠIN ANKA
+JACIĆ DARINKA
+JACIĆ DRAGAN
+JAGER ANA
+JAGER MARIN
+JAGER MIHAJLO
+JAGER PAVAO
+JAGETIĆ ALEKSANDAR
+JAGETIĆ MILOŠ
+JAGETIĆ STEVAN
+JAGETIĆ VELIMIR
+JAGETIĆ VOJISLAV
+JAGIĆ SLAVICA
+JAGLICA BRANKO
+JAGLICA SLOBODAN
+JAGNJIĆ DRAGAN
+JAGODIĆ ANĐELKO
+JAGODIĆ DUŠAN
+JAGODIĆ MILICA
+JAGODIĆ MIROSLAV
+JAGODIĆ PETAR
+JAGODIĆ RANKO
+JAGODIĆ VELJKO
+JAGODIĆ VLADO
+JAGUŠT-AKKAD LADA
+JAHJA REŠAD
+JAHURA VUKAŠIN
+JAJČANIN BOŽO
+JAJČEVIĆ ANGELA
+JAJAGIN RADOVAN
+JAJAGIN SPASOJE
+JAJAGIN ZORICA
+JAJIĆ ĐORĐE DR
+JAJIĆ ĐORĐE
+JAJIĆ DRAGAN
+JAJIĆ ILIJA
+JAJIĆ IVANKA
+JAJIĆ LAZAR
+JAJIĆ LENKA
+JAJIĆ MILENA
+JAJIĆ MILICA
+JAJIĆ NIKOLA
+JAJIĆ SAVA
+JAJIĆ STEVAN
+JAJIĆ SVETLANA
+JAJIN LADISLAV
+JAJIN MIRJANA
+JAJIN ZLATKO
+JAKŠA PIROŠKA
+JAKŠEVAC DRAGO
+JAKŠIĆ ŽARKO
+JAKŠIĆ ĐORĐE
+JAKŠIĆ ĐORĐE
+JAKŠIĆ ĐURA
+JAKŠIĆ ANA
+JAKŠIĆ BOGDAN
+JAKŠIĆ BOGDAN
+JAKŠIĆ BOJAN
+JAKŠIĆ BRANKO
+JAKŠIĆ DANE
+JAKŠIĆ DANE
+JAKŠIĆ DANE
+JAKŠIĆ DEJAN
+JAKŠIĆ DMITAR
+JAKŠIĆ DRAGAN
+JAKŠIĆ DUŠANKA
+JAKŠIĆ DUŠANKA
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠAN
+JAKŠIĆ DUŠKO
+JAKŠIĆ EMIL
+JAKŠIĆ ILIJA
+JAKŠIĆ ILIJA
+JAKŠIĆ IVICA
+JAKŠIĆ IVICA
+JAKŠIĆ JADRANKA
+JAKŠIĆ JASMINKA
+JAKŠIĆ JELENA
+JAKŠIĆ JOVANKA
+JAKŠIĆ JOVAN
+JAKŠIĆ JOVAN
+JAKŠIĆ KATICA
+JAKŠIĆ LJILJA
+JAKŠIĆ LJUBISAV
+JAKŠIĆ LJUBOMIR
+JAKŠIĆ LJUBOMIR
+JAKŠIĆ LJUBOMIR
+JAKŠIĆ LJUBOMIR
+JAKŠIĆ MARKO
+JAKŠIĆ MARKO
+JAKŠIĆ MARKO
+JAKŠIĆ MIJAT
+JAKŠIĆ MILAN
+JAKŠIĆ MILAN
+JAKŠIĆ MILENKO
+JAKŠIĆ MILEVA
+JAKŠIĆ MILOŠ
+JAKŠIĆ MILORAD
+JAKŠIĆ MILORAD
+JAKŠIĆ MIODRAG
+JAKŠIĆ MIRKO
+JAKŠIĆ NEBOJŠA
+JAKŠIĆ NEDELJKO
+JAKŠIĆ NENAD
+JAKŠIĆ PAVLE
+JAKŠIĆ PAVLE
+JAKŠIĆ PETAR
+JAKŠIĆ PETAR
+JAKŠIĆ-PROVČI BRANKA
+JAKŠIĆ RADENKO
+JAKŠIĆ RADE
+JAKŠIĆ RADE
+JAKŠIĆ RADIŠA
+JAKŠIĆ RADOJKO
+JAKŠIĆ RADOVAN
+JAKŠIĆ RADUN
+JAKŠIĆ RISTO
+JAKŠIĆ ROSA
+JAKŠIĆ RUŽICA
+JAKŠIĆ RUŽICA
+JAKŠIĆ SAVA
+JAKŠIĆ SLOBODAN
+JAKŠIĆ SMILJA
+JAKŠIĆ STEVAN
+JAKŠIĆ SVETKO
+JAKŠIĆ SVETLANA DIPL PH
+JAKŠIĆ TOMISLAV
+JAKŠIĆ VASILIJE
+JAKŠIĆ VELIMIR
+JAKŠIĆ VERA
+JAKŠIĆ VLADA
+JAKŠIĆ VLADIMIR
+JAKŠIĆ VOJISLAV
+JAKAB DEŽE
+JAKAB JOŽEF
+JAKAB PAVEL
+JAKEŠEVIĆ DRAGAN
+JAKEŠEVIĆ NIKO
+JAKIŠA IŠTVAN
+JAKIĆ ĐORĐE
+JAKIĆ DANICA
+JAKIĆ DARA
+JAKIĆ DESANKA
+JAKIĆ MILANKA
+JAKIĆ MIODRAG
+JAKIĆ NIKOLA
+JAKIĆ STEVAN
+JAKIĆ VIDA
+JAKICA ČEDO
+JAKICA ILIJA
+JAKIMOV SLAVKO DR LEKAR
+JAKIMOVA-GAZEPOVA JULKA DR
+JAKIMOVSKI BLAGOJ
+JAKIMOVSKI BOGOSLAV
+JAKIMOVSKI BORKO
+JAKIMOVSKI DANE
+JAKLIĆ IVAN
+JAKOB JOŠKA
+JAKOB JOŽEF
+JAKOB LAJOŠ
+JAKOBAC ĐURĐICA
+JAKOBI BORIS
+JAKOBI TATJANA
+JAKOBI VILMOŠ
+JAKOBOVIĆ FRANJO
+JAKOBS IŠTVAN
+JAKONIĆ DRAGOSLAV DR
+JAKONIĆ JASMINA
+JAKONIĆ MILAN DIPL OEC
+JAKONIĆ RADMILA
+JAKOPČEVIĆ BRANKA
+JAKOPOVIĆ BRANISLAVA
+JAKOPOVIĆ MIROSLAV
+JAKOPOVIĆ VLADIMIR
+JAKOTIN ŽIVKO
+JAKOTIN KOSTA
+JAKOTIN PLEMENKA
+JAKOV SALAMUN
+JAKOVAC IVAN
+JAKOVIĆ RADE
+JAKOVLJEV ŽARKO
+JAKOVLJEV ĐURA
+JAKOVLJEV ĐURICA
+JAKOVLJEV ALEKSEJ
+JAKOVLJEV DANICA
+JAKOVLJEV DRAGAN
+JAKOVLJEV DUŠAN
+JAKOVLJEV IVAN
+JAKOVLJEV JEFREM
+JAKOVLJEV KATA
+JAKOVLJEV KOSTA
+JAKOVLJEV KRISTIFOR
+JAKOVLJEV MARINA
+JAKOVLJEV MILOŠ
+JAKOVLJEV MILOŠ
+JAKOVLJEV MIROSLAV
+JAKOVLJEV RADOVAN
+JAKOVLJEV SLOBODAN
+JAKOVLJEV SVETOZAR
+JAKOVLJEV VLADA
+JAKOVLJEV ZLATOJE
+JAKOVLJEVIĆ ŽIVAN
+JAKOVLJEVIĆ ŽIVORAD
+JAKOVLJEVIĆ ĐORĐE
+JAKOVLJEVIĆ ĐORĐO
+JAKOVLJEVIĆ ĐURĐINKA
+JAKOVLJEVIĆ ALEKSANDAR
+JAKOVLJEVIĆ ANA
+JAKOVLJEVIĆ BOŽANA
+JAKOVLJEVIĆ BOGDAN
+JAKOVLJEVIĆ BORIŠA
+JAKOVLJEVIĆ BRANKA
+JAKOVLJEVIĆ DAMJAN
+JAKOVLJEVIĆ DAMJAN
+JAKOVLJEVIĆ DIVNA
+JAKOVLJEVIĆ DRAGAN
+JAKOVLJEVIĆ DRAGOSLAV
+JAKOVLJEVIĆ EMILIJA
+JAKOVLJEVIĆ GOJKO
+JAKOVLJEVIĆ GROZDANA
+JAKOVLJEVIĆ IGNJAT
+JAKOVLJEVIĆ JANJA
+JAKOVLJEVIĆ JOSO
+JAKOVLJEVIĆ JOVAN
+JAKOVLJEVIĆ JOVAN
+JAKOVLJEVIĆ JOVO
+JAKOVLJEVIĆ JOVO
+JAKOVLJEVIĆ LAZAR
+JAKOVLJEVIĆ LJILJANA
+JAKOVLJEVIĆ LJUBINKO
+JAKOVLJEVIĆ LUKA
+JAKOVLJEVIĆ MARKO
+JAKOVLJEVIĆ MILANA
+JAKOVLJEVIĆ MILAN
+JAKOVLJEVIĆ MILAN
+JAKOVLJEVIĆ MILENA
+JAKOVLJEVIĆ MILIĆ
+JAKOVLJEVIĆ MILICA
+JAKOVLJEVIĆ MILICA
+JAKOVLJEVIĆ MILIVOJ MR PH
+JAKOVLJEVIĆ MILJANA
+JAKOVLJEVIĆ MILOŠ
+JAKOVLJEVIĆ MILOVAN
+JAKOVLJEVIĆ MILUTIN
+JAKOVLJEVIĆ MIRJANA
+JAKOVLJEVIĆ MIRKO
+JAKOVLJEVIĆ MIROSLAV
+JAKOVLJEVIĆ MITA
+JAKOVLJEVIĆ NIKOLA
+JAKOVLJEVIĆ OBRAD
+JAKOVLJEVIĆ PAJA
+JAKOVLJEVIĆ RADIŠA
+JAKOVLJEVIĆ RADIVOJ
+JAKOVLJEVIĆ RADOJKO
+JAKOVLJEVIĆ SAVA
+JAKOVLJEVIĆ SIMO
+JAKOVLJEVIĆ SLOBODAN
+JAKOVLJEVIĆ SONJA
+JAKOVLJEVIĆ STEVAN
+JAKOVLJEVIĆ TATJANA
+JAKOVLJEVIĆ VASA
+JAKOVLJEVIĆ VASA
+JAKOVLJEVIĆ VASILIJE
+JAKOVLJEVIĆ VIKTOR
+JAKOVLJEVIĆ VIKTOR
+JAKOVLJEVIĆ VIKTOR
+JAKOVLJEVIĆ ZDRAVKO
+JAKOVOVIĆ DUŠAN
+JAKUŠ MIRJANA
+JAKUBEC ĐURA
+JAKUBEC LADISLAV
+JAMA NADA
+JAMBOR ANDREA
+JAMBOR DANIELA
+JAMBOR IMRE
+JAMBOR MIHALJ
+JAMBRUŠIĆ FRANJO
+JAMINA MILOVAN
+JAMINA RATKO
+JAMRIK ĐORĐE
+JAMRIK JELENA
+JAMRIK LJUBICA
+JAMRIK OTO
+JANČA DEJAN DR
+JANČA KOSTA DR
+JANČA LJUBICA
+JANČIĆ BILJANA
+JANČIĆ BOŽANA
+JANČIĆ BOGDAN
+JANČIĆ DIMITRIJE
+JANČIĆ DRAGINJA
+JANČIĆ DRAGOSLAVA
+JANČIĆ DRAGOSLAV
+JANČIĆ DUŠAN
+JANČIĆ DUŠAN
+JANČIĆ GORDANA
+JANČIĆ GORICA
+JANČIĆ JEROSIM
+JANČIĆ LJUBICA
+JANČIĆ MILOŠ
+JANČIĆ MIROSLAV
+JANČIĆ MLADEN
+JANČIĆ NIKOLA
+JANČIĆ PERA
+JANČIĆ PETAR
+JANČIĆ RADOVAN
+JANČIĆ SAVA
+JANČIĆ SVETISLAV
+JANČIĆ SVETISLAV
+JANČIĆ TIHOMIR
+JANČIĆ TINKA
+JANČIĆ VELIBOR
+JANČIĆ VINKA
+JANČIĆ VLADIMIR
+JANČIĆ VLASTA
+JANČURIĆ ALEKSANDAR
+JANČURIĆ DARINKA
+JANČURIĆ DUŠAN
+JANČURIĆ JOVAN
+JANČURIĆ LAZAR
+JANČURIĆ LENKA
+JANČURIĆ MIRJANA
+JANČURIĆ SAVA
+JANŽEKOVIĆ MILEVKA
+JANŽEKOVIĆ OLGA
+JANŽELJ ANTON
+JANAČEK ĐORĐE
+JANAČEK KATICA
+JANAČKOVIĆ STOIL
+JANAĆ JANOŠ
+JANAĆ KAROLJ
+JANCIĆ BLAGOJE
+JANCIĆ PREDRAG
+JANDRIĆ ĐURICA
+JANDRIĆ BOGDAN
+JANDRIĆ JANDRIJA
+JANDRIĆ MARINKO
+JANDRIĆ MARKO
+JANDRIĆ MARKO
+JANDRIĆ MIĆO
+JANDRIĆ MILENA
+JANDRIĆ MILINA
+JANDRIĆ MILKA
+JANDRIĆ MILORAD
+JANDRIĆ MILORAD
+JANDRIĆ MIROSLAV
+JANDRIĆ MIROSLAV
+JANDRIĆ MITAR
+JANDRIĆ MOMČILO
+JANDRIĆ NEDELJKO
+JANDRIĆ RADOVAN
+JANDRIĆ RATKO
+JANDRIĆ RISTO
+JANDRIĆ SIMO
+JANDRIĆ SLOBODAN
+JANDRIĆ SRETEN
+JANDRIĆ STANKO
+JANDRIĆ STANKO
+JANDRIĆ STANKO
+JANDRIĆ UGLJEŠA
+JANDRIĆ VIDA
+JANDRIĆ VINKA
+JANDRIĆ ZORAN
+JANDRIĆ ZORAN
+JANEŠ NEVEN
+JANEGA SNEŽANA
+JANEV BLAGOJE DIPL ING
+JANEVSKI ALEKSANDAR
+JANIČIĆ BLAŽO
+JANIČIĆ BOŽA
+JANIČIĆ JELENA
+JANIČIĆ MILEVA
+JANIČIĆ MIRKO
+JANIČIĆ RADOJICA
+JANIČIĆ STEVO
+JANIĆ ČASLAV DIPL ING
+JANIĆ ŽIVORAD
+JANIĆ ALEKSANDAR
+JANIĆ ANĐELKO
+JANIĆ DUŠAN
+JANIĆ DUŠKO
+JANIĆ-HILT GORDANA
+JANIĆ IRENA
+JANIĆ IVAN DR
+JANIĆ MILISAV
+JANIĆ NADA
+JANIĆ RADOJKA
+JANIĆ SLOBODAN
+JANIĆ VLADIMIR
+JANIĆIJEVIĆ MILENKO
+JANIĆIJEVIĆ MILOŠ
+JANIĆIJEVIĆ MIRKO
+JANIĆIJEVIĆ MOMČILO
+JANIĆIJEVIĆ NADEŽDA
+JANIĆIJEVIĆ OZRENKA
+JANIĆIJEVIĆ RATKO
+JANIĆIJEVIĆ SOFIJA
+JANIĆIJEVIĆ VITOMIR
+JANIĆIN ANGELINA
+JANIĆIN ILIJA
+JANICKI STANIMIR
+JANIK FERENC
+JANJANIN BRANKO
+JANJANIN SIMO
+JANJATOVIĆ DEJAN
+JANJATOVIĆ GORICA
+JANJATOVIĆ MANE
+JANJATOVIĆ MILAN
+JANJATOVIĆ MIRKO
+JANJATOVIĆ NEDELJKO
+JANJATOVIĆ NIKOLA
+JANJATOVIĆ SLAVICA
+JANJATOVIĆ SLAVICA
+JANJATOVIĆ VERA
+JANJETOV RADA
+JANJETOVIĆ BRANKO
+JANJETOVIĆ NEBOJŠA
+JANJETOVIĆ SLAVICA
+JANJETOVIĆ SLOBODAN
+JANJEVIĆ DRAGOSLAV
+JANJEVIĆ KSENIJA
+JANJEVIĆ ZORAN
+JANJEVIĆ ZORAN
+JANJIČIĆ SIMO
+JANJIŠ JELICA
+JANJIĆ ČEDOMIR
+JANJIĆ ŽELJKO
+JANJIĆ ŽIVKA
+JANJIĆ ŽIVKO
+JANJIĆ ĐORĐE DR
+JANJIĆ BOŠKO
+JANJIĆ DANICA
+JANJIĆ DRAGOMIR DIPL OEC
+JANJIĆ ILIJA
+JANJIĆ JELA
+JANJIĆ JEVREM
+JANJIĆ JEVTO
+JANJIĆ JOVAN
+JANJIĆ JOVO
+JANJIĆ JOVO
+JANJIĆ JOVO
+JANJIĆ KSENIJA
+JANJIĆ LJUBOMIR
+JANJIĆ LUKA
+JANJIĆ MARIJA
+JANJIĆ MARKO
+JANJIĆ MILICA
+JANJIĆ MILIVOJ
+JANJIĆ MILKA
+JANJIĆ MILOMIR
+JANJIĆ MLADEN
+JANJIĆ NATAŠA
+JANJIĆ NEBOJŠA
+JANJIĆ RADOVAN
+JANJIĆ SAVO
+JANJIĆ STEVAN
+JANJIĆ VITOMIR
+JANJIĆ VOJISLAV MR
+JANJIĆ VOJKO
+JANJIĆ VUKOTA
+JANJIN BOGOLJUB
+JANJIN DAMJAN
+JANJIN LAZAR
+JANJIN MILIVOJ
+JANJIN RADIVOJ
+JANJIN SNEŽANA
+JANJOŠ ZORAN
+JANJOŠEVIĆ BRANISLAV
+JANJOŠEVIĆ MILICA
+JANJOŠEVIĆ STEVANKA
+JANJUŠEVIĆ BOSILJKA
+JANJUŠEVIĆ GOJKO
+JANJUŠEVIĆ JOKICA
+JANJUŠEVIĆ MIRA
+JANJUŠEVIĆ NEDELJKO
+JANJUŠEVIĆ NEDELJKO
+JANJUŠEVIĆ STOJAN
+JANKA ŠANDOR
+JANKA IVAN
+JANKANJ VLADO
+JANKIĆ KRISTINA
+JANKO JANOŠ
+JANKOV BORISLAV
+JANKOV BORISLAV
+JANKOV BORISLAV
+JANKOV BRANISLAV
+JANKOV DRAGICA
+JANKOV DUŠAN
+JANKOV IVAN
+JANKOV JELICA
+JANKOV JOVAN
+JANKOV JOVICA
+JANKOV MILAN
+JANKOV MILIJANA
+JANKOV MIOMIR
+JANKOV MITA
+JANKOV MITKO
+JANKOV NADA
+JANKOV NEDELJKO
+JANKOV NIKOLA
+JANKOV NIKOLA
+JANKOV NOVKA
+JANKOV PREDRAG
+JANKOV RADIVOJ
+JANKOV RADOSLAVA
+JANKOV RANĐEL
+JANKOV SLOBODAN
+JANKOV SLOBODAN
+JANKOV SMILJKA
+JANKOV SPASOJA
+JANKOV SREDOJE
+JANKOV TIHOMIR
+JANKOV VERA
+JANKOV ZAGORKA DR
+JANKOVIĆ ČASLAV
+JANKOVIĆ ČEDO
+JANKOVIĆ ČEDO
+JANKOVIĆ ŽARKO DIPL ING
+JANKOVIĆ ŽARKO
+JANKOVIĆ ŽIVKO
+JANKOVIĆ ŽIVORAD
+JANKOVIĆ ŽIVORAD
+JANKOVIĆ ŽIVORAD
+JANKOVIĆ ĐORĐE
+JANKOVIĆ ĐORĐE
+JANKOVIĆ ĐURĐICA
+JANKOVIĆ ĐURA
+JANKOVIĆ ALEKSANDAR
+JANKOVIĆ ALEKSANDAR
+JANKOVIĆ ANA
+JANKOVIĆ ANICA
+JANKOVIĆ ANKA
+JANKOVIĆ BOŠKO
+JANKOVIĆ BOŠKO
+JANKOVIĆ BOŽIDAR
+JANKOVIĆ BOŽIDAR
+JANKOVIĆ BOŽO
+JANKOVIĆ BOGOLJUB
+JANKOVIĆ BORIVOJ DR LEKAR
+JANKOVIĆ BRANKO
+JANKOVIĆ BRATISLAV
+JANKOVIĆ DARA
+JANKOVIĆ DIMITRIJE
+JANKOVIĆ DIMITRIJE
+JANKOVIĆ DIMITRIJE
+JANKOVIĆ DOBRIVOJE
+JANKOVIĆ DOBRIVOJ
+JANKOVIĆ DRAGANA
+JANKOVIĆ DRAGAN
+JANKOVIĆ DRAGAN
+JANKOVIĆ DRAGAN
+JANKOVIĆ DRAGINJA
+JANKOVIĆ DRAGOMIR
+JANKOVIĆ DRAGOSLAV
+JANKOVIĆ DUŠANKA
+JANKOVIĆ DUŠAN
+JANKOVIĆ DUŠAN
+JANKOVIĆ DUŠICA
+JANKOVIĆ GORDANA
+JANKOVIĆ GORDANA
+JANKOVIĆ HRISTIVOJE
+JANKOVIĆ IGNJAT
+JANKOVIĆ JELICA
+JANKOVIĆ JORDAN
+JANKOVIĆ JOVAN
+JANKOVIĆ JOVAN
+JANKOVIĆ JOVAN
+JANKOVIĆ JOVAN
+JANKOVIĆ JULIJANA
+JANKOVIĆ KALMAN DIPL ING
+JANKOVIĆ KALMAN
+JANKOVIĆ KATICA
+JANKOVIĆ KOVILJKA
+JANKOVIĆ KRSTA
+JANKOVIĆ-KUZMANČEV OLIVERA
+JANKOVIĆ LASLO
+JANKOVIĆ LASLO
+JANKOVIĆ LAZAR
+JANKOVIĆ LAZAR
+JANKOVIĆ LJILJANA
+JANKOVIĆ LJUBICA
+JANKOVIĆ LJUBICA
+JANKOVIĆ LJUBICA
+JANKOVIĆ LJUBOMIR
+JANKOVIĆ MARA
+JANKOVIĆ MARIJAN
+JANKOVIĆ MARIJA
+JANKOVIĆ MARIJA
+JANKOVIĆ MARIJA
+JANKOVIĆ MARIJA
+JANKOVIĆ MARINA
+JANKOVIĆ MARKO
+JANKOVIĆ MELANIJA
+JANKOVIĆ MIĆA
+JANKOVIĆ MIĆA
+JANKOVIĆ MILAN
+JANKOVIĆ MILENA
+JANKOVIĆ MILENKO
+JANKOVIĆ MILENKO
+JANKOVIĆ MILICA
+JANKOVIĆ MILICA
+JANKOVIĆ MILIJANA
+JANKOVIĆ MILINKO
+JANKOVIĆ MILISAV
+JANKOVIĆ MILIVOJE
+JANKOVIĆ MILOJE
+JANKOVIĆ MILOJICA
+JANKOVIĆ MILOMIR
+JANKOVIĆ MILORAD
+JANKOVIĆ MILORAD
+JANKOVIĆ MILORAD
+JANKOVIĆ MILOSAV
+JANKOVIĆ MILOSAV
+JANKOVIĆ MILOSAV
+JANKOVIĆ MILUTIN
+JANKOVIĆ MILUTIN
+JANKOVIĆ MILUTIN
+JANKOVIĆ MILUTIN
+JANKOVIĆ MIRJANA
+JANKOVIĆ MIROLJUB
+JANKOVIĆ MITAR
+JANKOVIĆ MLADEN
+JANKOVIĆ-MRKIĆ ZORA DIPL ING
+JANKOVIĆ NADA
+JANKOVIĆ NADA
+JANKOVIĆ NASTA
+JANKOVIĆ NENAD
+JANKOVIĆ NIKOLA
+JANKOVIĆ OBRAD
+JANKOVIĆ PAVLE
+JANKOVIĆ PAVLE
+JANKOVIĆ PAVLE
+JANKOVIĆ PETAR
+JANKOVIĆ PETAR
+JANKOVIĆ PETAR
+JANKOVIĆ PRVOSLAV
+JANKOVIĆ PRVOSLAV
+JANKOVIĆ RADIVOJE
+JANKOVIĆ RADOMIR
+JANKOVIĆ RADOSLAV
+JANKOVIĆ RADOSLAV
+JANKOVIĆ RADOVAN
+JANKOVIĆ RAJKO
+JANKOVIĆ RAJKO
+JANKOVIĆ RANKO
+JANKOVIĆ RATKO
+JANKOVIĆ ROSA
+JANKOVIĆ RUŽA
+JANKOVIĆ SLAVICA
+JANKOVIĆ SLAVKO
+JANKOVIĆ SLAVKO
+JANKOVIĆ SLOBODAN
+JANKOVIĆ SLOBODAN
+JANKOVIĆ SLOBODAN
+JANKOVIĆ SLOBODAN
+JANKOVIĆ SOFIJA
+JANKOVIĆ SPASA
+JANKOVIĆ SPASOJE
+JANKOVIĆ SPOMENKA
+JANKOVIĆ SRBOLJUB
+JANKOVIĆ STANKO
+JANKOVIĆ STEVAN
+JANKOVIĆ STEVAN
+JANKOVIĆ STEVAN
+JANKOVIĆ STOJANKA
+JANKOVIĆ SVETISLAV
+JANKOVIĆ SVETOZAR
+JANKOVIĆ TIBOR
+JANKOVIĆ TODOR
+JANKOVIĆ TODOR
+JANKOVIĆ TODOR
+JANKOVIĆ VESNA
+JANKOVIĆ VITOMIR
+JANKOVIĆ VITOMIR
+JANKOVIĆ VLADIMIR
+JANKOVIĆ VUKIĆ
+JANKOVIĆ VUKICA
+JANKOVIĆ VUKOMAN
+JANKOVIĆ ZLATOJE
+JANKOVIĆ ZOLTAN
+JANKOVIĆ ZORAN
+JANKOVIĆ ZORAN
+JANKOVIĆ ZORICA
+JANKOVIĆ ZORICA
+JANKOVIĆ ZORICA
+JANKOVIĆ ZORKA
+JANKULOV DANICA
+JANKULOV-DEMJEN MAJA
+JANKULOV DRAGIŠA MR PH
+JANKULOV STEVAN
+JANKULOVSKI MARIJA
+JANKULOVSKI PETAR
+JANO JULIJA
+JANOŠEV BISERKA
+JANOŠEV DRAGICA
+JANOŠEV LJILJANA
+JANOŠEV MILAN
+JANOŠEV MILENA
+JANOŠEV MILENKO
+JANOŠEVIĆ RADIVOJ
+JANOŠI FRANCIŠKA
+JANOŠI ILONA
+JANOŠI KARLO
+JANOŠI LASLO
+JANOŠI MARGITA
+JANOŠI MIHALJ
+JANOŠI MIHALJ
+JANOŠI TEREZA
+JANOŠI ZOLTAN
+JANOVAC ŽIVOJIN
+JANOVIĆ LJILJA
+JANUŠKO IŠTVAN
+JANUS MILKA
+JANUS VOISLAV
+JANUZOVIĆ DUŠANKA
+JANUZOVIĆ JOLAN
+JANUZOVIĆ MILOVAN
+JANUZOVIĆ MIRALJUB
+JANUZOVIĆ NOVICA DR
+JANUZOVIĆ SLOBODAN
+JANUZOVIĆ SVETLANA
+JAPUNDŽA LAZA
+JAPUNDŽIĆ ĐORĐE
+JAPUNDŽIĆ GORDANA
+JAPUNDŽIĆ MIRKO
+JAPUNDŽIĆ NIKOLA
+JAPUNDŽIĆ NIKOLA
+JAPUNDŽIĆ NIKOLA
+JAPUNDŽIĆ SAVA
+JARAK IVAN
+JARAMAZ DIJANA
+JARAMAZ MILOVAN
+JARAMAZ NIKOLA
+JARC ANGEL
+JARI PROKA
+JARIĆ ČEDOMIR
+JARIĆ ALEKSANDAR
+JARIĆ AVDO
+JARIĆ BOJAN
+JARIĆ BRANKO
+JARIĆ DANIELA
+JARIĆ DESANKA
+JARIĆ DRAGANA
+JARIĆ DRAGAN
+JARIĆ DUŠAN DR
+JARIĆ KRISTINA
+JARIĆ KRISTINA
+JARIĆ LJILJANA
+JARIĆ LJILJANA
+JARIĆ MARIJA
+JARIĆ MARIJA
+JARIĆ MILAN
+JARIĆ MILAN
+JARIĆ MILOJKO
+JARIĆ MIRA
+JARIĆ SLOBODAN
+JARIĆ ZORAN
+JARMINAC BRANKO
+JAROŠENKO KATARINA
+JAROŠEVSKI ANTON
+JAROŠEVSKI IVICA
+JAROŠEVSKI PAVEL
+JASENOVSKI ANA
+JASIĆ DIVNA
+JASIĆ JANKO
+JASIĆ MANDA
+JASIĆ MIRKO
+JASIĆ VERICA
+JASIKA RUŽA
+JASIKA STOJANKA
+JASIKIĆ MILORAD
+JASMINOVIĆ JAMIN
+JASNIĆ MILAN DR LEKAR
+JASNIĆ MILAN
+JASNIĆ MILOMIRKA
+JASNIĆ SINIŠA
+JASNIGER ALEKSANDAR
+JATIĆ ANĐELIJA
+JATIĆ DRAGAN
+JATIĆ GRADIMIR
+JATIĆ STEVAN
+JAUKOVIĆ DRAGIŠA
+JAUKOVIĆ PEJKA
+JAUS VALTER
+JAVNI PETAR
+JAVORAN IVAN
+JAVORINA ĐURA
+JAVORINA LJILJANA
+JAVORINA MILE
+JAVORINA SIMO
+JAVORNIK BOSILJKA
+JAVORNIK PAVEL
+JAZIĆ DANILO
+JAZIĆ IVANKA
+JAZIĆ LAZA
+JAZIĆ LJUBOMIR
+JAZIĆ MARINKO
+JAZIĆ MIROSLAV
+JAZIĆ-SAVIN TATJANA
+JAZIĆ SVETLANA
+JAZVIĆ ANKA
+JEČINAC MILAN
+JEČINAC MILORAD
+JEČINAC VERA
+JEČMENICA ALEKSANDAR
+JEČMENICA ALEKSANDAR
+JEČMENICA JELENA
+JEČMENICA MILOŠ
+JEČMENICA VLADIMIR
+JEŠIĆ ŽIVKA
+JEŠIĆ ANĐELKO
+JEŠIĆ DANIJELA
+JEŠIĆ JULKA
+JEŠIĆ MILAN
+JEŠIĆ MIODRAG
+JEŠIĆ MIROSLAVA
+JEŠIĆ STEVAN
+JEŠIĆ ZORAN
+JEŽ DRAGAN
+JEŽ GOSPOJINKA
+JEŽ MILORAD
+JEŽ SLOBODAN
+JEŽ TRIVO
+JEŽEK MILIVOJ
+JECKOV NADA
+JEDERAN JOSIP
+JEDERAN JOSIP
+JEFIĆ GORAN
+JEFTENIĆ ŠPIRO
+JEFTENIĆ VLADO
+JEFTIĆ ŽARKO
+JEFTIĆ BILJANA
+JEFTIĆ BOŽIDAR
+JEFTIĆ BORISLAV DIPL ING
+JEFTIĆ BRANKO
+JEFTIĆ DAMJAN
+JEFTIĆ DRAGAN
+JEFTIĆ JADRANKA
+JEFTIĆ JEFTA
+JEFTIĆ JELENA
+JEFTIĆ JOVAN
+JEFTIĆ KATARINA
+JEFTIĆ LJUBOMIR
+JEFTIĆ MILAN
+JEFTIĆ MILAN
+JEFTIĆ MILENKO
+JEFTIĆ MILORAD
+JEFTIĆ MITA
+JEFTIĆ SRETENKA
+JEFTIĆ TIHOMIR
+JEFTIĆ TOMISLAV
+JEFTIĆ VELINKA
+JEFTIĆ VLADIMIR
+JEFTIĆ VLASTA
+JEFTIĆ ZDRAVKO
+JEFTOVIĆ FRANJA
+JEGARAC OLGA
+JEGDIĆ DAMJAN
+JEGDIĆ GORDANA
+JEGDIĆ SVETISLAV
+JEGDIĆ VASA
+JEGDIĆ VASO
+JEGEŠ MILA
+JEKELIĆ BRANISLAV
+JEKELIĆ BRANKO
+JEKELIĆ EMILIJA
+JEKELIĆ LASLO
+JEKELIĆ MILAN
+JEKELIĆ MILIĆ
+JEKELIĆ RADOSLAV DIPL ING
+JEKELIĆ SLAVKO
+JEKELIĆ ZORICA
+JEKNIĆ RADOJICA
+JELČIĆ JOZEFINA
+JELČIĆ KRISTIJAN
+JELČIĆ LJUBIŠA
+JELČIĆ MILOVAN
+JELČIĆ MILOVAN
+JELČIĆ PAVLE
+JELČIĆ ZORA
+JELAČA ĐURO
+JELAČA ĐURO
+JELAČA BRANKO
+JELAČA DESA
+JELAČA KOSTA
+JELAČA MIHAJLO
+JELAČA MILENKO
+JELAČA RUŽA
+JELAČA SIMO DR ING
+JELAČA SLOBODAN
+JELAČA STANKO
+JELAČA STOJAN
+JELAČIĆ BOŽIDAR
+JELAČIĆ BRANKO
+JELAČIĆ DANILO
+JELAČIĆ DUŠAN
+JELAČIĆ JULIŠKA
+JELAČIĆ LJUBOMIR
+JELAČIĆ MIHAJLO
+JELAČIĆ MILENKO
+JELAČIĆ MIROSLAV
+JELAČIĆ RATOMIR
+JELAČIĆ SLOBODAN
+JELAČIĆ ZORKA
+JELAVIĆ ŽELJKO
+JELAVIĆ DRAGO
+JELEČ ILIJA
+JELEČANIN ĐORĐE
+JELEČANIN MARIJA
+JELEČIĆ JOVAN
+JELENČIĆ FRANJA
+JELENIĆ ŽIVAN
+JELENIĆ MILAN
+JELENIĆ PANTA
+JELENIĆ PAVLE
+JELENIĆ RADA
+JELENIĆ SLOBODAN
+JELENIĆ VASILIJE
+JELENKOVIĆ ALEKSANDAR
+JELENKOVIĆ GROZDA
+JELENKOVIĆ VLADISLAV
+JELESIĆ ANGELA PROFESOR
+JELIČIĆ ŽIVKO
+JELIČIĆ ĐURO
+JELIČIĆ BEATA
+JELIČIĆ BRANKO
+JELIČIĆ DUŠAN
+JELIČIĆ JELENA
+JELIČIĆ JOVO
+JELIČIĆ LJUBICA
+JELIČIĆ MARIJA
+JELIČIĆ MILAN
+JELIČIĆ MILE
+JELIČIĆ MIRKO
+JELIČIĆ PETAR
+JELIČIĆ PETAR
+JELIČIĆ ROSA
+JELIČIĆ VID
+JELIĆ ŽIVKO
+JELIĆ ŽIVKO
+JELIĆ ĐORĐE
+JELIĆ ĐORĐE
+JELIĆ AĆIM
+JELIĆ ANĐA
+JELIĆ ANTE
+JELIĆ BUDIMIR
+JELIĆ DRAGAN
+JELIĆ DRAGUTIN
+JELIĆ DUŠAN
+JELIĆ EMILIJA
+JELIĆ ESTERA
+JELIĆ GORDANA
+JELIĆ IVANKA
+JELIĆ IVICA
+JELIĆ JAGODINKA
+JELIĆ JANJA
+JELIĆ JELENA
+JELIĆ JOVAN
+JELIĆ LAZAR
+JELIĆ LAZAR
+JELIĆ LJUBICA
+JELIĆ LJUBINKA
+JELIĆ LUKA
+JELIĆ MARICA
+JELIĆ MARINA
+JELIĆ-MATIĆ MARIJA
+JELIĆ MILAN
+JELIĆ MILAN
+JELIĆ MILENA
+JELIĆ MILENKO
+JELIĆ MILKA
+JELIĆ MIODRAG
+JELIĆ MIODRAG
+JELIĆ MIRJANA
+JELIĆ MITA
+JELIĆ MOMIR
+JELIĆ NADA
+JELIĆ NEDELJKO
+JELIĆ PAVLE
+JELIĆ PREDRAG
+JELIĆ PREDRAG
+JELIĆ RADENKO
+JELIĆ ROSA
+JELIĆ SAVA
+JELIĆ SIMA
+JELIĆ SLAVICA
+JELIĆ STANIMIR
+JELIĆ STEVAN
+JELIĆ STEVA
+JELIĆ STEVA
+JELIĆ STIPE
+JELIĆ SVETISLAV DIPL ING
+JELIĆ SVETOZAR
+JELIĆ TOMA
+JELIĆ TOMISLAV
+JELIĆ VASA
+JELIĆ VASO
+JELIĆ VIKTORIJA
+JELICKI SIMEUN
+JELIN JOVAN
+JELIN RADMILA
+JELINČIĆ DUJO
+JELINEK STEVAN
+JELISAVAC GORDAN
+JELISAVAC MILOŠ
+JELISAVAC MOMIR
+JELKIĆ JOVAN
+JELKIĆ LAZAR
+JELKIĆ OLIVERA
+JELKIĆ VLADIMIR
+JELOVAC ŽARKO
+JELOVAC ŽARKO
+JELOVAC ĐORĐE
+JELOVAC ĐORĐE
+JELOVAC ĐURO
+JELOVAC BISERKA
+JELOVAC BRANISLAV
+JELOVAC BRANKA
+JELOVAC BRANKA
+JELOVAC BRANKO
+JELOVAC DRAGAN
+JELOVAC DRAGAN
+JELOVAC DUŠAN
+JELOVAC IZABELA
+JELOVAC JOVAN
+JELOVAC MILAN
+JELOVAC MILICA
+JELOVAC MIROSLAV
+JELOVAC MIROSLAV
+JELOVAC NADA
+JELOVAC NIKOLA
+JELOVAC RADOJKA
+JELOVAC RADOJKA
+JELOVAC RADOMIR DR LEKAR
+JELOVAC RUŽICA
+JELOVAC SLOBODAN
+JELOVAC STEVAN
+JELOVAC STOJAN
+JELOVAC TUGOMIR
+JELOVAC VELIMIR
+JELOVAC VLADA
+JELOVAC VUJICA
+JELOVIĆ MILANKA
+JELUŠIĆ GORDANA
+JELUŠIĆ LENKA
+JELUŠIĆ MATIJE
+JEMČ BRANISLAV
+JEMRIĆ JELA
+JENECKOV RADMILA
+JENECKOV SAŠA
+JENEI ANDRAŠ
+JENEI EUGEN
+JENEI LAJOŠ
+JENEI MIODRAG
+JENEI RUŽA
+JENEI STEVAN
+JENEI TIBOR
+JENEV BLAGOJ
+JEPURSKI NENAD
+JERČIĆ FRANJO
+JERANČE DANICA
+JERANT ANDRIJA
+JERANT PATIĆ VERA DR
+JERANT PETAR
+JERAUŠEK FRANJO
+JERAUŠEK IVICA
+JERBIĆ DRAGICA
+JEREBINŠEK ANA
+JEREBINŠEK SLAVKO
+JERELE FRANCIŠKA
+JEREMENKO ALEKSANDRA
+JEREMIĆ ĐOKA
+JEREMIĆ ĐORĐE
+JEREMIĆ ALEKSANDAR
+JEREMIĆ-BLAGOJEVIĆ VERICA
+JEREMIĆ BLAGOJE
+JEREMIĆ DIMITRIJE DR LEKAR
+JEREMIĆ DRAGOSLAV
+JEREMIĆ DUŠANKA
+JEREMIĆ JASNA
+JEREMIĆ JELENA
+JEREMIĆ JOVAN
+JEREMIĆ JOVAN
+JEREMIĆ LAZAR
+JEREMIĆ LJILJANA
+JEREMIĆ MELANIJA
+JEREMIĆ MILEVA
+JEREMIĆ MIRA
+JEREMIĆ MIROSLAV
+JEREMIĆ NADEŽDA
+JEREMIĆ NENAD
+JEREMIĆ OLIVERA
+JEREMIĆ PAVLE
+JEREMIĆ PAVLE
+JEREMIĆ RADE
+JEREMIĆ STANA
+JEREMIĆ STANKO
+JEREMIĆ STANOJE
+JEREMIĆ STEVAN
+JEREMIĆ STEVAN
+JEREMIĆ VASILIJE
+JEREMIĆ VERA
+JEREMIĆ VOJISLAV
+JEREMIĆ ZORA
+JEREMIJIĆ VITOMIR
+JERENIĆ MLADEN
+JERGIĆ MILICA
+JERGIĆ MIODRAG
+JERGIĆ MIRKO
+JERGIĆ PETAR
+JERGIĆ SLAVICA
+JERGIĆ SPASOJE
+JERIĆ DUŠAN
+JERIĆ KOVINKA
+JERIĆ LJUBIŠA
+JERIĆ MILICA
+JERIĆ PETAR
+JERINIĆ BRANKO
+JERINIĆ-KURIN EDIT
+JERINIĆ MIODRAG
+JERINIĆ VOJISLAV
+JERINKIĆ DRAGAN
+JERINKIĆ IVAN
+JERINKIĆ PAVLE
+JERKAN ANTE
+JERKIĆ SVETOZAR
+JERKOV ŽARKO
+JERKOV ANDRIJA
+JERKOV BRANIMIR
+JERKOV JOVAN
+JERKOV JOVICA
+JERKOV JOVICA
+JERKOV MIRJANA
+JERKOV MIRJANA
+JERKOV PAVLE
+JERKOV SMILJA
+JERKOV SNEŽANA
+JERKOV VELJKO
+JERKOV VOJISLAV
+JERKOVIĆ ĐORĐE
+JERKOVIĆ ALEKSANDAR
+JERKOVIĆ DMITAR
+JERKOVIĆ FRANJO
+JERKOVIĆ JOVAN
+JERKOVIĆ JOVAN
+JERKOVIĆ JOVAN
+JERKOVIĆ JOVAN
+JERKOVIĆ KATICA
+JERKOVIĆ KATICA
+JERKOVIĆ LENKA
+JERKOVIĆ MILAN
+JERKOVIĆ MILOŠ
+JERKOVIĆ NADEŽDA
+JERKOVIĆ NIKOLA
+JERKOVIĆ PREDRAG
+JERKOVIĆ RAJKO
+JERKOVIĆ SIMO
+JERKOVIĆ SINIŠA
+JERKOVIĆ SOFIJA
+JERKOVIĆ STEVAN
+JERKOVIĆ STOJAN
+JERKOVIĆ SVETKO
+JERKOVIĆ TADIJA
+JERKOVIĆ VALERIJA
+JERKOVIĆ VASA
+JERKOVIĆ VLADIMIR MR
+JERKOVIĆ VLADIMIR
+JERKOVIĆ VLADO
+JERKOVIĆ VUKOSAVA
+JERKOVIĆ ZORAN
+JEROSIMOVIĆ BRANIMIR
+JEROTIJEVIĆ DARINKA
+JESIĆ MILENA
+JESTRONIĆ TOMISLAV
+JESTROVIĆ IRENA
+JEVĐENIĆ RUŽICA
+JEVĐENIĆ VLADA
+JEVĐOVIĆ MELANIJA DR
+JEVĐOVIĆ MELANIJA
+JEVIĆ ČEDO
+JEVIĆ BRANKO
+JEVIĆ MILAN
+JEVIĆ MILIVOJ
+JEVIĆ MIODRAG
+JEVIĆ MOMČILO
+JEVIĆ NADA
+JEVIĆ NIKOLA
+JEVIĆ TODOR
+JEVREMOV ŽIVA
+JEVREMOV ĐORĐE
+JEVREMOV MILAN
+JEVREMOV MIRJANA
+JEVREMOVIĆ DOBRILA
+JEVREMOVIĆ LJUBINKA
+JEVREMOVIĆ MILIVOJ
+JEVREMOVIĆ MILORAD
+JEVREMOVIĆ MIODRAG
+JEVREMOVIĆ RADIŠA
+JEVREMOVIĆ SINIŠA
+JEVREMOVIĆ SOFIJA
+JEVREMOVIĆ STEVAN
+JEVREMOVIĆ VLADAN
+JEVRIĆ ŽIVAN
+JEVRIĆ ĐORĐE
+JEVRIĆ ĐORĐE
+JEVRIĆ BOŽIDAR
+JEVRIĆ BOGOLJUB
+JEVRIĆ BRANKO
+JEVRIĆ BRATISLAV
+JEVRIĆ DANICA
+JEVRIĆ DESIMIR
+JEVRIĆ DRAGUTIN
+JEVRIĆ EVICA
+JEVRIĆ GIGA
+JEVRIĆ GORAN
+JEVRIĆ JELA
+JEVRIĆ JOVAN
+JEVRIĆ KRISTINA
+JEVRIĆ LJUBICA
+JEVRIĆ MARIJA
+JEVRIĆ MILAN
+JEVRIĆ MILENKO
+JEVRIĆ MILE
+JEVRIĆ MILOŠ
+JEVRIĆ MIROSLAV
+JEVRIĆ RADIŠA
+JEVRIĆ RADIVOJE
+JEVRIĆ RADIVOJ
+JEVRIĆ RADIVOJ
+JEVRIĆ RADOSLAV
+JEVRIĆ RANISAV
+JEVRIĆ SLAVKO
+JEVRIĆ SLAVKO
+JEVRIĆ SLAVKO
+JEVRIĆ SLAVKO
+JEVRIĆ SLOBODAN
+JEVRIĆ SRBOLJUB
+JEVRIĆ STAMENKO
+JEVRIĆ STEVAN DR ING
+JEVRIĆ STEVAN
+JEVRIĆ ZLATOMIR
+JEVTOVIĆ ALEKSANDAR
+JEVTOVIĆ ALEKSANDRA
+JEVTOVIĆ JORDAN
+JEVTOVIĆ MILAN
+JEVTOVIĆ MIRKO
+JEVTOVIĆ RADIVOJE
+JEVTOVIĆ STANISLAVA
+JEVTOVIĆ VOJKAN
+JEVTOVIĆ VUKOTA
+JEVTOVIĆ VULE
+JEZDIĆ DOBRILA
+JEZDIĆ DRAGAN
+JEZDIĆ JOVAN
+JEZDIĆ LJUBOMIR
+JEZDIĆ MOMČILO
+JEZDIĆ SAVA
+JEZDIĆ SPIRA
+JEZDIĆ STEVKA
+JEZDIĆ STOJAN DIPL ING
+JEZDIMIROVIĆ ACA
+JEZDIMIROVIĆ DRAGAN
+JEZDIMIROVIĆ DRAGICA
+JEZDIMIROVIĆ LAZAR
+JEZDIMIROVIĆ MIRJANA
+JEZDIMIROVIĆ STOJANKA
+JEZDIMIROVIĆ ZORICA
+JEZERKIĆ OLGICA
+JIROTA-GAZIBARIĆ DANIELA
+JOČIĆ MOMČILO
+JOČIĆ STANOJLO
+JOČIN ŽIKA
+JOČKOVIĆ JOVAN
+JOŠANOV ALEKSANDRA
+JOŠANOV LAZAR
+JOŠANOV LJUBICA
+JOŠANOV MLADEN
+JOŠEVSKI ĐORĐIJA
+JOŠIĆ ĐURA
+JOŠIĆ BLAŽO
+JOŠIĆ DRAGOSLAV
+JOŠIĆ MILAN
+JOŠIĆ MILIVOJ
+JOŠIĆ MILORAD
+JOŠIĆ PETAR
+JOŽA KATALIN
+JOŽIĆ ĐURA
+JOANOVIĆ CVETKO DIPL ING
+JOANOVIĆ ERŽEBET
+JOANOVIĆ RAMONA
+JOCIĆ ŽIVOJIN DIPL ING
+JOCIĆ ŽIVORAD DR
+JOCIĆ ĐORĐE
+JOCIĆ ALEKSANDAR
+JOCIĆ ANĐELKA
+JOCIĆ ANGELINA
+JOCIĆ ANKICA
+JOCIĆ BORISLAV
+JOCIĆ BRANISLAV DR
+JOCIĆ BRANKA
+JOCIĆ DRAGICA
+JOCIĆ DRAGUTIN
+JOCIĆ FILIP
+JOCIĆ HRISTINA
+JOCIĆ ILIJA
+JOCIĆ ISIDOR
+JOCIĆ JELISAVETA
+JOCIĆ JOVANKA
+JOCIĆ LJILJANA
+JOCIĆ MARIJA
+JOCIĆ MARKO
+JOCIĆ MARKO
+JOCIĆ MARTA
+JOCIĆ MILADINKA
+JOCIĆ MILAN
+JOCIĆ MILAN
+JOCIĆ MILOŠ
+JOCIĆ MILOŠ
+JOCIĆ MIRKO
+JOCIĆ MLADEN
+JOCIĆ NENAD
+JOCIĆ PETAR
+JOCIĆ PETAR
+JOCIĆ PETAR
+JOCIĆ RADIVOJ
+JOCIĆ RADMILA
+JOCIĆ RADOSLAV
+JOCIĆ RODOLJUB
+JOCIĆ SAVA
+JOCIĆ SLOBODAN
+JOCIĆ SMILJA
+JOCIĆ STEVAN DIPL ING
+JOCIĆ STEVAN
+JOCIĆ STEVAN
+JOCIĆ VALERIJA
+JOCIĆ VERA
+JOCIĆ ZORAN
+JOCIN BRANKO
+JOCIN PERSIDA
+JOCIN ZLATOJE
+JOCKOV DANICA
+JOCKOV MANOJLO
+JOCKOV MILANKA
+JOCKOV MILOSAV
+JOCKOV MIROSLAVA
+JOCKOV NIKOLA
+JOCKOV NIKOLA
+JOCKOV RADOVAN
+JOCKOVIĆ ĐORĐE DR
+JOCKOVIĆ JOVANKA
+JOCKOVIĆ OBRAD
+JOCOVIĆ ŽIVOMIR
+JOCOVIĆ MIODRAG
+JOCOVIĆ RADENKO
+JOCOVIĆ ZORICA
+JOCULOV BRANKA
+JOCULOV MIHALJ
+JODAL ROŽA
+JOHIMSTAL AGATA
+JOJIĆ ĐORĐE
+JOJIĆ ALEKSANDAR
+JOJIĆ BOŽIDAR
+JOJIĆ DOINA
+JOJIĆ DRAGI
+JOJIĆ DRAGOSLAV DR
+JOJIĆ DUŠAN
+JOJIĆ GEORGIJE
+JOJIĆ IVANKA
+JOJIĆ IVANKA
+JOJIĆ JELA
+JOJIĆ JELENA
+JOJIĆ LJUBICA
+JOJIĆ MIĆKO
+JOJIĆ MILEVA
+JOJIĆ MILOŠ
+JOJIĆ MIODRAG
+JOJIĆ MIRKO
+JOJIĆ MIRKO
+JOJIĆ MIROLJUB
+JOJIĆ MIROSLAV
+JOJIĆ OLGA
+JOJIĆ SAVA
+JOJIĆ SIMO
+JOJIĆ STANA
+JOJIĆ STEVAN
+JOJIĆ SVETOZAR
+JOJIĆ SVETO
+JOJIN BARBARA
+JOJIN DOBROSAV
+JOJIN SINIŠA
+JOJKIĆ ĐORĐE
+JOJKIĆ ĐORĐE
+JOJKIĆ ĐORĐE
+JOJKIĆ ALEKSANDAR
+JOJKIĆ BORISLAVA
+JOJKIĆ BRANISLAV
+JOJKIĆ DANICA
+JOJKIĆ DINA
+JOJKIĆ DUŠAN
+JOJKIĆ DUŠKO
+JOJKIĆ JOVICA
+JOJKIĆ KATICA
+JOJKIĆ KATICA
+JOJKIĆ LJUBOMIR
+JOJKIĆ MARICA
+JOJKIĆ MARIJA
+JOJKIĆ MARIJA
+JOJKIĆ MILADIN
+JOJKIĆ MILENA
+JOJKIĆ MILENKO
+JOJKIĆ MILICA
+JOJKIĆ MILICA
+JOJKIĆ MIODRAG
+JOJKIĆ MIRJANA DR
+JOJKIĆ MIROSLAV
+JOJKIĆ NADA
+JOJKIĆ OLGA
+JOJKIĆ PAJA
+JOJKIĆ-POLETTO ZORA
+JOJKIĆ RADIVOJ
+JOJKIĆ RADIVOJ
+JOJKIĆ RADOJKA
+JOJKIĆ RADOSLAV
+JOJKIĆ SLAVKO
+JOJKIĆ SMILJKA
+JOJKIĆ SNEŽANA
+JOJKIĆ SOFIJA
+JOJKIĆ SOKO
+JOJKIĆ STANKO
+JOJKIĆ UROŠ
+JOJKIĆ VOJISLAV
+JOJKIĆ ZDRAVKO
+JOKA KATARINA
+JOKA VASO
+JOKANIĆ ILIJA
+JOKANOVIĆ BLAGOJE
+JOKANOVIĆ BOSILJKA
+JOKANOVIĆ BRANKO
+JOKANOVIĆ BRANKO
+JOKANOVIĆ DESIMIR
+JOKANOVIĆ MILORAD
+JOKANOVIĆ RADA
+JOKANOVIĆ RADOMIR
+JOKANOVIĆ SINIŠA
+JOKANOVIĆ TODOR
+JOKANOVIĆ TOMISLAV
+JOKANOVIĆ VLADIMIR DR
+JOKIŠIĆ BRANKO
+JOKIŠIĆ SPASOJE
+JOKIĆ ŽARKO
+JOKIĆ ŽARKO
+JOKIĆ ŽIVAN
+JOKIĆ ĐORĐE
+JOKIĆ ĐURAĐ
+JOKIĆ BOŽIDAR
+JOKIĆ BORISLAV
+JOKIĆ BRANISLAV
+JOKIĆ BUDIMIR
+JOKIĆ CVIJETIN
+JOKIĆ DANE
+JOKIĆ DOBRILA
+JOKIĆ DRAGAN
+JOKIĆ DRAGAN
+JOKIĆ DRAGAN
+JOKIĆ DRAGICA
+JOKIĆ DRAGINJA
+JOKIĆ DUŠANKA
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ DUŠAN
+JOKIĆ IGNJAT
+JOKIĆ JELENA
+JOKIĆ JOKA
+JOKIĆ KRSTAN
+JOKIĆ KSENIJA
+JOKIĆ LAKIĆ
+JOKIĆ LAZO
+JOKIĆ LJILJANA
+JOKIĆ LJUBICA
+JOKIĆ LJUBO
+JOKIĆ LUKA
+JOKIĆ MARA
+JOKIĆ MARIJA
+JOKIĆ MARKO
+JOKIĆ MIHAJLO
+JOKIĆ MILAN
+JOKIĆ MILAN
+JOKIĆ MILAN
+JOKIĆ MILAN
+JOKIĆ MILENKO
+JOKIĆ MILEVA
+JOKIĆ MILIJA
+JOKIĆ MILISAV
+JOKIĆ MILORAD
+JOKIĆ MILOVAN
+JOKIĆ MIRKO
+JOKIĆ MIRKO
+JOKIĆ MIRKO
+JOKIĆ MIRKO
+JOKIĆ MIROSLAV
+JOKIĆ NADA
+JOKIĆ NADA
+JOKIĆ NADICA
+JOKIĆ NENAD
+JOKIĆ NIKOLA
+JOKIĆ NIKOLA
+JOKIĆ PETAR
+JOKIĆ RADIVOJE
+JOKIĆ RADOICA
+JOKIĆ RISTA
+JOKIĆ SAŠA
+JOKIĆ SIMA
+JOKIĆ SINIŠA
+JOKIĆ SLAVKO
+JOKIĆ SLAVKO
+JOKIĆ SLAVKO
+JOKIĆ SNEŽANA
+JOKIĆ STEVAN DIPL ING
+JOKIĆ STEVAN
+JOKIĆ SVETISLAV
+JOKIĆ SVETOZAR
+JOKIĆ SVETOZAR
+JOKIĆ TOMISLAV
+JOKIĆ VELJKO
+JOKIĆ VERA
+JOKIĆ VLADO
+JOKIĆ VOJISLAV
+JOKIĆ VOJISLAV
+JOKIĆ VUJADIN
+JOKIĆ VUKADIN
+JOKIĆ VUKO
+JOKIĆ ZLATA
+JOKIĆ ZORKA
+JOKMANOVIĆ SAVETA
+JOKOVIĆ ŽIVKO
+JOKOVIĆ ĐURĐINA
+JOKOVIĆ DOBRIVOJE
+JOKOVIĆ-MIKIĆ MIRJANA
+JOKOVIĆ MILKA
+JOKOVIĆ RADOSAV
+JOKOVIĆ VOJISLAV
+JOKSIĆ DRAGIŠA
+JOKSIĆ GOJKO
+JOKSIMOVĆ NEBOJŠA
+JOKSIMOVIĆ ŽARKO
+JOKSIMOVIĆ DARKO
+JOKSIMOVIĆ DUŠKO
+JOKSIMOVIĆ GOLUBANKA
+JOKSIMOVIĆ JOVAN DIPL ING
+JOKSIMOVIĆ LJUBICA
+JOKSIMOVIĆ LJUBISAV DR
+JOKSIMOVIĆ LJUBISAV
+JOKSIMOVIĆ MOMČILO
+JOKSIMOVIĆ NADA
+JOKSIMOVIĆ PAVLE
+JOKSIMOVIĆ PETAR
+JOKSIMOVIĆ RADOMIR
+JOKSIMOVIĆ SINIŠA
+JOKSIMOVIĆ STEVAN
+JOKSIMOVIĆ VLADIMIR
+JOKSIMOVIĆ ZLATOMIR
+JOKSIMOVIĆ ZORAN
+JOKSOVIĆ DRAGIŠA
+JOKSOVIĆ SNEŽANA
+JOLDIĆ MARA
+JOLDIĆ MIODRAG
+JOLIĆ ŽIVAN
+JOLIĆ ŽIVOJIN
+JOLIĆ ANGELINA
+JOLIĆ DANILO
+JOLIĆ JADRANKA
+JOLIĆ JOVAN
+JOLIĆ KONSTANTIN
+JOLIĆ KOSTA
+JOLIĆ MIRJANA
+JOLIĆ NEBOJŠA
+JOLIĆ PETAR
+JOLIĆ SLOBODAN
+JOLIĆ UROŠ
+JOLIĆ VASA
+JOLOVIĆ MILOVAN
+JONČIĆ MARA
+JONAŠ DUŠAN
+JONAŠ LASLO
+JONAŠ NIKOLA
+JONIĆ BOŠKO
+JONIĆ DRAGAN
+JONJEV MILIVOJ
+JONJEV SLAVOLJUB
+JONJIĆ SAVO
+JONOVIĆ DUŠAN
+JONOVIĆ PETAR
+JONTOVIĆ ALEKSA
+JONTOVIĆ-BIKIĆ MIRJANA
+JONTOVIĆ RUDOLF
+JONUZOVIĆ VLADIMIR
+JORDAČ ANA
+JORDAN ERŽEBET
+JORDANOV KIRIL
+JORDANOVSKI STANOJKO
+JORGANOVIĆ SIMO
+JORGIĆ ŽIVANA
+JORGIĆ DRAGOMIR
+JORGOVANOVIĆ JELISAVETA
+JOROVIĆ BRANKO
+JOROVIĆ RANKO
+JOSEVSKI SIMEON
+JOSIĆ ALEKSANDAR
+JOSIĆ FILIP
+JOSIĆ ILIJA
+JOSIĆ IVAN
+JOSIĆ KOSANA
+JOSIĆ LJUBINKO
+JOSIĆ LJUBINKO
+JOSIĆ LJUBOMIR
+JOSIĆ MILENKO
+JOSIĆ MIRJANA
+JOSIĆ OBRAD
+JOSIĆ OLGA
+JOSIĆ RADINKA
+JOSIĆ SRĐA
+JOSIĆ STEVAN
+JOSIĆ STEVAN
+JOSIFIDIS KOSTA
+JOSIFOVIĆ DIMITRIJE
+JOSIFOVIĆ DRAGIĆ
+JOSIFOVIĆ LJUBICA
+JOSIFOVIĆ OLGA
+JOSIMČEV ZVONIMIR
+JOSIMOV BORISLAV
+JOSIMOV DRAGOSLAV
+JOSIMOV DUŠAN
+JOSIMOV GLIGORIJE
+JOSIMOV JELENA
+JOSIMOV STEVAN
+JOSIMOV VASILIJE
+JOSIMOV VOJO
+JOSIMOVIĆ ŽIVA
+JOSIMOVIĆ BORIVOJ
+JOSIMOVIĆ BORIVOJ
+JOSIMOVIĆ JULIJANA
+JOSIMOVIĆ MARKO
+JOSIMOVIĆ MILICA
+JOSIMOVIĆ NENAD
+JOSIMOVIĆ SINIŠA
+JOSIMOVIĆ STEVAN
+JOSIMOVIĆ STEVAN
+JOSIMOVIĆ STEVKA
+JOSIMOVIĆ TATJANA
+JOSIMOVIĆ VLADIMIR
+JOSIMOVIĆ VLADIMIR
+JOSIMOVIĆ VLADIMIR
+JOSIMOVIĆ ZDENKA
+JOSIMOVSKI ALEKSANDAR
+JOSIN DRAGAN
+JOSIN MARIJA
+JOSIN MILE
+JOSIN RADICA
+JOSIN RADOVAN
+JOSIN SLOBODAN
+JOSIPOVIĆ BORISLAV
+JOSIPOVIĆ BORO
+JOSIPOVIĆ DANICA
+JOSIPOVIĆ IVICA
+JOSIPOVIĆ PETAR
+JOSIPOVIĆ SLOBODAN
+JOSIPOVIĆ VLADIMIR
+JOTANOVIĆ DARINKA
+JOTANOVIĆ KORNELIJA
+JOTANOVIĆ LJUBOMIR
+JOTANOVIĆ MILIVOJ
+JOTANOVIĆ NEDELJKO
+JOTANOVIĆ RAJKO
+JOTANOVIĆ STANKO
+JOTANOVIĆ TOMISLAV
+JOTIĆ MIROSLAV
+JOVČIĆ DUŠKO
+JOVČIĆ SLAVKO
+JOVČIĆ VLADAN
+JOVAČEVIĆ DMITAR
+JOVAŠEVIĆ SLOBODAN
+JOVANČEVIĆ BOSILJKA
+JOVANČEVIĆ GOJKO
+JOVANČEVIĆ ILIJA
+JOVANČEVIĆ JELICA
+JOVANČEVIĆ JOVAN
+JOVANČEVIĆ JOVAN
+JOVANČEVIĆ KOVILJKA
+JOVANČEVIĆ STEVAN
+JOVANČEVIĆ-ZEKIĆ NIKOLA
+JOVANČEVIĆ-ZEKIĆ NIKOLA
+JOVANČIĆ DRAGICA
+JOVANČIĆ MELANIJA
+JOVANČIĆ MIODRAG
+JOVANČIĆ MIROSLAV
+JOVANCAI MARIJA
+JOVANDIĆ MANDA
+JOVANDIĆ MILOŠ
+JOVANDIN MILAN
+JOVANIĆ ĐORĐE
+JOVANIĆ ĐURO
+JOVANIĆ BOŠKO
+JOVANIĆ BOŠKO
+JOVANIĆ DOBRICA
+JOVANIĆ DUŠAN DIPL ING
+JOVANIĆ MARIJA
+JOVANIĆ MIRKO
+JOVANIĆ MLADEN
+JOVANIĆ MOMIR
+JOVANIĆ OLIVERA
+JOVANIĆ OLIVERA
+JOVANKIN ALEKSANDAR
+JOVANKOVIĆ RADOSLAV
+JOVANOV ŽARKO
+JOVANOV ŽIVA
+JOVANOV BILJANA
+JOVANOV BOŠKO
+JOVANOV BOJANA
+JOVANOV BORISLAV
+JOVANOV BORISLAV
+JOVANOV BRANISLAV
+JOVANOV DRAGAN
+JOVANOV DRAGICA
+JOVANOV DRAGINJA
+JOVANOV DRAGOLJUB
+JOVANOV DRAGOMIR
+JOVANOV DUŠAN
+JOVANOV DUŠAN
+JOVANOV DUŠICA
+JOVANOV IGNJAT
+JOVANOV ISA
+JOVANOV IVAN
+JOVANOV JAŠA
+JOVANOV JASNA
+JOVANOV JELENA
+JOVANOV JOVAN
+JOVANOV JOVAN
+JOVANOV JOVICA
+JOVANOV LAZAR
+JOVANOV LAZAR
+JOVANOV MELANIJA
+JOVANOV MILAN
+JOVANOV MILAN
+JOVANOV MILAN
+JOVANOV MILIVOJ
+JOVANOV MILOŠ
+JOVANOV MIRJANA
+JOVANOV MLADEN
+JOVANOV MOMČILO
+JOVANOV PETAR
+JOVANOV RADIVOJ
+JOVANOV SAVA
+JOVANOV SPOMENKA
+JOVANOV STEVANKA
+JOVANOV STEVAN
+JOVANOV SVETISLAV
+JOVANOV SVETISLAV
+JOVANOV SVETOZAR
+JOVANOV TODOR
+JOVANOV TOMA
+JOVANOV VIDA
+JOVANOV VLADIMIR
+JOVANOVIĆ ČEDA
+JOVANOVIĆ ČEDOMIR
+JOVANOVIĆ ČEDOMIR
+JOVANOVIĆ ČEDOMIR
+JOVANOVIĆ ČEDO
+JOVANOVIĆ ŽIVADIN
+JOVANOVIĆ ŽIVKA
+JOVANOVIĆ ŽIVKO
+JOVANOVIĆ ŽIVKO
+JOVANOVIĆ ŽIVKO
+JOVANOVIĆ ŽIVOJIN
+JOVANOVIĆ ŽIVOJIN
+JOVANOVIĆ ŽIVOJIN
+JOVANOVIĆ ŽIVORAD
+JOVANOVIĆ ŽIVORAD
+JOVANOVIĆ ŽIVOTA
+JOVANOVIĆ ĐENĐI
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐORĐE
+JOVANOVIĆ ĐURĐINA
+JOVANOVIĆ ĐURĐINKA
+JOVANOVIĆ ĐURA
+JOVANOVIĆ ĐURO
+JOVANOVIĆ ALEKSANDAR DR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDAR
+JOVANOVIĆ ALEKSANDRA
+JOVANOVIĆ ALEKSA
+JOVANOVIĆ ANĐA
+JOVANOVIĆ ANĐA
+JOVANOVIĆ ANĐELIJA DR
+JOVANOVIĆ ANĐELKA
+JOVANOVIĆ ANĐELKO
+JOVANOVIĆ ANDRIJA DIPL ING
+JOVANOVIĆ ANDRIJA DIPL OEC
+JOVANOVIĆ ANDRIJA
+JOVANOVIĆ ANDRIJA
+JOVANOVIĆ ANGELINA
+JOVANOVIĆ ANICA
+JOVANOVIĆ ANKICA
+JOVANOVIĆ ARANĐEL
+JOVANOVIĆ ARSA DR
+JOVANOVIĆ ARSA
+JOVANOVIĆ ARSENIJE
+JOVANOVIĆ-ARSIĆ VIOLETA
+JOVANOVIĆ-BANKOVAČKI JOVANKA
+JOVANOVIĆ BLAGOJE
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŠKO
+JOVANOVIĆ BOŽIDAR PROFESOR
+JOVANOVIĆ BOŽIDAR
+JOVANOVIĆ BOŽO
+JOVANOVIĆ BOGDANKA
+JOVANOVIĆ BOGDANKA
+JOVANOVIĆ BOGDAN
+JOVANOVIĆ BOGDAN
+JOVANOVIĆ BOGDAN
+JOVANOVIĆ BOJANA
+JOVANOVIĆ BORISLAV
+JOVANOVIĆ BORISLAV
+JOVANOVIĆ BORIVOJ DIPL ING
+JOVANOVIĆ BORIVOJ
+JOVANOVIĆ BOSILJKA
+JOVANOVIĆ BRANIBOR
+JOVANOVIĆ BRANIMIR
+JOVANOVIĆ BRANISLAVA
+JOVANOVIĆ BRANISLAV
+JOVANOVIĆ BRANISLAV
+JOVANOVIĆ BRANISLAV
+JOVANOVIĆ BRANISLAV
+JOVANOVIĆ BRANKA
+JOVANOVIĆ BRANKO
+JOVANOVIĆ BRANKO
+JOVANOVIĆ BRANKO
+JOVANOVIĆ BRATISLAV DR
+JOVANOVIĆ BUDIMIR
+JOVANOVIĆ CVETA
+JOVANOVIĆ CVETKO
+JOVANOVIĆ DALIBOR DIPL PRAVNIK
+JOVANOVIĆ DALIBOR
+JOVANOVIĆ DANILO
+JOVANOVIĆ DARINKA
+JOVANOVIĆ DEJAN
+JOVANOVIĆ DEJAN
+JOVANOVIĆ DIMITRIJE
+JOVANOVIĆ DIMITRIJE
+JOVANOVIĆ DIMITRIJE
+JOVANOVIĆ DIMITRIJE
+JOVANOVIĆ DOBRILA
+JOVANOVIĆ DOBRIVOJE
+JOVANOVIĆ DOBROSAV
+JOVANOVIĆ DOBROSAV
+JOVANOVIĆ DRAGANA
+JOVANOVIĆ DRAGANA
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGAN
+JOVANOVIĆ DRAGIŠA
+JOVANOVIĆ DRAGIĆ
+JOVANOVIĆ DRAGIĆ
+JOVANOVIĆ DRAGICA
+JOVANOVIĆ DRAGICA
+JOVANOVIĆ DRAGICA
+JOVANOVIĆ DRAGICA
+JOVANOVIĆ DRAGIVOJE
+JOVANOVIĆ DRAGOLJUB OEC
+JOVANOVIĆ DRAGOLJUB
+JOVANOVIĆ DRAGOLJUB
+JOVANOVIĆ DRAGOLJUB
+JOVANOVIĆ DRAGOSLAV DIPL ING
+JOVANOVIĆ DRAGOSLAV DIPL ING
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGOSLAV
+JOVANOVIĆ DRAGO
+JOVANOVIĆ DRAGUTIN
+JOVANOVIĆ DUŠAN DR PROF
+JOVANOVIĆ DUŠAN DR
+JOVANOVIĆ DUŠAN DR
+JOVANOVIĆ DUŠANKA
+JOVANOVIĆ DUŠANKA
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠAN
+JOVANOVIĆ DUŠKO
+JOVANOVIĆ DUŠKO
+JOVANOVIĆ DUDA
+JOVANOVIĆ ELENA
+JOVANOVIĆ EMICA
+JOVANOVIĆ ESMA
+JOVANOVIĆ EVICA
+JOVANOVIĆ FELICIJA
+JOVANOVIĆ FILIP
+JOVANOVIĆ GEORG
+JOVANOVIĆ GOJKO
+JOVANOVIĆ GOJKO
+JOVANOVIĆ GORAN
+JOVANOVIĆ GORAN
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GORDANA
+JOVANOVIĆ GROZDA
+JOVANOVIĆ GRUJA
+JOVANOVIĆ GRUJICA
+JOVANOVIĆ HRISTINA
+JOVANOVIĆ ILE
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ ILIJA
+JOVANOVIĆ IRINA
+JOVANOVIĆ IVAN DR
+JOVANOVIĆ IVANKA DR PROF
+JOVANOVIĆ IVANKA
+JOVANOVIĆ IVAN
+JOVANOVIĆ IVAN
+JOVANOVIĆ JAŠA
+JOVANOVIĆ JADRANKA
+JOVANOVIĆ JASMINKA
+JOVANOVIĆ JELA
+JOVANOVIĆ JELENA
+JOVANOVIĆ JELENA
+JOVANOVIĆ JELENA
+JOVANOVIĆ JELENA
+JOVANOVIĆ JELICA
+JOVANOVIĆ JELISAVETA
+JOVANOVIĆ JELISAVETA
+JOVANOVIĆ JELISAVETA
+JOVANOVIĆ JELKA
+JOVANOVIĆ JEVTA
+JOVANOVIĆ JOCA
+JOVANOVIĆ JOVANKA
+JOVANOVIĆ JOVANKA
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVAN
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JOVICA
+JOVANOVIĆ JULIJANA
+JOVANOVIĆ JULKA
+JOVANOVIĆ KATARINA
+JOVANOVIĆ KATICA
+JOVANOVIĆ KOSANA
+JOVANOVIĆ KOSTA
+JOVANOVIĆ KOSTA
+JOVANOVIĆ-KOSTIĆ DRAGOSLAVA
+JOVANOVIĆ KOVINKA
+JOVANOVIĆ KSENIJA
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LAZAR
+JOVANOVIĆ LJILJANA
+JOVANOVIĆ LJUBAN
+JOVANOVIĆ LJUBIŠA
+JOVANOVIĆ LJUBIŠA
+JOVANOVIĆ LJUBICA
+JOVANOVIĆ LJUBICA
+JOVANOVIĆ LJUBICA
+JOVANOVIĆ LJUBICA
+JOVANOVIĆ LJUBINKA
+JOVANOVIĆ LJUBINKA
+JOVANOVIĆ LJUBIVOJE DR
+JOVANOVIĆ LJUBOMIR MR
+JOVANOVIĆ LJUBOMIR
+JOVANOVIĆ LJUBO
+JOVANOVIĆ LUKA
+JOVANOVIĆ LUKA
+JOVANOVIĆ LUKA
+JOVANOVIĆ LUKA
+JOVANOVIĆ MALIŠA
+JOVANOVIĆ MARA
+JOVANOVIĆ MARA
+JOVANOVIĆ MARA
+JOVANOVIĆ MARICA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARIJA
+JOVANOVIĆ MARKO
+JOVANOVIĆ MARKO
+JOVANOVIĆ MIĆO
+JOVANOVIĆ MIHAJLO
+JOVANOVIĆ MIHAJLO
+JOVANOVIĆ MIHAJLO
+JOVANOVIĆ MIJAT
+JOVANOVIĆ MIJA
+JOVANOVIĆ MILAŠIN
+JOVANOVIĆ MILADIN
+JOVANOVIĆ MILAN ADVOKAT
+JOVANOVIĆ MILAN DIPL ING
+JOVANOVIĆ MILANKA
+JOVANOVIĆ MILANKA
+JOVANOVIĆ MILANKA
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILAN
+JOVANOVIĆ MILENA
+JOVANOVIĆ MILENA
+JOVANOVIĆ MILENA
+JOVANOVIĆ MILENKO DR
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENKO
+JOVANOVIĆ MILENTIJE
+JOVANOVIĆ MILEVA
+JOVANOVIĆ MILE
+JOVANOVIĆ MILE
+JOVANOVIĆ MILIĆ
+JOVANOVIĆ MILIĆ
+JOVANOVIĆ MILICA
+JOVANOVIĆ MILICA
+JOVANOVIĆ MILICA
+JOVANOVIĆ MILIJANA
+JOVANOVIĆ MILISAV
+JOVANOVIĆ MILIVOJE
+JOVANOVIĆ MILIVOJ
+JOVANOVIĆ MILIVOJ
+JOVANOVIĆ MILJANA
+JOVANOVIĆ MILKAN
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILOŠ
+JOVANOVIĆ MILONJA
+JOVANOVIĆ MILORAD DIPL ING
+JOVANOVIĆ MILORAD DR LEKAR
+JOVANOVIĆ MILORAD
+JOVANOVIĆ MILORAD
+JOVANOVIĆ MILOVAN
+JOVANOVIĆ MILOVAN
+JOVANOVIĆ MILUTIN
+JOVANOVIĆ MILUTIN
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIODRAG
+JOVANOVIĆ MIRA
+JOVANOVIĆ MIRA
+JOVANOVIĆ MIRA
+JOVANOVIĆ MIRJANA
+JOVANOVIĆ MIRJANA
+JOVANOVIĆ MIRJANA
+JOVANOVIĆ MIRKO
+JOVANOVIĆ MIRKO
+JOVANOVIĆ MIRKO
+JOVANOVIĆ MIRKO
+JOVANOVIĆ MIROLJUB
+JOVANOVIĆ MIROSLAVA
+JOVANOVIĆ MIROSLAVA
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MIROSLAV
+JOVANOVIĆ MITAR
+JOVANOVIĆ MLAĐA
+JOVANOVIĆ MLADENKA
+JOVANOVIĆ MLADEN
+JOVANOVIĆ MLADEN
+JOVANOVIĆ MOMČILO
+JOVANOVIĆ MOMČILO
+JOVANOVIĆ MOMIR
+JOVANOVIĆ NADA
+JOVANOVIĆ NADA
+JOVANOVIĆ NADA
+JOVANOVIĆ NADA
+JOVANOVIĆ NADEŽDA
+JOVANOVIĆ NADEŽDA
+JOVANOVIĆ NADEŽDA
+JOVANOVIĆ NEBOJŠA
+JOVANOVIĆ NEDA
+JOVANOVIĆ NEDELJKA
+JOVANOVIĆ NEMANJA
+JOVANOVIĆ NEMANJA
+JOVANOVIĆ NENAD ADVOKAT
+JOVANOVIĆ NENAD
+JOVANOVIĆ NENAD
+JOVANOVIĆ NENAD
+JOVANOVIĆ NEVENA
+JOVANOVIĆ NEVENKA
+JOVANOVIĆ NEVENKA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NIKOLA
+JOVANOVIĆ NOVAK
+JOVANOVIĆ NOVICA
+JOVANOVIĆ OBRAD
+JOVANOVIĆ OLGA
+JOVANOVIĆ OLGA
+JOVANOVIĆ OLGA
+JOVANOVIĆ OLGA
+JOVANOVIĆ OLGICA
+JOVANOVIĆ OSTOJA
+JOVANOVIĆ OSTOJA
+JOVANOVIĆ OSTOJA
+JOVANOVIĆ PAVLE
+JOVANOVIĆ PAVLE
+JOVANOVIĆ PAVLE
+JOVANOVIĆ PERA
+JOVANOVIĆ PERICA
+JOVANOVIĆ PERICA
+JOVANOVIĆ PERO
+JOVANOVIĆ PERO
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PETAR
+JOVANOVIĆ PREDRAG DR
+JOVANOVIĆ PREDRAG
+JOVANOVIĆ PREDRAG
+JOVANOVIĆ PREDRAG
+JOVANOVIĆ RADE
+JOVANOVIĆ RADIŠA
+JOVANOVIĆ RADINKA
+JOVANOVIĆ RADIVOJ
+JOVANOVIĆ RADIVOJ
+JOVANOVIĆ RADMILA
+JOVANOVIĆ RADMILA
+JOVANOVIĆ RADMILA
+JOVANOVIĆ RADOMIR DR
+JOVANOVIĆ RADOMIR
+JOVANOVIĆ RADONJA
+JOVANOVIĆ RADOSLAVA
+JOVANOVIĆ RADOSLAV
+JOVANOVIĆ RADOSLAV
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RADOVAN
+JOVANOVIĆ RAJKO
+JOVANOVIĆ RANĐEL
+JOVANOVIĆ RANKO
+JOVANOVIĆ RATKA
+JOVANOVIĆ RUŽA
+JOVANOVIĆ RUŽICA
+JOVANOVIĆ RUŽICA
+JOVANOVIĆ RUŽICA
+JOVANOVIĆ SAŠA
+JOVANOVIĆ SAVA
+JOVANOVIĆ SAVETA
+JOVANOVIĆ SAVO
+JOVANOVIĆ SAVO
+JOVANOVIĆ SELIMIR
+JOVANOVIĆ SERAFIM
+JOVANOVIĆ SIMA
+JOVANOVIĆ SIMA
+JOVANOVIĆ SIMO
+JOVANOVIĆ SINIŠA
+JOVANOVIĆ SLAVICA
+JOVANOVIĆ SLAVKO
+JOVANOVIĆ SLAVKO
+JOVANOVIĆ SLAVKO
+JOVANOVIĆ SLAVKO
+JOVANOVIĆ SLOBODAN DR
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SLOBODAN
+JOVANOVIĆ SMILJA
+JOVANOVIĆ SMILJA
+JOVANOVIĆ SMILJKA
+JOVANOVIĆ SMILJKA
+JOVANOVIĆ SOFIJA
+JOVANOVIĆ SPIRA
+JOVANOVIĆ SPOMENKA
+JOVANOVIĆ SRĐAN
+JOVANOVIĆ SRBISLAV
+JOVANOVIĆ SRETEN
+JOVANOVIĆ STANIŠA
+JOVANOVIĆ STANIMIR
+JOVANOVIĆ STANIMIR
+JOVANOVIĆ STANIMIR
+JOVANOVIĆ STANKO
+JOVANOVIĆ STANOJE
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STEVAN
+JOVANOVIĆ STOJŠA
+JOVANOVIĆ-STOJAN GERTRUDA DR
+JOVANOVIĆ STOJANKA
+JOVANOVIĆ STOJANKA
+JOVANOVIĆ STOJAN
+JOVANOVIĆ STOJAN
+JOVANOVIĆ STOJAN
+JOVANOVIĆ STOJAN
+JOVANOVIĆ SUZANA
+JOVANOVIĆ SVETLANA
+JOVANOVIĆ SVETOZAR
+JOVANOVIĆ SVETOZAR
+JOVANOVIĆ SVETOZAR
+JOVANOVIĆ SVETOZAR
+JOVANOVIĆ TATJANA
+JOVANOVIĆ TEODORA
+JOVANOVIĆ TIHOMIR
+JOVANOVIĆ TIHOMIR
+JOVANOVIĆ TODOR
+JOVANOVIĆ TOMA
+JOVANOVIĆ TOMISLAV
+JOVANOVIĆ TOMISLAV
+JOVANOVIĆ TRAJKO
+JOVANOVIĆ TUGOMIR
+JOVANOVIĆ UROŠ
+JOVANOVIĆ VASA
+JOVANOVIĆ VASA
+JOVANOVIĆ VASILIJE
+JOVANOVIĆ VASILIJE
+JOVANOVIĆ VASILIJE
+JOVANOVIĆ VASILIJE
+JOVANOVIĆ VASILJ
+JOVANOVIĆ VELIČKO
+JOVANOVIĆ VELIBOR
+JOVANOVIĆ VELIBOR
+JOVANOVIĆ VELIBOR
+JOVANOVIĆ VELINKA
+JOVANOVIĆ VERA
+JOVANOVIĆ VERA
+JOVANOVIĆ VERA
+JOVANOVIĆ VERA
+JOVANOVIĆ VERICA
+JOVANOVIĆ VERICA
+JOVANOVIĆ VEROLJUB
+JOVANOVIĆ VESELIN
+JOVANOVIĆ VESNA
+JOVANOVIĆ VESNA
+JOVANOVIĆ VESNA
+JOVANOVIĆ VIDA
+JOVANOVIĆ VIDOSLAV
+JOVANOVIĆ VILMA
+JOVANOVIĆ VLADA
+JOVANOVIĆ VLADA
+JOVANOVIĆ VLADIMIR
+JOVANOVIĆ VLADIMIR
+JOVANOVIĆ VLADIMIR
+JOVANOVIĆ VLADIMIR
+JOVANOVIĆ VLADISLAVA
+JOVANOVIĆ VLAJKO
+JOVANOVIĆ VLASTIMIR
+JOVANOVIĆ VOJISLAV DR PROF
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VOJISLAV
+JOVANOVIĆ VUČETA
+JOVANOVIĆ ZAGORKA
+JOVANOVIĆ ZDENKA
+JOVANOVIĆ ZDRAVKO
+JOVANOVIĆ ZDRAVKO
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORAN
+JOVANOVIĆ ZORA
+JOVANOVIĆ ZORA
+JOVANOVIĆ ZORICA
+JOVANOVIĆ ZORICA
+JOVANOVIĆ ZORICA
+JOVANOVIĆ ZORKA
+JOVANOVIĆ ZVONIMIR
+JOVANOVSKA CVETA
+JOVANOVSKA TASKA
+JOVANOVSKI DIMITAR
+JOVANOVSKI DUŠAN
+JOVANOVSKI MILE
+JOVANOVSKI MILE
+JOVANOVSKI MILICA
+JOVANOVSKI NIKOLA
+JOVANOVSKI PETAR
+JOVANOVSKI SIMEONA
+JOVANOVSKI STOJADIN
+JOVER MIHALJ
+JOVETIĆ ANDRIJA
+JOVETIĆ BRANKO
+JOVETIĆ BRANKO
+JOVETIĆ MILICA
+JOVETIĆ STANKO
+JOVETIĆ VESELIN
+JOVIČEVIĆ VLADIMIR DR
+JOVIČIĆ ČEDOMIR
+JOVIČIĆ ŽARKO
+JOVIČIĆ ŽARKO
+JOVIČIĆ ŽELJKO
+JOVIČIĆ ŽIVAN
+JOVIČIĆ ĐORĐE
+JOVIČIĆ ĐORĐE
+JOVIČIĆ ĐURA
+JOVIČIĆ ANKICA
+JOVIČIĆ BOŠKO
+JOVIČIĆ BOGDAN
+JOVIČIĆ BORA
+JOVIČIĆ BRANE
+JOVIČIĆ BRANISLAVA
+JOVIČIĆ BRANKA
+JOVIČIĆ DEJAN
+JOVIČIĆ DRAGAN
+JOVIČIĆ DRAGAN
+JOVIČIĆ DRAGAN
+JOVIČIĆ DRAGAN
+JOVIČIĆ DRAGOLJUB
+JOVIČIĆ DUŠAN
+JOVIČIĆ DUŠAN
+JOVIČIĆ DUŠKO
+JOVIČIĆ GEORGIJE
+JOVIČIĆ HELENA
+JOVIČIĆ ILIJA
+JOVIČIĆ ILIJA
+JOVIČIĆ JELISAVETA
+JOVIČIĆ JOVAN
+JOVIČIĆ JOVICA
+JOVIČIĆ KATICA
+JOVIČIĆ LAZAR
+JOVIČIĆ LEPOSAVA
+JOVIČIĆ LJILJANA
+JOVIČIĆ LJILJANA
+JOVIČIĆ LJUBICA
+JOVIČIĆ LJUBICA
+JOVIČIĆ LJUBINKA
+JOVIČIĆ LJUBOMIR
+JOVIČIĆ MAKSIM
+JOVIČIĆ MARA
+JOVIČIĆ MARIJA
+JOVIČIĆ MARIJA
+JOVIČIĆ MARKO
+JOVIČIĆ MARKO
+JOVIČIĆ MARKO
+JOVIČIĆ MARKO
+JOVIČIĆ MILADIN
+JOVIČIĆ MILAN
+JOVIČIĆ MILAN
+JOVIČIĆ MILENKO
+JOVIČIĆ MILENKO
+JOVIČIĆ MILICA
+JOVIČIĆ MILICA
+JOVIČIĆ MILOŠ
+JOVIČIĆ MILOŠ
+JOVIČIĆ MILOMIR
+JOVIČIĆ MILORAD
+JOVIČIĆ MILOVAN
+JOVIČIĆ MIROSLAV
+JOVIČIĆ MLADEN
+JOVIČIĆ OBRAD
+JOVIČIĆ OLGA
+JOVIČIĆ PAJA
+JOVIČIĆ PETAR
+JOVIČIĆ RADA
+JOVIČIĆ RADE
+JOVIČIĆ RADISLAV
+JOVIČIĆ RADIVOJE
+JOVIČIĆ RADOMIR
+JOVIČIĆ RADOVAN
+JOVIČIĆ RATKO
+JOVIČIĆ SAVETA
+JOVIČIĆ SIMO
+JOVIČIĆ SLAVKO
+JOVIČIĆ SLOBODANKA
+JOVIČIĆ SLOBODAN
+JOVIČIĆ SRETEN
+JOVIČIĆ STANKO
+JOVIČIĆ SVETISLAV
+JOVIČIĆ SVETOZAR
+JOVIČIĆ SVETOZAR
+JOVIČIĆ TANASIJE
+JOVIČIĆ TATJANA
+JOVIČIĆ TODOR
+JOVIČIĆ UROŠ
+JOVIČIĆ VASA
+JOVIČIĆ VERICA
+JOVIČIĆ VOJIN
+JOVIČIĆ VOJISLAV
+JOVIČIĆ ZDRAVKO
+JOVIČIĆ ZORAN
+JOVIČIN ALEKSANDAR
+JOVIČIN ANICA
+JOVIČIN KATICA
+JOVIČIN LJUBICA
+JOVIČIN LJUBICA
+JOVIČIN MILOVAN
+JOVIČIN SLAVKO
+JOVIČIN SOFIJA
+JOVIČIN TOŠA
+JOVIŠEVIĆ MILAN
+JOVIŠEVIĆ MIRJANA
+JOVIŠEVIĆ ZDRAVKO
+JOVIŠIĆ ŽARKO
+JOVIŠIĆ ĐURO
+JOVIŠIĆ BORO
+JOVIŠIĆ DUŠAN
+JOVIŠIĆ JOVAN
+JOVIŠIĆ MITAR
+JOVIŠIĆ NIKOLA
+JOVIŠIĆ PAVLE
+JOVIŠIĆ PREDRAG
+JOVIŠIĆ SIMO
+JOVIĆ ČEDOMIR
+JOVIĆ ŽARKO
+JOVIĆ ŽARKO
+JOVIĆ ŽIVOJIN
+JOVIĆ ŽIVORAD
+JOVIĆ ŽIVORAD
+JOVIĆ ĐORĐE
+JOVIĆ ALEKSANDAR
+JOVIĆ ALEKSANDAR
+JOVIĆ ANICA
+JOVIĆ BOŠKO
+JOVIĆ BOBAN
+JOVIĆ BORA
+JOVIĆ BRANKO
+JOVIĆ BRANKO
+JOVIĆ CVETA
+JOVIĆ DAVID
+JOVIĆ DIMITRIJE
+JOVIĆ DRAGANA
+JOVIĆ DRAGOLJUB
+JOVIĆ DRAGOLJUB
+JOVIĆ DUŠAN
+JOVIĆ DUŠAN
+JOVIĆ ERIKA
+JOVIĆ GOJKO
+JOVIĆ GORDANA
+JOVIĆ IVANA
+JOVIĆ IVAN
+JOVIĆ JADRANKA DR
+JOVIĆ JASNA
+JOVIĆ JOCO
+JOVIĆ JOVANKA
+JOVIĆ JOVAN
+JOVIĆ JOVAN
+JOVIĆ JOVO
+JOVIĆ KOSTA
+JOVIĆ KSENIJA
+JOVIĆ LJUBIŠA
+JOVIĆ MARICA
+JOVIĆ MARIJAN
+JOVIĆ MARKO
+JOVIĆ MELITA
+JOVIĆ MILADIN
+JOVIĆ MILANKA
+JOVIĆ MILANKA
+JOVIĆ MILAN
+JOVIĆ MILAN
+JOVIĆ MILAN
+JOVIĆ MILENKO
+JOVIĆ MILIVOJE
+JOVIĆ MILOJICA
+JOVIĆ MILUTIN
+JOVIĆ MILUTIN
+JOVIĆ MIRA
+JOVIĆ MIRJANA
+JOVIĆ MIRJANA
+JOVIĆ MIROSLAVA
+JOVIĆ MIROSLAV
+JOVIĆ MITAR
+JOVIĆ NIKOLA
+JOVIĆ NIKOLA
+JOVIĆ NIKOLA
+JOVIĆ NIKOLA
+JOVIĆ PAJICA
+JOVIĆ PERSIDA
+JOVIĆ PETAR
+JOVIĆ PETAR
+JOVIĆ RADE
+JOVIĆ RADIVOJE
+JOVIĆ RADIVOJE
+JOVIĆ RADOVAN
+JOVIĆ RAJKO
+JOVIĆ SAVO
+JOVIĆ SLAVKO
+JOVIĆ SLOBODAN
+JOVIĆ SPASENIJA
+JOVIĆ STANA
+JOVIĆ STANIŠA
+JOVIĆ STANKO
+JOVIĆ STANKO
+JOVIĆ STANKO
+JOVIĆ STEVAN
+JOVIĆ SVETISLAV
+JOVIĆ VASA
+JOVIĆ VELIMIR
+JOVIĆ VELIZAR
+JOVIĆ VELJKO
+JOVIĆ VERA
+JOVIĆ VERA
+JOVIĆ VERA
+JOVIĆ VLADA
+JOVIĆ VLADA
+JOVIĆ VLADA
+JOVIĆ VLADA
+JOVIĆ VLADIMIR
+JOVIĆ VLADISLAV
+JOVIĆ VOJISLAV
+JOVIĆ VUKOSAVA
+JOVIĆ ZDRAVKO
+JOVIĆ ZVONIMIR
+JOVIĆEVIĆ BOŽIDAR
+JOVIĆEVIĆ MILA
+JOVIĆEVIĆ MILUTIN
+JOVIĆEVIĆ NENAD
+JOVIĆEVIĆ STANKO DIPL ING
+JOVIĆEVIĆ VIDOSAVA
+JOVIĆEVIĆ ZORAN
+JOVIN ŽIVA
+JOVIN ANĐELKA
+JOVIN BORIVOJ
+JOVIN BRANKO
+JOVIN DRAGAN
+JOVIN DRAGOMIR
+JOVIN DUŠAN
+JOVIN DUŠAN
+JOVIN IVAN
+JOVIN JELENA
+JOVIN LJUBICA
+JOVIN MILAN
+JOVIN MILIVOJ DR
+JOVIN MILOŠ
+JOVIN MIRJANA
+JOVIN RADOSLAV
+JOVIN RADOVAN
+JOVIN SIMA
+JOVIN SLAVKO DR
+JOVIN SVETLANA
+JOVIN VESNA
+JOVIN ZLATOJE
+JOVIN ZUSKA
+JOVINOV BOGDAN
+JOVKOVIĆ MIODRAG
+JOVKOVIĆ RATOMIR
+JOVOVIĆ ŽELJKO
+JOVOVIĆ ANKA
+JOVOVIĆ BOŽIDAR
+JOVOVIĆ BRANISLAV
+JOVOVIĆ JOVAN
+JOVOVIĆ JOVAN
+JOVOVIĆ LJILJANA
+JOVOVIĆ MILORAD
+JOVOVIĆ MILOVAN
+JOVOVIĆ NIKOLA
+JOVOVIĆ NIKOLA
+JOVOVIĆ RADE
+JOVOVIĆ RADOMIR
+JOVOVIĆ RAJKO
+JOVOVIĆ STANA
+JOVOVIĆ STOJAN
+JOZANOV DANICA
+JOZANOV MILAN
+JOZANOV SLOBODAN
+JOZANOV ZORAN
+JOZEFČAK IVAN
+JOZIĆ JOZA
+JOZIĆ KATARINA
+JOZIĆ MIODRAG
+JOZIĆ MIRKO
+JOZIĆ PEJO
+JUŠIĆ NATALIJA
+JUŠKOVIĆ BRANISLAV
+JUANIN ŽIVOJIN DIPL ING
+JUANIN JOVAN
+JUGIN MILENA
+JUGOVIĆ ĐURAĐ
+JUGOVIĆ LEPOSAVA
+JUGOVIĆ MILE
+JUGOVIĆ MILOŠ
+JUGOVIĆ VESELIN
+JUGOVIĆ ZDRAVKO
+JUHAS ĐERĐ
+JUHAS ANDRAŠ
+JUHAS ANDRAŠ
+JUHAS ANTAL
+JUHAS DEZE
+JUHAS ERNE
+JUHAS EVA
+JUHAS FERENC
+JUHAS FERENC
+JUHAS GEZA DR PROFESOR
+JUHAS GIZELA
+JUHAS IVANKA
+JUHAS JANOŠ
+JUHAS JANOŠ
+JUHAS JELISAVETA
+JUHAS KATARINA
+JUHAS-KOSTIĆ ĐERĐI
+JUHAS LADISLAV
+JUHAS MARIJA
+JUHAS MIHALJ
+JUHAS MIHALJ
+JUHAS MIJO
+JUHAS MIRON
+JUHAS STEVAN
+JUHAS STEVAN
+JUHAS STEVAN
+JUHAS STEVAN
+JUHAS TIBOR DIPL ING
+JUHAS TIBOR
+JUHAS VALERIJA
+JUHAS VIKTORIJA
+JUHAS VLADISLAV
+JUKIĆ BANE
+JUKIĆ FRANJA
+JUKIĆ FRANJO
+JUKIĆ IVICA
+JUKIĆ JOSIP
+JUKIĆ LUKA
+JUKIĆ MARKO
+JUKIĆ NADA
+JUKIĆ VLADISLAV
+JUKOVIĆ RASIM
+JULINAC DRAGINJA
+JUNG ĐERĐ
+JUNG FRANCIŠKA
+JUNG IBOLJKA
+JUNG ILDIKO
+JUNG IVICA
+JUNG JOSIP
+JUNG JOVAN
+JUNG KAROLJ MR
+JUNG MARIJA
+JUNG ROBERT
+JUNG ROBERT
+JUNG VERICA
+JUNUZOVIĆ ISMET
+JUPEK ZDENKA
+JURČEVIĆ MARKO
+JURČIĆ ŽELJKO
+JURČIĆ DESANKA
+JURŠIĆ CVETA
+JURAGA MARKO
+JURAGA MILORAD
+JURAKIĆ GORAN
+JURAKIĆ ILIJA
+JURAKIĆ IVAN
+JURAKIĆ JELA
+JURAKIĆ JOZO
+JURAKIĆ PEJO
+JURAKIĆ STIPO
+JURANJI MARIJA
+JURAS ANICA
+JURAS ANTE
+JURASOVIĆ JOVAN
+JURCA ŽELJKO
+JURCA ĐORĐE
+JURCA IVAN
+JURCA LARISA
+JUREŠEV PETAR
+JUREŠIĆ JOZO
+JUREŠIĆ VERA
+JURIŠEVIĆ ANKA
+JURIŠEVIĆ MARA
+JURIŠEVIĆ MIRKO
+JURIŠIĆ ĐORĐE
+JURIŠIĆ ĐURA
+JURIŠIĆ ALOJZ
+JURIŠIĆ ANDRIJA
+JURIŠIĆ BOGOLJUB
+JURIŠIĆ DRAGAN
+JURIŠIĆ FRANJA
+JURIŠIĆ GOSPAVA
+JURIŠIĆ IGNJAT
+JURIŠIĆ ILINKA
+JURIŠIĆ IVAN
+JURIŠIĆ JELENA
+JURIŠIĆ JOVAN
+JURIŠIĆ KATARINA
+JURIŠIĆ LJUBICA
+JURIŠIĆ MARIJA
+JURIŠIĆ MILENKO
+JURIŠIĆ MILORAD
+JURIŠIĆ MILORAD
+JURIŠIĆ NEDELJKA
+JURIŠIĆ NENAD
+JURIŠIĆ NIKOLA
+JURIŠIĆ OLGA
+JURIŠIĆ OSTOJA
+JURIŠIĆ PETAR
+JURIŠIĆ PETAR
+JURIŠIĆ RADENKO
+JURIŠIĆ STEVAN
+JURIŠIĆ STEVAN
+JURIŠIĆ VLATKO
+JURIŠIĆ ZORKA
+JURIŠIN ŽARKO
+JURIŠIN ŽIVA
+JURIŠIN BRANISLAV
+JURIŠIN DRAGOLJUB
+JURIŠIN LJILJANA
+JURIŠIN MILINA
+JURIŠIN MILOŠ
+JURIŠIN NATALIJA
+JURIŠIN RASTKO DIPL ING
+JURIŠIN SLAVKO
+JURIŠIN VLADIMIR
+JURIĆ ŽIVADINKA
+JURIĆ ANA
+JURIĆ AVGUST
+JURIĆ BOSILJKO
+JURIĆ CVIJO
+JURIĆ FILIP
+JURIĆ ILIJA
+JURIĆ IVAN
+JURIĆ JELKA
+JURIĆ MARIJA
+JURIĆ MARIJA
+JURIĆ MARKO
+JURIĆ MARKO
+JURIĆ MILOŠ
+JURIĆ PAULINA
+JURIĆ PETAR
+JURIĆ SOFIJA
+JURIBAŠIĆ MARIJA
+JURIBAŠIĆ TOMISLAV
+JURIC IVAN
+JURIC JOSIP
+JURIC STJEPAN
+JURICA ANA
+JURICA DALIBOR
+JURICA JAN
+JURIK ŠANDOR
+JURIK DUŠAN
+JURIK JOSIP
+JURIK JOSIP
+JURIK JOVAN
+JURIK MARIJA
+JURIK MIHAL
+JURIK MILKA
+JURIK PAVLE
+JURIK STEVAN
+JURISTOVSKI GEORG DIPL ING
+JURJANOVIĆ DUŠANKA
+JURJEVIĆ JASMINA
+JURKIĆ ANTUN
+JURKIĆ AUGUSTIN
+JURKIĆ MARKO
+JURKOVIĆ ANA
+JURKOVIĆ BILJANA
+JURKOVIĆ BOŽICA
+JURKOVIĆ DRAGAN
+JURKOVIĆ DUŠAN
+JURKOVIĆ KRISTINA
+JURKOVIĆ PETAR
+JURKOVIĆ PETAR
+JURKOVIĆ ZLATKO
+JURKOVIĆ ZVONKO
+JURKOVSKI STEVAN
+JURLINA ANTUN
+JURLINA MARKO DR
+JURLINA PAVLE
+JURUKOVSKI GOSPAVA
+JURUKOVSKI LEVKO
+JURUKOVSKI MILOVANKA
+JUSTIN CIRIL
+JUSTIN DANICA
+JUSUFI BERZAT
+JUSUFOVIĆ AMIR
+JUVAN FANIKA
+KĆIKU ĐAVID
+KĆIKU RAHIM
+KAČAK ILONA
+KAČAPOR SEFEDIN
+KAČAR ČEDOMIR
+KAČAR ĐURO
+KAČAR BRANISLAV
+KAČAR DUŠANKA
+KAČAR SLAVKO
+KAČAR SLOBODAN
+KAČAR SLOBODAN
+KAČAR TADIJA
+KAČAREVIĆ MILAN
+KAČAVENDA BRANISLAVA
+KAČAVENDA LAZO
+KAČAVENDA MILAN
+KAČAVENDA MILORAD
+KAČAVENDA MILORAD
+KAČAVENDA SLOBODAN
+KAČAVENDA TATJANA
+KAČAVENDA TATJANA
+KAČAVENDA VERA
+KAČMARČIK ŠTEFAN
+KAČMARČIK JELENA
+KAŠA TIBOR
+KAŠAI JELISAVETA
+KAŠANIN MILETA
+KAŠANIN MIRA
+KAŠANIN MIRJANA
+KAŠANIN MIROSLAV
+KAŠIĆ ALEKSANDAR
+KAŠIĆ JOVAN DR
+KAŠIĆ MARIJA
+KAŠIĆ MILIVOJ
+KAŠIĆ MLADEN
+KAŠIĆ REVEKA
+KAŠIĆ VERA
+KAŠIĆ VIKTORIJA
+KAŠIĆ VOJISLAV
+KAŠIK IVAN
+KAŠIKOVIĆ ĐORĐO
+KAŠIKOVIĆ BOŠKO
+KAŠIKOVIĆ GOJKO
+KAŠIKOVIĆ PREDRAG
+KAŠIKOVIĆ SLAVKA
+KAŠIKOVIĆ VLADO
+KAŠLIK IMRE
+KAŠLIK MATIJA
+KAŠOVSKI JANKO
+KAŠOVSKI NIKOLA
+KAĆANSKI ŽARKO
+KAĆANSKI ŽARKO
+KAĆANSKI ŽIVKO
+KAĆANSKI ĐORĐE
+KAĆANSKI BOJANA
+KAĆANSKI BRANISLAV
+KAĆANSKI BRANKO
+KAĆANSKI DUŠANKA
+KAĆANSKI DUŠAN
+KAĆANSKI JELISAVETA
+KAĆANSKI KONSTANTIN
+KAĆANSKI LJUBICA
+KAĆANSKI MILIVOJ
+KAĆANSKI MILIVOJ
+KAĆANSKI MILKA
+KAĆANSKI MILORAD
+KAĆANSKI MILUTIN
+KAĆANSKI MIROSLAVA
+KAĆANSKI MLADEN
+KAĆANSKI PAVLE DR LEKAR
+KAĆANSKI PLATON DR
+KAĆANSKI RADOVAN
+KAĆANSKI SIMA
+KAĆANSKI SLAVKO
+KAĆANSKI SMILJA
+KAĆANSKI SOFIJA
+KAĆANSKI SVETISLAV
+KAĆANSKI TODOR
+KAĆANSKI VELINKA
+KAĆANSKI VERA
+KAĆANSKI VLADIMIR VETERINAR
+KAĆANSKI VLADISLAVA
+KAĆIAK MIHAJLO
+KAĆURIN ŽIVAN
+KAĆURIN KRISTINA
+KAĆURIN MILANA
+KAĆURIN MILAN
+KAĆURIN RADOSLAV
+KAŽIĆ VLADIMIR
+KABA SULEJMAN
+KABIĆ ANA
+KABIĆ BOGDAN
+KABIĆ DANILO
+KABIĆ DRAGICA
+KABIĆ DRAGUTIN
+KABIĆ SLOBODAN
+KABIĆ TIMOŠENKO
+KABILJO DRAGICA
+KABILJO JOSIP
+KABILJO SILVIO
+KABOK ERIKA
+KABOK JOŽEF
+KACAROŠ KOSTAS
+KADAŠ LAJOŠ DIPL ING
+KADAR JULIJANA
+KADIĆ ILIJA
+KADIĆ MARIJAN
+KADIĆ NIKOLA
+KADIĆ RADMILA
+KADIĆ SAVA
+KADIJA VOJISLAV
+KADIVNIK MIODRAG
+KADLEČIK KATICA
+KADRIJA FEVZIJA
+KADRIJA HABILJ
+KADRIJA HASAF
+KADRIJA HURMET
+KADVANJ JANOŠ
+KADVANJ JOVAN
+KADVANJ LADISLAV
+KADVANJ LAJOŠ
+KAHRIMAN PETAR
+KAHRIMAN SNEŽANA
+KAHRIMAN SNEŽANA
+KAHRIMAN SNEŽANA
+KAIĆ IVAN
+KAIĆ KATALIN DR
+KAIĆ PETAR
+KAINOVIĆ GORDANA
+KAITOVIĆ JELA
+KAJČIĆ LJILJANA
+KAJČIĆ MILOVAN
+KAJČIĆ VELIMIR
+KAJEVIĆ ŽARKO
+KAJFEŠ ZVONKO
+KAJGANIĆ ILIJA
+KAJGANIĆ LJUBAN
+KAJGANIĆ MILORAD
+KAJGANIĆ VERONIKA
+KAJIŠ ŽELJKO
+KAJIŠ MILE
+KAJIĆ ŽELJKO
+KAJIĆ NADA
+KAJKARA BOGDAN
+KAJKARA MILENKO
+KAJKARA RADOSLAV
+KAJON ALEKSANDAR
+KAJON ANA
+KAJON LJILJANA
+KAJON MIROSLAV
+KAJON MIROSLAV
+KAJTES ĐURO
+KAJTEZ DRAGAN
+KAJTEZ MIRKO
+KAJTEZ NEDELJKO
+KAJTEZ ROZALIJA
+KAJTEZ TRIVUN
+KAJTEZ VALENTINA
+KAJZER KARLO
+KAKAŠ DAMIR
+KAKAŠ ILIJA
+KAKAŠ JOŽEF
+KAKAŠ JOSIP
+KAKAŠ MARIJA
+KAKONJI ANA
+KAKUČKA IŠTVAN
+KAKUČKA JELISAVETA
+KAKUČKA STEVAN
+KALČOV MIHALJ
+KALA GEZA
+KALAČAJI SVETISLAV
+KALAČEVIĆ VLADIMIR
+KALABA BOJAN
+KALABA BRANKO
+KALABA DRAGICA
+KALABA LJUPKO
+KALABA LUKA
+KALABA MARKO
+KALABA MLADEN
+KALABA NIKOLA
+KALABA STEVAN
+KALABIĆ DANE
+KALABIĆ STEVO
+KALABRIĆ BRANKO
+KALABRIĆ MIHOVIL
+KALAFATIĆ MILIVOJ
+KALAFATIĆ NEBOJŠA
+KALAI KAROLJ
+KALAJDŽIĆ DARKO
+KALAJDŽIĆ LUKA
+KALAJDŽIĆ MIHAILO
+KALAJDŽIĆ MILAN
+KALAMANDA DRAGAN
+KALAMANDA SLOBODAN
+KALANJ ĐUKA
+KALANJ DRAGIŠA
+KALANJ FEMKA
+KALANJ STEVAN
+KALANJA DUŠANKA
+KALANJA MIROSLAV
+KALANJEV ZORA
+KALANJOŠ ĐURA
+KALANJOŠ ANA
+KALANJOŠ BORISLAV
+KALANJOŠ JANOŠ
+KALANJOŠ MIRJANA
+KALANJOŠ PETAR
+KALANJOŠ PETAR
+KALANJOŠ RUŽA
+KALANJOŠ RUŽA
+KALANJUŠ ĐURA
+KALANJUŠ FRANJA
+KALAPAŠ EVICA
+KALAPAŠEV DINA
+KALAPAŠEV SINIŠA
+KALAPATI ŠARA
+KALAPATI FERENC
+KALAPATI IVAN
+KALAPATI RUDOLF
+KALAPIŠ RUDI
+KALAPIŠ ZOLTAN
+KALAUZ MARINKO
+KALAUZOV MAŠA
+KALC MILENKA
+KALC MILKO
+KALC SLAVOJKA
+KALEA JELENA
+KALEJSKI ZLATOMIR
+KALEM BRANKO
+KALEM IVANKA
+KALEM MIRJANA
+KALEM NEDELJKO
+KALEM SRETEN
+KALEM SRETEN
+KALEMBER BOŠKO
+KALEMBER MIŠA
+KALEMBER MILENA
+KALEMBER MILIVOJ
+KALEMBER MIRJANA
+KALEMBER SOFIJA
+KALEMBER STOJADIN
+KALEMI ŠERIF
+KALENDER KRISTINA
+KALENIĆ ALEKSANDAR DIPL ING
+KALENIĆ ALEKSANDAR
+KALENIĆ VOJISLAV
+KALENJUK MITAR
+KALENTIĆ BOSA
+KALENTIĆ RADOVAN
+KALEZIĆ JELENA
+KALEZIĆ JOVANKA
+KALEZIĆ OLGA
+KALEZIĆ TOMISLAV
+KALIČANIN MOMČILO
+KALIĆ DRAGANA
+KALIĆ JOSIP
+KALIĆ JOVANKA
+KALIĆ MILENA
+KALIĆ MUSTAFA
+KALIĆ OLGA
+KALIĆ RADOVAN
+KALIĆ SOFIJA
+KALIK GROZDA
+KALIN EDUARD
+KALIN MARIJAN
+KALINIĆ DANICA
+KALINIĆ JOVO
+KALINIĆ KRSTO
+KALINIĆ MILADIN
+KALINIĆ MILICA
+KALINIĆ NADA
+KALINSKI DARKO
+KALIVODA RUDOLF
+KALJEVIĆ ALEKSANDAR
+KALJEVIĆ KRSTO
+KALJEVIĆ STEVAN
+KALKAN MILAN
+KALMAN KLARA
+KALMAN MIHAJLO
+KALMAN MIKLOŠ
+KALMAN RADICA
+KALMAR ĐORĐE
+KALMAR ĐURA
+KALMAR ANA
+KALMAR FERENC
+KALMAR FRANJA
+KALMAR GRGUR
+KALMAR IŠTVAN
+KALMAR LAJOŠ
+KALMAR MIRKO
+KALMAR-VEREŠ GIZELA
+KALMAR VLADIMIR
+KALMAREVIĆ ALEKSANDAR
+KALNOK SLOBODAN
+KALOČAI ŠANDOR
+KALOČAI IŠTVAN
+KALOČAI LENKE
+KALOČAI PETAR
+KALOČAJI ĐORĐE
+KALOČANJ FERENC
+KALOCI IVAN
+KALOCI LADISLAV
+KALOCI TIBOR
+KALOCI VESELINKA
+KALOPER JOVANKA
+KALOPER PERICA
+KALOZI ARANKA
+KALTNEKER EMILIJA
+KALTNEKER EMILIJA
+KALUŠEV GLIŠA
+KALUŠKA SLAVKO
+KALUŽIĆ KATICA
+KALUŽIĆ NADA
+KALUĐEROVIĆ MARKO
+KALUĐEROVIĆ MILIVOJE
+KALUĐEROVIĆ MILOŠ
+KALUĐEROVIĆ MIRIJANA
+KALUĐEROVIĆ MLADEN
+KALUĐEROVIĆ MOMČILO
+KALUĐEROVIĆ OLIVERA
+KALUĐEROVIĆ UROŠ
+KALUĐERSKI ĐOKA
+KALUĐERSKI ĐOKA
+KALUĐERSKI AGNEZA
+KALUĐERSKI BORIS
+KALUĐERSKI GAVRA
+KALUĐERSKI MILORAD
+KALUĐERSKI MIROSLAV
+KALUĐERSKI SINIŠA
+KALUĐERSKI STOJAN DR
+KALUGER NIKOLA
+KALUGER ZORAN
+KAMČESKA DRAGICA
+KAMČESKI DIMČE
+KAMČESKI STEVAN
+KAMČEVIĆ ANA
+KAMČEVSKI SAVA
+KAMARIT ZORAN
+KAMASI FERENC
+KAMASI FERENC
+KAMASI IMRE
+KAMASI JANOŠ
+KAMBERI DUŠAN
+KAMBERI MUSA
+KAMBEROVIĆ BATO
+KAMBEROVIĆ SINIŠA
+KAMENAROVIĆ GLIGORIJE
+KAMENAROVIĆ MILAN
+KAMENAROVIĆ NIKOLA
+KAMENJICKI JULIJAN
+KAMENKO MILAN
+KAMENKO RADE
+KAMENKO RADE
+KAMENKO VERA
+KAMENKOVIĆ ALEKSANDRA
+KAMENKOVIĆ DOBRILA
+KAMENKOVIĆ JOSIP
+KAMENKOVIĆ JOVANKA
+KAMENKOVIĆ OLGA
+KAMENOV EMIL DR
+KAMPEL IVAN
+KAMPIĆ PAVLE
+KAMRA IVAN
+KANČAR ERŽEBET
+KANAČKI ŽARKO
+KANAČKI LJILJANA
+KANAČKI MAGDALENA
+KANAČKI STEVAN
+KANAČKI ZLATA
+KANAZIR ŽIVKA
+KANAZIR ALEKSANDAR
+KANAZIR-BELIĆ MILICA
+KANAZIR BORISLAV
+KANAZIR BORISLAV
+KANAZIR BRANISLAV
+KANAZIR CVETA
+KANAZIR DRAGICA
+KANAZIR DRAGICA
+KANAZIR DUŠAN
+KANAZIR IVANKA
+KANAZIR JOVANKA
+KANAZIR JOVAN
+KANAZIR KOSTA
+KANAZIR KOSTA
+KANAZIR KOSTA
+KANAZIR MARIJA
+KANAZIR MILAN
+KANAZIR MILICA
+KANAZIR MILOVAN
+KANAZIR RADIVOJ
+KANAZIR SLAVKO
+KANAZIR VASA
+KANAZIR VERICA DR
+KANAZIR VUKICA
+KANAZIR ZAHARIJE
+KANBAN MILICA
+KANDIĆ NADA
+KANDIĆ RADMILA
+KANDIĆ SMILJANA
+KANDIĆ VIDOJE
+KANDRAČ ĐORĐE
+KANDRAČ LEONA
+KANGRGA ANKA
+KANGRGA KOSTA
+KANGRGA RUŽA
+KANIŽAI EVA
+KANJA JAN
+KANJERIĆ MATE
+KANJO IŠTVAN
+KANJO STJEPAN
+KANJO ZOLTAN
+KANJUH JAKIM
+KANJUH JOAKIM
+KANJUH MARICA
+KANJUH MIRA
+KANJUH VLADIMIR
+KANJUH ZVONKO
+KANJUKA IVAN
+KANJUKA VLADIMIR
+KANKARAŠ RADOSAV
+KANKARAŠ VESELIN
+KANLIĆ MILAN
+KANLIĆ ZARIJA
+KANOVIĆ PAVLE DIPL ING
+KANTAR ĐURO
+KANTAR DMITAR
+KANTAR KAJA
+KANTAR MILAN
+KANTAR MILOŠ
+KANTAR MIROSLAV
+KANTAR NIKOLA
+KANTAR OSTOJA
+KANTAR VLADO
+KANTARDŽIĆ ĐORĐE
+KANTARDŽIĆ GORDANA
+KANTARDŽIĆ JELENA
+KANTARDŽIĆ KATICA
+KANTARDŽIĆ KOSTA
+KANTARDŽIĆ LAZAR
+KANTARDŽIĆ LAZA
+KANTARDŽIĆ MILICA
+KANTARDŽIĆ MILOVAN
+KANTARDŽIĆ MILOVAN
+KANTARDŽIĆ MIROSLAV
+KANTARDŽIĆ MLADEN
+KANTARDŽIĆ NADA
+KANTARDŽIĆ OLGA
+KANTARDŽIĆ PETAR
+KANTARDŽIĆ STEVAN
+KANTARDŽIĆ VASA
+KANTINKOSKI HANU
+KANTOR LAJOŠ
+KANTOR OSKAR
+KANURIĆ ALEKSANDAR
+KANURIĆ MILICA
+KANURIĆ ZORKA
+KANURSKI JOVAN
+KANURSKI VIDOSAVA
+KAPAMADŽIJA ALEKSANDRA
+KAPAMADŽIJA BORISLAV DR
+KAPAMADŽIJA DUŠANKA
+KAPAMADŽIJA RADMILA
+KAPAMADŽIN JOVAN
+KAPELAN NIKOLA
+KAPES ALEKSANDAR
+KAPES ZDRAVKA
+KAPETANIĆ TOMISLAV
+KAPETANOV MIRJANA
+KAPETANOV SVETISLAV
+KAPETANOV VUKICA
+KAPETANOVIĆ JOVAN
+KAPETANOVIĆ MIDHAT
+KAPETANOVIĆ MOMČILO
+KAPETANOVIĆ OLGA
+KAPETANOVIĆ RATKO
+KAPETANOVIĆ VERICA
+KAPIČIĆ DUŠAN
+KAPIČIĆ SAVO
+KAPIČIĆ STEVAN
+KAPICL DRAGUTIN
+KAPITANJ LASLO
+KAPLAR ŽIVAN
+KAPLAR MARIJA
+KAPLAREVIĆ MIODRAG
+KAPLARSKI KONSTANTIN
+KAPLARSKI MLADEN
+KAPLARSKI SVETLANA
+KAPLIJEV PETAR
+KAPMAJER ALEKSANDAR
+KAPOČ ANTAL
+KAPOČ JUDIT
+KAPOR AGNEŠ
+KAPOR ALEKSANDAR
+KAPOR DESANKA
+KAPOR GOJKO
+KAPOR KATARINA
+KAPOR NADA
+KAPOR NOVICA
+KAPOR STANA
+KAPOSTA TEREZA
+KAPRIŠ MIRJANA
+KAPUĆ ILONA
+KARĆAŠ MILKA
+KARAČ MIRKO
+KARAČONJI IŠTVAN
+KARAĆ DRAGAN
+KARAĆ DUŠAN
+KARAĆ DUŠAN
+KARAĆ ILIJA
+KARAĆ JELICA
+KARAĆ LJUBOMIR
+KARAĆ MARIJA
+KARAĆ MILENKO
+KARAĆ RADENKO
+KARAĆ RAJKO
+KARAĆ SLOBODAN
+KARAĐENOV IVAN
+KARAĐENOV IVAN
+KARAĐENOV MIRJANA
+KARAĐINOVIĆ ŠPIRO
+KARAĐINOVIĆ NENAD
+KARAĐINOVIĆ PETAR
+KARAĐINOVIĆ VELIMIR
+KARAĐINOVIĆ ZORA
+KARABA IRENA DR LEKAR
+KARABA JOVAN
+KARABA OLGA
+KARABAŠ MILIVOJ
+KARABAŠ SLOBODAN
+KARABASIL DRAGAN
+KARABASIL VIDOMIR
+KARABEGOVIĆ DANILO
+KARADŽIĆ ŠUJO
+KARADŽIĆ ŽARKO
+KARADŽIĆ ĐORĐE
+KARADŽIĆ ARSENIJE
+KARADŽIĆ AVRAM
+KARADŽIĆ BOŽO
+KARADŽIĆ BRATISLAV
+KARADŽIĆ JOVAN
+KARADŽIĆ JOVAN
+KARADŽIĆ KSENIJA
+KARADŽIĆ MARIJA
+KARADŽIĆ MILORAD
+KARADŽIĆ MIODRAG
+KARADŽIĆ MIROSLAV
+KARADŽIĆ NENAD
+KARADŽIĆ RELJA
+KARADŽIĆ RUŽA
+KARADŽIĆ SLAVICA
+KARADŽIĆ TVRTKO
+KARADŽIĆ VERA
+KARADŽIĆ VUK
+KARADŽIĆ ZORAN
+KARADŽIĆ ZORAN
+KARADAREVIĆ MILAN
+KARADAREVIĆ MILOŠ
+KARADEGLIĆ KOSA
+KARAGA NIKOLA
+KARAGIĆ-LIPINSKI ILONA
+KARAICA ZORAN
+KARAJKOV ALOJZIJE
+KARAJKOV VLADIMIR
+KARAJKOV VLADIMIR
+KARAJLOVIĆ ĐURO
+KARAJOVIĆ MILUTIN
+KARAKAŠ MIRJANA
+KARAKAŠEVIĆ DESANKA
+KARAKAŠEVIĆ DRAGICA
+KARAKAŠEVIĆ EVICA
+KARAKAŠEVIĆ STEVAN
+KARAKAŠEVIĆ ZORA
+KARAMARKOVIĆ MILA
+KARAMATIĆ ANTE
+KARAN ŽELJKO
+KARAN DRAGAN
+KARAN-KERN BARBARA
+KARAN MILAN
+KARAN MILENKO
+KARAN MILINKO
+KARAN SAVO
+KARAN SRĐO
+KARANJAC DRAGOSLAV
+KARANJAC LJUBICA
+KARANJAC VEROLJUB
+KARANOV ŽIVAN
+KARANOV BUDIMKA
+KARANOV DRAGOLJUB
+KARANOV KUZMAN
+KARANOV MILAN
+KARANOV MILOVAN
+KARANOV MIROSLAV
+KARANOV SOFIJA
+KARANOVIĆ ĐORĐE
+KARANOVIĆ BOŽO
+KARANOVIĆ DRAGAN
+KARANOVIĆ DUŠAN
+KARANOVIĆ DUŠAN
+KARANOVIĆ EMILIJA
+KARANOVIĆ GRETA
+KARANOVIĆ ILIJA
+KARANOVIĆ ILIJA
+KARANOVIĆ ILIJA
+KARANOVIĆ IVICA
+KARANOVIĆ JOVAN
+KARANOVIĆ KATICA
+KARANOVIĆ LJILJANA
+KARANOVIĆ LJUBA
+KARANOVIĆ MILAN
+KARANOVIĆ MILAN
+KARANOVIĆ MILOMIR
+KARANOVIĆ MILUTIN
+KARANOVIĆ MIRJANA
+KARANOVIĆ MIRKO
+KARANOVIĆ NIKOLA
+KARANOVIĆ PERO
+KARANOVIĆ RATKO
+KARANOVIĆ SLAVKO
+KARANOVIĆ SLOBODAN
+KARANOVIĆ STEVAN
+KARANOVIĆ STEVO
+KARANOVIĆ SVETOZAR
+KARANOVIĆ TRIVO
+KARANOVIĆ VESO
+KARANOVIĆ VLADIMIR
+KARAPANŽA MARIJA
+KARAPANDŽA LJILJANA
+KARAPANDŽA VITOMIR
+KARAPANDŽIĆ ĐURA
+KARAPANDŽIĆ GORDANA
+KARAPANDŽIĆ MIRJANA
+KARAPANDŽIN BARBARA
+KARAPANDŽIN ZORKA
+KARAS KAZIMIR
+KARAS MAGDA
+KARAS PETAR
+KARAS PETAR
+KARASALIHOVIĆ SMAIL
+KARASEK KAROLJ
+KARASIJ BORIS
+KARASIJ JASMINA
+KARASIJ VERONIKA
+KARATI EUGEN
+KARATUR JADRANKA
+KARAVLA KATARINA
+KARAVLA ZLATKO
+KARAVLA ZORICA
+KARBAN RUDOLF
+KARDAŠ OBRAD
+KARDAŠ OLGA
+KARDAŠEVIĆ BRANISLAV
+KARDAŠEVIĆ FIJA
+KARDAŠEVIĆ HUSNIJA
+KARDOŠ ALEKSANDAR
+KARDOŠ ERIKA
+KARDOŠ ILONA
+KARDOŠ LAJOŠ
+KARDOŠ PAL
+KARDOŠ VERONIKA
+KARDOV JOSIP
+KARDUM ĐORĐE
+KARGAČIN JELISAVETA
+KARIŠIĆ IVANKA
+KARIŠIK DANE
+KARIŠIK JOVANKA
+KARIŠIK MILUTIN
+KARIĆ BOSILJKA
+KARIĆ JOVANKA
+KARIĆ RADOSLAV
+KARIĆ SAVA
+KARIĆ SAVA
+KARIĆ SVETISLAV
+KARIKO JOSIP
+KARIKO MARIJA
+KARIKO TEREZA
+KARINA DRAGICA
+KARIUS MARIJA
+KARIUS VERA
+KARLAŠ MILORAD
+KARLAVARIS DRAGAN
+KARLAVARIS IVAN
+KARLAVARIS NADA
+KARLAVARIS RADIVOJ
+KARLAVARIS-ZEKOVIĆ MIRELA
+KARLIĆ JEFTA
+KARLIĆ LAZAR
+KARLIĆ MILIVOJ
+KARLO VAJDA
+KARLOVČEC MIRKO
+KARLOVIĆ ĐERĐ
+KARLOVIĆ MARICA
+KAROLIĆ LJUBICA
+KAROLIĆ MIRKO
+KAROLIĆ MIROSLAV
+KAROLJI JANOŠ
+KAROLJI LASLO
+KAROVIĆ GLIŠA
+KARPATI LASLO
+KARPONJA JULIJANA
+KARPONJA SINIŠA
+KARTAG NANDOR
+KARTAI LAJOŠ
+KARTALOVIĆ MILAN
+KARTJE JOVAN
+KARVAK EMA
+KARVAK GEZA
+KASA ĐERĐ
+KASA ANDRIJA
+KASA ANTAL
+KASA FRANJA
+KASA IDA
+KASA IMRE
+KASA JELENA
+KASA MIHALJ
+KASA RUŽA
+KASA RUŽA
+KASA ZORKA
+KASAŠ ALEKSANDAR MR
+KASAŠ ALEKSANDAR
+KASAŠ IMRE
+KASAŠ IMRE
+KASAŠ IMRE
+KASAŠ JANOŠ
+KASAŠ JOŽEF
+KASAŠ JOSIP
+KASAŠ KAROLJ
+KASAŠ KAROLJ
+KASAŠ KAROLJ
+KASAŠ OLGA
+KASAGIĆ BORISLAV
+KASALICA ŽARKO
+KASALICA ŽIVKO
+KASALICA MILAN
+KASALICA STEVANIJA
+KASAP ERVIN
+KASAPOV STEVAN
+KASAPOVIĆ MARA
+KASAPOVIĆ MEHO
+KASAPOVIĆ TIHOMIR
+KASAPSKI ŽARKO
+KASAPSKI JELKA
+KASAR SELIM
+KASIĆ DANICA
+KASNER MIJOLJKA
+KASPER ALEKSANDAR
+KASPER FERENC
+KASPER FRANJA
+KASPER LADISLAV
+KASPER STEVAN
+KASTELI ĐURĐINKA
+KASTELI MARKO
+KASTORI RUDOLF
+KASTRATI FADIL
+KASTRATOVIĆ ALEKSANDAR
+KASTRATOVIĆ BOGDAN
+KASTRATOVIĆ MIHAILO
+KASTRATOVIĆ VLADIMIR
+KASTRATOVIĆ ZORAN
+KASTRATOVIĆ ZORAN
+KATAŠIĆ PETAR
+KATALENIĆ DUŠAN
+KATALINČEV ŽIVAN
+KATANA ANGELINA
+KATANA NIKOLA
+KATANIĆ ANĐELKA
+KATANIĆ JECA
+KATANIĆ KSENIJA
+KATANIĆ LJUBICA
+KATANIĆ MARA
+KATANIĆ RADIVOJ
+KATANIĆ RADOMIR
+KATANIĆ SAVA DR
+KATANSKI MILOŠ
+KATANSKI PAVLE
+KATARINČIĆ CELESTIN
+KATARIVAS ELA
+KATARIVAS-NIKOLIĆ GIZELA
+KATATIĆ ILONA
+KATAVA RUDOLF
+KATAVIĆ DANILKA
+KATAVIĆ MARIJA
+KATAVIĆ RADMILA
+KATIĆ ADA
+KATIĆ ALEKSANDAR DIPL ING
+KATIĆ BOSILJKA
+KATIĆ DARA
+KATIĆ DOBRILA
+KATIĆ GOJKO
+KATIĆ ILIJA
+KATIĆ ILIJA
+KATIĆ IVAN
+KATIĆ JOVAN
+KATIĆ JOVO
+KATIĆ KOSTA
+KATIĆ KRSTA
+KATIĆ KSENIJA
+KATIĆ LJILJANA
+KATIĆ LJUBINKO
+KATIĆ LUKA
+KATIĆ MARGARETA
+KATIĆ MARIJA
+KATIĆ MILAN
+KATIĆ MILAN
+KATIĆ MILORAD
+KATIĆ MILORAD
+KATIĆ MITA
+KATIĆ NIKOLA
+KATIĆ NOVAK
+KATIĆ OTILIJA
+KATIĆ PAVLE DR
+KATIĆ RADIVOJ
+KATIĆ RATKO
+KATIĆ SAVO
+KATIĆ SLOBODAN
+KATIĆ SLOBODAN
+KATIĆ SNEŽANA
+KATIĆ SRETEN
+KATIĆ STANKO
+KATIĆ SVETISLAV
+KATIĆ SVETLANA
+KATIĆ VESELA
+KATIĆ VESNA
+KATIĆ VLADIMIR
+KATIĆ ZLATOMIR
+KATINČIĆ ŽELIMIR DIPL ING
+KATNIĆ SAVETA
+KATONA IMRE
+KATONA JOŽEF
+KATONA LAJOŠ DIPL ING
+KATONA LASLO
+KATONA VINCE
+KAURIĆ NIKOLA
+KAURIN JURE
+KAURIN KRSTO
+KAURIN LAZAR
+KAURIN MOMČILO
+KAURIN NEDELJKO
+KAURIN VASO
+KAURINOVIĆ BOŽIDAR
+KAURINOVIĆ SIMO DIPL ING
+KAUTEN JOHAN
+KAVČIĆ STEVAN
+KAVAJA LUKA
+KAVAJA NIKO
+KAVALIĆ BORISLAV
+KAVEČAN IVAN DR
+KAVEČAN NIKOLA
+KAVGIĆ MIODRAG
+KAVGIĆ NIKOLA
+KAVGIĆ PETAR
+KAVGIĆ PETAR
+KAVGIĆ STEVAN
+KAVRAJA STEVAN
+KAVRAJA SVETOZAR
+KAVRAN ŽELJKO
+KAZAFEROVIĆ REŠAD
+KAZANCEV JOSIPA
+KAZI ERNE
+KAZI JOŽEF
+KAZIJA SMILJKA
+KAZIMIĆ STEVAN
+KAZIMIROVIĆ ANA
+KAZIMIROVIĆ LJUBISAV
+KAZIMIROVIĆ MIRJANA
+KAZIMIROVIĆ NESTOR
+KEČA BOJANA
+KEČA DUŠANKA
+KEČA ILIJA
+KEČA MIKAN
+KEČA MILAN
+KEČA MILAN
+KEČA MILAN
+KEČA MILENKO
+KEČA MILEVA
+KEČA PERO
+KEČA RANKO
+KEČA SLOBODAN
+KEČA VOJIN
+KEČIĆ ŽIVAN
+KEČIĆ MILAN AKADEMSKI SLIKAR
+KEČKEŠ ĐERĐ
+KEČKEŠ FERENC
+KEČKEŠ JOSIP
+KEČKEMETI IŠTVAN
+KEČKI RUŽICA
+KEŠANSKI IVKA
+KEŠANSKI KATICA
+KEŠANSKI RADENKO
+KEŠANSKI RADIVOJ
+KEŠANSKI RUŽICA
+KEŠANSKI SIMO
+KEŠANSKI STANISLAV
+KEŠELJ ČEDOMIR
+KEŠELJ EVA
+KEŠELJ GOJKO
+KEŠELJ JOVAN
+KEŠELJ RADMILA
+KEŠELJ SLOBODAN
+KEŠELJ UGLJEŠA
+KEŠELJ VUKAŠIN
+KEŠKIĆ ZVONIMIR
+KEŠMARKI-KRESTA JELENA
+KEŽIĆ BILJANA
+KEŽIĆ DUŠAN
+KEŽIĆ KATICA
+KEŽIĆ MARJAN
+KEŽIĆ MILAN
+KEŽIĆ NEVENKA
+KEŽIĆ VLADO
+KEBIN ŽARKO
+KECELI MIHALJ
+KECIĆ DANILO DR
+KECIĆ MIROSLAV
+KECIĆ SLOBODAN
+KECMAN ČEDA
+KECMAN ŽARKO
+KECMAN ĐURO
+KECMAN ĐURO
+KECMAN BORISLAV
+KECMAN BRANKO
+KECMAN DRAGICA
+KECMAN DUŠAN
+KECMAN ILIJA
+KECMAN JOVAN
+KECMAN JOVAN
+KECMAN JULKA
+KECMAN LJUBA
+KECMAN MARA
+KECMAN MARKO
+KECMAN MILADIN
+KECMAN MILAN
+KECMAN MILAN
+KECMAN MILKA
+KECMAN MILUTIN
+KECMAN MIRJANA
+KECMAN MIROSLAVA
+KECMAN MLADEN
+KECMAN STEVAN
+KECMAN SVETKO
+KECO ČEDOMIR
+KECO GOJKO
+KECO JELENA
+KECO LJUBOMIR
+KECO MARIJA
+KECO MARIJA
+KECO MIRJANA
+KECO MITAR
+KECO MOMIR
+KECO RADOJE
+KECO RATKO
+KECO SLOBODAN
+KECO SLOBODAN
+KEDŽA MILORAD
+KEDIĆ DUŠAN
+KEDIĆ STANKO
+KEDVEŠ EVA
+KEFER JANOŠ
+KEFER JOSIP
+KEGLOVIĆ VINKO
+KEK ERŽEBET
+KEK EVA
+KEKELJEVIĆ MIODRAG
+KEKENJ GIZELA
+KEKEZ DRAGINJA
+KEKIĆ ĐORĐE
+KEKIĆ ĐURA
+KEKIĆ AGICA
+KEKIĆ DANICA
+KEKIĆ DRAGAN
+KEKIĆ DUŠAN
+KEKIĆ GORDANA
+KEKIĆ KOSOVKA
+KEKIĆ MILAN
+KEKIĆ MILICA
+KEKIĆ MIRKO
+KEKIĆ NATALIJA
+KEKIĆ PETAR
+KEKIĆ SLAVICA
+KEKIĆ TEODOR
+KEKIN MARIJA
+KEKOVIĆ DRAGOLJUB
+KEKOVIĆ MELANIJA
+KEKOVIĆ MIODRAG
+KELBLI MIHAJLO
+KELE JOŽEF
+KELE JOŽEF
+KELEČ MILORAD
+KELEČ MIRKO
+KELEČEVIĆ DANICA
+KELEČEVIĆ NIKICA
+KELEČIĆ IVAN
+KELEČIĆ JOSIP
+KELEMEN ALEKSANDAR DIPL ING
+KELEMEN ALEKSANDAR
+KELEMEN ANA
+KELEMEN GABOR
+KELEMEN IMRE
+KELEMEN JOŽEF
+KELEMEN JOŽEF
+KELEMEN LAJOŠ
+KELEMEN MAĆAŠ
+KELEMEN MARIJA
+KELEMEN TIBOR
+KELER JANOŠ
+KELER JANOŠ
+KELER PETAR
+KELER RADMILA
+KELER STEVAN
+KELEUVA DRAGO
+KELEUVA MIHAJLO
+KELIĆ STEVANKA
+KELIJAŠEVIĆ ŽIVKO
+KELNER MARIJA
+KELOVIĆ MILOMIR
+KEMEC ANDRIJA
+KEMEC MIJO DIPL ING
+KEMENCI BELA
+KEMENJ MIRA
+KEMENJ TEREZIJA DIPL ING
+KEMIVEŠ GEORG
+KENĐEL STEVICA
+KENCEL SMILJA
+KENEŠKI DRAGAN
+KENIG HENDRIH
+KENIG JEKA
+KENIG JELENA
+KENJALO STOJAN
+KEPČIJA ILIJA
+KEPČIJA MILE
+KEPČIJA TODOR
+KEPE-DRAGOSAVLJEVIĆ LIVIJA
+KEPE JULIJANA
+KEPIĆ ŽIVAN
+KERČEV KARLO
+KERČU MIRJANA
+KERČU STANISLAV
+KERŠNER ALEKSANDAR
+KERAC ŽARKO
+KERAC ŽARKO
+KERAC ĐURA
+KERAC BRANISLAV
+KERAC DANICA
+KERAC DUŠAN
+KERAC ERŽEBET
+KERAC GAVRA
+KERAC JOVAN
+KERAC JOVAN
+KERAC LAZAR
+KERAC LAZAR
+KERAC LEPOSAVA
+KERAC MILIVOJ
+KERAC MILOŠ
+KERAC MITA
+KERAC PAVLE
+KERAC PAVLE
+KERAC PERA
+KERAC SIMA
+KERAC SONJA
+KERAC SPASA
+KERAC STANA
+KERAC STANISLAVA
+KERAC STEVAN
+KERAC STEVAN
+KERAC TODOR
+KERAC ZLATKO
+KERANOVIĆ MILAN
+KERANOVIĆ STANA
+KERAVČIN MITA
+KERAVČIN SVETOZAR
+KERAVICA DAVID
+KERAVICA JOVAN
+KERAVICA LJUBOMIR
+KERAVICA MILIVOJ
+KERAVICA MILOŠ
+KERAVICA MILOŠ
+KERAVICA MIODRAG
+KERAVICA MIODRAG
+KERAVICA PETAR
+KERAVICA STEVAN
+KERAVICA SVETISLAV
+KEREČKI BRANKO
+KEREČKI DRAGOMIR
+KEREŠEVIĆ ALEKSANDRA
+KEREŠEVIĆ ILONA
+KEREŠEVIĆ STOJANKA
+KEREŠI JULIJANA
+KEREŠI VINCE
+KEREŽI FERENC
+KEREC IVAN
+KEREDŽIN MILAN
+KEREDŽIN MIRJANA
+KEREDŽIN SOFIJA
+KEREKEŠ IŠTVAN DIPL ING
+KEREKEŠ-MALONKA ETELKA
+KERENEC LJILJANA
+KERENJI ALEKSANDAR
+KERESTEŠ JENE
+KERESTEŠ LJUBICA
+KERESTEŠ MARGITA
+KEREZOVIĆ MIHAJLO
+KEREZOVIĆ NEĐO
+KERI DENEŠ
+KERI FRANJO
+KERI JOVAN
+KERIĆ SAVA
+KERKEZ DRAGO
+KERKEZ DUŠANKA
+KERKEZ DUŠAN
+KERKEZ DUŠAN
+KERKEZ GOJKO
+KERKEZ ILIJA
+KERKEZ LAZAR
+KERKEZ MILAN
+KERKEZ MILENKO
+KERKEZ MILICA
+KERKEZ MIRJANA
+KERKEZ MIROSLAV
+KERKEZ MLADEN
+KERKEZ NIKOLA
+KERKEZ PAULINA
+KERKEZ PETAR
+KERKEZ SLOBODAN
+KERKEZ SRETEN
+KERKEZ STEVAN
+KERKEZ STEVAN
+KERKEZ VLADA
+KERKEZ VOJIN
+KERLETA NEĐO
+KERMEC ILONKA
+KERMECI TIBOR
+KERMENDI PETAR
+KERN DANIEL
+KERPEL SOFIJA
+KERSNIK JOŽE
+KERSNIK MIŠA
+KERSTING KATARINA
+KERTES ERŽEBET
+KERTES JANOŠ
+KERTES JANOŠ
+KERTES VILMOŠ
+KERVINA ANTON
+KERVINA ARIJANA
+KESEG LAJOŠ
+KESEG LAJOŠ
+KESEGI GEZA
+KESEGI KAROLJ
+KESEGI VOJISLAV
+KESER DRAGIŠA
+KESEROVIĆ KATARINA
+KESIĆ ŽIVKO
+KESIĆ ĐURA
+KESIĆ BOŠKO
+KESIĆ BORISLAV
+KESIĆ GORAN
+KESIĆ JOVAN
+KESIĆ MARINKO
+KESIĆ MILE
+KESIĆ MILICA
+KESIĆ MILKA
+KESIĆ NEVENKA
+KESIĆ SLOBODAN
+KESIĆ STANOJE DIPL PRAVNIK
+KESLER ANDRIJA DR LEKAR
+KESLER ROBERT
+KETELEŠ ROŽIKA
+KETIG TOMISLAV
+KETIG TOMISLAV
+KEVIĆ MILA
+KEVIĆ OLGA
+KEVIĆ RADE
+KEVILJ BRANKO
+KEVREŠAN EMIL
+KEZEŠI DUŠKO
+KEZIĆ DUŠANKA
+KEZIĆ MIRKO
+KEZIJA MILORAD
+KEZMIĆ BILJANA
+KEZUNOVIĆ MILOVAN
+KEZUNOVIĆ PETKO
+KEZUNOVIĆ RAJKO
+KIČI ERNE
+KIČIN EVA
+KIČINA LAZAR
+KIČINJ ELIZABETA
+KIŠ-ČEPEGI GABOR
+KIŠ-ČEPEGI GABOR
+KIŠ-ČEPEGI RUDOLF
+KIŠ-ČEPEGI TEREZA
+KIŠ ŠANDOR
+KIŠ ŠANDOR
+KIŠ ĐERĐ
+KIŠ ĐERĐ
+KIŠ ALEKSANDAR
+KIŠ ANA
+KIŠ ANDRIJA
+KIŠ BELA
+KIŠ BELA
+KIŠ BOLDIŽAR
+KIŠ BRANKO
+KIŠ DUŠANKA
+KIŠ DUŠICA
+KIŠ ERNEST
+KIŠ ERNE
+KIŠ ESTER
+KIŠ EVA
+KIŠ FERENC
+KIŠ FERENC
+KIŠ FERENC
+KIŠ FRANJO
+KIŠ GEZA
+KIŠ GEZA
+KIŠ GIZELA
+KIŠ HELENA
+KIŠ HENRIJETA
+KIŠ IŠTVAN
+KIŠ IŠTVAN
+KIŠ IŠTVAN
+KIŠ ILONA
+KIŠ ILONKA
+KIŠ IRENA
+KIŠ ISIDOR
+KIŠ IVAN
+KIŠ IVAN
+KIŠ JANKO
+KIŠ JANOŠ
+KIŠ JOŽEF
+KIŠ JOCA
+KIŠ JOSIP
+KIŠ JOSIP
+KIŠ-JOVAK FRANJA
+KIŠ JOZEFINA
+KIŠ JULIJAN
+KIŠ KALMAN
+KIŠ KATALIN
+KIŠ KATICA
+KIŠ KATICA
+KIŠ LACIKA
+KIŠ LASLO
+KIŠ LASLO
+KIŠ MARGITA
+KIŠ MARIJA
+KIŠ MARIJA
+KIŠ MIHALJ
+KIŠ MIJA
+KIŠ MILAN
+KIŠ MILICA
+KIŠ MIRKO
+KIŠ NANDOR
+KIŠ NIKOLA
+KIŠ NIKOLA
+KIŠ OTO
+KIŠ OTO
+KIŠ PAVLE
+KIŠ PERA
+KIŠ PETAR
+KIŠ PETAR
+KIŠ PETAR
+KIŠ ROZALIJA
+KIŠ SLAVICA
+KIŠ SLAVICA
+KIŠ SLOBODAN
+KIŠ STANISLAV
+KIŠ STEVAN
+KIŠ STEVAN
+KIŠ STEVAN
+KIŠ STEVAN
+KIŠ STJEPAN
+KIŠ TIBOR DR
+KIŠ TIBOR
+KIŠ TIBOR
+KIŠ TODOR
+KIŠ VESNA
+KIŠ VIKTORIJA
+KIŠ VLADIMIR
+KIŠ VLADIMIR
+KIŠ VLADIMIR
+KIŠ VLADIMIR
+KIŠ VUKOSAVA
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠ ZOLTAN
+KIŠDOBRANSKI MILIVOJ
+KIŠEGECI JAN DR
+KIŠGECI-DUDAŠ KLARA
+KIŠGECI EMIL
+KIŠGECI IVAN
+KIŠGECI PAVLE
+KIŠGECI STANISLAV
+KIŠGECI STANISLAV
+KIŠGECI STEVAN
+KIŠGECI VLADIMIR
+KIŠJUHAS JAKOV
+KIŠMIŠKA PAL
+KIŠPRDILOV DEJAN
+KIŠPRDILOV ZORAN
+KIĆANOVIĆ BORO
+KIĆANOVIĆ DARINKA
+KIĆANOVIĆ JOKA
+KIĆANOVIĆ MIROSLAV
+KIĆANOVIĆ MITAR
+KIĆANOVIĆ PETAR
+KIĆANOVIĆ RADMILA
+KIĆANOVIĆ RAJKO
+KIĆANOVIĆ ZORAN
+KIŽDOBRANSKI ŽARKO
+KIŽDOBRANSKI LJUBICA
+KIŽDOBRANSKI MILAN
+KIŽDOBRANSKI MILAN
+KIŽDOBRANSKI MILIVOJ
+KIŽDOBRANSKI SAVA
+KIŽEVSKI DIMKO
+KIŽEVSKI MIRA
+KIŽEVSKI VOJISLAV
+KICOŠEV BRANKO
+KICOŠEV LJILJANA
+KICOŠEV MITA
+KICOŠEV SAŠA
+KICOŠEV STOJAN
+KICOŠEVIĆ TRIVA
+KICOŠEVIĆ VLAJKO
+KIJAČKI BRANISLAV
+KIJANOVIĆ MANOJLE
+KIJANOVIĆ STANKO
+KIKANOVIĆ DIMITRIJE
+KIKANOVIĆ DOBRILA
+KIKANOVIĆ MILENIJA
+KIKIĆ-ŠOVLJANSKI LJILJANA
+KIKIĆ MIRKO
+KIKIĆ SMILJA DR
+KIKINĐANIN MIROSLAVA
+KIKINDAI VERA
+KIKOŠ GORDAN
+KIKOŠ JOVAN
+KIKOŠ LAZAR
+KIKOŠ SRBISLAV
+KIKOVIĆ SLAVICA
+KILIĆ NIKOLA
+KILIBARDA MILORAD
+KILIBARDA MITAR
+KILIBARDA PAVLE
+KILIBARDA VLADIMIR
+KILIBARDA VOJISLAV
+KIMPANOV BRANISLAV
+KIMPANOV NATALIJA
+KIMPANOV SLOBODAN
+KIMPANOV SLOBODAN
+KIMPANOV SOFIJA
+KINČEŠ MIHALJ
+KINĐIN SVETOZAR
+KINĐIN VASA
+KINDERNAJ ILIJA
+KINDERNAJ MILAN
+KINDERNAJ OTO
+KINDERNOJ PAVLE
+KINIK JAN
+KINIK PAVLE
+KINJERAN SVETISLAV
+KINKA RITA
+KIPEROVIĆ JOVO
+KIPIĆ ĐULA
+KIPIĆ ANDRIJA
+KIPIĆ ANKA
+KIPIĆ EDITA
+KIPIĆ ERŽEBET
+KIPIĆ ERNE
+KIPIĆ FERENC
+KIPIĆ FRANJA
+KIPIĆ IŠTVAN
+KIPIĆ JOSIP
+KIPIĆ LASLO
+KIPIĆ NANDOR
+KIRČAN EMIL
+KIRŠ JOŽEF
+KIRŠ MILORAD
+KIRŠEK JURAJ
+KIRĆAN SAVA
+KIRĆANSKI BRANKO
+KIRĆANSKI DUŠKO
+KIRĆANSKI IVAN
+KIRĆANSKI MILICA
+KIRĆANSKI OBRAD
+KIRĆANSKI RADIVOJ
+KIRĆANSKI RADOSLAVA
+KIRDA VLADIMIR
+KIRIĆ FRANJO
+KIRIĆ MENKA
+KIRIĆ SLOBODAN
+KIRIĆ STANISLAV
+KIRIDŽIĆ DRAGIŠA
+KIRIDŽIĆ MILOŠ
+KIRIDŽIĆ OBRAD
+KIRILOV ALEKSANDAR
+KIRILOVIĆ ALEKSANDAR
+KIRILOVIĆ DOBRINKA
+KIRILOVIĆ JELENA
+KIRILOVIĆ KRISTA
+KIRILOVIĆ KRISTINA
+KIRILOVIĆ OLGA
+KIRIN ŽELJKO
+KIRIN IVICA
+KIRIN SNEŽANA
+KIRJAKOVIĆ JOVAN
+KIRJAKOVIĆ NIKOLA
+KIRKOV DIMITAR
+KIRKOV VERICA
+KIRN VLADIMIR
+KIROVAKOV VALERIJA
+KIRTIĆ DUŠAN
+KISAČANIN DESANKA
+KISAČANIN DUŠAN
+KISAČANIN MIODRAG DIPL ING
+KISAČANIN MIROSLAV
+KISAČANIN PAVLE
+KISAČANIN SVETOZAR
+KISELIČKI ŽIVKO SUDIJA
+KISELIČKI DANICA
+KISELIČKI FEDOR DR
+KISELIČKI LAZAR DIPL ING
+KISELICA ŽARKO
+KISELICA NADA
+KISELICA PETAR
+KISELICA PETAR
+KISIĆ DUŠAN
+KISIĆ JOVAN
+KISIĆ MIRKO
+KISIĆ SRĐAN
+KISIĆ SVETOZAR
+KISIN ANĐA
+KISIN MILICA
+KISIN MILKA
+KISIN TOMO
+KISLIC IRENA
+KISLOVSKI VLADIMIR
+KISO MILORAD
+KISTER VINKO
+KIT VASILJ
+KITANOVIĆ ŽIVKO
+KITANOVIĆ BRANISLAVA
+KITANOVIĆ KATICA
+KITANOVIĆ LENKA
+KITANOVIĆ MIRJANA
+KITANOVIĆ NEDELJKO
+KITANOVIĆ TOMA
+KITANOVSKI DIMČE
+KITIĆ RADOJKA
+KITIĆ SAVO
+KITIĆ STOJKO
+KITIĆ VELIMIR
+KIURSKI STEVAN DIPL OEC
+KIVOVIĆ ANTONIJA
+KIZA BRANKICA
+KIZIĆ DUŠAN
+KIZIĆ LIDIJA
+KIZIĆ MARKO
+KIZIĆ MIHAILO
+KIZIĆ SAVKA
+KIZIĆ SLOBODAN
+KIZIĆ SLOBODAN
+KIZIĆ SNEŽANA
+KIZIĆ TIHOSLAV
+KIZUR ANDRAŠ
+KIZUR IŠTVAN
+KIZUR JANOŠ
+KIZUR LASLO
+KIZUR PAVEL
+KIZUR VERA
+KLAČAR MILKO
+KLAČAR MILOŠ
+KLAŠNJA ŽARKO
+KLAŠNJA BRANKO
+KLAŠNJA JOVAN
+KLAŠNJA MARIJA
+KLAŠNJA MIKA
+KLAŠNJA MILENA
+KLAŠNJA MILE
+KLAŠNJA MILICA
+KLAŠNJA MIROSLAV
+KLAŠNJA VLADISLAV DR LEKAR
+KLAĆ DRAGAN
+KLAĆIK JOŽEF
+KLAĆIK MARIJA
+KLADUŠIĆ MENSURA
+KLAIĆ ANTO
+KLAIĆ PAVO
+KLAJ PETAR
+KLAJIĆ ĐURA
+KLAJIĆ DANILO
+KLAJIĆ LJUBICA
+KLAJIĆ MAGDALENA
+KLAJIĆ OLGA
+KLAJIĆ ROZALIJA
+KLAJIĆ VALERIJA
+KLAJIĆ VIDA
+KLAJN ALBERT
+KLAJN ANA
+KLAJN DRAGUTIN
+KLAJN IVANKA
+KLAJN IVAN
+KLAJN LAJČO DR
+KLAJN MIROSLAV
+KLAJN VERA
+KLAJNER ESTER
+KLAJNER IŠTVAN
+KLAMAR KARLO
+KLAMIK IMRE
+KLAPAREVIĆ GORAN
+KLAPAREVIĆ SAVA
+KLAPAREVIĆ VASILIJE
+KLARIĆ DUŠANKA
+KLARIĆ GORAN
+KLARIĆ LJUBICA
+KLARIĆ MILIĆ
+KLARIĆ MILORAD
+KLARIĆ OLGA
+KLARIĆ SEKA
+KLASAN ANA
+KLASER ALBERT
+KLASIĆ LADISLAV
+KLASIĆ SAŠA
+KLAUS ERŽEBET
+KLAUS ERŽEBET
+KLAUS LASLO
+KLEBEČKO ŠANDOR
+KLEBEČKO ŠANDOR
+KLEM ADAM DR
+KLEM JOŽEF
+KLEM TEREZA
+KLEMENOVIĆ UROŠ
+KLENOCKI MARIJA
+KLENOVŠEK FRANJA
+KLENOVŠEK TEREZIJA
+KLENOVŠEK ZVONIMIR
+KLEPIĆ ĐURAĐ
+KLEPIĆ NIKOLA
+KLET GEZA
+KLEUT MILAN
+KLEUT RUŽA DR LEKAR
+KLEVERNIĆ BORISLAV
+KLIČEK IRENA
+KLIČKOVIĆ DANICA
+KLIČKOVIĆ KOSTA
+KLIČKOVIĆ VERA
+KLIŠANIĆ JOSIP
+KLIŠANIĆ STANISLAV
+KLICOV ILIJA
+KLIKOVAC MIHAJLO
+KLIKOVAC VELIMIR
+KLIMEŠ DRAGANA
+KLIMEŠ ZORA
+KLINAC UROŠ
+KLINAR IVAN
+KLINCOV NADA
+KLINDŽIĆ STJEPAN
+KLINGER KATICA
+KLINKO JAN
+KLINOCKI ĐERĐ
+KLINOVSKI BRANKO
+KLINOVSKI DRAGAN
+KLINOVSKI DRAGAN
+KLINOVSKI DUŠAN
+KLIPA ŽIVAN
+KLIPA ĐORĐE
+KLIPA JELICA
+KLIPA-KRABES GRETA
+KLIPA LAZAR
+KLIPA MIKA
+KLIR ILONA
+KLIR ROZALIJA
+KLISARA ŽIVKO
+KLISARA ĐORĐE
+KLISARIĆ MIRKO
+KLISIĆ NADA
+KLISKA ANĐELIJA
+KLISKA VOJO
+KLISURA MILOŠ
+KLISURA MOMIR
+KLISURA STAKA
+KLISURIĆ ĐURO
+KLIVINJI JOŽEF
+KLJAIĆ LEPOSAVA
+KLJAIĆ MACA
+KLJAIĆ SIMO
+KLJAIN DRAGINJA
+KLJAIN LAZAR
+KLJAJIĆ ĐORĐE PROFESOR
+KLJAJIĆ ĐORĐE
+KLJAJIĆ ĐORĐE
+KLJAJIĆ BORIVOJE
+KLJAJIĆ BORKA
+KLJAJIĆ BRANKO
+KLJAJIĆ BRANKO
+KLJAJIĆ DANILO
+KLJAJIĆ DRAGAN
+KLJAJIĆ DRAGAN
+KLJAJIĆ DUŠANKA
+KLJAJIĆ ILIJA
+KLJAJIĆ ILIJA
+KLJAJIĆ IVAN
+KLJAJIĆ JELENA
+KLJAJIĆ KOVILJKA
+KLJAJIĆ LUKA
+KLJAJIĆ MARA
+KLJAJIĆ MILAN
+KLJAJIĆ MILEVA
+KLJAJIĆ MIODRAG
+KLJAJIĆ NADA
+KLJAJIĆ OLIVERA
+KLJAJIĆ PETAR
+KLJAJIĆ-RADAKOVIĆ MILICA
+KLJAJIĆ SENKA
+KLJAJIĆ VATA
+KLJAJIĆ VLADO
+KLJAJIĆ VUKICA
+KLJAJIĆ ZDRAVKO
+KLJAKIĆ VUKAŠIN
+KLJEČANIN MIRJANA
+KLJUČOVSKI MAHALJINA
+KLJUČOVSKI NIKOLA
+KLJUTIĆ JASMINA
+KLJUTIĆ OSTOJA
+KLOBUŠICKI VLADISLAV
+KLOPFER ĐORĐE
+KLOPKA KLARA DR
+KLOPKA PIROŠKA
+KMEČ MARTIN
+KMEČKO STEVAN
+KMEĆ JAN DR
+KMEZIĆ IVANKA
+KMEZIĆ MILE
+KMEZIĆ VLADA
+KMICIKEVIĆ ZORAN
+KMICIKOVIĆ MILOJKA
+KNEŠAUREK MARIJA
+KNEŽEV ŽARKO DIPL ING
+KNEŽEV ĐORĐE
+KNEŽEV ĐORĐE
+KNEŽEV ĐURA
+KNEŽEV JELICA
+KNEŽEV LJILJANA
+KNEŽEVIĆ ŽARKO
+KNEŽEVIĆ ŽELJKO
+KNEŽEVIĆ ŽELJKO
+KNEŽEVIĆ ŽELJKO
+KNEŽEVIĆ ŽIVKA
+KNEŽEVIĆ ŽIVKO
+KNEŽEVIĆ ŽIVOJIN
+KNEŽEVIĆ ŽIVOJIN
+KNEŽEVIĆ ĐINE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐORĐE
+KNEŽEVIĆ ĐURA
+KNEŽEVIĆ ĐURA
+KNEŽEVIĆ ĐURO
+KNEŽEVIĆ ALEKSANDAR
+KNEŽEVIĆ ALEKSANDAR
+KNEŽEVIĆ ALEKSANDAR
+KNEŽEVIĆ ALEKSANDRA
+KNEŽEVIĆ ALEKSA
+KNEŽEVIĆ ANĐELKO
+KNEŽEVIĆ ANICA
+KNEŽEVIĆ ANICA
+KNEŽEVIĆ ARKADIJA
+KNEŽEVIĆ BOŠKO
+KNEŽEVIĆ BOŽO
+KNEŽEVIĆ BOGDAN
+KNEŽEVIĆ BOGDAN
+KNEŽEVIĆ BOGDAN
+KNEŽEVIĆ BORISLAV
+KNEŽEVIĆ BORIS
+KNEŽEVIĆ BORKA
+KNEŽEVIĆ BOSILJKA
+KNEŽEVIĆ BRANIMIR
+KNEŽEVIĆ BRANKO
+KNEŽEVIĆ BRANKO
+KNEŽEVIĆ CVIJO
+KNEŽEVIĆ DOBRIVOJE
+KNEŽEVIĆ DRAGAN
+KNEŽEVIĆ DRAGAN
+KNEŽEVIĆ DRAGAN
+KNEŽEVIĆ DRAGAN
+KNEŽEVIĆ DRAGIŠA
+KNEŽEVIĆ DRAGICA
+KNEŽEVIĆ DRAGICA
+KNEŽEVIĆ DRAGOLJUB
+KNEŽEVIĆ DRAGOLJUB
+KNEŽEVIĆ DUŠANKA
+KNEŽEVIĆ DUŠAN
+KNEŽEVIĆ DUŠAN
+KNEŽEVIĆ DUŠAN
+KNEŽEVIĆ DUŠAN
+KNEŽEVIĆ GLIŠA
+KNEŽEVIĆ GORDANA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ ILIJA
+KNEŽEVIĆ IVANKA
+KNEŽEVIĆ IVAN
+KNEŽEVIĆ IVAN
+KNEŽEVIĆ JELA
+KNEŽEVIĆ JELENA
+KNEŽEVIĆ JELENA
+KNEŽEVIĆ JELISAVKA
+KNEŽEVIĆ JOSIP
+KNEŽEVIĆ JOVANKA
+KNEŽEVIĆ JOVANKA
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVAN
+KNEŽEVIĆ JOVO
+KNEŽEVIĆ JUGOSLAV
+KNEŽEVIĆ KRSTAN
+KNEŽEVIĆ LATINKA
+KNEŽEVIĆ LAZAR
+KNEŽEVIĆ LAZAR
+KNEŽEVIĆ LJILJANA
+KNEŽEVIĆ LJUBOMIR
+KNEŽEVIĆ LJUBOMIR
+KNEŽEVIĆ LJUBOMIR
+KNEŽEVIĆ MANE
+KNEŽEVIĆ MARICA
+KNEŽEVIĆ MARICA
+KNEŽEVIĆ MARIJA
+KNEŽEVIĆ MARIJA
+KNEŽEVIĆ MARIJA
+KNEŽEVIĆ MARIJA
+KNEŽEVIĆ MARKO
+KNEŽEVIĆ MIĆA
+KNEŽEVIĆ MIHAJLO
+KNEŽEVIĆ MIHAJLO
+KNEŽEVIĆ MIHAJLO
+KNEŽEVIĆ MIHAJLO
+KNEŽEVIĆ MILADIN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILAN
+KNEŽEVIĆ MILICA
+KNEŽEVIĆ MILIJANA
+KNEŽEVIĆ MILIVOJ
+KNEŽEVIĆ MILKA
+KNEŽEVIĆ MILOŠ
+KNEŽEVIĆ MILOMIR
+KNEŽEVIĆ MILONJA
+KNEŽEVIĆ MILONJA
+KNEŽEVIĆ MILORAD
+KNEŽEVIĆ MILUTIN
+KNEŽEVIĆ MIODRAG
+KNEŽEVIĆ MIODRAG
+KNEŽEVIĆ MIODRAG
+KNEŽEVIĆ MIRJANA
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIRKO
+KNEŽEVIĆ MIROSLAV
+KNEŽEVIĆ MIROSLAV
+KNEŽEVIĆ MLADEN
+KNEŽEVIĆ MOMČILO
+KNEŽEVIĆ MOMIR
+KNEŽEVIĆ MOMIR
+KNEŽEVIĆ MOMIR
+KNEŽEVIĆ NADA
+KNEŽEVIĆ NADEŽDA
+KNEŽEVIĆ NENAD
+KNEŽEVIĆ NEVENA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ NIKOLA
+KNEŽEVIĆ PANTA
+KNEŽEVIĆ PAVLE
+KNEŽEVIĆ PERA
+KNEŽEVIĆ PETAR
+KNEŽEVIĆ PETAR
+KNEŽEVIĆ PETAR
+KNEŽEVIĆ PETAR
+KNEŽEVIĆ PETKO
+KNEŽEVIĆ RADA
+KNEŽEVIĆ RADE
+KNEŽEVIĆ RADIVOJE
+KNEŽEVIĆ RADIVOJE
+KNEŽEVIĆ RADMILA
+KNEŽEVIĆ RADOMIR
+KNEŽEVIĆ RADOSLAV
+KNEŽEVIĆ RAJKO
+KNEŽEVIĆ RANKO
+KNEŽEVIĆ RISTO
+KNEŽEVIĆ ROZA
+KNEŽEVIĆ SAVO
+KNEŽEVIĆ SINIŠA
+KNEŽEVIĆ SLAVKO
+KNEŽEVIĆ SLAVKO
+KNEŽEVIĆ SLAVOLJUB
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SLOBODAN
+KNEŽEVIĆ SPASENIJA
+KNEŽEVIĆ SRBISLAVA
+KNEŽEVIĆ STANA
+KNEŽEVIĆ STANIŠA
+KNEŽEVIĆ STANIMIR
+KNEŽEVIĆ STANKO
+KNEŽEVIĆ STEVAN
+KNEŽEVIĆ STEVO
+KNEŽEVIĆ STEVO
+KNEŽEVIĆ STIPE
+KNEŽEVIĆ STOJAN
+KNEŽEVIĆ SVETKO
+KNEŽEVIĆ SVETO
+KNEŽEVIĆ TEODOR
+KNEŽEVIĆ TOMISLAV
+KNEŽEVIĆ UROŠ
+KNEŽEVIĆ VASILIJA
+KNEŽEVIĆ VERA
+KNEŽEVIĆ VERA
+KNEŽEVIĆ VLADIMIR
+KNEŽEVIĆ VLADIMIR
+KNEŽEVIĆ VLASTIMIR
+KNEŽEVIĆ VLASTIMIR
+KNEŽEVIĆ VOJIN
+KNEŽEVIĆ VUKOSAV
+KNEŽEVIĆ ZDRAVKO
+KNEŽEVIĆ ZLATAN
+KNEŽEVIĆ ZORAN
+KNEŽEVIĆ ZORAN
+KNEŽEVIĆ ZORA
+KNEŽIĆ OLGA
+KNEŽIĆ RADOMIR
+KNEBL FRANJA
+KNEBL NIKOLA
+KNEGIĆ MIROSLAV
+KNER DEZIDER
+KNESELAC BRANISLAVA
+KNEZ ZLATKO
+KNEZI IVAN
+KNEZI JOŽEF
+KNEZI SLOBODAN
+KNJEŠKO ŽUŽANA
+KNJEŠKO ALBERT
+KOČAR LASLO
+KOČAR STEFANIJA
+KOČAR TIHOMIR
+KOČETOV TATJANA
+KOČI ETELKA
+KOČI IŠTVAN
+KOČI VLADIMIR
+KOČIŠ ĐURA
+KOČIŠ ANDRIJA
+KOČIŠ ANDRIJA
+KOČIŠ ERNEST
+KOČIŠ GERGELJ DIPL ING
+KOČIŠ HELENA
+KOČIŠ IŠTVAN
+KOČIŠ JAKOV
+KOČIŠ JANKO
+KOČIŠ JANOŠ
+KOČIŠ KARLO
+KOČIŠ MARIJA
+KOČIŠ MIHAJLO
+KOČIŠ NIKOLA PROFESOR
+KOČIŠ RADE
+KOČIŠ VLADIMIR
+KOČIŠ VLADIMIR
+KOČIĆ DRAGO
+KOČIĆ MANE
+KOČIĆ MILORAD
+KOČIĆ STANISLAV
+KOČOBA RADISLAV
+KOČOSKI PETAR
+KOČOVIĆ ALEKSANDAR
+KOČOVIĆ MILETA
+KOŠĆAK SAVKA
+KOŠA TIBOR DIPL ING
+KOŠANIN MILOMIR
+KOŠANJI FERENC
+KOŠARIĆ DIMITRIJE
+KOŠIĆ LJUBICA
+KOŠIĆ MITA
+KOŠIĆ STEVAN
+KOŠIĆ STEVO
+KOŠIĆ VASILIJE
+KOŠICKI LEA
+KOŠICKI MARIJA
+KOŠNIČAR MILAN
+KOŠNIČAR SOFIJA
+KOŠOCKI MARIJA
+KOŠUTIĆ ĐURO
+KOŠUTIĆ ĐURO
+KOŠUTIĆ BOŽIDAR
+KOŠUTIĆ BRANKO
+KOŠUTIĆ DIMITRIJE
+KOŠUTIĆ DUŠAN
+KOŠUTIĆ JOVAN
+KOŠUTIĆ KOSTA
+KOŠUTIĆ MANE
+KOŠUTIĆ MILOŠ
+KOŠUTIĆ NIKOLA
+KOĆALO RADOJICA
+KOŽUL GOJKO
+KOŽUL GOJKO
+KOŽUL RAJKO
+KOŽUVARA GAVRA
+KOBAŠ JOSIP
+KOBAŠ KATICA
+KOBAŠ VUKAŠIN
+KOBAL ĐURA
+KOBAL BOŽIDAR
+KOBAL IRIS
+KOBAL IVAN
+KOBILARIĆ ĐURĐICA
+KOBILAROV ANGELINA
+KOBILAROV LJUBOMIR
+KOBILAROV MILANKA
+KOBILAROV MILOŠ
+KOBILAROV MIROSLAV
+KOBILAROV NEGOVAN
+KOBILAROV NESTOR
+KOBILAROV SIMA
+KOBILAROV TOŠA
+KOBILAROV VASA
+KOBILJSKI ĐORĐE
+KOBILJSKI DOBRILA
+KOBILJSKI DRAGOMIR
+KOBILJSKI DUŠAN
+KOBILJSKI LAZAR
+KOBILJSKI MILOŠ
+KOBILJSKI MIRJANA
+KOBILJSKI MLADEN
+KOBILJSKI NIKOLA
+KOBILJSKI STEVAN
+KOBILJSKI VIDA
+KOBILSKI MARIJA
+KOBREHEL LAJOŠ
+KOCAP MARIJA
+KOCAP MIRA
+KOCAP VLADIMIR
+KOCI FERENC
+KOCI REŽE
+KOCIĆ ŽIKICA
+KOCIĆ ALEKSANDAR
+KOCIĆ ANICA
+KOCIĆ DUŠANKA
+KOCIĆ JASNA
+KOCIĆ LJILJANA
+KOCIĆ MILIJANA
+KOCIĆ RADMILA
+KOCIĆ SINIŠA
+KOCIĆ SLAĐANA
+KOCIĆ SLAVKO
+KOCIĆ TOMISLAV
+KOCIĆ VASILIJE
+KOCIĆ VELINKA
+KOCIĆ ZVEZDAN
+KOCIJANČIĆ MIRA
+KOCKAR BORISLAV
+KOCKAR BORISLAV
+KOCKAR LJUBOMIR
+KOCKAR VLADIMIR
+KOCKAREVIĆ BRANISLAV
+KOCKAREVIĆ JOVAN
+KOCKAREVIĆ MILICA
+KOCO ŠANDOR
+KOCO ERŽEBET
+KOCOLJEVAC STANISLAV
+KODŽO SAŠA
+KODŽO ZORAN
+KODIĆ DIMITRIJE
+KODRANOV RADOVAN
+KODRANOV SREDOJE
+KODRIN LJUDMILA
+KOGOJ EDUARD
+KOGOJ EMA
+KOH JOŽEF
+KOH SAVETA
+KOHANEC ŠANDOR
+KOHANEC FRANJA
+KOHANEC GAŠPAR
+KOHANEC JOVAN
+KOHANEC MARIJA
+KOHANEC PAL
+KOHUT ĐURA
+KOHUT STOJA
+KOJČIĆ ANĐELKO
+KOJČIĆ DRAGICA
+KOJČIĆ IVANA
+KOJČIĆ PREDRAG
+KOJČIĆ SREDOJE DR
+KOJČIN DŽEMILJA
+KOJČIN MILEVA
+KOJADINOVIĆ ŽIVKO
+KOJADINOVIĆ BOŠKO
+KOJADINOVIĆ BORO
+KOJADINOVIĆ GORDANA
+KOJADINOVIĆ KATA
+KOJADINOVIĆ MIRA
+KOJADINOVIĆ RADE
+KOJADINOVIĆ STOJAN
+KOJADINOVIĆ VLADIMIR
+KOJDIĆ MIRJANA
+KOJDIĆ MLADEN
+KOJDIĆ PETAR
+KOJIČIĆ NOVKA
+KOJIČIĆ TOMISLAV
+KOJIČIN MILAN
+KOJIĆ ČEDOMIR
+KOJIĆ ŽIVAN
+KOJIĆ ĐURAĐ
+KOJIĆ ALEKSANDAR
+KOJIĆ ALEKSANDAR
+KOJIĆ ALEKSANDAR
+KOJIĆ ARSEN
+KOJIĆ BOŠKO
+KOJIĆ-BOŽANIĆ SOFIJA
+KOJIĆ BORIVOJ
+KOJIĆ BRANISLAV
+KOJIĆ DANICA
+KOJIĆ DRAGAN
+KOJIĆ DRAGAN
+KOJIĆ DRAGAN
+KOJIĆ DRAGAN
+KOJIĆ DRAGINJA
+KOJIĆ DUŠAN
+KOJIĆ ERŽEBET
+KOJIĆ GORAN
+KOJIĆ GORAN
+KOJIĆ GORAN
+KOJIĆ HRISTIFOR
+KOJIĆ IVAN
+KOJIĆ IVAN
+KOJIĆ IVAN
+KOJIĆ JOVANKA
+KOJIĆ JOVANKA
+KOJIĆ JOVO
+KOJIĆ LEPOSAVA
+KOJIĆ LJUBICA
+KOJIĆ LJUBODRAG
+KOJIĆ LUKA
+KOJIĆ MIHAILO
+KOJIĆ MILAN
+KOJIĆ MILAN
+KOJIĆ MILAN
+KOJIĆ MILAN
+KOJIĆ MILENA
+KOJIĆ MILENA
+KOJIĆ MILENKO
+KOJIĆ MILENKO
+KOJIĆ MILENKO
+KOJIĆ MILOVINA
+KOJIĆ MIODRAG
+KOJIĆ MIRJANA
+KOJIĆ MOMČILO
+KOJIĆ NEĐO
+KOJIĆ NEBOJŠA
+KOJIĆ NEBOJŠA
+KOJIĆ NEDELJKO
+KOJIĆ OLGICA
+KOJIĆ PETAR
+KOJIĆ RADIVOJ
+KOJIĆ RUŽICA
+KOJIĆ RUŽICA
+KOJIĆ SAVO
+KOJIĆ SIMEON
+KOJIĆ SINIŠA
+KOJIĆ SPASENIJA
+KOJIĆ STEVAN
+KOJIĆ STEVAN
+KOJIĆ STEVAN
+KOJIĆ SVETISLAV
+KOJIĆ UGLJEŠA
+KOJIĆ VASA
+KOJIĆ VELIMIR
+KOJIĆ VINKA
+KOJIĆ VLADISLAV
+KOJOVIĆ ŽARKO
+KOJOVIĆ MILINKO
+KOKAI ŠANDOR
+KOKAI ŠANDOR
+KOKAI ŠANDOR
+KOKAI ALISA
+KOKAI ELENA
+KOKAI FERENC
+KOKAI FERENC
+KOKAI FERENC
+KOKAI LADISLAV
+KOKAI LASLO
+KOKAI MAGDOLNA
+KOKAI MIHAJLO
+KOKAI TIBOR
+KOKAN IVAN
+KOKANOV MILETA
+KOKANOVIĆ DUŠAN
+KOKANOVIĆ KOVILJKA
+KOKAR VERICA
+KOKAR VILMA
+KOKELJ TUGOMIR
+KOKEZA ŽARKO
+KOKEZA DUŠAN
+KOKEZA MILENA
+KOKIĆ JOVAN
+KOKIĆ MIROSLAV
+KOKINOVIĆ SLAVKO
+KOKIR LJUBO
+KOKORUŠ OSTOJA
+KOKOT RADE
+KOKOT SMILJA
+KOKOT SRETA
+KOKOT SVETLANA
+KOKOT VICO
+KOKOTOVIĆ ŽIVKO
+KOKOTOVIĆ BOŽIDAR
+KOKOTOVIĆ GOJKO
+KOKOTOVIĆ ILIJA
+KOKOTOVIĆ IVICA
+KOKOTOVIĆ JELISAVETA
+KOKOTOVIĆ KATICA
+KOKOTOVIĆ PETAR
+KOKOTOVIĆ SNEŽANA
+KOKOTOVIĆ VESELIN
+KOKOVIĆ DRAGAN
+KOKOVIĆ GORAN
+KOLĐERAJ ĐON
+KOLAČARIĆ VELIBOR
+KOLAŠINAC LJUBOMIR
+KOLAK DUŠAN
+KOLAK JELENA
+KOLAK MILAN
+KOLAKOVIĆ ALMAZ
+KOLAKOVIĆ JURE
+KOLAKOVIĆ MILE
+KOLAKOVIĆ ZDRAVKO
+KOLAKUŠIĆ IVICA
+KOLAKVIĆ LJILJANA
+KOLANO ANTON
+KOLANO DRAGOSLAV
+KOLANO IVAN
+KOLANO JULKA
+KOLAR ANA
+KOLAR ANA
+KOLAR ANDRIJA
+KOLAR ANTAL
+KOLAR DARKO
+KOLAR IBOLJKA
+KOLAR IVAN
+KOLAR JOSIP
+KOLAR JOSIP
+KOLAR JULIJANA
+KOLAR LAJOŠ
+KOLAR LASLO
+KOLAR LOZINKA
+KOLAR MATIJA
+KOLAR MILICA
+KOLAR MIRKO
+KOLAR PAVLE
+KOLAR PETAR
+KOLARŠ ŠTEFAN
+KOLAREVIĆ LJUBICA
+KOLARIĆ ALEKSANDRA
+KOLARIĆ BRANKO
+KOLARIĆ BRIGITA
+KOLARIĆ DOBRILA
+KOLARIĆ DRAGICA
+KOLARIĆ DRAGOLJUB
+KOLARIĆ DUŠAN
+KOLARIĆ FILIP
+KOLARIĆ IDA
+KOLARIĆ KOSTA
+KOLARIĆ MARIJA
+KOLARIĆ MARIJA
+KOLARIĆ MILAN
+KOLARIĆ MILAN
+KOLARIĆ MILIVOJ
+KOLARIĆ MLADEN
+KOLARIĆ NADA
+KOLARIĆ NEMANJA
+KOLARIĆ NIKOLA
+KOLARIĆ RADOVAN
+KOLARIĆ SLAVKO
+KOLARIĆ SLOBODAN
+KOLARIĆ SLOBODAN
+KOLARIĆ SNEŽANA
+KOLARIĆ STEVAN
+KOLARIĆ TOMISLAV
+KOLARIĆ VOJA
+KOLARIĆ ZORAN
+KOLARIĆ ZVONKO
+KOLAROV ŽIVA
+KOLAROV ĐORĐE
+KOLAROV ALEKSANDAR
+KOLAROV DIMITRIJE
+KOLAROV DRAGOSLAV
+KOLAROV DRAGOSLAV
+KOLAROV GOJKO
+KOLAROV JOVAN
+KOLAROV JOVAN
+KOLAROV JULKA
+KOLAROV KATE
+KOLAROV LJILJANA
+KOLAROV MARICA
+KOLAROV MILANKA
+KOLAROV MILIVOJ
+KOLAROV MILOŠ
+KOLAROV MOMIR
+KOLAROV NADA DR LEKAR
+KOLAROV NEBOJŠA
+KOLAROV PAVLE
+KOLAROV PETAR
+KOLAROV RADOJKO
+KOLAROV-RADOVANOVIĆ MARINA
+KOLAROV SAVA
+KOLAROV TODOR
+KOLAROV TOMISLAV
+KOLAROV VOJISLAV
+KOLAROVIĆ ŽIVKO
+KOLAROVIĆ JELENA
+KOLAROVIĆ KATICA
+KOLAROVIĆ KOVINKA
+KOLAROVIĆ LUKA DR
+KOLAROVIĆ MIHAJLO
+KOLAROVIĆ MILICA
+KOLAROVIĆ NENAD
+KOLARSKI ĐORĐE
+KOLARSKI ALEKSANDAR
+KOLARSKI ANICA
+KOLARSKI ARPAD
+KOLARSKI BOSILJKA
+KOLARSKI BRANISLAV
+KOLARSKI DANICA
+KOLARSKI DUŠANKA DIPL OEC
+KOLARSKI JOVAN
+KOLARSKI JOVAN
+KOLARSKI KATICA
+KOLARSKI LASLO
+KOLARSKI LAZAR
+KOLARSKI MILADIN
+KOLARSKI MILAN
+KOLARSKI MILENKO VETERINAR
+KOLARSKI MILENKO
+KOLARSKI MILICA
+KOLARSKI MITAR
+KOLARSKI MLADEN
+KOLARSKI MLADEN
+KOLARSKI NADA
+KOLARSKI NIKOLA
+KOLARSKI RADMILA
+KOLARSKI RADOSLAV
+KOLARSKI RADOVAN
+KOLARSKI RADOVAN
+KOLARSKI SLAVICA
+KOLARSKI STEVAN
+KOLARSKI STEVAN
+KOLARSKI TODOR
+KOLARSKI VERA
+KOLARSKI ZDRAVKO
+KOLBAS DANIJEL
+KOLBAS JANKO
+KOLBAS JOAKIM
+KOLBAS MELANIJA
+KOLBAS MILEVA
+KOLBAS VLADA
+KOLDŽIĆ BRANKA
+KOLDŽIĆ BRANKO
+KOLDŽIN MIRKO
+KOLDŽIN VESELIN
+KOLDAN MILENKO
+KOLEŠKA EDUARD
+KOLEDAR ANDRIJA
+KOLEDIN ĐORĐE
+KOLEDIN FOTIJE
+KOLEDIN MILOŠ
+KOLEDIN MIRJANA
+KOLEDIN PETAR
+KOLEDIN RADOSLAV
+KOLEDIN RADOVAN
+KOLEDIN RADOVAN
+KOLEDIN STEVAN
+KOLEDIN VELIMIR
+KOLEDIN VERA
+KOLER ANTAL
+KOLER LAJOŠ
+KOLESAR ĐURA
+KOLESAR ANICA
+KOLESAR FEDOR
+KOLESAR FERENC
+KOLESAR GAVRA
+KOLESAR JANOŠ
+KOLESAR JOVAN
+KOLESAR JOVAN
+KOLESAR JULIJAN
+KOLESAR JULIJAN
+KOLESAR KATICA
+KOLESAR KSENIJA
+KOLESAR MIHAJLO
+KOLESAR PETAR DR
+KOLESAR PETAR
+KOLESAR SIMEON
+KOLESAR VERA
+KOLESAR VLADIMIR
+KOLESAR ZORICA
+KOLESARIĆ VINKO
+KOLEV TODORKA
+KOLIĆ AIŠA
+KOLIN JOŽEF NOVINAR
+KOLJADŽINSKI JOVAN
+KOLJADŽINSKI STEFANIJA
+KOLJAJA BLAGOJE
+KOLJAJA DRAGAN
+KOLJAJA GORAN
+KOLJANIN PETAR
+KOLMAN JOŽEF
+KOLOČAI JOSIP
+KOLOŠNJAI MIRON
+KOLOŠNJAJI JANKO
+KOLOŠNJAJI VLADIMIR
+KOLOPIĆ PETAR
+KOLOPIĆ RUŽICA
+KOLOVIĆ STEVAN
+KOLTIN BRANKO
+KOLUNDŽIĆ ŽIVKA
+KOLUNDŽIĆ ĐURA
+KOLUNDŽIĆ ANKA
+KOLUNDŽIĆ PERICA
+KOLUNDŽIĆ SLAVKO
+KOLUNDŽIĆ SLAVKO
+KOLUNDŽIJA ANĐELKA
+KOLUNDŽIJA BORISLAV
+KOLUNDŽIJA DAVORKA
+KOLUNDŽIJA DRAGAN
+KOLUNDŽIJA LAZAR
+KOLUNDŽIJA LJUBOMIR
+KOLUNDŽIJA MIRKO
+KOLUNDŽIJA NADA
+KOLUNDŽIJA NIKOLA
+KOLUNDŽIJA ZORKA
+KOLUTAC MATIJA
+KOMŠIĆ JOVAN
+KOMŠO NIKOLA
+KOMAD ANA
+KOMAD GOJKO
+KOMAD RATOMIR
+KOMAD TOMISLAV
+KOMADANOVIĆ MOMČILO
+KOMADANOVIĆ MOMIR
+KOMADARIĆ MILOŠ
+KOMADINA MANE
+KOMADINA VELISLAV
+KOMADINA VUJADIN
+KOMADINIĆ MILORAD
+KOMADINOVIĆ DUŠAN
+KOMADINOVIĆ MIRA
+KOMADINOVIĆ RADOSLAV
+KOMAN BOSILJKA
+KOMANOV MARIJA
+KOMAR GOJKO DIPL ING
+KOMAR RADIVOJE
+KOMAR SLAVKA
+KOMAR SLOBODAN
+KOMAR ZORKA
+KOMARČEVIĆ ALEKSANDAR
+KOMARČEVIĆ IŠTVAN
+KOMARČEVIĆ MILENA
+KOMARČEVIĆ MILINKO DR
+KOMARČEVIĆ MIROSLAV
+KOMARČEVIĆ VLADIMIR
+KOMARICA MARKO
+KOMARICA NOVKO
+KOMARICA RADMILA
+KOMAROMI ĐORĐE
+KOMAROMI ANĐELKA
+KOMAROMI BORBALA
+KOMAROMI BORJANKA
+KOMAROMI BORJANKA
+KOMAROMI IRMA
+KOMAROMI KLARA
+KOMAROMI MAGDOLNA
+KOMAROMI MAGDOLNA
+KOMAROMI MARIJA
+KOMAROMI PETAR
+KOMAROMI ZOLTAN
+KOMAROV ALEKSANDAR DIPL ING
+KOMAROV ALEKSANDAR
+KOMAROV BRANKA
+KOMAROV DRAGICA
+KOMAROV DRAGOMIR
+KOMATINA DRAGAN
+KOMATINOVIĆ MIHAJLO
+KOMATOVIĆ MILAN
+KOMATOVIĆ VELIMIR
+KOMAZEC DRAGOMIR
+KOMAZEC PETAR
+KOMBERI AVDUŠ
+KOMBILJ VERA
+KOMENDA ANDRIJA
+KOMINKO LJUBICA
+KOMLENIĆ ĐORĐE
+KOMLENOV ŽIVAN
+KOMLENOV ĐORĐE
+KOMLENOV JOVAN
+KOMLENOVIĆ MARIJA
+KOMLENOVIĆ MILAN
+KOMLENOVIĆ MILE
+KOMLENOVIĆ VELJKO
+KOMLENSKI ŽIVAN
+KOMLENSKI-DELIĆ VUKOSAVA DR
+KOMLENSKI ZORAN
+KOMLJENOVIĆ ALEKSANDRA
+KOMLJENOVIĆ BOŠKO
+KOMLJENOVIĆ MILAN
+KOMLJENOVIĆ MOMIR
+KOMLJENOVIĆ STEVAN
+KOMLJENOVIĆ VLADO
+KOMLUŠAN BOŽA
+KOMLUŠKI IVANA MR
+KOMNENIĆ IVANKA
+KOMNENOV ŠARLOTA
+KOMNENOV MILORAD
+KOMNENOV NIKOLA
+KOMNENOV SANDRA
+KOMNENOV STANISLAV
+KOMNENOV VESELINA
+KOMNENOV VLADIMIR DR
+KOMNENOVIĆ ŽIVAN
+KOMNENOVIĆ BRANKO
+KOMNENOVIĆ DEJAN
+KOMNENOVIĆ JELENA
+KOMNENOVIĆ LJUBOJE
+KOMNENOVIĆ MILAN
+KOMNENOVIĆ RADOSLAV
+KOMNENOVIĆ STANKO
+KOMNENOVIĆ STOJAN
+KOMNENOVIĆ VERICA
+KOMOSAR BRANKO
+KOMOSAR RAJKO
+KOMOZEC ĐORĐE
+KOMOZEC LAZAR
+KON SLOBODANKA
+KON STEVAN
+KON TOMAŽ
+KONČAR ANDRIJA
+KONČAR BOSILJKA
+KONČAR JOVO
+KONČAR LADISLAV
+KONČAR MIRA
+KONČAR MITAR
+KONČAR NIKOLA
+KONČAR NIKOLA
+KONČAR RANKO
+KONČAR SLAVKO
+KONČAR ZORA
+KONČAR ZORA
+KONČAREVIĆ DANICA
+KONČAREVIĆ ILIJA
+KONČEK ROZALIJA
+KONAKOV NEDELJKO
+KONC ŠANDOR
+KONC IŠTVAN
+KONC ILONA
+KONC LJILJANA
+KONC ZORANKA
+KONDAN MARGARETA
+KONDIĆ ANA
+KONDIĆ ANKA
+KONDIĆ BRANKO
+KONDIĆ DRAGAN
+KONDIĆ DRAGICA
+KONDIĆ DRAGOLJUB
+KONDIĆ DUŠANKA
+KONDIĆ JOVAN
+KONDIĆ LJUBICA
+KONDIĆ MILENKO
+KONDIĆ MIRA
+KONDIĆ NEBOJŠA
+KONDIĆ NEMANJA
+KONDIĆ NIKOLA
+KONDIĆ NIKOLA
+KONDIĆ RADMILA
+KONDIĆ RADOJKA
+KONDIĆ RAJKO
+KONDIĆ SANDRA
+KONDIĆ TRIVO
+KONDIĆ ZDRAVKO
+KONDIĆ ZORKA
+KONDOJANI ĐORĐE
+KONDRAK STOJAN
+KONDRATJEV ŠTEFANIJA
+KONEČNI MARIJA
+KONECKI ZLATKO
+KONECKI ZLATKO
+KONEN ROBERT
+KONEN ROBERT
+KONESKA LJILJANA
+KONGO VERA
+KONJATIĆ ŠIMO
+KONJEVIĆ ŽIVA DIPL PRAVNIK
+KONJEVIĆ ANA
+KONJEVIĆ DANILO
+KONJEVIĆ DOBRIVOJ
+KONJEVIĆ DRAGOMIR
+KONJEVIĆ GROZDANA
+KONJEVIĆ IVANKA
+KONJEVIĆ MILEVA
+KONJEVIĆ MILIVOJ
+KONJEVIĆ MLAĐEN
+KONJEVIĆ MLADEN
+KONJEVIĆ NENAD
+KONJEVIĆ PREDRAG
+KONJEVIĆ PREDRAG
+KONJEVIĆ PREDRAG
+KONJEVIĆ STANISLAV
+KONJEVIĆ STANISLAV
+KONJIĆ STOJANKA
+KONJIK NADA
+KONJIK VIDOJE
+KONJOVIĆ BRANISLAV
+KONJOVIĆ JOVAN
+KONJOVIĆ MAKSIM
+KONJOVIĆ MILAN
+KONJOVIĆ MIRJANA
+KONJOVIĆ NIKOLA
+KONJOVIĆ RADOSLAVA
+KONJOVIĆ SMILJA
+KONJOVIĆ SOFIJA
+KONJOVIĆ TINKA
+KONJOVIĆ VERA
+KONKOL MIHAJLO
+KONKOLJ MARIJA
+KONOPEK STANIMIR
+KONRAD FRANJA
+KONRAD MIRČA
+KONRAD PAVLE
+KONSTANTIN BUHA
+KONSTANTINIDIS DIMITRIJE
+KONSTANTINIDIS GEORGIOS
+KONSTANTINIDIS TEODOR
+KONSTANTINIDU SOFIJA
+KONSTANTINOVIĆ ANĐELIJA
+KONSTANTINOVIĆ BLAGOJE
+KONSTANTINOVIĆ HERMINA
+KONSTANTINOVIĆ JELICA
+KONSTANTINOVIĆ JORDAN
+KONSTANTINOVIĆ JOVAN
+KONSTANTINOVIĆ LJILJANA
+KONSTANTINOVIĆ LUKA
+KONSTANTINOVIĆ MIRJANA
+KONSTANTINOVIĆ NIKOLA
+KONSTANTINOVIĆ PETAR
+KONSTANTINOVIĆ VERA
+KONSTANTINOVIĆ ZVONIMIR
+KONTIĆ DOBRIVOJ
+KONTIĆ JOVANKA
+KONTIĆ MILAN
+KONTIĆ SLAVICA
+KONTRIĆ JOVAN
+KOPČANSKI ŽELJKO
+KOPČANSKI IRINA
+KOPČANSKI NIKOLA
+KOPČANSKI PETAR
+KOPČANSKI RADMILA
+KOPČANSKI STEVAN
+KOPČANSKI VLADA
+KOPČOK ANA
+KOPČOK KATICA
+KOPČOK MIŠA
+KOPČOK SANDRA
+KOPANJA DANILO
+KOPANJA DRAGOMIR
+KOPANJA DUŠAN
+KOPANJA DUŠAN
+KOPANJA GOJKO
+KOPANJA GOJKO
+KOPANJA ILIJA
+KOPANJA LJUPKO
+KOPANJA MIĆO
+KOPANJA MIODRAG
+KOPANJA MITAR
+KOPANJA RANISLAV
+KOPANJA ROSA
+KOPANJA VID
+KOPAS JANOŠ
+KOPEREC ALEKSANDAR
+KOPEREC ANDRIJA
+KOPEREC JANOŠ
+KOPEREC JOVAN
+KOPEREC STEVAN
+KOPEREC STEVAN
+KOPESTENSKI KATICA
+KOPESTINSKIJ REGINA
+KOPIĆ ILONA
+KOPICL RUDOLF
+KOPILOVIĆ JOSIP
+KOPILOVIĆ MARGA
+KOPILOVIĆ-MIJATOV DRAGICA
+KOPILOVIĆ PAVLE
+KOPITOVIĆ ŠPIRO
+KOPITOVIĆ PETAR
+KOPLANJI MARIJA
+KOPLANJI MIROSLAVA
+KOPLIĆ ĐORĐE
+KOPLIĆ DANICA
+KOPLIĆ DUŠAN
+KOPLIĆ MILE
+KOPRENOVIĆ RADOJKA
+KOPRIVŠEK ZVONIMIR
+KOPRIVICA ANGELINA
+KOPRIVICA BOŽIDAR
+KOPRIVICA BOŽIDAR
+KOPRIVICA BORISLAV
+KOPRIVICA GORDANA
+KOPRIVICA LJILJANA
+KOPRIVICA MILENKO
+KOPRIVICA MILUTIN
+KOPRIVICA MIODRAG
+KOPRIVICA NOVAK
+KOPRIVICA OBREN
+KOPRIVICA PETAR
+KOPRIVICA SVETOZAR
+KOPRIVICA ZORAN
+KOPUNOVIĆ LJUBICA
+KORČOK JAN
+KORČOK MARIJA
+KORČOK VLADIMIR
+KORAĆ ŽELJKO
+KORAĆ ANĐELIJA
+KORAĆ DUŠAN
+KORAĆ GOJKO
+KORAĆ IGOR
+KORAĆ JULIJANA
+KORAĆ KATICA
+KORAĆ LJUBISAV
+KORAĆ MANE
+KORAĆ MIHAJLO
+KORAĆ MILAN
+KORAĆ MILE
+KORAĆ MILE
+KORAĆ MILE
+KORAĆ MILE
+KORAĆ MILOVAN DR PROF
+KORAĆ MILOVAN
+KORAĆ MILOVAN
+KORAĆ MIODRAG
+KORAĆ PETAR
+KORAĆ PETRA
+KORAĆ RADE
+KORAĆ RADOJKA
+KORAĆ RADOJKA
+KORAĆ RADOSAV
+KORAĆ SLOBODAN
+KORAĆ SNEŽANA
+KORAĆ TATJANA
+KORAĆ VLADO
+KORAJICA ĐURA
+KORAJLIJA ŽARKO
+KORAJLIJA ŽARKO
+KORAJLIJA ŽARKO
+KORAJLIJA DIMITRIJE
+KORAJLIJA MILAN
+KORAKU LUČIJAN
+KORAKU LUCIJAN
+KORBATFINSKI ELVIRA
+KORBATFINSKI VIKTOR DR
+KORBATVINSKI DRAGAN
+KORBATVINSKI-LALOŠEVIĆ ZLATA
+KORBIĆ MLADEN
+KORDA MILOŠ
+KORDA NANDOR
+KORDIĆ ĐURA
+KORDIĆ BOJAN
+KORDIĆ DUŠANKA
+KORDIĆ GOJKO
+KORDIĆ MILAN
+KORENIĆ GABRIEL
+KORENIĆ TEODOR
+KORENJI ĐORĐE
+KORENJI ALEKSANDAR
+KORENJI LASLO
+KORENT LUDVIG
+KORHAMER FERENC
+KORHEC PAVLE
+KORIŠ JULIJANA
+KORIĆANAC IVAN
+KORIĆANAC LJUBINKA
+KORIŽ ARPAD
+KORICA ĐORĐE
+KORICA ĐURO
+KORICA DUŠAN
+KORICA JANKO
+KORICA MILORAD
+KORICA NEDELJKO
+KORICA NIKOLA
+KORICA PETAR
+KORICA SNEŽANA
+KORICA SOFIJA
+KORICA STEVAN
+KORISTOVIĆ MIKSARD
+KORLAT PERICA
+KORLAT PETAR
+KORMANJOŠ ŠANDOR
+KORMANJOŠ ANDRIJA
+KORMANJOŠ BORKA
+KORMANJOŠ FERENC
+KORMANJOŠ KAROLJ
+KORMANJOŠ MIHALJ
+KORMOŠ JANOŠ
+KORMOŠ MARGITA
+KORMOŠ MARGITA
+KORMOŠ MARIJA
+KORMOŠ TEREZA
+KOROŠ RASTISLAV
+KOROŠ VLADA
+KOROŠAN ŠANDOR
+KOROŠEC LEO
+KOROBKO TARAS
+KORODI FRANJA
+KOROKNAI FERENC
+KOROKNAI JANOŠ
+KOROKNAI ZOLTAN
+KOROLIJA DUŠAN DR LEKAR
+KOROLIJA DUŠAN
+KOROLIJA STEVAN DR
+KOROLIJA VERA
+KOROM ERŽEBET
+KOROM TIBOR
+KOROMAN MILORAD
+KOROV ĐORĐE
+KOROVLJEV IVAN
+KOROVLJEV JOVANKA
+KOROVLJEV MARIJA
+KOROVLJEV MILENKO
+KOROVLJEV MILOŠ
+KOROVLJEV RADMILA
+KOROVLJEV VUKICA
+KORPA BELA
+KORPAŠ AMALIJA
+KORPAŠ DANICA
+KORPAŠ DIMITRIJE
+KORPAŠ JANKO
+KORPAŠ MIROSLAV
+KORPAŠ MIROSLAV
+KORPAŠ PERA
+KORPAK DRAGINJA
+KORPAK NADA
+KORPONAI IŠTVAN
+KORPONAI MARIJA
+KORUGA BORA
+KORUGA JULKA
+KORUGA RADOMIR
+KORUNIĆ LIZA
+KOS IDA
+KOS MARIJA
+KOS SLAVKO
+KOS SLAVKO
+KOS STANKO
+KOSAĆ DARINKA
+KOSANIĆ BRANISLAV
+KOSANIĆ IVANKA
+KOSANIĆ SAVA
+KOSANOV ALEKSANDAR
+KOSANOV KATICA
+KOSANOV VLADIMIR
+KOSANOVIĆ ANĐELKA
+KOSANOVIĆ BOGDAN MR
+KOSANOVIĆ BRANKO
+KOSANOVIĆ BRANKO
+KOSANOVIĆ DANE
+KOSANOVIĆ DRAGAN
+KOSANOVIĆ DUŠANKA
+KOSANOVIĆ DUŠAN
+KOSANOVIĆ JELICA
+KOSANOVIĆ JOVAN
+KOSANOVIĆ KOSANA
+KOSANOVIĆ LAZO
+KOSANOVIĆ LJUBICA
+KOSANOVIĆ LJUBOMIR DR
+KOSANOVIĆ-MANDIĆ NENA
+KOSANOVIĆ MANE
+KOSANOVIĆ MARKO
+KOSANOVIĆ MIĆO
+KOSANOVIĆ MILAN
+KOSANOVIĆ MILE
+KOSANOVIĆ MILORAD
+KOSANOVIĆ MIRKO
+KOSANOVIĆ MITAR
+KOSANOVIĆ MLADEN
+KOSANOVIĆ NADA
+KOSANOVIĆ OLGA
+KOSANOVIĆ PETAR
+KOSANOVIĆ RADOVAN
+KOSANOVIĆ SLAVKO
+KOSANOVIĆ STOJAN
+KOSANOVIĆ VELIMIR
+KOSANOVIĆ ZORICA
+KOSARENKO PETAR
+KOSEDNAR STJEPAN
+KOSIĆ ŽARKO
+KOSIĆ ŽARKO
+KOSIĆ ŽIVOJIN
+KOSIĆ BILJANA
+KOSIĆ BOJAN
+KOSIĆ BORKO
+KOSIĆ BRANISLAV
+KOSIĆ GORAN
+KOSIĆ GORDANA
+KOSIĆ IVAN
+KOSIĆ JELICA
+KOSIĆ JOVICA
+KOSIĆ LUKA
+KOSIĆ MARIJA
+KOSIĆ MILOVAN
+KOSIĆ MIRKO DIPL ING
+KOSIĆ NEDELJKO
+KOSIĆ RUŽA
+KOSIĆ SVETOZAR
+KOSIĆ TOMA
+KOSIĆ ZORICA
+KOSINA MILICA
+KOSIROVIĆ MARIJA
+KOSIROVIĆ MILAN
+KOSIROVIĆ PANTELIJA
+KOSJER DUŠAN
+KOSJERINA MILENKO
+KOSKA ATMANA
+KOSKA HATIDŽE
+KOSKA JASMIDIN
+KOSKA LJERKA
+KOSKA MILENA
+KOSKA NADEŽDA
+KOSKA SAFET
+KOSKA SALI
+KOSMAJAC ĐORĐE
+KOSMAJAC ANICA
+KOSO BOSILJKA
+KOSO FRANJO
+KOSO MIHALJ
+KOSO OLIVERA
+KOSO PAL
+KOSORUŠ ĐURA
+KOSORUŠ ETELKA
+KOSORUŠ PETER
+KOSOVAC ČEDA
+KOSOVAC ŽIVKO
+KOSOVAC ALEKSANDAR DR
+KOSOVAC BOJAN
+KOSOVAC BOJAN
+KOSOVAC DARKO
+KOSOVAC DRAGAN
+KOSOVAC DUŠAN
+KOSOVAC GEORGIJE
+KOSOVAC GOJKO
+KOSOVAC JULIJANA
+KOSOVAC MILAN
+KOSOVAC MILAN
+KOSOVAC MIRKO
+KOSOVAC NIKOLA
+KOSOVAC RADIVOJ
+KOSOVAC ZDRAVKO
+KOSOVIĆ ANDRIJA
+KOSOVIĆ ANKICA
+KOSOVIĆ MILORAD
+KOSOVIĆ OLGA PROFESOR
+KOSOVIĆ RADISLAV
+KOSOVIĆ RATKO
+KOSOVIĆ SVETISLAV
+KOSOVRASTI ADŽI
+KOSTADINOSKI BLAGOJE
+KOSTADINOV RISTA
+KOSTADINOVIĆ BRANISLAV
+KOSTADINOVIĆ DRAGOLJUB
+KOSTADINOVIĆ LJILJANA
+KOSTADINOVIĆ TIHOMIR
+KOSTADINOVIĆ VERA
+KOSTADINOVIĆ VERICA
+KOSTADINOVIĆ VUKAN
+KOSTADINOVSKI DIMČE
+KOSTELNIK NESTOR
+KOSTELNIK SILVESTER
+KOSTEVSKI IVAN
+KOSTIĆ-ŠOBOT MILKA
+KOSTIĆ ŽARKO
+KOSTIĆ ŽELJKO
+KOSTIĆ ŽIVOJIN
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐORĐE
+KOSTIĆ ĐURĐICA
+KOSTIĆ ACA
+KOSTIĆ ALEKSANDAR
+KOSTIĆ ALEKSANDAR
+KOSTIĆ ALEKSANDAR
+KOSTIĆ ALEKSANDRA
+KOSTIĆ ANA
+KOSTIĆ ANGELINA
+KOSTIĆ ANKICA
+KOSTIĆ BOŽIDAR
+KOSTIĆ BOŽIDAR
+KOSTIĆ BOGOLJUB
+KOSTIĆ BRANIMIR
+KOSTIĆ BRANISLAV
+KOSTIĆ BRANISLAV
+KOSTIĆ BRANKO
+KOSTIĆ DANILO
+KOSTIĆ DEJAN
+KOSTIĆ DESANKA
+KOSTIĆ DRAGAN
+KOSTIĆ DRAGA
+KOSTIĆ DRAGA
+KOSTIĆ DRAGICA
+KOSTIĆ DRAGICA
+KOSTIĆ DRAGICA
+KOSTIĆ DRAGOLJUB
+KOSTIĆ DUŠAN
+KOSTIĆ DUŠAN
+KOSTIĆ DUŠAN
+KOSTIĆ ELEONORA
+KOSTIĆ GEORGINA
+KOSTIĆ GLIŠA
+KOSTIĆ GOLUB
+KOSTIĆ GORDANA
+KOSTIĆ GRADIMIR
+KOSTIĆ IVAN
+KOSTIĆ IVAN
+KOSTIĆ JELENA
+KOSTIĆ JELICA
+KOSTIĆ JELICA
+KOSTIĆ JORDANKA
+KOSTIĆ JOVAN
+KOSTIĆ JOVAN
+KOSTIĆ JOVAN
+KOSTIĆ JOVAN
+KOSTIĆ JOVAN
+KOSTIĆ KRSMAN
+KOSTIĆ KRSTA
+KOSTIĆ LJILJANA
+KOSTIĆ LJILJANA
+KOSTIĆ LJUBIŠA
+KOSTIĆ LJUBICA
+KOSTIĆ LJUBICA
+KOSTIĆ LJUBICA
+KOSTIĆ MAKSIM
+KOSTIĆ MARIJA
+KOSTIĆ MARKO
+KOSTIĆ METODIJE
+KOSTIĆ MIHAJLO
+KOSTIĆ MILAN
+KOSTIĆ MILAN
+KOSTIĆ MILENA DR
+KOSTIĆ MILENA
+KOSTIĆ MILEVA
+KOSTIĆ MILICA
+KOSTIĆ MILORAD
+KOSTIĆ MILOVAN
+KOSTIĆ MILUŠA
+KOSTIĆ MIRJANA
+KOSTIĆ MIRKO
+KOSTIĆ MOJSE
+KOSTIĆ NADA
+KOSTIĆ NADA
+KOSTIĆ NIKOLA
+KOSTIĆ NIKOLA
+KOSTIĆ OLIVERA
+KOSTIĆ PAVLE
+KOSTIĆ PETAR
+KOSTIĆ PETAR
+KOSTIĆ PETAR
+KOSTIĆ PETAR
+KOSTIĆ PETAR
+KOSTIĆ RADOJICA
+KOSTIĆ RADOJKO
+KOSTIĆ RADOMIR
+KOSTIĆ RADOSAV
+KOSTIĆ RATKO
+KOSTIĆ RUŽICA
+KOSTIĆ SAVA
+KOSTIĆ SAVA
+KOSTIĆ SLAVICA
+KOSTIĆ SLAVKA
+KOSTIĆ SLOBODAN
+KOSTIĆ SLOBODAN
+KOSTIĆ SLOBODAN
+KOSTIĆ SNEŽANA
+KOSTIĆ SPASENKO
+KOSTIĆ SRETEN
+KOSTIĆ STANA
+KOSTIĆ STANIMIR
+KOSTIĆ STANKO
+KOSTIĆ STAZA
+KOSTIĆ STEVAN
+KOSTIĆ STOJADIN
+KOSTIĆ STRAHINJA DR PROF
+KOSTIĆ SVETISLAV DR
+KOSTIĆ SVETISLAV
+KOSTIĆ SVETOZAR
+KOSTIĆ TIBERIJE
+KOSTIĆ TOMISLAV
+KOSTIĆ TOMISLAV
+KOSTIĆ TOMISLAV
+KOSTIĆ VASO
+KOSTIĆ VELIMIR
+KOSTIĆ VERA
+KOSTIĆ VLADISLAVA
+KOSTIĆ VLADISLAV
+KOSTIĆ VLASTIMIR
+KOSTIĆ VOJISLAV
+KOSTIĆ VUKAŠIN
+KOSTIĆ ZDRAVKO
+KOSTIĆ ZORAN
+KOSTIĆ ZORAN
+KOSTIĆ ZORAN
+KOSTIĆ ZORAN
+KOSTIĆ ZORAN
+KOSTIĆ ZORICA
+KOSTOVIĆ JELICA
+KOSTOVIĆ RATKO
+KOSTOVIĆ SNEŽANA
+KOSTOVSKI KATICA
+KOSTOVSKI MIROSLAV
+KOSTOVSKI TRAJČE
+KOSTREŠ MOMČILO
+KOSTREŠEVIĆ GORAN
+KOSTREŠEVIĆ MILADIN
+KOSTREŠEVIĆ NEDELJKO
+KOSTREŠEVIĆ STANKA
+KOSTRIČENKO VASILIJE
+KOSTUDIJA MIROSLAV
+KOT ILONA
+KOT JOSIP
+KOT LADISLAV
+KOT LASLO
+KOT MARTA
+KOT MIRA
+KOT MIRKO
+KOTA ERŽEBET
+KOTA LAJOŠ
+KOTA MIHAJLO
+KOTARČEVIĆ ELVIRA
+KOTARČEVIĆ NIKOLA
+KOTARAC KATICA
+KOTARAC KOSTA
+KOTARAC SVETISLAV
+KOTARANIN LJILJANA
+KOTARANIN PETAR
+KOTARLIĆ DARKO
+KOTARLIĆ DRAGANA
+KOTARLIĆ SAVA
+KOTHAI IŠTVAN
+KOTHAI JOŽEF
+KOTHAI STEVAN
+KOTHAJ STEVAN
+KOTIĆ VOJISLAV
+KOTLAJA MILANKO
+KOTLAJA MILKO
+KOTLARIĆ MARKO DR
+KOTLARIĆ STANIMIR
+KOTRBA FRANJA
+KOTRE MAGDOLNA
+KOTUŠ ERŽEBET
+KOTUŠ MILICA
+KOTUŠ MIROSLAV
+KOTUŠ STEVAN
+KOTUĆ MARIJETA
+KOTUR ANĐELKA
+KOTUR DRAGAN
+KOTUR JELA
+KOTUR RADE
+KOTUROV NADA
+KOTUROVIĆ KATICA
+KOUNIS LJILJANA
+KOVČE AMALIJA
+KOVČEV SPASENKA
+KOVČIN MILICA
+KOVČIN MILOVAN
+KOVČIN MIROSLAV DIPL ING
+KOVČIN NEGA
+KOVČIN STANIMIR DR
+KOVAČ ČEDO
+KOVAČ ŠANDOR
+KOVAČ ŠANDOR
+KOVAČ ĐORĐE
+KOVAČ ĐORĐE
+KOVAČ ĐULA
+KOVAČ ĐURĐA
+KOVAČ-AČ KAROLJ
+KOVAČ ALEKSANDAR
+KOVAČ ALEKSANDAR
+KOVAČ ANA
+KOVAČ ANA
+KOVAČ ANDRAŠ
+KOVAČ ANTAL
+KOVAČ ANTON
+KOVAČ ARPAD
+KOVAČ ATILA
+KOVAČ BELA
+KOVAČ BELA
+KOVAČ-BIRKAŠ MIHALJ
+KOVAČ BORIS
+KOVAČ DEŽE
+KOVAČ DESANKA
+KOVAČ DRAGICA MR
+KOVAČ DUŠAN
+KOVAČ ETELKA
+KOVAČ ETELKA
+KOVAČ FERENC
+KOVAČ FERENC
+KOVAČ FRANJA
+KOVAČ FRANJA
+KOVAČ GABOR
+KOVAČ GIZELA
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ IŠTVAN
+KOVAČ ILONA
+KOVAČ IMRE
+KOVAČ IMRE
+KOVAČ IMRE
+KOVAČ IRENA
+KOVAČ IRENA
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ IVAN
+KOVAČ JAKOB
+KOVAČ JANKO
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JANOŠ
+KOVAČ JAN
+KOVAČ JAN
+KOVAČ JELICA
+KOVAČ JELISAVETA
+KOVAČ JOŽEF
+KOVAČ JOŽEF
+KOVAČ JOSIP
+KOVAČ JOSIP
+KOVAČ JOSIP
+KOVAČ JOSIP
+KOVAČ JOVAN
+KOVAČ JOVAN
+KOVAČ JOVAN
+KOVAČ JULIANA
+KOVAČ JULIJANA
+KOVAČ KARLO
+KOVAČ KARLO
+KOVAČ KAROLJ
+KOVAČ KAROLJ
+KOVAČ KAROLJ
+KOVAČ KAROLJ
+KOVAČ KATALIN
+KOVAČ KATARINA
+KOVAČ KATICA
+KOVAČ KATICA
+KOVAČ KATICA
+KOVAČ KATICA
+KOVAČ KATICA
+KOVAČ KOVILJKA
+KOVAČ LADISLAV
+KOVAČ LADISLAV
+KOVAČ LADISLAV
+KOVAČ LADISLAV
+KOVAČ LADISLAV
+KOVAČ LAJOŠ
+KOVAČ LAJOŠ
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LASLO
+KOVAČ LJUBAN
+KOVAČ LJUDEVIT
+KOVAČ MAJA
+KOVAČ MARGITA
+KOVAČ MARIJA
+KOVAČ MARIJA
+KOVAČ MARIJA
+KOVAČ MARIJA
+KOVAČ MARIJA
+KOVAČ MARTIN
+KOVAČ MATIJA
+KOVAČ MIHAJLO
+KOVAČ MIHAJLO
+KOVAČ MIHALJ
+KOVAČ MIHALJ
+KOVAČ MIKLOŠ
+KOVAČ MIKLOŠ
+KOVAČ MILADIN
+KOVAČ MILAN
+KOVAČ MILENA
+KOVAČ MILOŠ
+KOVAČ MILORAD
+KOVAČ MIRJANA
+KOVAČ MIRJANA
+KOVAČ MIRJANA
+KOVAČ MIRKO
+KOVAČ MIRON DIPL ING
+KOVAČ MIROSLAV
+KOVAČ NATALIJA
+KOVAČ NIKOLA
+KOVAČ NIKOLA
+KOVAČ OLGICA
+KOVAČ OLGICA
+KOVAČ OTO
+KOVAČ PAVEL
+KOVAČ PETAR
+KOVAČ RISTO DIPL ING
+KOVAČ ROŽI
+KOVAČ ROŽI
+KOVAČ ROZALIJA
+KOVAČ ROZALIJA
+KOVAČ RUŽICA
+KOVAČ SILVESTER
+KOVAČ SMILJA
+KOVAČ STANOJKA
+KOVAČ STEVAN
+KOVAČ STEVAN
+KOVAČ STEVAN
+KOVAČ STEVAN
+KOVAČ STJEPAN DIPL ING
+KOVAČ SVETOZAR
+KOVAČ TEODOR DR PROF
+KOVAČ TEODOR DR
+KOVAČ TIBOR
+KOVAČ TIBOR
+KOVAČ-TIHMAJER STEVAN
+KOVAČ TOMISLAV
+KOVAČ TRPIMIR
+KOVAČ VALERIJA
+KOVAČ VERA
+KOVAČ VERA
+KOVAČ VERA
+KOVAČ VERA
+KOVAČ VERA
+KOVAČ VERICA
+KOVAČ VERONA
+KOVAČ VERONA
+KOVAČ VIDA
+KOVAČ VLADIMIR
+KOVAČ VLADIMIR
+KOVAČ ZORA
+KOVAČ ZVONIMIR
+KOVAČEK BOŽIDAR DR
+KOVAČEK DANICA
+KOVAČEK JELENA
+KOVAČEV ĐORĐE
+KOVAČEV ALEKSANDAR
+KOVAČEV BRANKA
+KOVAČEV BRANKO
+KOVAČEV BRANKO
+KOVAČEV DANČE
+KOVAČEV DANILKA
+KOVAČEV DIMITRIJE
+KOVAČEV DRAGIŠA
+KOVAČEV DRAGOSLAV
+KOVAČEV DRAGUTIN
+KOVAČEV DRAGUTIN
+KOVAČEV DUŠANKA
+KOVAČEV GORAN
+KOVAČEV GORDANA
+KOVAČEV GORDANA
+KOVAČEV ILIJA
+KOVAČEV IVICA
+KOVAČEV JELA
+KOVAČEV JELENA
+KOVAČEV JOVAN
+KOVAČEV JULIJANA
+KOVAČEV JULKA
+KOVAČEV LAZAR
+KOVAČEV MARIJA
+KOVAČEV MILAN
+KOVAČEV MILAN
+KOVAČEV MILENA
+KOVAČEV MILICA
+KOVAČEV MILOŠ
+KOVAČEV MILORAD DR LEKAR
+KOVAČEV MILUTIN
+KOVAČEV MIRJANA
+KOVAČEV MLADEN
+KOVAČEV NEDELJKO
+KOVAČEV NEMANJA
+KOVAČEV PETAR
+KOVAČEV STEVAN
+KOVAČEV STEVAN
+KOVAČEV STEVAN
+KOVAČEV SVETISLAV
+KOVAČEV SVETOZAR
+KOVAČEV TEODOR DR
+KOVAČEV TEODOR DR
+KOVAČEV VERA
+KOVAČEV VERA
+KOVAČEV VESNA
+KOVAČEVIĆ ČEDA
+KOVAČEVIĆ ŽELIMIR
+KOVAČEVIĆ ŽELJKO
+KOVAČEVIĆ ŽIVAN
+KOVAČEVIĆ ŽIVAN
+KOVAČEVIĆ ĐORĐE DIPL ING
+KOVAČEVIĆ ĐORĐE
+KOVAČEVIĆ ĐORĐE
+KOVAČEVIĆ ĐORĐE
+KOVAČEVIĆ ĐORĐE
+KOVAČEVIĆ ĐURĐINA
+KOVAČEVIĆ ĐURA
+KOVAČEVIĆ AGNEŠ
+KOVAČEVIĆ ALEKSANDAR
+KOVAČEVIĆ ALEKSANDAR
+KOVAČEVIĆ ALEKSANDAR
+KOVAČEVIĆ ANĐELIJA
+KOVAČEVIĆ ANDRIJA
+KOVAČEVIĆ ANETA
+KOVAČEVIĆ ANKICA
+KOVAČEVIĆ ARSA
+KOVAČEVIĆ BLAGOJE
+KOVAČEVIĆ BOŠKO
+KOVAČEVIĆ BOŠKO
+KOVAČEVIĆ BOŠKO
+KOVAČEVIĆ BOŽIDAR
+KOVAČEVIĆ BOGDAN
+KOVAČEVIĆ BOGDAN
+KOVAČEVIĆ BORISLAVA
+KOVAČEVIĆ BORISLAV
+KOVAČEVIĆ BORISLAV
+KOVAČEVIĆ BORIVOJE
+KOVAČEVIĆ BORIVOJ
+KOVAČEVIĆ BORIVOJ
+KOVAČEVIĆ BORIVOJ
+KOVAČEVIĆ BORKA
+KOVAČEVIĆ BRANIMIR
+KOVAČEVIĆ BRANISLAVA DIPL ING
+KOVAČEVIĆ BRANISLAVA
+KOVAČEVIĆ BRANISLAVA
+KOVAČEVIĆ BRANISLAV
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BRANKO
+KOVAČEVIĆ BUDIMIR
+KOVAČEVIĆ BUDIMIR
+KOVAČEVIĆ DAMJAN
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANICA
+KOVAČEVIĆ DANILO
+KOVAČEVIĆ DANKA
+KOVAČEVIĆ DAVORKA
+KOVAČEVIĆ DESANKA
+KOVAČEVIĆ DIMITRIJE DIPL OEC
+KOVAČEVIĆ DRAGAN DR
+KOVAČEVIĆ DRAGANA
+KOVAČEVIĆ DRAGAN
+KOVAČEVIĆ DRAGAN
+KOVAČEVIĆ DRAGAN
+KOVAČEVIĆ DRAGICA
+KOVAČEVIĆ DRAGICA
+KOVAČEVIĆ DRAGOLJUB
+KOVAČEVIĆ DRAGOLJUB
+KOVAČEVIĆ DRAGOLJUB
+KOVAČEVIĆ DRAGO
+KOVAČEVIĆ DRAGO
+KOVAČEVIĆ DRAGUTIN
+KOVAČEVIĆ DRAGUTIN
+KOVAČEVIĆ DRENA
+KOVAČEVIĆ DUŠANKA
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠAN
+KOVAČEVIĆ DUŠICA
+KOVAČEVIĆ DUŠICA
+KOVAČEVIĆ DUŠKO
+KOVAČEVIĆ DUŠKO
+KOVAČEVIĆ DUŠKO
+KOVAČEVIĆ FRANJA
+KOVAČEVIĆ GAVRILO
+KOVAČEVIĆ GLIGORIJE
+KOVAČEVIĆ GOJKO
+KOVAČEVIĆ IŠTVAN
+KOVAČEVIĆ IGNJAT
+KOVAČEVIĆ ILIJA
+KOVAČEVIĆ ILIJA
+KOVAČEVIĆ ILIJA
+KOVAČEVIĆ ISA
+KOVAČEVIĆ IVAN
+KOVAČEVIĆ JAGOŠ
+KOVAČEVIĆ JELENA
+KOVAČEVIĆ JELICA
+KOVAČEVIĆ JELICA
+KOVAČEVIĆ JELISAVETA
+KOVAČEVIĆ JORDAN
+KOVAČEVIĆ JOVANKA
+KOVAČEVIĆ JOVAN
+KOVAČEVIĆ JOVAN
+KOVAČEVIĆ JOVAN
+KOVAČEVIĆ JOVICA
+KOVAČEVIĆ JOVO
+KOVAČEVIĆ KATARINA
+KOVAČEVIĆ KATA
+KOVAČEVIĆ KATICA DR
+KOVAČEVIĆ KATICA
+KOVAČEVIĆ KATICA
+KOVAČEVIĆ KLARA
+KOVAČEVIĆ KOČA
+KOVAČEVIĆ KOJA
+KOVAČEVIĆ KOSTA
+KOVAČEVIĆ KOSTA
+KOVAČEVIĆ KOVILJKA
+KOVAČEVIĆ KRSTA
+KOVAČEVIĆ KRSTO
+KOVAČEVIĆ KSENIJA
+KOVAČEVIĆ KSENIJA
+KOVAČEVIĆ LAZO
+KOVAČEVIĆ LJILJANA
+KOVAČEVIĆ LJILJA
+KOVAČEVIĆ LJUBICA
+KOVAČEVIĆ LJUBO
+KOVAČEVIĆ MARA
+KOVAČEVIĆ MARA
+KOVAČEVIĆ MARIJA
+KOVAČEVIĆ MARIJA
+KOVAČEVIĆ MARKO
+KOVAČEVIĆ MARKO
+KOVAČEVIĆ MIHAJLO
+KOVAČEVIĆ MIHAJLO
+KOVAČEVIĆ MILADINKA
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILAN
+KOVAČEVIĆ MILENA
+KOVAČEVIĆ MILENA
+KOVAČEVIĆ MILE
+KOVAČEVIĆ MILICA
+KOVAČEVIĆ MILICA
+KOVAČEVIĆ MILICA
+KOVAČEVIĆ MILICA
+KOVAČEVIĆ MILIMIR
+KOVAČEVIĆ MILIVOJ DR
+KOVAČEVIĆ MILJAN
+KOVAČEVIĆ MILKA
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILOŠ
+KOVAČEVIĆ MILORAD
+KOVAČEVIĆ MILORAD
+KOVAČEVIĆ MILOVAN
+KOVAČEVIĆ MILOVAN
+KOVAČEVIĆ MIODRAG
+KOVAČEVIĆ MIODRAG
+KOVAČEVIĆ MIRA
+KOVAČEVIĆ MIRA
+KOVAČEVIĆ MIRJANA
+KOVAČEVIĆ MIRJANA
+KOVAČEVIĆ MIRKO
+KOVAČEVIĆ MIROSLAV
+KOVAČEVIĆ MIROSLAV
+KOVAČEVIĆ MIROSLAV
+KOVAČEVIĆ MITAR
+KOVAČEVIĆ MITA
+KOVAČEVIĆ-MLADENOVIĆ OLGA
+KOVAČEVIĆ MLADEN
+KOVAČEVIĆ NADA
+KOVAČEVIĆ NADEŽDA
+KOVAČEVIĆ NATALIJA
+KOVAČEVIĆ NEBOJŠA
+KOVAČEVIĆ NEDELJKA
+KOVAČEVIĆ NEDELJKO
+KOVAČEVIĆ NIKOLA
+KOVAČEVIĆ NIKOLA
+KOVAČEVIĆ NIKOLA
+KOVAČEVIĆ OLGICA
+KOVAČEVIĆ OZREN
+KOVAČEVIĆ PAVLE
+KOVAČEVIĆ PAVLE
+KOVAČEVIĆ PETAR
+KOVAČEVIĆ RADENKO
+KOVAČEVIĆ RADE
+KOVAČEVIĆ RADIVOJE
+KOVAČEVIĆ RADIVOJ
+KOVAČEVIĆ RADIVOJ
+KOVAČEVIĆ RADMILA
+KOVAČEVIĆ RADOJKA
+KOVAČEVIĆ RADOJKO
+KOVAČEVIĆ RADOMAN
+KOVAČEVIĆ RADOSLAV
+KOVAČEVIĆ RADOVAN
+KOVAČEVIĆ RAJKO
+KOVAČEVIĆ RAJKO
+KOVAČEVIĆ RANKO
+KOVAČEVIĆ RELJA
+KOVAČEVIĆ RUŽICA
+KOVAČEVIĆ RUŽICA
+KOVAČEVIĆ SAVA
+KOVAČEVIĆ SAVA
+KOVAČEVIĆ SAVA
+KOVAČEVIĆ SAVKA
+KOVAČEVIĆ SAVO
+KOVAČEVIĆ SEKULA
+KOVAČEVIĆ SIMEON
+KOVAČEVIĆ SLAĐANA
+KOVAČEVIĆ SLAVICA
+KOVAČEVIĆ SLAVKO
+KOVAČEVIĆ SLAVKO
+KOVAČEVIĆ SLAVKO
+KOVAČEVIĆ SLAVKO
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SLOBODAN
+KOVAČEVIĆ SPASENIJA
+KOVAČEVIĆ SRBIJANKA
+KOVAČEVIĆ SRETA
+KOVAČEVIĆ SRETEN
+KOVAČEVIĆ STANA
+KOVAČEVIĆ STANKA
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVAN
+KOVAČEVIĆ STEVO
+KOVAČEVIĆ STEVO
+KOVAČEVIĆ STEVO
+KOVAČEVIĆ SVETLANA
+KOVAČEVIĆ SVETLANA
+KOVAČEVIĆ SVETLANA
+KOVAČEVIĆ SVETOLIK
+KOVAČEVIĆ SVETOZAR
+KOVAČEVIĆ SVETOZAR
+KOVAČEVIĆ SVETOZAR
+KOVAČEVIĆ TEREZA
+KOVAČEVIĆ TODOR
+KOVAČEVIĆ TOMISLAV
+KOVAČEVIĆ VASA
+KOVAČEVIĆ VELIMIR
+KOVAČEVIĆ VELIMIR
+KOVAČEVIĆ VERA
+KOVAČEVIĆ VERA
+KOVAČEVIĆ VERA
+KOVAČEVIĆ VIDOSAVA
+KOVAČEVIĆ VIDOSAVA
+KOVAČEVIĆ VIDOSAVA
+KOVAČEVIĆ VIDOSAVA
+KOVAČEVIĆ VINKO
+KOVAČEVIĆ VLADIMIR
+KOVAČEVIĆ VLADIMIR
+KOVAČEVIĆ VLADIMIR
+KOVAČEVIĆ VLADISLAV
+KOVAČEVIĆ VOJIN
+KOVAČEVIĆ VOJIN
+KOVAČEVIĆ VOJISLAV DIPL ING
+KOVAČEVIĆ VUJO
+KOVAČEVIĆ VUKAŠIN
+KOVAČEVIĆ VUKAŠIN
+KOVAČEVIĆ ZDENKO
+KOVAČEVIĆ ZDRAVKO
+KOVAČEVIĆ ZORAN DR
+KOVAČEVIĆ ZORAN
+KOVAČEVIĆ ZORAN
+KOVAČEVIĆ ZORICA
+KOVAČEVIĆ ZORICA
+KOVAČEVIĆ ZVONIMIRKA
+KOVAČIĆ ŽIVKO
+KOVAČIĆ ANICA
+KOVAČIĆ BOŽANA
+KOVAČIĆ BORIVOJ
+KOVAČIĆ DRAGANA
+KOVAČIĆ DUŠANKA
+KOVAČIĆ DUŠAN
+KOVAČIĆ JOVAN
+KOVAČIĆ JOVAN
+KOVAČIĆ JOVAN
+KOVAČIĆ LJEPOSAVA
+KOVAČIĆ LUKA
+KOVAČIĆ MILAN
+KOVAČIĆ MILENKO
+KOVAČIĆ MIROSLAV
+KOVAČIĆ MIROSLAV
+KOVAČIĆ NEDELJKO
+KOVAČIĆ NIKOLA
+KOVAČIĆ PETAR
+KOVAČIĆ RADOSLAV
+KOVAČIĆ SLOBODAN
+KOVAČIĆ STANISLAV
+KOVAČIĆ TANASIJE
+KOVAČIĆ TOŠA
+KOVAČIĆ TOMISLAV
+KOVAČIĆ VESNA
+KOVAČIK MARGITA
+KOVAČIK MARIJA
+KOVALČIK VLADISLAV
+KOVALOVSKI TEODOR
+KOVANOVIĆ PETAR
+KOVAR JANJA
+KOVARČIK ANDRIJA
+KOVARČIK MARIJA
+KOVARIK VALERIJA
+KOVEINDL JOSIP
+KOVELJ TOMISLAV
+KOVIĆ DRAGICA
+KOVIĆ NADA
+KOVIĆ SLOBODAN
+KOVIJANIĆ VLADIMIR
+KOVINČIĆ BOJAN
+KOVINČIĆ MILAN
+KOVINČIĆ NADA
+KOVINČIĆ NATAŠA
+KOVINČIĆ SLOBODAN DIPL ING
+KOVINČIĆ STOJAN
+KOVJANIĆ ALEKSANDAR
+KOVJANIĆ JOVAN
+KOVJANIĆ MILORAD
+KOVJANIĆ NADA
+KOVJANIĆ NENAD
+KOVJANIĆ PERA
+KOVJANIĆ SAVA
+KOVLJAN ĐORĐE
+KOVLJAN SAVO
+KOVRLIJA JOVAN
+KOZAK MARIJA
+KOZAKIV IVAN
+KOZAR RADE
+KOZARČIĆ JOVANKA
+KOZARČIĆ JOVAN
+KOZARČIĆ JOVAN
+KOZARČIĆ MARKO
+KOZARČIĆ MILAN
+KOZARAC MIĆO
+KOZAREV ŽARKO
+KOZAREV ŽIVKO
+KOZAREV ALEKSANDRA
+KOZAREV BOGOLJUB
+KOZAREV DARINKA
+KOZAREV DIMITRIJE
+KOZAREV DIMITRIJE
+KOZAREV DRAGICA
+KOZAREV GOSPAVA
+KOZAREV LAZAR
+KOZAREV LJUBICA
+KOZAREV MARIJA
+KOZAREV MILAN
+KOZAREV MILKA
+KOZAREV MLADEN
+KOZAREV NEDELJKO
+KOZAREV PAVLE
+KOZAREV PETAR
+KOZAREV SAVA
+KOZAREV SAVA
+KOZAREV TODOR
+KOZAREVIĆ RADINKA
+KOZAREVIĆ ZORAN
+KOZAROV ĐORĐE
+KOZAROV ANICA
+KOZAROV GAVRA
+KOZAROV IVAN
+KOZAROV JOVANKA
+KOZAROV KATICA
+KOZAROV MILOŠ
+KOZAROV NATALIJA
+KOZAROV PAVLE
+KOZAROV PAVLE
+KOZAROV SRBISLAV
+KOZAROV TOMISLAV
+KOZARSKI ŽIVAN
+KOZARSKI ŽIVKO
+KOZARSKI LIDIJA
+KOZARSKI MARIJA
+KOZARSKI MIROSLAV
+KOZARSKI-RAJIĆ VERICA
+KOZARSKI SLOBODAN
+KOZARSKI SOFIJA
+KOZARSKI STEVAN
+KOZARSKI TEODORA
+KOZARSKI VASILIJE
+KOZARSKI VERA
+KOZARSKI VOJISLAV
+KOZARSKI VOJISLAV
+KOZBAŠIĆ STEVAN
+KOZIĆ BOGDAN
+KOZIĆ PETAR
+KOZIĆ RATKO
+KOZIĆ ROŽA
+KOZIĆ SAVA
+KOZIĆ STANKO
+KOZIĆ VELJKO
+KOZINA IVAN
+KOZINA MARICA
+KOZLIK KATARINA
+KOZLIK LAJOŠ
+KOZLINA DESANKA
+KOZLINA DUŠKO
+KOZLINA JEKA
+KOZLINA MILE
+KOZLINA ZLATICA
+KOZLOVAČKI ŽIVKO
+KOZLOVAČKI GORDANA
+KOZLOVAČKI LJUBA
+KOZLOVAČKI SAVA
+KOZLOVAČKI SOFIJA
+KOZLOVAČKI VESELIN
+KOZLOVIĆ BORIS
+KOZLOVIĆ SAVA
+KOZMA ŠANDOR
+KOZMA ETEL
+KOZMA FERENC
+KOZMA JOŽEF
+KOZMA JOSIP
+KOZMIDIS-PETROVIĆ ANA
+KOZOMARA ĐORĐE
+KOZOMARA JOVO
+KOZOMARA LJUBICA
+KOZOMARA MARIJA
+KOZOMARA ZORAN
+KOZOMARIĆ MARIJA
+KOZOMORA BOŽIDAR
+KOZOMORA BRANKO
+KOZOMORA ILIJA
+KOZOMORA JOKA
+KOZOMORA JOVO
+KOZOMORA LAZO
+KOZOMORA MILAN
+KOZOMORA MILE
+KOZOMORA MILOJKO
+KOZOMORA MIROSLAV
+KOZOMORA PETAR
+KOZOMORA RADOMIR
+KOZOMORA SRĐAN
+KOZOMORA TATJANA
+KOZOMORA VASILIJE
+KOZOMORIĆ BRANISLAVA DR LEKAR
+KOZUNOVIĆ MIROSLAV
+KRČADINAC KOSTA
+KRČADINAC NIKOLA
+KRČEDINAC MIODRAG
+KRČEDINAC TIMA
+KRČELIĆ ANDRIJA
+KRČMAR ŽELJKO
+KRČMAR CVIJO
+KRČMAR DRAGOMIR
+KRČMAR DUŠKO
+KRČMAR JOVAN
+KRČMAR LEPOSAVA
+KRČMAR LJUBICA
+KRČMAR LJUBICA
+KRČMAR MILAN
+KRČMAR MILAN
+KRČMAR MIRKO
+KRČMAR PANE
+KRČMAR VASO
+KRČMAR VINKO
+KRČMAR ZORAN
+KRČMAR ZORAN
+KRČMARIK DANILO
+KRČMARIK PREDRAG
+KRČO BOŽIDAR
+KRČO MILENKO
+KRČO RASIM
+KRČO RASIM
+KRŠEV BORIS
+KRŠEV IVAN
+KRŠEV JULIJANA
+KRŠEV JULKICA
+KRŠIĆ DARA
+KRŠIĆ IGNJAT
+KRŠIĆ JELA
+KRŠIĆ TOMO
+KRŠIN JOVO
+KRŠOVIĆ JELENA
+KRŠTENIĆ DESANKA
+KRŽA MILENKO
+KRŽIĆ SIMO
+KRĐIĆ SPOMENKA
+KRAČENSKI BORISLAV
+KRAČEVSKI APOSTOL
+KRAČUN IVAN
+KRAČUN TRAJAN
+KRAČUN TRAJAN
+KRAČUNOV PETAR
+KRAČUNOV STEVAN
+KRAČUNOVIĆ ŽIVORAD
+KRAČUNOVIĆ VELJKO
+KRAĆAK BOŠKO
+KRAGIČEK KLARA
+KRAGIĆ BILJANA
+KRAGIĆ BORA
+KRAGIĆ LJILJANA
+KRAGIĆ ZORAN
+KRAGOVIĆ MARINKO
+KRAGOVIĆ VLADIMIR
+KRAGUJEV DUŠAN
+KRAGUJEVIĆ MILORAD DR LEKAR
+KRAGUJEVIĆ RAJKO
+KRAGUJEVIĆ STANISLAV DR LEKAR
+KRAGULJ ALEKSANDAR
+KRAGULJ DUŠANKA
+KRAGULJ JELA
+KRAGULJ LAZO
+KRAGULJ SAVKA
+KRAGULJEVIĆ ZORICA
+KRAJČEVIĆ MIODRAG
+KRAJČI VLADIMIR
+KRAJČINOVIĆ JOVAN DR LEKAR
+KRAJŠIĆ MIRKO
+KRAJAČEVIĆ BORISLAV
+KRAJAČEVIĆ HILDA
+KRAJAČEVIĆ MIRJANA
+KRAJAČEVIĆ TOMISLAV
+KRAJAČEVIĆ ZORAN
+KRAJCAR VLADIMIR
+KRAJCER EUGEN
+KRAJCER IRENA
+KRAJCER IVAN
+KRAJCER PETAR
+KRAJIŠNIK ŽIVORAD
+KRAJIŠNIK KRISTINA
+KRAJIĆ AGICA
+KRAJINA ALEKSANDAR
+KRAJINA FILIP
+KRAJINOVIĆ BRANKO
+KRAJINOVIĆ LAZAR
+KRAJINOVIĆ MILAN
+KRAJINOVIĆ PAVLE
+KRAJINOVIĆ SINIŠA
+KRAJNIK ŽARKO
+KRAJNIK LAZAR
+KRAJNIKER NANDOR
+KRAJNOV BOGDAN
+KRAJNOV BOGOLJUB
+KRAJNOV GORAN
+KRAJNOVIĆ ĐORĐE
+KRAJNOVIĆ ĐORĐE
+KRAJNOVIĆ ĐURO
+KRAJNOVIĆ BOŠKO
+KRAJNOVIĆ BOGDAN
+KRAJNOVIĆ JADRANKA
+KRAJNOVIĆ MILIĆ
+KRAJNOVIĆ MILICA
+KRAJNOVIĆ NIKOLA
+KRAJNOVIĆ PETAR
+KRAJNOVIĆ RADE
+KRAJNOVIĆ SLAVICA
+KRAJNOVIĆ VERA
+KRAJOVAN MIRJANA
+KRAJOVAN MIROSLAV
+KRAK MIŠA
+KRAKANOVIĆ DUŠAN
+KRAKANOVIĆ VOJISLAV
+KRALIK MIROSLAV
+KRALIK OLINKA
+KRALIK PAVLE
+KRALIK STEVAN
+KRALJ VALENTIN
+KRALJ ZVONIMIR
+KRALJEVAČKI BARBARA
+KRALJEVAČKI ILIJA
+KRALJEVAČKI JOSIP
+KRALJEVIĆ BOSILJKA
+KRALJEVIĆ DUŠAN
+KRALJEVIĆ MARICA
+KRALJEVIĆ MILKA
+KRALJEVIĆ SAVO
+KRALJEVIĆ VLADIMIR DR
+KRALJIĆ JELENA
+KRALJIĆ VLADA
+KRANJČEVIĆ GORDANA
+KRANJČEVIĆ JOSIP
+KRAS JELENA
+KRASAVAC ŽIVORAD
+KRASAVAC MILKA
+KRASAVAC MILORAD
+KRASAVAC MILORAD
+KRASAVAC RUŽICA
+KRASIĆ BRANISLAV
+KRASIĆ DUŠAN
+KRASIĆ GOLUB
+KRASIĆ MILOJE
+KRASIĆ NIKOLA
+KRASIĆ STEVAN
+KRASKO JANKO
+KRASNIĆ IRINA
+KRASNIĆ VERA
+KRASNIK VLATKO
+KRASNIK ZVONKO
+KRASOJEVIĆ KONSTANTIN
+KRASOJEVIĆ ZORAN
+KRASULA TOMA
+KRASULJA DUŠAN
+KRASULJA STEVAN
+KRAUS ANA
+KRAUS OTO
+KRAVČENKO PETAR
+KRAVARUŠIĆ DRAGAN
+KRAVARUŠIĆ ILIJA
+KRAVARUŠIĆ TRIVUN
+KRAVARUŠIĆ VITOMIR
+KRAVIĆ DUŠAN
+KRAVIĆ MILAN
+KRAVIĆ PETAR
+KRAVLJANAC ALEKSANDRA
+KRAVLJANAC IVANKA
+KRBANJEVIĆ ALEKSANDAR
+KRBANJEVIĆ MILAN
+KRBANJEVIĆ SAŠA
+KRBAVAC JELA
+KRCIĆ BRATIMIR
+KRCUNOVIĆ BLAGOJE
+KRDŽALIĆ DRAGAN
+KRDŽALIĆ STEVAN
+KRDŽIĆ VIDOJE
+KREŠO EMIR
+KRECUL LIDIJA
+KRECULJ MARIJA
+KREG EDUARD
+KREG VLADIMIR
+KREJIĆ BORISLAV
+KREJIĆ JOVAN
+KREJIĆ MARINKO
+KREJIĆ STANISLAV
+KREJIĆ STANISLAV
+KREJIĆ STOJA
+KREKIĆ BARIŠA DR
+KREKIĆ ENVER
+KREKIĆ FRANJA
+KREKIĆ MILENA
+KREKO LJUBICA
+KREMENOVIĆ BORISLAV
+KREMENOVIĆ KLARA
+KREMENOVIĆ LJUBA
+KREMENOVIĆ LJUBA
+KREMENOVIĆ LJUBA
+KREMENOVIĆ MILANKA
+KREMENOVIĆ MILENA
+KREMENOVIĆ MILENKO
+KREMENOVIĆ MILOŠ
+KREMENOVIĆ MIRKO
+KREMENOVIĆ NEDELJKO
+KREMENOVIĆ PETAR
+KREMENOVIĆ RADOSLAV
+KREMENOVIĆ SINIŠA
+KREMENOVIĆ SNEŽANA
+KREMENOVIĆ STANKO
+KREMENOVIĆ STEVO
+KREMENOVIĆ VOJIN
+KREMER ELIZABETA
+KREMER FRANJA
+KREMER JOVAN
+KREMER KATICA
+KREMER MATIJA
+KREMER PAJA
+KREMIĆ DRAGAN
+KREMIĆ LJUBOMIR
+KREMPASKI-ANDRIĆ HILDA
+KREMPASKI ELIZABETA
+KRESANKO LASLO
+KRESANKO MARGITA
+KRESANKO MARIJA
+KRESIĆ JANJA
+KRESIĆ MILENA
+KRESIĆ MITAR
+KRESIĆ SLAVKO
+KRESO ŠAĆIR
+KRESOJA DUŠKO
+KRESOJA MARINKO
+KRESOJEVIĆ DAMJAN
+KRESOJEVIĆ JOVANKA
+KRESOJEVIĆ JOVAN
+KRESOJEVIĆ SRBOSLAV
+KRESOJEVIĆ VESNA
+KRESOJEVIĆ ZDRAVKO
+KRESOVIĆ SLAVKO
+KRESOVIĆ SLOBODAN
+KRESOVIĆ VASO
+KRESTA ARPAD
+KRESTA ATILA
+KRESTIĆ DAFINA
+KRESTIĆ NADA
+KRESTIĆ STEVAN
+KRESTIĆ VLADIMIR
+KREVEŠIĆ KARLO
+KREVEŠIĆ KATA
+KRGA GAVRA
+KRGA MANE
+KRGA MARA
+KRGA MILAN
+KRGA MILOŠ
+KRGA VASA
+KRGIN MLADEN
+KRGIN NADA
+KRGIN NEDELJKO
+KRGOVIĆ DUŠANKA
+KRGOVIĆ DUŠANKA
+KRGOVIĆ JOVO
+KRGOVIĆ MALIŠA
+KRGOVIĆ MARIJA
+KRGOVIĆ MIĆO
+KRGOVIĆ MILAN
+KRGOVIĆ MILORAD DR LEKAR
+KRGOVIĆ MOMČILO
+KRGOVIĆ RATKO
+KRGOVIĆ SMILJA
+KRGOVIĆ SNEŽANA
+KRGOVIĆ SVETOZAR
+KRGOVIĆ VLADA
+KRGOVIĆ VUKOMAN DIPL ING
+KRGOVIĆ ZORICA
+KRIŠ PETAR
+KRIŠAN BOSILJKA
+KRIŠAN DRAGOJLO
+KRIŠAN MATIJA
+KRIŠAN MILOŠ
+KRIŠAN VUKICA
+KRIŠAN ZDRAVKO
+KRIŠANOV JOVAN
+KRIŠANOVIĆ DRAGOMIR
+KRIŠTO JULIJANA
+KRIŽ JANKO
+KRIŽ PAVEL
+KRIŽAK ANA
+KRIŽAN ŠANDOR
+KRIŽAN ĐURA
+KRIŽAN ANICA
+KRIŽAN EDUARD
+KRIŽAN JANOŠ
+KRIŽAN JULA
+KRIŽAN LASLO
+KRIŽAN MARIJA
+KRIŽAN MATIJA
+KRIŽAN MIKLOŠ
+KRIŽAN ROŽA
+KRIŽANIĆ JOVAN
+KRIŽANIĆ JOVAN
+KRIŽANIĆ MILENKO
+KRIŽANIĆ SLAĐANA
+KRIŽANIĆ VLADIMIR
+KRIŽANOVIĆ ŽUŽANA
+KRIŽNAR BOJAN
+KRIŽNAR MARA
+KRIŽNAR MIRKO DR DIPL ING
+KRIŽNAR TOMA DIPL ING
+KRIMŠAMHALOV ZAIDA
+KRINKOVSKI ALEKSANDAR
+KRINKOVSKI ALEKSANDAR
+KRINKOVSKI VERONIKA
+KRISTIĆ MARIJA
+KRISTIĆ NADA
+KRISTIAN JOŽEF
+KRISTOVIĆ MIROSLAVA
+KRISTOVIĆ RUDOLF
+KRIVAK ANA
+KRIVAK MIROSLAV
+KRIVIĆ DRAGANA
+KRIVIĆ LJILJANA
+KRIVIĆ NIKOLA
+KRIVOŠIJA ŽIVKO
+KRIVOŠIJA FRANJO
+KRIVOŠIJA MILE
+KRIVOKAPIĆ AMALIJA
+KRIVOKAPIĆ DANICA
+KRIVOKAPIĆ MARTIN
+KRIVOKAPIĆ NEDELJKO
+KRIVOKAPIĆ NEVENKA DIPL ECC
+KRIVOKAPIĆ RADOSLAV
+KRIVOKAPIĆ SLOBODAN
+KRIVOKAPIĆ SLOBODAN
+KRIVOKAPIĆ STEVAN
+KRIVOKAPIĆ VLADIMIR
+KRIVOKUĆA ĐORĐE
+KRIVOKUĆA DEJAN DIPL ING
+KRIVOKUĆA DIMITRIJE
+KRIVOKUĆA DRAGICA
+KRIVOKUĆA DRAGOMIR
+KRIVOKUĆA DRAGOMIR
+KRIVOKUĆA DUŠAN
+KRIVOKUĆA JELISAVETA
+KRIVOKUĆA JOVAN
+KRIVOKUĆA JULIJANA
+KRIVOKUĆA MILAN
+KRIVOKUĆA MILICA
+KRIVOKUĆA MILKA
+KRIVOKUĆA MIODRAG
+KRIVOKUĆA PETAR
+KRIVOKUĆA RADOSLAV
+KRIVOKUĆA RADOVAN
+KRIZBAI ZOLTAN
+KRKELIĆ SLOBODAN
+KRKELJEŠ BORIS
+KRKELJIĆ MOMČILO
+KRKELJIĆ SVETISLAV
+KRKIĆ MILOVAN
+KRKLEC JOSIP
+KRKLEC VERA
+KRKLEC VLADIMIR
+KRKLJEŠ ĐURO
+KRKLJEŠ BORA
+KRKLJEŠ MILE DR
+KRKLJIĆ ĐURO
+KRKLJIĆ DRAGAN
+KRKLJIĆ MILAN
+KRKLJIĆ MILOVAN
+KRKLJIĆ NIKOLA
+KRKLJIĆ OSTOJA
+KRKLJUŠ BOŠKO
+KRKLJUŠ BRANKO
+KRKLJUŠ DRAGANA
+KRKLJUŠ DUŠANKA
+KRKLJUŠ DUŠAN
+KRKLJUŠ JELENA
+KRKLJUŠ JELICA
+KRKLJUŠ KRISTINA
+KRKLJUŠ LJUBINKA
+KRKLJUŠ LJUBOMIRKA DR
+KRKLJUŠ MILAN
+KRKLJUŠ MILAN
+KRKLJUŠ MILICA
+KRKLJUŠ MILORAD
+KRKLJUŠ MIROSLAV
+KRKLJUŠ MOMČILO
+KRKLJUŠ PETAR
+KRKLJUŠ PETAR
+KRKLJUŠ RADE
+KRKLJUŠ SLAVKO
+KRKLJUŠ SLOBODAN
+KRKLJUŠ STEVAN
+KRKLJUŠ VERICA
+KRKOBABIĆ ILIJA
+KRKOBABIĆ VERICA
+KRKOVIĆ-JUPEK DUŠANKA
+KRMAR DUŠAN
+KRMAR JASNA
+KRMAR MARKO
+KRMAR ZORA
+KRMPOT GOJKO
+KRMPOT LAZAR
+KRMPOTIĆ ANĐELKA
+KRMPOTIĆ VOJISLAV DIPL PRAVNIK
+KRMPOTIĆ VUKICA
+KRNČEVIĆ ANĐELKA
+KRNAJAC ŽIVAN
+KRNAJAC IVAN
+KRNAJAC MOMČILO
+KRNAJAC NEVENKA
+KRNAJAC PETAR
+KRNAJAC RADOVAN
+KRNAJAC ZLATICA
+KRNAJSKI MILORAD
+KRNDIJA BOGOLJUB
+KRNDIJA BRANKO
+KRNDIJA MARKO
+KRNDIJA MILOVAN
+KRNDIJA NENAD
+KRNDIJA PETAR
+KRNDIJA STANA
+KRNDIJA STEVO
+KRNDIJA VOJIN
+KRNETA BOGDAN
+KRNETA JELKA
+KRNETA MILORAD
+KRNETA MILOSAVA
+KRNETA NIKOLA
+KRNETA RADE
+KRNETA SLOBODAN
+KRNETA STEVAN
+KRNETIĆ GOJKO
+KRNETIĆ JOVAN
+KRNIĆ ANA
+KRNIĆ PERA
+KRNIĆ RADOJKA
+KRNIĆ STEVAN
+KRNIĆ STIPO
+KRNIJA MARINKO
+KRNJAIĆ DRAGO
+KRNJAIĆ GORAN
+KRNJAIĆ JELISAVETA
+KRNJAJIĆ DUŠANKA
+KRNJAJIĆ ILIJA
+KRNJAJIĆ IVICA
+KRNJAJIĆ JOVAN
+KRNJAJIĆ MILOŠ
+KRNJAJIĆ MIROSLAV
+KRNJAJIĆ RADOMIR
+KRNJEŠEVAC SAVA
+KRNJETA LEPOSAVA
+KRNJETA NOVAK
+KRNJETIN ŽIVKO
+KRNJETIN BRANKO
+KRNJETIN DRAGAN
+KRNJETIN JOVAN
+KRNJETIN KATICA
+KRNJETIN MAJA
+KRNJETIN MIKA
+KRNJETIN SAVA
+KRNJIĆ IVAN
+KRNJULAC DUŠAN
+KRNOJELAC DANILO
+KROŠLAK STEVAN
+KROMBHOLC EMIL
+KROMHOLC KARLO
+KROMPIĆ LJILJANA PROFESOR
+KROMPIĆ LJUBICA
+KROMPIĆ MILAN
+KROMPIĆ STANKO
+KRONAVETER ALFRED
+KRONIĆ LAZAR
+KRONIĆ MILENKO
+KRONJA IVAN
+KRONJA IVAN
+KRONJA MILANKA
+KROPŠ HILDA
+KROPAČEK IVAN
+KROPF ANĐELKA
+KROPF FRANJA
+KRPAN ŽELJKO
+KRPAN IVAN
+KRPAN LJILJANA
+KRPAN MIRKO
+KRPAN STEVAN
+KRSMANOVIĆ BOŽIDARKA
+KRSMANOVIĆ BOGDANKA
+KRSMANOVIĆ BRANKO
+KRSMANOVIĆ CVIJAN
+KRSMANOVIĆ JOVAN
+KRSMANOVIĆ KRSMAN DIPL ING
+KRSMANOVIĆ LAZAR
+KRSMANOVIĆ LJILJANA
+KRSMANOVIĆ MILOŠ
+KRSMANOVIĆ MOMČILO
+KRSMANOVIĆ OBREN
+KRSMANOVIĆ SAŠA
+KRSMANOVIĆ SLAVOJKA
+KRSMANOVIĆ SRETEN
+KRSMANOVIĆ VASA
+KRSNIK JON
+KRSNIK MARIJA
+KRSTAJIĆ MILOJICA
+KRSTAJIĆ PERKO
+KRSTANOVIĆ CVIJO
+KRSTANOVIĆ DRAGOMIR
+KRSTANOVIĆ FRANJA
+KRSTANOVIĆ IVANKA
+KRSTANOVIĆ KOSTA
+KRSTANOVIĆ MOMČILO
+KRSTANOVIĆ PETAR
+KRSTEKANIĆ ČEDOMIR
+KRSTEKANIĆ ANA
+KRSTEKANIĆ KRISTINA
+KRSTEKANIĆ RATOMIR
+KRSTEVSKI DRAGOSLAV
+KRSTEVSKI STANISLAV
+KRSTIĆ-ŠTIMAC SPASENIJA DR
+KRSTIĆ ŽARKO
+KRSTIĆ ŽIVAN
+KRSTIĆ ŽIVKO
+KRSTIĆ ŽIVKO
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ ĐORĐE
+KRSTIĆ-ĐURČJANSKI RUŽENKA
+KRSTIĆ ALEKSANDAR DR
+KRSTIĆ ALEKSANDAR
+KRSTIĆ ALEKSANDAR
+KRSTIĆ ALEKSANDAR
+KRSTIĆ ANDRIJA
+KRSTIĆ ANICA
+KRSTIĆ BOŠKO
+KRSTIĆ BOŽIDAR
+KRSTIĆ BOŽIDAR
+KRSTIĆ BOŽIDAR
+KRSTIĆ BOGDAN
+KRSTIĆ BORIVOJ
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANISLAV
+KRSTIĆ BRANKA
+KRSTIĆ BRANKA
+KRSTIĆ BRANKO
+KRSTIĆ DANICA
+KRSTIĆ DESANKA
+KRSTIĆ DIMITRIJE
+KRSTIĆ DOBRILA
+KRSTIĆ DOBRILA
+KRSTIĆ DOBRINKA
+KRSTIĆ DOBROSLAV
+KRSTIĆ DRAGAN
+KRSTIĆ DRAGINJA
+KRSTIĆ DRAGOLJUB
+KRSTIĆ DRAGOSLAV
+KRSTIĆ DRAGUTIN
+KRSTIĆ DUŠAN DIPL ING
+KRSTIĆ DUŠAN
+KRSTIĆ DUŠKO
+KRSTIĆ ETELKA
+KRSTIĆ EVICA
+KRSTIĆ GAVRA
+KRSTIĆ-GUNEK MARIJA
+KRSTIĆ ILIJA
+KRSTIĆ IVAN DR
+KRSTIĆ JELENA
+KRSTIĆ JELENA
+KRSTIĆ JORDAN
+KRSTIĆ JOVAN
+KRSTIĆ JOVAN
+KRSTIĆ JOVAN
+KRSTIĆ KAMENKO
+KRSTIĆ KAMENKO
+KRSTIĆ KATICA
+KRSTIĆ KATICA
+KRSTIĆ KATICA
+KRSTIĆ KORNELIJA
+KRSTIĆ LAZAR
+KRSTIĆ LAZAR
+KRSTIĆ LJILJANA
+KRSTIĆ LJILJANA
+KRSTIĆ LJUBIŠA
+KRSTIĆ LJUBIŠA
+KRSTIĆ LJUBICA
+KRSTIĆ LJUBINKA
+KRSTIĆ LJUBISAV
+KRSTIĆ LJUBOMIR
+KRSTIĆ LJUBOMIR
+KRSTIĆ LJUBOMIR
+KRSTIĆ LJUBOMIR
+KRSTIĆ LJUBOMIR
+KRSTIĆ MARIJA
+KRSTIĆ MARIJA
+KRSTIĆ MARIJA
+KRSTIĆ MARKO
+KRSTIĆ MILADIN
+KRSTIĆ MILAN
+KRSTIĆ MILAN
+KRSTIĆ MILAN
+KRSTIĆ MILENKO
+KRSTIĆ MILENKO
+KRSTIĆ MILICA
+KRSTIĆ MILICA
+KRSTIĆ MILICA
+KRSTIĆ MILICA
+KRSTIĆ MILICA
+KRSTIĆ MILOŠ
+KRSTIĆ MILOŠ
+KRSTIĆ MILOJKO
+KRSTIĆ MILORAD
+KRSTIĆ MILORAD
+KRSTIĆ MILORAD
+KRSTIĆ MILORAD
+KRSTIĆ MILOVAN
+KRSTIĆ MILOVAN
+KRSTIĆ MILOVAN
+KRSTIĆ MINČE DIPL ING
+KRSTIĆ MIODRAG
+KRSTIĆ MIODRAG
+KRSTIĆ MIODRAG
+KRSTIĆ MIRKO
+KRSTIĆ MIRKO
+KRSTIĆ MIROLJUB
+KRSTIĆ MIROLJUB
+KRSTIĆ MIROSLAVA
+KRSTIĆ MIROSLAVA
+KRSTIĆ MIROSLAV
+KRSTIĆ MITAR
+KRSTIĆ NADA
+KRSTIĆ NEBOJŠA
+KRSTIĆ NENAD
+KRSTIĆ NENAD
+KRSTIĆ NIKOLA
+KRSTIĆ NIKOLA
+KRSTIĆ NIKOLA
+KRSTIĆ NOVAK
+KRSTIĆ NOVAK
+KRSTIĆ PETAR DIPL ING
+KRSTIĆ PETAR
+KRSTIĆ PETAR
+KRSTIĆ PETAR
+KRSTIĆ PETAR
+KRSTIĆ PETRUN
+KRSTIĆ RADISAV
+KRSTIĆ RADIVOJ
+KRSTIĆ RADIVOJ
+KRSTIĆ RADOJE
+KRSTIĆ RADOMIR
+KRSTIĆ RADOMIR
+KRSTIĆ RADOSAV
+KRSTIĆ RADOSLAV
+KRSTIĆ RADOVAN
+KRSTIĆ RATKO
+KRSTIĆ RATKO
+KRSTIĆ SAVA
+KRSTIĆ SAVETA
+KRSTIĆ SINIŠA
+KRSTIĆ SLAVICA
+KRSTIĆ SLOBODAN
+KRSTIĆ SRĐAN
+KRSTIĆ SRETEN
+KRSTIĆ STANKO
+KRSTIĆ STANOJE
+KRSTIĆ STEVAN
+KRSTIĆ STEVAN
+KRSTIĆ STEVAN
+KRSTIĆ STEVAN
+KRSTIĆ STEVAN
+KRSTIĆ STOJANKA
+KRSTIĆ SVETISLAV
+KRSTIĆ SVETISLAV
+KRSTIĆ SVETLANA
+KRSTIĆ SVETLANA
+KRSTIĆ SVETOZAR
+KRSTIĆ TINKA
+KRSTIĆ UGLJEŠA DR
+KRSTIĆ VASA DR LEKAR
+KRSTIĆ VASA
+KRSTIĆ VASILIJE DIPL ING
+KRSTIĆ VASILIJE
+KRSTIĆ VELIMIR
+KRSTIĆ VELJKO
+KRSTIĆ VERA
+KRSTIĆ VERA
+KRSTIĆ VESELIN
+KRSTIĆ VLADA
+KRSTIĆ VOJIN
+KRSTIĆ-VRŽINA BOSANKA
+KRSTIĆ VUKICA
+KRSTIĆ ZORAN
+KRSTIĆ ZORAN
+KRSTIN ŽIVKA
+KRSTIN BRANKO
+KRSTIN IVAN
+KRSTIN JELKA
+KRSTIN KOSTA
+KRSTIN LAZAR
+KRSTIN MLADEN
+KRSTIN NATAŠA
+KRSTIN PETAR
+KRSTIN SLAVKO
+KRSTIN STEVAN
+KRSTIN SVETOZAR
+KRSTIN VERA
+KRSTIN VLADAN
+KRSTIN ZORAN
+KRSTINIĆ DRAGAN
+KRSTONOŠIĆ ŽIVAN
+KRSTONOŠIĆ BOSILJKA
+KRSTONOŠIĆ JELENA
+KRSTONOŠIĆ JOVAN
+KRSTONOŠIĆ LJUBICA
+KRSTONOŠIĆ MILANKA
+KRSTONOŠIĆ MILENKO
+KRSTONOŠIĆ MILENKO
+KRSTONOŠIĆ MIROSLAV
+KRSTONOŠIĆ NADA
+KRSTONOŠIĆ NESTOR
+KRSTONOŠIĆ PETAR
+KRSTONOŠIĆ PETAR
+KRSTONOŠIĆ STEVAN
+KRSTONOŠIĆ VERA
+KRSTONOŠIĆ VIDA
+KRSTONOŠIĆ ZLATA DR
+KRSTONOŠIĆ ZORA
+KRSTOVSKI RADOJKA
+KRTENIĆ BRANKO
+KRTENIĆ DOBRILA
+KRTENIĆ PAVLE
+KRTINIĆ BORA
+KRTINIĆ DANE
+KRTINIĆ DANE
+KRTINIĆ MIRJANA
+KRTINIĆ MIRKO
+KRTINIĆ MIROSLAV
+KRTINIĆ NADA
+KRTINIĆ SAVA
+KRTINIĆ SMILJANA
+KRTINIĆ VLADIMIR
+KRUČIČAN MILAN
+KRUŠKA ĐORĐE
+KRUŠKA STEVAN
+KRUŽEVIĆ DEJAN
+KRUŽEVIĆ NENAD
+KRUŽEVIĆ VLADIMIR
+KRUŽEVIĆ ZDRAVKO
+KRUŽEVIĆ ZORAN
+KRUŽIĆ ANA
+KRULJ BRANISLAVA
+KRULJ MILAN
+KRUNIĆ ŽIVAN
+KRUNIĆ ŽIVORAD
+KRUNIĆ ĐORĐE
+KRUNIĆ ĐORĐE
+KRUNIĆ ĐORĐE
+KRUNIĆ-BELIĆ MILANA
+KRUNIĆ BRANKO
+KRUNIĆ BRANKO
+KRUNIĆ BRANKO
+KRUNIĆ DARA
+KRUNIĆ DRAGOLJUB
+KRUNIĆ DRAGOMIR
+KRUNIĆ GRADIMIR
+KRUNIĆ ILIJA
+KRUNIĆ ILONKA
+KRUNIĆ JELENA
+KRUNIĆ LJUBIŠA
+KRUNIĆ LJUBICA
+KRUNIĆ LJUBOMIR
+KRUNIĆ MIĆO
+KRUNIĆ MIKA
+KRUNIĆ MILANKA
+KRUNIĆ MILAN
+KRUNIĆ MILOŠ
+KRUNIĆ NOVAK
+KRUNIĆ PAVLE
+KRUNIĆ PERIŠA
+KRUNIĆ PLEMENKA
+KRUNIĆ RADOJKA
+KRUNIĆ SLOBODAN
+KRUNIĆ SOFIJA
+KRUNIĆ TOŠICA
+KRUNIĆ UROŠ
+KRUNIĆ VELIČKO
+KRUNIĆ VERICA
+KRUNIĆ ZDRAVKO
+KRUPEŽEVIĆ DARINKA
+KRUPEŽEVIĆ PRVOSLAV
+KRUPLJANIN STANA
+KRUPLJANIN VESELA
+KRUTA BOŽANA
+KRUTA DRAGAN
+KRVAVAC BISERKA
+KRVAVICA DRAŽEN
+KRVAVICA TOMISLAV
+KRVOPIĆ OLGA
+KRZMANOVIĆ MARGARETA
+KRZNARIĆ MILE
+KRZNARIĆ VALENTINA
+KUČ SLOBODAN
+KUČERA ALEKSANDAR
+KUČERA STEVAN
+KUČIĆ NIKOLA
+KUČMAŠ IRENA
+KUČMAŠ NATAŠA
+KUČMAŠ NIKOLA
+KUČNER LADISLAV
+KUŠAKOVIĆ SMILJA
+KUŠLIĆ MILAN
+KUŠLJAN SLAVKO
+KUŠLJIĆ BORISLAV
+KUŠLJIĆ BORISLAV
+KUŠLJIĆ BORIS
+KUĆ STANKA
+KUŽATKO ANICA
+KUŽATKO EMIL
+KUŽATKO MARTA
+KUŽATKO VLADIMIR
+KUŽELKA SIMA
+KUŽETIN BOŽA
+KUŽETIN JELISAVETA
+KUŽETIN MARA
+KUŽETIN MILAN
+KUŽETIN NOVAK
+KUŽEVSKI MILIVOJE
+KUŽIĆ DRAGUTIN
+KUŽIĆ MLADEN
+KUŽIĆ MLADEN
+KUŽIĆ PETAR
+KUBANJI ANA
+KUBANOVI ZLATKO
+KUBAT MILAN DIPL ING
+KUBAT UROŠ
+KUBATOVIĆ ANA
+KUBATOVIĆ ILIJA
+KUBEČKA MILAN
+KUBET MILAN
+KUBIČELA PETAR
+KUBIČKO FERENC
+KUBICA STJEPAN
+KUBICA VERA
+KUBIK FRANCIŠKA
+KUBINJEC JOSIP
+KUBURIĆ MIĆO
+KUBURIĆ NOVKA
+KUBURIĆ SVETOZAR
+KUCULOVIĆ DANICA
+KUCULOVIĆ VOJISLAV
+KUCURAC DIMITRIJE
+KUCURAC MARA
+KUCURAC NADEŽDA
+KUCURAC STEVAN
+KUCURSKI ĐURICA
+KUCURSKI DRAGOMIR
+KUCURSKI RADISLAV
+KUDIĆ MILOSAVA
+KUDIĆ STEVA
+KUDRA DANIJELA
+KUDRA OLGA
+KUDRA-ZIKOVIĆ LJUBICA
+KUDRIĆ DESIMIR
+KUGA JOVAN
+KUGIĆ ILIJA
+KUGIĆ RADMILA
+KUGIĆ SAVKA
+KUGLI IMRE
+KUGLI JOSIP
+KUGLI MIHAJLO
+KUGLI MIHALJ
+KUGLI PAVAO
+KUGLI ROŽIKA
+KUGLI STEVAN
+KUHAJDA ŠANDOR
+KUHAJDA KSENIJA MR
+KUHAJDA VLADIMIR MR
+KUHAJDA ZLATA
+KUHAR JELENA
+KUHAR JOVAN
+KUHAR SLAVICA
+KUJAČIĆ DRAGAN
+KUJOVIĆ NEDA
+KUJOVIĆ SOFIJA
+KUJUNDŽIĆ LUJZA
+KUJUNDŽIĆ MIODRAG
+KUJUNDŽIĆ TOMANIJA
+KUJUNDŽIĆ VERA
+KUKAVICA JORDAN
+KUKAVICA MIRKO
+KUKAVICA RUŽICA
+KUKAVSKI PAVLE
+KUKIĆ ŽARKO
+KUKIĆ BRANKA
+KUKIĆ DRAGAN
+KUKIĆ GOJKO
+KUKIĆ GORDANA
+KUKIĆ JELICA
+KUKIĆ JELKA
+KUKIĆ MILAN
+KUKIĆ MILOJKA
+KUKIĆ MIRJANA
+KUKIĆ MIRKO
+KUKIĆ NEBOJŠA
+KUKIĆ NIKOLA
+KUKIĆ PETAR
+KUKIĆ SLOBODAN
+KUKIĆ STEVAN
+KUKIĆ SVETOZAR
+KUKIĆ VERA
+KUKIĆ VLADIMIR
+KUKIĆ ZORAN
+KUKIĆ ZORAN
+KUKIĆ ZVONIMIR
+KUKIN ŽIVAN
+KUKIN ALEKSANDAR
+KUKIN DEJAN
+KUKIN SMILJKA
+KUKLA IVAN
+KUKOČ VINKO
+KUKOBAT RADOVAN
+KUKOLJ DANE
+KUKOLJ DRAGAN
+KUKOLJ DUŠKO
+KUKOLJ MILKA
+KUKOLJ MIRJANA
+KUKOLJ RADMILA
+KUKOLJ RAJKO
+KUKOVSKI JOVAN
+KUKRIKA BOŠKO
+KUKUČKA JAN
+KUKUČKA MIHAJLO
+KUKULJ DOBRILA
+KUKUROV JOSIF
+KUKURUZOVIĆ JELENA
+KUKURUZOVIĆ VLADIMIR
+KULČAR IŠTVAN
+KULAČANIN ANICA
+KULAČANIN BRANISLAV
+KULAČANIN MILENKO
+KULAČANIN NADA
+KULAČIĆ ZVONIMIR
+KULAČIN ĐURO
+KULAČIN BUDIMKA
+KULAČIN DUŠAN
+KULAČIN SLAVKO
+KULAČKI MITAR
+KULAŠ MARKO
+KULAŠ SLOBODAN
+KULAŠEVIĆ ZLATA
+KULAŠINOVIĆ ANĐELKA
+KULAŠINOVIĆ DANICA
+KULAŠINOVIĆ DUŠICA
+KULAŠINOVIĆ MILAN
+KULAŠINOVIĆ MILIVOJ
+KULAUZOV ARKADIJE
+KULAUZOV JOVANKA
+KULAUZOV MILENKO DR
+KULEŠEVIĆ OLIVERA
+KULEŠEVIĆ PETAR
+KULEŠKO DRAGOSLAVA
+KULENOVIĆ AHMED
+KULENOVIĆ ZORAN
+KULEVSKI KATICA
+KULEVSKI ROŽA
+KULEVSKI ROŽA
+KULIŠIĆ NEDA
+KULIŠIĆ OLGA
+KULIŠIĆ SLAVOLJUB
+KULIĆ DARINKA
+KULIĆ JOVAN
+KULIĆ JOVO
+KULIĆ LAZAR
+KULIĆ NEBOJŠA
+KULIĆ RADIVOJ
+KULIĆ VLADIMIR
+KULIDŽAN DRAGUTIN
+KULIDŽAN NEMANJA
+KULIDŽAN VASO DR
+KULJAČA ILIJA
+KULJAČA PETAR
+KULJAK MARIJA
+KULJANČIĆ DUŠAN
+KULJANČIĆ JULKA
+KULJANČIĆ MILENA
+KULJANČIĆ NIKOLA
+KULJANČIĆ SAVO
+KULJANČIĆ VERA
+KULJANIN JAKOV
+KULJANKIĆ MURADIF
+KULJANSKI OLGA
+KULJANSKI SLAVKO
+KULJIŠ SLOBODAN
+KULJIĆ BISERKA
+KULJIĆ DRAGOSLAV
+KULJIĆ LAZAR
+KULJIĆ LJUBOMIR
+KULJIĆ MIRJANA
+KULJIĆ NEDELJKO
+KULJIĆ NIKOLA
+KULJIĆ PETAR
+KULJIĆ SAVO
+KULJIĆ-SMUĐA MAGDALENA
+KULJIĆ ZDRAVKO
+KULKA GRETA
+KULPINČEVIĆ ĐORĐE
+KULPINČEVIĆ JOVO
+KULPINSKI DUŠAN
+KULPINSKI MIRJANA
+KULPINSKI STEVAN
+KULPINSKI VUJADIN
+KUMANOV ŽIVAN
+KUMANOV BOŽIDAR
+KUMANOVIĆ MIODRAG
+KUMAZEC LAZA
+KUMOVIĆ BRANKA
+KUMOVIĆ MILICA
+KUMOVIĆ SAVO
+KUN ĐURA
+KUN ALEKSANDAR
+KUN BELA
+KUN DANICA
+KUN EDITA
+KUN ERNE
+KUN LASLO
+KUN STEVAN
+KUNČAKOVA MARIJA
+KUNARAC ANIELA
+KUNDAČINA JOVO
+KUNDAČINA RADOVAN
+KUNDAČINA SAVO
+KUNIĆ ĐORĐE
+KUNIĆ GORDANA
+KUNIĆ VESELINKA
+KUNOSIĆ NEDŽAD
+KUNOSIĆ OSMAN
+KUNOVAC LJUBO
+KUNST IREN
+KUNSTMAN ANASTASIJA
+KUPEK ŽELJKA
+KUPEK ZORICA
+KUPIROVIĆ SOFIJA
+KUPREŠAK DANILO
+KUPREŠAK VIDA
+KUPREŠANIN BILJANA
+KUPREŠANIN ILIJA
+KUPREŠANIN MILE DIPL ING
+KUPREŠKI JOCA
+KUPREŠKI VERA
+KUPUSAREVIĆ BRANISLAV
+KUPUSINAC BRANISLAV
+KUPUSINAC VELJKO
+KURČUBIĆ DRAGIĆ
+KURČUBIĆ MELANIJA
+KURŠUMOVIĆ AVDULAH
+KURAJIĆ JOVAN
+KURAN IVAN
+KURANJI JAN
+KURANJI JAN
+KURBALIJA ĐORĐE
+KURBALIJA DANICA
+KURBALIJA JOVAN
+KURBALIJA LAZAR
+KURBALIJA MIRJANA
+KURBATFINSKI FEĐA DIPL ING
+KURBATFINSKI IVAN
+KURBATFINSKI SLAVKO
+KURBATFINSKI VLADIMIR
+KURBATVINSKI DINA
+KURBATVINSKI IVAN
+KURBATVINSKI STEVAN
+KURBATVINSKI ZORA
+KURCINAK EMIL
+KURCINAK IMRE
+KURCINAK JOSIP
+KURCINAK LAJOŠ
+KURCINAK PAVLE
+KURCINAK STEVAN
+KURCINAK VESNA
+KURDI AMALIJA
+KURDOVSKI MITAR
+KURDULIĆ MILOŠ
+KUREŠEVIĆ RACKO
+KUREŠEVIĆ SAVO
+KUREKAŠ MITAR
+KUREPA VASA
+KURIŠ ŠTEFAN
+KURIDŽA BOGDAN
+KURIDŽA DUŠAN
+KURIJ TOMISLAV
+KURIJA VELJKO
+KURIKŠA ANTONINA
+KURILA JANOŠ
+KURILIĆ JOVO
+KURILIĆ MILAN
+KURILIĆ MILOŠ
+KURILIĆ MIROSLAV
+KURIN ĐORĐE
+KURIN JOSIP
+KURJAČKI ŽIVKO
+KURJAČKI ĐORĐE
+KURJAČKI ĐURĐINA
+KURJAČKI ANKICA
+KURJAČKI DANICA
+KURJAČKI JOVAN
+KURJAČKI MIHAJLO
+KURJAČKI MILAN
+KURJAČKI MILEVA
+KURJAČKI MILEVA
+KURJAČKI MILICA
+KURJAČKI MILIVOJ
+KURJAČKI MIODRAG
+KURJAČKI MIRJANA
+KURJAČKI MIRJANA
+KURJAČKI SREDOJE
+KURJAČKI STANKO
+KURJAČKI STEVAN
+KURJAČKI SVETOZAR
+KURJAČKI ZORA
+KURJAKOV ĐORĐE
+KURJAKOV DANILO
+KURJAKOV DRAGAN
+KURJAKOV MILAN
+KURJAKOV MILIVOJ
+KURJAKOV ROKSANDA
+KURJAKOV VIKTORIJA
+KURS ĐORĐE
+KURTA AZIS
+KURTEŠ JASNA
+KURTEŠ LAZAR
+KURTEŠ MARA
+KURTEŠ SVETKO
+KURTEŠI FUAT
+KURTEŠI NUSRET
+KURTEŠI ZENUN
+KURTI MUSTAFA
+KURTI NEZIR
+KURTIŠEVIĆ NASUF
+KURTIĆ ALEKSANDAR
+KURTIĆ BRANISLAVA
+KURTIĆ MILOVAN
+KURTINOVIĆ PREDRAG
+KURTOVIĆ ANA
+KURTOVIĆ IVAN
+KURTUŠIĆ IVANKA
+KURUČEV MARIJA
+KURUČEV MIRJANA
+KURUČEV SLOBODAN
+KURUČKI KAMENKO
+KURUČKI VLADIMIR
+KURUČKI ZLATIMIR
+KURUŠIĆ BORO
+KURUC ĐULA
+KURUC ĐULA
+KURUC IGNAC
+KURUC IRENA
+KURUC JANOŠ
+KURUC JOVO
+KURUC LAJOŠ
+KURUC LASLO
+KURUC NANDOR
+KURUC TIBOR
+KURUC VINKA
+KURUCA BOŽA
+KURUCA JOVAN
+KURUCIĆ DRAGAN
+KURUCIĆ LJUBICA
+KURUCIĆ SINIŠA
+KURUCIĆ VITOMIR
+KURUCIN ŽIVANA
+KURUNCI ANDRIJA
+KURUNCI JOŽEF
+KURUNCI JOŽEF
+KURUNCI MARIJA
+KURUZOVIĆ TATJANA
+KUSIĆ SRETKO
+KUSLI FERENC
+KUSLI GEZA
+KUSMUK DARINKA
+KUSTIĆ SOFIJA
+KUSTUDIJA DANICA
+KUSTUDIJA MIROSLAV
+KUSTUDIJA SLOBODAN
+KUSTURIĆ NIKOLA
+KUSTURIĆ SELIMIR
+KUSTURICA HASAN
+KUSTURICA NAZIF
+KUSTURIN ANTUN
+KUSTURIN MIRJANA
+KUSUROVIĆ ANKICA
+KUTIJEVAC LJUBICA
+KUTLAČA MARKO
+KUTLEŠIĆ LJUBIŠA
+KUTLEŠIĆ LJUBIŠA
+KUTRI KARLO
+KUTRI KAROLJ
+KUTRI STEVAN
+KUTRIČKI ZORAN
+KUTUZOV MILORAD
+KUTUZOV MIROSLAV
+KUVALJ STEVAN
+KUVALJA DRAGAN
+KUVALJA DRAGOLJUB
+KUVALJA KATICA
+KUVALJA OSTOJA
+KUVEKALOVIĆ RADOSLAV
+KUVEKALOVIĆ STRAIN
+KUVELJIĆ ŽARKO
+KUVELJIĆ LJILJANA
+KUVELJIĆ RADIVOJE
+KUVELJIĆ RADOMAN
+KUVIZIĆ ŽIVOJIN
+KUVIZIĆ ŽIVOJIN
+KUZEVSKI DRAGAN
+KUZMAN ANKA
+KUZMAN BOGDAN
+KUZMAN BOGDAN
+KUZMAN BORISLAV
+KUZMAN DIMITRIJE
+KUZMAN DRAGAN
+KUZMAN MILAN
+KUZMAN MILOVAN
+KUZMAN MIRKO
+KUZMAN NADA
+KUZMAN NADA
+KUZMAN NADA
+KUZMAN NADEŽDA
+KUZMAN PETAR
+KUZMAN RISTO
+KUZMAN SLAVICA
+KUZMANČEV ALEKSANDAR
+KUZMANČEV DIMITRIJE
+KUZMANČEV DUŠAN
+KUZMANČEV OLIVERA DR
+KUZMANČEV TIMOŠENKO
+KUZMANOV BORISLAV
+KUZMANOV MARIJA
+KUZMANOV OBRAD
+KUZMANOV OBRAD
+KUZMANOV RADOŠ DIPL ING
+KUZMANOV RADOSLAV
+KUZMANOV SAVA
+KUZMANOV SLAVKO
+KUZMANOV SVETISLAV
+KUZMANOV TANASIJE
+KUZMANOV ZORAN
+KUZMANOVIĆ ČEDOMIR
+KUZMANOVIĆ ŽIVOJIN
+KUZMANOVIĆ ĐORĐE
+KUZMANOVIĆ ĐURA
+KUZMANOVIĆ ALEKSANDAR
+KUZMANOVIĆ ANGELINA
+KUZMANOVIĆ BOŠKO
+KUZMANOVIĆ BOGDAN
+KUZMANOVIĆ BOGDAN
+KUZMANOVIĆ BORISLAV
+KUZMANOVIĆ BRANISLAVA
+KUZMANOVIĆ BRANISLAV
+KUZMANOVIĆ DANICA
+KUZMANOVIĆ DARINKA
+KUZMANOVIĆ DEJAN
+KUZMANOVIĆ DRAGINJA
+KUZMANOVIĆ DRAGOMIR
+KUZMANOVIĆ DRAGUTIN
+KUZMANOVIĆ DRAGUTIN
+KUZMANOVIĆ DUŠAN
+KUZMANOVIĆ DUŠAN
+KUZMANOVIĆ DUŠAN
+KUZMANOVIĆ DUŠKO
+KUZMANOVIĆ GORAN
+KUZMANOVIĆ JELENA
+KUZMANOVIĆ JOVAN
+KUZMANOVIĆ JOVAN
+KUZMANOVIĆ KATA
+KUZMANOVIĆ LAZAR
+KUZMANOVIĆ LAZAR
+KUZMANOVIĆ LAZO
+KUZMANOVIĆ LENKA
+KUZMANOVIĆ LJILJANA
+KUZMANOVIĆ LJUBIŠA
+KUZMANOVIĆ LJUBICA
+KUZMANOVIĆ LJUBICA
+KUZMANOVIĆ LJUBICA
+KUZMANOVIĆ LJUBOMIR
+KUZMANOVIĆ MILAN
+KUZMANOVIĆ MILAN
+KUZMANOVIĆ MILENA
+KUZMANOVIĆ MILENKO
+KUZMANOVIĆ MILE
+KUZMANOVIĆ MILJOJKO DIPL ING
+KUZMANOVIĆ MILOŠ
+KUZMANOVIĆ MILOŠ
+KUZMANOVIĆ MILOŠ
+KUZMANOVIĆ MILOŠ
+KUZMANOVIĆ MIODRAG
+KUZMANOVIĆ MIRJANA
+KUZMANOVIĆ MLADEN
+KUZMANOVIĆ NADA
+KUZMANOVIĆ NADEŽDA
+KUZMANOVIĆ NENAD
+KUZMANOVIĆ NEVENA
+KUZMANOVIĆ NIKOLA
+KUZMANOVIĆ NIKOLA
+KUZMANOVIĆ PAJA
+KUZMANOVIĆ PETAR
+KUZMANOVIĆ PETAR
+KUZMANOVIĆ PREDRAG
+KUZMANOVIĆ RADIVOJ
+KUZMANOVIĆ RADIVOJ
+KUZMANOVIĆ RADOJKO
+KUZMANOVIĆ RADOSAV
+KUZMANOVIĆ RADOSLAV
+KUZMANOVIĆ RAJKO
+KUZMANOVIĆ SLAVKO
+KUZMANOVIĆ SLAVKO
+KUZMANOVIĆ SLOBODAN
+KUZMANOVIĆ SLOBODAN
+KUZMANOVIĆ SLOBODAN
+KUZMANOVIĆ SPOMENKA
+KUZMANOVIĆ STOJAN
+KUZMANOVIĆ STOJAN
+KUZMANOVIĆ TODOR
+KUZMANOVIĆ TODOR
+KUZMANOVIĆ VASILIJE
+KUZMANOVIĆ VASILIJE
+KUZMANOVIĆ VERA
+KUZMANOVIĆ VERA
+KUZMANOVIĆ VLASTIMIR
+KUZMANOVIĆ VOJISLAV
+KUZMANOVIĆ ZDRAVKO
+KUZMANOVIĆ ZORAN
+KUZMANOVIĆ ZORA
+KUZMANOVSKI BLAGOJA
+KUZMANOVSKI CVETA
+KUZMANOVSKI DUŠAN
+KUZMANOVSKI MILE
+KUZMANOVSKI PERE
+KUZMANOVSKI RADOJKA
+KUZMANOVSKI TASE
+KUZMANOVSKI TRAJČE
+KUZMIĆ MILKA
+KUZMIĆ ZVONKO
+KUZMINAC BORISLAV
+KUZMINAC GORDANA
+KUZMINAC PETAR
+KUZMINAC PREDRAG
+KUZMINAC RADOSLAV
+KVAŠČEV JOVAN
+KVAŠČEV MIRA
+KVAŠČEV RADIVOJ
+KVAIĆ ĐORĐE
+KVAIĆ DUŠAN
+KVAIĆ JELENA
+KVAIĆ MILEVA
+KVRGIĆ BOŠKO
+KVRGIĆ MILAN
+KVRGIĆ PETAR
+KVRGIĆ RADOVAN
+KVRGIĆ SAVO
+KVRGIĆ TOMISLAV
+LAČANSKI DESANKA
+LAČOK KARLO
+LAČOK KAROLJ
+LAŠKOV IGOR DIPL ING
+LAĆAK ĐURA
+LAĆAK MIHALJ
+LAĆANSKI VOJISLAV
+LAĆARAC ŽARKO
+LAĆARAC BILJANA
+LAĆARAC BORISLAV
+LAĆARAC DOBRIVOJE
+LAĆARAC JOVAN
+LAĆARAC MAKSIM
+LAĆARAC NIKOLA
+LAĆARAC NIKOLA
+LAĆARAC NIKOLA
+LAĆARAC TEODOR
+LAĆARAC VERA
+LAĆARAK ŽARKO
+LAĆARAK LAZAR
+LAĆARAK LAZA
+LAĆARAK MILOŠ
+LAĆARAK MLADEN
+LAĆARAK OGNJANKA
+LAŽEGIĆ NEVENKA
+LAŽETIĆ ALEKSANDAR
+LAŽETIĆ MARIJA DR
+LAĐEVAC DUŠAN
+LAĐEVIĆ DRAGAN
+LAĐEVIĆ GOJKO
+LAĐEVIĆ JOVAN
+LAĐINOVIĆ ŽIKA
+LAĐINOVIĆ ZLATKO
+LABAŠ IVAN
+LABADI JOŽEF
+LABAN JULKA
+LABAN MIRKO
+LABAT ANA
+LABAT ANKA
+LABAT JAN
+LABAT KVETOSLAVA
+LABAT RUŽENA
+LABAT STEVAN
+LABAT VERA
+LABAT VLADIMIR
+LABAT VLADISLAV
+LABAVIĆ IVAN
+LABOVIĆ BOŽIDAR
+LABOVIĆ MANOJLO
+LABROVIĆ MIRKO
+LABUDOVIĆ BORIS
+LABUDOVIĆ HELENA
+LABUDOVIĆ ROZALIJA
+LABUDOVIĆ VLADIMIR
+LABUS ĐURO
+LABUS BOŽIDAR
+LABUS BRANKO
+LABUS ILIJA
+LABUS JOVAN
+LABUS LJUBOMIR
+LABUS MAKEDONKA
+LABUS MILAN
+LABUS MILAN
+LABUS MILAN
+LABUS MILAN
+LABUS MILE
+LABUS NIKOLA
+LABUS SLAVKO
+LACIK JANOŠ
+LACIK SLAVICA
+LACKO MIHAJLO
+LACKOVIĆ DRAGIŠA
+LACKOVIĆ JOSIP
+LACKOVIĆ RADE
+LACKOVIĆ RADOVAN
+LACKOVIĆ SOFIJA
+LACKOVIĆ STANIMIR
+LACKOVIĆ ZLATKO
+LACKOVIĆ ZORAN
+LACMANOVIĆ MIODRAG
+LACMANOVIĆ SLAVOJKA
+LADAR MILOŠ
+LADAR STEVAN
+LADI IŠTVAN
+LADI LAJOŠ
+LADI MARIJA
+LADIŠIĆ ANTON
+LADIŠIĆ GUSTAV
+LADIŠIĆ JELISAVETA
+LADIŠIĆ JOSIP
+LADIŠIĆ MIRKO
+LADIŠIĆ NIKOLA
+LADIŠIĆ STEVAN
+LADIK ŠANDOR
+LADIK FERENC
+LADIK KATALIN
+LADIK KATALIN
+LADIK MARGITA
+LADIK MIRJANA
+LADIKA BLAŽ
+LADOCKI ANDRIJA
+LADOLEŽ ERŽEBET
+LADOLEŽ MILADIN
+LAGUMDŽIJA HAMID
+LAGUMDŽIJA MILENA
+LAGUNDŽIN DRAGAN
+LAGUNDŽIN DRAGAN
+LAGUNDŽIN DRAGAN
+LAGUNDŽIN SVETOZAR
+LAGUNDŽIN ZORAN
+LAHARNAR LUCIJA
+LAHOŠ ĐORĐE
+LAHOŠ ANDRIJA
+LAHOŠ IŠTVAN
+LAINOVIĆ ALEKSA
+LAINOVIĆ BORISLAV
+LAINOVIĆ RANKO
+LAJŠIĆ STEVAN
+LAJŠIĆ ZORKA
+LAJH MARIJA
+LAJHTNER ANTAL
+LAJHTNER FRANJA
+LAJHTNER NIKOLA DIPL ING
+LAJIĆ ŠTEFKA
+LAJIĆ BRANKO
+LAJIĆ DRAGAN
+LAJIĆ DRAGOLJUB
+LAJIĆ LJILJANA
+LAJIĆ MIRKO
+LAJIĆ RAJKO
+LAJIĆ STANA
+LAJIĆ ZDRAVKO
+LAJKO ŠANDOR
+LAJKO JOSIP
+LAJKO LAJOŠ DIPL ING
+LAJKO MARIJA
+LAJKO STEVAN
+LAJKO VERA
+LAJOŠ LASLO
+LAJTER ELZA
+LAJTER GIZELA
+LAJTER IVAN
+LAJTIH SIGFRID
+LAKATOŠ AMALIJA
+LAKATOŠ ANA
+LAKATOŠ ANDRAŠ
+LAKATOŠ DRAGICA
+LAKATOŠ GIZA
+LAKATOŠ IMRE
+LAKATOŠ IMRE
+LAKATOŠ IMRE
+LAKATOŠ JASMINKA
+LAKATOŠ JELENA
+LAKATOŠ LAJOŠ
+LAKATOŠ MIHAJLO
+LAKATOŠ MILICA
+LAKATOŠ NADA
+LAKATOŠ PAVLE
+LAKATOŠ STEVAN
+LAKATOŠ TIBOR
+LAKATOŠ VERA
+LAKATOŠ VILMOŠ
+LAKATOŠ ZOLTAN
+LAKATOŠ ZOLTAN
+LAKATUŠ BRANISLAV
+LAKETA BOŽO
+LAKETIĆ LJUBOMIR
+LAKETIĆ MILAN
+LAKETIĆ MILIVOJ
+LAKIČEVIĆ NADA
+LAKIČEVIĆ-STOJAČIĆ SNEŽANA
+LAKIĆ ANĐA
+LAKIĆ ANĐELKA
+LAKIĆ BOGOSAV
+LAKIĆ BRANKO DR LEKAR
+LAKIĆ BRANKO
+LAKIĆ BRANKO
+LAKIĆ DANILO
+LAKIĆ ILIJA
+LAKIĆ JOLAN
+LAKIĆ MARKO
+LAKIĆ MIRA
+LAKIĆ MIRJANA
+LAKIĆ MLADEN
+LAKIĆ MOMIR
+LAKIĆ NIKOLA
+LAKIĆ RADIVOJE
+LAKIĆ RADIVOJ
+LAKIĆ RADIVOJ
+LAKIĆ RADMILA
+LAKIĆ RAJKO
+LAKIĆ SAVA DR
+LAKIĆ SLOBODAN
+LAKIĆ SMILJA
+LAKIĆ SPASOJE
+LAKIĆ SRĐAN
+LAKIĆ SRĐAN
+LAKIĆ SRĐAN
+LAKIĆ STEVAN
+LAKIĆ SVETISLAV
+LAKIĆ TOMISLAV
+LAKIĆ VELIMIR
+LAKIĆ VESNA
+LAKIĆ VUČETA
+LAKIĆ ZORICA
+LAKIĆEVIĆ MILIJA
+LAKIĆEVIĆ SVETLANA
+LAKIĆEVIĆ VASO
+LAKIĆEVIĆ VESNA
+LAKIĆEVIĆ VUKSAN DR
+LAKLIJA STEVAN
+LAKO MARIJA
+LAKOBRIJA DRAGAN
+LAKOBRIJA DUŠAN
+LAKOBRIJA ILIJA
+LAKOBRIJA JELENA
+LAKOBRIJA MILAN
+LAKOBRIJA MILAN
+LAKOBRIJA MILOŠ
+LAKOBRIJA MILOŠ
+LAKOBRIJA NIKOLA
+LAKOVIĆ BUDIMIR
+LAKOVIĆ DUŠKO
+LAKOVIĆ MILIĆ
+LAKOVIĆ MILORAD
+LAKOVIĆ PETAR
+LAKOVIĆ ROZALIJA
+LAKOVIĆ VASILJKA
+LALATOVIĆ DESANKA
+LALATOVIĆ DRAGUTIN
+LALATOVIĆ SLOBODANKA
+LALATOVIĆ VASILIJE
+LALIČIĆ VELIMIR
+LALIĆ ŽIVA
+LALIĆ ĐORĐE
+LALIĆ ANKICA
+LALIĆ ARKADIJE
+LALIĆ BOGDAN
+LALIĆ GLIGORIJE
+LALIĆ GOJKO
+LALIĆ GORDANA
+LALIĆ IKONIJA
+LALIĆ JAGODA
+LALIĆ JULIJANA
+LALIĆ JULKA
+LALIĆ LJUBOMIR
+LALIĆ MARIJA
+LALIĆ MILADINKA
+LALIĆ MILAN
+LALIĆ MILICA
+LALIĆ MIRKO
+LALIĆ NENAD
+LALIĆ NIKOLA
+LALIĆ RADOMIR DR
+LALIĆ SREDOJE
+LALIĆ TAMARA
+LALIĆ TODOR
+LALIĆ UGLJEŠA
+LALIĆ VASILIJE
+LALIN ALEKSANDAR
+LALIN MILAN
+LALOŠEVIĆ ALEKSANDAR
+LALOŠEVIĆ ALEKSANDAR
+LALOŠEVIĆ DIMITRIJE
+LALOŠEVIĆ DUŠAN
+LALOŠEVIĆ DUŠKO
+LALOŠEVIĆ FEMKA
+LALOŠEVIĆ JELISAVETA
+LALOŠEVIĆ JOVAN
+LALOŠEVIĆ KATICA
+LALOŠEVIĆ LAZAR
+LALOŠEVIĆ MARA
+LALOŠEVIĆ MIKA
+LALOŠEVIĆ STEVAN
+LALOŠEVIĆ STEVA
+LALOŠEVIĆ VASA
+LALOŠEVIĆ VLADIMIR
+LALOŠEVIĆ VLADIMIR
+LALOVIĆ JANKO
+LALOVIĆ MARKO
+LALOVIĆ MIRJANA
+LALOVIĆ NADA
+LALOVIĆ RADIVOJE
+LALOVIĆ SUZANA
+LALOVIĆ VERA
+LAMBETA PEKO
+LAMBIĆ BRANISLAV
+LAMBIĆ JOVO
+LAMBIĆ OLIVERA
+LAMPRET KRISTIJAN
+LANČUŠKI EMILKA
+LANC FRANJA
+LANC MARIJA
+LANCOŠ ANA
+LANCOŠ NENAD
+LANCOŠ SVETOZAR
+LANCOŠ TOMISLAV
+LANDEKA ANTONIJE
+LANG ATILA
+LANG DRAGICA
+LANG JOSIP
+LANG MIRJANA
+LANG VALERIJA
+LANJI ANDRAŠ
+LANJI STEVAN
+LANKOVSKI PECO
+LANKOVSKI TOMČE
+LAPČEVIĆ DRAGICA
+LAPČEVIĆ MILICA
+LAPČEVIĆ MILUTIN
+LAPČEVIĆ PAJA
+LAPČEVIĆ VUKOSAVA
+LAPČIĆ MILAN
+LAPADAT HORTENZIJA
+LAPADAT SORIN
+LAPADAT VASILIJE
+LAPAJNE MILAN
+LAPO JOVAN
+LAPU ANDRAŠ
+LARKIN STEVAN
+LASIĆ TOMISLAV
+LASIĆ ZVONKO
+LASIĆ ZVONKO
+LASICA BUDIMIR
+LASICA DRAGUTIN
+LASICA ILIJA
+LASICA MILAN
+LASICA MILAN
+LASICA MILENKO
+LASICA MIROSLAV
+LASICA UROŠ
+LASICA VELJKO
+LASICA ZDRAVKO
+LASICA ZLATA
+LASICA ZORA
+LASKOV DOBRE
+LASKOVIĆ BRANKA
+LASKOVIĆ DANILO
+LASKOVIĆ DRAGAN
+LASLO ETELKA
+LASLO FERENC
+LASLO FRANJA
+LASLO FRANJA
+LASLO ILONA
+LASLO JOŽEF
+LASLO JOSIP
+LASLO JOVAN
+LASLO LASLO
+LASLO MIKLOŠ
+LASLO MILENA
+LASLO TIBOR
+LASLO VERA
+LASLOVSKI TEREZA
+LASTIĆ ALEKSANDAR
+LATAK NANDOR
+LATAL MARJAN
+LATAL SLAVICA
+LATAL STEVAN
+LATAL VERA
+LATAL ZAGORKA
+LATAS ŽIVKA
+LATAS LAZAR
+LATAS MARKO
+LATAS MILADIN
+LATAS MILAN
+LATAS PETAR
+LATAS SAVA DR STOMATOLOG
+LATAS ZORA
+LATIŠKO UROŠ
+LATIĆ ISAK
+LATIĆ RADIVOJ
+LATINČIĆ BORISLAV
+LATINČIĆ DANICA
+LATINČIĆ GRUJA
+LATINČIĆ NIKOLA
+LATINČIĆ RUŽA
+LATINKIĆ STEVAN
+LATINKIĆ VINKA
+LATINKOVIĆ RADOMIR
+LATINOVIĆ ŽARKO
+LATINOVIĆ ĐUJA
+LATINOVIĆ BOŽO
+LATINOVIĆ DRAGAN
+LATINOVIĆ DRAGAN
+LATINOVIĆ ERIKA
+LATINOVIĆ ILIJA
+LATINOVIĆ JOVAN
+LATINOVIĆ JOVAN
+LATINOVIĆ LAZA
+LATINOVIĆ LJUBA
+LATINOVIĆ MACA
+LATINOVIĆ MARINKO
+LATINOVIĆ MILENKO
+LATINOVIĆ MILORAD
+LATINOVIĆ MIRKO
+LATINOVIĆ NEĐO
+LATINOVIĆ NEDELJKO
+LATINOVIĆ NIKOLA
+LATINOVIĆ NIKOLA
+LATINOVIĆ PETAR
+LATINOVIĆ RADOMIR
+LATINOVIĆ RAJKO
+LATINOVIĆ SAVO
+LATINOVIĆ SLOBODANKA
+LATINOVIĆ SLOBODAN
+LATINOVIĆ SLOBODAN
+LATINOVIĆ SMILJA
+LATINOVIĆ SVETOZAR
+LATINOVIĆ ZORKA
+LATKOVIĆ ŽELJKO
+LATKOVIĆ JOVAN
+LATKOVIĆ JOVO
+LATKOVIĆ MILE
+LATKOVIĆ VUJO
+LATKOVSKI RISTO
+LATO JASNA
+LATOVLJEV ZAGORKA
+LAUŠ DIMITRIJE
+LAUŠ VLADIMIR
+LAUŠEV DRAGANA
+LAUŠEV JOCA
+LAUŠEV LJUBINKA
+LAUŠEV MIRJANA
+LAUŠEV TOŠA
+LAUŠEV VELIMIR
+LAUŠEV VOJISLAV
+LAUŠEVIĆ ŽIVAN
+LAUŠEVIĆ ŽIVKA
+LAUŠEVIĆ ŽIVKA
+LAUŠEVIĆ BRANISLAV
+LAUŠEVIĆ DRAGOJE
+LAUŠEVIĆ DRAGUTIN
+LAUŠEVIĆ PAVLE
+LAUŠEVIĆ RADOJICA
+LAUŠEVIĆ VESELIN
+LAUŠEVIĆ ZITA
+LAUŠIN BRANISLAV
+LAUBERT VLADISLAVA
+LAUS ANA
+LAUS KATARINA
+LAUTAREVIĆ DRAGAN
+LAUTERER ĐENĐI
+LAUTERER LASLO
+LAVAČ JOŽEF
+LAVAČ LASLO
+LAVIČKA KARLO
+LAVRNIĆ KSENIJA
+LAVRNIĆ KSENIJA
+LAVRNIĆ MILOŠ
+LAVRNIĆ RADIVOJ
+LAVRNJA LAZAR
+LAVRNJA MILKAN
+LAZA JON
+LAZA TEODORA
+LAZANSKI ANA
+LAZANSKI BRANISLAV
+LAZANSKI GORDANA
+LAZANSKI GORDANA
+LAZAR ĐULA
+LAZAR ELENA
+LAZAR JULIA
+LAZAR JULIJA
+LAZAR KATALIN
+LAZAR LADISLAV
+LAZAR PAVLE
+LAZAR SIMA
+LAZAR STJEPAN
+LAZAR VLADIMIR
+LAZAREV ĐOKA
+LAZAREV ANA
+LAZAREV ANDRIJA
+LAZAREV JOVAN
+LAZAREV VERA
+LAZAREVIĆ ČEDA
+LAZAREVIĆ ŽIVKA
+LAZAREVIĆ ŽIVOTA
+LAZAREVIĆ ĐORĐE
+LAZAREVIĆ BOŠKO
+LAZAREVIĆ BORISLAV
+LAZAREVIĆ BRANKO
+LAZAREVIĆ BRANKO
+LAZAREVIĆ DANILO
+LAZAREVIĆ DARINKA
+LAZAREVIĆ DIMITRIJE
+LAZAREVIĆ DOBROSAV
+LAZAREVIĆ DRAGIŠA
+LAZAREVIĆ DRAGOMIR
+LAZAREVIĆ JADVIGA
+LAZAREVIĆ JELENA
+LAZAREVIĆ JELENA
+LAZAREVIĆ LAZAR
+LAZAREVIĆ LJUBOMIR
+LAZAREVIĆ LJUBO
+LAZAREVIĆ MANDA
+LAZAREVIĆ MILADINKA
+LAZAREVIĆ MILAN
+LAZAREVIĆ MILAN
+LAZAREVIĆ MILIVOJE
+LAZAREVIĆ MILORAD
+LAZAREVIĆ MILORAD
+LAZAREVIĆ MILUN
+LAZAREVIĆ MILUTIN
+LAZAREVIĆ NIKOLA
+LAZAREVIĆ SAVA
+LAZAREVIĆ SMILJA
+LAZAREVIĆ STANIŠA
+LAZAREVIĆ STANOJE
+LAZAREVIĆ STEVAN
+LAZAREVIĆ STEVAN
+LAZAREVIĆ SVETISLAV
+LAZAREVIĆ VELIMIR
+LAZAREVIĆ VESNA
+LAZAREVIĆ VIDAN
+LAZAREVIĆ VLADIMIR
+LAZAREVIĆ VOJISLAV
+LAZAREVIĆ ZORAN DR LEKAR
+LAZAREVIĆ ZORAN
+LAZAREVSKI ĐORĐE
+LAZAREVSKI DRAGOLJUB
+LAZAREVSKI SLAVKO
+LAZAROV VESELIN
+LAZAROV ZORAN
+LAZAROVSKI DRAGAN
+LAZENDIĆ LAZAR
+LAZENDIĆ NIKOLA
+LAZIČIĆ BRANKO
+LAZIČIĆ STANIJA
+LAZIĆ ŽARKO
+LAZIĆ ŽIVAN
+LAZIĆ ŽIVAN
+LAZIĆ ŽIVAN
+LAZIĆ ŽIVKO
+LAZIĆ ŽIVOJIN
+LAZIĆ ŽIVORAD
+LAZIĆ ĐORĐE DIPL ING
+LAZIĆ ANĐELKA
+LAZIĆ ANDRIJA
+LAZIĆ BOŠKO
+LAZIĆ BOŽIDAR
+LAZIĆ BRANISLAVA
+LAZIĆ BRANISLAVA
+LAZIĆ BRANISLAV
+LAZIĆ BRANISLAV
+LAZIĆ BRANISLAV
+LAZIĆ BRANKA DR
+LAZIĆ BUDIMIR
+LAZIĆ DAMJANKA
+LAZIĆ DEJAN DIPL ING
+LAZIĆ DEJAN
+LAZIĆ DRAGANA
+LAZIĆ DRAGAN
+LAZIĆ DRAGA
+LAZIĆ DRAGICA
+LAZIĆ DRAGOLJUB
+LAZIĆ DRAGOMIR
+LAZIĆ DRAGO
+LAZIĆ DRAGUTIN
+LAZIĆ DUŠAN
+LAZIĆ DUŠAN
+LAZIĆ DUŠAN
+LAZIĆ DUŠAN
+LAZIĆ EMIL DR LEKAR
+LAZIĆ GOJKO
+LAZIĆ GOROLJUB
+LAZIĆ GROZDANA
+LAZIĆ IVANA
+LAZIĆ JELISAVETA
+LAZIĆ JOCA
+LAZIĆ JOVANKA
+LAZIĆ JOVAN
+LAZIĆ JULKA
+LAZIĆ KATICA
+LAZIĆ KATICA
+LAZIĆ KATICA
+LAZIĆ KOSTADIN
+LAZIĆ KOSTA
+LAZIĆ LAZAR
+LAZIĆ LAZAR
+LAZIĆ LJUBAN
+LAZIĆ LJUBINKA
+LAZIĆ LJUBISAVA
+LAZIĆ LJUBOMIR
+LAZIĆ MARIJA
+LAZIĆ MARIJA
+LAZIĆ MARINKO
+LAZIĆ MARTA
+LAZIĆ MILADIN
+LAZIĆ MILADIN
+LAZIĆ MILADIN
+LAZIĆ MILAN
+LAZIĆ MILAN
+LAZIĆ MILAN
+LAZIĆ MILAN
+LAZIĆ MILENA
+LAZIĆ MILENA
+LAZIĆ MILENKO
+LAZIĆ MILENKO
+LAZIĆ MILEVKA
+LAZIĆ MILICA
+LAZIĆ MILICA
+LAZIĆ MILICA
+LAZIĆ MILINKO
+LAZIĆ MILISAV PROFESOR
+LAZIĆ MILISAV
+LAZIĆ MILIVOJ
+LAZIĆ MILOŠ
+LAZIĆ MILORAD
+LAZIĆ MIODRAG
+LAZIĆ MIRA
+LAZIĆ MIRJANA
+LAZIĆ MIRKO
+LAZIĆ MIROLJUB
+LAZIĆ MIROSLAV
+LAZIĆ MLADEN
+LAZIĆ NADA
+LAZIĆ NADA
+LAZIĆ NADA
+LAZIĆ NADEŽDA
+LAZIĆ NAJDAN
+LAZIĆ NEVENA
+LAZIĆ NIKOLA DIPL ING
+LAZIĆ NIKOLA
+LAZIĆ NIKOLA
+LAZIĆ NIKOLA
+LAZIĆ NIKOLA
+LAZIĆ OBREN
+LAZIĆ PAJA
+LAZIĆ PETAR
+LAZIĆ PETAR
+LAZIĆ PETAR
+LAZIĆ PETAR
+LAZIĆ PIROŠKA
+LAZIĆ PIROŠKA
+LAZIĆ RADA
+LAZIĆ RADE
+LAZIĆ RADIŠA
+LAZIĆ RADIVOJ
+LAZIĆ RADMILA
+LAZIĆ RADOJKA
+LAZIĆ RADOJKO
+LAZIĆ RADOVAN
+LAZIĆ RAJKO
+LAZIĆ RODOLJUB
+LAZIĆ RUŽA
+LAZIĆ SANJA
+LAZIĆ SAVA
+LAZIĆ SAVA
+LAZIĆ SAVA
+LAZIĆ SAVA
+LAZIĆ SIMA DR
+LAZIĆ SLAVKO
+LAZIĆ SLOBODAN
+LAZIĆ SLOBODAN
+LAZIĆ SMILJA
+LAZIĆ SRBISLAV
+LAZIĆ STANIMIR
+LAZIĆ STANKO
+LAZIĆ STEVANKA
+LAZIĆ STEVAN
+LAZIĆ STEVAN
+LAZIĆ STEVAN
+LAZIĆ STEVAN
+LAZIĆ STOJADIN
+LAZIĆ STOJAN
+LAZIĆ SVETOZAR
+LAZIĆ TEODOR
+LAZIĆ TRAJKO
+LAZIĆ VALERIJA
+LAZIĆ VASILIJE
+LAZIĆ VELINKA
+LAZIĆ VESELIN
+LAZIĆ VESNA
+LAZIĆ VLADIMIR
+LAZIĆ ZORAN
+LAZIĆ ZORICA
+LAZIĆ ZORICA
+LAZICANI ALJUŠ
+LAZIN BOGDAN
+LAZIN BRANKO
+LAZIN GOJKO
+LAZIN MIROSLAVA
+LAZIN NATALIJA
+LAZIN SAVA
+LAZIN SAVA
+LAZIN SINIŠA
+LAZIN SINIŠA
+LAZIN SLOBODAN
+LAZIN VOJIN
+LAZIN ZORICA
+LAZINICA RADOJKA
+LAZOR MIRON
+LAZOR NIKOLA
+LAZOV TRAJAN
+LAZOVA TRAJKA
+LAZOVIĆ ČEDO
+LAZOVIĆ BOŠKO
+LAZOVIĆ BOŽIDAR
+LAZOVIĆ DEJAN DIPL ING
+LAZOVIĆ DRAGAN
+LAZOVIĆ LAZAR
+LAZOVIĆ LJILJANA
+LAZOVIĆ MILENTIJE
+LAZOVIĆ MILETA
+LAZOVIĆ MILICA
+LAZOVIĆ MILOJICA
+LAZOVIĆ NENAD
+LAZOVIĆ RADOSAV
+LAZOVIĆ SAVICA
+LAZOVIĆ SLOBODAN
+LAZOVIĆ STANKO
+LAZOVIĆ STEVAN PROFESOR
+LAZOVIĆ SVETISLAV
+LAZOVIĆ VUJADIN
+LAZOVIĆ ZORAN
+LAZOVIĆ ZORAN
+LAZOVSKI SLAVČO
+LAZUKIĆ ČEDO
+LAZUKIĆ ANĐA
+LAZUKIĆ JOVO
+LAZUKIĆ KAĆA
+LAZUKIĆ MILAN
+LAZUKIĆ SLOBODAN
+LEČ ENDRE DR
+LEČ ERIH
+LEČAR JOSIP
+LEČAR KARLO
+LEČIĆ ČEDOMIR
+LEČIĆ DOBRILA
+LEČIĆ DOBROSAV
+LEČIĆ GOJKO
+LEČIĆ MILEVA
+LEČIĆ MILOVAN
+LEČIĆ NADA
+LEČIĆ NADA
+LEČIĆ SIMO
+LEČIĆ SPASOJE
+LEČIĆ VIDOSAVA
+LEČIĆ VLADIMIR
+LEŠČEŠEN EDVARD
+LEŠČEŠEN JELENA
+LEŠIĆ ĐURA
+LEŠIĆ STOJAN
+LEŠKIĆ ĐORĐE
+LEŠKIĆ VOJISLAV
+LEŠKOV JOVAN
+LEŠKOV MILAN
+LEŠKOV MIODRAG
+LEŠKOV OLGICA
+LEŠKOVIĆ ZLATKO
+LEŠNIK ZAGORKA
+LEŠTAR STEVAN
+LEŠTAR ZORICA
+LEŽAJIĆ VUKADIN
+LEŽAKOV ĐURĐICA
+LEŽAKOV MILAN
+LEŽIMIRAC ALEKSANDAR
+LEŽIMIRAC BRANKICA
+LEŽIMIRAC DOBRINKA
+LEŽIMIRAC SLOBODAN
+LEŽIMIRAC SLOBODAN
+LEŽIMIRAC SVETLANA
+LEŽIMIRAC VLADIMIR
+LEĐANA JELENA
+LEĐANAC ĐURĐINKA
+LEĐANAC BRANISLAVA
+LEĐANAC DRAGOMIR
+LEĐANAC EMILIJA
+LEĐANAC GAVRA
+LEĐANAC GORICA
+LEĐANAC JOVAN
+LEĐANAC MILAN
+LEĐANAC SEKULA
+LEĐANAC SEKULA
+LEĐANAC SLAVKO
+LEĐANAC STEVAN
+LEĐANAC STEVAN
+LEĐANAC VITOMIR
+LEĐANSKI BRANKA
+LEĐENAC DRAGAN
+LEĐENAC NADA
+LEĐENAC SLAVKO
+LEĐENAC STANIMIR
+LEĐENAC STRAHINJA
+LEBAR ZLATICA
+LEBER ZLATKO
+LEBL ARPAD DR PROFESOR
+LEBOVIĆ MARINKO
+LEBURIĆ VASILIJE
+LECKI ĐULA
+LECKI KRIŠTOF
+LECKOVIĆ EMIL
+LEDENKO ANTE MR
+LEDER EMINA
+LEDER OLGA
+LEGEN STOJAN
+LEGETIĆ BRANKA
+LEHOCKI ŠANDOR
+LEHOCKI FERENC
+LEHOTSKI KARLO
+LEHR DAVOR
+LEITNER NIKOLA
+LEKI ĐURA
+LEKI MARIJA
+LEKI STJEPAN
+LEKI TEREZIJA
+LEKIĆ ŽIVADIN
+LEKIĆ ĐORĐIJE
+LEKIĆ BOGDAN
+LEKIĆ BRANKA
+LEKIĆ BRANKO
+LEKIĆ DEJAN
+LEKIĆ DRAGOLJUB
+LEKIĆ DUŠAN
+LEKIĆ JORDAN
+LEKIĆ LJUBOMIR
+LEKIĆ LJUBOMIR
+LEKIĆ MILADIN
+LEKIĆ MILANKA
+LEKIĆ NEĐO
+LEKIĆ NIKOLA
+LEKIĆ SIMEVUN
+LEKIĆ STANKA
+LEKIĆ STEVAN
+LEKIĆ TATJANA
+LEKIĆ TEODOR
+LEKIĆ VESELKO
+LEKIĆ ZAGORKA
+LEKIĆ ZDRAVKO
+LEKIN LJUBICA
+LEKIN MILAN
+LEKIN MILAN
+LEKIN MILAN
+LEKIN ZDRAVKO
+LEKO ĐERĐ
+LEKO ALEKSANDAR
+LEKO BORISLAV
+LEKO MLADEN
+LEKOVIĆ DOBRILO
+LEKOVIĆ DRAGIŠA
+LEKOVIĆ MILOŠ
+LEKOVIĆ MIRKO
+LEKOVIĆ NOVAK
+LEKOVIĆ SLOBODANKA
+LEKOVIĆ TOMISLAV
+LEKOVIĆ VERICA
+LELEA TODOR
+LELEOVIĆ BORO
+LELIĆ ŽELJKO
+LELIĆ MAHMUT
+LELIĆ MARIJA
+LELIĆ MIRSAM
+LELIĆ ZUMRETA
+LELIK JANOŠ
+LELIK JENE
+LELOVIĆ RADE
+LEMAIĆ ŽELJKO
+LEMAIĆ SOFIJA
+LEMAJIĆ BRANKO
+LEMAJIĆ CECILIJA
+LEMAJIĆ KATICA
+LEMAJIĆ MARIJA
+LEMAJIĆ MILAN
+LEMAJIĆ MILAN
+LEMAJIĆ MIROSLAV
+LEMAJIĆ RADOJICA
+LEMAJIĆ SLOBODAN
+LEMAJIĆ VLADIMIR
+LEMHE JELISAVETA
+LEMIĆ BOSA
+LEMIĆ DRAGINJA
+LEMIĆ LAZAR
+LEMIĆ MILENKO
+LEMIĆ NEBOJŠA
+LEMIĆ VLADIMIR
+LEN PIROŠKA
+LENČA ANDRIJA
+LENČA KATA
+LENĐEL ĐURO
+LENĐEL JOVAN
+LENĐEL JOVAN
+LENĐEL KAROLJ
+LENĐEL MIHAJLO
+LENARD ARPAD
+LENARD PETAR
+LENART KATICA
+LENARTIĆ ĐORĐE
+LENATOV DUŠAN
+LENDIĆ JOSIP
+LENDVAJI ANDRIJA
+LENDVAJI JOŽEF
+LENDVAJI LJILJANA
+LENER ANDRAŠ
+LENER DEŽE
+LENERT ANTAL
+LENERT PETAR DR DOCENT
+LENERT STEVAN
+LENHARD JANOŠ
+LENKEŠ JOVAN
+LENKEŠ LASLO
+LEOVAC MILIVOJE
+LEOVAC VUKADIN
+LEPČEVIĆ MILETA
+LEPŠANOVIĆ LAZAR DR LEKAR
+LEPŠIĆ DRAGICA
+LEPAR ŠANDOR
+LEPAR JELICA
+LEPAR LADISLAV
+LEPEŠ LADISLAV
+LEPEŠ TIBOR DR PROF
+LEPHAFT PAL
+LEPIR ANĐELKA
+LEPIR BOSILJKA
+LEPIR MILORAD
+LEPIR VELIMIR
+LEPOŠA RUDOLF
+LEPOJEV BRANKO
+LEPOJEV SAVA
+LEPOJEV VASILIJE
+LEPOJEVIĆ ŽIVORAD
+LEPOJEVIĆ STANKO
+LEPORIS JAN
+LEPOTIĆ ŽIVAN
+LEPOTIĆ MILENKO
+LEPOTIĆ NIKOLA
+LEPOVIĆ MIKA
+LEPUŠA ZDENKO
+LER IVAN
+LERIĆ ERŽEBET
+LERIK ANDRAŠ
+LERIK IŠTVAN
+LERIK MIKLOŠ
+LERINC ANIKO
+LERINC DRAGOSLAV
+LERINC JANOŠ
+LERINC KARLO
+LERINC KATALIN
+LERINC LASLO
+LERINC LASLO
+LERINC LEO
+LERINC LEO
+LERO BOŽIDAR
+LERO VLADIMIR
+LESKOVAC ĐORĐE
+LESKOVAC DRAGAN
+LESKOVAC LJUBICA
+LESKOVAC MILAN
+LESKOVAC MILAN
+LESKOVAC MILETA
+LESKOVAC MLADEN PROFESOR
+LESKOVAC RADOMIR
+LESKOVAC STANKA
+LESKOVAC VLADIMIR DR
+LESKOVAC VOJISLAV
+LETAJEV ALEKSANDAR
+LETAJEV ALEKSANDAR
+LETAJEV MIHAJLO
+LETAJEV VLADIMIR
+LETIĆ ČEDO
+LETIĆ ŽARKO
+LETIĆ ŽIVA
+LETIĆ ŽIVKO DIPL ING
+LETIĆ ĐOKO
+LETIĆ ĐORĐE
+LETIĆ ĐORĐE
+LETIĆ ĐORĐE
+LETIĆ ĐORĐE
+LETIĆ ĐORĐE
+LETIĆ ANICA
+LETIĆ ANICA
+LETIĆ ARIŠKO
+LETIĆ BOGDAN
+LETIĆ BORIVOJ
+LETIĆ BRANISLAV
+LETIĆ BRANISLAV
+LETIĆ BRANKA
+LETIĆ BRANKO
+LETIĆ DARINKA
+LETIĆ DRAGAN
+LETIĆ DRAGIŠA
+LETIĆ DRAGICA
+LETIĆ DUŠAN
+LETIĆ DUŠAN
+LETIĆ GAVRA
+LETIĆ GOJKO
+LETIĆ GORDANA DR
+LETIĆ IVAN
+LETIĆ JOVANKA
+LETIĆ JOVAN
+LETIĆ KOSTA
+LETIĆ LAZAR
+LETIĆ LAZAR
+LETIĆ LAZAR
+LETIĆ LJUBIŠA
+LETIĆ LJUBICA
+LETIĆ MARICA
+LETIĆ MARIJA
+LETIĆ MARIJA
+LETIĆ MARINKO
+LETIĆ MILAN
+LETIĆ MILAN
+LETIĆ MILAN
+LETIĆ MILAN
+LETIĆ MILICA
+LETIĆ MILICA
+LETIĆ MILICA
+LETIĆ MILORAD
+LETIĆ MILORAD
+LETIĆ MILORAD
+LETIĆ MILOVAN
+LETIĆ MIODRAG
+LETIĆ MIROSLAV
+LETIĆ MIROSLAV
+LETIĆ NENAD
+LETIĆ NEVENA
+LETIĆ OLGA
+LETIĆ OLGA
+LETIĆ OLGICA
+LETIĆ PERA
+LETIĆ RADA
+LETIĆ RADE
+LETIĆ RADMILA
+LETIĆ SAVA
+LETIĆ SAVA
+LETIĆ SIMKA
+LETIĆ SLOBODAN
+LETIĆ STEVAN
+LETIĆ STEVAN
+LETIĆ STEVAN
+LETIĆ STOJAN LEKAR
+LETIĆ SVETISLAV
+LETIĆ SVETOZAR
+LETIĆ TODOR
+LETIĆ VERA
+LETIĆ VESNA
+LETIĆ VIDA
+LETIĆ VLADIMIR
+LETIĆ VLADISLAVA
+LETIĆ ZDRAVKO
+LETIĆ ZORAN
+LETIĆ ZORAN
+LETIĆ ZORAN
+LETIĆ ZORKA
+LETICA IVANA
+LETICA MILAN
+LETICA TOMISLAV
+LETO RUŽICA
+LETONAI JANOŠ
+LETONAI LASLO
+LEVA ILINKA
+LEVAI GABOR
+LEVAI KATALIN
+LEVAI NANDOR
+LEVAI STEVAN
+LEVAJAC VERA
+LEVAKOV MARA
+LEVAKOV SLOBODAN
+LEVAKOV VOJISLAV
+LEVARSKI MIHAJLO
+LEVATIĆ MATIJA
+LEVATIĆ MILKA
+LEVATIĆ MILKICA
+LEVENSKI TADEJ
+LEVI GORAN
+LEVI LEON
+LEVI VIKTOR
+LEVIĆ LJUBINKO
+LEVNAJIĆ DRAGAN
+LEVNAJIĆ MILKA
+LEVNAJIĆ MOMČILO
+LEZEČEV SINIŠA
+LIČANIN DRAGAN
+LIČANIN MARIJA
+LIČANIN SLAVKO
+LIČEN HOTIMIR
+LIČEN JOSIP DIPL ING
+LIČEN LJUDMILA
+LIČINA ĐORĐE
+LIČINA BRANKICA
+LIČINA DANILO
+LIČINA DMITAR
+LIČINA DRAGO
+LIČINA DUŠAN
+LIČINA LUKA
+LIČINA MARIJA
+LIČINA MILANKA
+LIČINA MILAN
+LIČINA MILE
+LIČINA PREDRAG
+LIČINA RADE
+LIČINA VELIBOR
+LIČINA ZORAN
+LIČINAR DRAGAN
+LIČINAR NEDELJKO
+LIČINAR SLAVKO
+LIČINAR STANKO
+LIČINIĆ DUŠAN
+LIČINIĆ NADA
+LIŠČIĆ VELINKA
+LIŠIĆ ĐURĐINKA
+LIŠIĆ MARICA
+LIŠKOVIĆ MIROSLAV
+LIŠKOVIĆ MIROSLAV
+LIBER STEVAN
+LIBRIĆ IVAN
+LIBRIĆ IVAN
+LIBRIĆ MARIJAN
+LIDLOF PIROŠKA
+LIDLOF RUDOLF
+LIDLOF ZOLTAN
+LIHTENTAL ANTAL
+LIHTENTAL ELIZABETA
+LIHVARČEK ANDRIJA
+LIKAVEC JAROMIR
+LIKAVEC KARLO DIPL ING
+LIKIĆ BORISLAV
+LIKIĆ BUDISLAV
+LIKODRIĆ MILOVAN
+LILČEV DARINKA
+LILI VERA
+LILIĆ ĐORĐE
+LILIĆ ALEKSANDAR DIPL ING
+LILIĆ MARIJANA
+LILIĆ MILENA
+LILIĆ MIODRAG
+LILIĆ SRBISLAV
+LILIĆ TATJANA
+LILIĆ VELIMIR
+LIMANI ŠAĆIR
+LIMANI MEMIŠ
+LIMANI NAZIF
+LIMANOVIĆ NAZIF
+LIMANOVSKI IBRAHIM
+LIMANOVSKI MUSAFET
+LIMBOCKI PETAR
+LIMBURGER JOŽEF
+LINDEMAN JELENA
+LINDEMAN RUDOLF
+LINDNER MARGIT
+LINIĆ DRAGAN
+LINJAK DRAGOMIR
+LINKO KOLOMAN
+LIPAI KORNEL
+LIPANOVIĆ GOJKO
+LIPNIČKI ZORICA
+LIPOTIĆ PETAR
+LIPOVAC DUŠAN
+LIPOVAC MATIJA
+LISIČIN NADA
+LISIČIN TOMISLAV
+LISIĆ MARICA
+LISICA MIHAJLO
+LISICA MIHAJLO
+LISICA MILOŠ ADVOKAT
+LISOV KATICA
+LISOV MILIMIR
+LISOV MIRKO
+LISOVAC ZORAN
+LISUL ALEKSANDAR
+LISUL MILKA
+LISULOV OLGA
+LISULOV RATOMIR
+LISULOV ZORAN
+LITAVSKI VLADIMIR
+LITNER JOVAN
+LITRIČIĆ GAVRA
+LITRIČIN BOGDAN
+LITRIČIN GENA
+LITRIČIN-VEBER BOGDANKA
+LITRIČIN VELIMIR
+LITVJAK PAVLE
+LITVJAK VLADIMIR
+LIVADA MILAN
+LIVADA MILOŠ
+LIVAJA JOZO
+LIVAJA JURE
+LIZATOVIĆ BRANKO
+LJAČEVIĆ BOŽIDAR
+LJAJIĆ TAIP
+LJALJIĆ ĐORĐE
+LJATIFI KADRI
+LJAVROŠKA PAVEL
+LJAVROŠKA PAVEL
+LJEŠEVIĆ LJILJANA DR
+LJEŠEVIĆ MARIJA
+LJEŠNJAK MIROLJUB
+LJEŠNJAK MOMČILO
+LJELJAK MEHO
+LJEPOJEVIĆ STEVAN
+LJIKAR EVGENIJE
+LJIKAR MIHAJLO DIPL ING
+LJIKAR VERONA
+LJIKAR VLADIMIR LEKAR
+LJILJAK LJILJANA
+LJILJAK MILAN
+LJILJAK MILAN
+LJILJAK MILENKO
+LJILJAK MILORAD
+LJILJAK MIODRAG
+LJILJAK MIRKO
+LJILJAK MIROSLAV
+LJILJAK NADA
+LJILJAK NADEŽDA
+LJILJAK PAJO
+LJILJAK SAVA
+LJILJAK SLAVKO
+LJILJAK VLADIMIR
+LJILJAK VLADO
+LJUŠTINA ŽIVAN
+LJUŠTINA ĐORĐE
+LJUŠTINA JELENA
+LJUŠTINA LJUBICA
+LJUŠTINA MILAN
+LJUŠTINA MILAN
+LJUŠTINA MILOVAN
+LJUŠTINA NIKOLA
+LJUŠTINA OLGA
+LJUŠTINA SOFIJA
+LJUŠTINA VOJKA
+LJUŠTINOV NADA
+LJUBAŠČIK ANTON
+LJUBANIĆ MARA
+LJUBANOVIĆ MILENKO
+LJUBANOVIĆ RADISLAV
+LJUBENKOVIĆ MILOVAN
+LJUBENKOVIĆ PETAR
+LJUBENKOVIĆ PETAR
+LJUBIČIĆ ŽARKO
+LJUBIČIĆ ŽARKO
+LJUBIČIĆ ŽIVKA
+LJUBIČIĆ ĐURĐINKA
+LJUBIČIĆ BLAŽO
+LJUBIČIĆ BORISLAV
+LJUBIČIĆ DANKO
+LJUBIČIĆ DARA
+LJUBIČIĆ DRAGUTIN
+LJUBIČIĆ JOVICA
+LJUBIČIĆ LAZAR
+LJUBIČIĆ LUKA
+LJUBIČIĆ MARIJAN
+LJUBIČIĆ MARINA
+LJUBIČIĆ MIHAJLO
+LJUBIČIĆ MILOŠ LOKAL
+LJUBIČIĆ MILOŠ
+LJUBIČIĆ MIROSLAVA
+LJUBIČIĆ MIROSLAV
+LJUBIČIĆ NADA
+LJUBIČIĆ NADA
+LJUBIČIĆ NEVENKA
+LJUBIČIĆ NIKOLA
+LJUBIČIĆ PETAR
+LJUBIČIĆ PETAR
+LJUBIČIĆ RADOSLAV
+LJUBIČIĆ RADOSLAV
+LJUBIČIĆ RATKO
+LJUBIČIĆ RELJA
+LJUBIČIĆ RUDOLF
+LJUBIČIĆ SLOBODAN
+LJUBIČIĆ STANKO
+LJUBIČIĆ STEVAN
+LJUBIČIĆ SUZANA
+LJUBIČIĆ TALINKA
+LJUBIČIĆ VLADIMIR
+LJUBIČIĆ ZORA
+LJUBIŠEVIĆ MILOŠ
+LJUBIŠIĆ BRANISLAV
+LJUBIŠIĆ MILANKO
+LJUBIŠIĆ PETAR
+LJUBIŠIĆ SUZANA
+LJUBIĆ ANĐELKA
+LJUBIĆ ANDRIJA
+LJUBIĆ IVAN
+LJUBIĆ JELENA
+LJUBIĆ MIRJANA
+LJUBIĆ NATALIJA
+LJUBIĆ PERO
+LJUBIĆ RAJKO
+LJUBIBRATIĆ EDO
+LJUBIBRATIĆ LEO
+LJUBINAC MILANKA
+LJUBINKOVIĆ ALEKSANDRA
+LJUBINKOVIĆ BOGOLJUB
+LJUBINKOVIĆ LENKA
+LJUBINKOVIĆ MARIJA
+LJUBINKOVIĆ MILANKO
+LJUBINKOVIĆ MILAN
+LJUBINKOVIĆ MILORAD
+LJUBINKOVIĆ PAVLE
+LJUBINKOVIĆ SAVA
+LJUBINKOVIĆ STEVAN
+LJUBINKOVIĆ VELIMIR
+LJUBISAVLJEVIĆ DANICA
+LJUBISAVLJEVIĆ MIŠA
+LJUBISAVLJEVIĆ MILAN
+LJUBISAVLJEVIĆ MILICA
+LJUBOJA DRENKA
+LJUBOJA MLADEN
+LJUBOJA SILVIJA
+LJUBOJEV BILJANA
+LJUBOJEV IVAN
+LJUBOJEV JELENA
+LJUBOJEV LAZAR
+LJUBOJEV MAJA
+LJUBOJEV PETAR MR
+LJUBOJEV RAJKO
+LJUBOJEVIĆ ČEDOMIR
+LJUBOJEVIĆ ANĐELIJA
+LJUBOJEVIĆ BORISLAV
+LJUBOJEVIĆ BRANKO
+LJUBOJEVIĆ DESIMIR
+LJUBOJEVIĆ DRAGICA
+LJUBOJEVIĆ ILIJA
+LJUBOJEVIĆ JOVAN
+LJUBOJEVIĆ JULKA
+LJUBOJEVIĆ KATICA
+LJUBOJEVIĆ KOSTA
+LJUBOJEVIĆ MARKO
+LJUBOJEVIĆ MARKO
+LJUBOJEVIĆ MIHAJLO
+LJUBOJEVIĆ MILENA
+LJUBOJEVIĆ MILICA
+LJUBOJEVIĆ MIRKO
+LJUBOJEVIĆ OSTOJA
+LJUBOJEVIĆ PETAR
+LJUBOJEVIĆ RUŽA
+LJUBOJEVIĆ RUŽICA
+LJUBOJEVIĆ SLAVKO
+LJUBOJEVIĆ SLOBODAN
+LJUBOJEVIĆ STEVAN
+LJUBOJEVIĆ TODOR
+LJUBOJEVIĆ VELJKO
+LJUBOJEVIĆ VLADIMIR
+LJUBOJEVIĆ VLADIMIR
+LJUBOJEVIĆ VOJISLAV
+LJUBOTIN JELENA
+LJUBOTIN RADOSLAV
+LJUBOTINA-BRKIĆ RAJNA
+LJUBOVIĆ MARINKO
+LJUBUŠČIK PETAR
+LJUKOVČANIN MIRJANA
+LJUKOVČANIN ZORICA
+LJUMOŽEVSKI JELENA
+LJUMOŽEVSKI MARIJA
+LJUMOVIĆ DANICA
+LJUTIĆ STANIKA
+LJUTVI RADIVOJ
+LOČKI JELISAVETA
+LOŠIĆ MILORAD
+LOŠIĆ MILORAD
+LOŠIĆ MITRA
+LOŠONC HENRIJETE
+LOBODA ANTUN
+LOBODA STEVAN
+LOC ANDRAŠ
+LOC JOŽEF
+LOCI IŠTVAN
+LODI GABOR
+LODI JELISAVETA
+LODI LASLO
+LOGUNOV ALEKSEJ DIPL ING
+LOJANIČIĆ RADIVOJE
+LOJANICA BOŠKO
+LOJNA IVAN
+LOJOVIĆ BOŽICA
+LOJOVIĆ OSTOJA
+LOJOVIĆ RANKO
+LOJPUR MILOVAN
+LOKAS DARKO
+LOKIĆ DANICA
+LOKIĆ JELENA
+LOKIĆ LJUBICA
+LOKIĆ MILOVAN
+LOKIĆ VERA
+LOLIĆ BOŠKO
+LOLIĆ DOBRINKA
+LOLIĆ MARIJA
+LOLIĆ MILAN
+LOLIĆ NEDELJKO
+LOLIĆ SLAVKA
+LOLIĆ TODOR
+LOLIN DEJAN
+LOLIN ZORICA
+LOMEN ELENA
+LOMIĆ MOMIR
+LOMIĆ RADOVAN
+LOMIĆ SLOBODAN
+LOMJANSKI ADAM
+LOMJANSKI STEVAN
+LOMOVIĆ BRATISLAV MR OEC I IURE
+LOMOVIĆ MIHAINA
+LOMOVIĆ MIHAINA
+LOMPAR DRAGAN
+LOMPAR MITAR
+LOMPAR PETAR
+LOMPAR SAVA
+LONČAR ČEDOMIR
+LONČAR ĐURO
+LONČAR BOŠKO
+LONČAR BOŽIDAR
+LONČAR BOJANA
+LONČAR BORIS
+LONČAR BRANISLAV
+LONČAR DRAGAN
+LONČAR DUŠAN
+LONČAR DUŠAN
+LONČAR DUŠAN
+LONČAR DUŠAN
+LONČAR GOJKO
+LONČAR GORDANA
+LONČAR ILIJA
+LONČAR JELICA
+LONČAR JOVAN
+LONČAR KOSTA
+LONČAR KSENIJA
+LONČAR LJUBICA
+LONČAR LJUBICA
+LONČAR LJUBICA
+LONČAR MARKO
+LONČAR MIHAJLO
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILAN
+LONČAR MILENKO
+LONČAR MILE
+LONČAR MILE
+LONČAR MILORAD
+LONČAR MIRKO
+LONČAR MIRKO
+LONČAR NEDELJKO
+LONČAR NEVENKA
+LONČAR NIKOLA
+LONČAR NIKOLA
+LONČAR PANTELIJA
+LONČAR PREDRAG
+LONČAR RADE
+LONČAR RADOMIR
+LONČAR RADOMIR
+LONČAR SIMO
+LONČAR SLAVKO
+LONČAR SLOBODAN
+LONČAR-SREMČEV VERICA
+LONČAR STEVO
+LONČAR TATJANA
+LONČAR VELIMIR
+LONČAR VERA
+LONČAR VLADA
+LONČAR VLADIMIRKA DR
+LONČAR VUKAŠIN
+LONČAR ZDRAVKO
+LONČAR ZORAN
+LONČAREVIĆ ŽIVOTA
+LONČAREVIĆ IGNJAT
+LONČAREVIĆ MILAN
+LONČAREVIĆ PUNIŠA
+LONČAREVIĆ RADOVAN
+LONČAREVIĆ VITOMIR
+LONČARIĆ RADMILA
+LONČARSKI DRAGANA
+LONČARSKI DRAGIŠA
+LONČARSKI PREDRAG
+LONČARSKI SAVA
+LONČARSKI SREDOJE
+LONČINA MILJA
+LONČINA PREDRAG
+LONCIĆ BERISLAVA
+LONCIĆ RAJKO
+LOPATIN NIKOLA
+LOPIČIĆ ŠPIRO
+LOPIČIĆ BRANKO
+LOPIČIĆ BRANKO
+LOPIČIĆ JELICA
+LOPIČIĆ JOVAN
+LOPIČIĆ MIODRAG
+LOPIČIĆ OLGA
+LOPIČIĆ VESELIN
+LOPUŠANSKI DUŠICA
+LOPUŠINA ALEKSANDAR
+LOPUŠINA JELICA
+LORBEK JOSIP
+LOREK JOVAN
+LORENCIN MILAN
+LOTINA DRAGAN
+LOTINA MIROSLAV
+LOTINA SMILJA
+LOVČEVIĆ DARINKA
+LOVČEVIĆ DRAGOSLAV
+LOVČEVIĆ MILIĆ
+LOVČEVIĆ TOMISLAV
+LOVČEVIĆ VOJISLAV
+LOVAŠ ROZALIJA
+LOVADINOV SVETOZAR
+LOVAS IVAN
+LOVIĆ KUZMAN
+LOVRE ČEDO
+LOVRE DRAGAN
+LOVRE LJILJANA
+LOVRE MILOŠ
+LOVRE SAVO
+LOVRE SLAVKO
+LOVRE STEVAN
+LOVREKOVIĆ TOMISLAV
+LOVREKOVIĆ ZLATKO
+LOVREN SLAVKO
+LOVRENČIĆ KATICA
+LOVRENOVIĆ MIROSLAVA
+LOVRENSKI DUŠAN
+LOVRENSKI DUŠAN
+LOVRIĆ ŽELJKO
+LOVRIĆ ŽELJKO
+LOVRIĆ ĐURA
+LOVRIĆ DIVNA
+LOVRIĆ MARKO
+LOVRIĆ NIKOLA
+LOVRIĆ PETAR
+LOVRIĆ RAJKO
+LOVRIĆ RATKO
+LOVRIĆ SLAVKO
+LOVRIĆ SLAVKO
+LOVRIĆ STEVAN
+LOVRIĆ STEVAN
+LOVRIĆ TATJANA
+LOVRIĆ TRIVUN
+LOVRIN DARA
+LOVRIN DRAGAN
+LOZANČIĆ NIKO
+LOZANIĆ IVAN DIPL ING
+LOZANIĆ-PAVLOVIĆ ĐURĐINKA
+LOZANOV EMIL
+LOZANOV SAVA
+LOZIĆ JOSIP
+LOZIĆ KRSTA
+LOZIĆ KSENIJA
+LOZIĆ MIODRAG DIPL ING
+LOZIĆ TOMISLAV
+LOZJANIN NIKOLA
+LOZJANIN NIKOLA
+LOZJANIN NIKOLA
+LOZOVOJ LJUBICA
+LUČAK ZLATICA
+LUČAR MILADIN
+LUČAR MILAN
+LUČAR VERA
+LUČI ANICA
+LUČI IVAN
+LUČIĆ ČEDOMIR
+LUČIĆ ŽIVKO
+LUČIĆ ĐOKO
+LUČIĆ ĐORĐE
+LUČIĆ ĐURĐINA
+LUČIĆ ALEKSANDAR DR
+LUČIĆ ALEKSANDRA
+LUČIĆ BRANKO
+LUČIĆ DRAGAN
+LUČIĆ DRAGICA
+LUČIĆ DRAGINJA
+LUČIĆ DRAGUTIN
+LUČIĆ GEORGIJE
+LUČIĆ JELENA
+LUČIĆ JELICA
+LUČIĆ JOVAN MR
+LUČIĆ JOVAN
+LUČIĆ JOVAN
+LUČIĆ JOVICA
+LUČIĆ LAZO
+LUČIĆ LJUBAN
+LUČIĆ LJUBOMIR
+LUČIĆ LJUBO
+LUČIĆ MIHAJLO
+LUČIĆ MILAN
+LUČIĆ MILENKO
+LUČIĆ MILENKO
+LUČIĆ MILICA
+LUČIĆ MILIVOJE
+LUČIĆ MILOŠ
+LUČIĆ MILOJICA
+LUČIĆ MILOJKA
+LUČIĆ MILOMIR
+LUČIĆ MILOSAVA
+LUČIĆ MILUTIN
+LUČIĆ MIODRAG
+LUČIĆ MIRJANA
+LUČIĆ MIROSLAVA
+LUČIĆ MOMČILO
+LUČIĆ MOMIR
+LUČIĆ NADA
+LUČIĆ OBRAD
+LUČIĆ PANTA
+LUČIĆ PAVA
+LUČIĆ PETAR
+LUČIĆ PETKO
+LUČIĆ PETKO
+LUČIĆ RAJKO
+LUČIĆ RISTO
+LUČIĆ SLAVKO
+LUČIĆ SLAVNA
+LUČIĆ SOFIJA
+LUČIĆ SPASOJE
+LUČIĆ STEFANIJA
+LUČIĆ STEVAN
+LUČIĆ VASO
+LUČIĆ VLADO
+LUČIĆ VOJIN
+LUČIĆ ZDRAVKO
+LUŠINOVSKI DIMITRIJE
+LUŽAIĆ ĐORĐE
+LUŽAIĆ ĐORĐE
+LUŽAIĆ ANKA
+LUŽAIĆ BOŽICA
+LUŽAIĆ DUŠKO
+LUŽAIĆ JADRANKA
+LUŽAIĆ JULKA
+LUŽAIĆ MIRA
+LUŽAIĆ VLADIMIR
+LUŽAIĆ VLADIMIR
+LUŽAJIĆ ANKA
+LUŽAJIĆ JADRANKA
+LUŽAJIĆ MILENA
+LUŽAJIĆ NADA
+LUŽAJIĆ STANKO
+LUŽAJIĆ STANKO
+LUŽAJIĆ STOJAN
+LUŽANIN SVETOZAR
+LUBAŠČIK ANTAL
+LUBAŠČIK LASLO
+LUBARDA LJUBICA
+LUBARDA STEVAN
+LUBEN RANKO
+LUBEN SAVA
+LUBURIĆ ČEDOMIR
+LUBURIĆ DANILO
+LUBURIĆ MILORAD
+LUBURIĆ MILORAD
+LUBURIĆ MILOVAN
+LUBURIĆ MIODRAG
+LUBURIĆ MIRKO
+LUBURIĆ NADA
+LUBURIĆ RADOMIR
+LUBURIĆ RAJKO
+LUBURIĆ STANA
+LUBURIĆ STEVAN
+LUC JANOŠ
+LUC JULIJA
+LUCIĆ ŽIVOJIN
+LUCIĆ ALEKSANDRA
+LUCIĆ PETAR
+LUCIĆ RADIVOJ
+LUCKARŽ VLADIMIR
+LUDAJIĆ DUŠAN DIPL ING
+LUDAJIĆ VERA
+LUDOŠKI ANĐELKO
+LUDOŠKI KATICA
+LUDOŠKI LAZAR
+LUDOŠKI LAZAR
+LUDOŠKI LJUBICA
+LUDOŠKI LJUBOMIR
+LUDOŠKI MILENKO
+LUDOŠKI VELIMIR
+LUDROVAN STEVA
+LUGONJA LAZO
+LUGONJA PETAR
+LUGONJA RADIVOJ
+LUGONJA SAVA
+LUGONJA SLOBODAN
+LUGONJA VELJKO
+LUGONJA VIDOJE
+LUGUMERSKI DANICA
+LUINOVIĆ MILAN
+LUJANOV DRAGOSLAV
+LUJINOVIĆ MILAN
+LUJNOVIĆ BRANKA
+LUKAČ ŠANDOR
+LUKAČ ANDRAŠ
+LUKAČ ANKICA
+LUKAČ ARANKA
+LUKAČ BOŠKO
+LUKAČ BOŠKO
+LUKAČ BOŽIDAR
+LUKAČ BRANISLAV
+LUKAČ DANILO
+LUKAČ DRAGAN
+LUKAČ DRAGOSLAV DR
+LUKAČ FERENC
+LUKAČ FRANCIŠKA
+LUKAČ FRANJA
+LUKAČ GROZDA
+LUKAČ IGNJAT
+LUKAČ IVAN
+LUKAČ LAZAR
+LUKAČ MIHAJLO
+LUKAČ MIHAJLO
+LUKAČ MIHAJLO
+LUKAČ MILEVA
+LUKAČ NADEŽDA
+LUKAČ PETAR
+LUKAČ PETAR
+LUKAČ RADE
+LUKAČ SAVA
+LUKAČ SLOBODANKA
+LUKAČ SLOBODAN
+LUKAČ STEVAN
+LUKAČ SVETKO
+LUKAČ VELIMIR
+LUKAČEVIĆ LJUBIŠA
+LUKAČI JELISAVETA
+LUKAČI JULIJANA
+LUKAJIĆ LAZAR MR
+LUKAN ĐORĐE
+LUKAN VINCENC
+LUKANIĆ FRIĐEŠ
+LUKANIĆ STEVAN
+LUKATELI IVANKA
+LUKAVAC SMILJKA
+LUKAVAC ZORAN
+LUKEŠEVIĆ DRAGAN
+LUKENIĆ LJILJANA
+LUKETA RADMILA
+LUKIČIĆ BOGDAN DIPL ING
+LUKIČIĆ KATICA
+LUKIČIĆ RADA
+LUKIČIĆ SLOBODAN
+LUKIČIĆ SLOBODAN
+LUKIĆ ŽIVORAD
+LUKIĆ ŽIVORAD
+LUKIĆ ŽIVOTA
+LUKIĆ ĐURA
+LUKIĆ ĐURO
+LUKIĆ ALEKSANDAR
+LUKIĆ ALEKSANDAR
+LUKIĆ ALEKSANDAR
+LUKIĆ ANGELINA
+LUKIĆ BERTA
+LUKIĆ BOŠKO
+LUKIĆ BOŽIDAR
+LUKIĆ BOGOLJUB
+LUKIĆ BORIVOJE
+LUKIĆ BORO
+LUKIĆ BOSILJKA
+LUKIĆ CVETA
+LUKIĆ CVJETKO
+LUKIĆ DANE
+LUKIĆ DANE
+LUKIĆ DARINKA
+LUKIĆ DIMITRIJE
+LUKIĆ DOBRILA
+LUKIĆ DOBROSAV
+LUKIĆ DRAGAN
+LUKIĆ DRAGA
+LUKIĆ DRAGOJE
+LUKIĆ DRAGOSLAVA
+LUKIĆ DUŠANKA
+LUKIĆ DUŠAN
+LUKIĆ DUŠAN
+LUKIĆ-FUDERER JOLANKA
+LUKIĆ GROZDA
+LUKIĆ GRUJICA DIPL ING
+LUKIĆ ILIJA
+LUKIĆ ILIJA
+LUKIĆ ILIJA
+LUKIĆ IVAN
+LUKIĆ IVAN
+LUKIĆ IVAN
+LUKIĆ JADRANKA
+LUKIĆ JASMINA
+LUKIĆ JELENA
+LUKIĆ JELENA
+LUKIĆ JELENA
+LUKIĆ JELICA
+LUKIĆ JOVANKA
+LUKIĆ JOVAN
+LUKIĆ JOVAN
+LUKIĆ JOVAN
+LUKIĆ JOVO
+LUKIĆ JOVO
+LUKIĆ JULKA
+LUKIĆ KATARINA
+LUKIĆ KOSTA
+LUKIĆ KOSTA
+LUKIĆ LAZAR
+LUKIĆ LJILJANA
+LUKIĆ LJUBA
+LUKIĆ LJUBIŠA DR LEKAR
+LUKIĆ LJUBICA
+LUKIĆ LJUBOMIR
+LUKIĆ MARA
+LUKIĆ MARIJA
+LUKIĆ MARKO
+LUKIĆ MARKO
+LUKIĆ MARKO
+LUKIĆ MIĆA
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILAN
+LUKIĆ MILE
+LUKIĆ MILIJA
+LUKIĆ MILKA
+LUKIĆ MILOŠ
+LUKIĆ MILORAD
+LUKIĆ MILORAD
+LUKIĆ MIODRAG
+LUKIĆ MIRJANA
+LUKIĆ MIRJANA
+LUKIĆ MIROSLAV
+LUKIĆ MIROSLAV
+LUKIĆ MOMČILO
+LUKIĆ NEVENA
+LUKIĆ NIKOLA
+LUKIĆ NIKOLA
+LUKIĆ NIKOLA
+LUKIĆ NOVKA
+LUKIĆ OBRAD
+LUKIĆ OLGA
+LUKIĆ OLGICA
+LUKIĆ PETAR
+LUKIĆ PETAR
+LUKIĆ PETAR
+LUKIĆ PETAR
+LUKIĆ RADOSAV
+LUKIĆ RADOSLAV
+LUKIĆ RADOVAN
+LUKIĆ RADOVAN
+LUKIĆ RAJKO
+LUKIĆ RISTO
+LUKIĆ RUŽA
+LUKIĆ RUŽA
+LUKIĆ SAVKA
+LUKIĆ SLOBODANKA
+LUKIĆ SLOBODAN
+LUKIĆ SLOBODAN
+LUKIĆ SLOBODAN
+LUKIĆ SLOBODAN
+LUKIĆ SOFIJA
+LUKIĆ SOFIJA
+LUKIĆ STANA
+LUKIĆ STANIŠA
+LUKIĆ STANISLAV
+LUKIĆ STEVAN
+LUKIĆ STEVAN
+LUKIĆ-STEVIĆ LJILJANA
+LUKIĆ STEVO
+LUKIĆ STOJANKA
+LUKIĆ STOJAN
+LUKIĆ SVETLANA
+LUKIĆ TAMARA
+LUKIĆ TOMISLAV
+LUKIĆ TOMISLAV
+LUKIĆ VELIBOR DR
+LUKIĆ VELIBOR DR
+LUKIĆ VELIMIR
+LUKIĆ VELJKO
+LUKIĆ VERA
+LUKIĆ VERICA
+LUKIĆ VERONA
+LUKIĆ VERONIKA
+LUKIĆ VESELIN
+LUKIĆ VIDOSAVA
+LUKIĆ VLADIMIR DIPL ING
+LUKIĆ VLADIMIR
+LUKIĆ VOJIN
+LUKIĆ VUKOSAV
+LUKIĆ VUK
+LUKIĆ ZORAN
+LUKIĆ ZORAN
+LUKIĆ ZORAN
+LUKIĆ ZORKA
+LUKO ŠANDOR
+LUKO ANDRAŠ
+LUKOVAC ANICA
+LUKOVAC DRAGAN
+LUKOVAC MILAN
+LUKOVAC MILOVAN
+LUKOVIĆ DUŠAN
+LUKOVIĆ IVAN
+LUKOVIĆ JOVAN
+LUKOVIĆ MILAN
+LUKOVIĆ MILORAD
+LUKOVIĆ MILORAD
+LUKOVIĆ MILUTIN
+LUKOVIĆ SLAVKO
+LUKOVIĆ SLOBODANKA
+LUKOVIĆ VLADIMIR
+LULIĆ ANA
+LULIĆ ANTUN
+LULIĆ FRANJA
+LULIĆ IVAN MR
+LULIĆ IVAN
+LULIĆ MAJA
+LULIĆ MARKO
+LUNG DRAGAN
+LUNG STEVAN
+LUNGINOVIĆ MARIJA
+LUNGULOV MILIVOJ
+LUPŠIĆ JULIJANA
+LUPŠIĆ KORNEL
+LUPŠIĆ KORNEL
+LUPŠOR STELA
+LUPINSKI NINOSLAV
+LUPINSKI VLADIMIR
+LUPUC JELICA
+LUPUROV LAZA
+LUPUROVIN NEVENKA
+LUTKIĆ ŽIVKA
+LUTKIĆ ĐORĐE
+LUTKIĆ ALEKSANDRA
+LUTKIĆ LAZAR
+LUTKIĆ MILORAD
+LUTKIĆ STANKO
+LUTKIĆ STEVAN
+LUTKIĆ ZAGORKA
+LUTROV NADA
+LUVRADOV BLAGOJE
+MAČEK JOVAN
+MAČKIĆ BRANKO
+MAČKIĆ DRAGICA
+MAČKIĆ JANKO
+MAČKIĆ JANKO
+MAČKIĆ MILENA
+MAČKIĆ MILENKO
+MAČKIĆ MILEVKA
+MAČKIĆ MILIVOJ
+MAČKIĆ MILJKA
+MAČKIĆ MILOŠ
+MAČKIĆ NEDELJKO
+MAČKIĆ NENAD
+MAČKIĆ PETRA
+MAČKIĆ STEVO
+MAČKIĆ VASO
+MAČKIĆ VLADIMIR
+MAČKOVIĆ MILANA
+MAČKOVIĆ MILAN
+MAČKOVIĆ TOMA
+MAČUKAT GRGO
+MAČVANIN BOJANA DR LEKAR
+MAŠA ERŽEBET
+MAŠA MIHAJLO
+MAŠA VLADIMIR
+MAŠANOVIĆ ĐORĐE DIPL ING
+MAŠANOVIĆ ĐORĐIJE
+MAŠANOVIĆ BLAŽO
+MAŠANOVIĆ BOSILJKA
+MAŠANOVIĆ BRANISLAV
+MAŠANOVIĆ DRAGO
+MAŠANOVIĆ NIKOLA
+MAŠANOVIĆ PETAR
+MAŠANOVIĆ PETAR
+MAŠANOVIĆ PETAR
+MAŠANOVIĆ ZORAN
+MAŠIĆ ŽARKO
+MAŠIĆ ŽIVAN
+MAŠIĆ BORIS
+MAŠIĆ DRAGAN
+MAŠIĆ DRAGIĆ
+MAŠIĆ IŠTVAN
+MAŠIĆ IMRE
+MAŠIĆ IVAN
+MAŠIĆ JOVAN
+MAŠIĆ KAROLJ
+MAŠIĆ MANDA
+MAŠIĆ MILAN DR
+MAŠIĆ MILINKO
+MAŠIĆ MILIVOJ
+MAŠIĆ MILJANA
+MAŠIĆ MILOJE
+MAŠIĆ MIRA
+MAŠIĆ MIRKO
+MAŠIĆ MIROSLAV
+MAŠIĆ NADA
+MAŠIĆ PETAR
+MAŠIĆ REŠAD
+MAŠIĆ SENKA
+MAŠIĆ SENKA
+MAŠIĆ SIMEON
+MAŠIĆ STEVAN
+MAŠIĆ TOMISLAV
+MAŠIĆ VERA
+MAŠIĆ VIKTOR
+MAŠIĆ VUČETA
+MAŠIREVIĆ GORDANA
+MAŠIREVIĆ STEVAN
+MAŠKOVIĆ NOVICA
+MAŠKOVIĆ ZORAN
+MAŠTRAPOVIĆ DRAGOLJUB
+MAŠULOVIĆ JASMINA
+MAŠULOVIĆ JOVANKA
+MAĆAŠ STEVAN
+MAĆAŠ VASA
+MAĆAŠEV ALEKSANDAR
+MAĆAŠEV BRANISLAV
+MAĆAŠEV DANILO
+MAĆAŠEVIĆ VLADIMIR
+MAĆEŠIĆ JOSIP
+MAĆEŠIĆ MIHAILO
+MAĆKO JOŽEF
+MAĆKO VILMOŠ
+MAŽIĆ ĐORĐE
+MAŽIĆ DRAGIŠA
+MAŽIĆ MIRA
+MAŽIĆ PETAR
+MAŽIĆ RUŽA
+MAŽIBRADA VASO
+MAŽIBRADA-VUGRIN MARTA DIPL ING
+MAĐAR BOŽIDAR
+MAĐAR ERŽEBET
+MAĐAR JOVAN
+MAĐAR JOVAN
+MAĐAR LADISLAV
+MAĐAR STEVAN
+MAĐAREVIĆ ALEKSANDAR
+MAĐAREVIĆ IVAN
+MAĐAREVIĆ KOSTA
+MAĐAREVIĆ MILE
+MAĐAREVIĆ MILOŠ
+MAĐAREVIĆ SPASOJE
+MAĐAREVIĆ ZORICA
+MAĐARI ANDOR
+MAĐISTOROV VLADIMIR
+MACAK PAVLE
+MACAK VLADIMIR
+MACANOVIĆ DUŠAN
+MACANOVIĆ JELENA
+MACANOVIĆ JEVROSIMA
+MACANOVIĆ JOVAN
+MACANOVIĆ MILOŠ
+MACANOVIĆ RATKO
+MACEDONIĆ BOGDAN DR
+MACEDONIĆ GORDANA
+MACEDONIĆ STANIMIR
+MACEDONIĆ VLADIMIR
+MACKO ĐURA
+MACKO ANA
+MACNER DAVOR
+MACURA ČEDO
+MACURA ĐORĐE
+MACURA DOBRINKA
+MACURA DRAGO
+MACURA LIDIJA
+MACURA MILOŠ
+MACURA MILORAD
+MACURA MIROSLAV
+MACURA PETAR
+MACURA TEODOR
+MACUT MILOŠ
+MADŽAR BORISLAV
+MADŽAR MILORAD
+MADŽAR MIRKO
+MADŽARAC ČEDOMIR
+MADŽARAC DUŠAN DIPL ING
+MADŽAREV DUŠAN
+MADŽAREV MILANKA
+MADŽAREVIĆ ŽIVORAD
+MADŽAREVIĆ ĐORĐE
+MADŽAREVIĆ BISERKA
+MADŽAREVIĆ MARKO
+MADŽAREVIĆ SAVA
+MADŽGALJ MILENKO
+MADŽGALJ SLOBODAN
+MADŽOVSKI SANDE
+MADAČI MARIJA
+MADACKI ANTAL
+MADACKI JAN
+MADACKI JOSIP
+MADACKI KARLO
+MADARAS ANDRAŠ
+MADARAS ARPAD
+MADARAS MAĆAŠ
+MADARAS MARIJA
+MADARAS ROZALIJA
+MADI ĐURICA
+MADI JOŽEF
+MADIĆ BOŽIDAR DIPL ING
+MADIĆ MARIJAN
+MADIĆ MILISAV
+MADONIĆ STJEPAN
+MADOV ILIJA
+MAGARAŠEVIĆ ANAMARIJA
+MAGARAŠEVIĆ BORIVOJ
+MAGARAŠEVIĆ KATARINA
+MAGARAŠEVIĆ MIRKO
+MAGARAŠEVIĆ NADA
+MAGDA KLARA
+MAGDALENIĆ VERJOV
+MAGDIĆ TOMISLAV
+MAGDU JON DIPL ING
+MAGDU LIA
+MAGDU RODIKA LEKAR
+MAGIĆ NIKOLA
+MAGLAJLIĆ SABRIJA
+MAGLIĆ JOVAN
+MAGLINSKI BORISLAV DIPL PRAVNIK
+MAGLOV ALEKSANDAR
+MAGLOV DRAGOLJUB
+MAGLOV DUŠAN
+MAGLOVSKI DUŠKO
+MAGLOVSKI JOSIP
+MAGLOVSKI MARGITA
+MAGLOVSKI MILICA
+MAGLOVSKI MIROSLAV
+MAGLOVSKI STEVAN
+MAGLOVSKI STEVAN
+MAGOČ FRANJA
+MAGOČ JULIJAN
+MAGOČ MIRONJ
+MAGOŠ ŠANDOR
+MAGOŠ JELISAVETA
+MAGOŠ JULIJANA
+MAGOŠ MARIJA
+MAGURA TOMA
+MAHĐIK ELENA
+MAHAČI JANOŠ
+MAHMUTI MAHMUT
+MAHMUTI ZUZANA
+MAHOVAC MILORAD
+MAICHER ĐORĐE
+MAJŠAI FERENC
+MAJŠAI KLARA
+MAJDANČEVIĆ MITAR
+MAJDANAC DRAGINJA
+MAJDANDŽIĆ JOZO
+MAJDANDŽIĆ PERICA
+MAJDANDŽIĆ PETAR
+MAJDEVAC ŽIVKO DR
+MAJDEVAC RADOVAN
+MAJER ŠANDOR
+MAJER EDUARD
+MAJER JANOŠ
+MAJER JOVAN
+MAJER KATICA
+MAJER MARIJA
+MAJER NIKOLA
+MAJER PETAR
+MAJER STEVAN
+MAJERSKI ŠTEFAN
+MAJETIĆ ANTON
+MAJETIĆ MARIJA
+MAJETIĆ NIKOLA
+MAJIĆ STEVAN
+MAJIĆ VESNA
+MAJIĆ ZORAN
+MAJIĆ ZORAN
+MAJIN EFIMIJA
+MAJIN MIODRAG
+MAJINSKI ZORA
+MAJKIĆ ALEKSANDRA
+MAJKIĆ BOGDAN
+MAJKIĆ BOGDAN
+MAJKIĆ DRAGAN
+MAJKIĆ ILIJA
+MAJKIĆ IVANKA
+MAJKIĆ JOCA
+MAJKIĆ MILAN
+MAJKIĆ MILAN
+MAJKIĆ MILAN
+MAJKIĆ MILAN
+MAJKIĆ MIROSLAV
+MAJKIĆ NIKOLA
+MAJKIĆ OBRAD
+MAJKIĆ RADE
+MAJKIĆ RADOJKA
+MAJKIĆ STOJANKA
+MAJKIĆ VELJKO
+MAJKIĆ VLADO
+MAJKIĆ ZDRAVKO
+MAJKIĆ ZORAN
+MAJKSNER ĐORĐE
+MAJOR ĐURA
+MAJOR ANA
+MAJOR FERENC DR ING
+MAJOR JOŽEF
+MAJOR JOŽEF
+MAJOR KAROLJ
+MAJOR KAROLJ
+MAJOR MARGITA
+MAJOR MARIJA
+MAJOR MARIJA
+MAJOR NANDOR
+MAJOR STEVAN
+MAJORČIK FRANJA
+MAJOROŠ BELA DR
+MAJOROŠ DEŽE
+MAJOROŠ JOVAN
+MAJOROŠ LAJOŠ
+MAJOROŠ STEVAN
+MAJOROŠ TEREZIJA
+MAJOROŠI-DEURA MARIJA
+MAJOROŠI IMRE
+MAJSKI JELICA
+MAJSKI JOVAN
+MAJSKI MILAN
+MAJSKI NIKOLA
+MAJSKI SLAVKO
+MAJSKI VESNA
+MAJSTORAC DRAGAN
+MAJSTORAC LJUBOMIR
+MAJSTORAC PETAR
+MAJSTORAC SAVO
+MAJSTOROV LJUBIŠA
+MAJSTOROV VLADIMIR
+MAJSTOROVIĆ ĐURAĐ
+MAJSTOROVIĆ ANĐA
+MAJSTOROVIĆ ANKA
+MAJSTOROVIĆ BOGDAN
+MAJSTOROVIĆ BORIVOJ
+MAJSTOROVIĆ BORIVOJ
+MAJSTOROVIĆ DARKO
+MAJSTOROVIĆ DRAGAN
+MAJSTOROVIĆ DRAGOMIR
+MAJSTOROVIĆ DUŠAN
+MAJSTOROVIĆ DUŠKO
+MAJSTOROVIĆ GORDANA
+MAJSTOROVIĆ KATICA
+MAJSTOROVIĆ-KOSTIĆ VESNA
+MAJSTOROVIĆ LJILJANA
+MAJSTOROVIĆ MILAN
+MAJSTOROVIĆ MILAN
+MAJSTOROVIĆ MILICA
+MAJSTOROVIĆ NEĐO
+MAJSTOROVIĆ NEBOJŠA
+MAJSTOROVIĆ NEVENKA
+MAJSTOROVIĆ NIKOLA
+MAJSTOROVIĆ PETAR
+MAJSTOROVIĆ RADOSLAV
+MAJSTOROVIĆ SAVKA
+MAJSTOROVIĆ SIMA
+MAJSTOROVIĆ SLOBODAN
+MAJSTOROVIĆ SVETLANA
+MAJSTOROVIĆ TEODOR
+MAJSTOROVIĆ UROŠ
+MAJSTOROVIĆ VASA
+MAJSTOROVIĆ VITOMIR
+MAJSTOROVIĆ VUKAŠIN
+MAJSTOROVIĆ VUKOSAVA
+MAJTAN ĐORĐE DIPL ING
+MAJTAN KARLO
+MAJTAN MIHAJLO
+MAJTAN PAVLE
+MAK ANDRIJA
+MAK JOSIPA
+MAK OSKAR
+MAKŠA ANA
+MAKŠA JOVAN
+MAKŠA KARLO
+MAKŠA PETAR
+MAKAJI JAKOV
+MAKAJI JANKO
+MAKAN JAN
+MAKANJIĆ BOJAN
+MAKANJIĆ MILISAV
+MAKARIĆ NADA
+MAKARIĆ STEVAN
+MAKARIĆ VIDA
+MAKARIĆ ZORAN
+MAKARIN ŽARKO
+MAKARIN ZVONIMIR DIPL ING
+MAKIŠ RUŽA
+MAKIŠ VLATKO
+MAKITAN JOVAN
+MAKIVIĆ MIHAJLO
+MAKIVIĆ MILOŠ
+MAKIVIĆ SAVA
+MAKIVIĆ STANISLAV
+MAKJI ZDENKA
+MAKLENOVIĆ RADA
+MAKLJENOVIĆ SRBOLJUB
+MAKLJENOVIĆ ZORAN
+MAKO ŠANDOR
+MAKO FRANJA
+MAKO JULIJANA
+MAKO MILENA
+MAKOH ANTON
+MAKRA ANA
+MAKRA IVAN
+MAKRA JOSIP
+MAKRA KATARINA
+MAKRIN MARGITA DR
+MAKRIN RUŽICA
+MAKSIĆ ŽIVANA
+MAKSIĆ ĐORĐE
+MAKSIĆ BILJANA
+MAKSIĆ BOŠKO
+MAKSIĆ BOŽIDAR
+MAKSIĆ DANICA
+MAKSIĆ DEJAN
+MAKSIĆ DMITAR
+MAKSIĆ DOBRIVOJE
+MAKSIĆ DRAGAN
+MAKSIĆ DRAGAN
+MAKSIĆ DRAGOMIR
+MAKSIĆ DUŠAN
+MAKSIĆ EDIT
+MAKSIĆ GAVRA
+MAKSIĆ JELICA
+MAKSIĆ JELICA
+MAKSIĆ JOVANKA
+MAKSIĆ JOVAN
+MAKSIĆ JOVAN
+MAKSIĆ LUKA
+MAKSIĆ MARIJANA
+MAKSIĆ MILANA
+MAKSIĆ MILICA
+MAKSIĆ MILICA
+MAKSIĆ MILORAD
+MAKSIĆ MILORAD
+MAKSIĆ NIKOLA
+MAKSIĆ RADOSLAV
+MAKSIĆ RATKO
+MAKSIĆ SAVA
+MAKSIĆ SLAVKO
+MAKSIĆ VOJIN
+MAKSIĆ ZORKA
+MAKSIMČEV ANĐELKO
+MAKSIMČEV STEVAN
+MAKSIMOV BRANISLAV
+MAKSIMOV LJUBOMIR
+MAKSIMOV SLOBODAN
+MAKSIMOV VERA
+MAKSIMOVIĆ ČEDOMIR
+MAKSIMOVIĆ ŽIVORAD
+MAKSIMOVIĆ ĐURICA
+MAKSIMOVIĆ ALEKSANDAR
+MAKSIMOVIĆ ALEKSANDAR
+MAKSIMOVIĆ ALEKSANDAR
+MAKSIMOVIĆ ANA
+MAKSIMOVIĆ ANKICA
+MAKSIMOVIĆ BOŠKO
+MAKSIMOVIĆ BORIVOJE
+MAKSIMOVIĆ BORIVOJ
+MAKSIMOVIĆ BRANISLAV
+MAKSIMOVIĆ BRANKA
+MAKSIMOVIĆ CVIJETIN
+MAKSIMOVIĆ DANICA
+MAKSIMOVIĆ DARKO
+MAKSIMOVIĆ DIMITRIJE
+MAKSIMOVIĆ DRAGAN
+MAKSIMOVIĆ DRAGAN
+MAKSIMOVIĆ DRAGAN
+MAKSIMOVIĆ DRAGIĆ
+MAKSIMOVIĆ DRAGOSLAV
+MAKSIMOVIĆ DUŠAN MR OEC
+MAKSIMOVIĆ DUŠAN
+MAKSIMOVIĆ DUŠAN
+MAKSIMOVIĆ DUŠAN
+MAKSIMOVIĆ IVANKA
+MAKSIMOVIĆ IVAN
+MAKSIMOVIĆ JAKOV
+MAKSIMOVIĆ JELISAVETA
+MAKSIMOVIĆ JOVAN
+MAKSIMOVIĆ JOVAN
+MAKSIMOVIĆ JOVAN
+MAKSIMOVIĆ KATARINA
+MAKSIMOVIĆ KATICA
+MAKSIMOVIĆ LAZAR
+MAKSIMOVIĆ LAZA
+MAKSIMOVIĆ LENKA
+MAKSIMOVIĆ LJUBIŠA
+MAKSIMOVIĆ LJUBIŠA
+MAKSIMOVIĆ LJUBICA
+MAKSIMOVIĆ LJUBICA
+MAKSIMOVIĆ LUKA
+MAKSIMOVIĆ MARKO
+MAKSIMOVIĆ MILAN DIPL ING
+MAKSIMOVIĆ MILANA
+MAKSIMOVIĆ MILAN
+MAKSIMOVIĆ MILENKO
+MAKSIMOVIĆ MILENKO
+MAKSIMOVIĆ MILINA
+MAKSIMOVIĆ MILORAD
+MAKSIMOVIĆ MILUTIN
+MAKSIMOVIĆ MIODRAG
+MAKSIMOVIĆ MIODRAG
+MAKSIMOVIĆ MIODRAG
+MAKSIMOVIĆ MIODRAG
+MAKSIMOVIĆ MIROSLAV
+MAKSIMOVIĆ MLADEN
+MAKSIMOVIĆ NADA
+MAKSIMOVIĆ NATALIJA
+MAKSIMOVIĆ NIKOLA
+MAKSIMOVIĆ NIKOLA
+MAKSIMOVIĆ PETAR
+MAKSIMOVIĆ PREDRAG
+MAKSIMOVIĆ RADMILA
+MAKSIMOVIĆ RADOVANKA
+MAKSIMOVIĆ RADO
+MAKSIMOVIĆ RANĐEL
+MAKSIMOVIĆ RISTO
+MAKSIMOVIĆ SAVA
+MAKSIMOVIĆ SAVO
+MAKSIMOVIĆ SLAVOLJUB
+MAKSIMOVIĆ SREĆKO
+MAKSIMOVIĆ STEVAN
+MAKSIMOVIĆ STEVAN
+MAKSIMOVIĆ STEVAN
+MAKSIMOVIĆ STEVICA
+MAKSIMOVIĆ SVETOMIR
+MAKSIMOVIĆ TIHOMIR
+MAKSIMOVIĆ TINKA
+MAKSIMOVIĆ TOMISLAV
+MAKSIMOVIĆ TOMISLAV
+MAKSIMOVIĆ VELIČKO
+MAKSIMOVIĆ VELIMIR
+MAKSIMOVIĆ VLADIMIR
+MAKSIMOVIĆ ZLATA
+MAKSIMOVIĆ ZORAN
+MAKSIMOVSKI ĐORĐE
+MAKSIMOVSKI VOJO
+MAKSIN SLAVKA
+MAKUH MIHAILO
+MAKUH MIHAJLO
+MAKUH VLADIMIR
+MALČIĆ ANDRIJA DIPL ING
+MALČIĆ ANDRIJA
+MALČIĆ JOŽEF
+MALČIĆ JULKA
+MALČIĆ NIKOLA
+MALAŠEVIĆ MILUTIN
+MALACKO JULIJAN
+MALACKO LJUBICA
+MALAENIĆ DRAGAN
+MALAVRAZIĆ JOVAN
+MALBAŠA BORISLAVA
+MALBAŠA DRAGOLJUB
+MALBAŠA DUŠANKA
+MALBAŠA JELKA
+MALBAŠA MILAN
+MALBAŠA MILE
+MALBAŠA VELJKO
+MALBAŠA ZDRAVKO
+MALBAŠIĆ BOŠKO
+MALBAŠIĆ DRAGAN
+MALBAŠIĆ JANKO
+MALBAŠIĆ MIĆO
+MALBAŠIĆ RUŽA
+MALBAŠKI DUŠAN
+MALBAŠKI-JANKOV ANĐA
+MALBAŠKI MARIJA
+MALBAŠKI MILINKA
+MALEŠ ANĐELKA
+MALEŠ BORA
+MALEŠ DMITAR
+MALEŠ JELENA
+MALEŠ JOVANKA
+MALEŠ KOSTA
+MALEŠ LJILJANA
+MALEŠ MARINKO
+MALEŠ NOVAK
+MALEŠ RADOMIR
+MALEŠ RUŽICA
+MALEŠ STANA
+MALEŠ SVETLANA
+MALEŠ VASO
+MALEŠ VOJISLAV
+MALEŠ ZORA
+MALEŠEV ŽIVKO
+MALEŠEV ŽIVOJIN
+MALEŠEV ĐORĐE
+MALEŠEV BOŠKO
+MALEŠEV BORISLAV
+MALEŠEV BRANKO
+MALEŠEV DAMJAN
+MALEŠEV DAMJAN
+MALEŠEV DIMITRIJE
+MALEŠEV DRAGANA
+MALEŠEV DRAGOLJUB
+MALEŠEV DRAGOLJUB
+MALEŠEV DUŠAN
+MALEŠEV JELICA
+MALEŠEV JOVAN
+MALEŠEV KOSANA
+MALEŠEV LAZAR
+MALEŠEV LJUBICA
+MALEŠEV LJUBINKO
+MALEŠEV LJUBOMIR
+MALEŠEV LUKA
+MALEŠEV MARIJA
+MALEŠEV MILENKO
+MALEŠEV MILEVA
+MALEŠEV MILJA
+MALEŠEV MILOŠ
+MALEŠEV MIODRAG
+MALEŠEV MIODRAG
+MALEŠEV MIROSLAV
+MALEŠEV MIROSLAV
+MALEŠEV PETAR
+MALEŠEV PETAR
+MALEŠEV PREDRAG
+MALEŠEV PREDRAG
+MALEŠEV PRIZRENKA
+MALEŠEV SLAVKO
+MALEŠEV TAMARA
+MALEŠEV VERA
+MALEŠEV VITOMIR
+MALEŠEVIĆ ŽIVAN
+MALEŠEVIĆ ŽIVKA
+MALEŠEVIĆ ĐUKA
+MALEŠEVIĆ ALEKSANDRA
+MALEŠEVIĆ DIMITRIJE
+MALEŠEVIĆ DRAGANA
+MALEŠEVIĆ DRAGAN
+MALEŠEVIĆ DUŠKO
+MALEŠEVIĆ GOJKO
+MALEŠEVIĆ IVAN
+MALEŠEVIĆ JOVAN
+MALEŠEVIĆ JOVAN
+MALEŠEVIĆ LAZAR
+MALEŠEVIĆ LJUBICA
+MALEŠEVIĆ MARIJA
+MALEŠEVIĆ MARKO
+MALEŠEVIĆ MILE
+MALEŠEVIĆ MILICA
+MALEŠEVIĆ MILOŠ
+MALEŠEVIĆ MIRKO
+MALEŠEVIĆ MIROSLAV
+MALEŠEVIĆ MLADEN
+MALEŠEVIĆ NADA
+MALEŠEVIĆ NEDELJKO
+MALEŠEVIĆ NIKICA
+MALEŠEVIĆ PETAR
+MALEŠEVIĆ PETAR
+MALEŠEVIĆ SAVKO LOKAL
+MALEŠEVIĆ SLOBODANKA DR
+MALEŠEVIĆ VASKRSIJE
+MALEŠEVIĆ VLADIMIR
+MALEŠEVIĆ VOJISLAVA
+MALECKI BLAŽ
+MALENČIĆ ĐORĐE
+MALENČIĆ GAVRILO
+MALENČIĆ MARIJA
+MALENČIĆ NIKOLA
+MALENČIĆ RODOLJUB
+MALENČIĆ RUŽICA
+MALENIĆ LAZAR
+MALENIĆ RUŽA
+MALENIĆ SIMA
+MALENIĆ TOMISLAV
+MALENICA ĐURO
+MALENICA ANTUN
+MALENICA DRAGO
+MALENICA IVAN
+MALENICA MARKO
+MALENKOVIĆ ĐORĐE
+MALENKOVIĆ MILOŠ DR
+MALENKOVIĆ VLADIMIR
+MALENOVIĆ MIROSLAV
+MALER KRIŠTOF
+MALERT VENDEL
+MALETAŠKI EVICA
+MALETIĆ-ŠREK MARIJA
+MALETIĆ-ŠREK MARIJA
+MALETIĆ ŽARKO
+MALETIĆ ŽIVANKA
+MALETIĆ ŽIVKO
+MALETIĆ ĐORĐE DIPL ING
+MALETIĆ ĐORĐE
+MALETIĆ ĐORĐE
+MALETIĆ BOSILJKA
+MALETIĆ DRAGOSLAV
+MALETIĆ DRAGO
+MALETIĆ JELICA
+MALETIĆ JOVANKA
+MALETIĆ JOVAN
+MALETIĆ LAURA
+MALETIĆ LAZAR
+MALETIĆ LAZAR
+MALETIĆ LUKA
+MALETIĆ MARICA
+MALETIĆ MILENKO
+MALETIĆ MILOMIR
+MALETIĆ MIODRAG
+MALETIĆ MIOMIR
+MALETIĆ NADA
+MALETIĆ NEDELJKO
+MALETIĆ NIKOLA
+MALETIĆ PAJA
+MALETIĆ RADIVOJ
+MALETIĆ RADOSLAV
+MALETIĆ RADOSLAV
+MALETIĆ SAVA
+MALETIĆ SAVO
+MALETIĆ SLAVICA
+MALETIĆ SLOBODANKA
+MALETIĆ SLOBODAN
+MALETIĆ SRBOLJUB
+MALETIĆ STEVAN
+MALETIĆ STEVAN
+MALETIĆ STEVAN
+MALETIĆ SVETOZAR
+MALETIĆ SVETOZAR
+MALETIĆ TAMARA
+MALETIĆ VEKOSLAV
+MALETIĆ VJERA
+MALETIĆ VJERA
+MALETIĆ ZLATKO
+MALETIN ČARNA DIPL ING
+MALETIN ŽIVKO
+MALETIN ĐORĐE
+MALETIN ĐORĐE
+MALETIN ĐURA
+MALETIN ĐURICA
+MALETIN ALEKSANDAR
+MALETIN BOŠKO
+MALETIN BOŽANA
+MALETIN DANICA
+MALETIN DARINKA
+MALETIN DRAGIŠA
+MALETIN DUŠAN
+MALETIN DUŠAN
+MALETIN GORAN
+MALETIN JANA
+MALETIN JELENA
+MALETIN JOVAN
+MALETIN JOVAN
+MALETIN JOVAN
+MALETIN LJUBOMIR
+MALETIN MARIJA
+MALETIN MARIJA
+MALETIN MILANKA
+MALETIN MILAN
+MALETIN MILAN
+MALETIN MILOŠ
+MALETIN MILOVAN
+MALETIN MIRKO
+MALETIN PAJA
+MALETIN PAVLE
+MALETIN RADA
+MALETIN RADIVOJE
+MALETIN RUŽICA
+MALETIN SLAVICA
+MALETIN SLAVKO
+MALETIN SPOMENKA
+MALETIN STEVAN
+MALETIN STEVAN
+MALETIN SVETOZAR
+MALETIN SVETOZAR
+MALETIN TIMA
+MALETIN TODOR
+MALETIN TODOR
+MALETIN VASA
+MALETIN VITOMIR
+MALETIN VOJISLAV
+MALETIN ZORA
+MALETIN ZORA
+MALEVIĆ VLADIMIR
+MALI ŽIVAN
+MALI ŽIVKO
+MALI DAMJAN
+MALI DRAGA
+MALI ELEONORA
+MALI GORAN
+MALI JOVAN
+MALI KRISTIFOR
+MALI LJUBICA
+MALI LJUBOMIR
+MALI MILOŠ
+MALI MIODRAG
+MALI SAVA
+MALI STANIMIR
+MALI VOJISLAV
+MALIČEVIĆ ĐORĐE
+MALIČEVIĆ RADIVOJE
+MALIČIĆ MILOŠ
+MALIČIĆ VOJISLAV
+MALIĆ ŽARKO
+MALIĆ BILJANA
+MALIĆ BOŽANA
+MALIĆ CVIJETIN
+MALIĆ MILAN
+MALIĆ MILENKO
+MALIĆ MITAR
+MALIĆ MLADEN
+MALIĆ NOVAK
+MALIĆ PREDRAG
+MALIĆ RADIVOJ
+MALIĆ RATKO
+MALIĆ SLAVKO
+MALIĆ SOFIJA
+MALIĆ STOJAN
+MALIĆ STOJA
+MALIĆ UROŠ
+MALIĆ VUKICA
+MALIDŽA ŽELJKO
+MALIDŽAN BLAŽO
+MALIKOVIĆ DUŠAN
+MALIN ĐURA
+MALIN ILIJA
+MALIN MILICA
+MALIN OLGA
+MALIN STANISLAV
+MALIN TATJANA
+MALINAR JELENA
+MALINIĆ SPASOJE
+MALINOVIĆ ANĐA
+MALINOVIĆ ANKICA
+MALINOVIĆ ANKICA
+MALINOVIĆ BOŽO
+MALINOVIĆ BOGDAN
+MALINOVIĆ BOGDAN
+MALINOVIĆ DANICA
+MALINOVIĆ DRAGAN
+MALINOVIĆ DRAGINJA
+MALINOVIĆ DRAGOLJUB
+MALINOVIĆ JOVO
+MALINOVIĆ MARINKO
+MALINOVIĆ NEDELJKO
+MALINOVIĆ NEDELJKO
+MALINOVIĆ SAVO
+MALINOVIĆ SINIŠA
+MALINOVIĆ SLAVICA
+MALINOVIĆ STEVAN
+MALINOVIĆ VELJKO
+MALIVUK BOŽANA
+MALIVUK DUŠAN
+MALIVUK MILAN
+MALIVUK NIKOLA
+MALIVUK PAVLE
+MALIVUK SVETISLAV
+MALJA MORINA
+MALJIK STEVA
+MALJKOVIĆ ĐURO
+MALJKOVIĆ BRANKO
+MALJKOVIĆ BRANKO
+MALJKOVIĆ-DŽUKLEVSKI ANA
+MALJKOVIĆ MARKO
+MALJKOVIĆ MILAN
+MALJKOVIĆ MILAN
+MALJKOVIĆ NEVENKA
+MALJKOVIĆ NIKOLA
+MALJKOVIĆ RANKA
+MALJKOVIĆ VERA
+MALKIĆ GORDAN
+MALKIĆ LJUBIŠA
+MALKIĆ STANA
+MALMER ANDRIJA
+MALMER ANDRIJA
+MALNAR DRAGUTIN
+MALNAR JOSIP
+MALOČIĆ MILAN
+MALOČIĆ MILORAD
+MALOBABIĆ LJUBAN
+MALOBABIĆ MARKO
+MALOBABIĆ MIROSLAV
+MALOBABIĆ NOVICA
+MALOBABIĆ RADE
+MALOGAJSKI BORISLAV
+MALOGAJSKI STEVAN
+MALOTIĆ SAVO
+MALOVAŠIĆ MARIJA
+MALOVIĆ BOGDAN
+MALOVIĆ RADMILA
+MALOVIĆ STANIŠA
+MALOVRAZIĆ GOJKO
+MALOVRAZIĆ GOJKO
+MALUCKOV BOGDAN
+MALUCKOV DANICA
+MALUCKOV JOVAN
+MALUCKOV MARIJA
+MALUCKOV MIODRAG DIPL ING
+MALUCKOV RADOVAN DR LEKAR
+MALUCKOV SLOBODAN
+MALUCKOV STEVAN
+MALUCKOV ZORKA
+MAMIĆ IVAN
+MAMIĆ JOZO
+MAMUŽIĆ IVAN DIPL ING
+MAMUŽIĆ IVAN
+MAMUŽIĆ IVAN
+MAMULA DUŠAN
+MAMULA MLADENKA
+MAMULA PAVLE
+MAMULA RUŽA
+MAMUTOVIĆ MILAN
+MAMUTOVIĆ MILAN
+MAMUTOVIĆ RADIVOJ
+MAMUZIĆ BOGDANKA
+MANČEV NIKOLA
+MANČEVSKI KATA
+MANČEVSKI STEVAN
+MANČIĆ ARANKA
+MANČIĆ DRAGAN DR
+MANČIĆ KATA
+MANČIĆ NIKOLA
+MANČIĆ SAŠA
+MANČIĆ SLOBODAN
+MANČIĆ SVETOZAR
+MANČU ĐORĐE
+MANČU DRAGINJA
+MANČU DUŠAN
+MANČU MILAN
+MANČU MILAN
+MANČU MILOŠ
+MANČU MILOŠ
+MANČU NENAD
+MANČU STEVAN
+MANČU SVETOZAR
+MANČU VIKTOR
+MANASIJEVIĆ GERASIM
+MANASTIRAC DAMJAN
+MANASTIRAC LJUBIŠA
+MANC STEVAN
+MANCEDER ĐURA
+MANDŽUKIĆ MIODRAG
+MANDŽUKOVIĆ VELIMIR
+MANDARIN NATAŠA
+MANDEK FILIP
+MANDELC LJUBICA
+MANDIĆ ČAVA
+MANDIĆ ŽIVKO
+MANDIĆ ĐORĐE
+MANDIĆ ĐORĐE
+MANDIĆ ĐURA
+MANDIĆ ĐURICA
+MANDIĆ ALEKSANDAR DIPL ING
+MANDIĆ ALEKSANDAR
+MANDIĆ BOŠKO
+MANDIĆ BOGDAN
+MANDIĆ BORISLAVA
+MANDIĆ BORISLAV
+MANDIĆ BRANISLAV
+MANDIĆ CVIJETA
+MANDIĆ DANICA
+MANDIĆ DARA
+MANDIĆ DELFINA
+MANDIĆ DENEŠ
+MANDIĆ DOBRILA
+MANDIĆ DRAGANA
+MANDIĆ DRAGAN
+MANDIĆ DRAGOSLAV
+MANDIĆ DRAGO
+MANDIĆ DRAGO
+MANDIĆ DRAGUTIN
+MANDIĆ DUŠANKA
+MANDIĆ DUŠANKA
+MANDIĆ DUŠANKA
+MANDIĆ DUŠAN
+MANDIĆ FRANJA
+MANDIĆ IGNJAT
+MANDIĆ IVANKA
+MANDIĆ IVKA
+MANDIĆ JOVANKA
+MANDIĆ-JOVANOVIĆ VINKA
+MANDIĆ JOVO
+MANDIĆ JOVO
+MANDIĆ KATICA
+MANDIĆ KOSTA
+MANDIĆ KSENIJA
+MANDIĆ LJILJANA
+MANDIĆ LJUBICA
+MANDIĆ LJUBOMIR
+MANDIĆ MANE
+MANDIĆ MANE
+MANDIĆ MARA
+MANDIĆ MARGITA
+MANDIĆ MARIJA
+MANDIĆ MARIJA
+MANDIĆ MARIJA
+MANDIĆ MIKA
+MANDIĆ MILADIJA
+MANDIĆ MILAN DIPL ING
+MANDIĆ MILAN
+MANDIĆ MILENA
+MANDIĆ MILE
+MANDIĆ MILE
+MANDIĆ MILE
+MANDIĆ MILE
+MANDIĆ MILOJE
+MANDIĆ MILOJKO DR LEKAR
+MANDIĆ MILORAD
+MANDIĆ MILORAD
+MANDIĆ MIODRAG
+MANDIĆ MIROSLAV
+MANDIĆ NADA
+MANDIĆ NADA
+MANDIĆ NEĐO
+MANDIĆ NEĐO
+MANDIĆ NEDELJKO DIPL PRAVNIK
+MANDIĆ NIKOLA
+MANDIĆ NIKOLA
+MANDIĆ NOVKA
+MANDIĆ PANE
+MANDIĆ PERA
+MANDIĆ PETAR
+MANDIĆ RADENKO
+MANDIĆ RADIVOJE
+MANDIĆ RADMILA
+MANDIĆ RADMILA
+MANDIĆ RADOJKA
+MANDIĆ RADOMIR
+MANDIĆ RADOVAN
+MANDIĆ RADOVAN
+MANDIĆ RAJA
+MANDIĆ SINIŠA
+MANDIĆ SLAVKA
+MANDIĆ SLAVKO
+MANDIĆ SLOBODAN
+MANDIĆ SLOBODAN
+MANDIĆ SNEŽANA
+MANDIĆ SRETEN
+MANDIĆ SRETEN
+MANDIĆ SRETO
+MANDIĆ STEVAN
+MANDIĆ SVETKO
+MANDIĆ SVETLANA
+MANDIĆ TEREZIJA
+MANDIĆ TIBOR
+MANDIĆ TOMISLAV
+MANDIĆ TOMISLAV
+MANDIĆ UROŠ DIPL OEC
+MANDIĆ VASILIJE
+MANDIĆ VELIZAR
+MANDIĆ VERA
+MANDIĆ VIOLETA
+MANDIĆ ZLATICA
+MANDIĆ ZORAN
+MANDIĆ ZORAN
+MANDIĆ ZORICA
+MANDIĆ ZORKA
+MANDIĆ ZORKA
+MANDIĆ ZORKA
+MANDIĆ ZVONIMIR
+MANDRAPA ĐURO
+MANDRINO SANKA
+MANESKI BLAGOJA
+MANEVSKI BRANISLAV
+MANEVSKI DUŠAN
+MANEVSKI RADOSLAV
+MANEVSKI TRAJKO DR
+MANEVSKI VERA
+MANG BRANKO
+MANGER JOSIP
+MANHAJM JOŽEF
+MANIĆ ANKICA
+MANIĆ BLANKA
+MANIĆ BOŽIDAR
+MANIĆ BRANISLAV
+MANIĆ BRANKO
+MANIĆ BRANKO
+MANIĆ DANILO
+MANIĆ DRAGIŠA
+MANIĆ MILOJE
+MANIĆ MILOJE
+MANIĆ MILORAD
+MANIĆ SEVER DIPL PH
+MANIĆ SVETOMIR
+MANIN ĐORĐE
+MANJA SREDOJE
+MANJA ZDRAVKO
+MANJAK DRAGO
+MANJENČIĆ SLOBODAN
+MANJULOV LUKA
+MANOJLOV IRENA
+MANOJLOV IVAN
+MANOJLOV JOVANKA
+MANOJLOVIĆ ČEDOMIR
+MANOJLOVIĆ ČEDO
+MANOJLOVIĆ ŽARKO
+MANOJLOVIĆ ŽIVKO
+MANOJLOVIĆ ĐORĐE
+MANOJLOVIĆ ALEKSANDAR
+MANOJLOVIĆ ALEKSANDAR
+MANOJLOVIĆ ALEKSA
+MANOJLOVIĆ ANGELINA
+MANOJLOVIĆ BILJANA
+MANOJLOVIĆ BOSILJKA
+MANOJLOVIĆ BRANISLAV
+MANOJLOVIĆ DARINKA
+MANOJLOVIĆ DESANKA
+MANOJLOVIĆ DOBRILA
+MANOJLOVIĆ DRAGANA
+MANOJLOVIĆ DRAGICA
+MANOJLOVIĆ DUŠAN
+MANOJLOVIĆ DUŠAN
+MANOJLOVIĆ GRUJICA
+MANOJLOVIĆ ILIJA
+MANOJLOVIĆ JELENA
+MANOJLOVIĆ JOVAN
+MANOJLOVIĆ KATARINA
+MANOJLOVIĆ KOVILJKO
+MANOJLOVIĆ LAZAR
+MANOJLOVIĆ LAZAR
+MANOJLOVIĆ LAZAR
+MANOJLOVIĆ LJUBICA
+MANOJLOVIĆ LJUBICA
+MANOJLOVIĆ LJUBOMIR
+MANOJLOVIĆ MAJA
+MANOJLOVIĆ MANOJLO
+MANOJLOVIĆ MANOJLO
+MANOJLOVIĆ MARIJA
+MANOJLOVIĆ MILAN
+MANOJLOVIĆ MILAN
+MANOJLOVIĆ MILAN
+MANOJLOVIĆ MILENKO
+MANOJLOVIĆ MILOŠ
+MANOJLOVIĆ MILOŠ
+MANOJLOVIĆ MILOŠ
+MANOJLOVIĆ MILORAD
+MANOJLOVIĆ MILORAD
+MANOJLOVIĆ MIODRAG
+MANOJLOVIĆ MIODRAG
+MANOJLOVIĆ MIRJANA
+MANOJLOVIĆ MIRKO DIPL ING
+MANOJLOVIĆ MIRKO
+MANOJLOVIĆ MIROSLAV
+MANOJLOVIĆ MOMČILO
+MANOJLOVIĆ MOMČILO
+MANOJLOVIĆ MOMČILO
+MANOJLOVIĆ NENAD
+MANOJLOVIĆ NIKOLA
+MANOJLOVIĆ PETAR
+MANOJLOVIĆ PETAR
+MANOJLOVIĆ RADIVOJ
+MANOJLOVIĆ RATKO
+MANOJLOVIĆ SAVA
+MANOJLOVIĆ SAVO
+MANOJLOVIĆ SLAVICA
+MANOJLOVIĆ SLOBODAN
+MANOJLOVIĆ STANIŠA DR PROF
+MANOJLOVIĆ STANKO
+MANOJLOVIĆ STEVAN
+MANOJLOVIĆ STEVAN
+MANOJLOVIĆ SVETOZAR
+MANOJLOVIĆ TOŠA
+MANOJLOVIĆ VANDA
+MANOJLOVIĆ VELISLAV
+MANOJLOVIĆ VERA
+MANOJLOVIĆ ZORAN
+MANOJLOVIĆ ZORAN
+MANOJLOVIĆ ZORAN
+MANOJLOVIĆ ZORICA
+MANOJLOVIĆ ZVONKO
+MANUKOV OLGA
+MANUKOV TODOR
+MAODUŠ ANA
+MAODUŠ DANICA
+MAODUŠ JOVO
+MAODUŠ MIODRAG
+MAODUŠ NIKOLA
+MAODUŠ PREDRAG
+MAR EDVARD
+MARČAK MIHAJLO
+MARČEK MILAN
+MARČETA ĐURA
+MARČETA BRANKO
+MARČETA DRAGICA
+MARČETA DRAGICA
+MARČETA LAZAR
+MARČETA MILAN
+MARČETA RAJKO
+MARČETA SLOBODAN
+MARČETA STEVA
+MARČETA VELIMIR
+MARČETA ZORA
+MARČETIĆ CVETA
+MARČETIĆ DRAGO
+MARČETIĆ MARKO
+MARČETIĆ MILAN
+MARČETIĆ MILAN
+MARČETIĆ MILAN
+MARČETIĆ NIKOLA
+MARČETIĆ OBRENIJA
+MARČETIĆ OLBINA
+MARČETIĆ PERICA
+MARČETIĆ PETAR
+MARČETIĆ PETAR
+MARČETIN RADE
+MARČIĆ ŽIVAN
+MARČIĆ ĐORĐE
+MARČIĆ ALEKSANDAR
+MARČIĆ BOŽANA
+MARČIĆ JELENA
+MARČIĆ MARIJA
+MARČIĆ MILENKO
+MARČIĆ STEVAN
+MARČIĆ STEVAN
+MARČIĆ STEVAN
+MARČIĆEV MARIJA
+MARČIĆEV MERIMA
+MARČINKO MILAN
+MARČOK ANICA
+MARČOK IŠTVAN
+MARČOK ISIDORA
+MARČOK LIDIJA
+MARČOK MIHAJLO
+MARČOK MIHAJLO
+MARČOK VERA
+MARČOK ZUZANA
+MARČUK SAŠA
+MARČUK STEVAN
+MARŽIĆ ANICA
+MARĐELOŠKI STANUŠA
+MARAŠ JOVAN
+MARAŠ MIROJE
+MARAŠ SLOBODAN
+MARAŠ VOJIN
+MARACI MIHALJ
+MARAKOVIĆ NEVENA
+MARAMICA JELENA
+MARAMICA MIROSLAV
+MARAN DRAGIŠA
+MARAN MILORAD
+MARAS FILIP
+MARAS JOSIP
+MARAUC ZVONIMIR
+MARAVIĆ ĐURO
+MARAVIĆ ĐURO
+MARAVIĆ ĐURO
+MARAVIĆ BRANISLAV
+MARAVIĆ DMITAR
+MARAVIĆ DRAGICA
+MARAVIĆ LAZO
+MARAVIĆ MARKO
+MARAVIĆ MIHAJLO
+MARAVIĆ MILAN
+MARAVIĆ MILENA
+MARAVIĆ MILOŠ
+MARAVIĆ NIKOLA
+MARAVIĆ SAVA
+MARAVIĆ SLAVICA
+MARAVIĆ VLADA
+MARCEKIĆ DOBRINKA
+MARCIKIĆ ŽIVANA
+MARCIKIĆ BOGDAN
+MARCIKIĆ DRAGICA
+MARCIKIĆ EMIL
+MARCIKIĆ GIGA DR
+MARCIKIĆ KONSTANTIN
+MARCIKIĆ LJILJANA
+MARCIKIĆ LJUBINKA
+MARCIKIĆ MARICA
+MARCIKIĆ MILENA
+MARCIKIĆ SOFIJA
+MARCIKIĆ STEVAN
+MARCIKIĆ STEVAN
+MARCIKIĆ VERA
+MARDEŠIĆ ŠIME
+MAREŠ BOŽO
+MAREŠ TRIFUN
+MAREŠČUK PETAR
+MARELJ ŽIVAN
+MARELJ MIROSLAV
+MARELJ SELENA
+MARELJ VELISLAV
+MARELJ ZLATA
+MARELJEV JELENA
+MARETIĆ MARKO DIPL OEC
+MARETIĆ STEVO
+MARETIĆ VLADA
+MARETIĆ VLADA
+MARETIĆ VLADA
+MAREVIĆ ANTE
+MARFI SMILJKA
+MARGANOVIĆ DRAGICA
+MARGANOVIĆ DUŠAN DR
+MARGANOVIĆ GEORGINA
+MARGANZ VIKTOR
+MARGETA ANICA
+MARGETA MARIJA
+MARGETIĆ ŽIŽA
+MARGETIĆ ELVIRA
+MARGIT JULIJANA
+MARGIT VERA
+MARGUŠIĆ ANDRIJA
+MARHOŠEVIĆ MUJO
+MARIČEVIĆ KATICA
+MARIČEVIĆ RISTA
+MARIČIĆ ANDRIJA
+MARIČIĆ BRANKO
+MARIČIĆ BRATOLJUB
+MARIČIĆ GOJKO
+MARIČIĆ ILIJA
+MARIČIĆ IVICA
+MARIČIĆ MARA
+MARIČIĆ MILAN
+MARIČIĆ MILORAD
+MARIČIĆ MIRA
+MARIČIĆ NEDELJKO
+MARIČIĆ NIKOLA
+MARIČIĆ NIKOLA
+MARIČIĆ PAVLE
+MARIČIĆ STEVAN
+MARIČIĆ STEVAN
+MARIČIĆ VOJISLAV
+MARIČIN NENAD
+MARIŠAN VLADIMIR
+MARIĆ ŽARKO
+MARIĆ ŽARKO
+MARIĆ ŽIKA
+MARIĆ ŽIVANA
+MARIĆ ŽIVKO
+MARIĆ ĐORĐE
+MARIĆ ĐURO
+MARIĆ ADAM DR
+MARIĆ ALEKSANDAR
+MARIĆ ANĐELKO
+MARIĆ ANĐELKO
+MARIĆ ANKA
+MARIĆ ANKA
+MARIĆ ANKICA
+MARIĆ BOŠKO
+MARIĆ BOŠKO
+MARIĆ BOŽICA
+MARIĆ BOŽIDAR
+MARIĆ BOGOLJUB
+MARIĆ BOJADIMIR
+MARIĆ BORIVOJ
+MARIĆ BOSILJKA
+MARIĆ BRANISLAV DIPL ING
+MARIĆ BRANKO
+MARIĆ BRANKO
+MARIĆ BRANO
+MARIĆ CVIJO
+MARIĆ DANICA
+MARIĆ DARINKA
+MARIĆ DAVID
+MARIĆ DRAGANA
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGAN
+MARIĆ DRAGICA
+MARIĆ DRAGOLJUB
+MARIĆ DUŠANKA
+MARIĆ DUŠAN
+MARIĆ DUŠAN
+MARIĆ DUŠAN
+MARIĆ DUŠAN
+MARIĆ DUŠAN
+MARIĆ DUŠICA
+MARIĆ ERŽEBET
+MARIĆ GOJKO
+MARIĆ GOJKO
+MARIĆ GRUJICA DR
+MARIĆ ILE
+MARIĆ ILIJA
+MARIĆ ILIJA
+MARIĆ ILINKA
+MARIĆ IVO
+MARIĆ JADRANKA
+MARIĆ JELICA
+MARIĆ JOCA
+MARIĆ JOLANKA
+MARIĆ JOVANKA
+MARIĆ JOVAN
+MARIĆ JOVAN
+MARIĆ JOVAN
+MARIĆ JOVAN
+MARIĆ JOVAN
+MARIĆ JOVO
+MARIĆ JOVO
+MARIĆ JULIJANA
+MARIĆ KADIVKA
+MARIĆ KATICA
+MARIĆ KATICA
+MARIĆ KOSTA
+MARIĆ LAZAR
+MARIĆ LJEPOSAVA
+MARIĆ LJUBA
+MARIĆ LJUBICA
+MARIĆ LJUBOMIR
+MARIĆ LJUBOMIR
+MARIĆ LJUBOMIR
+MARIĆ LJUPKO
+MARIĆ LUKA
+MARIĆ MARA
+MARIĆ MARIJA
+MARIĆ MARIJA
+MARIĆ MARIJA
+MARIĆ MARKO
+MARIĆ MARKO
+MARIĆ MIĆA DIPL ING
+MARIĆ MIHAJLO
+MARIĆ MILAN DIPL ING
+MARIĆ MILAN DR
+MARIĆ MILANA
+MARIĆ MILANKA
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILAN
+MARIĆ MILE DIPL OEC
+MARIĆ MILENA
+MARIĆ MILENA
+MARIĆ MILENKO
+MARIĆ MILENKO
+MARIĆ MILENKO
+MARIĆ MILISAV
+MARIĆ MILOŠ
+MARIĆ MILOŠ
+MARIĆ MILORAD
+MARIĆ MILORAD
+MARIĆ MILOSAV
+MARIĆ MILUN
+MARIĆ MILUTIN
+MARIĆ MIRKO
+MARIĆ MIRKO
+MARIĆ MIRKO
+MARIĆ MIRKO
+MARIĆ MIROLJUB
+MARIĆ MITAR
+MARIĆ MITAR
+MARIĆ-MITROVIĆ MARIJA
+MARIĆ MOMČILO
+MARIĆ NEBOJŠA
+MARIĆ NEDELJKO
+MARIĆ NEVENKA
+MARIĆ NIKOLA
+MARIĆ NIKOLA
+MARIĆ NOVAK
+MARIĆ NOVAK
+MARIĆ OSTOJA
+MARIĆ PAVLE
+MARIĆ PETAR
+MARIĆ PETAR
+MARIĆ PRVOSLAV
+MARIĆ RADIVOJ
+MARIĆ RADMILA
+MARIĆ RADMILA
+MARIĆ RADMILA
+MARIĆ RADOMIR DR
+MARIĆ RADOSAV
+MARIĆ RADOSLAVA
+MARIĆ RADOVANKA
+MARIĆ RADOVAN
+MARIĆ RADOVAN
+MARIĆ RAJKO
+MARIĆ SAVA
+MARIĆ SINIŠA
+MARIĆ SLAVICA
+MARIĆ SLAVKO
+MARIĆ SLAVKO
+MARIĆ SLOBODAN
+MARIĆ SLOBODAN
+MARIĆ SRETEN DR PROF
+MARIĆ STANISLAV
+MARIĆ STANISLAV
+MARIĆ STEVAN
+MARIĆ STEVAN
+MARIĆ STEVAN
+MARIĆ STEVAN
+MARIĆ STEVAN
+MARIĆ STEVKA
+MARIĆ STEVO
+MARIĆ STOJANKA
+MARIĆ SVETISLAV PROFESOR
+MARIĆ SVETISLAV
+MARIĆ TAMARA DIPL ING
+MARIĆ UROŠ
+MARIĆ VASKA
+MARIĆ VASO
+MARIĆ VERA
+MARIĆ VID
+MARIĆ VLADISLAV
+MARIĆ VOJISLAV DR PROF
+MARIĆ VUKADIN
+MARIĆ ZORANKA
+MARIĆ ZORAN
+MARIĆ ZORAN
+MARIĆEVIĆ ZORAN
+MARIAŠ JOŽEF
+MARIAŠ MARIJA
+MARIJAŠ JOVAN
+MARIJAŠ MARIJA
+MARIJAŠ MARIJA
+MARIJAŠ MARIJA
+MARIJAŠ MIHALJ
+MARIJAŠ STEVAN
+MARIJAŠ ZDENKA
+MARIJAN ŽELJKO
+MARIJAN BRANISLAVA
+MARIJANAC STOJA
+MARIJANOVIĆ RADOJKA
+MARIJANOVIĆ SVETOZAR
+MARIJANSKI ĐORĐE
+MARIJANSKI ĐORĐE
+MARIJANSKI ALEKSANDAR
+MARIJANSKI MILOŠ
+MARIJANSKI STEVAN
+MARIJANSKI VESNA
+MARIN MILAN
+MARIN MILIVOJ
+MARIN MLADEN
+MARIN NATALIJA
+MARIN NIKOLA
+MARIN RADOMIR
+MARIN VASO
+MARIN VERICA
+MARIN ZORAN
+MARINČEV BRANISLAV
+MARINČEV STEVAN
+MARINČIĆ DRAGICA
+MARINČIĆ MARKO
+MARINČIĆ MILAN
+MARINČIĆ MILAN
+MARINČIĆ OLGA
+MARINŠEK VJEKOSLAV
+MARINA ŠTEFAN
+MARINA LUĆIJAN
+MARINAC ZORAN
+MARINIĆ BRANKO
+MARINIĆ IVO
+MARINIĆ STIPAN
+MARINKOV ČEDA
+MARINKOV ŽARKO
+MARINKOV ĐORĐE
+MARINKOV ĐORĐE
+MARINKOV ĐURA DIPL ING
+MARINKOV ANKICA
+MARINKOV ARSEN
+MARINKOV BOŽA
+MARINKOV DEJAN
+MARINKOV DRAGINJA
+MARINKOV DUŠAN
+MARINKOV FEMKA
+MARINKOV GAVRA
+MARINKOV JOVANKA
+MARINKOV JOVAN
+MARINKOV JOVAN
+MARINKOV JULIJANA
+MARINKOV JULIJANA
+MARINKOV MELANIJA
+MARINKOV MILENKO
+MARINKOV MILIVOJ DIPL ING
+MARINKOV MILJA
+MARINKOV MILORAD
+MARINKOV MILOSAVA
+MARINKOV MIODRAG
+MARINKOV MIRJANA
+MARINKOV MOMČILO
+MARINKOV MOMČILO
+MARINKOV NIKOLA
+MARINKOV OMER
+MARINKOV PAJA
+MARINKOV PREDRAG
+MARINKOV RUŽICA
+MARINKOV SAVA
+MARINKOV SINIŠA
+MARINKOV SLAVKO
+MARINKOV SLAVKO
+MARINKOV STEVAN
+MARINKOV STEVAN
+MARINKOV STRAHINJA DR PROF
+MARINKOV VESELIN
+MARINKOV VESNA
+MARINKOV VLADA
+MARINKOV VLAJKO
+MARINKOV ZORAN
+MARINKOVIĆ ČEDOMIR
+MARINKOVIĆ ŽIVA
+MARINKOVIĆ ŽIVKA
+MARINKOVIĆ ŽIVKO
+MARINKOVIĆ ŽIVKO
+MARINKOVIĆ ŽIVKO
+MARINKOVIĆ ŽIVOJIN
+MARINKOVIĆ ŽIVORAD
+MARINKOVIĆ BOGOLJUB
+MARINKOVIĆ BOJA
+MARINKOVIĆ BORISLAV
+MARINKOVIĆ BORIVOJE DR
+MARINKOVIĆ BRANKO
+MARINKOVIĆ BRATIMIR
+MARINKOVIĆ DRAGAN
+MARINKOVIĆ DRAGAN
+MARINKOVIĆ DRAGAN
+MARINKOVIĆ DRAGAN
+MARINKOVIĆ DRAGICA
+MARINKOVIĆ DRAGICA
+MARINKOVIĆ JELICA
+MARINKOVIĆ JOVAN
+MARINKOVIĆ KATALIN
+MARINKOVIĆ LEPOSAVA
+MARINKOVIĆ MIĆO
+MARINKOVIĆ MILAN
+MARINKOVIĆ MILENA
+MARINKOVIĆ MILENA
+MARINKOVIĆ MILENA
+MARINKOVIĆ MILEN
+MARINKOVIĆ MILICA
+MARINKOVIĆ MILIVOJE
+MARINKOVIĆ MILOJKO
+MARINKOVIĆ MILORAD
+MARINKOVIĆ MILOVAN
+MARINKOVIĆ MILUTIN
+MARINKOVIĆ MIRKO
+MARINKOVIĆ MIROSLAV
+MARINKOVIĆ MITAR
+MARINKOVIĆ MITAR
+MARINKOVIĆ NENAD
+MARINKOVIĆ NIKOLA
+MARINKOVIĆ NIKOLA
+MARINKOVIĆ NIKOLA
+MARINKOVIĆ RADA
+MARINKOVIĆ RADIVOJ
+MARINKOVIĆ RADOJICA
+MARINKOVIĆ RADOJKA
+MARINKOVIĆ RADOMIR
+MARINKOVIĆ RADOSLAV DR
+MARINKOVIĆ RADOVAN
+MARINKOVIĆ RISTANA
+MARINKOVIĆ RUŽICA
+MARINKOVIĆ SAVA
+MARINKOVIĆ SLAVKO
+MARINKOVIĆ SLOBODAN
+MARINKOVIĆ SLOBODAN
+MARINKOVIĆ SLOBODAN
+MARINKOVIĆ SOFIJA
+MARINKOVIĆ STANKO
+MARINKOVIĆ STANOJKA
+MARINKOVIĆ STEVAN
+MARINKOVIĆ STOJANKA
+MARINKOVIĆ STOJAN
+MARINKOVIĆ SVETISLAV
+MARINKOVIĆ VLADICA
+MARINKOVIĆ VLADO
+MARINKOVIĆ VOJIN
+MARINKOVIĆ VOJISLAVKA
+MARINKOVIĆ VUKAŠIN
+MARINKOVIĆ ZORAN
+MARINOV MARINKO
+MARINOVIĆ ĐORĐE
+MARINOVIĆ ALEKSANDAR
+MARINOVIĆ ALEKSANDAR
+MARINOVIĆ DOBRIVOJE
+MARINOVIĆ DUŠAN
+MARINOVIĆ KATICA
+MARINOVIĆ MARIJA
+MARINOVIĆ MILAN
+MARINOVIĆ PEJO
+MARINOVIĆ-SRDANOV DANICA
+MARINOVIĆ TOMISLAV
+MARINOVIĆ VINKA
+MARINOVIĆ ZLATICA
+MARINOVIĆ ZORICA
+MARINOVIĆ ZORICA
+MARINOVSKI ĐORĐE
+MARINOVSKI KATICA
+MARJAŠ ANKA
+MARJAŠ JANKO
+MARJAŠ MIŠA
+MARJAŠ MIHAJLO
+MARJAŠ MILKA
+MARJAŠ STANKO
+MARJAŠ VLADIMIR
+MARJAN DUŠAN
+MARJAN MILIJANA
+MARJAN MIRKO
+MARJANOV DUŠAN
+MARJANOV ERŽEBET
+MARJANOV JOVANKA
+MARJANOV LJUBOMIR
+MARJANOV MARA
+MARJANOV MIHAJLO DR
+MARJANOV MILENKO
+MARJANOV OLGA
+MARJANOV RADOVAN
+MARJANOV SONJA
+MARJANOV TIMOTIJE
+MARJANOV VUJICA
+MARJANOVIĆ ČEDOMIR
+MARJANOVIĆ ŽARKO
+MARJANOVIĆ ŽELJKO
+MARJANOVIĆ ŽIVOTA
+MARJANOVIĆ ŽIVOTA
+MARJANOVIĆ ĐORĐE
+MARJANOVIĆ ĐURO
+MARJANOVIĆ ALEKSANDAR
+MARJANOVIĆ BILJANA
+MARJANOVIĆ BOŽIDAR
+MARJANOVIĆ BOŽIDAR
+MARJANOVIĆ BOJANA
+MARJANOVIĆ BORIVOJE
+MARJANOVIĆ BOSILJKA
+MARJANOVIĆ BRANIMIR
+MARJANOVIĆ DANA
+MARJANOVIĆ DANILKO
+MARJANOVIĆ DIMITRIJE
+MARJANOVIĆ DRAGAN
+MARJANOVIĆ DRAGIŠA
+MARJANOVIĆ DRAGIŠA
+MARJANOVIĆ DRAGOMIR
+MARJANOVIĆ DUŠANKO
+MARJANOVIĆ DUŠAN
+MARJANOVIĆ DUŠAN
+MARJANOVIĆ DUŠKO
+MARJANOVIĆ GABRIJEL
+MARJANOVIĆ GOJKO
+MARJANOVIĆ JOVANKA
+MARJANOVIĆ JOVAN
+MARJANOVIĆ JOVA
+MARJANOVIĆ LJUBIVOJE
+MARJANOVIĆ LJUBOMIR
+MARJANOVIĆ LUKA
+MARJANOVIĆ MARIJA
+MARJANOVIĆ MILAN
+MARJANOVIĆ MILAN
+MARJANOVIĆ MILAN
+MARJANOVIĆ MILAN
+MARJANOVIĆ MILENKO DR ING
+MARJANOVIĆ MILICA DR
+MARJANOVIĆ MILOŠ
+MARJANOVIĆ MILOMIR
+MARJANOVIĆ MILORAD
+MARJANOVIĆ MILORAD
+MARJANOVIĆ MILORAD
+MARJANOVIĆ MILORAD
+MARJANOVIĆ MILUTIN
+MARJANOVIĆ MIROSLAV
+MARJANOVIĆ MIROSLAV
+MARJANOVIĆ MITAR
+MARJANOVIĆ NADA
+MARJANOVIĆ NATALIJA
+MARJANOVIĆ NEDELJKO
+MARJANOVIĆ NEDELJKO
+MARJANOVIĆ NIKOLA MR
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ NIKOLA
+MARJANOVIĆ PRVOSLAV
+MARJANOVIĆ RADMILA
+MARJANOVIĆ RUŽICA
+MARJANOVIĆ SLAVOLJUB DR
+MARJANOVIĆ STEVKA
+MARJANOVIĆ SVETLANA
+MARJANOVIĆ TATJANA
+MARJANOVIĆ TRIVUN
+MARJANOVIĆ VELIMIR
+MARJANOVIĆ VERA
+MARJANOVIĆ VID
+MARJANOVIĆ VLADO
+MARJANOVIĆ VOJIN
+MARJANOVIĆ ZORAN
+MARJANOVIĆ ZORA
+MARJANSKI FEDOR
+MARKANOV LJUBICA
+MARKANOV ZORICA
+MARKGRAF ANICA
+MARKGRAF SOFIJA
+MARKI NEVENKA
+MARKI NIKOLA
+MARKI SLAVKA
+MARKIŠ SOFIJA
+MARKIĆEVIĆ DUŠANKA
+MARKIĆEVIĆ MILAN
+MARKO JAN PROFESOR
+MARKO NADA DR
+MARKOSKI STOJAN
+MARKOV ŽARKO
+MARKOV ŽIVA
+MARKOV ĐURA
+MARKOV ANĐELKA
+MARKOV CVETANA
+MARKOV DOBRILA
+MARKOV DRAGAN
+MARKOV DRAGAN
+MARKOV DUŠAN
+MARKOV EMIL
+MARKOV FOTIJE
+MARKOV ILIJA
+MARKOV IVICA
+MARKOV-JELENIĆ MIRJANA
+MARKOV LJUBOMIR
+MARKOV LJUBOMIR
+MARKOV LJUBOMIR
+MARKOV MARIJA
+MARKOV MILAN
+MARKOV MILAN
+MARKOV MILENKO
+MARKOV MILICA
+MARKOV MILICA
+MARKOV MIRA
+MARKOV NADA
+MARKOV NADA
+MARKOV NIKOLA
+MARKOV PETAR
+MARKOV PETAR
+MARKOV RADISLAV
+MARKOV RADOSAV
+MARKOV RADOVAN
+MARKOV RADOVAN
+MARKOV SAVA
+MARKOV SINIŠA
+MARKOV SPASOJE DR
+MARKOV STOJAN
+MARKOV TOMISLAV
+MARKOV VERA
+MARKOV VIDOSAVA
+MARKOV ZORAN MR
+MARKOV ZORA
+MARKOV ZORKA
+MARKOVIĆ ČEDOMIR
+MARKOVIĆ ŽARKO
+MARKOVIĆ ŽARKO
+MARKOVIĆ ŽARKO
+MARKOVIĆ ŽELIBOR
+MARKOVIĆ ŽELJKA
+MARKOVIĆ ŽELJKO
+MARKOVIĆ ŽIVAN
+MARKOVIĆ ŽIVKO
+MARKOVIĆ ŽIVOJIN DR
+MARKOVIĆ ŽIVOJIN
+MARKOVIĆ ŽIVOJIN
+MARKOVIĆ ŽIVOSLAV
+MARKOVIĆ ŽIVOTA
+MARKOVIĆ ĐENA
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ĐORĐE
+MARKOVIĆ ADAM
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ALEKSANDAR
+MARKOVIĆ ANTONIJE
+MARKOVIĆ BOŠKO
+MARKOVIĆ BORISLAV
+MARKOVIĆ BORISLAV
+MARKOVIĆ BORIS
+MARKOVIĆ BORIVOJ
+MARKOVIĆ BRANISLAV
+MARKOVIĆ BRANISLAV
+MARKOVIĆ BRANISLAV
+MARKOVIĆ BRANKO
+MARKOVIĆ BRANKO
+MARKOVIĆ BUDIMIR
+MARKOVIĆ BUDIMIR
+MARKOVIĆ CVETKO
+MARKOVIĆ CVETKO
+MARKOVIĆ DANICA
+MARKOVIĆ DANICA
+MARKOVIĆ DANICA
+MARKOVIĆ DEJAN
+MARKOVIĆ DESANKA
+MARKOVIĆ DIMITRIJE
+MARKOVIĆ DIMITRIJE
+MARKOVIĆ DOBROSAV
+MARKOVIĆ DOBROSAV
+MARKOVIĆ DRAGAN
+MARKOVIĆ DRAGAN
+MARKOVIĆ DRAGAN
+MARKOVIĆ DRAGIŠA
+MARKOVIĆ DRAGOJA
+MARKOVIĆ DRAGOJA
+MARKOVIĆ DRAGOLJUB
+MARKOVIĆ DRAGOLJUB
+MARKOVIĆ DRAGOLJUB
+MARKOVIĆ DRAGOMIR
+MARKOVIĆ DRAGOSLAV
+MARKOVIĆ DRAGOSLAV
+MARKOVIĆ DRAGUTIN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUŠAN
+MARKOVIĆ DUBRAVKO
+MARKOVIĆ ERŽEBET
+MARKOVIĆ EVICA
+MARKOVIĆ GORAN
+MARKOVIĆ GORDANA
+MARKOVIĆ IGNJAT
+MARKOVIĆ ILIJA
+MARKOVIĆ ILIJA
+MARKOVIĆ IRENA
+MARKOVIĆ IVAN
+MARKOVIĆ IVKO
+MARKOVIĆ JADRANKA
+MARKOVIĆ JADRANKA
+MARKOVIĆ JAROSLAV
+MARKOVIĆ JELENA
+MARKOVIĆ JELICA
+MARKOVIĆ JELICA
+MARKOVIĆ JELISAVKA
+MARKOVIĆ JOVAN DIPL ING
+MARKOVIĆ JOVANKA
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVAN
+MARKOVIĆ JOVO
+MARKOVIĆ JOVO
+MARKOVIĆ JULIJA
+MARKOVIĆ JULKA
+MARKOVIĆ KARLO
+MARKOVIĆ KAROLINA
+MARKOVIĆ KAROLINA
+MARKOVIĆ KATA
+MARKOVIĆ KATICA
+MARKOVIĆ KOSANA
+MARKOVIĆ KOSTA
+MARKOVIĆ KRASIMIR
+MARKOVIĆ KSENIJA
+MARKOVIĆ LEPOSAVA LEKAR
+MARKOVIĆ LJUBIŠA
+MARKOVIĆ LJUBICA
+MARKOVIĆ LJUBICA
+MARKOVIĆ LJUBICA
+MARKOVIĆ LJUBINKO
+MARKOVIĆ LJUBOMIR
+MARKOVIĆ LJUBOMIR
+MARKOVIĆ LUKA
+MARKOVIĆ-MAJTENJI ANDRIJA
+MARKOVIĆ-MAJTENJI MIHALJ
+MARKOVIĆ MARA
+MARKOVIĆ MARIJA
+MARKOVIĆ MARIJA
+MARKOVIĆ MARINA
+MARKOVIĆ MARKO
+MARKOVIĆ MARKO
+MARKOVIĆ MIHAILO
+MARKOVIĆ MIHAJLO
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILAN
+MARKOVIĆ MILA
+MARKOVIĆ MILEVA
+MARKOVIĆ MILEVA
+MARKOVIĆ MILKO
+MARKOVIĆ MILKO
+MARKOVIĆ MILOŠ
+MARKOVIĆ MILOŠ
+MARKOVIĆ MILOŠ
+MARKOVIĆ MILOŠ
+MARKOVIĆ MILOLJUB
+MARKOVIĆ MILOMIR
+MARKOVIĆ MILORAD
+MARKOVIĆ MILORAD
+MARKOVIĆ MILORAD
+MARKOVIĆ MILORAD
+MARKOVIĆ MILORAD
+MARKOVIĆ MILO
+MARKOVIĆ MILUTIN
+MARKOVIĆ MILUTIN
+MARKOVIĆ MIODRAG
+MARKOVIĆ MIODRAG
+MARKOVIĆ MIODRAG
+MARKOVIĆ MIRKO
+MARKOVIĆ MIRKO
+MARKOVIĆ MIROSLAVA
+MARKOVIĆ MIROSLAVA
+MARKOVIĆ MIROSLAV
+MARKOVIĆ MIROSLAV
+MARKOVIĆ MIROSLAV
+MARKOVIĆ MIROSLAV
+MARKOVIĆ MLADEN
+MARKOVIĆ MLADEN
+MARKOVIĆ MOMČILO
+MARKOVIĆ MOMČILO
+MARKOVIĆ MOMIR
+MARKOVIĆ NADA
+MARKOVIĆ NADA
+MARKOVIĆ NADA
+MARKOVIĆ NADA
+MARKOVIĆ NADA
+MARKOVIĆ NATAŠA
+MARKOVIĆ NATALIJA
+MARKOVIĆ NEDELJKO
+MARKOVIĆ NEGOSLAV
+MARKOVIĆ NEMANJA
+MARKOVIĆ NENAD
+MARKOVIĆ NENAD
+MARKOVIĆ NIKOLA
+MARKOVIĆ NIKOLA
+MARKOVIĆ NIKOLA
+MARKOVIĆ NIKOLA
+MARKOVIĆ OBRAD
+MARKOVIĆ OBRAD
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ OLGA
+MARKOVIĆ PAVLE
+MARKOVIĆ PEJČA
+MARKOVIĆ PETAR DIPL ING
+MARKOVIĆ PETAR VETERINAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETAR
+MARKOVIĆ PETRONIJE
+MARKOVIĆ PREDRAG
+MARKOVIĆ PRVOSLAV DR
+MARKOVIĆ RAŠA
+MARKOVIĆ RADENKO
+MARKOVIĆ RADE
+MARKOVIĆ RADINKA
+MARKOVIĆ RADIVOJ
+MARKOVIĆ RADIVOJ
+MARKOVIĆ RADMILA
+MARKOVIĆ RADMILA
+MARKOVIĆ RADOJKA
+MARKOVIĆ RADOSAV DIPL ING
+MARKOVIĆ RADOSAV
+MARKOVIĆ RADOSLAV
+MARKOVIĆ RADOVANKA
+MARKOVIĆ RADOVAN
+MARKOVIĆ RADOVAN
+MARKOVIĆ RADOVAN
+MARKOVIĆ RANKO
+MARKOVIĆ RATKO
+MARKOVIĆ RODOLJUB
+MARKOVIĆ ROZALIJA
+MARKOVIĆ RUŽICA
+MARKOVIĆ RUŽICA
+MARKOVIĆ SAŠA
+MARKOVIĆ SAVA
+MARKOVIĆ SAVA
+MARKOVIĆ SAVA
+MARKOVIĆ SINIŠA
+MARKOVIĆ SINIŠA
+MARKOVIĆ SLOBODAN
+MARKOVIĆ SLOBODAN
+MARKOVIĆ SLOBODAN
+MARKOVIĆ SMILJA
+MARKOVIĆ SRĐAN
+MARKOVIĆ STANA
+MARKOVIĆ STANIŠA
+MARKOVIĆ STANIMIR
+MARKOVIĆ STANISLAV
+MARKOVIĆ STEFANIJA
+MARKOVIĆ STEVAN
+MARKOVIĆ STEVAN
+MARKOVIĆ STEVAN
+MARKOVIĆ STEVAN
+MARKOVIĆ STOJAN
+MARKOVIĆ STOJAN
+MARKOVIĆ STOJAN
+MARKOVIĆ STOJA
+MARKOVIĆ SVETISLAV
+MARKOVIĆ SVETLANA
+MARKOVIĆ SVETOZAR
+MARKOVIĆ SVETOZAR
+MARKOVIĆ TANASIJE
+MARKOVIĆ TATJANA
+MARKOVIĆ TODOR
+MARKOVIĆ TOMISLAV
+MARKOVIĆ UGLJEŠA
+MARKOVIĆ VASA
+MARKOVIĆ VASILIJE DR
+MARKOVIĆ VELIMIR
+MARKOVIĆ VELJKO
+MARKOVIĆ VELJKO
+MARKOVIĆ VERA
+MARKOVIĆ VERA
+MARKOVIĆ VERA
+MARKOVIĆ VERA
+MARKOVIĆ VERA
+MARKOVIĆ VIĆA
+MARKOVIĆ VIDOJE
+MARKOVIĆ VIDOSAVA
+MARKOVIĆ VID
+MARKOVIĆ VINKO
+MARKOVIĆ VITKO
+MARKOVIĆ VITOMIR
+MARKOVIĆ VLADAN
+MARKOVIĆ VLADIMIR
+MARKOVIĆ VLADIMIR
+MARKOVIĆ VLADIMIR
+MARKOVIĆ VLADOJE
+MARKOVIĆ VOJIN
+MARKOVIĆ VOJIN
+MARKOVIĆ VOJISLAV
+MARKOVIĆ ZAGORKA
+MARKOVIĆ ZAGORKA
+MARKOVIĆ ZLATA
+MARKOVIĆ ZLATIJA
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORAN
+MARKOVIĆ ZORA
+MARKOVIĆ ZORA
+MARKOVIĆ ZORICA
+MARKOVIĆAN JON
+MARKOVINOVIĆ PETAR
+MARKOVINOVIĆ PETAR
+MARKOVLJEV DRAGAN
+MARKOVSKI CVETANA
+MARKOVSKI JOVAN
+MARKSER IVAN
+MARKSER JOVAN
+MARKUŠ ANKICA
+MARKUŠ BORISLAV
+MARKUŠ EMIL
+MARKUŠ ETELKA
+MARKUŠ JOSIP
+MARKUŠ PREDRAG
+MARKUŠ ZORAN
+MARKUŠEV DRAGICA
+MARKUŠEV JELENA
+MARLOG MIROSLAV
+MAROŠ DUŠAN
+MAROŠ MILOVAN
+MAROŠ STEVAN
+MAROŠ VELJKO
+MAROŠAN TIHOMIR
+MAROŠEV KRISTA
+MAROŠEVIĆ IVAN
+MAROŠEVIĆ MARKO
+MAROŠEVIĆ MATA
+MAROŠEVIĆ NATALIJA
+MAROŠEVIĆ VLADIMIR
+MAROĐI IVAN
+MAROĐI JOLAN
+MAROĐI JOLAN
+MAROCI MARGITA
+MAROJEVIĆ ALEKSANDAR
+MAROJEVIĆ IVANKA
+MAROJEVIĆ JOSIP
+MAROJEVIĆ RADMILO
+MAROJEVIĆ SLAVOLJUB
+MAROLD JOSIP
+MAROLI ISAK
+MARON DENEŠ
+MARON KARLO
+MAROSLAVAC MIROSLAV
+MAROT IVAN
+MAROTI MIKLOŠ
+MAROVIĆ ĐURA
+MAROVIĆ BORIS DR
+MAROVIĆ DARINKA
+MAROVIĆ MILICA
+MAROVIĆ MIRKO
+MAROVIĆ RADOMIR
+MAROVIĆ ZDENKA
+MAROVSKI NIKOLA
+MARSENIĆ DRAGANA
+MARSENIĆ LEKA
+MARSENIĆ SLAVOJKA
+MARTIĆ ŽIVOJIN
+MARTIĆ ĐURA
+MARTIĆ BRANKA
+MARTIĆ DRAGAN
+MARTIĆ KOSTA
+MARTIĆ LAZAR
+MARTIĆ LJUBOMIR
+MARTIĆ MARA
+MARTIĆ MILAN
+MARTIĆ MILENKO
+MARTIĆ MILICA
+MARTIĆ OLGA
+MARTIĆ PERO
+MARTIĆ RADMILA
+MARTIĆ RADOMIR
+MARTIĆ SLAVKO
+MARTIĆ STEVAN
+MARTIĆ VLADIMIR
+MARTIĆ VOJNA
+MARTICKI MLADEN
+MARTIN ALOJZIJE
+MARTIN ANTAL
+MARTIN ENDRE
+MARTIN ERŽEBET
+MARTIN IMRE
+MARTIN IVAN
+MARTIN JOSIF
+MARTIN JOVAN
+MARTIN LJUBINKA
+MARTIN MATILDA
+MARTIN MIROSLAVA
+MARTIN ZVONIMIR
+MARTINČEVIĆ MIHAJLO
+MARTINČIĆ DAVOR
+MARTINČIĆ DAVOR
+MARTINAŠEVIĆ HERMINA
+MARTINAŠEVIĆ OTO
+MARTINAK JOVAN
+MARTINEC ANTON
+MARTINEK ANTAL
+MARTINEK FERENC
+MARTINKO ANDRIJA
+MARTINOV ĐORĐE
+MARTINOV ANKA
+MARTINOV LAZAR
+MARTINOV MIKA
+MARTINOV MILAN DR
+MARTINOV MILICA
+MARTINOV MILOŠ
+MARTINOV MILOŠ
+MARTINOV MILOŠ
+MARTINOV SANDRA
+MARTINOV SAVA
+MARTINOV SLAVKO
+MARTINOV SLAVKO
+MARTINOVIĆ ĐORĐE
+MARTINOVIĆ ANĐELKA
+MARTINOVIĆ ANA
+MARTINOVIĆ ANITA
+MARTINOVIĆ BRANKA
+MARTINOVIĆ DESANKA
+MARTINOVIĆ DUŠAN
+MARTINOVIĆ ELIZABETA
+MARTINOVIĆ FILIP
+MARTINOVIĆ FINKA
+MARTINOVIĆ IVO
+MARTINOVIĆ JELENA
+MARTINOVIĆ JOVAN VETERINAR
+MARTINOVIĆ MARIJANA
+MARTINOVIĆ MARIJA
+MARTINOVIĆ MILE
+MARTINOVIĆ MILICA
+MARTINOVIĆ MILKA
+MARTINOVIĆ MILKA
+MARTINOVIĆ NADA
+MARTINOVIĆ NENAD
+MARTINOVIĆ OLGA
+MARTINOVIĆ PERSIDA
+MARTINOVIĆ RISTA
+MARTINOVIĆ SLAVKO
+MARTINOVIĆ STANIŠA
+MARTINOVIĆ STANKA
+MARTINOVIĆ STEVAN
+MARTINOVIĆ SVETOZAR
+MARTINOVIĆ UROŠ
+MARTINOVIĆ VELIMIR
+MARTINOVIĆ VELJKO
+MARTINOVIĆ ZARIJE
+MARTINOVSKI ROMAN
+MARTON ŠANDOR
+MARTON ŽUŽANA
+MARTON ANDRAŠ
+MARTON FERENC
+MARTON IŠTVAN
+MARTON ILEŠ
+MARTON JOŽEF
+MARTON JOŽEF
+MARTON JOLAN
+MARTON LAJOŠ
+MARTON MAĆAŠ
+MARTON MARIJA
+MARTON ROZA
+MARUŠČUK MIROSLAV
+MARUŠEVIĆ IVAN
+MARUŠIĆ DANICA
+MARUŠIĆ FRANJA
+MARUŠIĆ GORAN
+MARUŠIĆ JULIJANA
+MARUŠIĆ LJUBO
+MARUŠIĆ MIORICA
+MARUŠIĆ NEBOJŠA
+MARUŠIĆ OLGA
+MARUŠIĆ STOJAN
+MARUŠIĆ VLADIMIR
+MARUNIĆ BOSILJKA
+MARUNKIĆ MILINA
+MARUNOVIĆ BLAGOTA
+MASLAĆ ANTE
+MASLAĆ MILENKO
+MASLAĆ RAJKO
+MASLAĆ VINKO
+MASLOVARIĆ BOŽIDAR DR
+MASNEC ANKA
+MASNIKOSA FEMKA
+MASNIKOSA FEMKA
+MASNOV ROZALIJA
+MASTIKOSA DRAGICA
+MASTIKOSA NIKO
+MASTILOVIĆ DUŠAN
+MASTILOVIĆ LJUBICA
+MASTILOVIĆ MIRA
+MASTILOVIĆ MIRKO
+MASTILOVIĆ MOMČILO
+MASTILOVIĆ PLEMA
+MASTILOVIĆ RANKO
+MATAJČIĆ FRANJO
+MATAJČIĆ IVAN
+MATAK MARIJA
+MATAK MARJAN
+MATAK VESNA
+MATAKOVIĆ KATICA
+MATANOV JASMINA
+MATANOVIĆ DEZIDER
+MATANOVIĆ IRENA
+MATANOVIĆ JADRANKA
+MATANOVIĆ JELISAVETA
+MATANOVIĆ MILORAD
+MATANOVIĆ MILORAD
+MATANOVIĆ MIODRAG
+MATANOVIĆ PETAR
+MATANOVIĆ PETAR
+MATANOVIĆ SLAVICA
+MATANOVIĆ VLADA
+MATARUGA LJILJANA
+MATARUGA MILKA
+MATARUGA PAVLE
+MATARUGA ZAGORKA
+MATARUGIN ALEKSANDAR
+MATASIĆ MARIJA
+MATAVULJ MILICA
+MATE ETELKA
+MATE GIZELA
+MATE VENDEL DR
+MATEČIK MIKLOŠ
+MATEJAŠEV ALEKSANDAR
+MATEJAŠEV SVETOZAR
+MATEJAŠEV SVETOZAR
+MATEJEVIĆ JELENA
+MATEJEVIĆ STANKO
+MATEJEVIĆ VELIMIR
+MATEJEVIĆ VLADIMIR
+MATEJEVIĆ ZILDA
+MATEJIĆ ĐURA
+MATEJIĆ ALEKSANDAR
+MATEJIĆ NADEŽDA
+MATEJIĆ RATKO
+MATEJIĆ RUŽICA
+MATEJIĆ SLAVOLJUB DR LEKAR
+MATEJIN ĐORĐE
+MATEJIN DRAGAN
+MATEJIN DRAGIĆ
+MATEJIN DUŠAN
+MATEJIN MILIVOJ
+MATEJIN VESELIN
+MATEKALO MILKA
+MATEKOVIĆ SMILJA
+MATEOVIĆ PUBA DR
+MATEVSKI LUIĐI
+MATIČEK LJUDEVIT
+MATIŠA IRENA
+MATIŠIĆ LJUBOMIR
+MATIĆ ŽARKO
+MATIĆ ŽIVKA
+MATIĆ ŽIVKO
+MATIĆ ŽIVKO
+MATIĆ ŽIVOJIN
+MATIĆ ŽIVORAD
+MATIĆ ĐORĐE
+MATIĆ ĐORĐE
+MATIĆ ĐORĐE
+MATIĆ ĐURĐICA
+MATIĆ ĐURA DR
+MATIĆ ACKO
+MATIĆ ACKO
+MATIĆ ALEKSANDAR
+MATIĆ ALEKSANDAR
+MATIĆ ALEKSANDAR
+MATIĆ ANKA
+MATIĆ ANKICA
+MATIĆ ARANKA
+MATIĆ ARANKA
+MATIĆ-BAUS ŽIVKO
+MATIĆ-BEKVALAC VESNA
+MATIĆ BOŽIDAR DR
+MATIĆ BOJANA
+MATIĆ BRANISLAV
+MATIĆ DAMJAN DIPL ING
+MATIĆ DESANKA
+MATIĆ DOBRICA
+MATIĆ DOBRILO
+MATIĆ DRAGAN
+MATIĆ DRAGAN
+MATIĆ DRAGAN
+MATIĆ DRAGIŠA
+MATIĆ DRAGICA
+MATIĆ DRAGINJA
+MATIĆ DRAGUTIN
+MATIĆ DUŠANKA
+MATIĆ DUŠANKA
+MATIĆ DUŠAN
+MATIĆ DUŠAN
+MATIĆ DUŠAN
+MATIĆ DUŠAN
+MATIĆ ELIZABETA
+MATIĆ EVA
+MATIĆ FINKA
+MATIĆ GORDANA
+MATIĆ ILIJA
+MATIĆ JELENA
+MATIĆ JELISAVETA
+MATIĆ JELISAVETA
+MATIĆ JELISAVKA
+MATIĆ JOVAN
+MATIĆ KATICA
+MATIĆ-KEKIĆ SNEŽANA
+MATIĆ KRISTINA
+MATIĆ LAZAR
+MATIĆ LAZAR
+MATIĆ LJILJANA
+MATIĆ LJILJANA
+MATIĆ LJILJANA
+MATIĆ LJUBICA
+MATIĆ LJUBICA
+MATIĆ LJUBO
+MATIĆ LUKA
+MATIĆ MAGDALENA
+MATIĆ MARICA
+MATIĆ MARIJA
+MATIĆ MARKO
+MATIĆ MARKO
+MATIĆ MILAN
+MATIĆ MILAN
+MATIĆ MILAN
+MATIĆ MILENKO
+MATIĆ MILENKO
+MATIĆ MILISAV
+MATIĆ MILOŠ
+MATIĆ MILOŠ
+MATIĆ MILOŠ
+MATIĆ MILOŠ
+MATIĆ MILOŠ
+MATIĆ MILORAD
+MATIĆ MILORAD
+MATIĆ MILORAD
+MATIĆ MILOVAN
+MATIĆ MIRJANA
+MATIĆ MIRJANA
+MATIĆ MIRKO
+MATIĆ NADA
+MATIĆ NADEŽDA
+MATIĆ NATAŠA
+MATIĆ NATALIJA
+MATIĆ NEGOVAN
+MATIĆ NIKOLA
+MATIĆ NOVICA
+MATIĆ PAVA
+MATIĆ PAVLE
+MATIĆ PAVLE
+MATIĆ PETAR
+MATIĆ PETAR
+MATIĆ PLANINKA
+MATIĆ PREDRAG
+MATIĆ PREDRAG
+MATIĆ RADE
+MATIĆ RADMILA
+MATIĆ RADOJE
+MATIĆ RADOMIR
+MATIĆ RADOMIR
+MATIĆ RADOMIR
+MATIĆ RADOSLAV
+MATIĆ RADOVAN
+MATIĆ RADOVAN
+MATIĆ RAJKO
+MATIĆ SAVA
+MATIĆ SIMA
+MATIĆ SLAVKO
+MATIĆ SLAVKO
+MATIĆ SLAVKO
+MATIĆ SLAVKO
+MATIĆ SLOBODAN
+MATIĆ STANKO
+MATIĆ STANKO
+MATIĆ STAZA
+MATIĆ STIPO
+MATIĆ STOJAN
+MATIĆ SVETLANA
+MATIĆ SVETOZAR
+MATIĆ SVETOZAR
+MATIĆ TOMA
+MATIĆ TOMISLAV
+MATIĆ VALERIJA
+MATIĆ VESELIN
+MATIĆ VIDA
+MATIĆ VITOMIR DIPL ING
+MATIĆ VLADA
+MATIĆ VLADIMIR
+MATIĆ VLADIMIR
+MATIĆ VLADISLAV
+MATIĆ VLASTIMIR MR
+MATIĆ VUJICA
+MATIĆ VUKICA
+MATIĆ ZAGORKA
+MATIĆ ZDRAVKA
+MATIĆ ZORA
+MATICKI MILANA DR
+MATICKI MILOŠ
+MATIJAŠ ILIJA
+MATIJAŠEV ALEKSANDAR
+MATIJAŠEV RADIVOJ
+MATIJAŠEVIĆ ALEKSANDAR
+MATIJAŠEVIĆ JELKA
+MATIJAŠEVIĆ KATICA
+MATIJAŠEVIĆ MARKO
+MATIJAŠEVIĆ MIHAILO
+MATIJAŠEVIĆ STANISLAVKA
+MATIJEVIĆ ANTICA
+MATIJEVIĆ ANTUN
+MATIJEVIĆ BOJAN
+MATIJEVIĆ BRANKO
+MATIJEVIĆ DRAGICA
+MATIJEVIĆ FRANČIŠKA
+MATIJEVIĆ ILIJA
+MATIJEVIĆ JOSIP
+MATIJEVIĆ KATALIN
+MATIJEVIĆ LAJOŠ
+MATIJEVIĆ MARIJA
+MATIJEVIĆ MILE
+MATIJEVIĆ MILOJKO
+MATIJEVIĆ PERO
+MATIJEVIĆ PETAR
+MATIJEVIĆ PETAR
+MATIJEVIĆ PETAR
+MATIJEVIĆ RADE
+MATIJEVIĆ SLAVKO
+MATIJEVIĆ VUKOSAVA
+MATIJEVIĆ ZORAN
+MATIJEVIĆ ZORA
+MATIJEVIĆ ZORA
+MATIN DOROTEA
+MATIN JOSIP
+MATIN LAJOŠ
+MATIN MATIJA
+MATIS ŠANDOR DIPL PRAVNIK
+MATIS ŠANDOR
+MATJAČIĆ VINKO
+MATKO EVA
+MATKOVIĆ ŽARKO
+MATKOVIĆ ŽARKO
+MATKOVIĆ BOŽIDAR
+MATKOVIĆ DRAGOLJUB
+MATKOVIĆ DRAGOLJUB
+MATKOVIĆ JOVAN
+MATKOVIĆ LADISLAV
+MATKOVIĆ MILENKO
+MATKOVIĆ MIROSLAVA
+MATKOVIĆ MIROSLAV
+MATKOVIĆ MIROSLAV
+MATKOVIĆ MOMIR
+MATKOVIĆ RADOVAN
+MATKOVIĆ ROZALIJA
+MATKOVIĆ RUŽICA
+MATKOVIĆ STAMENKO
+MATKOVIĆ VLASTIMIR
+MATKOVIĆ ZDENKA DR
+MATOŠEVIĆ IVAN
+MATOŠIĆ STANISLAV
+MATOŠKOVIĆ AGATA
+MATOŠKOVIĆ TEREZA
+MATOVIĆ ANĐELKO
+MATOVIĆ ANA
+MATOVIĆ BOŽANA
+MATOVIĆ BORIVOJE
+MATOVIĆ BORO
+MATOVIĆ BRANISLAV
+MATOVIĆ DANICA
+MATOVIĆ DARO
+MATOVIĆ DESA
+MATOVIĆ DRAGANA
+MATOVIĆ DRAGIŠA
+MATOVIĆ LJUBINKA
+MATOVIĆ MILAN DIPL ING
+MATOVIĆ MILAN
+MATOVIĆ MILENKO
+MATOVIĆ MILE
+MATOVIĆ-MILIĆ BATRIĆ
+MATOVIĆ MILIĆ
+MATOVIĆ MILOJKO
+MATOVIĆ NATAŠA
+MATOVIĆ PAVLE
+MATOVIĆ PETAR
+MATOVIĆ RADIVOJE
+MATOVIĆ RADOSAV
+MATOVIĆ RADOSLAV
+MATOVIĆ VITOMIR
+MATOVINA FRANJA
+MATOVINA GORAN
+MATOVINA MARKO
+MATRAK DRAGAN
+MATUŠ JAN
+MATUŠKA MARTON
+MATULJIN IGNJAC
+MATUSKI SONJA
+MATVIKOV EUGENIJE
+MAUKOVIĆ VOJISLAV
+MAUL GORDANA
+MAURIĆ FERENC
+MAURIĆ GEZA
+MAURIĆ NENAD
+MAVIĆ SRĐAN
+MAVRAK IMRE
+MAVRENSKI BOGDAN
+MAVRENSKI BORKO
+MAVRENSKI IVICA
+MAVROVIĆ BRANISLAV
+MAZALICA BRANISLAV
+MAZALICA DUŠAN
+MAZALICA GOJKO
+MAZALICA LJUBO
+MAZALICA MARIJA
+MAZALICA RAJKO
+MAZALICA SNEŽANA
+MAZALICA UROŠ
+MAZALICA VASO
+MAZALICA VELJKO
+MAZANČIK ANDRIJA
+MAZANĆIK PAJA
+MAZANJI KARLO
+MAZIĆ ŽIVKO
+MAZIĆ BRANKO
+MAZIĆ DRAGAN
+MAZIĆ LJUBOMIR
+MAZIĆ MIHAJLO
+MAZIĆ MIROSLAV
+MAZIĆ PLETIKOSA
+MAZINJANIN DUŠAN
+MAZLAMI DŽABIR
+MAZUR VUKICA
+MC-CONNELL MARTA
+MEČKAROVSKI DRAGAN
+MEČKIĆ DOBRILA
+MEČKIĆ SLAVKO
+MEŠANOVIĆ HAZIM
+MEŠTER IRENA
+MEŠTEROVIĆ LJILJANA
+MEŠTROVIĆ BOŽIDAR
+MEĆAVA BRANKO
+MEĆAVA DRAGAN
+MEĆAVA MILAN
+MEĐANIN DUŠAN
+MEĐEŠI LJUBOMIR
+MEĐEŠI VLADIMIR
+MEĐED MARICA
+MEĐEDOVIĆ ĐORĐIJE
+MEĐEDOVIĆ BRANKO
+MEĐEDOVIĆ DANILO
+MEĐEDOVIĆ DRAGOLJUB
+MEĐEDOVIĆ DRAGO
+MEĐEDOVIĆ DUBRAVKA
+MEĐEDOVIĆ MIRJANA
+MEĐEDOVIĆ NEMANJA
+MEĐEDOVIĆ RADOVAN
+MEĐERI VERONIKA
+MEĐIMOREC EDUARD
+MEĐIMOREC LJUBOMIR
+MEĐIMOREC STJEPAN
+MEĐIMOREC VIKTOR
+MEAMDŽIJA MIRA
+MEANDŽIĆ SLAVKO
+MECANOV STOJANKA
+MEDAKOV ŽIVKO
+MEDAKOV MARIJA
+MEDAKOV MILAN
+MEDAKOV MILAN
+MEDAKOV MILJANA
+MEDAKOV RADIVOJ
+MEDAKOV VLADIMIR
+MEDAKOVIĆ BOGDAN
+MEDAKOVIĆ DAMIR
+MEDAKOVIĆ DARINKA
+MEDAKOVIĆ DUŠAN
+MEDAKOVIĆ DUŠAN
+MEDAKOVIĆ ILDIKO
+MEDAKOVIĆ ILIJA
+MEDAKOVIĆ JOVAN
+MEDAKOVIĆ LJUBICA
+MEDAKOVIĆ LJUBICA
+MEDAKOVIĆ PETAR
+MEDAKOVIĆ SVETLANA
+MEDAKOVIĆ SVETLANA
+MEDAKOVIĆ VLADISLAV
+MEDAN DRAGINJA
+MEDAN MANOJLO
+MEDAN MILENKO
+MEDAN MILENKO
+MEDAN MILENKO
+MEDAN MILORAD
+MEDAN MIROSLAV
+MEDAN RADENKO
+MEDAN SLAVICA
+MEDAN SPASOJE
+MEDAN VELIMIR
+MEDAN VLADISLAV
+MEDANOVSKI BORIS
+MEDAR VUČKO
+MEDAREVIĆ DRAGAN
+MEDAREVIĆ DRAGAN
+MEDAREVIĆ STANA
+MEDENICA ĐURĐICA
+MEDENICA ĐURO
+MEDENICA BOSILJKA
+MEDENICA MILISAV
+MEDENICA RADOMIR
+MEDENICA SNEŽANA
+MEDENICA SNEŽANA
+MEDENICA VOJISLAV
+MEDENICA VOJISLAV
+MEDER ĐORĐE
+MEDER JELENA
+MEDIĆ ĐURA
+MEDIĆ ĐURA
+MEDIĆ BOŠKO
+MEDIĆ BOGDAN
+MEDIĆ BOGDAN
+MEDIĆ BORIVOJ
+MEDIĆ BRANKA
+MEDIĆ DANE
+MEDIĆ DANE
+MEDIĆ DANICA
+MEDIĆ DRAGICA
+MEDIĆ DRAGOLJUB
+MEDIĆ DRAGOSLAVA
+MEDIĆ DUŠAN
+MEDIĆ DUŠAN
+MEDIĆ GOJKO
+MEDIĆ ILIJA
+MEDIĆ ILIJA
+MEDIĆ ILIJA
+MEDIĆ LAZAR
+MEDIĆ MIĆO
+MEDIĆ MILAN
+MEDIĆ MILAN
+MEDIĆ MILE
+MEDIĆ MILICA
+MEDIĆ MILKA
+MEDIĆ MILOŠ
+MEDIĆ MILORAD
+MEDIĆ MILORAD
+MEDIĆ MIODRAG
+MEDIĆ MIRA
+MEDIĆ MIRJANA
+MEDIĆ MIRKO
+MEDIĆ MIROSLAVA
+MEDIĆ NIKOLA
+MEDIĆ NIKOLA
+MEDIĆ NIKOLA
+MEDIĆ NIKOLA
+MEDIĆ PETAR
+MEDIĆ RADE
+MEDIĆ RADOVAN
+MEDIĆ RADOVAN
+MEDIĆ SAVO
+MEDIĆ SIMO
+MEDIĆ SLAVKO
+MEDIĆ SLOBODANKA
+MEDIĆ SMILJA
+MEDIĆ STEVAN
+MEDIĆ SVETOZAR
+MEDIĆ TATJANA
+MEDIĆ ZDRAVKO
+MEDIĆ ZDRAVKO
+MEDIĆ ZORAN
+MEDIĆ ZORA
+MEDOŠ UROŠ
+MEDOJEVIĆ MILAN
+MEDOJEVIĆ MILETA
+MEDOJEVIĆ NIKOLA
+MEDOVARSKI FRANJA
+MEDOVARSKI MIŠA
+MEDOVARSKI PIROŠKA
+MEDOVARSKI PIROŠKA
+MEDOVARSKI STEVAN
+MEDOVIĆ PREDRAG DR
+MEDUNJANIN FEBRONA
+MEDUNJANIN ISIDOR
+MEDURIĆ DANILO
+MEDURIĆ DRAGOMIR
+MEDURIĆ GORAN
+MEDURIĆ IRENA
+MEDURIĆ JELENA
+MEDURIĆ KOSTA
+MEDURIĆ MILIVOJ
+MEDURIĆ PETAR
+MEDURIĆ SMILJA
+MEDURIĆ ZLATA
+MEDVEDOVIĆ DRAGA
+MEGLAJ BOSILJKA
+MEHAKOVIĆ DANICA
+MEHANDŽISKI VENKO
+MEHMETI HISEN
+MEHMETI RAFET
+MEHMETOJ HASAN
+MEJIĆ NEVENKA
+MEKENJIŠAC VESELIN
+MEKENJIŠAC ZORAN
+MEKIĆ SOFIJA
+MEKINDA MARIJAN DR
+MEKINDA MIRJANA
+MEKINIĆ ANTE
+MEKINIĆ MIRJANA
+MEKINIĆ TONKA
+MELAR ANDRAŠ
+MELAR JELENA
+MELAR LJUDEVIT
+MELEG JANKO
+MELEG JOVAN
+MELEG JOVAN
+MELEG MIŠA
+MELEG VLADIMIR
+MELERT VENDEL
+MELINK DUŠANKA
+MELINK JOHAN
+MELJA JULIJANA
+MELJKUTI FERENC
+MELJKUTI JOŽEF
+MELJKUTI KARLO
+MELJKUTI ORBAN
+MELJNIK ILIJA
+MELJNIKOV DESANKA
+MELKUS BOŽA
+MELKUS BORIVOJ
+MELKUS KATICA
+MELKUS MIRJANA
+MELKUS VOJISLAV
+MELO ALEKSANDAR
+MELOVIĆ DEJAN
+MELOVIĆ MILOVAN
+MELVAN ERŽEBET
+MELVAN PETAR
+MELVAN ZORAN
+MELVINGER ALOJZIJA
+MEMAROVIĆ RADOVAN
+MEMEDOVIĆ BORISLAV
+MEMEDOVIĆ BOSILJKA
+MEMEDOVSKI UZEIR
+MEMIŠEVIĆ IBRAHIM
+MEMIŠEVIĆ ISMAIL
+MEMIŠEVIĆ MARJAN
+MEMIŠEVIĆ MEHMED
+MEMIŠEVIĆ RAŠIDA
+MEMIŠI TEFIK
+MEMIDŽAN REDŽO
+MENĐAN ŠANDOR
+MENĐAN MARIJA
+MENĐAN PAVEL
+MENĐAN RASTISLAV
+MENDEBABA BORISLAV
+MENDEBABA PANTA
+MENDEL ELIZABETA
+MENDRAGIĆ ĐORĐE
+MENDREI HELENA
+MENEŠI BELA
+MENEŠI IRENA
+MENEŠI LASLO
+MENGL IREN
+MENGL LAJOŠ
+MENIČANIN JELA
+MENIČANIN STEVAN
+MENIĆANIN PETAR
+MENJAK IVAN
+MENZILDŽIĆ GABRIJELA
+MERČ JANOŠ
+MERČA STEVAN
+MERŠ MILAN
+MERŽA KAROLJ
+MERĐELOŠKI MILICA
+MERC EVA
+MERDIĆ MIROSLAV
+MERDOVIĆ MILKA
+MEREI KATALIN
+MEREI MARGITA
+MERGANC KATICA
+MERGEŠ JANOŠ
+MERGEL MARIJA
+MERIČAR RADOJICA
+MERKOVIĆ ALEKSANDAR
+MERKOVIĆ ALOJZ
+MERKOVIĆ ANKICA
+MERKOVIĆ JUDIT
+MERKOVIĆ LJUDEVIT
+MERKOVIĆ NIKOLA
+MERKOVIĆ PETAR
+MERKOVIĆ SILVIA
+MERKOVIĆ SVETISLAVA
+MERKOVIĆ VERA
+MERKULOV LJILJANA
+MERKVA EMA
+MERKVA JOŽEF
+MERNJAK FRANJO
+MESAK NIKOLA
+MESARIĆ GABRIJELA
+MESAROŠ ŠANDOR DR
+MESAROŠ ĐURA
+MESAROŠ ANDRAŠ
+MESAROŠ ARPAD
+MESAROŠ ATILA
+MESAROŠ BALAŽ
+MESAROŠ FERENC
+MESAROŠ FRANJA
+MESAROŠ GEZA
+MESAROŠ GEZA
+MESAROŠ GORAN
+MESAROŠ IŠTVAN
+MESAROŠ IŠTVAN
+MESAROŠ ILONA
+MESAROŠ ILONA
+MESAROŠ IMRE
+MESAROŠ JELENA
+MESAROŠ JELICA
+MESAROŠ JOSIF
+MESAROŠ JOSO
+MESAROŠ KARLO
+MESAROŠ KATICA
+MESAROŠ LAJOŠ
+MESAROŠ LASLO
+MESAROŠ LEON
+MESAROŠ MIHALJ
+MESAROŠ MIKLOŠ
+MESAROŠ PAVLE
+MESAROŠ PIROŠKA
+MESAROŠ STEVAN
+MESAROŠ TIBOR
+MESAROŠ TIBOR
+MESAROŠ ZOLTAN
+MESAROŠ ZORA DIPL ING
+MESAROŠ ZORICA
+MESAROVIĆ DUŠAN
+MESAROVIĆ JOVAN
+MESAROVIĆ MARGITA
+MESAROVIĆ MILAN
+MESAROVIĆ SVETOLIK
+MESEŠAN GEZA
+MESELDŽIJA ŽIVKO
+MESELDŽIJA NADEŽDA
+MESELDŽIJA OSTOJA
+MESELDŽIJA RAJKO
+MESELDŽIJA SLAVICA
+MESELDŽIJA STANIMIR
+METELJSKI SERGIJE
+METODIJEVIĆ MILOSAV
+MEZE JULIJANA
+MEZEŠ IMRE
+MEZEI ŠANDOR
+MEZEI JOŽEF
+MEZEI LADISLAV
+MEZEI LASLO
+MEZEI SNEŽANA
+MEZEI STEVAN DR
+MEZEI STEVAN
+MIČA JOSIP
+MIČA JOVAN
+MIČIĆ-ĐERMANOV VIDA
+MIČIĆ BOŠKO
+MIČIĆ BOŠKO
+MIČIĆ MIRJANA
+MIČIĆ-MITROVIĆ MILICA
+MIČIĆ NEDELJKO
+MIČIĆ SNEŽANA
+MIČIĆ SOFIJA
+MIČIĆ ZORA
+MIČURIN JOSIP
+MIŠČEVIĆ BRANKO
+MIŠČEVIĆ BRANKO
+MIŠČEVIĆ DUŠAN
+MIŠČEVIĆ DUŠAN
+MIŠČEVIĆ ILIJA
+MIŠČEVIĆ IVANKA
+MIŠČEVIĆ MARIJA
+MIŠČEVIĆ MICA
+MIŠČEVIĆ MILADIN
+MIŠČEVIĆ MILAN
+MIŠČEVIĆ NIKOLA
+MIŠČEVIĆ OLGA
+MIŠČEVIĆ PETAR
+MIŠČEVIĆ PETAR
+MIŠČEVIĆ PETAR
+MIŠČEVIĆ VLADIMIR
+MIŠČEVIĆ ZLATKO
+MIŠAN LAZAR
+MIŠANOVIĆ DRAGOLJUB
+MIŠANOVIĆ SIMO
+MIŠELIĆ JEFTA
+MIŠIĆ ČEDOMIR
+MIŠIĆ ĐURA
+MIŠIĆ ALEKSANDAR
+MIŠIĆ ALEKSANDAR
+MIŠIĆ ALEKSANDAR
+MIŠIĆ ANĐELIJA
+MIŠIĆ ANĐELKA
+MIŠIĆ ANA
+MIŠIĆ BOGDAN
+MIŠIĆ BUDIMIR
+MIŠIĆ DRAGICA
+MIŠIĆ DRAGICA
+MIŠIĆ ETJEN
+MIŠIĆ GORAN
+MIŠIĆ IVAN
+MIŠIĆ IVAN
+MIŠIĆ JAGODA
+MIŠIĆ JAKOV
+MIŠIĆ JASMINA
+MIŠIĆ JOSIP
+MIŠIĆ JOVAN
+MIŠIĆ LAZAR
+MIŠIĆ LAZAR
+MIŠIĆ LINKA
+MIŠIĆ LJILJANA
+MIŠIĆ LJUBO
+MIŠIĆ MARIJA
+MIŠIĆ MARKO
+MIŠIĆ MILAN
+MIŠIĆ MILAN
+MIŠIĆ MILAN
+MIŠIĆ MILAN
+MIŠIĆ MILAN
+MIŠIĆ MILOSAVKA
+MIŠIĆ MILOVAN
+MIŠIĆ MIODRAG
+MIŠIĆ MIOMIR
+MIŠIĆ MIRJANA
+MIŠIĆ MIROSLAV
+MIŠIĆ MIROSLAV
+MIŠIĆ NADA
+MIŠIĆ NENAD
+MIŠIĆ NESTOR
+MIŠIĆ NIKOLA
+MIŠIĆ PETAR
+MIŠIĆ PREDRAG
+MIŠIĆ RADE
+MIŠIĆ RADIVOJE
+MIŠIĆ RADIVOJE
+MIŠIĆ RADOJKA
+MIŠIĆ RANKO
+MIŠIĆ SAVA
+MIŠIĆ SLAVKO
+MIŠIĆ SLOBODAN
+MIŠIĆ SLOBODAN
+MIŠIĆ SLOBODAN
+MIŠIĆ SOFIJA
+MIŠIĆ STIPO
+MIŠIĆ STJEPAN
+MIŠIĆ SVETOZAR
+MIŠIĆ SVETOZAR
+MIŠIĆ TODOR DR
+MIŠIĆ TUGOMIR
+MIŠIĆ VASA
+MIŠIĆ VIDOSAVA
+MIŠIĆ VLADICA
+MIŠIĆ VOJIN
+MIŠIĆ ZDRAVKO
+MIŠIĆ ZORAN
+MIŠIĆ ZORA
+MIŠIĆ ZORICA
+MIŠIĆ ZVONIMIR
+MIŠINSKI JELENA
+MIŠKAR JOVAN
+MIŠKELJIN BOŠKO
+MIŠKIĆ ŠIMUN
+MIŠKIĆ DUŠAN
+MIŠKIĆ IVAN
+MIŠKIĆ MILAN
+MIŠKIĆ RAJKO
+MIŠKIĆ RANKO
+MIŠKIĆ SVETISLAVKA
+MIŠKIĆ VITOMIR
+MIŠKIĆEVIĆ BORIVOJ
+MIŠKLJIN KATICA
+MIŠKOV ĐURĐINKA
+MIŠKOV ALEKSANDAR
+MIŠKOV ANGELINA
+MIŠKOV ANKA
+MIŠKOV ANKICA
+MIŠKOV AVRAM
+MIŠKOV BILJANA
+MIŠKOV BOJKA
+MIŠKOV BRANIMIR
+MIŠKOV BRANKO
+MIŠKOV IVICA
+MIŠKOV JOVAN
+MIŠKOV KATARINA
+MIŠKOV KATARINA
+MIŠKOV LJUBICA
+MIŠKOV LJUBICA
+MIŠKOV MAKSA
+MIŠKOV MARICA
+MIŠKOV MILOŠ
+MIŠKOV MILOVAN
+MIŠKOV MIROSLAV
+MIŠKOV NADA
+MIŠKOV NEVENKA
+MIŠKOV NIKOLA
+MIŠKOV NOVA
+MIŠKOV RADIVOJ
+MIŠKOV SAVA DIPL ING
+MIŠKOV SAVA
+MIŠKOV STANKA
+MIŠKOV STEVAN
+MIŠKOV VESNA
+MIŠKOV VESNA
+MIŠKOV ZAGORKA
+MIŠKOV ZLATA
+MIŠKOVIĆ ŽIVKO
+MIŠKOVIĆ ĐORĐE
+MIŠKOVIĆ ĐORĐE
+MIŠKOVIĆ ĐORĐE
+MIŠKOVIĆ ALEKSANDRA
+MIŠKOVIĆ ANA
+MIŠKOVIĆ ANA
+MIŠKOVIĆ ARSA
+MIŠKOVIĆ BLAŽO
+MIŠKOVIĆ BOŽIDAR
+MIŠKOVIĆ BOJANA
+MIŠKOVIĆ BOJAN
+MIŠKOVIĆ BORIVOJ
+MIŠKOVIĆ BRANISLAV
+MIŠKOVIĆ BRANKO
+MIŠKOVIĆ CVETKO
+MIŠKOVIĆ DANČIKA
+MIŠKOVIĆ DARINKA
+MIŠKOVIĆ DELINKA
+MIŠKOVIĆ DRAGAN
+MIŠKOVIĆ DRAGORAD
+MIŠKOVIĆ DUBRAVKA
+MIŠKOVIĆ ILIJA
+MIŠKOVIĆ ILIJA
+MIŠKOVIĆ ILONKA
+MIŠKOVIĆ JOCA
+MIŠKOVIĆ JOVAN
+MIŠKOVIĆ LAZAR
+MIŠKOVIĆ LJUBICA
+MIŠKOVIĆ LJUBICA
+MIŠKOVIĆ MARKO
+MIŠKOVIĆ MIHAJLO
+MIŠKOVIĆ MILKA
+MIŠKOVIĆ MILOŠ
+MIŠKOVIĆ MILOJE
+MIŠKOVIĆ MILORAD
+MIŠKOVIĆ MIODRAG
+MIŠKOVIĆ MIRJANA
+MIŠKOVIĆ MIRKO
+MIŠKOVIĆ MIRKO
+MIŠKOVIĆ MIRKO
+MIŠKOVIĆ MIROSLAVA
+MIŠKOVIĆ NENAD
+MIŠKOVIĆ NIĆIFOR
+MIŠKOVIĆ OBRAD
+MIŠKOVIĆ OLGICA
+MIŠKOVIĆ PETAR
+MIŠKOVIĆ RADE
+MIŠKOVIĆ RADIVOJ MR
+MIŠKOVIĆ RADOSLAV
+MIŠKOVIĆ RANKO
+MIŠKOVIĆ SAŠA
+MIŠKOVIĆ SAVKA
+MIŠKOVIĆ STANKA
+MIŠKOVIĆ STEVAN
+MIŠKOVIĆ STEVAN
+MIŠKOVIĆ TANJA
+MIŠKOVIĆ VIDOSAVA
+MIŠKOVIĆ VIJENCESLAV
+MIŠKOVIĆ VUKICA
+MIŠKOVIĆ VUKICA
+MIŠKOVIĆ ZRNKA
+MIŠKOVIC LJUDEVIT
+MIŠKOVIC ZUZANA
+MIŠKULIN DRAGIŠA
+MIŠKULIN NADA
+MIŠKULIN NIKOLA
+MIŠLJENOVIĆ MIODRAG
+MIŠLOV LJUBICA
+MIŠOVIĆ MIRKO
+MIŠOVSKI RISTO
+MIŠULIĆ PETAR
+MIŠULIĆ VIDAK
+MIŠULIĆ VOJISLAV
+MIŠURA IVAN
+MIĆAŠEVIĆ BOŠKO
+MIĆAŠEVIĆ SAVA
+MIĆANOVIĆ DRAGAN
+MIĆANOVIĆ DRAGIŠA
+MIĆANOVIĆ MARJAN
+MIĆEVIĆ DUŠAN
+MIĆEVIĆ SOFIJA
+MIĆIĆ ĐORĐE
+MIĆIĆ ĐURĐINA
+MIĆIĆ BOJANA
+MIĆIĆ BRANISLAV
+MIĆIĆ BRANKA
+MIĆIĆ BRANKO DIPL ING
+MIĆIĆ BRANO
+MIĆIĆ CVIJETIN
+MIĆIĆ DRAGOLJUB
+MIĆIĆ DUŠAN DIPL PRAVNIK
+MIĆIĆ DUŠAN
+MIĆIĆ DUŠAN
+MIĆIĆ ILIJA
+MIĆIĆ JOVANKA
+MIĆIĆ KONSTANTINA
+MIĆIĆ KRSTA
+MIĆIĆ LJUBOMIR
+MIĆIĆ LJUBOMIR
+MIĆIĆ MARIJA
+MIĆIĆ MIHAJLO
+MIĆIĆ MILANA
+MIĆIĆ MILENA
+MIĆIĆ MILENKO DIPL ING
+MIĆIĆ MILICA
+MIĆIĆ MILICA
+MIĆIĆ MILKA
+MIĆIĆ MILORAD
+MIĆIĆ MIROSLAV
+MIĆIĆ OLIVERA
+MIĆIĆ OZREN
+MIĆIĆ RADMILA
+MIĆIĆ RADOJICA
+MIĆIĆ RADOVAN
+MIĆIĆ RODOLJUB
+MIĆIĆ SLAVICA
+MIĆIĆ SLAVKO
+MIĆIĆ SMILJA
+MIĆIĆ STOJAN
+MIĆIĆ SUZANA
+MIĆIĆ VELIMIR
+MIĆIĆ VLADIMIR
+MIĆIN ŽARKO
+MIĆIN ĐORĐE
+MIĆIN DUŠKO
+MIĆIN LAZA
+MIĆIN MILICA
+MIĆIN RADOVAN
+MIĆIN UROŠ
+MIĆKOVIĆ MILINKO
+MIĆOVIĆ ČEDOMIR
+MIĆOVIĆ BORISLAV
+MIĆOVIĆ BOSILJKA
+MIĆOVIĆ JANKO
+MIĆOVIĆ KOSTADIN DR
+MIĆOVIĆ MILAN
+MIĆOVIĆ MIRJANA
+MIĆOVIĆ NEBOJŠA DIPL ING
+MIĆOVIĆ PREDRAG DIPL ING
+MIĆOVIĆ STOJANKA
+MIĆOVIĆ VELIMIR
+MIĆUNOVIĆ DRAGUTIN
+MIĆUNOVIĆ MARICA
+MIĆUNOVIĆ STANKA
+MIĆUNOVIĆ VLADO
+MIĆUNOVIĆ VOJISLAVKA
+MIAVEC MAĆAŠ
+MICAI MARIJA
+MICIĆ DRAGAN
+MICIĆ DRAGOLJUB
+MICIĆ DRAGOLJUB
+MICIĆ DUŠAN
+MICIĆ KRSTA DR
+MICIĆ MIRKO
+MICKOV BLAGOJ
+MICKOV ELENA
+MIDI NENAD
+MIDIĆ ĐORĐE
+MIDIĆ BORIVOJ
+MIDIĆ-DUNĐERSKI MILENA
+MIDIĆ JELENA
+MIDIĆ JOVAN
+MIDIĆ LJUBIŠA
+MIDIĆ MILENKO
+MIDIĆ MILORAD
+MIDIĆ SLOBODAN
+MIDIĆ STEVAN
+MIDIĆ SVETOZAR
+MIDIĆ SVETOZAR
+MIDIĆ ZORKA
+MIGLINCI BARBARA
+MIGLINCI ETELKA
+MIGLINCI JELENA
+MIGLINCI LASLO
+MIHAILOVIĆ ČEDOMIR
+MIHAILOVIĆ ĐOKO
+MIHAILOVIĆ DRAGUTIN
+MIHAILOVIĆ GORAN
+MIHAILOVIĆ JOVAN
+MIHAILOVIĆ KOSTADIN
+MIHAILOVIĆ LJUBICA
+MIHAILOVIĆ MILAN
+MIHAILOVIĆ MILOŠ
+MIHAILOVIĆ MIODRAG
+MIHAILOVIĆ MIROSLAV
+MIHAILOVIĆ MIROSLAV
+MIHAILOVIĆ SLAVOLJUB
+MIHAILOVIĆ SVETLANA
+MIHAILOVIĆ SVETOZAR
+MIHAILOVIĆ VELIBOR
+MIHAILOVIĆ VERA DR
+MIHAILOVIĆ VOJISLAV
+MIHAILOVIĆ ZORAN
+MIHAJLJEVIĆ RATOMIR
+MIHAJLO LJAVO
+MIHAJLOV ŽIVA
+MIHAJLOV ĐORĐE
+MIHAJLOV ALEKSANDAR DR
+MIHAJLOV BOGDAN
+MIHAJLOV BRANISLAV
+MIHAJLOV DRAGANA
+MIHAJLOV DRAGAN
+MIHAJLOV DUŠAN
+MIHAJLOV IVAN
+MIHAJLOV JOVANKA
+MIHAJLOV LAZAR
+MIHAJLOV LJILJANA
+MIHAJLOV MARIJA
+MIHAJLOV MILAN
+MIHAJLOV MILOŠ
+MIHAJLOV MILORAD
+MIHAJLOV MILOVAN
+MIHAJLOV MILOVAN
+MIHAJLOV MIROSLAVA
+MIHAJLOV NIKOLA
+MIHAJLOV OLGA
+MIHAJLOV RADOJKA
+MIHAJLOV RADOSLAV
+MIHAJLOV SPASOJE
+MIHAJLOV VERA
+MIHAJLOV VESELIN
+MIHAJLOV VIDOSAV
+MIHAJLOV ZORAN
+MIHAJLOVIĆ ČEDOMIR
+MIHAJLOVIĆ ČEDO
+MIHAJLOVIĆ ŽARKO
+MIHAJLOVIĆ ŽARKO
+MIHAJLOVIĆ ŽELJKO
+MIHAJLOVIĆ ŽIVKO
+MIHAJLOVIĆ ŽIVOJIN
+MIHAJLOVIĆ ĐORĐE
+MIHAJLOVIĆ ĐORĐE
+MIHAJLOVIĆ ĐORĐE
+MIHAJLOVIĆ ĐURA
+MIHAJLOVIĆ ANĐELKO
+MIHAJLOVIĆ ANICA
+MIHAJLOVIĆ ANKA
+MIHAJLOVIĆ BOŠKO
+MIHAJLOVIĆ BOGOLJUB DR
+MIHAJLOVIĆ BOGOLJUB
+MIHAJLOVIĆ BRANISLAV
+MIHAJLOVIĆ BRANISLAV
+MIHAJLOVIĆ BRANISLAV
+MIHAJLOVIĆ BRANKA
+MIHAJLOVIĆ BRANKO
+MIHAJLOVIĆ BRANKO
+MIHAJLOVIĆ BRANKO
+MIHAJLOVIĆ BRANKO
+MIHAJLOVIĆ DANKA
+MIHAJLOVIĆ DARINKA
+MIHAJLOVIĆ DEJAN
+MIHAJLOVIĆ DEJAN
+MIHAJLOVIĆ DELIJA
+MIHAJLOVIĆ DIMITRIJE
+MIHAJLOVIĆ DRAGIŠA
+MIHAJLOVIĆ DRAGOLJUB DR LEKAR
+MIHAJLOVIĆ DRAGOLJUB
+MIHAJLOVIĆ DRAGOLJUB
+MIHAJLOVIĆ DRENKA
+MIHAJLOVIĆ DUŠANKA
+MIHAJLOVIĆ DUŠAN
+MIHAJLOVIĆ DUŠAN
+MIHAJLOVIĆ DUŠAN
+MIHAJLOVIĆ DUŠKO
+MIHAJLOVIĆ ERNEST
+MIHAJLOVIĆ FRANJA
+MIHAJLOVIĆ GOJKO
+MIHAJLOVIĆ GORDANA
+MIHAJLOVIĆ GORDANA
+MIHAJLOVIĆ ILE
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ ILIJA
+MIHAJLOVIĆ IVANKA
+MIHAJLOVIĆ JASMINA DR
+MIHAJLOVIĆ JELA
+MIHAJLOVIĆ JELENKO
+MIHAJLOVIĆ JELICA
+MIHAJLOVIĆ JELICA
+MIHAJLOVIĆ JOKA
+MIHAJLOVIĆ JOVAN DIPL ING
+MIHAJLOVIĆ JOVAN
+MIHAJLOVIĆ JOVAN
+MIHAJLOVIĆ JOVAN
+MIHAJLOVIĆ JOVAN
+MIHAJLOVIĆ JULIJANA
+MIHAJLOVIĆ KATICA
+MIHAJLOVIĆ KOSTA
+MIHAJLOVIĆ KRISTINA
+MIHAJLOVIĆ KSENIJA
+MIHAJLOVIĆ LAZO
+MIHAJLOVIĆ LENKA
+MIHAJLOVIĆ LENKA
+MIHAJLOVIĆ LEPOSAVA
+MIHAJLOVIĆ LJUBIŠA
+MIHAJLOVIĆ LJUBO
+MIHAJLOVIĆ MARGITA
+MIHAJLOVIĆ MARIJA
+MIHAJLOVIĆ MARIJA
+MIHAJLOVIĆ MIĆA
+MIHAJLOVIĆ MIHAJLO
+MIHAJLOVIĆ MILADIN
+MIHAJLOVIĆ MILAN
+MIHAJLOVIĆ MILAN
+MIHAJLOVIĆ MILAN
+MIHAJLOVIĆ MILAN
+MIHAJLOVIĆ MILA
+MIHAJLOVIĆ MILENKO
+MIHAJLOVIĆ MILENKO
+MIHAJLOVIĆ MILETA
+MIHAJLOVIĆ MILE
+MIHAJLOVIĆ MILICA
+MIHAJLOVIĆ MILORAD DIPL ING
+MIHAJLOVIĆ MILORAD
+MIHAJLOVIĆ MILORAD
+MIHAJLOVIĆ MILOVAN
+MIHAJLOVIĆ MILUN
+MIHAJLOVIĆ MIRA
+MIHAJLOVIĆ MIRKO
+MIHAJLOVIĆ MIRKO
+MIHAJLOVIĆ MIRKO
+MIHAJLOVIĆ MIROLJUB DIPL ING
+MIHAJLOVIĆ MIROSLAV
+MIHAJLOVIĆ MIROSLAV
+MIHAJLOVIĆ MIROSLAV
+MIHAJLOVIĆ MOMČILO
+MIHAJLOVIĆ NADA
+MIHAJLOVIĆ NADA
+MIHAJLOVIĆ NADA
+MIHAJLOVIĆ NADIRA
+MIHAJLOVIĆ NEBOJŠA
+MIHAJLOVIĆ NEDELJKO
+MIHAJLOVIĆ NEDELJKO
+MIHAJLOVIĆ NIKOLA
+MIHAJLOVIĆ NIKOLA
+MIHAJLOVIĆ NIKOLA
+MIHAJLOVIĆ NOVAK
+MIHAJLOVIĆ OLIVERA
+MIHAJLOVIĆ OSTOJA
+MIHAJLOVIĆ PETAR
+MIHAJLOVIĆ PRVOSLAV
+MIHAJLOVIĆ RADE
+MIHAJLOVIĆ RADIVOJ
+MIHAJLOVIĆ RADMILA
+MIHAJLOVIĆ RADMILA
+MIHAJLOVIĆ RADOMIR
+MIHAJLOVIĆ RADOSLAV
+MIHAJLOVIĆ RADOSLAV
+MIHAJLOVIĆ RADOVAN
+MIHAJLOVIĆ RADOVAN
+MIHAJLOVIĆ RADOVAN
+MIHAJLOVIĆ ROZALIJA
+MIHAJLOVIĆ RUŽICA
+MIHAJLOVIĆ RUŽICA
+MIHAJLOVIĆ SANJA
+MIHAJLOVIĆ SAVA
+MIHAJLOVIĆ SAVA
+MIHAJLOVIĆ SAVA
+MIHAJLOVIĆ SAVO
+MIHAJLOVIĆ SINIŠA
+MIHAJLOVIĆ SLAVICA
+MIHAJLOVIĆ SLAVKO
+MIHAJLOVIĆ SLAVOLJUPKA
+MIHAJLOVIĆ SLOBODAN
+MIHAJLOVIĆ SLOBODAN
+MIHAJLOVIĆ SMILJANA
+MIHAJLOVIĆ SOFIJA
+MIHAJLOVIĆ SRĐA
+MIHAJLOVIĆ SRBISLAV DR LEKAR
+MIHAJLOVIĆ SRETEN
+MIHAJLOVIĆ SRETKO
+MIHAJLOVIĆ STANIŠA DIPL ING
+MIHAJLOVIĆ STANISLAVA
+MIHAJLOVIĆ STANKO
+MIHAJLOVIĆ STEVAN
+MIHAJLOVIĆ STEVAN
+MIHAJLOVIĆ STEVA
+MIHAJLOVIĆ STEVICA
+MIHAJLOVIĆ STOJAN
+MIHAJLOVIĆ STOJAN
+MIHAJLOVIĆ-SUBIĆ JOVANKA
+MIHAJLOVIĆ SVETOZAR
+MIHAJLOVIĆ SVETOZAR
+MIHAJLOVIĆ SVETOZAR
+MIHAJLOVIĆ TUGOMIR
+MIHAJLOVIĆ UROŠ
+MIHAJLOVIĆ VASA
+MIHAJLOVIĆ VERA
+MIHAJLOVIĆ VITOMIR
+MIHAJLOVIĆ VLADIMIR
+MIHAJLOVIĆ VLADIMIR
+MIHAJLOVIĆ VOJISLAV
+MIHAJLOVIĆ ZORANA
+MIHAJLOVIĆ ZORICA
+MIHAJLOVSKI LJUBINKA
+MIHAJLOVSKI MIROSLAV
+MIHAJLOVSKI VLADIMIR
+MIHALAČKI MIHAILO
+MIHALAČKI SLOBODAN
+MIHALEC ANGELINA
+MIHALEC MARIJA
+MIHALEK IVAN
+MIHALEK MARIJA
+MIHALENKO STEVAN
+MIHALIĆ PETAR
+MIHALIK-TIR ZUZANA
+MIHALJ ESTER
+MIHALJ MARIJA DR
+MIHALJ MIHAJLO DR
+MIHALJ MIROSLAV DR
+MIHALJ VLADIMIR
+MIHALJČEVIĆ ALOJZIJE
+MIHALJČIĆ DRAGAN
+MIHALJČIĆ GOJKO
+MIHALJČIĆ ILE
+MIHALJČIĆ JOVAN
+MIHALJČIĆ JOVAN
+MIHALJČIĆ LUKA
+MIHALJČIĆ MITAR
+MIHALJČIĆ SPASOJE
+MIHALJEV ŽELJKO
+MIHALJEV IVAN DR
+MIHALJEV STOJAN
+MIHALJEVIĆ ANTON
+MIHALJEVIĆ EMIL
+MIHALJEVIĆ IVAN
+MIHALJEVIĆ MILAN
+MIHALJEVIĆ RUŽICA
+MIHALJEVIĆ ZDRAVKO
+MIHALJFI MARIKA
+MIHALJI MARIJA
+MIHALJIČIĆ BRANKO
+MIHALJIČIĆ DMITAR
+MIHALJIČIĆ JOVANKA
+MIHALJIČIĆ SIMO
+MIHALJIČIĆ TODE
+MIHALJICA ANĐA
+MIHALJICA BOŽO
+MIHALJICA CVETKO
+MIHALJICA MIRA
+MIHALJKA BRANISLAV
+MIHALJOVSKI DANILO
+MIHALOVIĆ BRANKO
+MIHALOVIĆ GROZDANA
+MIHELJ FRANJO
+MIHEVC IVANKA
+MIHIĆ ČEDOMIR
+MIHIĆ BOŽIDAR
+MIHIĆ MILAN
+MIHIĆ MILAN
+MIHIĆ MILENA
+MIHIĆ RISTO
+MIHIĆ RISTO
+MIHIĆ SAVA DIPL ING
+MIHIĆ VERA
+MIHIĆ VLADIMIR
+MIHIĆ VOJISLAVKA
+MIHIĆ ZORAN
+MIHLIC PETAR
+MIHNJAK JOAKIM
+MIHNJAK KATICA
+MIHNJAK LADISLAV
+MIHNJAK MELANIJA
+MIHNJAK NADA
+MIHNJAK PETAR
+MIHOCI FRANJA
+MIHOCI ZVONIMIR
+MIHOJEVIĆ ĐORĐE
+MIHOJEVIĆ MILENA
+MIHOJEVIĆ NIKOLA
+MIHOJEVIĆ SNEŽANA
+MIHOLČIĆ STEVICA
+MIHOLJEVIĆ EMA
+MIHOLJEVIĆ MILOTKA
+MIJAČ SLAVKO
+MIJAČEVIĆ MILAN
+MIJADŽEVIĆ JOVO
+MIJAILOVIĆ ĐORĐE
+MIJAILOVIĆ MILIVOJE
+MIJAILOVIĆ PANTELIJA
+MIJAILOVIĆ RANISAV
+MIJAILOVIĆ RANKO
+MIJAILOVIĆ STANOJE
+MIJAJLOVIĆ AJNA
+MIJAJLOVIĆ VUKOSAVA
+MIJALČIĆ MILAN
+MIJALČIĆ SAVA
+MIJALČIĆ ZORA
+MIJALICA SVETOSLAV
+MIJANOVIĆ ĐORĐE
+MIJANOVIĆ ĐORĐE
+MIJANOVIĆ MILICA
+MIJANOVIĆ MILOŠ
+MIJANOVIĆ MILORAD
+MIJANOVIĆ MILORAD
+MIJANOVIĆ PAVLE
+MIJANOVIĆ RADOMIR
+MIJAT IVAN
+MIJAT MILANKA
+MIJAT ROKO
+MIJAT TOMISLAV
+MIJATOV ŽIVKA
+MIJATOV ALEKSANDAR
+MIJATOV ANĐELKA
+MIJATOV BRANISLAV
+MIJATOV DRAGIĆ
+MIJATOV DRAGICA
+MIJATOV IVAN
+MIJATOV IVAN
+MIJATOV JOSA
+MIJATOV KATICA
+MIJATOV LAZAR
+MIJATOV LJUBINKA
+MIJATOV LJUBOMIR
+MIJATOV MILADIN
+MIJATOV MILAN
+MIJATOV MILAN
+MIJATOV MILAN
+MIJATOV MILA
+MIJATOV MILENKO
+MIJATOV MILOŠ
+MIJATOV MILORAD
+MIJATOV MIODRAG
+MIJATOV MIRJANA
+MIJATOV RADIVOJ
+MIJATOV RADOVAN
+MIJATOV SAVA
+MIJATOV SAVKA
+MIJATOV SLAVKO
+MIJATOV SMILJKA
+MIJATOV STEVAN
+MIJATOV VIDOSAVA
+MIJATOV VOJIN
+MIJATOV ZLATINKA
+MIJATOVIĆ ŽIVAN
+MIJATOVIĆ ĐORĐE
+MIJATOVIĆ ĐUJA
+MIJATOVIĆ ĐURICA
+MIJATOVIĆ ĐURO
+MIJATOVIĆ ALEKSANDRA
+MIJATOVIĆ ANTONIJE
+MIJATOVIĆ BISERKA
+MIJATOVIĆ BOŠKO
+MIJATOVIĆ BOŽIDAR
+MIJATOVIĆ BOŽO
+MIJATOVIĆ BOGOMIR
+MIJATOVIĆ BRANKO
+MIJATOVIĆ DRAGAN
+MIJATOVIĆ DRAGAN
+MIJATOVIĆ DRAGIĆ
+MIJATOVIĆ DRAGI
+MIJATOVIĆ DUŠAN
+MIJATOVIĆ DUŠAN
+MIJATOVIĆ DUŠAN
+MIJATOVIĆ GOJKO
+MIJATOVIĆ ILIJA
+MIJATOVIĆ ILIJA
+MIJATOVIĆ JOVAN
+MIJATOVIĆ JOVAN
+MIJATOVIĆ KATICA
+MIJATOVIĆ KOSTA
+MIJATOVIĆ LAZAR
+MIJATOVIĆ LAZAR
+MIJATOVIĆ LELA
+MIJATOVIĆ LJILJANA
+MIJATOVIĆ LJUBENKO
+MIJATOVIĆ LJUBICA
+MIJATOVIĆ LJUBICA
+MIJATOVIĆ LJUBICA
+MIJATOVIĆ MARTA
+MIJATOVIĆ MATO
+MIJATOVIĆ MIŠA
+MIJATOVIĆ MILAN
+MIJATOVIĆ MILEVA
+MIJATOVIĆ MILIVOJE
+MIJATOVIĆ MILKO
+MIJATOVIĆ MILOŠ
+MIJATOVIĆ MILORAD
+MIJATOVIĆ MILOVAN
+MIJATOVIĆ MIODRAG
+MIJATOVIĆ MIRA
+MIJATOVIĆ MIRJANA
+MIJATOVIĆ MIRJANA
+MIJATOVIĆ NATAŠA
+MIJATOVIĆ NEVENA
+MIJATOVIĆ NIKOLA
+MIJATOVIĆ NOVO
+MIJATOVIĆ OBRAD
+MIJATOVIĆ PERA
+MIJATOVIĆ PETAR
+MIJATOVIĆ-PUŠIĆ BRANISLAVA DR
+MIJATOVIĆ RADIČ
+MIJATOVIĆ RADOSLAV
+MIJATOVIĆ SIMO
+MIJATOVIĆ SNEŽANA
+MIJATOVIĆ STANA
+MIJATOVIĆ TOŠA
+MIJATOVIĆ TOMISLAV
+MIJATOVIĆ VERA
+MIJATOVIĆ VERA
+MIJATOVIĆ VID
+MIJATOVIĆ VLADAN
+MIJATOVIĆ VOJIN ADVOKAT
+MIJATOVIĆ ZDRAVKO DIPL ING
+MIJATOVIĆ ZORAN
+MIJATOVIĆ ZORA
+MIJATOVIĆ ZORICA
+MIJATOVIĆ ZVONIMIR
+MIJAVEC ĐORĐE
+MIJAVEC JOVAN
+MIJAVEC LUDVIG
+MIJAVEC MIHAJLO
+MIJAVEC PAJA
+MIJAVEC ZORA
+MIJIĆ ŽELJKO
+MIJIĆ ŽELJKO
+MIJIĆ ĐORĐE
+MIJIĆ ALEKSANDAR
+MIJIĆ ANTE
+MIJIĆ BRANKO
+MIJIĆ DESANKA
+MIJIĆ DRAGAN
+MIJIĆ DUŠAN
+MIJIĆ ILIJA
+MIJIĆ JANJA
+MIJIĆ MIHAJLO
+MIJIĆ MILAN
+MIJIĆ MILOŠ
+MIJIĆ MIODRAG
+MIJIĆ NIKOLA
+MIJIĆ PERA
+MIJIĆ PETAR
+MIJIĆ PETAR
+MIJIĆ RADOVAN
+MIJIĆ RADOVAN
+MIJIĆ SAVA
+MIJIĆ SVETISLAV
+MIJIĆ TINKA
+MIJIĆ VELJKO
+MIJIĆ VESNA
+MIJIĆ VLADIMIR
+MIJIN BORISLAV
+MIJIN BRANISLAV
+MIJIN JOVA
+MIJIN LAZAR
+MIJIN LAZAR
+MIJIN MILAN
+MIJIN MILEVA
+MIJIN MILICA
+MIJIN MILOŠ
+MIJIN PETAR
+MIJIN PETAR
+MIJIN RADA
+MIJIN SAVA
+MIJIN SIMA
+MIJIN STEVAN
+MIJIN SVETOZAR
+MIJOKOV DRAGAN
+MIJOLIĆ SLOBODAN
+MIJOLJEVIĆ MILENKO
+MIJOVIĆ ŽARKO
+MIJOVIĆ DRAGICA
+MIJOVIĆ GAVRILO
+MIJOVIĆ RADOJKA
+MIJOVIĆ VERA
+MIJUČIĆ STEVAN
+MIJUČIĆ VERA
+MIJUČIN MILKA
+MIJUŠKOVIĆ DRAGICA
+MIJUŠKOVIĆ JOVAN
+MIJUŠKOVIĆ MILIVOJE
+MIJUŠKOVIĆ OBREN
+MIJUŠKOVIĆ RADE
+MIJUŠKOVIĆ RADMILA
+MIJUŠKOVIĆ TINKA
+MIKŠA MILAN
+MIKŠIĆ ČEDOMIR
+MIKŠIĆ OTON
+MIKŠIĆ SLOBODAN
+MIKAŠINOVIĆ BILJANA
+MIKAŠINOVIĆ SAVA
+MIKAĆ MILAN
+MIKAC EVKA
+MIKALAČKI ĐORĐE
+MIKALAČKI ALEKSANDAR
+MIKALAČKI DRAGICA
+MIKALAČKI IVANKA
+MIKALAČKI IVANKA
+MIKALAČKI JASMINA
+MIKALAČKI MILUTIN
+MIKALAČKI MIRJANA
+MIKALAČKI PAVLE
+MIKALAČKI UROŠ
+MIKALAČKI ZORAN
+MIKALAČKI ZORAN
+MIKAN BOSILJKA
+MIKAN IVAN
+MIKANOVIĆ DANICA
+MIKANOVIĆ DRAGAN
+MIKANOVIĆ IRENA
+MIKANOVIĆ RANKO
+MIKAVICA STANIMIR
+MIKE ESTER
+MIKEŠ ANDRIJA
+MIKEŠ ENDRE
+MIKEŠ ETEL
+MIKEŠ MELANIJA
+MIKEŠ MIHALJ
+MIKETIĆ MIRJANA
+MIKIĆ ŽARKO
+MIKIĆ ŽARKO
+MIKIĆ ĐURA DR
+MIKIĆ DESIMIR
+MIKIĆ IVAN
+MIKIĆ JOSIP DIPL ING
+MIKIĆ LAZAR
+MIKIĆ MAKSIM
+MIKIĆ MILAN
+MIKIĆ MILENA
+MIKIĆ MILISAV
+MIKIĆ MILKA
+MIKIĆ MILKA
+MIKIĆ MILOVAN
+MIKIĆ MIROSLAV
+MIKIĆ OLGA
+MIKIĆ RADIVOJE
+MIKIĆ RADOJKA
+MIKIĆ RADOSLAVKA
+MIKIĆ RUŽA
+MIKIĆ SLOBODAN
+MIKIĆ SRBOLJUB
+MIKIĆ STOJA
+MIKIĆ TODOR
+MIKIĆ VLADAN
+MIKIĆ ZORKA
+MIKIN NADA
+MIKITIŠIN NADA
+MIKLEV STOJANKA
+MIKLIĆ ĐORĐE
+MIKLIĆ ANA
+MIKLIĆ TEREZA
+MIKLOŠ ANDRAŠ
+MIKLOŠ ANDRIJA
+MIKLOŠ ANTAL
+MIKLOŠ DIMITRIJE
+MIKLOŠ JANKO
+MIKLOŠ JELISAVETA
+MIKLOŠ JULIJAN
+MIKLOŠ NANDOR DR LEKAR
+MIKLOŠ STEVAN
+MIKLOŠ VLADIMIR
+MIKLOVIC JAN
+MIKLOVIC MILOSLAV
+MIKOLA ĐURA
+MIKOLACI LEPOSAVA
+MIKOLECKI SLAVICA
+MIKOLIĆ ALEKSANDAR
+MIKOV JOVANKA
+MIKOV METODI DR LEKAR
+MIKOV MOMIR
+MIKOVIĆ ĐORĐE
+MIKOVIĆ ĐORĐE
+MIKOVIĆ ĐURA
+MIKOVIĆ ALEKSANDAR
+MIKOVIĆ ALEKSANDAR
+MIKOVIĆ DANILO
+MIKOVIĆ DARINKA
+MIKOVIĆ DEJAN
+MIKOVIĆ DESANKA
+MIKOVIĆ JELENA
+MIKOVIĆ LAZAR
+MIKOVIĆ LJILJANA
+MIKOVIĆ MILENA
+MIKOVIĆ MIODRAG
+MIKOVIĆ MLADEN
+MIKOVIĆ MOMČILO DR PRAVNIK
+MIKOVIĆ NADA
+MIKOVIĆ NINOSLAV
+MIKOVIĆ PAVA
+MIKOVIĆ RUŽICA
+MIKOVIĆ SLAVKO
+MIKOVIĆ SNEŽANA
+MIKOVIĆ SREDOJE
+MIKOVILOVIĆ IVAN
+MIKSAT JOŽEF
+MIKUŠ ANĐELKA
+MIKUŠ MILKA
+MIKUŠ MIRJANA
+MIKULESKO DUŠAN
+MIKULESKO SAVO DIPL ING
+MIKULIĆ ŠIME
+MIKULIĆ BILJANA
+MIKULIĆ BLAŽ
+MIKULIĆ EDIT
+MIKULIĆ IVAN
+MIKULIĆ IVAN
+MIKULIĆ IVA
+MIKULIĆ JELISAVETA
+MIKULIĆ LOVRE
+MIKULIĆ MARA
+MIKULIĆ MILE
+MIKULIĆ MILIĆ
+MIKULINAC MATIJA
+MIKULINAC RENETA
+MIKULINAC SLAVICA
+MILČIĆ DRAGAN
+MILČIĆ JOVAN
+MILAČIĆ ŽELJKO
+MILAČIĆ BORIVOJE
+MILAČIĆ BRANISLAV
+MILAČIĆ BRANKO
+MILAČIĆ DUŠAN
+MILAČIĆ IVAN
+MILAČIĆ LJUBOMIR
+MILAČIĆ MAŠAN
+MILAČIĆ MILENKO
+MILAČIĆ SRBOSLAV
+MILAČIĆ SVETOZAR
+MILAČIĆ ZORICA
+MILAŠ DRAGAN
+MILAŠ DUŠANKA
+MILAŠEVIĆ ZORKA
+MILAŠINOVIĆ JOVAN
+MILAŠINOVIĆ LJUBOMIR
+MILAŠINOVIĆ MIĆUN
+MILAŠINOVIĆ MILORAD
+MILAŠINOVIĆ MIRJANA
+MILAŠINOVIĆ MIRKO
+MILAŠINOVIĆ MIRKO
+MILAŠINOVIĆ RADE
+MILAŠINOVIĆ-STANOJEVIĆ LJILJANA
+MILAŠINOVIĆ VUKOMAN
+MILAŠINOVIĆ ZLATOJA
+MILADIĆ ČEDA
+MILADIĆ DOBROMIR
+MILADIĆ PETAR
+MILADINOSKI LEVKO
+MILADINOV ŽARKO
+MILADINOV ŽIVKO
+MILADINOV BOŽIDAR
+MILADINOV DANICA
+MILADINOV DANICA
+MILADINOV DUŠANKA
+MILADINOV DUŠAN
+MILADINOV JOCA
+MILADINOV JOVAN
+MILADINOV JOVAN
+MILADINOV JOVAN
+MILADINOV JOVICA
+MILADINOV LJUBICA
+MILADINOV MARIJA
+MILADINOV MILAN
+MILADINOV MILAN
+MILADINOV MILENA
+MILADINOV MILENKO
+MILADINOV MILOVAN DIPL ING
+MILADINOV MILOVAN
+MILADINOV NADA
+MILADINOV NOVAK
+MILADINOV RADIVOJ
+MILADINOV RADOVAN
+MILADINOV SLAVICA
+MILADINOV SRBINKO
+MILADINOV SVETOZAR
+MILADINOV SVETOZAR
+MILADINOV TIHOMIR
+MILADINOV VESNA
+MILADINOV VJERA
+MILADINOVIĆ ŽIVADIN DIPL ING
+MILADINOVIĆ ŽIVOJIN
+MILADINOVIĆ ĐORĐE
+MILADINOVIĆ ALEKSANDAR
+MILADINOVIĆ ALEKSANDAR
+MILADINOVIĆ BOŽIDAR
+MILADINOVIĆ BRANIMIR
+MILADINOVIĆ BRANKO
+MILADINOVIĆ DAMIR
+MILADINOVIĆ DIVNA
+MILADINOVIĆ DRAGAN
+MILADINOVIĆ DRAGAN
+MILADINOVIĆ DRAGIŠA
+MILADINOVIĆ DRAGOMIR
+MILADINOVIĆ DRAGOSLAV
+MILADINOVIĆ DUŠAN
+MILADINOVIĆ JOVAN
+MILADINOVIĆ JOVAN
+MILADINOVIĆ LJUBICA
+MILADINOVIĆ LJUBINKA
+MILADINOVIĆ MARKO
+MILADINOVIĆ MIHAJLO
+MILADINOVIĆ MILAN
+MILADINOVIĆ MILAN
+MILADINOVIĆ MILAN
+MILADINOVIĆ MILE
+MILADINOVIĆ MILOVAN
+MILADINOVIĆ MIROSLAV
+MILADINOVIĆ NOVICA
+MILADINOVIĆ PREDRAG
+MILADINOVIĆ RADMILO
+MILADINOVIĆ RADOSLAV
+MILADINOVIĆ SLAVKO
+MILADINOVIĆ SLOBODANKA
+MILADINOVIĆ SLOBODAN
+MILADINOVIĆ SLOBODAN
+MILADINOVIĆ SVETOMIR
+MILADINOVIĆ TODE
+MILADINOVIĆ VERA
+MILAK ĐORĐE
+MILAK DARINKA
+MILAK DUŠAN
+MILAK JELENA
+MILAK JOVAN
+MILAK JOVAN
+MILAK KATICA
+MILAK LAZAR
+MILAK MILAN
+MILAK MILAN
+MILAK MILENKO
+MILAK MILOŠ
+MILAK RADOSLAV
+MILAK SAVA
+MILAKOV JELENA DR PROF
+MILAKOV LJUBICA DR
+MILAKOV MIRJANA
+MILAKOVIĆ ĐORĐE
+MILAKOVIĆ ĐURAĐ
+MILAKOVIĆ ĐURO
+MILAKOVIĆ BOSILJKA
+MILAKOVIĆ DANICA
+MILAKOVIĆ DRAGICA
+MILAKOVIĆ DUŠAN
+MILAKOVIĆ GORAN
+MILAKOVIĆ MILAN
+MILAKOVIĆ MILKA
+MILAKOVIĆ MLADEN
+MILAKOVIĆ RADMILA
+MILAKOVIĆ RATOMIR
+MILAKOVIĆ TEODOR
+MILAKOVIĆ VOJISLAV
+MILAKOVIĆ VOJO
+MILAKOVIĆ VUKICA
+MILAKOVIĆ ZORAN
+MILANKO SLAVKO
+MILANKOV ŽIVA
+MILANKOV ŽIVA
+MILANKOV ĐORĐE
+MILANKOV BRANISLAV
+MILANKOV CVETA
+MILANKOV DUŠAN
+MILANKOV IVAN
+MILANKOV JELENA
+MILANKOV JULIJANA
+MILANKOV LAZAR
+MILANKOV MARKO
+MILANKOV MILENKO
+MILANKOV MILIVOJ
+MILANKOV MILKO
+MILANKOV SLAVIMIR
+MILANKOV SOFIJA
+MILANKOV STANIMIR
+MILANKOV STEVAN
+MILANKOVIĆ ĐORĐE
+MILANKOVIĆ ĐORĐE
+MILANKOVIĆ ANA
+MILANKOVIĆ-COKOVIĆ MIRJANA
+MILANKOVIĆ DRAGOLJUB
+MILANKOVIĆ GORAN
+MILANKOVIĆ GORAN
+MILANKOVIĆ ILINKA
+MILANKOVIĆ LAZAR
+MILANKOVIĆ MILANKO
+MILANKOVIĆ MILAN
+MILANKOVIĆ MILEVA
+MILANKOVIĆ RADOSLAV
+MILANKOVIĆ SLOBODAN
+MILANKOVIĆ ZORA
+MILANOV ANICA
+MILANOV ANKA
+MILANOV BOGDAN
+MILANOV BORISLAVA
+MILANOV DOBRIVOJ
+MILANOV JELICA
+MILANOV LJUBIŠA
+MILANOV MILAN
+MILANOV MIODRAG
+MILANOV MIRJANA
+MILANOV MLADEN
+MILANOV PERSIDA
+MILANOV RADIVOJ
+MILANOV SAVKA
+MILANOV SVETOZAR
+MILANOV VUKOSAVA
+MILANOVIĆ ŽELJKO
+MILANOVIĆ ŽIVORAD
+MILANOVIĆ ŽIVOTIJE
+MILANOVIĆ ALEKSANDAR
+MILANOVIĆ BOŠKO
+MILANOVIĆ BOŽIDAR
+MILANOVIĆ BOGDAN
+MILANOVIĆ BRANKO DR
+MILANOVIĆ BRANKO
+MILANOVIĆ CVIJETIN
+MILANOVIĆ DAMJANKA
+MILANOVIĆ DESANKA
+MILANOVIĆ DONKA
+MILANOVIĆ DRAGAN
+MILANOVIĆ DRAGAN
+MILANOVIĆ DRAGAN
+MILANOVIĆ DRAGICA
+MILANOVIĆ DRAGO
+MILANOVIĆ DUŠAN
+MILANOVIĆ GORAN
+MILANOVIĆ GORAN
+MILANOVIĆ ILIJA
+MILANOVIĆ ILIJA
+MILANOVIĆ JASMINA
+MILANOVIĆ KATICA
+MILANOVIĆ LJILJANA
+MILANOVIĆ LJUBIŠA
+MILANOVIĆ LJUBICA
+MILANOVIĆ MARTA
+MILANOVIĆ MIHO
+MILANOVIĆ MILANA
+MILANOVIĆ MILENKO
+MILANOVIĆ MILENKO
+MILANOVIĆ MILIJA
+MILANOVIĆ MILISAV
+MILANOVIĆ MILISAV
+MILANOVIĆ MILOJE
+MILANOVIĆ MILORAD
+MILANOVIĆ MILORAD
+MILANOVIĆ MIODRAG
+MILANOVIĆ MLADEN
+MILANOVIĆ NADA
+MILANOVIĆ-PETRAŠEVIĆ DRAGICA
+MILANOVIĆ RADOSLAV
+MILANOVIĆ RADOVAN
+MILANOVIĆ SAŠA
+MILANOVIĆ SLAVOLJUB
+MILANOVIĆ SLOBODAN
+MILANOVIĆ SVETOMIR
+MILANOVIĆ VIKTORIJA
+MILANOVIĆ VITKO
+MILANOVIĆ VLADIMIR
+MILANOVIĆ VLADIMIR
+MILANOVIĆ VUJO
+MILANOVIĆ ZORAN
+MILANOVIĆ ZORAN
+MILANOVIĆ ZORA
+MILANOVIĆ ZORKA
+MILARIĆ IVAN
+MILATOVIĆ DANILO
+MILATOVIĆ JOVANKA
+MILATOVIĆ VLADIMIR
+MILEŠEV MILICA
+MILEŠEVIĆ OBRAD
+MILEC DOROTEA
+MILEC ILONKA
+MILEI DRAGUTIN
+MILEI JANOŠ
+MILEI TOMISLAV
+MILEKŠIĆ BOGDAN
+MILEKIĆ DUŠAN
+MILEKIĆ MILOMIR
+MILEKIĆ NIKOLA
+MILEKIĆ STEVAN
+MILEKIĆ UROŠ
+MILENKOVIĆ ŽARKO
+MILENKOVIĆ ŽIVOJIN
+MILENKOVIĆ ĐORĐE
+MILENKOVIĆ ĐURĐINA
+MILENKOVIĆ ALEKSANDAR
+MILENKOVIĆ-ANTIĆ LAZAR
+MILENKOVIĆ-BJELAJAC MILANKA
+MILENKOVIĆ BOŽIDAR
+MILENKOVIĆ BOGOMIR
+MILENKOVIĆ BORIVOJE
+MILENKOVIĆ BRANISLAV
+MILENKOVIĆ BRANISLAV
+MILENKOVIĆ BRANKO
+MILENKOVIĆ BRATISLAV
+MILENKOVIĆ BRATISLAV
+MILENKOVIĆ DARINKA
+MILENKOVIĆ DOBRILA
+MILENKOVIĆ DOBRILA
+MILENKOVIĆ DOBRIVOJE
+MILENKOVIĆ DRAGAN DR
+MILENKOVIĆ DRAGOŠ
+MILENKOVIĆ DRAGOLJUB DR
+MILENKOVIĆ DRAGOSLAV
+MILENKOVIĆ DRAGOSLAV
+MILENKOVIĆ DUŠAN
+MILENKOVIĆ DUŠAN
+MILENKOVIĆ ERŽIKA
+MILENKOVIĆ GROZDANA
+MILENKOVIĆ ILONKA
+MILENKOVIĆ IRENA
+MILENKOVIĆ JELICA
+MILENKOVIĆ JEVTO
+MILENKOVIĆ JUGOSLAV
+MILENKOVIĆ JUSTINA
+MILENKOVIĆ KOVILJKA
+MILENKOVIĆ KRSTANA
+MILENKOVIĆ LJILJANA
+MILENKOVIĆ LJILJANA
+MILENKOVIĆ MILIJAN
+MILENKOVIĆ MILISAV
+MILENKOVIĆ MILORAD
+MILENKOVIĆ MILORAD
+MILENKOVIĆ MILOSAV
+MILENKOVIĆ MILUTIN
+MILENKOVIĆ MIODRAG
+MILENKOVIĆ MIROSLAV
+MILENKOVIĆ MIROSLAV
+MILENKOVIĆ MOMČILO
+MILENKOVIĆ NEBOJŠA
+MILENKOVIĆ NENAD
+MILENKOVIĆ NIĆIFOR
+MILENKOVIĆ PAUN
+MILENKOVIĆ PREDRAG
+MILENKOVIĆ RADISAV
+MILENKOVIĆ RADOMIR
+MILENKOVIĆ RADOSLAV
+MILENKOVIĆ RADOVAN
+MILENKOVIĆ SAVA
+MILENKOVIĆ SLAVOLJUB
+MILENKOVIĆ SNEŽANA
+MILENKOVIĆ SRETEN
+MILENKOVIĆ STOJANKA
+MILENKOVIĆ SVETISLAV
+MILENKOVIĆ SVETOMIR
+MILENKOVIĆ TIHOMIR
+MILENKOVIĆ VESELINKA
+MILENKOVIĆ VITOMIR
+MILENKOVIĆ VLADAN
+MILENKOVIĆ ZORICA
+MILENKOVIĆ ZORKA
+MILENKOVSKI BLAGOJE
+MILENKOVSKI MILICA
+MILENOVIĆ ŽIVA
+MILENOVIĆ-BEKIĆ MIRJANA
+MILENOVIĆ BRANKO
+MILENOVIĆ MILORAD
+MILENOVIĆ OLGA
+MILENOVIĆ PREDRAG
+MILENTIJEVIĆ ŽIVORAD
+MILENTIJEVIĆ ZDRAVKO
+MILER BARBARA
+MILER ERŽEBET
+MILER FRANJA
+MILER IMRE DR LEKAR
+MILER IVANKA
+MILER JELENA
+MILER JELICA
+MILER KARLO
+MILER MARIJA
+MILER MIHAJLO
+MILER OTOKAR
+MILER ZLATKO
+MILESKI ATANASIJE
+MILETA NIKOLA
+MILETAŠKI BORIVOJ
+MILETAŠKI MILE
+MILETIĆ ŽIVKO
+MILETIĆ ŽIVOTA
+MILETIĆ ĐORĐE
+MILETIĆ ALEKSANDRA
+MILETIĆ ANA
+MILETIĆ BOŽA
+MILETIĆ BORIŠA
+MILETIĆ BRANISLAV
+MILETIĆ DOBROSAV
+MILETIĆ DRAGICA
+MILETIĆ DUŠAN
+MILETIĆ DUŠAN
+MILETIĆ DUŠAN
+MILETIĆ GOJKO
+MILETIĆ GVOZDEN
+MILETIĆ ILIJA
+MILETIĆ IVICA
+MILETIĆ LJUBICA
+MILETIĆ LJUBISAV
+MILETIĆ MILICA
+MILETIĆ MILIVOJ
+MILETIĆ MILOJE
+MILETIĆ MITA
+MILETIĆ NADA
+MILETIĆ NIKOLA
+MILETIĆ OLGA
+MILETIĆ PETAR
+MILETIĆ RADE
+MILETIĆ RADOŠ
+MILETIĆ RADOJKA
+MILETIĆ RADOSLAV
+MILETIĆ RANKO
+MILETIĆ SEVERINA
+MILETIĆ SLAVKO DR LEKAR
+MILETIĆ SLAVKO
+MILETIĆ SLAVOLJUB
+MILETIĆ SLOBODAN
+MILETIĆ SLOBODAN
+MILETIĆ SONJA
+MILETIĆ STEVAN
+MILETIĆ VELE
+MILETIĆ VELIBOR
+MILETIĆ VELIBOR
+MILETIĆ VELIMIR
+MILETIĆ VIDOSAVA
+MILETIĆ ZDRAVKO
+MILETICKI RADA
+MILETICKI ZORKA
+MILETIN DANA
+MILETIN MIRJANA
+MILETIN NIKOLA
+MILETIN RADIVOJ
+MILETIN SVETOZAR DIPL OEC
+MILETOVIĆ SLAVKO
+MILEUSNIĆ DRAGAN
+MILEUSNIĆ MARKO
+MILEUSNIĆ NADA
+MILEUSNIĆ NADA
+MILEUSNIĆ PETAR
+MILEV PETAR
+MILEVSKI ĐORĐE
+MILHANS STANISLAV
+MILIČEVIĆ ĐURA
+MILIČEVIĆ ARANKA
+MILIČEVIĆ BRANKO
+MILIČEVIĆ DRAGINJA
+MILIČEVIĆ DUŠAN
+MILIČEVIĆ JOVAN
+MILIČEVIĆ KATICA
+MILIČEVIĆ MILAN
+MILIČEVIĆ MILENKO
+MILIČEVIĆ MILICA
+MILIČEVIĆ MILIVOJ
+MILIČEVIĆ MILKAN
+MILIČEVIĆ MLADEN
+MILIČEVIĆ NENAD
+MILIČEVIĆ NOVICA
+MILIČEVIĆ PAVA
+MILIČEVIĆ PERO
+MILIČEVIĆ STANIMIR
+MILIČEVIĆ STEVAN
+MILIČEVIĆ TOMISLAV
+MILIČIĆ ŽARKO
+MILIČIĆ ALEKSANDAR
+MILIČIĆ ANA
+MILIČIĆ ANDRIJA
+MILIČIĆ ANKA
+MILIČIĆ BORISLAV
+MILIČIĆ BRANKO
+MILIČIĆ DRAGICA
+MILIČIĆ DRAGOMIR
+MILIČIĆ DUŠAN
+MILIČIĆ JELICA
+MILIČIĆ JOVANKA
+MILIČIĆ JOVAN
+MILIČIĆ KATICA
+MILIČIĆ LJUBINKA
+MILIČIĆ MARINKO
+MILIČIĆ MIHAJLO
+MILIČIĆ MILOŠ
+MILIČIĆ MIRJANA
+MILIČIĆ RADOVAN
+MILIČIĆ RAJKO
+MILIČIĆ STEVAN
+MILIČIĆ TILKA
+MILIČIĆ VASA
+MILIŠIĆ ĐORĐE
+MILIŠIĆ DUŠANKA
+MILIŠIĆ NEBOJŠA
+MILIĆ ČEDOMIR
+MILIĆ ČEDOMIR
+MILIĆ ŽIKA
+MILIĆ ŽIVKO
+MILIĆ ŽIVOMIR
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐORĐE
+MILIĆ ĐURICA
+MILIĆ ADILA
+MILIĆ ALEKSANDAR
+MILIĆ ALEKSANDRA
+MILIĆ ANĐELIJA
+MILIĆ BOŽIDAR DR
+MILIĆ BOŽIDAR
+MILIĆ BOŽO
+MILIĆ BOGDAN
+MILIĆ BOJANA
+MILIĆ BORIVOJE
+MILIĆ BORIVOJ
+MILIĆ BRANISLAV
+MILIĆ BRANISLAV
+MILIĆ BRANISLAV
+MILIĆ BRANKA
+MILIĆ BRANKO
+MILIĆ BRANKO
+MILIĆ BRATISLAV
+MILIĆ DANICA
+MILIĆ DANILKA
+MILIĆ DANILKA
+MILIĆ DANILO
+MILIĆ DARA
+MILIĆ DRAGAN
+MILIĆ DRAGAN
+MILIĆ DRAGAN
+MILIĆ DRAGICA
+MILIĆ DRAGICA
+MILIĆ DRAGOMIR
+MILIĆ DRAGOMIR
+MILIĆ DRAGOSLAV
+MILIĆ DUŠANKA
+MILIĆ DUŠANKA
+MILIĆ DUŠAN
+MILIĆ DUŠAN
+MILIĆ DUŠAN
+MILIĆ DUŠAN
+MILIĆ ELIZABETA
+MILIĆ EMILIJA
+MILIĆ EMILIJA
+MILIĆ EVA
+MILIĆ EVA
+MILIĆ EVICA
+MILIĆ FERENC
+MILIĆ GAVRA
+MILIĆ ILIJA
+MILIĆ-JAGODINSKI MILAN
+MILIĆ JANKO
+MILIĆ JELENA
+MILIĆ JELICA
+MILIĆ JELKA
+MILIĆ JOVAN
+MILIĆ JOVAN
+MILIĆ JOVAN
+MILIĆ JOVA
+MILIĆ JOVO
+MILIĆ JOVO
+MILIĆ JULKA
+MILIĆ KATICA
+MILIĆ KRSTO
+MILIĆ KSENIJA
+MILIĆ LAZAR
+MILIĆ LJILJANA
+MILIĆ LJUBIŠA
+MILIĆ LJUBICA
+MILIĆ LJUBOMIR DIPL ING
+MILIĆ LJUBOMIR
+MILIĆ LJUBOMIR
+MILIĆ LJUBOMIR
+MILIĆ MARA
+MILIĆ MARIJA
+MILIĆ MARIJA
+MILIĆ MARIJA
+MILIĆ MILANKA
+MILIĆ MILAN
+MILIĆ MILENKO
+MILIĆ MILICA
+MILIĆ MILICA
+MILIĆ MILOŠ
+MILIĆ MILOŠ
+MILIĆ MILORAD
+MILIĆ MILOSAV
+MILIĆ MILUTIN
+MILIĆ MIODRAG
+MILIĆ MIRJANA DIPL OEC
+MILIĆ MIRJANA
+MILIĆ MIROSLAV
+MILIĆ MITA
+MILIĆ MLADEN
+MILIĆ NADA
+MILIĆ NEDELJKO
+MILIĆ NIKOLA
+MILIĆ NIKOLA
+MILIĆ NOVAK
+MILIĆ NOVAK
+MILIĆ PANTA
+MILIĆ PAVLE
+MILIĆ PERA
+MILIĆ PETAR
+MILIĆ PETAR
+MILIĆ PROKA
+MILIĆ RADA
+MILIĆ RADE
+MILIĆ RADIVOJE
+MILIĆ RADMILA
+MILIĆ RADOJKA
+MILIĆ RADOMIR
+MILIĆ RANKO
+MILIĆ RUŽA
+MILIĆ SANDRA
+MILIĆ SAVA
+MILIĆ SLAVICA
+MILIĆ SLAVICA
+MILIĆ SLAVKA
+MILIĆ SLAVKO
+MILIĆ SLAVUJ
+MILIĆ SOFIJA
+MILIĆ STEVAN
+MILIĆ STEVAN
+MILIĆ STEVAN
+MILIĆ SVETLANA
+MILIĆ SVETOZAR
+MILIĆ SVETOZAR
+MILIĆ TEODORA
+MILIĆ TODOR
+MILIĆ TODOR
+MILIĆ TOMISLAV
+MILIĆ TOMISLAV
+MILIĆ UROŠ
+MILIĆ VASA
+MILIĆ VELINKA
+MILIĆ VERA
+MILIĆ VERA
+MILIĆ VERICA
+MILIĆ VLADICA
+MILIĆ VLADO
+MILIĆ VUKICA
+MILIĆ ZDRAVKO
+MILIĆ ZORAN
+MILIĆ ZORAN
+MILIĆ ZORAN
+MILIĆ ZORA
+MILIĆEV BORISLAV
+MILIĆEV BRANKO
+MILIĆEV SLAVKO
+MILIĆEV VASILIJE
+MILIĆEV VIKENTIJE
+MILIĆEVIĆ ŽIVORAD
+MILIĆEVIĆ ĐORĐE
+MILIĆEVIĆ ĐORĐE
+MILIĆEVIĆ ĐURAĐ
+MILIĆEVIĆ BOŽIDAR
+MILIĆEVIĆ BORIŠA
+MILIĆEVIĆ BRANKO
+MILIĆEVIĆ DRAGAN
+MILIĆEVIĆ DUŠAN
+MILIĆEVIĆ DUŠAN
+MILIĆEVIĆ GOJKO
+MILIĆEVIĆ GORDANA
+MILIĆEVIĆ KATARINA
+MILIĆEVIĆ KATICA
+MILIĆEVIĆ KSENIJA DR STOMATOLOG
+MILIĆEVIĆ LJUBOMIR
+MILIĆEVIĆ MARKO
+MILIĆEVIĆ MIHAILO
+MILIĆEVIĆ MILICA
+MILIĆEVIĆ MILORAD
+MILIĆEVIĆ MILOVAN
+MILIĆEVIĆ MIODRAG
+MILIĆEVIĆ MIODRAG
+MILIĆEVIĆ MOMČILO
+MILIĆEVIĆ MOMČILO
+MILIĆEVIĆ NATAŠA
+MILIĆEVIĆ NIKOLA
+MILIĆEVIĆ PAVLE
+MILIĆEVIĆ PETAR
+MILIĆEVIĆ RADMILA
+MILIĆEVIĆ RAJKO
+MILIĆEVIĆ SLAĐANA
+MILIĆEVIĆ SLAVICA
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SLOBODAN
+MILIĆEVIĆ SPASO
+MILIĆEVIĆ STANA
+MILIĆEVIĆ STEVAN
+MILIĆEVIĆ STEVAN
+MILIĆEVIĆ SVETISLAV
+MILIĆEVIĆ VELIŠA
+MILIĆEVIĆ VEROLJUB
+MILIĆEVIĆ VITOMIR
+MILIĆEVIĆ VLADIMIR
+MILIĆEVIĆ VUKOMIR
+MILIC KAROLJ
+MILIDRAG KRSTO
+MILIDRAGOVIĆ BORISLAV
+MILIDRAGOVIĆ LAZAR
+MILIDRAGOVIĆ MILIVOJE
+MILIDRAGOVIĆ MILORAD DIPL ING
+MILIDRAGOVIĆ MLADEN
+MILIDRAGOVIĆ NEDELJKO
+MILIDRAGOVIĆ SLOBODAN
+MILIJAŠ-PAVKOVIĆ MARIJA
+MILIJAŠEVIĆ ŽIVORAD
+MILIJAŠEVIĆ BOŠKO
+MILIJAŠEVIĆ MILAN
+MILIJANOVIĆ ĐORĐE
+MILIJANOVIĆ MILAN
+MILIJEVIĆ ĐURAĐ
+MILIKIĆ DRAGOJE
+MILIKIĆ SIMA
+MILIN ŽIVAN
+MILIN BRANISLAV
+MILIN DUŠAN
+MILIN DUŠAN
+MILIN IVAN
+MILIN JOVAN
+MILIN MILENKO
+MILIN MILICA
+MILIN MOMIR
+MILIN RADIVOJ DR
+MILIN RADIVOJ
+MILIN SNEŽANA
+MILIN STEVAN
+MILIN SVETISLAV
+MILIN VOJISLAV NOVINAR
+MILIN ZDRAVKO DIPL ING
+MILIN ZORICA
+MILINČIĆ ČASLAV
+MILINČIĆ STOJAN
+MILINIĆ RADENKO
+MILINIĆ RAJKO
+MILINKOV ŽIVAN
+MILINKOV ŽIVOJIN
+MILINKOV ANĐELKA
+MILINKOV BOŽA
+MILINKOV BRANISLAV
+MILINKOV BRANISLAV
+MILINKOV BRANKO
+MILINKOV DANILO
+MILINKOV DUŠAN
+MILINKOV IVAN
+MILINKOV JULKA
+MILINKOV LAZAR
+MILINKOV LJUBICA
+MILINKOV MILAN
+MILINKOV MILICA
+MILINKOV NENAD
+MILINKOV NENAD
+MILINKOV NIKOLA
+MILINKOV SLOBODAN
+MILINKOV VERA
+MILINKOV VESELIN
+MILINKOV VLAJKO
+MILINKOV ZORAN
+MILINKOVIĆ ĐORĐE
+MILINKOVIĆ ĐORĐE
+MILINKOVIĆ ĐORĐE
+MILINKOVIĆ ĐURO
+MILINKOVIĆ BILJANA
+MILINKOVIĆ BOJO
+MILINKOVIĆ BUDIMIR
+MILINKOVIĆ DRAGAN
+MILINKOVIĆ DRAGOSLAV
+MILINKOVIĆ DUŠAN
+MILINKOVIĆ DUŠAN
+MILINKOVIĆ DUŠAN
+MILINKOVIĆ DUŠAN
+MILINKOVIĆ ETELKA
+MILINKOVIĆ IVAN
+MILINKOVIĆ IVAN
+MILINKOVIĆ IVAN
+MILINKOVIĆ IVAN
+MILINKOVIĆ JOVAN
+MILINKOVIĆ JOVICA
+MILINKOVIĆ LJILJANA
+MILINKOVIĆ MARA
+MILINKOVIĆ MILAN
+MILINKOVIĆ MILENA
+MILINKOVIĆ MILIĆ
+MILINKOVIĆ MILORAD
+MILINKOVIĆ NADEŽDA
+MILINKOVIĆ NOVAK
+MILINKOVIĆ PANTA
+MILINKOVIĆ PETAR
+MILINKOVIĆ SLAVKO
+MILINKOVIĆ SLOBODAN
+MILINKOVIĆ SLOBODAN
+MILINKOVIĆ SLOBODAN
+MILINKOVIĆ SMILJKA
+MILINKOVIĆ SRETO
+MILINKOVIĆ VIDA
+MILINKOVIĆ VLADISLAV
+MILINKOVIĆ VOJA
+MILINOV GAVRA
+MILINOV JELENKO
+MILINOV MILORAD
+MILINOV MIRJANA
+MILINOV MIROSLAV
+MILINOV NEVENA
+MILINOV NIKOLA
+MILINOV RADIVOJ
+MILINOV SLAVKO
+MILINOV STEVAN
+MILINOV SVETISLAV
+MILINOVIĆ ŽARKO
+MILINOVIĆ BOŽIDAR
+MILINOVIĆ BOGOLJUB
+MILINOVIĆ DRAGAN
+MILINOVIĆ DRAGAN
+MILINOVIĆ KSENIJA
+MILINOVIĆ LAZO
+MILINOVIĆ LJUBOMIR
+MILINOVIĆ LJUBOMIR
+MILINOVIĆ MIHAJLO
+MILINOVIĆ MIROSLAV
+MILINOVIĆ NIKOLA
+MILINOVIĆ PETAR
+MILINOVIĆ PETAR
+MILINOVIĆ RADOMIR
+MILINOVIĆ SAVA
+MILINOVIĆ SLOBODAN
+MILINOVIĆ STEVAN
+MILINOVIĆ STEVA
+MILINOVIĆ TIMA
+MILINOVIĆ VJEKOSLAV
+MILINSKI ALEKSANDAR
+MILINSKI ARPAD
+MILINSKI ERŽEBET
+MILINSKI GABOR
+MILINSKI GORDANA
+MILINSKI JELENA
+MILINSKI JELENA
+MILINSKI LADISLAV
+MILINSKI MIHAILO
+MILINSKI NIKOLA
+MILINSKI TEODOR
+MILINSKI VIKTOR
+MILINSKI VIKTOR
+MILINSKI ZOLTAN
+MILISAVAC ŽIVAN
+MILISAVLJEVIĆ DRAGOMIR
+MILISAVLJEVIĆ DRAGOSLAV DR PROF
+MILISAVLJEVIĆ JOVAN
+MILISAVLJEVIĆ JULIJANA
+MILISAVLJEVIĆ MILADIN
+MILISAVLJEVIĆ MILAN
+MILISAVLJEVIĆ MILORAD
+MILISAVLJEVIĆ MIRČETA
+MILISAVLJEVIĆ STANIMIR
+MILISAVLJEVIĆ STANIMIR
+MILISAVLJEVIĆ VLADIMIR
+MILIVOJČEV BORISLAV
+MILIVOJČEV STEVAN
+MILIVOJČEVIĆ ALEKSANDAR
+MILIVOJŠA LAZAR
+MILIVOJŠIN JOVAN
+MILIVOJŠIN PAJA
+MILIVOJEV ANICA
+MILIVOJEV BORIVOJ
+MILIVOJEV GRADOJE
+MILIVOJEV JOVANKA
+MILIVOJEV KONSTANTIN
+MILIVOJEV LUKA
+MILIVOJEV MIHAJLO
+MILIVOJEV MILANA
+MILIVOJEV MILAN
+MILIVOJEV MILAN
+MILIVOJEV MILOŠ
+MILIVOJEV MLADEN
+MILIVOJEV NADA
+MILIVOJEV PAVLE
+MILIVOJEV SOFIJA
+MILIVOJEV SOFIJA
+MILIVOJEV SOFIJA
+MILIVOJEVIĆ ČEDOMIR
+MILIVOJEVIĆ ŽIVKA
+MILIVOJEVIĆ ĐORĐE
+MILIVOJEVIĆ ĐORĐE
+MILIVOJEVIĆ ĐORĐE
+MILIVOJEVIĆ BILJANA
+MILIVOJEVIĆ BOŠKO
+MILIVOJEVIĆ BRANKO
+MILIVOJEVIĆ BUDIMIR
+MILIVOJEVIĆ BUDISLAV
+MILIVOJEVIĆ DRAGAN
+MILIVOJEVIĆ DRAGAN
+MILIVOJEVIĆ DUŠAN
+MILIVOJEVIĆ DUŠAN
+MILIVOJEVIĆ ILIJA
+MILIVOJEVIĆ JAGODA
+MILIVOJEVIĆ JELENA
+MILIVOJEVIĆ JOVAN
+MILIVOJEVIĆ JOVAN
+MILIVOJEVIĆ MARINA
+MILIVOJEVIĆ MILAN
+MILIVOJEVIĆ MILENA
+MILIVOJEVIĆ MILOMIR
+MILIVOJEVIĆ MILORAD
+MILIVOJEVIĆ MILOVAN
+MILIVOJEVIĆ MIRJANA
+MILIVOJEVIĆ MIRKO
+MILIVOJEVIĆ MIROSLAV
+MILIVOJEVIĆ MOMČILO
+MILIVOJEVIĆ RADOJE
+MILIVOJEVIĆ RADOSLAV
+MILIVOJEVIĆ SAVO
+MILIVOJEVIĆ SLAVKO
+MILIVOJEVIĆ SLAVNA
+MILIVOJEVIĆ STOJANKA
+MILIVOJEVIĆ VLADIMIR
+MILIVOJEVIĆ VLASTIMIR
+MILIVOJEVIĆ VOJA
+MILIVOJEVIĆ VOJISLAV
+MILIVOJEVIĆ VUČO
+MILIVOJEVIĆ ZDRAVKO
+MILIVOJEVIĆ ZORA
+MILJAKOVIĆ MILAN
+MILJANIĆ ŽIVKA
+MILJANIĆ DRAGAN
+MILJANIĆ DUŠAN
+MILJANIĆ JOVAN
+MILJANIĆ MARKO
+MILJANIĆ NOVAK
+MILJANIĆ OBRAD
+MILJANIĆ RADIVOJE
+MILJANIĆ RADOSLAV
+MILJANIĆ SLOBODAN
+MILJANIĆ SLOBODAN
+MILJANIĆ STANKO
+MILJANIĆ VUKOTA
+MILJANOVIĆ ŽELJKO
+MILJANOVIĆ ADAM
+MILJANOVIĆ BRANKO
+MILJANOVIĆ DUŠAN
+MILJANOVIĆ DUŠICA
+MILJANOVIĆ MILKA
+MILJANOVIĆ PREDRAG
+MILJANOVIĆ STANKO
+MILJANOVIĆ VILMA
+MILJANSKI BOŠKO
+MILJANSKI LAZAR
+MILJANSKI ZORICA
+MILJANSKI ZORICA
+MILJATOVIĆ ĐORĐE
+MILJATOVIĆ MARICA
+MILJATOVIĆ MILAN
+MILJATOVIĆ MILUTIN
+MILJATOVIĆ VERA
+MILJEŠIĆ NENAD
+MILJENOVIĆ SLOBODAN
+MILJEVIĆ ŽIVKO
+MILJEVIĆ ADAM
+MILJEVIĆ ANKA
+MILJEVIĆ BOGDAN DIPL ING
+MILJEVIĆ DRAGOLJUB
+MILJEVIĆ DUŠAN
+MILJEVIĆ GAVRILO
+MILJEVIĆ JANJA
+MILJEVIĆ JOVAN
+MILJEVIĆ JOVO
+MILJEVIĆ LAZAR
+MILJEVIĆ LJUBICA
+MILJEVIĆ LJUBINKO
+MILJEVIĆ MARINKO
+MILJEVIĆ MILORAD
+MILJEVIĆ NATAŠA
+MILJEVIĆ NEDELJKO
+MILJEVIĆ OBRAD
+MILJEVIĆ RADOJKA
+MILJEVIĆ STEVAN
+MILJEVIĆ VERICA
+MILJEVIĆ VERICA
+MILJEVIĆ VINKO
+MILJIĆ SLAVKO
+MILJKOV ĐURICA
+MILJKOVAC BOGOSAV
+MILJKOVAC DRAGOMIR
+MILJKOVAC PETAR
+MILJKOVAC RADOVAN
+MILJKOVAC TATJANA
+MILJKOVIĆ ČEDOMIR
+MILJKOVIĆ ŽIVAN
+MILJKOVIĆ BOŠKO
+MILJKOVIĆ BORISLAV
+MILJKOVIĆ BOSILJKA
+MILJKOVIĆ DOBRILO
+MILJKOVIĆ DRAGAN
+MILJKOVIĆ DRAGIŠA
+MILJKOVIĆ DRAGUTIN
+MILJKOVIĆ DUŠAN
+MILJKOVIĆ DUŠAN
+MILJKOVIĆ LENKE
+MILJKOVIĆ LJILJANA
+MILJKOVIĆ LJUBIŠA
+MILJKOVIĆ LJUBICA
+MILJKOVIĆ LJUPČE
+MILJKOVIĆ MARA
+MILJKOVIĆ MIĆA
+MILJKOVIĆ MILICA
+MILJKOVIĆ MILICA
+MILJKOVIĆ MILOŠ
+MILJKOVIĆ MIODRAG
+MILJKOVIĆ MIRA
+MILJKOVIĆ MIRJANA
+MILJKOVIĆ MIRJANA
+MILJKOVIĆ MITA
+MILJKOVIĆ MLADEN
+MILJKOVIĆ MOJSA
+MILJKOVIĆ NIKOLA DR ING
+MILJKOVIĆ NIKOLA
+MILJKOVIĆ NIKOLA
+MILJKOVIĆ RADOSAV
+MILJKOVIĆ RADOSLAV
+MILJKOVIĆ RAHILJA
+MILJKOVIĆ ROSA
+MILJKOVIĆ ROSA
+MILJKOVIĆ SLOBODAN
+MILJKOVIĆ STAMENKO DR LEKAR
+MILJKOVIĆ STOJADIN
+MILJKOVIĆ STOJAN
+MILJKOVIĆ TOMISLAV
+MILJKOVIĆ VELIBOR
+MILJOJKOVIĆ DESIMIR
+MILJOJKOVIĆ DOBRINKA
+MILJOJKOVIĆ EMILIJA
+MILJOJKOVIĆ LJUBIŠA
+MILJOJKOVIĆ LJUBIŠA
+MILJUŠ ĐURO
+MILJUŠ ALEKSANDAR
+MILJUŠ BRANKO
+MILJUŠ BRANKO
+MILJUŠ DRAGO
+MILJUŠ DUŠANKA
+MILJUŠ DUŠAN
+MILJUŠ EVA
+MILJUŠ JOVAN DR
+MILJUŠ JOVAN
+MILJUŠ JOVAN
+MILJUŠ KATARINA
+MILJUŠ LJILJANA
+MILJUŠ LJUBICA
+MILJUŠ MARIJA
+MILJUŠ MARIJA
+MILJUŠ MILAN
+MILJUŠ MILE
+MILJUŠ MILORAD
+MILJUŠ MIODRAG
+MILJUŠ NIKOLA
+MILJUŠ PETAR
+MILKOV ĐURĐINKA
+MILKOV ĐURĐINKA
+MILKOV ACA
+MILKOV DRAGAN DR
+MILKOV DRAGINJA
+MILKOV GORDANA
+MILKOV GORDANA
+MILKOV JASMINA
+MILKOV JELENA
+MILKOV LAZAR
+MILKOV LAZAR
+MILKOV SLAVICA
+MILKOV STANOJE
+MILKOV STEVAN
+MILKOVIĆ DRAGICA
+MILKOVIĆ DUŠAN
+MILKOVIĆ DUŠAN
+MILKOVIĆ VELJKO
+MILNOVIĆ ALEKSANDAR
+MILNOVIĆ KAMENKO
+MILNOVIĆ LAZAR
+MILNOVIĆ MIHAJLO
+MILNOVIĆ STOJAN
+MILNOVIĆ VASILIJE
+MILNOVIĆ ZORA
+MILO GIZELA
+MILOŠ IVAN
+MILOŠČIN STAŠA
+MILOŠČIN STEVAN
+MILOŠČIN VLADIMIR
+MILOŠEV ŽARKO DR
+MILOŠEV ŽIKA
+MILOŠEV ŽIVKA
+MILOŠEV ŽIVOJIN
+MILOŠEV ALEKSANDAR
+MILOŠEV ANĐELIJA
+MILOŠEV BOŠKO DIPL ING
+MILOŠEV BRANISLAVA
+MILOŠEV BRANISLAV
+MILOŠEV BRANISLAV
+MILOŠEV DOBRIVOJ
+MILOŠEV DUŠAN
+MILOŠEV DUŠKO
+MILOŠEV JOVANKA
+MILOŠEV JOVAN
+MILOŠEV LJUBOMIR
+MILOŠEV MARIJA
+MILOŠEV MIĆO
+MILOŠEV MIHAJLO
+MILOŠEV MILAN
+MILOŠEV MILENKO
+MILOŠEV MILIVOJ
+MILOŠEV MILJANA
+MILOŠEV MILOŠ
+MILOŠEV MILOŠ
+MILOŠEV MILOŠ
+MILOŠEV MILORAD
+MILOŠEV MILORAD
+MILOŠEV MIODRAG
+MILOŠEV MIRA
+MILOŠEV MIRJANA
+MILOŠEV MIRKO
+MILOŠEV MIROSLAVA
+MILOŠEV MIROSLAV
+MILOŠEV MITA
+MILOŠEV MOMČILO
+MILOŠEV NEBOJŠA
+MILOŠEV NOVKA
+MILOŠEV PETAR
+MILOŠEV RADA
+MILOŠEV SAVA
+MILOŠEV SLAVKA
+MILOŠEV SOFIJA
+MILOŠEV STANA
+MILOŠEV STOJANKA
+MILOŠEV VASA DIPL ING
+MILOŠEV VASA
+MILOŠEV VELIMIR
+MILOŠEV ZLATOMIR
+MILOŠEVIĆ ŽIVOJIN
+MILOŠEVIĆ ŽIVORAD
+MILOŠEVIĆ ALEKSANDAR
+MILOŠEVIĆ ALEKSANDAR
+MILOŠEVIĆ ALEKSANDAR
+MILOŠEVIĆ ALEKSANDAR
+MILOŠEVIĆ ALEKSANDRA
+MILOŠEVIĆ ALEKSANDRA
+MILOŠEVIĆ ANASTAZIJA
+MILOŠEVIĆ ANKA
+MILOŠEVIĆ BILJANA
+MILOŠEVIĆ BISERKA
+MILOŠEVIĆ BOŠKO
+MILOŠEVIĆ BOŽIDAR
+MILOŠEVIĆ BOŽIDAR
+MILOŠEVIĆ BOŽIDAR
+MILOŠEVIĆ BOŽO
+MILOŠEVIĆ BOGDAN
+MILOŠEVIĆ BOJANA
+MILOŠEVIĆ BRANISLAVA
+MILOŠEVIĆ BRANISLAVA
+MILOŠEVIĆ BRANISLAV
+MILOŠEVIĆ BRANISLAV
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ BRANKO
+MILOŠEVIĆ CVETAN
+MILOŠEVIĆ CVETAN
+MILOŠEVIĆ DANICA
+MILOŠEVIĆ DARINKA
+MILOŠEVIĆ DEJAN
+MILOŠEVIĆ DOBRINKA
+MILOŠEVIĆ DOBROSAV
+MILOŠEVIĆ DRAGANA
+MILOŠEVIĆ DRAGAN
+MILOŠEVIĆ DRAGAN
+MILOŠEVIĆ DRAGAN
+MILOŠEVIĆ DRAGICA
+MILOŠEVIĆ DRAGICA
+MILOŠEVIĆ DRAGOLJUB
+MILOŠEVIĆ DRAGOMIR DIPL ING
+MILOŠEVIĆ DRAGUTIN
+MILOŠEVIĆ DUŠAN DR
+MILOŠEVIĆ DUŠAN
+MILOŠEVIĆ DUŠAN
+MILOŠEVIĆ EVA
+MILOŠEVIĆ EVICA
+MILOŠEVIĆ GROZDA
+MILOŠEVIĆ IGNJAT
+MILOŠEVIĆ IVANKA
+MILOŠEVIĆ JAKOV
+MILOŠEVIĆ JANKO
+MILOŠEVIĆ JELENA
+MILOŠEVIĆ JELENA
+MILOŠEVIĆ JELENA
+MILOŠEVIĆ JELENA
+MILOŠEVIĆ JERINA
+MILOŠEVIĆ JOVAN
+MILOŠEVIĆ JOVAN
+MILOŠEVIĆ JOVAN
+MILOŠEVIĆ JOVAN
+MILOŠEVIĆ JOVICA
+MILOŠEVIĆ JULKA
+MILOŠEVIĆ KLAUDIJE
+MILOŠEVIĆ KRISTINA
+MILOŠEVIĆ LATINKA
+MILOŠEVIĆ LAZAR
+MILOŠEVIĆ LAZAR
+MILOŠEVIĆ LJILJANA
+MILOŠEVIĆ LJILJANA
+MILOŠEVIĆ LJUBIŠA
+MILOŠEVIĆ LJUBOMIR
+MILOŠEVIĆ LOZANA
+MILOŠEVIĆ MARA
+MILOŠEVIĆ MARICA
+MILOŠEVIĆ MARIJA
+MILOŠEVIĆ MARIJA
+MILOŠEVIĆ MARKO
+MILOŠEVIĆ MARTA
+MILOŠEVIĆ MIHAILO
+MILOŠEVIĆ MIHALJINA
+MILOŠEVIĆ MILADIN
+MILOŠEVIĆ MILANKA
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILAN
+MILOŠEVIĆ MILENKO
+MILOŠEVIĆ MILENKO
+MILOŠEVIĆ MILENKO
+MILOŠEVIĆ MILENKO
+MILOŠEVIĆ MILICA
+MILOŠEVIĆ MILIVOJE
+MILOŠEVIĆ MILIVOJE
+MILOŠEVIĆ MILOŠ
+MILOŠEVIĆ MILOŠ
+MILOŠEVIĆ MILORAD
+MILOŠEVIĆ MILORAD
+MILOŠEVIĆ MILORAD
+MILOŠEVIĆ MILORAD
+MILOŠEVIĆ MILOSAV
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIODRAG
+MILOŠEVIĆ MIRA
+MILOŠEVIĆ MIRJANA
+MILOŠEVIĆ MIRJANA
+MILOŠEVIĆ MIRJANA
+MILOŠEVIĆ MIRJANA
+MILOŠEVIĆ MIRKO
+MILOŠEVIĆ MIROSLAV
+MILOŠEVIĆ MITAR
+MILOŠEVIĆ MOMČILO
+MILOŠEVIĆ NADA
+MILOŠEVIĆ NEVENA
+MILOŠEVIĆ NIKOLA
+MILOŠEVIĆ NIKOLA
+MILOŠEVIĆ NOVICA
+MILOŠEVIĆ OBRAD
+MILOŠEVIĆ OLGA
+MILOŠEVIĆ OLIVERA
+MILOŠEVIĆ PAVLE
+MILOŠEVIĆ PAVLE
+MILOŠEVIĆ PETAR
+MILOŠEVIĆ PETAR
+MILOŠEVIĆ PETAR
+MILOŠEVIĆ PREDRAG
+MILOŠEVIĆ RADE DR
+MILOŠEVIĆ RADE
+MILOŠEVIĆ RADE
+MILOŠEVIĆ RADE
+MILOŠEVIĆ RADE
+MILOŠEVIĆ RADOVAN
+MILOŠEVIĆ RAJKO
+MILOŠEVIĆ RAJKO
+MILOŠEVIĆ RATKO
+MILOŠEVIĆ RISTO
+MILOŠEVIĆ RUŽA
+MILOŠEVIĆ RUŽICA
+MILOŠEVIĆ SAVA
+MILOŠEVIĆ SAVA
+MILOŠEVIĆ SAVA
+MILOŠEVIĆ SAVA
+MILOŠEVIĆ SELENKA
+MILOŠEVIĆ SLAVA
+MILOŠEVIĆ SLAVKO
+MILOŠEVIĆ SLOBODAN
+MILOŠEVIĆ SLOBODAN
+MILOŠEVIĆ SLOBODAN
+MILOŠEVIĆ SNEŽANA
+MILOŠEVIĆ SNEŽANA
+MILOŠEVIĆ SPASOJE
+MILOŠEVIĆ SPASOJE
+MILOŠEVIĆ SRBOBRAN
+MILOŠEVIĆ STANIMIR
+MILOŠEVIĆ STANKO
+MILOŠEVIĆ STANKO
+MILOŠEVIĆ STEVICA
+MILOŠEVIĆ STOJA
+MILOŠEVIĆ SVETISLAV
+MILOŠEVIĆ SVETOLJUB
+MILOŠEVIĆ SVETOZAR
+MILOŠEVIĆ SVETOZAR
+MILOŠEVIĆ TADIJA
+MILOŠEVIĆ TOMISLAV
+MILOŠEVIĆ UROŠ
+MILOŠEVIĆ VASA
+MILOŠEVIĆ VASILIJE
+MILOŠEVIĆ VELJKO
+MILOŠEVIĆ VERA
+MILOŠEVIĆ VESELIN
+MILOŠEVIĆ VIDOJE
+MILOŠEVIĆ VLADA DIPL OEC
+MILOŠEVIĆ VLADIMIR
+MILOŠEVIĆ VOJISLAV
+MILOŠEVIĆ VOJISLAV
+MILOŠEVIĆ VOJKAN
+MILOŠEVIĆ VUKAŠIN DR LEKAR
+MILOŠEVIĆ VUKAŠIN
+MILOŠEVIĆ ZAHARIJE
+MILOŠEVIĆ ZDRAVKO
+MILOŠEVIĆ ZLATIMIR
+MILOŠEVIĆ ZORAN DIPL ING
+MILOŠEVIĆ ZORAN
+MILOJEVIĆ ĐORĐE
+MILOJEVIĆ ANA
+MILOJEVIĆ BRANISLAV
+MILOJEVIĆ BRANISLAV
+MILOJEVIĆ CVIJETA
+MILOJEVIĆ DIMITRIJE
+MILOJEVIĆ DRAGAN
+MILOJEVIĆ DRAGAN
+MILOJEVIĆ DUŠANKA
+MILOJEVIĆ DUŠAN
+MILOJEVIĆ DUŠAN
+MILOJEVIĆ DUŠAN
+MILOJEVIĆ GOJKO
+MILOJEVIĆ GORDANA
+MILOJEVIĆ GROZDANA
+MILOJEVIĆ JANKO
+MILOJEVIĆ JELENA
+MILOJEVIĆ JULIJANA
+MILOJEVIĆ MIHAJLO
+MILOJEVIĆ-MILANOV SVETLANA
+MILOJEVIĆ MILIVOJE
+MILOJEVIĆ MILOJE DR PROF
+MILOJEVIĆ MILORAD
+MILOJEVIĆ MIROSLAV
+MILOJEVIĆ MOMIR DR
+MILOJEVIĆ OLGICA
+MILOJEVIĆ PAVLE
+MILOJEVIĆ PREDRAG
+MILOJEVIĆ RADOVAN
+MILOJEVIĆ RANKO
+MILOJEVIĆ SLOBODAN
+MILOJEVIĆ VASA
+MILOJEVIĆ VLADA
+MILOJEVIĆ VLADIMIR
+MILOJEVIĆ VOJIN
+MILOJEVIĆ VOJISLAV
+MILOJEVIĆ ZORAN
+MILOJEVIĆ ZORAN
+MILOJEVIĆ ZVONKO
+MILOJICA MILJA
+MILOJKOVIĆ ŽIVAN
+MILOJKOVIĆ ACA
+MILOJKOVIĆ BOŽANA
+MILOJKOVIĆ BOŽIDAR
+MILOJKOVIĆ DUŠAN
+MILOJKOVIĆ DUŠAN
+MILOJKOVIĆ JOVANKA
+MILOJKOVIĆ KATARINA
+MILOJKOVIĆ KRISTA
+MILOJKOVIĆ LJUBOMIR
+MILOJKOVIĆ MILIVOJ
+MILOJKOVIĆ MILOVAN
+MILOJKOVIĆ MIROLJUB
+MILOJKOVIĆ NADEŽDA
+MILOM IMRE
+MILOM IMRE
+MILORADIĆ BRANKO
+MILORADIĆ NIKOLA
+MILORADOV BORISLAVA
+MILORADOV MILOŠ
+MILORADOV MILORAD
+MILORADOV RADOSLAVKA
+MILORADOV VIOLETA
+MILORADOVIĆ BRANISLAV
+MILORADOVIĆ DEJAN
+MILORADOVIĆ DRAGAN
+MILORADOVIĆ MILOŠ
+MILORADOVIĆ MLADEN
+MILORADOVIĆ ZLATOJE
+MILOSAVAC MIĆA
+MILOSAVIĆ BORISLAV
+MILOSAVIĆ BRANKO
+MILOSAVIĆ KRSTAN
+MILOSAVIĆ MLADEN
+MILOSAVIĆ MOMČILO
+MILOSAVIĆ PETAR
+MILOSAVIĆ RADIVOJ
+MILOSAVIĆ STOJA
+MILOSAVLJEV ŽIVAN
+MILOSAVLJEV ŽIVKA
+MILOSAVLJEV ALEKSANDAR
+MILOSAVLJEV BOŽIDAR
+MILOSAVLJEV DOBREN
+MILOSAVLJEV DRAGINJA
+MILOSAVLJEV LJILJANA
+MILOSAVLJEV MELANIJA
+MILOSAVLJEV MILENKO
+MILOSAVLJEV MILICA
+MILOSAVLJEV NOVKA
+MILOSAVLJEV VLADA
+MILOSAVLJEV VOJA
+MILOSAVLJEVIĆ ŽARKO
+MILOSAVLJEVIĆ ŽIVADIN
+MILOSAVLJEVIĆ ŽIVKO
+MILOSAVLJEVIĆ ŽIVKO
+MILOSAVLJEVIĆ ADAM DIPL PRAVNIK
+MILOSAVLJEVIĆ BOŽIDAR
+MILOSAVLJEVIĆ BORA
+MILOSAVLJEVIĆ BORIVOJE
+MILOSAVLJEVIĆ BRANISLAV
+MILOSAVLJEVIĆ BRANKO
+MILOSAVLJEVIĆ BRATISLAV
+MILOSAVLJEVIĆ DEJAN
+MILOSAVLJEVIĆ DRAGAN
+MILOSAVLJEVIĆ DRAGAN
+MILOSAVLJEVIĆ DRAGAN
+MILOSAVLJEVIĆ DRAGICA
+MILOSAVLJEVIĆ DRAGICA
+MILOSAVLJEVIĆ DRAGUTIN
+MILOSAVLJEVIĆ DUŠANKA
+MILOSAVLJEVIĆ ILIJA
+MILOSAVLJEVIĆ JELISAVETA
+MILOSAVLJEVIĆ JOVAN
+MILOSAVLJEVIĆ JOVAN
+MILOSAVLJEVIĆ JOVAN
+MILOSAVLJEVIĆ KATICA
+MILOSAVLJEVIĆ LAZAR
+MILOSAVLJEVIĆ MARIJA
+MILOSAVLJEVIĆ MIHAJLO
+MILOSAVLJEVIĆ MILAN
+MILOSAVLJEVIĆ MILAN
+MILOSAVLJEVIĆ MILE
+MILOSAVLJEVIĆ MILICA
+MILOSAVLJEVIĆ MILKA
+MILOSAVLJEVIĆ MILORAD
+MILOSAVLJEVIĆ MILORAD
+MILOSAVLJEVIĆ MILORAD
+MILOSAVLJEVIĆ MILOVAN
+MILOSAVLJEVIĆ MIODRAG DR
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIODRAG
+MILOSAVLJEVIĆ MIROSLAV
+MILOSAVLJEVIĆ NIKOLA DR
+MILOSAVLJEVIĆ NOVICA
+MILOSAVLJEVIĆ OLGA
+MILOSAVLJEVIĆ PETAR
+MILOSAVLJEVIĆ RADIVOJE
+MILOSAVLJEVIĆ RADIVOJ
+MILOSAVLJEVIĆ RADOMIR
+MILOSAVLJEVIĆ SAVO
+MILOSAVLJEVIĆ SLAVKO
+MILOSAVLJEVIĆ SLOBODAN
+MILOSAVLJEVIĆ SLOBODAN
+MILOSAVLJEVIĆ SRETA
+MILOSAVLJEVIĆ STANISLAV
+MILOSAVLJEVIĆ STANKO
+MILOSAVLJEVIĆ STEVO
+MILOSAVLJEVIĆ SVETOZAR
+MILOSAVLJEVIĆ VERA
+MILOSAVLJEVIĆ VERA
+MILOSAVLJEVIĆ VLADIMIR
+MILOSAVLJEVIĆ VLADISLAV
+MILOSAVLJEVIĆ ZORAN
+MILOSOVIĆ JOVAN
+MILOSOVIĆ MILOŠ
+MILOSOVIĆ MIRKO
+MILOVČEVIĆ MILOŠ
+MILOVAC DUŠAN
+MILOVAC GLIŠA
+MILOVAC GORAN
+MILOVAC ILE
+MILOVAC ILIJA
+MILOVAC JELA
+MILOVAC MILAN
+MILOVAC MILAN
+MILOVAC MILAN
+MILOVAC PETAR
+MILOVAC RUŽICA
+MILOVAC SIMO
+MILOVAC STANKO
+MILOVAC STEVAN
+MILOVAC STOJAN
+MILOVAN KONSTANCA
+MILOVANČEV ALEKSANDAR
+MILOVANČEV ISIDOR
+MILOVANČEV NIKOLA
+MILOVANČEV SLOBODAN DIPL ING
+MILOVANČEV SVETOZAR DR
+MILOVANKIĆ ĐORĐE
+MILOVANKIĆ MIROSLAV
+MILOVANOV ĐORĐE
+MILOVANOV ALEKSANDAR DIPL ING
+MILOVANOV ANICA
+MILOVANOV BOŽIDAR
+MILOVANOV DIMITRIJE DIPL ING
+MILOVANOV DRAGAN
+MILOVANOV GOJKO
+MILOVANOV GOJKO
+MILOVANOV GORAN
+MILOVANOV GORDANA DR LEKAR
+MILOVANOV IVAN
+MILOVANOV JULKA
+MILOVANOV MILAN
+MILOVANOV MILE
+MILOVANOV MILINKA
+MILOVANOV MILINKA
+MILOVANOV MIRJANA
+MILOVANOV SIMA
+MILOVANOV STOJANKA
+MILOVANOV TODOR
+MILOVANOV VASILIJE
+MILOVANOV ZORAN
+MILOVANOVIĆ ŽIKA
+MILOVANOVIĆ ŽIVKO
+MILOVANOVIĆ ANĐELKA
+MILOVANOVIĆ ANICA
+MILOVANOVIĆ ANICA
+MILOVANOVIĆ BOGOSAV
+MILOVANOVIĆ BRANISLAVA
+MILOVANOVIĆ BRANISLAV
+MILOVANOVIĆ BRANISLAV
+MILOVANOVIĆ DANICA
+MILOVANOVIĆ DOBRISAV
+MILOVANOVIĆ DOBRIVOJE
+MILOVANOVIĆ DRAGINJA
+MILOVANOVIĆ DRAGOLJUB
+MILOVANOVIĆ DRAGOLJUB
+MILOVANOVIĆ DRAGOMIR
+MILOVANOVIĆ DRAGOSLAV
+MILOVANOVIĆ DRAGOSLAV
+MILOVANOVIĆ DUŠAN DR LEKAR
+MILOVANOVIĆ DUŠAN
+MILOVANOVIĆ GORAN
+MILOVANOVIĆ GORDANA
+MILOVANOVIĆ ILIJA
+MILOVANOVIĆ IVANKA
+MILOVANOVIĆ IVICA
+MILOVANOVIĆ JOVAN
+MILOVANOVIĆ KATALIN
+MILOVANOVIĆ KATICA
+MILOVANOVIĆ KOSARA
+MILOVANOVIĆ KRSTOMIR
+MILOVANOVIĆ LJILJANA
+MILOVANOVIĆ LJILJANA
+MILOVANOVIĆ LJUBICA
+MILOVANOVIĆ LUKA
+MILOVANOVIĆ MILADIN
+MILOVANOVIĆ MILAN
+MILOVANOVIĆ MILENA
+MILOVANOVIĆ MILENKO
+MILOVANOVIĆ MILEVA
+MILOVANOVIĆ MILISAV
+MILOVANOVIĆ MILIVOJE
+MILOVANOVIĆ MILORAD
+MILOVANOVIĆ MILOVAN
+MILOVANOVIĆ MILOVAN
+MILOVANOVIĆ MIRJANA
+MILOVANOVIĆ MIRJANA
+MILOVANOVIĆ MOMIR DIPL ING
+MILOVANOVIĆ NADA MR
+MILOVANOVIĆ NIKOLA
+MILOVANOVIĆ OBREN
+MILOVANOVIĆ OLGA
+MILOVANOVIĆ RADAŠIN
+MILOVANOVIĆ RADENKO
+MILOVANOVIĆ RADENKO
+MILOVANOVIĆ RADENKO
+MILOVANOVIĆ RADE
+MILOVANOVIĆ RADISAV
+MILOVANOVIĆ RADISLAV
+MILOVANOVIĆ RADOSLAV
+MILOVANOVIĆ RISTA
+MILOVANOVIĆ SAVA
+MILOVANOVIĆ SLAVKA
+MILOVANOVIĆ SLAVKO
+MILOVANOVIĆ SLOBODAN
+MILOVANOVIĆ SONJA
+MILOVANOVIĆ SRBISLAV
+MILOVANOVIĆ STANICA
+MILOVANOVIĆ STEVAN DIPL ING
+MILOVANOVIĆ STEVAN
+MILOVANOVIĆ STEVAN
+MILOVANOVIĆ SVETOZAR
+MILOVANOVIĆ SVETOZAR
+MILOVANOVIĆ TERKA
+MILOVANOVIĆ VESELINKA
+MILOVANOVIĆ VESNA
+MILOVANOVIĆ VIDAN
+MILOVANOVIĆ VLADIMIR
+MILOVANOVIĆ VLADIMIR
+MILOVANOVIĆ VLADISLAV
+MILOVANOVIĆ VOJA
+MILOVANOVIĆ VOJISLAV
+MILOVANOVIĆ VOJISLAV
+MILOVANOVIĆ VOJISLAV
+MILOVANOVIĆ VOJISLAV
+MILOVANOVIĆ VUKOSAVA
+MILOVANOVIĆ ZORAN
+MILOVANOVIĆ ZORAN
+MILOVANOVIĆ ZORKA
+MILOVIĆ ČEDO
+MILOVIĆ ĐORĐE
+MILOVIĆ BOŠKO
+MILOVIĆ BOGDAN
+MILOVIĆ BORIŠA
+MILOVIĆ BORO
+MILOVIĆ BORO
+MILOVIĆ BRANKO
+MILOVIĆ DESIMIR
+MILOVIĆ DUŠAN
+MILOVIĆ GOJKO
+MILOVIĆ GOJKO
+MILOVIĆ ILIJA
+MILOVIĆ JELENA
+MILOVIĆ KRSTO
+MILOVIĆ LJUBOMIR
+MILOVIĆ MAJA
+MILOVIĆ MARIJAN
+MILOVIĆ MILAN
+MILOVIĆ MILENKO
+MILOVIĆ MILORAD
+MILOVIĆ MILORAD
+MILOVIĆ MIOMIR
+MILOVIĆ MOMČILO
+MILOVIĆ ORLE
+MILOVIĆ PETAR
+MILOVIĆ RADE
+MILOVIĆ RADOVAN
+MILOVIĆ SLOBODAN
+MILOVIĆ STANKO
+MILOVIĆ TOMISLAV
+MILOVIĆ VUKAŠIN
+MILUŠIĆ EVICA
+MILUŠIĆ PETAR DIPL ING
+MILUNOV JOVAN
+MILUNOV JULKA
+MILUNOVIĆ BRANKO
+MILUNOVIĆ DRAGOMIR
+MILUNOVIĆ MILOŠ
+MILUNOVIĆ MILOMIR
+MILUNOVIĆ MILORAD
+MILUNOVIĆ MILUN
+MILUNOVIĆ RADOMIR
+MILUNOVIĆ SPASENKO
+MILUNOVIĆ ZORICA
+MILUROVIĆ SLOBODAN
+MILUTIN ŽIVKO
+MILUTIN JASNA
+MILUTIN MIRA
+MILUTIN NEDELJKO
+MILUTIN RATKO
+MILUTIN VOJISLAV
+MILUTINOV ĐOKA
+MILUTINOV ACA
+MILUTINOV DRAGOSLAV
+MILUTINOV JELISAVETA
+MILUTINOV JOVAN
+MILUTINOV KONSTANTIN
+MILUTINOV LAZAR
+MILUTINOV MILISAV
+MILUTINOV MITA
+MILUTINOV-NEDELJKOVIĆ RADOVAN
+MILUTINOV RADA
+MILUTINOV RADOSLAV
+MILUTINOV SAVA
+MILUTINOV SAVETA
+MILUTINOV TODOR
+MILUTINOV VELIBOR
+MILUTINOVIĆ ŠTEFICA
+MILUTINOVIĆ ŽIKA
+MILUTINOVIĆ ĐORĐE
+MILUTINOVIĆ ĐORĐE
+MILUTINOVIĆ ĐORĐE
+MILUTINOVIĆ ĐURĐICA
+MILUTINOVIĆ ANĐELKO
+MILUTINOVIĆ BOŠKO
+MILUTINOVIĆ BOJAN
+MILUTINOVIĆ BRANKA
+MILUTINOVIĆ BUDIMIR
+MILUTINOVIĆ DANIJELA
+MILUTINOVIĆ DRAGAN
+MILUTINOVIĆ DRAGICA
+MILUTINOVIĆ DRAGICA
+MILUTINOVIĆ DRAGUTIN
+MILUTINOVIĆ DUŠANKA
+MILUTINOVIĆ DUŠAN
+MILUTINOVIĆ GAVRILO
+MILUTINOVIĆ IGNJAT
+MILUTINOVIĆ JOVAN
+MILUTINOVIĆ JOVAN
+MILUTINOVIĆ JULKICA
+MILUTINOVIĆ LIDIJA
+MILUTINOVIĆ LIDIJA
+MILUTINOVIĆ LJUBINKA
+MILUTINOVIĆ LJUBO
+MILUTINOVIĆ MANDA
+MILUTINOVIĆ MARTA
+MILUTINOVIĆ MELANIJA
+MILUTINOVIĆ MILADIN
+MILUTINOVIĆ MILAN
+MILUTINOVIĆ MILAN
+MILUTINOVIĆ MILENKO
+MILUTINOVIĆ MILINKO
+MILUTINOVIĆ MILIVOJE
+MILUTINOVIĆ MILIVOJE
+MILUTINOVIĆ MILOŠ
+MILUTINOVIĆ MILOJKO
+MILUTINOVIĆ MILORAD
+MILUTINOVIĆ MILORAD
+MILUTINOVIĆ MILOVAN
+MILUTINOVIĆ MILUTIN
+MILUTINOVIĆ MIOMIR
+MILUTINOVIĆ MIRJANA
+MILUTINOVIĆ MIRJANA
+MILUTINOVIĆ MIRJANA
+MILUTINOVIĆ MIROSLAVA DR
+MILUTINOVIĆ MIROSLAV
+MILUTINOVIĆ MOMIR
+MILUTINOVIĆ OLGA
+MILUTINOVIĆ PETAR
+MILUTINOVIĆ PETAR
+MILUTINOVIĆ RADE
+MILUTINOVIĆ RADIŠA
+MILUTINOVIĆ RADOJKA
+MILUTINOVIĆ RADOSAV
+MILUTINOVIĆ SAŠA
+MILUTINOVIĆ SLAVKO
+MILUTINOVIĆ SLOBODANKA
+MILUTINOVIĆ SRETEN
+MILUTINOVIĆ STANA
+MILUTINOVIĆ STEVAN
+MILUTINOVIĆ STOJANKA
+MILUTINOVIĆ STOJAN
+MILUTINOVIĆ SVETOZAR
+MILUTINOVIĆ VELIMIR
+MILUTINOVIĆ VERA
+MILUTINOVIĆ VERA
+MILUTINOVIĆ VERICA DR
+MILUTINOVIĆ-VUKSAN OLGA
+MILUTINOVIĆ ZORAN
+MILUTINOVIĆ ZORAN
+MILUTINOVIĆ ZORAN
+MILUTINOVIĆ ZORAN
+MIMICA MLADEN
+MIMICA NENAD
+MIMICA NENAD
+MIMICA NENAD
+MINČIĆ MIROLJUB
+MINČIĆ MIROSLAV
+MINČIĆ SLOBODANKA
+MINDA-RAĐENOVIĆ ELENA
+MINDA TIBOR
+MINDIĆ MIRJANA
+MINDIĆ SVETISLAV
+MINEA ROMAN
+MINIĆ MILOSAV
+MINIĆ NADA
+MINIĆ SLAVKO
+MINIĆ TOMISLAV
+MINIĆ ZORKA
+MINIK ŠANDOR
+MINIK JOSIP
+MINJA MAJA
+MINJA MILUTIN
+MIOČ ŽELJKO
+MIOČ IVAN
+MIOČ ZDENKO
+MIOČINOVIĆ MARKO
+MIOČINOVIĆ MILAN
+MIODANIĆ DANKO
+MIODRAG ANA
+MIODRAG MIRKO
+MIODRAG PERO
+MIODRAG ZDRAVKA
+MIODRAG ZORICA
+MIODRAGOVIĆ ALAKSANDAR
+MIODRAGOVIĆ BORISLAV
+MIODRAGOVIĆ DRAGOLJUB
+MIODRAGOVIĆ DRAGOLJUB
+MIODRAGOVIĆ DRAGOMIR
+MIODRAGOVIĆ DUŠKO
+MIODRAGOVIĆ MILENKO DIPL ING
+MIODRAGOVIĆ MILENKO
+MIODRAGOVIĆ RADOSLAV
+MIODRAGOVIĆ STEVAN
+MIODRAGOVIĆ TOŠA
+MIODRAGOVIĆ VERA
+MIODRAGOVIĆ-VUKANIĆ ALEKSANDRA
+MIODRAGOVIĆ ZORICA
+MIOK VLASTIMIR
+MIOKOVIĆ BRANKO
+MIOKOVIĆ DANICA
+MIOKOVIĆ RADOSLAV
+MIOLSKI BORISLAV
+MIOLSKI DUŠKO
+MIOLSKI STANKO
+MIOLSKI STEVAN
+MIRČETIĆ JOVAN
+MIRČETIĆ LAZAR
+MIRČETIĆ MILICA
+MIRČETIĆ MILUTIN
+MIRČETIĆ RADOSLAV
+MIRČETIĆ SLAVKO
+MIRČETIĆ ZORAN
+MIRČETIĆ ZORAN
+MIRČEVSKI MIHAILO
+MIRČIĆ KOVILJKA
+MIRČIĆ MILORAD
+MIRČIĆ NIKOLA
+MIRČIĆ RADOVAN
+MIRČIĆ STOJANKA
+MIRČIĆ STOJAN
+MIRAŽIĆ ANTUN
+MIRAŽIĆ BRANISLAV
+MIRAŽIĆ BRANKO
+MIRAŽIĆ JELA
+MIRAŽIĆ MARA
+MIRAŽIĆ VESELINKA
+MIRALEM AHMED
+MIRANOVIĆ KSENIJA DR LEKAR
+MIRANOVIĆ MAJA
+MIRANOVIĆ MIRKO
+MIREŠEVIĆ DUŠAN
+MIREŠEVIĆ RADOJKA
+MIRIĆ ĐURA
+MIRIĆ AGATA
+MIRIĆ BOŽIDAR
+MIRIĆ DANE
+MIRIĆ DRAGOMIR
+MIRIĆ DRAGUTIN
+MIRIĆ DUŠANKA
+MIRIĆ DUŠAN
+MIRIĆ DUŠAN
+MIRIĆ DUŠKO
+MIRIĆ JOSIF
+MIRIĆ JOVAN
+MIRIĆ JOVO
+MIRIĆ KATA
+MIRIĆ KATICA
+MIRIĆ KOVILJKA
+MIRIĆ MARIJA
+MIRIĆ MILAN
+MIRIĆ MILAN
+MIRIĆ MILAN
+MIRIĆ MILENA
+MIRIĆ MILKA
+MIRIĆ NIKOLA
+MIRIĆ PAVLE
+MIRIĆ RAJKO
+MIRIĆ RUŽICA
+MIRIĆ SAŠA
+MIRIĆ SAVKA
+MIRIĆ SMILJA
+MIRIĆ STEVAN
+MIRIĆ STOJANKA
+MIRIĆ VASILIJE
+MIRILOV ALEKSANDAR
+MIRILOV MILADIN DR
+MIRILOV ZORKA
+MIRILOVIĆ DRAGAN
+MIRILOVIĆ GORDANA
+MIRILOVIĆ LAZAR
+MIRILOVIĆ MLADEN
+MIRILOVIĆ SNEŽANA
+MIRIMANOV DARA
+MIRIMANOV VLADIMIR
+MIRJAČIĆ BOSA
+MIRJANIĆ DANICA
+MIRJANIĆ MORAVKA
+MIRJANIĆ VASA
+MIRJANIĆ VERICA
+MIRJANIN NERA
+MIRKAC STANISLAV
+MIRKAJLOVIĆ MILOVAN
+MIRKAJLOVIĆ MILOVAN
+MIRKIĆ BLAGOJE
+MIRKONJ SREDOJE
+MIRKONJEV BRANISLAV
+MIRKONJEV SNEŽANA
+MIRKOV ŽELJKO
+MIRKOV ŽIVAN
+MIRKOV ĐORĐE
+MIRKOV ĐURĐIJA
+MIRKOV ĐURĐIJA
+MIRKOV ĐURICA
+MIRKOV BOSILJKA
+MIRKOV DUŠICA
+MIRKOV EVICA
+MIRKOV MARICA
+MIRKOV PAVLE
+MIRKOV RUŽICA
+MIRKOV SEKULA DIPL OEC
+MIRKOV SLOBODAN
+MIRKOV SNEŽANA
+MIRKOV STANISLAV
+MIRKOV STEVAN
+MIRKOV STEVAN
+MIRKOV VELJKO
+MIRKOV VLADA
+MIRKOV ZORAN
+MIRKOV ZORICA
+MIRKOV ZORKA
+MIRKOVIĆ ČEDOMIR
+MIRKOVIĆ ŽIVAN
+MIRKOVIĆ ŽIVKA
+MIRKOVIĆ ŽIVOJIN
+MIRKOVIĆ ĐORĐE
+MIRKOVIĆ ĐORĐE
+MIRKOVIĆ AVRAM
+MIRKOVIĆ BORA
+MIRKOVIĆ BRANISLAV
+MIRKOVIĆ BRANKA
+MIRKOVIĆ BRANKA
+MIRKOVIĆ BRANKO
+MIRKOVIĆ BRANKO
+MIRKOVIĆ DANICA
+MIRKOVIĆ DEJAN
+MIRKOVIĆ DRAGANA
+MIRKOVIĆ DRAGICA
+MIRKOVIĆ DRAGICA
+MIRKOVIĆ DRAGOLJUB
+MIRKOVIĆ DUŠAN
+MIRKOVIĆ DUŠAN
+MIRKOVIĆ DUŠAN
+MIRKOVIĆ DUŠKO
+MIRKOVIĆ DUBRAVKA
+MIRKOVIĆ EDITA
+MIRKOVIĆ ELA
+MIRKOVIĆ EMILIJA
+MIRKOVIĆ GAVRILO
+MIRKOVIĆ IVAN
+MIRKOVIĆ JOVANKA
+MIRKOVIĆ JOVAN
+MIRKOVIĆ JOVAN
+MIRKOVIĆ JOVAN
+MIRKOVIĆ KATICA
+MIRKOVIĆ LAZAR
+MIRKOVIĆ LJILJANA
+MIRKOVIĆ LJILJANA
+MIRKOVIĆ MARA
+MIRKOVIĆ MARA
+MIRKOVIĆ MILAN DR
+MIRKOVIĆ MILAN
+MIRKOVIĆ MILAN
+MIRKOVIĆ MILAN
+MIRKOVIĆ MILAN
+MIRKOVIĆ MILICA
+MIRKOVIĆ MILISAV
+MIRKOVIĆ MILIVOJ DIPL ING
+MIRKOVIĆ MILIVOJE
+MIRKOVIĆ MILKA
+MIRKOVIĆ MILOŠ
+MIRKOVIĆ MILOSAV
+MIRKOVIĆ MILOVAN
+MIRKOVIĆ MILUTIN
+MIRKOVIĆ MIODRAG
+MIRKOVIĆ MIRJANA
+MIRKOVIĆ MIRKO
+MIRKOVIĆ MIROSLAV
+MIRKOVIĆ NENAD
+MIRKOVIĆ NOVAK
+MIRKOVIĆ PETAR
+MIRKOVIĆ PETAR
+MIRKOVIĆ PETAR
+MIRKOVIĆ PETAR
+MIRKOVIĆ PREDRAG
+MIRKOVIĆ RADMILA
+MIRKOVIĆ RATKO
+MIRKOVIĆ SANJA
+MIRKOVIĆ SAVA
+MIRKOVIĆ SLOBODAN DR LEKAR
+MIRKOVIĆ SLOBODAN
+MIRKOVIĆ STEVAN
+MIRKOVIĆ SVETISLAV
+MIRKOVIĆ TRIFUN
+MIRKOVIĆ VLADIMIR
+MIRKOVIĆ ZORAN DR
+MIRKOVIĆ ZORAN
+MIRKOVIĆ ZORAN
+MIRKOVIĆ ZORKA
+MIRKOVIĆ ZORKA
+MIRNIĆ JOSIP DR
+MIRNIĆ SILVIJA
+MIRNIĆ VUKAŠIN
+MIROŠEVIĆ NINO
+MIRONICKI RUŽICA
+MIRONICKI ZVONIMIR
+MIROSAVIĆ MILENKO
+MIROSAVIĆ MILENKO
+MIROSAVLJEV ILINKA
+MIROSAVLJEV JOCA
+MIROSAVLJEV MARIJA
+MIROSAVLJEV MILENKO
+MIROSAVLJEV MLADEN
+MIROSAVLJEVIĆ ALEKSANDAR
+MIROSAVLJEVIĆ BOŠKO
+MIROSAVLJEVIĆ BORISLAV
+MIROSAVLJEVIĆ BORIVOJ
+MIROSAVLJEVIĆ BRANKA
+MIROSAVLJEVIĆ DOBRILA
+MIROSAVLJEVIĆ JOVAN
+MIROSAVLJEVIĆ LEPOSAVA
+MIROSAVLJEVIĆ LJUBICA
+MIROSAVLJEVIĆ LJUBODRAG
+MIROSAVLJEVIĆ MAGDA
+MIROSAVLJEVIĆ MILENKO
+MIROSAVLJEVIĆ NIKOLA
+MIROSAVLJEVIĆ NIKOLA
+MIROSAVLJEVIĆ STEVAN
+MIROSAVLJEVIĆ STRAHINJA
+MIROSAVLJEVIĆ SVETISLAV
+MIROSAVLJEVIĆ TOMISLAV
+MIROSAVLJEVIĆ TOMISLAV
+MIROSAVLJEVIĆ VERA
+MIROSAVLJEVIĆ VERA
+MIROSAVLJEVIĆ VOJISLAV
+MIROSAVLJEVIĆ ZORAN
+MIROSAVLJEVIĆ ZORKA
+MIROSLAVLJEVIĆ DUŠANKA
+MIROVIĆ ALEKSANDAR
+MIROVIĆ DIMITRIJE
+MIROVIĆ IGOR
+MIROVIĆ MARIJA
+MIROVIĆ MILO
+MIROVIĆ NENAD
+MISAILOVIĆ SVETOZAR
+MISAJLOVIĆ MARGITA
+MISALJEVIĆ NEMANJA
+MISIMI KAMBER
+MISINI MIRIMAN
+MISIRKIĆ MILOŠ
+MISIRKIĆ VLADA
+MISIRLIS GEORGIOS
+MISKIN DRAGAN
+MISKIN MILOŠ
+MISKIN NIKO
+MISKIN ZDRAVKO
+MISLIMI ALIVEBI
+MITAR TOMA
+MITAR VERA
+MITEVSKI IVAN
+MITIĆ ČEDOMIR
+MITIĆ ALEKSANDAR
+MITIĆ BORIVOJ
+MITIĆ BRANISLAVA
+MITIĆ BRANISLAV
+MITIĆ BUDIMIR
+MITIĆ DANICA
+MITIĆ DRAGOLJUB
+MITIĆ DRAGOLJUB
+MITIĆ DRAGUTIN
+MITIĆ DUŠAN
+MITIĆ GORDANA
+MITIĆ IGOR
+MITIĆ JOSIF
+MITIĆ JOVAN
+MITIĆ JOVAN
+MITIĆ MARIJA
+MITIĆ MILAN
+MITIĆ MILIVOJ
+MITIĆ MIODRAG DR LEKAR
+MITIĆ MIODRAG
+MITIĆ MIRKO
+MITIĆ MITAR DIPL ING
+MITIĆ NIKOLA
+MITIĆ PAVLE
+MITIĆ RADIVOJE
+MITIĆ RUŽICA
+MITIĆ SLAVKO
+MITIĆ SREBRA
+MITIĆ SUZANA
+MITIĆ TOMISLAV
+MITIĆ VELIMIR
+MITIĆ VERA
+MITIĆ VIDOSAVA
+MITIĆ VITOMIR
+MITKOVIĆ DRAGAN
+MITOŠEVIĆ BOGDAN
+MITOŠEVIĆ MILE
+MITOŠEVIĆ NADA
+MITOŠEVIĆ SAVA
+MITOVIĆ ALEKSANDAR
+MITOVIĆ DOBRISLAV
+MITOVIĆ MIROSLAV
+MITRAŠINOVIĆ LJILJANA
+MITRAŠINOVIĆ ZORA
+MITRAKOVIĆ ĐURAĐ
+MITRAKOVIĆ MIROSLAV
+MITRAKOVIĆ NENAD
+MITRAKOVIĆ UGLJEŠA
+MITREKANIĆ MILORAD
+MITRESKI MOMČILO
+MITREVSKA EVDOKIJA
+MITREVSKI LAMBE
+MITREVSKI MOMČILO
+MITREVSKI RADA
+MITRIČEVIĆ ŽIKA
+MITRIČEVIĆ ANĐELKA
+MITRIČEVIĆ ANA
+MITRIČEVIĆ SMILJA
+MITRIĆ ĐURO
+MITRIĆ BOGIĆ
+MITRIĆ MILAN
+MITRIĆ MILAN
+MITRIĆ MILOŠ
+MITRIĆ NEĐO
+MITRIĆ NEĐO
+MITRIĆ NOVAK
+MITRIĆ RADMILA
+MITRIĆ VALENTINA
+MITROVČAN JULKICA
+MITROVČAN KOSTA
+MITROVČAN LAZAR
+MITROVČAN LJUBINKO
+MITROVČAN LJUBINKO
+MITROVČAN MITA
+MITROVČAN RADINKA
+MITROVČAN STEVAN
+MITROVČAN STJEPAN
+MITROVČAN ZAGORKA
+MITROVIĆ ČEDOMIR
+MITROVIĆ ŽARKO
+MITROVIĆ ŽIVORAD
+MITROVIĆ ĐOKO
+MITROVIĆ ALEKSANDAR
+MITROVIĆ ALEKSANDAR
+MITROVIĆ ALEKSANDAR
+MITROVIĆ ANGELINA
+MITROVIĆ ANKA
+MITROVIĆ BILJANA
+MITROVIĆ BOŠKO
+MITROVIĆ BORISLAV
+MITROVIĆ BRANKO
+MITROVIĆ BRANKO
+MITROVIĆ DANICA
+MITROVIĆ DARINKA
+MITROVIĆ DESANKA
+MITROVIĆ DRAGAN
+MITROVIĆ DRAGAN
+MITROVIĆ DRAGICA
+MITROVIĆ DRAGI
+MITROVIĆ DRAGOJLO
+MITROVIĆ DRAGOLJUB
+MITROVIĆ DUŠANKA
+MITROVIĆ DUŠAN
+MITROVIĆ DUŠAN
+MITROVIĆ DUŠKO
+MITROVIĆ DUBRAVKA
+MITROVIĆ GOJKO
+MITROVIĆ GOSPAVA
+MITROVIĆ GOSPA
+MITROVIĆ IKA
+MITROVIĆ IVAN
+MITROVIĆ JELENA
+MITROVIĆ JELENA
+MITROVIĆ JELICA
+MITROVIĆ JOVAN
+MITROVIĆ JOVAN
+MITROVIĆ JOVAN
+MITROVIĆ LAZAR
+MITROVIĆ LAZAR
+MITROVIĆ LJILJANA
+MITROVIĆ LJUBISAV
+MITROVIĆ LJUBOMIR
+MITROVIĆ LJUBOMIR
+MITROVIĆ MARKO
+MITROVIĆ MIHAJLO
+MITROVIĆ MIHAJLO
+MITROVIĆ MILANKA
+MITROVIĆ MILAN
+MITROVIĆ MILAN
+MITROVIĆ MILENA
+MITROVIĆ MILENKO
+MITROVIĆ MILICA
+MITROVIĆ MILKA
+MITROVIĆ MILOŠ
+MITROVIĆ MILOŠ
+MITROVIĆ MILORAD
+MITROVIĆ MILOVAN
+MITROVIĆ MIODRAG
+MITROVIĆ MIODRAG
+MITROVIĆ MIODRAG
+MITROVIĆ MIRKO
+MITROVIĆ MIRKO
+MITROVIĆ MIROSLAV
+MITROVIĆ MIROSLAV
+MITROVIĆ MITAR DIPL ING
+MITROVIĆ MLADEN
+MITROVIĆ MLADEN
+MITROVIĆ MLADEN
+MITROVIĆ MOMČILO
+MITROVIĆ MOMIR
+MITROVIĆ NADEŽDA
+MITROVIĆ NENAD
+MITROVIĆ NIKOLA
+MITROVIĆ OLGA
+MITROVIĆ PETAR
+MITROVIĆ RADISLAV
+MITROVIĆ RADIVOJE
+MITROVIĆ RADIVOJ
+MITROVIĆ RADMILA
+MITROVIĆ RADMILA
+MITROVIĆ RADOJICA
+MITROVIĆ RADOVAN
+MITROVIĆ RADOVAN
+MITROVIĆ RADO
+MITROVIĆ RATKO
+MITROVIĆ SLAVKO
+MITROVIĆ SLAVKO
+MITROVIĆ SLOBODAN
+MITROVIĆ SLOBODAN
+MITROVIĆ SLOBODAN
+MITROVIĆ SOFIJA
+MITROVIĆ SRETA
+MITROVIĆ STAKA
+MITROVIĆ STANIŠA
+MITROVIĆ STANKO
+MITROVIĆ STEVAN
+MITROVIĆ STEVAN
+MITROVIĆ SUZANA
+MITROVIĆ SUZANA
+MITROVIĆ TIHOMIR DIPL ING
+MITROVIĆ TIHOMIR
+MITROVIĆ TODE
+MITROVIĆ VALERIJA
+MITROVIĆ VASA
+MITROVIĆ VELIMIR
+MITROVIĆ VERA
+MITROVIĆ VERA
+MITROVIĆ VERICA
+MITROVIĆ VERONIKA
+MITROVIĆ VESELIN
+MITROVIĆ VLADIMIR
+MITROVIĆ VUČETA
+MITROVIĆ-VUJNIĆ SMILJANA
+MITROVIĆ VUJOŠ
+MITROVIĆ ZLATKO
+MITRUŠIĆ BORISLAV
+MITRUŠIĆ BRANISLAV
+MITRUŠIĆ JELISAVETA
+MIUČIN NATALIJA
+MIUČIN ROZINA
+MIUČIN SLAVKO
+MIUČIN SVETOZAR
+MIUČIN VERICA
+MIZ MARIJA
+MIZ ROMAN
+MIZDRAK BRANKO
+MJEDA SIMON
+MLAĐEN ĐURO
+MLAĐEN DMITAR
+MLAĐENOVIĆ BRANKA
+MLAĐENOVIĆ ELENA
+MLAĐENOVIĆ RADE
+MLADENOVIĆ ŽIVORAD
+MLADENOVIĆ ĐORĐE
+MLADENOVIĆ ĐORĐE
+MLADENOVIĆ ALEKSANDAR
+MLADENOVIĆ ALEKSANDAR
+MLADENOVIĆ ANĐELKA
+MLADENOVIĆ ANKICA
+MLADENOVIĆ BOŠKO
+MLADENOVIĆ BOGDAN
+MLADENOVIĆ BOSILJKA
+MLADENOVIĆ DANILO
+MLADENOVIĆ DRAGAN
+MLADENOVIĆ DRAGAN
+MLADENOVIĆ DRAGOLJUB
+MLADENOVIĆ DRAGOMIR
+MLADENOVIĆ DUŠAN
+MLADENOVIĆ DUŠAN
+MLADENOVIĆ GRADIMIR
+MLADENOVIĆ JELENA
+MLADENOVIĆ JELENA
+MLADENOVIĆ JELICA
+MLADENOVIĆ JELICA
+MLADENOVIĆ JUSTINA
+MLADENOVIĆ MARA
+MLADENOVIĆ MARINA
+MLADENOVIĆ MIHAJLO
+MLADENOVIĆ MILAN DIPL ING
+MLADENOVIĆ MILAN
+MLADENOVIĆ MILAN
+MLADENOVIĆ MILORAD
+MLADENOVIĆ MILORAD
+MLADENOVIĆ MILOVAN
+MLADENOVIĆ MILOVAN
+MLADENOVIĆ MLADEN
+MLADENOVIĆ NADEŽDA
+MLADENOVIĆ NEBOJŠA
+MLADENOVIĆ-NIKOLIĆ GORDANA
+MLADENOVIĆ OLGA
+MLADENOVIĆ PETAR
+MLADENOVIĆ RADIVOJ
+MLADENOVIĆ RAJKO
+MLADENOVIĆ RANKO
+MLADENOVIĆ RUŽICA
+MLADENOVIĆ SAVA
+MLADENOVIĆ SLOBODAN
+MLADENOVIĆ SLOBODAN
+MLADENOVIĆ SRBISLAVKA
+MLADENOVIĆ TIHOMIR
+MLADENOVIĆ TOMISLAV
+MLADENOVIĆ TOMISLAV
+MLADENOVIĆ UROŠ
+MLADENOVIĆ VEKOSLAV
+MLADENOVIĆ VERICA
+MLADENOVIĆ VOJISLAV
+MLADENOVIĆ ZAGORKA
+MLADENOVIĆ ZORANA
+MLADENOVSKI LOZANA
+MLADIN IMRE
+MLADIN MARGITA
+MLAZEV VASIL
+MLINAR MUHAREM
+MLINAR MUSTAFA
+MLINKO AMBROZIJE
+MLINKO DUŠAN
+MLINKO PETAR
+MLINKO ZVONIMIR
+MOČ JELENA
+MOČ JOVANKA
+MOŠO JOŽEF
+MOŠORINAC ŽIVKO
+MOŠORINAC NENAD
+MOŠORINSKI ZAGORKA
+MOŠORINSKI ZORA
+MOĆAN JELENA DIPL ING
+MOŽE EMIL
+MOCIĆ MOMIR
+MOCIK ĐULA
+MOCIK IRENKA
+MOCKO JAN
+MOCKO-MILADINOVIĆ VIERA
+MOCKO MIROSLAV
+MOCKO STEVAN
+MOCNAI IRENA
+MOCNI JOVAN
+MOCNI MARIJA
+MOCNI STEVAN
+MODELSKI BRANISLAVA
+MODIĆ MILENKO
+MODIĆ MILENKO
+MODIĆ MILIVOJE
+MODIĆ RANKO
+MODIĆ SLOBODAN
+MODIĆ TOMISLAV
+MODIĆ TOMISLAV
+MODOŠANOV MARTA
+MODOŠANOV NIKOLA
+MODRAH VLADIMIR
+MODRI ŠANDOR
+MODRI DRAGAN
+MODRI EVA
+MODRIĆ ILIJA
+MODRIĆ STANKO
+MODRINIĆ MILICA
+MODRONJA FEHIM
+MOFARDIN SPASENKA
+MOGA BRANKO
+MOGA JOVAN
+MOGA MILAN DR LEKAR
+MOGA MLADEN
+MOGA PAJA
+MOGA STEVAN
+MOGA VERA
+MOGIĆ ALEKSANDAR
+MOGIĆ BORISLAV
+MOGIĆ GORANA
+MOGIN ALEKSANDAR
+MOGIN ALEKSANDAR
+MOGIN ALEKSANDAR
+MOGIN BORISLAV
+MOGIN IRINA
+MOGIN JELENA
+MOGIN JULIJANA
+MOGIN KSENIJA
+MOGIN LAZAR
+MOGIN LJUBIŠA
+MOGIN MARA
+MOGIN MILANA
+MOGIN MILAN
+MOGIN PAVLE
+MOGIN PAVLE
+MOGIN PAVLE
+MOGIN PETAR
+MOGIN RADOMIR
+MOGIN RADOMIR
+MOGIN VITOMIR
+MOHAČI ALEKSANDAR
+MOHAČI LASLO
+MOHAN DEANA
+MOHAN JON
+MOHAN PETAR
+MOHAN SMILJANA
+MOHORA EMILIJAN
+MOHORIĆ DANICA
+MOHORKO ILIJA
+MOHORKO ILIJA
+MOHORKO MARGITA
+MOHORKO RAJKO
+MOJIĆ DUŠAN
+MOJIĆ DUŠAN
+MOJIĆ IVANKA
+MOJIĆ MILIVOJE
+MOJIĆ MILORAD
+MOJIĆ MITAR
+MOJIĆ NIKOLA
+MOJIĆ NIKOLA
+MOJIĆ SLAVKO
+MOJIĆEVIĆ DESIMIR
+MOJIN SOFIJA
+MOJSE KATICA
+MOJSE NANDOR
+MOJSEJEV ALEKSANDAR
+MOJSEJEV KONSTANTIN DIPL PH
+MOJSIJEVIĆ NIKOLA
+MOJSIJEVIĆ SAVA
+MOJSILOV DIMITRIJE
+MOJSILOV DRAGAN
+MOJSILOV MILISAV
+MOJSILOVIĆ MILOMIR
+MOJSILOVIĆ PETAR
+MOJSILOVIĆ SLAVICA
+MOJSILOVIĆ VERA
+MOJSILOVIĆ VIDOJE
+MOJSIN DRAGOMIR
+MOJSOVIĆ ALEKSANDAR
+MOJZEŠ ALFRED
+MOJZEŠ MARIJA
+MOKUŠ ŠANDOR
+MOKUŠ IMRE
+MOKUŠ JOVAN
+MOKUŠ KALMAN
+MOKUŠ LASLO
+MOKUŠ LASLO
+MOKUŠ LASLO
+MOKUŠ MIKLOŠ
+MOKUŠ TIBOR
+MOKUŠ ZOLTAN
+MOLAC MILORAD
+MOLC KATICA
+MOLDOVAN LJUBINKA
+MOLDOVAN MARIJA
+MOLDOVANOV BOŠKO
+MOLDOVANOVIĆ ĐORĐE
+MOLDVAI ERVIN
+MOLDVAI IZABELA
+MOLDVAI LASLO
+MOLDVAI OTO
+MOLDVAJ FRANJA
+MOLDVAJ HILDA
+MOLDVAJ-OLAH EMILIJA
+MOLDVAJ ROZALIA
+MOLDVAJ STEVAN
+MOLDVAJ VIKTOR
+MOLDVAJI PREDRAG
+MOLEROV RADOVAN
+MOLJAC ĐORĐE
+MOLJAC BRANKA
+MOLJAC GAVRA
+MOLJAC GAVRA
+MOLJAC JOVAN
+MOLJAC JOVAN
+MOLJAC KATICA
+MOLJAC MILICA
+MOLJAC MIODRAG
+MOLJAC NADA
+MOLJAC PAJA
+MOLJAC STEVAN
+MOLJAC STEVAN
+MOLJAC VERA
+MOLJSKI MIROSLAV
+MOLKUC PETAR DIPL ING
+MOLKUC VIRĐINEL
+MOLNAR ŠANDOR
+MOLNAR-ŠTEFULIK ILONA
+MOLNAR ĐORĐE
+MOLNAR ALEKSANDAR
+MOLNAR ANDRAŠ
+MOLNAR ANDRAŠ
+MOLNAR ANTON
+MOLNAR ARPAD
+MOLNAR BRANISLAVA
+MOLNAR DEŽE
+MOLNAR EMILIJA
+MOLNAR EMILIJA
+MOLNAR EVICA
+MOLNAR FEODOR
+MOLNAR FERENC DIPL ING
+MOLNAR IŠTVAN
+MOLNAR IŠTVAN
+MOLNAR IMRE DR
+MOLNAR IMRE
+MOLNAR IMRE
+MOLNAR IRENA
+MOLNAR IVAN DIPL ING
+MOLNAR IVAN
+MOLNAR IVAN
+MOLNAR JAKOV
+MOLNAR JANOŠ
+MOLNAR JAN
+MOLNAR JELENA
+MOLNAR JELICA
+MOLNAR JELISAVETA
+MOLNAR JELISAVETA
+MOLNAR JELISAVETA
+MOLNAR JOŽEF
+MOLNAR JOŽEF
+MOLNAR JOŽEF
+MOLNAR JOŽEF
+MOLNAR JOŽEF
+MOLNAR JOLANKA
+MOLNAR JOSIP
+MOLNAR JOSIP
+MOLNAR JOSIP
+MOLNAR JOSIP
+MOLNAR JOVAN
+MOLNAR KARLO
+MOLNAR KATALIN
+MOLNAR LASLO
+MOLNAR LAZAR
+MOLNAR MAĆAŠ
+MOLNAR MARIJA DR
+MOLNAR MARTA DR
+MOLNAR MATILDA
+MOLNAR MIHAJLO
+MOLNAR MIHALJ
+MOLNAR MIHALJ
+MOLNAR MIHALJ
+MOLNAR MIHALJ
+MOLNAR MILAN
+MOLNAR MIRON
+MOLNAR NIKOLA
+MOLNAR SPOMENKA
+MOLNAR SVETOSLAV
+MOLNAR TEREZA
+MOLNAR VERA
+MOLNAR VILMOŠ DIPL ING
+MOLNAR VJERA
+MOLNAR VLADIMIR
+MOLNAR ZVONKO
+MOMČILOV DOBRIJA
+MOMČILOV GAVRILO
+MOMČILOV GAVRILO
+MOMČILOV STEVAN
+MOMČILOVIĆ ČEDOMIR
+MOMČILOVIĆ BOGOMIR
+MOMČILOVIĆ BRANKO DR
+MOMČILOVIĆ DANE
+MOMČILOVIĆ DRAGAN
+MOMČILOVIĆ DUŠANKA
+MOMČILOVIĆ ILIJA
+MOMČILOVIĆ MIHAJLO
+MOMČILOVIĆ MILAN
+MOMČILOVIĆ MILAN
+MOMČILOVIĆ MILE
+MOMČILOVIĆ MIRA
+MOMČILOVIĆ MIRA
+MOMČILOVIĆ MOMČILO
+MOMČILOVIĆ PETAR
+MOMČILOVIĆ RUŽICA
+MOMČILOVIĆ SMILJA
+MOMČILOVIĆ TOMISLAV
+MOMČILOVIĆ VASA
+MOMČILOVIĆ VIDAN
+MOMČILOVIĆ VOJISLAV
+MOMČILOVIĆ VUKICA
+MOMANI AKRAM
+MOMIĆ OBRAD
+MOMIROV ILIJA
+MOMIROV LJILJANA
+MOMIROV MILENKO
+MOMIROV MILETA
+MOMIROV MIROSLAV
+MOMIROV NADA
+MOMIROV PAJA
+MOMIROV SAVA
+MOMIROV SVETLANA
+MOMIROV SVETOZAR
+MOMIROV TOŠA
+MOMIROV ZORICA
+MOMIROVIĆ BRANKO
+MOMIROVIĆ JELICA
+MOMIROVIĆ JOVICA
+MOMIROVIĆ LAZA
+MOMIROVIĆ PETAR
+MOMIROVIĆ SREĆKO
+MOMIROVIĆ STEVAN
+MOMIROVSKI-MILOŠEVIĆ CVETANA
+MONAR JANKO
+MONAREV ALEKSANDAR
+MONAREV JOSIPA
+MONAREV-SOKOLIĆ NADA
+MONAROV ELIZABETA
+MONAROV JOZEFINA
+MONDOVIĆ ĐULA
+MONDOVIĆ ALEKSANDAR
+MONDOVIĆ FRANJA
+MONDOVIĆ KATICA
+MONDOVIĆ LADISLAV
+MONGEJAR RADOSAVA
+MONI ISLAM
+MONOKI ĐULA
+MONOKI IŠTVAN
+MOR ĐERĐ
+MOR FRANJA
+MOR GABOR
+MOR GABOR
+MOR LASLO
+MOR ZDENKO
+MORA ANA
+MORA ANDRAŠ
+MORA KORNELIJA
+MORAČA ĐURAĐ
+MORAČA MIODRAG
+MORAČA NIKOLA
+MORAČA RADMILA
+MORAČA VASO
+MORAČA VASO
+MORAČANIN MILORAD
+MORAIĆ ĐORĐE
+MORAREVIĆ LJUBICA
+MORAREVIĆ VOJKAN
+MORAVAC VOJISLAV
+MORAVEK JANKO
+MORE MARIJA
+MORE SILVESTER
+MORGENTALER JOVAN
+MORIĆ HAMO
+MORIC DRAGUTIN
+MORIC GABOR
+MORIC JANOŠ
+MORIC JELENA
+MORIC JULIJA
+MORIC KARLO
+MORIC LAJOŠ
+MORIC LASLO
+MORIC LASLO
+MORIC LIDIJA
+MORIC MILANA
+MORIC PAULA
+MORIC SILARD
+MORIC SLAVICA
+MORIC ZOLTAN
+MOROŠEV RADOSLAV
+MOROKVAŠIĆ BOGDANKA
+MOROKVAŠIĆ MILISAV
+MOROKVAŠIĆ NENAD
+MOROKVAŠIĆ NIKOLA
+MOROMILOV LJUBINKA
+MOROTVANSKI VIDOSAVA
+MOROVIĆ MATILDA
+MOROVIĆ MILENA
+MOROVIĆ NESTOR
+MOROVIC LASLO
+MORVAI ŠANDOR
+MORVAI ĐERĐ
+MORVAI FERENC
+MORVAI JANOŠ
+MORVAI KARLO
+MORVAI LADISLAV
+MORVAI PETAR
+MOSIĆ MIODRAG
+MOSKALJ LJUBOMIR
+MOSKALJ NIKOLA
+MOSKALJ NIKOLA
+MOSKALJ RADMILA
+MOSKVALJ SAVKA
+MOSLOVAC KATARINA
+MOSNAK ANDRIJA
+MOSNAK PAVEL
+MOSTARAC JELENA
+MOSTARSKI SLAVICA
+MOSTIĆ RADMILA
+MOSUROVIĆ MILIJANA
+MOTOK ĐORĐE
+MOTOK BRANKO
+MOTOROŽESKU AURORA
+MOVRIN IVAN
+MOZETIĆ MLADEN
+MRČARICA ZORAN
+MRŠA MILENKA
+MRŠIĆ ĐORĐE
+MRŠIĆ BOGDAN
+MRŠIĆ DUŠAN
+MRŠIĆ MARKO
+MRŠIĆ MILE
+MRŠO ANTO
+MRŠULJA NIKOLA
+MRŠULJA RADOMIR
+MRĐA BOŠKO
+MRĐA BOGDAN
+MRĐA MANE
+MRĐA MILKAN
+MRĐA MIROSLAV
+MRĐA STEVAN
+MRĐA ZORAN
+MRĐAN DUŠAN
+MRĐAN MIHAJLO
+MRĐAN RUŽICA
+MRĐAN SAVA
+MRĐAN SAVA
+MRĐAN STEVAN
+MRĐAN STEVAN
+MRĐANIN VLADISLAV
+MRĐANOV ŽARKO
+MRĐANOV ANICA
+MRĐANOV KSENIJA
+MRĐANOV LAZA
+MRĐANOV MARINKO
+MRĐANOV MELANIJA
+MRĐANOV MIROSLAV
+MRĐANOV MOMČILO
+MRĐANOV NEMANJA
+MRĐANOV NOVICA
+MRĐANOV PROKA
+MRĐANOV SMILJA
+MRĐANOV VUKOSAVA
+MRĐANOV ZDRAVKO
+MRĐEN ILIJA
+MRĐEN JELENA
+MRĐEN LAZAR
+MRĐEN MIRKO
+MRĐEN VELJKO
+MRĐENOV KATICA
+MRĐENOVIĆ BRANISLAV
+MRĐENOVIĆ BRANKO
+MRĐENOVIĆ LJUBOMIR
+MRĐENOVIĆ NEBOJŠA
+MRĐENOVIĆ PETAR
+MRĐENOVIĆ VASO
+MRAČAJAC CVIJO
+MRAČAJAC DEJAN
+MRAĆEVIĆ RADIVOJ
+MRAKOVIĆ BOŽIDAR
+MRAKOVIĆ LJUBAN
+MRAKOVIĆ SLOBODANKA
+MRAOVIĆ-BAHUN MILIJANA
+MRAOVIĆ DRAGAN
+MRAOVIĆ DUŠAN
+MRAOVIĆ KATICA
+MRAOVIĆ MARKO
+MRAOVIĆ OLGA DR PRAVNIK
+MRAOVIĆ SLOBODAN
+MRAOVIĆ STOJAN
+MRATINKOVIĆ BORIS DR LEKAR
+MRATINKOVIĆ DUŠAN DR
+MRATINKOVIĆ LJUBICA
+MRAVIK ŽIVKA
+MRAVIK ĐURA
+MRAVIK PAVLE
+MRAZ ANDRIJA
+MRAZEK BERNARDO
+MRAZOVIĆ JOSIP
+MRAZOVIĆ MILANA
+MRAZOVIĆ MILAN
+MRAZOVIĆ NEVENKA
+MRDAK ĐORĐE
+MRDAK MIRAŠ
+MRDAKOVIĆ BORISAV
+MRDAKOVIĆ MILUTIN
+MRDAKOVIĆ VERICA
+MRDAKOVIĆ VUKOSAV
+MRDALJ PETAR
+MRDIĆ KAROLINA
+MRDIĆ MARKO
+MRDIĆ SANJA
+MRGANIĆ JOZO
+MRGANIĆ SREĆKO
+MRGIĆ MIRJANA
+MRKŠIĆ ĐORĐE
+MRKŠIĆ ALEKSANDAR
+MRKŠIĆ BOJANA
+MRKŠIĆ DRAGAN
+MRKŠIĆ DRAGAN
+MRKŠIĆ JELENA
+MRKŠIĆ JOCA
+MRKŠIĆ JOCA
+MRKŠIĆ KOSTA
+MRKŠIĆ MILOŠ
+MRKŠIĆ NENAD
+MRKŠIĆ SLAVICA
+MRKŠIĆ ZAGORKA
+MRKŠIĆ ZLATA
+MRKAIĆ GORAN
+MRKAIĆ SIMA
+MRKAIĆ TOMISLAV
+MRKALJ BOŽIDAR
+MRKELA MIRA
+MRKELA VOJIN
+MRKIĆ BRANISLAV
+MRKIĆ MILKA MR PH
+MRKIĆ NIKOLA
+MRKIĆ SMILJA
+MRKOJEVIĆ KOSTA
+MRKOJEVIĆ MARIJA
+MRKONJEV DRAGAN
+MRKONJIĆ ŽIVOJIN
+MRKOVAČKI JELENA
+MRKOVAČKI MILOŠ
+MRKOVAČKI MILOVAN
+MRKOVIĆ MLADEN
+MRKUŠIĆ MILICA
+MRKUŠIĆ MILICA
+MRKUŠIĆ RADIVOJ
+MRKUŠIĆ STEVAN
+MRMOŠ MILAN
+MRNUŠTIK STEVAN
+MRVIĆ NEDELJKO
+MRVIĆ SAVA
+MRVIĆ STEVAN
+MRVIĆ VUKOMIR
+MRVICA RUŽICA
+MRVOŠ JOVAN
+MRVOŠ MIHAILO
+MRVOŠ MILANKA
+MUČALICA DRAGOLJUB
+MUČALO SLAVICA
+MUČALOV SLOBODAN
+MUČALOVIĆ DUŠKO
+MUČENSKI LJUBOMIR
+MUČENSKI NIKOLA
+MUČENSKI VLADIMIR
+MUČI ĐERĐ DIPL ING
+MUČI ANDRAŠ
+MUČI FRANJA
+MUČI ILONA
+MUČI ILONKA
+MUČI JOŽEF
+MUČI JOŽEF
+MUČIBABIĆ MIRJANA
+MUČIBABIĆ NATALIJA
+MUČIBABIĆ RADOVAN
+MUČIBABIĆ RADOVAN
+MUČIBABIĆ SAVO
+MUČIBABIĆ VERA
+MUČU JOVAN
+MUČU NIKOLA
+MUŠAN MARIJA
+MUŠIĆ FRANJA
+MUŠICKI ĆIRA
+MUŠICKI ŽIVAN
+MUŠICKI ŽIVAN
+MUŠICKI ŽIVAN
+MUŠICKI ĐORĐE
+MUŠICKI ĐORĐE
+MUŠICKI BOGDAN
+MUŠICKI BOJANA
+MUŠICKI BRANISLAV
+MUŠICKI BRANKA
+MUŠICKI DOROTEJA
+MUŠICKI DRAGAN
+MUŠICKI DRAGOSLAV
+MUŠICKI DUŠAN
+MUŠICKI DUŠAN
+MUŠICKI DUŠAN
+MUŠICKI EVICA
+MUŠICKI JOVAN
+MUŠICKI LAZAR
+MUŠICKI MARIJA
+MUŠICKI MILANA
+MUŠICKI MILENKO
+MUŠICKI MILICA
+MUŠICKI MILICA
+MUŠICKI MILORAD
+MUŠICKI NATAŠA
+MUŠICKI NOVAK
+MUŠICKI PROKA
+MUŠICKI SLAVKO
+MUŠICKI SLAVKO
+MUŠICKI SOFIJA
+MUŠICKI STEVAN
+MUŠICKI VELJKO
+MUŠIKIĆ BOŽIDAR
+MUŠIKIĆ LJUBICA
+MUŠIKIĆ RADOMIR
+MUŠIKIĆ RATKO
+MUŠKINJA BARICA
+MUŠKINJA MIRKO
+MUŽEK VIDA
+MUŽIJEVIĆ RISTO
+MUŽIK BILJANA
+MUŽIK MATA
+MUŽIKA-TOT ZOLTAN
+MUŽLAI ŠANDOR
+MUC ZLATOMIR
+MUCI JANOŠ
+MUDRENIĆ MARIJA
+MUDRENIĆ RADISLAV
+MUDRI EUGEN
+MUDRI JOAKIM
+MUDRI LJUBICA
+MUDRI MIROSLAV
+MUDRI PETAR
+MUDRI PETAR
+MUDRI VERA DR VETERINE
+MUDRI VLADA
+MUDRI VLADIMIR
+MUDRI VLADIMIR
+MUDRIĆ ĐURA
+MUDRIĆ DRAGOLJUB
+MUDRIĆ LJUBOMIR DIPL ING
+MUDRIĆ PETAR
+MUDRIĆ SLAVKA
+MUDRINIĆ BOŠKO
+MUDRINIĆ BOŠKO
+MUDRINIĆ BRANKO
+MUDRINIĆ GOJKO
+MUDRINIĆ MAJA
+MUDRINIĆ MIHAJLO
+MUDRINIĆ MILAN
+MUDRINIĆ MILEVA
+MUDRINIĆ MLADEN
+MUDRINIĆ PETAR DR
+MUDRINIĆ SLAVKO
+MUDRINIĆ SPASENKA
+MUDRINIĆ STEVO
+MUDRINIĆ STOJAN
+MUDRINIĆ VLADIMIR
+MUDRINIĆ VOJIN
+MUDRINSKI ĐORĐE
+MUDRINSKI ALEKSANDAR
+MUDRINSKI ALEKSANDAR
+MUDRINSKI BORISLAV
+MUDRINSKI BOSILJKA
+MUDRINSKI IVANKA
+MUDRINSKI LAZAR
+MUDRINSKI MILAN
+MUDRINSKI MILETA
+MUDRINSKI MILOŠ
+MUDRINSKI MIROSLAV
+MUDRINSKI OLGA
+MUDRINSKI PETAR
+MUDRINSKI SAVA
+MUDRINSKI SOFIJA
+MUDRINSKI STEVAN
+MUDRINSKI VOJISLAV
+MUGOŠA MILO
+MUHA ZUZANA
+MUHAREMI FUAD
+MUHAREMSKI-BEĆIROVIĆ REMZIJA
+MUHARI LAJOŠ
+MUHI BELA
+MUJANOVIĆ SAFET
+MUJANOVIĆ SLOBODAN
+MUJANOVIĆ SVETLANA
+MUJEZINOVIĆ ALMAS
+MUJEZINOVIĆ IRENA
+MUJEZINOVIĆ ZLATAN
+MUJIĆ MILAN
+MUJKANOVIĆ SALIH
+MUJKIĆ ŠEFIK
+MUJKIĆ HAJRUDIN
+MUJKIĆ ILDUZA
+MUJKIĆ IZUDIN
+MUJKIĆ JAKUB
+MUJKIĆ MEHMED
+MUK-SAMARDŽIĆ EMA
+MULAI MATIJA
+MULAJ ESTIKA
+MULAJ KATICA
+MULIĆ KATARINA
+MULIĆ MIODRAG
+MULIĆ MIROSLAV
+MULIĆ PETAR
+MULIĆ RADMILO
+MULIĆ SVETISLAV
+MULIĆ VELJKO
+MULIĆ ZORAN
+MUMDŽIĆ HAZIR
+MUMIN ALEKSANDAR
+MUMIN NIKOLA
+MUMINAGIĆ ALIDA
+MUMINOVIĆ ALIM
+MUMINOVIĆ HAMED
+MUMOVIĆ ANDRIJA
+MUMOVIĆ JOVA
+MUMOVIĆ SAVA
+MUNĆAN ĐORĐE
+MUNĆAN ĐORĐE
+MUNĆAN ĐORĐE
+MUNĆAN ALEKSANDAR
+MUNĆAN ANGELINA
+MUNĆAN BOŠKO
+MUNĆAN BOŠKO
+MUNĆAN DRAGAN
+MUNĆAN DRAGOLJUB
+MUNĆAN DUŠAN
+MUNĆAN JOVAN DR
+MUNĆAN JOVAN
+MUNĆAN LAZAR
+MUNĆAN LAZA
+MUNĆAN MILENKO
+MUNĆAN RADOVAN
+MUNĆAN SLAVKO
+MUNĆAN SOFIJA
+MUNĆAN TODOR
+MUNĆAN VASA
+MUNĆAN VESELIN
+MUNĆAN VLADIMIR
+MUNĆAN ZORA
+MUNDŽIĆ ŽIVOJIN
+MUNDŽIĆ BOGDAN
+MUNDŽIĆ MIRJANA
+MUNDŽIĆ PETAR
+MUNDING ETELKA
+MUNIŠIĆ JOVAN
+MUNIŽABA ĐORĐE DIPL ING
+MUNIŽABA BRANISLAV
+MUNIŽABA JOVAN
+MUNIŽABA KATICA
+MUNIŽABA LAZAR
+MUNIŽABA MILENKO
+MUNIŽABA VEDRANA
+MUNITLAK DRAGAN
+MUNJAS BOŽIDAR
+MUNJAS DMITAR
+MUNJAS MILAN
+MUNJAS SIMKA
+MUNJAS STANA
+MUNJIN ŽIVKO
+MUNJIN ALEKSANDAR
+MUNJIN-BANIĆ OLGA DIPL PRAVNIK
+MUNJIN KAJICA
+MUNJIN LAZAR
+MUNJIN PETAR
+MUNJIN SMILJA
+MUNJIZA ŽELJKO
+MUNJIZA JOVANKA
+MUNK ĐORĐE
+MUNKA DUŠANKA
+MUNKAČI MIHAJLO
+MUNTEAN ILIJA
+MUNTEAN TODOR
+MUNZAR VERA
+MURATI MILJAZIM
+MURATI STANA
+MURATOVIĆ IBRAHIM
+MURATOVIĆ JOVO
+MURATOVIĆ MIKA
+MURATOVIĆ RADENKO
+MURATOVIĆ SABRIJA
+MURGAŠKI BRANKA
+MURGAŠKI DANICA
+MURGAŠKI DOBREN
+MURGAŠKI DUŠAN
+MURGAŠKI JOVAN
+MURGAŠKI LJUBINKA
+MURGAŠKI MATIJA
+MURGAŠKI MIHAJLO
+MURGAŠKI MILICA
+MURGAŠKI MILOŠ
+MURGAŠKI MILORAD
+MURGAŠKI MIROSLAV
+MURGAŠKI NENAD
+MURGAŠKI NOVAK
+MURGAŠKI PETAR
+MURGAŠKI SAVA
+MURGAŠKI SEVER
+MURGAŠKI SLOBODAN DR
+MURGAŠKI SVETOZAR
+MURGAŠKI VUKOSAVA
+MURGUL LJUBOMIR
+MURGULOVIĆ MOMIR
+MURIĆ SLAVKO
+MURIĆ STEVAN
+MURIĆ VELJKO
+MURINJI JOSIP
+MURINJI KATICA
+MURINJI MILEVA
+MURINJI STOJANKA
+MURPHU MIRJANA
+MURSELI MIRČE
+MURSELI NEZIR
+MURSELOVIĆ NAZIF
+MURSELOVIĆ RAIF
+MUSA IVANKA
+MUSA JELICA
+MUSAFIJA BLANKA
+MUSIĆ ŠABANIJA
+MUSIĆ ŠEMSA
+MUSIĆ KATICA
+MUSIĆ MIRKO
+MUSIĆ RADOJKA
+MUSIĆ ZORAN
+MUSIN KALMAN
+MUSOVSKI ISA
+MUSTAFIĆ BRANKA
+MUSTAFIĆ HARIZ
+MUSTAFIĆ MILICA
+MUSTAFIĆ SEDAT
+MUSTAFOSKI BEDRIJA
+MUSTEDANAGIĆ ESAD
+MUSULIN GORKI
+MUSULIN MILORAD
+MUSULIN SLAVKO
+MUTABDŽIJA MILOVAN
+MUTAVČIEV IVAN
+MUTAVDŽIĆ-GION MARIJA
+MUTAVDŽIĆ MILAN
+MUTAVDŽIĆ MILAN
+MUTAVDŽIĆ MILOŠ
+MUTAVDŽIĆ RATKO
+MUTAVDŽIĆ TOMISLAV
+MUTAVDŽIĆ VELJKO
+MUTAVDŽIĆ ZLATA
+MUTAVDŽIJA MIRJANA
+MUTIĆ ŽIVKO
+MUTIĆ BRANKO
+MUTIĆ DUŠAN
+MUTIĆ DUŠAN
+MUTIĆ DUŠAN
+MUTIĆ DUŠICA
+MUTIĆ KAMENKO
+MUTIĆ LJILJANA
+MUTIĆ RADOSLAV
+MUTIĆ SMILJA
+MUTIBARIĆ ALEKSANDAR DR
+MUTIBARIĆ ALEKSANDAR
+MUTIBARIĆ DRAGOLJUB
+MUTIBARIĆ IRENA
+MUTIBARIĆ LIBUŠA
+MUTIBARIĆ MILAN
+MUTIBARIĆ MILE
+MUTIBARIĆ NATAŠA
+MUTIBARIĆ STEVAN
+MUTIBARIĆ TODOR
+MUTIN ĐORĐE
+MUTIN EMIL
+MUTIN ZDRAVKO
+MUZALEVSKI ALEKSANDAR
+MUZEKA MARIJANA
+MUZER FRANJA
+MUZER MIROSLAV
+MUZER RADOSLAV
+MUZIKRAVIĆ BLAŽO
+MUZIKRAVIĆ LJUBOMIR DR
+NAČ ANDRIJA
+NAČA JANOŠ
+NAČA JOSIP
+NAČA OTILIJA
+NAŠIGAĆIN MILENKO
+NAĆUK ALEKSANDAR
+NAĆUK IRINA
+NAĐ ČONGOR
+NAĐ ČONGOR
+NAĐ ŠANDOR
+NAĐ ŠANDOR
+NAĐ ĐERĐ
+NAĐ-ABONJI GABOR
+NAĐ ALEKSANDAR
+NAĐ ANA
+NAĐ ANGELA
+NAĐ BARBARA
+NAĐ BELA
+NAĐ BRANKA
+NAĐ DEŽE
+NAĐ-DOROTIĆ MARIJA
+NAĐ DRAGISLAV
+NAĐ DUŠANKA
+NAĐ ERŽEBET
+NAĐ ETEL
+NAĐ EUFEMIJA
+NAĐ FERENC
+NAĐ FERENC
+NAĐ FERENC
+NAĐ FERENC
+NAĐ FERENC
+NAĐ-FORKAŠ KATICA
+NAĐ FRANJA
+NAĐ FRANJA
+NAĐ FRANJA
+NAĐ GEORGINA
+NAĐ GIZELA
+NAĐ-HEVEŠI LASLO
+NAĐ IŠTVAN
+NAĐ IŠTVAN
+NAĐ ILONA
+NAĐ IMRE
+NAĐ IRINA
+NAĐ IVAN
+NAĐ JANOŠ
+NAĐ JANOŠ
+NAĐ JOŽEF
+NAĐ JOŽEF
+NAĐ JOŽEF
+NAĐ JOŽEF
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOSIP
+NAĐ JOVANKA
+NAĐ JOVAN
+NAĐ KARLO
+NAĐ KAROLJ
+NAĐ KAROLJ
+NAĐ KATARINA
+NAĐ LADISLAV
+NAĐ LAJOŠ
+NAĐ LAJOŠ
+NAĐ LASLO DIPL ING
+NAĐ LASLO
+NAĐ LASLO
+NAĐ LASLO
+NAĐ LASLO
+NAĐ LASLO
+NAĐ LEONA
+NAĐ LEONA
+NAĐ LJUBICA
+NAĐ MARGARETA
+NAĐ MARIJA
+NAĐ MARIJA
+NAĐ MARTON
+NAĐ-MELJKUTI EDIT
+NAĐ MIHAJLO
+NAĐ MIHALJ
+NAĐ MIRA
+NAĐ MIRA
+NAĐ MIRA
+NAĐ MIRJANA
+NAĐ NANDOR
+NAĐ NANDOR
+NAĐ NEVENKA
+NAĐ NIKOLA
+NAĐ NOVICA
+NAĐ OTO
+NAĐ OTO
+NAĐ PAVLE
+NAĐ PAVLE
+NAĐ PETAR
+NAĐ PETAR
+NAĐ PETAR
+NAĐ PETER
+NAĐ PIROŠKA
+NAĐ PIROŠKA
+NAĐ-POPOV CECILIJA
+NAĐ ROZA
+NAĐ SLAVKO
+NAĐ STEVAN
+NAĐ STEVAN
+NAĐ SVJATOSLAV
+NAĐ-TANASKOVIĆ JULIJA
+NAĐ TIBOR
+NAĐ VASILIJE
+NAĐ VERONA
+NAĐ VIKTORIJA
+NAĐ VLADIMIR
+NAĐ VLADIMIR
+NAĐ VLADIMIR
+NAĐ VLADIMIR
+NAĐ ZLATIMIR
+NAĐ ZOLTAN
+NAĐALIN BRANKO
+NAĐALIN ISA
+NAĐBABI FERENC
+NAĐBABI FERENC
+NAĐBABI IGOR
+NAĐBABI IVKA
+NAĐBABI JANIKA
+NAĐERĐ ILONKA
+NAĐGELERT JANOŠ
+NAĐHEĐEŠI FRANJA
+NAĐHEĐEŠI JOVAN
+NAĐHEĐEŠI LADISLAV
+NAĐIDAI KAROLJ
+NAĐMELJKUTI KLARA
+NAĐMIĆO VESELINA
+NAĐORĐ SAŠA
+NAĐPAL IRENKA
+NAĐVINSKI KSENIJA
+NAĐVINSKI PETAR
+NACEV GRUJO
+NADAŠKI LAZAR
+NADAŠKI MILIVOJ
+NADAŠKI MIROSLAV
+NADAŠKIĆ KATICA
+NADAŽDI RUŽICA
+NADAREVIĆ BORIS
+NADBANDIĆ SVETISLAV DIPL ING
+NADBANTIĆ NADA
+NADIH FRIDRIH
+NADIH MIRKO
+NADLAČKI ALEKSANDAR
+NADLAČKI MILOJE
+NADLAČKI RADIVOJ
+NADLAČKI RADOVAN
+NADLAČKI STEVKA
+NADLUKAČ MARIJA
+NADRLJANSKI ĐORĐE
+NADRLJANSKI DANILKA
+NADRLJANSKI LJILJANA
+NADRLJANSKI LJUBIŠA
+NADRLJANSKI MILIVOJ
+NADRLJANSKI SLOBODAN
+NADRLJANSKI STEVAN
+NAERAC SLOBODAN
+NAGLIĆ SLAVKO
+NAGRADIĆ JELENA
+NAGRADIĆ LJUBICA
+NAHLOVSKI JOŽEF
+NAJBAUER IVAN
+NAJDANOV GEORGI
+NAJDANOV IVAN
+NAJDEK VINKO
+NAJDOVSKI TOMISLAV
+NAJDOVSKI TOMISLAV
+NAJIĆ ANKICA
+NAJIĆ MILENKO
+NAJIĆ ZORICA
+NAJVIRT GOTFRID
+NAJVIRT JOVAN
+NAKARADA DARINKA
+NAKARADIĆ LJUBO
+NAKIĆ DRAGAN
+NAKIĆ IVAN
+NAKIĆ JANJA
+NAKIĆ LJUBINKA
+NAKIĆ RADOVAN
+NAKIĆ STEVAN
+NAKOMČIĆ ZORKA
+NAKOV JORDAN
+NALIĆ DRAGICA
+NALIĆ ENISA
+NAMESNIK OLGA
+NAMLIĐI FERIDA
+NANAŠI ŽOLT
+NANAŠI AGATA
+NANAŠI JULIJANA
+NANIĆ ĐOKA
+NANOVSKI VLADIMIR
+NANOVSKIJ ALEKSANDAR
+NAODOVIĆ PAVLE
+NARAI FERENC
+NARANČIĆ ILONKA
+NARANČIĆ MILE
+NARANČIĆ MILE
+NARANČIĆ MILORAD
+NARANČIĆ NADA
+NARANČIĆ PETAR
+NARANČIĆ PETAR
+NARANČIĆ PETAR
+NARANČIĆ PETAR
+NARANČIĆ SAVA
+NARANČIĆ STEVAN
+NARANČIĆ STEVAN
+NARANČIĆ SUZANA
+NARANČIĆ VLADIMIR
+NARANDŽIĆ DARKO
+NARANDŽIĆ EVA
+NARANDŽIĆ MILAN
+NARANDŽIĆ MIRJANA
+NARANDŽIĆ VERA
+NARIĆ NEDELJKO
+NAS ĐERĐ
+NAS FERENC
+NAS FRANJA
+NAS KARLO
+NASKOVIĆ BLAŽA
+NASKOVIĆ ZORKA
+NASOV MILIVOJ
+NASTASIĆ DRAGAN
+NASTASIĆ IVAN
+NASTASIĆ JELENA
+NASTASIĆ LJILJANA
+NASTASIĆ PAVLE
+NASTASIĆ RADOSLAV
+NASTASIĆ STEVAN DR LEKAR
+NASTASIĆ TATJANA
+NASTASIĆ TEODOR
+NASTASIJEVIĆ MIROSLAV
+NASTASOVIĆ MLADEN
+NASTASOVIĆ TONČA
+NASTEVIĆ TODOR
+NASTIĆ IRENA
+NASTIĆ LEPOSAVA
+NASTIĆ MIHAILO
+NASTIĆ MILENA
+NASTIĆ MILICA
+NASTIĆ MIRJANA
+NASTIĆ NIKOLETA
+NASTIĆ OLGA
+NASTIĆ RADE
+NASTIĆ RADISAV
+NASTIĆ RADOMIR
+NASTIĆ RATOMIR
+NASTIĆ SVETOZAR
+NASTIĆ VLADA
+NASTIĆ ZORAN DR LEKAR
+NASTOV KIRO
+NASTOVSKI DRAGO
+NATOŠEVIĆ DEJAN
+NAUMOV ĐORĐE
+NAUMOV BRANKA
+NAUMOV DRAGOLJUB
+NAUMOV KATARINA
+NAUMOV KATARINA
+NAUMOV MILENA
+NAUMOV MILIVOJ
+NAUMOV STEVAN
+NAUMOVIĆ JELICA
+NAUMOVIĆ MILIVOJ DR
+NAUMOVIĆ NIKOLA
+NAUMOVIĆ SLOBODAN
+NAUMOVSKI MIRKO
+NAUMOVSKI NIKOLA
+NAUMOVSKI SONJA
+NAUMOVSKI STOJAN
+NAUMOVSKI TANAS
+NAUNKOVIĆ BOGDANKA
+NAUNKOVIĆ SINIŠA
+NAVALA NIKOLA
+NAVALUŠIĆ JULIJANA
+NAVALUŠIĆ VOJIN
+NAVRATIL ĐURA
+NAVRATIL JOSIP
+NAVRATIL JOSIP
+NAVRATIL SLOBODAN
+NAVRATIL ZDENKO
+NAVRATIL ZORAN
+NAZDRAVECKI ANDRAŠ
+NEČOVSKI DIMITRIJE
+NEŠEVIĆ ANĐELKA
+NEŠEVIĆ ANĐELKO
+NEŠIĆ ACA
+NEŠIĆ ALEKSANDAR
+NEŠIĆ ALEKSANDAR
+NEŠIĆ BOŽIDAR
+NEŠIĆ BRANISLAV DR
+NEŠIĆ BRANISLAV
+NEŠIĆ DIMITRIJE
+NEŠIĆ DUŠAN
+NEŠIĆ JEFTA
+NEŠIĆ JOVAN
+NEŠIĆ JOVAN
+NEŠIĆ JOVAN
+NEŠIĆ JOVAN
+NEŠIĆ KOSANA
+NEŠIĆ LENKA
+NEŠIĆ LEONID
+NEŠIĆ LJILJANA
+NEŠIĆ MARJAN
+NEŠIĆ MILAN
+NEŠIĆ MILAN
+NEŠIĆ MILAN
+NEŠIĆ MILENKO
+NEŠIĆ MILICA
+NEŠIĆ MILIVOJ
+NEŠIĆ MILKA
+NEŠIĆ MILORAD
+NEŠIĆ MIRA
+NEŠIĆ MIRKO
+NEŠIĆ MIROSLAVA
+NEŠIĆ MLADEN
+NEŠIĆ MLADEN
+NEŠIĆ NEDELJKO
+NEŠIĆ PETAR
+NEŠIĆ RADISAV
+NEŠIĆ SAVETA
+NEŠIĆ SIMEON
+NEŠIĆ SLAVKO
+NEŠIĆ SLAVOJKA
+NEŠIĆ TODOR
+NEŠIĆ VLADIMIR
+NEŠIN ŽARKO
+NEŠIN JOVANA
+NEŠIN JOVAN
+NEŠIN MARKO
+NEŠIN STEVAN
+NEŠKOV DRAGOSLAV DR
+NEŠKOV STANISLAV
+NEŠKOV VOJISLAV
+NEŠKOVIĆ ĐURĐA
+NEŠKOVIĆ ALEKSANDAR
+NEŠKOVIĆ DRAGAN
+NEŠKOVIĆ IRENA
+NEŠKOVIĆ JELENA
+NEŠKOVIĆ LJUBIŠA
+NEŠKOVIĆ MIHAILO
+NEŠKOVIĆ MILAN
+NEŠKOVIĆ MILIJAN
+NEŠKOVIĆ MILISAV
+NEŠKOVIĆ MILIVOJE
+NEŠKOVIĆ MILKA
+NEŠKOVIĆ MILOVAN
+NEŠKOVIĆ MITA
+NEŠKOVIĆ NEŠKO
+NEŠKOVIĆ PERICA
+NEŠKOVIĆ PETAR
+NEŠKOVIĆ RADISAV
+NEŠKOVIĆ RADOMIR
+NEŠKOVIĆ RADONJA
+NEŠKOVIĆ REJMOND
+NEŠKOVIĆ RUŽICA
+NEŠKOVIĆ STEVAN
+NEŠKOVIĆ-ZDRAVIĆ VERICA
+NEŠOVIĆ DESANKA
+NEŠOVIĆ DRAGAN DIPL ING
+NEŠOVIĆ DRAGANA
+NEŠOVIĆ DRAGAN
+NEŠOVIĆ IVANKA
+NEŠOVIĆ MILOVAN
+NEŠOVIĆ PREDRAG
+NEŠOVIĆ RADOMIR
+NEŠOVIĆ RUŽICA
+NEŠOVIĆ TRIVKA
+NEŠTICKI JOSIP
+NEŠTICKI JOSIP
+NEŠTICKI MILICA
+NEŠTICKI STEVAN
+NEĆAK ĐORĐE
+NEĆAK ALEKSANDAR
+NEĆAK BRANKO
+NEĆAK-KORAĆ ANĐELKA
+NEĆAK STEVAN
+NEĆAK VERA
+NEĆAK ZDRAVKO
+NEĆAKOV MARIJA
+NEĆAKOV MILAN
+NEĆAKOV MILKA
+NEĆAKOV SIMA
+NEĆAKOV SLOBODAN
+NEŽIĆ DAMIR
+NEATNICA DUŠAN
+NEATNICA RADIVOJ DIPL ING
+NEBESNI BORIS
+NEBOJŠA SOFIJA
+NEBRIGIĆ JOVICA
+NEBRIGIĆ RATKO
+NECEV DRAGOLJUB
+NECIĆ DRAGOLJUB
+NECIĆ TOŠA
+NECIN ŽIVICA
+NECIN STEVA
+NECIN VOJA
+NECIN ZLATOMIR
+NECKOV DRAGINJA
+NECKOV GORAN
+NECKOV KATICA
+NECKOV LAZAR
+NECKOV LOZINKA
+NECKOV MARIJA
+NECKOV MIRJANA
+NECKOV MOMČILO
+NECKOV NIKOLA
+NEDELJKOV ŽIVKO
+NEDELJKOV ŽIVKO
+NEDELJKOV ĐORĐE
+NEDELJKOV ĐORĐE
+NEDELJKOV ĐORĐE
+NEDELJKOV ANĐELKA
+NEDELJKOV ANKA
+NEDELJKOV DESANKA
+NEDELJKOV DRAGAN
+NEDELJKOV DRAGINJA
+NEDELJKOV DUŠAN
+NEDELJKOV ILIJA
+NEDELJKOV IRENA
+NEDELJKOV IVAN
+NEDELJKOV JELENA
+NEDELJKOV JOVAN
+NEDELJKOV JOVAN
+NEDELJKOV JULIJANA
+NEDELJKOV KATICA
+NEDELJKOV KRSTA
+NEDELJKOV LAZAR DIPL ING
+NEDELJKOV LINA
+NEDELJKOV LJILJANA
+NEDELJKOV LJUBICA
+NEDELJKOV LJUBICA
+NEDELJKOV MARIJA
+NEDELJKOV MARIJA
+NEDELJKOV MARKO
+NEDELJKOV MILAN
+NEDELJKOV MILAN
+NEDELJKOV MILIVOJ
+NEDELJKOV MILOŠ
+NEDELJKOV MIRJANA
+NEDELJKOV MIRKO
+NEDELJKOV MIROSLAVA
+NEDELJKOV MITA
+NEDELJKOV OLGA
+NEDELJKOV OLGA
+NEDELJKOV RADE
+NEDELJKOV RADIVOJ
+NEDELJKOV RADOJKA
+NEDELJKOV RADOMIR
+NEDELJKOV SINIŠA
+NEDELJKOV STEVAN
+NEDELJKOV TEODORA
+NEDELJKOV TOMISLAV
+NEDELJKOV VINKA
+NEDELJKOV VOJISLAV
+NEDELJKOVIĆ ŽIVKO
+NEDELJKOVIĆ ŽIVKO
+NEDELJKOVIĆ ŽIVKO
+NEDELJKOVIĆ ŽIVOJIN
+NEDELJKOVIĆ ĐORĐE
+NEDELJKOVIĆ ĐORĐE
+NEDELJKOVIĆ ALEKSANDAR
+NEDELJKOVIĆ ALEKSANDAR
+NEDELJKOVIĆ ANDRIJA
+NEDELJKOVIĆ BOGOMIR
+NEDELJKOVIĆ BORISLAV DIPL ING
+NEDELJKOVIĆ BORKA
+NEDELJKOVIĆ BOSILJKA
+NEDELJKOVIĆ DARINKA
+NEDELJKOVIĆ DOBRILA
+NEDELJKOVIĆ DOBRINKA
+NEDELJKOVIĆ DRAGAN
+NEDELJKOVIĆ JADRANKA
+NEDELJKOVIĆ JELENA
+NEDELJKOVIĆ JORDAN
+NEDELJKOVIĆ JOVAN
+NEDELJKOVIĆ JOVAN
+NEDELJKOVIĆ JUGOSLAV
+NEDELJKOVIĆ JULKICA
+NEDELJKOVIĆ JUSTA
+NEDELJKOVIĆ LEPOSAVA
+NEDELJKOVIĆ LJUBOMIR
+NEDELJKOVIĆ MARKO
+NEDELJKOVIĆ MILAN
+NEDELJKOVIĆ MILAN
+NEDELJKOVIĆ MILAN
+NEDELJKOVIĆ MILENKO
+NEDELJKOVIĆ MILIJA
+NEDELJKOVIĆ MILISAV
+NEDELJKOVIĆ MILOJKA
+NEDELJKOVIĆ MILOJKA
+NEDELJKOVIĆ MILUTIN
+NEDELJKOVIĆ MIRJANA
+NEDELJKOVIĆ MIROSLAV
+NEDELJKOVIĆ MIROSLAV
+NEDELJKOVIĆ NEBOJŠA
+NEDELJKOVIĆ NIKOLA
+NEDELJKOVIĆ PAVA
+NEDELJKOVIĆ RADOJICA
+NEDELJKOVIĆ RADOMIR
+NEDELJKOVIĆ RADOVAN
+NEDELJKOVIĆ SIMA
+NEDELJKOVIĆ SIMA
+NEDELJKOVIĆ SLAVKO
+NEDELJKOVIĆ SLOBODANKA
+NEDELJKOVIĆ SLOBODANKA
+NEDELJKOVIĆ SLOBODAN
+NEDELJKOVIĆ SOFIJA
+NEDELJKOVIĆ SRETA
+NEDELJKOVIĆ STANIMIR
+NEDELJKOVIĆ STEVAN
+NEDELJKOVIĆ STEVAN
+NEDELJKOVIĆ STEVAN
+NEDELJKOVIĆ SVETISLAV
+NEDELJKOVIĆ SVETISLAV
+NEDELJKOVIĆ SVETOZAR
+NEDELJKOVIĆ VERA
+NEDELJKOVIĆ VERICA
+NEDELJKOVIĆ VLADISLAV DR
+NEDELJKOVIĆ VOJISLAV
+NEDELJKOVIĆ VUČKO
+NEDELJKOVIĆ ZAGORKA
+NEDELJKOVIĆ ZLATA
+NEDIĆ ŠPIRO
+NEDIĆ BILJANA
+NEDIĆ BORISLAV
+NEDIĆ BORJANKA
+NEDIĆ DARINKA
+NEDIĆ DESANKA PROFESOR
+NEDIĆ DRAGOSLAV
+NEDIĆ JELENA
+NEDIĆ JELISAVETA
+NEDIĆ JOVAN DIPL ING
+NEDIĆ JOVAN
+NEDIĆ KATICA
+NEDIĆ KATICA
+NEDIĆ LAZAR
+NEDIĆ LAZAR
+NEDIĆ LAZAR
+NEDIĆ LAZAR
+NEDIĆ LJUBICA
+NEDIĆ MELANIJA
+NEDIĆ MILAN
+NEDIĆ MILAN
+NEDIĆ MILAN
+NEDIĆ MILENKO
+NEDIĆ MILOŠ
+NEDIĆ MILOJE
+NEDIĆ MILOVAN
+NEDIĆ MIROSLAV
+NEDIĆ MLADEN
+NEDIĆ NENAD
+NEDIĆ NIKOLA
+NEDIĆ PETAR
+NEDIĆ RADOŠ
+NEDIĆ RADOMIR
+NEDIĆ RADOSLAV
+NEDIĆ RADOSLAV
+NEDIĆ SAVA
+NEDIĆ SMILJA
+NEDIĆ SNEŽANA
+NEDIĆ-SREMAC NADA
+NEDIĆ STEVAN
+NEDIĆ VERA
+NEDIĆ VIDA
+NEDIĆ VLADIMIR
+NEDIĆ ZLATOJE
+NEDIĆ ZORAN
+NEDIMOVIĆ BOŽO
+NEDIMOVIĆ DRAGAN
+NEDIMOVIĆ GORDANA
+NEDINIĆ SRETEN
+NEDINIĆ ZORAN
+NEDOMAČKI MILAN
+NEDOMAČKI STEVAN
+NEDOVIĆ ANKICA
+NEDOVIĆ MIRO
+NEDOVIĆ MIRO
+NEDOVIĆ VLADO
+NEDUČIĆ SVETOZAR
+NEDUČIN ALEKSANDAR
+NEDUČIN DRAGICA
+NEDUČIN LAZAR DIPL ING
+NEDUČIN MILENA
+NEDVIDEK BORIS DR
+NEGLIĆ ĐORĐE
+NEGLIĆ KATICA
+NEGOVANOVIĆ ŽIVKO
+NEGOVANOVIĆ BRANKO
+NEGOVANOVIĆ LAZAR
+NEGRU BISERKA
+NEGUŠEVIĆ PAJA
+NEJGEBAUER ALEKSANDAR DR PROF
+NEMČANIN ĐURĐICA
+NEMČANIN MARIJA
+NEMČANIN MIRJANA
+NEMČEV BORIVOJ
+NEMČEV DUŠKO
+NEMČEV JELENA
+NEMČEV NIKOLA
+NEMČEV SRBINKO
+NEMČEVIĆ MARKO
+NEMČEVIĆ PETAR
+NEMA VALERIJA
+NEMEČEK ROŽA
+NEMEŠ JELA
+NEMEŠ SLOBODANKA
+NEMEC ANTUN
+NEMEC ANTUN
+NEMEC EMANUEL
+NEMEC LJUDMILA
+NEMET ŠANDOR
+NEMET ANDRIJA
+NEMET ANTAL
+NEMET ANTAL
+NEMET ANTAL
+NEMET ARPAD
+NEMET BORISLAVKA
+NEMET DEŽE
+NEMET DEJAN
+NEMET ERNEST
+NEMET GERGELJ
+NEMET GEZA DR
+NEMET GEZA
+NEMET IŠTVAN
+NEMET IŠTVAN
+NEMET IŠTVAN
+NEMET ILONA
+NEMET ILONA
+NEMET ILONKA
+NEMET JULIJANA
+NEMET KARLO
+NEMET KARLO
+NEMET KATICA
+NEMET LAJOŠ
+NEMET LASLO
+NEMET LASLO
+NEMET LJILJANA
+NEMET MARIJANA
+NEMET MARIJA
+NEMET MARIJA
+NEMET MIHALJ
+NEMET MILKA
+NEMET MIRJANA
+NEMET-MUČI MARIJA
+NEMET OLIVERA
+NEMET OTO
+NEMET PETAR
+NEMET ROZALIJA
+NEMET RUDOLF
+NEMET STEVAN
+NEMET STOJANKA
+NEMET TIBOR
+NEMET VIOLETA
+NEMET ZOLTAN
+NEMET ZOLTAN
+NEMETH IRENA
+NENAD SIMO
+NENADIĆ MILAN
+NENADIĆ MILENKO
+NENADIĆ MILORAD
+NENADIĆ RATKO
+NENADOV ŽIVKO
+NENADOV AMALIJA
+NENADOV ANKA
+NENADOV BRANISLAV
+NENADOV DRAGOMIR
+NENADOV JEVROSIMA
+NENADOV KAMENKO
+NENADOV KOSTA DIPL ING
+NENADOV MILENKO
+NENADOV MILENKO
+NENADOV OLGA
+NENADOV PETAR
+NENADOV RAJKO
+NENADOV STEVAN
+NENADOV VOJISLAV
+NENADOVIĆ BORISLAV
+NENADOVIĆ DANICA
+NENADOVIĆ DRAGICA
+NENADOVIĆ DUŠAN
+NENADOVIĆ JULKICA
+NENADOVIĆ MIHAJLO
+NENADOVIĆ MILENKO DR
+NENADOVIĆ MITAR
+NENADOVIĆ PANTA
+NENADOVIĆ PETAR
+NENADOVIĆ SLAVNA
+NENADOVIĆ SLOBODAN
+NENADOVIĆ VASILIJE
+NENEZIĆ ĐORĐE
+NENEZIĆ DARKO
+NENEZIĆ MIROSLAV
+NENEZIĆ RADENKO
+NENEZIĆ RADISAV
+NENIĆ ĐORĐE
+NENIĆ BRANIMIR
+NENIĆ SAVA
+NENIĆ VERA
+NENIĆ VERICA
+NENIN ŽIVKO
+NENIN DEJAN
+NENIN DRAGINJA
+NENIN DRAGOMIR
+NENIN JASENKA
+NENIN LENKA
+NENIN MARA
+NENIN MILAN
+NENIN MILICA
+NENIN MILICA
+NENIN MILORAD
+NENIN MIRKO
+NENIN RAJKO
+NENIN SAVA
+NENIN SLAVKO
+NENIN TOMISLAV
+NENIN VASA
+NEOFITOVIĆ DEJAN
+NEPIL ANTUN
+NEPOKOJČICKI ALEKSANDAR
+NERA ORLEANA
+NERAC MLADINKO
+NERAC PERO
+NERAC SLOBODAN
+NERANČIĆ NIKOLA
+NERANDŽIĆ BOŠKO
+NERANDŽIĆ BRANISLAV
+NERANDŽIĆ JASMINA
+NERANDŽIĆ MAKSIM
+NERANDŽIĆ NEVENKA
+NERANDŽIĆ STOJANKA
+NERER ĐURA
+NERER ALEKSANDAR
+NERTICA STEVAN
+NESKALIĆ EVGENIJE
+NESKALIĆ LEONARDO
+NESTOROV ŽELJKO
+NESTOROV ALEKSANDAR
+NESTOROV DRAGOLJUB
+NESTOROV LAZAR
+NESTOROV MILAN DIPL ING
+NESTOROV MIRKO
+NESTOROV SLOBODAN
+NESTOROVIĆ ŽIVOTA
+NESTOROVIĆ BILJANA
+NESTOROVIĆ BLAGOJE
+NESTOROVIĆ BOJANA
+NESTOROVIĆ BORIS
+NESTOROVIĆ DRAGAN
+NESTOROVIĆ DRAGOLJUB
+NESTOROVIĆ DRAGUTIN
+NESTOROVIĆ DUŠANKA
+NESTOROVIĆ GAVRA
+NESTOROVIĆ ISA
+NESTOROVIĆ LJILJANA
+NESTOROVIĆ MILE
+NESTOROVIĆ NADA
+NESTOROVIĆ NADEŽDA
+NESTOROVIĆ RADMILA
+NESTOROVIĆ RADOVAN
+NESTOROVIĆ SAVA
+NESTOROVIĆ SLAVICA
+NESTOROVIĆ SLOBODAN
+NESTOROVIĆ VLADIMIR
+NESTOROVIĆ VLADIMIR
+NEVAJDIĆ VELIMIR
+NEVIDOVČIĆ LJUBICA
+NEVIDOVČIĆ MILKA
+NEVIDOVČIĆ SAVA
+NEVOLIĆ ANICA
+NEZIRI ARIF
+NEZIROV ALJILJ
+NEZIROV VELIČKO
+NIČIĆ NADA
+NIČIĆ PREDRAG
+NIŠAVIĆ KRISTINA
+NIŠAVIĆ MILUTIN
+NIŠAVIĆ PAVLE
+NIŠAVIĆ RADOSLAV
+NIŠEVIĆ ĐORĐE
+NIŠEVIĆ ĐURA
+NIŠEVIĆ JOVICA
+NIŠEVIĆ KATICA
+NIŠEVIĆ OLGA
+NIŠEVIĆ SAVA
+NIŠIĆ DRAGAN
+NIŠIĆ MLAĐEN
+NIŠKANOVIĆ BOŠKO
+NIŠKANOVIĆ LJUPKO
+NIŠKANOVIĆ MIRKO
+NIĆETIĆ LJUBOMIR
+NIĆETIĆ MIRA
+NIĆIFOROVIĆ JOVAN
+NIĆIFOROVIĆ PERA
+NIĆIFOROVIĆ PETAR
+NIĆIFOROVIĆ TEODOR
+NIĆIN ĐORĐE
+NIĆIN ALEKSANDAR
+NIĆIN BRANISLAV
+NIĆIN DONKA
+NIĆIN DUŠKO
+NIĆIN MIROSLAV
+NIĆIN NEVENKA
+NIĆIN NIĆIFOR DIPL ING
+NIĆIN SNEŽANA
+NIĆIN SOFIJA
+NIĆIN SVETOZAR
+NIĆIN VASILIJE
+NIĆIN VERICA
+NIĆIN ZORA
+NICIĆ DARKO
+NIDERLENDER ĐORĐE
+NIDERLENIĆ ZORANA
+NIJEMČEVIĆ NIKOLA
+NIKČEVIĆ BOŠKO
+NIKČEVIĆ JOVAN
+NIKČEVIĆ LJUBOMIR
+NIKČEVIĆ MOMO
+NIKČEVIĆ RATKO
+NIKČEVIĆ STANA
+NIKŠIĆ ŽIVKO
+NIKŠIĆ ĐURA
+NIKŠIĆ CVETOZAR
+NIKŠIĆ DARKO
+NIKŠIĆ DRAGINJA
+NIKŠIĆ DRAGOLJUB
+NIKŠIĆ DUŠANKA
+NIKŠIĆ FRANJA
+NIKŠIĆ ISA
+NIKŠIĆ JULIJA
+NIKŠIĆ MILAN
+NIKŠIĆ MIRKO
+NIKŠIĆ MLADEN
+NIKŠIĆ STEVAN
+NIKŠIĆ VESNA
+NIKAČEV RADOVAN
+NIKAČEV RADOVAN
+NIKAČEVIĆ MIHOVIL
+NIKAČEVIĆ RADOMAN
+NIKAŠINOVIĆ LJILJANA
+NIKAŠINOVIĆ LJUBICA
+NIKETIĆ GORDANA
+NIKETIĆ GOSPAVA
+NIKETIĆ JEFTA
+NIKETIĆ KATICA
+NIKETIĆ NEBOJŠA DR
+NIKETIĆ PETAR
+NIKETIĆ SAŠA
+NIKETIĆ SIMA
+NIKETIĆ SLOBODAN
+NIKETIĆ VLADIMIR
+NIKEZIĆ MILA
+NIKEZIĆ PETAR
+NIKEZIĆ ROKSANDA
+NIKIĆ BRANISLAVA
+NIKIĆ BRANISLAV
+NIKIĆ BUDIMIR
+NIKIĆ DAJANA
+NIKIĆ DRAGAN
+NIKIĆ JOVANKA
+NIKIĆ JOVO
+NIKIĆ JOVO
+NIKIĆ KATICA
+NIKIĆ LAZAR
+NIKIĆ MARINKO
+NIKIĆ MILAN
+NIKIĆ MILE
+NIKIĆ MILUTIN
+NIKIĆ MIODRAG
+NIKIĆ MIRJANA
+NIKIĆ NADA
+NIKIĆ NATAŠA
+NIKIĆ NEVENKA
+NIKIĆ RADMILA
+NIKIĆ RADOMIR
+NIKIĆ RADOMIR
+NIKIĆ RADOMIR
+NIKIĆ SANJA
+NIKIĆ SAVA
+NIKIĆ VLADIMIR
+NIKIĆ ZDRAVKO
+NIKIĆ ZLATA
+NIKIĆ ZORA
+NIKIĆ ZORKA
+NIKIN BORISLAV
+NIKIN RADOMIR
+NIKIN VERA
+NIKITIŠIN NADA
+NIKITOVIĆ ČEDOMIR
+NIKITOVIĆ ALEKSANDAR
+NIKITOVIĆ ANGELINA
+NIKITOVIĆ BOŽO
+NIKITOVIĆ DUŠAN
+NIKITOVIĆ DUŠAN
+NIKITOVIĆ MIHAJLO
+NIKITOVIĆ MILIJANKA
+NIKITOVIĆ RADA
+NIKITOVIĆ RADOJICA
+NIKITOVIĆ SLOBODAN
+NIKOČEV ZORICA
+NIKODIJEVIĆ DUŠAN
+NIKODIJEVIĆ ENESA
+NIKODIJEVIĆ RADOJKO
+NIKODIJEVIĆ RATOMIR
+NIKODINOVSKI STOJAN DIPL ING
+NIKOLČIĆ BLAŽO
+NIKOLČIĆ DRAGAN
+NIKOLČIĆ SVETLANA
+NIKOLČIN MILOŠ
+NIKOLČIN MIRJANA
+NIKOLAŠEV BORIVOJ
+NIKOLAŠEV JOVA
+NIKOLAŠEV LJUBOMIR
+NIKOLAŠEV MATILDA
+NIKOLAŠEV NADA
+NIKOLAJEV JELENA
+NIKOLAJEV LAZAR
+NIKOLAJEV MILICA
+NIKOLAJEVIĆ DIMITRIJE
+NIKOLAJEVIĆ DUŠAN
+NIKOLAJEVIĆ IRENA
+NIKOLAJEVIĆ MILIVOJ AKADEMSKI SLIKAR
+NIKOLAJEVIĆ NIKOLA
+NIKOLAJEVIĆ RADIVOJ
+NIKOLAJEVIĆ VOJISLAV
+NIKOLAJEVSKI ALEKSANDAR
+NIKOLETIĆ BORA
+NIKOLETIĆ DRAGAN
+NIKOLETIĆ DUŠANKA
+NIKOLETIĆ DUŠAN
+NIKOLETIĆ DUŠAN
+NIKOLETIĆ JOVANKA
+NIKOLETIĆ JOVAN
+NIKOLETIĆ JOVAN
+NIKOLETIĆ JOVAN
+NIKOLETIĆ JOVAN
+NIKOLETIĆ MILAN
+NIKOLETIĆ MILOŠ
+NIKOLETIĆ MILOVAN
+NIKOLETIĆ SIMO
+NIKOLETIĆ STEVAN
+NIKOLETIĆ SVETOZAR
+NIKOLETIĆ VID
+NIKOLETIĆ ZORAN
+NIKOLIČIN BRANKO
+NIKOLIČIN DANILO
+NIKOLIČIN ZORAN
+NIKOLIŠ DRAGUTIN
+NIKOLIŠ EVICA
+NIKOLIŠ MILAN
+NIKOLIĆ-ČANJI BARBARA
+NIKOLIĆ-ŠIKOPARIJA NEVENKA
+NIKOLIĆ ĆIRILO
+NIKOLIĆ ŽARKO
+NIKOLIĆ ŽARKO
+NIKOLIĆ ŽARKO
+NIKOLIĆ ŽARKO
+NIKOLIĆ ŽIVAN
+NIKOLIĆ ŽIVAN
+NIKOLIĆ ŽIVAN
+NIKOLIĆ ŽIVAN
+NIKOLIĆ ŽIVA
+NIKOLIĆ ŽIVKA
+NIKOLIĆ ŽIVKA
+NIKOLIĆ ŽIVKO
+NIKOLIĆ ŽIVKO
+NIKOLIĆ ŽIVORAD
+NIKOLIĆ ŽIVORAD
+NIKOLIĆ ŽIVORAD
+NIKOLIĆ ŽIVOTA
+NIKOLIĆ ŽIVOTA
+NIKOLIĆ ĐORĐE PROFESOR
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐORĐE
+NIKOLIĆ ĐURĐINKA
+NIKOLIĆ ĐURĐINKA
+NIKOLIĆ ĐURA
+NIKOLIĆ ĐURA
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ ALEKSANDAR
+NIKOLIĆ-ALEKSOVSKI SLAVICA
+NIKOLIĆ ANA
+NIKOLIĆ ANDRIJA
+NIKOLIĆ ANKA
+NIKOLIĆ ANKICA
+NIKOLIĆ-BAJŠEV STANKA
+NIKOLIĆ BILJANA
+NIKOLIĆ BISERKA
+NIKOLIĆ BOŠKO
+NIKOLIĆ BOŠKO
+NIKOLIĆ BOŠKO
+NIKOLIĆ BOŽIDAR
+NIKOLIĆ BOŽIDAR
+NIKOLIĆ BOŽIDAR
+NIKOLIĆ BOŽIDAR
+NIKOLIĆ BOŽO
+NIKOLIĆ BOGDAN
+NIKOLIĆ BOJKA
+NIKOLIĆ BORA
+NIKOLIĆ BORA
+NIKOLIĆ BORISLAV
+NIKOLIĆ BORISLAV
+NIKOLIĆ BORISLAV
+NIKOLIĆ BORIVOJE
+NIKOLIĆ BORIVOJ
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANISLAV
+NIKOLIĆ BRANKO
+NIKOLIĆ BRANKO
+NIKOLIĆ BRANKO
+NIKOLIĆ BUDIMIR
+NIKOLIĆ CVETANKA
+NIKOLIĆ CVIJETA
+NIKOLIĆ-DŽAVER IVAN DIPL ING
+NIKOLIĆ DAMJAN
+NIKOLIĆ DAMJAN
+NIKOLIĆ DANA
+NIKOLIĆ DANICA
+NIKOLIĆ DANICA
+NIKOLIĆ DANICA
+NIKOLIĆ DANIEL
+NIKOLIĆ DANIJEL
+NIKOLIĆ DANILO
+NIKOLIĆ DANILO
+NIKOLIĆ DANKO
+NIKOLIĆ DARINKA
+NIKOLIĆ DAVORIN
+NIKOLIĆ DEJAN
+NIKOLIĆ DESANKA
+NIKOLIĆ DIMITRIJE
+NIKOLIĆ DOBRIVOJE
+NIKOLIĆ DRAŠKO
+NIKOLIĆ DRAGANA
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGAN
+NIKOLIĆ DRAGA
+NIKOLIĆ DRAGICA
+NIKOLIĆ DRAGICA
+NIKOLIĆ DRAGICA
+NIKOLIĆ DRAGOLJUB
+NIKOLIĆ DRAGOLJUB
+NIKOLIĆ DRAGOLJUB
+NIKOLIĆ DRAGOLJUB
+NIKOLIĆ DRAGOMIR
+NIKOLIĆ DRAGOMIR
+NIKOLIĆ DRAGOMIR
+NIKOLIĆ DRAGOSLAV
+NIKOLIĆ DRAGO
+NIKOLIĆ DRAGUTIN
+NIKOLIĆ DUŠAN DIPL ING
+NIKOLIĆ DUŠANKA
+NIKOLIĆ DUŠANKA
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠAN
+NIKOLIĆ DUŠKO
+NIKOLIĆ EMILIJA
+NIKOLIĆ EMIL
+NIKOLIĆ GORDANA
+NIKOLIĆ GORDANA
+NIKOLIĆ GORDANA
+NIKOLIĆ HILDA
+NIKOLIĆ HRISTINA
+NIKOLIĆ ILIJA
+NIKOLIĆ ISIDOR
+NIKOLIĆ IVANKA
+NIKOLIĆ IVAN
+NIKOLIĆ IVO
+NIKOLIĆ JAVORKA
+NIKOLIĆ JEFTA
+NIKOLIĆ JEFTIMIR
+NIKOLIĆ JEFTIMIR
+NIKOLIĆ JELENA
+NIKOLIĆ JELENA
+NIKOLIĆ JELKA
+NIKOLIĆ JELKA
+NIKOLIĆ JOCA
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVAN
+NIKOLIĆ JOVICA
+NIKOLIĆ JULIJANA
+NIKOLIĆ JULKA
+NIKOLIĆ KATARINA
+NIKOLIĆ KATICA
+NIKOLIĆ KATICA
+NIKOLIĆ KATICA
+NIKOLIĆ KOSTADIN
+NIKOLIĆ KOSTA
+NIKOLIĆ KRSTA DR
+NIKOLIĆ KRSTA
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LAZAR
+NIKOLIĆ LJILJANA
+NIKOLIĆ LJILJANA
+NIKOLIĆ LJILJANA
+NIKOLIĆ LJUBICA
+NIKOLIĆ LJUBICA
+NIKOLIĆ LJUBICA
+NIKOLIĆ LJUBICA
+NIKOLIĆ LUJZA
+NIKOLIĆ LUKA
+NIKOLIĆ MANOJLO
+NIKOLIĆ MARA
+NIKOLIĆ MARA
+NIKOLIĆ MARA
+NIKOLIĆ MARGITA
+NIKOLIĆ MARGITA
+NIKOLIĆ MARICA
+NIKOLIĆ MARIJA
+NIKOLIĆ MARIJA
+NIKOLIĆ MARIJA
+NIKOLIĆ MARIJA
+NIKOLIĆ MARKO
+NIKOLIĆ MARKO
+NIKOLIĆ MARKO
+NIKOLIĆ MELANIJA STOMATOLOG
+NIKOLIĆ MELANIJA
+NIKOLIĆ MIHAJLO
+NIKOLIĆ MIHAJLO
+NIKOLIĆ MIHAJLO
+NIKOLIĆ MILAŠIN
+NIKOLIĆ MILANA
+NIKOLIĆ MILANA
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILAN
+NIKOLIĆ MILENA
+NIKOLIĆ MILENKO
+NIKOLIĆ MILEVA
+NIKOLIĆ MILEVA
+NIKOLIĆ MILE
+NIKOLIĆ MILE
+NIKOLIĆ MILE
+NIKOLIĆ MILICA
+NIKOLIĆ MILICA
+NIKOLIĆ MILICA
+NIKOLIĆ MILIVOJE
+NIKOLIĆ MILKA
+NIKOLIĆ MILKA
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOŠ
+NIKOLIĆ MILOJKO
+NIKOLIĆ MILOMIR
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILORAD
+NIKOLIĆ MILOSAVA
+NIKOLIĆ MILOSAVA
+NIKOLIĆ MILOVAN
+NIKOLIĆ MILUTIN
+NIKOLIĆ MILUTIN
+NIKOLIĆ MILUTIN
+NIKOLIĆ MIODRAG DIPL ING
+NIKOLIĆ MIODRAG DR
+NIKOLIĆ MIODRAG DR
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIODRAG
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRJANA
+NIKOLIĆ MIRKO
+NIKOLIĆ MIRKO
+NIKOLIĆ MIROSLAV DIPL ING
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MIROSLAV
+NIKOLIĆ MITA
+NIKOLIĆ MITA
+NIKOLIĆ MITA
+NIKOLIĆ MLADENKA
+NIKOLIĆ MLADEN
+NIKOLIĆ MOMČILO
+NIKOLIĆ-MUŠICKI DARA
+NIKOLIĆ NADA
+NIKOLIĆ NADA
+NIKOLIĆ NADA
+NIKOLIĆ NADA
+NIKOLIĆ NADA
+NIKOLIĆ NADEŽDA
+NIKOLIĆ NEBOJŠA
+NIKOLIĆ NEDELJKA
+NIKOLIĆ NEDELJKO
+NIKOLIĆ NEDELJKO
+NIKOLIĆ NENAD DR
+NIKOLIĆ NENAD
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NIKOLA
+NIKOLIĆ NOVICA
+NIKOLIĆ NOVICA
+NIKOLIĆ NOVICA
+NIKOLIĆ OLGA
+NIKOLIĆ OSMAN
+NIKOLIĆ PAUN
+NIKOLIĆ PAVLE
+NIKOLIĆ PERA
+NIKOLIĆ PERO
+NIKOLIĆ PERSIDA
+NIKOLIĆ PETAR DIPL OEC
+NIKOLIĆ PETAR
+NIKOLIĆ PETAR
+NIKOLIĆ PETAR
+NIKOLIĆ PETRA
+NIKOLIĆ PETRA
+NIKOLIĆ PETRONIJE
+NIKOLIĆ PREDRAG
+NIKOLIĆ PRVOSLAV
+NIKOLIĆ RADENKO
+NIKOLIĆ RADISAV
+NIKOLIĆ RADIVOJE
+NIKOLIĆ RADOJICA
+NIKOLIĆ RADOJKA
+NIKOLIĆ RADOJKA
+NIKOLIĆ RADOMIR
+NIKOLIĆ RADOMIR
+NIKOLIĆ RADOMIR
+NIKOLIĆ RADOSLAVA
+NIKOLIĆ RADOSLAV
+NIKOLIĆ RADOVAN
+NIKOLIĆ RADOVAN
+NIKOLIĆ RADOVAN
+NIKOLIĆ RADOVAN
+NIKOLIĆ RADOVAN
+NIKOLIĆ RAJKO
+NIKOLIĆ RAJKO
+NIKOLIĆ RANKA
+NIKOLIĆ RATKO MR
+NIKOLIĆ RATOMIR
+NIKOLIĆ RATOMIR
+NIKOLIĆ RUŽA
+NIKOLIĆ RUŽICA
+NIKOLIĆ RUŽICA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVA
+NIKOLIĆ SAVETA
+NIKOLIĆ SAVKA
+NIKOLIĆ SAVO
+NIKOLIĆ SEĆERKA
+NIKOLIĆ SIMA
+NIKOLIĆ SIMEON
+NIKOLIĆ SIMEUN
+NIKOLIĆ SINIŠA
+NIKOLIĆ SINIŠA
+NIKOLIĆ SINIŠA
+NIKOLIĆ SLAĐANA
+NIKOLIĆ SLAVIŠA
+NIKOLIĆ SLAVICA
+NIKOLIĆ SLAVKO
+NIKOLIĆ SLAVNA
+NIKOLIĆ SLOBODANKA
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SLOBODAN
+NIKOLIĆ SMILJANA
+NIKOLIĆ SNEŽANA
+NIKOLIĆ SOFIJA
+NIKOLIĆ SOFIJA
+NIKOLIĆ SOFIJA
+NIKOLIĆ SPASENKA
+NIKOLIĆ SPASOJE
+NIKOLIĆ SPASOJE
+NIKOLIĆ SPASOJE
+NIKOLIĆ SRETA
+NIKOLIĆ SRETENKA
+NIKOLIĆ STANIMIR
+NIKOLIĆ STANIMIR
+NIKOLIĆ STANISLAV
+NIKOLIĆ STANKO
+NIKOLIĆ STEFANIJA
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVAN
+NIKOLIĆ STEVICA
+NIKOLIĆ STOJADIN
+NIKOLIĆ STOJAN
+NIKOLIĆ SUZANA
+NIKOLIĆ SVETISLAV
+NIKOLIĆ SVETISLAV
+NIKOLIĆ SVETOZAR
+NIKOLIĆ SVETOZAR
+NIKOLIĆ SVETOZAR
+NIKOLIĆ SVETOZAR
+NIKOLIĆ TAMARA
+NIKOLIĆ TATJANA
+NIKOLIĆ TEODOR
+NIKOLIĆ TEODOR
+NIKOLIĆ TIHOMIR
+NIKOLIĆ TIHOMIR
+NIKOLIĆ TODOR
+NIKOLIĆ TOMISLAV MR
+NIKOLIĆ TOMISLAV
+NIKOLIĆ TOMISLAV
+NIKOLIĆ TRENČA
+NIKOLIĆ VASILIJE
+NIKOLIĆ VEKOSLAV
+NIKOLIĆ VELIMIR
+NIKOLIĆ VELIMIR
+NIKOLIĆ VELJKO DR ING
+NIKOLIĆ VELJKO
+NIKOLIĆ VERA
+NIKOLIĆ VERA
+NIKOLIĆ VERA
+NIKOLIĆ VERA
+NIKOLIĆ VERICA
+NIKOLIĆ VESNA
+NIKOLIĆ VIDOSAVA
+NIKOLIĆ VITOMIR
+NIKOLIĆ VITOMIR
+NIKOLIĆ VITOMIR
+NIKOLIĆ VLADA
+NIKOLIĆ VLADIMIR
+NIKOLIĆ VLADIMIR
+NIKOLIĆ VLADIMIR
+NIKOLIĆ VLADIMIR
+NIKOLIĆ VLADISLAV DR
+NIKOLIĆ VOJISLAV DR DOCENT
+NIKOLIĆ VOJISLAV DR LEKAR
+NIKOLIĆ VOJISLAV
+NIKOLIĆ VUKAŠIN
+NIKOLIĆ VUKAŠIN
+NIKOLIĆ ZAGORKA
+NIKOLIĆ ZDRAVKO
+NIKOLIĆ ZDRAVKO
+NIKOLIĆ ZORAN
+NIKOLIĆ ZORAN
+NIKOLIĆ ZORAN
+NIKOLIĆ ZORA
+NIKOLIĆ ZORA
+NIKOLIĆ ZORA
+NIKOLIĆ ZORKA
+NIKOLIN ALEKSANDRA
+NIKOLIN ANA
+NIKOLIN BRANKO
+NIKOLIN DRAGOSLAVA DR
+NIKOLIN DUŠICA
+NIKOLIN ERŽEBET
+NIKOLIN IVICA
+NIKOLIN LAZAR DR LEKAR
+NIKOLIN LJUBIŠA
+NIKOLIN MARGITA
+NIKOLIN MILAN
+NIKOLIN MILICA
+NIKOLIN MILIVOJ
+NIKOLIN MILIVOJ
+NIKOLIN MIROSLAV
+NIKOLIN RADOVAN
+NIKOLIN RADOVAN
+NIKOLIN RUŽICA
+NIKOLIN SAVA
+NIKOLIN SINIŠA
+NIKOLIN SINIŠA
+NIKOLIN STIPAN
+NIKOLIN VESNA
+NIKOLIN VITOMIR
+NIKOLOSKI NIKOLA
+NIKOLOSKI SLAVICA
+NIKOLOV ĐORĐE
+NIKOLOV BOŠKO
+NIKOLOV JOCA
+NIKOLOV JOCA
+NIKOLOV LJUBICA
+NIKOLOV NINA
+NIKOLOV RAŠA
+NIKOLOV SINIŠA
+NIKOLOV STOJAN
+NIKOLOV TODOR
+NIKOLOVSKI ILIJA
+NIKOLOVSKI MILAN
+NIKOTIĆ VELIMIR
+NILIĆ NIKOLA
+NILOVIĆ MIROSLAV
+NIMRIHTER DRAGUTIN
+NIMRIHTER MILAN
+NIMRIHTER MIROSLAV
+NIMRIHTER VLADA
+NINČIĆ BISERKA
+NINČIĆ DAMJAN
+NINČIĆ MILENKO
+NINČIĆ PERO
+NINIĆ ALEKSA
+NINIĆ BRANISLAV
+NINIĆ MARKO
+NINIĆ MIRKO
+NINIĆ RADOJE
+NINIĆ RADOMIR
+NINKOV ŽIVKO
+NINKOV ĐORĐE
+NINKOV ĐORĐE
+NINKOV ĐORĐE
+NINKOV BOŽICA
+NINKOV BORISLAV
+NINKOV BORISLAV
+NINKOV BRANISLAV
+NINKOV DOBRIVOJ
+NINKOV DRAGOMIR
+NINKOV DUŠAN
+NINKOV DUŠAN
+NINKOV DUŠAN
+NINKOV EMILIJA
+NINKOV ERŽEBET
+NINKOV JELICA
+NINKOV JOVAN
+NINKOV JULIJAN MR
+NINKOV-KOMLENOV DANICA DR
+NINKOV LAZAR
+NINKOV LAZAR
+NINKOV-LEĐENAC JOVANKA DR
+NINKOV LJUBOMIR
+NINKOV LJUBOMIR
+NINKOV MARIJA
+NINKOV MARIJA
+NINKOV MILANA
+NINKOV MILAN
+NINKOV MILICA
+NINKOV MILOŠ
+NINKOV MILOŠ
+NINKOV MILOŠ
+NINKOV MILOVAN
+NINKOV MILOVAN
+NINKOV MILUTIN
+NINKOV MIRJANA
+NINKOV MIRKO
+NINKOV MIROSLAV
+NINKOV MIROSLAV
+NINKOV NADA
+NINKOV NEBOJŠA
+NINKOV NEBOJŠA
+NINKOV NIKOLA
+NINKOV OLGICA
+NINKOV RADICA
+NINKOV SAVETA DIPL ING
+NINKOV SAVETA
+NINKOV SLAVKO
+NINKOV SMILJA
+NINKOV SOFIJA
+NINKOV SPOMENKA
+NINKOV STEVAN
+NINKOV STEVAN
+NINKOV STEVAN
+NINKOV VELIMIR
+NINKOV VELJKO
+NINKOV VERICA
+NINKOV VLADIMIR
+NINKOV VOJISLAV
+NINKOVIĆ ŠPIRO
+NINKOVIĆ ŠPIRO
+NINKOVIĆ ĐURAĐ
+NINKOVIĆ ĐURA
+NINKOVIĆ ANKICA
+NINKOVIĆ BRANKO
+NINKOVIĆ DANICA
+NINKOVIĆ DRAGA
+NINKOVIĆ DUŠAN
+NINKOVIĆ ERIKA
+NINKOVIĆ GAVRA
+NINKOVIĆ JANKO
+NINKOVIĆ JOJA
+NINKOVIĆ JOVANKA
+NINKOVIĆ MARICA
+NINKOVIĆ MARKO
+NINKOVIĆ MIĆO
+NINKOVIĆ MIHAILO
+NINKOVIĆ MILAN
+NINKOVIĆ MILOŠ
+NINKOVIĆ MIRJANA
+NINKOVIĆ MIRJANA
+NINKOVIĆ NIKOLA
+NINKOVIĆ NIKOLA
+NINKOVIĆ PERA
+NINKOVIĆ PERO
+NINKOVIĆ PETAR
+NINKOVIĆ RADOMIR
+NINKOVIĆ RADOVAN
+NINKOVIĆ RAJKO
+NINKOVIĆ SRĐAN
+NINKOVIĆ STOJAN
+NINKOVIĆ SVETISLAV
+NINKOVIĆ VERA
+NISIM DESA
+NISTER EVA
+NISTOR DRAGAN
+NISTORAN ĐORĐE
+NISTORAN MILAN
+NJAGOJEV MILADIN
+NJAGRIN SLAVICA
+NJAGUL-DOKIĆ SRBISLAVA
+NJAGUL DUŠAN
+NJARADI EVGENIJE
+NJARADI JANKO
+NJARADI JOVGEN
+NJARADI MARIJA
+NJARADI SOFIJA
+NJARI ŠANDOR
+NJARI DEŽE
+NJEŽIĆ OBRAD
+NJEŽIĆ ZVONKO
+NJEGOMIR ĐURO
+NJEGOMIR LJUBINKA DR LEKAR
+NJEGOMIR MILAN
+NJEGOMIR NIKOLA
+NJEGOMIR NOVAK
+NJEGOVAN ŽARKO
+NJEGOVAN JOVANKA
+NJEGOVAN MARA
+NJEGOVAN MARIJA
+NJEGOVAN MIRKO
+NJEGOVAN MIRKO
+NJEGOVAN STOJANKA
+NJEGOVANOVIĆ ELENA
+NJEGRIĆ MARIJA
+NJEGRIĆ RADMILA
+NJEMČOK JOŽEF
+NJEMOGA JURAJ
+NJENJIĆ VLADO
+NJERGEŠ JANOŠ
+NJERGEŠ MARIJA
+NJIRE STEVAN
+NJIRJAK ĐORĐE
+NJIRJAK LEONA
+NJITRI KAROLJ
+NJUNJIĆ MILEVA
+NOČEVSKA VELIKA
+NOČEVSKI BILJANA
+NOČEVSKI RADE
+NOŽICA CVIJETA
+NOŽICA MILIVOJE
+NOŽINIĆ DARA
+NOŽINIĆ LJUBICA
+NOŽINIĆ MILAN
+NOŽINIĆ NIKOLA
+NOLA TIMNJA
+NOLIN ĐURĐINKA
+NONIN ANĐELKA
+NONIN DUŠAN
+NONIN MILORAD
+NONIN NIKOLA
+NONIN SONJA
+NONIN VITOMIR
+NONKOVIĆ MILAN
+NONKOVIĆ MILORAD
+NOSAK ĐORĐE
+NOSAK MIKLOŠ
+NOSALJ MIŠA
+NOSEK EVICA
+NOSEK FRANJA
+NOSEK KARLO
+NOSEK KSENIJA
+NOSEK ZORAN
+NOSONJIN LENKA
+NOSONJIN MILAN
+NOSONJIN SAVA
+NOSOVIĆ ĐORĐE
+NOSOVIĆ DANICA
+NOSOVIĆ JANKO
+NOSOVIĆ JOVAN
+NOSOVIĆ JOVAN
+NOSOVIĆ ZORAN
+NOTA JANKO
+NOTAROŠ DARINKA
+NOTAROŠ DEJAN
+NOTAROŠ MILAN
+NOTHOF EVA
+NOTHOF ZOLTAN
+NOVČIĆ BUDIMIR
+NOVČIĆ DAMNJAN
+NOVČIĆ DUŠAN
+NOVČIĆ STANA
+NOVČIĆ STANA
+NOVČIĆ TATJANA
+NOVČIĆ VLADIMIR
+NOVAČIĆ ĐURA
+NOVAČIĆ ĐURO
+NOVAČIĆ PERSIDA
+NOVAK ĐORĐE
+NOVAK ANDRIJA
+NOVAK ANTAL
+NOVAK BOŠKO
+NOVAK DRAGICA
+NOVAK DUŠANKA
+NOVAK FRANJA
+NOVAK IŠTVAN
+NOVAK IRENA
+NOVAK IVAN
+NOVAK JANA
+NOVAK JANOŠ
+NOVAK JOSIP
+NOVAK JOSIP
+NOVAK JOVAN
+NOVAK LADISLAV MR
+NOVAK LASLO
+NOVAK LAZAR
+NOVAK LJUBOMIR
+NOVAK MARGITA
+NOVAK MARIJA
+NOVAK MATILDA
+NOVAK MIHALJ
+NOVAK NANDOR
+NOVAK NIKOLA
+NOVAK SLAVKA
+NOVAK STEVAN
+NOVAK STEVAN
+NOVAK STJEPAN
+NOVAK TIBOR
+NOVAK-VAJDA LJILJANA
+NOVAK VASILIJA
+NOVAK VERA
+NOVAK VERONA
+NOVAK VIKTOR
+NOVAKOV ČEDOMIR
+NOVAKOV ANĐELKO
+NOVAKOV BORISLAV
+NOVAKOV DRAGOLJUB MR
+NOVAKOV DUŠAN
+NOVAKOV GORDANA
+NOVAKOV GOSPAVA DR
+NOVAKOV JELICA
+NOVAKOV LAZAR
+NOVAKOV LJUBINKA
+NOVAKOV LJUBOMIR
+NOVAKOV MARINA
+NOVAKOV MILAN
+NOVAKOV MILICA
+NOVAKOV MILIVOJ
+NOVAKOV MILORAD
+NOVAKOV MIROSLAV
+NOVAKOV NADA
+NOVAKOV PREDRAG
+NOVAKOV PREDRAG
+NOVAKOV RADOVAN DIPL ING
+NOVAKOV SAVA
+NOVAKOV SAVA
+NOVAKOV SRBISLAV
+NOVAKOV SRETEN
+NOVAKOV SRETEN
+NOVAKOV STEVAN DR
+NOVAKOV STEVAN
+NOVAKOV VALERIJA
+NOVAKOV VESELIN
+NOVAKOV ZDRAVKO
+NOVAKOVIĆ ŽIVAN
+NOVAKOVIĆ ŽIVAN
+NOVAKOVIĆ ŽIVKO
+NOVAKOVIĆ ŽIVOJIN
+NOVAKOVIĆ ĐORĐE
+NOVAKOVIĆ ĐUJA
+NOVAKOVIĆ ĐURO
+NOVAKOVIĆ ALEKSANDAR
+NOVAKOVIĆ ANĐELKA
+NOVAKOVIĆ ANA
+NOVAKOVIĆ ANKA
+NOVAKOVIĆ BOŠKO DR PROF
+NOVAKOVIĆ BOGDAN
+NOVAKOVIĆ BRANISLAVA
+NOVAKOVIĆ BRANISLAV
+NOVAKOVIĆ BRANKO
+NOVAKOVIĆ BRANKO
+NOVAKOVIĆ CVETKO DR
+NOVAKOVIĆ CVIJETA
+NOVAKOVIĆ DANA
+NOVAKOVIĆ DANICA
+NOVAKOVIĆ DIMITRIJE
+NOVAKOVIĆ DRAGAN
+NOVAKOVIĆ DRAGAN
+NOVAKOVIĆ DRAGA
+NOVAKOVIĆ DRAGOLJUB
+NOVAKOVIĆ DRAGOLJUB
+NOVAKOVIĆ DRAGOSLAV
+NOVAKOVIĆ DUŠANKA
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ DUŠAN
+NOVAKOVIĆ FRANJO
+NOVAKOVIĆ GORDANA
+NOVAKOVIĆ GORICA
+NOVAKOVIĆ GROZDA
+NOVAKOVIĆ INĐIJA
+NOVAKOVIĆ JELENA
+NOVAKOVIĆ JELENA
+NOVAKOVIĆ JOVANKA
+NOVAKOVIĆ JOVAN
+NOVAKOVIĆ JOVAN
+NOVAKOVIĆ KOSA
+NOVAKOVIĆ LAZAR
+NOVAKOVIĆ LEPOSAVA
+NOVAKOVIĆ LJILJANA
+NOVAKOVIĆ LJUBOMIR
+NOVAKOVIĆ LJUBOMIR
+NOVAKOVIĆ MARICA
+NOVAKOVIĆ MARIJA
+NOVAKOVIĆ MARIJA
+NOVAKOVIĆ MARIJA
+NOVAKOVIĆ MELANIJA
+NOVAKOVIĆ MIŠO
+NOVAKOVIĆ-MIDI DIVNA DIPL TURIZM
+NOVAKOVIĆ MIJODRAG
+NOVAKOVIĆ MILAN
+NOVAKOVIĆ MILAN
+NOVAKOVIĆ MILAN
+NOVAKOVIĆ MILOŠ
+NOVAKOVIĆ MILOŠ
+NOVAKOVIĆ MILORAD
+NOVAKOVIĆ MILORAD
+NOVAKOVIĆ MILORAD
+NOVAKOVIĆ MILORAD
+NOVAKOVIĆ MILOVAN
+NOVAKOVIĆ MILOVAN
+NOVAKOVIĆ MIODRAG DR
+NOVAKOVIĆ MIODRAG
+NOVAKOVIĆ MLADEN
+NOVAKOVIĆ MOMČILO
+NOVAKOVIĆ NADA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ NIKOLA
+NOVAKOVIĆ OLIVER
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ PETAR
+NOVAKOVIĆ-PLAVŠIĆ JELENA
+NOVAKOVIĆ RADMILO
+NOVAKOVIĆ RADOJKA
+NOVAKOVIĆ RADOMIR
+NOVAKOVIĆ RADOMIR
+NOVAKOVIĆ RADOMIR
+NOVAKOVIĆ RADOVAN
+NOVAKOVIĆ RAJKO
+NOVAKOVIĆ RANKO
+NOVAKOVIĆ ROSANKA
+NOVAKOVIĆ RUŽICA
+NOVAKOVIĆ SAVA
+NOVAKOVIĆ SAVA
+NOVAKOVIĆ SLAVKO
+NOVAKOVIĆ SLOBODAN
+NOVAKOVIĆ SLOBODAN
+NOVAKOVIĆ SLOBODAN
+NOVAKOVIĆ SOFIJA
+NOVAKOVIĆ SPASOJA
+NOVAKOVIĆ SPOMENKA
+NOVAKOVIĆ STANISLAV
+NOVAKOVIĆ STEVAN DIPL ING
+NOVAKOVIĆ STEVAN
+NOVAKOVIĆ STEVAN
+NOVAKOVIĆ STEVAN
+NOVAKOVIĆ STEVO
+NOVAKOVIĆ STOJAN
+NOVAKOVIĆ SVETOMIR
+NOVAKOVIĆ VELIMIR
+NOVAKOVIĆ VELINKA
+NOVAKOVIĆ VERICA
+NOVAKOVIĆ VESNA
+NOVAKOVIĆ VIDOJE
+NOVAKOVIĆ VITKO
+NOVAKOVIĆ VLADIMIR DIPL ING
+NOVAKOVIĆ VLADIMIR
+NOVAKOVIĆ VLADIMIR
+NOVAKOVIĆ VLADISLAV
+NOVAKOVIĆ ZLATOMIR
+NOVAKOVIĆ ZORA
+NOVAKOVIĆ ZORICA
+NOVAKOVIĆ ZORICA
+NOVIČIĆ MILOŠ
+NOVIĆ ČEDO
+NOVIĆ-ČULJAK LJUBICA
+NOVIĆ DANICA
+NOVIĆ DUŠAN
+NOVIĆ JOVAN
+NOVIĆ MILAN
+NOVIĆ MILAN
+NOVIĆ MIROSLAV
+NOVIĆ MIROSLAV
+NOVIĆ MITAR
+NOVIĆ NIKOLA
+NOVIĆ PANTELIJA
+NOVIĆ PERSIDA
+NOVIĆ TATJANA
+NOVIĆ TOMA
+NOVIĆ VLAJKO
+NOVICKI ALEKSA
+NOVIKOV VERA
+NOVINC IVAN
+NOVITOVIĆ MARKO
+NOVKOV ŽIVOJIN
+NOVKOV DOBRILA
+NOVKOV GAVRA
+NOVKOV JOVAN
+NOVKOV MILAN
+NOVKOV NADA
+NOVKOV STEVAN
+NOVKOV STEVAN
+NOVKOV ZAGORKA
+NOVKOVIĆ ĐORĐE
+NOVKOVIĆ ANKA
+NOVKOVIĆ BILJANA
+NOVKOVIĆ DRAGICA
+NOVKOVIĆ DRAGINJA
+NOVKOVIĆ DUŠAN
+NOVKOVIĆ DUŠAN
+NOVKOVIĆ DUŠAN
+NOVKOVIĆ DUŠAN
+NOVKOVIĆ ELFRIDA
+NOVKOVIĆ ELIZABETA
+NOVKOVIĆ JOVAN
+NOVKOVIĆ MIHAJLO
+NOVKOVIĆ MILAN
+NOVKOVIĆ MILINKO
+NOVKOVIĆ MILOŠ
+NOVKOVIĆ MIRJANA
+NOVKOVIĆ MOMČILO
+NOVKOVIĆ MOMČILO
+NOVKOVIĆ NADA
+NOVKOVIĆ NEBOJŠA DR
+NOVKOVIĆ NIKOLA
+NOVKOVIĆ ROSA
+NOVKOVIĆ SMILJKA
+NOVKOVIĆ STANKO
+NOVKOVIĆ VLADA
+NOVKOVIĆ VUKAŠIN
+NOVOSEL GORDANA
+NOVOSEL MARIJA
+NOVOSEL NADA
+NOVOSEL RAJKO
+NOVOSELAC KATICA
+NOVOSELAC STEVAN
+NOVOSELAC ZVONIMIR
+NOVOSELJAČKI MILIVOJ
+NOVOSELOVSKI ANGEL
+NOVOT LADISLAV
+NOVOT PAVLE
+NOVOVIĆ ŽIVOJIN
+NOVOVIĆ BATRIĆ
+NOVOVIĆ BILJANA
+NOVOVIĆ DRAGAN
+NOVOVIĆ GORDANA
+NOVOVIĆ MINA
+NOVOVIĆ NADA
+NOVOVIĆ VLADO
+NOVOVIĆ ZDENKA
+NOVTA NIKOLA DR
+NOVTA VLADIMIR
+NOVTA VLADIMIR
+NUŽDIĆ MILAN
+NUŽDIĆ OBRAD
+NUBER ANA
+NUDIĆ ĐORĐE
+NUDIĆ SVETOZAR
+NUHI FEVZI
+NUHI HAJDAN
+NUHI ZEKIJA
+NUKA HASAN
+NUKIĆ ALJO
+NUKIĆ DŽEVAD
+NUKIĆ KANITA
+NUKIĆ OMER
+OČENAŠ LJUDMILA
+OČKAJI IŠTVAN
+OČKO VILHELM
+OČOVAJ BOŽENKA
+OČOVAJ ZUZANA
+OŠAP JELENA
+OŠAP JOVAN
+OŠKERT ANKA
+OŠTRIĆ MILE DIPL ING
+OŠTRIKA ŽARKO
+OŠTRIKA ŽARKO
+OŠTRIKA DARINKA
+OŽEGOVIĆ ŽARKO DIPL ING
+OŽEGOVIĆ BOŠKO
+OŽEGOVIĆ BRANKO DIPL ING
+OŽEGOVIĆ DANE
+OŽEGOVIĆ DRAGA
+OŽEGOVIĆ LAZAR
+OŽEGOVIĆ MIRKO
+OŽEGOVIĆ MOMČILO
+OŽEGOVIĆ NEVENKA
+OŽEGOVIĆ SLAVKO
+OŽEGOVIĆ SLOBODAN
+OŽEKOVIĆ GOJKO
+OŽVAT JASMINA
+OŽVAT JASMINA
+OŽVAT JULIJANA
+OŽVAT ONDREJ
+OĐIĆ ALEKSANDAR
+OBŠUST JANKO
+OBADOV ALEKSANDRA
+OBADOV MILE
+OBADOV NATALIJA
+OBADOV SLAVKO
+OBADOVIĆ DUŠANKA
+OBADOVIĆ MILOJE
+OBADOVIĆ MILOJE
+OBADOVIĆ MILOJE
+OBADOVIĆ MILORAD
+OBADOVIĆ SLOBODANKA
+OBERMAJER FRANJA
+OBERMAN BRANISLAV
+OBERT FRANC
+OBJEDOVIĆ STOJAN
+OBLEŠČUK ANKA
+OBLEŠČUK ANKA
+OBLEŠČUK DRAGIŠA
+OBLEŠČUK GREGOR
+OBLEŠČUK MARIJA
+OBOČKI VLADIMIR
+OBRADOV GORDANA
+OBRADOV GORDANA
+OBRADOV LJUBIŠA
+OBRADOV LJUBIŠA
+OBRADOV MILAN
+OBRADOV MILORAD
+OBRADOV NADA
+OBRADOV NOVAK
+OBRADOV RADIVOJ
+OBRADOV RADMILA
+OBRADOV STOJANKA
+OBRADOVIĆ ČEDOMIR
+OBRADOVIĆ ŽIVKO
+OBRADOVIĆ ŽIVKO
+OBRADOVIĆ ĐORĐE
+OBRADOVIĆ ĐORĐE
+OBRADOVIĆ ĐORĐE
+OBRADOVIĆ ĐURĐINA
+OBRADOVIĆ ĐURO
+OBRADOVIĆ ĐURO
+OBRADOVIĆ ALEKSANDAR
+OBRADOVIĆ ANKA
+OBRADOVIĆ BOGDANKA
+OBRADOVIĆ BOGDAN
+OBRADOVIĆ BOGDAN
+OBRADOVIĆ BORISLAV
+OBRADOVIĆ BORKA
+OBRADOVIĆ BRANISLAV
+OBRADOVIĆ BRANISLAV
+OBRADOVIĆ BRANKO
+OBRADOVIĆ BUDIMIR
+OBRADOVIĆ BUDO
+OBRADOVIĆ DANE
+OBRADOVIĆ DANIJELA
+OBRADOVIĆ DANILO DR
+OBRADOVIĆ DMITAR
+OBRADOVIĆ DOBRILA
+OBRADOVIĆ DRAGAN
+OBRADOVIĆ DRAGICA
+OBRADOVIĆ DRAGOLJUB
+OBRADOVIĆ DUŠANKA
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ DUŠAN
+OBRADOVIĆ EMILIJA
+OBRADOVIĆ GLIŠA
+OBRADOVIĆ GORDANA
+OBRADOVIĆ GVOZDEN
+OBRADOVIĆ ILIJA
+OBRADOVIĆ JASMINA
+OBRADOVIĆ JOVAN
+OBRADOVIĆ JOVAN
+OBRADOVIĆ JOVO
+OBRADOVIĆ KONSTANTIN
+OBRADOVIĆ LAZAR
+OBRADOVIĆ LAZAR
+OBRADOVIĆ LIDIJA
+OBRADOVIĆ LJILJANA
+OBRADOVIĆ LJILJANA
+OBRADOVIĆ LJILJANA
+OBRADOVIĆ LJUBIŠA
+OBRADOVIĆ LJUBODRAG
+OBRADOVIĆ LUKA
+OBRADOVIĆ MARKO
+OBRADOVIĆ MILADIN
+OBRADOVIĆ MILAN
+OBRADOVIĆ MILA
+OBRADOVIĆ MILENA
+OBRADOVIĆ MILENKO
+OBRADOVIĆ MILE
+OBRADOVIĆ MILE
+OBRADOVIĆ MILICA
+OBRADOVIĆ MILIJANA
+OBRADOVIĆ MILKA
+OBRADOVIĆ MILOŠ
+OBRADOVIĆ MILOJKO
+OBRADOVIĆ MILORAD
+OBRADOVIĆ MILORAD
+OBRADOVIĆ MILOVAN DIPL ING
+OBRADOVIĆ MILUN
+OBRADOVIĆ MILUTIN
+OBRADOVIĆ MIODRAG
+OBRADOVIĆ MIRAŠ
+OBRADOVIĆ MIRJANA DIPL ING
+OBRADOVIĆ MIRKO
+OBRADOVIĆ MIROSLAV
+OBRADOVIĆ MLADEN
+OBRADOVIĆ NADA
+OBRADOVIĆ NEBOJŠA
+OBRADOVIĆ NEDELJKA
+OBRADOVIĆ NEDELJKO
+OBRADOVIĆ NEMANJA
+OBRADOVIĆ NENAD DR LEKAR
+OBRADOVIĆ NIKOLA
+OBRADOVIĆ PETAR
+OBRADOVIĆ PETAR
+OBRADOVIĆ RADE
+OBRADOVIĆ RADIVOJE
+OBRADOVIĆ RADIVOJ
+OBRADOVIĆ RADMILA
+OBRADOVIĆ RATKO
+OBRADOVIĆ ROSA
+OBRADOVIĆ SAVA
+OBRADOVIĆ-SIKIMIĆ MIRJANA
+OBRADOVIĆ SLAVICA
+OBRADOVIĆ SLAVKO
+OBRADOVIĆ SLAVKO
+OBRADOVIĆ SLOBODAN
+OBRADOVIĆ SMILJKA
+OBRADOVIĆ SMILJKA
+OBRADOVIĆ STANIMIR
+OBRADOVIĆ STANKO
+OBRADOVIĆ STEVAN DR
+OBRADOVIĆ STEVAN
+OBRADOVIĆ STEVAN
+OBRADOVIĆ STEVO
+OBRADOVIĆ STEVO
+OBRADOVIĆ STJEPAN
+OBRADOVIĆ SVETOZAR
+OBRADOVIĆ SVETOZAR
+OBRADOVIĆ SVETOZAR
+OBRADOVIĆ TODOR
+OBRADOVIĆ VERA
+OBRADOVIĆ VERA
+OBRADOVIĆ VOJISLAV
+OBRADOVIĆ ZLATICA
+OBREHT PETAR
+OBRENIĆ BORIVOJE
+OBRENIĆ DRAGO
+OBRENIĆ JELISAVETA
+OBRENIĆ MANOJLE
+OBRENIĆ MILADIN
+OBRENIĆ MILEVA
+OBRENIĆ MILOMIR
+OBRENIĆ PREDRAG
+OBRENIĆ RADOMAN
+OBRENIĆ SNEŽANA
+OBRENOV ŽIVAN
+OBRENOV ŽIVAN
+OBRENOV JELENA
+OBRENOV JEVREM
+OBRENOV JOLANDA
+OBRENOV KRUNA
+OBRENOV PETAR
+OBRENOV RADIVOJ
+OBRENOV SANJA
+OBRENOV SAVA
+OBRENOV SLOBODANKA
+OBRENOV STANKA
+OBRENOV STEVAN
+OBRENOV VASA
+OBRENOV VLADIMIR
+OBRENOV ZORICA
+OBRENOV ZORICA
+OBRENOVIĆ BOŽIDAR
+OBRENOVIĆ BRANKO
+OBRENOVIĆ DARINKA
+OBRENOVIĆ DESIMIR
+OBRENOVIĆ KATARINA
+OBRENOVIĆ MILAN DR
+OBRENOVIĆ MIODRAG DIPL ING
+OBRENOVIĆ MIROSLAV
+OBRENOVIĆ NIKOLA
+OBRENOVIĆ RADOSLAV
+OBRENOVIĆ TATJANA
+OBRENOVIĆ VASO
+OBRENOVIĆ VLAJKO
+OBRIĆ GOJKO
+OBRIĆ RADOJICA
+OBRKNEŽEV ĐORĐE
+OBRKNEŽEV MILENKO
+OBRKNEŽEV RADMILA
+OBRKNEŽEV RADOJKA
+OBRKNEŽEV STEVAN
+OBROVAČKI DUŠICA
+OBROVAČKI GORDANA
+OBROVAČKI MIROSLAV
+OBROVAČKI RADE
+OBROVAČKI SVETOZAR
+OBROVAC MIJAT
+OBROVSKI ĐORĐE
+OBROVSKI DRAGUTIN
+OBROVSKI IVAN
+OBROVSKI JOVAN
+OBROVSKI KATICA
+OBROVSKI MIHAJLO
+OBROVSKI VASA
+OBUĆINA RATOMIR
+OBUĆINA SLAVKO
+OBUĆINA SLAVOLJUB
+OCOKOLJIĆ LJUBINKO
+ODŽIĆ NOVKA
+ODŽIĆ RATOMIR
+ODŽIĆ ZORKA
+ODŽOVSKI ILIJA
+ODADŽIĆ DUŠAN
+ODADŽIĆ GORDANA
+ODADŽIĆ JELISAVETA
+ODADŽIĆ NADA
+ODADŽIĆ RADIVOJ
+ODADŽIĆ STEVAN
+ODALOVIĆ BRANKO
+ODAVIĆ-JOSIĆ JELICA DIPL ING
+ODAVIĆ MILKA
+ODAVIĆ SLAVKO
+ODOR JOSIP
+ODOVIĆ JOVO
+ODRI BALINT
+ODRI KARLO
+OFENBEHER GIZELA
+OFENBEHER VALERIJA
+OFENBEHER VERICA
+OGAR JELENA
+OGAR VLADE
+OGNENOVSKA BOJANA
+OGNENOVSKA CVETANKA
+OGNJANAC DRAGICA
+OGNJANOV MILETA
+OGNJANOVAC BORISLAV
+OGNJANOVIĆ ĐORĐE
+OGNJANOVIĆ ACA
+OGNJANOVIĆ BRANISLAVA
+OGNJANOVIĆ DANILO
+OGNJANOVIĆ DEJAN DR LEKAR
+OGNJANOVIĆ DMITAR
+OGNJANOVIĆ MARIJA DR LEKAR
+OGNJANOVIĆ MIHAJLO
+OGNJANOVIĆ MILOVAN
+OGNJANOVIĆ OGNJENA
+OGNJANOVIĆ RADOJKA DR LEKAR
+OGNJANOVIĆ RANKO
+OGNJANOVIĆ SPASOJE
+OGNJANOVIĆ SVETLANA
+OGNJENOVIĆ BOŽIDAR
+OGNJENOVIĆ DARA
+OGNJENOVIĆ DRAGUTIN
+OGNJENOVIĆ MILENKO
+OGNJENOVIĆ NIKOLA
+OGNJENOVIĆ NIKOLA
+OGNJENOVIĆ NOVKA
+OGNJENOVIĆ PETAR
+OGNJENOVIĆ RADOVANKA
+OGNJENOVIĆ STANISLAV
+OGNJENOVIĆ STEVAN
+OGNJENOVIĆ STEVO
+OGNJENOVIĆ TOMISLAV
+OGORELICA BILJANA
+OGORELICA BOGDAN
+OGORELICA BRANKO
+OGORELICA MARIJA
+OGRIZEK DRAGICA
+OGRIZEK DRAGUTIN
+OGRIZEK KRISTINA
+OGRIZEK ROBERT
+OGRIZOVIĆ ALEKSANDAR
+OGRIZOVIĆ BORA
+OGRIZOVIĆ DESANKA
+OGRIZOVIĆ DESANKA
+OGRIZOVIĆ DRAGICA
+OGRIZOVIĆ DUŠAN
+OGRIZOVIĆ LJUBICA
+OGRIZOVIĆ LJUBICA
+OGRIZOVIĆ MILAN
+OGRIZOVIĆ MILE
+OGRIZOVIĆ MILIVOJ
+OGRIZOVIĆ NEDELJKO
+OGRIZOVIĆ NEDELJKO
+OGRIZOVIĆ RADOJKA
+OGRIZOVIĆ SRETA
+OGRIZOVIĆ VELJKO
+OGRIZOVIĆ VLADIMIR
+OGRIZOVIĆ ZORAN
+OJDANIĆ SAVA
+OJKIĆ SLAVKO
+OKAŠANOVIĆ SRETEN
+OKANJ STEVAN
+OKANJI LAJOŠ
+OKANJI OSKAR
+OKANJI RANKA
+OKANJI TIBOR
+OKANOVIĆ NOVICA
+OKEZAN JOVAN
+OKILJ SLAVKO
+OKILJEVIĆ SOFIJA
+OKLJEŠA NENAD
+OKLJEŠA NENAD
+OKLOBDŽIJA MARKO
+OKRAJNOV STEVAN
+OKRUŽNIK DRAGAN
+OKSENFELD JOVAN
+OKUKA LJILJANA
+OKULIĆ BOGDAN
+OKULIĆ ZORAN
+OLŠOVI NIKOLA
+OLAH ŠANDOR
+OLAH ŠANDOR
+OLAH ŠANDOR
+OLAH ĐORĐE
+OLAH ANDRIJA
+OLAH ERNA
+OLAH FERENC
+OLAH FERENC
+OLAH IŠTVAN
+OLAH IŠTVAN
+OLAH JELENA
+OLAH JELISAVETA
+OLAH JOVAN
+OLAH JULIJANA
+OLAH LASLO
+OLAH MIRKO
+OLAH NANDOR
+OLAH NANDOR
+OLAH PAVLE
+OLAH PAVLE
+OLAH ROZALIJA
+OLAH VINCE
+OLAJOŠ BELA
+OLAJOŠ GORDANA
+OLAJOŠ JANOŠ
+OLAJOŠ MIHALJ
+OLAJOŠ MIHALJ
+OLAJOŠ OTO
+OLAR PAU
+OLBINA SLAVKO
+OLEAR MIHAJLO
+OLEAR MIHAJLO
+OLEAR SANJA
+OLEAR SVETISLAV
+OLEAR VLADA
+OLEJAR JOAKIM
+OLIČKOV BRANISLAV
+OLIČKOV MILORAD
+OLIĆ STEVAN
+OLIVERIĆ NEBOJŠA
+OLJŠEVSKA NATAŠA
+OLJAČA ILIJA
+OLJAČA MARICA
+OLJAČA MILENKO
+OLJAČA MILOVAN
+OLJAČA NIKOLA
+OLJAČA RADA
+OLJAČA SLAVOLJUB
+OLJAČA STANISLAV
+OLJAČA STEVAN
+OLMAN MARIJA
+OLUŠKI DOBRILA
+OLUŠKI DUŠAN
+OLUŠKI DUŠAN
+OLUŠKI LAZAR
+OLUŠKI MILUTIN
+OLUŠKI MIROSLAV
+OLUŠKI MIROSLAV
+OLUŠKI OLIVERA
+OLUŠKI STOJAN
+OLUŠKI TODOR
+OLUŠKI TOMISLAV
+OLUŠKI VASA
+OLUŠKI VELIMIR DR
+OLUŠKI VERICA
+OLUJIĆ IVANA
+OLUJIĆ IVAN
+OLUJIĆ JELENA
+OLUJIĆ MILICA
+OLUJIĆ MIRKO
+OMČIKUS BOŠKO
+OMČIKUS JELENA
+OMČIKUS MAGDA
+OMČIKUS NIKOLA
+OMČIKUS RAJKO
+OMALJEV IVAN
+OMALJEV IVAN
+OMALJEV JULKA
+OMALJEV LEPOSAVA
+OMALJEV LEPOSAVA
+OMALJEV MILENA
+OMALJEV MILORAD
+OMALJEV VOJISLAV
+OMAZIĆ SOFIJA
+OMERAGIĆ KEMAL
+OMERI HAJRUDIN
+OMERI HALIM
+OMERI HASO
+OMERI NEDŽAD
+OMERI NURUDIN
+OMERZU ANTON
+OMERZU ELIZABETA
+OMIĆ IDRIZ
+OMORAC KATARINA
+OMORAC LATINKA
+ONČEVSKI JOVAN
+ONČU PETAR
+ONDRIK DUŠANKA
+ONEŠČUK MIHAJLO
+ONEŠĆUK NENAD
+ONHAUZ MARIJA
+ONODI IŠTVAN
+OPAČAK ANTUN
+OPAČAK IVAN
+OPAČIĆ ANĐA
+OPAČIĆ ANGELINA
+OPAČIĆ BOSILJKA
+OPAČIĆ BRANKO
+OPAČIĆ DUŠAN
+OPAČIĆ KOSTA
+OPAČIĆ MILAN
+OPAČIĆ MILAN
+OPAČIĆ MILORAD
+OPAČIĆ MIODRAG
+OPAČIĆ MIRKO
+OPAČIĆ MIRKO
+OPAČIĆ NENAD
+OPAČIĆ PAVLE
+OPAČIĆ SIMO
+OPAČIĆ SLAVKO
+OPAČIĆ STEVAN
+OPAČIĆ TODOR
+OPALIĆ DARINKA
+OPALIĆ MARKO
+OPALIĆ NIKOLA
+OPALIĆ NIKOLA
+OPALIĆ NIKOLA
+OPALIĆ SOFIJA
+OPANČAREV DUŠAN
+OPANČAREV IVAN
+OPANČAREV MILKA
+OPARNICA LJUBO
+OPARNICA LUKA
+OPARNICA MAKSIM
+OPARNICA MAKSIM
+OPARNICA MAKSIM
+OPARNICA MARINKO
+OPARNICA MILENKO
+OPARNICA MIRA
+OPARNICA SOFIJA
+OPARNICA VID
+OPELC LADISLAV
+OPOJLEVIĆ LAZAR
+OPRANOVIĆ BOŽIDAR
+OPRANOVIĆ MICA
+OPREŠNIK ANKICA
+OPRIJAN ANĐELKO DIPL ING
+OPRIJAN DRAGAN
+OPRIJAN MILKA
+OPRUC MILORAD
+OPSENICA MILAN
+OPSENICA SOKA
+ORČIĆ ŠIME
+ORČIĆ ŠIME
+ORČIĆ BOŽIDAR
+ORČIĆ DRAGO
+ORČIĆ IVAN
+ORČIĆ STJEPAN
+ORŠIĆ ĐORĐE
+ORŠIĆ JOCA
+ORŠIĆ MILICA
+ORŠOŠ ĐORĐE
+ORŠOŠ BRANKO
+ORŠOŠ DRAGAN
+ORŠOŠ FERENC
+ORŠOŠ JOSIP
+ORŠOŠ NIKOLA
+ORŠOŠ ROZALIJA
+ORŠOŠ SAVA
+ORŠOŠ TEREZA
+ORŠOŠ ZORAN
+ORŠOLIĆ STJEPAN
+ORANICA MAKSIM
+ORAVEC BRANISLAV
+ORAVEC BRANKO
+ORAVEC MARKO
+ORAVEC PAVLE
+ORBAN ALEKSANDAR
+ORBAN EMILIJA
+ORBAN GAVRA
+ORBAN VESNA
+ORDANOSKI JELENA
+ORDINAČEV ĐORĐE
+ORDINAČEV MLADEN
+ORDINAČEV TODOR
+ORDINAČEV TODOR
+ORDINAČEV TODOR
+OREŠČANIN BOGDAN
+OREŠČANIN BRANKO
+OREŠČANIN MILAN
+OREŠČANIN MILOVAN
+OREŠČANIN NATALIJA DR
+OREŠČANIN NATALIJA
+OREŠČANIN NIKOLA
+OREŠČANIN RADOVAN
+OREŠČANIN VLADIMIR
+OREŠČANIN VLADIMIR
+OREŠĆANIN DUŠAN
+OREŠKOVIĆ DONA
+OREŠKOVIĆ JELENA
+OREŠKOVIĆ MILE
+OREŠKOVIĆ SLAVKO
+OREŠKOVIĆ ZVONIMIR
+OREB BORIS
+OREHOVAC RUŽA
+ORELJ ĐURO
+ORELJ BRANISLAV
+ORELJ DARINKA
+ORELJ JOVAN
+ORELJ LJUBO
+ORELJ MATILDA
+ORELJ MILEVA
+ORELJ NATALIJA
+ORELJ RADE
+ORENDI JULIJANA
+ORENDI LASLO
+ORENDI OTO
+ORLANDIĆ KORNELIJA
+ORLANDIĆ ZOLTAN
+ORLIĆ BRANISLAV
+ORLIĆ LJUBICA
+ORLIĆ LJUBICA
+ORLIĆ MARICA
+ORLIĆ MARIJA
+ORLIĆ MILAN
+ORLIĆ MILORAD
+ORLIĆ NADA
+ORLIĆ NADEŽDA
+ORLIĆ NEDELJKO
+ORLIK ANA
+ORLIK MARIJA
+ORLOVAC ERŽEBET
+ORLOVIĆ ANTE
+ORLOVIĆ DARINKA
+ORLOVIĆ DUŠAN
+ORLOVIĆ JOVO
+ORLOVIĆ LJUBICA
+ORLOVIĆ MANE
+ORLOVIĆ MIHAJLO
+ORLOVIĆ MILAN
+ORLOVIĆ MILAN
+ORLOVIĆ MILORAD DR
+ORLOVIĆ MILORAD
+ORLOVIĆ SAŠA
+ORLOVIĆ SRBOLJUB
+ORLOVIĆ STEVICA
+ORLOVIĆ STOJAN
+ORLOVIĆ SVETLANA
+ORMAI TIBOR
+ORNJAKOV PRIZRENKA
+ORO ČEDOMIR
+OROS ŽARKO
+OROS ĐURA
+OROS ĐURA
+OROS ALBERT
+OROS EUGEN
+OROS JOAKIM
+OROS MARIJA
+OROS NIKOLA
+OROS VASA
+OROS ZDENKA
+OROVČANEC KIRA DR
+OROVEC JOSIP
+OROVIĆ MILOVAN
+ORSAG ANTAL
+ORSIĆ RADMILA
+ORTAK KAĆA
+ORVOŠ LAJOŠ
+ORZA MIRCA
+ORZA ROSANA
+OSEĆANSKI MLADEN
+OSETROV NIKOLA
+OSLOVČAN BOSILJKA
+OSMANAJ IMER
+OSMANI ASAN
+OSMANI MEHMED
+OSMANI NEŠAT
+OSMANI ROMANKA
+OSMANI SELIM
+OSMANKAČ SELIM
+OSMANOVIĆ KLAUDIJA
+OSMANOVIĆ LJUBINKA
+OSMONOJ SADRIJA
+OSNOVIĆ OSKAR
+OSOSLIJA RADENKO
+OSREDKAR JOSIP
+OSTER ILONA
+OSTOIĆ ĐORĐE
+OSTOIĆ ZORAN
+OSTOJIĆ ŽIVKO
+OSTOJIĆ ĐORĐE
+OSTOJIĆ BOŠKO
+OSTOJIĆ BOŽIDAR
+OSTOJIĆ BOŽIDAR
+OSTOJIĆ BOGDAN
+OSTOJIĆ BRANA
+OSTOJIĆ BRANIMIR
+OSTOJIĆ BRANISLAV DR
+OSTOJIĆ BRANKO
+OSTOJIĆ DAFINA
+OSTOJIĆ DOBRIVOJ
+OSTOJIĆ DRAGAN
+OSTOJIĆ DRAGICA
+OSTOJIĆ DRAGICA
+OSTOJIĆ DRAGOLJUB
+OSTOJIĆ DUŠAN
+OSTOJIĆ DUŠAN
+OSTOJIĆ DUŠAN
+OSTOJIĆ GOJKO
+OSTOJIĆ GORINKA
+OSTOJIĆ IVAN
+OSTOJIĆ JOVANKA
+OSTOJIĆ KATICA
+OSTOJIĆ LAZAR
+OSTOJIĆ LJUBA
+OSTOJIĆ LJUBINKO
+OSTOJIĆ LJUBOMIR
+OSTOJIĆ LJUBOMIR
+OSTOJIĆ LJUBOMIR
+OSTOJIĆ MIĆA
+OSTOJIĆ MILADIN
+OSTOJIĆ MILAN
+OSTOJIĆ MILENKO
+OSTOJIĆ MILENKO
+OSTOJIĆ MILEVA
+OSTOJIĆ MILICA
+OSTOJIĆ MILKA
+OSTOJIĆ MILOŠ
+OSTOJIĆ MILORAD
+OSTOJIĆ MILORAD
+OSTOJIĆ MIRJANA
+OSTOJIĆ NADA
+OSTOJIĆ NATAŠA
+OSTOJIĆ NENAD
+OSTOJIĆ OBRAD
+OSTOJIĆ OBRAD
+OSTOJIĆ OLGA
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PETAR
+OSTOJIĆ PREDRAG
+OSTOJIĆ RADIVOJE
+OSTOJIĆ RADOJICA
+OSTOJIĆ RADOVAN
+OSTOJIĆ RATKO
+OSTOJIĆ RISTO
+OSTOJIĆ SLAVICA
+OSTOJIĆ SLAVKO
+OSTOJIĆ SLOBODAN
+OSTOJIĆ SMILJKA
+OSTOJIĆ STANA
+OSTOJIĆ STANKA
+OSTOJIĆ SVETOZAR
+OSTOJIĆ TOMISLAV
+OSTOJIĆ VASA
+OSTOJIĆ VASILIJE
+OSTOJIĆ VESELIN
+OSTOJIĆ VESELIN
+OSTOJIĆ VLADIMIR
+OSTOJIĆ VOJISLAV
+OSTOJIĆ ZAGORKA
+OSTOJIĆ ZORAN
+OSTOJIĆ ZORA
+OSTOJIN ŽARKO
+OSTOJIN JULKA
+OSTOJIN LAZAR
+OSTOJIN MARIJA
+OSTOJIN MILOŠ
+OSTOJIN PERA
+OSTOJIN PERO
+OSTOJIN PETAR
+OSTOJIN PETAR
+OSTOJIN RADOVAN
+OSTOJIN SVETISLAV
+OSTOJIN TOŠA
+OSTROGONAC IVAN NOVINAR
+OSTROGONAC IVAN
+OSTROGONAC TIBOR
+OSVALD BARBARA
+OSVALD IVAN
+OSVALD VERA
+OTAŠEVIĆ ŽIVKO
+OTAŠEVIĆ JOVAN
+OTAŠEVIĆ SLOBODANKA
+OTAŠEVIĆ VLASTA
+OTIĆ ŽIVKO
+OTIĆ BORIVOJ
+OTIĆ BORIVOJ
+OTIĆ DARINKA
+OTIĆ DUBRAVKA
+OTIĆ JOVANKA
+OTIĆ KATICA
+OTIĆ MILAN
+OTIĆ MILIVOJ
+OTIĆ NIKOLA
+OTIĆ NOVAK
+OTIĆ RADOSLAVA
+OTIĆ RADOSLAVA
+OTIĆ RADOSLAV
+OTIĆ SAVA
+OTIĆ SVETOZAR
+OTIĆ VELIZAR
+OTIĆ VLADISLAV
+OTIĆ VUKICA
+OTLOKAN JOVAN
+OTMAČIĆ DRAGO
+OTOŠ ANDRAŠ
+OTORANOV SLAVKO
+OTOVIĆ VLADIMIR
+OTRUPČAK JOSIP
+OTRUPČAK MILOŠ
+OTRUPČAK SAMUILO
+OVCIN MILORAD
+OVUKA ĐURO
+OVUKA ĐURO
+OVUKA MILAN
+OVUKA NIKOLA
+OZER ĐURA
+OZER ĐURA
+OZER ĐURA
+OZMEC VERA
+PŠENIČNIK ZVONIMIR
+PAČARIĆ ŽIVAN
+PAČARIĆ MARIJA
+PAČARIĆ MIRKO
+PAČARIĆ NIKOLA
+PAČARIĆ RADIVOJ
+PAČARIĆ RADOMIR
+PAČARIĆ ZORAN
+PAŠĆAN ŠTEFANIJA
+PAŠĆAN ĐORĐE
+PAŠĆAN ĐORĐE
+PAŠĆAN ANKA
+PAŠĆAN DANICA
+PAŠĆAN DRAGAN
+PAŠĆAN DUŠANKA
+PAŠĆAN DUŠAN
+PAŠĆAN GAVRA
+PAŠĆAN JOVAN
+PAŠĆAN JOVAN
+PAŠĆAN MILORAD
+PAŠĆAN NADEŽDA
+PAŠĆAN NEDELJKO
+PAŠĆAN NIKOLA
+PAŠĆAN OLGA
+PAŠĆAN PERA
+PAŠĆAN PETAR
+PAŠĆAN RADIVOJ
+PAŠĆAN RADOSLAVA
+PAŠĆAN RADOSLAV
+PAŠĆAN SAVA
+PAŠĆAN SINIŠA
+PAŠĆAN SMILJA
+PAŠĆAN STEVAN
+PAŠĆAN TODOR
+PAŠĆAN VASA
+PAŠĆAN ZAGORKA
+PAŠĆANOVIĆ GRADIMIR
+PAŠĆANOVIĆ LAZAR
+PAŠĆANOVIĆ LJUBICA
+PAŠĆIK KLARA
+PAŠĆIK LASLO
+PAŠAGIĆ RAJKO
+PAŠAJLIĆ ANĐELKO
+PAŠAJLIĆ BILJANA
+PAŠAJLIĆ MIODRAG
+PAŠAJLIĆ RADOSLAV
+PAŠAJLIĆ RADOSLAV
+PAŠAJLIĆ VLADO
+PAŠALIĆ PAVLE
+PAŠANSKI MILAN
+PAŠANSKI VUKICA
+PAŠIĆ BOŽANA
+PAŠIĆ BOŽO
+PAŠIĆ DRAGICA
+PAŠIĆ DUŠKO
+PAŠIĆ JOVAN
+PAŠIĆ KATICA
+PAŠIĆ MILAN
+PAŠIĆ MILENA
+PAŠIĆ PETAR
+PAŠIĆ ROSA
+PAŠIĆ SAŠA
+PAŠIĆ SINIŠA
+PAŠIĆ STOJA
+PAŠIĆ VOJISLAV
+PAŠIĆ ZORA
+PAŠIN GROZDANA
+PAŠKA ŠANDOR
+PAŠKINOV VASKO
+PAŠTERAC ALEKSANDAR
+PAŠTI ŠANDOR
+PAŠTI MATIJA
+PAŠUJKOVIĆ JOVAN
+PAĆI BORIS
+PAĆI IŠTVAN
+PAĆI MARIO
+PAĆUK NIKOLA
+PAĆUK SLAVKO
+PAŽĐERSKI-MANOJLOVIĆ JELENA
+PAŽIN ŽELJKO
+PAŽIN ANĐELKO
+PAŽIN DANICA
+PAŽIN LJUBOMIR
+PAĐAN LJUBOMIR
+PAĐAN MILICA
+PAĐEN DUŠAN
+PAĐEN LEPA
+PAĐEN MARIJA
+PAĐEN STEVA
+PAĐEN ZDRAVKO
+PAC IVANKA
+PACEK LASLO
+PACIK IŠTVAN
+PADEŽANIN LJUBO
+PADEŽANIN VLADETA
+PADEJSKI MILENA
+PADEJSKI MILOVAN
+PADEJSKI SAVA
+PADEJSKI VELIMIR
+PADI ALEKSANDAR
+PADI ALEKSANDAR
+PADI LAJOŠ
+PADROV GORAN
+PADROV NIKOLA
+PADROV RADIVOJ
+PADROV VESNA
+PAGAČ BILJANA
+PAGAČ NIKOLA
+PAGAČEVIĆ ANĐELKO
+PAGAČEVIĆ DRAGOMIR
+PAGAČEVIĆ STEVAN
+PAGAČEVIĆ STEVAN
+PAGAČEVIĆ VASA
+PAGANETO TINA
+PAGONIS JULKA
+PAGONIS VLADIMIROS
+PAIĆ ĐURAĐ
+PAIĆ DRAGAN
+PAIĆ FRANE
+PAIĆ IVAN
+PAIĆ MARIJA
+PAJČIĆ ALEKSA
+PAJČIĆ ANA
+PAJČIN ILIJA
+PAJČIN MILOJKO
+PAJČIN NEDELJKA
+PAJČIN VOJISLAV
+PAJANTIĆ DRAGAN
+PAJAZITOVIĆ MIRJANA
+PAJDAKOVIĆ DUBRAVKA
+PAJDIĆ JULIJA
+PAJDIĆ MARIJAN
+PAJEVIĆ ĐORĐE
+PAJEVIĆ DRAGOLJUB
+PAJEVIĆ GORAN
+PAJEVIĆ KOSTA
+PAJEVIĆ MILAN
+PAJIĆ BLAGOJE
+PAJIĆ BLAGOJE
+PAJIĆ BOŽIDAR
+PAJIĆ BOŽO
+PAJIĆ BOGIĆ
+PAJIĆ BORISLAV
+PAJIĆ BRANISLAV
+PAJIĆ BRANKO
+PAJIĆ BUDISLAV
+PAJIĆ DOBRIVOJ
+PAJIĆ DRAGOSLAV
+PAJIĆ DUŠAN DR
+PAJIĆ DUŠAN
+PAJIĆ DUŠAN
+PAJIĆ EMINA
+PAJIĆ GORDANA
+PAJIĆ GORICA
+PAJIĆ GRUJA
+PAJIĆ KOVILJKA
+PAJIĆ LJUBINKA
+PAJIĆ LJUBOMIR DIPL ING
+PAJIĆ MARIJA
+PAJIĆ MILICA
+PAJIĆ MILIVOJE
+PAJIĆ MILOŠ
+PAJIĆ MILOŠ
+PAJIĆ MILOJE
+PAJIĆ MILORAD
+PAJIĆ MILOSAV
+PAJIĆ MILUN
+PAJIĆ MIRKO
+PAJIĆ MIRKO
+PAJIĆ MLADEN
+PAJIĆ NADA
+PAJIĆ NADA
+PAJIĆ NIKOLA
+PAJIĆ NOVAK
+PAJIĆ PERO
+PAJIĆ PETAR
+PAJIĆ RADOJICA
+PAJIĆ RADOMIR
+PAJIĆ RADOSLAVA
+PAJIĆ RAJKO
+PAJIĆ SINIŠA
+PAJIĆ SMILJA
+PAJIĆ SREDOJE
+PAJIĆ STEVAN
+PAJIĆ SVETOZAR
+PAJIĆ TIHOMIR
+PAJIĆ VASA
+PAJIĆ VELIMIR
+PAJIĆ VESELIN
+PAJIĆ VIDOSAVA
+PAJIĆ VLADISLAV
+PAJIĆ VUKICA
+PAJIK DANICA
+PAJIN JOVAN
+PAJIN MILIVOJ
+PAJKERT ALEKSANDAR
+PAJKERT FRANJA
+PAJKERT MIROSLAVA
+PAJKERT RANKA
+PAJKIĆ DRAGAN
+PAJKIĆ RADOSLAV
+PAJKOVIĆ DRAGANA
+PAJKOVIĆ VLASTIMIR
+PAJOR MATIJA
+PAJOVIĆ ŠPIRO
+PAJOVIĆ ĐORĐE
+PAJOVIĆ DRAGOMIR
+PAJOVIĆ DUŠAN
+PAJOVIĆ JELENA
+PAJOVIĆ PREDRAG
+PAJOVIĆ RAJKO
+PAJOVIĆ SLOBODAN
+PAJOVIĆ ZORKA
+PAJTAŠEV DOBRIVOJ
+PAJTAK RADMILA
+PAJTIĆ PAVLE
+PAJVANČIĆ FRANJA
+PAJVANČIĆ KATA
+PAJVANČIĆ MARIJANA
+PAJVOD BOSILJKA
+PAKAŠKI ĐURA
+PAKAŠKI MIKA
+PAKAŠKI MILOVAN
+PAKAŠKI RADOSLAV
+PAKAŠKI SIMA
+PAKAŠKI VASA
+PAKAŠKI VITALIJ DIPL ING
+PAKAI JOŽEF
+PAKAI LASLO
+PAKLAR VIDA
+PAKLEDINAC VINKO
+PAKUŠEVSKI KATARINA
+PAKUŠEVSKI MIHAJLO
+PAKUŠEVSKI MITAR
+PAKUŠEVSKI RUŽICA
+PAKUŠEVSKIJ STEFAN
+PAL ILONA
+PAL ROZALIJA
+PALČEK JOSIP
+PALAČKOVIĆ MILAN
+PALAČKOVIĆ UROŠ
+PALAŠTI ĐORĐE
+PALAŠTI DESANKA
+PALAŠTI IŠTVAN
+PALAŠTI IŠTVAN
+PALAŠTI JOSIP
+PALAŠTI ROZALIJA
+PALADA JOZO
+PALALIĆ ĐURA
+PALALIĆ DRAGAN
+PALALIĆ DUŠAN
+PALALIĆ GOJKO
+PALALIĆ GOJKO
+PALALIĆ ILIJA
+PALALIĆ JOVAN
+PALALIĆ MIRKO
+PALALIĆ NEVENA
+PALALIĆ NIKO
+PALALIĆ PAVLE
+PALALIĆ RADE
+PALALIĆ SNEŽANA
+PALALIĆ SRETO
+PALALIĆ STOJAN
+PALALIĆ TODE
+PALALIĆ VID
+PALALIĆ VOJIN
+PALALIĆ ZDRAVKO
+PALAMARČUK ALEKSANDAR
+PALAN JOSIP
+PALANČANIN ELENA
+PALANČANIN JOVAN
+PALANČANIN RUŽA
+PALANČANIN VASA
+PALANČANIN VASA
+PALANAČKI ĐORĐE
+PALANAČKI RUŽICA
+PALANAČKI SAVA
+PALATINUŠ ANDRAŠ
+PALATINUŠ IŠTVAN
+PALATINUŠ JOŽEF
+PALEŽEVIĆ BORISLAV
+PALEVIĆ SLAVICA
+PALFI ALEKSANDAR
+PALFI BORKA
+PALFI IŠTVAN
+PALFI IŠTVAN
+PALFI JULIJANA
+PALFI KATICA
+PALIČKO ĐURĐINKA
+PALIČKO ANDRAŠ
+PALIČKO ILEŠ
+PALIČKO IRENA
+PALIČKO JELENA
+PALIŠAŠKI OLGA
+PALIĆ BORISLAV DIPL ING
+PALIĆ DRAGAN
+PALIĆ DUŠAN
+PALIĆ LJUBICA
+PALIĆ MARTA
+PALIĆ MILENKO
+PALIĆ NIKOLA
+PALIĆ OLGA
+PALIĆ STEVAN
+PALIĆ STEVAN
+PALIĆ VLASTIMIR
+PALINKAŠ ĐORĐE
+PALINKAŠ ĐURA
+PALINKAŠ BLANKA
+PALINKAŠ BORIVOJE DIPL ING
+PALINKAŠ FRANJA
+PALINKAŠ GEZA
+PALINKAŠ JOŽEF
+PALINKAŠ MARIJA
+PALINKAŠ MIHALJ
+PALINKAŠ MIRKO
+PALINKAŠ STEVAN
+PALINKAŠ VERA DR
+PALJIĆ LJUBOMIR
+PALJURAS APOSTOLOS
+PALOŠ IVAN
+PALOŠI OLGA
+PALOC ŠANDOR
+PALOC LASLO
+PALOC TIBOR
+PALOTAŠ ANDRIJA
+PALOV MIHAILO DR
+PALUROVIĆ STEPAN
+PAMUČINA JOVAN
+PANČIĆ GAVRILO
+PANČIĆ GRADIMIR
+PANČIĆ JULIJANA
+PANČIĆ JULIJANA
+PANČIĆ SLOBODAN
+PANČIĆ ZORAN
+PANČOVAN AVRAM
+PANČULIDZEV ALEKSIJE
+PANAJOTIDIS LEONIDAS
+PANAOTOVIĆ BOGDAN
+PANAOTOVIĆ DUŠANKA
+PANAOTOVIĆ JOVICA
+PANAOTOVIĆ MIRJANA
+PANCER BRANKO
+PANCER BRANKO
+PANDŽA BOŽICA
+PANDŽA ZVEZDANA
+PANDŽIĆ NADA
+PANDŽIĆ SLOBODANKA
+PANDŽIĆ SVETOZAR
+PANDŽIĆ TOMISLAV
+PANDŽIĆ VOJISLAV DIPL ING
+PANDI OSKAR
+PANDUREVIĆ MILANKO
+PANDUROV ŽIVKA
+PANDUROV ACA
+PANDUROV DRAGOLJUB
+PANDUROV DUŠANKA
+PANDUROV MILICA
+PANDUROV MILIVOJ
+PANDUROV MIROSLAV
+PANDUROV PETAR
+PANDUROV SAVA
+PANDUROV ZORAN
+PANDUROV ZORAN
+PANDUROVIĆ ŽIVKA
+PANDUROVIĆ IVAN
+PANDUROVIĆ JOVAN
+PANDUROVIĆ JULKA
+PANDUROVIĆ PAVLE
+PANDUROVIĆ RADMILA
+PANDUROVIĆ SRETEN
+PANDUROVIĆ SVETOZAR
+PANDUROVIĆ TOMISLAV
+PANDUROVIĆ VLADISLAVA
+PANDUROVIĆ VOJIN
+PANDURSKI MIROSLAV
+PANGERC MARA
+PANGERC VELIBOR
+PANIĆ ŽARKO
+PANIĆ ŽIVAN
+PANIĆ ŽIVOJIN
+PANIĆ ĐORĐE
+PANIĆ ĐORĐE
+PANIĆ ĐORĐE
+PANIĆ ĐORĐE
+PANIĆ ĐORĐE
+PANIĆ ĐURA
+PANIĆ ALEKSANDAR
+PANIĆ ANA
+PANIĆ ANA
+PANIĆ ANTUN
+PANIĆ BRANISLAV
+PANIĆ BRANISLAV
+PANIĆ BRANISLAV
+PANIĆ BRANKO
+PANIĆ DAMJAN
+PANIĆ DANILKA
+PANIĆ DRAGAN
+PANIĆ DRAGAN
+PANIĆ DRAGAN
+PANIĆ DRAGAN
+PANIĆ DRAGOLJUB
+PANIĆ DRAGOSLAV
+PANIĆ DRAGOSLAV
+PANIĆ DRENA
+PANIĆ DUŠAN
+PANIĆ DUŠAN
+PANIĆ GORDANA
+PANIĆ ILIJA
+PANIĆ ILONA
+PANIĆ JAŠA
+PANIĆ JELENA
+PANIĆ JELENA
+PANIĆ JOVANKA DR
+PANIĆ JOVANKA
+PANIĆ JOVANKA
+PANIĆ JULKA
+PANIĆ KAICA
+PANIĆ KATA
+PANIĆ KONSTANTIN
+PANIĆ LJUBICA
+PANIĆ MARKO
+PANIĆ MIĆO
+PANIĆ MICA
+PANIĆ MIKA
+PANIĆ MILANA
+PANIĆ MILAN
+PANIĆ MILENA
+PANIĆ MILENKO
+PANIĆ MILE
+PANIĆ MILICA
+PANIĆ MILIJA
+PANIĆ MILIVOJ
+PANIĆ MILIVOJ
+PANIĆ MILIVOJ
+PANIĆ MILOŠ
+PANIĆ MILOŠ
+PANIĆ MILOŠ
+PANIĆ MILORAD
+PANIĆ MILORAD
+PANIĆ MILOVAN
+PANIĆ MIRJANA
+PANIĆ MIRKO
+PANIĆ MIRKO
+PANIĆ MIROSLAV
+PANIĆ NADA
+PANIĆ NADA
+PANIĆ NADA
+PANIĆ NEMANJA
+PANIĆ NENAD
+PANIĆ OBRADIN
+PANIĆ OGNJEN
+PANIĆ OLGA
+PANIĆ PETAR
+PANIĆ PETAR
+PANIĆ PREDRAG
+PANIĆ RADIVOJE
+PANIĆ RADOMIR
+PANIĆ RADOSLAV
+PANIĆ RANKO
+PANIĆ RISTO
+PANIĆ SAŠA
+PANIĆ SANJA
+PANIĆ SLAĐANA
+PANIĆ SMILJANKA
+PANIĆ SNEŽANA
+PANIĆ SRĐAN
+PANIĆ SRBOLJUB
+PANIĆ STANA
+PANIĆ STANKA
+PANIĆ STEVAN
+PANIĆ STEVAN
+PANIĆ STEVAN
+PANIĆ SVETOZAR
+PANIĆ TOMISLAV
+PANIĆ UGLJEŠA
+PANIĆ VASILJKA
+PANIĆ VLADIMIR
+PANIĆ VOJISLAV
+PANIĆ ZDRAVKO
+PANIĆ ZLATKO
+PANIĆ ZORAN
+PANIĆ ZORA
+PANIAN ANICA
+PANIN BORIVOJE
+PANIN BRANA
+PANIN MILICA
+PANIN MILOŠ
+PANIN MITA
+PANIN MLADEN
+PANIN ZORAN
+PANINČIĆ SOFIJA
+PANJKOVIĆ BILJANA
+PANJKOVIĆ BRANKA
+PANJKOVIĆ DRAGAN
+PANJKOVIĆ ILIJA MR
+PANJKOVIĆ JELENA
+PANJKOVIĆ MELANIJA
+PANJKOVIĆ MILAN
+PANJKOVIĆ MILAN
+PANJKOVIĆ MILAN
+PANJKOVIĆ MILICA
+PANJKOVIĆ NADA
+PANJKOVIĆ NIKOLA
+PANJKOVIĆ PETAR
+PANJKOVIĆ VLADIMIR
+PANKOV BRANISLAV
+PANKOV BRANISLAV
+PANKOV BRANKO
+PANKOV JELENA
+PANKOV JELICA
+PANKOV KATICA
+PANKOV MARKO
+PANKOV MILENKO
+PANKOV MILOVAN
+PANKOV PREDRAG
+PANKOV RADOSLAV
+PANKOV SAVA
+PANKOV SLAVKO
+PANKOV SVETOZAR
+PANKOV VESNA
+PANKOVIĆ LAZAR
+PANOV DESANKA
+PANOV NENAD
+PANOVIĆ ANĐELKO
+PANOVIĆ MIODRAG
+PANTELEMONOV NEDELJKO
+PANTELEMONOV NOVKA
+PANTELIĆ ČEDOMIR
+PANTELIĆ ŽARKO
+PANTELIĆ ĐORĐE
+PANTELIĆ ĐORĐE
+PANTELIĆ ANĐELKO
+PANTELIĆ ANA
+PANTELIĆ BORIVOJE
+PANTELIĆ BORIVOJ
+PANTELIĆ CVETIN
+PANTELIĆ DAFINA
+PANTELIĆ DANICA
+PANTELIĆ DRAGAN
+PANTELIĆ DRAGOLJUB
+PANTELIĆ DRAGOLJUB
+PANTELIĆ ILIJA DIPL ING
+PANTELIĆ ILIJA
+PANTELIĆ JULIJANA
+PANTELIĆ KAMENKO
+PANTELIĆ LAZAR
+PANTELIĆ LJUBIŠA
+PANTELIĆ LJUBICA
+PANTELIĆ MIHAJLO
+PANTELIĆ MILADIN
+PANTELIĆ MILAN
+PANTELIĆ MILOŠ
+PANTELIĆ MILORAD
+PANTELIĆ MILOVAN
+PANTELIĆ MIODRAG
+PANTELIĆ MIROSLAV
+PANTELIĆ MOMČILO
+PANTELIĆ MOMIR
+PANTELIĆ NENAD
+PANTELIĆ NEVENKA
+PANTELIĆ NIKOLA
+PANTELIĆ PAJO
+PANTELIĆ PAVLE
+PANTELIĆ PETAR DIPL ING
+PANTELIĆ PETAR
+PANTELIĆ-PETROVIĆ MARIJA
+PANTELIĆ SLAVICA
+PANTELIĆ SOFIJA
+PANTELIĆ VASA
+PANTELIĆ VERA
+PANTELIĆ VLADIMIR
+PANTELIĆ VLADISLAV
+PANTELIĆ VUJICA
+PANTELIĆ-VUKANOVIĆ VUKOSAVA
+PANTELIĆ VUKICA
+PANTELIĆ VUKICA
+PANTELIĆ ZORAN
+PANTELIN GEORGIJE
+PANTELINAC NIKOLA
+PANTELINAC PAVLE
+PANTELINAC SLOBODAN
+PANTIĆ ŽARKO
+PANTIĆ ŽIVAN
+PANTIĆ ŽIVKA
+PANTIĆ ŽIVOJIN
+PANTIĆ ŽIVORAD
+PANTIĆ ĐORĐE
+PANTIĆ ĐURĐINKA
+PANTIĆ ALEKSANDAR
+PANTIĆ BATA
+PANTIĆ BOGDAN
+PANTIĆ BORIVOJE
+PANTIĆ BOSILJKA
+PANTIĆ DOBRIVOJ
+PANTIĆ DOBROSAV
+PANTIĆ DUŠAN
+PANTIĆ GIZELA
+PANTIĆ GVOZDEN
+PANTIĆ JELICA
+PANTIĆ LJUBICA
+PANTIĆ MARINA
+PANTIĆ MIHAILO
+PANTIĆ MILAN
+PANTIĆ MILENKO
+PANTIĆ MILIVOJE
+PANTIĆ MILIVOJ
+PANTIĆ MILORAD
+PANTIĆ MILORAD
+PANTIĆ MIODRAG DR LEKAR
+PANTIĆ RADENKO
+PANTIĆ RADOMIR
+PANTIĆ RADOMIR
+PANTIĆ RADOSLAV
+PANTIĆ ROZA
+PANTIĆ SELIMIR
+PANTIĆ SELIMIR
+PANTIĆ SVETOZAR
+PANTIĆ TOMISLAV
+PANTIĆ UROŠ
+PANTIĆ VESNA
+PANTIĆ VOJISLAV DR
+PANTIĆ ZAGORKA
+PANTIĆ ZDRAVKO
+PANTOŠ ĐURO
+PANTOŠ KOVILJKA
+PANTOŠ PETAR
+PANTOŠ PETAR
+PANTOVIĆ ŠĆEPAN
+PANTOVIĆ ŽELJKO
+PANTOVIĆ ACA
+PANTOVIĆ BILJANA
+PANTOVIĆ BRANKO
+PANTOVIĆ DRAGINJA
+PANTOVIĆ LJUBO
+PANTOVIĆ MILISAV
+PANTOVIĆ MILOVAN
+PANTOVIĆ MLADEN
+PANTOVIĆ SAVA
+PANTOVIĆ SVETOLIK
+PANTOVIĆ VLADIMIR
+PANZALOVIĆ RADOVAN
+PAOLONI ĐUZEPINA
+PAP ŠANDOR
+PAP ŠANDOR
+PAP ŠANDOR
+PAP ŠANDOR
+PAP ĐERĐ
+PAP ĐURO
+PAP ANA
+PAP DEJAN
+PAP DRAGICA
+PAP EDIT
+PAP EDIT
+PAP ENDRE DR
+PAP ENDRE
+PAP ERŽEBET
+PAP ETELKA
+PAP FERENC
+PAP FRANJA
+PAP FRANJA
+PAP GABOR
+PAP IŠTVAN DR
+PAP IŠTVAN
+PAP ILEŠ
+PAP IMRE
+PAP IMRE
+PAP IRENA
+PAP IRENA
+PAP JANJA
+PAP JANKO
+PAP JELENA
+PAP JELISAVETA
+PAP JOŽEF DR
+PAP JOSIP
+PAP JOSIP
+PAP JOVAN
+PAP JULIJANA
+PAP JULIJAN
+PAP JULIJA
+PAP KATARINA
+PAP LASLO
+PAP MARGITA
+PAP MIHAJLO
+PAP MIHAJLO
+PAP MIKLOŠ
+PAP MIRON
+PAP OLGA
+PAP PAVLE
+PAP ROZALIJA
+PAP SILVESTER
+PAP TEREZIJA
+PAP TIBOR
+PAP VALERIJA
+PAP VERA
+PAP VINCE
+PAP VLADISLAV
+PAP ZDENKA
+PAP ZOLTAN
+PAPŠOT-KOZIK PEPI
+PAPĐURDES JOVGEN
+PAPADOPOLO DRAGOSLAV
+PAPADOPOLO VJEKOSLAV
+PAPADOPULOS JANIS
+PAPADOPULOS KOSTAS
+PAPAGEORGIT KOSTA
+PAPAK DRAGAN
+PAPATANASIU NICA
+PAPEŠ JOSIP
+PAPEŠ KOSA
+PAPEŽ ILINKA
+PAPHARHAJI ĐURA
+PAPHARHAJI TEREZIJA
+PAPHARHAJI VLADIMIR
+PAPIŠTA FRANJA
+PAPIŠTA FRANJA
+PAPIŠTA ILDIKA
+PAPIŠTA JOVAN
+PAPIŠTA MARIJA
+PAPIŠTA MARKO
+PAPIŠTA MIHAJLO
+PAPIĆ ČEDOMIR
+PAPIĆ ŽIVKO
+PAPIĆ ALEKSANDAR
+PAPIĆ ALEKSANDAR
+PAPIĆ ANA
+PAPIĆ ARANKA
+PAPIĆ ARANKA
+PAPIĆ ARANKA
+PAPIĆ ARANKA
+PAPIĆ BOŠKO
+PAPIĆ BOŽA
+PAPIĆ BOŽIDAR
+PAPIĆ BRANISLAV
+PAPIĆ BRANKO
+PAPIĆ BRANKO
+PAPIĆ DESANKA
+PAPIĆ DOBRIVOJE
+PAPIĆ DUŠAN
+PAPIĆ DUŠAN
+PAPIĆ GOJKO
+PAPIĆ IVAN
+PAPIĆ JELISAVETA
+PAPIĆ LAZAR
+PAPIĆ LEPOSAVA
+PAPIĆ LJUBICA
+PAPIĆ LOZINKA
+PAPIĆ LUKA
+PAPIĆ MARIJA
+PAPIĆ MIHAJLO
+PAPIĆ MILADIN
+PAPIĆ MILADIN
+PAPIĆ MILICA
+PAPIĆ MILIVOJ
+PAPIĆ MILKA
+PAPIĆ MILOŠ
+PAPIĆ MIROSLAV
+PAPIĆ MIROSLAV
+PAPIĆ NIKOLA
+PAPIĆ PAVLE
+PAPIĆ RADENKO
+PAPIĆ SAVA
+PAPIĆ SMILJA
+PAPIĆ SRĐAN DR
+PAPIĆ SRĐANKA
+PAPIĆ STEVAN
+PAPIĆ STEVAN
+PAPIĆ STEVAN
+PAPIĆ SVETISLAV DIPL ING
+PAPIĆ TEODOR
+PAPIĆ TODOR
+PAPIĆ VERA
+PAPIĆ ZORICA
+PAPIĆ ZORICA
+PAPIK VIKTOR
+PAPILION BORIŠKA
+PAPLACKO VELIMIR
+PAPOVIĆ ČEDOMIR
+PAPOVIĆ BLAŽO
+PAPOVIĆ BLAGOJE
+PAPOVIĆ KRSTO
+PAPOVIĆ MILE
+PAPOVIĆ MIODRAG
+PAPOVIĆ MLADEN
+PAPOVIĆ VESELIN
+PAPOVIĆ VUKOSAV
+PAPRIĆ ŽIVAN
+PAPRIĆ ĐORĐE
+PAPRIĆ MARKO
+PAPRIĆ RAJKO
+PAPUGA ĐURA
+PAPUGA DIMITRIJE
+PAPUGA EUFEMIJA
+PAPUGA IRINA
+PAPUGA JAROSLAV
+PAPUGA KIRIL
+PAPUGA LJUBOMIR
+PAPUGA MIHAJLO
+PAPUGA TATJANA
+PAPUGA VERA
+PAPUGA VLADIMIR
+PAPULIN ĐERĐIKA
+PAPULIN BORISLAV
+PAPULIN DOBRINA
+PAPULIN RADOJKA
+PARČIĆ NAĐA DR
+PARABUĆSKI MILENKO
+PARABUĆSKI-SIMIĆ RUŽICA
+PARABUĆSKI SVETISLAV NOVINAR
+PARABUCKI LAZAR
+PARABUCKI LJILJANA
+PARAG STEVAN
+PARANDILOVIĆ ROSA
+PARAPID MIRJANA
+PARAVIL NIKOLA
+PARAVINA JARMILA
+PARAVINA MILOŠ
+PARDOVICKI FERENC
+PARDOVICKI FRANJA
+PARDOVICKI MARIJA
+PAREŽANIN RADIVOJ
+PAREŽANIN SLOBODAN
+PAREŽANIN VLADISLAV
+PARHANOV VIKTORIJA
+PARIČEVIĆ EVA
+PARIĆ STIPE
+PARIPOV JELA
+PARIPOV MILAN
+PARIPOV MILENKO
+PARIPOVIĆ ČEDOMIR
+PARIPOVIĆ DRAGAN
+PARIPOVIĆ DUŠAN
+PARIPOVIĆ JOVAN
+PARIPOVIĆ JOVO
+PARIPOVIĆ MIHAJLO
+PARIPOVIĆ MILENKO
+PARIPOVIĆ MILE
+PARIPOVIĆ MILKA
+PARIPOVIĆ PAJA
+PARIPOVIĆ SLOBODAN
+PARIPOVIĆ SVETOZAR
+PARIPOVIĆ VLADIMIR
+PARIPOVIĆ VLADISLAVKA
+PARIPOVIĆ ZORAN
+PARKANJI SAMUEL
+PARLAĆ LJUBOMIR
+PARLAĆ MARINKO
+PARLAĆ MIODRAG
+PARLIĆ ANA
+PARLIĆ JEVTA
+PARLIĆ NIKOLA
+PARMAĆ NEDELJKO
+PARNICKI IVAN
+PARNICKI JOVAN
+PAROŠKAJ ĐURA
+PAROŠKAJ DANILO
+PAROŠKI ĐORĐE
+PAROŠKI ĐORĐE
+PAROŠKI ALEKSANDAR
+PAROŠKI ALEKSANDAR
+PAROŠKI ANA
+PAROŠKI ANKICA
+PAROŠKI BORIVOJ
+PAROŠKI BRANISLAV
+PAROŠKI DAMJAN
+PAROŠKI DIMITRIJE
+PAROŠKI DOBRILA
+PAROŠKI DRAGAN
+PAROŠKI DUŠAN
+PAROŠKI GLIŠA
+PAROŠKI GORDAN
+PAROŠKI IVAN
+PAROŠKI JELENA
+PAROŠKI JELICA
+PAROŠKI JOVAN
+PAROŠKI MARIJA
+PAROŠKI MILAN
+PAROŠKI MILAN
+PAROŠKI MILAN
+PAROŠKI MILICA
+PAROŠKI MILOŠ
+PAROŠKI MILORAD
+PAROŠKI MILOVAN
+PAROŠKI MIRA
+PAROŠKI MIRJANA
+PAROŠKI MIRKO
+PAROŠKI NESTOR
+PAROŠKI OBREN
+PAROŠKI OLGA
+PAROŠKI PETAR
+PAROŠKI PUNIŠA
+PAROŠKI RADMILA
+PAROŠKI RAJKO
+PAROŠKI ROŽA
+PAROŠKI SAVA
+PAROŠKI SLAVICA
+PAROŠKI SOFIJA
+PAROŠKI STEVAN
+PAROŠKI VEROLJUB
+PAROŠKI VLADIMIR
+PAROŠKI ZAGORKA
+PAROCI JOSIP
+PAROCI JULIJANA
+PAROCI KARLO
+PAROCI LJILJANA
+PAROCI TIBOR
+PAROCI TIBOR
+PAROCI TIBOR
+PAROJČIĆ LJUBICA
+PAROJČIĆ SLOBODAN
+PAROKAI MIRKO
+PAROVIĆ SLAVKO
+PARUŽIĆ PANTA
+PARUCKI MIHAJLO
+PASARIĆ RUŽA
+PASKAŠ MILAN
+PASKAŠ MILKA
+PASKAŠ NATAŠA
+PASKALI GORAN
+PASKALJEVIĆ ALEKSANDAR
+PASKU DIMITRIJE
+PASKULOV MIROLJUB
+PAST ROBERT
+PASTERKO STEVAN
+PASTONJICKI ELEMIR
+PASTOR GEZA
+PASTOR JANOŠ
+PASTOR JANOŠ
+PASTOR JOSIP
+PASTOR JOSIP
+PASTOR JOZEF
+PASTOR LASLO
+PASTOR MARIJA
+PASTOR MIHAJLO
+PASTOR MILAN
+PASTOR PETAR
+PASTOR STJEPAN
+PASTORNAČKI ĐURĐINKA
+PASTORNAČKI LAZAR
+PASTORNAČKI LJUBIŠA
+PASTORNAČKI MARIJA
+PASTORNAČKI RADOSLAV
+PASTORNJICKI GORDANA
+PATAFTA JULIJA
+PATAFTA STEVAN
+PATAJ ARANKA DR
+PATAK PAVLE
+PATAKI ANA
+PATAKI EVA
+PATAKI GORAN
+PATARIĆ STIPAN
+PATARICA ELEMER
+PATIĆ DRAGOMIR
+PATIĆ RADOSAV
+PATIĆ RATKO
+PATIĆ VLADIMIR
+PATLEJH NADEŽDA
+PATRIK LAJOŠ
+PATRIK STEVAN
+PATRNOGIĆ BRANISLAV DIPL ING
+PATRNOGIĆ DUŠAN DR
+PATRNOGIĆ DUŠICA
+PATRNOGIĆ LIDIJA
+PAUŠIĆ IVAN
+PAUŠIĆ MARKO
+PAUKOVIĆ MIRJANA
+PAUL KATICA
+PAUL LAJOŠ
+PAUL LAJOŠ
+PAUL OSKAR
+PAULIĆ MILE
+PAULIK ALEKSANDAR
+PAULIK PERO
+PAULIK PETAR
+PAULOVIĆ DRAGUTIN
+PAUNESKU VASA
+PAUNIĆ ŽIVKO DIPL ING
+PAUNIĆ ĐURA
+PAUNIĆ ALIMPIJE
+PAUNIĆ BRANKO
+PAUNIĆ DIMITRIJE
+PAUNIĆ DRAGOMIR
+PAUNIĆ ILIJA
+PAUNIĆ LAZAR
+PAUNIĆ MILANA
+PAUNIĆ MILEVA
+PAUNIĆ MILE
+PAUNIĆ STANIMIR
+PAUNIĆ TOMA
+PAUNIĆ VUKAŠIN
+PAUNKOVIĆ JOVANA
+PAUNKOVIĆ LJILJANA
+PAUNKOVIĆ VELIMIR
+PAUNKOVIĆ VLADIMIR
+PAUNKU AURELIJA
+PAUNOVIĆ ČASLAV
+PAUNOVIĆ ANTO
+PAUNOVIĆ BOGDAN
+PAUNOVIĆ BOGDAN
+PAUNOVIĆ BRANKA
+PAUNOVIĆ BRANKO
+PAUNOVIĆ DIMITRIJE
+PAUNOVIĆ DRAGOLJUB
+PAUNOVIĆ DRAGUTIN
+PAUNOVIĆ GOSPAVA
+PAUNOVIĆ JELENA
+PAUNOVIĆ JOVAN
+PAUNOVIĆ JOVICA
+PAUNOVIĆ KATICA
+PAUNOVIĆ KOVILJKA
+PAUNOVIĆ KOVILJKA
+PAUNOVIĆ LJILJANA
+PAUNOVIĆ LJUBIVOJE
+PAUNOVIĆ MARINA
+PAUNOVIĆ MELINDA
+PAUNOVIĆ MILICA
+PAUNOVIĆ MILOMIR
+PAUNOVIĆ MILORAD
+PAUNOVIĆ MILORAD
+PAUNOVIĆ MILORAD
+PAUNOVIĆ NIKOLA
+PAUNOVIĆ PAUN
+PAUNOVIĆ PETAR
+PAUNOVIĆ RADOŠ
+PAUNOVIĆ RADOSLAV
+PAUNOVIĆ RADOSLAV
+PAUNOVIĆ RATOMIR
+PAUNOVIĆ SLAVA
+PAUNOVIĆ SLOBODANKA
+PAUNOVIĆ SRBICA
+PAUNOVIĆ STOJANKA
+PAUNOVIĆ TOMISLAV
+PAUNOVIĆ VUKOSAVA
+PAUNOVIĆ ZORAN
+PAUNOVIĆ ZVONKO
+PAUT MILAN
+PAUZENBERGER IRENA
+PAUZENBERGER JOVAN
+PAVAI FRANJA
+PAVELKA DANIELA
+PAVELKA VLADIMIR
+PAVIČ DANICA
+PAVIČEVIĆ MILAN
+PAVIČEVIĆ NADA
+PAVIČIĆ DRAGICA
+PAVIČIĆ IVAN
+PAVIČIĆ MIRKO
+PAVIŠIĆ ĐURA
+PAVIĆ ĐURO
+PAVIĆ ANKA
+PAVIĆ ARON
+PAVIĆ BILJANA
+PAVIĆ DUŠAN
+PAVIĆ GAŠO
+PAVIĆ GOJKO
+PAVIĆ JOŽEF
+PAVIĆ LJUBIŠA
+PAVIĆ LJUBICA
+PAVIĆ LJUBOMIR
+PAVIĆ MARIJA
+PAVIĆ MILAN
+PAVIĆ MILAN
+PAVIĆ MILICA
+PAVIĆ SLAVKO
+PAVIĆ STEVAN
+PAVIĆ-SULOCKI ESTER
+PAVIĆ TEREZIJA
+PAVIĆ VENKO
+PAVIĆ VERKA
+PAVIĆEVIĆ ALEKSANDAR
+PAVIĆEVIĆ ALEKSANDAR
+PAVIĆEVIĆ ANANIJE
+PAVIĆEVIĆ BRANISLAV
+PAVIĆEVIĆ DESA
+PAVIĆEVIĆ DRAGAN
+PAVIĆEVIĆ DUŠAN
+PAVIĆEVIĆ DUŠAN
+PAVIĆEVIĆ JELENA
+PAVIĆEVIĆ LJILJANA
+PAVIĆEVIĆ MILANKO
+PAVIĆEVIĆ MILOŠ
+PAVIĆEVIĆ MILOMIR
+PAVIĆEVIĆ MILUTIN
+PAVIĆEVIĆ MIODRAG
+PAVIĆEVIĆ MIODRAG
+PAVIĆEVIĆ MIRA
+PAVIĆEVIĆ MIRKO
+PAVIĆEVIĆ SLAVKO
+PAVIĆEVIĆ SLOBODAN
+PAVIN LJUBICA
+PAVKOV ŽIVKO
+PAVKOV ŽIVOJIN
+PAVKOV ĐURĐEVKA
+PAVKOV ĐURĐINA
+PAVKOV ALEKSANDAR
+PAVKOV ANKA
+PAVKOV BOŽIDAR
+PAVKOV BOSILJKA
+PAVKOV BRANKO
+PAVKOV DRAGAN
+PAVKOV DRAGAN
+PAVKOV DUŠAN
+PAVKOV DUŠAN
+PAVKOV GOJKO
+PAVKOV GORDANA
+PAVKOV IVANKA
+PAVKOV JOVAN
+PAVKOV JOVAN
+PAVKOV JOVAN
+PAVKOV KATICA
+PAVKOV LAZAR
+PAVKOV MILAN
+PAVKOV MILAN
+PAVKOV MILAN
+PAVKOV MILIVOJ DIPL ING
+PAVKOV MILOŠ
+PAVKOV MILOJE
+PAVKOV MILORAD
+PAVKOV MILORAD
+PAVKOV MILUTIN
+PAVKOV MITAR
+PAVKOV NADA
+PAVKOV NADA
+PAVKOV PAVLE
+PAVKOV PETAR
+PAVKOV RADIVOJ
+PAVKOV RADOVAN
+PAVKOV RATOMIR
+PAVKOV SAVA
+PAVKOV SAVA
+PAVKOV SINIŠA
+PAVKOV SLAVKO
+PAVKOV STEVAN
+PAVKOV STEVAN
+PAVKOV STEVAN
+PAVKOV UROŠ
+PAVKOV VITOMIR
+PAVKOV ZORAN
+PAVKOV ZORKA
+PAVKOVIĆ BOŽIDAR
+PAVKOVIĆ BORISLAV
+PAVKOVIĆ DRAGANA
+PAVKOVIĆ DRAGICA
+PAVKOVIĆ JOVANKA
+PAVKOVIĆ KATICA
+PAVKOVIĆ NIKOLA
+PAVKOVIĆ PETAR
+PAVKOVIĆ RADOJE
+PAVLEKIĆ STEVAN
+PAVLESKI MENKA
+PAVLEVSKI DESA
+PAVLEVSKI TRAJAN
+PAVLIČ MIRKO
+PAVLIČIĆ KREŠIMIR
+PAVLIČIĆ LJUBIŠA DR
+PAVLIĆ ĐORĐE
+PAVLIĆ BORISLAV
+PAVLIĆ BRANKO DIPL ING
+PAVLIĆ PETAR DIPL ING
+PAVLIĆ VLADA
+PAVLIĆEV ĐORĐE
+PAVLICA BRANISLAV
+PAVLICA JOVAN
+PAVLICA LAZAR
+PAVLICA MARICA
+PAVLICA MICA
+PAVLICA MILAN
+PAVLICA MILENA
+PAVLICA MILEVA
+PAVLICA NADA
+PAVLICA NIKOLA
+PAVLICA NIKOLA
+PAVLICA SAVO
+PAVLICA SOFIJA
+PAVLICA TODOR
+PAVLICA VLADIMIR
+PAVLIK ANTAL
+PAVLIK JOSIP
+PAVLIK KATARINA
+PAVLIK MIŠA
+PAVLIK VINKO
+PAVLOV ŽARKO
+PAVLOV ŽIVAN
+PAVLOV ŽIVKA
+PAVLOV ĐOKA
+PAVLOV ALEKSANDAR
+PAVLOV ALEKSANDAR
+PAVLOV ALEKSANDAR
+PAVLOV BOGDANKA
+PAVLOV BORISLAV
+PAVLOV DANICA
+PAVLOV DANILO
+PAVLOV DRAGINJA
+PAVLOV DRAGOMIR
+PAVLOV DUŠANKA
+PAVLOV DUŠANKA
+PAVLOV DUŠAN
+PAVLOV DUŠAN
+PAVLOV JOVAN
+PAVLOV KATICA
+PAVLOV-KOSTIĆ ANA DR
+PAVLOV KOVILJKA
+PAVLOV KRISTINA
+PAVLOV KUZMAN
+PAVLOV LAZAR
+PAVLOV LAZAR
+PAVLOV LJUBICA
+PAVLOV LJUBICA
+PAVLOV MARIJA
+PAVLOV MILAN
+PAVLOV MILETA
+PAVLOV MILIVOJ
+PAVLOV MILORAD
+PAVLOV MILORAD
+PAVLOV MILOVAN
+PAVLOV MILOVAN
+PAVLOV MILUTIN
+PAVLOV MIRA
+PAVLOV-MIRKOVIĆ MIROSLAVA DR
+PAVLOV MIROSLAV
+PAVLOV MIROSLAV
+PAVLOV MITKO
+PAVLOV NADA
+PAVLOV NADA
+PAVLOV NATALIJA
+PAVLOV NEVENKA
+PAVLOV OLGA
+PAVLOV PAJA
+PAVLOV PAVEL
+PAVLOV PAVEL
+PAVLOV PAVLE
+PAVLOV PETAR
+PAVLOV PETAR
+PAVLOV RADA
+PAVLOV RADIVOJ
+PAVLOV RADMILA
+PAVLOV RADOSLAVA
+PAVLOV RADOSLAV
+PAVLOV SAVA
+PAVLOV SAVA
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STEVAN
+PAVLOV STOJAN
+PAVLOV SVETOZAR
+PAVLOV VASILIJE
+PAVLOV VERA
+PAVLOV VERA
+PAVLOV VERICA
+PAVLOV VIDOSAVA
+PAVLOV VLADIMIR
+PAVLOV VLASTIMIR
+PAVLOVIĆ ČEDOMIR
+PAVLOVIĆ ŽARKO
+PAVLOVIĆ-ŽENER OLGA
+PAVLOVIĆ ĐORĐE
+PAVLOVIĆ ĐORĐE
+PAVLOVIĆ ĐORĐE
+PAVLOVIĆ ĐORĐO
+PAVLOVIĆ ĐORĐO
+PAVLOVIĆ ALEKSANDAR DR
+PAVLOVIĆ ALEKSANDAR
+PAVLOVIĆ ALEKSIJE
+PAVLOVIĆ ANA
+PAVLOVIĆ ANA
+PAVLOVIĆ ANDRIJA
+PAVLOVIĆ ANICA
+PAVLOVIĆ ANKICA
+PAVLOVIĆ BLAGOJE
+PAVLOVIĆ BLAGO
+PAVLOVIĆ BOŽIDAR
+PAVLOVIĆ BOŽO
+PAVLOVIĆ BOGDAN
+PAVLOVIĆ BOGOLJUB
+PAVLOVIĆ BORA
+PAVLOVIĆ BORISAV
+PAVLOVIĆ BORISLAV
+PAVLOVIĆ BORISLAV
+PAVLOVIĆ BRANKO
+PAVLOVIĆ BRANKO
+PAVLOVIĆ CVETAN
+PAVLOVIĆ DEJAN
+PAVLOVIĆ DIMITRIJE
+PAVLOVIĆ DOBRIVOJ
+PAVLOVIĆ DOBROSLAV
+PAVLOVIĆ DRAGAN
+PAVLOVIĆ DRAGAN
+PAVLOVIĆ DRAGAN
+PAVLOVIĆ DRAGAN
+PAVLOVIĆ DRAGOLJUB
+PAVLOVIĆ DRAGOLJUB
+PAVLOVIĆ DRAGOSLAVA
+PAVLOVIĆ DRAGOSLAV
+PAVLOVIĆ DRAGUTIN
+PAVLOVIĆ DUŠANKA
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠAN
+PAVLOVIĆ DUŠKO
+PAVLOVIĆ EMIL
+PAVLOVIĆ ERŽEBET
+PAVLOVIĆ ERŽEBET
+PAVLOVIĆ GOJKO
+PAVLOVIĆ GORINKA
+PAVLOVIĆ ILIJA
+PAVLOVIĆ ILIJA
+PAVLOVIĆ ILONA
+PAVLOVIĆ ILONA
+PAVLOVIĆ IRINA
+PAVLOVIĆ IVAN DIPL ING
+PAVLOVIĆ IVAN
+PAVLOVIĆ JAGO
+PAVLOVIĆ JANKO
+PAVLOVIĆ JANKO
+PAVLOVIĆ JANOŠ
+PAVLOVIĆ JELA
+PAVLOVIĆ JELENA
+PAVLOVIĆ JELENA
+PAVLOVIĆ JELENA
+PAVLOVIĆ JELENA
+PAVLOVIĆ JELICA
+PAVLOVIĆ JOAKIM
+PAVLOVIĆ JOVAN
+PAVLOVIĆ JOVAN
+PAVLOVIĆ JOVICA
+PAVLOVIĆ KATARINA
+PAVLOVIĆ KATICA
+PAVLOVIĆ KONSTANTIN
+PAVLOVIĆ KOVINKA
+PAVLOVIĆ LAZAR
+PAVLOVIĆ LAZAR
+PAVLOVIĆ LAZAR
+PAVLOVIĆ LJUBIŠA
+PAVLOVIĆ MAGDA
+PAVLOVIĆ MARA DIPL ING
+PAVLOVIĆ MARA
+PAVLOVIĆ MARICA
+PAVLOVIĆ MARKO DIPL ING
+PAVLOVIĆ MARKO
+PAVLOVIĆ MICA
+PAVLOVIĆ MILADIN
+PAVLOVIĆ MILAN
+PAVLOVIĆ MILAN
+PAVLOVIĆ MILENA
+PAVLOVIĆ MILENKO
+PAVLOVIĆ MILENKO
+PAVLOVIĆ MILE
+PAVLOVIĆ MILE
+PAVLOVIĆ MILICA
+PAVLOVIĆ MILICA
+PAVLOVIĆ MILICA
+PAVLOVIĆ MILISAV
+PAVLOVIĆ MILJANA
+PAVLOVIĆ MILKA
+PAVLOVIĆ MILKA
+PAVLOVIĆ MILOJE
+PAVLOVIĆ MILOJE
+PAVLOVIĆ MILOMIR
+PAVLOVIĆ MILORAD DR
+PAVLOVIĆ MILORAD
+PAVLOVIĆ MILORAD
+PAVLOVIĆ MILORAD
+PAVLOVIĆ MILOSAVA
+PAVLOVIĆ MILOSAV
+PAVLOVIĆ MILOVAN
+PAVLOVIĆ MILOVAN
+PAVLOVIĆ MIODRAG
+PAVLOVIĆ MIODRAG
+PAVLOVIĆ MIODRAG
+PAVLOVIĆ MIRA
+PAVLOVIĆ MIRJANA DR
+PAVLOVIĆ MIRJANA
+PAVLOVIĆ MIRJANA
+PAVLOVIĆ MIRJANA
+PAVLOVIĆ MIRKO DIPL OEC
+PAVLOVIĆ MIRKO
+PAVLOVIĆ MIRKO
+PAVLOVIĆ MIROSLAVA
+PAVLOVIĆ MIROSLAV
+PAVLOVIĆ MOMČILO
+PAVLOVIĆ NADA DR
+PAVLOVIĆ NADA
+PAVLOVIĆ NADA
+PAVLOVIĆ NEDELJKA
+PAVLOVIĆ NEDELJKO
+PAVLOVIĆ NEMANJA
+PAVLOVIĆ NEMANJA
+PAVLOVIĆ NIKOLA
+PAVLOVIĆ NIKOLA
+PAVLOVIĆ NIKOLICA
+PAVLOVIĆ NINA
+PAVLOVIĆ NOVAK
+PAVLOVIĆ OLGA
+PAVLOVIĆ OLGA
+PAVLOVIĆ OLGA
+PAVLOVIĆ OLGA
+PAVLOVIĆ PAVLE
+PAVLOVIĆ PAVLE
+PAVLOVIĆ PEĐA
+PAVLOVIĆ PERO
+PAVLOVIĆ PETAR
+PAVLOVIĆ PETAR
+PAVLOVIĆ PETAR
+PAVLOVIĆ PLEMENKA
+PAVLOVIĆ-POPOVIĆ ZORA DR LEKAR
+PAVLOVIĆ PREDRAG
+PAVLOVIĆ PREDRAG
+PAVLOVIĆ PRVOSLAV
+PAVLOVIĆ RADENKO
+PAVLOVIĆ RADIVOJ
+PAVLOVIĆ RADMILA
+PAVLOVIĆ RADMILO DIPL ING
+PAVLOVIĆ RADMILO
+PAVLOVIĆ RADOJE
+PAVLOVIĆ RADOJKA
+PAVLOVIĆ RADOMIR DIPL OEC
+PAVLOVIĆ RADOMIR
+PAVLOVIĆ RADOSLAVA
+PAVLOVIĆ RADOVAN DR VETERINE
+PAVLOVIĆ RADOVAN
+PAVLOVIĆ RAJKO
+PAVLOVIĆ RANKO
+PAVLOVIĆ RATKO
+PAVLOVIĆ SAVA
+PAVLOVIĆ SAVO
+PAVLOVIĆ SIMA
+PAVLOVIĆ SIMEON
+PAVLOVIĆ SIMEON
+PAVLOVIĆ SINIŠA
+PAVLOVIĆ SLAVICA
+PAVLOVIĆ SLAVKO DIPL ING
+PAVLOVIĆ SLAVKO
+PAVLOVIĆ SLAVKO
+PAVLOVIĆ SLAVKO
+PAVLOVIĆ SLOBODAN DR
+PAVLOVIĆ SLOBODAN
+PAVLOVIĆ SLOBODAN
+PAVLOVIĆ SLOBODAN
+PAVLOVIĆ SMILJA
+PAVLOVIĆ STANA
+PAVLOVIĆ STANIKA
+PAVLOVIĆ STANISLAV
+PAVLOVIĆ STEVANKA
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STEVAN
+PAVLOVIĆ STJEPAN
+PAVLOVIĆ STOJAN
+PAVLOVIĆ STOJAN
+PAVLOVIĆ SVETISLAV
+PAVLOVIĆ SVETOZAR
+PAVLOVIĆ TOŠA
+PAVLOVIĆ TOMA
+PAVLOVIĆ TOMISLAV DR
+PAVLOVIĆ VELIZAR
+PAVLOVIĆ VERA
+PAVLOVIĆ VERA
+PAVLOVIĆ VERA
+PAVLOVIĆ VIDA
+PAVLOVIĆ VIDOSAVA
+PAVLOVIĆ VIDOSAVA
+PAVLOVIĆ VIDOSLAV
+PAVLOVIĆ VITOMIR
+PAVLOVIĆ VITOMIR
+PAVLOVIĆ VLADIMIR
+PAVLOVIĆ VOJISLAV
+PAVLOVIĆ ZAGORKA
+PAVLOVIĆ ZDRAVKO
+PAVLOVIĆ ZORAN
+PAVLOVIĆ ZORAN
+PAVLOVIĆ ZORAN
+PAVLOVIĆ ZORAN
+PAVLOVIĆ ZORA
+PAVLOVIĆ ZORICA
+PAVLOVIĆ ZVONIMIR
+PAVLOVSKI ALEKSANDAR
+PAVLOVSKI MARIJA
+PAVLOVSKI SERGEJ
+PAVOŠEVIĆ ANKA
+PAVOŠEVIĆ RODOLJUB
+PAZARSKI STEVAN
+PAZMANJ JULIJANA
+PEČARIĆ KATICA
+PEČI GEZA
+PEČI IŠTVAN
+PEČI MARIJA
+PEČKAI-KOVAČ ANA
+PEČKAI MARGITA
+PEČVARAC STANOJE
+PEŠENJANSKI IVAN
+PEŠENJANSKI IVAN
+PEŠENJANSKI KARLO
+PEŠEVIĆ BOGDAN
+PEŠEVSKI ĐOKA
+PEŠEVSKI TOME
+PEŠEVSKI VLADO
+PEŠIĆ ŽIVAN
+PEŠIĆ ALEKSANDAR
+PEŠIĆ ANĐELKO
+PEŠIĆ BUDIMIR
+PEŠIĆ DESIMIR
+PEŠIĆ DIMITRIJE
+PEŠIĆ DIMITRIJE
+PEŠIĆ DRAGAN
+PEŠIĆ DRAGICA
+PEŠIĆ DRAGOLJUB
+PEŠIĆ DRAGOLJUB
+PEŠIĆ GOJKO
+PEŠIĆ GRADIMIR
+PEŠIĆ ILIJA
+PEŠIĆ JORDAN
+PEŠIĆ JOVAN
+PEŠIĆ LJUBICA
+PEŠIĆ MILADIN
+PEŠIĆ MILAN
+PEŠIĆ MILINKO
+PEŠIĆ MILUTIN
+PEŠIĆ MILUTIN
+PEŠIĆ MIROSLAV
+PEŠIĆ PETAR
+PEŠIĆ RADMILA
+PEŠIĆ RAJKO
+PEŠIĆ RUŽA
+PEŠIĆ SAVA
+PEŠIĆ STANOJE
+PEŠIĆ STEVAN DR
+PEŠIĆ VLADIMIR
+PEŠIĆ VUKAŠIN
+PEŠIKAN TIHOMIR
+PEŠIKAN VUK
+PEŠKA ANA
+PEŠKAN DRAGAN
+PEŠKAN VERA
+PEŠKANOV MILORAD
+PEŠKANOV PERSIDA
+PEŠKANOV STEVAN
+PEŠKANOV TODOR
+PEŠOVIĆ MILIVOJE
+PEŠOVIĆ STOJAN
+PEŠTALIĆ SLOBODANKA
+PEŠTERAC ČEDOMIR
+PEŠTERAC MILOMIR
+PEŠTERAC MILUTIN
+PEŠTI JOŽEF
+PEŠUT ALEKSANDRA
+PEŠUT BOŠKO
+PEŠUT BRANKO
+PEŠUT DUŠAN
+PEŠUT DUŠAN
+PEŠUT ILIJA
+PEŠUT MARIJA
+PEŠUT MILAN
+PEŠUT MILICA
+PEŠUT SLAVKA
+PEŠUT SMILJA
+PEŠUT VLADIMIR
+PEĆANAC BOSILJKA
+PEĆANAC DIMITRIJE
+PEĆANAC JOVAN
+PEĆANAC NIKOLA
+PEĆANAC VESNA
+PEĆANIN DUŠAN
+PEĆANIN LJUBIŠA DIPL ING
+PEĆANIN MIROSLAVA
+PEĆANIN OMILJEN
+PEĆANIN-VERMEZOVIĆ OLJA
+PEĆKO DANILO
+PEĆKO VERA
+PEĆO LAZAR
+PEĆO LUKA
+PEĆO SVETOZAR
+PEC JULIJE
+PECARSKI LEKSA
+PECE ĐORĐE
+PECE ĐORĐE
+PECE ALEKSANDAR
+PECE ANTON
+PECE ILEŠ
+PECE ZOLTAN
+PECELJ BOŽO
+PECELJ STEVAN
+PECIĆ ACA
+PECIĆ KATARINA
+PECIĆ MIODRAG
+PECIĆ STEVAN
+PECNJIK ANA
+PECO MIRSAD
+PECOVIĆ RADOMIR
+PEDOVIĆ RATOMIR
+PEIĆ-TUKULJAC VJEKOSLAV
+PEJČIĆ BOŽIDAR
+PEJČIĆ BRATISLAV
+PEJČIĆ DOBRIVOJE
+PEJČIĆ DOBRIVOJ
+PEJČIĆ DOBROSAV
+PEJČIĆ DRAGOMIR
+PEJČIĆ DUŠANKA
+PEJČIĆ DUBRAVKA
+PEJČIĆ GRADIMIR
+PEJČIĆ ILIJA
+PEJČIĆ ILIJA
+PEJČIĆ JASMINA
+PEJČIĆ JOVAN
+PEJČIĆ JOVAN
+PEJČIĆ LJUBICA
+PEJČIĆ LJUBOMIR
+PEJČIĆ MILENKO
+PEJČIĆ MILE
+PEJČIĆ MIODRAG
+PEJČIĆ MIROSLAV
+PEJČIĆ MITAR
+PEJČIĆ MOMČILO
+PEJČIĆ NOVAK
+PEJČIĆ PETAR
+PEJČIĆ RADOSLAVA
+PEJČIĆ RUŽA
+PEJČIĆ SAVA
+PEJČIĆ SAVA
+PEJČIĆ SVETISLAV
+PEJČIĆ VOJISLAV
+PEJČIĆ VOJISLAV
+PEJČIĆ ZORAN
+PEJAK ĐORĐE
+PEJAK ĐURA
+PEJAK BRANKO
+PEJAK DRAGOSLAVA
+PEJAK JELENA
+PEJAK JOVAN
+PEJAK JOVICA
+PEJAK LAZAR
+PEJAK LJUBICA
+PEJAK MILAN
+PEJAK MILINKA
+PEJAK MIODRAG
+PEJAK MIRJANA
+PEJAK MOJA
+PEJAK NEVENKA
+PEJAK RADOVAN
+PEJAK RAJKO
+PEJAK SAVA
+PEJAK SLAVKO
+PEJAK TRIVA
+PEJAK VERICA
+PEJAK VLADIMIR
+PEJAKIĆ MARKO
+PEJAKOVIĆ ŽARKO
+PEJAKOVIĆ ĐORĐE
+PEJAKOVIĆ DUŠAN
+PEJAKOVIĆ ILIJA
+PEJAKOVIĆ MILENKO
+PEJAKOVIĆ NANDOR
+PEJAKOVIĆ NENAD
+PEJAKOVIĆ PERICA
+PEJAKOVIĆ PETAR
+PEJAKOVIĆ PREDRAG
+PEJANOVIĆ ĐORĐE
+PEJANOVIĆ ANĐELKO
+PEJANOVIĆ BRANKO
+PEJANOVIĆ DIMITRIJE
+PEJANOVIĆ MILKA
+PEJANOVIĆ RADOVAN DR
+PEJANOVIĆ ZORAN
+PEJIČIĆ MILAN
+PEJIĆ ŽIVAN
+PEJIĆ ALEKSANDAR
+PEJIĆ ALEKSANDAR
+PEJIĆ ANICA
+PEJIĆ ANTON
+PEJIĆ BOGDANKA
+PEJIĆ BORIVOJ
+PEJIĆ BRANISLAV
+PEJIĆ BRANISLAV
+PEJIĆ DRAGAN
+PEJIĆ DRAGAN
+PEJIĆ DRAGIŠA
+PEJIĆ DRAGICA
+PEJIĆ DRAGO
+PEJIĆ DRAGO
+PEJIĆ DUŠAN
+PEJIĆ DUŠAN
+PEJIĆ DUŠAN
+PEJIĆ GAVRA
+PEJIĆ IVAN
+PEJIĆ IVAN
+PEJIĆ JANJA
+PEJIĆ JOVAN
+PEJIĆ LJUBOMIR
+PEJIĆ MARA
+PEJIĆ MIHAJLO
+PEJIĆ MILAN
+PEJIĆ MILAN
+PEJIĆ MILAN
+PEJIĆ MILENKO
+PEJIĆ MILICA
+PEJIĆ MILOŠ
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILORAD
+PEJIĆ MILOSAV
+PEJIĆ NEDELJKO
+PEJIĆ NIKOLA
+PEJIĆ NIKO
+PEJIĆ NOVAK
+PEJIĆ ORJEN
+PEJIĆ PREDRAG
+PEJIĆ RADOJKA
+PEJIĆ RADOSAV
+PEJIĆ RAJKO
+PEJIĆ RUŽICA
+PEJIĆ SLOBODANKA
+PEJIĆ SLOBODAN
+PEJIĆ SLOBODAN
+PEJIĆ SOFIJA
+PEJIĆ STANKO
+PEJIĆ STEVAN
+PEJIĆ STIPAN
+PEJIĆ VERICA
+PEJIĆ VLADO
+PEJIN ĐORĐE
+PEJIN ĐURĐINA
+PEJIN ANĐELKA
+PEJIN BRANIMIR
+PEJIN BRANIMIR
+PEJIN BRANIMIR
+PEJIN DEJAN
+PEJIN DIMITRIJE
+PEJIN DUŠAN DR
+PEJIN GOJKO
+PEJIN JELENA
+PEJIN JOVAN
+PEJIN LAZAR DIPL OEC
+PEJIN MARIJA
+PEJIN MARITA
+PEJIN MILIVOJ
+PEJIN MILOŠ
+PEJIN MILORAD
+PEJIN MIROSLAV
+PEJIN MLADEN
+PEJIN NENAD
+PEJIN NIKOLA
+PEJIN NIKOLA
+PEJIN NIKOLA
+PEJIN NOVAK
+PEJIN PAVLE
+PEJIN PERSIDA
+PEJIN PLAVŠA
+PEJIN RADA
+PEJIN RADA
+PEJIN RADOSLAV
+PEJIN STEVAN
+PEJIN STEVAN
+PEJIN VASA
+PEJIN VERICA
+PEJIN VUKOSAVA
+PEJINOV BRANISLAV
+PEJINOV LJUBICA
+PEJINOV VELJKO
+PEJINOVIĆ DRAGAN
+PEJKOVIĆ ALEKSANDAR
+PEJKOVIĆ DANILKA
+PEJKOVIĆ IBOLJKA
+PEJKOVIĆ IVAN
+PEJKOVIĆ JASNA
+PEJNOVIĆ BOSILJKA
+PEJNOVIĆ LJUBINKA
+PEJNOVIĆ MILAN
+PEJNOVIĆ MIROSLAV
+PEJNOVIĆ NIKOLA
+PEJNOVIĆ STEVAN
+PEJOVIĆ ĐOKA
+PEJOVIĆ ĐUKAN
+PEJOVIĆ ALEKSANDAR
+PEJOVIĆ ALEKSANDAR
+PEJOVIĆ BOŽIDAR
+PEJOVIĆ BORISLAV
+PEJOVIĆ BORIVOJE
+PEJOVIĆ BORKA
+PEJOVIĆ BOSILJKA
+PEJOVIĆ BRANKA
+PEJOVIĆ DANICA
+PEJOVIĆ DANILO
+PEJOVIĆ DAVID
+PEJOVIĆ DEJAN
+PEJOVIĆ DOBRILA
+PEJOVIĆ DRAGICA
+PEJOVIĆ LJUBO
+PEJOVIĆ MARKO
+PEJOVIĆ MILAN
+PEJOVIĆ MILENA
+PEJOVIĆ MILENA
+PEJOVIĆ MILIJA
+PEJOVIĆ MILOJKA
+PEJOVIĆ MIODRAG
+PEJOVIĆ MIRJANA
+PEJOVIĆ MOMIR
+PEJOVIĆ NADA
+PEJOVIĆ OLGA
+PEJOVIĆ PAVLE
+PEJOVIĆ PETAR
+PEJOVIĆ SAVA
+PEJOVIĆ SLAVKA
+PEJOVIĆ SLOBODANKA
+PEJOVIĆ SLOBODAN
+PEJOVIĆ TOMISLAV
+PEJOVSKI DRAGAN
+PEJOVSKI KOLE
+PEJOVSKI TOMISLAV
+PEKAR DARKO
+PEKAR JANOŠ
+PEKAR MILKA
+PEKAR ROZALIJA
+PEKAROVIĆ DRAGICA
+PEKAS ANTE
+PEKEČ MITA
+PEKEZ BRANKO
+PEKEZ JOVAN
+PEKEZ JOVAN
+PEKEZ MARICA
+PEKEZ MILORAD
+PEKEZ STANA
+PEKEZ ZORA
+PEKIĆ BRANISLAV DR
+PEKIĆ GORAN
+PEKIĆ KRSTO
+PEKIĆ MIHAJLO
+PEKIĆ MILAN
+PEKIĆ MILAN
+PEKIĆ MILOŠ
+PEKIĆ MIRKO
+PEKIĆ STEVAN
+PEKOVIĆ ŽELJKO
+PEKOVIĆ ILIJA
+PEKOVIĆ MAGDALENA
+PEKOVIĆ MILIVOJE
+PEKOVIĆ MITRUŠA
+PEKOVIĆ-PARLAĆ SMILJA DR
+PEKOVIĆ PAVA
+PEKOVIĆ VERA
+PEKOVIĆ VIDA
+PEKOVIĆ VUKAŠIN
+PEKURAR KORNEL
+PEKURAR ROMAN
+PELAGIĆ NADA
+PELAGIĆ SRĐAN
+PELE FERENC
+PELE MARIJA
+PELE ZOLTAN
+PELEGRIN STJEPAN
+PELEGRIN VLADO
+PELEVIĆ BRANKO
+PELHE FRANJA DR
+PELJHA ĐURA
+PELJHA SANJA
+PELJHA ZVONKO
+PELOZA DUŠAN
+PELOZA NADA
+PELVA JOSIP
+PELVA JOVAN
+PELVA ZOLTAN
+PELVAI-ZORIĆ EDIT
+PEMAC BRANISLAV
+PEMAC LAZAR
+PENA MARINKO
+PENA MILAN
+PENA MIODRAG
+PENA RADIVOJ
+PENA SLOBODAN
+PENAC STAKICA
+PENAVIN VELIMIR
+PENC DOBRILA
+PENC IRENA
+PENCA SLAVKO
+PENDŽIĆ BRANISLAV
+PENDŽIĆ JEROSIMA
+PENEZIĆ DUŠAN
+PENEZIĆ NENAD
+PENEZIĆ RADOSLAV
+PENEZIĆ ZORICA
+PENIĆ ČEDOMIR
+PENIĆ ĐURĐICA
+PENIĆ BORISLAV
+PENIĆ BRANKO
+PENIĆ MIHAJLO
+PENIĆ MILEVA
+PENIĆ MILICA
+PENIĆ PAVLE
+PENIĆ SLAVKO
+PENIĆ STEVAN
+PENIĆ VLADIMIR
+PENJAŠKOVIĆ ZVONIMIR
+PENJIN ŽIVA
+PENJIN SLAVKO
+PENOV EMIL
+PENOV LJUBIŠA
+PENOV MARKO
+PENZEŠ ĐORĐE
+PENZEŠ FERENC
+PENZEŠ FERENC
+PENZEŠ MIHALJ
+PENZEŠ MIHALJ
+PENZEŠ TIBOR
+PEPIĆ LAZO
+PEPIĆ MILAN
+PEPIĆ MILE
+PEPIĆ MIRJANA
+PEPIĆ MIRKO
+PEPLINAC TOMA
+PERČI AGNEZA
+PERČIĆ DRAGAN
+PERŠ KSENIJA
+PERŠAJ MIRJANA
+PERŠIĆ DANICA
+PERŠIĆ VALERIJA
+PERĐEĐAJ BAŠKIM
+PERĐUN ZVONKO
+PERAĆ BRANKO
+PERAĆ LJUPKO
+PERAZIĆ SAVA
+PERAZIĆ VLADIMIR
+PERC BRANKA
+PERC ELA
+PERC VLADIMIR
+PERCE LUKA
+PERDAN STANISLAV
+PEREŠ HERMINA
+PEREŽA NIKOLA
+PEREGI GEZA
+PEREGI OSKAR
+PEREHINAC IVAN
+PERENČEVIĆ VASO
+PEREPATIĆ PIROŠ
+PEREPATIĆ STEVAN
+PEREULA BOGDAN
+PERGAL MIROSLAV DR ING
+PERGE ESTER
+PERGE MARA
+PERGE VIKTORIJA
+PERIČEVIĆ BRANKO
+PERIČEVIĆ RAJKO
+PERIČIN ŽIVAN
+PERIČIN MILANKA
+PERIČIN MILENKO
+PERIČIN RATKO
+PERIČIN VLADA
+PERIŠA JAKOV
+PERIŠA MIROSLAV
+PERIŠIĆ ČEDOMIR
+PERIŠIĆ ŽIVODARKA
+PERIŠIĆ ĐORĐE
+PERIŠIĆ ĐORĐE
+PERIŠIĆ ALEKSANDAR
+PERIŠIĆ ANICA
+PERIŠIĆ BLAŽO
+PERIŠIĆ BLAGOJE
+PERIŠIĆ BOBAN
+PERIŠIĆ BORISLAV
+PERIŠIĆ BRANKO
+PERIŠIĆ DANICA
+PERIŠIĆ DRAGOMIR
+PERIŠIĆ DUŠANKA
+PERIŠIĆ IRENA
+PERIŠIĆ KATICA
+PERIŠIĆ KATICA
+PERIŠIĆ LAZAR
+PERIŠIĆ LAZAR
+PERIŠIĆ LAZAR
+PERIŠIĆ LAZA
+PERIŠIĆ LJUBOMIR
+PERIŠIĆ MANCIKA
+PERIŠIĆ MARA
+PERIŠIĆ MIHAJLO
+PERIŠIĆ MILAN
+PERIŠIĆ MILENKO
+PERIŠIĆ MILINKO
+PERIŠIĆ MILJA
+PERIŠIĆ MILOVAN
+PERIŠIĆ MILOVAN
+PERIŠIĆ MILUTIN
+PERIŠIĆ MIODRAG
+PERIŠIĆ MIRA
+PERIŠIĆ NIKOLA
+PERIŠIĆ RADE
+PERIŠIĆ RADOSLAVA
+PERIŠIĆ RADOSLAV
+PERIŠIĆ RANKO
+PERIŠIĆ STANKO
+PERIŠIĆ STEVO
+PERIŠIĆ STOJAN
+PERIŠIĆ SVETOZAR
+PERIŠIĆ TODOR
+PERIŠIĆ UGLJEŠA
+PERIŠIĆ VASO
+PERIŠIĆ VASO
+PERIĆ ŽARKO
+PERIĆ ŽIVKA
+PERIĆ ŽIVOJIN
+PERIĆ ĐORĐE
+PERIĆ ĐURICA
+PERIĆ ALEKSANDAR
+PERIĆ ANA
+PERIĆ BISERKA
+PERIĆ BOŽIDAR
+PERIĆ BOŽIDAR
+PERIĆ BORIS
+PERIĆ BRANISLAV
+PERIĆ BRANISLAV
+PERIĆ BRANKO
+PERIĆ CVIJETIN
+PERIĆ DOBRILA
+PERIĆ DRAGANA
+PERIĆ DUŠANKA
+PERIĆ DUŠAN
+PERIĆ DUŠAN
+PERIĆ GOJKO DIPL ING
+PERIĆ GORAN
+PERIĆ IVAN
+PERIĆ JANKO
+PERIĆ JELKA
+PERIĆ JOVANKA
+PERIĆ JOVAN
+PERIĆ KSENIJA
+PERIĆ LAZA
+PERIĆ LJUBIŠA
+PERIĆ LJUBICA
+PERIĆ LJUBINKA
+PERIĆ LJUBINKO
+PERIĆ LJUBOMIR
+PERIĆ MARA
+PERIĆ MARIJA
+PERIĆ MARIJA
+PERIĆ MARIJA
+PERIĆ MARINKO
+PERIĆ MARKO
+PERIĆ MIHA
+PERIĆ MILADIN
+PERIĆ MILAN
+PERIĆ MILENKO
+PERIĆ MILICA
+PERIĆ MILKICA
+PERIĆ MILOŠ
+PERIĆ MILOŠ
+PERIĆ MILORAD
+PERIĆ MIODRAG
+PERIĆ MITAR
+PERIĆ NATAŠA
+PERIĆ-NEŠIĆ COKA
+PERIĆ NIKOLA
+PERIĆ NIKOLA
+PERIĆ NIKOLA
+PERIĆ NIKOLA
+PERIĆ PAVLE
+PERIĆ PETAR
+PERIĆ RAŠA
+PERIĆ RADE
+PERIĆ RADIVOJ
+PERIĆ RADO
+PERIĆ RAJKO
+PERIĆ RODOLJUB
+PERIĆ RUŽICA
+PERIĆ SAVA
+PERIĆ SAVA
+PERIĆ SLAVICA
+PERIĆ SLAVKO
+PERIĆ SLOBODAN
+PERIĆ SLOBODAN
+PERIĆ SMILJA
+PERIĆ STANKA
+PERIĆ SVETOZAR
+PERIĆ TOMISLAV
+PERIĆ VASA
+PERIĆ VINKA
+PERIĆ VLATKO
+PERIĆ ZDENKA
+PERIĆ ZORAN
+PERIĆ ZORAN
+PERIĆ ZORA
+PERICA ANTE
+PERICA RADOSLAV
+PERIN BRANISLAV
+PERIN DRAGIŠA
+PERIN MILINKO
+PERIN MILORAD
+PERIN RADIŠA
+PERIN SEKULA
+PERIN ZORA
+PERINAC RADOVAN
+PERINAC RADOVAN
+PERINOVIĆ BRANKO
+PERINOVIĆ NADA
+PERINOVIĆ SLAVICA
+PERINOVIĆ SLAVKO
+PERINOVIĆ STANKO
+PERIZ STEVO
+PERKOV RADINKA
+PERKOVAC MARIJA
+PERKOVIĆ BRANIMIR
+PERKOVIĆ BRANISLAV
+PERKOVIĆ DANICA
+PERKOVIĆ DRAGAN
+PERKOVIĆ GVOZDEN
+PERKOVIĆ JELKA
+PERKOVIĆ RADIVOJ
+PERKOVIĆ RADOMAN MR
+PERKOVIĆ SLAVKO
+PERKOVIĆ TADIJA
+PERKOVIĆ TOMO
+PERKOVSKI ĐORĐE
+PERKOVSKI ANĐELKO
+PERKUČIN ĐORĐE
+PERKUČIN ĐULINKA
+PERKUČIN DUŠAN
+PERKUČIN GORDANA
+PERKUČIN KATICA
+PERKUČIN NIKOLA
+PERKUČIN RADIVOJ DR
+PERLAKI LAJOŠ
+PERLIĆ DRAGAN
+PERLINAC SIMEUN
+PERNJAK NATALIJA
+PERNJAK NIKOLA DIPL ING
+PERNJAKOVIĆ DRAGOSLAV
+PEROŠEVIĆ NOVICA
+PEROŠEVIĆ STANKA
+PEROSAVLJEVIĆ LJUBIŠA
+PEROVANOVIĆ ALEKSANDAR
+PEROVANOVIĆ DUŠAN
+PEROVANOVIĆ JAGODA
+PEROVIĆ ŽANKA
+PEROVIĆ ANĐELKA
+PEROVIĆ BOJANA
+PEROVIĆ BRANKO
+PEROVIĆ BRATIMIR
+PEROVIĆ DRAGO
+PEROVIĆ GABRIELA
+PEROVIĆ IVANKA
+PEROVIĆ JELA
+PEROVIĆ JOVAN
+PEROVIĆ KATARINA
+PEROVIĆ MARKO
+PEROVIĆ MILENKO DR
+PEROVIĆ MILORAD
+PEROVIĆ MLAĐEN
+PEROVIĆ NADEŽDA
+PEROVIĆ NIKOLA
+PEROVIĆ RADAŠIN
+PEROVIĆ RADISAV
+PEROVIĆ RADISLAV
+PEROVIĆ RADIVOJE
+PEROVIĆ RADIVOJ
+PEROVIĆ RADOVAN DIPL ING
+PEROVIĆ SVETOMIR
+PEROVIĆ VESELIN
+PEROVIĆ VLAJKO
+PERTIĆ ZAKARIAŠ
+PERTOT JELENA
+PERUNIČIĆ DOBRILA
+PERUNIČIĆ MILORAD
+PERUNIČIĆ RADAN
+PERUNOVIĆ LJILJANA
+PERUNOVIĆ PANTO
+PERUNOVIĆ STANOJE
+PERVAZ ŽIVKA
+PERVAZ DRAGINJA DR PROF
+PESIRAC DRAGOLJUB
+PESIRAC KATARINA
+PESIRAC PETAR
+PESIRAC STEVAN
+PESLAĆ JOVAN
+PESTALIĆ JOSIP
+PESTELEK LJUBIŠA
+PESTELEK LJUBIŠA
+PETAKOV ŽIVKO
+PETAKOV JULKA
+PETAKOV MILENKO
+PETAKOV RADOSLAV
+PETAKOV RANKA
+PETAKOV SAVA
+PETAKOVIĆ DOBRILA
+PETAKOVIĆ DUŠAN
+PETAKOVIĆ ILIJA
+PETAKOVIĆ JOVAN
+PETAKOVIĆ MILICA
+PETAKOVIĆ NEMANJA
+PETAKOVIĆ RADIVOJ
+PETAKOVIĆ RAJKO
+PETAKOVIĆ SAVA
+PETE ĐURA
+PETE ĐURA
+PETE DUŠANKA
+PETE FERENC
+PETE FERENC
+PETE FRANJA
+PETE IŠTVAN
+PETE IŠTVAN
+PETE IŠTVAN
+PETE KAROLJ
+PETE PETAR
+PETE STEPAN
+PETE STEVAN
+PETEJ RATKO
+PETEK DAMIR
+PETELIN ELIZABETA
+PETENJI JOSIP DR
+PETENJI STEVAN
+PETER FRANCIŠKA
+PETER JOŽEF
+PETER JOLAN
+PETER JOVAN
+PETER MIHALJ
+PETER VILMOŠ
+PETERKA ĐORĐE
+PETERKA JELENA
+PETERKA JOSIP
+PETERKA MARIJA
+PETERKA STEVAN
+PETERKA VLADISLAV
+PETERLIĆ MILAN
+PETERNEL LIDIJA
+PETIĆ MILAN
+PETIĆ ZORKA
+PETIJEVIĆ JOVAN MR
+PETIJEVIĆ JOVAN
+PETIN NIKOLA PROFESOR
+PETKANIĆ MILORAD
+PETKOV ŽARE
+PETKOV ĐORĐE
+PETKOV ĐURA
+PETKOV BORISLAV
+PETKOV IVAN
+PETKOV MILAN
+PETKOV NADEŽDA
+PETKOV SAVA
+PETKOV STEVAN
+PETKOV STEVA
+PETKOVIĆ ČEDA
+PETKOVIĆ ŽARKO
+PETKOVIĆ ŽELJKO
+PETKOVIĆ ŽIVORAD
+PETKOVIĆ ŽIVORAD
+PETKOVIĆ ĐORĐE DR
+PETKOVIĆ ĐORĐE
+PETKOVIĆ ĐORĐE
+PETKOVIĆ ĐORĐE
+PETKOVIĆ ĐORĐE
+PETKOVIĆ ĐULA
+PETKOVIĆ ĐURAĐ
+PETKOVIĆ ALEKSANDAR
+PETKOVIĆ ANA
+PETKOVIĆ ANTUN
+PETKOVIĆ BOJANA
+PETKOVIĆ BORISLAV
+PETKOVIĆ BORKO
+PETKOVIĆ BRANKO
+PETKOVIĆ BRANKO
+PETKOVIĆ BRANKO
+PETKOVIĆ BRANKO
+PETKOVIĆ CVETKO
+PETKOVIĆ DARINKA
+PETKOVIĆ DRAGAN
+PETKOVIĆ DRAGAN
+PETKOVIĆ DRAGIŠA
+PETKOVIĆ DRAGICA
+PETKOVIĆ DRAGOLJUB
+PETKOVIĆ DUŠAN
+PETKOVIĆ DUŠAN
+PETKOVIĆ DUŠAN
+PETKOVIĆ GORDANA
+PETKOVIĆ GVOZDEN
+PETKOVIĆ IŠTVAN
+PETKOVIĆ ILIJA
+PETKOVIĆ ILIJA
+PETKOVIĆ ILJA
+PETKOVIĆ IRENA
+PETKOVIĆ JAGODA
+PETKOVIĆ JOSIP
+PETKOVIĆ JOVAN
+PETKOVIĆ JOVO
+PETKOVIĆ KALMAN
+PETKOVIĆ KATARINA
+PETKOVIĆ KOSTADIN
+PETKOVIĆ KRSTA
+PETKOVIĆ LAZAR
+PETKOVIĆ LAZAR
+PETKOVIĆ LAZAR
+PETKOVIĆ LAZO
+PETKOVIĆ LJUBINKO
+PETKOVIĆ LJUBOMIR
+PETKOVIĆ MARKO
+PETKOVIĆ MIHAJLO
+PETKOVIĆ MILANA
+PETKOVIĆ MILAN
+PETKOVIĆ MILAN
+PETKOVIĆ MILAN
+PETKOVIĆ MILAN
+PETKOVIĆ MILAN
+PETKOVIĆ MILICA
+PETKOVIĆ MILKA
+PETKOVIĆ MILORAD
+PETKOVIĆ MILORAD
+PETKOVIĆ MILOVANKA
+PETKOVIĆ MILUTIN
+PETKOVIĆ MILUTIN
+PETKOVIĆ MILUTIN
+PETKOVIĆ MIODRAG
+PETKOVIĆ MIODRAG
+PETKOVIĆ MIODRAG
+PETKOVIĆ MIORIKA
+PETKOVIĆ MIRA
+PETKOVIĆ MIRJANA DIPL ING
+PETKOVIĆ MIRJANA
+PETKOVIĆ MIRKO
+PETKOVIĆ MIRKO
+PETKOVIĆ MIRKO
+PETKOVIĆ MLADEN
+PETKOVIĆ MLADEN
+PETKOVIĆ MLADEN
+PETKOVIĆ NADA
+PETKOVIĆ NIKO
+PETKOVIĆ OBRAD
+PETKOVIĆ OLIVERA
+PETKOVIĆ PAVLE
+PETKOVIĆ PAVLE
+PETKOVIĆ PAVLE
+PETKOVIĆ PETAR
+PETKOVIĆ PETAR
+PETKOVIĆ PETAR
+PETKOVIĆ PETRA
+PETKOVIĆ PUNIŠA
+PETKOVIĆ RADE
+PETKOVIĆ RADIVOJ
+PETKOVIĆ RADOVAN
+PETKOVIĆ RADOVAN
+PETKOVIĆ RATKA
+PETKOVIĆ SLAVKO
+PETKOVIĆ SLOBODAN
+PETKOVIĆ SLOBODAN
+PETKOVIĆ SRĐAN
+PETKOVIĆ STANA
+PETKOVIĆ STANOJE
+PETKOVIĆ STEVAN
+PETKOVIĆ STEVAN
+PETKOVIĆ SVETISLAV
+PETKOVIĆ TOMISLAV
+PETKOVIĆ TOMISLAV
+PETKOVIĆ VASILIJE
+PETKOVIĆ VERA
+PETKOVIĆ VERICA
+PETKOVIĆ VESELIN
+PETKOVIĆ VLADIMIR
+PETKOVIĆ VLADIMIR
+PETKOVIĆ VLADIMIR
+PETKOVIĆ VLADISLAV
+PETKOVIĆ VOJISLAV
+PETKOVIĆ VUKAŠIN
+PETKOVIĆ VUKOSAVA
+PETKOVIĆ ZLATKO
+PETKOVIĆ ZLATOMIR
+PETKOVIĆ ZORAN
+PETKOVSKA SLAVICA
+PETKOVSKI ACA
+PETKOVSKI GORAN
+PETKOVSKI MILKA
+PETKOVSKI STANKO
+PETLEK JOVAN
+PETLJANSKI BRANKO
+PETLJANSKI DRAGOSLAV
+PETLJANSKI IRENA
+PETO JOŽEF
+PETOŠEVIĆ MILE
+PETOŠEVIĆ SLAVKO
+PETOŠEVIĆ STEVAN
+PETOŠEVIĆ SVETISLAV
+PETOHLEB PAVICA
+PETOJEVIĆ ĐORĐE
+PETOVIĆ ĐURO
+PETOVIĆ GOJKO
+PETOVIĆ MILENA
+PETOVIĆ SLAVKO
+PETRAŠINOVIĆ DRAGAN
+PETRAŠKOVIĆ DRAGAN
+PETRAŠKOVIĆ EMILIJA
+PETRAKOVIĆ-GRAOVAC KOSANA
+PETRANOVIĆ JOSIP
+PETRANOVIĆ MAGDA
+PETRANOVIĆ ZVONKO
+PETREŠ FRANJO
+PETREŠ RADE
+PETRENJ STEVAN
+PETREVSKA ZORANKA
+PETREVSKI BORIS
+PETREVSKI ILONA
+PETREVSKI KIRO
+PETRI MILENA
+PETRI MIROSLAVA
+PETRIČEVIĆ IVAN
+PETRIČIĆ BRANKO
+PETRIČIĆ DANE
+PETRIČIĆ JOVO
+PETRIČIĆ MILAN
+PETRIČIĆ MILAN
+PETRIČIĆ STEVAN
+PETRIČIĆ TATJANA
+PETRIĆ ĐORĐE
+PETRIĆ ALEKSANDAR
+PETRIĆ ANASTAZIJA
+PETRIĆ BOŠKO
+PETRIĆ BRANISLAVA
+PETRIĆ BRANKO DR
+PETRIĆ DANILO
+PETRIĆ DESANKA DIPL ING
+PETRIĆ DESIMIR
+PETRIĆ DIMITRIJE DIPL ING
+PETRIĆ DIMITRIJE
+PETRIĆ DIMITRIJE
+PETRIĆ DUŠANKA
+PETRIĆ DUŠAN
+PETRIĆ ILIJA
+PETRIĆ JOVAN
+PETRIĆ LAZAR MR
+PETRIĆ LJILJANA
+PETRIĆ LJUBICA
+PETRIĆ MILAN
+PETRIĆ MILAN
+PETRIĆ MILENKO
+PETRIĆ MILETA
+PETRIĆ MILIVOJ
+PETRIĆ MILORAD
+PETRIĆ NADA
+PETRIĆ OLGA
+PETRIĆ PETAR
+PETRIĆ PETAR
+PETRIĆ RADISAV
+PETRIĆ RADISAV
+PETRIĆ RADOVAN
+PETRIĆ SLAVICA
+PETRIĆ SLOBODANKA
+PETRIĆ SLOBODAN
+PETRIĆ SOFIJA
+PETRIĆ SOFIJA
+PETRIĆ VASILIJE
+PETRIĆ VULETA
+PETRIK ŠANDOR
+PETRIK ALEKSANDAR DIPL ING
+PETRIK ELIZABETA
+PETRIK IŠTVAN
+PETRIK VINCE
+PETRIK ZOLTAN
+PETRIKA LJUBIŠA
+PETRIKA MIODRAG
+PETRIKONJA KSENIJA
+PETRIKONJA LAZAR
+PETRIN DUŠAN
+PETRIN KATICA
+PETRIN MAJA
+PETRIN MILANKA
+PETRIN MILANKA
+PETRIN RADMILA
+PETRIN VLADIMIR
+PETRIN VLADIMIR
+PETRINIĆ MIRKO
+PETRINOVIĆ MILINA
+PETRINOVIĆ STEVA
+PETRO ANTE
+PETRO KATALIN
+PETRO NIKO
+PETRO SANJA
+PETRONIĆ ŽIVOTA
+PETRONIĆ ALEKSANDAR
+PETRONIĆ KATARINA
+PETRONIJEVIĆ DRAGOMIR
+PETRONIJEVIĆ GORAN
+PETRONIJEVIĆ PREDRAG
+PETRONIJEVIĆ SRETA
+PETRONIJEVIĆ VLASTIMIR
+PETRONJE MIODRAG
+PETRONJE MIODRAG
+PETROV ŽIVANA
+PETROV ŽIVAN
+PETROV ANATOLIJ
+PETROV ANA
+PETROV BORIS
+PETROV DANICA
+PETROV DUŠANKA
+PETROV DUŠAN
+PETROV EVICA
+PETROV FRANKA
+PETROV IŠTVAN
+PETROV IVAN
+PETROV JASMINA
+PETROV JELENA
+PETROV JOŽEF
+PETROV LAZAR
+PETROV LJUBOMIR
+PETROV LJUBOMIR
+PETROV MARIJA
+PETROV MARIJA
+PETROV MARINKO
+PETROV MILAN
+PETROV MILENKO
+PETROV MILICA
+PETROV MILORAD
+PETROV MILOSAVA
+PETROV MILOVAN
+PETROV MIODRAG
+PETROV MIODRAG
+PETROV MIROSLAV
+PETROV MOMČILO
+PETROV NADA
+PETROV NATALIJA
+PETROV NEBOJŠA DR
+PETROV OLGA
+PETROV RADMILA
+PETROV SAŠA
+PETROV SAVA
+PETROV SAVA
+PETROV SAVA
+PETROV SERGIJE
+PETROV SLAVKA
+PETROV SLAVKO
+PETROV SLOBODAN
+PETROV SRBIVOJ
+PETROV STEVAN
+PETROV SVETOZAR
+PETROV TOMISLAV
+PETROV VASO
+PETROV VELIZAR
+PETROV VLADIMIR
+PETROV VOJISLAV
+PETROV VOJISLAV
+PETROV ZLATOMIR
+PETROVČAN-ŠPANOVIĆ EUFEMIJA
+PETROVAČKI DUŠAN
+PETROVAČKI JOVAN
+PETROVAČKI LJILJANA
+PETROVAČKI VERA
+PETROVIĆ ČEDA
+PETROVIĆ ŠTEFAN
+PETROVIĆ ŽARKO
+PETROVIĆ ŽARKO
+PETROVIĆ ŽARKO
+PETROVIĆ ŽARKO
+PETROVIĆ ŽELJKO
+PETROVIĆ ŽELJKO
+PETROVIĆ ŽIKA
+PETROVIĆ ŽIVAN
+PETROVIĆ ŽIVKA
+PETROVIĆ ŽIVKA
+PETROVIĆ ŽIVKO
+PETROVIĆ ŽIVKO
+PETROVIĆ ŽIVOJIN
+PETROVIĆ ŽIVORAD
+PETROVIĆ ŽIVOTA
+PETROVIĆ ĐOKICA
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐORĐE
+PETROVIĆ ĐURA
+PETROVIĆ ALEKSANDAR
+PETROVIĆ ALEKSANDAR
+PETROVIĆ ALEKSANDAR
+PETROVIĆ ALEKSANDAR
+PETROVIĆ ALEKSANDRA
+PETROVIĆ ALEKSANDRA
+PETROVIĆ ALINKA
+PETROVIĆ ANĐELKA
+PETROVIĆ ANA
+PETROVIĆ ANGELINA
+PETROVIĆ ANICA
+PETROVIĆ ANKA
+PETROVIĆ ANKA
+PETROVIĆ-BALIŽ LJILJANA
+PETROVIĆ BILJANA
+PETROVIĆ BOŠKO
+PETROVIĆ BOŽIDAR
+PETROVIĆ BOGDAN
+PETROVIĆ BOGDAN
+PETROVIĆ BOJANA
+PETROVIĆ BOSILJKA
+PETROVIĆ BOSILJKA
+PETROVIĆ BRANIMIR
+PETROVIĆ BRANISLAVA
+PETROVIĆ BRANISLAVA
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANISLAV
+PETROVIĆ BRANKA
+PETROVIĆ BRANKO
+PETROVIĆ BRANKO
+PETROVIĆ BRANKO
+PETROVIĆ BRANKO
+PETROVIĆ CVIKO
+PETROVIĆ DAMIR
+PETROVIĆ DAMIR
+PETROVIĆ DANICA
+PETROVIĆ DANICA
+PETROVIĆ DANICA
+PETROVIĆ DARA
+PETROVIĆ DARINKA
+PETROVIĆ DARINKA
+PETROVIĆ DEJAN
+PETROVIĆ DESANKA
+PETROVIĆ DESIMIR
+PETROVIĆ DIMITRIJE
+PETROVIĆ DOBRICA
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGAN
+PETROVIĆ DRAGIŠA DIPL PRAVNIK
+PETROVIĆ DRAGIŠA
+PETROVIĆ DRAGIĆ
+PETROVIĆ DRAGINJA
+PETROVIĆ DRAGOLJUB DR
+PETROVIĆ DRAGOLJUB
+PETROVIĆ DRAGOLJUB
+PETROVIĆ DRAGOMIR
+PETROVIĆ DRAGOSLAV
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠAN
+PETROVIĆ DUŠICA
+PETROVIĆ DUŠKO
+PETROVIĆ EVA
+PETROVIĆ EVGENIJE
+PETROVIĆ EVICA
+PETROVIĆ FABIJAN
+PETROVIĆ GAVRILO
+PETROVIĆ GORDANA
+PETROVIĆ GORDANA
+PETROVIĆ GRADIMIR
+PETROVIĆ GRADIMIR
+PETROVIĆ HRISTINA
+PETROVIĆ ILIJA
+PETROVIĆ ILIJA
+PETROVIĆ ILIJA
+PETROVIĆ ILONA
+PETROVIĆ ISAK
+PETROVIĆ IVANKA
+PETROVIĆ IVAN
+PETROVIĆ IVAN
+PETROVIĆ IVAN
+PETROVIĆ IVAN
+PETROVIĆ IVAN
+PETROVIĆ JANKO
+PETROVIĆ JASMINKA
+PETROVIĆ JELENA
+PETROVIĆ JELICA
+PETROVIĆ JELISAVETA
+PETROVIĆ JEVREM
+PETROVIĆ JOŽEF
+PETROVIĆ JOVANKA
+PETROVIĆ JOVANKA
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ JOVAN
+PETROVIĆ KATICA
+PETROVIĆ KATICA
+PETROVIĆ KATICA
+PETROVIĆ KATICA
+PETROVIĆ KOSTA DR
+PETROVIĆ KRSTO
+PETROVIĆ LAZAR
+PETROVIĆ LAZAR
+PETROVIĆ LENKA
+PETROVIĆ LIDA
+PETROVIĆ LJILJANA
+PETROVIĆ LJILJANA
+PETROVIĆ LJILJANA
+PETROVIĆ LJILJANA
+PETROVIĆ LJUBIŠA
+PETROVIĆ LJUBICA
+PETROVIĆ LJUBICA
+PETROVIĆ LJUBICA
+PETROVIĆ LJUBINKA
+PETROVIĆ LJUBISAV
+PETROVIĆ LJUBOMIR
+PETROVIĆ LJUBOMIR
+PETROVIĆ MARA
+PETROVIĆ MARICA
+PETROVIĆ MARIJA
+PETROVIĆ MARIJA
+PETROVIĆ MARIKA
+PETROVIĆ MARKO
+PETROVIĆ MARKO
+PETROVIĆ MARKO
+PETROVIĆ MARKO
+PETROVIĆ MIAJLO
+PETROVIĆ MICA
+PETROVIĆ MIHAILO
+PETROVIĆ MIHAILO
+PETROVIĆ MIHAJLO DR VETERINE
+PETROVIĆ MIJOMIR
+PETROVIĆ MILADIN
+PETROVIĆ MILANKA
+PETROVIĆ MILANKO
+PETROVIĆ MILANKO
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILAN
+PETROVIĆ MILENA
+PETROVIĆ MILENKO
+PETROVIĆ MILENKO
+PETROVIĆ MILENKO
+PETROVIĆ MILEN
+PETROVIĆ MILEVA
+PETROVIĆ MILE
+PETROVIĆ MILIĆ
+PETROVIĆ MILICA
+PETROVIĆ MILICA
+PETROVIĆ MILICA
+PETROVIĆ MILIVOJ
+PETROVIĆ MILOŠ DR
+PETROVIĆ MILOŠ DR
+PETROVIĆ MILOŠ
+PETROVIĆ MILOJE
+PETROVIĆ MILOJKO
+PETROVIĆ MILOLJUB
+PETROVIĆ MILORAD
+PETROVIĆ MILORAD
+PETROVIĆ MILOVAN
+PETROVIĆ MILOVAN
+PETROVIĆ MILOVAN
+PETROVIĆ MILUN
+PETROVIĆ MILUN
+PETROVIĆ MILUTIN
+PETROVIĆ MILUTIN
+PETROVIĆ MILUTIN
+PETROVIĆ MIODRAG
+PETROVIĆ MIODRAG
+PETROVIĆ MIODRAG
+PETROVIĆ MIOLJUB
+PETROVIĆ MIOMIR
+PETROVIĆ MIRČEA
+PETROVIĆ MIRJANA
+PETROVIĆ MIRJANA
+PETROVIĆ MIRKO
+PETROVIĆ MIROSLAV DR LEKAR
+PETROVIĆ MIROSLAVA
+PETROVIĆ MIROSLAVKA
+PETROVIĆ MIROSLAV
+PETROVIĆ MIROSLAV
+PETROVIĆ MLAĐEN
+PETROVIĆ MLADEN
+PETROVIĆ MLADEN
+PETROVIĆ MOMČILO
+PETROVIĆ MOMČILO
+PETROVIĆ MOMČILO
+PETROVIĆ MOMČILO
+PETROVIĆ NADA
+PETROVIĆ NADA
+PETROVIĆ NADA
+PETROVIĆ NADIRA
+PETROVIĆ NATALIJA
+PETROVIĆ NENAD
+PETROVIĆ NEVENA
+PETROVIĆ NEVENKA DR
+PETROVIĆ NIKOLA
+PETROVIĆ NIKOLA
+PETROVIĆ NOVAK
+PETROVIĆ NOVICA
+PETROVIĆ OBRAD
+PETROVIĆ OLGA
+PETROVIĆ OLGICA
+PETROVIĆ OLIVERA
+PETROVIĆ PAJA
+PETROVIĆ PANTELIJA
+PETROVIĆ PERSIDA
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETAR
+PETROVIĆ PETRIJA
+PETROVIĆ PLAMENKA
+PETROVIĆ-POPADIĆ MILAN
+PETROVIĆ PREDRAG
+PETROVIĆ PRVOSLAV
+PETROVIĆ RADA
+PETROVIĆ RADE
+PETROVIĆ RADIŠA DIPL ING
+PETROVIĆ RADIŠA
+PETROVIĆ RADIŠA
+PETROVIĆ RADIVOJE
+PETROVIĆ RADIVOJ
+PETROVIĆ RADIVOJ
+PETROVIĆ RADMILA
+PETROVIĆ RADMILA
+PETROVIĆ RADMILA
+PETROVIĆ RADMILA
+PETROVIĆ RADMILA
+PETROVIĆ RADOJKA
+PETROVIĆ RADOMIR
+PETROVIĆ RADOMIR
+PETROVIĆ RADOMIR
+PETROVIĆ RADOMIR
+PETROVIĆ RADOSAV
+PETROVIĆ RADOSLAV
+PETROVIĆ RADOSLAV
+PETROVIĆ RAJKO
+PETROVIĆ RAJKO
+PETROVIĆ RANKO
+PETROVIĆ RANKO
+PETROVIĆ RATKO
+PETROVIĆ RATKO
+PETROVIĆ RATOMIR
+PETROVIĆ RISTO
+PETROVIĆ RODOLJUB
+PETROVIĆ ROSA
+PETROVIĆ RUŽA
+PETROVIĆ RUŽICA
+PETROVIĆ RUZMARINKA
+PETROVIĆ SAVAN
+PETROVIĆ SAVA
+PETROVIĆ SAVA
+PETROVIĆ SAVA
+PETROVIĆ SIMA
+PETROVIĆ SIMEUN
+PETROVIĆ SIMO
+PETROVIĆ SINIŠA
+PETROVIĆ SLAVICA
+PETROVIĆ SLAVKA
+PETROVIĆ SLAVKA
+PETROVIĆ SLAVKO
+PETROVIĆ SLAVKO
+PETROVIĆ SLOBODAN DIPL ING
+PETROVIĆ SLOBODAN DIPL ING
+PETROVIĆ SLOBODAN DR
+PETROVIĆ SLOBODANKA
+PETROVIĆ SLOBODAN
+PETROVIĆ SLOBODAN
+PETROVIĆ SLOBODAN
+PETROVIĆ SLOBODAN
+PETROVIĆ SLOBODAN
+PETROVIĆ SMILJA
+PETROVIĆ SNEŽANA
+PETROVIĆ SOFIJA
+PETROVIĆ SPASE
+PETROVIĆ SPASOJE
+PETROVIĆ SPOMENKA
+PETROVIĆ SRĐAN
+PETROVIĆ STAMENKO
+PETROVIĆ STANIŠA
+PETROVIĆ STANISLAV
+PETROVIĆ STEVAN DIPL ING
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STEVAN
+PETROVIĆ STOJADIN
+PETROVIĆ STOJAN
+PETROVIĆ STOJAN
+PETROVIĆ STOJKA
+PETROVIĆ SUZANA DR
+PETROVIĆ SUZANA
+PETROVIĆ SVETISLAV
+PETROVIĆ SVETKO
+PETROVIĆ SVETOZAR
+PETROVIĆ SVETOZAR
+PETROVIĆ SVETOZAR
+PETROVIĆ SVETOZAR
+PETROVIĆ SVETOZAR
+PETROVIĆ TATJANA
+PETROVIĆ TIBOR
+PETROVIĆ TINKA
+PETROVIĆ TODORKA
+PETROVIĆ TOMISLAV
+PETROVIĆ UROŠ
+PETROVIĆ UROŠ
+PETROVIĆ VASA
+PETROVIĆ VASILIJE
+PETROVIĆ VELIBOR
+PETROVIĆ VELIBOR
+PETROVIĆ VELIBOR
+PETROVIĆ VELIMIR
+PETROVIĆ VERA
+PETROVIĆ VERA
+PETROVIĆ VERA
+PETROVIĆ VERA
+PETROVIĆ VERA
+PETROVIĆ VERICA
+PETROVIĆ VESELA
+PETROVIĆ VESELIN
+PETROVIĆ VESNA
+PETROVIĆ VIŠNJA
+PETROVIĆ VIDA
+PETROVIĆ VLADA
+PETROVIĆ VLADE
+PETROVIĆ VLADIMIR
+PETROVIĆ VLADIMIR
+PETROVIĆ VLADISLAVA
+PETROVIĆ VLASTIMIR
+PETROVIĆ VOJIN
+PETROVIĆ VOJIN
+PETROVIĆ VOJISLAV
+PETROVIĆ VOJISLAV
+PETROVIĆ VOJISLAV
+PETROVIĆ VOJKA
+PETROVIĆ VUKAŠIN
+PETROVIĆ VUKICA
+PETROVIĆ ZAGORKA
+PETROVIĆ ZAGORKA
+PETROVIĆ ZAGORKA
+PETROVIĆ ZDENKO
+PETROVIĆ ZDENKO
+PETROVIĆ ZLATAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORAN
+PETROVIĆ ZORA
+PETROVIĆ ZORA
+PETROVIĆ ZORICA
+PETROVIĆ ZORICA
+PETROVIĆ ZORICA
+PETROVIĆ ZORKA
+PETROVSKI BORIS
+PETROVSKI DIMITRIJE
+PETROVSKI EVA
+PETROVSKI FIDANČO
+PETROVSKI HELENA
+PETROVSKI MILADIN
+PETROVSKI MILAN
+PETROVSKI MILODARKA
+PETROVSKI PETAR
+PETROVSKI SLAVKA
+PETRUŠEVIĆ MOMČILO
+PETRUŠEVSKI MOMČILO
+PETRUŠEVSKI NADA
+PETRUŠIĆ-PARIPOVIĆ OLGA
+PETRUŠIĆ VASILJ
+PETRULJESKOV DRAGAN
+PETRULJESKOV DRAGAN
+PEULIĆ LJUBOMIR
+PEULIĆ MIRJANA
+PEULJA VOJIN
+PEURAČA DRAGAN
+PEURAČA MILE
+PEVAČ STJEPAN
+PEVIĆ ERŽEBET
+PEZDEVŠEK JANEZ
+PEZDEVŠEK KARL
+PEZEROVIĆ VELIMIR
+PFAJFER ALEKSANDAR
+PFAJFER ATILA
+PFAJFER PETAR
+PFAJFERT ALEKSANDAR
+PFAU JOVANKA
+PFUNŠTAJN JOSIP
+PIŠKORIĆ IVAN
+PIŠPEK MARTA
+PIŠTALOVIĆ MIHAJLO
+PIŠTALOVIĆ MIRKO
+PIĆURIĆ ŽIVKO
+PIĆURIĆ MIKO
+PIŽURICA MATO
+PIGL ANA
+PIGL IMRE
+PIHAJLIĆ BLAŽ
+PIHLER JOSIP
+PIHLER STANKO DR
+PIHLER TODOR
+PIJANIĆ DANIJEL
+PIJETLOVIĆ BRANO
+PIJETLOVIĆ JOVAN
+PIJUKOVIĆ ELZA
+PIJUKOVIĆ ILIJA
+PIKSIADES ONDREJ
+PIKSIJADES ANA
+PIKSIJADES PAVEL
+PIKSIJADES PAVLE
+PIKULA ĐORĐE
+PIKULA BRANKO
+PIL ANDRIJA
+PIL MIHAJLO
+PIL STEVAN
+PIL TEREZA
+PILAR MARICA
+PILC NANDOR
+PILC REŽE
+PILC ZOLTAN
+PILER KARLO
+PILIŠ ANA
+PILIŠ ANDRAŠ
+PILIŠ JOSIP
+PILIŠER ĐORĐE
+PILIĆ ŽARKO
+PILIĆ ANTON
+PILIĆ BORIVOJ
+PILIĆ BORO
+PILIĆ GAVRA
+PILIĆ JOVAN
+PILIĆ-KALENIĆ MILINKA
+PILIĆ LJILJA
+PILIĆ MILOŠ
+PILIĆ MILUTIN
+PILIĆ RANKO
+PILIĆ SLAVKO
+PILIĆ SRBOLJUB
+PILIĆ STANKO
+PILIĆ STEVAN
+PILIĆ VOJISLAV
+PILIPOV EVA
+PILIPOVIĆ ČEDA
+PILIPOVIĆ ŽIVKO
+PILIPOVIĆ ĐORĐE
+PILIPOVIĆ ĐURA
+PILIPOVIĆ ANĐA
+PILIPOVIĆ BOŠKO
+PILIPOVIĆ BOŽIDAR
+PILIPOVIĆ BRANKO
+PILIPOVIĆ CVIJETA
+PILIPOVIĆ CVIJETA
+PILIPOVIĆ DANE
+PILIPOVIĆ DANICA
+PILIPOVIĆ DANICA
+PILIPOVIĆ DRAGAN
+PILIPOVIĆ DRAGO
+PILIPOVIĆ GORAN
+PILIPOVIĆ JOLAN
+PILIPOVIĆ JOVAN
+PILIPOVIĆ LAZAR
+PILIPOVIĆ LJILJANA
+PILIPOVIĆ LJUBICA
+PILIPOVIĆ LJUBO
+PILIPOVIĆ MARIJA
+PILIPOVIĆ MIHAJLO
+PILIPOVIĆ MIHAJLO
+PILIPOVIĆ MILAN
+PILIPOVIĆ MILAN
+PILIPOVIĆ MILAN
+PILIPOVIĆ MILENKO
+PILIPOVIĆ MILEVA
+PILIPOVIĆ MILOŠ
+PILIPOVIĆ MIRKO
+PILIPOVIĆ NIKOLA
+PILIPOVIĆ PETAR DIPL ING
+PILIPOVIĆ RADE
+PILIPOVIĆ RADE
+PILIPOVIĆ RADIVOJE
+PILIPOVIĆ RADOMIR
+PILIPOVIĆ SLAVKO
+PILIPOVIĆ SPOMENKO
+PILIPOVIĆ STANA
+PILIPOVIĆ STEVAN
+PILIPOVIĆ STEVAN
+PILIPOVIĆ STEVO
+PILIPOVIĆ VOJIN
+PILIPOVIĆ ZORICA
+PILIPOVIĆ ZVONKO
+PILJIĆ MARIJAN
+PILKO IRENA
+PILKO PAVLE
+PILOVIĆ DESIMIR
+PILOVIĆ DUŠANKA
+PILOVIĆ MILAN
+PINĆIR JAN
+PINĆIR VLADIMIR
+PINĆIR ZDENKO
+PINĆJER ONDREJ
+PINĆJER SAMUEL
+PINĆJER SAMUILO
+PINJUŠIĆ ILIJA
+PINJUH MIRJANA
+PINJUH PETAR
+PINTAČ FRANJO
+PINTAČ LADISLAV
+PINTAČ NIKOLA DIPL OEC
+PINTAČ VESNA
+PINTAĆ ĐORĐE
+PINTAĆ MARIJA
+PINTARIĆ JASNA
+PINTARIĆ JOVAN
+PINTER ADRIENE
+PINTER ALEKSANDAR
+PINTER ANDRAŠ
+PINTER BELA
+PINTER BELA
+PINTER FRANJA
+PINTER IMRE
+PINTER JANOŠ
+PINTER KAROLJ
+PINTER KATALIN
+PINTER LENKA
+PINTER LIVIJA
+PINTER MARIJA
+PINTER MIHALJ
+PINTER MIHALJ
+PINTER STEVAN
+PINTER TIBOR
+PINTER VERA
+PINTER VJEKOSLAV
+PIPER VELIBOR
+PIPERAC NADA
+PIPERKOV ANKA
+PIPERSKI ŽIVA
+PIPERSKI ANA
+PIPERSKI DRAGOMIR
+PIPERSKI KOSTA
+PIRC DANICA
+PIRI JANOŠ
+PIRI JOŽEF
+PIRI JOSIP
+PIRI JOSIP
+PIRIĆ IBRAHIM
+PIRIĆ OSMAN
+PIRIĆ ZORA
+PIRIVATRIĆ DUŠANKA
+PIRMAJER JOSIP
+PIROŠKI DRAGICA
+PIROŠKI JULIJANA
+PIROŠKI MIODRAG
+PIROŠKI VASA
+PIRTIĆ KSENIJA
+PIRTIĆ RADINKA
+PIRTIĆ SAVETA
+PIS EDITA
+PISAČIĆ VLADIMIR
+PISAR ŠANDOR
+PISAR DUŠAN
+PISAR JOŽEF
+PISAR LASLO
+PISAREV ĐORĐE
+PISAREV EMILIJA
+PISAREV KATICA
+PISAREV MILAN
+PISAREVIĆ ĐORĐE
+PISAREVIĆ MIRKO
+PISAREVIĆ MIRKO
+PISAREVIĆ MITAR
+PISAREVIĆ SPASENIJA
+PISARIĆ ĐURA
+PISARIĆ ĐURO
+PISARIĆ BLAŽO
+PISARIĆ BRANKO
+PISARIĆ DRAGAN
+PISARIĆ DRAGO
+PISARIĆ NEĐO
+PISARIĆ OSTOJA
+PISARIĆ OSTOJA
+PISARIĆ PAVLE
+PISARIĆ VLADO
+PISAROV ĐORĐE
+PISAROV KATICA
+PISAROV VASA
+PITA MAHMUT
+PITA MAHMUT
+PITOMAČIĆ STOJANKA
+PITOMAČIĆ VLADA
+PITUK NADA
+PIUKOVIĆ IVAN
+PIUKOVIĆ MAGDA
+PIVAČ BOSILJKA
+PIVAC DRAGOLJUB
+PIVAC MILORAD
+PIVAC MILOVAN
+PIVAC ZVONIMIR
+PIVARSKI BRANKA
+PIVARSKI DUŠAN
+PIVARSKI MIODRAG
+PIVARSKI RATOMIR
+PIVARSKI SLAVICA
+PIVARSKI STEVAN
+PIVARSKI VESELIN MR PH
+PIVNIČKI BOGDANKA
+PIVNIČKI BRANISLAV
+PIVNIČKI BRANISLAV
+PIVNIČKI BRANKA
+PIVNIČKI DRAGAN
+PIVNIČKI GORDANA
+PIVNIČKI IVANKA
+PIVNIČKI KATARINA
+PIVNIČKI MARIJA
+PIVNIČKI MILAN
+PIVNIČKI MILETA
+PIVNIČKI RADENKO
+PIVNIČKI RAJKO
+PIVNIČKI STOJKA
+PIVNIČKI SVETOZAR
+PJANIĆ MIHAJLO
+PJANIĆ RISTA
+PJEŠČIĆ BOGOLJUB
+PJEŠČIĆ LEPOSAVA
+PJEŠČIĆ MARIJA
+PJEŠČIĆ MILEVA
+PJEŠČIĆ NOVAK
+PJEŠIVAC ZDRAVKO
+PJETLOVIĆ DRAGICA
+PJEVAČ NIKOLA
+PJEVAC BRANKO
+PJEVAC DUŠAN
+PJEVAC STEVAN
+PJEVAC VLADIMIR
+PJEVAC ZORA
+PJEVALICA UROŠ
+PJEVIĆ ĐURAĐ
+PJEVIĆ BOŽO
+PJEVIĆ MIRKO DR
+PJEVIĆ MIROSLAVA DR
+PLAČKIĆ ŽARKO
+PLAČKIĆ BOŽIDAR
+PLAČKIĆ BRANKO
+PLAČKIĆ MELANIJA
+PLAČKIĆ SLAVKO
+PLAČKIĆ TOMISLAV
+PLAČKO STJEPAN
+PLAČKOV ŽIVKA
+PLAČKOV ĐORĐE
+PLAČKOV BORIVOJ
+PLAČKOV BRANISLAV
+PLAČKOV BRANISLAV
+PLAČKOV BRANISLAV
+PLAČKOV BRANKA
+PLAČKOV DUŠAN
+PLAČKOV ILONKA
+PLAČKOV MILAN
+PLAČKOV MIROLJUB
+PLAČKOV PAJA
+PLAČKOV PERA
+PLAČKOV PETAR
+PLAČKOV RUDOLF
+PLAČKOV SAVA
+PLAČKOV SAVETA
+PLAČKOV SIMA
+PLAČKOV STANIMIR
+PLAČKOV STEVAN
+PLAČKOV STEVA
+PLAČKOV STOJAN
+PLAČKOV SVETOZAR
+PLAČKOV VUKOSAVA
+PLAČKOVIĆ MILAN
+PLAČKOVIĆ PAJA
+PLAC EDO
+PLAKALOVIĆ MILADIN
+PLANČAK AMALIJA
+PLANČAK EUFEMIJA
+PLANČAK EUGEN
+PLANČAK JOVAN
+PLANČAK MIHAJLO
+PLANČAK MIROSLAV DR PROF
+PLANIĆ RADOVAN
+PLANIĆ ZDENKA
+PLANINČIĆ MINA
+PLANINČIĆ VESELIN
+PLANJANIN RADOMIR
+PLANOJEVIĆ MILUTIN DR
+PLANOVIĆ VESNA
+PLATIŠA MILAN
+PLATIŠA MIODRAG
+PLAVŠIĆ ANĐA
+PLAVŠIĆ ANICA
+PLAVŠIĆ ANICA
+PLAVŠIĆ ANKA
+PLAVŠIĆ BOŠKO
+PLAVŠIĆ BOŽA
+PLAVŠIĆ BOŽA
+PLAVŠIĆ BOŽIDAR
+PLAVŠIĆ BOGOMIR
+PLAVŠIĆ BORISLAV
+PLAVŠIĆ BRANISLAV
+PLAVŠIĆ BRANKO
+PLAVŠIĆ BRANKO
+PLAVŠIĆ BRANKO
+PLAVŠIĆ CVIJO
+PLAVŠIĆ DRAGAN
+PLAVŠIĆ DUŠAN
+PLAVŠIĆ DUŠICA
+PLAVŠIĆ GORDANA
+PLAVŠIĆ JELISAVETA
+PLAVŠIĆ JOVANKA
+PLAVŠIĆ JOVAN
+PLAVŠIĆ JOVAN
+PLAVŠIĆ JOVICA
+PLAVŠIĆ KATARINA
+PLAVŠIĆ KRSTA
+PLAVŠIĆ LAZAR
+PLAVŠIĆ LJILJANA
+PLAVŠIĆ LJUBICA
+PLAVŠIĆ LJUBICA
+PLAVŠIĆ LJUBINKA
+PLAVŠIĆ LJUBOMIR
+PLAVŠIĆ LUKA
+PLAVŠIĆ MARIJA
+PLAVŠIĆ MARINKO
+PLAVŠIĆ MARINKO
+PLAVŠIĆ MILENKO
+PLAVŠIĆ MILENKO
+PLAVŠIĆ MILICA
+PLAVŠIĆ MILICA
+PLAVŠIĆ MILINKA
+PLAVŠIĆ MILOŠ
+PLAVŠIĆ MILOMIR
+PLAVŠIĆ MIODRAG
+PLAVŠIĆ MIRKO
+PLAVŠIĆ MIRKO
+PLAVŠIĆ MIROSLAV DR LEKAR
+PLAVŠIĆ MITAR
+PLAVŠIĆ MITA
+PLAVŠIĆ MOMČILO
+PLAVŠIĆ MOMIR
+PLAVŠIĆ NERA
+PLAVŠIĆ NIKOLA
+PLAVŠIĆ NOVKA
+PLAVŠIĆ PAVA
+PLAVŠIĆ PETAR
+PLAVŠIĆ PETAR
+PLAVŠIĆ RADE
+PLAVŠIĆ RADMILA
+PLAVŠIĆ RADOVAN
+PLAVŠIĆ RADOVAN
+PLAVŠIĆ RANKO
+PLAVŠIĆ RANKO
+PLAVŠIĆ SIMA
+PLAVŠIĆ SLOBODAN
+PLAVŠIĆ SLOBODAN
+PLAVŠIĆ STEVAN
+PLAVŠIĆ STEVAN
+PLAVŠIĆ STEVO
+PLAVŠIĆ TODE
+PLAVŠIĆ TODOR
+PLAVŠIĆ VINKO
+PLAVŠIĆ VITOMIR
+PLAVŠIĆ VLADA
+PLAVŠIĆ VOJIN
+PLAVŠIĆ VOJIN
+PLAVŠIĆ VUKOSAVA
+PLAVŠIĆ ZORKA
+PLAVŠIN DUŠAN
+PLAVŠIN MILICA
+PLAVŠIN STEVAN
+PLAVAC ŽELJKO
+PLAVAC DUŠAN
+PLAVAC JANKO
+PLAVC AHMET
+PLAVC BAJRUŠ
+PLAVLJANIN ŽIVKO
+PLAZAČIĆ VIDOJE
+PLAZINA PUNIŠA
+PLEŠA JOSIP
+PLEŠE GORAN
+PLEŠKO ANICA
+PLEŠTIĆ DIMITRIJE
+PLEŠTIĆ MIRJANA
+PLEĆAŠ DANILO
+PLEĆAŠ ILIJA
+PLEĆAŠ KATICA
+PLEĆAŠ MILEVA
+PLEĆAŠ RADE
+PLEĆAŠ ROZALIJA
+PLEMIĆ ĐURO
+PLEMIĆ DANE
+PLEMIĆ MILAN
+PLESKONJA MILOJICA
+PLESKONJIĆ AMALIJA
+PLESKOVIĆ ANTUN
+PLESKOVIĆ NIKOLA
+PLESKOVIĆ ZDRAVKO
+PLETEL KSENIJA
+PLETEL MILAN
+PLETIKAPIĆ DRAGAN
+PLETIKOSIĆ LJERKA
+PLETIKOSIĆ PETAR
+PLETL OTILIJA
+PLISNIĆ MILICA
+PLISNIĆ MILORAD
+PLIVAR JOVAN
+PLJUCO BRANKO
+PLOH DRAGO
+PLOH FRANJA
+PLOJ MARIJA
+PLOS MIODRAG
+PLUŽAREV LAZAR
+PLUŽAREV OLIVERA DR
+PLUŽAROV MILENKO
+PLUKAVEC IVAN
+PLZAK DRAGOSLAV
+POČANIĆ TRIPO
+POČEK BRANISLAV
+POČEK BRANKO
+POČEK LJILJANA
+POČEK MILOVAN
+POČEK VLADA
+POČEK VLADISLAV
+POČEK VLADISLAV
+POČETAK MILENKO
+POČETAK MILICA
+POČUČA DMITAR
+POČUČA DUŠAN
+POČUČA JOVANKA
+POČUČA PETAR
+POČUČA RADMILA
+POŠČIĆ ERIKA
+POŠA ĐURA
+POŠA ANDRAŠ
+POŠA DRAGICA
+POŠA IŠTVAN
+POŠA KARLO
+POŠA PETAR
+POŠA ROZALIJA
+POŠA SNEŽANA
+POŠARAC DUŠKO
+POŠARAC ZORAN
+POŠTA NIKOLA
+POŠTIĆ ĐORĐE DR
+POŠTIĆ DRAGAN
+POŠTIĆ MILAN
+POŠTIĆ SLOBODANKA
+POŠTIĆ SOFIJA
+POŠTIĆ SRĐAN DIPL ING
+POŠTOŠ VERA
+POŽAR MILICA
+POŽAREV ĐORĐE
+POŽAREV ĐORĐE
+POŽAREV ALEKSANDAR
+POŽAREV ANĐELKA
+POŽAREV DORA
+POŽAREV JELENA
+POŽAREV RADE
+POŽAREV RATOMIRKA
+POŽAREV RATOMIR
+POŽAREV STEVAN
+POŽAREV VESELIN
+POŽEGA MILE
+POŽEGA SOFIJA
+POŽEGA STEVAN
+POŽGAJ ANTUN
+POŽGAJ TOMISLAV
+POBOR JELENA
+POBOR SRETO
+POBRAN STEVAN
+POBRAN VLADIMIR
+POBRIĆ ISAK
+POBUĆANOVIĆ-KULJANKIĆ ŠUHRETA
+POBUĐANOVIĆ ILINKA
+POBUĐANOVIĆ MUHAREM
+POBUĐANOVIĆ SVETLANA
+POCAJT VIKTOR
+POCMAN ANTUN
+POCMAN VILIM
+POCRNIĆ MILE
+POCRNIĆ NIKOLA
+PODGORNIK MILAN
+PODGORNIK RAJNA
+PODLIPEC MARIJA
+PODMAJORSKI MARA
+PODOBNIK JASNA
+PODOLA JUSTINA
+PODRAŠČANIN JOVAN
+PODRAŠČANIN NADA
+PODRAŠČANIN VOJA
+PODRAVAC BRANKO
+POGANČEV GORAN
+POGANČEV GORAN
+POGANJ JULIJANA
+POGUBEROVIĆ JOVAN
+POJBIĆ DUŠAN
+POJE JOSIP
+POJIĆ BRANKO
+POKA JOSIP
+POKAS JOSIP
+POKRAJAC ANGELINA
+POKRAJAC JOVAN
+POKRAJAC JOVAN
+POKRAJAC MILAN
+POKRAJAC MILORAD
+POKRAJAC RADE
+POKRAJAC SLAVKO
+POKRIĆ VOJISLAV
+POKUŠEVSKI DOBRINKA
+POKUPEC MILAN
+POLAK JELENA
+POLAK JOŽEF
+POLAK STEVAN
+POLAKOVIĆ ERŽEBET
+POLAKOVIĆ JANOŠ
+POLANEC FRANJO
+POLE NIKOLA
+POLE NIKOLA
+POLEDICA DUŠANKA
+POLENDER SOFIJA
+POLERMAN BELA
+POLERMAN MILICA
+POLETANOVIĆ MARINKO
+POLETO DOMENIK
+POLETO IVAN
+POLGAR IŠTVAN
+POLIĆ ĐURA
+POLIĆ BOŠKO
+POLIĆ DANICA
+POLIĆ DRAGAN
+POLIĆ LJUBICA
+POLIĆ MARIJAN
+POLIĆ SLOBODAN
+POLIMAC ANĐELIJA
+POLIN ĐURA
+POLIN LASLO
+POLINSKI ARANKA
+POLJAČKI ALEKSANDAR
+POLJAČKI MILICA
+POLJAČKI MILICA
+POLJAČKI SVETOZAR
+POLJAK ĐERĐ
+POLJAK EVA
+POLJAK FRANJO
+POLJAK LASLO
+POLJAK MIŠA
+POLJAK MIHALJ
+POLJAK MILKA
+POLJAK MIODRAG
+POLJAK MIODRAG
+POLJAK NIKOLA
+POLJAK NIKOLA
+POLJAK PETAR
+POLJAK RANKO
+POLJAKOVIĆ STJEPAN
+POLJANSKI JOVICA
+POLJANSKI LJUBICA
+POLJANSKI STOJAN
+POLJIČAK ANTE
+POLJIČAK LJUBAN
+POLJIĆ REFIK
+POLJOVKA JAN
+POLJVAŠ JOŽEF
+POLOJAC LUKA
+POLOVIĆ KOSTA
+POLOVIĆ STEVO
+POLOVINA ĐORĐE
+POLOVINA DANIJEL
+POLOVINA ISA
+POLOVINA MILAN
+POLOVINA MILICA
+POLOVINA MILORAD
+POLOVINA NADA
+POLOVINA NIKOLA
+POLOVINA PLEMENKA
+POLOVINA RADIVOJE
+POLOVINA SLOBODAN
+POLOVINA STEVO
+POLOVINA TODOR
+POLOVINA VLADIMIR
+POLOVINA VLADO
+POLOVINSKI SAVA
+POLTURA ŽUŽANA
+POLTURA GABOR
+POLTURA IRENA
+POLTURA MIRKO
+POLUŽANSKI IVANKA
+POLUMIRAC MILICA
+POLUTA LINA
+POLVEREŽAN-OBŠUST ĆEĆILIJA
+POLZOVIĆ ALEKSANDAR
+POLZOVIĆ JOVAN
+POLZOVIĆ MIOMIR
+POLZOVIĆ MIROSLAV
+POLZOVIĆ RADOSLAV
+POMORIŠKI BRANISLAV
+PONGO ŽUŽANA
+PONGO JANOŠ
+PONGO LASLO
+PONGO STEVAN
+PONJARAC SAVO
+PONJAVIĆ GORDANA
+PONJAVIĆ RADISAV
+PONJAVIĆ SINIŠA
+PONJEVIĆ MOMČILO
+PONJEVIĆ PETAR
+PONJEVIĆ SPASAN
+PONJEVIĆ ZVEZDAN
+PONJIČAN HORISLAV
+PONJIČAN JAN
+PONJIČAN JOSIP
+PONJIGER ĐURA
+PONJIGER IVAN
+PONOĆKO ČEDOMIR
+PONORAC LAZAR
+POP-JOVANOV VERA
+POP ZDENKO
+POPĐURĐEV MILAN
+POPA SPASENIJA
+POPADIĆ ŽIVAN
+POPADIĆ ŽIVA
+POPADIĆ ŽIVKO
+POPADIĆ ĐOKO
+POPADIĆ ĐUKA
+POPADIĆ BRANKA
+POPADIĆ GOJKO
+POPADIĆ ISIDOR
+POPADIĆ-JANUZOVIĆ RADMILA
+POPADIĆ LJILJANA
+POPADIĆ LJUBICA
+POPADIĆ LJUBO
+POPADIĆ MILAN
+POPADIĆ MILENKO
+POPADIĆ MILENKO
+POPADIĆ MILENKO
+POPADIĆ MIODRAG
+POPADIĆ NEDELJKO
+POPADIĆ NEGOVAN
+POPADIĆ NIKOLA
+POPADIĆ NOVAK
+POPADIĆ PETKO
+POPADIĆ PREDRAG
+POPADIĆ RADMILA
+POPADIĆ RADMILA
+POPADIĆ RATOMIR
+POPADIĆ SILVIJA
+POPADIĆ SLAVKO
+POPADIĆ SLAVOLJUB
+POPADIĆ STANA
+POPADIĆ STOJICA
+POPADIĆ SVETLANA
+POPADIĆ TIHOMIR
+POPADIĆ VERA
+POPADIĆ VOJISLAV ADVOKAT
+POPADIĆ VOJISLAV
+POPARA ALEKSANDAR
+POPARA ILIJA
+POPARA LJUBIŠA
+POPARA TADIJA
+POPARA ZORAN
+POPARIĆ ŽIVOJIN
+POPARIĆ ISIDOR
+POPARIĆ MARICA
+POPARIĆ NENAD
+POPDANKOV JUDITA
+POPEJKOV BORISLAV
+POPEJKOV LJILJANA
+POPEJKOV MARA
+POPENGOV VASA
+POPESKU RUŽA
+POPGLIGORIN PAVLE
+POPIĆ ŽELJKO
+POPIĆ ALEKSANDAR
+POPIĆ ANĐELKO
+POPIĆ BRANKO
+POPIĆ BUDIMIR
+POPIĆ DRAGAN
+POPIĆ DUŠAN
+POPIĆ DUŠAN
+POPIĆ DUŠAN
+POPIĆ EDITA
+POPIĆ GORDANA
+POPIĆ JELISAVETA
+POPIĆ KATICA
+POPIĆ LJILJANA
+POPIĆ LUKA
+POPIĆ MILAN
+POPIĆ MILAN
+POPIĆ MILAN
+POPIĆ MILICA
+POPIĆ MILIVOJ
+POPIĆ MIRA
+POPIĆ MIRA
+POPIĆ MIRJANA
+POPIĆ NADA
+POPIĆ-PALJIĆ FEODORA
+POPIĆ RADIVOJ
+POPIĆ SAVA
+POPIĆ SAVO
+POPIĆ SNEŽANA
+POPIĆ SOFIJA
+POPIĆ SOFIJA
+POPIĆ SVETOZAR
+POPIĆ TOMA
+POPIĆ VUKICA
+POPIĆ ZORA
+POPIN IVAN
+POPIN RADIVOJ
+POPIN VITOMIR
+POPIN VLADIMIR
+POPIVODA BOŽIDAR
+POPIVODA MILOVAN
+POPIVODA MILUTIN
+POPIVODA NEDELJKO
+POPIVODA PETAR
+POPIVODA RADISLAV
+POPMIHAJLOV DIMITRIJE
+POPMIHAJLOV DUŠAN
+POPNOVAKOV DRAGOMIR
+POPNOVAKOV MILAN
+POPNOVAKOV MILICA
+POPOV ČEDOMIR
+POPOV ŽARKO
+POPOV ŽARKO
+POPOV-ŽIKELIĆ ZORA
+POPOV ŽIVKA
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ŽIVKO
+POPOV ĐOKA
+POPOV ĐOKA
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐORĐE
+POPOV ĐURĐINA
+POPOV ĐURA
+POPOV ĐURA
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ALEKSANDAR
+POPOV ANĐA
+POPOV ANDON
+POPOV ANKICA
+POPOV-BAŠA VERA
+POPOV BORIVOJ DIPL ING
+POPOV BRANISLAVA
+POPOV BRANISLAV
+POPOV BRANISLAV
+POPOV BRANISLAV
+POPOV BRANKO
+POPOV BRANKO
+POPOV DANICA
+POPOV DANICA
+POPOV DANILO
+POPOV DANILO
+POPOV DARINKA
+POPOV DIMITRIJE
+POPOV DIMITRIJE
+POPOV DRAGANA
+POPOV DRAGAN
+POPOV DRAGAN
+POPOV DRAGAN
+POPOV DRAGAN
+POPOV DRAGA
+POPOV DRAGIŠA
+POPOV DRAGICA
+POPOV-DRAGIN OLGA
+POPOV DRAGOLJUB
+POPOV DRAGOLJUB
+POPOV DRAGOLJUB
+POPOV DRAGOMIR
+POPOV DRAGOMIR
+POPOV DRAGOMIR
+POPOV DRAGOSLAVA
+POPOV DUŠAN DR
+POPOV DUŠAN
+POPOV DUŠAN
+POPOV DUŠAN
+POPOV DUŠKA
+POPOV GAVRA
+POPOV GORAN
+POPOV GORDANA DR
+POPOV GORDANA
+POPOV GORDANA
+POPOV ILONKA
+POPOV ISA
+POPOV IVANKA
+POPOV IVAN
+POPOV IVKA
+POPOV JELA
+POPOV JELA
+POPOV JELISAVETA
+POPOV JEZDIMIR
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JOVAN
+POPOV JUGOSLAV
+POPOV JUG
+POPOV JULKA
+POPOV KATICA
+POPOV KATICA
+POPOV KOSA
+POPOV KOVINKA
+POPOV LAZAR
+POPOV LAZAR
+POPOV LAZAR
+POPOV LAZAR
+POPOV LENKA
+POPOV LJILJANA
+POPOV LJILJANA
+POPOV LJUBIŠA
+POPOV LJUBICA
+POPOV LJUBICA
+POPOV LJUBICA
+POPOV LJUBICA
+POPOV LJUBINKA
+POPOV LJUBOMIR
+POPOV MARA
+POPOV MARICA
+POPOV MARIJA
+POPOV MARIJA
+POPOV MARINKO
+POPOV MARKO
+POPOV MARKO
+POPOV MARKO
+POPOV MILADIN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILAN
+POPOV MILENA
+POPOV MILENA
+POPOV MILENKO
+POPOV MILICA
+POPOV MILICA
+POPOV MILICA
+POPOV MILICA
+POPOV MILIVOJ
+POPOV MILIVOJ
+POPOV MILIVOJ
+POPOV MILIVOJ
+POPOV MILKA
+POPOV MILOŠ
+POPOV MILOŠ
+POPOV MILOJE
+POPOV MILORAD
+POPOV MILOVAN
+POPOV MILOVAN
+POPOV MILUTIN
+POPOV MIRJANA
+POPOV MIRJANA
+POPOV MIRJAN
+POPOV MIROSLAV
+POPOV MITA
+POPOV MOMČILO
+POPOV NEDELJKO
+POPOV NENATKA
+POPOV NIKOLA
+POPOV NINA
+POPOV NINOSLAV DIPL ING
+POPOV NOVAK
+POPOV OBRAD
+POPOV-OBROVAČKI SOFIJA
+POPOV OLGA
+POPOV PAJA
+POPOV PAVLE
+POPOV PAVLE
+POPOV PAVLE
+POPOV PERA
+POPOV PETAR
+POPOV PETAR
+POPOV PLATON
+POPOV PREDRAG
+POPOV RADIVOJE
+POPOV RADIVOJ
+POPOV RADIVOJ
+POPOV RADIVOJ
+POPOV RADIVOJ
+POPOV RADIVOJ
+POPOV RADMILA
+POPOV RADOJKA
+POPOV RADOVAN DIPL ING
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RADOVAN
+POPOV RATOMIR
+POPOV RELJA
+POPOV RODOLJUB
+POPOV SAVA
+POPOV SAVA
+POPOV SAVA
+POPOV SAVA
+POPOV SAVETA
+POPOV SEKULA
+POPOV SINIŠA
+POPOV SLAVICA
+POPOV SLAVKO
+POPOV SLAVKO
+POPOV SLAVKO
+POPOV SLOBODAN
+POPOV SLOBODAN
+POPOV SNEŽANA
+POPOV SOFIJA
+POPOV SPASOJE
+POPOV SREDOJE
+POPOV STANA
+POPOV STEVAN DIPL ING
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVAN
+POPOV STEVA
+POPOV STEVICA
+POPOV STOJANKA
+POPOV SVETLANA
+POPOV SVETOZAR
+POPOV SVETOZAR
+POPOV TATOMIR
+POPOV TODOR
+POPOV TRIVA
+POPOV UROŠ
+POPOV VASILIJE
+POPOV VASILIJE
+POPOV VASILIJE
+POPOV VERA
+POPOV VERA
+POPOV VERA
+POPOV VERICA
+POPOV VESELIN
+POPOV VLADIMIR
+POPOV VLADIMIR
+POPOV VOJIN
+POPOV VOJISLAV
+POPOV VUKOSAVA
+POPOV ZLATA
+POPOV ZLATICA
+POPOV ZORKA
+POPOVIĆ ČASLAV DIPL PRAVNIK
+POPOVIĆ ČEDOMIR DIPL ING
+POPOVIĆ ČEDOMIR
+POPOVIĆ ČEDOMIR
+POPOVIĆ ČEDOMIR
+POPOVIĆ-ČEJOVIĆ PAVLE
+POPOVIĆ ŠĆEPAN
+POPOVIĆ ŽARKO
+POPOVIĆ ŽARKO
+POPOVIĆ ŽARKO
+POPOVIĆ ŽELJKO
+POPOVIĆ ŽIVAN
+POPOVIĆ ŽIVAN
+POPOVIĆ ŽIVKO
+POPOVIĆ ŽIVORAD
+POPOVIĆ ŽUŽANA
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐE
+POPOVIĆ ĐORĐIJE
+POPOVIĆ ĐURĐINA
+POPOVIĆ ĐURĐINA
+POPOVIĆ ĐURA
+POPOVIĆ ĐURICA
+POPOVIĆ ĐURO
+POPOVIĆ ĐURO
+POPOVIĆ AKSENTIJE
+POPOVIĆ ALEKSANDAR DR PRAVNIK
+POPOVIĆ ALEKSANDAR DR
+POPOVIĆ ALEKSANDAR
+POPOVIĆ ALEKSANDAR
+POPOVIĆ ALEKSANDAR
+POPOVIĆ ALEKSANDAR
+POPOVIĆ ANĐELKA
+POPOVIĆ ANĐELKA
+POPOVIĆ ANĐEL
+POPOVIĆ ANA
+POPOVIĆ ANA
+POPOVIĆ ANGELINA
+POPOVIĆ ANGELINA
+POPOVIĆ ANGELINA
+POPOVIĆ ANICA
+POPOVIĆ BLAGOJE
+POPOVIĆ BOŽA
+POPOVIĆ BOŽIDAR
+POPOVIĆ BOGDAN
+POPOVIĆ BOGDAN
+POPOVIĆ BOGOLJUB
+POPOVIĆ BOJAN
+POPOVIĆ BORISLAVA
+POPOVIĆ BORISLAV
+POPOVIĆ BORJAN
+POPOVIĆ BORKA
+POPOVIĆ BOSILJKA
+POPOVIĆ BRANISLAV DR
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANISLAV
+POPOVIĆ BRANIVOJ
+POPOVIĆ BRANIVOJ
+POPOVIĆ BRANKA
+POPOVIĆ BRANKO
+POPOVIĆ BRANKO
+POPOVIĆ BRANKO
+POPOVIĆ CVEJA
+POPOVIĆ DANČIKA
+POPOVIĆ DANE
+POPOVIĆ DANE
+POPOVIĆ DANICA
+POPOVIĆ DANICA
+POPOVIĆ DANILO
+POPOVIĆ DANKICA
+POPOVIĆ DARINKA
+POPOVIĆ DEJAN
+POPOVIĆ DESANKA
+POPOVIĆ DESA
+POPOVIĆ DIMITRIJE
+POPOVIĆ DIMITRIJE
+POPOVIĆ DIMITRIJE
+POPOVIĆ DOBRINKA
+POPOVIĆ DOBRINKA
+POPOVIĆ DOBRINKO
+POPOVIĆ DOBRIVOJ
+POPOVIĆ DRAGANA
+POPOVIĆ DRAGAN
+POPOVIĆ DRAGAN
+POPOVIĆ DRAGAN
+POPOVIĆ DRAGIŠA DR
+POPOVIĆ DRAGIŠA
+POPOVIĆ DRAGINJA
+POPOVIĆ DRAGO DIPL ING
+POPOVIĆ DRAGOJLO
+POPOVIĆ DRAGOLJUB
+POPOVIĆ DRAGOLJUB
+POPOVIĆ DRAGOLJUB
+POPOVIĆ DRAGOMIR
+POPOVIĆ DRAGOMIR
+POPOVIĆ DRAGO
+POPOVIĆ DRAGO
+POPOVIĆ DRAGO
+POPOVIĆ DRAGUTIN
+POPOVIĆ DUŠAN DR
+POPOVIĆ DUŠANKA
+POPOVIĆ DUŠANKA
+POPOVIĆ DUŠANKA
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠAN
+POPOVIĆ DUŠICA
+POPOVIĆ DUŠKO DR
+POPOVIĆ EMIL
+POPOVIĆ FEODORA
+POPOVIĆ FEODOR
+POPOVIĆ GOJKO
+POPOVIĆ GORAN
+POPOVIĆ GORDANA
+POPOVIĆ ILE
+POPOVIĆ ILIJA
+POPOVIĆ ILIJA
+POPOVIĆ ILIJA
+POPOVIĆ ILIJA
+POPOVIĆ ILIJA
+POPOVIĆ IRINA
+POPOVIĆ IVAN
+POPOVIĆ IVAN
+POPOVIĆ IVAN
+POPOVIĆ IVAN
+POPOVIĆ IVAN
+POPOVIĆ JADRANKA
+POPOVIĆ JANKO
+POPOVIĆ JASNA
+POPOVIĆ JEFTA
+POPOVIĆ JELENA
+POPOVIĆ JELENA
+POPOVIĆ JELENA
+POPOVIĆ JELENA
+POPOVIĆ JELISAVETA
+POPOVIĆ JOVANKA
+POPOVIĆ JOVANKA
+POPOVIĆ JOVANKA
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVAN
+POPOVIĆ JOVO
+POPOVIĆ KATARINA
+POPOVIĆ KATICA
+POPOVIĆ KATICA
+POPOVIĆ KATICA
+POPOVIĆ KONSTANTIN
+POPOVIĆ KOSTA DR
+POPOVIĆ KOSTADIN
+POPOVIĆ KOSTA
+POPOVIĆ KOSTA
+POPOVIĆ KRISTINA
+POPOVIĆ KRSTA
+POPOVIĆ KRSTO
+POPOVIĆ KSENIJA
+POPOVIĆ LAZAR DR LEKAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LAZAR
+POPOVIĆ LELA
+POPOVIĆ LEPOSAVA
+POPOVIĆ LJILJANA DR
+POPOVIĆ LJILJANA
+POPOVIĆ LJILJANA
+POPOVIĆ LJILJANA
+POPOVIĆ LJILJANA
+POPOVIĆ LJILJANA
+POPOVIĆ LJUBICA
+POPOVIĆ LJUBICA
+POPOVIĆ LJUBICA
+POPOVIĆ LJUBICA
+POPOVIĆ LJUBISAV
+POPOVIĆ LJUBOMIR
+POPOVIĆ LJUBOMIR
+POPOVIĆ LJUBOMIR
+POPOVIĆ LJUBOMIR
+POPOVIĆ MAKSIM
+POPOVIĆ MARA
+POPOVIĆ MARA
+POPOVIĆ MARIJA DR
+POPOVIĆ MARIJANA
+POPOVIĆ MARIJA
+POPOVIĆ MARIJA
+POPOVIĆ MARIJA
+POPOVIĆ MARIJA
+POPOVIĆ MARIJA
+POPOVIĆ MARINKO
+POPOVIĆ MARKO DR LEKAR
+POPOVIĆ MARKO MR ING
+POPOVIĆ MARKO
+POPOVIĆ MARKO
+POPOVIĆ MARTA
+POPOVIĆ MELANIJA
+POPOVIĆ MIHAILO
+POPOVIĆ MIHAJLO DR
+POPOVIĆ MIHAJLO
+POPOVIĆ MILANA
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILAN
+POPOVIĆ MILA
+POPOVIĆ MILENA
+POPOVIĆ MILENKO
+POPOVIĆ MILENKO
+POPOVIĆ MILENKO
+POPOVIĆ MILENKO
+POPOVIĆ MILENKO
+POPOVIĆ MILETA DIPL ING
+POPOVIĆ MILE
+POPOVIĆ MILICA
+POPOVIĆ MILICA
+POPOVIĆ MILIJAN DR
+POPOVIĆ MILINKO
+POPOVIĆ MILIVOJE
+POPOVIĆ MILKA
+POPOVIĆ MILOŠ DIPL ING
+POPOVIĆ MILOŠ
+POPOVIĆ MILOŠ
+POPOVIĆ MILOŠ
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILORAD
+POPOVIĆ MILOSAVA
+POPOVIĆ MILOSAV
+POPOVIĆ MILOVAN
+POPOVIĆ MILUTIN
+POPOVIĆ MIODRAG
+POPOVIĆ MIODRAG
+POPOVIĆ MIODRAG
+POPOVIĆ MIODRAG
+POPOVIĆ MIRA
+POPOVIĆ MIRA
+POPOVIĆ MIRJANA
+POPOVIĆ MIRJANA
+POPOVIĆ MIRJANA
+POPOVIĆ MIRJANA
+POPOVIĆ MIRKO
+POPOVIĆ MIRKO
+POPOVIĆ MIRKO
+POPOVIĆ MIRKO
+POPOVIĆ MIRKO
+POPOVIĆ MIROLJUB
+POPOVIĆ MIROSLAV
+POPOVIĆ MIROSLAV
+POPOVIĆ MIROSLAV
+POPOVIĆ MIROSLAV
+POPOVIĆ MITAR
+POPOVIĆ MITAR
+POPOVIĆ MLADEN
+POPOVIĆ MLADINKO
+POPOVIĆ MOMČILO
+POPOVIĆ MOMČILO
+POPOVIĆ MOMČILO
+POPOVIĆ NADA
+POPOVIĆ NADA
+POPOVIĆ NADA
+POPOVIĆ NADA
+POPOVIĆ NADA
+POPOVIĆ NADEŽDA
+POPOVIĆ NADEŽDA
+POPOVIĆ NADEŽDA
+POPOVIĆ NATALIJA
+POPOVIĆ NEĐO
+POPOVIĆ NEBOJŠA
+POPOVIĆ NEDELJKO
+POPOVIĆ NEDELJKO
+POPOVIĆ NENAD
+POPOVIĆ NENAD
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NIKOLA
+POPOVIĆ NOVAK
+POPOVIĆ NOVAK
+POPOVIĆ OBRAD
+POPOVIĆ OBRAD
+POPOVIĆ OLGA
+POPOVIĆ OLGA
+POPOVIĆ OLGA
+POPOVIĆ PAJA
+POPOVIĆ PAVLE DIPL PRAVNIK
+POPOVIĆ PAVLE
+POPOVIĆ PAVLE
+POPOVIĆ PAVLE
+POPOVIĆ PERA
+POPOVIĆ PERICA
+POPOVIĆ PERO
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ PETAR
+POPOVIĆ RADA
+POPOVIĆ RADENKO
+POPOVIĆ RADE
+POPOVIĆ RADE
+POPOVIĆ RADE
+POPOVIĆ RADINKA
+POPOVIĆ RADIVOJE
+POPOVIĆ RADIVOJ
+POPOVIĆ RADIVOJ
+POPOVIĆ RADMILA
+POPOVIĆ RADMILA
+POPOVIĆ RADOICA
+POPOVIĆ RADOICA
+POPOVIĆ RADOJICA
+POPOVIĆ RADOJKA
+POPOVIĆ RADOJKA
+POPOVIĆ RADOMIR
+POPOVIĆ RADOSAV
+POPOVIĆ RADOSAV
+POPOVIĆ RADOSLAV
+POPOVIĆ RADOVANKA
+POPOVIĆ RADOVANKA
+POPOVIĆ RADOVAN
+POPOVIĆ RADUL
+POPOVIĆ RAJKO
+POPOVIĆ RANKO
+POPOVIĆ RATKO
+POPOVIĆ RAVIJOJLA
+POPOVIĆ RELJA DR
+POPOVIĆ RODOLJUB
+POPOVIĆ SANJA
+POPOVIĆ SAVA DIPL ING
+POPOVIĆ SAVA DIPL ING
+POPOVIĆ SAVA
+POPOVIĆ SAVA
+POPOVIĆ SAVA
+POPOVIĆ SAVO
+POPOVIĆ SEKULA
+POPOVIĆ SINIŠA DR LEKAR
+POPOVIĆ SLAVICA
+POPOVIĆ SLAVKO DIPL OEC
+POPOVIĆ SLAVKO
+POPOVIĆ SLAVKO
+POPOVIĆ SLAVKO
+POPOVIĆ SLAVOLJUB
+POPOVIĆ SLAVOLJUB
+POPOVIĆ SLOBODAN
+POPOVIĆ SLOBODAN
+POPOVIĆ SLOBODAN
+POPOVIĆ SLOBODAN
+POPOVIĆ SMILJANA
+POPOVIĆ SOFIJA
+POPOVIĆ SOFIJA
+POPOVIĆ SOFIJA
+POPOVIĆ SOFIJA
+POPOVIĆ SOFIJA
+POPOVIĆ SONJA
+POPOVIĆ SPASOJE
+POPOVIĆ STANIMIR
+POPOVIĆ STANIMIR
+POPOVIĆ STANKO
+POPOVIĆ STANKO
+POPOVIĆ STANKO
+POPOVIĆ STEVAN DR
+POPOVIĆ STEVAN
+POPOVIĆ STEVAN
+POPOVIĆ STEVAN
+POPOVIĆ STEVKA
+POPOVIĆ STEVO
+POPOVIĆ STOJAN
+POPOVIĆ SVETISLAV
+POPOVIĆ SVETLANA
+POPOVIĆ SVETOZAR
+POPOVIĆ TEODOR
+POPOVIĆ TEREZA
+POPOVIĆ TODOR
+POPOVIĆ TOMISLAV
+POPOVIĆ TOMO
+POPOVIĆ UGLJEŠA
+POPOVIĆ VASILIJE
+POPOVIĆ VASILIJE
+POPOVIĆ VELIMIR
+POPOVIĆ VELIZAR
+POPOVIĆ VELJKO
+POPOVIĆ VERA
+POPOVIĆ VERA
+POPOVIĆ VERA
+POPOVIĆ VERA
+POPOVIĆ VERA
+POPOVIĆ VERICA
+POPOVIĆ VESELIN
+POPOVIĆ VIDOJE
+POPOVIĆ VIDOSAVA
+POPOVIĆ VIKTORIJA
+POPOVIĆ VLADAN
+POPOVIĆ VLADIMIR DR
+POPOVIĆ VLADIMIR
+POPOVIĆ VLADIMIR
+POPOVIĆ VLADIMIR
+POPOVIĆ VLADIMIR
+POPOVIĆ VLADISLAV
+POPOVIĆ VLADO
+POPOVIĆ VOJIN
+POPOVIĆ VOJIN
+POPOVIĆ VOJISLAV
+POPOVIĆ VUČINA
+POPOVIĆ VUČKO
+POPOVIĆ VUJADIN
+POPOVIĆ VUKADIN
+POPOVIĆ VUKADIN
+POPOVIĆ VUKOSAVA
+POPOVIĆ ZDENKO
+POPOVIĆ ZDRAVKA
+POPOVIĆ ZLATOJA
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORAN
+POPOVIĆ ZORKA
+POPOVIĆ ZUZANA
+POPOVIĆ ZVONIMIR
+POPOVICKI ŽARKO
+POPOVICKI BORISLAV
+POPOVICKI JOVANKA
+POPOVICKI LJUBOMIR
+POPOVICKI MILENKO
+POPOVICKI MILENKO
+POPOVICKI MILICA
+POPOVICKI MILOŠ
+POPOVICKI PETAR
+POPOVICKI RADOMIR
+POPOVICKI RADOMIR
+POPOVICKI SALOMA
+POPOVICKI SVETISLAV
+POPOVICKI TATJANA
+POPOVICKI TEODOR
+POPOVICKI VLADISLAV
+POPOVICKI ZORAN
+POPOVSKI RADOJKA
+POPOVSKI VENKO
+POPRŽAN MILAN
+POPRŽAN NIKOLA
+POPRŽAN VALENTINA
+POPRŽEN BORIVOJ
+POPSAVIN DUŠAN
+POPSAVIN VELIMIR
+POPTEŠIN ĐORĐE
+POPTEŠIN LAZAR DIPL PRAVNIK
+POPTEŠIN MILADINKA
+POPTEŠIN STEVAN
+PORČA LJILJANA
+PORČA RAMIZ
+POROŠIN DRAGINJA
+POROŠIN GEORGIJE DR LEKAR
+POROBIĆ MILAN
+POROBIĆ MIROSLAV
+POROBIĆ MIROSLAV
+POROBIĆ NIJAZ
+POROBIĆ NIKOLA
+POROBIĆ SLOBODAN
+POROPAT BOŠKO
+POROPATIĆ ZORA
+POSAVAC VJEKOSLAV
+POSLAN IVAN
+POSTOLOVIĆ STANIMIR
+POT FRANJA
+POT JOSIP
+POT MIRKO DIPL ING
+POTAI LADISLAV
+POTH LJUDEVIT
+POTIĆ MARIJELA
+POTIĆ RADIVOJE
+POTIĆ RADOMIR
+POTKONJAK JOVAN
+POTKONJAK MARA
+POTKONJAK NIKOLA
+POTKONJAK PETAR
+POTKONJAK SOFIJA
+POTKONJAK STANKO
+POTKONJAK STEVO
+POTKONJAK VLADO
+POTKOZARAC JULIJANA
+POTNER TEREZIJA
+POTOKOVIĆ ABDULAH
+POTOKOVIĆ SMAJO
+POTPARIĆ JELICA
+POTRAN MIŠA
+POTREBIĆ ĐURO
+POTREBIĆ DOBRILA
+POTREBIĆ DRAGICA
+POTREBIĆ MILE
+POTREBIĆ MILE
+POTREBIĆ MILICA
+POTREBIĆ NIKOLA
+POTREBIĆ RADE
+POTREBIĆ SLAVKO
+POTREBIĆ SOFIJA
+POTURIĆ STEVA
+POUČKI RADISLAV
+POVA MIROSLAVA
+POVAŽAN ANDRIJA
+POVAŽAN MARIJA
+POVAZAI IŠTVAN
+POVAZAI TIBOR
+POVIĆ MILAN
+POVRŽAN SIMO
+POZDAN ĐURO
+POZDER VERONA
+POZDEREC FRANC
+POZNANOVIĆ DEJAN
+POZNANOVIĆ JELENA
+POZNANOVIĆ LJUBOMIR
+POZNANOVIĆ MILAN
+POZNANOVIĆ MILAN
+POZNANOVIĆ MILENKO
+POZNANOVIĆ OBRAD
+POZNANOVIĆ RADIVOJE
+POZNIĆ ĐURO
+POZNIĆ JOVO
+POZNIĆ MIRA
+POZNIĆ NIKOLA
+POZOJEVIĆ KLARA
+POZOJEVIĆ STEVAN
+PRČIĆ JELISAVETA
+PRČIĆ STJEPAN
+PRČIĆ TIHOMIR
+PRČIĆ VLADIMIR
+PRŠA MIROSLAV MR
+PRŠA VERA
+PRĆIĆ IVAN
+PRŽAR NADA
+PRŽEVALJSKI NIKOLA
+PRŽNICA MILANA
+PRŽNICA ZLATKO
+PRAŠČEVIĆ ANTONIJA
+PRAŠČEVIĆ ZORICA
+PRAŠTALO MILUTIN
+PRAŠTALO PETAR
+PRAŽIĆ BILJANA
+PRAŽIĆ BRANKO
+PRACNER JOSIP
+PRACNER RUŽICA
+PRALICA LJUBOMIR
+PRALICA NEDELJKO
+PRALICA STEVAN
+PRALICA STEVAN
+PRAMENKO MIROSLAV
+PRAMENKO NEDELJKO
+PRAMENKO RISTO
+PRAMENKO SRETO
+PRANIĆ KATICA
+PRANIĆ MIRKO
+PRANIĆ PETAR
+PRANIĆ TOFIL
+PRANJIĆ ZLATKO
+PRANJKIĆ MARKO
+PRANKIĆ MILE
+PRAVDA BORBALA
+PRAVDA LADISLAV
+PRAVDA LAJOŠ
+PRAVICA EVICA
+PRAVICA LJUBOMIR
+PRDIĆ NEDELJKO
+PREČANICA BOŽO
+PREŠERN JULIJANA
+PREŠOVA MIRJANA
+PREBEG DRAGAN
+PREBIRČEVIĆ NEVENA
+PREBIRAČEVIĆ KRISTINA
+PREBIRAČEVIĆ LAZO
+PREDA AUREL
+PREDIĆ MIHAJLO
+PREDIĆ RADOMIR
+PREDOJEVIĆ ŽELJKO
+PREDOJEVIĆ ANKA
+PREDOJEVIĆ BOŽO
+PREDOJEVIĆ BOŽO
+PREDOJEVIĆ BORISLAV
+PREDOJEVIĆ DANICA
+PREDOJEVIĆ DRAGICA
+PREDOJEVIĆ LJUBOMIR
+PREDOJEVIĆ LUKA
+PREDOJEVIĆ MILAN
+PREDOJEVIĆ MILE
+PREDOJEVIĆ MILICA
+PREDOJEVIĆ MILORAD
+PREDOJEVIĆ MILOVAN
+PREDOJEVIĆ MIRKO
+PREDOJEVIĆ NENAD
+PREDOJEVIĆ PAVLE
+PREDOJEVIĆ PREDRAG
+PREDOJEVIĆ RADOSLAVA
+PREDOJEVIĆ SIMA
+PREDOJEVIĆ SIMO
+PREDOJEVIĆ STOJAN
+PREDOJEVIĆ TRIVO
+PREDOJEVIĆ ZORA
+PREDOLAC DRAGOMIR
+PREDOVIĆ DUŠAN
+PREDRAŠKI DRAGOLJUB
+PREDRAGOVIĆ BORA
+PREDRAGOVIĆ DESIMIR
+PREDRAGOVIĆ MARIJA
+PREDRAGOVIĆ NOVAK
+PREDRAGOVIĆ VESELKO
+PREDRAGOVIĆ VESNA
+PREDRAGOVIĆ ZVEZDAN DIPL ING
+PREGUN ĐURA
+PREGUN NIKOLA
+PREGUN PETAR
+PREGUN STEVAN
+PREGUN ZORA
+PREKAJAC ŽIVOJIN
+PREKAJAC SLAVKO
+PREKAJSKI BRANKO
+PREKAJSKI MIRJAN
+PREKIĆ ANĐELKA
+PREKODRAVAC NEVENKA
+PREKOGAČIĆ ĐORĐE
+PREKOGAČIĆ DANICA
+PREKOGAČIĆ ILIJA
+PREKOGAČIĆ VERA
+PREKOP JOŽEF
+PREKOP RADOJKA
+PREKPALJAJ BIBA
+PREKPALJAJ KOLJA
+PREKPALJAJ MARTIN
+PREKPALJAJ PJETER
+PREL MARIJA
+PRELEVIĆ BORISLAV
+PRELEVIĆ MARKO
+PRELEVIĆ MILAN
+PRELEVIĆ MILOŠ
+PRELEVIĆ RADOMIR
+PRELEVIĆ SENKA
+PRELEVIĆ VASILIJE
+PRELIĆ MILOJKA
+PRELIĆ VASA
+PRELIĆ ZAGORKA
+PREMIĆ PETAR
+PREMIĆ VASA
+PREMOVIĆ DANICA
+PREMOVIĆ RADOMIR
+PREMOVIĆ TOMISLAV
+PREMUŠ FRANJA
+PREMUŽIĆ DAMIR
+PREMUŽIĆ MATO
+PREMUŽIĆ VLADIMIR
+PRENDOVIĆ PALJUŠ
+PRENTOVIĆ DRAGAN
+PRENTOVIĆ DRAGAN
+PRENTOVIĆ MILAN
+PRENTOVIĆ PAVLE
+PRENTOVIĆ PETAR
+PRENTOVIĆ RISTO
+PRENTOVIĆ VASO
+PRERAD DOBRILA
+PRERADOV DINKA
+PRERADOV DRAGICA
+PRERADOV DUBRAVKA
+PRERADOV GAVRA
+PRERADOV LAZAR
+PRERADOV LEPOSAVA
+PRERADOV MARIJA
+PRERADOV MIRJANA
+PRERADOV MIRJANA
+PRERADOV NEDELJKO
+PRERADOV PETAR
+PRERADOV SAVA
+PRERADOV VELIZAR
+PRERADOV VLADIMIR
+PRERADOVIĆ ANA
+PRERADOVIĆ BOJA
+PRERADOVIĆ MILENKO
+PRERADOVIĆ MLADEN
+PRERADOVIĆ NEDELJKO
+PRERADOVIĆ NEDELJKO
+PRESEČKOVIĆ VESNA
+PRETMERSKI JOVAN
+PRETMERSKI STEVAN
+PREVEDEN LEO
+PRGOMELJA NIKOLA
+PRIŠIĆ KATICA
+PRIŠIĆ LAZAR
+PRIŠIĆ LIDIJA
+PRIŠIĆ MILOŠ
+PRIŠIĆ MITA
+PRIŠIĆ NATALIJA
+PRIŠIĆ STEVAN
+PRIBAKOVIĆ KSENIJA
+PRIBAKOVIĆ MILANA
+PRIBAKOVIĆ NIKOLA
+PRIBANOVIĆ TOMISLAV
+PRIBIČEVIĆ ARSENIJE
+PRIBIČEVIĆ SAVKA
+PRIBIČEVIĆ SVETOZAR DR ING
+PRIBIŠ STEVAN
+PRIBIŠEV MIRJANA
+PRIBIŠIĆ LJUBO
+PRIBIŠIĆ MIROSLAV
+PRIBIŠIĆ RISTINJA
+PRIBIŠIĆ SAVO
+PRIBIĆ ARSENIJE
+PRIBIĆ DANILO
+PRIBIĆ DIMITRIJE
+PRIBIĆ MARIJA
+PRIBIĆ MILOJE
+PRIBIĆ SAVA
+PRIBIĆEVIĆ JOVO
+PRIBIĆEVIĆ OLGA
+PRIBIĆEVIĆ TATJANA
+PRIBILOVIĆ BRANKICA
+PRICA ŽIVKO
+PRICA ALEKSANDAR
+PRICA BORIVOJ
+PRICA BOSILJKA
+PRICA DANILO
+PRICA DUŠAN
+PRICA ISO
+PRICA JOVANKA
+PRICA MARKO
+PRICA MILE
+PRICA MLADEN
+PRICA PETAR
+PRICA SOFIJA
+PRIJEVIĆ ĐORĐE
+PRIJEVIĆ MILAN
+PRIJIĆ MILAN
+PRIJIĆ MIRSAD
+PRIJOVIĆ BOGDAN
+PRIJOVIĆ DRAGAN
+PRIJOVIĆ STANIŠA
+PRIKEL PETAR
+PRIKIDANOVIČ LASLO
+PRIKIDANOVIĆ ANA
+PRILJEVA BORISLAV
+PRIMORAC NIKOLA
+PRIMOVIĆ BLAGOJE
+PRIMOVIĆ DEJAN
+PRIMOVIĆ DOBRICA
+PRIMOVIĆ GORDANA
+PRIMOVIĆ KOVINKA
+PRIMOVIĆ MILAN
+PRIMOVIĆ STOJAN
+PRINCIP JOZO
+PRISELAC BORIS
+PRISELAC BRANKO
+PRISELAC ZDRAVKO
+PRISLAN ZVONIMIR
+PRISTAI LADISLAV
+PRIVRODSKI BORIS DR
+PRIVRODSKI KONSTANTIN
+PRKUŠIĆ ANICA
+PRKUŠIĆ SLAVKO
+PRLEVIĆ STOJAN
+PRLINAC VELJKO
+PRLJEVIĆ NADA
+PROČIKEVIĆ ANKA
+PROŠIĆ BOGDAN
+PROŠIĆ JOVAN
+PROŠIĆ NEĐO
+PROŠIĆ NEĐO
+PROŠIĆ NEBOJŠA
+PROŠIĆ NIKOLA
+PROŠIĆ PETAR
+PROŠIĆ SMILJA
+PROBOJČEVIĆ ANTUN
+PROBOJČEVIĆ ERNEST
+PROBOJČEVIĆ MARIJA
+PROBOJČIĆ BRANISLAVA
+PRODANA KRSTAN
+PRODANIĆ BORISLAV
+PRODANIĆ MILAN
+PRODANOV ANĐELKA
+PRODANOV BLAGOJA
+PRODANOV BORA
+PRODANOV DANILO
+PRODANOV DRAGOLJUB
+PRODANOV DRAGOLJUB
+PRODANOV DRAGOSLAV
+PRODANOV DUŠAN
+PRODANOV GORICA
+PRODANOV ILIJA
+PRODANOV JOVAN
+PRODANOV JUSTINA
+PRODANOV MILAN
+PRODANOV MILENA
+PRODANOV MILENKO
+PRODANOV MIODRAG
+PRODANOV MLADEN
+PRODANOV NEDELJKO
+PRODANOV RADOSLAV
+PRODANOV SAVA
+PRODANOV SLAVKA DR
+PRODANOV ZUZANA
+PRODANOVIĆ ŠPIRO
+PRODANOVIĆ ŽARKO
+PRODANOVIĆ ŽELJKO
+PRODANOVIĆ ŽIVAN
+PRODANOVIĆ ŽIVKA
+PRODANOVIĆ ŽIVKO
+PRODANOVIĆ ĐOKA
+PRODANOVIĆ ĐORĐE
+PRODANOVIĆ ĐORĐE
+PRODANOVIĆ ĐORĐE
+PRODANOVIĆ ĐURO
+PRODANOVIĆ ALEKSANDAR
+PRODANOVIĆ ANĐELKO
+PRODANOVIĆ BILJANA
+PRODANOVIĆ BORISLAV
+PRODANOVIĆ BOSILJKA
+PRODANOVIĆ BRANIMIR
+PRODANOVIĆ DAMJAN
+PRODANOVIĆ DANICA
+PRODANOVIĆ DANICA
+PRODANOVIĆ DANILKA
+PRODANOVIĆ DRAGAN
+PRODANOVIĆ DRAGAN
+PRODANOVIĆ DRAGAN
+PRODANOVIĆ DUŠANKA
+PRODANOVIĆ DUŠAN
+PRODANOVIĆ DUŠAN
+PRODANOVIĆ DUŠICA
+PRODANOVIĆ GAVRA
+PRODANOVIĆ JOVANKA
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ JOVAN
+PRODANOVIĆ KOSTA
+PRODANOVIĆ KOSTA
+PRODANOVIĆ LAZAR DIPL ING
+PRODANOVIĆ LJUBICA
+PRODANOVIĆ LJUBINKA
+PRODANOVIĆ LJUBOJA
+PRODANOVIĆ LJUBOMIR
+PRODANOVIĆ MARTA
+PRODANOVIĆ MILAN
+PRODANOVIĆ MILAN
+PRODANOVIĆ MILAN
+PRODANOVIĆ MILAN
+PRODANOVIĆ MILICA
+PRODANOVIĆ MILJKO
+PRODANOVIĆ MILORAD
+PRODANOVIĆ MILOVAN
+PRODANOVIĆ MIODRAG
+PRODANOVIĆ MIODRAG
+PRODANOVIĆ MIRA
+PRODANOVIĆ MIRJANA
+PRODANOVIĆ MIROSLAV
+PRODANOVIĆ MLADEN
+PRODANOVIĆ NIKOLA
+PRODANOVIĆ-PANJKOVIĆ ĐURĐINKA
+PRODANOVIĆ PAVA
+PRODANOVIĆ PAVLE
+PRODANOVIĆ PETAR
+PRODANOVIĆ PETAR
+PRODANOVIĆ PETAR
+PRODANOVIĆ RADISAV
+PRODANOVIĆ RADOSLAV
+PRODANOVIĆ RATKO
+PRODANOVIĆ RODOLJUB
+PRODANOVIĆ SAVA
+PRODANOVIĆ SINIŠA
+PRODANOVIĆ SINIŠA
+PRODANOVIĆ SLAVKO
+PRODANOVIĆ SLOBODAN
+PRODANOVIĆ SLOBODAN
+PRODANOVIĆ STANA
+PRODANOVIĆ TANASIJE
+PRODANOVIĆ VASA
+PRODANOVIĆ VASA
+PRODANOVIĆ VELINKA
+PRODANOVIĆ VELJKO
+PRODANOVIĆ VERA DR
+PRODANOVIĆ VIDOSAVA
+PRODANOVIĆ VLADIMIR
+PRODANOVIĆ ZAGORKA
+PRODANOVIĆ ZAGORKA
+PRODANOVIĆ ZORAN
+PRODIĆ DANICA
+PRODIĆ VIDA
+PRODIĆ VITOMIR
+PRODIĆ VITOMIR
+PROFONTAROVIĆ ROZALIJA
+PROHASKA MILENKO
+PROHASKA NIKOLA
+PROHASKA STEVAN
+PROHASKA VERA
+PROJKOVSKI DESPA
+PROKEŠ BELA
+PROKEŠ LADISLAV
+PROKIĆ ĐORĐE
+PROKIĆ GORAN
+PROKIĆ MILAN
+PROKIĆ MIRA
+PROKIĆ RUŽICA
+PROKIĆ STEVAN
+PROKIĆ STEVAN
+PROKIĆ ZORAN
+PROKIĆ ZORAN
+PROKIN ANĐELKA
+PROKIN BRANISLAV
+PROKIN KSENIJA
+PROKIN LAZAR
+PROKIN MARKO
+PROKIN MIRA
+PROKIN RADIVOJ
+PROKIN RUŽICA
+PROKIN STEVAN
+PROKIN STEVAN
+PROKIN ZLATINKA
+PROKIN ZORA
+PROKOPEC DUŠAN
+PROKOPEC HELENA
+PROKOPEC JELISAVETA
+PROKOPEC STEVAN
+PROKOPIĆ ČEDO
+PROKOPIĆ MIHAJILO
+PROKOPIĆ STOJAN
+PROLE CVIJO
+PROLE JAGODA
+PROLE MELANIJA
+PROLE MILENKO
+PROLE MILIJANA
+PROLE MILOŠ
+PROLE MIRKO
+PROLE MIROSLAV
+PROLE MITAR
+PROLE MITAR
+PROLE MLADEN
+PROLE RADOVAN
+PROLE RISTA
+PROLE STANISLAV
+PROLE STANKO
+PROLE UGLJEŠA
+PROLE VELJKO
+PROLE VERONA
+PROLIĆ DRAGICA
+PROLIĆ MILORAD
+PROLIĆ PERO
+PROLIĆ VID
+PROSENICA MARKO
+PROSENICA VIDOSAVA
+PROSENIK DUBRAVKO
+PROSENIK ZVONIMIR
+PROSTRAN ČEDOMIR
+PROSTRAN PETAR
+PROTIĆ ŽARKO
+PROTIĆ ĐOKA
+PROTIĆ ĐORĐE
+PROTIĆ BOSILJKA
+PROTIĆ BRANISLAV
+PROTIĆ DRAGAN
+PROTIĆ DUŠAN
+PROTIĆ ILIJA DIPL ING
+PROTIĆ JOSIM
+PROTIĆ MARIJA
+PROTIĆ MILENA DR STOMATOLOG
+PROTIĆ MILKA
+PROTIĆ-MILOŠEVIĆ SIMKA PROF
+PROTIĆ MILOŠ
+PROTIĆ MILORAD
+PROTIĆ MIRJANA
+PROTIĆ MITAR
+PROTIĆ NADA
+PROTIĆ OBRAD
+PROTIĆ PREDRAG
+PROTIĆ PUNIŠA
+PROTIĆ RADOMIR
+PROTIĆ SAMUILO
+PROTIĆ SMILJA
+PROTIĆ VIDA
+PROTIĆ VITOMIR
+PROVČI AGAFIJA
+PROVČI EVGENIJE DIPL ING
+PROVČI JOVGEN
+PROVČI VERA
+PRPA ANĐA
+PRPA GOSPA
+PRPA LAZAR
+PRPA MARGITA
+PRPA MILOVAN
+PRPA VELJKO
+PRPA ZAGORKA
+PRPIĆ ALEKSANDAR
+PRPIĆ ALEKSANDAR
+PRPIĆ ALEKSANDAR
+PRPIĆ MARIJANA
+PRPIĆ NIKOLA
+PRPIĆ RADOVAN
+PRSKALO BLAGO
+PRSTOJEVIĆ GORAN
+PRSTOJEVIĆ VOJISLAV
+PRTINA BRANKO
+PRUŽAREV TATJANA
+PRUDAN-ĐURIŠIĆ RADOJKA DR
+PRUGIĆ LJUBOMIR
+PRUGIĆ VOJISLAV
+PRUGINIĆ LJUBICA
+PRUNIĆ JOVAN
+PRUSINA DRAGO
+PRUSINA ILIJA
+PRUSINA MARGITA
+PRUSINA MILAN
+PRUSINA VLATKO
+PRVANOV BRANISLAV
+PRVANOV DARINKA
+PRVANOV DIVNA
+PRVANOV MILOŠ
+PRVANOV VLADIMIR
+PRVANOVIĆ MILEVA
+PSODAROV BRANKO
+PSODOROV MAJA
+PSODOROV SPASOJE
+PSODOROV TAMARA
+PTIČAR ĐURA
+PTIČAR MILAN
+PUŠAC BRANKO
+PUŠAC JELENKO
+PUŠAC MILENA
+PUŠAC MILENA
+PUŠARA ĐORĐE
+PUŠARA BOŽIDAR
+PUŠARA DUŠAN
+PUŠARA JELENA
+PUŠARA MILIVOJ
+PUŠARA MIRKO
+PUŠARA MIROSLAV
+PUŠARA RADMILA
+PUŠELJIĆ JELENA
+PUŠENJAK MARIJA
+PUŠIĆ DRAGOLJUB
+PUŠIĆ DUŠAN
+PUŠIĆ EMIL
+PUŠIĆ GORAN
+PUŠIĆ JOVAN
+PUŠIĆ LJUBINKO
+PUŠIĆ MILENA
+PUŠIĆ MILICA
+PUŠIĆ MILIVOJ
+PUŠIĆ MILOŠ
+PUŠIĆ NIKOLA
+PUŠIĆ OBRAD
+PUŠIĆ PAVLE
+PUŠIĆ SAVA
+PUŠIĆ SAVA
+PUŠIĆ SOFIJA
+PUŠIĆ STEVAN
+PUŠIĆ VERICA
+PUŠIĆ VERICA
+PUŠIĆ ZAGORKA
+PUŠIBRK CVETKO
+PUŠIBRK VASA
+PUŠIN MIRJANA
+PUŠIN MIROSLAV
+PUŠIN MIROSLAV
+PUŠIN VLADA
+PUŠKAŠ ĐURA
+PUŠKAŠ ĐURA
+PUŠKAŠ CILA
+PUŠKAŠ JOŽEF
+PUŠKAŠ JOAKIM
+PUŠKAŠ JULIJAN
+PUŠKAŠ MIHAJLO
+PUŠKAŠ MILENA
+PUŠKAŠ MIROSLAV
+PUŠKAŠ OLENA
+PUŠKAŠ ONUFRIJE
+PUŠKAŠ PETAR
+PUŠKAŠ ROZALIJA
+PUŠKAŠ STEVAN
+PUŠKAŠ VERA
+PUŠKAŠ VLADIMIR
+PUŠKAŠ VLADIMIR
+PUŠKAR JOVICA
+PUŠKAR STEVA
+PUŠKAR VOJISLAV
+PUŠKAREVIĆ JOVANKA
+PUŠKAREVIĆ SVETISLAV
+PUŠKARIĆ ANA
+PUŠKARIĆ IVAN
+PUŠKARIĆ JURE
+PUŠKARIĆ MARIJA
+PUŠKAROV DANILKA
+PUŠKAROV DANILKA
+PUŠKAROV MILAN
+PUŠKAROV ZORA
+PUŠKOVIĆ ANĐELKO
+PUŠTRIĆ MILAN
+PUŠTRIĆ SPASOJE
+PUŽ-EVIĆ OLGA
+PUŽIĆ VERA
+PUĐA LEPOSAVA
+PUAČ SVETISLAV
+PUAČ SVETOZAR
+PUAČA VELJKO DR
+PUCAR ĐURO
+PUCAR DUŠAN
+PUCAR MILICA
+PUCAR STEVO
+PUCAR VASILIJE
+PUCAR VASO
+PUCAR ZDRAVKO
+PUCAREVIĆ ŽIVKO
+PUCAREVIĆ BOSILJKA
+PUCAREVIĆ GOJKO
+PUCAREVIĆ HILDA
+PUCAREVIĆ JELA
+PUCAREVIĆ NOVAK
+PUCAREVIĆ SOFIJA
+PUCOVSKI ĐURO
+PUDAR DANILO
+PUDAR GOJKO
+PUDAR RAJKO
+PUDAR RANKO
+PUDAR RANKO
+PUDAR RANKO
+PUDAR RATKO
+PUDAR SLOBODAN
+PUDAR STEVAN
+PUDAR ZDRAVKO
+PUDIĆ ILIJA
+PUDIĆ JOZA
+PUDRLJA BRANKO
+PUGAR ANĐELKA
+PUHAČA STEVO
+PUHALAK BERTA
+PUHALAK LASLO DR LEKAR
+PUHALAK STEVAN
+PUHAN OSKAR
+PUHANIĆ TEREZA
+PUHAR DUŠAN
+PUHAR FRANC
+PUIĆ ĐORĐE
+PUIĆ RADOSLAV
+PUJA FLORIN
+PUJIĆ MILIVOJ
+PUJIĆ MILOŠ
+PUJIĆ NADEŽDA
+PUJIĆ PERSIDA DIPL ING
+PUJIĆ SAVA
+PUJIĆ STEVAN
+PUJIN LAZA
+PUJIN RADE
+PUJIN RADIVOJE
+PUJIN STEVAN
+PUJIN VLASTA DR
+PULAI LAJOŠ
+PULETIĆ ZDRAVKO
+PULIĆ ANTONIJA
+PULIĆ OLGA
+PULIĆ RADOJKA
+PULISAK FRANJA
+PULISAK ILONKA
+PULISAK JOVAN
+PULISAK MIHAJLO
+PULISAK NADEŽDA
+PULISAK NIKOLA
+PULJIZEVIĆ ANTUN DIPL ING
+PUNDOV ANDREJ
+PUNGUL JOVICA
+PUNGUL MIRA
+PUPAVAC ĐORĐE
+PUPAVAC BRANKO
+PUPAVAC BRANKO
+PUPAVAC FRANJA
+PUPAVAC MILAN
+PUPAVAC PETAR
+PUPAVAC STAKA
+PUPAVAC STEVAN
+PUPAVAC STOJAN
+PUPAVAC TODOR
+PUPAVAC VESNA
+PUPIĆ RADMILA
+PUPIN ŽIVAN
+PUPOVAC DMITAR
+PUPOVAC DUŠAN
+PUPOVAC LUKA
+PUPOVAC MILOŠ
+PUPOVAC MILOŠ
+PUPOVAC SVETLANA
+PUPOVAC TODOR
+PUPOVIĆ LJUBOMIR
+PURAĆ ŽIVKO
+PURAĆ BRANKO
+PURAĆ ERŽEBET
+PURAĆ JOVAN
+PURAĆ LAZAR
+PURAĆ MAGDA
+PURAĆ MILADIN
+PURAĆ MILADIN
+PURAĆ MILENKO
+PURAĆ MIROSLAV
+PURAĆ NADA
+PURAĆ OLGA
+PURIŠIĆ ČEDO
+PURIŠIĆ SVETLANA
+PURIĆ BLANKA
+PURIĆ BOŽO
+PURIĆ DIJANA
+PURIĆ DRAGAN
+PURIĆ DRAGICA
+PURIĆ MILAN
+PURIĆ SLOBODAN
+PURIĆ ZORA
+PURKOV VESELIN
+PURKOVIĆ LJILJANA
+PURTIĆ NIKOLA
+PUSTAI IMRE
+PUSTAI JENE
+PUSTAJIĆ BRANKA
+PUSTAJIĆ RADA
+PUSTAJIĆ VUKICA
+PUSTI JOSIP
+PUTARIĆ JOVAN
+PUTIĆ ŽIVANA
+PUTIĆ KATICA
+PUTIĆ LIVIJA
+PUTIĆ SLOBODAN
+PUTIĆ SVETISLAV
+PUTIĆ ZORAN
+PUTNIK ALEKSANDAR
+PUTNIK ALEKSANDAR
+PUTNIK BORISLAV
+PUTNIK BRANKO
+PUTNIK DANILKA
+PUTNIK DIMITRIJE
+PUTNIK GERTRUDA
+PUTNIK GORAN
+PUTNIK IVAN
+PUTNIK JELENA
+PUTNIK KATICA
+PUTNIK KSENIJA
+PUTNIK LJUBICA
+PUTNIK MILAN
+PUTNIK MILAN
+PUTNIK MILENA
+PUTNIK MILORAD
+PUTNIK NEVENKA
+PUTNIK PAJO
+PUTNIK PETAR
+PUTNIK PETAR
+PUTNIK RADE
+PUTNIK RADOMIR
+PUTNIK RADOVAN
+PUTNIK SLOBODAN DIPL ING
+PUTNIK SNEŽANA
+PUTNIK STEFANIJA
+PUTNIK STEVAN
+PUTNIK STEVAN
+PUTNIK-URAČ RENATA
+PUTNIK VLADIMIR DR
+PUTNIK VLADIMIR
+PUTNIK ZORAN
+PUTNIKOVIĆ IVAN
+PUTNIKOVIĆ MILENA
+PUTNIKOVIĆ PIROŠKA
+PUVAČA LJILJANA
+PUVALIĆ KATICA
+PUZIĆ BILJANA
+PUZIĆ BOŠKO
+PUZIĆ BOSA
+PUZIĆ DRAGOMIR
+PUZIĆ SAVA
+PUZIĆ VELJKO
+PUZIGAĆA KRISTINA
+RAČIĆ ARANĐEL
+RAČIĆ LEPOSAVA
+RAČIĆ MILOŠ
+RAČIĆ MIROSLAV
+RAČIĆ NADA
+RAČIĆ RANKO
+RAČIĆ SAŠA
+RAČIĆ-SAVIN ZORICA
+RAČIĆ STOJAN
+RAČIĆ TOMISLAV
+RAČIĆ VERA
+RAČIĆ ZDRAVKO
+RAŠČANIN BRANISLAV
+RAŠČANIN BRANISLAV
+RAŠČIĆ NEHRU
+RAŠA DOJNA
+RAŠAJSKI DUŠAN
+RAŠAJSKI VEROSLAV
+RAŠETA DANE
+RAŠETA MIODRAG
+RAŠETA MIRJANA
+RAŠETA NIKOLA
+RAŠETA PETAR
+RAŠETA STEVA
+RAŠETA TOMA
+RAŠETA ZDRAVKO
+RAŠEVIĆ ŽARKO
+RAŠEVIĆ ŽELJKO
+RAŠEVIĆ MIODRAG
+RAŠIĆ BOŽIDAR DR
+RAŠIĆ DIMITRIJE
+RAŠIĆ DUŠICA
+RAŠIĆ IBOJKA
+RAŠIĆ IGNJAT
+RAŠIĆ ILIJA
+RAŠIĆ-KOPČOK NADA
+RAŠIĆ LAZAR
+RAŠIĆ MANDA
+RAŠIĆ MARIJA
+RAŠIĆ NADEŽDA
+RAŠIĆ NIKOLA
+RAŠIĆ PAUN
+RAŠIĆ PETAR MR ING
+RAŠIĆ SMILJA
+RAŠIĆ STOJAN
+RAŠIĆ UROŠ
+RAŠIĆ VESNA
+RAŠIDI DOROTEJA
+RAŠIDI SLOBODANKA
+RAŠIJOVAN RADMILA
+RAŠITI BAJRAM
+RAŠITI HAVA
+RAŠITI IMER
+RAŠKOV BRANKO
+RAŠKOV BRANKO
+RAŠKOV DANICA
+RAŠKOV MARIJA
+RAŠKOV SMILJKA
+RAŠKOVIĆ ĐORĐE
+RAŠKOVIĆ ĐORĐE
+RAŠKOVIĆ DARINKA
+RAŠKOVIĆ DRAGAN
+RAŠKOVIĆ DRAGOLJUB
+RAŠKOVIĆ DRAGOSLAVA
+RAŠKOVIĆ GORDANA
+RAŠKOVIĆ MILAN
+RAŠKOVIĆ MILICA
+RAŠKOVIĆ MIODRAG
+RAŠKOVIĆ MIRJANA
+RAŠKOVIĆ MIRJANA
+RAŠKOVIĆ MLADEN
+RAŠKOVIĆ RADOSAV
+RAŠKOVIĆ SLOBODAN
+RAŠKOVIĆ SREĆKO
+RAŠKOVIĆ STEVAN
+RAŠKOVIĆ VERA
+RAŠKOVIĆ VLADIMIR
+RAŠOVIĆ RADOVAN
+RAŠOVIĆ VOJISLAV
+RAŽNATOVIĆ RADIVOJ
+RAĐELIĆ GORDANA
+RAĐELIĆ MILAN
+RAĐENOVIĆ ŽELJKO
+RAĐENOVIĆ ŽELJKO
+RAĐENOVIĆ BOŽO
+RAĐENOVIĆ BORIS
+RAĐENOVIĆ BOSA
+RAĐENOVIĆ BRANKO
+RAĐENOVIĆ DRAGA
+RAĐENOVIĆ DUŠAN
+RAĐENOVIĆ DUŠAN
+RAĐENOVIĆ KARLO
+RAĐENOVIĆ MANE
+RAĐENOVIĆ MILANKO
+RAĐENOVIĆ MILEVA
+RAĐENOVIĆ MILKA
+RAĐENOVIĆ MILKA
+RAĐENOVIĆ NEBOJŠA
+RAĐENOVIĆ NIKOLA
+RAĐENOVIĆ SOFIJA
+RAĐENOVIĆ UROŠ
+RAĐENOVIĆ VELJKO
+RAĐENOVIĆ ZORICA
+RAĐEVIĆ SAVO
+RABADŽIJEVSKI PAULA
+RABATIĆ MILOŠ
+RABI JOŽEF
+RABIJAC SRBA
+RABRENOVIĆ MARIJA
+RABRENOVIĆ RADISAV
+RABRENOVIĆ ZLATINKA
+RAC ŠANDOR
+RAC ALBERT
+RAC ANA
+RAC BRUNO
+RAC EDMUND
+RAC FERENC
+RAC FERENC
+RAC FRANJA
+RAC GABRIJEL
+RAC JANOŠ
+RAC JELISAVETA
+RAC JOVAN
+RAC LJILJANA
+RAC LJUBOMIR
+RAC MARIJA
+RAC MARIJA
+RAC MELANIJA
+RAC PAL
+RAC RUDOLF
+RAC-SABO LAJOŠ
+RAC STEVAN
+RAC TEODOR
+RAC VLADIMIR
+RAC ZLATA
+RACA ĐURO
+RACA DRAGAN
+RACA DRAGAN
+RACA DRAGAN
+RACA DUŠAN
+RACA GORDANA DR
+RACA MIRKO
+RACA PETAR
+RACA RUŽICA
+RACIĆ ČEDOMIR
+RACIĆ BRANKO
+RACIĆ DUŠAN
+RACIĆ MILAN
+RACIĆ MILENKO
+RACIĆ MILICA
+RACIĆ MILICA
+RACIĆ MILORAD
+RACIĆ MIRJANA
+RACIĆ NEDELJKO
+RACIĆ RADENKO
+RACIĆ SLOBODAN
+RACIĆ SLOBODAN
+RACIĆ VELJKO
+RACIĆ ZDRAVKO
+RACIĆ ZDRAVKO
+RACIĆ ZORAN
+RACKOV DARINKA
+RACKOV DRAGOSLAV
+RACKOV KATICA
+RACKOV LAZAR
+RACKOV MILICA
+RACKOV MILIVOJ
+RACKOV MILOŠ
+RACKOV MIROSLAV
+RACKOV MIROSLAV
+RACKOV NATAŠA
+RACKOV OLGA
+RACKOV RADOJKA
+RACKOV RADOMIR
+RACKOV RADOSLAV
+RACKOV SAVA
+RACKOV SLOBODAN
+RACKOV SRĐAN
+RACKOV SRĐAN
+RACKOV SRĐAN
+RACKOV ZLATICA
+RACKOVIĆ ĐORĐE
+RACKOVIĆ DRAGOMIR
+RACKOVIĆ DUŠAN
+RACKOVIĆ LAZAR
+RACKOVIĆ MILAN
+RACKOVIĆ MILOŠ
+RACKOVIĆ MIRJANA
+RACLER ĐERĐ
+RACLER MARGIT
+RACO MIĆO
+RACO RATKO
+RAD PREDRAG
+RADAŠIN ELVIRA
+RADAŠIN VLADIMIR
+RADAŠIN ZVEZDAN
+RADAK ĐORĐE
+RADAK ĐURICA
+RADAK DUŠAN
+RADAK DUŠAN
+RADAK GAVRA
+RADAK JELISAVETA
+RADAK JOVANKA
+RADAK JOVAN
+RADAK KOVINKA
+RADAK LAZAR
+RADAK LAZAR
+RADAK LJUBICA
+RADAK LJUBICA
+RADAK LUKA
+RADAK MILADINKA
+RADAK MIROSLAV
+RADAK OLGA
+RADAK RADMILA
+RADAK SLAVKO
+RADAK ZORA
+RADAKOVIĆ ŽIVAN
+RADAKOVIĆ ĐORĐE
+RADAKOVIĆ ĐORĐE
+RADAKOVIĆ ĐURAĐ
+RADAKOVIĆ ALEKSANDAR
+RADAKOVIĆ ANA DR
+RADAKOVIĆ BRANKO
+RADAKOVIĆ BRANKO
+RADAKOVIĆ BRANKO
+RADAKOVIĆ DAMJAN
+RADAKOVIĆ DARKA
+RADAKOVIĆ DIMITRIJE
+RADAKOVIĆ DUŠAN
+RADAKOVIĆ DUŠAN
+RADAKOVIĆ ILIJA
+RADAKOVIĆ ILIJA
+RADAKOVIĆ JELENA
+RADAKOVIĆ JOVAN
+RADAKOVIĆ JOVAN
+RADAKOVIĆ JOVAN
+RADAKOVIĆ JOVAN
+RADAKOVIĆ LAZO
+RADAKOVIĆ LJILJANA
+RADAKOVIĆ MANDA
+RADAKOVIĆ MANE
+RADAKOVIĆ MILANKO
+RADAKOVIĆ MILAN
+RADAKOVIĆ MILENA
+RADAKOVIĆ MILE
+RADAKOVIĆ MILE
+RADAKOVIĆ MILOJKA
+RADAKOVIĆ MILORAD
+RADAKOVIĆ MIROSLAV
+RADAKOVIĆ NENAD
+RADAKOVIĆ PETAR
+RADAKOVIĆ RADE
+RADAKOVIĆ RADE
+RADAKOVIĆ RAJKO
+RADAKOVIĆ RUŽICA
+RADAKOVIĆ SAVA
+RADAKOVIĆ SMILJKA
+RADAKOVIĆ TEODORA
+RADAKOVIĆ VLADIMIR
+RADAKOVIĆ VLADISLAV
+RADAN VELIMIR
+RADANOV BILJANA
+RADANOV DRAGOMIR
+RADANOV DUŠAN
+RADANOV GOSPAVA
+RADANOV LJUBOMIR ADVOKAT
+RADANOV LJUBOMIR
+RADANOV MIROSLAVA
+RADANOV NIKOLA
+RADANOV OLIVERA
+RADANOV RADINKA
+RADANOV RADIVOJ
+RADANOV RADOSLAV
+RADANOV VERICA
+RADANOVIĆ ŽELJKO
+RADANOVIĆ ĐORĐE
+RADANOVIĆ ĐORĐE
+RADANOVIĆ ĐUKA
+RADANOVIĆ ALEKSANDAR
+RADANOVIĆ ANĐELKO
+RADANOVIĆ BOŽIDAR
+RADANOVIĆ DIMITRIJE
+RADANOVIĆ DRAGAN
+RADANOVIĆ DRAGICA
+RADANOVIĆ DRAGOMIR
+RADANOVIĆ DRAGOMIR
+RADANOVIĆ DRAGUTIN
+RADANOVIĆ GOJKO
+RADANOVIĆ ILIJA
+RADANOVIĆ JOVANKA
+RADANOVIĆ JOVAN
+RADANOVIĆ JOVAN
+RADANOVIĆ JOVAN
+RADANOVIĆ KATA
+RADANOVIĆ KOVILJKA
+RADANOVIĆ LJUBO
+RADANOVIĆ MARIJA
+RADANOVIĆ MILANKO
+RADANOVIĆ MILAN
+RADANOVIĆ MILAN
+RADANOVIĆ MILAN
+RADANOVIĆ MILENKO
+RADANOVIĆ MILOŠ
+RADANOVIĆ MIODRAG
+RADANOVIĆ MIODRAG
+RADANOVIĆ NEVENKA
+RADANOVIĆ NIKOLA
+RADANOVIĆ NIKOLA
+RADANOVIĆ OBRAD
+RADANOVIĆ PETAR
+RADANOVIĆ PETAR
+RADANOVIĆ RADIVOJ
+RADANOVIĆ RADOVANKA
+RADANOVIĆ RADOVAN
+RADANOVIĆ RAJKO
+RADANOVIĆ SAŠA
+RADANOVIĆ SAVA
+RADANOVIĆ SOFIJA
+RADANOVIĆ SOFIJA
+RADANOVIĆ SRETEN
+RADANOVIĆ TRIŠA
+RADANOVIĆ VITOMIR
+RADAT MARKO
+RADATOVIĆ MARIJA
+RADEK ANDRAŠ
+RADEK MARIJA
+RADEKA ŠTEFKA
+RADEKA DUŠKO
+RADEKA JOVAN
+RADEKA MILE
+RADEKA MILKA
+RADEKA NIKOLA
+RADEKA RADOVAN
+RADEKIN LJUBICA
+RADELIĆ MILAN
+RADENČIĆ JOSIP
+RADENKOVIĆ ČEDOMIR
+RADENKOVIĆ ŽIVOJIN
+RADENKOVIĆ BLAŽA
+RADENKOVIĆ DRAGAN
+RADENKOVIĆ LEPOSAVA
+RADENKOVIĆ LJUBIŠA
+RADENKOVIĆ MILIVOJE
+RADENKOVIĆ MILOVAN
+RADENKOVIĆ MILOVAN
+RADENKOVIĆ MIODRAG
+RADENKOVIĆ NADA
+RADENKOVIĆ RADOMIR
+RADENKOVIĆ RADOSLAVA
+RADENKOVIĆ RATOMIR
+RADENKOVIĆ ROZALIJA
+RADENKOVIĆ SLOBODAN
+RADENKOVIĆ TOMISLAV
+RADENKOVIĆ VITOMIR
+RADENKOVIĆ VJERA
+RADENOVIĆ OBREN
+RADETA SLAVKO
+RADETA SVETOZAR
+RADETIĆ BOŠKO
+RADETIĆ BRANKO
+RADETIĆ GORAN
+RADETIĆ RADOMIR
+RADETIĆ VOJISLAV
+RADEVIĆ ĐORĐE
+RADEVIĆ GORAN
+RADEVIĆ IVAN
+RADEVIĆ MILEVA
+RADEVIĆ MILOŠ
+RADEVIĆ VOJIMIR
+RADIČEV JELICA
+RADIČEV MARIJA DR
+RADIČEVIĆ RADMILA
+RADIČEVIĆ SAVA
+RADIČEVIĆ ZORAN
+RADIČIĆ SMILJANA
+RADIŠIĆ ŽIVKO
+RADIŠIĆ ĐORĐE
+RADIŠIĆ ANĐELKA
+RADIŠIĆ BILJANA
+RADIŠIĆ BORISLAV
+RADIŠIĆ BORISLAV
+RADIŠIĆ BRANISLAV
+RADIŠIĆ BRANKA
+RADIŠIĆ BRANKO
+RADIŠIĆ DRAGIŠA
+RADIŠIĆ DRAGUTIN
+RADIŠIĆ DUŠAN
+RADIŠIĆ DUŠICA
+RADIŠIĆ ILIJA
+RADIŠIĆ JEFTA
+RADIŠIĆ JELENA
+RADIŠIĆ JOVAN
+RADIŠIĆ JOVO
+RADIŠIĆ KATICA
+RADIŠIĆ LAZAR
+RADIŠIĆ LAZAR
+RADIŠIĆ LAZAR
+RADIŠIĆ LJILJANA
+RADIŠIĆ LJUBICA
+RADIŠIĆ MARKO
+RADIŠIĆ MILAN
+RADIŠIĆ MILENA
+RADIŠIĆ MILENKO
+RADIŠIĆ MILICA
+RADIŠIĆ MILIJANA
+RADIŠIĆ MILUTIN
+RADIŠIĆ MIROSLAVA
+RADIŠIĆ MLADEN
+RADIŠIĆ NENA
+RADIŠIĆ NIKOLA
+RADIŠIĆ OBRADIN
+RADIŠIĆ OLIVERA
+RADIŠIĆ PERICA
+RADIŠIĆ PERO
+RADIŠIĆ PERSA
+RADIŠIĆ PETAR
+RADIŠIĆ RADIVOJ
+RADIŠIĆ RADMILA
+RADIŠIĆ RADOJKA
+RADIŠIĆ SAVETA
+RADIŠIĆ SLOBODAN
+RADIŠIĆ STANOJE
+RADIŠIĆ STEVAN
+RADIŠIĆ STEVAN
+RADIŠIĆ SVETOZAR
+RADIŠIĆ TODOR
+RADIŠIĆ VLADIMIR
+RADIŠIĆ VLADIMIR
+RADIŠIĆ ZORAN
+RADIĆ ČEDA
+RADIĆ ŽELJKO
+RADIĆ ŽIVAN
+RADIĆ ĐORĐE
+RADIĆ ĐORĐE
+RADIĆ ANĐA
+RADIĆ ANĐELKO
+RADIĆ ANDRIJA DR
+RADIĆ ANGELINA
+RADIĆ ANKICA
+RADIĆ ANTE
+RADIĆ BOŠKO
+RADIĆ BRANKA
+RADIĆ DOBRIVOJE
+RADIĆ DRAGOLJUB
+RADIĆ DUŠAN
+RADIĆ DUŠAN
+RADIĆ FRANJA
+RADIĆ FRANJO
+RADIĆ GOJKO
+RADIĆ HRANISLAV
+RADIĆ ILIJA
+RADIĆ ILIJA
+RADIĆ IVANKA
+RADIĆ JOSIP
+RADIĆ JOVAN
+RADIĆ LAZAR
+RADIĆ LJUBICA
+RADIĆ LJUBOMIR
+RADIĆ MARIJA
+RADIĆ MIJA
+RADIĆ MILANKO
+RADIĆ MILAN
+RADIĆ MILAN
+RADIĆ MILE
+RADIĆ MILIVOJ
+RADIĆ MILIVOJ
+RADIĆ MILKA
+RADIĆ MILUTIN DIPL ING
+RADIĆ MIRJANA
+RADIĆ MIRKO
+RADIĆ MLADEN
+RADIĆ NEDELJKO
+RADIĆ NENAD
+RADIĆ PAVLE
+RADIĆ PETAR
+RADIĆ PETAR
+RADIĆ PETAR
+RADIĆ PETAR
+RADIĆ PETAR
+RADIĆ-POPOVIĆ GORDANA
+RADIĆ PREDRAG
+RADIĆ RADA
+RADIĆ RADE
+RADIĆ ROBERT
+RADIĆ SAVA
+RADIĆ SLAVIŠA
+RADIĆ SLAVKO
+RADIĆ SOFIJA
+RADIĆ STANKO
+RADIĆ STEVAN
+RADIĆ STEVAN
+RADIĆ STOJAN
+RADIĆ TIHOMIR
+RADIĆ TRIVA
+RADIĆ VELINKA
+RADIĆ VLADIMIR
+RADIĆ ZDRAVKO
+RADIĆ ZORAN
+RADIĆ ZORA
+RADIĆ ZORICA
+RADIBRATOVIĆ MILICA
+RADIBRATOVIĆ MOMČILO
+RADIJELJAC JELENA
+RADIJELJAC MOMČILO
+RADIN ŽIVAN
+RADIN ALEKSANDAR
+RADIN ANTONIJA
+RADIN BRANISLAV
+RADIN BRANISLAV
+RADIN BRANKO
+RADIN DRAGOJLA
+RADIN HRISTINA
+RADIN IVANKA
+RADIN JOVANKA
+RADIN LAZAR
+RADIN LJUBOMIR DR LEKAR
+RADIN LJUBOMIR
+RADIN MAKSIMILIJAN
+RADIN MARA
+RADIN MILADINKA
+RADIN MILAN
+RADIN MILAN
+RADIN MILAN
+RADIN MILAN
+RADIN MILAN
+RADIN MILENA
+RADIN MILKA
+RADIN MIRA
+RADIN MIROSLAV
+RADIN MLADEN
+RADIN NADA
+RADIN NIKOLA DIPL ING
+RADIN PETAR DR
+RADIN RADA
+RADIN RADOSLAV
+RADIN SLAVINKA
+RADIN SLAVKO
+RADIN STEVAN
+RADIN STEVAN
+RADIN SVETISLAV
+RADIN TOMISLAV
+RADIN VESELIN
+RADIN VLADIMIR
+RADIN ZLATOJE
+RADIN ZORANKA
+RADIN ZORA
+RADINOVIĆ ĐORĐE
+RADINOVIĆ BUDIMIR
+RADINOVIĆ DIMITRIJE
+RADINOVIĆ DUŠKO
+RADINOVIĆ ILIJA
+RADINOVIĆ LAZO
+RADINOVIĆ MANOJLO
+RADINOVIĆ MARIJA
+RADINOVIĆ MILICA
+RADINOVIĆ MILIVOJ
+RADINOVIĆ MILORAD
+RADINOVIĆ MIRA
+RADINOVIĆ MLADEN
+RADINOVIĆ MOMČILO DIPL PRAVNIK
+RADINOVIĆ MOMČILO
+RADINOVIĆ NIKOLA
+RADINOVIĆ RADOSLAV
+RADINOVIĆ SILVANA
+RADINOVIĆ STEVAN
+RADINOVIĆ VUKAŠIN
+RADISAVLJEVIĆ ŽIVORAD
+RADISAVLJEVIĆ BOGDAN
+RADISAVLJEVIĆ BORIVOJE
+RADISAVLJEVIĆ IVAN
+RADISAVLJEVIĆ MILOSAV
+RADISAVLJEVIĆ SLAVICA
+RADISAVLJEVIĆ STANIŠA
+RADISAVLJEVIĆ ZORICA DR
+RADIVOJŠA MILOŠ
+RADIVOJŠA SMILJA
+RADIVOJAC DOBRILA
+RADIVOJAC DRAGA
+RADIVOJAC DRAGOLJUB
+RADIVOJAC JOVAN
+RADIVOJAC NATALIJA
+RADIVOJEV RADINKA
+RADIVOJEVIĆ ANĐELKO
+RADIVOJEVIĆ BOGOLJUB
+RADIVOJEVIĆ BRANISLAV
+RADIVOJEVIĆ BRANKO
+RADIVOJEVIĆ BRATIMIR
+RADIVOJEVIĆ DRAGAN MR
+RADIVOJEVIĆ DRAGIŠA
+RADIVOJEVIĆ DRAGOMIR
+RADIVOJEVIĆ DRAGOSLAV
+RADIVOJEVIĆ DUŠAN DIPL OEC
+RADIVOJEVIĆ DUŠANKA
+RADIVOJEVIĆ IDA
+RADIVOJEVIĆ JANKO
+RADIVOJEVIĆ JELA
+RADIVOJEVIĆ JOVANKA
+RADIVOJEVIĆ JOVAN
+RADIVOJEVIĆ LJUBICA
+RADIVOJEVIĆ LJUBODRAG
+RADIVOJEVIĆ LJUBOMIR
+RADIVOJEVIĆ LJUBOMIR
+RADIVOJEVIĆ LUKA
+RADIVOJEVIĆ LUKA
+RADIVOJEVIĆ MILAN
+RADIVOJEVIĆ MILA
+RADIVOJEVIĆ MILE
+RADIVOJEVIĆ MILIVOJE
+RADIVOJEVIĆ MILOMIR
+RADIVOJEVIĆ MIRJANA
+RADIVOJEVIĆ MLADEN
+RADIVOJEVIĆ MOMČILO
+RADIVOJEVIĆ NEĐO
+RADIVOJEVIĆ NEMANJA
+RADIVOJEVIĆ NIKOLA
+RADIVOJEVIĆ PAVLE
+RADIVOJEVIĆ RADIŠA
+RADIVOJEVIĆ RADIVOJE
+RADIVOJEVIĆ RADOŠ
+RADIVOJEVIĆ RATKO
+RADIVOJEVIĆ SINIŠA
+RADIVOJEVIĆ SLOBODAN
+RADIVOJEVIĆ SLOBODAN
+RADIVOJEVIĆ SLOBODAN
+RADIVOJEVIĆ SLOBODAN
+RADIVOJEVIĆ STEVAN
+RADIVOJEVIĆ STOJADIN
+RADIVOJEVIĆ TOMISLAV
+RADIVOJEVIĆ TUGOMIR
+RADIVOJEVIĆ VERA
+RADIVOJEVIĆ VIDA
+RADIVOJEVIĆ VIDA
+RADIVOJEVIĆ VUKICA
+RADIVOJEVIĆ ZORAN
+RADIVOJEVIĆ ZORAN
+RADIVOJKOV ĐORĐE
+RADIVOJKOV JELICA
+RADIVOJKOV MIRJANA
+RADIVOJKOV RAJKO
+RADIVOJKOV SAVA
+RADIVOJKOV STEVAN
+RADLOVAČKI DOBRINKA
+RADLOVAČKI SINIŠA
+RADLOVIĆ MILKA
+RADMAN ŠIMUN
+RADMAN ŠPIRO
+RADMAN IVAN
+RADMAN LEPOSAVA
+RADMAN MILAN
+RADMAN MILE
+RADMAN MILICA
+RADMAN MILOVAN
+RADMAN MIROSLAV
+RADMANIĆ EVICA
+RADMANOVAC MILOVAN
+RADMANOVIĆ DRAGICA
+RADMANOVIĆ DUŠANKA
+RADMANOVIĆ MILUTIN
+RADMILO ĐURO
+RADMILO MARIJA
+RADMILO MIRKO
+RADMILOVIĆ DUŠANKA
+RADMILOVIĆ MILAN
+RADMILOVIĆ MILOŠ
+RADMILOVIĆ MIROSLAV
+RADMILOVIĆ NEDELJKO
+RADMILOVIĆ RADE PROFESOR
+RADMILOVIĆ SLAVOLJUB
+RADMILOVIĆ STEVO
+RADNIĆ DOBRINKA
+RADNOV ALEKSA
+RADNOV LENKA
+RADNOV RADIVOJ
+RADNOV RAJKO
+RADNOV ZORKA
+RADNOVIĆ DRAGAN
+RADNOVIĆ OLGICA
+RADNOVIĆ RADOVAN
+RADNOVIĆ UROŠ
+RADNOVIĆ UROŠ
+RADOČAJ DUŠANKA
+RADOČAJ ILIJA
+RADOČAJ MARA
+RADOČAJ MILKA
+RADOČAJ NEDELJKA
+RADOČAJ SAVKA
+RADOŠ BORISLAV
+RADOŠ DANICA
+RADOŠ DRENKA
+RADOŠ MARTA
+RADOŠ MILAN
+RADOŠ RUŽA
+RADOŠ VOJISLAV
+RADOŠ ZORA
+RADOŠEVIĆ-ŠTIMAC LJUBICA
+RADOŠEVIĆ ĐORĐE
+RADOŠEVIĆ ANĐELKA
+RADOŠEVIĆ ANICA
+RADOŠEVIĆ ANICA
+RADOŠEVIĆ BOŽIDAR
+RADOŠEVIĆ BOŽO
+RADOŠEVIĆ BRANISLAV
+RADOŠEVIĆ BRANKO
+RADOŠEVIĆ DESANKA
+RADOŠEVIĆ DUŠICA
+RADOŠEVIĆ JELISAVETA
+RADOŠEVIĆ JOVANKA
+RADOŠEVIĆ JOVAN
+RADOŠEVIĆ JOVAN
+RADOŠEVIĆ LJILJANA
+RADOŠEVIĆ LJUBICA
+RADOŠEVIĆ MILENA
+RADOŠEVIĆ MILENA
+RADOŠEVIĆ MILIVOJ
+RADOŠEVIĆ MILOŠ
+RADOŠEVIĆ MILUTIN
+RADOŠEVIĆ MIODRAG
+RADOŠEVIĆ MIRJANA
+RADOŠEVIĆ MIROSLAVA
+RADOŠEVIĆ MITAR
+RADOŠEVIĆ NIKOLA
+RADOŠEVIĆ OLIVERA
+RADOŠEVIĆ RADE
+RADOŠEVIĆ RADIVOJ
+RADOŠEVIĆ RADMILA
+RADOŠEVIĆ RADOVAN
+RADOŠEVIĆ RADOVAN
+RADOŠEVIĆ RODOLJUB
+RADOŠEVIĆ STANICA
+RADOŠEVIĆ TEREZA
+RADOŠEVIĆ VLADIMIR
+RADOŠEVIĆ ZDRAVKO
+RADOC FRANJA
+RADOC-SIMIĆ SOFIJA
+RADOIČIĆ MILOŠ
+RADOIČKI BRANISLAV
+RADOJČEVIĆ MILOŠ
+RADOJČIĆ BOŽA DIPL ING
+RADOJČIĆ BOŽIDAR
+RADOJČIĆ BOŽIDAR
+RADOJČIĆ DANICA
+RADOJČIĆ DARINKA
+RADOJČIĆ DRAGANA
+RADOJČIĆ DRAGOMIR
+RADOJČIĆ DRAGO
+RADOJČIĆ DUŠKO
+RADOJČIĆ GOJKO
+RADOJČIĆ IRENA
+RADOJČIĆ IVAN
+RADOJČIĆ IVAN
+RADOJČIĆ IVAN
+RADOJČIĆ LJIJANA
+RADOJČIĆ LJILJANA
+RADOJČIĆ MILADIN
+RADOJČIĆ MILAN
+RADOJČIĆ MILENKO
+RADOJČIĆ MILICA
+RADOJČIĆ MILORAD
+RADOJČIĆ MILUTIN
+RADOJČIĆ MIODRAG
+RADOJČIĆ MITAR
+RADOJČIĆ NADICA
+RADOJČIĆ NENAD
+RADOJČIĆ-OBERKNEŽEV MIRJANA
+RADOJČIĆ PAVLE
+RADOJČIĆ SAVA
+RADOJČIĆ SRETEN
+RADOJČIĆ STEVAN
+RADOJČIĆ VITOMIR
+RADOJČIĆ VLADAN
+RADOJČIĆ VOJISLAV
+RADOJČIN ĐORĐE
+RADOJČIN ANICA
+RADOJČIN DOBRILA
+RADOJČIN DUŠICA
+RADOJČIN EVICA
+RADOJČIN JULKA
+RADOJČIN MARA
+RADOJČIN MARTA
+RADOJČIN MILAN
+RADOJČIN MILKA
+RADOJČIN MILOŠ
+RADOJČIN MILOVAN
+RADOJČIN MIRJANA
+RADOJČIN RADMILA
+RADOJČIN RADOJKA
+RADOJČIN RADOVAN
+RADOJČIN SLOBODAN
+RADOJČIN SREDOJE
+RADOJČIN TODOR
+RADOJČIN VELIMIR
+RADOJČIN VERA
+RADOJČIN VERA
+RADOJA BORISLAV
+RADOJA KOVILJKA
+RADOJEV IVAN
+RADOJEV SLAVKO
+RADOJEVIĆ ĐOKA
+RADOJEVIĆ ANĐELKA
+RADOJEVIĆ BOSILJKA
+RADOJEVIĆ DEJAN
+RADOJEVIĆ DRAGOSLAV
+RADOJEVIĆ JELENA
+RADOJEVIĆ JELICA
+RADOJEVIĆ KATA
+RADOJEVIĆ KOSTA
+RADOJEVIĆ MILAN
+RADOJEVIĆ MILENKO
+RADOJEVIĆ MILE
+RADOJEVIĆ MILUTIN
+RADOJEVIĆ MIRJANA
+RADOJEVIĆ MIROSANDA
+RADOJEVIĆ MOMČILO
+RADOJEVIĆ NIKOLA
+RADOJEVIĆ NIKOLA
+RADOJEVIĆ NIKOLA
+RADOJEVIĆ PETRA
+RADOJEVIĆ RADISAV
+RADOJEVIĆ RADOSLAVKA DR
+RADOJEVIĆ SAVA
+RADOJEVIĆ SLAVKO
+RADOJEVIĆ SRBOLJUB
+RADOJEVIĆ STEVAN
+RADOJEVIĆ STEVAN
+RADOJEVIĆ TATJANA
+RADOJEVIĆ VERA
+RADOJEVIĆ ZORAN
+RADOJIČIĆ ĐOKA
+RADOJIČIĆ ĐORĐO
+RADOJIČIĆ DANILO
+RADOJIČIĆ DRAGAN
+RADOJIČIĆ JELENA
+RADOJIČIĆ JORDAN
+RADOJIČIĆ LJUBOMIR
+RADOJIČIĆ MILICA
+RADOJIČIĆ MILOSAV
+RADOJIČIĆ OBREN
+RADOJIČIĆ RADE
+RADOJIČIĆ RADIŠA
+RADOJIČIĆ VLADAN
+RADOJIČIĆ VOJIN
+RADOJKO JELENA
+RADOJKOVIĆ ĐURĐINKA
+RADOJKOVIĆ LJUBICA
+RADOJKOVIĆ PREDRAG
+RADOJKOVIĆ PRVOSLAV
+RADOJKOVIĆ PRVOSLAV
+RADOJKOVIĆ RAJKO
+RADOJKOVIĆ TIHOMIR
+RADOJKOVIĆ TOMISLAV
+RADOJKOVIĆ TRAJKO
+RADOJKOVIĆ VLADIMIR
+RADOMAN JELENA
+RADOMAN LJUBICA
+RADOMAN MARTA
+RADOMAN MIROSLAV
+RADOMAN ZORAN
+RADOMIR STOJAN
+RADOMIROVIĆ MILORAD
+RADOMIROVIĆ VINKO
+RADOMIROVIĆ VUKSAN
+RADOMIROVIĆ ZLATA
+RADONČIĆ JUSUF
+RADONČIĆ RAMIZ
+RADONIĆ ŽELJKO
+RADONIĆ ŽIVAN
+RADONIĆ ŽIVKO
+RADONIĆ ALEKSANDAR
+RADONIĆ ANĐELKA
+RADONIĆ BLAGOJE
+RADONIĆ BRANISLAV
+RADONIĆ BRANKO DIPL ING
+RADONIĆ BRANKO
+RADONIĆ DANICA
+RADONIĆ DUŠAN
+RADONIĆ EVGENIJE
+RADONIĆ FERENC
+RADONIĆ HANA
+RADONIĆ JOVAN
+RADONIĆ LJUBOMIR
+RADONIĆ MAKSIM
+RADONIĆ MILIVOJE
+RADONIĆ MILOVAN
+RADONIĆ MLADEN
+RADONIĆ NADA
+RADONIĆ NADA
+RADONIĆ NEDELJKO
+RADONIĆ NENAD
+RADONIĆ NIKOLA
+RADONIĆ NIKOLA
+RADONIĆ NOVICA
+RADONIĆ PETAR
+RADONIĆ RADA
+RADONIĆ RADE
+RADONIĆ RADIVOJ
+RADONIĆ RADIVOJ
+RADONIĆ RADMILA
+RADONIĆ RAJKO
+RADONIĆ SOFIJA
+RADONIĆ VLADA
+RADONIĆ VLADIMIR
+RADONJA ANTE
+RADONJANIN MARTA
+RADONJANIN PETAR
+RADONJANIN VLASTIMIR
+RADONJIĆ BRANISLAV
+RADONJIĆ DRAGAN
+RADONJIĆ IVAN
+RADONJIĆ KATARINA
+RADONJIĆ LUKA
+RADONJIĆ MANDA
+RADONJIĆ MILADIN
+RADONJIĆ MILOVAN
+RADONJIĆ MIRJANA
+RADONJIĆ MITAR
+RADONJIĆ OLGA
+RADONJIĆ SENKA
+RADONJIĆ SLAVOMIR
+RADONJIĆ SLOBODAN
+RADONJIĆ SNEŽANA
+RADONJIĆ STANA
+RADONJIĆ VERICA
+RADOSAV ERŽEBET
+RADOSAV KRISTINA
+RADOSAV RADIVOJ
+RADOSAVČEV DUŠAN
+RADOSAVČEV MILA
+RADOSAVAC DIMITRIJE DR
+RADOSAVAC DUŠICA
+RADOSAVAC NEDELJKO
+RADOSAVAC VELIZAR
+RADOSAVAC VLADO
+RADOSAVLJEV ŽIVAN
+RADOSAVLJEV BOŽIDAR
+RADOSAVLJEV DRAGOLJUB
+RADOSAVLJEV DRAGUTIN
+RADOSAVLJEV GOJKO
+RADOSAVLJEV IVAN
+RADOSAVLJEV JEVREM
+RADOSAVLJEV KAĆA
+RADOSAVLJEV MILORAD
+RADOSAVLJEV NIKOLA
+RADOSAVLJEV PAVLE
+RADOSAVLJEV SLAVKA
+RADOSAVLJEV STEVAN
+RADOSAVLJEV ZORA
+RADOSAVLJEV ZORICA
+RADOSAVLJEVIĆ ŽIVAN
+RADOSAVLJEVIĆ ĐORĐE
+RADOSAVLJEVIĆ ĐORĐE
+RADOSAVLJEVIĆ ALEKSANDAR
+RADOSAVLJEVIĆ ANA
+RADOSAVLJEVIĆ ANA
+RADOSAVLJEVIĆ BOŽIDAR
+RADOSAVLJEVIĆ BOGDAN
+RADOSAVLJEVIĆ BOGOVID
+RADOSAVLJEVIĆ BORA
+RADOSAVLJEVIĆ BORA
+RADOSAVLJEVIĆ BUDIMIR
+RADOSAVLJEVIĆ DANIEL
+RADOSAVLJEVIĆ DIANA
+RADOSAVLJEVIĆ DOBRIVOJE
+RADOSAVLJEVIĆ DRAGAN
+RADOSAVLJEVIĆ DRAGIŠA
+RADOSAVLJEVIĆ DRAGOLJUB
+RADOSAVLJEVIĆ DRAGUTIN
+RADOSAVLJEVIĆ DUŠAN DIPL ING
+RADOSAVLJEVIĆ DUŠAN
+RADOSAVLJEVIĆ DUŠAN
+RADOSAVLJEVIĆ ILIJA
+RADOSAVLJEVIĆ JASMINA
+RADOSAVLJEVIĆ JOVAN
+RADOSAVLJEVIĆ JOVAN
+RADOSAVLJEVIĆ JOVAN
+RADOSAVLJEVIĆ JULIJA
+RADOSAVLJEVIĆ LEPOSAVA
+RADOSAVLJEVIĆ LJILJANA
+RADOSAVLJEVIĆ LJILJA
+RADOSAVLJEVIĆ LJUBIŠA
+RADOSAVLJEVIĆ LJUBOMIR
+RADOSAVLJEVIĆ LJUBOMIR
+RADOSAVLJEVIĆ MARKO
+RADOSAVLJEVIĆ MILAN
+RADOSAVLJEVIĆ MILAN
+RADOSAVLJEVIĆ MILAN
+RADOSAVLJEVIĆ MILENKO
+RADOSAVLJEVIĆ MILENKO
+RADOSAVLJEVIĆ MILEVA
+RADOSAVLJEVIĆ MILKA
+RADOSAVLJEVIĆ MILOVAN
+RADOSAVLJEVIĆ MIODRAG
+RADOSAVLJEVIĆ MIRJANA
+RADOSAVLJEVIĆ MIRJANA
+RADOSAVLJEVIĆ MLADEN
+RADOSAVLJEVIĆ NJEGOSAVA
+RADOSAVLJEVIĆ PAVLE
+RADOSAVLJEVIĆ PETAR
+RADOSAVLJEVIĆ RADIŠA
+RADOSAVLJEVIĆ RADIŠA
+RADOSAVLJEVIĆ RADIVOJ
+RADOSAVLJEVIĆ RAMIZA
+RADOSAVLJEVIĆ RODOLJUB DIPL ING
+RADOSAVLJEVIĆ SAVA
+RADOSAVLJEVIĆ SINIŠA
+RADOSAVLJEVIĆ STEVAN
+RADOSAVLJEVIĆ STEVAN
+RADOSAVLJEVIĆ STEVAN
+RADOSAVLJEVIĆ STOJAN
+RADOSAVLJEVIĆ SVETISLAV
+RADOSAVLJEVIĆ SVETISLAV
+RADOSAVLJEVIĆ SVETLANA
+RADOSAVLJEVIĆ SVETOZAR
+RADOSAVLJEVIĆ VIDOSAVA
+RADOSAVLJEVIĆ VLADETA
+RADOSAVLJEVIĆ ZAGA
+RADOSAVLJEVIĆ ZAGORKA
+RADOSAVLJEVIĆ ZORICA
+RADOVAC IVA
+RADOVAC NIKOLA
+RADOVAC PETAR
+RADOVAC SAVA
+RADOVAN ANTE
+RADOVAN VIDOSAVA
+RADOVANČEV BRANISLAV
+RADOVANČEV LJUBICA
+RADOVANČEV VLADIMIR
+RADOVANČEV VLADIMIR
+RADOVANAC ĐURA
+RADOVANAC NEĐO
+RADOVANOV ŽIVAN
+RADOVANOV ALEKSANDAR
+RADOVANOV ANĐELKA
+RADOVANOV ANKA
+RADOVANOV BOŽIDAR
+RADOVANOV BOGDANKA
+RADOVANOV BRANKO
+RADOVANOV DANICA
+RADOVANOV DUŠAN
+RADOVANOV DUŠAN
+RADOVANOV DUŠAN
+RADOVANOV EVICA
+RADOVANOV GORDANA
+RADOVANOV ILIJA
+RADOVANOV KUZMAN
+RADOVANOV LJUBICA
+RADOVANOV MARIJA
+RADOVANOV MELANIJA
+RADOVANOV MILAN
+RADOVANOV MILAN
+RADOVANOV MILENKO
+RADOVANOV MILENKO
+RADOVANOV MILENKO
+RADOVANOV MILICA
+RADOVANOV MILICA
+RADOVANOV MILICA
+RADOVANOV MILKA
+RADOVANOV MIRJANA
+RADOVANOV NADA
+RADOVANOV NEVENKA
+RADOVANOV PETAR
+RADOVANOV PETAR
+RADOVANOV PETAR
+RADOVANOV RADOMIR
+RADOVANOV RADOVAN
+RADOVANOV RUŽICA
+RADOVANOV SLOBODANKA
+RADOVANOV SLOBODAN
+RADOVANOV SLOBODAN
+RADOVANOV SMILJANA
+RADOVANOV STEVAN
+RADOVANOV STEVAN
+RADOVANOV STEVA
+RADOVANOV SVETOZAR
+RADOVANOV TATJANA
+RADOVANOV TINKA
+RADOVANOV VOJISLAV
+RADOVANOVIĆ ŽIVADIN
+RADOVANOVIĆ ĐORĐIJE
+RADOVANOVIĆ BORA
+RADOVANOVIĆ BORKA
+RADOVANOVIĆ BRANKO
+RADOVANOVIĆ DANILO
+RADOVANOVIĆ DARINKA
+RADOVANOVIĆ DOBRIVOJE
+RADOVANOVIĆ DRAGAN
+RADOVANOVIĆ DRAGIŠA
+RADOVANOVIĆ DRAGIŠA
+RADOVANOVIĆ DRAGOLJUB
+RADOVANOVIĆ DUŠANKA
+RADOVANOVIĆ DUŠAN
+RADOVANOVIĆ DUŠKO DIPL ING
+RADOVANOVIĆ ILONKA
+RADOVANOVIĆ JELICA
+RADOVANOVIĆ JOKA
+RADOVANOVIĆ JOVANKA
+RADOVANOVIĆ LAZAR
+RADOVANOVIĆ LAZO
+RADOVANOVIĆ LJUBICA
+RADOVANOVIĆ LJUBOMIR
+RADOVANOVIĆ MARA
+RADOVANOVIĆ MARIJA DR
+RADOVANOVIĆ MARIJA
+RADOVANOVIĆ MIĆO
+RADOVANOVIĆ MILADIN
+RADOVANOVIĆ MILAN
+RADOVANOVIĆ MILAN
+RADOVANOVIĆ MILAN
+RADOVANOVIĆ MILA
+RADOVANOVIĆ MILICA
+RADOVANOVIĆ MILOŠ
+RADOVANOVIĆ MILOŠ
+RADOVANOVIĆ MILORAD
+RADOVANOVIĆ MILORAD
+RADOVANOVIĆ MILORAD
+RADOVANOVIĆ MILUTIN
+RADOVANOVIĆ MIRA
+RADOVANOVIĆ MIROSLAV DR PROF
+RADOVANOVIĆ MIROSLAV
+RADOVANOVIĆ MLAĐEN
+RADOVANOVIĆ MOMIR
+RADOVANOVIĆ NADA
+RADOVANOVIĆ NEDELJKO
+RADOVANOVIĆ NIKOLA
+RADOVANOVIĆ NINOSLAV DR
+RADOVANOVIĆ PREDRAG
+RADOVANOVIĆ RADENKO
+RADOVANOVIĆ RADIVOJ
+RADOVANOVIĆ RADOJICA
+RADOVANOVIĆ RADOMIR DR LEKAR
+RADOVANOVIĆ RADOSLAV
+RADOVANOVIĆ RADOSLAV
+RADOVANOVIĆ RADOVAN
+RADOVANOVIĆ RAJA
+RADOVANOVIĆ RAJKO
+RADOVANOVIĆ SLADOLJUB
+RADOVANOVIĆ SLAVKO
+RADOVANOVIĆ SLAVKO
+RADOVANOVIĆ SLOBODAN
+RADOVANOVIĆ SNEŽANA
+RADOVANOVIĆ SRETEN
+RADOVANOVIĆ STANOJE
+RADOVANOVIĆ STEVAN
+RADOVANOVIĆ STEVAN
+RADOVANOVIĆ SVETISLAV
+RADOVANOVIĆ TOMISLAV
+RADOVANOVIĆ VELISAV
+RADOVANOVIĆ VIDOSAVA
+RADOVANOVIĆ VINKA
+RADOVANOVIĆ VLADIMIR
+RADOVANOVIĆ VOJISLAV
+RADOVANOVIĆ VOJISLAV
+RADOVANOVIĆ ZORKA
+RADOVANOVIĆ ZVEZDANA
+RADOVIĆ ČEDOMIR
+RADOVIĆ ŽARKO
+RADOVIĆ ŽIVAN
+RADOVIĆ ĐORĐE
+RADOVIĆ ALEKSANDAR
+RADOVIĆ ALEKSANDAR
+RADOVIĆ ANĐELIJA
+RADOVIĆ BLAGA
+RADOVIĆ BLAGOJE
+RADOVIĆ BOŠKO
+RADOVIĆ BOGOLJUB
+RADOVIĆ BORISLAV
+RADOVIĆ BRANISLAV DIPL ING
+RADOVIĆ BRANKO
+RADOVIĆ DAMJAN
+RADOVIĆ DARKO
+RADOVIĆ DEJAN
+RADOVIĆ DIMITRIJE
+RADOVIĆ DOBRILA
+RADOVIĆ DRAGAN
+RADOVIĆ DRAGIŠA
+RADOVIĆ DRAGICA
+RADOVIĆ DRAGOLJUB
+RADOVIĆ DRAGUTIN
+RADOVIĆ DUŠAN
+RADOVIĆ GOJKO DIPL ING
+RADOVIĆ IRMA
+RADOVIĆ IVA
+RADOVIĆ JEVTO
+RADOVIĆ JOVAN
+RADOVIĆ LJUBOMIR
+RADOVIĆ MAGDALENA
+RADOVIĆ MAGDA
+RADOVIĆ MILAN
+RADOVIĆ MILAN
+RADOVIĆ MILAN
+RADOVIĆ MILAN
+RADOVIĆ MILENA
+RADOVIĆ MILEVA
+RADOVIĆ MILE
+RADOVIĆ MILOŠ
+RADOVIĆ MILOJE
+RADOVIĆ MILOMIR
+RADOVIĆ MILUTIN
+RADOVIĆ MIODRAG
+RADOVIĆ MIODRAG
+RADOVIĆ MIRČETA
+RADOVIĆ MOMČILO
+RADOVIĆ MOMČILO
+RADOVIĆ NEDELJKO
+RADOVIĆ NOVAK
+RADOVIĆ OLGA
+RADOVIĆ PAVLE
+RADOVIĆ PETAR
+RADOVIĆ PETKO
+RADOVIĆ RADOJKA
+RADOVIĆ RADOMIR
+RADOVIĆ RADOVAN
+RADOVIĆ RADOVAN
+RADOVIĆ RADOVAN
+RADOVIĆ RAJKO
+RADOVIĆ RATOMIR DIPL ING
+RADOVIĆ ROZIKA
+RADOVIĆ SAVO
+RADOVIĆ SIMA
+RADOVIĆ SLAVICA
+RADOVIĆ SLAVICA
+RADOVIĆ SLAVKA
+RADOVIĆ SLAVKO
+RADOVIĆ SRETEN
+RADOVIĆ STANKO
+RADOVIĆ STEVAN
+RADOVIĆ STRAHINJA
+RADOVIĆ TEREZIJA
+RADOVIĆ-UVERIĆ MILA DR
+RADOVIĆ VELIMIR
+RADOVIĆ VELJA
+RADOVIĆ VELJKO
+RADOVIĆ VELJKO
+RADOVIĆ VERA
+RADOVIĆ VERA
+RADOVIĆ VIDAK
+RADOVIĆ VIDOSAV
+RADOVIĆ VLADIMIR
+RADOVIĆ VLADIMIR
+RADOVIĆ VLAJKO
+RADOVIĆ VOJISLAV
+RADOVIĆ VUKSAN
+RADOVIĆ ZDRAVKO
+RADOVIĆ ZORAN
+RADOVNIKOVIĆ MARIJA
+RADU BRANKO
+RADUJKO ĐURA
+RADUJKO ALEKSANDAR
+RADUJKO BRANKO
+RADUJKO DESA
+RADUJKO DUŠAN
+RADUJKO DUŠAN
+RADUJKO GORAN
+RADUJKO JASMINA
+RADUJKO LJILJANA
+RADUJKO MARKO
+RADUJKO MILAN
+RADUJKO MIRA
+RADUJKO MIRKO
+RADUJKO NEDELJKO
+RADUJKO STEVO
+RADUJKOV ALEKSANDAR
+RADUJKOV DANICA DIPL ING
+RADUJKOV DANILO
+RADUJKOV DANILO
+RADUJKOV DEJAN
+RADUJKOV DRAGOLJUB
+RADUJKOV LJUBICA
+RADUJKOV LJUBICA
+RADUJKOV MILAN
+RADUJKOV MILIVOJ
+RADUJKOV MITAR
+RADUJKOV NIKOLA
+RADUJKOV PETAR
+RADUJKOV RUŽICA
+RADUJKOV STEVAN
+RADUJKOV VLADIMIR
+RADUJKOVIĆ ILIJA
+RADUJKOVIĆ JELKA
+RADUJKOVIĆ KOSTA
+RADUKA LAJOŠ
+RADUKIĆ RADOSAV
+RADUKIN ALEKSA
+RADUKIN BRANKA
+RADUKIN DANICA
+RADUKIN GAVRA
+RADUKIN LJUBOMIR
+RADUKIN MILAN
+RADUKIN MILENKO
+RADUKIN MIRKO
+RADUKIN RADOSLAV
+RADUKIN STOJKA
+RADULAŠKI BOŠKO
+RADULAŠKI STEVAN
+RADULEV JOVAN
+RADULJ JELENA
+RADULOV CVETISLAV
+RADULOV CVETISLAV
+RADULOV JOVAN
+RADULOV JULKA
+RADULOVIĆ ŽIVKO
+RADULOVIĆ ĐOKO
+RADULOVIĆ ĐORĐE
+RADULOVIĆ ĐORĐE
+RADULOVIĆ ĐURO
+RADULOVIĆ ALEKSANDAR
+RADULOVIĆ ALEKSANDAR
+RADULOVIĆ ANĐELKA
+RADULOVIĆ ANĐELKO
+RADULOVIĆ ANĐELKO
+RADULOVIĆ ANA
+RADULOVIĆ-BELIĆ ZORKA
+RADULOVIĆ BOGDANKA
+RADULOVIĆ BORIVOJ
+RADULOVIĆ BOSA
+RADULOVIĆ BOSILJKA
+RADULOVIĆ BRANKA
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRANKO
+RADULOVIĆ BRATISLAV
+RADULOVIĆ DANIJELA
+RADULOVIĆ DRAGAN
+RADULOVIĆ DRAGICA
+RADULOVIĆ DRAGICA
+RADULOVIĆ DRAGOLJUB
+RADULOVIĆ DRAGUTIN
+RADULOVIĆ DUŠAN
+RADULOVIĆ GORAN
+RADULOVIĆ ILIJA
+RADULOVIĆ JORDAN
+RADULOVIĆ JOVAN
+RADULOVIĆ JOVAN
+RADULOVIĆ KRUNISLAV
+RADULOVIĆ KSENIJA
+RADULOVIĆ LAZAR
+RADULOVIĆ LJUBIŠA DIPL ING
+RADULOVIĆ MAGDA
+RADULOVIĆ MARIJANA
+RADULOVIĆ MARIJA
+RADULOVIĆ MARIJA
+RADULOVIĆ MIHAILO
+RADULOVIĆ MILAN
+RADULOVIĆ MILAN
+RADULOVIĆ MILAN
+RADULOVIĆ MILAN
+RADULOVIĆ MILENA
+RADULOVIĆ MILE
+RADULOVIĆ MILOJE
+RADULOVIĆ MILORAD DR
+RADULOVIĆ MILOVAN
+RADULOVIĆ MILUTIN
+RADULOVIĆ MIRJANA
+RADULOVIĆ MIRKO
+RADULOVIĆ MIROSLAVA
+RADULOVIĆ NADA
+RADULOVIĆ NEDELJKA
+RADULOVIĆ NIKOLA DIPL ING
+RADULOVIĆ NIKOLA
+RADULOVIĆ NIKOLA
+RADULOVIĆ NIKOLA
+RADULOVIĆ NINOSLAVA DR
+RADULOVIĆ PETAR
+RADULOVIĆ PETAR
+RADULOVIĆ RADE
+RADULOVIĆ RADIVOJ
+RADULOVIĆ RADOJE DR
+RADULOVIĆ RADOJKA
+RADULOVIĆ RADOMIR
+RADULOVIĆ RAJKO
+RADULOVIĆ ROZALIJA
+RADULOVIĆ RUŽA
+RADULOVIĆ RUDOLF
+RADULOVIĆ SAVA
+RADULOVIĆ SAVA
+RADULOVIĆ SAVA
+RADULOVIĆ SELIMIR
+RADULOVIĆ SLAVICA
+RADULOVIĆ SLOBODAN
+RADULOVIĆ SREĆKO
+RADULOVIĆ SRETO
+RADULOVIĆ STANA
+RADULOVIĆ STANKO
+RADULOVIĆ STEVAN DR
+RADULOVIĆ STEVAN
+RADULOVIĆ STEVAN
+RADULOVIĆ SVETKO
+RADULOVIĆ SVETOZAR
+RADULOVIĆ SVETOZAR
+RADULOVIĆ TOMAŠ
+RADULOVIĆ VELIMIR
+RADULOVIĆ ZLATINKA DR
+RADULOVIĆ ZORAN
+RADULOVIĆ ZORAN
+RADULOVIĆ ZVONIMIR
+RADUMILO ALEKSANDAR
+RADUMILO GORDANA
+RADUMILO MIĆO
+RADUMILO MILORAD
+RADUMILO MIRKO
+RADUN ŽELJKO
+RADUN ŽELJKO
+RADUN DRAGAN
+RADUN GORAN
+RADUN ILIJA
+RADUN JOVAN
+RADUN LJUBICA
+RADUN MARKO
+RADUN MILOŠ
+RADUN SLOBODAN
+RADUN SMILJA
+RADUN VLADO
+RADUNJIĆ MILOMIR
+RADUNKOVIĆ MIROSLAV
+RADUNKOVIĆ RADOMIR
+RADUNKOVIĆ RANKO
+RADUNOVIĆ ĐORĐE
+RADUNOVIĆ JELICA
+RADUNOVIĆ JELICA
+RADUNOVIĆ JEVREM
+RADUNOVIĆ RADUN
+RADUNOVIĆ ROSANDA
+RADUSIN MILE
+RADUSIN TOMA
+RADUSIN VERICA
+RADUSIN VLADIMIR
+RADUSINOVIĆ BISER DIPL ING
+RADUSINOVIĆ BORA
+RADUSINOVIĆ DANILO
+RADUSINOVIĆ MILAN
+RADUSINOVIĆ NEDELJKO
+RADUSINOVIĆ VOJISLAV
+RADVANJ SAŠA
+RADVANJI JOVAN
+RADVANSKI STEVAN
+RAFA ANDRAŠ
+RAFAI GABOR
+RAFAI IŠTVAN
+RAFAI JULIJANA
+RAFAI STEVAN
+RAFAI TIBOR
+RAFAJLOVIĆ ZUZANA
+RAFAL ĐURĐINKA
+RAFAL LAJOŠ
+RAFAL MARIJA
+RAGAČ IVAN
+RAGAI JOVGEN
+RAGAJI ĐURA
+RAGAJI IRINA
+RAGAJI NIKOLA
+RAGAJI NIKOLA
+RAGAJI VLADA
+RAGAJI VLADA
+RAGAJI VLADIMIR
+RAGO ADAM
+RAGUŽ DRAŽEN
+RAHELIĆ SVETOMIR DR
+RAHMAN MIHAJLO
+RAIČ ALEKSANDAR
+RAIČ NIKOLA
+RAIČEVIĆ ŽIVKO
+RAIČEVIĆ ŽIVOJIN
+RAIČEVIĆ ŽIVOJIN
+RAIČEVIĆ BORKA
+RAIČEVIĆ DRAGIĆ
+RAIČEVIĆ MILAN
+RAIČEVIĆ MILICA
+RAIČEVIĆ NIKOLA
+RAIČEVIĆ VESNA
+RAIČEVIĆ ZORAN
+RAIČIĆ ŽIVOJIN
+RAIČIĆ ŽIVOJIN
+RAIĆ DRAGAN
+RAIĆ NIKOLA
+RAILIĆ RANKO
+RAILIĆ VUKOSAVA
+RAIMOVSKI DESANKA
+RAINAC MARIKA
+RAINAC MITAR
+RAJČAN IŠTVAN
+RAJČETIĆ DRAGOMIR
+RAJČETIĆ EMIL
+RAJČETIĆ GOJKO
+RAJČETIĆ IVANKA
+RAJČETIĆ LAZAR
+RAJČETIĆ LJUBICA
+RAJČETIĆ MILIVOJ
+RAJČETIĆ MIROSLAV
+RAJČETIĆ RUŽICA
+RAJČETIĆ SINIŠA
+RAJČETIĆ STOJAN
+RAJČETIĆ VERA
+RAJČETIĆ VLADISLAV
+RAJČETIĆ VLADISLAV
+RAJČEVIĆ VLADETA
+RAJČIĆ GRGA
+RAJČIĆ PAVLE
+RAJČIĆ STEVAN
+RAJŠIĆ ANĐA
+RAJŠIĆ DANICA
+RAJŠIĆ DUŠAN
+RAJŠIĆ ILIJA
+RAJŠIĆ JELA
+RAJŠIĆ NADA
+RAJŠIĆ RADE
+RAJŠIĆ STANA
+RAJŠIĆ STANKO
+RAJŠLI ILONA
+RAJŠLI LASLO
+RAJAČIĆ-ČAPAKOVIĆ JELICA
+RAJAČIĆ ĐURO
+RAJAČIĆ ĐURO
+RAJAČIĆ ALEKSANDAR
+RAJAČIĆ BORISLAV
+RAJAČIĆ BORISLAV
+RAJAČIĆ BRANISLAVA
+RAJAČIĆ DMITAR
+RAJAČIĆ DUŠAN
+RAJAČIĆ GORDANA
+RAJAČIĆ ILIJA
+RAJAČIĆ JOVAN
+RAJAČIĆ MILAN
+RAJAČIĆ MILAN
+RAJAČIĆ MILAN
+RAJAČIĆ PETAR
+RAJAČIĆ TIHOMIR
+RAJAČIĆ VLADIMIR
+RAJAČIĆ VLADO
+RAJAČIĆ ZORICA
+RAJAČIĆ ZORKA
+RAJAK BRANKO
+RAJAK MILENA
+RAJAK NEGOVAN
+RAJAKOVAC MIODRAG
+RAJAKOVAC ZORAN
+RAJBER JOŽEF
+RAJDA PETAR
+RAJDA PETER
+RAJDA SANDI
+RAJEVIĆ KOSTA
+RAJEVIĆ VALERIJA
+RAJH DEŽE
+RAJH OLGA
+RAJH VLADIMIR
+RAJIČ MILAN
+RAJIČIĆ KATALIN
+RAJIČIĆ MIODRAG
+RAJIČIĆ MIODRAG
+RAJIĆ ANKICA
+RAJIĆ BORISAV
+RAJIĆ DARINKA
+RAJIĆ DESANKA
+RAJIĆ DOBRIVOJ
+RAJIĆ DRAGAN
+RAJIĆ DRAGA
+RAJIĆ DRAGICA
+RAJIĆ DRAGUTIN
+RAJIĆ GORDANA
+RAJIĆ IGNJAT
+RAJIĆ ISA
+RAJIĆ JOVAN
+RAJIĆ JOVAN
+RAJIĆ KATARINA
+RAJIĆ KOVINKA
+RAJIĆ KRISTINA
+RAJIĆ LJUBICA
+RAJIĆ LUKA
+RAJIĆ MILAN
+RAJIĆ MILENA
+RAJIĆ MILKA
+RAJIĆ MILORAD
+RAJIĆ MIOMIR
+RAJIĆ NADA
+RAJIĆ NADA
+RAJIĆ NIKOLA
+RAJIĆ PERKA
+RAJIĆ PETAR
+RAJIĆ RADE
+RAJIĆ RADISLAV
+RAJIĆ RADMILA
+RAJIĆ RUŽA
+RAJIĆ SLAVKA
+RAJIĆ SNEŽANA
+RAJIĆ SPASOJE DR
+RAJIĆ STEVAN
+RAJIĆ STEVAN
+RAJIĆ STEVAN
+RAJIĆ VELIMIR
+RAJIĆ VELIMIR
+RAJIĆ VELINKA
+RAJIĆ VOJISLAV
+RAJIĆ VOJISLAV
+RAJIĆ ZORAN
+RAJILIĆ JOVANKA
+RAJINAC-BUKUROV DRAGANA
+RAJINAC NENAD
+RAJINAC SVETOZAR
+RAJINOVIĆ MIRKO
+RAJKIĆ NIKOLA
+RAJKOV BOGDAN DR
+RAJKOV BORIVOJ
+RAJKOV DESANKA
+RAJKOV DRAGIĆ
+RAJKOV DUŠAN
+RAJKOV ISIDOR
+RAJKOV IVAN
+RAJKOV IVAN
+RAJKOV LJUBOMIR
+RAJKOV MARKO
+RAJKOV MILAN
+RAJKOV MILENKO
+RAJKOV MILORAD
+RAJKOV MLADEN DIPL ING
+RAJKOV MOMIR
+RAJKOV MOMIR
+RAJKOV NIKOLA
+RAJKOV PETAR
+RAJKOV RAJKO
+RAJKOV RATIMIR
+RAJKOV SAVA
+RAJKOV STEVAN
+RAJKOV VESNA
+RAJKOV VLADIMIR
+RAJKOV VUKAŠIN
+RAJKOVIĆ ČEDOMIR
+RAJKOVIĆ ŽIVAN DR
+RAJKOVIĆ ANKICA
+RAJKOVIĆ BLAGUTIN
+RAJKOVIĆ BOGOLJUB
+RAJKOVIĆ BORIVOJE
+RAJKOVIĆ BRANKO
+RAJKOVIĆ DAMNJAN
+RAJKOVIĆ DRAGANA
+RAJKOVIĆ DRAGAN
+RAJKOVIĆ DRAGIŠA
+RAJKOVIĆ DRAGOLJUB
+RAJKOVIĆ DUŠAN
+RAJKOVIĆ IVO
+RAJKOVIĆ LJUBOMIR
+RAJKOVIĆ MILAN
+RAJKOVIĆ MILEVA
+RAJKOVIĆ MILIĆ
+RAJKOVIĆ MILJKO
+RAJKOVIĆ MIRKO
+RAJKOVIĆ MIROLJUB
+RAJKOVIĆ NIKOLA
+RAJKOVIĆ PETAR
+RAJKOVIĆ RAJKO
+RAJKOVIĆ RATKO
+RAJKOVIĆ SLAVKO
+RAJKOVIĆ SLOBODAN
+RAJKOVIĆ SRBOLJUB
+RAJKOVIĆ SRETEN
+RAJKOVIĆ STEVAN
+RAJKOVIĆ STOJA
+RAJKOVIĆ SVETISLAV
+RAJKOVIĆ TATJANA
+RAJKOVIĆ TOMISLAV
+RAJKOVIĆ VELIMIR
+RAJKOVIĆ VIDOSAV
+RAJKOVIĆ VLASTIMIR
+RAJLIĆ MILKA
+RAJLIĆ NEVENKA
+RAJMOVSKA JELZA
+RAJNIĆ DRAGAN
+RAJNIĆ NOVAK
+RAJNINGER JOŽEF
+RAJNOVIĆ ALOJZ
+RAJNOVIĆ BLAŽ
+RAJNOVIĆ JELENA
+RAJNOVIĆ JOVAN
+RAJNOVIĆ JULIJANA
+RAJNOVIĆ NADA
+RAJNOVIĆ SNEŽANA
+RAJNPREHT VERA
+RAJTA IŠTVAN
+RAJTA MARIJA
+RAJTA NIKOLA
+RAJTENBAH ELEMIR
+RAJTER DRAGICA
+RAJTER ZOLTAN
+RAK ANICA
+RAK MARIJA
+RAK NIKOLA
+RAK VELIBOR
+RAKŠANJI LADISLAV
+RAKAS ĐORĐE
+RAKAS RADOJKA
+RAKAZOV MIODRAG
+RAKETIĆ TOMISLAV
+RAKIĆ ŽARKO
+RAKIĆ ŽIVKA
+RAKIĆ ŽIVKO
+RAKIĆ ĐORĐE
+RAKIĆ ĐORĐE
+RAKIĆ ĐORĐE
+RAKIĆ ĐURA
+RAKIĆ ALEKSANDAR
+RAKIĆ ANĐELIJA
+RAKIĆ ANĐELKA
+RAKIĆ ANASTASIJA
+RAKIĆ ANA
+RAKIĆ BLAGOJE
+RAKIĆ BOŽO
+RAKIĆ BOGDANKA
+RAKIĆ BORO
+RAKIĆ BRANIMIR
+RAKIĆ BRANISLAV
+RAKIĆ BRANKA
+RAKIĆ BRANKO
+RAKIĆ DARINKA
+RAKIĆ DOMINKA
+RAKIĆ DRAGANA
+RAKIĆ DRAGAN
+RAKIĆ DRAGIŠA
+RAKIĆ DRAGOMIR
+RAKIĆ DUŠANKA
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ DUŠAN
+RAKIĆ GAVRA
+RAKIĆ GLIGORIJE
+RAKIĆ GORDANA
+RAKIĆ GRUJA
+RAKIĆ IVAN
+RAKIĆ JOVANKA
+RAKIĆ JOVAN
+RAKIĆ JOVAN
+RAKIĆ JOVAN
+RAKIĆ JOVICA
+RAKIĆ KATICA
+RAKIĆ KLEMENT
+RAKIĆ LAZAR
+RAKIĆ LJILJANA
+RAKIĆ LJILJANA
+RAKIĆ LJILJANA
+RAKIĆ LJUBIŠA DR LEKAR
+RAKIĆ LJUBIŠA
+RAKIĆ LJUBICA
+RAKIĆ LJUBICA
+RAKIĆ LJUBICA
+RAKIĆ LJUBICA
+RAKIĆ LJUBOMIR
+RAKIĆ LJUBO
+RAKIĆ MATIJA
+RAKIĆ MILANKA
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILAN
+RAKIĆ MILENKO
+RAKIĆ MILENKO
+RAKIĆ MILENKO
+RAKIĆ MILICA
+RAKIĆ MILINA
+RAKIĆ MILIVOJE
+RAKIĆ MILIVOJ
+RAKIĆ MILIVOJ
+RAKIĆ MILIVOJ
+RAKIĆ MILKA
+RAKIĆ MILOŠ
+RAKIĆ MILOVAN
+RAKIĆ MILUTIN
+RAKIĆ MIODRAG
+RAKIĆ MIRA
+RAKIĆ MIRA
+RAKIĆ MIRJANA
+RAKIĆ MIRJANA
+RAKIĆ MIRJANA
+RAKIĆ MIRJANA
+RAKIĆ MIROSLAVA
+RAKIĆ NATALIJA
+RAKIĆ NEBOJŠA
+RAKIĆ NEDELJKO
+RAKIĆ NENAD
+RAKIĆ NENAD
+RAKIĆ NIKOLA
+RAKIĆ NIKOLA
+RAKIĆ NOVAK
+RAKIĆ OBRAD
+RAKIĆ PAJA
+RAKIĆ PANE
+RAKIĆ PAVLE
+RAKIĆ PETAR
+RAKIĆ PETAR
+RAKIĆ PREDRAG
+RAKIĆ RADMILA
+RAKIĆ RADMILA
+RAKIĆ RADOJKA
+RAKIĆ RADOJKA
+RAKIĆ RADOSLAV DIPL ING
+RAKIĆ RADOVAN
+RAKIĆ RADOVAN
+RAKIĆ RADOVAN
+RAKIĆ RADOVAN
+RAKIĆ RADOVAN
+RAKIĆ RAJKO
+RAKIĆ RAJKO
+RAKIĆ RUŽICA
+RAKIĆ SAVA
+RAKIĆ SLAVKA
+RAKIĆ SLAVKO
+RAKIĆ SLOBODAN
+RAKIĆ SLOBODAN
+RAKIĆ SLOBODAN
+RAKIĆ SMILJANA
+RAKIĆ SOFIJA
+RAKIĆ STAMENKA
+RAKIĆ STEVANKA
+RAKIĆ STEVAN
+RAKIĆ STEVAN
+RAKIĆ STEVAN
+RAKIĆ STEVAN
+RAKIĆ STEVICA
+RAKIĆ STOJANKA
+RAKIĆ STOJAN
+RAKIĆ SVETOMIR
+RAKIĆ SVETOZAR
+RAKIĆ TIMA
+RAKIĆ TODOR
+RAKIĆ TOMISLAV
+RAKIĆ VASILIJE
+RAKIĆ VELEMIR
+RAKIĆ VERA
+RAKIĆ VERA
+RAKIĆ VIDOSAVA
+RAKIĆ VLADIMIR
+RAKIĆ VLADIMIR
+RAKIĆ VLADIMIR
+RAKIĆ VLADIMIR
+RAKIĆ VLADIMIR
+RAKIĆ ZAGA
+RAKIĆ ZLATA
+RAKIĆ ZORAN
+RAKIĆ ZORKA
+RAKIĆEVIĆ STAMENA
+RAKIĆEVIĆ TIHOMIR
+RAKIĆEVIĆ ZORAN
+RAKIN ĐORĐE
+RAKIN ANTUN
+RAKIN BORISLAV
+RAKIN GOJKO
+RAKIN JELICA
+RAKIN JULIJANA
+RAKIN-MARTINOVIĆ RADMILA
+RAKIN RADOVAN
+RAKITA ANKICA
+RAKITA BOŽO
+RAKITA CVIJAN
+RAKITA CVIJO
+RAKITA JOVO
+RAKITA LJILJANA
+RAKITA MILAN
+RAKITA MLADINKO
+RAKITA PETAR
+RAKITA SIMKA
+RAKOČEVIĆ ĐORĐE
+RAKOČEVIĆ BORO
+RAKOČEVIĆ GRUJICA
+RAKOČEVIĆ MARIJAN
+RAKOČEVIĆ MARKO
+RAKOČEVIĆ MILAN
+RAKOČEVIĆ MILIJA
+RAKOČEVIĆ MIROSLAV
+RAKOČEVIĆ RADE
+RAKOČEVIĆ RADMILA
+RAKOŠ JANOŠ
+RAKOŠ KATICA
+RAKOŠ ZVONIMIR
+RAKOŠI NADA
+RAKOŠI VLADISLAV
+RAKONJAC BOGOLJUB
+RAKONJAC PUNIŠA
+RAKOVIĆ ALEKSANDAR
+RAKOVIĆ DRAGICA
+RAKOVIĆ DUŠAN
+RAKOVIĆ JUGOSLAV
+RAKOVIĆ LJUBINKA
+RAKOVIĆ MILAN
+RAKOVIĆ MILOVAN
+RAKOVIĆ NIKOLA
+RAKOVIĆ OSTOJA
+RAKOVIĆ RADOMIR
+RAKOVIĆ RATKO
+RAKOVIĆ SLAVKO
+RAKOVIĆ STANISLAV
+RAKOVIĆ TOMISLAV
+RAKOVIĆ VITOMIRKA
+RAKOVIĆ VLADO
+RAKUŠIĆ VLADIMIR
+RALETIĆ ŽIVKA
+RALETIĆ ĐORĐE
+RALETIĆ ĐURA
+RALETIĆ ANĐELKA
+RALETIĆ ANA
+RALETIĆ BOGDAN
+RALETIĆ DOBRICA
+RALETIĆ DRAGAN
+RALETIĆ DUŠAN
+RALETIĆ ILIJA
+RALETIĆ JELICA
+RALETIĆ LAZAR
+RALETIĆ LAZAR
+RALETIĆ LAZAR
+RALETIĆ LEPOSAVA
+RALETIĆ MAJA
+RALETIĆ MILAN
+RALETIĆ MILOŠ
+RALETIĆ MILOŠ
+RALETIĆ MILORAD
+RALETIĆ MIRKO
+RALETIĆ MIROSLAV
+RALETIĆ MLADEN
+RALETIĆ PETAR
+RALETIĆ-SAVIĆ JELENA
+RALETIĆ-SAVIĆ JELENA
+RALETIĆ VELJKO
+RALETIĆ VERA
+RALETIĆ ZORAN
+RALETIĆ ZORICA
+RALEVIĆ NEBOJŠA
+RALIĆ ŽIVOJIN
+RALIĆ BRANKO
+RALIĆ DRAGICA
+RALIĆ DUŠAN
+RALIĆ MARIJA
+RALIĆ MARIJA
+RALIĆ MILE
+RALIĆ MOMIRKA
+RALIĆ STEVAN
+RALIĆ STEVA
+RALJIĆ ANĐELKO
+RALJIĆ DRAGINJA
+RALJIĆ DUŠAN
+RALJIĆ NEDELJKO
+RAMAČ ANICA
+RAMAČ IVAN
+RAMAČ JULIJAN
+RAMAČ LEONA
+RAMAČ LJUBOMIR
+RAMAČ LJUBOMIR
+RAMAČ LJUBOMIR
+RAMAČ MARIJA
+RAMAČ MIHAJLO
+RAMAČ MIHAJLO
+RAMAČ MIROSLAV
+RAMAČ NADA
+RAMAČ NATALIJA
+RAMAČ PETAR
+RAMAČ SIMEON
+RAMAČ VLADIMIR
+RAMAČ ZDENKA
+RAMAĆ MILEVA
+RAMADANI ROZA
+RAMADANOV MUMUDIJA
+RAMADANOVIĆ ĐEMALJ
+RAMADANOVIĆ JAKOV
+RAMADANOVSKI NADA
+RAMADANOVSKI NEDELJKO
+RAMADANSKI DRAGIĆ
+RAMADANSKI JELENA
+RAMADANSKI MILINKA
+RAMAZANOV VIKTOR
+RAMIĆ ĐUKA
+RAMIĆ JOVANKA
+RAMIĆ LAZAR
+RAMIĆ LUKA
+RAMIĆ LUKA
+RAMIĆ MILOŠ DIPL OEC
+RAMIĆ NIKOLA
+RAMIĆ RADOJKA
+RAMIĆ STOJAN
+RAMIĆ VELIDA
+RAMLJAK VLADIMIR
+RAMLJAK ZLATKO
+RANČIĆ ŠIME
+RANČIĆ DUŠANKA
+RANČIĆ HRANISLAV
+RANČIĆ JORDAN
+RANČIĆ MILOŠ
+RANČIĆ RANKO
+RANĐELOVIĆ ĐORĐE
+RANĐELOVIĆ HRANISLAV
+RANĐELOVIĆ ILIJA
+RANĐELOVIĆ LJILJANA
+RANĐELOVIĆ LJUBIŠA
+RANĐELOVIĆ LJUBODRAG
+RANĐELOVIĆ MIRJANA
+RANĐELOVIĆ MIROSLAV
+RANĐELOVIĆ MIROSLAV
+RANĐELOVIĆ MLADEN
+RANĐELOVIĆ OBRAD
+RANĐELOVIĆ RUŽICA
+RANĐELOVIĆ SLAVOLJUB
+RANĐELOVIĆ STEVAN
+RANĐELOVIĆ TOMISLAV
+RANĐELOVIĆ VLASTIMIR
+RANĐELOVIĆ ZORAN
+RANDELJ ĐORĐE
+RANDELJ ĐURĐINKA
+RANDELJ LAZAR
+RANDELJ OLIVERA
+RANDELJ PETAR
+RANDELJ STEVAN
+RANDELJ SVETOZAR
+RANGELOV DIMITAR
+RANGELOV STEVAN
+RANGELOV STEVAN
+RANIĆ VLADISLAV
+RANIN JOVAN
+RANIN LAZAR
+RANISAV RADIVOJ
+RANISAVLJEV ŽIVKO
+RANISAVLJEV ĐORĐE
+RANISAVLJEV ĐORĐE
+RANISAVLJEV GORDANA
+RANISAVLJEV MILICA
+RANISAVLJEV MILOŠ
+RANISAVLJEV PAJA
+RANISAVLJEV RADA
+RANISAVLJEV RADMILA
+RANISAVLJEV RADMILA
+RANISAVLJEV RADOSLAV
+RANISAVLJEV SLAVOLJUB
+RANISAVLJEV STEVAN
+RANISAVLJEV TIJANA
+RANISAVLJEVIĆ ŽARKO
+RANISAVLJEVIĆ ŽELJKO
+RANISAVLJEVIĆ BOGUMILA
+RANISAVLJEVIĆ DOBRIVOJ
+RANISAVLJEVIĆ DUŠAN
+RANISAVLJEVIĆ JELENA
+RANISAVLJEVIĆ NEBOJŠA
+RANISAVLJEVIĆ RADIVOJ
+RANISAVLJEVIĆ SINIŠA
+RANISAVLJEVIĆ SLAVKA
+RANISAVLJEVIĆ VIOLETA
+RANISAVLJEVIĆ ZORAN
+RANISLAV-LARTY NADA DR
+RANITOVIĆ BOŠKO
+RANITOVIĆ BOGOLJUB
+RANITOVIĆ DIVNA
+RANITOVIĆ DRAGOSLAV
+RANITOVIĆ JELICA
+RANITOVIĆ SLAVICA
+RANITOVIĆ VELISLAV
+RANKIĆ STEVO
+RANKIĆ TOMISLAV
+RANKOV ANKICA
+RANKOV DRAGAN DR
+RANKOV DRAGOLJUB
+RANKOV GROZDA
+RANKOV IRENA
+RANKOV IVANKA
+RANKOV JOVAN
+RANKOV KOSTA
+RANKOV LJILJANA
+RANKOV LJUBICA
+RANKOV MARIJA
+RANKOV MILAN
+RANKOV MILIVOJ
+RANKOV MIROSLAV
+RANKOV NEDELJKO
+RANKOV NEDELJKO
+RANKOV OLGICA
+RANKOV PETAR
+RANKOV RADISLAV
+RANKOV RADMILA
+RANKOV RADOJKA
+RANKOV STEVAN
+RANKOV STEVAN
+RANKOV TANASIJE
+RANKOV ZORA
+RANKOVIĆ ŽIVKO
+RANKOVIĆ ANĐELKA DR
+RANKOVIĆ ANDRIJA
+RANKOVIĆ ANKA
+RANKOVIĆ BOŠKO
+RANKOVIĆ BOJAN
+RANKOVIĆ BORIVOJ
+RANKOVIĆ BRANISLAV
+RANKOVIĆ BRANKA
+RANKOVIĆ DARINKA
+RANKOVIĆ DESANKA
+RANKOVIĆ DRAGO
+RANKOVIĆ DUŠAN
+RANKOVIĆ DUŠICA
+RANKOVIĆ DUBRAVKA
+RANKOVIĆ IRENA
+RANKOVIĆ IVAN
+RANKOVIĆ JOVAN
+RANKOVIĆ LJUBICA
+RANKOVIĆ MELANIJA
+RANKOVIĆ MILICA
+RANKOVIĆ MIROSLAV
+RANKOVIĆ NIKOLA DIPL ING
+RANKOVIĆ PREDRAG
+RANKOVIĆ RADIVOJ
+RANKOVIĆ RATOMIR
+RANKOVIĆ ROZALIJA
+RANKOVIĆ SLOBODAN
+RANKOVIĆ STEVAN
+RANKOVIĆ SVETOZAR
+RANKOVIĆ SVETOZAR
+RANKOVIĆ TOMISLAV
+RANKOVIĆ VUKOSAVA
+RANKOVIĆ ZORAN
+RANOGAJEC IVAN
+RAONIĆ ĐORĐE
+RAONIĆ IKONIJA
+RAONIĆ JANKO
+RAONIĆ RADENKO
+RAONIĆ SPASOJE
+RAONIĆ VUKOLA
+RAPČO KATALIN
+RAPAIĆ DEJAN
+RAPAIĆ MIODRAG DR
+RAPAIĆ RADENKA
+RAPAIĆ STEVAN
+RAPAJIĆ ANAMARIJA
+RAPAJIĆ BORIVOJE
+RAPAJIĆ DUŠKO
+RAPAJIĆ MILAN ADVOKAT
+RAPAJIĆ MILAN
+RAPAJIĆ MILAN
+RAPAJIĆ RADOJA
+RAPAJIĆ STEVAN
+RAPAJIĆ TAMARA
+RAPIĆ BORE
+RAPIĆ DRAGOMIR
+RAPIĆ DUŠANKA
+RAPIĆ JOVAN
+RAPIĆ JOVAN
+RAPIĆ MILAN
+RAPIĆ NADA
+RAPIĆ NENAD
+RAPIĆ RADE
+RAPIĆ RUŠKO
+RAPO STJEPAN
+RAPOTI IŠTVAN
+RASPOPOVIĆ BOŠKO
+RASPOPOVIĆ MILOŠ
+RASPOPOVIĆ SLOBODAN
+RASPOPOVIĆ SVETISLAV
+RASPOPOVIĆ VLADISLAV
+RASTAVAC PETAR
+RASTIK ĐORĐE
+RASTOVAC ĐURO
+RASTOVIĆ ILIJA
+RASTOVIĆ JELENA
+RASTOVIĆ MILAN
+RASTOVIĆ MILICA
+RASTOVIĆ-PLIVELIĆ DESANKA
+RASTOVIĆ RADOJKA
+RASTOVIĆ SLOBODAN
+RASTOVIĆ STEVAN
+RASTOVIĆ VERA
+RAT FERENC
+RAT FRANJA
+RAT JAKOB
+RAT JOSIP
+RATAJAC DRAGOLJUB DR
+RATGEBER JULIJA
+RATGEBER LASLO
+RATIĆ ĐURĐINA
+RATIĆ BORA
+RATIĆ DUŠAN
+RATKELIĆ MILAN
+RATKOV ŽIVKO
+RATKOV ĐORĐE
+RATKOV ACA
+RATKOV BORIVOJ
+RATKOV CECILIJA
+RATKOV DRAGAN
+RATKOV DRAGINJA
+RATKOV DRAGINJA
+RATKOV DUŠANKA
+RATKOV DUŠAN
+RATKOV JELENA
+RATKOV JULIJANA
+RATKOV KATARINA
+RATKOV LEPOSAVA
+RATKOV MIĆO
+RATKOV MILENKO
+RATKOV MILENKO
+RATKOV MILICA
+RATKOV NENAD
+RATKOV NENAD
+RATKOV PAVLE
+RATKOV PREDRAG
+RATKOV RADE
+RATKOV RADIVOJ
+RATKOV RADOMIR
+RATKOV RUŽICA
+RATKOV SAVKA
+RATKOV SMILJANA
+RATKOV STANISLAVA
+RATKOV STANISLAV
+RATKOV VERA
+RATKOV VIDOSAVA
+RATKOV VLADIMIR
+RATKOV VLADIMIR
+RATKOV VOJISLAV
+RATKOV VUJICA
+RAUŠ KLAUDIJA
+RAUŠ RIHARD
+RAUŠENBERGER MARTIN
+RAUŠKI ĐORĐE
+RAUŠKI ANGELINA
+RAUŠKI DANILO
+RAUŠKI LJILJANA
+RAUŠKI MILANA
+RAUŠKI MILOŠ
+RAUSAVLJEVIĆ ĐORĐE
+RAUSAVLJEVIĆ DUŠANKA
+RAUZA PALKO
+RAVAJIĆ ĐURO
+RAVASI LJUBICA
+RAVIĆ NIKOLA
+RAVIĆ SLOBODANKA
+RAVLIĆ-BANJAC SNEŽANA
+RAVLIĆ PEJO
+RAVLIĆ VIDA
+RAVLIJA DRAGAN
+RAZDEVŠEK STOJANKA
+RAZIĆ DŽEMAL
+RAZMOVSKI NIKOLA
+RAZUMENIĆ-KOTROŠAN MILENA
+REČEI ILONKA
+REČKO ILEŠ
+REŠĆANSKI BOŠKO
+REŠĆANSKI BOGDAN
+REŠĆANSKI VERA
+REŠETAR ANTE
+REŠETAR STANA
+REŠETAROVIĆ JOVAN
+REŠITI ĐORĐE
+REŠNJAK ANDRIJA
+REŠNJAK LASLO
+REŠNJAK STEVAN
+REŠNJAK ZORICA
+REŽNJAK LASLO
+REŽUK JOSIP
+REĐEP DRAŠKO
+REĐEPI DŽELJAN
+REĐEPI MILAIM
+REĐEPOVIĆ ALIJA
+REBA BLAGOJE
+REBA IGOR
+REBA IGOR
+REBIĆ BOGDAN DIPL ING
+REBIĆ DRAGAN
+REBIĆ NEDELJKO
+REBIĆ NEDELJKO
+REBIĆ SIMEON
+REBIĆ SIMO
+REBIĆ SLOBODAN DR
+REBIĆ VLADIMIR
+REBRINA KATARINA
+REDŽA IBRAHIM
+REDŽEK JOVAN
+REDŽEP JUSNIJA
+REDŽEPOV ŠEVKIN
+REDŽEPOV KAMBER
+REDE RUDOLF
+REDIG VILIM
+REDLI ĐORĐE
+REDLI MARIJA
+REDLI VERA
+REGAJZ STEVAN
+REGEC ETELKA
+REGELJAC LJUBICA
+REGELJAC MARA
+REGER JOVAN
+REGL VLADIMIR
+REGODIĆ SVETOZAR
+REGOJEVIĆ MLAĐENKO
+REHAK IMRE
+REHAK LASLO
+REHAK OLGA
+REHNER MARIJA
+REHNER STAMENKA
+REINHOLC ĐEZE
+REINHOLC ĐEZE
+REINHOLZ ĐEZE
+REKA ARIF
+REKA-IVANOVIĆ DUŠICA
+REKEĆE ŠANDOR
+REKECKI ELEONORA
+REKECKI JOŽEF
+REKIĆ HUSEIN
+RELIĆ ĐORĐE
+RELIĆ ĐORĐE
+RELIĆ DARKO
+RELIĆ DIMITRIJE
+RELIĆ GOJKO
+RELIĆ JOVAN
+RELIĆ JOVICA
+RELIĆ KONSTANTIN
+RELIĆ LJUBAN
+RELIĆ MILAN
+RELIĆ MILENKO
+RELIĆ MILIVOJ
+RELIĆ MIRA
+RELIĆ PAVLE
+RELIĆ PETAR
+RELIĆ RADINKA
+RELIĆ SAVA
+RELIĆ SLAVOLJUB
+RELIĆ SOFIJA
+RELIĆ SOFIJA
+RELIĆ SPOMENKA DIPL PRAVNIK
+RELIĆ SRETA
+RELJANOVIĆ MARIJA
+RELJIĆ ĐURICA
+RELJIĆ ĐURO
+RELJIĆ BOŽIDAR
+RELJIĆ DAMJANKA
+RELJIĆ DANILO
+RELJIĆ JOVAN
+RELJIĆ LJUBOMIR
+RELJIĆ MARA
+RELJIĆ MILORAD
+RELJIĆ ROMAN
+RELJIĆ SLAVKO
+RELJIĆ SMILJA
+RELJIĆ SNEŽANA
+RELJIĆ STEVAN
+RELJIĆ STEVA
+RELJIĆ ZLATKO
+RELJIĆ ZORKA
+RELJIN DUŠANKA
+RELJIN DUŠAN
+RELJIN DUŠAN
+RELJIN IGNJAT DR
+RELJIN ILONA
+RELJIN IVAN
+RELJIN LAZAR
+RELJIN LEPOSAVA
+RELJIN MARICA
+RELJIN MILAN
+RELJIN MILAN
+RELJIN MILICA
+RELJIN MILIVOJ
+RELJIN MILOŠ
+RELJIN MILOŠ
+RELJIN MILOŠ
+RELJIN MILOŠ
+RELJIN MILORAD
+RELJIN NADA
+RELJIN PROKOPIJE
+RELJIN RADOVAN
+RELJIN SAVA
+RELJIN SIMA
+RELJIN SLOBODAN
+RELJIN STEVAN
+RELOTA RUDOLF
+REMECKI DRAGUTIN
+REMECKI PETAR
+REMELI ANTON
+REMELI LASLO
+REMENAR DRAGUTIN
+REMER BRANISLAV
+REMLINGER ROBERT
+RENČAR ŠANDOR
+RENČAR TIVADAR
+RENČEVIĆ MILAN
+RENDULIĆ MARKO
+RENDULIĆ STOJAN
+REPŠTOK JOŽEF
+REPAŠI JOSIP
+REPAŠI STEVAN
+REPAC ŽUŽANA
+REPAC ĐORĐE
+REPAC ANA
+REPAC ISA
+REPAC JOVAN
+REPAC KOVILJKA
+REPAC MIROSLAV
+REPAC PERKICA
+REPAC PETAR
+REPAC SLAVKO
+REPAC STANIŠA
+REPAC VASILIJA
+REPIĆ ŽIVAN
+REPIĆ DANICA
+REPIĆ EMIL
+REPIĆ GIZELA
+REPIĆ IVAN
+REPIĆ MARKO
+REPIĆ MILENA
+REPIĆ MILKA
+REPIĆ VERICA
+REPIĆ ZORAN
+RESAN ANA
+RESANOVIĆ ANKA
+RESANOVIĆ DRAGAN
+RESANOVIĆ LJUBO
+RESANOVIĆ NADA
+RESANOVIĆ PERO
+RESMAN ZDRAVKO
+RESULOVSKI STOJAN
+REU LAVINEL
+REVES ANDRIJA
+REVID KATARINA
+REZANCOV KATICA
+REZEC ANTON
+REZNIČEK KARLO
+RIŽANJI IRENA
+RIĐIČKI ĐOKA
+RIĐIČKI ĐORĐE
+RIĐIČKI MILANKA
+RIĐIČKI MILAN
+RIĐIČKI SPOMENKA
+RIĐIK-GRUJIĆ ČEDOMIR
+RIĐIK-GRUJIĆ JADRANKA
+RIĐIK-GRUJIĆ VELIMIR
+RIBAR ŠANDOR
+RIBAR BELA DR
+RIBAR IMRE
+RIBAR KATICA
+RIBAREVIĆ VERA
+RIBAROV MIROSLAV
+RIBAROV SLAVICA
+RIBIČ RUŽA
+RIBIĆ ČEDO
+RIBIĆ BRANKO
+RIBIĆ FRANC
+RIBIĆ JOVAN
+RIBIĆ MIHAJLO
+RIBIĆ MILAN
+RIBIĆ PAVO
+RIBIĆ PETAR
+RIBIĆ STANKO
+RIBIĆ ZORICA
+RIBOVIĆ AMALIJA
+RIC MIHALJ DIPL OEC
+RIC RUDOLF
+RIC VESELIN
+RICA ANICA
+RICE MARGITA
+RIGO ĐULA
+RIGO LASLO
+RIHAK NANDOR
+RIHTAREC KATARINA
+RIJAVEC IVAN
+RIKER ZVONIMIR
+RIKIĆ ŽELJKO
+RIKIĆ DRAGICA
+RIKIĆ MILADIN
+RIKIĆ MILENKO
+RIL PAL
+RILAK MILOMIR
+RILKE ROBERT
+RIMŠNAJDER ROBERT
+RIMAC JOSIP
+RIMAN EGON DR
+RIMAR LEONA
+RIMAR VLADIMIR
+RIMSKI ŽARKO
+RIMSKI ŽARKO
+RIMSKI ŽARKO
+RIMSKI ŽARKO
+RIMSKI ĐOKA
+RIMSKI BISERKA
+RIMSKI BISERKA
+RIMSKI BRANISLAV
+RIMSKI BRANKA
+RIMSKI BRANKO
+RIMSKI JASMINA
+RIMSKI JELENA
+RIMSKI MILAN
+RIMSKI MILICA
+RIMSKI NATALIJA
+RIMSKI NOVAK
+RIMSKI SAVA
+RIMSKI SAVA
+RIMSKI SMILJA
+RIMSKI SMILJA
+RIMSKI STEVAN
+RIS ŠANDOR
+RIS ALEKSANDAR
+RIS DRAGINJA
+RIS DUŠKO
+RIS GEZA
+RIS NEDELJKO
+RIS STEVAN
+RIS TANJA
+RIS ZDRAVKO
+RISOVIĆ DUŠAN
+RISOVIĆ NEDELJKO
+RISOVIĆ NEDELJKO
+RISTA ŽELJKA
+RISTANOVIĆ CVETIN
+RISTANOVIĆ RADE
+RISTANOVIĆ RADOSLAV
+RISTANOVIĆ VERICA
+RISTANOVIĆ VOJIMIR
+RISTANOVIĆ ZDRAVKO
+RISTANOVIĆ ZORAN
+RISTANOVIĆ ZORAN
+RISTIĆ ĐORĐE DR LEKAR
+RISTIĆ ĐORĐE
+RISTIĆ ĐORĐE
+RISTIĆ ĐORĐE
+RISTIĆ ĐUJA
+RISTIĆ ĐURĐA
+RISTIĆ ALEKSANDAR
+RISTIĆ ALEKSANDAR
+RISTIĆ ALEKSANDAR
+RISTIĆ ALEKSANDAR
+RISTIĆ ALEKSA
+RISTIĆ ANDRIJA
+RISTIĆ BOŽIDAR
+RISTIĆ BOŽIDAR
+RISTIĆ BORA
+RISTIĆ BORISLAV
+RISTIĆ BRANISLAV
+RISTIĆ BRANKO
+RISTIĆ CVJETANKA
+RISTIĆ DANILO
+RISTIĆ DARINKA
+RISTIĆ DIMITRIJE
+RISTIĆ DIMITRIJE
+RISTIĆ DIMITRIJE
+RISTIĆ DOBRIVOJE
+RISTIĆ DRAGAN
+RISTIĆ DRAGAN
+RISTIĆ DRAGIŠA
+RISTIĆ DRAGICA
+RISTIĆ DRAGOJLA
+RISTIĆ DRAGOLJUB
+RISTIĆ DRAGOLJUB
+RISTIĆ DUŠAN DR
+RISTIĆ DUŠAN
+RISTIĆ DUŠAN
+RISTIĆ DUŠAN
+RISTIĆ DUŠAN
+RISTIĆ GAVRILO
+RISTIĆ ISIDOR
+RISTIĆ JASMINA
+RISTIĆ JELENA
+RISTIĆ JELENA
+RISTIĆ JEREMIJA
+RISTIĆ JOVAN DR
+RISTIĆ JOVAN DR
+RISTIĆ JOVAN
+RISTIĆ KSENIJA
+RISTIĆ LABUD DR LEKAR
+RISTIĆ LAZAR
+RISTIĆ LJILJANA
+RISTIĆ LJILJANA
+RISTIĆ LJUBICA
+RISTIĆ LJUBICA
+RISTIĆ MARIJA
+RISTIĆ MARIJA
+RISTIĆ MARIJA
+RISTIĆ MARIJA
+RISTIĆ MARIJENKA
+RISTIĆ MARKO
+RISTIĆ MIHAJLO
+RISTIĆ MILANKA
+RISTIĆ MILAN
+RISTIĆ MILAN
+RISTIĆ MILAN
+RISTIĆ MILAN
+RISTIĆ MILAN
+RISTIĆ MILETA
+RISTIĆ MILIVOJE
+RISTIĆ MILKA
+RISTIĆ MILOŠ
+RISTIĆ MILOŠ
+RISTIĆ MILORAD
+RISTIĆ MILORAD
+RISTIĆ MILUN
+RISTIĆ MILUTIN
+RISTIĆ MIODRAG
+RISTIĆ MIODRAG
+RISTIĆ MIROSLAV
+RISTIĆ MIROSLAV
+RISTIĆ MIROSLAV
+RISTIĆ MIROSLAV
+RISTIĆ MIROSLAV
+RISTIĆ MLADEN
+RISTIĆ NADA
+RISTIĆ NATALIJA
+RISTIĆ NEGOVAN
+RISTIĆ NESTOR
+RISTIĆ NIKOLA
+RISTIĆ NIKOLA
+RISTIĆ NOVICA
+RISTIĆ OLGA
+RISTIĆ PAVLE
+RISTIĆ PERA
+RISTIĆ PETAR
+RISTIĆ-POPOVIĆ MILICA
+RISTIĆ RADISAV
+RISTIĆ RAISA
+RISTIĆ RODOLJUB DR
+RISTIĆ SAVA
+RISTIĆ SAVA
+RISTIĆ SAVO
+RISTIĆ SLAĐAN
+RISTIĆ SLAVICA
+RISTIĆ SLAVICA
+RISTIĆ SLAVKO
+RISTIĆ SPOMENKA
+RISTIĆ STANIŠA
+RISTIĆ STANOJE DR
+RISTIĆ STEVAN
+RISTIĆ STEVAN
+RISTIĆ STEVAN
+RISTIĆ STEVAN
+RISTIĆ STEVICA
+RISTIĆ SVETISLAV
+RISTIĆ TEMELJKO
+RISTIĆ TOMISLAV
+RISTIĆ VERICA
+RISTIĆ VITOMIR
+RISTIĆ VLADIMIR
+RISTIĆ VLADIMIR
+RISTIĆ VLADIMIR
+RISTIĆ VOJIN
+RISTIĆ VOJISLAV
+RISTIĆ ZAGORKA
+RISTIĆ ZDRAVKO
+RISTIĆ ZORAN
+RISTIĆ ZORAN
+RISTIN JOVAN
+RISTIN MIODRAG
+RISTIN MIODRAG
+RISTIVOJEVIĆ ANĐELKA
+RISTIVOJEVIĆ ANICA
+RISTIVOJEVIĆ DESIMIR
+RISTIVOJEVIĆ IGNJAT
+RISTIVOJEVIĆ RADOMIR
+RISTIVOJEVIĆ RATOMIR
+RISTIVOJEVIĆ STOJANKA
+RISTIVOJEVIĆ ZDRAVKO
+RISTOVIĆ JOVANKA
+RISTOVIĆ NEBOJŠA
+RISTOVIĆ RADIVOJE
+RISTOVIĆ RATKO
+RISTOVSKI ALEKSANDAR
+RISTOVSKI KOSTA
+RISTOVSKI LJILJANA
+RISTOVSKI LJILJANA
+RISTOVSKI LJUBO
+RISTOVSKI SIMEON
+RITER ANKICA
+RITER ANTON
+RITER FRANJA
+RITER JOŽEF
+RITER LUDVIG
+RITER NADA
+RITOC GEZA
+RITTER ŠANDOR
+RIVIĆ IVO
+RIZNIĆ BRANISLAVA
+RIZNIĆ VELJKO
+RIZNIĆ VELJKO
+RIZOVSKI DRAGO
+RIZVAN ŠUKRI
+RIZVANOVIĆ SADIK
+RMUŠ ZORICA
+RNIĆ MIHAILO
+RNJAK DANICA
+RNJAK STANKO
+ROŠIN KSENIJA
+ROŠIN ZORKO
+ROŠU KOSTA
+ROŠULJ ŽIVAN
+ROŠULJ ŽIVA
+ROŠULJ ANĐELKA
+ROŠULJ EMIL
+ROŠULJ LAZAR
+ROŠULJ MILANA
+ROŠULJ MILORAD
+ROŠULJ RADOVAN
+ROŠULJ SVETOZAR
+ROŠULJ ZORAN
+ROŠULJA VASA
+ROŠULOV STADOJE
+ROŽA BELA
+ROŽA FERENC
+ROŽA JANOŠ
+ROŽA JOVAN
+ROŽA MIRKO
+ROŽANKOVIĆ IVAN
+ROĐAK FRANJA
+ROĐENKOV ŽIVOJIN
+ROĐENKOV ĐURA
+ROĐENKOV MILOŠ
+ROBOTIĆ ANA
+ROBOTIĆ TEREZA
+ROD DANICA
+RODIĆ ČEDOMIR
+RODIĆ ČEDOMIR
+RODIĆ ŠPIRO
+RODIĆ ĐORĐE
+RODIĆ ALEKSANDAR
+RODIĆ ANDRIJA
+RODIĆ BOŽO
+RODIĆ BOŽO
+RODIĆ BOGDAN
+RODIĆ BORISLAV
+RODIĆ BORISLAV
+RODIĆ BRANISLAV
+RODIĆ DANICA
+RODIĆ DRAGAN
+RODIĆ DRAGOMIR
+RODIĆ DUŠAN
+RODIĆ DUŠAN
+RODIĆ DUŠAN
+RODIĆ DUŠAN
+RODIĆ GOJKO
+RODIĆ GOJKO
+RODIĆ GOJKO
+RODIĆ JELISAVETA
+RODIĆ JOVO
+RODIĆ LEPA
+RODIĆ LJILJANA
+RODIĆ MANOJLO
+RODIĆ MIĆA
+RODIĆ MIĆO
+RODIĆ MILAN
+RODIĆ MILENA
+RODIĆ MILICA
+RODIĆ MILICA
+RODIĆ MILKA
+RODIĆ MILOŠ
+RODIĆ MILORAD
+RODIĆ MIRKO
+RODIĆ MIROSLAV
+RODIĆ NATALIJA
+RODIĆ NEĐO
+RODIĆ NEDELJKO
+RODIĆ NIKOLA
+RODIĆ NIKOLA
+RODIĆ NIKOLA
+RODIĆ NIKOLA
+RODIĆ OLGA
+RODIĆ PETAR DIPL ING
+RODIĆ PETAR
+RODIĆ PETRA
+RODIĆ RADE
+RODIĆ RANKO
+RODIĆ SLAVKO
+RODIĆ SMILJA
+RODIĆ SRETEN
+RODIĆ STANKO
+RODIĆ STEVAN
+RODIĆ SUZANA
+RODIĆ SUZANA
+RODIĆ SVETKO
+RODIĆ-TOMLJANOVIĆ MIRJANA
+RODIĆ VERICA
+RODIĆ ZORAN
+ROGAČ SVETLANA
+ROGAČ SVETOZAR
+ROGAČEVIĆ OBRAD
+ROGALJSKI JELENA
+ROGALO ANTON
+ROGAN SVETOZAR
+ROGANOVIĆ KATARINA
+ROGANOVIĆ LUKA
+ROGANOVIĆ MILANKA
+ROGANOVIĆ NADA
+ROGANOVIĆ NOVAK
+ROGANOVIĆ SLOBODAN
+ROGANOVIĆ STEVO
+ROGANOVIĆ TANJA
+ROGANOVIĆ VELIZAR
+ROGAVAC MILAN
+ROGIĆ ALEKSA
+ROGIĆ MILORAD
+ROGIĆ SAVA
+ROGIĆ VELJKO
+ROGIĆ VESELIN
+ROGIĆ VESNA
+ROGIĆ ZORAN
+ROGLIĆ IVAN
+ROGLIĆ LJUBOMIR
+ROGLIĆ MILAN
+ROGLIĆ VESNA
+ROGLIĆ VESNA
+ROGOŽARSKI STEVANKA
+ROGULIĆ JELENA
+ROGULJA ĐORĐE
+ROGULJA ILIJA
+ROGULJA JOVAN
+ROGULJA NIKOLA
+ROGULJA PAVLE DR
+ROGULJIĆ MILORAD
+ROGULJIĆ NEDELJKO
+ROGULJIĆ PREDRAG
+ROGULJIĆ ZDRAVKO
+ROJKA ANDREJ
+ROJKA ANDREJ
+ROJNIK LJUBOMIR
+ROKA ŽUŽANA
+ROKA JANOŠ
+ROKA VALERIJA
+ROKAI PETAR
+ROKIĆ DUŠAN
+ROKIĆ MILENKO
+ROKLICER FRANJA
+ROKLICER JOSIP
+ROKNIĆ JULKICA
+ROKNIĆ MILENKO
+ROKNIĆ MOMČILO
+ROKSANDIĆ ADAM
+ROKSANDIĆ MILAN
+ROKSANDIĆ SIMA
+ROKSANDIĆ VLADIMIR
+ROKSANDIĆ VLADO
+ROKSIĆ SLOBODAN
+ROKVIĆ BOGDAN
+ROKVIĆ BRANISLAV
+ROKVIĆ DUŠAN
+ROKVIĆ GOJKO
+ROKVIĆ LAZAR
+ROKVIĆ MARKO
+ROKVIĆ MILAN
+ROKVIĆ MILICA
+ROKVIĆ MILORAD
+ROKVIĆ NIKOLA DIPL POLITIKOLOG
+ROKVIĆ OMILJKO
+ROKVIĆ RADIVOJ
+ROKVIĆ RADOJKA
+ROKVIĆ RANKO
+ROKVIĆ SINIŠA
+ROKVIĆ VESELKO
+ROKVIĆ ZDRAVKO
+ROLAND TOMISLAV
+ROLOVIĆ DUŠANKA
+ROLOVIĆ OLGA
+ROM BRANKA
+ROMČEV MIROSLAV
+ROMAN JELENA
+ROMAN LJUBICA
+ROMAN MINEA
+ROMAN MIRON
+ROMAN ROMKO
+ROMANDIĆ ANKICA
+ROMANDIĆ JELENA
+ROMANDIĆ STANIMIR
+ROMANELI GINO
+ROMANIĆ DUŠAN
+ROMANIĆ ERŽEBET
+ROMANIĆ JOC0
+ROMANIĆ MARIJA
+ROMANKIV MIHAJLO
+ROMANOV JOSIP
+ROMANOV SNEŽANA
+ROMANOVIĆ ĐORĐE DIPL PRAVNIK
+ROMANOVIĆ ĐORĐE
+ROMANOVIĆ ALEKSANDAR
+ROMANOVIĆ ILINKA
+ROMANOVIĆ MILAN
+ROMANOVIĆ NADA
+ROMAS JOSIP
+ROMIĆ ETA
+ROMIĆ JANKO
+ROMIĆ LJUBOMIR
+ROMIĆ LJUBOMIR
+ROMIĆ MLADEN
+ROMIĆ NENAD
+ROMIĆ PAVLE
+ROMIĆ PREDRAG
+ROMODA IŠTVAN
+ROMODA KARLO
+ROMODA MARIJA
+RONČELI KATICA
+RONČEVIĆ BOGDAN
+RONČEVIĆ DRAGAN
+RONČEVIĆ IKONIJA
+RONČEVIĆ KOSTA
+RONČEVIĆ MILE
+RONČEVIĆ NADA
+RONČEVIĆ OBRAD
+RONČEVIĆ PETAR
+RONČEVIĆ PETAR
+RONČEVIĆ PETAR
+RONČEVIĆ RADIVOJE
+RONČEVIĆ SAVETA
+RONČEVIĆ SAVO
+RONČEVIĆ STANA
+RONČEVIĆ STANIMIR
+RONČEVIĆ STANIMIR
+RONČEVIĆ STEVAN
+RONČEVIĆ STEVAN
+RONČEVIĆ VERA
+RONAI MIRKO DIPL ING
+RONTO FRANCIŠKA
+RONTO ILONKA
+RONTO JAKOB
+RONTOVIĆ RADOSLAV
+ROR DESA
+RORBAHER MAGDOLNA
+ROSIĆ ĐURO
+ROSIĆ BOGDAN
+ROSIĆ DRAGANA
+ROSIĆ DRAGAN
+ROSIĆ DRAGAN
+ROSIĆ DRAGAN
+ROSIĆ DRAGAN
+ROSIĆ DUŠAN
+ROSIĆ GROZDANA
+ROSIĆ ILIJA
+ROSIĆ LJILJANA
+ROSIĆ MILENA
+ROSIĆ MILICA
+ROSIĆ MILORAD
+ROSIĆ MIODRAG
+ROSIĆ NIKOLA
+ROSIĆ OSTOJA
+ROSIĆ VLADIMIR
+ROSIĆ ZORAN
+ROSLAVLJEV VOJISLAV
+ROSO IVAN
+ROSO MARTA
+ROT DEZIDER
+ROT FRANJA
+ROTARIU TIBERIJE
+ROTBART VLADISLAV
+ROTIM IVAN
+ROVČANIN EUĐENIJA
+ROVČANIN UZEIR
+ROVČANIN VESELIN
+ROVIĆ BRANISLAV
+ROVIĆ DIMITRIJE
+ROVO MIHALJ
+ROZENTAL DRAGICA
+ROZENTAL KARLO
+ROZENTAL MARTON
+ROZIĆ ANTE
+ROZMARING IŠTVAN
+ROZMIROV DRAGAN
+ROZMIROV MILENKO
+RUŠITI ALIJA
+RUŠKO ERŽEBET
+RUŠKUC ĐORĐE
+RUŠKUC ATANASIJE
+RUŠKUC MARGARITA
+RUŠKUC MARTA
+RUŠKUC PAVLE
+RUŠKUC STEVAN
+RUŠKUC SVETISLAV
+RUŠKUC VESELIN
+RUŠKUC VLADIMIR
+RUŽANOVIĆ DRAGOLJUB
+RUŽANOVIĆ MARIJA
+RUŽIČIĆ ĐORĐE
+RUŽIČIĆ BOŠKO
+RUŽIČIĆ MILAN
+RUŽIČIN DANICA
+RUŽIČIN RADIVOJ
+RUŽIČKA ĐURA
+RUŽIČKA RUŽA
+RUŽIĆ ŽARKO
+RUŽIĆ ALEKSANDAR
+RUŽIĆ DRAŽANA
+RUŽIĆ DUŠAN
+RUŽIĆ DUŠAN
+RUŽIĆ DUŠAN
+RUŽIĆ EMA
+RUŽIĆ GORDANA
+RUŽIĆ IVICA
+RUŽIĆ JOVAN
+RUŽIĆ JOVO
+RUŽIĆ JULKA
+RUŽIĆ KRSTO
+RUŽIĆ MARIJA
+RUŽIĆ MARIJA
+RUŽIĆ MILAN
+RUŽIĆ MILAN
+RUŽIĆ MILIVOJ
+RUŽIĆ MIRA
+RUŽIĆ MIRJANA
+RUŽIĆ MIRJANA
+RUŽIĆ MIRKO
+RUŽIĆ NIKOLA
+RUŽIĆ NIKOLA
+RUŽIĆ PAVA
+RUŽIĆ PETAR
+RUŽIĆ RADMILA
+RUŽIĆ RADOMIR
+RUŽIĆ SLOBODAN
+RUŽIĆ SMILJANA
+RUŽIĆ STANKO
+RUŽIĆ-STARI VESNA
+RUŽIĆ STJEPAN
+RUŽIĆ SVETOLIK
+RUŽIĆ VELJKO
+RUŽIĆ VLADIMIR DIPL ING
+RUŽIĆ ZORAN
+RUŽIĆ ZORAN
+RUŽIN ČEDOMIR
+RUŽIN MILORAD
+RUŽNICKI IVAN
+RUĐA NEMANJA
+RUĐA ZORAN
+RUĐA ZORAN
+RUBEŽIĆ MILOVAN
+RUBEŽIĆ SLOBODAN
+RUBIN MILAN
+RUBUŠ AGNEZA
+RUBUŠ JOŽEF
+RUDAN MARKO
+RUDAN RADIVOJE
+RUDEŽ ILIJA
+RUDEŽ MIĆO
+RUDEŽ PERA
+RUDEK JAROSLAV
+RUDEK NIKOLA
+RUDEK NIKOLA
+RUDIĆ DARKO
+RUDIĆ DIMITRIJE
+RUDIĆ DRAGAN
+RUDIĆ DUŠAN
+RUDIĆ IMRE
+RUDIĆ IVAN
+RUDIĆ IVAN
+RUDIĆ JOSIP
+RUDIĆ LAZAR
+RUDIĆ MARKO
+RUDIĆ MARKO
+RUDIĆ MILKA
+RUDIĆ NEDELJKO
+RUDIĆ NIKOLA
+RUDIĆ PERA
+RUDIĆ STEVAN
+RUDIĆ STEVICA
+RUDIĆ-VRANIĆ NEDELJKA
+RUDOLF KLAJN
+RUDOLF OLGA
+RUDOLF SPASOJE
+RUDOLF ZORAN
+RUDOVIĆ DANILO
+RUDOVIĆ ILIJA
+RUDOVIĆ JUGOSLAV
+RUDOVIĆ MIRJANA
+RUDOVIĆ ZORAN
+RUFČESKI SLOBODAN
+RUJEVIĆ JADRANKA
+RUJEVIĆ MILEVA
+RUKAVINA-ŠLIBAR HERMINA
+RUKAVINA ALEKSANDAR
+RUKAVINA BARICA
+RUKAVINA DESPINA
+RUKAVINA DOBRILA
+RUKAVINA DUŠAN
+RUKAVINA JURE
+RUKAVINA KREŠIMIR
+RUKAVINA LJUBICA
+RUKAVINA MARIJA
+RUKAVINA MILKA
+RUKAVINA RUDOLF
+RUKAVINA RUDOLF
+RUKAVINA STEVAN
+RUKAVINA ZVONIMIR
+RUMAN MIHAJLO
+RUNIĆ MARIJA
+RUNIĆ MILAN DIPL ING
+RUNJAJIĆ ILIJA
+RUNJANIN ĐORĐE
+RUNJANIN VLADISLAV
+RUNJANIN VOJO
+RUNJIĆ AMALIJA
+RUNJIĆ DRAGAN
+RUNJIĆ DRAGICA
+RUNJIĆ GAVRILO
+RUNJIĆ GORAN
+RUNJO JOVAN
+RUNTIĆ BOŠKO
+RUPČIĆ VLADIMIR
+RUPA ATILA
+RUPAR BRANISLAV
+RUPAR ERŽEBET
+RUPIĆ ŽIVKO
+RUPNJAK BRANISLAV
+RUS ĐURĐINKA
+RUS DRAGAN
+RUS IVANKA
+RUS JOSIP
+RUS MARGITA
+RUS MARIJA
+RUS MILOSAVA
+RUS RADA
+RUS SLAVICA
+RUS SMILJA
+RUS SVETLANA
+RUS VERA
+RUS VUKOSAVA
+RUSIĆ ANDRIJA
+RUSKAJI SLAVOMIR
+RUSKI DIMITRIJE
+RUSKI LAZAR
+RUSKOVSKI ĐORĐE
+RUSKOVSKI DRAGICA
+RUSKOVSKI MAGDALENA
+RUSMIR RADMILA
+RUSMIROVIĆ BILJANA
+RUSMIROVIĆ BILJANA
+RUSOV ŽARKO
+RUSOV ŽIVKA
+RUSOV BRANKA
+RUSOV BRANKO
+RUSOV DRENKA
+RUSOV KATICA
+RUSOV KOSTA
+RUSOV KRISTINA
+RUSOV MARIJA
+RUSOV MILAN
+RUSOV MILORAD
+RUSOV NADA
+RUSOV PAVLE
+RUSOV SLOBODAN
+RUSOV VLADIMIR
+RUSOVAN ŽIVICA
+RUSOVAN DRAGOLJUB
+RUSOVAN MILAN
+RUSOVAN MILAN
+RUSTEMAGIĆ ERVIN
+RUSTEMI ŠABAN
+RUTEŠIĆ JOVICA
+RUTIĆ MILORAD
+RUTONIĆ JULKICA
+RUTONIĆ-KOLENDA VIDOSAVA
+RUTONIĆ LAZAR
+RUTONIĆ LAZAR
+RUTONJSKI DUŠAN
+RUTONJSKI JELICA
+RUTONJSKI JOVANKA
+RUTONJSKI NADA
+RUTONJSKI SLOBODAN
+RUTONJSKI VASA
+RUTONSKI ĐORĐE
+RUTOVIĆ BOŠKO
+SAČEK MIROSLAV
+SAČER ROKI
+SAČIĆ MARIJA
+SABADI LASLO
+SABADI MIRJANA
+SABADKA ŠANDOR
+SABADKA ILONKA
+SABADKA VALERIJA
+SABADOŠ ŠANDOR
+SABADOŠ ĐURA
+SABADOŠ IVAN
+SABADOŠ JANKO
+SABADOŠ JANKO
+SABADOŠ JANKO
+SABADOŠ JOAKIM
+SABADOŠ LJUBOMIR
+SABADOŠ MIŠA
+SABADOŠ MIHAJLO
+SABADOŠ MIHAJLO
+SABADOŠ MIROSLAV
+SABADOŠ PAVLINA
+SABADOŠ RUŽICA
+SABADOŠ SLAVNA
+SABADOŠ SLAVOMIR
+SABADOŠ SRBISLAV
+SABADOŠ STEVAN
+SABADOŠ VLADIMIR
+SABADOŠ VLADIMIR
+SABADOŠ ZDENKA
+SABADUŠ JOVAN DIPL ING
+SABADUŠ STEVAN
+SABATKA STEVAN
+SABATUŠ BORISLAV
+SABATUŠ DRAGOLJUB
+SABATUŠ TOMISLAV
+SABLIĆ BRANKO
+SABLJAK DRAGAN
+SABLJAK FRANJO
+SABLJAK MARIJAN
+SABLJAKOVIĆ ESAD
+SABLJAR ĐORĐE
+SABLJAR MANOJLO
+SABLJAR MILAN
+SABLJAR TEODOR
+SABLJAREVIĆ VERICA
+SABLJIĆ DANILO DIPL PRAVNIK
+SABLJIĆ DARA
+SABLJIĆ GORDANA
+SABLJOV IŠTVAN
+SABLJOV MILICA
+SABO ŠANDOR
+SABO ŠANJIKA
+SABO ĐEZE
+SABO ĐORĐE
+SABO ĐORĐE
+SABO ALEKSANDAR
+SABO ALEKSANDAR
+SABO ANA DR
+SABO ANA
+SABO ANA
+SABO ANDRAŠ
+SABO ANDRAŠ
+SABO ANICA
+SABO ANICA
+SABO BERTALAN
+SABO DRAGAN
+SABO ELIZABETA
+SABO EMIL
+SABO ERŽEBET
+SABO ERŽEBET
+SABO ERNE
+SABO ERNE
+SABO ESTER
+SABO FERENC
+SABO FERENC
+SABO FRANJA
+SABO FRANJA
+SABO FRANJO
+SABO GAŠPAR
+SABO GABOR
+SABO GERGELJ
+SABO GIZELA
+SABO GORDANA
+SABO HILDA
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IŠTVAN
+SABO IBOLJKA
+SABO IDA
+SABO ILONA
+SABO IMRE
+SABO IMRE
+SABO IVAN
+SABO JANIKA
+SABO JANOŠ
+SABO JOSIP
+SABO JOSIP
+SABO JOSIP
+SABO JOSIP
+SABO JOSIP
+SABO JOSIP
+SABO JULIA
+SABO JULIJANA
+SABO KAROLINA
+SABO KATICA
+SABO KATICA
+SABO LADISLAV
+SABO LADISLAV
+SABO LADISLAV
+SABO LJUBOMIR
+SABO MARIJA
+SABO MARTA
+SABO MIHAJLO
+SABO MILICA
+SABO NIKOLA
+SABO OLIVERA
+SABO PAVLE
+SABO PETAR
+SABO PETAR
+SABO PETAR
+SABO PIŠTA
+SABO ROZALIJA
+SABO SNIJEŽANA
+SABO STEVAN
+SABO TEREZIJA
+SABO TIBOR
+SABO VALERIJA
+SABO ZOLTAN
+SABO ZOLTAN
+SABOŠOTI FABIJAN
+SABOL JAROSLAV
+SABOL JELENA
+SABOLČKI ANDRIJA
+SABOLČKI ANDRIJA
+SABOLČKI ANDRIJA
+SABOLČKI ZOLTAN
+SABOLOVIĆ BORIS
+SABOV BORIVOJE
+SABOVLJEVIĆ RADOVAN
+SADŽAK LJUBICA
+SADŽAKOV DRAGOMIR
+SADŽAKOV DUŠANKA
+SADŽAKOV MIROSLAV
+SADŽAKOV OLGA
+SADŽAKOV PETAR
+SADŽAKOV RADOVAN
+SADŽAKOV RADOVAN
+SADŽAKOV VIDOSAVA
+SADŽAKOV ZORAN
+SADIĆ RADIVOJ
+SADIKU SADIK
+SAITOV ŠAHIM
+SAJFERT ĐULA
+SAJFERT JOHAN
+SAJFERT LJUBIŠA
+SAJFERT LJUBIŠA
+SAJFERT MARGIT
+SAJFERT MARIJA
+SAJIĆ MILIVOJE
+SAJKO BRANKA
+SAJKO IŠTVAN
+SAJKO MARGITA
+SAJKO RUŽICA
+SAJKO ZOLTAN
+SAJLER FERENC
+SAJTOVIĆ DRAGINJA
+SAKAČ BORISLAV LEKAR
+SAKAČ FERENC
+SAKAČ IŠTVAN
+SAKAČ JANKO
+SAKAČ JANKO
+SAKAČ JOVAN
+SAKAČ JULIJANA
+SAKAČ JULIJAN
+SAKAČ LJUDEVIT
+SAKAČ MAGDA
+SAKAČ MARIJA
+SAKAČ MIHAILO
+SAKAČ SIMA
+SAKAČ SVETLANA
+SAKAČ VASILIJE
+SAKAČ VLADIMIR ADVOKAT
+SAKAČ VLADIMIR
+SAKAČ VLADIMIR
+SAKAL ADELA
+SAKAL AUGUSTINA
+SAKAL GABOR
+SAKAL JOŽEF
+SAKAL MARIJA
+SAKAL MARIJA
+SAKALAŠ OTO
+SAKAN DALIBOR
+SAKOVIĆ ALIJA
+SAKOVIĆ STOJAN
+SAKULSKI MILAN
+SALAČ ĐURO
+SALAG EVGENIJE
+SALAG JANKO
+SALAG LJUBA
+SALAI ERŽEBET
+SALAI ESTER
+SALAI-GOMBAR RUŽA
+SALAI IŠTVAN NOVINAR
+SALAI JELISAVETA
+SALAI LADISLAV
+SALAI LASLO
+SALAJ FRANJO
+SALAJ JANKO
+SALAJ JOŽEF
+SALAJ MIRJANA
+SALAJ RUDOLF
+SALAK JANKO
+SALAK VLADIMIR
+SALAK VLADIMIR
+SALAMUN ANA
+SALAMUN BOSILJKA
+SALAMUN ILIJA
+SALAMUN JANKO
+SALAMUN JOAKIM
+SALAMUN JOAKIM
+SALAMUN NATALIJA
+SALAMUN SILVESTER
+SALAMUN VLADIMIR
+SALAPURA MILE
+SALAPURA NEDELJKO
+SALAPURA PETAR
+SALATIĆ MILOVAN
+SALATIĆ PETAR MR OEC
+SALATIĆ VELIMIR
+SALDUM VIDA
+SALETA ANTUN
+SALIĆ MILAN
+SALIBEGOVIĆ MUSTAFA
+SALIHOVIĆ ISMET
+SALIJA SEFER
+SALIJEVIĆ ŠEĆERIJA
+SALKAI ILONA
+SALKAI LASLO
+SALMA ŠANDOR
+SALMA GEZA
+SALMA JOŽEF PROF DR
+SALMA JOSIP
+SALMA PETAR
+SALMA TIBOR
+SALMA TIBOR
+SALOCKI STEVAN
+SALONSKI BOŽIDAR
+SALONSKI JELENA
+SALONSKI MILORAD
+SALONSKI MIRJANA
+SALONSKI MIROSLAV
+SALONSKI RUŽA
+SALONTAI JULIJANA
+SALOPEK BRANKO
+SALOV JOVAN
+SAMAC IVANKA
+SAMAC MIRKO
+SAMARĐIĆ BRANISLAVA
+SAMARDŽIĆ ŽARKO
+SAMARDŽIĆ ADAM
+SAMARDŽIĆ BOŠKO
+SAMARDŽIĆ BOŠKO
+SAMARDŽIĆ BORA
+SAMARDŽIĆ BORA
+SAMARDŽIĆ BRANISLAV
+SAMARDŽIĆ BRANKO
+SAMARDŽIĆ DANILO
+SAMARDŽIĆ DANILO
+SAMARDŽIĆ DESA
+SAMARDŽIĆ DRAGAN
+SAMARDŽIĆ DUŠAN
+SAMARDŽIĆ GOJKO
+SAMARDŽIĆ ILIJA
+SAMARDŽIĆ IVAN
+SAMARDŽIĆ KRSTA
+SAMARDŽIĆ LJUBO
+SAMARDŽIĆ MILAN
+SAMARDŽIĆ MILIJA
+SAMARDŽIĆ MILOŠ
+SAMARDŽIĆ MILOŠ
+SAMARDŽIĆ MILOJKO
+SAMARDŽIĆ MILORAD
+SAMARDŽIĆ MILOSAV
+SAMARDŽIĆ MIODRAG
+SAMARDŽIĆ MIRA
+SAMARDŽIĆ NEĐA
+SAMARDŽIĆ NOVICA
+SAMARDŽIĆ OLGA
+SAMARDŽIĆ OSTOJA
+SAMARDŽIĆ RADOJKA
+SAMARDŽIĆ RADOSLAV
+SAMARDŽIĆ RADOVAN
+SAMARDŽIĆ RAJKO
+SAMARDŽIĆ RATKO
+SAMARDŽIĆ ROZINA
+SAMARDŽIĆ SAVKA
+SAMARDŽIĆ SAVO
+SAMARDŽIĆ SPOMENKA
+SAMARDŽIĆ SRETEN
+SAMARDŽIĆ SRETEN
+SAMARDŽIĆ-STANIŠIĆ MILANKA
+SAMARDŽIĆ SVETLANA
+SAMARDŽIĆ VASILIJA
+SAMARDŽIĆ VASO
+SAMARDŽIĆ VELIMIR
+SAMARDŽIĆ VLADO
+SAMARDŽIĆ VUKAŠIN
+SAMARDŽIĆ ZDRAVKO
+SAMARDŽIĆ ZORAN
+SAMARDŽIĆ ZUZANA
+SAMARDŽIJA ĐURĐINKA
+SAMARDŽIJA ĐURAĐ
+SAMARDŽIJA ĐURA
+SAMARDŽIJA BOŠKO
+SAMARDŽIJA DESA
+SAMARDŽIJA DUŠAN
+SAMARDŽIJA GORICA
+SAMARDŽIJA JELENA
+SAMARDŽIJA LJUBICA
+SAMARDŽIJA LJUBICA
+SAMARDŽIJA MARIJA
+SAMARDŽIJA MARIJA
+SAMARDŽIJA MILANKA
+SAMARDŽIJA MILAN
+SAMARDŽIJA MILAN
+SAMARDŽIJA MILE
+SAMARDŽIJA MIRKO
+SAMARDŽIJA MIROSLAV
+SAMARDŽIJA NEBOJŠA
+SAMARDŽIJA NOVICA
+SAMARDŽIJA PETAR
+SAMARDŽIJA RADE
+SAMARDŽIJA RADE
+SAMARDŽIJA RANKO
+SAMARDŽIJA STOJAN
+SAMARDŽIJEVIĆ MIROSLAV
+SAMBRAILO BRUNO
+SAMEC BOŽENKA
+SAMII ABBAS
+SAMOČETA ALEKSANDRA
+SAMOČETA MILE
+SAMOČETA NEVENKA
+SAMOČETA RADOMIR
+SAMOJLIK NIKOLA
+SAMOKOVLIJA MARKO
+SAMOLOV VELJKO
+SAMOLOVČEV IVANKA
+SAMSONOV NIKOLA DIPL ING
+SANČANIN MILIVOJ
+SANADER ŽIVKO
+SANADER ŽIVKO
+SANADER JELENA
+SANADER RADOVAN
+SANADER SLOBODAN
+SANADER VERA
+SANDIĆ BRANIMIR
+SANDIĆ IVAN
+SANDIĆ SVETLANA
+SANDIKI APOSTOL
+SANDIKI KOSTA
+SANDIKI KOSTA
+SANKOVIĆ BORKO
+SANKOVIĆ LJUBINKA
+SANKOVIĆ MILORAD
+SANKOVIĆ MIRA
+SANKOVIĆ PETAR
+SANKOVIĆ SABINA
+SANKOVIĆ SVETOZAR
+SANTAI ILONA
+SANTO FRANJA
+SANTO KAROLJ
+SANTO LADISLAV DIPL ING
+SANTO ZOLTAN
+SANTO ZOLTAN
+SANTOVAC DRAGAN
+SANTOVAC LJUBINKA
+SANTOVAC MILOŠ
+SANTOVAC PETAR
+SANTOVAC STEVAN
+SANTRAČ ĐURĐINKA
+SANTRAČ DRAGOLJUB
+SANTRAČ GORDANA
+SANTRAČ MILAN
+SANTRAČ MILORAD
+SANTRAČ MOMČILO
+SANTRAČ NIKOLA
+SANTRAČ RATKO
+SANTRAČ SAVO
+SANTRAČ SLAVKO
+SAPUNDŽIĆ-MATIĆ MIRJANA
+SAPUNDŽIĆ MILAN
+SAPUNDŽIĆ MIRA
+SAPUNDŽIĆ TATJANA
+SAPUNDŽIJA ERŽEBET
+SAPUNDŽIJA MARIJA
+SARČEV NADICA
+SARČEV RADIVOJ
+SARAČEVIĆ SRBOLJUB
+SARAFIJANOVIĆ NIKOLA
+SARAJLIJA DRAGOMIR
+SARAMANDIĆ MOMIR
+SARAMANDIĆ NEDELJKO
+SARANDA VASILJKA
+SARAPKA KATICA
+SARATLIĆ MILAN
+SARATLIĆ SRBOLJUB
+SARAVOLAC LAZAR VETERINAR
+SARAVOLAC MAGDALENA
+SARAVOLAC MIRJANA
+SARAVOLAC MIRJANA
+SARAVOLAC SINIŠA DR
+SARAVOLAC SLAVKO
+SARAVOLAC SVETLANA
+SARIĆ ĐURA
+SARIĆ DANILO
+SARIĆ IVAN
+SARIĆ LEPOSAVA
+SARIĆ MARINKO
+SARIĆ MILOŠ
+SARIĆ MILOJE DR
+SARIĆ RADOŠ
+SARIĆ RATKO
+SARIĆ TIBOR
+SARIĆ VOJIN
+SARIKAS SNEŽANA
+SARIKAS VASILIJE
+SARKA ARPAD
+SARKA MIHALJ
+SARKOTIĆ FRANJA
+SARMEŠ MARIJA DIPL PRAVNIK
+SAROV LAZAR
+SARVAŠ ŠANDOR
+SARVAŠ JANOŠ
+SARVAK ALEKSA
+SARVAN DRAGOLJUB
+SARVAN VJERA
+SAS JENE
+SASIK BORISLAV
+SATARIĆ BRANISLAV
+SATARIĆ MILJKO DR
+SATKANOVIĆ HABIB
+SAUER JELICA
+SAUER MARGITA
+SAUER PAVLE
+SAUER ROSA
+SAUER SMILJANA
+SAUSMAN LASLO
+SAUZER FRANJO
+SAVČIĆ DRAGAN
+SAVČIĆ MILANA
+SAVČIĆ MILIVOJE
+SAVČIĆ MILIVOJ
+SAVČIĆ MIROSLAV
+SAVČIĆ SLOBODAN
+SAVA FRANJA
+SAVANOVIĆ BRANKO
+SAVANOVIĆ DRAGOLJUB
+SAVANOVIĆ DUŠAN
+SAVANOVIĆ JOVAN
+SAVANOVIĆ JOVO
+SAVANOVIĆ LJUBOMIR
+SAVANOVIĆ MARICA
+SAVANOVIĆ MARINKO
+SAVANOVIĆ MILAN
+SAVANOVIĆ MILOŠ
+SAVANOVIĆ MIRKO
+SAVANOVIĆ NENAD
+SAVANOVIĆ SNEŽANA
+SAVANOVIĆ STOJAN
+SAVANOVIĆ ZDRAVKA
+SAVATIĆ DRAGOMIR
+SAVATIĆ VLADIMIR
+SAVATOVIĆ BOSILJKA
+SAVATOVIĆ DRAGAN
+SAVATOVIĆ DUŠAN
+SAVATOVIĆ RADOVAN
+SAVELJIĆ ČEDOMIR
+SAVELJIĆ DUŠAN
+SAVELJIĆ MARIJA
+SAVELJIĆ SVETLANA
+SAVELJIĆ VELJKO
+SAVESKI MILČO
+SAVESKI ZORAN
+SAVIČEVIĆ GOJKO
+SAVIČIĆ GOJKO
+SAVIČIĆ STOJAN
+SAVIČIN LJUBICA
+SAVIĆ ČEDOMIR
+SAVIĆ ČEDO
+SAVIĆ ĆETKO
+SAVIĆ ŽIVKA
+SAVIĆ ŽIVKA
+SAVIĆ ĐOKA
+SAVIĆ ĐORĐE DIPL ING
+SAVIĆ ĐORĐE
+SAVIĆ ĐURĐIJA
+SAVIĆ ALEKSANDRA
+SAVIĆ ALEKSA
+SAVIĆ ANĐELKA
+SAVIĆ ANĐELKA
+SAVIĆ ANA
+SAVIĆ ANDRIJA
+SAVIĆ ANDRIJA
+SAVIĆ ANGELINA
+SAVIĆ BLAGOJE
+SAVIĆ BLAGOJE
+SAVIĆ BOŽIDAR
+SAVIĆ BOŽIMIR DR
+SAVIĆ BOGDAN
+SAVIĆ BORISLAV
+SAVIĆ BRANISLAV
+SAVIĆ BRANISLAV
+SAVIĆ BRANISLAV
+SAVIĆ BRANKO
+SAVIĆ CVETANKA
+SAVIĆ CVETKO
+SAVIĆ DAMJAN DR LEKAR
+SAVIĆ DANICA
+SAVIĆ DARA
+SAVIĆ DEJAN
+SAVIĆ DESANKA
+SAVIĆ DESIMIR
+SAVIĆ DOBRILA
+SAVIĆ DRAGAN
+SAVIĆ DRAGAN
+SAVIĆ DRAGAN
+SAVIĆ DRAGAN
+SAVIĆ DRAGIŠA
+SAVIĆ DRAGOSLAV
+SAVIĆ DRAGO
+SAVIĆ DRAGUTIN
+SAVIĆ DRAGUTIN
+SAVIĆ DUŠANKA
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ DUŠAN
+SAVIĆ GEORGIJE
+SAVIĆ GLIGORIJE
+SAVIĆ GOJKO
+SAVIĆ GORAN
+SAVIĆ GOSTIMIR
+SAVIĆ GROZDANA
+SAVIĆ ILIJA
+SAVIĆ ILIJA
+SAVIĆ IVAN
+SAVIĆ JADRANKA
+SAVIĆ JELA
+SAVIĆ JELENA
+SAVIĆ JELENA
+SAVIĆ JELICA
+SAVIĆ JEVTO
+SAVIĆ JOVANKA
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ JOVAN
+SAVIĆ KATICA
+SAVIĆ KATICA
+SAVIĆ KOSTA
+SAVIĆ KSENIJA
+SAVIĆ LAZAR
+SAVIĆ LAZAR
+SAVIĆ LENKA DR
+SAVIĆ LJILJANA
+SAVIĆ LJILJANA
+SAVIĆ LJUBIŠA
+SAVIĆ LJUBICA
+SAVIĆ LJUBOMIR
+SAVIĆ LJUBOSLAV
+SAVIĆ LUKA
+SAVIĆ MARIJA
+SAVIĆ MARIJA
+SAVIĆ MARIJA
+SAVIĆ MARIJA
+SAVIĆ MARINA
+SAVIĆ MARINA
+SAVIĆ MARKO
+SAVIĆ MEDŽO
+SAVIĆ MIHAJLO
+SAVIĆ MILADIN
+SAVIĆ MILAN
+SAVIĆ MILAN
+SAVIĆ MILAN
+SAVIĆ MILAN
+SAVIĆ MILENA
+SAVIĆ MILENKO
+SAVIĆ MILENKO
+SAVIĆ MILENKO
+SAVIĆ MILIJANA
+SAVIĆ MILISAV
+SAVIĆ MILIVOJE
+SAVIĆ MILIVOJE
+SAVIĆ MILIVOJE
+SAVIĆ MILIVOJ
+SAVIĆ MILIVOJ
+SAVIĆ MILKO
+SAVIĆ MILOŠ DIPL ING
+SAVIĆ MILOŠ
+SAVIĆ MILOŠ
+SAVIĆ MILOŠ
+SAVIĆ MILOŠ
+SAVIĆ MILORAD
+SAVIĆ MILORAD
+SAVIĆ MILORAD
+SAVIĆ MILOSAVA
+SAVIĆ MILOSAV
+SAVIĆ MILOVAN
+SAVIĆ MILUTIN
+SAVIĆ MIODRAG
+SAVIĆ MIODRAG
+SAVIĆ MIRJANA
+SAVIĆ MIRKO
+SAVIĆ MIRKO
+SAVIĆ MIROSLAV
+SAVIĆ MIROSLAV
+SAVIĆ MIROSLAV
+SAVIĆ MIROSLAV
+SAVIĆ MLADEN
+SAVIĆ MOMČILO
+SAVIĆ NADA
+SAVIĆ NADEŽDA
+SAVIĆ NATAŠA
+SAVIĆ NEDELJKO
+SAVIĆ NEDELJKO
+SAVIĆ NEDELJKO
+SAVIĆ NEDELJKO
+SAVIĆ NENAD
+SAVIĆ NIKOLA
+SAVIĆ NIKOLA
+SAVIĆ NIKOLA
+SAVIĆ NIKOLA
+SAVIĆ NINOSLAV
+SAVIĆ NOVO
+SAVIĆ OLGA
+SAVIĆ OLIVERA
+SAVIĆ OLIVERA
+SAVIĆ PANTELIJA
+SAVIĆ PAVLE
+SAVIĆ PERA
+SAVIĆ PETAR
+SAVIĆ PETAR
+SAVIĆ PETAR
+SAVIĆ PETAR
+SAVIĆ PLANINKA
+SAVIĆ PREDRAG
+SAVIĆ PROKOPIJE
+SAVIĆ RADIŠA
+SAVIĆ RADIVOJE DIPL ING
+SAVIĆ RADMILA
+SAVIĆ RADMILA
+SAVIĆ RADMILA
+SAVIĆ RADOJICA
+SAVIĆ RADOMIR
+SAVIĆ RADOMIR
+SAVIĆ RADOVAN
+SAVIĆ RADOVAN
+SAVIĆ RAKIĆ
+SAVIĆ RATKO
+SAVIĆ RATKO
+SAVIĆ RELJA DR
+SAVIĆ RENATA
+SAVIĆ ROKSANDA
+SAVIĆ RUŽICA
+SAVIĆ SAŠA
+SAVIĆ SAVA ADVOKAT
+SAVIĆ SAVA
+SAVIĆ SAVA
+SAVIĆ SAVA
+SAVIĆ SIMEUN DIPL ING
+SAVIĆ SINIŠA
+SAVIĆ SLAVKO
+SAVIĆ SLAVOLJUB
+SAVIĆ SLAVOLJUB
+SAVIĆ SLOBODAN
+SAVIĆ SLOBODAN
+SAVIĆ SMILJA
+SAVIĆ SPASOJE
+SAVIĆ SPASOJE
+SAVIĆ SRĐAN
+SAVIĆ SRBISLAV
+SAVIĆ SRETA
+SAVIĆ STEVAN
+SAVIĆ STOJANKA
+SAVIĆ STOJAN
+SAVIĆ STOJAN
+SAVIĆ STOJAN
+SAVIĆ SVENKA
+SAVIĆ SVETOZAR
+SAVIĆ SVETOZAR
+SAVIĆ TATOMIR
+SAVIĆ TEODOR
+SAVIĆ TINKA
+SAVIĆ TODOR
+SAVIĆ TODOR
+SAVIĆ TODOR
+SAVIĆ TOMISLAV
+SAVIĆ UROŠ
+SAVIĆ VELJKO
+SAVIĆ VERICA
+SAVIĆ VERICA
+SAVIĆ VESNA
+SAVIĆ VIDOSAV
+SAVIĆ VITOMIR
+SAVIĆ VLADIMIR
+SAVIĆ VLADIMIR
+SAVIĆ VOJA
+SAVIĆ VUKAN
+SAVIĆ VUKOTA
+SAVIĆ ZORAN
+SAVIĆ ZORAN
+SAVIĆ ZORAN
+SAVIĆ ZORAN
+SAVIĆ ZORAN
+SAVIĆ ZORA
+SAVIN ŽIVKA
+SAVIN ŽIVKO
+SAVIN ĐORĐE
+SAVIN ĐURĐINKA
+SAVIN BERISLAV
+SAVIN BILJANA DR
+SAVIN BORA
+SAVIN DANICA
+SAVIN DRAGOLJUB
+SAVIN DRAGOMIR
+SAVIN DRENKA
+SAVIN DUŠAN
+SAVIN DUŠAN
+SAVIN JOVAN
+SAVIN JOVAN
+SAVIN JULKA
+SAVIN LASLO
+SAVIN LAZAR
+SAVIN LJUBINKA
+SAVIN MAGDA
+SAVIN MILEVA
+SAVIN MILICA
+SAVIN MILKA
+SAVIN MILORAD
+SAVIN MILORAD
+SAVIN MILOVAN
+SAVIN MIODRAG DIPL OEC
+SAVIN MIRJANA
+SAVIN MIRJANA
+SAVIN NIKOLA
+SAVIN PAVLE
+SAVIN PREDRAG
+SAVIN RADIVOJ
+SAVIN SAVA
+SAVIN SNEŽANA
+SAVIN SPIRIDON
+SAVIN STANA
+SAVIN TODOR
+SAVIN TODOR
+SAVIN VERICA
+SAVIN VUKOSAVA
+SAVIN ZORA
+SAVKELJIN STEVAN
+SAVKIĆ DUŠAN
+SAVKOV DRAGOLJUB
+SAVKOV ILIJA
+SAVKOV MILAN
+SAVKOV TODOR
+SAVKOV VERA
+SAVKOV VOJISLAV
+SAVKOV ZORAN
+SAVKOVIĆ ŽIVORAD
+SAVKOVIĆ JANJA
+SAVKOVIĆ MILUTIN
+SAVKOVIĆ MIRKO
+SAVKOVIĆ NEMANJA
+SAVKOVIĆ SAVA
+SAVKOVIĆ SAVO
+SAVKOVIĆ STAŠA
+SAVKOVIĆ TATJANA
+SAVKOVIĆ VUKA
+SAVKOVIĆ ZDRAVKO
+SAVOVIĆ DESANKA
+SAVOVIĆ FATIMA
+SAVOVIĆ LJUBO
+SAVOVIĆ LUKA
+SAVOVIĆ NENAD
+SAVOVIĆ RADE
+SAVU-MIHAJLOVIĆ SOFIJA
+SAVU TIBI
+SAVULJIĆ RADOMIR
+SAZDANIĆ ĐOKA
+SAZDANIĆ PAVLE
+SAZDANIĆ STEVAN
+SEČANSKI ĐORĐE
+SEČEN MILIVOJ
+SEČEN SVETOZAR DR
+SEČENJI IBOLJA
+SEČI IŠTVAN
+SEČIVANOVIĆ LEPŠA
+SEČIVANOVIĆ LEPŠA
+SEČIVANOVIĆ PAVLE
+SEČUJSKI ANDRIJA DIPL ING
+SEČUJSKI DANILO
+SEČUJSKI MLADEN
+SEČUJSKI RADIVOJ
+SEBASTIAN ERNE
+SEBASTIAN JOHANA
+SEBASTIJAN ZLATKO
+SEBELEDI PAVLE
+SEBENJI FERENC
+SEBENJI FRANJA
+SEBIŠANOVIĆ ĐORĐE
+SEBIŠANOVIĆ PAVLE
+SEDEJ JANEZ
+SEDER ALEKSANDAR
+SEDER IVICA
+SEDER SLAVKO
+SEDER VLADIMIR
+SEDERLAND ĐORĐE
+SEDLAČEK SARA
+SEDLAK ANDRAŠ
+SEDLAN ILIJA
+SEDLAN MANOJLO
+SEDLAN MIRKO DIPL ING
+SEDLAN RADOSLAV
+SEDLAN SAVA
+SEDLAR ILIJA
+SEDLAR MANE
+SEDLAR MILICA
+SEDLAR MILICA
+SEDLAR NADA
+SEDMAK DRAGAN
+SEDMAK VLADO
+SEFČIK ŽUŽANA
+SEFER MARIJA
+SEFER SAKIB
+SEFER SENAD
+SEFEROVIĆ SUAD
+SEG ŽUŽANA
+SEG IMRE
+SEGEDI BRANKA
+SEGEDI DIMITRIJE
+SEGEDI EVGENIJE
+SEGEDI IVICA
+SEGEDI JOSIP
+SEGEDI JOVAN
+SEGEDI JULIJAN
+SEGEDI KAROLJ
+SEGEDI-KOVAČEV BRANKA DR
+SEGEDI KSENIJA
+SEGEDI LEONA
+SEGEDI MARIJA
+SEGEDI MELITA
+SEGEDI MILENA
+SEGEDI SLAVICA
+SEGEDI STEVAN
+SEGEDI VLADIMIR
+SEGEDINAC DUŠKO
+SEGEDINAC NATALIJA
+SEGEDINAC ZDRAVKO
+SEGEDINSKI ARKADIJE
+SEGEDINSKI BOJKO
+SEGEDINSKI JULIJANA
+SEGEDINSKI NESTOR
+SEGEDINSKI SAVA
+SEGEDINSKI TOMA
+SEGEDINSKI VITOMIR
+SEGI LASLO
+SEGIĆ BORISLAV
+SEGIĆ RANKO
+SEIZOVIĆ DUŠANKA
+SEKAČ PETAR
+SEKE ARPAD
+SEKE EVA
+SEKE ILIJA
+SEKE JOSIP
+SEKE KATARINA
+SEKE STEVAN
+SEKE STEVAN
+SEKELJ JANI
+SEKELJ JOSIP
+SEKELJ MARIJA
+SEKELJ RUŽICA
+SEKEREŠ ŠANDOR
+SEKEREŠ ĐULA
+SEKEREŠ DENEŠ
+SEKEREŠ ETEL
+SEKEREŠ FERENC DR LEKAR
+SEKEREŠ FERENC
+SEKEREŠ IŠTVAN
+SEKEREŠ IŠTVAN
+SEKEREŠ IRENA
+SEKEREŠ JOŽEF
+SEKEREŠ JULIJANA
+SEKEREŠ JULIJA
+SEKEREŠ KAROLJ
+SEKEREŠ KATICA
+SEKEREŠ LAJOŠ DIPL ING
+SEKEREŠ NANDOR
+SEKEREŠ STEVAN
+SEKEREŠ TIBOR
+SEKEREŠ VERA
+SEKEREZOVIĆ MILAN
+SEKERIĆ STEVAN
+SEKERUŠ JELISAVETA
+SEKERUŠ LJUBICA
+SEKERUŠ MILKICA
+SEKERUŠ MIRJANA
+SEKERUŠ PAVLE
+SEKERUŠ PETAR
+SEKERUŠ STANISLAV
+SEKERUŠ VLADIMIR
+SEKICKI ALEKSANDAR
+SEKICKI EMILIJA
+SEKICKI ISIDOR
+SEKICKI LAZAR
+SEKICKI MARICA
+SEKICKI MILORAD
+SEKICKI PETAR
+SEKICKI VELJA
+SEKIZ ŽIVKO
+SEKIZ ILIJA
+SEKIZ JOVAN
+SEKIZ MELANIJA
+SEKIZ PETAR
+SEKIZ PETAR
+SEKIZ RADIVOJ
+SEKIZ SONJA
+SEKOŠAN LJUBICA
+SEKOŠAN MARINA
+SEKOL MILKA
+SEKOSKI JOMČE
+SEKOVSKI RADE
+SEKRENJ JOŽEF
+SEKULIĆ ČEDICA
+SEKULIĆ ČEDOMIR
+SEKULIĆ ŽARKO
+SEKULIĆ ŽIVKO
+SEKULIĆ ŽIVKO
+SEKULIĆ ŽIVOJIN DIPL ING
+SEKULIĆ ĐORĐE
+SEKULIĆ ĐORĐE
+SEKULIĆ ĐURĐICA
+SEKULIĆ ĐURAĐ
+SEKULIĆ ALEKSANDAR
+SEKULIĆ ALEKSANDAR
+SEKULIĆ ANĐELKA
+SEKULIĆ ARSENIJE
+SEKULIĆ BOŽIDAR DIPL ING
+SEKULIĆ BRANISLAV
+SEKULIĆ BRANISLAV
+SEKULIĆ BRANISLAV
+SEKULIĆ DANE
+SEKULIĆ DARINKA
+SEKULIĆ DARINKA
+SEKULIĆ DESANKA
+SEKULIĆ DESANKA
+SEKULIĆ DOSTA
+SEKULIĆ DRAGAN
+SEKULIĆ DRAGICA
+SEKULIĆ DRAGOLJUB
+SEKULIĆ DRAGOMIR
+SEKULIĆ DRAGOMIR
+SEKULIĆ DUŠAN
+SEKULIĆ DUŠAN
+SEKULIĆ DUŠAN
+SEKULIĆ DUŠAN
+SEKULIĆ ILIJA
+SEKULIĆ ILIJA
+SEKULIĆ IVAN
+SEKULIĆ IVAN
+SEKULIĆ KATICA
+SEKULIĆ LAZAR
+SEKULIĆ LJILJANA
+SEKULIĆ LJILJANA
+SEKULIĆ LJUBIŠA
+SEKULIĆ LJUBICA
+SEKULIĆ LJUBICA
+SEKULIĆ LJUBICA
+SEKULIĆ LJUBOMIR
+SEKULIĆ MARIJA
+SEKULIĆ MARIJA
+SEKULIĆ MARIJA
+SEKULIĆ MIĆO
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILAN
+SEKULIĆ MILENA
+SEKULIĆ MILENA
+SEKULIĆ MILIVOJE
+SEKULIĆ MILJA
+SEKULIĆ MILORAD
+SEKULIĆ MILORAD
+SEKULIĆ MILOVAN
+SEKULIĆ MILOVAN
+SEKULIĆ MILOVAN
+SEKULIĆ MIODRAG
+SEKULIĆ MIODRAG
+SEKULIĆ MIRA
+SEKULIĆ MIRJANA
+SEKULIĆ MIRJANA
+SEKULIĆ MIRKO
+SEKULIĆ NEGICA
+SEKULIĆ NEMANJA
+SEKULIĆ OLGA
+SEKULIĆ OLIVERA
+SEKULIĆ PAVLE
+SEKULIĆ PAVLE
+SEKULIĆ PETAR DR
+SEKULIĆ PETAR
+SEKULIĆ PETKO
+SEKULIĆ RADE
+SEKULIĆ RADIVOJ MR
+SEKULIĆ RADMILA
+SEKULIĆ RADOSAV
+SEKULIĆ RUŽICA
+SEKULIĆ SIMO
+SEKULIĆ SLAVKO
+SEKULIĆ SMILJA
+SEKULIĆ SPASA
+SEKULIĆ SPASO
+SEKULIĆ STANISLAV
+SEKULIĆ STANOJE
+SEKULIĆ STEVAN
+SEKULIĆ STEVAN
+SEKULIĆ STOJAN DIPL ING
+SEKULIĆ STOJAN
+SEKULIĆ SVETOZAR
+SEKULIĆ SVETOZAR
+SEKULIĆ TIHOMIR
+SEKULIĆ TOMISLAV
+SEKULIĆ TOMISLAV
+SEKULIĆ USTIJANKA
+SEKULIĆ VALENTINA
+SEKULIĆ VENO
+SEKULIĆ VIDOJE
+SEKULIĆ VINKO
+SEKULIĆ VLADIMIR
+SEKULIĆ VLADIMIR
+SEKULIĆ VLADO
+SEKULIĆ VOJISLAV
+SEKULIĆ ZORAN
+SEKULIĆ ZORAN
+SEKULIĆ ZORA
+SEKULIĆ ZORICA
+SEKULOVIĆ MIHAILO
+SEKULOVIĆ MILANKA
+SEKULOVIĆ MILENKO
+SEKULOVIĆ RADIVOJE
+SEKULOVIĆ SLAVKO
+SEL ANA
+SEL JOŽEF
+SEL LADISLAV
+SELAK JOVAN
+SELAK JOVO
+SELAK MIRJANA
+SELAK STEVAN
+SELAKOVIĆ ĐORĐE DR LEKAR
+SELAKOVIĆ DRAGICA DR LEKAR
+SELAKOVIĆ LJUBISAV
+SELAKOVIĆ MILAN
+SELAKOVIĆ MIODRAG
+SELAKOVIĆ MIROSLAV
+SELAKOVIĆ MLADEN
+SELAKOVIĆ RADOSLAV
+SELAKOVIĆ SREĆKO
+SELAKOVIĆ VOJA
+SELEŠ KAROLJ
+SELEŠ KAROLJ
+SELEŠ MIHAJLO
+SELEŠI ELZA
+SELEŠI ETELKA
+SELEŠI LADISLAV
+SELEŠI LASLO
+SELEŠI MAGDALENA
+SELEŠI MARIJA
+SELEŠI PAL
+SELEŠI STEVAN
+SELEŠI VINCE
+SELEŠI ZOLTAN
+SELENA JELENA
+SELENA NIKOLA
+SELENIĆ ANKICA
+SELI ETELKA
+SELI IŠTVAN DR
+SELI MIKLOŠ
+SELIĆ DRAGUTIN
+SELIĆ MIĆO
+SELIĆ MILOŠ
+SELIĆ MILORAD
+SELIH DANILO
+SELIH DRAGO
+SELIK JOSIP
+SELIK LADISLAV
+SELIMOVIĆ MUSTAFA
+SELINGER GABRIJELA
+SELJAKOV NADA
+SELMAN HAKIJA
+SELSKI ANA
+SELSKI MARIJA
+SELVER ALINAĐI
+SEMAN JOAKIM
+SEMEDER DIMITRIJE
+SEMEDER SUZANA
+SEMEDER SUZANA
+SEMEK ČABA
+SEMEK ČILA
+SEMENSKI KORNELIJA
+SEMEREDI JOŽEF
+SEMEREDI VERA
+SEMIZ KATICA
+SEMIZOVIĆ SADIK
+SEMNIC RUDOLF DR
+SEN MARTIN
+SENČUK SLAVICA
+SENČUK STEVO
+SENĆANSKI JULIJA
+SENĆANSKI KATICA
+SENĆANSKI NADA
+SENĆANSKI PETAR
+SENĆANSKI ZORA
+SENAŠI LADISLAV
+SENCI LADISLAV
+SENDERAK ĐURA
+SENDERAK EUGEN
+SENDERAK LIDIJA
+SENDERAK MELANIJA
+SENDERAK MIRKO
+SENDERAK NIKOLA
+SENDERAK PETAR
+SENDERAK SILVESTER
+SENEŠI JELENA
+SENIĆ ANICA
+SENIĆ IVANKA
+SENIĆ LAZAR
+SENIĆ MILORAD
+SENIĆ RISTO
+SENIĆ VLADIMIR
+SENJEŠ ŠANDOR
+SENJI AGOŠTON DR LEKAR
+SENJI ILONA
+SENJI IRENA
+SENTE LJUBICA
+SENTE PETAR
+SENTIN ČEDOMIR
+SENTIVANAC ĐORĐE
+SENTIVANAC MARKO
+SENTIVANAC MILAN
+SENTIVANAC MILOŠ
+SENTIVANAC MOMIR
+SENTIVANAC SAVA
+SENTIVANAC SVETLANA
+SENTIVANAC TODOR
+SENTIVANAC VESNA
+SENTMARTONI FERENC
+SEP ANTAL
+SEP DEŽE DR LEKAR
+SEP FERENC
+SEP-VARGA EMILIJA
+SERAFIMOV KIRIL
+SERATLIĆ ČEDOMIR
+SERATLIĆ DARKA
+SERATLIĆ GOLUB
+SERATLIĆ MIRAŠ
+SERATLIĆ MIRJANA
+SERATLIĆ VELIMIR DR
+SERATLIĆ ZORAN
+SERDA ŠANDOR
+SERDAR DANICA
+SERDAR ILIJA
+SERDAR MARA
+SERDAR MLADEN
+SERDAR NEDELJKO
+SERDAR PETAR
+SERDAR PETAR
+SERDAREVIĆ ĆAZIM
+SERDAREVIĆ GIZELA
+SEREŠI FERENC
+SEREŠI IŠTVAN
+SEREŠI LASLO
+SEREŠI ROZALIJA
+SEREŠI STEVAN
+SEREŠI TIBOR
+SERENČE LADISLAV
+SERENČEŠ JOŽEF NOVINAR
+SERNEC STEVAN
+SERTIĆ DRAGAN
+SERTIĆ MARIJA
+SERTIĆ MATIJA
+SERTIĆ MILAN
+SERTIĆ VLADA
+SETENČIĆ MILORAD
+SEVER ŠIME
+SEVERINI JAN
+SEVIĆ ĐORĐE
+SEVIĆ RADENKO
+SEVKIĆ BRANKO
+SEVKIĆ MAGDALENA
+SIČ ANDRIJA
+SIČ DRAGAN
+SIČ FERENC
+SIČ IMRE
+SIČ JOŽEF
+SIČ JOSIP
+SIČ JOSIP
+SIČ JULIJANA
+SIČ KALMAN
+SIČ KALMAN
+SIČ MARGITA
+SIČ MARIJA
+SIČ MARIJA
+SIČ MIHALJ
+SIČ MIROSLAVA
+SIČ PETAR DR LEKAR
+SIČ PIROŠKA
+SIČ STEVAN
+SIČ STEVAN
+SIČ STEVAN
+SIČ TEREZA
+SIČ VLADISLAV
+SIČ ZLATKO
+SIĆ MIROSLAV
+SIĆ SLAĐANA
+SIĆ STANISLAV
+SIĆ STANKO
+SIĐI MIRKO
+SIBER IŠTVAN
+SIBER IŠTVAN
+SIBINAC VUKICA
+SIBINKIĆ PETAR
+SIBINKIĆ RATKO
+SIBINKIĆ RATKO
+SIBINKIĆ VASA
+SIBINOV NIKOLA
+SIBINOVIĆ RADOMIR
+SIBINSKI VIDA
+SIDŽIMOSKI DIMITRIJE
+SIDOR ĆIRIL DR
+SIGETI-BIČKEI AGOTA
+SIGETI JAŠA
+SIGETI JANOŠ
+SIGETI STEVAN
+SIKA FRANJA
+SIKA IRENA
+SIKIMIĆ ANĐELKA
+SIKIMIĆ NOVAK
+SIKIMIĆ SRĐAN
+SIKIMIĆ SRĐAN
+SIKIRICA MIRJANA
+SIKORA KAROLJ
+SIKORA LADISLAV
+SIKORA PETAR
+SILAŠKI ILIJA
+SILAŠKI RADOVAN
+SILAŠKI SLAVKO
+SILAŠKI SNEŽANA
+SILAŠKI VERA
+SILAŠKI VLADISLAVA
+SILAĐEV RUŽICA
+SILAĐI ŠANDOR
+SILAĐI ANDRAŠ
+SILAĐI FRANJA
+SILAĐI GIZELA
+SILAĐI IŠTVAN
+SILAĐI IMRE
+SILAĐI JELISAVETA
+SILAĐI KAROLJ
+SILAĐI LADISLAV
+SILAĐI LASLO VAJAR
+SILAĐI LASLO
+SILAĐI LASLO
+SILAĐI LASLO
+SILAĐI LJUDEVIT
+SILAĐI LJUDEVIT
+SILAĐI MARIJA
+SILAĐI MIKLOŠ
+SILAĐI ROZALIJA
+SILAĐI TEREZA
+SILAĐI VIKTORIJA
+SILAK ANDRAŠ
+SILAK GIZELA
+SILAK IŠTVAN
+SILAK ZOLTAN
+SILBAŠKI DOŠKO
+SILBAŠKI LJUBICA
+SILBAŠKI MARJAN
+SILBAŠKI ZORAN
+SILBERHOLC STEVAN
+SILER ĐULA
+SILER DUŠICA
+SILER GUSTAV
+SILER KARL
+SILJANOVSKI DARKO
+SILJANOVSKI JOŽE
+SILNI SLAVNA
+SILVAŠI ŠANDOR
+SILVAŠI JANOŠ
+SILVAŠI KAROLJ
+SILVESTROVIĆ MILICA
+SILVESTROVIĆ TANASIJE
+SIMČIN MIHAJLO
+SIMANIĆ ILIJA
+SIMANIĆ JEZDIMIR
+SIMANIĆ PETKO
+SIMANIĆ RAJKA
+SIMANIĆ SAVA
+SIMENDIĆ BOŽA
+SIMENDIĆ GORAN
+SIMENDIĆ SVETOZAR
+SIMENDIĆ VLADIMIR
+SIMENTIĆ JOVAN
+SIMENTIĆ VOJISLAV
+SIMEONOV PAVLE
+SIMEONOV RADIVOJ
+SIMEONOV ZDRAVČO
+SIMEONOVIĆ ĐORĐE
+SIMEONOVIĆ MILIVOJ
+SIMEONOVIĆ RADOSLAV
+SIMEONOVIĆ SLOBODANKA
+SIMETIĆ MOMČILO
+SIMETIĆ OSTOJA
+SIMEUNOVIĆ BORISLAV
+SIMEUNOVIĆ DRAGAN
+SIMEUNOVIĆ DRAGAN
+SIMEUNOVIĆ DRAGOLJUB
+SIMEUNOVIĆ DUŠAN
+SIMEUNOVIĆ JANKO
+SIMEUNOVIĆ LEPOSAVA
+SIMEUNOVIĆ MILAN
+SIMEUNOVIĆ MILOMIR
+SIMEUNOVIĆ NEVENKA
+SIMEUNOVIĆ RADOSAV
+SIMEUNOVIĆ SAVA
+SIMEUNOVIĆ SIMO
+SIMEUNOVIĆ SIMO
+SIMEUNOVIĆ SRETEN
+SIMEUNOVIĆ VLADA
+SIMIČIĆ DRAGANA
+SIMIŠIĆ RADOJICA
+SIMIĆ ČEDA
+SIMIĆ ŽIVOJIN
+SIMIĆ ŽIVOJIN
+SIMIĆ ĐURĐEVKA
+SIMIĆ ĐURA
+SIMIĆ ĐURO
+SIMIĆ ACA
+SIMIĆ ADAM
+SIMIĆ ALEKSANDAR
+SIMIĆ ALEKSANDAR
+SIMIĆ ANĐELKA
+SIMIĆ BOŠKO
+SIMIĆ BOJANA
+SIMIĆ BORA
+SIMIĆ BORISLAV
+SIMIĆ BORISLAV
+SIMIĆ BORKA
+SIMIĆ BOSILJKA
+SIMIĆ BRANISLAV
+SIMIĆ BRANISLAV
+SIMIĆ BRANISLAV
+SIMIĆ BRANKO
+SIMIĆ BUDIMIR
+SIMIĆ-CHALABI DRAGANA
+SIMIĆ CVETIN
+SIMIĆ DEJAN
+SIMIĆ DOBRIVOJE
+SIMIĆ DOBRIVOJE
+SIMIĆ DOJČIN
+SIMIĆ DRAGAN
+SIMIĆ DRAGICA
+SIMIĆ DRAGOLJUB
+SIMIĆ DRAGOLJUB
+SIMIĆ DRAGUTIN
+SIMIĆ DUŠANKA
+SIMIĆ DUŠAN
+SIMIĆ DUŠAN
+SIMIĆ DUŠICA
+SIMIĆ GOJKO
+SIMIĆ GORDANA
+SIMIĆ GRADIMIR
+SIMIĆ HERMINA DR
+SIMIĆ ILIJA
+SIMIĆ ILONKA
+SIMIĆ IVAN
+SIMIĆ JELENA
+SIMIĆ JOVAN
+SIMIĆ JOVAN
+SIMIĆ JOVICA
+SIMIĆ JOVO
+SIMIĆ JOVO
+SIMIĆ JUDIT
+SIMIĆ KRISTINA
+SIMIĆ LJILJANA
+SIMIĆ MARIJA
+SIMIĆ MARIJA
+SIMIĆ MARIJA
+SIMIĆ MICA
+SIMIĆ MIHAILO
+SIMIĆ MILAN
+SIMIĆ MILAN
+SIMIĆ MILAN
+SIMIĆ MILENA
+SIMIĆ MILICA
+SIMIĆ MILIJA
+SIMIĆ MILIVOJ
+SIMIĆ MILOŠ
+SIMIĆ MILOŠ
+SIMIĆ MILOŠ
+SIMIĆ MILORAD
+SIMIĆ MILORAD
+SIMIĆ MILOVAN
+SIMIĆ MILUTIN
+SIMIĆ MILUTIN
+SIMIĆ MILUTIN
+SIMIĆ MIRKO
+SIMIĆ MOMČILO
+SIMIĆ MOMČILO
+SIMIĆ MOMČILO
+SIMIĆ MOMČILO
+SIMIĆ NADA
+SIMIĆ NADA
+SIMIĆ NARANČA
+SIMIĆ NEĐO
+SIMIĆ NEDELJKO
+SIMIĆ NEMANJA
+SIMIĆ NEVENKA
+SIMIĆ NIKOLA
+SIMIĆ NIKOLA
+SIMIĆ NOVAK
+SIMIĆ NOVAK
+SIMIĆ NOVAK
+SIMIĆ OLGA
+SIMIĆ OSTOJA
+SIMIĆ PANTELIJA
+SIMIĆ PAVLE
+SIMIĆ PETAR
+SIMIĆ RADA
+SIMIĆ RADENKO
+SIMIĆ RADENKO
+SIMIĆ RADISAV
+SIMIĆ RADIVOJE
+SIMIĆ RADIVOJE
+SIMIĆ RADIVOJ
+SIMIĆ RADOJE
+SIMIĆ RADOVAN
+SIMIĆ RAJKO
+SIMIĆ RUŽICA
+SIMIĆ RUŽICA
+SIMIĆ SAVA
+SIMIĆ SIMA
+SIMIĆ SINIŠA
+SIMIĆ SLADA
+SIMIĆ SLAVKO
+SIMIĆ SLOBODAN
+SIMIĆ SRĐAN
+SIMIĆ SRETEN
+SIMIĆ STEVAN
+SIMIĆ STEVAN
+SIMIĆ STEVAN
+SIMIĆ STOJANKA
+SIMIĆ SVETISLAV
+SIMIĆ SVETISLAV
+SIMIĆ TIHOMIR
+SIMIĆ TIHOMIR
+SIMIĆ TODE
+SIMIĆ TOMISLAV
+SIMIĆ TOMISLAV
+SIMIĆ VAJKA
+SIMIĆ VASA
+SIMIĆ VERONKA
+SIMIĆ VESELKO
+SIMIĆ VINKA
+SIMIĆ VLADE
+SIMIĆ VLADIMIR
+SIMIĆ VLADO
+SIMIĆ VOJISLAV
+SIMIĆ ZLATIMIR
+SIMIĆ ZORAN
+SIMIĆ ZORAN
+SIMIĆ ZORAN
+SIMIĆ ZORA
+SIMIĆ ZORA
+SIMIĆ ZORICA
+SIMIĆ ZORKA
+SIMIĆEVIĆ RADOMAN
+SIMIJONOVIĆ SLOBODAN
+SIMIKIĆ JOVAN
+SIMILENJI DUŠICA
+SIMIN ŽIVKA
+SIMIN ŽIVOJIN
+SIMIN ANĐELKA
+SIMIN ARANKA
+SIMIN CVETKO
+SIMIN DANICA
+SIMIN DANILO
+SIMIN DINA
+SIMIN DRAGAN
+SIMIN HILDA
+SIMIN IVANKA
+SIMIN IVAN
+SIMIN JAŠA
+SIMIN JELENA
+SIMIN KOSTA
+SIMIN LAZAR
+SIMIN LEPOSAVA
+SIMIN LJUBICA
+SIMIN MAGDA
+SIMIN MILENA
+SIMIN MILICA
+SIMIN MILICA
+SIMIN MILIVOJ
+SIMIN MILIVOJ
+SIMIN MILUTIN
+SIMIN MIROSLAV
+SIMIN NADA
+SIMIN NADA
+SIMIN NEBOJŠA
+SIMIN PAVLE
+SIMIN PETAR
+SIMIN RADICA
+SIMIN RADIVOJE
+SIMIN RADOJICA
+SIMIN RADOVAN
+SIMIN SINIŠA
+SIMIN SOFIJA
+SIMIN STEVAN
+SIMONOVIĆ DRAGOSLAVA
+SIMONOVIĆ HRISTINA
+SIMONOVIĆ IRENA DR
+SIMONOVIĆ MILE
+SIMONOVIĆ MILORAD
+SIMONOVIĆ MILORAD
+SIMONOVIĆ NADA
+SIMONOVIĆ NIKOLA
+SIMONOVIĆ PETAR
+SIMONOVIĆ SLOBODAN
+SIMONOVIĆ TOMISLAV
+SIMONOVIĆ VOJISLAV
+SIMONOVSKI FINKA
+SIMONOVSKI MITA
+SIMOTIN RADOVAN
+SIMOVIĆ ŽELJKO
+SIMOVIĆ ŽIVOTA
+SIMOVIĆ ANKA
+SIMOVIĆ BRANISLAV DR
+SIMOVIĆ DRAGOLJUB
+SIMOVIĆ DRAGOLJUB
+SIMOVIĆ DRAGO
+SIMOVIĆ JOVA
+SIMOVIĆ LJUBIŠA
+SIMOVIĆ MILAN
+SIMOVIĆ MILAN
+SIMOVIĆ MILAN
+SIMOVIĆ MILAN
+SIMOVIĆ MILOŠ
+SIMOVIĆ MILOŠ
+SIMOVIĆ MIRKO
+SIMOVIĆ MITAR
+SIMOVIĆ PETAR
+SIMOVIĆ RADIVOJE
+SIMOVIĆ RADOMIR
+SIMOVIĆ SLOBODAN PROFESOR
+SIMOVIĆ SLOBODAN
+SIMOVIĆ TODOR
+SIMOVIĆ VIDAK
+SIMOVIĆ VLADIMIR
+SIMOVLJEVIĆ JOCA
+SIMUNIĆ ŽELIMIR
+SIMUNIĆ ANDRIJA
+SIMUNIĆ MAGDA
+SIMUNIĆ STANIMIR
+SIMUNOVIĆ MARIJA
+SIMUNOVIĆ MILUN
+SIMURDIĆ MILAN
+SIMURDIĆ PETAR
+SIMURDIĆ VITOMIR
+SINČIĆ ZVONIMIR
+SINĐELIĆ LJUBISAV
+SINĐELIĆ MILOŠ
+SINĐIĆ MILENKO
+SINADINOVIĆ VOJO
+SINANI ABDULA
+SINANI MILICA
+SINANOVIĆ SAFET
+SINGER DRAGICA
+SINGER RUŽICA
+SIRAČKI KAROLINA
+SIRACKI JOVAN
+SIRACKI VLADIMIR
+SIRAK LASLO DR
+SIRIŠKI ŽARKO
+SIRIŠKI ĐURĐINA
+SIRIŠKI BRANISLAV
+SIRIŠKI IVAN
+SIRIŠKI JASMINKA
+SIRIŠKI JELENA
+SIRIŠKI JOVAN
+SIRIŠKI MIROSLAVA
+SIRIŠKI SLAVKO SUDIJA
+SIRIŠKI SLAVKO
+SIROČIĆ IVAN
+SIROŽENKO SNEŽANA
+SIROŽENKO VERA
+SIROTIN SLAVICA
+SIROVICA JANOŠ
+SIRUČEK VILIM DIPL ING
+SITAŠ ILONA
+SITAŠ LAJOŠ
+SITAREVIĆ AMIR
+SITARIĆ PAJA
+SIVČ AMALIJA
+SIVČ ANĐELKA
+SIVČ DANILO
+SIVČ HELENA
+SIVČ IRINA
+SIVČ JANKO
+SIVČ LJUBOMIR
+SIVČ LJUBOMIR
+SIVČ NESTOR
+SIVČ VLADIMIR
+SIVČEV ĐOKA
+SIVČEV BOŽIDAR
+SIVČEV JOVAN DR
+SIVČEV JULKA
+SIVČEV LJUBICA
+SIVČEV MILAN
+SIVČEV ZORAN
+SIVAČKI ĐURA
+SIVAČKI JOVAN
+SIVAČKI MILAN
+SIVAČKI MIRJANA
+SIVAČKI MIROSLAV
+SIVAČKI SAVA
+SIVAČKI SLOBODANKA
+SIVAČKI VERA
+SIVAČKI VERA
+SIVAC JOVANKA
+SIVAK IBOLJA
+SIVAK JUDITA
+SIVAK LJUBINKA
+SIVAK ROZINA
+SIVIĆ GOJKO
+SIVIĆ RADE
+SIZOV MARGITA
+SJENIČIĆ NEDELJKO
+SJEPANOVIĆ SRĐAN
+SKAKAVAC NIKOLA
+SKAKAVAC NOVA
+SKAKAVAC NOVA
+SKAKAVAC SOFIJA
+SKAKAVAC VELIMIR
+SKAKAVAC VUJICA
+SKAKAVAC ZDRAVKO
+SKAKIĆ BOŠKO
+SKAKIĆ MILAN
+SKAKIĆ NIKOLA
+SKAKUN ŽIVKO
+SKALA ANTAL
+SKALA MILENA
+SKALA VLADIMIR
+SKALICKI ZAGORKA
+SKANDARSKI ANKA
+SKANDARSKI MILAN
+SKANDARSKI MILOŠ
+SKANDARSKI MIRKO
+SKANDARSKI MLADEN
+SKANDARSKI MOMČILO
+SKANDARSKI RADOVAN
+SKARAMUCA MIJO
+SKARAMUCA ZDRAVKO
+SKELEDŽIĆ ALEKSANDAR
+SKELEDŽIĆ ALEKSANDAR
+SKELEDŽIĆ BRANISLAV
+SKELEDŽIĆ BRANISLAV
+SKELEDŽIĆ DRAGICA
+SKELEDŽIĆ KATICA
+SKELEDŽIĆ LJUBINKO
+SKELEDŽIĆ MARIJA
+SKELEDŽIĆ MILAN
+SKELEDŽIĆ MIROSLAVA
+SKELEDŽIĆ RADOSLAV
+SKELEDŽIĆ RADOSLAV
+SKELEDŽIJA KATA
+SKELEDŽIJA RADOJICA
+SKELEDŽIJA SPASIMIR
+SKENDŽIĆ ŽARKO
+SKENDŽIĆ BOGDAN
+SKENDŽIĆ BRANKA
+SKENDŽIĆ DANE
+SKENDŽIĆ DANILO
+SKENDŽIĆ DRAGOMIR
+SKENDŽIĆ DUŠAN
+SKENDŽIĆ ILIJA
+SKENDŽIĆ JASMINKA
+SKENDŽIĆ JOVANKA
+SKENDŽIĆ MARGARETA
+SKENDŽIĆ MILAN
+SKENDŽIĆ MILENKO
+SKENDŽIĆ MILICA
+SKENDŽIĆ RADE
+SKENDŽIĆ SARA
+SKENDŽIĆ SOFIJA
+SKENDŽIĆ STEVAN
+SKENDEROVIĆ ANDRIJA
+SKENDEROVIĆ BERISLAV
+SKENDEROVIĆ GABOR
+SKENDEROVIĆ MARIJA
+SKENDEROVIĆ SINIŠA
+SKERLETOVIĆ MILOŠ
+SKERLETOVIĆ ZORAN
+SKERT BOŽIDAR
+SKIČAK LASLO
+SKIVJANI ŠANDOR
+SKIVJANI MIHALJ
+SKLABINAC VLADIMIR
+SKLABINSKI SAMO
+SKLENA JOHAN DIPL ING
+SKLENA OLIVERA
+SKLENA VIKTORIJA
+SKLENAR PETAR
+SKLJAR ĐURO
+SKOČAJIĆ VUKAŠIN
+SKOČOVSKI MARIJA
+SKOBE IVAN
+SKOK MIRJANA
+SKOKANDIĆ PETAR
+SKOKIĆ NENAD
+SKOKIĆ VESNA
+SKOKNIĆ DUŠAN
+SKOKNIĆ STEVAN
+SKOKO MILOŠ
+SKOMINA VERICA
+SKOPAL BELA
+SKOPAL JOVAN
+SKORIĆ JASMINKA
+SKORIĆ LJUBO
+SKORIĆ TONKA
+SKORIĆ VUJO
+SKORUPAN ĐURA
+SKORUPAN DANICA
+SKORUPAN KATA
+SKORUPAN RADENKO
+SKORUPAN SLAVKO
+SKOTOVIĆ FERENC
+SKRAMOĆIN SREĆKO
+SKROBIĆ DRAGAN
+SKROBIĆ PETAR
+SKROBONJA ALEKSANDAR
+SKROBONJA KATICA
+SKROBONJA NIKOLA
+SKROBONJA VLADIMIR
+SKUBAN HELENA
+SKUBAN JANKO
+SKUBAN JEFREM
+SKUBAN JULIJAN
+SKUBAN LEONA
+SKUBAN LJUBOMIR
+SKUBAN MIHAJLO
+SKUBAN NATALIJA
+SKUBAN NIKOLA
+SKUBAN ZORKA
+SKULAR RADOJKA
+SKULIĆ MIRJANA
+SKULIĆ SIMKA
+SKULIĆ VLADIMIR
+SKUMPIJA JOŽEF
+SKURUPATIS MIRJANA
+SLAĆANIN IVAN
+SLADAKOVIĆ NIKOLA
+SLADEK ANDRIJA
+SLADIĆ CVETA
+SLADIĆ SLOBODAN
+SLADIĆ STEVAN
+SLADIĆ ZORICA
+SLADOJA MILOVAN
+SLADOJE ILIJA
+SLADOJE RADOMIR
+SLADOJEV MILAN
+SLADOJEV PREDRAG
+SLADOJEVIĆ ŽIVKO
+SLADOJEVIĆ MIRKO
+SLADOJEVIĆ RADIVOJ
+SLAMA ĐORĐE
+SLAMA MARIJA
+SLAMAR FERENC
+SLANC JELENA
+SLANKAMENAC ŽIVKO
+SLANKAMENAC ŽIVKO
+SLANKAMENAC ĐORĐE
+SLANKAMENAC ALEKSANDAR
+SLANKAMENAC ANKICA
+SLANKAMENAC BRANISLAV
+SLANKAMENAC DUŠANKA
+SLANKAMENAC IDA
+SLANKAMENAC JELENA
+SLANKAMENAC JOVAN
+SLANKAMENAC MARIJA
+SLANKAMENAC MARIJA
+SLANKAMENAC MILAN
+SLANKAMENAC MILAN
+SLANKAMENAC MILAN
+SLANKAMENAC MILOŠ
+SLANKAMENAC MILOŠ
+SLANKAMENAC MILOJE
+SLANKAMENAC MIRJANA
+SLANKAMENAC MOMČILO
+SLANKAMENAC NADA
+SLANKAMENAC PETAR DR
+SLANKAMENAC PETAR
+SLANKAMENAC PETAR
+SLANKAMENAC PROKA
+SLANKAMENAC RADOSLAV
+SLANKAMENAC STEVAN
+SLANKAMENAC VESELIN
+SLANKAMENAC ZORAN
+SLATVINSKI GEORGIJE
+SLAVIĆ ĐORĐE
+SLAVIĆ SOFIJA
+SLAVICA STIPE
+SLAVKIĆ DUŠANKA
+SLAVKOVIĆ ALOJZ
+SLAVKOVIĆ MILOŠ
+SLAVKOVIĆ MIRJANA
+SLAVKOVIĆ SIBIN
+SLAVKOVIĆ SNEŽANA
+SLAVKOVIĆ TRIFUN
+SLAVKOVIĆ ZDENKO
+SLAVNIĆ DANILO
+SLAVNIĆ JASMINA
+SLAVNIĆ LJUBICA
+SLAVNIĆ NOVKA
+SLAVNIĆ RADIVOJ
+SLAVNOVIĆ IVAN
+SLAVUJ BOŽO
+SLAVUJ DRAGAN
+SLAVUJEVIĆ DUŠAN
+SLAVUJEVIĆ LJUBOMIR
+SLAVUJEVIĆ MILENA
+SLAVUJEVIĆ RADISAV
+SLAVUJEVIĆ STEVO
+SLAVULJ MILE
+SLEPČEV ŽIVAN
+SLEPČEV DANICA
+SLEPČEV JOVAN
+SLEPČEV NIKOLA
+SLEPČEV ZDENKA
+SLEPČEV ZORICA
+SLEPČEVIĆ KRSTAN
+SLEPČEVIĆ LJUBIŠA
+SLEPČEVIĆ MILAN
+SLEPČEVIĆ OLGA
+SLEPČEVIĆ RUŽA
+SLEPČEVIĆ ZDRAVKA
+SLEPKO IRENA
+SLEPKO JOVAN
+SLEPKO MIHAJLO
+SLEPKO MILICA
+SLESAR DANILO
+SLESAR JELENA
+SLESAR MOMČILO
+SLESAR VASA
+SLIŠKO ANDRIJA
+SLIŠKO MARKO
+SLIŠKOVIĆ ANĐELKA
+SLIJEPČEVIĆ ANA
+SLIJEPČEVIĆ BISERKA
+SLIJEPČEVIĆ DRAGAN
+SLIJEPČEVIĆ DUŠAN
+SLIJEPČEVIĆ DUŠAN
+SLIJEPČEVIĆ GEORGIJE
+SLIJEPČEVIĆ JANKO
+SLIJEPČEVIĆ JANKO
+SLIJEPČEVIĆ JOVAN
+SLIJEPČEVIĆ KOVILJKA
+SLIJEPČEVIĆ LJUBAN
+SLIJEPČEVIĆ MILORAD
+SLIJEPČEVIĆ MILOVAN
+SLIJEPČEVIĆ MIROSLAVA
+SLIJEPČEVIĆ NOVICA
+SLIJEPČEVIĆ RUŽICA
+SLIJEPČEVIĆ SAVO
+SLIJEPČEVIĆ VERA
+SLIJEPČEVIĆ VJEKOSLAVA
+SLIJEPČEVIĆ ZVONKO
+SLIJEPAC MILOŠ
+SLIJEPAC SLOBODAN
+SLIMAK ADAM
+SLIVA ELIZABETA
+SLIVKA ĐURA
+SLIVKA ANA
+SLIVKA BOŽANA
+SLIVKA BOSILJKA
+SLIVKA JAROSLAV
+SLIVKA JOVAN
+SLIVKA MIŠA
+SLIVKA MIŠA
+SLIVKA STEVAN
+SLIVKA ZDENKA
+SLIVKA ZLATA
+SLJUKA BOHUSLAV
+SLJUKA JURAJ
+SLOBODA ANTAL
+SLOBODA IŠTVAN
+SLOBODA JANOŠ
+SLOBODA JOŽEF
+SLOBODA JULKA
+SLOBODA MIHAJLO
+SLOBODA MIHALJ
+SLOBODA PETAR
+SLOBODA SLAVKA
+SLOBODA STEVAN
+SLOKAR IVAN
+SLOKAR MATIJA
+SLOVIĆ DRAGOLJUB DR
+SLUNJSKI FRANJA
+SMAGIN IVAN
+SMAJIĆ MAKSIM
+SMAJIĆ MILOŠ
+SMAJIĆ SLOBODAN
+SMAJIĆ SLOBODAN
+SMEDEREVAC DUŠAN
+SMEDEREVAC JOVAN
+SMEDEREVAC MILICA
+SMEDEREVAC PETAR
+SMEDEREVAC STEVICA
+SMIĆEVIĆ UROŠ
+SMIEŠKO JELISAVETA
+SMILIĆ MARIJA
+SMILJANIĆ ĐORĐE
+SMILJANIĆ ĐORĐE
+SMILJANIĆ ĐORĐE
+SMILJANIĆ BOJANA
+SMILJANIĆ BORKA
+SMILJANIĆ BRANKO
+SMILJANIĆ DOBRIVOJ
+SMILJANIĆ DRAGICA
+SMILJANIĆ ILIJA
+SMILJANIĆ JOVANA
+SMILJANIĆ JOVAN
+SMILJANIĆ JOVO
+SMILJANIĆ LJILJANA
+SMILJANIĆ LJILJANA
+SMILJANIĆ MARIJA
+SMILJANIĆ MILAN
+SMILJANIĆ MILAN
+SMILJANIĆ MILENKO
+SMILJANIĆ MILKA
+SMILJANIĆ MILORAD
+SMILJANIĆ MILUTIN
+SMILJANIĆ MIODRAG
+SMILJANIĆ MLADEN
+SMILJANIĆ NEVENKA
+SMILJANIĆ NEVENKA
+SMILJANIĆ OLIVERA
+SMILJANIĆ PETAR
+SMILJANIĆ PREDRAG
+SMILJANIĆ RADA
+SMILJANIĆ RADE
+SMILJANIĆ SAVA
+SMILJANIĆ SOFIJA
+SMILJANIĆ SOFIJA
+SMILJANIĆ STANA
+SMILJANIĆ STEVO
+SMILJANIĆ TRIVO
+SMILJANIĆ VESELKO
+SMILJANIĆ VIDOSAV
+SMILJANIĆ VINKO
+SMILJANIĆ VLADIMIR
+SMILJANIĆ VLADIMIR
+SMILJANIĆ ZLATKO
+SMILJANIĆ ZORKA
+SMILJANOV MILAN
+SMILJANOV RADOVAN
+SMILJANSKI MILAN
+SMILJIĆ ŽIVKO
+SMILJKOVIĆ RADOMIR
+SMILJKOVIĆ STANIMIR
+SMIRNOV JUDITA
+SMIRNOV JUDIT
+SMIRNOV RASTISLAV
+SMIRNOV VLADIMIR
+SMOK NIKOLA
+SMOLČIĆ RUŽA
+SMOLENICKI MELITA
+SMOLENSKI KARLO
+SMOLENSKI ROZALIJA
+SMOLJANIKOV MIHAJLO DIPL ING
+SMOLOVIĆ DRAGOLJUB
+SMOLOVIĆ MIHAJLO
+SMOLOVIĆ RADMILA
+SMOLOVIĆ RATKO
+SMOLOVIĆ SAVA
+SMREKA DRAGICA
+SMUĐA GRADIMIR
+SMUĐA JOVAN
+SMUĐA MILENKO
+SMUĐA NIKOLA
+SMUĐA SAVA
+SMUK ŽIVANA
+SMUK BORIVOJ
+SMUTEK JOSIP
+SMUTNI IVAN
+SNJIDA ANA
+SNJIDA SAŠA
+SOBČAK FRANJA
+SOBOČAN MIŠA
+SOBOĆAN IVAN
+SOCEK IMRE
+SOCEK JOSIP
+SOCEK MIRJANA
+SOFILJ ALEKSANDRA
+SOFILJ DRAGICA
+SOFILJ JOVANKA
+SOFILJ RANKO
+SOFILJ SLAVICA
+SOFINKIĆ BRANKA
+SOFRADŽIJA MUHAMED
+SOFRANIN BORIVOJ
+SOFRANIN KUZMAN
+SOFRANIN MILIVOJ
+SOFRENIĆ VERICA
+SOFRONIJEVIĆ LJUBICA
+SOFTIĆ MARIJA
+SOGIĆ SAVA
+SOGIĆ VLADISLAV
+SOJEVIĆ MLADEN
+SOJIĆ RADOJKA
+SOKELE BRANISLAV
+SOKIĆ ŽIVKO
+SOKIĆ ĐURĐICA
+SOKIĆ ILIJA
+SOKIĆ LIDIJA
+SOKIĆ ZORKA
+SOKNIĆ TOMISLAV
+SOKOLA ANTUN
+SOKOLA FERENC
+SOKOLA IŠTVAN
+SOKOLA IŠTVAN
+SOKOLA KATARINA
+SOKOLA MARTA
+SOKOLAI JOŽEF
+SOKOLAI LAJOŠ
+SOKOLIĆ ŽELJKO
+SOKOLOV ALEKSANDAR
+SOKOLOV LJUBOMIR
+SOKOLOV MILAN
+SOKOLOV NADKA
+SOKOLOV SLAVKA
+SOKOLOV STEVAN
+SOKOLOV ZINAIDO
+SOKOLOVIĆ ĐORĐE
+SOKOLOVIĆ ANA
+SOKOLOVIĆ DUŠKO
+SOKOLOVIĆ KATARINA
+SOKOLOVIĆ MILE
+SOKOLOVIĆ NATALIJA
+SOKOLOVIĆ RUŽICA
+SOKOLOVIĆ SLOBODAN
+SOKOLOVIĆ SLOBODAN
+SOKOLOVIĆ TOMISLAV
+SOKOLOVIĆ ZORICA
+SOKOVIĆ DIMITRIJE
+SOKOVIĆ DUŠAN
+SOLAR LJUBICA
+SOLAR STJEPAN
+SOLAREVIĆ JOVANKA
+SOLAREVIĆ MILANKA
+SOLARIĆ SOFIJA
+SOLAROV BORISLAV
+SOLAROV BORO
+SOLAROV MILAN
+SOLAROV MILICA
+SOLAROV MILICA
+SOLAROV MILOŠ
+SOLAROV MILOVAN
+SOLAROV NIKOLA
+SOLAROV RADIVOJ
+SOLDAT BOŠKO
+SOLDAT BRANKA
+SOLDAT DRAGO
+SOLDAT MILOŠ
+SOLDAT MITAR
+SOLDAT PETAR
+SOLDAT VESNA
+SOLDATOVIĆ ĐORĐE
+SOLDATOVIĆ ĐORĐE
+SOLDATOVIĆ GORAN
+SOLDATOVIĆ JOVAN
+SOLDATOVIĆ MILA
+SOLDATOVIĆ SAVA NOVINAR
+SOLDATOVIĆ STANOJE
+SOLDATOVIĆ VESNA
+SOLDATOVIĆ VOJO
+SOLDO ALEKSANDAR
+SOLDO IVAN
+SOLDO NOVICA
+SOLDO VLADIMIR
+SOLEŠA MIŠO
+SOLOMUN BRANKO
+SOLOMUN DRAGO
+SOLOMUN ILIJA
+SOLOMUN MILE
+SOLOMUN VESA
+SOLONJA STEVAN
+SOMBORAC ALEKSANDAR
+SOMBORAC JOVAN
+SOMBORAC MARIJA
+SOMBORAC SREĆKO
+SOMBORAC TEREZA
+SOMBORAC TODOR
+SOMBORSKI LAZAR
+SOMBORSKI MILICA
+SOMER IMRE
+SOMER JELENA
+SOMER TIBOR
+SOPKA ANICA
+SOPKA JANKO
+SOPKA LJUBOMIR
+SOPKA LJUBOMIR
+SOPKA MARIJA
+SOPKA MIROSLAV
+SORŠAK MILAN
+SORŠAK VALENTIN
+SORADI ANTUN
+SORADI IVAN
+SORADI STJEPAN
+SORAJIĆ MILAN
+SORAJIĆ MILIVOJ
+SORAK DELIVOJE
+SORG ANGELINA
+SORG JELENA
+SORG NIKOLA
+SORGER MIRA
+SORO MILAN
+SORO MIODRAG
+SORO MIRJANA
+SORO NIKOLA
+SORO SIMO
+SOTER JANOŠ
+SOTIROVIĆ SLAVICA
+SOTONICA RAJKO
+SOVA PETAR
+SOVA RUDI
+SOVIŠ ĐORĐE
+SOVIŠ MIŠA
+SOVIŠ OLGA
+SOVIŠ PAVLE
+SOVILJ ĐORĐE
+SOVILJ ĐURO
+SOVILJ ANĐELKO
+SOVILJ ANKA
+SOVILJ BOŽO
+SOVILJ BOGDAN
+SOVILJ DUŠAN
+SOVILJ ILIJA
+SOVILJ ILIJA
+SOVILJ ILIJA
+SOVILJ IVICA
+SOVILJ JOVAN DR LEKAR
+SOVILJ LJUBICA
+SOVILJ MILAN MR
+SOVILJ MILAN
+SOVILJ PERKA
+SOVILJ PETAR
+SOVILJ PETAR
+SOVILJ VLADO
+SPAHIĆ KEMAL
+SPAIĆ ŽELJKO
+SPAIĆ MILAN
+SPAIĆ MILAN
+SPAJIĆ BOŽA
+SPAJIĆ DIKO
+SPAJIĆ JOVAN
+SPAJIĆ JULIJANA
+SPAJIĆ MILOJE
+SPAJIĆ MIRJANA
+SPAJIĆ SOFIJA
+SPAJIĆ VOJISLAV
+SPAJIĆ ZORAN
+SPAJIĆ ZORAN
+SPALEVIĆ MIOMIR
+SPALEVIĆ VERA
+SPARIOSI ANĐELKA
+SPASENOSKI DIMITRIJE
+SPASENOV MILE
+SPASENOV SPASKO
+SPASENOV STANA
+SPASENOVIĆ ŽIVKO
+SPASENOVIĆ LJUBICA
+SPASENOVSKI ROMAN
+SPASENOVSKI VASA
+SPASIĆ ŽIVOMIR
+SPASIĆ ĐORĐE
+SPASIĆ ALEKSANDAR
+SPASIĆ BOŽIDAR
+SPASIĆ BRANISLAV
+SPASIĆ BRANISLAV
+SPASIĆ DRAGIŠA
+SPASIĆ GORDANA
+SPASIĆ GORDANA
+SPASIĆ JELISAVETA
+SPASIĆ JOVAN
+SPASIĆ JUGOSLAV
+SPASIĆ LJILJANA
+SPASIĆ LJUBICA
+SPASIĆ MILAN
+SPASIĆ MILEVA
+SPASIĆ MILOŠ
+SPASIĆ MILUTIN
+SPASIĆ MIRJANA
+SPASIĆ MIRKO
+SPASIĆ OLIVERA
+SPASIĆ PETAR
+SPASIĆ PREDRAG
+SPASIĆ STANIŠA
+SPASIĆ STANKO
+SPASIĆ STOJAN
+SPASIĆ SVETISLAV
+SPASIĆ TOMISLAV DIPL ING
+SPASIĆ TOMISLAV
+SPASIĆ TRAJANKA
+SPASIĆ VELIČKO
+SPASIĆ VUJICA
+SPASOJEV LJUBICA
+SPASOJEV STOJAN
+SPASOJEVIĆ ŽIVOTA
+SPASOJEVIĆ ĐORĐE
+SPASOJEVIĆ ĐURA
+SPASOJEVIĆ BORIŠA MR
+SPASOJEVIĆ BORISLAV
+SPASOJEVIĆ CVETKO
+SPASOJEVIĆ DESIMIR
+SPASOJEVIĆ DOBRILA
+SPASOJEVIĆ DOBROSAV
+SPASOJEVIĆ DRAGAN
+SPASOJEVIĆ DRAGIŠA
+SPASOJEVIĆ DRAGOLJUB
+SPASOJEVIĆ DRAGOMIR
+SPASOJEVIĆ DUŠAN
+SPASOJEVIĆ ELIZABETA
+SPASOJEVIĆ GOSPAVA
+SPASOJEVIĆ GOSTIMIR
+SPASOJEVIĆ JOVAN
+SPASOJEVIĆ JULKA
+SPASOJEVIĆ KATICA
+SPASOJEVIĆ KRSTA
+SPASOJEVIĆ LAZAR
+SPASOJEVIĆ MIĆO
+SPASOJEVIĆ MIĆO
+SPASOJEVIĆ MIHAJLO
+SPASOJEVIĆ MILORAD
+SPASOJEVIĆ MIODRAG
+SPASOJEVIĆ MIODRAG
+SPASOJEVIĆ MOMČILO
+SPASOJEVIĆ NEBOJŠA
+SPASOJEVIĆ NOVAK
+SPASOJEVIĆ PAVLE
+SPASOJEVIĆ PREDRAG
+SPASOJEVIĆ RACO
+SPASOJEVIĆ RADISAV
+SPASOJEVIĆ RADOJLE
+SPASOJEVIĆ RANKO DIPL ING
+SPASOJEVIĆ RODOLJUB
+SPASOJEVIĆ RUŽICA
+SPASOJEVIĆ SLAVKA
+SPASOJEVIĆ SLAVKO
+SPASOJEVIĆ SLAVO
+SPASOJEVIĆ SLOBODAN
+SPASOJEVIĆ SONJA
+SPASOJEVIĆ STANISLAVA
+SPASOJEVIĆ STEVAN
+SPASOJEVIĆ SUZANA
+SPASOJEVIĆ VITOMIR DR
+SPASOJEVIĆ VLADIMIR
+SPASOJEVIĆ ZORAN
+SPASOLI FERAT
+SPASOVA LJUBICA
+SPERANSKI LJUDMILA MR
+SPERNJAK ĐORĐE
+SPERNJAK BOGDAN
+SPERNJAK LJUBINKA
+SPERNJAK MILENKO DIPL ING
+SPEVAK DANIELA
+SPEVAK JURAJ
+SPEVAK ZOROSLAV
+SPIČANOVIĆ EVICA
+SPIČANOVIĆ MAJA
+SPIČANOVIĆ ZAGORKA
+SPILKUCIĆ BORIVOJE
+SPIRIĆ ALEKSANDAR
+SPIRIDONOV ANASTAS
+SPIRIDONOVIĆ GRADIMIR
+SPIRIDONOVIĆ MILENKO
+SPIRIDONOVIĆ SILVIJA
+SPIROSKI ALEKSANDAR
+SPIROVSKI CANE
+SPOJA ŽELJKO
+SPREMIĆ DRAGAN
+SPREMIĆ PETAR
+SPREMIĆ SRETEN
+SPREMO ĐURO
+SPREMO MIODRAG
+SPREMO MIRKO
+SPREMO MIROSLAV
+SPREMO RADOVAN
+SPREMO SLAVKO
+SPREMO VOJISLAV
+SPUSENIK LAJOŠ
+SRĐANOV ŽARKO
+SRĐANOV ŽIVKO
+SRĐANOV KONSTANTIN
+SRĐANOV MIHAJLO
+SRĐANOV MILIVOJ
+SRĐANOV MILOŠ DIPL ING
+SRĐANOV MILOŠ
+SRĐANOV MIROSLAV
+SRĐANOV NADA
+SRĐANOV NADA
+SRĐANOV SLAVKO
+SRĐANOV SLOBODANKA
+SRĐANOV SLOBODANKA
+SRĐANOV SLOBODAN
+SRĐANOV VERA
+SRĐENOVIĆ MILAN
+SRĐENOVIĆ UROŠ
+SRĐEVIĆ BOJAN
+SRBIN ANKA
+SRBIN BOGDAN
+SRBIN JOVAN DR
+SRBIN KOSTA
+SRBIN MIROSLAV
+SRBINOVSKI BORIS
+SRBINOVSKI DRAGANA
+SRBINOVSKI DRAGANA
+SRBINOVSKI MAŠA
+SRBINOVSKI PANTA
+SRBINOVSKI PETAR
+SRBLJAN LAZAR
+SRBLJANIN DRAGAN
+SRBLJANIN PREDRAG
+SRBOVAN JON
+SRBULOVIĆ BOŽIDAR
+SRBULOVIĆ DRAGOLJUB
+SRBULOVIĆ MIROSLAV
+SRDANOV ŽIVAN
+SRDANOV ŽIVOJIN
+SRDANOV ĐORĐE
+SRDANOV BOŽIDAR
+SRDANOV JELKA
+SRDANOV JOVAN
+SRDANOV LAZAR
+SRDANOV LAZAR
+SRDANOV LJILJANA
+SRDANOV MIŠA
+SRDANOV MILICA
+SRDANOV MILOŠ
+SRDANOV MILOSAVA
+SRDANOV PETAR
+SRDANOV SIMA
+SRDANOV SLAVKA
+SRDANOV SLOBODAN
+SRDANOV SLOBODAN
+SRDANOV TODOR
+SRDANOVIĆ BRANISLAV
+SRDANOVIĆ DEJAN
+SRDANOVIĆ DRAGOJE
+SRDANOVIĆ FILIP
+SRDANOVIĆ LEPOSAVA
+SRDANOVIĆ OZREN DIPL ING
+SRDANOVIĆ ROSANDA
+SRDANOVIĆ SANJA
+SRDIĆ ČEDOMIR
+SRDIĆ ŽIVKO
+SRDIĆ ŽIVKO
+SRDIĆ ŽIVKO
+SRDIĆ ĐORĐE MR
+SRDIĆ ĐURO
+SRDIĆ ANĐA
+SRDIĆ ANA
+SRDIĆ BOŠKO
+SRDIĆ BOGDAN
+SRDIĆ BOSA
+SRDIĆ BRANISLAV
+SRDIĆ DANE
+SRDIĆ DIJANA
+SRDIĆ DUŠAN
+SRDIĆ EMERIKA
+SRDIĆ EMERIKA
+SRDIĆ GORAN
+SRDIĆ IVAN
+SRDIĆ JELENA
+SRDIĆ LJUBICA
+SRDIĆ MILAN
+SRDIĆ MILAN
+SRDIĆ MILICA
+SRDIĆ MIRJANA
+SRDIĆ MIRKO
+SRDIĆ MIRKO
+SRDIĆ NADA
+SRDIĆ NADA
+SRDIĆ NIKOLA
+SRDIĆ NIKOLA
+SRDIĆ NIKOLA
+SRDIĆ PETAR
+SRDIĆ RADE
+SRDIĆ RADE
+SRDIĆ SIMA
+SRDIĆ SLOBODAN
+SRDIĆ SVETOZAR
+SRDIĆ VASO
+SRDIĆ VLADIMIR
+SRDIĆ VOJA
+SRDIĆ ZORA
+SREĆKOV ŽIVKO
+SREĆKOV BLAGICA
+SREĆKOV BRANKO
+SREĆKOV DRAGAN
+SREĆKOV DRAGICA
+SREĆKOV DUŠAN
+SREĆKOV DUŠAN
+SREĆKOV ERŽEBET
+SREĆKOV JOVAN
+SREĆKOV KATICA
+SREĆKOV MILENA
+SREĆKOV MILENA
+SREĆKOV MILIVOJ
+SREĆKOV MIROSLAV
+SREĆKOV RADIVOJ
+SREĆKOV RADOJKA
+SREĆKOV STANKO
+SREĆKOV STEVAN
+SREĆKOV TEODORA
+SREĆKOV VASA
+SREĆKOV ZDRAVKO
+SREĆKOVIĆ ALEKSANDAR DR
+SREĆKOVIĆ DRAGIŠA
+SREĆKOVIĆ MARIJA
+SREĆKOVIĆ MILUTIN
+SREĆKOVIĆ RADIŠA
+SREĆKOVIĆ STOJANA
+SREĆO DANICA
+SREĆO MIĆO
+SREBOTNJAK STANKO
+SREBRO ILIJA DR
+SREDANOVIĆ MILORAD DIPL ING
+SREDANOVIĆ NEDELJKO
+SREDOJEVIĆ DARINKA
+SREDOJEVIĆ DOBRO
+SREDOJEVIĆ JULKICA
+SREDOJEVIĆ LAZAR
+SREDOJEVIĆ MILISAV
+SREDOJEVIĆ MIRKO
+SREDOJEVIĆ NEBOJŠA
+SREDOJEVIĆ VELIMIR
+SREDOJEVIĆ VELIMIR
+SREDOVIĆ RAJKO
+SREJIĆ BORKA
+SREMČEV ĐORĐE
+SREMČEV ALEKSANDAR DR LEKAR
+SREMČEV LAZAR
+SREMČEV MARIJA
+SREMČEV NESTOR
+SREMČEV SLOBODAN
+SREMČEV SOFIJA
+SREMČEVIĆ BORISLAV
+SREMČEVIĆ JOVAN
+SREMČEVIĆ JOVAN
+SREMČEVIĆ KATA
+SREMČEVIĆ KATICA
+SREMČEVIĆ LJUBIŠA
+SREMČEVIĆ RADIVOJ
+SREMČEVIĆ RASTKO
+SREMČEVIĆ SLAVNA
+SREMČEVIĆ STANISLAV
+SREMČEVIĆ VELJKO
+SREMAČKI ĐORĐE
+SREMAČKI DRAGOLJUB
+SREMAČKI DUŠANKA
+SREMAČKI-GAVRILOVIĆ MAJA
+SREMAČKI IVANKA
+SREMAČKI JOVANKA
+SREMAČKI MILOŠ
+SREMAČKI-MIRKOVIĆ MIRJANA
+SREMAČKI PETAR
+SREMAČKI SIMA
+SREMAČKI SOKA
+SREMAČKI SPASOJE
+SREMAČKI STANOJE
+SREMAČKI VLADA
+SREMAČKI ZORICA
+SREMAC ĐORĐE
+SREMAC ALEKSANDAR
+SREMAC DRAGOLJUB
+SREMAC ISAK
+SREMAC JANKO
+SREMAC JOVAN
+SREMAC LJUBICA
+SREMAC LJUBICA
+SREMAC MILENA
+SREMAC MILENKO
+SREMAC MILIVOJ
+SREMAC MIRA
+SREMAC NIKOLA
+SREMAC PAULINA
+SREMAC PAVLE
+SREMAC PERSIDA
+SREMAC RADOJKO
+SREMAC SLOBODAN
+SREMAC SRĐAN
+SREMAC STOJANKA
+SREMAC SVETISLAV
+SREMAC SVETISLAV
+SREMAC TANASIJE
+SREMAC VLADIMIR
+SREMAC VLAJKO
+SREMAC ZORANA
+SREMAC ZORAN
+SRETENOVIĆ ĐURĐINKA
+SRETENOVIĆ BORIVOJ
+SRETENOVIĆ-MANOJLOVIĆ ĐURĐINKA
+SRETENOVIĆ NEVENKA
+SRETENOVIĆ STOJADIN
+SRETIĆ MILENKO
+SRETIĆ MIRJANA
+SRETIĆ RATOMIR
+SRETKOVIĆ VERICA
+SRNDOVIĆ ZORKA
+SRNEC ŽELJKO
+SRNIĆ BOGDAN
+SRNIĆ EVICA
+SRNKA JANKO
+SRNKA JOVAN
+STAŠUK MIHAJLO
+STAHANIĆ ANKA
+STAIN STEVAN
+STAJČIĆ IVAN
+STAJČIĆ PETAR
+STAJŠIĆ ĐURA
+STAJIĆ ĐORĐE
+STAJIĆ ALEKSANDRA
+STAJIĆ BOŽIDAR
+STAJIĆ BORISLAV
+STAJIĆ BORISLAV
+STAJIĆ BORIVOJ
+STAJIĆ BRANIMIR
+STAJIĆ BRANISLAV
+STAJIĆ DRAGOLJUB
+STAJIĆ DUŠAN
+STAJIĆ DUŠICA
+STAJIĆ FEMA
+STAJIĆ GLIGORIJE
+STAJIĆ GLIGORIJE
+STAJIĆ GRIGORIJE DIPL ING
+STAJIĆ JUSTINA
+STAJIĆ LEPOSAVA
+STAJIĆ LJUBOMIR
+STAJIĆ MARA
+STAJIĆ MARIJA
+STAJIĆ MILAN DIPL ING
+STAJIĆ MILAN
+STAJIĆ MILESA
+STAJIĆ MILEVA
+STAJIĆ MILKA
+STAJIĆ MIROSLAV
+STAJIĆ NESTOR
+STAJIĆ PAVLE
+STAJIĆ PETAR
+STAJIĆ-POPOV BORISLAVA DR
+STAJIĆ RADIVOJ
+STAJIĆ RADOSLAV
+STAJIĆ SIKA
+STAJIĆ SRETA
+STAJIĆ STANISLAV
+STAJIĆ STOJADIN
+STAJIĆ TODOR
+STAJIĆ VELIMIR
+STAJIĆ VUKOSAV
+STAJIĆ ZLATA
+STAJKOVIĆ BRATISLAV
+STAJKOVIĆ DRAGOLJUB
+STAKIĆ ŽIVAN
+STAKIĆ ŽIVKA
+STAKIĆ ĐURO
+STAKIĆ ALEKSANDAR
+STAKIĆ BOŠKO
+STAKIĆ BOŽIDAR
+STAKIĆ BORIVOJE
+STAKIĆ BRANISLAV
+STAKIĆ DEJAN
+STAKIĆ DUŠAN DIPL ING
+STAKIĆ JELENA
+STAKIĆ JOVAN SUDIJA
+STAKIĆ MELINDA
+STAKIĆ MILAN
+STAKIĆ MILAN
+STAKIĆ MIRKO
+STAKIĆ MOMIR
+STAKIĆ NEBOJŠA
+STAKIĆ NEDELJKO
+STAKIĆ NIKOLA
+STAKIĆ PAVLE
+STAKIĆ SPOMENKA
+STAKIĆ STOJAN
+STAKIĆ VERA
+STAKIĆ ZAHARIJE
+STAKIĆ ZORAN
+STAKORIĆ ZDRAVKO
+STAMATOVIĆ MILENKO DR
+STAMATOVIĆ MILORAD
+STAMENIĆ DAMNJAN
+STAMENIĆ MARKO
+STAMENIĆ RADOSAV
+STAMENIĆ TOMISLAV
+STAMENKOVIĆ ŽIVOJIN
+STAMENKOVIĆ ŽIVOJIN
+STAMENKOVIĆ ALEKSANDAR
+STAMENKOVIĆ BLAGOJE
+STAMENKOVIĆ DRAGAN
+STAMENKOVIĆ GORDANA
+STAMENKOVIĆ LJUBOMIR DR
+STAMENKOVIĆ LJUBOMIR
+STAMENKOVIĆ MARJAN
+STAMENKOVIĆ MILORAD
+STAMENKOVIĆ MIROSLAVA
+STAMENKOVIĆ NOVICA
+STAMENKOVIĆ PETRONIJE
+STAMENKOVIĆ RADOMIR DIPL ING
+STAMENKOVIĆ SINIŠA
+STAMENKOVIĆ SLAVOLJUB
+STAMENKOVIĆ SLOBODAN
+STAMENKOVIĆ SRETEN DR
+STAMENKOVIĆ SRETEN
+STAMENKOVIĆ STANIMIR
+STAMENKOVIĆ STOJAN
+STAMENKOVIĆ STOJAN
+STAMENKOVIĆ STOJAN
+STAMENKOVIĆ VASILIJE
+STAMENKOVIĆ VELIBOR
+STAMENKOVIĆ VERA
+STAMENKOVIĆ VLADIMIR DIPL ING
+STAMENKOVIĆ VLADIMIR
+STAMENKOVIĆ VLASTIMIR
+STAMENKOVIĆ VUKADIN
+STAMENKOVIĆ ZORAN
+STAMENKOVIĆ ZORA
+STAMENOV BRANKO
+STAMENOV NIKOLA
+STAMENOV SLAVKA
+STAMENOVIĆ KRSTIVOJ
+STAMENOVIĆ RAJKO
+STAMEVSKI TONČE
+STAMORAN KATICA
+STAMPFER ROZALIJA
+STANČETIĆ DRAGICA
+STANČETIĆ PAVLE
+STANČIĆ ANĐELKA
+STANČIĆ ANDRIJA DR
+STANČIĆ BLAGOJE MR
+STANČIĆ BOŽANA
+STANČIĆ BOŽIDAR
+STANČIĆ DANICA
+STANČIĆ DRAGOLJUB
+STANČIĆ LAZAR
+STANČIĆ LJUBOMIR
+STANČIĆ MARIJA
+STANČIĆ MARKO
+STANČIĆ MIĆA
+STANČIĆ MIHAJLO
+STANČIĆ MIKA
+STANČIĆ MIODRAG
+STANČIĆ NIKOLA
+STANČIĆ PAVLE
+STANČIĆ TANKOSAVA
+STANČIĆ TIHOMIR
+STANČIĆ ZORAN
+STANČIK MARGITA
+STANČU MARIJA
+STANČUL ŽIVAN
+STANČUL ANKA
+STANČUL LJILJANA
+STANČUL LJUBOMIR
+STANČUL RADISLAV
+STANČUL RADOVAN
+STANČUL SAVA
+STANČULOV DRAGICA
+STANČULOV MILAN
+STANAĆEV ŽIVA
+STANAĆEV MILENA
+STANAĆEV MILIVOJ
+STANAĆEV SREDOJE DR
+STANAR ĐURA
+STANAR ĐURA
+STANAR ĐURA
+STANAR ANKA
+STANAR DESA
+STANAR DUŠANKA
+STANAR DUŠAN
+STANAR-GOGIĆ STEVAN
+STANAR ILIJA
+STANAR MILE
+STANAR RADE
+STANAR RATKO
+STANAREVIĆ ŽELJKO
+STANAREVIĆ BOŽA
+STANAREVIĆ MARKO
+STANAREVIĆ MIHAJLO
+STANAREVIĆ MILAN
+STANAREVIĆ NEDELJKA
+STANAREVIĆ SAVA
+STANBOLIJA MIRKO
+STANEKOVIĆ MILAN
+STANEKOVIĆ STANISLAV
+STANEKOVIĆ VOJA
+STANIČKOV ČEDOMIR
+STANIČKOV BORA
+STANIČKOV JOVAN
+STANIČKOV LJILJANA
+STANIČKOV MARTA
+STANIŠIĆ BOGOLJUB
+STANIŠIĆ BORISLAV
+STANIŠIĆ BUDINKA
+STANIŠIĆ DAMJAN
+STANIŠIĆ DRAGOLJUB
+STANIŠIĆ DRAGOLJUB
+STANIŠIĆ DRAGOMIR
+STANIŠIĆ DUŠAN
+STANIŠIĆ DUŠAN
+STANIŠIĆ GOJKO
+STANIŠIĆ JELENA
+STANIŠIĆ JOVAN
+STANIŠIĆ JOVAN
+STANIŠIĆ KATICA
+STANIŠIĆ LEPOSAVA
+STANIŠIĆ LJILJANA DR
+STANIŠIĆ LJUBICA
+STANIŠIĆ MARKO
+STANIŠIĆ MARKO
+STANIŠIĆ MILAN
+STANIŠIĆ MILAN
+STANIŠIĆ MILIĆ DR LEKAR
+STANIŠIĆ MILIVOJ
+STANIŠIĆ MILOŠ
+STANIŠIĆ MIODRAG
+STANIŠIĆ MIODRAG
+STANIŠIĆ MLADEN
+STANIŠIĆ MOMIR
+STANIŠIĆ NEBOJŠA
+STANIŠIĆ NEDELJKA
+STANIŠIĆ NIKOLA
+STANIŠIĆ NIKOLA
+STANIŠIĆ OLGICA
+STANIŠIĆ PAVLE
+STANIŠIĆ PAVLE
+STANIŠIĆ PETAR
+STANIŠIĆ PROKA
+STANIŠIĆ RADA
+STANIŠIĆ RADOVAN
+STANIŠIĆ RATKO
+STANIŠIĆ RELJA
+STANIŠIĆ SIMO
+STANIŠIĆ SLAVKO DIPL ING
+STANIŠIĆ SLOBODAN
+STANIŠIĆ STANIŠA
+STANIŠIĆ STANISLAV
+STANIŠIĆ STEVO
+STANIŠIĆ STOJANČA
+STANIŠIĆ SVETLANA
+STANIŠIĆ SVETOZAR DR
+STANIŠIĆ SVETOZAR
+STANIŠIĆ TIHOMIR
+STANIŠIĆ TODOR
+STANIŠIĆ TOMAŠ
+STANIŠIĆ VASILJKA
+STANIŠIĆ VELJKO
+STANIŠIĆ VLADA
+STANIŠIĆ ZORAN
+STANIŠIĆ ZORAN
+STANIŠIN BRANKO
+STANIŠIN ISA
+STANIŠIN VOJIN
+STANIŠLJEVIĆ DUŠANKA
+STANIĆ ŽIVADIN
+STANIĆ ŽIVAN
+STANIĆ ĐURA
+STANIĆ ALEKSANDAR
+STANIĆ BOŠKO
+STANIĆ BOGDAN
+STANIĆ BRANKA
+STANIĆ BRANKO
+STANIĆ BRANKO
+STANIĆ DANE
+STANIĆ DANICA
+STANIĆ DANKA
+STANIĆ DRAGAN
+STANIĆ DRAGOSLAV DR
+STANIĆ DRAGO
+STANIĆ DUŠAN
+STANIĆ GOJKO
+STANIĆ ILIJA
+STANIĆ ILIJA
+STANIĆ ILIJA
+STANIĆ ILIJA
+STANIĆ IVAN
+STANIĆ JADRANKA
+STANIĆ JELENA
+STANIĆ JOVAN DIPL ING
+STANIĆ JOVAN DIPL ING
+STANIĆ JULKA
+STANIĆ KRISTIVOJE
+STANIĆ LINKA
+STANIĆ LJUBODRAG
+STANIĆ MANE
+STANIĆ MARKO
+STANIĆ MILAN DIPL PRAVNIK
+STANIĆ MILANKO
+STANIĆ MILANKO
+STANIĆ MILAN
+STANIĆ MILAN
+STANIĆ MILAN
+STANIĆ MILAN
+STANIĆ MILE
+STANIĆ MILICA
+STANIĆ MILINKO
+STANIĆ MILISAV
+STANIĆ MILOJE
+STANIĆ MILOSAVA
+STANIĆ MLADEN
+STANIĆ MOMČILO
+STANIĆ OLGA
+STANIĆ OSTOJA
+STANIĆ PETAR
+STANIĆ PETAR
+STANIĆ PETAR
+STANIĆ RADE
+STANIĆ RADE
+STANIĆ RADIŠA
+STANIĆ RADOVAN DIPL ING
+STANIĆ RAJKO
+STANIĆ SAVO
+STANIĆ SIMO
+STANIĆ SINIŠA
+STANIĆ SPASOJE
+STANIĆ SRĐAN
+STANIĆ STAMENA
+STANIĆ STEVAN
+STANIĆ UROŠ
+STANIĆ VELIBOR
+STANIĆ VIKTOR
+STANIĆ VITOMIR
+STANIĆ VITOMIR
+STANIĆ VLADIMIR
+STANIĆ VOJISLAV
+STANIĆ ZORAN
+STANIĆ ZORAN
+STANIŽAN MILORAD
+STANIK OLGA
+STANIKIĆ MILAN
+STANIKIĆ MILEVA
+STANIMIROV ALEKSANDAR
+STANIMIROV ANA
+STANIMIROV BORIVOJ
+STANIMIROV BRANKA
+STANIMIROV DUŠAN
+STANIMIROV GAVRA
+STANIMIROV JELKA
+STANIMIROV KATICA
+STANIMIROV LJILJANA
+STANIMIROV LJILJANA
+STANIMIROV LJUBICA
+STANIMIROV NEDELJKO
+STANIMIROV RADIVOJ
+STANIMIROV RANKA
+STANIMIROV SLAVKO
+STANIMIROV ZORICA
+STANIMIROVIĆ ŽIVOJIN
+STANIMIROVIĆ DESIMIR
+STANIMIROVIĆ DRAGAN
+STANIMIROVIĆ DRAGAN
+STANIMIROVIĆ DRAGOMIR
+STANIMIROVIĆ JADRANKA
+STANIMIROVIĆ JELICA
+STANIMIROVIĆ KRSTO
+STANIMIROVIĆ MOMA DR
+STANIMIROVIĆ PAVLE
+STANIMIROVIĆ RADOJKA
+STANIMIROVIĆ STANIMIR
+STANIMIROVIĆ TATJANA
+STANIMIROVIĆ TRIFUN
+STANIMIROVIĆ VERONIKA
+STANISAVLJEV ĐOKA
+STANISAVLJEV ĐORĐE
+STANISAVLJEV ALEKSANDRA
+STANISAVLJEV ANA
+STANISAVLJEV DOBRIVOJ
+STANISAVLJEV DUŠAN
+STANISAVLJEV LJUBICA
+STANISAVLJEV LJUBOMIR
+STANISAVLJEV MILAN
+STANISAVLJEV MILICA
+STANISAVLJEV MILOJKO
+STANISAVLJEV MIROSLAV
+STANISAVLJEVIĆ ĐORĐE DIPL ING
+STANISAVLJEVIĆ ĐORĐE
+STANISAVLJEVIĆ BILJANA
+STANISAVLJEVIĆ BOŽA
+STANISAVLJEVIĆ CVETA
+STANISAVLJEVIĆ DANE
+STANISAVLJEVIĆ DIMITRIJE
+STANISAVLJEVIĆ DRAGOMIR
+STANISAVLJEVIĆ DUŠANKA
+STANISAVLJEVIĆ ELIZABETA
+STANISAVLJEVIĆ GIZELA
+STANISAVLJEVIĆ GORDANA
+STANISAVLJEVIĆ IGNJATIJE
+STANISAVLJEVIĆ KATICA
+STANISAVLJEVIĆ LEPOSAVA
+STANISAVLJEVIĆ MARIJA
+STANISAVLJEVIĆ MILAN
+STANISAVLJEVIĆ MILAN
+STANISAVLJEVIĆ MILIVOJE
+STANISAVLJEVIĆ MILOŠ
+STANISAVLJEVIĆ MIODRAG
+STANISAVLJEVIĆ MIODRAG
+STANISAVLJEVIĆ MIRKO
+STANISAVLJEVIĆ NADA
+STANISAVLJEVIĆ RADE
+STANISAVLJEVIĆ RUŽICA
+STANISAVLJEVIĆ SAVA DIPL ING
+STANISAVLJEVIĆ STAVRA DIPL ING
+STANISAVLJEVIĆ STEVAN
+STANISAVLJEVIĆ VELIZAR
+STANISAVLJEVIĆ VELJKO
+STANISAVLJEVIĆ ZORICA
+STANIVUK ŽARKO
+STANIVUK DEJAN
+STANIVUK MIRKO
+STANIVUK MLADEN
+STANIVUK NADA
+STANIVUK NEDELJKO
+STANIVUK NIKOLA
+STANIVUK ZDRAVKO
+STANIVUKOVIĆ DRAGUTIN MR
+STANIVUKOVIĆ DRAGUTIN
+STANIVUKOVIĆ LJILJANA
+STANIVUKOVIĆ MARIJA
+STANIVUKOVIĆ MILIVOJ DR VETERINE
+STANIVUKOVIĆ UROŠ
+STANKIĆ DRAGAN
+STANKIĆ LAZAR
+STANKIĆ MILOŠ
+STANKIĆ STEVAN
+STANKIĆ VILOGORKA
+STANKIJEVIĆ DUŠAN
+STANKIN ĐORĐE
+STANKIN BRANKA
+STANKIN JASMINA
+STANKIN MILE
+STANKIN MILIVOJ
+STANKIN MILIVOJ
+STANKIN TODOR
+STANKO IMRE
+STANKO IVAN
+STANKO JOSIP DIPL ING
+STANKO STEVAN
+STANKO STEVAN
+STANKO STEVAN
+STANKO VERICA
+STANKOV ŽARKO
+STANKOV ŽIVKA
+STANKOV ŽIVKO
+STANKOV ŽIVKO
+STANKOV ĐORĐE
+STANKOV BOJANA
+STANKOV DARINKA
+STANKOV DARKO
+STANKOV DUŠAN
+STANKOV DUŠAN
+STANKOV EŽEBET
+STANKOV IVANKA
+STANKOV IVAN
+STANKOV JELENA
+STANKOV KATICA
+STANKOV KOVINA
+STANKOV LJUBICA
+STANKOV MARIJA
+STANKOV MARINKO
+STANKOV MARKO
+STANKOV MILANKO
+STANKOV MILANKO
+STANKOV MILOŠ
+STANKOV MIRJANA
+STANKOV MIROSLAV
+STANKOV NEVENKA
+STANKOV NIKOLA
+STANKOV PAJA DR
+STANKOV PAVLE
+STANKOV PETAR
+STANKOV PETAR
+STANKOV RADOVAN
+STANKOV RASTKO
+STANKOV RUŽICA
+STANKOV SLOBODANKA
+STANKOV SOFIJA
+STANKOV STANKA
+STANKOV STEVAN
+STANKOV STEVAN
+STANKOV STOJAN
+STANKOV SVETISLAV
+STANKOV SVETOZAR
+STANKOV VELJKO
+STANKOV VELJKO
+STANKOV VLADIMIR
+STANKOV VOJISLAV
+STANKOV VOJISLAV
+STANKOV VOJISLAV
+STANKOV ZORANKA
+STANKOV ZORAN
+STANKOVIĆ ŽARKO
+STANKOVIĆ ŽARKO
+STANKOVIĆ ŽIVKO
+STANKOVIĆ ŽIVKO
+STANKOVIĆ ŽIVOJIN
+STANKOVIĆ ŽIVOJIN
+STANKOVIĆ ŽIVORAD
+STANKOVIĆ ĐORĐE
+STANKOVIĆ ĐORĐE
+STANKOVIĆ ĐORE
+STANKOVIĆ ĐURO
+STANKOVIĆ ALEKSANDAR
+STANKOVIĆ ALEKSANDAR
+STANKOVIĆ ALEKSANDAR
+STANKOVIĆ ANĐELKA
+STANKOVIĆ ANĐELKA
+STANKOVIĆ ANA
+STANKOVIĆ ANICA
+STANKOVIĆ ARANKA
+STANKOVIĆ AVRAM
+STANKOVIĆ BILJANA
+STANKOVIĆ BOŽIDAR
+STANKOVIĆ BOŽIDAR
+STANKOVIĆ BOGOLJUB DR
+STANKOVIĆ BOGOLJUB
+STANKOVIĆ BOJANA
+STANKOVIĆ BOJAN
+STANKOVIĆ BORA
+STANKOVIĆ BORA
+STANKOVIĆ BORA
+STANKOVIĆ BORISLAV
+STANKOVIĆ BORISLAV
+STANKOVIĆ BOSILJKA
+STANKOVIĆ BRANKO
+STANKOVIĆ DANICA
+STANKOVIĆ DANILO
+STANKOVIĆ DARINKA
+STANKOVIĆ DIVNA
+STANKOVIĆ DOBRINKA
+STANKOVIĆ DOBRIVOJE
+STANKOVIĆ DOBRIVOJE
+STANKOVIĆ DOBROSLAV
+STANKOVIĆ DRAGAN
+STANKOVIĆ DRAGAN
+STANKOVIĆ DRAGIŠA
+STANKOVIĆ DRAGIŠA
+STANKOVIĆ DRAGICA
+STANKOVIĆ DRAGOLJUB
+STANKOVIĆ DRAGORAD
+STANKOVIĆ DRAGUTIN
+STANKOVIĆ DUŠAN
+STANKOVIĆ DUŠAN
+STANKOVIĆ DUŠAN
+STANKOVIĆ DUŠAN
+STANKOVIĆ DUŠKO
+STANKOVIĆ EVELIN DR
+STANKOVIĆ EVICA
+STANKOVIĆ FREDERIK
+STANKOVIĆ ILIJA
+STANKOVIĆ ILIJA
+STANKOVIĆ IVAN
+STANKOVIĆ IVAN
+STANKOVIĆ JAGODA
+STANKOVIĆ JELENA
+STANKOVIĆ JELICA
+STANKOVIĆ JESENKA DR
+STANKOVIĆ JOVAN DIPL ING
+STANKOVIĆ JOVAN
+STANKOVIĆ JOVICA
+STANKOVIĆ JOVICA
+STANKOVIĆ KATALIN
+STANKOVIĆ KATARINA
+STANKOVIĆ KATICA
+STANKOVIĆ KOSANA
+STANKOVIĆ KOSTADIN
+STANKOVIĆ LAZAR DIPL ING
+STANKOVIĆ LAZAR
+STANKOVIĆ LAZAR
+STANKOVIĆ LJILJANA
+STANKOVIĆ LJILJANA
+STANKOVIĆ LJILJANA
+STANKOVIĆ LJUBICA
+STANKOVIĆ LJUBICA
+STANKOVIĆ LJUBISAV
+STANKOVIĆ LJUBOMIR
+STANKOVIĆ LJUBOMIR
+STANKOVIĆ LJUBOMIR
+STANKOVIĆ LJUBO
+STANKOVIĆ MARIJA
+STANKOVIĆ MARIJA
+STANKOVIĆ MARINKO
+STANKOVIĆ MARINKO
+STANKOVIĆ MARJAN
+STANKOVIĆ MARKO
+STANKOVIĆ MELANIJA
+STANKOVIĆ MIHAJLO
+STANKOVIĆ MIHAJLO
+STANKOVIĆ MILANKO
+STANKOVIĆ MILANKO
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILAN
+STANKOVIĆ MILENKO
+STANKOVIĆ MILOŠ
+STANKOVIĆ MILOŠ
+STANKOVIĆ MILORAD
+STANKOVIĆ MILUTIN
+STANKOVIĆ MIODRAG
+STANKOVIĆ MIOMIR
+STANKOVIĆ MIRJANA
+STANKOVIĆ MIRJANA
+STANKOVIĆ MIRKO
+STANKOVIĆ MIRKO
+STANKOVIĆ MIROLJUB
+STANKOVIĆ MIROSLAV
+STANKOVIĆ MIROSLAV
+STANKOVIĆ MITAR
+STANKOVIĆ MLADEN
+STANKOVIĆ MLADEN
+STANKOVIĆ MOMČILO
+STANKOVIĆ NADA
+STANKOVIĆ NADA
+STANKOVIĆ NADA
+STANKOVIĆ NADA
+STANKOVIĆ NATAŠA
+STANKOVIĆ NATALIJA
+STANKOVIĆ NENAD
+STANKOVIĆ NEVENA
+STANKOVIĆ NIKOLA
+STANKOVIĆ NIKOLA
+STANKOVIĆ NIKOLA
+STANKOVIĆ NIKOLA
+STANKOVIĆ NIKOLA
+STANKOVIĆ OLGA
+STANKOVIĆ OLGA
+STANKOVIĆ OLGICA
+STANKOVIĆ OSTOJA
+STANKOVIĆ PAVLE
+STANKOVIĆ PETAR
+STANKOVIĆ PETAR
+STANKOVIĆ RADIVOJ
+STANKOVIĆ RADOMIR
+STANKOVIĆ RADOSLAV
+STANKOVIĆ SAŠA
+STANKOVIĆ SAVKA
+STANKOVIĆ SAVO
+STANKOVIĆ SLAVKO
+STANKOVIĆ SLAVKO
+STANKOVIĆ SLOBODANKA
+STANKOVIĆ SLOBODAN
+STANKOVIĆ SLOBODAN
+STANKOVIĆ SLOBODAN
+STANKOVIĆ SOFIJA
+STANKOVIĆ SRĐAN
+STANKOVIĆ SRBOLJUB DIPL ING
+STANKOVIĆ STAMEN
+STANKOVIĆ STANKO
+STANKOVIĆ STANOJE
+STANKOVIĆ STEVAN
+STANKOVIĆ STEVAN
+STANKOVIĆ STEVO
+STANKOVIĆ SVETISLAV
+STANKOVIĆ SVETISLAV
+STANKOVIĆ SVETOZAR
+STANKOVIĆ SVETOZAR
+STANKOVIĆ TEREZA
+STANKOVIĆ TIOSAV
+STANKOVIĆ TOŠA
+STANKOVIĆ TOMISLAV
+STANKOVIĆ TOMISLAV
+STANKOVIĆ VENERA
+STANKOVIĆ VESELIN
+STANKOVIĆ VESELIN
+STANKOVIĆ VITOMIR
+STANKOVIĆ VLADAN
+STANKOVIĆ VLADA
+STANKOVIĆ VLADIMIR
+STANKOVIĆ VLADIMIR
+STANKOVIĆ VOJISLAV
+STANKOVIĆ-VRANIĆ MILICA
+STANKOVIĆ ZLATIVOJE
+STANKOVIĆ ZORAN
+STANKOVIĆ ZORAN
+STANKOVIĆ ZORA
+STANKOVSKI KOSTA
+STANKOVSKI STEVAN
+STANKOVSKI VELJAN
+STANOJČIĆ ĐORĐE
+STANOJČIĆ ANĐELKO
+STANOJČIĆ ANKICA
+STANOJČIĆ DESIMIR
+STANOJČIĆ DUŠANKA
+STANOJČIĆ OLGA
+STANOJČIĆ SLOBODAN
+STANOJČIĆ SOFIJA
+STANOJČIĆ STEVAN
+STANOJČIĆ VERA
+STANOJČIĆ VOJISLAV
+STANOJEV ŽIVAN
+STANOJEV ALEKSANDRA
+STANOJEV BRANISLAV
+STANOJEV DEJAN
+STANOJEV DUŠAN
+STANOJEV DUŠAN
+STANOJEV DUŠAN
+STANOJEV DUŠAN
+STANOJEV GORAN
+STANOJEV JOCA
+STANOJEV LAZAR
+STANOJEV LJUBICA
+STANOJEV MILAN
+STANOJEV-MOSKALJ OLGA
+STANOJEV NEBOJŠA
+STANOJEV NIKOLA
+STANOJEV-PETRENJ MIRJANA
+STANOJEV SAVA
+STANOJEV STANKA
+STANOJEV STEVAN
+STANOJEV TIHOMIR
+STANOJEV VERICA
+STANOJEV VLADIMIR
+STANOJEV VLADIMIR
+STANOJEVIĆ ČEDOMIR
+STANOJEVIĆ ŽARKO
+STANOJEVIĆ ŽIVANKO
+STANOJEVIĆ ŽIVOJIN
+STANOJEVIĆ ĐURA
+STANOJEVIĆ BOŽIDAR
+STANOJEVIĆ DANICA
+STANOJEVIĆ DRAGAN
+STANOJEVIĆ DRAGOLJUB
+STANOJEVIĆ DUŠAN
+STANOJEVIĆ DUŠAN
+STANOJEVIĆ HRANISLAV
+STANOJEVIĆ ILIJA
+STANOJEVIĆ JOVAN
+STANOJEVIĆ KAĆA
+STANOJEVIĆ KOSTA
+STANOJEVIĆ LJUBINKA
+STANOJEVIĆ-MANDIĆ MILA
+STANOJEVIĆ MARIJA
+STANOJEVIĆ MILAN
+STANOJEVIĆ MILAN
+STANOJEVIĆ MILAN
+STANOJEVIĆ MILAN
+STANOJEVIĆ MILA
+STANOJEVIĆ MILETA
+STANOJEVIĆ MILIVOJ
+STANOJEVIĆ MILORAD
+STANOJEVIĆ MIODRAG
+STANOJEVIĆ MIODRAG
+STANOJEVIĆ MIROSLAV
+STANOJEVIĆ NADA
+STANOJEVIĆ NATAŠA
+STANOJEVIĆ NEBOJŠA
+STANOJEVIĆ NEMANJA
+STANOJEVIĆ NESTOR
+STANOJEVIĆ NIKOLA
+STANOJEVIĆ NIKOLA
+STANOJEVIĆ PAVLE
+STANOJEVIĆ PETAR
+STANOJEVIĆ PREDRAG
+STANOJEVIĆ RADMILA
+STANOJEVIĆ RADOMIR
+STANOJEVIĆ RADOSLAV
+STANOJEVIĆ RADO
+STANOJEVIĆ SLOBODAN
+STANOJEVIĆ SOFIJA
+STANOJEVIĆ SRBOLJUB
+STANOJEVIĆ STEVAN
+STANOJEVIĆ SVETISLAV
+STANOJEVIĆ TATJANA
+STANOJEVIĆ TOMISLAV
+STANOJEVIĆ-VARGA ANA DR
+STANOJEVIĆ VELJKO
+STANOJEVIĆ VLADIMIR
+STANOJEVIĆ VLADIMIR
+STANOJEVIĆ VLADISLAV
+STANOJEVIĆ VUK
+STANOJEVIĆ ZDRAVKO
+STANOJEVIĆ ZLATKO
+STANOJEVIĆ ZORAN
+STANOJEVIĆ ZORAN
+STANOJEVIĆ ZORAN
+STANOJEVIĆ ZORAN
+STANOJKOVIĆ MILOŠ
+STANOJKOVIĆ RADE
+STANOJKOVIĆ VLADA
+STANOJLOVIĆ MITAR
+STANOJLOVIĆ STEVAN
+STANOJOSKI DANICA
+STANOJOSKI ZLATA
+STANOJSKI BLAGOJE
+STANOVIĆ STEVAN
+STANOVIĆ VESELIN
+STANTE JOSIP
+STANTIĆ BARTUL
+STANTIĆ BERTALAN
+STANTIĆ KATALIN
+STANTIĆ LADISLAV
+STANTIĆ VERONA
+STANUŠIĆ MIJAT
+STANUL PETAR
+STANULOV SVETLANA
+STANULOV TODOR
+STANULOVIĆ DIMITRIJE DR
+STANULOVIĆ MILAN DR
+STAPAR ALEKSANDAR
+STAPARSKI BORISLAV
+STAPARSKI MILAN
+STAPARSKI PETAR
+STAPARSKI STEVAN
+STARČEV ANĐELKA
+STARČEV BRANKA
+STARČEV DESANKA
+STARČEV JELA
+STARČEV KATICA
+STARČEV MILAN DIPL ING
+STARČEV MILENKO
+STARČEV MILOŠ
+STARČEV MIROSLAV
+STARČEV STOJANKA
+STARČEVIĆ ANICA
+STARČEVIĆ ANKA
+STARČEVIĆ BOŠKO
+STARČEVIĆ BOGDAN
+STARČEVIĆ BORISLAV
+STARČEVIĆ BRANISLAV
+STARČEVIĆ BUDIMIR
+STARČEVIĆ DRAGICA
+STARČEVIĆ DUŠANKA
+STARČEVIĆ DUŠAN
+STARČEVIĆ FRANJA
+STARČEVIĆ IVAN
+STARČEVIĆ LJUBINKO DIPL ING
+STARČEVIĆ MILAN
+STARČEVIĆ MILAN
+STARČEVIĆ MILAN
+STARČEVIĆ MILAN
+STARČEVIĆ MILICA
+STARČEVIĆ MILICA
+STARČEVIĆ MILKA
+STARČEVIĆ MILOVAN
+STARČEVIĆ MIODRAG
+STARČEVIĆ MIRKO
+STARČEVIĆ MIRKO
+STARČEVIĆ MIRKO
+STARČEVIĆ NIKOLA
+STARČEVIĆ OLGA
+STARČEVIĆ PAVLE
+STARČEVIĆ RUDOLF
+STARČEVIĆ STAMENKA
+STARČEVIĆ STANKO
+STARČEVIĆ STIPO
+STARČEVIĆ STOJAN
+STARČEVIĆ VLASTIMIR
+STARAČEK ŽELJKO
+STARAČEK JOŽEF
+STARAČEK JOVAN
+STAREVIĆ NIKOLA
+STARI DANIEL
+STARI LIVIJA
+STARIĆ IVAN
+STAROVIĆ BORIVOJ DR
+STAROVIĆ BRANKO
+STAROVIĆ MARIJA
+STAROVIĆ MILAN
+STAROVIĆ PREDRAG
+STAROVIĆ RADOMIR
+STAROVIĆ RASTISLAV
+STAROVIĆ ZDRAVKO
+STAROVLAH MLADEN
+STAVENOV ĐORĐE
+STAVJEL MLADEN
+STAVREVSKI BOGDAN
+STAVRIĆ ILONKA
+STAVRIĆ STANOJE
+STAVROV DANICA
+STEĆ MITAR
+STEĆ VASILIJE
+STEFAN IVAN
+STEFAN LJUBOMIRA
+STEFANIDES JULIJE
+STEFANIDES LJUDEVIT
+STEFANIDIS KIRIAKI
+STEFANJUK NIKOLA
+STEFANOV BLAGOJE
+STEFANOV LJUBOMIR
+STEFANOV NADA
+STEFANOVIĆ ŽARKO
+STEFANOVIĆ ŽIKA
+STEFANOVIĆ ŽIKA
+STEFANOVIĆ ŽIKA
+STEFANOVIĆ ŽIVKO
+STEFANOVIĆ ŽIVORAD
+STEFANOVIĆ ŽIVOTA
+STEFANOVIĆ ĐORĐE
+STEFANOVIĆ ĐURICA DR LEKAR
+STEFANOVIĆ ALEKSANDAR
+STEFANOVIĆ ALEKSANDAR
+STEFANOVIĆ ANA
+STEFANOVIĆ ANGELINA
+STEFANOVIĆ ANKA
+STEFANOVIĆ BOGDAN
+STEFANOVIĆ BOGOLJUB
+STEFANOVIĆ BORIVOJE
+STEFANOVIĆ BORIVOJ
+STEFANOVIĆ BRANISLAV
+STEFANOVIĆ BRANKA
+STEFANOVIĆ BRANKO
+STEFANOVIĆ DANICA
+STEFANOVIĆ DANICA
+STEFANOVIĆ DANILKA
+STEFANOVIĆ DARINKA
+STEFANOVIĆ DEŽE
+STEFANOVIĆ DEJAN
+STEFANOVIĆ DRAGANA
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGAN
+STEFANOVIĆ DRAGIŠA
+STEFANOVIĆ DRAGIŠA
+STEFANOVIĆ DRAGICA
+STEFANOVIĆ DRAGICA
+STEFANOVIĆ DRAGICA
+STEFANOVIĆ DRAGOLJUB
+STEFANOVIĆ DRAGOLJUB
+STEFANOVIĆ DRAGUTIN
+STEFANOVIĆ DRAGUTIN
+STEFANOVIĆ DUŠAN
+STEFANOVIĆ DUŠKO
+STEFANOVIĆ ERŽIKA
+STEFANOVIĆ-GERIĆ ZORKA
+STEFANOVIĆ GORAN
+STEFANOVIĆ GORDAN
+STEFANOVIĆ IVAN
+STEFANOVIĆ JELICA
+STEFANOVIĆ JELICA
+STEFANOVIĆ JOSIF
+STEFANOVIĆ JOVANKA
+STEFANOVIĆ JOVAN
+STEFANOVIĆ JOVAN
+STEFANOVIĆ JOZEFINA
+STEFANOVIĆ JULIJANA
+STEFANOVIĆ KARANFILA
+STEFANOVIĆ KATICA
+STEFANOVIĆ LAZAR
+STEFANOVIĆ LENKA
+STEFANOVIĆ LJUBOMIR DR
+STEFANOVIĆ LJUBOMIR
+STEFANOVIĆ LUCIJA
+STEFANOVIĆ MARIJA
+STEFANOVIĆ MARINKO
+STEFANOVIĆ MARKO
+STEFANOVIĆ MARTA
+STEFANOVIĆ MARTA
+STEFANOVIĆ MIHAJLO
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILAN
+STEFANOVIĆ MILENA
+STEFANOVIĆ MILEN
+STEFANOVIĆ MILICA
+STEFANOVIĆ MILOŠ
+STEFANOVIĆ MILOŠ
+STEFANOVIĆ MILOJE
+STEFANOVIĆ MILOVAN
+STEFANOVIĆ MILUTIN DIPL PRAVNIK
+STEFANOVIĆ MILUTIN
+STEFANOVIĆ MIOMIR
+STEFANOVIĆ MIRA
+STEFANOVIĆ MIRJANA
+STEFANOVIĆ MIRKO
+STEFANOVIĆ MIRKO
+STEFANOVIĆ MIRKO
+STEFANOVIĆ MIROSLAV
+STEFANOVIĆ MIROSLAV
+STEFANOVIĆ MIROSLAV
+STEFANOVIĆ MIROSLAV
+STEFANOVIĆ NADA
+STEFANOVIĆ NEDELJKA
+STEFANOVIĆ NIKOLA
+STEFANOVIĆ NIKOLA
+STEFANOVIĆ NIKOLA
+STEFANOVIĆ NIKOLA
+STEFANOVIĆ PANTA
+STEFANOVIĆ PAULA
+STEFANOVIĆ PETAR
+STEFANOVIĆ RADMILA
+STEFANOVIĆ RADMILA
+STEFANOVIĆ RADOSLAV
+STEFANOVIĆ RUŽICA
+STEFANOVIĆ SANJA
+STEFANOVIĆ SLAVICA DR
+STEFANOVIĆ SLAVKA
+STEFANOVIĆ SLAVKO
+STEFANOVIĆ SLAVKO
+STEFANOVIĆ SLOBODAN PROFESOR
+STEFANOVIĆ SLOBODAN
+STEFANOVIĆ SMILJA
+STEFANOVIĆ SMILJKA
+STEFANOVIĆ SNEŽANA
+STEFANOVIĆ STANIŠA
+STEFANOVIĆ STANKO
+STEFANOVIĆ STEVAN
+STEFANOVIĆ STEVAN
+STEFANOVIĆ STEVAN
+STEFANOVIĆ STJEPAN
+STEFANOVIĆ STOJANA
+STEFANOVIĆ SUZANA
+STEFANOVIĆ SVETISLAV
+STEFANOVIĆ SVETOZAR
+STEFANOVIĆ SVETOZAR
+STEFANOVIĆ TATJANA
+STEFANOVIĆ-TILIĆ DIVNA
+STEFANOVIĆ TODOR
+STEFANOVIĆ TOMISLAV
+STEFANOVIĆ VASA
+STEFANOVIĆ VASA
+STEFANOVIĆ VASILIJE
+STEFANOVIĆ VERA
+STEFANOVIĆ VERA
+STEFANOVIĆ VERICA
+STEFANOVIĆ VESNA
+STEFANOVIĆ VESNA
+STEFANOVIĆ VITOMIR
+STEFANOVIĆ VLADICA
+STEFANOVIĆ VLADIMIR
+STEFANOVIĆ VLADIMIR
+STEFANOVIĆ VLADIMIR
+STEFANOVIĆ VLADIMIR
+STEFANOVIĆ VLAJKO
+STEFANOVIĆ VOJISLAVA
+STEFANOVIĆ VOJISLAV
+STEFANOVIĆ VOJISLAV
+STEFANOVIĆ ZORAN
+STEFANOVIĆ ZORAN
+STEFANOVSKA ZORKA
+STEFANOVSKI LEVKO
+STEFANOVSKI METODIJE
+STEFANOVSKI MILORAD
+STEFANOVSKI STAMEN
+STEGIĆ DEJAN
+STEGIĆ IVAN
+STEGIĆ NIKOLA
+STEGNJAIĆ OLGA
+STEGNJAJIĆ VLADIMIR
+STEJIĆ ARANKA
+STEJIĆ JELENA
+STEJIĆ KOSTA
+STEJIĆ NEVENKA
+STEJIĆ RUŽA
+STEJIN ĐORĐE
+STEJIN BORISLAV
+STEJIN DUŠAN DIPL ING
+STEJIN JELENA
+STEJIN JOVANKA
+STEJIN LJUBICA
+STEJIN RUŽICA
+STEJIN SAŠA
+STEJIN SRĐAN
+STELA VLADIMIRA
+STELJA NOVAK
+STELJIĆ MILIVOJE
+STELJIĆ MILUN
+STELKIĆ ĐURICA
+STELKIĆ DRAGICA
+STELKIĆ MILIVOJ
+STELKIĆ RADICA
+STELKIĆ RELJA DIPL ING
+STELKIĆ SVETOZAR
+STELKIĆ ZLATOMIR
+STEPANČEV ANICA
+STEPANČEV STEVAN
+STEPANČEV VLADISLAV
+STEPANČEV ZORAN
+STEPANČEV ZORA
+STEPANČEV ZORICA
+STEPANČEVIĆ MILICA
+STEPANČEVIĆ MIODRAG
+STEPANČEVIĆ SOFIJA
+STEPANČEVIĆ SPASOJE
+STEPANIĆ MILISAV
+STEPANIĆ PREDRAG
+STEPANOV ĐORĐE
+STEPANOV ĐORĐE
+STEPANOV ĐORĐE
+STEPANOV ALEKSANDAR
+STEPANOV ALEKSANDRA
+STEPANOV ANĐELKA
+STEPANOV BRANISLAV
+STEPANOV BRANKO
+STEPANOV BRANKO
+STEPANOV DRAGIŠA
+STEPANOV DRAGICA
+STEPANOV DUŠAN
+STEPANOV DUŠAN
+STEPANOV EMIL
+STEPANOV JOLE
+STEPANOV KATICA
+STEPANOV LJILJANA
+STEPANOV LJUBOMIR DR
+STEPANOV LJUBOMIR
+STEPANOV MAKSA
+STEPANOV MARA
+STEPANOV MILANKA
+STEPANOV MILANKA
+STEPANOV MILAN
+STEPANOV MILAN
+STEPANOV MILEVA
+STEPANOV MILIVOJ
+STEPANOV MILIVOJ
+STEPANOV MILIVOJ
+STEPANOV MILOVAN
+STEPANOV NIKOLA
+STEPANOV PAJA
+STEPANOV PAJA
+STEPANOV PETAR DR
+STEPANOV PETAR
+STEPANOV PIROŠKA
+STEPANOV RADIVOJ
+STEPANOV RADOVAN
+STEPANOV SAVA
+STEPANOV SAVA
+STEPANOV SERGIJE
+STEPANOV SLOBODAN
+STEPANOV SVETISLAV
+STEPANOV VASILIJE
+STEPANOV VELIMIR
+STEPANOV VESNA
+STEPANOV VIDA
+STEPANOV VIDOSAVA
+STEPANOV VOJNA
+STEPANOV ZDRAVKO
+STEPANOVIĆ ĐURĐICA
+STEPANOVIĆ BRATISLAV
+STEPANOVIĆ DRAGIŠA
+STEPANOVIĆ DRAGICA
+STEPANOVIĆ MILORAD
+STEPANOVIĆ NEBOJŠA
+STEPANOVIĆ SLOBODAN
+STEPANOVIĆ SNEŽANA
+STEPANOVIĆ STEVAN
+STEPANOVIĆ SVETLANA
+STEPIĆ JOSIP
+STEPIĆ MARIJA
+STERIO ĐORĐE
+STERIO BRANKO DR
+STERPIN ZVONIMIR
+STEVČIĆ SAVATIJE
+STEVANČEV ANKICA
+STEVANČEV MILICA
+STEVANČEV MILORAD
+STEVANČEV OLGA
+STEVANČEVIĆ LJILJANA
+STEVANDIĆ ĐURO
+STEVANDIĆ MILICA
+STEVANDIĆ RADE
+STEVANIĆ BORIVOJE
+STEVANIĆ DRAGOSLAV
+STEVANIĆ IVAN
+STEVANIĆ MIODRAG
+STEVANIĆ SLOBODAN
+STEVANIĆ VUKOMAN
+STEVANOV ŽIVAN
+STEVANOV DRAGANA
+STEVANOV EMILKA
+STEVANOV GAVRA
+STEVANOV JELENA
+STEVANOV LJILJANA
+STEVANOV MADLEN
+STEVANOV MILORAD
+STEVANOV MILOVAN
+STEVANOV MILUTIN
+STEVANOV MLADEN
+STEVANOV MLADEN
+STEVANOV NATALIJA
+STEVANOV STANA
+STEVANOV SVETOZAR
+STEVANOV VESELIN
+STEVANOV VLADIMIR
+STEVANOV ZLATOJE
+STEVANOVIĆ ŽIVADIN
+STEVANOVIĆ ŽIVKA
+STEVANOVIĆ ŽIVORAD
+STEVANOVIĆ ADAM
+STEVANOVIĆ ALEKSANDAR
+STEVANOVIĆ BOŠKO
+STEVANOVIĆ BORA
+STEVANOVIĆ BRANISLAVA
+STEVANOVIĆ DANICA
+STEVANOVIĆ DESIMIR
+STEVANOVIĆ DRAGIŠA
+STEVANOVIĆ DRAGICA
+STEVANOVIĆ DRAGOSLAV
+STEVANOVIĆ DUŠAN DR
+STEVANOVIĆ GORAN
+STEVANOVIĆ GORAN
+STEVANOVIĆ JAROSLAV
+STEVANOVIĆ JOVAN
+STEVANOVIĆ LJUBIŠA
+STEVANOVIĆ MILADINKA
+STEVANOVIĆ MILADIN
+STEVANOVIĆ MILENKO
+STEVANOVIĆ MILE
+STEVANOVIĆ MILIVOJ
+STEVANOVIĆ MILKA
+STEVANOVIĆ MILOLJUB
+STEVANOVIĆ MIOMIR
+STEVANOVIĆ MIRA
+STEVANOVIĆ MLADENKA
+STEVANOVIĆ-NEĆAK SLOBODANKA DIPL ING
+STEVANOVIĆ NIKOSAVA
+STEVANOVIĆ RADOSLAV
+STEVANOVIĆ RAJKO
+STEVANOVIĆ RANKO DR LEKAR
+STEVANOVIĆ RATKO
+STEVANOVIĆ RUŽA
+STEVANOVIĆ SAVA
+STEVANOVIĆ SLOBODAN
+STEVANOVIĆ SNEŽANA
+STEVANOVIĆ STOJADIN
+STEVANOVIĆ SVIJETLANA
+STEVANOVIĆ TOMISLAV
+STEVANOVIĆ TOMISLAV
+STEVANOVIĆ VERA
+STEVANOVIĆ VLADA
+STEVANOVIĆ VLASTIMIR
+STEVANOVIĆ ZLATKO DR
+STEVANOVIĆ ZORAN
+STEVANOVIĆ ZORICA
+STEVANOVSKI GOŠE
+STEVANOVSKI SLOBODAN
+STEVIĆ DOBRIVOJE
+STEVIĆ DUŠAN
+STEVIĆ GORDANA
+STEVIĆ LJUBIŠA
+STEVIĆ NIKOLA
+STEVIĆ PETAR
+STEVIĆ SLOBODAN
+STEVIĆ SNEŽANA
+STEVIĆ SRBA
+STEVIĆ VELIMIR
+STEVIĆ VOJISLAV
+STEVIN BOGDAN
+STEVIN BORISLAV
+STEVIN NADA DIPL ING
+STEVIN RADOJLA
+STEVOVIĆ ANKA
+STEVOVIĆ BOŽIDAR
+STEVOVIĆ BRANISLAV
+STEVOVIĆ IVAN DIPL PRAVNIK
+STEVOVIĆ-LUKIĆ RADMILA
+STEVOVIĆ MILOSAVA
+STEVOVIĆ VOJIN
+STIJAČIĆ BRANKO
+STIJAČIĆ PAVLE
+STIJAČIĆ SVETOZAR
+STIJAKOVIĆ DRAGAN
+STIJEPOVIĆ ALEKSA
+STIJEPOVIĆ MILIJANA
+STIJOVIĆ ILIJA
+STIJOVIĆ JELISAVETA
+STIJOVIĆ MARA
+STIJOVIĆ MILAN
+STIKIĆ BILJANA
+STIKIĆ JOVAN
+STIKIĆ MOMIRKA
+STIKOVIĆ ROSA
+STILINOVIĆ KOVINKA
+STILINOVIĆ ZVONIMIR DIPL ING
+STIPANČIĆ STIPAN
+STIPANOVIĆ BJELICA
+STIPANOVIĆ GOJKO
+STIPETIĆ DRAGAN
+STIPIĆ ANDRIJA
+STIPIĆ ANTE
+STIPIĆ BUDE
+STIPIĆ GIZELA
+STIPIĆ JAŠA
+STIPIĆ NADA
+STIPIĆ OLIVERA
+STIPIĆ SONJA
+STIPIĆ VELJKO
+STISKALO TIHOMIR
+STJELJA DANICA
+STJEPČEVIĆ ANICA
+STJEPANOVIĆ BOŽO
+STJEPANOVIĆ BORIVOJE
+STJEPANOVIĆ CVEJA
+STJEPANOVIĆ JASNA
+STJEPANOVIĆ JELENA
+STJEPANOVIĆ JELISAVETA
+STJEPANOVIĆ JOVICA
+STJEPANOVIĆ STANKA
+STJEPANOVIĆ TOMISLAV
+STJEPIĆ JOSIP
+STJEPIĆ MIJO
+STOŠIĆ DRAGAN
+STOŠIĆ DRAGAN
+STOŠIĆ DRAGAN
+STOŠIĆ DUŠAN
+STOŠIĆ DUŠAN
+STOŠIĆ DUŠAN
+STOŠIĆ JELENA
+STOŠIĆ MILICA
+STOŠIĆ NEDELJKO
+STOŠIĆ RADIVOJ
+STOŠIĆ SLAVIŠA
+STOŠIĆ STOJADIN
+STOŠIĆ STOJAN
+STOŠIĆ TANJA
+STOŠIĆ TOMISLAV
+STOŠIĆ VLADIMIR
+STOŠIĆ VOJISLAV
+STOŠIĆ ZORAN
+STOŽINIĆ DRAGINJA
+STOESKI JEVTIM
+STOGOV ANATOLIJ DIPL ING
+STOILJKOVIĆ ŽIKA
+STOILJKOVIĆ DRAGOSLAV
+STOILJKOVIĆ JELICA
+STOILJKOVIĆ JOVAN
+STOILJKOVIĆ MILORAD
+STOILJKOVIĆ NENAD
+STOILJKOVIĆ STOJAN
+STOILKOVSKI BORIS
+STOISAVLJEVIĆ ĐUJA
+STOISAVLJEVIĆ MIĆO
+STOJČEV MARIJA
+STOJČEVIĆ ILIJA
+STOJČEVIĆ STANOJKO
+STOJČEVSKI BLAGOJA
+STOJČEVSKI TOMISLAV
+STOJČEVSKI TONE
+STOJČIĆ ĐORĐE
+STOJČIĆ ĐURO
+STOJČIĆ DESIMIR
+STOJČIĆ DUŠAN
+STOJČIĆ JELENA
+STOJČIĆ MILAN
+STOJČIĆ MILAN
+STOJČIĆ MILENKO
+STOJČIĆ MIROSLAV
+STOJČIĆ NIKOLA
+STOJČIĆ SREĆKO
+STOJČIĆ SRETKO
+STOJČINOVIĆ MARKO
+STOJČINOVIĆ SIMO
+STOJŠIĆ ŽIVAN
+STOJŠIĆ ĐORĐE
+STOJŠIĆ ĐORĐE
+STOJŠIĆ BOJKA
+STOJŠIĆ DANČIKA
+STOJŠIĆ DRAGI
+STOJŠIĆ DUŠANKA
+STOJŠIĆ JELENA
+STOJŠIĆ JOVAN
+STOJŠIĆ JOVAN
+STOJŠIĆ LAZAR
+STOJŠIĆ MARIJA
+STOJŠIĆ MARIJA
+STOJŠIĆ MARIJA
+STOJŠIĆ MILAN DIPL ING
+STOJŠIĆ MILAN
+STOJŠIĆ MILAN
+STOJŠIĆ MILIVOJ
+STOJŠIĆ MILKA
+STOJŠIĆ MILOŠ
+STOJŠIĆ MIRA
+STOJŠIĆ NADA
+STOJŠIĆ NADA
+STOJŠIĆ NEGOVAN
+STOJŠIĆ NENAD
+STOJŠIĆ NEVENKA
+STOJŠIĆ NEVENKA
+STOJŠIĆ NIKOLA
+STOJŠIĆ OLGA
+STOJŠIĆ PETAR
+STOJŠIĆ PROKOPIJE
+STOJŠIĆ PRVOSLAV
+STOJŠIĆ SAVA
+STOJŠIĆ SAVA
+STOJŠIĆ SAVA
+STOJŠIĆ SLAVICA
+STOJŠIĆ SMILJA
+STOJŠIĆ SOFIJA
+STOJŠIĆ SRBISLAV
+STOJŠIĆ STANOJE
+STOJŠIĆ STEVAN
+STOJŠIĆ TATJANA
+STOJŠIĆ VERA
+STOJŠIĆ VIDOSAVA
+STOJŠIĆ VLADIMIR
+STOJŠIĆ VLADIMIR
+STOJŠIĆ VLADIMIR
+STOJŠIĆ VOJISLAV
+STOJŠIĆ VUJADIN DIPL ING
+STOJŠIĆ ZDRAVKO
+STOJŠIN ŽARKO
+STOJŠIN ĐORĐE
+STOJŠIN ĐURĐA
+STOJŠIN ĐURĐINKA
+STOJŠIN BOGOSLOV
+STOJŠIN DIMITRIJE
+STOJŠIN DOBRIVOJ
+STOJŠIN DRAGAN
+STOJŠIN DUŠAN
+STOJŠIN EMIL
+STOJŠIN ESTER
+STOJŠIN GAVRA
+STOJŠIN GROZDANA
+STOJŠIN JOVAN
+STOJŠIN JOVAN
+STOJŠIN LAZAR
+STOJŠIN MILANKA
+STOJŠIN MILAN
+STOJŠIN MILAN
+STOJŠIN MILICA
+STOJŠIN MILORAD
+STOJŠIN MILOVAN
+STOJŠIN NIKOLA
+STOJŠIN OLGA
+STOJŠIN RADA
+STOJŠIN RADOSLAV
+STOJŠIN SAVA
+STOJŠIN SAVA
+STOJŠIN SINIŠA
+STOJŠIN SVETOZAR
+STOJŠIN TODOR
+STOJŠIN VASA
+STOJŠIN VERA
+STOJŠIN ZLATA
+STOJA LJILJANA
+STOJA MARIJA
+STOJA MILANA
+STOJA SLAĐANA
+STOJA SLOBODAN DR LEKAR
+STOJA VOJISLAV
+STOJAČIĆ DIMITRIJE
+STOJAČIĆ MILAN
+STOJAČIĆ NENAD
+STOJAČIĆ VLADISLAV
+STOJADINOV RADIVOJ
+STOJADINOVIĆ ANICA
+STOJADINOVIĆ BORISLAVA
+STOJADINOVIĆ BORIVOJ
+STOJADINOVIĆ DIMITRIJE
+STOJADINOVIĆ DOBRILA
+STOJADINOVIĆ DRAGANA LEKAR
+STOJADINOVIĆ DRAGINJA
+STOJADINOVIĆ DRAGOSLAV
+STOJADINOVIĆ LAZAR
+STOJADINOVIĆ LJUBIŠA
+STOJADINOVIĆ MILAN
+STOJADINOVIĆ MILAN
+STOJADINOVIĆ MILEVA
+STOJADINOVIĆ MILICA
+STOJADINOVIĆ MILINKO
+STOJADINOVIĆ MILKA
+STOJADINOVIĆ MILOJE
+STOJADINOVIĆ PETAR
+STOJADINOVIĆ PETAR
+STOJADINOVIĆ PUNIŠA
+STOJADINOVIĆ SLAVKO
+STOJADINOVIĆ SLOBODAN
+STOJADINOVIĆ SLOBODAN
+STOJADINOVIĆ SOFIJA
+STOJADINOVIĆ SOFIJA
+STOJADINOVIĆ STEVAN
+STOJADINOVIĆ TATJANA
+STOJADINOVIĆ VLADETA
+STOJAK ZORICA
+STOJAKOV BOŽIDAR
+STOJAKOV MILORAD
+STOJAKOV SRBOSLAV
+STOJAKOV SRBOSLAV
+STOJAKOVIĆ ĐUKAN
+STOJAKOVIĆ ĐURO
+STOJAKOVIĆ BRANISLAVA
+STOJAKOVIĆ DIVNA
+STOJAKOVIĆ DRAGAN
+STOJAKOVIĆ JELKA
+STOJAKOVIĆ KOSTA
+STOJAKOVIĆ LAZAR
+STOJAKOVIĆ MARGITA
+STOJAKOVIĆ MIHAJLO
+STOJAKOVIĆ MILADINKA
+STOJAKOVIĆ MILA
+STOJAKOVIĆ MILE
+STOJAKOVIĆ MILISAV
+STOJAKOVIĆ MILOVAN
+STOJAKOVIĆ NIKOLA
+STOJAKOVIĆ RADMILA
+STOJAKOVIĆ SAVAN
+STOJAKOVIĆ SLAVKO
+STOJAKOVIĆ SMILJA
+STOJAKOVIĆ STANKO
+STOJAKOVIĆ STEVO
+STOJAKOVIĆ SVETOZAR
+STOJAKOVIĆ ZORAN
+STOJAKOVIĆ ZORA
+STOJANČEV GORDANA
+STOJANČEV IVAN
+STOJANČEV RADOMIR
+STOJANČEV SLAVICA
+STOJANČEV VASA
+STOJANČIĆ VLADA
+STOJANAC BRANKO
+STOJANAC MILE
+STOJANAC NIKOLA
+STOJANIĆ ANGELINA
+STOJANOSKI DUŠAN
+STOJANOSKI GAVRIL
+STOJANOV BRANKO
+STOJANOV BRANKO
+STOJANOV IVAN
+STOJANOV MILOVAN
+STOJANOV MIRJANA
+STOJANOV MLADEN DR
+STOJANOV NADA
+STOJANOV NADA
+STOJANOV OLGA
+STOJANOV RADIVOJE
+STOJANOV RADOVAN
+STOJANOV SAVA
+STOJANOV SAVA
+STOJANOV SENKA
+STOJANOV STANKO
+STOJANOV STEVAN
+STOJANOV VERA
+STOJANOV VLADIMIR
+STOJANOV VUKICA
+STOJANOV ZORAN
+STOJANOVIĆ ŽIVKO
+STOJANOVIĆ ŽIVKO
+STOJANOVIĆ ŽIVKO
+STOJANOVIĆ ŽIVOJIN
+STOJANOVIĆ ŽIVORAD
+STOJANOVIĆ ĐORĐE
+STOJANOVIĆ ĐORĐE
+STOJANOVIĆ ĐURĐICA
+STOJANOVIĆ ĐURA
+STOJANOVIĆ ACA
+STOJANOVIĆ ALEKSANDAR
+STOJANOVIĆ ALEKSANDAR
+STOJANOVIĆ ALEKSANDAR
+STOJANOVIĆ ALJOŠA
+STOJANOVIĆ ANA
+STOJANOVIĆ-BALINT BOŽANA
+STOJANOVIĆ BLAGOJE
+STOJANOVIĆ BOŠKO
+STOJANOVIĆ BOŠKO
+STOJANOVIĆ BOŠKO
+STOJANOVIĆ BOŽIDAR
+STOJANOVIĆ BOŽIDAR
+STOJANOVIĆ BOBAN
+STOJANOVIĆ BOGOLJUB
+STOJANOVIĆ BORISLAVA
+STOJANOVIĆ BORISLAV
+STOJANOVIĆ BORIVOJE
+STOJANOVIĆ BORIVOJ
+STOJANOVIĆ BRANISLAV
+STOJANOVIĆ BRANISLAV
+STOJANOVIĆ BRANISLAV
+STOJANOVIĆ BRANKA
+STOJANOVIĆ BRANKA
+STOJANOVIĆ BRANKO
+STOJANOVIĆ BRANKO
+STOJANOVIĆ BUDIMIR
+STOJANOVIĆ CVIJETA
+STOJANOVIĆ DANICA
+STOJANOVIĆ DANICA
+STOJANOVIĆ DANILO
+STOJANOVIĆ DANKA
+STOJANOVIĆ DARINKA DR
+STOJANOVIĆ DESIMIR
+STOJANOVIĆ DOBRILA
+STOJANOVIĆ DOBRILA
+STOJANOVIĆ DOBRILA
+STOJANOVIĆ DOBRINKA
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGAN
+STOJANOVIĆ DRAGIŠA
+STOJANOVIĆ DRAGIŠA
+STOJANOVIĆ DRAGICA
+STOJANOVIĆ DRAGOLJUB
+STOJANOVIĆ DRAGOLJUB
+STOJANOVIĆ DRAGOMIR
+STOJANOVIĆ DRAGOSLAV
+STOJANOVIĆ DUŠAN
+STOJANOVIĆ DUŠICA
+STOJANOVIĆ GAVRILO
+STOJANOVIĆ GAVRO
+STOJANOVIĆ GORAN
+STOJANOVIĆ GRADIMIR
+STOJANOVIĆ IVKO
+STOJANOVIĆ JAKOV
+STOJANOVIĆ JASMINA
+STOJANOVIĆ-JEFTOVIĆ BOSILJKA
+STOJANOVIĆ JELENA
+STOJANOVIĆ JELENA
+STOJANOVIĆ JELICA
+STOJANOVIĆ JOVAN
+STOJANOVIĆ JOVAN
+STOJANOVIĆ JULKA
+STOJANOVIĆ KATICA
+STOJANOVIĆ KONSTANTIN
+STOJANOVIĆ KOSTA
+STOJANOVIĆ KRSTA
+STOJANOVIĆ LAZAR
+STOJANOVIĆ LAZAR
+STOJANOVIĆ LEONA
+STOJANOVIĆ LJUBIŠA
+STOJANOVIĆ LJUBICA
+STOJANOVIĆ LJUBINKO
+STOJANOVIĆ LJUBOMIR
+STOJANOVIĆ LJUBOMIR
+STOJANOVIĆ MARIJA
+STOJANOVIĆ MARKO
+STOJANOVIĆ MIŠA
+STOJANOVIĆ MILAK
+STOJANOVIĆ MILAN
+STOJANOVIĆ MILAN
+STOJANOVIĆ MILETA
+STOJANOVIĆ MILE
+STOJANOVIĆ MILICA
+STOJANOVIĆ MILICA
+STOJANOVIĆ MILIVOJE
+STOJANOVIĆ MILKA
+STOJANOVIĆ MILOŠ
+STOJANOVIĆ MILOŠ
+STOJANOVIĆ MILOŠ
+STOJANOVIĆ MILOVAN
+STOJANOVIĆ MILOVAN
+STOJANOVIĆ MILOVAN
+STOJANOVIĆ MIODRAG
+STOJANOVIĆ MIODRAG
+STOJANOVIĆ MIOMIR
+STOJANOVIĆ MIRA
+STOJANOVIĆ MIRJANA
+STOJANOVIĆ MIRJANA
+STOJANOVIĆ MIROLJUB
+STOJANOVIĆ MIROSLAV
+STOJANOVIĆ MIROSLAV
+STOJANOVIĆ MIROSLAV
+STOJANOVIĆ MIROSLAV
+STOJANOVIĆ MIRO
+STOJANOVIĆ MOMČILO
+STOJANOVIĆ MOMIR
+STOJANOVIĆ NADA
+STOJANOVIĆ NADA
+STOJANOVIĆ NASTAS
+STOJANOVIĆ NEDELJKO
+STOJANOVIĆ NENAD
+STOJANOVIĆ NENAD
+STOJANOVIĆ NIKICA
+STOJANOVIĆ NIKOLA
+STOJANOVIĆ NIKOLA
+STOJANOVIĆ NOVICA
+STOJANOVIĆ NOVICA
+STOJANOVIĆ OBRAD
+STOJANOVIĆ OLGA
+STOJANOVIĆ OSTOJA
+STOJANOVIĆ PETAR
+STOJANOVIĆ PETAR
+STOJANOVIĆ PETAR
+STOJANOVIĆ PETAR
+STOJANOVIĆ PRVAN
+STOJANOVIĆ RADE
+STOJANOVIĆ RADE
+STOJANOVIĆ RADISAV
+STOJANOVIĆ RADMILA
+STOJANOVIĆ RADMILA
+STOJANOVIĆ RADMILA
+STOJANOVIĆ RADMILO
+STOJANOVIĆ RADOICA
+STOJANOVIĆ RADOMIR
+STOJANOVIĆ RADOMIR
+STOJANOVIĆ RADOVAN
+STOJANOVIĆ RUŽICA
+STOJANOVIĆ SAŠA
+STOJANOVIĆ SAVA
+STOJANOVIĆ-SIMIĆ VESNA
+STOJANOVIĆ SLAVKO
+STOJANOVIĆ SLAVKO
+STOJANOVIĆ SLAVKO
+STOJANOVIĆ SLAVOJKA
+STOJANOVIĆ SLAVOLJUB
+STOJANOVIĆ SLOBODAN
+STOJANOVIĆ SLOBODAN
+STOJANOVIĆ SLOBODAN
+STOJANOVIĆ SRĐAN
+STOJANOVIĆ SRBOLJUB
+STOJANOVIĆ SRETEN
+STOJANOVIĆ SRETEN
+STOJANOVIĆ STANISLAV DR LEKAR
+STOJANOVIĆ STANOJE
+STOJANOVIĆ STANOJE
+STOJANOVIĆ STEVAN DR
+STOJANOVIĆ STEVAN
+STOJANOVIĆ STEVAN
+STOJANOVIĆ STEVAN
+STOJANOVIĆ STEVAN
+STOJANOVIĆ STOJAN
+STOJANOVIĆ STOJAN
+STOJANOVIĆ STOLE
+STOJANOVIĆ SVETISLAV
+STOJANOVIĆ SVETLANA
+STOJANOVIĆ SVETOZAR
+STOJANOVIĆ TIHOMIR DR ING
+STOJANOVIĆ TIHOMIR
+STOJANOVIĆ TOMISLAV MR
+STOJANOVIĆ TOMISLAV
+STOJANOVIĆ VALERIJA
+STOJANOVIĆ VASILIJE
+STOJANOVIĆ VASO
+STOJANOVIĆ VELIMIR
+STOJANOVIĆ VELIMIR
+STOJANOVIĆ VELJKO
+STOJANOVIĆ VERA
+STOJANOVIĆ VERA
+STOJANOVIĆ VESNA
+STOJANOVIĆ VESNA
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLADIMIR
+STOJANOVIĆ VLASTIMIR
+STOJANOVIĆ VOJISLAV
+STOJANOVIĆ VUKAŠIN
+STOJANOVIĆ ZDRAVKO
+STOJANOVIĆ ZORAN DR
+STOJANOVIĆ ZORAN
+STOJANOVIĆ ZORAN
+STOJANOVIĆ ZORAN
+STOJANOVIĆ ZORKA
+STOJANOVSKI ŽIVKO
+STOJANOVSKI ANDRIJA
+STOJANOVSKI BILJANA
+STOJANOVSKI BRANIMIR
+STOJANOVSKI DRAGAN DIPL OEC
+STOJANOVSKI JORDAN
+STOJANOVSKI LJUBIŠA
+STOJANOVSKI LJUBICA
+STOJANOVSKI PAVLE
+STOJANOVSKI PAVLE
+STOJANOVSKI SANE
+STOJANOVSKI SLAVICA
+STOJANOVSKI TOMO
+STOJEV STOIČKO
+STOJIČIĆ DESANKA
+STOJIČIĆ GLIGORIJE
+STOJIČIĆ JASMINA
+STOJIČIĆ JASMINA
+STOJIČIĆ MILICA
+STOJIČIĆ ROSA
+STOJIČIĆ SLAVKO
+STOJIČIĆ TODORA
+STOJIŠIĆ ĐURICA DR
+STOJIĆ ĐURĐINKA
+STOJIĆ-APIĆ SLAVKA
+STOJIĆ BOGOLJUB
+STOJIĆ BOGOLJUB
+STOJIĆ BOGOLJUB
+STOJIĆ BRANKA
+STOJIĆ DOBRIVOJ
+STOJIĆ DRAGINJA
+STOJIĆ DRAGOLJUB
+STOJIĆ DUŠAN
+STOJIĆ GAVRA
+STOJIĆ GOJKO
+STOJIĆ GRADIMIR
+STOJIĆ IŠTVAN
+STOJIĆ JULIJANA
+STOJIĆ KATICA
+STOJIĆ LJUBINKA
+STOJIĆ MARA
+STOJIĆ MARINKO
+STOJIĆ MILAN
+STOJIĆ MILENA
+STOJIĆ MILE
+STOJIĆ MILICA
+STOJIĆ MIODRAG DR
+STOJIĆ MIOMIR
+STOJIĆ MIRKO
+STOJIĆ MLADEN DR LEKAR
+STOJIĆ NEDELJKO
+STOJIĆ NIKOLA
+STOJIĆ SINIŠA DR
+STOJIĆ SLAVKA
+STOJIĆ STANISLAV
+STOJIĆ SVETLANA
+STOJIĆ SVETOZAR
+STOJIĆ TODOR
+STOJIĆ VASA
+STOJIĆ VUČKO
+STOJIĆ VUKAŠIN
+STOJIĆ ZORAN
+STOJIĆEVIĆ SLOBODAN
+STOJIC JONEL
+STOJILJKOVIĆ BOŽIDAR
+STOJILJKOVIĆ BOŽIDAR
+STOJILJKOVIĆ BRANIMIR DIPL OEC
+STOJILJKOVIĆ DAMIR
+STOJILJKOVIĆ DARKA
+STOJILJKOVIĆ GORAN DR
+STOJILJKOVIĆ GORDANA
+STOJILJKOVIĆ JELICA
+STOJILJKOVIĆ LJUBIŠA
+STOJILJKOVIĆ TOMISLAV
+STOJILJKOVIĆ TOMISLAV
+STOJILJKOVIĆ VIKTOR
+STOJILKOVIĆ MILETIJE
+STOJILKOVIĆ MILE
+STOJILKOVIĆ STOJAN
+STOJILKOVIĆ VALERIJA
+STOJILOV RADOSLAV
+STOJILOVIĆ MILAN
+STOJILOVIĆ MILAN
+STOJIN ČEDOMIR
+STOJIN MILIVOJ DR PROF
+STOJIN MILIVOJ
+STOJINOV ŽIVKO
+STOJINOV BRANKO
+STOJINOV DUŠAN
+STOJINOV JOVAN
+STOJINOV KATARINA
+STOJINOV KATICA
+STOJINOV LJUBICA
+STOJINOV MILENKO
+STOJINOV ZORICA
+STOJINOVIĆ GORAN
+STOJINOVIĆ MARICA
+STOJISAVLJEVIĆ DUŠAN
+STOJISAVLJEVIĆ JOVANKA
+STOJISAVLJEVIĆ MILAN
+STOJISAVLJEVIĆ MILE
+STOJISAVLJEVIĆ SLOBODAN
+STOJISAVLJEVIĆ SLOBODAN
+STOJISAVLJEVIĆ VELJKO
+STOJKOV ŽARKO
+STOJKOV ŽIVORAD
+STOJKOV ALEKSANDAR
+STOJKOV BOGDAN
+STOJKOV BORIVOJ
+STOJKOV BRANISLAV
+STOJKOV DIMITRIJE
+STOJKOV DRAGINA
+STOJKOV IVAN
+STOJKOV JELICA
+STOJKOV JELKA
+STOJKOV JOVAN
+STOJKOV JULKA
+STOJKOV KATICA
+STOJKOV LJUBICA
+STOJKOV MILAN
+STOJKOV MILAN
+STOJKOV MILAN
+STOJKOV MILENA
+STOJKOV MILEVKA
+STOJKOV MILE
+STOJKOV MIODRAG
+STOJKOV MIOMIR
+STOJKOV MIROSLAV
+STOJKOV MLADEN
+STOJKOV NEGOVAN
+STOJKOV RADIVOJ
+STOJKOV RADIVOJ
+STOJKOV SLOBODAN
+STOJKOV STEVAN
+STOJKOV STOJAN
+STOJKOV STOJAN
+STOJKOV TODOR
+STOJKOV VERICA
+STOJKOV VUKOSAVA
+STOJKOV ZDRAVKO
+STOJKOVIĆ-ŠALBOT BOJANA
+STOJKOVIĆ ŽIVKA
+STOJKOVIĆ ŽIVOTA
+STOJKOVIĆ ĐORĐE
+STOJKOVIĆ ĐORĐE
+STOJKOVIĆ ALEKSANDAR
+STOJKOVIĆ ALEKSANDAR
+STOJKOVIĆ ALEKSANDAR
+STOJKOVIĆ ANĐELKA
+STOJKOVIĆ ANANIJE
+STOJKOVIĆ ANTONIJE
+STOJKOVIĆ BLAGOJE
+STOJKOVIĆ BOŽIDAR
+STOJKOVIĆ BOŽIDAR
+STOJKOVIĆ BORISLAV
+STOJKOVIĆ BORKO
+STOJKOVIĆ BRANISLAV
+STOJKOVIĆ DRAGAN
+STOJKOVIĆ DRAGAN
+STOJKOVIĆ DRAGINJA
+STOJKOVIĆ DRAGOLJUB
+STOJKOVIĆ DRAGOLJUB
+STOJKOVIĆ DUŠANKA
+STOJKOVIĆ DUŠANKA
+STOJKOVIĆ DUŠAN
+STOJKOVIĆ DUŠAN
+STOJKOVIĆ DUŠAN
+STOJKOVIĆ GORDANA
+STOJKOVIĆ GORDANA
+STOJKOVIĆ GRADIMIR
+STOJKOVIĆ ILIJA
+STOJKOVIĆ IVAN
+STOJKOVIĆ JELENA
+STOJKOVIĆ JELENA
+STOJKOVIĆ JELENA
+STOJKOVIĆ-JOVANOVIĆ SLAVICA
+STOJKOVIĆ JOVAN
+STOJKOVIĆ JOVAN
+STOJKOVIĆ KATICA
+STOJKOVIĆ KUZMAN
+STOJKOVIĆ LENKA
+STOJKOVIĆ MARIJA
+STOJKOVIĆ MILAN
+STOJKOVIĆ MILAN
+STOJKOVIĆ MILAN
+STOJKOVIĆ MILENKO
+STOJKOVIĆ MILENKO
+STOJKOVIĆ MILENTIJE
+STOJKOVIĆ MILOŠ
+STOJKOVIĆ MILOVAN
+STOJKOVIĆ MILTEN
+STOJKOVIĆ MILUTIN
+STOJKOVIĆ MIODRAG
+STOJKOVIĆ MIODRAG
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRJANA
+STOJKOVIĆ MIRKO
+STOJKOVIĆ MIROSLAV
+STOJKOVIĆ MLADEN
+STOJKOVIĆ NADA
+STOJKOVIĆ PAVLE
+STOJKOVIĆ PAVLE
+STOJKOVIĆ PETAR
+STOJKOVIĆ PETAR
+STOJKOVIĆ PETAR
+STOJKOVIĆ PREDRAG DR
+STOJKOVIĆ RADENKO
+STOJKOVIĆ RADISAV DIPL ING
+STOJKOVIĆ RADIVOJE
+STOJKOVIĆ RADMILA
+STOJKOVIĆ RADMILA
+STOJKOVIĆ RADOMIR
+STOJKOVIĆ RADOSLAVKA
+STOJKOVIĆ RADOSLAV
+STOJKOVIĆ RADOVAN DIPL ING
+STOJKOVIĆ SANJA
+STOJKOVIĆ SLAVKA
+STOJKOVIĆ SLAVOLJUB
+STOJKOVIĆ SMILJKA
+STOJKOVIĆ STOJADIN
+STOJKOVIĆ TEODOR
+STOJKOVIĆ VELIMIR
+STOJKOVIĆ VELJKO
+STOJKOVIĆ VEROSLAV
+STOJKOVIĆ VLADIMIR
+STOJKOVIĆ VLADIMIR
+STOJKOVIĆ ZAGORKA
+STOJKOVIĆ ZLATIBOR
+STOJKOVIĆ ZORAN
+STOJKOVSKI DRAGAN
+STOJKOVSKI DRAGAN
+STOJLOVIĆ ĐULA
+STOJMENOVIĆ ŽIVKO
+STOJMENOVIĆ IVAN
+STOJMENOVIĆ JOVAN
+STOJMENOVIĆ MARIJA
+STOJMENOVIĆ VLADA
+STOJMENOVIĆ VOJISLAV
+STOJNIĆ BOŠKO
+STOJNIĆ DRAGAN
+STOJNIĆ DRAGICA
+STOJNIĆ DUŠAN
+STOJNIĆ MILICA
+STOJNIĆ MIRKO
+STOJNIĆ PAVLE
+STOJNIĆ RADOMIR
+STOJNIĆ SLOBODAN
+STOJNOV DAMJAN
+STOJOVIĆ RADOMIR
+STOJOVIĆ TOMAŠ
+STOJSAVLJEVIĆ NIKOLA
+STOJSAVLJEVIĆ PETAR
+STOJSAVLJEVIĆ STEVAN
+STOJSAVLJEVIĆ TIHOMIR
+STOKANOVIĆ ĐORĐE
+STOKANOVIĆ MILORAD
+STOKIĆ ĐORĐE
+STOKIĆ DRAGOLJUB
+STOKIĆ DUŠAN
+STOKIĆ JOVICA
+STOKIĆ MILAN
+STOKIĆ TODOR
+STOKIN ALESANDAR
+STOKIN BRANKO
+STOKIN MILIVOJ
+STOKIN SLOBODAN
+STOKIN STOJAN
+STOKUĆA DANE
+STOKUĆA MIHAJLO
+STOKUĆA MILAN
+STOKUĆA MILAN
+STOKUĆA MILAN
+STOKUĆA MIRJANA
+STOKUĆA NIKOLA
+STOKUĆA PETAR
+STOLESKI MITIJA
+STOLIĆ ĐURO
+STOLIĆ BISERKA
+STOLIĆ DUŠAN
+STOLIĆ DUŠAN
+STOLIĆ DUŠAN
+STOLIĆ KATICA
+STOLIĆ LJUBICA
+STOLIĆ MIRJANA
+STOLIĆ MIROSLAV
+STOLIĆ MIROSLAV
+STOLIĆ NENAD
+STOLIĆ PETAR DR
+STOLIĆ SRETA
+STOLIĆ STEVAN
+STOPINŠEK STANISLAV
+STRAŽMEŠTER BOŽIDAR
+STRAŽMEŠTER DUŠAN
+STRAŽMEŠTEROV DIMITRIJE
+STRAŽMEŠTEROV MILICA
+STRAŽMEŠTEROV MIROSLAV DIPL ING
+STRAŽMEŠTEROV SAVA
+STRAŽMEŠTEROV SOFIJA
+STRAŽMEŠTEROV STEVAN
+STRACENSKI MIROSLAV
+STRACENSKI STEVAN
+STRAGA STJEPAN
+STRAHINIĆ KRSTOMIR
+STRAJIN BRANISLAVA
+STRAJIN JELENA
+STRAJIN NADA
+STRAJIN RADOVAN
+STRAJIN STOJAN
+STRAJIN VELIZAR
+STRAJINIĆ BOŽIDAR
+STRAJINIĆ IRENA
+STRAJINIĆ JOVAN
+STRAJINIĆ LAZAR
+STRAJINIĆ MILUTIN
+STRAJNIĆ BRANKO
+STRAJNIĆ DUŠAN
+STRAJNIĆ GRUJA
+STRAJNIĆ MARIJA
+STRAJNIĆ MILANKO
+STRAJNIĆ MILAN
+STRAJNIĆ MLADEN
+STRAJNIĆ PAL
+STRAJNIĆ TOŠA
+STRANIĆ JOVICA
+STRANJAKOVIĆ ŽIVOJIN
+STRANJANAC MILORAD
+STRANJANAC MIROSLAV
+STRBAČKI FRIDOLINA
+STRBAČKI STEVAN
+STRBAD STEVAN
+STRBAT TOMISLAV
+STREHOVSKI ZUZANA
+STRELE RAŠA
+STREZOSKI JOVAN
+STREZOSKI MILESA
+STREZOSKI NIKODINKA
+STREZOSKI VLADIMIR
+STRGAR PETAR
+STRIČEVIĆ DARA
+STRIČEVIĆ DUŠAN
+STRIČEVIĆ JOSIP
+STRIČEVIĆ JULKA
+STRIČEVIĆ KSENIJA
+STRIČEVIĆ LJUBOMIR
+STRIČEVIĆ MLADEN
+STRIČEVIĆ RADIVOJ
+STRIČEVIĆ SAVKA
+STRIČEVIĆ VELIMIR
+STRIČEVIĆ VLADISLAVA
+STRIČKO VLADIMIR
+STRIBER EMIL
+STRIBER FRANJA
+STRIBER FRANJA
+STRIBER MIHAJLO
+STRIBER STEVAN
+STRIBER STEVAN
+STRICKI IVAN
+STRIKA ĐORĐE
+STRIKA BRANKO
+STRIKOVIĆ ĆAMIL
+STRIKOVIĆ BELI
+STRIKOVIĆ JANOŠ
+STRIKOVIĆ MILOSAV
+STRIKOVIĆ RADOSLAV
+STRIKOVIĆ VERA
+STRINEKA KATICA
+STRIZOVIĆ LJILJANA
+STRIZOVIĆ MAKSIM
+STRUGAR ŽARKO
+STRUGAR ŽIVORAD
+STRUGAR GORAN
+STRUGAR JOSIP
+STRUGAR MILUTIN
+STRUGAR PAVLE
+STRUGAR RADMILA
+STRUGAR SONJA
+STRUGAR VOJISLAV
+STRUGAR ZARIJA
+STRUHAR ANA
+STRUHAR JARMILA
+STRUHAR JOSIP
+STRUHAR MAGDA
+STRUHARIK JOSIP
+STRUHARIK JOSIP
+STRUHARIK-JUR RASTISLAV
+STRUHARIK JURAJ DR
+STRUHARIK MARJENA
+STRUHARIK MATO
+STRUHARIK PAVLE
+STRUKAN DOMAGOJ DR
+STRUNJAŠ GORDANA
+STUBLINAC MILOŠ
+STUDEN ŽIVORAD
+STULAR DUŠAN
+STUPAR ČEDA
+STUPAR ŽELJKO
+STUPAR ŽIVKO
+STUPAR ĐORĐE
+STUPAR BOGOLJUB
+STUPAR BORO
+STUPAR BOSILJKA
+STUPAR BRANKO
+STUPAR BRANKO
+STUPAR BRANKO
+STUPAR CVETA
+STUPAR DESANKA
+STUPAR DRAGAN
+STUPAR DRAGO
+STUPAR DUŠANKA
+STUPAR DUŠAN
+STUPAR DUŠAN
+STUPAR DUŠAN
+STUPAR ILIJA
+STUPAR JANJA
+STUPAR JANKO
+STUPAR JOVO
+STUPAR LJUBINKA
+STUPAR MARKO
+STUPAR MARKO
+STUPAR MILJA
+STUPAR MILKA
+STUPAR MILORAD
+STUPAR MILORAD
+STUPAR MIRJANA
+STUPAR MIRKO
+STUPAR NIKOLA
+STUPAR PERO
+STUPAR PETAR
+STUPAR PETAR
+STUPAR RADA
+STUPAR RADE
+STUPAR RAJKO
+STUPAR RAJKO
+STUPAR RAJKO
+STUPAR SLAĐANA
+STUPAR VLADIMIR
+STUPAR ZDRAVKO
+STUPAR ZORAN
+STUPAVSKI ANDREJ
+STUPAVSKI JANKO
+STUPIĆ SLAVENKO
+STUPIN IVAN
+STUPIN ZVONIMIR
+STURAR ZDRAVKO
+STVORIĆ PAVLE
+SUČEVIĆ DANE DIPL PRAVNIK
+SUČEVIĆ DRAGAN
+SUČEVIĆ DUŠAN
+SUČEVIĆ MARIJA
+SUČEVIĆ MARTA
+SUČEVIĆ MIROSLAV
+SUČEVIĆ NIKOLA
+SUČEVIĆ NIKOLA
+SUČEVIĆ RUŽICA
+SUŠA DANILO
+SUŠA MARKO
+SUŠA MILIJANA
+SUŠAC VINKO
+SUŠIĆ GORDANA
+SUŠIĆ HILDA
+SUŠIĆ RADA
+SUŠIĆ VUJANA
+SUĐI JOVAN
+SUĐI MARIJA
+SUĐI STANKO
+SUBAŠIĆ BORISLAV
+SUBAŠIĆ JULKA
+SUBAŠIĆ LAZAR
+SUBAŠIĆ MARKO
+SUBAŠIĆ MILAN
+SUBAŠIĆ NIKOLA
+SUBAŠIĆ PERO
+SUBAŠIĆ PETAR MR
+SUBAŠIĆ RAJKO
+SUBAŠIĆ SIMA
+SUBAŠIĆ STOJAN
+SUBAJKOV RADOJKA
+SUBAKOV KOVILJKA
+SUBAKOV SMILJKA
+SUBAKOV SOFIJA
+SUBANOVIĆ MILAN
+SUBIĆ ŽARKO
+SUBIĆ ĐORĐE
+SUBIĆ ALEKSANDAR
+SUBIĆ ANĐELKA
+SUBIĆ BOŽENA
+SUBIĆ BOŽIDAR
+SUBIĆ BRANISLAV
+SUBIĆ DAMIR
+SUBIĆ DARA
+SUBIĆ DIMITRIJE
+SUBIĆ DUŠAN
+SUBIĆ GORDANA
+SUBIĆ JOVAN
+SUBIĆ KOSTA
+SUBIĆ LAZAR
+SUBIĆ LAZAR
+SUBIĆ LAZAR
+SUBIĆ LJUBICA
+SUBIĆ LJUBOMIR
+SUBIĆ LJUBOMIR
+SUBIĆ LJUBOMIR
+SUBIĆ MARIJA
+SUBIĆ MARKO
+SUBIĆ MARKO
+SUBIĆ MILAN
+SUBIĆ MIROSLAVA
+SUBIĆ MLADEN
+SUBIĆ NADA
+SUBIĆ NEDELJKA
+SUBIĆ NEDELJKO
+SUBIĆ NOVAK
+SUBIĆ OLGA
+SUBIĆ PAJA
+SUBIĆ RADIVOJ
+SUBIĆ RADOSLAV
+SUBIĆ SMILJA
+SUBIĆ SNEŽANA
+SUBIĆ STEVAN
+SUBIĆ ZORAN
+SUBOTIČKI BRANISLAV
+SUBOTIČKI GORICA
+SUBOTIČKI KATICA
+SUBOTIČKI LUKA
+SUBOTIČKI MIRJANA
+SUBOTIČKI MIRKO
+SUBOTIČKI NADA
+SUBOTIČKI NESTOR DIPL ING
+SUBOTIČKI RADOVAN
+SUBOTIČKI SAVA
+SUBOTIČKI SLOBODAN
+SUBOTIČKI SOFIJA
+SUBOTIČKI SVETISLAV
+SUBOTIČKI VASA
+SUBOTIČKI VERA
+SUBOTIČKI VLADIMIR
+SUBOTIČKI ZORAN
+SUBOTIĆ ŽARKO
+SUBOTIĆ ĐORĐE
+SUBOTIĆ ĐURO
+SUBOTIĆ ALEKSANDAR
+SUBOTIĆ BRANISLAV DR
+SUBOTIĆ DRAGUTIN
+SUBOTIĆ DUŠAN
+SUBOTIĆ DUŠAN
+SUBOTIĆ LJILJANA
+SUBOTIĆ LJUBICA
+SUBOTIĆ MACA
+SUBOTIĆ MARKO
+SUBOTIĆ MILIVOJ
+SUBOTIĆ MILOŠ
+SUBOTIĆ MILORAD
+SUBOTIĆ MIODRAG DIPL ING
+SUBOTIĆ NENAD
+SUBOTIĆ RADIVOJ
+SUBOTIĆ RADOŠ
+SUBOTIĆ RAJKO
+SUBOTIĆ RAJKO
+SUBOTIĆ RUŽA
+SUBOTIĆ RUŽA
+SUBOTIĆ SAVA
+SUBOTIĆ SLOBODAN
+SUBOTIĆ STANA
+SUBOTIĆ SVETOZAR
+SUBOTIĆ SVETOZAR
+SUBOTIĆ TOMISLAV
+SUBOTIĆ VERA
+SUBOTIĆ VLADANA
+SUBOTIN ŽIVKO
+SUBOTIN ŽIVKO
+SUBOTIN ĐORĐE
+SUBOTIN ĐORĐE
+SUBOTIN ĐURA
+SUBOTIN BOGDAN
+SUBOTIN BOGDAN
+SUBOTIN DANICA
+SUBOTIN DIMITRIJE
+SUBOTIN DRAGAN
+SUBOTIN DRAGINJA
+SUBOTIN DUŠANKA
+SUBOTIN IRINA
+SUBOTIN IVAN
+SUBOTIN JELENA
+SUBOTIN JELICA
+SUBOTIN LJILJANA
+SUBOTIN LJUBINKA
+SUBOTIN MARKO
+SUBOTIN MARKO
+SUBOTIN MARKO
+SUBOTIN MILAN
+SUBOTIN MILAN
+SUBOTIN MILAN
+SUBOTIN MILORAD
+SUBOTIN NEVENKA
+SUBOTIN PAVLE
+SUBOTIN PETAR
+SUBOTIN PREDRAG
+SUBOTIN RADOSLAV
+SUBOTIN RADOVAN
+SUBOTIN SAŠA
+SUBOTIN SAVA
+SUBOTIN SAVA
+SUBOTIN SAVA
+SUBOTIN SLOBODAN
+SUBOTIN SMILJA
+SUBOTIN STANKA
+SUBOTIN STEVAN
+SUBOTIN STEVAN
+SUBOTIN SVETOZAR
+SUBOTIN SVETOZAR
+SUBOTIN SVETOZAR
+SUBOTIN ZORA
+SUBU ĐORĐE
+SUDŽUKOVIĆ NIKOLA
+SUDŽUM BOŠKO
+SUDŽUM BOGDAN
+SUDŽUM ILIJA
+SUDAK VLADIMIR
+SUDAR DUŠAN
+SUDAR DUŠAN
+SUDAR GAJA
+SUDAR VOJIN
+SUDAREVIĆ BOŠKO
+SUDAROV BRATISLAV
+SUDARSKI DUŠAN
+SUDIMAC DRAGO
+SUDIMAC MILAN
+SUHANEK ADAM
+SUHANSKI STEVAN
+SUHOVSKI JANO
+SUIĆ BRANKO
+SUIĆ NENAD
+SUJER MIHAJLO
+SUJIĆ JELENA
+SUJIĆ MILAN
+SUJIĆ SOFIJA
+SUJIĆ VOJIN
+SUJIĆ ZDENKA
+SUKAČ MIHAJLO
+SUKNJAJA DANILO
+SUKNOVIĆ MIRKO
+SUKNOVIĆ RADIVOJE
+SUKNOVIĆ SLAVKO
+SUKOLA ANTAL
+SUKOLA SUZANA
+SUKUP MARGITA
+SULEJMANOV NAFIJA
+SULIĆ MARICA
+SULIĆ TOMISLAV
+SULJA RAMADAN
+SULJAGIĆ REFIK
+SULOCKI JOŠKA
+SULOMAR AGNEZA
+SULOMAR ERŽEBET
+SULOMAR ILONA
+SULOMAR JANOŠ
+SULOMAR MAGDA
+SUMAN MILE
+SUMAROV JELISAVETA
+SUMINA DANICA
+SUMINJA MIŠA
+SUNAJKO ĐURO
+SUNAJKO DUŠAN
+SUNDAĆ ĐURA
+SUNDAĆ TODOR
+SUNIĆ MIRJANA
+SUNKA LJUBICA
+SUNTOK ANICA
+SUNZER VLADIMIR
+SUPIĆ BORIŠA
+SUPIĆ DARINKA
+SUPIĆ MILAN
+SUPIĆ OLGA
+SURĆA JOSIP
+SURĆA TRAJAN
+SURA MARGITA
+SURDUČAN DIMITRIJE
+SURDUČKI ŽIVKO
+SURDUČKI DRAGAN
+SURDUČKI ILIJA
+SURDUČKI ILIJA
+SURDUČKI ISIDOR
+SURDUČKI MARA
+SURDUČKI MILAN
+SURDUČKI MILOŠ
+SURDUČKI MILOŠ
+SURDUČKI MIRJANA
+SURDUČKI NEBOJŠA
+SURDUČKI PANTELIJA
+SURDUČKI PERSA
+SURDUČKI SINIŠA
+SURDUČKI STANKA
+SURDUČKI STEVAN
+SURLA BOŽO
+SURLA DUŠAN
+SURLA LUKA
+SURLA PETAR
+SURLA PETAR
+SURLA SAVA
+SURLA ZORAN
+SURLIĆ MILENKO
+SUROVI ANTON
+SUROVI JOLANKA
+SUROVI MIHAL
+SUROVI MIROSLAV
+SUROVI STEVAN
+SUROVI VLADIMIR
+SUSEDSKI OSKAR
+SUTARIĆ VERA
+SUTRIN BORIS
+SUTUROVIĆ JAGA
+SUTUROVIĆ MARIJA
+SUTUROVIĆ NESTO
+SUTUROVIĆ ZVONIMIR
+SUVAČAR ILINKA
+SUVAČAR TODOR
+SUVAČAR VERA
+SUVAČAREV BORISLAVA
+SUVAČAREV JOVAN
+SUVAČAREV MARIJA
+SUVAČAREV MILENKO
+SUVAČAREV MOMIR
+SUVAČAREV OBRAD
+SUVAČAREV PAJA
+SUVAČAREV RADENKO
+SUVAJČEVIĆ SVETISLAV
+SUVAJAC ŽELJKO
+SUVAJAC VASILIJE
+SUVAJDŽIĆ ŽIVKO
+SUVAJDŽIĆ ĐORĐE
+SUVAJDŽIĆ ĐORĐE
+SUVAJDŽIĆ DIMITRIJE
+SUVAJDŽIĆ GOJKO
+SUVAJDŽIĆ ILIJA
+SUVAJDŽIĆ ISA
+SUVAJDŽIĆ JOVAN
+SUVAJDŽIĆ LJILJANA
+SUVAJDŽIĆ MARIJA
+SUVAJDŽIĆ MARINKO
+SUVAJDŽIĆ MILKA
+SUVAJDŽIĆ NENAD
+SUVAJDŽIĆ NENAD
+SUVAJDŽIĆ OBRAD
+SUVAJDŽIĆ OLGICA
+SUVAJDŽIĆ PETAR
+SUVAJDŽIĆ RADMILA
+SUVAJDŽIĆ VASA
+SUVAJDŽIĆ VASA
+SUVAJDŽIN JOVAN
+SUVAJDŽIN JOVAN
+SUVAJDŽIN MLADEN
+SUVAJDŽIN NIKOLA
+SUZIĆ MARA
+SUZIĆ MIRKO
+SUZIĆ NIKOLA
+SUZIĆ SOFIJA
+SVALINA KATA
+SVEĆNJAK BRANKO
+SVETIĆ IVAN DR
+SVETIĆ IVAN
+SVETIĆ LJERKA
+SVETLIK ADAM
+SVILAKOS MARIJA
+SVILAR ANĐELKA
+SVILAR BRANISLAV
+SVILAR GOJKO
+SVILAR LJUBOMIR
+SVILAR MIHAJLO
+SVILAR MIHAJLO
+SVILAR NIKOLA
+SVILAR PETAR
+SVILAR RADOMIR
+SVILAR RATKO
+SVILAR SLAVICA
+SVILAR SOFIJA
+SVILAR VERICA
+SVILAR VINKA
+SVILAREVIĆ STEVO
+SVILARKOVIĆ STANIMIR DIPL ING
+SVILAROV MILAN
+SVILOKOS BORISLAV
+SVILOKOS GAVRA
+SVILOKOS KATICA
+SVILOKOS MILAN
+SVILOKOS STEVAN
+SVINJAREVIĆ SLAVKO
+SVIRČEV ŽIVKO
+SVIRČEV JOVAN
+SVIRČEV MILIVOJ
+SVIRČEV MILOŠ
+SVIRČEV RADA
+SVIRČEVIĆ ALEKSANDAR DR DOCENT
+SVIRČEVIĆ ANA
+SVIRČEVIĆ BORISLAV
+SVIRČEVIĆ DRAGAN
+SVIRČEVIĆ DRAGA
+SVIRČEVIĆ DRENKA
+SVIRČEVIĆ JOVAN
+SVIRČEVIĆ JOVAN
+SVIRČEVIĆ LJUBOMIR
+SVIRČEVIĆ MILIVOJ
+SVIRČEVIĆ MILORAD
+SVIRČEVIĆ MIRJANA
+SVIRČEVIĆ PETAR
+SVIRČEVIĆ RADOVAN
+SVIRČEVIĆ SLAVKO
+SVIRČEVIĆ STEVAN
+SVIRČEVIĆ TEODORA
+SVIRČEVIĆ-TRAJKOVIĆ LJUBICA
+SVIRČEVIĆ VASA
+SVIRČEVIĆ VUKAN
+SVIRAC RUŽICA
+SVITIĆ BOŽO
+SVITLICA DRAGAN
+SVITLICA DUŠAN
+SVITLICA GOJKO DIPL OEC
+SVITLICA JELICA
+SVITLICA MILAN
+SVITLICA RUŽICA
+SVITLICA SIMO
+SVITLICA STANKO
+SVITLICA TANASIJE DIPL OEC
+SVITLICA VERA
+SVOBODA STEVAN
+SVORCAN BRANISLAV
+SVORCAN LJUBOMIR
+SVORCAN MILOŠ
+SVORCAN MILORAD
+SVORCAN MILORAD
+SVORCAN RADISLAV
+SVORCAN RADOMIR
+SVORCAN STEVAN
+SVORCAN STOJAN
+SVORCAN ZORICA
+SVRDLAN MLAĐAN
+SVRKOTA ŽIVKO
+SVRKOTA VUKOMAN
+SVRZIĆ GORDANA
+TAČI ISMAILJ
+TAČI TEOFIL
+TAŠ KAROLJ
+TAŠEVSKI MILKA
+TAŠEVSKI SOFIJA
+TAŠI LJUBICA
+TAŠI PETAR
+TAŠI ROZALIJA
+TAŠI STEVAN
+TAŠI ZOLTAN
+TAŠIĆ MILIVOJ
+TAŠIĆ VERA
+TAŠNADI MIHALJ
+TABŠ NADA
+TABŠ NOHADEDIN
+TABAČKI VLADIMIR
+TABAČKI ZORICA
+TABAK DRAGAN
+TABAK IVAN
+TABAK VASA
+TABAK VOJISLAV
+TABAKOV DRAGOMIR
+TABAKOV MILENKO
+TABAKOV MLADEN
+TABAKOVIĆ ĐORĐE DIPL ING
+TABAKOVIĆ DUŠAN
+TABAKOVIĆ ISMET
+TABAKOVIĆ MIRKO
+TABORI ĐORĐE DR LEKAR
+TACOVIĆ VERA
+TADIĆ ŽIVAN
+TADIĆ ĐORĐE
+TADIĆ ĐORĐE
+TADIĆ ALEKSANDAR
+TADIĆ ANA
+TADIĆ ARSENIJE
+TADIĆ BOSILJKA
+TADIĆ DANILO
+TADIĆ DRAGAN
+TADIĆ DRAGA
+TADIĆ DUŠAN
+TADIĆ DUŠAN
+TADIĆ DUŠAN
+TADIĆ EDITA
+TADIĆ GORAN
+TADIĆ ILIJA
+TADIĆ ILIJA
+TADIĆ IVAN
+TADIĆ JOVICA
+TADIĆ KRASIMIR
+TADIĆ LAZAR
+TADIĆ LAZAR
+TADIĆ MARIJA
+TADIĆ MARINKO
+TADIĆ MARINKO
+TADIĆ MIJO
+TADIĆ MILOŠ DIPL ING
+TADIĆ MILOŠ
+TADIĆ MILOJE
+TADIĆ MILOSAV
+TADIĆ MIRKO
+TADIĆ MIRKO
+TADIĆ MIRKO
+TADIĆ NADA
+TADIĆ NEVENKA
+TADIĆ OBREN
+TADIĆ PETAR
+TADIĆ RADOJE
+TADIĆ RATKO
+TADIĆ SAŠA
+TADIĆ SAVA
+TADIĆ SLOBODAN
+TADIĆ SOFIJA
+TADIĆ SPASOJE
+TADIĆ STOJAN
+TADIĆ TANKOSAVA
+TADIĆ UROŠ
+TADIĆ VESELIN
+TADIĆ ZORAN
+TADIĆ ZORA
+TADIĆ ZORKA
+TADIJANOVIĆ SILVESTER
+TADIJIN GLIŠA
+TADIJIN MILICA
+TADIJIN MILOŠ
+TADIJIN MILORAD
+TADIN DUŠANKA
+TADIN DUŠAN
+TADIN IVANKA
+TADIN MILOVAN
+TADIN ZLATOJE
+TAHIROVIĆ EVICA
+TAHIROVIĆ MARIJA
+TAHIROVIĆ MILADINKA
+TAIROVIĆ ALEKSANDAR
+TAJHMAN BELA
+TAJHMAN DESANKA
+TAJHMAN JOSIP
+TAJKOV ANĐELKA
+TAJKOV JOVAN
+TAJKOV MIRJANA
+TAJKOV RADOJKA
+TAJKOVIĆ MILICA
+TAJTI VERONIKA
+TAKAČ ŠANDOR
+TAKAČ ĐERĐI
+TAKAČ ĐORĐE
+TAKAČ ĐULA
+TAKAČ ĐURA
+TAKAČ ĐURA
+TAKAČ ANĐELKA
+TAKAČ ANDRIJA
+TAKAČ ANTAL
+TAKAČ ANTAL
+TAKAČ ANTUN
+TAKAČ ANTUN
+TAKAČ ARPAD
+TAKAČ ERNE
+TAKAČ EVGEN
+TAKAČ FERENC
+TAKAČ FRANJA
+TAKAČ IŠTVAN
+TAKAČ IŠTVAN
+TAKAČ JAKIM
+TAKAČ JANOŠ
+TAKAČ JANOŠ
+TAKAČ JANOŠ
+TAKAČ JOŽEF DIPL ING
+TAKAČ JOŽEF
+TAKAČ JOŽEF
+TAKAČ JOSIP
+TAKAČ KAROLJ
+TAKAČ KATICA
+TAKAČ KATICA
+TAKAČ LADISLAV
+TAKAČ LAJOŠ
+TAKAČ LASLO
+TAKAČ MAGDA
+TAKAČ MATA
+TAKAČ MIHAJLO
+TAKAČ MILAN
+TAKAČ MIRKO
+TAKAČ ROŽA
+TAKAČ SENA
+TAKAČ SOFIJA
+TAKAČ SOFIJA
+TAKAČ STEVAN
+TAKAČ TIBOR
+TAKAČ TIBOR
+TAKAČ VINKO
+TAKAČ VLADIMIR
+TAKAČ VLADIMIR
+TAKAČ ZOLTAN
+TAKAČI ARPAD DIPL OEC
+TAKAČI ARPAD DR
+TAKAČI GABOR
+TAKO ZVONIMIR
+TAKOVAC RADISAV
+TAKOVSKI BLAGOJE
+TAKOVSKI JOVANKA
+TALESKI LJUBICA
+TALESKI RISTA
+TALIĆ DRAGAN
+TALIĆ MITAR
+TALIJAN ROŽA
+TALO ŠANDOR
+TALO ŽIVKA
+TALO ALEKSANDAR
+TALO BRIGITA
+TALO FRANJA
+TALO JELENA
+TALO JELISAVETA
+TALO JOŽEF
+TALO JOSIP
+TALO JOVAN
+TALO TEREZA
+TALOŠI ĐORĐE
+TALOŠI IRENA
+TALOŠI KAROLJ
+TALOVIĆ BEHUDIN
+TALOVIĆ HAJRIJA
+TALOVIĆ SADIK
+TAMAŠ ĐERĐ
+TAMAŠ ĐURA
+TAMAŠ IRINEJ
+TAMAŠ-JOŠANOV ALEKSANDRA
+TAMAŠ LJUBOMIR
+TAMAŠ MARIJA
+TAMAŠ MIHAJLO
+TAMAŠ PAVLE
+TAMAŠ VLADIMIR
+TAMAŠ VLADIMIR
+TAMAŠI AGOŠTON
+TAMAŠI ALADAR
+TAMAŠI TIBOR
+TAMAŠKOVIĆ ZOLTAN
+TAMBURAŠEV VUKAŠIN
+TAMBURKOVSKI DRAGAN
+TAMINDŽIĆ ČEDOMIR
+TAMINDŽIĆ ANĐELKO
+TAMINDŽIĆ KOVINKA
+TAMINDŽIĆ RISTA
+TAMINDŽIJA DANILO
+TAMINDŽIJA MILORAD
+TAMINDŽIJA MIRKO
+TAMINDŽIJA VLADO
+TANČIK ŠANDOR
+TANČIK ALBERT
+TANČIK ALEKSANDAR
+TANČIK EMIL
+TANČIK IBOLJA
+TANČIK ROZA
+TANACKOV NOVAK
+TANACKOVIĆ ACO
+TANACKOVIĆ MIHAJLO
+TANASIĆ JOVAN
+TANASIĆ OLIVERA
+TANASIĆ PREDRAG
+TANASIĆ RUŽA
+TANASIĆ SPASOJE
+TANASIĆ VALERIJA
+TANASIĆ VALERIJA
+TANASIJEVIĆ ŽARKO
+TANASIJEVIĆ-FILIPOV IVANKA
+TANASIJEVIĆ MILAN
+TANASIJEVIĆ SINIŠA
+TANASIJIN LUKA
+TANASIJIN PETAR
+TANASIJIN VERA
+TANASIN DANISLAVA
+TANASIN JOVAN
+TANASIN LJUBICA
+TANASIN NESTOR
+TANASIN STEVAN
+TANASIN STEVAN
+TANASIN STEVAN
+TANASIN STEVAN
+TANASKOVIĆ DRAGAN
+TANASKOVIĆ DRAGOMIR
+TANASKOVIĆ GINA
+TANASKOVIĆ GORDANA
+TANASKOVIĆ GOSPAVA
+TANASKOVIĆ LAZAR
+TANASKOVIĆ MILE
+TANASKOVIĆ NOVAK
+TANASKOVIĆ STANISLAV
+TANASKOVIĆ VITKO
+TANASKOVIĆ VITOMIR
+TANASKOVIĆ VUKAN
+TANDI JULIJANA
+TANEV TRAJKO
+TANGL IVAN
+TANGL OLGA
+TANJEVIĆ DRAGOLJUB
+TANJEVIĆ LJUBOMIR
+TANJGA GORAN
+TANJGA LJUBOMIR
+TANJGA MARIJA
+TANJGA RAJKO
+TANJGA TANE
+TANKA IŠTVAN
+TANKOSIĆ BOGDAN
+TANKOSIĆ BOJANA
+TANKOSIĆ BRANKO
+TANKOSIĆ JOVAN
+TANKOSIĆ KUZMAN
+TANKOSIĆ MARKO
+TANKOSIĆ MIHAJLO
+TANKOSIĆ MILAN
+TANKOSIĆ MILENA
+TANKOSIĆ MILICA
+TANKOSIĆ MILICA
+TANKOSIĆ NIKOLA
+TANKOSIĆ RAZIJA
+TANKOSIĆ STEVAN
+TANKOVIĆ SALKO
+TANOVIĆ GAVRILO MR
+TANOVIĆ JOVO
+TANOVIĆ VLADIMIR
+TANTIĆ SLAVKO
+TANURDŽIĆ ŽIVOJIN
+TANURDŽIĆ ALEKSANDAR
+TANURDŽIĆ DARINKA
+TANURDŽIĆ GOJKO
+TANURDŽIĆ JOVAN
+TANURDŽIĆ MILICA
+TANURDŽIĆ MIRKO
+TANURDŽIĆ SRBOMIR
+TANURDŽIĆ STANISLAVA
+TANURDŽIĆ SVETOZAR
+TANURDŽIĆ ZORA
+TAPAI RUDOLF
+TAPAJ GABRIJEL
+TAPAJ STAMENKA
+TAPALAGA JON
+TAPALAGA TODOR
+TAPAVIČKI ČEDOMIR
+TAPAVIČKI BORIVOJ
+TAPAVIČKI FEODOR
+TAPAVIČKI MLADEN
+TAPAVIČKI RADOVAN
+TAPAVIČKI STEVAN
+TAPAVICA ČEDOMIR
+TAPAVICA ALEKSANDRA
+TAPAVICA ALEKSANDRA
+TAPAVICA BORKA
+TAPAVICA BRANKA
+TAPAVICA DOBRILA
+TAPAVICA JELICA
+TAPAVICA LJUBOMIR
+TAPAVICA MILORAD
+TAPAVICA MITA
+TAPAVICA RADOSLAVA
+TAPAVICA RAJKO
+TAPAVICA SIMA
+TAPAVICA STEVAN
+TAPAVICA TIHOMIR
+TAPAVICA VERICA
+TAPAVICA VERICA
+TARAKČIJA ĐORĐE
+TARAKČIJA-MILOVANOVIĆ RATKA
+TARANDŽA IVAN
+TARANDŽA IVAN
+TARASENKO BRATISLAV DR
+TARBUK MIRKO
+TARBUK NIKOLA
+TAREVSKI ĆAMIL
+TARGUŠ MATIJA
+TARI ILONA
+TARJAN DEŽE
+TARJAN GABOR
+TARJAN IMRE
+TARJAN KARLO
+TARJAN TIBOR
+TARKO JANOŠ
+TARLAĆ PERICA
+TARLE ILIJA
+TARLE IVAN
+TARNOCKI AMALIJA DR
+TARNOCKI PAL
+TASEV BLAŽO
+TASEVSKI ILO
+TASEVSKI JORDAN
+TASIĆ ŽAKLINA
+TASIĆ ŽIVOJIN
+TASIĆ ĐORĐE
+TASIĆ ANĐELIJA
+TASIĆ ANA
+TASIĆ BLAGOJE DIPL PRAVNIK
+TASIĆ BLAGOJE
+TASIĆ BOŽIDAR MR PH
+TASIĆ BORISLAV
+TASIĆ BORIVOJE
+TASIĆ BORIVOJE
+TASIĆ DESANKA
+TASIĆ DOBRIVOJ
+TASIĆ IVAN
+TASIĆ LJUBODRAG DIPL ING
+TASIĆ MILOŠ DR LEKAR
+TASIĆ MILOŠ DR
+TASIĆ MILOŠ DR
+TASIĆ MILOŠ
+TASIĆ MIROSLAV
+TASIĆ MIROSLAV
+TASIĆ NEVENKA
+TASIĆ RADE
+TASIĆ SINIŠA
+TASIĆ SLOBODAN
+TASIĆ TRIFUN
+TASIĆ UROŠ
+TASIĆ VERA
+TASIĆ VLADANKA
+TASIĆ ZORAN
+TASKOVIĆ DUŠAN
+TASKOVIĆ MIROSLAV
+TASKOVIĆ PERA
+TASOVAC DOBRILA
+TASOVAC MILORAD
+TATAI EMILIJA
+TATAI IVAN
+TATAI KAROLJ
+TATAI MARGIT
+TATAI TIBOR
+TATALOVIĆ ŽIVKO
+TATALOVIĆ BRANIMIR
+TATALOVIĆ DRAGAN
+TATALOVIĆ ILIJA
+TATALOVIĆ ILIJA
+TATALOVIĆ LAZO
+TATALOVIĆ MILAN
+TATALOVIĆ MILAN
+TATALOVIĆ PETAR
+TATALOVIĆ PETAR
+TATALOVIĆ PETAR
+TATAR DUŠAN
+TATAR DUŠAN
+TATAREVIĆ BLAŽA
+TATARIN RUŽICA
+TATARSKI DUŠAN
+TATARSKI MILORAD
+TATARSKI NADA
+TATARSKI SVETISLAV
+TATARSKI VLADETA
+TATIĆ ŽARKO
+TATIĆ ĐURĐINKA
+TATIĆ ALEKSANDAR
+TATIĆ ALEKSANDAR
+TATIĆ ANKICA
+TATIĆ BRANKO
+TATIĆ DANA
+TATIĆ DRAGAN
+TATIĆ DRAGOŠ
+TATIĆ DRAGOLJUB
+TATIĆ DRAGOMIR
+TATIĆ DUŠAN
+TATIĆ EMIL DR
+TATIĆ EVICA
+TATIĆ ILIJA
+TATIĆ ILIJA
+TATIĆ ILONKA
+TATIĆ JELENA
+TATIĆ JOVAN DIPL ING
+TATIĆ JOVAN
+TATIĆ LAZAR
+TATIĆ MARA
+TATIĆ MARIJA
+TATIĆ MARIJA
+TATIĆ MILAN
+TATIĆ MILAN
+TATIĆ MILIVOJ
+TATIĆ MILKA
+TATIĆ MILOŠ
+TATIĆ MILORAD
+TATIĆ MILOSAV
+TATIĆ MILUTIN DIPL ING
+TATIĆ NEDELJKO
+TATIĆ PAJA
+TATIĆ PERSIDA
+TATIĆ PETAR
+TATIĆ RADMILA
+TATIĆ RADOSLAV
+TATIĆ SLAVKO
+TATIĆ SLOBODAN
+TATIĆ SRBISLAV
+TATIĆ STEVAN
+TATIĆ TOMISLAV
+TATIĆ ZLATICA
+TATOMIR MARKO
+TATOMIROV JOVAN
+TATOMIROV MARIJA
+TATOMIROV MARIJA
+TATOMIROV RADIVOJ
+TATOMIROV ZORAN
+TATOMIROVIĆ BRANKA
+TAUŠAN MARKO
+TAUŠANOVIĆ ILIJA
+TAUŠANOVIĆ RADE
+TAUBNER KATICA
+TEŠANOV MILAN
+TEŠANOVIĆ ČEDO
+TEŠANOVIĆ ŽELJKO
+TEŠANOVIĆ ĐOKO
+TEŠANOVIĆ CVIJETA
+TEŠANOVIĆ DRAGAN
+TEŠANOVIĆ DRAGAN
+TEŠANOVIĆ DUŠAN
+TEŠANOVIĆ JELA
+TEŠANOVIĆ LAZAR
+TEŠANOVIĆ NENAD
+TEŠANOVIĆ NEVENKA
+TEŠANOVIĆ PETAR
+TEŠANOVIĆ RAŠKO
+TEŠANOVIĆ RAJKO
+TEŠANOVIĆ TOMA
+TEŠANOVIĆ VOJA
+TEŠANOVIĆ ZORAN
+TEŠENJI EDUARD
+TEŠIĆ ĐORĐE
+TEŠIĆ ALEKSANDAR
+TEŠIĆ DARINKA
+TEŠIĆ DRAGAN
+TEŠIĆ DUŠAN
+TEŠIĆ ERŽEBET
+TEŠIĆ GRADIMIR
+TEŠIĆ ILIJA
+TEŠIĆ JULIJANA
+TEŠIĆ LJUBOMIR
+TEŠIĆ LUKA
+TEŠIĆ MARIJA
+TEŠIĆ MILENKO
+TEŠIĆ MILE
+TEŠIĆ MILE
+TEŠIĆ MILICA
+TEŠIĆ MILORAD
+TEŠIĆ MIRKO
+TEŠIĆ PERSA
+TEŠIĆ RADISLAV
+TEŠIĆ SLAVKA
+TEŠIĆ SLAVOLJUB DIPL ING
+TEŠIĆ SOFIJA
+TEŠIĆ STANISLAVA
+TEŠIĆ STEVAN DR
+TEŠIĆ SVETLANA
+TEŠIĆ ZDRAVKO
+TEŠIN JASMINKA
+TEŠIN LJUBINKA
+TEŠIN MILOŠ
+TEŠIN STEVKA
+TEŠIN VESNA
+TEŠOVIĆ DRAGICA
+TEŠOVIĆ LJUBO
+TEŠOVIĆ MILENKO
+TEŠOVIĆ MILOMIR
+TEŠOVIĆ MILORAD
+TEŠOVIĆ VASILIJE
+TEŽLA ANDRIJA
+TEDIĆ ŽIVKO
+TEDIĆ BRANISLAV
+TEDIĆ MILOVAN
+TEDIĆ NEVENKA
+TEGELTIJA BOGDAN
+TEGELTIJA DUŠAN
+TEGELTIJA DUŠAN
+TEGELTIJA ILONKA
+TEGELTIJA MAGDALENA
+TEGELTIJA MILAN
+TEGELTIJA MITRA
+TEGELTIJA STANKO
+TEGELTIJA VLAJKO
+TEGLAŠ ANA
+TEGLAŠ LIDIJA
+TEGLAŠ NADA
+TEGLAŠI IŠTVAN
+TEGLAŠI JOŽEF
+TEJIĆ BRANKO
+TEJIĆ-KOVAČ MARIJA
+TEJIĆ LAZAR
+TEJIĆ MILIJA
+TEKIĆ BORO
+TEKIĆ MILAN
+TEKIĆ MILKA
+TEKIĆ MIODRAG
+TEKIĆ MIRKO
+TEKIĆ SLAVICA
+TEKIĆ SLAVKO
+TEL FERENC
+TEL JANOŠ
+TEL JELISAVETA
+TEL JENE
+TEL PETAR
+TEL VILMOŠ
+TELAROV ANKA
+TELAROV JOVAN
+TELAROV MILOŠ
+TELAROV NADA
+TELAROV PERA
+TELAROV SIMA
+TELAROV SINIŠA
+TELAROV SINIŠA
+TELAROV SMILJANA
+TELAROV VOJIN
+TELAROV ZORA
+TELAROVIĆ BORIS
+TELAROVIĆ DIMITRIJE
+TELAROVIĆ IVANA
+TELAROVIĆ IVAN
+TELAROVIĆ RATOMIR
+TELAROVIĆ SLOBODAN
+TELAROVIĆ STEVAN
+TELAROVIĆ STJEPAN
+TELEKI ŠANDOR
+TELEKI ERIKA
+TELEKI STEVAN
+TELEKI VERA
+TEMERINAC DARA
+TEMERINAC MILEVA
+TEMERINAC MIODRAG
+TEMERINSKI JELICA
+TEMERINSKI JOVAN
+TEMERINSKI NADA
+TEMUNOVIĆ MARIJA
+TENCE ALBIN
+TENJI ĐORĐE
+TENJI JOSIP
+TENJI JOSIP
+TENJI JOSIP
+TENJI KSENIJA
+TENJI MARIJA
+TENJOVIĆ DOBRIVOJE
+TENJOVIĆ MILOŠ
+TENJOVIĆ RADIVOJE
+TEODOROVIĆ ANDREJA
+TEODOROVIĆ DOBRILA
+TEODOROVIĆ DUŠAN
+TEODOROVIĆ JOVAN
+TEODOROVIĆ JOVAN
+TEODOROVIĆ LJUBO
+TEODOROVIĆ MARA
+TEODOROVIĆ MILAN
+TEODOROVIĆ NADA
+TEODOROVIĆ PAJA
+TEODOROVIĆ PERA
+TEODOROVIĆ PERA
+TEODOROVIĆ RATIMIR
+TEODOROVIĆ SAVA
+TEODOROVIĆ SIMA
+TEODOROVIĆ SLOBODAN
+TEODOROVIĆ VITOMIR
+TEODOROVIĆ VLADISLAV DIPL ING
+TEODOROVIĆ VLADISLAVA
+TEODOSIĆ MIRJANA
+TEODOSIJEVIĆ BRANISLAV
+TEODOSIJEVIĆ MILICA
+TEODOSIJEVIĆ ZORAN
+TEOFANOV ĐURĐICA
+TEOFANOV BOŠKO
+TEOFANOV DOBRINKA
+TEOFANOV DUŠAN
+TEOFANOV DUŠKO
+TEOFANOV MARINKO
+TEOFANOV MILAN
+TEOFANOV MILIVOJ
+TEOFANOV MILOŠ
+TEOFANOV MILOŠ
+TEOFANOV OLIVERA
+TEOFANOV ZORA
+TEOFANOVIĆ ŠTEFANIJA
+TEOFANOVIĆ ALEKSANDAR
+TEOFANOVIĆ ALEKSANDAR
+TEOFANOVIĆ ANA
+TEOFANOVIĆ ARANĐEL
+TEOFANOVIĆ BOGDAN
+TEOFANOVIĆ BOGDAN
+TEOFANOVIĆ DANILO
+TEOFANOVIĆ DONKA
+TEOFANOVIĆ DUŠAN
+TEOFANOVIĆ MARKO DR VETERINE
+TEOFANOVIĆ MILEVA
+TEOFANOVIĆ MILICA
+TEOFANOVIĆ TADIJA
+TEOFILOVIĆ ĐURĐICA
+TEOFILOVIĆ ALEKSANDAR
+TEOFILOVIĆ BRANKA
+TEOFILOVIĆ GORAN
+TEOFILOVIĆ MOMČILO
+TEOFILOVIĆ SAVO
+TEOVANOVIĆ NEVENKA
+TEPŠA NEBOJŠA
+TEPŠA SINIŠA
+TEPŠIĆ JOVICA
+TEPŠIĆ MIODRAG
+TEPŠIĆ RADE
+TEPAČEVIĆ ANDREJA
+TEPAVČEVIĆ ŽANKA
+TEPAVČEVIĆ BOŽIDAR
+TEPAVČEVIĆ GOJKO
+TEPAVČEVIĆ MILOVAN
+TEPAVČEVIĆ PETAR DR
+TEPAVČEVIĆ RATKO
+TEPAVČEVIĆ STRAHINJA
+TEPIĆ FRANCIKA
+TEPIĆ GORAN
+TEPIĆ JOVAN
+TEPIĆ MILAN
+TEPIĆ MILOŠ
+TEPIĆ MILOVAN
+TEPIĆ NEDELJKO
+TEPIĆ OBRENKO
+TEPIĆ RADOVAN
+TEPIĆ RAJKO
+TEPIĆ SNEŽANA
+TEPIĆ VIDA
+TEPIĆ ZORAN
+TEREČEK ANĐELKA
+TEREČIĆ LAJOŠ
+TEREČIK PAL
+TERECKI IŠTVAN
+TEREK ĐULA
+TEREK ANDRIJA
+TEREK FERENC
+TEREK IŠTVAN
+TEREK IMRE DIPL ING
+TEREK IRENA
+TEREK JANOŠ
+TEREK KATALIN
+TEREK LASLO
+TEREK LJUDEVIT DR ING
+TEREK OLGA
+TEREK TIBOR
+TEREZIJA BOSILJKA
+TERHEŠ ŠANDOR
+TERJEK ALEKSANDAR
+TERJEK-KOVAČ KARLO
+TERJEK MIHAJLO
+TERJEK VIKTORIJA
+TERKELJ ANA
+TERLJUK IVAN
+TERNOVAC IŠTVAN
+TERZIĆ ŽIVKO
+TERZIĆ ĐORĐE
+TERZIĆ ĐURO
+TERZIĆ BELA
+TERZIĆ BISERKA
+TERZIĆ BOGOLJUB
+TERZIĆ BRANKA
+TERZIĆ DRAGAN
+TERZIĆ DRAGOMIR
+TERZIĆ DUŠAN
+TERZIĆ DUŠAN
+TERZIĆ FRANCA
+TERZIĆ JEVREM
+TERZIĆ JOVAN
+TERZIĆ MILAN
+TERZIĆ MILAN
+TERZIĆ MILENA
+TERZIĆ MILENKO
+TERZIĆ MILICA
+TERZIĆ MIODRAG
+TERZIĆ MIODRAG
+TERZIĆ NIKOLA
+TERZIĆ NJEGOSAVA
+TERZIĆ PAVLE
+TERZIĆ PERKA
+TERZIĆ PETAR DR
+TERZIĆ PETAR
+TERZIĆ PETAR
+TERZIĆ RELJA
+TERZIĆ SAVA
+TERZIĆ SLAVKO
+TERZIĆ SLAVKO
+TERZIĆ SLAVNA
+TERZIĆ SLOBODAN
+TERZIĆ SRBISLAV
+TERZIĆ STANKA
+TERZIĆ TEODOR
+TERZIĆ TEREZA
+TERZIĆ TRIFUN
+TERZIĆ VERA
+TERZIĆ VLADAN
+TERZIĆ VOJISLAV
+TERZIJA MITAR
+TERZIN BRANISLAV
+TERZIN BRANKO
+TERZIN DRAGOSLAV
+TERZIN DUŠAN
+TERZIN JOVANKA
+TERZIN JOVANKA
+TERZIN LJUBICA
+TERZIN MILAN
+TERZIN MILINA
+TERZIN MIRJANA
+TERZIN MIROSLAVA
+TERZIN MIROSLAVA
+TERZIN MITA
+TERZIN NEVENKA
+TERZIN RADIVOJ
+TERZIN RADMILA
+TERZIN RISTA
+TERZIN SLOBODAN
+TERZIN STANKO
+TERZIN TOŠA
+TERZIN VASA
+TERZIN VELIMIR
+TERZIN VELJKO
+TERZIN VERICA
+TERZIN VESELIN
+TERZIN VOJISLAV
+TESLA ŠPIRO
+TESLA BRANKO
+TESLA DRAGAN
+TESLA MIRA
+TESLIĆ ĐORĐE
+TESLIĆ MAKSIM
+TESLIĆ MARKO
+TESLIĆ VLADIMIR
+TESTIN MARIJA
+TIŠANOVIĆ MILIVOJ
+TIŠIĆ MILENA
+TIŠMA ČEDOMIR
+TIŠMA ŽELJKO
+TIŠMA ĐURICA
+TIŠMA ANDREJ
+TIŠMA BRANKO
+TIŠMA DUŠAN
+TIŠMA DUŠAN
+TIŠMA ILIJA
+TIŠMA JOVAN
+TIŠMA LAZAR
+TIŠMA LJILJANA
+TIŠMA MARIJA
+TIŠMA MARTA
+TIŠMA-MILOŠEVSKI NATAŠA
+TIŠMA MILOŠ
+TIŠMA MIRKO
+TIŠMA MOMIR
+TIŠMA NIKOLA
+TIŠMA SINIŠA
+TIŠMA SMILJA
+TIŠMA STEVAN
+TIŠMA SVETOZAR
+TIŠMA VOJINKA
+TIŠMA VOJIN
+TIŠMA ZORAN
+TIBAI IŠTVAN
+TIC ANAMARIJA
+TICA BOŽO
+TICA CVETA
+TICA DMITAR
+TICA DRAGAN
+TICA JOVAN
+TICA MILOŠ
+TICA NEDELJKO
+TIGANJ ANTE
+TIHI JOSIP
+TIHOMIROVIĆ MILAN
+TIHOMIROVIĆ VELJKO
+TIHVINSKI VLADAN
+TIHVINSKI VLADIMIR DIPL ING
+TIJANIĆ MILOŠ
+TIJANIĆ SMILJA
+TIJANIĆ ZORAN
+TIKVEŠA NAILA
+TIKVIĆ BOŠKO
+TIKVIĆ MIROSLAV
+TIKVICKI HRVOJE
+TIKVICKI MARIJANA
+TIL EDVIN DR
+TIMARAC BRANKO
+TIMARAC STOJAN
+TIMAROV ĐORĐE
+TIMAROV STEVAN
+TIMAROV VASA
+TIMAROV VERA
+TIMILIĆ DIMITRIJE
+TIMKO IRINEJ
+TIMKO LJUBOV
+TIMKO MELANIJA
+TIMKO NESTOR
+TIMKO VERA
+TIMKO VLADIMIR
+TIMOTIĆ ĐORĐE
+TIMOTIĆ STANA
+TIMOTIĆ UROŠ
+TIMOTIJEVIĆ ANICA
+TIMOTIJEVIĆ BOŽIDAR
+TIMOTIJEVIĆ DIMITRIJE
+TIMOTIJEVIĆ JEVREM
+TIMOTIJEVIĆ-KOPRIVICA MAJA
+TIMOTIJEVIĆ MIROSLAV
+TIMOTIJEVIĆ OLGA
+TIMOTIJEVIĆ PLEMENKA
+TIMOTIJEVIĆ RADOSLAV
+TINKOVIĆ TOMISLAV
+TINTER HEDVIGA
+TINTOR ĐURA
+TINTOR DUŠAN
+TINTOR MARKO
+TINTOR MILKA
+TINTOR MIODRAG
+TINTOR MIRA
+TINTOR-RADOMIR STOJA
+TINTOR STEVAN
+TINUS BERNADETA
+TINUS MARTA
+TIODOROVIĆ LJILJANA
+TIODOROVIĆ RADOVAN
+TIPŠIN BORISLAV
+TIPURA JOSIP
+TIPURA JOSIP
+TIPURA LADISLAV
+TIPURA LASLO
+TIR IŠTVAN
+TIR MILKA
+TIR PETAR
+TIRI ANTAL
+TIRINDA ĐURA
+TIRINGER ELZA
+TIRKAJLA ANA
+TIRKAJLA SLAVOMIR
+TIRNANIĆ BISERKA
+TISINOVIĆ JELISAVETA
+TISTA ERŽEBET
+TISTA JANOŠ
+TITELAC ĐORĐE
+TITELAC ĐORĐE
+TITELAC JELENA
+TITELAC JOVAN
+TITELAC MILINKA
+TITELAC NADA
+TITELAC STEVAN
+TITELAC ZORICA
+TITOV ALEKSANDAR
+TITOV ANA
+TITOV ANICA
+TITOV EVGENIJE
+TITOV PAVLE
+TITOV TOMISLAV
+TKALČEC JOVAN
+TKALEC PAVAO
+TOŠIĆ ŽARKO
+TOŠIĆ BORISLAVA
+TOŠIĆ BORISLAV
+TOŠIĆ BRATISLAV
+TOŠIĆ BRATISLAV
+TOŠIĆ DANICA
+TOŠIĆ DRAGAN
+TOŠIĆ DRAGAN
+TOŠIĆ DUŠAN
+TOŠIĆ DUŠAN
+TOŠIĆ DUŠAN
+TOŠIĆ ERŽEBET
+TOŠIĆ EVICA
+TOŠIĆ GOJKO
+TOŠIĆ JELA
+TOŠIĆ JOVAN
+TOŠIĆ JOVICA
+TOŠIĆ KRSTAN
+TOŠIĆ KRSTOMIR
+TOŠIĆ LJUBICA
+TOŠIĆ LJUBINKO
+TOŠIĆ MIHAJLO
+TOŠIĆ MILAN
+TOŠIĆ MILAN
+TOŠIĆ MILAN
+TOŠIĆ MILEVA
+TOŠIĆ MILE
+TOŠIĆ MILOŠ
+TOŠIĆ MILORAD
+TOŠIĆ MILUTIN
+TOŠIĆ MIODRAG
+TOŠIĆ MIRKO
+TOŠIĆ MITAR
+TOŠIĆ NEDELJKO
+TOŠIĆ NEVENKA
+TOŠIĆ NIKOLA
+TOŠIĆ NIKO
+TOŠIĆ NOVAK
+TOŠIĆ OBRAD
+TOŠIĆ OSTOJA
+TOŠIĆ PERO
+TOŠIĆ PETAR
+TOŠIĆ RADE
+TOŠIĆ RADOMIR
+TOŠIĆ RADOMIR
+TOŠIĆ RATKO
+TOŠIĆ SAVA
+TOŠIĆ SLAVKA
+TOŠIĆ SOFIJA
+TOŠIĆ STANIMIR
+TOŠIĆ STEVAN
+TOŠIĆ STEVAN
+TOŠIĆ SVETISLAV
+TOŠIĆ SVETLANA
+TOŠIĆ VELIBOR
+TOŠIĆ VERA
+TOŠIĆ VID
+TOŠIĆ VLADO
+TOŠIĆ VLASTIMIR
+TOŠIĆ VOJIN
+TOŠINOVIĆ LUKA
+TOŠKOV HRANISLAV
+TOŠKOV PERA
+TOŠKOVIĆ VUČETA
+TOŠKOVIĆ VUČIĆ
+TOŠKOVIĆ ZDRAVKO
+TOŠOVIĆ MILANKA
+TOŠOVIĆ MILOJE
+TOĐER KOSTA
+TOBDŽIĆ-BRAŠANAC MIROSLAVA
+TOBDŽIĆ KATARINA
+TOBDŽIĆ MILENKO
+TOBDŽIĆ STEVAN
+TOBI MARIJA
+TOBI MIROSLAV
+TOBIAŠ VILMOŠ
+TOBOLKA ANA
+TOBOLKA DANIEL
+TOBOLKA ERIKA
+TOBOLKA IŠTVAN
+TOBOLKA ILONA
+TODIĆ BOGDAN
+TODIĆ BORISLAV
+TODIĆ BORISLAV
+TODIĆ BRANISLAV
+TODIĆ DANIJELA
+TODIĆ GOJKO DIPL ING
+TODIĆ MARIJANA
+TODIĆ MILANKO
+TODIĆ MILAN
+TODIĆ MILE
+TODIĆ MILOŠ DIPL ING
+TODIĆ MILOŠ
+TODIĆ MIROSLAV
+TODIĆ NEĐO
+TODIĆ RADIVOJ
+TODIĆ RAJKO
+TODIĆ RATOMIR
+TODIĆ STANISAVA
+TODIĆ STANKO
+TODIĆ TOMISLAV
+TODIĆ VELIMIR
+TODIĆ VLADO
+TODOŠKOVIĆ BOGDAN
+TODOŠKOVIĆ NADA
+TODOŠKOVIĆ NEMANJA
+TODORČEVIĆ DRAGUTIN
+TODORČEVIĆ OSTOJA
+TODORČEVIĆ PERO
+TODORČEVIĆ SVETLANA
+TODORČEVIĆ VASILIJE
+TODORČEVIĆ VASO
+TODORČEVIĆ VOJIN
+TODORAN TRAJAN
+TODORIĆ ČEDOMIR
+TODORIĆ BRANKO
+TODORIĆ DRAGAN
+TODORIĆ GOJKO
+TODORIĆ ILIJA
+TODORIĆ JELENA
+TODORIĆ JOVANKA
+TODORIĆ JOVAN
+TODORIĆ LJUBA
+TODORIĆ LJUBIVOJE
+TODORIĆ MARIJA
+TODORIĆ MILOŠ
+TODORIĆ MILOŠ
+TODORIĆ NEDELJKO
+TODORIĆ NIKOLA
+TODORIĆ NIKO
+TODORIĆ RADMILA
+TODORIĆ SELIMIR
+TODORIĆ TRIVUNA
+TODOROV ĐURA
+TODOROV ALEKSANDAR
+TODOROV BISERKA
+TODOROV DESANKA
+TODOROV GLIŠA
+TODOROV IVAN
+TODOROV-JAŠAREVIĆ DANICA
+TODOROV MILIVOJ
+TODOROV MILOŠ
+TODOROV NEDELJKO
+TODOROV OBRENKA
+TODOROV RADOVAN
+TODOROV ROBERT
+TODOROV SAVA
+TODOROV SLOBODAN
+TODOROV SPIRO DR
+TODOROV TOMISLAV
+TODOROVIĆ ČEDO
+TODOROVIĆ ŽARKO
+TODOROVIĆ ŽARKO
+TODOROVIĆ ŽIVOJIN
+TODOROVIĆ ŽIVOTA
+TODOROVIĆ ŽIVOTA
+TODOROVIĆ ALEKSANDAR
+TODOROVIĆ ALEKSANDAR
+TODOROVIĆ ALEKSANDAR
+TODOROVIĆ ANĐELKO
+TODOROVIĆ ANA
+TODOROVIĆ ANKA
+TODOROVIĆ ANTUN
+TODOROVIĆ BOŠKO
+TODOROVIĆ BOŠKO
+TODOROVIĆ BOGDAN
+TODOROVIĆ BORISLAV
+TODOROVIĆ BORIVOJE
+TODOROVIĆ BOSA
+TODOROVIĆ BRANISLAV
+TODOROVIĆ BRANKO
+TODOROVIĆ BRANKO
+TODOROVIĆ BRANKO
+TODOROVIĆ BRANKO
+TODOROVIĆ CVETKO
+TODOROVIĆ CVIJETIN
+TODOROVIĆ CVIJO
+TODOROVIĆ DANICA
+TODOROVIĆ DANILO
+TODOROVIĆ DIMITRIJE
+TODOROVIĆ DOBROSAV
+TODOROVIĆ DOBROSAV
+TODOROVIĆ DRAGAN
+TODOROVIĆ DRAGAN
+TODOROVIĆ DRAGAN
+TODOROVIĆ DRAGAN
+TODOROVIĆ DRAGICA
+TODOROVIĆ DRAGOLJUB
+TODOROVIĆ DRAGOLJUB
+TODOROVIĆ DRAGOSLAV
+TODOROVIĆ DRAGOSLAV
+TODOROVIĆ DUŠAN
+TODOROVIĆ DUŠAN
+TODOROVIĆ DUŠAN
+TODOROVIĆ DUŠAN
+TODOROVIĆ DUŠKO
+TODOROVIĆ GOJKO
+TODOROVIĆ GOJKO
+TODOROVIĆ GRADIMIR
+TODOROVIĆ ILE
+TODOROVIĆ JASNA
+TODOROVIĆ JELENA
+TODOROVIĆ JELICA
+TODOROVIĆ JELICA
+TODOROVIĆ JOKA
+TODOROVIĆ JOVANKA
+TODOROVIĆ JOVICA
+TODOROVIĆ JULIJANA
+TODOROVIĆ KOVINKA
+TODOROVIĆ LAZAR
+TODOROVIĆ LENKA
+TODOROVIĆ LJUBICA
+TODOROVIĆ LJUBICA
+TODOROVIĆ LJUBINKA
+TODOROVIĆ LJUBOMIR
+TODOROVIĆ MARA
+TODOROVIĆ MARGITA
+TODOROVIĆ MARIJA
+TODOROVIĆ MARKO
+TODOROVIĆ MARKO
+TODOROVIĆ MARKO
+TODOROVIĆ MIŠO
+TODOROVIĆ MIĆA
+TODOROVIĆ MIĆO
+TODOROVIĆ MIHAJLO
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILAN
+TODOROVIĆ MILENKO
+TODOROVIĆ MILE
+TODOROVIĆ MILICA
+TODOROVIĆ MILKA
+TODOROVIĆ MILOŠ
+TODOROVIĆ MILORAD
+TODOROVIĆ MILOVAN
+TODOROVIĆ MIRKO DIPL ING
+TODOROVIĆ MIRKO DR LEKAR
+TODOROVIĆ MIRKO
+TODOROVIĆ MIRKO
+TODOROVIĆ MIRKO
+TODOROVIĆ MIRKO
+TODOROVIĆ MIROSLAVA
+TODOROVIĆ MIROSLAV
+TODOROVIĆ MLADEN DR
+TODOROVIĆ MLADEN
+TODOROVIĆ MLADOMIR
+TODOROVIĆ MOMČILO
+TODOROVIĆ MOMČILO
+TODOROVIĆ MOMIRKA
+TODOROVIĆ NADA
+TODOROVIĆ NADA
+TODOROVIĆ NIĆIFOR
+TODOROVIĆ NIKOLA
+TODOROVIĆ NIKOLA
+TODOROVIĆ OLGICA
+TODOROVIĆ OSTOJA
+TODOROVIĆ PETAR
+TODOROVIĆ PETAR
+TODOROVIĆ RAŠKO
+TODOROVIĆ RADA
+TODOROVIĆ RADIŠA
+TODOROVIĆ RADIVOJ ADVOKAT
+TODOROVIĆ RADIVOJE
+TODOROVIĆ RADIVOJ
+TODOROVIĆ RADMILA
+TODOROVIĆ RADOJKA
+TODOROVIĆ RADOSLAV
+TODOROVIĆ RAJKO
+TODOROVIĆ RANKO
+TODOROVIĆ RATKO
+TODOROVIĆ ROSA
+TODOROVIĆ SAŠA
+TODOROVIĆ SAVA
+TODOROVIĆ SAVA
+TODOROVIĆ SAVO
+TODOROVIĆ SAVO
+TODOROVIĆ SENKA
+TODOROVIĆ SIMA
+TODOROVIĆ SINIŠA
+TODOROVIĆ SLAVE
+TODOROVIĆ SLOBODAN
+TODOROVIĆ SLOBODAN
+TODOROVIĆ SMILJKA
+TODOROVIĆ SNEŽANA
+TODOROVIĆ SOFIJA
+TODOROVIĆ SREDOJE
+TODOROVIĆ SRETEN
+TODOROVIĆ STANIMIR
+TODOROVIĆ STANISLAV
+TODOROVIĆ STANKO
+TODOROVIĆ STEVAN
+TODOROVIĆ STEVAN
+TODOROVIĆ STEVA
+TODOROVIĆ TODE
+TODOROVIĆ TODE
+TODOROVIĆ TOMISLAV
+TODOROVIĆ TOMISLAV
+TODOROVIĆ VERA
+TODOROVIĆ VERA
+TODOROVIĆ VERA
+TODOROVIĆ VLADETA
+TODOROVIĆ VLADIMIR
+TODOROVIĆ VLADIMIR
+TODOROVIĆ VLADISLAV
+TODOROVIĆ VUKAŠIN
+TODOROVIĆ ZORAN
+TODOROVIĆ ZORAN
+TODOROVIĆ ZORAN
+TODOROVIĆ ZORA
+TODOROVIĆ ZORKA
+TODOROVSKI MANASIJE
+TODOROVSKI MIROSLAV
+TODOROVSKI NADA
+TODOSIJEVIĆ ĐORĐE
+TODOSIJEVIĆ DRAGOLJUB
+TODOSIJEVIĆ MILAN
+TODOSIJEVIĆ ZLATKO DIPL PRAVNIK
+TOFIL SOFIJA
+TOHOLJ JOVO
+TOHOLJEVIĆ BOŠKO
+TOHOLJEVIĆ ZDRAVKO
+TOJAGA MILAN
+TOJAGA MILOŠ
+TOJAGA SVETOZAR
+TOJAGIĆ ĐORĐE
+TOJAGIĆ BOŽIDAR
+TOJAGIĆ DANE
+TOJAGIĆ DANILO
+TOJAGIĆ DUŠAN
+TOJAGIĆ JELA
+TOJAGIĆ LUDMILA
+TOJAGIĆ MIRJANA
+TOJAGIĆ NIKOLA
+TOJAGIĆ NIKOLA
+TOJAGIĆ RADOVAN
+TOJAGIĆ SLOBODAN
+TOJZAN ILONA
+TOKAR JULIJA
+TOKIĆ KOSARA
+TOKIĆ MIHAJLO
+TOKIĆ MILAN
+TOKIĆ SAVA
+TOKIĆ SAVA
+TOKIĆ SAVA
+TOKIN-ĐERIĆ ZAGORKA
+TOKIN ĐORĐE
+TOKIN ALISA
+TOKIN BORA
+TOKIN DANICA
+TOKIN PROKOP DR LEKAR
+TOKIN SLOBODAN
+TOKIN VERA
+TOKIN VLADA
+TOKODI JANOŠ
+TOKODI JOLANKA
+TOKODI MARGITA
+TOKOVIĆ JELICA
+TOL ANDRAŠ
+TOL JOŽEF
+TOLDI EVA
+TOLDI VILMOŠ
+TOLIĆ MILOŠ
+TOLIĆ VESNA
+TOLICKI ZORA
+TOLIMIR UROŠ
+TOLJAGA VUKOSAVA
+TOLJEVIĆ BRANKO
+TOLJEVIĆ DOBRISLAV
+TOLJEVIĆ DRAGICA
+TOLJIĆ RAJKO
+TOLMAČ ZORAN
+TOLMAČEV ŽIVA
+TOLMAČEV MIROSLAV
+TOLNAI OTO
+TOLNAI RUŽA
+TOLT JOŽEF
+TOLT JOSIP
+TOLVAJ AGNEŠ
+TOLVAJ ELEONORA
+TOLVET OSKAR
+TOMČANJI IVAN
+TOMČANJI MIROSLAVA
+TOMČANJI STANISLAVA
+TOMČEVA NEVENKA DR
+TOMČEVSKI CVETAN
+TOMČIĆ ČEDOMIR
+TOMČOV TOMČO
+TOMČOVA ANETA DR
+TOMČOVA ANITA DR
+TOMŠIĆ LADISLAV
+TOMA ŠANDOR
+TOMA ANDRIJA
+TOMA JANOŠ
+TOMA JANOŠ
+TOMA JANOŠ
+TOMA JULIJANA
+TOMA LADISLAV
+TOMA MARIJA
+TOMA MIHAJLO
+TOMA OLGA
+TOMA PAL
+TOMA ROZALIJA
+TOMA STEVAN
+TOMAŠ ĐURA
+TOMAŠ JANKO
+TOMAŠ JOVAN
+TOMAŠ MILORAD
+TOMAŠ MILOVAN
+TOMAŠ STOJANKA
+TOMAŠEV BOŽIDAR
+TOMAŠEV KOVINKA
+TOMAŠEV MATIJA
+TOMAŠEV MATIJA
+TOMAŠEV PETAR
+TOMAŠEV VERA
+TOMAŠEVIĆ BLAGOTA
+TOMAŠEVIĆ BOŽIDAR
+TOMAŠEVIĆ BORISLAV
+TOMAŠEVIĆ DRAGANA
+TOMAŠEVIĆ EVICA
+TOMAŠEVIĆ IVAN
+TOMAŠEVIĆ JELICA
+TOMAŠEVIĆ JOVAN
+TOMAŠEVIĆ KOSTA
+TOMAŠEVIĆ LJUBIŠA
+TOMAŠEVIĆ LJUBICA
+TOMAŠEVIĆ LUKA
+TOMAŠEVIĆ MANOJLE
+TOMAŠEVIĆ MILENKO
+TOMAŠEVIĆ MILIVOJ
+TOMAŠEVIĆ MILKA
+TOMAŠEVIĆ MILORAD
+TOMAŠEVIĆ MIODRAG
+TOMAŠEVIĆ MIODRAG
+TOMAŠEVIĆ NADA
+TOMAŠEVIĆ NADEŽDA
+TOMAŠEVIĆ RADIVOJ
+TOMAŠEVIĆ RADOJKA
+TOMAŠEVIĆ RADOJKA
+TOMAŠEVIĆ SAVO
+TOMAŠEVIĆ SLOBODAN
+TOMAŠEVIĆ SVETOMIR
+TOMAŠEVIĆ VLADIMIR
+TOMAŠEVIĆ VOJISLAV
+TOMAŠIĆ ĐURA
+TOMAŠIĆ BERTA
+TOMAŠIĆ MARTIN
+TOMAŠIĆ MIRJANA
+TOMAŠIĆ TIBOR
+TOMAC IVAN
+TOMAC MIROSLAV
+TOMAC RUŽICA
+TOMAN DIN
+TOMAN FRANJA
+TOMAN JOŽEF
+TOMAN LASLO
+TOMAN MAGDOLNA
+TOMANIĆ DUŠAN
+TOMANIĆ-LACKOVIĆ MILENA
+TOMANIĆ MILENA
+TOMANIĆ ZDENKA
+TOMANOVIĆ BRANISLAV
+TOMANOVIĆ MARIJA
+TOMANOVIĆ MIODRAG
+TOMANOVIĆ RAJKO
+TOMANOVIĆ TOMISLAV
+TOMAS ANDRIJA
+TOMAS JOSIP
+TOMAS RUDOLF
+TOMAS ZDRAVKA
+TOMEC VLADISLAV
+TOMIČIĆ ANTE
+TOMIČIĆ CVIJO
+TOMIČIĆ JOVO
+TOMIČIĆ PETAR
+TOMIČIĆ STOJA
+TOMIČIĆ TOMISLAV
+TOMIČIN MARIJA
+TOMIĆ ČEDOMIR DIPL ING
+TOMIĆ ČEDOMIR
+TOMIĆ ŽELJKO
+TOMIĆ ŽIVKO
+TOMIĆ ŽIVOJIN
+TOMIĆ ĐORĐE
+TOMIĆ ĐURĐICA
+TOMIĆ ĐURĐINKA
+TOMIĆ ĐURICA
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSANDAR
+TOMIĆ ALEKSA
+TOMIĆ ANA
+TOMIĆ ANGELINA
+TOMIĆ ANKA
+TOMIĆ ANKICA
+TOMIĆ ANKICA
+TOMIĆ ARIJADNA
+TOMIĆ BILJANA
+TOMIĆ BOŠKO
+TOMIĆ BOŠKO
+TOMIĆ BOŽIDARKA
+TOMIĆ BOGDANKA
+TOMIĆ BOJKA
+TOMIĆ BORISLAV DR ING
+TOMIĆ BORISLAV
+TOMIĆ BOSILJKA
+TOMIĆ BRANKO
+TOMIĆ DANICA
+TOMIĆ DANILO MR
+TOMIĆ DARINKA
+TOMIĆ DEJAN
+TOMIĆ DEVA
+TOMIĆ DRAGAN
+TOMIĆ DRAGAN
+TOMIĆ DRAGAN
+TOMIĆ DRAGA
+TOMIĆ DRAGA
+TOMIĆ DRAGOLJUB
+TOMIĆ DRAGUTIN
+TOMIĆ DUŠAN
+TOMIĆ DUŠAN
+TOMIĆ DUŠICA
+TOMIĆ EVA
+TOMIĆ EVA
+TOMIĆ GORDANA
+TOMIĆ GRADIMIR
+TOMIĆ ILE
+TOMIĆ ILE
+TOMIĆ ILIJA
+TOMIĆ ILIJA
+TOMIĆ ILIJA
+TOMIĆ IVAN
+TOMIĆ-IVIČIĆ BILJANA
+TOMIĆ JELENA
+TOMIĆ JELICA
+TOMIĆ JOSIF
+TOMIĆ JOSIP
+TOMIĆ JOVANKA
+TOMIĆ JOVAN
+TOMIĆ JOVAN
+TOMIĆ JOVAN
+TOMIĆ JULIANA
+TOMIĆ KATARINA
+TOMIĆ KONSTANTIN
+TOMIĆ KORNELIA
+TOMIĆ KOSA
+TOMIĆ KRSTA
+TOMIĆ LAZAR
+TOMIĆ LAZAR
+TOMIĆ LEPOSAVA
+TOMIĆ LJILJANA
+TOMIĆ LJILJA
+TOMIĆ LJUBA
+TOMIĆ LJUBIŠA
+TOMIĆ LJUBIŠA
+TOMIĆ LJUBIŠA
+TOMIĆ LJUBINKA
+TOMIĆ LJUBOMIR
+TOMIĆ LJUBOMIR
+TOMIĆ MARGIT
+TOMIĆ MARIJA
+TOMIĆ MARIJA
+TOMIĆ MARIJA
+TOMIĆ MARIJA
+TOMIĆ MARKO
+TOMIĆ MIJODRAG
+TOMIĆ MILADIN
+TOMIĆ MILAN
+TOMIĆ MILAN
+TOMIĆ MILAN
+TOMIĆ MILAN
+TOMIĆ MILENKO
+TOMIĆ MILENKO
+TOMIĆ MILE
+TOMIĆ MILIVOJ
+TOMIĆ MILKA
+TOMIĆ MILOŠ
+TOMIĆ MILOŠ
+TOMIĆ MILOMIR
+TOMIĆ MILORAD
+TOMIĆ MILORAD
+TOMIĆ MILOSAV
+TOMIĆ MIRJANA
+TOMIĆ MIRJANA
+TOMIĆ MIRJAN
+TOMIĆ MIRKO
+TOMIĆ MIRKO
+TOMIĆ MIROSLAV
+TOMIĆ MIROSLAV
+TOMIĆ MIROSLAV
+TOMIĆ MIROSLAV
+TOMIĆ MITAR
+TOMIĆ MLADEN
+TOMIĆ MOMČILO
+TOMIĆ MOMČILO
+TOMIĆ NATAŠA
+TOMIĆ NATALIJA
+TOMIĆ NEBOJŠA
+TOMIĆ NEDELJKA
+TOMIĆ-NEDELJKOVIĆ DOBRILA
+TOMIĆ NEDELJKO
+TOMIĆ NENAD
+TOMIĆ NENAD
+TOMIĆ NENAD
+TOMIĆ NIKOLA
+TOMIĆ NIKOLA
+TOMIĆ NOVICA
+TOMIĆ OLGICA MR
+TOMIĆ OLIVERA
+TOMIĆ PAVLE DR
+TOMIĆ PELKA
+TOMIĆ PETAR
+TOMIĆ PETKO
+TOMIĆ RADIVOJE
+TOMIĆ RADOVAN
+TOMIĆ RADOVAN
+TOMIĆ RATOMIR
+TOMIĆ ROZALIJA
+TOMIĆ SAŠA
+TOMIĆ SAVA
+TOMIĆ SAVA
+TOMIĆ SELIMIR
+TOMIĆ-SIMIN MILKA
+TOMIĆ SINIŠA
+TOMIĆ SLAVICA
+TOMIĆ SLAVICA
+TOMIĆ SLAVKO
+TOMIĆ SLAVKO
+TOMIĆ SLAVKO
+TOMIĆ SLAVOLJUB
+TOMIĆ SLOBODANKA
+TOMIĆ SLOBODAN
+TOMIĆ SLOBODAN
+TOMIĆ SNEŽANA
+TOMIĆ SOFIJA
+TOMIĆ STANKO
+TOMIĆ STEVAN
+TOMIĆ STEVAN
+TOMIĆ STEVAN
+TOMIĆ STEVAN
+TOMIĆ STIPA
+TOMIĆ STJEPAN
+TOMIĆ SVETOZAR
+TOMIĆ SVETOZAR
+TOMIĆ TATJANA
+TOMIĆ TODE
+TOMIĆ TODOR
+TOMIĆ VALERIJA
+TOMIĆ VELJKO
+TOMIĆ VELJKO
+TOMIĆ VERA
+TOMIĆ VERICA
+TOMIĆ VESNA
+TOMIĆ VESNA
+TOMIĆ VESNA
+TOMIĆ VID
+TOMIĆ VINKO
+TOMIĆ VLADIMIR
+TOMIĆ VLADIMIR
+TOMIĆ VLASTIMIR
+TOMIĆ VLASTIMIR
+TOMIĆ VOJISLAVA
+TOMIĆ VUKOSAVA
+TOMIĆ ZORAN
+TOMIĆ ZORICA
+TOMIĆ ZORKA
+TOMIĆ ZORKA
+TOMIĆ ZORKA
+TOMIK JOVAN
+TOMIK SOFIJA
+TOMIK STEVAN
+TOMIN ŽIVAN
+TOMIN ALEKSANDAR
+TOMIN BRANISLAV
+TOMIN BRANISLAV
+TOMIN DIMITRIJE
+TOMIN DRAGAN
+TOMIN DRAGAN
+TOMIN DRAGINJA
+TOMIN DUŠAN
+TOMIN GORDANA
+TOMIN LJUBICA
+TOMIN LJUBICA
+TOMIN MARIJA
+TOMIN MILAN
+TOMIN MILUTIN
+TOMIN MILUTIN
+TOMIN MIROSLAV
+TOMIN MITAR
+TOMIN RADOSLAV
+TOMIN STEVAN DIPL PRAVNIK
+TOMIN STEVAN
+TOMIN STEVAN
+TOMIN STEVAN
+TOMIN STEVAN
+TOMIN SVETLANA
+TOMIN VASA
+TOMIN VIDOSAVA
+TOMINČIĆ MILOVAN
+TOMINAC VINKO
+TOMKA ALPAR
+TOMKA KARLO
+TOMLJANOVIĆ BOGOSLAV
+TOMLJANOVIĆ LJUBICA
+TOMLJANOVIĆ MARIJA
+TOMLJANOVIĆ MILAN
+TOMO JOSIP
+TOMOV BOGDAN
+TOMOV MIRČE
+TOMOV SAVA
+TOMOV SLOBODAN
+TOMOV TOŠA
+TOMOV TODOR
+TOMOV VELIN
+TOMOV VELIN
+TOMOVIĆ ANĐA
+TOMOVIĆ BOŽIDAR
+TOMOVIĆ BORISLAV
+TOMOVIĆ DRAGINJA
+TOMOVIĆ DUŠAN
+TOMOVIĆ MITAR
+TOMOVIĆ RADOMIR
+TOMOVIĆ RADOSLAV
+TOMOVIĆ STOJANKA
+TOMOVIĆ TOMO
+TOMOVIĆ VASILIJE
+TOMOVIĆ ZORAN
+TOMOVIĆ ZORICA
+TONČEV IVAN
+TONDOLO SMILJA
+TONIĆ ŽIKICA
+TONIĆ RUŽICA
+TONIĆ STOJIMEN
+TONKOVIĆ JOCA
+TONKOVIĆ JOSIP
+TONKOVIĆ MILAN
+TONKOVIĆ MILAN
+TONTE FRIĐEŠ
+TONTIĆ ĐORĐE
+TONTIĆ DUŠAN
+TOPALOV DUŠAN
+TOPALOV GAVRA DIPL ING
+TOPALOV JELICA
+TOPALOV MELANIJA
+TOPALOV MELANIJA
+TOPALOV MIHAJLO
+TOPALOV MILENA
+TOPALOV MILOŠ
+TOPALOV MILORAD
+TOPALOV NADA
+TOPALOV PETAR
+TOPALOV SOFIJA
+TOPALOV SPASOJE
+TOPALOV STANISLAVA
+TOPALOV STEVAN
+TOPALOV STEVAN
+TOPALOV STEVAN
+TOPALOV SVETOZAR
+TOPALOV VASILIJE
+TOPALOV VERA
+TOPALOVIĆ BOŽO
+TOPALOVIĆ DUŠAN
+TOPALOVIĆ DUKATINKA
+TOPALOVIĆ EMILIJA
+TOPALOVIĆ JELENA
+TOPALOVIĆ JULIJE
+TOPALOVIĆ MIHAJLO
+TOPALOVIĆ MILAN
+TOPALOVIĆ MIRKO
+TOPALOVIĆ NEVENKA
+TOPALOVIĆ RADOJICA
+TOPALOVIĆ STANIJA
+TOPALOVIĆ VLAJKO
+TOPALSKI DANILO
+TOPALSKI DUŠANKA
+TOPALSKI-FIŠTEŠ NADA
+TOPALSKI MILENA
+TOPALSKI ZORAN
+TOPAR MARIJA
+TOPIĆ ČEDO
+TOPIĆ ĐURO
+TOPIĆ ANTO
+TOPIĆ CVIJA
+TOPIĆ DANICA
+TOPIĆ DANICA
+TOPIĆ DRAGAN
+TOPIĆ DRAGAN
+TOPIĆ ILIJA
+TOPIĆ JOVAN
+TOPIĆ JOVAN
+TOPIĆ LEON
+TOPIĆ LJUBO
+TOPIĆ MARIJA
+TOPIĆ MILADINKA
+TOPIĆ MILAN
+TOPIĆ MILIVOJE
+TOPIĆ MILIVOJ
+TOPIĆ MILORAD
+TOPIĆ MILORAD
+TOPIĆ MILORAD
+TOPIĆ MILORAD
+TOPIĆ MILOVAN
+TOPIĆ MIRKO
+TOPIĆ MITAR
+TOPIĆ NATALIJA
+TOPIĆ NEĐO
+TOPIĆ NIKO
+TOPIĆ PETAR
+TOPIĆ RATKO
+TOPIĆ SRETEN
+TOPIĆ STEVAN
+TOPIĆ TATJANA
+TOPIĆ VOJIN
+TOPIĆ VOJISLAV
+TOPKA ALEKSANDAR
+TOPKA ALEKSANDAR
+TOPLAK IMRE
+TOPLICA ABEDIN
+TOPLICA GANI
+TOPLICA NEĐMEDIN
+TOPLICA RAMADAN
+TOPLICA ZEĆIR
+TOPLICA ZENIJA
+TOPO ANTONIJA
+TOPO LJUBOMIR
+TOPO NENAD
+TOPOLČEVIĆ JOVAN
+TOPOLAC RADIVOJ DR LEKAR
+TOPOLIĆ ĐURA
+TOPOLIĆ DUŠAN
+TOPOLIĆ PEJA
+TOPOLJANIN VLADISLAVA
+TOPOLKOVIĆ VLADIMIR
+TOPOLOVAČKI RADOVAN
+TOPOLOVAČKI VUKOSAVA
+TOPREK SIMO
+TORĐANSKI ALEKSANDAR
+TORBAROV DUŠAN
+TORBICA ALEKSA
+TORBICA BORISLAV
+TORBICA DUŠAN
+TORBICA DUŠAN
+TORBICA ILIJA
+TORBICA JELKA
+TORBICA JULKA
+TORBICA MARIJA
+TORBICA MILOŠ
+TORBICA MIROSLAV
+TORBICA NADA
+TORBICA RADOSLAV
+TORBICA VERICA
+TORDA JANKO
+TORDAI ILONA
+TORDAI MARIJA
+TORDAI SVETLANA
+TORDAJ MIŠKO
+TORDAJI JANKO
+TORER ĐURA
+TORMA GEZA
+TORMA JOSIP
+TORMA JOVAN
+TORMA MARGITA
+TORMA STEVAN
+TORMA VILIM
+TORMAŠI ĐERĐ
+TORMAŠI JANOŠ
+TORMAŠI SMILJKA
+TORMAŠI STEVAN
+TORMOŠI JOŽEF
+TORNJANSKI ŽARKO
+TORNJANSKI BORISLAV
+TORNJANSKI BRANISLAV
+TORNJANSKI JELKA
+TORNJANSKI SVETISLAV
+TOROK ČABA
+TOROMAN BRANISLAV
+TOROMAN NEĐELJKO
+TOROMAN RADISAV
+TOROMAN RADMILA
+TOROMAN RADOJICA
+TOROVIĆ TRIPO
+TORTIĆ ANDRIJA
+TORTIĆ JOSIP
+TORTIĆ MIHAJLO
+TORTIĆ STEVAN
+TORTIĆ VERA
+TOSMAN JOSIP
+TOSUNOVIĆ JELISAVETA
+TOSUNOVIĆ MARIJA
+TOSUNOVIĆ VLADIMIR
+TOT ŠANDOR
+TOT ŠANDOR
+TOT ŠANDOR
+TOT AMALIJA
+TOT ANA
+TOT ANA
+TOT ANDRAŠ
+TOT ANDRIJA
+TOT ANDRIJA
+TOT ANICA
+TOT ANTAL DIPL ING
+TOT ANTONIJA
+TOT ARPAD
+TOT-ARVAI ANTAL
+TOT-ARVAI JANOŠ
+TOT-ARVAI JANOŠ
+TOT-BAGI IMRE
+TOT-BAGI JANOŠ
+TOT-BAGI MARIJA
+TOT BALINT
+TOT BERTA
+TOT-BOJNIK DEZIDER DIPL ING
+TOT BORA
+TOT DEŽE
+TOT DUŠANKA
+TOT FERENC
+TOT FERENC
+TOT FERENC
+TOT FERENC
+TOT FERENC
+TOT FRANJA
+TOT FRANJA
+TOT FRANJA
+TOT GABOR
+TOT GEZA
+TOT-HORTI ŠANDOR
+TOT IŠTVAN
+TOT IŠTVAN
+TOT IŠTVAN
+TOT IBOLJA DR
+TOT ILONA
+TOT ILONA
+TOT ILONA
+TOT IMRE
+TOT IRENA
+TOT IRENA
+TOT IVAN
+TOT JANOŠ
+TOT JANOŠ
+TOT JANOŠ
+TOT JELENA
+TOT JOŽEF
+TOT JOŽEF
+TOT JOŽEF
+TOT JOŽEF
+TOT JOŽEF
+TOT JOSIP
+TOT JOVANKA
+TOT JOVAN
+TOT JULIJANA
+TOT JULIJANA
+TOT JULIJA
+TOT-KAŠA BLAŽ
+TOT KAROLJ
+TOT KAROLJ
+TOT KATARINA
+TOT KATICA
+TOT KOVILJKA
+TOT LAJOŠ
+TOT LAJOŠ
+TOT LASLO DR
+TOT LASLO
+TOT LASLO
+TOT LASLO
+TOT LIVIJA
+TOT MAGDOLNA
+TOT MARGITA
+TOT MARGITA
+TOT MARIJA
+TOT MARIJA
+TOT MARIJA
+TOT MARIJA
+TOT MIHALJ
+TOT MIHALJ
+TOT MIKLOŠ
+TOT MILANKA
+TOT MILKA
+TOT MIROSLAV
+TOT NEBOJŠA
+TOT OLGA
+TOT PALIKA
+TOT PAL
+TOT PAL
+TOT PAL
+TOT PAVLE
+TOT ROZALIJA
+TOT ROZALIJA
+TOT SILVESTER
+TOT STEVAN
+TOT STEVAN
+TOT STEVAN
+TOT STJEPAN
+TOT TEREZA
+TOT TEREZA
+TOT TIBOR
+TOT TOMISLAV
+TOT VALERIJA
+TOT VLADIMIR
+TOT VLADISLAV
+TOT ZITA
+TOT ZLATA
+TOT ZOLTAN
+TOT ZORA
+TOTARVAI MARIJA
+TOTH SILVESTER
+TOTIĆ SVETOZAR
+TOTOVIĆ JOVANKA
+TOTOVIĆ MILAN
+TOVARLOŽA DUŠANKA
+TOVERNIĆ ZORA
+TOVILOVIĆ SVETLANA
+TOVILOVIĆ ZORAN
+TOVITOVIĆ NIKOLA
+TOVITOVIĆ SLOBODAN
+TOVJANIN BILJANA
+TOVLJANIĆ DUŠAN
+TOVLJANIĆ SAVA
+TRAŽI PAL
+TRABAK KATARINA
+TRAILOVIĆ NADA
+TRAILOVIĆ SELIMIR
+TRAILOVIĆ VOJISLAV
+TRAJČEVIĆ LEPOSAVA
+TRAJČEVSKA ANITA
+TRAJANOVSKI LJUBICA
+TRAJANOVSKI LJUBO
+TRAJANOVSKI MOJSO
+TRAJANOVSKI TRAJAN
+TRAJBAR ADOLF
+TRAJBAR ZVONIMIR
+TRAJER LADISLAV DR
+TRAJER ROBERT
+TRAJKOVIĆ BOŽIDAR
+TRAJKOVIĆ BRANIMIR
+TRAJKOVIĆ BRANISLAV
+TRAJKOVIĆ BRANKO
+TRAJKOVIĆ DIMITRIJE
+TRAJKOVIĆ GLIGORIJE
+TRAJKOVIĆ MILAN
+TRAJKOVIĆ MILORAD
+TRAJKOVIĆ NADA
+TRAJKOVIĆ NAJDAN
+TRAJKOVIĆ RUŽICA
+TRAJKOVIĆ SLOBODAN
+TRAJKOVIĆ STOJADIN
+TRAJKOVSKI DIMITRIJE
+TRAJKOVSKI METODIJE
+TRAJKOVSKI PANTA
+TRAKILOVIĆ VLADA
+TRALJIĆ IVAN
+TRANDAFIR VASILIJE
+TRANKOLOVIĆ CVETA
+TRANKULOV JOŽEF
+TRAUM ARANKA
+TRAVANJ JOVANKA
+TRAVAR ĐURO
+TRAVAR LJUBIŠA
+TRAVAR MILOSAV
+TRAVICA MILAN
+TRAVICA MILE
+TRAVICA NIKOLA
+TRAVICA RADE
+TRBANOS ŽIVA
+TRBIĆ BRANISLAV
+TRBIĆ LJUBIŠA
+TRBIĆ MILADIN
+TRBIĆ MIROSLAV
+TRBIĆ TAMARA
+TRBIĆ VLADIMIR
+TRBOJEVIĆ ĐORĐE
+TRBOJEVIĆ ĐURAĐ
+TRBOJEVIĆ BOGOLJUB
+TRBOJEVIĆ BRANKO
+TRBOJEVIĆ DRAGICA
+TRBOJEVIĆ GAVRA
+TRBOJEVIĆ IDA
+TRBOJEVIĆ ILIJA
+TRBOJEVIĆ JOVAN
+TRBOJEVIĆ LAZA
+TRBOJEVIĆ MARICA
+TRBOJEVIĆ MILE
+TRBOJEVIĆ MILICA
+TRBOJEVIĆ NIKOLA
+TRBOJEVIĆ NIKOLA
+TRBOJEVIĆ STEVAN
+TRBOLJEVAC DRAGOSLAV
+TRBOVIĆ MIHAJLO DIPL PRAVNIK
+TRBOVIĆ MILAN
+TRBOVIĆ MILAN
+TRBOVIĆ VESNA
+TREŠNJIĆ ALEKSANDRA
+TREŠNJIĆ JOVAN
+TREŠNJIĆ STEVAN
+TREĆAKOV STOJAN
+TREBATICKI ALEKSANDAR
+TREBATICKI ALEKSANDAR
+TREBATICKI JUSTINA
+TREBATICKI MARIJA
+TREBIČNIK-VUČIĆ OLGA
+TREBOVAC MILE
+TRENČEVSKI NADEŽDA
+TREPANIĆ MAHMUT
+TRESIGLAVIĆ KATICA
+TRESIGLAVIĆ MILAN
+TRESIGLAVIĆ SLAVKO
+TRESIGLAVIĆ STEVAN
+TRESIGLAVIĆ VASA
+TRESIGLAVIĆ VASA
+TRESKIĆ ZDRAVKO
+TRGALA ĐURA
+TRGO NEVENKA
+TRIČKOVIĆ ANKA
+TRIČKOVIĆ JULKA
+TRIČKOVIĆ MIODRAG
+TRIČKOVIĆ SINIŠA
+TRIČKOVIĆ VERICA
+TRIŠIĆ HRANISLAV
+TRIŠIĆ-ILIĆ SVETLANA
+TRIŠIĆ MLADEN
+TRIFKOVIĆ JOVICA
+TRIFKOVIĆ KUZMAN
+TRIFKOVIĆ LJUBICA
+TRIFKOVIĆ MARKO
+TRIFKOVIĆ MILADIN
+TRIFKOVIĆ MILAN
+TRIFKOVIĆ MILAN
+TRIFKOVIĆ MILISAV
+TRIFKOVIĆ MIROSLAVA
+TRIFKOVIĆ NEDELJKO
+TRIFKOVIĆ SRĐA DR
+TRIFKOVIĆ VLADIMIR
+TRIFKOVIĆ VOJISLAV
+TRIFU DORU
+TRIFUNČEVIĆ MARIJA
+TRIFUNČEVIĆ MILOŠ
+TRIFUNJAGIĆ SPASOJE
+TRIFUNJAGIĆ SVETISLAV
+TRIFUNOV DANILO
+TRIFUNOV JOSIF
+TRIFUNOV MIODRAG
+TRIFUNOV RADMILA
+TRIFUNOVIĆ ŽIKICA
+TRIFUNOVIĆ ŽIVKA
+TRIFUNOVIĆ BOŠKO
+TRIFUNOVIĆ DANKA
+TRIFUNOVIĆ DRAGAN
+TRIFUNOVIĆ DRAGOMIR
+TRIFUNOVIĆ ILINKA
+TRIFUNOVIĆ JELENA
+TRIFUNOVIĆ JOVAN
+TRIFUNOVIĆ JOVAN
+TRIFUNOVIĆ MAKSIM
+TRIFUNOVIĆ MILISAV
+TRIFUNOVIĆ MILORAD DIPL ING
+TRIFUNOVIĆ MIRJANA
+TRIFUNOVIĆ MIRKO
+TRIFUNOVIĆ NADA
+TRIFUNOVIĆ NADEŽDA
+TRIFUNOVIĆ NEGOVANKA
+TRIFUNOVIĆ OLGA
+TRIFUNOVIĆ PAVLE
+TRIFUNOVIĆ PETAR
+TRIFUNOVIĆ PETAR
+TRIFUNOVIĆ RADIVOJ
+TRIFUNOVIĆ RADMILA
+TRIFUNOVIĆ RADOMIR DIPL PRAVNIK
+TRIFUNOVIĆ RUŽICA
+TRIFUNOVIĆ SLAVICA
+TRIFUNOVIĆ SLOBODAN DR
+TRIFUNOVIĆ SLOBODAN
+TRIFUNOVIĆ SOFIJA
+TRIFUNOVIĆ STANA
+TRIFUNOVIĆ SVETISLAV DR
+TRIFUNOVIĆ SVETOMIR
+TRIFUNOVIĆ TRIFUN
+TRIFUNOVIĆ VASA
+TRIFUNOVIĆ VERA
+TRIFUNOVIĆ VLADAN
+TRIFUNOVIĆ VLADIMIR
+TRIFUNOVIĆ VLADIMIR
+TRIFUNOVIĆ VOJISLAV
+TRIFUNOVIĆ VUKOSAVA
+TRIFUNOVIĆ VUKOSAV
+TRIKIĆ DRAGICA
+TRIKIĆ MIRKO
+TRIKIĆ ROSA
+TRIKIĆ SVETOZAR
+TRIKIĆ VLADIMIR
+TRIPKOVIĆ MILAN
+TRIPKOVIĆ SLOBODAN
+TRIPOLSKI MARIJA
+TRIPUNOVIĆ ĐORĐIJA
+TRIPUNOVIĆ BLAŽO
+TRIPUNOVIĆ DRAGOMIR
+TRIS JAKOB
+TRIVANOVIĆ DRAGAN
+TRIVANOVIĆ RADE
+TRIVANOVIĆ STEVAN
+TRIVANOVIĆ VERA
+TRIVIĆ BORIS
+TRIVIĆ BRANISLAV
+TRIVIĆ DOBRIVOJE
+TRIVIĆ DUŠAN
+TRIVIĆ JOVAN
+TRIVIĆ SVETLANA
+TRIVUNČIĆ MIRA
+TRIVUNDŽA MILOŠ
+TRIVUNDŽA NENAD
+TRIVUNIĆ BOGOLJUB
+TRIVUNIĆ MIROSLAV
+TRIVUNIĆ RANKO
+TRIVUNOVIĆ MLADENKO
+TRIVUNOVIĆ SIMO
+TRIVUNOVIĆ TIHOMIR
+TRIZLIĆ SLAVKO
+TRKLJA GOJKO
+TRKLJA MIRKO
+TRKULJA ŽIVORAD
+TRKULJA ANA
+TRKULJA BOŠKO
+TRKULJA BORISLAV
+TRKULJA BRANKO
+TRKULJA DRAGAN
+TRKULJA DRAGAN
+TRKULJA ESTER
+TRKULJA GOJKO
+TRKULJA GROZDA
+TRKULJA JOVAN
+TRKULJA JULKA
+TRKULJA MARINKO
+TRKULJA MILAN
+TRKULJA MILORAD
+TRKULJA MIODRAG
+TRKULJA MIODRAG
+TRKULJA NEDELJKO
+TRKULJA NIKOLA
+TRKULJA NOVAK
+TRKULJA NOVAK
+TRKULJA PETAR
+TRKULJA RANKO
+TRKULJA SLAVKO
+TRKULJA SOFIJA
+TRKULJA SONJA
+TRKULJA STEVAN
+TRKULJA STOJANKA
+TRKULJA VLADISLAVA
+TRMČIĆ RADOSLAV
+TRNČIĆ LAZO
+TRNAVAC MILAN
+TRNIĆ RADMILA
+TRNIĆ VERA
+TRNINIĆ ŽIVAN
+TRNINIĆ ŽIVOJIN
+TRNINIĆ ĐORĐE
+TRNINIĆ ĐURA
+TRNINIĆ BOGDAN
+TRNINIĆ BOJA
+TRNINIĆ BORIVOJ
+TRNINIĆ BOSILJKA
+TRNINIĆ DOBRIVOJ
+TRNINIĆ DRAGAN
+TRNINIĆ DRAGAN
+TRNINIĆ DUŠAN
+TRNINIĆ MARA
+TRNINIĆ MARIJA
+TRNINIĆ MIRKO
+TRNINIĆ MIRKO
+TRNINIĆ MIROSLAV
+TRNINIĆ MOMČILO
+TRNINIĆ OLIVERA
+TRNINIĆ RADIVOJ
+TRNINIĆ RADOJKA
+TRNINIĆ RADOVAN
+TRNINIĆ STEVA
+TRNINIĆ VLADIMIR
+TRNJAKOV DUŠAN
+TRNOVAC NADA
+TROČA KORNEL
+TROŠELJAC MATO
+TROŠKIN SAVETA
+TROŠKIN TAMARA
+TROJANOV EDVARD
+TROJANOV MARIJA
+TROJANOV ROMAN
+TROJKOVIĆ ILONA
+TROMLER LASLO
+TRPČEVIĆ MIROSLAV
+TRPČEVSKI TOMČE
+TRPINAC JELENA
+TRPKA PAVLE
+TRPKA PAVLE
+TRPOVSKI VASILJ
+TRSTENJAK FRANJA
+TRTIĆ SLAVKO
+TRUŠNOVEC IVAN
+TRUBARAC GABRIJELA
+TRUDA ALIJA
+TRUDIĆ IVAN
+TRUJIĆ DUŠICA
+TRUJIĆ MILOŠ VETERINAR
+TRUMBIĆ VEDRAN
+TRUMIĆ SOFIJA
+TRUMIĆ VERA
+TUČEV ŽIVANKA
+TUŠEV ŽIVKO
+TUŠJAK JAN
+TUŠJAK JURAJ
+TUŠJAK MILOŠ
+TUŠNEK OTILIJA
+TUŠNJAK ANA
+TUBIĆ ŽIVAN
+TUBIĆ ALEKSANDAR
+TUBIĆ BRANISLAV
+TUBIĆ DRAGUTIN
+TUBIĆ DUŠAN
+TUBIĆ DUŠAN
+TUBIĆ JUGOSLAV
+TUBIĆ LEPOSAVA
+TUBIĆ MILAN
+TUBIĆ MILENKO
+TUBIĆ MILIVOJ
+TUBIĆ MILOŠ
+TUBIĆ MILOJKO
+TUBIĆ MILORAD
+TUBIĆ NIKOLA
+TUBIĆ NOVAK
+TUBIĆ OLGA
+TUBIĆ PETAR
+TUBIĆ RADA
+TUBIĆ RADMILA
+TUBIĆ RADOVAN
+TUBIĆ SAVA
+TUBIĆ STANKO
+TUBIĆ SVETOZAR DR
+TUBIĆ VERA
+TUBIĆ VLADIMIR
+TUBIĆ ZORAN
+TUBIN KATARINA
+TUBIN STOJAN DIPL ING
+TUBIN STOJA
+TUBIN TOMISLAV
+TUBIN ZORKA
+TUCAKOV ĐORĐE
+TUCAKOV ĐORĐE
+TUCAKOV BOŠKO
+TUCAKOV BOGDANKA
+TUCAKOV BORA
+TUCAKOV BRANKO
+TUCAKOV DARINKA
+TUCAKOV DRAGAN
+TUCAKOV KAMENKO
+TUCAKOV LATINKA
+TUCAKOV MARIJA
+TUCAKOV MARKO
+TUCAKOV MILAN
+TUCAKOV MILAN
+TUCAKOV MILICA
+TUCAKOV NOVAK
+TUCAKOV RADIVOJ
+TUCAKOV RADOJKA
+TUCAKOV RADOSLAV
+TUCAKOV RAJKO
+TUCAKOV SINIŠA
+TUCAKOV TANASIJE
+TUCAKOV VERA
+TUCAKOV VLADIMIR
+TUCAKOV ZORANA
+TUCAKOV ZORA
+TUCAKOVIĆ ĐORĐE
+TUCAKOVIĆ DANICA
+TUCAKOVIĆ DESANKA
+TUCAKOVIĆ JOVAN
+TUCAKOVIĆ MILOŠ
+TUCAKOVIĆ RADOSLAV
+TUCIĆ ĐORĐE
+TUCIĆ BRANISLAV
+TUCIĆ LAZAR
+TUCIĆ MILENKO
+TUCIĆ MIROSLAVA
+TUCIĆ MIROSLAV
+TUCIĆ VUJICA
+TUCOVIĆ ZORA
+TUFEGDŽIĆ MILEN
+TUKAČ MIHAJLO
+TUKANIĆ ENDRE
+TUKANIĆ IRENA
+TUKAR FADIL
+TUKAR MIRJANA
+TUKIĆ PETAR
+TUKIĆ STOJANKA
+TULAĆ JOVICA
+TULENČIĆ KATICA
+TULENČIĆ RADOSLAVA
+TULENČIĆ RADOSLAV
+TULIĆ BORKO
+TULIĆ NEVENKO
+TULUBEC ĐORĐE
+TULUBEC MILKA
+TULUBEC VASILIJE
+TUMARIĆ BRANISLAV
+TUMARIĆ CVETIN
+TUMARIĆ MILORAD
+TUMBAS AGNEZA
+TUMBAS IVAN
+TUMBAS LJUDEVIT
+TUMIN DUŠANKA
+TUNGUZ JELISAVETA
+TUNIĆ RADOJICA
+TUNIĆ RAJKO
+TUNIĆ SPASOJE
+TUNIĆ STEVAN
+TUNTEV MARIJA
+TUPANČEVSKI NIKOLA
+TUPEC ZVONIMIR
+TUPIĆ NEVENKA
+TUR MIHAJLO
+TUR SUZANA
+TURČAN JAN
+TURČAN JAN
+TURČAN JURAJ
+TURČAN VLADIMIR SUDIJA
+TURČIĆ MIROSLAVA
+TURŠIĆ JELENA
+TURŠIJAN VASA
+TURAI BELA
+TURAI MIHAJLO
+TURAI TEREZA
+TURAJLIĆ MILE
+TURAJLIJA BOŽICA
+TURAJLIJA MIROSLAV
+TURAN ĐURA
+TURAN LJUBICA
+TURANSKI ĐORĐE
+TURANSKI FERENC
+TURANSKI GEZA
+TURANSKI JANOŠ
+TURANSKI JOSIP
+TURANSKI LASLO
+TURANSKI MARICA
+TURANSKI MARIJA
+TURANSKI MATIJA
+TURANSKI PETAR
+TURANSKI STEVAN
+TURI ARPAD
+TURI TIBOR
+TURIĆ LUKA
+TURIĆ MARINKO
+TURIKA JOSIM
+TURINSKI DUŠAN
+TURINSKI EDITA
+TURINSKI MILETA
+TURINSKI MIOMIR
+TURK MIRKO
+TURK NADA
+TURKALJ KATA
+TURKOVIĆ HAKIJA
+TURKOVIĆ MIRKO
+TURKOVIĆ MITAR
+TURKOVIĆ PETAR
+TURKOVIĆ RAFIT
+TURKOVIĆ VLADIMIR
+TURKOVIĆ ZINKA
+TURKULOV ŽAKLINA
+TURKULOV DUŠAN
+TURKULOV JOVAN
+TURLAKOV CVETAN
+TURNAJ SLAVOLJUB DIPL ING
+TURO MIHALJ
+TUROMAN MILORAD
+TUROPOLJAC MIĆO
+TURUDIĆ MILAN
+TURUDIĆ MIODRAG
+TURUDIJA MILORAD
+TURUKALO MIODRAG
+TURUKALO RADMILA
+TURUKALO ZORA
+TURZO JELISAVETA
+TURZO KARLO
+TUTIĆ ILIJA
+TUTNILOVIĆ NADA
+TUTNJEVIĆ BOŽENKA
+TUTNJEVIĆ BOGDAN
+TUTNJEVIĆ JOVAN
+TUTNJEVIĆ MIROSLAV
+TUTNJEVIĆ RADOJKA
+TUTOROV DESANČIĆ
+TUTOROV JULKICA
+TUTOROV STANA
+TUTOROV STEVAN
+TUTULUGDŽIJA MARA
+TUVEDŽIĆ DRAGANA
+TUVIĆ SLOBODAN
+TVRTKOVIĆ MARIN DR LEKAR
+UŠĆEBRKA LAZAR
+UŠĆEBRKA MILENKO
+UŠĆEBRKA ZLATO
+UŠĆUMLIĆ MILENKO
+UŠĆUMLIĆ NEŠKO
+UŠĆUMLIĆ VUKICA
+UŠAN JANEZ
+UŠJAK JANKO
+UŠJAK JARMILA
+UŠJAK VLASTA
+UŠLJEBRKA MILORAD
+UŠTIPAK JELA
+UĆUKALO SIMO
+UŽAR DESANKA
+UŽAR KATICA
+UŽIČANIN ĐORĐE
+UBAVČIĆ SAVA
+UBAVIĆ DARINKA
+UBAVIĆ LJUBICA
+UBAVIĆ MOMČILO DR
+UBIPARIP ČEDO
+UBIPARIP ŽIVKO
+UBIPARIP GOJKO
+UBIPARIP ILE
+UBIPARIP JANJA
+UBIPARIP JOVO
+UBIPARIP MARINKO
+UBIPARIP MARKO
+UBIPARIP MILAN
+UBIPARIP MIRKO
+UBIPARIP MOMIR
+UBIPARIP PAVLE
+UBIPARIP SLAVKO
+UBIPARIP TODE
+UBIPARIP VOJKO
+UBIPARIP ZDRAVKO
+UBIPARIP ZORAN
+UBORKA ŠANDOR
+UBORKA MARTON
+UBORKA STEVKA
+UBORNJI ŠANDOR
+UBORNJI ANDRAŠ
+UBOVIĆ EVA
+UBOVIĆ JEFTA
+UBOVIĆ JOVICA
+UBOVIĆ MARKO
+UBOVIĆ MILOŠ
+UBOVIĆ PETRA
+UBOVIĆ RAJKO
+UCAJ VLADIMIR
+UDICKI PAJA
+UDICKI SLAVICA
+UDICKI SREDOJE
+UDOVIČIĆ BOBAN
+UDOVIČIĆ BRANKO
+UDOVIČIĆ IVAN
+UDOVIČIĆ MOMIR
+UDOVIČIĆ RADOSLAV
+UDOVIČIĆ STEVAN
+UDOVIČKI BRANKO LEKAR
+UDOVIČKI JULKA
+UDOVIČKI OLGICA DR
+UDOVIČKI SLOBODAN
+UDOVIČKI SVETOZAR
+UDRIJA PETAR
+UDVARDI KARLO
+UGARČINA BORISLAV
+UGARČINA DRAGAN
+UGARČINA ILIJA
+UGARAK ĐORĐE
+UGARAK BOŽO
+UGARAK DRAGAN
+UGARAK DUŠAN
+UGARAK PETAR
+UGARKOVIĆ DARINKA
+UGARKOVIĆ JELA
+UGARKOVIĆ KATICA
+UGARKOVIĆ STEVAN
+UGLJEŠIĆ BOŠKO
+UGLJEŠIĆ HILDA
+UGRČIĆ VUKICA
+UGREŠIĆ PETAR
+UGREM MARIJA
+UGREM RADOVAN
+UGREN MILORAD
+UGREN PETAR
+UGRENIĆ LASLO
+UGRENIĆ MIHALJ
+UGRENOVIĆ VUČIĆ
+UGRENOVIĆ VUJADIN
+UGRICA DRAGAN
+UGRICA SREĆKO
+UGRIN ILIJA
+UGRIN MILOVAN
+UGRINČIĆ DANILKA
+UGRINČIĆ DOBRILA
+UGRINČIĆ MILIVOJ
+UGRINČIĆ MIRJANA DR
+UGRINČIĆ STEVAN
+UGRINČIĆ VLADA DIPL ING
+UGRINOV ĐURICA
+UGRINOV DOBRILA
+UGRINOV MILICA
+UGRINOV NADA
+UGRNOV VLADIMIR
+UGRNOV ZORICA
+UHER VERA
+UHLARIK ELIZABETA
+UHLARIK LADISLAV
+UHLARIK STEVAN
+UHOR PETAR
+UJ MARTON
+UJČIĆ BLAŽ
+UJČIĆ TOMA
+UJDILOVIĆ MILORAD
+UJFALUŠ VELIMIR
+UJFALUŠI ĐURA
+UJFALUŠI JANKO
+UJFALUŠI JULIJAN
+UJFALUŠI LJUBOMIR
+UJFALUŠI MIROSLAV
+UJFALUŠI NIKOLA
+UJFALUŠI SILVESTER
+UJFALUŠI VLADIMIR
+UJFELJAN MILAN
+UJHAZI BORIŠKA
+UJHAZI IVAN
+UJHAZI JELISAVETA
+UJHAZI LADISLAV
+UJHAZI MIRKO
+UJHELJI JOVANKA
+UJHELJI MIHALJ
+UJLAKOŠ KARLO
+UJVARI GABOR
+UJVARI KATALIN
+UKAČEK VERKA
+UKROPINA ČEDA
+UKROPINA DESANKA
+UKROPINA JELENA
+UKROPINA JOVANKA
+UKROPINA JOVAN
+UKROPINA MILOVAN
+UKROPINA NEBOJŠA
+UKROPINA PANTO
+UKROPINA TOMISLAV
+ULEMEK ĐURO
+ULIĆ ŽELJKA
+ULIĆ ĐORĐE
+ULIĆ ALEKSANDAR
+ULIĆ DOBROSLAV
+ULIĆ MILAN
+ULJAREVIĆ PERO
+UMEK MARGITA
+UMEK MIKLOŠ
+UMIČEVIĆ PERA
+UMIĆEVIĆ ŽELJKO
+UMIĆEVIĆ GORDANA
+UMIĆEVIĆ MIRKO
+UMIĆEVIĆ MLADEN
+UNČANIN BOJAN
+UNČANIN DUŠAN
+UNGAR TIHOMIR
+UNGUROVIĆ JELENA
+UNKOVIĆ ANĐELKO
+UNKOVIĆ MLADEN
+URAČ ŠANDOR
+URAČ ALEKSANDAR
+URAČ DANICA
+URAČ GIZELA
+URAČ IŠTVAN
+URAČ ROZALIJA
+URBAN ĐERĐ
+URBAN ĐORĐE
+URBAN ANA
+URBAN HORVAT
+URBAN IŠTVAN
+URBAN JANOŠ
+URBAN JASNA
+URBAN MIHALJ
+URBAN MIHALJ
+URBAN PAVEL
+URBAN STANISLAV
+URBAN STEVAN
+URBAN VIKTORIJA
+URBAN VLADISLAV
+URBANČIK PIROŠKA
+URBANČIK SILVIA
+URBANOVIĆ STEVAN
+URDAREVIĆ STANIMIR
+UREKE ĐORĐE
+URI ČABA
+URI ALEKSANDAR
+URI EVA
+URI GABOR
+URI KARLO
+URI LASLO
+URI PAJA
+URI STEVAN
+URI STEVAN
+URKIN LJUBICA
+URLIH MARIJA
+UROŠEV ŽIVAN
+UROŠEV BOJKA
+UROŠEV ILIJA
+UROŠEV JERICA
+UROŠEV MILENKO
+UROŠEV MIRJANA
+UROŠEV PAJA
+UROŠEV SOFIJA
+UROŠEV STOJAN
+UROŠEV VELINKA
+UROŠEVIĆ ŽIVAN
+UROŠEVIĆ ALEKSANDAR
+UROŠEVIĆ BOGDAN DIPL ING
+UROŠEVIĆ BORIVOJ
+UROŠEVIĆ BRANKA
+UROŠEVIĆ BRANKO
+UROŠEVIĆ DRAGIŠA
+UROŠEVIĆ DUŠAN
+UROŠEVIĆ IVAN
+UROŠEVIĆ LEONA
+UROŠEVIĆ LJILJANA
+UROŠEVIĆ LJUBICA
+UROŠEVIĆ MARKA
+UROŠEVIĆ MILOŠ
+UROŠEVIĆ MIRJANA
+UROŠEVIĆ NADA
+UROŠEVIĆ RUŽICA
+UROŠEVIĆ SRĐA
+UROŠEVIĆ STANISLAVA
+UROŠEVIĆ VIDOJKO
+UROŠEVIĆ VLADIMIR
+UROŠEVIĆ ZORICA
+URSIĆ VLADIMIR
+URSULESKU FLORIN
+URSULESKU JULIJAN
+USKOKOVIĆ BRANISLAV
+USKOKOVIĆ MILENKO
+USKOKOVIĆ MILOŠ
+USTIĆ ĐURA
+USTIĆ NIKOLA
+USTIĆ SIMA
+USTIĆ VOJKO
+UTAŠI ČABA
+UTJEŠANOVIĆ SIMO
+UTJEŠINOVIĆ DESANKA
+UTJEŠINOVIĆ LJILJANA
+UTJEŠINOVIĆ MILAN
+UTJEŠINOVIĆ VERA
+UTORNIK IVAN
+UTORNIK JOVAN
+UTORNIK KATICA
+UTORNIK LJUBICA
+UTORNIK MILOŠ
+UTORNIK-RADULOVIĆ MARIJA
+UTORNIK STEVAN
+UTORNIK SVETOZAR
+UTRŽAN BRANKO
+UTVIĆ KOSTA
+UTVIĆ PAVLE
+UTVIĆ VASA
+UTVIĆ-VUKAŠINOVIĆ DARA
+UVALIĆ ANGELINA
+UVALIĆ DUŠANKA
+UVALIĆ DUŠAN
+UVALIĆ DUŠKO
+UVALIĆ LAZAR
+UVALIĆ MELANIJA
+UVALIĆ RADOSLAV
+UVALIĆ STANISLAV
+UVALIĆ VASA
+UVERIĆ ĐURA
+UVERIĆ BRANKA
+UVERIĆ MILAN
+UVERIĆ MILOŠ
+UVERIĆ MILORAD
+UVERIĆ MIRJANA
+UVERIĆ NIKOLA
+UZAIR ALIJA
+UZEIRI MUAREM
+UZELAC ĐORĐE
+UZELAC ĐORĐE
+UZELAC ĐORĐE
+UZELAC ĐORĐE
+UZELAC ĐURICA
+UZELAC ĐURO
+UZELAC ALEKSANDRA
+UZELAC ALEKSA
+UZELAC BISERKA
+UZELAC BOŠKO
+UZELAC BOGDAN
+UZELAC BOGDAN
+UZELAC BRANISLAV
+UZELAC BRANISLAV
+UZELAC BRANISLAV
+UZELAC BRANKO
+UZELAC CVETA
+UZELAC DARINKA
+UZELAC DESANKA
+UZELAC DRAGAN
+UZELAC DRAGAN
+UZELAC DRAGAN
+UZELAC DUŠANKA
+UZELAC DUŠAN
+UZELAC DUŠAN
+UZELAC DUŠAN
+UZELAC DUŠAN
+UZELAC EVA
+UZELAC GALINA
+UZELAC GORDANA
+UZELAC ILIJA
+UZELAC IVAN
+UZELAC JELENA
+UZELAC KOSTA
+UZELAC LAZAR
+UZELAC MARIJA
+UZELAC MARIJA
+UZELAC MARIJA
+UZELAC MARIJA
+UZELAC MIHAJLO
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILAN
+UZELAC MILE
+UZELAC MILICA
+UZELAC MILOŠ
+UZELAC MOMČILO
+UZELAC NIKOLA
+UZELAC NIKOLA
+UZELAC OLIVERA
+UZELAC RADMILA
+UZELAC RADOJKA
+UZELAC RENATA
+UZELAC SLAVKO
+UZELAC SLOBODAN
+UZELAC SLOBODAN
+UZELAC SOFIJA
+UZELAC SRĐAN
+UZELAC SRĐAN
+UZELAC STEVAN
+UZELAC STEVAN
+UZELAC STEVAN
+UZELAC STEVAN
+UZELAC STOJAN
+UZELAC VERA
+UZELAC VUJO
+UZELAC ZLATKO
+UZELAC ZLATKO
+UZELAC ZLATKO
+UZELAC ZORAN
+UZELAC ZORAN
+UZELAC ZORAN
+UZELAC ZORAN
+UZELAC ZORAN
+UZELAC ZORAN
+UZOROCKI IŠTVAN
+UZUNOVIĆ BRANISLAV
+UZUNOVIĆ LADISLAV
+UZUNOVIĆ MILORAD
+UZUNOVIĆ MITO
+UZUNOVIĆ NASUF
+UZUNOVIĆ RAJKO
+UZUROV OBRENIJA
+UZUROV RADMILA
+VAČIĆ ALEKSANDAR
+VAČIĆ ZORAN
+VAČIK JOŽEF
+VAŠ ATILA
+VAŠ JOSIP
+VAŠ PAVLE
+VAŠ VERA
+VAŠČIĆ BOŽIDAR
+VAŠAŠ MIKLOŠ
+VAŠAŠ OLGA
+VAŠADI FERENC
+VAŠADI JULIJANA
+VAŠADI VALERIJA
+VAŠALIĆ ANKA
+VAŠALIĆ MILOŠ
+VAŠALIĆ OBRAD
+VAŠALIĆ UROŠ
+VAŠTAG ĐORĐE
+VAŠTAG ANDRAŠ
+VAŠTAG IŠTVAN
+VAŠTAG IŠTVAN
+VAŠTAG JASMINKA
+VAŠTAG MARGITA
+VAŠTAG MARIJA
+VAŠTAG MIHALJ
+VAŠTAG OLGA
+VAŠTAG RUŽA
+VAŠTAG STOJAN
+VAŽIĆ DANICA
+VAŽIĆ JOVAN
+VAŽIĆ JULIJA
+VAŽIĆ MIRA
+VAŽIĆ SLAVICA
+VAŽIĆ VERICA
+VAŽIĆ VESELIN
+VAŽIĆ VLADIMIR
+VAŽONJI ANTAL
+VAŽONJI ROZALIJA
+VACI ŠIMON
+VACIĆ BLAGOJE
+VACIĆ VIDEN
+VACLAVIK MARIJA
+VADASKI CECILIJA
+VADASKI LJUBOMIR
+VADOC FRANJA
+VADOC IVICA
+VADOC JOSIP
+VAGIĆ ĐURO
+VAGNER ĐURA
+VAGNER ANDRIJA
+VAGNER JOSIP
+VAGNER KARLO
+VAGNER LASLO
+VAGNER MARIJA
+VAGNER OTILIJA
+VAGO IŠTVAN
+VAGO STEVAN
+VAGURIĆ ZDRAVKO
+VAJAGIĆ ANĐELKA
+VAJAGIĆ BOŠKO
+VAJAGIĆ GORDANA
+VAJAGIĆ MILAN
+VAJAGIĆ NIKOLA DR
+VAJAGIĆ NIKOLA
+VAJAGIĆ SAVO
+VAJAGIĆ SIMA
+VAJAGIĆ STOJAN
+VAJAGIĆ ZORICA
+VAJDA ŠANDOR
+VAJDA ŠANDOR
+VAJDA IRMA
+VAJDA LAJOŠ
+VAJDA LAJOŠ
+VAJDA TIBOR
+VAJDA TOMISLAV
+VAJDIĆ ŽIVKO
+VAJDIĆ IVAN
+VAJDIĆ JOVAN DR
+VAJDIĆ JOVAN DR
+VAJDIĆ MILICA
+VAJDIĆ MILICA
+VAJDIĆ NADA
+VAJDIĆ PETAR
+VAJDIĆ TIHOMIR
+VAJDL JOVAN
+VAJDL MIROSLAV
+VAJDLE JOLAN
+VAJLER ANDRIJA
+VAJNŠTAJN PETAR
+VAJNBERGER VLADIMIR
+VAJNBERGER ZLATKO
+VAJNBERGER ZVONIMIR
+VAJNGERTNER RADOJKA DIPL ECC
+VAJNHEPL MARIA
+VAJNHEPL OTMAR DIPL ING
+VAJOVIĆ VASILIJE
+VAJS ŠANDOR
+VAJS BRANKO
+VAJS KARLO
+VAJS KARLO
+VAJS MAGDA
+VAJS VERICA
+VAJSENBERG JOSIP
+VAJUKIĆ PANTELIJA
+VAKANJAC MILICA
+VAL ĐORĐE
+VAL ANDRIJA
+VAL EVA
+VAL ZOLTAN
+VALAH JANKO
+VALAN OSTOJA
+VALAN ZORAN
+VALDMA ARBO
+VALEK EMILIJA
+VALEK FRANJA
+VALENČIK PAVEL
+VALENČIK STEVAN
+VALENĆIK ANDRIJA
+VALENĆIK JAN
+VALENĆIK PAVLE
+VALENĆIK VLADIMIR
+VALENT ŽUŽANA
+VALENT JANKO
+VALENT JANKO
+VALENT LASLO
+VALENTA JASMINKA
+VALENTENJI JOSIP
+VALENTENJI JULIJANA
+VALENTIĆ IVAN
+VALENTIĆ VIKTOR
+VALENTIĆ VIKTOR
+VALENTIK NIKOLA
+VALENTIN IMRE
+VALENTIN JUCIKA
+VALENTIN STEVAN
+VALENTIROV STEVAN
+VALENTIROVIĆ LJUBOMIR
+VALENTOVIĆ JOSIP
+VALENTOVIĆ KARLO
+VALENTOVIĆ KARLO
+VALENTOVIĆ KARLO
+VALENTOVIĆ TIBOR
+VALIĆ GORAN
+VALIĆ SLAVKO
+VALIDŽIJA NIKOLA DIPL ING
+VALIHORA JOZEF
+VALIHORA KATICA
+VALKAI JOŽEF
+VALKO GAVRA
+VALO GORDANA
+VALO JOSIP
+VALO JOSIP
+VALO MIRKO
+VALO STEVAN
+VALOK ĐORĐE
+VALOK ĐURA
+VALOK RATOMIR
+VALTER DRAGINJA
+VALTER LJILJANA
+VALTER NORBERT
+VALTNER PETAR
+VALUŠEK JOVAN
+VALUŠEK KATICA
+VALUŠEK PAVLE
+VALUH BRANISLAV
+VALUH JANKO
+VALUH JANKO
+VALUH KARLO
+VALUH MIHAJLO
+VAMBAH VIKTORIJA
+VAMOŠER MIRJANA
+VAMOŠER PAVLE
+VAMPOVAC JOSIP
+VANĐEL MILAN
+VANDERER PAL
+VANDORI MARIJA
+VANIĆ DRAGUTIN
+VANIĆ KATICA
+VANIĆ LJUBICA
+VANJUR FRANJA
+VANJUR FRANJA
+VANJUR IŠTVAN DIPL ING
+VANJUR JOŽEF
+VANJUR JOSIP
+VANJUR KARLO
+VANJUR KARLO
+VANJUR MARIJA
+VANKO JAROSLAV
+VANOVIĆ SNEŽANA
+VAPA JOVANKA
+VAPA MILAN DR
+VAPA VERA
+VAPA ZORAN
+VAPENSKI IVAN
+VAPENSKI MARIJA
+VARŠANJI IRENA
+VARAĐANIN MILAN
+VARADI TIBOR DR PROF
+VARAGIĆ BOGDAN
+VARAGIĆ LJUBICA
+VARAGIĆ MARIJA
+VARAGIĆ MELANIJA
+VARAGIĆ MILICA
+VARAGIĆ VIĆENTIJE
+VARAJIĆ GORAN
+VARAJIĆ GORAN
+VARAVA EMILIJAN
+VARBAI LADISLAV
+VARCAR DESANKA
+VARDIĆ GAVRILO
+VARENIKA ĐOKA
+VARENIKA BRANISLAV
+VARENIKA RADOJKA
+VAREVAC DRAGAN
+VARGA ŠANDOR
+VARGA ŠANDOR
+VARGA ŠANDOR
+VARGA ŠANDOR
+VARGA ŠANDOR
+VARGA-ŠOMOĐI JANOŠ
+VARGA ŽARKO
+VARGA ĐERĐ
+VARGA ĐORĐE
+VARGA ĐORĐE
+VARGA ĐULA
+VARGA ĐURA
+VARGA ĐURA
+VARGA ALEKSANDAR
+VARGA ANA
+VARGA ANDRAŠ
+VARGA ANDRIJA
+VARGA ANDRIJA
+VARGA ANTON
+VARGA ARANKA
+VARGA BELA
+VARGA BELA
+VARGA BILJANA
+VARGA-BURAI ERŽEBET
+VARGA DRAGICA
+VARGA DUŠANKA
+VARGA ERŽIKA
+VARGA FERENC
+VARGA FERENC
+VARGA FERENC
+VARGA FRANJA
+VARGA FRANJA
+VARGA FRANJO
+VARGA FRANJO
+VARGA GABOR
+VARGA GIZELA
+VARGA HELENA
+VARGA IŠTVAN
+VARGA IŠTVAN
+VARGA IŠTVAN
+VARGA IŠTVAN
+VARGA ILEŠ
+VARGA IMRE
+VARGA-IVAN ANGELINA
+VARGA JAKIM
+VARGA JAN DR
+VARGA JANOŠ
+VARGA JANOŠ
+VARGA JAROSLAV
+VARGA JELENA
+VARGA JELISAVETA
+VARGA JOŽEF
+VARGA JOŽEF
+VARGA JOŽEF
+VARGA JOSIPA
+VARGA JOSIP
+VARGA JOSIP
+VARGA JOVAN
+VARGA JULIJA
+VARGA KARLO
+VARGA KATARINA
+VARGA KATA
+VARGA-KLIŠANIĆ LJUBICA
+VARGA KORNELIJA
+VARGA KORNEL
+VARGA KOSANA
+VARGA LADISLAV
+VARGA LAJOŠ
+VARGA LAJOŠ
+VARGA LASLO
+VARGA LASLO
+VARGA LASLO
+VARGA LASLO
+VARGA LJUPKA
+VARGA MARGITA
+VARGA MARIJA
+VARGA MARIJA
+VARGA MARIJA
+VARGA MIHAJLO
+VARGA MIHAJLO
+VARGA MIHALJ
+VARGA MIRKO
+VARGA MIRON
+VARGA MIROSLAV
+VARGA NIKOLA
+VARGA OLGA
+VARGA PAL
+VARGA PAL
+VARGA PETAR
+VARGA PETAR
+VARGA PETER DIPL ING
+VARGA RASTISLAV
+VARGA ROZALIJA
+VARGA ROZALIJA
+VARGA SLAVICA
+VARGA STEVAN
+VARGA STEVAN
+VARGA STJEPAN
+VARGA TIBOR
+VARGA TIBOR
+VARGA VERA
+VARGA VERA
+VARGA VERONIKA
+VARGA VLADISLAV
+VARGA VLASTA
+VARGA ZOLTAN
+VARGA ZOLTAN
+VARGEC IVAN
+VARHOLIK ADAM
+VARIĆAK BOŽO
+VARIĆAK DARINKA
+VARJU LASLO
+VARJU MARIJA
+VARJU TEREZA
+VARKAŠ IVAN
+VARMAZ ISMET
+VARMEĐA ĐORĐE
+VARMUŽA MAĆAŠ
+VARNICA IVAN
+VARNICA PETAR
+VARNJU ANUŠKA
+VARNJU GIZELA
+VARNJU ILONA
+VARNOS MARTON
+VARNUS JOŽEF
+VAROŠČIĆ SPASENIJA
+VAROŠI GABRIELA
+VAROŠI JOVAN
+VAROŠI SILARD
+VASELEK ŠTEFAN
+VASELEK STEVAN
+VASELEK STEVAN
+VASELEK VASILJ
+VASIĆ ŽELJKO
+VASIĆ ŽIVKA
+VASIĆ ŽIVKO
+VASIĆ ŽIVKO
+VASIĆ ŽIVKO
+VASIĆ ĐOKA
+VASIĆ ĐORĐE
+VASIĆ ĐORĐE
+VASIĆ ALEKSANDAR
+VASIĆ ANICA
+VASIĆ ANKICA
+VASIĆ BOJANA
+VASIĆ BORISLAV
+VASIĆ BORIVOJ
+VASIĆ BRANKO
+VASIĆ CVETKO
+VASIĆ DARINKA
+VASIĆ DOBRIVOJ
+VASIĆ DRAGANA
+VASIĆ DRAGAN
+VASIĆ DRAGICA
+VASIĆ DRAGICA
+VASIĆ DRAGICA
+VASIĆ DRAGOLJUB
+VASIĆ DRAGOMIR
+VASIĆ DRAGOMIR
+VASIĆ DRAGOSLAV
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠAN
+VASIĆ DUŠICA
+VASIĆ DUŠKO NOVINAR
+VASIĆ DUBRAVKA
+VASIĆ ELENA
+VASIĆ GORAN
+VASIĆ GORDANA
+VASIĆ GORDANA
+VASIĆ GORDICA
+VASIĆ JAKOV
+VASIĆ JANA
+VASIĆ JANKO
+VASIĆ JELICA
+VASIĆ JOVO
+VASIĆ KATICA
+VASIĆ KOSTA
+VASIĆ KRISTINA
+VASIĆ LAZAR
+VASIĆ LJILJANA DR
+VASIĆ LJILJANA
+VASIĆ LJUBOMIR
+VASIĆ LUKA
+VASIĆ MAKSIM
+VASIĆ MARIJANA
+VASIĆ MARKO
+VASIĆ MIĆO
+VASIĆ MIHAILO
+VASIĆ MIHAJLO
+VASIĆ MIKA
+VASIĆ MILAN
+VASIĆ MILAN
+VASIĆ MILAN
+VASIĆ MILAN
+VASIĆ MILAN
+VASIĆ MILENKO DR PRIMARIUS
+VASIĆ MILENKO
+VASIĆ MILENKO
+VASIĆ MILICA
+VASIĆ MILINKO
+VASIĆ MILOŠ
+VASIĆ MILOŠ
+VASIĆ MILOVAN
+VASIĆ MILOVAN
+VASIĆ MILUTIN
+VASIĆ MIODRAG
+VASIĆ MIRJANA
+VASIĆ MIRJANA
+VASIĆ MIRJANA
+VASIĆ MIROSLAVA
+VASIĆ NADA
+VASIĆ NADA
+VASIĆ NEDELJKO
+VASIĆ NEDELJKO
+VASIĆ NEDELJKO
+VASIĆ NIKOLA
+VASIĆ NOVAK
+VASIĆ NOVAK
+VASIĆ NOVAK
+VASIĆ OLGA
+VASIĆ OLGICA
+VASIĆ OSTOJA
+VASIĆ OSTOJA
+VASIĆ PAJA
+VASIĆ PERO
+VASIĆ PETAR
+VASIĆ PETAR
+VASIĆ-POPOVIĆ LJILJANA
+VASIĆ PRVOSLAV DIPL ING
+VASIĆ RADICA
+VASIĆ RADIVOJ
+VASIĆ RADOJE
+VASIĆ RADOSLAV
+VASIĆ RADOVAN
+VASIĆ RATKO
+VASIĆ RAVICA
+VASIĆ SAVA
+VASIĆ SAVA
+VASIĆ SAVA
+VASIĆ SEKULA
+VASIĆ SLAVICA
+VASIĆ SLAVKO
+VASIĆ SLAVKO
+VASIĆ SLOBODAN
+VASIĆ SLOBODAN
+VASIĆ SLOBODAN
+VASIĆ SNEŽANA
+VASIĆ SOFIJA
+VASIĆ SRETKO
+VASIĆ STANIŠA
+VASIĆ STEVAN
+VASIĆ STEVAN
+VASIĆ STEVAN
+VASIĆ STEVAN
+VASIĆ SVETLANA
+VASIĆ SVETOZAR
+VASIĆ TIHOMIR
+VASIĆ TINKA
+VASIĆ TOŠA
+VASIĆ TOMISLAV
+VASIĆ VELIMIR
+VASIĆ VELIMIR
+VASIĆ VESELIN
+VASIĆ VIDA
+VASIĆ VLADIMIR DR LEKAR
+VASIĆ VLADIMIR
+VASIĆ VOJISLAV
+VASIĆ ZDRAVKO
+VASIĆ ZORAN
+VASIĆ ZORICA
+VASILČIN SLOBODAN
+VASILESKI BRANKO
+VASILIŠIN ANTON
+VASILIŠIN MILAN
+VASILIĆ BRANISLAV
+VASILIĆ DANICA
+VASILIĆ DRAGA
+VASILIĆ MILAN
+VASILIĆ MILENKO
+VASILIĆ MIRA
+VASILIĆ NIKOLA
+VASILIĆ RAJKO
+VASILIĆ STEVAN
+VASILIĆ TODE
+VASILIĆ VESNA
+VASILIĆ VOJIN DIPL ING
+VASILJČIN ŽIVKO
+VASILJEV ANA
+VASILJEV DEJAN
+VASILJEV DRAGOSLAV
+VASILJEV JELICA
+VASILJEV JOVAN
+VASILJEV JOVAN
+VASILJEV LJUBICA
+VASILJEV MARA
+VASILJEV MILORAD
+VASILJEV MIROLJUB
+VASILJEV MITA
+VASILJEV RADOVAN
+VASILJEV SPASOJE
+VASILJEV STANOJE
+VASILJEV TAMARA
+VASILJEV ZDRAVKO
+VASILJEVIĆ ŠARLOTA
+VASILJEVIĆ ŽIVOTA
+VASILJEVIĆ ĐORĐE
+VASILJEVIĆ ĐURA
+VASILJEVIĆ-AĆANSKI IVANA
+VASILJEVIĆ ANĐELKA
+VASILJEVIĆ ANDREJA
+VASILJEVIĆ CVETKO
+VASILJEVIĆ DANICA
+VASILJEVIĆ DRAGIŠA
+VASILJEVIĆ DUŠICA
+VASILJEVIĆ GLIGOR
+VASILJEVIĆ GOJAN
+VASILJEVIĆ GOJKO
+VASILJEVIĆ GROZDA
+VASILJEVIĆ JAVORKA
+VASILJEVIĆ JULKA
+VASILJEVIĆ LEPA
+VASILJEVIĆ LJUBINKO
+VASILJEVIĆ MARKO
+VASILJEVIĆ MARKO
+VASILJEVIĆ MILENA
+VASILJEVIĆ MILENKO
+VASILJEVIĆ MILISAV
+VASILJEVIĆ MILJKO
+VASILJEVIĆ MILOŠ
+VASILJEVIĆ MILORAD
+VASILJEVIĆ MIODRAG DIPL ING
+VASILJEVIĆ MIRA
+VASILJEVIĆ MIROSLAV
+VASILJEVIĆ MOMČILO DR
+VASILJEVIĆ NADA
+VASILJEVIĆ NEDELJKO
+VASILJEVIĆ NEVENKA
+VASILJEVIĆ NIKOLA
+VASILJEVIĆ NIKOLA
+VASILJEVIĆ OLGA
+VASILJEVIĆ OSTOJA
+VASILJEVIĆ PETAR
+VASILJEVIĆ PETAR
+VASILJEVIĆ RADA
+VASILJEVIĆ RADENKA
+VASILJEVIĆ RADOSAV
+VASILJEVIĆ RADOSLAV
+VASILJEVIĆ RADO
+VASILJEVIĆ RAJA NOVINAR
+VASILJEVIĆ RAJKO
+VASILJEVIĆ SIMO
+VASILJEVIĆ SLAVKO
+VASILJEVIĆ STANIMIR
+VASILJEVIĆ TIHOMIR
+VASILJEVIĆ TOŠA
+VASILJEVIĆ UMKA
+VASILJEVIĆ VERICA
+VASILJEVIĆ VUKICA
+VASILJEVIĆ ZDRAVKO
+VASILJEVIĆ ZLATKO
+VASILJEVIĆ ZLATOJE
+VASILJEVIĆ ZORAN
+VASILJEVSKI VASILIJE
+VASIN ĐORĐE
+VASIN ĐORĐE
+VASIN ANĐELKA
+VASIN ARANKA
+VASIN BORIVOJE
+VASIN BRANISLAV
+VASIN DRAGANA
+VASIN DRAGOMIR
+VASIN JASMINA
+VASIN JELENA
+VASIN JEVROSIMA
+VASIN JULKA
+VASIN LAZAR
+VASIN LJUBINKA
+VASIN MARICA
+VASIN MILENKO
+VASIN MILENKO
+VASIN NEDELJKO
+VASIN OLGICA
+VASIN PAVLE
+VASIN PETAR
+VASIN RADIVOJ
+VASIN STEVAN
+VASIN SVETISLAV
+VASIN SVETOZAR
+VASIN TODOR
+VASIN ZORA
+VASKO VERA
+VASKOVIĆ MILORAD
+VASKRSIĆ SAVETA
+VASOVIĆ ALEKSANDAR
+VASOVIĆ MILENA
+VASOVIĆ MILOVAN
+VASOVIĆ PREDRAG
+VASOVIĆ SLAVIMIRKA
+VATAJI ĐULA
+VATIĆ MARJAN
+VATIĆ MARKO
+VATIĆ MIRAŠ
+VATIĆ NIKOLA
+VATOVIĆ HRANISLAV
+VATOVIĆ JELENA
+VAURIČAK KATALIN
+VAVAN MILORAD
+VAVAN MILORAD
+VAVAN MLADENKO
+VAVAN PAVLE
+VAVAN SLAVKO
+VAVIĆ JOVAN
+VAVRA PREDRAG
+VAVRIN JOSIP
+VAVRIN PETAR
+VDOVIAK BERNARD
+VEČEI JOŽEF
+VEČEI JOSIP
+VEČEI LJILJANA
+VEČEJI JOVAN
+VEČERA MIHAJLO
+VEČERI JULIUS
+VEČI IŠTVAN
+VEČIĆ SVETLANA
+VEŠLIGAJ STEVAN
+VEŠLIGAJ VERA
+VEŠOVIĆ IVANKA
+VEŠOVIĆ LEOPOLD
+VEŠOVIĆ OLGA
+VEŠOVIĆ SMILJANA
+VEŠOVIĆ VLASTIMIR
+VEŠOVIĆ VUKSAN
+VEŠOVIĆ ZORKA MR
+VEĆKALOV ĐORĐE
+VEĆKALOV ALEKSANDAR
+VEĆKALOV SOFIJA DR LEKAR
+VEBEL VALERIJA
+VEBER BOŽANA
+VEBER GABRIELA
+VEBER GABRIELA
+VEBER MILICA
+VEBER OLGA
+VEBER TEREZIJA
+VEG ŠANDOR
+VEG ENIKE
+VEGŠE PAVLE
+VEGEL LASLO
+VEGVARI DEŽE
+VEGVARI JULIANA
+VEGVARI MIKLOŠ
+VEHTER KAROLJ
+VEHTER KAROLJ
+VEHTER ZOLTAN
+VEIN JEKA
+VEIN ZORKA
+VEINOVIĆ NIKOLA
+VEJIN ĐORĐE
+VEJIN BRANISLAVA
+VEJIN BRANISLAV
+VEJIN DUŠANKA
+VEJIN KRISTINA
+VEJNOVIĆ DANE
+VEJNOVIĆ DRAGAN
+VEJNOVIĆ JELENA
+VEJNOVIĆ MIRKO
+VEJNOVIĆ MLADEN DIPL ING
+VEJNOVIĆ NIKOLA
+VEJNOVIĆ OBRAD
+VEJNOVIĆ RAJKO
+VEJNOVIĆ SIMEON
+VEJNOVIĆ TIHOMIR
+VEJNOVIĆ TIHOMIR
+VEJNOVIĆ VAJKO
+VEJNOVIĆ VOJISLAV
+VEJZOVSKI VEJZ
+VEKAŠ ŽUŽANA
+VEKAŠ ATILA
+VEKAŠ EVA
+VEKAŠ EVA
+VEKAŠ JANOŠ
+VEKAŠ JUDITA
+VEKAŠ LASLO
+VEKIĆ ANA
+VEKIĆ DRAGAN
+VEKIĆ ELENA
+VEKIĆ JULIJANA
+VEKIĆ NIKOLA
+VEKIĆ PETAR
+VEKIĆ RADIVOJ
+VEKIĆ RADMILA
+VEKIĆ TEREZA
+VEKIĆ TEREZA
+VEKIĆ ZVONKO
+VEKONJ ŠANDOR
+VEKONJ LADISLAV
+VEKOVIĆ MILORAD
+VELČEK IŠTVAN
+VELČEK JOSIP
+VELČEK VLADIMIR
+VELĐI ANA
+VELĐI JOŽEF
+VELĐI LADISLAV
+VELĐI MARIJA
+VELAGIĆ SANJA
+VELAJA JOVO
+VELBABOVIĆ DESANKA
+VELBABOVIĆ MILORAD
+VELBABOVIĆ RADINKA
+VELEČKOVIĆ BRANKO
+VELEČKOVIĆ EVA
+VELEMIR ANICA
+VELEMIR DRAGOLJUB
+VELEMIR ILIJA
+VELEMIR MILOMIR
+VELEMIR RISTO
+VELEMIR RISTO
+VELEMIR SAVKA
+VELEMIR SLAVKO
+VELEMIR SVETOMIR
+VELEMIR TODOR
+VELEMIR VOJA
+VELEMIR VOJKO
+VELEMIROV SIMA
+VELENDEČIĆ BOŽO
+VELENDEČIĆ MILAN
+VELEZ IŠTVAN
+VELEZ IŠTVAN
+VELHES MIROSLAV
+VELHNER JOSIP DIPL ING
+VELIČKOV ŽIVAN
+VELIČKOV DANICA
+VELIČKOV GROZDA
+VELIČKOV KATICA
+VELIČKOV LJILJA
+VELIČKOV NATAŠA
+VELIČKOV RADIVOJ
+VELIČKOVIĆ ŽIVORAD DIPL PRAVNIK
+VELIČKOVIĆ ŽIVOTA
+VELIČKOVIĆ ĐORĐE
+VELIČKOVIĆ BILJANA
+VELIČKOVIĆ DUŠAN
+VELIČKOVIĆ EMILIJA
+VELIČKOVIĆ IVANKA
+VELIČKOVIĆ JOVAN
+VELIČKOVIĆ JOVAN
+VELIČKOVIĆ KATARINA
+VELIČKOVIĆ KSENIJA
+VELIČKOVIĆ MARIJA
+VELIČKOVIĆ MILANKA
+VELIČKOVIĆ MILAN
+VELIČKOVIĆ MILICA
+VELIČKOVIĆ MILORAD
+VELIČKOVIĆ NENAD
+VELIČKOVIĆ NIKOLA
+VELIČKOVIĆ PERSIDA
+VELIČKOVIĆ PREDRAG
+VELIČKOVIĆ SLAVIŠA
+VELIČKOVIĆ SLAVOLJUB
+VELIČKOVIĆ SONJA
+VELIČKOVIĆ STEVAN
+VELIČKOVIĆ ZORAN
+VELIČKOVSKI ALEKSANDAR
+VELIŠEK GABRIELA
+VELIŠEK GEZA
+VELIŠEK KARLO
+VELIĆ ILIJA
+VELIĆ ZORAN
+VELICKI ĐORĐE
+VELICKI ALEKSANDAR
+VELICKI ALEKSANDAR
+VELICKI JELICA
+VELICKI JOVICA
+VELICKI LJUBOMIR
+VELICKI MILAN
+VELICKI MILAN
+VELICKI MILIVOJ
+VELICKI MIODRAG
+VELICKI NOVAK
+VELICKI SVETOZAR
+VELICKI UROŠ
+VELICKI ZORAN
+VELICKI ZORA
+VELIJA LJILJANA
+VELIJA REĐEP
+VELIKIĆ ALEKSANDAR DIPL ING
+VELIKIĆ ANA
+VELIKIĆ DANICA
+VELIKIĆ LJUBOMIR
+VELIKIĆ SIMA
+VELIKIĆ ZORAN
+VELIMIROV JELENA
+VELIMIROV MILOŠ
+VELIMIROV VLADIMIR
+VELIMIROVIĆ ANGELA
+VELIMIROVIĆ BOŠKO
+VELIMIROVIĆ DIMITRIJE
+VELIMIROVIĆ DRAŠKO
+VELIMIROVIĆ JELISAVETA
+VELIMIROVIĆ JOVAN
+VELIMIROVIĆ LAZAR
+VELIMIROVIĆ NOVAK
+VELIMIROVIĆ SIMEON
+VELIMIROVIĆ SLAVICA
+VELIMIROVIĆ SLAVOLJUB
+VELIMIROVIĆ SMILJANA
+VELIMIROVIĆ SNEŽANA
+VELIMIROVIĆ VOJIN
+VELIOSKI SADEM
+VELIOV DŽEMAJLO
+VELISAVLJEV GORDANA DR
+VELISAVLJEV MILORAD DR
+VELISAVLJEV SREDOJE
+VELISAVLJEVIĆ MILISAV
+VELJA ŽIVA DIP OEC
+VELJA PETAR
+VELJANOVIĆ BRANISLAV
+VELJANOVIĆ MOMČILO
+VELJANOVIĆ TOMISLAVA
+VELJANOVSKI IVAN
+VELJIĆ MILOVAN
+VELJKO ANĐELKO
+VELJKOV DARINKA
+VELJKOV GEORGIJE
+VELJKOV IDA
+VELJKOV MIROSLAV DIPL PRAVNIK
+VELJKOV PAVLE
+VELJKOV-PFAJFER SOFIJA
+VELJKOV STEVAN
+VELJKOV VLADIMIR
+VELJKOVIĆ ŽARKO
+VELJKOVIĆ ALEKSANDAR DIPL ING
+VELJKOVIĆ ALEKSANDAR
+VELJKOVIĆ ANĐELKA
+VELJKOVIĆ BOŽIDAR
+VELJKOVIĆ BOJAN
+VELJKOVIĆ DOBROSAV
+VELJKOVIĆ DRAGAN
+VELJKOVIĆ MILOMIR
+VELJKOVIĆ MIODRAG
+VELJKOVIĆ MIODRAG
+VELJKOVIĆ MIRJANA
+VELJKOVIĆ MIRKO
+VELJKOVIĆ NADA
+VELJKOVIĆ PETAR
+VELJKOVIĆ RADA
+VELJKOVIĆ RADISAV
+VELJKOVIĆ RADOSAV
+VELJKOVIĆ RADOSLAV
+VELJKOVIĆ RUŽICA
+VELJKOVIĆ SRETEN
+VELJKOVIĆ SVETA
+VELJKOVIĆ SVETISLAV
+VELJKOVIĆ TIHOMIR
+VELJKOVIĆ VIDOJE
+VELJKOVIĆ VOJISLAV
+VELJKOVIĆ VUKAŠIN
+VELJOVIĆ DUŠAN
+VELJOVIĆ LEPOSAVA
+VELJOVIĆ MILAN
+VELJOVIĆ MITAR
+VELJOVIĆ MOMČILO
+VELJOVIĆ PAVLE
+VELJOVIĆ RUŽA
+VELJOVIĆ SIMO
+VELJOVIĆ SLAVICA
+VELKOVSKI IRENA
+VELKOVSKI TEOFIL
+VEMENAC OBRAD
+VEMIĆ BORA
+VEMIĆ DRAGINJA
+VEMIĆ ILIJA
+VEMIĆ LAZAR
+VEMIĆ MILAN
+VEMIĆ RADIVOJE DR
+VEMIĆ RADIVOJE
+VENČELOVSKI LJUBICA
+VENČELOVSKI VLADA
+VENČELOVSKI VLADIMIR
+VENČELOVSKI VLASTA
+VENCEL GEZA
+VENCEL GEZA
+VENCL JOSIP
+VENCL ZVONIMIR
+VENDLENER ANDRIJANA
+VENDLENER JELENA
+VENDLENER ZORAN
+VENE GORDANA
+VENGRIN AGNEŠ
+VENGRING FERENC
+VENGRING STEVAN
+VERAC MIODRAG
+VERBA JOŽEF
+VERBANEC IŠTVAN
+VERBANEC IŠTVAN
+VERBASI FRANJA
+VERBASI JOVANKA
+VEREŠ ĐULA
+VEREŠ ANDRIJA
+VEREŠ DRAGUTIN
+VEREŠ HAJNALKA
+VEREŠ IVAN
+VEREŠ JELISAVETA
+VEREŠ JOŽEF
+VEREŠ JOSIP
+VEREŠ JOSIP
+VEREŠ LADISLAV
+VEREŠ MARIJA
+VEREŠBARANJI IŠTVAN
+VEREŠBARANJI MARIJA
+VEREŠEVIĆ TIHOMIR
+VEREŽAN ĐURICA
+VEREŽAN ZORKA
+VEREB ŽUŽANA
+VEREBEŠ BORISLAVA
+VEREBEŠ ERVIN
+VERECKEI DUŠICA
+VERECKEI GEZA
+VERECKEI MARGITA
+VERGAŠ BRANKO
+VERIĆ RATKO
+VERKIĆ TODOR
+VERKIĆ VITOMIR
+VERKIĆ VOJISLAV
+VERLIĆ MILAN
+VERMEŠ LILI
+VERMEZOVIĆ ĐORĐE
+VERNAČKI ANITA
+VERNAČKI BRANISLAV
+VERNAČKI GAVRA
+VERNAČKI GAVRILO
+VERNAČKI MIROSLAV
+VERNER ANA
+VERNER MIHAJLO
+VERNER STEVAN
+VERNOT ANA
+VERNOT DUNJA
+VERNOT JOSIP
+VERNOT VJEKOSLAVA
+VERNOT ZDENKO
+VERNOT ZDENKO
+VERZOTI DRAGICA
+VERZOTI JULIJANA
+VERZOTI PETAR
+VERZOTI STANKA
+VESELIĆ BORIVOJ
+VESELIĆ DRAGOLJUB
+VESELIĆ GOSPAVA
+VESELIĆ RADOJKA
+VESELIĆ SLAVKO
+VESELICA MANE
+VESELICA MILAN
+VESELICA SVETOZAR
+VESELIN PETAR
+VESELINOV ĐORĐE
+VESELINOV BORISLAVA
+VESELINOV BRANISLAV
+VESELINOV LIBUŠA
+VESELINOV MILICA
+VESELINOV RISTA
+VESELINOV STEVAN DR
+VESELINOV STEVAN
+VESELINOV SVETOZAR
+VESELINOV VERA
+VESELINOVIĆ ĐORĐE
+VESELINOVIĆ ĐORĐE
+VESELINOVIĆ ĐORĐE
+VESELINOVIĆ ĐUJA
+VESELINOVIĆ ĐURA
+VESELINOVIĆ ĐURO
+VESELINOVIĆ ALEKSANDAR
+VESELINOVIĆ ALEKSANDAR
+VESELINOVIĆ ALEKSANDAR
+VESELINOVIĆ ALEKSANDAR
+VESELINOVIĆ BORA
+VESELINOVIĆ BRANE
+VESELINOVIĆ BRANISLAV
+VESELINOVIĆ BRANISLAV
+VESELINOVIĆ DARA
+VESELINOVIĆ DARKO
+VESELINOVIĆ DRAGAN
+VESELINOVIĆ DRAGOMIR
+VESELINOVIĆ DRAGORAD
+VESELINOVIĆ DUŠANKA
+VESELINOVIĆ GORDANA
+VESELINOVIĆ ILIJA
+VESELINOVIĆ JELISAVKA
+VESELINOVIĆ JORDAN
+VESELINOVIĆ JOSIPA
+VESELINOVIĆ JOVANKA
+VESELINOVIĆ JULIJANA
+VESELINOVIĆ KATICA
+VESELINOVIĆ LANA
+VESELINOVIĆ LENKICA
+VESELINOVIĆ LJUBOMIR
+VESELINOVIĆ MARIJA
+VESELINOVIĆ MIKA
+VESELINOVIĆ MILANKA
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILAN
+VESELINOVIĆ MILENA
+VESELINOVIĆ MILE
+VESELINOVIĆ MILISAV
+VESELINOVIĆ MILORAD
+VESELINOVIĆ MIRKO
+VESELINOVIĆ MITA
+VESELINOVIĆ MLADEN
+VESELINOVIĆ NIKOLA
+VESELINOVIĆ NIKOLA
+VESELINOVIĆ OLGA
+VESELINOVIĆ PAVLE
+VESELINOVIĆ PERSIDA
+VESELINOVIĆ PETAR
+VESELINOVIĆ-POPOVIĆ BRANKA
+VESELINOVIĆ PREDRAG
+VESELINOVIĆ RADMIL
+VESELINOVIĆ RANKO
+VESELINOVIĆ RANKO
+VESELINOVIĆ RUŽICA
+VESELINOVIĆ RUŽICA
+VESELINOVIĆ RUŽICA
+VESELINOVIĆ SAVA
+VESELINOVIĆ SEVER
+VESELINOVIĆ SLOBODAN
+VESELINOVIĆ SPASOJE
+VESELINOVIĆ STEVAN
+VESELINOVIĆ STEVAN
+VESELINOVIĆ SVETISLAV
+VESELINOVIĆ TODOR
+VESELINOVIĆ TODOR
+VESELINOVIĆ UROŠ
+VESELINOVIĆ VASILJKA
+VESELINOVIĆ VELIMIR
+VESELINOVIĆ VELIZAR
+VESELINOVIĆ VELJKO
+VESELINOVIĆ VERA
+VESELINOVIĆ VERA
+VESELINOVIĆ VESELIN
+VESELINOVIĆ VESELIN
+VESELINOVIĆ VINKA
+VESELINOVIĆ VLADISLAV
+VESELINOVIĆ VLASTIMIR
+VESELINOVIĆ VOJISLAV DR LEKAR
+VESELINOVIĆ VOJISLAV
+VESELINOVIĆ VUKICA
+VESELINOVIĆ ZORAN
+VESELINOVIĆ ZORAN
+VESELINOVIĆ ZVEZDAN
+VESIĆ DOBROSAV
+VESIĆ DRAGOSLAV
+VESIĆ KATICA
+VESIĆ KRSTA
+VESIĆ MILAN
+VESIĆ MILAN
+VESIĆ MILICA
+VESIĆ MIODRAG
+VESIĆ MITAR
+VESIĆ MLADEN
+VESIĆ RUŽICA
+VESIĆ-VARGA DRAGICA
+VESIĆ VESELINKA
+VESIN BRANKO
+VESIN MILAN
+VESIN NADA
+VESIN PETAR
+VESKOV ALEKSANDAR
+VESKOV ALEKSANDAR
+VESKOV IVAN
+VESKOV JELENA
+VESKOV MILOŠ
+VESKOVIĆ ANKICA
+VESKOVIĆ DRAŠKO
+VESKOVIĆ KATARINA
+VESKOVIĆ MARICA
+VESKOVIĆ MIROSLAV
+VESKOVIĆ MOMČILO DIPL ING
+VESKOVIĆ PETAR
+VESKOVIĆ SLAVKO
+VESKOVIĆ STANOJE
+VESKOVIĆ ZORA
+VESLAVSKI TINKA
+VESNIĆ MILENA
+VESNIĆ-VASILJEVIĆ ANĐELIJA
+VESOVIĆ ACO
+VESOVIĆ ANDRIJA
+VETRAB FRANJA
+VETRAB KATALIN
+VETRAB MIHALJ
+VETRO PETAR
+VEVERIČEK MARIJA
+VEZETI MIHAEL
+VEZETI PETAR
+VEZILIĆ ĐORĐE
+VEZILIĆ CRNOGORKA
+VEZILIĆ DUŠANKA
+VEZILIĆ DUŠICA
+VEZILIĆ JELICA
+VEZILIĆ RADOSLAV
+VEZMAR BRANKO
+VEZMAR ILIJA
+VEZMAR MARGARITA
+VEZMAR MILAN
+VEZMAR MILOŠ
+VEZMAR MILORAD
+VEZMAR MOMČILO
+VEZMAR NIKOLA
+VEZMAR PETAR
+VEZULIĆ ĐORĐE
+VIČEK ŠANDOR
+VIČEK KAROLJ
+VIČEVIĆ ZVONIMIR
+VIČIK IGNJAT
+VIŠEKRUNA BORIVOJ
+VIŠEKRUNA DANKO
+VIŠEKRUNA DUŠAN
+VIŠEKRUNA DUŠKO
+VIŠEKRUNA JOVAN
+VIŠEKRUNA MILAN
+VIŠEKRUNA SLAVKO
+VIŠEKRUNA VOJIN
+VIŠIĆ MILE
+VIŠKOVIĆ MILICA
+VIŠKOVIĆ MILOŠ
+VIŠKOVIĆ PLANINKA
+VIŠKOVIĆ PREDRAG
+VIŠKOVIĆ VLADIMIR DR
+VIŠNIĆ DANICA
+VIŠNIĆ DUŠAN
+VIŠNIĆ ZORKA
+VIŠNJEVČANIN JOVAN
+VIŠNJEVČANIN LEPA
+VIŠNJEVAC BORO
+VIŠNJEVAC OLIVERA
+VIŠNJEVSKI KATICA
+VIŠNJIČAN DUŠAN
+VIŠNJIČAN GAVRILO
+VIŠNJIČAN JOVANKA
+VIŠNJIČAN MILICA
+VIŠNJIČANIN JOVANKA
+VIŠNJIČAR ŽARKO
+VIŠNJIČAR ĐORĐE
+VIŠNJIČAR ĐORĐE
+VIŠNJIČAR DRAGOSLAV
+VIŠNJIČAR MARIJA
+VIŠNJIČAR MIKA
+VIŠNJIČAR NEDELJKO
+VIŠNJIČKI GORDANA
+VIŠNJIČKI MILOŠ
+VIŠNJIČKI MIROSLAV
+VIŠNJIČKI SRETEN
+VIŠNJIĆ ČEDOMILA
+VIŠNJIĆ BRANKO
+VIŠNJIĆ BRANSILAVA
+VIŠNJIĆ DALIBOR
+VIŠNJIĆ DUŠAN
+VIŠNJIĆ ILIJA
+VIŠNJIĆ JOSIP
+VIŠNJIĆ MARIJA
+VIŠNJIĆ MILAN
+VIŠNJIĆ MILICA
+VIŠNJIĆ OLIVERA
+VIŠNJIĆ OLIVER
+VIŠNJIĆ SPASOJE
+VIŠNJIĆ TIHOMIR
+VIŠNJIĆ VASILIJE
+VIŠNJIĆ VERA
+VIŠNJIĆ VESNA
+VIŠNJOVSKI ĐURA
+VIŠNJOVSKI ARANKA
+VIŠNJOVSKI MARIJA
+VIŠNJOVSKI MARJAN
+VIŠOŠEVIĆ RUŽENA
+VIŠONTAI JOŽEF
+VIŠONTAI JOŽEF
+VIĆEVIĆ RADIŠA
+VIŽAI ŠANDOR
+VIATORIS JANOŠ
+VIATORIS JULIŠKA
+VIATORIS LJUBICA
+VIBOK JOŽEF
+VICEI JOŽEF
+VICEI NIKOLA
+VICIAN KLARA
+VICKO ARPAD
+VICKO FRANJA
+VICKO JOSIP
+VICKOŠ JOŽEF
+VICKOVIĆ BRANKO
+VICKOVIĆ BRANKO
+VICKOVIĆ DRAGICA
+VICKOVIĆ TOMISLAV
+VICKOVIĆ VESNA
+VICO BOGDAN
+VICO RADIVOJE
+VICO RADOMIR
+VID BRANISLAVA
+VIDA JELISAVETA
+VIDA JOŽEF
+VIDA JULIJA
+VIDA SLOBODANKA
+VIDA VILI
+VIDAČ JANJA LOKAL
+VIDAČ LASLO
+VIDAČ SLAVICA
+VIDAJIĆ ŽIVKO
+VIDAJIĆ JASMINA
+VIDAJIĆ JOSIP
+VIDAJIĆ LUČIJANO
+VIDAJIĆ MARIJA
+VIDAJIĆ VELJA
+VIDAJIĆ VLADA
+VIDAKOV ANKICA
+VIDAKOV JOVAN
+VIDAKOV ZORICA
+VIDAKOVIĆ ALEKSANDAR
+VIDAKOVIĆ ALEKSANDRA DR
+VIDAKOVIĆ ANGELINA
+VIDAKOVIĆ BRANIMIR
+VIDAKOVIĆ BRANKO
+VIDAKOVIĆ DUŠANKA
+VIDAKOVIĆ DUŠAN
+VIDAKOVIĆ EMIL
+VIDAKOVIĆ IVAN
+VIDAKOVIĆ IVAN
+VIDAKOVIĆ IVAN
+VIDAKOVIĆ JAGODA
+VIDAKOVIĆ JOSIP
+VIDAKOVIĆ JOSIP
+VIDAKOVIĆ KOSA
+VIDAKOVIĆ MIHAJLO
+VIDAKOVIĆ MILAN
+VIDAKOVIĆ MILAN
+VIDAKOVIĆ MILJA
+VIDAKOVIĆ MIRČETA
+VIDAKOVIĆ MIRJANA
+VIDAKOVIĆ MIRKO
+VIDAKOVIĆ NEDELJKO
+VIDAKOVIĆ OLGA
+VIDAKOVIĆ OLGA
+VIDAKOVIĆ RADENKO
+VIDAKOVIĆ RADMILA
+VIDAKOVIĆ SAVA
+VIDAKOVIĆ SLAVKA
+VIDAKOVIĆ SOFIJA
+VIDAKOVIĆ SREĆKO
+VIDAKOVIĆ SREĆKO
+VIDAKOVIĆ STEVAN
+VIDAKOVIĆ STOJAN
+VIDAKOVIĆ SVETOZAR
+VIDAKOVIĆ TEREZA
+VIDAKOVIĆ VOJISLAV
+VIDAKOVIĆ VOJISLAV
+VIDAKOVIĆ VUKAŠIN
+VIDANOVIĆ MIHAJLO
+VIDANOVIĆ-SKOKO JELENA
+VIDARIĆ JOVO
+VIDARIĆ MILORAD
+VIDARIĆ RATKO
+VIDARIĆ STEVAN
+VIDAS TEREZA
+VIDEC JOSIP
+VIDEC JOSIP
+VIDENOVIĆ BRANKO
+VIDENOVIĆ KOSOVKA
+VIDENOVIĆ LJILJANA DR
+VIDENOVIĆ MOMIR
+VIDER MIRKO DIPL ING
+VIDIĆ ŽELJKO
+VIDIĆ ĐORĐE
+VIDIĆ BRANISLAV
+VIDIĆ BRANKA
+VIDIĆ BRANKA
+VIDIĆ BRANKO
+VIDIĆ DRAGANA
+VIDIĆ DUŠANKA
+VIDIĆ EMILIJA
+VIDIĆ JELICA
+VIDIĆ JOCA
+VIDIĆ LJILJANA
+VIDIĆ LJUBOMIR
+VIDIĆ MARIJA
+VIDIĆ MILAN
+VIDIĆ MILAN
+VIDIĆ MILOŠ
+VIDIĆ MIROSLAVA
+VIDIĆ MIROSLAV
+VIDIĆ NADA
+VIDIĆ PERO
+VIDIĆ RADMILA
+VIDIĆ RADMILA
+VIDIĆ RAJKO
+VIDIĆ SOFIJA
+VIDIĆ STANISLAVA
+VIDIĆ STEVAN
+VIDIĆ SVETISLAV
+VIDIĆ VELJKO
+VIDIĆ VERA
+VIDIĆ ZDRAVKO
+VIDICKI BRANKO
+VIDICKI IVAN
+VIDICKI KOSTA
+VIDICKI LJUBOMIR
+VIDICKI MIROSLAV
+VIDINER BOŽIDAR
+VIDMANIĆ GABRIJELA
+VIDOJEVIĆ ŽIVKA
+VIDOJEVIĆ BLAŽO
+VIDOJEVIĆ BOŽA
+VIDOJEVIĆ JOSIF
+VIDOJKOVIĆ RADOMIR
+VIDOSAVLJEVIĆ DOBROSAV
+VIDOSAVLJEVIĆ DUŠAN
+VIDOSAVLJEVIĆ JELICA
+VIDOSAVLJEVIĆ ZVONIMIR
+VIDOVIĆ ŽIVKO
+VIDOVIĆ AMIRA
+VIDOVIĆ ANICA
+VIDOVIĆ BEATRIS
+VIDOVIĆ BILJANA
+VIDOVIĆ BISERKA
+VIDOVIĆ BOŽIDAR
+VIDOVIĆ BORISLAV
+VIDOVIĆ BORISLAV
+VIDOVIĆ BRANISLAV
+VIDOVIĆ DRAGO
+VIDOVIĆ MARJAN
+VIDOVIĆ MILAN
+VIDOVIĆ MILAN
+VIDOVIĆ MILAN
+VIDOVIĆ MILE
+VIDOVIĆ MILICA
+VIDOVIĆ MILOŠ
+VIDOVIĆ MIRKO
+VIDOVIĆ NADA
+VIDOVIĆ PETAR
+VIDOVIĆ RADOMIR
+VIDOVIĆ RAJKO
+VIDOVIĆ RUŽICA
+VIDOVIĆ SAVA
+VIDOVIĆ SLOBODAN
+VIDOVIĆ VID
+VIGI JOSIP
+VIGNJEVIĆ ĐORĐE
+VIGNJEVIĆ ANA
+VIGNJEVIĆ BRANKA
+VIGNJEVIĆ BRANKO
+VIGNJEVIĆ DAKO
+VIGNJEVIĆ DRAGAN
+VIGNJEVIĆ DRAGAN
+VIGNJEVIĆ DUŠANKA
+VIGNJEVIĆ MILENKO
+VIGNJEVIĆ NEVENKA
+VIGNJEVIĆ RADE
+VIGNJEVIĆ STEVANIJA
+VIGNJEVIĆ VESNA
+VIGNJEVIĆ VLADIMIR
+VIGNJEVIĆ ZORAN
+VIJATOV SMILJA
+VIJEŠTICA NJEGOMIR
+VIJUK LJUBAN
+VIJUK SAVA
+VIKOR PETAR
+VIKOR RUŽA
+VILČEK JANJA
+VILČEK NIKOLA
+VILA MILOVAN
+VILAGOŠ ĐERĐI
+VILETI ZORA
+VILIŠ ĐURA
+VILIŠ FRANJA
+VILIĆ MARKO
+VILIĆ RADOMIR
+VILIĆ RADOSLAVA
+VILIĆ ROZALIJA
+VILIĆ VOJISLAV
+VILIGORSKI PAULA
+VILOTIĆ ŽIVKO
+VILOTIĆ MILISAV
+VILOTIJEVIĆ DRAGUTIN
+VILOTIJEVIĆ KIĆUN
+VILOTIJEVIĆ MIROJE
+VILOVAČKI KATICA
+VILOVAČKI SLAVKO
+VILOVAC JOVAN
+VILOVAC JOVAN
+VILOVAC MILAN
+VILOVSKI ĐORĐE
+VILOVSKI BRANISLAV
+VILOVSKI BRANKO
+VILOVSKI SAVA
+VILOVSKI SLAVOMIR
+VILOVSKI SMILJANA
+VILOVSKI VELJKO
+VILOVSKI ZORA
+VILUS DANICA
+VIMER VERA
+VIN IVAN
+VIN JOSIP
+VIN LAJOŠ
+VIN PAVLE
+VIN SVETLANA
+VINŠ DRAGUTIN
+VINAJ ĐORĐE
+VINAJ ĐORĐE
+VINAJ JANKO
+VINAJ LJUBICA
+VINAJ MELANIJA
+VINAJI ĐURA
+VINAJI MITAR
+VINAJI VERICA
+VINARŽ VLADIMIR
+VINCE ANDRIJA
+VINCE ERŽEBET
+VINCE IŠTVAN
+VINCE KARLO
+VINCE LACIKA
+VINCE MARELA
+VINCE MARGITA
+VINCE PAVLE
+VINCETIN ANA
+VINDŽANOVIĆ PETAR
+VINDŽANOVIĆ RADIVOJE
+VINDIŠ DRAGUTIN
+VINDIŠ STEVAN
+VINER BRANISLAV
+VINER IVAN
+VINER JERONIM
+VINER MARIJA
+VINER ZVONIMIR
+VINKA EMANUELA
+VINKIĆ ILIJA
+VINKLER JOŽEF
+VINKLEROVIĆ VERICA
+VINKOVIĆ ANA
+VINKOVIĆ DRAGAN
+VINKOVIĆ LJUDEVIT
+VINOKIĆ BOGDAN
+VINOKIĆ VASILJKA
+VIRAG ALBERT
+VIRAG ANDRIJA
+VIRAG ERIKA
+VIRAG JULIJANA
+VIRAG LJUDEVIT
+VIRAG MARTON
+VIRAG MIHAJLO
+VIRAG ROBERT
+VIRAG ROBERT
+VIRC FERENC
+VIRC JOŽEF
+VIRC JOVAN
+VIRC MARTIN
+VIRC NADA
+VIRC RUŽICA
+VIRC STEVAN
+VIRIĆ IVAN
+VIRIĆ IVAN
+VIRIJEVIĆ ĐORĐE
+VIRIJEVIĆ BOŽIDAR
+VIRIJEVIĆ BUDIMIR
+VIRIJEVIĆ JOVANKA
+VIRIJEVIĆ LJUBINKO
+VIRIJEVIĆ PETAR
+VIRIJEVIĆ VOJIN
+VISLAVSKI ĐURA
+VISLAVSKI BOGDAN
+VISLAVSKI JAKIM
+VISLAVSKI JAKIM
+VISLAVSKI JANOŠ
+VISLAVSKI JANOŠ
+VISLAVSKI LEON
+VISLAVSKI LJUBOMIR
+VISLAVSKI MARIJA
+VISLAVSKI MIHAJLO
+VISLAVSKI MIRON
+VISLAVSKI MIROSLAV
+VISLAVSKI MIROSLAV
+VISLAVSKI NATAŠA
+VISLAVSKI ZLATKO
+VIST HELGAANA
+VITAS STEVAN
+VITAS STEVAN
+VITASOVIĆ DUŠANKA
+VITASOVIĆ DUŠANKA
+VITASOVIĆ DUŠAN
+VITASOVIĆ NEBOJŠA
+VITAZ PETAR
+VITEZ JAN
+VITEZ TUGOMIR
+VITEZ ZVONKO
+VITIĆ ĐORĐE
+VITIĆ ĐORĐE
+VITIĆ BOŠKO DR LEKAR
+VITJUK MIRJANA DIPL ING
+VITJUK PETAR DIPL ING
+VITKAI ILONA
+VITKOVIĆ BRANKO
+VITKOVIĆ DRAGO
+VITKOVIĆ JOVAN
+VITOMIROV ŽIVAN
+VITOMIROVIĆ BORIS
+VITOMIROVIĆ DRAGOMIR
+VITORAC ĐURA
+VITORAC ĐURO
+VITORAC BORISLAV
+VITORAC ILIJA
+VITORAC NADA
+VITORAC RUŽENKA
+VITOROVIĆ MILAN
+VITOROVIĆ MILOŠ
+VITOROVIĆ OLGA
+VITOROVIĆ RANKA
+VITOROVIĆ SOFIJA
+VITUŠKA STEVAN
+VIVOD JELISAVETA
+VIVOD MAGDALENA
+VIZI ŠANDOR
+VIZI JOSIP
+VIZI JOVAN
+VIZI KATICA
+VIZI MARIJA
+VIZI MARIJA
+VIZI RADOJKA
+VIZI SONJA
+VIZI STEVAN
+VJEŠTICA ĐURO
+VJEŠTICA DUŠANKA
+VJEŠTICA JOVO
+VJEŠTICA MILAN
+VJEŠTICA MIRKO
+VJEŠTICA MIROSLAV
+VJEŠTICA NADA
+VJEŠTICA NEBOJŠA
+VJEŠTICA SLAVKO
+VJERG BRANISLAV
+VJETROV LJUBICA
+VLA DUŠAN
+VLA DUŠAN
+VLA JOVAN
+VLA MILOVAN
+VLA PETAR
+VLA RADOSLAV
+VLA SLAVKO
+VLA SRETA
+VLAČO DUŠANKA
+VLAŠČIĆ ALEKSANDAR
+VLAŠIĆ MIODRAG
+VLAŠIĆ VASO
+VLAŠKALIĆ ĐORĐE
+VLAŠKALIĆ ALEKSANDAR
+VLAŠKALIĆ ANDRIJA
+VLAŠKALIĆ BOŽANA
+VLAŠKALIĆ-BOJANOVIĆ RAJKA
+VLAŠKALIĆ BRANISLAV
+VLAŠKALIĆ BRANISLAV
+VLAŠKALIĆ BRANISLAV
+VLAŠKALIĆ DONKA
+VLAŠKALIĆ FADILA
+VLAŠKALIĆ ILIJA
+VLAŠKALIĆ LAZAR
+VLAŠKALIĆ LAZAR
+VLAŠKALIĆ MILORAD
+VLAŠKALIĆ NIKOLA
+VLAŠKALIĆ OLGA
+VLAŠKALIĆ PAVLE
+VLAŠKALIĆ PAVLE
+VLAŠKALIĆ PAVLE
+VLAŠKALIĆ PETAR
+VLAŠKALIĆ PETAR
+VLAŠKALIĆ-POPOVIĆ DUŠANKA
+VLAŠKALIĆ RADOSLAV
+VLAŠKALIĆ SAVA
+VLAŠKALIĆ SLOBODAN
+VLAŠKALIĆ SLOBODAN
+VLAŠKALIĆ STEVAN
+VLAŠKALIĆ STOJAN
+VLAŠKALIĆ VLADIMIR
+VLAŠKALIĆ ZORA
+VLAŠKALIJA JELENA
+VLAŠKALIJA VLADA
+VLAŠKALIN BRANKO
+VLAŠKI BOGDANKA
+VLAŠKI LAZAR
+VLAŠKI PREDRAG
+VLADARSKI OLGA
+VLADARSKI OLGA
+VLADETIĆ MILAN
+VLADETIĆ MIRKO
+VLADIĆ DRAGO
+VLADIĆ MILAN
+VLADIĆ PETAR
+VLADIMIR SELENA
+VLADIMIR ZDRAVKO
+VLADIMIROVIĆ ALEKSANDAR
+VLADIMIROVIĆ MILAN
+VLADIMIROVIĆ VLADIMIR
+VLADISAVLJEV ŽIVAN
+VLADISAVLJEV MILORAD
+VLADISAVLJEV PERA
+VLADISAVLJEV TOMA
+VLADISAVLJEVIĆ ĐORĐE
+VLADISAVLJEVIĆ ĐURA
+VLADISAVLJEVIĆ DESIMIR
+VLADISAVLJEVIĆ DRAGICA
+VLADISAVLJEVIĆ ERŽEBET
+VLADISAVLJEVIĆ JELENA
+VLADISAVLJEVIĆ MILOSAVA
+VLADISAVLJEVIĆ MIROSLAV
+VLADISAVLJEVIĆ OBRAD
+VLADISAVLJEVIĆ-PEŠKANOV MIRJANA
+VLADISAVLJEVIĆ PREDRAG
+VLADISAVLJEVIĆ VOJISLAV
+VLADOVIĆ JOVAN
+VLADOVIĆ JOVAN
+VLADOVIĆ RADOJKA
+VLADUŠA NIKOLA
+VLADUŠIĆ IVAN
+VLADUŠIĆ MILAN
+VLADULOV ŽIVOJIN
+VLADULOVIĆ-POPOV MARIJA DR LEKAR
+VLADULOVIĆ TIHOMIR
+VLAH DANICA
+VLAH IVAN
+VLAH PAVLE
+VLAH RADOVAN
+VLAHEK STANKO
+VLAHINIĆ MILOŠ
+VLAHO KRUNOSLAV
+VLAHOVIĆ ĐORĐE
+VLAHOVIĆ BOJANA
+VLAHOVIĆ BRANISLAV
+VLAHOVIĆ BRANKA
+VLAHOVIĆ BRANKA
+VLAHOVIĆ DANIJELA
+VLAHOVIĆ DRAGOLJUB
+VLAHOVIĆ DRAGO
+VLAHOVIĆ DUŠAN
+VLAHOVIĆ JELICA
+VLAHOVIĆ LJUBICA
+VLAHOVIĆ LJUBINKA
+VLAHOVIĆ MARIJA
+VLAHOVIĆ MILAN DIPL ING
+VLAHOVIĆ MILENKO
+VLAHOVIĆ MILICA
+VLAHOVIĆ MIRKO DR ING
+VLAHOVIĆ MIROSLAVA
+VLAHOVIĆ MOMČILO
+VLAHOVIĆ PAVLE
+VLAHOVIĆ RADOŠ
+VLAHOVIĆ RADOMIR
+VLAHOVIĆ RADONJA
+VLAHOVIĆ SAVA DR
+VLAHOVIĆ SENKA
+VLAHOVIĆ SLOBODAN
+VLAHOVIĆ STEVAN
+VLAHOVIĆ STRAHINJA
+VLAHOVIĆ TEODORA
+VLAHOVIĆ VITOMIRKA
+VLAHOVIĆ VLADA
+VLAHOVIĆ VLADIMIR
+VLAHUŠIĆ MIRKO
+VLAHUŠIĆ OLGICA
+VLAISAVLJEVIĆ ŽIVKO
+VLAISAVLJEVIĆ ĐUJO
+VLAISAVLJEVIĆ ANGELINA
+VLAISAVLJEVIĆ DANILO
+VLAISAVLJEVIĆ DARA
+VLAISAVLJEVIĆ DMITAR
+VLAISAVLJEVIĆ DUŠAN
+VLAISAVLJEVIĆ MAKSIM
+VLAISAVLJEVIĆ MILAN
+VLAISAVLJEVIĆ MILAN
+VLAISAVLJEVIĆ MILIJANA
+VLAISAVLJEVIĆ MILOŠ
+VLAISAVLJEVIĆ MOMČILO
+VLAISAVLJEVIĆ NIKOLA
+VLAISAVLJEVIĆ NIKOLA
+VLAISAVLJEVIĆ NIKOLA
+VLAISAVLJEVIĆ RADMILA
+VLAISAVLJEVIĆ SAVO
+VLAISAVLJEVIĆ SLOBODAN
+VLAISAVLJEVIĆ SOFIJA
+VLAISAVLJEVIĆ STOJA
+VLAISAVLJEVIĆ TRIVUNA
+VLAISAVLJEVIĆ VASO
+VLAJANKOV LAZAR
+VLAJANKOV NATALIJA
+VLAJANKOV SLOBODAN
+VLAJANKOV-VULIĆ VERA
+VLAJIĆ DRAGAN
+VLAJIĆ DRAGOSLAVA
+VLAJIĆ DUŠANKA
+VLAJIĆ DUŠICA
+VLAJIĆ JOVAN
+VLAJIĆ MARIJA
+VLAJIĆ MILOŠ
+VLAJIĆ VALERIJA
+VLAJKOV BOSILJKA
+VLAJKOV BRANISLAV
+VLAJKOV BRANKO
+VLAJKOV-IVANOVIĆ SNEŽANA
+VLAJKOV LAZAR
+VLAJKOV LAZA
+VLAJKOV MACA
+VLAJKOV MIODRAG
+VLAJKOV MIRKO
+VLAJKOV MLADEN
+VLAJKOV NIKOLA
+VLAJKOV PAVLE
+VLAJKOV PETAR
+VLAJKOV ZORICA
+VLAJKOVIĆ ANTONIJA
+VLAJKOVIĆ BOGDAN
+VLAJKOVIĆ MILUTIN
+VLAJKOVIĆ MIODRAG
+VLAJKOVIĆ NEMANJA
+VLAJNIĆ ČEDOMIR
+VLAJNIĆ GORAN
+VLAJNIĆ MIRJANA
+VLAJNIĆ ZORA
+VLAJOVANOV SLOBODAN
+VLALUKIN DRAGOSLAV
+VLALUKIN ILONA
+VLALUKIN ILONKA
+VLALUKIN MILORAD DIPL ING
+VLALUKIN MIRJANA
+VLALUKIN NADA
+VLALUKIN SAVA
+VLALUKIN SLAVKO
+VLALUKIN ZORA
+VLAOV-ŽARKOV OLGA
+VLAOV GORDANA
+VLAOV JAVORKA
+VLAOV MILOŠ
+VLAOV MIROSLAV
+VLAOV VELIMIR
+VLAOVIĆ ĐORĐE
+VLAOVIĆ ĐORĐE
+VLAOVIĆ ĐORĐE
+VLAOVIĆ ĐORĐE
+VLAOVIĆ ALEKSANDAR
+VLAOVIĆ ANICA
+VLAOVIĆ BOŠKO
+VLAOVIĆ BRANISLAVA
+VLAOVIĆ DIMITRIJE
+VLAOVIĆ DRAGAN
+VLAOVIĆ DRAGAN
+VLAOVIĆ DRAGOLJUB
+VLAOVIĆ DUŠAN
+VLAOVIĆ DUŠKO
+VLAOVIĆ GAVRA
+VLAOVIĆ HARI
+VLAOVIĆ IGNJAT
+VLAOVIĆ IVANKA
+VLAOVIĆ JELA
+VLAOVIĆ JOVAN
+VLAOVIĆ JOVAN
+VLAOVIĆ KATICA
+VLAOVIĆ LAZAR
+VLAOVIĆ LJUBIŠA
+VLAOVIĆ LJUBICA
+VLAOVIĆ LJUBOMIR
+VLAOVIĆ LJUBOMIR
+VLAOVIĆ LUKA
+VLAOVIĆ MARA
+VLAOVIĆ MARKO
+VLAOVIĆ MILOŠ
+VLAOVIĆ MILOŠ
+VLAOVIĆ MILOSAV
+VLAOVIĆ MIROSLAV
+VLAOVIĆ MLADEN
+VLAOVIĆ NIKOLA
+VLAOVIĆ NIKOLA
+VLAOVIĆ OLIVERA
+VLAOVIĆ PLEMENKA
+VLAOVIĆ RADIVOJ
+VLAOVIĆ RAJKO
+VLAOVIĆ SAVA
+VLAOVIĆ SLAVKO
+VLAOVIĆ STANOJE
+VLAOVIĆ STEVAN
+VLAOVIĆ STEVAN
+VLAOVIĆ SVETOZAR
+VLAOVIĆ TOŠA
+VLAOVIĆ TODOR
+VLAOVIĆ TOMA
+VLAOVIĆ TOMISLAV
+VLAOVIĆ VESNA
+VLAOVIĆ VLASTISLAVA
+VLAOVIĆ ZORAN
+VLASAČEVIĆ STOJKO
+VLASAK RENATA
+VLASOV MIHAJLO
+VLASTELIĆ ROKSANDA
+VLATKOVIĆ ŽELJKO
+VLATKOVIĆ ANGELO
+VLATKOVIĆ DUŠAN
+VLATKOVIĆ KREŠIMIR
+VLATKOVIĆ MARIJA
+VLATKOVIĆ MARIJA
+VLATKOVIĆ MILAN
+VLATKOVIĆ MILICA
+VLATKOVIĆ MIROSLAV
+VLATKOVIĆ MLADEN
+VLATKOVIĆ NIKOLA
+VLATKOVIĆ SAVKA
+VLATKOVIĆ SVETOZAR
+VOŠTIĆ ALEKSANDAR
+VOŠTIĆ MIODRAG
+VODA ZDENKO
+VODALOV DEJAN
+VODALOV MLADEN
+VODENIČAR NIKOLA
+VODOGAZ DRAGAN
+VODOGAZ LEPOSAVA
+VODOPIVEC ŽELJKO
+VODOPIVEC DRAGICA
+VODOPIVEC MIHAEL
+VOGANJAC MILENKO
+VOGLEŠ LIDIJA
+VOIN ALEKSANDAR DR LEKAR
+VOJČEVSKI ALEKSANDAR
+VOJČIĆ JOVAN
+VOJAŠĆUK MARA
+VOJIČIĆ JELENA
+VOJIČIĆ RAJKO
+VOJIČIĆ SAVA
+VOJIČIĆ VLADIMIR
+VOJIMIROVIĆ SLAVKO
+VOJIN MILKA
+VOJINOV ĐORĐE
+VOJINOV MIRA
+VOJINOV RADOSLAV
+VOJINOVIĆ ALEKSANDRA
+VOJINOVIĆ BOGIĆ
+VOJINOVIĆ DRAGAN
+VOJINOVIĆ DRAGOLJUB
+VOJINOVIĆ DRAGOSLAV
+VOJINOVIĆ JELENA
+VOJINOVIĆ JOVAN DR
+VOJINOVIĆ LJILJANA
+VOJINOVIĆ LJUBOMIR
+VOJINOVIĆ MILIVOJE
+VOJINOVIĆ MILORAD
+VOJINOVIĆ MIRJANA DR
+VOJINOVIĆ MIROSLAV
+VOJINOVIĆ MIROSLAV
+VOJINOVIĆ MIROSLAV
+VOJINOVIĆ NEBOJŠA
+VOJINOVIĆ VESELIN
+VOJINOVIĆ VUJICA
+VOJINOVIĆ VUKOSAVA
+VOJINOVIĆ ZORKA
+VOJISAVLJEVIĆ ZLATIJA
+VOJKIĆ BOŠKO
+VOJKIĆ RADISLAV
+VOJNIĆ FRANJA
+VOJNIĆ-HAJDUK GIZA
+VOJNIĆ-HAJDUK LJILJANA
+VOJNIĆ-HAJDUK MIRJANA
+VOJNIĆ JOVAN
+VOJNIĆ-KORTUIŠ STANA
+VOJNIĆ STEVAN
+VOJNOV BRANISLAV
+VOJNOV-ILIĆ ROZALIJA
+VOJNOV STOJAN DR LEKAR
+VOJNOVIĆ ŽARKO
+VOJNOVIĆ ŽARKO
+VOJNOVIĆ ŽARKO
+VOJNOVIĆ ĐORĐE
+VOJNOVIĆ ĐORĐE
+VOJNOVIĆ ĐURA
+VOJNOVIĆ ĐURO
+VOJNOVIĆ ACA
+VOJNOVIĆ ANASTAZIJA
+VOJNOVIĆ BRACA
+VOJNOVIĆ BRANKO
+VOJNOVIĆ BRANKO
+VOJNOVIĆ BRANKO
+VOJNOVIĆ DANICA
+VOJNOVIĆ DAVOR
+VOJNOVIĆ DESANKA
+VOJNOVIĆ DESANKA
+VOJNOVIĆ DIMITRIJE
+VOJNOVIĆ DRAGAN
+VOJNOVIĆ DRAGAN
+VOJNOVIĆ DRAGICA
+VOJNOVIĆ DUŠAN DIPL ING
+VOJNOVIĆ DUŠAN
+VOJNOVIĆ DUŠAN
+VOJNOVIĆ DUŠAN
+VOJNOVIĆ DUŠAN
+VOJNOVIĆ GIZELA
+VOJNOVIĆ ILIJA
+VOJNOVIĆ ILIJA
+VOJNOVIĆ ILIJA
+VOJNOVIĆ ILIJA
+VOJNOVIĆ IVANKA
+VOJNOVIĆ IVAN
+VOJNOVIĆ JOVAN
+VOJNOVIĆ JOVAN
+VOJNOVIĆ KATARINA
+VOJNOVIĆ KATICA
+VOJNOVIĆ KLARA
+VOJNOVIĆ LJUBIŠA
+VOJNOVIĆ LJUBINKA
+VOJNOVIĆ MARA
+VOJNOVIĆ MARKO
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILAN
+VOJNOVIĆ MILENKO
+VOJNOVIĆ MILENKO
+VOJNOVIĆ MILICA
+VOJNOVIĆ MILINA
+VOJNOVIĆ MILJAN
+VOJNOVIĆ MILKA
+VOJNOVIĆ MILOŠ
+VOJNOVIĆ MILUTIN
+VOJNOVIĆ MIODRAG
+VOJNOVIĆ MIRJANA
+VOJNOVIĆ MIRKO
+VOJNOVIĆ MIROSLAV
+VOJNOVIĆ MLADEN DIPL OEC
+VOJNOVIĆ NADA
+VOJNOVIĆ NADA
+VOJNOVIĆ NADEŽDA
+VOJNOVIĆ NATAŠA
+VOJNOVIĆ NATAŠA
+VOJNOVIĆ NIKOLA DR
+VOJNOVIĆ NIKOLA
+VOJNOVIĆ NIKOLA
+VOJNOVIĆ PETAR
+VOJNOVIĆ PETAR
+VOJNOVIĆ PETAR
+VOJNOVIĆ RADA
+VOJNOVIĆ RADE
+VOJNOVIĆ RADE
+VOJNOVIĆ RADE
+VOJNOVIĆ RADIVOJ
+VOJNOVIĆ-RADUJKOV NADA
+VOJNOVIĆ RAJKO
+VOJNOVIĆ RUŽICA
+VOJNOVIĆ SLAVKO
+VOJNOVIĆ SLAVKO
+VOJNOVIĆ SPASENIJA
+VOJNOVIĆ STAMENKA
+VOJNOVIĆ STANISLAV
+VOJNOVIĆ STEVAN
+VOJNOVIĆ STEVAN
+VOJNOVIĆ STEVAN
+VOJNOVIĆ STEVA
+VOJNOVIĆ STEVO
+VOJNOVIĆ STOJKA
+VOJNOVIĆ STRAHINJA
+VOJNOVIĆ TOMISLAV
+VOJNOVIĆ VESELIN
+VOJNOVIĆ VESELIN
+VOJNOVIĆ VLADIMIR
+VOJNOVIĆ VLADIMIR
+VOJNOVIĆ VLADIMIR
+VOJNOVIĆ VLADIMIR
+VOJNOVIĆ VOJISLAV
+VOJNOVIĆ VOJISLAV
+VOJNOVIĆ ZDRAVKO
+VOJT LJUBICA
+VOJT MILANA
+VOJTAS STANISLAV
+VOJTEHOVSKI JAROSLAV
+VOJTEHOVSKI OTO
+VOJTEHOVSKI OTO
+VOJTEHOVSKI ZAGORKA
+VOJVODIĆ ĐURA
+VOJVODIĆ ALEKSANDAR
+VOJVODIĆ ANA
+VOJVODIĆ BRANISLAV
+VOJVODIĆ DANICA
+VOJVODIĆ DRAGOLJUB
+VOJVODIĆ DUŠAN
+VOJVODIĆ GRADIMIR
+VOJVODIĆ JOVAN
+VOJVODIĆ MANIŠA
+VOJVODIĆ MILAN
+VOJVODIĆ MILE
+VOJVODIĆ MILOŠ
+VOJVODIĆ MILORAD
+VOJVODIĆ MIRKO
+VOJVODIĆ NADA
+VOJVODIĆ NIKOLA
+VOJVODIĆ RADOVAN
+VOJVODIĆ RATKA
+VOJVODIĆ SLAVKO
+VOJVODIĆ STEVAN
+VOJVODIĆ STEVAN
+VOJVODIĆ-TASIĆ SVETLANA
+VOJVODIĆ VASO
+VOJVODIĆ VOJISLAV
+VOJVODIĆ ZORA
+VOKŠI ĐEVAD
+VOKALIĆ HILDEGARD
+VOKALIĆ TEOBALD
+VOKIĆ DRAGAN
+VOKIĆ DUŠKO
+VOKIĆ JOVAN
+VOKIĆ NADA
+VOLČEVIĆ BORISLAV
+VOLČEVIĆ EVA
+VOLČEVIĆ TODOR
+VOLČEVSKI EVANTIJE
+VOLČEVSKI NIKOLA
+VOLAŠ ISIDOR
+VOLAŠ MILANKO
+VOLAŠ MILAN
+VOLAR ANDRAŠ
+VOLAR KARLO
+VOLAR PETAR
+VOLAR STJEPAN
+VOLAREV LJUBOMIR
+VOLAREV NADA
+VOLAREV STEVAN
+VOLAREVIĆ MARKO
+VOLAREVIĆ ZORAN
+VOLAROV MILAN
+VOLAROV RADOVAN
+VOLENC MARIJA
+VOLF BORIS
+VOLF DRAGUTIN
+VOLF IŠTVAN
+VOLF LJUBICA
+VOLF LJUDEVIT
+VOLF MIRA
+VOLF MIRA
+VOLF VERA
+VOLIČ VLADIMIR
+VOLIĆ ALEKSANDAR
+VOLIĆ BOŽIDAR
+VOLIĆ DRAGOSLAV
+VOLIĆ GRUJA
+VOLIĆ LJILJANA
+VOLIĆ MARINKA
+VOLIĆ PETAR
+VOLIĆ RADOSLAV
+VOLIĆ SLAVKO
+VOLIĆ TIHOMIR
+VOLIĆ VINKA
+VOLKAR EMIL
+VOLKOV RADOSLAV
+VOLOŠKIN BRATISLAV
+VOLOŠKIN DRAGICA
+VONIĆ VLATKO
+VORAČEK ŽELJKO
+VORAČEK LADISLAV
+VORATOVIĆ RADIVOJ
+VORGIĆ ĐORĐE
+VORGIĆ ALEKSANDAR
+VORGIĆ ANĐELKA
+VORGIĆ BORIVOJ
+VORGIĆ DRAGAN
+VORGIĆ EMIL
+VORGIĆ GAVRA
+VORGIĆ JOSIP
+VORGIĆ LAZAR
+VORGIĆ MARA
+VORGIĆ MILADINKA
+VORGIĆ NIKOLA DR
+VORGIĆ SLOBODAN
+VORGIĆ STEVAN
+VORGIĆ STEVAN
+VORGIĆ VUJICA
+VORGIĆ ZDRAVKO
+VORGIĆ ZORA
+VORGINC CVETA
+VORGUČIĆ MILOŠ
+VORGUČIĆ SAŠA
+VORGUČIN IVAN
+VORKAPA NIKOLA
+VORKAPIĆ DUŠAN
+VORKAPIĆ LJUBICA
+VORKAPIĆ MILAN
+VORKAPIĆ NIKOLA
+VORLIČEK JANOŠ
+VORLIČEK JANOŠ
+VORLIČEK MARICA
+VOROBJEV PETAR
+VOROBJEV SAVA
+VOROTOVIĆ STANA
+VORTIĆ BOSILJKA
+VOZAR ANA
+VOZAR DANICA
+VOZAR DRAGAN
+VOZAR MILOŠ
+VOZAR PAVLE DIPL ING
+VOZAREVIĆ ĐORĐE
+VOZAREVIĆ ELIZABETA
+VOZAREVIĆ JELICA
+VOZAREVIĆ MIRKO
+VOZAROVIĆ VIDA
+VRČINAC PETAR
+VRŠKA ĐORĐE
+VRŠKA DANIJEL
+VRŠKA KATARINA
+VRAČAR BRANISLAV
+VRAČAR DARINKA
+VRAČAR JOVAN
+VRAČAR LJUBOMIR
+VRAČAR LJUBO
+VRAČAR MILAN
+VRAČAR MIOLJKA
+VRAČAR NEDELJKO
+VRAČAR SLAVKA
+VRAČAR SLOBODAN
+VRAČAR VERA
+VRAČAR VUK
+VRAČAR ZDENKA
+VRAČARIČIĆ RADE
+VRAČARIĆ ĐORĐE
+VRAČARIĆ ALEKSANDAR
+VRAČARIĆ DIMITRIJE
+VRAČARIĆ JELICA
+VRAČARIĆ LJILJANA
+VRAČARIĆ LJUBIŠA
+VRAČARIĆ LJUBOMIR
+VRAČARIĆ MARIJA
+VRAČARIĆ MILENKO
+VRAČARIĆ MILISAV
+VRAČARIĆ MILOMIR
+VRAČARIĆ VLADIMIR
+VRAČEVIĆ SAVKA
+VRAŠTANOVIĆ LJUBINKA
+VRABLIK JULIJANA
+VRAGOVIĆ JOCA
+VRANA NADA
+VRANAC KSENIJA
+VRANAC SEAD
+VRANAC VAHIDA
+VRANAC ZIJAD
+VRANEŠ ČEDOMIR
+VRANEŠ BOŽIDAR
+VRANEŠ DAVORIN
+VRANEŠ EMILIJA
+VRANEŠ JOVANKA
+VRANEŠ MARIJA
+VRANEŠ MILAN
+VRANEŠ MILKA
+VRANEŠ MILUTIN
+VRANEŠ NADA
+VRANEŠ NIKOLA
+VRANEŠ PETAR
+VRANEŠ SMILJA
+VRANEŠ VERICA
+VRANEŠEVIĆ ADAM
+VRANEŠEVIĆ BRANISLAV DR
+VRANEŠEVIĆ DAMJAN
+VRANEŠEVIĆ KATICA
+VRANEŠEVIĆ MILAN
+VRANEŠEVIĆ MILAN
+VRANEŠEVIĆ MILOŠ
+VRANEŠEVIĆ MIROSLAV
+VRANEŠEVIĆ MLADEN
+VRANEŠEVIĆ NADA DR
+VRANEŠEVIĆ PREDRAG
+VRANEŠEVIĆ RAJKO
+VRANEŠEVIĆ STEVAN
+VRANEŠEVIĆ STOJAN
+VRANIĆ ČEDOMIR
+VRANIĆ BRANKO
+VRANIĆ DOBRINA
+VRANIĆ DRAGINJA
+VRANIĆ DRAGOSLAV
+VRANIĆ ILIJA
+VRANIĆ JADRANKA
+VRANIĆ MARKO
+VRANIĆ MILAN PROFESOR
+VRANIĆ MILORAD
+VRANIĆ MILUTIN
+VRANIĆ MIRČETA
+VRANIĆ MIRKO
+VRANIĆ MITRA
+VRANIĆ NENAD
+VRANIĆ NIKOLA
+VRANIĆ RADIVOJE
+VRANIĆ RADOJKA
+VRANIĆ SLAVKO
+VRANIĆ SLOBODAN
+VRANJEŠ GOJKO
+VRANJEŠ JOVANKA
+VRANJEŠ MILENKO
+VRANJEŠ MILENKO
+VRANJEŠ MILE
+VRANJEŠ MILKA
+VRANJEŠ NENAD
+VRANJEŠ RADOMIR
+VRANJEŠ SOFIJA
+VRANJEŠ SVETISLAV
+VRANJEŠ SVETLANA
+VRANJEŠEVIĆ BRANKO
+VRANJEŠEVIĆ DINKA
+VRANJEŠEVIĆ DRAGAN
+VRANJEŠEVIĆ JOVICA
+VRANJEŠEVIĆ MOMIR
+VRANJEŠEVIĆ RATOMIR
+VRANJEŠEVIĆ VELJKO
+VRANJEVAC DRAGAN
+VRANJEVAC MILIVOJE
+VRANJKOVIĆ MILAN
+VRANJKOVIĆ MILE
+VRANJKOVIĆ SMILJKA
+VRANJKOVIĆ SRETO
+VRANJO FRANJA
+VRANJO ZOLTAN
+VRANKOVIĆ JURAJ
+VRANKOVIĆ LUKA
+VRANKOVIĆ MILAN
+VRAPČEV ŽIVKO
+VRAPČEV DUŠKO
+VRAPČEV MELANIJA
+VRATNJAN BRANIMIR
+VRATONJIĆ SLAVOLJUB
+VRBAŠKI ŽARKO
+VRBAŠKI ŽARKO
+VRBAŠKI ĐORĐE
+VRBAŠKI ĐORĐE
+VRBAŠKI ĐURA
+VRBAŠKI ALEKSANDAR
+VRBAŠKI ANICA
+VRBAŠKI BRANISLAVA
+VRBAŠKI DARINKA
+VRBAŠKI DRAGOMIR
+VRBAŠKI DRAGOSLAV
+VRBAŠKI DUŠAN
+VRBAŠKI DUŠAN
+VRBAŠKI DUŠAN
+VRBAŠKI DUŠICA
+VRBAŠKI GORDANA
+VRBAŠKI JELENA
+VRBAŠKI JELISAVETA
+VRBAŠKI JOVAN
+VRBAŠKI JULIJANA
+VRBAŠKI KOSTA
+VRBAŠKI LAZAR
+VRBAŠKI LJILJANA
+VRBAŠKI LJUBICA MR
+VRBAŠKI LJUBOMIR
+VRBAŠKI MILAN
+VRBAŠKI MILAN
+VRBAŠKI MILENA
+VRBAŠKI MILENKO
+VRBAŠKI MILICA
+VRBAŠKI MILORAD
+VRBAŠKI MIODRAG
+VRBAŠKI MIROSLAV
+VRBAŠKI MIROSLAV
+VRBAŠKI PAVLE
+VRBAŠKI PETAR DIPL ING
+VRBAŠKI PETAR
+VRBAŠKI PETAR
+VRBAŠKI RADA
+VRBAŠKI RADENKO
+VRBAŠKI SAVA
+VRBAŠKI SLOBODAN
+VRBAŠKI STEVAN DR
+VRBAŠKI SVETLANA
+VRBAŠKI TANJA
+VRBAŠKI TIMA
+VRBAŠKI TODOR
+VRBAŠKI VLADISLAV
+VRBAJAC ĐORĐE
+VRBAJAC CVEĆE
+VRBAJAC JOVAN
+VRBAJAC VALERIJA
+VRBANAC LAJOŠ
+VRBICA DRAGOLJUB
+VRBICA KSENIJA
+VRBICA PETAR
+VRBLJANAC ALEN
+VRCAN VALERIJA
+VRCELJ ŽIVKO
+VRCELJ BOŽIDAR
+VRCELJ LJILJANA
+VRCELJ MIHAJLO
+VRCELJ ZORAN
+VRDOLJAK BRANIMIR
+VRDOLJAK RADOVANKA
+VREŠĆAK IŠTVAN
+VREĆA BRANKO
+VREĆO VELIMIR
+VREBAC ZVONIMIR
+VREBALOV ALEKSANDRA
+VREBALOV STEVAN
+VREBALOV TIHOMIR
+VREVEZOSKI RISTO
+VREVIČIĆ ĐORĐE
+VREVIČIĆ SIMA
+VREVIČIĆ TRIVUN
+VRGOV KOSTA
+VRGOVIĆ DRAGAN
+VRGOVIĆ STEVAN
+VRGOVIĆ VERA
+VRGOVIĆ VLADIMIR
+VRHOVAC BRANISLAV
+VRHOVAC DANE
+VRHOVAC JASMINA
+VRHOVAC NEDELJKO
+VRHOVAC SLAVKO DIPL ING
+VRHOVAC TOMISLAV
+VRKEŠ GORAN
+VRMIĆ MLADEN
+VRNČIĆ ĐORĐE
+VRSAJKOV ILIJA
+VRSAJKOV ISIDOR
+VRSAJKOV JULKA
+VRSAJKOV LJUBICA
+VRSAJKOV MILOŠ
+VRSAJKOV NEVENKA
+VRSELJA VINKO
+VRTIKAPA JOVANKA
+VRTIPRAŠKI PETAR
+VRTIPRAŠKI RADOVAN DR
+VRTIPRAŠKI RADOVAN
+VRTIPRAŠKI VASA
+VRTOVŠNIK MIHAJLO
+VRTULEK SMILJA
+VRTUNIĆ BORISLAV
+VRTUNIĆ MARKO
+VRTUNIĆ NIKOLA
+VRTUNSKI DANICA
+VRTUNSKI HEDVIGA
+VRTUNSKI JULKA
+VRTUNSKI KATARINA
+VRTUNSKI MILAN
+VRTUNSKI MILICA
+VRTUNSKI MIODRAG
+VRTUNSKI MLADEN
+VRTUNSKI SRĐAN
+VRTUNSKI VLADIMIR
+VRUĆINIĆ RADOJICA
+VRUĆINIĆ RAJKO
+VRZIĆ BORISLAV
+VRZIĆ DRAGICA
+VRZIĆ DRAGICA
+VRZIĆ NADEŽDA
+VRZIĆ STEVO
+VUČAJ ALEKSANDAR
+VUČAJ FRAN
+VUČAJ MIOMIRA
+VUČAJ ROBERT
+VUČANOVIĆ PREDRAG
+VUČELIĆ RADOMIR
+VUČELIĆ SLAVKO
+VUČELIĆ VERA
+VUČELIĆ VLAJKO
+VUČEN MILANA
+VUČENIĆ PREDRAG
+VUČENOV ĐURICA
+VUČENOV KATALIN
+VUČENOV MIRJANA
+VUČENOV STEVAN
+VUČENOVIĆ ŽIVAN
+VUČENOVIĆ ŽIVAN
+VUČENOVIĆ BRANKA
+VUČENOVIĆ DESANKA
+VUČENOVIĆ DRAGOLJUB
+VUČENOVIĆ JOVAN
+VUČENOVIĆ LUKA
+VUČENOVIĆ MIRKO
+VUČENOVIĆ PETAR
+VUČENOVIĆ SRETO
+VUČENOVIĆ SVETLANA
+VUČERIĆ PRVOSLAV
+VUČETIĆ ŽIKA
+VUČETIĆ ŽIVKO
+VUČETIĆ ANĐELKA
+VUČETIĆ BOŽIDAR
+VUČETIĆ BOJANA
+VUČETIĆ DARINKA
+VUČETIĆ DESIMIR
+VUČETIĆ DEVA
+VUČETIĆ DIMITRIJE
+VUČETIĆ DRAGAN
+VUČETIĆ DUŠAN
+VUČETIĆ LAZAR
+VUČETIĆ LJILJANA
+VUČETIĆ MIĆA
+VUČETIĆ MILENA
+VUČETIĆ MILENA
+VUČETIĆ MILEN
+VUČETIĆ MILOSAV
+VUČETIĆ NIKOLA
+VUČETIĆ NIKOLA
+VUČETIĆ NINKO
+VUČETIĆ PETAR
+VUČETIĆ PETAR
+VUČETIĆ RADE
+VUČETIĆ RADOJKA
+VUČETIĆ RADOJKO
+VUČETIĆ RAJKO
+VUČETIĆ SANJA
+VUČETIĆ SLOBODAN
+VUČETIĆ SMILJKA
+VUČETIĆ SOFIJA
+VUČETIĆ STANKO
+VUČETIĆ STEVAN
+VUČETIĆ SVETLANA
+VUČETIĆ VANJA
+VUČETIĆ VELJKO DR
+VUČETIĆ VERA
+VUČETIĆ VLADISLAV
+VUČETIĆ ZORAN
+VUČETIĆ ZORAN
+VUČETIN ŽIVAN
+VUČETIN MILORAD
+VUČETIN PETAR
+VUČETIN SOFIJA
+VUČETIN TODOR
+VUČEVAC ŽELIMIR
+VUČEVIĆ ALEKSANDAR
+VUČEVIĆ BOŽANA
+VUČEVIĆ VALERIJA
+VUČIČEVIĆ MILAN
+VUČIČEVIĆ NIKOLA
+VUČIĆ ŽARKO
+VUČIĆ ĐORĐE
+VUČIĆ ĐURĐINKA
+VUČIĆ BOGDAN
+VUČIĆ BRANISLAVA
+VUČIĆ DRAGAN
+VUČIĆ DUŠAN
+VUČIĆ DUŠAN
+VUČIĆ JELENA
+VUČIĆ JOVANKA
+VUČIĆ JOVAN
+VUČIĆ KATICA
+VUČIĆ MARGITA
+VUČIĆ MILAN
+VUČIĆ MILAN
+VUČIĆ MIROSLAV
+VUČIĆ NEVENKA
+VUČIĆ NIKOLA
+VUČIĆ RADMILA
+VUČIĆ SLOBODAN
+VUČIĆ TODOR
+VUČIĆ VESELIN
+VUČIĆEVIĆ ĐORĐE
+VUČIĆEVIĆ BOŽIDAR
+VUČIĆEVIĆ DUŠAN
+VUČIĆEVIĆ GORDANA
+VUČIĆEVIĆ MILAN
+VUČIĆEVIĆ MILAN
+VUČIĆEVIĆ MILENKO
+VUČIĆEVIĆ MILICA
+VUČIĆEVIĆ MIODRAG
+VUČIĆEVIĆ NADEŽDA
+VUČIĆEVIĆ PETAR
+VUČIĆEVIĆ SELIMIR
+VUČIĆEVIĆ VUKOSAV
+VUČINIĆ ANĐELIJA
+VUČINIĆ ANDRIJA
+VUČINIĆ DUŠAN
+VUČINIĆ GAVRILO
+VUČINIĆ JANJA
+VUČINIĆ JASMINKA
+VUČINIĆ LJILJANA DR
+VUČINIĆ LJUBOMIR
+VUČINIĆ MARIJA
+VUČINIĆ MILAN
+VUČINIĆ MILAN
+VUČINIĆ MILISAV
+VUČINIĆ MILUTIN
+VUČINIĆ MIODRAG
+VUČINIĆ MLADEN
+VUČINIĆ MLADEN
+VUČINIĆ PETAR
+VUČINIĆ RADMILA
+VUČINIĆ RADMILA
+VUČINIĆ RADMILA
+VUČINIĆ RAJKO
+VUČINIĆ VESNA
+VUČINIĆ VLADIMIR
+VUČINIĆ VUKMAN
+VUČINIĆ ZLATIBOR
+VUČINOVIĆ RADMILA
+VUČKOV BOJANA
+VUČKOV BRANISLAV
+VUČKOV MARELA
+VUČKOV MILOVAN
+VUČKOVAC DRAGAN
+VUČKOVAC RADE
+VUČKOVAC TOMISLAV
+VUČKOVIĆ ČASLAV
+VUČKOVIĆ ŽARKO
+VUČKOVIĆ ŽIVKO
+VUČKOVIĆ ĐORĐE
+VUČKOVIĆ ĐORĐE
+VUČKOVIĆ ANĐELKO
+VUČKOVIĆ ANA
+VUČKOVIĆ BOGDAN
+VUČKOVIĆ BRANISLAV
+VUČKOVIĆ BRANKO
+VUČKOVIĆ BRANKO
+VUČKOVIĆ DOBRILA
+VUČKOVIĆ DRAGAN
+VUČKOVIĆ DRAGO
+VUČKOVIĆ DUŠANKA
+VUČKOVIĆ DUŠAN
+VUČKOVIĆ DUŠAN
+VUČKOVIĆ DUŠAN
+VUČKOVIĆ DUŠAN
+VUČKOVIĆ DUBRAVKA
+VUČKOVIĆ EMIN
+VUČKOVIĆ EVICA
+VUČKOVIĆ GEORGIJE
+VUČKOVIĆ JANKO
+VUČKOVIĆ JANKO
+VUČKOVIĆ JOVAN
+VUČKOVIĆ JOVAN
+VUČKOVIĆ JOVAN
+VUČKOVIĆ JOVAN
+VUČKOVIĆ LJUBICA
+VUČKOVIĆ LUKA DIPL OEC
+VUČKOVIĆ MARA
+VUČKOVIĆ MARIJA
+VUČKOVIĆ MARKO
+VUČKOVIĆ MARKO
+VUČKOVIĆ MIHAJLO
+VUČKOVIĆ MIHAJLO
+VUČKOVIĆ MILAN
+VUČKOVIĆ MILAN
+VUČKOVIĆ MILENA
+VUČKOVIĆ MILOŠ
+VUČKOVIĆ MILOŠ
+VUČKOVIĆ MILOŠ
+VUČKOVIĆ MILOJKA
+VUČKOVIĆ MILORAD
+VUČKOVIĆ MIODRAG
+VUČKOVIĆ MIODRAG
+VUČKOVIĆ MIRKO
+VUČKOVIĆ MIROSLAV
+VUČKOVIĆ MOMČILO
+VUČKOVIĆ NADA DR
+VUČKOVIĆ NADA
+VUČKOVIĆ NEDELJKO
+VUČKOVIĆ NIKOLA VETERINAR
+VUČKOVIĆ NOVICA
+VUČKOVIĆ PAULINA
+VUČKOVIĆ-PEURAČA LJILJANA
+VUČKOVIĆ RADIVOJ
+VUČKOVIĆ RADOVAN
+VUČKOVIĆ SAVETA
+VUČKOVIĆ-SIMIĆ VESNA
+VUČKOVIĆ SINIŠA
+VUČKOVIĆ STEVAN
+VUČKOVIĆ STOJAN DR LEKAR
+VUČKOVIĆ STOJAN DR
+VUČKOVIĆ SVETLANA
+VUČKOVIĆ TAJSIJA
+VUČKOVIĆ TOMO
+VUČKOVIĆ VASA
+VUČKOVIĆ VLADISLAV
+VUČKOVIĆ VOJISLAV
+VUČKOVIĆ VUKICA
+VUČKOVIĆ VUKOSAVA
+VUČUREVIĆ ČEDO
+VUČUREVIĆ ĐORĐE
+VUČUREVIĆ ANĐELIJA
+VUČUREVIĆ BILJANA
+VUČUREVIĆ BLAŽO
+VUČUREVIĆ BOŠKO
+VUČUREVIĆ BRANISLAV
+VUČUREVIĆ DARINKA
+VUČUREVIĆ DRAGOMIR
+VUČUREVIĆ DUŠAN
+VUČUREVIĆ GORDANA
+VUČUREVIĆ JELENA
+VUČUREVIĆ MAŠA
+VUČUREVIĆ MILOŠ
+VUČUREVIĆ MIRKO
+VUČUREVIĆ MLADEN
+VUČUREVIĆ NADA
+VUČUREVIĆ NIKOLA
+VUČUREVIĆ PETAR
+VUČUREVIĆ TEREZIJA
+VUČUREVIĆ UROŠ
+VUČUREVIĆ VESNA
+VUČUREVIĆ VLADISLAVA
+VUČUREVIĆ VLADO
+VUČUREVIĆ VOJISLAV
+VUČUREVIĆ VOJO
+VUČUROVIĆ JASNA
+VUČUROVIĆ JOVAN
+VUČUROVIĆ MIRKO
+VUČUROVIĆ MIROSLAV
+VUČUROVIĆ MLADEN
+VUČUROVIĆ PREDRAG
+VUČUROVIĆ SLOBODAN DR
+VUŠTAR BOGDAN
+VUCELIĆ SLOBODAN DIPL ING
+VUCELJA DRAGAN
+VUCELJA MILOŠ
+VUCELJA-PETRONIJEVIĆ VERA
+VUCELJA TRIVUN
+VUCELJA VOJIN
+VUDRAG SAVO
+VUDRAG ZORAN
+VUDRAG ZORAN
+VUDRAKOVIĆ RATKO
+VUGDELIĆ DOBRIVOJ
+VUGDELIĆ VUK
+VUGLEC EDITA
+VUGRENIČEK ĐURA
+VUGRENIČEK MAGDA
+VUGRIN STEVAN
+VUGRINČIĆ ANKA
+VUGRINČIĆ FRANJO
+VUGRINČIĆ JAROSLAV
+VUGRINEC RUDOLF
+VUIĆ JOSIP
+VUJČIĆ DRAGAN
+VUJČIĆ MILE
+VUJČIĆ PETAR
+VUJČIĆ PETRIJA
+VUJČIN JOVAN
+VUJČIN MILAN
+VUJČIN MITA
+VUJAČIĆ DRAGUTIN
+VUJAČIĆ DUBRAVKA
+VUJAČIĆ MILISAV
+VUJAČIĆ MILORAD
+VUJAČIĆ MILORAD
+VUJAČIĆ NIKOLA
+VUJAČIĆ RADOSAV
+VUJAČIĆ RAJKO
+VUJAŠKOVIĆ SLAVKO
+VUJAŠKOVIĆ VLADIMIR
+VUJAŠKOVIĆ VLADISLAV
+VUJAŠKOVIĆ ZORA
+VUJACKOV ĐORĐE
+VUJACKOV ALEKSANDAR
+VUJACKOV JOVAN
+VUJADINOV DOBRIVOJE DIPL ING
+VUJADINOVIĆ BLAGOJE
+VUJADINOVIĆ BRANISLAVA
+VUJADINOVIĆ LJUBICA
+VUJADINOVIĆ MILAN
+VUJADINOVIĆ MILIVOJE
+VUJADINOVIĆ MILIVOJ
+VUJADINOVIĆ MILIVOJ
+VUJADINOVIĆ RADOŠ
+VUJADINOVIĆ RAJKO
+VUJADINOVIĆ SLAVICA
+VUJADINOVIĆ SVETOZAR
+VUJADINOVIĆ TOMISLAV
+VUJADINOVIĆ VERA
+VUJADINOVIĆ VIŠNJA
+VUJADINOVIĆ VITO
+VUJADINOVIĆ VOJISLAV
+VUJAKLIJA DESA
+VUJAKLIJA STANKO
+VUJAKOVIĆ ĐURAĐ
+VUJAKOVIĆ DRAGUTIN
+VUJAKOVIĆ KRSTAN
+VUJAKOVIĆ SLOBODAN
+VUJAKOVIĆ VASO
+VUJAKOVIĆ VUJO
+VUJANIĆ ŽIVOSAV
+VUJANIĆ ŽIVOSLAV
+VUJANIĆ BORIVOJ
+VUJANIĆ BRANKO
+VUJANIĆ GORDANA
+VUJANIĆ JORDAN
+VUJANIĆ KORNELIJA
+VUJANIĆ MILAN
+VUJANIĆ MILE
+VUJANIĆ MILOVAN
+VUJANIĆ NEDELJKA
+VUJANIĆ PETAR
+VUJANIĆ-VARGA DINKA DR
+VUJANOV ALEKSANDAR
+VUJANOV MILANKA
+VUJANOV NIKOLA
+VUJANOVIĆ ŽARKO
+VUJANOVIĆ ALEKSANDAR
+VUJANOVIĆ BOŠKO
+VUJANOVIĆ BOŽIDAR DR
+VUJANOVIĆ BOŽIDAR
+VUJANOVIĆ BORISLAV
+VUJANOVIĆ BRANKO
+VUJANOVIĆ DESIMIR
+VUJANOVIĆ DIMITRIJE
+VUJANOVIĆ DIMITRIJE
+VUJANOVIĆ DRAGICA
+VUJANOVIĆ JOVANKA
+VUJANOVIĆ JOVO
+VUJANOVIĆ MIJO
+VUJANOVIĆ MILAN
+VUJANOVIĆ MILE
+VUJANOVIĆ MILINKA
+VUJANOVIĆ MILORAD
+VUJANOVIĆ MIRKO
+VUJANOVIĆ MLADEN
+VUJANOVIĆ SIMO
+VUJANOVIĆ SLAVOLJUB
+VUJANOVIĆ STANA
+VUJANOVIĆ STOJAN
+VUJANOVIĆ VITOMIR
+VUJASIN STRAILO
+VUJASINOVIĆ ČEDOMIR
+VUJASINOVIĆ JELICA
+VUJASINOVIĆ LJUBOMIR
+VUJASINOVIĆ MARKO
+VUJASINOVIĆ MILAN
+VUJASINOVIĆ MIROSLAV
+VUJASINOVIĆ RADMILA
+VUJATOVIĆ MILENKO
+VUJATOVIĆ MIRJANA
+VUJATOVIĆ TEODOR
+VUJEVIĆ RUŽA
+VUJIČIĆ ĐORĐE
+VUJIČIĆ BISERKA
+VUJIČIĆ BOŽIDAR
+VUJIČIĆ CVETA
+VUJIČIĆ DANILO DR
+VUJIČIĆ DOBRILA
+VUJIČIĆ DRAGAN
+VUJIČIĆ DUŠAN
+VUJIČIĆ GOJKO
+VUJIČIĆ IGNJAT
+VUJIČIĆ ILIJA
+VUJIČIĆ IVICA DR PROF
+VUJIČIĆ MARKO
+VUJIČIĆ MIHAJLO
+VUJIČIĆ MILENKO
+VUJIČIĆ MILOŠ
+VUJIČIĆ MILOŠ
+VUJIČIĆ PETAR
+VUJIČIĆ PETRA
+VUJIČIĆ RADOSLAV
+VUJIČIĆ RANKO
+VUJIČIĆ RATKO
+VUJIČIĆ RATKO
+VUJIČIĆ SIMO
+VUJIČIĆ SLOBODAN
+VUJIČIĆ SRĐAN
+VUJIČIĆ STANKO
+VUJIČIĆ STEVAN
+VUJIČIĆ STOJAN DIPL ING
+VUJIČIĆ SVETKO
+VUJIČIĆ TOMISLAV
+VUJIČIĆ VASILIJE
+VUJIČIĆ VERA
+VUJIČIĆ VERICA
+VUJIČIĆ VLADIMIR
+VUJIČIĆ VOJIN
+VUJIČIN ŽARKO
+VUJIČIN ĐORĐE
+VUJIČIN ĐURĐICA
+VUJIČIN LJUBICA
+VUJIČIN PETAR
+VUJIĆ ŽARKO
+VUJIĆ ŽIVKO
+VUJIĆ ĐORĐE
+VUJIĆ ĐORĐE
+VUJIĆ ĐURĐIJA
+VUJIĆ ĐURA
+VUJIĆ ĐURA
+VUJIĆ ALEKSANDAR
+VUJIĆ ALEKSANDAR
+VUJIĆ ANĐELIJA
+VUJIĆ ANTE
+VUJIĆ ANTE
+VUJIĆ BORISLAV
+VUJIĆ BRANISLAV
+VUJIĆ BRANISLAV
+VUJIĆ BRANKA
+VUJIĆ DRAGA
+VUJIĆ DRAGA
+VUJIĆ DRAGINJA
+VUJIĆ DRAGOSLAVA
+VUJIĆ DRAGOSLAV
+VUJIĆ DUŠAN
+VUJIĆ IVAN DR
+VUJIĆ IVAN DR
+VUJIĆ IVANKA
+VUJIĆ JAKOB DR LEKAR
+VUJIĆ JOVAN
+VUJIĆ JOVAN
+VUJIĆ JOVO
+VUJIĆ KATARINA
+VUJIĆ-KOSO VESNA
+VUJIĆ LAZAR
+VUJIĆ LJUBAN
+VUJIĆ LJUBICA
+VUJIĆ MARIJA PROFESOR
+VUJIĆ MILAN
+VUJIĆ MILEVA
+VUJIĆ MILEVA
+VUJIĆ MILEVKA
+VUJIĆ MILICA
+VUJIĆ MILOŠ DR
+VUJIĆ MILOŠ
+VUJIĆ MILOŠ
+VUJIĆ MILOŠ
+VUJIĆ MIRA
+VUJIĆ MIROSLAV DIPL ING
+VUJIĆ MOMIR
+VUJIĆ NADA
+VUJIĆ NADA
+VUJIĆ PAVLE DR
+VUJIĆ PREDRAG
+VUJIĆ RADIVOJ
+VUJIĆ RADOSLAV
+VUJIĆ RATKA
+VUJIĆ SAVO
+VUJIĆ SAVO
+VUJIĆ SLAVKA
+VUJIĆ SOFIJA
+VUJIĆ STANKO
+VUJIĆ STANKO
+VUJIĆ STEVAN
+VUJIĆ STEVAN
+VUJIĆ STEVAN
+VUJIĆ VERA
+VUJIĆ VESNA
+VUJIĆ VLADIMIR
+VUJIĆ VLADIMIR
+VUJIĆ VOJISLAVA
+VUJIĆ ZORAN
+VUJIN ĐOKA
+VUJIN ĐURICA
+VUJIN ALEKSANDAR
+VUJIN DANICA
+VUJIN DAVID
+VUJIN JEVREM
+VUJIN JOVANKA
+VUJIN LAZAR
+VUJIN MARA
+VUJIN MELANIJA
+VUJIN MIRJANA
+VUJIN RADIVOJ
+VUJIN RADOVAN
+VUJIN SLAVKO
+VUJIN SLOBODAN
+VUJIN SVETOZAR
+VUJIN VUJADIN
+VUJINOVIĆ ŽIVKA
+VUJINOVIĆ ĐURA
+VUJINOVIĆ ĐURO
+VUJINOVIĆ BORISLAV
+VUJINOVIĆ BRANIMIR
+VUJINOVIĆ GNJATIJA
+VUJINOVIĆ JOVO
+VUJINOVIĆ LJUBOMIR
+VUJINOVIĆ MILOŠ
+VUJINOVIĆ MLADINKO
+VUJINOVIĆ NADA
+VUJINOVIĆ SRETEN
+VUJINOVIĆ STOJAN
+VUJINOVIĆ TEODOSIJE
+VUJINOVIĆ VERA
+VUJINOVIĆ VIDOJE
+VUJKO SAVA
+VUJKOV ČEDOMIR
+VUJKOV ĐORĐE
+VUJKOV ALEKSANDAR
+VUJKOV ANTINIJA
+VUJKOV BOŽIDAR
+VUJKOV BOŽIDAR
+VUJKOV DRAGICA
+VUJKOV DRAGINJA
+VUJKOV DRAGOLJUB
+VUJKOV DUŠAN
+VUJKOV DUŠAN
+VUJKOV-ISAKOV JAGICA
+VUJKOV JELENA
+VUJKOV LAZAR
+VUJKOV LAZAR
+VUJKOV MILAN DIPL ING
+VUJKOV MILANA
+VUJKOV MILANA
+VUJKOV MILAN
+VUJKOV MILAN
+VUJKOV MILENA
+VUJKOV MILICA
+VUJKOV MILICA
+VUJKOV MILIVOJ
+VUJKOV MIRJANA
+VUJKOV MIROSLAV DIPL ING
+VUJKOV MIROSLAV
+VUJKOV NADA
+VUJKOV NENAD
+VUJKOV OLGA
+VUJKOV PAVLE
+VUJKOV PERA
+VUJKOV PETAR DIPL PRAVNIK
+VUJKOV RADIVOJ
+VUJKOV RADOSLAV
+VUJKOV SAVA
+VUJKOV SAVA
+VUJKOV SENKA
+VUJKOV SIMA
+VUJKOV SLAVKO
+VUJKOV SLOBODAN
+VUJKOV SNEŽANA
+VUJKOV SNEŽANA
+VUJKOV STEVAN
+VUJKOV SVETOZAR
+VUJKOV TAMARA
+VUJKOV TOMISLAV
+VUJKOV VASA DR
+VUJKOV VESELIN DR PROF
+VUJKOV VLADIMIR
+VUJKOV ZDRAVKO
+VUJKOV ZDRAVKO
+VUJKOVIĆ ĐURA
+VUJKOVIĆ DRAGAN
+VUJKOVIĆ GORDANA
+VUJKOVIĆ GOSPAVA
+VUJKOVIĆ MIRA
+VUJKOVIĆ NIKOLA
+VUJKOVIĆ RUŽA
+VUJKOVIĆ SLOBODAN
+VUJKOVIĆ STEVAN
+VUJNOVIĆ ANKA
+VUJNOVIĆ BOSILJKA
+VUJNOVIĆ DRAGAN
+VUJNOVIĆ GOJKO
+VUJNOVIĆ GOJKO
+VUJNOVIĆ ILIJA
+VUJNOVIĆ-MIHAJLOVIĆ DESANKA
+VUJNOVIĆ MILAN
+VUJNOVIĆ MILAN
+VUJNOVIĆ VELJKO
+VUJNOVIĆ VERA
+VUJNOVIĆ ZORA
+VUJOŠEVIĆ BORISLAV
+VUJOŠEVIĆ BRANKO DIPL OEC
+VUJOŠEVIĆ DOBRISLAV
+VUJOŠEVIĆ DUŠAN
+VUJOŠEVIĆ KLARA
+VUJOŠEVIĆ LJUBOMIR
+VUJOŠEVIĆ MILAN
+VUJOŠEVIĆ NIKOLA
+VUJOŠEVIĆ RATKO
+VUJOŠEVIĆ ZORA
+VUJOVIĆ ĐORĐE
+VUJOVIĆ ALEKSANDAR
+VUJOVIĆ BLAŽO
+VUJOVIĆ BLAGOJE
+VUJOVIĆ BOŽIDAR
+VUJOVIĆ DANICA
+VUJOVIĆ DARINKA
+VUJOVIĆ DRAGOLJUB
+VUJOVIĆ DUŠAN
+VUJOVIĆ MARTA
+VUJOVIĆ MIHAILO
+VUJOVIĆ MILOMIR
+VUJOVIĆ MILORAD
+VUJOVIĆ MILORAD
+VUJOVIĆ MILORAD
+VUJOVIĆ MILOVAN
+VUJOVIĆ MIODRAG
+VUJOVIĆ MIOMIR
+VUJOVIĆ MIRJANA
+VUJOVIĆ NEĐELJKO
+VUJOVIĆ NEĐO
+VUJOVIĆ NOVICA
+VUJOVIĆ OLGA
+VUJOVIĆ PAVLE
+VUJOVIĆ PAVLE
+VUJOVIĆ PETKO
+VUJOVIĆ RADIVOJE
+VUJOVIĆ RADIVOJ
+VUJOVIĆ RADOJE
+VUJOVIĆ RATKO
+VUJOVIĆ SLOBODAN
+VUJOVIĆ SLOBODAN
+VUJOVIĆ STEVAN
+VUJOVIĆ SVETISLAV
+VUJOVIĆ VASILIJE
+VUJOVIĆ VASILIJE
+VUJOVIĆ VASILIJE
+VUJOVIĆ VELJKO
+VUJOVIĆ VESELIN
+VUJOVIĆ VLADO
+VUJOVIĆ VLAJKO
+VUJOVIĆ VLATKO
+VUJOVIĆ VOJISLAV
+VUJOVIĆ VOJISLAV
+VUJOVIĆ VOJISLAV
+VUJOVIĆ VUKICA
+VUJOVIĆ ZORAN
+VUKČEVIĆ DUŠAN
+VUKČEVIĆ GORDANA
+VUKČEVIĆ JOVAN
+VUKČEVIĆ KRSTO
+VUKČEVIĆ LJUBOMIR
+VUKČEVIĆ LJUBOMIR
+VUKČEVIĆ MILENKO
+VUKČEVIĆ MILENKO
+VUKČEVIĆ PETAR
+VUKČEVIĆ SAVO
+VUKČEVIĆ SOFIJA
+VUKČEVIĆ STEVAN
+VUKČEVIĆ ZORAN
+VUKŠA ČEDO
+VUKŠA ŽELJKO
+VUKŠA BORIVOJE
+VUKŠA LAZAR
+VUKŠA MILENKO
+VUKŠA MILUTIN
+VUKŠA PETAR
+VUKŠA VJERA
+VUKAŠEVIĆ MILO
+VUKAŠEVIĆ SLOBODAN
+VUKAŠIN JOVAN
+VUKAŠINOV BRANIMIR
+VUKAŠINOV CVETKO
+VUKAŠINOV STEVAN
+VUKAŠINOVIĆ ŽARKO
+VUKAŠINOVIĆ ŽIVAN
+VUKAŠINOVIĆ ĐORĐE
+VUKAŠINOVIĆ BOŽIDAR
+VUKAŠINOVIĆ BOJAN
+VUKAŠINOVIĆ DRAGAN
+VUKAŠINOVIĆ DRAGINJA
+VUKAŠINOVIĆ DRAGOLJUB
+VUKAŠINOVIĆ IRENA
+VUKAŠINOVIĆ IRENA
+VUKAŠINOVIĆ LAZAR
+VUKAŠINOVIĆ LAZAR
+VUKAŠINOVIĆ MILAN
+VUKAŠINOVIĆ MILE
+VUKAŠINOVIĆ MILICA
+VUKAŠINOVIĆ MIRA
+VUKAŠINOVIĆ MIRJANA
+VUKAŠINOVIĆ MIROSLAV
+VUKAŠINOVIĆ MOMIR
+VUKAŠINOVIĆ NIKOLA
+VUKAŠINOVIĆ PAVLE
+VUKAŠINOVIĆ RADOJE
+VUKAŠINOVIĆ SPOMENKA
+VUKAŠINOVIĆ STOJAN
+VUKAŠINOVIĆ VERA
+VUKAŠINOVIĆ VERICA
+VUKAŠINOVIĆ VESELIN
+VUKAŠINOVIĆ VIDA
+VUKAŠINOVIĆ ZDRAVKO
+VUKADIN DOBRIVOJE
+VUKADIN TOMISLAV
+VUKADINOV ĐORĐE
+VUKADINOV ĐURA
+VUKADINOV BOJKA
+VUKADINOV BRANISLAV
+VUKADINOV ISIDOR
+VUKADINOV IVANKA
+VUKADINOV IVANKA
+VUKADINOV JOVAN
+VUKADINOV KATICA
+VUKADINOV MILENKO
+VUKADINOV MIODRAG
+VUKADINOV NENAD
+VUKADINOVIĆ ANĐELKO
+VUKADINOVIĆ BILJANA
+VUKADINOVIĆ BOSILJKA
+VUKADINOVIĆ BRANISLAV
+VUKADINOVIĆ BRANISLAV
+VUKADINOVIĆ BRANISLAV
+VUKADINOVIĆ BRANKO
+VUKADINOVIĆ GABRIJELA PROFESOR
+VUKADINOVIĆ JELICA
+VUKADINOVIĆ LEPOSAVA
+VUKADINOVIĆ LJUBO
+VUKADINOVIĆ MILENKO
+VUKADINOVIĆ MILIVOJE
+VUKADINOVIĆ MILJOJKO
+VUKADINOVIĆ MILOŠ
+VUKADINOVIĆ MILOJE
+VUKADINOVIĆ MILORAD
+VUKADINOVIĆ NIKOLA
+VUKADINOVIĆ PAVLE DR
+VUKADINOVIĆ PETAR
+VUKADINOVIĆ PETAR
+VUKADINOVIĆ SOFIJA LOKAL
+VUKADINOVIĆ SOFIJA
+VUKADINOVIĆ STANA
+VUKADINOVIĆ STEVAN DR
+VUKADINOVIĆ SVETOZAR
+VUKADINOVIĆ SVETOZAR
+VUKADINOVIĆ TATJANA
+VUKADINOVIĆ VELIZAR
+VUKADINOVIĆ VLADISAV
+VUKADINOVIĆ ZOLIKA
+VUKADINOVIĆ ZOLIKA
+VUKAJLOV BUDIMIR
+VUKAJLOV MIROSLAV
+VUKAJLOVIĆ ŽIVAN PROFESOR
+VUKAJLOVIĆ ĐORĐE
+VUKAJLOVIĆ ANKICA
+VUKAJLOVIĆ DANILO
+VUKAJLOVIĆ DARINKA
+VUKAJLOVIĆ DUŠAN
+VUKAJLOVIĆ ELIZABETA
+VUKAJLOVIĆ LAZAR
+VUKAJLOVIĆ MILENA
+VUKAJLOVIĆ MIRJANA
+VUKAJLOVIĆ SRETO
+VUKAJLOVIĆ STEVAN
+VUKALIĆ MUMIN
+VUKALJEVIĆ ILIJA
+VUKALJEVIĆ SLAVKO
+VUKALOVIĆ SVETLANA
+VUKANIĆ ALEKSANDAR
+VUKANIĆ PETAR
+VUKANIĆ SRETEN
+VUKANIĆ ZORAN
+VUKANIĆ ZORAN
+VUKANOVIĆ ŽIVKA
+VUKANOVIĆ ANICA
+VUKANOVIĆ MARINA
+VUKANOVIĆ MIROSLAV
+VUKANOVIĆ NEBOJŠA
+VUKANOVIĆ RADIVOJ
+VUKANOVIĆ SLAVIMIR
+VUKANOVIĆ SLOBODAN
+VUKANOVIĆ SLOBODAN
+VUKAS ĐORĐE
+VUKAS ĐURO
+VUKAS ANKICA
+VUKAS BRANKO
+VUKAS OMERKA
+VUKASOVIĆ BRANISLAV
+VUKASOVIĆ MARIJA
+VUKASOVIĆ MILAN
+VUKASOVIĆ SLAVICA
+VUKAVIĆ ALEKSANDRA
+VUKELIĆ ANĐELKA
+VUKELIĆ BORISLAV
+VUKELIĆ BRANKO
+VUKELIĆ BRANKO
+VUKELIĆ DARA
+VUKELIĆ DRAGAN
+VUKELIĆ JOVAN
+VUKELIĆ LJUBOMIR
+VUKELIĆ MILAN
+VUKELIĆ MILE
+VUKELIĆ MILICA
+VUKELIĆ MIODRAG
+VUKELIĆ MOMIR
+VUKELIĆ PAVLE
+VUKELIĆ PETAR
+VUKELIĆ PETAR
+VUKELIĆ RADA
+VUKELIĆ RADE
+VUKELIĆ SILVIJE
+VUKELIĆ SIMO
+VUKELIĆ SLAVKO
+VUKELIĆ STEVAN
+VUKELIĆ STEVAN
+VUKELIĆ TOMISLAV
+VUKELIĆ VELJKO
+VUKELIĆ VERICA
+VUKELIĆ VESNA
+VUKELIĆ VUKICA
+VUKELIĆ ZDRAVKO DR
+VUKELIĆ ZORICA
+VUKELIĆ ZVONIMIR
+VUKELJA BRANKA
+VUKIČEVIĆ DRAGOMIR
+VUKIČEVIĆ LJILJANA
+VUKIČEVIĆ MILAN
+VUKIČEVIĆ MILAN
+VUKIČEVIĆ MILAN
+VUKIČEVIĆ MITAR DIPL PRAVNIK
+VUKIČEVIĆ RANKO
+VUKIČEVIĆ SPASOJE
+VUKIČEVIĆ VESNA
+VUKIĆ-ĆULAFIĆ BRANKA
+VUKIĆ ŽIVKO
+VUKIĆ ANDREJ
+VUKIĆ BOŽIDAR
+VUKIĆ BORISLAV
+VUKIĆ BRANKO
+VUKIĆ BRANKO
+VUKIĆ BUDIMIR
+VUKIĆ DEJAN
+VUKIĆ DIMITRIJE
+VUKIĆ DUŠAN
+VUKIĆ IVANKA
+VUKIĆ JOVAN
+VUKIĆ LJUBICA
+VUKIĆ LJUBOMIR
+VUKIĆ MARIJA
+VUKIĆ MILAN
+VUKIĆ MILICA
+VUKIĆ MIRJANA
+VUKIĆ MIRKO
+VUKIĆ MOMČILO
+VUKIĆ NIKOLA
+VUKIĆ NIKOLA
+VUKIĆ NOVAK
+VUKIĆ PETAR
+VUKIĆ STANKO
+VUKIĆ STEVAN
+VUKIĆ VELIMIR
+VUKIĆ VLADO
+VUKIĆ VUKAŠIN
+VUKIĆEVIĆ ĐORĐE
+VUKIĆEVIĆ ĐORĐE
+VUKIĆEVIĆ ALEKSANDAR
+VUKIĆEVIĆ BRATISLAV
+VUKIĆEVIĆ DRAGICA
+VUKIĆEVIĆ DUŠANKA
+VUKIĆEVIĆ ISIDOR
+VUKIĆEVIĆ ISIDOR
+VUKIĆEVIĆ MIOMIR
+VUKIĆEVIĆ MIROSLAV
+VUKIĆEVIĆ MIROSLAV
+VUKIĆEVIĆ MOMČILO DR
+VUKIĆEVIĆ STANIŠA
+VUKIĆEVIĆ TOMA
+VUKIĆEVIĆ VELJKO
+VUKLIŠ DRAGAN
+VUKLIŠ SLOBODAN
+VUKMANOVIĆ DANILO
+VUKMANOVIĆ LJUBA
+VUKMANOVIĆ MILANA
+VUKMANOVIĆ MILAN
+VUKMANOVIĆ NENAD
+VUKMANOVIĆ PETAR
+VUKMANOVIĆ SIMO
+VUKMANOVIĆ VELIMIR
+VUKMANOVIĆ VERA
+VUKMIROVIĆ ĐORĐE
+VUKMIROVIĆ ĐORĐE
+VUKMIROVIĆ BOŽIDAR
+VUKMIROVIĆ BRANKO
+VUKMIROVIĆ BRANKO
+VUKMIROVIĆ DANE
+VUKMIROVIĆ DRAGAN
+VUKMIROVIĆ GOJKO
+VUKMIROVIĆ ILIJA
+VUKMIROVIĆ ILIJA
+VUKMIROVIĆ ILIJA
+VUKMIROVIĆ JANJA
+VUKMIROVIĆ LJUBOMIR
+VUKMIROVIĆ MILAN
+VUKMIROVIĆ MILAN
+VUKMIROVIĆ MILICA
+VUKMIROVIĆ MILOŠ
+VUKMIROVIĆ MILO
+VUKMIROVIĆ NIKOLA
+VUKMIROVIĆ PETAR
+VUKMIROVIĆ RANKO
+VUKMIROVIĆ RANKO
+VUKMIROVIĆ RODOLJUB
+VUKMIROVIĆ SMILJKA
+VUKMIROVIĆ SREĆKO
+VUKMIROVIĆ VELINKA
+VUKMIROVIĆ VUKICA
+VUKMIROVIĆ ZDRAVKA
+VUKNIĆ MARIJAN
+VUKOBRAD DRAGO
+VUKOBRAD LJUBOMIR
+VUKOBRAD MARKO
+VUKOBRAD MILOŠ
+VUKOBRAT DANICA
+VUKOBRAT DRAGAN
+VUKOBRAT JOŠO
+VUKOBRAT LJUBOMIR
+VUKOBRAT MILAN
+VUKOBRAT NIKOLA
+VUKOBRAT PETAR
+VUKOBRAT TATJANA
+VUKOBRAT ZDRAVKO
+VUKOBRATOV RADOVAN DIPL ING
+VUKOBRATOV SLOBODAN
+VUKOBRATOVIĆ BOGDAN
+VUKOBRATOVIĆ DANICA
+VUKOBRATOVIĆ JOVAN
+VUKOBRATOVIĆ MIRJANA
+VUKOBRATOVIĆ NADA
+VUKOBRATOVIĆ SLAVICA
+VUKOJČIĆ DUŠAN
+VUKOJA ANTUN
+VUKOJE DUŠAN
+VUKOJE GAŠO
+VUKOJE ILIJA
+VUKOJE JOVAN
+VUKOJE MILANA
+VUKOJE RADIVOJE
+VUKOJE RADMILA
+VUKOJE RADOVAN
+VUKOJE VANJA
+VUKOJE VOJO
+VUKOJEV BOGDAN
+VUKOJEV DUŠAN
+VUKOJEV DUŠAN
+VUKOJEV SLOBODAN
+VUKOJEVIĆ ĐURO
+VUKOJEVIĆ MARA
+VUKOJEVIĆ MIĆO
+VUKOJEVIĆ MIODRAG
+VUKOJEVIĆ NIKO
+VUKOJEVIĆ VERICA
+VUKOJEVIĆ VIDOSAV
+VUKOJEVIĆ ZORAN
+VUKOJIČIĆ BORISLAV
+VUKOJIČIĆ DRAGAN
+VUKOJIČIĆ MIODRAG
+VUKOJIČIĆ MIODRAG
+VUKOJIČIĆ SLAVOLJUB
+VUKOMAN EMILIJA
+VUKOMAN MILORAD
+VUKOMAN RADA
+VUKOMAN ZORAN
+VUKOMAN ZORKA
+VUKOMANOV JOVAN
+VUKOMANOVIĆ ANDRIJA
+VUKOMANOVIĆ KATICA
+VUKOMANOVIĆ NIKOLA
+VUKOMANOVIĆ RADOMIR
+VUKOMANOVIĆ SLAVKO
+VUKOSAV BORIVOJE
+VUKOSAV BORKO DR
+VUKOSAV DOBRILA
+VUKOSAV JOVO
+VUKOSAV MILOVAN
+VUKOSAV RADE
+VUKOSAV SENKA
+VUKOSAV VLAJKO
+VUKOSAVLJEV BOGDANKA
+VUKOSAVLJEV DANICA
+VUKOSAVLJEV DRAGICA
+VUKOSAVLJEV JELENA
+VUKOSAVLJEV LAZAR
+VUKOSAVLJEV MAKSA
+VUKOSAVLJEV MILAN
+VUKOSAVLJEV PETAR
+VUKOSAVLJEV SAVA
+VUKOSAVLJEV SLAVICA
+VUKOSAVLJEV STEVAN
+VUKOSAVLJEV VOJIN DIPL ING
+VUKOSAVLJEVIĆ ANĐELKA
+VUKOSAVLJEVIĆ BARBARA
+VUKOSAVLJEVIĆ CVIJETIN
+VUKOSAVLJEVIĆ DRAGICA
+VUKOSAVLJEVIĆ IVAN
+VUKOSAVLJEVIĆ LJUBICA
+VUKOSAVLJEVIĆ LUKA
+VUKOSAVLJEVIĆ MARA
+VUKOSAVLJEVIĆ MILENKO
+VUKOSAVLJEVIĆ MILORAD
+VUKOSAVLJEVIĆ MIRA
+VUKOSAVLJEVIĆ MIROSLAV
+VUKOSAVLJEVIĆ PAVLE
+VUKOSAVLJEVIĆ SLOBODAN
+VUKOSAVLJEVIĆ STOJAN
+VUKOSLAVČEVIĆ NIKOLA
+VUKOSLAVČEVIĆ ZARIJE
+VUKOSLAVOVIĆ RADONJA
+VUKOTA MARKO
+VUKOTA MILAN
+VUKOTIĆ BRANKO
+VUKOTIĆ IVA
+VUKOTIĆ KATARINA
+VUKOTIĆ-KOVAČEVIĆ BILJANA
+VUKOTIĆ LUKA
+VUKOTIĆ MARA
+VUKOTIĆ MARIJA
+VUKOTIĆ MILAN
+VUKOTIĆ MILICA
+VUKOTIĆ MIODRAG
+VUKOTIĆ NENAD
+VUKOTIĆ NIKOLA
+VUKOTIĆ OLGA
+VUKOTIĆ PERIŠA
+VUKOTIĆ RADOJE
+VUKOTIĆ RADOVAN
+VUKOTIĆ SOFIJA
+VUKOTIĆ ZORICA
+VUKOV ŽIVKO
+VUKOV ĐORĐE
+VUKOV ĐORĐE
+VUKOV BOŠKO
+VUKOV BOŠKO
+VUKOV BOŽANA
+VUKOV BRANISLAV
+VUKOV BRANISLAV
+VUKOV DRAGAN
+VUKOV DRAGOLJUB
+VUKOV JOVAN
+VUKOV JOVAN
+VUKOV LAZAR
+VUKOV LJUBOMIR
+VUKOV MARIJA
+VUKOV MARKO
+VUKOV NIKOLIJA
+VUKOV OLGA
+VUKOV STEVICA
+VUKOV VUKAŠIN
+VUKOVAC DRAGAN
+VUKOVAC PANTA
+VUKOVIĆ ŠTEFICA
+VUKOVIĆ ŽIVKO
+VUKOVIĆ ŽIVOJIN
+VUKOVIĆ ĐORĐE
+VUKOVIĆ ĐUKA
+VUKOVIĆ ALEKSANDAR
+VUKOVIĆ ALEKSANDRA
+VUKOVIĆ ALEKSIJA
+VUKOVIĆ ANDRIJA
+VUKOVIĆ ANTO
+VUKOVIĆ BILJANA
+VUKOVIĆ BLAŽO
+VUKOVIĆ BLAGOJE
+VUKOVIĆ BOŠKO
+VUKOVIĆ BOŠKO
+VUKOVIĆ BOGIĆ
+VUKOVIĆ BOJANA
+VUKOVIĆ BOJANA
+VUKOVIĆ BORIŠA
+VUKOVIĆ BORIŠA
+VUKOVIĆ BORIVOJ
+VUKOVIĆ BOSILJKA
+VUKOVIĆ BRANISLAV
+VUKOVIĆ BUDIMIR
+VUKOVIĆ CVETKO
+VUKOVIĆ DARINKA
+VUKOVIĆ DOBRIVOJE
+VUKOVIĆ DRAGAN
+VUKOVIĆ DRAGAN
+VUKOVIĆ DRAGOLJUB
+VUKOVIĆ DRAGOSLAV
+VUKOVIĆ DRAGO
+VUKOVIĆ DUŠAN DR LEKAR
+VUKOVIĆ DUŠANKA
+VUKOVIĆ DUŠAN
+VUKOVIĆ DUŠAN
+VUKOVIĆ GEZA NOVINAR
+VUKOVIĆ GOJKO
+VUKOVIĆ GORAN
+VUKOVIĆ GORDANA
+VUKOVIĆ ILIJA
+VUKOVIĆ ILIJA
+VUKOVIĆ IVAN
+VUKOVIĆ IVAN
+VUKOVIĆ IVICA
+VUKOVIĆ JASMINA
+VUKOVIĆ JELICA
+VUKOVIĆ JOSIP
+VUKOVIĆ JOVA
+VUKOVIĆ JULIJANA
+VUKOVIĆ JULIJANA
+VUKOVIĆ LJUBAN
+VUKOVIĆ MARGARETA
+VUKOVIĆ MARJENKA
+VUKOVIĆ MATO
+VUKOVIĆ MILADIN
+VUKOVIĆ MILAN
+VUKOVIĆ MILAN
+VUKOVIĆ MILENA
+VUKOVIĆ MILENA
+VUKOVIĆ MILENKO
+VUKOVIĆ MILIVOJE
+VUKOVIĆ MILIVOJE
+VUKOVIĆ MILIVOJE
+VUKOVIĆ MILIVOJ
+VUKOVIĆ MILJAN
+VUKOVIĆ MILKA
+VUKOVIĆ MILKA
+VUKOVIĆ MILORAD
+VUKOVIĆ MILUTIN
+VUKOVIĆ MILUTIN
+VUKOVIĆ MIODRAG
+VUKOVIĆ MIODRAG
+VUKOVIĆ MIRJANA
+VUKOVIĆ MIRJANA
+VUKOVIĆ MIRKO
+VUKOVIĆ MIRKO
+VUKOVIĆ MIROJE
+VUKOVIĆ MIROSLAV
+VUKOVIĆ MIROSLAV
+VUKOVIĆ MITAR
+VUKOVIĆ MITAR
+VUKOVIĆ MITA
+VUKOVIĆ MLADEN
+VUKOVIĆ NADA
+VUKOVIĆ NADA
+VUKOVIĆ NEDA
+VUKOVIĆ OBRAD
+VUKOVIĆ OBRAD
+VUKOVIĆ OLGICA
+VUKOVIĆ OLGICA
+VUKOVIĆ PETAR
+VUKOVIĆ PETAR
+VUKOVIĆ PETAR
+VUKOVIĆ RADENKO
+VUKOVIĆ RADE
+VUKOVIĆ RADOSLAV
+VUKOVIĆ RADOVAN
+VUKOVIĆ RATKO
+VUKOVIĆ SAVA
+VUKOVIĆ SENKA
+VUKOVIĆ SIMA
+VUKOVIĆ SLOBODAN
+VUKOVIĆ SLOBODAN
+VUKOVIĆ SREĆKO
+VUKOVIĆ SREDOJE
+VUKOVIĆ STANKA
+VUKOVIĆ STANKA
+VUKOVIĆ STIPA
+VUKOVIĆ SVETISLAV
+VUKOVIĆ SVETLANA
+VUKOVIĆ SVETLANA
+VUKOVIĆ-TAVČIOSKA ALEKSANDRA
+VUKOVIĆ TODOR
+VUKOVIĆ TOMISLAV
+VUKOVIĆ VESNA
+VUKOVIĆ VIDAK
+VUKOVIĆ VINKA
+VUKOVIĆ VLADIMIR
+VUKOVIĆ VLADIMIR
+VUKOVIĆ VLADIMIR
+VUKOVIĆ VLADISLAV DR
+VUKOVIĆ VLATKO DIPL ING
+VUKOVIĆ VOJISLAV
+VUKOVIĆ VOJKO
+VUKOVIĆ VUČIĆ
+VUKOVIĆ VUKAŠIN
+VUKOVIĆ ZORAN
+VUKOVIĆ ZORAN
+VUKOVIĆ ZORAN
+VUKOVIĆ ZORAN
+VUKOVIĆ ZORAN
+VUKOVLJAK BOSILJKA
+VUKOVLJAK EVICA
+VUKOVLJAK MIRKO
+VUKOVLJAK VOJIN
+VUKOVOJAC OLGA
+VUKOVOJAC VOJISLAV
+VUKSAN MILAN
+VUKSAN MILIVOJ
+VUKSAN MIODRAG
+VUKSAN NIKOLA
+VUKSAN RADOSLAV PROFESOR
+VUKSAN RUŽICA
+VUKSAN SVETOZAR
+VUKSAN VUKOSAVA
+VUKSANOV LJUBICA
+VUKSANOV VOJISLAV
+VUKSANOVIĆ ŽIVORAD
+VUKSANOVIĆ ALEKSANDAR
+VUKSANOVIĆ ALEKSANDAR
+VUKSANOVIĆ DARKO
+VUKSANOVIĆ DESANKA
+VUKSANOVIĆ GORAN
+VUKSANOVIĆ GORDANA
+VUKSANOVIĆ JOVAN
+VUKSANOVIĆ MILE
+VUKSANOVIĆ MILISAV
+VUKSANOVIĆ MILORAD
+VUKSANOVIĆ MIODRAG
+VUKSANOVIĆ MIRO
+VUKSANOVIĆ SAVO
+VUKSANOVIĆ STEVANKA
+VUKSIĆ STEVO
+VUKSIĆ VELIMIR
+VUKUŠIĆ ANTE
+VULANOVIĆ RELJA
+VULANOVIĆ VOJISLAV
+VULETA BOJAN
+VULETA PREDRAG
+VULETA RISTO
+VULETIĆ ŽELJKO
+VULETIĆ ĐORĐIJE
+VULETIĆ ANDRIJA
+VULETIĆ BORISLAV
+VULETIĆ BRANISLAVA
+VULETIĆ BRANKO
+VULETIĆ BRANKO
+VULETIĆ DANICA DR
+VULETIĆ DIMITRIJE
+VULETIĆ JELENA
+VULETIĆ JELICA PROFESOR
+VULETIĆ MILADIN
+VULETIĆ MILAN VETERINAR
+VULETIĆ MILE
+VULETIĆ MILIVOJ
+VULETIĆ MLADEN
+VULETIĆ NADEŽDA
+VULETIĆ NEDELJKO
+VULETIĆ NIKOLA
+VULETIĆ OBRAD
+VULETIĆ RADOVAN
+VULETIĆ SRĐAN
+VULETIĆ VASILIJE
+VULETIĆ VIDOSAVA
+VULETIĆ VITOMIR
+VULETIĆ VLADIMIR
+VULETIĆ VLASTIMIR
+VULETIĆ ZORICA
+VULETIN ZORA
+VULEVIĆ ČEDOMIR
+VULEVIĆ ČEDOMIR
+VULEVIĆ ČEDOMIR
+VULEVIĆ SPASOJE
+VULIĆ ŽIKA
+VULIĆ ĐORĐE
+VULIĆ ĐORĐE
+VULIĆ BOŽIDAR
+VULIĆ BORISLAV
+VULIĆ BRANISLAV
+VULIĆ BRANISLAV
+VULIĆ DARINKA
+VULIĆ DESANKA
+VULIĆ DRAGOLJUB
+VULIĆ ILIJA
+VULIĆ JAVORKA
+VULIĆ JELENA
+VULIĆ JELENA
+VULIĆ JOVAN
+VULIĆ JOVAN
+VULIĆ JOVAN
+VULIĆ LUKA
+VULIĆ LUKA
+VULIĆ MILANKA
+VULIĆ MILAN
+VULIĆ MILIVOJE
+VULIĆ MILORAD
+VULIĆ MILORAD
+VULIĆ MIROSLAV
+VULIĆ MLADEN
+VULIĆ MOMČILO
+VULIĆ NIKOLA
+VULIĆ PETKO
+VULIĆ SLAVICA
+VULIĆ SLAVKO
+VULIĆ STEVAN
+VULIĆ ZLATA
+VULIĆ ZLATIJA
+VULIKIĆ LUKA
+VULIKIĆ RUŽICA
+VULIKIĆ VESELIN
+VULIKIĆ VOJISLAV
+VULIN ANGELINA
+VULIN BRANISLAV
+VULIN GOJKO
+VULIN JULKA
+VULIN MLADEN
+VULIN NENAD
+VULIN NENAD
+VULIN PREDRAG
+VULIN RADOMIR
+VULIN STEVAN
+VULIN VUKAŠIN
+VULJAJ VASELJ
+VULJEVIĆ ĐOKA
+VULKANI GORDANA
+VULOVIĆ DRAGICA
+VULOVIĆ DRAGOŠ
+VULOVIĆ DRAGOLJUB
+VULOVIĆ DRAGOMIR
+VULOVIĆ GORAN
+VULOVIĆ PETAR
+VULOVIĆ RAJKO
+VULOVIĆ SAVO
+VULOVIĆ SLAVIŠA
+VULOVIĆ VLADIMIR
+VULOVIĆ VUKICA
+VULSANOVIĆ ILKA
+VUNDERLIH JOSIP
+VUNDUK MIROSLAVA
+VUNIĆ MILJENKO
+VUNIĆ PETAR
+VUNIĆ RADOJKA
+VUNJAK ĐORĐE
+VUNJAK BRANISLAVA
+VUNJAK DUŠAN
+VURDELJA NEMANJA DR PROF
+VURDELJA SOFIJA
+VURDELJA VASA
+VURST JOVANKA
+VURUNA BRANKO
+VURUNA MARIJA
+VURUNIĆ ZDRAVKO
+ZABLEĆANSKI VLADA
+ZABRDAC MILAN
+ZABUNOV VLADIMIR
+ZADOR ANDRIJA DR IURE
+ZADRAVEC JOSIP
+ZADRO NIKOLA
+ZAFIROVIĆ BRANKO
+ZAGA MILAN
+ZAGAJČAN KOSTA
+ZAGORČIĆ ŽARKO
+ZAGORČIĆ ŽIVKO
+ZAGORČIĆ ŽIVKO
+ZAGORČIĆ ĐORĐE
+ZAGORČIĆ ĐORĐE
+ZAGORČIĆ ĐORĐE
+ZAGORČIĆ ALEKSANDAR
+ZAGORČIĆ ANGELINA
+ZAGORČIĆ BORISLAV
+ZAGORČIĆ BORISLAV
+ZAGORČIĆ DRAGOLJUB
+ZAGORČIĆ GAVRA
+ZAGORČIĆ GLIGORIJE
+ZAGORČIĆ GORAN
+ZAGORČIĆ ILIJA
+ZAGORČIĆ ILIJA
+ZAGORČIĆ IRENA
+ZAGORČIĆ JASMINA
+ZAGORČIĆ JELENA
+ZAGORČIĆ JOVAN
+ZAGORČIĆ JOVAN
+ZAGORČIĆ KRISTINA
+ZAGORČIĆ LAZAR
+ZAGORČIĆ LAZAR
+ZAGORČIĆ LAZA
+ZAGORČIĆ MARIJA
+ZAGORČIĆ MILAN
+ZAGORČIĆ MILAN
+ZAGORČIĆ MILICA
+ZAGORČIĆ MILIVOJE
+ZAGORČIĆ MILIVOJ
+ZAGORČIĆ MILIVOJ
+ZAGORČIĆ MILOŠ
+ZAGORČIĆ MILOSAV
+ZAGORČIĆ-ORŠOŠ DRAGANA
+ZAGORČIĆ PANTA
+ZAGORČIĆ PETAR
+ZAGORČIĆ PETAR
+ZAGORČIĆ PREDRAG
+ZAGORČIĆ RADIVOJ
+ZAGORČIĆ RADOSLAV
+ZAGORČIĆ SLOBODAN
+ZAGORČIĆ STEVAN
+ZAGORČIĆ SVETISLAV
+ZAGORČIĆ SVETOZAR
+ZAGORČIĆ UROŠ
+ZAGORČIĆ VASA
+ZAGORČIĆ VASA
+ZAGORČIĆ VASA
+ZAGORČIĆ VUKOSAVA
+ZAGORČIĆ ZIJAH
+ZAGORAC BOŽICA
+ZAGORAC DIMITRIJE
+ZAGORAC DUŠAN
+ZAGORAC IVAN
+ZAGORAC MARIJA
+ZAGORAC MILENA
+ZAGORAC MILICA
+ZAGORAC MILICA
+ZAGORAC NEDELJKO
+ZAGORAC NIKOLA
+ZAGORAC NIKOLA
+ZAGORAC OSTOJA
+ZAGORAC PETAR
+ZAGORAC RAJKO
+ZAGORAC RUŽICA
+ZAGORAC SIMO
+ZAGORAC VALKO
+ZAGOREC JOSIP
+ZAGORICA OZREN
+ZAGRAĐA BAJIRAM
+ZAHARIJEVIĆ BOGDAN
+ZAHORAI JOVAN
+ZAHOREC ZUZANA
+ZAHORODNI ANTON
+ZAHORODNI IVAN
+ZAIMOVIĆ MUHAREM
+ZAJZOV JELENA
+ZAKANJ ARPAD
+ZAKANJ LAJOŠ
+ZAKANJ MIRKO
+ZAKANJ-TOBOLKA EVA
+ZAKIĆ ĐORĐE
+ZAKIĆ BOŽIDAR
+ZAKIĆ DIMITRIJE
+ZAKIĆ DOBRIVOJ
+ZAKIĆ DOBRIVOJ
+ZAKIĆ IVAN
+ZAKIĆ MILAN
+ZAKIĆ SAVA
+ZAKLAN ĐURA
+ZAKLAN MILAN
+ZAKLAN NEGICA
+ZAKLAN RANKO
+ZAKLAN SLOBODAN
+ZAKLAN STANIŠA
+ZAKLAN TIHOMIR
+ZAKLAN TOMISLAV
+ZALIS GEORGIJE
+ZALIS JANIS
+ZAMAKLAR ZORAN
+ZAMOLO EDUARD
+ZAMUROVIĆ ALEKSANDAR
+ZAMUROVIĆ BOJANA
+ZAMUROVIĆ KOSTA
+ZAMUROVIĆ MILENA
+ZAMUROVIĆ OLGA DR
+ZAMUROVIĆ STOJAN
+ZANOVJAK PETER
+ZAPUNIDIS LEONIDAS
+ZARECKI ROZALIJA
+ZARIČNI VERICA
+ZARIČNI VERONIKA
+ZARIĆ ĐORĐE
+ZARIĆ ĐORĐE
+ZARIĆ ĐORĐE
+ZARIĆ BOŠKO
+ZARIĆ BOGDAN
+ZARIĆ BORISLAV
+ZARIĆ BRANISLAV
+ZARIĆ BRATISLAV
+ZARIĆ DRAGA
+ZARIĆ DRAGOSLAV
+ZARIĆ DUŠAN
+ZARIĆ IVANKA
+ZARIĆ IVAN
+ZARIĆ JELENA
+ZARIĆ JOVAN
+ZARIĆ JOVO
+ZARIĆ KATICA
+ZARIĆ KATICA
+ZARIĆ LAZAR
+ZARIĆ MARIJA
+ZARIĆ MARIJA
+ZARIĆ MIKA
+ZARIĆ MILADIN
+ZARIĆ MILAN
+ZARIĆ MILAN
+ZARIĆ MILENA
+ZARIĆ MILICA
+ZARIĆ MILICA
+ZARIĆ MIODRAG
+ZARIĆ MLADEN
+ZARIĆ MOMČILO
+ZARIĆ NIKOLA
+ZARIĆ NIKOLA
+ZARIĆ NOVAK
+ZARIĆ PETAR
+ZARIĆ RADMILA
+ZARIĆ RAJO
+ZARIĆ SAVA
+ZARIĆ SLOBODAN
+ZARIĆ SLOBODAN
+ZARIĆ STANIMIR
+ZARIĆ STANISLAV
+ZARIĆ STANKA
+ZARIĆ STEVAN
+ZARIĆ VESNA
+ZARIĆ ZARIJA
+ZARIĆ ZDRAVKO
+ZARIĆ ZORKA
+ZARIN STEVA
+ZARINGER-PINTER NIKOLA
+ZARKOV KOCA
+ZARLI KATARINA
+ZARNOCKI PAVLE
+ZAROL ALEKSANDAR
+ZARUBAC ALEKSANDAR
+ZARUBAC BORKA
+ZARUBAC ROMICA
+ZARUBICA BOŽANA
+ZARUBICA RADUN
+ZARUPSKI ĐORĐE
+ZARUPSKI BRANKO
+ZARUPSKI MILOVAN
+ZATEK MARIJA
+ZATEZALO DUŠAN PROF
+ZATEZALO MIODRAG
+ZATEZALO PETAR
+ZATEZALO PREDRAG
+ZAVARGO ZOLTAN
+ZAVARKO ŠANDOR
+ZAVARKO ŠANDOR
+ZAVARKO ŠANDOR
+ZAVARKO ANTAL
+ZAVARKO ESTERA
+ZAVARKO IŠTVAN
+ZAVARKO JANOŠ
+ZAVARKO KARLO
+ZAVARKO MARIJA
+ZAVARKO VERA
+ZAVAROŠ ANDRIJA
+ZAVIŠA PETAR
+ZAVIŠA RANKO
+ZAVIŠIĆ CVIJETA
+ZAVIŠIĆ MILAN
+ZAVIŠIĆ PREDRAG
+ZAVIŠIĆ VIDA
+ZAVIŠIN MARICA
+ZAVIŠIN MOMIR
+ZAVIŠIN SAVA
+ZAVRTANIK IVAN
+ZAVRTANIK IVAN
+ZAVRTANIK MARJAN
+ZAZULJAK SLAVKO
+ZBAČNIK ZOFIJA
+ZBILJIĆ DRAGOLJUB
+ZBUĆNOVIĆ JOVANKA
+ZBUĆNOVIĆ MILAN
+ZBUĆNOVIĆ MILOŠ
+ZBUĆNOVIĆ MITA
+ZBUĆNOVIĆ PAVLE
+ZBUĆNOVIĆ SAVA
+ZDELAR SLOBODAN
+ZDENJAK JOSIP
+ZDIHAN MARKO
+ZDJELAR DRAGAN
+ZDJELAR MIROSLAV
+ZDJELAR OLGA
+ZDJELAR VIŠNJA
+ZDJELAR ZDRAVKO
+ZDJELARIĆ BRANKO
+ZDJELARIĆ DRAGAN
+ZDRAVESKI DUŠANKA
+ZDRAVEVSKI ILIJA
+ZDRAVKOVIĆ ANĐELIJA
+ZDRAVKOVIĆ BOGOLJUB
+ZDRAVKOVIĆ BORISLAV
+ZDRAVKOVIĆ DEJAN
+ZDRAVKOVIĆ DRAGOLJUB
+ZDRAVKOVIĆ DUŠANKA
+ZDRAVKOVIĆ JELENA
+ZDRAVKOVIĆ JOVAN
+ZDRAVKOVIĆ MIHAJLO
+ZDRAVKOVIĆ MILAN
+ZDRAVKOVIĆ MIODRAG
+ZDRAVKOVIĆ MIODRAG
+ZDRAVKOVIĆ MIROSLAV
+ZDRAVKOVIĆ RADE
+ZDRAVKOVIĆ RADE
+ZDRAVKOVIĆ TIHOMIR
+ZDRAVKOVIĆ TOMISLAV
+ZDRAVKOVIĆ VEROLJUB
+ZDRAVKOVIĆ VIDOJE
+ZDUPSKI BOŽIDAR
+ZEČAK VOJA
+ZEČEVIĆ ĐORĐO
+ZEČEVIĆ ANGELINA
+ZEČEVIĆ CVIJAN
+ZEČEVIĆ DOBRIVOJE DR
+ZEČEVIĆ DRAGAN DR
+ZEČEVIĆ DUŠAN
+ZEČEVIĆ GOLUB
+ZEČEVIĆ GVOZDEN
+ZEČEVIĆ HIMZO
+ZEČEVIĆ KRSTO
+ZEČEVIĆ LJUBICA
+ZEČEVIĆ LJUBINKO
+ZEČEVIĆ MARIJA
+ZEČEVIĆ MILAN
+ZEČEVIĆ MILAN
+ZEČEVIĆ MILISAV
+ZEČEVIĆ MILO
+ZEČEVIĆ MIOMIR
+ZEČEVIĆ MIRJANA
+ZEČEVIĆ NIKOLA
+ZEČEVIĆ NIKOLA
+ZEČEVIĆ NOVAK
+ZEČEVIĆ PREDRAG
+ZEČEVIĆ RAJKO
+ZEČEVIĆ RISTIVOJE
+ZEČEVIĆ SAVO
+ZEČEVIĆ SLAVKO
+ZEČEVIĆ SLOBODAN
+ZEČEVIĆ SMILJA
+ZEČEVIĆ SMILJA
+ZEČEVIĆ SOFIJA
+ZEČEVIĆ VESNA
+ZEČEVIĆ VLADIMIR
+ZEČEVIĆ ZORAN
+ZEČIROVIĆ ILMI
+ZEĆIRI ISMAIL
+ZEĆIRI ZIJA
+ZEC ŽELJKO
+ZEC ĐURO
+ZEC BOŠKO
+ZEC BOŽIDAR
+ZEC DANIJEL
+ZEC DRAGAN
+ZEC DRAGUTIN
+ZEC DUŠAN
+ZEC DUŠAN
+ZEC JOVAN
+ZEC MARIJA
+ZEC MARIJA
+ZEC MARINKO
+ZEC MATA
+ZEC MILAN
+ZEC MILAN
+ZEC MILE DIPL ING
+ZEC MILOŠ
+ZEC MILOŠ
+ZEC MILORAD
+ZEC MILOVAN
+ZEC NIKOLA
+ZEC NIKOLA
+ZEC RADOVAN
+ZEC RAJKO
+ZEC RAJKO
+ZEC STEVANIJA
+ZEC ZORICA
+ZEDI MIHALJ
+ZEGA ALEKSANDAR
+ZEGNAL RUDOLF
+ZEJAK IVAN
+ZEJAK MILETA
+ZEJAK RADOŠ
+ZEKA GZIM
+ZEKA HIRZEN
+ZEKA IRMA
+ZEKAVICA JELENA
+ZEKAVICA MIRJANA
+ZEKAVICA SLAVICA
+ZEKAVICA SRĐAN
+ZEKIĆ MIRA
+ZEKONJA ZDRAVKO
+ZEKOVIĆ BOŠKO
+ZEKOVIĆ DRAGOMIR
+ZEKOVIĆ GORDANA
+ZEKOVIĆ HANKIJA
+ZEKOVIĆ JULIJANA
+ZEKOVIĆ LILA
+ZEKOVIĆ MILADIN
+ZEKOVIĆ MILOŠ
+ZEKOVIĆ PETAR DILP OEC
+ZEKOVIĆ PETAR
+ZEKOVIĆ RADENKO
+ZEKOVIĆ RIZA
+ZEKOVIĆ VASO
+ZEKOVSKI ZORICA
+ZELENBABA RATKO
+ZELENBABA STEVAN
+ZELENHASIĆ EMIR
+ZELENJAK ANDRIJA
+ZELENJAK STJEPAN
+ZELENKA FRANJA
+ZELENKA MARIJA
+ZELENKO EMA
+ZELENOVIĆ BORIŠA
+ZELENOVIĆ DRAGAN
+ZELENOVIĆ JELENA
+ZELENOVIĆ JOVAN
+ZELENOVIĆ LJUBICA
+ZELENOVIĆ LJUBO
+ZELENOVIĆ MARA
+ZELENOVIĆ MILADIN
+ZELENOVIĆ MILAN
+ZELENOVIĆ MILISAV
+ZELENOVIĆ MILISAV
+ZELENOVIĆ VERA
+ZELENOVIĆ VLADIMIR
+ZELENSKI ALEKSANDAR
+ZELENSKI ALEKSANDAR
+ZELENSKI JELENA
+ZELENSKI MILICA
+ZELIĆ ĐORĐE
+ZELIĆ IVAN
+ZELIĆ JANOŠ
+ZELIĆ JOVAN
+ZELIĆ LAZAR
+ZELIĆ LJUBA
+ZELIĆ LJUBICA
+ZELIĆ LJUBOMIR
+ZELIĆ MARTA
+ZELIĆ PAVLE
+ZELIĆ PERSIDA
+ZELIĆ PETAR
+ZELIĆ RUŽICA
+ZELIĆ VLADIMIR
+ZELIĆ ZOLTAN
+ZELJAJIĆ NIKOLA DR
+ZELJIĆ SLOBODAN
+ZELJKO MARICA
+ZELJKOVIĆ ŽELJKO
+ZELJKOVIĆ ŽELJKO
+ZELJKOVIĆ ĐURO
+ZELJKOVIĆ BOSA
+ZELJKOVIĆ BRANKO
+ZELJKOVIĆ BRANKO
+ZELJKOVIĆ DESIMIR
+ZELJKOVIĆ DRAGUTIN
+ZELJKOVIĆ DUŠKO
+ZELJKOVIĆ IVANKA
+ZELJKOVIĆ JOVAN
+ZELJKOVIĆ JOVO
+ZELJKOVIĆ KRISTINA
+ZELJKOVIĆ LJILJANA
+ZELJKOVIĆ MARKO
+ZELJKOVIĆ MILAN
+ZELJKOVIĆ MILAN
+ZELJKOVIĆ MILIĆ
+ZELJKOVIĆ MILJA
+ZELJKOVIĆ MILOŠ
+ZELJKOVIĆ MIRKO
+ZELJKOVIĆ OSTOJA
+ZELJKOVIĆ RADMILA
+ZELJKOVIĆ RANKO
+ZELJKOVIĆ RATKO
+ZELJKOVIĆ SIMA
+ZELJKOVIĆ STEVO
+ZELJKOVIĆ STOJANKA
+ZELJKOVIĆ TODE
+ZELJKOVIĆ TOMA
+ZELJKOVIĆ VERA
+ZELJKOVIĆ VLAJKO
+ZELJKOVIĆ VUKAŠIN
+ZELJKOVIĆ ZORAN
+ZELJKOVIĆ ZORAN
+ZELJKOVIĆ ZORAN
+ZEMBERI FERENC
+ZEMBERI JOSIP
+ZEMBERI ROBERT
+ZEMKO ŠANDOR
+ZEMLJAK IVAN
+ZEMLJANAC MILANKA
+ZENTAI ROBERT DIPL ING
+ZENUN AVDO
+ZENZEROVIĆ PAVLE
+ZERDO BOŽIDAR
+ZERDO MILORAD
+ZERDO RADOSLAV
+ZERDO ZLATA
+ZEREMSKI DANILO
+ZEREMSKI DRAGAN
+ZEREMSKI DUŠAN
+ZEREMSKI KAMENKO
+ZEREMSKI NADA
+ZEREMSKI NOVAK
+ZEREMSKI PETAR
+ZEREMSKI PETAR
+ZEREMSKI PIROŠKA
+ZEREMSKI RADOJKA
+ZEREMSKI RANKO
+ZEREMSKI RATOMIR
+ZEREMSKI RUŽICA
+ZEREMSKI SLAVICA
+ZEREMSKI STEVAN
+ZEREMSKI STEVAN
+ZEREMSKI TEOFAN
+ZEREMSKI TOMISLAV
+ZEREMSKI VERA
+ZEREMSKI VLADIMIR
+ZEREMSKI VUJADIN
+ZEZDIN ALEKSANDAR DR
+ZGOMBA LAZAR
+ZGOMBA VLADIMIR
+ZGONJANIN MILAN
+ZGONJANIN RADE
+ZGONJANIN RUŽA
+ZIDAR MARIJAN
+ZIKOV ANDRIJA
+ZIKOV DRAGOLJUB
+ZIMA ČABA
+ZIMA RUDOLF
+ZIMANJI JOVAN
+ZIMONJA LJUBOMIR
+ZIMONJIĆ VLADIMIR
+ZINAIĆ CVIJETA
+ZINAIĆ UROŠ
+ZIRAMOV ŽARKO
+ZIRAMOV JEVROSIMA
+ZIRAMOV JEVROSIMA
+ZIRAMOV SAVA
+ZIRAMOV STEVAN
+ZIRDUH MARIJAN
+ZIROJE DRAGAN
+ZIROJEVIĆ ANĐA
+ZIROJEVIĆ GOJKO
+ZIROJEVIĆ MILENKO
+ZIROJEVIĆ MLADEN
+ZIROJEVIĆ OBRAD
+ZIROJEVIĆ TOMISLAV
+ZISIJADES MIRJANA
+ZIVLAK BRANKO
+ZIVLAK JELKA
+ZIVLAK JOVAN
+ZIVLAK PERO
+ZIVLAK PERO
+ZIVLAK VLADIMIR
+ZIVLAKOVIĆ DRAGOLJUB
+ZJAČIĆ ĐORĐE
+ZJAČIĆ ĐORĐE
+ZJAČIĆ BRANKO
+ZJAJIĆ KRSTAN
+ZJALIĆ DRAGOMIR ADVOKAT
+ZJALIĆ DRAGOMIR
+ZJALIĆ MARGITA
+ZJEVALO ANKICA
+ZLATANOVIĆ BLAGOJE
+ZLATANOVIĆ CVETKO
+ZLATANOVIĆ RADIVOJ
+ZLATANOVIĆ TIHOMIR
+ZLATANOVIĆ VLADIMIR
+ZLATANOVSKI DIMITRIJE
+ZLATANOVSKI RUSE
+ZLATAR MILENKO
+ZLATAREV DUŠAN
+ZLATAREV DUŠAN
+ZLATAREV VERICA
+ZLATARIĆ MOMČILO
+ZLATARIĆ VOJISLAV
+ZLATAROV MILOVAN
+ZLATEK LAZAR
+ZLATIČANIN TOŠO
+ZLATIĆ MILORAD
+ZLATIĆ RADOSLAV
+ZLATIĆ VESELIN
+ZLATKOVIĆ BOŠKO
+ZLATKOVIĆ BORISLAV
+ZLATKOVIĆ JELICA
+ZLATKOVIĆ-JOVIĆ OLGICA
+ZLATKOVIĆ KATARINA
+ZLATKOVIĆ MELANIJA
+ZLATKOVIĆ RUSOMIR
+ZLATKOVIĆ SLAĐANA
+ZLATKOVIĆ SLAVKO
+ZLATONIĆ SLAVKO
+ZLATOVERHOVNIKOV ĐORĐE
+ZLATOVIĆ JELISAVETA
+ZLATOVIĆ NIKOLA
+ZLIČIĆ ALEKSANDRA
+ZLIČIĆ DARINKA
+ZLIČIĆ DIMITRIJE
+ZLIČIĆ DUŠANKA DIPL ING
+ZLIČIĆ DUŠAN
+ZLIČIĆ IVAN
+ZLIČIĆ KATICA
+ZLIČIĆ LJUBICA
+ZLIČIĆ MILAN
+ZLIČIĆ MILORAD
+ZLIČIĆ RADOVAN
+ZLIČIĆ VASILJKA
+ZLOJUTRO MIĆO
+ZLOJUTRO MIHAJLO
+ZLOJUTRO STEVO
+ZLOJUTRO VASA
+ZLOKOLICA ŽIVKO
+ZLOKOLICA ĐORĐE
+ZLOKOLICA BOŠKO
+ZLOKOLICA JORGOVANKA
+ZLOKOLICA JOVAN
+ZLOKOLICA JOVAN
+ZLOKOLICA LAZAR
+ZLOKOLICA LJUBICA
+ZLOKOLICA MARKO
+ZLOKOLICA MILOŠ
+ZLOKOLICA MIODRAG
+ZLOKOLICA NIKOLA
+ZLOKOLICA NOVAK
+ZLOKOLICA SLAVKO
+ZLOKOLICA SLAVNA
+ZLOKOLICA STEVAN
+ZLOKOLICA STEVAN
+ZLOKOLICA TODOR
+ZLOKOLICA VLADA
+ZLOKOLICA ZLATA
+ZMIJANJAC MILAN
+ZMRZLIKAR MIRJANA
+ZOĆEVIĆ MARIJA
+ZOĆEVIĆ VITOR
+ZOBENICA BILJANA
+ZOBENICA DANICA
+ZOBENICA MIRJANA
+ZOGOVIĆ VUK
+ZOKI STEVAN
+ZOKIĆ RADOVAN
+ZOLNAI TOMAŠ
+ZOLNJAN PAVEL
+ZOLOTIĆ KATARINA
+ZOLOTIĆ VELINKA
+ZOLOTIĆ VUKOSAV
+ZOMBORAC ZVONKO
+ZONA DIVNA
+ZONAI PAL
+ZONIĆ LJUBAN
+ZONIĆ RIZAH
+ZORAD MIHALJ
+ZORAD STEVAN
+ZORAJA ĐURA
+ZORAJA DRAGAN
+ZORAJA IGNJAT
+ZORAJA PETAR
+ZORAJA STEVAN
+ZORANIĆ SLAVICA
+ZORANOVIĆ DUŠANKA
+ZORANOVIĆ ILIJA
+ZORANOVIĆ LAZAR
+ZORANOVIĆ LAZAR
+ZORANOVIĆ MILAN
+ZORANOVIĆ MIODRAG
+ZORANOVIĆ SOFIJA
+ZORANOVIĆ SPASA
+ZORANOVIĆ STEVAN
+ZORANOVIĆ SVETLANA
+ZORIČIĆ DRAGOLJUB
+ZORIĆ ČEDO
+ZORIĆ ĐORĐE
+ZORIĆ ĐORĐE
+ZORIĆ ĐURĐICA
+ZORIĆ ĐURICA
+ZORIĆ ĐURO
+ZORIĆ ĐURO
+ZORIĆ ĐURO
+ZORIĆ ANĐELKA
+ZORIĆ BOŠKO
+ZORIĆ BOŽIDAR
+ZORIĆ BOGDAN
+ZORIĆ BOGOLJUB
+ZORIĆ BORIVOJ
+ZORIĆ BORO
+ZORIĆ BORO
+ZORIĆ BRANKA
+ZORIĆ BRANKO
+ZORIĆ DARINKA
+ZORIĆ DARKO
+ZORIĆ DRAGAN
+ZORIĆ DRAGAN
+ZORIĆ DRAGAN
+ZORIĆ DRAGOLJUB
+ZORIĆ DUŠANKA
+ZORIĆ DUŠAN
+ZORIĆ DUŠAN
+ZORIĆ-GARDINOVAČKI MARIJANA
+ZORIĆ GAVRILO
+ZORIĆ GORDANA
+ZORIĆ JELISAVETA
+ZORIĆ JELISAVETA
+ZORIĆ JOVAN
+ZORIĆ KATA
+ZORIĆ KLARA
+ZORIĆ KOSTADIN
+ZORIĆ KOVILJKA
+ZORIĆ LAZAR
+ZORIĆ LUKA
+ZORIĆ MARIJA
+ZORIĆ MARKO
+ZORIĆ MIKA
+ZORIĆ MILAN
+ZORIĆ MILAN
+ZORIĆ MILAN
+ZORIĆ MILAN
+ZORIĆ MILAN
+ZORIĆ MILEVA
+ZORIĆ MILICA
+ZORIĆ MILICA
+ZORIĆ MILORAD
+ZORIĆ MILORAD
+ZORIĆ MILORAD
+ZORIĆ MILORAD
+ZORIĆ MILORAD
+ZORIĆ MIODRAG
+ZORIĆ MIRKO ING
+ZORIĆ MIRKO
+ZORIĆ MIROSLAV
+ZORIĆ NIKOLA
+ZORIĆ NIKOLA
+ZORIĆ NIKOLA
+ZORIĆ PAVLE
+ZORIĆ PERA
+ZORIĆ PETAR
+ZORIĆ PETKO
+ZORIĆ RADE
+ZORIĆ RADE
+ZORIĆ SAVA
+ZORIĆ SIMA
+ZORIĆ SIMEON
+ZORIĆ SLAVICA
+ZORIĆ SLOBODAN
+ZORIĆ SNEŽANA
+ZORIĆ SOKA
+ZORIĆ SPASOJE
+ZORIĆ STANKO
+ZORIĆ STOJAN
+ZORIĆ SVETKO
+ZORIĆ SVETKO
+ZORIĆ VASILIJE
+ZORIĆ VELIMIR
+ZORIĆ VELJKO DIPL ING
+ZORIĆ VLADISLAV
+ZORIĆ VLADO
+ZORIĆ VOJIN
+ZORIĆ VOJKA
+ZORIĆ ZDRAVKA
+ZORIĆ ZORICA
+ZORIĆ ZVONIMIR
+ZORICA ACO
+ZORICA DUŠAN
+ZORICA MARKO
+ZORIJAN EMIL
+ZORJAN BRANKO
+ZORJAN JANKO
+ZORKIĆ ŽIVKO
+ZORNIJA BRANKO
+ZORNIJA VLADISLAV
+ZORNIK ALDA
+ZORZIĆ MILORAD
+ZOTIN ĐORĐE
+ZOTIN SAVA
+ZOTIN SLAVOLJUB
+ZOTOVIĆ ALEKSANDAR
+ZOTOVIĆ OBRAD
+ZOVIĆ ANA
+ZOVIĆ DUŠAN
+ZOVIĆ MILOVAN
+ZOVIĆ MIROSLAV
+ZOVKO ŠIMUN
+ZOVKO ILIJA
+ZOVKO JOSIP
+ZOVKO MANDA
+ZOVKO MARJAN
+ZOZUK LJUBOMIR
+ZRILIĆ NADA
+ZRILIĆ VERA
+ZRILIĆ VLADIMIR DR LEKAR
+ZRNIĆ ŠPIRO
+ZRNIĆ ĐORĐE
+ZRNIĆ ĐURO
+ZRNIĆ ĐURO
+ZRNIĆ BRANKO
+ZRNIĆ DUŠAN
+ZRNIĆ GOJKO
+ZRNIĆ GOJKO
+ZRNIĆ JOVAN
+ZRNIĆ LAZAR
+ZRNIĆ MAJA
+ZRNIĆ MALINA
+ZRNIĆ MANE DIPL ING
+ZRNIĆ MANE
+ZRNIĆ MARINKO
+ZRNIĆ MILAN
+ZRNIĆ MILAN
+ZRNIĆ MILOŠ
+ZRNIĆ MIRJANA
+ZRNIĆ MIROLJUB
+ZRNIĆ NENAD
+ZRNIĆ NIKOLA
+ZRNIĆ PETAR
+ZRNIĆ SINIŠA
+ZRNIĆ SLOBODAN
+ZRNIĆ SRĐAN
+ZRNIĆ VLADO
+ZRNIĆ ZORAN
+ZRNIĆ ZORAN
+ZUBAC ČEDOMIR
+ZUBAC DIVNA
+ZUBAC MILAN
+ZUBAC PERO
+ZUBAK STEVAN
+ZUBAN PETAR
+ZUBANOV BRANISLAV
+ZUBANOV VLADIMIR
+ZUBER DUŠAN
+ZUBER MARKO
+ZUBEREC JOVAN
+ZUBIĆ ŽARKO
+ZUBIĆ ĐURĐA
+ZUBIĆ BILJANA
+ZUBIĆ BOŽO
+ZUBIĆ BRANISLAVA
+ZUBIĆ DRAGO
+ZUBIĆ JOVO
+ZUBIĆ LAZO
+ZUBIĆ PETAR
+ZUBIĆ RADOSLAV
+ZUBIĆ RATKO
+ZUBIĆ VERA
+ZUBIĆ VERKA
+ZUBOV ADELA
+ZUBOVIĆ ANDRIJA
+ZUBOVIĆ MIRJANA
+ZUBOVIĆ SLOBODAN
+ZUBOVIĆ STEVAN
+ZUCAJIĆ JELENA
+ZUKIĆ GOJKO
+ZUKOVIĆ MILINKO
+ZULIĆ AGNEŠ
+ZUMBULOVIĆ PREDRAG
+ZUPANČIĆ FRANC
+ZUPANČIĆ IVAN
+ZUPANC DARKO
+ZUPANC RAJKO
+ZUPKOV ĐURA
+ZUPKOV MIROSLAV
+ZURKOVIĆ ĐORĐE
+ZURKOVIĆ ALEKSANDAR
+ZURKOVIĆ BOGOLJUB
+ZURKOVIĆ DUŠAN
+ZURKOVIĆ GAVRA
+ZURKOVIĆ MIRJANA
+ZURKOVIĆ NIKOLA
+ZURKOVIĆ RADOSLAV
+ZURKOVIĆ RUŽA
+ZURKOVIĆ VERA
+ZUROVAC JOVO
+ZUROVAC VELJKO
+ZUVIĆ OBRAD
+ZUZAKU REDŽEP
+ZVARA JULIJA
+ZVEKANOVIĆ JOSIP
+ZVEKIĆ DUŠANKA
+ZVEKIĆ JUGOSLAV
+ZVEKIĆ MARIJA
+ZVEKIĆ MILAN
+ZVEKIĆ NADA
+ZVEKIĆ PETAR
+ZVEKIĆ SINIŠA
+ZVEKIĆ VELIMIR
+ZVERŽINA JOSIP
+ZVEZDANOVIĆ BORA
+ZVEZDANOVIĆ TOMA
+ZVEZDIN JOVANKA
+ZVIJER MILORAD
+ZVIZDIĆ MEHMED
+ZVOŠEC KLARA
+ZVONAREVIĆ KATA
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSR.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSR.txt
new file mode 100644
index 0000000..28a6a81
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_SerbianSR.txt
@@ -0,0 +1,61254 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2006, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+ЧАЧИЋ АЛЕКСАНДАР
+ЧАЧИЋ ЈЕЛИЦА
+ЧАЧИЋ МАРИЈА
+ЧАЧИЋ НИКОЛА
+ЧАЧИЈА БРАНКО
+ЧАЂЕНОВИЋ ЖАРКО
+ЧАЂЕНОВИЋ САБИНА
+ЧАБАИ АНДРИЈА
+ЧАБАИ ЛАЈОШ
+ЧАБАИ МАРИЈА
+ЧАБАИ СТЕВАН
+ЧАБАИ СТЕВАН
+ЧАБАРКАПА БРАНКО
+ЧАБАРКАПА МИЛЕНКО
+ЧАБАРКАПА МИРОСЛАВ
+ЧАБАРКАПА СИМО
+ЧАБАРКАПА СТАНКО
+ЧАБАРКАПА ТАМАРА
+ЧАБАРКАПА ТОМАШ
+ЧАБДАРИЋ НИКОЛА
+ЧАБДАРИЋ ЗОРИЦА
+ЧАБИ НАНДОР
+ЧАБОВИЋ МИЛАН
+ЧАБРАДИ АГНЕЗИЈА
+ЧАБРАДИ ИВАН
+ЧАБРАДИ ЈЕЛЕНА
+ЧАБРАДИ ЉУБИЦА
+ЧАБРАДИ СТЕВАН
+ЧАБРДА МАРТИН
+ЧАБРИЛО БОГДАН
+ЧАБРИЛО БРАНИСЛАВ
+ЧАБРИЛО ЛАЗАР
+ЧАБРИЛО ЉУБИЦА
+ЧАБРИЛО СПАСОЈА
+ЧАДЕШ ЗДЕНКА
+ЧАДЕСКИ БЛАГОЈЕ
+ЧАДОВСКИ ВЛАДИМИР
+ЧАГЉЕВИЋ ТОМА
+ЧАГОРОВИЋ ВЛАДИМИР
+ЧАЈА ВАНКА
+ЧАЈИЋ БОГОЉУБ
+ЧАЈИЋ БОРИСЛАВ
+ЧАЈИЋ РАДОСЛАВ
+ЧАКШИРАН МИЛАДИН
+ЧАКАН ЕУГЕН
+ЧАКАН ЕВГЕНИЈЕ
+ЧАКАН ИВАН
+ЧАКАН ЈУЛИЈАН
+ЧАКАН МИХАЈЛО
+ЧАКАН СТЕВАН
+ЧАКАН ВЛАДИМИР
+ЧАКАН ВЛАДИМИР
+ЧАКАН ВЛАДИМИР
+ЧАКАРА АНА
+ЧАКАРЕВИЋ МОМИР
+ЧАКАРЕВИЋ НЕДЕЉКО
+ЧАКИ ШАНДОР
+ЧАКИ АМАЛИЈА
+ЧАКИ АНДРАШ
+ЧАКИ ЛАДИСЛАВ
+ЧАКИ ЛАЈОШ
+ЧАКИ ЛАСЛО
+ЧАКИ МИХАЉ
+ЧАКИ МИХАЉ
+ЧАКИ ПИРОШКА
+ЧАКИЋ САВА
+ЧАКИЋ ЗЛАТОЈЕ ДР
+ЧАКМАК ДАНИЦА
+ЧАКМАК ДЕЈАН
+ЧАКМАК ЛАЗАР
+ЧАКМАК ЉИЉАНА
+ЧАКМАК ЉУБИЦА
+ЧАКМАК СОФИЈА
+ЧАКМАК СВЕТОЗАР
+ЧАКМАЛ ВОЈИСЛАВ
+ЧАКОВАЦ БОРИСЛАВ
+ЧАКОВАЦ МИРОСЛАВ
+ЧАКОВАЦ ПАНТЕЛИЈА
+ЧАКОВАЦ САВА
+ЧАКОВИЋ ЗДРАВКО
+ЧАКРА МИЛЕНА
+ЧАЛА ЂУЛА
+ЧАЛА ИРЕН
+ЧАЛА ИВАНКА
+ЧАЛА ЛЕНКА
+ЧАЛАКИЋ БРАНКО
+ЧАЛАКИЋ ЉУБОМИР
+ЧАЛАКИЋ МАРКО
+ЧАЛАКИЋ МИЛАН
+ЧАЛЕ ИВАН
+ЧАЛЕ ЈОСИП
+ЧАЛЕ МИЛАН
+ЧАЛЕ СОФИЈА
+ЧАЛЕ ВЛАДИМИР
+ЧАЛЕНИЋ БОРИСЛАВ
+ЧАЛЕНИЋ БРАНИСЛАВА
+ЧАЛЕНИЋ ДИНА
+ЧАЛЕНИЋ ДРАГИЦА
+ЧАЛЕНИЋ ЛАЗАР
+ЧАЛЕНИЋ ЉИЉАНА
+ЧАЛЕНИЋ ЉУБОМИР
+ЧАЛЕНИЋ ЛУКА
+ЧАЛЕНИЋ МИЛОСАВА
+ЧАЛЕНИЋ МИРЈАНА
+ЧАЛЕНИЋ СТЕВАН
+ЧАЛИЋ БОШКО
+ЧАЛИЋ ЈОВО
+ЧАЛИЋ МАРИЈА
+ЧАЛИЈА ДАНИЦА
+ЧАЛИЈА ЈОВАН
+ЧАЛИЈА ЛАЗАР
+ЧАЛИЈА МИЛАН
+ЧАМЂИЋ ЈАХИЈА
+ЧАМАНГОС ЂОРЂЕ
+ЧАМАНГОС КАТИЦА
+ЧАМБЕР ЉУБИЦА
+ЧАМБОР ЂУРО
+ЧАМБОР АНДРИЈА
+ЧАМБОР ЈОСИП
+ЧАМЏИЋ НЕАД
+ЧАМО БАРБАРА
+ЧАМПРАГ ЂОРЂЕ ЛЕКАР
+ЧАМПРАГ ДРАГА
+ЧАМПРАГ ДУШАН
+ЧАМПРАГ ЉУБИЦА
+ЧАМПРАГ МИЛАН
+ЧАНЧАР ЂОРЂЕ
+ЧАНЧАРЕВИЋ ЈОВАНКА
+ЧАНЧАРЕВИЋ МИРОЉУБ
+ЧАНЧАРЕВИЋ МЛАДЕН
+ЧАНАЏИЋ ЂОРЂЕ
+ЧАНАЏИЋ ЈОВАН
+ЧАНАЏИЋ САЊА
+ЧАНАДАНОВИЋ АНДРИЈА
+ЧАНАДАНОВИЋ МИРКО
+ЧАНАДАНОВИЋ РАДМИЛА
+ЧАНАДИ ЈАНОШ МР
+ЧАНАДИ ЉИЉАНА
+ЧАНАГЛИЋ ЂОКА
+ЧАНАК ЖЕЉКО
+ЧАНАК ЂУРА
+ЧАНАК БОСИЉКА ДР
+ЧАНАК МИХАЈЛО
+ЧАНАК МИРКО
+ЧАНАК МОМЧИЛО
+ЧАНАК НЕВЕНКА
+ЧАНАК НИКОЛА
+ЧАНАК НИКОЛА
+ЧАНАК НИКОЛА
+ЧАНАК ОЛИВЕРА
+ЧАНАК ВЕЉКО
+ЧАНАК ВЕСЕЛИН
+ЧАНАК ВУКАШИН
+ЧАНГАЛИЋ ДУШАН
+ЧАНИЋ ЉИЉАНА
+ЧАНИЋ МИЛОШ
+ЧАНИЋ ОСТОЈА
+ЧАЊЕВАЦ ШАРЛОТА
+ЧАЊИ АНДРИЈА
+ЧАЊИ ГАБИ
+ЧАЊИ ГАБОР
+ЧАЊИ ГИЗЕЛА
+ЧАЊИ ИРЕНА
+ЧАЊИ ИРЕНА
+ЧАЊИ ЈАНКО
+ЧАЊИ КАРЛО
+ЧАЊИ ЛАСЛО
+ЧАЊИ ЛАСЛО
+ЧАЊИ НАДА
+ЧАЊИ САМУЕЛ
+ЧАЊИ СТЕВАН
+ЧАЊИ СТЕВАН
+ЧАЊИ ВЛАДИМИР
+ЧАЊИ ЗОЛТАН
+ЧАЊИ ЗУЗАНА
+ЧАНКОВИЋ ЂОРЂЕ
+ЧАНКОВИЋ БОШКО
+ЧАНКОВИЋ БОЈА
+ЧАНКОВИЋ БРАНКО
+ЧАНКОВИЋ ДАНЕ
+ЧАНКОВИЋ ДАНЕ
+ЧАНКОВИЋ ДАНЕ
+ЧАНКОВИЋ ДАНИЦА
+ЧАНКОВИЋ ЈОВА
+ЧАНКОВИЋ ЉУБИНКА
+ЧАНКОВИЋ МАРИЈА
+ЧАНКОВИЋ МАРКО
+ЧАНКОВИЋ МИКА
+ЧАНКОВИЋ МИЛАН
+ЧАНКОВИЋ МИЛАН
+ЧАНКОВИЋ МИЛИВОЈ
+ЧАНКОВИЋ МИЛОРАД
+ЧАНКОВИЋ МЛАДЕН
+ЧАНКОВИЋ ОЛГА
+ЧАНКОВИЋ ПЕТАР МР
+ЧАНКОВИЋ ПЕТАР
+ЧАНКОВИЋ РАДОМИР
+ЧАНКОВИЋ РАДОМИР
+ЧАНКОВИЋ СЛАЂАНА
+ЧАНКОВИЋ СЛАВКО
+ЧАНКОВИЋ СЛОБОДАН
+ЧАНКОВИЋ ЗЛАТА
+ЧАНКОВИЋ ЗОРАН
+ЧАП АНТАЛ
+ЧАПАНДА ЈОСИП
+ЧАПЕЉА ДРАГАН
+ЧАПЕЉА ЈАН ДР
+ЧАПЕЉА ЈОВАН
+ЧАПЕЉА ПАВЛЕ
+ЧАПКО ЈУЛИЈАН
+ЧАПКО МИЛОРАД
+ЧАПКО МИРОСЛАВ
+ЧАПКО НЕСТОР
+ЧАПО АДАМ
+ЧАПО ИЛИЈА
+ЧАПО ЈАНОШ
+ЧАПО МАРИЈА
+ЧАПО НАДА
+ЧАПРИЋ МИЛОРАД
+ЧАРАПИЋ ТОМИСЛАВ
+ЧАСЊИ ЕРЖЕБЕТ
+ЧАСЊИ ФЕРЕНЦ
+ЧАСТВЕН ЈУЛИЈАНА
+ЧАТ АНДРИЈА
+ЧАТАЛИНАЦ МИЛАН
+ЧАТАЛИНАЦ НИКОЛА
+ЧАТАЛОВ СТОЈАН
+ЧАТЛАЈА СТАНА
+ЧАТЛАК ОЛИВЕРА
+ЧАТУШ ЗЛАТКО
+ЧАУШЕВИЋ КЕМАЛ
+ЧАУШЕВИЋ МИДХАТ
+ЧАУШЕВИЋ ТАТЈАНА
+ЧАВИЋ ШТЕФИЦА
+ЧАВИЋ ЖИВКА
+ЧАВИЋ ЂОРЂЕ
+ЧАВИЋ БОШКО
+ЧАВИЋ БРАНИСЛАВ
+ЧАВИЋ ДЕЈАН
+ЧАВИЋ ДЕЈАН
+ЧАВИЋ ДРАГИЦА
+ЧАВИЋ ДРАГО
+ЧАВИЋ ГОРДАНА
+ЧАВИЋ ГОРДАНА
+ЧАВИЋ КРСТАН
+ЧАВИЋ ЉУБОМИР
+ЧАВИЋ ЉУБОМИР
+ЧАВИЋ ЉУБОМИР
+ЧАВИЋ МАРИЈА
+ЧАВИЋ МИЛЕНА
+ЧАВИЋ МИРКО
+ЧАВИЋ ПЕТАР
+ЧАВИЋ РАДОМИР
+ЧАВИЋ РАДОВАН
+ЧАВИЋ СЛОБОДАН
+ЧАВИЋ СЛОБОДАН
+ЧАВИЋ СОКА
+ЧАВИЋ ТОША
+ЧАВИЋ ВЕЛИЗАР
+ЧАВИЋ ВЛАДО
+ЧАВИЋ ЗОРКА
+ЧАЗИМ ЧЕЛЕБИЈА
+ЧЕЧЕК ДРАГИЦА
+ЧЕЧЕК ВИЛИМ
+ЧЕЧУК АЛЕКСАНДАР
+ЧЕЧУК БРАНИСЛАВ
+ЧЕЧУК МИЛОШ
+ЧЕЧУК СЛАВИЦА
+ЧЕЧУК СТЕВАН
+ЧЕШЉАР ЂУРА
+ЧЕШЉАР АЛЕКСАНДАР
+ЧЕШЉАР ДАРИНКА
+ЧЕШЉАР ЈОСИП
+ЧЕШЉАР ЈОВАН
+ЧЕШЉАР СТЕВАН
+ЧЕШЉЕВИЋ ДУШАН
+ЧЕШЉЕВИЋ КОСТА
+ЧЕШЉЕВИЋ МИЛЕНКО
+ЧЕШЉЕВИЋ МИРОСЛАВА
+ЧЕШЉЕВИЋ МОМЧИЛО
+ЧЕШЉЕВИЋ СТАНКО
+ЧЕБАЦ ЉУБИЦА
+ЧЕБАЦ ПАВЛЕ
+ЧЕБЕЏИЋ МИЛАН
+ЧЕБСКИ ВЛАДИМИР
+ЧЕБЗАН ПАНТА
+ЧЕДИЋ РЕЏО
+ЧЕГАР БОЖО
+ЧЕГАР ДЕСАНКА
+ЧЕГАР ДРАГАН
+ЧЕГАР МИЛОШ
+ЧЕГАР МИРКО
+ЧЕГАР ПАНЕ
+ЧЕГАР СРЕТКО
+ЧЕГАР СТЕВАНИЈА
+ЧЕГАР СВЕТЛАНА
+ЧЕГАР ТОДОР
+ЧЕХ АНТОН
+ЧЕХ ЈОЖЕФ
+ЧЕХ ЈОСИП
+ЧЕХ ЈОВАН
+ЧЕХ МИКЛОШ
+ЧЕХ СТАНКА
+ЧЕХ ЗЛАТА
+ЧЕХАК КАЛМАН ДР
+ЧЕХОВ ИВАН
+ЧЕХОВ ПЕТАР
+ЧЕЈОВИЋ БИСЕРКА
+ЧЕЈОВИЋ СЛОБОДАН
+ЧЕЈОВИЋ ВЕЛИМИР
+ЧЕЈОВИЋ ВЛАДИМИР
+ЧЕКАНОВИЋ ЖИВАНА
+ЧЕКАНОВИЋ ВИТОМИР
+ЧЕКЕ ДЕЖЕ
+ЧЕКЕ МАРИЈА
+ЧЕКЕ СНЕЖАНА
+ЧЕКЕ СТЕВАН
+ЧЕКЕРЕВАЦ БРАНКО
+ЧЕКЕРИНАЦ ДУШАН
+ЧЕКЕРИНАЦ ЗОРАН
+ЧЕКИ ДАРИНКА
+ЧЕКИ ДАВИД
+ЧЕКИЋ АНА
+ЧЕКИЋ ДАРИНКА
+ЧЕКИЋ ДИМИТРИЈЕ
+ЧЕКИЋ ДРАГАН
+ЧЕКИЋ ИЛИЈА
+ЧЕКИЋ ЈОВАН
+ЧЕКИЋ МИЛОРАД
+ЧЕКИЋ МИЛОРАД
+ЧЕКИЋ МИЛОВАН
+ЧЕКИЋ МИРЈАНА
+ЧЕКИЋ МОМЧИЛО
+ЧЕКИЋ САВА
+ЧЕКИЋ САВА
+ЧЕКИЋ ВАСА
+ЧЕКИЋ ЗДРАВКО
+ЧЕКРЏИН РАДИСЛАВ
+ЧЕЛАР СТЕВАН
+ЧЕЛЕБИЋ АЛЕКСАНДАР
+ЧЕЛЕБИЋ БОЖО
+ЧЕЛЕБИЋ ИЛИЈА
+ЧЕЛЕБИЋ МИЛОРАД
+ЧЕЛЕБИЋ МОМЧИЛО
+ЧЕЛЕБИЋ ОЛГА
+ЧЕЛЕБИЋ-ТУБИЋ ВЕСНА
+ЧЕЛЕБИЋ ЗОРКА
+ЧЕЛЕКЕТИЋ ЈОВАН
+ЧЕЛЕКЕТИЋ ЈОВАН
+ЧЕЛЕКЕТИЋ МИРОСЛАВ
+ЧЕЛЕКЕТИЋ МИРОСЛАВ
+ЧЕЛЕКЕТИЋ РАДОВАН
+ЧЕЛЕКЕТИЋ ТАМАРА
+ЧЕЛЕНАК КАТАЛИН
+ЧЕЛЕСНИК ДРАГУТИН
+ЧЕЛИЋ БАНЕ
+ЧЕЛИЋ ДИНКА
+ЧЕЛИЋ ГЛИГОРИЈЕ
+ЧЕЛИЋ ИЛИЈА
+ЧЕЛИЋ КАТАРИНА
+ЧЕЛИЋ ЉУБИНКО
+ЧЕЛИЋ ЉУБОМИР
+ЧЕЛИЋ МИЛИВОЈ
+ЧЕЛИЋ ПАВЛЕ
+ЧЕЛИЋ СРЂАН
+ЧЕЛИЋ СТАНКО ДР
+ЧЕЛИЋ ВЕРА
+ЧЕЛИЦА ЈЕЛЕНА
+ЧЕЛИКОВИЋ ЕМИЛ
+ЧЕЛОФИГА АНТОНИЈА
+ЧЕЛОВИЋ МИРЈАНА
+ЧЕЛОВСКИ АНДРЕЈ
+ЧЕЛОВСКИ ДРАГИЦА
+ЧЕМАН ЂОРЂЕ
+ЧЕМАН ЂУРА
+ЧЕМАН АНДРИЈА
+ЧЕМАН ДАНИЛО
+ЧЕМАН ГОРДАНА
+ЧЕМАН ЈАН
+ЧЕМАН ЈОВАН
+ЧЕМАН МИША
+ЧЕМАН МИРОСЛАВ
+ЧЕМАН ОЛГА
+ЧЕМАН РУЖЕНКА
+ЧЕМАН САМУЕЛ
+ЧЕМАН СТЕВАН
+ЧЕМАН ТЕРЕЗА
+ЧЕМБИЋ МИЛАН
+ЧЕМЕРЕ ЕРЖЕБЕТ
+ЧЕМЕРЕ ЛАЈОШ
+ЧЕМЕРЛИЋ ПЕТАР
+ЧЕНДЕШ БРАНКО
+ЧЕНЕЈАЦ ЖИВАН
+ЧЕНЕЈАЦ ГРУЈА
+ЧЕНЕЈАЦ ЉУБИЦА
+ЧЕНЕЈАЦ ЉУБИЦА
+ЧЕНЕЈАЦ МИЛОШ
+ЧЕНЕЈАЦ МИЛУТИН
+ЧЕНЕЈАЦ ТОМИСЛАВ
+ЧЕНЕЈАЦ ВЕЛИСЛАВ
+ЧЕНГЕРИ АТИЛА
+ЧЕНГИЋ МАРИЈА
+ЧЕНУША ГЕОРГИНА
+ЧЕПЧАЊИ МИРЈАНА
+ЧЕПЕ АНИЦА
+ЧЕПИ ЈАНОШ
+ЧЕПИ ЛАСЛО
+ЧЕПИ МАРИЈА
+ЧЕПИ НАНДОР
+ЧЕПИЋ БОРИСЛАВ
+ЧЕПИЋ СЛОБОДАН
+ЧЕПИЋ СМИЉА
+ЧЕПИЋ ВЕЛИМИР
+ЧЕПИН ВИКТОР
+ЧЕПЛЕ СТЕВАН
+ЧЕПРЕГИ ИРЕНА
+ЧЕПРЕГИ ЈУЛИЈА
+ЧЕПСКИ ЈОВАН
+ЧЕПСКИ СТЕВАН
+ЧЕР ШАНДОР
+ЧЕР АЛЕКСАНДАР
+ЧЕР ФРАЊА
+ЧЕР ЛАДИСЛАВ
+ЧЕР МАРИЈА
+ЧЕРЕКОВИЋ ЕЛИЗАБЕТА
+ЧЕРЕКОВИЋ РИСТО
+ЧЕРЕКОВИЋ СЛАВКО
+ЧЕРЕКОВИЋ ВАСКРСИЈЕ
+ЧЕРЕВИЋ ИВАН
+ЧЕРЕВИЋ ВЕРИЦА
+ЧЕРЕВИЦКИ АЛЕКСАНДАР
+ЧЕРЕВИЦКИ ДУШАН
+ЧЕРЕВИЦКИ ЈОВАН
+ЧЕРЕВИЦКИ ЉУБИЦА
+ЧЕРЕВИЦКИ МИТА
+ЧЕРЕВИЦКИ НАДА
+ЧЕРЕВИЦКИ РАДА
+ЧЕРЕВИЦКИ РУЖИЦА
+ЧЕРЕВИЦКИ СТЕВАН
+ЧЕРЕВИЦКИ СВЕТИСЛАВ
+ЧЕРЕВИЦКИ ТЕОДОР
+ЧЕРГЕ БЕЛА
+ЧЕРИ ЈОЖЕФ
+ЧЕРКЕЗ БОГДАНКА
+ЧЕРКЕЗ ДУШАНКА
+ЧЕРКЕЗ ЕВИЦА
+ЧЕРКЕЗ ЈОВАНКА
+ЧЕРКЕЗ СТЕВАН
+ЧЕРКЕЗОВ ДУШАНКА
+ЧЕРКИЋ ОСМАН
+ЧЕРКИЋ ВАСИЛИЈЕ
+ЧЕРНЧЕЦ ВЕРА
+ЧЕРНАК ЕВА
+ЧЕРНЕК-АПРО ЖУЖАНА
+ЧЕРНЕКА СТЕВАН
+ЧЕРНИ ИШТВАН
+ЧЕРНИЧЕК ЕРЖЕБЕТ
+ЧЕРНИЧЕК ИШТВАН
+ЧЕРНИЧЕК ИШТВАН
+ЧЕРНИЋ ДУШАН
+ЧЕРНИК АТИЛА
+ЧЕРНИК ЈОЖЕФ
+ЧЕРНИК МАРГИТА
+ЧЕРНИВЕЦ ТАТЈАНА
+ЧЕРЊА МАРИЈА
+ЧЕРЊА МАТИЛДА
+ЧЕРЊАК ЛАДИСЛАВ
+ЧЕРЊАНСКИ ДРАГОМИР
+ЧЕРЊЕВСКИ СВЕТИСЛАВ
+ЧЕРЊУШ ЈАКИМ
+ЧЕРНОГУБОВ БОРИС
+ЧЕРНУШ ИБОЉА
+ЧЕРНУШ ТИБОР
+ЧЕРОВИЋ РАТКО
+ЧЕРУБЏИЋ ДРАГОМИР
+ЧЕРУБЏИЋ ЈОВАН
+ЧЕРУБЏИЋ МАРГИТА
+ЧЕРУБЏИЋ МАРГИТА
+ЧЕРУПОЖИЋ ОЛГА
+ЧЕРВАРИ ЕРЖЕБЕТ
+ЧЕРВЕЊАК ЈЕЛИСАВЕТА
+ЧЕРВЕЊАК ЈОСИП
+ЧЕРВЕЊАК ЉУБИЦА
+ЧЕРВЕЊАК ОЛГА
+ЧЕРВЕЊАК ПЕТАР
+ЧЕРВЕЊАК ЗАГОРКА
+ЧЕРВЕНКО АЛЕКСАНДАР
+ЧЕРВЕНКО АНА
+ЧЕСАК АНДРИЈА
+ЧЕТЕ АРОН ДИПЛ ИНГ
+ЧЕТИЋ МИЛОРАД
+ЧЕТЛЕ МАРИЈА
+ЧЕТНИК БОГДАН
+ЧЕТНИК ЈОВАН
+ЧЕТНИК ЗАГОРКА
+ЧЕТНИКОВИЋ ПЕТАР ДИПЛ ОЕЦ
+ЧЕТОЈЕВИЋ МИЛКА
+ЧЕТОЈЕВИЋ РАДИВОЈЕ
+ЧЕВАРИ ЂОРЂЕ
+ЧЕВАРИ АНТАЛ
+ЧЕВАРИ МАРИЈА
+ЧЕВАРИ МИХАЈЛО
+ЧЕВАРИ ЗОЛТАН
+ЧИЧА ЈОВАН
+ЧИЧА НИКОЛА
+ЧИЧАИ ЈОЖЕФ
+ЧИЧАК АНКИЦА
+ЧИЧАК МИРКО
+ЧИЧАКИН АНЂЕЛКА
+ЧИЧАРЕВИЋ САВО
+ЧИЧЕК ДАНИЈЕЛ
+ЧИЧИЋ ДРАГОЉУБ
+ЧИЧИЋ МИЛЕ
+ЧИЧИЋ МИРОСЛАВ
+ЧИЧКОВИЋ СВЕТКО
+ЧИЧОВАЧКИ БОРИСЛАВ
+ЧИЧОВАЧКИ ДИМИТРИЈЕ
+ЧИЧОВАЦ ЂОРЂЕ
+ЧИЧОВАЦ КОСТА
+ЧИЧОВАЦ МИЛИЦА
+ЧИЧОВАЦ РАДОСЛАВ
+ЧИЧОВАЦ ВЛАДИМИР
+ЧИЖЕК ПАВЛЕ
+ЧИЖЕК СЛАВОМИР
+ЧИЖМЕШИЈА ИВАН
+ЧИБРИ ЈАНОШ
+ЧИБРИ ПИРОШКА
+ЧИЕФ ЈАН
+ЧИЕФ МАРТИН
+ЧИЕФ САМУЕЛ
+ЧИХИ ФЕРЕНЦ
+ЧИХИ ЈАНОШ
+ЧИХИ ЈАНОШ
+ЧИК АНДРИЈА
+ЧИК ИЛИЈА
+ЧИК ЈЕНЕ
+ЧИК ЗОЛТАН
+ЧИКИ ЈОСИП
+ЧИКИ МАРИЈА
+ЧИКИЋ ЂОРЂЕ
+ЧИКИЋ ЦВЕТОМИР
+ЧИКИЋ ДРАГИЦА
+ЧИКИЋ ЕМИЛ
+ЧИКИЋ ЕВИЦА
+ЧИКИЋ МИЛАН
+ЧИКИЋ НИКОЛА
+ЧИКИЋ СТЕВАН
+ЧИКОШ ЖУЖАНА
+ЧИКОШ ЂЕРЂ
+ЧИКОШ ЂОРЂЕ
+ЧИКОШ ЕРЖЕБЕТ
+ЧИКОШ ЕРЖЕБЕТ
+ЧИКОШ ФЕРЕНЦ
+ЧИКОШ ЈОСИП ДР
+ЧИКОШ ЈУЛИЈАНА
+ЧИКОШ ЛАДИСЛАВ
+ЧИКОШ ЛЕХЕЛ
+ЧИКОШ МАРИЈА
+ЧИКОЈЕВИЋ ВИНКО
+ЧИКОВИЋ СРЕТКО
+ЧИКВАР КАРЛО
+ЧИЛАГ ЈАНОШ
+ЧИЛАГ НАНДОР
+ЧИЛАГ НАНДОР
+ЧИЛЕГ ЕВА
+ЧИЛИЋ АВДО
+ЧИЛИЋ ИШТВАН
+ЧИЛИЋ ЈОСИП
+ЧИЛИЋ ЈУЛИАНА
+ЧИЛИЋ МАЛВИНА
+ЧИЛИЋ МАРКО
+ЧИЛИК АНКА
+ЧИЛИК ИЛОНКА
+ЧИЛИНГИРИС ПАВЛЕ
+ЧИНЧАК ГАБОР
+ЧИНЧУРАК МИХАЈЛО
+ЧИНЧУРАК ПАВЛЕ
+ЧИНЧУРАК СТЕВАН
+ЧИНЧУРЕК БОШКО
+ЧИНДРАК ДАУТ
+ЧИНДРАК САНИЈА
+ЧИП МАТО
+ЧИПАК-ФАЗЕКАШ ИБОЈА
+ЧИПЕ ЂОРЂЕ
+ЧИПЕ ЕРЖЕБЕТ
+ЧИПЕ ЕРЖИКА
+ЧИПЕ ФРАЊА
+ЧИПЕ ИРЕН
+ЧИПЕ ЈАНОШ
+ЧИПЕ ЈОСИП
+ЧИПЕ ЈУЛИЈАНА
+ЧИПЕ ЛАСЛО
+ЧИПЕ ЛАСЛО
+ЧИПЕ МАРИЈА
+ЧИПЕ МАРТА
+ЧИПЕ МИХАЉ
+ЧИПЕ МИХАЉ
+ЧИПЕ СТЈЕПАН
+ЧИПИЋ КАТИЦА
+ЧИПКАР АНДРЕЈ
+ЧИПКАР СТЕВАН
+ЧИПЛИЋ ЛАЗАР
+ЧИПЛИЋ МИЛАН
+ЧИПЛИЋ ВЕРА
+ЧИПЛИЋ ВИДА
+ЧИРХ ДЕЖЕ
+ЧИРХ ВАСКА
+ЧИРИЋ ЈОЖЕФ
+ЧИСАР ФЕРЕНЦ ДИПЛ ИНГ
+ЧИСАР ЛАСЛО
+ЧИТЛУЧАНИН МИЛИЦА
+ЧИВЧИЋ ЕРЖЕБЕТ
+ЧИВЧИЋ МИХАЈЛО
+ЧИВЧИЋ МИЛЕ
+ЧИВЧИЋ МИЉА
+ЧИВЧИЋ РАДОМИР
+ЧИВЧИЋ САВО
+ЧИВОВИЋ МИЛЕВА
+ЧИВОВИЋ РАДОВАН
+ЧИЗМАДИА ГУСТАВ
+ЧИЗМАДИА ВЕРОНИКА
+ЧИЗМАДИЈА ЂУЛА
+ЧИЗМАДИЈА ИШТВАН
+ЧИЗМАДИЈА ЈАНОШ
+ЧИЗМАДИЈА КАРОЉ
+ЧИЗМАДИЈА МИКИ
+ЧИЗМАР АНА
+ЧИЗМАР АНИЦА
+ЧИЗМАР ЈАНКО
+ЧИЗМАР ЈОАКИМ
+ЧИЗМАР ЛАЈОШ
+ЧИЗМАР МАРИЈА
+ЧИЗМАР МИРКО
+ЧИЗМАР ПАВЛЕ
+ЧИЗМАР СТЕВАН
+ЧИЗМАР ВЛАДИМИР
+ЧИЗМЕШИЈА МАГДА
+ЧИЗМИЋ АНИЦА
+ЧИЗМИЋ ИВАН
+ЧИЗМИЋ РАДА
+ЧИЗМИЋ ЗОРА
+ЧИЗМОВИЋ ВИДАК
+ЧМЕЛИК МАРТИН
+ЧМЕЛИК РАСТИСЛАВ
+ЧОЧАЈ СУЛО
+ЧОШКОВ НАДА
+ЧОАШ ИРЕНА
+ЧОБАН ЈОН
+ЧОБАН ЈОВАН
+ЧОБАН ЈОВАН
+ЧОБАН ЛИДИЈА
+ЧОБАН МАРИЈА
+ЧОБАН НИКУ
+ЧОБАНОВ ЖИВКА
+ЧОБАНОВ БИЉАНА
+ЧОБАНОВ ДРАГИЦА
+ЧОБАНОВ ДРАГОМИР
+ЧОБАНОВ ДУШАН
+ЧОБАНОВ ЈЕЛЕНА
+ЧОБАНОВ ЉИЉАНА
+ЧОБАНОВ МЕЛАНИЈА
+ЧОБАНОВ МИЉКА
+ЧОБАНОВ РУЖИЦА
+ЧОБАНОВ СЛОБОДАН
+ЧОБАНОВ СВЕТО
+ЧОБАНОВ ВАСА
+ЧОБАНОВ ВЛАДИСЛАВ
+ЧОБАНОВ ЗОРАН
+ЧОБАНОВИЋ БОШКО
+ЧОБАНОВИЋ БРАНИСЛАВ
+ЧОБАНОВИЋ ДРАГАН
+ЧОБАНОВИЋ ДРАГАН
+ЧОБАНОВИЋ ДРАГАН
+ЧОБАНОВИЋ ДУШАН
+ЧОБАНОВИЋ-ГЕЗ МАРИЈА
+ЧОБАНОВИЋ ИЛИЈА
+ЧОБАНОВИЋ ЈЕЛЕНА
+ЧОБАНОВИЋ ЛАЗАР
+ЧОБАНОВИЋ ЉИЉАНА
+ЧОБАНОВИЋ НИКОЛА
+ЧОБАНОВИЋ РАДМИЛА
+ЧОБАНОВИЋ САВА
+ЧОБАНОВИЋ САВО
+ЧОБАНОВИЋ СЛОБОДАН
+ЧОБАНОВИЋ ВАЛЕРИЈА
+ЧОБАНОВИЋ ЗОРАН
+ЧОБАНСКИ ДРАГАН
+ЧОБАНСКИ МИЛЕНА
+ЧОБАНСКИ РАДОЈКА
+ЧОБИЋ РЕЉА
+ЧОБИЋ СТРАХИЊА
+ЧОБИЋ ТИМОТЕЈ
+ЧОБОТ ИЛОНКА
+ЧОБРДА ЈАНКО
+ЧОБРДА ЈАНКО
+ЧОЈИЋ СТЕФАНИДА
+ЧОКА ИВАНКА
+ЧОКАШ ЛУЦИЈА
+ЧОКАН НИКОЛА
+ЧОКАНИЦА САВА
+ЧОКАНИЦА СОФИЈА
+ЧОКИЋ МИЛАН
+ЧОКЉАТ ЗДЕНКА
+ЧОКРЛИЋ БАРБАРА
+ЧОКРЛИЋ ЈОСИП
+ЧОЛАК АЛЕКСАНДАР
+ЧОЛАК ДРАГОЉУБ
+ЧОЛАК ДРАГОЉУБ
+ЧОЛАК ГОРАН
+ЧОЛАК КРИСТИНА
+ЧОЛАК МИХАЈЛО
+ЧОЛАК-МИХАЛИК МАРИЈА
+ЧОЛАКОВ МИЛАН
+ЧОЛАКОВ МИЛЕ
+ЧОЛАКОВ ПАВЛЕ
+ЧОЛАКОВИЋ АНЂЕЛКА
+ЧОЛАКОВИЋ МОМА
+ЧОЛАКОВИЋ НИКОЛА
+ЧОЛАКОВИЋ СВЕТОЗАР
+ЧОЛАКОВИЋ ТЕОДОР
+ЧОЛАКОВИЋ ВАЊА
+ЧОЛЕВИЋ СВЕТИСЛАВ
+ЧОЛИЋ ЂУРО
+ЧОЛИЋ АНЂЕЛКА
+ЧОЛИЋ БОРО
+ЧОЛИЋ ДЕСА
+ЧОЛИЋ ДУШАН
+ЧОЛИЋ ДУШКО
+ЧОЛИЋ ЕЛИЗАБЕТА
+ЧОЛИЋ-ГАЋЕША СЛАВИЦА
+ЧОЛИЋ ИВАН
+ЧОЛИЋ ЈОВАНКА
+ЧОЛИЋ ЈОВАН
+ЧОЛИЋ ЈОВАН
+ЧОЛИЋ ЛУКА
+ЧОЛИЋ МАРА
+ЧОЛИЋ МАРИЈА
+ЧОЛИЋ МИЛАН
+ЧОЛИЋ МИЛАН
+ЧОЛИЋ МИЛАН
+ЧОЛИЋ МИРЈАНА
+ЧОЛИЋ МИРКО
+ЧОЛИЋ МИРОСЛАВКА
+ЧОЛИЋ ПЕТАР
+ЧОЛИЋ РАДА
+ЧОЛИЋ РАДМИЛА
+ЧОЛИЋ РИСТО
+ЧОЛИЋ САВА
+ЧОЛОВИЋ БОГОЉУБ
+ЧОЛОВИЋ ДРАГАН
+ЧОЛОВИЋ ДУШАН
+ЧОЛОВИЋ МИЛЕ
+ЧОЛОВИЋ МИЛИЈАНА
+ЧОЛОВИЋ ОЛГА
+ЧОЛОВИЋ ПЕТАР
+ЧОЛОВИЋ РАДОСЛАВ
+ЧОЛОВИЋ РАДОВАН
+ЧОЛОВИЋ СТЕВАН
+ЧОЛОВИЋ ВИДОСАВ
+ЧОЛОВИЋ ВЛАДО
+ЧОМА ЂУЛА
+ЧОМА ЂУЛА
+ЧОМИЋ ЂУРЂИНА
+ЧОМИЋ ДАРА
+ЧОМИЋ ДРАГАН
+ЧОМИЋ ДУШАНКА
+ЧОМИЋ ЕРЖЕБЕТ
+ЧОМИЋ ИЛИЈА
+ЧОМИЋ ЈАШКО
+ЧОМИЋ ЈАШКО
+ЧОМИЋ КРСТА
+ЧОМИЋ ЛИДИЈА
+ЧОМИЋ ЉУБОМИР
+ЧОМИЋ МИЛОШ
+ЧОМИЋ МИРОЉУБ
+ЧОМИЋ МЛАДЕН
+ЧОМИЋ СЛОБОДАН
+ЧОМИЋ СМИЉАНА
+ЧОМИЋ ТОДОР
+ЧОМИЋ ТОДОР
+ЧОМОР ИЛОНКА
+ЧОМОР МАТИЛДА
+ЧОНГРАДАЦ ДАНИЈЕЛА
+ЧОНГРАДАЦ ИВАНКА
+ЧОНГРАДАЦ РАДОСЛАВ
+ЧОНИЋ АНКА
+ЧОНИЋ МИЛЕНКО
+ЧОНИЋ МИЛОШ
+ЧОНИЋ ПЕТАР
+ЧОНИЋ ТИЈАНА
+ЧОНИЋ ЗОРАН
+ЧОНКА ЂЕРЂ
+ЧОНКА ГОРДАНА
+ЧОНКА КАРОЉ
+ЧОНКА ПЕТАР
+ЧОНКАШ ЕМИЛ
+ЧОНКАШ ГАБРИЕЛА
+ЧОНКАШ ЛАДИСЛАВ
+ЧОНКИЋ ЖИВКО
+ЧОНКИЋ АЛЕКСА
+ЧОНКИЋ БИЉАНА
+ЧОНКИЋ БОГОЉУБ ЛЕКАР
+ЧОНКИЋ БОРИСЛАВ
+ЧОНКИЋ ДРАГАН
+ЧОНКИЋ ЈЕЛА
+ЧОНКИЋ ЈУДИТ
+ЧОНКИЋ ЉИЉАНА
+ЧОНКИЋ МАРИЈА
+ЧОНКИЋ МИЛАНКА
+ЧОНКИЋ МИЛЕНА
+ЧОНКИЋ МИЛОШ
+ЧОНКИЋ МИЛОРАД
+ЧОНКИЋ МИЛОРАД
+ЧОНКИЋ МИЛОВАН
+ЧОНКИЋ МОМЧИЛО ДИПЛ ИНГ
+ЧОНКИЋ НЕБОЈША
+ЧОНКИЋ НЕСТОР
+ЧОНКИЋ ПЕТАР
+ЧОНКИЋ РАДЕНКО
+ЧОНКИЋ РАДОСЛАВ
+ЧОНКИЋ САША
+ЧОНКИЋ СЛАВКО
+ЧОНКИЋ СЛОБОДАН
+ЧОНКИЋ СНЕЖАНА
+ЧОНКИЋ СТАМЕНА
+ЧОНКИЋ СТЕВАН
+ЧОНКИЋ ТИХОМИР
+ЧОНТОШ ЈОЖЕФ
+ЧОНТОШ ЗОРА
+ЧОПЧИЋ МАРТИН
+ЧОПИК ПЕТАР
+ЧОПИК ВАСИЛИЈА
+ЧОПОРДА ВУКОСАВА
+ЧОР ФРАЊА
+ЧОР ЈОСИП
+ЧОРАК ЈОСИП
+ЧОРАК СТИПЕ
+ЧОРАЛИЋ ИВАНКА
+ЧОРБА ЂЕРЂ
+ЧОРБА ИШТВАН
+ЧОРБА ЈОВАН
+ЧОРБА ЈОВАН
+ЧОРБА МИХАЉ
+ЧОРДА АЛЕКСАНДРА
+ЧОРДА АЛИЈА
+ЧОРДА НАДЕЖДА
+ЧОРДА ТОМИСЛАВ
+ЧОРДА ВЕРА
+ЧОРДАШ АНДРИЈА
+ЧОРДАШ АРПАД
+ЧОРДАШ ДУШАНКА
+ЧОРДАШ ЕРЖЕБЕТ
+ЧОРДАШ ХАРГИТА
+ЧОРДАШ ИРЕНА
+ЧОРДАШ ЛАСЛО
+ЧОРДАШ МИХАЉ
+ЧОРДАШ СЛАВКО
+ЧОРДАР БРАНКО
+ЧОРДАРЕВ ЉИЉАНА
+ЧОРДАРЕВ ВЕРА
+ЧОРДАРОВ БОРИСЛАВКА
+ЧОРДАРОВ ИВАН
+ЧОРДАРОВ СВЕТИСЛАВ
+ЧОРДАРОВ ТЕОДОР
+ЧОРДАРОВ ТЕОДОР
+ЧОРИЋ МАРИЈАН
+ЧОРНЕНКИ БОРИСЛАВ
+ЧОРНЕНКИ ДРАГОЉУБ
+ЧОРНЕНКИ ЈОВАН
+ЧОРНЕНКИ ВЛАДА
+ЧОРНИ МИЛУНА
+ЧОРНИЈ МИРОСЛАВ
+ЧОРТАН ЖИВКО
+ЧОРТАН БОШКО
+ЧОРТАН МИЛИЦА
+ЧОРТАН НАДА
+ЧОРТАН РАДИВОЈ
+ЧОРТАНОВАЧКИ СЛОБОДАН
+ЧОВИЋ ДАРКО
+ЧОВИЋ ДАРКО
+ЧОВИЋ ДРАГАН
+ЧОВИЋ ГУСТАВ
+ЧОВИЋ ИВАН
+ЧОВИЋ ЈАНКО
+ЧОВИЋ ЈОСИП
+ЧОВИЋ КОВИЉКА
+ЧОВИЋ КРСТО
+ЧОВИЋ ЛАДА
+ЧОВИЋ МАРИЈАНА
+ЧОВИЋ МИЛАН
+ЧОВИЋ МИЛЕВА
+ЧОВИЋ МОМИР
+ЧОВИЋ ОЛГА
+ЧОВИЋ ПЕТАР
+ЧОВИЋ РАДОШ
+ЧОВИЋ РАДОСЛАВ
+ЧОВИЋ РАТКО
+ЧОВИЋ СНЕЖАНА
+ЧОВИЋ СТАНКО
+ЧОВИЋ ВЛАДА
+ЧОВИЋ ВЛАТКО
+ЧОВИЋ ЗОРИЦА
+ЧОВИЛО БРАНИСЛАВ
+ЧОВС ЈАША
+ЧОВС ПАВЛЕ
+ЧОВС ПАВЛЕ
+ЧОВС ВЕРИЦА
+ЧРЕТНИК-ЦВЕЈАНОВИЋ ОЛГА ДИПЛ ИНГ
+ЧРЊЕКА ЗЛАТКО
+ЧРНОЈАЧКИ ДАНИСЛАВ
+ЧУЧ ЈЕЛЕНА
+ЧУЧ МАРИЈА
+ЧУЧИЛОВИЋ БРАНКА
+ЧУЧКОВИЋ ЧЕДО
+ЧУЧКОВИЋ ЖЕЉКО
+ЧУЧКОВИЋ ЂУРО
+ЧУЧКОВИЋ БОЖИДАР
+ЧУЧКОВИЋ ДРАГАН
+ЧУЧКОВИЋ РАДОЈКА
+ЧУЧКОВИЋ САВА ДИПЛ ИНГ
+ЧУЧКОВИЋ СЛОБОДАН
+ЧУЧКОВИЋ СПАСА
+ЧУЧКОВИЋ ВЛАДИМИР
+ЧУЧУЛИС ДИМИТРИЈЕ
+ЧУБРАНОВИЋ РАДОМИР
+ЧУБРИЛО АНКА
+ЧУБРИЛО ДРАГАН
+ЧУБРИЛО ДУШАН
+ЧУБРИЛО ЈОВО
+ЧУБРИЛО ЛАЗО
+ЧУБРИЛО МИЛАН
+ЧУБРИЛО ПЕТАР
+ЧУБРИЛО СОФИЈА
+ЧУБРИЛО ВЛАДИМИР
+ЧУБРИЛОВИЋ МИЛАН
+ЧУБРОВИЋ СТЕВАН
+ЧУДАНОВ ЧЕДА
+ЧУДАНОВ АЛЕКСАНДАР
+ЧУДАНОВ МАРИЈА
+ЧУДАНОВ МИЛИЦА
+ЧУДИЋ ИВАН
+ЧУДИЋ ЈОВАНКА
+ЧУДИЋ МИЛОРАД
+ЧУДИЋ НИКОЛА
+ЧУДИЋ ПРЕДРАГ
+ЧУДИЋ СЛОБОДАН
+ЧУДОМИРОВИЋ БОГДАН
+ЧУДОМИРОВИЋ УРОШ
+ЧУГАЉ АНКА
+ЧУГАЉ МИРЈАНА
+ЧУГАЉ СВЕТО
+ЧУГЕЉ АНГЕЛИНА
+ЧУХА МАРИЈА
+ЧУХА ПАВЛЕ
+ЧУХА СЛАВКО
+ЧУХА СТЕВАН
+ЧУХА-ВУЈКОВ РУЖА
+ЧУХА ЗЛАТА
+ЧУЈАНОВ БОРИС
+ЧУКА ВЈЕКОСЛАВ
+ЧУКАЉИЋ НЕВЕНКА
+ЧУКИЋ БОРИВОЈЕ
+ЧУКИЋ МИЛКА
+ЧУКИЋ МИРСАДА
+ЧУКИЋ СЛОБОДАН
+ЧУКИЋ ЗОРАН
+ЧУКЉАШ ИВАН
+ЧУКЉЕК ФРАЊА
+ЧУКЉЕК МАРГИТА
+ЧУКЉЕВИЋ БУДИМКА
+ЧУКОВИЋ СЛАВКО
+ЧУКУРАНОВИЋ ЖИКА
+ЧУКУРАНОВИЋ МИЈА
+ЧУЛАЈЕВИЋ ЈОВАН
+ЧУЛАЈЕВИЋ СТАНКО
+ЧУЛИЋ ЈОВА
+ЧУЛИК ХАЈНЕРИК
+ЧУЛИНА ЖЕЉКО
+ЧУЉАК ДРАГА
+ЧУЉАК ИВАН
+ЧУЉАК КАРЛО
+ЧУЉАК МИРКО
+ЧУЉАК НАДА
+ЧУЉАТ ДАНЕ
+ЧУЉАТ ЈАКОВ
+ЧУЉИЋ ЖИВОЈИН
+ЧУЛО БОЖА
+ЧУЛО МАРКО
+ЧУЛО МАТО
+ЧУНКО БРАНКО
+ЧУПАК АЛЕКСАНДАР
+ЧУПЕЉИЋ МИЛИВОЈЕ
+ЧУПИЋ ЂОРЂЕ
+ЧУПИЋ БОЖИДАР
+ЧУПИЋ БОЈАН
+ЧУПИЋ БРАНИСЛАВ
+ЧУПИЋ ДРАГАН
+ЧУПИЋ ДУШАН
+ЧУПИЋ ХРИСТИФОР
+ЧУПИЋ ЈЕЛЕНА
+ЧУПИЋ КАЈКА
+ЧУПИЋ КАЈКА
+ЧУПИЋ КАТИЦА
+ЧУПИЋ КАТИЦА
+ЧУПИЋ КОСТАДИНКА
+ЧУПИЋ КРИСТИНА
+ЧУПИЋ ЉУБОМИР
+ЧУПИЋ МИЛАН
+ЧУПИЋ МИЛИЦА
+ЧУПИЋ МИОДРАГ
+ЧУПИЋ МИОДРАГ
+ЧУПИЋ МИОДРАГ
+ЧУПИЋ МИРЈАНА
+ЧУПИЋ МИРОСЛАВ
+ЧУПИЋ ОЛГА
+ЧУПИЋ РАДИНКА
+ЧУПИЋ РАДОСЛАВ
+ЧУПИЋ СПОМЕНКА
+ЧУПИЋ СТЕВАН
+ЧУПИЋ СТЕВАН
+ЧУПИЋ СТОЈАН
+ЧУПИЋ УРОШ
+ЧУПИЋ ЗОРАН
+ЧУРЧИЋ ДУШАН
+ЧУРЧИЋ ИЛИЈА
+ЧУРЧИЋ ЛАЗАР
+ЧУРЧИЋ СЛОБОДАНКА
+ЧУРГАНОВ ЕМИЛ
+ЧУРИЋ ЖАРКО
+ЧУРИЋ ЂОРЂЕ
+ЧУРИЋ ДРАГОСЛАВА
+ЧУРИЋ ДУШАНКА
+ЧУРИЋ МИЛЕНА
+ЧУРИЋ МИЛОШ
+ЧУРИЋ НАТАЛИЈА
+ЧУРИЋ РАДОСЛАВ ДР ПРОФ
+ЧУРИЋ СЛОБОДАН
+ЧУРИЋ ВАСА
+ЧУРИЋ ВЕЛИНКА
+ЧУРИЋ ВИДОСАВА
+ЧУРИЋ ВИДОСАВА
+ЧУРОВИЋ ДАНИЛО
+ЧУРОВИЋ ВУКСАН
+ЧУРУШКИ ГАВРА
+ЧУРУШКИ МИЦА
+ЧУСТОВИЋ АРИФ
+ЧУТУРА МАРКО
+ЧУТУРИЋ ЈЕРОНИМ
+ЧУТУРИЛО ЧЕДОМИР
+ЧУТУРИЛО БОЖА
+ЧУТУРИЛО МИЛИВОЈЕ
+ЧУТУРИЛО СЛОБОДАН ДИПЛ ИНГ
+ЧУТУРИЛОВ МАРИЈА
+ЧУТУРИЛОВ МИЛОШ
+ЧУТУРИЛОВ МИЛОШ
+ЧУТУРИЛОВ СВЕТОЗАР
+ЧУТУРИЛОВ ВЕЛИНКА
+ЧУТУРИЛОВ ВУЈИЦА
+ЧУВАЛО ЉУБИЦА
+ЧУВАРДИЋ АНТУН
+ЧВОКИЋ МАРКО
+ЧВОКИЋ РАТКО
+ЧВОРИЋ ДУШАН
+ЧВОРИЋ МИЛОЈЕ
+ЧВОРКОВ ЉУБОМИР
+ЧВОРКОВ ЗДРАВКО
+ЧВОРКОВ ЗЛАТАН
+ЧВОРО-ЂУКИЋ ДУШАНКА
+ЧВОРО ДОБРОСЛАВ
+ЧВОРОВИЋ ЈЕЛЕНКА
+ЧВОРОВИЋ ЉУБО
+ЧВОРОВИЋ РАТКО
+ЧВОРОВИЋ ВУЈИЦА
+ШЋЕКИЋ БУДИМИР
+ШЋЕКИЋ ДРАГОМИР
+ШЋЕКИЋ КОСА
+ШЋЕКИЋ МИЛАНКА
+ШЋЕКИЋ МИЛИЋ
+ШЋЕКИЋ МИЛИЦА
+ШЋЕКИЋ МИОМИР
+ШЋЕКИЋ СЛОБОДАН
+ШЋЕКИЋ СВЕТОЗАР
+ШЋЕКИЋ ВУКО
+ШЋЕПАНЧЕВИЋ ЂОРЂЕ
+ШЋЕПАНЧЕВИЋ НИКОЛА
+ШЋЕПАНОВИЋ БОГОЉУБ
+ШЋЕПАНОВИЋ БРАНИСЛАВ
+ШЋЕПАНОВИЋ ДОБРОСЛАВА
+ШЋЕПАНОВИЋ ДРАГАН
+ШЋЕПАНОВИЋ ДРАГАН
+ШЋЕПАНОВИЋ ДРАГУТИН
+ШЋЕПАНОВИЋ ДУШАН
+ШЋЕПАНОВИЋ ГОРАН
+ШЋЕПАНОВИЋ ГОРДАНА
+ШЋЕПАНОВИЋ ЉУБОМИР
+ШЋЕПАНОВИЋ МИЛЕВА
+ШЋЕПАНОВИЋ МИЛОВАН
+ШЋЕПАНОВИЋ МИОДРАГ
+ШЋЕПАНОВИЋ РАШКО
+ШЋЕПАНОВИЋ РАДОВАН
+ШЋЕПАНОВИЋ РАНКО ДИПЛ ИНГ
+ШЋЕПАНОВИЋ СИНИША
+ШЋЕПАНОВИЋ ЗОРАН
+ШЋЕПАНОВИЋ ЗОРА
+ШЋЕПОВИЋ ПЕТАР
+ШЋЕРБАЋЕВ ГЛИГОРИЈЕ
+ШЋЕВЧИК ПАВЛЕ
+ШЋИБАН МАРИНА
+ШЋОПИЋ МИОДРАГ
+ШЋОПИЋ СТАНИМИР
+ШЋОПУЛОВИЋ ПЕТАР
+ШЋУРИЦ ЈОСИП
+ШАШИЋ ЖИВКО
+ШАШИЋ ЂОРЂЕ
+ШАШИЋ ДУШАН
+ШАШИЋ МИЛАН
+ШАШИЋ МИЛАН
+ШАШИЋ МИЛОШ
+ШАШИЋ МИРКО
+ШАШИЋ НЕВЕНКА
+ШАШИЋ ПЕТАР
+ШАШИЋ САВО
+ШАШИЋ СТЕВАН
+ШАШИЋ ЗОРАН
+ШАШИН ДАНИЦА
+ШАШИН РАДОМИР
+ШАШИНАЧКИ МАРИЈА
+ШАШИНАЧКИ СОЊА
+ШАШИНАЧКИ ВАСИЛИЈЕ
+ШАШЉИН ЛАЗАР
+ШАШОВИЋ ТРИФКО
+ШАБАНИ НАЗИМ
+ШАБАНОВИЋ АБДУРАХМАН
+ШАБАНОВИЋ ОБРАД
+ШАБЕЦ ДРАГИЦА
+ШАБИЋ ЂУРО
+ШАБИЋ ХУСЕИН
+ШАБИЋ ПАВЛЕ
+ШАБЛИ МАРТОН
+ШАБЛИ МИХАЈЛО
+ШАБОВИЋ МЕХМЕДАЛИЈА
+ШАДЕ ЈЕЛЕНА
+ШАФАРИК ЉИЉАНА
+ШАФРАЊ АНДРИЈА
+ШАФРАЊ ДЕЖЕ
+ШАФРАЊ ФРАЊА
+ШАФРАЊ ЛАСЛО
+ШАФРАЊ ЛАСЛО
+ШАФРАЊ ПИРОШКА
+ШАФРАЊ СТЕВАН
+ШАФРАЊ ТЕОДОРА
+ШАГУНОВИЋ ДУШАН
+ШАГУНОВИЋ МИЛИВОЈ
+ШАИН АНДРИЈА
+ШАИН МИЛЕВА
+ШАИН ЗАГОРКА
+ШАИНОВИЋ ДУШАН
+ШАИНОВИЋ МАРИНА
+ШАЈАТОВИЋ ЈЕЛИЦА
+ШАЈАТОВИЋ ЗДРАВКО
+ШАЈБЕР ДАНИЦА
+ШАЈБЕР МИЛЕНКО
+ШАЈДИК ФРАНЦИШКА
+ШАЈФАР ПАВЛЕ
+ШАЈИН МИЛОРАД
+ШАЈИНОВИЋ ДРАГОСЛАВ
+ШАЈИНОВИЋ ДУШАН
+ШАЈИНОВИЋ ГОРДАНА
+ШАЈИНОВИЋ МАРИНКО
+ШАЈИНОВИЋ СИДА
+ШАЈН ДУШАН
+ШАЈНБЕРГЕР ЈОВАН
+ШАЈНБЕРГЕР ЛИЛИ
+ШАЈНОВ ЈОВАН
+ШАЈНОВ КАТИЦА
+ШАЈНОВ ПЕТАР
+ШАЈНОВИЋ РАДИНКА
+ШАЈТИ ЕТЕЛКА
+ШАЈТИ ГИЗЕЛА
+ШАЈТИ КАТИЦА
+ШАЈТИ МАРИЈА
+ШАЈТОШ ЂОРЂЕ
+ШАЈТОШ ЂУРА
+ШАЈТОШ ЉУБИША
+ШАЈТОШ НИКОЛА
+ШАЈТОШ СИМА
+ШАЈТОШ СИМА
+ШАКИЋ ЖЕЉКО
+ШАКИЋ ЂОРЂЕ
+ШАКИЋ ИЛИЈА
+ШАКИЋ ИЛИЈА
+ШАКИЋ ИЛИЈА
+ШАКИЋ ЈАЊА
+ШАКИЋ КАТА
+ШАКИЋ МАНЕ
+ШАКИЋ МИЛУТИН
+ШАКИЋ РАДЕ
+ШАКИЋ ЗОРКА
+ШАКОТА ДУШАН
+ШАКОТА КОЈО
+ШАКОТА МИЛАН
+ШАКОТА МИЛОРАД
+ШАКОТА СИМЕОН
+ШАКОТИЋ ЉУБОМИР
+ШАКОТИЋ МИРЈАНА
+ШАКУ МЕХМЕД
+ШАЛАБАЛИЈА ДРАГОМИР
+ШАЛАБАЛИЈА ВАСО
+ШАЛАЈИЋ СТЕВАН
+ШАЛАМОН ШАНДОР
+ШАЛАМОН АНДРИЈА
+ШАЛАМОН ЈОСИП
+ШАЛАМОН ЈОСИП
+ШАЛАМОН МИША
+ШАЛАМОН МИХАЈЛО
+ШАЛАМОН МИХАЈЛО
+ШАЛАНКИ ЈАНОШ
+ШАЛАНКИ ЈАНОШ
+ШАЛБОТ ЗУЗА
+ШАЛЕР ВЕРА
+ШАЛГО ЈЕЛИСАВЕТА
+ШАЛИПУРОВИЋ МИЛОВАН
+ШАЛИПУРОВИЋ СЛАВИША
+ШАМАТИЋ НЕМАЊА
+ШАМЕЦ МИЛИЦА
+ШАНДОЛ АТИЛА
+ШАНДОЛ АТИЛА
+ШАНДОЛ ИШТВАН
+ШАНДОЛ КАТИЦА
+ШАНДОЛ МАТИЈА
+ШАНДОЛ МИХАЈЛО
+ШАНДОР ИЛОНА
+ШАНДОР ЈОСИП
+ШАНДОР ЛАДИСЛАВ
+ШАНДОР МАРИЈА
+ШАНДОР ТИБОР
+ШАНДОРИ ШАРИКА
+ШАЊИЋ МИЛАДИН
+ШАНОВИЋ ДУШАН
+ШАНТА ШАНДОР
+ШАНТА АМАЛИЈА
+ШАНТА БЕЛА
+ШАНТА ДУШАНКА
+ШАНТА ФЕРЕНЦ
+ШАНТА ИШТВАН
+ШАНТА ИЛОНКА
+ШАНТА ИМРЕ
+ШАНТА ЈОСИП
+ШАНТА ЛАСЛО
+ШАНТА МИРОСЛАВ
+ШАНТА ПАЛ
+ШАНТА СИМА
+ШАНТА СЛАВКО
+ШАНТА СОФИЈА
+ШАНТА СТЕВАН
+ШАНТА ВИНКО
+ШАНТА ВЛАДИМИР
+ШАНТАК ЈОСИП
+ШАНТАК КАРЛО
+ШАНТАЛАБ СОФИЈА
+ШАНТЕК ЖЕЉКО
+ШАНТЕК ЗДЕНКА
+ШАПИ ПИРОШКА ДИПЛ ИНГ
+ШАПИЋ НИКОЛА
+ШАПИНА МИРОСЛАВ
+ШАПОЊА ЈОВАН
+ШАПОЊА МАРКО
+ШАПОЊАЦ ЖАРКО
+ШАПОЊАЦ ЖАРКО
+ШАПОЊАЦ АЛЕКСАНДАР
+ШАПОЊАЦ ЈЕЛКА ПРОФЕСОР
+ШАПОЊАЦ РАДА
+ШАПОЊАЦ СТЕВАН
+ШАПОЊСКИ РАДИВОЈ
+ШАПУРИЋ СВЕТОЗАР
+ШАРЧАНСКИ ЈУЛКА
+ШАРЧАНСКИ МИЛИЦА
+ШАРЧАНСКИ МИРОСЛАВ
+ШАРЧЕВ АНТОНИЈА
+ШАРЧЕВ ЈЕЛЕНА
+ШАРЧЕВ МИРОСЛАВА
+ШАРЧЕВ НИКОЛА
+ШАРЧЕВ ВЛАДИМИР
+ШАРЧЕВИЋ ЖАРКО
+ШАРЧЕВИЋ ЖЕЛИМИР
+ШАРЧЕВИЋ АНИЦА
+ШАРЧЕВИЋ БРАТИМИР
+ШАРЧЕВИЋ ДУШАН
+ШАРЧЕВИЋ ГРОЗДАНА
+ШАРЧЕВИЋ ИЛКА
+ШАРЧЕВИЋ КАТИЦА
+ШАРЧЕВИЋ МАРГИТА ДР
+ШАРЧЕВИЋ МИЛЕНА
+ШАРЧЕВИЋ НЕБОЈША
+ШАРЧЕВИЋ ПЕТАР
+ШАРЧЕВИЋ ПРЕДРАГ
+ШАРЧЕВИЋ РАЈКО
+ШАРЧЕВИЋ ВИДОЈЕ
+ШАРЧЕВИЋ ВОЈИСЛАВ
+ШАРШАНСКИ МАРИНКО
+ШАРШАНСКИ МИЛАН
+ШАРА ИМРЕ
+ШАРА ИМРЕ
+ШАРАЦ ЂОРЂЕ
+ШАРАЦ БИЉАНА
+ШАРАЦ БОШКО
+ШАРАЦ ДУШАН
+ШАРАЦ ДУШАН
+ШАРАЦ МИЛАН
+ШАРАЦ МИЛЕ
+ШАРАЦ МИЛИЦА
+ШАРАЦ МИОДРАГ
+ШАРАЦ РАДОЈЕ
+ШАРАЦ РАДОМИР
+ШАРАЦ РАДОВАН
+ШАРАЦ РУЖИЦА
+ШАРАЦ СТЕВА
+ШАРАЦ СВЕТОЗАР
+ШАРАНДИ ШАНДОР
+ШАРАНОВИЋ АНИТА
+ШАРАНОВИЋ ДРАГИША
+ШАРАНОВИЋ МИЛАДИН ДР ЛЕКАР
+ШАРАНОВИЋ МИЛОШ
+ШАРАНОВИЋ МИОДРАГ
+ШАРАНОВИЋ ЗОРАН
+ШАРЕНАЦ БОЖИДАР
+ШАРЕНАЦ МАРКО
+ШАРЕНАЦ РОЗИНА
+ШАРЕНАЦ ВИДАК
+ШАРЕНАЦ ВОЈИСЛАВ
+ШАРГАЧ БРАНКО
+ШАРГИЋ МИЛОРАД
+ШАРГИЋ ВЛАДИМИР
+ШАРГИЋ ЗЛАТИЦА
+ШАРГИН ЖАРКО
+ШАРГИН МАРИЈА
+ШАРИ МАРИЈА
+ШАРИ СТЕВАН
+ШАРИЋ ЈОСИП
+ШАРИЋ КАТАРИНА
+ШАРИЋ КОСТА
+ШАРИЋ ЉУБИЦА
+ШАРИЋ МАРИЈА
+ШАРИЋ МАТО
+ШАРИЋ НЕНАД
+ШАРИЋ СЛОБОДАН
+ШАРИЋ СОФИЈА
+ШАРИЋ СТЕВАН
+ШАРИЋ ТОМИСЛАВ МР
+ШАРИЋ ЗВЕЗДАНА
+ШАРИК АНА
+ШАРИК АНДРИЈА
+ШАРИК ЈОВАН
+ШАРИК КАТИЦА
+ШАРИК ЉУБИЦА
+ШАРИК МИРОСЛАВ
+ШАРИК СТЕВАН
+ШАРИК-ВИДИЋ НАДА
+ШАРИК ВЛАДИМИР
+ШАРКАДИ ВЕРОНИКА
+ШАРКАЊ АНТОН
+ШАРКАЊ ФЕРЕНЦ
+ШАРКАЊ ФРАЊА
+ШАРКАЊ ЈАНОШ
+ШАРКАЊАЦ ФЕРЕНЦ
+ШАРКЕЗИ-ПЕТРИЋ МАРГИТА
+ШАРКИЋ СРЂАН
+ШАРКОВИЋ ДУШАН
+ШАРКОВИЋ МИОДРАГ ДР
+ШАРКОВИЋ ЗОРАН
+ШАРЊАИ АНКИЦА
+ШАРЊАИ МИКЛОШ
+ШАРЊАИ ПАЛ
+ШАРО ЈОВАН
+ШАРО НАДА
+ШАРОШИ ВАЛЕРИЈА
+ШАРОШКОВИЋ ВУКИЦА
+ШАРОИ-САБО ВЕРА
+ШАРОВИЋ ЂУРО
+ШАРОВИЋ МИРКО
+ШАРОВИЋ ПЕТАР
+ШАРУ ДУШИЦА
+ШАРВАРИ ШАНДОР
+ШАРВАРИ КАРОЉ
+ШАРВАРИ МАРТА
+ШАРВАРИ РОЗАЛИЈА
+ШАРВАРИ ВАЛЕРИЈА
+ШАСИВАР АХМЕД
+ШАТАРА МИЛАН
+ШАТОРА СТОЈАН
+ШАТРИЋ АНА
+ШАТРИЋ БРАНИСЛАВ
+ШАУЛА ГОРАН
+ШАУЛА РАДОВАН
+ШАУЛИЋ ДИМИТРИЈЕ
+ШАВЕЛИН ШАНДОР
+ШАВЕЛИН ЈОСИП
+ШАВЕЛИН ЈОВАН
+ШАВЕЛИН ЈУЛИЈА
+ШАВЕРДИЈА НИКОЛА
+ШАВИЈА ДУШАН
+ШАВИЈА МИЛЕ
+ШАВИЈА МИЛОРАД
+ШАВИЈА ПЕТАР
+ШАВИЈА РАДЕ
+ШАВРЉУГА МИЛАН
+ШЕЧИЋ АЛИЈА
+ШЕЧИЋ ЈУЛКА
+ШЕША СЛАВКО
+ШЕШЕЉА БРАНИМИР
+ШЕШЕЉА МАРИЈАН
+ШЕШЕРИНАЦ ЂОРЂЕ
+ШЕШЕВИЋ ЂОРЂЕ
+ШЕШЕВИЋ ДРАГИЦА
+ШЕШЕВИЋ ЛЕОНА
+ШЕШЕВИЋ ЉИЉАНА
+ШЕШЕВИЋ МАРА
+ШЕШЕВИЋ МИЛИВОЈ
+ШЕШЕВИЋ СТЕВАН
+ШЕШИЋ ЖИВОТА ДИПЛ ИНГ
+ШЕШИЋ АУРЕЛИЈА
+ШЕШИЋ ДРАГОЉУБ
+ШЕШИЋ ДРАГОЉУБ
+ШЕШИЋ ВЕРА
+ШЕШИЋ ВИДА
+ШЕШКАР НАДА
+ШЕШЛИЈА ЧЕДА
+ШЕШЛИЈА БРАНКО
+ШЕШЛИЈА ДРАГАН
+ШЕШЛИЈА ДУШАН
+ШЕШУМ БРАНКО
+ШЕШУМ ДРАГОЉУБ
+ШЕШУМ ИЛИЈА
+ШЕШУМ МИХАЈЛО
+ШЕШУМ МИЛАН
+ШЕШУМ МИЛАН
+ШЕШУМ МИЛЕНКО
+ШЕШУМ САВА
+ШЕШУМ СЛАВИЦА
+ШЕШУМ ТОМА
+ШЕЋЕРОВ АНЂЕЛИЈА
+ШЕЋЕРОВ БИЉАНА
+ШЕЋЕРОВ БРАНИСЛАВ
+ШЕЋЕРОВ ДРЕНКА
+ШЕЋЕРОВ ДУШАН
+ШЕЋЕРОВ ЕМИЛ
+ШЕЋЕРОВ ИДА
+ШЕЋЕРОВ ИВАН
+ШЕЋЕРОВ ЈОВАН
+ШЕЋЕРОВ КАЈА
+ШЕЋЕРОВ МАТА
+ШЕЋЕРОВ МИЛАН
+ШЕЋЕРОВ ПАВЛЕ
+ШЕЋЕРОВ ПЕТАР ДИПЛ ИНГ
+ШЕЋЕРОВ ПЕТАР
+ШЕЋЕРОВ ПРОДАН
+ШЕЋЕРОВ РАДОСЛАВ
+ШЕЋЕРОВ САВА
+ШЕЋЕРОВ СИНИША
+ШЕЋЕРОВ СВЕТЛАНА
+ШЕЋЕРОВ СВЕТОЗАР
+ШЕЋЕРОВ СВЕТОЗАР
+ШЕЋЕРОВ СВЕТОЗАР
+ШЕЋЕРОВ ЗЛАТОЈЕ
+ШЕЋЕРОВ ЗЛАТОЈЕ
+ШЕБЕШЋЕН ИМРЕ
+ШЕБЕШЋЕН ЈОЖЕФ
+ШЕБЕДИНИ НЕВЗАД
+ШЕБЕК ЂУЛА
+ШЕБЕК АНУШКА
+ШЕБЕК ИВАН
+ШЕБЕК ЈОСИП
+ШЕБЕКОВИЋ ПАВЛЕ
+ШЕБЕЗ ДРАГАН
+ШЕБЕЗ ДУШАН
+ШЕБЕЗ ЛАЗО
+ШЕБЕЗ РАДОЈКА
+ШЕБЕЗ СИМО
+ШЕБЕЗ СТЕВАН
+ШЕБЕЗ СТЕВО
+ШЕБЕЗ СТЕВО
+ШЕБИ ЈЕЛИЦА
+ШЕФЧИЋ ЕМИЛ
+ШЕФЧИЋ МИРКО
+ШЕФЕР ЂОРЂЕ ДИПЛ ИНГ
+ШЕФЕР АЛЕКСАНДРА
+ШЕФЕР ЈУЛИЈЕ ДР
+ШЕФЕР КАТАРИНА
+ШЕФЕР КЛАРА
+ШЕФЕР МИОДРАГ
+ШЕФЕР ПЕТАР
+ШЕФЕР РАДОЈЕ
+ШЕФЕР СЛАВКО
+ШЕГЕЦ ЕДУАРД
+ШЕГИНА НИКОЛА
+ШЕГО НИКОЛА
+ШЕГОВИЋ ДРАГАН
+ШЕГОВИЋ МИЛОШ
+ШЕГРТ ЧЕДОМИР
+ШЕГРТ ЧЕДОМИР
+ШЕГРТ ЈОВО
+ШЕГРТ ЈОВО
+ШЕГРТ МАТО
+ШЕГРТ МЛАДЕН
+ШЕГРТ НАДА
+ШЕГРТ ПЕТАР
+ШЕГРТ ВОЈИСЛАВ
+ШЕГУЉЕВ ДУШАН
+ШЕГУЉЕВ ДУШАН
+ШЕГУЉЕВ ДУШАН
+ШЕГУЉЕВ ГРУЈА
+ШЕГУЉЕВ ЈОВАН
+ШЕГУЉЕВ МАРКО
+ШЕГУЉЕВ МИКА
+ШЕГУЉЕВ МИЛЕНКО
+ШЕГУЉЕВ ПАЈА
+ШЕГУЉЕВ ПЕТАР
+ШЕГУЉЕВ РАДОСЛАВ
+ШЕГУЉЕВ РУЖИЦА
+ШЕГУЉЕВ СЛАВКО
+ШЕГУЉЕВ СНЕЖАНА
+ШЕГУЉЕВ ЗАГОРКА
+ШЕГУЉЕВ ЗОРИЦА
+ШЕХИЋ ЉУБИЦА
+ШЕХИЋ МИРСА
+ШЕХИЋ СЛАВИЦА
+ШЕХОВИЋ РАМИЗ
+ШЕЈМЕШИ СТЕВАН
+ШЕЈПЕШ ШАРЛОТА
+ШЕЈПЕШ ФЕДОР
+ШЕЈПЕШ ФЕДОР
+ШЕЈПЕШ ГАЛИНА
+ШЕЈПЕШ ИЛОНА
+ШЕК ЈУЛИЈАН
+ШЕКАРИЋ МИЛОСАВ
+ШЕКАРИЋ НАДА
+ШЕКЕРОВИЋ ДРАГАН
+ШЕКУЛАРАЦ АЛЕКСАНДРА
+ШЕКУЛАРАЦ БРАНИСЛАВ ДИПЛ ОЕЦ
+ШЕКУЛАРАЦ ДУШАН
+ШЕКУЛАРАЦ ПРЕДРАГ
+ШЕКУЛАРАЦ САВКА
+ШЕКУЛАРАЦ СЛОБОДАН
+ШЕЛ МАРГИТА
+ШЕЛБ ЛАСЛО
+ШЕЛЕСТ СЛОБОДАНКА
+ШЕЉЕМ ЈУЛИЈАНА
+ШЕЉЕМ КАРОЉ ДИПЛ ИНГ
+ШЕЉЕМ ЉИЉАНА
+ШЕЉЕМ СТЕВАН
+ШЕЉЕМ ЗОЛТАН
+ШЕЛКЕН ИЛОНКА
+ШЕЛМИЋ ВУКОМАН ДИПЛ ИНГ
+ШЕНЧЕВИЋ МИЛОМИР
+ШЕНБОРН АДАЛБЕРТ ДР ПРОФ
+ШЕНДУЛА ШАНДОР
+ШЕНДУЛА АНТАЛ
+ШЕНДУЛА ГАБОР
+ШЕНХАУЗЕР ТОМИСЛАВ
+ШЕНК АЛБИНА
+ШЕНК ИВАН ДИПЛ ИНГ
+ШЕНК ВОЈИН
+ШЕНТАЛЕР ЕМИЛ
+ШЕП ЛЕНКА
+ШЕПШЕИ КРИСТИНА
+ШЕПА СВЕТОЗАР
+ШЕПАРЕВИЋ ДАРКО
+ШЕПАРОВИЋ ДАРКО
+ШЕПАРОВИЋ ЉИЉАНА
+ШЕПАРОВИЋ МИРОСЛАВ
+ШЕПАРОВИЋ ЗОРА
+ШЕПЕЦ ВЛАДИМИР
+ШЕПЕЦАНОВИЋ МИЛОШ
+ШЕПЕЉ ЛЕНКА
+ШЕПЕРАЦ РАНКА
+ШЕПИЋ ЗАДА
+ШЕПИНСКИ ЂУРА
+ШЕПИНСКИ ЂУРА
+ШЕПИНСКИ ЈОАКИМ
+ШЕПИНСКИ СЛАВИЦА
+ШЕРБАН СЛОБОДАНКА
+ШЕРБЕЏИЈА ДРАГОЉУБ
+ШЕРБЕЏИЈА МИРКО
+ШЕРБЕЏИЈА МИРКО
+ШЕРБИЋ ЈЕЛКА
+ШЕРБИЋ ЗАГОРКА
+ШЕРБИЋ ЗАГОРКА
+ШЕРБУЛА БРАНКО
+ШЕРБУЛА МИЛАН
+ШЕРЕШ ШАНДОР
+ШЕРЕШ ЖУЖАНА
+ШЕРЕШ АНА
+ШЕРЕШ АНТУН
+ШЕРЕШ ЕНДРЕ
+ШЕРЕШ ЕСТЕР
+ШЕРЕШ ФРАНЦИШКА
+ШЕРЕШ ГИЗЕЛА
+ШЕРЕШ ИМРЕ
+ШЕРЕШ ЈАНОШ
+ШЕРЕШ КАРОЉ МР
+ШЕРЕШ ЛАСЛО
+ШЕРЕШ СТЕВАН
+ШЕРЕГИ ЗОЛТАН
+ШЕРЕМЕТКОВСКИ АЛЕКСА
+ШЕРЕМЕТКОВСКИ БОНА
+ШЕРЕР ЛЕНКА
+ШЕРФЕЗИ ЂУРА
+ШЕРИЋ МИЛКА
+ШЕРИФ НЕШАТ
+ШЕРИФИ РАБИЈА
+ШЕРИФИ САФЕТ
+ШЕРКОВ ЉИЉАНА
+ШЕРКОВ РАДОСЛАВ
+ШЕРОВИЋ ЈОВИЦА
+ШЕСЕК СТАНИСЛАВ
+ШЕСТАН БОРИС
+ШЕСТАНОВ БРАНКО
+ШЕСТАНОВ МИЛЕНА
+ШЕСТИЋ БОГДАН
+ШЕТАЛО ШАНДОР
+ШЕТАЛО ФРАЊА
+ШЕТАЛО ИМРЕ
+ШЕТАЛО ИМРЕ
+ШЕТАЛО КАРЛО
+ШЕТАЛО КАРОЉ
+ШЕТКА КАТА
+ШЕТКА ТОМИСЛАВ
+ШЕТРАЈЧИЋ ИЛДИКО
+ШЕВЧИЋ ЂОРЂЕ
+ШЕВАР ЕМИЛИЈА
+ШЕВАР ЈОСИП ВЕТЕРИНАР
+ШЕВАР ВЛАДИСЛАВ
+ШЕВАРЛИЋ КОСТА
+ШЕВЕРОВ РАДОСЛАВ
+ШЕВИЋ ЂОРЂЕ МР
+ШЕВИЋ ЂОРЂЕ
+ШЕВИЋ ЂОРЂЕ
+ШЕВИЋ АЛЕКСАНДАР
+ШЕВИЋ БОРИСЛАВ
+ШЕВИЋ ДРАГАН
+ШЕВИЋ ДРАГОЉУБ
+ШЕВИЋ ДРАГОЉУБ
+ШЕВИЋ ЈОВО
+ШЕВИЋ ЛАЗАР
+ШЕВИЋ МИЛАН
+ШЕВИЋ МИЛОШ
+ШЕВИЋ МИЛОРАД
+ШЕВИЋ МИРОСЛАВА
+ШЕВИЋ НАДА
+ШЕВИЋ НАДА
+ШЕВИЋ ПЕТАР
+ШЕВИЋ ПЕТАР
+ШЕВИЋ ПРЕДРАГ
+ШЕВИЋ РАДОВАН
+ШЕВИЋ САВКА
+ШЕВИЋ СЛОБОДАН
+ШЕВИЋ СРЂАН
+ШЕВИЋ ТРИВО
+ШЕВО ЧЕДОМИР
+ШЕВО АЛЕКСАНДАР
+ШЕВО БОШКО
+ШЕВО БОШКО
+ШЕВО БРАНКО
+ШЕВО ДУШАН
+ШЕВО ЈОВО
+ШЕВО МИЛАН
+ШЕВО МИЛАН
+ШЕВО МИЛАН
+ШЕВО МЛАДЕН
+ШЕВО СЛАВИЦА
+ШЕВО ВЛАДО
+ШИША ЈОСИП
+ШИША ЈОСИП
+ШИШАКОВИЋ МИЛЕНА
+ШИШАКОВИЋ МИРОСЛАВ
+ШИШАРИЦА ЉУПКО
+ШИШАРИЦА ЗДРАВКО
+ШИШЕВИЋ АНЂЕЛКА
+ШИШИЋ МИЛАН
+ШИШИЋ МЛАДЕН
+ШИШИЋ ПЕТКА
+ШИШИЋ СТЈЕПАН
+ШИШКА МАРГИТА
+ШИШКОВ АНТЕ
+ШИШКОВИЋ ДРАГОЉУБ
+ШИШКОВИЋ ДРАГОЉУБ
+ШИШЉАГИЋ ЧЕДО
+ШИШЉАГИЋ ДУШАН
+ШИШОВИЋ ДРАГОЉУБ
+ШИШОВИЋ МИЛАШИН
+ШИЂАНИН БРАНИСЛАВ
+ШИЂАНИН ДУШАН ДИПЛ ИНГ
+ШИЂАНИН МИЛИЦА
+ШИЂАНИН МИЛОЈЕ ДИПЛ ИНГ
+ШИЂАНСКИ БУДИМИР
+ШИЂАНСКИ МИРОСЛАВ
+ШИБАЛИЋ ИЛИЈА
+ШИБАЛИЋ ЉУБОМИР
+ШИБУЛ ЗОРАН
+ШИБУЛ ЗОРИЦА
+ШИБУЛОВ ЂУРА
+ШИЦ МАРИЈА
+ШИЦ ТЕРЕЗА
+ШИФЛИШ ЈАГОДА
+ШИФЛИШ ЛАЈОШ
+ШИФЛИШ СЛАВКО
+ШИГУД ЂОРЂЕ
+ШИХА ИШТВАН
+ШИЈАЧИЋ АЛЕКСАНДАР
+ШИЈАЧИЋ АЛЕКСАНДАР
+ШИЈАЧИЋ БОРИСЛАВ
+ШИЈАЧИЋ БОСИЉКА
+ШИЈАЧИЋ БРАНИСЛАВ
+ШИЈАЧИЋ ДАНИЦА
+ШИЈАЧИЋ ДАНИЦА
+ШИЈАЧИЋ ДАНИЛО
+ШИЈАЧИЋ ДАНИЛО
+ШИЈАЧИЋ ДУШАН
+ШИЈАЧИЋ ДУШИЦА
+ШИЈАЧИЋ ДУШИЦА
+ШИЈАЧИЋ ЈЕЛИЦА
+ШИЈАЧИЋ ЛЕСА
+ШИЈАЧИЋ МИЛИВОЈЕ
+ШИЈАЧИЋ МИЛОРАД
+ШИЈАЧИЋ МИРОСЛАВ
+ШИЈАЧИЋ РАДОСЛАВ
+ШИЈАЧИЋ СТАНКА
+ШИЈАЧИЋ СТЕВАН
+ШИЈАЧИЋ ЗОРИЦА
+ШИЈАЧКИ ЖИВА
+ШИЈАЧКИ ЖИВКО
+ШИЈАЧКИ ЂУРЂИНКА
+ШИЈАЧКИ БОЖИДАР
+ШИЈАЧКИ ДРАГАНА
+ШИЈАЧКИ ГОРДАНА
+ШИЈАЧКИ ИСА
+ШИЈАЧКИ ЈОВАН
+ШИЈАЧКИ КОСТА
+ШИЈАЧКИ ЛАЗАР
+ШИЈАЧКИ МИЛАН
+ШИЈАЧКИ МИЛЕНКО
+ШИЈАЧКИ МИЛОШ
+ШИЈАЧКИ МИРЈАНА
+ШИЈАЧКИ НЕСТОР ДР
+ШИЈАЧКИ ПЕТАР
+ШИЈАЧКИ ПРЕДРАГ
+ШИЈАЧКИ РАДОСЛАВА
+ШИЈАЧКИ СИМА
+ШИЈАЧКИ СЛАВКО
+ШИЈАЧКИ СЛОБОДАН
+ШИЈАЧКИ СТЕВАН
+ШИЈАЧКИ ТОМИСЛАВ
+ШИЈАЧКИ ВИТОМИР
+ШИЈАЧКИ ВУЈИЦА
+ШИЈАК ЂОРЂЕ
+ШИЈАК ЈЕЛИЦА
+ШИЈАК МИЛЕНКО
+ШИЈАК МИЛОШ
+ШИЈАК ПАВЛЕ
+ШИЈАК ПЕТАР
+ШИЈАК ТОМА
+ШИЈАКОВ СТАНИСЛАВА
+ШИЈАКОВ ВЕЉКО
+ШИЈАКОВИЋ ДРАГИЦА
+ШИЈАКОВИЋ МИЛОРАД
+ШИЈАКОВИЋ СТЕВА
+ШИЈАКОВИЋ ЗОРАН
+ШИЈАН АЛЕКСАНДРА
+ШИЈАН БОЈА
+ШИЈАН БРАНКО
+ШИЈАН БРАНКО
+ШИЈАН БРАНКО
+ШИЈАН ДАНЕ
+ШИЈАН ИЛИЈА
+ШИЈАН МИЛЕВА
+ШИЈАН МИЛОШ
+ШИЈАН МИРКО
+ШИЈАН НЕВЕНКА
+ШИЈАН НИКОЛА
+ШИЈАН РАДЕ
+ШИЈАН СЛОБОДАН
+ШИЈУК ДРАГАН
+ШИК ТИБОР
+ШИКЕТ ИШТВАН
+ШИКЕТ ИШТВАН
+ШИКЕТ ИМРЕ
+ШИКЕТ ЈОЖЕФ
+ШИКЕТ ЛАСЛО
+ШИКЕТ ЛАСЛО
+ШИКЕТ ЛАСЛО
+ШИКЕТ МАГДА
+ШИКЕТ СТЕВАН
+ШИКИЋ БОГДАН
+ШИКИЋ РАДОСЛАВ
+ШИКМАН ЗВОНКО
+ШИКОПАРИЈА ЂОРЂЕ
+ШИКОПАРИЈА БОРИСЛАВ
+ШИКОПАРИЈА ДУШАН
+ШИКОПАРИЈА ЈЕЛЕНА
+ШИКОПАРИЈА МИЛАН
+ШИКОПАРИЈА НЕВЕНА
+ШИКОПАРИЈА ТИХОМИР
+ШИКОПАРИЈА ТИХОМИР
+ШИКОПАРИЈА ВЛАДИМИР
+ШИЛЕ ШАНДОР
+ШИЛЕ ЛАДИСЛАВ
+ШИЛЕ ЗОЛТАН
+ШИЛЕР МИЛОРАД
+ШИЛЕР МИЛОРАД
+ШИЛИ ИШТВАН
+ШИЛИ КАРЛО
+ШИЛИ МИХАЈЛО
+ШИЛИ ВАЛЕРИЈА
+ШИЛИЋ ЂОРЂЕ
+ШИЛИЋ ЂОРЂЕ
+ШИЛИЋ ЂОРЂЕ
+ШИЛИЋ АНА
+ШИЛИЋ БОГДАН
+ШИЛИЋ ДАНИЦА
+ШИЛИЋ ДРАГОМИР
+ШИЛИЋ ДУШИЦА
+ШИЛИЋ ЈОВАН
+ШИЛИЋ ЉУБИЦА
+ШИЛИЋ МИЛОРАД ДР
+ШИЛИЋ МИЛОСАВА
+ШИЛИЋ МИРЈАНА
+ШИЛИЋ МИРКО
+ШИЛИЋ МИРКО
+ШИЛИЋ НАДА
+ШИЛИЋ НИКОЛА
+ШИЛИЋ ОЛГИЦА
+ШИЛИЋ ОЛГИЦА
+ШИЛИЋ ПЕТАР
+ШИЛИЋ ПЕТАР
+ШИЛИЋ РАЦКО
+ШИЛИЋ САВА
+ШИЛИЋ СПАСЕНКА
+ШИЛИЋ СТОЈАН
+ШИЛИЋ ТОША
+ШИЛИЋ ТОДОР
+ШИЛИЋ ВАСА
+ШИЛИЋ ВЕРА
+ШИЛИЋ ВИТОМИР
+ШИЉЕГ ЈОЗО
+ШИЉЕГОВИЋ БОШКО
+ШИЉЕГОВИЋ БОШКО
+ШИЉЕГОВИЋ ДРАГОЉУБ
+ШИЉЕГОВИЋ ДУШАН
+ШИЉЕГОВИЋ ЈОВАНКА
+ШИЉЕГОВИЋ МИЛАН
+ШИЉЕГОВИЋ НАДА
+ШИЉИЋ ЋАМИЛ
+ШИЉКУТ МИЛАН
+ШИЉКУТ МИЛАН
+ШИЉКУТ МИРКО
+ШИМЧИЋ ОЛГИЦА
+ШИМШИЋ ДУШАН
+ШИМШИЋ ИЛИЈА
+ШИМШИЋ САВО
+ШИМА ЈОАКИМ
+ШИМА МАРГИТА
+ШИМА ВЕРОНИКА
+ШИМАК ЈАН
+ШИМАЛА ВИКТОР
+ШИМАН АЛЕКСЕЈ
+ШИМАНДИ ГАБРИЈЕЛА
+ШИМАНДИ СТЕВАН
+ШИМЕК ВЛАТКО
+ШИМИЧИЋ ПЕТАР
+ШИМИЧИЋ СВЕТИСЛАВ
+ШИМИЋ АНТО
+ШИМИЋ БОЖАНА
+ШИМИЋ ФРАЊО
+ШИМИЋ ГИЗЕЛА
+ШИМИЋ ХРВОЈЕ
+ШИМИЋ ЈУЛА ДИПЛ ИНГ
+ШИМИЋ МИЛАН
+ШИМИЋ МИЛАН
+ШИМИЋ МИРОСЛАВ
+ШИМИЋ МЛАДЕН
+ШИМИЋ НИНОСЛАВ
+ШИМИЋ СЛАВКО
+ШИМИЋ СЛАВКО
+ШИМИЋ СТЕВАН
+ШИМИГ ТИБОР
+ШИМОКОВИЋ КАТАРИНА
+ШИМОН ШАНДОР
+ШИМОН ЂЕРЂ
+ШИМОН АРПАД
+ШИМОН ЕРЖЕБЕТ
+ШИМОН МАРИЦА
+ШИМОН МИХАЉ
+ШИМОН ВИЛМОШ ДР
+ШИМОНИК ВЛАДА
+ШИМОЊИ ШАНДОР
+ШИМОЊИ БАРБАРА
+ШИМОЊИ ЈАНОШ
+ШИМОЊИ СОФИЈА
+ШИМОЊИ ЗОЛТАН
+ШИМОЊИ ЗВОНКО
+ШИМОЊИК МАТИЈА
+ШИМОВИЋ ЈОЖЕФ
+ШИМОВИЋ МИРО
+ШИМПРАГА ДУШАН
+ШИМПРАГА ЈАДРАНКА
+ШИМУДВАРАЦ ПАВАО
+ШИМУЛИЈА ДРАЖЕН
+ШИМУЛИЈА ЈОВО
+ШИМУНЂА ЉУБОМИР
+ШИМУНЕЦ МАРИЈА
+ШИМУНИЋ АНКА
+ШИМУНИЋ ИВАН
+ШИМУНИЋ КАРЛО
+ШИМУНИЋ СТЕВАН
+ШИМУНОВАЧКИ КАТИЦА
+ШИМУНОВАЧКИ НИКОЛА
+ШИМУНОВАЧКИ НИКОЛА
+ШИМУНОВАЧКИ СЛАВКО
+ШИМУНОВИЋ ГОРДАНА
+ШИМУНОВИЋ ГОРДАНА
+ШИМУНОВИЋ ЈОСИП
+ШИМУНОВИЋ ЈОСИП
+ШИМУНОВИЋ ЈОСИП
+ШИМУНОВИЋ НЕНАД
+ШИМУНОВИЋ НИКОЛА ДИПЛ ИНГ
+ШИМУНОВИЋ СТАНИСЛАВ
+ШИМУНОВИЋ СТАНКО
+ШИМУНОВИЋ СВЕТЛАНА
+ШИМУНОВИЋ ТОМА
+ШИНАГЛ КАРОЉ
+ШИНАГЛ КАРОЉ
+ШИНАГЛ ОТО
+ШИНАГЛ СТЕВАН
+ШИНИК ДРАГАН
+ШИНИКОВ ЂОРЂЕ
+ШИНИКОВ МИЛАН
+ШИНКА МАРГИТА
+ШИНКА ЗЛАТКО
+ШИНКО ГИЗЕЛА
+ШИНКО ИВАНКА
+ШИНКО ЈАНОШ
+ШИНКО СТЕВАН
+ШИНКО ВЛАДИСЛАВ
+ШИНКОВИЋ МАРИЈА
+ШИПЧИЋ ЉУБОМИР
+ШИПЧИЋ МАРИЈА
+ШИПЧИЋ МИДО
+ШИПЧИЋ МИЈОДРАГ
+ШИПЧИЋ НИНОСЛАВ
+ШИПЕК ЈОСИП НОВИНАР
+ШИПЕТИЋ АНЂА
+ШИПЕТИЋ МОМЧИЛО
+ШИПИЋ АЛЕКСАНДРА
+ШИПИН ЈОВАНКА
+ШИПКА БОЖА
+ШИПКА БОЖО
+ШИПКА БРАНКО
+ШИПКА ДРАГАН
+ШИПКА ДРАГО
+ШИПКА ГРУЈО
+ШИПКА МАРКО
+ШИПКА МИРКО
+ШИПКА МИРОСЛАВ
+ШИПКА МИРО
+ШИПКА НЕЂО
+ШИПКА ЗОРАН
+ШИПКА ЗОРАН
+ШИПОШ ШАНДОР
+ШИПОШ ЂОРЂЕ
+ШИПОШ ЂОРЂЕ
+ШИПОШ ЂУРА
+ШИПОШ ЂУРО
+ШИПОШ ЕДИТ
+ШИПОШ ЕРЖЕБЕТ
+ШИПОШ ИГЊАЦ
+ШИПОШ ЈАНОШ
+ШИПОШ ЈОВАНКА
+ШИПОШ ЈОВАН
+ШИПОШ ЈУЛИЈАНА
+ШИПОШ МИРЈАНА
+ШИПОШ РОЗАЛИЈА
+ШИПОШ ВЛАДИМИР
+ШИПОШЕВИЋ РАДОЈКА
+ШИПОСКИ КРСТЕ
+ШИПОВАЦ ЦВИЈЕТА
+ШИПОВАЦ ДАНИЛО
+ШИПОВАЦ ЈАЊА
+ШИПОВАЦ НЕДЕЉКО
+ШИПОВАЦ РАДИЦА
+ШИПОВАЦ ВАСИЛИЈА
+ШИПРАГА УРОШ
+ШИПУШИЋ ХЕЛЕНА
+ШИРАДОВИЋ БРАНИСЛАВ
+ШИРИЈОВСКИ ГОЦЕ
+ШИРКА ЈАН
+ШИРКА САМУЕЛ
+ШИРОЧКА АНТУН
+ШИРОКИ АДАМ
+ШИРОЛА ИВАН
+ШИРОНИЋ ЉУБО
+ШИСТОВ ДРАГО
+ШИТЕ КАРОЉ
+ШИТЕ МАРИЈА
+ШИТЕ ТИБОР
+ШИТЕР КАРЛО
+ШИТЕР РУЖИЦА
+ШИТЕР СЛОБОДАН
+ШИВЕГИ ИМРЕ
+ШКАЉАЦ СТАНКО
+ШКАЉАЦ ЗОРАН
+ШКАРИЧИЋ МИРОСЛАВ
+ШКАРИЦА ДОЛОРЕС
+ШКАРИЦА СТЈЕПАН
+ШКАРИН ТОДОР
+ШКАТАРИЋ ЗОРАН
+ШКАВИЋ ЦВИЈО
+ШКАВИЋ ЈОВО
+ШКАВИЋ МИЛАН
+ШКАВИЋ НИКОЛА
+ШКЕКИЋ МИОМИР
+ШКИЉАЈИЦА ВЛАДИМИР
+ШКИЉЕВИЋ МИЛИДРАГ
+ШКОБАЉ НАДА
+ШКОБАЉ ВОЈИСЛАВ
+ШКОДАК ПАВЛЕ
+ШКОЛОПИЈА ЛАЗАР
+ШКОНДРИЋ ДРАГОМИР
+ШКОРИЋ ЧЕДОМИР
+ШКОРИЋ ШТРАЦИМИР
+ШКОРИЋ ЂУЈА
+ШКОРИЋ ЂУРО
+ШКОРИЋ АНКА
+ШКОРИЋ БОСИЉКА
+ШКОРИЋ БРАНИСЛАВ
+ШКОРИЋ БРАНКО
+ШКОРИЋ ДРАГАН ДР
+ШКОРИЋ ДРАГАН
+ШКОРИЋ ДРАГАН
+ШКОРИЋ ДУШАН
+ШКОРИЋ ДУШАН
+ШКОРИЋ ДУШАН
+ШКОРИЋ ДУШКО
+ШКОРИЋ ГРУМИКОВ
+ШКОРИЋ ЈОВАН
+ШКОРИЋ ЈОВАН
+ШКОРИЋ КСЕНИЈА
+ШКОРИЋ ЛАЗАР
+ШКОРИЋ ЉИЉАНА
+ШКОРИЋ МАРА
+ШКОРИЋ МАРИЈА
+ШКОРИЋ МАРИЈА
+ШКОРИЋ МИЋО
+ШКОРИЋ МИЛАН
+ШКОРИЋ МИЛАН
+ШКОРИЋ МИЛАН
+ШКОРИЋ МИЛАН
+ШКОРИЋ МИЛЕНКО
+ШКОРИЋ МИЛИВОЈ
+ШКОРИЋ МИЛКА
+ШКОРИЋ МИЛОШ
+ШКОРИЋ МИРЈАНА
+ШКОРИЋ МИРКО
+ШКОРИЋ МИРКО
+ШКОРИЋ МИРКО
+ШКОРИЋ НИКОЛА
+ШКОРИЋ НИКОЛА
+ШКОРИЋ ПАВЛЕ
+ШКОРИЋ ПАВЛЕ
+ШКОРИЋ ПЕРО
+ШКОРИЋ СЛАВКО
+ШКОРИЋ СЛОБОДАН
+ШКОРИЋ СМИЉА
+ШКОРИЋ СМИЉА
+ШКОРИЋ СРЕЋКО
+ШКОРИЋ СТАНА
+ШКОРИЋ ВЛАДИМИР
+ШКОРИЋ ЗОРА
+ШКОРО ШИМЕ
+ШКОРО МИРЈАНА
+ШКОРО ВАСИЛИЈА
+ШКРАВАН АНДРИЈА
+ШКРБИЋ ЖЕЉКО
+ШКРБИЋ ЂУРО
+ШКРБИЋ АНИЦА
+ШКРБИЋ БЛАЖО
+ШКРБИЋ БОЖО
+ШКРБИЋ БОЈАНА
+ШКРБИЋ БРАНКО
+ШКРБИЋ ДРАГИЦА
+ШКРБИЋ ДУШАН
+ШКРБИЋ ЈОВАН
+ШКРБИЋ ЈОВАН
+ШКРБИЋ ЉУБИЦА
+ШКРБИЋ МАРА
+ШКРБИЋ МАРИЦА
+ШКРБИЋ МИЛЕ
+ШКРБИЋ МИЛОРАД
+ШКРБИЋ МИЛОРАД
+ШКРБИЋ НЕБОЈША
+ШКРБИЋ ОСТОЈА
+ШКРБИЋ ПЕТАР
+ШКРБИЋ РАДОСЛАВ
+ШКРБИЋ СВЕТОЗАР
+ШКРБИЋ ЗОРКА
+ШКРБИНА СТЈЕПАН
+ШКРГЕТ ЈОСИП
+ШКРИЈЕЛ ДРАГАН
+ШКРИЈЕЛ МИЛАН
+ШКРИЈЕЉ АЈНИЈА
+ШКРИЈЕЉ САМИР
+ШКРИЈЕЉ ВЕХБО
+ШКРИЊАР КАРОЉ
+ШКРИЊАР МАРИО
+ШКРИЊАР ЗВОНИМИР
+ШКРИВАН ЂУРА
+ШКРИВАН АНТУН
+ШКРИВАН ФРАЊА
+ШКРИВАН КАРЛО
+ШКРИВАН ЛАДИСЛАВ
+ШКРИВАН ПЕТАР
+ШКРИВАН СТЕВАН
+ШКРИВАН СТЕВАН
+ШКРИВАЊ ПИШТА
+ШКУЛЕТИЋ ОЛГА
+ШКУЛЕТИЋ ЗОРАН
+ШКУНЦА ИВАН
+ШКУНЦА ЈЕЛИЦА
+ШКУНДРИЋ ДУШАН
+ШКУНДРИЋ МИЛИЦА
+ШКУНДРИЋ ПЕТАР
+ШКУНДРИЋ РОЗАЛИЈА
+ШКВАРЕК ВЛАДА
+ШЛАХТЕР ВЕНДЕЛ
+ШЛАЈЕР РУДОЛФ
+ШЛАВИК ИЛОНА
+ШЛЕХТА ЗДЕНКО
+ШЛЕМЕНДЕР ЂОРЂЕ
+ШЛЕМЕНДЕР АНГЕЛА
+ШЛЕМЕНДЕР ИРЕНА
+ШЉАПИЋ ГОРАН
+ШЉАПИЋ МИРЈАНА
+ШЉАПИЋ ОБРЕН
+ШЉАПИЋ РУЖИЦА
+ШЉАПИЋ СТЕВАН
+ШЉАПИЋ ТАТЈАНА
+ШЉАПИЋ ТОМИСЛАВ
+ШЉАПИЋ ВЕЛЕМИР
+ШЉИВАНЧАНИН ЈОВАН
+ШЉИВАНЧАНИН ЈОВАН
+ШЉИВАНЧАНИН МАРИЈА
+ШЉИВАНЧАНИН МИЛУТИН
+ШЉИВИЋ ЂОРЂЕ
+ШЉИВИЋ БОРКА
+ШЉИВИЋ ЈЕЛЕНА
+ШЉИВИЋ ЉИЉАНА
+ШЉИВИЋ МИРЈАНА
+ШЉИВИЋ РАДОЈИЦА
+ШЉИВИЋ СПАСОЈЕ
+ШЉИВИЋ ВЛАДИСЛАВ
+ШЉИВКОВИЋ ЂОРЂЕ
+ШЉУКА ДРАГИША
+ШЉУКА МИЈОДРАГ
+ШЉУКА МИЛАН
+ШЉУКА МИЛОШ
+ШЉУКИЋ ЖИВАН ДР
+ШЉУКИЋ МИЛИВОЈ
+ШЉУКИЋ РОСАНДА
+ШМАЊА МИРКО
+ШМАЊА СЛАВКО
+ШМИДЕРКАЛ ФРАЊА
+ШМИГЕЉСКИ НИКОЛА
+ШМИГИЋ БОРИСЛАВ
+ШМИГИЋ МИЛОРАД
+ШМИГИЋ СВЕТОЗАР
+ШМИТ ФЕРДИНАНД
+ШМИТ ГИЗЕЛА
+ШМИТ ЈОСИП
+ШМИТ ЈОВАН
+ШМИТ-КОТА КАТИЦА
+ШМИТ МАРИЈА
+ШМИТ МИРЈАНА
+ШМИТ-ПРОКИН ЂУРЂИНА
+ШМИТ РЕЖЕ
+ШМИТ СТАНА
+ШМИТ СТАНОЈКА
+ШМИТ СТЕВАН
+ШМИТ СТЕВАН
+ШМИТ ВИОЛЕТА
+ШМИТ ЗЛАТКО
+ШМИТРАН ЂОРЂЕ
+ШМУК ИВАН
+ШНАЈДЕР ШАНДОР
+ШНАЈДЕР АНИЦА
+ШНАЈДЕР ИЛИНКА
+ШНАЈДЕР ЈАНОШ
+ШНАЈДЕР ЈАРОСЛАВ
+ШНАЈДЕР СТЕВАН
+ШНАЈДЕР ВЕРА
+ШНАЈДЕРОВ ЈОСИП
+ШНАЈДЕРОВ ВЕСНА
+ШНАУТИЛ ДРАГУТИН
+ШНЕЛ ПЕТЕР
+ШЊАРИЋ ИВАН
+ШОШ АНТАЛ
+ШОШ АНТАЛ
+ШОШ БАЛИНТ
+ШОШ ДЕЗИДЕР
+ШОШ ГИЗЕЛА
+ШОШ ИЛОНА
+ШОШ ЈЕЛИЦА
+ШОШ ЛАЈОШ
+ШОШ МАРИЈА
+ШОШ ТИБОР
+ШОШИЋ МИРКО
+ШОШИЋ НАТАША
+ШОШИЋ ОЛГА
+ШОШИЋ РАДОСЛАВ
+ШОШИЋ ВУК
+ШОШКИЋ ДРАГОМИР
+ШОШКИЋ МИРА
+ШОЋ БОЈАНА
+ШОЋ ДУШАН
+ШОЋ ТОМИСЛАВ
+ШОБАЈИЋ ДРАГОСЛАВ
+ШОБАКИ МАРИЈА
+ШОБИЋ МИРА
+ШОБИЋ РАДЕ
+ШОБИЋ ВЕРА
+ШОБИЋ ЗОРАН
+ШОБИЋ ЗОРАН
+ШОБОТ ЂУРА
+ШОБОТ БОШКО
+ШОБОТ БРАНКО
+ШОБОТ ДРАГАН
+ШОБОТ ЈОВАН
+ШОБОТ ЉУБОМИР
+ШОБОТ МИЛАН
+ШОБОТ МИЛИЦА
+ШОБОТ ПЕТКО
+ШОБОТ СЕКУЛА
+ШОБОТ СЛАВИЦА
+ШОДИЋ ДОБРИЛА
+ШОДИЋ ДРАГИЊА
+ШОДИЋ ГИЗЕЛА
+ШОДИЋ МИЛАН
+ШОДИЋ ТОДОР
+ШОДОРОВИЋ РОСА
+ШОФХАУЗЕР МИХАЈЛО
+ШОФХАУЗЕР РОЗАЛИЈА
+ШОФРАН МАРИЈА
+ШОФРАНАЦ МЕЛАНИЈА
+ШОГОРОВ СТЕВАН
+ШОЈИЋ ЖИВКО
+ШОЈИЋ БРАНКО
+ШОЈИЋ ДРАГИЦА
+ШОЈИЋ НЕДЕЉКА
+ШОЈЛЕВСКА САЊА
+ШОКИЋ ЂОРЂЕ
+ШОКИЋ ЈУДИТА
+ШОКИЋ МИЛАН
+ШОКИЋ ПЕТАР
+ШОКИЋ РАДОВАН
+ШОКИЋ СМИЉА
+ШОКИЦА ЖИВКО
+ШОКИЦА БРАНИСЛАВ
+ШОКИЦА ДИМИТРИЈЕ
+ШОКИЦА ДРАГИША
+ШОКИЦА ЈОВАН
+ШОКИЦА ЈУДИТА
+ШОКИЦА ЉУБИЦА
+ШОКИЦА МИЛОШ
+ШОКИЦА ЗОРА
+ШОКЛОВАЧКИ ЖИВКО
+ШОКЛОВАЧКИ ДРАГОЉУБ
+ШОКЛОВАЧКИ НАДА
+ШОКЛОВАЧКИ РАТОМИР
+ШОЛ БЕЛА
+ШОЛАЈА ЂОРЂЕ
+ШОЛАЈА ДИМИТРИЈЕ
+ШОЛАЈА ГОЈКО
+ШОЛАЈА МИЛАН
+ШОЛАЈА МИРОСЛАВ
+ШОЛАЈА НАДА
+ШОЛАЈА НАДА
+ШОЛАЈА РАДОСЛАВ
+ШОЛАЈА СЛАВКО
+ШОЛАЈА СЛАВКО
+ШОЛАЈА СЛОБОДАН
+ШОЛАЈА ВИШЊА
+ШОЛАК ЈОКА
+ШОЛАК МАРИНКО
+ШОЛАК МИЛЕ
+ШОЛАК РАДЕ
+ШОЛЕВИЋ МИЛИВОЈЕ
+ШОЛТЕС ШАНДОР
+ШОЛТЕС ИБОЉА
+ШОЛТЕС ЈОЖЕФ
+ШОМКЕРЕКИ ИЛОНКА
+ШОМКЕРЕКИ ЈОСИП
+ШОМКЕРЕКИ ЈУЛИЈАНА
+ШОМКЕРЕКИ ЛАДИСЛАВ
+ШОМКЕРЕКИ СТЕВАН
+ШОМКЕРЕКИ СТЕВАН
+ШОМОЂИ ЖОФИЈА
+ШОМОЂИ ЂОРЂЕ
+ШОМОЂИ ЕВА
+ШОМОЂИ ФРАЊА
+ШОМОЂИ ИШТВАН
+ШОМОЂИ ЈЕЛЕНА
+ШОМОЂИ ЈОВАН
+ШОМОЂИ ЛАСЛО
+ШОМОЂИ МИХАЈЛО
+ШОМОЂИ ПАЛ
+ШОМОЂИ ПАЛ
+ШОМОЂИ ПАЛ
+ШОМОЂИ РОЗА
+ШОМОЂИ ЗОЛТАН
+ШОМОЂИ ЗОРА
+ШОП МАГДАЛЕНА
+ШОП МИЛАН
+ШОПАЛО ЂУРЂИНА
+ШОПАЛО ЂУРЂИНА
+ШОПАЛО МИОДРАГ ДИПЛ ОЕЦ
+ШОПАЛО МИОДРАГ
+ШОРЂАН РОМАН
+ШОРАК МИРЈАНА
+ШОРАЛОВ МИЛОШ
+ШОРАЛОВ МИРОСЛАВ
+ШОРМАЗ ДУШАН
+ШОРМАЗ МИЛАН
+ШОРМАЗ НИКОЛА
+ШОРМАЗ ВЛАДИМИР
+ШОРОЊА САВА
+ШОРОЊА ВЕРА
+ШОСБЕРГЕР БОРИШКА
+ШОСБЕРГЕР ЈОСИП ДИПЛ ОЕЦ
+ШОСБЕРГЕР ПАВЛЕ
+ШОСТАКОВ РАСТИСЛАВ ДИПЛ ИНГ
+ШОТИ-ЧАЛЕНИЋ МАРИЈА
+ШОТИ ФЕЂА
+ШОТИ ИВАНА
+ШОТИ ЈОСИП
+ШОТИ ЈОСИП
+ШОТИ МАРИЈА
+ШОТИ МАРИЈА
+ШОТРА МОМЧИЛО
+ШОУЦ МИЛАН
+ШОУЦ МИРОСЛАВ
+ШОУЦ ЗЛАТА
+ШОВШ ЈАНКО
+ШОВШ ЈОАКИМ
+ШОВАЊ ЈОАКИМ
+ШОВЕЊ АЛЕКСАНДАР
+ШОВЕЊ КАРЛО
+ШОВЕЊ ВЕРА
+ШОВЉАКОВ ЈОВАН
+ШОВЉАКОВ МИЛОШ
+ШОВЉАКОВ МИЛОШ
+ШОВЉАНСКИ ЂОРЂЕ ДИПЛ ИНГ
+ШОВЉАНСКИ ЂОРЂЕ
+ШОВЉАНСКИ АНКИЦА
+ШОВЉАНСКИ БОСИЉКА
+ШОВЉАНСКИ БРАНКО
+ШОВЉАНСКИ ДАНИЦА
+ШОВЉАНСКИ ДАНИЛО
+ШОВЉАНСКИ ДАНКА
+ШОВЉАНСКИ ДИМИТРИЈЕ
+ШОВЉАНСКИ ДРАГИША
+ШОВЉАНСКИ ДРАГИЦА
+ШОВЉАНСКИ ДРАГИЦА
+ШОВЉАНСКИ ДРАГИЦА
+ШОВЉАНСКИ ДРАГОМИР
+ШОВЉАНСКИ ДРАГОМИР
+ШОВЉАНСКИ ДРАГОСЛАВ
+ШОВЉАНСКИ ДРЕНКА
+ШОВЉАНСКИ ЕМИЛ
+ШОВЉАНСКИ ЈУЛКА
+ШОВЉАНСКИ ЛАЗАР
+ШОВЉАНСКИ ЉУБИЦА
+ШОВЉАНСКИ ЉУБОМИР
+ШОВЉАНСКИ МАРГИТА
+ШОВЉАНСКИ МИЛАН
+ШОВЉАНСКИ МИЛОШ
+ШОВЉАНСКИ МИЛОРАД
+ШОВЉАНСКИ МИРЈАНА
+ШОВЉАНСКИ МИРЈАНА
+ШОВЉАНСКИ МИРЈАНА
+ШОВЉАНСКИ МИРОСЛАВ ДР
+ШОВЉАНСКИ НАДА
+ШОВЉАНСКИ ПАВЛЕ
+ШОВЉАНСКИ РАДИВОЈ
+ШОВЉАНСКИ РАДОСЛАВ
+ШОВЉАНСКИ САВА
+ШОВЉАНСКИ СТОЈАН
+ШПАДИЈЕР ТАТИЈАНА
+ШПАГОВИЋ ДРАГОСЛАВ
+ШПАК ВЛАДИМИР
+ШПАНЧИЋ РАДМИЛА
+ШПАНГ ЛАСЛО
+ШПАНГ ЗОЛТАН
+ШПАНИЋ БОШКО
+ШПАНИЋ ФРАЊА
+ШПАНИЋ ЛАДИСЛАВ
+ШПАНИЋ НАДА
+ШПАНИЋ ОТО
+ШПАЊЕВИЋ СУЗАНА
+ШПАЊЕВИЋ ВУКОТА
+ШПАНОВИЋ ЂОРЂЕ
+ШПАНОВИЋ АЛЕКСА
+ШПАНОВИЋ МИЛОШ
+ШПАНОВИЋ НИКОЛА
+ШПАРАВАЛО МАРИЈА
+ШПАРАВАЛО НАТАША
+ШПАРАВАЛО САВА
+ШПАРАВАЛО ЗДРАВКО
+ШПАРОВИЋ ИЛИЈА
+ШПЕГАР ЛАЗАР
+ШПЕХАР МАРИЈА
+ШПЕС ЕТЕЛ
+ШПЕС ВИЛИМ
+ШПЕС ВИЛИМ
+ШПИЦА МИОДРАГ
+ШПИКА МИЛАН
+ШПИНДЛЕР МАРИЈА
+ШПИНДЛЕР-ТРБОЈЕВИЋ МИРЈАНА
+ШПИРИЋ БОРИВОЈЕ
+ШПИРИЋ ГОРДАНА
+ШПИРИЋ ГОСПАВА
+ШПИРИЋ ИЛЕ
+ШПИРИЋ ЈОВО
+ШПИРИЋ ЛУКА
+ШПИРИЋ ЛУКА
+ШПИРИЋ МИЛЕ
+ШПИРИЋ НЕЂО
+ШПИРИЋ ОБРАД
+ШПИРИЋ СТОЈАН
+ШПИРИЋ ТОДЕ
+ШПИРИЋ УРОШ
+ШПИРИЋ ЗОРАН
+ШПИРКА МАТИЛД
+ШПИРТА АЛЕКСАНДАР
+ШПИРТА АЛЕКСАНДАР
+ШПИС ДАНИЛО
+ШПИС ДАНИЛО
+ШПИС ЛАЈОШ
+ШПИС МИРЈАНА
+ШПИС НАНДОР
+ШПОЊА КОВИЉКО
+ШПРОХ ДРЕНКА
+ШПРОХ ЈАНКО
+ШПРОХ МАГДА
+ШПРОХ СЛАВКО
+ШПРОХ СТАНКО
+ШПРОХ СТЕВАН
+ШРАХОЛ ХИЛДА
+ШРАХОЛ КАРЛО
+ШРАХОЛ ЉУДЕВИТ
+ШРАЈ ВЛАДИМИР
+ШРАК ЈОВИЦА
+ШРАК ЛАДИСЛАВ
+ШРАК ЛАСЛО
+ШРАК ОТО
+ШРАК ОТО
+ШРАМ ХУГО
+ШРАНЦ РИХАРД
+ШРАНЦ РИХАРД
+ШРАНКА АНА
+ШРАНКА ДЕСАНКА
+ШРЕДЕР ЈАНОШ
+ШРЕДЕР ЈАНОШ
+ШРЕК АНДРИЈА ДИПЛ ИНГ
+ШРЕК СТЕВАН ДИПЛ ИНГ
+ШТАБИ ШТЕФИЦА
+ШТАЈН ЛИВИЈА
+ШТАЈНЕР КРЕШИМИР
+ШТАЈНЕР МИРЈАНА
+ШТАЈНЕР МИРОСЛАВ
+ШТАЈНЕР ЗВОНИМИР
+ШТАЈНФЕЛД МИХАЈЛО
+ШТАЈНИЦ МИРОСЛАВ
+ШТАЈНИЦ ТИБОР
+ШТАНДИ КАТИЦА
+ШТАНДИ ЗОЛТАН
+ШТАНФЕЉ АЛОЈЗ
+ШТАНФЕЉ МИРОСЛАВ
+ШТАНГЛ ЂОРЂЕ
+ШТАЊО-ТОТ ГИЗЕЛА
+ШТАРК ЕГОН ДИПЛ ИНГ
+ШТАРК МИРКО
+ШТАСНИ ЈОСИП
+ШТАСНИ КАТИЦА
+ШТАТКИЋ МИРОСЛАВ
+ШТАУХЕР ЈОСИП
+ШТЕБЛ ЈЕЛЕНА
+ШТЕФАН ЂОРЂЕ
+ШТЕФАН ЕУЂЕН
+ШТЕФАН ЈУЛИЈАНА
+ШТЕФАН МАТИЈА
+ШТЕФАН ОСКАР
+ШТЕФАН РУДОЛФ
+ШТЕФАН ТРАЈАН
+ШТЕФАНАЦ СТЕВАН
+ШТЕФАНИЦКИ МИШО
+ШТЕФАНИДЕС КАРЛО ДР
+ШТЕФАНИДЕС КАРЛО
+ШТЕФАНКО ВИКТОРИЈА
+ШТЕФАНОВИЋ ДРАГАН
+ШТЕФАНОВИЋ ДРАГУТИН
+ШТЕФАНОВИЋ ТОМИСЛАВ
+ШТЕФКО ЂОРЂЕ
+ШТЕФКО ЂОРЂЕ
+ШТЕФОВИЋ ВЛАДИМИР
+ШТЕФУЛИК ЈОЖЕФ
+ШТЕГЕР РОЖИ
+ШТЕГЕР ВАЛЕНТИНА
+ШТЕХЕР РАДМИЛА
+ШТЕЛЦЕР ЈОСИП
+ШТЕЛИ АНТУН
+ШТЕРЛЕ ЈОСИП
+ШТЕРЛЕ СТЕВАН
+ШТЕРЛЕМАН КРИСТИЈАН
+ШТЕРЛЕМАН ПЕРА
+ШТЕТИЋ КРИСТИНА
+ШТЕТИЋ ТИХОМИР
+ШТЕТИЋ ВЕСНА
+ШТЕТИЋ ВИДА
+ШТЕТИН ХЕЛЕНА
+ШТЕТИН МИЛАН
+ШТЕТИН МИЛЕ
+ШТЕТИН СВЕТИСЛАВ
+ШТЕВАНЧЕВ ЉУБОМИР
+ШТИЦА ВИТОМИР
+ШТИГЛЕР ИВАН
+ШТИГЛЕР МИЛАН
+ШТИГЛИЋ ДРАГАН
+ШТИГЛИЋ СВЕТОЗАР
+ШТИКАВАЦ КОСОВКА
+ШТИКОВАЦ СПАСОЈЕ
+ШТИМАЦ ОТО
+ШТИМАЦ РУДОЛФ
+ШТОКОВАЦ ЈОВАН
+ШТОКОВАЦ ТОМИСЛАВ
+ШТОЛБА ЗВОНИМИР
+ШТОС КАТИЦА
+ШТРАЈХ ИШТВАН
+ШТРАЈХ ЈОСИП
+ШТРАЈХ ОТТО
+ШТРАНГАР НАДА
+ШТРАНГАРОВ БОРИВОЈ
+ШТРАНГАРОВ ДИМИТРИЈЕ
+ШТРАНГАРОВ ЈЕЛЕНА
+ШТРАНГАРОВ ЈЕЛЕНА
+ШТРАНГАРОВ МИЛИЦА
+ШТРАНГАРОВ СЛОБОДАН
+ШТРАПАЈЕВИЋ ЈУЛИЈАНА
+ШТРАСЕР МИХАЈЛО ДР ЛЕКАР
+ШТРАСЕР НАДА
+ШТРАУБ ЕРЖЕБЕТ
+ШТРАУБ ИШТВАН
+ШТРАУБ СТЕВАН
+ШТРБА ДАНИЛО
+ШТРБА МИЛАН
+ШТРБАЧКИ БОРИСЛАВ
+ШТРБАЦ ЖЕЉКО
+ШТРБАЦ ЂОРЂЕ
+ШТРБАЦ ЂУРО
+ШТРБАЦ АНЂЕЛКА
+ШТРБАЦ БОШКО
+ШТРБАЦ БОРИСЛАВ
+ШТРБАЦ БРАНКА
+ШТРБАЦ ДАРИНКА
+ШТРБАЦ ДЕСАНКА
+ШТРБАЦ ДРАГАН
+ШТРБАЦ ДУШАН
+ШТРБАЦ ДУШАН
+ШТРБАЦ ДУШАН
+ШТРБАЦ ДУШАН
+ШТРБАЦ ЈОВАН
+ШТРБАЦ ЉУБИЦА
+ШТРБАЦ ЉУБОМИР
+ШТРБАЦ МАРИЈА
+ШТРБАЦ МИЋО
+ШТРБАЦ МИЋО
+ШТРБАЦ МИЛАНКО
+ШТРБАЦ МИЛАН
+ШТРБАЦ МИЛАН
+ШТРБАЦ МИЛАН
+ШТРБАЦ МИЛАН
+ШТРБАЦ МИЛЕНА
+ШТРБАЦ МИЛИЦА
+ШТРБАЦ МИЛИВОЈ
+ШТРБАЦ МИЛОШ
+ШТРБАЦ МИРЈАНА
+ШТРБАЦ МИРКО
+ШТРБАЦ МОМЧИЛО
+ШТРБАЦ НЕМАЊА
+ШТРБАЦ НИКОЛА
+ШТРБАЦ РАДОЈКА
+ШТРБАЦ РАДОВАН
+ШТРБАЦ САВКА
+ШТРБАЦ СЛАВИЦА
+ШТРБАЦ СЛАВКО
+ШТРБАЦ СТАНА
+ШТРБАЦ СТЕВАН
+ШТРБАЦ ТОМИСЛАВ
+ШТРБАЦ УРОШ
+ШТРБАЦ ВЛАДО
+ШТРБАЦ ВУКИЦА
+ШТРБАЦ ЗОРИЦА
+ШТРБЕНК ИВАНКА
+ШТРБЕНК НИКОЛА
+ШТРБОЈА ЖИВКО
+ШТРБОЈА ЂОРЂЕ
+ШТРБОЈА ЂОРЂЕ
+ШТРБОЈА РАДА
+ШТРБОЈА РАДИВОЈ
+ШТРБОЈА СТЕВАН
+ШТРБОЈЕ ДИМИТРИЈЕ
+ШТРИЦКИ ЈОСИП
+ШТРК ЈОСИП
+ШТРК МАРИЈА
+ШТРКИЋ МИРОСЛАВ
+ШТРКИЋ МОМИР
+ШТРОК ЖЕЉКО
+ШТРТАК СЛАВКО
+ШТРТАК СЛОБОДАН
+ШТУЛА МИЛЕ
+ШТУЛИЋ БОЖИДАР
+ШТУЛИЋ ГОРАН
+ШТУЛИЋ ЈОВО
+ШТУЛИЋ МАРКО
+ШТУЛИЋ РАДОВАН
+ШТУМПФ ХЕЛМУТ
+ШТУМПФ ОСВАЛД
+ШУШЧЕВИЋ ЈОВО
+ШУШЧЕВИЋ ЗДРАВКО
+ШУША ЧЕДОМИР
+ШУША ДУШАН
+ШУША ЈОВАН
+ШУША КЕМАЛ
+ШУША СТОЈАНКА
+ШУШАК ЂОКА
+ШУШАК ЂОРЂЕ
+ШУШАК ГОСПАВА
+ШУШАК МАРИЈА
+ШУШАК НЕВЕНА
+ШУШАК СТАМЕНКО ДР
+ШУШАК ТОМИСЛАВ
+ШУШАКОВ ПАЈА
+ШУШЕВСКИ МИЛАН
+ШУШИЋ РИСТО
+ШУШИЋ ТОМИСЛАВ
+ШУШКАВЧЕВИЋ ИЛИЈА
+ШУШКАВЧЕВИЋ МИОДРАГ
+ШУШКОВИЋ БОРИС
+ШУШЉИК ЈОВАН
+ШУШЊАР ЖАРКО
+ШУШЊАР БОРИСЛАВ
+ШУШЊАР БОРИСЛАВ
+ШУШЊАР МИХАЈЛО
+ШУШЊАР МИЛАН
+ШУШЊАР МИЛАН
+ШУШЊАР ПЕТАР
+ШУШЊАР ПЕТАР
+ШУШЊАР ПЕТАР
+ШУШЊАР СЛАВКО
+ШУШЊАР СОФИЈА
+ШУШЊАР СТАНКО
+ШУШЊЕВИЋ ДУШАН
+ШУШЊЕВИЋ МОМЧИЛО
+ШУШЊЕВИЋ РАДОСЛАВ
+ШУШЊИЋ СТАНКА
+ШУШТРАН МЛАДЕН
+ШУШТУМ ЈОВАН
+ШУЋАК МИЛАН
+ШУЋОВ ЋИРА
+ШУЋОВ ДАНИЦА
+ШУЋОВ ДАНИЛО
+ШУЋОВ МИЛОШ
+ШУЋОВ ВУКОСАВА
+ШУБАРА МЛАДЕН
+ШУБАРИЋ ЛУКА
+ШУБАРИЋ ВЛАСТИМИР
+ШУБАРИЋ ЗОРАН
+ШУБЕРТ ИЛОНКА
+ШУБИЋ ЈОВАНКА
+ШУБОЊ СИЛВИУС
+ШУДАР ЈОЖЕФ
+ШУДАР ЈОСИП
+ШУДИЦКИ ЈОЖЕФ
+ШУГИЋ МИЛАН
+ШУГИЋ НАДА
+ШУГИЋ ПЕТАР
+ШУГИН ЖИВКО
+ШУГИН БЕРИСАВ
+ШУГИН ДИМИТРИЈЕ
+ШУГИН ЛЕКСА
+ШУГИН ЉИЉАНА
+ШУГИН ЉИЉАНА
+ШУГИН МИЛКА
+ШУГИН МИОДРАГ
+ШУГИН МИОДРАГ
+ШУГИН РАДА
+ШУГИН РАНКА
+ШУХАЈДА ЂУРА
+ШУХАЈДА ИМРЕ
+ШУХАЈДА ЛАЈОШ
+ШУЈДОВИЋ ЗОРАН
+ШУЈИЋ ДРАГОМИР
+ШУЈИЋ РЕЏО
+ШУЈИЦА МИЛАН
+ШУКА АЛЕКСА
+ШУКАЛОВИЋ ЂОРЂЕ
+ШУКАРА БОГДАН
+ШУКАРА ДМИТАР
+ШУКАРА ДУШАН
+ШУКИЋ ДРАГИЦА
+ШУКИЋ МИРОЉУБ
+ШУКИЋ ЗОРИЦА
+ШУКЛА СЛАВКО
+ШУКОВИЋ МИЛАН
+ШУКОВИЋ ЗОРКА
+ШУКУНДА МАРИЈА
+ШУКУНДА МИЛАН
+ШУКУРМА СТЕВО
+ШУЛАЈА МИРОСЛАВ
+ШУЛЦ АНДРАШ
+ШУЛЦ ДЕЛИМИР ДР ПРОФ
+ШУЛЦ ИМРЕ ДИПЛ ИНГ
+ШУЛЦ ИМРЕ
+ШУЛЦ ЈОЖЕФ
+ШУЛЦ ЈОЖЕФ
+ШУЛЦ КОСАНА
+ШУЛЦ ВЕРА
+ШУЛЕНТИЋ МИЛЕ
+ШУЛХОФ ЈОЖЕФ КЊИЖЕВНИК
+ШУЉАН АНА
+ШУЉАН ЈАНКО
+ШУЉАН ЈАН
+ШУЉАН ЈАН
+ШУЉАН ЈАРОСЛАВ
+ШУЉАН ПАЛ
+ШУЉМАНАЦ-ШЕЋЕРОВ МИРЈАНА
+ШУЉМАНАЦ БРАНИМИР
+ШУЉМАНАЦ ЈОВАН
+ШУЉМАНАЦ УРОШ
+ШУЛОВИЋ ПЕТАР
+ШУМАХЕР ИЛОНА
+ШУМАХЕР ЈАНОШ
+ШУМАЈСКИ БЛАЖЕНКА
+ШУМАН ВИТОМИР
+ШУМАНОВАЦ ПАВЛЕ ДИПЛ ИНГ
+ШУМАНОВИЋ БРАНИСЛАВ
+ШУМАНОВИЋ ЉИЉАНА
+ШУМАР БОЖО
+ШУМАР МИЛАН
+ШУМАР СИМА
+ШУМАРЕВИЋ ДРАГОРАД
+ШУМАРОВ НИКОЛА
+ШУМАРУНА ЦВЕТА
+ШУМАРУНИЋ ПАВЛЕ
+ШУМЕЦ ЕРНА
+ШУМЕЦ ЈАНОШ
+ШУМИЋ МЛАДЕН
+ШУМОЊА МИЛАН
+ШУНДОВА ФЛОРА
+ШУНИЋ ЈОВО
+ШУЊИЋ ПЕТАР
+ШУЊКА МАРКО
+ШУЊКА МИЛИЦА
+ШУЊКА РАТКО
+ШУНКА ЈОВАН
+ШУНКИЋ ЛАЗАР
+ШУНТИЋ МАТЕЈ
+ШУПЕ ШИМЕ
+ШУПИЦА ДУШАН
+ШУПИЦА ЛАЗАР
+ШУПИЦА ЛАЗА
+ШУПИЦА ЉУБИЦА
+ШУПИЦА МАРА
+ШУПИЦА МИЛАН
+ШУПИЦА МИЛОШ
+ШУПИЦА ПЕТАР
+ШУПИЦА СЛАВКО
+ШУПИЦА ВАСА
+ШУПУТ ЖАРКО ДИПЛ ИНГ
+ШУПУТ ЂУРО
+ШУПУТ ДУШАН
+ШУПУТ СЛОБОДАН
+ШУПУТ СВЕТОЗАР
+ШУРАЊИ ТЕРЕЗИЈА
+ШУРБАНОВИЋ БРАНКО
+ШУРЈАН ЈАНОШ
+ШУРЈАН ЈОВАН
+ШУРЈАНЧЕВ ИВАН
+ШУРЈАНОВИЋ МИЛАН
+ШУРЈАНОВИЋ МИЛЕНА
+ШУРКАЛОВИЋ МИЛЕНА
+ШУРКОВИЋ ДОРАН
+ШУРКОВИЋ ИРФАН ДИПЛ ИНГ
+ШУРЛАН ЧЕДОМИР
+ШУРЛАН ЂОРЂО
+ШУРЛАН ДРАГОМИР
+ШУРЛАН ДРАГОСЛАВ
+ШУРЛАН ГОЈКО
+ШУРЛАН ЈОВАН
+ШУРЛАН МАРИНКО
+ШУРЛАН МАРКО
+ШУРЛАН МИЛОШ
+ШУРЛАН МИРКО
+ШУРЛАН МОМИР
+ШУРЛАН НЕДЕЉКО
+ШУРЛАН РУШКО
+ШУРЛАН ВОЈИСЛАВ
+ШУРЛАН ВУКОСАВА
+ШУСТЕР НЕГОСЛАВ
+ШУСТРИЈАН ОЛГА
+ШУТАНОВИЋ НАДА
+ШУТИЛОВИЋ МИЛОРАД
+ШУТИЛОВИЋ НЕВЕНКА
+ШУТУЛОВИЋ ДАНКА
+ШУТУЛОВИЋ ВЕСНА
+ШУТВИЋ БРАНКА
+ШУВАК МИОДРАГ
+ШУВАКОВ ДАРИНКА
+ШУВАКОВ ДЕЈАН
+ШУВАКОВ ЈОВАН
+ШУВАКОВ МИЛЕНА
+ШУВАКОВ МИЛОРАД
+ШУВАКОВ СТЕВАН
+ШУВАКОВ ТИХОМИР ДР
+ШУВАКОВ ВЕСЕЛИНКА
+ШУВАКОВИЋ ЂУРЂИЦА
+ШУВАКОВИЋ БОГОСЛАВ
+ШУВАКОВИЋ ДАМЈАН ДР ЛЕКАР
+ШУВАКОВИЋ ЈУЛИЈАНА
+ШУВАКОВИЋ ЗОРАН
+ШВАБ ЕСТЕР
+ШВАБ ХЕНРИЈЕТА
+ШВАГЕР МАРТИН
+ШВАЈБЕРИЋ ВИРГИНИЈА
+ШВАЈЦЕР ГИЗЕЛА
+ШВАЈЦЕР ИВИЦА
+ШВАЈЦЕР-РАКИЋ ИРЕНА
+ШВАЈЦЕР РОЗАЛИЈА
+ШВАНДИЛИК ЈОЖЕФ
+ШВАРЦ ИЛОНА
+ШВАРЦ ТИБОР
+ШВАРЦ ВЛАДИМИР
+ШВЕДИЋ АЋИМ
+ШВЕДИЋ ДУШАН
+ШВЕДИЋ ЕЛИЗАБЕТА
+ШВЕДИЋ ЕРЖИКА
+ШВЕДИЋ ГРУЈА
+ШВЕДИЋ ЈОВАН
+ШВЕДИЋ МИЛИЦА
+ШВЕДИЋ МИЛОРАД
+ШВЕДИЋ МИЛУТИН
+ШВЕДИЋ НИКОЛА
+ШВЕДИЋ ПЕТАР
+ШВЕЉА БОГДАН
+ШВЕЉА ПЕТАР
+ШВЕМ ЂУРА
+ШВЕНДА ГОРАН
+ШВЕР КАРЛО
+ШВЕРЕР РУДОЛФ
+ШВЕРКО АНЂЕЛИЈА
+ШВИНД НЕНАД
+ШВОБ ЈОСИП
+ШВОБ ЛАЈОШ
+ШВОЊА ЖЕЉКО
+ШВОЊА ЂУРЂИНКА
+ШВОЊА БИЉАНА
+ШВОЊА БОШКО
+ШВОЊА БОШКО
+ШВОЊА БОЖИДАР
+ШВОЊА БОРИВОЈ
+ШВОЊА БРАНКО
+ШВОЊА ДРАГОЉУБ
+ШВОЊА ДУШАН
+ШВОЊА ДУШКО
+ШВОЊА МИЛАН
+ШВОЊА МИРА
+ШВОЊА РАТКО
+ШВОЊА РАТКО
+ШВОЊА СВЕТОЗАР
+ШВОЊА ВЕЉКО
+ШВРАКА ФРАЊО
+ШВРАКА СТЕВАН ДИПЛ ИНГ
+ШВРАКА СТЕВАН
+ЋАЋИЋ ДАНИЦА
+ЋАЋИЋ ДУШАН
+ЋАЋИЋ МАРКО
+ЋАЋИЋ НИНОСЛАВ
+ЋАХУН КАРЛО ДИПЛ ИНГ
+ЋАЈА ВАНКА
+ЋАКИЋ ГИЗА
+ЋАЛАСАН ЈОВАН
+ЋАЛАСАН СТОЈАН
+ЋАЛЕТА ИВИЦА
+ЋАЛИЋ ИЛИЈА
+ЋАЛИЋ ЈОВАН
+ЋАЛИЋ ЈОВАН
+ЋАЛИЋ ЛУКА
+ЋАЛИЋ МИЛОШ
+ЋАЛИЋ МОМЧИЛО
+ЋАЛИЋ СЛОБОДАН
+ЋАЛИЋ ЗОРАН
+ЋАЛОВ МИЛОРАД
+ЋАЛОВИЋ ЛАКИЋ
+ЋАЛОВИЋ РАДОМИР
+ЋАЛУШИЋ ЈАКОВ
+ЋАТИЋ РАДЕНКО
+ЋАТИЋ СМИЉАНА
+ЋАТОВИЋ ДРАГАН
+ЋАТОВИЋ ГОСПАВА
+ЋАТОВИЋ МАХИТ
+ЋАТОВИЋ СИМАН
+ЋАВАР МАРКО
+ЋАЗИЋ ЂОРЂЕ
+ЋАЗИЋ МИЛЕ
+ЋАЗИЋ МИЛЕ
+ЋАЗИЋ ПЕТАР
+ЋЕБИЋ БОРИВОЈ
+ЋЕБИЋ МИЛАН
+ЋЕБИЋ СЛАВИЦА
+ЋЕБОВИЋ НЕНАД
+ЋЕХА БРАНЕ
+ЋЕЈИЋ ДУШАН
+ЋЕЈИЋ ДУШАН
+ЋЕЛАП МЛАДЕН
+ЋЕЛАП СВЕТОЗАР
+ЋЕЛИЋ ЉУБА
+ЋЕЛИЋ СЛАВКО
+ЋЕЛИЋ ВИКТОРИЈА
+ЋЕНАНОВИЋ МИРЈАНА
+ЋЕРАН БОШКО
+ЋЕРАН ДУШАН
+ЋЕРАН ЈЕЛКА
+ЋЕРАН МИЛЕНКО
+ЋЕРАН СТОЈАН
+ЋЕРАН ВЕЉКО
+ЋЕРАН ЗОРАНКА
+ЋЕРАНИЋ БРАНИСЛАВ
+ЋЕРАНИЋ МИЛАН
+ЋЕРАНИЋ МИЛИЦА
+ЋЕРАНИЋ РАДИНКА
+ЋЕРАНИЋ СНЕЖАНА
+ЋЕРАНИЋ ЗОРАН
+ЋЕРИМАГИЋ ЕТХЕМ
+ЋЕРМОВ-КАВЕЧАН БОЈАНА
+ЋЕСАРОВ ЖАРКО
+ЋЕСАРОВ БРАНИСЛАВ
+ЋЕСАРОВ РУЖИЦА
+ЋЕСАРОВ СИМА
+ЋЕСАРОВ СТЕВАН
+ЋЕСАРОВ СВЕТОЗАР
+ЋЕСАРОВИЋ БОСИЉКА
+ЋЕСАРОВИЋ РАДИВОЈ
+ЋЕТКОВИЋ ЖАРКО
+ЋЕТКОВИЋ БОЖИДАР
+ЋЕТКОВИЋ ДУШАНКА
+ЋЕТКОВИЋ МИЛЕНКО
+ЋЕТКОВИЋ НЕНАД
+ЋЕТКОВИЋ ПРЕДРАГ
+ЋЕТОЈЕВИЋ ЂОРЂЕ
+ЋЕТОЈЕВИЋ БОСА
+ЋЕТОЈЕВИЋ ДРАГОЉУБ
+ЋЕТОЈЕВИЋ ЈОВО
+ЋЕТОЈЕВИЋ МИЛОШ
+ЋЕТОЈЕВИЋ МИЛОВАН
+ЋЕТОЈЕВИЋ МИРОСЛАВ
+ЋЕТОЈЕВИЋ НЕДЕЉКО
+ЋЕТОЈЕВИЋ РАДОВАН
+ЋЕВАП БОЖА
+ЋИШИН ДУШАНКА
+ЋИНКУЛ САВА
+ЋИНКУЛ ВАЛТА
+ЋИПЕ ЕРЖЕБЕТ
+ЋИПРОВАЦ САВА
+ЋИПРОВАЦ ТОША
+ЋИПРОВАЦ ЗДРАВКО
+ЋИРАК МИЛОРАД
+ЋИРАКОВИЋ ЖИВОРАД
+ЋИРАКОВИЋ МАРКО
+ЋИРАКОВИЋ МИЛОРАД
+ЋИРАКОВИЋ САЈА
+ЋИРЕВСКИ БУДИМИР
+ЋИРИЋ ЋИРА
+ЋИРИЋ ЖИВКА
+ЋИРИЋ ЖИВКА
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂОРЂЕ
+ЋИРИЋ ЂУРЂИНКА
+ЋИРИЋ АНИЦА
+ЋИРИЋ АНИТА
+ЋИРИЋ БОШКО
+ЋИРИЋ БОЖИДАР ДР
+ЋИРИЋ БОЖИДАР
+ЋИРИЋ БОЖО
+ЋИРИЋ БОРИСЛАВ
+ЋИРИЋ БОРИСЛАВ
+ЋИРИЋ БОРИСЛАВ
+ЋИРИЋ БРАНКА
+ЋИРИЋ БРАНКО
+ЋИРИЋ ДАНИЦА
+ЋИРИЋ ДАНИЛО
+ЋИРИЋ ДЕСАНКА
+ЋИРИЋ ДИВКО
+ЋИРИЋ ДОБРИЛА
+ЋИРИЋ ДРАГАН
+ЋИРИЋ ДРАГИЦА
+ЋИРИЋ ДРАГИЊА
+ЋИРИЋ ДРАГОЉУБ
+ЋИРИЋ ДУШАН ДИПЛ ИНГ
+ЋИРИЋ ДУШАНКА
+ЋИРИЋ ДУШАН
+ЋИРИЋ ДУШАН
+ЋИРИЋ ДУШИЦА
+ЋИРИЋ ГАВРИЛО
+ЋИРИЋ ГОРДАНА
+ЋИРИЋ ИВАНКА
+ЋИРИЋ ИВАН
+ЋИРИЋ ЈЕЛИСАВЕТА
+ЋИРИЋ ЈОРДАН
+ЋИРИЋ ЈОВАНКА
+ЋИРИЋ ЈОВАН
+ЋИРИЋ ЈОВАН
+ЋИРИЋ ЈОВАН
+ЋИРИЋ КАМЕНКО
+ЋИРИЋ КАТИЦА
+ЋИРИЋ ЛАЗАР
+ЋИРИЋ ЛЕНКА
+ЋИРИЋ ЉУБИЦА
+ЋИРИЋ ЉУБИЦА
+ЋИРИЋ ЉУБОМИР
+ЋИРИЋ МАРКО
+ЋИРИЋ МИЛАН ДИПЛ ИНГ
+ЋИРИЋ МИЛАН
+ЋИРИЋ МИЛЕНКО
+ЋИРИЋ МИЛЕНКО
+ЋИРИЋ МИЛЕТА
+ЋИРИЋ МИЛИЦА
+ЋИРИЋ МИЛКА
+ЋИРИЋ МИЛОШ
+ЋИРИЋ МИЛОШ
+ЋИРИЋ МИЛОРАД
+ЋИРИЋ МИЛОРАД
+ЋИРИЋ МИОДРАГ
+ЋИРИЋ МИРА
+ЋИРИЋ МЛАДЕН
+ЋИРИЋ НИКОЛА
+ЋИРИЋ ПАЈА
+ЋИРИЋ ПЕТАР
+ЋИРИЋ ПЕТАР
+ЋИРИЋ-ПЕТРОВИЋ КАТАРИНА
+ЋИРИЋ ПРЕДРАГ
+ЋИРИЋ РАДЕ
+ЋИРИЋ РАДМИЛА
+ЋИРИЋ РАДМИЛО
+ЋИРИЋ РАДОМИР
+ЋИРИЋ РАДОВАН
+ЋИРИЋ РОБЕРТ
+ЋИРИЋ САВА
+ЋИРИЋ СЛАВИЦА
+ЋИРИЋ СЛАВКО
+ЋИРИЋ СЛАВКО
+ЋИРИЋ СЛОБОДАН
+ЋИРИЋ СМИЉА
+ЋИРИЋ СОФИЈА
+ЋИРИЋ СРЕДОЈЕ
+ЋИРИЋ СТАНИСЛАВ
+ЋИРИЋ СТЕВАН
+ЋИРИЋ СТЕВАН
+ЋИРИЋ СТЕВАН
+ЋИРИЋ СВЕТИСЛАВ
+ЋИРИЋ СВЕТОЗАР
+ЋИРИЋ СВЕТОЗАР
+ЋИРИЋ СВЕТОЗАР
+ЋИРИЋ СВЕТОЗАР
+ЋИРИЋ ТОМИСЛАВ
+ЋИРИЋ ТОМИСЛАВ
+ЋИРИЋ-ТОН ЈЕЛИЦА
+ЋИРИЋ ВАСА
+ЋИРИЋ ВЕРА
+ЋИРИЋ ВЛАДИМИР
+ЋИРИЋ ВЛАДИМИР
+ЋИРИЋ ВЛАДИСЛАВ
+ЋИРИЋ ВУЧКО
+ЋИРИЋ ЗОРАН
+ЋИРИЋ ЗОРА
+ЋИРИЋ ЗОРА
+ЋИРИЋ ЗОРКА
+ЋИРИЛОВ МИЛАН
+ЋИРИЛОВИЋ АНИЦА
+ЋИРИЛОВИЋ БРАНИСЛАВ
+ЋИРИЛОВИЋ МИЛИВОЈ
+ЋИРИЛОВИЋ МЛАДЕН
+ЋИРИЛОВИЋ ОЛГА
+ЋИРИЛОВИЋ ПЕТАР
+ЋИРИЛОВИЋ ВЕРА
+ЋИРИН ДРАГОСЛАВ
+ЋИРИН-НОВТА ВЕРА
+ЋИРИН СЛОБОДАН
+ЋИРИТОВИЋ ДУШАНКА
+ЋИРЈАКОВИЋ ГОРДАНА
+ЋИРЈАКОВИЋ СЛАВОЉУБ
+ЋИРЈАКОВИЋ СЛОБОДАН
+ЋИРКОВИЋ ЂОРЂЕ
+ЋИРКОВИЋ ЦВЕТАНКА
+ЋИРКОВИЋ ИВАН
+ЋИРКОВИЋ ИВАН
+ЋИРКОВИЋ ЈАНКО
+ЋИРКОВИЋ КАТИЦА
+ЋИРКОВИЋ МАРКО
+ЋИРКОВИЋ МАРТА
+ЋИРКОВИЋ МИЛЕНКО
+ЋИРКОВИЋ МИРОСЛАВ
+ЋИРКОВИЋ НЕНАД
+ЋИРКОВИЋ РАДМИЛА
+ЋИРОВИЋ ЖАРКО
+ЋИРОВИЋ ДЕЈАН
+ЋИРОВИЋ ГРУЈИЦА
+ЋИРОВИЋ МИЛУТИН
+ЋИРОВИЋ НИКОЛА
+ЋИРОВИЋ ВЕЛИМИР
+ЋИРОВИЋ ВЕЛИМИР
+ЋИРПАНОВ МИОДРАГ
+ЋИРУШИЋ РАЈКО
+ЋИТИЋ ДУШАН
+ЋИТИЋ МИЛОВАН
+ЋОЋКАЛО СИМА
+ЋОЈАНОВИЋ БОЖИДАР
+ЋОЈАНОВИЋ БОРО
+ЋОЈАНОВИЋ МИЛКА
+ЋОЈДЕР ГОЈКО
+ЋОМА КАТАРИНА
+ЋОПИЋ АНДРИЈА
+ЋОПИЋ ЕВИЦА
+ЋОПИЋ МИЋА
+ЋОПИЋ МИЛЕ
+ЋОПИЋ МИЛОШ
+ЋОПИЋ ВЕРА
+ЋОРИЋ-ЂОКИЋ НАДА
+ЋОРИЋ ЂОРЂЕ
+ЋОРИЋ ЂУРО
+ЋОРИЋ ЂУРО
+ЋОРИЋ АНДРИЈА
+ЋОРИЋ БИСЕРКА
+ЋОРИЋ БЛАГОЈЕ
+ЋОРИЋ БОРА
+ЋОРИЋ ЈОВАН
+ЋОРИЋ КАТАРИНА
+ЋОРИЋ ЉИЉАНА
+ЋОРИЋ МАРИЈА
+ЋОРИЋ МИЋО
+ЋОРИЋ МИКАИЛО
+ЋОРИЋ РАЈКО
+ЋОРКОВИЋ ИВАН
+ЋОРКОВИЋ МАРКО
+ЋОРОВИЋ ДАНИЛО
+ЋОРОВИЋ ЈОВАН
+ЋОРОВИЋ МИРЧЕТА
+ЋОРОВИЋ МИРО
+ЋОРОВИЋ РЕНАТА
+ЋОРОВИЋ СЛОБОДАН
+ЋОСИЋ ШТЕФИЦА
+ЋОСИЋ ЖАРКО
+ЋОСИЋ ЖИВАНА
+ЋОСИЋ ЖИВКА
+ЋОСИЋ АЛЕКСАНДАР
+ЋОСИЋ АЛЕКСАНДАР
+ЋОСИЋ БОГДАН СУДИЈА
+ЋОСИЋ БРАНКО
+ЋОСИЋ БРАНКО
+ЋОСИЋ ДАНИЦА
+ЋОСИЋ ДРАГАНА
+ЋОСИЋ ДРАГАН
+ЋОСИЋ ДРАГИЦА
+ЋОСИЋ ДРАГИЦА
+ЋОСИЋ ДУШАН
+ЋОСИЋ ДУШАН
+ЋОСИЋ ДУШКО
+ЋОСИЋ ФАДИЛ
+ЋОСИЋ ИЛИЈА
+ЋОСИЋ ЈЕЛКА
+ЋОСИЋ ЈОВАН
+ЋОСИЋ ЈОВАН
+ЋОСИЋ ЈОВАН
+ЋОСИЋ ЈОЗО
+ЋОСИЋ ЉИЉАНА
+ЋОСИЋ МАРИЈА
+ЋОСИЋ МАРИЈА
+ЋОСИЋ МИЛАН
+ЋОСИЋ МИЛЕНА
+ЋОСИЋ МИЛИЦА
+ЋОСИЋ МИРЈАНА
+ЋОСИЋ МУХАМЕД
+ЋОСИЋ ОЛГА
+ЋОСИЋ ПАНТЕЛИЈА
+ЋОСИЋ САВКА
+ЋОСИЋ СМИЉА
+ЋОСИЋ СНЕЖАНА
+ЋОСИЋ СТАНКА
+ЋОСИЋ СТОЈАН
+ЋОСИЋ ТОДОР ДИПЛ ИНГ
+ЋОСИЋ ВЕРА
+ЋОСИЋ ВЕРОСЛАВ
+ЋОСИЋ ВЛАДИМИР
+ЋОСИЋ ЗОРАН
+ЋОСИЋ ЗОРКА
+ЋОСИН ДУШАН
+ЋОСИН ЗОРАН
+ЋОСО ГАВРИЛО
+ЋОСОВИЋ ЈЕЛЕНА
+ЋОСОВИЋ МИЛЕТА
+ЋОСОВИЋ ТОМИСЛАВ
+ЋОВИЋ ЛАЗАР
+ЋОВИН МИЛАН
+ЋУЋА АДАМ
+ЋУЋИЛОВИЋ ЦВИЈА
+ЋУЋИЛОВИЋ МОМЧИЛО
+ЋУЋИЛОВИЋ РУЖИЦА
+ЋУЋУЗ МАРКО
+ЋУЋУЗ САША
+ЋУЋУЗ СТАНКО
+ЋУБА РАТКО ДИПЛ ИНГ
+ЋУБИЋ ДУШАН
+ЋУИЋ ИЛИЈА
+ЋУИЋ МАРА
+ЋУИЋ МИЛКА
+ЋУЈИЋ ЉУБИЦА
+ЋУЈИЋ СТЕВАН
+ЋУК ЂУРО
+ЋУК ДРАГО
+ЋУК ДУШАН
+ЋУК ДУШАН
+ЋУК ГОЈКО
+ЋУК ЛЕЛА
+ЋУК ЛУКА
+ЋУК МАРА
+ЋУК МИЛАН ДИПЛ ИНГ
+ЋУК МИЛЕ
+ЋУК МИЛИЦА
+ЋУК МИЛКАН
+ЋУК МИЛОРАД
+ЋУК МИРОСЛАВ
+ЋУК НИКОЛА
+ЋУК РАДИВОЈ
+ЋУК РАТКО
+ЋУК СЛОБОДАН
+ЋУК ТОМИСЛАВ
+ЋУК ЗОРКА
+ЋУКОВИЋ МИЛУН
+ЋУКОВИЋ МИРА
+ЋУКОВИЋ РАДОМИР ДИПЛ ИНГ
+ЋУКОВИЋ РАДОВАН
+ЋУКОВИЋ ТИХОМИРКА
+ЋУКОВИЋ ЗОРАН
+ЋУЛИЋ ЂОРЂЕ
+ЋУЛИЋ ЈАСМИНКА
+ЋУЛИБРК БОГДАН
+ЋУЛИБРК ДРАГАН
+ЋУЛИБРК ДРАГАН
+ЋУЛИБРК ДРАГОСЛАВ
+ЋУЛИБРК ДУШАНКА
+ЋУЛИБРК ДУШАН
+ЋУЛИБРК ГОСПАВА
+ЋУЛИБРК ЈЕЛИЦА
+ЋУЛИБРК ЈЕЛКА
+ЋУЛИБРК МИЛАН
+ЋУЛИБРК МИЛЕ
+ЋУЛИБРК МИЛЕ
+ЋУЛИБРК МИОДРАГ
+ЋУЛИБРК МИРКО
+ЋУЛИБРК МЛАДЕН
+ЋУЛИБРК МОМЧИЛО
+ЋУЛИБРК РАДИВОЈЕ
+ЋУЛИБРК РАДОЈКА
+ЋУЛИБРК РАТКО
+ЋУЛИБРК РИСТО
+ЋУЛИБРК СЛОБОДАН
+ЋУЛИБРК СОКА
+ЋУЛИБРК СТЕВАН
+ЋУЛИБРК ТРИВО
+ЋУЛУМ БРАНКО
+ЋУЛУМ ГОЈКО
+ЋУЛУМ ИЛИЈА
+ЋУЛУМ ЈЕЛИЦА
+ЋУЛУМ ЈОВАН
+ЋУЛУМ ЛАЗАР
+ЋУЛУМ МАРА
+ЋУЛУМ МАРА
+ЋУЛУМ МИХАЈЛО
+ЋУЛУМ МИЛАН
+ЋУЛУМ МИЛЕТА
+ЋУЛУМ МИЛОШ
+ЋУЛУМ МИОДРАГ
+ЋУЛУМ МИРКО
+ЋУЛУМ МИРКО
+ЋУЛУМ НАДА
+ЋУЛУМ НАДА
+ЋУЛУМ НИКОЛА
+ЋУЛУМ ПЕРО
+ЋУЛУМ РАДЕ
+ЋУЛУМ РАДЕ
+ЋУЛУМ САВА
+ЋУЛУМ СЛАВКО
+ЋУЛУМ СТАНКА
+ЋУЛУМ СТАНКА
+ЋУЛУМ СТЕВО
+ЋУЛУМ СТЕВО
+ЋУЛУМ УРОШ
+ЋУЛУМ ВАСА
+ЋУЛУМАН СТЕВАН
+ЋУЛУМОВИЋ СТЈЕПАН
+ЋУМУРОВИЋ СЛАВИЦА
+ЋУПИЋ ДУШАН
+ЋУПИНА БРАНКО
+ЋУПИНА МИЛАДИН
+ЋУПИНА НОВИЦА
+ЋУПИНА ТОМИСЛАВ ДР
+ЋУПУРДИЈА ЈЕЛЕНА
+ЋУПУРДИЈА МИЛАН
+ЋУПУРДИЈА МИЛОВАН
+ЋУПУРДИЈА САША
+ЋУПУРДИЈА СТЕВАН
+ЋУРЧИЋ ЧЕДОМИР
+ЋУРЧИЋ ЖИВАН
+ЋУРЧИЋ ЖИВАН
+ЋУРЧИЋ ЖИВКО
+ЋУРЧИЋ ЂОРЂЕ
+ЋУРЧИЋ АЛЕКСАНДАР
+ЋУРЧИЋ АНДРИЈА
+ЋУРЧИЋ БОШКО
+ЋУРЧИЋ БОГДАН
+ЋУРЧИЋ БОРИВОЈ
+ЋУРЧИЋ БРАНИСЛАВ
+ЋУРЧИЋ БРАНКО
+ЋУРЧИЋ БРАНКО
+ЋУРЧИЋ БРАНКО
+ЋУРЧИЋ ДАНИЛО
+ЋУРЧИЋ ДЕСПИНА
+ЋУРЧИЋ ДРАГАН
+ЋУРЧИЋ ДРАГАН
+ЋУРЧИЋ ДРАГАН
+ЋУРЧИЋ ДРАГОМИР
+ЋУРЧИЋ ДРАГОСЛАВ
+ЋУРЧИЋ ДУШАНКА
+ЋУРЧИЋ ДУШАН
+ЋУРЧИЋ ДУШАН
+ЋУРЧИЋ ДУШАН
+ЋУРЧИЋ ГЕОРГИЈЕ
+ЋУРЧИЋ ГОЈКО
+ЋУРЧИЋ ГОРДАНА
+ЋУРЧИЋ ИБОЈА
+ЋУРЧИЋ ИЛИЈА
+ЋУРЧИЋ ИЛИЈА
+ЋУРЧИЋ ЈАСМИНА
+ЋУРЧИЋ ЈЕЛЕНА
+ЋУРЧИЋ ЈОВАН НОВИНАР
+ЋУРЧИЋ ЈОВА
+ЋУРЧИЋ КАМЕНКО
+ЋУРЧИЋ-КАСАЛИЦА БОСА
+ЋУРЧИЋ КАТИЦА
+ЋУРЧИЋ ЛАЗАР
+ЋУРЧИЋ ЛАЗАР
+ЋУРЧИЋ ЉИЉАНА
+ЋУРЧИЋ ЉИЉАНА
+ЋУРЧИЋ ЉУБИША
+ЋУРЧИЋ ЉУБОМИР
+ЋУРЧИЋ МАРА
+ЋУРЧИЋ МАРА
+ЋУРЧИЋ МАРИЈА
+ЋУРЧИЋ МАРИЈА
+ЋУРЧИЋ МАРИЈА
+ЋУРЧИЋ МИХАЈЛО
+ЋУРЧИЋ МИЈО
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛАН
+ЋУРЧИЋ МИЛЕНА
+ЋУРЧИЋ МИЛЕВА
+ЋУРЧИЋ МИЛЕ
+ЋУРЧИЋ МИЛЕ
+ЋУРЧИЋ МИЛИЋ
+ЋУРЧИЋ МИЛИЦА
+ЋУРЧИЋ МИЛИВОЈ
+ЋУРЧИЋ МИЛОРАД
+ЋУРЧИЋ МИЛОРАД
+ЋУРЧИЋ МИОДРАГ
+ЋУРЧИЋ МИОДРАГ
+ЋУРЧИЋ МИРЈАНА
+ЋУРЧИЋ МИРЈАНА
+ЋУРЧИЋ МИРКО
+ЋУРЧИЋ МИРОСЛАВ
+ЋУРЧИЋ МИРОСЛАВ
+ЋУРЧИЋ МЛАДЕН
+ЋУРЧИЋ МОМЧИЛО
+ЋУРЧИЋ НАДА
+ЋУРЧИЋ НЕНАД
+ЋУРЧИЋ НИКОЛА
+ЋУРЧИЋ ОЛГА
+ЋУРЧИЋ ОЛГА
+ЋУРЧИЋ ПАВЛЕ
+ЋУРЧИЋ ПЕТАР
+ЋУРЧИЋ РАДЕ
+ЋУРЧИЋ РАДИВОЈ
+ЋУРЧИЋ РАДМИЛА
+ЋУРЧИЋ РАДМИЛА
+ЋУРЧИЋ РАДОСЛАВ
+ЋУРЧИЋ РАДОСЛАВ
+ЋУРЧИЋ РАДОСЛАВ
+ЋУРЧИЋ РАЈКО
+ЋУРЧИЋ РАЈКО
+ЋУРЧИЋ РАТКА
+ЋУРЧИЋ РАТОМИР
+ЋУРЧИЋ САВА
+ЋУРЧИЋ СЛАВИЦА
+ЋУРЧИЋ СЛАВКО
+ЋУРЧИЋ СЛОБОДАН
+ЋУРЧИЋ СЛОБОДАН
+ЋУРЧИЋ СЛОБОДАН
+ЋУРЧИЋ СТЕВАН
+ЋУРЧИЋ СТЕВО
+ЋУРЧИЋ УРОШ
+ЋУРЧИЋ ВАСИЛИЈЕ
+ЋУРЧИЋ ВЕРА
+ЋУРЧИЋ ВЕСЕЛИНКА
+ЋУРЧИЋ ВУКАШИН
+ЋУРЧИЋ ЗДРАВКО
+ЋУРЧИЋ ЗЛАТА
+ЋУРЧИЋ ЗОРАН
+ЋУРЧИЋ ЗОРАН
+ЋУРЧИЈА СИМА
+ЋУРЧИН ЖИВКО
+ЋУРЧИН ЖИВКО
+ЋУРЧИН ЂОРЂЕ
+ЋУРЧИН ЂУРА
+ЋУРЧИН АЛЕКСАНДАР
+ЋУРЧИН БОЖИДАР
+ЋУРЧИН БРАНКО
+ЋУРЧИН ДРАГОМИР
+ЋУРЧИН ДРАГОСЛАВ
+ЋУРЧИН ДРЕНКА
+ЋУРЧИН ДУШАН
+ЋУРЧИН ДУШАН
+ЋУРЧИН ЕМИЛИЈА
+ЋУРЧИН ЈЕЛЕНА
+ЋУРЧИН ЈЕЛИСАВЕТА
+ЋУРЧИН ЉУБИЦА
+ЋУРЧИН МАКСА
+ЋУРЧИН МИЛАН
+ЋУРЧИН МИЛЕНА
+ЋУРЧИН МИЛОРАД
+ЋУРЧИН МИЛОРАД
+ЋУРЧИН ОБРАД
+ЋУРЧИН ПЕТАР
+ЋУРЧИН РАДИВОЈ
+ЋУРЧИН РАДОСЛАВ
+ЋУРЧИН РУЖА
+ЋУРЧИН САРА
+ЋУРЧИН СВЕТОЗАР
+ЋУРЧИН ТОДОР
+ЋУРЧИН ВАСА
+ЋУРЧИН ВЕЛЕМИР
+ЋУРЧИН ВЕЛИМИР
+ЋУРЧИН ВЕРИЦА
+ЋУРЧИН ВУКИЦА
+ЋУРЧИН ЗОРА
+ЋУРЋИЈИЋ РАТОМИР
+ЋУРДИЋ ЈОВАН
+ЋУРДИЋ ВАСИЛИЈЕ
+ЋУРДИЋ ЗОРАН
+ЋУРГУЗ ИЛИЈА
+ЋУРГУЗ МИЛОРАД
+ЋУРГУЗ НАДА
+ЋУРГУЗ ВЕРИЦА
+ЋУРИЧИЋ ТАТЈАНА
+ЋУРИЋ ЂОРЂЕ
+ЋУРИЋ ЈОВАН
+ЋУРИЋ МИЛАН
+ЋУРИЋ МИЛОШ
+ЋУРИЋ МИЛОРАД
+ЋУРИЋ МИЛУТИН
+ЋУРИЋ ПЕЛАГИЈА
+ЋУРИЋ САВО
+ЋУРИЋ СИМО
+ЋУРИЋ СИНИША
+ЋУРИЋ СУЗАНА
+ЋУРИЋ ВЛАДИСЛАВ
+ЋУРКОВИЋ ШПИРО
+ЋУРКОВИЋ-ЂОРЂЕВИЋ МИОМИРА
+ЋУРКОВИЋ КАТИЦА
+ЋУРЛИБРК БОСИЉКА
+ЋУРУВИЈА БРАНКО
+ЋУРУВИЈА НИКОЛА
+ЋУРУВИЈА НИКОЛА
+ЋУРУВИЈА ВЛАДО
+ЋУТИЛО СТЕВО
+ЋУЗОВИЋ БРАНЕ
+ЋУЗОВИЋ ДРАГОЉУБ
+ЋУЗОВИЋ ДРАГОЉУБ
+ЋУЗОВИЋ ГОРАН
+ЋУЗОВИЋ МИРКО
+ЖАБАЉАЦ ВОЈИСЛАВ
+ЖАБИЋ ГОРАН
+ЖАБИЋ ЉУБОМИР
+ЖАБУЉАЦ ПАВЛЕ
+ЖАФРАН МАРТИН
+ЖАГАР ДРАГАН
+ЖАГАР ЕРНЕСТ
+ЖАГАР ИВАН
+ЖАГАР ЈОВАН
+ЖАГАР ЉИЉА
+ЖАГАР МАРИЈА
+ЖАГАР МАТИЈА
+ЖАГАР ПАВАО
+ЖАГАР РАДОСЛАВА
+ЖАЈА ТОМИСЛАВ
+ЖАЈАЧКО ЖЕЉКО
+ЖАК ДРАГУТИН
+ЖАКИЋ ЉУБИЦА
+ЖАКИЋ МАРИЈА
+ЖАКИЋ МИОДРАГ
+ЖАКИЋ МЛАДЕН
+ЖАКИЋ ВЕРА
+ЖАКИЋ ВЛАДИМИР
+ЖАКИЋ ВОЈИСЛАВ
+ЖАКУЛА АРАНКА
+ЖАКУЛА БОРИСЛАВ
+ЖАКУЛА МИЛАН
+ЖАКУЛА МИЛАН
+ЖАКУЛА МИОДРАГ
+ЖАКУЛА МИРА
+ЖАКУЛА РАДИВОЈ ДР ПРОФ
+ЖАКУЛА ЗОРА
+ЖАМБОКИ МАРИЈА
+ЖАМБОКИ ВЕРОНА
+ЖАРЧАНИН БРАНКО
+ЖАРЧАНИН ПРЕДРАГ
+ЖАРИН РАДОЈИЦА
+ЖАРИН СИНИША
+ЖАРИН-ТАБАК НАТАЛИЈА
+ЖАРИН ВЕСЕЛИН
+ЖАРКО ЛАДИСЛАВ
+ЖАРКО МИХАЈЛО
+ЖАРКОВ ДУШАН
+ЖАРКОВ КОСТА
+ЖАРКОВ ЉИЉАНА
+ЖАРКОВ ВЕСЕЛКА
+ЖАРКОВ ЗЛАТОЈЕ
+ЖАРКОВАЧКИ ИЛИЈА
+ЖАРКОВАЧКИ МИРКО
+ЖАРКОВИЋ ЖАРКО
+ЖАРКОВИЋ ДАНИЛО
+ЖАРКОВИЋ ДАНИЛО
+ЖАРКОВИЋ ДРАГОЈЕ ДР ПРОФ
+ЖАРКОВИЋ ГОЈКО
+ЖАРКОВИЋ ГОЈКО
+ЖАРКОВИЋ ЈОВАН
+ЖАРКОВИЋ ЈОВАН
+ЖАРКОВИЋ МИЛЕНА
+ЖАРКОВИЋ МИОДРАГ
+ЖАРКОВИЋ МИОДРАГ
+ЖАРКОВИЋ МИРКО
+ЖАРКОВИЋ НЕБОЈША
+ЖАРКОВИЋ НЕНАД
+ЖАРКОВИЋ НЕНАД
+ЖАРКОВИЋ НОВИЦА
+ЖАРКОВИЋ РИСТО
+ЖАРКОВИЋ РИСТО
+ЖАРКОВИЋ СЛАВКО
+ЖАРКОВИЋ ВЛАЈКО
+ЖАРКОВИЋ ЗДРАВКО
+ЖАРКОВИЋ ЗДРАВКО
+ЖАРКОВИЋ ЗОРА
+ЖДЕРИЋ ЈЕЛИЦА
+ЖДЕРИЋ МАРИЈА
+ЖДЕРИЋ МИЛАН
+ЖДЕРИЋ МИЛЕНКО
+ЖДЕРО ДРАГИЊА
+ЖДЕРО ДУШИЦА
+ЖДЕРО ГОЈКО
+ЖДЕРО МАРИНКО
+ЖДЕРО ПЕТАР
+ЖДЕРО ПЕТАР
+ЖДЕРО РАДОМИР
+ЖДРАЛЕ РАДОВАН
+ЖДРАЛИЋ ВАСО
+ЖДРЊА МИЛАН
+ЖДРЊА МИЛАН
+ЖДРЊА МИРКО
+ЖДРЊА НЕЂО
+ЖДРЊА НЕЂО
+ЖДРЊА СИМО
+ЖЕЖЕЉ БРАНКО
+ЖЕЖЕЉ МИЛАН
+ЖЕЖЕЉ МИЛАН
+ЖЕЖЕЉ САВА
+ЖЕЖЕЉ СВЕТИСЛАВ
+ЖЕБЕЉАН МИЛЕНА
+ЖЕБЕЉАН МИЛЕНКО
+ЖЕБЕЉАН МИЛОРАД
+ЖЕБЕЉАН МИТА
+ЖЕБЕЉАН НЕДЕЉКО
+ЖЕБЕРАН АНЂЕЛКА
+ЖЕГАРАЦ ЂОРЂЕ
+ЖЕГАРАЦ ДАНИЦА
+ЖЕГАРАЦ ДУШАН
+ЖЕГАРАЦ ЛАЗАР
+ЖЕГАРАЦ МИЛАН
+ЖЕГАРАЦ МИЛЕНКО
+ЖЕГАРАЦ МИРЈАНА
+ЖЕГАРАЦ СТЕВАН
+ЖЕГАРАЦ ВОЈИСЛАВ
+ЖЕКИЋ ЖИВКО
+ЖЕКИЋ БОШКО
+ЖЕКИЋ РАДИСЛАВ
+ЖЕКИЋ РУЖА
+ЖЕКИЋ ЗОРАН
+ЖЕЛЕМ СТЕВАН
+ЖЕЛЕР ЂУРЂЕВКА
+ЖЕЛЕЗЕН ЈОСИП
+ЖЕЛИ АНДРАШ
+ЖЕЛИ ИШТВАН
+ЖЕЛИ КАТАРИНА
+ЖЕЛИ СИЛВЕСТЕР
+ЖЕМБЕРИ ШАНДОР
+ЖЕМБЕРИ ЈОСИП
+ЖЕМБЕРИ РОБЕРТ
+ЖЕМБЕРИ РОБЕРТ
+ЖЕНЕР КАРЛО
+ЖЕНИЛО БОЖИДАР
+ЖЕРАЈИЋ ГАВРИЛО
+ЖЕРАВИЦА ДАМЈАН
+ЖЕРАВИЦА МИЛАДИН
+ЖЕРАВИЦА НАДА
+ЖЕРАВИЦА СТАНОЈЕ
+ЖЕРАВЉЕВ ИЛИЈА
+ЖЕРИЋ ИРМА
+ЖЕСТИЋ ШТЕФАНИЈА
+ЖИЖА НАДА
+ЖИЖАКИЋ САВА
+ЖИЖАКОВ ДРАГОЉУБ
+ЖИЖАКОВ КАТИЦА
+ЖИЖАКОВ МИЛОШ
+ЖИЖАКОВ ПАВЛЕ
+ЖИЖАКОВ ВЕЛИНКА
+ЖИЖАКОВ ВИТОМИР
+ЖИЖАКОВ ВЛАДА
+ЖИЖАКОВ ВЛАДИМИР
+ЖИЖИЋ ЧЕДОМИР
+ЖИЖИЋ АНЂЕЛИЈА
+ЖИЖИЋ БРАНИСЛАВ
+ЖИЖИЋ ДРАГАН
+ЖИЖИЋ МИЛОРАД
+ЖИЖИЋ ВЕСЕЛИН
+ЖИЖОВИЋ СЛОБОДАНКА
+ЖИБРЕГ АЛЕКСАНДАР
+ЖИБРЕГ ИВАНА
+ЖИДЕК ЈОСИП
+ЖИДИШИЋ ЗОРАН
+ЖИГА ЈЕЛЕНА
+ЖИГА КАРЛО
+ЖИГА МИРКО
+ЖИГА МУСТАФА
+ЖИГАЛАЦ ВЕРОНА
+ЖИГИЋ БОГДАН
+ЖИГИЋ БРАНКО
+ЖИГИЋ ДАНИЦА
+ЖИГИЋ ДИМИТРИЈЕ
+ЖИГИЋ ДУШАН
+ЖИГИЋ ЈУЛИЈА
+ЖИГИЋ ЉУБИША
+ЖИГИЋ МИЛАН
+ЖИГИЋ МИЛАН
+ЖИГИЋ МИЛАН
+ЖИГИЋ МИЛЕВА
+ЖИГИЋ МИЛКА
+ЖИГИЋ МИРКО
+ЖИГИЋ НЕДЕЉКО
+ЖИГИЋ НИКОЛА
+ЖИГИЋ ПЕТАР
+ЖИГИЋ ПЕТАР
+ЖИГИЋ ПЕТАР
+ЖИГИЋ РАДЕ
+ЖИГИЋ РАДОСЛАВ
+ЖИГИЋ САВКА
+ЖИГИЋ ВОЈИН
+ЖИГМОНД БЕЛА
+ЖИГМОНД БРАНКА
+ЖИГРАИ ЂОРЂЕ
+ЖИГРАИ ИШТВАН МР
+ЖИГРАИ ЈОВАН
+ЖИГРИ ЈОСИП
+ЖИГРИ ЉУБИЦА
+ЖИГРИ МИРКО
+ЖИГУРСКИ ПАВЛЕ
+ЖИХА МАРИЈА
+ЖИХЛАВСКИ ЈУЛКА
+ЖИЈИЋ ВУКОСАВА
+ЖИКИЋ ЂОРЂЕ
+ЖИКИЋ ЂОРЂЕ
+ЖИКИЋ ЂОРЂЕ
+ЖИКИЋ АЛЕКСАНДАР
+ЖИКИЋ ДИМИТРИЈЕ
+ЖИКИЋ ДОБРИЛА
+ЖИКИЋ ДРАГАН
+ЖИКИЋ ДУШАН
+ЖИКИЋ ЈОВАНКА
+ЖИКИЋ ЈОВАН
+ЖИКИЋ ЈОВАН
+ЖИКИЋ КАТИЦА
+ЖИКИЋ ЉУБИЦА
+ЖИКИЋ МАРИЦА
+ЖИКИЋ МАРИЈА
+ЖИКИЋ МИХАЈЛО
+ЖИКИЋ МИЛАН
+ЖИКИЋ МИЛОРАД ДР
+ЖИКИЋ НЕВЕНА
+ЖИКИЋ НИКОЛА
+ЖИКИЋ НИКОЛА
+ЖИКИЋ ОЛГА
+ЖИКИЋ ОЛИВЕРА
+ЖИКИЋ РАДИВОЈ
+ЖИКИЋ РАДОМИР
+ЖИКИЋ СЛОБОДАН
+ЖИКИЋ СОФИЈА
+ЖИКИЋ ТАМАРА
+ЖИКИЋ ТИХОМИР ДИПЛ ИНГ
+ЖИКИЋ ТОДОР
+ЖИКИЋ ВАСА
+ЖИКИЋ-ВАСИЋ ТАМАРА
+ЖИКИЋ ВЕЛИМИР
+ЖИКИЋ ВЕРА
+ЖИКИЋ ВЕРИЦА
+ЖИКИЋ ВИТОМИР
+ЖИКИЋ ВЛАДИМИР
+ЖИКОВИЋ НЕНАД
+ЖИЛЕВСКИ КРСТО
+ЖИЛИЋ МИЛЕНКО
+ЖИЛИЋ МИРОСЛАВ
+ЖИЛИЋ СТОЈАН
+ЖИЛНИК ЂУРА
+ЖИЛНИК ЂУРА
+ЖИЛНИК ПАВЛЕ ДИПЛ ИНГ
+ЖИЛНИК-ПЕТРОВИЋ ЖЕЛИМИР
+ЖИНИЋ МАРИНА
+ЖИРАВАЦ СТЕВАН
+ЖИРКА ПАВЕЛ
+ЖИРОШ МИРОН
+ЖИРОВНИК АНТОН
+ЖИВЧИЋ СВЕТЛАНА
+ЖИВАЉЕВИЋ ДРАГОМИР
+ЖИВАЉЕВИЋ ГОРАН
+ЖИВАЉЕВИЋ ОЛГА
+ЖИВАЉЕВИЋ СТАНА
+ЖИВАНЧЕВ ИЛИЈА
+ЖИВАНЧЕВ ЈОВАН
+ЖИВАНЧЕВ КАСА ДИПЛ ИНГ
+ЖИВАНЧЕВ МИКА
+ЖИВАНЧЕВ МИЛАН
+ЖИВАНЧЕВ МИЛАН
+ЖИВАНЧЕВ ПАЈА
+ЖИВАНЧЕВ РАДА
+ЖИВАНЧЕВ РАНКО
+ЖИВАНЧЕВ СТЕВАН
+ЖИВАНЧЕВ СТРАХИЊА
+ЖИВАНЧЕВИЋ ЛАЗАР
+ЖИВАНЧЕВИЋ МИЉКО
+ЖИВАНЧЕВИЋ МИЛОРАД ДР
+ЖИВАНЧЕВИЋ СЛОБОДАН
+ЖИВАНЧЕВИЋ ВЕЛИМИР
+ЖИВАНАЦ ДЕЈАН
+ЖИВАНАЦ ДЕЈАН
+ЖИВАНАЦ ЛАЗАР
+ЖИВАНАЦ ЗОРИЦА
+ЖИВАНИЋ ЂОКА
+ЖИВАНИЋ МИХАЈЛО
+ЖИВАНИЋ МИЛАН
+ЖИВАНИЋ МИЛОРАД
+ЖИВАНИЋ МИТАР
+ЖИВАНИЋ ПРЕДРАГ
+ЖИВАНИЋ ВЛАДИМИР
+ЖИВАНИЋ ЗОРАН
+ЖИВАНКИЋ ЕВИЦА
+ЖИВАНКОВ ИГЊАТ
+ЖИВАНОВ ЖАРКО
+ЖИВАНОВ ЖИВАН
+ЖИВАНОВ ЖИВКО
+ЖИВАНОВ АНЂЕЛИЈА
+ЖИВАНОВ БОГОЉУБ
+ЖИВАНОВ БРАНКО
+ЖИВАНОВ ДАНИЦА
+ЖИВАНОВ ДИМИТРИЈЕ
+ЖИВАНОВ ДОБРИЛА
+ЖИВАНОВ ДОБРИВОЈ
+ЖИВАНОВ ДРАГОЈЛА
+ЖИВАНОВ ДРАГОСЛАВ
+ЖИВАНОВ ДРАГОСЛАВ
+ЖИВАНОВ ДУШАН
+ЖИВАНОВ ГОРОСЛАВА
+ЖИВАНОВ ЈУСТИНА
+ЖИВАНОВ ЛАЗАР
+ЖИВАНОВ ЛАЗАР
+ЖИВАНОВ ЛЕПОСАВА
+ЖИВАНОВ ЉУБИЦА
+ЖИВАНОВ МАГДА
+ЖИВАНОВ МАКСИН
+ЖИВАНОВ МАРИЈА
+ЖИВАНОВ МАРИЈА
+ЖИВАНОВ МАРИЈА
+ЖИВАНОВ МАРИЈА
+ЖИВАНОВ МИЛАН
+ЖИВАНОВ МИЛЕТА
+ЖИВАНОВ МИЛИВОЈ
+ЖИВАНОВ МИЛОШ
+ЖИВАНОВ МИЛОШ
+ЖИВАНОВ МИЛОРАД
+ЖИВАНОВ МИОДРАГ
+ЖИВАНОВ МИОМИР
+ЖИВАНОВ МИТА
+ЖИВАНОВ МЛАДЕН
+ЖИВАНОВ МЛАДЕН
+ЖИВАНОВ МЛАДЕН
+ЖИВАНОВ МОМИР
+ЖИВАНОВ НАТАША
+ЖИВАНОВ НИКОЛА
+ЖИВАНОВ ПАВИЦА
+ЖИВАНОВ ПАВЛЕ
+ЖИВАНОВ ПАВЛЕ
+ЖИВАНОВ ПАВЛЕ
+ЖИВАНОВ ПАВЛЕ
+ЖИВАНОВ РАДИША
+ЖИВАНОВ РАЈКО
+ЖИВАНОВ САВА
+ЖИВАНОВ СЛАВКО
+ЖИВАНОВ СРЂАН
+ЖИВАНОВ СРБИСЛАВ
+ЖИВАНОВ СТАНИСЛАВ
+ЖИВАНОВ СВЕТОЗАР
+ЖИВАНОВ ТОДОР
+ЖИВАНОВ ТОМИСЛАВ
+ЖИВАНОВ ТУГОМИР
+ЖИВАНОВ ВЕЛИМИР
+ЖИВАНОВ ВЛАДИМИР
+ЖИВАНОВ ВЛАДИМИР
+ЖИВАНОВ ВОЈИСЛАВ
+ЖИВАНОВ ЗЛАТИНКА
+ЖИВАНОВИЋ ЖАРКО
+ЖИВАНОВИЋ ЖИКА
+ЖИВАНОВИЋ ЖИВАН
+ЖИВАНОВИЋ ЖИВОЈИН ДИПЛ ПРАВНИК
+ЖИВАНОВИЋ ЖИВОЈИН
+ЖИВАНОВИЋ ЂОРЂЕ
+ЖИВАНОВИЋ АЛЕКСАНДАР
+ЖИВАНОВИЋ АЛЕКСАНДАР
+ЖИВАНОВИЋ АЛЕКСИЈА
+ЖИВАНОВИЋ АНКИЦА
+ЖИВАНОВИЋ БОШКО
+ЖИВАНОВИЋ БОШКО
+ЖИВАНОВИЋ БОГДАН
+ЖИВАНОВИЋ БОРКА
+ЖИВАНОВИЋ БУДИМКА
+ЖИВАНОВИЋ ДРАГИША
+ЖИВАНОВИЋ ДРАГОЉУБ
+ЖИВАНОВИЋ ДРАГОСЛАВ
+ЖИВАНОВИЋ ЈАДРАНКА
+ЖИВАНОВИЋ ЈЕЛЕНА
+ЖИВАНОВИЋ ЈОВАН
+ЖИВАНОВИЋ ЈОВАН
+ЖИВАНОВИЋ ЛАЗАР
+ЖИВАНОВИЋ-ЛЕШ ДУШИЦА
+ЖИВАНОВИЋ ЉИЉАНА
+ЖИВАНОВИЋ МАРИЦА
+ЖИВАНОВИЋ МАРИЈА
+ЖИВАНОВИЋ МИЛАН
+ЖИВАНОВИЋ МИЛИСАВ
+ЖИВАНОВИЋ МИЛИВОЈ
+ЖИВАНОВИЋ МИЛОШ
+ЖИВАНОВИЋ МИЛОРАД
+ЖИВАНОВИЋ МИЛОВАН
+ЖИВАНОВИЋ МИОДРАГ ДР
+ЖИВАНОВИЋ МИОДРАГ
+ЖИВАНОВИЋ МИРЈАНА
+ЖИВАНОВИЋ МОМЧИЛО
+ЖИВАНОВИЋ НОВИЦА
+ЖИВАНОВИЋ ОБРАД
+ЖИВАНОВИЋ ПЕТАР
+ЖИВАНОВИЋ ПЕТАР
+ЖИВАНОВИЋ ПЕТАР
+ЖИВАНОВИЋ РАДА
+ЖИВАНОВИЋ РАДМИЛА
+ЖИВАНОВИЋ СЛАВКА
+ЖИВАНОВИЋ СЛАВКО
+ЖИВАНОВИЋ СТЕВАН
+ЖИВАНОВИЋ ТОМИСЛАВ
+ЖИВАНОВИЋ ВИДОЈЕ
+ЖИВАНОВИЋ ВЛАДИМИР
+ЖИВАНОВИЋ ВЛАДИСЛАВ
+ЖИВАНОВИЋ ВОЈИСЛАВ
+ЖИВАНОВИЋ ЗОРАН
+ЖИВАНОВИЋ ЗОРАН
+ЖИВАНОВИЋ ЗОРКА
+ЖИВИЋ ЂОРЂЕ
+ЖИВИЋ ЂОРЂЕ
+ЖИВИЋ БОЖИДАР
+ЖИВИЋ ГАВРА
+ЖИВИЋ ЈЕФТА
+ЖИВИЋ ЈЕЛИЦА
+ЖИВИЋ ЈОВАН
+ЖИВИЋ ЛАЗАР
+ЖИВИЋ ЉУБИЦА
+ЖИВИЋ РАДОЈИЦА
+ЖИВИЋ САВА
+ЖИВИЋ САВА
+ЖИВИЋ СМИЉА
+ЖИВИЋ СПАСОЈЕ
+ЖИВИЋ ВЕЛИБОР
+ЖИВИЋ ВИНКА ДР
+ЖИВИЋ ЗОРКА
+ЖИВИН НАДА
+ЖИВКАНОВИЋ ЈОВАН
+ЖИВКИЋ СТЕВАН
+ЖИВКОВ ЂОРЂЕ
+ЖИВКОВ АНЂЕЛКА
+ЖИВКОВ АНЂЕЛКА
+ЖИВКОВ БОРИСЛАВА
+ЖИВКОВ БРАНИСЛАВ
+ЖИВКОВ ДРАГИЊА
+ЖИВКОВ ДРАГОЉУБ
+ЖИВКОВ ДУШКО
+ЖИВКОВ ЕСТЕР
+ЖИВКОВ ГРАДИМИР
+ЖИВКОВ ИВАН
+ЖИВКОВ КОСТА
+ЖИВКОВ МАРКО
+ЖИВКОВ МЕЛАНИЈА
+ЖИВКОВ НЕНАД
+ЖИВКОВ ПАВЛЕ
+ЖИВКОВ РАДОЈКА
+ЖИВКОВ САВА
+ЖИВКОВ САВА
+ЖИВКОВ СЛАВКО
+ЖИВКОВ СЛАВКО
+ЖИВКОВ ВАСА
+ЖИВКОВИЋ ЧАСЛАВ
+ЖИВКОВИЋ ЖАКЛИНА
+ЖИВКОВИЋ ЖИВКА
+ЖИВКОВИЋ ЖИВОЈИН
+ЖИВКОВИЋ ЂОКА
+ЖИВКОВИЋ ЂОРЂЕ
+ЖИВКОВИЋ ЂОРЂЕ
+ЖИВКОВИЋ АЈКА
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛЕКСАНДАР
+ЖИВКОВИЋ АЛОЈЗИЈА
+ЖИВКОВИЋ АНЂЕЛКА
+ЖИВКОВИЋ БЛАШКО
+ЖИВКОВИЋ БОГДАН
+ЖИВКОВИЋ БОГДАН
+ЖИВКОВИЋ БОГОЉУБ
+ЖИВКОВИЋ БОГОМИР
+ЖИВКОВИЋ БОГОМИР
+ЖИВКОВИЋ БОРИСЛАВ
+ЖИВКОВИЋ БОРИСЛАВ
+ЖИВКОВИЋ БОРО
+ЖИВКОВИЋ БРАНИСЛАВ
+ЖИВКОВИЋ БРАНИСЛАВ
+ЖИВКОВИЋ БРАНИСЛАВ
+ЖИВКОВИЋ БРАНКА ДР
+ЖИВКОВИЋ БРАНКО
+ЖИВКОВИЋ ДАНИЛО
+ЖИВКОВИЋ ДЕЈАН
+ЖИВКОВИЋ ДИМИТРИЈЕ
+ЖИВКОВИЋ ДИМИТРИЈЕ
+ЖИВКОВИЋ ДОБРОСАВ
+ЖИВКОВИЋ ДРАГАНА
+ЖИВКОВИЋ ДРАГАНА
+ЖИВКОВИЋ ДРАГАН
+ЖИВКОВИЋ ДРАГАН
+ЖИВКОВИЋ ДРАГАН
+ЖИВКОВИЋ ДРАГАН
+ЖИВКОВИЋ ДРАГИША ДР
+ЖИВКОВИЋ ДРАГИША
+ЖИВКОВИЋ ДРАГИЋ
+ЖИВКОВИЋ ДРАГОЉУБ
+ЖИВКОВИЋ ДУШАНКА
+ЖИВКОВИЋ ДУШАН
+ЖИВКОВИЋ ДУШАН
+ЖИВКОВИЋ ДУШАН
+ЖИВКОВИЋ ДУШИЦА
+ЖИВКОВИЋ ГАБРИЈЕЛА
+ЖИВКОВИЋ ГАБРИЈЕЛА
+ЖИВКОВИЋ ГОРАН
+ЖИВКОВИЋ ГОРДАНА
+ЖИВКОВИЋ ИЛИЈА
+ЖИВКОВИЋ ИЛИЈА
+ЖИВКОВИЋ ИЛОНКА
+ЖИВКОВИЋ ИВАНКА
+ЖИВКОВИЋ ИВИЦА
+ЖИВКОВИЋ ЈАСМИНА
+ЖИВКОВИЋ ЈЕЛИЦА
+ЖИВКОВИЋ ЈЕЛИЦА
+ЖИВКОВИЋ ЈОВАН
+ЖИВКОВИЋ ЈОВАН
+ЖИВКОВИЋ ЈОВИЦА
+ЖИВКОВИЋ ЈУЛКА
+ЖИВКОВИЋ ЈУЛКА
+ЖИВКОВИЋ ЈУЛКИЦА
+ЖИВКОВИЋ КОСТА
+ЖИВКОВИЋ КРЕШО
+ЖИВКОВИЋ ЛАЗАР
+ЖИВКОВИЋ ЛАЗАР
+ЖИВКОВИЋ ЛЕПОСАВА
+ЖИВКОВИЋ ЉИЉАНА
+ЖИВКОВИЋ ЉУБИЦА
+ЖИВКОВИЋ ЉУБИНКА
+ЖИВКОВИЋ ЉУБОМИР
+ЖИВКОВИЋ ЉУБОМИР
+ЖИВКОВИЋ МАРИЈА
+ЖИВКОВИЋ МИХАЈЛО
+ЖИВКОВИЋ МИЛАНКА
+ЖИВКОВИЋ МИЛАН
+ЖИВКОВИЋ МИЛИЦА
+ЖИВКОВИЋ МИЛИВОЈ
+ЖИВКОВИЋ МИЛКА
+ЖИВКОВИЋ МИЛКА
+ЖИВКОВИЋ МИЛОШ
+ЖИВКОВИЋ МИЛОШ
+ЖИВКОВИЋ МИЛОМИР
+ЖИВКОВИЋ МИЛОРАД
+ЖИВКОВИЋ МИЛОРАД
+ЖИВКОВИЋ МИЛУТИН
+ЖИВКОВИЋ МИОДРАГ
+ЖИВКОВИЋ МИРЧЕТА
+ЖИВКОВИЋ МИРЈАНА
+ЖИВКОВИЋ МИРКО
+ЖИВКОВИЋ МИРОСЛАВ
+ЖИВКОВИЋ МИРОСЛАВ
+ЖИВКОВИЋ МОМЧИЛО
+ЖИВКОВИЋ НЕБОЈША
+ЖИВКОВИЋ НЕБОЈША
+ЖИВКОВИЋ НЕДЕЉКО
+ЖИВКОВИЋ НИКОЛА
+ЖИВКОВИЋ ОБРАД
+ЖИВКОВИЋ ПАВЛЕ
+ЖИВКОВИЋ ПЕТАР
+ЖИВКОВИЋ ПЕТАР
+ЖИВКОВИЋ ПЕТАР
+ЖИВКОВИЋ ПЕТАР
+ЖИВКОВИЋ РАДЕНКО
+ЖИВКОВИЋ РАДЕ
+ЖИВКОВИЋ РАДИВОЈ
+ЖИВКОВИЋ РАДМИЛА
+ЖИВКОВИЋ РАДМИЛО
+ЖИВКОВИЋ РАДОМИР
+ЖИВКОВИЋ РАДОСЛАВА
+ЖИВКОВИЋ РАДОСЛАВ
+ЖИВКОВИЋ РАДОСЛАВ
+ЖИВКОВИЋ РАДОСЛАВ
+ЖИВКОВИЋ РОСА
+ЖИВКОВИЋ РУЖИЦА
+ЖИВКОВИЋ САША
+ЖИВКОВИЋ САВА
+ЖИВКОВИЋ САВА
+ЖИВКОВИЋ САВА
+ЖИВКОВИЋ САВА
+ЖИВКОВИЋ СИНИША
+ЖИВКОВИЋ СЛАВКО
+ЖИВКОВИЋ СЛАВКО
+ЖИВКОВИЋ СЛАВКО
+ЖИВКОВИЋ СЛОБОДАН ДР
+ЖИВКОВИЋ СЛОБОДАН
+ЖИВКОВИЋ СМИЉКА
+ЖИВКОВИЋ СНЕЖАНА
+ЖИВКОВИЋ СРЕТЕН
+ЖИВКОВИЋ СТАМЕНКО
+ЖИВКОВИЋ СТЕПАН
+ЖИВКОВИЋ СТЕВАН
+ЖИВКОВИЋ СТОЈАНКА
+ЖИВКОВИЋ СТОЈАН
+ЖИВКОВИЋ СТОЈАН
+ЖИВКОВИЋ СВЕТИСЛАВ
+ЖИВКОВИЋ СВЕТЛАНА
+ЖИВКОВИЋ СВЕТОЗАР
+ЖИВКОВИЋ ТАНАСИЈЕ
+ЖИВКОВИЋ ТИНКА
+ЖИВКОВИЋ ТОША
+ЖИВКОВИЋ ТОМИСЛАВ
+ЖИВКОВИЋ ТОМИСЛАВ
+ЖИВКОВИЋ ВЕКОСЛАВ
+ЖИВКОВИЋ ВЕРА
+ЖИВКОВИЋ ВЕРА
+ЖИВКОВИЋ ВИДОЈКО
+ЖИВКОВИЋ ВЛАДАН
+ЖИВКОВИЋ ВЛАДИМИР
+ЖИВКОВИЋ ВЛАСТИМИР
+ЖИВКОВИЋ ВОЈИН
+ЖИВКОВИЋ ВОЈИСЛАВ
+ЖИВКОВИЋ ЗДЕНКА
+ЖИВКОВИЋ ЗДЕНКО
+ЖИВКОВИЋ ЗДРАВКО
+ЖИВКОВИЋ ЗЛАТОМИР
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВИЋ ЗОРАН
+ЖИВКОВЉЕВИЋ ВИДОСАВА
+ЖИВКУЦИН МИРОСЛАВА
+ЖИВКУЦИН СЛОБОДАН
+ЖИВНИ АНА
+ЖИВНИ ФРАЊА
+ЖИВОЈИНОВ БОРИВОЈ
+ЖИВОЈИНОВ ЉУБИЦА
+ЖИВОЈИНОВ МИЛОВАН
+ЖИВОЈИНОВ РАДИВОЈ
+ЖИВОЈИНОВИЋ РОЗАЛИЈА
+ЖИВОЈИНОВИЋ ВЛАДИМИР
+ЖИВОЈНОВ БРАНИСЛАВ
+ЖИВОЈНОВ МИРОСЛАВ
+ЖИВОЈНОВИЋ ЖИВОЈИН
+ЖИВОЈНОВИЋ САЊА
+ЖИВОЈНОВИЋ СРЂАН ДР ЛЕКАР
+ЖИВОЈНОВИЋ ЗОРКА
+ЖИВОТИЋ АНГЕЛИНА
+ЖИВОТИЋ ДУШАН
+ЖИВОТИЋ СТАНИСЛАВ
+ЖИВОТИЋ СТЕВАН
+ЖИВОТИЋ ВЕЛИМИР
+ЖИВОТИН МАРИЦА
+ЖИВОТИН МИТАР
+ЖМУКИЋ БРАНКО
+ЖМУКИЋ ГОРДАНА
+ЖМУКИЋ НИКОЛА
+ЖНИДАРШИЋ ИГНАЦ
+ЖНИДАРЕЦ ИВАН
+ЖНИДАРЕЦ ИВАН
+ЖОЛЦЕР ФЕРЕНЦ
+ЖОЛЦЕР ВИЛМОШ
+ЖОЉОМ КЛАРА
+ЖОЉОМ МИРЈАНА
+ЖОРЖ АЛЕКСАНДАР
+ЖОРИЋ ФИЛИП
+ЖУЖА МИРКО
+ЖУБОРИ МИЛЕНА
+ЖУГИЋ ДРАГОЉУБ
+ЖУГИЋ КРСТО
+ЖУГИЋ МАРИЈА
+ЖУГИЋ МИЛИЈА
+ЖУГИЋ МИЛИСАВ
+ЖУГИЋ МИЛОРАД
+ЖУГИЋ МИРКО
+ЖУГИЋ РАДОЈКА
+ЖУГИЋ РАТКО
+ЖУГИЋ-РИЈАВЕЦ СИЛВИЈА
+ЖУГИЋ СТАНИША
+ЖУГИЋ СТАНКО
+ЖУЈИЋ МОМИР
+ЖУЈИЋ СЛАВКО
+ЖУЈО МАРЈАН
+ЖУМБЕРКОВИЋ ЂОРЂЕ МР
+ЖУНАЦ ЈУЛКА
+ЖУНАЦ ТОМИСЛАВ
+ЖУНГУЛ СМИЉА
+ЖУНИЋ БОШКО
+ЖУНИЋ ДАРКО
+ЖУНИЋ ЈОВИША
+ЖУНИЋ МИЛАН
+ЖУНИЋ МИЛЕНКО
+ЖУНИЋ МИЛИЈАН
+ЖУНИЋ МОМЧИЛО
+ЖУНИЋ НЕНАД
+ЖУНИЋ-ПОПОВ СНЕЖАНА
+ЖУНИЋ РАДА
+ЖУНИЋ СИМА
+ЖУНИЋ СОЊА
+ЖУНИЋ ВЕЛИМИР
+ЖУЊИЋ ДРАГОМИР
+ЖУНТЕР АНТУН ДИПЛ ИНГ
+ЖУНТЕР БОЖАНА
+ЖУПАН ЕДУАРД
+ЖУПАН МИРКО
+ЖУПАНЧИЋ МАРГАРЕТА
+ЖУПАНЕЦ АЛБЕРТ ДР
+ЖУПАНЕЦ КСЕНИЈА
+ЖУПАНЕЦ МИРА
+ЖУПАНЕЦ МИРА
+ЖУПАРИЋ ВИКТОР
+ЖУПИЋ АНТЕ
+ЖУПИЋ ДАНЕ
+ЖУПИЋ ДРАГИЦА
+ЖУПИЋ МИЈО
+ЖУПУНСКИ ЖАРКО
+ЖУПУНСКИ ЖИВОРАД
+ЖУПУНСКИ ГОЈКО
+ЖУПУНСКИ ГРОЗДАНА
+ЖУПУНСКИ ГРУЈИЦА
+ЖУПУНСКИ ХЕЛЕНА
+ЖУПУНСКИ ИВАН
+ЖУПУНСКИ МАРИНКО
+ЖУПУНСКИ СТЕВАН
+ЖУПУНСКИ ВЕСЕЛИНКА
+ЖУРЖЕВИЋ ЦВЕТКО
+ЖУРЖИНОВИЋ КОСТА
+ЖУРЖОВАН ЛИА
+ЖУРЖОВАН НЕЛУ
+ЖУРЖОВАН ТРАНДАФИР
+ЖУРЖУЛ БОШКО
+ЖУРЖУЛ СТАНОЈЕ
+ЖУРИЋ МИХАИЛО
+ЖУРИЋ ВАСО
+ЖУРКА АУРОРА
+ЖУТИЋ МИЛКА
+ЖУТИЋ ПЕТАР
+ЖУТИЋ СТЕВО
+ЂАЧАНИН РАДОВАН
+ЂАЧИЋ ВЛАДИМИР
+ЂАИЋ МИРОСЛАВ
+ЂАЈИЋ ЖАРКО
+ЂАЈИЋ ЖЕЉКО
+ЂАЈИЋ АЛЕКСАНДРА
+ЂАЈИЋ БОГДАН
+ЂАЈИЋ ЈЕЛЕНКО
+ЂАЈИЋ-ЈОВАНОВИЋ РАЈКА
+ЂАЈИЋ МИЛОРАД
+ЂАЈИЋ НАДА
+ЂАЈИЋ НЕВЕНА
+ЂАЈИЋ НИКОЛА
+ЂАЈИЋ ВЕЉКО
+ЂАЈИЋ ВЛАДИСЛАВА
+ЂАКОНОВ МИЛКА
+ЂАКОНОВ СТЕВАН
+ЂАКОНОВИЋ МИЛОВАН
+ЂАКОНОВИЋ СЛАВИЦА
+ЂАКОНОВИЋ СТЕВАН
+ЂАКОВ ЉИЉАНА
+ЂАКОВ МИХАЈЛО
+ЂАКОВ МИЛАН
+ЂАКОВИЋ ЖИВКА
+ЂАКОВИЋ ЂОРЂЕ ДР
+ЂАКОВИЋ ЂОРЂЕ
+ЂАКОВИЋ ЂОРЂЕ
+ЂАКОВИЋ ЂУРА
+ЂАКОВИЋ ЂУРО
+ЂАКОВИЋ ЂУРО
+ЂАКОВИЋ АНКА
+ЂАКОВИЋ ДАРА
+ЂАКОВИЋ ДРАГАН
+ЂАКОВИЋ ДРАГАН
+ЂАКОВИЋ ДРАГОЉУБ ДР
+ЂАКОВИЋ ДРАГОЉУБ
+ЂАКОВИЋ ДУШАН
+ЂАКОВИЋ ИЛЕ
+ЂАКОВИЋ ИЛИЈА
+ЂАКОВИЋ ЈОКА
+ЂАКОВИЋ ЈОВАНКА
+ЂАКОВИЋ ЈОВАН
+ЂАКОВИЋ ЈОВИЦА
+ЂАКОВИЋ ЈОВО
+ЂАКОВИЋ ЉУБОМИР ДР ИНГ
+ЂАКОВИЋ ЉУБОМИР
+ЂАКОВИЋ МАРИЈА
+ЂАКОВИЋ МИЛАН
+ЂАКОВИЋ МИЛАН
+ЂАКОВИЋ МИЛАН
+ЂАКОВИЋ МИЛКА
+ЂАКОВИЋ МИРЈАНА
+ЂАКОВИЋ МИРЈАНА
+ЂАКОВИЋ НЕЂО
+ЂАКОВИЋ НЕДЕЉКО
+ЂАКОВИЋ НИКОЛА
+ЂАКОВИЋ ОСТОЈА
+ЂАКОВИЋ ПЕРСИДА
+ЂАКОВИЋ ПЕТАР
+ЂАКОВИЋ ПРЕДРАГ
+ЂАКОВИЋ ПРЕДРАГ
+ЂАКОВИЋ РАДОМИР
+ЂАКОВИЋ РАДОСАВ
+ЂАКОВИЋ РАНКО
+ЂАКОВИЋ САВА
+ЂАКОВИЋ СЛАВИЦА
+ЂАКОВИЋ СЛАВОЉУБ
+ЂАКОВИЋ СЛОБОДАН
+ЂАКОВИЋ СТЕВАН
+ЂАКОВИЋ СТЕВАН
+ЂАКОВИЋ СТОЈАН
+ЂАКОВИЋ ТАТЈАНА
+ЂАКОВИЋ ВАСО
+ЂАКОВИЋ ВЛАДИМИР
+ЂАКОВИЋ ВОЈО
+ЂАКОВИЋ ВУКОСАВА
+ЂАКОВИЋ ЗОРАН
+ЂАЛАИ ЛАЈОШ
+ЂАЛИНАЦ ГОРДАНА
+ЂАЛИНАЦ РАДИВОЈ
+ЂАЛО МИРКО
+ЂАЛОВИЋ РАДОСЛАВ
+ЂАЛУШ СТЕВАН
+ЂАН ЈОВАН
+ЂАНИШ ЛАЗАР
+ЂАНИШ ОЛИВЕРА
+ЂАНИЋ МАТО
+ЂАНКОВИЋ МИЛОШ
+ЂАНТАР АНЂЕЛИЈА
+ЂАНТАР ЈОЖЕФ
+ЂАПА АЛЕКСАНДАР
+ЂАПА ДУШАН
+ЂАПА МАРКО
+ЂАПА ПЕТАР
+ЂАПИЋ ДАВИД
+ЂАПИЋ КРСТА
+ЂАПИЋ МИЛЕСА
+ЂАПИЋ МИЛЕСА
+ЂАПИЋ-МИЛИЋ ТАТЈАНА ЛЕКАР
+ЂАПИЋ ПАВЛЕ
+ЂАРМАТИ ФРАЊА
+ЂАРМАТИ ГИЗЕЛА
+ЂАРМАТИ ИЛОНА
+ЂАРМАТИ ЈУЛИО
+ЂАРМАТИ ЛАСЛО
+ЂАРМАТИ МИХАЈЛО
+ЂАРМАТИ СНЕЖАНА
+ЂАТКОВ РАДА
+ЂЕБНАР ОБРАД
+ЂЕКЕР РОЗАЛИЈА
+ЂЕКИЋ ЖИВОЈИН
+ЂЕКИЋ КАТИЦА
+ЂЕКИЋ МИЛАН
+ЂЕКИЋ МИЛЕНА
+ЂЕКИЋ МИЛОМИР
+ЂЕКИЋ НАДА
+ЂЕКИЋ НЕДЕЉКО
+ЂЕКИЋ ПАВЛЕ
+ЂЕКИЋ РАДЕ
+ЂЕКИЋ РАДМИЛА
+ЂЕКИЋ СТАНА
+ЂЕКИЋ СТОЈАНКА
+ЂЕЛИЋ УРОШ
+ЂЕМБЕР ИШТВАН
+ЂЕМРОВСКИ ТОМАШ
+ЂЕМРОВСКИ ВЛАТКО
+ЂЕМРОВСКИ ЗДЕНКО
+ЂЕНАДИЋ ДРАГИША
+ЂЕНАДИЈА ПЕТАР
+ЂЕНДИЋ ЈОВАН ДИПЛ ИНГ
+ЂЕНДИЋ ЛАЗАР
+ЂЕНЕШ ПЕТАР
+ЂЕНГЕ АНДРАШ
+ЂЕНГЕ АНДРИЈА
+ЂЕНГЕ ПЕТЕР
+ЂЕНИЋ ЈЕЛЕНА
+ЂЕНИЋ СЛОБОДАН
+ЂЕНИЋ СЛОБОДАН
+ЂЕНИЋ ЗОРИЦА
+ЂЕНИСИЋ СТАНИМИР
+ЂЕРЂ ЂУРА
+ЂЕРЂ АНТУН
+ЂЕРЂ ИГОР
+ЂЕРЂ ЈОСИП
+ЂЕРЂ КАТАРИНА
+ЂЕРЂ ЉУБИЦА
+ЂЕРЂ ПЕТАР
+ЂЕРЂ ВИЛМОШ
+ЂЕРЕ КОРНЕЛ
+ЂЕРЕ ЗОЛТАН
+ЂЕРФИ АЛЕКСАНДАР
+ЂЕРИ ШАНДОР
+ЂЕРИ ЕНДРЕ
+ЂЕРИ ЕРЖЕБЕТ
+ЂЕРИ ГЕЗА
+ЂЕРИ КАРОЉ
+ЂЕРИ ЛАДИСЛАВ
+ЂЕРИ ЛАСЛО
+ЂЕРИ САБОЛЧ
+ЂЕРИ САЛОМЕ
+ЂЕРИЋ ЖИВАН
+ЂЕРИЋ ЂОРЂЕ
+ЂЕРИЋ ЂУРА
+ЂЕРИЋ БРАНКО
+ЂЕРИЋ ДАНИЦА
+ЂЕРИЋ ДЕСАНКА
+ЂЕРИЋ ДИМИТРИЈЕ
+ЂЕРИЋ ДОБРИНКО
+ЂЕРИЋ ДРАГАН
+ЂЕРИЋ ФЕЛИКС
+ЂЕРИЋ ЈАРОСЛАВ
+ЂЕРИЋ ЈОВАН
+ЂЕРИЋ ЈОВАН
+ЂЕРИЋ ЈУЛКА
+ЂЕРИЋ МИЦА
+ЂЕРИЋ МИХАЈЛО
+ЂЕРИЋ МИЛАН
+ЂЕРИЋ МИЛЕНКО
+ЂЕРИЋ МИЛЕ
+ЂЕРИЋ МИЛИВОЈЕ
+ЂЕРИЋ МИЛОШ
+ЂЕРИЋ МИОДРАГ
+ЂЕРИЋ МИРЈАНА
+ЂЕРИЋ НАДА
+ЂЕРИЋ ОЛГА
+ЂЕРИЋ ОЛИВЕРА
+ЂЕРИЋ ПЕТАР
+ЂЕРИЋ РАДЕ
+ЂЕРИЋ РАДИВОЈ
+ЂЕРИЋ РАДОМИР
+ЂЕРИЋ РАДОСЛАВ
+ЂЕРИЋ РАДОВАН
+ЂЕРИЋ СЛАВКО
+ЂЕРИЋ СТАНИСЛАВ
+ЂЕРИЋ ВЕЉКО
+ЂЕРИЋ ВОЈИН
+ЂЕРКИ ВЕРА
+ЂЕРКОВИЋ МИРЧЕТА
+ЂЕРКОВИЋ РАДОЈКА
+ЂЕРКОВИЋ ВЛАДЕТА
+ЂЕРМАН ЖИВКО
+ЂЕРМАН НЕДЕЉКО
+ЂЕРМАНОВ ИВАН
+ЂЕРМАНОВ ЉУБОМИР
+ЂЕРМАНОВ МИЛАН
+ЂЕРМАНОВ МИЛЕНА
+ЂЕРМАНОВ НАДЕЖДА
+ЂЕРМАНОВ ОЛГА
+ЂЕРМАНОВ ПЕТАР
+ЂЕРМАНОВ ТОДОР
+ЂЕРМАНОВ ВЛАДА
+ЂЕРМАНОВИЋ ЈЕЛИЦА
+ЂЕРМАНОВИЋ МАРИЈА
+ЂЕРМАНОВИЋ МИЛОДАНКА
+ЂЕРМАНОВИЋ СЛАВКО
+ЂЕРМАНОВИЋ СТАНКО
+ЂЕРМАТИ ИРЕНА
+ЂЕТКА ЈАНО
+ЂЕТКА МИХАЛ
+ЂЕТКА МИХАЛ
+ЂЕТКА МИРКО
+ЂЕТВАИ АНДРАШ ДИПЛ ИНГ
+ЂЕТВАИ АНДРАШ
+ЂЕТВАИ АНИЦА
+ЂЕТВАИ ФЕРЕНЦ
+ЂЕТВАИ ИМРЕ
+ЂЕТВАИ ЛАЈОШ
+ЂЕВЕКИ ЈОВАН
+ЂИДИЋ МАРИЈА
+ЂИДИЋ МАРИНКО
+ЂИКИЋ СТОЈАН
+ЂИКИЋ ВИКТОРИЈА
+ЂИЛАС БОРО
+ЂИЛАС ДРАГАН
+ЂИЛАС ДУШАН
+ЂИЛАС ГРОЗДАНА
+ЂИЛАС МАРИНКО
+ЂИЛАС МИЛОРАД
+ЂИЛАС МИЛОРАД
+ЂИЛАС МИЛОРАД
+ЂИЛАС НИКОЛА
+ЂИЛАС СТЕВАН
+ЂИЛВЕСИ ШАНДОР
+ЂИЛВЕСИ КАРЛО
+ЂИН ЂУРА
+ЂИН ЈУЛИЈАНА
+ЂИНЂИЋ МИЛОЈКО
+ЂИНИЋ ИВИЦА
+ЂИНИЋ НИКОЛА
+ЂИНИЋ СЛАВКА
+ЂИНИЋ СОФИЈА
+ЂИНИЋ ВЛАДЕТА
+ЂИНИЋ ЗОРАН
+ЂИЊА АНДРЕЈ
+ЂИНОВИЋ ЦВЕТКО
+ЂИНОВИЋ ИВКО
+ЂИНОВИЋ КОЛЕ
+ЂИПАЛО ЂУРО
+ЂИПАЛО ГОЈКО
+ЂИПАЛО МИЛАН
+ЂИПАЛО МИРКО
+ЂИПАЛО МИРОСЛАВ
+ЂИПАЛО РАДЕ
+ЂИПАНОВ ИДА
+ЂИПАНОВ НИКОЛА
+ЂИПАНОВ РЕЉА
+ЂИПАНОВ СВЕТОЗАР
+ЂИРИШИ ИШТВАН
+ЂИРЛИЋ СТЕВАН
+ЂИСАЛОВ БРАНИСЛАВ
+ЂИСАЛОВ ЈЕЛЕНА
+ЂИСАЛОВ ЈЕЛЕНА
+ЂИСАЛОВ ЛАЗАР
+ЂИСАЛОВ ЉУБИНКА
+ЂИСАЛОВ МИЛАН
+ЂИСАЛОВ МИЛАН
+ЂИСАЛОВ МИЛИВОЈ
+ЂИСАЛОВ МИЛИВОЈ
+ЂИСАЛОВ МИОДРАГ
+ЂИСАЛОВ МИОДРАГ
+ЂИСАЛОВ НАДА
+ЂИСАЛОВ СОЊА
+ЂИСАЛОВИЋ КАТИЦА
+ЂИТКОВ ЈОВАН
+ЂИТКОВ СОФИЈА
+ЂЈАК ЖИВКО
+ЂОЂИЋ МИЛОРАД
+ЂОГО МИЛОВАН
+ЂОГО МИРЈАНА
+ЂОГО РУЖИЦА
+ЂОГО ЗОРАН
+ЂОГОВИЋ МИЛОРАД
+ЂОГОВИЋ РАДИВОЈКА
+ЂОКИЋ АЛЕКСАНДАР
+ЂОКИЋ БОШКО
+ЂОКИЋ БОРИВОЈЕ
+ЂОКИЋ БРАТИСЛАВ
+ЂОКИЋ ЦВЕТКО
+ЂОКИЋ ДАРИНКА
+ЂОКИЋ ДРАГАН
+ЂОКИЋ ДРАГИША
+ЂОКИЋ ДРАГОЉУБ
+ЂОКИЋ ДРАГО
+ЂОКИЋ ГОРАН
+ЂОКИЋ ИВАН
+ЂОКИЋ ЈЕЛИСАВА
+ЂОКИЋ ЈОРДАН
+ЂОКИЋ ЉУБИНКО
+ЂОКИЋ ЉУБО
+ЂОКИЋ ЛУКА
+ЂОКИЋ МАРИНКО
+ЂОКИЋ МАТИЛДА
+ЂОКИЋ МИХАЈЛО
+ЂОКИЋ МИЛАН
+ЂОКИЋ МИЛАН
+ЂОКИЋ МИЛИСАВ
+ЂОКИЋ МИЛИВОЈЕ
+ЂОКИЋ МИЛОВАН
+ЂОКИЋ МИЛУТИН
+ЂОКИЋ ПАНТЕЛИЈА
+ЂОКИЋ ПЕТАР
+ЂОКИЋ РАДИСАВ
+ЂОКИЋ РАДОВАН
+ЂОКИЋ РАТКО
+ЂОКИЋ РУЖА
+ЂОКИЋ СЛОБОДАНКА
+ЂОКИЋ СЛОБОДАН
+ЂОКИЋ СОФИЈА
+ЂОКИЋ СТАНИША
+ЂОКИЋ СВЕТИСЛАВ
+ЂОКИЋ ВЕРА
+ЂОКИЋ ВЛАДИСЛАВ
+ЂОКИЋ ВОЈИСЛАВ
+ЂОКИЋ ВУЈАДИН
+ЂОКИЋ ВУКАДИН
+ЂОКИЋ ЗОРАН
+ЂОКОВИЋ ДРАГОМИР
+ЂОКОВИЋ МАРКО
+ЂОКОВИЋ МИЛАН
+ЂОКОВИЋ МИЛОВАН
+ЂОКОВИЋ ПЕТАР
+ЂОКОВИЋ РАДОМИР
+ЂОКОВИЋ РАДОВАН
+ЂОКОВИЋ СТОЈАН
+ЂОКВУЧИЋ НАДА
+ЂОЛАИ ИМРЕ
+ЂОЛАИ МАТИЛДА
+ЂОЉЕВИЋ ЂОКА
+ЂОЛОВИЋ ЧЕДОМИР
+ЂОМПАРИЋ ДУШАН
+ЂОМПАРИЋ ИЛИЈА
+ЂОМПАРИЋ МЕЛАНИЈА
+ЂОМПАРИЋ НИКОЛА
+ЂОМПАРИЋ НИКОЛА
+ЂОМПАРИЋ НИКОЛА
+ЂОМПАРИЋ ВЛАДИСЛАВА
+ЂОНОВИЋ ЂОРЂИЈЕ
+ЂОНОВИЋ КАРОЛИНА
+ЂОНОВИЋ ЗАРИЈА
+ЂОРЂЕВИЋ ЧЕДОМИР
+ЂОРЂЕВИЋ ЖИВКО
+ЂОРЂЕВИЋ ЖИВОЈИН
+ЂОРЂЕВИЋ ЖИВОЈИН
+ЂОРЂЕВИЋ ЖИВОЈИН
+ЂОРЂЕВИЋ ЖИВОРАД
+ЂОРЂЕВИЋ ЖИВОРАД
+ЂОРЂЕВИЋ ЖИВОТА
+ЂОРЂЕВИЋ ЂОКА
+ЂОРЂЕВИЋ ЂОРЂЕ
+ЂОРЂЕВИЋ ЂОРЂЕ
+ЂОРЂЕВИЋ ЂУРА
+ЂОРЂЕВИЋ АЦА
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДАР
+ЂОРЂЕВИЋ АЛЕКСАНДРА
+ЂОРЂЕВИЋ БОГДАН
+ЂОРЂЕВИЋ БОРА
+ЂОРЂЕВИЋ БОРИСАВ
+ЂОРЂЕВИЋ БОРИВОЈЕ
+ЂОРЂЕВИЋ БРАНИМИР
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНИСЛАВ
+ЂОРЂЕВИЋ БРАНКО
+ЂОРЂЕВИЋ БУДИМИР
+ЂОРЂЕВИЋ БУДИМИР
+ЂОРЂЕВИЋ ДАРКО
+ЂОРЂЕВИЋ ДЕСАНКА
+ЂОРЂЕВИЋ ДЕСПОТ
+ЂОРЂЕВИЋ ДИМИТРИЈЕ
+ЂОРЂЕВИЋ ДОБРИВОЈЕ
+ЂОРЂЕВИЋ ДРАЖА
+ЂОРЂЕВИЋ ДРАГАНА
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГАН
+ЂОРЂЕВИЋ ДРАГА
+ЂОРЂЕВИЋ ДРАГИША
+ЂОРЂЕВИЋ ДРАГИША
+ЂОРЂЕВИЋ ДРАГИША
+ЂОРЂЕВИЋ ДРАГОЉУБ ДР
+ЂОРЂЕВИЋ ДРАГОЉУБ
+ЂОРЂЕВИЋ ДРАГОЉУБ
+ЂОРЂЕВИЋ ДРАГОЉУБ
+ЂОРЂЕВИЋ ДРАГОЉУБ
+ЂОРЂЕВИЋ ДРАГОСЛАВ
+ЂОРЂЕВИЋ ДРАГУТИН
+ЂОРЂЕВИЋ ДУШАНКА
+ЂОРЂЕВИЋ ДУШАН
+ЂОРЂЕВИЋ ДУШАН
+ЂОРЂЕВИЋ ДУШАН
+ЂОРЂЕВИЋ ДУШАН
+ЂОРЂЕВИЋ ЕРНЕСТ
+ЂОРЂЕВИЋ ЕВИЦА
+ЂОРЂЕВИЋ ФАТИМА
+ЂОРЂЕВИЋ ГИЗЕЛА
+ЂОРЂЕВИЋ ГОРА
+ЂОРЂЕВИЋ ГОРДАНА
+ЂОРЂЕВИЋ ГРАДИМИР
+ЂОРЂЕВИЋ ГРАДИМИР
+ЂОРЂЕВИЋ ХРАНИСЛАВ
+ЂОРЂЕВИЋ ИЛИНКА
+ЂОРЂЕВИЋ ИЛОНА
+ЂОРЂЕВИЋ ИВАНА
+ЂОРЂЕВИЋ ИВАН
+ЂОРЂЕВИЋ ЈАГОДА
+ЂОРЂЕВИЋ ЈЕЛЕНА
+ЂОРЂЕВИЋ ЈЕЛЕНА
+ЂОРЂЕВИЋ ЈЕЛЕНА
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВАН
+ЂОРЂЕВИЋ ЈОВИЦА
+ЂОРЂЕВИЋ ЈУЛКИЦА
+ЂОРЂЕВИЋ ЈУЛКИЦА
+ЂОРЂЕВИЋ КАТАРИНА
+ЂОРЂЕВИЋ КОНСТАНДИНА
+ЂОРЂЕВИЋ КОСТА
+ЂОРЂЕВИЋ ЛАЗАР
+ЂОРЂЕВИЋ ЛАЗАР
+ЂОРЂЕВИЋ ЉИЉАНА
+ЂОРЂЕВИЋ ЉУБА ДИПЛ ИНГ
+ЂОРЂЕВИЋ ЉУБИША
+ЂОРЂЕВИЋ ЉУБИША
+ЂОРЂЕВИЋ ЉУБИЦА
+ЂОРЂЕВИЋ ЉУБИЦА
+ЂОРЂЕВИЋ ЉУБИЦА
+ЂОРЂЕВИЋ ЉУБИНКА
+ЂОРЂЕВИЋ ЉУБИСАВ
+ЂОРЂЕВИЋ ЉУБОМИР
+ЂОРЂЕВИЋ ЉУБОМИР
+ЂОРЂЕВИЋ МАРИЈА
+ЂОРЂЕВИЋ МАРИЈА
+ЂОРЂЕВИЋ МИЛАНКА
+ЂОРЂЕВИЋ МИЛАНКА
+ЂОРЂЕВИЋ МИЛАН
+ЂОРЂЕВИЋ МИЛАН
+ЂОРЂЕВИЋ МИЛЕНА
+ЂОРЂЕВИЋ МИЛЕНКО
+ЂОРЂЕВИЋ МИЛЕНКО
+ЂОРЂЕВИЋ МИЛИЈА
+ЂОРЂЕВИЋ МИЛОШ ДР
+ЂОРЂЕВИЋ МИЛОШ
+ЂОРЂЕВИЋ МИЛОРАД
+ЂОРЂЕВИЋ МИЛОРАД
+ЂОРЂЕВИЋ МИЛОСАВ
+ЂОРЂЕВИЋ МИЛОВАН
+ЂОРЂЕВИЋ МИЛОВАН
+ЂОРЂЕВИЋ МИЛУТИН
+ЂОРЂЕВИЋ МИОДРАГ
+ЂОРЂЕВИЋ МИОДРАГ
+ЂОРЂЕВИЋ МИОДРАГ
+ЂОРЂЕВИЋ МИРЈАНА
+ЂОРЂЕВИЋ МИРЈАНА
+ЂОРЂЕВИЋ МИРКО
+ЂОРЂЕВИЋ МИРКО
+ЂОРЂЕВИЋ МИРОСЛАВ
+ЂОРЂЕВИЋ МИРОСЛАВ
+ЂОРЂЕВИЋ МИРОСЛАВ
+ЂОРЂЕВИЋ МЛАДЕН
+ЂОРЂЕВИЋ НАДА
+ЂОРЂЕВИЋ НАДА
+ЂОРЂЕВИЋ НЕДЕЉКО ДР
+ЂОРЂЕВИЋ НЕВЕНКА
+ЂОРЂЕВИЋ НИКОЛА
+ЂОРЂЕВИЋ ПАЈА
+ЂОРЂЕВИЋ ПАНТА
+ЂОРЂЕВИЋ ПАВЛЕ
+ЂОРЂЕВИЋ ПАВЛЕ
+ЂОРЂЕВИЋ ПАВЛЕ
+ЂОРЂЕВИЋ ПЕТАР
+ЂОРЂЕВИЋ РАДОМИР
+ЂОРЂЕВИЋ РАДОМИР
+ЂОРЂЕВИЋ РАДОСЛАВ
+ЂОРЂЕВИЋ РАДОСЛАВ
+ЂОРЂЕВИЋ РАДОСЛАВ
+ЂОРЂЕВИЋ РАЈКА
+ЂОРЂЕВИЋ РАНЂЕЛ
+ЂОРЂЕВИЋ САША
+ЂОРЂЕВИЋ САВА
+ЂОРЂЕВИЋ СИНИША
+ЂОРЂЕВИЋ СЛАЂАНА
+ЂОРЂЕВИЋ СЛАВКО
+ЂОРЂЕВИЋ СЛАВКО
+ЂОРЂЕВИЋ СЛАВКО
+ЂОРЂЕВИЋ СЛОБОДАН
+ЂОРЂЕВИЋ СЛОБОДАН
+ЂОРЂЕВИЋ СЛОБОДАН
+ЂОРЂЕВИЋ СЛОБОДАН
+ЂОРЂЕВИЋ СНЕЖАНА
+ЂОРЂЕВИЋ СОФИЈА
+ЂОРЂЕВИЋ СОФИЈА
+ЂОРЂЕВИЋ СРЂАН
+ЂОРЂЕВИЋ СРЂАН
+ЂОРЂЕВИЋ СРЕТЕН
+ЂОРЂЕВИЋ СТАНА
+ЂОРЂЕВИЋ СТАНИСЛАВ
+ЂОРЂЕВИЋ СТАНКА
+ЂОРЂЕВИЋ СТЕВАНА
+ЂОРЂЕВИЋ СТЕВАН
+ЂОРЂЕВИЋ СТЕВАН
+ЂОРЂЕВИЋ СВЕТИСЛАВ
+ЂОРЂЕВИЋ СВЕТИСЛАВ
+ЂОРЂЕВИЋ СВЕТОЗАР
+ЂОРЂЕВИЋ ТИОСАВ
+ЂОРЂЕВИЋ ТОМИСЛАВ
+ЂОРЂЕВИЋ ТОМИСЛАВ
+ЂОРЂЕВИЋ ВЕЛИСАВ
+ЂОРЂЕВИЋ ВЕЛИЗАР
+ЂОРЂЕВИЋ ВЕРА
+ЂОРЂЕВИЋ ВЕРА
+ЂОРЂЕВИЋ ВИДОСАВА
+ЂОРЂЕВИЋ ВЛАДИМИР
+ЂОРЂЕВИЋ ВЛАЈКО
+ЂОРЂЕВИЋ ВЛАСТИМИР
+ЂОРЂЕВИЋ ВЛАСТИМИР
+ЂОРЂЕВИЋ ВОЈИН
+ЂОРЂЕВИЋ ВУЧКО
+ЂОРЂЕВИЋ ЗОРАН
+ЂОРЂЕВИЋ ЗОРАН
+ЂОРЂЕВИЋ ЗОРАН
+ЂОРЂЕВИЋ ЗОРАН
+ЂОРЂИЋ БРАНКО
+ЂОРЂИЋ МАРКО
+ЂОРЂИЋ МИЛАН
+ЂОРЂИЈЕВСКИ ДРАГАН
+ЂОРЂИЈЕВСКИ ДУШАН
+ЂОРЂИЈЕВСКИ ЗОРАН
+ЂОРЂИН ФЕМКА
+ЂОРЂИН РАДЕ
+ЂОРЂИН САВА
+ЂОРЂИОСКИ КИРО
+ЂОРЕВСКИ ГОРАН
+ЂОРГИЕВА ЈЕЛИЦА
+ЂОРИЋ АНТОНИЈЕ
+ЂОРИЋ ГОРДАНА
+ЂОРИЋ ЉУБИСАВ
+ЂОРИЋ МИЛИВОЈЕ
+ЂОРИЋ МИОДРАГ
+ЂОРИЋ ВЕРИЦА
+ЂОРОЈЕВИЋ ВУКОТА
+ЂОТЕВА ТРАЈАНКА
+ЂОТУНОВИЋ АНЂЕЛИЈА
+ЂОЗИЋ ШУКРИЈА
+ЂУЂАР МЕЛАНИЈА
+ЂУЂАР ВЛАДА
+ЂУЂАР ВЛАДИМИР
+ЂУЂАР ЗВОНИМИР
+ЂУЂИЋ ДРАГАН
+ЂУДУРОВИЋ ДУШАН
+ЂУГА ПАВЕЛ
+ЂУКАНОВ БОРИВОЈ
+ЂУКАНОВ ЕМИЛИЈАН
+ЂУКАНОВ МИЛАН
+ЂУКАНОВ НАДА
+ЂУКАНОВ СЛОБОДАН
+ЂУКАНОВИЋ АЛЕКСАНДАР
+ЂУКАНОВИЋ БРАНКО
+ЂУКАНОВИЋ ИВО
+ЂУКАНОВИЋ ЉУБИЦА
+ЂУКАНОВИЋ МАРА
+ЂУКАНОВИЋ МИЛАН
+ЂУКАНОВИЋ МИРОЉУБ
+ЂУКАНОВИЋ НАДА
+ЂУКАНОВИЋ НАДА
+ЂУКАНОВИЋ ПУНИША
+ЂУКАНОВИЋ СРЕТЕН
+ЂУКАНОВИЋ СТАКА
+ЂУКАНОВИЋ ВЛАДИМИР
+ЂУКАНОВИЋ ЗОРА
+ЂУКИЧИН ЈОВАНКА
+ЂУКИЧИН МАРИЈА
+ЂУКИЧИН СРЕДОЈЕ
+ЂУКИЧИН СРЕДОЈЕ
+ЂУКИЋ-ШАБИЋ ГОРДАНА
+ЂУКИЋ ЖАРКА
+ЂУКИЋ ЖАРКО
+ЂУКИЋ ЖЕЉКО
+ЂУКИЋ ЖИВОТА
+ЂУКИЋ ЂОРЂЕ
+ЂУКИЋ ЂОРЂЕ
+ЂУКИЋ ЂОРЂЕ
+ЂУКИЋ ЂОРЂЕ
+ЂУКИЋ ЂУР0
+ЂУКИЋ ЂУРА
+ЂУКИЋ ЂУРО
+ЂУКИЋ АГНИЦА
+ЂУКИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ЂУКИЋ АНА
+ЂУКИЋ АНА
+ЂУКИЋ АНДРИЈА
+ЂУКИЋ АНИЦА
+ЂУКИЋ БИЉАНА
+ЂУКИЋ БОРИСЛАВ
+ЂУКИЋ БРАНИСЛАВ
+ЂУКИЋ БРАНИСЛАВ
+ЂУКИЋ БРАНКО
+ЂУКИЋ ДАНИЦА ДР
+ЂУКИЋ ДАНИЛО
+ЂУКИЋ ДИЈАНА
+ЂУКИЋ ДИМИТРИЈЕ
+ЂУКИЋ ДОБРИЛА
+ЂУКИЋ ДОБРИВОЈ
+ЂУКИЋ ДРАГАН
+ЂУКИЋ ДРАГАН
+ЂУКИЋ ДРАГОЈЛО
+ЂУКИЋ ДРАГОМИР
+ЂУКИЋ ДУШАН
+ЂУКИЋ ДУШАН
+ЂУКИЋ ДУШАН
+ЂУКИЋ ДУШАН
+ЂУКИЋ ДУШАН
+ЂУКИЋ ГЕНА
+ЂУКИЋ ГЕНО
+ЂУКИЋ ГИЗЕЛА
+ЂУКИЋ ГОРДАНА
+ЂУКИЋ ИЛИЈА
+ЂУКИЋ ИЛИЈА
+ЂУКИЋ ИВАН ДИПЛ ИНГ
+ЂУКИЋ ИВАНКА
+ЂУКИЋ ЈАША
+ЂУКИЋ ЈЕЛЕНА
+ЂУКИЋ ЈОВАН
+ЂУКИЋ ЈОВИЦА
+ЂУКИЋ ЈУЛКА
+ЂУКИЋ ЛЕО
+ЂУКИЋ ЉИЉАНА
+ЂУКИЋ ЉУБИЦА
+ЂУКИЋ ЉУБОМИР
+ЂУКИЋ ЉУБОМИР
+ЂУКИЋ МАКСИМ
+ЂУКИЋ МАРА
+ЂУКИЋ МАРИЈА
+ЂУКИЋ МАРИНА
+ЂУКИЋ МИЈОДРАГ
+ЂУКИЋ МИЛАНКА
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛАН
+ЂУКИЋ МИЛЕНКО
+ЂУКИЋ МИЛЕВА
+ЂУКИЋ МИЛЕ
+ЂУКИЋ МИЛЕ
+ЂУКИЋ МИЛИЦА
+ЂУКИЋ МИЛИЦА
+ЂУКИЋ МИЉКО
+ЂУКИЋ МИЛКА
+ЂУКИЋ МИЛОШ
+ЂУКИЋ МИЛОШ
+ЂУКИЋ МИЛОРАД
+ЂУКИЋ МИЛОВАН
+ЂУКИЋ МИРКО
+ЂУКИЋ МИРКО
+ЂУКИЋ МИРКО
+ЂУКИЋ МИРКО
+ЂУКИЋ МИРКО
+ЂУКИЋ НЕЂО
+ЂУКИЋ НЕДЕЉКО
+ЂУКИЋ НИКОЛА
+ЂУКИЋ НИКОЛА
+ЂУКИЋ НОВАК
+ЂУКИЋ НОВАК
+ЂУКИЋ НОВАК
+ЂУКИЋ ОСТОЈА
+ЂУКИЋ ПАНЕ
+ЂУКИЋ ПАВЛЕ
+ЂУКИЋ ПЕРИША
+ЂУКИЋ ПЕТАР
+ЂУКИЋ ПЕТАР
+ЂУКИЋ РАДЕ
+ЂУКИЋ РАДИВОЈ
+ЂУКИЋ РАДОЈИЦА
+ЂУКИЋ РАДОВАН
+ЂУКИЋ РАЈКО
+ЂУКИЋ РОСА
+ЂУКИЋ РУЖИЦА ЛОКАЛ
+ЂУКИЋ САВА
+ЂУКИЋ САВКА
+ЂУКИЋ САВО ДР
+ЂУКИЋ СЛАВИЦА
+ЂУКИЋ СЛАВКО
+ЂУКИЋ СЛАВОЉУБ
+ЂУКИЋ СЛОБОДАН
+ЂУКИЋ СРЂАН
+ЂУКИЋ СРБОЉУБ
+ЂУКИЋ СТАНА
+ЂУКИЋ СТАНКО
+ЂУКИЋ СТАНКО
+ЂУКИЋ СТЕВАН
+ЂУКИЋ СТОЈАНКА
+ЂУКИЋ СТОЈАН
+ЂУКИЋ СВЕТЛАНА
+ЂУКИЋ СВЕТЛАНА
+ЂУКИЋ ТОМИСЛАВ
+ЂУКИЋ ТОМИСЛАВ
+ЂУКИЋ ВАЛЕРИЈА
+ЂУКИЋ ВЕЛЕМИР
+ЂУКИЋ ВЕРИЦА
+ЂУКИЋ ВЕРОНИКА
+ЂУКИЋ ВИДАК
+ЂУКИЋ ВИДА
+ЂУКИЋ ВЛАДИМИР
+ЂУКИЋ ВЛАДИМИР
+ЂУКИЋ ВЛАДИМИР
+ЂУКИЋ ВЛАЈКО
+ЂУКИЋ ВОЈИН
+ЂУКИЋ ВОЈИСЛАВ
+ЂУКИЋ ВУКАН
+ЂУКИЋ ЗОРАН
+ЂУКИН ДУШАН
+ЂУКИН СТЕВАН
+ЂУКНИЋ СРЕТЕН
+ЂУЛА КАРЛО
+ЂУЛИНАЦ ЈЕЛИЦА
+ЂУЛИНАЦ ВЕСЕЛИН
+ЂУЛИЗИБАРИЋ-ОРЕШКОВИЋ ДАНИЦА
+ЂУЛВЕЗАН КОСА
+ЂУЛВЕЗАН МИЛОШ
+ЂУЛВЕЗАН РОЗАЛИЈА
+ЂУМИЋ БОГДАН
+ЂУМИЋ ДУШАН
+ЂУМИЋ ГОСПАВА
+ЂУМИЋ ИЛИЈА
+ЂУМИЋ МАРИЈА
+ЂУМИЋ МИЛЕНКО
+ЂУМИЋ СЛАВКО
+ЂУМИЋ СТАНКО
+ЂУМИЋ УРОШ
+ЂУНДИЋ МАРИНКО
+ЂУРЧЕК МИЛЕНКО
+ЂУРЧЕВИЋ КСЕНИЈА
+ЂУРЧИАНСКИ МИРОСЛАВ
+ЂУРЧИАНСКИ ПАВЛЕ
+ЂУРЧИК ЈОСИП
+ЂУРЧЈАНСКИ МИРОСЛАВ
+ЂУРЧОК МИЛИНА
+ЂУРЂЕВ ЖАРКО
+ЂУРЂЕВ ЂОРЂЕ
+ЂУРЂЕВ АЛЕКСАНДАР
+ЂУРЂЕВ АЛЕКСАНДАР
+ЂУРЂЕВ БОЖИДАР
+ЂУРЂЕВ БРАНИСЛАВ
+ЂУРЂЕВ ДИМИТРИЈЕ
+ЂУРЂЕВ ДОБРИЛА
+ЂУРЂЕВ ДРАГОЉУБ
+ЂУРЂЕВ ДУШАН
+ЂУРЂЕВ ДУШАН
+ЂУРЂЕВ КАЋА
+ЂУРЂЕВ КАТА
+ЂУРЂЕВ ЉУБИША
+ЂУРЂЕВ МАРИЈА
+ЂУРЂЕВ МАРИЈА
+ЂУРЂЕВ МИЛЕТА
+ЂУРЂЕВ МЛАДЕН
+ЂУРЂЕВ НАДЕЖДА
+ЂУРЂЕВ НЕВЕНКА
+ЂУРЂЕВ НОВАК
+ЂУРЂЕВ ОБРАД
+ЂУРЂЕВ ПАВА
+ЂУРЂЕВ ПРВОСЛАВ
+ЂУРЂЕВ САВИЦА
+ЂУРЂЕВ СЛАВКО
+ЂУРЂЕВ СТЕВАН
+ЂУРЂЕВ ТОДОР
+ЂУРЂЕВ ВАСА
+ЂУРЂЕВ ВЕРА
+ЂУРЂЕВ ЗОРКА
+ЂУРЂЕВАЦ ДРАГОЉУБ
+ЂУРЂЕВИЋ ЖЕЉКО
+ЂУРЂЕВИЋ ЖИВАН
+ЂУРЂЕВИЋ ЖИВКО
+ЂУРЂЕВИЋ ЖИВКО
+ЂУРЂЕВИЋ ЂОРЂЕ
+ЂУРЂЕВИЋ ЂУРЂИЦА ДИПЛ ИНГ
+ЂУРЂЕВИЋ АНЂЕЛКО
+ЂУРЂЕВИЋ БОГДАН
+ЂУРЂЕВИЋ БРАНКО
+ЂУРЂЕВИЋ БРАНКО
+ЂУРЂЕВИЋ БУДИМИР
+ЂУРЂЕВИЋ ДРАГУТИН
+ЂУРЂЕВИЋ ДУШАН
+ЂУРЂЕВИЋ ДУШАН
+ЂУРЂЕВИЋ ДУШИЦА
+ЂУРЂЕВИЋ ГОРДАНА
+ЂУРЂЕВИЋ ЈАКОВ
+ЂУРЂЕВИЋ ЈЕЛЕНА
+ЂУРЂЕВИЋ ЈЕЛЕНА
+ЂУРЂЕВИЋ ЈЕЛИЦА
+ЂУРЂЕВИЋ ЈОВАНКА
+ЂУРЂЕВИЋ ЈОВАН
+ЂУРЂЕВИЋ ЈУЛКА
+ЂУРЂЕВИЋ ЛАЗАР
+ЂУРЂЕВИЋ ЛАЗО
+ЂУРЂЕВИЋ ЉУБОМИР
+ЂУРЂЕВИЋ МАНОЈЛО
+ЂУРЂЕВИЋ МАРИЈА
+ЂУРЂЕВИЋ МИЛАН
+ЂУРЂЕВИЋ МИЛАН
+ЂУРЂЕВИЋ МИЛАН
+ЂУРЂЕВИЋ МИЛЕНКО
+ЂУРЂЕВИЋ МИЛИЦА
+ЂУРЂЕВИЋ МИЛИВОЈ
+ЂУРЂЕВИЋ МИЛОРАД
+ЂУРЂЕВИЋ МИЛОРАД
+ЂУРЂЕВИЋ МИРЈАНА
+ЂУРЂЕВИЋ МИРЈАНА
+ЂУРЂЕВИЋ МОМЧИЛО
+ЂУРЂЕВИЋ НЕДЕЉКО
+ЂУРЂЕВИЋ НИКОЛА
+ЂУРЂЕВИЋ РАДИНКА
+ЂУРЂЕВИЋ РАНКО
+ЂУРЂЕВИЋ САВА
+ЂУРЂЕВИЋ САВА
+ЂУРЂЕВИЋ СЛОБОДАН
+ЂУРЂЕВИЋ СРЂАН ДР
+ЂУРЂЕВИЋ СТАНКО
+ЂУРЂЕВИЋ СТАНОЈКА
+ЂУРЂЕВИЋ СТЕВАН
+ЂУРЂЕВИЋ СВЕТОЗАР
+ЂУРЂЕВИЋ ТОДОР
+ЂУРЂЕВИЋ ТОМИСЛАВ
+ЂУРЂЕВИЋ ТОМИСЛАВ
+ЂУРЂЕВИЋ ВЕСЕЛИН
+ЂУРЂЕВИЋ ВИД
+ЂУРЂЕВИЋ ВЛАДА
+ЂУРЂЕВИЋ ВЛАДА
+ЂУРЂЕВИЋ ВЛАДИМИР
+ЂУРЂЕВИЋ ВЛАДИМИР
+ЂУРЂЕВИЋ ВЛАДИСЛАВ
+ЂУРЂЕВИЋ ЗОРАН
+ЂУРЂЕВИЋ ЗОРАН
+ЂУРЂЕВСКИ БОШКО
+ЂУРЂИЋ БОЖИДАР
+ЂУРЂИЋ МИЛОШ
+ЂУРЂИЋ МОМЧИЛО
+ЂУРЂИЋ САВО
+ЂУРЂИЋ СТАНА
+ЂУРЂИН СТЕВАН
+ЂУРЂУЛОВ ДЕЈАН
+ЂУРЂУЛОВ ЕВИЦА
+ЂУРА ФРАЊА
+ЂУРА ЈЕЛИСАВЕТА
+ЂУРА ЈУЛИЈАНА МР
+ЂУРАЧИЋ ДРАГАН
+ЂУРАШ МИОДРАГ
+ЂУРАШЕВИЋ ЂОРЂЕ
+ЂУРАШЕВИЋ ЂУРО
+ЂУРАШЕВИЋ ГОЈКО
+ЂУРАШЕВИЋ ИВО
+ЂУРАШЕВИЋ МАРИЈАНА
+ЂУРАШЕВИЋ МИЛЕ
+ЂУРАШЕВИЋ РАДОМИР
+ЂУРАШЕВИЋ ТИБОР
+ЂУРАШЕВИЋ ЗОРАН
+ЂУРАШИНОВ ВЕЛИМИР
+ЂУРАШИНОВИЋ ИЛИЈА
+ЂУРАШКОВИЋ ЖИВОЈИН
+ЂУРАШКОВИЋ БОЖО
+ЂУРАШКОВИЋ ДРАГАН
+ЂУРАШКОВИЋ ДРАГО
+ЂУРАШКОВИЋ ГОРДАНА
+ЂУРАШКОВИЋ ЈОВАН
+ЂУРАШКОВИЋ ЈОВАН
+ЂУРАШКОВИЋ ЈОВИЦА
+ЂУРАШКОВИЋ РАЈКО
+ЂУРАШКОВИЋ СТАНОЈЕ
+ЂУРАГИЋ ЂОРЂЕ
+ЂУРАГИЋ ДИЛЕ
+ЂУРАГИЋ ДРАГАН
+ЂУРАГИЋ ГИГА
+ЂУРАГИЋ ЈОВАН
+ЂУРАГИЋ ЈУЛКА
+ЂУРАГИЋ ЛАЗАР
+ЂУРАГИЋ МИРОСЛАВ
+ЂУРАГИЋ САВА
+ЂУРАГИЋ СТЕВАН
+ЂУРАГИН ЈОВАН
+ЂУРАГИН СТАНКА
+ЂУРАК ЈОЖЕФ
+ЂУРАК ЈОСИФ
+ЂУРАКОВАЦ ФАТМИРА
+ЂУРАН БОЈАНА
+ЂУРАН ИЛИЈА
+ЂУРАН ЈЕЛЕНА
+ЂУРАН ЈОВО
+ЂУРАН МИЛАН
+ЂУРАН МИЛАН
+ЂУРАН РАЈКО
+ЂУРАН РАЈКО
+ЂУРАН СЛАВКО
+ЂУРАН СНЕЖАНА
+ЂУРАН ЗДРАВКО
+ЂУРАНОВИЋ ДУШАН
+ЂУРАНОВИЋ ИЛОНА
+ЂУРАНОВИЋ МИХАИЛО
+ЂУРАНОВИЋ МИЛАН
+ЂУРАНОВИЋ МИОДРАГ
+ЂУРАНОВИЋ МИРКО
+ЂУРАНОВИЋ НАДА
+ЂУРАНОВИЋ СЛАЂАНА
+ЂУРАСИНОВИЋ МИЛЕ
+ЂУРДКОВ ЕВА
+ЂУРЕКОВИЋ КАРЛО
+ЂУРЕКОВИЋ ЉУБИЦА
+ЂУРЕКОВИЋ ЗВОНИМИР
+ЂУРЕНДИЋ ЂОРЂЕ
+ЂУРЕНДИЋ ДУШАН
+ЂУРЕТИЋ НИКОЛА
+ЂУРИЧИЋ ДРАГИЊА
+ЂУРИЧИЋ ДРАГО
+ЂУРИЧИЋ ДРАГУТИН
+ЂУРИЧИЋ ДУШАН
+ЂУРИЧИЋ ЈОВАН
+ЂУРИЧИЋ МИЉОЈКО
+ЂУРИЧИЋ МИЛОШ
+ЂУРИЧИЋ НЕШКО
+ЂУРИЧИЋ НИКОЛА
+ЂУРИЧИЋ ПАВЛЕ
+ЂУРИЧИЋ РУЖА
+ЂУРИЧИЋ СЛАВКО
+ЂУРИЧИЋ СЛАВКО
+ЂУРИЧИЋ СТАНКО
+ЂУРИЧИЋ ТАНКОСАВА
+ЂУРИЧИЋ ЗЛАТИЦА
+ЂУРИЧИЋ ЗОРАН
+ЂУРИЧИН ЂОРЂЕ
+ЂУРИЧИН АЛЕКСАНДАР
+ЂУРИЧИН ДРАГАН
+ЂУРИЧИН ДРАГУТИН
+ЂУРИЧИН КАТАРИНА
+ЂУРИЧИН КАТИЦА
+ЂУРИЧИН МАРКО
+ЂУРИЧИН МИЛАН
+ЂУРИЧИН МИЛОРАД
+ЂУРИЧИН МИОДРАГ
+ЂУРИЧИН ПЕТАР
+ЂУРИЧИН РАДОСЛАВА
+ЂУРИЧИН РУЖИЦА
+ЂУРИЧИН СИНИША
+ЂУРИЧИН СОФИЈА
+ЂУРИЧИН СТАНИЈА
+ЂУРИЧИН СТЕВАН
+ЂУРИЧИН СВЕТЛАНА
+ЂУРИЧИН ТОМИСЛАВ
+ЂУРИЧИН ВАСИЛИЈЕ
+ЂУРИЧИН ЗОРКА
+ЂУРИЧКОВИЋ МИЛОРАД
+ЂУРИЧКОВИЋ ПАВЛЕ
+ЂУРИЧКОВИЋ ЗЛАТАНА
+ЂУРИШ КЛАРА
+ЂУРИШ МИРОСЛАВ
+ЂУРИШ ПАЉО
+ЂУРИШЕВИЋ МИЛЕНА
+ЂУРИШИЋ ДУШАН
+ЂУРИШИЋ ЈЕЛЕНА
+ЂУРИШИЋ ЛАЗАР
+ЂУРИШИЋ МАТО
+ЂУРИШИЋ МИЛАН
+ЂУРИШИЋ МИЛАН
+ЂУРИШИЋ МИЛИЈА
+ЂУРИШИЋ МИЛИСАВ
+ЂУРИШИЋ НИКОЛА
+ЂУРИШИЋ РАДМИЛА
+ЂУРИШИЋ РАДОМИР
+ЂУРИШИЋ СЛАВКО
+ЂУРИШИЋ СВЕТЛАНА
+ЂУРИШИЋ ВЕРА
+ЂУРИШИЋ ВИДА
+ЂУРИШИЋ ЗЛАТАНА
+ЂУРИШИЋ ЗЛАТА
+ЂУРИЋ ЖАРКО
+ЂУРИЋ ЖЕЉКО
+ЂУРИЋ ЖИВОРАД
+ЂУРИЋ ЂЕРЂ
+ЂУРИЋ ЂОРЂЕ
+ЂУРИЋ ЂОРЂЕ
+ЂУРИЋ ЂОРЂЕ
+ЂУРИЋ ЂУРА
+ЂУРИЋ ЂУРИЦА
+ЂУРИЋ АЛЕКСАНДАР
+ЂУРИЋ АНЂЕЛКА
+ЂУРИЋ АНГЕЛИНА
+ЂУРИЋ АНКА
+ЂУРИЋ АРСЕНИЈЕ
+ЂУРИЋ БЛАГОМИР
+ЂУРИЋ БОЖИДАР
+ЂУРИЋ БОЖИДАР
+ЂУРИЋ БОГОЉУБ
+ЂУРИЋ БОГОЉУБ
+ЂУРИЋ БОЈАН
+ЂУРИЋ БОРИВОЈ
+ЂУРИЋ БОРКА
+ЂУРИЋ БОРКА
+ЂУРИЋ БРАНИСЛАВ ДР ЛЕКАР
+ЂУРИЋ БРАНИСЛАВА
+ЂУРИЋ БРАНКА
+ЂУРИЋ БРАНКА
+ЂУРИЋ БРАНКО
+ЂУРИЋ БРАТИСЛАВ
+ЂУРИЋ БУДИМИР
+ЂУРИЋ ДЕЈАН
+ЂУРИЋ ДЕЈАН
+ЂУРИЋ ДЕСПОТ
+ЂУРИЋ ДОБРЕ
+ЂУРИЋ ДОБРИЛА
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГАН
+ЂУРИЋ ДРАГИЦА
+ЂУРИЋ ДРАГИЦА
+ЂУРИЋ ДРАГУТИН ДР
+ЂУРИЋ ДУШАН
+ЂУРИЋ ДУШАН
+ЂУРИЋ ЕВА
+ЂУРИЋ ФРАЊА
+ЂУРИЋ ГОЈКО
+ЂУРИЋ ГОЈКО
+ЂУРИЋ ГОРДАНА
+ЂУРИЋ ХРАНИСЛАВ
+ЂУРИЋ ХРАНИСЛАВ
+ЂУРИЋ ИЛИЈА
+ЂУРИЋ ИЛИЈА
+ЂУРИЋ ЈАСМИНКА
+ЂУРИЋ ЈЕЛИЦА
+ЂУРИЋ ЈОВАН
+ЂУРИЋ ЈОВАН
+ЂУРИЋ ЈОВАН
+ЂУРИЋ ЈОВО
+ЂУРИЋ КРИСТИНА
+ЂУРИЋ ЉИЉАНА
+ЂУРИЋ ЉУБИША
+ЂУРИЋ ЉУБИША
+ЂУРИЋ ЉУБИЦА
+ЂУРИЋ ЉУБИЦА
+ЂУРИЋ ЉУБОДРАГ
+ЂУРИЋ ЉУБОМИР
+ЂУРИЋ МАРА
+ЂУРИЋ МАРИЈА
+ЂУРИЋ МИЋА
+ЂУРИЋ МИЛАНКО
+ЂУРИЋ МИЛАН
+ЂУРИЋ МИЛАН
+ЂУРИЋ МИЛАН
+ЂУРИЋ МИЛАН
+ЂУРИЋ МИЛЕНКО
+ЂУРИЋ МИЛИЦА
+ЂУРИЋ МИЛИВОЈЕ
+ЂУРИЋ МИЛОШ
+ЂУРИЋ МИЛОРАД
+ЂУРИЋ МИЛОРАД
+ЂУРИЋ МИЛОВАН
+ЂУРИЋ МИЛУН
+ЂУРИЋ МИОДРАГ
+ЂУРИЋ МИОДРАГ
+ЂУРИЋ МИРЈАНА
+ЂУРИЋ МИРКО
+ЂУРИЋ МИРОЉУБ
+ЂУРИЋ МИРОСЛАВА
+ЂУРИЋ МИРОСЛАВ
+ЂУРИЋ МИТАР
+ЂУРИЋ МОМЧИЛО
+ЂУРИЋ НЕДЕЉКО
+ЂУРИЋ НЕМАЊА
+ЂУРИЋ НЕНАД
+ЂУРИЋ НЕВЕНКА
+ЂУРИЋ ПЕТРА
+ЂУРИЋ ПРЕДРАГ
+ЂУРИЋ ПРЕДРАГ
+ЂУРИЋ РАДИВОЈЕ
+ЂУРИЋ РАДМИЛА
+ЂУРИЋ РАДОИЦА
+ЂУРИЋ РАДОЈКА
+ЂУРИЋ РАДОСЛАВ
+ЂУРИЋ РАТКО
+ЂУРИЋ САЊА
+ЂУРИЋ САВКА
+ЂУРИЋ САВО
+ЂУРИЋ СЕКУЛА
+ЂУРИЋ СЛАВИЦА
+ЂУРИЋ СЛАВКА
+ЂУРИЋ СЛАВКО
+ЂУРИЋ СЛАВКО
+ЂУРИЋ СРБОЉУБ
+ЂУРИЋ СТАНИМИР
+ЂУРИЋ СТАНИМИР
+ЂУРИЋ СТЕВАН
+ЂУРИЋ СТОЈАНКА
+ЂУРИЋ СТОЈАНКА
+ЂУРИЋ ТЕОДОР
+ЂУРИЋ ТЕРЕЗА
+ЂУРИЋ ТОДОР
+ЂУРИЋ ТОДОР
+ЂУРИЋ ТУГОМИР
+ЂУРИЋ ВАСА
+ЂУРИЋ ВЕЉКО
+ЂУРИЋ ВЕРА
+ЂУРИЋ ВЕРА
+ЂУРИЋ ВИДА
+ЂУРИЋ ВИДОЈЕ
+ЂУРИЋ ВЛАДА
+ЂУРИЋ ВЛАДИМИР
+ЂУРИЋ ВЛАДИМИР
+ЂУРИЋ ВЛАДИМИР
+ЂУРИЋ ВОЈИН
+ЂУРИЋ ВОЈИСЛАВ
+ЂУРИЋ ВУКАШИН
+ЂУРИЋ ЗДЕНКА
+ЂУРИЋ ЗДРАВКО
+ЂУРИЋ ЗОРАН
+ЂУРИЦА МИЛОШ
+ЂУРИЦА НЕВЕНКА
+ЂУРИЦА РАДЕ
+ЂУРИЦА РАНКО
+ЂУРИЦА РАНКО
+ЂУРИЦА РАТКО
+ЂУРИЦА СЛОБОДАН ДИПЛ ОЕЦ
+ЂУРИК ДУШАН
+ЂУРИК ЈУЛКА
+ЂУРИК МИЛАН
+ЂУРИК ОТИЛИЈА
+ЂУРИКИН ИЛИЈА
+ЂУРИКИН ВЕРА
+ЂУРИН ИЛИЈА
+ЂУРИН ЈОСИП
+ЂУРИН НОВА
+ЂУРИН НОВА
+ЂУРИН САВА ДИПЛ ИНГ
+ЂУРИН СВЕТЛАНА
+ЂУРИН ТЕОДОР
+ЂУРКИЋ ДРАГИЦА
+ЂУРКИН МИЛЕНКО
+ЂУРКИН РАДИШКО
+ЂУРКИН ВЛАДИМИР
+ЂУРКОВИЋ ЧАСЛАВ
+ЂУРКОВИЋ ЂЕНА
+ЂУРКОВИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ЂУРКОВИЋ АНТОН
+ЂУРКОВИЋ МАГДАЛЕНА
+ЂУРКОВИЋ ПЕРИЦА
+ЂУРКОВИЋ РАДЕ
+ЂУРКОВИЋ РУЖИЦА
+ЂУРКОВИЋ СТЕВАН
+ЂУРКОВИЋ СВЕТОМИР
+ЂУРКОВИЋ ВЛАЈКО
+ЂУРКОВСКИ ПАВЕЛ
+ЂУРНИЋ РАДМИЛА
+ЂУРНИЋ ВОЈИСЛАВ
+ЂУРОВИЋ ЖИВКА
+ЂУРОВИЋ АЛЕКСАНДАР
+ЂУРОВИЋ БОШКО
+ЂУРОВИЋ БОЈА
+ЂУРОВИЋ БОРИСЛАВ
+ЂУРОВИЋ БОСИЉКА
+ЂУРОВИЋ ДАНИЛО
+ЂУРОВИЋ ДАРИНКА
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГАН
+ЂУРОВИЋ ДРАГОЉУБ
+ЂУРОВИЋ ГОЈКО
+ЂУРОВИЋ ЈАСМИНКА
+ЂУРОВИЋ ЈОВАН
+ЂУРОВИЋ ЉУБИЦА
+ЂУРОВИЋ МИЛЕНКО
+ЂУРОВИЋ МИЛИЦА
+ЂУРОВИЋ МИЛИСАВ
+ЂУРОВИЋ МИЛКА
+ЂУРОВИЋ НАДЕЖДА
+ЂУРОВИЋ НИКОЛА
+ЂУРОВИЋ ОЛГИЦА
+ЂУРОВИЋ РАДЕНКО
+ЂУРОВИЋ РАДЕ
+ЂУРОВИЋ РАДОМИР
+ЂУРОВИЋ РАДОМИР
+ЂУРОВИЋ РАДОСЛАВ
+ЂУРОВИЋ РАДОВАН
+ЂУРОВИЋ СОФИЈА
+ЂУРОВИЋ СВЕТЛАНА
+ЂУРОВИЋ СВЕТОМИР
+ЂУРОВИЋ ВАСО
+ЂУРОВИЋ ВЕСНА
+ЂУРОВИЋ ВУКАШИН
+ЂУРОВИЋ ВУКАДИН
+ЂУРОВИЋ ЗОРКА
+ЂУРОВКА МАРИЈА
+ЂУРОВКА ОНДРЕЈ
+ЂУРОВКА ВЛАДИСЛАВ
+ЂУРОВСКИ ЈОВИЦА
+ЂУСИЋ МИОДРАГ
+ЂУЗА СТЕВО
+АЧ ШАНДОР
+АЧ ФЕРЕНЦ
+АЧ ФРАЊА ДР ПРИМАРИЈУС
+АЧ ГАБОР
+АЧ ЈОЖЕФ АКАДЕМСКИ СЛИКАР
+АЧ ЈОЖЕФ БИОЛОГ
+АЧ ЈОВАН
+АЧ КАТИЦА
+АЧ ЛАЈОШ
+АЧ-НИКОЛИЋ ЕРЖЕБЕТ
+АЧ ОТО
+АЧ ПАВЛЕ
+АЧ ТИБОР
+АЧАИ ИШТВАН
+АЧАИ ЗОЛТАН
+АЧАНАСКИ ВЕСНА
+АЧАНСКИ ЖИВКО
+АЧАНСКИ АЛБИНА
+АЧАНСКИ АЛЕКСАНДАР
+АЧАНСКИ БРАНИСЛАВ
+АЧАНСКИ ДОБРИВОЈ
+АЧАНСКИ ДРАГИЦА
+АЧАНСКИ ДРАГОМИР
+АЧАНСКИ ЈЕЛИСОВ
+АЧАНСКИ КОСАНА
+АЧАНСКИ ЛАЗАР
+АЧАНСКИ ЛАЗАР
+АЧАНСКИ НИКОЛА
+АЧАНСКИ РАДА
+АЧАНСКИ СТАНА
+АЧАНСКИ СТАНИСЛАВ
+АЧАНСКИ ТЕОДОР ДИПЛ ИНГ
+АЧАНСКИ ТОДОР
+АЧАНСКИ ВИДОСАВА
+АЧАНСКИ ЗДРАВКО
+АЧАНСКИ ЗОРИЦА
+АШЋЕРИЋ СТЕВАН
+АШЋЕРИЋ СТЕВАН
+АШЋЕРИЋ ЗОРА
+АШАНИН РАДИВОЈЕ
+АШАНИН ЗОРАН
+АШИКУ ВИТАЛИС ДР ЛЕКАР
+АШКОВИЋ СЛАВКО ДИПЛ ИНГ
+АШКОВИЋ ТОМИСЛАВ
+АШКОВИЋ ВОЈИСЛАВА
+АШОЊА НЕДЕЉКО
+АШОЊА ОЛГА
+АШТАЛКОВСКИ АЛЕКСАНДАР
+АШТАЛКОВСКИ КРИСТИНА
+АЋАНСКИ ЂОРЂЕ
+АЋАНСКИ ЛАЗАР
+АЋИЋ ИЛИЈА
+АЋИЋ МИРКО
+АЋИЋ СТЕВАН
+АЋИМОВ АЛЕКСАНДАР
+АЋИМОВ БОШКО
+АЋИМОВ ДРАГИЦА
+АЋИМОВ ЛЕЛА
+АЋИМОВ МАРКО
+АЋИМОВ МИЛАН
+АЋИМОВ МИРЈАНА ПРОФЕСОР
+АЋИМОВ НЕДЕЉКО
+АЋИМОВ РАДИВОЈ
+АЋИМОВ РАДОСЛАВА
+АЋИМОВИЋ ЖИВКО
+АЋИМОВИЋ ЖИВОЈИН
+АЋИМОВИЋ ЂОРЂЕ
+АЋИМОВИЋ ЂОРЂЕ
+АЋИМОВИЋ ЂУРЂИНКА
+АЋИМОВИЋ БОШКО
+АЋИМОВИЋ БОГДАНКА
+АЋИМОВИЋ БОРКА
+АЋИМОВИЋ БРАНКО
+АЋИМОВИЋ БРАНКО
+АЋИМОВИЋ ДРАГАН
+АЋИМОВИЋ ДРАГОЉУБ
+АЋИМОВИЋ ДРАГОСЛАВ
+АЋИМОВИЋ ДУШАНКА
+АЋИМОВИЋ ДУШАН
+АЋИМОВИЋ ДУШАН
+АЋИМОВИЋ ГОЈКО
+АЋИМОВИЋ ИЛИЈА
+АЋИМОВИЋ ЈОВА
+АЋИМОВИЋ МИЛАН
+АЋИМОВИЋ МИЛА
+АЋИМОВИЋ МИЛИВОЈЕ ДР
+АЋИМОВИЋ МИЛИВОЈ
+АЋИМОВИЋ МИЛОЈИЦА
+АЋИМОВИЋ МИОДРАГ
+АЋИМОВИЋ ОБРАД
+АЋИМОВИЋ РАДМИЛА
+АЋИМОВИЋ РАДОВАН
+АЋИМОВИЋ РАТКО
+АЋИМОВИЋ САВА
+АЋИМОВИЋ САВА
+АЋИМОВИЋ СЛАВКО
+АЋИМОВИЋ СЛОБОДАН
+АЋИМОВИЋ ТАДИЈА
+АЋИМОВИЋ ВАСА
+АЋИМОВИЋ ВАСИЛИЈЕ
+АЋИМПВИЋ АЛЕКСАНДАР
+АЂАНСКИ БРАНИСЛАВ
+АЂАНСКИ ИВАНА
+АЂАНСКИ МИЛИВОЈ
+АЂАНСКИ НАДА
+АЂАНСКИ СТЕВАН
+АЂИЋ ДРАГО
+АЂИЋ ОТО
+АЂИН АДАМ
+АБАЏИЋ МАРКО
+АБАЏИЋ РАДМИЛА
+АБАЏИЋ САВО
+АБАЏИЋ СТАНКО
+АБАЗА ВЕСНА
+АБАЗИ ИЉАЗ
+АБАЗИ РАМАДАН
+АБАЗОВСКИ СУЛТАН
+АБДИЈЕВИЋ ШУКРИЈА
+АБДИЈЕВИЋ ИСМЕТ
+АБРАХАМ ЕВА
+АБРАХАМ ИРЕНА
+АБРАХАМ ПАВЕЛ
+АБРАМОВИЋ ДУШАНКА
+АБРАМОВИЋ ЛИВИЈА
+АБРАМОВИЋ МИЛОРАД
+АБРАМОВИЋ МИРЈАНА
+АБРАМОВИЋ НАДА
+АБРАМОВИЋ СТАНА
+АБРАМОВИЋ ВАЛЕРИЈА
+АБРЛИЋ НАДА
+АБТ ЛАСЛО
+АБУ-АБЕД МУХАМЕД
+АЦИГАН ЈОВАНКА
+АЦИН-ПЕТРОВИЋ ИВАНКА
+АЦКЕТА ДРАГАН
+АЦКЕТА МИРЈАНА
+АЦКЕТА ТИХОМИР
+АЦКОВИЋ МАРА
+АЏАИП МИЛОРАД
+АЏАИП МИРЈАНА
+АЏЕМОВИЋ АЛЕКСАНДАР
+АЏЕМОВИЋ ГРУЈО
+АЏИЋ ЖАРКО
+АЏИЋ БОШКО
+АЏИЋ БРАНКО
+АЏИЋ ДЕСАНКА
+АЏИЋ ДРАГОЉУБ
+АЏИЋ ДУШИЦА
+АЏИЋ ГОРАН
+АЏИЋ ИЛИЈА
+АЏИЋ ЈОВАНКА
+АЏИЋ ЈОВАН
+АЏИЋ ЉУБОДРАГ
+АЏИЋ МИЛАН
+АЏИЋ МИЛЕН
+АЏИЋ МИЛИСАВ
+АЏИЋ МИЛИВОЈЕ
+АЏИЋ МИЛОРАД
+АЏИЋ НЕДЕЉКО
+АЏИЋ ПЕРО
+АЏИЋ РАДИСАВ
+АЏИЋ РАДОЊА
+АЏИЋ РАНКО
+АЏИЋ РАТКО
+АЏИЋ СЛОБОДАН
+АЏИЋ ВЛАДО
+АЏИЋ ЗОРАН
+АЏИБАБА МИЛИЦА
+АЏИБАБА НИКОЛА
+АДАМ ШАРЛОТА
+АДАМ ЂУРА
+АДАМ ДЕНЕШ
+АДАМ ИРМА
+АДАМ ЈОЖЕФ
+АДАМ ЈОСИП
+АДАМ КРУНИЦА ДР
+АДАМ ЛАДИСЛАВ
+АДАМ ЛАДИСЛАВ
+АДАМ ЛАСЛО
+АДАМ ОЛГИЦА
+АДАМ ТИБОР НОВИНАР
+АДАМОВ ЂОРЂЕ
+АДАМОВ БОЖИДАР
+АДАМОВ ДРАГАН
+АДАМОВ ДУШАН
+АДАМОВ ИВАН
+АДАМОВ ЈОВАН
+АДАМОВ ЈУЛИАНА
+АДАМОВ ЈУЛКА
+АДАМОВ ЈУЛКА
+АДАМОВ КАТАРИНА
+АДАМОВ ЉУБА
+АДАМОВ МАРИЈА
+АДАМОВ МИРОСЛАВА
+АДАМОВ РАДОВАН
+АДАМОВ ТИЦА
+АДАМОВ ВИТОМИР
+АДАМОВИЋ ЂУРА
+АДАМОВИЋ БОШКО
+АДАМОВИЋ ДРАГА
+АДАМОВИЋ ДРАГОЉУБ
+АДАМОВИЋ ДРАГОЉУБ
+АДАМОВИЋ ДРАГУТИН
+АДАМОВИЋ ДУШАН
+АДАМОВИЋ ДУШАН
+АДАМОВИЋ ДУШАН
+АДАМОВИЋ ДУШАН
+АДАМОВИЋ ГОЈКО
+АДАМОВИЋ ГОЈКО
+АДАМОВИЋ ГОРАН
+АДАМОВИЋ ИЛОНА
+АДАМОВИЋ ИВАН
+АДАМОВИЋ ЈЕЛА
+АДАМОВИЋ ЈЕЛЕНА
+АДАМОВИЋ ЈОВАНКА
+АДАМОВИЋ ЈОВАН
+АДАМОВИЋ КАТА
+АДАМОВИЋ ЛАЗАР
+АДАМОВИЋ ЛАЗАР
+АДАМОВИЋ ЉИЉАНА
+АДАМОВИЋ ЉУБОМИР
+АДАМОВИЋ МАРА
+АДАМОВИЋ МАРА
+АДАМОВИЋ МАРА
+АДАМОВИЋ МАРИНКО
+АДАМОВИЋ МИЛЕНА
+АДАМОВИЋ МИЛИЦА
+АДАМОВИЋ МИЛКАН
+АДАМОВИЋ МИРКО
+АДАМОВИЋ МИРКО
+АДАМОВИЋ МОМЧИЛО
+АДАМОВИЋ МОМЧИЛО
+АДАМОВИЋ МОМЧИЛО
+АДАМОВИЋ РАДМИЛА
+АДАМОВИЋ РАДОСАВ
+АДАМОВИЋ СЛАВКО
+АДАМОВИЋ СОЊА
+АДАМОВИЋ СТОЈАНКА
+АДАМОВИЋ СВЕТОЗАР
+АДАМОВИЋ ТОМИСЛАВ
+АДАМОВИЋ ТОМИСЛАВ
+АДАМОВИЋ ВЛАДИМИР
+АДЕМИ ГОРДАНА
+АДЕМИ ИМЕР
+АДЕМОВ КЕМАЛ
+АДЕМОВИЋ ЈУСУФ
+АДЕМОВИЋ ОСМАН
+АДЛЕШИЋ ЉУБИЦА
+АДНАЂЕВИЋ СВЕТОЗАР
+АДОР ЈОВАН
+АГАРСКИ ЈАН ДР
+АГАТИЋ МАТЕ
+АГАТИЋ МИРКО
+АГАТИЋ ВЕЛИМИР
+АГБАБА БРАНКА
+АГБАБА ДАНЕ
+АГБАБА ДАНИЦА
+АГБАБА ДАНИЛО
+АГБАБА ДУШАН
+АГБАБА ЈОВАН
+АГБАБА НЕДЕЉКА
+АГБАБА НЕДЕЉКО
+АГБАБА НИКОЛА ДР
+АГБАБА НИКОЛА
+АГБАБА ВИДА
+АГИЋ МАРКО
+АГИЋ НАДА
+АГИЋ НИКОЛАЈ
+АГИЋ НИКОЛА
+АГИЋ СЛОБОДАН ДИПЛ ОЕЦ
+АГИЋ СРБИСЛАВ
+АГИЋ ВЛАДИМИР
+АГО МАРКО
+АГО ЗОРИЦА
+АГОЧ ДУШАН
+АГОШТОН БЕЛА
+АГОШТОН ФЕРЕНЦ
+АГОШТОН КАРОЉ
+АГОШТОН ЛАСЛО
+АГОШТОН МИХАЉ
+АГОШТОН ВЕРА
+АГРАМОВИЋ ДЕСАНКА
+АГРАМОВИЋ РАДЕ
+АГУШЕВИЋ СЛОБОДАНКА
+АГУЦИЋ ОЛГИЦА
+АХМЕД ЕЛЕЗ
+АХМЕТОВ ШУКРИ
+АХМЕТОВИЋ КАРЛО
+АХМЕТОВИЋ СОФИЈА
+АХМЕТОВИЋ ЗЛАТКО
+АИРАЛДИ БОЖИДАР
+АЈ БРАНИСЛАВ
+АЈ ВЕСНА
+АЈАНОВИЋ САЛКО
+АЈЦЕВ ДУШАН
+АЈЏАНОВИЋ АНАСТАСИЈА ДР ЛЕКАР
+АЈДАРИЋ РАДОСЛАВ
+АЈДЕР ЖЕЉКО
+АЈДЕР БОШКО
+АЈДЕР ДАНИЦА
+АЈДИЋ ЂОРЂЕ
+АЈДИНИ САБРИЈА
+АЈДИНОВИЋ НИКОЛА
+АЈДУК ЈОСИМ
+АЈДУК МАРКО
+АЈДУК МИЛИЦА
+АЈДУК ТОША
+АЈДУКОВИЋ ГОЈКО
+АЈДУКОВИЋ ЉИЉАНА
+АЈДУКОВИЋ МИЛАН
+АЈДУКОВИЋ СОФИЈА
+АЈГЕНМАХТ МАРИНА
+АЈКУНИЋ АДИЛ
+АЈКУНИЋ НЕЗИР
+АЈРАНОВИЋ ЈУСУФ
+АЈТИЋ СВЕТИСЛАВ
+АЈТЛБЕЗ МИЈАТ
+АЈТЛБЕЗ МИЈАТ
+АЈВАЗОВИЋ АЋИФ
+АЈВАЗОВИЋ АСЛАН
+АЈВАЗОВИЋ ЕСМА
+АЈВАЗОВИЋ ФАИД
+АЈВИЛЕР СТЕВАН
+АЈЗЕНБЕРГЕР БЕЛА
+АКШАМОВИЋ ПЛАВША
+АКИК ДРАГИЦА
+АКИК ДУШАН
+АКИН ДРАГА
+АКИН СОФИЈА
+АКОНЧИЋ ЗОРАН
+АКРАП ФИЛИП ПРОФ
+АКРАПОВИЋ МИРОСЛАВ
+АКСЕНТИЈЕВИЋ ЈОВАН
+АКСЕНТИЈЕВИЋ НИКОЛА СУДИЈА
+АКСЕНТИЈЕВИЋ СТОЈАДИН
+АКСИН БРАНИСЛАВ
+АКСИН МИЛОВАН
+АКСИН ВЛАДИМИР ДР ИНГ
+АЛАЂИ ШАНДОР
+АЛАБАШОВСКИ ГРУЈА
+АЛАБАШОВСКИ ИБРАХИМ
+АЛАБУРИЋ ПАВЛЕ
+АЛАБУРИЋ ТЕОДОР ДИПЛ ИНГ
+АЛАЏИЋ ЂОРЂО
+АЛАДИЋ АЛЕКСАНДАР
+АЛАДИЋ АЛЕКСАНДАР
+АЛАДИЋ БРАНИСЛАВА
+АЛАДИЋ ИДА
+АЛАДИЋ СТЕВАН
+АЛАГИЋ ДУШАН
+АЛАГИЋ МУЈО
+АЛАГИЋ НАДА
+АЛАГИЋ РАДОСЛАВ
+АЛАГИЋ ВЕРА
+АЛАИЦА РАДОЈКА
+АЛАЈИЦА БРАНКО
+АЛАЈИЦА ЈОВО
+АЛАН ВЕРА
+АЛАНОВ РУЖИЦА
+АЛАРГИЋ ЈЕЛЕНА
+АЛАРГИЋ МИЛИЦА
+АЛАРГИЋ ПЕТАР
+АЛАРГИЋ РАДЕ
+АЛАРГИЋ РАНКА
+АЛАРГИЋ ТИМА
+АЛАСОВ ДРАГОСЛАВ
+АЛАСОВ ЛАЗАР ДИПЛ ИНГ
+АЛАВАЊА МИРЈАНА
+АЛБИЈАНИЋ БОРО
+АЛБИЈАНИЋ ДРАГУТИН
+АЛБОТ ИЛИЈА
+АЛБРЕХТ ЈАНОШ
+АЛБРЕХТ МАРИЈА
+АЛБРЕХТ МАРИЈА
+АЛБУЉ ДИВНА
+АЛБУЉ ГОРДАНА
+АЛБУЉ ВЕСЕЛИН
+АЛБУЉ ВОЈИСЛАВКА
+АЛЕКСАНДЕР АНА
+АЛЕКСАНДЕР РУДОЛФ
+АЛЕКСАНДРИЋ МИЛЕСА ДР
+АЛЕКСАНДРОВ СЛАВЧА
+АЛЕКСАНДРОВИЋ ДРАГАН
+АЛЕКСАНДРОВИЋ ДУШАН
+АЛЕКСИ СТЕВАН
+АЛЕКСИЋ ЧАСЛАВ
+АЛЕКСИЋ ЧЕДОМИР
+АЛЕКСИЋ ЖИВОМИР
+АЛЕКСИЋ ЂОРЂЕ
+АЛЕКСИЋ ЂУРА
+АЛЕКСИЋ АЦА
+АЛЕКСИЋ АДАМ
+АЛЕКСИЋ АРСА
+АЛЕКСИЋ БИСЕРКА
+АЛЕКСИЋ БОЖИДАР
+АЛЕКСИЋ БОЖИДАР
+АЛЕКСИЋ БОГДАН
+АЛЕКСИЋ БРАНИСЛАВ
+АЛЕКСИЋ БРАНКО
+АЛЕКСИЋ БРАНКО
+АЛЕКСИЋ БРАНКО
+АЛЕКСИЋ БУДИМИР
+АЛЕКСИЋ ДАНИЦА
+АЛЕКСИЋ ДАРИНКА
+АЛЕКСИЋ ДРАГАН
+АЛЕКСИЋ ДРАГА
+АЛЕКСИЋ ДРАГОЉУБ
+АЛЕКСИЋ ДРАГОМИР
+АЛЕКСИЋ ДРАГОСЛАВ ДР
+АЛЕКСИЋ ДУШАН
+АЛЕКСИЋ ДУШАН
+АЛЕКСИЋ ЕВИЦА
+АЛЕКСИЋ ГОЈКО
+АЛЕКСИЋ ГОРАН
+АЛЕКСИЋ ГОРДАНА
+АЛЕКСИЋ-ГРИСЕР НИКОЛА
+АЛЕКСИЋ ИЛИНКА
+АЛЕКСИЋ ИВАН
+АЛЕКСИЋ ЈЕЛЕНА
+АЛЕКСИЋ ЈЕЛИЦА
+АЛЕКСИЋ ЈЕЛИЦА
+АЛЕКСИЋ ЈОСИП
+АЛЕКСИЋ ЈОВАН
+АЛЕКСИЋ ЈОВО
+АЛЕКСИЋ КАТА
+АЛЕКСИЋ КАТИЦА
+АЛЕКСИЋ КАТИЦА
+АЛЕКСИЋ КОСА
+АЛЕКСИЋ КОСТА
+АЛЕКСИЋ КОСТА
+АЛЕКСИЋ ЛЕПОСАВА
+АЛЕКСИЋ ЛЕПОСАВА
+АЛЕКСИЋ ЉИЉАНА
+АЛЕКСИЋ ЉИЉАНА
+АЛЕКСИЋ ЉУБИША
+АЛЕКСИЋ ЉУТОМИР
+АЛЕКСИЋ МАРИН
+АЛЕКСИЋ МИЛАНКА
+АЛЕКСИЋ МИЛАН
+АЛЕКСИЋ МИЛАН
+АЛЕКСИЋ МИЛАН
+АЛЕКСИЋ МИЛЕНА
+АЛЕКСИЋ МИЛИНКА
+АЛЕКСИЋ МИЛИВОЈ
+АЛЕКСИЋ МИЛИВОЈ
+АЛЕКСИЋ МИЛОШ
+АЛЕКСИЋ МИЛОШ
+АЛЕКСИЋ МИЛОШ
+АЛЕКСИЋ МИЛОЈЕ
+АЛЕКСИЋ МИЛОРАД
+АЛЕКСИЋ МИЛОВАН
+АЛЕКСИЋ МИОДРАГ
+АЛЕКСИЋ МИОДРАГ
+АЛЕКСИЋ МИОДРАГ
+АЛЕКСИЋ МИРЈАНА
+АЛЕКСИЋ МИРКО
+АЛЕКСИЋ МИРОСЛАВ
+АЛЕКСИЋ МОМЧИЛО
+АЛЕКСИЋ МОМЧИЛО
+АЛЕКСИЋ МОМИР
+АЛЕКСИЋ НАДА
+АЛЕКСИЋ НАТАЛИЈА
+АЛЕКСИЋ НЕБОЈША
+АЛЕКСИЋ НИКОЛА
+АЛЕКСИЋ НИКОЛА
+АЛЕКСИЋ ПАУЛИНА
+АЛЕКСИЋ ПАВЛЕ
+АЛЕКСИЋ ПЕТАР
+АЛЕКСИЋ ПЕТАР
+АЛЕКСИЋ ПЕТАР
+АЛЕКСИЋ ПРЕДРАГ
+АЛЕКСИЋ РАДЕ
+АЛЕКСИЋ РАДМИЛА
+АЛЕКСИЋ РАДОМИР
+АЛЕКСИЋ РАЈКО
+АЛЕКСИЋ РАТКО
+АЛЕКСИЋ РАТКО
+АЛЕКСИЋ РИСТО
+АЛЕКСИЋ САВО
+АЛЕКСИЋ СЛАВНА
+АЛЕКСИЋ СМИЉА
+АЛЕКСИЋ СТЕВАН
+АЛЕКСИЋ СТЕВАН
+АЛЕКСИЋ ВАСА
+АЛЕКСИЋ ВЕРА
+АЛЕКСИЋ ВЕРА
+АЛЕКСИЋ ВЕСНА
+АЛЕКСИЋ ВИТОМИР
+АЛЕКСИЋ ВЛАСТИМИР
+АЛЕКСИЋ ВОЈИСЛАВ
+АЛЕКСИЋ ЗДРАВЕНКА
+АЛЕКСИЋ ЗДРАВКО
+АЛЕКСИЋ ЗЛАТИБОР
+АЛЕКСИЋ ЗОРАН
+АЛЕКСИЈЕВИЋ БОГДАН
+АЛЕКСИЈЕВИЋ БОРА
+АЛЕКСИЈЕВИЋ ИСИДОР
+АЛЕКСИЈЕВИЋ ЈОВАН
+АЛЕКСИЈЕВИЋ МАРИЈА
+АЛЕКСОВ ГЕОРГИ
+АЛЕКСОВ МИЛУТИН
+АЛЕКСОВ СИМЕОН
+АЛЕКСОВ ЗОРАН
+АЛЕКСОВСКИ МИЛЕ
+АЛЕКСОВСКИ СРБОЉУБ
+АЛЕМПИЋ САВО
+АЛЕМПИЈЕВИЋ ЗОРАН
+АЛЕМПИЈЕВИЋ ЗОРАН
+АЛЕНДЕР ШЕФИК
+АЛИ ЈУЛИСТАН
+АЛИШИЋ БЕСИМ
+АЛИШИЋ НИЈАЗ
+АЛИШИЋ РЕЏЕП
+АЛИШИЋ ВАСВИЈА
+АЛИЂУКИЋ ИЛИЈА
+АЛИБАШИЋ ХАМИД
+АЛИЈА АБДИРАХМАН
+АЛИЈА ИЗЕТ
+АЛИЈЕВИЋ НЕЗИР
+АЛИЈЕВИЋ САДРИЈА
+АЛИЛОВИЋ ВИНКО
+АЛИМПИЋ ЖИВКО
+АЛИМПИЋ АЛЕКСАНДАР
+АЛИМПИЋ БАРБАРА
+АЛИМПИЋ БОГОМИР
+АЛИМПИЋ БОРИВОЈЕ
+АЛИМПИЋ ДРАГАН
+АЛИМПИЋ ДРАГИЦА
+АЛИМПИЋ ЈЕЛА
+АЛИМПИЋ ЈОВАН
+АЛИМПИЋ ЉУБИЦА
+АЛИМПИЋ МОМЧИЛО
+АЛИМПИЋ СЛАВКА
+АЛИМПИЋ СЛАВКО
+АЛИМПИЋ СТЕВАН
+АЛИМПИЋ ТИХОМИР
+АЛИМПИЋ ТОМИСЛАВ
+АЛИМПИЋ ВОЈИСЛАВ
+АЛИМПИЈЕВИЋ ЂОРЂЕ
+АЛИМПИЈЕВИЋ ДИМИТРИЈЕ
+АЛИМПИЈЕВИЋ ЈОВАН
+АЛИМПИЈЕВИЋ ЈОВАН
+АЛИМПИЈЕВИЋ ВЕСЕЛИНКА
+АЛИОВ ХУСЕИН
+АЛИОВ ОМЕР
+АЉИ АЈРАДИН
+АЉИ МАКСУТ
+АЉИЋ КАТАРИНА
+АЉИЋ РАМО
+АЉИЈУПИ ЧЕРИМ
+АЛКИЋ СТЕВАН
+АЛКИЋ ВЛАДИМИР
+АЛМАШИ ЕТЕЛ
+АЛМАШИ МАРИШКА
+АЛМАШИ МАТИЈА
+АЛМАШИ САМУЕЛ
+АЛМАЖАН СЛАВКО НОВИНАР
+АЛОРИЋ ДРАГОМИРКА
+АЛОРИЋ ИЛИЈА
+АЛТЕРОВ АНА
+АЛТКОРН МАЛВИНА
+АЛВАЏИН ДРАГУТИН
+АЛВИРОВИЋ ДРАГОРАД
+АЛВИРОВИЋ МИОДРАГ
+АМАМОВИЋ ДУШАН
+АМАМОВИЋ МИЛЕВА
+АМБАРЏИЈЕВ ХРИСТО
+АМБО ИЛИЈА
+АМБРОЗИЋ РАСТКО
+АМБРУШ АТИЛА
+АМБРУШИЋ МАГДА
+АМБРУСОВ ЈОВАН
+АМЕТОВ ОСМАН
+АМЕТОВИЋ ЂОРЂЕ
+АМЕТОВИЋ ЂОРЂО
+АМЕТОВИЋ ЂУРО
+АМЕТОВИЋ БУДИМИР
+АМЕТОВИЋ ЈЕЛЕНА
+АМЕТОВИЋ ЈОВАН
+АМЕТОВИЋ КАТИЦА
+АМЕТОВИЋ ЛАЗАР
+АМЕТОВИЋ ЛАЗАР
+АМЕТОВИЋ МАРКО
+АМЕТОВИЋ МИЛАДИН
+АМЕТОВИЋ МИЛОРАД
+АМЕТОВИЋ МИРКО
+АМЕТОВИЋ МОМЧИЛО
+АМЕТОВИЋ РАЈКО
+АМЕТОВИЋ РАТКО
+АМЕТОВИЋ РУСМИРА
+АМЕТОВИЋ СОФИЈА
+АМЕТОВИЋ ВОЈИН
+АМИЖИЋ ДАНИЦА
+АМИЖИЋ МИРОСЛАВ
+АМИЖИЋ ТЕОДОРА
+АНЧИЋ АЛЕКСАНДРА
+АНЧИЋ МИЛАН
+АНЧИЋ НЕВЕНКА ДР
+АНЂЕЛИЋ АНЂЕЛКО
+АНЂЕЛИЋ АНДРИЈА
+АНЂЕЛИЋ АНИЦА
+АНЂЕЛИЋ БИЉАНА
+АНЂЕЛИЋ БЛАГИША
+АНЂЕЛИЋ БОЖИДАР ДР
+АНЂЕЛИЋ БОРИВОЈЕ
+АНЂЕЛИЋ БОРИВОЈЕ
+АНЂЕЛИЋ БРАНИСЛАВ
+АНЂЕЛИЋ ДАРИНКА
+АНЂЕЛИЋ ДРАГИЦА
+АНЂЕЛИЋ ДРАГОМИР
+АНЂЕЛИЋ ДУШАНКА
+АНЂЕЛИЋ ГОРАН
+АНЂЕЛИЋ ИЛИЈА
+АНЂЕЛИЋ ИЛИЈА
+АНЂЕЛИЋ МИЛЕНКО
+АНЂЕЛИЋ МИЛИВОЈЕ
+АНЂЕЛИЋ МИЛОРАД
+АНЂЕЛИЋ МИЛОРАД
+АНЂЕЛИЋ МИРЈАНА
+АНЂЕЛИЋ МИРЈАНА
+АНЂЕЛИЋ МИТАР
+АНЂЕЛИЋ НИКОЛА
+АНЂЕЛИЋ РАДМИЛА
+АНЂЕЛИЋ РАДОЈИЦА
+АНЂЕЛИЋ РАДОСЛАВ
+АНЂЕЛИЋ САВА
+АНЂЕЛИЋ СЛОБОДАН ДР ЛЕКАР
+АНЂЕЛИЋ СЛОБОДАН
+АНЂЕЛИЋ СЛОБОДАН
+АНЂЕЛИЋ СТЕВАН
+АНЂЕЛИЋ ВАСА
+АНЂЕЛИЋ ВАСО
+АНЂЕЛИЋ ВЕЉКО
+АНЂЕЛИЋ ВЕСЕЛИН
+АНЂЕЛИЋ ВЕСНА
+АНЂЕЛИЋ ВЛАДА
+АНЂЕЛИЋ ВОЈИСЛАВ
+АНЂЕЛКОВИЋ АНЂЕЛКО
+АНЂЕЛКОВИЋ БОЖИДАР
+АНЂЕЛКОВИЋ ДРАГОМИР
+АНЂЕЛКОВИЋ-ДУДИЋ ЗЛАТА
+АНЂЕЛКОВИЋ ЈЕЛИЦА
+АНЂЕЛКОВИЋ ЈОВАН
+АНЂЕЛКОВИЋ ЛИДИЈА
+АНЂЕЛКОВИЋ ЉУБИША
+АНЂЕЛКОВИЋ МИЛАН
+АНЂЕЛКОВИЋ МИЛОШ
+АНЂЕЛКОВИЋ МИЛОРАД
+АНЂЕЛКОВИЋ МИРОСЛАВ
+АНЂЕЛКОВИЋ МИРОСЛАВ
+АНЂЕЛКОВИЋ НАТАША
+АНЂЕЛКОВИЋ ПЕТАР
+АНЂЕЛКОВИЋ ПРЕДРАГ
+АНЂЕЛКОВИЋ РАДОМИР
+АНЂЕЛКОВИЋ РОБЕРТ
+АНЂЕЛКОВИЋ СИМА
+АНЂЕЛКОВИЋ СЛОБОДАН
+АНЂЕЛКОВИЋ СТАНИМИР
+АНЂЕЛКОВИЋ СТАНКО
+АНЂЕЛКОВИЋ СТЕВАН
+АНЂЕЛКОВИЋ СТОЈАН
+АНЂЕЛКОВИЋ СВЕТИСЛАВ
+АНЂЕЛКОВИЋ СВЕТИСЛАВ
+АНЂЕЛКОВИЋ СВЕТОМИР
+АНЂЕЛКОВИЋ ВАЛЕРИЈА
+АНЂЕЛКОВИЋ ВЕРА
+АНЂЕЛКОВИЋ ВИНКО
+АНЂЕЛКОВИЋ ВИНКО
+АНЂЕЛКОВИЋ ВИНКО
+АНЂЕЛКОВИЋ ВУКАДИН
+АНЂЕЛКОВИЋ ЗОРАН
+АНЂЕЛКОВИЋ ЗОРАН
+АНЂЕЛКОВИЋ ЗОРА
+АНЂЕЛОВИЋ ЉУБИША
+АНЂЕЛОВИЋ ВЕРИЦА
+АНЂЕЛОВСКИ ЂОРЂЕ
+АНЂИЋ СТЕВАН
+АНЂУШИЋ ЖАРКО
+АНЂУШИЋ ЈЕЛИСАВКА
+АНЂУШИЋ МИЛОРАД
+АНЂУШИЋ СЛОБОДАН
+АНАСТАСИЈЕВИЋ ДУШАН
+АНАСТАСИЈЕВИЋ ЈУЛКИЦА
+АНАСТАСИЈЕВИЋ ЗОРИЦА
+АНАСТАСИЈЕВИЋ ЗОРИЦА
+АНАСТАСОВ МАРКО
+АНАСТАСОВ НИКОЛА
+АНАСТАСОВСКИ АЛЕКСАНДАР
+АНАУ ГАБРИЕЛА
+АНАУ СТЕВАН
+АНДАБАК МАРКО
+АНДАБАКА АНТЕ
+АНДАБАКА СЛАВИЦА
+АНДЕР ИМРЕ
+АНДЕРЛОН СТЕВИЦА
+АНДЕСЕЛИЋ ШТЕФИЦА
+АНДЕВСКИ РАДЕ
+АНДИЋ СВЕТОЗАР
+АНДИЋ ВЛАДИМИР
+АНДОНИАДИС МИЛИЦА
+АНДОНОВ ДИМИТРИЈЕ
+АНДОНОВ НЕНАД
+АНДОНОВ ЗОРИЦА
+АНДОНОВИЋ ДИМИТРИЈЕ
+АНДРАШИК ПАВЕЛ
+АНДРЕАТА СЛАВКО
+АНДРЕИЋ РАДОВАН
+АНДРЕЈЕВ ХЕЛЕНА
+АНДРЕЈЕВ МИХАЈЛО
+АНДРЕЈЕВИЋ БОГОСАВ
+АНДРЕЈЕВИЋ БОРИВОЈЕ
+АНДРЕЈЕВИЋ ГРАДИМИР
+АНДРЕЈЕВИЋ ИВАН
+АНДРЕЈЕВИЋ МАРКО
+АНДРЕЈЕВИЋ МИЛАН
+АНДРЕЈЕВИЋ МИРОСЛАВ
+АНДРЕЈЕВИЋ СЛОБОДАН
+АНДРЕЈЕВИЋ ТЕОДОР
+АНДРЕЈЕВИЋ ВУКАШИН ДИПЛ ИНГ
+АНДРЕЈИЋ ЖАРКО
+АНДРЕЈИЋ БОРИСЛАВ
+АНДРЕЈИЋ ДРАГАН
+АНДРЕЈИЋ РАДОСЛАВ
+АНДРЕЈИЋ СЛАВОЉУБ
+АНДРЕЈИЋ СРЕТЕН
+АНДРЕЈИЋ ВЕРА
+АНДРЕЈИЋ ЗОРАН
+АНДРЕЈИЋ ЗОРИЦА
+АНДРЕС АНЂЕЛКО
+АНДРИЧЕК АНА
+АНДРИЧЕК ЛАЈОШ
+АНДРИЧЕК МАГДАЛЕНА
+АНДРИЧЕК ПАВАО
+АНДРИЧЕК ПАВЛЕ
+АНДРИЋ ЖЕЉКА
+АНДРИЋ ЖИКА
+АНДРИЋ ЖИВАН
+АНДРИЋ ЂОРЂЕ
+АНДРИЋ ЂУРЂИНА
+АНДРИЋ АЛЕКСАНДАР
+АНДРИЋ БОГОЉУБ
+АНДРИЋ БОЈАН
+АНДРИЋ БОСИЉКА
+АНДРИЋ БРАНИМИР
+АНДРИЋ БРАНИСЛАВ
+АНДРИЋ ДАРИНКА
+АНДРИЋ ДОСТА
+АНДРИЋ ДРАГАН
+АНДРИЋ ДРАГОЉУБ
+АНДРИЋ ДУШАН
+АНДРИЋ ДУШАН
+АНДРИЋ ДУШАН
+АНДРИЋ ДУШАН
+АНДРИЋ ДУШАН
+АНДРИЋ ФРИДА
+АНДРИЋ ИЛИЈА
+АНДРИЋ ЈЕЛЕНА
+АНДРИЋ ЈЕЛИСАВЕТА
+АНДРИЋ ЈОВИЦА
+АНДРИЋ-КОВАЧЕВИЋ ОЛИВЕРА
+АНДРИЋ ЛАЗАР
+АНДРИЋ ЛАЗА
+АНДРИЋ ЉИЉАНА
+АНДРИЋ ЉИЉАНА
+АНДРИЋ ЛУДМИЛА
+АНДРИЋ МИЛЕ
+АНДРИЋ МИЛОШ
+АНДРИЋ МИЛОШ
+АНДРИЋ НЕБОЈША
+АНДРИЋ НЕСТОР
+АНДРИЋ НИКОЛА
+АНДРИЋ ПЕРИЦА
+АНДРИЋ ПЕТАР
+АНДРИЋ РАДИСАВ
+АНДРИЋ РАДИСЛАВ
+АНДРИЋ САВА
+АНДРИЋ СИМА
+АНДРИЋ СЛАВКА
+АНДРИЋ СЛАВКА
+АНДРИЋ СЛАВОЉУБ
+АНДРИЋ СЛОБОДАН
+АНДРИЋ СТЕВАН
+АНДРИЋ СТЕВАН
+АНДРИЋ ТОДОР
+АНДРИЋ ТОМИСЛАВ
+АНДРИЋ ВЕРИЦА
+АНДРИЋ ВЛАДА
+АНДРИЋ ВЛАДИМИРА
+АНДРИЋ ВУКОМАН
+АНДРИЋ ЗОРА
+АНДРИГА АЛЕКСАНДАР
+АНДРИЈАШЕВ КОСАНА
+АНДРИЈАШЕВ РУЖИЦА
+АНДРИЈАШЕВИЋ ЖЕЉКО
+АНДРИЈАШЕВИЋ АНКА
+АНДРИЈАШЕВИЋ БРАНКО
+АНДРИЈАШЕВИЋ ЈЕЛЕНА
+АНДРИЈАШЕВИЋ РАДОВАН
+АНДРИЈЕВИЋ ЖИВА
+АНДРИЈЕВИЋ ЈОВАН
+АНДРИН АНЂЕЛКА
+АНДРИН ИСИДОР
+АНДРИН КАТИЦА
+АНДРИН МИЛАДИНКА
+АНДРИН НАДА
+АНДРОЦКИ ПАЛ ДИПЛ ИНГ
+АНДУЛАЈЕВИЋ СТЕВО
+АНГЕБРАНТ ИЛОНКА
+АНГЕЛЕСКИ ВАНГЕЛ
+АНГЕЛОВ ДУШАН
+АНГЕЛОВ СРЕЋКО
+АНГЕЛОВСКИ ДУШАН
+АНГЕЛОВСКИ ИЛИЈА
+АНГЕЛОВСКИ ЈАНДРЕ
+АНГЕЛОВСКИ МИТРЕ
+АНГЕЛОВСКИ ТОМО
+АНИЧИЋ ЖИВОТА
+АНИЧИЋ БРАНИСЛАВ
+АНИЧИЋ ДРАГАН
+АНИЧИЋ ДУШАН ДИПЛ ОЕЦ
+АНИЧИЋ ФИЛИП
+АНИЧИЋ ИЛИЈА
+АНИЧИЋ КОВИНКА
+АНИЧИЋ МИЛЕНА ДИПЛ ЕЦЦ
+АНИЧИЋ МИРКО
+АНИЧИЋ МИРО
+АНИЧИЋ МИРО
+АНИЧИЋ НЕНАД
+АНИЧИЋ ОСТОЈА
+АНИЧИЋ ПРЕДРАГ
+АНИЧИЋ СТАКА
+АНИЧИЋ СТОЈАНКА
+АНИЧИЋ ТОДОР
+АНИЧИЋ ЗДРАВКО
+АНИЧИН ЖАРКО
+АНИЧИН БРАНИСЛАВ
+АНИШИЋ ЈАСМИНКА
+АНИЋ ДУШАН
+АНИЋ СЛОБОДАН
+АНИЋ ЗОРА
+АНИКА ГАВРИЛО
+АНИКА ЈУЛИЈЕ ПРОФЕСОР
+АНИТИЋ ИШТВАН
+АНКИЋ МАРЈАН
+АНКИЋ ПЕРИЦА
+АНОЈЧИЋ ЖЕЉКО
+АНОЈЧИЋ ЛАЗАР
+АНОЈЧИЋ МИЛАН
+АНОЈЧИЋ РАДИВОЈ
+АНОЈЧИЋ РАДИВОЈ
+АНОЈЧИЋ СПАСОЈЕ
+АНОЈЧИЋ-СТОЈКОВИЋ ЈАСМИНКА
+АНТАЛ АЛЕКСАНДАР
+АНТАЛ ВЕРОНА
+АНТАНАСИЋ СТАНКО
+АНТАНАСИЈЕВИЋ БОРА
+АНТЕЉЕВИЋ АЛЕКСАНДАР
+АНТИЋ ЂОКА
+АНТИЋ ЂОРЂЕ
+АНТИЋ ЂОРЂЕ
+АНТИЋ АЛЕКСАНДАР
+АНТИЋ АНГЕЛИНА
+АНТИЋ БОШКО
+АНТИЋ БОЖИДАР ДР СТОМАТОЛОГ
+АНТИЋ БОЖИДАР
+АНТИЋ БРАНКО
+АНТИЋ БРАТИСЛАВ
+АНТИЋ ДИМИТРИЈЕ
+АНТИЋ ДРАГАН
+АНТИЋ ДРАГАН
+АНТИЋ ДРАГИША
+АНТИЋ ДУШАНКА
+АНТИЋ ДУШАНКА
+АНТИЋ ЈУЛКА
+АНТИЋ КОСТА
+АНТИЋ ЉУБИША
+АНТИЋ ЛУКА
+АНТИЋ МАРИЦА
+АНТИЋ МАРИЈА
+АНТИЋ МИЛАН
+АНТИЋ МИЛАН
+АНТИЋ МИЛАН
+АНТИЋ МИЛАН
+АНТИЋ МИЛИВОЈ
+АНТИЋ МИЛУТИН
+АНТИЋ МИОДРАГ
+АНТИЋ МИРКО
+АНТИЋ МИРКО
+АНТИЋ НЕНАД
+АНТИЋ НЕВЕНА
+АНТИЋ ОЛГА
+АНТИЋ ПАВЛЕ
+АНТИЋ ПАВЛЕ
+АНТИЋ ПАВЛЕ
+АНТИЋ ПЕТАР
+АНТИЋ РАДОЈКО
+АНТИЋ РАДОМИР
+АНТИЋ РАДОВАН
+АНТИЋ СЛАЂАНА
+АНТИЋ СЛАВИЦА
+АНТИЋ СЛОБОДАН
+АНТИЋ СМИЉА
+АНТИЋ СМИЉА
+АНТИЋ СОФИЈА
+АНТИЋ СТАНЧА
+АНТИЋ СТАНИСЛАВ
+АНТИЋ СТАНОЈЕ
+АНТИЋ СТОЈАН
+АНТИЋ СВЕТИСЛАВ
+АНТИЋ СВЕТЛАНА
+АНТИЋ СВЕТОВИД
+АНТИЋ ВЕРИЦА
+АНТИЋ ВУКАШИН
+АНТИЋ ЗАГОРКА
+АНТИЋ ЗЛАТАН
+АНТИН ИВАНКА
+АНТИН ВЕЛЕМИР
+АНТОЛОВИЋ ИВАН
+АНТОНИЋ ЖИВКО ДИПЛ ИНГ
+АНТОНИЋ ЖИВКО
+АНТОНИЋ ЂОРЂЕ
+АНТОНИЋ БОРИВОЈ
+АНТОНИЋ БРАНКО
+АНТОНИЋ ДОБРИВОЈ
+АНТОНИЋ ДРАГАН
+АНТОНИЋ ДРАГАН
+АНТОНИЋ ГОРДАНА
+АНТОНИЋ ЈАДРАНКА
+АНТОНИЋ ЈАСМИНКА
+АНТОНИЋ ЈЕЛЕНА
+АНТОНИЋ ЉУБИЦА
+АНТОНИЋ МАРИЈА
+АНТОНИЋ МИЛАН
+АНТОНИЋ МИЛАН
+АНТОНИЋ МИЛАН
+АНТОНИЋ МИЛИВОЈ
+АНТОНИЋ НЕБОЈША ДИПЛ ИНГ
+АНТОНИЋ РАДИСАВ
+АНТОНИЋ РАНКО
+АНТОНИЋ РАТКО
+АНТОНИЋ СИМА
+АНТОНИЋ СЛАВИЦА
+АНТОНИЋ СЛОБОДАН
+АНТОНИЋ СЛОБОДАН
+АНТОНИЋ СТЕВАН
+АНТОНИЋ ЗОРКА
+АНТОНИЈЕВИЋ АЛЕКСАНДАР
+АНТОНИЈЕВИЋ БИЉАНА
+АНТОНИЈЕВИЋ БОЖУР
+АНТОНИЈЕВИЋ БРАНКО
+АНТОНИЈЕВИЋ ДАМЊАН
+АНТОНИЈЕВИЋ ДУШАН ДР
+АНТОНИЈЕВИЋ ДУШАН
+АНТОНИЈЕВИЋ ЉИЉА
+АНТОНИЈЕВИЋ ПЕТАР
+АНТОНИЈЕВИЋ СТЕВА
+АНТОНИНИ МАРИЈА
+АНТОНОВИЋ МИЛИВОЈ
+АНТОВИЋ ЉУБИЦА
+АНТУН МИЛОШ
+АНТУНОВИЋ АНДРИЈА
+АНТУНОВИЋ БОГДАН
+АНТУНОВИЋ ГИЗЕЛА
+АНТУНОВИЋ ЛАЗАР
+АНТУНОВИЋ МЛАДЕН
+АНТУНОВИЋ МОМЧИЛО
+АНТУНОВИЋ НЕДА
+АНТУНОВИЋ ТОМИСЛАВ
+АНУЧИН НЕНАД
+АНУКИЋ КОСТА
+АПАРАЦ СВЕТОЗАР
+АПАТОВИЋ ЈОВАН
+АПАТОВИЋ ЛАЗАР
+АПАТОВИЋ НИКОЛА
+АПАТОВИЋ САВА
+АПЕРЛИЋ ВОЈИН
+АПИЋ ЂОРЂЕ
+АПИЋ АНКИЦА
+АПИЋ БРАНКО ДР ВЕТЕРИНЕ
+АПИЋ БРАНКО
+АПИЋ ДУШАН
+АПИЋ ЈУЛКА
+АПИЋ КАТАРИНА
+АПИЋ МИЛАН
+АПИЋ МИЛАН
+АПИЋ МИЛИЦА
+АПИЋ МИЛОШ
+АПИЋ МИЛОРАД
+АПИЋ МИРЈАНА
+АПИЋ МИРОСЛАВ
+АПИЋ ОЛИВЕРА
+АПИЋ ПАЈА
+АПИЋ ПАЈА
+АПИЋ РАДИШКО
+АПИЋ РАДИВОЈЕ
+АПИЋ РАТОМИР ДИПЛ ИНГ
+АПИЋ СРЕТА
+АПИЋ СТЕВАН
+АПИЋ СТОЈАН
+АПИЋ СВЕТОЗАР
+АПИЋ СВЕТОЗАР
+АПИЋ ВЕРА
+АПИЋ ЗДРАВКО
+АПИЋ ЗОРКА
+АПОСТОЛОВ ЉУБОМИР
+АПОСТОЛОВИЋ БОЖИДАР
+АПОСТОЛОВИЋ МИЛОРАД
+АПРО ФРАЊА
+АПРО ЈАНОШ
+АПРО ЈОЖЕФ
+АПРО ЛАСЛО
+АПРО ЉУБОМИР
+АПРО РИХАРД
+АПРО-САМАРЏИЈА ВЕРА ДР
+АПРО СТЕВАН
+АПРО ЗОЛТАН
+АПТ БОГОЉУБ
+АПТ МАРКО
+АРШИНОВ ЂОРЂЕ
+АРШИНОВ МИЛОРАД
+АРЂЕЛАМ-ШРАК ЕДИТ
+АРЂЕЛАН ИШТВАН
+АРАЧИЋ СЛОБОДАН
+АРАЂАНИН ТИМОТИЈЕ
+АРАЂАНСКИ КАТИЦА
+АРАЂАНСКИ НАДА
+АРАЂАНСКИ-РАЈКОВ МАЈА
+АРАЦКИ ЕРЖИКА
+АРАЦКИЋ ЂОРЂЕ
+АРАЦКИЋ МИЛИЦА
+АРАЦКИЋ ЗЛАТОЈЕ ДИПЛ ПРАВНИК
+АРАДСКИ АЛЕКСАНДАР ДИПЛ ИНГ
+АРАДСКИ ИВАНКА
+АРАДСКИ МИЛОРАД
+АРАДСКИ МИТА
+АРАДСКИ РАДИВОЈ
+АРАДСКИ СОФИЈА
+АРАДСКИ СРЕТЕНКА
+АРАДСКИ СТОЈАНКА
+АРАДСКИ ЗЛАТА
+АРАЛИЦА РАЈКО
+АРАМБАШИЋ ЂОРЂЕ
+АРАМБАШИЋ ДРАГАН
+АРАНЧИЋ АЛЕКСАНДАР
+АРАНЧИЋ КАРЛО
+АРАНЂЕЛОВИЋ АЛЕКСАНДАР
+АРАНЂЕЛОВИЋ БОЖИДАР
+АРАНЂЕЛОВИЋ ДИМИТРИЈЕ
+АРАНЂЕЛОВИЋ ЊЕГОВАН
+АРАНЂЕЛОВИЋ САВА
+АРАНЂЕЛОВИЋ СРЕТЕН
+АРАНЂУС АНТОН
+АРАНИЦКИ ДИНКА
+АРАНИЦКИ ГЛИГОРИЈЕ
+АРАНИЦКИ МИЛАНА
+АРАНИЦКИ МИЛИЦА
+АРАНИЦКИ МИЛОШ ДР ПРОФ
+АРАНИЦКИ ЗАГОРКА
+АРАНИЦКИ ЗОРИЦА
+АРАНИТОВИЋ ЛАЗАР
+АРАЊОШ ПАЛ
+АРАПЧИЋ ПАШАГА
+АРАПИНАЦ МИЛИЦА
+АРАПОВИЋ ДРАГО
+АРАПОВИЋ ДРАГУТИН
+АРАР ПЕТАР
+АРАС БРАНКО
+АРАС ЈУГОСЛАВ
+АРАС ЉУБО
+АРБЕС НЕНАД
+АРБУНИЋ ПЕРА
+АРБУТИНА ЂУРЂИНКА
+АРБУТИНА БРАНИСЛАВ
+АРБУТИНА МАРИЈА
+АРБУТИНА НАТАЛИЈА
+АРБУТИНА ВЕЛИМИР
+АРБУТИНА ВЛАДИМИР
+АРЏОН НАТАЛИЈА
+АРДАЛИЋ ЈОВАНКА
+АРДАЛИЋ ЛЕПОСАВА
+АРДАЛИЋ СЛАВКО
+АРДЕЉАН ЈОН
+АРДЕЉАН МАРИЈА
+АРДЕЉАН ПЕТАР
+АРДОЦКИ ИШТВАН
+АРЕЖИНА ЂОРЂЕ
+АРЕЖИНА БОШКО
+АРИФИ ИБРАХИМ
+АРИФОВИЋ СРБИЦА
+АРИЗАТОВИЋ ЈАСМИНА
+АРКУЛА БЛАЖЕ
+АРКУЛА СЛАВИЦА
+АРКУЛА СЛАВИЦА
+АРЛОВ ДРАГАН
+АРМАЦКИ БРАНИСЛАВ
+АРМАЦКИ РАДОВАН
+АРМАЦКИ СОФИЈА
+АРМАЦКИ СТЕВАН
+АРМБРУСТЕР ЛАСЛО
+АРМБРУСТЕР МАРИЈА
+АРНАУТ ЂОРЂЕ
+АРНАУТ ДРАГИЊА
+АРНАУТ МИЛИЦА
+АРНАУТ ВАСА
+АРНОУС ТЕРЕЗА
+АРНОВЉЕВИЋ КАТАРИНА
+АРОК-ДИВЈАК ГОРДАНА
+АРПАШИ ЂОРЂЕ
+АРПАШИ ЛАСЛО
+АРСЕНИЋ ЖИВКО
+АРСЕНИЋ БРАТИСЛАВА
+АРСЕНИЋ ДИМИТРИЈЕ
+АРСЕНИЋ ДРАШКО
+АРСЕНИЋ ЈОВАНКА
+АРСЕНИЋ МОМИР
+АРСЕНИЋ ОЛГИЦА
+АРСЕНИЋ ВЕЉКО
+АРСЕНИЈЕВИЋ БОРИСЛАВ
+АРСЕНИЈЕВИЋ ЈОВАН
+АРСЕНИЈЕВИЋ МИЛАН
+АРСЕНИЈЕВИЋ МИЛОРАД
+АРСЕНИЈЕВИЋ МИЛОВАН
+АРСЕНИЈЕВИЋ МИЛУНКА
+АРСЕНИЈЕВИЋ МОМЧИЛО ДР
+АРСЕНИЈЕВИЋ МОМЧИЛО
+АРСЕНИЈЕВИЋ МОМИР
+АРСЕНИЈЕВИЋ СЛАВКА
+АРСЕНИЈЕВИЋ СМИЉА
+АРСЕНИЈЕВИЋ ВОЈИСЛАВ
+АРСЕНИЈЕВИЋ ВОЈИСЛАВ
+АРСЕНИН ЂУРЂИНКА
+АРСЕНИН АЛЕКСАНДАР
+АРСЕНИН АЛЕКСАНДАР
+АРСЕНИН БОГОЉУБ
+АРСЕНИН ГАЈА
+АРСЕНИН ЈОВАН
+АРСЕНИН ЈОВАН
+АРСЕНИН КОСТА
+АРСЕНИН КРИСТИНА
+АРСЕНИН МАРИЈА
+АРСЕНИН МИТА
+АРСЕНИН МЛАДЕН
+АРСЕНИН МЛАДЕН
+АРСЕНИН СВЕТОЗАР
+АРСЕНИН ВИТОМИР
+АРСЕНИН ВЛАДИМИР
+АРСЕЊЕВ АЛЕКСЕЈ
+АРСЕНОВ АЛЕКСА
+АРСЕНОВ АРИШКО
+АРСЕНОВ БРАНИСЛАВ
+АРСЕНОВ БРАНИСЛАВ
+АРСЕНОВ БРАНИСЛАВ
+АРСЕНОВ ДРАГИЦА
+АРСЕНОВ КАТИЦА
+АРСЕНОВ МИЛАН
+АРСЕНОВ МИРОСЛАВ
+АРСЕНОВ ПЕРА
+АРСЕНОВ ПЕТАР
+АРСЕНОВ ПЕТАР
+АРСЕНОВ РАДИВОЈ
+АРСЕНОВ САША
+АРСЕНОВ ВАСИЛИЈЕ
+АРСЕНОВИЋ ЖИВКО
+АРСЕНОВИЋ МАРИЦА
+АРСЕНОВИЋ НАДА ДР
+АРСЕНОВИЋ РАДИСАВ
+АРСЕНОВИЋ РАДОМИР
+АРСЕНОВИЋ САВО
+АРСЕНОВИЋ СРЂАН
+АРСЕНОВИЋ СТОЈАДИН
+АРСЕНОВИЋ ТРИВО
+АРСЕНОВИЋ ВЕСНА
+АРСЕНОВИЋ ВЛАДА
+АРСЕНОВИЋ ЗОРАН
+АРСИЋ ЧЕДОМИР
+АРСИЋ ЖАРКО
+АРСИЋ ЖИВКО
+АРСИЋ АЛЕКСАНДАР
+АРСИЋ ДОБРИВОЈЕ
+АРСИЋ ДУШКО
+АРСИЋ ЕРЖЕБЕТ
+АРСИЋ ЛАЗАР
+АРСИЋ ЛИДИЈА
+АРСИЋ ЉУБИША
+АРСИЋ МАРИЈА
+АРСИЋ МИХАИЛО
+АРСИЋ МИХОЉКА
+АРСИЋ МИЛОШ
+АРСИЋ МИЛОСЛАВ ДР
+АРСИЋ МИЛУТИН
+АРСИЋ МИОДРАГ
+АРСИЋ МИОМИР
+АРСИЋ МИРЈАНА
+АРСИЋ МИРЈАНА
+АРСИЋ МОМЧИЛО
+АРСИЋ ОБРАД
+АРСИЋ ПЕРИЦА
+АРСИЋ ПЕТАР
+АРСИЋ РАДОМИР
+АРСИЋ РАДОСАВ
+АРСИЋ САВЕТА
+АРСИЋ СЛАВКА
+АРСИЋ СЛАВОЈКА
+АРСИЋ СЛАВОЉУБ
+АРСИЋ СТАНКО
+АРСИЋ ТОМИСЛАВ
+АРСИЋ ТОМИСЛАВ
+АРСИЋ ТОМИСЛАВ
+АРСИЋ ТРАЈАН
+АРСИЋ ЗОРАН
+АРСИЋ ЗОРАН
+АРСИЋ ЗОРАН
+АРСИКИН МИЛАНКО
+АРСИКИН ПАВЛЕ
+АРСЛАНАГИЋ НАЂА
+АРСОВИЋ АЛЕКСАНДАР
+АРСОВИЋ ДОБРОСАВ
+АРСОВИЋ ЈОВАН
+АРСОВИЋ МАТЕЈА
+АРСОВИЋ МИЛАН
+АРСОВИЋ МИЛИЦА
+АРТ ЂУРА
+АРТ ЗВОНИМИР
+АРТУКОВ ДУШАН
+АРТУКОВ ОЛГА
+АРУЛА МИЋО
+АРВАИ АЛЕКСАНДАР
+АРВАИ АРПАД
+АРВАИ ДАНИЦА
+АРВАИ ПАВАО
+АРВАИ ТЕРЕЗА
+АРВАЈИ ПАВАО
+АРВАНИТИДИС СТЕРЈОС
+АСАНИ АСАН
+АСАНИ ХУРИША
+АСАНИ НАИЉА
+АСАНИ НАЗИФА
+АСАНОВ ЗОРА
+АСАНОВИЋ МИЛЕВА
+АСАНОВИЋ СТАНКА
+АСАНОВИЋ ЗУХРА
+АСАНОВСКИ РОЗАЛИЈА
+АСИЋ МИЛАН
+АСОДИ ЈАНОШ
+АСОДИ ЈОЖЕФ
+АСОДИ МИРКО
+АСОТИЋ МУАМЕР
+АСТАХОВ-ЈЕРЕМИЋ МАРИЈА
+АСТАЛОШ ИШТВАН
+АСУРЏИЋ КРИСТИНА
+АСУРЏИЋ ЛУКА
+АСУРЏИЋ МИЛОШ
+АСУРЏИЋ МИЛОШ
+АСУРЏИЋ МИЛОШ
+АСУРЏИЋ МОЛОШ
+АСУРЏИЋ НИКОЛА
+АСУРЏИЋ НИКОЛА
+АСУРЏИЋ СОФИЈА
+АСУРЏИЋ СТЕВАН
+АСУРЏИЋ ТЕОДОР
+АСУРЏИЋ ТЕОДОР
+АТАНАЦКОВ ЂОРЂЕ
+АТАНАЦКОВ БОРА
+АТАНАЦКОВ БОРИВОЈ
+АТАНАЦКОВ ДРАГАН
+АТАНАЦКОВ ИЛОНА
+АТАНАЦКОВ МАРИЈА
+АТАНАЦКОВ МИРЈАНА
+АТАНАЦКОВ МИРКО
+АТАНАЦКОВ НОВА
+АТАНАЦКОВ ОЛГА
+АТАНАЦКОВ ПАВЛЕ
+АТАНАЦКОВ САША
+АТАНАЦКОВ СТЕВАН
+АТАНАЦКОВ СТЕВАН
+АТАНАЦКОВИЋ ЖИВАН
+АТАНАЦКОВИЋ ЂОРЂЕ
+АТАНАЦКОВИЋ АЛЕКСАНДАР
+АТАНАЦКОВИЋ АНА
+АТАНАЦКОВИЋ БОГОБОЈ
+АТАНАЦКОВИЋ БОРИСЛАВ
+АТАНАЦКОВИЋ БОРИСЛАВ
+АТАНАЦКОВИЋ БРАНКА ДИПЛ ПРАВНИК
+АТАНАЦКОВИЋ ДРАГИША ДР
+АТАНАЦКОВИЋ ДУШАН ДР ЛЕКАР
+АТАНАЦКОВИЋ ГРАДИМИР
+АТАНАЦКОВИЋ ИВАН
+АТАНАЦКОВИЋ КАТАРИНА
+АТАНАЦКОВИЋ ЛАЗА
+АТАНАЦКОВИЋ ЛУКА
+АТАНАЦКОВИЋ МИЛЕНКО
+АТАНАЦКОВИЋ МИЛЕНКО
+АТАНАЦКОВИЋ МИРКО
+АТАНАЦКОВИЋ МЛАДЕН
+АТАНАЦКОВИЋ РАТКО
+АТАНАЦКОВИЋ САВА
+АТАНАЦКОВИЋ СЛАЂАНА
+АТАНАЦКОВИЋ СТЕВАН
+АТАНАЦКОВИЋ СВЕТОМИР
+АТАНАЦКОВИЋ ТЕОДОР ДР
+АТАНАЦКОВИЋ ТОША
+АТАНАЦКОВИЋ ВАСИЉКА
+АТАНАЦКОВИЋ ВЛАДИМИР ДИПЛ ИНГ
+АТАНАЦКОВИЋ ЗОРАН
+АТАНАСИАДИС ХРИСТОФОРОС
+АТАНАСИЈАДИС АНЕСТИ
+АТАНАСКОВИЋ ГОРДАНА
+АТАНАСКОВИЋ МИРЈАНА
+АТАНАСКОВИЋ МИРОЉУБ
+АТАНАСОСКИ СТЕВО
+АТАНАСОВ МАРКО
+АТАНАСОВСКИ РИСТО
+АТАРАЦ ДРАГОШ
+АТЕЉЕВИЋ ДУШАН
+АТЕЉЕВИЋ МИЛОВАН
+АТИЋ ДАНИЦА
+АТЛАГИЋ БРАНКО
+АТЛАГИЋ ЈОВАН
+АТЛАГИЋ МИЛАН
+АТЛАГИЋ МИЛИЦА
+АТЛАГИЋ ЗДРАВКО
+АТЛАГИЋ ЗДРАВКО
+АТЛАС ЂОРЂЕ ДР
+АТЛАС ИВАН
+АТЛАС МИРКО
+АТЛИЋ ЛАЗАР
+АТЛИЋ МИЛАН
+АУЖИНА МИЛИЦА
+АУЖИНА МИРА
+АУЖИНА МИРОСЛАВА
+АУЕР МАРА
+АУГУСТИН ИВИЦА
+АУГУСТИНОВ АНТОН
+АУГУСТИНОВ ИВАН
+АУЛИК ИЛОНА
+АУРЕЛИЈАН ЂАН
+АВАКУМОВИЋ ЉУБИНКА
+АВАКУМОВИЋ НИКОЛА
+АВДАЛОВИЋ ГОРДАНА
+АВДАЛОВИЋ МИЛАДИН
+АВДАЛОВИЋ ВИДОСАВА
+АВДАЛОВИЋ ВЛАДИМИР
+АВДИ РАМАДАН
+АВДИЋ АЛЕКСАНДАР
+АВДИЋ ФУАД
+АВДИЋ ГОРДАНА
+АВДИЋ ХУСНИЈА
+АВДИЋ МАЛИЋ
+АВДИЋ МУЛИЈА
+АВЕМАРИА ПЕТАР
+АВРАМОВ БОШКО
+АВРАМОВ БРАНИСЛАВ
+АВРАМОВ ДИМИТРИЈЕ
+АВРАМОВ ДОБРИЛА
+АВРАМОВ ГАВРА
+АВРАМОВ ИВАН
+АВРАМОВ ЈОВАНКА
+АВРАМОВ ЈОВАН
+АВРАМОВ ЉИЉАНА
+АВРАМОВ МИЛАДИН
+АВРАМОВ МИЛЕВА
+АВРАМОВ МИЛКА
+АВРАМОВ МИРЈАНА
+АВРАМОВ МИТА
+АВРАМОВ ПАЈА
+АВРАМОВ ПЕРА
+АВРАМОВ ПЕТАР
+АВРАМОВ РАДИВОЈ
+АВРАМОВ СТЕВАН
+АВРАМОВ СВЕТОЛИК
+АВРАМОВ СВЕТОЛИК
+АВРАМОВ ЗОРАН
+АВРАМОВ ЗОРАН
+АВРАМОВИЋ ЖИВКО
+АВРАМОВИЋ БОРИВОЈЕ
+АВРАМОВИЋ ДАРИНКА
+АВРАМОВИЋ ДИМИТРИЈЕ
+АВРАМОВИЋ ДИМИТРИЈЕ
+АВРАМОВИЋ ДРАГО
+АВРАМОВИЋ ФРАНЦИШКА
+АВРАМОВИЋ ГОЈКО
+АВРАМОВИЋ ИЛИНКА
+АВРАМОВИЋ ЈОВАН ДР ЛЕКАР
+АВРАМОВИЋ ЉУБИША
+АВРАМОВИЋ ЉУБИНКО
+АВРАМОВИЋ ЉУБОМИР
+АВРАМОВИЋ МИЛАН
+АВРАМОВИЋ МИЛАН
+АВРАМОВИЋ МИЛАН
+АВРАМОВИЋ МИЛИВОЈ
+АВРАМОВИЋ МИРЈАНА
+АВРАМОВИЋ МИТА
+АВРАМОВИЋ МОМИР
+АВРАМОВИЋ НИКОЛА
+АВРАМОВИЋ РАДИВОЈ
+АВРАМОВИЋ РАДОСЛАВ
+АВРАМОВИЋ РАТКО
+АВРАМОВИЋ РАТКО
+АВРАМОВИЋ СИНИША
+АВРАМОВИЋ СТАНКА
+АВРАМОВИЋ СТЕВАН
+АВРАМОВИЋ ТЕОДОР
+АВРАМОВИЋ ТОМА
+АВРАМОВИЋ ВЕЉКО
+АВРАМОВИЋ ВЕРА
+АВРАМОВИЋ ВЕРА
+АВРАМОВИЋ ВЕРА
+АВРАМОВСКИ БОРИС
+АЗЛЕН БОРИСЛАВ
+БАЧА ШАНДОР
+БАЧА ЛАДИСЛАВ
+БАЧАНОВИЋ НЕНАД
+БАЧИЋ ЧЕДОМИР ПРОФЕСОР
+БАЧИЋ ЖИВКО
+БАЧИЋ ЂОРЂЕ
+БАЧИЋ АНТЕ
+БАЧИЋ БРАНКА
+БАЧИЋ ДРАГОСЛАВ
+БАЧИЋ ЈОВАН
+БАЧИЋ КАРА
+БАЧИЋ МАРИЈА
+БАЧИЋ МИЛАН ДР ВЕТЕРИНЕ
+БАЧИЋ МИЛИЦА
+БАЧИЋ МИРКО
+БАЧИЋ НИКОЛА
+БАЧИЋ СМИЉАНА
+БАЧКАЛИЋ ЂОРЂЕ
+БАЧКАЛИЋ АЛЕКСАНДАР
+БАЧКАЛИЋ ДОБРА
+БАЧКАЛИЋ ДОБРИЦА
+БАЧКАЛИЋ ЈОВАН
+БАЧКАЛИЋ ЛАЗАР
+БАЧКАЛИЋ ЉУБИЦА
+БАЧКАЛИЋ ЉУБОМИР
+БАЧКАЛИЋ МИЛАН
+БАЧКАЛИЋ МИЛА
+БАЧКАЛИЋ НОВАК
+БАЧКО МИЛАНА
+БАЧКО ПЕТАР
+БАЧЛИЋ ЂОРЂЕ
+БАЧЛИЋ БРАНИСЛАВ
+БАЧЛИЋ ЛАЗАР
+БАЧЛИЋ ЉУБИЦА
+БАЧЛИЈА ЈОСИП
+БАЧЛИЈА МАРКО
+БАЧЛИЈА РУЖИЦА
+БАЧЛИЈА СЛАВИЦА
+БАЧУЛОВ СТЕВАН
+БАЧВАНИН ЖИВОЈИН
+БАЧВАНСКИ БОШКО
+БАЧВАНСКИ СТЕВАН ДР ИНГ
+БАШ ЈУЛИА
+БАША ДУШАН
+БАША ЈОВАН
+БАШЕВИЋ ЧЕДОМИР
+БАШЕВИЋ НЕВЕНКА
+БАШИЧЕВИЋ ВОЈИН ДР
+БАШИЧЕВИЋ ВОЈИН
+БАШИЋ ЖАРКО
+БАШИЋ ЂУРО
+БАШИЋ АЛЕКСАНДАР
+БАШИЋ БИЉАНА
+БАШИЋ БОЖО
+БАШИЋ ДРАГУТИН
+БАШИЋ ДРАГУТИН
+БАШИЋ ДУШАН
+БАШИЋ ДУШАН
+БАШИЋ ДУШАН
+БАШИЋ ДУШАН
+БАШИЋ ДУШАН
+БАШИЋ ФРАЊО
+БАШИЋ ГАВРА
+БАШИЋ ГРУЈИЦА
+БАШИЋ ИДРИЗ
+БАШИЋ ИЛИЈА
+БАШИЋ ЈАНКО
+БАШИЋ ЈЕЛА
+БАШИЋ ЈЕЛЕНА
+БАШИЋ ЈОВАН
+БАШИЋ ЈОВАН
+БАШИЋ ЈУРЕ
+БАШИЋ ЛАЗАР
+БАШИЋ ЉУБИЦА
+БАШИЋ ЉУБИЦА
+БАШИЋ ЛУКА
+БАШИЋ МАРИЈА
+БАШИЋ МИЛАН
+БАШИЋ МИЛАН
+БАШИЋ МИЛА
+БАШИЋ МИЛИЦА
+БАШИЋ МИЛУТИН ДИПЛ ИНГ
+БАШИЋ МИТА
+БАШИЋ НЕДЕЉКА
+БАШИЋ НЕСТОР
+БАШИЋ НИКОЛА
+БАШИЋ ПАВЛЕ
+БАШИЋ ПЕТАР
+БАШИЋ РАДОСЛАВ
+БАШИЋ САВА
+БАШИЋ САВА
+БАШИЋ СИМКА
+БАШИЋ СЛОБОДАНКА
+БАШИЋ СЛОБОДАНКА
+БАШИЋ СЛОБОДАН
+БАШИЋ СЛОБОДАН
+БАШИЋ СОЊА
+БАШИЋ СПАСОЈЕ
+БАШИЋ СТЕВАН
+БАШИЋ ТОМИСЛАВ
+БАШИЋ ВЕРА
+БАШИЋЕВИЋ ДЕСА
+БАШИЦА МИЛАН
+БАШИЦА РАНКО
+БАШИЦА РИСТО
+БАШКАЛО МАРКО
+БАШНЕЦ ИВАН
+БАШТИЋ БОЖИДАР
+БАШТИЋ МИЛКА
+БАШТИЋ ПЕТАР
+БАШТОВАНОВ ДАНИЦА
+БАШТОВАНОВ СТЕВАН
+БАШТОВАНОВИЋ ИВАН
+БАШТОВАНОВИЋ МИЛАН
+БАЋАН ДРАГОМИР
+БАЋАНОВ ДРАГИЦА
+БАЋАНОВ СТАНКО
+БАЋАНОВ СТЕВАН
+БАЋАНОВИЋ ДАНИЦА
+БАЋАНОВИЋ ЈУЦА
+БАЋАНОВИЋ МИЛАН
+БАЋАНОВИЋ МИЛОШ
+БАЋАНОВИЋ НЕМАЊА
+БАЋАНОВИЋ СИНИША
+БАЋАНОВИЋ СТОЈАН
+БАЋИЋ ЉИЉАНА
+БАЋИЋ ЉУБОМИР
+БАЋИНА МЛАДЕН
+БАЋИНАЦ РАДОСЛАВ
+БАЖАНЧИК БЕЛА
+БАЖАНТИК МАРА
+БАЖДАР БРУНО
+БАЖДАР МИЛОРАД
+БАЖЕНОВ АНГЕЛИНА
+БАЂИ ШАНДОР
+БАЂИ-РИБАР РЕНАТА
+БАЂИН СМИЉКА
+БАБА ИЛОНКА
+БАБА ЈАНОШ
+БАБА ЈОН
+БАБАЈИЋ АЛЕКСАНДАР
+БАБАРИКИН МАРКО
+БАБЕЦ ЗОРАН
+БАБИ ИВАН
+БАБИЋ ЖАРКО
+БАБИЋ ЖЕЉКА
+БАБИЋ ЖИВАН
+БАБИЋ ЖИВАН
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂОРЂЕ
+БАБИЋ ЂУРЂИЦА
+БАБИЋ ЂУРА
+БАБИЋ ЂУРА
+БАБИЋ ЂУРО
+БАБИЋ АЦА
+БАБИЋ АИДА
+БАБИЋ АЛЕКСАНДАР
+БАБИЋ АЛЕКСАНДАР
+БАБИЋ АЛЕКСАНДРА
+БАБИЋ АЛЕКСА
+БАБИЋ АЛКА
+БАБИЋ АНА
+БАБИЋ АНА
+БАБИЋ АНА
+БАБИЋ БИЉАНА
+БАБИЋ БОЖИЦА
+БАБИЋ БОЖИДАРКА
+БАБИЋ БОГДАН
+БАБИЋ БОЈА
+БАБИЋ БОРИША
+БАБИЋ БОРИСЛАВА
+БАБИЋ БОРИВОЈЕ
+БАБИЋ БРАНКО
+БАБИЋ ЦВИЈО
+БАБИЋ ДАНЕ
+БАБИЋ ДАРИНКА
+БАБИЋ ДАВИД
+БАБИЋ ДРАШКО
+БАБИЋ ДРАГАНА
+БАБИЋ ДРАГАН
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГИША
+БАБИЋ ДРАГО
+БАБИЋ ДУШАНКА
+БАБИЋ ДУШАН
+БАБИЋ ДУШАН
+БАБИЋ ДУШАН
+БАБИЋ ДУШАН
+БАБИЋ ДУШИЦА
+БАБИЋ ГОЈКО
+БАБИЋ ГОЈКО
+БАБИЋ ГОРАН
+БАБИЋ ГОРДАНА
+БАБИЋ ГОРИЦА
+БАБИЋ ГОСПАВА
+БАБИЋ ХЕЛЕНА
+БАБИЋ ИЛИЈА
+БАБИЋ ИЛИЈА
+БАБИЋ ИЛИЈА
+БАБИЋ ИЛИНКА
+БАБИЋ ИВАН
+БАБИЋ ИВАН
+БАБИЋ ИВАН
+БАБИЋ ЈОВАН
+БАБИЋ ЈОВАН
+БАБИЋ ЈОВАН
+БАБИЋ ЈОВАН
+БАБИЋ ЈОВАН
+БАБИЋ КАТИЦА
+БАБИЋ КАЗИМИР
+БАБИЋ-КОПЉАН РОЖА
+БАБИЋ КОСА
+БАБИЋ КОСТАДИН
+БАБИЋ КОСТА
+БАБИЋ КРСТА
+БАБИЋ ЛАЗО
+БАБИЋ ЛАЗО
+БАБИЋ ЛЕОНИД
+БАБИЋ ЉИЉАНА
+БАБИЋ ЉИЉАНА
+БАБИЋ ЉИЉАНА
+БАБИЋ ЉУБИША
+БАБИЋ ЉУБИЦА
+БАБИЋ ЉУБОМИР
+БАБИЋ ЉУБОМИР
+БАБИЋ ЛУКА
+БАБИЋ МАЈА
+БАБИЋ МАРИЈАНА
+БАБИЋ МАРИЈА
+БАБИЋ МАРИНКО
+БАБИЋ МАРКО
+БАБИЋ МАТО
+БАБИЋ МИЈО
+БАБИЋ МИЛАДИН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛАН
+БАБИЋ МИЛЕТА
+БАБИЋ МИЛЕВА
+БАБИЋ МИЛЕВА
+БАБИЋ МИЛИЋ
+БАБИЋ МИЛИВОЈЕ ДИПЛ ИНГ
+БАБИЋ МИЛИВОЈ
+БАБИЋ МИЛИВОЈ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОШ
+БАБИЋ МИЛОРАД
+БАБИЋ МИЛОРАД
+БАБИЋ МИЛОРАД
+БАБИЋ МИЛОСАВ
+БАБИЋ МИРА
+БАБИЋ МИРА
+БАБИЋ МИРЈАНА
+БАБИЋ МИРОСЛАВ
+БАБИЋ МИРОСЛАВ
+БАБИЋ МИРОСЛАВ
+БАБИЋ МОМЧИЛО
+БАБИЋ МОМИР
+БАБИЋ-МРКШИЋ ЈУЛКА
+БАБИЋ МУРИЗ
+БАБИЋ НАДА
+БАБИЋ НАДА
+БАБИЋ НАДА
+БАБИЋ НАТАША
+БАБИЋ НЕДЕЉКО
+БАБИЋ НЕНАД
+БАБИЋ НИКОЛА
+БАБИЋ НИКОЛА
+БАБИЋ НИКОЛА
+БАБИЋ ОЛГИЦА
+БАБИЋ ОСТОЈА
+БАБИЋ ОСТОЈА
+БАБИЋ ПЕРСА
+БАБИЋ ПЕРСИДА
+БАБИЋ ПЕТАР
+БАБИЋ ПЕТАР
+БАБИЋ ПЕТАР
+БАБИЋ ПЕТАР
+БАБИЋ ПЕТАР
+БАБИЋ ПРЕДРАГ
+БАБИЋ РАДЕНКО
+БАБИЋ РАДЕ
+БАБИЋ РАДЕ
+БАБИЋ РАДИНКА
+БАБИЋ РАДИСАВ
+БАБИЋ РАДИВОЈЕ
+БАБИЋ РАДОЈЕ
+БАБИЋ РАДОЈКА
+БАБИЋ РАДОЈКА
+БАБИЋ РАДОМИР
+БАБИЋ РАДОСЛАВ
+БАБИЋ РАДОВАН
+БАБИЋ РАДОВАН
+БАБИЋ РАЈКО
+БАБИЋ РАЈКО
+БАБИЋ РАНКО
+БАБИЋ САША
+БАБИЋ САВО
+БАБИЋ СЛАДЕ
+БАБИЋ СЛАВИЦА
+БАБИЋ СЛОБОДАН
+БАБИЋ СЛОБОДАН
+БАБИЋ СМИЉКА
+БАБИЋ СМИЉКА
+БАБИЋ СНЕЖАНА
+БАБИЋ СОФИЈА
+БАБИЋ СТАКА
+БАБИЋ СТАНКО
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВАН
+БАБИЋ СТЕВО
+БАБИЋ СВЕТЛАНА
+БАБИЋ СВЕТЛАНА
+БАБИЋ ТОМО
+БАБИЋ ВАСА
+БАБИЋ ВАСА
+БАБИЋ ВЕРА
+БАБИЋ ВЕРИЦА
+БАБИЋ ВЕСНА
+БАБИЋ ВИДОСАВА
+БАБИЋ ВУЈО
+БАБИЋ ВУКМАН
+БАБИЋ ЗАГОРКА
+БАБИЋ ЗДРАВКО
+БАБИЋ ЗОРАН
+БАБИЋ ЗОРАН
+БАБИЋ ЗОРКА
+БАБИЈАНОВИЋ ЈУЛКА
+БАБИЛОН ВЛАДИМИР
+БАБИЛОН ВЛАДИМИР
+БАБИН ЂОРЂЕ
+БАБИН БОГДАН
+БАБИН БРАНИСЛАВ
+БАБИН ДИМИТРИЈЕ
+БАБИН ДУШАН
+БАБИН ЈОВАН
+БАБИН КАТАРИНА
+БАБИН КРИСТИНА
+БАБИН ЛАЗАР
+БАБИН ЉУБОМИР
+БАБИН МАРИЈА
+БАБИН МАРИН
+БАБИН МИХАЈЛО
+БАБИН МИЛАН
+БАБИН МИЛЕНА
+БАБИН МИЛЕНКО ДР ИНГ
+БАБИН МИЛЕНКО
+БАБИН МИОДРАГ
+БАБИН МИРЈАНА
+БАБИН МИРЈАНА
+БАБИН НАДА
+БАБИН НИКОЛА
+БАБИН ПЕТАР
+БАБИН РАДОЈКА
+БАБИН САВА
+БАБИН ЗОРАН
+БАБЈАК СЛОБОДАН
+БАБКА ЈАН
+БАБОРАЦ ДРАГАН
+БАБОВИЋ ЧЕДОМИР
+БАБОВИЋ БРАНИСЛАВ
+БАБОВИЋ ЈАСМИНА
+БАБОВИЋ ЈЕЛЕНА
+БАБОВИЋ ЈОВАН
+БАБОВИЋ ЉУБОМИР
+БАБОВИЋ МИХАИЛО
+БАБОВИЋ МИЛИСАВ
+БАБОВИЋ МОМЧИЛО
+БАБОВИЋ СИНИША ДР
+БАБОВИЋ ТОМИСЛАВ
+БАБОВИЋ ЗОРА
+БАЦКОВИЋ ДОБРОСЛАВ
+БАЦКОВИЋ ДРАГАН
+БАЦКОВИЋ МАРИЈА
+БАЦКОВИЋ МИЛИЦА
+БАЦКОВИЋ МИЛИВОЈЕ
+БАЦКОВИЋ МИЛОРАД
+БАЦКОВИЋ МИЛОВАН
+БАЦКОВИЋ РАДИВОЈЕ
+БАДА ИШТВАН
+БАДАЛИЋ МАЈДА
+БАДАЊАЦ ЈЕЛЕНА
+БАДЊАР МИЛАН
+БАДЊАР МИЛИВОЈЕ
+БАДЊАР ВЛАДО
+БАДЊАРЕВИЋ АЛЕКСАНДАР ДИПЛ ПРАВНИК
+БАДЊАРЕВИЋ БОЖИДАР
+БАДЊАРЕВИЋ МИЛАНА
+БАДЊАРЕВИЋ МИОДРАГ
+БАДЊАРЕВИЋ РАДОШ
+БАДЊАРЕВИЋ СТАНА
+БАДОВИНАЦ ДРАГУТИН
+БАДОВИНАЦ НИКОЛА
+БАДРКИЋ НИКОЛА
+БАДРЉИЦА ДУШИЦА
+БАДРЉИЦА ГАВРА
+БАДРЉИЦА ЛАЗАР
+БАДРЉИЦА МЛАДЕН
+БАДРЉИЦА ОЛГА
+БАДРЉИЦА ПЕТАР
+БАДРЉИЦА РАДОЈКА
+БАФУС ЛАСЛО
+БАГИ ЂУЛА
+БАГИ-БЕНКОВИЋ ПАЛ
+БАГИ ФЕРЕНЦ
+БАГИ ИШТВАН
+БАГИ ЈАНОШ
+БАГИЋ МИРЈАНА
+БАГИЊ ЛАЗАР
+БАГИЊ ЛЕПОСАВА
+БАГЛАВА МИЛАН
+БАГОЊА ЈАН
+БАГОЊА МАРИЈА
+БАГОЊА НАДА
+БАХ ЕРНА
+БАХМАН МАРКО
+БАХТИЈАРЕВИЋ ЈЕЛА
+БАХУН НИКОЛА
+БАХУН ПЕТАР
+БАИЋ МИРКО
+БАИЋ СТАНА
+БАЈЧЕТА МОМЧИЛО
+БАЈЧЕТА РАДОСЛАВ
+БАЈЧЕТИЋ БОГДАН ДР
+БАЈЧЕТИЋ ЉУБИЦА
+БАЈЧЕТИЋ МАРИЈА
+БАЈЧЕТИЋ МАРКО
+БАЈЧЕТИЋ МИЛЕНКО
+БАЈЧЕТИЋ МИРКО
+БАЈЧЕТИЋ ПАВЛЕ
+БАЈЧЕТИЋ ПЕТАР
+БАЈЧЕВ ЈОВАН
+БАЈЧЕВ МИРЈАНА
+БАЈШАНСКИ ДРАГОСЛАВ
+БАЈШАНСКИ ЈОВАН
+БАЈШАНСКИ ЉИЉАНА
+БАЈШАНСКИ МИЛАДИН
+БАЈШАНСКИ МИЛЕНКО
+БАЈШАНСКИ РАДОВАН
+БАЈШАНСКИ САВА
+БАЈШАНСКИ САВА
+БАЈШАНСКИ СМИЉА
+БАЈШАНСКИ ЗОРАН
+БАЈШЕВ ДРАГОМИР
+БАЈШЕВ ИЛИЈА
+БАЈШЕВ МИЛИЦА
+БАЈШЕВ СТЕВАН
+БАЈШЕВ СВЕТИСЛАВ
+БАЈШИЋ ЖАРКО
+БАЈШИЋ ДРАГАН
+БАЈШИЋ МИЛАН
+БАЈА ЂОРЂЕ
+БАЈА СТЕВАН
+БАЈАЦ БОРИСЛАВ
+БАЈАЦ ЕМИЛИЈА ДР
+БАЈАЦ ИСАК
+БАЈАЦ ЉУБИЦА
+БАЈАЦ МИЛАН
+БАЈАЦ МИЛОШ
+БАЈАЦ МИЛУТИН
+БАЈАЦ СВЕТЛАНА
+БАЈАЦ ВЕРА
+БАЈАГИЋ КАТИЦА
+БАЈАГИЋ МИЛЕНА
+БАЈАГИЋ МИОДРАГ
+БАЈАГИЋ МОМЧИЛО
+БАЈАГИЋ МОМЧИЛО
+БАЈАГИЋ ПЕТАР
+БАЈАГИЋ РАДА
+БАЈАГИЋ РАДЕ
+БАЈАГИЋ САВО
+БАЈАГИЋ СВЕТОЗАР
+БАЈАГИЋ ТАМАРА
+БАЈАКИЋ МАРА
+БАЈАЛО ЈОВАНКА
+БАЈАЛОВИЋ СОФИЈА
+БАЈАЛОВИЋ СВЕТИСЛАВ
+БАЈАТ МИЛОРАД
+БАЈАТ МИРКО
+БАЈАТ МИРКО
+БАЈАТ НЕДЕЉКО
+БАЈАТ НИКОЛА
+БАЈАТ РАДОВАН
+БАЈАТ ТРИФУН
+БАЈАТ ВЕЛИМИР
+БАЈАЗЕТ ЈЕВГЕНИЈА
+БАЈАЗЕТ ТОДОР
+БАЈАЗЕТ ВЕРА ДИПЛ ИНГ
+БАЈАЗЕТОВ ДРАГАН
+БАЈАЗЕТОВ ДРАГАН
+БАЈАЗЕТОВ РАДИВОЈ
+БАЈАЗИТ МИЛАН
+БАЈБАРАК ИВАН
+БАЈГО ЗОЛТАН
+БАЈИ АРАНКА
+БАЈИ-ХРИБАР ЈУЛИЈА
+БАЈИ СТЕВАН
+БАЈИЋ ЧЕДОМИР
+БАЈИЋ ЖАРКО
+БАЈИЋ ЖИКА
+БАЈИЋ ЖИВКО
+БАЈИЋ ЖИВОЈИН
+БАЈИЋ ЂОРЂЕ ДР
+БАЈИЋ ЂУРА
+БАЈИЋ ЂУРО
+БАЈИЋ АЛЕКСАНДАР
+БАЈИЋ БОШКО
+БАЈИЋ БОЖИЦА
+БАЈИЋ БОГДАН
+БАЈИЋ БОГОЉУБ
+БАЈИЋ БОЈКА
+БАЈИЋ БОРА
+БАЈИЋ БОРИВОЈЕ
+БАЈИЋ БОСИЉКА
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНИСЛАВ
+БАЈИЋ БРАНКО
+БАЈИЋ ДАНИЦА
+БАЈИЋ ДИМИТРИЈЕ
+БАЈИЋ ДРАГИЦА
+БАЈИЋ ДРАГОСЛАВ
+БАЈИЋ ДРАГУТИН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШАН
+БАЈИЋ ДУШКО
+БАЈИЋ ГОЈКО
+БАЈИЋ ГОРДАНА
+БАЈИЋ ИЛИЈА
+БАЈИЋ ИЛИНКА
+БАЈИЋ ИЛОНА
+БАЈИЋ ЈАГОШ
+БАЈИЋ ЈАНКО
+БАЈИЋ ЈАНКО
+БАЈИЋ ЈЕЛИЦА
+БАЈИЋ ЈОВАН
+БАЈИЋ ЈОВАН
+БАЈИЋ ЈОВАН
+БАЈИЋ ЈОВИЦА
+БАЈИЋ КРСТА
+БАЈИЋ ЛАЗАР
+БАЈИЋ ЛУКА
+БАЈИЋ МАРА
+БАЈИЋ МАРА
+БАЈИЋ МАРИЦА
+БАЈИЋ МАРИЈА
+БАЈИЋ МАРИЈА
+БАЈИЋ МЕЛАНИЈА
+БАЈИЋ МИЋО
+БАЈИЋ МИХАЈЛО ДР
+БАЈИЋ МИЛАН ДР ПРОФ
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛАН
+БАЈИЋ МИЛЕНКО
+БАЈИЋ МИЛЕ
+БАЈИЋ МИЛИЦА
+БАЈИЋ МИЛКА
+БАЈИЋ МИЛОВАН
+БАЈИЋ МИОДРАГ
+БАЈИЋ МИРКО
+БАЈИЋ МИРКО
+БАЈИЋ МИРОСЛАВ
+БАЈИЋ МИРОСЛАВ
+БАЈИЋ МИРОСЛАВ
+БАЈИЋ МИРОСЛАВ
+БАЈИЋ МИТАР
+БАЈИЋ МИТАР
+БАЈИЋ МИТА
+БАЈИЋ МЛАДЕН
+БАЈИЋ МЛАДЕН
+БАЈИЋ МЛАДЕН
+БАЈИЋ МОМЧИЛО
+БАЈИЋ НАДА
+БАЈИЋ НАДА
+БАЈИЋ НАТАША
+БАЈИЋ НЕЂО
+БАЈИЋ НЕВЕНА
+БАЈИЋ НИКОЛА
+БАЈИЋ НИКОЛА
+БАЈИЋ ПЕРА
+БАЈИЋ ПЕРО
+БАЈИЋ ПЕРСИДА
+БАЈИЋ ПЕТАР
+БАЈИЋ ПЕТАР
+БАЈИЋ РАДЕ
+БАЈИЋ РАДЕ
+БАЈИЋ РАДЕ
+БАЈИЋ РАДИВОЈ
+БАЈИЋ РАДМИЛА
+БАЈИЋ РАДОСЛАВ
+БАЈИЋ САВА
+БАЈИЋ САВО
+БАЈИЋ СИМО
+БАЈИЋ СИНИША
+БАЈИЋ СЛАВКО
+БАЈИЋ СЛАВКО
+БАЈИЋ СНЕЖАНА
+БАЈИЋ СНЕЖАНА
+БАЈИЋ СОФИЈА
+БАЈИЋ СОФИЈА
+БАЈИЋ СОФИЈА
+БАЈИЋ СОЊА
+БАЈИЋ СПАСОЈЕ
+БАЈИЋ СТАНИСЛАВ
+БАЈИЋ СТЕВАН
+БАЈИЋ СТЕВАН
+БАЈИЋ СТЕВАН
+БАЈИЋ СТЕВАН
+БАЈИЋ СВЕТЛАНА
+БАЈИЋ ТОДОР
+БАЈИЋ ТОМИСЛАВ
+БАЈИЋ-ТУРИНСКИ МИРЈАНА
+БАЈИЋ ВАСА
+БАЈИЋ ВАСА
+БАЈИЋ ВЕРОНА
+БАЈИЋ ВЕСЕЛИН
+БАЈИЋ ВИДА
+БАЈИЋ ВЛАДИМИР
+БАЈИЋ ВЛАДИМИР
+БАЈИЋ ВЛАДИМИР
+БАЈИЋ ЗОРАНКА
+БАЈИЋ ЗОРАН
+БАЈИЋ ЗОРАН
+БАЈИЋ ЗОРАН
+БАЈИЋ ЗОРИЦА
+БАЈИЛО ДРАГОМИР
+БАЈИЛО ДРАГОМИР
+БАЈИЛО ДУШАН
+БАЈИЛО ПЕРО
+БАЈИЛО ВИДОСАВА
+БАЈИЛОВ ЉИЉАНА
+БАЈИН БОРИСЛАВ
+БАЈИН БРАНИСЛАВ
+БАЈИН ГАВРИЛО
+БАЈИН ИВАН
+БАЈИН КАЋА
+БАЈИН ЉУБИЦА
+БАЈИН МИЛАНКА
+БАЈИН НАДА
+БАЈИН РАДОЈКА
+БАЈИН РАЈКО
+БАЈИН РУЖИЦА
+БАЈИН САВА
+БАЈИН САВЕТА
+БАЈИН СТОЈАНКА
+БАЈКИН АНЂЕЛКО
+БАЈКИН СТОЈАН
+БАЈКИН СВЕТОЗАР
+БАЈКИН ВЕСЕЛИН
+БАЈКИН ВИТОМИР
+БАЈОР МАРИЈА
+БАЈОВИЋ БРАНКО
+БАЈОВИЋ МАРА
+БАЈОВИЋ МИТАР
+БАЈОВИЋ ВЕРА
+БАЈРАМИ ШЕФКИ
+БАЈРАМИ ШЕФКИ
+БАЈРАМИ АГРОН
+БАЈРАМИ БАТИЈА
+БАЈРАМИ ГАНИ
+БАЈРАМИ СКЕНДЕР
+БАЈРАМОВИЋ ШЕРИФ
+БАЈРАМОВИЋ ХИВЗИЈА
+БАЈРИЋ РАДМИЛА
+БАЈС ФРАНЦ
+БАЈУНОВИЋ МЛАДЕН
+БАЈУС ЈОЖЕФ
+БАКША ЂОРЂЕ
+БАКША ИМРЕ
+БАКША ЈОЖЕФ
+БАКША ЛАЈОШ
+БАКША ЛАЈОШ
+БАКША ЛАСЛО
+БАКША МАГДА
+БАКША МИХАЈЛО
+БАКША ЗОЛТАН
+БАКША ЗОЛТАН
+БАКА АНТАЛ
+БАКА ИШТВАН
+БАКА ИШТВАН
+БАКА ИШТВАН
+БАКА ИБОЉА
+БАКА МИЛИЦА
+БАКАИ ИРЕН
+БАКАЈ ИВАН
+БАКАЈ МИЉКО
+БАКАЈИЋ МИЛАН
+БАКАЈИН ДОБРИЛА
+БАКАЈИН ЉУБОМИР
+БАКАЈИН НЕВЕНКА
+БАКАЈИН ТОДОР
+БАКАЛИЋ ЂУЛИНКА СУДИЈА
+БАКАЛИЋ МИХАЈЛО
+БАКАЛИЋ ВОЈИСЛАВ
+БАКАЛОВИЋ НЕМАЊА
+БАКЕВ ЂОРЂЕ
+БАКИ ИРЕНА
+БАКИ ОТО
+БАКИ ВЕРА
+БАКИШ ЧЕДОМИР ДИПЛ ИНГ
+БАКИЋ БОРИВОЈЕ
+БАКИЋ ДИМИТРИЈЕ
+БАКИЋ ДУШАН ДИПЛ ИНГ
+БАКИЋ ИВАН
+БАКИЋ ЈОВАН
+БАКИЋ КОСТА
+БАКИЋ МИЈОМИР
+БАКИЋ МИЛОШ
+БАКИЋ МИЛОШ
+БАКИЋ МИЛУТИН
+БАКИЋ МИРА
+БАКИЋ МИРОСЛАВ
+БАКИЋ МИРОСЛАВ
+БАКИЋ НАДА
+БАКИЋ СИНИША
+БАКИЋ СОЊА
+БАКЛАИЋ ЈОВАНКА
+БАКМАЗ ЛАЗО
+БАКМАЗ ЉУБАН
+БАКМАЗ ЗОРАН
+БАКО МИША
+БАКОЧЕВИЋ МИРЈАНА
+БАКОШ ЂЕРЂИ
+БАКОШ ГАБОР
+БАКОШ ЛАЈОШ
+БАКОШ ЛАСЛО
+БАКОШ МАРИЈА
+БАКОШ ПАЛ
+БАКОШ ПЕТАР
+БАКОШ ТЕРЕЗИЈА
+БАКОВИЋ РАДЕ
+БАКТАИ СТЕВАН
+БАКУНИЋ ИВАН
+БАКУНИЋ ВИДОСАВА
+БАКВИЋ МИЛАН
+БАЛ КАРЛО
+БАЛ ЗВОНИМИР
+БАЛЧАКОВИЋ ВАСО
+БАЛШИЋ РАНКА
+БАЛА ЕТЕЛКА
+БАЛА ИШТВАН
+БАЛА ЈАНОШ
+БАЛА ЈУЛИЈАНА
+БАЛА ЈУЛИЈА
+БАЛА КАРЛО
+БАЛА КАРЛО
+БАЛА КАРОЉ
+БАЛА ЛАДИСЛАВ
+БАЛА МИХАЉ
+БАЛА ТЕРЕЗ
+БАЛАША ЈОЖЕФ
+БАЛАЋ АНА
+БАЛАЋ ДУШАНКА
+БАЛАЋ ЈОВАН
+БАЛАЋ ЉУБО
+БАЛАЋ МИРОСЛАВ
+БАЛАЋ МИРОСЛАВ
+БАЛАЋ СЛАВКО
+БАЛАЋ СРБИСЛАВ
+БАЛАЋ СТЕВАН
+БАЛАЋ ВУЈО
+БАЛАЋ ЗОРА
+БАЛАЖ ШАНДОР
+БАЛАЖ ЂУЛА
+БАЛАЖ ЂУЛА
+БАЛАЖ ЂУЛА
+БАЛАЖ ЂУЛА
+БАЛАЖ АДАЛБЕРТ
+БАЛАЖ АНА
+БАЛАЖ ЕТЕЛКА
+БАЛАЖ ГЕЗА
+БАЛАЖ ГЕЗА
+БАЛАЖ ИРЕНА
+БАЛАЖ ИВАНКА
+БАЛАЖ ЈАНИКА
+БАЛАЖ ЈЕЛИСАВЕТА
+БАЛАЖ ЈОСИП
+БАЛАЖ ЈОВАН
+БАЛАЖ КАТАРИНА
+БАЛАЖ ЛАСЛО
+БАЛАЖ ПАЛ
+БАЛАЖ ПАЛ
+БАЛАЖ-ПИРИ ЂЕРЂ
+БАЛАЖ ЗИТА
+БАЛАЖЕВ СТИПАН
+БАЛАЖЕВИЋ СЛОБОДАНКА
+БАЛАБАН БОШКО
+БАЛАБАН БРАНКО
+БАЛАБАН МИЛОВАН
+БАЛАБАН МИЛУТИН
+БАЛАБАН НЕЂО
+БАЛАБАН ПЕТАР
+БАЛАБАН САВО
+БАЛАБАН СПОМЕНКА
+БАЛАБАН ВИД
+БАЛАБАН ВУКАШИН
+БАЛАБАНОВ АНА
+БАЛАБАНОВИЋ БОШКО
+БАЛАБАНОВИЋ МИЛОРАД
+БАЛАБАНОВИЋ НИКОЛА
+БАЛАБАНОВИЋ ПЕТАР
+БАЛАБАНОВИЋ ВОЈИСЛАВ
+БАЛАЈ МИХАЈЛО
+БАЛАЛИЋ ЏЕВАД ДИПЛ ИНГ
+БАЛАЛИЋ ЏЕВАД
+БАЛАНЕСКО АЛЕКСАНДАР
+БАЛАТ ИРЕНА
+БАЛАТОН ЂЕРЂ
+БАЛАТОН ЂЕРЂ
+БАЛАТОН ЂЕРЂ
+БАЛАТОН БЕЛА
+БАЛАТОН ИМРЕ
+БАЛАТОН МАГДОЛНА
+БАЛАТОН ПЕТАР
+БАЛЦА ВЛАДИМИР
+БАЛЦА ВЛАДИМИР
+БАЛДИЋ СЛОБОДАН
+БАЛЕНОВИЋ АНДРИЈА
+БАЛЕР ЈОСИП
+БАЛЕВИЋ МИЛИВОЈ
+БАЛГО ФРАНЦИШКА
+БАЛИ АЛЕКСАНДРА
+БАЛИ ГАБОР
+БАЛИ ЛАСЛО
+БАЛИЋ ЕСАД
+БАЛИЖ ИЛДА
+БАЛИЖ МИХАЉ
+БАЛИЖ ЗОЛТАН
+БАЛИНД ПАЛ
+БАЛИНД СИЛВИА
+БАЛИНОВИЋ МИЛЕВА
+БАЛИНОВИЋ СИНИША
+БАЛИНТ ШАНДОР МР
+БАЛИНТ ЖИГМУНД
+БАЛИНТ ЂОРЂЕ
+БАЛИНТ ЂУРА
+БАЛИНТ АНДРЕЈ
+БАЛИНТ ДЕЖЕ
+БАЛИНТ ИШТВАН
+БАЛИНТ ИЛОНА
+БАЛИНТ ИМРЕ
+БАЛИНТ ИМРЕ
+БАЛИНТ ЈОЖЕФ
+БАЛИНТ ЈОЖЕФ
+БАЛИНТ ЈОСИП
+БАЛИНТ ЈОСИП
+БАЛИНТ ЈОСИП
+БАЛИНТ ЈУЛИЈАНА
+БАЛИНТ КАРОЉ
+БАЛИНТ МАЋАШ
+БАЛИНТ МАРГАРЕТА
+БАЛИНТ МАРИА
+БАЛИНТ МАРИЈА
+БАЛИНТ МАРИЈА
+БАЛИНТ МИХАИЛО
+БАЛИНТ МИРОСЛАВ
+БАЛИНТ-МИТРОВИЋ ОЛГА
+БАЛИНТ РАДОСЛАВ
+БАЛИНТ РОБЕРТ
+БАЛИНТ СЛАВОМИР
+БАЉ БРАНКО
+БАЉ МИЛОРАД
+БАЉ САВО
+БАЉА ИДРИЗ
+БАЉАК ЧЕДОМИР
+БАЉОШЕВИЋ АЛЕКСАНДАР
+БАЉОШЕВИЋ БОГДАНКА
+БАЉОШЕВИЋ ЈОВАН
+БАЉОШЕВИЋ МИРО
+БАЉОЗОВИЋ ОЛИВЕРА
+БАЉОЗОВИЋ ТОМИСЛАВ ДР
+БАЛКОВОЈ ВЛАДИМИР
+БАЛНОЖАН НЕВЕНКА
+БАЛНОЖАН СИМА
+БАЛО ГАШПАР
+БАЛО ПЕТАР
+БАЛОШ НУЦА
+БАЛОШ ТОДОР
+БАЛОШ ТОДОР
+БАЛОБАН МИЛАН
+БАЛОБАН МИЛАН
+БАЛОГ ШАНДОР
+БАЛОГ ЖИВКА
+БАЛОГ ЖУЖАНА
+БАЛОГ ЂОРЂЕ
+БАЛОГ ЂОРЂЕ
+БАЛОГ ЂОРЂЕ
+БАЛОГ ЂУРА
+БАЛОГ ЂУРА
+БАЛОГ АЛЕКСАНДАР
+БАЛОГ АНА
+БАЛОГ АНА
+БАЛОГ АНА
+БАЛОГ АНДРАШ
+БАЛОГ АНДРИЈА
+БАЛОГ БЕЛА
+БАЛОГ БРАНКО
+БАЛОГ ДЕЖЕ
+БАЛОГ ДЕЖЕ
+БАЛОГ ДРАГАН
+БАЛОГ ДУШАНКА
+БАЛОГ ФЕРЕНЦ
+БАЛОГ ФРАЊА
+БАЛОГ ФРАЊА
+БАЛОГ ФРАЊА
+БАЛОГ ИШТВАН
+БАЛОГ ИБОЈКА
+БАЛОГ ИМРЕ
+БАЛОГ ИМРЕ
+БАЛОГ ЈОЖЕФ
+БАЛОГ ЈОЦА
+БАЛОГ ЈОВАН
+БАЛОГ ЈУЛИЈАНА
+БАЛОГ ЈУЛИЈАНА
+БАЛОГ КАЛМАН
+БАЛОГ КАРОЉ
+БАЛОГ КАРОЉ
+БАЛОГ КАТАРИНА
+БАЛОГ ЛАДИСЛАВ
+БАЛОГ ЛАДИСЛАВ
+БАЛОГ ЛАСЛО
+БАЛОГ МАГДА
+БАЛОГ МАРА
+БАЛОГ МАРИЈА
+БАЛОГ МАРИЈА
+БАЛОГ МАРИЈА
+БАЛОГ МАРИЈА
+БАЛОГ МАРИЈА
+БАЛОГ МАРТА
+БАЛОГ МИЛЕНА
+БАЛОГ МИРКО
+БАЛОГ НИКОЛА
+БАЛОГ НИКОЛА
+БАЛОГ ПИШТА
+БАЛОГ ПИРОШКА
+БАЛОГ СИМА
+БАЛОГ СМИЉА
+БАЛОГ СПОМЕНКА
+БАЛОГ СТЕВАН
+БАЛОГ СТЕВАН
+БАЛОГ СТЕВАН
+БАЛОГ ТИБОР
+БАЛОГ ВЕЛИМИР
+БАЛОГ ЗОРАН
+БАЛОК ИШТВАН
+БАЛОВИЋ МИЛИЋ
+БАЛТА АНА
+БАЛТИЋ ДАНИЦА
+БАЛТИЋ РАДМИЛА
+БАЛТИЋ ВЛАДИМИР ДР
+БАЛТОВИЋ ДРАГАН
+БАЛТОВИЋ ПЕТАР
+БАЛУНОВИЋ ИВАН
+БАМБУЛОВИЋ МИЛКА
+БАН СТЕВАН
+БАНЧЕВИЋ ПЕТАР
+БАНЧЕВИЋ РАДЕ
+БАНЧИ БАЛИНТ
+БАНЧИ КАРОЉ
+БАНЧИЋ ЖИВКО
+БАНЧИЋ АЛЕКСАНДАР
+БАНЧИЋ ЈОВАН
+БАНЧИЋ ЈУЛКА
+БАНЧИЋ ЛАЗА
+БАНЧИЋ МАРИЈА
+БАНЧИЋ СОФИЈА
+БАНЧИЋ СТЕВИЦА
+БАНЧИЋ ТОДОР
+БАНЂУР МИРКО
+БАНАЋАНИН ЉИЉАНА
+БАНАЋАНИН ОЛГА
+БАНАИ ТИБОР
+БАНАИ ВЕРА
+БАНАЈ ЈОСИП
+БАНДА ЖИВКО
+БАНДИЋ БЛАГОЈЕ
+БАНДИЋ ЈЕЛИЦА
+БАНДИЋ ЉУБОМИР
+БАНДИЋ ЉУБО
+БАНДИЋ РАДЕ
+БАНДИЋ САВКА
+БАНДИЋ ТОМИСЛАВ
+БАНДИЋ ВЕРИЦА
+БАНДИЋ ВУЈАДИН
+БАНДИН ЖИВОРАД
+БАНДИН ИВАН
+БАНДИН КАТИЦА
+БАНДИН МИОДРАГ
+БАНДИН МЛАДЕН
+БАНДОБРАНСКИ ОЛГА
+БАНДОЛО ДРАГИЦА
+БАНДУКА ДРАГУТИН
+БАНФИ МАРИЈА
+БАНГО ЉУДЕВИТ
+БАНИЋ АНЂА
+БАНИЋ БОЖИДАР
+БАНИЋ БРАНКО ДР
+БАНИЋ ЕМИЛИЈА
+БАНИЋ ЕВИЦА
+БАНИЋ КАТИЦА
+БАНИЋ МИЛОШ
+БАНИЋ МИЛОВАН
+БАНИЋ ПАНЕ
+БАНИЋ ПЕТАР
+БАНИЋ РАДЕ
+БАНИЋ РАДОМИР
+БАНИЋ РАСТКО
+БАНИЋ РУЖИЦА
+БАНИЋ СЛАВКО
+БАНИЋ СВЕТОЗАР
+БАНИЋ ЗОРКА
+БАНИЋЕВИЋ ЈЕЛЕНА
+БАНИЋЕВИЋ ВЕСЕЛИН
+БАНИА-ЖИВАДИНОВИЋ МИРЈАНА
+БАЊАШ ЂУРА
+БАЊАЦ ЧЕДОМИР
+БАЊАЦ ЧЕДО
+БАЊАЦ ЧЕДО
+БАЊАЦ ШПИРО ДИПЛ ИНГ
+БАЊАЦ ЖИВАН
+БАЊАЦ ЂОРЂЕ
+БАЊАЦ ЂОРЂЕ
+БАЊАЦ ЂОРЂЕ
+БАЊАЦ БОСИЉКА
+БАЊАЦ ДАНИЛО
+БАЊАЦ ДМИТАР
+БАЊАЦ ДРАГАН ДИПЛ ИНГ
+БАЊАЦ ДРАГАН
+БАЊАЦ ДРАГИЦА
+БАЊАЦ ДРАГИЦА
+БАЊАЦ ДУШАН
+БАЊАЦ ДУШКО
+БАЊАЦ ДУШКО
+БАЊАЦ ЕМИЛ
+БАЊАЦ ГАВРА
+БАЊАЦ ГОЈКО
+БАЊАЦ ЈЕЛЕНА
+БАЊАЦ ЈОВАН
+БАЊАЦ ЈОВАН
+БАЊАЦ КАТИЦА
+БАЊАЦ МИЛАН
+БАЊАЦ МИЛАН
+БАЊАЦ МИЛЕ
+БАЊАЦ МИЛОРАД
+БАЊАЦ МИРКО
+БАЊАЦ НЕДЕЉКО
+БАЊАЦ НИКОЛА
+БАЊАЦ ОЛГА
+БАЊАЦ ПЕРО
+БАЊАЦ ПЕТАР
+БАЊАЦ РАДА
+БАЊАЦ РАДОЊА
+БАЊАЦ САВА
+БАЊАЦ САВА
+БАЊАЦ САВЕТА
+БАЊАЦ САВО
+БАЊАЦ СЛАВКО
+БАЊАЦ СЛАВНА
+БАЊАЦ СЛОБОДАН
+БАЊАЦ СТЕВАН
+БАЊАЦ ТЕОДОР
+БАЊАЦ ВЕСНА
+БАЊАЦ ВИНКО
+БАЊАЦ ВИТОМИР
+БАЊАЦ ВОЈИСЛАВ
+БАЊАИ ЈАГА
+БАЊАИ ЈАНОШ
+БАЊАИ ЈОВАН
+БАЊАИ ЛАЈОШ
+БАЊАИ МАЋАШ
+БАЊАИ МАРИЈА
+БАЊАИ РОМАН
+БАЊАИ РУЖА
+БАЊАНАЦ БРАНКО
+БАЊАНАЦ БРАТИСЛАВ
+БАЊАНАЦ МИЛАН
+БАЊАНАЦ РАДЕ
+БАЊАНАЦ СЛАВИЦА
+БАЊАНИН ДАНИЦА
+БАЊАНИН ДАРА
+БАЊАНИН ЈЕЛЕНА
+БАЊАНИН ЈЕЛИСАВЕТА
+БАЊАНИН ЈОВАН
+БАЊАНИН НЕДЕЉКО
+БАЊАНИН НЕДЕЉКО
+БАЊАНИН НИКОЛА
+БАЊАНИН НИКОЛА
+БАЊАНИН РАДМИЛА
+БАЊАНИН СОФИЈА
+БАЊАНИН ВЕЛИМИР
+БАЊАРИ ЛАЈОШ
+БАЊЕГЛАВ БОЖА
+БАЊЕГЛАВ ДРАГАН
+БАЊЕГЛАВ ДУШАН
+БАЊЕГЛАВ НИКОЛА
+БАЊЕГЛАВ РАДИВОЈ
+БАЊЕВИЋ СЛОБОДАНКА
+БАНКА ЛАЈОШ
+БАНКОВАЧКИ ЂУРА
+БАНКОВАЧКИ ЈОВАН
+БАНКОВАЧКИ МАРИЈА
+БАНКОВАЧКИ НАДА
+БАНКОВАЧКИ ПЕТАР
+БАНКОВАЧКИ САВА
+БАНКОВАЧКИ СВЕТОЗАР
+БАНКОВИЋ МИЛУН
+БАНОВЧАНИН ДРАГИЦА
+БАНОВЧАНИН МИЛАН
+БАНОВЧАНИН МОМЧИЛО
+БАНОВАЧКИ ЂОРЂЕ
+БАНОВАЧКИ ЈОВАН
+БАНОВАЧКИ МАРИЈА
+БАНОВАЧКИ РУЖИЦА
+БАНОВИЋ ЖАРКО
+БАНОВИЋ ЖИВОРАД
+БАНОВИЋ ДУШАН
+БАНОВИЋ ЈОВАНКА
+БАНОВИЋ ЛЕПОСАВА
+БАНОВИЋ-ЛОЦ НАДА
+БАНОВИЋ МИЛАН
+БАНОВИЋ МИЛАН
+БАНОВИЋ МИЉКО
+БАНОВИЋ НИКОЛА
+БАНОВИЋ СЛАВА
+БАНОВИЋ СЛОБОДАН
+БАНСКИ ЕРИКА
+БАНСКИ МАРИЈА
+БАРЧИКИН ЂОРЂЕ
+БАРШИ ЕНДРЕ
+БАРШИ ЛАСЛО
+БАРАЧАНИН ДАНИЦА
+БАРАЧАНИН ЛАЗАР
+БАРАЧАНИН ПАЈА
+БАРАЧАНИН САВКА
+БАРАЧИ СТЕВАН
+БАРАЧКОВ ЧЕДОМИР
+БАРАЧКОВ ЂОРЂЕ
+БАРАЧКОВ ГОРИНКА
+БАРАЧКОВ МИЛАН
+БАРАЧКОВ СРЕДОЈЕ
+БАРАЧКОВ ВЕСЕЛИН
+БАРАШЕВИЋ МИРОСЛАВА
+БАРАШЕВИЋ ТОМИСЛАВ
+БАРАШИН ГОРАН
+БАРАШИН ЉУБОМИР
+БАРАШИН НЕВЕНКА
+БАРАШИН САВА
+БАРАЋ ЖАРКО
+БАРАЋ ДРАГИЦА
+БАРАЋ ДУШАНКА
+БАРАЋ ГОДИМИР
+БАРАЋ ГОЈКО
+БАРАЋ ЈОСИП
+БАРАЋ КОВИЉКА
+БАРАЋ МИЛАН
+БАРАЋ МИЛОШ
+БАРАЋ МИЛОШ
+БАРАЋ МИЛОСАВА
+БАРАЋ МОМЧИЛО
+БАРАЋ РАДОЊА
+БАРАЋ САРАФИНА
+БАРАЋ СТАНИМИРКА
+БАРАЋ ВЕСЕЛИН
+БАРАЋ ВИДАК
+БАРАЋ ВУЧИНА
+БАРАЦ МАЛИША
+БАРАЦ МАРКО
+БАРАЦ НОВО
+БАРАЦ ТОМИСЛАВ
+БАРАЈЕВАЦ ЈОВА
+БАРАКО САВА
+БАРАЛИЋ МИРОСЛАВ
+БАРАН ЈАКИМ
+БАРАН МИХАЈЛО
+БАРАН МИРОН ДИПЛ ИНГ
+БАРАНИН ВАСИЛИЈЕ
+БАРАЊАИ ЈЕНЕ
+БАРАЊИ ФЕРЕНЦ
+БАРАЊИ ФЕРЕНЦ
+БАРАЊИ ЛАСЛО
+БАРАЊИ ПАВЛЕ
+БАРАЊИ СТЕВАН
+БАРАНОВСКИ ВЛАДА
+БАРАС ТОМА ДР
+БАРАТ АЛЕКСАНДАР
+БАРАТ ДРАГИЦА
+БАРАТ ДРАГИЊА
+БАРАТ ФЕРЕНЦ
+БАРАТ ИМРЕ
+БАРАТ ОЛГА
+БАРАТ ОСКАР
+БАРАТОВ БОШКО
+БАРБАРИЋ АНТЕ
+БАРБАРИЋ ПАВЛЕ
+БАРБАТЕСКОВИЋ ЉУБИША
+БАРБЕРИЋ ДРАГАН
+БАРБЕРИЋ МИРКО
+БАРБИР АНТЕ
+БАРБИР ЉУБА
+БАРБУ ВАСА
+БАРБУЛ МАРИЈА
+БАРБУЛ МИЛАН
+БАРБУЛ МИЛАН
+БАРБУЛ САВА
+БАРБУЛ СТОЈАН
+БАРБУЛ ВЛАДИСЛАВА
+БАРБУЛОВ ДИМИТРИЈЕ
+БАРБУЛОВ ДОБРИВОЈ
+БАРБУЛОВ МИЛИВОЈ
+БАРБУЛОВ НИКОЛА
+БАРБУЛОВИЋ ДРАГАН
+БАРБУЗАН ЈАСНА
+БАРБУЗАН РУЖИЦА
+БАРЦАЛ ЂЕРЂ
+БАРЦАЛ АНА
+БАРЦАЛ ЈОЖЕФ
+БАРЦАЛ ЛАСЛО ДИПЛ ИНГ
+БАРЦЕЛ КАТИЦА
+БАРДАК АЛЕКСАНДАР
+БАРДАК АНКИЦА
+БАРДАК ЛУКА
+БАРДИЋ ЖЕЉКО
+БАРДИЋ МИРКО
+БАРДОШ ЈОЖЕФ
+БАРДОШ МЕЛАНИЈА
+БАРДУН КАРЛО
+БАРЕШИЋ ИВАН
+БАРЕШИЋ МАТО
+БАРЕТИЋ ДРАГОЉУБ
+БАРИЧЕВИЋ СТИПЕ
+БАРИЧИЋ БИСЕРКА
+БАРИШИЋ АНЂЕЛКО
+БАРИШИЋ БЛАГОЈЕ
+БАРИШИЋ БОШКО
+БАРИШИЋ ИЛИЈА
+БАРИШИЋ ИЛИЈА
+БАРИШИЋ ЈАЊА
+БАРИШИЋ ЉУБИЦА
+БАРИШИЋ МАРКО
+БАРИШИЋ МИЛАН
+БАРИШИЋ МИЛАН
+БАРИШИЋ ПЕТАР
+БАРИШИЋ СТЈЕПАН
+БАРИШИЋ ВЕРОНИКА
+БАРИШИЋ ЗОРКА
+БАРИЋ ЉУБИЦА
+БАРИЋ ПАУЛИНА
+БАРИЋ СЛАВИЦА
+БАРЈАКТАР СПАСЕНИЈА
+БАРЈАКТАР СТЕВА
+БАРЈАКТАРЕВИЋ ЖИВКО
+БАРЈАКТАРЕВИЋ ДРАГАН
+БАРЈАКТАРЕВИЋ МАРА
+БАРЈАКТАРЕВИЋ МАРА
+БАРЈАКТАРЕВИЋ МИЛАН
+БАРЈАКТАРЕВИЋ МИЛКА
+БАРЈАКТАРЕВИЋ МИЛОЈЕ
+БАРЈАКТАРЕВИЋ ВАЛЕРИЈА
+БАРЈАКТАРЕВИЋ ЗЛАТКО
+БАРЈАКТАРОВ МИЛИЦА
+БАРЈАКТАРОВИЋ ЂОКО
+БАРЈАКТАРОВИЋ АНКА
+БАРЈАКТАРОВИЋ МИЛОШ
+БАРЈАКТАРОВИЋ СНЕЖАНА
+БАРЈАКТАРОВИЋ ВУЧИНА
+БАРЈАКТАРОВИЋ ВУЧИНА
+БАРЈАКТАРОВИЋ ЗОРКА
+БАРЈАМОВИЋ АЛИЛ
+БАРЈАМОВИЋ АРСЕНИЈЕ
+БАРЈАМОВИЋ СЛОБОДАН
+БАРНА ГАШПАР
+БАРНА ИВАН
+БАРНА ЈАНОШ
+БАРНА ЈОСИП
+БАРНА МИХАЉ
+БАРО ФРАЊО
+БАРО ЈЕЛЕНА
+БАРО ЈОЖЕФ
+БАРО ЈОЖЕФ
+БАРО ЈОСИП
+БАРОШ БОЖО
+БАРОШ БОРИСЛАВ ДР
+БАРОШ БОРИСЛАВ
+БАРОШ ЛАЗО
+БАРОШ НЕБОЈША
+БАРОШ НИКОЛА
+БАРОШ НИКОЛА
+БАРОШЕВИЋ ЈОВО
+БАРОВИЋ ВЕЛИМИР
+БАРОВИЋ ВОЈИСЛАВ
+БАРТА ЂЕРЂ
+БАРТА ЂОРЂЕ
+БАРТА АРПАД
+БАРТА ДЕЖЕ
+БАРТА ЕМА
+БАРТА ИЛДИКО
+БАРТА ИРМА
+БАРТА МАГДАЛЕНА
+БАРТЕК АНДРИЈА
+БАРТЕК КАТАРИНА
+БАРТЕК РУДОЛФ ДИПЛ ИНГ
+БАРТЕК СТЕВАН
+БАРТОШ ДАНИЛО
+БАРТОШ ДРАГИЦА
+БАРТОШ ИМРЕ
+БАРТОШ ЛАДИСЛАВ
+БАРТОШ ЛАСЛО
+БАРТОШ СВЕТЛАНА
+БАРТОШ ЗВОНИМИР
+БАРТОЈ МИРЈАНА
+БАРТОК МАРГИТ
+БАРТОЛОВИЋ АНТУН
+БАРТОЛОВИЋ ЈОСИП
+БАРТОЛОВИЋ МАРИН
+БАРТУЛОВИЋ ПАВЛЕ
+БАРУШИЋ МАРТИН
+БАРУЏИЈА МАРКО
+БАРУДАНОВ ДУШАНКА
+БАСАРА ЂУРО
+БАСАРА АНКА
+БАСАРА ДИВНА
+БАСАРА ДРАГИЦА
+БАСАРА ЈОВАН
+БАСАРА МАРТА
+БАСАРА МИЛИВОЈ
+БАСАРА МИРА
+БАСАРА ПАЈО
+БАСАРАБА ДУШИЦА
+БАСАРИЋ БОГДАН
+БАСАРИЋ ДАНЕ
+БАСАРИЋ ДРАГИЊА
+БАСАРИЋ ДУШАН
+БАСАРИЋ ЈЕЛЕНА
+БАСАРИЋ ЈОВАН
+БАСАРИЋ ЉУБОМИР
+БАСАРИЋ МИЛАН
+БАСАРИЋ МИЛАН
+БАСАРИЋ МИЛКА
+БАСАРИЋ МИРЈАНА
+БАСАРИЋ НИКОЛА
+БАСАРИЋ СТЕВАН
+БАСАРИЋ ВЕРА
+БАСИЋ КОВИЉКА
+БАСИЋ СРЂАН
+БАСИОЛИ СРЕЋКО
+БАСКИЈИН ЗОРА
+БАСРАК БРАНКО
+БАСРАК МИЛАН
+БАСТА ДАНЕ
+БАСТА ДАНИЕЛА
+БАСТА ДРАГУТИН
+БАСТА ДУШАН
+БАСТА ИВАНА
+БАСТА КАТИЦА
+БАСТА ЉУБИЦА
+БАСТА МАРИЈА
+БАСТА МАРИЈА
+БАСТА МАРИЈА
+БАСТА МИЛАН
+БАСТА МИЛОШ
+БАСТА МИРОСЛАВ
+БАСТА НИКОЛА
+БАСТА СТЕВА
+БАСТА ВЛАДО
+БАСТАХ БРАНКО
+БАСТАЈА БРАНКО
+БАСТАЈА МИЛАН
+БАТА ДЕЗИДЕР
+БАТА ИЛОНА
+БАТА КАРОЉ
+БАТА ЛАСЛО
+БАТА ЛАСЛО
+БАТА МАРГИТА
+БАТАЈИЋ БОГОЉУБ
+БАТАК ЕМИЛ
+БАТАК МИРКО
+БАТАКОВИЋ КОСАРА
+БАТАКОВИЋ МИЛАН
+БАТАКОВИЋ ВИТОМИР
+БАТАЛОВ РАДИЦА
+БАТАНЧЕВ ЈОВАН
+БАТАНЧЕВ СЛАВНА
+БАТАЊСКИ МИЛАН
+БАТАЊСКИ МИЛАН
+БАТАНОВИЋ АНКА
+БАТАР ЧЕДОМИР
+БАТАР ЧЕДОМИР
+БАТАР МИЛОШ
+БАТАР МОМИР
+БАТАР СЛОБОДАН
+БАТАР ВЕЛИМИР
+БАТАР ВОЈИН
+БАТАРИЛО ЖЕЉКО
+БАТАС БОЖАНА
+БАТАЗ ВЛАДО
+БАТЕРНЕК ИВАН
+БАТИЋ ЂУРАЂ
+БАТИЋ БОЖИДАР
+БАТИЋ БРАНКА
+БАТИЋ ИВАНА
+БАТИЋ МИХАЈЛО
+БАТИНИЋ ЂУРО
+БАТИНИЋ ДРАГАН
+БАТИНИЋ ГОРДАНА
+БАТИНИЋ САВА
+БАТИНИЋ СПАСОЈЕ
+БАТИСТИЋ ИВАН
+БАТКИЋ ЈУСУФ
+БАТКИЋ СТАНИСЛАВА
+БАТКОВИЋ МАРА
+БАТОРИ ЈАНОШ
+БАТОРИ ЈОЖЕФ
+БАТОРИ МАРИЈА
+БАТОРИ МАРИЈА
+БАТОРИ МИХАЉ
+БАТОРИ МИХАЉ
+БАТОРИ МИХАЉ
+БАТОС АЛЕКСАНДАР
+БАТОС БОШКО
+БАТОС БОШКО
+БАТОС МИЛАН
+БАТОС НАДА
+БАТОС РАДИВОЈ
+БАТОС ЗОРИЦА
+БАТРНЕК ЗДЕНКА
+БАТУРАН ОБРАД
+БАТУРАН РАДОВАН
+БАУЕР ЕВА
+БАУЕР ЈУЛИЈАНА
+БАУЕР КСЕНИЈА
+БАУЕР ОТО
+БАУК ДРАГАН
+БАУКОВ ВЛАДИМИР
+БАУРАНОВ ЛАЗАР
+БАВАРЧИЋ МИЛОРАД
+БАВАРЧИЋ ВЕСЕЛИН
+БАЗАНЧИК ВАЛЕРИЈА
+БАЗОКИН ЖИВИЦА
+БЕЧ ЈАЊА
+БЕЧЕИ ЛАЈОШ
+БЕЧЕЈАЦ АЛЕКСАНДАР
+БЕЧЕЈАЦ БОШКО
+БЕЧЕЈАЦ БРАНИСЛАВ
+БЕЧЕЈАЦ ЈОВАН
+БЕЧЕЈАЦ КАМЕНКО
+БЕЧЕЈАЦ МИЛАН
+БЕЧЕЈАЦ РАДЕНКО
+БЕЧЕЈАЦ РАДОЈКА
+БЕЧЕЈАЦ САВА
+БЕЧЕЛИЋ ЂОРЂЕ
+БЕЧЕЛИЋ БИСЕРКА
+БЕЧЕЛИЋ БОСИЉКА
+БЕЧЕЛИЋ ДОБРИНКО
+БЕЧЕЛИЋ ДРАГИЦА
+БЕЧЕЛИЋ ГИНА
+БЕЧЕЛИЋ ЈОВАН
+БЕЧЕЛИЋ ЛАЗАР
+БЕЧЕЛИЋ МАРИЈА
+БЕЧЕЛИЋ МАРИЈА
+БЕЧЕЛИЋ МИЛАН
+БЕЧЕЛИЋ МИЛЕНА
+БЕЧЕЛИЋ МИЛИЦА
+БЕЧЕЛИЋ МИЛОШ
+БЕЧЕЛИЋ ПЕТАР
+БЕЧЕЛИЋ РАДИВОЈ
+БЕЧЕЛИЋ РАДОВАН
+БЕЧЕЛИЋ СТЕВАН
+БЕЧЕЛИЋ СТЕВАН
+БЕЧЕЛИЋ ВАСА
+БЕЧЕЛИЋ ВЕСЕЛИН
+БЕЧЕЛИЋ ВЕСЕЛИН
+БЕЧИЋ МУХИБА
+БЕЧИЋ ВЕРОЉУБ
+БЕЧКЕИ ЈАНОШ
+БЕЧКЕИ ПЕТАР
+БЕЧКЕЈИ КАРЛО
+БЕЧВАРДИ АЛЕКСАНДАР
+БЕЧВАРДИ ЈОСИП
+БЕШАНИЋ БОЖАНА
+БЕШАНИЋ ЗДРАВКО
+БЕШЕЊИ КАРЛО
+БЕШЕЊИ КАРЛО
+БЕШЕНСКИ НИКОЛА
+БЕШЕВИЋ АЛЕКСА
+БЕШЕВИЋ ЈОВАН
+БЕШЕВИЋ МИРЈАНА
+БЕШЕВИЋ НИКОЛА ДИПЛ ОЕЦ
+БЕШИЋ МАРИЈА
+БЕШИЋ МАРИЈА
+БЕШИЋ МЕХМЕД
+БЕШИЋ МИХАЈЛО
+БЕШИЋ СЛОБОДАН
+БЕШИЋ СВЕТИСЛАВ
+БЕШКЕР АНДРИЈА
+БЕШКЕР БОЖО
+БЕШКЕР СРЕЋКА
+БЕШЛИЋ ЈОВАН
+БЕШЛИЋ ТЕРЕЗИЈА
+БЕШЛИЈА ГОСПАВА
+БЕШЛИН ЖИВКО ДИПЛ ОЕЦ
+БЕШЛИН БРАНКО
+БЕШЛИН ИВАН
+БЕШЛИН ИВИЦА
+БЕШЛИН ЈЕЛИСАВЕТА
+БЕШЛИН МИОДРАГ
+БЕШЛИН СТОЈАН
+БЕШЛИН ВЛАДИСЛАВА
+БЕЋАГУЛ САВА
+БЕЋИН АЛЕКСАНДАР
+БЕЋИН ОЛГА
+БЕЋИРОВСКИ АДЕМ
+БЕЖАН ВИКТОР
+БЕЖАНОВ АЛЕКСАНДАР
+БЕЖАНОВ БРАНИСЛАВ
+БЕЖАНОВ ДРАГОЉУБ
+БЕЖАНОВ МИРОЉУБ
+БЕЖАНОВИЋ ЂОРЂЕ
+БЕАДЕР ЈОВАН
+БЕАРА ЖИВКО
+БЕАРА ЂОРЂЕ
+БЕАРА ЈОВАН
+БЕАРА МАРКО
+БЕАРА ПЕТАР
+БЕАРА ПЕТАР
+БЕАТОВИЋ НЕБОЈША
+БЕБЕК МАТО
+БЕБЕЉА-МАТУШ АНКА
+БЕБИЋ АНА
+БЕБИЋ ЉИЉАНА
+БЕБИЋ НЕВЕНКА
+БЕБИЋ НЕВЕНКА
+БЕБИЋ ПЕТАР
+БЕБИЋ СТОЈАНКА
+БЕЦЕ БЕЛА
+БЕЦЕ ТИБОР
+БЕЦИЋ СТЕВАН
+БЕЏЕТИ МАРИЈА
+БЕДАК БИЉАНА
+БЕДЕ ШАНДОР
+БЕДЕ ПЕТАР ДР
+БЕДЕ ПЕТАР
+БЕДЕКОВИЋ АНТОН
+БЕДНАРИК АНДРИЈА
+БЕДНАРИК ДАРИНКА
+БЕДНАРИК ЈАНОШ
+БЕДНАРИК ЈОСИП
+БЕДНАРИК МИХАЉ
+БЕДОВ БИСЕРКА
+БЕДОВ ЈОВАН
+БЕДОВ ЉУБИЦА
+БЕДОВ МАРИЈА
+БЕДОВ МИРОСЛАВ
+БЕДОВ НАДА
+БЕДОВ ПРЕДРАГ
+БЕДОВ РАДА
+БЕДОВ СРЂАН
+БЕДОВ СУНЧИЦА
+БЕДОВ СВЕТИСЛАВ
+БЕДРИК АЛЕКСАНДАР
+БЕГ АНДРИЈА
+БЕГ-ВАЛОВИЧИЋ АНЂЕЛКО
+БЕГ-ВОЛОВИЧИЋ ИВАН
+БЕГАНИ ШЕРИФ
+БЕГАНОВИЋ МЕХМЕД
+БЕГАНОВИЋ САНИД
+БЕГЕЧКИ РАЈКО
+БЕГЕЧКИ САВА
+БЕГЕНИШИЋ ДРАГОРАД
+БЕГЕНИШИЋ ВУКАШИН
+БЕГИЋ МИЛОШ
+БЕГИЋ МИРКО
+БЕГЛЕРБЕГОВИЋ ЏЕВАД
+БЕГОЈЕВ АНКА
+БЕГОЈЕВ БОГДАН
+БЕГОЈЕВ ЛАЗАР
+БЕГОЈЕВ ЛАЗА
+БЕГОЈЕВ ПЕТАР
+БЕГОЈЕВ РАДОЈКА
+БЕГОЈЕВ ТОША
+БЕГОЈЕВИЋ РАДИВОЈ
+БЕГОВИЋ ЕВИЦА
+БЕГОВИЋ ЈАСМИНА
+БЕГОВИЋ ЈОВАН
+БЕГОВИЋ ЛАДИСЛАВ
+БЕГОВИЋ-ЛИВАЈА ИЛИЈА
+БЕГОВИЋ ЉУБАН
+БЕГОВИЋ МИЛИЈА
+БЕГОВИЋ МИЛОРАД
+БЕГОВИЋ МИРКО
+БЕГОВИЋ РОЋКО
+БЕГОВИЋ САВО
+БЕГОВИЋ ТОДОР
+БЕГОВИЋ ЗОРО
+БЕХЕР ЕВА
+БЕХЕРАНО ЈОСИП
+БЕХТЕР АЛЕКСАНДАР
+БЕЈАРОВИЋ МАРКО
+БЕЈАРОВИЋ НЕНАД
+БЕЈАТОВИЋ ЂОРЂЕ
+БЕЈАТОВИЋ МИЛОРАД
+БЕЈАТОВИЋ МИРКО
+БЕЈТОВИЋ АЛИЈА
+БЕК АНТОНИЈА
+БЕК ДРАГАНА
+БЕК ЈОВАН
+БЕК ЛАДИСЛАВ
+БЕК ЉИЉАНА
+БЕК РУЖА
+БЕК СТЕВАН
+БЕКЧИЋ МИЛОРАД
+БЕКАРЕК ИЛИНКА
+БЕКЕ ЛАСЛО
+БЕКЕ МАРИЈАН
+БЕКЕР ФРЕДЕРИК
+БЕКЕР ИШТВАН
+БЕКЕР ИДА
+БЕКЕР ЈОЖЕФ
+БЕКЕР ЈОСИП
+БЕКЕР СТЕВАН
+БЕКИЋ БОРИС
+БЕКИЋ БРАНКА
+БЕКИЋ ЈУРЕ
+БЕКИЋ МИЛОРАД
+БЕКИЋ ТОМИСЛАВ
+БЕКИЋ ВЕРА
+БЕКРИЋ ДРАГАН
+БЕКРИЋ МИРА
+БЕКРИЋ ТОМИСЛАВ
+БЕКТАШ ДАНИЦА
+БЕКТАШ СЛАВКО
+БЕКУТ ДРАГАН
+БЕКУТ ПЕТАР
+БЕКВАЛАЦ ЖИВАН
+БЕКВАЛАЦ БРАНИСЛАВ
+БЕКВАЛАЦ БРАНИСЛАВ
+БЕКВАЛАЦ БРАНКА
+БЕКВАЛАЦ БРАНКО
+БЕКВАЛАЦ БРАНКО
+БЕКВАЛАЦ ДРАГОЉУБ
+БЕКВАЛАЦ ЕМИЛИЈА
+БЕКВАЛАЦ ИСА
+БЕКВАЛАЦ ЛАЗАР
+БЕКВАЛАЦ ЉУБИЦА
+БЕКВАЛАЦ ЉУБИЦА
+БЕКВАЛАЦ ЉУБИНКО
+БЕКВАЛАЦ МАРА
+БЕКВАЛАЦ МИЈА
+БЕКВАЛАЦ МИЛАНКО
+БЕКВАЛАЦ МИЛАН
+БЕКВАЛАЦ МИЛИСАВ
+БЕКВАЛАЦ МИРЈАНА
+БЕКВАЛАЦ РАДИВОЈ
+БЕКВАЛАЦ РАДМИЛА
+БЕКВАЛАЦ СЕРАФИНА
+БЕКВАЛАЦ СТЕВАН
+БЕЛЧЕВИЋ ГРАДИМИР
+БЕЛЧЕВИЋ РАТКО
+БЕЛАК ШАНДОР
+БЕЛАК АНА
+БЕЛАК МАРГИТА
+БЕЛАК МИЈО
+БЕЛАК ВЛАДА
+БЕЛАН ЈОЖЕФ
+БЕЛАНЧИЋ ЕЛИЗАБЕТА
+БЕЛАНОВИЋ ЂОРЂЕ
+БЕЛАНОВИЋ АЛЕКСАНДРА
+БЕЛАНОВИЋ КАТИЦА
+БЕЛАНОВИЋ МИЛИВОЈ
+БЕЛАНОВИЋ ТИБОР
+БЕЛЕЦКИ ЈЕЛЕНА
+БЕЛЕГИШАНИН ДРАГОМИР ДР
+БЕЛЕСЛИЈИН МИЛОРАД
+БЕЛЕСЛИЈИН СЛОБОДАН
+БЕЛЕСЛИН ДОБРИЛА
+БЕЛЕСЛИН МИРОСЛАВ
+БЕЛЕСЛИН СВЕТОЗАР ДР
+БЕЛЕТИЋ ЈЕЛЕНА
+БЕЛИ АНДРИЈА
+БЕЛИ ЕМИЛ
+БЕЛИ РОЗАЛИЈА
+БЕЛИ СТЕВАН
+БЕЛИ ВОЈИСЛАВ
+БЕЛИЧКА АНА
+БЕЛИЧКА БРАНИСЛАВ
+БЕЛИЧКА МИРОСЛАВ
+БЕЛИЋ ЖИВКА
+БЕЛИЋ ЂОРЂЕ
+БЕЛИЋ ЂОРЂЕ
+БЕЛИЋ ЂУРИЦА
+БЕЛИЋ БОШКО
+БЕЛИЋ БОЖИДАР
+БЕЛИЋ БОЖИДАР
+БЕЛИЋ БОРИСЛАВ
+БЕЛИЋ БОРИСЛАВ
+БЕЛИЋ БОРИС
+БЕЛИЋ БОРИВОЈЕ
+БЕЛИЋ БОРИВОЈЕ
+БЕЛИЋ БРАНИСЛАВ
+БЕЛИЋ-БРКИЋ ВЛАДИСЛАВА
+БЕЛИЋ ДАНИЦА
+БЕЛИЋ ДАНИЈЕЛА
+БЕЛИЋ ДРАГАН
+БЕЛИЋ ДРАГИЦА
+БЕЛИЋ ДРАГУТИН
+БЕЛИЋ ДУШАН ДР
+БЕЛИЋ ДУШАН ДР
+БЕЛИЋ ДУШАН
+БЕЛИЋ ДУШАН
+БЕЛИЋ ДУШАН
+БЕЛИЋ ДУШКО
+БЕЛИЋ ДУШКО
+БЕЛИЋ ФЛОРИКА
+БЕЛИЋ ИЛИЈА
+БЕЛИЋ ЈОСИМ
+БЕЛИЋ ЈОВАНКА
+БЕЛИЋ ЈОВИЦА
+БЕЛИЋ ЈУЛИЈАНА
+БЕЛИЋ ЈУЛКА
+БЕЛИЋ ЛАЗАР
+БЕЛИЋ ЉУБИЦА
+БЕЛИЋ МАРИЦА
+БЕЛИЋ МИЛАН
+БЕЛИЋ МИЛАН
+БЕЛИЋ МИЛАН
+БЕЛИЋ МИЛАН
+БЕЛИЋ МИЛЕНА
+БЕЛИЋ МИЛИВОЈ
+БЕЛИЋ МИЛОШ
+БЕЛИЋ МИЛОРАД
+БЕЛИЋ МИРЈАНА
+БЕЛИЋ МИРОСЛАВ
+БЕЛИЋ НЕНАД
+БЕЛИЋ НЕСТОР
+БЕЛИЋ НИКОЛА
+БЕЛИЋ ПЕТАР
+БЕЛИЋ ПЕТАР
+БЕЛИЋ РАДИНКА
+БЕЛИЋ РАДОЈКА
+БЕЛИЋ РАДОСЛАВ
+БЕЛИЋ РАДОВАН
+БЕЛИЋ САВА
+БЕЛИЋ СЕНА
+БЕЛИЋ СИМА
+БЕЛИЋ СЛАВКО ДИПЛ ИНГ
+БЕЛИЋ СЛАВКО
+БЕЛИЋ СЛОБОДАНКА
+БЕЛИЋ СОФИЈА
+БЕЛИЋ СРЂАН
+БЕЛИЋ СТАНКО
+БЕЛИЋ СТЕВАН
+БЕЛИЋ СТОЈАНКА
+БЕЛИЋ СТОЈАН
+БЕЛИЋ СВЕТИСЛАВ
+БЕЛИЋ СВЕТИСЛАВ
+БЕЛИЋ СВЕТЛАНА
+БЕЛИЋ ТОДОР
+БЕЛИЋ ВЕРА
+БЕЛИЋ ВЕСНА
+БЕЛИЋ ВЛАДИСЛАВ
+БЕЛИЋ ВЛАДИСЛАВ
+БЕЛИЋ ВОЈИСЛАВ
+БЕЛИЋ ВУКА
+БЕЛИЋ ЗОРА
+БЕЛИМАРКОВИЋ СЛАВОЉУБ
+БЕЛИНИЋ ЂУРА
+БЕЛИНСКИ АЛЕКСАНДАР
+БЕЛИНСКИ СПАСЕНИЈА
+БЕЉАКОВ МИЛИЦА
+БЕЉАНСКИ ЖИВКА
+БЕЉАНСКИ ЖИВКА
+БЕЉАНСКИ ЂОРЂЕ
+БЕЉАНСКИ ЂОРЂЕ
+БЕЉАНСКИ ЂОРЂЕ
+БЕЉАНСКИ АНЂЕЛИЈА
+БЕЉАНСКИ АНКИЦА
+БЕЉАНСКИ-БАЈИЋ КАЋУША
+БЕЉАНСКИ БОРА
+БЕЉАНСКИ БОРА
+БЕЉАНСКИ БОРИВОЈ
+БЕЉАНСКИ ДРАГАНА
+БЕЉАНСКИ ДРАГИЦА
+БЕЉАНСКИ ЕМИЛИЈА
+БЕЉАНСКИ ГАВРА
+БЕЉАНСКИ ГОРДАНА
+БЕЉАНСКИ ЈЕЛИСАВЕТА
+БЕЉАНСКИ ЈОВАН
+БЕЉАНСКИ ЈОВАН
+БЕЉАНСКИ ЈУЛИЈАНА
+БЕЉАНСКИ ЛАЗАР
+БЕЉАНСКИ ЛАЗАР
+БЕЉАНСКИ ЛАЗАР
+БЕЉАНСКИ ЛЕПОЈКА
+БЕЉАНСКИ ЉУБОМИР
+БЕЉАНСКИ МИЛАН
+БЕЉАНСКИ МИЛЕНКО
+БЕЉАНСКИ МИЛОРАД
+БЕЉАНСКИ МИЛОРАД
+БЕЉАНСКИ МИЛУТИН
+БЕЉАНСКИ МИРЈАНА
+БЕЉАНСКИ ПАВЛЕ
+БЕЉАНСКИ РАДА
+БЕЉАНСКИ РАДМИЛА
+БЕЉАНСКИ РАДОВАН
+БЕЉАНСКИ РАНКО
+БЕЉАНСКИ РУЖИЦА
+БЕЉАНСКИ СЛОБОДАН
+БЕЉАНСКИ СТЕВАН
+БЕЉАНСКИ ТЕОДОР
+БЕЉАНСКИ ТОША
+БЕЉАНСКИ ВАСИЛИЈЕ
+БЕЉАНСКИ ВЕРА
+БЕЉАНСКИ ВЛАДИМИР
+БЕЉАНСКИ ВЛАДИСЛАВ
+БЕЉАНСКИ ВОЈИСЛАВ
+БЕЉАНСКИ ЗАГОРКА
+БЕЉАНСКИ ЗДЕНКА
+БЕЉИН ЖИВА
+БЕЉИН ЂОРЂЕ
+БЕЉИН БРАНИСЛАВА
+БЕЉИН ДИМИТРИЈЕ
+БЕЉИН МАРИЈА МАГДАЛЕНА
+БЕЉИН НЕДЕЉКО
+БЕЉИН РАДИВОЈ
+БЕЉИН РАДОСЛАВ
+БЕЉИН РУЖА
+БЕЉИН САВА
+БЕЉИН СОФИЈА
+БЕЉИН ВЛАДИМИР
+БЕЉИНАЦ ЗОРАН
+БЕЛОШЕВ НЕВЕНКА
+БЕЛОБРАДИЋ МИЛАН
+БЕЛОБРАДИЋ САВА
+БЕЛОБРК БРАНИСЛАВ
+БЕЛОБРК ДРАГОСЛАВ
+БЕЛОБРК ЛИВИЈЕ
+БЕЛОЦИЋ МИЛЕНКО
+БЕЛОЦИЋ РАДМИЛА
+БЕЛОИЦА РАДОСЛАВ
+БЕЛОИЦА ВИДАН
+БЕЛОПАВЛОВИЋ ДРАГА ДР
+БЕЛОПАВЛОВИЋ МИЛОЈКО
+БЕЛОПАВЛОВИЋ ЗОРАН ДР
+БЕЛОПАВЛОВИЋ ЗОРАН ДР
+БЕЛОСАВИЋ ЈЕЛИЦА
+БЕЛОТИ ИВАНКО
+БЕЛОВАРИ ИВАН
+БЕЛОВИЋ БИЉАНА
+БЕЛОВИЋ РАДА
+БЕЛОВИЋ СТЕВАН
+БЕЛУШЕВИЋ БОЖИДАР
+БЕЛУШЕВИЋ НОВИЦА
+БЕЛУЖИЋ ДАРИНКА
+БЕЛУЖИЋ СТЈЕПАН
+БЕМ ИВАН
+БЕМ ЈОВАН
+БЕМ КАРЛО
+БЕМ МИРОСЛАВ
+БЕМИЛЕР МАГДАЛЕНА
+БЕНЧИК ЂУЛА
+БЕНЧИК ИЛОНКА
+БЕНА МИЛОСАВА
+БЕНАШИЋ ВИНКО
+БЕНАК ПАЛ
+БЕНАРИК ЛАСЛО
+БЕНАРИК МАГДАЛЕНА
+БЕНЦ БРАНИСЛАВА
+БЕНЦ ДРАГАН
+БЕНЦЕ МАРИЈА
+БЕНЦЕ МИХАЉ
+БЕНЦЕ МИКЕШ
+БЕНЦЕТИЋ АНДРИЈА
+БЕНЦЕТИЋ ЉУДЕВИТ
+БЕНЦУН ВЕЛИНКА
+БЕНДЕК МИЛАН
+БЕНЕШ ЉУДМИЛА
+БЕНЕЖАН ЉУБИЦА
+БЕНЕДЕКОВИЋ ИВАН
+БЕНГИН-ЂУРКИЋ НЕЗА
+БЕНГИН БОЖИДАР
+БЕНГИН ДОБРИНКА
+БЕНГИН ДУШАН
+БЕНГИН КОВИЦА
+БЕНГИН МИЛАН
+БЕНИЧАК КАРЛО
+БЕНИЧАК МАГДАЛЕНА
+БЕНИШЕК ДРАГУТИН
+БЕНИЋ ЕВА
+БЕНИЋ ГРУЈИЦА
+БЕНИЋ ПЕТАР
+БЕНИЋ СЕКУЛА
+БЕНИЋ ЗДЕНКО
+БЕНИН ЖИВОЈИН
+БЕЊА КАТАРИНА
+БЕЊАК ДРАГОСЛАВА
+БЕЊАК ЕВИЦА
+БЕНКА МАРИЈА
+БЕНКА МИХАИЛО
+БЕНКЕ ЕЛЗА
+БЕНКОВИЋ ЈОЦА
+БЕНКОВИЋ ЈОЦА
+БЕНО ТИБОР
+БЕНОВИЋ ЈОСИП
+БЕНОВИЋ СТАНА
+БЕОЧАНИН ЈОВАН
+БЕОЧАНИН МИОДРАГ
+БЕОЧАНИН ПАВЛЕ
+БЕОДРАНСКИ ДРАГОМИР
+БЕОДРАНСКИ СТОЈАН
+БЕОКОВИЋ ДАМИР
+БЕР АЛЕКСИЈЕ
+БЕР ФРАЊО
+БЕРЧЕК ЂЕРЂ
+БЕРЧЕК БОЖИДАР
+БЕРЧЕК ФРАЊА
+БЕРЧЕК ЛАДИСЛАВ
+БЕРЧЕК МАРИЈА
+БЕРЧЕК МИХАИЛО
+БЕРЧЕК ОСКАР
+БЕРЧЕК САНИСЛО
+БЕРЋАН МИРЈАНА
+БЕРЋАН ПЕТАР
+БЕРЋАН СЛАВКО
+БЕРА ЂОРЂО
+БЕРА ДРАГАН
+БЕРАК НЕБОЈША
+БЕРАНОВИЋ АЛЕКСАНДАР
+БЕРАР ЖИВАНА
+БЕРАР БОРИВОЈ
+БЕРАР БРАНИСЛАВ
+БЕРАР БРАНИСЛАВ
+БЕРАР ДУШАНКА
+БЕРАР МИЛАН
+БЕРАР МИЛАН
+БЕРАР МИЛАН
+БЕРАР РАДИВОЈ
+БЕРАР СЛОБОДАН
+БЕРАР СЛОБОДАН
+БЕРАР ТИМА
+БЕРАР ВЛАДИМИР
+БЕРАРОВ ЂУРИЦА
+БЕРБАКОВ ЉУБИЦА
+БЕРБАКОВ МАРА
+БЕРБАКОВ МИЛОШ
+БЕРБАКОВ ПЕТАР
+БЕРБАКОВ СТЕВАН
+БЕРБАТОВИЋ ЖАРКО
+БЕРБАТОВИЋ МИРЈАНА
+БЕРБЕР ЉИЉАНА
+БЕРБЕР СТЕВАН
+БЕРБЕРИЋ ЈЕЛИСАВЕТА
+БЕРБЕРИЋ ЈОВАН
+БЕРБЕРИЋ ЛАЗАР
+БЕРБЕРИЋ МИЛУТИН
+БЕРЕШ ЂОРЂЕ
+БЕРЕШ ДАНИЛО
+БЕРЕШ ИЛОНА
+БЕРЕШ ЈОСИП
+БЕРЕШ ЈУЛИШКА
+БЕРЕШ КАРОЉ
+БЕРЕШ КОРНЕЛ
+БЕРЕШ ТИБОР
+БЕРЕШ-ТОТ КОРНЕЛ
+БЕРЕХАНИЋ ЈУЛКА
+БЕРЕЊИ ЕУГЕН
+БЕРЕЊИ ЈАНОШ
+БЕРЕЊИ ЈЕЛЕНА
+БЕРЕЊИ МИКЛОШ
+БЕРЕЊИ МИКЛОШ
+БЕРЕЊИ РОЗАЛИЈА
+БЕРЕЊИ СТЕВАН
+БЕРЕЊИ ТИБОР
+БЕРЕНТА ЈОСИП
+БЕРЕНТЕ ИЛОНА
+БЕРЕТИЋ АНТУН
+БЕРЕТИЋ ЛАДИСЛАВ
+БЕРЕТИЋ МАРГИТА
+БЕРЕТКА ШАНДОР
+БЕРЕТКА ГОРДАНА
+БЕРЕТКА ЈУЛИЈАНА
+БЕРЕТКА КАРЛО
+БЕРЕТКА МИХАЉ
+БЕРГЕЛ ЂУРА
+БЕРГЕЛ АНТУН
+БЕРГЕР ФРАЊА ДР СТОМАТОЛОГ
+БЕРГЕР МИРОСЛАВ
+БЕРИША АЗИС
+БЕРИША БОЈКА
+БЕРИША ДЕМО
+БЕРИША ФАИК
+БЕРИША МИРВЕТА
+БЕРИША РАГИБ
+БЕРИЋ ЖИВКО
+БЕРИЋ АНЂЕЛКО
+БЕРИЋ АНТА
+БЕРИЋ АНТА
+БЕРИЋ БЕРИСЛАВ ДР ПРОФ
+БЕРИЋ БИЉАНА
+БЕРИЋ БОЖИДАР
+БЕРИЋ БОГДАН
+БЕРИЋ ДРАГИЊА
+БЕРИЋ ДУШАНКА
+БЕРИЋ ДУШАН
+БЕРИЋ ГОЈКО
+БЕРИЋ ГОЈКО
+БЕРИЋ ГОЈКО
+БЕРИЋ ИЛИЈА
+БЕРИЋ ЈОРДАНА
+БЕРИЋ ЈОВО
+БЕРИЋ КОСТА
+БЕРИЋ МАРА
+БЕРИЋ-МАСКАРЕЛ КАРМЕНСИТА ДР
+БЕРИЋ МИЛАН
+БЕРИЋ МИЛАН
+БЕРИЋ МИЛАН
+БЕРИЋ МИЛИЦА МР
+БЕРИЋ МИЛИВОЈ
+БЕРИЋ МИЛОРАД
+БЕРИЋ МИЛОРАД
+БЕРИЋ МИЛОВАН
+БЕРИЋ НАДА
+БЕРИЋ НИКОЛА
+БЕРИЋ ПЕРСИДА
+БЕРИЋ ПЕТАР
+БЕРИЋ РАДИВОЈ
+БЕРИЋ РАЈКО
+БЕРИЋ РАЈКО
+БЕРИЋ САВА
+БЕРИЋ ТОДЕ
+БЕРИЋ ВЕРА
+БЕРИЋ ВЕРИЦА
+БЕРИЋ ВЕСНА ДР
+БЕРИЋ ЗОРИЦА
+БЕРИСАВЉЕВИЋ РАЈКО
+БЕРИСАВЉЕВИЋ ЗОРИЦА
+БЕРКЕШ ИШТВАН
+БЕРКИ ЈОЖЕФ
+БЕРКИЋ РУЖИЦА
+БЕРКОВИЋ БЕРИСЛАВ
+БЕРКОВИЋ ЏАФЕР
+БЕРКОВИЋ МИРОСЛАВ
+БЕРКОВИЋ СЛАВОЉУБ
+БЕРЛАНЧИЋ ДАНИЈЕЛ
+БЕРЛОВАН ГЕОРГИНА
+БЕРНАЦКИ АДОЛФ
+БЕРНАРД ЂОРЂЕ
+БЕРНХАРД ЖАРКО
+БЕРНХАРД БОЖИДАР
+БЕРНХАРД БОЈАНА
+БЕРНХАРД ФИЛИП
+БЕРНХАРД ИЛИЈА
+БЕРНХАРД ЉУБАН
+БЕРНХАРД МАРИЈА
+БЕРНХАРД МИЛАН
+БЕРНХАРД МИЛИЦА ДР
+БЕРНХАРД МИЛОРАД
+БЕРНХАРД РАДОСЛАВ
+БЕРНХАРД РАЈКО
+БЕРНХАРД СИМО
+БЕРНХАРД ТРИВО
+БЕРОШ ЉУБИЦА
+БЕРТА ЈАНОШ
+БЕРТА МИЛИЦА
+БЕРТА ПАЛ
+БЕРТА ПЕТАР
+БЕРТИЋ ТАТЈАНА
+БЕРТИЋ ЗВОНКО
+БЕРТОК ЈАНОШ
+БЕРТОК ЈУЛИЈАНА
+БЕРТОК ЛАЈОШ
+БЕРТРОН ЛЕНКЕ
+БЕРУС ВЈЕКОСЛАВ
+БЕРЗА АЛЕКСАНДАР
+БЕСЕДЕШ ЈОЖЕФ
+БЕСЕРМЕЊИ ЂОРЂЕ
+БЕСЕРМЕЊИ БРАНКО
+БЕСЕРМЕЊИ ДИОНИЗИЈЕ
+БЕСЕРМЕЊИ ЕУФЕМИЈА
+БЕСЕРМЕЊИ ИРЕНА
+БЕСЕРМЕЊИ ИВАН
+БЕСЕРМЕЊИ КИРИЛ
+БЕСЕРМЕЊИ КСЕНИЈА
+БЕСЕРМЕЊИ ЛЕОНА
+БЕСЕРМЕЊИ МЕЛАНИЈА
+БЕСЕРМЕЊИ ОЛГА
+БЕСЕРМЕЊИ ВЛАДИМИР
+БЕСЕРМЕЊИ ВЛАДИМИР
+БЕСКОРОВАЈНИ ВЛАДИМИР
+БЕСЛАЋ ДРАГАНА
+БЕСЛАЋ МИЛУТИН
+БЕСЛАЋ РАДМИЛА
+БЕСНИЛОВ БОШКО
+БЕСНИЛОВ ОЛИВЕРА
+БЕСУ СИЛА
+БЕСУ ТОДОР
+БЕСУ ТРАНДАФИР
+БЕТИ СТАНКО АДВОКАТ
+БЕУЦ ЖИВАН
+БЕУЦ МИРА
+БЕУЦ ОЛГА
+БЕЗДАН АНА
+БЕЗДАН ФРАЊА
+БЕЗДАН ИЛДИКО
+БЕЗДАН ИРЕНА
+БЕЗДАН ЈОСИП
+БЕЗЕНШЕК НАТАЛИЈА
+БЕЗИ КАТИЦА
+БЕЗЈАК МИЛАНКА
+БЕЗЈАК ЗДЕНКО
+БЕЗУЉ ЂОРЂЕ
+БЕЗУЉ ЉИЉАНА ПРОФЕСОР
+БИЧАК ИГНАЦ
+БИЧАК ЈУСТИНА
+БИЧАН АНКА
+БИЧАН ИВИЦА
+БИЧКЕИ ТЕРЕЗИЈА
+БИЋАНИЋ ДАНИЦА
+БИЋАНИЋ КРИСТИНА
+БИЋАНИЋ МАРИЈА
+БИЋАНИЋ ПЕТАР
+БИЋАНИЋ ПЕТРА
+БИБЕР СТЕВАН
+БИБЕРЏИЋ РАДОМИР
+БИБИЋ АЛЕКСАНДАР
+БИБИЋ ПАВЛЕ
+БИБИЋ СОФИЈА
+БИБИЋ СТЈЕПАН
+БИБИН ЈУГОСЛАВ
+БИБИН МИЛИНКО
+БИЦИКИН МИЛАН
+БИЦК ДРАГУТИН
+БИЦО РУЖИЦА
+БИЦОК ЕТЕЛКА
+БИЦОК МАРГИТА
+БИЦОК МАРГИТА
+БИЕЛЧИК ЛИДИЈА
+БИГА БОРИСЛАВ
+БИГА МИЛАН
+БИГА НАДА
+БИГА СМИЉА
+БИГОВИЋ-ШИРОКИ ЗОРИЦА
+БИГОВИЋ АНА
+БИГОВИЋ ВОЈИН
+БИГОВИЋ ВОЈИСЛАВ
+БИХОРАЦ МИРЈАНА
+БИЈАНИЋ МИЛЕНКО
+БИЈАНКО ПЕТАР
+БИЈЕДИЋ МИЛОРАД
+БИЈЕЛИЋ АЛЕКСА
+БИЈЕЛИЋ БРАНИСЛАВ
+БИЈЕЛИЋ ДАРА
+БИЈЕЛИЋ ИВИЦА
+БИЈЕЛИЋ ЈОВАН
+БИЈЕЛИЋ ЈОВИЦА
+БИЈЕЛИЋ МАТО
+БИЈЕЛИЋ МИЛАН
+БИЈЕЛИЋ МИЛЕ
+БИЈЕЛИЋ МИЛЕ
+БИЈЕЛИЋ МИЛЕ
+БИЈЕЛИЋ МИЛЕ
+БИЈЕЛИЋ НОВАК
+БИЈЕЛИЋ ПЕРО
+БИЈЕЛИЋ РИСТО
+БИЈЕЛИЋ СТОЈАН
+БИЈЕЛИЋ СТОЈАН
+БИЈЕЉАЦ НЕДЕЉКО ДИПЛ ИНГ
+БИЈЕЛОВИЋ НОВКА
+БИЈУКЛИЋ ДРАГОСЛАВ
+БИЈУКЛИЋ ДРАГОСЛАВ
+БИЈУКЛИЋ МАРИНКО
+БИКАР ДРАГАНА
+БИКАР ФЕДОРА
+БИКАРЕВИЋ ДРАГАН
+БИКИЋ ЖИВАН
+БИКИЋ ЂОРЂЕ
+БИКИЋ ДАНИЦА
+БИКИЋ ДУШАН
+БИКИЋ КОНСТАНТИН
+БИКИЋ ЉИЉАНА
+БИКИЋ МИЛОВАН
+БИКИЋ МИОДРАГ
+БИКИЋ НИКОЛА
+БИКИЋ ПЕРА
+БИКИЦКИ ЂОРЂЕ
+БИКИЦКИ АЛЕКСАНДАР
+БИКИЦКИ БРАНИСЛАВ
+БИКИЦКИ ЈЕЛИЦА
+БИКИЦКИ ЈЕЛИЦА
+БИКИЦКИ ЈОВАН
+БИКИЦКИ ЈОВАН
+БИКИЦКИ КАТАРИНА
+БИКИЦКИ МИЛОШ
+БИКИЦКИ МИРОСЛАВ
+БИКИЦКИ РАДОЈКА
+БИКИЦКИ СИНИША
+БИКИЦКИ СИНИША
+БИКИЦКИ ВАСИЛИЈЕ
+БИКИТ МАГДОЛНА
+БИКИТ НОРБЕРТ
+БИКОВИЋ ЉУБИЦА
+БИКОВИЋ ВЛАДИМИР
+БИЛЧАР ХИЛДА
+БИЛЧАР ВЕРА
+БИЛА МИРКО
+БИЛАК МИЛАН
+БИЛАК НАДА
+БИЛАЛОВИЋ САБАХУДИН
+БИЛАНЏИЈА ДАНИЦА
+БИЛАНИЋ НАДА
+БИЛАНОВИЋ ДУШАН
+БИЛАНОВИЋ ГОРДАНА
+БИЛАНОВИЋ ПЕРО
+БИЛАС СМИЉА
+БИЛБИЈА БОГДАН
+БИЛБИЈА ДЕЈАН
+БИЛБИЈА ДРАГАН
+БИЛБИЈА ЈАСНА
+БИЛБИЈА МИЛАН
+БИЛБИЈА СМИЉА
+БИЛЕК МИЛИЦА
+БИЛЕР ЂОРЂЕ
+БИЛИ ЈУЛИЈА
+БИЛИЧИЋ СТЈЕПАН
+БИЛИЋ АНТЕ
+БИЛИЋ БРАНКИЦА
+БИЛИЋ ГОРДАНА
+БИЛИЋ ИВАН ДИПЛ ИНГ
+БИЛИЋ ИВАН
+БИЛИЋ ЈАКОВ
+БИЛИЋ ЈЕЛЕНА
+БИЛИЋ МИЛАН
+БИЛИЋ МИЛАН
+БИЛИЋ МИЛЕНКО
+БИЛИЋ МИЛОРАД
+БИЛИЋ МИРО
+БИЛИЋ ПРЕДРАГ
+БИЛИЋ СРЂАН
+БИЛИЋ СТЈЕПАН
+БИЛИЋ СТРАИН
+БИЛИЦКИ ЛАСЛО
+БИЛИНОВИЋ БОРИС
+БИЛИНОВИЋ САША
+БИЉАНИЋ РАДОЈКА
+БИЉЊА ВЛАДИМИР
+БИЛОКАПИЋ ИВАН
+БИЛОКАПИЋ ЈУРЕ
+БИЛОКАПИЋ СТЕВАН
+БИЛУШИЋ СЛАВИЦА
+БИН АЛЕКСАНДАР
+БИН МУХАМЕТ
+БИНАКАЈ БАЈРАМ
+БИНДАС ЂУРА
+БИНДАС ДРАГИЦА
+БИНДАС МИХАЈЛО
+БИНДЕР АРАНКА
+БИНГОЛД ДРАГУТИН
+БИНГОЛД КАРЛО
+БИНГОЛД РУДОЛФ
+БИНГУЛАЦ ЖИВКО
+БИНГУЛАЦ БОЈАНА
+БИНГУЛАЦ МИРЈАНА
+БИОНДИЋ ЈЕЛЕНА
+БИОРАЦ ДЕСИМИР
+БИОРАЦ РАНКО
+БИРЋА СРЕТКО
+БИРЦЛИН РУЖИЦА
+БИРДИЋ БЕЛА
+БИРЕШ ЛЕНКА
+БИРЕШ РОЗАЛИЈА
+БИРГЕМАЈЕР МАРИЈА
+БИРХМАН АНА
+БИРИЊИ ДЕНЕШ
+БИРИЊИ ЕУГЕН
+БИРМАНАЦ ДУШАН
+БИРО АНТОН
+БИРО ГИЗЕЛА
+БИРО ГИЗЕЛА
+БИРО ИШТВАН
+БИРО ИЛОНА
+БИРО ИМРЕ
+БИРО ИМРЕ
+БИРО КАТАЛИН
+БИРО ЛАЈОШ
+БИРО МИКЛОШ
+БИРО МИЛОШ
+БИРОШЕВИЋ МИЛИЦА
+БИРОВЉЕВ БРАНИМИР
+БИРОВЉЕВ БРАНИСЛАВ
+БИРОВЉЕВ МИЛАН
+БИРОВЉЕВ МИЛОРАД
+БИРОВЉЕВ МИЛОСАВ
+БИРОВЉЕВ МИРОСЛАВ
+БИРОВЉЕВ ТОДОР ДР
+БИРОВЉЕВИЋ ДРАГАН
+БИРОВЉЕВИЋ ЉУБИЦА
+БИРТА ВЛАДИМИР
+БИРВАЛСКИ ДУШАН
+БИСЕРЧИЋ АНДРИЈА
+БИСЕРЧИЋ ДРАГО
+БИСЕРЧИЋ МИЛКАНА
+БИСИЋ ЈОВАН
+БИСТРИЦАН ОЛГА
+БИСТРОВИЋ АНТОН
+БИТИЋ ЏЕМАИЛ
+БИТО СТЕВАН
+БИУК МАРИЈА
+БИВОЛАРЕВИЋ ВУКАШИН
+БИЗЈАК РЕНАТО
+БИЗУМИЋ ГЕОРГИЈЕ
+БИЗУМИЋ ЈЕЛКА
+БИЗУМИЋ ЛАЗАР
+БИЗУМИЋ МИЛАН
+БЈЕДИЋ ДЕСАНКА
+БЈЕДОВ ЂУКА
+БЈЕДОВ ДРАГО
+БЈЕДОВ НИКОЛА
+БЈЕГОВИЋ ДАНИЛКА
+БЈЕГОВИЋ ГОЈКО
+БЈЕКИЋ ЛУКА
+БЈЕКИЋ ОСТОЈА
+БЈЕКОВИЋ МИРЈАНА
+БЈЕКОВИЋ РАДЕ
+БЈЕЛАЦ ЂУРА
+БЈЕЛАЦ ДРАГАН
+БЈЕЛАЦ ДРАГАН
+БЈЕЛАЦ ЕТЕЛКА
+БЈЕЛАЈАЦ ДРАГАН
+БЈЕЛАЈАЦ МИЉА
+БЈЕЛАЈАЦ СВЕТОЗАР
+БЈЕЛАКОВИЋ РАДИВОЈЕ
+БЈЕЛАНОВИЋ МИЛОСАВ
+БЈЕЛАНОВИЋ МИРКО
+БЈЕЛАНОВИЋ РАЈКО
+БЈЕЛАНОВИЋ СТАНИМИР
+БЈЕЛАНОВИЋ ТАЊА
+БЈЕЛЕТИЋ БОГДАН
+БЈЕЛЕТИЋ ЉУБИЦА
+БЈЕЛЕТИЋ ЛУКА
+БЈЕЛИ-ХАЏИЋ ЈЕЛИЦА
+БЈЕЛИЋ ЂУРА
+БЈЕЛИЋ БОРИСЛАВ
+БЈЕЛИЋ БРАНКО
+БЈЕЛИЋ ДАНИЛКА
+БЈЕЛИЋ ДМИТАР
+БЈЕЛИЋ ГОРДАНА
+БЈЕЛИЋ ЈОВАН
+БЈЕЛИЋ КАТИЦА
+БЈЕЛИЋ КРСТАН
+БЈЕЛИЋ ЉУБОМИР
+БЈЕЛИЋ МИЛАН
+БЈЕЛИЋ МИРКО
+БЈЕЛИЋ НЕДЕЉКО
+БЈЕЛИЋ ОЛГА
+БЈЕЛИЋ ПЕТАР
+БЈЕЛИЋ ПЕТАР
+БЈЕЛИЋ СЛАВКО
+БЈЕЛИЋ СЛОБОДАН
+БЈЕЛИЋ СТЕВО
+БЈЕЛИЋ СВЕТЛАНА
+БЈЕЛИЋ ВЕРА
+БЈЕЛИЋ ВЛАДИМИР
+БЈЕЛИЦА ЧЕДО
+БЈЕЛИЦА ЂОРЂИЈА
+БЈЕЛИЦА АЛЕКСА
+БЈЕЛИЦА БОГДАН
+БЈЕЛИЦА БРАНИСЛАВ
+БЈЕЛИЦА ДАНИЛО
+БЈЕЛИЦА ДОБРИВОЈЕ
+БЈЕЛИЦА ДРАГУТИН
+БЈЕЛИЦА ГОЈКО
+БЈЕЛИЦА ГОЈКО
+БЈЕЛИЦА ЈАДРАНКА
+БЈЕЛИЦА ЈАДРАНКА
+БЈЕЛИЦА ЛУКА
+БЈЕЛИЦА МИЛАН
+БЈЕЛИЦА МИЛИЦА
+БЈЕЛИЦА МИОДРАГ
+БЈЕЛИЦА НАДА
+БЈЕЛИЦА-ПОПОВИЋ ЉУБИЦА
+БЈЕЛИЦА РАЈКО
+БЈЕЛИЦА РАКО
+БЈЕЛИЦА РАТКО
+БЈЕЛИЦА САВКА
+БЈЕЛИЦА СЛАВКО
+БЈЕЛИЦА СПАСОЈЕ
+БЈЕЛИЦА ТИГРАН
+БЈЕЛИЦА ВЕЉКО
+БЈЕЛИЦА ВЕЉКО
+БЈЕЛИЦА ВОЈО
+БЈЕЛИЦА ВУКОСАВА
+БЈЕЛИЦА ЗОРАН
+БЈЕЛИНИЋ ДАРИНКА
+БЈЕЛИНИЋ ЈОВО
+БЈЕЛИВУК ГОРАН
+БЈЕЛИВУК ВЛАДИМИР
+БЈЕЉАЦ АНА
+БЈЕЉАЦ БОРА
+БЈЕЉАЦ БРАНКО
+БЈЕЉАЦ МИЛАН
+БЈЕЉАЦ МИЛОРАД
+БЈЕЛОШ ДАНИЦА
+БЈЕЛОШ МИРОСЛАВ
+БЈЕЛОШ МИРОСЛАВ
+БЈЕЛОШЕВИЋ СЛАВКО
+БЈЕЛОБАБА АЛЕКСАНДАР
+БЈЕЛОБАБА ДАРА
+БЈЕЛОБРК БОШКО
+БЈЕЛОБРК БОШКО
+БЈЕЛОБРК ГОРАН
+БЈЕЛОБРК ЛАЗАР
+БЈЕЛОБРК ЛАЗАР
+БЈЕЛОБРК МАНЕ
+БЈЕЛОБРК МАРКО
+БЈЕЛОБРК МИЛАН
+БЈЕЛОБРК МИЛОШ
+БЈЕЛОБРК ПЕТАР
+БЈЕЛОБРК-ВАРГА ЈАСНА
+БЈЕЛОГРЛИЋ ЂОРЂЕ
+БЈЕЛОГРЛИЋ БЛАГОЈЕ
+БЈЕЛОГРЛИЋ ДЕЈАНА
+БЈЕЛОГРЛИЋ ДРАГАН
+БЈЕЛОГРЛИЋ ЉУБИЦА
+БЈЕЛОГРЛИЋ ЉУБО
+БЈЕЛОГРЛИЋ МИТАР
+БЈЕЛОГРЛИЋ МОМЧИЛО
+БЈЕЛОТОМИЋ ЈОВО
+БЈЕЛОВИЋ РАТКО
+БЈЕЛОВУК МИРЈАНА
+БЈЕЛОВУК СЛАВИЦА
+БЈЕЛОВУК СЛАВКО
+БЛАШКО ТИБОР
+БЛАШКОВИЋ ФРАЊО
+БЛАШКОВИЋ ЛАСЛО
+БЛАШКОВИЋ ПАВЛЕ
+БЛАЖАН ФРАЊО
+БЛАЖАН ИВО
+БЛАЖАН МАРКО
+БЛАЖАН СЛАВКО
+БЛАЖЕК ГУСТАВ
+БЛАЖЕК ЈЕЛЕНА
+БЛАЖЕК МАРИЈА
+БЛАЖЕК МИХАЉ
+БЛАЖЕВА ОЛГА
+БЛАЖЕВИЋ АНДРИЈА
+БЛАЖЕВИЋ ДРАГАНА
+БЛАЖЕВИЋ ДРАГО
+БЛАЖЕВИЋ ДУШАНКА
+БЛАЖЕВИЋ ДУШИЦА
+БЛАЖЕВИЋ ДУБРАВКА
+БЛАЖЕВИЋ ФРАЊО
+БЛАЖЕВИЋ МИОДРАГ
+БЛАЖЕВИЋ РАДЕ ДР ЛЕКАР
+БЛАЖЕВИЋ СТЈЕПАН
+БЛАЖЕВИЋ СУЗАНА
+БЛАЖЕВИЋ ВЕРА
+БЛАЖЕВИЋ ЗОРАН
+БЛАЖИЋ ЂОРЂЕ
+БЛАЖИЋ БОШКО
+БЛАЖИЋ БРАНИСЛАВА
+БЛАЖИЋ ДРАГАН
+БЛАЖИЋ ДРАГАН
+БЛАЖИЋ ДРАГОЉУБ
+БЛАЖИЋ ХРИСТИНА
+БЛАЖИЋ ИВАН
+БЛАЖИЋ ЈЕЛЕНА
+БЛАЖИЋ КСЕНИЈА
+БЛАЖИЋ МАРИЈА
+БЛАЖИЋ МЕТОДИЈЕ
+БЛАЖИЋ МИХАЈЛО
+БЛАЖИЋ САВА
+БЛАЖИЋ САВКО
+БЛАЖИЋ СВЕТОЗАР
+БЛАЖИЋ ВИДА
+БЛАЖИК АНТАЛ
+БЛАЖИН ДРАГИЊА
+БЛАГОЈЕВ ЖИВКО
+БЛАГОЈЕВ ЖИВКО
+БЛАГОЈЕВ ЂОРЂЕ
+БЛАГОЈЕВ ИВАН
+БЛАГОЈЕВ МИЛИВОЈ
+БЛАГОЈЕВ МИЛОРАД
+БЛАГОЈЕВ МИТА
+БЛАГОЈЕВ РАДА
+БЛАГОЈЕВ РАДОСЛАВ
+БЛАГОЈЕВ СТЕВАН
+БЛАГОЈЕВ ВЕЛИМИР
+БЛАГОЈЕВИЋ ЧЕДО
+БЛАГОЈЕВИЋ ЖАРКО
+БЛАГОЈЕВИЋ ЂОРЂЕ
+БЛАГОЈЕВИЋ ЂОРЂЕ
+БЛАГОЈЕВИЋ АНА
+БЛАГОЈЕВИЋ БЕЋКО
+БЛАГОЈЕВИЋ БОРА
+БЛАГОЈЕВИЋ БОРИСЛАВ
+БЛАГОЈЕВИЋ БОРИВОЈЕ
+БЛАГОЈЕВИЋ БОРИВОЈ
+БЛАГОЈЕВИЋ БОРКО
+БЛАГОЈЕВИЋ БРАНИСЛАВ
+БЛАГОЈЕВИЋ ДАНИЦА
+БЛАГОЈЕВИЋ ДРАГОМИР
+БЛАГОЈЕВИЋ ДУШАН ДИПЛ ИНГ
+БЛАГОЈЕВИЋ ДУШАН
+БЛАГОЈЕВИЋ ЈАГИЦА
+БЛАГОЈЕВИЋ ЈАНКО
+БЛАГОЈЕВИЋ КРСТАН
+БЛАГОЈЕВИЋ ЉУБОМИР
+БЛАГОЈЕВИЋ МАРИНКО
+БЛАГОЈЕВИЋ МИКА
+БЛАГОЈЕВИЋ МИКА
+БЛАГОЈЕВИЋ МИЛАН
+БЛАГОЈЕВИЋ МИЛАН
+БЛАГОЈЕВИЋ МИЛАН
+БЛАГОЈЕВИЋ МИЛЕНА
+БЛАГОЈЕВИЋ МИЛИЦА
+БЛАГОЈЕВИЋ МИЛИВОЈЕ
+БЛАГОЈЕВИЋ МИЛОШ
+БЛАГОЈЕВИЋ МИРОСЛАВ
+БЛАГОЈЕВИЋ МЛАЂА
+БЛАГОЈЕВИЋ МОМИР
+БЛАГОЈЕВИЋ НАДА
+БЛАГОЈЕВИЋ ПРЕДРАГ
+БЛАГОЈЕВИЋ РАДЕ
+БЛАГОЈЕВИЋ РАДОМИР
+БЛАГОЈЕВИЋ СЕРАФИНА
+БЛАГОЈЕВИЋ СЛОБОДАН
+БЛАГОЈЕВИЋ СЛОБОДАН
+БЛАГОЈЕВИЋ СЛОБОДАН
+БЛАГОЈЕВИЋ СНЕЖАНА
+БЛАГОЈЕВИЋ СЊЕЖАНА
+БЛАГОЈЕВИЋ СТАНКО
+БЛАГОЈЕВИЋ СТЕВО
+БЛАГОЈЕВИЋ СВЕТКО
+БЛАГОЈЕВИЋ ВЛАДИСЛАВ
+БЛАГОВИЋ МАРИЈА
+БЛАХО ЈОЖЕФ
+БЛАНАРИК ШАНДОР
+БЛАНАРИК ЂУРА
+БЛАНАРИК АЛЕКСАНДАР
+БЛАНАРИК ЕТЕЛКА
+БЛАНАРИК ИЛОНА
+БЛАНАРИК ЈОЖЕФ
+БЛАНАРИК ЛАДИСЛАВ
+БЛАНАРИК ОЛГА
+БЛАНАРИК СТЕВАН
+БЛАНАРИК ТИБОР
+БЛАНАРИК ВАЛЕРИЈА
+БЛАНУША БРАНКО
+БЛАНУША ИЛИЈА
+БЛАНУША РАДЕ
+БЛАНУША ВЕРА
+БЛАНУША ЗОРАН
+БЛАТЕШИЋ МИОЉКА
+БЛАТЕШИЋ РАЈКО
+БЛАТНИЦКИ ВЕСНА
+БЛЕЧИЋ ЈЕЛЕНА
+БЛЕЧИЋ ЉУБИЦА
+БЛЕЧИЋ МИЛАДИН
+БЛЕЧИЋ МИОДРАГ
+БЛЕЧИЋ РАДОСАВ МР
+БЛЕЧИЋ САША
+БЛЕХЛ ЈОВАНКА
+БЛИТВА ЂОРЂЕ
+БЛИТВА БРАНКО
+БЛИЗАНАЦ ДОБРИВОЈ
+БЛИЗАНАЦ ДРАГОЉУБ
+БЛИЗАНАЦ ДУШАН
+БЛИЗАНАЦ ЈЕЛКИЦА
+БЛИЗАНАЦ ЛЕПОСАВА
+БЛИЗАНАЦ МИЛОРАД
+БЛИЗАНАЦ МИРОСЛАВ
+БЛИЗАНАЦ НЕНАД
+БЛИЗАНАЦ САВА
+БЛИЗАНАЦ ВУЈИЦА
+БЛОЖИЋ ДИМИТРИЈЕ
+БЛУМЕНШАЈН КАРЛО
+БОЧАН ИВАН
+БОЧКОР НИКОЛА
+БОШЧАНИН БОШКО
+БОШКИЋ БОРКА
+БОШКИЋ МИРЈАНА
+БОШКИЋ НАТАША
+БОШКИЋ ЗОРА
+БОШКОВ ЖАРКО ДИПЛ ИНГ
+БОШКОВ ЖИВОЈИН
+БОШКОВ-ЈАГОДИЋ ЗОРИЦА
+БОШКОВ ЉУБИНКА
+БОШКОВ ЛУКА
+БОШКОВ МИЛИВОЈЕ
+БОШКОВ МИЛОШ
+БОШКОВ МИРЈАНА
+БОШКОВ САВКА
+БОШКОВ СОФИЈА
+БОШКОВ СРЕТЕН
+БОШКОВ СТЕВАН
+БОШКОВ СТОЈАН
+БОШКОВ ВЕСНА
+БОШКОВ ВУЈАДИН
+БОШКОВИЋ ЖЕЉКО
+БОШКОВИЋ ЖИВКО
+БОШКОВИЋ АЛЕКСАНДАР
+БОШКОВИЋ АЛЕКСА
+БОШКОВИЋ АЛЕКСА
+БОШКОВИЋ АНЂА
+БОШКОВИЋ БИЉАНА
+БОШКОВИЋ БЛАГОЈЕ
+БОШКОВИЋ БОШКО
+БОШКОВИЋ БОГДАНКА
+БОШКОВИЋ БОГДАН
+БОШКОВИЋ БОРИС
+БОШКОВИЋ БУДИМИР
+БОШКОВИЋ ЦВЕТКО
+БОШКОВИЋ ДАНИЛО
+БОШКОВИЋ ДЕСАНКА
+БОШКОВИЋ ДРАГАН
+БОШКОВИЋ ДРАГИЦА
+БОШКОВИЋ ДРАГОЈЛО
+БОШКОВИЋ ДРАГОЉУБ
+БОШКОВИЋ ДРАГОМИР
+БОШКОВИЋ ДРАГОМИР
+БОШКОВИЋ ДУШАН
+БОШКОВИЋ ДУШАН
+БОШКОВИЋ ДУШКО
+БОШКОВИЋ ГОРАН
+БОШКОВИЋ ГОРАН
+БОШКОВИЋ ХЕДВИГА
+БОШКОВИЋ ЈОВАН
+БОШКОВИЋ КРСТО
+БОШКОВИЋ ЉИЉАНА
+БОШКОВИЋ ЉУБИША
+БОШКОВИЋ ЉУБИНКА
+БОШКОВИЋ ЉУБОМИР
+БОШКОВИЋ ЉУБОМИР
+БОШКОВИЋ МИЛЕВА
+БОШКОВИЋ МИЛИВОЈЕ
+БОШКОВИЋ МИЛИВОЈЕ
+БОШКОВИЋ МИЛОРАД
+БОШКОВИЋ МИЛОРАД
+БОШКОВИЋ МИЛОРАД
+БОШКОВИЋ МИЛОРАД
+БОШКОВИЋ МИЛОВАН
+БОШКОВИЋ МИОДРАГ
+БОШКОВИЋ МИРКО
+БОШКОВИЋ МОМЧИЛО
+БОШКОВИЋ МОМЧИЛО
+БОШКОВИЋ НАДА
+БОШКОВИЋ НАДА
+БОШКОВИЋ НЕДЕЉКО
+БОШКОВИЋ НИКОЛА
+БОШКОВИЋ НИКОЛА
+БОШКОВИЋ НОВКА
+БОШКОВИЋ-ПЕРОВИЋ ИВАНА
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ ПЕТАР
+БОШКОВИЋ РАДОМИР
+БОШКОВИЋ РАТОМИР
+БОШКОВИЋ РОСА
+БОШКОВИЋ САВА
+БОШКОВИЋ СЛОБОДАНКА
+БОШКОВИЋ СЛОБОДАН
+БОШКОВИЋ СЛОБОДАН
+БОШКОВИЋ СТЕВАН АДВОКАТ
+БОШКОВИЋ СТЕВАН
+БОШКОВИЋ СТЕВАН
+БОШКОВИЋ ТОМИСЛАВ
+БОШКОВИЋ ТОМИСЛАВ
+БОШКОВИЋ ВЕЉКО
+БОШКОВИЋ ВЛАДА
+БОШКОВИЋ ВЛАДИМИР
+БОШКОВИЋ ВОЈИСЛАВ
+БОШКОВСКИ ДОЈЧИН
+БОШКОВСКИ РАДА
+БОШЊАЧИЋ РАЈКО
+БОШЊАК ЂОРЂЕ
+БОШЊАК ЂУРА
+БОШЊАК ЂУРО
+БОШЊАК АНА
+БОШЊАК БОЖИДАР
+БОШЊАК ДАРКО
+БОШЊАК ДЕЈАН
+БОШЊАК ДЕСАНКА
+БОШЊАК ФЕРЕНЦ
+БОШЊАК ИШТВАН
+БОШЊАК ЈЕЛЕНА
+БОШЊАК ЈЕЛИЦА
+БОШЊАК ЈЕЛИЦА
+БОШЊАК ЈУЛКА
+БОШЊАК КАТАРИНА
+БОШЊАК КОСТА
+БОШЊАК ЉУБОМИР
+БОШЊАК ЉУБОМИР
+БОШЊАК МАГДАЛЕНА
+БОШЊАК МАРИЈА
+БОШЊАК МИЛАН
+БОШЊАК МИЛЕНА
+БОШЊАК МИЛОРАД
+БОШЊАК МИРКО
+БОШЊАК НЕЂО
+БОШЊАК НИКОЛА
+БОШЊАК ПАВЛЕ
+БОШЊАК ПЕТАР
+БОШЊАК РАДМИЛА
+БОШЊАК РАДОЈКА
+БОШЊАК РАДОВАН
+БОШЊАК СЛАВКА
+БОШЊАК СЛАВКО
+БОШЊАК ТОМИСЛАВ
+БОШЊАК ВЕЛИМИР
+БОШЊАК ВИДОСАВА
+БОШЊАК ВИНКА
+БОШЊАК ВОЈИСЛАВ
+БОШЊАК ЗОРАН
+БОШЊАКОВИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+БОШЊАКОВИЋ АЛЕКСАНДАР ДИПЛ ПРАВНИК
+БОШЊАКОВИЋ АНТОНИЈА
+БОШЊАКОВИЋ БИЉАНА
+БОШЊАКОВИЋ БОРИСЛАВ
+БОШЊАКОВИЋ БОРИСЛАВ
+БОШЊАКОВИЋ БРАНКА
+БОШЊАКОВИЋ ЦВИЈЕТИН
+БОШЊАКОВИЋ ДОБРИНКА
+БОШЊАКОВИЋ КОРНЕЛИЈЕ
+БОШЊАКОВИЋ ЉУБОМИР
+БОШЊАКОВИЋ МАРИЦА ДИПЛ ОЕЦ
+БОШЊАКОВИЋ МИЛУТИН
+БОШЊАКОВИЋ МИРОСЛАВ
+БОШЊАКОВИЋ МИТАР
+БОШЊАКОВИЋ ПАВАО
+БОШЊАКОВИЋ РАДОСЛАВ
+БОШЊАКОВИЋ РАТКО
+БОШЊАКОВИЋ СИНИША
+БОШЊАКОВИЋ СЛАВКА
+БОЋАН МАРИЈА
+БОЋЕРЕГ ЗУЗАНА
+БОЖА ПАЛ
+БОЖАНИЋ ЖИКА
+БОЖАНИЋ ЂОРЂЕ
+БОЖАНИЋ АНЂЕЛКА
+БОЖАНИЋ ДУШАН
+БОЖАНИЋ ГОЈКО
+БОЖАНИЋ ЈЕЛЕНА
+БОЖАНИЋ КОСА
+БОЖАНИЋ МИЛИЦА
+БОЖАНИЋ МИЛОРАД
+БОЖАНИЋ НЕВЕНКА
+БОЖАНОВИЋ РАЈКА
+БОЖАНОВИЋ ЗОРАН
+БОЖЕР ЛАЈОШ
+БОЖЕР ЉУДЕВИТ
+БОЖЕР ЗОРА
+БОЖИЧИЋ МИЛАН
+БОЖИЧИЋ МИЛЕНКО
+БОЖИЧИЋ ПЕТАР
+БОЖИЧКОВИЋ ЈОВАН
+БОЖИЧКОВИЋ НЕДЕЉКО ДР
+БОЖИЧКОВИЋ НЕРА
+БОЖИЧКОВИЋ ВОЈИСЛАВ
+БОЖИЧКОВИЋ ЗОРКА
+БОЖИЋ ЧЕДОМИР
+БОЖИЋ ЖАРКО
+БОЖИЋ ЖИВАНА
+БОЖИЋ ЖИВКО
+БОЖИЋ ЂОРЂЕ
+БОЖИЋ ЂУРЂИНА
+БОЖИЋ ЂУРА
+БОЖИЋ АЛЕКСАНДАР
+БОЖИЋ АЛЕКСАНДАР
+БОЖИЋ АНЂЕЛКА
+БОЖИЋ БОШКО
+БОЖИЋ БОЖАНА
+БОЖИЋ БОРИВОЈ
+БОЖИЋ БОРКО
+БОЖИЋ БРАНИСЛАВ
+БОЖИЋ БРАНИСЛАВ
+БОЖИЋ ДАРИНКА
+БОЖИЋ ДЕЈО
+БОЖИЋ ДЕСАНКА
+БОЖИЋ ДРАГАН
+БОЖИЋ ДРАГАН
+БОЖИЋ ДРАГАН
+БОЖИЋ ДРАГАН
+БОЖИЋ ДРАГОЉУБ
+БОЖИЋ ДРАГОМИР
+БОЖИЋ ДРАГОМИР
+БОЖИЋ ДРАГОМИР
+БОЖИЋ ДУШАН
+БОЖИЋ ГАВРО
+БОЖИЋ ГОЈКО
+БОЖИЋ ГОРДАНА
+БОЖИЋ ГОРДАНА
+БОЖИЋ ГРАДИМИР
+БОЖИЋ ИЛИЈА
+БОЖИЋ ИВАН
+БОЖИЋ ЈОВАНКА
+БОЖИЋ ЈОВАН
+БОЖИЋ ЈОВАН
+БОЖИЋ ЈОВИЦА
+БОЖИЋ ЈУЛКА
+БОЖИЋ КСЕНИЈА
+БОЖИЋ ЛАЗАР
+БОЖИЋ ЛАЗАР
+БОЖИЋ ЉИЉАНА
+БОЖИЋ МАРА
+БОЖИЋ МАРИНКО
+БОЖИЋ МАРКО
+БОЖИЋ МАРКО
+БОЖИЋ МАРКО
+БОЖИЋ МАТИЈА
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛАН
+БОЖИЋ МИЛЕВА
+БОЖИЋ МИЛЕ
+БОЖИЋ МИЛИСАВ
+БОЖИЋ МИЉКО
+БОЖИЋ МИЛОРАД
+БОЖИЋ МИОДРАГ
+БОЖИЋ МИРЈАНА
+БОЖИЋ МИРКО
+БОЖИЋ МИРКО
+БОЖИЋ МОМЧИЛО
+БОЖИЋ МОМЧИЛО
+БОЖИЋ НЕЂО
+БОЖИЋ НЕНАД
+БОЖИЋ НЕНАД
+БОЖИЋ НИКОЛА
+БОЖИЋ ОЛГА
+БОЖИЋ ОЗРЕН
+БОЖИЋ ПАВЛЕ ДИПЛ ИНГ
+БОЖИЋ ПЕРА
+БОЖИЋ ПЕТАР
+БОЖИЋ РАДИВОЈ
+БОЖИЋ РАДМИЛА
+БОЖИЋ-РАДОМИРОВИЋ ЈОКА
+БОЖИЋ РАДОВАН
+БОЖИЋ РАЈКО
+БОЖИЋ РАНКО
+БОЖИЋ САЊА
+БОЖИЋ САВА
+БОЖИЋ САВА
+БОЖИЋ САВО
+БОЖИЋ СЛОБОДАН
+БОЖИЋ СЛОБОДАН
+БОЖИЋ СРЕТЕН
+БОЖИЋ СТАНИМИР
+БОЖИЋ СТЕВАН
+БОЖИЋ СТЕВО
+БОЖИЋ СТОЈАНКА
+БОЖИЋ ТАМАРА
+БОЖИЋ ТАТЈАНА
+БОЖИЋ ТЕОДОР
+БОЖИЋ ТОМИСЛАВ
+БОЖИЋ ВЕРИЦА
+БОЖИЋ-ВИЛИЋ ЈЕЛЕНА
+БОЖИЋ ВЛАДАНКА
+БОЖИЋ ВЛАДА
+БОЖИЋ ВЛАДА
+БОЖИЋ ВЛАДА
+БОЖИЋ ВЛАДИСЛАВ
+БОЖИЋ ВУКОСАВА
+БОЖИЋ ЗЛАТА
+БОЖИЋ ЗЛАТИЦА
+БОЖИЋ ЗОРАН
+БОЖИЋ ЗОРАН
+БОЖИЋ ЗОРАН
+БОЖИЋ ЗОРАН
+БОЖИЋ ЗОРКА
+БОЖИДАР АЛЕКСАНДАР
+БОЖИДАР БОРИСЛАВ
+БОЖИДАР БОРИСЛАВ
+БОЖИДАР-КРИЖАК ИРЕНА
+БОЖИДАР ЉУБОМИР
+БОЖИДАРЕВИЋ ЂУРА
+БОЖИДАРЕВИЋ ДЕСАНКА
+БОЖИДАРЕВИЋ ПЕРСИДА
+БОЖИДАРЕВИЋ ВЕЉКО
+БОЖИН ЖАРКО
+БОЖИН ЂОРЂЕ
+БОЖИН ДАНИЦА
+БОЖИН ДАРИНКА
+БОЖИН ДЕСАНКА
+БОЖИН ИГЊАТ ДИПЛ ИНГ
+БОЖИН ИСИДОР
+БОЖИН ЈЕЛИЦА
+БОЖИН ЈУЛИЈАНА
+БОЖИН КРИСТИНА
+БОЖИН КСЕНИЈА
+БОЖИН ЛАЗАР
+БОЖИН ЉУБИЦА
+БОЖИН ЉУБИЦА
+БОЖИН МИЛОШ
+БОЖИН МИЛОШ
+БОЖИН МИРОСЛАВ
+БОЖИН НИКОЛА
+БОЖИН ПАВЛЕ
+БОЖИН ПЕТАР
+БОЖИН РАДИВОЈ
+БОЖИН РАДОВАН
+БОЖИН СИНИША
+БОЖИН СЛАВИЦА
+БОЖИН СЛОБОДАН
+БОЖИН СТЕВАН
+БОЖИН СТЕВАН
+БОЖИН СТЕВАН
+БОЖИНИЋ РУЖИЦА
+БОЖИНОВСКИ АНГЕЛ
+БОЖИНОВСКИ РИСТЕ
+БОЖИНОВСКИ ТРАЈАН
+БОЖЈАК ФРАЊО
+БОЖЈАК МИКА
+БОЖЈАКОВИЋ ЉУБИНКА
+БОЖО ЕЛЕОНОРА
+БОЖОКИ ЕРНЕ
+БОЖОКИ ИЛОНА
+БОЖОВИЋ БОЖИДАР
+БОЖОВИЋ БОРИВОЈ
+БОЖОВИЋ БРАТИСЛАВ
+БОЖОВИЋ ГОРЧИН
+БОЖОВИЋ ГОРДАНА
+БОЖОВИЋ ЉУБИЦА
+БОЖОВИЋ МИЛАДИН ДИПЛ ИНГ
+БОЖОВИЋ МИЛАДИН
+БОЖОВИЋ МИЛОРАД
+БОЖОВИЋ МИЛОВАН
+БОЖОВИЋ МИРЈАНА
+БОЖОВИЋ МИРОЉУБ
+БОЖОВИЋ РАШКО
+БОЖОВИЋ СЛАВКО
+БОЖОВИЋ СНЕЖАНА
+БОЖОВИЋ СТАНКА
+БОЖОВИЋ ВЕЛИМИР
+БОЖОВИЋ ВЕРА
+БОЖОВИЋ ВЛАДИМИР
+БОЖУЛИЋ АНЂЕЛКО
+БОЖУЛИЋ ИВАН
+БОЖУЛИЋ ИВИЦА
+БОЖУЛИЋ СИНИША
+БОЖУНОВИЋ ДУШАН
+БОЂА ЂУРА
+БОЂА АНДРИЈА
+БОЂА АНДРИЈА
+БОЂА АНДРИЈА
+БОЂА ИВАН
+БОЂА ИВАН
+БОЂА ЈОВАН
+БОЂА САША
+БОЂА СТЕВАН
+БОЂАНАЦ ЈЕЛЕНА
+БОЂАНАЦ МИРОСЛАВ
+БОЂАНАЦ ЗДРАВКО
+БОЂАНСКИ АЛЕКСАНДАР
+БОАРОВ ДИМИТРИЈЕ
+БОАРОВ ЈОВАН
+БОАРОВ КАТАРИНА
+БОАРОВ МИЛАНКА
+БОБ ЈУСТИНА
+БОБАК ИШТВАН
+БОБАК КАТИЦА
+БОБАН ЂЕРЂ
+БОБАН МАРИЈА
+БОБАН МЕРИМА
+БОБАН НЕДЕЉКО
+БОБАН СТИПЕ
+БОБАН СУЗАНА
+БОБАН-ВАРНУС ЕРЖЕБЕТ
+БОБАЊ ИМРЕ
+БОБАР БОШКО
+БОБАРЕВИЋ РУЖИЦА
+БОБЕРИЋ ОЛГА
+БОБЕРИЋ ЗОРКА
+БОБИЋ ЂОРЂЕ
+БОБИЋ ЂОРЂЕ
+БОБИЋ БОГДАН
+БОБИЋ БРАНИСЛАВ
+БОБИЋ ИВАН
+БОБИЋ ЈОСИП
+БОБИЋ КАЈА
+БОБИЋ ЉУБОМИР
+БОБИЋ МИЛАНКА
+БОБИЋ МИЛИЦА
+БОБИЋ МЛАДЕН
+БОБИЋ НЕНАД
+БОБИЋ РУЖИЦА
+БОБИЋ ТАЊА
+БОБИНАЦ ЈОСИП
+БОБИНАЦ ЛУЦИЈА
+БОБИНЕЦ ЈОСИП
+БОБЉАГОВИЋ БОГОСЛАВ
+БОБОШ СТАНКО
+БОЦ СТЕВАН
+БОЦА ДАНЕ
+БОЦА ДУШАН
+БОЦА МИЛЕ
+БОЦА МИЛОШ
+БОЦОНАДИ МАРТОН
+БОЏОНИ ГИЗЕЛА
+БОЏОНИ СТЕВАН
+БОДА ЈОВАН
+БОДАКОШ ЈОСИП
+БОДАКОШ СТЈЕПАН
+БОДЕГРАЈАЦ СОФИЈА
+БОДИ ЕРЖЕБЕТ
+БОДИ ЈАСМИНА
+БОДИ ЛАЈОШ
+БОДИ ЛАСЛО
+БОДИ МИХАЈЛО
+БОДИШ ЈОЖЕФ
+БОДИШ МИЛИЦА
+БОДИРОЖА ПЕТАР
+БОДИРОЖА РАДИВОЈ
+БОДИРОГА ЈОВАН
+БОДИРОГА МАРИЈА
+БОДИРОГА НИКО
+БОДИРОГА ПРЕДРАГ
+БОДЛОВИЋ НИКОЛА
+БОДНАР ШАНДОР
+БОДНАР РИСТА
+БОДНАР СТЕВАН
+БОДНАР ВЕРИЦА
+БОДО ИШТВАН
+БОДО КАРОЉ
+БОДО МАРИЈА
+БОДО МАРИЈА
+БОДО МАТИЈА
+БОДО СТЕВАН
+БОДОЧИ ЈОЖЕФ
+БОДОЛО ШАНДОР
+БОДОЛО ИШТВАН
+БОДОЊИ КАРЛО
+БОДОР АНТОН
+БОДОР АНТУН
+БОДОР БОСИЉКА
+БОДОР ФРАЊА
+БОДОР ФРАЊА
+БОДОР ИШТВАН
+БОДОР ЈАНОШ
+БОДОР ЈОСИП
+БОДОР ПЕТАР
+БОДОР СИНИША
+БОДРЕ ИШТВАН
+БОДРИЧ-ХЕРЋАН АРАНКА
+БОДРИЧ МИХАЈЛО
+БОДРИЧ СТЕВАН
+БОДРИЧ ВЕСНА
+БОДРИЋ ЈЕЛИСАВЕТА
+БОДРОЖА БРАНКО
+БОДРОЖА ОЛГА
+БОДРОЖИЋ ИЛИЈА
+БОДРОЖИЋ ИЛИЈА
+БОДРОЖИЋ ЈОВАН
+БОДРОЖИЋ МИЛАН
+БОДРОЖИЋ СТЕВАН
+БОДУЛИЋ ШТЕФАНИЈА
+БОДУЛИЋ ЈЕЛЕНА
+БОДУЛИЋ ПЕТАР
+БОДУЛИЋ СЛОБОДАН
+БОДУЛИЋ СЛОБОДАН
+БОДВАИ ЈАНКО
+БОГАРОШИ СЛОБОДАН
+БОГАРОШКИ АНДРИЈА
+БОГАТИНОСКИ ТОМИСЛАВ
+БОГАВАЦ АЛЕКСАНДАР ДР
+БОГАВАЦ БРАНИСЛАВ
+БОГАВАЦ ДРАГИЦА
+БОГАВАЦ ЈАДРАНКА
+БОГАВАЦ МИРЈАНА
+БОГДАН АНДРАШ
+БОГДАН БИЉАНА
+БОГДАН ДУШАН
+БОГДАН ИШТВАН
+БОГДАН ИМРЕ
+БОГДАН ИВАН
+БОГДАН ЈОСИП
+БОГДАН ЈОСИП
+БОГДАН МАНЕ
+БОГДАН-МИЈИН ДУШАНКА
+БОГДАН МИЛКА
+БОГДАН НИКОЛА
+БОГДАН СТЕВАН
+БОГДАН СТЕВА
+БОГДАН ВЕРИЦА
+БОГДАН ЗОРАН
+БОГДАНФИ ШАНДОР НОВИНАР
+БОГДАНФИ МАРИНКО
+БОГДАНОВ-АНТОНИЋ БИЉАНА
+БОГДАНОВ БИСЕРКА
+БОГДАНОВ БРАНИСЛАВ ДР ПРОФ
+БОГДАНОВ БРАНКА ДР ЛЕКАР
+БОГДАНОВ ДАНИЛО
+БОГДАНОВ ДИМИТРИЈЕ
+БОГДАНОВ ДРАГАН
+БОГДАНОВ ДУШАН
+БОГДАНОВ-ХИЛ ДОБРИЛА
+БОГДАНОВ ИРМА
+БОГДАНОВ ИВАН
+БОГДАНОВ ЛАЗАР
+БОГДАНОВ МАРИЦА
+БОГДАНОВ МИЛАН
+БОГДАНОВ МИЛЕНА
+БОГДАНОВ МИЛОШ
+БОГДАНОВ МИЛОРАД
+БОГДАНОВ НАДА
+БОГДАНОВ ОЛГА
+БОГДАНОВ ПЕТАР
+БОГДАНОВ СЛАВКО
+БОГДАНОВ СЛАВНА
+БОГДАНОВ СМИЉА
+БОГДАНОВ СТАНКО
+БОГДАНОВ СТЕВАН
+БОГДАНОВ СТЕВАН
+БОГДАНОВ ЗОРАН
+БОГДАНОВИЋ ЖИВАН МР
+БОГДАНОВИЋ ЂОРЂЕ
+БОГДАНОВИЋ ЂОРЂЕ
+БОГДАНОВИЋ ЂУРА
+БОГДАНОВИЋ АЛЕКСАНДАР
+БОГДАНОВИЋ АНКА
+БОГДАНОВИЋ БЛАГОЈА
+БОГДАНОВИЋ БОШКО
+БОГДАНОВИЋ БОЖИДАР
+БОГДАНОВИЋ БОГДАН
+БОГДАНОВИЋ БОРА
+БОГДАНОВИЋ БОРИВОЈ
+БОГДАНОВИЋ БРАНИСЛАВА
+БОГДАНОВИЋ БРАНИСЛАВ
+БОГДАНОВИЋ БРАНИСЛАВ
+БОГДАНОВИЋ БРАНИСЛАВ
+БОГДАНОВИЋ БРАНИСЛАВ
+БОГДАНОВИЋ БРАНКО
+БОГДАНОВИЋ ДАРИНКА
+БОГДАНОВИЋ ДЕСАНКА
+БОГДАНОВИЋ ДИМИТРИЈЕ
+БОГДАНОВИЋ ДОБРИВОЈ
+БОГДАНОВИЋ ДРАГАН
+БОГДАНОВИЋ ДРАГАН
+БОГДАНОВИЋ ДРАГОЉУБ
+БОГДАНОВИЋ ДРАГОЉУБ
+БОГДАНОВИЋ ДУШКО
+БОГДАНОВИЋ ЕТЕЛКА
+БОГДАНОВИЋ ГЕДЕОН
+БОГДАНОВИЋ ГОЈКО
+БОГДАНОВИЋ ГОРДАНА
+БОГДАНОВИЋ ИЛИЈА
+БОГДАНОВИЋ ИЛОНА
+БОГДАНОВИЋ ИВАН
+БОГДАНОВИЋ ЈОВАН
+БОГДАНОВИЋ ЈОВИЦА
+БОГДАНОВИЋ КСЕНИЈА
+БОГДАНОВИЋ ЛАЗАР
+БОГДАНОВИЋ ЛАЗАР
+БОГДАНОВИЋ ЉИЉАНА
+БОГДАНОВИЋ ЉУБИСАВ
+БОГДАНОВИЋ ЉУБОМИР
+БОГДАНОВИЋ ЉУБОМИР
+БОГДАНОВИЋ МАРИНА
+БОГДАНОВИЋ МИЋО
+БОГДАНОВИЋ МИХАЈЛО
+БОГДАНОВИЋ МИЛАН
+БОГДАНОВИЋ МИЛАН
+БОГДАНОВИЋ МИЛАН
+БОГДАНОВИЋ МИЛАН
+БОГДАНОВИЋ МИЛКА
+БОГДАНОВИЋ МИЛОШ
+БОГДАНОВИЋ МИЛОСАВ
+БОГДАНОВИЋ МИОДРАГ
+БОГДАНОВИЋ МИРЈАНА
+БОГДАНОВИЋ МИТАР
+БОГДАНОВИЋ МЛАДЕН
+БОГДАНОВИЋ НАДА
+БОГДАНОВИЋ НАДА
+БОГДАНОВИЋ НЕДЕЉКО
+БОГДАНОВИЋ НИКОЛА
+БОГДАНОВИЋ НИКОЛА
+БОГДАНОВИЋ НОВАК
+БОГДАНОВИЋ ПАЈА
+БОГДАНОВИЋ ПАВЛЕ
+БОГДАНОВИЋ ПАВЛЕ
+БОГДАНОВИЋ ПЕТАР
+БОГДАНОВИЋ ПЕТАР
+БОГДАНОВИЋ ПЕТАР
+БОГДАНОВИЋ ПЕТАР
+БОГДАНОВИЋ ПРВОСЛАВ
+БОГДАНОВИЋ РАДИСАВ
+БОГДАНОВИЋ РАДИВОЈЕ
+БОГДАНОВИЋ РАДОСЛАВ
+БОГДАНОВИЋ РАДОВАН
+БОГДАНОВИЋ РАНКО
+БОГДАНОВИЋ РАТОМИР
+БОГДАНОВИЋ РУЖИЦА
+БОГДАНОВИЋ СЛАВКО МР ПРАВНИК
+БОГДАНОВИЋ СЛОБОДАНКА ПРОФЕСОР
+БОГДАНОВИЋ СЛОБОДАН
+БОГДАНОВИЋ СЛОБОДАН
+БОГДАНОВИЋ СОФИЈА
+БОГДАНОВИЋ СОЊА
+БОГДАНОВИЋ СТЕВАН
+БОГДАНОВИЋ СТЕВАН
+БОГДАНОВИЋ СТЕВО
+БОГДАНОВИЋ СВЕТИСЛАВ
+БОГДАНОВИЋ ТИХОМИР
+БОГДАНОВИЋ ТИХОМИР
+БОГДАНОВИЋ ВАЈА
+БОГДАНОВИЋ ВАСА
+БОГДАНОВИЋ ВЕРА
+БОГДАНОВИЋ ВИТОМИР
+БОГДАНОВИЋ ВЛАДИМИР
+БОГДАНОВИЋ ВЛАЈКО
+БОГДАНОВИЋ ЗДРАВКО
+БОГДАНОВИЋ ЗОРАН
+БОГДАНОВСКИ ДИМИТРИЈЕ
+БОГДАНОВСКИ СЛОБОДАН
+БОГЕТИЋ ДРАГОЉУБ
+БОГЕТИЋ САЊА
+БОГИЧЕВИЋ ЖИВКО
+БОГИЧЕВИЋ АНЂЕЛКА
+БОГИЧЕВИЋ ДАНИЦА
+БОГИЧЕВИЋ ДУШАН
+БОГИЧЕВИЋ ГЕОРГИЈЕ
+БОГИЧЕВИЋ КОСТАДИНКА
+БОГИЧЕВИЋ КРСТА
+БОГИЧЕВИЋ ЉУБИША
+БОГИЧЕВИЋ ЉУБИЦА
+БОГИЧЕВИЋ МАРИЈА
+БОГИЧЕВИЋ МИЛИЦА
+БОГИЧЕВИЋ НИКОЛА
+БОГИЧЕВИЋ НИКОЛА
+БОГИЧЕВИЋ ТИХОМИР
+БОГИЧЕВИЋ ЗОРКА
+БОГИШИЋ АНДРИЈА
+БОГИШИЋ ФРАЊА
+БОГИШИЋ ЈОСИП
+БОГИЋ АЛЕКСАНДАР
+БОГИЋ АНЂЕЛКА
+БОГИЋ БРАНИСЛАВ
+БОГИЋ ДИМИТРИЈЕ
+БОГИЋ ДРАГАН
+БОГИЋ ДУШАНКА
+БОГИЋ ИЛДИКО
+БОГИЋ ЈЕЛЕНА
+БОГИЋ ЈЕЛИСАВЕТА
+БОГИЋ ЈОВАН
+БОГИЋ ЉУБИЦА
+БОГИЋ МАРИЈА
+БОГИЋ МИЛАН
+БОГИЋ МИРЈАНА
+БОГИЋ СОФИЈА
+БОГИЋ СРЕЋКО
+БОГИЋ СТЕВАН
+БОГИЋЕВИЋ ЖЕЉКА
+БОГИЋЕВИЋ АНЂЕЛКА
+БОГИЋЕВИЋ БРАНИСЛАВ
+БОГИЋЕВИЋ ДИМИТРИЈЕ
+БОГИЋЕВИЋ ЈЕЛИСАВЕТА
+БОГИЋЕВИЋ ЈЕЛКА
+БОГИЋЕВИЋ ЈОЛЕТА
+БОГИЋЕВИЋ КОНСТАНТИН
+БОГИЋЕВИЋ МИЛАН
+БОГНАР ШАНДОР
+БОГНАР АЛЕКСАНДАР ДИПЛ ИНГ
+БОГНАР АНТАЛ
+БОГНАР ЕЛИЗАБЕТА
+БОГНАР ЕЛИЗАБЕТА
+БОГНАР ГИЗЕЛА
+БОГНАР ЈОЖЕФ
+БОГНАР КАЛМАН
+БОГНАР ЛАЈОШ
+БОГНАР МАРИА
+БОГНАР МАРИЈА
+БОГНАР МИРКО
+БОГНАР РОЗИКА
+БОГНАР СИЛАРД
+БОГНАР СТЕВАН ДР
+БОГОЈЕВ ЖИВКО
+БОГОЈЕВАЦ ЕРЖЕБЕТ
+БОГОЈЕВАЦ ЈОВАН
+БОГОЈЕВИЋ АНГЕЛИНА
+БОГОЈЕВИЋ БИЉАНА
+БОГОЈЕВИЋ БОЖО
+БОГОЈЕВИЋ БРАНИСЛАВ
+БОГОЈЕВИЋ БРАНКО
+БОГОЈЕВИЋ ДРАГО
+БОГОЈЕВИЋ ЈОВАНКА
+БОГОЈЕВИЋ ЛАЗО
+БОГОЈЕВИЋ ЉУБИСАВ
+БОГОЈЕВИЋ МИЛАН
+БОГОЈЕВИЋ МИЛОРАД
+БОГОЈЕВИЋ МИТАР
+БОГОЈЕВИЋ МОМЧИЛО
+БОГОЈЕВИЋ РАДМИЛА
+БОГОЈЕВИЋ РАДОЈКА
+БОГОЈЕВИЋ РАДОМИР
+БОГОЈЕВИЋ РАДОМИР
+БОГОЈЕВИЋ РАЈКО
+БОГОЈЕВИЋ СТАНИЈА
+БОГОЈЕВИЋ ТОДОР
+БОГОЈЕВИЋ ВЕЛИМИР
+БОГОЈЕВИЋ ВЛАДА
+БОГОЈЕВИЋ ВЛАДИЦА
+БОГОЈЕВИЋ ВЛАЈКО
+БОГОСАВ МИЛАН
+БОГОСАВАЦ МИРОСЛАВ
+БОГОСАВАЦ МИРОСЛАВ
+БОГОСАВАЦ ЗДРАВКО
+БОГОСАВЉЕВ ЈОВАНКА
+БОГОСАВЉЕВИЋ ЖАРКО
+БОГОСАВЉЕВИЋ БРАНИСЛАВ
+БОГОСАВЉЕВИЋ ДОБРИЛА
+БОГОСАВЉЕВИЋ ДОБРИВОЈЕ
+БОГОСАВЉЕВИЋ ДРАГИЦА
+БОГОСАВЉЕВИЋ ДРАГОМИР
+БОГОСАВЉЕВИЋ МИЛАДИН
+БОГОСАВЉЕВИЋ МИОДРАГ ДР ИНГ
+БОГОСАВЉЕВИЋ РАДЕ
+БОГОСАВЉЕВИЋ СТАНИМИР
+БОГОСАВЉЕВИЋ ЗЛАТА
+БОГОВАЦ ДОБРОСЛАВА
+БОГОВАЦ ДРАГОЉУБ
+БОГОВАЦ МИЛАН ДР
+БОГОВАЦ НИКОЛА
+БОГОВАЦ СЛОБОДАН
+БОГОВИЋ ИБОЈА
+БОГОВИЋ МИЈО
+БОГОВИЋ НИКОЛА
+БОГОВИЋ СТЕВАН
+БОГОВИЋ ТОМИСЛАВ
+БОГОВИЋ ВЕСНА
+БОГОВИЋ ВЕСНА
+БОГОВИЋ ЗЛАТКО
+БОГУНОВИЋ ЂОРЂЕ
+БОГУНОВИЋ БОГДАН
+БОГУНОВИЋ БРАНКО
+БОГУНОВИЋ ДРАГАН
+БОГУНОВИЋ МИЛАН
+БОГУНОВИЋ ТОМИСЛАВ
+БОГУНОВИЋ ВЛАДЕ
+БОГУНОВИЋ ЗОРАН
+БОГУТ ЉУБО
+БОГУТ НАДА
+БОХАЧЕК ВАЛТЕР
+БОХИНЦ БОЖАНА
+БОХОЦКИ ЈАНОШ
+БОХОЦКИ ЈУЛИЈАНА
+БОХОЦКИ ПЕТАР
+БОХОЦКИ РОБЕРТ
+БОХОТА СИЛВЕСТЕР
+БОХУШ ЈОВАН
+БОЈЧЕТА ГОРАН
+БОЈЧЕВСКИ НАУМ
+БОЈЧИЋ МИЛАН
+БОЈА АНДРАШ
+БОЈА ЕРИКА
+БОЈАЦ ДАФИНА
+БОЈАЦ РАДИВОЈ
+БОЈАДИЋ МИРКО
+БОЈАГИЋ МАРКО
+БОЈАНИЋ АЛЕКСАНДАР
+БОЈАНИЋ АНА
+БОЈАНИЋ БОГОСАВ
+БОЈАНИЋ БОРИКА
+БОЈАНИЋ БОСИЉКА
+БОЈАНИЋ БРАНЕ
+БОЈАНИЋ БУДИМИР
+БОЈАНИЋ ДАРИНКА
+БОЈАНИЋ ДЕСАНКА
+БОЈАНИЋ ДРАГИЦА
+БОЈАНИЋ ДРАГОЉУБ
+БОЈАНИЋ ДУШАН
+БОЈАНИЋ ДУШАН
+БОЈАНИЋ ИЛИЈА
+БОЈАНИЋ ЈЕЛИЦА
+БОЈАНИЋ ЉУБО
+БОЈАНИЋ МИЛАН
+БОЈАНИЋ МИЛИВОЈ
+БОЈАНИЋ МИЛИВОЈ
+БОЈАНИЋ МИЛОШ
+БОЈАНИЋ МИЛУН
+БОЈАНИЋ МИОДРАГ
+БОЈАНИЋ РАНКО
+БОЈАНИЋ СЛОБОДАН
+БОЈАНИЋ СВЕТЛАНА
+БОЈАНИЋ ВЕЛИМИР
+БОЈАНИЋ ЗОРАН
+БОЈАНИЋ ЗОРА
+БОЈАНОВИЋ ЧЕДО
+БОЈАНОВИЋ ДУШКО
+БОЈАНОВИЋ ЛАЗАР
+БОЈАНОВИЋ МАРЈАН
+БОЈАНОВИЋ МИЛОРАД
+БОЈАНОВИЋ РИСТАН
+БОЈАНОВИЋ ВУЈАДИН
+БОЈАНОВИЋ ВУЈАДИН
+БОЈАТ ЈАНКО
+БОЈАТ МИЛОРАД
+БОЈАТ РАДОМИР
+БОЈАТ ВЕСЕЛИН ДР
+БОЈБИЋ РАЈКО
+БОЈИЧИЋ РАДИВОЈ
+БОЈИЋ АНЂЕЛИЈА
+БОЈИЋ БЛАГОТА
+БОЈИЋ БОГДАН
+БОЈИЋ БОГОЉУБ
+БОЈИЋ БОГОМИР
+БОЈИЋ БОРИСЛАВ
+БОЈИЋ БРАНИСЛАВА
+БОЈИЋ БРАНИСЛАВ
+БОЈИЋ БРАНИСЛАВ
+БОЈИЋ БРАНИСЛАВ
+БОЈИЋ ДАНИЦА
+БОЈИЋ ДЕЈАН
+БОЈИЋ ДРАГАН
+БОЈИЋ ДРАГАН
+БОЈИЋ ДРАГИЦА
+БОЈИЋ ДРАГИЊА
+БОЈИЋ ДУШАНКА
+БОЈИЋ ДУШАН
+БОЈИЋ ДУШАН
+БОЈИЋ ГОРДАНА ДР
+БОЈИЋ ГОРДАНА
+БОЈИЋ ГОРДАНА
+БОЈИЋ КАТИЦА
+БОЈИЋ-КОЛАРСКИ ГОРДАНА
+БОЈИЋ ЛАЗАР
+БОЈИЋ МАРКО
+БОЈИЋ МИШКО
+БОЈИЋ МИЛА
+БОЈИЋ МИЛЕНКО
+БОЈИЋ МИЛИДАР
+БОЈИЋ МИЛОВАН
+БОЈИЋ МИОДРАГ
+БОЈИЋ МИРКО
+БОЈИЋ МИРОСЛАВ
+БОЈИЋ РАДОСЛАВА
+БОЈИЋ РАЈКО
+БОЈИЋ РАЈКО
+БОЈИЋ СЕНКА
+БОЈИЋ СНЕЖАНА
+БОЈИЋ СНЕЖАНА
+БОЈИЋ СОЊИЦА
+БОЈИЋ СРЕТЕН
+БОЈИЋ СТЕВАН
+БОЈИЋ ТОМИСЛАВ
+БОЈИЋ УГЉЕША
+БОЈИЋ ВЕРА
+БОЈИНОВИЋ ЈЕЛЕНА
+БОЈКИЋ АЛЕКСАНДАР
+БОЈКИЋ МИЛИЦА
+БОЈКО АЛЕКСАНДАР
+БОЈКО ЈОВАНКА
+БОЈКО МАРИЈА
+БОЈКО НЕВЕНКА
+БОЈКОВ ФЕОДОР
+БОЈКОВ РОМАН
+БОЈКОВИЋ ДАНИЦА
+БОЈКОВИЋ КРИСТИНА
+БОЈКОВИЋ ЛЕНА
+БОЈКОВИЋ МИЛИЦА
+БОЈКОВИЋ СЛОБОДАН
+БОЈОВИЋ ЖИВОРАД
+БОЈОВИЋ БОШКО
+БОЈОВИЋ БОГДАН
+БОЈОВИЋ БРАНКО
+БОЈОВИЋ БРАНКО
+БОЈОВИЋ ДРАГОЈЕ
+БОЈОВИЋ ДРАГОСЛАВ
+БОЈОВИЋ ДРАГУТИН
+БОЈОВИЋ ДРАГУТИН
+БОЈОВИЋ ИКОНИЈА
+БОЈОВИЋ ЈАКОВ
+БОЈОВИЋ ЉУБИЦА
+БОЈОВИЋ ЉУБО
+БОЈОВИЋ МИЛАН
+БОЈОВИЋ МИЛАН
+БОЈОВИЋ МИЛИЦА
+БОЈОВИЋ МИЛИЦА
+БОЈОВИЋ МИЛОЈЕ
+БОЈОВИЋ МИРОСЛАВ
+БОЈОВИЋ НАДА
+БОЈОВИЋ НОВИЦА
+БОЈОВИЋ ПЕТАР
+БОЈОВИЋ СРЕТКО
+БОЈОВИЋ ТОМИСЛАВ
+БОЈОВИЋ ВЕЛИША
+БОЈОВИЋ ВЕЉКО
+БОЈОВИЋ ВЛАДАН
+БОЈОВИЋ ВОЈИН
+БОЈОВИЋ ЗОРАН
+БОКШАН АНКА
+БОКШАН ЕМИЛИЈАН
+БОКШАН СТОЈАН
+БОКШИЋ ЂОКА
+БОКШИЋ ЈЕЛЕНА
+БОКШИЋ ЛАЗАР
+БОКШИЋ МИРЈАНА
+БОКШИЋ МИРЈАНА
+БОКШИЋ РАДА
+БОКШИЋ РАДОЈКА
+БОКШИЋ РАДОСЛАВ
+БОКШИЋ РУЖЕНКА
+БОКШИЋ СОКА
+БОКА ЖИВКА
+БОКА СИЛВИО
+БОКА СТЈЕПАН
+БОКАН АНЂА
+БОКАН АНИЦА
+БОКАН ДРАГО
+БОКАН МИЛАН
+БОКАН МИЛАН
+БОКАН МИЛЕНА
+БОКАН МИРКО
+БОКАН НИКОЛА
+БОКАН РАДЕ
+БОКАН РАДОМИР
+БОКАН СЛОБОДАН
+БОКАН ТОМИСЛАВ
+БОКАН ВЕЉКО
+БОКАНИЋ БРАНИСЛАВ
+БОКАНИЋ ВЛАДИМИР
+БОКИЋ ДАНИЛО
+БОКИЋ ДУШАН
+БОКИЋ МИЛАН
+БОКИЋ РАДОЈИЦА
+БОКИЋ ВИД
+БОКОР ЂОРЂЕ ДИПЛ ИНГ
+БОКОР ЂОРЂЕ
+БОКОР ГАВРА
+БОКОР ЛАСЛО ДИПЛ ИНГ
+БОКОР ЛАСЛО
+БОКОР МАРИЈА
+БОКОРОВ ТАНАСИЈЕ ДИПЛ ИНГ
+БОКУН ДУБРАВКА
+БОКУН НОВАК
+БОКУН ПЕТАР
+БОКУН СПАСИЈА
+БОКУН СТЕВА
+БОКУН ВЛАДИМИР
+БОЛАНОВИЋ РАЈКА
+БОЛДИЖАР ЈОЖЕФ
+БОЛДИЖАР ЛАСЛО
+БОЛДИН РУДОЛФ
+БОЛДОЦКИ ЈОЖЕФ
+БОЛДОЦКИ ВЛАДИМИР
+БОЛДОГ ЛАЈОШ
+БОЛЕРАЦ АНА
+БОЛЕСНИКОВ БРАНИСЛАВ
+БОЛЕСНИКОВ ДАРИНКА
+БОЛЕСНИКОВ МИЛОРАД
+БОЛЕСНИКОВ ЗОРАН
+БОЛФ БРАНКО
+БОЛФ НЕВЕНКА
+БОЛФИК ЈОСИП
+БОЛИЋ ЗЛАТКО
+БОЛИНОВСКА СОФИЈА
+БОЛИНОВСКИ МИРОСЛАВ
+БОЉАНОВИЋ ЂОРЂЕ
+БОЉАНОВИЋ АЛЕКСАНДАР
+БОЉАНОВИЋ МИЛИВОЈЕ
+БОЉАНОВИЋ НИКОЛА
+БОЉАНОВИЋ РАДОВАН
+БОЉАНОВИЋ ЗОРИЦА
+БОЉЕВИЋ СВЕТОЗАР
+БОЛМАНАЦ БРАНКО
+БОЛМАНАЦ ЕВГЕНИЈЕ
+БОЛО ЖОЛТ
+БОЛОК АНДРАШ
+БОЛОК ЈОЖЕФ
+БОЛОК КАРЛО
+БОЛОК КАРОЉ
+БОЛОК ПАЛ
+БОЛОРИН РАДИВОЈ
+БОЛТА ЖЕЉКО
+БОЛТА ЂУРА
+БОЛТА БРАНКО
+БОЛТА ДРАГИЦА
+БОМЕШТАР РАДА
+БОНА СТЕВАН
+БОНЏИЋ ДЕЈАН
+БОНДАРЕНКО АЛЕКСАНДАР ДР
+БОНДОКИЋ БОРИВОЈЕ
+БОНДОКИЋ ЉУБИЦА
+БОНЕРТ ДУШАН ДР
+БОНЕРТ ДУШАН
+БОНИЋ ДРАГАН
+БОНИЋ МАРЈАН
+БОНИЋ МИЛИЦА
+БОНИЋ ВЛАДИМИР
+БОНУС ЉУБИЦА
+БОР ЕНДРЕ
+БОРЧАНИН ЉУБИЦА
+БОРЧАНИН СОФИЈА
+БОРЧАНСКИ ТИНКА
+БОРЧИЋ БУДЕ
+БОРЧИЋ ДРАГАНА
+БОРЧИЋ ЈОВАН
+БОРШИ ТИВАДАР ДИПЛ ОЕЦ
+БОРШОШ АТИЛА
+БОРШОШ БАРБАРА
+БОРШОШ ИШТВАН
+БОРШОШ ИШТВАН
+БОРШОШ ИМРЕ
+БОРШТНАР ХЕНРИК
+БОРШТНЕР НАДА
+БОРЂИН ЛАЗАР
+БОРЂОШКИ ЂОРЂЕ ДИПЛ ИНГ
+БОРЂОШКИ БОШКО
+БОРЂОШКИ МИЛИЦА
+БОРЂОШКИ ТАМАРА
+БОРЂОШКИ ВОЈИН
+БОРАШ ИРЕНА
+БОРАС БОРИСЛАВ
+БОРАС МАРИЈА
+БОРАС МИЛИЦА
+БОРБАШ КАРОЉ
+БОРБАШ ВИОЛЕТА
+БОРБАШ ЗОЛТАН
+БОРБЕЉ АЛЕКСАНДАР
+БОРБЕЉ ЈАНОШ
+БОРБЕЉ ЈОСИП
+БОРБЕЉ ЉУБИЦА
+БОРБЕЉ МАРИЈА
+БОРБЕЉ НЕВЕНКА
+БОРДАШ ЂЕЗЕ
+БОРДАШ АКОШ
+БОРДАШ БЕЛА
+БОРДАШ ФЕРЕНЦ
+БОРДАШ ФРАЊА
+БОРДАШ ХИЛДА
+БОРЕНОВИЋ АНТОНИЈЕ
+БОРЕНОВИЋ МИЛЕ
+БОРЕНОВИЋ ВЕРА
+БОРИ ИМРЕ ДР
+БОРИ МАРИЈА
+БОРИЧИЋ ЛАЗАР
+БОРИЧИЋ НОВАК
+БОРИЧИЋ РАДИВОЈЕ
+БОРИЧИЋ РАДУЛЕ
+БОРИШЕВ БОРИСЛАВ
+БОРИШЕВ ЉИЉАНА
+БОРИШЕВ МИЛЕНКО
+БОРИШЕВ НИКОЛА
+БОРИШЕВ РУЖИЦА
+БОРИШЕВ САВА
+БОРИШЕВ ТЕОДОР
+БОРИШЕВ ВАСА
+БОРИШИЋ МАРИЈА
+БОРИШИЋ ВЛАДИМИР
+БОРИЋ ЧЕДОМИР
+БОРИЋ АЛЕКСАНДАР
+БОРИЋ ДУШАН
+БОРИЋ КАМЕНКО
+БОРИЋ КАТИЦА
+БОРИЋ МИЛАН
+БОРИЋ МИЛКА
+БОРИЋ НИКОЛА
+БОРИЋ ПЕТАР
+БОРИЋ СТЕВАН
+БОРИЋ ЗОРАН
+БОРИЋ ЗОРАН
+БОРИС ЈОСИП
+БОРИВОЈЕВИЋ ВИТОМИР
+БОРЈАНИН СЛАВКО
+БОРЈАНОВИЋ ГОРДАНА
+БОРЈАНОВИЋ ИЛИЈА
+БОРЈАНОВИЋ НИКОЛА
+БОРКО СТАНИСЛАВ
+БОРКОВАЧКИ ЗОРАН
+БОРКОВАЦ КАТАРИНА
+БОРКОВИЋ ДРАГОСЛАВА
+БОРКОВИЋ МИЛАН
+БОРЉА СТЕВАН
+БОРОШ ШАНДОР
+БОРОШ ШАНДОР
+БОРОШ ЂЕРЂ
+БОРОШ-ЂЕВИ ЖЕЉКО
+БОРОШ ЂОРЂЕ
+БОРОШ АЛЕКСАНДАР
+БОРОШ АНДРИЈА
+БОРОШ АНТУН
+БОРОШ ЕРНЕ
+БОРОШ ЕВА
+БОРОШ ИШТВАН
+БОРОШ ЈОЖЕФ
+БОРОШ ЈОЛАН
+БОРОШ ЈУЛИЈА
+БОРОШ ЛАДИСЛАВ
+БОРОШ ЛАЈОШ
+БОРОШ МАРГИТА
+БОРОШ МИХАЈЛО
+БОРОШ МИХАЈЛО
+БОРОШ МИКЛОШ
+БОРОШ ВЕРА
+БОРОШИЋ ЕЛИЗАБЕТА
+БОРОЦКИ АЛЕКСАНДАР
+БОРОЦКИ ДАНИЦА
+БОРОЦКИ ЉУБИНКА
+БОРОЈА ЉУБАН
+БОРОЈА РУЖИЦА
+БОРОЈЕВ АРСЕН ДР ЛЕКАР
+БОРОЈЕВ ЕМИЛИЈАН ДР
+БОРОЈЕВ ЈАГОДА
+БОРОЈЕВ ЉУБОМИР
+БОРОЈЕВ РАДМИЛА
+БОРОЈЕВИЋ АНА
+БОРОЈЕВИЋ БОШКО
+БОРОЈЕВИЋ БОШКО
+БОРОЈЕВИЋ БОШКО
+БОРОЈЕВИЋ БРАНКО
+БОРОЈЕВИЋ ДРАГАН
+БОРОЈЕВИЋ ДРАГОЉУБ
+БОРОЈЕВИЋ ДУШАН
+БОРОЈЕВИЋ КРСТА
+БОРОЈЕВИЋ ЉИЉАНА
+БОРОЈЕВИЋ МИЛАН
+БОРОЈЕВИЋ ПАВЛЕ
+БОРОЈЕВИЋ ПЕТРА
+БОРОЈЕВИЋ СЛАВКО ПРОФ
+БОРОМИСА ДРАГИЦА
+БОРОМИСА ЈЕЛЕНА
+БОРОЊАЦ ДРАГАН
+БОРОЊАЦ МИЛИЦА
+БОРОЊАЦ ОЛГА
+БОРОЊАЦ ВЕРА
+БОРОТА АЛЕКСАНДАР
+БОРОТА ЈОВАНКА
+БОРОТА МИЛАН
+БОРОТА МИЛОРАД
+БОРОТА МИРА
+БОРОТА РАДОСЛАВ ДР ЛЕКАР
+БОРОВЧАНИН ЉУБОМИР
+БОРОВЧАНИН МИЛИСАВ
+БОРОВЧАНИН НЕДЕЉКО
+БОРОВЧАНИН РАДОМИР
+БОРОВЧАНИН СЛОБОДАН
+БОРОВАЦ АРСО
+БОРОВАЦ БРАНИСЛАВ
+БОРОВАЦ КАТИЦА
+БОРОВАЦ МИЛОРАД
+БОРОВИЧАНИН МИЛОРАД
+БОРОВИЋ АТИЛА
+БОРОВИЋ ЈОСИП
+БОРОВИЋ ЈОВАН
+БОРОВИЋ КОСТА
+БОРОВИЋ МЕНА
+БОРОВИЋ ПЕТАР
+БОРОВИЋ РУДОЛФ
+БОРОВИЋ ВЛАДЕ
+БОРОВИЋАНИН МИРОСЛАВ
+БОРОВИЦА БОЈКА
+БОРОВИЦА ИВАН
+БОРОВИЦА ИВАН
+БОРОВИЦА ЈЕЛЕНА
+БОРОВИЦА МИОДРАГ
+БОРОВНИЦА БРАНКО
+БОРОВНИЦА МАРКО
+БОРОВНИЦА МИЛАН
+БОРОВНИЦА МИЛЕВА
+БОРОЗАН МИЛОРАД
+БОРУШ ИШТВАН
+БОРУШ ИРЕНА
+БОРЗАШКИ БРАТИСЛАВА
+БОРЗАШКИ РАДОМИР
+БОРЗАШКИ СТЕВАН
+БОСАК ИРЕНА
+БОСАКОВ ДРАГАН
+БОСАНЧИЋ БОШКО
+БОСАНЧИЋ БОГДАН
+БОСАНЧИЋ БОГДАН
+БОСАНЧИЋ ЈЕЛИЦА
+БОСАНЧИЋ МАНОЈЛО
+БОСАНЧИЋ МИЛЕВА
+БОСАНЧИЋ МИОДРАГ
+БОСАНЧИЋ РАДОВАН
+БОСАНЧИЋ РАЈКО
+БОСАНЧИЋ ТРИВА
+БОСАНЧИЋ ВАСО
+БОСАНЧИЋ ВЛАДО
+БОСАНЧИЋ ВУЈО
+БОСАНАЦ ЈОВАН
+БОСАНАЦ ЉУБИЦА
+БОСАНАЦ МАРИЈА
+БОСАНАЦ НИКОЛА
+БОСАНАЦ ВЕРА
+БОСИЋ БОЖАНА
+БОСИЋ БРАНКО
+БОСИЋ ДУШАН ДР
+БОСИЋ ЈОВАН
+БОСИЋ МИОДРАГ
+БОСИЋ РАДОВАН
+БОСИЋ СЛАВКА
+БОСИЉКИЋ ЛАЗАР
+БОСИЉКИЋ ЛУКА
+БОСИН СЛОБОДАН
+БОСИОК ДОРУ
+БОСНАИ-БАБА ЛУЦИЈА
+БОСНАИ ЈАНОШ
+БОСНИЋ ЧЕДОМИР
+БОСНИЋ ЂУРЂИНКА
+БОСНИЋ АЛЕКСАНДАР
+БОСНИЋ БОЖИДАР
+БОСНИЋ БОСИЉКА
+БОСНИЋ ДАВИД
+БОСНИЋ ДАВИД
+БОСНИЋ ЈОВАН
+БОСНИЋ МАРА
+БОСНИЋ МИРКО
+БОСНИЋ МЛАДЕН
+БОСНИЋ НАДА
+БОСНИЋ НУРИЈА
+БОСНИЋ РАДОСА
+БОСНИЋ РАЈКО
+БОСНИЋ ВЕРА
+БОСНИЋ ВЛАДА
+БОСНИЋ ВЛАДА
+БОСНИЋ ЗОРАН
+БОТА БРАНИСЛАВ
+БОТИЧ ОЛИВЕРА
+БОТИЋ АЛЕКСАНДАР
+БОТИЋ БОГДАН
+БОТИЋ ДАНИЦА
+БОТИЋ ДАРКО
+БОТИЋ ДАРКО
+БОТИЋ ГАВРА
+БОТИЋ МИЛАН
+БОТИЋ МИЛАН
+БОТИЋ МИЛЕ
+БОТИЋ МИЛОРАД АДВОКАТ
+БОТИЋ МИРОСЛАВА
+БОТИЋ ОЛИВЕРА
+БОТИЋ ПРОКА
+БОТИЋ РАДОСЛАВА
+БОТИЋ ВЕРИЦА
+БОТИЋ ВЛАДИМИР
+БОТИЋ ЗОРАНКА
+БОТКА АНТАЛ
+БОТКА ДАВИД
+БОТКА ЕРЖЕБЕТ
+БОТКА ВЕРОНА
+БОТКА ЗОЛТАН
+БОТЛИК ГЕЗА
+БОТЛИК МАРИЈА
+БОТОШКИ ДРАГОВАН
+БОТОШКИ САВА
+БОТОРИЋ РАДОЈИЦА
+БОТЗА ИШТВАН
+БОЗЕЈАЦ АНТАЛ ДИПЛ ПРАВНИК
+БОЗЕЈАЦ ДУШАН
+БОЗЕЈАЦ ГОРДАНА
+БОЗЕЈАЦ МИЛЕНКО
+БОЗЕЈАЦ СМИЉКА
+БОЗЕЈАЦ СВЕТИСЛАВ
+БОЗЕЈАЦ ВЕРА
+БОЗОКИН СТЕВИЦА
+БРЧИЋ ИГЊАЦ
+БРЧИЋ МИРОСЛАВ
+БРЧИЋ НЕЂО
+БРЧИЋ РАДОВАН
+БРЧИН ЂОРЂЕ
+БРЧИН МИЛИНКА
+БРЧИН НИКОЛА
+БРЧИН РАТОМИР
+БРЧИН СЛАВИЦА
+БРЧИН СВЕТОЗАР
+БРЧИНОВИЋ ПАВЛЕ
+БРЧКАЛОВИЋ ЉУБОМИР
+БРАЧЕВИЋ ИВАН
+БРАЧЕВИЋ МИРЈАНА
+БРАШАНАЦ БОРИСЛАВ
+БРАШАНАЦ ГАВРИЛО ДИПЛ ИНГ
+БРАШАНАЦ ИЛИЈА
+БРАШАНАЦ МИРЈАНА
+БРАШАНАЦ МИРОСЛАВ
+БРАШКО ЈОЖЕФ
+БРАШЊО ГУСТАВ
+БРАШЊО ИШТВАН
+БРАШЊО ИШТВАН
+БРАЦАНОВИЋ ДАМЈАН
+БРАЦАНОВИЋ МИЛУТИН
+БРАЦИЋ МИЛАН
+БРАДАЧ ЕЛИЗАБЕТА
+БРАДАЧ ИМРЕ
+БРАДАШ ЖИВА ДИПЛ ИНГ
+БРАДАРИЋ НЕДЕЉКО
+БРАДИЋ ЂОРЂЕ
+БРАДИЋ ЂОРЂЕ
+БРАДИЋ БОЖИДАР
+БРАДИЋ БОГОЉУБ
+БРАДИЋ БОГОЉУБ
+БРАДИЋ БРАНКО
+БРАДИЋ ЕВГЕНИЈА
+БРАДИЋ ГАВРИЛО
+БРАДИЋ ЈУСТИНА
+БРАДИЋ МИЛАН ДИПЛ ИНГ
+БРАДИЋ МИЛАН
+БРАДИЋ МИЛИЦА
+БРАДИЋ МИЛИВОЈЕ
+БРАДИЋ МИЉКО
+БРАДИЋ СЛОБОДАН
+БРАДИЋ СРЕТА
+БРАДИЋ-ТЕЊИ ЗОРИЦА
+БРАДИЋ ТЕОДОРА
+БРАДИЋ ТОМИСЛАВА
+БРАДИЋ ВИДОЈЕ
+БРАДИЋ ЗОРИЦА
+БРАДОШ СЛОБОДАН
+БРАХТЛ МАРИЦА
+БРАЈДИЋ ИВАН
+БРАЈЕР ФРАЊА
+БРАЈЕВИЋ ПРЕДРАГ
+БРАЈИЋ МИЛИЦА
+БРАЈИЋ РАДОВАН
+БРАЈИЋ СЛОБОДАН
+БРАЈКОВ МАРКО
+БРАЈКОВИЋ ИВО
+БРАЈКОВИЋ МИРЈАНА
+БРАЈОВИЋ МИЛИВОЈЕ
+БРАЈОВИЋ МИЛОШ
+БРАЈОВИЋ СЛАВКА
+БРАЈОВИЋ СПАСОЈЕ
+БРАЈОВИЋ СТАНКА
+БРАЈОВИЋ ВЕЉКО
+БРАКОЧЕВИЋ ЈОВАН
+БРАКУС ДУШАНКА
+БРАКУС ЉИЉАНА
+БРАКУС МАРИЈА
+БРАКУС МИЛАН
+БРАКУС МОМЧИЛО
+БРАЛОВИЋ РАТКО
+БРАНЧИЋ БОРИС ДИПЛ ИНГ
+БРАНЧИЋ ЈАСНА
+БРАНЧИЋ МИЛЕНА
+БРАНЧИЋ МИЛУШКО
+БРАНА ПЕТАР
+БРАНИЛОВИЋ СТЈЕПАН
+БРАНКОВ ЂОРЂЕ
+БРАНКОВ ЂОРЂЕ
+БРАНКОВ АЛЕКСАНДРА
+БРАНКОВ-БОКА РОЗАЛИЈА
+БРАНКОВ БОРИВОЈ
+БРАНКОВ БРАНИСЛАВ
+БРАНКОВ ДОБРИЦА
+БРАНКОВ ДРАГАНА
+БРАНКОВ ДРАГАН
+БРАНКОВ ДУШАН
+БРАНКОВ ЕМИЛ
+БРАНКОВ ИЛИЈА
+БРАНКОВ ЈЕЛИЦА
+БРАНКОВ ЈОВАНКА
+БРАНКОВ КОСТА
+БРАНКОВ КОСТА
+БРАНКОВ ЉУБИЦА
+БРАНКОВ ЉУБИЦА
+БРАНКОВ ЉУБИНКО
+БРАНКОВ МИЛИЦА
+БРАНКОВ МИЛОРАД
+БРАНКОВ МИРКО
+БРАНКОВ МИТА
+БРАНКОВ МИТА
+БРАНКОВ МЛАДЕН
+БРАНКОВ МОМИР
+БРАНКОВ НАДА
+БРАНКОВ ОЛИВЕРА
+БРАНКОВ РАДИВОЈ
+БРАНКОВ РАДОВАН
+БРАНКОВ РАДОВАН
+БРАНКОВ СВЕТИСЛАВ
+БРАНКОВ ВЕЉКО
+БРАНКОВ ВЛАДИМИР
+БРАНКОВ ЗЛАТИНКА
+БРАНКОВАН ЂОРЂЕ
+БРАНКОВАН ВЛАСТИМИР
+БРАНКОВИЋ БОГОЉУБ
+БРАНКОВИЋ БОЈА
+БРАНКОВИЋ БРАНКО
+БРАНКОВИЋ БРАНКО
+БРАНКОВИЋ ДРАГАН
+БРАНКОВИЋ ДУШАНКА
+БРАНКОВИЋ ДУШАН
+БРАНКОВИЋ ДУШАН
+БРАНКОВИЋ ИЛИЈА
+БРАНКОВИЋ-КОВАЧЕВИЋ РАДМИЛА
+БРАНКОВИЋ ЉИЉАНА
+БРАНКОВИЋ ЉУБИЦА
+БРАНКОВИЋ МИЛАН
+БРАНКОВИЋ МИЛЕНА
+БРАНКОВИЋ МИЛОРАД
+БРАНКОВИЋ МИРКО
+БРАНКОВИЋ МЛАДЕН
+БРАНКОВИЋ САВКА
+БРАНКОВИЋ СЛАВКО
+БРАНКОВИЋ СЛАВОЉУБ
+БРАНКОВИЋ СЛАВОЉУБ
+БРАНКОВИЋ СВЕТЛАНА
+БРАНКОВИЋ ТУГОМИР
+БРАНКОВИЋ ЗИНА
+БРАНКОВИЋ ЗОРАН
+БРАНОВАЧКИ ЂОРЂЕ
+БРАНОВАЧКИ АНГЕЛИНА
+БРАНОВАЧКИ ГАВРИЛО
+БРАНОВАЧКИ ИВАНА
+БРАНОВАЧКИ ЉУБИЦА
+БРАНОВАЧКИ ОЛГА
+БРАНОВАЧКИ СВЕТИСЛАВ
+БРАНОВИЋ БИСЕРКА
+БРАНОВИЋ РУЖА
+БРАОВИЋ САНДРА
+БРАОВИЋ ВЛАДИМИР
+БРАТ ДУШАН
+БРАТИЋ АШИР
+БРАТИЋ ДРАГО
+БРАТИЋ ДУШАН
+БРАТИЋ ГОРАН
+БРАТИЋ ЉУБИЦА
+БРАТИЋ ЉУБОМИР
+БРАТИЋ МУХО
+БРАТИЋ НЕДЕЉКО
+БРАТИЋ РАДОВАН
+БРАТИЋ ВОЈИСЛАВ
+БРАТОНОЖИЋ МАРГИТА
+БРБОРИЋ ЛАЗАР
+БРБОРИЋ СРБИСЛАВ
+БРЦАНОВ ЂУРЂИНКА
+БРЦАНОВ ОЛГА
+БРЦАНОВ СИМА
+БРЦАНОВ ТИХОМИР
+БРЦАНСКИ НИКОЛА
+БРДАР ДАНЕ
+БРДАР ДРАГО
+БРДАР ИЛИЈА
+БРДАР ИВАНКА
+БРДАР МИЛАН
+БРДАР ПЕРО
+БРДАР СЛАВИША
+БРДАРЕВИЋ ДУШКО
+БРДАРИЋ ДРАГОМИР
+БРДАРИЋ КОСТА
+БРДАРИЋ МИЛАН
+БРДАРИЋ ПЕТАР
+БРЕШЋАНСКИ МАРИЈА
+БРЕШКОВИЋ СТАНИСЛАВА
+БРЕШКОВСКИ ДРАГИЦА
+БРЕЖАН ИЛОНА
+БРЕЖАН ЛЕОНОРА
+БРЕЖАН МАРИЈА
+БРЕБЕР ЉУБИЦА
+БРЕБЕРИНА МИЛАН
+БРЕБЕРИНА СТЕВАН
+БРЕГУН ЂОРЂЕ
+БРЕГУН АЛЕКСАНДРА
+БРЕГУН НИКОЛА
+БРЕГУН РАДОСЛАВ ДИПЛ ИНГ
+БРЕКАЛО ЈОСИП
+БРЕКИЋ ИЛИЈА
+БРЕКИЋ НИКОЛА
+БРЕКИЋ СТЕВАН
+БРЕНЕЦКИ ЗДРАВКО
+БРЕНЕСЕЛ ДРАГАН
+БРЕНЕСЕЛ ГАБРИЕЛ
+БРЕНЕСЕЛ МИРЈАНА
+БРЕНЕСЕЛ НИКОЛА
+БРЕСТОВАЧКИ ИВАН
+БРЕСТОВАЧКИ ЈАСМИНА
+БРЕСТОВАЧКИ МИЛКА
+БРЕСТОВАЧКИ СТЕВА
+БРЕТ ВЕРА
+БРЕТШНАЈДЕР АНА
+БРЕЗНИК ЕРНЕ
+БРЕЗЊАК ЈАНОШ
+БРЕЗЊАК МАРИЈА
+БРЕЗОВЧЕК ЈОВАНКА
+БРЕЗОВАЦ ДРАГИЦА
+БРЕЗОВАЦ ДУШАН
+БРЕЗОВАЦ ИВАН
+БРЕЗОВАЦ ИВАН
+БРЕЗОВАЦ ЈУРАЈ
+БРЕЗОВАЦ КАТАРИНА
+БРЕЗОВАЦ ЉУБИНКА
+БРЕЗОВАЦ МИЛЕНА
+БРЕЗОВАЦ МИЛОШ
+БРЕЗОВАЦ ПЕТАР
+БРЕЗОВАЦ САВА
+БРЕЗОВИЋ МИРЈАНА
+БРИШЕВАЦ ЈУРЕ
+БРИКЕР СМИЉАНА
+БРИЊАК ДРАГО
+БРИТВЕЦ МАРКО
+БРИЗА ЖЕЛМИРА
+БРИЗА ЈАН
+БРИЗА ЛУКРЕЦИЈА
+БРК СИМО
+БРКАНИЋ МАРКО
+БРКАНИЋ МИЛЕНКО
+БРКАНИЋ ТАТЈАНА
+БРКАНЛИЋ ЖЕЉКО
+БРКАНЛИЋ ДУШАН
+БРКИЋ ЂОРЂЕ
+БРКИЋ ЂОРЂЕ
+БРКИЋ ЂУРО
+БРКИЋ АБАЗ
+БРКИЋ АЛЕКСАНДАР
+БРКИЋ АЛЕКСАНДАР
+БРКИЋ АНКА
+БРКИЋ АНКИЦА
+БРКИЋ-БЕЛИЋ ДАНИЦА
+БРКИЋ БОГДАН
+БРКИЋ БРАНКО
+БРКИЋ ДРАГАН
+БРКИЋ ДРАГА
+БРКИЋ ДРАГО
+БРКИЋ ДУШАНКА
+БРКИЋ ГОЈКО
+БРКИЋ ИЛИЈА
+БРКИЋ ИВАН
+БРКИЋ ИВИЦА
+БРКИЋ ЈЕЛИСАВЕТА
+БРКИЋ ЈОВАН
+БРКИЋ ЈОВАН
+БРКИЋ ЈОВАН
+БРКИЋ ЈОВАН
+БРКИЋ ЉУБОМИР
+БРКИЋ ЛУКА
+БРКИЋ МАГДАЛЕНА
+БРКИЋ МАНДА
+БРКИЋ МАРИЈА
+БРКИЋ МАРИЈА
+БРКИЋ МИЛАДИН
+БРКИЋ МИЛАН
+БРКИЋ МИЛАН
+БРКИЋ МИЛАН
+БРКИЋ МИРЈАНА
+БРКИЋ МИТАР
+БРКИЋ НАДА
+БРКИЋ НЕБОЈША
+БРКИЋ НИКОЛА
+БРКИЋ НИКОЛА
+БРКИЋ ПЕТАР
+БРКИЋ ПЕТАР
+БРКИЋ ПЕТРА
+БРКИЋ РАДОЈКА
+БРКИЋ РАДОСЛАВ
+БРКИЋ РАДОСЛАВ
+БРКИЋ РАДОСЛАВ
+БРКИЋ РАТКО
+БРКИЋ РУЖА
+БРКИЋ СИЛВИЈА
+БРКИЋ СЛАВКО
+БРКИЋ СНЕЖАНА
+БРКИЋ СНЕЖАНА
+БРКИЋ ТОМО ДИПЛ ИНГ
+БРКИЋ УРОШ
+БРКИЋ ВЕЗИЛИЈА
+БРКИЋ ВЛАДИМИР
+БРКИЋ ВЛАДИМИР
+БРКИЋ ВЛАДИМИР
+БРКИЋ ВОЈИСЛАВ
+БРКИЋ ЗДРАВКО
+БРКИЋ ЗОРАН
+БРКЉАЧ БРАНИМИР
+БРКЉАЧ БРАНИСЛАВ
+БРКЉАЧ ДРАГОЉУБ
+БРКЉАЧ ИЛИЈА
+БРКЉАЧ КАТАРИНА
+БРКЉАЧ МИЛАНКО
+БРКЉАЧ МИЛАН
+БРКЉАЧ НИКОЛА
+БРКЉАЧ НИКОЛА
+БРКЉАЧ РУЖИЦА
+БРКЉАЧ СЛОБОДАН
+БРКЉАЧ СТЕВАН
+БРКЉАЧА БРАТОЉУБ
+БРКЉАЧИЋ БОЖЕНА
+БРКЉАЧИЋ ВЛАДИМИР
+БРКО НИКОЛА
+БРКОВИЋ ЂОРЂЕ
+БРКОВИЋ АНТУН
+БРКОВИЋ БОСИЉКА
+БРКОВИЋ ДРАГО
+БРКОВИЋ ДУШАН
+БРКОВИЋ ЕМИЛИЈА
+БРКОВИЋ ЈОВАНКА
+БРКОВИЋ ЉУБОМИР
+БРКОВИЋ МАГДА
+БРКОВИЋ МИЛАН
+БРКОВИЋ МИЛИЦА
+БРКОВИЋ НАДА
+БРКОВИЋ НИКОЛА
+БРКОВИЋ РАДОВАН
+БРКОВИЋ ВИОДСАВА
+БРКОВИЋ ВЈЕКОСЛАВ
+БРКОВИЋ ЗЛАТКО
+БРЛИЋ ДРАГУТИН
+БРЛИЋ ИВАН
+БРМБОТА ЈОВАН
+БРМБОТА ЈОВАН
+БРЊАКОВИЋ МАРИЈА
+БРНОВИЋ СВЕТОЗАР
+БРОШТЕАН ВИОРЕЛ
+БРОЋЕТА БОГДАН
+БРОЋЕТА МИЋА
+БРОЋЕТА МИЛОРАД
+БРОЋЕТА НЕДЕЉКО
+БРОЋЕТА ОБРАД
+БРОДРАНСКИ СВЕТЛАНА
+БРОЈЧИН ДУШАН
+БРОЈЧИН САВА
+БРОНЗА ДРАГАН
+БРОНЗА РАЈКО
+БРОЗОВИЋ ИВАН
+БРСАНОВИЋ КРСТА
+БРСТИНА ВАСИЛИЈЕ
+БРТАН ЈОСИП
+БРТКА ЈАН
+БРУШЊАИ ЈОСИП
+БРУШЊАК ПЕРО
+БРУЈИЋ ДУШАН
+БРУЈИЋ ЈОВАН
+БРУЈИЋ МАНОЈЛО
+БРУЈИЋ МИЛАН
+БРУЈИЋ МИЛИЦА
+БРУЈИЋ СЛАВКО
+БРУЈИЋ ВЛАДИМИР
+БРУК АНДРИЈА ДР
+БРУКНЕР БОГДАН
+БРУКНЕР БОГДАН
+БРУНЧЕВИЋ ХИВЗО
+БРУНЧЕВИЋ РЕЏЕП
+БРУНДЗА ЦЕЦИЛИЈА
+БРУНДЗА ВЛАДИМИР МР
+БРУНЕР ЈОСИП
+БРУНЕТ ЕЛЕМЕР
+БРУНЕТ ФРАЊА
+БРУНЕТ ИШТВАН
+БРУНЕТ ЗОЛТАН
+БРУНЕТ ЗОЛТАН
+БРУСИН ДУШКО
+БРУСИН КАЈИЦА
+БРУСИН МИЛОЈКО
+БРУСИН МИЛОВАН
+БРУСИН РАДИЦА
+БРУСИН СЛАВКО
+БРУСЊАИ КАРЛО
+БРУСЊАИ ЛАСЛО
+БРУСЊАИ МАРГАРИТА
+БРЗАК ЖИВКА
+БРЗАК ЖИВОРАД
+БРЗАК ЂОРЂЕ
+БРЗАК ЂОРЂЕ
+БРЗАК ЂОРЂЕ
+БРЗАК ЂОРЂЕ
+БРЗАК ЂУКА
+БРЗАК АЛЕКСАНДАР
+БРЗАК АЛЕКСАНДАР
+БРЗАК АНЂЕЛКА
+БРЗАК БОГДАНКА
+БРЗАК БОРИСЛАВ
+БРЗАК БОСА
+БРЗАК БРАНИСЛАВ
+БРЗАК ДРАГАН
+БРЗАК ДРАГАН
+БРЗАК ДРАГИЦА
+БРЗАК ДРАГОМИР
+БРЗАК ДУШКО
+БРЗАК ГОЈКО
+БРЗАК ИЛИЈА
+БРЗАК ЈАДРАНКА
+БРЗАК ЈЕЛЕНА
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК ЈОВАН
+БРЗАК КОСТА
+БРЗАК ЛАЗАР
+БРЗАК ЛЕПОСАВА
+БРЗАК МАРИЈА
+БРЗАК МИЛА
+БРЗАК МИЛЕНКО
+БРЗАК МИЛЕНКО
+БРЗАК МИЛЕНКО
+БРЗАК МИЛОВАН
+БРЗАК МИЛОВАН
+БРЗАК МИРА
+БРЗАК МИРА
+БРЗАК МИРОСЛАВ
+БРЗАК МИТАР
+БРЗАК ПЕТАР
+БРЗАК ПРЕДРАГ
+БРЗАК РАДОСЛАВ
+БРЗАК САВА
+БРЗАК САВЕТА
+БРЗАК СИМЕОН
+БРЗАК СЛАВКО
+БРЗАК СЛОБОДАНКА
+БРЗАК СТЕВАН
+БРЗАК СТЕВАН
+БРЗАК СТЕВАН
+БРЗАК СТОЈАНКА
+БРЗАК СВЕТЛАНА
+БРЗАК СВЕТОЗАР
+БРЗАК ТОША
+БРЗАК ТОША
+БРЗАК ТОШИЦА
+БРЗАК ТОДОР
+БРЗАК ВАСА
+БРЗАК ВАСА
+БРЗАК ВАСА
+БРЗАК ВЕЉКО
+БРЗАК ВИДА
+БРЗАК ВИДОСАВА
+БРЗАК ВИДОСЛАВ
+БРЗАК ВЛАДИСЛАВ
+БРЗАК ЗОРАН
+БРЗАКОВИЋ ИГОР
+БРЗАКОВИЋ НЕНАД ДР
+БРЗАКОВИЋ ВИТОМИР ДР ЛЕКАР
+БРЗАНОВИЋ ДРАГАН
+БРЗИЋ ЖИВАН
+БРЗИЋ ЂОРЂЕ
+БРЗИЋ БРАНКО
+БРЗИЋ ФРАЊА
+БРЗИЋ ИВАН
+БРЗИЋ ЈОВАН
+БРЗИЋ ЛАЗАР
+БРЗИЋ ЛАЗАР
+БРЗИЋ МИРЈАНА
+БРЗИЋ ПЕТАР
+БРЗИЋ ПЕТАР
+БРЗИЋ РАДОСЛАВ
+БРЗИЋ СТЕВАН
+БРЗИЋ СВЕТОЗАР
+БРЗИЋ ТОДОР
+БРЗИЋ ЗЛАТА
+БРЗИЦА БРАНКА
+БРЗИЦА ФЕРДО
+БРЗИЦА ИВАНКА
+БРЗИЦА МАРИНКО
+БРЗОВАН БЕХИЈА
+БУ ИШТВАН
+БУЧА ДУШАН
+БУЧА ДУШИЦА
+БУЧА ИРИНА
+БУЧА ВАСА
+БУЧАНСКИ ЈОЖЕФ
+БУЧИЋ БОРИСЛАВ
+БУЧКО АХНЕТА
+БУЧКО ЈАНКО
+БУЧКО МАРИЈА
+БУЧО ДАНИЈЕЛА
+БУЧУ-МАРТОНОШИ ГИЗЕЛА
+БУШ АНА
+БУШ МАГДАЛЕНА
+БУШ СИЛВЕСТЕР
+БУШИЋ СРЕЋКО
+БУШЉЕТА БРАНКА
+БУШТРЕВИЋ МИРЈАНА
+БУШТРЕВИЋ СЛОБОДАНКА
+БУШТРОВИЋ ОЛГА
+БУЋАН ДУШАН
+БУЋАН ДУШАН
+БУЋАН МИЛЕВА
+БУЋАН СЛАВКА
+БУЋАНСКИ МАЋАШ
+БУЋИН РАДЕ
+БУЋО ЗАГОРКА
+БУЖАНЧИЋ МИРА
+БУЖАНИН МИЛЕ
+БУЂИ ЂУЛА
+БУЂИЛАН ПЕТАР
+БУАЧА ДРАГАН
+БУАЧА ОЛГИЦА
+БУАЧА СТЕВАН
+БУБАЛО ДРАГАН
+БУБАЛО ДРАГИЊА
+БУБАЛО ГОРАН
+БУБАЛО ИЛИЈА
+БУБАЛО ЈОВАН
+БУБАЛО ЈОВО
+БУБАЛО МИРОСЛАВ
+БУБАЛО ПЕТАР
+БУБАЛО РАТОМИР
+БУБАЛО СИМО
+БУБАЛО ТЕОДОРА
+БУБАЊ БРАНИСЛАВ
+БУБАЊ ДАНЕ
+БУБАЊ ИВАНКА
+БУБАЊ МИЛИЦА
+БУБАЊ МИЛОШ
+БУБАЊ РАДЕ
+БУБАЊ РАДОЈКА
+БУБАЊ СРБОЉУБ
+БУБАЊ ВИДОСАВА
+БУБАЊА АЛЕКСАНДАР
+БУБАЊА БАТРИЋ
+БУБАЊА ДАРИНКА
+БУБАЊА КАТИЦА
+БУБАЊА МАШАН
+БУБАЊА РАДИСАВ
+БУБАЊА ТАДИЈА
+БУБАЊА ВОЈИСЛАВ
+БУБАЊА ЗОРКА
+БУБИЋ МИЛАН
+БУБНИЋ ВЕРОНА
+БУБЊЕВИЋ ЂОРЂЕ
+БУБЊЕВИЋ БОРЕ
+БУБЊЕВИЋ ДАРА
+БУБЊЕВИЋ ДРАГО
+БУБЊЕВИЋ ГОЈКО
+БУБЊЕВИЋ ЈАЊА
+БУБЊЕВИЋ ЉУБОМИР
+БУБЊЕВИЋ МАРИЦА
+БУБЊЕВИЋ МАРИНКО
+БУБЊЕВИЋ МИРКО
+БУБЊЕВИЋ НЕНАД
+БУБЊЕВИЋ ОСТОЈА
+БУБЊЕВИЋ РАДА
+БУБЊЕВИЋ РАДОМИР
+БУБЊЕВИЋ РЕЉА
+БУБЊЕВИЋ СРБОЉУБ
+БУБЊЕВИЋ СРЕТЕН
+БУБЊЕВИЋ СТОЈАНКА
+БУБЊЕВИЋ ВАСКРСИЈЕ
+БУБЊЕВИЋ ВЛАДИМИР
+БУБЊИЋ ЖЕЉКО
+БУБОЊА БОРИС
+БУБОЊА ДОСТАНА
+БУБОЊА ДУШАН
+БУБОЊА РАДОВАН
+БУБРЕШКО ГОРДАНА
+БУБУЉ МИЛИЋ
+БУБУЉ НАДА
+БУБУЉ СТОЈАНКА
+БУБУЉ СТОЈА
+БУЦАЛО МИЛАДИН
+БУЦАЛО МИРА
+БУЦАЛО МИТАР
+БУЦАЛОВИЋ ДУШАН
+БУЦИЋ АНТЕ
+БУЦИЋ МИЛИВОЈ
+БУЦУЉЕВИЋ АЛЕКСАНДАР
+БУЦУЉЕВИЋ ЗЛАТОМИР ДР
+БУЏАКОСКИ ТОМА
+БУЏАРОВ САВА
+БУДА АДА
+БУДА ЕВА
+БУДА ХАЈНАЛКА
+БУДА ЈОЖЕФ
+БУДА ТЕРЕЗА
+БУДАЋ ЗОРАН
+БУДАИ ГОРИЦА
+БУДАИ ИЛОНКА
+БУДАИ ЈОЖЕФ
+БУДАИ ЈОЛАН
+БУДАИ ЈОВАН
+БУДАИ ЛАЈОШ
+БУДАИ ЛАЈОШ
+БУДАИ ЗОРА
+БУДАК ДРАГАН
+БУДАК ИВИЦА
+БУДАК МИЛАН
+БУДАК ВЕРА
+БУДАКОВ АЛЕКСАНДРА
+БУДАКОВ БРАНИСЛАВ
+БУДАКОВ ДРАГАН
+БУДАКОВ ГОРИЦА
+БУДАКОВ ИВАН
+БУДАКОВ ЉИЉАНА
+БУДАКОВ МИЛАН
+БУДАКОВ МИЛУТИН
+БУДАКОВ ОЛИВЕРА
+БУДАКОВ СЛОБОДАН
+БУДАНОВ АНТАЛ
+БУДАНОВ ДАНИЦА
+БУДАНОВИЋ САВЕТА
+БУДАНОВИЋ СТАНА
+БУДЕРКА МАРИЈА
+БУДИША БОЖА
+БУДИША БОРА
+БУДИША МИРКО
+БУДИША ТИХОМИР
+БУДИШИЋ ДРАГАН
+БУДИШИН ЂОРЂЕ
+БУДИШИН ИВАН
+БУДИШИН МИЛОШ
+БУДИШИН МИЛОШ
+БУДИШИН НИКОЛА ДР
+БУДИШИН-САКАЧ СОЊА ДР
+БУДИШИН ВЛАДИМИР
+БУДИЋ ЖЕЉКО
+БУДИЋ ДАНИЛО
+БУДИЋ ДРАГОСЛАВ
+БУДИЋ ДУШАНКА
+БУДИЋ МИЛАН
+БУДИЋ ЗОРКА
+БУДИМЧИЋ ЈОВАН
+БУДИМЧИЋ ЉИЉАНА
+БУДИМЧИЋ МИЛИВОЈ
+БУДИМА БАЈРУШ
+БУДИМАЦ БУДИМИР
+БУДИМАЦ ЗОРАН
+БУДИМИР МАРИЈА
+БУДИМИР МИЛАН
+БУДИМИР МИЛОЈКО
+БУДИМИРОВИЋ ДРАГИЦА
+БУДИМИРОВИЋ НЕГОВАН
+БУДИМИРОВИЋ УРОШ
+БУДИМКИЋ-КРСТИЋ ДРАГАНА
+БУДИМЛИЈА АЛЕКСАНДАР
+БУДИМЛИЈА ДРАГИЦА
+БУДИМЛИЈА ИЛИЈА
+БУДИМЛИЈА МИЛАН
+БУДИМЛИЈА МИЛАН
+БУДИМЛИЈА РАДЕ
+БУДИМСКИ ЂУРА
+БУДИМСКИ СЛАВУЈ
+БУДИНЧЕВИЋ ГАБОР
+БУДИНЧЕВИЋ ЈУЛИЈАНА
+БУДИНЧЕВИЋ МИРКО
+БУДИНЧЕВИЋ НИКОЛА
+БУДИНСКИ КИРИЛ
+БУДИНСКИ ЉУБА
+БУДИНСКИ МАРИЈА
+БУДИНСКИ ВЛАДИМИР
+БУДИСАВЉЕВИЋ БРАНКО
+БУДИСАВЉЕВИЋ ДУШАН
+БУДИСАВЉЕВИЋ КАРОЛИНА
+БУДИСАВЉЕВИЋ МАРИЈА
+БУДИСАВЉЕВИЋ НАТАЛИЈА
+БУДИСАВЉЕВИЋ НЕВЕНКА
+БУДИСАВЉЕВИЋ РУЖИЦА
+БУДИСАВЉЕВИЋ ВЕРИЦА
+БУДЈИЛАН ПЕТАР
+БУДОШАН ЖИВКО
+БУДОШАН ЂОРЂЕ
+БУДОШАН АЛЕКСАНДАР
+БУДОШАН-КОВАЧ ЈЕЛЕНА
+БУДОШАН МИЛОШ
+БУДОШАН НАДА
+БУДОШАН САВА
+БУДОШАН САВА
+БУДОШАН СТЕВАН
+БУДОШАН ТОШИЦА
+БУДОШАН ВАСА
+БУДОШАН ВАСА
+БУДОШАН ВУКОСАВА
+БУДОВАЛЧЕВ АРСА
+БУДОВАЛЧЕВ ОЛГА
+БУДОВАЛЧЕВ ПЕТАР
+БУДОВАЛЧЕВ ПЕТАР
+БУДУРИН РАДОЈЕ
+БУГАЏИЈА ЛАЈОШ
+БУГАЏИЈА СТЕВАН
+БУГАРЧИЋ ПЕТАР
+БУГАРЧИЋ РАДМИЛО
+БУГАРЧИЋ СМИЉКА
+БУГАРИН-ЧОНКИЋ РАДОЈКА
+БУГАРИН ЖИВАН
+БУГАРИН ЖИВАН
+БУГАРИН ЖИВАН
+БУГАРИН ЖИВАН
+БУГАРИН БОШКО
+БУГАРИН БОРИСЛАВ
+БУГАРИН ДАНИЦА
+БУГАРИН ИЛИЈА
+БУГАРИН ИВАНА
+БУГАРИН ЈЕВРОСИМА
+БУГАРИН ЉИЉАНА
+БУГАРИН ЉУБОМИР
+БУГАРИН МАРИЈА
+БУГАРИН МИЛОШ
+БУГАРИН МИЛОРАД
+БУГАРИН РАДИСЛАВ
+БУГАРИН РАДОСЛАВ
+БУГАРИН СИНИША
+БУГАРИН СПАСОЈЕ
+БУГАРИН СТЕВАН
+БУГАРИН ВЕЛИБОР
+БУГАРИН ВЕСНА
+БУГАРИН ЗОРАН
+БУГАРИН ЗОРИЦА
+БУГАРИНОВИЋ МАРГАРЕТА
+БУГАРИУ ЈУЛИЈАН
+БУГАРСКИ ЖАРКО
+БУГАРСКИ ЖИКА
+БУГАРСКИ ЖИВАН ДИПЛ ИНГ
+БУГАРСКИ ЂОРЂЕ
+БУГАРСКИ ЂОРЂЕ
+БУГАРСКИ ЂУРИЦА
+БУГАРСКИ БОЈАНА
+БУГАРСКИ БРАНКО
+БУГАРСКИ ДИМИТРИЈЕ
+БУГАРСКИ ДИМИТРИЈЕ
+БУГАРСКИ ДРАГАН
+БУГАРСКИ ДРАГИЦА
+БУГАРСКИ ДРАГОЉУБ ДР
+БУГАРСКИ ДРАГОЉУБ
+БУГАРСКИ ДРАГОСЛАВ
+БУГАРСКИ ДРАГОСЛАВ
+БУГАРСКИ ДРАГОСЛАВ
+БУГАРСКИ ДУШАН ДР
+БУГАРСКИ ДУШАН
+БУГАРСКИ ДУШИЦА
+БУГАРСКИ ДУШИЦА
+БУГАРСКИ ДУШКО
+БУГАРСКИ ЕВИЦА
+БУГАРСКИ ЈОВАН
+БУГАРСКИ ЈУЛКА
+БУГАРСКИ КАТА
+БУГАРСКИ КРСТА
+БУГАРСКИ КСЕНИЈА
+БУГАРСКИ ЛАЗАР
+БУГАРСКИ ЛАЗАР
+БУГАРСКИ МИЛАН
+БУГАРСКИ МИЛАН
+БУГАРСКИ МИЛЕНА
+БУГАРСКИ МИЛЕНКО
+БУГАРСКИ МИЛЕТА
+БУГАРСКИ МИЛИЦА
+БУГАРСКИ МИЛОРАД
+БУГАРСКИ МИРА
+БУГАРСКИ МИРЈАНА
+БУГАРСКИ МИРЈАНА
+БУГАРСКИ МИРОСЛАВА
+БУГАРСКИ МИРОСЛАВ
+БУГАРСКИ НАДА
+БУГАРСКИ НЕДЕЉКО
+БУГАРСКИ НИКОЛА
+БУГАРСКИ ОЛИВЕРА
+БУГАРСКИ ПАЈА
+БУГАРСКИ ПАВЛЕ
+БУГАРСКИ РАДОСЛАВ
+БУГАРСКИ РАСТКО
+БУГАРСКИ РАТОМИР
+БУГАРСКИ САВА
+БУГАРСКИ САВА
+БУГАРСКИ СЛОБОДАН
+БУГАРСКИ СЛОБОДАН
+БУГАРСКИ СЛОБОДАН
+БУГАРСКИ СОФИЈА
+БУГАРСКИ СТЕВАН
+БУГАРСКИ СТЕВАН
+БУГАРСКИ СТЕВАН
+БУГАРСКИ СТЕВАН
+БУГАРСКИ СВЕТЛАНА
+БУГАРСКИ ТАТЈАНА
+БУГАРСКИ ВОЈИСЛАВА
+БУГАРСКИ ВОЈИСЛАВ
+БУГАРСКИ ВОЈИСЛАВ
+БУГАРСКИ ЗОРА
+БУГЕЉ ИВАН
+БУХА БРАНКА
+БУХА РАДИВОЈЕ
+БУХА ВУКАШИН
+БУХМИЛЕР АГНЕШ
+БУХМИЛЕР АТИЛА
+БУХМИЛЕР ЕВА
+БУХМИЛЕР ЈОСИП
+БУХМИЛЕР ЈОСИП
+БУХМИЛЕР КАРЛО
+БУИША МИЛИНКО
+БУИЛА АНА
+БУИЛА ИРИНЕЈ
+БУИЛА ЉУБИЦА
+БУИЛА МАКСИМИЛИЈАН
+БУИЛА МИРОСЛАВ
+БУИЛА СЛАВИЦА
+БУИЛА СЛАВОМИР
+БУЈАК ЕМИЛ
+БУЈАК МАТИЛДА
+БУЈАК САВА
+БУЈАНДРИЋ АНЂЕЛКА
+БУЈАНДРИЋ ЈОВАН
+БУЈАНДРИЋ ЉУБИЦА
+БУЈАНДРИЋ МАРИЈА
+БУЈАНДРИЋ МИЛИВОЈ
+БУЈАНДРИЋ МИТАР
+БУЈАНДРИЋ НИКОЛА
+БУЈАНДРИЋ ПАВЛЕ
+БУЈАНДРИЋ ПЕТАР
+БУЈАНДРИЋ СВЕТОЗАР
+БУЈАНДРИЋ ВЛАДИМИР
+БУЈАС МИЛЕНКО
+БУЈАС ВЕНЧЕСЛАВ
+БУЈДОША СТЕВАН
+БУЈДОШИК БОХОМИЛ
+БУЈДОШИК КЛАРА
+БУЈДОШИК МИРОСЛАВ
+БУЈДОШО ИШТВАН
+БУЈИШИЋ ЖИВКО
+БУЈИЋ БОРИВОЈЕ
+БУЈЛА ЕТЕЛКА
+БУЈЛА ЈАСМИНА
+БУЈНОВИЋ ЂОРЂЕ
+БУЈНОВИЋ МИЛИНКО
+БУКАЛОВ ЗОРА
+БУКАРА ДУШАНКА
+БУКАРИЦА ДАНИЦА
+БУКАРИЦА ЈОВАН
+БУКАТКА АНДРЕЈ
+БУКАТКА РАДОСЛАВ
+БУКАТКО ВЛАДИМИР
+БУКАТКОВ ИВАН
+БУКИЋ ЈАКОВ
+БУКИЛИЋ ДРАГА
+БУКИЛИЋ ДРАГИЦА
+БУКИН НИКОЛА ДИПЛ ИНГ
+БУКИНАЦ ЂОРЂЕ
+БУКИНАЦ БИЉАНА
+БУКИНАЦ БОГУМИЛА
+БУКИНАЦ ДИНА
+БУКИНАЦ ГЛИГОРИЈЕ
+БУКИНАЦ ИВАН
+БУКИНАЦ ЈУЛКА
+БУКИНАЦ ЛАЗАР
+БУКИНАЦ МИЛАДИН
+БУКИНАЦ МИЛАН
+БУКИНАЦ МИЛИЦА
+БУКИНАЦ МИЛОСАВА
+БУКИНАЦ МИРКО
+БУКИНАЦ МИРОСЛАВ
+БУКИНАЦ РУЖИЦА
+БУКИНАЦ СЛАВКО
+БУКИНАЦ СТАНКА
+БУКИНАЦ СТЕВАН
+БУКИНАЦ УРОШ
+БУКОВЧАНИН АЦА
+БУКОВАЧКИ МИОДРАГ
+БУКОВАЧКИ ПЕРА
+БУКОВАЧКИ СВЕТОЗАР
+БУКОВАЦ АНКИЦА
+БУКОВАЦ АТИЛА
+БУКОВАЦ СТЕВАН
+БУКОВАЦ ВЛАДО
+БУКОВАЛА ДЕСАНКА
+БУКОВИЧАНИН РЕЉА
+БУКОВИЋ АНДРАШ
+БУКОВИЦА ДИМИТРИЈЕ
+БУКОВИЦА РАНКО
+БУКТА НАДА
+БУКТА ЗВОНКО
+БУКУМИРОВИЋ МИЛОМИР
+БУКУМИРОВИЋ МИЛОРАД ДИПЛ ИНГ
+БУКУРЕЦКИ БРАНИСЛАВ
+БУКУРЕЦКИ СИНИША
+БУКУРИЋ ТАТЈАНА
+БУКУРОВ ЖАРКО
+БУКУРОВ ЖИВАН
+БУКУРОВ ЖИВАН
+БУКУРОВ БОШКО
+БУКУРОВ БРАНИСЛАВ ДР ПРОФ
+БУКУРОВ КСЕНИЈА
+БУКВА ВЕЛИМИР
+БУКВИЋ ЖЕЉКА
+БУКВИЋ АЛЕКСАНДАР
+БУКВИЋ БРАНКО
+БУКВИЋ БУДЕ
+БУКВИЋ ДАНЕ
+БУКВИЋ ДАНИЛО
+БУКВИЋ ДАНИЛО
+БУКВИЋ ДРАГАН
+БУКВИЋ ДУШАН
+БУКВИЋ ИЛИЈА
+БУКВИЋ ИЛИНКА
+БУКВИЋ ЈАНКО
+БУКВИЋ ЈЕЛИСАВЕТА
+БУКВИЋ ЈОВАН
+БУКВИЋ КОВИЉКА
+БУКВИЋ ЉУБОМИР
+БУКВИЋ МАРИЈА
+БУКВИЋ МАРИНКО
+БУКВИЋ МИЛЕНКО
+БУКВИЋ МИЛКА
+БУКВИЋ МИЛОШ
+БУКВИЋ МИЛОШ
+БУКВИЋ МИЛОШ
+БУКВИЋ МИЛОРАД
+БУКВИЋ МИРОСЛАВ
+БУКВИЋ МЛАДЕН
+БУКВИЋ НОВИЦА
+БУКВИЋ РАДОВАН
+БУКВИЋ СЛАВИЦА
+БУКВИЋ СОФИЈА
+БУКВИЋ СТЕВАН
+БУКВИЋ СВЕТОЗАР
+БУКВИЋ ТОМИСЛАВ
+БУКВИЋ ВЕЛИМИР
+БУКВИЋ ВЛАДО
+БУЛАИЋ РЕЉА
+БУЛАЈИЋ ЂУРО
+БУЛАЈИЋ ДАНИЦА
+БУЛАЈИЋ МИОДРАГ
+БУЛАЈИЋ НАТАЛИЈА
+БУЛАЈИЋ НЕДЕЉКО
+БУЛАЈИЋ ВЛАДИМИР
+БУЛАКИЋ ВУКАШИН
+БУЛАТОВИЋ АЛЕКСАНДАР
+БУЛАТОВИЋ БРАНИСЛАВ
+БУЛАТОВИЋ ДИМИТРИЈЕ
+БУЛАТОВИЋ ДРАГАН
+БУЛАТОВИЋ ДРАГАН
+БУЛАТОВИЋ ДУШАНКА
+БУЛАТОВИЋ ДУШАН
+БУЛАТОВИЋ ГРАДИМИР
+БУЛАТОВИЋ ИЛИЈА
+БУЛАТОВИЋ МИЛАДИН
+БУЛАТОВИЋ МИЛИЈАНА
+БУЛАТОВИЋ МИЛИНКО
+БУЛАТОВИЋ МИЛУТИН
+БУЛАТОВИЋ МОМИР
+БУЛАТОВИЋ НИКОЛА
+БУЛАТОВИЋ НИКОЛА
+БУЛАТОВИЋ НОВАК
+БУЛАТОВИЋ ПАВЛЕ
+БУЛАТОВИЋ ПЕРО
+БУЛАТОВИЋ ПРЕДРАГ
+БУЛАТОВИЋ РАДМИЛО
+БУЛАТОВИЋ РАДОЊА
+БУЛАТОВИЋ САВА
+БУЛАТОВИЋ СЛАЂАНА
+БУЛАТОВИЋ СПАСА
+БУЛАТОВИЋ СВЕТОЗАР
+БУЛАТОВИЋ ВОЈИН
+БУЛАТОВИЋ ВОЈИСЛАВ
+БУЛАТОВИЋ ЗЛАТИЈА
+БУЛАТОВИЋ ЗОРАН
+БУЛЕТИНАЦ МИЛОВАН
+БУЛЕВСКА ВЕРА
+БУЛИЋ ШУЋО
+БУЛИЋ АДИЛА
+БУЛИЋ АНТЕ
+БУЛИЋ АРИФ
+БУЛИЋ БОРИС
+БУЛИЋ ДРАГАН
+БУЛИЋ ДРАГОЉУБ
+БУЛИЋ ДУШАН
+БУЛИЋ МАРА
+БУЛИЋ МАРИЈА
+БУЛИЋ МАРИНА
+БУЛИЋ ОЗРЕН
+БУЛИЋ ПЕРСА
+БУЛИЋ ПЕТАР
+БУЛИЋ ПРЕДРАГ
+БУЛИЋ СМИЉА
+БУЛИЋ СТЕВАН
+БУЛИЋ ТОМИСЛАВ
+БУЛИК-ИЛЕАНА ДОРИНА
+БУЉ ЂУРА
+БУЉ БОСИЛЈКА
+БУЉ МИЛАН
+БУЉЧИК ЕУГЕН
+БУЉЧИК ЈОАКИМ
+БУЉЧИК МИХАЈЛО
+БУЉЧИК НИКОЛА
+БУЉЧИК ПАУЛИНА
+БУЉАК РАТКО
+БУЉАН ДРАГУТИН ДИПЛ ИНГ
+БУЉАН ПЕТАР
+БУЉАН СЛАВИЦА
+БУЉИЋ ИЛИЈА
+БУЉИЋ ЈЕЛЕНА
+БУЉИЋ ЈОВАН
+БУЉИЋ ЉУБИЦА
+БУЉИЋ МИЛАН
+БУЉИЋ МИЛЕ
+БУЉИЋ НОВАК
+БУЉИЋ ПАВО
+БУЉИЋ РАДОВАН
+БУЉИЋ СЕКУЛА
+БУЉИЋ СНЕЖАНА
+БУЉИЋ СТЕВА
+БУЉИЋ ВАСО
+БУЉИН БРАНКО
+БУЉИН СЛАВКО
+БУЉИН ТОМИСЛАВ
+БУЉОВЧИЋ СТИПАН
+БУЉУГИЋ РАДОЈЕ
+БУЛОВАН БРАНИСЛАВ
+БУЛОВИЋ ИРИНЕЈ
+БУЛУМ ПЕТАР
+БУЛУТ АНЂЕЛКО
+БУЛУТ НОВИЦА
+БУМБ АНТОН
+БУМБАРОСКИ РАДА
+БУМБИЋ МИЛАДИН ДР
+БУМБИЋ РАДМИЛА
+БУМБИЋ РАЈКО
+БУМБИЋ ВЕЉКО
+БУМБИЋ ВЕЉКО
+БУНЧИЋ ЂОРЂЕ
+БУНЧИЋ АЛЕКСАНДАР
+БУНЧИЋ АЛЕКСАНДАР
+БУНЧИЋ ДРАГАН
+БУНЧИЋ МАРИЈАНА
+БУНЧИЋ МИЛАН
+БУНАЈ МУХАМЕД
+БУНДАЛЕСКИ МИЛОШ
+БУНДАЛО БРАНКО
+БУНДАЛО НЕБОЈША
+БУНДАЛО НИКОЛА
+БУНДАЛО СЛАВКО
+БУНДАЛО СЛОБОДАН
+БУНДАЛО СЛОБОДАН
+БУНДИЋ АНТУН
+БУНЕТА АЛЕКСАНДАР
+БУНЕТА МИЛАН
+БУНЕТА СНЕЖАНА
+БУНЕТА ВУКОСАВА
+БУНИЋ ДРАГАН
+БУНИЋ МИЛАН
+БУЊАЦ ВАСО
+БУЊАЦ ВОЈИСЛАВ
+БУЊЕВЧЕВ ЂОРЂЕ
+БУЊЕВЧЕВ АЛЕКСАНДАР
+БУЊЕВЧЕВ СРЂАН
+БУЊЕВАЧКИ ЖИВОЈИН
+БУЊЕВАЧКИ БРАНКО
+БУЊЕВАЧКИ ДРАГИЊА
+БУЊЕВАЧКИ ЈОВАНКА
+БУЊЕВАЧКИ ЉУБИЦА
+БУЊЕВАЧКИ МИЛЕНА
+БУЊЕВАЧКИ ВОЈИСЛАВ
+БУЊИК ШАНДОР
+БУЊИК ДРАГИЦА
+БУЊИК ИВАН
+БУЊИК ЈОСИП
+БУЊИК КАРОЉ
+БУЊИК ЗОЛТАН
+БУЊИК ЗОЛТАН
+БУНОВИЋ ДРАГУТИН
+БУНОВИЋ ЛАЗАР
+БУНТ МИЈО
+БУРЧЕР ТОМИСЛАВ
+БУРШИЋ ТИНКА
+БУРАИ АЛЕКСАНДАР
+БУРАИ АНДРАШ
+БУРАИ КАРОЉ
+БУРАИ КАТИЦА
+БУРАИ ПЕТАР
+БУРАЈИ ЈОСИП
+БУРАЊ БЕЛА ДР ЛЕКАР
+БУРАЊ ЕНДРЕ
+БУРАЊ МАРТА
+БУРАЊ НАНДОР
+БУРАЊ СИДОНИЈА
+БУРАЊИ МАРИЈА
+БУРАЊИ НАНДОР
+БУРАЗОР ДРАГОЈА
+БУРАЗОР ЗДРАВКО
+БУРБАХ ГЕРХАРД
+БУРБАН ФИЛИП
+БУРДА МЕЛИНДА
+БУРДА СТАНИСЛАВ
+БУРЕВИЋ МИЛИЋ
+БУРГИЋ ДРАГОЈЕ
+БУРГИЋ ЈОВАН
+БУРГИЋ ПЕТАР
+БУРГИЈАШЕВ ВЕСЕЛИН
+БУРИЋ ЂОКО ДИПЛ ИНГ
+БУРИЋ ДИМИТРИЈЕ
+БУРИЋ ДУШАН ДР
+БУРИЋ ДУШАНКА
+БУРИЋ ФРАЊА
+БУРИЋ ГОРДАНА
+БУРИЋ КАТИЦА
+БУРИЋ КОСТА
+БУРИЋ ЛЕОНОРА
+БУРИЋ МИЛИВОЈЕ
+БУРИЋ НАДА
+БУРЈАН ЂОРЂЕ
+БУРЈАНОВСКИ СТОЈАН
+БУРКА ЕЛЕОНОРА ДР
+БУРКА ЕМИЛИЈА
+БУРКА ЕРЖЕБЕТ
+БУРКА ЈОВАН
+БУРКА МИРОСЛАВ
+БУРКА ПАВЛЕ
+БУРКА ПЕТАР
+БУРКА СОФИЈА
+БУРКА СТЕВАН
+БУРКА СТЕВАН
+БУРКЕРТ ЕДВИН
+БУРКИН ЖИВАН
+БУРКИН ЂОКА
+БУРЛАК НАТАЛИЈА
+БУРМАЈА НИКОЛА
+БУРМУЏИЈА БРАНКО
+БУРМУЏИЈА МИЛАН
+БУРМУЏИЈА НИКОЛА
+БУРНАЋ ФЕЛИКС
+БУРНАЋ ЈЕЛИСАВЕТА
+БУРНАЋ СТЕВАН
+БУРНАЋ ВЛАДИМИР
+БУРНОВ ИВАНА
+БУРНОВ ИВАН
+БУРНОВ ВЕСЕЛИНКА
+БУРОВАЦ НАДА
+БУРСАЋ ДАРИНКА
+БУРСАЋ ДРАГОСЛАВА ДИПЛ ПРАВНИК
+БУРСАЋ ЈОВАН
+БУРСАЋ ЉУБОМИР
+БУРСАЋ МИЛАНКА
+БУРСАЋ МИЛАН
+БУРСАЋ МИЛИЦА
+БУРСАЋ МИЛОРАД
+БУРСАЋ МИРКО
+БУРСАЋ НИКОЛА
+БУРСАЋ ПЕРА
+БУРСАЋ ПЕРСА
+БУРСАЋ СЛОБОДАН
+БУРСАЋ СЛОБОДАН
+БУРСАЋ ВЈЕКОСЛАВА
+БУРСАЋ ВЛАДО ДИПЛ ПРАВНИК
+БУРСИЋ СТЕВАН
+БУРСИЋ ВЛАДИМИР
+БУРУШ АЛЕКСАНДРА
+БУРУШ БОШКО
+БУРУМЏИЈА РАДЕ
+БУРЗАН МИРЈАНА
+БУРЗЕЛИЋ МИЛКА
+БУРЗЕЛИЋ ЗЛАТА
+БУСАРЧЕВИЋ СЛАВИЦА
+БУСАРЧЕВИЋ СТЕВАН
+БУСИЈА ЉУБИНКА
+БУСИЈА МИЛАН
+БУСОВ АЛЕКСИЈЕ ДИПЛ ИНГ
+БУСОВ ИГОР
+БУСУЛАЏИЋ МУСТАФА
+БУТА ЛАЗАР
+БУТА ВОЈИСЛАВ ДР
+БУТАШ ФЕРЕНЦ
+БУТЕР КСЕНИЈА
+БУТЕРЕР ИШТВАН
+БУТЕРЕР ЈУЛИЈА
+БУТЕРИН ДЕША
+БУТОР АЛЕКСАНДАР
+БУТОР ЕНДРЕ
+БУТОР МИХАЈЛО
+БУТОРАЦ ЈОСИП
+БУТОРАЦ МАРИЈА
+БУТОРАЦ ЗОРАН
+БУТУЛИЈА БРАНИСЛАВ
+БУТУРОВИЋ РАТКО
+БУТУРОВИЋ СВЕТОЗАР
+БУЗА ИРЕНА
+БУЗА КОРНЕЛИУ
+БУЗА МИХАЉ
+БУЗАШ ШАНДОР
+БУЗАШ ЈОСИП
+БУЗАШ ЈОСИП
+БУЗАШ ЛАЈОШ
+БУЗАШ ПАВАО
+БУЗАШ ПАВЛЕ
+БУЗАШИ ЈОСИП
+БУЗАШИ МИХАЈЛО
+БУЗАЏИЋ ЉИЉАНА
+БУЗАЏИЋ МИРЈАНА
+БУЗАЏИЈА НЕНАД
+БУЗАЏИЈА НОВАК
+БУЗАЉКО ЈУСУФ ДИПЛ ИНГ
+БУЗАНЧИЋ ЈОСИП
+БУЗАНЧИЋ НАДЕЖДА
+БУЗАНСКИ МИША
+БУЗАРЕВИЋ БРАНКО
+БУЗАРЕВИЋ РАДОЈКА
+БУЗАРЕВИЋ РУЖА
+БУЗАРОВ ЖИВАН
+БУЗАРОВ ЈОВАН
+БУЗАРОВ ЗОРА
+БУЗАРСКИ ЂОРЂЕ
+БУЗГО ЈАНОШ
+БУЗОГАЊ МАРИЈА
+ЦАЦКО МАРИЈА
+ЦАЈИЋ МИЛОШ
+ЦАЈНЕР ЈЕЛЕНА
+ЦАЈНЕР ЉУБИЦА
+ЦАЈНЕР СТЕВАН
+ЦАЈНЕР СТЕВА
+ЦАКИЋ ДУШАНКА
+ЦАКИЋ ГОРДАНА
+ЦАКИЋ ЈЕЛЕНКО
+ЦАКИЋ МИРОСЛАВ
+ЦАКИЋ ПЕТАР
+ЦАКИЋ СТЕВАН
+ЦАНДИР ФРАЊА
+ЦАНИЋ ЉИЉАНА
+ЦАНИЋ ВЕЛИМИР
+ЦАП ЂУРА
+ЦАП БОШКО
+ЦАП ЈОАКИМ
+ЦАП ЈОВАН
+ЦАП НЕНАД
+ЦАП НЕНАД
+ЦАП РАДОЈКА
+ЦАП ТАМАРА
+ЦАПАР-ЈАНКОВИЋ ВАЛЕРИЈА
+ЦАПАР ЈАНОШ
+ЦАПАР ЈОВАН
+ЦАПАР МАРИЈА
+ЦАПАР МАРИЈА
+ЦАПИК ЈОСИП
+ЦАПИК ЉУДЕВИТ
+ЦАР МАРИЈА
+ЦАРАН БОШКО
+ЦАРАН ГЕОРГЕ
+ЦАРАН ПЕРСА
+ЦАРАН ПЕТАР
+ЦАРАНОВИЋ СТАНОЈЕ
+ЦАРЕВИЋ ЖИВАН
+ЦАРЕВИЋ ЖИВКА
+ЦАРЕВИЋ ЂОРЂЕ
+ЦАРЕВИЋ ДУШАН
+ЦАРЕВИЋ ЕСТЕР
+ЦАРЕВИЋ КАТИЦА
+ЦАРЕВИЋ МИХАЈЛО
+ЦАРЕВИЋ МИЛЕНА
+ЦАРЕВИЋ МИЛЕ
+ЦАРЕВИЋ НАДА
+ЦАРЕВИЋ ПЕТАР
+ЦАРЕВИЋ САВА
+ЦАРЕВИЋ СЛАВКО
+ЦАРЕВИЋ СЛАВКО
+ЦАРЕВИЋ СТЕВАН
+ЦАРЕВИЋ СВЕТОЗАР
+ЦАРИЧИЋ СЛАВКО
+ЦАРИЋ АНДРИЈА
+ЦАРИЋ БРАНКО
+ЦАРИЋ ГОЈКО
+ЦАРИЋ ЛАЗАР
+ЦАРИЋ МАРИЈА
+ЦАРИЋ МИРЈАНА
+ЦАРИЋ СЛАВКО ДР ПРОФ
+ЦАРИЋ СЛОБОДАН ДР
+ЦАРИЋЕВИЋ МИЛЕНКО
+ЦАРО ГОРАН
+ЦАТИЋ ЛАЗАР
+ЦАВНИЋ МАРТА
+ЦАВНИЋ СВЕТЛАНА
+ЦАЗИН ДРАГАН
+ЦЕ ПАВЛЕ
+ЦЕЦЕЛ МАРИЈА
+ЦЕГЛЕДИ ЂУРО
+ЦЕХОЛА ФЕРЕНЦ
+ЦЕКИЋ БОРИСЛАВ
+ЦЕКИЋ БОРИВОЈЕ
+ЦЕКИЋ БОРКО
+ЦЕКИЋ ЈУЛКА
+ЦЕКИЋ ПЕТАР
+ЦЕКИЋ РАДМИЛА
+ЦЕКУШ ЕВА
+ЦЕЛИЋ БРАНКО
+ЦЕЛИН МИЛАН
+ЦЕЛИН МИЛАН
+ЦЕНАЈ ТАХИР
+ЦЕНДЕР АНГЕЛИНА
+ЦЕНИЋ МИЛОВАН
+ЦЕП СТЕВАН
+ЦЕПФ СТЕВАН
+ЦЕРГОЛ ВИДОСАВА
+ЦЕРИЋ ДАНИЦА
+ЦЕРИЋ МЕХМЕД
+ЦЕРНА РУДОЛФ
+ЦЕРОВАЦ ЗОРКА
+ЦЕРОВИЋ БАТРИЋ
+ЦЕРОВИЋ БОГДАН
+ЦЕРОВИЋ БОЈАНА
+ЦЕРОВИЋ ДАРИНКА
+ЦЕРОВИЋ ИКОНИЈА
+ЦЕРОВИЋ ЉУБИВОЈЕ
+ЦЕРОВИЋ МИШО
+ЦЕРОВИЋ НЕНАД
+ЦЕРОВИЋ НОВАК
+ЦЕРОВИЋ ПЕТАР
+ЦЕРОВИЋ СЛОБОДАН
+ЦЕРОВИЋ СРЕТЕН
+ЦЕРОВИЋ ТОМИСЛАВ
+ЦЕРОВИЋ УРОШ
+ЦЕРОВСКИ ДАНИЈЕЛ
+ЦЕСНАК ЈАНКО
+ЦЕСНАК ПАВЛЕ
+ЦЕСНАК ЗЛАТКО
+ЦЕТЕЊИ ЈОВАН
+ЦЕТИНА ЈОВАН
+ЦЕТИНА ЉИЉАНА
+ЦЕВЦ ФРАЊА
+ЦЕВЦ СОЊА
+ЦИБРИЋ ТОДОР
+ЦИБУЛА ЂУРА
+ЦИБУЛА БЕЛА
+ЦИБУЛА ЈАНКО
+ЦИБУЛА ЈОВАН
+ЦИБУЛА ЈОВАН
+ЦИБУЛА МАРЈЕНКА
+ЦИБУЛА МИША
+ЦИБУЛА ПЕРА
+ЦИЦЕРИ ФЕРЕНЦ
+ЦИЦЕРИ КАРОЉ
+ЦИЦЕРИ ЛАСЛО
+ЦИЦЕРИ МАТИЛДА
+ЦИЦЕРИ ПЕРА
+ЦИЦЕРИ ВИНКО
+ЦИЦКА ШЋЕФАН
+ЦИЦКА ЈАН
+ЦИЦМИЛ БОЖИДАР
+ЦИЦМИЛ БРАНКО
+ЦИЦМИЛ КРСТО
+ЦИЦМИЛ МАРИЈА
+ЦИЦМИЛ МАРКО
+ЦИЦМИЛ МИЛАН
+ЦИЦМИЛ СТОЈАН
+ЦИЦМИЛ ТАТЈАНА
+ЦИЦМИЛ ЗОРАН
+ЦИЦМИЛОВИЋ ДРАГАН
+ЦИЦМИЛОВИЋ ЗОРКА
+ЦИЦО ДУШАН
+ЦИЦВАРИН ЉУБОМИР
+ЦИФРИЋ ГАЛИБ
+ЦИГАН АНТУН
+ЦИГАН ИВАН
+ЦИГАЊ ЈОСИП
+ЦИГАНОВИЋ БРАНКО
+ЦИГАНОВИЋ ДАНЕ
+ЦИГАНОВИЋ ДУШАН
+ЦИГАНОВИЋ МИЛОРАД
+ЦИГАНОВИЋ ОСТОЈА
+ЦИГАНОВИЋ РАЈКО
+ЦИГАНОВИЋ СТЕВО
+ЦИГИЋ ИВАН
+ЦИГЛЕР СНЕЖАНА
+ЦИГЉЕЦКИ ФРАЊА
+ЦИГЉЕЦКИ ВЕРА
+ЦИКОРА ЖУЖАНА
+ЦИКОТА ЖЕЉКО
+ЦИКОТА ОЛГА
+ЦИКОТА СЛАВКО
+ЦИКУША ЈОВАН
+ЦИКУША ЗОРАН
+ЦИМБАЛ АЛЕКСАНДАР
+ЦИМБАЛ АЛЕКСАНДАР
+ЦИМБАЛ ТИБОР
+ЦИМБАЛ ВЕРИЦА
+ЦИМБАЉЕВИЋ ЗЛАТАНА
+ЦИМЕРМАН ЛАДИСЛАВ
+ЦИМЕРМАН СМИЉА
+ЦИНЦОВИЋ ЖИВКА
+ЦИНДЕР ВИДА
+ЦИНДРИЋ ЂОРЂЕ
+ЦИНДРИЋ ЕРЖЕБЕТ
+ЦИНДРИЋ ПЕТАР ДР
+ЦИНГАРА АЛЕКСАНДАР
+ЦИНГЕЛИ МИЛЕНА
+ЦИНГИ КАРЛО
+ЦИНКЛЕР ЈЕЛИСАВЕТА ДИПЛ ИНГ
+ЦИНКЛЕР ЈУЛИЈЕ
+ЦИНКЛЕР КАЛМАН ДИПЛ ИНГ
+ЦИНКЛЕР КАЛМАН ДИПЛ ИНГ
+ЦИНКЛЕР КАЛМАН
+ЦИНКЛЕР МАГДОЛНА
+ЦИНКОЦКИ ЂОРЂЕ
+ЦИНКОЦКИ ВОЈИСЛАВ
+ЦИПРУШ АЛЕКСАНДРА
+ЦИРБУС МАРИЈА
+ЦИРГЕР ДУШАНКА
+ЦИРОК ШАНДОР
+ЦИТКОВИЋ ИВКА
+ЦИТКОВИЋ СЛОБОДАН
+ЦИВРИЋ МИЛКА
+ЦМИЉАНОВИЋ ДРАГИША
+ЦОЦЕК ШТЕФАНИЈА
+ЦОЦЕК ИМРЕ
+ЦОЦЕК ЈОСИП
+ЦОЦЕК СТЕВАН
+ЦОЦИН МИРА
+ЦОЦО ВАХДЕТА
+ЦОЛИЋ БОЖИДАР
+ЦОЛИЋ БОГОСАВ
+ЦОЛИЋ ФРАЊА
+ЦОЛИЋ ЈОСИП
+ЦОЛИЋ КАТИЦА
+ЦОЛИЋ ЛАДИСЛАВ
+ЦОЛИЋ СВЕТЛАНА
+ЦОНИЋ ДРАГИЊА
+ЦОНИЋ ЈАНКО МР ИНГ
+ЦОНИЋ МИОДРАГ
+ЦОПКОВ ЖЕЉКО
+ЦРЕПИЋ ЛАДИСЛАВ
+ЦРЕПУЛИЋ ВИДОСАВА
+ЦРЕПУЉА ТОДОР
+ЦРЕВАР БОГДАН
+ЦРЕВАР МИЛУТИН ДИПЛ ИНГ
+ЦРЕВАР СИМА
+ЦРЕВАР СЛАВКО
+ЦРКВЕЊАКОВ ДАНИЦА
+ЦРКВЕЊАКОВ ДУШАНКА
+ЦРКВЕЊАКОВ СУЛТАНИЈА
+ЦРНЧЕВИЋ ДАРИНКА
+ЦРНЧЕВИЋ МИРКО
+ЦРНЧЕВИЋ МИРКО
+ЦРНЧЕВИЋ НЕДЕЉКА
+ЦРНЧЕВИЋ СЛАВКО
+ЦРНЧЕВИЋ ВЕРА
+ЦРНЧЕВИЋ ВЛАДО
+ЦРНАДАК ВЛАТКО
+ЦРНИ ВЕРИЦА
+ЦРНИ ЗОРИЦА
+ЦРНИЋ БРАНКА
+ЦРНИЋ ДРАГАН
+ЦРНИЋ ГОРАН
+ЦРНИЋ МАРКО
+ЦРНИЋ МИЛАН
+ЦРНИЋ МИЛУТИН
+ЦРНИЋ НИКОЛА
+ЦРНИЋ ОСТОЈА
+ЦРНИЋ РАДОМИР
+ЦРНИЋ СОФИЈА
+ЦРНИЋ УГЉЕША
+ЦРНИЋ ВАСА
+ЦРНИЋ ВЕРА
+ЦРЊАЦ МИЛЕНА
+ЦРЊАК ЖИВАНКА
+ЦРЊАКОВ ДИМИТРИЈЕ
+ЦРЊАНИН БРАНИСЛАВА
+ЦРЊАНИН ЗАГОРКА
+ЦРЊАНСКИ-ЧЕНГЕРИ КРИСТИНА
+ЦРЊАНСКИ ЖАРКО
+ЦРЊАНСКИ ЂОКА
+ЦРЊАНСКИ БУДИМКА
+ЦРЊАНСКИ ИВАН
+ЦРЊАНСКИ ЈЕЛЕНА
+ЦРЊАНСКИ КАТИЦА
+ЦРЊАНСКИ КУЗМАН
+ЦРЊАНСКИ ЛАЗАР
+ЦРЊАНСКИ РАДИВОЈ
+ЦРЊАНСКИ САЊА
+ЦРЊАНСКИ СТЕВАН
+ЦРЊАНСКИ ВЛАДИМИР
+ЦРЊАНСКИ ЗОРАН
+ЦРЊАНСКИ ЗОРАН
+ЦРНКОВИЋ НИКОЛА
+ЦРНКОВИЋ-САВИЋ ЉИЉАНА
+ЦРНКОВИЋ ЗЛАТА
+ЦРНОБАРАЦ ДУШАН
+ЦРНОБАРАЦ ЈОВАН
+ЦРНОБРЊА МИЛАН
+ЦРНОБРЊА МИРЈАНА
+ЦРНОБРЊА ПЕТАР
+ЦРНОГЛАВАЦ МИХАЈЛО
+ЦРНОГЛАВАЦ РАДОСЛАВ
+ЦРНОГОРЧЕВИЋ ЈЕЛИЦА
+ЦРНОГОРАЦ ЂОКО
+ЦРНОГОРАЦ БОРИША
+ЦРНОГОРАЦ БОСИЉКА
+ЦРНОГОРАЦ ДРАГАН
+ЦРНОГОРАЦ ДРАГОЉУБ
+ЦРНОГОРАЦ ДУШАН
+ЦРНОГОРАЦ МИЛАН
+ЦРНОГОРАЦ МИЛКА
+ЦРНОГОРАЦ МИЛОСАВ
+ЦРНОГОРАЦ МИРОСЛАВ
+ЦРНОГОРАЦ ПАВЛЕ
+ЦРНОГОРАЦ СЛОБОДАН
+ЦРНОГОРАЦ СВЕТЛАНА
+ЦРНОГОРАЦ ВЕЛИМИР ДР
+ЦРНОГОРАЦ ЗДРАВКО
+ЦРНОГОРАЦ ЗОРИЦА
+ЦРНОЈА АНТЕ
+ЦРНОЈА СЛАВИЦА
+ЦРНОЈАЧКИ БОГДАН
+ЦРНОЈАЧКИ ДАНИЦА ДР
+ЦРНОЈАЧКИ ДАНИЛО
+ЦРНОЈАЧКИ ДРАГАН
+ЦРНОЈАЧКИ ДРАГОМИР
+ЦРНОЈАЧКИ ГОРДАНА
+ЦРНОЈАЧКИ ЈОВАН
+ЦРНОЈАЧКИ КАТИЦА
+ЦРНОЈАЧКИ МИЛЕНА ДР
+ЦРНОЈАЧКИ МИЛОШ
+ЦРНОЈАЧКИ МЛАДЕН
+ЦРНОЈАЧКИ ОБРАД
+ЦРНОЈАЧКИ ОБРАД
+ЦРНОЈАЧКИ РАДМИЛА
+ЦРНОЈАЧКИ СОФИЈА
+ЦРНОЈАЧКИ ВЛАДИМИР
+ЦРНОЈАЧКИ ЗОРИЦА
+ЦРНОКРАК ЈОВАН
+ЦРНОКРАК МИЛОШ
+ЦРНОКРАК СТЕВАН
+ЦРНОМАРКОВИЋ БОГДАН
+ЦРНОМАРКОВИЋ ДУШАН
+ЦРНОМАРКОВИЋ ДУШАН
+ЦРНОМАРКОВИЋ ГОЈКО
+ЦРНОМАРКОВИЋ ЛУКА
+ЦРНОМАРКОВИЋ НИКОЛА
+ЦРНОМАРКОВИЋ ПЕТАР
+ЦРНОМАРКОВИЋ РАНКО
+ЦРНОМАРКОВИЋ СТОЈАН
+ЦРНОМАРКОВИЋ ВЕРИЦА
+ЦРНОМУТ МИХАЈЛО
+ЦРВЕНИ ЖАРКО
+ЦРВЕНИ АНА
+ЦРВЕНИ БИСЕРКА
+ЦРВЕНИ ДРАГАН
+ЦРВЕНИ МАРКО
+ЦРВЕНИ МИЛАН
+ЦРВЕНИ МИЛЕНКО
+ЦРВЕНИ МИОМИР
+ЦРВЕНИ СИМА
+ЦРВЕНИ СТЕВАН
+ЦРВЕНИ СТЕВАН
+ЦРВЕНКО ЈАНКО
+ЦРВЕНКО МИЛАН
+ЦРВЕНКО РАДОМИР
+ЦРВЕНКОВ БОРИСЛАВ
+ЦРВЕНКОВ МИЛОСАВА
+ЦРВЕНКОВ ПЕТАР
+ЦРВЕНКОВИЋ ЂОРЂЕ
+ЦРВЕНКОВИЋ ЂУРЂИЦА
+ЦРВЕНКОВИЋ ПЕТАР
+ЦРВЕНКОВИЋ РАДЕНКО
+ЦРВЕНКОВИЋ СИНИША ДР
+ЦРВЕНКОВИЋ ВИТОМИР
+ЦУЦАК МИРЈАНА
+ЦУЦАК РАХИМ
+ЦУЦИЋ АЛЕКСАНДАР
+ЦУЦИЋ БОРИСЛАВ
+ЦУЦИЋ ГИНА
+ЦУЦИЋ ЈЕЛКА
+ЦУЦИЋ ЉИЉАНА
+ЦУЦИЋ СТАНА
+ЦУЦИЋ СТАНОЈЛО
+ЦУЦИЋ ВЕРА
+ЦУЦИЋ ВЕСНА
+ЦУЦИЋ ВЛАДИМИР
+ЦУЦОВИЋ РАФЕТ
+ЦУГЛИ ЈОВАН
+ЦУКИЋ РАДА
+ЦУКИЋ РАДОЈИЦА
+ЦУКИЋ СВЕТОЗАР
+ЦУЊАК МИЛУТИН
+ЦУПАЋ СВЕТОМИР ДИПЛ ПРАВНИК
+ЦУПАРИЋ ТОМА
+ЦУРАКОВИЋ МИЛИВОЈЕ
+ЦВЕЈАНОВ ЈЕЛЕНА
+ЦВЕЈАНОВ НЕБОЈША
+ЦВЕЈАНОВ ПРЕДРАГ
+ЦВЕЈАНОВ ВЕЛИБОР
+ЦВЕЈАНОВИЋ КСЕНИЈА
+ЦВЕЈАНОВИЋ ЛАЗАР
+ЦВЕЈАНОВИЋ НАДА
+ЦВЕЈАНОВИЋ НИКОЛА
+ЦВЕЈАНОВИЋ СПОМЕНКА
+ЦВЕЈАНОВИЋ ВИДОСАВА
+ЦВЕЈАНОВИЋ ВОЈИСЛАВ
+ЦВЕЈАНОВИЋ ЗОРИЦА
+ЦВЕЈИЋ ЧЕДОМИР
+ЦВЕЈИЋ ЖАРКО
+ЦВЕЈИЋ ЖИВОЈИН
+ЦВЕЈИЋ ЂОРЂЕ ДР
+ЦВЕЈИЋ ЂУРЂИНКА
+ЦВЕЈИЋ АЛЕКСАНДАР ДР
+ЦВЕЈИЋ АЛЕКСАНДАР
+ЦВЕЈИЋ АЛЕКСАНДАР
+ЦВЕЈИЋ БОЖИДАР
+ЦВЕЈИЋ БОРИВОЈ
+ЦВЕЈИЋ ДРАГАН
+ЦВЕЈИЋ ДРАГОСЛАВ
+ЦВЕЈИЋ ДРАГУТИН
+ЦВЕЈИЋ ИГЊАТ
+ЦВЕЈИЋ ИВАН
+ЦВЕЈИЋ ЈЕЛЕНА
+ЦВЕЈИЋ КАТИЦА
+ЦВЕЈИЋ ЛАЗАР
+ЦВЕЈИЋ МИЛАН
+ЦВЕЈИЋ МИЛАН
+ЦВЕЈИЋ МИЛИСАВ
+ЦВЕЈИЋ МИЛОШ
+ЦВЕЈИЋ МИОДРАГ
+ЦВЕЈИЋ МИРЈАНА
+ЦВЕЈИЋ НАДЕЖДА
+ЦВЕЈИЋ НЕДЕЉКА
+ЦВЕЈИЋ НИКОЛА ДИПЛ ИНГ
+ЦВЕЈИЋ НИКОЛА
+ЦВЕЈИЋ ОЛГА
+ЦВЕЈИЋ ПАВЛЕ
+ЦВЕЈИЋ РАДОСЛАВ
+ЦВЕЈИЋ РАДОВАН
+ЦВЕЈИЋ РУЖИЦА
+ЦВЕЈИЋ СЛАВОЉУБ
+ЦВЕЈИЋ СТЕВАН
+ЦВЕЈИЋ СТЕВАН
+ЦВЕЈИЋ ВЛАДАН
+ЦВЕЈИЋ ЗАГОРКА
+ЦВЕЈИН БОЖА
+ЦВЕЈИН БОЈАНА
+ЦВЕЈИН ДУШАН ДИПЛ ИНГ
+ЦВЕЈИН МАРИЈА
+ЦВЕЈИН МИЛАН
+ЦВЕЈИН МИЛОШ
+ЦВЕЈИН МИРЈАНА
+ЦВЕЈИН НОВАК
+ЦВЕЈИН СЛОБОДАН
+ЦВЕЈИН ТРИВА
+ЦВЕКИЋ МИЛЕТА
+ЦВЕКИЋ ВОЈИН
+ЦВЕКИЋ ЗЛАТИЦА
+ЦВЕРДЕЉ ЈАНКО
+ЦВЕРДЕЉ РУЖА
+ЦВЕРЊАК ЈЕНЕ
+ЦВЕТАНОВИЋ АНИТА
+ЦВЕТАНОВИЋ ДРАГОСЛАВ
+ЦВЕТАНОВИЋ ЈЕЛЕНА
+ЦВЕТАНОВИЋ ЈЕРМИНА ДР ЛЕКАР
+ЦВЕТАНОВИЋ МАГДОЛНА
+ЦВЕТАНОВИЋ РАДИЦА
+ЦВЕТАНОВИЋ СТОЈАДИН
+ЦВЕТАНОВИЋ СТОЈАНКА
+ЦВЕТАНОВИЋ ВЕЉА
+ЦВЕТАНОВИЋ ЗОРАН
+ЦВЕТАНОВИЋ ЗОРАН
+ЦВЕТАНОВИЋ ЗОРАН
+ЦВЕТАНОВСКИ МАНОЈЛО
+ЦВЕТАНОВСКИ МИЛЕ
+ЦВЕТИЧАНИН ЉУБИЦА
+ЦВЕТИЧАНИН МИЛКА
+ЦВЕТИЧАНИН ВЕСНА
+ЦВЕТИЧАНИН ЗОРАН
+ЦВЕТИЋ БОШКО
+ЦВЕТИЋ ДРАГОМИР
+ЦВЕТИЋ ЛАЗАР
+ЦВЕТИЋ ЛАЗО
+ЦВЕТИЋ ЉУБИЦА
+ЦВЕТИЋ МАРИЈА
+ЦВЕТИЋ ПЕТАР
+ЦВЕТИЋ СЛАВКО
+ЦВЕТИЋ СТАНКО
+ЦВЕТИЋАНИН БОШКО
+ЦВЕТИЋАНИН БРАНКО
+ЦВЕТИЋАНИН ДАНЕ
+ЦВЕТИЋАНИН ДАНИЦА
+ЦВЕТИЋАНИН ДРАГОМИР
+ЦВЕТИЋАНИН ИЛИЈА
+ЦВЕТИЋАНИН ИРЕНА
+ЦВЕТИЋАНИН МИЛОШ
+ЦВЕТИЋАНИН МИЛОРАД
+ЦВЕТИЋАНИН МИРОСЛАВ
+ЦВЕТИЋАНИН СНЕЖАНА
+ЦВЕТИЋАНИН ЗОРАН
+ЦВЕТИНИЋ МАРКО
+ЦВЕТИНИЋ МАТИЈА
+ЦВЕТИЊАНИН ТОМИСЛАВ
+ЦВЕТИНОВ САВА
+ЦВЕТИНОВИЋ АНКА
+ЦВЕТИНОВИЋ БРАНА
+ЦВЕТИНОВИЋ БРАНКО
+ЦВЕТИНОВИЋ ДИМИТРИЈЕ
+ЦВЕТИНОВИЋ ИЛИЈА
+ЦВЕТИНОВИЋ ИВАНКО
+ЦВЕТИНОВИЋ МИЛАН
+ЦВЕТИНОВИЋ СИМО
+ЦВЕТИНОВИЋ ВЕРА
+ЦВЕТИНОВИЋ ЗОРА
+ЦВЕТКОВ ЈОВАН
+ЦВЕТКОВ МИЛАН ДИПЛ ИНГ
+ЦВЕТКОВ РАДОЈЕ
+ЦВЕТКОВИЋ ЧЕДОМИР
+ЦВЕТКОВИЋ ЖИВОЈИН
+ЦВЕТКОВИЋ ЂОРЂЕ
+ЦВЕТКОВИЋ ЂОРЂЕ
+ЦВЕТКОВИЋ АЛЕКСАНДАР
+ЦВЕТКОВИЋ АЛЕКСАНДАР
+ЦВЕТКОВИЋ АЛЕКСАНДАР
+ЦВЕТКОВИЋ АНКА
+ЦВЕТКОВИЋ БОЈАНА
+ЦВЕТКОВИЋ БОРА
+ЦВЕТКОВИЋ БОРИСЛАВ
+ЦВЕТКОВИЋ БОРИСЛАВ
+ЦВЕТКОВИЋ БРАНИСЛАВ
+ЦВЕТКОВИЋ БРАНКО
+ЦВЕТКОВИЋ БРАНКО
+ЦВЕТКОВИЋ БУДИМИР
+ЦВЕТКОВИЋ ДАРИНКА
+ЦВЕТКОВИЋ ДЕСИМИР
+ЦВЕТКОВИЋ ДРАГАН
+ЦВЕТКОВИЋ ДРАГАН
+ЦВЕТКОВИЋ ДРАГАН
+ЦВЕТКОВИЋ ДРАГАН
+ЦВЕТКОВИЋ ДРАГИША
+ЦВЕТКОВИЋ ДРАГОЉУБ
+ЦВЕТКОВИЋ ДРАГОМИР МР
+ЦВЕТКОВИЋ ДРАГОМИР
+ЦВЕТКОВИЋ ДУШАН
+ЦВЕТКОВИЋ ДУШАН
+ЦВЕТКОВИЋ-ГЛАДИЋ СМИЉА
+ЦВЕТКОВИЋ ГРОЗДА
+ЦВЕТКОВИЋ ИЛИЈА
+ЦВЕТКОВИЋ ИВАНКА
+ЦВЕТКОВИЋ ЈЕЛЕНА
+ЦВЕТКОВИЋ ЈЕЛЕНА
+ЦВЕТКОВИЋ ЈЕЛКА
+ЦВЕТКОВИЋ ЈОВАН
+ЦВЕТКОВИЋ ЈОВАН
+ЦВЕТКОВИЋ ЈОВАН
+ЦВЕТКОВИЋ ЛИВИА
+ЦВЕТКОВИЋ ЉИЉАНА
+ЦВЕТКОВИЋ ЉИЉАНА
+ЦВЕТКОВИЋ МЕЛАНИЈА
+ЦВЕТКОВИЋ МИЛАН
+ЦВЕТКОВИЋ МИЛАН
+ЦВЕТКОВИЋ МИЛИЦА
+ЦВЕТКОВИЋ МИОДРАГ
+ЦВЕТКОВИЋ МИОДРАГ
+ЦВЕТКОВИЋ МИОДРАГ
+ЦВЕТКОВИЋ МИРА
+ЦВЕТКОВИЋ МИРЈАНА
+ЦВЕТКОВИЋ МИРОСЛАВ ДР
+ЦВЕТКОВИЋ МИРОСЛАВ
+ЦВЕТКОВИЋ НИКОЛА
+ЦВЕТКОВИЋ НИКОЛА
+ЦВЕТКОВИЋ НИКОЛА
+ЦВЕТКОВИЋ ПЕТАР
+ЦВЕТКОВИЋ РАДМИЛА
+ЦВЕТКОВИЋ РАДОЈКО
+ЦВЕТКОВИЋ РАДОСЛАВ
+ЦВЕТКОВИЋ РАДОСЛАВ
+ЦВЕТКОВИЋ РАДОВАН
+ЦВЕТКОВИЋ РАДУЛА
+ЦВЕТКОВИЋ РАТОМИР
+ЦВЕТКОВИЋ РИСТО
+ЦВЕТКОВИЋ РУЖИЦА
+ЦВЕТКОВИЋ СЛАВОЉУБ
+ЦВЕТКОВИЋ СОКА
+ЦВЕТКОВИЋ СРБОБРАН
+ЦВЕТКОВИЋ СТАНКО
+ЦВЕТКОВИЋ СТАНОЈЕ
+ЦВЕТКОВИЋ СТАНОЈЕ
+ЦВЕТКОВИЋ СВЕТОЗАР
+ЦВЕТКОВИЋ ТАТЈАНА
+ЦВЕТКОВИЋ ТОНИ
+ЦВЕТКОВИЋ ВЕЛИМИР
+ЦВЕТКОВИЋ ВЛАДИМИР
+ЦВЕТКОВИЋ ЗОРА
+ЦВЕТКОВСКИ БОРИС
+ЦВЕТКОВСКИ ДРАГОЉУБ
+ЦВЕТКОВСКИ НИКОЛА
+ЦВЕТКОВСКИ ВОЈО
+ЦВЕТОЈЕВИЋ ЉИЉАНА
+ЦВЕТОЈЕВИЋ ЉИЉАНА
+ЦВЕТОЈЕВИЋ МИЛИСАВ
+ЦВЕТОЈЕВИЋ СЛАВКО
+ЦВИЈАН МАРИЈА
+ЦВИЈАН МАРКО
+ЦВИЈАНОВИЋ АНЂА
+ЦВИЈАНОВИЋ АНА
+ЦВИЈАНОВИЋ АНТО
+ЦВИЈАНОВИЋ БОШКО
+ЦВИЈАНОВИЋ БОРО
+ЦВИЈАНОВИЋ ДОБРИЦА
+ЦВИЈАНОВИЋ ДРАГАН
+ЦВИЈАНОВИЋ ДРАГУТИН
+ЦВИЈАНОВИЋ ДУШАНКА
+ЦВИЈАНОВИЋ ИЛИЈА
+ЦВИЈАНОВИЋ МИЛАН
+ЦВИЈАНОВИЋ МИЛАН
+ЦВИЈАНОВИЋ МИЛАН
+ЦВИЈАНОВИЋ МИЛЕВА
+ЦВИЈАНОВИЋ МИРОСЛАВ
+ЦВИЈАНОВИЋ МОМИР
+ЦВИЈАНОВИЋ ПЕТАР
+ЦВИЈАНОВИЋ РАДЕ
+ЦВИЈАНОВИЋ РАНКО
+ЦВИЈАНОВИЋ САВА
+ЦВИЈАНОВИЋ СЛАВКО
+ЦВИЈАНОВИЋ СНЕЖАНА
+ЦВИЈАНОВИЋ ВОЈИСЛАВ
+ЦВИЈАНОВИЋ ЗЛАТА
+ЦВИЈЕТАН МИРКО
+ЦВИЈЕТИЧАНИН ЈОВО
+ЦВИЈЕТИЋ ИГОР
+ЦВИЈЕТИЋ ЈОВО
+ЦВИЈЕТИЋ МИЛЕ
+ЦВИЈЕТИЋ НАДА
+ЦВИЈЕТИНОВИЋ РУЖА
+ЦВИЈЕТИНОВИЋ РУЖИЦА
+ЦВИЈЕТИНОВИЋ СИНИША
+ЦВИЈИЋ ЖЕЉКО
+ЦВИЈИЋ ДРАГАН
+ЦВИЈИЋ ГОРАН
+ЦВИЈИЋ ЈЕЛИСАВА
+ЦВИЈИЋ ЈОВАНКА
+ЦВИЈИЋ МИЛЕНКО
+ЦВИЈИЋ МИОДРАГ
+ЦВИЈИЋ МЛАЂА
+ЦВИЈИЋ НИКОЛА
+ЦВИЈИЋ ПАНТЕ
+ЦВИЈИЋ РУЖИЦА
+ЦВИЈИЋ СТЕВАН
+ЦВИЈИН БРАНКО
+ЦВИЈОВИЋ МИЛЕНКО
+ЦВИЈОВИЋ МИЛИВОЈЕ
+ЦВИЈОВИЋ НЕЂЕЉКА
+ЦВИЈОВИЋ РАДОСАВ
+ЦВИЈОВИЋ ВОЈИН
+ЦВИКИЋ МИХАИЛО
+ЦВИНГ ЈОСИП
+ЦВИТАНОВИЋ СНЕЖАНА
+ЦВИТКО ПЕТАР
+ЦВИТКОВАЦ МАРКО
+ЦВЈЕТАН ОЛГА
+ЦВЈЕТИЋ ИЛИЈА
+ЦВЈЕТИЋАНИН ЖИВКО
+ЦВЈЕТИЋАНИН ГОЈКО
+ЦВЈЕТИЋАНИН СТЕВО
+ЦВЈЕТКОВИЋ МИОДРАГ
+ЦВЈЕТКОВИЋ НЕБОЈША
+ЦВЈЕТОЈЕВИЋ ЧЕДОМИР
+ЦВОРОВИЋ РАДОШ
+ЦВРКАЉ ЂУРО
+ЏАБАСАН ДРАГОЈЕ
+ЏАБИЋ МИЛКА
+ЏАЏИЋ ВУКОСАВА
+ЏАФЕРОВСКИ РЕЂЕП
+ЏАФИЋ ХАМДИЈА
+ЏАФО МАТИЈА
+ЏАЈА МАРИЦА
+ЏАКИЋ ЧЕДО
+ЏАКИЋ БОЖАНА
+ЏАКИЋ ЛАЗА
+ЏАКОВИЋ ДРАГАН
+ЏАКУЛА ЕРЖЕБЕТ
+ЏАКУЛА ЕРЖЕБЕТ
+ЏАКУЛА ИВАН
+ЏАКУЛА МАРИЦА
+ЏАКУЛА НЕДЕЉКО
+ЏАКУЛА ПЕТАР
+ЏАКУЛА РАДЕ
+ЏАКУЛА ВИДОСАВ
+ЏАКУЛИН ДУШАНКА
+ЏАКУЛИН ПЕТАР
+ЏАКУЛИН СТЕВАН
+ЏАЛИЋ СТОЈАН
+ЏАМБАРСКИ ЈОВАН
+ЏАМБАС ДУШАН ДР ЛЕКАР
+ЏАМБАС МИЛЕ
+ЏАМБАСОВИЋ МИЛЕНКО
+ЏАМБИЋ БРАНКО
+ЏАМБИЋ МИЛОВАН
+ЏАМБИЋ РАДОВАН
+ЏАМБИЋ СЛАВКО
+ЏАМБИЋ СРЕТА
+ЏАНИЋ САВА
+ЏАНИЋ СТАЗА
+ЏАРИЋ ДОБРИНКА
+ЏАРИЋ РАДОМИР
+ЏЕЛЕТОВИЋ МИЛАДИН
+ЏЕЛЕТОВИЋ МИЛАН
+ЏЕЛЕТОВИЋ МЛАДЕН
+ЏЕЛЕТОВИЋ РАДОЈКА
+ЏЕЛЕТОВИЋ СЛОБОДАН
+ЏЕЛЕТОВИЋ ТОМО
+ЏЕЛИЛОВИЋ ЈАНА
+ЏЕПИНА ЈОВАН
+ЏЕВЕЛЕКИДИС МАРИНА
+ЏЕВЕЛЕКИДИС ПАНТА
+ЏЕВЕР НЕДЕЉКО
+ЏЕВЕРДАНОВИЋ АНИТА
+ЏЕВЕРДАНОВИЋ ЛАЗАР
+ЏЕВЕРДАНОВИЋ НАСТО
+ЏЕВЕРДАНОВИЋ ВЕЛИЗАР
+ДЖИДА КАТИЦА
+ЏИДА КАТИЦА
+ЏИДА МИЛАДИН
+ЏИДА МИЛОМИР
+ЏИГУРАШ МИЛЕНКО
+ЏИГУРСКИ БОРИВОЈ
+ЏИГУРСКИ БРАНИМИР
+ЏИГУРСКИ БРАНКО
+ЏИГУРСКИ ДАНИЛО
+ЏИГУРСКИ ДУШКО
+ЏИГУРСКИ ЉИЉАНА
+ЏИГУРСКИ ЉИЉАНА
+ЏИГУРСКИ МАРИЈА
+ЏИГУРСКИ МАРИЈА
+ЏИГУРСКИ МИЛАН
+ЏИГУРСКИ МИЛЕНКО
+ЏИГУРСКИ ПЕТАР
+ЏИГУРСКИ ПРЕДРАГ
+ЏИКИЋ МИЛАН
+ЏИЛИТОВ АЛЕКСАНДАР
+ЏИЛИТОВ КАТИЦА
+ЏИЛИТОВ СТЕВАН
+ЏИЛИТОВ СТЕВА
+ЏИЛИТОВ ВЕЛИНКА
+ЏИЛВИЏИЈЕВ МИТКО
+ЏИН МИРКО
+ЏИНИЋ МИРОСЛАВ ДР
+ЏИНИЋ МИРОСЛАВ
+ЏИНОВИЋ ВЕСЕЛИН
+ЏИРИЋ РУЖИЦА
+ЏОЏО РИСТО
+ЏОДАН ДРАГА
+ЏОДАН МИРЈАНА
+ЏОДАН НИКОЛА
+ЏОДАН ВЕРА
+ЏОГАНОВИЋ МИЛОРАД
+ЏОГОВИЋ ЖИВАН
+ЏОГОВИЋ МИЛУН
+ЏОЛЕВ АСЕН ДР СТОМАТОЛОГ
+ЏОЛЕВ АСЕН
+ЏОЛЕВ АСЕН
+ЏОЛЕВ МИТКО
+ЏОЛЕВ ПАНДЕ
+ЏОЛИЋ ГОРДАНА
+ЏОЛИЋ ТОМИСЛАВ
+ЏОМБА ЖИВКО
+ЏОМБЕТА КОСТА
+ЏОМБЕТА МИЛОШ
+ЏОМБЕТА НИКОЛА
+ЏОМБЕТА СВЕТОЗАР
+ЏОМБЕТА ВЛАДО
+ЏОМБИЋ ДУШАН
+ЏОМБИЋ МИЉА
+ЏОМБИЋ СОКА
+ЏОНЛЕЗ ПИРОШКА
+ЏОПАЛИЋ ДРАГАН
+ЏУЏАР ЂУРА
+ЏУЏАР ЈОАКИМ
+ЏУЏАР СЛАВКО
+ЏУДОВИЋ СМИЉКА
+ЏУДОВИЋ ВАСО
+ЏУКЛЕВСКИ САША
+ЏУКЉЕВ ДРАГАН
+ЏУКЉЕВ СТОЈАН
+ЏУНИЋ ЖИВОРАД
+ЏУНИЋ МИЛИВОЈЕ
+ЏУНИЋ МИРЈАНА
+ЏУНИЋ РАДОМИР
+ЏУЊА АМАЛИЈА
+ЏУЊА ЕВГЕНИЈЕ
+ЏУЊА ГОРДАНА
+ЏУЊА ИРЕНА
+ЏУЊА ИВАН
+ЏУЊА ЈАКИМ
+ЏУЊА ЈАНКО
+ЏУЊА ЈЕЛЕНА
+ЏУЊА ЉУБОМИР
+ЏУЊА МИРОН
+ЏУЊА ВЛАДИМИР
+ЏУЊА ЗВОНИМИР
+ЏУВЕР ВЕСЕЛИНКА
+ЏУВЕР ВОЈИСЛАВ
+ЏУВЕРОВИЋ ИВАНКА
+ДАЧЕВИЋ МИЛАН
+ДАЧЕВИЋ МОМИР
+ДАЧИЋ ДУШАН
+ДАЧИЋ КРИСТИНА
+ДАЧИЋ ЉУБОМИР
+ДАЧИЋ МИША
+ДАЧИЋ МИЛАН ПРОФЕСОР
+ДАЧИЋ МИЛАН
+ДАЧИЋ МИЛИЦА
+ДАЧИЋ НАДЕЖДА
+ДАЧИЋ РАДМИЛА
+ДАЧИЋ ВЕЛИНКА
+ДАЧИЋ ВЛАСТИМИР
+ДАШИЋ-ГУЛД ЉИЉАНА
+ДАШИЋ МАРИЈА
+ДАШИЋ МИЛЕНКО
+ДАШИЋ РАДУЛЕ
+ДАШИЋ ВЛАДО
+ДАЖЂУ НИСТОР
+ДАБАНОВИЋ ДАНИЦА
+ДАБАНОВИЋ ВАСИЛИЈЕ
+ДАБЕРЕР АНТОНИЈА
+ДАБЕТИЋ РАДИСАВ
+ДАБЕТИЋ РАДОМИР
+ДАБИЋ ЧЕДОМИР ДИПЛ ОЕЦ
+ДАБИЋ ЂОРЂЕ
+ДАБИЋ АЛЕКСАНДАР
+ДАБИЋ БОРКО
+ДАБИЋ ГОСПАВА
+ДАБИЋ ЈОВАН
+ДАБИЋ ЈОВАН
+ДАБИЋ МАРИЈА
+ДАБИЋ МАРКО
+ДАБИЋ МИЛАН
+ДАБИЋ МИЛОШ
+ДАБИЋ МИЛОРАД
+ДАБИЋ МИЛУТИН
+ДАБИЋ МИОДРАГ
+ДАБИЋ НЕДЕЉКО
+ДАБИЋ НЕНАД
+ДАБИЋ НЕНАД
+ДАБИЋ НЕНАД
+ДАБИЋ РАДОМИР
+ДАБИЋ СЛАВКО
+ДАБИЋ СТЕВАН
+ДАБИЋ СВЕТА
+ДАБИЋ ВОЈИСЛАВ
+ДАБИН ЂОРЂЕ
+ДАБОВИЋ БОГДАН
+ДАБОВИЋ БРАНКО
+ДАЦИН ЖЕЉКО
+ДАДАИ ЂУЛА
+ДАДАИ БАРБАРА
+ДАДАИ ЛАДИСЛАВ
+ДАДАИ ЛАДИСЛАВ
+ДАДАИ ЛАСЛО
+ДАДАИ СТЕВАН
+ДАДИЋ БРАНИСЛАВ
+ДАДИЋ ЉУБИЦА
+ДАИЋ ЛУКА
+ДАИЋ МИЛАН
+ДАЈЧ МИХАЈЛО
+ДАЈЧ НАДА
+ДАЈЧ РУБЕН
+ДАЈЧ ЗОРИЦА
+ДАЈИЋ БРАНКО
+ДАЈИЋ ДРАГИЦА
+ДАЈИЋ ДУШАН
+ДАЈИЋ ЉИЉАНА
+ДАЈИЋ ВЕЛИМИР
+ДАЈКО ВЛАДИМИР
+ДАЈКО ВЛАДИМИР
+ДАЈОВИЋ ЗОРА
+ДАКИЋ ЂОРЂЕ
+ДАКИЋ АНТЕ
+ДАКИЋ БОЈАНА
+ДАКИЋ БОРИС
+ДАКИЋ БОРКА
+ДАКИЋ БРАНКА
+ДАКИЋ ДАНЕ
+ДАКИЋ ДАНИЛО
+ДАКИЋ ДРАГО
+ДАКИЋ ДРАГО
+ДАКИЋ ДУШАНКА
+ДАКИЋ ГОЈКО
+ДАКИЋ ИЛИЈА
+ДАКИЋ ЈЕЛЕНА
+ДАКИЋ КСЕНИЈА
+ДАКИЋ МИЛАН
+ДАКИЋ МИЛОЈЕ
+ДАКИЋ МИЛОМИР
+ДАКИЋ МИТАР
+ДАКИЋ НЕБОЈША
+ДАКИЋ НЕДЕЉКО
+ДАКИЋ НЕДЕЉКО
+ДАКИЋ НИКОЛА
+ДАКИЋ НИКОЛА
+ДАКИЋ ПАВЛЕ
+ДАКИЋ ПЕТАР
+ДАКИЋ РАЈКО
+ДАКИЋ РАНКО
+ДАКИЋ РАТКО
+ДАКИЋ РЕЉА
+ДАКИЋ СЛАВИЦА
+ДАКИЋ СЛАВКО
+ДАКИЋ СЛОБОДАН
+ДАКИЋ СРЕТЕН
+ДАКИЋ СВЕТОЗАР
+ДАКИЋ ВЛАДИМИР ДР
+ДАКИЋ ВЛАДИМИР ДР
+ДАКИЋ ВЛАДИМИР
+ДАКИЋ ВЛАДИМИР
+ДАКИЋ ВЛАДО
+ДАКИЋ ЗОРАН
+ДАКОВИЋ ЂОКО
+ДАКОВИЋ БРАНКО
+ДАКОВИЋ ВЕСЕЛИН
+ДАКОВИЋ ЗОРАН
+ДАКСЕР ЈОВАН
+ДАКСЕР СТЕВАН
+ДАЛЧЕКОВИЋ ИЛИЈА
+ДАЛИПОВ БУДИМИР
+ДАЛИПОВИЋ АБДУЛ
+ДАЉАЦ ЉУБИЦА
+ДАЉЕВ ЉИЉАНА
+ДАЉЕВ МИЛАН
+ДАЛМАЦИЈА ЈАДРАНКА
+ДАЛМАЦИЈА МИРКО
+ДАЛОШ МАРИЈА
+ДАМШИЋ ЈОСИФ
+ДАМЈАН ЈЕЛИСАВЕТА
+ДАМЈАН ЈОН
+ДАМЈАНАЦ РАДМИЛА
+ДАМЈАНАЦ РАДОВАН
+ДАМЈАНАЦ СТОЈАНКА
+ДАМЈАНИЋ ЗОРИЦА
+ДАМЈАНОСКА СЛАВКА
+ДАМЈАНОВ ЖИКА
+ДАМЈАНОВ ЂОРЂЕ
+ДАМЈАНОВ БИЉАНА
+ДАМЈАНОВ БРАНКА
+ДАМЈАНОВ ЦВЕТКО
+ДАМЈАНОВ ДИМИТРИЈЕ
+ДАМЈАНОВ ДРАГОМИР
+ДАМЈАНОВ ИДА
+ДАМЈАНОВ ЈОРДАНКА
+ДАМЈАНОВ ЈОВАН
+ДАМЈАНОВ КАТИЦА
+ДАМЈАНОВ ЛАЗА
+ДАМЈАНОВ МИЛЕНКО
+ДАМЈАНОВ МИЛЕНКО
+ДАМЈАНОВ ПАВЛЕ
+ДАМЈАНОВ СОФИЈА
+ДАМЈАНОВ СТАНКО
+ДАМЈАНОВ СТЕВАН
+ДАМЈАНОВИЋ ЂОРЂЕ
+ДАМЈАНОВИЋ АЛЕКСАНДАР
+ДАМЈАНОВИЋ АРСЕНИЈЕ
+ДАМЈАНОВИЋ БОШКО
+ДАМЈАНОВИЋ БОРИСЛАВ
+ДАМЈАНОВИЋ ДАРИНКА
+ДАМЈАНОВИЋ ДРАГИЦА
+ДАМЈАНОВИЋ ДРАГОСЛАВ
+ДАМЈАНОВИЋ ДРАГО
+ДАМЈАНОВИЋ ДРАГУТИН
+ДАМЈАНОВИЋ ДУШАН
+ДАМЈАНОВИЋ ДУШАН
+ДАМЈАНОВИЋ ДУШИЦА
+ДАМЈАНОВИЋ ДУШКО
+ДАМЈАНОВИЋ ЕМИЛ
+ДАМЈАНОВИЋ ГОРДАНА
+ДАМЈАНОВИЋ ЈОВАН
+ДАМЈАНОВИЋ ЈОВАН
+ДАМЈАНОВИЋ ЈОВО
+ДАМЈАНОВИЋ ЉИЉАНА
+ДАМЈАНОВИЋ ЉУБИША
+ДАМЈАНОВИЋ ЉУБИЦА
+ДАМЈАНОВИЋ МАРИЈА
+ДАМЈАНОВИЋ МИЛАН
+ДАМЈАНОВИЋ МИЛАН
+ДАМЈАНОВИЋ-МИЛЕНКОВИЋ ЈЕЛЕНА
+ДАМЈАНОВИЋ МИОДРАГ
+ДАМЈАНОВИЋ НОВО
+ДАМЈАНОВИЋ ОБРАД
+ДАМЈАНОВИЋ ПЕТАР
+ДАМЈАНОВИЋ РАДЕ
+ДАМЈАНОВИЋ РАДОВАН
+ДАМЈАНОВИЋ РАНКО
+ДАМЈАНОВИЋ РАТКО
+ДАМЈАНОВИЋ СИМО
+ДАМЈАНОВИЋ СИНИША
+ДАМЈАНОВИЋ СЛАВКО
+ДАМЈАНОВИЋ СЛОБОДАНКА
+ДАМЈАНОВИЋ СНЕЖАНА
+ДАМЈАНОВИЋ СТАНИСЛАВ
+ДАМЈАНОВИЋ СТЕВАН
+ДАМЈАНОВИЋ СТЕВАН
+ДАМЈАНОВИЋ СТЕВО
+ДАМЈАНОВИЋ ТЕРЕЗА
+ДАМЈАНОВИЋ ТОДОР
+ДАМЈАНОВИЋ ТОМИСЛАВ
+ДАМЈАНОВИЋ ВАСИЛИЈЕ ДР
+ДАМЈАНОВИЋ ВАСИЛИЈЕ
+ДАМЈАНОВИЋ ВАСИЛИЈЕ
+ДАМЈАНОВИЋ ВОЈИСЛАВ
+ДАМЈАНОВИЋ ЗОРАН
+ДАМЈАНОВСКИ ЖИВКО
+ДАМЈАНОВСКИ АЛЕКСАНДАР
+ДАМЈАНОВСКИ АЛЕКСАНДАР
+ДАМЈАНОВСКИ МИЛАН
+ДАМЈАНОВСКИ РУЖИЦА
+ДАМЈАНОВСКИ ВЛАДИМИР
+ДАМЉАНОВИЋ ЖИВОТА
+ДАМЊАНОВИЋ АЛЕКСАНДАР
+ДАМЊАНОВИЋ КРИСТИНА
+ДАМЊАНОВИЋ ЛАЗАР
+ДАМЊАНОВИЋ ЉИЉАНА
+ДАМЊАНОВИЋ СЛАВОЉУБ
+ДАМЊАНОВИЋ ЗОРАН
+ДАМЊАНОВИЋ ЗОРАН
+ДАН МИРА
+ДАНЧ ТИБОР
+ДАНЧЕТОВИЋ ЗОРИЦА
+ДАНЧО ЧАБА
+ДАНЧО ЈЕНЕ
+ДАНАИЛОВ АЦА
+ДАНАИЛОВ ТЕВА
+ДАНГУБИЋ ЖАРКО
+ДАНГУБИЋ РАДИВОЈЕ ДИПЛ ИНГ
+ДАНГУБИЋ РАТКО
+ДАНГУЗОВ ДУШАН
+ДАНИ ГАШПАР
+ДАНИ ЛАСЛО
+ДАНИЧИЋ БОРО
+ДАНИЧИЋ БРАНИСЛАВ
+ДАНИЧИЋ ДРАГОЉУБ
+ДАНИЧИЋ ДРАГО
+ДАНИЧИЋ ИРЕНА
+ДАНИЧИЋ САВИЦА
+ДАНИЧИЋ ЗДРАВКО
+ДАНИШ ЕВА
+ДАНИШ ИШТВАН
+ДАНИШ МАРИЈА
+ДАНИЋ ПЕТАР ДИПЛ ИНГ
+ДАНИЋ ВЕСНА
+ДАНИЋ ЗОРИЦА
+ДАНИЕЛ АНДРИЈА
+ДАНИЕЛ АРАНКА
+ДАНИЕЛ ХИЛДА
+ДАНИЕЛ ЈОСИП
+ДАНИЕЛ ПЕТАР
+ДАНИЕЛ ПИРОШКА
+ДАНИЕЛ РУЖА
+ДАНИКОВ МИРОЉУБ
+ДАНИКОВ ВАЛЕРИЈА
+ДАНИЛОВ АНИЦА
+ДАНИЛОВ БОСИЉКА
+ДАНИЛОВ ДУШАН
+ДАНИЛОВ МИЛАН
+ДАНИЛОВ РАДОМИР
+ДАНИЛОВ СМИЉАНА
+ДАНИЛОВ СТОЈАН
+ДАНИЛОВ ВАСА
+ДАНИЛОВАЦ ДИМИТРИЈЕ
+ДАНИЛОВАЦ ПЕТАР
+ДАНИЛОВАЦ РУЖА
+ДАНИЛОВАЦ ВИТОМИР
+ДАНИЛОВИЋ ЖИВАН
+ДАНИЛОВИЋ ЖИВОРАД
+ДАНИЛОВИЋ АЛЕКСАНДАР
+ДАНИЛОВИЋ БРАНКО
+ДАНИЛОВИЋ ЈОВАН
+ДАНИЛОВИЋ КАТАРИНА
+ДАНИЛОВИЋ ЉИЉАНА
+ДАНИЛОВИЋ МАРКО
+ДАНИЛОВИЋ МИЛАН
+ДАНИЛОВИЋ МИРКО ДР
+ДАНИЛОВИЋ НИКОЛА
+ДАНИЛОВИЋ НИКОЛА
+ДАНИЛОВИЋ ПЕРСА
+ДАНИЛОВИЋ РАДА
+ДАНИЛОВИЋ РАДМИЛА
+ДАНИЛОВИЋ СТАНИСЛАВА
+ДАНИЛОВИЋ СТЕВАН
+ДАНИЛОВИЋ ТИХОМИР
+ДАНИЛОВИЋ-ВЕСЕЛИНОВ ВЕРА
+ДАНИЛОВИЋ ЗДРАВКО
+ДАЊИ ФЕРЕНЦ
+ДАЊИ ГЕЗА
+ДАЊИ КАРОЉ
+ДАЊИ ЛАСЛО
+ДАЊИ МАЋАШ
+ДАНКА МАРКО
+ДАНКА ЗЛАТА
+ДАНКО ЈАНКО
+ДАНКО ЈАРОСЛАВ
+ДАНКОВИЋ БОГОЉУБ
+ДАНКОВИЋ СЛАВИША
+ДАНКОВИЋ СЛАВКА
+ДАНКУЦ ДРАГАН
+ДАНКУЦ МИЛИЦА
+ДАНКУЦ ВОЈИСЛАВ
+ДАНКУЦ ВОЈИСЛАВ
+ДАНОЈЕВИЋ СТЕВАН
+ДАПЧЕВИЋ ДУШАН
+ДАПЧЕВИЋ ЈОВАН
+ДАПЧЕВИЋ ЉУБИЦА
+ДАПЧЕВИЋ ПАВЛЕ
+ДАПЧЕВИЋ РАЈКО
+ДАПЧЕВИЋ РУЖИЦА
+ДАПЧЕВИЋ ВЕРИЦА
+ДАРАШ ЖЕЉКО
+ДАРАЖ ЈУЛИЈАНА
+ДАРАЖ СТЕВАН
+ДАРАБАЊ ЈОЖЕФ
+ДАРАБОШ ЈУЛКА
+ДАРАБОШ ЛАДИСЛАВ
+ДАРАБОШ МАРИЈА
+ДАРАБОШ ПЕТАР
+ДАРАБУЦ НЕДЕЉКО
+ДАРАДИЋ СТЕВАН
+ДАРМАНОВИЋ МИЛАН
+ДАРМАНОВИЋ СТАНКО
+ДАРМАНОВИЋ ТОМИСЛАВ
+ДАРОЈЕВИЋ ЛАЗАР
+ДАРВИШ ЗОРИЦА
+ДАСОВИЋ СТОЈАНКА
+ДАСОВИЋ ЗЛАТА
+ДАУТОВА-РУШЕВЉАН ВЕЛИНКА ДР
+ДАУТОВИЋ ЂОРЂЕ
+ДАУТОВИЋ БОГДАН
+ДАУТОВИЋ ЏЕМАЛ
+ДАУТОВИЋ ДРАГАН
+ДАУТОВИЋ МИЛАН
+ДАУТОВИЋ МИЛАН
+ДАВИЋ БРАНИСЛАВ
+ДАВИД АНДРАШ
+ДАВИД ИЛОНА
+ДАВИДОВ ЂУРЂИНА
+ДАВИДОВ БОГДАН
+ДАВИДОВ БУДИМКА
+ДАВИДОВ ЈЕЛИЦА
+ДАВИДОВ ЈОВАН
+ДАВИДОВ ЉУБОМИР
+ДАВИДОВ МИЛАН
+ДАВИДОВ МИЛАН
+ДАВИДОВ МИЛИЋ
+ДАВИДОВ МИЛИВОЈ
+ДАВИДОВ МИЛКА
+ДАВИДОВ НЕГОВАН
+ДАВИДОВ РАДОСЛАВ
+ДАВИДОВ РАДОВАН
+ДАВИДОВ СЛАВКО
+ДАВИДОВ СТОЈАН
+ДАВИДОВ ТИХОМИР
+ДАВИДОВАЦ ЂОРЂЕ
+ДАВИДОВАЦ БОШКО
+ДАВИДОВАЦ ДАНИЛО
+ДАВИДОВАЦ ДУШАНКА
+ДАВИДОВАЦ ЕЛВИРА
+ДАВИДОВАЦ ГАВРА
+ДАВИДОВАЦ ГОЈКО
+ДАВИДОВАЦ ЉУБИЦА
+ДАВИДОВАЦ МИРОСЛАВ
+ДАВИДОВАЦ РАДИВОЈ
+ДАВИДОВАЦ РАДИВОЈ
+ДАВИДОВАЦ РАДИВОЈ
+ДАВИДОВАЦ РАДИВОЈ
+ДАВИДОВАЦ РАДМИЛА
+ДАВИДОВАЦ СТЕВАН
+ДАВИДОВАЦ ТОДОР
+ДАВИДОВАЦ ВЕРИЦА
+ДАВИДОВАЦ ВЕСЕЛИНКА
+ДАВИДОВАЦ ЗДРАВКО
+ДАВИДОВИЋ ЧАСЛАВ
+ДАВИДОВИЋ ДАВОР
+ДАВИДОВИЋ ДРАГАН
+ДАВИДОВИЋ ДРАГИЦА
+ДАВИДОВИЋ ДУШАНКА
+ДАВИДОВИЋ ДУШКО
+ДАВИДОВИЋ ГОРАН
+ДАВИДОВИЋ ЈОВАН
+ДАВИДОВИЋ ЈОВО
+ДАВИДОВИЋ ЉИЉАНА
+ДАВИДОВИЋ МАРИЈА
+ДАВИДОВИЋ МАРИЈА
+ДАВИДОВИЋ МАРЈАН
+ДАВИДОВИЋ МИХАИЛО
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛАН
+ДАВИДОВИЋ МИЛА
+ДАВИДОВИЋ МИЛОШ
+ДАВИДОВИЋ МИЛОШ
+ДАВИДОВИЋ МИЛОВАН
+ДАВИДОВИЋ МИЛУТИН
+ДАВИДОВИЋ МИРКО
+ДАВИДОВИЋ МИРОСЛАВ
+ДАВИДОВИЋ МИРОСЛАВ
+ДАВИДОВИЋ МЛАДЕН
+ДАВИДОВИЋ НЕБОЈША
+ДАВИДОВИЋ НЕНАД
+ДАВИДОВИЋ ОЛГА
+ДАВИДОВИЋ ПЕРА
+ДАВИДОВИЋ ПЕТАР
+ДАВИДОВИЋ ПЕТАР
+ДАВИДОВИЋ ПЕТАР
+ДАВИДОВИЋ РАДЕ ДР
+ДАВИДОВИЋ РАДЕ
+ДАВИДОВИЋ РАДОЈЕ
+ДАВИДОВИЋ РАДОМИР
+ДАВИДОВИЋ САВА
+ДАВИДОВИЋ СЛАВКО
+ДАВИДОВИЋ СРЕТА
+ДАВИДОВИЋ СТАНКО
+ДАВИДОВИЋ СТЕВАН
+ДАВИДОВИЋ УРОШ
+ДАВИДОВИЋ ВАСА
+ДАВИДОВИЋ ВИТОМИР
+ДАВИДОВИЋ ВЛАДИМИР
+ДАВИДОВИЋ ВОЈИСЛАВ
+ДАВИДОВИЋ ЗОРА
+ДАВИДОВСКИ МАРА
+ДАВИНИЋ СТОЈАН
+ДАВОГИЋ ТЕОДОР
+ДАВОСИР ИВАН
+ДАВОСИР МАКСИМ
+ДАВОСИР ТЕОДОР
+ДАВОСИР ВЛАДИМИР
+ДЕ-ВРИЕС ИВАНКА
+ДЕШИ ЗОЛТАН
+ДЕШИЋ МАРА
+ДЕШО ЖИВАНКА
+ДЕЖЕ ЈОВАН
+ДЕЖЕ КАРЛО
+ДЕЖЕ ЗДЕНКА
+ДЕЖЕЛИЋ ЈОВАНКА
+ДЕЂАНСКИ ЂОРЂЕ
+ДЕЂАНСКИ ДУШАН
+ДЕЂАНСКИ ПЕТАР
+ДЕАК ЖАРКО
+ДЕАК АНДРАШ
+ДЕАК АНДРИЈАНА
+ДЕАК АНДРИЈА
+ДЕАК АРАНКА
+ДЕАК ФЕРЕНЦ
+ДЕАК ИЛЕШ
+ДЕАК ЛАУРА
+ДЕАК МАТИЛДА
+ДЕАН НЕВЕНКА
+ДЕАРОСКИ ФЕХИМ
+ДЕАРОВИЋ САЛИМ
+ДЕБЕЉАЧКИ ЖИВОЈИН
+ДЕБЕЉАЧКИ ЂОРЂЕ
+ДЕБЕЉАЧКИ АЛЕКСАНДАР
+ДЕБЕЉАЧКИ АЛЕКСАНДАР
+ДЕБЕЉАЧКИ БОСИЉКА
+ДЕБЕЉАЧКИ ДРАГОМИР
+ДЕБЕЉАЧКИ ИВАН
+ДЕБЕЉАЧКИ ИВАН
+ДЕБЕЉАЧКИ КАТИЦА
+ДЕБЕЉАЧКИ ЉУБИЦА
+ДЕБЕЉАЧКИ МИРЈАНА
+ДЕБЕЉАЧКИ МИРОСЛАВ
+ДЕБЕЉАЧКИ НАДА
+ДЕБЕЉАЧКИ СРЂА
+ДЕБЕЉАЧКИ СВЕТОЗАР
+ДЕБЕЉАЧКИ ВЕРА
+ДЕБЕЉАЧКИ ВУКОСАВА
+ДЕБЕЉЕВИЋ ВЕЛИМИР
+ДЕЦ АНИЦА
+ДЕДАЈ ДАВИД
+ДЕДАЈ ЛЕКО
+ДЕДЕИ ИЛОНА
+ДЕДЕИЋ ЕЛИЗАБЕТА
+ДЕДИЋ БРАНИСЛАВ
+ДЕДИЋ ДОБРОСАВ
+ДЕДИЋ ДРАГАН
+ДЕДИЋ ДРАГОСЛАВ
+ДЕДИЋ ЕЛИЗАБЕТА
+ДЕДИЋ ГАВРИЛО
+ДЕДИЋ ЈОВО
+ДЕДИЋ КОВИНКА
+ДЕДИЋ МАРА
+ДЕДИЋ МАРИЈА
+ДЕДИЋ МИЛИВОЈ ДР ПРОФ
+ДЕДИЋ МИЛО
+ДЕДИЋ МИОДРАГ
+ДЕДИЋ НЕМАЊА
+ДЕДИЋ РАДИЦА
+ДЕДИЋ СЛАВКА
+ДЕДИЋ СТЕВАН
+ДЕДИЋ-ТАСИЋ МИРА
+ДЕДИН ДЕЈАН
+ДЕДИН ДИМИТРИЈЕ
+ДЕДИН ДИМИТРИЈЕ
+ДЕДИН ВАСИЛИЈЕ
+ДЕДИНСКИ ТИБОР
+ДЕДОВИЋ МИШО
+ДЕФРАНГЕПАН ФРАНСОА
+ДЕГА АВРАМ
+ДЕЈАНАЦ МИЛОРАД
+ДЕЈАНОСКИ МИЛАН
+ДЕЈАНОВ БЕРИСЛАВ
+ДЕЈАНОВ ДАНИЛО
+ДЕЈАНОВ ЈЕЛЕНА
+ДЕЈАНОВ МИТА
+ДЕЈАНОВ СИМА
+ДЕЈАНОВИЋ ЖАРКО
+ДЕЈАНОВИЋ ЖАРКО
+ДЕЈАНОВИЋ ЖИВАН
+ДЕЈАНОВИЋ ЖИВОЈИН
+ДЕЈАНОВИЋ ЂОРЂЕ
+ДЕЈАНОВИЋ ЂУРЂИНКА
+ДЕЈАНОВИЋ ЂУРИЦА
+ДЕЈАНОВИЋ АЛЕКСАНДАР
+ДЕЈАНОВИЋ АЛЕКСАНДРА
+ДЕЈАНОВИЋ АНЂЕЛИЈА
+ДЕЈАНОВИЋ АНКИЦА
+ДЕЈАНОВИЋ БОРИСЛАВА
+ДЕЈАНОВИЋ ДАНИЛО
+ДЕЈАНОВИЋ ДИМИТРИЈЕ
+ДЕЈАНОВИЋ ДОБРИВОЈЕ
+ДЕЈАНОВИЋ ДОБРИВОЈЕ
+ДЕЈАНОВИЋ ДРАГАН
+ДЕЈАНОВИЋ ДУШАН
+ДЕЈАНОВИЋ ДУШАН
+ДЕЈАНОВИЋ ДУШАН
+ДЕЈАНОВИЋ ИВАН
+ДЕЈАНОВИЋ ЈЕЛЕНА
+ДЕЈАНОВИЋ ЈЕЛИЦА
+ДЕЈАНОВИЋ ЈОРДАН
+ДЕЈАНОВИЋ ЈОВАН
+ДЕЈАНОВИЋ КАТИЦА
+ДЕЈАНОВИЋ ЛАЗАР
+ДЕЈАНОВИЋ ЛАЗАР
+ДЕЈАНОВИЋ МИЛАНА
+ДЕЈАНОВИЋ МИЛАН
+ДЕЈАНОВИЋ МИЛАН
+ДЕЈАНОВИЋ МИЛИЦА
+ДЕЈАНОВИЋ МИЛОШ
+ДЕЈАНОВИЋ МИЛОШ
+ДЕЈАНОВИЋ МИЛОРАД
+ДЕЈАНОВИЋ МИЛОРАД
+ДЕЈАНОВИЋ МИРЈАНА
+ДЕЈАНОВИЋ МИРОСЛАВ
+ДЕЈАНОВИЋ ПЕТАР
+ДЕЈАНОВИЋ ПЕТАР
+ДЕЈАНОВИЋ ПЕТАР
+ДЕЈАНОВИЋ РАДА
+ДЕЈАНОВИЋ СТЕВАН
+ДЕЈАНОВИЋ СТЕВАН
+ДЕЈАНОВИЋ ВОЈИСЛАВ
+ДЕЈАНОВСКИ МЛАДЕН
+ДЕЈАНОВСКИ ТОМИСЛАВ
+ДЕЈАНОВСКИ ВЕСЕЛИН
+ДЕКАНИЋ БРАНКО
+ДЕКАНИЋ ГЛИГОРИЈЕ
+ДЕКАНИЋ МИЛОШ
+ДЕКАНИЋ МИЛОШ
+ДЕКАНИЋ ВОЈИСЛАВ
+ДЕКАНИЋ ВОЈИСЛАВ
+ДЕКАЊ АНТАЛ
+ДЕКАНСКИ ДИНА
+ДЕКАНСКИ ПАВЛЕ
+ДЕКИЋ ДАНЕ
+ДЕЛАЧ ФРАНЦИШКА
+ДЕЛЕТИЋ ГОРДАНА
+ДЕЛИЋ ЂОРЂЕ
+ДЕЛИЋ БИЉАНА
+ДЕЛИЋ БОЖИДАР
+ДЕЛИЋ БОГДАН
+ДЕЛИЋ ДАРИНКА
+ДЕЛИЋ ДЕСИМИР
+ДЕЛИЋ ДРАГИЦА
+ДЕЛИЋ ДРАГИЦА
+ДЕЛИЋ ДРАГУТИН
+ДЕЛИЋ-ИБУКИЋ ЕСАД
+ДЕЛИЋ ИЛИЈА
+ДЕЛИЋ ЈАЊА
+ДЕЛИЋ ЈОВАН
+ДЕЛИЋ МАРА
+ДЕЛИЋ МИЋО ДР
+ДЕЛИЋ МИХАЈЛО
+ДЕЛИЋ МИЛАНА
+ДЕЛИЋ МИЛАН
+ДЕЛИЋ МИЛИЦА
+ДЕЛИЋ МИЛКА
+ДЕЛИЋ МИЛОШ
+ДЕЛИЋ МИЛОМИР
+ДЕЛИЋ МИЛОСАВА
+ДЕЛИЋ МУСТАФА
+ДЕЛИЋ ПАШКО
+ДЕЛИЋ ПЕТАР
+ДЕЛИЋ РАДМИЛА
+ДЕЛИЋ РАДОЈКА ДР
+ДЕЛИЋ РАДОМИР
+ДЕЛИЋ РАДОСАВ
+ДЕЛИЋ-СЛАВКОВИЋ ВЕРА
+ДЕЛИЋ СРЕТЕН
+ДЕЛИЋ СТОЈАН
+ДЕЛИЋ СВЕТОЗАР
+ДЕЛИЋ ТОМИСЛАВ
+ДЕЛИЋ ВАСА
+ДЕЛИЋ ВЕСЕЛКО
+ДЕЛИЋ ВЕСНА
+ДЕЛИЋ ВЛАДО
+ДЕЛИЋ ВЛАДО
+ДЕЛИЂОРЂЕВИЋ СТЕВАНКА
+ДЕЛИБАШИЋ ДЕЈАН ДИПЛ ИНГ
+ДЕЛИБАШИЋ ЉУБИША
+ДЕЛИБАШИЋ ЉУБИЦА
+ДЕЛИБАШИЋ МАРИЦА
+ДЕЛИБАШИЋ МИЛИВОЈЕ
+ДЕЛИБАШИЋ МИЛИВОЈЕ
+ДЕЛИБАШИЋ МИЛОРАД
+ДЕЛИБАШИЋ МИОДРАГ
+ДЕЛИБАШИЋ САВО
+ДЕЛИБАШИЋ СОФИЈА
+ДЕЛИБАШИЋ ТОМИСЛАВ
+ДЕЛИБЛАЋАНИН ЈОВАН
+ДЕЛКОВИЋ ЈОВИЦА
+ДЕЛОИК ДРАГУТИН
+ДЕЛОНГА СТАНКО
+ДЕЛОВ ОРДАНЧО
+ДЕМЧЕШЕН ВАСИЛИЈЕ
+ДЕМШАР ГОРДАНА
+ДЕМШАР-ВЕГЕР МАРИЈА
+ДЕМАК МИРОСЛАВ
+ДЕМАН ЈАНКО
+ДЕМАН РАСТИСЛАВ
+ДЕМБИЦ СМИЉАНА
+ДЕМЕ ЕМА
+ДЕМЕ ФРАНЦИШКА
+ДЕМЕ ИРЕНА
+ДЕМЕ КЛАРА
+ДЕМЕШИ АРПАД
+ДЕМЕЛИС ЉУБИЦА
+ДЕМЕНДИ БЕЛА
+ДЕМЕНДИ ДОРОТЕА
+ДЕМЕР БЕЛА
+ДЕМЕР ФРАНЦ
+ДЕМЕТЕР ФЕРЕНЦ
+ДЕМЕТЕР ФРАЊА
+ДЕМЕТЕР СТЕВАН
+ДЕМИЋ ЖИВОРАД
+ДЕМЈЕН БОРИСЛАВ
+ДЕМКО-РИХТЕР ЈОСИП
+ДЕМОВСКИ СЕВДИЈА
+ДЕМУТ РОЗАЛИЈА
+ДЕНЧИК ВЛАДИСЛАВ
+ДЕНДА ДРАГАН
+ДЕНДА МИЛИВОЈ
+ДЕНДИЋ СРЕТИМИР
+ДЕНЕШИ ВИЛИМ
+ДЕНГОРИЦИЈА СТЈЕПАН
+ДЕНИЋ ЧЕДОМИР
+ДЕНИЋ ЖИВОТА
+ДЕНИЋ ЉУБИША
+ДЕНИЋ МОМЧИЛО ДИПЛ ИНГ
+ДЕНИЋ РАДИЦА
+ДЕНИЋ СИНИША
+ДЕНИЋ ЗУЗАНА
+ДЕНКОВИЋ ЉУБОМИР
+ДЕНКОВСКИ ЈАНЕ
+ДЕПЧЕЊСКИ СТЕФАН
+ДЕР ФРАЊА
+ДЕР ЈОЖЕФ
+ДЕР ЛАЈОШ
+ДЕР СТЕВАН
+ДЕРАЈИЋ СТОЈА
+ДЕРБАКОВ МАРКО
+ДЕРБОГОСИЈАН БРАНКО
+ДЕРДИЋ РУДОЛФ
+ДЕРЕХ СИМЕОН
+ДЕРЕТА МИЛАН
+ДЕРЕТА ПЕТАР
+ДЕРЕТА СВЕТОЗАР
+ДЕРЕТИЋ СВЕТОЗАР
+ДЕРИКРАВА МИЦА
+ДЕРМЕНЂИЈЕВСКИ ДИМИТАР
+ДЕРОЊИЋ ТОДОР
+ДЕРУШЕК МИЉЕНКО
+ДЕРВИШЕВИЋ ЈУСУФ
+ДЕРВИШЕВИЋ НЕЏИБ
+ДЕРВИШЕВИЋ СЛАВКО
+ДЕРВИШИ МИСИН
+ДЕРВИШИ РАМАДАН
+ДЕРВИШИ РУШИТ
+ДЕРВИЋ ШЕФКА
+ДЕСНИЦА ЂОРЂЕ
+ДЕСНИЦА ЂУРО МР
+ДЕСНИЦА БОГДАН
+ДЕСНИЦА БРАНКО
+ДЕСНИЦА ЈАНКО
+ДЕСНИЦА ЛУКА
+ДЕСНИЦА НИКОЛА
+ДЕСНИЦА РАДОМИР ДИПЛ ИНГ
+ДЕСНИЦА РАДОМИР
+ДЕСНИЦА РЕЉА
+ДЕСНИЦА СМИЉКА
+ДЕСНИЦА СТАНА
+ДЕСПЕНИЋ АЛЕКСАНДАР
+ДЕСПИ ЈОВА
+ДЕСПИ ВЕЉКО
+ДЕСПИЋ ЛАЗАР
+ДЕСПИЋ МАРКО
+ДЕСПИЋ МИРЈАНА
+ДЕСПИЋ СРЕТЕН
+ДЕСПИЋ ЗОРАН
+ДЕСПОТ ДУШАН
+ДЕСПОТ МИЛАН
+ДЕСПОТ МИЛИЦА
+ДЕСПОТ МИРЈАНА
+ДЕСПОТ НАДА
+ДЕСПОТ НЕНАД
+ДЕСПОТ СЛОБОДАН
+ДЕСПОТОВ АЛЕКСАНДАР
+ДЕСПОТОВ ДОБРИЛА
+ДЕСПОТОВ ЕВДОКИЈА
+ДЕСПОТОВ ИЛИЈА
+ДЕСПОТОВ ЈОЦА
+ДЕСПОТОВ ЉУБИНКА
+ДЕСПОТОВ МИЛАН
+ДЕСПОТОВ МИЛОВАН
+ДЕСПОТОВ РАДМИЛА
+ДЕСПОТОВ РУЖИЦА
+ДЕСПОТОВ ВИЛМА
+ДЕСПОТОВ ВИТОМИРКА
+ДЕСПОТОВ ВОЈИСЛАВ
+ДЕСПОТОВ ЗОРАН
+ДЕСПОТОВИЋ БИЉАНА
+ДЕСПОТОВИЋ ДРАГУТИН
+ДЕСПОТОВИЋ ЉИЉАНА
+ДЕСПОТОВИЋ ПАНТЕЛИЈА
+ДЕСПОТОВИЋ РАДИСЛАВ
+ДЕСПОТОВИЋ РАДИСЛАВ
+ДЕСПОТОВИЋ РАДИВОЈЕ
+ДЕСПОТОВИЋ РАДИВОЈЕ
+ДЕСПОТОВИЋ РАДМИЛА
+ДЕСПОТОВИЋ РАТКО
+ДЕСПОТОВИЋ СИМКА
+ДЕСПОТОВИЋ СТАНКО
+ДЕСПОТОВИЋ ВАСО
+ДЕСПОТОВИЋ ВОЈИСЛАВ
+ДЕСПОТОВСКИ ДУШАН
+ДЕТАРИ МАРИЈА
+ДЕТЕЛИН ЂУРА
+ДЕТЕЛИН ЈОСИП
+ДЕТЕЛИН НАДА
+ДЕУРА ДУШАН ДИПЛ ПРАВНИК
+ДЕУРА РАЈКО
+ДЕУРА ВЕРА
+ДЕУРИЋ РАДМИЛА
+ДЕВАИ ШАНДОР
+ДЕВАИ ИМРЕ
+ДЕВАИ ЛАЈОШ
+ДЕВАИ САЊА
+ДЕВАИ ЗОРИЦА
+ДЕВАЈА НАДА
+ДЕВАЈА ОМЕР ДР
+ДЕВАЛД ЕТЕЛКА
+ДЕВАЛД ИВАН
+ДЕВАЛД ЈОХАН
+ДЕВЕЧЕРИ КРИСТИНА
+ДЕВЕЧЕРСКИ АВРАМ
+ДЕВЕЧЕРСКИ ДАНИЦА
+ДЕВЕЧЕРСКИ ВАСИЛИЈЕ ДР
+ДЕВЕДАН ЂОРЂЕ
+ДЕВЕДАН БОГДАН
+ДЕВЕДАН ДРАГОЈЕ
+ДЕВЕДАН МАРА
+ДЕВЕДАН МИЛОВАН
+ДЕВЕДАН МИРКО
+ДЕВЕТАК ЗОРА
+ДЕВИЋ-ЧОБАНКСИ МИЉЕНКА
+ДЕВИЋ ЖИВАН
+ДЕВИЋ ЂОКА
+ДЕВИЋ ЂОРЂЕ
+ДЕВИЋ АЛЕКСАНДАР
+ДЕВИЋ АНКИЦА
+ДЕВИЋ БИЉАНА
+ДЕВИЋ БРАНИСЛАВА
+ДЕВИЋ БРАНКА
+ДЕВИЋ ЦВИЈЕТА
+ДЕВИЋ ДАНИЦА
+ДЕВИЋ ДАНИЛКА
+ДЕВИЋ ДОБРОСАВ
+ДЕВИЋ ДРАГОЉУБ
+ДЕВИЋ ДРАГОМИР
+ДЕВИЋ ДРАГО
+ДЕВИЋ ДУШАН
+ДЕВИЋ ЕВИЦА
+ДЕВИЋ ГОРАН
+ДЕВИЋ ГРОЗДА
+ДЕВИЋ ИГЊАТ
+ДЕВИЋ ИЛИЈА
+ДЕВИЋ ЈОВАН ДИПЛ ИНГ
+ДЕВИЋ ЈОВАНКА ДР
+ДЕВИЋ ЈОВАН
+ДЕВИЋ КАТИЦА
+ДЕВИЋ МИЛАН
+ДЕВИЋ МИЛАН
+ДЕВИЋ МИЛЕНКО
+ДЕВИЋ МИЛЕТА
+ДЕВИЋ МИЛОШ
+ДЕВИЋ МИОДРАГ
+ДЕВИЋ МИРА
+ДЕВИЋ МЛАДЕН
+ДЕВИЋ НЕБОЈША
+ДЕВИЋ НЕНАД
+ДЕВИЋ НОВКА
+ДЕВИЋ ПЕТАР
+ДЕВИЋ РАДОСЛАВ
+ДЕВИЋ СИМА
+ДЕВИЋ СЛАВКО
+ДЕВИЋ СЛОБОДАН
+ДЕВИЋ ТАТЈАНА
+ДЕВИЋ ТОМА
+ДЕВИЋ ВЕЛИНКА
+ДЕВИЋ ВЛАДА
+ДЕВИЋ ВОЈИСЛАВ ДИПЛ ИНГ
+ДЕВИЋ ЗАГОРКА
+ДЕВРЊА БРАНИСЛАВ
+ДЕВРЊА ДРАГИЦА
+ДЕВРЊА ЉУБИЦА
+ДЕВРЊА-МИХАЈЛОВИЋ ЉИЉАНА
+ДЕВРЊА МИОДРАГ
+ДЕВРЊА СПАСОЈЕ
+ДЕВУШИЋ МИЛАН
+ДИЦКОВ ЂОРЂЕ
+ДИЦКОВ АЛЕКСАНДРА
+ДИЦКОВ ДРАГАН
+ДИЦКОВ ДРАГАН
+ДИЦКОВ ДУШКО
+ДИЦКОВ ИВАН
+ДИЦКОВ КОСТА
+ДИЦКОВ МИРЈАНА
+ДИЦКОВ НИКОЛА
+ДИЦКОВ СТЕВАН
+ДИЦКОВ ВЕСЕЛИН
+ДИЦКОВ ВЕСЕЛИН
+ДИЦКОВ ЗОРКА
+ДИЦМАН ЗДЕНКА
+ДИДАНОВИЋ ЧЕДОМИР
+ДИДАНОВИЋ БУДИМИР
+ДИЈАКОВИЋ ПАВА
+ДИЈАМАТОВИЋ ДРАГИЦА
+ДИКИЋ БРАНИСЛАВ
+ДИКИЋ БРАНКО
+ДИКИЋ ДУШАН
+ДИКИЋ ГОРАН
+ДИКИЋ ЈОВАНКА
+ДИКИЋ ЈОВАН
+ДИКИЋ МИЛАН
+ДИКИЋ РАТКО
+ДИКИЋ САВА ДИПЛ ИНГ
+ДИКИЋ СТЕВАН
+ДИКИЋ ВЕЛИНКА
+ДИКИЋ ЗАГОРКА
+ДИКЛИЋ АЛЕКСАНДАР
+ДИКЛИЋ АЛЕКСАНДАР
+ДИКЛИЋ БРАНИСЛАВ
+ДИКЛИЋ ДРАГАН
+ДИКЛИЋ ДРАГАН
+ДИКЛИЋ ДУШАН
+ДИКЛИЋ ДУШАН
+ДИКЛИЋ ЈАСМИНА
+ДИКЛИЋ ЈОВАН
+ДИКЛИЋ ЈУДИТ
+ДИКЛИЋ МАРТА
+ДИКЛИЋ МИЛАН
+ДИКЛИЋ МИЛЕТА
+ДИКЛИЋ МИРОСЛАВ
+ДИКЛИЋ ПЕТАР
+ДИКЛИЋ СТАНКО
+ДИКОВИЋ НИКОЛА
+ДИЛБЕРОВИЋ АНТО
+ДИМЧОВСКИ ТРАЈЧЕ
+ДИМШИЋ АНКА
+ДИМА БОСА
+ДИМАШЕВИЋ АЛЕКСАНДАР
+ДИМАШЕВИЋ ПЕТАР
+ДИМАНИЋ АНКА
+ДИМАНИЋ БРАНИСЛАВ
+ДИМЕСКИ ИЛИЈА
+ДИМЕСКИ МЕТОДИЈЕ
+ДИМИЋ ЖАРКО
+ДИМИЋ ЂОРЂЕ
+ДИМИЋ АКСЕНТИЈЕ
+ДИМИЋ АКСЕНТИЈЕ
+ДИМИЋ АНЂЕЛКА
+ДИМИЋ БОГДАН
+ДИМИЋ БРАНКО
+ДИМИЋ ДАНИЦА
+ДИМИЋ ДИМИТРИЈЕ
+ДИМИЋ ДРАГОЉУБ ДР
+ДИМИЋ ДРАГОМИР
+ДИМИЋ ДРАГО
+ДИМИЋ ДУШАН ДР
+ДИМИЋ ДУШАН
+ДИМИЋ ДУШАН
+ДИМИЋ ЕМИЛИЈА
+ДИМИЋ ЕРЖЕБЕТ
+ДИМИЋ ИГЊАТ
+ДИМИЋ ИВАН
+ДИМИЋ ЈАНКО
+ДИМИЋ КОСТА
+ДИМИЋ ЛАЗАР
+ДИМИЋ ЛАЗАР
+ДИМИЋ ЉУБОМИР
+ДИМИЋ МИЛАН
+ДИМИЋ МИЛАН
+ДИМИЋ МИЛЕВА
+ДИМИЋ МИЛИЦА
+ДИМИЋ МИЛОШ
+ДИМИЋ МИЛОЈЕ ДИПЛ ИНГ
+ДИМИЋ МИТА
+ДИМИЋ НАДА
+ДИМИЋ НАДА
+ДИМИЋ НЕБОЈША
+ДИМИЋ НИКОЛА
+ДИМИЋ НИКОЛА
+ДИМИЋ НИКОЛА
+ДИМИЋ НИКОЛА
+ДИМИЋ ОЛГА
+ДИМИЋ ОЗРЕН
+ДИМИЋ ПЕТАР
+ДИМИЋ СТАНКО
+ДИМИЋ СТЕВАН
+ДИМИЋ СТЕВАН
+ДИМИЋ СТЕВАН
+ДИМИЋ СТЕВА
+ДИМИЋ ВАСА
+ДИМИЋ ВЕРИЦА
+ДИМИЋ ВИТОМИР
+ДИМИЋ ВИТОМИР
+ДИМИЋ ВЛАДИМИР
+ДИМИТРАШКОВИЋ ВЛАДИМИР
+ДИМИТРИЋ ЖИВОРАД
+ДИМИТРИЋ БОГОЉУБ
+ДИМИТРИЋ БРАНКО
+ДИМИТРИЋ ДРАГАН
+ДИМИТРИЋ МИЛЕНКО
+ДИМИТРИЋ МИЛЕВА
+ДИМИТРИЋ НОВАК
+ДИМИТРИЋ ПЕРО
+ДИМИТРИЋ РАТКО
+ДИМИТРИЋ ВЛАДАН
+ДИМИТРИЋ ЗОРАН
+ДИМИТРИАДИС ПАВЛОС
+ДИМИТРИЈЕВИЋ ЧЕДОМИР
+ДИМИТРИЈЕВИЋ ЧЕДОМИР
+ДИМИТРИЈЕВИЋ ЂОРЂЕ
+ДИМИТРИЈЕВИЋ ЂОРЂЕ
+ДИМИТРИЈЕВИЋ ЂУРЂА
+ДИМИТРИЈЕВИЋ АЛЕКСАНДАР
+ДИМИТРИЈЕВИЋ АРСА
+ДИМИТРИЈЕВИЋ АРСЕН
+ДИМИТРИЈЕВИЋ-БЕСЕРМЕЊИ КАТИЦА
+ДИМИТРИЈЕВИЋ БОРИВОЈЕ
+ДИМИТРИЈЕВИЋ БРАНИСЛАВА
+ДИМИТРИЈЕВИЋ БРАНИСЛАВ
+ДИМИТРИЈЕВИЋ БРАНИСЛАВ
+ДИМИТРИЈЕВИЋ БРАНКА
+ДИМИТРИЈЕВИЋ БРЗОМИР
+ДИМИТРИЈЕВИЋ ДАНИЦА
+ДИМИТРИЈЕВИЋ ДАНИЦА
+ДИМИТРИЈЕВИЋ ДЕСАНКА
+ДИМИТРИЈЕВИЋ ДИМИТРИЈЕ
+ДИМИТРИЈЕВИЋ ДОБРИЦА
+ДИМИТРИЈЕВИЋ ДРАГАН
+ДИМИТРИЈЕВИЋ ДРАГАН
+ДИМИТРИЈЕВИЋ ДРАГАН
+ДИМИТРИЈЕВИЋ ДРАГАН
+ДИМИТРИЈЕВИЋ ДУШАН ДР
+ДИМИТРИЈЕВИЋ ДУШАНКА
+ДИМИТРИЈЕВИЋ ДУШАН
+ДИМИТРИЈЕВИЋ ЕРЖЕБЕТ
+ДИМИТРИЈЕВИЋ ЕТЕЛА
+ДИМИТРИЈЕВИЋ ЕВИЦА
+ДИМИТРИЈЕВИЋ ЈЕЛЕНА
+ДИМИТРИЈЕВИЋ ЈЕЛЕНА
+ДИМИТРИЈЕВИЋ ЈЕЛИЦА
+ДИМИТРИЈЕВИЋ ЈОВАН
+ДИМИТРИЈЕВИЋ ЈОВАН
+ДИМИТРИЈЕВИЋ ЈОВАН
+ДИМИТРИЈЕВИЋ ЛАЗАР
+ДИМИТРИЈЕВИЋ ЉУБИЦА ДР
+ДИМИТРИЈЕВИЋ ЉУБИЦА
+ДИМИТРИЈЕВИЋ ЉУБИЦА
+ДИМИТРИЈЕВИЋ ЉУБИНКО
+ДИМИТРИЈЕВИЋ МАРГИТА
+ДИМИТРИЈЕВИЋ МАРИЦА
+ДИМИТРИЈЕВИЋ МИЛАН МР
+ДИМИТРИЈЕВИЋ МИЛАН
+ДИМИТРИЈЕВИЋ МИЛАН
+ДИМИТРИЈЕВИЋ МИЛАН
+ДИМИТРИЈЕВИЋ МИЛА
+ДИМИТРИЈЕВИЋ МИЛИВОЈ
+ДИМИТРИЈЕВИЋ МИЛКА
+ДИМИТРИЈЕВИЋ МИЛОЈЕ
+ДИМИТРИЈЕВИЋ МИЛОВАН
+ДИМИТРИЈЕВИЋ МИЛУТИН
+ДИМИТРИЈЕВИЋ МИОДРАГ
+ДИМИТРИЈЕВИЋ МИОДРАГ
+ДИМИТРИЈЕВИЋ МИОДРАГ
+ДИМИТРИЈЕВИЋ МИРЧЕ
+ДИМИТРИЈЕВИЋ МИРОСЛАВКА
+ДИМИТРИЈЕВИЋ МИРОСЛАВ
+ДИМИТРИЈЕВИЋ МЛАДЕН
+ДИМИТРИЈЕВИЋ НАДА
+ДИМИТРИЈЕВИЋ НАДА
+ДИМИТРИЈЕВИЋ НЕНАД
+ДИМИТРИЈЕВИЋ НЕВЕНКА
+ДИМИТРИЈЕВИЋ ПАЈА
+ДИМИТРИЈЕВИЋ ПЕТАР
+ДИМИТРИЈЕВИЋ ПЕТАР
+ДИМИТРИЈЕВИЋ ПЕТАР
+ДИМИТРИЈЕВИЋ ПРЕДРАГ
+ДИМИТРИЈЕВИЋ ПРЕДРАГ
+ДИМИТРИЈЕВИЋ РАДИСАВ
+ДИМИТРИЈЕВИЋ РАДИВОЈЕ
+ДИМИТРИЈЕВИЋ РАДИВОЈ
+ДИМИТРИЈЕВИЋ РАТКО
+ДИМИТРИЈЕВИЋ САША
+ДИМИТРИЈЕВИЋ САВА
+ДИМИТРИЈЕВИЋ СЛАВКО
+ДИМИТРИЈЕВИЋ СЛАВОЉУБ
+ДИМИТРИЈЕВИЋ СРЂА
+ДИМИТРИЈЕВИЋ СТАНКО
+ДИМИТРИЈЕВИЋ СТАНОЈЕ
+ДИМИТРИЈЕВИЋ СТЕВАН
+ДИМИТРИЈЕВИЋ СТОЈАДИН
+ДИМИТРИЈЕВИЋ СТОЈАДИН
+ДИМИТРИЈЕВИЋ СВЕТОМИР
+ДИМИТРИЈЕВИЋ ТИХОМИР
+ДИМИТРИЈЕВИЋ ТОМИСЛАВ
+ДИМИТРИЈЕВИЋ ВЕРА
+ДИМИТРИЈЕВИЋ ВИТОМИР
+ДИМИТРИЈЕВИЋ ВУЈИЦА
+ДИМИТРИЈЕВИЋ ВУКОСАВА
+ДИМИТРИЈЕВИЋ ЗЛАТИБОР
+ДИМИТРИЈЕВИЋ ЗОРАН
+ДИМИТРИЈЕВИЋ ЗОРАН
+ДИМИТРИЈЕВИЋ ЗОРИЦА
+ДИМИТРИЈЕВИЋ ЗОРИЦА
+ДИМИТРИЈЕВСКИ МИХАЈЛО
+ДИМИТРОВ ЖИВОЈИН
+ДИМИТРОВ ЂОКА
+ДИМИТРОВ ЂОРЂЕ
+ДИМИТРОВ БОШКО
+ДИМИТРОВ БОРО
+ДИМИТРОВ БРАНИСЛАВ
+ДИМИТРОВ БРАНКО
+ДИМИТРОВ ДИМИТРИЈЕ
+ДИМИТРОВ ДУШАН
+ДИМИТРОВ ДУШАН
+ДИМИТРОВ ЕФТИМ
+ДИМИТРОВ ЈОЦА
+ДИМИТРОВ ПЕТАР
+ДИМИТРОВ РАДИСЛАВ
+ДИМИТРОВ СЛАВКО
+ДИМИТРОВ СОСА
+ДИМИТРОВ СТЕВАН
+ДИМИТРОВ СВЕТИСЛАВ
+ДИМИТРОВ УРОШ
+ДИМИТРОВ ВЕЛИЧКО
+ДИМИТРОВ ЗЛАТА
+ДИМИТРОВСКИ ИЛОНА
+ДИМИТРОВСКИ ЉУБОМИР
+ДИМИТРОВСКИ ЉУБОМИР
+ДИМИТРОВСКИ ПАВЛЕ
+ДИМКОВИЋ БОРИСЛАВ
+ДИМКОВСКИ ГОРАН
+ДИМКОВСКИ ЉУБИША
+ДИМОСКИ НИКОЛА
+ДИМОВ ДИМИТАР
+ДИМОВ ТОДОР
+ДИМОВА КАТИЦА
+ДИМОВИЋ СОФИЈА
+ДИМОВСКИ ЂЕРО
+ДИМОВСКИ АНДРИЈА
+ДИМОВСКИ ЉУБИЦА
+ДИМОВСКИ МАРИНА
+ДИМОВСКИ МИЛИЦА
+ДИМОВСКИ ТРАЈЧЕ
+ДИНЧИЋ КАТИЦА
+ДИНЧИЋ МИЛОРАД
+ДИНЧИЋ СЛОБОДАН
+ДИНЧИЋ СРЕТЕНКА
+ДИНЧИК МАРИЈА
+ДИНИЋ ЧЕДОМИР
+ДИНИЋ БОЖИДАР
+ДИНИЋ БОСА
+ДИНИЋ ЈОШКА
+ДИНИЋ-КНЕЖЕВИЋ ДУШАНКА
+ДИНИЋ МИЛОРАД
+ДИНИЋ РАДОМИР
+ДИНИЋ ВАЛЕРИЈА
+ДИНИЋ ВЛАДЕТА
+ДИНИЋ ЗВОНИМИР
+ДИЊАШКИ ЖАРКО
+ДИЊАШКИ ИРИНА
+ДИЊАШКИ КСЕНИЈА
+ДИЊАШКИ ЛЕПА
+ДИЊАШКИ НЕСТОР
+ДИЊАШКИ СТАНИМИР
+ДИЊАШКИ СТАНКА
+ДИЊАШКИ СТЕВАН
+ДИЊАШКИ ТРИВА
+ДИЊАШКИ ЗДРАВКО
+ДИЊЕШ ЈОСИП
+ДИНУЛОВИЋ РАДОСЛАВ
+ДИОШИ ЈОСИП
+ДИРНЕР АРАНКА
+ДИСИЋ ЉУБИША
+ДИСИЋ ВЛАДИМИР
+ДИТРИХ АНА
+ДИТРИХ РОБЕРТ
+ДИТРИХ ВЛАДИМИР
+ДИВИЋ МИЛЕНКО
+ДИВИЈАЧКИ ДРАГАН
+ДИВИЈАЧКИ ДРАГАН
+ДИВИЛД ЂОРЂЕ
+ДИВИЛД АНДРИЈА
+ДИВИЛД ЈЕЛИСАВЕТА
+ДИВИЛД РАДОСЛАВ
+ДИВЈАК ДУШАН
+ДИВЈАК ДУШАН
+ДИВЈАК ДУШАН
+ДИВЈАК МАРИНКО
+ДИВЈАК МИЛАН
+ДИВЈАК МИЛАН
+ДИВЈАК МИЛАН
+ДИВЈАК САВА
+ДИВЈАКОВИЋ ЂОРЂЕ
+ДИВЈАКОВИЋ БРАНКО
+ДИВЈАКОВИЋ ГАВРА
+ДИВЈАКОВИЋ ЈЕЛИЦА
+ДИВЈАКОВИЋ ЉУБИЦА
+ДИВЈАКОВИЋ МАРИЈА
+ДИВЈАКОВИЋ-РАДИЧЕВА ДОРИНА
+ДИВЈАКОВИЋ СТЕВАН
+ДИВЈАКОВИЋ ТОДОР
+ДИВЈАКОВИЋ ВЛАДА
+ДИВЉАК АЛЕКСАНДАР
+ДИВЉАК АНГЕЛИНА
+ДИВЉАК БОШКО
+ДИВЉАК ДЕСИМИР
+ДИВЉАК ДОБРИВОЈ
+ДИВЉАК ДРАГО
+ДИВЉАК МИРОСЛАВ
+ДИВЉАК МИРОСЛАВ
+ДИВЉАК РАТКО
+ДИВЉАК ЗДРАВКО
+ДИВЉАКОВИЋ ДРАГУТИН
+ДИВЉАКОВИЋ ИВАНКА
+ДИВЉАН НЕНАД
+ДИВНИЋ ЖИВАН
+ДИВНИЋ ЂОРЂЕ
+ДИВНИЋ ЈЕЛКА
+ДИВНИЋ МИРЈАНА
+ДИВНИЋ ПАЈА
+ДИВНИЋ СЛОБОДАН
+ДИВНИЋ СОЊА
+ДИВНИЋ СВЕТОЗАР
+ДИВОВИЋ РАДОВАН
+ДИЗДАР АНЂА
+ДИЗДАР АНКИЦА
+ДИЗДАР ИВИЦА
+ДИЗДАР ЈОСИП
+ДИЗДАР ЈУРЕ
+ДИЗДАР ЈУРО
+ДИЗДАР МАРИЈА
+ДИЗДАР МАРКО
+ДИЗДАР ПАВО
+ДИЗДАР САРАФИНА
+ДИЗДАР ВЛАДО
+ДИЗДАРЕВИЋ РАДОЉУБ
+ДЛУХИ ЈОСИП
+ДМИТРАШИНОВИЋ РАДЕ
+ДМИТРИЈЕВ ЛИДИЈА
+ДМИТРОВИЋ ДАНИЦА
+ДМИТРОВИЋ ЉИЉАНА
+ДМИТРОВИЋ МИЛОШ
+ДМИТРОВИЋ МИРЈАНА
+ДМИТРОВИЋ РАДЕНКО ЛЕКАР
+ДМИТРОВИЋ СТЕВАН
+ДМИТРОВИЋ СТЕВАН
+ДОШЕМОВИЋ ПРЕДРАГ
+ДОШЕН ЖИВАДИН
+ДОШЕН БИЉАНА
+ДОШЕН БРАНКО
+ДОШЕН ДЕСАНКА
+ДОШЕН ДРАГАН
+ДОШЕН ДУШАН
+ДОШЕН ДУШАН
+ДОШЕН ДУШАН
+ДОШЕН ДУБРАВКА
+ДОШЕН ХРИСТИНА ДР
+ДОШЕН ИЛИЈА
+ДОШЕН ИВАН
+ДОШЕН ИВАН
+ДОШЕН ЈЕЛЕНА
+ДОШЕН МИЛАН
+ДОШЕН МИЛАН
+ДОШЕН МИЛЕ
+ДОШЕН МИЛОШ
+ДОШЕН РАДОСЛАВ
+ДОШЕН РАДОСЛАВ
+ДОШЕН РАТКО
+ДОШЕН СВЕТЛАНА
+ДОШЕН ВОЈИН
+ДОШЕНОВИЋ ЧЕДОМИР
+ДОШЕНОВИЋ МИЛИВОЈЕ
+ДОШЕНОВИЋ МИРОСЛАВА
+ДОШЕНОВИЋ ВАСИЉКА
+ДОШЕНОВИЋ ВОЈИН
+ДОШИЋ ГИЗЕЛА
+ДОШЛИЋ МИЛИЦА
+ДОШЛИЋ НЕНАД
+ДОШЛИЋ РАДОСЛАВ
+ДОШЛОВ КРСТО
+ДОШЛОВ СЛАВИЦА
+ДОЖИЋ ЉИЉАНА
+ДОЖИЋ МАРИЦА
+ДОЖИЋ СТЕВАН
+ДОЖИЋ СТЕВАН
+ДОЖИЋ СВЕТИСЛАВ
+ДОЖИЋ ВАСИЉКА
+ДОБАН МАРЧЕЛ
+ДОБАНОВАЧКИ ЧЕДОМИР
+ДОБАНОВАЧКИ АЛЕКСАНДАР
+ДОБАНОВАЧКИ БОРИСЛАВ
+ДОБАНОВАЧКИ БРАНИСЛАВ
+ДОБАНОВАЧКИ ДОБРИНКА
+ДОБАНОВАЧКИ ДУШАНКА
+ДОБАНОВАЧКИ ДУШАНКА
+ДОБАНОВАЧКИ ДУШАН
+ДОБАНОВАЧКИ ИРЕНА
+ДОБАНОВАЧКИ ЈЕЛКА
+ДОБАНОВАЧКИ ЈУЛКА
+ДОБАНОВАЧКИ ЈУЛКИЦА
+ДОБАНОВАЧКИ МАКСИМ
+ДОБАНОВАЧКИ МИЛАН
+ДОБАНОВАЧКИ МИЛАН
+ДОБАНОВАЧКИ МИРЈАНА
+ДОБАНОВАЧКИ МИРКО
+ДОБАНОВАЧКИ ПЕТАР
+ДОБАНОВАЧКИ РАДОМИР
+ДОБАНОВАЧКИ САВА
+ДОБАНОВАЧКИ САВА
+ДОБАНОВАЧКИ-САВИЋ ТИНКА
+ДОБАНОВАЧКИ СТЕВАН
+ДОБАНОВАЧКИ ТИНКА
+ДОБАНОВАЧКИ ЗОРИЦА
+ДОБАНОВИЋ СОФИЈА
+ДОБЕШ ЈОВАН
+ДОБИ ЈУЛИЈАНА
+ДОБИЋ БРАНИСЛАВ
+ДОБИЋ ПЕТАР
+ДОБО ИЛЕШ
+ДОБО ЈОЖЕФ
+ДОБО ЈОЖЕФ
+ДОБОШ ЈОЖЕФ
+ДОБОШИ ШАНДОР
+ДОБОШИ ЂЕРЂ
+ДОБОШИ ЕРЖЕБЕТ
+ДОБОШИ ЈАНОШ
+ДОБОШИ ЛАСЛО
+ДОБОШИ МАГДАЛЕНА
+ДОБОШИ МАРГИТА
+ДОБОШИ ПАЛ
+ДОБОКАИ МИХАЈЛО
+ДОБОВИЧЕК ФРАНЦ
+ДОБРА ИВАН
+ДОБРАШ МИЛКА
+ДОБРАН СЛАВКО
+ДОБРАНИЋ РАДОВАН
+ДОБРАНИЋ ВИДОСАВА
+ДОБРЕ БОЖА
+ДОБРЕНОВ ДУШАН ДИПЛ ИНГ
+ДОБРЕНОВ ГРЕТА
+ДОБРЕНОВ ЈЕЛИСАВЕТА
+ДОБРЕНОВ ЈЕЛИСАВЕТА
+ДОБРЕНОВ НИКОЛА
+ДОБРЕНОВ САНДРА
+ДОБРЕНОВ ВОЈИН
+ДОБРЕТИЋ МАРИЦА
+ДОБРИЧКИ ДУШАН
+ДОБРИЧКИ МАРИЈА
+ДОБРИЋ ЖИВКО
+ДОБРИЋ ЂОРЂЕ
+ДОБРИЋ БОШКО
+ДОБРИЋ БРАНИСЛАВ
+ДОБРИЋ ЕРЖЕБЕТ
+ДОБРИЋ ГОЈКО
+ДОБРИЋ ЈОВАН
+ДОБРИЋ КОСТА
+ДОБРИЋ ЉУБИЦА
+ДОБРИЋ МИЛАДИН
+ДОБРИЋ МИЛАН
+ДОБРИЋ МИЛАН
+ДОБРИЋ НЕГОСАВА
+ДОБРИЋ РАДИСЛАВ
+ДОБРИЋ РАДИВОЈ
+ДОБРИЋ СЛОБОДАН
+ДОБРИЋ СТЕВАН
+ДОБРИЋ УГЉЕША
+ДОБРИЋ ВЕРОНИКА
+ДОБРИЋ ВЕСНА
+ДОБРИЋ ЗДРАВКО
+ДОБРИЈЕВИЋ ДУШАН
+ДОБРИЈЕВИЋ ПЕТАР
+ДОБРИЈЕВИЋ СЛОБОДАНКА
+ДОБРИЛОВИЋ РАЈКО
+ДОБРИЛОВИЋ РАЈКО
+ДОБРИЛОВИЋ СИМА
+ДОБРИН ДЕЖЕ
+ДОБРИН НИКОЛА
+ДОБРИН ОЛГА
+ДОБРИНИЋ ДАРИНКА
+ДОБРИВОЈЕВИЋ ДУШАН
+ДОБРИВОЈЕВИЋ СВЕТЛАНА
+ДОБРЊАЦ СТОЈАНКА
+ДОБРОДЕЛ ФРАЊО
+ДОБРОДОЛСКИ ЈЕЛЕНА
+ДОБРОДОЛСКИ ЈУЛКА
+ДОБРОДОЛСКИ ВУКИЦА
+ДОБРОКЕС МИЛЕНА
+ДОБРОМИРОВ АЛЕКСАНДАР
+ДОБРОМИРОВ АЛЕКСАНДАР
+ДОБРОМИРОВ ДУШАН
+ДОБРОМИРОВ ЕУФИМИЈА
+ДОБРОМИРОВ НАДА
+ДОБРОМИРОВ ПЕТАР
+ДОБРОМИРОВ ВИТОМИР
+ДОБРОМИРОВ ВЛАДИМИР
+ДОБРОМИРОВ ВОЈИСЛАВ
+ДОБРОМИРОВИЋ ПАВЛЕ
+ДОБРОСАВЉЕВ ЛАЗАР
+ДОБРОСАВЉЕВ ЛАЗАР
+ДОБРОСАВЉЕВ МИЛАН
+ДОБРОСАВЉЕВ МИЛАН
+ДОБРОСАВЉЕВ МИЛАН
+ДОБРОСАВЉЕВ МИЛОВАН
+ДОБРОСАВЉЕВ МИРА
+ДОБРОСАВЉЕВ ПЕТАР
+ДОБРОСАВЉЕВ РАДА
+ДОБРОСАВЉЕВ РАНКО
+ДОБРОСАВЉЕВ САВА
+ДОБРОСАВЉЕВ СВЕТОЗАР
+ДОБРОСАВЉЕВИЋ ДРЕНКА
+ДОБРОСАВЉЕВИЋ СЛАВКО
+ДОБРОСАВЉЕВИЋ ВАСА НОВИНАР
+ДОБРОСАВЉЕВИЋ ВАСИЛИЈЕ
+ДОБРОСАВЉЕВИЋ ВАСИЛИЈЕ
+ДОБРОТА БИСЕРКА
+ДОБРОТА ДАМИР
+ДОБРОВИЋ АЛЕКСАНДРА
+ДОБРОВИЋ ДАМЈАНКА
+ДОБРОВИЋ ЉУБОМИР
+ДОДЕРОВИЋ МИЛОСАВ
+ДОДЕРОВИЋ РАДИВОЈ
+ДОДИЋ ИВАН
+ДОДИЋ ЈЕЛЕНА
+ДОДИЋ МИЛИВОЈ
+ДОДИЋ МИОДРАГ
+ДОДИЋ МИОДРАГ
+ДОДИЋ САВА
+ДОДИЋ СЛОБОДАН
+ДОДИЋ СТАНОЈЕ
+ДОДИЋ СТОЈАН
+ДОДИЋ ВЕРА
+ДОДИК БАРТОЛ
+ДОДИК СТЕВАН
+ДОДЛЕК ВЛАДИМИР
+ДОДОШ ЛАЗАР
+ДОГАНЏИЋ ДОБРИВОЈЕ
+ДОЈЧИНОВИЋ ЂУЈА
+ДОЈЧИНОВИЋ ЂУРЂИЦА
+ДОЈЧИНОВИЋ БЛАГОЈЕ
+ДОЈЧИНОВИЋ БОЖИДАР
+ДОЈЧИНОВИЋ ДУШАН
+ДОЈЧИНОВИЋ ЈОСИФ
+ДОЈЧИНОВИЋ МИХАЈЛО
+ДОЈЧИНОВИЋ МИРОСЛАВ ДР
+ДОЈЧИНОВИЋ РАДОСЛАВ
+ДОЈЧИНОВИЋ ВЛАДА
+ДОЈЧИНОВСКИ ВАНЧА
+ДОЈДЕР ИВО
+ДОЈДЕР ЈАКОВ
+ДОЈИЋ ЛАЗАР
+ДОЈКИЋ БОЖИДАР
+ДОЈКИЋ ЈУЛКИЦА
+ДОЈКИЋ КСЕНИЈА
+ДОЈКИЋ МАРИЈА
+ДОЈКИЋ МИЛОРАД
+ДОЈКИЋ МИЛОРАД
+ДОЈКИЋ МЛАДЕН
+ДОЈКИЋ МЛАДЕН
+ДОЈКИЋ ПАЈА
+ДОЈКИЋ ПЕТАР ДР
+ДОЈКИЋ ПЕТАР
+ДОЈКИЋ РАЈКО
+ДОЈКИЋ РАЈКО
+ДОЈКИЋ СЛАВКО
+ДОЈКИЋ ВЈЕКОСЛАВ
+ДОКЛЕАН АДАМ
+ДОКМАНОВИЋ БОРИВОЈ
+ДОКМАНОВИЋ ДЕЈАН
+ДОКМАНОВИЋ МАРИЈА
+ДОКМАНОВИЋ МИЛИЦА
+ДОКМАНОВИЋ НАДА
+ДОКМАНОВИЋ РАДИВОЈ
+ДОКНИЋ ВЕЉКО
+ДОКОШИЋ МАРИЈА
+ДОЛАШ МИЛОВАН
+ДОЛЕНЕЦ ФЛОРИЈАН
+ДОЛГА МИЛЕНА
+ДОЛИНАЈ ЂУРО
+ДОЛИНАЈ ЈАРОСЛАВА
+ДОЛИНАР ЉУБИЦА
+ДОЛИНГА МАРИОРА
+ДОЛИНГА НИКОЛАЈЕ
+ДОЛОШ ФРАЊА
+ДОЛОВЧАК КАТИЦА
+ДОЛОВАЦ АНКИЦА
+ДОЛОВАЦ БИСЕРКА
+ДОЛОВАЦ ДРАГИЦА
+ДОЛОВАЦ ЈОВАН
+ДОЛОВАЦ ЛАЗАР
+ДОЛОВАЦ ЛАЗАР
+ДОЛОВАЦ МАРИЈА
+ДОЛОВАЦ МИЛИЦА
+ДОЛОВАЦ МИЛОШ
+ДОЛОВАЦ РАДИВОЈ
+ДОЛОВАЦ РАДОСЛАВ
+ДОЛОВАЦ РАДОСЛАВ
+ДОЛОВАЦ СЛАВКО
+ДОЛОВАЦ СЛАВКО
+ДОЛОВАЦ СЛОБОДАН
+ДОЛОВАЦ ВЕЛИМИР
+ДОЛОВАЦ ЗОРКА
+ДОМАСТОВИЋ ДАНИЦА
+ДОМАЗЕТ НИКОЛА
+ДОМАЗЕТ ЗОРИЦА
+ДОМАЗЕТОВ ВЕЛИМИР
+ДОМАЗЕТОВИЋ ЧЕДОМИР
+ДОМАЗЕТОВИЋ МИРЈАНА
+ДОМАЗЕТОВИЋ МИРЈАНА
+ДОМБИ ЛАСЛО
+ДОМБИ РАДОЈКА
+ДОМБИ СМИЉКА
+ДОМИНИЋ АНА
+ДОМИНИЋ НИКОЛА
+ДОМОЊИ МАРТИН
+ДОМОНКОШ ЕВА
+ДОМОНКОШ ВИЛМОШ
+ДОМОНКОС ИШТВАН
+ДОМОВИЋ МИЛАН
+ДОНЧЕВ ТОДЕ
+ДОНЧИЋ НАДА
+ДОНАТ ДРАГУТИН
+ДОНАТ САВЕТА
+ДОНДУР ЖИВКО
+ДОНДУР ДАНИЦА
+ДОНДУР ДАРИНКА
+ДОНДУР МИЛИЦА
+ДОНДУР СЛАВКО
+ДОНДУР СТАНКО
+ДОНДУР ЗДРАВКО
+ДОНЕВ ТОДОР
+ДОНЕВСКИ ЈЕЛЕНА
+ДОНЕВСКИ КРИСТИНА
+ДОНИЋ ЖИВОЈИН
+ДОНКОР ЏЕМС
+ДОНСКОВ СЕРГИЈЕ
+ДОНСКОВА ЗОЈА ДР ЛЕКАР
+ДОПУЂ БОЖИДАР
+ДОПУЂ БРАНКО
+ДОПУЂ ДУБРАВКА
+ДОПУЂ ГОРАН
+ДОПУЂ МАРИЈА
+ДОПУЂ МИЛАН ДР
+ДОПУЂ МИРОСЛАВА
+ДОПУЂА ЖИВКО
+ДОПУЂА ДАРА
+ДОПУЂА ДРАГОМИР
+ДОПУЂА САВА
+ДОПУЂА ВЛАДИМИР
+ДОРЧИЋ АЛОЈЗА
+ДОРЧИЋ-БИКИЋ ОЛГИЦА
+ДОРЧИЋ БОЖО
+ДОРЧИЋ КЛЕМЕНТ
+ДОРЧИЋ МАРЈАН
+ДОРИЋ ЖАРКО
+ДОРИЋ БИЉАНА
+ДОРИЋ БИЉАНА
+ДОРИЋ БОРИСЛАВ
+ДОРИЋ ФРАЊА
+ДОРИЋ ИЛИЈА
+ДОРИЋ ИРМА
+ДОРИЋ ЈОСИП
+ДОРИЋ ПЕТАР
+ДОРИЋ СТЕВАН
+ДОРИЋ ВЕСЕЛИН
+ДОРКО СОФИЈА
+ДОРМАН ЛАСЛО
+ДОРО ГЕЗА ДР
+ДОРОШЕВ ЂОРЂЕ
+ДОРОШКИ ЂОРЂЕ
+ДОРОШКИ БРАНКО
+ДОРОШКИ ДЕСАНКА
+ДОРОШКИ ЈОВАН ДР
+ДОРОШКИ ЉИЉАНА
+ДОРОШКИ МАРИЈА
+ДОРОШКИ МИЛАН
+ДОРОШКИ МИЛА
+ДОРОШКИ МИРЈАНА
+ДОРОШКИ НИКОЛА
+ДОРОШКИ СИМА
+ДОРОШКИ ВИДОСАВА
+ДОРОШКИ ВУЈАДИН
+ДОРОЦКИ МАХАЛ
+ДОРОГХАЗИ ИРИНА
+ДОРОГИ ШАНДОР
+ДОРОЊСКИ ДУШАН
+ДОРОЊСКИ КАТАРИНА
+ДОРОСЛОВАЧКИ ЂУРА
+ДОРОСЛОВАЧКИ АЛЕКСАНДАР
+ДОРОСЛОВАЧКИ АНИЦА
+ДОРОСЛОВАЧКИ ДАНИЦА
+ДОРОСЛОВАЧКИ ГРУЈА
+ДОРОСЛОВАЧКИ ЈЕЛЕНА
+ДОРОСЛОВАЧКИ КСЕНИЈА
+ДОРОСЛОВАЧКИ МАРГИТА
+ДОРОСЛОВАЧКИ МАРИНА
+ДОРОСЛОВАЧКИ МАРЈАНА
+ДОРОСЛОВАЧКИ МИРОСЛАВ
+ДОРОСЛОВАЧКИ НИКОЛА
+ДОРОСЛОВАЧКИ РАДЕ
+ДОРОСЛОВАЧКИ САВЕТА
+ДОРОСЛОВАЧКИ СТЕВАНКА
+ДОРОСЛОВАЧКИ ВУЈА
+ДОРОСЛОВАЧКИ ВУКА
+ДОРОСЛОВАЦ БРАНИСЛАВА
+ДОРОСЛОВАЦ ЛАЗАР
+ДОРОСЛОВАЦ МАРИЈА
+ДОРОСЛОВАЦ МИЛАНА
+ДОРОСЛОВАЦ МИРОСЛАВ
+ДОРОСЛОВАЦ ПЕТАР
+ДОРОСЛОВАЦ ЗОРАН
+ДОРОТИЋ ЂОРЂЕ
+ДОРОТИЋ ЂОРЂЕ
+ДОРОТИЋ ГИЗЕЛА
+ДОРОТИЋ ГОРДАН
+ДОРОТИЋ-ГУТЕША ЛЕОНА
+ДОРОТИЋ ИЛА МР ПРОФ
+ДОРОТИЋ МАРИЈА
+ДОРОТИЋ СТЕВАН
+ДОРОТКА ДРАГАН
+ДОРОТКА МИЛОШ
+ДОСТАН АНА
+ДОСТАН АРПАД
+ДОСТАН ДАРИНКА
+ДОСТАН ИШТВАН
+ДОСТАН ЈОЖЕФ
+ДОСТАН ЛАДИСЛАВ
+ДОСТАН ПЕТАР
+ДОСТАН СТЕВАН
+ДОСТАН ТИБОР
+ДОСТАНИЋ ДРАГИЦА
+ДОСТАНИЋ РАДМИЛО
+ДОСТАНИЋ ВОИСЛАВ
+ДОСТАЊ ЈОСИП
+ДОСТАЊ РОЗАЛИЈА
+ДОСТИЋ СЛАВКО
+ДОСТИЋ СОФИЈА
+ДОТЛИЋ ЖИВКО
+ДОТЛИЋ БОШКО
+ДОТЛИЋ БОРИСЛАВ
+ДОТЛИЋ ДОБРИЛА
+ДОТЛИЋ ДУШАН
+ДОТЛИЋ ЛАЗАР
+ДОТЛИЋ ЛАЗАР
+ДОТЛИЋ ЛУКА
+ДОТЛИЋ САВА
+ДОТЛИЋ СОФИЈА
+ДОТЛИЋ ВАСА
+ДОТОВ ДРАГО
+ДОВАТ ПАВЛЕ ДР
+ДОВАТ ВЛАДИМИР
+ДОВАТОВ АДАМ
+ДОВЕДЕН БОРИСЛАВ
+ДОВГАН ЈОСИП
+ДОВИЈАРОВ МИЛОШ
+ДОВИЈАРОВ РАДИВОЈ
+ДОВИЈАРСКИ БРАНКА
+ДОВИЈАРСКИ МИЛЕНА
+ДОВИЈАРСКИ СТАНИМИР
+ДОВНИКОВИЋ ЛАЗАР
+ДОЗЕТ ЂОРЂЕ
+ДОЗЕТ БОЖО
+ДОЗЕТ ДРАГИЦА
+ДОЗЕТ ИЛИЈА
+ДОЗЕТ ЈАСНА
+ДОЗЕТ ЈУЛКИЦА
+ДОЗЕТ ЉУБИЦА
+ДОЗЕТ ЉУБОМИР
+ДОЗЕТ МИХАЈЛО
+ДОЗЕТ МИЛАН
+ДОЗЕТ МИЛОВАН
+ДОЗЕТ НИКОЛА
+ДОЗЕТ РАДЕ
+ДОЗЕТ РАДМИЛА
+ДОЗЕТ РАДОСЛАВКА
+ДОЗЕТ САВКА
+ДОЗЕТ СТАНКО
+ДРЧА АНА
+ДРЧА БРАНКО
+ДРЧА ДРАГИЦА
+ДРЧА ЈАНКО
+ДРЧА МИЛАН
+ДРЧА РАТКО
+ДРЧА СЛАВКО
+ДРЧА СТЕВАН
+ДРЧА-УРГЕН МАРИЈА
+ДРЧА ВЛАТКО
+ДРЧЕЛИЋ ДОБРИСАВ
+ДРЧЕЛИЋ МИРЈАНА
+ДРЖАЈИЋ ДИМИТРИЈЕ ПРОФЕСОР
+ДРЖИЋ ИЛИЈА
+ДРАЧА ЖИВКО
+ДРАЧА ЂОРЂЕ
+ДРАЧА АЦА
+ДРАЧА ДУБРАВКА
+ДРАЧА МИЛЕ
+ДРАЧА ПЕТАР ДР
+ДРАЧА ПЕТАР
+ДРАЧА СПАСЕНКА
+ДРАЧА ТОМО ДР
+ДРАЧИН КОСТА
+ДРАШИЋ НАТАЛИЈА
+ДРАШКО ЈЕЛКА
+ДРАШКО МИЛОВАН
+ДРАШКО СЛОБОДАН
+ДРАШКОВИЋ БРАНКО ДИПЛ ОЕЦ
+ДРАШКОВИЋ ДРАГА
+ДРАШКОВИЋ ДУШАН
+ДРАШКОВИЋ ЉУБОМИР
+ДРАШКОВИЋ МИХАЈЛО
+ДРАШКОВИЋ МИЛОМИР
+ДРАШКОВИЋ МИЛОРАД
+ДРАШКОВИЋ НЕНАД
+ДРАШКОВИЋ САВО
+ДРАШКОВИЋ СЛОБОДАНКА
+ДРАШКОВИЋ СЛОБОДАН
+ДРАШКОВИЋ СРЕТЕН
+ДРАЖЕТА МИЛЕНКО
+ДРАЖЕТА СТЕВАН
+ДРАЖЕТИН ДУШАН
+ДРАЖЕТИН МЛАДЕН
+ДРАЖИЋ ЖАРКО
+ДРАЖИЋ ЂОРЂЕ
+ДРАЖИЋ ЂОРЂЕ
+ДРАЖИЋ АЛЕКСАНДАР
+ДРАЖИЋ БОГДАН
+ДРАЖИЋ БУДО
+ДРАЖИЋ ДОБРИВОЈ
+ДРАЖИЋ ДРАГОЉУБ
+ДРАЖИЋ ДУШАН
+ДРАЖИЋ ДУШАН
+ДРАЖИЋ ЕМИЛ
+ДРАЖИЋ ГОРДАНА
+ДРАЖИЋ ИЛИЈА
+ДРАЖИЋ ИЛИЈА
+ДРАЖИЋ ИРЕНА
+ДРАЖИЋ ЈАША
+ДРАЖИЋ ЈЕЛИЦА
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ ЈОВАН
+ДРАЖИЋ КАТИЦА
+ДРАЖИЋ КОСТА
+ДРАЖИЋ ЛАЗАР
+ДРАЖИЋ ЉУБИЦА
+ДРАЖИЋ МАРИЈА
+ДРАЖИЋ МИЛАН
+ДРАЖИЋ МИЛАН
+ДРАЖИЋ МИЛЕНКО
+ДРАЖИЋ МИЛЕНКО
+ДРАЖИЋ МИЛИНКО ДИПЛ ИНГ
+ДРАЖИЋ МИЛОРАД
+ДРАЖИЋ МИЛОРАД
+ДРАЖИЋ МИЛОРАД
+ДРАЖИЋ МИРА
+ДРАЖИЋ МИТА
+ДРАЖИЋ НАТАЛИЈА
+ДРАЖИЋ НАТАЛИЈА
+ДРАЖИЋ НЕСТОР
+ДРАЖИЋ НЕВЕНКА
+ДРАЖИЋ НИКОЛА
+ДРАЖИЋ НИКОЛА
+ДРАЖИЋ ОСТОЈА
+ДРАЖИЋ ПЕТАР
+ДРАЖИЋ РАДОВАН
+ДРАЖИЋ РЕЉА
+ДРАЖИЋ СЛАВКО
+ДРАЖИЋ СОФИЈА
+ДРАЖИЋ СТАНКО
+ДРАЖИЋ СТЕВАН
+ДРАЖИЋ СТЕВАН
+ДРАЖИЋ СУЗАНА
+ДРАЖИЋ ТОМИСЛАВ
+ДРАЖИЋ ВЕЛИНКА
+ДРАЖИЋ ВЕРА
+ДРАЖИЋ ВЕРА
+ДРАЖИЋ ВЕРА
+ДРАЖИЋ ЗЛАТКО
+ДРАЖИЛОВИЋ СТАНИША
+ДРАЖИН БОРИСЛАВ
+ДРАГАШ ЂОРЂЕ
+ДРАГАШ ЂУРО
+ДРАГАШ БОРИСЛАВ
+ДРАГАШ БРАНКО
+ДРАГАШ ДРАГОМИР
+ДРАГАШ ИВАН
+ДРАГАШ КАТИЦА
+ДРАГАШ-КОВАЧ ЉУБИЦА
+ДРАГАШ ЛЕПОСАВА
+ДРАГАШ ЉУБИЦА
+ДРАГАШ ЉУБИЦА
+ДРАГАШ МАНОЈЛО
+ДРАГАШ МИЛАН
+ДРАГАШ МИЛЕНКО
+ДРАГАШ МИРА
+ДРАГАШ МИРЈАНА
+ДРАГАШ МОМЧИЛО
+ДРАГАШ РАДИВОЈ
+ДРАГАШ РАДОМИР
+ДРАГАШ СПОМЕНКА
+ДРАГАШ СВЕТЛАНА
+ДРАГАШ ЗОРАН
+ДРАГАШЕВ ВЛАДИМИР
+ДРАГАН МИЛЕНА
+ДРАГАНИЋ ДРАГА
+ДРАГАНИЋ ЈАНКО
+ДРАГАНИЋ МИХАЈЛО
+ДРАГАНИЋ МИЛИЦА ДР
+ДРАГАНИЋ МИЛКА
+ДРАГАНИЋ МИРКО
+ДРАГАНИЋ МИРОСЛАВ
+ДРАГАНИЋ НАДЕЖДА
+ДРАГАНИЋ РАНКО
+ДРАГАНИЋ ВИДА
+ДРАГАНИЋ ЗЕКО
+ДРАГАНОВ МИЛОШ
+ДРАГАНОВ ОЛГА
+ДРАГАНОВ СЛОБОДАН
+ДРАГАНОВ СТОЈАНКА
+ДРАГАНОВИЋ СЛАВКО
+ДРАГЕЉЕВИЋ ДУШАН
+ДРАГЕЉЕВИЋ ЈОВАН
+ДРАГИЧЕВИЋ АДАМ
+ДРАГИЧЕВИЋ АЛЕКСАНДАР
+ДРАГИЧЕВИЋ БОРИСЛАВ
+ДРАГИЧЕВИЋ ГОЈКО
+ДРАГИЧЕВИЋ ИЛИНКА
+ДРАГИЧЕВИЋ ИВКА
+ДРАГИЧЕВИЋ КРЕШИМИР
+ДРАГИЧЕВИЋ ЛАЗАР
+ДРАГИЧЕВИЋ ЉУБИЦА
+ДРАГИЧЕВИЋ ЉУБОМИР
+ДРАГИЧЕВИЋ МИЉА
+ДРАГИЧЕВИЋ МИЛОШ
+ДРАГИЧЕВИЋ МИРКО
+ДРАГИЧЕВИЋ РАДЕНКО
+ДРАГИЧЕВИЋ СПАСА
+ДРАГИЧЕВИЋ СРЕТЕН
+ДРАГИЧЕВИЋ ВОЈИН
+ДРАГИЧЕВИЋ ВОЈИСЛАВ
+ДРАГИЧЕВИЋ ЗОРАН
+ДРАГИША ЖАРКО
+ДРАГИШИЋ БОГДАН
+ДРАГИШИЋ БОРИСЛАВКА
+ДРАГИШИЋ ЈОВАНКА
+ДРАГИШИЋ НИКОЛА
+ДРАГИШИЋ ПЕТАР
+ДРАГИШИЋ РАДЕ
+ДРАГИЋ ЧЕДОМИР
+ДРАГИЋ ЖЕЉКО
+ДРАГИЋ ЂОРЂЕ
+ДРАГИЋ АНА
+ДРАГИЋ БРАНКО
+ДРАГИЋ ДУШАН
+ДРАГИЋ ДУШАН
+ДРАГИЋ ЕЛВИРА
+ДРАГИЋ ИЛИЈА
+ДРАГИЋ ИЛИЈА
+ДРАГИЋ ИЛИЈА
+ДРАГИЋ ЈЕЛЕНА
+ДРАГИЋ ЉУБИША
+ДРАГИЋ ЉУБИША
+ДРАГИЋ МАРИЈАНА
+ДРАГИЋ МИЛЕНКО
+ДРАГИЋ МИЛИВОЈЕ
+ДРАГИЋ МИЛКА
+ДРАГИЋ МИЛОРАД
+ДРАГИЋ НАДА
+ДРАГИЋ НЕДЕЉКО
+ДРАГИЋ НЕВЕНКА
+ДРАГИЋ НИКОЛА
+ДРАГИЋ ОБРАД
+ДРАГИЋ ПАУЛА
+ДРАГИЋ ПАВЛЕ
+ДРАГИЋ ПЕРА
+ДРАГИЋ ПЕТАР
+ДРАГИЋ ПЕТАР
+ДРАГИЋ РАНКО
+ДРАГИЋ САВА
+ДРАГИЋ СЛАВКО
+ДРАГИЋ СПАСОЈЕ
+ДРАГИЋ СТЕВАН
+ДРАГИЋ СТЕВАН
+ДРАГИЋ ТОМИСЛАВ
+ДРАГИЋ ВЕРА
+ДРАГИЋ ВЕСНА
+ДРАГИЋЕВИЋ БОГИЦА
+ДРАГИЋЕВИЋ БОРИСЛАВ
+ДРАГИЋЕВИЋ БРАНИСЛАВ
+ДРАГИЋЕВИЋ РАЈИЦА
+ДРАГИН ЖАРКО
+ДРАГИН БОГДАН
+ДРАГИН БОРИВОЈ
+ДРАГИН ДАНИЛО
+ДРАГИН ДЕСАНКА
+ДРАГИН ДУШКО
+ДРАГИН ГОРДАНА
+ДРАГИН ЈОВАН ДИПЛ ИНГ
+ДРАГИН ЈОВО ДИПЛ ИНГ
+ДРАГИН ЛАЗАР
+ДРАГИН МАРКО
+ДРАГИН МИОДРАГ
+ДРАГИН МИОДРАГ
+ДРАГИН НИКОЛА
+ДРАГИН ПЕТРИЈА
+ДРАГИН РАДИВОЈ
+ДРАГИН РИСТО
+ДРАГИН САША
+ДРАГИН СОКИЦА
+ДРАГИН СТЕВАН
+ДРАГИН СВЕТИСЛАВ
+ДРАГИН ВАСА
+ДРАГИН ВОЈИСЛАВ
+ДРАГИН ЗОРАН
+ДРАГИНЧИЋ ДУШАН
+ДРАГИНЧИЋ СЛАВКО
+ДРАГОШЕВ ДРАГАН
+ДРАГОЈЕВИЋ ЖЕЉКО
+ДРАГОЈЕВИЋ АНЂЕЛКО
+ДРАГОЈЕВИЋ БОШКО
+ДРАГОЈЕВИЋ БРАНИСЛАВ
+ДРАГОЈЕВИЋ ДАРИНКА
+ДРАГОЈЕВИЋ ДРАГУТИН
+ДРАГОЈЕВИЋ ГОЈКО
+ДРАГОЈЕВИЋ ХРИСТИНА
+ДРАГОЈЕВИЋ ЉУБОМИР
+ДРАГОЈЕВИЋ МИЛЕНА
+ДРАГОЈЕВИЋ МИЛЕНКО
+ДРАГОЈЕВИЋ МИЛЕНКО
+ДРАГОЈЕВИЋ МИЛИЦА
+ДРАГОЈЕВИЋ МИЛОРАД
+ДРАГОЈЕВИЋ НИКОЛА
+ДРАГОЈЕВИЋ РАДИША
+ДРАГОЈЕВИЋ СТЕВАН
+ДРАГОЈЕВИЋ ЗЛАТАНА
+ДРАГОЈЛОВ АНКИЦА
+ДРАГОЈЛОВ БОШКО
+ДРАГОЈЛОВ ДУШАН
+ДРАГОЈЛОВ ДУБРАВКА
+ДРАГОЈЛОВ ГАВРА
+ДРАГОЈЛОВ ЛАЗАР
+ДРАГОЈЛОВ МАРГИТА
+ДРАГОЈЛОВ МИЛОШ
+ДРАГОЈЛОВ МИЛОШ
+ДРАГОЈЛОВ МИРОСЛАВ
+ДРАГОЈЛОВ ВОЈИСЛАВ
+ДРАГОЈЛОВИЋ ДУШКО
+ДРАГОЈЛОВИЋ ЛАЗАР
+ДРАГОЈЛОВИЋ МАРА
+ДРАГОЈЛОВИЋ МИЛАН
+ДРАГОЈЛОВИЋ МИЛАН
+ДРАГОЈЛОВИЋ ЗОРИЦА
+ДРАГОЉЕВИЋ ГОЈКО
+ДРАГОЉЕВИЋ МАРИНКО
+ДРАГОЉЕВИЋ МИТАР
+ДРАГОЉЕВИЋ РАНКО
+ДРАГОЉЕВИЋ СЕКУЛА
+ДРАГОЉЕВИЋ СТОЈАН
+ДРАГОЉЕВИЋ ВЛАДЕ
+ДРАГОМИРОВИЋ ЂОКА
+ДРАГОМИРОВИЋ ДИМИТРИЈЕ
+ДРАГОМИРОВИЋ ДРАГИЦА
+ДРАГОМИРОВИЋ ИВАН
+ДРАГОМИРОВИЋ ЉУБИЦА
+ДРАГОМИРОВИЋ САВА
+ДРАГОМИРОВИЋ ТОДОР
+ДРАГОСАВАЦ АНГЕЛИНА
+ДРАГОСАВАЦ ИЛИЈА
+ДРАГОСАВАЦ КАТИЦА
+ДРАГОСАВАЦ МЕЛАНИЈА
+ДРАГОСАВАЦ МИЛАНКО
+ДРАГОСАВАЦ МИЛОРАД
+ДРАГОСАВАЦ НИКОЛА
+ДРАГОСАВАЦ ЗУЗАНА
+ДРАГОСАВЉЕВИЋ ЂУРА
+ДРАГОСАВЉЕВИЋ ЉИЉАНА
+ДРАГОСАВЉЕВИЋ МАРИЈА
+ДРАГОСАВЉЕВИЋ МИРЈАНА
+ДРАГОСАВЉЕВИЋ МЛАДЕН
+ДРАГОСАВЉЕВИЋ СТЕВА ДИПЛ ИНГ
+ДРАГОСАВЉЕВИЋ СТОЈША
+ДРАГОСАВЉЕВИЋ ВОЈА
+ДРАГОСЛАВИЋ ВИДАК
+ДРАГОВАЦ СЛАВКО
+ДРАГОВИЋ ЧЕДО
+ДРАГОВИЋ БУДИМИР
+ДРАГОВИЋ ДРАГАН
+ДРАГОВИЋ ГОЈКО
+ДРАГОВИЋ ГОРДАНА
+ДРАГОВИЋ ЈАСМИНКА
+ДРАГОВИЋ ЈОВАНКА
+ДРАГОВИЋ МИЛАН
+ДРАГОВИЋ МИЛИЋ
+ДРАГОВИЋ МИЛИЦА
+ДРАГОВИЋ МИРА
+ДРАГОВИЋ РАНКО
+ДРАГОВИЋ СНИЈЕЖАНА
+ДРАГОВИЋ СТАМЕНКА
+ДРАГОВИЋ СВЕТИМИР
+ДРАГОВИЋ СВЕТОМИР
+ДРАГОВИЋ ВЕРА
+ДРАГОВИЋ ВИДАК
+ДРАГОВИЋ ВЛАДА
+ДРАГОВИЋ ЗОРАН
+ДРАГУМИЛО МИЛОМИР
+ДРАГУМИЛО МИЛУТИН
+ДРАГУНОВИЋ БОРИСЛАВ
+ДРАГУНОВИЋ ПЕРО
+ДРАГУТИНОВИЋ ЖИВКА
+ДРАГУТИНОВИЋ МИЛАН
+ДРАГУТИНОВИЋ ПРЕДРАГ
+ДРАГУТИНОВИЋ ЗОРАН
+ДРАХ ЈЕЛИСАВЕТА
+ДРАХ ЈЕЛИСАВЕТА
+ДРАХОТУСКИ БОРИСЛАВ
+ДРАХОТУСКИ ПЕТАР
+ДРАКИЋ ДРАГИША
+ДРАКИЋ СЛОБОДАН ДР
+ДРАКУЛ ВАСО
+ДРАКУЛА ДУШАН
+ДРАКУЛА РАДМИЛА
+ДРАКУЛИЋ АЛЕКСАНДАР
+ДРАКУЛИЋ БРАНИСЛАВ
+ДРАКУЛИЋ ДРАГОМИР ДР СТОМАТОЛОГ
+ДРАКУЛИЋ ДРАГОМИР
+ДРАКУЛИЋ ЕРЖЕБЕТ
+ДРАКУЛИЋ ЈЕЛЕНА
+ДРАКУЛИЋ ЈОВАН
+ДРАКУЛИЋ КОСТА
+ДРАКУЛИЋ ЛАЗАР
+ДРАКУЛИЋ ЉУБИЦА
+ДРАКУЛИЋ МАРА
+ДРАКУЛИЋ МАРА
+ДРАКУЛИЋ МИЛАН
+ДРАКУЛИЋ МИЛАН
+ДРАКУЛИЋ МИЛАН
+ДРАКУЛИЋ МИЛИВОЈ
+ДРАКУЛИЋ МИРОСЛАВ
+ДРАКУЛИЋ ПРЕДРАГ
+ДРАКУЛИЋ СМИЉА
+ДРАКУЛИЋ СОФИЈА
+ДРАКУЛИЋ СТЕВАН
+ДРАКУЛИЋ СТОЈАНКА
+ДРАКУЛИЋ СВЕТИСЛАВ
+ДРАКУЛИЋ СВЕТОЗАР
+ДРАКУЛИЋ СВЕТОЗАР
+ДРАКУЛИЋ ТОДОР
+ДРАКУЛИЋ ЗОРАН
+ДРАПШИН ЧАВА
+ДРАПШИН ЂОРЂЕ
+ДРАПШИН ДАНИЦА
+ДРАПШИН ЛЕПОСАВА
+ДРАПШИН МИЛАН
+ДРАПШИН МИЛЕНКО
+ДРАПШИН ПЕТАР
+ДРАПШИН ПРЕДРАГ
+ДРАПШИН САВА
+ДРАПШИН ЗАГОРКА
+ДРАПШИН ЗОРАН
+ДРАПИЋ БОГДАН
+ДРАПИЋ СЕНИТА
+ДРАПИЋ СЛОБОДАН
+ДРАПИЋ ВЕЛИМИР
+ДРАПОШ СТЕВАН
+ДРЕШКАИ ШАНДОР
+ДРЕЦУН ВЕЉКО
+ДРЕХЕР ЛАЈОШ
+ДРЕХЕР НИКОЛА
+ДРЕХЕР ОТО
+ДРЕХЕР ВИЛИМ ДИПЛ ИНГ
+ДРЕКОВИЋ ЂУРО
+ДРЕКОВИЋ КАТИЦА
+ДРЕКОВИЋ ЗОРАН
+ДРЕМПЕТИЋ ДАРКО
+ДРЕМПЕТИЋ ПЕТАР
+ДРЕМПЕТИЋ ЗДЕНКО
+ДРЕЊАКОВИЋ ЈЕЛИЦА
+ДРЕНКОВИЋ ЛАСЛО
+ДРЕНОВЧАНИН ЉУБОМИР
+ДРЕНОВАЦ РАНКО
+ДРЕНОВЕЦ ЦВЕТО
+ДРЕТАР МИРКО
+ДРЕЗГА ЈАКОВ
+ДРЕЗГА ТОДОР
+ДРЕЗГИЋ ДАРА
+ДРЕЗГИЋ ИЛИЈА
+ДРЕЗГИЋ МАРИЈА
+ДРЕЗГИЋ МИЛАН
+ДРЕЗГИЋ РАДИВОЈ
+ДРЕЗГИЋ СВЕТЛАНА
+ДРЕЗГИЋ ВЛАДИМИР
+ДРИГУЛОВ СПАСОЈЕ
+ДРИНЧЕВИЋ ЖИВОТА
+ДРИНЧЕВИЋ ДЕСАНКА ДР
+ДРИНЧИЋ МЕЛАНИЈА
+ДРИНЧИЋ МИЛОЈКО
+ДРИНЧИЋ РАДМИЛА
+ДРИНИЋ АЛЕКСАНДАР
+ДРИНИЋ БОРИСЛАВ
+ДРИНИЋ ЈАГОДА
+ДРИНИЋ МИЛАН
+ДРИНИЋ МИЛЕНКО
+ДРИНИЋ МИЛЕТА
+ДРИНИЋ МИЛОВАН
+ДРИНИЋ МИРКО
+ДРИНИЋ НЕДЕЉКО
+ДРИНИЋ ПЕРО
+ДРИНИЋ РАДМИЛА
+ДРИНИЋ САВО
+ДРИНИЋ СЛАВИЦА
+ДРИНИЋ СТЕВО
+ДРИНИЋ ТОМО
+ДРИНИЋ ЗДРАВКО
+ДРИЊОВСКИ АЛЕКСАНДАР
+ДРИЊОВСКИ ВОЈИСЛАВ
+ДРК БАРБАРА
+ДРКУШИЋ ИЛИЈА
+ДРЉАЧА ЂОРЂЕ
+ДРЉАЧА ЂОРЂЕ
+ДРЉАЧА БРАНКА
+ДРЉАЧА ДРАГАН
+ДРЉАЧА ДУШАН
+ДРЉАЧА МАРКО
+ДРЉАЧА МИЋА
+ДРЉАЧА МИЛАНКО
+ДРЉАЧА МИЛОРАД
+ДРЉАЧА МИРКО
+ДРЉАЧА НЕЂО
+ДРЉАЧА НЕНАД
+ДРЉАЧА РАДОВАН
+ДРЉАЧА РАДОВАН
+ДРЉАЧА СТОЈА
+ДРЉАЧА ЗДРАВКА
+ДРЉАЧИЋ КАТА
+ДРЉЕВИЋ ЂУРО
+ДРЉЕВИЋ АНИЦА
+ДРЉЕВИЋ ЈОВАНКА
+ДРЉЕВИЋ МИЛЕТА
+ДРЉЕВИЋ МИЉА
+ДРЉЕВИЋ МИРЈАНА
+ДРЉИЋ МИЛАДИН
+ДРЉИЋ ПРЕДРАГ
+ДРМАНАЦ МИРОСЛАВ
+ДРМАНАЦ СТАНКО
+ДРМАНОВИЋ МИЛЕВА
+ДРНДАРЕВИЋ БОРА
+ДРНДАРЕВИЋ БОРА
+ДРНДАРЕВИЋ КАТИЦА
+ДРНДАРСКИ МИЛАН
+ДРНДАРСКИ ВЕЛИМИР
+ДРОБАЦ ЖАРКО
+ДРОБАЦ ЖАРКО
+ДРОБАЦ ЂОРЂЕ
+ДРОБАЦ АНА
+ДРОБАЦ БРАНИСЛАВ
+ДРОБАЦ ЉИЉАНА
+ДРОБАЦ МИЛАН
+ДРОБАЦ МИЛАН
+ДРОБАЦ МИЛОРАД
+ДРОБАЦ МИРОСЛАВ
+ДРОБАЦ НЕНАД
+ДРОБАЦ НИКОЛА
+ДРОБАЦ ПРЕДРАГ
+ДРОБАЦ РАДОЈКА
+ДРОБАЦ РАДОЈКА
+ДРОБАЦ СЛАВКО
+ДРОБАЦ ВЛАДО
+ДРОБАЦ ВУКАШИН НОВИНАР
+ДРОБАЦ ЗДРАВКО
+ДРОБИНА ЈУЛИЈАНА
+ДРОБИНА ЉУБИЦА
+ДРОБИНА МИХАЉ
+ДРОБИЊАК РУЖА
+ДРОБЊАК ЕВИЦА
+ДРОБЊАК ЉИЉАНА
+ДРОБЊАК МИЛИВОЈЕ
+ДРОБЊАК МИОДРАГ
+ДРОБЊАК МОМЧИЛО
+ДРОБЊАК РАДИША
+ДРОБЊАК РАДОЈИЦА
+ДРОБЊАК РАДОЈИЦА
+ДРОБЊАКОВИЋ ДУШАН
+ДРОБЊАКОВИЋ ГВОЗДЕН
+ДРОБЊАКОВИЋ РИСТИВОЈЕ
+ДРОБЊИК ЈОСИП
+ДРОБЊИК ЈУДИТ
+ДРОЊАК ЖИВАНА
+ДРОЊАК ЖИВКО
+ДРОЊАК ЂОРЂЕ
+ДРОЊАК ДАРИНКА
+ДРОЊАК МИЛАН
+ДРОЊАК МИРЈАНА
+ДРОЊАК ОЛГА
+ДРОЊАК РАСТКО
+ДРОЊАК САВИНКА
+ДРОЊАК СТЕВАН
+ДРОПКА АРПАД
+ДРОПКА ЈЕЛЕНА
+ДРОПКА НАТАША
+ДРОПКА СТЕВАН
+ДРОПО МИЛКА
+ДРОПО ВАСА
+ДРОПО ЗОРАН
+ДРОЗДИК ИЛОНА
+ДРОЗДИК МАРИЈА
+ДРУЖЕТИЋ ЖИКА
+ДРУГОВИЋ РУЖИЦА
+ДРУГОВИЋ РУЖИЦА
+ДРВЕНЏИЈА РАДОВАН
+ДРВЕНЏИЈА СЛАВКО
+ДРВЕЊАК ВЕРИЦА
+ДУЧЕВИЋ ВАСИЛИЈЕ
+ДУЧИЋ МИЛАН
+ДУЧИЋ СЛОБОДАН
+ДУШАНИЋ ДРАГАН
+ДУШАНИЋ ЛАЗАР
+ДУШАНИЋ ЉУБИЦА
+ДУШАНИЋ НАДА
+ДУШАНИЋ НЕНАД
+ДУШАНОВИЋ СТАНОЈЕ
+ДУШАНОВИЋ ЗВЕЗДАНА
+ДУШЕК ЗЛАТКО ДИПЛ ОЕЦ
+ДУШИЋ БРАНКО
+ДУШИЋ ЗОРАН
+ДУЋАК АНДРИЈА
+ДУЋАК АРАНКА
+ДУЋАК БАРБАРА
+ДУЋАК МИХАЈЛО
+ДУЋАК ТОМА
+ДУЂАК ДРАГУТИН
+ДУЂИК ФРАЊА
+ДУБАИЋ БОЖИДАР
+ДУБАИЋ МИЛАН
+ДУБАИЋ МИРКО
+ДУБАЈИЋ ЖАРКО
+ДУБАЈИЋ ЂУРА
+ДУБАЈИЋ АЛЕКСАНДАР
+ДУБАЈИЋ БИЉАНА
+ДУБАЈИЋ ДРАГАН
+ДУБАЈИЋ МИЛИЦА
+ДУБАЈИЋ МИЛОШ
+ДУБАЈИЋ МИРКО
+ДУБАЈИЋ ВИДА
+ДУБЉЕВИЋ СЛОБОДАН
+ДУБЉЕВИЋ СТОЈАН
+ДУБЉЕВИЋ ВОЈИСЛАВ
+ДУБЉЕВИЋ ЗЛАТА
+ДУБЊАКОВИЋ МАРТА
+ДУБОВСКА МИЛОТА
+ДУБОВСКИ ЈАНКО
+ДУБОВСКИ КАТИЦА
+ДУБРАВАЦ ДУШАН
+ДУБРОЈА ДАНИЦА
+ДУБРОЈА СЛОБОДАН
+ДУЦАНОВИЋ БОШКО
+ДУЦИЋ МИЛАН
+ДУДА ПАВЛЕ
+ДУДАШ ЂУРА
+ДУДАШ ЂУРА
+ДУДАШ ЂУРА
+ДУДАШ АНА
+ДУДАШ АНТАЛ
+ДУДАШ АРПАД
+ДУДАШ АРПАД
+ДУДАШ БОРИС
+ДУДАШ ХЕЛЕНА
+ДУДАШ ЈАНОШ
+ДУДАШ ЈУЛИЈАН
+ДУДАШ ЛАЗАР
+ДУДАШ МАРИНКО
+ДУДАШ МИХАЉ
+ДУДАШ ПИРОШКА
+ДУДАШ РОМАН
+ДУДАШ СЛАВОМИР
+ДУДАК ЈАРОСЛАВ
+ДУДАК МАРИЈА
+ДУДАК СТЕВАН
+ДУДАН МИЛИВОЈ
+ДУДАР НИКОЛА
+ДУДАРИН ЖАРКО
+ДУДАРИН ДРАГАН
+ДУДАРИН САВА
+ДУДАРИН СТЕВАН
+ДУДАРИН СТЕВАН
+ДУДАРИН ВЕСЕЛИН
+ДУДАРИН ЗОРАН
+ДУДАРИН ЗОРАН
+ДУДИЋ АНИЦА
+ДУДИЋ КОСТА
+ДУДИЋ КОСТА
+ДУДИЋ МАТЕ
+ДУДИЋ МИЛА
+ДУДИЋ МИЛЕ
+ДУДИЋ МИЛОШ
+ДУДИЋ МИЛОШ
+ДУДИЋ НАДА
+ДУДИЋ СВЕТОЗАР
+ДУДИЋ ВАСА
+ДУДИЋ ВАСА
+ДУДИЋ ВЕРИЦА
+ДУДИЋ ЗОРАН
+ДУДОЈЕВИЋ НЕЏАД
+ДУДОК ДАНИЕЛ ДР
+ДУДОК ЈАНКО
+ДУДОК ПАВЕЛ
+ДУДУКОВИЋ АЛЕКСАНДАР
+ДУДУКОВИЋ СЛОБОДАН
+ДУДУКОВИЋ СТЕВАН
+ДУДВАРСКИ БОЖИДАР
+ДУДВАРСКИ ДРАГОЉУБ
+ДУДВАРСКИ ИВАН
+ДУДВАРСКИ ПАЈА
+ДУДВАРСКИ ВЕЛИНКА
+ДУГАЈЛИЋ АНЂЕЛКА
+ДУГАЈЛИЋ АРЈАНА
+ДУГАЈЛИЋ МИЛОШ
+ДУГАЈЛИЋ РАДОВАН
+ДУГАЛИЋ ДРАГАН
+ДУГАНЏИЈА БРАНКО
+ДУГАНЏИЈА ДРАГОМИР
+ДУГАНЏИЈА ДУШАН
+ДУГАНЏИЈА НЕДЕЉКО
+ДУГИН СТОЈАН
+ДУГОШИЈА ЖИВКО
+ДУГОШИЈА-МАКСИМОВИЋ НАДА
+ДУГОЊИЋ МИЛЕ
+ДУГОЊИЋ МИЛУТИН
+ДУГОЊИЋ НИКОЛА
+ДУГОЊИЋ СВЕТОМИР
+ДУХ КАТАРИНА
+ДУХАЧЕК ВЛАДО
+ДУИЋ ЈОСИП
+ДУЈАКОВИЋ МИЛЕНА
+ДУЈАКОВИЋ МИЛИЦА
+ДУЈАКОВИЋ НОВА
+ДУЈАКОВИЋ ВЕЉКО
+ДУЈЕВСКИ ВАНГЕЛ ДР
+ДУЈИЋ ЂОРЂЕ
+ДУЈИЋ ИВАН
+ДУЈИЋ ИВИЦА
+ДУЈИЋ ЉУБИЦА
+ДУЈИЋ СЛОБОДАН
+ДУЈИЋ СЛОБОДАН
+ДУЈИЋ СЛОБОДАН
+ДУЈИЋ СМИЉА
+ДУЈИЋ СТОЈАНКА
+ДУЈИН ЖИВА
+ДУЈИН ЖИВКО
+ДУЈИН ДАНИЦА
+ДУЈИН ЛУКА
+ДУЈИН СИМЕОН
+ДУЈИН СВЕТИСЛАВ
+ДУЈИН ТЕОДОР
+ДУЈИН ВИТОМИР
+ДУЈКИЋ ВЛАДИСЛАВ
+ДУЈКОВИЋ БРАНКО
+ДУЈКОВИЋ ПЕТАР
+ДУЈКОВИЋ ТЕОДОР
+ДУЈКОВИЋ ВЛАДИМИР
+ДУЈЛОВИЋ БОРА
+ДУЈМИЋ АНТЕ
+ДУЈМОВИЋ ЕЛИЗАБЕТА
+ДУЈМОВИЋ ЕВА
+ДУЈМОВИЋ ФЕРЕНЦ
+ДУЈМОВИЋ ЈОСИП
+ДУЈОВИЋ ИЛИЈА
+ДУЈОВИЋ РАДМИЛА
+ДУЈОВИЋ РАДМИЛА
+ДУКА МИРОСЛАВ
+ДУКАИ АНДРАШ
+ДУКАН НАТАША
+ДУКАРИЋ ВИДА
+ДУКЕС ФОСКА
+ДУКИЋ ЂУРО
+ДУКИЋ БОРА
+ДУКИЋ ДАНИЛО
+ДУКИЋ ДРАГАН
+ДУКИЋ ДРАГИЦА
+ДУКИЋ ДУШАН
+ДУКИЋ ИВАНКА
+ДУКИЋ ЈЕЛЕНА
+ДУКИЋ ЈОВАН
+ДУКИЋ ЈОВАН
+ДУКИЋ КОСА
+ДУКИЋ ЉУБИЦА
+ДУКИЋ МИЛАН
+ДУКИЋ МИЛАН
+ДУКИЋ МИЛАН
+ДУКИЋ МИЛИЦА
+ДУКИЋ МИЛИЦА
+ДУКИЋ МИРЈАНА
+ДУКИЋ ПРЕДРАГ
+ДУКИЋ РАДЕ
+ДУКИЋ РАДЕ
+ДУКИЋ РАЈКО
+ДУКИЋ СЛАВИЦА
+ДУКИЋ СОФИЈА
+ДУКИЋ СТЕВО ДИПЛ ИНГ
+ДУКИЋ ВУКАШИН ДР
+ДУКИЋ ЗОРАН
+ДУКОВА ЛИЛИ
+ДУКОВСКИ СВЕТИСЛАВ
+ДУЛЕЈАН ЖИВАДИНКА
+ДУЛЕЈАН СЛАВКО
+ДУЛИЋ ШАНДОР
+ДУЛИЋ АНКА
+ДУЛИЋ ИВАН
+ДУЛИЋ ЈОСИП
+ДУЛИЋ ЈОСИП
+ДУЛИЋ ЉУДЕВИТ
+ДУЛИЋ МАГДА
+ДУЛИЋ МИХАЈЛО
+ДУЛИЋ МИРОСЛАВ
+ДУЛИЋ НИКОЛА
+ДУЛОВИЋ АНЂЕЛКО
+ДУЛОВИЋ БОГДАН
+ДУЛОВИЋ БРАНКО
+ДУЛОВИЋ ДУШАН
+ДУЛОВИЋ МИЛОВАН
+ДУЛОВИЋ МИЛУН
+ДУЛОВИЋ РАДОВАН
+ДУЛОВИЋ РАНКО
+ДУЛОВИЋ РАТКА
+ДУЛОВИЋ ЗОРАН
+ДУМА МИЛОРАД
+ДУМАНЧИЋ СЛАВИЦА
+ДУМАНЧИЋ ЗДРАВКО
+ДУМАНОВИЋ МЛАДЕН
+ДУМЕДАШ СПАСОЈЕ
+ДУМЕДАШ ВАСИЛИЈЕ
+ДУМЕНЧИЋ ИВАН
+ДУМИЋ СЛАВИЦА
+ДУМИЋ СТЕВАН ДИПЛ ИНГ
+ДУМИТРОВ АЛЕКСАНДАР
+ДУМИТРОВ ДИМИТРИЈЕ
+ДУМИТРОВ ЛУКА
+ДУМИТРОВ МАРИЈА
+ДУМИТРОВ МИОДРАГ
+ДУМИТРОВ НЕДЕЉКО
+ДУМИТРОВ СЛАВКО
+ДУМИТРОВ ВЕРИЦА
+ДУМИТРОВ ВОЈИН
+ДУМНИЋ ШАРИКА
+ДУМНИЋ МИЛАН
+ДУМОНИЋ БРАНКО
+ДУМОНИЋ ПЕТАР
+ДУНЂЕР РАДЕ
+ДУНЂЕР РАДЕ
+ДУНЂЕРИН ЂОРЂЕ
+ДУНЂЕРОВ КОСАНА
+ДУНЂЕРОВ НАДА
+ДУНЂЕРОВ ПИРОШКА
+ДУНЂЕРОВИЋ РАДОВАН
+ДУНЂЕРСКИ ЖИВАН
+ДУНЂЕРСКИ ЂОРЂЕ
+ДУНЂЕРСКИ ЂОРЂЕ
+ДУНЂЕРСКИ АЛЕКСАНДАР
+ДУНЂЕРСКИ АНА
+ДУНЂЕРСКИ ЦВЕТАНА
+ДУНЂЕРСКИ ДРАГАН
+ДУНЂЕРСКИ ИВАНКА
+ДУНЂЕРСКИ ИВАН
+ДУНЂЕРСКИ ЈОВАН
+ДУНЂЕРСКИ МАРИЈА
+ДУНЂЕРСКИ МИЛАН
+ДУНЂЕРСКИ МИРЈАНА
+ДУНЂЕРСКИ НОВАК
+ДУНЂЕРСКИ СИМА
+ДУНЂЕРСКИ СОФИЈА
+ДУНЂЕРСКИ СТАНИСЛАВ
+ДУНЂЕРСКИ ТИХОМИР
+ДУНЂЕРСКИ ТРИВА
+ДУНЂЕРСКИ ЗДРАВКО
+ДУНДИЋ ХАРАЛАМПИЈЕ
+ДУНДИЋ ЈЕЛЕНА
+ДУНДИЋ СЛАВКО
+ДУНДОВИЋ СТЈЕПАН
+ДУНИЋ ДРАГИЋ
+ДУЊИЋ СТОЈАН
+ДУНОВИЋ МИЛКА
+ДУНОВИЋ НАТАША
+ДУПАК ИМРЕ
+ДУПАК МАРИЈА
+ДУПАЛО СЛАВКА
+ДУПОР ГОРДАНА
+ДУПОР МИЛОШ
+ДУПОР МИРКО
+ДУПОР ЗОРИЦА
+ДУРАЧКОВИЋ БАХРИЈА
+ДУРАЧКОВИЋ СЕНИЈА
+ДУРАКОВИЋ ЂУРО
+ДУРАКОВИЋ ДРАГАН
+ДУРАКОВИЋ ГОЈКО
+ДУРАКОВИЋ ГОЈКО
+ДУРАН БРАНКО
+ДУРАНОВИЋ ВЛАДИМИР
+ДУРГУТОВИЋ РИФАД
+ДУРКАЛИЋ ВИКТОР
+ДУРКОВИЋ МИЛОРАД
+ДУРКОВИЋ ВЛАЈКО
+ДУРКУЛИЋ АЛЕКСАНДАР
+ДУРКУЛИЋ СПАСОЈЕ
+ДУРЛЕВИЋ МИЛИЦА
+ДУРМАН ДРАГОЉУБ
+ДУРМАН ГОЈКО
+ДУРМАН НАДА
+ДУРМАН РАСТИСЛАВ
+ДУРОШКА ШАНДОР
+ДУРОШКА ИВАНКА
+ДУРОШКА ЈЕЛЕНА
+ДУРОШКА МИХАЈЛО
+ДУРОШКИ ЈУЛИЈАНА
+ДУРУШКА ПАЛ
+ДУРУТОВИЋ ДРАГАН
+ДУРУТОВИЋ РАДОВАН
+ДУРУТОВИЋ СЕНКА
+ДУСИЋ ГОСПАВА
+ДУСПАРА МИЛЕНА
+ДУСПЕР ШИМО
+ДУТИНА АНДРИЈА
+ДУТИНА БРАНИСЛАВ
+ДУТИНА БРАТОЉУБ
+ДУТИНА ДРАГАН
+ДУТИНА ИРЕНА
+ДУТИНА МИОМИР
+ДУТИНА СЛОБОДАН
+ДУТИНА ВЛАДИМИР
+ДУВЊАК ДИВНА
+ДУВЊАК ДИВНА
+ДУВЊАК ИВИЦА
+ДУВЊАК КОСТА
+ДУВЊАК ЛАЗАР
+ДУВЊАК ЛАЗАР
+ДУВЊАК МАРА
+ДУВЊАК МИЛЕНКО
+ДУВЊАК МИЛОРАД
+ДУВЊАК НЕНАД
+ДУВЊАК РАДОЈКА
+ДУВЊАК СТАНА
+ДВОРАЧКО ШАНДОР
+ДВОРНИЋ МИРЈАНА
+ЕШКИ ЕРЖЕБЕТ
+ЕШКИЧЕВИЋ ВАСА
+ЕЋИМ РАДОВАН
+ЕЋИМОВИЋ ГОЈКО
+ЕЋИМОВИЋ НИКОЛА
+ЕЋИМОВИЋ ВЕСЕЛИН
+ЕЂЕДИ ЈОЖЕФ
+ЕЂЕДИ ЈУЛИЈАНА
+ЕБЕНХЕ-ЈОВАНОВИЋ ЈАСНА ДР
+ЕБЕНХЕ НИКОЛА
+ЕБЕРХАРД-МАРКОВИЋ МИРЈАНА
+ЕБЕРХАРТ ПЕТАР
+ЕБЕРСТ-СЕДЛАЧЕК ГАБРИЕЛА
+ЕЦЕТ ЈОВАН
+ЕЦЕТ ЈОВАН
+ЕЦЕТ КАТАЛИН
+ЕЦЕТ ПАЛ
+ЕДЕЛЕЊИ МАРИЈА
+ЕДЕЛИНСКИ ЕУГЕН
+ЕДЕЛИНСКИ ЈОАКИМ
+ЕДЕЛИНСКИ ЉУБИЦА
+ЕДЕЛИНСКИ ВЕРА
+ЕДЕЛИНСКИ ВЕРА
+ЕФТЕМИЈУ НИКОЛА
+ЕГЕЉА МИЛИЦА
+ЕГЕЉА НЕБОЈША
+ЕГЕРИЋ МИРОСЛАВ ДР
+ЕГИЋ ЧЕДМИЛА
+ЕГИЋ ЂОКА
+ЕГИЋ БРАЦО
+ЕГИЋ БРАНИСЛАВ
+ЕГИЋ ЦВЕТАНКА
+ЕГИЋ ДРАГАН
+ЕГИЋ МАНЕ
+ЕГИЋ МАРИЈАН
+ЕГИЋ МИЦА
+ЕГИЋ МИЛАН
+ЕГИЋ МИЛАН
+ЕГИЋ ОЛГА
+ЕЈИЋ МИЛАН
+ЕКЕШ АЛЕКСАНДАР
+ЕКХАРДТ ЉУБИЦА
+ЕКЛИЋ МАРЈАН
+ЕКМЕШЧИЋ МИЛИСАВ
+ЕКМЕЏИЋ АНКА
+ЕКМЕЏИЋ НИКОЛА
+ЕКРЕС ЂОРЂЕ
+ЕКРЕС АНДРИЈА
+ЕКРЕС ЈАНОШ
+ЕКРЕС ЈУЛИЈАНА
+ЕКРЕС МИЛКА
+ЕКРЕС НАНДОР
+ЕКРЕС ОТО
+ЕКРЕС-РАКИЋ ВЕРИЦА
+ЕКРЕС РОЗАЛИЈА
+ЕКРЕС ВАЛЕРИЈА
+ЕЛЕК ЕВА
+ЕЛЕРО ЗВЕЗДАНА
+ЕЛЕСИН БРАНИСЛАВ
+ЕЛЕСИН БРАНКА
+ЕЛЕСИН ДРАГА
+ЕЛЕСИН ДРАГОЉУБ
+ЕЛЕСИН ДУШАНКА
+ЕЛЕСИН ГРАДИМИР
+ЕЛЕСИН МИРОСЛАВ
+ЕЛЕСИН САВА
+ЕЛЕСИН СИНИША
+ЕЛЕСИН ВЛАДИМИР
+ЕЛЕЗ ЂОКА
+ЕЛЕЗ ГОРАН
+ЕЛЕЗОВИЋ НИКОЛА
+ЕЛЕЗОВИЋ ПЕТАР
+ЕЛХАРТ ЛАЗАР
+ЕЛХАРТ ЛАЗАР
+ЕЛИАС ИРЕНА
+ЕЛИЈАШ ЈАН
+ЕЛИЗЕК ЖУЖАНА
+ЕЛИЗЕК ИВАН
+ЕЛОР ИШТВАН
+ЕЛОР ЈАНОШ
+ЕЛОР ЉУБИЦА
+ЕЛОР ПАВЛЕ
+ЕЛОР ЗОРИЦА
+ЕЛТЕР ЈАНОШ
+ЕЛТЕР ЗОЛТАН
+ЕМЕР ЈАКОВ
+ЕМЕР МАРКО
+ЕМИНИ БАЈРАМ
+ЕМИНИ ГАНИ
+ЕМИНИ РОЗАЛИЈА
+ЕНАХОЛО НАДА
+ЕНГЕЛМАН КАТИЦА
+ЕНГЕРТ МИХАЈЛО
+ЕНГЛЕР ЛАЈОШ
+ЕПИФАНИЋ ЦВЕТАНА
+ЕПИФАНИЋ ДУШКО
+ЕРЧИ-ВАРГА МАРИШКА
+ЕРЧИЋ БОЈАНА
+ЕРЧИЋ МИЛОРАД
+ЕРЧИЋ РАДОВАН
+ЕРШТЕ ЖЕЉКО
+ЕРАК БОРО
+ЕРАК ДУШАН
+ЕРАК ИЛИЈА
+ЕРАК ЛАЗАР
+ЕРАК МАРКО
+ЕРАКОВИЋ БОГДАН
+ЕРАКОВИЋ ДАНИЛО
+ЕРАКОВИЋ ДРАГИЦА
+ЕРАКОВИЋ КРИСТИВОЈ
+ЕРАКОВИЋ ЉУБИША
+ЕРАКОВИЋ ЉУБОЈЕ
+ЕРАКОВИЋ МИЛОРАД
+ЕРАКОВИЋ МИТАР
+ЕРАКОВИЋ РАДЕ
+ЕРАКОВИЋ РАЈКО
+ЕРАКОВИЋ СРЕТЕН
+ЕРБЕШ ЕРЖЕБЕТ
+ЕРБЕЖНИК СОЊА
+ЕРБЕС БРАНКА
+ЕРБЕС МАРГИТА
+ЕРБЕЗ БЛАЖО
+ЕРБЕЗ ЕРЖЕБЕТ
+ЕРЦЕГ ШПИРО
+ЕРЦЕГ ЖАРКО
+ЕРЦЕГ ЖИВКО
+ЕРЦЕГ ДАРА
+ЕРЦЕГ ЉИЉАНА
+ЕРЦЕГ МИКА
+ЕРЦЕГ РАДОВАН
+ЕРЦЕГ РАЈКО
+ЕРЦЕГ РАЈКО
+ЕРЦЕГ СЛОБОДАН
+ЕРЦЕГ СТАНА
+ЕРЦЕГ ЗДЕНКО
+ЕРЦЕГ ЗДРАВКО
+ЕРЦЕГАН ГОРАН
+ЕРЦЕГАН МИТА
+ЕРЦЕГОВЧЕВИЋ ЖИВОДАР
+ЕРЦЕГОВЧЕВИЋ ДОСТА
+ЕРЦЕГОВАЦ АНЂЕЛКО
+ЕРЦЕГОВАЦ БРАТИСЛАВ
+ЕРЦЕГОВАЦ МИОДРАГ
+ЕРЦЕГОВАЦ МИТАР
+ЕРЦЕГОВАЦ НАДА
+ЕРЦЕГОВАЦ САВА
+ЕРЦЕГОВАЦ СЛОБОДАН
+ЕРЦЕГОВАЦ СТЕВАН
+ЕРЦЕГОВАЦ ТОМИСЛАВ
+ЕРЦЕГОВИЋ ДАНИЦА
+ЕРДЕШ ДАНИЕЛ
+ЕРДЕШ ЕМИЛ
+ЕРДЕШ ЕСТЕР
+ЕРДЕШ ЕТЕЛКА
+ЕРДЕШ ИЛОНА
+ЕРДЕШ ИВАН
+ЕРДЕШ ЈУЛИЈАНА
+ЕРДЕШ КЛАРА
+ЕРДЕШ ЛАСЛО
+ЕРДЕШ ПАЛ
+ЕРДЕШ ПЕТАР
+ЕРДЕШИ ЛАСЛО
+ЕРДЕШИ ВАЛЕРИЈА
+ЕРДЕГ АРАНКА
+ЕРДЕГ ИЛОНА
+ЕРДЕГ ЈАНОШ
+ЕРДЕГ ЈУСТИНА
+ЕРДЕГ ТОМИСЛАВ
+ЕРДЕИ ШАНДОР
+ЕРДЕИ ЈОСИП
+ЕРДЕИ ЈОВАН
+ЕРДЕИ МИХАЈЛО
+ЕРДЕИ ПЕТАР
+ЕРДЕИ ЗОЛТАН
+ЕРДЕЉ БРАНКО
+ЕРДЕЉ ЕМИЛ
+ЕРДЕЉ ГОРАН
+ЕРДЕЉ ЛУДМИЛА
+ЕРДЕЉ МИЛУТИН
+ЕРДЕЉАН ЖИВКО
+ЕРДЕЉАН АЛЕКСАНДАР
+ЕРДЕЉАН АЛКСАНДАР
+ЕРДЕЉАН БИСЕРКА
+ЕРДЕЉАН БОШКО
+ЕРДЕЉАН-БОГДАНОВ СЛАВИЦА
+ЕРДЕЉАН ДАНИЛО
+ЕРДЕЉАН ДОБРИВОЈ
+ЕРДЕЉАН ДУШАНКА
+ЕРДЕЉАН ДУШАН
+ЕРДЕЉАН ДУШАН
+ЕРДЕЉАН ДУШАН
+ЕРДЕЉАН ДУШАН
+ЕРДЕЉАН ЈЕЛЕНА
+ЕРДЕЉАН КАТИЦА
+ЕРДЕЉАН ЉУБИЦА
+ЕРДЕЉАН ЉУБОМИР
+ЕРДЕЉАН МИЛАДИН
+ЕРДЕЉАН МИЛАН ДИПЛ ИНГ
+ЕРДЕЉАН МИЛАН
+ЕРДЕЉАН МИЛЕНКО
+ЕРДЕЉАН МИЛИВОЈ
+ЕРДЕЉАН МИЛОРАД
+ЕРДЕЉАН МИЛОРАД
+ЕРДЕЉАН МИЛОВАН
+ЕРДЕЉАН МИРЈАНА
+ЕРДЕЉАН НАДЕЖДА
+ЕРДЕЉАН НИКОЛА
+ЕРДЕЉАН ПРЕДРАГ
+ЕРДЕЉАН РАДИВОЈ
+ЕРДЕЉАН СЛАВКА
+ЕРДЕЉАН СЛАВКА
+ЕРДЕЉАН СЛОБОДАН ДИПЛ ИНГ
+ЕРДЕЉАН СРЕДОЈЕ
+ЕРДЕЉАН СТЕВАН
+ЕРДЕЉАН СВЕТИСЛАВ
+ЕРДЕЉАН ТИХОМИР
+ЕРДЕЉАН ВЕРИЦА
+ЕРДЕЉАН ВУКИЦА
+ЕРДЕЉАН ЗЛАТКО
+ЕРДЕЉАН ЗОРА
+ЕРДЕЉАНИН АНЂЕЛКО
+ЕРДЕЉИ ЂЕРЂ
+ЕРДЕЉИ АНТАЛ
+ЕРДЕЉИ БЕЛА
+ЕРДЕЉИ БИСЕРКА
+ЕРДЕЉИ БОРБАЛА
+ЕРДЕЉИ ДЕЖЕ
+ЕРДЕЉИ ДРАГИЦА
+ЕРДЕЉИ ФРАЊА
+ЕРДЕЉИ ГАШПАР
+ЕРДЕЉИ ИШТВАН
+ЕРДЕЉИ ЈЕНЕ
+ЕРДЕЉИ ЈОЖЕФ
+ЕРДЕЉИ КАРОЉ
+ЕРДЕЉИ ЛАЈОШ
+ЕРДЕЉИ ЛАСЛО ДИПЛ ИНГ
+ЕРДЕЉИ МАТИЛДА
+ЕРДЕЉИ СОФРОНА
+ЕРДЕЉИ СТЕВАН
+ЕРДЕЉИ ТИБОР
+ЕРДЕВИК МАРА
+ЕРДЕВИК МАРИЈА
+ЕРДЕВИК СЛОБОДАН
+ЕРДЕВИК ВОЈИСЛАВ
+ЕРДЕВИК ВУКИЦА
+ЕРДЕВИК ЗДРАВКО
+ЕРЕШ ШАНДОР
+ЕРЕШ ЛАСЛО
+ЕРЕЂИН ВУКАШИН
+ЕРЕГ ЛАЈОШ
+ЕРЕМИЋ ЈЕЛИЦА
+ЕРЕМИЋ ЈОВАН
+ЕРЕМИЋ НИНОСЛАВ
+ЕРЕМИЋ РАДОВАН
+ЕРЕМИЋ САВА
+ЕРЕМИЋ СЛАВИЦА
+ЕРЕМИЋ СТАНИСЛАВА
+ЕРЕМИЋ ТИХОМИР ДР ЛЕКАР
+ЕРЕМИЋ ВЕСЕЛИНКА
+ЕРЕМИЈА МИЛАН
+ЕРЕМИЈА СТАНКО
+ЕРЕМИН НИКОЛА
+ЕРЕНТА ЉУБИЦА
+ЕРГ ОЛГА
+ЕРГЕЛАШЕВ ДУБРАВКА
+ЕРГЕЛАШЕВ ИВАН
+ЕРГЕЛАШЕВ ЈОВАН
+ЕРГЕЛАШЕВ МИЛАН
+ЕРГЕЛАШЕВ МИЛОШ
+ЕРГЕЛАШЕВ МОМЧИЛО
+ЕРГЕЛАШЕВ НЕСТОР
+ЕРГЕЛАШЕВ СМИЉКА
+ЕРГЕЛАШЕВ ТИХОМИР
+ЕРГЕЛАШЕВ ЗОРКА
+ЕРХАРТИЧ АНА
+ЕРХАРТИЧ РУДОЛФ
+ЕРИ ИЛОНА
+ЕРИ ЈАНОШ
+ЕРИ ЈОВАН
+ЕРИЋ ЂУЛИНКА
+ЕРИЋ БОЖИН
+ЕРИЋ ЉИЉАНА
+ЕРИЋ МАРКО
+ЕРИЋ МИЛОМИР
+ЕРИЋ НЕБОЈША
+ЕРИЋ ПЕРО
+ЕРИЋ СНЕЖАНА
+ЕРИЋ СВЕТОМИР
+ЕРИЋ ЗОРИЦА
+ЕРКИЋ ЂОРЂЕ
+ЕРКИЋ ПЕТАР
+ЕРЛАУЕР ИВАН
+ЕРЛАУЕР ЈОСИП
+ЕРЛЕР ВЕРОНА
+ЕРНЕСТ ФРАЊА
+ЕРОР ЈОВАН
+ЕРОР ПЕТАР
+ЕРОР СТЕВАН
+ЕРСКИ ПЕТАР
+ЕРСКИ-ПЕТКОВИЋ СОЊА
+ЕРТЛ ФЕРЕНЦ
+ЕРТЛ ХЕДВИГА
+ЕРТЛ ЛАСЛО
+ЕРТЛ ВЛАСТА
+ЕС КЛАРА
+ЕСЕ ШАНДОР
+ЕСКИЋ СВЕТОЗАР
+ЕСТЕР ЈОСИП
+ЕСТЕР МАРИЈА ДР
+ЕСТЕР МАРТА
+ЕТШБЕРГЕР ЈАКОБ
+ЕТЕР ОТО
+ЕТЕРОВИЋ ВЕРА
+ЕТИНСКИ ЖИВАН
+ЕТИНСКИ ЖИВОЈИН
+ЕТИНСКИ ЂОРЂЕ
+ЕТИНСКИ ДРАГИЋ
+ЕТИНСКИ ДРАГИЋ
+ЕТИНСКИ ЈОВАН
+ЕТИНСКИ ЉУБИША
+ЕТИНСКИ МИХАЈЛО
+ЕТИНСКИ МИЛОШ
+ЕТИНСКИ МИЛОРАД
+ЕТИНСКИ МИЛОРАД
+ЕТИНСКИ МИЛОВАН
+ЕТИНСКИ НАДА
+ЕТИНСКИ ПЕТАР
+ЕТИНСКИ РАДОВАН
+ЕТИНСКИ СЛОБОДАНКА
+ЕТИНСКИ ВЕЉКО
+ЕТИНСКИ ВЕРА
+ЕТИНСКИ ВЕРИЦА
+ЕТОРЕ ЂИНА
+ЕВЂИЋ СТАНКА
+ЕВЕТОВИЋ БЛАШКО
+ЕВЕТОВИЋ ЈОСИП
+ЕВЕТОВИЋ ЈОВАН
+ЕВЕТОВИЋ ЈОВАН
+ЕВИЋ АЛЕКСАНДАР
+ЕВИЋ ДРАГИЦА
+ЕВИЋ ЈЕЛИСАВЕТА
+ЕВИЋ ЈОВАН
+ЕВИЋ ЛАЗАР
+ЕВИЋ ЛАЗАР
+ЕВИЋ ПЕТАР
+ЕВИЋ САВА
+ФА МЕЛАНИЈА
+ФА МИЛКА
+ФАЧАР СТЕВАН
+ФАЧКО ЈОЖЕФ
+ФАЧКО СИМА
+ФАБИАН БОРБАЛА
+ФАБИАН ИШТВАН
+ФАБИАН ЈАНОШ
+ФАБИЈАН ШАНДОР
+ФАБИЈАН АНА
+ФАБИЈАН ИЛОНА
+ФАБИЈАН ИМРЕ
+ФАБИЈАН ИВАН
+ФАБИЈАН ЈАНОШ
+ФАБИЈАН ЛАСЛО
+ФАБИЈАН НИКОЛА
+ФАБИЈАН СТЕВАН
+ФАБИЈАН СТЕВАН
+ФАБИЈАНЧИЋ ИВАН
+ФАБИЈАНЧИЋ СТЈЕПАН
+ФАБИЈАНИЋ МАРИЈА
+ФАБИЈАНОВИЋ АНА
+ФАБРИ МИКЛОШ
+ФАБРИ НАНДОР
+ФАБРИ СТЈЕПАН
+ФАБРИ ЗВОНКО
+ФАБРИК КАТАЛИН
+ФАЦИС ПАНТА
+ФАИН АНА
+ФАИН ЛАЈОШ
+ФАИН СТЕВАН
+ФАЈ ГАБОР
+ФАЈДЕТИЋ ЉУБИЦА
+ФАЈДИГА АЛЕКСАНДАР
+ФАЈФЕР ПЕТАР
+ФАЈГЕЉ ИВАН
+ФАЈХНЕР ХЕНРИК
+ФАЈХТНЕР ЈОСИП
+ФАЈХТНЕР РУЖА
+ФАЈИН ИШТВАН
+ФАЈКА ДАНИЦА
+ФАЈКА НАДА
+ФАЈКА ПАВЛЕ
+ФАЈНИК МАРИЈА
+ФАЈТ-ГРАНЕР РОЖА
+ФАЈТ ЈЕЛИЦА
+ФАЈТНЕР ВЕРОНИКА
+ФАКИН ФРАЊА
+ФАКИН ИВАН
+ФАКИН ЗВОНИМИР
+ФАЛБ ЂОРЂЕ
+ФАЛБ БОСИЉКА
+ФАЛБ ЈОСИП
+ФАЛБ КАРОЉ
+ФАЛБ КАРОЉ
+ФАЛБ МАРИНА
+ФАЛБ МАТИЈА
+ФАЛБ ОТО
+ФАЛБ ЗОЛТАН
+ФАМИЛИЋ ЂОРЂЕ
+ФАМИЛИЋ ИВАН
+ФАНЧЕВИЋ АЛЕКСАНДАР
+ФАНЧЕВИЋ ЈОСИП
+ФАНЧЕВИЋ КАТАЛИН
+ФАНЧЕВИЋ ЉУДЕВИТ
+ФАНЧЕВИЋ ТЕРЕЗИЈА
+ФАНКА ДУШАН
+ФАНКА МАРА
+ФАРАГО ШАНДОР
+ФАРАГО ШАНДОР
+ФАРАГО АРАНКА
+ФАРАГО АРПАД
+ФАРАГО ФРАЊА
+ФАРАГО ЈОЖЕФ
+ФАРАГО ЈОСИП
+ФАРАГО КАРЛО
+ФАРАГО ЛАСЛО
+ФАРАГО МАРИЈА
+ФАРК АМАЛИЈА
+ФАРК БЕАТА
+ФАРКАШ АЛЕКСАНДАР
+ФАРКАШ АЛЕКСАНДАР
+ФАРКАШ БОЖЕНА
+ФАРКАШ ДРАГУТИН
+ФАРКАШ ЕЛЕМЕР
+ФАРКАШ ЕЛИЗАБЕТА
+ФАРКАШ ЕЛЗА
+ФАРКАШ ЕСТЕР
+ФАРКАШ ЕСТЕР
+ФАРКАШ ФЕРЕНЦ
+ФАРКАШ ФЕРЕНЦ
+ФАРКАШ ФЕРЕНЦ
+ФАРКАШ ФЕРЕНЦ
+ФАРКАШ ФРАЊА
+ФАРКАШ ГАБОР
+ФАРКАШ ИШТВАН
+ФАРКАШ ИШТВАН
+ФАРКАШ ИЛОНА
+ФАРКАШ ИЛОНКА
+ФАРКАШ ИМРЕ
+ФАРКАШ ЈАН
+ФАРКАШ ЈАРОСЛАВ
+ФАРКАШ ЈЕЛИСАВЕТА
+ФАРКАШ ЈОЖЕФ
+ФАРКАШ ЈОЖЕФ
+ФАРКАШ ЈОЖЕФ
+ФАРКАШ ЈОЖЕФ
+ФАРКАШ ЈОСИП
+ФАРКАШ ЈОСИП
+ФАРКАШ ЈОВАН
+ФАРКАШ ЈОВГЕН
+ФАРКАШ ЈУДИТА
+ФАРКАШ КАРЛО
+ФАРКАШ КАТАЛИН
+ФАРКАШ КЛАРА
+ФАРКАШ ЛАДИСЛАВ
+ФАРКАШ ЛАЈОШ
+ФАРКАШ ЛАСЛО
+ФАРКАШ МАРИЈА
+ФАРКАШ МАТИЛДА
+ФАРКАШ МИХАЉ
+ФАРКАШ НАДА
+ФАРКАШ ПАЛ
+ФАРКАШ ПАВЛЕ
+ФАРКАШ РОЗАЛИЈА
+ФАРКАШ СТЕВАН
+ФАРКАШ-ТОТ ВИКТОРИЈА
+ФАРКАШ ВЕРА
+ФАРКАШ ВЕРИЦА
+ФАРКИЋ МИЛАН
+ФАРКОВ ЈОВАНКА
+ФАТ ЈОСИП
+ФАТ ЛАСЛО
+ФАТ МИХАЛ
+ФАТИЋ МАРА
+ФАТУРОВИЋ РАЈКО
+ФАУКОВИЋ НАДА
+ФАЗЕКАШ АНТАЛ
+ФАЗЕКАШ ЈАНОШ
+ФАЗЕКАШ КАТАЛИН
+ФАЗЕКАШ ТИБОР
+ФАЗЛИЋ ЈЕЛИЦА
+ФАЗЛИЋ ЈОВАНКА
+ФАЗЛИНОВИЋ ЕЛБИСА
+ФАЗЛИНОВИЋ ЈАСМИНКА
+ФЕШИШ ИМРЕ
+ФЕШИШ ЈОЖЕФ
+ФЕШИШ ЈОЖЕФ
+ФЕЦЕ ИВАН
+ФЕЦЕ МАРИЈА
+ФЕДЕРЕР ЈОВАН
+ФЕДЕРЕР МИРКО
+ФЕДИ ЈОЖЕФ
+ФЕХЕР ШАНДОР
+ФЕХЕР ШАНДОР
+ФЕХЕР ЂЕРЂ
+ФЕХЕР ЂУЛА
+ФЕХЕР ЂУЛА
+ФЕХЕР АНДРАШ
+ФЕХЕР АРИСТИД
+ФЕХЕР ЕРНЕ
+ФЕХЕР ЕРНЕ
+ФЕХЕР ФЕРЕНЦ
+ФЕХЕР ЈАНОШ
+ФЕХЕР ЈАНОШ
+ФЕХЕР ЈАНОШ
+ФЕХЕР ЈОЖЕФ
+ФЕХЕР ЈОЖЕФ
+ФЕХЕР ЈОВАН
+ФЕХЕР ЈОВАН
+ФЕХЕР ЈУЛИЈА
+ФЕХЕР КАЛМАН
+ФЕХЕР ЛАЈОШ
+ФЕХЕР ЛАСЛО
+ФЕХЕР ЛАСЛО
+ФЕХЕР МАРГИТА
+ФЕХЕР МАРИЈА
+ФЕХЕР МИХАЈЛО
+ФЕХЕР НАНДОР
+ФЕХЕР СТЕВАН
+ФЕХЕР СТЕВАН
+ФЕХЕР ТЕРЕЗА
+ФЕХЕР ВЕРА
+ФЕХЕРВАРИ ЈЕЛИСАВЕТА
+ФЕХИР АЛЕКСАНДАР
+ФЕХИР ПЕТАР
+ФЕХИРОВ АВРАМ
+ФЕХИРОВ КОСАНА
+ФЕХИРОВ МИРЈАНА
+ФЕЈЂИ ВЛАДИМИР
+ФЕЈДЕТИЋ ТОМИСЛАВ
+ФЕЈЕШ ШАНДОР
+ФЕЈЕШ ЂОРЂЕ
+ФЕЈЕШ АРАНКА
+ФЕЈЕШ ГЕНА
+ФЕЈЕШ ИШТВАН
+ФЕЈЕШ ИШТВАН
+ФЕЈЕШ ЈАНОШ
+ФЕЈЕШ ЈАНОШ
+ФЕЈЕШ ЉИЉАНА
+ФЕЈЕШ ЗОЛТАН
+ФЕЈЕШ ЗОЛТАН
+ФЕЈФАР ЈУЛИЈАНА
+ФЕЈСА ГЕОРГИЈЕ
+ФЕЈСА ЈАНКО МР ПХ
+ФЕЈСА МАРГИТА
+ФЕЈСА-ПОПОВИЋ ЛЕОНА
+ФЕЈСТХАМЕЛ ПАЛ
+ФЕЈЗУЛАХИ ФЕЈЗУЛАХ
+ФЕКЕТЕ ШАНДОР
+ФЕКЕТЕ ШАНДОР
+ФЕКЕТЕ ЖУЖАНА
+ФЕКЕТЕ АДОЛФ
+ФЕКЕТЕ ФЕРЕНЦ
+ФЕКЕТЕ ФЕРЕНЦ
+ФЕКЕТЕ ЈАГОДА
+ФЕКЕТЕ КАРЛО
+ФЕКЕТЕ КАТИЦА
+ФЕКЕТЕ ЛАСЛО
+ФЕКЕТЕ МАРИЈА
+ФЕКЕТЕ МАРИЈА
+ФЕКЕТЕ МАРИЈА
+ФЕКЕТЕ МИХАЈЛО
+ФЕКЕТЕ МИХАЉ
+ФЕКЕТЕ ПЕТАР
+ФЕКЕТЕ СТЕВАН
+ФЕКЕТЕ ВЕСНА
+ФЕКИЋ ВЛАДИМИР
+ФЕЛБАБ РАДА
+ФЕЛБАБ САВА
+ФЕЛБАБ СТАНИМИР
+ФЕЛБАБОВ ДИМИТРИЈЕ
+ФЕЛБАБОВ ЈОВАН
+ФЕЛБАБОВ ВЛАДИСЛАВА
+ФЕЛБАП ЈУЛКА
+ФЕЛБАП НИКОЛА
+ФЕЛБАПОВ ДИМИТРИЈЕ
+ФЕЛБАПОВ МИЛАНКА
+ФЕЛБАПОВ МИЛОРАД
+ФЕЛБАПОВ НЕМАЊА
+ФЕЛБАПОВ РАДМИЛА
+ФЕЛБАПОВ РАДОСЛАВ
+ФЕЛБАПОВ СТЕВАН
+ФЕЛДШЕР АНА
+ФЕЛДШЕР КАРЛО
+ФЕЛДЕШДИ АНДРИЈА
+ФЕЛДЕШИ ФРАЊА
+ФЕЛДЕШИ ИБОЉА ДР
+ФЕЛДЕШИ МАРИЈА
+ФЕЛДЕЖДИ ЈУЛИЈАНА
+ФЕЛДЕЖДИ ЛАСЛО
+ФЕЛДЕЖДИ ПЕТАР
+ФЕЛДЕЖДИ СТЕВАН
+ФЕЛДЕАК ДАНИЦА
+ФЕЛДЕАК ЈОЖЕФ
+ФЕЛДИ ШАНДОР
+ФЕЛДИ ЕРЖЕБЕТ
+ФЕЛДИ ЈАРОСЛАВ
+ФЕЛДВАРИ ЈОСИП
+ФЕЛДВАРИ ЈОВАН
+ФЕЛДВАРИ ЈУСТИНА
+ФЕЛДВАРИ КАЛМАН
+ФЕЛДВАРИ ОЛГИЦА
+ФЕЛДВАРИ СТЕВАН
+ФЕЛДВЕБЕЛ РОЗАЛИЈА
+ФЕЛЕ ДРАЖЕН ЛЕКАР
+ФЕЛЕЋ ИЗЕТ
+ФЕЛЕГИ АНА
+ФЕЛЕГИ ЛАДИСЛАВ
+ФЕЉА МИРЈАНА
+ФЕЛНЕР ДУШАНКА
+ФЕЛНЕР ТИБОР
+ФЕМИЋ АЛЕКСИЈЕ
+ФЕМИЋ БЛАГОЈЕ
+ФЕМИЋ ГРУЈИЦА
+ФЕМИЋ МИЛИЈА
+ФЕМИЋ МИЛОВАН
+ФЕМИЋ ПЕТКО
+ФЕМИЋ РАДМИЛА
+ФЕМИЋ СТАНКА
+ФЕМИЋ ВЕЉКО
+ФЕМИЋ ЗОРА
+ФЕНЦ РУЖИЦА
+ФЕНДЛЕР ЈОВАН
+ФЕНДРИК АНДРИЈА
+ФЕНДРИК ФРАЊО
+ФЕНДРИК КАРЛО
+ФЕЊАЦ ИВАН
+ФЕЊАЦ ЈОВАН
+ФЕЊАЦ СИНИША
+ФЕЊАЦ СЛОБОДАНКА
+ФЕЊЕШ АНА
+ФЕЊЕШ ФРАЊА
+ФЕЊВЕШИ МАРИШКА
+ФЕРЧИК АНДРИЈА
+ФЕРАРИНОВ ПАВЛЕ
+ФЕРАРИО СИЛВИО
+ФЕРАТИ АФИЗ
+ФЕРАТИ БЕРО
+ФЕРАТИ ЕХАТ
+ФЕРАТИ РАГИП
+ФЕРАТИ СЕЈФИДИН
+ФЕРАТИ СКЕНДЕР
+ФЕРЕНЧАК ИВИЦА
+ФЕРЕНЧЕК ЉУБИЦА
+ФЕРЕНЧЕК ОЛИВЕР ДИПЛ ИНГ
+ФЕРЕНЧЕК ВИЛКО
+ФЕРЕНЧЕВ МИЛОРАД
+ФЕРЕНЧЕВ ЗОРА
+ФЕРЕНЧЕВИЋ ЂОРЂЕ
+ФЕРЕНЧЕВИЋ-САЛАЈ ЈЕЛЕНА
+ФЕРЕНАЦ АНДРИЈА
+ФЕРЕНАЦ АНДРИЈА
+ФЕРЕНАЦ ИВАН
+ФЕРЕНАЦ РАДМИЛА
+ФЕРЕНЦ АНТАЛ
+ФЕРЕНЦ ЈОЖЕФ
+ФЕРЕНЦ ЈОЖЕФ
+ФЕРЕНЦИ ЂЕРЂ
+ФЕРЕНЦИ ДЕЗИДЕР
+ФЕРЕНЦИ ЕУГЕН
+ФЕРЕНЦИ ФРАЊА
+ФЕРЕНЦИ ЈУЛИЈАНА
+ФЕРЕНЦИ СТЕВАН
+ФЕРЕНЦИ ВЕРА
+ФЕРИК ЈУРАЈ
+ФЕРИК ЈУРАЈ
+ФЕРИЗОВИЋ АХМЕТ
+ФЕРКО АНДРЕЈ ДР ЛЕКАР
+ФЕРКО МИЛОШ
+ФЕРКО ПАВЕЛ
+ФЕРКО ПАВЛЕ
+ФЕРЛАН РАДМИЛА
+ФЕТАХИ БАЈРАМ
+ФЕТАХОВИЋ ИСМЕТ
+ФЕТАИ ЗИБЕР
+ФИЧОК АЛОЈЗИЈЕ
+ФИШАКОВ КОНСТАДИН
+ФИШАНГ ЉИЉАНА
+ФИШЕР ЂОРЂЕ ДР ЛЕКАР
+ФИШЕР ЂОРЂЕ
+ФИШЕР АЛЕКСАНДАР ДР
+ФИШЕР АЛЕКСАНДАР
+ФИШЕР АНТОН
+ФИШЕР БЛАНКА
+ФИШЕР ДРАГУТИН
+ФИШЕР ГАВРА
+ФИШЕР ИРЕНА
+ФИШЕР ИРЕНА
+ФИШЕР ЈЕНЕ
+ФИШЕР ЈОСИП
+ФИШЕР КАРОЉ
+ФИШЕР ЛАСЛО
+ФИШЕР ЛЕО ДР
+ФИШЕР НАТАЛИЈА
+ФИШЕР ПИРОШКА
+ФИШЕР СТЕВАН
+ФИШЕР ЗВОНИМИР
+ФИШЛ ФЕДОР
+ФИШЛ ЈУЛИЈА ДИПЛ ИНГ
+ФИШТЕШ ИМРЕ
+ФИШТЕШ МАРИЈА
+ФИШТЕШ МИХАЉ
+ФИШТЕШ ПИРОШКА
+ФИАЛА ИВАНКА
+ФИАЛА ИВАН
+ФИБИШАН ЂУРАЂ
+ФИБИШАН СЛАВОЉУБ
+ФИЦЕ ЕРЖЕБЕТ
+ФИЦИНГЕР ВАЛЕРИЈА
+ФИДУШЕК КАТИЦА
+ФИФА ДРАГИЦА
+ФИФА НЕБИ
+ФИГУРА ШАНДОР
+ФИЈАТОВИЋ ОЛГА
+ФИЈУКОВИЋ САДЕТА
+ФИЈУЉАНИН ЗУЛФО
+ФИЛЕКИ МИРОСЛАВ
+ФИЛЕКОВИЋ СЕИД
+ФИЛЕП ЂЕРЂ
+ФИЛЕП ЂОРЂЕ
+ФИЛЕП ЂОРЂЕ
+ФИЛЕП АНТАЛ
+ФИЛЕП БЕЛА
+ФИЛЕП ИДА
+ФИЛЕП ЈЕНЕ
+ФИЛЕП ЈОЖЕФ
+ФИЛЕП КАЛМАН
+ФИЛЕП КАЛМАН
+ФИЛЕП ЛАДИСЛАВ
+ФИЛЕП МИРЈАНА
+ФИЛЕП ЗОЛТАН
+ФИЛЕПИ МИРОСЛАВ
+ФИЛИМОНОВИЋ ЖИВОРАД
+ФИЛИМОНОВИЋ ЂОРЂЕ
+ФИЛИП ЈОВАН ДР ПРАВНИК
+ФИЛИП РАДОСАВ
+ФИЛИПЧЕВ ЗДРАВКО
+ФИЛИПАШ ДРАГАН
+ФИЛИПАШЕВ НАДА
+ФИЛИПЕЦ ЗИТА
+ФИЛИПЕНДИН МАРКО
+ФИЛИПОВ ИЛИЈА
+ФИЛИПОВ МИЛОШ
+ФИЛИПОВ МИОДРАГ
+ФИЛИПОВ МОМИР
+ФИЛИПОВ НИКОЛА
+ФИЛИПОВ ПРЕДРАГ
+ФИЛИПОВ РАДОВАН
+ФИЛИПОВ СЛАЂАНА
+ФИЛИПОВ ТИХОМИР
+ФИЛИПОВ ТИЈАНА
+ФИЛИПОВИЋ ЧЕДО
+ФИЛИПОВИЋ АЛЕКСАНДАР
+ФИЛИПОВИЋ АНТОН
+ФИЛИПОВИЋ БОШКО
+ФИЛИПОВИЋ БОГОМИР
+ФИЛИПОВИЋ БОРА
+ФИЛИПОВИЋ БРАНКО
+ФИЛИПОВИЋ-ДАМЈАНОВ НАДА
+ФИЛИПОВИЋ ДЕСАНКА
+ФИЛИПОВИЋ ДИЈАНА
+ФИЛИПОВИЋ ДОБРИЦА
+ФИЛИПОВИЋ ДОБРИЛА
+ФИЛИПОВИЋ ДРАГАН
+ФИЛИПОВИЋ ДРАГАН
+ФИЛИПОВИЋ ДУШАНКА
+ФИЛИПОВИЋ ДУШАНКА
+ФИЛИПОВИЋ ГОРДАНА
+ФИЛИПОВИЋ ИВАН
+ФИЛИПОВИЋ ИВАН
+ФИЛИПОВИЋ ЈЕЛИСАВЕТА
+ФИЛИПОВИЋ ЈОВАН
+ФИЛИПОВИЋ ЈОВАН
+ФИЛИПОВИЋ ЛЕПОСАВА
+ФИЛИПОВИЋ ЉИЉАНА
+ФИЛИПОВИЋ ЉУБИЦА
+ФИЛИПОВИЋ ЉУБИНКА
+ФИЛИПОВИЋ ЉУБИНКО
+ФИЛИПОВИЋ МИЛАДИН
+ФИЛИПОВИЋ МИЛАДИН
+ФИЛИПОВИЋ МИЛАН ДИПЛ ИНГ
+ФИЛИПОВИЋ МИЛАНКА
+ФИЛИПОВИЋ МИЛАНКА
+ФИЛИПОВИЋ МИЛАН
+ФИЛИПОВИЋ МИЛАН
+ФИЛИПОВИЋ МИЛАН
+ФИЛИПОВИЋ МИЛЕНА
+ФИЛИПОВИЋ МИЛЕНКО
+ФИЛИПОВИЋ МИЛИВОЈЕ
+ФИЛИПОВИЋ МИЛКА
+ФИЛИПОВИЋ МИЛОЈКО
+ФИЛИПОВИЋ МИЛОВАН
+ФИЛИПОВИЋ МИОДРАГ
+ФИЛИПОВИЋ МИОДРАГ
+ФИЛИПОВИЋ МИРЈАНА
+ФИЛИПОВИЋ МИРКО
+ФИЛИПОВИЋ МИРОСЛАВ
+ФИЛИПОВИЋ НАТАША
+ФИЛИПОВИЋ НИКОЛА
+ФИЛИПОВИЋ НИКОЛА
+ФИЛИПОВИЋ НИКОЛА
+ФИЛИПОВИЋ НИКОЛА
+ФИЛИПОВИЋ НИКОЛИНА
+ФИЛИПОВИЋ ПАУЛА
+ФИЛИПОВИЋ ПЕРО
+ФИЛИПОВИЋ РАДИВОЈ
+ФИЛИПОВИЋ РАДОЈКА
+ФИЛИПОВИЋ РАДОЈКО
+ФИЛИПОВИЋ РАДОСЛАВ
+ФИЛИПОВИЋ РАДОВАН
+ФИЛИПОВИЋ РАНКА
+ФИЛИПОВИЋ РУЖАНА
+ФИЛИПОВИЋ РУДОЛФ
+ФИЛИПОВИЋ САВА ДИПЛ ИНГ
+ФИЛИПОВИЋ САВА
+ФИЛИПОВИЋ СИБИН
+ФИЛИПОВИЋ СЛАВКО
+ФИЛИПОВИЋ СНЕЖАНА
+ФИЛИПОВИЋ СПАСОЈЕ
+ФИЛИПОВИЋ СРЂАН
+ФИЛИПОВИЋ СРЕЋКО
+ФИЛИПОВИЋ СТЕВАН ДР СТОМАТОЛОГ
+ФИЛИПОВИЋ СТОЈАН
+ФИЛИПОВИЋ СТОЈАН
+ФИЛИПОВИЋ ТОМИСЛАВ
+ФИЛИПОВИЋ ВЕСНА
+ФИЛИПОВИЋ ВИДОСАВ
+ФИЛИПОВИЋ ВЛАДИМИР
+ФИЛИПОВИЋ ЗОРАН
+ФИЛИПОВИЋ ЗОРАН
+ФИЛИПОВИЋ ЗОРАН
+ФИЛИПОВИЋ ЗОРАН
+ФИЛИПОВИЋ ЗОРИЦА
+ФИЛИПОВСКА-ОБРАДОВИЋ ВЕРА
+ФИЛИПОВСКИ БОЖО
+ФИЛИПОВСКИ ТОДОС
+ФИЛКО ДРАГИЦА
+ФИЛКО ЈОСИП
+ФИЛКО ЈОВАН
+ФИЛКО МАРИЈА
+ФИЛКО МИХАЉ
+ФИЛКО МИХАЉ
+ФИЛКО ПАВЕЛ
+ФИЛКО ТИХОМИР
+ФИНЧУР АЛЕКСАНДАР
+ФИНЧУР ЈОЖЕФ
+ФИНЧУР ЈУЛИЈАНА
+ФИНЧУР ЛАДИСЛАВ
+ФИНЏАНОВИЋ ГОЈКО
+ФИНЏАНОВИЋ МИКО
+ФИНЏАНОВИЋ МИРКО
+ФИНЏАНОВИЋ ОБРАД
+ФИНК-ДИМИТРИЈЕВИЋ ДОРОТЕА
+ФИНК ВИКТОР НОВИНАР
+ФИНКА ГОРЧАН
+ФИР БЕАТА
+ФИРАЊ ЈОЖЕФ
+ФИРАЊИ ЂЕРЂ
+ФИРАЊИ ЂОРЂЕ
+ФИРАЊИ ЂОРЂЕ
+ФИРАЊИ ЕРЖЕБЕТ
+ФИРАЊИ ЈОВАН
+ФИРАЊИ ВИКТОР
+ФИРИЋ МАРИЈА
+ФИРУЛОВИЋ КОСТАНТИН
+ФИСТРИЋ ЂОРЂЕ
+ФИСТРИЋ МИРЈАНА
+ФИВЕШИ ГАБОР
+ФИВЕШИ ТИБОР
+ФЛАЦ ИВАНКА
+ФЛАЦ ПЕТАР
+ФЛАЈС ЈЕЛИСАВЕТА
+ФЛЕГЕР СТЕВАН
+ФЛЕГО ИВАН
+ФЛЕГО МАРТА
+ФЛЕКАЧ ВЛАДО
+ФЛИТНЕР ОСКАР
+ФЛОКА ЂЕНИКА
+ФЛОРА ВАСА
+ФЛОРИЋ ДИМИТРИЈЕ
+ФЛОРИЋ ЉУБИЦА
+ФЛОРИЋ ЗОРАН
+ФЛОРИЋ ЗОРАН
+ФЛОРИН ВИНКА
+ФОДОР ЖОФИЈА
+ФОДОР АНА
+ФОДОР АНДРИЈА
+ФОДОР ЕРЖЕБЕТ
+ФОДОР ФЕРЕНЦ
+ФОДОР ФРАЊА
+ФОДОР ФРАЊА
+ФОДОР ЈОЛАН
+ФОДОР ЈОВАН
+ФОДОР ЈОВАН
+ФОДОР КАЛМАН
+ФОДОР КАТА
+ФОДОР ЛАЈОШ
+ФОДОР ЛАСЛО
+ФОДОР ЛАСЛО
+ФОДОР ЛАСЛО
+ФОДОР ЛАСЛО
+ФОДОР ЛИДИЈА
+ФОДОР МАРТА
+ФОДОР ОСКАР ДИПЛ ОЕЦ
+ФОДОР ТИБОР
+ФОДОР ТИБОР
+ФОДОР ТИБОР
+ФОДОР ЗДРАВКО
+ФОДОРА ЈАНКО
+ФОГАРАШИ ЂЕРЂ ДР
+ФОГАРАШИ ЂЕРЂ
+ФОГАРАШИ АНДРИЈА
+ФОГАРАШИ АНИКО
+ФОГАРАШИ ИЛОНА
+ФОГАРАШИ СТЕВАН
+ФОГЛ МАГДАЛЕНА
+ФОЈКАР ЈАНКО
+ФОЛИЋ РАДОМИР ДР
+ФОЛТИН МАРГИТА
+ФОЛТИН МИЛИЦА
+ФОНТАЊ ЛОТАР
+ФОРАИ ЗОЛТАН
+ФОРАИ ЗОРИЦА
+ФОРГАЧ ЈЕЛИСАВЕТА
+ФОРГИЋ ИВАН
+ФОРГО ИШТВАН
+ФОРГО ЛАСЛО
+ФОРИШКОВ ЈОВАНКА
+ФОРИШКОВ ЛАЗАР
+ФОРИШКОВИЋ АЛЕКСАНДАР
+ФОРКАПА САВО
+ФОРКАПИЋ АЛЕКСАНДАР
+ФОРКАПИЋ ИВАНКА
+ФОРКАПИЋ ЛАЗАР
+ФОРКАПИЋ МАРИЈА
+ФОРКАПИЋ НИКОЛА
+ФОРКАПИЋ САВА
+ФОРКАПИЋ СЛАВИЦА
+ФОРКАПИЋ ВЕЛИНКА
+ФОРО ИВАН
+ФОРО ЈУЛИЈАНА
+ФОТИЋ ЂОРЂЕ
+ФОЗЕКОШ АНКИЦА
+ФРЧЕК ЂУРА
+ФРЧЕК МАРИЈА
+ФРЖОП МИШЕ
+ФРЖОВИЋ ЂОРЂЕ
+ФРЖОВИЋ ГАВРИЛО
+ФРЖОВИЋ МИХАЈЛО
+ФРЖОВИЋ МИЛЕНА
+ФРАЦИЛЕ НИЦЕ
+ФРАЈСТ РУДОЛФ
+ФРАЈТОВИЋ МОМЧИЛО
+ФРАЈЗ ПЕТАР
+ФРАНЧИЋ РОК
+ФРАНЦ МАГДАЛЕНА ДИПЛ ИНГ
+ФРАНЦЕЉ ФРАНЦ
+ФРАНЦЕР ИВАН
+ФРАНЦЕР ИВАН
+ФРАНЦИШКОВИЋ АТИЛА
+ФРАНЦИШКОВИЋ ИВАН
+ФРАНЦИШКОВИЋ МАТЕ
+ФРАНЦИА АНДРИЈА
+ФРАНЦИА ИШТВАН
+ФРАНЦИА ПЕТАР
+ФРАНЦИЈА ЈОЖЕФ
+ФРАНЦИЈА-КУКИЧКА МАРГАРЕТА
+ФРАНЦИСТИ ЂОРЂЕ
+ФРАНЦИСТИ ЈАРОСЛАВ
+ФРАНЦИСТИ ПАВЛЕ
+ФРАНЦИСТИ ВЛАДИМИР
+ФРАНЦУСКИ АЛЕКСА
+ФРАНЦУСКИ БРАНИСЛАВ
+ФРАНЦУСКИ ДАРИНКА
+ФРАНЦУСКИ ДЕСАНКА
+ФРАНЦУСКИ ДРАГАН
+ФРАНЦУСКИ ДУШАН
+ФРАНЦУСКИ ИВАН ДР
+ФРАНЦУСКИ ЈОВАНКА
+ФРАНЦУСКИ МАРКО
+ФРАНЦУСКИ МИЛАН
+ФРАНЦУСКИ МИРОСЛАВ
+ФРАНЦУСКИ ПЕТАР
+ФРАНЦУСКИ РАДОВАН
+ФРАНЦУСКИ СЛОБОДАНКА
+ФРАНЦУСКИ СТРАХИЊА
+ФРАНЦУСКИ ЗОРАН
+ФРАНЦУСКИ ЗОРАН
+ФРАНЦУСКИ ЗОРКА
+ФРАНЦУСКИ ЗОРКА
+ФРАНЦУЗ ДАРИНКА
+ФРАНЦУЗ ЈЕЛЕНА
+ФРАНЦУЗ ВЕЛИМИР
+ФРАНЦУЗ ВУК
+ФРАНЕТА ЈОВО
+ФРАНИЋ ИВАН
+ФРАНИЋ МИЛКА
+ФРАЊИЧЕВИЋ НИКОЛА
+ФРАЊИЋ МАРИЦА
+ФРАЊО ЖУЖАНА
+ФРАНК ЂЕРЂ
+ФРАНК ФЕРЕНЦ
+ФРАНК ИЛЕШ
+ФРАНК ЈАНОШ
+ФРАНК ТИБОР
+ФРАНКА МИХАЈЛО
+ФРАНКОВИЋ ЈОВАН
+ФРАНОВИЋ АЛЕКСАНДРА
+ФРАНОВИЋ ВЛАДИМИР
+ФРАНЗЕР ИВАН
+ФРАТОЈ ЈОЦА
+ФРАТРИЋ СИГМУНД
+ФРАТУЦАН ЂОРЂЕ
+ФРАТУЦАН ЂОРЂЕ
+ФРАТУЦАН ФИЛИП
+ФРАТУЦАН ИВАН
+ФРАТУЦАН НЕВЕНА
+ФРАТУЦАН ПЕТАР
+ФРАТУЦАНОВ ИВАНКА
+ФРЕИ ЕЛИЗАБЕТА
+ФРЕМЕР АНТУН
+ФРЕМЛ ШАНДОР
+ФРЕНКЕЛ АНА
+ФРЕНКЕЛ ЕВА
+ФРЕНКЛ ДРАГИЦА
+ФРИЧ БОЖИДАР
+ФРИЧ КАТИЦА
+ФРИШ ДРАГАН
+ФРИШ МИЛАН
+ФРИШЧИЋ ДРАГУТИН
+ФРИЦ РУДОЛФ
+ФРИДРИХ АНА
+ФРИДРИХ ЈЕЛЕНА
+ФРИДРИХ МАГДА
+ФРИДРИХ ЗОРИЦА
+ФРИНДИК ФРАЊА
+ФРИНДИК МИХАЉ
+ФРИНДРИК БЕЛА
+ФРКА АРТУР
+ФРКА НИКОЛА
+ФРЉ МУХАРЕМ
+ФРОЛ МАРИЈАН
+ФРОЛ НАДА
+ФРОЛ ВИЛИМ
+ФРУЖА АЛЕКСАНДАР
+ФУЧИК КАРЛО
+ФУДЕРЕР ЈУЛИЈЕ
+ФУДЕРЕР МАГДАЛЕНА
+ФУЈКА ЂОРЂЕ
+ФУЈТО ВЛАДИМИР
+ФУЛАЈТЕР ЂОРЂЕ
+ФУНЋИК ПАВЛЕ
+ФУНДУРУЉА МИЛЕНКО
+ФУНК ШТЕФАНИЈА
+ФУНК ЛАЈОШ
+ФУНТЕК ИВАН
+ФУРЈАНОВИЋ ВЛАДИСЛАВ
+ФУРЛАН ЕРЖЕБЕТ
+ФУРЛАН МАРКО
+ФУРМАН ФРАЊА
+ФУРМАН ЈОВАН
+ФУРМАН МАРИЈА
+ФУРМАН ТИМОФЕЈ
+ФУРМАН ТИНКА
+ФУРО ИМРЕ
+ФУСКО АНГЕЛА
+ФУСКО ИШТВАН
+ФУСКО МАРИЈА
+ФУСКО МИХАЉ
+ФУТО АНТАЛ
+ФУТО ЈОЖЕФ
+ФУТО ЈОЖЕФ
+ФУТО МИРКО
+ФУТОШКИ МИЛАН
+ФУТОШКИ МИТА
+ГАЧАНОВИЋ ДРАГАН
+ГАЧЕВИЋ МИРОСЛАВ
+ГАЧЕВИЋ РАДЕНКО
+ГАЧЕВИЋ ТЕРЕЗА
+ГАЧИЋ БРАНКО
+ГАЧИЋ ДАНИЦА
+ГАЧИЋ ДАНИЛО
+ГАЧИЋ МИЛАН
+ГАЧИЋ СТЕВАН
+ГАЧИЋ СТЕВАН
+ГАЧИЋ ВЛАДАН
+ГАШЕВИЋ МИЛОРАД
+ГАШЕВИЋ МИЛОВАН
+ГАШЕВИЋ МОМЧИЛО
+ГАШЕВИЋ РАДМИЛА
+ГАШЕВИЋ САВКА
+ГАШЕВИЋ ЗДРАВКО
+ГАШИ ЂЕМАИЉ
+ГАШИ ХАМДИ
+ГАШИ ЈУЛИЈАНА
+ГАШИ ЉУАН
+ГАШИ ЗОРАН
+ГАШИЋ БОГДАН
+ГАШИЋ ДУШАН
+ГАШИЋ КОВИЉКА
+ГАШИЋ КОВИЉКА
+ГАШИЋ КРСТА
+ГАШИЋ МИРОЉУБ
+ГАШИЋ НИКОЛА
+ГАШИЋ СИЛВАНА
+ГАШИЋ ТОДОР ДИПЛ ИНГ
+ГАШИЋ ВАЛЕРИЈА
+ГАШИЋ ЗДРАВКО
+ГАШИЋ ЗОРА
+ГАШПАР БОГДАН
+ГАШПАР ЈАНОШ
+ГАШПАР ЛАЈОШ
+ГАШПАР ЛИДИЈА
+ГАШПАР МИЛЕНКО
+ГАШПАРЕВИЋ ЕРИКА
+ГАШПАРЕВИЋ ЉИЉАНА
+ГАШПАРИЋ НАДА
+ГАШПАРИН ЉИЉАНА
+ГАШПАРОВИЋ ЈОСИП
+ГАЋА БРАНИСЛАВ
+ГАЋА МИОДРАГ
+ГАЋА ВЛАДИМИР
+ГАЋАШ ДРАГИЦА
+ГАЋАШ СИНИША
+ГАЋАШ СТЕВАН
+ГАЋЕША ЂУРО
+ГАЋЕША БРАНКА
+ГАЋЕША ДРАГАН
+ГАЋЕША ДРАГАН
+ГАЋЕША ИЛИЈА
+ГАЋЕША МАНОЈЛО
+ГАЋЕША МИЛОШ
+ГАЋЕША МИЛОРАД
+ГАЋЕША МИЛОВАН ДР
+ГАЋЕША НИКОЛА
+ГАЋЕША СЛАВКО
+ГАЋЕША ВЕЉКО
+ГАЋЕША ВЛАДИМИР
+ГАЋИНА ЖАРКО
+ГАЋИНА ЉИЉАНА
+ГАЋИНОВИЋ БОЖО
+ГАЋИНОВИЋ БРАНКО
+ГАЋИНОВИЋ МИЛИВОЈЕ
+ГАЋИНОВИЋ МИЛОРАД
+ГАЋИНОВИЋ РАЈКО
+ГАЖИ ЈЕЛИСАВЕТА
+ГАЖИК ТЕРЕЗИЈА
+ГАЖО КАТИЦА
+ГАЖО-МАТОШКОВИЋ ОЛГИЦА
+ГАЖО МИХАЈЛО
+ГАЖО МИКЛОШ
+ГАЂАНСКИ ЗОРАН
+ГАБЛЕР ВИКТОРИЈА
+ГАБОР АРПАД
+ГАБОР БЕЛА
+ГАБОР ЕРЖЕБЕТ
+ГАБОР ИРЕНА
+ГАБОР ЈОЖЕФ
+ГАБОР КАРОЉ
+ГАБОР НАНДОР
+ГАБОРОВ БРАНИСЛАВ
+ГАБОРОВ БРАНИСЛАВ
+ГАБОРОВ ГАВРИЛО
+ГАБОРОВ МИЛАН
+ГАБОРОВ МИТА
+ГАБОРОВ ПАВЛЕ
+ГАБОРОВ ПЕТАР
+ГАБРЕ РОКО
+ГАБРИЋ ЕВИЦА
+ГАБРИЋ КСЕНИЈА
+ГАБРИЋ МИХАЈЛО
+ГАБРИЋ НЕСТОР
+ГАБРИЋ ПЕТАР
+ГАБРИЋ СЛАВКО
+ГАБРИЕЛ МИКЛОШ
+ГАБРИЈЕЛЧИЋ ЗДРАВКО
+ГАБРОВИЋ АНДРАШ
+ГАБРОВИЋ АНДРИЈА
+ГАЦИН МИРОСЛАВ
+ГАЏА КРИЖАН
+ГАЏА РУЖА
+ГАЏИЋ МИЛАН
+ГАЏИЋ ВИНКО
+ГАЏУР ИВАН
+ГАЏУРИЋ ЗЛАТКО
+ГАДАНЕЦ КАТАРИНА
+ГАДЊАИ ЈОВА
+ГАДЊАНСКИ ВЛАДИМИР
+ГАГИЋ АЛЕКСАНДАР
+ГАГИЋ АВРАМ
+ГАГИЋ БОШКО
+ГАГИЋ БОРИВОЈЕ
+ГАГИЋ ДРАГИЦА
+ГАГИЋ ДУШАН
+ГАГИЋ-ГРУБЕША МИЛЕВА
+ГАГИЋ ЈОВАНКА
+ГАГИЋ ЈОВАН
+ГАГИЋ НИКОЛА
+ГАГИЋ НИКОЛА
+ГАГИЋ РАДОСЛАВ
+ГАГИЋ РАДОВАН
+ГАГИЋ СЛОБОДАН
+ГАГИЋ ВИДОСАВА
+ГАГОВИЋ МИЛОРАД
+ГАГОВИЋ НОВАК
+ГАГОВИЋ ОЛГА
+ГАГОВИЋ РАДОСАВ
+ГАГРЧИН ЛАЗАР
+ГАГРЧИН МЛАДЕН
+ГАГРИЦА ЈОВАН
+ГАГУЛА МУЈО
+ГАИЋ ВЕЉКО
+ГАИЦКИ НИКОЛА
+ГАИЦКИ САЊА
+ГАИЦКИ ТАНАСИЈЕ
+ГАИЦКИ ВЕРИЦА
+ГАИНОВ РАДОВАН
+ГАЈШИН СЛАВИЦА
+ГАЈШИН СМИЉА
+ГАЈШИН СТАНИСЛАВ
+ГАЈАНИЋ СТЈЕПАН
+ГАЈДА ШАНДОР
+ГАЈДОШ ЂУЛА
+ГАЈДОШ ИШТВАН
+ГАЈДОШ ИБОЉА
+ГАЈДОШ ЛАСЛО
+ГАЈДОШ ЉУБОМИР
+ГАЈДОШ МИХАЈЛО
+ГАЈДОШ НИКОЛА
+ГАЈДОШ ПЕТАР
+ГАЈДОШЕВИЋ ЂОРЂЕ
+ГАЈДОБРАНСКИ ЂОРЂЕ ДР
+ГАЈДОБРАНСКИ ДАНИЦА
+ГАЈДОБРАНСКИ ДРАГИЦА
+ГАЈДОБРАНСКИ ЉУБИЦА
+ГАЈДОБРАНСКИ МАРИЈА
+ГАЈДОБРАНСКИ МИЛИВОЈ
+ГАЈДОБРАНСКИ ПЕТАР
+ГАЈДОБРАНСКИ ТОДОР
+ГАЈЕР ЂУРА
+ГАЈЕР ЈОЦА
+ГАЈЕР ЛЕОНА
+ГАЈЕР МАНОЈЛО
+ГАЈЕР НАДА
+ГАЈГЕР ЈОЖЕФ
+ГАЈИШИН ДАРА
+ГАЈИШИН ЛАЗАР
+ГАЈИШИН МИЛИЦА
+ГАЈИШИН ПЕТАР
+ГАЈИШИН СТЕВАН
+ГАЈИШИН СТЕВАН
+ГАЈИШИН ТОМИСЛАВ
+ГАЈИЋ ЖАРКО
+ГАЈИЋ ЖАРКО
+ГАЈИЋ ЖИВКА
+ГАЈИЋ ЖИВКО
+ГАЈИЋ ЖИВОТА
+ГАЈИЋ ЂОРЂЕ
+ГАЈИЋ ЂУРО
+ГАЈИЋ АЛЕКСАНДАР
+ГАЈИЋ АНА
+ГАЈИЋ БОЖИЦА
+ГАЈИЋ БОЖИДАР
+ГАЈИЋ БОГДАН
+ГАЈИЋ БОГОЉУБ
+ГАЈИЋ БОРИСЛАВ
+ГАЈИЋ БРАНКО
+ГАЈИЋ БРАНКО
+ГАЈИЋ ЦВИЈАН
+ГАЈИЋ ЦВИЈАН
+ГАЈИЋ ДАНИЦА
+ГАЈИЋ ДЕЈАН
+ГАЈИЋ ДЕЈАН
+ГАЈИЋ ДЕЈАН
+ГАЈИЋ ДИМИТРИЈЕ
+ГАЈИЋ ДРАГАН
+ГАЈИЋ ДРАГАН
+ГАЈИЋ ДРАГИЦА
+ГАЈИЋ ДРАГОЉУБ
+ГАЈИЋ ДРАГО
+ГАЈИЋ ДУШАН ДИПЛ ИНГ
+ГАЈИЋ ДУШКО ДИПЛ ПРАВНИК
+ГАЈИЋ ГОЈКО
+ГАЈИЋ ГОРАН
+ГАЈИЋ ГОРДАНА
+ГАЈИЋ ИБОЉА
+ГАЈИЋ ЈЕЛЕНА
+ГАЈИЋ КАТАРИНА
+ГАЈИЋ КРИСТИНА
+ГАЈИЋ КРУНА
+ГАЈИЋ ЛАЗАР
+ГАЈИЋ ЛАЗО
+ГАЈИЋ МАКСА
+ГАЈИЋ МАРИЈА ДР
+ГАЈИЋ МАРИЈА
+ГАЈИЋ МАРИНКО ДР
+ГАЈИЋ МИЋО
+ГАЈИЋ МИКА
+ГАЈИЋ МИЛАНА
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛАН
+ГАЈИЋ МИЛИНКО
+ГАЈИЋ МИЛИВОЈ
+ГАЈИЋ МИЛОШ
+ГАЈИЋ МИЛОЈКА
+ГАЈИЋ МИЛОСАВ
+ГАЈИЋ МИЛОВАН
+ГАЈИЋ МИОДРАГ
+ГАЈИЋ МИОДРАГ
+ГАЈИЋ МИРЈАНА
+ГАЈИЋ МИРКО ДР
+ГАЈИЋ МИРКО
+ГАЈИЋ МИРОСЛАВ
+ГАЈИЋ МИТРА
+ГАЈИЋ МЛАДЕНКО
+ГАЈИЋ МЛАДЕН
+ГАЈИЋ МОМЧИЛО
+ГАЈИЋ НЕДЕЉКО
+ГАЈИЋ НИКОЛА ДИПЛ ИНГ
+ГАЈИЋ НИКОЛА
+ГАЈИЋ НИКОЛА
+ГАЈИЋ НОВАК
+ГАЈИЋ ОЛИВЕРА
+ГАЈИЋ ПЕЛКА
+ГАЈИЋ ПЕРСА
+ГАЈИЋ РАДЕНКО
+ГАЈИЋ РАДМИЛА
+ГАЈИЋ РАДОМИР
+ГАЈИЋ РАЈКА
+ГАЈИЋ РАТКО
+ГАЈИЋ РАТКО
+ГАЈИЋ РОЗАЛИЈА
+ГАЈИЋ РУЖИЦА
+ГАЈИЋ САВА
+ГАЈИЋ СЛАКА
+ГАЈИЋ СЛАВИЦА
+ГАЈИЋ СЛАВКО
+ГАЈИЋ СЛАВКО
+ГАЈИЋ СРЕЋКО
+ГАЈИЋ СРЕТО
+ГАЈИЋ СТАНИМИР
+ГАЈИЋ СТАНОЈЛО
+ГАЈИЋ СТОЈАН
+ГАЈИЋ СТРАХИЊА
+ГАЈИЋ СВЕТОЗАР
+ГАЈИЋ ТАНАСКО
+ГАЈИЋ ВЕЛИМИР
+ГАЈИЋ ВЕСНА
+ГАЈИЋ ВИДА
+ГАЈИЋ ВИДОСАВА
+ГАЈИЋ ВЛАДИСЛАВ
+ГАЈИЋ ЗОРАН
+ГАЈИЦА БРАНКО
+ГАЈИЦКИ БРАНКО
+ГАЈИЦКИ ДУШАН
+ГАЈИЦКИ ЈЕЛЕНА
+ГАЈИЦКИ ЛАЗАР
+ГАЈИЦКИ МАРИЈА
+ГАЈИЦКИ МИЛА
+ГАЈИЦКИ МИЛИЦА
+ГАЈИЦКИ САВА
+ГАЈИН ЖИВКО
+ГАЈИН ЂОРЂЕ
+ГАЈИН АЛЕКСАНДАР
+ГАЈИН АНКА
+ГАЈИН БРАНКО
+ГАЈИН ДРАГИЦА
+ГАЈИН ЈОВАН
+ГАЈИН ЛАЗАР
+ГАЈИН МИХАЈЛО
+ГАЈИН МИЛАН
+ГАЈИН МИЛЕНКО
+ГАЈИН МИЛОВАН
+ГАЈИН МИРЈАНА
+ГАЈИН НАДА
+ГАЈИН НЕВЕНКА
+ГАЈИН ПЕТАР
+ГАЈИН СЛАВКА ДР
+ГАЈИН СВЕТЛАНА
+ГАЈИН ВЛАДИМИР
+ГАЈИНА ДРАГОМИР
+ГАЈИНОВ ЖИВАН
+ГАЈИНОВ ЖИВКО
+ГАЈИНОВ ЖИВКО
+ГАЈИНОВ ЂОКИЦА
+ГАЈИНОВ АЛЕКСАНДАР
+ГАЈИНОВ АНЂЕЛКА
+ГАЈИНОВ БРАНКО
+ГАЈИНОВ ДИМИТРИЈЕ
+ГАЈИНОВ ДРАГОМИР
+ГАЈИНОВ ИВАНКА
+ГАЈИНОВ ЈЕЛЕНА
+ГАЈИНОВ ЈОВАН
+ГАЈИНОВ ЈУЛКА
+ГАЈИНОВ КОСТА
+ГАЈИНОВ КОСТА
+ГАЈИНОВ ЛАЗАР
+ГАЈИНОВ ЛАЗАР
+ГАЈИНОВ ЛАЗАР
+ГАЈИНОВ ЉИЉАНА
+ГАЈИНОВ ЉУБИЦА
+ГАЈИНОВ ЉУБИЦА
+ГАЈИНОВ МАРИЈА
+ГАЈИНОВ МАРКО
+ГАЈИНОВ МАРКО
+ГАЈИНОВ МИЛАН
+ГАЈИНОВ МИЛОРАД
+ГАЈИНОВ МИЛОРАД
+ГАЈИНОВ МИЛОРАД
+ГАЈИНОВ НИКОЛА
+ГАЈИНОВ ПЕРА
+ГАЈИНОВ ПЕРСИДА
+ГАЈИНОВ РАДА
+ГАЈИНОВ РАДИВОЈ
+ГАЈИНОВ РАДИВОЈ
+ГАЈИНОВ САВА
+ГАЈИНОВ СТЕВАН
+ГАЈИНОВ СТЕВАН
+ГАЈИНОВ ТОДОР
+ГАЈИНОВ ВЕЛИМИР
+ГАЈИНОВИЋ ЂОРЂЕ
+ГАЈИНОВИЋ ЂОРЂЕ
+ГАЈИНОВИЋ ДАНИЦА
+ГАЈИНОВИЋ ДРАГАНА
+ГАЈИНОВИЋ ДУШАН
+ГАЈИНОВИЋ ИКОНИЈА
+ГАЈИНОВИЋ ЈОВАН
+ГАЈИНОВИЋ ЈОВАН
+ГАЈИНОВИЋ КАТИЦА
+ГАЈИНОВИЋ ЉУБИЦА
+ГАЈИНОВИЋ МИЛАН
+ГАЈО ИШТВАН
+ГАЈОДИ ЈОЖЕФ
+ГАЈОДИ МАРИЈА
+ГАЈОВИЋ ЈУЛИЈАНА
+ГАЈОВИЋ МОМЧИЛО
+ГАЈОВИЋ РАДОЈЕ
+ГАЈТА АНИЦА
+ГАЈТА АУРЕЛИЈА
+ГАК АЛЕКСАНДРА
+ГАК МИЛАН
+ГАК НЕВЕНКА
+ГАК РАДЕ
+ГАК СЛАВКО
+ГАК СНЕЖАНА
+ГАК ЗОРКА
+ГАКИЋ БОШКО
+ГАКОВИЋ АНТОНИЈА
+ГАКОВИЋ ЈЕЛЕНА
+ГАКОВИЋ МАРИЈА
+ГАКОВИЋ МИРКО
+ГАКОВИЋ МИРКО
+ГАКОВИЋ РАНКО
+ГАКОВИЋ ЗОРА
+ГАЛ ШАНДОР
+ГАЛ ЂУЛА
+ГАЛ ЂУЛА
+ГАЛ АНКА
+ГАЛ ФЕРЕНЦ
+ГАЛ ФЕРЕНЦ
+ГАЛ ФЕРЕНЦ
+ГАЛ ГАБОР
+ГАЛ ГИЗЕЛА
+ГАЛ ЈАНОШ
+ГАЛ ЈОЖЕФ
+ГАЛ ЈОЖЕФ
+ГАЛ ЈОВАН
+ГАЛ КАЛМАН
+ГАЛ ЛАЈОШ
+ГАЛ ЛАЈОШ
+ГАЛ МАРГИТ
+ГАЛ МАРИА
+ГАЛ МИША
+ГАЛ МИКЛОШ
+ГАЛ ПАВЛЕ
+ГАЛ ПЕТАР
+ГАЛ ПЕТАР
+ГАЛ СТЕВАН
+ГАЛАЦ ЈОСИП
+ГАЛАЦ ПАВЛЕ
+ГАЛАМБ АТИЛА
+ГАЛАМБОШ АНА
+ГАЛАМБОШ АНТОН
+ГАЛАМБОШ ЕРЖЕБЕТ
+ГАЛАМБОШ ИМРЕ
+ГАЛАМБОШ ЈОСИП
+ГАЛАМБОШ ЛАСЛО
+ГАЛАМБОШ ЛАСЛО
+ГАЛБАЧ ЈОЖЕФ
+ГАЛЕЧИЋ БРАНИСЛАВ
+ГАЛЕЧИЋ ДРАГАН
+ГАЛЕЧИЋ МИРОСЛАВ
+ГАЛЕЧИЋ ЗОРАН
+ГАЛЕЧИЋ ЗОРАН
+ГАЛЕШЕВ ЖИВОЈИН
+ГАЛЕШЕВ ДУБРАВКА
+ГАЛЕШЕВ СЛОБОДАН
+ГАЛЕТИЋ АЛЕКСАНДАР
+ГАЛЕТИЋ МАРИЈА
+ГАЛЕТИЋ МИЛАН
+ГАЛЕТИЋ ВАСА
+ГАЛЕТИЋ ВЛАДИМИР
+ГАЛЕТИЋ ЗОРА
+ГАЛЕТИН МИЛИЦА
+ГАЛЕТИН НИКОЛА
+ГАЛЕТИН ПАЈИЦА
+ГАЛЕТИН СИМА
+ГАЛЕТИН СЛАВКО
+ГАЛЕТИН-СМИТ РАДОЈКА
+ГАЛЕТИН СТЕВАН
+ГАЛЕТИН ЗЛАТКО
+ГАЛФИ ЈОСИП
+ГАЛФИ МИЛЕНА
+ГАЛГО ИШТВАН
+ГАЛИЧИЋ БРАНКО
+ГАЛИЧИЋ МИЛИЦА
+ГАЛИЋ ДУШАНКА
+ГАЛИЋ ИВАНКА
+ГАЛИЋ ЈОВАН
+ГАЛИЋ ЈОВАН
+ГАЛИЋ ЈОВАН
+ГАЛИЋ КАТИЦА
+ГАЛИЋ КАТИЦА
+ГАЛИЋ ЛАДИСЛАВ
+ГАЛИЋ ЉУБИЦА
+ГАЛИЋ МАРИЈАН
+ГАЛИЋ МИЛАДИН
+ГАЛИЋ МИЛЕНКО
+ГАЛИЋ МИЛКА
+ГАЛИЋ МИЛОШ
+ГАЛИЋ МИЛОВАН
+ГАЛИЋ МИРКО
+ГАЛИЋ МИТАР
+ГАЛИЋ МОМЧИЛО
+ГАЛИЋ НЕДЕЉКО
+ГАЛИЋ НИКОЛА
+ГАЛИЋ ОЛГА
+ГАЛИЋ ПЕТАР
+ГАЛИЋ РОЖИКА
+ГАЛИЋ САЊА
+ГАЛИЋ СЛАВКА
+ГАЛИЋ СТЕВО
+ГАЛИЋ ТЕРЕЗА
+ГАЛИЋ ВОЈИСЛАВ
+ГАЛИЋ ЗДРАВКО
+ГАЛИЦКИ ЂУРА
+ГАЛИК ЕТЕЛКА
+ГАЛИПОВИЋ ЈОВИЦА
+ГАЛКО ЈУЛИА
+ГАЛО ЂУРА
+ГАЛОЊА ДЕСАНКА
+ГАЛОЊА ДРАГОЉУБ
+ГАЛОЊА МИОДРАГ
+ГАЛОЊА МИРКО
+ГАЛОЊА РАДЕ
+ГАЛОВИЋ ЂОРЂЕ
+ГАЛОВИЋ ЂУРА
+ГАЛОВИЋ АЛЕКСАНДРА
+ГАЛОВИЋ АНЂЕЛКА
+ГАЛОВИЋ БРАНКО
+ГАЛОВИЋ ДРАГИЦА ДР
+ГАЛОВИЋ ИВИЦА
+ГАЛОВИЋ ЈЕЛИЦА
+ГАЛОВИЋ ЉУБИЦА
+ГАЛОВИЋ МИЛАН
+ГАЛОВИЋ МИЛАН
+ГАЛОВИЋ МИЛЕНКО
+ГАЛОВИЋ РАДОМИР
+ГАЛОВИЋ СТЕВО
+ГАЛОВИЋ ЗОРКА
+ГАЛУС ЛАСЛО
+ГАМБЕР СЛОБОДАН
+ГАНЏИ САВКА
+ГАНГЛИ АНА
+ГАНИЋ АЛОЈЗИЈЕ
+ГАНИЋ АЛОЈЗИЈЕ
+ГАНИЋ МИШО
+ГАНИЋ СТАНИСЛАВА
+ГАНИЋ ЗДЕНКО
+ГАНИЋ ЗОРИЦА
+ГАЊИ САМУЕЛ
+ГАНТАР АЛЕКСАНДРА
+ГАНТАР ФИЛИП
+ГАНТАР МИРОСЛАВ ДР
+ГАРЧЕВ ДАНИЦА
+ГАРЧЕВ МИЛУТИН
+ГАРЧЕВИЋ ПЕРО
+ГАРЧЕВИЋ ПЕРО
+ГАРАШЕВИЋ МИЛКА
+ГАРАБА АНДРИЈА
+ГАРАБАНДИЋ ЂОРЂЕ
+ГАРАБАНДИЋ МАРИЈА
+ГАРАБАНДИЋ МИЛЕНКО
+ГАРАБАНДИЋ НИКОЛА
+ГАРАБАНТИН ИВАН
+ГАРАБАНТИН МИЛОВАН
+ГАРАБАНТИН СТЕВАН
+ГАРАИ БЕЛА
+ГАРАИ КОРНЕЛИЈА
+ГАРАЈ БРАНИМИР
+ГАРАЈ ЈЕЛЕНА
+ГАРАЈ ОЛГА
+ГАРАЛЕЈИЋ ВЕРИЦА
+ГАРАПИЋ БРАНКО ДИПЛ ИНГ
+ГАРДАШЕВИЋ МИЛОШ
+ГАРДАШЕВИЋ-СТРИЧЕВИЋ ЈОВАНКА
+ГАРДАШЕВИЋ ВЕСЕЛИН
+ГАРДИЋ АЛИЈА
+ГАРДИНОВАЧКИ ЂОРЂЕ
+ГАРДИНОВАЧКИ БОРИСЛАВ
+ГАРДИНОВАЧКИ БРАНИМИР
+ГАРДИНОВАЧКИ ЦВЕТА
+ГАРДИНОВАЧКИ МИОРКА
+ГАРДИНОВАЧКИ НЕДЕЉКО
+ГАРДИНОВАЧКИ СТЕВАН
+ГАРДИНОВАЧКИ СВЕТОЗАР
+ГАРЕЛОВИЋ МИРОСЛАВ
+ГАРЕВСКИ ДИМИТРИЈА
+ГАРИЋ ЖАРКО
+ГАРИЋ ЛАЗАР
+ГАРИЋ ЛУКА
+ГАРИЋ МИРОСЛАВ
+ГАРИЋ НАДА
+ГАРИЋ СТЕВАН
+ГАРОВИЋ МИЛУТИН
+ГАРОВИЋ МИЛУТИН
+ГАРОВНИКОВ ЂОРЂЕ
+ГАРОВНИКОВ БОРКА
+ГАРТНЕР ПЕТАР
+ГАРУНОВИЋ ДАНИЦА
+ГАРУНОВИЋ ВАСА
+ГАТАЛО ГОРАН
+ГАТАЛО РАТКО
+ГАТАРИЋ ЖЕЉКО
+ГАТАРИЋ ЖЕЉКО
+ГАТАРИЋ БОШКО
+ГАТАРИЋ ДРАЖЕ
+ГАТАРИЋ МАНОЈЛО
+ГАТАРИЋ САВКА
+ГАТАРИЋ СТАНА
+ГАТАРИЋ СВЕТОЗАР
+ГАТАРИЋ ЗЛАТИБОР
+ГАТЕР ЈОСИП
+ГАУДЕЊИ ГАБРИЈЕЛА
+ГАУДЕЊИ МАТИЛД
+ГАУДЕЊИ ТИВАДАР
+ГАВА АЛЕКСЕЈ
+ГАВАНСКИ БРАНИСЛАВ АДВОКАТ
+ГАВАНСКИ БРАНИСЛАВА
+ГАВАНСКИ БРАНИСЛАВА
+ГАВАНСКИ ДАРА
+ГАВАНСКИ ДРАГАН
+ГАВАНСКИ ДУШАН
+ГАВАНСКИ ГАВРИЛО
+ГАВАНСКИ ИВАН
+ГАВАНСКИ ЈЕЛЕНА
+ГАВАНСКИ ЈУДИТА
+ГАВАНСКИ КОНСТАНТИН ДР
+ГАВАНСКИ КОСТА ДПЛ ИНГ
+ГАВАНСКИ КОСТА
+ГАВАНСКИ ЛАЗАР
+ГАВАНСКИ ЛУКА
+ГАВАНСКИ МАРГИТА
+ГАВАНСКИ МИЛИЦА
+ГАВАНСКИ МИЛИЦА
+ГАВАНСКИ НАДА
+ГАВАНСКИ НОВАК
+ГАВАНСКИ ПАВЛЕ
+ГАВАНСКИ ПЕТРА
+ГАВАНСКИ СТЕВАН
+ГАВАНСКИ СТЕВАН
+ГАВАНСКИ СТЕВАН
+ГАВАНСКИ СТЕВАН
+ГАВАНСКИ СВЕТОЗАР
+ГАВАНСКИ ЗОРАН
+ГАВАНСКИ ЗОРАН
+ГАВАРИЋ АЛЕКСАНДАР
+ГАВАРИЋ ГАВРИЛО
+ГАВАРИЋ ЈЕРЕМИЈЕ
+ГАВАРИЋ ЉУБИЦА
+ГАВАРИЋ МИЛЕНКО
+ГАВЛИК ГЕРГЕЉ
+ГАВОДИ ЕСТЕР
+ГАВРАН ГОЈКО
+ГАВРАН ЉУБОМИР
+ГАВРАНЧИЋ ЂУРЂИЦА
+ГАВРАНЧИЋ ЈОВАН
+ГАВРАНЧИЋ КАТИЦА
+ГАВРАНЧИЋ МАРГИТА
+ГАВРАНЧИЋ МАРИЈА
+ГАВРАНЧИЋ НИКОЛА
+ГАВРАНЧИЋ ВЛАДИМИР
+ГАВРАНИЋ ГОЈКО
+ГАВРАНИЋ ИЛИЈА
+ГАВРАНИЋ ЗВЕЗДАНА
+ГАВРАНОВ БОСА
+ГАВРАНОВ СЛОБОДАН
+ГАВРАНОВИЋ ТОМИСЛАВ
+ГАВРАНОВИЋ ЗДРАВКО
+ГАВРИЋ ЧЕДОМИР
+ГАВРИЋ ЖИВКА
+ГАВРИЋ ЂОРЂЕ
+ГАВРИЋ БРАНИСЛАВ
+ГАВРИЋ ДИМИТРИЈЕ
+ГАВРИЋ-ГАЗДИЋ НИКОЛА
+ГАВРИЋ ИВАН
+ГАВРИЋ ИВАН
+ГАВРИЋ ЈОВАН
+ГАВРИЋ ЈОВО
+ГАВРИЋ МАРИЈА
+ГАВРИЋ МИХАЈЛО
+ГАВРИЋ МИЛАН
+ГАВРИЋ МИЛАН
+ГАВРИЋ МИЛЕНА
+ГАВРИЋ МИЛЕНКО
+ГАВРИЋ МИЛЕНКО
+ГАВРИЋ МИЛОШ
+ГАВРИЋ МИРКО
+ГАВРИЋ МИРОСЛАВ
+ГАВРИЋ ПЕТАР
+ГАВРИЋ РАДОМИР
+ГАВРИЋ РАДОСЛАВ
+ГАВРИЋ СЕНКА
+ГАВРИЋ СЛАВКА
+ГАВРИЋ СПАСОЈЕ
+ГАВРИЋ СВЕТОЗАР
+ГАВРИЋ ВЕЛИНКА
+ГАВРИЋ ВЛАДИМИР
+ГАВРИЋ ЗОРАН
+ГАВРИЋ ЗОРА
+ГАВРИЛОВ ЖИВКА
+ГАВРИЛОВ АНКИЦА
+ГАВРИЛОВ БОГДАН
+ГАВРИЛОВ ГОРДАНА
+ГАВРИЛОВ ХЕРМИНА
+ГАВРИЛОВ ЈУЛКА
+ГАВРИЛОВ ЉУБИЦА
+ГАВРИЛОВ МАРТА
+ГАВРИЛОВ МИЛИВОЈ
+ГАВРИЛОВ МИЛИВОЈ
+ГАВРИЛОВ МИЛОРАД
+ГАВРИЛОВ РАДИВОЈ
+ГАВРИЛОВ СЛАВКО
+ГАВРИЛОВ СМИЉА
+ГАВРИЛОВ ТОДОР
+ГАВРИЛОВ УРОШ
+ГАВРИЛОВИЋ ЖИКИЦА
+ГАВРИЛОВИЋ ЖИВКА
+ГАВРИЛОВИЋ ЖИВОЈИН ДР
+ГАВРИЛОВИЋ АЛЕКСАНДАР
+ГАВРИЛОВИЋ АЛЕКСАНДАР
+ГАВРИЛОВИЋ АЛЕКСА
+ГАВРИЛОВИЋ БОГДАНКА
+ГАВРИЛОВИЋ БОРИВОЈ
+ГАВРИЛОВИЋ БРАНКА
+ГАВРИЛОВИЋ БРАНКО
+ГАВРИЛОВИЋ ДОБРИЛА
+ГАВРИЛОВИЋ ДОБРИВОЈЕ
+ГАВРИЛОВИЋ ДУШИЦА
+ГАВРИЛОВИЋ ЕМИЛ
+ГАВРИЛОВИЋ ГРОЗДАН
+ГАВРИЛОВИЋ ЈЕЛИСАВКА
+ГАВРИЛОВИЋ ЈОВАН
+ГАВРИЛОВИЋ ЈОВАН
+ГАВРИЛОВИЋ КАТИЦА
+ГАВРИЛОВИЋ КЛАУДИЈА
+ГАВРИЛОВИЋ ЛАЗАР
+ГАВРИЛОВИЋ ЉУБОМИР
+ГАВРИЛОВИЋ МАРА
+ГАВРИЛОВИЋ МАРИЈА
+ГАВРИЛОВИЋ МАРИЈА
+ГАВРИЛОВИЋ МИЛЕНА
+ГАВРИЛОВИЋ МИЛЕНКО
+ГАВРИЛОВИЋ МИЛЕНКО
+ГАВРИЛОВИЋ МИЛИЦА
+ГАВРИЛОВИЋ МИЛОШ
+ГАВРИЛОВИЋ МИЛОШ
+ГАВРИЛОВИЋ МИЛОЈЕ
+ГАВРИЛОВИЋ МИЛОСАВА
+ГАВРИЛОВИЋ МИЛОВАН
+ГАВРИЛОВИЋ МИРА
+ГАВРИЛОВИЋ МИРЈАНА
+ГАВРИЛОВИЋ МИРЈАНА
+ГАВРИЛОВИЋ МИРКО
+ГАВРИЛОВИЋ МИРОСЛАВ
+ГАВРИЛОВИЋ МИРОСЛАВ
+ГАВРИЛОВИЋ МИТАР
+ГАВРИЛОВИЋ МЛАДЕН
+ГАВРИЛОВИЋ НЕБОЈША
+ГАВРИЛОВИЋ НИКОЛА ДР ПРОФ
+ГАВРИЛОВИЋ НИКОЛА
+ГАВРИЛОВИЋ ПАВЛЕ
+ГАВРИЛОВИЋ РАДОСЛАВ
+ГАВРИЛОВИЋ РАЈКА
+ГАВРИЛОВИЋ САВА ДР
+ГАВРИЛОВИЋ САВО
+ГАВРИЛОВИЋ СЛАВИЦА
+ГАВРИЛОВИЋ СЛАВКО ДР
+ГАВРИЛОВИЋ СЛАВКО
+ГАВРИЛОВИЋ СЛАВКО
+ГАВРИЛОВИЋ СЛАВОЉУБ
+ГАВРИЛОВИЋ СЛОБОДАН
+ГАВРИЛОВИЋ СОФИЈА
+ГАВРИЛОВИЋ СТАНА
+ГАВРИЛОВИЋ СТЕВА
+ГАВРИЛОВИЋ СТОЈАН
+ГАВРИЛОВИЋ ТОША
+ГАВРИЛОВИЋ ТОДОР
+ГАВРИЛОВИЋ ВЕРА ДР
+ГАВРИЛОВИЋ ВЕРИЦА
+ГАВРИЛОВИЋ ВЛАДИМИР
+ГАВРИЛОВИЋ ВЛАДИМИР
+ГАВРИЛОВИЋ ВЛАДИМИР
+ГАВРИЛОВИЋ ВУКИЦА
+ГАВРИЛОВИЋ ЗЛАТА
+ГАВРИЛОВСКИ ПАВЛИНА
+ГАВРОВИЋ ГОРАН
+ГАВРОВИЋ ГОРДАНА
+ГАВРОВИЋ ЉУБИВОЈЕ
+ГАВРОВИЋ СВЕТЛАНА ЛОКАЛ
+ГАЗАФИ ЛАСЛО
+ГАЗДИЋ БОРИВОЈ
+ГАЗЕПОВ ИЛИЈА
+ГАЗИЋ ИВАН
+ГАЗИБАРИЋ ИЗЕТА
+ГАЗИБАРИЋ ЈЕЛЕНА
+ГАЗИБАРИЋ ЈОВАНКА
+ГАЗИБАРИЋ СИМА
+ГАЗИЈА ЈОВАН
+ГАЗИВОДА ГОЈКО
+ГЕЧЕВСКИ СРЕТКО
+ГЕБАУЕР ЕРВИН ДР
+ГЕБЕЛС АНА
+ГЕЦИ ЂУРА
+ГЕДЕЛОВСКИ ДУШАН
+ГЕДЕЛОВСКИ СОФИЈА
+ГЕГЕШ ЈУЛИЈАНА
+ГЕГЕШ НАНДОР
+ГЕГЕШ СЛАВИЦА
+ГЕГЕНБАУЕР ДРАГУТИН
+ГЕГЕНБАУЕР ИЛОНКА
+ГЕГЕНБАУЕР ЗОРА
+ГЕГИЋ АЛЕКСАНДАР
+ГЕГИЋ НЕМАЊА
+ГЕЛЕИ ЈЕНЕ
+ГЕЛЕР ШАНДОР
+ГЕЛЕР ЂУЛА
+ГЕЛЕР АДАМ
+ГЕЛЕР АЛЕКСАНДАР
+ГЕЛЕР БЕЛА
+ГЕЛЕР ЈЕЛИСАВЕТА
+ГЕЛЕР ЈОВАН
+ГЕЛЕР ЛАСЛО
+ГЕЛЕР ЛАСЛО
+ГЕЛЕР МАРИЈА
+ГЕЛЕР МАРТА
+ГЕЛЕР ОЛГА
+ГЕЛЕР-ПЕТКОВИЋ ГИЗЕЛА
+ГЕЛЕР ТИБОР
+ГЕЉИЋ МАТО
+ГЕМОВИЋ АЛЕКСАНДАР
+ГЕНЦ ФЕРЕНЦ
+ГЕНЦ ЛАЈОШ
+ГЕНЦЕЛ ЈУЛИЈАНА
+ГЕНЦЕЛ МАРИЈАНА
+ГЕНЦЕЛ ВАЛЕРИЈА
+ГЕНЦИ ЈОСИП
+ГЕНЕВАЈН ЂУРА
+ГЕНЕВАЈН ЈОВАН
+ГЕНЕВАЈН КАРЛО
+ГЕНЕВАЈН ЛАЈОШ
+ГЕНЕВАЈН ЛАЈОШ
+ГЕНОВА МАЈДА ДИПЛ ИНГ
+ГЕНОВА МИЛИЦА ДИПЛ ИНГ
+ГЕОРГИЕВ ЛЕПОСАВА
+ГЕОРГИЕВСКИ ПЕРО
+ГЕОРГИЕВСКИ ВАСИЛ
+ГЕОРГИЈЕВИЋ ЖИВКО
+ГЕОРГИЈЕВИЋ АЛЕКСАНДАР
+ГЕОРГИЈЕВИЋ ИВАНА
+ГЕОРГИЈЕВИЋ ЈОВАН
+ГЕОРГИЈЕВИЋ ЈОВАН
+ГЕОРГИЈЕВИЋ ЛАЗАР
+ГЕОРГИЈЕВИЋ ЛАЗА
+ГЕОРГИЈЕВИЋ ЉУБИША
+ГЕОРГИЈЕВИЋ МИЛАН
+ГЕОРГИЈЕВИЋ МИЛОСАВ
+ГЕОРГИЈЕВИЋ МИЛОВАН
+ГЕОРГИЈЕВИЋ НЕСТОР
+ГЕОРГИЈЕВИЋ РАДОВАН
+ГЕОРГИЈЕВИЋ ВОЈИСЛАВ
+ГЕРА ИБОЉА
+ГЕРАК ЕМИЛИЈА
+ГЕРАСИМОВСКИ ЗЛАТЕ
+ГЕРАТОВИЋ ЗОРАН
+ГЕРДИЈАН ЧЕДОМИР
+ГЕРЕ ЛАЈОШ
+ГЕРЕ ЗОЛТАН
+ГЕРЕЦИ ЈУРАЈ
+ГЕРЕГ ЖУЖАНА
+ГЕРЕГ АНДРАШ
+ГЕРЕГ БЛАНКА
+ГЕРЕГ ЕУГЕН
+ГЕРЕГ ТИБОР
+ГЕРГЕЧ СМИЉА
+ГЕРГЕЉ ШИМОН
+ГЕРИ ТЕРЕЗА
+ГЕРИЋ ЖАРКО
+ГЕРИЋ ЂОРЂЕ
+ГЕРИЋ АЛЕКСАНДАР
+ГЕРИЋ АНТОН
+ГЕРИЋ ЦВЕТА
+ГЕРИЋ ГИНА
+ГЕРИЋ ГОРДАНА
+ГЕРИЋ ИВАН
+ГЕРИЋ ИВАН
+ГЕРИЋ КОСТА
+ГЕРИЋ КОВИЦА
+ГЕРИЋ ЉУБОМИР
+ГЕРИЋ МАРИЈА
+ГЕРИЋ МИЛАН
+ГЕРИЋ МИЛОШ
+ГЕРИЋ МИЛОШ
+ГЕРИЋ МИРКО
+ГЕРИЋ НЕДЕЉКО
+ГЕРИЋ НЕСТОР
+ГЕРИЋ ОБРАД
+ГЕРИЋ ПЕТАР
+ГЕРИЋ РАДИНКА
+ГЕРИЋ СТЕВАН
+ГЕРИХ АНДРИЈА
+ГЕРЛ ФЕРДО
+ГЕРЛ МАРИЈА
+ГЕРЛА ДРАГАНА
+ГЕРЛА ЛАДИСЛАВ
+ГЕРЛА ТЕОДОР
+ГЕРМАНОВИЋ МИЛАН
+ГЕРМАНОВИЋ СТАНОЈЕ
+ГЕРНАЧ ЂОРЂЕ
+ГЕРНАЧ ФРАЊА
+ГЕРНАЧ ЛАДИСЛАВ
+ГЕРО ЂЕРЂ
+ГЕРО ДУШАНКА
+ГЕРО ЈАНОШ
+ГЕРО ЈОЖЕФ
+ГЕРО КАРЛО
+ГЕРО ЛАЈОШ
+ГЕРО МАРГИТА
+ГЕРОЛД ЈАКОБ
+ГЕРОЛД ЛАСЛО
+ГЕРОВ АНГЕЛ ДИПЛ ИНГ
+ГЕРТНЕР АНА
+ГЕРТНЕР ФРАЊА
+ГЕРТНЕР ЈОЖЕФ
+ГЕРТНЕР РЕЖЕ
+ГЕТЕЛ ХЕЛМУТ
+ГЕЗ ЈАНОШ
+ГЕЗ ЈЕЛИЦА
+ГЕЗ КАТИЦА
+ГЕЗ ТИБОР
+ГЕЗ ВЕРОНИКА
+ГХАНДОУР-ШАЛ ЈУЛИЈАНА
+ГИАДРОШИЋ МАРИЈА
+ГИБАНИЦА ГЕОРГИНА
+ГИГА СРЕТЕН
+ГИГИЋ МИОМИР
+ГИГИЋ МИРЈАНА
+ГИГИЋ ЗОРАН
+ГИКИЋ БОЖИДАР
+ГИКИЋ ДИМИТРИЈЕ
+ГИКИЋ РАДИВОЈЕ
+ГИКОВСКИ МИНО
+ГИЛЕЗАН КОРИОЛАН
+ГИЛГ ИРЕНА
+ГИЛИЋ ДРАГАН
+ГИЛИЋ ДРАГАН
+ГИМБОШ ДОБРИВОЈЕ
+ГИНЦУЉ СЕРГИЈЕ ДИПЛ ИНГ
+ГИОН АЛЕКСАНДАР
+ГИОН АНА ДР
+ГИОН ИШТВАН
+ГИОН КАЛМАН
+ГИОН НАНДОР
+ГИРИЋ МАТИЈА
+ГИРИЦ БЕЛА
+ГИРИЦ ЕЛЕНА
+ГИРИЦ ИМРЕ
+ГИРИЦ ЈОЖЕФ
+ГИРИЦ ЛАСЛО
+ГИРИЦ-МОКУШ КЛАРА
+ГИРИЗД ЛАСЛО НОВИНАР
+ГИРНТ РОЗАЛИЈА
+ГИС ХЕДВИГА
+ГЈАФО МАТИЈА
+ГЈЕР ВЛАДИМИР
+ГЛАДИШ СТЕВАН
+ГЛАДИЋ МИЛАН
+ГЛАДИЋ РАЈКО
+ГЛАДИЋ СВЕТОЗАР
+ГЛАДОВИЋ ДУШАН
+ГЛАДОВИЋ ТАТЈАНА
+ГЛАЈХ ГЕОРГ
+ГЛАМОЧАНИН НЕВЕНКА
+ГЛАМОЧАНИН НЕВЕНКА
+ГЛАМОЧАНИН ПЕРО
+ГЛАМОЧАНИН ВЛАДИМИР
+ГЛАМОЧИЋ ДАНЕ
+ГЛАМОЧИЋ СНЕЖАНА
+ГЛАМОЧЛИЈА РУЖИЦА
+ГЛАНЦ АНТУН
+ГЛАСОВАЦ МАРТА
+ГЛАВЧИЋ МИЛОРАД
+ГЛАВАШ ЖАРКО
+ГЛАВАШ ЈОВО
+ГЛАВАШ МИЛАН
+ГЛАВАШ-ТРБИЋ БОШКО
+ГЛАВАШЕВИЋ АНЂЕЛКО
+ГЛАВАШЕВИЋ АНЂЕЛКО
+ГЛАВАШКИ ЖИВОЈИН
+ГЛАВАШКИ АЛЕКСАНДАР
+ГЛАВАШКИ АЛЕКСАНДРА
+ГЛАВАШКИ АНЂЕЛКА
+ГЛАВАШКИ БОГДАН ДИПЛ ИНГ
+ГЛАВАШКИ БРАНИСЛАВ
+ГЛАВАШКИ БРАНКО ДИПЛ ПРАВНИК
+ГЛАВАШКИ ДРАГАН
+ГЛАВАШКИ ДУШАН
+ГЛАВАШКИ ГЛИША
+ГЛАВАШКИ МИЛУТИН
+ГЛАВАШКИ НЕМАЊА
+ГЛАВАШКИ СИМА
+ГЛАВАШКИ СИНИША
+ГЛАВАШКИ СМИЉКА
+ГЛАВАН ЈОВАН
+ГЛАВАНИЋ БОСИЉКА
+ГЛАВАНИЋ ЈУЛКА
+ГЛАВАНИЋ МИРКО
+ГЛАВАРДАНОВ АЛЕКСАНДАР
+ГЛАВАРДАНОВ ИВАН ДИПЛ ИНГ
+ГЛАВАРДАНОВ МАРИЈА
+ГЛАВАРДАНОВ СОКО
+ГЛАВАТОВИЋ ДРАГАН
+ГЛАВАТОВИЋ ДУШАН
+ГЛАВИЧИЋ МАРИЈАНА
+ГЛАВИЋ БОШКО
+ГЛАВИЋ ГАВРО
+ГЛАВИЋ ЈЕЛКА
+ГЛАВИЋ РАДИСЛАВ
+ГЛАВИНИЋ ЈОВО
+ГЛАВИНИЋ МИЛОРАД
+ГЛАВОЧЕВИЋ ИЛИЈА
+ГЛЕЂА МИЛЕНКО
+ГЛЕДИЋ МИЛИЦА
+ГЛИШИЋ ЂОРЂО
+ГЛИШИЋ БОРИСЛАВ
+ГЛИШИЋ БРАНКО
+ГЛИШИЋ ГРАДИМИР
+ГЛИШИЋ ИЛИЈА
+ГЛИШИЋ ИВАН
+ГЛИШИЋ ЈЕЛИЦА
+ГЛИШИЋ ЈОВАН
+ГЛИШИЋ-КЕСЕГ ВАЛЕРИЈА
+ГЛИШИЋ ЉУБИША
+ГЛИШИЋ МИЛЕВА
+ГЛИШИЋ НЕНАД
+ГЛИШИЋ ПРЕДРАГ
+ГЛИШИЋ РАДОМИР
+ГЛИШИЋ СИМО
+ГЛИШИЋ СРЕТА
+ГЛИШИЋ ВЕСНА
+ГЛИШИЋ ЗОРАН
+ГЛИШИН ЂОРЂЕ
+ГЛИШИН БРАНКА
+ГЛИШИН НЕНАД
+ГЛИШОВИЋ МАРИЈА
+ГЛИБИЋ МИЛАН
+ГЛИБОТА ВЛАДО
+ГЛИГИЋ ЖЕЉКА
+ГЛИГИЋ МИРА
+ГЛИГИЋ НЕДЕЉКО
+ГЛИГИЋ ТОМИСЛАВ
+ГЛИГОРЕВИЋ ДУШКО
+ГЛИГОРЕВИЋ ТОМО
+ГЛИГОРИЋ ЖЕЉКО
+ГЛИГОРИЋ ЖИВОЈИН
+ГЛИГОРИЋ ЖИВОРАД
+ГЛИГОРИЋ АНЂЕЛКА
+ГЛИГОРИЋ ЦВЕТАНКА
+ГЛИГОРИЋ ДРАГАН
+ГЛИГОРИЋ ДРАГАН
+ГЛИГОРИЋ ДРАГИША
+ГЛИГОРИЋ ДРАГИЦА
+ГЛИГОРИЋ ДРАГИЊА
+ГЛИГОРИЋ ДРАГОМИР
+ГЛИГОРИЋ ЈЕЛЕНА
+ГЛИГОРИЋ КАТИЦА
+ГЛИГОРИЋ ЉУБОМИР
+ГЛИГОРИЋ МИЛАН
+ГЛИГОРИЋ МИЛАН
+ГЛИГОРИЋ МИЛОРАД
+ГЛИГОРИЋ МЛАДЕН
+ГЛИГОРИЋ НИКОЛА
+ГЛИГОРИЋ РАДИША
+ГЛИГОРИЋ СТАНОЈЕ
+ГЛИГОРИЋ СТЕВАН
+ГЛИГОРИЋ СТЕВАН
+ГЛИГОРИЈЕВИЋ АЛЕКСАНДАР
+ГЛИГОРИЈЕВИЋ ДРАГАНА
+ГЛИГОРИЈЕВИЋ ДРАГИЦА
+ГЛИГОРИЈЕВИЋ КРСТА
+ГЛИГОРИЈЕВИЋ МИХАЈЛО
+ГЛИГОРИЈЕВИЋ МИОДРАГ
+ГЛИГОРИЈЕВИЋ ПЕТРА
+ГЛИГОРИЈЕВИЋ РУЖИЦА
+ГЛИГОРИН ЂУРЂИНКА
+ГЛИГОРИН БОЈАНА
+ГЛИГОРИН МИРОСЛАВ
+ГЛИГОРИН СЛАВИЦА
+ГЛИГОРИН СТЕВАН
+ГЛИГОРИН ТОМИСЛАВ
+ГЛИГОРИН ЗОРАН
+ГЛИГОРИН ЗОРКА
+ГЛИГОРОВ ДЕСИМИР
+ГЛИГОРОВ ЈОВАН
+ГЛИГОРОВ ЛЕКА
+ГЛИГОРОВ ЉУБОМИР
+ГЛИГОРОВИЋ СЛАВКО
+ГЛИГОРОВСКИ ТРАЈКО
+ГЛИНТИЋ МИЛЕ
+ГЛИНТИЋ МИОДРАГ
+ГЛИНТИЋ НИКОЛА
+ГЛИНТИЋ РАДОСЛАВ
+ГЛИНТИЋ САВКА
+ГЛИНТИЋ ВЕСЕЛКА
+ГЛОЖАНСКИ МАРИЈА
+ГЛОЖАНСКИ ПЕТАР
+ГЛОЖАНСКИ ВОЈИСЛАВ
+ГЛОГОЊАЦ ВИТОМИР
+ГЛОГОВЧАН МИЛОШ ДИПЛ ИНГ
+ГЛОГОВАЦ ЈЕВРЕМ
+ГЛОГОВАЦ КОРНЕЛИЈА
+ГЛОГОВАЦ МИРКО
+ГЛОГОВАЦ МОМЧИЛО
+ГЛУШАЦ БОЖИДАР
+ГЛУШАЦ ДУШАН
+ГЛУШАЦ МИХАЈЛО
+ГЛУШАЦ МИЛАН
+ГЛУШАЦ МИЛОШ
+ГЛУШАЦ МИЛОРАД
+ГЛУШАЦ ПЕТАР
+ГЛУШИЋ БРАНКО
+ГЛУШИЦА ЉУБОМИР
+ГЛУШИЦА МИЛАН
+ГЛУШИЦА МИЛАН
+ГЛУШИЦА МИЛЕ
+ГЛУШИЦА НЕНАД
+ГЛУШИЦА ПЕТАР
+ГЛУШИЦА СЛАЂАНА
+ГЛУШИЦА СЛАВКА
+ГЛУШИЦА ЗДРАВКО
+ГЛУХАИЋ АНЂЕЛКО
+ГЛУХАЈИЋ БОЖО
+ГЛУХАК КАРЛО
+ГЛУХОВИЋ МИЛОШ
+ГЛУХОВИЋ МИЛОМИР
+ГЛУХОВИЋ ВЕЉКО
+ГЛУМАЦ ДАНЕ
+ГЛУМАЦ ДАНИЛО
+ГЛУМАЦ ДАНИЛО
+ГЛУМАЦ ДРАГАН
+ГЛУМАЦ ДУШАН
+ГЛУМАЦ ГАВРА
+ГЛУМАЦ ЈЕЛЕНА
+ГЛУМАЦ ЛАЗО
+ГЛУМАЦ ЉУБО
+ГЛУМАЦ МАГДАЛЕНА
+ГЛУМАЦ МИЛАН
+ГЛУМАЦ МИЛЕ
+ГЛУМАЦ МИОДРАГ ДР
+ГЛУМАЦ МИРОСЛАВ
+ГЛУМАЦ СЛОБОДАН ДР
+ГЛУМИЧИЋ МАНДА
+ГЛУВАИЋ ЂОРЂЕ
+ГЛУВАЈИЋ ДРАГАН
+ГЛУВАЈИЋ ЈОВАН
+ГЛУВАКОВ МИЛАДИНКА
+ГЛУВАКОВ ПАВЛЕ
+ГЛУВАКОВИЋ ВЛАДИМИР
+ГЛУВЊА СТЕВАН
+ГМИЗИЋ БРАНИСЛАВ
+ГМИЗИЋ НЕГОВАН
+ГМИЗИЋ ВЛАДА
+ГНИП ЈОАКИМ
+ГНИП ВЕЛИМИР ДИПЛ ИНГ
+ГНИП ВЕРА
+ГНИП ВЛАДИМИР
+ГЊАТИЋ СТОЈАНКА
+ГЊЕЧ СВЕН
+ГОЧАНИН РАДЕ
+ГОЧИЋ АНЂА
+ГОШИЋ ЈЕВРЕМ
+ГОШИЋ ЉИЉА
+ГОШИЋ ПАВЛЕ
+ГОШИЋ ПАВЛЕ
+ГОШИЋ ПАВЛЕ
+ГОШИЋ ТОМИСЛАВ
+ГОШИЋ ТОМИСЛАВ
+ГОШЊИЋ ДОБРИВОЈ
+ГОЂЕВАЦ БОСИЉКА
+ГОБЕЦ КАТИЦА
+ГОБЕЦ МИЛАН
+ГОБЕЉИЋ МИЛОВАН
+ГОБЕЉИЋ СТРАХИЊА
+ГОБЕЉИЋ СВЕТИСЛАВ
+ГОБЕЉИЋ ВУКАДИН
+ГОБЕЉИЋ ВУК
+ГОБОР АНА
+ГОБОР ЛАДИСЛАВ
+ГОБОР ЗОЛТАН
+ГОБОР ЗОЛТАН
+ГОЦИЋ БОГОСАВ
+ГОЦИЋ ЈЕВРОСИМА
+ГОЦИЋ ВИДОЈКО
+ГОДА ОЛИВИЈА
+ГОДАР КАТАРИНА
+ГОДИЋ МАРИЈА
+ГОДИЋ ЗВОНКО
+ГОДИЋ ЗВОНКО
+ГОДИНА ДАРКО
+ГОДИНА МИЛКО
+ГОДИНСКИ ВЛАДИМИР
+ГОДОШЕВ КРСТА
+ГОДОР ШАНДОР
+ГОДОР ЈАНОШ
+ГОДОР ЈОСИП
+ГОДУНЦ ДУШАН
+ГОГИЋ ДОБРИЛО
+ГОГИЋ ДРАГОЉУБ
+ГОГИЋ МАРА
+ГОГИЋ ПАВЛЕ
+ГОГИЋ СЛАВКО
+ГОГИЋ ВЕЛИНКА
+ГОГОЛАК МАРГИТА
+ГОГОЉЕВ МИХАЈЛО
+ГОГОЉЕВ УЉАНА
+ГОГОЉЕВ ВАСИЛИЈЕ
+ГОГОВ МИЛАН
+ГОЈАН ФЕРЕНЦ
+ГОЈИЋ ДРАГАН
+ГОЈИЋ ГОЈКО
+ГОЈИЋ МИЛЕНА
+ГОЈИЋ МИЛЕ
+ГОЈКОВ ЖИВКО
+ГОЈКОВ ЈУЛИЈАНА
+ГОЈКОВ МИЛЕНА
+ГОЈКОВ РАДОМИР
+ГОЈКОВ ВАСИЛИЈЕ
+ГОЈКОВИЋ ДОНКА
+ГОЈКОВИЋ ДРАГАН
+ГОЈКОВИЋ ДРАГОРАД
+ГОЈКОВИЋ ДУШАН
+ГОЈКОВИЋ ГЕОРГИЈЕ ДИПЛ ИНГ
+ГОЈКОВИЋ ИЛИЈА
+ГОЈКОВИЋ ЈЕЛА
+ГОЈКОВИЋ ЉУБИША
+ГОЈКОВИЋ МИЛИСАВ
+ГОЈКОВИЋ МИТА
+ГОЈКОВИЋ НАДЕЖДА
+ГОЈКОВИЋ НЕВЕНКА
+ГОЈКОВИЋ ПАВЛЕ
+ГОЈКОВИЋ РАДМИЛО
+ГОЈКОВИЋ РАДОЉУБ
+ГОЈКОВИЋ САВО
+ГОЈКОВИЋ ТОМИСЛАВ
+ГОЈНИЋ ДАВОР
+ГОЈОВИЋ ВУКОСАВ
+ГОКЛЕР ИЛОНА
+ГОЛДМАН АНКИЦА
+ГОЛДМАН-ТОМАШЕВИЋ ЕВА
+ГОЛЕШ РУЖА
+ГОЛЕНИЋ СЛАВКО
+ГОЛЕЊА БРАНКО
+ГОЛЕЊА ИРЕНА
+ГОЛЕЊА МИРОСЛАВА
+ГОЛЕЊА МИРОСЛАВА
+ГОЛЕВА НАДА
+ГОЛИШЕВИЋ МИРЈАНА
+ГОЛИЋ ЖИВАН
+ГОЛИЋ ЂОРЂЕ
+ГОЛИЋ АЛЕКСАНДАР
+ГОЛИЋ АНИЦА
+ГОЛИЋ ДОБРИВОЈЕ
+ГОЛИЋ ФАИД
+ГОЛИЋ ЉУБОМИР
+ГОЛИЋ МАРКО
+ГОЛИЋ СЛАВКА
+ГОЛИЋ СТАНКА
+ГОЛИЋ ТОМИСЛАВ
+ГОЛИЋ ВОЈИН
+ГОЛИЋ ВОЈКО
+ГОЛИЈАН АНА
+ГОЛИЈАНИН ДУШАНКА
+ГОЛИЈАНИН ЕРЖЕБЕТ
+ГОЛИК ОЛГА
+ГОЛИК СЛОБОДАН
+ГОЉЕВАЧКИ ДРАГИЦА
+ГОЛО АЛЕКСАНДАР
+ГОЛО ДРАГОСЛАВ
+ГОЛОЧОРБИН СЛАВУЈ
+ГОЛОЧОРДИН ДРАГО
+ГОЛОШИН-ДИМИТРИЈЕВИЋ ЉИЉАНА
+ГОЛОШИН СТЕВИЦА
+ГОЛОБОЧАНИН МИЛОСАВ
+ГОЛОМЕЈИЋ МИЛОРАД
+ГОЛОНИЋ ЗАГОРКА
+ГОЛОУХ ИВАН
+ГОЛОВИЋ ЈОВАН
+ГОЛУШИН БРАНИСЛАВ
+ГОЛУШИН ДРАГАН
+ГОЛУШИН ЉУБИЦА
+ГОЛУШИН ЉУБОМИР
+ГОЛУШИН-МИЋИЋ МИЛЕНКО
+ГОЛУШИН МИОДРАГ
+ГОЛУШИН НАДА
+ГОЛУШИН НИКОЛА
+ГОЛУБИЧИЋ ВЕРА
+ГОЛУБИЋ МИЛИВОЈЕ
+ГОЛУБЈАТНИКОВА НИНА
+ГОЛУБОВ НАКА
+ГОЛУБОВИЋ ЧЕДОМИР
+ГОЛУБОВИЋ ЂОРЂЕ
+ГОЛУБОВИЋ АЛЕКСАНДАР
+ГОЛУБОВИЋ АРСЕН
+ГОЛУБОВИЋ БОШКО
+ГОЛУБОВИЋ БОГДАН
+ГОЛУБОВИЋ БОРИВОЈ
+ГОЛУБОВИЋ БРАНКО
+ГОЛУБОВИЋ ДИМИТРИЈЕ
+ГОЛУБОВИЋ ДОБРИЛА
+ГОЛУБОВИЋ ДРАГАНА
+ГОЛУБОВИЋ ДРАГАН
+ГОЛУБОВИЋ ДРАГА
+ГОЛУБОВИЋ ГОЛУБ
+ГОЛУБОВИЋ ГОЛУБ
+ГОЛУБОВИЋ ИЛИЈА
+ГОЛУБОВИЋ ИВАН
+ГОЛУБОВИЋ ЈЕРЕМИЈЕ
+ГОЛУБОВИЋ ЈОВАН
+ГОЛУБОВИЋ КСЕНИЈА
+ГОЛУБОВИЋ ЉИЉАНА
+ГОЛУБОВИЋ ЉУБИНКА
+ГОЛУБОВИЋ ЛУКА
+ГОЛУБОВИЋ МАНОЈЛО
+ГОЛУБОВИЋ МАНОЈЛО
+ГОЛУБОВИЋ МАРИЈА
+ГОЛУБОВИЋ МИХАЈЛО
+ГОЛУБОВИЋ МИЛАН
+ГОЛУБОВИЋ МИЛЕНКО
+ГОЛУБОВИЋ МИЛЕНКО
+ГОЛУБОВИЋ МИЛУН
+ГОЛУБОВИЋ МИЛУТИН
+ГОЛУБОВИЋ МИОДРАГ
+ГОЛУБОВИЋ МИРЈАНА
+ГОЛУБОВИЋ МИРОСЛАВ
+ГОЛУБОВИЋ МЛАЂЕН
+ГОЛУБОВИЋ МОМЧИЛО
+ГОЛУБОВИЋ МОМЧИЛО
+ГОЛУБОВИЋ МОМЧИЛО
+ГОЛУБОВИЋ НАДА
+ГОЛУБОВИЋ НИКОЛА
+ГОЛУБОВИЋ ОЛГИЦА
+ГОЛУБОВИЋ ПЕРИША
+ГОЛУБОВИЋ СЕКУЛА
+ГОЛУБОВИЋ СТАНА
+ГОЛУБОВИЋ СТАНА
+ГОЛУБОВИЋ ТЕОДОРА
+ГОЛУБОВИЋ ТИХОМИР
+ГОЛУБОВИЋ ТОМО
+ГОЛУБОВИЋ ВАЛЕРИЈА
+ГОЛУБОВИЋ ВЕЛИЗАР
+ГОЛУБОВИЋ ВУКАШИН
+ГОЛУБОВИЋ ВУКАШИН
+ГОЛУБОВИЋ ЗОРАН
+ГОЛУБОВИЋ ЗВОНИМИР
+ГОЛУБСКИ МИЛИЦА
+ГОЛУБСКИ РУЖА
+ГОМБАШ ТАМАШ
+ГОМБАР ШАНДОР
+ГОМБАР ЕЛИЗАБЕТА
+ГОМБАР ФЕРЕНЦ
+ГОМБАР ИШТВАН
+ГОМБАР ЈАНОШ
+ГОМБАР ЈАНОШ
+ГОМБАР КАТАЛИН
+ГОМБАР МИХАЉ
+ГОМБАР РОЗАЛИЈА
+ГОМБОШ ИШТВАН
+ГОМБОШ ИВИЦА
+ГОМБОШ КАРЛО
+ГОМБОВИЋ БРАНКО
+ГОМИРАЦ ЖИВКО
+ГОМИРАЦ БРАНКО
+ГОМИРАЦ СТОЈАН
+ГОНЧИН СРЕТКО
+ГОНЂА ЖИВАН
+ГОНЂА МИЛЕНА
+ГОНЂА ПЕТАР
+ГОНДА ЛАДИСЛАВ
+ГОНДАР РУЖА
+ГОЊА БРАНИМИР
+ГОЊА МИЛОСЛАВ
+ГОЊА ПЕТАР
+ГОРШЕ АНДРИЈА
+ГОРАНОВИЋ ДРАГО
+ГОРАНОВИЋ МИРКО
+ГОРБАНОВ ИВАН
+ГОРДАНИЋ СТОЈАН
+ГОРДИЋ ДАРИНКА
+ГОРДИЋ ГОЈКО
+ГОРДИЋ ЛАВИНИЈА
+ГОРДИЋ МИЛОРАД
+ГОРДИЋ МИЛОВАН
+ГОРДИЋ РИСТО
+ГОРДИЋ СЛАВКО
+ГОРДИЋ СТЕВАН
+ГОРДИЋ ВИТОМИР
+ГОРДОШ ЖУЖАНА
+ГОРЕЧАН КАРЛО
+ГОРЕЦ ДРАГУТИН
+ГОРЕЦ НАДА
+ГОРЕЊАК РУДОЛФ
+ГОРИЧАНЕЦ МИЈО
+ГОРЈАНАЦ БРАНКО
+ГОРЈАНАЦ МАРИН
+ГОРЊАК КАТИЦА
+ГОРТВА ЈОСИП
+ГОСАРИЋ ФРАЊА
+ГОСПИЋ НЕДЕЉКО
+ГОСПОЂИНАЧКИ РАДОВАН
+ГОСПОДИНОВИЋ ИВАН
+ГОСТИЋ ЗДРАВКО
+ГОСТИМИРОВИЋ МАРИН
+ГОСТИМИРОВИЋ ПЕТАР
+ГОСТОЈИЋ ЂУРЂИНКА
+ГОСТОЈИЋ ДУШАН
+ГОСТОЈИЋ ЈОВАН
+ГОСТОЈИЋ ЛАЗАР
+ГОСТОЈИЋ МИЛАНА
+ГОСТОЈИЋ МИЛОШ
+ГОСТОЈИЋ МИРОСЛАВ
+ГОСТОЈИЋ МИТАР
+ГОСТОЈИЋ СЛАВКА
+ГОСТОЈИЋ СЛОБОДАНКА
+ГОСТОЈИЋ ТЕОДОР
+ГОСТОВИЋ ЂОРЂЕ
+ГОСТОВИЋ БОГДАН
+ГОСТОВИЋ ИКА
+ГОСТОВИЋ ЉУБОМИР
+ГОСТОВИЋ МОМИР
+ГОТШТАЈН ФЕРЕНЦ
+ГОВЕДАРИЦА ЧЕДО
+ГОВЕДАРИЦА ЖЕЛИМИР
+ГОВЕДАРИЦА ДЕЈАН
+ГОВЕДАРИЦА ДРАГИЦА
+ГОВЕДАРИЦА МИЛЕНКО
+ГОВЕДАРИЦА МИЛОВАН
+ГОВЕДАРИЦА МИТАР
+ГОВЕДАРИЦА МИТАР
+ГОВЕДАРИЦА ПАВЛЕ
+ГОВЕДАРИЦА СИМО
+ГОВЕДАРИЦА СЛАВКО
+ГОВЕДАРИЦА ТАТАЈАНА
+ГОВЕДАРИЦА ВЕЛИМИР
+ГОВЕДАРИЦА ВЛАДИМИР
+ГОВЕДАРОВИЋ ЈУЛИЈА
+ГОВЕДАРОВИЋ НИКОЛА
+ГОВЕДАРОВИЋ ПЕТАР
+ГОВОРЧИН ЖИВКА
+ГОВОРЧИН БОГДАН
+ГОВОРЧИН ДАРИНКА
+ГОВОРЧИН ДЕЛИНКА
+ГОВОРЧИН ДИМИТРИЈЕ
+ГОВОРЧИН ДИМИТРИЈЕ
+ГОВОРЧИН ДУШАН
+ГОВОРЧИН ГАВРА
+ГОВОРЧИН ЛАЗАР
+ГОВОРЧИН МЛАДЕН
+ГОВОРЧИН САВА
+ГОВОРЧИН СЛАВИЦА
+ГОВОРЧИН СЛОБОДАН
+ГОВОРЧИН СТЕВАН
+ГОВОРЧИН СТОЈАН
+ГОВОРЧИН ВЕРА
+ГОВОРЧИН ВЛАДА
+ГОВОРЧИН ВЛАДИМИР
+ГОВОРЧИНОВ МИРОСЛАВ
+ГРЧАНАЦ БРАНКО
+ГРЧЕ МИЛАН
+ГРЧИЋ МИЛЕНКО
+ГРЧИЋ МИЛИВОЈ
+ГРЧИЋ СЛОБОДАН ДИПЛ ИНГ
+ГРЧИЋ СВЕТИСЛАВ
+ГРЧИЋ-ТУБИЋ ЈОВАНКА
+ГРЧИЋ ВЕРИЦА
+ГРЧИЋ ЗОРКА
+ГРЧКИ МИЛЕ
+ГРЧКИ МИРЈАНА
+ГРШИЋ ЂОРЂЕ
+ГРШИЋ ЂОРЂЕ
+ГРШИЋ МИЛИЦА
+ГРШИЋ НИКОЛА
+ГРШИЋ РУЖИЦА
+ГРШИЋ СОФИЈА
+ГРЂИЋ ДРАГУТИН
+ГРАЧАНИН ИВАН
+ГРАЧАНИН ВАЛЕРИЈА
+ГРАЧЕК СТЕВАН
+ГРАЧИК СЛАВКА
+ГРАЧИК СТЕВАН
+ГРАЧКО ШАНДОР
+ГРАЧКО ОЛГА
+ГРАЧКО ОЛГА
+ГРАЧКО РОЗАЛИЈА
+ГРАША ЈОСИП
+ГРАШАР АНА
+ГРАШИЋ ВАЛЕНТИН
+ГРАШИЋ ЗДЕНКО
+ГРАШНЕР СОФИЈА
+ГРАЂИН МИЛОШ
+ГРАБ ФЕРЕНЦ
+ГРАБАР ЈОСИПА
+ГРАБАР ЈОСИП
+ГРАБАР МИРКО
+ГРАБЕЖ ИЛЕ
+ГРАБЕЖ ЈОЈА
+ГРАБИЋ СТЕВАН
+ГРАБИЋ УРОШ
+ГРАБОЦИ РАМАДАН
+ГРАБОВАЦ АЦО
+ГРАБОВАЦ ЦВЕТА
+ГРАБОВАЦ ДИМИТРИЈЕ
+ГРАБОВАЦ ЈОВАН
+ГРАБОВАЦ НЕВЕНКА
+ГРАБОВАЦ РАНКО
+ГРАБОВАЦ СИМЕУН
+ГРАБУНЏИЈА ЈУЛИЈАНА
+ГРАДАШЧЕВИЋ ОСМАН
+ГРАДИЋ ЖИВКО
+ГРАДИЋ БОЖИЦА
+ГРАДИЋ ДАНКА
+ГРАДИЋ СПАСОЈЕ
+ГРАДИНЧЕВИЋ АРСЕНИЈЕ
+ГРАДИНА СМИЉКА
+ГРАДИНАЦ АЛЕКСАНДАР
+ГРАДИНАЦ СРЕДОЈЕ
+ГРАДИНАЦ СРЕДОЈЕ
+ГРАДИНАЦ СРЕДОЈЕ
+ГРАДИНАРОВ ДИМИТРИЈЕ
+ГРАДОЈЕВИЋ КАТИЦА
+ГРАДОЈЕВИЋ ЉУБИЦА
+ГРАХЕК НАДА
+ГРАХОВАЦ ЂОРЂЕ
+ГРАХОВАЦ ЂОРЂЕ
+ГРАХОВАЦ БРАНИСЛАВ
+ГРАХОВАЦ ЦВИЈО
+ГРАХОВАЦ ДАНИЈЕЛА
+ГРАХОВАЦ ДРАГАНА
+ГРАХОВАЦ ДРАГИЦА
+ГРАХОВАЦ ДУШАНКА
+ГРАХОВАЦ ДУШАН
+ГРАХОВАЦ ДУШАН
+ГРАХОВАЦ ДУШАН
+ГРАХОВАЦ ГОЈКО
+ГРАХОВАЦ ЈАНКО
+ГРАХОВАЦ ЈОВАН
+ГРАХОВАЦ ЈОВАН
+ГРАХОВАЦ МИОДРАГ
+ГРАХОВАЦ МИРКО
+ГРАХОВАЦ МИРОСЛАВ
+ГРАХОВАЦ НАДА
+ГРАХОВАЦ НИКОЛА
+ГРАХОВАЦ ОБРАД
+ГРАХОВАЦ РАДЕ
+ГРАХОВАЦ РАНКА
+ГРАХОВАЦ СЛАВИЦА
+ГРАХОВАЦ СЛАВКО
+ГРАХОВАЦ СЛАВКО
+ГРАХОВАЦ СМИЉА
+ГРАХОВАЦ СПАСО
+ГРАХОВАЦ ВАСО
+ГРАХОВАЦ ВЕЛИМИР
+ГРАХОВАЦ ЗДЕНКО
+ГРАЈЛИНГ ЕМИЛ
+ГРАНДИЋ МИЈОДРАГ
+ГРАНДИЋ МИЛИЦА
+ГРАНДИЋ РАДОВАН ДР ПРОФ
+ГРАНДИЋ СТОЈАН
+ГРАНИЋ МАРИЈА
+ГРАНИЋ МАРИЈА
+ГРАНИЋ НИКОЛА
+ГРАНУЛА ГОЈКО
+ГРАОЊА ЂУРО
+ГРАОР МИРОСЛАВ
+ГРАОР СЛАВКО
+ГРАОРАЦ ИСИДОР
+ГРАОВАЦ ЂОРЂЕ
+ГРАОВАЦ АОРИКА
+ГРАОВАЦ БЛАЖ
+ГРАОВАЦ БОГДАН
+ГРАОВАЦ БОГДАН
+ГРАОВАЦ БОРИСЛАВ
+ГРАОВАЦ ДУШАН
+ГРАОВАЦ МИЛОШ
+ГРАОВАЦ МИЛОРАД
+ГРАОВАЦ ОЛИВЕРА
+ГРАОВАЦ-ПАДРОВ ЉУБИНКА
+ГРАОВАЦ СЛОБОДАНКА
+ГРАПЧАК ЈОСИП
+ГРАВАРА ДРАГИЦА
+ГРАВАРА НИКОЛА
+ГРАВАРА РАДЕ
+ГРБА КОСТА
+ГРБА МИЛАН
+ГРБА НЕВЕНКА
+ГРБА ВУКОЈИЦА
+ГРБАТИНИЋ МИЛАН
+ГРБАТИНИЋ МИЛОШ
+ГРБАВ ЈОН
+ГРБАВАЦ НЕВЕНКА
+ГРБАВАЦ НИКОЛА
+ГРБИЋ ЖИВАН
+ГРБИЋ ЖИВКО
+ГРБИЋ ЂОРЂЕ МР
+ГРБИЋ ЂУРАЂ
+ГРБИЋ ЂУРО
+ГРБИЋ АНЂЕЛИЈА
+ГРБИЋ АНКА
+ГРБИЋ АНКИЦА
+ГРБИЋ БОШКО
+ГРБИЋ БОГДАНКА
+ГРБИЋ БОРИВОЈЕ
+ГРБИЋ БРАНКО
+ГРБИЋ ЏЕВАД
+ГРБИЋ ДАРИНКА
+ГРБИЋ ДЕСА
+ГРБИЋ ДРАГАН
+ГРБИЋ ДРАГАН
+ГРБИЋ ДРАГАН
+ГРБИЋ ДРАГО
+ГРБИЋ ДРЕНКА
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШАН
+ГРБИЋ ДУШИЦА
+ГРБИЋ ГОЈКО
+ГРБИЋ ГОРАН
+ГРБИЋ ЈОВАНКА
+ГРБИЋ ЈОВАНКА
+ГРБИЋ ЈОВАН
+ГРБИЋ ЈОВАН
+ГРБИЋ ЈОВИЦА
+ГРБИЋ ЈОВО
+ГРБИЋ ЛАЗАР
+ГРБИЋ ЉУБАН
+ГРБИЋ ЉУБИША
+ГРБИЋ МАРИЈА
+ГРБИЋ МИЛАН
+ГРБИЋ МИЛАН
+ГРБИЋ МИЛАН
+ГРБИЋ МИЛЕНА
+ГРБИЋ МИЛЕНА
+ГРБИЋ МИЛЕНКО
+ГРБИЋ МИЛЕНКО
+ГРБИЋ МИЛЕ
+ГРБИЋ МИЛИЋ
+ГРБИЋ МИЛИЦА
+ГРБИЋ МИЛКА
+ГРБИЋ МИЛОШ
+ГРБИЋ МИЛОШ
+ГРБИЋ МИЛОРАД
+ГРБИЋ МИЛОВАН
+ГРБИЋ МИЛОВАН
+ГРБИЋ МИЛУТИН
+ГРБИЋ МИРА
+ГРБИЋ МИРА
+ГРБИЋ МЛАДЕН
+ГРБИЋ НИКОЛА
+ГРБИЋ ОСТОЈА
+ГРБИЋ ПЕТАР
+ГРБИЋ ПЕТАР
+ГРБИЋ ПЕТАР
+ГРБИЋ РАДЕ
+ГРБИЋ РОСА
+ГРБИЋ СЛОБОДАН
+ГРБИЋ СТЕВАН
+ГРБИЋ СТЕВАН
+ГРБИЋ СТЕВО
+ГРБИЋ СВЕТКО
+ГРБИЋ ВАСА ДР
+ГРБИЋ ВЕРА
+ГРБИЋ ВИД
+ГРБИЋ ВОЈИН
+ГРБИЋ ВОЈИСЛАВ
+ГРБИЋ ВУКОСАВА
+ГРБИН МАРИЈА
+ГРБИН РАДОСЛАВ
+ГРБОВАЦ МИХАЉ
+ГРБОВИЋ АЛИЛ
+ГРБОВИЋ ДРАГАН
+ГРБОВИЋ ГАВРИЛО
+ГРБОВИЋ ЈОВАН
+ГРБОВИЋ ЈОВАН
+ГРБОВИЋ МИЛАН
+ГРБОВИЋ МИЛАН
+ГРБОВИЋ МИРЧЕТА
+ГРБОВИЋ МОМЧИЛО
+ГРБОВИЋ МУРАТ
+ГРБОВИЋ МУРАТ
+ГРБОВИЋ РАДИСАВ
+ГРБОВИЋ РУЖИЦА
+ГРБОВИЋ СЛАВКО
+ГРБОВИЋ СМИЉА
+ГРЦЕ АНИЦА
+ГРЦИЋ ЈОВАН
+ГРЦИЋ МИЛИЦА
+ГРЦИЋ НИКОЛА
+ГРЦИЋ ВЕСЕЛИН
+ГРЦОВИЋ ВЕРИЦА
+ГРДИЋ ИВИЦА
+ГРДИЋ ЛУЈКА
+ГРДИЋ МАРА
+ГРДИНИЋ МИРКО
+ГРДИНИЋ СЛОБОДАН
+ГРЕЧ РОЗАЛИЈА
+ГРЕЧЕЛ КАРЛО
+ГРЕЧНИК ЈАНКО
+ГРЕЧНИК МАРИЈА
+ГРЕЧНИК ПАВЛЕ
+ГРЕБЕЛДИНГЕР ЉУБИЦА
+ГРЕБЕЛДИНГЕР ПЕТАР
+ГРЕБЊЕВ РОЗАЛИЈА
+ГРЕБО НЕДЕЉКО
+ГРЕБОВИЋ РАНКО
+ГРЕГЕЦ МАРИЈА
+ГРЕГЕЦ ВИЛИ
+ГРЕГЕЦ ВИЛИ
+ГРЕГЕР ХЕДВИГА
+ГРЕГОР ЈОСИП
+ГРЕГОРИЋ БРАНКО
+ГРЕГОРИЋ ДУШАН
+ГРЕГОРИЋ МИЛАНКА
+ГРЕГОРИН ПЕТАР
+ГРЕГОРОВИЋ АНТОНИЈЕ
+ГРЕГОРОВИЋ ИВАН
+ГРЕГОРОВИЋ ВЛАДИМИР ДИПЛ ИНГ
+ГРЕГУШ АНТАЛ
+ГРЕГУШ ЈАНОШ
+ГРЕГУШ ЛАСЛО
+ГРЕГУШ ПЕТАР
+ГРЕГУРИЋ ИВАН
+ГРЕИСИНГЕР ДАРИНА
+ГРЕИЗЕР ПЕТАР
+ГРЕК САДИК
+ГРЕКС ПАВЕЛ
+ГРЕКУ АДЕМ
+ГРЕКУ ГАНИ
+ГРЕКУ ХАСАН
+ГРЕКУ МУХАМЕР
+ГРЕКУ НЕЗИР
+ГРЕКУ РАМИЗ
+ГРЕКУ САБИТ
+ГРЕКУЛОВИЋ ЈОВАН
+ГРЕКУЛОВИЋ СТАНЧЕ
+ГРГАНОВИЋ ЂУРА
+ГРГАР ЂУРИЦА
+ГРГАР БРАНКА
+ГРГАР ЛАЗАР
+ГРГАР ТОША
+ГРГИЧЕВИЋ ЈУЛИШКА
+ГРГИЋ БОШКО
+ГРГИЋ БОЈАНА
+ГРГИЋ ДРАГОЈЕ
+ГРГИЋ МИЈО
+ГРГИЋ МИЛАН
+ГРГИЋ САВЕТА
+ГРГИЋ СИМО
+ГРГИЋ ВЕРА
+ГРГИЋ ВЕРИЦА
+ГРГИЋ ЗВОНИМИР
+ГРГИНЧЕВИЋ МИХАЕЛА ПРОФЕСОР
+ГРГИНЧЕВИЋ ВЛАДИМИР
+ГРГУР ДУШАН
+ГРГУР РАДОСЛАВ
+ГРГУР ВЛАДА
+ГРГУРЕВИЋ МИРОСЛАВ
+ГРГУРЕВИЋ РАЈКО
+ГРГУРИЋ АНТУН
+ГРГУРИЋ ЈОСИП
+ГРГУРИЋ РУЖИЦА
+ГРГУРОВ СЛОБОДАН
+ГРГУРОВИЋ МИЛОРАД
+ГРИФАТОНГ КАРЛО
+ГРИФАТОНГ ОТО
+ГРИГОРИЈЕВ АЛЕКСАНДАР
+ГРИГОРИЈЕВИЋ НИКОЛА
+ГРИГОРИЈЕВИЋ ПЕТАР
+ГРИЈАК ДАНИЦА
+ГРИЈАК КОСОВКА
+ГРИЈАК МИЛАН
+ГРИЈАКОВИЋ МИЛИЦА
+ГРИЈАКОВИЋ МИЛОШ
+ГРИЛЕЦ СТАНКО
+ГРИЛЕЦ СТАНКО
+ГРИНХУТ ЛАДИСЛАВ
+ГРИСА ПЕТАР
+ГРИСХАБЕР ФРАЊА
+ГРИЗЕЉ КАРЛО
+ГРИЗЕР ПЕТАР
+ГРИЗЕР СТЕВАН
+ГРКАВАЦ МИЛАН
+ГРКАВАЦ МИРОСЛАВ
+ГРКИНИЋ КОСАРА
+ГРКИНИЋ МИЛАН
+ГРКОВИЋ ЖИВАН
+ГРКОВИЋ ЂОРЂЕ
+ГРКОВИЋ ЂУРО
+ГРКОВИЋ АНКА
+ГРКОВИЋ БОЖИДАР
+ГРКОВИЋ БОГОЉУБ
+ГРКОВИЋ БОРИСЛАВ
+ГРКОВИЋ БРАНКО
+ГРКОВИЋ ДАНЕ
+ГРКОВИЋ ДУШАН
+ГРКОВИЋ ДУШАН
+ГРКОВИЋ ГАВРИЛО
+ГРКОВИЋ ЈЕЛЕНА
+ГРКОВИЋ ЈОВАН ДИПЛ ИНГ
+ГРКОВИЋ ЈОВАН
+ГРКОВИЋ ЉИЉАНА
+ГРКОВИЋ МИЛИЦА ДР
+ГРКОВИЋ МИРЈАНА
+ГРКОВИЋ СТОЈАНКА
+ГРКОВИЋ ВЕРА
+ГРКОВИЋ ВОЈИМИР
+ГРКОВИЋ ВОЈИН
+ГРКОВСКИ ПАНТА
+ГРЛИЋ ЂОРЂЕ
+ГРЛИЋ ЉУБИНКО
+ГРЛИЋ МИЛЕНКО
+ГРЛИЦА ЖЕЉКО
+ГРЛИЦА БОСИЉКА
+ГРЛИЦА МИЛЕВА
+ГРЛИЦА МИЛОВАН
+ГРЛИЦА СТАНКО
+ГРЛИЦА ВОЈИН
+ГРЉЕВИЋ МИРЈАНА
+ГРМАШ ЂУРО
+ГРМАШ БРАНКО
+ГРМОШ ПРЕДРАГ
+ГРМУША ЖИВКО
+ГРМУША ЂУРО
+ГРМУША МИЛАН
+ГРМУША МИЛАН
+ГРМУША РАДЕ
+ГРМУША СЛАВКО
+ГРМУША СМИЉКА
+ГРМУША СТОЈАН
+ГРМУША ВЕЛКО
+ГРЊА ЂУРА
+ГРЊА АНДРИЈА
+ГРЊА АНКА
+ГРЊА-АСАНИ ЉУМНИЈА
+ГРЊА ДУШАН
+ГРЊА ЈАНКО
+ГРЊА ЈАН
+ГРЊА ЈОВАН
+ГРЊА ЈОВАН
+ГРЊА ЈОВАН
+ГРЊА ЈОВАН
+ГРЊА ЈУРАЈ
+ГРЊА ЛАСЛО
+ГРЊА ЉУДЕВИТ
+ГРЊА МАРИЈА
+ГРЊА ОСКАР
+ГРЊА СОФИЈА
+ГРЊА СТЕВАН
+ГРЊА СТЕВАН
+ГРЊА СТЕВАН
+ГРЊА ВЛАДИМИР
+ГРОШЕК ЗВОНИМИР
+ГРОШКО МАРИЈА
+ГРОМ ЦИРИЛ
+ГРОМИЛИЋ МИЛОРАД
+ГРОС ЂОРЂЕ
+ГРОС ИВАН
+ГРОС ЛАДИСЛАВ
+ГРОЗДАНИЋ ЂОРЂЕ
+ГРОЗДАНИЋ ЕНИНКА
+ГРОЗДАНИЋ ЈОСИП
+ГРОЗДАНИЋ МИЛАН
+ГРОЗДАНИЋ МИЛАН
+ГРОЗДАНОВ СЛАВКО
+ГРОЗДАНОВСКИ ДАМЈАН
+ГРОЗДАНОВСКИ МИЛЕ
+ГРОЗДАНОВСКИ ПЕТАР
+ГРОЗДИЋ БОШКО
+ГРОЗДИЋ БОГДАН
+ГРОЗДИЋ ДЕСАНКА
+ГРОЗДИЋ ДОБРИВОЈ
+ГРОЗДИЋ ДУШАН
+ГРОЗДИЋ ЈАСМИНА
+ГРОЗДИЋ ЈОВАН
+ГРОЗДИЋ ЈОВАН
+ГРОЗДИЋ ЈОВАН
+ГРОЗДИЋ КУЗМАН
+ГРОЗДИЋ ЛАЗАР
+ГРОЗДИЋ ЉУБИША
+ГРОЗДИЋ ЉУБОМИР
+ГРОЗДИЋ МИЛАН
+ГРОЗДИЋ ПЕТАР
+ГРОЗДИЋ СТЕВАН
+ГРОЗДИЋ ВЕСНА
+ГРОЗДИЋ ЗДРАВКО
+ГРОЗДИЋ ЗОРАН
+ГРОЗДИЋ ЗОРИЦА
+ГРОЗГУТ ТИБОР
+ГРУБА ДОРУ
+ГРУБА ТИБЕРИЈЕ
+ГРУБАЧ ГОРДАНА
+ГРУБАЧ МАКСА
+ГРУБАЧ МОМЧИЛО
+ГРУБАЧ СТАНКА
+ГРУБАЧ ТАНАСИЈЕ
+ГРУБАЧИЋ ГОЈКО
+ГРУБАНОВ ДОБРИВОЈ
+ГРУБАНОВ ДУШАНКА
+ГРУБАНОВ НОВАК
+ГРУБАНОВ ЗАХАРИЈЕ
+ГРУБЕША НИКОЛА
+ГРУБЕШИЋ ДРАГАН
+ГРУБЕШИЋ ДУШАН
+ГРУБЕШИЋ МЕЛАНИЈА
+ГРУБЕР ЕДУАРД
+ГРУБЕР ЕМИЛ
+ГРУБЕР ЕВАЛД
+ГРУБЕР ФРАЊА
+ГРУБЕР РУДОЛФ
+ГРУБЕТИЋ ОЛГА
+ГРУБИША АНЂЕЛО
+ГРУБИШИЋ МИРЈАНА
+ГРУБИШИЋ МИРКО
+ГРУБИШИЋ НИКОЛА
+ГРУБИЋ ЖАРКО
+ГРУБИЋ ЖАРКО
+ГРУБИЋ АНКА
+ГРУБИЋ МИЛАН
+ГРУБИЋ НИКОЛА
+ГРУБИН МИЛАН
+ГРУБИН МИРОСЛАВ
+ГРУБЈЕШИЋ БРАНКО
+ГРУБЈЕШИЋ МИЛЕНКО
+ГРУБЈЕШИЋ МИРКО
+ГРУБЈЕШИЋ СТЕВО
+ГРУБОР АДАМ
+ГРУБОР БРАНКО
+ГРУБОР ЕМА
+ГРУБОР ЈЕФТО
+ГРУБОР-ЈОЈИЋ СЛАВИЦА
+ГРУБОР ЈОВО
+ГРУБОР ЛАЗАР
+ГРУБОР ЛАЗО
+ГРУБОР ЉУБОМИР
+ГРУБОР МИЉАНА
+ГРУБОР МИЛОШ
+ГРУБОР НЕЂО
+ГРУБОР НЕДЕЉКО
+ГРУБОР НЕВЕНА
+ГРУБОР НИКОЛА
+ГРУБОР НИКОЛА
+ГРУБОР ОЛГА
+ГРУБОР РАДЕ
+ГРУБОР СЛОБОДАН
+ГРУБОР СРЕТО
+ГРУБОР ВУЈО
+ГРУБОР ЗДРАВКО
+ГРУБОРОВИЋ МИЛЕ
+ГРУБОВИЋ ИЛИЈА
+ГРУЕСКУ-ЋИРИШАН ДЕЛИЈА
+ГРУИЧИЋ ДРАГОЉУБ
+ГРУИК ВЕРОНИКА
+ГРУЈЧИЋ НИКОЛА
+ГРУЈАНАЦ МИЛАН
+ГРУЈЕВ ОГЊАН ДИПЛ ИНГ
+ГРУЈИЧ СЛОБОДАН
+ГРУЈИЧИЋ БИЉАНА
+ГРУЈИЧИЋ ЈОВА
+ГРУЈИЧИЋ МАРИНКО
+ГРУЈИЧИЋ МИА
+ГРУЈИЧИЋ МИЛИЦА
+ГРУЈИЧИЋ МИЛОЈЕ
+ГРУЈИЧИЋ НЕНАД
+ГРУЈИЧИЋ ПЕТАР
+ГРУЈИЧИЋ ПРЕДРАГ
+ГРУЈИЧИЋ РАДОМИР
+ГРУЈИЧИН СТАНОЈЕ
+ГРУЈИЧКОВ ЈОВАН
+ГРУЈИЧКОВ МИЛКА
+ГРУЈИЋ ЖИВКА
+ГРУЈИЋ ЖИВОРАД
+ГРУЈИЋ ЂЕНА
+ГРУЈИЋ ЂЕНИСИЈЕ
+ГРУЈИЋ ЂОРЂЕ
+ГРУЈИЋ ЂУРЂИЦА
+ГРУЈИЋ ЂУРА
+ГРУЈИЋ ЂУРА
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АЛЕКСАНДАР
+ГРУЈИЋ АНЂЕЛКО
+ГРУЈИЋ АНДРИЈА
+ГРУЈИЋ АНИЦА
+ГРУЈИЋ БОЖИДАР
+ГРУЈИЋ БОЖИДАР
+ГРУЈИЋ БОРИСЛАВ
+ГРУЈИЋ БОРИВОЈ
+ГРУЈИЋ БОСИЉКА
+ГРУЈИЋ БРАНИСЛАВ
+ГРУЈИЋ БРАНИСЛАВ
+ГРУЈИЋ БРАНКО
+ГРУЈИЋ ЦВИЈЕТИН
+ГРУЈИЋ ЦВИЈО
+ГРУЈИЋ ДАНИЦА
+ГРУЈИЋ ДИМИТРИЈЕ
+ГРУЈИЋ ДРАГИЦА
+ГРУЈИЋ ДУШАН
+ГРУЈИЋ ДУШАН
+ГРУЈИЋ ДУШАН
+ГРУЈИЋ ФРАНЦИШКА
+ГРУЈИЋ ГАВРА
+ГРУЈИЋ ГАВРИЛО
+ГРУЈИЋ ГОРАН
+ГРУЈИЋ ГОРИЦА
+ГРУЈИЋ ГРУЈА
+ГРУЈИЋ ИЛИНКА
+ГРУЈИЋ ИВАН ДИПЛ ИНГ
+ГРУЈИЋ ИВАНКА
+ГРУЈИЋ ЈАЊА
+ГРУЈИЋ ЈЕЛИЦА
+ГРУЈИЋ ЈЕЛИСАВЕТА
+ГРУЈИЋ ЈЕЛКА ДР
+ГРУЈИЋ ЈОВАНКА
+ГРУЈИЋ ЈОВАНКА
+ГРУЈИЋ ЈОВАН
+ГРУЈИЋ ЈОВАН
+ГРУЈИЋ ЈОВАН
+ГРУЈИЋ ЈОВАН
+ГРУЈИЋ ЈОВИЦА
+ГРУЈИЋ ЈУЛКА
+ГРУЈИЋ КОСТА ДР
+ГРУЈИЋ КОСТА ДР
+ГРУЈИЋ ЛАЗАР
+ГРУЈИЋ ЛЕНКА
+ГРУЈИЋ ЉИЉАНА
+ГРУЈИЋ ЉУБИЦА
+ГРУЈИЋ ЉУБОМИР
+ГРУЈИЋ ЉУБО
+ГРУЈИЋ МАРИЈА
+ГРУЈИЋ МАРИЈА
+ГРУЈИЋ МАРИЈА
+ГРУЈИЋ МАРИЈА
+ГРУЈИЋ МАРИНА
+ГРУЈИЋ МИХАЈЛО
+ГРУЈИЋ МИЛАН
+ГРУЈИЋ МИЛАН
+ГРУЈИЋ МИЛАН
+ГРУЈИЋ МИЛЕНА
+ГРУЈИЋ МИЛЕНКО
+ГРУЈИЋ МИЛЕ
+ГРУЈИЋ МИЛИЦА
+ГРУЈИЋ МИЛОШ
+ГРУЈИЋ МИЛОШ
+ГРУЈИЋ МИЛОРАД
+ГРУЈИЋ МИЛОРАД
+ГРУЈИЋ МИРЈАНА
+ГРУЈИЋ МИРОСЛАВ ДИПЛ ИНГ
+ГРУЈИЋ МИРОСЛАВ
+ГРУЈИЋ МИТАР
+ГРУЈИЋ НАДА ДР ЛЕКАР
+ГРУЈИЋ НАДА
+ГРУЈИЋ НАДА
+ГРУЈИЋ НЕДЕЉКО
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НИКОЛА
+ГРУЈИЋ НОВАК
+ГРУЈИЋ ПАВЛЕ
+ГРУЈИЋ ПЕТАР
+ГРУЈИЋ РАДЕНКО
+ГРУЈИЋ РАДЕ
+ГРУЈИЋ РАДИША
+ГРУЈИЋ РАДИНКА
+ГРУЈИЋ РАДИВОЈ
+ГРУЈИЋ РАДИВОЈ
+ГРУЈИЋ РАДМИЛА
+ГРУЈИЋ РАДОЈИЦА
+ГРУЈИЋ РАДОВАН
+ГРУЈИЋ РУЖИЦА
+ГРУЈИЋ САЊА
+ГРУЈИЋ САВА
+ГРУЈИЋ САВА
+ГРУЈИЋ СИНИША
+ГРУЈИЋ СЛАВИША
+ГРУЈИЋ СЛАВИЦА
+ГРУЈИЋ СЛАВКА
+ГРУЈИЋ СЛАВКО
+ГРУЈИЋ СЛОБОДАН ДИПЛ ИНГ
+ГРУЈИЋ СЛОБОДАН
+ГРУЈИЋ СЛОБОДАН
+ГРУЈИЋ СЛОБОДАН
+ГРУЈИЋ СЛОБОДАН
+ГРУЈИЋ СМИЉАНА
+ГРУЈИЋ СМИЉА
+ГРУЈИЋ СМИЉА
+ГРУЈИЋ СРЂАН
+ГРУЈИЋ СТЕВАН
+ГРУЈИЋ СТЕВАН
+ГРУЈИЋ СТЕВАН
+ГРУЈИЋ СТЕВАН
+ГРУЈИЋ СТОЈАН ДР
+ГРУЈИЋ СВЕТОЗАР
+ГРУЈИЋ СВЕТОЗАР
+ГРУЈИЋ ТАТЈАНА
+ГРУЈИЋ ВЕЛИМИР
+ГРУЈИЋ ВЕРИЦА
+ГРУЈИЋ ВЕСЕЛИН
+ГРУЈИЋ ВЕСНА
+ГРУЈИЋ ВОЈИСЛАВ
+ГРУЈИЋ ЗДРАВКО
+ГРУЈИЋ ЗЛАТИЦА
+ГРУЈИЋ ЗЛАТИЦА
+ГРУЈИН ДАНИЦА
+ГРУЈИН ДУШАН
+ГРУЈИН ЉУБИЦА
+ГРУЈИН МИЛАН
+ГРУЈИН МИЛОШ
+ГРУЈИН НАДА
+ГРУЈИН ОЛГА
+ГРУЈИН ПЕТАР
+ГРУЈИН РАДОСЛАВ
+ГРУЈИН САША
+ГРУЈИН СМИЉА
+ГРУЈИН СПАСОЈЕ
+ГРУЈИН ТЕРЕЗА
+ГРУЈИН ЗОРАН
+ГРУЈИНОВИЋ ДРАГУТИН
+ГРУЈИНОВИЋ ЗОРКА
+ГРУЈОВИЋ БРАНИСЛАВ
+ГРУЈОВИЋ МИХАЈЛО
+ГРУЈОВСКИ ЛАЗАР
+ГРУЛОВИЋ РАДОЈКА
+ГРУЛОВИЋ ЗДЕНКО
+ГРУЛОВИЋ ЗДРАВКА
+ГРУЛОВИЋ ЗДРАВКО
+ГРУНЧИЋ ЈОВАН
+ГРУНИК ВЛАДИМИР ДР
+ГУША НИКОЛА
+ГУША ПРЕДРАГ
+ГУШАВАЦ ЗОРАН
+ГУШИЋ БОГДАН
+ГУШИЋ БОРИС
+ГУШИЋ МАНОЈЛО
+ГУШИЋ МАНОЈЛО
+ГУШИЋ МИЛЕНКА
+ГУШИЋ РАДЕНКО
+ГУШИЋ РАДЕНКО
+ГУШИЋ УГЉЕША
+ГУШИЋ ВАСИЉКА
+ГУЖАЛИЋ МАРИЈА
+ГУЖАЛИЋ СТЈЕПАН
+ГУЖАЛИЋ ВЛАДИМИР
+ГУЖАЛИЋ ЗВОНИМИР
+ГУЖЕЛА ЛАСЛО
+ГУЖВАЊ ИВИЦА
+ГУЖВИЦА ЂОРЂЕ
+ГУЖВИЦА ЂОРЂЕ
+ГУЖВИЦА БРАНИСЛАВ
+ГУЖВИЦА МИЛАН
+ГУЖВИЦА МИЛАН
+ГУЖВИЦА МИРКО
+ГУЖВИЦА НИКОЛА
+ГУЖВИЦА СТЕВО
+ГУЖВИЦА ЗОРАН
+ГУБАШ АНЂЕЛИЈА
+ГУБАШ МИРОСЛАВ
+ГУБАШ ВЛАДИМИР
+ГУБАШ ЗАГОРКА
+ГУБАНДА БАРБАРА
+ГУБАНДА ЛАДИСЛАВ
+ГУБЕРИНА ДУШАН
+ГУБЕРИНА СЛОБОДАН
+ГУБЕРИНИЋ ЉУБИЦА
+ГУБЕРНОВ ЈУЛИЈАНА
+ГУБИЋ МИРКО
+ГУБИЦА ЈОВАН
+ГУБИК ШАНДОР
+ГУБИК ШАНДОР
+ГУБИК КАРЛО
+ГУБИК КАТАРИНА
+ГУБИК СТЕВАН
+ГУЦ СТЕВАН
+ГУЦИЈАН СТЕВА
+ГУЦУ МИРЈАНА
+ГУЦУЉ ЈЕЛЕНА
+ГУЦУЉ МАРГИТА
+ГУЦУЉ ВЕРА
+ГУЦУЊА ЈОВАН
+ГУЦУЊА МИЛАН
+ГУЦУЊА МИЛОРАД
+ГУЦУЊА МИЛОРАД
+ГУЦУНСКИ ЖИВКА
+ГУЦУНСКИ ЂОРЂЕ
+ГУЦУНСКИ БОЖИДАР
+ГУЦУНСКИ БОРИСЛАВ
+ГУЦУНСКИ БРАНИСЛАВ
+ГУЦУНСКИ ИВАНКА
+ГУЦУНСКИ ИВАНКА
+ГУЦУНСКИ ЈЕЛЕНА
+ГУЦУНСКИ ЈОВАН
+ГУЦУНСКИ МАРИЈА
+ГУЦУНСКИ НАДА
+ГУЦУНСКИ ПЕРСИДА
+ГУЦУНСКИ РАДЕ
+ГУЦУНСКИ СИМА
+ГУДАЉ МАРТА
+ГУДАЛОВИЋ МОМИР
+ГУДАЛОВИЋ РАДМИЛА
+ГУДЕЉ ЂОРЂЕ
+ГУДЕЉ БРАНИСЛАВ ДИПЛ ИНГ
+ГУДЕЉ ЈОВАН
+ГУДЕЉ МАРИЈА
+ГУДЕЉ МИЛАН
+ГУДЕЉ МИЛЕНА
+ГУДЕЉ МОМЧИЛО
+ГУДЕЉ НЕДЕЉКА
+ГУДЕЉ САВА ДР
+ГУДОВИЋ ДРАГОМИР
+ГУДОВИЋ ПАВЛЕ
+ГУДОВИЋ РАДМИЛА
+ГУДОВИЋ СТЕВАН
+ГУДУРИЋ АЛЕКСАНДАР
+ГУДУРИЋ АНЂЕЛКА ДР
+ГУДУРИЋ БРАНИМИР ДР
+ГУДУРИЋ ДЕЈАН
+ГУДУРИЋ ЈОВАН
+ГУДУРИЋ СВЕТИСЛАВ
+ГУДУРИЋ ВАСА
+ГУДУРИЋ ЗОРАН
+ГУЕЛМИНО ШАНДОР
+ГУЕЛМИНО ФРИЂЕШ
+ГУГА ВЕРА
+ГУГА ВЕРА
+ГУГИЋ СИНИША
+ГУГЛЕТА СРБИСЛАВ
+ГУКОДИ МЛАДЕН
+ГУЛАЧИ ЈОСИП
+ГУЛАЋИ ЉУБИНКА
+ГУЛАН БОШКО
+ГУЛАН БРАНИСЛАВ
+ГУЛАН ВИДОСАВА
+ГУЛД ВАЛЕРИЈА
+ГУЛЕВИЋ ТАТЈАНА
+ГУЛЕВИЋ ВЛАДИМИР ДР ЛЕКАР
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ ДИМЧЕ
+ГУЛЕВСКИ МИХАЈЛО
+ГУЛЕВСКИ САША
+ГУЛИЧ ИМРЕ
+ГУЛИЋ СТАНКО
+ГУЛИЋ ВЕСНА
+ГУЛИН МАРИЦА
+ГУЛИН ЗЛАТКО
+ГУЉАШ МАРИЈА
+ГУЉАШ ТЕРЕЗИЈА
+ГУЉАШ ВЕСНА
+ГУЉПА МИЛАН
+ГУЉПА САВА
+ГУНЕК МАРИЈА
+ГУНЕК МАТЕ
+ГУНЕК ТОМА
+ГУНИЋ МИЛЕНА
+ГУЊЕВИЋ МИЛЕ
+ГУЊЕВИЋ НЕВЕНКА
+ГУРАН ТАМАШ
+ГУРЈАНОВ ЖАРКО
+ГУРЈАНОВ БЛАГОЈЕ
+ГУРЈАНОВ ЈЕЛИЦА
+ГУРЈАНОВ ВАСА
+ГУРОВИЋ БОЖИДАР
+ГУСИЋ МИЛЕВА
+ГУСМАН ЂОРЂЕ ДР ЛЕКАР
+ГУСМАН ДРАГИЦА
+ГУСМАН ГЕРХАРД
+ГУСМАН ХИЛДА
+ГУСМАН ИМРЕ
+ГУТ ЈАНКО
+ГУТ ЈОВАН
+ГУТ НАТАЛИЈА
+ГУТАИ ЈОЛАН
+ГУТАИ МИХАЉ
+ГУТАЈИ ИЛЕШ
+ГУТАЉ МИЛОРАД
+ГУТЕША ЂУРО
+ГУТЕША МИРКО
+ГУТЕША НИКОЛА
+ГУТЕША ВОЈИСЛАВ
+ГУТИ ЖОЛТ
+ГУТИЋ ШПИРО
+ГУТИЋ ГОРАН
+ГУТМАН АЛЕКСАНДАР
+ГУТМАН ДАРИНКО
+ГУТОВИЋ АНЂЕЛКО
+ГУТОВИЋ ДАНИЕЛА
+ГУТОВИЋ МИЛЕНКО
+ГУТОВИЋ РАДЕ
+ГУТОВИЋ РИСТО
+ГУТОВИЋ СИНИША
+ГУТОВИЋ СНЕЖАНА
+ГУТОВИЋ ЗОРАН
+ГУТВАЈН АДАМ
+ГУТВАЈН АДАМ
+ГУТВАЈН ЕЛИЗАБЕТА
+ГУТВАЈН ЕВА
+ГУЗИЈАН ЈОВО
+ГУЗИЈАН МИЛАН
+ГУЗИЈАН НИКОЛА
+ГУЗИНА ЧЕДОМИР
+ГУЗИНА ЉУБИСАВ
+ГУЗИНА МИХАЈЛО
+ГУЗИНА МИЛОРАД
+ГУЗИНА МИЛОРАД
+ГУЗИНА МИЛОСАВ ДР
+ГУЗИНА ВЛАДИМИР
+ГУЗИНА ВОЈИСЛАВ
+ГУЗИНА ВУКАШИН
+ГВЕРИЋ БОРИВОЈ
+ГВЕРИЋ СНЕЖАНА
+ГВЕРО ЛАЗО
+ГВЕРО МИРА
+ГВОЖЂАН БОРИСЛАВА
+ГВОЖЂАН МИХАЈЛО
+ГВОЖЂАН РАДОВАН
+ГВОИЋ БРАНКО
+ГВОИЋ МИЛАН
+ГВОИЋ ВАЛЕРИЈА
+ГВОЈИЋ БОРИСЛАВ
+ГВОЈИЋ МИЛАН
+ГВОЈИЋ СТАНКО
+ГВОЈИЋ СТЕВАН
+ГВОКА НАДА
+ГВОЗДЕН БОСИЉКА
+ГВОЗДЕН БРАНКО
+ГВОЗДЕН СРЕТО
+ГВОЗДЕН ВЛАДИМИР
+ГВОЗДЕНАЦ ЖИВКО
+ГВОЗДЕНАЦ БОРА
+ГВОЗДЕНАЦ БОРА
+ГВОЗДЕНАЦ БОРКА
+ГВОЗДЕНАЦ ДРАГОЉУБ
+ГВОЗДЕНАЦ ДУШАН
+ГВОЗДЕНАЦ РАЈКО
+ГВОЗДЕНАЦ СНЕЖАНА
+ГВОЗДЕНОВ ЈОВАН
+ГВОЗДЕНОВ МИЛАН
+ГВОЗДЕНОВИЋ ЖИВОРАД
+ГВОЗДЕНОВИЋ ЂОРЂЕ
+ГВОЗДЕНОВИЋ ЂУРО
+ГВОЗДЕНОВИЋ БОЖО
+ГВОЗДЕНОВИЋ БРАНКО
+ГВОЗДЕНОВИЋ БРАНКО
+ГВОЗДЕНОВИЋ ДЕЈАН
+ГВОЗДЕНОВИЋ ДРАГИЊА
+ГВОЗДЕНОВИЋ ДУШАН ДР
+ГВОЗДЕНОВИЋ ДУШАН
+ГВОЗДЕНОВИЋ ЕМИЛИЈА
+ГВОЗДЕНОВИЋ ЉИЉАНА
+ГВОЗДЕНОВИЋ ЉУБО
+ГВОЗДЕНОВИЋ МИЋО
+ГВОЗДЕНОВИЋ МИЛИВОЈЕ
+ГВОЗДЕНОВИЋ МИЛОШ
+ГВОЗДЕНОВИЋ МИРКО
+ГВОЗДЕНОВИЋ МИРОСЛАВ
+ГВОЗДЕНОВИЋ МИРОСЛАВ
+ГВОЗДЕНОВИЋ НИКОЛА
+ГВОЗДЕНОВИЋ ПЕТАР
+ГВОЗДЕНОВИЋ РАЈКО
+ГВОЗДЕНОВИЋ РАЈКО
+ГВОЗДЕНОВИЋ РАЈКО
+ГВОЗДЕНОВИЋ СТЕВО
+ГВОЗДЕНОВИЋ-ТОДОРОВИЋ ЗАГОРКА
+ГВОЗДЕНОВИЋ-ТОДОРОВИЋ ЗАГОРКА
+ГВОЗДЕНОВИЋ ВИДА
+ГВОЗДЕНОВИЋ ВИТОМИР
+ГВОЗДЕНОВИЋ ВЛАДА
+ГВОЗДЕНОВИЋ ВЛАДА
+ГВОЗДЕНОВИЋ ЗОРИЦА
+ГВОЗДИЋ ЂОРЂЕ
+ГВОЗДИЋ МИЛАН
+ХАШОВИЋ АНДРИЈА
+ХАШОВИЋ ИМРЕ
+ХАЂИНАЦ БРАНИСЛАВ
+ХАБАШ ЗОРАН
+ХАБАЈЕЦ ЉУБИЦА
+ХАБЕК ЖЕЉКО
+ХАБЕНШУС МИЛЕНКО
+ХАБЕНШУС МИЛЕНКО
+ХАБИЈАН ФРАЊА
+ХАБИЈАН ВЕСНА
+ХАБИЈАНЕЦ ТИХОМИР
+ХАБОР ЈАН
+ХАБРАМ АРАНКА
+ХАБРАМ КАРОЉ
+ХАБУДА ЈОСИП
+ХАБУДА ВАЛЕНТИН
+ХАЦОПУЛОС ЂОРЂЕ
+ХАЦОПУЛОС НАДА
+ХАЏИ АЛЕКСАНДАР
+ХАЏИ КОСТА АДВОКАТ
+ХАЏИ-МАНОВ ЉУПЧО
+ХАЏИ-ПАВЛОВИЋ ОЛГА
+ХАЏИ РАМАДАН
+ХАЏИЋ БОСИЉКА
+ХАЏИЋ ГОРАНКА
+ХАЏИЋ ИБРАХИМ
+ХАЏИЋ ИСМЕТ
+ХАЏИЋ ЛАЗАР
+ХАЏИЋ ЛАЗАР
+ХАЏИЋ МИЛАН ДР
+ХАЏИЋ МИЛЕВА
+ХАЏИЋ МОНИКА
+ХАЏИЋ МУХАРЕМ
+ХАЏИЋ НАДА
+ХАЏИЋ ОЛГА ДР
+ХАЏИЋ ПАВЛЕ
+ХАЏИЋ РАДИВОЈ
+ХАЏИЋ СЛАВУЈ
+ХАЏИЋ ВЛАДИМИР
+ХАЏИАХМЕТОВИЋ РАСИМ
+ХАЏИАРСИЋ ДОБРИВОЈЕ
+ХАЏИБАБИЋ ДРАГАН
+ХАЏИБАБИЋ РАДОМИР
+ХАЏИБАБИЋ РАДОМИР
+ХАЏИБАБИЋ ЗОРИЦА
+ХАЏИХАСАНОВИЋ РАДМИЛА
+ХАЏИВУКОВИЋ СТЕВАН ДР ПРОФ
+ХАЏОВИЋ ЈЕЛИСАВЕТА
+ХАЏОВИЋ РАТКО
+ХАДАДИ СМИЉА
+ХАДИК АДРИЕН
+ХАДИК ЈОЖЕФ
+ХАДНАЂ ГИЗЕЛА
+ХАДНАЂ ТЕРЕЗА
+ХАДНАЂ ВЕРА
+ХАДНАЂ ВЕРОНИКА
+ХАДНАЂЕВ АРСЕН
+ХАДНАЂЕВ ДУШАН ДР
+ХАДНАЂЕВ ДУШАН
+ХАДНАЂЕВ ИСИДОР
+ХАДНАЂЕВ МИОДРАГ
+ХАДНАЂЕВ МИРКО
+ХАДНАЂЕВ СТАНИСЛАВ
+ХАДНАЂЕВ СТЕВАН
+ХАДНАЂЕВ СТОЈАН
+ХАИН БРАНИСЛАВ
+ХАИН ЗОРИЦА
+ХАЈЧУНК ЈОЖЕФ
+ХАЈЧУНК МИРКО
+ХАЈАШ ЈЕЛИСАВЕТА
+ХАЈДАРЕВИЋ ОРХАН
+ХАЈДАРПАШИЋ ЕСАД
+ХАЈДЕР ЂОРЂЕ
+ХАЈДЕР ДРАГАН
+ХАЈДЕР ЛУКА
+ХАЈДЕР МАРИЦА
+ХАЈДЕР МАРКО
+ХАЈДЕР МИЛОШ
+ХАЈДЕР РАДЕ
+ХАЈДЕР РАЈКО
+ХАЈДЕР СТОЈАНКА
+ХАЈДЕР ВЕСНА
+ХАЈДЕР ЗОРАН
+ХАЈДИЋ АНЂЕЛКО
+ХАЈДИН БОГДАН
+ХАЈДИН СЛАВКО
+ХАЈДУ АНА
+ХАЈДУ АНДРИЈА
+ХАЈДУ АНТАЛ
+ХАЈДУ ФЕРЕНЦ
+ХАЈДУ-ГРАЈЛАХ ЕМА
+ХАЈДУ ИЛОНКА
+ХАЈДУ ИРЕНА
+ХАЈДУ ЈОЖЕФ
+ХАЈДУ ЈОЛИКА
+ХАЈДУ ЈОСИП
+ХАЈДУ КАТИЦА
+ХАЈДУ КЛАРА
+ХАЈДУ ЛАЈОШ
+ХАЈДУ ЛАСЛО
+ХАЈДУ ЉУДЕВИТ
+ХАЈДУ МАРИЈА
+ХАЈДУ ОТО
+ХАЈДУ ПАВЛЕ
+ХАЈДУ СТЕВАН
+ХАЈДУК ЂОРЂЕ
+ХАЈДУК ИРИНА
+ХАЈДУК ЈАНКО
+ХАЈДУКОВИЋ АРСЕН
+ХАЈДУКОВИЋ БОШКО
+ХАЈДУКОВИЋ БОГДАН
+ХАЈДУКОВИЋ ДЕСАНКА
+ХАЈДУКОВИЋ ДУШАН
+ХАЈДУКОВИЋ ЈОВАНКА
+ХАЈДУКОВИЋ ЉИЉАНА
+ХАЈДУКОВИЋ МИЛАНКА
+ХАЈДУКОВИЋ МИЛАН
+ХАЈДУКОВИЋ НАДЕЖДА
+ХАЈДУКОВИЋ ОТО
+ХАЈДУКОВИЋ РАДОСЛАВ ДИПЛ ИНГ
+ХАЈДУКОВИЋ СМИЉА
+ХАЈНАЛ АНТАЛ
+ХАЈНАЛ ГАБРИЈЕЛА
+ХАЈНАЛ ИВАН
+ХАЈНАЛ ЛАСЛО
+ХАЈНАЛ ЉУБИЦА
+ХАЈНАЛ МАРИЈА
+ХАЈНАЛ НИКОЛА
+ХАЈНЦ ЂОРЂЕ
+ХАЈНЦ ЈОСИП
+ХАЈНЦ ЈОВАН
+ХАЈНЦ ЗЛАТА
+ХАЈТФОГЕЛ ВЛАДА
+ХАЈТФОГЕЛ ВЛАДИСЛАВ
+ХАЈТЛ ИВАН
+ХАЈВАЗ РАЈКО
+ХАЈЗЛЕР ЂОРЂЕ
+ХАЈЗЛЕР ДУШАН
+ХАЈЗЛЕР ЈОВАН
+ХАКАЧ МАТИЈА
+ХАКЕР ИВАН
+ХАКЕР ТЕРЕЗА
+ХАЛАШ ЗУЗАНА
+ХАЛАШИ ЂОРЂЕ
+ХАЛАШИ ЕТЕЛКА
+ХАЛАШИ-КИШ ФРАНКА
+ХАЛАШИ РУЖА ДР ИНГ
+ХАЛАИ ИМРЕ
+ХАЛАИ МАРИЈА
+ХАЛАИ ПЕТАР
+ХАЛАИ САБОЛЧ
+ХАЛАПИ ДРАГИЦА
+ХАЛАПИ ИРЕНА
+ХАЛАПИ ИВАН
+ХАЛАС ШАНДОР
+ХАЛАС ФРАЊА
+ХАЛАС МАРИЈА
+ХАЛАВАЊА ЖЕЉКО
+ХАЛАВАЊА ЉУБАН
+ХАЛАВАЊА МИЛАН
+ХАЛАВАЊА РАДЕ
+ХАЛАВАЊА СТЕВА
+ХАЛЕР СТЕВАН
+ХАЛИЛОВИЋ МУХАРЕМ
+ХАЛИМ СЕФЕР
+ХАЛУПКА ЈОЖЕФ ДР
+ХАМ АЛЕКСАНДАР
+ХАМУ МИХАЉ
+ХАМЗИЋ МИЛЕНА
+ХАН СОФИЈА
+ХАНЦКО ЈОЖЕФ ДР
+ХАНЦКО ЈОЖЕФ ДР
+ХАНДА КАТИЦА
+ХАНГ МАТЕЈ
+ХАНГ ВЛАТКО
+ХАНГА АНТУН
+ХАНГА АНТУН
+ХАНГА МАРИЈА
+ХАНГОВСКИ АНДРИЈА
+ХАНСКО ЈОСИП
+ХАНСКО СТЕВАН
+ХАНУШИЋ СЕАД
+ХАРАЧИЋ ЏЕМАЛ
+ХАРАЧИЋ ЉУБИЦА
+ХАРАК ПАВЛЕ
+ХАРАМБАШИЋ БОЖАНА
+ХАРАМИЈА МАРИЈА
+ХАРАНГОЗО ШАНДОР
+ХАРАНГОЗО ШАНДОР
+ХАРАНГОЗО ШАРИКА
+ХАРАНГОЗО БАЛИНТ
+ХАРАНГОЗО БОШКО
+ХАРАНГОЗО ЕРЖЕБЕТ
+ХАРАНГОЗО ЕРЖЕБЕТ
+ХАРАНГОЗО ИШТВАН
+ХАРАНГОЗО ИМРЕ
+ХАРАНГОЗО-ЈЕГРИШКИ МАРИЈА
+ХАРАНГОЗО КАРОЉ
+ХАРАНГОЗО-ТОРИ ЖУЖАНА
+ХАРАНГОЗО-ТОРИ ЂУРА
+ХАРАНГОЗО-ТОРИ БОЖИДАР
+ХАРАНГОЗО-ТОРИ ИРИНА
+ХАРАНГОЗО-ТОРИ ИВАН
+ХАРАНГОЗО-ТОРИ ЈОАКИМ
+ХАРАНГОЗО-ТОРИ ЈОВАН
+ХАРАНГОЗО-ТОРИ ЈОВАН
+ХАРАНГОЗО-ТОРИ ЉУБИЦА
+ХАРАНГОЗО-ТОРИ НЕСТОР
+ХАРАНГОЗО-ТОРИ НИКОЛА
+ХАРАНГОЗО-ТОРИ СИЛВЕСТЕР
+ХАРАНГОЗО-ТОРИ СТОЈАНКА
+ХАРАНГОЗО-ТОРИ ВЕСНА
+ХАРАНГОЗО-ТОРИ ВЛАДИМИР
+ХАРАНГОЗО-ТОРИ ВЛАДИМИР
+ХАРФМАН МАРА
+ХАРХАИ ЖЕЉКО
+ХАРХАИ БОЖАНА
+ХАРХАИ ЈАНКО
+ХАРХАЈИ ХЕЛЕНА
+ХАРХАЈИ ЈАНКО
+ХАРХАЈИ ЈОАКИМ
+ХАРХАЈИ ЈОАКИМ
+ХАРХАЈИ ЉУБОМИР
+ХАРХАЈИ ЉУБОМИР
+ХАРХАЈИ МИРОН
+ХАРХАЈИ НИКОЛА
+ХАРХАЈИ ВЛАДИМИР
+ХАРХАЈИ ВЛАДИМИР
+ХАРИШ ЈЕЛИСАВЕТА
+ХАРИШ ЈЕЛИСАВЕТА
+ХАРИШ ЉУБИВОЈЕ
+ХАРИШ ПИРОШКА
+ХАРИЈАН ШТЕФИЦА
+ХАРКАИ СТЕВАН
+ХАРМАТ КОНРАД
+ХАРПАЊ МИХАЛ
+ХАРТ МАРГИТА
+ХАРТИГ ИРЕНА
+ХАРТИГ ТИБОР
+ХАРТМАН КАТАРИНА
+ХАРТМАН ВЕСНА
+ХАС АЛЕКСАНДАР
+ХАС КАРЛО
+ХАС МАРТА
+ХАС МИЛИЦА
+ХАСАНАГИЋ ЕСНАФ
+ХАСАНАГИЋ МИЛАН
+ХАСЕНАУЕР ЈОСИП
+ХАСИЋ ЏЕМАЛ
+ХАТАЛА МАТЕ
+ХАТАЛА ЗОЛТАН
+ХАУГ АНИЦА
+ХАУК РОБЕРТ
+ХАУПТМАН СЛАВКО
+ХАУРДИЋ РАБИЈА
+ХАУСЕР ХИЛДА
+ХАУЗЕР ОСКАР
+ХАУЗЛОХНЕР ИРЕНА
+ХАВЈАР ВЕЛИЗАР
+ХАВЛЕК ФРАЊА
+ХАВЛЕК ЈОСИП
+ХАВРАН ЗЛАТКО
+ХАВЗИ ШЕРИФ
+ХАВЗИ ЛИМАН
+ХЕЂЕШ ЈАНОШ
+ХЕЂЕЛАИ СТЕВАН
+ХЕЂИ АЛЕКСАНДАР
+ХЕЂИ МИЛИЦА
+ХЕДЕШ ЈАНОШ
+ХЕГЕДИШ ЂЕРЂ
+ХЕГЕДИШ БЕЛА
+ХЕГЕДИШ БЕРТА
+ХЕГЕДИШ ГЕЗА
+ХЕГЕДИШ ИШТВАН
+ХЕГЕДИШ ЈОЖЕФ
+ХЕГЕДИШ ЈОХАНА
+ХЕГЕДИШ ЈОЗЕФИНА
+ХЕГЕДИШ ТЕРЕЗИЈА
+ХЕГЕДИШ ЗОЛТАН
+ХЕГЕДУШ КАРОЛИНА
+ХЕИМ МАГДА
+ХЕКИЋ СЛАВИЦА
+ХЕЛЕР ГАБРИЈЕЛ
+ХЕЛЕР ИНГРИД
+ХЕМ ЈАНОШ
+ХЕМИ АНИЦА
+ХЕМИ ВЛАДИСЛАВ
+ХЕМОН БОРИС
+ХЕМОН МАРИЈА
+ХЕМОН СЛАВИЦА
+ХЕМОН ТЕРЕЗИЈА
+ХЕМОН ВЛАДИМИР
+ХЕМОН ВЛАДИМИР
+ХЕМРИХ КЛАРА
+ХЕМУН МИХАЈЛО
+ХЕН ЖЕЉКО
+ХЕН ИВИЦА
+ХЕН МАРИЈА
+ХЕНГЛ ДАМЈАН
+ХЕНГЛ ЈОВАН
+ХЕНГЛ РИХАРД
+ХЕНИШ ВИЛМА
+ХЕНКЕЛ ФИЛИП
+ХЕП МАКСИМ
+ХЕРЧИК РОБЕРТ
+ХЕРАК ИВАН
+ХЕРАК СТАНИСЛАВ
+ХЕРАКОВИЋ АЛЕКСАНДАР
+ХЕРАКОВИЋ БРАНИСЛАВ
+ХЕРАКОВИЋ СЛОБОДАН
+ХЕРБЕЗ МИЛЕНКО
+ХЕРБСТ АНТУН
+ХЕРБУТ ЂОРЂЕ
+ХЕРБУТ ГАБОР
+ХЕРБУТ ЈОЖЕФ
+ХЕРБУТ КАРОЉ
+ХЕРБУТ КИРИЛ
+ХЕРБУТ МИХАЈЛО
+ХЕРБУТ СИЛВЕСТЕР
+ХЕРЦЕГ ЂОРЂЕ
+ХЕРЦЕГ ДРАГОСЛАВ
+ХЕРЦЕГ КАРЛО
+ХЕРЦЕНБЕРГЕР ЂУЛА
+ХЕРЦЕНБЕРГЕР АЛЕКСАНДАР
+ХЕРЦЕНБЕРГЕР АЛЕКСАНДАР
+ХЕРЦЕНБЕРГЕР ГИЗЕЛА
+ХЕРЦЕНБЕРГЕР ИРЕН
+ХЕРЦОГ ЂОРЂЕ
+ХЕРДИ ЈОСИП
+ХЕРДИ ЉИЉАНА
+ХЕРДИ-СТОЈАНОВИЋ АНГЕЛИНА
+ХЕРЕНЧИЋ ЛЕОПОЛД
+ХЕРЕНДИЈА ЂОРЂЕ
+ХЕРЕНДИЈА МАРКО
+ХЕРЕТА СЛОБОДАН
+ХЕРГЕТ КАТИЦА
+ХЕРИЋ МИХОВИЛ
+ХЕРИНГ АМАЛИЈА
+ХЕРИНГ ИВАН
+ХЕРМАН ЧИЛА
+ХЕРМАН АНЂА
+ХЕРМАН ИВАН
+ХЕРМАН КАРЛО
+ХЕРМАН ВИЛИМ
+ХЕРОР ЛАЗАР
+ХЕРПКА ДУБРАВКА
+ХЕРПКА ИВАН ДР ИНГ
+ХЕРТЛ ЈОЖЕФ
+ХЕРТЛ НАДА
+ХЕС ШАНДОР
+ХЕС ЛАСЛО
+ХЕСКО ВИКТОРИЈА
+ХЕВЕР МАРГИТА
+ХЕВЕР ПАВЛЕ
+ХЕВЕРА МИХАЈЛО
+ХЕВЕРА ЗУЗАНА
+ХЕВИЗИ ИЛОНА
+ХЕВИЗИ ПЕТАР
+ХИЋИЛ АЛЕКСАНДАР
+ХИЋИЛ ЈОСИП
+ХИЋИЛ КАТАРИНА
+ХИЖА ЈОВАН
+ХИЖА МИША
+ХИБШ МАРИЈА
+ХИБШ РИХАРД СУДИЈА
+ХИБШ ТАНКРЕД
+ХИЕЛ КСЕНИЈА
+ХИЛ ЈОСИП
+ХИЛ ВЕРА
+ХИЛИЕР-КОЛАРОВ ВАЛЕРИЈА ДР
+ХИЛИЕР ЛАЈОШ ДИПЛ ИНГ
+ХИНИЋ ЂОРЂЕ
+ХИНИЋ БРАНКО
+ХИНИЋ МАНЕ
+ХИНИЋ МИЛИЦА
+ХИНИЋ ПРЕДРАГ
+ХИПИК ШТЕФАНА
+ХИПИК ЈОВАН
+ХИПИК КАРЛО
+ХИРШ СТЈЕПАН
+ХИРШЕНБЕРГЕР МАРТА
+ХИРШЕНБЕРГЕР СТЕВАН ДИПЛ ИНГ
+ХИРШМАН АНТУН
+ХИРЈОВАТИ ЉУБИЦА
+ХИРЈОВАТИЈ МИРОН
+ХИРМАН ФРАЊА
+ХИРМАН ЗОЛТАН
+ХИТЕНБЕРГЕР ЂОРЂЕ
+ХИТИ ФРАНЦ
+ХИТЛ ЕЛИЗАБЕТА
+ХИТЛ СТЕВАН
+ХЛАЂИК ЗВОНКО
+ХЛАДНИ ИВАН
+ХЛАДНИ СЛАВКО
+ХЛАПЕЦ СТЈЕПАН
+ХЛАВСА СЛАВИЦА
+ХЛЕБЕЦ НОРБЕРТ
+ХЛОЖАН ЈОВАН
+ХМИЉ ИЛИЈА
+ХНАТКО МИШКО
+ХОЧКО АЈЕТ
+ХОШЕК ЧАБА
+ХОШЕК ФРАЊА
+ХОБРАТ МАРТА
+ХОЏА РАМАДАН
+ХОЏИЋ ХАЛИД
+ХОЏИЋ ОМЕР
+ХОЏИЋ СТАЗА
+ХОДА МЕЈРЕМ
+ХОДАК МИЛЕ
+ХОДАК СИЛВЕСТАР
+ХОДАК СОФИЈА
+ХОДАК ВЕРА
+ХОДАК ВЛАДИСЛАВ
+ХОДАР ЈОСИП
+ХОДИ ЕРНЕ
+ХОДИ ЕРНЕ
+ХОДИ ФЕРЕНЦ
+ХОДИ ВИЛМА
+ХОДИК БАРБАРА
+ХОДИНКА МИХАИЛО
+ХОДНИК АЛОЈЗ
+ХОДОБА ДАНИЈЕЛА
+ХОДОЛИЧ ЈАНКО
+ХОДОЛИЋ ЈАРОСЛАВ
+ХОФМАН АЛЕКСАНДАР
+ХОФМАН АРТУР
+ХОФМАН БРУНО
+ХОФМАН ФРАЊА
+ХОФМАН ЛАДИСЛАВ
+ХОФМАН МАРИЈА
+ХОФМАН ВЕСНА
+ХОХЊЕЦ ДАРКО
+ХОХЊЕЦ ПЕТАР
+ХОХЊЕЦ ВЛАДИМИР
+ХОЛЦЕР ЛАДИСЛАВ
+ХОЛЕРБАХ КАТИЦА
+ХОЛИ АНДРИЈА МР ПХ
+ХОЛИ КАТАРИНА
+ХОЛИЧЕК ЛАСЛО
+ХОЛИЧЕК МАРГИТ
+ХОЛИЧЕК СТЕВАН
+ХОЛИГА КАРЛО
+ХОЛИГА СНЕЖАНА
+ХОЛИГА СТЕВАН
+ХОЛИК ЈАНКО
+ХОЛИК ЈОАКИМ
+ХОЛО ЛЕОНТИНА
+ХОЛО ВИЛМОШ ДИПЛ ИНГ
+ХОЛОД СТЕВАН
+ХОЛОДКОВ ВЛАДИМИР
+ХОЛОТ РУЖА
+ХОЛОВКА АНКА
+ХОЛОВКА БРАНКА
+ХОЛОВКА НАТАЛИЈА
+ХОЛПЕРТ ЕРНЕСТ
+ХОЛПЕРТ ЛУЈО
+ХОМА АНА
+ХОМА БОСИЉКА
+ХОМА ЕУГЕН
+ХОМА ЈАНКО
+ХОМА ЈОВГЕН
+ХОМА МИРОСЛАВ
+ХОМА НИКОЛА
+ХОМА ПЕТАР ДИПЛ ИНГ
+ХОМА ВЛАДИМИР
+ХОМА ВЛАДИМИР
+ХОМА ВУКИЦА
+ХОМОЉА ЈОЖЕФ
+ХОР БОЖИЦА
+ХОР ИЛИЈА
+ХОР ПАВЛЕ
+ХОРАК МИХАЈЛО
+ХОРАК НАНДОР
+ХОРГАС ИШТВАН
+ХОРГАС МАТИЛДА
+ХОРГОШИ ЂУЛА
+ХОРГОШИ КАТАРИНА
+ХОРИЋ ЈЕЛИСАВЕТА
+ХОРИЋ КОСИМ
+ХОРН ВАЛЕНТИН
+ХОРЊАК ЖИВА
+ХОРЊАК ЂУРО
+ХОРЊАК ДИМИТРИЈЕ
+ХОРЊАК ДИМИТРИЈЕ
+ХОРЊАК ИВАН
+ХОРЊАК ЈАНОШ
+ХОРЊАК ЈАН
+ХОРЊАК МАГДАЛЕНА
+ХОРЊАК МИША
+ХОРЊАК МИРКО
+ХОРЊАК ОЛГА
+ХОРЊАК ПЕТАР
+ХОРЊАК-ПУШКАШОВА МАРИЈА
+ХОРЊАК СОФРОНА
+ХОРЊАК СТЕВАН
+ХОРЊАК ВЛАДА
+ХОРЊАК ВЛАДА
+ХОРЊАК ВЛАДИМИР
+ХОРЊИК ШАНДОР
+ХОРЊИК ЂЕРЂ
+ХОРЊИК ЂЕРЂ
+ХОРЊИК ЗОЛТАН
+ХОРНОК ЗОЛТАН
+ХОРНУНГ-ШОМАН ШТЕФАНИЈА
+ХОРОШИЛОВ СОФИЈА
+ХОРОШКО АЛЕКСАНДАР
+ХОРОШКО СТЕФАН ДР
+ХОРОВИЦ ДРАГИЊА
+ХОРОВИЦ ВЛАДИМИР
+ХОРТИ ДРАГАНА
+ХОРТИ ГЕЗА
+ХОРТИ ЈОСИП
+ХОРТИ ВЛАДИСЛАВ
+ХОРВАЦКИ МАРКО
+ХОРВАЦКИ СНЕЖАНА
+ХОРВАТ ШАНДОР
+ХОРВАТ ШАНДОР
+ХОРВАТ ЖОЛТ
+ХОРВАТ ЂУЛА
+ХОРВАТ ЂУРА
+ХОРВАТ АГИ
+ХОРВАТ АЛЕКСАНДАР
+ХОРВАТ АЛЕКСАНДАР
+ХОРВАТ АНДРАШ
+ХОРВАТ АНДРИЈА
+ХОРВАТ АНКА
+ХОРВАТ АНТАЛ
+ХОРВАТ АРПАД
+ХОРВАТ БЕЛА
+ХОРВАТ БИСЕРКА
+ХОРВАТ ДЕЖЕ
+ХОРВАТ ДИМИТРИЈЕ
+ХОРВАТ ЕДИТ
+ХОРВАТ ЕЛИЗАБЕТА
+ХОРВАТ ЕРЖЕБЕТ
+ХОРВАТ ЕРИКА
+ХОРВАТ ЕСТЕР
+ХОРВАТ ФЕРЕНЦ
+ХОРВАТ ФЕРЕНЦ
+ХОРВАТ ФЕРЕНЦ
+ХОРВАТ ФЕРЕНЦ
+ХОРВАТ ФРАЊА
+ХОРВАТ ФРАЊА
+ХОРВАТ ФРАЊО
+ХОРВАТ ГАБОР
+ХОРВАТ ГИЗЕЛА
+ХОРВАТ ГРОЗДАНА
+ХОРВАТ ИШТВАН
+ХОРВАТ ИГОР
+ХОРВАТ ИГОР
+ХОРВАТ ИЛОНКА
+ХОРВАТ ИМРЕ
+ХОРВАТ ИМРЕ
+ХОРВАТ ИМРЕ
+ХОРВАТ ИРЕНА
+ХОРВАТ ИРЕНКА
+ХОРВАТ ИВАНКА
+ХОРВАТ ИВАН
+ХОРВАТ ЈАНОШ ДИПЛ ИНГ
+ХОРВАТ ЈАНОШ
+ХОРВАТ ЈЕЛЕНА
+ХОРВАТ ЈОЖЕФ
+ХОРВАТ ЈОЖЕФ
+ХОРВАТ ЈОЖЕФ
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОСИП
+ХОРВАТ ЈОВАН
+ХОРВАТ КАЛМАН
+ХОРВАТ КАРЛО
+ХОРВАТ КАРЛО
+ХОРВАТ КАРЛО
+ХОРВАТ КАРОЉ
+ХОРВАТ КАТАЛИН
+ХОРВАТ КАТАРИНА
+ХОРВАТ КАТИЦА
+ХОРВАТ КАТИЦА
+ХОРВАТ ЛАЈОШ
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛАСЛО
+ХОРВАТ ЛУДВИГ
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАРИЈА
+ХОРВАТ МАТО
+ХОРВАТ МИХАЉ
+ХОРВАТ-МИЛИТИЧИ КАРОЉ ДР
+ХОРВАТ МИЛКА
+ХОРВАТ МИЛКА
+ХОРВАТ МИЛОСЛАВ
+ХОРВАТ МИРКО
+ХОРВАТ ПАЈА
+ХОРВАТ ПАВЛЕ
+ХОРВАТ ПЕТАР
+ХОРВАТ РАДМИЛА
+ХОРВАТ РОЖА
+ХОРВАТ РОЗАЛИЈА
+ХОРВАТ РУЖА
+ХОРВАТ РУДОЛФ
+ХОРВАТ САМУЕЛ
+ХОРВАТ СИЛВЕСТЕР
+ХОРВАТ СЛАВКО
+ХОРВАТ СМИЉА
+ХОРВАТ СТЕВАН
+ХОРВАТ ТАМАШ
+ХОРВАТ ТЕРЕЗА
+ХОРВАТ ТЕРЕЗА
+ХОРВАТ ТИБОР
+ХОРВАТ ТИБОР
+ХОРВАТ ТИБОР
+ХОРВАТ ТИБОР
+ХОРВАТ ВАЛЕРИЈА
+ХОРВАТ ВЕРИЦА
+ХОРВАТ ВЕРОНИКА
+ХОРВАТ ВЕРОНИКА
+ХОРВАТ ВЛАДИМИР
+ХОРВАТ ЗОЛТАН
+ХОРВАТ ЗОЛТАН
+ХОРВАТИЋ МАРИЈАН
+ХОРВАТИЋ ОЛГА
+ХОРВАТИЋ СЛАВКО
+ХОРВАТИЋ ЗВОНИМИР
+ХОРВАТОВ РАСТКО
+ХОРВАТОВИЋ ЂОРЂЕ
+ХОРВАТОВИЋ КАТИЦА
+ХОРВАТОВИЋ МИРЈАНА
+ХОРВАТОВИЋ ПАВЛЕ ДР
+ХОРВАТСКИ ДУШАН
+ХОРВАТСКИ ЉУБИЦА
+ХОРВАТСКИ ЉУБИЦА
+ХОРВАТСКИ МИЛЕНКО
+ХОРВАТСКИ МИРОСЛАВ
+ХОРВАТСКИ РАДИВОЈ
+ХОРВАТСКИ РУЖИЦА
+ХОСТИЋ БИСЕРКА
+ХОСТНИК КАТИЦА
+ХОСТОНСКИ СТАНА
+ХОТ АДЕМ
+ХОУФ ЕЛВИРА
+ХОВАН МАРТИН
+ХОВАН МИРОСЛАВ
+ХОВАНЕЦ ВИКТОРИЈА
+ХРЋАН ЈОВАН
+ХРЋАН ЈОВАН
+ХРАБАР ИВО
+ХРАБОВСКИ АНТОН
+ХРАБОВСКИ АНТОН
+ХРАБОВСКИ БОЈАНА ДР
+ХРАБОВСКИ ЕДГАР ДИПЛ ОЕЦ
+ХРАБОВСКИ ИМРЕ
+ХРАБОВСКИ ЛАДИСЛАВ
+ХРАБРИЋ ЕУГЕН
+ХРАДЕЧНИ БЕЛА
+ХРАДЕЧНИ ФРАЊА
+ХРАДЕЧНИ ЈОСИП
+ХРАНИЧАК МИРКО
+ХРАНИСАВЉЕВИЋ ПАВЛЕ
+ХРАПОВИЋ ОСМАН
+ХРДЛИЧКА ДЕСАНКА
+ХРЕШЧАК ВЛАДИМИР
+ХРЕНАР ЛАУРА
+ХРГИЋ ЉУБОМИР
+ХРГИЋ МИЛАН
+ХРГИЋ ВЛАСТИМИР
+ХРИЧАНЕК МИРОСЛАВ
+ХРИЧАНЕК НЕДЕЉКА
+ХРИБЉАН АНТОН
+ХРИБОВШЕК ФРАНЦ
+ХРИЦКАНИЋ ЛУКА
+ХРИЕШИК МАРИЈА
+ХРИЈЕШИК ЈАН
+ХРИЈЕШИК ЈУРАЈ
+ХРИСТИЋ БЛАГОЈЕ
+ХРИСТИЋ ДИМИТРИЈЕ
+ХРИСТИЋ ЛЕПОСАВА
+ХРИСТИЋ ЉУБИЦА
+ХРИСТИДИС АПОСТОЛ
+ХРИСТИДИС НИКОЛА
+ХРИСТИДИС НИКОЛА
+ХРИСТОВ БРАНКО
+ХРИСТОВ МИЛОСИЈА
+ХРИСТОВ ВЕСНА
+ХРИСТОВ ЗАГОРКА
+ХРИСТОВА ЕМИЛИЈА
+ХРИСТОВСКИ ТОМА
+ХРИСТУ ТИХОМИР
+ХРКАЛОВИЋ БОШКО
+ХРНЧАР САМУЕЛ
+ХРНЧИЋ МАРГИТА
+ХРНЧИЋ МИХАД
+ХРНЧИЋ ВАХИД
+ХРНЧИАР АНА
+ХРНЧИАР ЈАНКО
+ХРНЧИАРОВА ТЕРЕЗИА
+ХРНЧЈАР АНДРЕЈ
+ХРНЧЈАР ВЛАДИМИР
+ХРЊАЧКИ ЖАРКО
+ХРЊАЧКИ ЂОРЂЕ
+ХРЊАЧКИ ЈЕЛИЦА
+ХРЊАЧКИ ЈОВАН
+ХРЊАЧКИ ЛАЗИЦА
+ХРЊАЧКИ МИЛКА
+ХРЊАЧКИ МЛАДЕН
+ХРЊАК ДАНЕ
+ХРЊАК ДРАГАН
+ХРЊАК ДУШАН
+ХРЊАК ЉИЉАНА
+ХРЊАК МАРИЈА
+ХРЊАК РАЈКО
+ХРЊАК ВЕЉКО
+ХРЊАКОВИЋ БРАНИСЛАВ
+ХРЊАКОВИЋ ИВАНА
+ХРЊАКОВИЋ ЈОВАН
+ХРЊАКОВИЋ МИРКО
+ХРЊЕЗ ОБРАД
+ХРОМИШ АМАЛИЈА
+ХРОМИШ АНА
+ХРОМИШ БАРБАРА
+ХРОМИШ БОРИСЛАВ
+ХРОМИШ ЈОАКИМ
+ХРОМИШ ЈОАКИМ
+ХРОМИШ КАТИЦА
+ХРОМИШ МАРИЈА
+ХРОМИШ МЕЛАНИЈА
+ХРОМИШ МИХАЈЛО ДИПЛ ИНГ
+ХРОМИШ МИРОСЛАВ
+ХРОМИШ МИРОСЛАВ
+ХРОМИШ НАДА
+ХРОМИШ НИКОЛА
+ХРОМИШ ПЕТАР
+ХРОМИШ СИМА
+ХРОМИШ ВЛАДИМИР
+ХРОМИШ ЗДЕНКА
+ХРОЊЕЦ ВИЋАЗОСЛАВ
+ХРСТО СЛАВКО
+ХРУБЕЊА ЂУРА
+ХРУБЕЊА ФЕБРОНА
+ХРУБЕЊА ЈАНКО
+ХРУБЕЊА ЈОАКИМ
+ХРУБЕЊА ЈОАКИМ
+ХРУБЕЊА ЈОАКИМ
+ХРУБЕЊА КАРЛО
+ХРУБЕЊА МИХАЈЛО
+ХРУБЕЊА МИРОСЛАВ
+ХРУБЕЊА ПЕТАР
+ХРУБЕЊА ЗВОНИМИР
+ХРУБИК АНДРЕЈ
+ХРУБИК ЈОВАН
+ХРУБИК КАРЛО
+ХРУБИК МИРКО
+ХРУБИК ОСКАР ДР ЛЕКАР
+ХРУБИК РОЗАЛИЈА
+ХРУСТАНОВИЋ ТУРСУН
+ХРУСТИЋ ЕМИН
+ХРУСТИЋ ЕНВЕР
+ХРУСТИЋ ЗИЈАХ
+ХРУСТИЋ ЗИЛХА
+ХУЧИЋ СТЈЕПАН
+ХУЧКА ЈОВАН
+ХУЖВАР ШАНДОР
+ХУЂЕЦ ЈОВАНКА
+ХУЂЕЦ КАРЛО
+ХУБАИ ГАБОР
+ХУБАНИЋ МИЛЕНА
+ХУБЕР БОЈАНА
+ХУБЕР ДРАГАН
+ХУБЕР ЕЛЗА
+ХУБЕР ЈОВАН ДИПЛ ИНГ
+ХУБЕР МАГДАЛЕНА
+ХУБЕР МАРИЈА
+ХУБЕР МАТИЛДА
+ХУБЕР ПЕТАР
+ХУБЕР ТИБОР
+ХУБЕРТ ЕВА
+ХУБЕРТ РАДМИЛА
+ХУБЕРТ ВЕРА
+ХУБИЈАР ЕНЕС
+ХУБИЈАР НАДА
+ХУДАК ИРИНЕЈ
+ХУДАК НАТАЛИЈА
+ХУДОМЕЛ ИВАН
+ХУЈДУР БРАНКА
+ХУМСКИ РОСА
+ХУЊАДИ АЛЕКСАНДАР
+ХУЊАДИ ИЛОНКА
+ХУЊАДИ ОЛГА
+ХУПЕРТ ЛАЈОШ
+ХУПИК МИРЈАНА
+ХУС ИМРЕ
+ХУСАГ АРПАД
+ХУСАГИЋ ЕСАД
+ХУСАГИЋ СУЛЕЈМАН
+ХУСАГИЋ ЗИНЕТА
+ХУСАК РАДОВАН
+ХУСАР ЕВА
+ХУСАР ИШТВАН
+ХУСАР ЈАНКО
+ХУСАР ЛАСЛО
+ХУСАР ТОДОР
+ХУСЕИН МЕХМЕД
+ХУСЕИНБЕГОВИЋ НАМИК
+ХУСЕИНОВИЋ АНИЦА
+ХУСЕИНОВИЋ АТИЛА
+ХУСЕИНОВИЋ АТИЛА
+ХУСЕИНОВИЋ ЕСМЕРАЛДА
+ХУСЕИНОВИЋ ИСМЕТ
+ХУСЕНБЕГОВИЋ РОЗАЛИЈА
+ХУСИЋ ЂУРЂИНКА
+ХУСИЋ ЛАДИСЛАВ
+ХУСКА ИЛОНА
+ХУСКА-РОКА МАГДА ДР
+ХУСКО МИЈО
+ХУСОВИЋ ХУСО
+ХУТАЛАРОВИЋ ЈЕЛЕНА
+ХУТАЛАРОВИЋ КОСТА
+ХУЗЈАН ТИХОМИР
+ХВАЛА МИРА
+ХВЕТКОВИЋ ЈЕЛИСАВЕТА
+ИЧАГИЋ НИКОЛА
+ИЧЕВИЋ МОМЧИЛО
+ИЧИН ЖИВКО
+ИЧИН МИЛЕНКО
+ИЧИН РАДИСЛАВ
+ИЧИН СРЕТЕН
+ИШИЋ ЕЛИЗАБЕТА
+ИШПАН ШАНДОР
+ИШПАН МАРГИТА
+ИШПАНОВИЋ ЈОЖЕФ
+ИШТОК ЈОСИП
+ИШТОК ЈОСИП
+ИШТОК МИРЈАНА
+ИШТОК СТЕВАН
+ИШТОКОВИЋ СТЕВО
+ИШТВАНОВ СТАНИСЛАВА
+ИЋИТОВИЋ МИЛАН
+ИЋУРУП ЖИВОЈИН
+ИЋУРУП МИЛОРАД
+ИЋУРУП РАДОСЛАВ ДИПЛ ИНГ
+ИЖАК ФЕРЕНЦ
+ИЖАК КАРЛО
+ИЖАК РОЗАЛИЈА
+ИЂИДОВ ОЛГА
+ИЂИДОВ ВЕЛИНКА
+ИЂОШКИ ХОРСТ
+ИЂОШКИ НИКОЛА
+ИЂУШКИ СТЕВАН
+ИБРАХИМ ДЕМИР
+ИБРАХИМАГИЋ НАДА
+ИБРАХИМИ ИБРАХИМ
+ИБРАХИМОВИЋ ДЕРВИША
+ИБРАХИМОВИЋ ЕМИЛ
+ИБРАХИМОВИЋ ХАМДИЈА
+ИБРАХИМОВИЋ МИЛАН
+ИБРАХИМОВИЋ СЛАВКО
+ИБРАХИМОВИЋ ВЕРА
+ИБРАХИМПАШИЋ АНА
+ИБРАЈТЕР ИВАН
+ИБРАЈТЕР ЉУБОМИР
+ИБРАЈТЕР МЛАДЕН
+ИБРИШЕВИЋ ЂУЛАГА
+ИБРИШЕВИЋ МИРСАД
+ИБРИШЕВИЋ СУАД
+ИБРОЧИЋ ДИМИТРИЈЕ ДИПЛ ИНГ
+ИБРОЧИЋ МАРИЈА
+ИБРОЧИЋ РАТОМИР
+ИБРОЧИЋ СЛОБОДАН
+ИБРОЧИЋ ВЕРА
+ИБРОЛИ БАН
+ИЦОСКИ ЛАЗАР
+ИДЕИ НАНДОР
+ИДЕЈИ ЈОВАН
+ИДЕЈИ ВАЛЕРИЈА
+ИДРИЗОВИЋ АХМЕТ ДР
+ИДВОРЕАН ТОДОР
+ИДВОРЕАН ВИКЕНТИЈЕ
+ИФЈУ АНГЕЛИКА
+ИФЈУ ГАБОР
+ИФКО ИЛДИКО ДИПЛ ИНГ
+ИГИЋ ЖИВАДИН
+ИГИЋ ЂУЛВАСИЈА
+ИГИЋ АНКА
+ИГИЋ ДРАГАН
+ИГИЋ ЈОВАНКА
+ИГИЋ МИЛКА
+ИГИЋ МИЛОРАД
+ИГИЋ МИРОСЛАВА
+ИГИЋ МИРОСЛАВ
+ИГИЋ НИКОЛА
+ИГИЋ ПАВЛЕ
+ИГИЋ РАЈКО
+ИГИЋ САША
+ИГИЋ СТЕВАН
+ИГИЋ СТЕВАН
+ИГИЋ СВЕТОЗАР
+ИГИЋ ТОМИСЛАВ
+ИГИЋ ВУКА
+ИГНАЦ ПЕРА
+ИГЊАЦ ВИДА
+ИГЊАТИЋ АНКА
+ИГЊАТИЋ БОРИВОЈ
+ИГЊАТИЋ ДУШАНКА
+ИГЊАТИЋ ГОЈКО
+ИГЊАТИЋ НЕВЕНКА
+ИГЊАТИЋ РАДОВАН
+ИГЊАТИЋ ВИД
+ИГЊАТИЈЕВИЋ АЛЕКСАНДАР
+ИГЊАТИЈЕВИЋ БРАНИСЛАВ
+ИГЊАТИЈЕВИЋ ДОБРИЛА
+ИГЊАТИЈЕВИЋ ДРАГОМИР
+ИГЊАТИЈЕВИЋ ДУШАН
+ИГЊАТИЈЕВИЋ ДУШАН
+ИГЊАТИЈЕВИЋ ЈОВАН
+ИГЊАТИЈЕВИЋ ЉИЉАНА
+ИГЊАТИЈЕВИЋ ЉИЉАНА
+ИГЊАТИЈЕВИЋ ЉУБОМИР
+ИГЊАТИЈЕВИЋ МАРА
+ИГЊАТИЈЕВИЋ МИЛАН
+ИГЊАТИЈЕВИЋ МИЛЕНА
+ИГЊАТИЈЕВИЋ МИРОСЛАВ
+ИГЊАТИЈЕВИЋ МИТА
+ИГЊАТИЈЕВИЋ НОВАК
+ИГЊАТИЈЕВИЋ РАДАШИН
+ИГЊАТИЈЕВИЋ РАДОВАН
+ИГЊАТИЈЕВИЋ СВЕТИСЛАВ
+ИГЊАТИЈЕВИЋ СВЕТОЗАР
+ИГЊАТИЈЕВИЋ ТОМИСЛАВ
+ИГЊАТИЈЕВИЋ ТОМИСЛАВ
+ИГЊАТИЈЕВИЋ ВОЈИСЛАВ
+ИГЊАТИЈЕВИЋ ЗОРАН
+ИГЊАТОВ-РАДОВАНОВИЋ МИЛЕНА ПРОФ
+ИГЊАТОВИЋ ЖИВКО
+ИГЊАТОВИЋ ЖИВОРАД
+ИГЊАТОВИЋ АНГЕЛА
+ИГЊАТОВИЋ АНКА
+ИГЊАТОВИЋ ДАНИЛО
+ИГЊАТОВИЋ ГОРДАНА
+ИГЊАТОВИЋ КОСАРА
+ИГЊАТОВИЋ ЉУБИША
+ИГЊАТОВИЋ МАРИЦА
+ИГЊАТОВИЋ МИЛАН
+ИГЊАТОВИЋ МИЛЕ
+ИГЊАТОВИЋ МИЛКА
+ИГЊАТОВИЋ МИЛОШ ДР ПРАВНИК
+ИГЊАТОВИЋ МИЛОШ
+ИГЊАТОВИЋ МИЛОРАД
+ИГЊАТОВИЋ МИЛУТИН
+ИГЊАТОВИЋ МИРЈАНА
+ИГЊАТОВИЋ САВА
+ИГЊАТОВИЋ СЛОБОДАН
+ИГЊАТОВИЋ ВЕРА
+ИГЊАТОВИЋ ВЕРА
+ИГЊАТОВИЋ ВИДАК
+ИГЊАТОВИЋ ВЛАДИМИР
+ИГЊАТОВИЋ ВОЈИСЛАВ
+ИГЊАТОВИЋ ВУЧКО
+ИГЊАТОВСКИ ЕФРЕМ
+ИГЊИЋ БРАНКО
+ИГЊИЋ ЈОВАН
+ИГЊИЋ СТОЈАН
+ИГЊИЋ ЗИЗА
+ИГЊИЋ ЗОРАН
+ИГЊОВИЋ МАРИЈА
+ИГРАЧКИ ЂОРЂЕ
+ИГРАЧКИ ЕТЕЛА
+ИГРАЧКИ ЈУЛИН
+ИГРАЧКИ КАРЛО
+ИГРАЧКИ ЛАСЛО
+ИГРИЋ НАДА
+ИГРИЋ СТОЈАНКА
+ИГРУТИНОВИЋ СЛОБОДАН
+ИХАС ИЛОНА
+ИЈАЧИЋ БРАНКО
+ИЈАЧИЋ МАКСИМ
+ИЈЕВЉЕВ ФЕОДОР
+ИКАНОВИЋ ДУШАН
+ИКАНОВИЋ ИВАН
+ИКАНОВИЋ ЈЕЛЕНА
+ИКАНОВИЋ НИКОЛА
+ИКЕЉИЋ ИРФАН
+ИКИЋ ДЕЈАН
+ИКИЋ ЈОВАН
+ИКИЋ МЛАДЕН
+ИКИЋ МЛАДЕН
+ИКИЋ СМИЉАНА
+ИКОДИНОВИЋ ДУШАН
+ИКОНИЋ ЂУРА
+ИКОНОВ ДЕЈАН
+ИКОТИН ЈАНОШ
+ИКОТИН ЈОВАНКА
+ИКОТИН МАТИЈА
+ИКОТИН ПАЛ
+ИКОТИН ПЕТАР
+ИКОВАЦ БОШКО
+ИКОВАЦ СТЕВАН
+ИКОВИЋ ДРАГУТИН
+ИКОВИЋ МИЛОШ
+ИКОВИЋ МИЛОСАВ
+ИКОВИЋ ВЕЛИНКА
+ИКРАШЕВ ЈЕЛИЦА
+ИКРАШЕВ ЈОВАН
+ИЛ АЛЕКСАНДАР
+ИЛ ЈЕЛИЦА
+ИЛЧИК МАРИЈА
+ИЛЕШ ФРАНЦИШКА
+ИЛЕШ ИМРЕ
+ИЛЕШ ИРЕНА
+ИЛЕШ МИХАИЛО
+ИЛЕШ МИЛАН
+ИЛЕШ МИРОСЛАВ
+ИЛИЧИЋ АНТУН
+ИЛИЧИЋ ИВАН
+ИЛИЧИЋ ЉУБИЦА
+ИЛИЧИЋ МИХАЈЛО
+ИЛИЧИЋ ПЕТАР
+ИЛИЧИЋ-ПОПИЋ ОЉА
+ИЛИЋ ЧЕДОМИР
+ИЛИЋ ЧЕДО
+ИЛИЋ ШИМУН
+ИЛИЋ ЖЕЉКО
+ИЛИЋ ЖИВКО
+ИЛИЋ ЖИВКО
+ИЛИЋ ЖИВКО
+ИЛИЋ ЖИВОМИР
+ИЛИЋ ЖИВОМИР
+ИЛИЋ ЖИВОМИР
+ИЛИЋ ЖИВОРАД
+ИЛИЋ ЖИВОРАД
+ИЛИЋ ЂОРЂЕ
+ИЛИЋ ЂОРЂЕ
+ИЛИЋ ЂОРЂЕ
+ИЛИЋ АЛЕКСА ДР
+ИЛИЋ АЛЕКСАНДАР
+ИЛИЋ АЛЕКСАНДАР
+ИЛИЋ АЛЕКСАНДАР
+ИЛИЋ АЛЕКСАНДАР
+ИЛИЋ АНИЦА
+ИЛИЋ АНКИЦА
+ИЛИЋ АРСА
+ИЛИЋ АРСА
+ИЛИЋ БИЉАНА
+ИЛИЋ БЛАГОЈЕ
+ИЛИЋ БОШКО
+ИЛИЋ БОШКО
+ИЛИЋ БОЖИДАР
+ИЛИЋ БОБАН
+ИЛИЋ БОГДАН
+ИЛИЋ БОГОЉУБ
+ИЛИЋ БОРИСЛАВКА
+ИЛИЋ БОРИСЛАВ
+ИЛИЋ БОРИСЛАВ
+ИЛИЋ БОРИВОЈЕ
+ИЛИЋ БОРКА
+ИЛИЋ БОСИЉКА
+ИЛИЋ БРАНИСЛАВ
+ИЛИЋ БРАНИСЛАВ
+ИЛИЋ БРАНИСЛАВ
+ИЛИЋ БРАНКО
+ИЛИЋ БРАНКО
+ИЛИЋ БРАНКО
+ИЛИЋ БРАТИСЛАВ
+ИЛИЋ БРАТИСЛАВ
+ИЛИЋ ЦЕЦИЛИЈА
+ИЛИЋ ЦВЕТА
+ИЛИЋ ЦВИЈАН
+ИЛИЋ ДАНЕ
+ИЛИЋ ДАРИНКА
+ИЛИЋ ДЕЈАН
+ИЛИЋ ДОБРИВОЈЕ
+ИЛИЋ ДОБРОСАВ
+ИЛИЋ ДРАГАН
+ИЛИЋ ДРАГАН
+ИЛИЋ ДРАГАН
+ИЛИЋ ДРАГИЦА
+ИЛИЋ ДРАГОЉУБ
+ИЛИЋ ДРАГО
+ИЛИЋ ДРАГУТИН
+ИЛИЋ ДУШАНКА
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШАН
+ИЛИЋ ДУШИЦА
+ИЛИЋ ДУШИЦА
+ИЛИЋ ЕДИТ
+ИЛИЋ ЕРЖИКА
+ИЛИЋ ГОРАН
+ИЛИЋ ГОРАН
+ИЛИЋ-ГРЕГОР МИРА
+ИЛИЋ ИЛИЈА
+ИЛИЋ ИЛИЈА
+ИЛИЋ ИЛИЈА
+ИЛИЋ ИРЕНА
+ИЛИЋ ИВАН ДР
+ИЛИЋ ИВАН
+ИЛИЋ ИВАН
+ИЛИЋ ЈЕЛЕНА
+ИЛИЋ ЈЕЛЕНА
+ИЛИЋ ЈЕЛЕНКО
+ИЛИЋ ЈЕЛИСАВЕТА
+ИЛИЋ ЈЕЛКА
+ИЛИЋ ЈОСИФ
+ИЛИЋ ЈОВАНКА
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВАН
+ИЛИЋ ЈОВИЦА
+ИЛИЋ КОВИЉКА
+ИЛИЋ КРСТАН
+ИЛИЋ ЛАЗАР
+ИЛИЋ ЛАЗАР
+ИЛИЋ ЛАЗАР
+ИЛИЋ ЉУБИША
+ИЛИЋ ЉУБИША
+ИЛИЋ ЉУБИЦА
+ИЛИЋ ЉУБИЦА
+ИЛИЋ ЉУБИЦА
+ИЛИЋ ЉУБИНКО
+ИЛИЋ ЉУБО
+ИЛИЋ МАРА
+ИЛИЋ МАРА
+ИЛИЋ МАРИЈА
+ИЛИЋ МАРИЈА
+ИЛИЋ МАРИЈА
+ИЛИЋ МАРИЈА
+ИЛИЋ МАРИНКО
+ИЛИЋ МАРКО
+ИЛИЋ МИХАЈЛО
+ИЛИЋ МИХАЈЛО
+ИЛИЋ МИЛАДИН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛАН
+ИЛИЋ МИЛА
+ИЛИЋ МИЛЕНА
+ИЛИЋ МИЛЕНА
+ИЛИЋ МИЛЕН
+ИЛИЋ МИЛЕВА
+ИЛИЋ МИЛЕ
+ИЛИЋ МИЛИЋ
+ИЛИЋ МИЛИЦА
+ИЛИЋ МИЛИЦА
+ИЛИЋ МИЛИЦА
+ИЛИЋ МИЛИСАВ
+ИЛИЋ МИЛИВОЈЕ
+ИЛИЋ МИЛИВОЈ
+ИЛИЋ МИЛИВОЈ
+ИЛИЋ МИЛИВОЈ
+ИЛИЋ МИЛОШ
+ИЛИЋ МИЛОШ
+ИЛИЋ МИЛОШ
+ИЛИЋ МИЛОШ
+ИЛИЋ МИЛОРАД
+ИЛИЋ-МИЛУШИЋ ОЛГА
+ИЛИЋ МИЛУШКА
+ИЛИЋ МИЛУТИН
+ИЛИЋ МИОДРАГ ДР
+ИЛИЋ МИОДРАГ
+ИЛИЋ МИОДРАГ
+ИЛИЋ МИОДРАГ
+ИЛИЋ МИРЈАНА
+ИЛИЋ МИРКО
+ИЛИЋ МИРОСЛАВА
+ИЛИЋ МИРОСЛАВ
+ИЛИЋ МИРОСЛАВ
+ИЛИЋ МИТАР
+ИЛИЋ МОМЧИЛО
+ИЛИЋ МОМЧИЛО
+ИЛИЋ МОМЧИЛО
+ИЛИЋ МОМЧИЛО
+ИЛИЋ НАДА
+ИЛИЋ НЕЂО
+ИЛИЋ НЕБОЈША
+ИЛИЋ НЕБОЈША
+ИЛИЋ НЕНАД
+ИЛИЋ НЕВЕНКА
+ИЛИЋ НИКОЛА
+ИЛИЋ НИКОЛА
+ИЛИЋ ОБРАД
+ИЛИЋ ОБРЕН
+ИЛИЋ ОЛГА
+ИЛИЋ ОЛГА
+ИЛИЋ ОЛИВЕРА
+ИЛИЋ ОСТОЈА
+ИЛИЋ ПАВЛЕ ДИПЛ ИНГ
+ИЛИЋ ПАВЛЕ
+ИЛИЋ ПЕРО
+ИЛИЋ ПЕТАР
+ИЛИЋ ПЕТАР
+ИЛИЋ ПЕТАР
+ИЛИЋ ПЕТАР
+ИЛИЋ ПЕТАР
+ИЛИЋ-ПЕТРОВИЋ СПОМЕНКА
+ИЛИЋ ПРЕВИСЛАВ
+ИЛИЋ РАДЕ
+ИЛИЋ РАДИВОЈ
+ИЛИЋ РАДОЈКА
+ИЛИЋ РАДОМИР
+ИЛИЋ РАДОСЛАВ
+ИЛИЋ РАДОСЛАВ
+ИЛИЋ РАДОСЛАВ
+ИЛИЋ РАДОВАН
+ИЛИЋ РАДОВАН
+ИЛИЋ РАДО
+ИЛИЋ РАНКО
+ИЛИЋ РАТКО
+ИЛИЋ РАТКО
+ИЛИЋ РУЖА
+ИЛИЋ РУЖИЦА
+ИЛИЋ САВА ДР
+ИЛИЋ САВА
+ИЛИЋ-САВИЋ ВОЈИСЛАВА
+ИЛИЋ СИМО
+ИЛИЋ СИНИША
+ИЛИЋ СЛАВИЦА
+ИЛИЋ СЛАВКО
+ИЛИЋ СЛАВКО
+ИЛИЋ СЛАВОЉУБ
+ИЛИЋ СЛОБОДАН
+ИЛИЋ СЛОБОДАН
+ИЛИЋ СЛОБОДАН
+ИЛИЋ СЛОБОДАН
+ИЛИЋ СРЂАН
+ИЛИЋ СРЂАН
+ИЛИЋ СРЂАН
+ИЛИЋ СРЕТЕН
+ИЛИЋ СТАНА
+ИЛИЋ СТАНИША
+ИЛИЋ СТАНИМИР
+ИЛИЋ СТАНИМИР
+ИЛИЋ СТАНКА
+ИЛИЋ СТЕВО
+ИЛИЋ СТОЈАНЧЕ
+ИЛИЋ СТОЈАН
+ИЛИЋ СТОЈАН
+ИЛИЋ СВЕТИСЛАВ ДР ЛЕКАР
+ИЛИЋ СВЕТЛАНА
+ИЛИЋ СВЕТОЗАР
+ИЛИЋ ТАТЈАНА
+ИЛИЋ ТОДЕ
+ИЛИЋ ТОДЕ
+ИЛИЋ ТОМИСЛАВ
+ИЛИЋ ВАСА
+ИЛИЋ ВЕРА
+ИЛИЋ ВИДОСАВ
+ИЛИЋ ВИНКА
+ИЛИЋ ВИНКО
+ИЛИЋ ВЛАДАН
+ИЛИЋ ВЛАДАН
+ИЛИЋ ВЛАДИМИР ДР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАДИМИР
+ИЛИЋ ВЛАТКА
+ИЛИЋ ВОЈИСЛАВ
+ИЛИЋ ВОЈИСЛАВ
+ИЛИЋ ВОЈИСЛАВ
+ИЛИЋ ВОЈИСЛАВ
+ИЛИЋ ЗДРАВКО
+ИЛИЋ ЗЛАТКО
+ИЛИЋ ЗЛАТКО
+ИЛИЋ ЗОРАН
+ИЛИЋ ЗОРИЦА
+ИЛИБАШИЋ ДАРИНКА
+ИЛИБАШИЋ НИКОЛА
+ИЛИБАШИЋ ОСТОЈА
+ИЛИБАШИЋ СТЕВАН
+ИЛИБАШИЋ СТЕВО
+ИЛИБАШИЋ ЗЛАТА
+ИЛИЕВСКИ АЛЕКСАНДАР
+ИЛИЈЋ СМИЉА
+ИЛИЈЋ СВЕТОЛИК
+ИЛИЈАШЕВ СОФИЈА
+ИЛИЈАШЕВИЋ АЛЕКСАНДАР
+ИЛИЈАШЕВИЋ ДАРА
+ИЛИЈАШЕВИЋ ЉУБИША
+ИЛИЈАШЕВИЋ СВЕТИСЛАВ
+ИЛИЈАЗИ АБДИСАМИ
+ИЛИЈАЗИ ДАУТ
+ИЛИЈАЗИ ХАФИЗА
+ИЛИЈАЗИ ЈАЛЧИН
+ИЛИЈАЗИ ЗАЈНЕЛ
+ИЛИЈАЗОВИЋ ВЕЏРИЈА
+ИЛИЈЕВ ИВАН
+ИЛИЈЕВ ИВАН
+ИЛИЈЕВ ЉУБЕН
+ИЛИЈЕВИЋ ДУШАН ДИПЛ ИНГ
+ИЛИЈЕВИЋ НИКОЛА
+ИЛИЈЕВИЋ РАДЕ
+ИЛИЈЕВСКИ ЋИРО
+ИЛИЈЕВСКИ ЂОРЂЕ
+ИЛИЈЕВСКИ ДАНИЛО
+ИЛИЈИН ЖАРКО
+ИЛИЈИН ЖИВАН
+ИЛИЈИН ДУШАН
+ИЛИЈИН ЈЕЛЕНА
+ИЛИЈИН ЈОВАН
+ИЛИЈИН ЈОВАН
+ИЛИЈИН МИЛАН
+ИЛИЈИН МИЛИВОЈ
+ИЛИЈИН МИЛИВОЈ
+ИЛИЈИН МИЛОШ
+ИЛИЈИН МИРЈАНА
+ИЛИЈИН СТЕВАН
+ИЛИЈИН СВЕТОЗАР
+ИЛИЈИН ТАНАСИЈЕ
+ИЛИЈИН УРОШ
+ИЛИЈИН ЗОРКА
+ИЛИН ЖАРКО
+ИЛИН АЛЕКСАНДАР
+ИЛИН АНКИЦА
+ИЛИН БОРИСЛАВ
+ИЛИН БОРКА
+ИЛИН ДРАГИЊА
+ИЛИН ДРАГИЊА
+ИЛИН ДУШАН
+ИЛИН ДУШАН
+ИЛИН ИВАН
+ИЛИН ЉУБИНКО
+ИЛИН ЉУБОМИР
+ИЛИН МИЛАН
+ИЛИН МИЛЕНКО
+ИЛИН МЛАДЕН
+ИЛИН НЕДЕЉКО
+ИЛИН НИКОЛА
+ИЛИН РАДЕ
+ИЛИН СНЕЖАНА
+ИЛИН СОФИЈА
+ИЛИН ТИМА
+ИЛИН ЗОРА
+ИЛИНЧИЋ МОМИР
+ИЛИНЧИЋ НЕБОЈША
+ИЉАЗИ ЏАМИЉ
+ИЛКИЋ ЈЕЛА
+ИЛКИЋ МАРИЦА
+ИЛКИЋ МИЛАН
+ИЛКИЋ МИРА
+ИЛКИЋ НАДА
+ИЛКИЋ НЕБОЈША
+ИЛКИЋ НЕНАД
+ИЛКИЋ РАДМИЛА
+ИЛКИЋ СТЕВИЦА
+ИЛКИЋ ЗЛАТОЈА
+ИЛКИН РАДИВОЈ
+ИЛОВАЧА МАРКО
+ИЛОВСКИ АЛЕКСАНДАР
+ИЛОВСКИ ЗЛАТА
+ИМШИРОВИЋ КОЛОМАН
+ИМШИРОВИЋ МИРОСЛАВ
+ИМШИРОВИЋ СМАЈИЛ
+ИМАМОВИЋ ЈАСМИНА
+ИМБРА ЖИВОЈИН
+ИМБРИШИЋ БЕХИЈА
+ИМБРИШИЋ ИВАН
+ИМБРОЊЕВ РАЈКО
+ИМБРОЊЕВ РАЈКО
+ИМБРОЊЕВ РАЈКО
+ИМБРОЊЕВ СПАСОЈА
+ИМБРОНОВИЋ ЂОРЂЕ
+ИМБРОНОВИЋ ДУШАН
+ИМБРОНОВИЋ ЈУЛКА
+ИМРЕШИ ИВАН
+ИНЂИЋ ДРАГИЦА
+ИНЂИЋ ДУШАН
+ИНЂИЋ ЈЕЛЕНА
+ИНЂИЋ ЈЕЛИЦА
+ИНЂИЋ ТЕРЕЗ
+ИНЂИЋ ВОЈИН
+ИНЂИН ЖИВКО
+ИНЂИН ЂУРА
+ИНЂИН ДУШАН
+ИНЂИН ВЛАДИМИР
+ИНИЋ БРАНКО
+ИНИЋ ДРАГАН
+ИНИЋ ДУШАН
+ИНИЋ ЈЕЛЕНА
+ИНИЋ КРСТА
+ИНИЋ ЉУБИЦА
+ИНИЋ МИЛАН ДР
+ИНИЋ ТИНДА
+ИНИЋ ВАСО
+ИЊАЦ БОГДАН
+ИЊАЦ ДРАГИЦА
+ИЊАЦ ЈОВАН
+ИЊАЦ ЉУБИЦА
+ИЊАЦ МИРКО
+ИЊАЦ НИКОЛА
+ИЊАЦ РАДА
+ИЊАЦ РАДЕ
+ИЊАЦ РАДОМИР
+ИЊАЦ СЛОБОДАН
+ИЊАЦ ВЛАДИМИР
+ИНОВАН ДОБРИВОЈЕ
+ИПАЧ КАТАЛИНА
+ИПАЧ КАТИЦА
+ИПИЋ ЗОРА
+ИРШАИ ИВАН
+ИРШАЈИ ЈОВАН
+ИРШАЈИ СТЕВА
+ИРИЋ БОЖО
+ИРИЋ ГАШПАР
+ИРМЕШ МАРИА
+ИРМЕЊИ ЈОЖЕФ
+ИРМЕЊИ ЈОСИП
+ИРМЕЊИ МАРГИТ
+ИСАИЛОВИЋ ЉУБИША
+ИСАИЛОВИЋ МИЛАНКА
+ИСАИЛОВИЋ МИРКО
+ИСАИЛОВИЋ ВЕЛИСАВ
+ИСАЈЕВ МАРИЈА
+ИСАЈЕВИЋ ЛАЗАР
+ИСАЈЕВИЋ МИЛОШ
+ИСАЈЕВИЋ ЗДРАВКО
+ИСАЈЛОВ ЈОНЕЛ
+ИСАЈЛОВ ЈОНЕЛ
+ИСАЈЛОВ ЈОНЕЛ
+ИСАЈЛОВИЋ АЛЕКСАНДАР
+ИСАЈЛОВИЋ АЛЕКСАНДАР
+ИСАЈЛОВИЋ БРАНКО
+ИСАЈЛОВИЋ ДУШАН
+ИСАЈЛОВИЋ ФЕДОР
+ИСАК ИЛИЈА
+ИСАК СТАНКО
+ИСАКОВ ЖАРКО
+ИСАКОВ ЖИВОЈИН
+ИСАКОВ АЦКО
+ИСАКОВ БОРИСЛАВ
+ИСАКОВ ЦВЕТКО
+ИСАКОВ ДИМИТРИЈЕ
+ИСАКОВ ДРАГАНА
+ИСАКОВ ДРАГОЉУБ
+ИСАКОВ ДУШИЦА
+ИСАКОВ ЕСТЕР
+ИСАКОВ ИВАН
+ИСАКОВ ЈЕЛИЦА
+ИСАКОВ ЈОВАНКА
+ИСАКОВ КАТИЦА
+ИСАКОВ ЛЕПОСАВА
+ИСАКОВ ЉУБИЦА
+ИСАКОВ ЉУБИЦА
+ИСАКОВ МИЛАН
+ИСАКОВ МИЛАН
+ИСАКОВ МИЛЕНКО
+ИСАКОВ МИЛИВОЈ
+ИСАКОВ МИЛОРАД
+ИСАКОВ МИЛУТИН
+ИСАКОВ МИОДРАГ
+ИСАКОВ МИРОСЛАВ
+ИСАКОВ НЕНАД
+ИСАКОВ ПЕТАР
+ИСАКОВ РАДЕ
+ИСАКОВ РАДИЦА
+ИСАКОВ РАДИНКА
+ИСАКОВ РАДИВОЈ
+ИСАКОВ РАДМИЛА
+ИСАКОВ РАДОМИР
+ИСАКОВ РАДОВАН
+ИСАКОВ РУЖИЦА
+ИСАКОВ САВА
+ИСАКОВ СЛАВКО
+ИСАКОВ СМИЉКА
+ИСАКОВ СРЕДОЈЕ
+ИСАКОВ СТЕВАН
+ИСАКОВ СТЕВАН
+ИСАКОВ ТОДОР
+ИСАКОВ ТОМИСЛАВ
+ИСАКОВ ВОЈИСЛАВ
+ИСАКОВ ЗОРИЦА
+ИСАКОВИЋ ЂУРА ДИПЛ ИНГ
+ИСАКОВИЋ АНА
+ИСАКОВИЋ МАРКО
+ИСАКОВИЋ СТЕВАН
+ИСАКОВИЋ ЗОРАН
+ИСАКОВСКИ ЈАКОВ
+ИСАКОВСКИ СЛОБОДАН ДР
+ИСАНОВИЋ АНА
+ИСИЈАНОВ СЛОБОДАНКА
+ИСИЈАНОВ ВЛАДИМИР
+ИСКАЛОВ МАРИЈАНА
+ИСКИЋ МИЛАДИН
+ИСКРИН БРАНКО
+ИСКРИН ЈЕЛЕНА
+ИСЛАМБАШИЋ ЉИЉАНА
+ИСЛАМИ АБИБ
+ИСЛАМОВИЋ МАХМУД
+ИСЛАМОВИЋ НАДА
+ИСМАИЛИ ШАЋИР
+ИТАЛО ЕВИЦА
+ИТАЛО МАРКО
+ИТЕБЕЈАЦ ЗОРА
+ИВАЧКОВИЋ БРАНИСЛАВ
+ИВАЧКОВИЋ МАНОЈЛО
+ИВАЧКОВИЋ НАДА
+ИВАШЧЕНКО АЛЕКСАНДАР
+ИВАШЧЕНКО АЛЕКСАНДАР
+ИВАШЧЕНКО КАТИЦА
+ИВАШКУ-МИЛОВАНОВИЋ ФЕЛИЧИА
+ИВАК ЈАН
+ИВАН ШАНДОР
+ИВАН ЂУРА
+ИВАН АТИЛА
+ИВАН ЦЕЦИЛИЈА
+ИВАН ГАБОР
+ИВАН ЈОЖЕФ
+ИВАН ЈОВАН
+ИВАН КАТАЛИН
+ИВАН МИХАЈЛО
+ИВАН СИЛВЕСТЕР
+ИВАН ВЕРОНА
+ИВАНЧЕВ ИРИНА
+ИВАНЧЕВ ВЛАДИМИР
+ИВАНЧЕВИЋ ЖАРКО ДР
+ИВАНЧЕВИЋ БОШКО
+ИВАНЧЕВИЋ БРАНКА
+ИВАНЧЕВИЋ ДАРКО
+ИВАНЧЕВИЋ ДИМИТРИЈЕ
+ИВАНЧЕВИЋ ДРАГОСЛАВА
+ИВАНЧЕВИЋ ДУШАН
+ИВАНЧЕВИЋ ГАВРА
+ИВАНЧЕВИЋ ЈОВАН
+ИВАНЧЕВИЋ ЈОВАН
+ИВАНЧЕВИЋ МАРИЦА
+ИВАНЧЕВИЋ МИЛАН
+ИВАНЧЕВИЋ МИЛАН
+ИВАНЧЕВИЋ МИЛЕНКО
+ИВАНЧЕВИЋ МИЛИВОЈЕ ПРОФЕСОР
+ИВАНЧЕВИЋ ОЛИВЕРА
+ИВАНЧЕВИЋ ПЕТАР
+ИВАНЧЕВИЋ ПЕТАР
+ИВАНЧЕВИЋ РАДИВОЈ ДИПЛ ИНГ
+ИВАНЧЕВИЋ РАДМИЛА
+ИВАНЧЕВИЋ СИНИША
+ИВАНЧЕВИЋ СТАНКО
+ИВАНЧЕВИЋ СВЕТОЗАР
+ИВАНЧЕВИЋ ВЛАДА
+ИВАНЧЕВИЋ ВЛАДИМИР ДР
+ИВАНЧИЋ АНТЕ
+ИВАНЧИЋ БРАНКО
+ИВАНЧИЋ ДРАГАН
+ИВАНЧИЋ ЈОСИП
+ИВАНЧИЋ ЈУЛИЈАНА
+ИВАНЧИЋ МАРИЈА
+ИВАНЧИЋ МИЛАН
+ИВАНЧИЋ ОЛГА
+ИВАНЧИЋ СТАНИМИР
+ИВАНЧИЋ СТАНИСЛАВ
+ИВАНЧИЋ СТЕВАН
+ИВАНЧИЋ СТЕВАН
+ИВАНЧИЋ ВЛАДИМИР
+ИВАНЧИН НИКОЛА
+ИВАНЧИН ОЉЕГ
+ИВАНЧУК ПАВАО
+ИВАНДИЋ ИВИЦА
+ИВАНДИЋ РАДМИЛА
+ИВАНЕЖА АНДРИЈА
+ИВАНЕК ЂУРА
+ИВАНЕК ДУШКО
+ИВАНЕК ВИКТОРИЈА
+ИВАНИ ХИЉА
+ИВАНИШ КОВИЉКА
+ИВАНИШ СЛАВКО
+ИВАНИШ СЛАВКО
+ИВАНИШЕВИЋ ЂУРО
+ИВАНИШЕВИЋ ДУШАН
+ИВАНИШЕВИЋ ЕВИЦА
+ИВАНИШЕВИЋ ИЛИЈА
+ИВАНИШЕВИЋ ЈЕЛИЦА
+ИВАНИШЕВИЋ МИХАИЛО
+ИВАНИШЕВИЋ МИЛАН
+ИВАНИШЕВИЋ МИРОСЛАВ
+ИВАНИШЕВИЋ МИРОСЛАВ
+ИВАНИШЕВИЋ МИТАР
+ИВАНИШЕВИЋ НАДА
+ИВАНИШЕВИЋ НАДА
+ИВАНИШЕВИЋ НЕЂА
+ИВАНИШЕВИЋ НЕМАЊА
+ИВАНИШЕВИЋ ОЛГА
+ИВАНИШЕВИЋ ПЕТАР
+ИВАНИШЕВИЋ РАЈКО
+ИВАНИШЕВИЋ СВЕТОЗАР
+ИВАНИШЕВИЋ ТИНА
+ИВАНИШЕВИЋ ВУКИЦА
+ИВАНИЋ ЧЕДОМИР
+ИВАНИЋ ЂОРЂЕ
+ИВАНИЋ АЛБЕРТ
+ИВАНИЋ АНА
+ИВАНИЋ БРАНКО
+ИВАНИЋ ДРАГАНА
+ИВАНИЋ ДРАГАН
+ИВАНИЋ ДРАГИЦА
+ИВАНИЋ ДУШАН
+ИВАНИЋ ДУШАН
+ИВАНИЋ ГРОЗДАНА
+ИВАНИЋ ИВАНА
+ИВАНИЋ ИВАН
+ИВАНИЋ ИВАН
+ИВАНИЋ ИВАН
+ИВАНИЋ ЈОВО
+ИВАНИЋ МАРИНА
+ИВАНИЋ МИЛАН
+ИВАНИЋ МИЛАН
+ИВАНИЋ МИЛАН
+ИВАНИЋ НЕВЕНКА
+ИВАНИЋ ПЕРСИДА
+ИВАНИЋ ПЕТАР
+ИВАНИЋ СНЕЖАНА
+ИВАНИЋ СТЕВАН
+ИВАНИЋ ЗЛАТОЈЕ
+ИВАЊИ СИНИША
+ИВАЊИ ВЕРОНИКА
+ИВАНКОВИЋ ЧЕДОМИР
+ИВАНКОВИЋ ЂОРЂЕ
+ИВАНКОВИЋ БОЖАНА
+ИВАНКОВИЋ БОЖО
+ИВАНКОВИЋ ЈАНКО
+ИВАНКОВИЋ МАРИНКО
+ИВАНКОВИЋ МИЛЕНКО
+ИВАНКОВИЋ МИЛЕ
+ИВАНКОВИЋ МИЛКА
+ИВАНКОВИЋ МИЛКА
+ИВАНКОВИЋ НЕНАД
+ИВАНКОВИЋ НОВО
+ИВАНКОВИЋ РАДЕ
+ИВАНКОВИЋ РАДЕ
+ИВАНКОВИЋ САВО
+ИВАНКОВИЋ СЛАВКО
+ИВАНКОВИЋ ТИХОМИР
+ИВАНКОВИЋ ЗДРАВКО
+ИВАНОВ ЖИВАН
+ИВАНОВ ЂОКА
+ИВАНОВ ЂОРЂЕ
+ИВАНОВ ЂУРЂЕВКА
+ИВАНОВ ЂУРЂИНКА
+ИВАНОВ БОРИС
+ИВАНОВ ДИМИТАР
+ИВАНОВ ДРАГИЦА
+ИВАНОВ ДРАГОСЛАВА
+ИВАНОВ ЕМИЛИЈА
+ИВАНОВ ЕВИЦА
+ИВАНОВ ГАВРА
+ИВАНОВ ЈУЛКА
+ИВАНОВ КАТИЦА
+ИВАНОВ ЉУБОМИР
+ИВАНОВ МАРИЦА
+ИВАНОВ МАРИЈА
+ИВАНОВ МИША
+ИВАНОВ МИЛЕНКО
+ИВАНОВ МИЛЕ
+ИВАНОВ МИЛОРАД
+ИВАНОВ МИТА
+ИВАНОВ НИКОЛА
+ИВАНОВ ОЛИВЕРА
+ИВАНОВ ПЕТАР
+ИВАНОВ СЕРГИЈЕ
+ИВАНОВ СЛАВКО
+ИВАНОВ ВЕРА
+ИВАНОВ ЗДРАВКО
+ИВАНОВ ЗОРА
+ИВАНОВ ЗОРИЦА
+ИВАНОВИЋ ЧЕДОМИР
+ИВАНОВИЋ ЖИКА
+ИВАНОВИЋ ЖИВОРАД
+ИВАНОВИЋ ЂОРЂЕ
+ИВАНОВИЋ АЛЕКСА
+ИВАНОВИЋ АНГЕЛИНА
+ИВАНОВИЋ БОЖА
+ИВАНОВИЋ БОГДАН
+ИВАНОВИЋ БРАНИСЛАВА
+ИВАНОВИЋ БРАНИСЛАВ
+ИВАНОВИЋ БРАНИСЛАВ
+ИВАНОВИЋ БРАНИСЛАВ
+ИВАНОВИЋ БРАНИСЛАВ
+ИВАНОВИЋ ЦВЕЈА
+ИВАНОВИЋ ДЕСАНКА
+ИВАНОВИЋ ДЕСА
+ИВАНОВИЋ ДИМИТРИЈЕ
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГАН
+ИВАНОВИЋ ДРАГОЉУБ
+ИВАНОВИЋ ДРАГОЉУБ
+ИВАНОВИЋ ДУШАНКА
+ИВАНОВИЋ ДУШАН
+ИВАНОВИЋ ФРАЊА
+ИВАНОВИЋ ИЛИЈА
+ИВАНОВИЋ ИЛИЈА
+ИВАНОВИЋ ИВАН ДР
+ИВАНОВИЋ ЈАНОШ
+ИВАНОВИЋ ЈЕЛЕНА
+ИВАНОВИЋ ЈОРДАН
+ИВАНОВИЋ ЈОВАН
+ИВАНОВИЋ КОВИНКА
+ИВАНОВИЋ КРСТОМИР
+ИВАНОВИЋ КСЕНИЈА
+ИВАНОВИЋ ЉУБИЦА
+ИВАНОВИЋ ЉУБИСАВ
+ИВАНОВИЋ ЉУБОМИР
+ИВАНОВИЋ ЉУДЕВИТ
+ИВАНОВИЋ МАРИЈА
+ИВАНОВИЋ МАРИНКО
+ИВАНОВИЋ МАРКО
+ИВАНОВИЋ МИЛАН СУДИЈА
+ИВАНОВИЋ МИЛЕНКО
+ИВАНОВИЋ МИЛЕНКО
+ИВАНОВИЋ МИЛЕТА
+ИВАНОВИЋ МИЛЕВА
+ИВАНОВИЋ МИЛИЦА
+ИВАНОВИЋ МИЛИЈА
+ИВАНОВИЋ МИЛКА
+ИВАНОВИЋ МИЛКО
+ИВАНОВИЋ МИЛОРАД
+ИВАНОВИЋ МИЛУН
+ИВАНОВИЋ МИЛУТИН
+ИВАНОВИЋ МИОДРАГ
+ИВАНОВИЋ МИРА
+ИВАНОВИЋ МИРЈАНА
+ИВАНОВИЋ МИРКО
+ИВАНОВИЋ МИРОСЛАВ
+ИВАНОВИЋ МИРОСЛАВ
+ИВАНОВИЋ МЛАДЕН
+ИВАНОВИЋ НЕБОЈША
+ИВАНОВИЋ НЕГОВАН
+ИВАНОВИЋ НИКОЛА
+ИВАНОВИЋ ОБРАД
+ИВАНОВИЋ ПЕТАР
+ИВАНОВИЋ ПЕТРА
+ИВАНОВИЋ РАШКО
+ИВАНОВИЋ РАДМИЛА
+ИВАНОВИЋ РАДОМИР
+ИВАНОВИЋ РАДОСЛАВ
+ИВАНОВИЋ РАДОВАН
+ИВАНОВИЋ СЕЛИМИР
+ИВАНОВИЋ СИМО
+ИВАНОВИЋ СЛОБОДАНКА
+ИВАНОВИЋ СЛОБОДАН
+ИВАНОВИЋ СЛОБОДАН
+ИВАНОВИЋ СЛОБОДАН
+ИВАНОВИЋ СЛОБОДАН
+ИВАНОВИЋ СТАМЕН
+ИВАНОВИЋ СТАНИСЛАВА
+ИВАНОВИЋ СТАНКА
+ИВАНОВИЋ СТЕВАН
+ИВАНОВИЋ СТЕВАН
+ИВАНОВИЋ СТОЈАН
+ИВАНОВИЋ ВАСИЛИЈЕ
+ИВАНОВИЋ ВЕЛИБОР
+ИВАНОВИЋ ВИТОМИР
+ИВАНОВИЋ ВЛАДА
+ИВАНОВИЋ ВЛАДА
+ИВАНОВИЋ ВОЈИСЛАВ
+ИВАНОВИЋ ВОЈИСЛАВ
+ИВАНОВИЋ ВУКОСАВА
+ИВАНОВИЋ ЗОРАН ДИПЛ ИНГ
+ИВАНОВИЋ ЗОРА
+ИВАНОВСКИ ЂОРЂЕ
+ИВАНОВСКИ БЛАГОЈЕ
+ИВАНОВСКИ ИЛИЈА
+ИВАНОВСКИ СТАНА
+ИВАТОВИЋ БРАНКО
+ИВЕГЕШ АНА
+ИВЕГЕШ ИШТВАН ДИПЛ ИНГ
+ИВЕГЕШ ЛАСЛО
+ИВЕК ВЛАДИМИР
+ИВЕТИЋ БРАНИСЛАВА
+ИВЕТИЋ БРАНИСЛАВА
+ИВЕТИЋ ДИМИТРИЈЕ
+ИВЕТИЋ ДРАГАН
+ИВЕТИЋ ЛАЗА
+ИВЕТИЋ ЉИЉАНА
+ИВЕТИЋ МИЛОЈКО
+ИВЕТИЋ РАДЕ ДР
+ИВЕТИЋ РАДЕ ДР
+ИВЕТИЋ РАДОВАН
+ИВЕТИЋ ВАСА
+ИВЕТИЋ ВЕСНА
+ИВЕЗИЋ АЛЕКСАНДАР
+ИВЕЗИЋ ДРАГО
+ИВЕЗИЋ ГОЈКО
+ИВЕЗИЋ МАРКО ДР
+ИВЕЗИЋ МИЛЕ
+ИВЕЗИЋ ЗОРАН
+ИВЕЗИЋ ЗВОНКО
+ИВИЧИЋ МИРА
+ИВИЧИЋ НАДА
+ИВИЧИЋ-ТОМИЋ БИЉАНА
+ИВИЋ БЛАГОМИР
+ИВИЋ ДЕСАНКА
+ИВИЋ ЈУЛИЈА
+ИВИЋ МЕЛИТА
+ИВИЋ МИРКО МР ПХ
+ИВИЋ ПЕТАР ДИПЛ ОЕЦ
+ИВИЋ РАДЕ
+ИВИЋ СТОЈАН
+ИВИЋ ВАСИЛИЈЕ
+ИВИЋ ВАСО
+ИВИЋ ВОЈИМИР
+ИВИЋ ЗЛАТКО
+ИВКОВ ЧЕДОМИР
+ИВКОВ ЖИВКА
+ИВКОВ ЂОРЂЕ
+ИВКОВ БОШКО
+ИВКОВ БОРИВОЈ
+ИВКОВ ДАНИЛО
+ИВКОВ ДОБРИВОЈ
+ИВКОВ ДУШАН
+ИВКОВ ИСА
+ИВКОВ ИВАН
+ИВКОВ ЈЕЛЕНА
+ИВКОВ ЈЕЛЕНА
+ИВКОВ КАТИЦА
+ИВКОВ КАТИЦА
+ИВКОВ КАТИЦА
+ИВКОВ МИЛЕНКО
+ИВКОВ МИЛИЦА
+ИВКОВ МИЛОВАН
+ИВКОВ ОЛГИЦА
+ИВКОВ ПЕТАР
+ИВКОВ РАДОСЛАВ
+ИВКОВ РАДОВАН
+ИВКОВ САВА
+ИВКОВ СЕКУЛА
+ИВКОВ СЛАВКО
+ИВКОВ СЛОБОДАН
+ИВКОВ СЛОБОДАН
+ИВКОВ СТАНА
+ИВКОВ СТАНИСЛАВА
+ИВКОВ СТЕВАН
+ИВКОВ СТЕВАН
+ИВКОВ СТЕВАН
+ИВКОВ УРОШ
+ИВКОВ ВОЈИСЛАВ
+ИВКОВИЋ ЂУРО
+ИВКОВИЋ АНТУН
+ИВКОВИЋ АРСА
+ИВКОВИЋ БОЖА
+ИВКОВИЋ БОГДАН
+ИВКОВИЋ БОРИСЛАВ
+ИВКОВИЋ БОРИСЛАВ
+ИВКОВИЋ ДЕЈАН
+ИВКОВИЋ ДИВНА
+ИВКОВИЋ ДРАГАН ДИПЛ ИНГ
+ИВКОВИЋ ДУШАН
+ИВКОВИЋ ДУШАН
+ИВКОВИЋ ДУШАН
+ИВКОВИЋ ЕСТЕРА
+ИВКОВИЋ ГУСТАВ ДР
+ИВКОВИЋ-ИВАНДЕКИЋ ДАНИЦА
+ИВКОВИЋ ЈЕЛЕНА
+ИВКОВИЋ ЈОВАН
+ИВКОВИЋ КОВИЉКА
+ИВКОВИЋ-ЛАЗАР ТАТЈАНА ДР
+ИВКОВИЋ ЛУКА
+ИВКОВИЋ МИХАЈЛО
+ИВКОВИЋ МИЛАНКА
+ИВКОВИЋ МИЛАН
+ИВКОВИЋ МИЛЕНТИЈЕ
+ИВКОВИЋ МИЛЕВА
+ИВКОВИЋ МИЛЕ
+ИВКОВИЋ МИЛИЦА
+ИВКОВИЋ МИЛОЉУБ ДИПЛ ИНГ
+ИВКОВИЋ МИЛОРАД
+ИВКОВИЋ МИЛУТИН
+ИВКОВИЋ МИРЈАНА
+ИВКОВИЋ МЛАДЕН
+ИВКОВИЋ НАТАША
+ИВКОВИЋ НАТАША
+ИВКОВИЋ НЕБОЈША
+ИВКОВИЋ НИКОЛА
+ИВКОВИЋ НИКОЛА
+ИВКОВИЋ ПЕТАР
+ИВКОВИЋ ПРЕДРАГ
+ИВКОВИЋ РАДИСАВ
+ИВКОВИЋ РАНКО
+ИВКОВИЋ СТЕВАН
+ИВКОВИЋ СТОЈАН
+ИВКОВИЋ ВЕРА
+ИВКОВИЋ ВЕРА
+ИВКОВИЋ ВЕРИЦА
+ИВКОВИЋ ВЛАДИМИР
+ИВКОВИЋ ВЛАЈКО
+ИВКОВИЋ ЗАГОРКА
+ИВКОВИЋ ЗДРАВКО
+ИВКОВИЋ ЗОРИЦА
+ИВОШ АЛЕКСАНДАР
+ИВОШ РОДОЉУБ
+ИВОШ ВОЈИСЛАВ
+ИВОШЕВ АЛЕКСАНДАР
+ИВОШЕВ ДУШАН
+ИВОШЕВ ИЛИЈА
+ИВОШЕВ КАТАРИНА
+ИВОШЕВ КОСТА
+ИВОШЕВ МАРКО
+ИВОШЕВ СЛАВКО
+ИВОШЕВ ВОЈИСЛАВ
+ИВОШЕВИЋ ЂУРО
+ИВОШЕВИЋ АЛЕКСАНДРА
+ИВОШЕВИЋ ДАНИЦА
+ИВОШЕВИЋ ГОЈКО
+ИВОШЕВИЋ МИЛАН
+ИВОШЕВИЋ МИЛЕНКО
+ИВОШЕВИЋ САВА
+ИВОШЕВИЋ СЛОБОДАН
+ИВОШЕВИЋ ЗОРАН
+ИВОВИЋ ЉУБИША
+ИВОВИЋ ПЕТАР
+ИЗБРАДИЋ СТЕВАН
+ИЗГАРЈАН МИЛИВОЈ
+ЈАШЧЕНКОВ СТАНА
+ЈАШАР ХАСАН
+ЈАШАРАГИЋ ИВАНКА
+ЈАШАРАГИЋ ЗИЈО
+ЈАШАРЕВИЋ ХУСЕИН
+ЈАШАРЕВИЋ МУХАРЕМ
+ЈАШАРЕВИЋ РАМО
+ЈАШАРЕВИЋ ВОЈИСЛАВ
+ЈАШАРИ ЏАФЕР
+ЈАШАРОВ ШАИП
+ЈАШИЋ ДЕСАНКА
+ЈАШИЋ СИНИША
+ЈАШИНСКИ РУЖА
+ЈАШО АНА
+ЈАШО ЈОЖЕФ ДР
+ЈАШО МИЛОСАВ
+ЈАШО МИРОСЛАВА
+ЈАШОВИЋ ГОЈКО
+ЈАЋЕВИЋ МИОДРАГ
+ЈАЋИМОВИЋ АЛЕКСАНДАР ЛЕКАР
+ЈАЋИМОВИЋ БОЈИН
+ЈАЋИМОВИЋ ЈОВА
+ЈАЋИМОВИЋ МИЛЕНКО
+ЈАЋИМОВИЋ МИЛОЈКО
+ЈАЋИМОВИЋ МИРЈАНА
+ЈАЋИМОВИЋ ПЕТАР
+ЈАЋИМОВИЋ СТЕВО
+ЈАЋИМОВИЋ ВОЈИСЛАВ
+ЈАЋИМОВСКИ МОЈСЕ
+ЈАБЛАНОВ ЂУКА
+ЈАБЛАНОВ ДРАГИЦА
+ЈАБЛАНОВ ИГЊАТИЈЕ
+ЈАБЛАНОВ ЈЕЛЕНА
+ЈАБЛАНОВ ЉУБОМИР
+ЈАБЛАНОВ МИЛОРАД ДИПЛ ИНГ
+ЈАБЛАНОВ ЗОРА
+ЈАБЛАНОВ ЗОРА
+ЈАБЛАНОВИЋ ДЕСАНКА
+ЈАБЛАНОВИЋ РАТКО
+ЈАЦАНОВИЋ ЖИВКА
+ЈАЦАНОВИЋ ГАБРИЈЕЛА
+ЈАЦАНОВИЋ ВЛАДИМИР
+ЈАЦИШИН АНКА
+ЈАЦИЋ ДАРИНКА
+ЈАЦИЋ ДРАГАН
+ЈАГЕР АНА
+ЈАГЕР МАРИН
+ЈАГЕР МИХАЈЛО
+ЈАГЕР ПАВАО
+ЈАГЕТИЋ АЛЕКСАНДАР
+ЈАГЕТИЋ МИЛОШ
+ЈАГЕТИЋ СТЕВАН
+ЈАГЕТИЋ ВЕЛИМИР
+ЈАГЕТИЋ ВОЈИСЛАВ
+ЈАГИЋ СЛАВИЦА
+ЈАГЛИЦА БРАНКО
+ЈАГЛИЦА СЛОБОДАН
+ЈАГЊИЋ ДРАГАН
+ЈАГОДИЋ АНЂЕЛКО
+ЈАГОДИЋ ДУШАН
+ЈАГОДИЋ МИЛИЦА
+ЈАГОДИЋ МИРОСЛАВ
+ЈАГОДИЋ ПЕТАР
+ЈАГОДИЋ РАНКО
+ЈАГОДИЋ ВЕЉКО
+ЈАГОДИЋ ВЛАДО
+ЈАГУШТ-АККАД ЛАДА
+ЈАХЈА РЕШАД
+ЈАХУРА ВУКАШИН
+ЈАЈЧАНИН БОЖО
+ЈАЈЧЕВИЋ АНГЕЛА
+ЈАЈАГИН РАДОВАН
+ЈАЈАГИН СПАСОЈЕ
+ЈАЈАГИН ЗОРИЦА
+ЈАЈИЋ ЂОРЂЕ ДР
+ЈАЈИЋ ЂОРЂЕ
+ЈАЈИЋ ДРАГАН
+ЈАЈИЋ ИЛИЈА
+ЈАЈИЋ ИВАНКА
+ЈАЈИЋ ЛАЗАР
+ЈАЈИЋ ЛЕНКА
+ЈАЈИЋ МИЛЕНА
+ЈАЈИЋ МИЛИЦА
+ЈАЈИЋ НИКОЛА
+ЈАЈИЋ САВА
+ЈАЈИЋ СТЕВАН
+ЈАЈИЋ СВЕТЛАНА
+ЈАЈИН ЛАДИСЛАВ
+ЈАЈИН МИРЈАНА
+ЈАЈИН ЗЛАТКО
+ЈАКША ПИРОШКА
+ЈАКШЕВАЦ ДРАГО
+ЈАКШИЋ ЖАРКО
+ЈАКШИЋ ЂОРЂЕ
+ЈАКШИЋ ЂОРЂЕ
+ЈАКШИЋ ЂУРА
+ЈАКШИЋ АНА
+ЈАКШИЋ БОГДАН
+ЈАКШИЋ БОГДАН
+ЈАКШИЋ БОЈАН
+ЈАКШИЋ БРАНКО
+ЈАКШИЋ ДАНЕ
+ЈАКШИЋ ДАНЕ
+ЈАКШИЋ ДАНЕ
+ЈАКШИЋ ДЕЈАН
+ЈАКШИЋ ДМИТАР
+ЈАКШИЋ ДРАГАН
+ЈАКШИЋ ДУШАНКА
+ЈАКШИЋ ДУШАНКА
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШАН
+ЈАКШИЋ ДУШКО
+ЈАКШИЋ ЕМИЛ
+ЈАКШИЋ ИЛИЈА
+ЈАКШИЋ ИЛИЈА
+ЈАКШИЋ ИВИЦА
+ЈАКШИЋ ИВИЦА
+ЈАКШИЋ ЈАДРАНКА
+ЈАКШИЋ ЈАСМИНКА
+ЈАКШИЋ ЈЕЛЕНА
+ЈАКШИЋ ЈОВАНКА
+ЈАКШИЋ ЈОВАН
+ЈАКШИЋ ЈОВАН
+ЈАКШИЋ КАТИЦА
+ЈАКШИЋ ЉИЉА
+ЈАКШИЋ ЉУБИСАВ
+ЈАКШИЋ ЉУБОМИР
+ЈАКШИЋ ЉУБОМИР
+ЈАКШИЋ ЉУБОМИР
+ЈАКШИЋ ЉУБОМИР
+ЈАКШИЋ МАРКО
+ЈАКШИЋ МАРКО
+ЈАКШИЋ МАРКО
+ЈАКШИЋ МИЈАТ
+ЈАКШИЋ МИЛАН
+ЈАКШИЋ МИЛАН
+ЈАКШИЋ МИЛЕНКО
+ЈАКШИЋ МИЛЕВА
+ЈАКШИЋ МИЛОШ
+ЈАКШИЋ МИЛОРАД
+ЈАКШИЋ МИЛОРАД
+ЈАКШИЋ МИОДРАГ
+ЈАКШИЋ МИРКО
+ЈАКШИЋ НЕБОЈША
+ЈАКШИЋ НЕДЕЉКО
+ЈАКШИЋ НЕНАД
+ЈАКШИЋ ПАВЛЕ
+ЈАКШИЋ ПАВЛЕ
+ЈАКШИЋ ПЕТАР
+ЈАКШИЋ ПЕТАР
+ЈАКШИЋ-ПРОВЧИ БРАНКА
+ЈАКШИЋ РАДЕНКО
+ЈАКШИЋ РАДЕ
+ЈАКШИЋ РАДЕ
+ЈАКШИЋ РАДИША
+ЈАКШИЋ РАДОЈКО
+ЈАКШИЋ РАДОВАН
+ЈАКШИЋ РАДУН
+ЈАКШИЋ РИСТО
+ЈАКШИЋ РОСА
+ЈАКШИЋ РУЖИЦА
+ЈАКШИЋ РУЖИЦА
+ЈАКШИЋ САВА
+ЈАКШИЋ СЛОБОДАН
+ЈАКШИЋ СМИЉА
+ЈАКШИЋ СТЕВАН
+ЈАКШИЋ СВЕТКО
+ЈАКШИЋ СВЕТЛАНА ДИПЛ ПХ
+ЈАКШИЋ ТОМИСЛАВ
+ЈАКШИЋ ВАСИЛИЈЕ
+ЈАКШИЋ ВЕЛИМИР
+ЈАКШИЋ ВЕРА
+ЈАКШИЋ ВЛАДА
+ЈАКШИЋ ВЛАДИМИР
+ЈАКШИЋ ВОЈИСЛАВ
+ЈАКАБ ДЕЖЕ
+ЈАКАБ ЈОЖЕФ
+ЈАКАБ ПАВЕЛ
+ЈАКЕШЕВИЋ ДРАГАН
+ЈАКЕШЕВИЋ НИКО
+ЈАКИША ИШТВАН
+ЈАКИЋ ЂОРЂЕ
+ЈАКИЋ ДАНИЦА
+ЈАКИЋ ДАРА
+ЈАКИЋ ДЕСАНКА
+ЈАКИЋ МИЛАНКА
+ЈАКИЋ МИОДРАГ
+ЈАКИЋ НИКОЛА
+ЈАКИЋ СТЕВАН
+ЈАКИЋ ВИДА
+ЈАКИЦА ЧЕДО
+ЈАКИЦА ИЛИЈА
+ЈАКИМОВ СЛАВКО ДР ЛЕКАР
+ЈАКИМОВА-ГАЗЕПОВА ЈУЛКА ДР
+ЈАКИМОВСКИ БЛАГОЈ
+ЈАКИМОВСКИ БОГОСЛАВ
+ЈАКИМОВСКИ БОРКО
+ЈАКИМОВСКИ ДАНЕ
+ЈАКЛИЋ ИВАН
+ЈАКОБ ЈОШКА
+ЈАКОБ ЈОЖЕФ
+ЈАКОБ ЛАЈОШ
+ЈАКОБАЦ ЂУРЂИЦА
+ЈАКОБИ БОРИС
+ЈАКОБИ ТАТЈАНА
+ЈАКОБИ ВИЛМОШ
+ЈАКОБОВИЋ ФРАЊО
+ЈАКОБС ИШТВАН
+ЈАКОНИЋ ДРАГОСЛАВ ДР
+ЈАКОНИЋ ЈАСМИНА
+ЈАКОНИЋ МИЛАН ДИПЛ ОЕЦ
+ЈАКОНИЋ РАДМИЛА
+ЈАКОПЧЕВИЋ БРАНКА
+ЈАКОПОВИЋ БРАНИСЛАВА
+ЈАКОПОВИЋ МИРОСЛАВ
+ЈАКОПОВИЋ ВЛАДИМИР
+ЈАКОТИН ЖИВКО
+ЈАКОТИН КОСТА
+ЈАКОТИН ПЛЕМЕНКА
+ЈАКОВ САЛАМУН
+ЈАКОВАЦ ИВАН
+ЈАКОВИЋ РАДЕ
+ЈАКОВЉЕВ ЖАРКО
+ЈАКОВЉЕВ ЂУРА
+ЈАКОВЉЕВ ЂУРИЦА
+ЈАКОВЉЕВ АЛЕКСЕЈ
+ЈАКОВЉЕВ ДАНИЦА
+ЈАКОВЉЕВ ДРАГАН
+ЈАКОВЉЕВ ДУШАН
+ЈАКОВЉЕВ ИВАН
+ЈАКОВЉЕВ ЈЕФРЕМ
+ЈАКОВЉЕВ КАТА
+ЈАКОВЉЕВ КОСТА
+ЈАКОВЉЕВ КРИСТИФОР
+ЈАКОВЉЕВ МАРИНА
+ЈАКОВЉЕВ МИЛОШ
+ЈАКОВЉЕВ МИЛОШ
+ЈАКОВЉЕВ МИРОСЛАВ
+ЈАКОВЉЕВ РАДОВАН
+ЈАКОВЉЕВ СЛОБОДАН
+ЈАКОВЉЕВ СВЕТОЗАР
+ЈАКОВЉЕВ ВЛАДА
+ЈАКОВЉЕВ ЗЛАТОЈЕ
+ЈАКОВЉЕВИЋ ЖИВАН
+ЈАКОВЉЕВИЋ ЖИВОРАД
+ЈАКОВЉЕВИЋ ЂОРЂЕ
+ЈАКОВЉЕВИЋ ЂОРЂО
+ЈАКОВЉЕВИЋ ЂУРЂИНКА
+ЈАКОВЉЕВИЋ АЛЕКСАНДАР
+ЈАКОВЉЕВИЋ АНА
+ЈАКОВЉЕВИЋ БОЖАНА
+ЈАКОВЉЕВИЋ БОГДАН
+ЈАКОВЉЕВИЋ БОРИША
+ЈАКОВЉЕВИЋ БРАНКА
+ЈАКОВЉЕВИЋ ДАМЈАН
+ЈАКОВЉЕВИЋ ДАМЈАН
+ЈАКОВЉЕВИЋ ДИВНА
+ЈАКОВЉЕВИЋ ДРАГАН
+ЈАКОВЉЕВИЋ ДРАГОСЛАВ
+ЈАКОВЉЕВИЋ ЕМИЛИЈА
+ЈАКОВЉЕВИЋ ГОЈКО
+ЈАКОВЉЕВИЋ ГРОЗДАНА
+ЈАКОВЉЕВИЋ ИГЊАТ
+ЈАКОВЉЕВИЋ ЈАЊА
+ЈАКОВЉЕВИЋ ЈОСО
+ЈАКОВЉЕВИЋ ЈОВАН
+ЈАКОВЉЕВИЋ ЈОВАН
+ЈАКОВЉЕВИЋ ЈОВО
+ЈАКОВЉЕВИЋ ЈОВО
+ЈАКОВЉЕВИЋ ЛАЗАР
+ЈАКОВЉЕВИЋ ЉИЉАНА
+ЈАКОВЉЕВИЋ ЉУБИНКО
+ЈАКОВЉЕВИЋ ЛУКА
+ЈАКОВЉЕВИЋ МАРКО
+ЈАКОВЉЕВИЋ МИЛАНА
+ЈАКОВЉЕВИЋ МИЛАН
+ЈАКОВЉЕВИЋ МИЛАН
+ЈАКОВЉЕВИЋ МИЛЕНА
+ЈАКОВЉЕВИЋ МИЛИЋ
+ЈАКОВЉЕВИЋ МИЛИЦА
+ЈАКОВЉЕВИЋ МИЛИЦА
+ЈАКОВЉЕВИЋ МИЛИВОЈ МР ПХ
+ЈАКОВЉЕВИЋ МИЉАНА
+ЈАКОВЉЕВИЋ МИЛОШ
+ЈАКОВЉЕВИЋ МИЛОВАН
+ЈАКОВЉЕВИЋ МИЛУТИН
+ЈАКОВЉЕВИЋ МИРЈАНА
+ЈАКОВЉЕВИЋ МИРКО
+ЈАКОВЉЕВИЋ МИРОСЛАВ
+ЈАКОВЉЕВИЋ МИТА
+ЈАКОВЉЕВИЋ НИКОЛА
+ЈАКОВЉЕВИЋ ОБРАД
+ЈАКОВЉЕВИЋ ПАЈА
+ЈАКОВЉЕВИЋ РАДИША
+ЈАКОВЉЕВИЋ РАДИВОЈ
+ЈАКОВЉЕВИЋ РАДОЈКО
+ЈАКОВЉЕВИЋ САВА
+ЈАКОВЉЕВИЋ СИМО
+ЈАКОВЉЕВИЋ СЛОБОДАН
+ЈАКОВЉЕВИЋ СОЊА
+ЈАКОВЉЕВИЋ СТЕВАН
+ЈАКОВЉЕВИЋ ТАТЈАНА
+ЈАКОВЉЕВИЋ ВАСА
+ЈАКОВЉЕВИЋ ВАСА
+ЈАКОВЉЕВИЋ ВАСИЛИЈЕ
+ЈАКОВЉЕВИЋ ВИКТОР
+ЈАКОВЉЕВИЋ ВИКТОР
+ЈАКОВЉЕВИЋ ВИКТОР
+ЈАКОВЉЕВИЋ ЗДРАВКО
+ЈАКОВОВИЋ ДУШАН
+ЈАКУШ МИРЈАНА
+ЈАКУБЕЦ ЂУРА
+ЈАКУБЕЦ ЛАДИСЛАВ
+ЈАМА НАДА
+ЈАМБОР АНДРЕА
+ЈАМБОР ДАНИЕЛА
+ЈАМБОР ИМРЕ
+ЈАМБОР МИХАЉ
+ЈАМБРУШИЋ ФРАЊО
+ЈАМИНА МИЛОВАН
+ЈАМИНА РАТКО
+ЈАМРИК ЂОРЂЕ
+ЈАМРИК ЈЕЛЕНА
+ЈАМРИК ЉУБИЦА
+ЈАМРИК ОТО
+ЈАНЧА ДЕЈАН ДР
+ЈАНЧА КОСТА ДР
+ЈАНЧА ЉУБИЦА
+ЈАНЧИЋ БИЉАНА
+ЈАНЧИЋ БОЖАНА
+ЈАНЧИЋ БОГДАН
+ЈАНЧИЋ ДИМИТРИЈЕ
+ЈАНЧИЋ ДРАГИЊА
+ЈАНЧИЋ ДРАГОСЛАВА
+ЈАНЧИЋ ДРАГОСЛАВ
+ЈАНЧИЋ ДУШАН
+ЈАНЧИЋ ДУШАН
+ЈАНЧИЋ ГОРДАНА
+ЈАНЧИЋ ГОРИЦА
+ЈАНЧИЋ ЈЕРОСИМ
+ЈАНЧИЋ ЉУБИЦА
+ЈАНЧИЋ МИЛОШ
+ЈАНЧИЋ МИРОСЛАВ
+ЈАНЧИЋ МЛАДЕН
+ЈАНЧИЋ НИКОЛА
+ЈАНЧИЋ ПЕРА
+ЈАНЧИЋ ПЕТАР
+ЈАНЧИЋ РАДОВАН
+ЈАНЧИЋ САВА
+ЈАНЧИЋ СВЕТИСЛАВ
+ЈАНЧИЋ СВЕТИСЛАВ
+ЈАНЧИЋ ТИХОМИР
+ЈАНЧИЋ ТИНКА
+ЈАНЧИЋ ВЕЛИБОР
+ЈАНЧИЋ ВИНКА
+ЈАНЧИЋ ВЛАДИМИР
+ЈАНЧИЋ ВЛАСТА
+ЈАНЧУРИЋ АЛЕКСАНДАР
+ЈАНЧУРИЋ ДАРИНКА
+ЈАНЧУРИЋ ДУШАН
+ЈАНЧУРИЋ ЈОВАН
+ЈАНЧУРИЋ ЛАЗАР
+ЈАНЧУРИЋ ЛЕНКА
+ЈАНЧУРИЋ МИРЈАНА
+ЈАНЧУРИЋ САВА
+ЈАНЖЕКОВИЋ МИЛЕВКА
+ЈАНЖЕКОВИЋ ОЛГА
+ЈАНЖЕЉ АНТОН
+ЈАНАЧЕК ЂОРЂЕ
+ЈАНАЧЕК КАТИЦА
+ЈАНАЧКОВИЋ СТОИЛ
+ЈАНАЋ ЈАНОШ
+ЈАНАЋ КАРОЉ
+ЈАНЦИЋ БЛАГОЈЕ
+ЈАНЦИЋ ПРЕДРАГ
+ЈАНДРИЋ ЂУРИЦА
+ЈАНДРИЋ БОГДАН
+ЈАНДРИЋ ЈАНДРИЈА
+ЈАНДРИЋ МАРИНКО
+ЈАНДРИЋ МАРКО
+ЈАНДРИЋ МАРКО
+ЈАНДРИЋ МИЋО
+ЈАНДРИЋ МИЛЕНА
+ЈАНДРИЋ МИЛИНА
+ЈАНДРИЋ МИЛКА
+ЈАНДРИЋ МИЛОРАД
+ЈАНДРИЋ МИЛОРАД
+ЈАНДРИЋ МИРОСЛАВ
+ЈАНДРИЋ МИРОСЛАВ
+ЈАНДРИЋ МИТАР
+ЈАНДРИЋ МОМЧИЛО
+ЈАНДРИЋ НЕДЕЉКО
+ЈАНДРИЋ РАДОВАН
+ЈАНДРИЋ РАТКО
+ЈАНДРИЋ РИСТО
+ЈАНДРИЋ СИМО
+ЈАНДРИЋ СЛОБОДАН
+ЈАНДРИЋ СРЕТЕН
+ЈАНДРИЋ СТАНКО
+ЈАНДРИЋ СТАНКО
+ЈАНДРИЋ СТАНКО
+ЈАНДРИЋ УГЉЕША
+ЈАНДРИЋ ВИДА
+ЈАНДРИЋ ВИНКА
+ЈАНДРИЋ ЗОРАН
+ЈАНДРИЋ ЗОРАН
+ЈАНЕШ НЕВЕН
+ЈАНЕГА СНЕЖАНА
+ЈАНЕВ БЛАГОЈЕ ДИПЛ ИНГ
+ЈАНЕВСКИ АЛЕКСАНДАР
+ЈАНИЧИЋ БЛАЖО
+ЈАНИЧИЋ БОЖА
+ЈАНИЧИЋ ЈЕЛЕНА
+ЈАНИЧИЋ МИЛЕВА
+ЈАНИЧИЋ МИРКО
+ЈАНИЧИЋ РАДОЈИЦА
+ЈАНИЧИЋ СТЕВО
+ЈАНИЋ ЧАСЛАВ ДИПЛ ИНГ
+ЈАНИЋ ЖИВОРАД
+ЈАНИЋ АЛЕКСАНДАР
+ЈАНИЋ АНЂЕЛКО
+ЈАНИЋ ДУШАН
+ЈАНИЋ ДУШКО
+ЈАНИЋ-ХИЛТ ГОРДАНА
+ЈАНИЋ ИРЕНА
+ЈАНИЋ ИВАН ДР
+ЈАНИЋ МИЛИСАВ
+ЈАНИЋ НАДА
+ЈАНИЋ РАДОЈКА
+ЈАНИЋ СЛОБОДАН
+ЈАНИЋ ВЛАДИМИР
+ЈАНИЋИЈЕВИЋ МИЛЕНКО
+ЈАНИЋИЈЕВИЋ МИЛОШ
+ЈАНИЋИЈЕВИЋ МИРКО
+ЈАНИЋИЈЕВИЋ МОМЧИЛО
+ЈАНИЋИЈЕВИЋ НАДЕЖДА
+ЈАНИЋИЈЕВИЋ ОЗРЕНКА
+ЈАНИЋИЈЕВИЋ РАТКО
+ЈАНИЋИЈЕВИЋ СОФИЈА
+ЈАНИЋИЈЕВИЋ ВИТОМИР
+ЈАНИЋИН АНГЕЛИНА
+ЈАНИЋИН ИЛИЈА
+ЈАНИЦКИ СТАНИМИР
+ЈАНИК ФЕРЕНЦ
+ЈАЊАНИН БРАНКО
+ЈАЊАНИН СИМО
+ЈАЊАТОВИЋ ДЕЈАН
+ЈАЊАТОВИЋ ГОРИЦА
+ЈАЊАТОВИЋ МАНЕ
+ЈАЊАТОВИЋ МИЛАН
+ЈАЊАТОВИЋ МИРКО
+ЈАЊАТОВИЋ НЕДЕЉКО
+ЈАЊАТОВИЋ НИКОЛА
+ЈАЊАТОВИЋ СЛАВИЦА
+ЈАЊАТОВИЋ СЛАВИЦА
+ЈАЊАТОВИЋ ВЕРА
+ЈАЊЕТОВ РАДА
+ЈАЊЕТОВИЋ БРАНКО
+ЈАЊЕТОВИЋ НЕБОЈША
+ЈАЊЕТОВИЋ СЛАВИЦА
+ЈАЊЕТОВИЋ СЛОБОДАН
+ЈАЊЕВИЋ ДРАГОСЛАВ
+ЈАЊЕВИЋ КСЕНИЈА
+ЈАЊЕВИЋ ЗОРАН
+ЈАЊЕВИЋ ЗОРАН
+ЈАЊИЧИЋ СИМО
+ЈАЊИШ ЈЕЛИЦА
+ЈАЊИЋ ЧЕДОМИР
+ЈАЊИЋ ЖЕЉКО
+ЈАЊИЋ ЖИВКА
+ЈАЊИЋ ЖИВКО
+ЈАЊИЋ ЂОРЂЕ ДР
+ЈАЊИЋ БОШКО
+ЈАЊИЋ ДАНИЦА
+ЈАЊИЋ ДРАГОМИР ДИПЛ ОЕЦ
+ЈАЊИЋ ИЛИЈА
+ЈАЊИЋ ЈЕЛА
+ЈАЊИЋ ЈЕВРЕМ
+ЈАЊИЋ ЈЕВТО
+ЈАЊИЋ ЈОВАН
+ЈАЊИЋ ЈОВО
+ЈАЊИЋ ЈОВО
+ЈАЊИЋ ЈОВО
+ЈАЊИЋ КСЕНИЈА
+ЈАЊИЋ ЉУБОМИР
+ЈАЊИЋ ЛУКА
+ЈАЊИЋ МАРИЈА
+ЈАЊИЋ МАРКО
+ЈАЊИЋ МИЛИЦА
+ЈАЊИЋ МИЛИВОЈ
+ЈАЊИЋ МИЛКА
+ЈАЊИЋ МИЛОМИР
+ЈАЊИЋ МЛАДЕН
+ЈАЊИЋ НАТАША
+ЈАЊИЋ НЕБОЈША
+ЈАЊИЋ РАДОВАН
+ЈАЊИЋ САВО
+ЈАЊИЋ СТЕВАН
+ЈАЊИЋ ВИТОМИР
+ЈАЊИЋ ВОЈИСЛАВ МР
+ЈАЊИЋ ВОЈКО
+ЈАЊИЋ ВУКОТА
+ЈАЊИН БОГОЉУБ
+ЈАЊИН ДАМЈАН
+ЈАЊИН ЛАЗАР
+ЈАЊИН МИЛИВОЈ
+ЈАЊИН РАДИВОЈ
+ЈАЊИН СНЕЖАНА
+ЈАЊОШ ЗОРАН
+ЈАЊОШЕВИЋ БРАНИСЛАВ
+ЈАЊОШЕВИЋ МИЛИЦА
+ЈАЊОШЕВИЋ СТЕВАНКА
+ЈАЊУШЕВИЋ БОСИЉКА
+ЈАЊУШЕВИЋ ГОЈКО
+ЈАЊУШЕВИЋ ЈОКИЦА
+ЈАЊУШЕВИЋ МИРА
+ЈАЊУШЕВИЋ НЕДЕЉКО
+ЈАЊУШЕВИЋ НЕДЕЉКО
+ЈАЊУШЕВИЋ СТОЈАН
+ЈАНКА ШАНДОР
+ЈАНКА ИВАН
+ЈАНКАЊ ВЛАДО
+ЈАНКИЋ КРИСТИНА
+ЈАНКО ЈАНОШ
+ЈАНКОВ БОРИСЛАВ
+ЈАНКОВ БОРИСЛАВ
+ЈАНКОВ БОРИСЛАВ
+ЈАНКОВ БРАНИСЛАВ
+ЈАНКОВ ДРАГИЦА
+ЈАНКОВ ДУШАН
+ЈАНКОВ ИВАН
+ЈАНКОВ ЈЕЛИЦА
+ЈАНКОВ ЈОВАН
+ЈАНКОВ ЈОВИЦА
+ЈАНКОВ МИЛАН
+ЈАНКОВ МИЛИЈАНА
+ЈАНКОВ МИОМИР
+ЈАНКОВ МИТА
+ЈАНКОВ МИТКО
+ЈАНКОВ НАДА
+ЈАНКОВ НЕДЕЉКО
+ЈАНКОВ НИКОЛА
+ЈАНКОВ НИКОЛА
+ЈАНКОВ НОВКА
+ЈАНКОВ ПРЕДРАГ
+ЈАНКОВ РАДИВОЈ
+ЈАНКОВ РАДОСЛАВА
+ЈАНКОВ РАНЂЕЛ
+ЈАНКОВ СЛОБОДАН
+ЈАНКОВ СЛОБОДАН
+ЈАНКОВ СМИЉКА
+ЈАНКОВ СПАСОЈА
+ЈАНКОВ СРЕДОЈЕ
+ЈАНКОВ ТИХОМИР
+ЈАНКОВ ВЕРА
+ЈАНКОВ ЗАГОРКА ДР
+ЈАНКОВИЋ ЧАСЛАВ
+ЈАНКОВИЋ ЧЕДО
+ЈАНКОВИЋ ЧЕДО
+ЈАНКОВИЋ ЖАРКО ДИПЛ ИНГ
+ЈАНКОВИЋ ЖАРКО
+ЈАНКОВИЋ ЖИВКО
+ЈАНКОВИЋ ЖИВОРАД
+ЈАНКОВИЋ ЖИВОРАД
+ЈАНКОВИЋ ЖИВОРАД
+ЈАНКОВИЋ ЂОРЂЕ
+ЈАНКОВИЋ ЂОРЂЕ
+ЈАНКОВИЋ ЂУРЂИЦА
+ЈАНКОВИЋ ЂУРА
+ЈАНКОВИЋ АЛЕКСАНДАР
+ЈАНКОВИЋ АЛЕКСАНДАР
+ЈАНКОВИЋ АНА
+ЈАНКОВИЋ АНИЦА
+ЈАНКОВИЋ АНКА
+ЈАНКОВИЋ БОШКО
+ЈАНКОВИЋ БОШКО
+ЈАНКОВИЋ БОЖИДАР
+ЈАНКОВИЋ БОЖИДАР
+ЈАНКОВИЋ БОЖО
+ЈАНКОВИЋ БОГОЉУБ
+ЈАНКОВИЋ БОРИВОЈ ДР ЛЕКАР
+ЈАНКОВИЋ БРАНКО
+ЈАНКОВИЋ БРАТИСЛАВ
+ЈАНКОВИЋ ДАРА
+ЈАНКОВИЋ ДИМИТРИЈЕ
+ЈАНКОВИЋ ДИМИТРИЈЕ
+ЈАНКОВИЋ ДИМИТРИЈЕ
+ЈАНКОВИЋ ДОБРИВОЈЕ
+ЈАНКОВИЋ ДОБРИВОЈ
+ЈАНКОВИЋ ДРАГАНА
+ЈАНКОВИЋ ДРАГАН
+ЈАНКОВИЋ ДРАГАН
+ЈАНКОВИЋ ДРАГАН
+ЈАНКОВИЋ ДРАГИЊА
+ЈАНКОВИЋ ДРАГОМИР
+ЈАНКОВИЋ ДРАГОСЛАВ
+ЈАНКОВИЋ ДУШАНКА
+ЈАНКОВИЋ ДУШАН
+ЈАНКОВИЋ ДУШАН
+ЈАНКОВИЋ ДУШИЦА
+ЈАНКОВИЋ ГОРДАНА
+ЈАНКОВИЋ ГОРДАНА
+ЈАНКОВИЋ ХРИСТИВОЈЕ
+ЈАНКОВИЋ ИГЊАТ
+ЈАНКОВИЋ ЈЕЛИЦА
+ЈАНКОВИЋ ЈОРДАН
+ЈАНКОВИЋ ЈОВАН
+ЈАНКОВИЋ ЈОВАН
+ЈАНКОВИЋ ЈОВАН
+ЈАНКОВИЋ ЈОВАН
+ЈАНКОВИЋ ЈУЛИЈАНА
+ЈАНКОВИЋ КАЛМАН ДИПЛ ИНГ
+ЈАНКОВИЋ КАЛМАН
+ЈАНКОВИЋ КАТИЦА
+ЈАНКОВИЋ КОВИЉКА
+ЈАНКОВИЋ КРСТА
+ЈАНКОВИЋ-КУЗМАНЧЕВ ОЛИВЕРА
+ЈАНКОВИЋ ЛАСЛО
+ЈАНКОВИЋ ЛАСЛО
+ЈАНКОВИЋ ЛАЗАР
+ЈАНКОВИЋ ЛАЗАР
+ЈАНКОВИЋ ЉИЉАНА
+ЈАНКОВИЋ ЉУБИЦА
+ЈАНКОВИЋ ЉУБИЦА
+ЈАНКОВИЋ ЉУБИЦА
+ЈАНКОВИЋ ЉУБОМИР
+ЈАНКОВИЋ МАРА
+ЈАНКОВИЋ МАРИЈАН
+ЈАНКОВИЋ МАРИЈА
+ЈАНКОВИЋ МАРИЈА
+ЈАНКОВИЋ МАРИЈА
+ЈАНКОВИЋ МАРИЈА
+ЈАНКОВИЋ МАРИНА
+ЈАНКОВИЋ МАРКО
+ЈАНКОВИЋ МЕЛАНИЈА
+ЈАНКОВИЋ МИЋА
+ЈАНКОВИЋ МИЋА
+ЈАНКОВИЋ МИЛАН
+ЈАНКОВИЋ МИЛЕНА
+ЈАНКОВИЋ МИЛЕНКО
+ЈАНКОВИЋ МИЛЕНКО
+ЈАНКОВИЋ МИЛИЦА
+ЈАНКОВИЋ МИЛИЦА
+ЈАНКОВИЋ МИЛИЈАНА
+ЈАНКОВИЋ МИЛИНКО
+ЈАНКОВИЋ МИЛИСАВ
+ЈАНКОВИЋ МИЛИВОЈЕ
+ЈАНКОВИЋ МИЛОЈЕ
+ЈАНКОВИЋ МИЛОЈИЦА
+ЈАНКОВИЋ МИЛОМИР
+ЈАНКОВИЋ МИЛОРАД
+ЈАНКОВИЋ МИЛОРАД
+ЈАНКОВИЋ МИЛОРАД
+ЈАНКОВИЋ МИЛОСАВ
+ЈАНКОВИЋ МИЛОСАВ
+ЈАНКОВИЋ МИЛОСАВ
+ЈАНКОВИЋ МИЛУТИН
+ЈАНКОВИЋ МИЛУТИН
+ЈАНКОВИЋ МИЛУТИН
+ЈАНКОВИЋ МИЛУТИН
+ЈАНКОВИЋ МИРЈАНА
+ЈАНКОВИЋ МИРОЉУБ
+ЈАНКОВИЋ МИТАР
+ЈАНКОВИЋ МЛАДЕН
+ЈАНКОВИЋ-МРКИЋ ЗОРА ДИПЛ ИНГ
+ЈАНКОВИЋ НАДА
+ЈАНКОВИЋ НАДА
+ЈАНКОВИЋ НАСТА
+ЈАНКОВИЋ НЕНАД
+ЈАНКОВИЋ НИКОЛА
+ЈАНКОВИЋ ОБРАД
+ЈАНКОВИЋ ПАВЛЕ
+ЈАНКОВИЋ ПАВЛЕ
+ЈАНКОВИЋ ПАВЛЕ
+ЈАНКОВИЋ ПЕТАР
+ЈАНКОВИЋ ПЕТАР
+ЈАНКОВИЋ ПЕТАР
+ЈАНКОВИЋ ПРВОСЛАВ
+ЈАНКОВИЋ ПРВОСЛАВ
+ЈАНКОВИЋ РАДИВОЈЕ
+ЈАНКОВИЋ РАДОМИР
+ЈАНКОВИЋ РАДОСЛАВ
+ЈАНКОВИЋ РАДОСЛАВ
+ЈАНКОВИЋ РАДОВАН
+ЈАНКОВИЋ РАЈКО
+ЈАНКОВИЋ РАЈКО
+ЈАНКОВИЋ РАНКО
+ЈАНКОВИЋ РАТКО
+ЈАНКОВИЋ РОСА
+ЈАНКОВИЋ РУЖА
+ЈАНКОВИЋ СЛАВИЦА
+ЈАНКОВИЋ СЛАВКО
+ЈАНКОВИЋ СЛАВКО
+ЈАНКОВИЋ СЛОБОДАН
+ЈАНКОВИЋ СЛОБОДАН
+ЈАНКОВИЋ СЛОБОДАН
+ЈАНКОВИЋ СЛОБОДАН
+ЈАНКОВИЋ СОФИЈА
+ЈАНКОВИЋ СПАСА
+ЈАНКОВИЋ СПАСОЈЕ
+ЈАНКОВИЋ СПОМЕНКА
+ЈАНКОВИЋ СРБОЉУБ
+ЈАНКОВИЋ СТАНКО
+ЈАНКОВИЋ СТЕВАН
+ЈАНКОВИЋ СТЕВАН
+ЈАНКОВИЋ СТЕВАН
+ЈАНКОВИЋ СТОЈАНКА
+ЈАНКОВИЋ СВЕТИСЛАВ
+ЈАНКОВИЋ СВЕТОЗАР
+ЈАНКОВИЋ ТИБОР
+ЈАНКОВИЋ ТОДОР
+ЈАНКОВИЋ ТОДОР
+ЈАНКОВИЋ ТОДОР
+ЈАНКОВИЋ ВЕСНА
+ЈАНКОВИЋ ВИТОМИР
+ЈАНКОВИЋ ВИТОМИР
+ЈАНКОВИЋ ВЛАДИМИР
+ЈАНКОВИЋ ВУКИЋ
+ЈАНКОВИЋ ВУКИЦА
+ЈАНКОВИЋ ВУКОМАН
+ЈАНКОВИЋ ЗЛАТОЈЕ
+ЈАНКОВИЋ ЗОЛТАН
+ЈАНКОВИЋ ЗОРАН
+ЈАНКОВИЋ ЗОРАН
+ЈАНКОВИЋ ЗОРИЦА
+ЈАНКОВИЋ ЗОРИЦА
+ЈАНКОВИЋ ЗОРИЦА
+ЈАНКОВИЋ ЗОРКА
+ЈАНКУЛОВ ДАНИЦА
+ЈАНКУЛОВ-ДЕМЈЕН МАЈА
+ЈАНКУЛОВ ДРАГИША МР ПХ
+ЈАНКУЛОВ СТЕВАН
+ЈАНКУЛОВСКИ МАРИЈА
+ЈАНКУЛОВСКИ ПЕТАР
+ЈАНО ЈУЛИЈА
+ЈАНОШЕВ БИСЕРКА
+ЈАНОШЕВ ДРАГИЦА
+ЈАНОШЕВ ЉИЉАНА
+ЈАНОШЕВ МИЛАН
+ЈАНОШЕВ МИЛЕНА
+ЈАНОШЕВ МИЛЕНКО
+ЈАНОШЕВИЋ РАДИВОЈ
+ЈАНОШИ ФРАНЦИШКА
+ЈАНОШИ ИЛОНА
+ЈАНОШИ КАРЛО
+ЈАНОШИ ЛАСЛО
+ЈАНОШИ МАРГИТА
+ЈАНОШИ МИХАЉ
+ЈАНОШИ МИХАЉ
+ЈАНОШИ ТЕРЕЗА
+ЈАНОШИ ЗОЛТАН
+ЈАНОВАЦ ЖИВОЈИН
+ЈАНОВИЋ ЉИЉА
+ЈАНУШКО ИШТВАН
+ЈАНУС МИЛКА
+ЈАНУС ВОИСЛАВ
+ЈАНУЗОВИЋ ДУШАНКА
+ЈАНУЗОВИЋ ЈОЛАН
+ЈАНУЗОВИЋ МИЛОВАН
+ЈАНУЗОВИЋ МИРАЉУБ
+ЈАНУЗОВИЋ НОВИЦА ДР
+ЈАНУЗОВИЋ СЛОБОДАН
+ЈАНУЗОВИЋ СВЕТЛАНА
+ЈАПУНЏА ЛАЗА
+ЈАПУНЏИЋ ЂОРЂЕ
+ЈАПУНЏИЋ ГОРДАНА
+ЈАПУНЏИЋ МИРКО
+ЈАПУНЏИЋ НИКОЛА
+ЈАПУНЏИЋ НИКОЛА
+ЈАПУНЏИЋ НИКОЛА
+ЈАПУНЏИЋ САВА
+ЈАРАК ИВАН
+ЈАРАМАЗ ДИЈАНА
+ЈАРАМАЗ МИЛОВАН
+ЈАРАМАЗ НИКОЛА
+ЈАРЦ АНГЕЛ
+ЈАРИ ПРОКА
+ЈАРИЋ ЧЕДОМИР
+ЈАРИЋ АЛЕКСАНДАР
+ЈАРИЋ АВДО
+ЈАРИЋ БОЈАН
+ЈАРИЋ БРАНКО
+ЈАРИЋ ДАНИЕЛА
+ЈАРИЋ ДЕСАНКА
+ЈАРИЋ ДРАГАНА
+ЈАРИЋ ДРАГАН
+ЈАРИЋ ДУШАН ДР
+ЈАРИЋ КРИСТИНА
+ЈАРИЋ КРИСТИНА
+ЈАРИЋ ЉИЉАНА
+ЈАРИЋ ЉИЉАНА
+ЈАРИЋ МАРИЈА
+ЈАРИЋ МАРИЈА
+ЈАРИЋ МИЛАН
+ЈАРИЋ МИЛАН
+ЈАРИЋ МИЛОЈКО
+ЈАРИЋ МИРА
+ЈАРИЋ СЛОБОДАН
+ЈАРИЋ ЗОРАН
+ЈАРМИНАЦ БРАНКО
+ЈАРОШЕНКО КАТАРИНА
+ЈАРОШЕВСКИ АНТОН
+ЈАРОШЕВСКИ ИВИЦА
+ЈАРОШЕВСКИ ПАВЕЛ
+ЈАСЕНОВСКИ АНА
+ЈАСИЋ ДИВНА
+ЈАСИЋ ЈАНКО
+ЈАСИЋ МАНДА
+ЈАСИЋ МИРКО
+ЈАСИЋ ВЕРИЦА
+ЈАСИКА РУЖА
+ЈАСИКА СТОЈАНКА
+ЈАСИКИЋ МИЛОРАД
+ЈАСМИНОВИЋ ЈАМИН
+ЈАСНИЋ МИЛАН ДР ЛЕКАР
+ЈАСНИЋ МИЛАН
+ЈАСНИЋ МИЛОМИРКА
+ЈАСНИЋ СИНИША
+ЈАСНИГЕР АЛЕКСАНДАР
+ЈАТИЋ АНЂЕЛИЈА
+ЈАТИЋ ДРАГАН
+ЈАТИЋ ГРАДИМИР
+ЈАТИЋ СТЕВАН
+ЈАУКОВИЋ ДРАГИША
+ЈАУКОВИЋ ПЕЈКА
+ЈАУС ВАЛТЕР
+ЈАВНИ ПЕТАР
+ЈАВОРАН ИВАН
+ЈАВОРИНА ЂУРА
+ЈАВОРИНА ЉИЉАНА
+ЈАВОРИНА МИЛЕ
+ЈАВОРИНА СИМО
+ЈАВОРНИК БОСИЉКА
+ЈАВОРНИК ПАВЕЛ
+ЈАЗИЋ ДАНИЛО
+ЈАЗИЋ ИВАНКА
+ЈАЗИЋ ЛАЗА
+ЈАЗИЋ ЉУБОМИР
+ЈАЗИЋ МАРИНКО
+ЈАЗИЋ МИРОСЛАВ
+ЈАЗИЋ-САВИН ТАТЈАНА
+ЈАЗИЋ СВЕТЛАНА
+ЈАЗВИЋ АНКА
+ЈЕЧИНАЦ МИЛАН
+ЈЕЧИНАЦ МИЛОРАД
+ЈЕЧИНАЦ ВЕРА
+ЈЕЧМЕНИЦА АЛЕКСАНДАР
+ЈЕЧМЕНИЦА АЛЕКСАНДАР
+ЈЕЧМЕНИЦА ЈЕЛЕНА
+ЈЕЧМЕНИЦА МИЛОШ
+ЈЕЧМЕНИЦА ВЛАДИМИР
+ЈЕШИЋ ЖИВКА
+ЈЕШИЋ АНЂЕЛКО
+ЈЕШИЋ ДАНИЈЕЛА
+ЈЕШИЋ ЈУЛКА
+ЈЕШИЋ МИЛАН
+ЈЕШИЋ МИОДРАГ
+ЈЕШИЋ МИРОСЛАВА
+ЈЕШИЋ СТЕВАН
+ЈЕШИЋ ЗОРАН
+ЈЕЖ ДРАГАН
+ЈЕЖ ГОСПОЈИНКА
+ЈЕЖ МИЛОРАД
+ЈЕЖ СЛОБОДАН
+ЈЕЖ ТРИВО
+ЈЕЖЕК МИЛИВОЈ
+ЈЕЦКОВ НАДА
+ЈЕДЕРАН ЈОСИП
+ЈЕДЕРАН ЈОСИП
+ЈЕФИЋ ГОРАН
+ЈЕФТЕНИЋ ШПИРО
+ЈЕФТЕНИЋ ВЛАДО
+ЈЕФТИЋ ЖАРКО
+ЈЕФТИЋ БИЉАНА
+ЈЕФТИЋ БОЖИДАР
+ЈЕФТИЋ БОРИСЛАВ ДИПЛ ИНГ
+ЈЕФТИЋ БРАНКО
+ЈЕФТИЋ ДАМЈАН
+ЈЕФТИЋ ДРАГАН
+ЈЕФТИЋ ЈАДРАНКА
+ЈЕФТИЋ ЈЕФТА
+ЈЕФТИЋ ЈЕЛЕНА
+ЈЕФТИЋ ЈОВАН
+ЈЕФТИЋ КАТАРИНА
+ЈЕФТИЋ ЉУБОМИР
+ЈЕФТИЋ МИЛАН
+ЈЕФТИЋ МИЛАН
+ЈЕФТИЋ МИЛЕНКО
+ЈЕФТИЋ МИЛОРАД
+ЈЕФТИЋ МИТА
+ЈЕФТИЋ СРЕТЕНКА
+ЈЕФТИЋ ТИХОМИР
+ЈЕФТИЋ ТОМИСЛАВ
+ЈЕФТИЋ ВЕЛИНКА
+ЈЕФТИЋ ВЛАДИМИР
+ЈЕФТИЋ ВЛАСТА
+ЈЕФТИЋ ЗДРАВКО
+ЈЕФТОВИЋ ФРАЊА
+ЈЕГАРАЦ ОЛГА
+ЈЕГДИЋ ДАМЈАН
+ЈЕГДИЋ ГОРДАНА
+ЈЕГДИЋ СВЕТИСЛАВ
+ЈЕГДИЋ ВАСА
+ЈЕГДИЋ ВАСО
+ЈЕГЕШ МИЛА
+ЈЕКЕЛИЋ БРАНИСЛАВ
+ЈЕКЕЛИЋ БРАНКО
+ЈЕКЕЛИЋ ЕМИЛИЈА
+ЈЕКЕЛИЋ ЛАСЛО
+ЈЕКЕЛИЋ МИЛАН
+ЈЕКЕЛИЋ МИЛИЋ
+ЈЕКЕЛИЋ РАДОСЛАВ ДИПЛ ИНГ
+ЈЕКЕЛИЋ СЛАВКО
+ЈЕКЕЛИЋ ЗОРИЦА
+ЈЕКНИЋ РАДОЈИЦА
+ЈЕЛЧИЋ ЈОЗЕФИНА
+ЈЕЛЧИЋ КРИСТИЈАН
+ЈЕЛЧИЋ ЉУБИША
+ЈЕЛЧИЋ МИЛОВАН
+ЈЕЛЧИЋ МИЛОВАН
+ЈЕЛЧИЋ ПАВЛЕ
+ЈЕЛЧИЋ ЗОРА
+ЈЕЛАЧА ЂУРО
+ЈЕЛАЧА ЂУРО
+ЈЕЛАЧА БРАНКО
+ЈЕЛАЧА ДЕСА
+ЈЕЛАЧА КОСТА
+ЈЕЛАЧА МИХАЈЛО
+ЈЕЛАЧА МИЛЕНКО
+ЈЕЛАЧА РУЖА
+ЈЕЛАЧА СИМО ДР ИНГ
+ЈЕЛАЧА СЛОБОДАН
+ЈЕЛАЧА СТАНКО
+ЈЕЛАЧА СТОЈАН
+ЈЕЛАЧИЋ БОЖИДАР
+ЈЕЛАЧИЋ БРАНКО
+ЈЕЛАЧИЋ ДАНИЛО
+ЈЕЛАЧИЋ ДУШАН
+ЈЕЛАЧИЋ ЈУЛИШКА
+ЈЕЛАЧИЋ ЉУБОМИР
+ЈЕЛАЧИЋ МИХАЈЛО
+ЈЕЛАЧИЋ МИЛЕНКО
+ЈЕЛАЧИЋ МИРОСЛАВ
+ЈЕЛАЧИЋ РАТОМИР
+ЈЕЛАЧИЋ СЛОБОДАН
+ЈЕЛАЧИЋ ЗОРКА
+ЈЕЛАВИЋ ЖЕЉКО
+ЈЕЛАВИЋ ДРАГО
+ЈЕЛЕЧ ИЛИЈА
+ЈЕЛЕЧАНИН ЂОРЂЕ
+ЈЕЛЕЧАНИН МАРИЈА
+ЈЕЛЕЧИЋ ЈОВАН
+ЈЕЛЕНЧИЋ ФРАЊА
+ЈЕЛЕНИЋ ЖИВАН
+ЈЕЛЕНИЋ МИЛАН
+ЈЕЛЕНИЋ ПАНТА
+ЈЕЛЕНИЋ ПАВЛЕ
+ЈЕЛЕНИЋ РАДА
+ЈЕЛЕНИЋ СЛОБОДАН
+ЈЕЛЕНИЋ ВАСИЛИЈЕ
+ЈЕЛЕНКОВИЋ АЛЕКСАНДАР
+ЈЕЛЕНКОВИЋ ГРОЗДА
+ЈЕЛЕНКОВИЋ ВЛАДИСЛАВ
+ЈЕЛЕСИЋ АНГЕЛА ПРОФЕСОР
+ЈЕЛИЧИЋ ЖИВКО
+ЈЕЛИЧИЋ ЂУРО
+ЈЕЛИЧИЋ БЕАТА
+ЈЕЛИЧИЋ БРАНКО
+ЈЕЛИЧИЋ ДУШАН
+ЈЕЛИЧИЋ ЈЕЛЕНА
+ЈЕЛИЧИЋ ЈОВО
+ЈЕЛИЧИЋ ЉУБИЦА
+ЈЕЛИЧИЋ МАРИЈА
+ЈЕЛИЧИЋ МИЛАН
+ЈЕЛИЧИЋ МИЛЕ
+ЈЕЛИЧИЋ МИРКО
+ЈЕЛИЧИЋ ПЕТАР
+ЈЕЛИЧИЋ ПЕТАР
+ЈЕЛИЧИЋ РОСА
+ЈЕЛИЧИЋ ВИД
+ЈЕЛИЋ ЖИВКО
+ЈЕЛИЋ ЖИВКО
+ЈЕЛИЋ ЂОРЂЕ
+ЈЕЛИЋ ЂОРЂЕ
+ЈЕЛИЋ АЋИМ
+ЈЕЛИЋ АНЂА
+ЈЕЛИЋ АНТЕ
+ЈЕЛИЋ БУДИМИР
+ЈЕЛИЋ ДРАГАН
+ЈЕЛИЋ ДРАГУТИН
+ЈЕЛИЋ ДУШАН
+ЈЕЛИЋ ЕМИЛИЈА
+ЈЕЛИЋ ЕСТЕРА
+ЈЕЛИЋ ГОРДАНА
+ЈЕЛИЋ ИВАНКА
+ЈЕЛИЋ ИВИЦА
+ЈЕЛИЋ ЈАГОДИНКА
+ЈЕЛИЋ ЈАЊА
+ЈЕЛИЋ ЈЕЛЕНА
+ЈЕЛИЋ ЈОВАН
+ЈЕЛИЋ ЛАЗАР
+ЈЕЛИЋ ЛАЗАР
+ЈЕЛИЋ ЉУБИЦА
+ЈЕЛИЋ ЉУБИНКА
+ЈЕЛИЋ ЛУКА
+ЈЕЛИЋ МАРИЦА
+ЈЕЛИЋ МАРИНА
+ЈЕЛИЋ-МАТИЋ МАРИЈА
+ЈЕЛИЋ МИЛАН
+ЈЕЛИЋ МИЛАН
+ЈЕЛИЋ МИЛЕНА
+ЈЕЛИЋ МИЛЕНКО
+ЈЕЛИЋ МИЛКА
+ЈЕЛИЋ МИОДРАГ
+ЈЕЛИЋ МИОДРАГ
+ЈЕЛИЋ МИРЈАНА
+ЈЕЛИЋ МИТА
+ЈЕЛИЋ МОМИР
+ЈЕЛИЋ НАДА
+ЈЕЛИЋ НЕДЕЉКО
+ЈЕЛИЋ ПАВЛЕ
+ЈЕЛИЋ ПРЕДРАГ
+ЈЕЛИЋ ПРЕДРАГ
+ЈЕЛИЋ РАДЕНКО
+ЈЕЛИЋ РОСА
+ЈЕЛИЋ САВА
+ЈЕЛИЋ СИМА
+ЈЕЛИЋ СЛАВИЦА
+ЈЕЛИЋ СТАНИМИР
+ЈЕЛИЋ СТЕВАН
+ЈЕЛИЋ СТЕВА
+ЈЕЛИЋ СТЕВА
+ЈЕЛИЋ СТИПЕ
+ЈЕЛИЋ СВЕТИСЛАВ ДИПЛ ИНГ
+ЈЕЛИЋ СВЕТОЗАР
+ЈЕЛИЋ ТОМА
+ЈЕЛИЋ ТОМИСЛАВ
+ЈЕЛИЋ ВАСА
+ЈЕЛИЋ ВАСО
+ЈЕЛИЋ ВИКТОРИЈА
+ЈЕЛИЦКИ СИМЕУН
+ЈЕЛИН ЈОВАН
+ЈЕЛИН РАДМИЛА
+ЈЕЛИНЧИЋ ДУЈО
+ЈЕЛИНЕК СТЕВАН
+ЈЕЛИСАВАЦ ГОРДАН
+ЈЕЛИСАВАЦ МИЛОШ
+ЈЕЛИСАВАЦ МОМИР
+ЈЕЛКИЋ ЈОВАН
+ЈЕЛКИЋ ЛАЗАР
+ЈЕЛКИЋ ОЛИВЕРА
+ЈЕЛКИЋ ВЛАДИМИР
+ЈЕЛОВАЦ ЖАРКО
+ЈЕЛОВАЦ ЖАРКО
+ЈЕЛОВАЦ ЂОРЂЕ
+ЈЕЛОВАЦ ЂОРЂЕ
+ЈЕЛОВАЦ ЂУРО
+ЈЕЛОВАЦ БИСЕРКА
+ЈЕЛОВАЦ БРАНИСЛАВ
+ЈЕЛОВАЦ БРАНКА
+ЈЕЛОВАЦ БРАНКА
+ЈЕЛОВАЦ БРАНКО
+ЈЕЛОВАЦ ДРАГАН
+ЈЕЛОВАЦ ДРАГАН
+ЈЕЛОВАЦ ДУШАН
+ЈЕЛОВАЦ ИЗАБЕЛА
+ЈЕЛОВАЦ ЈОВАН
+ЈЕЛОВАЦ МИЛАН
+ЈЕЛОВАЦ МИЛИЦА
+ЈЕЛОВАЦ МИРОСЛАВ
+ЈЕЛОВАЦ МИРОСЛАВ
+ЈЕЛОВАЦ НАДА
+ЈЕЛОВАЦ НИКОЛА
+ЈЕЛОВАЦ РАДОЈКА
+ЈЕЛОВАЦ РАДОЈКА
+ЈЕЛОВАЦ РАДОМИР ДР ЛЕКАР
+ЈЕЛОВАЦ РУЖИЦА
+ЈЕЛОВАЦ СЛОБОДАН
+ЈЕЛОВАЦ СТЕВАН
+ЈЕЛОВАЦ СТОЈАН
+ЈЕЛОВАЦ ТУГОМИР
+ЈЕЛОВАЦ ВЕЛИМИР
+ЈЕЛОВАЦ ВЛАДА
+ЈЕЛОВАЦ ВУЈИЦА
+ЈЕЛОВИЋ МИЛАНКА
+ЈЕЛУШИЋ ГОРДАНА
+ЈЕЛУШИЋ ЛЕНКА
+ЈЕЛУШИЋ МАТИЈЕ
+ЈЕМЧ БРАНИСЛАВ
+ЈЕМРИЋ ЈЕЛА
+ЈЕНЕЦКОВ РАДМИЛА
+ЈЕНЕЦКОВ САША
+ЈЕНЕИ АНДРАШ
+ЈЕНЕИ ЕУГЕН
+ЈЕНЕИ ЛАЈОШ
+ЈЕНЕИ МИОДРАГ
+ЈЕНЕИ РУЖА
+ЈЕНЕИ СТЕВАН
+ЈЕНЕИ ТИБОР
+ЈЕНЕВ БЛАГОЈ
+ЈЕПУРСКИ НЕНАД
+ЈЕРЧИЋ ФРАЊО
+ЈЕРАНЧЕ ДАНИЦА
+ЈЕРАНТ АНДРИЈА
+ЈЕРАНТ ПАТИЋ ВЕРА ДР
+ЈЕРАНТ ПЕТАР
+ЈЕРАУШЕК ФРАЊО
+ЈЕРАУШЕК ИВИЦА
+ЈЕРБИЋ ДРАГИЦА
+ЈЕРЕБИНШЕК АНА
+ЈЕРЕБИНШЕК СЛАВКО
+ЈЕРЕЛЕ ФРАНЦИШКА
+ЈЕРЕМЕНКО АЛЕКСАНДРА
+ЈЕРЕМИЋ ЂОКА
+ЈЕРЕМИЋ ЂОРЂЕ
+ЈЕРЕМИЋ АЛЕКСАНДАР
+ЈЕРЕМИЋ-БЛАГОЈЕВИЋ ВЕРИЦА
+ЈЕРЕМИЋ БЛАГОЈЕ
+ЈЕРЕМИЋ ДИМИТРИЈЕ ДР ЛЕКАР
+ЈЕРЕМИЋ ДРАГОСЛАВ
+ЈЕРЕМИЋ ДУШАНКА
+ЈЕРЕМИЋ ЈАСНА
+ЈЕРЕМИЋ ЈЕЛЕНА
+ЈЕРЕМИЋ ЈОВАН
+ЈЕРЕМИЋ ЈОВАН
+ЈЕРЕМИЋ ЛАЗАР
+ЈЕРЕМИЋ ЉИЉАНА
+ЈЕРЕМИЋ МЕЛАНИЈА
+ЈЕРЕМИЋ МИЛЕВА
+ЈЕРЕМИЋ МИРА
+ЈЕРЕМИЋ МИРОСЛАВ
+ЈЕРЕМИЋ НАДЕЖДА
+ЈЕРЕМИЋ НЕНАД
+ЈЕРЕМИЋ ОЛИВЕРА
+ЈЕРЕМИЋ ПАВЛЕ
+ЈЕРЕМИЋ ПАВЛЕ
+ЈЕРЕМИЋ РАДЕ
+ЈЕРЕМИЋ СТАНА
+ЈЕРЕМИЋ СТАНКО
+ЈЕРЕМИЋ СТАНОЈЕ
+ЈЕРЕМИЋ СТЕВАН
+ЈЕРЕМИЋ СТЕВАН
+ЈЕРЕМИЋ ВАСИЛИЈЕ
+ЈЕРЕМИЋ ВЕРА
+ЈЕРЕМИЋ ВОЈИСЛАВ
+ЈЕРЕМИЋ ЗОРА
+ЈЕРЕМИЈИЋ ВИТОМИР
+ЈЕРЕНИЋ МЛАДЕН
+ЈЕРГИЋ МИЛИЦА
+ЈЕРГИЋ МИОДРАГ
+ЈЕРГИЋ МИРКО
+ЈЕРГИЋ ПЕТАР
+ЈЕРГИЋ СЛАВИЦА
+ЈЕРГИЋ СПАСОЈЕ
+ЈЕРИЋ ДУШАН
+ЈЕРИЋ КОВИНКА
+ЈЕРИЋ ЉУБИША
+ЈЕРИЋ МИЛИЦА
+ЈЕРИЋ ПЕТАР
+ЈЕРИНИЋ БРАНКО
+ЈЕРИНИЋ-КУРИН ЕДИТ
+ЈЕРИНИЋ МИОДРАГ
+ЈЕРИНИЋ ВОЈИСЛАВ
+ЈЕРИНКИЋ ДРАГАН
+ЈЕРИНКИЋ ИВАН
+ЈЕРИНКИЋ ПАВЛЕ
+ЈЕРКАН АНТЕ
+ЈЕРКИЋ СВЕТОЗАР
+ЈЕРКОВ ЖАРКО
+ЈЕРКОВ АНДРИЈА
+ЈЕРКОВ БРАНИМИР
+ЈЕРКОВ ЈОВАН
+ЈЕРКОВ ЈОВИЦА
+ЈЕРКОВ ЈОВИЦА
+ЈЕРКОВ МИРЈАНА
+ЈЕРКОВ МИРЈАНА
+ЈЕРКОВ ПАВЛЕ
+ЈЕРКОВ СМИЉА
+ЈЕРКОВ СНЕЖАНА
+ЈЕРКОВ ВЕЉКО
+ЈЕРКОВ ВОЈИСЛАВ
+ЈЕРКОВИЋ ЂОРЂЕ
+ЈЕРКОВИЋ АЛЕКСАНДАР
+ЈЕРКОВИЋ ДМИТАР
+ЈЕРКОВИЋ ФРАЊО
+ЈЕРКОВИЋ ЈОВАН
+ЈЕРКОВИЋ ЈОВАН
+ЈЕРКОВИЋ ЈОВАН
+ЈЕРКОВИЋ ЈОВАН
+ЈЕРКОВИЋ КАТИЦА
+ЈЕРКОВИЋ КАТИЦА
+ЈЕРКОВИЋ ЛЕНКА
+ЈЕРКОВИЋ МИЛАН
+ЈЕРКОВИЋ МИЛОШ
+ЈЕРКОВИЋ НАДЕЖДА
+ЈЕРКОВИЋ НИКОЛА
+ЈЕРКОВИЋ ПРЕДРАГ
+ЈЕРКОВИЋ РАЈКО
+ЈЕРКОВИЋ СИМО
+ЈЕРКОВИЋ СИНИША
+ЈЕРКОВИЋ СОФИЈА
+ЈЕРКОВИЋ СТЕВАН
+ЈЕРКОВИЋ СТОЈАН
+ЈЕРКОВИЋ СВЕТКО
+ЈЕРКОВИЋ ТАДИЈА
+ЈЕРКОВИЋ ВАЛЕРИЈА
+ЈЕРКОВИЋ ВАСА
+ЈЕРКОВИЋ ВЛАДИМИР МР
+ЈЕРКОВИЋ ВЛАДИМИР
+ЈЕРКОВИЋ ВЛАДО
+ЈЕРКОВИЋ ВУКОСАВА
+ЈЕРКОВИЋ ЗОРАН
+ЈЕРОСИМОВИЋ БРАНИМИР
+ЈЕРОТИЈЕВИЋ ДАРИНКА
+ЈЕСИЋ МИЛЕНА
+ЈЕСТРОНИЋ ТОМИСЛАВ
+ЈЕСТРОВИЋ ИРЕНА
+ЈЕВЂЕНИЋ РУЖИЦА
+ЈЕВЂЕНИЋ ВЛАДА
+ЈЕВЂОВИЋ МЕЛАНИЈА ДР
+ЈЕВЂОВИЋ МЕЛАНИЈА
+ЈЕВИЋ ЧЕДО
+ЈЕВИЋ БРАНКО
+ЈЕВИЋ МИЛАН
+ЈЕВИЋ МИЛИВОЈ
+ЈЕВИЋ МИОДРАГ
+ЈЕВИЋ МОМЧИЛО
+ЈЕВИЋ НАДА
+ЈЕВИЋ НИКОЛА
+ЈЕВИЋ ТОДОР
+ЈЕВРЕМОВ ЖИВА
+ЈЕВРЕМОВ ЂОРЂЕ
+ЈЕВРЕМОВ МИЛАН
+ЈЕВРЕМОВ МИРЈАНА
+ЈЕВРЕМОВИЋ ДОБРИЛА
+ЈЕВРЕМОВИЋ ЉУБИНКА
+ЈЕВРЕМОВИЋ МИЛИВОЈ
+ЈЕВРЕМОВИЋ МИЛОРАД
+ЈЕВРЕМОВИЋ МИОДРАГ
+ЈЕВРЕМОВИЋ РАДИША
+ЈЕВРЕМОВИЋ СИНИША
+ЈЕВРЕМОВИЋ СОФИЈА
+ЈЕВРЕМОВИЋ СТЕВАН
+ЈЕВРЕМОВИЋ ВЛАДАН
+ЈЕВРИЋ ЖИВАН
+ЈЕВРИЋ ЂОРЂЕ
+ЈЕВРИЋ ЂОРЂЕ
+ЈЕВРИЋ БОЖИДАР
+ЈЕВРИЋ БОГОЉУБ
+ЈЕВРИЋ БРАНКО
+ЈЕВРИЋ БРАТИСЛАВ
+ЈЕВРИЋ ДАНИЦА
+ЈЕВРИЋ ДЕСИМИР
+ЈЕВРИЋ ДРАГУТИН
+ЈЕВРИЋ ЕВИЦА
+ЈЕВРИЋ ГИГА
+ЈЕВРИЋ ГОРАН
+ЈЕВРИЋ ЈЕЛА
+ЈЕВРИЋ ЈОВАН
+ЈЕВРИЋ КРИСТИНА
+ЈЕВРИЋ ЉУБИЦА
+ЈЕВРИЋ МАРИЈА
+ЈЕВРИЋ МИЛАН
+ЈЕВРИЋ МИЛЕНКО
+ЈЕВРИЋ МИЛЕ
+ЈЕВРИЋ МИЛОШ
+ЈЕВРИЋ МИРОСЛАВ
+ЈЕВРИЋ РАДИША
+ЈЕВРИЋ РАДИВОЈЕ
+ЈЕВРИЋ РАДИВОЈ
+ЈЕВРИЋ РАДИВОЈ
+ЈЕВРИЋ РАДОСЛАВ
+ЈЕВРИЋ РАНИСАВ
+ЈЕВРИЋ СЛАВКО
+ЈЕВРИЋ СЛАВКО
+ЈЕВРИЋ СЛАВКО
+ЈЕВРИЋ СЛАВКО
+ЈЕВРИЋ СЛОБОДАН
+ЈЕВРИЋ СРБОЉУБ
+ЈЕВРИЋ СТАМЕНКО
+ЈЕВРИЋ СТЕВАН ДР ИНГ
+ЈЕВРИЋ СТЕВАН
+ЈЕВРИЋ ЗЛАТОМИР
+ЈЕВТОВИЋ АЛЕКСАНДАР
+ЈЕВТОВИЋ АЛЕКСАНДРА
+ЈЕВТОВИЋ ЈОРДАН
+ЈЕВТОВИЋ МИЛАН
+ЈЕВТОВИЋ МИРКО
+ЈЕВТОВИЋ РАДИВОЈЕ
+ЈЕВТОВИЋ СТАНИСЛАВА
+ЈЕВТОВИЋ ВОЈКАН
+ЈЕВТОВИЋ ВУКОТА
+ЈЕВТОВИЋ ВУЛЕ
+ЈЕЗДИЋ ДОБРИЛА
+ЈЕЗДИЋ ДРАГАН
+ЈЕЗДИЋ ЈОВАН
+ЈЕЗДИЋ ЉУБОМИР
+ЈЕЗДИЋ МОМЧИЛО
+ЈЕЗДИЋ САВА
+ЈЕЗДИЋ СПИРА
+ЈЕЗДИЋ СТЕВКА
+ЈЕЗДИЋ СТОЈАН ДИПЛ ИНГ
+ЈЕЗДИМИРОВИЋ АЦА
+ЈЕЗДИМИРОВИЋ ДРАГАН
+ЈЕЗДИМИРОВИЋ ДРАГИЦА
+ЈЕЗДИМИРОВИЋ ЛАЗАР
+ЈЕЗДИМИРОВИЋ МИРЈАНА
+ЈЕЗДИМИРОВИЋ СТОЈАНКА
+ЈЕЗДИМИРОВИЋ ЗОРИЦА
+ЈЕЗЕРКИЋ ОЛГИЦА
+ЈИРОТА-ГАЗИБАРИЋ ДАНИЕЛА
+ЈОЧИЋ МОМЧИЛО
+ЈОЧИЋ СТАНОЈЛО
+ЈОЧИН ЖИКА
+ЈОЧКОВИЋ ЈОВАН
+ЈОШАНОВ АЛЕКСАНДРА
+ЈОШАНОВ ЛАЗАР
+ЈОШАНОВ ЉУБИЦА
+ЈОШАНОВ МЛАДЕН
+ЈОШЕВСКИ ЂОРЂИЈА
+ЈОШИЋ ЂУРА
+ЈОШИЋ БЛАЖО
+ЈОШИЋ ДРАГОСЛАВ
+ЈОШИЋ МИЛАН
+ЈОШИЋ МИЛИВОЈ
+ЈОШИЋ МИЛОРАД
+ЈОШИЋ ПЕТАР
+ЈОЖА КАТАЛИН
+ЈОЖИЋ ЂУРА
+ЈОАНОВИЋ ЦВЕТКО ДИПЛ ИНГ
+ЈОАНОВИЋ ЕРЖЕБЕТ
+ЈОАНОВИЋ РАМОНА
+ЈОЦИЋ ЖИВОЈИН ДИПЛ ИНГ
+ЈОЦИЋ ЖИВОРАД ДР
+ЈОЦИЋ ЂОРЂЕ
+ЈОЦИЋ АЛЕКСАНДАР
+ЈОЦИЋ АНЂЕЛКА
+ЈОЦИЋ АНГЕЛИНА
+ЈОЦИЋ АНКИЦА
+ЈОЦИЋ БОРИСЛАВ
+ЈОЦИЋ БРАНИСЛАВ ДР
+ЈОЦИЋ БРАНКА
+ЈОЦИЋ ДРАГИЦА
+ЈОЦИЋ ДРАГУТИН
+ЈОЦИЋ ФИЛИП
+ЈОЦИЋ ХРИСТИНА
+ЈОЦИЋ ИЛИЈА
+ЈОЦИЋ ИСИДОР
+ЈОЦИЋ ЈЕЛИСАВЕТА
+ЈОЦИЋ ЈОВАНКА
+ЈОЦИЋ ЉИЉАНА
+ЈОЦИЋ МАРИЈА
+ЈОЦИЋ МАРКО
+ЈОЦИЋ МАРКО
+ЈОЦИЋ МАРТА
+ЈОЦИЋ МИЛАДИНКА
+ЈОЦИЋ МИЛАН
+ЈОЦИЋ МИЛАН
+ЈОЦИЋ МИЛОШ
+ЈОЦИЋ МИЛОШ
+ЈОЦИЋ МИРКО
+ЈОЦИЋ МЛАДЕН
+ЈОЦИЋ НЕНАД
+ЈОЦИЋ ПЕТАР
+ЈОЦИЋ ПЕТАР
+ЈОЦИЋ ПЕТАР
+ЈОЦИЋ РАДИВОЈ
+ЈОЦИЋ РАДМИЛА
+ЈОЦИЋ РАДОСЛАВ
+ЈОЦИЋ РОДОЉУБ
+ЈОЦИЋ САВА
+ЈОЦИЋ СЛОБОДАН
+ЈОЦИЋ СМИЉА
+ЈОЦИЋ СТЕВАН ДИПЛ ИНГ
+ЈОЦИЋ СТЕВАН
+ЈОЦИЋ СТЕВАН
+ЈОЦИЋ ВАЛЕРИЈА
+ЈОЦИЋ ВЕРА
+ЈОЦИЋ ЗОРАН
+ЈОЦИН БРАНКО
+ЈОЦИН ПЕРСИДА
+ЈОЦИН ЗЛАТОЈЕ
+ЈОЦКОВ ДАНИЦА
+ЈОЦКОВ МАНОЈЛО
+ЈОЦКОВ МИЛАНКА
+ЈОЦКОВ МИЛОСАВ
+ЈОЦКОВ МИРОСЛАВА
+ЈОЦКОВ НИКОЛА
+ЈОЦКОВ НИКОЛА
+ЈОЦКОВ РАДОВАН
+ЈОЦКОВИЋ ЂОРЂЕ ДР
+ЈОЦКОВИЋ ЈОВАНКА
+ЈОЦКОВИЋ ОБРАД
+ЈОЦОВИЋ ЖИВОМИР
+ЈОЦОВИЋ МИОДРАГ
+ЈОЦОВИЋ РАДЕНКО
+ЈОЦОВИЋ ЗОРИЦА
+ЈОЦУЛОВ БРАНКА
+ЈОЦУЛОВ МИХАЉ
+ЈОДАЛ РОЖА
+ЈОХИМСТАЛ АГАТА
+ЈОЈИЋ ЂОРЂЕ
+ЈОЈИЋ АЛЕКСАНДАР
+ЈОЈИЋ БОЖИДАР
+ЈОЈИЋ ДОИНА
+ЈОЈИЋ ДРАГИ
+ЈОЈИЋ ДРАГОСЛАВ ДР
+ЈОЈИЋ ДУШАН
+ЈОЈИЋ ГЕОРГИЈЕ
+ЈОЈИЋ ИВАНКА
+ЈОЈИЋ ИВАНКА
+ЈОЈИЋ ЈЕЛА
+ЈОЈИЋ ЈЕЛЕНА
+ЈОЈИЋ ЉУБИЦА
+ЈОЈИЋ МИЋКО
+ЈОЈИЋ МИЛЕВА
+ЈОЈИЋ МИЛОШ
+ЈОЈИЋ МИОДРАГ
+ЈОЈИЋ МИРКО
+ЈОЈИЋ МИРКО
+ЈОЈИЋ МИРОЉУБ
+ЈОЈИЋ МИРОСЛАВ
+ЈОЈИЋ ОЛГА
+ЈОЈИЋ САВА
+ЈОЈИЋ СИМО
+ЈОЈИЋ СТАНА
+ЈОЈИЋ СТЕВАН
+ЈОЈИЋ СВЕТОЗАР
+ЈОЈИЋ СВЕТО
+ЈОЈИН БАРБАРА
+ЈОЈИН ДОБРОСАВ
+ЈОЈИН СИНИША
+ЈОЈКИЋ ЂОРЂЕ
+ЈОЈКИЋ ЂОРЂЕ
+ЈОЈКИЋ ЂОРЂЕ
+ЈОЈКИЋ АЛЕКСАНДАР
+ЈОЈКИЋ БОРИСЛАВА
+ЈОЈКИЋ БРАНИСЛАВ
+ЈОЈКИЋ ДАНИЦА
+ЈОЈКИЋ ДИНА
+ЈОЈКИЋ ДУШАН
+ЈОЈКИЋ ДУШКО
+ЈОЈКИЋ ЈОВИЦА
+ЈОЈКИЋ КАТИЦА
+ЈОЈКИЋ КАТИЦА
+ЈОЈКИЋ ЉУБОМИР
+ЈОЈКИЋ МАРИЦА
+ЈОЈКИЋ МАРИЈА
+ЈОЈКИЋ МАРИЈА
+ЈОЈКИЋ МИЛАДИН
+ЈОЈКИЋ МИЛЕНА
+ЈОЈКИЋ МИЛЕНКО
+ЈОЈКИЋ МИЛИЦА
+ЈОЈКИЋ МИЛИЦА
+ЈОЈКИЋ МИОДРАГ
+ЈОЈКИЋ МИРЈАНА ДР
+ЈОЈКИЋ МИРОСЛАВ
+ЈОЈКИЋ НАДА
+ЈОЈКИЋ ОЛГА
+ЈОЈКИЋ ПАЈА
+ЈОЈКИЋ-ПОЛЕТТО ЗОРА
+ЈОЈКИЋ РАДИВОЈ
+ЈОЈКИЋ РАДИВОЈ
+ЈОЈКИЋ РАДОЈКА
+ЈОЈКИЋ РАДОСЛАВ
+ЈОЈКИЋ СЛАВКО
+ЈОЈКИЋ СМИЉКА
+ЈОЈКИЋ СНЕЖАНА
+ЈОЈКИЋ СОФИЈА
+ЈОЈКИЋ СОКО
+ЈОЈКИЋ СТАНКО
+ЈОЈКИЋ УРОШ
+ЈОЈКИЋ ВОЈИСЛАВ
+ЈОЈКИЋ ЗДРАВКО
+ЈОКА КАТАРИНА
+ЈОКА ВАСО
+ЈОКАНИЋ ИЛИЈА
+ЈОКАНОВИЋ БЛАГОЈЕ
+ЈОКАНОВИЋ БОСИЉКА
+ЈОКАНОВИЋ БРАНКО
+ЈОКАНОВИЋ БРАНКО
+ЈОКАНОВИЋ ДЕСИМИР
+ЈОКАНОВИЋ МИЛОРАД
+ЈОКАНОВИЋ РАДА
+ЈОКАНОВИЋ РАДОМИР
+ЈОКАНОВИЋ СИНИША
+ЈОКАНОВИЋ ТОДОР
+ЈОКАНОВИЋ ТОМИСЛАВ
+ЈОКАНОВИЋ ВЛАДИМИР ДР
+ЈОКИШИЋ БРАНКО
+ЈОКИШИЋ СПАСОЈЕ
+ЈОКИЋ ЖАРКО
+ЈОКИЋ ЖАРКО
+ЈОКИЋ ЖИВАН
+ЈОКИЋ ЂОРЂЕ
+ЈОКИЋ ЂУРАЂ
+ЈОКИЋ БОЖИДАР
+ЈОКИЋ БОРИСЛАВ
+ЈОКИЋ БРАНИСЛАВ
+ЈОКИЋ БУДИМИР
+ЈОКИЋ ЦВИЈЕТИН
+ЈОКИЋ ДАНЕ
+ЈОКИЋ ДОБРИЛА
+ЈОКИЋ ДРАГАН
+ЈОКИЋ ДРАГАН
+ЈОКИЋ ДРАГАН
+ЈОКИЋ ДРАГИЦА
+ЈОКИЋ ДРАГИЊА
+ЈОКИЋ ДУШАНКА
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ДУШАН
+ЈОКИЋ ИГЊАТ
+ЈОКИЋ ЈЕЛЕНА
+ЈОКИЋ ЈОКА
+ЈОКИЋ КРСТАН
+ЈОКИЋ КСЕНИЈА
+ЈОКИЋ ЛАКИЋ
+ЈОКИЋ ЛАЗО
+ЈОКИЋ ЉИЉАНА
+ЈОКИЋ ЉУБИЦА
+ЈОКИЋ ЉУБО
+ЈОКИЋ ЛУКА
+ЈОКИЋ МАРА
+ЈОКИЋ МАРИЈА
+ЈОКИЋ МАРКО
+ЈОКИЋ МИХАЈЛО
+ЈОКИЋ МИЛАН
+ЈОКИЋ МИЛАН
+ЈОКИЋ МИЛАН
+ЈОКИЋ МИЛАН
+ЈОКИЋ МИЛЕНКО
+ЈОКИЋ МИЛЕВА
+ЈОКИЋ МИЛИЈА
+ЈОКИЋ МИЛИСАВ
+ЈОКИЋ МИЛОРАД
+ЈОКИЋ МИЛОВАН
+ЈОКИЋ МИРКО
+ЈОКИЋ МИРКО
+ЈОКИЋ МИРКО
+ЈОКИЋ МИРКО
+ЈОКИЋ МИРОСЛАВ
+ЈОКИЋ НАДА
+ЈОКИЋ НАДА
+ЈОКИЋ НАДИЦА
+ЈОКИЋ НЕНАД
+ЈОКИЋ НИКОЛА
+ЈОКИЋ НИКОЛА
+ЈОКИЋ ПЕТАР
+ЈОКИЋ РАДИВОЈЕ
+ЈОКИЋ РАДОИЦА
+ЈОКИЋ РИСТА
+ЈОКИЋ САША
+ЈОКИЋ СИМА
+ЈОКИЋ СИНИША
+ЈОКИЋ СЛАВКО
+ЈОКИЋ СЛАВКО
+ЈОКИЋ СЛАВКО
+ЈОКИЋ СНЕЖАНА
+ЈОКИЋ СТЕВАН ДИПЛ ИНГ
+ЈОКИЋ СТЕВАН
+ЈОКИЋ СВЕТИСЛАВ
+ЈОКИЋ СВЕТОЗАР
+ЈОКИЋ СВЕТОЗАР
+ЈОКИЋ ТОМИСЛАВ
+ЈОКИЋ ВЕЉКО
+ЈОКИЋ ВЕРА
+ЈОКИЋ ВЛАДО
+ЈОКИЋ ВОЈИСЛАВ
+ЈОКИЋ ВОЈИСЛАВ
+ЈОКИЋ ВУЈАДИН
+ЈОКИЋ ВУКАДИН
+ЈОКИЋ ВУКО
+ЈОКИЋ ЗЛАТА
+ЈОКИЋ ЗОРКА
+ЈОКМАНОВИЋ САВЕТА
+ЈОКОВИЋ ЖИВКО
+ЈОКОВИЋ ЂУРЂИНА
+ЈОКОВИЋ ДОБРИВОЈЕ
+ЈОКОВИЋ-МИКИЋ МИРЈАНА
+ЈОКОВИЋ МИЛКА
+ЈОКОВИЋ РАДОСАВ
+ЈОКОВИЋ ВОЈИСЛАВ
+ЈОКСИЋ ДРАГИША
+ЈОКСИЋ ГОЈКО
+ЈОКСИМОВЋ НЕБОЈША
+ЈОКСИМОВИЋ ЖАРКО
+ЈОКСИМОВИЋ ДАРКО
+ЈОКСИМОВИЋ ДУШКО
+ЈОКСИМОВИЋ ГОЛУБАНКА
+ЈОКСИМОВИЋ ЈОВАН ДИПЛ ИНГ
+ЈОКСИМОВИЋ ЉУБИЦА
+ЈОКСИМОВИЋ ЉУБИСАВ ДР
+ЈОКСИМОВИЋ ЉУБИСАВ
+ЈОКСИМОВИЋ МОМЧИЛО
+ЈОКСИМОВИЋ НАДА
+ЈОКСИМОВИЋ ПАВЛЕ
+ЈОКСИМОВИЋ ПЕТАР
+ЈОКСИМОВИЋ РАДОМИР
+ЈОКСИМОВИЋ СИНИША
+ЈОКСИМОВИЋ СТЕВАН
+ЈОКСИМОВИЋ ВЛАДИМИР
+ЈОКСИМОВИЋ ЗЛАТОМИР
+ЈОКСИМОВИЋ ЗОРАН
+ЈОКСОВИЋ ДРАГИША
+ЈОКСОВИЋ СНЕЖАНА
+ЈОЛДИЋ МАРА
+ЈОЛДИЋ МИОДРАГ
+ЈОЛИЋ ЖИВАН
+ЈОЛИЋ ЖИВОЈИН
+ЈОЛИЋ АНГЕЛИНА
+ЈОЛИЋ ДАНИЛО
+ЈОЛИЋ ЈАДРАНКА
+ЈОЛИЋ ЈОВАН
+ЈОЛИЋ КОНСТАНТИН
+ЈОЛИЋ КОСТА
+ЈОЛИЋ МИРЈАНА
+ЈОЛИЋ НЕБОЈША
+ЈОЛИЋ ПЕТАР
+ЈОЛИЋ СЛОБОДАН
+ЈОЛИЋ УРОШ
+ЈОЛИЋ ВАСА
+ЈОЛОВИЋ МИЛОВАН
+ЈОНЧИЋ МАРА
+ЈОНАШ ДУШАН
+ЈОНАШ ЛАСЛО
+ЈОНАШ НИКОЛА
+ЈОНИЋ БОШКО
+ЈОНИЋ ДРАГАН
+ЈОЊЕВ МИЛИВОЈ
+ЈОЊЕВ СЛАВОЉУБ
+ЈОЊИЋ САВО
+ЈОНОВИЋ ДУШАН
+ЈОНОВИЋ ПЕТАР
+ЈОНТОВИЋ АЛЕКСА
+ЈОНТОВИЋ-БИКИЋ МИРЈАНА
+ЈОНТОВИЋ РУДОЛФ
+ЈОНУЗОВИЋ ВЛАДИМИР
+ЈОРДАЧ АНА
+ЈОРДАН ЕРЖЕБЕТ
+ЈОРДАНОВ КИРИЛ
+ЈОРДАНОВСКИ СТАНОЈКО
+ЈОРГАНОВИЋ СИМО
+ЈОРГИЋ ЖИВАНА
+ЈОРГИЋ ДРАГОМИР
+ЈОРГОВАНОВИЋ ЈЕЛИСАВЕТА
+ЈОРОВИЋ БРАНКО
+ЈОРОВИЋ РАНКО
+ЈОСЕВСКИ СИМЕОН
+ЈОСИЋ АЛЕКСАНДАР
+ЈОСИЋ ФИЛИП
+ЈОСИЋ ИЛИЈА
+ЈОСИЋ ИВАН
+ЈОСИЋ КОСАНА
+ЈОСИЋ ЉУБИНКО
+ЈОСИЋ ЉУБИНКО
+ЈОСИЋ ЉУБОМИР
+ЈОСИЋ МИЛЕНКО
+ЈОСИЋ МИРЈАНА
+ЈОСИЋ ОБРАД
+ЈОСИЋ ОЛГА
+ЈОСИЋ РАДИНКА
+ЈОСИЋ СРЂА
+ЈОСИЋ СТЕВАН
+ЈОСИЋ СТЕВАН
+ЈОСИФИДИС КОСТА
+ЈОСИФОВИЋ ДИМИТРИЈЕ
+ЈОСИФОВИЋ ДРАГИЋ
+ЈОСИФОВИЋ ЉУБИЦА
+ЈОСИФОВИЋ ОЛГА
+ЈОСИМЧЕВ ЗВОНИМИР
+ЈОСИМОВ БОРИСЛАВ
+ЈОСИМОВ ДРАГОСЛАВ
+ЈОСИМОВ ДУШАН
+ЈОСИМОВ ГЛИГОРИЈЕ
+ЈОСИМОВ ЈЕЛЕНА
+ЈОСИМОВ СТЕВАН
+ЈОСИМОВ ВАСИЛИЈЕ
+ЈОСИМОВ ВОЈО
+ЈОСИМОВИЋ ЖИВА
+ЈОСИМОВИЋ БОРИВОЈ
+ЈОСИМОВИЋ БОРИВОЈ
+ЈОСИМОВИЋ ЈУЛИЈАНА
+ЈОСИМОВИЋ МАРКО
+ЈОСИМОВИЋ МИЛИЦА
+ЈОСИМОВИЋ НЕНАД
+ЈОСИМОВИЋ СИНИША
+ЈОСИМОВИЋ СТЕВАН
+ЈОСИМОВИЋ СТЕВАН
+ЈОСИМОВИЋ СТЕВКА
+ЈОСИМОВИЋ ТАТЈАНА
+ЈОСИМОВИЋ ВЛАДИМИР
+ЈОСИМОВИЋ ВЛАДИМИР
+ЈОСИМОВИЋ ВЛАДИМИР
+ЈОСИМОВИЋ ЗДЕНКА
+ЈОСИМОВСКИ АЛЕКСАНДАР
+ЈОСИН ДРАГАН
+ЈОСИН МАРИЈА
+ЈОСИН МИЛЕ
+ЈОСИН РАДИЦА
+ЈОСИН РАДОВАН
+ЈОСИН СЛОБОДАН
+ЈОСИПОВИЋ БОРИСЛАВ
+ЈОСИПОВИЋ БОРО
+ЈОСИПОВИЋ ДАНИЦА
+ЈОСИПОВИЋ ИВИЦА
+ЈОСИПОВИЋ ПЕТАР
+ЈОСИПОВИЋ СЛОБОДАН
+ЈОСИПОВИЋ ВЛАДИМИР
+ЈОТАНОВИЋ ДАРИНКА
+ЈОТАНОВИЋ КОРНЕЛИЈА
+ЈОТАНОВИЋ ЉУБОМИР
+ЈОТАНОВИЋ МИЛИВОЈ
+ЈОТАНОВИЋ НЕДЕЉКО
+ЈОТАНОВИЋ РАЈКО
+ЈОТАНОВИЋ СТАНКО
+ЈОТАНОВИЋ ТОМИСЛАВ
+ЈОТИЋ МИРОСЛАВ
+ЈОВЧИЋ ДУШКО
+ЈОВЧИЋ СЛАВКО
+ЈОВЧИЋ ВЛАДАН
+ЈОВАЧЕВИЋ ДМИТАР
+ЈОВАШЕВИЋ СЛОБОДАН
+ЈОВАНЧЕВИЋ БОСИЉКА
+ЈОВАНЧЕВИЋ ГОЈКО
+ЈОВАНЧЕВИЋ ИЛИЈА
+ЈОВАНЧЕВИЋ ЈЕЛИЦА
+ЈОВАНЧЕВИЋ ЈОВАН
+ЈОВАНЧЕВИЋ ЈОВАН
+ЈОВАНЧЕВИЋ КОВИЉКА
+ЈОВАНЧЕВИЋ СТЕВАН
+ЈОВАНЧЕВИЋ-ЗЕКИЋ НИКОЛА
+ЈОВАНЧЕВИЋ-ЗЕКИЋ НИКОЛА
+ЈОВАНЧИЋ ДРАГИЦА
+ЈОВАНЧИЋ МЕЛАНИЈА
+ЈОВАНЧИЋ МИОДРАГ
+ЈОВАНЧИЋ МИРОСЛАВ
+ЈОВАНЦАИ МАРИЈА
+ЈОВАНДИЋ МАНДА
+ЈОВАНДИЋ МИЛОШ
+ЈОВАНДИН МИЛАН
+ЈОВАНИЋ ЂОРЂЕ
+ЈОВАНИЋ ЂУРО
+ЈОВАНИЋ БОШКО
+ЈОВАНИЋ БОШКО
+ЈОВАНИЋ ДОБРИЦА
+ЈОВАНИЋ ДУШАН ДИПЛ ИНГ
+ЈОВАНИЋ МАРИЈА
+ЈОВАНИЋ МИРКО
+ЈОВАНИЋ МЛАДЕН
+ЈОВАНИЋ МОМИР
+ЈОВАНИЋ ОЛИВЕРА
+ЈОВАНИЋ ОЛИВЕРА
+ЈОВАНКИН АЛЕКСАНДАР
+ЈОВАНКОВИЋ РАДОСЛАВ
+ЈОВАНОВ ЖАРКО
+ЈОВАНОВ ЖИВА
+ЈОВАНОВ БИЉАНА
+ЈОВАНОВ БОШКО
+ЈОВАНОВ БОЈАНА
+ЈОВАНОВ БОРИСЛАВ
+ЈОВАНОВ БОРИСЛАВ
+ЈОВАНОВ БРАНИСЛАВ
+ЈОВАНОВ ДРАГАН
+ЈОВАНОВ ДРАГИЦА
+ЈОВАНОВ ДРАГИЊА
+ЈОВАНОВ ДРАГОЉУБ
+ЈОВАНОВ ДРАГОМИР
+ЈОВАНОВ ДУШАН
+ЈОВАНОВ ДУШАН
+ЈОВАНОВ ДУШИЦА
+ЈОВАНОВ ИГЊАТ
+ЈОВАНОВ ИСА
+ЈОВАНОВ ИВАН
+ЈОВАНОВ ЈАША
+ЈОВАНОВ ЈАСНА
+ЈОВАНОВ ЈЕЛЕНА
+ЈОВАНОВ ЈОВАН
+ЈОВАНОВ ЈОВАН
+ЈОВАНОВ ЈОВИЦА
+ЈОВАНОВ ЛАЗАР
+ЈОВАНОВ ЛАЗАР
+ЈОВАНОВ МЕЛАНИЈА
+ЈОВАНОВ МИЛАН
+ЈОВАНОВ МИЛАН
+ЈОВАНОВ МИЛАН
+ЈОВАНОВ МИЛИВОЈ
+ЈОВАНОВ МИЛОШ
+ЈОВАНОВ МИРЈАНА
+ЈОВАНОВ МЛАДЕН
+ЈОВАНОВ МОМЧИЛО
+ЈОВАНОВ ПЕТАР
+ЈОВАНОВ РАДИВОЈ
+ЈОВАНОВ САВА
+ЈОВАНОВ СПОМЕНКА
+ЈОВАНОВ СТЕВАНКА
+ЈОВАНОВ СТЕВАН
+ЈОВАНОВ СВЕТИСЛАВ
+ЈОВАНОВ СВЕТИСЛАВ
+ЈОВАНОВ СВЕТОЗАР
+ЈОВАНОВ ТОДОР
+ЈОВАНОВ ТОМА
+ЈОВАНОВ ВИДА
+ЈОВАНОВ ВЛАДИМИР
+ЈОВАНОВИЋ ЧЕДА
+ЈОВАНОВИЋ ЧЕДОМИР
+ЈОВАНОВИЋ ЧЕДОМИР
+ЈОВАНОВИЋ ЧЕДОМИР
+ЈОВАНОВИЋ ЧЕДО
+ЈОВАНОВИЋ ЖИВАДИН
+ЈОВАНОВИЋ ЖИВКА
+ЈОВАНОВИЋ ЖИВКО
+ЈОВАНОВИЋ ЖИВКО
+ЈОВАНОВИЋ ЖИВКО
+ЈОВАНОВИЋ ЖИВОЈИН
+ЈОВАНОВИЋ ЖИВОЈИН
+ЈОВАНОВИЋ ЖИВОЈИН
+ЈОВАНОВИЋ ЖИВОРАД
+ЈОВАНОВИЋ ЖИВОРАД
+ЈОВАНОВИЋ ЖИВОТА
+ЈОВАНОВИЋ ЂЕНЂИ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂОРЂЕ
+ЈОВАНОВИЋ ЂУРЂИНА
+ЈОВАНОВИЋ ЂУРЂИНКА
+ЈОВАНОВИЋ ЂУРА
+ЈОВАНОВИЋ ЂУРО
+ЈОВАНОВИЋ АЛЕКСАНДАР ДР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДАР
+ЈОВАНОВИЋ АЛЕКСАНДРА
+ЈОВАНОВИЋ АЛЕКСА
+ЈОВАНОВИЋ АНЂА
+ЈОВАНОВИЋ АНЂА
+ЈОВАНОВИЋ АНЂЕЛИЈА ДР
+ЈОВАНОВИЋ АНЂЕЛКА
+ЈОВАНОВИЋ АНЂЕЛКО
+ЈОВАНОВИЋ АНДРИЈА ДИПЛ ИНГ
+ЈОВАНОВИЋ АНДРИЈА ДИПЛ ОЕЦ
+ЈОВАНОВИЋ АНДРИЈА
+ЈОВАНОВИЋ АНДРИЈА
+ЈОВАНОВИЋ АНГЕЛИНА
+ЈОВАНОВИЋ АНИЦА
+ЈОВАНОВИЋ АНКИЦА
+ЈОВАНОВИЋ АРАНЂЕЛ
+ЈОВАНОВИЋ АРСА ДР
+ЈОВАНОВИЋ АРСА
+ЈОВАНОВИЋ АРСЕНИЈЕ
+ЈОВАНОВИЋ-АРСИЋ ВИОЛЕТА
+ЈОВАНОВИЋ-БАНКОВАЧКИ ЈОВАНКА
+ЈОВАНОВИЋ БЛАГОЈЕ
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОШКО
+ЈОВАНОВИЋ БОЖИДАР ПРОФЕСОР
+ЈОВАНОВИЋ БОЖИДАР
+ЈОВАНОВИЋ БОЖО
+ЈОВАНОВИЋ БОГДАНКА
+ЈОВАНОВИЋ БОГДАНКА
+ЈОВАНОВИЋ БОГДАН
+ЈОВАНОВИЋ БОГДАН
+ЈОВАНОВИЋ БОГДАН
+ЈОВАНОВИЋ БОЈАНА
+ЈОВАНОВИЋ БОРИСЛАВ
+ЈОВАНОВИЋ БОРИСЛАВ
+ЈОВАНОВИЋ БОРИВОЈ ДИПЛ ИНГ
+ЈОВАНОВИЋ БОРИВОЈ
+ЈОВАНОВИЋ БОСИЉКА
+ЈОВАНОВИЋ БРАНИБОР
+ЈОВАНОВИЋ БРАНИМИР
+ЈОВАНОВИЋ БРАНИСЛАВА
+ЈОВАНОВИЋ БРАНИСЛАВ
+ЈОВАНОВИЋ БРАНИСЛАВ
+ЈОВАНОВИЋ БРАНИСЛАВ
+ЈОВАНОВИЋ БРАНИСЛАВ
+ЈОВАНОВИЋ БРАНКА
+ЈОВАНОВИЋ БРАНКО
+ЈОВАНОВИЋ БРАНКО
+ЈОВАНОВИЋ БРАНКО
+ЈОВАНОВИЋ БРАТИСЛАВ ДР
+ЈОВАНОВИЋ БУДИМИР
+ЈОВАНОВИЋ ЦВЕТА
+ЈОВАНОВИЋ ЦВЕТКО
+ЈОВАНОВИЋ ДАЛИБОР ДИПЛ ПРАВНИК
+ЈОВАНОВИЋ ДАЛИБОР
+ЈОВАНОВИЋ ДАНИЛО
+ЈОВАНОВИЋ ДАРИНКА
+ЈОВАНОВИЋ ДЕЈАН
+ЈОВАНОВИЋ ДЕЈАН
+ЈОВАНОВИЋ ДИМИТРИЈЕ
+ЈОВАНОВИЋ ДИМИТРИЈЕ
+ЈОВАНОВИЋ ДИМИТРИЈЕ
+ЈОВАНОВИЋ ДИМИТРИЈЕ
+ЈОВАНОВИЋ ДОБРИЛА
+ЈОВАНОВИЋ ДОБРИВОЈЕ
+ЈОВАНОВИЋ ДОБРОСАВ
+ЈОВАНОВИЋ ДОБРОСАВ
+ЈОВАНОВИЋ ДРАГАНА
+ЈОВАНОВИЋ ДРАГАНА
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГАН
+ЈОВАНОВИЋ ДРАГИША
+ЈОВАНОВИЋ ДРАГИЋ
+ЈОВАНОВИЋ ДРАГИЋ
+ЈОВАНОВИЋ ДРАГИЦА
+ЈОВАНОВИЋ ДРАГИЦА
+ЈОВАНОВИЋ ДРАГИЦА
+ЈОВАНОВИЋ ДРАГИЦА
+ЈОВАНОВИЋ ДРАГИВОЈЕ
+ЈОВАНОВИЋ ДРАГОЉУБ ОЕЦ
+ЈОВАНОВИЋ ДРАГОЉУБ
+ЈОВАНОВИЋ ДРАГОЉУБ
+ЈОВАНОВИЋ ДРАГОЉУБ
+ЈОВАНОВИЋ ДРАГОСЛАВ ДИПЛ ИНГ
+ЈОВАНОВИЋ ДРАГОСЛАВ ДИПЛ ИНГ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГОСЛАВ
+ЈОВАНОВИЋ ДРАГО
+ЈОВАНОВИЋ ДРАГУТИН
+ЈОВАНОВИЋ ДУШАН ДР ПРОФ
+ЈОВАНОВИЋ ДУШАН ДР
+ЈОВАНОВИЋ ДУШАН ДР
+ЈОВАНОВИЋ ДУШАНКА
+ЈОВАНОВИЋ ДУШАНКА
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШАН
+ЈОВАНОВИЋ ДУШКО
+ЈОВАНОВИЋ ДУШКО
+ЈОВАНОВИЋ ДУДА
+ЈОВАНОВИЋ ЕЛЕНА
+ЈОВАНОВИЋ ЕМИЦА
+ЈОВАНОВИЋ ЕСМА
+ЈОВАНОВИЋ ЕВИЦА
+ЈОВАНОВИЋ ФЕЛИЦИЈА
+ЈОВАНОВИЋ ФИЛИП
+ЈОВАНОВИЋ ГЕОРГ
+ЈОВАНОВИЋ ГОЈКО
+ЈОВАНОВИЋ ГОЈКО
+ЈОВАНОВИЋ ГОРАН
+ЈОВАНОВИЋ ГОРАН
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГОРДАНА
+ЈОВАНОВИЋ ГРОЗДА
+ЈОВАНОВИЋ ГРУЈА
+ЈОВАНОВИЋ ГРУЈИЦА
+ЈОВАНОВИЋ ХРИСТИНА
+ЈОВАНОВИЋ ИЛЕ
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИЛИЈА
+ЈОВАНОВИЋ ИРИНА
+ЈОВАНОВИЋ ИВАН ДР
+ЈОВАНОВИЋ ИВАНКА ДР ПРОФ
+ЈОВАНОВИЋ ИВАНКА
+ЈОВАНОВИЋ ИВАН
+ЈОВАНОВИЋ ИВАН
+ЈОВАНОВИЋ ЈАША
+ЈОВАНОВИЋ ЈАДРАНКА
+ЈОВАНОВИЋ ЈАСМИНКА
+ЈОВАНОВИЋ ЈЕЛА
+ЈОВАНОВИЋ ЈЕЛЕНА
+ЈОВАНОВИЋ ЈЕЛЕНА
+ЈОВАНОВИЋ ЈЕЛЕНА
+ЈОВАНОВИЋ ЈЕЛЕНА
+ЈОВАНОВИЋ ЈЕЛИЦА
+ЈОВАНОВИЋ ЈЕЛИСАВЕТА
+ЈОВАНОВИЋ ЈЕЛИСАВЕТА
+ЈОВАНОВИЋ ЈЕЛИСАВЕТА
+ЈОВАНОВИЋ ЈЕЛКА
+ЈОВАНОВИЋ ЈЕВТА
+ЈОВАНОВИЋ ЈОЦА
+ЈОВАНОВИЋ ЈОВАНКА
+ЈОВАНОВИЋ ЈОВАНКА
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВАН
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈОВИЦА
+ЈОВАНОВИЋ ЈУЛИЈАНА
+ЈОВАНОВИЋ ЈУЛКА
+ЈОВАНОВИЋ КАТАРИНА
+ЈОВАНОВИЋ КАТИЦА
+ЈОВАНОВИЋ КОСАНА
+ЈОВАНОВИЋ КОСТА
+ЈОВАНОВИЋ КОСТА
+ЈОВАНОВИЋ-КОСТИЋ ДРАГОСЛАВА
+ЈОВАНОВИЋ КОВИНКА
+ЈОВАНОВИЋ КСЕНИЈА
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЛАЗАР
+ЈОВАНОВИЋ ЉИЉАНА
+ЈОВАНОВИЋ ЉУБАН
+ЈОВАНОВИЋ ЉУБИША
+ЈОВАНОВИЋ ЉУБИША
+ЈОВАНОВИЋ ЉУБИЦА
+ЈОВАНОВИЋ ЉУБИЦА
+ЈОВАНОВИЋ ЉУБИЦА
+ЈОВАНОВИЋ ЉУБИЦА
+ЈОВАНОВИЋ ЉУБИНКА
+ЈОВАНОВИЋ ЉУБИНКА
+ЈОВАНОВИЋ ЉУБИВОЈЕ ДР
+ЈОВАНОВИЋ ЉУБОМИР МР
+ЈОВАНОВИЋ ЉУБОМИР
+ЈОВАНОВИЋ ЉУБО
+ЈОВАНОВИЋ ЛУКА
+ЈОВАНОВИЋ ЛУКА
+ЈОВАНОВИЋ ЛУКА
+ЈОВАНОВИЋ ЛУКА
+ЈОВАНОВИЋ МАЛИША
+ЈОВАНОВИЋ МАРА
+ЈОВАНОВИЋ МАРА
+ЈОВАНОВИЋ МАРА
+ЈОВАНОВИЋ МАРИЦА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРИЈА
+ЈОВАНОВИЋ МАРКО
+ЈОВАНОВИЋ МАРКО
+ЈОВАНОВИЋ МИЋО
+ЈОВАНОВИЋ МИХАЈЛО
+ЈОВАНОВИЋ МИХАЈЛО
+ЈОВАНОВИЋ МИХАЈЛО
+ЈОВАНОВИЋ МИЈАТ
+ЈОВАНОВИЋ МИЈА
+ЈОВАНОВИЋ МИЛАШИН
+ЈОВАНОВИЋ МИЛАДИН
+ЈОВАНОВИЋ МИЛАН АДВОКАТ
+ЈОВАНОВИЋ МИЛАН ДИПЛ ИНГ
+ЈОВАНОВИЋ МИЛАНКА
+ЈОВАНОВИЋ МИЛАНКА
+ЈОВАНОВИЋ МИЛАНКА
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛАН
+ЈОВАНОВИЋ МИЛЕНА
+ЈОВАНОВИЋ МИЛЕНА
+ЈОВАНОВИЋ МИЛЕНА
+ЈОВАНОВИЋ МИЛЕНКО ДР
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНКО
+ЈОВАНОВИЋ МИЛЕНТИЈЕ
+ЈОВАНОВИЋ МИЛЕВА
+ЈОВАНОВИЋ МИЛЕ
+ЈОВАНОВИЋ МИЛЕ
+ЈОВАНОВИЋ МИЛИЋ
+ЈОВАНОВИЋ МИЛИЋ
+ЈОВАНОВИЋ МИЛИЦА
+ЈОВАНОВИЋ МИЛИЦА
+ЈОВАНОВИЋ МИЛИЦА
+ЈОВАНОВИЋ МИЛИЈАНА
+ЈОВАНОВИЋ МИЛИСАВ
+ЈОВАНОВИЋ МИЛИВОЈЕ
+ЈОВАНОВИЋ МИЛИВОЈ
+ЈОВАНОВИЋ МИЛИВОЈ
+ЈОВАНОВИЋ МИЉАНА
+ЈОВАНОВИЋ МИЛКАН
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОШ
+ЈОВАНОВИЋ МИЛОЊА
+ЈОВАНОВИЋ МИЛОРАД ДИПЛ ИНГ
+ЈОВАНОВИЋ МИЛОРАД ДР ЛЕКАР
+ЈОВАНОВИЋ МИЛОРАД
+ЈОВАНОВИЋ МИЛОРАД
+ЈОВАНОВИЋ МИЛОВАН
+ЈОВАНОВИЋ МИЛОВАН
+ЈОВАНОВИЋ МИЛУТИН
+ЈОВАНОВИЋ МИЛУТИН
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИОДРАГ
+ЈОВАНОВИЋ МИРА
+ЈОВАНОВИЋ МИРА
+ЈОВАНОВИЋ МИРА
+ЈОВАНОВИЋ МИРЈАНА
+ЈОВАНОВИЋ МИРЈАНА
+ЈОВАНОВИЋ МИРЈАНА
+ЈОВАНОВИЋ МИРКО
+ЈОВАНОВИЋ МИРКО
+ЈОВАНОВИЋ МИРКО
+ЈОВАНОВИЋ МИРКО
+ЈОВАНОВИЋ МИРОЉУБ
+ЈОВАНОВИЋ МИРОСЛАВА
+ЈОВАНОВИЋ МИРОСЛАВА
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИРОСЛАВ
+ЈОВАНОВИЋ МИТАР
+ЈОВАНОВИЋ МЛАЂА
+ЈОВАНОВИЋ МЛАДЕНКА
+ЈОВАНОВИЋ МЛАДЕН
+ЈОВАНОВИЋ МЛАДЕН
+ЈОВАНОВИЋ МОМЧИЛО
+ЈОВАНОВИЋ МОМЧИЛО
+ЈОВАНОВИЋ МОМИР
+ЈОВАНОВИЋ НАДА
+ЈОВАНОВИЋ НАДА
+ЈОВАНОВИЋ НАДА
+ЈОВАНОВИЋ НАДА
+ЈОВАНОВИЋ НАДЕЖДА
+ЈОВАНОВИЋ НАДЕЖДА
+ЈОВАНОВИЋ НАДЕЖДА
+ЈОВАНОВИЋ НЕБОЈША
+ЈОВАНОВИЋ НЕДА
+ЈОВАНОВИЋ НЕДЕЉКА
+ЈОВАНОВИЋ НЕМАЊА
+ЈОВАНОВИЋ НЕМАЊА
+ЈОВАНОВИЋ НЕНАД АДВОКАТ
+ЈОВАНОВИЋ НЕНАД
+ЈОВАНОВИЋ НЕНАД
+ЈОВАНОВИЋ НЕНАД
+ЈОВАНОВИЋ НЕВЕНА
+ЈОВАНОВИЋ НЕВЕНКА
+ЈОВАНОВИЋ НЕВЕНКА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НИКОЛА
+ЈОВАНОВИЋ НОВАК
+ЈОВАНОВИЋ НОВИЦА
+ЈОВАНОВИЋ ОБРАД
+ЈОВАНОВИЋ ОЛГА
+ЈОВАНОВИЋ ОЛГА
+ЈОВАНОВИЋ ОЛГА
+ЈОВАНОВИЋ ОЛГА
+ЈОВАНОВИЋ ОЛГИЦА
+ЈОВАНОВИЋ ОСТОЈА
+ЈОВАНОВИЋ ОСТОЈА
+ЈОВАНОВИЋ ОСТОЈА
+ЈОВАНОВИЋ ПАВЛЕ
+ЈОВАНОВИЋ ПАВЛЕ
+ЈОВАНОВИЋ ПАВЛЕ
+ЈОВАНОВИЋ ПЕРА
+ЈОВАНОВИЋ ПЕРИЦА
+ЈОВАНОВИЋ ПЕРИЦА
+ЈОВАНОВИЋ ПЕРО
+ЈОВАНОВИЋ ПЕРО
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПЕТАР
+ЈОВАНОВИЋ ПРЕДРАГ ДР
+ЈОВАНОВИЋ ПРЕДРАГ
+ЈОВАНОВИЋ ПРЕДРАГ
+ЈОВАНОВИЋ ПРЕДРАГ
+ЈОВАНОВИЋ РАДЕ
+ЈОВАНОВИЋ РАДИША
+ЈОВАНОВИЋ РАДИНКА
+ЈОВАНОВИЋ РАДИВОЈ
+ЈОВАНОВИЋ РАДИВОЈ
+ЈОВАНОВИЋ РАДМИЛА
+ЈОВАНОВИЋ РАДМИЛА
+ЈОВАНОВИЋ РАДМИЛА
+ЈОВАНОВИЋ РАДОМИР ДР
+ЈОВАНОВИЋ РАДОМИР
+ЈОВАНОВИЋ РАДОЊА
+ЈОВАНОВИЋ РАДОСЛАВА
+ЈОВАНОВИЋ РАДОСЛАВ
+ЈОВАНОВИЋ РАДОСЛАВ
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАДОВАН
+ЈОВАНОВИЋ РАЈКО
+ЈОВАНОВИЋ РАНЂЕЛ
+ЈОВАНОВИЋ РАНКО
+ЈОВАНОВИЋ РАТКА
+ЈОВАНОВИЋ РУЖА
+ЈОВАНОВИЋ РУЖИЦА
+ЈОВАНОВИЋ РУЖИЦА
+ЈОВАНОВИЋ РУЖИЦА
+ЈОВАНОВИЋ САША
+ЈОВАНОВИЋ САВА
+ЈОВАНОВИЋ САВЕТА
+ЈОВАНОВИЋ САВО
+ЈОВАНОВИЋ САВО
+ЈОВАНОВИЋ СЕЛИМИР
+ЈОВАНОВИЋ СЕРАФИМ
+ЈОВАНОВИЋ СИМА
+ЈОВАНОВИЋ СИМА
+ЈОВАНОВИЋ СИМО
+ЈОВАНОВИЋ СИНИША
+ЈОВАНОВИЋ СЛАВИЦА
+ЈОВАНОВИЋ СЛАВКО
+ЈОВАНОВИЋ СЛАВКО
+ЈОВАНОВИЋ СЛАВКО
+ЈОВАНОВИЋ СЛАВКО
+ЈОВАНОВИЋ СЛОБОДАН ДР
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СЛОБОДАН
+ЈОВАНОВИЋ СМИЉА
+ЈОВАНОВИЋ СМИЉА
+ЈОВАНОВИЋ СМИЉКА
+ЈОВАНОВИЋ СМИЉКА
+ЈОВАНОВИЋ СОФИЈА
+ЈОВАНОВИЋ СПИРА
+ЈОВАНОВИЋ СПОМЕНКА
+ЈОВАНОВИЋ СРЂАН
+ЈОВАНОВИЋ СРБИСЛАВ
+ЈОВАНОВИЋ СРЕТЕН
+ЈОВАНОВИЋ СТАНИША
+ЈОВАНОВИЋ СТАНИМИР
+ЈОВАНОВИЋ СТАНИМИР
+ЈОВАНОВИЋ СТАНИМИР
+ЈОВАНОВИЋ СТАНКО
+ЈОВАНОВИЋ СТАНОЈЕ
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТЕВАН
+ЈОВАНОВИЋ СТОЈША
+ЈОВАНОВИЋ-СТОЈАН ГЕРТРУДА ДР
+ЈОВАНОВИЋ СТОЈАНКА
+ЈОВАНОВИЋ СТОЈАНКА
+ЈОВАНОВИЋ СТОЈАН
+ЈОВАНОВИЋ СТОЈАН
+ЈОВАНОВИЋ СТОЈАН
+ЈОВАНОВИЋ СТОЈАН
+ЈОВАНОВИЋ СУЗАНА
+ЈОВАНОВИЋ СВЕТЛАНА
+ЈОВАНОВИЋ СВЕТОЗАР
+ЈОВАНОВИЋ СВЕТОЗАР
+ЈОВАНОВИЋ СВЕТОЗАР
+ЈОВАНОВИЋ СВЕТОЗАР
+ЈОВАНОВИЋ ТАТЈАНА
+ЈОВАНОВИЋ ТЕОДОРА
+ЈОВАНОВИЋ ТИХОМИР
+ЈОВАНОВИЋ ТИХОМИР
+ЈОВАНОВИЋ ТОДОР
+ЈОВАНОВИЋ ТОМА
+ЈОВАНОВИЋ ТОМИСЛАВ
+ЈОВАНОВИЋ ТОМИСЛАВ
+ЈОВАНОВИЋ ТРАЈКО
+ЈОВАНОВИЋ ТУГОМИР
+ЈОВАНОВИЋ УРОШ
+ЈОВАНОВИЋ ВАСА
+ЈОВАНОВИЋ ВАСА
+ЈОВАНОВИЋ ВАСИЛИЈЕ
+ЈОВАНОВИЋ ВАСИЛИЈЕ
+ЈОВАНОВИЋ ВАСИЛИЈЕ
+ЈОВАНОВИЋ ВАСИЛИЈЕ
+ЈОВАНОВИЋ ВАСИЉ
+ЈОВАНОВИЋ ВЕЛИЧКО
+ЈОВАНОВИЋ ВЕЛИБОР
+ЈОВАНОВИЋ ВЕЛИБОР
+ЈОВАНОВИЋ ВЕЛИБОР
+ЈОВАНОВИЋ ВЕЛИНКА
+ЈОВАНОВИЋ ВЕРА
+ЈОВАНОВИЋ ВЕРА
+ЈОВАНОВИЋ ВЕРА
+ЈОВАНОВИЋ ВЕРА
+ЈОВАНОВИЋ ВЕРИЦА
+ЈОВАНОВИЋ ВЕРИЦА
+ЈОВАНОВИЋ ВЕРОЉУБ
+ЈОВАНОВИЋ ВЕСЕЛИН
+ЈОВАНОВИЋ ВЕСНА
+ЈОВАНОВИЋ ВЕСНА
+ЈОВАНОВИЋ ВЕСНА
+ЈОВАНОВИЋ ВИДА
+ЈОВАНОВИЋ ВИДОСЛАВ
+ЈОВАНОВИЋ ВИЛМА
+ЈОВАНОВИЋ ВЛАДА
+ЈОВАНОВИЋ ВЛАДА
+ЈОВАНОВИЋ ВЛАДИМИР
+ЈОВАНОВИЋ ВЛАДИМИР
+ЈОВАНОВИЋ ВЛАДИМИР
+ЈОВАНОВИЋ ВЛАДИМИР
+ЈОВАНОВИЋ ВЛАДИСЛАВА
+ЈОВАНОВИЋ ВЛАЈКО
+ЈОВАНОВИЋ ВЛАСТИМИР
+ЈОВАНОВИЋ ВОЈИСЛАВ ДР ПРОФ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВОЈИСЛАВ
+ЈОВАНОВИЋ ВУЧЕТА
+ЈОВАНОВИЋ ЗАГОРКА
+ЈОВАНОВИЋ ЗДЕНКА
+ЈОВАНОВИЋ ЗДРАВКО
+ЈОВАНОВИЋ ЗДРАВКО
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРАН
+ЈОВАНОВИЋ ЗОРА
+ЈОВАНОВИЋ ЗОРА
+ЈОВАНОВИЋ ЗОРИЦА
+ЈОВАНОВИЋ ЗОРИЦА
+ЈОВАНОВИЋ ЗОРИЦА
+ЈОВАНОВИЋ ЗОРКА
+ЈОВАНОВИЋ ЗВОНИМИР
+ЈОВАНОВСКА ЦВЕТА
+ЈОВАНОВСКА ТАСКА
+ЈОВАНОВСКИ ДИМИТАР
+ЈОВАНОВСКИ ДУШАН
+ЈОВАНОВСКИ МИЛЕ
+ЈОВАНОВСКИ МИЛЕ
+ЈОВАНОВСКИ МИЛИЦА
+ЈОВАНОВСКИ НИКОЛА
+ЈОВАНОВСКИ ПЕТАР
+ЈОВАНОВСКИ СИМЕОНА
+ЈОВАНОВСКИ СТОЈАДИН
+ЈОВЕР МИХАЉ
+ЈОВЕТИЋ АНДРИЈА
+ЈОВЕТИЋ БРАНКО
+ЈОВЕТИЋ БРАНКО
+ЈОВЕТИЋ МИЛИЦА
+ЈОВЕТИЋ СТАНКО
+ЈОВЕТИЋ ВЕСЕЛИН
+ЈОВИЧЕВИЋ ВЛАДИМИР ДР
+ЈОВИЧИЋ ЧЕДОМИР
+ЈОВИЧИЋ ЖАРКО
+ЈОВИЧИЋ ЖАРКО
+ЈОВИЧИЋ ЖЕЉКО
+ЈОВИЧИЋ ЖИВАН
+ЈОВИЧИЋ ЂОРЂЕ
+ЈОВИЧИЋ ЂОРЂЕ
+ЈОВИЧИЋ ЂУРА
+ЈОВИЧИЋ АНКИЦА
+ЈОВИЧИЋ БОШКО
+ЈОВИЧИЋ БОГДАН
+ЈОВИЧИЋ БОРА
+ЈОВИЧИЋ БРАНЕ
+ЈОВИЧИЋ БРАНИСЛАВА
+ЈОВИЧИЋ БРАНКА
+ЈОВИЧИЋ ДЕЈАН
+ЈОВИЧИЋ ДРАГАН
+ЈОВИЧИЋ ДРАГАН
+ЈОВИЧИЋ ДРАГАН
+ЈОВИЧИЋ ДРАГАН
+ЈОВИЧИЋ ДРАГОЉУБ
+ЈОВИЧИЋ ДУШАН
+ЈОВИЧИЋ ДУШАН
+ЈОВИЧИЋ ДУШКО
+ЈОВИЧИЋ ГЕОРГИЈЕ
+ЈОВИЧИЋ ХЕЛЕНА
+ЈОВИЧИЋ ИЛИЈА
+ЈОВИЧИЋ ИЛИЈА
+ЈОВИЧИЋ ЈЕЛИСАВЕТА
+ЈОВИЧИЋ ЈОВАН
+ЈОВИЧИЋ ЈОВИЦА
+ЈОВИЧИЋ КАТИЦА
+ЈОВИЧИЋ ЛАЗАР
+ЈОВИЧИЋ ЛЕПОСАВА
+ЈОВИЧИЋ ЉИЉАНА
+ЈОВИЧИЋ ЉИЉАНА
+ЈОВИЧИЋ ЉУБИЦА
+ЈОВИЧИЋ ЉУБИЦА
+ЈОВИЧИЋ ЉУБИНКА
+ЈОВИЧИЋ ЉУБОМИР
+ЈОВИЧИЋ МАКСИМ
+ЈОВИЧИЋ МАРА
+ЈОВИЧИЋ МАРИЈА
+ЈОВИЧИЋ МАРИЈА
+ЈОВИЧИЋ МАРКО
+ЈОВИЧИЋ МАРКО
+ЈОВИЧИЋ МАРКО
+ЈОВИЧИЋ МАРКО
+ЈОВИЧИЋ МИЛАДИН
+ЈОВИЧИЋ МИЛАН
+ЈОВИЧИЋ МИЛАН
+ЈОВИЧИЋ МИЛЕНКО
+ЈОВИЧИЋ МИЛЕНКО
+ЈОВИЧИЋ МИЛИЦА
+ЈОВИЧИЋ МИЛИЦА
+ЈОВИЧИЋ МИЛОШ
+ЈОВИЧИЋ МИЛОШ
+ЈОВИЧИЋ МИЛОМИР
+ЈОВИЧИЋ МИЛОРАД
+ЈОВИЧИЋ МИЛОВАН
+ЈОВИЧИЋ МИРОСЛАВ
+ЈОВИЧИЋ МЛАДЕН
+ЈОВИЧИЋ ОБРАД
+ЈОВИЧИЋ ОЛГА
+ЈОВИЧИЋ ПАЈА
+ЈОВИЧИЋ ПЕТАР
+ЈОВИЧИЋ РАДА
+ЈОВИЧИЋ РАДЕ
+ЈОВИЧИЋ РАДИСЛАВ
+ЈОВИЧИЋ РАДИВОЈЕ
+ЈОВИЧИЋ РАДОМИР
+ЈОВИЧИЋ РАДОВАН
+ЈОВИЧИЋ РАТКО
+ЈОВИЧИЋ САВЕТА
+ЈОВИЧИЋ СИМО
+ЈОВИЧИЋ СЛАВКО
+ЈОВИЧИЋ СЛОБОДАНКА
+ЈОВИЧИЋ СЛОБОДАН
+ЈОВИЧИЋ СРЕТЕН
+ЈОВИЧИЋ СТАНКО
+ЈОВИЧИЋ СВЕТИСЛАВ
+ЈОВИЧИЋ СВЕТОЗАР
+ЈОВИЧИЋ СВЕТОЗАР
+ЈОВИЧИЋ ТАНАСИЈЕ
+ЈОВИЧИЋ ТАТЈАНА
+ЈОВИЧИЋ ТОДОР
+ЈОВИЧИЋ УРОШ
+ЈОВИЧИЋ ВАСА
+ЈОВИЧИЋ ВЕРИЦА
+ЈОВИЧИЋ ВОЈИН
+ЈОВИЧИЋ ВОЈИСЛАВ
+ЈОВИЧИЋ ЗДРАВКО
+ЈОВИЧИЋ ЗОРАН
+ЈОВИЧИН АЛЕКСАНДАР
+ЈОВИЧИН АНИЦА
+ЈОВИЧИН КАТИЦА
+ЈОВИЧИН ЉУБИЦА
+ЈОВИЧИН ЉУБИЦА
+ЈОВИЧИН МИЛОВАН
+ЈОВИЧИН СЛАВКО
+ЈОВИЧИН СОФИЈА
+ЈОВИЧИН ТОША
+ЈОВИШЕВИЋ МИЛАН
+ЈОВИШЕВИЋ МИРЈАНА
+ЈОВИШЕВИЋ ЗДРАВКО
+ЈОВИШИЋ ЖАРКО
+ЈОВИШИЋ ЂУРО
+ЈОВИШИЋ БОРО
+ЈОВИШИЋ ДУШАН
+ЈОВИШИЋ ЈОВАН
+ЈОВИШИЋ МИТАР
+ЈОВИШИЋ НИКОЛА
+ЈОВИШИЋ ПАВЛЕ
+ЈОВИШИЋ ПРЕДРАГ
+ЈОВИШИЋ СИМО
+ЈОВИЋ ЧЕДОМИР
+ЈОВИЋ ЖАРКО
+ЈОВИЋ ЖАРКО
+ЈОВИЋ ЖИВОЈИН
+ЈОВИЋ ЖИВОРАД
+ЈОВИЋ ЖИВОРАД
+ЈОВИЋ ЂОРЂЕ
+ЈОВИЋ АЛЕКСАНДАР
+ЈОВИЋ АЛЕКСАНДАР
+ЈОВИЋ АНИЦА
+ЈОВИЋ БОШКО
+ЈОВИЋ БОБАН
+ЈОВИЋ БОРА
+ЈОВИЋ БРАНКО
+ЈОВИЋ БРАНКО
+ЈОВИЋ ЦВЕТА
+ЈОВИЋ ДАВИД
+ЈОВИЋ ДИМИТРИЈЕ
+ЈОВИЋ ДРАГАНА
+ЈОВИЋ ДРАГОЉУБ
+ЈОВИЋ ДРАГОЉУБ
+ЈОВИЋ ДУШАН
+ЈОВИЋ ДУШАН
+ЈОВИЋ ЕРИКА
+ЈОВИЋ ГОЈКО
+ЈОВИЋ ГОРДАНА
+ЈОВИЋ ИВАНА
+ЈОВИЋ ИВАН
+ЈОВИЋ ЈАДРАНКА ДР
+ЈОВИЋ ЈАСНА
+ЈОВИЋ ЈОЦО
+ЈОВИЋ ЈОВАНКА
+ЈОВИЋ ЈОВАН
+ЈОВИЋ ЈОВАН
+ЈОВИЋ ЈОВО
+ЈОВИЋ КОСТА
+ЈОВИЋ КСЕНИЈА
+ЈОВИЋ ЉУБИША
+ЈОВИЋ МАРИЦА
+ЈОВИЋ МАРИЈАН
+ЈОВИЋ МАРКО
+ЈОВИЋ МЕЛИТА
+ЈОВИЋ МИЛАДИН
+ЈОВИЋ МИЛАНКА
+ЈОВИЋ МИЛАНКА
+ЈОВИЋ МИЛАН
+ЈОВИЋ МИЛАН
+ЈОВИЋ МИЛАН
+ЈОВИЋ МИЛЕНКО
+ЈОВИЋ МИЛИВОЈЕ
+ЈОВИЋ МИЛОЈИЦА
+ЈОВИЋ МИЛУТИН
+ЈОВИЋ МИЛУТИН
+ЈОВИЋ МИРА
+ЈОВИЋ МИРЈАНА
+ЈОВИЋ МИРЈАНА
+ЈОВИЋ МИРОСЛАВА
+ЈОВИЋ МИРОСЛАВ
+ЈОВИЋ МИТАР
+ЈОВИЋ НИКОЛА
+ЈОВИЋ НИКОЛА
+ЈОВИЋ НИКОЛА
+ЈОВИЋ НИКОЛА
+ЈОВИЋ ПАЈИЦА
+ЈОВИЋ ПЕРСИДА
+ЈОВИЋ ПЕТАР
+ЈОВИЋ ПЕТАР
+ЈОВИЋ РАДЕ
+ЈОВИЋ РАДИВОЈЕ
+ЈОВИЋ РАДИВОЈЕ
+ЈОВИЋ РАДОВАН
+ЈОВИЋ РАЈКО
+ЈОВИЋ САВО
+ЈОВИЋ СЛАВКО
+ЈОВИЋ СЛОБОДАН
+ЈОВИЋ СПАСЕНИЈА
+ЈОВИЋ СТАНА
+ЈОВИЋ СТАНИША
+ЈОВИЋ СТАНКО
+ЈОВИЋ СТАНКО
+ЈОВИЋ СТАНКО
+ЈОВИЋ СТЕВАН
+ЈОВИЋ СВЕТИСЛАВ
+ЈОВИЋ ВАСА
+ЈОВИЋ ВЕЛИМИР
+ЈОВИЋ ВЕЛИЗАР
+ЈОВИЋ ВЕЉКО
+ЈОВИЋ ВЕРА
+ЈОВИЋ ВЕРА
+ЈОВИЋ ВЕРА
+ЈОВИЋ ВЛАДА
+ЈОВИЋ ВЛАДА
+ЈОВИЋ ВЛАДА
+ЈОВИЋ ВЛАДА
+ЈОВИЋ ВЛАДИМИР
+ЈОВИЋ ВЛАДИСЛАВ
+ЈОВИЋ ВОЈИСЛАВ
+ЈОВИЋ ВУКОСАВА
+ЈОВИЋ ЗДРАВКО
+ЈОВИЋ ЗВОНИМИР
+ЈОВИЋЕВИЋ БОЖИДАР
+ЈОВИЋЕВИЋ МИЛА
+ЈОВИЋЕВИЋ МИЛУТИН
+ЈОВИЋЕВИЋ НЕНАД
+ЈОВИЋЕВИЋ СТАНКО ДИПЛ ИНГ
+ЈОВИЋЕВИЋ ВИДОСАВА
+ЈОВИЋЕВИЋ ЗОРАН
+ЈОВИН ЖИВА
+ЈОВИН АНЂЕЛКА
+ЈОВИН БОРИВОЈ
+ЈОВИН БРАНКО
+ЈОВИН ДРАГАН
+ЈОВИН ДРАГОМИР
+ЈОВИН ДУШАН
+ЈОВИН ДУШАН
+ЈОВИН ИВАН
+ЈОВИН ЈЕЛЕНА
+ЈОВИН ЉУБИЦА
+ЈОВИН МИЛАН
+ЈОВИН МИЛИВОЈ ДР
+ЈОВИН МИЛОШ
+ЈОВИН МИРЈАНА
+ЈОВИН РАДОСЛАВ
+ЈОВИН РАДОВАН
+ЈОВИН СИМА
+ЈОВИН СЛАВКО ДР
+ЈОВИН СВЕТЛАНА
+ЈОВИН ВЕСНА
+ЈОВИН ЗЛАТОЈЕ
+ЈОВИН ЗУСКА
+ЈОВИНОВ БОГДАН
+ЈОВКОВИЋ МИОДРАГ
+ЈОВКОВИЋ РАТОМИР
+ЈОВОВИЋ ЖЕЉКО
+ЈОВОВИЋ АНКА
+ЈОВОВИЋ БОЖИДАР
+ЈОВОВИЋ БРАНИСЛАВ
+ЈОВОВИЋ ЈОВАН
+ЈОВОВИЋ ЈОВАН
+ЈОВОВИЋ ЉИЉАНА
+ЈОВОВИЋ МИЛОРАД
+ЈОВОВИЋ МИЛОВАН
+ЈОВОВИЋ НИКОЛА
+ЈОВОВИЋ НИКОЛА
+ЈОВОВИЋ РАДЕ
+ЈОВОВИЋ РАДОМИР
+ЈОВОВИЋ РАЈКО
+ЈОВОВИЋ СТАНА
+ЈОВОВИЋ СТОЈАН
+ЈОЗАНОВ ДАНИЦА
+ЈОЗАНОВ МИЛАН
+ЈОЗАНОВ СЛОБОДАН
+ЈОЗАНОВ ЗОРАН
+ЈОЗЕФЧАК ИВАН
+ЈОЗИЋ ЈОЗА
+ЈОЗИЋ КАТАРИНА
+ЈОЗИЋ МИОДРАГ
+ЈОЗИЋ МИРКО
+ЈОЗИЋ ПЕЈО
+ЈУШИЋ НАТАЛИЈА
+ЈУШКОВИЋ БРАНИСЛАВ
+ЈУАНИН ЖИВОЈИН ДИПЛ ИНГ
+ЈУАНИН ЈОВАН
+ЈУГИН МИЛЕНА
+ЈУГОВИЋ ЂУРАЂ
+ЈУГОВИЋ ЛЕПОСАВА
+ЈУГОВИЋ МИЛЕ
+ЈУГОВИЋ МИЛОШ
+ЈУГОВИЋ ВЕСЕЛИН
+ЈУГОВИЋ ЗДРАВКО
+ЈУХАС ЂЕРЂ
+ЈУХАС АНДРАШ
+ЈУХАС АНДРАШ
+ЈУХАС АНТАЛ
+ЈУХАС ДЕЗЕ
+ЈУХАС ЕРНЕ
+ЈУХАС ЕВА
+ЈУХАС ФЕРЕНЦ
+ЈУХАС ФЕРЕНЦ
+ЈУХАС ГЕЗА ДР ПРОФЕСОР
+ЈУХАС ГИЗЕЛА
+ЈУХАС ИВАНКА
+ЈУХАС ЈАНОШ
+ЈУХАС ЈАНОШ
+ЈУХАС ЈЕЛИСАВЕТА
+ЈУХАС КАТАРИНА
+ЈУХАС-КОСТИЋ ЂЕРЂИ
+ЈУХАС ЛАДИСЛАВ
+ЈУХАС МАРИЈА
+ЈУХАС МИХАЉ
+ЈУХАС МИХАЉ
+ЈУХАС МИЈО
+ЈУХАС МИРОН
+ЈУХАС СТЕВАН
+ЈУХАС СТЕВАН
+ЈУХАС СТЕВАН
+ЈУХАС СТЕВАН
+ЈУХАС ТИБОР ДИПЛ ИНГ
+ЈУХАС ТИБОР
+ЈУХАС ВАЛЕРИЈА
+ЈУХАС ВИКТОРИЈА
+ЈУХАС ВЛАДИСЛАВ
+ЈУКИЋ БАНЕ
+ЈУКИЋ ФРАЊА
+ЈУКИЋ ФРАЊО
+ЈУКИЋ ИВИЦА
+ЈУКИЋ ЈОСИП
+ЈУКИЋ ЛУКА
+ЈУКИЋ МАРКО
+ЈУКИЋ НАДА
+ЈУКИЋ ВЛАДИСЛАВ
+ЈУКОВИЋ РАСИМ
+ЈУЛИНАЦ ДРАГИЊА
+ЈУНГ ЂЕРЂ
+ЈУНГ ФРАНЦИШКА
+ЈУНГ ИБОЉКА
+ЈУНГ ИЛДИКО
+ЈУНГ ИВИЦА
+ЈУНГ ЈОСИП
+ЈУНГ ЈОВАН
+ЈУНГ КАРОЉ МР
+ЈУНГ МАРИЈА
+ЈУНГ РОБЕРТ
+ЈУНГ РОБЕРТ
+ЈУНГ ВЕРИЦА
+ЈУНУЗОВИЋ ИСМЕТ
+ЈУПЕК ЗДЕНКА
+ЈУРЧЕВИЋ МАРКО
+ЈУРЧИЋ ЖЕЉКО
+ЈУРЧИЋ ДЕСАНКА
+ЈУРШИЋ ЦВЕТА
+ЈУРАГА МАРКО
+ЈУРАГА МИЛОРАД
+ЈУРАКИЋ ГОРАН
+ЈУРАКИЋ ИЛИЈА
+ЈУРАКИЋ ИВАН
+ЈУРАКИЋ ЈЕЛА
+ЈУРАКИЋ ЈОЗО
+ЈУРАКИЋ ПЕЈО
+ЈУРАКИЋ СТИПО
+ЈУРАЊИ МАРИЈА
+ЈУРАС АНИЦА
+ЈУРАС АНТЕ
+ЈУРАСОВИЋ ЈОВАН
+ЈУРЦА ЖЕЉКО
+ЈУРЦА ЂОРЂЕ
+ЈУРЦА ИВАН
+ЈУРЦА ЛАРИСА
+ЈУРЕШЕВ ПЕТАР
+ЈУРЕШИЋ ЈОЗО
+ЈУРЕШИЋ ВЕРА
+ЈУРИШЕВИЋ АНКА
+ЈУРИШЕВИЋ МАРА
+ЈУРИШЕВИЋ МИРКО
+ЈУРИШИЋ ЂОРЂЕ
+ЈУРИШИЋ ЂУРА
+ЈУРИШИЋ АЛОЈЗ
+ЈУРИШИЋ АНДРИЈА
+ЈУРИШИЋ БОГОЉУБ
+ЈУРИШИЋ ДРАГАН
+ЈУРИШИЋ ФРАЊА
+ЈУРИШИЋ ГОСПАВА
+ЈУРИШИЋ ИГЊАТ
+ЈУРИШИЋ ИЛИНКА
+ЈУРИШИЋ ИВАН
+ЈУРИШИЋ ЈЕЛЕНА
+ЈУРИШИЋ ЈОВАН
+ЈУРИШИЋ КАТАРИНА
+ЈУРИШИЋ ЉУБИЦА
+ЈУРИШИЋ МАРИЈА
+ЈУРИШИЋ МИЛЕНКО
+ЈУРИШИЋ МИЛОРАД
+ЈУРИШИЋ МИЛОРАД
+ЈУРИШИЋ НЕДЕЉКА
+ЈУРИШИЋ НЕНАД
+ЈУРИШИЋ НИКОЛА
+ЈУРИШИЋ ОЛГА
+ЈУРИШИЋ ОСТОЈА
+ЈУРИШИЋ ПЕТАР
+ЈУРИШИЋ ПЕТАР
+ЈУРИШИЋ РАДЕНКО
+ЈУРИШИЋ СТЕВАН
+ЈУРИШИЋ СТЕВАН
+ЈУРИШИЋ ВЛАТКО
+ЈУРИШИЋ ЗОРКА
+ЈУРИШИН ЖАРКО
+ЈУРИШИН ЖИВА
+ЈУРИШИН БРАНИСЛАВ
+ЈУРИШИН ДРАГОЉУБ
+ЈУРИШИН ЉИЉАНА
+ЈУРИШИН МИЛИНА
+ЈУРИШИН МИЛОШ
+ЈУРИШИН НАТАЛИЈА
+ЈУРИШИН РАСТКО ДИПЛ ИНГ
+ЈУРИШИН СЛАВКО
+ЈУРИШИН ВЛАДИМИР
+ЈУРИЋ ЖИВАДИНКА
+ЈУРИЋ АНА
+ЈУРИЋ АВГУСТ
+ЈУРИЋ БОСИЉКО
+ЈУРИЋ ЦВИЈО
+ЈУРИЋ ФИЛИП
+ЈУРИЋ ИЛИЈА
+ЈУРИЋ ИВАН
+ЈУРИЋ ЈЕЛКА
+ЈУРИЋ МАРИЈА
+ЈУРИЋ МАРИЈА
+ЈУРИЋ МАРКО
+ЈУРИЋ МАРКО
+ЈУРИЋ МИЛОШ
+ЈУРИЋ ПАУЛИНА
+ЈУРИЋ ПЕТАР
+ЈУРИЋ СОФИЈА
+ЈУРИБАШИЋ МАРИЈА
+ЈУРИБАШИЋ ТОМИСЛАВ
+ЈУРИЦ ИВАН
+ЈУРИЦ ЈОСИП
+ЈУРИЦ СТЈЕПАН
+ЈУРИЦА АНА
+ЈУРИЦА ДАЛИБОР
+ЈУРИЦА ЈАН
+ЈУРИК ШАНДОР
+ЈУРИК ДУШАН
+ЈУРИК ЈОСИП
+ЈУРИК ЈОСИП
+ЈУРИК ЈОВАН
+ЈУРИК МАРИЈА
+ЈУРИК МИХАЛ
+ЈУРИК МИЛКА
+ЈУРИК ПАВЛЕ
+ЈУРИК СТЕВАН
+ЈУРИСТОВСКИ ГЕОРГ ДИПЛ ИНГ
+ЈУРЈАНОВИЋ ДУШАНКА
+ЈУРЈЕВИЋ ЈАСМИНА
+ЈУРКИЋ АНТУН
+ЈУРКИЋ АУГУСТИН
+ЈУРКИЋ МАРКО
+ЈУРКОВИЋ АНА
+ЈУРКОВИЋ БИЉАНА
+ЈУРКОВИЋ БОЖИЦА
+ЈУРКОВИЋ ДРАГАН
+ЈУРКОВИЋ ДУШАН
+ЈУРКОВИЋ КРИСТИНА
+ЈУРКОВИЋ ПЕТАР
+ЈУРКОВИЋ ПЕТАР
+ЈУРКОВИЋ ЗЛАТКО
+ЈУРКОВИЋ ЗВОНКО
+ЈУРКОВСКИ СТЕВАН
+ЈУРЛИНА АНТУН
+ЈУРЛИНА МАРКО ДР
+ЈУРЛИНА ПАВЛЕ
+ЈУРУКОВСКИ ГОСПАВА
+ЈУРУКОВСКИ ЛЕВКО
+ЈУРУКОВСКИ МИЛОВАНКА
+ЈУСТИН ЦИРИЛ
+ЈУСТИН ДАНИЦА
+ЈУСУФИ БЕРЗАТ
+ЈУСУФОВИЋ АМИР
+ЈУВАН ФАНИКА
+КЋИКУ ЂАВИД
+КЋИКУ РАХИМ
+КАЧАК ИЛОНА
+КАЧАПОР СЕФЕДИН
+КАЧАР ЧЕДОМИР
+КАЧАР ЂУРО
+КАЧАР БРАНИСЛАВ
+КАЧАР ДУШАНКА
+КАЧАР СЛАВКО
+КАЧАР СЛОБОДАН
+КАЧАР СЛОБОДАН
+КАЧАР ТАДИЈА
+КАЧАРЕВИЋ МИЛАН
+КАЧАВЕНДА БРАНИСЛАВА
+КАЧАВЕНДА ЛАЗО
+КАЧАВЕНДА МИЛАН
+КАЧАВЕНДА МИЛОРАД
+КАЧАВЕНДА МИЛОРАД
+КАЧАВЕНДА СЛОБОДАН
+КАЧАВЕНДА ТАТЈАНА
+КАЧАВЕНДА ТАТЈАНА
+КАЧАВЕНДА ВЕРА
+КАЧМАРЧИК ШТЕФАН
+КАЧМАРЧИК ЈЕЛЕНА
+КАША ТИБОР
+КАШАИ ЈЕЛИСАВЕТА
+КАШАНИН МИЛЕТА
+КАШАНИН МИРА
+КАШАНИН МИРЈАНА
+КАШАНИН МИРОСЛАВ
+КАШИЋ АЛЕКСАНДАР
+КАШИЋ ЈОВАН ДР
+КАШИЋ МАРИЈА
+КАШИЋ МИЛИВОЈ
+КАШИЋ МЛАДЕН
+КАШИЋ РЕВЕКА
+КАШИЋ ВЕРА
+КАШИЋ ВИКТОРИЈА
+КАШИЋ ВОЈИСЛАВ
+КАШИК ИВАН
+КАШИКОВИЋ ЂОРЂО
+КАШИКОВИЋ БОШКО
+КАШИКОВИЋ ГОЈКО
+КАШИКОВИЋ ПРЕДРАГ
+КАШИКОВИЋ СЛАВКА
+КАШИКОВИЋ ВЛАДО
+КАШЛИК ИМРЕ
+КАШЛИК МАТИЈА
+КАШОВСКИ ЈАНКО
+КАШОВСКИ НИКОЛА
+КАЋАНСКИ ЖАРКО
+КАЋАНСКИ ЖАРКО
+КАЋАНСКИ ЖИВКО
+КАЋАНСКИ ЂОРЂЕ
+КАЋАНСКИ БОЈАНА
+КАЋАНСКИ БРАНИСЛАВ
+КАЋАНСКИ БРАНКО
+КАЋАНСКИ ДУШАНКА
+КАЋАНСКИ ДУШАН
+КАЋАНСКИ ЈЕЛИСАВЕТА
+КАЋАНСКИ КОНСТАНТИН
+КАЋАНСКИ ЉУБИЦА
+КАЋАНСКИ МИЛИВОЈ
+КАЋАНСКИ МИЛИВОЈ
+КАЋАНСКИ МИЛКА
+КАЋАНСКИ МИЛОРАД
+КАЋАНСКИ МИЛУТИН
+КАЋАНСКИ МИРОСЛАВА
+КАЋАНСКИ МЛАДЕН
+КАЋАНСКИ ПАВЛЕ ДР ЛЕКАР
+КАЋАНСКИ ПЛАТОН ДР
+КАЋАНСКИ РАДОВАН
+КАЋАНСКИ СИМА
+КАЋАНСКИ СЛАВКО
+КАЋАНСКИ СМИЉА
+КАЋАНСКИ СОФИЈА
+КАЋАНСКИ СВЕТИСЛАВ
+КАЋАНСКИ ТОДОР
+КАЋАНСКИ ВЕЛИНКА
+КАЋАНСКИ ВЕРА
+КАЋАНСКИ ВЛАДИМИР ВЕТЕРИНАР
+КАЋАНСКИ ВЛАДИСЛАВА
+КАЋИАК МИХАЈЛО
+КАЋУРИН ЖИВАН
+КАЋУРИН КРИСТИНА
+КАЋУРИН МИЛАНА
+КАЋУРИН МИЛАН
+КАЋУРИН РАДОСЛАВ
+КАЖИЋ ВЛАДИМИР
+КАБА СУЛЕЈМАН
+КАБИЋ АНА
+КАБИЋ БОГДАН
+КАБИЋ ДАНИЛО
+КАБИЋ ДРАГИЦА
+КАБИЋ ДРАГУТИН
+КАБИЋ СЛОБОДАН
+КАБИЋ ТИМОШЕНКО
+КАБИЉО ДРАГИЦА
+КАБИЉО ЈОСИП
+КАБИЉО СИЛВИО
+КАБОК ЕРИКА
+КАБОК ЈОЖЕФ
+КАЦАРОШ КОСТАС
+КАДАШ ЛАЈОШ ДИПЛ ИНГ
+КАДАР ЈУЛИЈАНА
+КАДИЋ ИЛИЈА
+КАДИЋ МАРИЈАН
+КАДИЋ НИКОЛА
+КАДИЋ РАДМИЛА
+КАДИЋ САВА
+КАДИЈА ВОЈИСЛАВ
+КАДИВНИК МИОДРАГ
+КАДЛЕЧИК КАТИЦА
+КАДРИЈА ФЕВЗИЈА
+КАДРИЈА ХАБИЉ
+КАДРИЈА ХАСАФ
+КАДРИЈА ХУРМЕТ
+КАДВАЊ ЈАНОШ
+КАДВАЊ ЈОВАН
+КАДВАЊ ЛАДИСЛАВ
+КАДВАЊ ЛАЈОШ
+КАХРИМАН ПЕТАР
+КАХРИМАН СНЕЖАНА
+КАХРИМАН СНЕЖАНА
+КАХРИМАН СНЕЖАНА
+КАИЋ ИВАН
+КАИЋ КАТАЛИН ДР
+КАИЋ ПЕТАР
+КАИНОВИЋ ГОРДАНА
+КАИТОВИЋ ЈЕЛА
+КАЈЧИЋ ЉИЉАНА
+КАЈЧИЋ МИЛОВАН
+КАЈЧИЋ ВЕЛИМИР
+КАЈЕВИЋ ЖАРКО
+КАЈФЕШ ЗВОНКО
+КАЈГАНИЋ ИЛИЈА
+КАЈГАНИЋ ЉУБАН
+КАЈГАНИЋ МИЛОРАД
+КАЈГАНИЋ ВЕРОНИКА
+КАЈИШ ЖЕЉКО
+КАЈИШ МИЛЕ
+КАЈИЋ ЖЕЉКО
+КАЈИЋ НАДА
+КАЈКАРА БОГДАН
+КАЈКАРА МИЛЕНКО
+КАЈКАРА РАДОСЛАВ
+КАЈОН АЛЕКСАНДАР
+КАЈОН АНА
+КАЈОН ЉИЉАНА
+КАЈОН МИРОСЛАВ
+КАЈОН МИРОСЛАВ
+КАЈТЕС ЂУРО
+КАЈТЕЗ ДРАГАН
+КАЈТЕЗ МИРКО
+КАЈТЕЗ НЕДЕЉКО
+КАЈТЕЗ РОЗАЛИЈА
+КАЈТЕЗ ТРИВУН
+КАЈТЕЗ ВАЛЕНТИНА
+КАЈЗЕР КАРЛО
+КАКАШ ДАМИР
+КАКАШ ИЛИЈА
+КАКАШ ЈОЖЕФ
+КАКАШ ЈОСИП
+КАКАШ МАРИЈА
+КАКОЊИ АНА
+КАКУЧКА ИШТВАН
+КАКУЧКА ЈЕЛИСАВЕТА
+КАКУЧКА СТЕВАН
+КАЛЧОВ МИХАЉ
+КАЛА ГЕЗА
+КАЛАЧАЈИ СВЕТИСЛАВ
+КАЛАЧЕВИЋ ВЛАДИМИР
+КАЛАБА БОЈАН
+КАЛАБА БРАНКО
+КАЛАБА ДРАГИЦА
+КАЛАБА ЉУПКО
+КАЛАБА ЛУКА
+КАЛАБА МАРКО
+КАЛАБА МЛАДЕН
+КАЛАБА НИКОЛА
+КАЛАБА СТЕВАН
+КАЛАБИЋ ДАНЕ
+КАЛАБИЋ СТЕВО
+КАЛАБРИЋ БРАНКО
+КАЛАБРИЋ МИХОВИЛ
+КАЛАФАТИЋ МИЛИВОЈ
+КАЛАФАТИЋ НЕБОЈША
+КАЛАИ КАРОЉ
+КАЛАЈЏИЋ ДАРКО
+КАЛАЈЏИЋ ЛУКА
+КАЛАЈЏИЋ МИХАИЛО
+КАЛАЈЏИЋ МИЛАН
+КАЛАМАНДА ДРАГАН
+КАЛАМАНДА СЛОБОДАН
+КАЛАЊ ЂУКА
+КАЛАЊ ДРАГИША
+КАЛАЊ ФЕМКА
+КАЛАЊ СТЕВАН
+КАЛАЊА ДУШАНКА
+КАЛАЊА МИРОСЛАВ
+КАЛАЊЕВ ЗОРА
+КАЛАЊОШ ЂУРА
+КАЛАЊОШ АНА
+КАЛАЊОШ БОРИСЛАВ
+КАЛАЊОШ ЈАНОШ
+КАЛАЊОШ МИРЈАНА
+КАЛАЊОШ ПЕТАР
+КАЛАЊОШ ПЕТАР
+КАЛАЊОШ РУЖА
+КАЛАЊОШ РУЖА
+КАЛАЊУШ ЂУРА
+КАЛАЊУШ ФРАЊА
+КАЛАПАШ ЕВИЦА
+КАЛАПАШЕВ ДИНА
+КАЛАПАШЕВ СИНИША
+КАЛАПАТИ ШАРА
+КАЛАПАТИ ФЕРЕНЦ
+КАЛАПАТИ ИВАН
+КАЛАПАТИ РУДОЛФ
+КАЛАПИШ РУДИ
+КАЛАПИШ ЗОЛТАН
+КАЛАУЗ МАРИНКО
+КАЛАУЗОВ МАША
+КАЛЦ МИЛЕНКА
+КАЛЦ МИЛКО
+КАЛЦ СЛАВОЈКА
+КАЛЕА ЈЕЛЕНА
+КАЛЕЈСКИ ЗЛАТОМИР
+КАЛЕМ БРАНКО
+КАЛЕМ ИВАНКА
+КАЛЕМ МИРЈАНА
+КАЛЕМ НЕДЕЉКО
+КАЛЕМ СРЕТЕН
+КАЛЕМ СРЕТЕН
+КАЛЕМБЕР БОШКО
+КАЛЕМБЕР МИША
+КАЛЕМБЕР МИЛЕНА
+КАЛЕМБЕР МИЛИВОЈ
+КАЛЕМБЕР МИРЈАНА
+КАЛЕМБЕР СОФИЈА
+КАЛЕМБЕР СТОЈАДИН
+КАЛЕМИ ШЕРИФ
+КАЛЕНДЕР КРИСТИНА
+КАЛЕНИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+КАЛЕНИЋ АЛЕКСАНДАР
+КАЛЕНИЋ ВОЈИСЛАВ
+КАЛЕЊУК МИТАР
+КАЛЕНТИЋ БОСА
+КАЛЕНТИЋ РАДОВАН
+КАЛЕЗИЋ ЈЕЛЕНА
+КАЛЕЗИЋ ЈОВАНКА
+КАЛЕЗИЋ ОЛГА
+КАЛЕЗИЋ ТОМИСЛАВ
+КАЛИЧАНИН МОМЧИЛО
+КАЛИЋ ДРАГАНА
+КАЛИЋ ЈОСИП
+КАЛИЋ ЈОВАНКА
+КАЛИЋ МИЛЕНА
+КАЛИЋ МУСТАФА
+КАЛИЋ ОЛГА
+КАЛИЋ РАДОВАН
+КАЛИЋ СОФИЈА
+КАЛИК ГРОЗДА
+КАЛИН ЕДУАРД
+КАЛИН МАРИЈАН
+КАЛИНИЋ ДАНИЦА
+КАЛИНИЋ ЈОВО
+КАЛИНИЋ КРСТО
+КАЛИНИЋ МИЛАДИН
+КАЛИНИЋ МИЛИЦА
+КАЛИНИЋ НАДА
+КАЛИНСКИ ДАРКО
+КАЛИВОДА РУДОЛФ
+КАЉЕВИЋ АЛЕКСАНДАР
+КАЉЕВИЋ КРСТО
+КАЉЕВИЋ СТЕВАН
+КАЛКАН МИЛАН
+КАЛМАН КЛАРА
+КАЛМАН МИХАЈЛО
+КАЛМАН МИКЛОШ
+КАЛМАН РАДИЦА
+КАЛМАР ЂОРЂЕ
+КАЛМАР ЂУРА
+КАЛМАР АНА
+КАЛМАР ФЕРЕНЦ
+КАЛМАР ФРАЊА
+КАЛМАР ГРГУР
+КАЛМАР ИШТВАН
+КАЛМАР ЛАЈОШ
+КАЛМАР МИРКО
+КАЛМАР-ВЕРЕШ ГИЗЕЛА
+КАЛМАР ВЛАДИМИР
+КАЛМАРЕВИЋ АЛЕКСАНДАР
+КАЛНОК СЛОБОДАН
+КАЛОЧАИ ШАНДОР
+КАЛОЧАИ ИШТВАН
+КАЛОЧАИ ЛЕНКЕ
+КАЛОЧАИ ПЕТАР
+КАЛОЧАЈИ ЂОРЂЕ
+КАЛОЧАЊ ФЕРЕНЦ
+КАЛОЦИ ИВАН
+КАЛОЦИ ЛАДИСЛАВ
+КАЛОЦИ ТИБОР
+КАЛОЦИ ВЕСЕЛИНКА
+КАЛОПЕР ЈОВАНКА
+КАЛОПЕР ПЕРИЦА
+КАЛОЗИ АРАНКА
+КАЛТНЕКЕР ЕМИЛИЈА
+КАЛТНЕКЕР ЕМИЛИЈА
+КАЛУШЕВ ГЛИША
+КАЛУШКА СЛАВКО
+КАЛУЖИЋ КАТИЦА
+КАЛУЖИЋ НАДА
+КАЛУЂЕРОВИЋ МАРКО
+КАЛУЂЕРОВИЋ МИЛИВОЈЕ
+КАЛУЂЕРОВИЋ МИЛОШ
+КАЛУЂЕРОВИЋ МИРИЈАНА
+КАЛУЂЕРОВИЋ МЛАДЕН
+КАЛУЂЕРОВИЋ МОМЧИЛО
+КАЛУЂЕРОВИЋ ОЛИВЕРА
+КАЛУЂЕРОВИЋ УРОШ
+КАЛУЂЕРСКИ ЂОКА
+КАЛУЂЕРСКИ ЂОКА
+КАЛУЂЕРСКИ АГНЕЗА
+КАЛУЂЕРСКИ БОРИС
+КАЛУЂЕРСКИ ГАВРА
+КАЛУЂЕРСКИ МИЛОРАД
+КАЛУЂЕРСКИ МИРОСЛАВ
+КАЛУЂЕРСКИ СИНИША
+КАЛУЂЕРСКИ СТОЈАН ДР
+КАЛУГЕР НИКОЛА
+КАЛУГЕР ЗОРАН
+КАМЧЕСКА ДРАГИЦА
+КАМЧЕСКИ ДИМЧЕ
+КАМЧЕСКИ СТЕВАН
+КАМЧЕВИЋ АНА
+КАМЧЕВСКИ САВА
+КАМАРИТ ЗОРАН
+КАМАСИ ФЕРЕНЦ
+КАМАСИ ФЕРЕНЦ
+КАМАСИ ИМРЕ
+КАМАСИ ЈАНОШ
+КАМБЕРИ ДУШАН
+КАМБЕРИ МУСА
+КАМБЕРОВИЋ БАТО
+КАМБЕРОВИЋ СИНИША
+КАМЕНАРОВИЋ ГЛИГОРИЈЕ
+КАМЕНАРОВИЋ МИЛАН
+КАМЕНАРОВИЋ НИКОЛА
+КАМЕЊИЦКИ ЈУЛИЈАН
+КАМЕНКО МИЛАН
+КАМЕНКО РАДЕ
+КАМЕНКО РАДЕ
+КАМЕНКО ВЕРА
+КАМЕНКОВИЋ АЛЕКСАНДРА
+КАМЕНКОВИЋ ДОБРИЛА
+КАМЕНКОВИЋ ЈОСИП
+КАМЕНКОВИЋ ЈОВАНКА
+КАМЕНКОВИЋ ОЛГА
+КАМЕНОВ ЕМИЛ ДР
+КАМПЕЛ ИВАН
+КАМПИЋ ПАВЛЕ
+КАМРА ИВАН
+КАНЧАР ЕРЖЕБЕТ
+КАНАЧКИ ЖАРКО
+КАНАЧКИ ЉИЉАНА
+КАНАЧКИ МАГДАЛЕНА
+КАНАЧКИ СТЕВАН
+КАНАЧКИ ЗЛАТА
+КАНАЗИР ЖИВКА
+КАНАЗИР АЛЕКСАНДАР
+КАНАЗИР-БЕЛИЋ МИЛИЦА
+КАНАЗИР БОРИСЛАВ
+КАНАЗИР БОРИСЛАВ
+КАНАЗИР БРАНИСЛАВ
+КАНАЗИР ЦВЕТА
+КАНАЗИР ДРАГИЦА
+КАНАЗИР ДРАГИЦА
+КАНАЗИР ДУШАН
+КАНАЗИР ИВАНКА
+КАНАЗИР ЈОВАНКА
+КАНАЗИР ЈОВАН
+КАНАЗИР КОСТА
+КАНАЗИР КОСТА
+КАНАЗИР КОСТА
+КАНАЗИР МАРИЈА
+КАНАЗИР МИЛАН
+КАНАЗИР МИЛИЦА
+КАНАЗИР МИЛОВАН
+КАНАЗИР РАДИВОЈ
+КАНАЗИР СЛАВКО
+КАНАЗИР ВАСА
+КАНАЗИР ВЕРИЦА ДР
+КАНАЗИР ВУКИЦА
+КАНАЗИР ЗАХАРИЈЕ
+КАНБАН МИЛИЦА
+КАНДИЋ НАДА
+КАНДИЋ РАДМИЛА
+КАНДИЋ СМИЉАНА
+КАНДИЋ ВИДОЈЕ
+КАНДРАЧ ЂОРЂЕ
+КАНДРАЧ ЛЕОНА
+КАНГРГА АНКА
+КАНГРГА КОСТА
+КАНГРГА РУЖА
+КАНИЖАИ ЕВА
+КАЊА ЈАН
+КАЊЕРИЋ МАТЕ
+КАЊО ИШТВАН
+КАЊО СТЈЕПАН
+КАЊО ЗОЛТАН
+КАЊУХ ЈАКИМ
+КАЊУХ ЈОАКИМ
+КАЊУХ МАРИЦА
+КАЊУХ МИРА
+КАЊУХ ВЛАДИМИР
+КАЊУХ ЗВОНКО
+КАЊУКА ИВАН
+КАЊУКА ВЛАДИМИР
+КАНКАРАШ РАДОСАВ
+КАНКАРАШ ВЕСЕЛИН
+КАНЛИЋ МИЛАН
+КАНЛИЋ ЗАРИЈА
+КАНОВИЋ ПАВЛЕ ДИПЛ ИНГ
+КАНТАР ЂУРО
+КАНТАР ДМИТАР
+КАНТАР КАЈА
+КАНТАР МИЛАН
+КАНТАР МИЛОШ
+КАНТАР МИРОСЛАВ
+КАНТАР НИКОЛА
+КАНТАР ОСТОЈА
+КАНТАР ВЛАДО
+КАНТАРЏИЋ ЂОРЂЕ
+КАНТАРЏИЋ ГОРДАНА
+КАНТАРЏИЋ ЈЕЛЕНА
+КАНТАРЏИЋ КАТИЦА
+КАНТАРЏИЋ КОСТА
+КАНТАРЏИЋ ЛАЗАР
+КАНТАРЏИЋ ЛАЗА
+КАНТАРЏИЋ МИЛИЦА
+КАНТАРЏИЋ МИЛОВАН
+КАНТАРЏИЋ МИЛОВАН
+КАНТАРЏИЋ МИРОСЛАВ
+КАНТАРЏИЋ МЛАДЕН
+КАНТАРЏИЋ НАДА
+КАНТАРЏИЋ ОЛГА
+КАНТАРЏИЋ ПЕТАР
+КАНТАРЏИЋ СТЕВАН
+КАНТАРЏИЋ ВАСА
+КАНТИНКОСКИ ХАНУ
+КАНТОР ЛАЈОШ
+КАНТОР ОСКАР
+КАНУРИЋ АЛЕКСАНДАР
+КАНУРИЋ МИЛИЦА
+КАНУРИЋ ЗОРКА
+КАНУРСКИ ЈОВАН
+КАНУРСКИ ВИДОСАВА
+КАПАМАЏИЈА АЛЕКСАНДРА
+КАПАМАЏИЈА БОРИСЛАВ ДР
+КАПАМАЏИЈА ДУШАНКА
+КАПАМАЏИЈА РАДМИЛА
+КАПАМАЏИН ЈОВАН
+КАПЕЛАН НИКОЛА
+КАПЕС АЛЕКСАНДАР
+КАПЕС ЗДРАВКА
+КАПЕТАНИЋ ТОМИСЛАВ
+КАПЕТАНОВ МИРЈАНА
+КАПЕТАНОВ СВЕТИСЛАВ
+КАПЕТАНОВ ВУКИЦА
+КАПЕТАНОВИЋ ЈОВАН
+КАПЕТАНОВИЋ МИДХАТ
+КАПЕТАНОВИЋ МОМЧИЛО
+КАПЕТАНОВИЋ ОЛГА
+КАПЕТАНОВИЋ РАТКО
+КАПЕТАНОВИЋ ВЕРИЦА
+КАПИЧИЋ ДУШАН
+КАПИЧИЋ САВО
+КАПИЧИЋ СТЕВАН
+КАПИЦЛ ДРАГУТИН
+КАПИТАЊ ЛАСЛО
+КАПЛАР ЖИВАН
+КАПЛАР МАРИЈА
+КАПЛАРЕВИЋ МИОДРАГ
+КАПЛАРСКИ КОНСТАНТИН
+КАПЛАРСКИ МЛАДЕН
+КАПЛАРСКИ СВЕТЛАНА
+КАПЛИЈЕВ ПЕТАР
+КАПМАЈЕР АЛЕКСАНДАР
+КАПОЧ АНТАЛ
+КАПОЧ ЈУДИТ
+КАПОР АГНЕШ
+КАПОР АЛЕКСАНДАР
+КАПОР ДЕСАНКА
+КАПОР ГОЈКО
+КАПОР КАТАРИНА
+КАПОР НАДА
+КАПОР НОВИЦА
+КАПОР СТАНА
+КАПОСТА ТЕРЕЗА
+КАПРИШ МИРЈАНА
+КАПУЋ ИЛОНА
+КАРЋАШ МИЛКА
+КАРАЧ МИРКО
+КАРАЧОЊИ ИШТВАН
+КАРАЋ ДРАГАН
+КАРАЋ ДУШАН
+КАРАЋ ДУШАН
+КАРАЋ ИЛИЈА
+КАРАЋ ЈЕЛИЦА
+КАРАЋ ЉУБОМИР
+КАРАЋ МАРИЈА
+КАРАЋ МИЛЕНКО
+КАРАЋ РАДЕНКО
+КАРАЋ РАЈКО
+КАРАЋ СЛОБОДАН
+КАРАЂЕНОВ ИВАН
+КАРАЂЕНОВ ИВАН
+КАРАЂЕНОВ МИРЈАНА
+КАРАЂИНОВИЋ ШПИРО
+КАРАЂИНОВИЋ НЕНАД
+КАРАЂИНОВИЋ ПЕТАР
+КАРАЂИНОВИЋ ВЕЛИМИР
+КАРАЂИНОВИЋ ЗОРА
+КАРАБА ИРЕНА ДР ЛЕКАР
+КАРАБА ЈОВАН
+КАРАБА ОЛГА
+КАРАБАШ МИЛИВОЈ
+КАРАБАШ СЛОБОДАН
+КАРАБАСИЛ ДРАГАН
+КАРАБАСИЛ ВИДОМИР
+КАРАБЕГОВИЋ ДАНИЛО
+КАРАЏИЋ ШУЈО
+КАРАЏИЋ ЖАРКО
+КАРАЏИЋ ЂОРЂЕ
+КАРАЏИЋ АРСЕНИЈЕ
+КАРАЏИЋ АВРАМ
+КАРАЏИЋ БОЖО
+КАРАЏИЋ БРАТИСЛАВ
+КАРАЏИЋ ЈОВАН
+КАРАЏИЋ ЈОВАН
+КАРАЏИЋ КСЕНИЈА
+КАРАЏИЋ МАРИЈА
+КАРАЏИЋ МИЛОРАД
+КАРАЏИЋ МИОДРАГ
+КАРАЏИЋ МИРОСЛАВ
+КАРАЏИЋ НЕНАД
+КАРАЏИЋ РЕЉА
+КАРАЏИЋ РУЖА
+КАРАЏИЋ СЛАВИЦА
+КАРАЏИЋ ТВРТКО
+КАРАЏИЋ ВЕРА
+КАРАЏИЋ ВУК
+КАРАЏИЋ ЗОРАН
+КАРАЏИЋ ЗОРАН
+КАРАДАРЕВИЋ МИЛАН
+КАРАДАРЕВИЋ МИЛОШ
+КАРАДЕГЛИЋ КОСА
+КАРАГА НИКОЛА
+КАРАГИЋ-ЛИПИНСКИ ИЛОНА
+КАРАИЦА ЗОРАН
+КАРАЈКОВ АЛОЈЗИЈЕ
+КАРАЈКОВ ВЛАДИМИР
+КАРАЈКОВ ВЛАДИМИР
+КАРАЈЛОВИЋ ЂУРО
+КАРАЈОВИЋ МИЛУТИН
+КАРАКАШ МИРЈАНА
+КАРАКАШЕВИЋ ДЕСАНКА
+КАРАКАШЕВИЋ ДРАГИЦА
+КАРАКАШЕВИЋ ЕВИЦА
+КАРАКАШЕВИЋ СТЕВАН
+КАРАКАШЕВИЋ ЗОРА
+КАРАМАРКОВИЋ МИЛА
+КАРАМАТИЋ АНТЕ
+КАРАН ЖЕЉКО
+КАРАН ДРАГАН
+КАРАН-КЕРН БАРБАРА
+КАРАН МИЛАН
+КАРАН МИЛЕНКО
+КАРАН МИЛИНКО
+КАРАН САВО
+КАРАН СРЂО
+КАРАЊАЦ ДРАГОСЛАВ
+КАРАЊАЦ ЉУБИЦА
+КАРАЊАЦ ВЕРОЉУБ
+КАРАНОВ ЖИВАН
+КАРАНОВ БУДИМКА
+КАРАНОВ ДРАГОЉУБ
+КАРАНОВ КУЗМАН
+КАРАНОВ МИЛАН
+КАРАНОВ МИЛОВАН
+КАРАНОВ МИРОСЛАВ
+КАРАНОВ СОФИЈА
+КАРАНОВИЋ ЂОРЂЕ
+КАРАНОВИЋ БОЖО
+КАРАНОВИЋ ДРАГАН
+КАРАНОВИЋ ДУШАН
+КАРАНОВИЋ ДУШАН
+КАРАНОВИЋ ЕМИЛИЈА
+КАРАНОВИЋ ГРЕТА
+КАРАНОВИЋ ИЛИЈА
+КАРАНОВИЋ ИЛИЈА
+КАРАНОВИЋ ИЛИЈА
+КАРАНОВИЋ ИВИЦА
+КАРАНОВИЋ ЈОВАН
+КАРАНОВИЋ КАТИЦА
+КАРАНОВИЋ ЉИЉАНА
+КАРАНОВИЋ ЉУБА
+КАРАНОВИЋ МИЛАН
+КАРАНОВИЋ МИЛАН
+КАРАНОВИЋ МИЛОМИР
+КАРАНОВИЋ МИЛУТИН
+КАРАНОВИЋ МИРЈАНА
+КАРАНОВИЋ МИРКО
+КАРАНОВИЋ НИКОЛА
+КАРАНОВИЋ ПЕРО
+КАРАНОВИЋ РАТКО
+КАРАНОВИЋ СЛАВКО
+КАРАНОВИЋ СЛОБОДАН
+КАРАНОВИЋ СТЕВАН
+КАРАНОВИЋ СТЕВО
+КАРАНОВИЋ СВЕТОЗАР
+КАРАНОВИЋ ТРИВО
+КАРАНОВИЋ ВЕСО
+КАРАНОВИЋ ВЛАДИМИР
+КАРАПАНЖА МАРИЈА
+КАРАПАНЏА ЉИЉАНА
+КАРАПАНЏА ВИТОМИР
+КАРАПАНЏИЋ ЂУРА
+КАРАПАНЏИЋ ГОРДАНА
+КАРАПАНЏИЋ МИРЈАНА
+КАРАПАНЏИН БАРБАРА
+КАРАПАНЏИН ЗОРКА
+КАРАС КАЗИМИР
+КАРАС МАГДА
+КАРАС ПЕТАР
+КАРАС ПЕТАР
+КАРАСАЛИХОВИЋ СМАИЛ
+КАРАСЕК КАРОЉ
+КАРАСИЈ БОРИС
+КАРАСИЈ ЈАСМИНА
+КАРАСИЈ ВЕРОНИКА
+КАРАТИ ЕУГЕН
+КАРАТУР ЈАДРАНКА
+КАРАВЛА КАТАРИНА
+КАРАВЛА ЗЛАТКО
+КАРАВЛА ЗОРИЦА
+КАРБАН РУДОЛФ
+КАРДАШ ОБРАД
+КАРДАШ ОЛГА
+КАРДАШЕВИЋ БРАНИСЛАВ
+КАРДАШЕВИЋ ФИЈА
+КАРДАШЕВИЋ ХУСНИЈА
+КАРДОШ АЛЕКСАНДАР
+КАРДОШ ЕРИКА
+КАРДОШ ИЛОНА
+КАРДОШ ЛАЈОШ
+КАРДОШ ПАЛ
+КАРДОШ ВЕРОНИКА
+КАРДОВ ЈОСИП
+КАРДУМ ЂОРЂЕ
+КАРГАЧИН ЈЕЛИСАВЕТА
+КАРИШИЋ ИВАНКА
+КАРИШИК ДАНЕ
+КАРИШИК ЈОВАНКА
+КАРИШИК МИЛУТИН
+КАРИЋ БОСИЉКА
+КАРИЋ ЈОВАНКА
+КАРИЋ РАДОСЛАВ
+КАРИЋ САВА
+КАРИЋ САВА
+КАРИЋ СВЕТИСЛАВ
+КАРИКО ЈОСИП
+КАРИКО МАРИЈА
+КАРИКО ТЕРЕЗА
+КАРИНА ДРАГИЦА
+КАРИУС МАРИЈА
+КАРИУС ВЕРА
+КАРЛАШ МИЛОРАД
+КАРЛАВАРИС ДРАГАН
+КАРЛАВАРИС ИВАН
+КАРЛАВАРИС НАДА
+КАРЛАВАРИС РАДИВОЈ
+КАРЛАВАРИС-ЗЕКОВИЋ МИРЕЛА
+КАРЛИЋ ЈЕФТА
+КАРЛИЋ ЛАЗАР
+КАРЛИЋ МИЛИВОЈ
+КАРЛО ВАЈДА
+КАРЛОВЧЕЦ МИРКО
+КАРЛОВИЋ ЂЕРЂ
+КАРЛОВИЋ МАРИЦА
+КАРОЛИЋ ЉУБИЦА
+КАРОЛИЋ МИРКО
+КАРОЛИЋ МИРОСЛАВ
+КАРОЉИ ЈАНОШ
+КАРОЉИ ЛАСЛО
+КАРОВИЋ ГЛИША
+КАРПАТИ ЛАСЛО
+КАРПОЊА ЈУЛИЈАНА
+КАРПОЊА СИНИША
+КАРТАГ НАНДОР
+КАРТАИ ЛАЈОШ
+КАРТАЛОВИЋ МИЛАН
+КАРТЈЕ ЈОВАН
+КАРВАК ЕМА
+КАРВАК ГЕЗА
+КАСА ЂЕРЂ
+КАСА АНДРИЈА
+КАСА АНТАЛ
+КАСА ФРАЊА
+КАСА ИДА
+КАСА ИМРЕ
+КАСА ЈЕЛЕНА
+КАСА МИХАЉ
+КАСА РУЖА
+КАСА РУЖА
+КАСА ЗОРКА
+КАСАШ АЛЕКСАНДАР МР
+КАСАШ АЛЕКСАНДАР
+КАСАШ ИМРЕ
+КАСАШ ИМРЕ
+КАСАШ ИМРЕ
+КАСАШ ЈАНОШ
+КАСАШ ЈОЖЕФ
+КАСАШ ЈОСИП
+КАСАШ КАРОЉ
+КАСАШ КАРОЉ
+КАСАШ КАРОЉ
+КАСАШ ОЛГА
+КАСАГИЋ БОРИСЛАВ
+КАСАЛИЦА ЖАРКО
+КАСАЛИЦА ЖИВКО
+КАСАЛИЦА МИЛАН
+КАСАЛИЦА СТЕВАНИЈА
+КАСАП ЕРВИН
+КАСАПОВ СТЕВАН
+КАСАПОВИЋ МАРА
+КАСАПОВИЋ МЕХО
+КАСАПОВИЋ ТИХОМИР
+КАСАПСКИ ЖАРКО
+КАСАПСКИ ЈЕЛКА
+КАСАР СЕЛИМ
+КАСИЋ ДАНИЦА
+КАСНЕР МИЈОЉКА
+КАСПЕР АЛЕКСАНДАР
+КАСПЕР ФЕРЕНЦ
+КАСПЕР ФРАЊА
+КАСПЕР ЛАДИСЛАВ
+КАСПЕР СТЕВАН
+КАСТЕЛИ ЂУРЂИНКА
+КАСТЕЛИ МАРКО
+КАСТОРИ РУДОЛФ
+КАСТРАТИ ФАДИЛ
+КАСТРАТОВИЋ АЛЕКСАНДАР
+КАСТРАТОВИЋ БОГДАН
+КАСТРАТОВИЋ МИХАИЛО
+КАСТРАТОВИЋ ВЛАДИМИР
+КАСТРАТОВИЋ ЗОРАН
+КАСТРАТОВИЋ ЗОРАН
+КАТАШИЋ ПЕТАР
+КАТАЛЕНИЋ ДУШАН
+КАТАЛИНЧЕВ ЖИВАН
+КАТАНА АНГЕЛИНА
+КАТАНА НИКОЛА
+КАТАНИЋ АНЂЕЛКА
+КАТАНИЋ ЈЕЦА
+КАТАНИЋ КСЕНИЈА
+КАТАНИЋ ЉУБИЦА
+КАТАНИЋ МАРА
+КАТАНИЋ РАДИВОЈ
+КАТАНИЋ РАДОМИР
+КАТАНИЋ САВА ДР
+КАТАНСКИ МИЛОШ
+КАТАНСКИ ПАВЛЕ
+КАТАРИНЧИЋ ЦЕЛЕСТИН
+КАТАРИВАС ЕЛА
+КАТАРИВАС-НИКОЛИЋ ГИЗЕЛА
+КАТАТИЋ ИЛОНА
+КАТАВА РУДОЛФ
+КАТАВИЋ ДАНИЛКА
+КАТАВИЋ МАРИЈА
+КАТАВИЋ РАДМИЛА
+КАТИЋ АДА
+КАТИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+КАТИЋ БОСИЉКА
+КАТИЋ ДАРА
+КАТИЋ ДОБРИЛА
+КАТИЋ ГОЈКО
+КАТИЋ ИЛИЈА
+КАТИЋ ИЛИЈА
+КАТИЋ ИВАН
+КАТИЋ ЈОВАН
+КАТИЋ ЈОВО
+КАТИЋ КОСТА
+КАТИЋ КРСТА
+КАТИЋ КСЕНИЈА
+КАТИЋ ЉИЉАНА
+КАТИЋ ЉУБИНКО
+КАТИЋ ЛУКА
+КАТИЋ МАРГАРЕТА
+КАТИЋ МАРИЈА
+КАТИЋ МИЛАН
+КАТИЋ МИЛАН
+КАТИЋ МИЛОРАД
+КАТИЋ МИЛОРАД
+КАТИЋ МИТА
+КАТИЋ НИКОЛА
+КАТИЋ НОВАК
+КАТИЋ ОТИЛИЈА
+КАТИЋ ПАВЛЕ ДР
+КАТИЋ РАДИВОЈ
+КАТИЋ РАТКО
+КАТИЋ САВО
+КАТИЋ СЛОБОДАН
+КАТИЋ СЛОБОДАН
+КАТИЋ СНЕЖАНА
+КАТИЋ СРЕТЕН
+КАТИЋ СТАНКО
+КАТИЋ СВЕТИСЛАВ
+КАТИЋ СВЕТЛАНА
+КАТИЋ ВЕСЕЛА
+КАТИЋ ВЕСНА
+КАТИЋ ВЛАДИМИР
+КАТИЋ ЗЛАТОМИР
+КАТИНЧИЋ ЖЕЛИМИР ДИПЛ ИНГ
+КАТНИЋ САВЕТА
+КАТОНА ИМРЕ
+КАТОНА ЈОЖЕФ
+КАТОНА ЛАЈОШ ДИПЛ ИНГ
+КАТОНА ЛАСЛО
+КАТОНА ВИНЦЕ
+КАУРИЋ НИКОЛА
+КАУРИН ЈУРЕ
+КАУРИН КРСТО
+КАУРИН ЛАЗАР
+КАУРИН МОМЧИЛО
+КАУРИН НЕДЕЉКО
+КАУРИН ВАСО
+КАУРИНОВИЋ БОЖИДАР
+КАУРИНОВИЋ СИМО ДИПЛ ИНГ
+КАУТЕН ЈОХАН
+КАВЧИЋ СТЕВАН
+КАВАЈА ЛУКА
+КАВАЈА НИКО
+КАВАЛИЋ БОРИСЛАВ
+КАВЕЧАН ИВАН ДР
+КАВЕЧАН НИКОЛА
+КАВГИЋ МИОДРАГ
+КАВГИЋ НИКОЛА
+КАВГИЋ ПЕТАР
+КАВГИЋ ПЕТАР
+КАВГИЋ СТЕВАН
+КАВРАЈА СТЕВАН
+КАВРАЈА СВЕТОЗАР
+КАВРАН ЖЕЉКО
+КАЗАФЕРОВИЋ РЕШАД
+КАЗАНЦЕВ ЈОСИПА
+КАЗИ ЕРНЕ
+КАЗИ ЈОЖЕФ
+КАЗИЈА СМИЉКА
+КАЗИМИЋ СТЕВАН
+КАЗИМИРОВИЋ АНА
+КАЗИМИРОВИЋ ЉУБИСАВ
+КАЗИМИРОВИЋ МИРЈАНА
+КАЗИМИРОВИЋ НЕСТОР
+КЕЧА БОЈАНА
+КЕЧА ДУШАНКА
+КЕЧА ИЛИЈА
+КЕЧА МИКАН
+КЕЧА МИЛАН
+КЕЧА МИЛАН
+КЕЧА МИЛАН
+КЕЧА МИЛЕНКО
+КЕЧА МИЛЕВА
+КЕЧА ПЕРО
+КЕЧА РАНКО
+КЕЧА СЛОБОДАН
+КЕЧА ВОЈИН
+КЕЧИЋ ЖИВАН
+КЕЧИЋ МИЛАН АКАДЕМСКИ СЛИКАР
+КЕЧКЕШ ЂЕРЂ
+КЕЧКЕШ ФЕРЕНЦ
+КЕЧКЕШ ЈОСИП
+КЕЧКЕМЕТИ ИШТВАН
+КЕЧКИ РУЖИЦА
+КЕШАНСКИ ИВКА
+КЕШАНСКИ КАТИЦА
+КЕШАНСКИ РАДЕНКО
+КЕШАНСКИ РАДИВОЈ
+КЕШАНСКИ РУЖИЦА
+КЕШАНСКИ СИМО
+КЕШАНСКИ СТАНИСЛАВ
+КЕШЕЉ ЧЕДОМИР
+КЕШЕЉ ЕВА
+КЕШЕЉ ГОЈКО
+КЕШЕЉ ЈОВАН
+КЕШЕЉ РАДМИЛА
+КЕШЕЉ СЛОБОДАН
+КЕШЕЉ УГЉЕША
+КЕШЕЉ ВУКАШИН
+КЕШКИЋ ЗВОНИМИР
+КЕШМАРКИ-КРЕСТА ЈЕЛЕНА
+КЕЖИЋ БИЉАНА
+КЕЖИЋ ДУШАН
+КЕЖИЋ КАТИЦА
+КЕЖИЋ МАРЈАН
+КЕЖИЋ МИЛАН
+КЕЖИЋ НЕВЕНКА
+КЕЖИЋ ВЛАДО
+КЕБИН ЖАРКО
+КЕЦЕЛИ МИХАЉ
+КЕЦИЋ ДАНИЛО ДР
+КЕЦИЋ МИРОСЛАВ
+КЕЦИЋ СЛОБОДАН
+КЕЦМАН ЧЕДА
+КЕЦМАН ЖАРКО
+КЕЦМАН ЂУРО
+КЕЦМАН ЂУРО
+КЕЦМАН БОРИСЛАВ
+КЕЦМАН БРАНКО
+КЕЦМАН ДРАГИЦА
+КЕЦМАН ДУШАН
+КЕЦМАН ИЛИЈА
+КЕЦМАН ЈОВАН
+КЕЦМАН ЈОВАН
+КЕЦМАН ЈУЛКА
+КЕЦМАН ЉУБА
+КЕЦМАН МАРА
+КЕЦМАН МАРКО
+КЕЦМАН МИЛАДИН
+КЕЦМАН МИЛАН
+КЕЦМАН МИЛАН
+КЕЦМАН МИЛКА
+КЕЦМАН МИЛУТИН
+КЕЦМАН МИРЈАНА
+КЕЦМАН МИРОСЛАВА
+КЕЦМАН МЛАДЕН
+КЕЦМАН СТЕВАН
+КЕЦМАН СВЕТКО
+КЕЦО ЧЕДОМИР
+КЕЦО ГОЈКО
+КЕЦО ЈЕЛЕНА
+КЕЦО ЉУБОМИР
+КЕЦО МАРИЈА
+КЕЦО МАРИЈА
+КЕЦО МИРЈАНА
+КЕЦО МИТАР
+КЕЦО МОМИР
+КЕЦО РАДОЈЕ
+КЕЦО РАТКО
+КЕЦО СЛОБОДАН
+КЕЦО СЛОБОДАН
+КЕЏА МИЛОРАД
+КЕДИЋ ДУШАН
+КЕДИЋ СТАНКО
+КЕДВЕШ ЕВА
+КЕФЕР ЈАНОШ
+КЕФЕР ЈОСИП
+КЕГЛОВИЋ ВИНКО
+КЕК ЕРЖЕБЕТ
+КЕК ЕВА
+КЕКЕЉЕВИЋ МИОДРАГ
+КЕКЕЊ ГИЗЕЛА
+КЕКЕЗ ДРАГИЊА
+КЕКИЋ ЂОРЂЕ
+КЕКИЋ ЂУРА
+КЕКИЋ АГИЦА
+КЕКИЋ ДАНИЦА
+КЕКИЋ ДРАГАН
+КЕКИЋ ДУШАН
+КЕКИЋ ГОРДАНА
+КЕКИЋ КОСОВКА
+КЕКИЋ МИЛАН
+КЕКИЋ МИЛИЦА
+КЕКИЋ МИРКО
+КЕКИЋ НАТАЛИЈА
+КЕКИЋ ПЕТАР
+КЕКИЋ СЛАВИЦА
+КЕКИЋ ТЕОДОР
+КЕКИН МАРИЈА
+КЕКОВИЋ ДРАГОЉУБ
+КЕКОВИЋ МЕЛАНИЈА
+КЕКОВИЋ МИОДРАГ
+КЕЛБЛИ МИХАЈЛО
+КЕЛЕ ЈОЖЕФ
+КЕЛЕ ЈОЖЕФ
+КЕЛЕЧ МИЛОРАД
+КЕЛЕЧ МИРКО
+КЕЛЕЧЕВИЋ ДАНИЦА
+КЕЛЕЧЕВИЋ НИКИЦА
+КЕЛЕЧИЋ ИВАН
+КЕЛЕЧИЋ ЈОСИП
+КЕЛЕМЕН АЛЕКСАНДАР ДИПЛ ИНГ
+КЕЛЕМЕН АЛЕКСАНДАР
+КЕЛЕМЕН АНА
+КЕЛЕМЕН ГАБОР
+КЕЛЕМЕН ИМРЕ
+КЕЛЕМЕН ЈОЖЕФ
+КЕЛЕМЕН ЈОЖЕФ
+КЕЛЕМЕН ЛАЈОШ
+КЕЛЕМЕН МАЋАШ
+КЕЛЕМЕН МАРИЈА
+КЕЛЕМЕН ТИБОР
+КЕЛЕР ЈАНОШ
+КЕЛЕР ЈАНОШ
+КЕЛЕР ПЕТАР
+КЕЛЕР РАДМИЛА
+КЕЛЕР СТЕВАН
+КЕЛЕУВА ДРАГО
+КЕЛЕУВА МИХАЈЛО
+КЕЛИЋ СТЕВАНКА
+КЕЛИЈАШЕВИЋ ЖИВКО
+КЕЛНЕР МАРИЈА
+КЕЛОВИЋ МИЛОМИР
+КЕМЕЦ АНДРИЈА
+КЕМЕЦ МИЈО ДИПЛ ИНГ
+КЕМЕНЦИ БЕЛА
+КЕМЕЊ МИРА
+КЕМЕЊ ТЕРЕЗИЈА ДИПЛ ИНГ
+КЕМИВЕШ ГЕОРГ
+КЕНЂЕЛ СТЕВИЦА
+КЕНЦЕЛ СМИЉА
+КЕНЕШКИ ДРАГАН
+КЕНИГ ХЕНДРИХ
+КЕНИГ ЈЕКА
+КЕНИГ ЈЕЛЕНА
+КЕЊАЛО СТОЈАН
+КЕПЧИЈА ИЛИЈА
+КЕПЧИЈА МИЛЕ
+КЕПЧИЈА ТОДОР
+КЕПЕ-ДРАГОСАВЉЕВИЋ ЛИВИЈА
+КЕПЕ ЈУЛИЈАНА
+КЕПИЋ ЖИВАН
+КЕРЧЕВ КАРЛО
+КЕРЧУ МИРЈАНА
+КЕРЧУ СТАНИСЛАВ
+КЕРШНЕР АЛЕКСАНДАР
+КЕРАЦ ЖАРКО
+КЕРАЦ ЖАРКО
+КЕРАЦ ЂУРА
+КЕРАЦ БРАНИСЛАВ
+КЕРАЦ ДАНИЦА
+КЕРАЦ ДУШАН
+КЕРАЦ ЕРЖЕБЕТ
+КЕРАЦ ГАВРА
+КЕРАЦ ЈОВАН
+КЕРАЦ ЈОВАН
+КЕРАЦ ЛАЗАР
+КЕРАЦ ЛАЗАР
+КЕРАЦ ЛЕПОСАВА
+КЕРАЦ МИЛИВОЈ
+КЕРАЦ МИЛОШ
+КЕРАЦ МИТА
+КЕРАЦ ПАВЛЕ
+КЕРАЦ ПАВЛЕ
+КЕРАЦ ПЕРА
+КЕРАЦ СИМА
+КЕРАЦ СОЊА
+КЕРАЦ СПАСА
+КЕРАЦ СТАНА
+КЕРАЦ СТАНИСЛАВА
+КЕРАЦ СТЕВАН
+КЕРАЦ СТЕВАН
+КЕРАЦ ТОДОР
+КЕРАЦ ЗЛАТКО
+КЕРАНОВИЋ МИЛАН
+КЕРАНОВИЋ СТАНА
+КЕРАВЧИН МИТА
+КЕРАВЧИН СВЕТОЗАР
+КЕРАВИЦА ДАВИД
+КЕРАВИЦА ЈОВАН
+КЕРАВИЦА ЉУБОМИР
+КЕРАВИЦА МИЛИВОЈ
+КЕРАВИЦА МИЛОШ
+КЕРАВИЦА МИЛОШ
+КЕРАВИЦА МИОДРАГ
+КЕРАВИЦА МИОДРАГ
+КЕРАВИЦА ПЕТАР
+КЕРАВИЦА СТЕВАН
+КЕРАВИЦА СВЕТИСЛАВ
+КЕРЕЧКИ БРАНКО
+КЕРЕЧКИ ДРАГОМИР
+КЕРЕШЕВИЋ АЛЕКСАНДРА
+КЕРЕШЕВИЋ ИЛОНА
+КЕРЕШЕВИЋ СТОЈАНКА
+КЕРЕШИ ЈУЛИЈАНА
+КЕРЕШИ ВИНЦЕ
+КЕРЕЖИ ФЕРЕНЦ
+КЕРЕЦ ИВАН
+КЕРЕЏИН МИЛАН
+КЕРЕЏИН МИРЈАНА
+КЕРЕЏИН СОФИЈА
+КЕРЕКЕШ ИШТВАН ДИПЛ ИНГ
+КЕРЕКЕШ-МАЛОНКА ЕТЕЛКА
+КЕРЕНЕЦ ЉИЉАНА
+КЕРЕЊИ АЛЕКСАНДАР
+КЕРЕСТЕШ ЈЕНЕ
+КЕРЕСТЕШ ЉУБИЦА
+КЕРЕСТЕШ МАРГИТА
+КЕРЕЗОВИЋ МИХАЈЛО
+КЕРЕЗОВИЋ НЕЂО
+КЕРИ ДЕНЕШ
+КЕРИ ФРАЊО
+КЕРИ ЈОВАН
+КЕРИЋ САВА
+КЕРКЕЗ ДРАГО
+КЕРКЕЗ ДУШАНКА
+КЕРКЕЗ ДУШАН
+КЕРКЕЗ ДУШАН
+КЕРКЕЗ ГОЈКО
+КЕРКЕЗ ИЛИЈА
+КЕРКЕЗ ЛАЗАР
+КЕРКЕЗ МИЛАН
+КЕРКЕЗ МИЛЕНКО
+КЕРКЕЗ МИЛИЦА
+КЕРКЕЗ МИРЈАНА
+КЕРКЕЗ МИРОСЛАВ
+КЕРКЕЗ МЛАДЕН
+КЕРКЕЗ НИКОЛА
+КЕРКЕЗ ПАУЛИНА
+КЕРКЕЗ ПЕТАР
+КЕРКЕЗ СЛОБОДАН
+КЕРКЕЗ СРЕТЕН
+КЕРКЕЗ СТЕВАН
+КЕРКЕЗ СТЕВАН
+КЕРКЕЗ ВЛАДА
+КЕРКЕЗ ВОЈИН
+КЕРЛЕТА НЕЂО
+КЕРМЕЦ ИЛОНКА
+КЕРМЕЦИ ТИБОР
+КЕРМЕНДИ ПЕТАР
+КЕРН ДАНИЕЛ
+КЕРПЕЛ СОФИЈА
+КЕРСНИК ЈОЖЕ
+КЕРСНИК МИША
+КЕРСТИНГ КАТАРИНА
+КЕРТЕС ЕРЖЕБЕТ
+КЕРТЕС ЈАНОШ
+КЕРТЕС ЈАНОШ
+КЕРТЕС ВИЛМОШ
+КЕРВИНА АНТОН
+КЕРВИНА АРИЈАНА
+КЕСЕГ ЛАЈОШ
+КЕСЕГ ЛАЈОШ
+КЕСЕГИ ГЕЗА
+КЕСЕГИ КАРОЉ
+КЕСЕГИ ВОЈИСЛАВ
+КЕСЕР ДРАГИША
+КЕСЕРОВИЋ КАТАРИНА
+КЕСИЋ ЖИВКО
+КЕСИЋ ЂУРА
+КЕСИЋ БОШКО
+КЕСИЋ БОРИСЛАВ
+КЕСИЋ ГОРАН
+КЕСИЋ ЈОВАН
+КЕСИЋ МАРИНКО
+КЕСИЋ МИЛЕ
+КЕСИЋ МИЛИЦА
+КЕСИЋ МИЛКА
+КЕСИЋ НЕВЕНКА
+КЕСИЋ СЛОБОДАН
+КЕСИЋ СТАНОЈЕ ДИПЛ ПРАВНИК
+КЕСЛЕР АНДРИЈА ДР ЛЕКАР
+КЕСЛЕР РОБЕРТ
+КЕТЕЛЕШ РОЖИКА
+КЕТИГ ТОМИСЛАВ
+КЕТИГ ТОМИСЛАВ
+КЕВИЋ МИЛА
+КЕВИЋ ОЛГА
+КЕВИЋ РАДЕ
+КЕВИЉ БРАНКО
+КЕВРЕШАН ЕМИЛ
+КЕЗЕШИ ДУШКО
+КЕЗИЋ ДУШАНКА
+КЕЗИЋ МИРКО
+КЕЗИЈА МИЛОРАД
+КЕЗМИЋ БИЉАНА
+КЕЗУНОВИЋ МИЛОВАН
+КЕЗУНОВИЋ ПЕТКО
+КЕЗУНОВИЋ РАЈКО
+КИЧИ ЕРНЕ
+КИЧИН ЕВА
+КИЧИНА ЛАЗАР
+КИЧИЊ ЕЛИЗАБЕТА
+КИШ-ЧЕПЕГИ ГАБОР
+КИШ-ЧЕПЕГИ ГАБОР
+КИШ-ЧЕПЕГИ РУДОЛФ
+КИШ-ЧЕПЕГИ ТЕРЕЗА
+КИШ ШАНДОР
+КИШ ШАНДОР
+КИШ ЂЕРЂ
+КИШ ЂЕРЂ
+КИШ АЛЕКСАНДАР
+КИШ АНА
+КИШ АНДРИЈА
+КИШ БЕЛА
+КИШ БЕЛА
+КИШ БОЛДИЖАР
+КИШ БРАНКО
+КИШ ДУШАНКА
+КИШ ДУШИЦА
+КИШ ЕРНЕСТ
+КИШ ЕРНЕ
+КИШ ЕСТЕР
+КИШ ЕВА
+КИШ ФЕРЕНЦ
+КИШ ФЕРЕНЦ
+КИШ ФЕРЕНЦ
+КИШ ФРАЊО
+КИШ ГЕЗА
+КИШ ГЕЗА
+КИШ ГИЗЕЛА
+КИШ ХЕЛЕНА
+КИШ ХЕНРИЈЕТА
+КИШ ИШТВАН
+КИШ ИШТВАН
+КИШ ИШТВАН
+КИШ ИЛОНА
+КИШ ИЛОНКА
+КИШ ИРЕНА
+КИШ ИСИДОР
+КИШ ИВАН
+КИШ ИВАН
+КИШ ЈАНКО
+КИШ ЈАНОШ
+КИШ ЈОЖЕФ
+КИШ ЈОЦА
+КИШ ЈОСИП
+КИШ ЈОСИП
+КИШ-ЈОВАК ФРАЊА
+КИШ ЈОЗЕФИНА
+КИШ ЈУЛИЈАН
+КИШ КАЛМАН
+КИШ КАТАЛИН
+КИШ КАТИЦА
+КИШ КАТИЦА
+КИШ ЛАЦИКА
+КИШ ЛАСЛО
+КИШ ЛАСЛО
+КИШ МАРГИТА
+КИШ МАРИЈА
+КИШ МАРИЈА
+КИШ МИХАЉ
+КИШ МИЈА
+КИШ МИЛАН
+КИШ МИЛИЦА
+КИШ МИРКО
+КИШ НАНДОР
+КИШ НИКОЛА
+КИШ НИКОЛА
+КИШ ОТО
+КИШ ОТО
+КИШ ПАВЛЕ
+КИШ ПЕРА
+КИШ ПЕТАР
+КИШ ПЕТАР
+КИШ ПЕТАР
+КИШ РОЗАЛИЈА
+КИШ СЛАВИЦА
+КИШ СЛАВИЦА
+КИШ СЛОБОДАН
+КИШ СТАНИСЛАВ
+КИШ СТЕВАН
+КИШ СТЕВАН
+КИШ СТЕВАН
+КИШ СТЕВАН
+КИШ СТЈЕПАН
+КИШ ТИБОР ДР
+КИШ ТИБОР
+КИШ ТИБОР
+КИШ ТОДОР
+КИШ ВЕСНА
+КИШ ВИКТОРИЈА
+КИШ ВЛАДИМИР
+КИШ ВЛАДИМИР
+КИШ ВЛАДИМИР
+КИШ ВЛАДИМИР
+КИШ ВУКОСАВА
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШ ЗОЛТАН
+КИШДОБРАНСКИ МИЛИВОЈ
+КИШЕГЕЦИ ЈАН ДР
+КИШГЕЦИ-ДУДАШ КЛАРА
+КИШГЕЦИ ЕМИЛ
+КИШГЕЦИ ИВАН
+КИШГЕЦИ ПАВЛЕ
+КИШГЕЦИ СТАНИСЛАВ
+КИШГЕЦИ СТАНИСЛАВ
+КИШГЕЦИ СТЕВАН
+КИШГЕЦИ ВЛАДИМИР
+КИШЈУХАС ЈАКОВ
+КИШМИШКА ПАЛ
+КИШПРДИЛОВ ДЕЈАН
+КИШПРДИЛОВ ЗОРАН
+КИЋАНОВИЋ БОРО
+КИЋАНОВИЋ ДАРИНКА
+КИЋАНОВИЋ ЈОКА
+КИЋАНОВИЋ МИРОСЛАВ
+КИЋАНОВИЋ МИТАР
+КИЋАНОВИЋ ПЕТАР
+КИЋАНОВИЋ РАДМИЛА
+КИЋАНОВИЋ РАЈКО
+КИЋАНОВИЋ ЗОРАН
+КИЖДОБРАНСКИ ЖАРКО
+КИЖДОБРАНСКИ ЉУБИЦА
+КИЖДОБРАНСКИ МИЛАН
+КИЖДОБРАНСКИ МИЛАН
+КИЖДОБРАНСКИ МИЛИВОЈ
+КИЖДОБРАНСКИ САВА
+КИЖЕВСКИ ДИМКО
+КИЖЕВСКИ МИРА
+КИЖЕВСКИ ВОЈИСЛАВ
+КИЦОШЕВ БРАНКО
+КИЦОШЕВ ЉИЉАНА
+КИЦОШЕВ МИТА
+КИЦОШЕВ САША
+КИЦОШЕВ СТОЈАН
+КИЦОШЕВИЋ ТРИВА
+КИЦОШЕВИЋ ВЛАЈКО
+КИЈАЧКИ БРАНИСЛАВ
+КИЈАНОВИЋ МАНОЈЛЕ
+КИЈАНОВИЋ СТАНКО
+КИКАНОВИЋ ДИМИТРИЈЕ
+КИКАНОВИЋ ДОБРИЛА
+КИКАНОВИЋ МИЛЕНИЈА
+КИКИЋ-ШОВЉАНСКИ ЉИЉАНА
+КИКИЋ МИРКО
+КИКИЋ СМИЉА ДР
+КИКИНЂАНИН МИРОСЛАВА
+КИКИНДАИ ВЕРА
+КИКОШ ГОРДАН
+КИКОШ ЈОВАН
+КИКОШ ЛАЗАР
+КИКОШ СРБИСЛАВ
+КИКОВИЋ СЛАВИЦА
+КИЛИЋ НИКОЛА
+КИЛИБАРДА МИЛОРАД
+КИЛИБАРДА МИТАР
+КИЛИБАРДА ПАВЛЕ
+КИЛИБАРДА ВЛАДИМИР
+КИЛИБАРДА ВОЈИСЛАВ
+КИМПАНОВ БРАНИСЛАВ
+КИМПАНОВ НАТАЛИЈА
+КИМПАНОВ СЛОБОДАН
+КИМПАНОВ СЛОБОДАН
+КИМПАНОВ СОФИЈА
+КИНЧЕШ МИХАЉ
+КИНЂИН СВЕТОЗАР
+КИНЂИН ВАСА
+КИНДЕРНАЈ ИЛИЈА
+КИНДЕРНАЈ МИЛАН
+КИНДЕРНАЈ ОТО
+КИНДЕРНОЈ ПАВЛЕ
+КИНИК ЈАН
+КИНИК ПАВЛЕ
+КИЊЕРАН СВЕТИСЛАВ
+КИНКА РИТА
+КИПЕРОВИЋ ЈОВО
+КИПИЋ ЂУЛА
+КИПИЋ АНДРИЈА
+КИПИЋ АНКА
+КИПИЋ ЕДИТА
+КИПИЋ ЕРЖЕБЕТ
+КИПИЋ ЕРНЕ
+КИПИЋ ФЕРЕНЦ
+КИПИЋ ФРАЊА
+КИПИЋ ИШТВАН
+КИПИЋ ЈОСИП
+КИПИЋ ЛАСЛО
+КИПИЋ НАНДОР
+КИРЧАН ЕМИЛ
+КИРШ ЈОЖЕФ
+КИРШ МИЛОРАД
+КИРШЕК ЈУРАЈ
+КИРЋАН САВА
+КИРЋАНСКИ БРАНКО
+КИРЋАНСКИ ДУШКО
+КИРЋАНСКИ ИВАН
+КИРЋАНСКИ МИЛИЦА
+КИРЋАНСКИ ОБРАД
+КИРЋАНСКИ РАДИВОЈ
+КИРЋАНСКИ РАДОСЛАВА
+КИРДА ВЛАДИМИР
+КИРИЋ ФРАЊО
+КИРИЋ МЕНКА
+КИРИЋ СЛОБОДАН
+КИРИЋ СТАНИСЛАВ
+КИРИЏИЋ ДРАГИША
+КИРИЏИЋ МИЛОШ
+КИРИЏИЋ ОБРАД
+КИРИЛОВ АЛЕКСАНДАР
+КИРИЛОВИЋ АЛЕКСАНДАР
+КИРИЛОВИЋ ДОБРИНКА
+КИРИЛОВИЋ ЈЕЛЕНА
+КИРИЛОВИЋ КРИСТА
+КИРИЛОВИЋ КРИСТИНА
+КИРИЛОВИЋ ОЛГА
+КИРИН ЖЕЉКО
+КИРИН ИВИЦА
+КИРИН СНЕЖАНА
+КИРЈАКОВИЋ ЈОВАН
+КИРЈАКОВИЋ НИКОЛА
+КИРКОВ ДИМИТАР
+КИРКОВ ВЕРИЦА
+КИРН ВЛАДИМИР
+КИРОВАКОВ ВАЛЕРИЈА
+КИРТИЋ ДУШАН
+КИСАЧАНИН ДЕСАНКА
+КИСАЧАНИН ДУШАН
+КИСАЧАНИН МИОДРАГ ДИПЛ ИНГ
+КИСАЧАНИН МИРОСЛАВ
+КИСАЧАНИН ПАВЛЕ
+КИСАЧАНИН СВЕТОЗАР
+КИСЕЛИЧКИ ЖИВКО СУДИЈА
+КИСЕЛИЧКИ ДАНИЦА
+КИСЕЛИЧКИ ФЕДОР ДР
+КИСЕЛИЧКИ ЛАЗАР ДИПЛ ИНГ
+КИСЕЛИЦА ЖАРКО
+КИСЕЛИЦА НАДА
+КИСЕЛИЦА ПЕТАР
+КИСЕЛИЦА ПЕТАР
+КИСИЋ ДУШАН
+КИСИЋ ЈОВАН
+КИСИЋ МИРКО
+КИСИЋ СРЂАН
+КИСИЋ СВЕТОЗАР
+КИСИН АНЂА
+КИСИН МИЛИЦА
+КИСИН МИЛКА
+КИСИН ТОМО
+КИСЛИЦ ИРЕНА
+КИСЛОВСКИ ВЛАДИМИР
+КИСО МИЛОРАД
+КИСТЕР ВИНКО
+КИТ ВАСИЉ
+КИТАНОВИЋ ЖИВКО
+КИТАНОВИЋ БРАНИСЛАВА
+КИТАНОВИЋ КАТИЦА
+КИТАНОВИЋ ЛЕНКА
+КИТАНОВИЋ МИРЈАНА
+КИТАНОВИЋ НЕДЕЉКО
+КИТАНОВИЋ ТОМА
+КИТАНОВСКИ ДИМЧЕ
+КИТИЋ РАДОЈКА
+КИТИЋ САВО
+КИТИЋ СТОЈКО
+КИТИЋ ВЕЛИМИР
+КИУРСКИ СТЕВАН ДИПЛ ОЕЦ
+КИВОВИЋ АНТОНИЈА
+КИЗА БРАНКИЦА
+КИЗИЋ ДУШАН
+КИЗИЋ ЛИДИЈА
+КИЗИЋ МАРКО
+КИЗИЋ МИХАИЛО
+КИЗИЋ САВКА
+КИЗИЋ СЛОБОДАН
+КИЗИЋ СЛОБОДАН
+КИЗИЋ СНЕЖАНА
+КИЗИЋ ТИХОСЛАВ
+КИЗУР АНДРАШ
+КИЗУР ИШТВАН
+КИЗУР ЈАНОШ
+КИЗУР ЛАСЛО
+КИЗУР ПАВЕЛ
+КИЗУР ВЕРА
+КЛАЧАР МИЛКО
+КЛАЧАР МИЛОШ
+КЛАШЊА ЖАРКО
+КЛАШЊА БРАНКО
+КЛАШЊА ЈОВАН
+КЛАШЊА МАРИЈА
+КЛАШЊА МИКА
+КЛАШЊА МИЛЕНА
+КЛАШЊА МИЛЕ
+КЛАШЊА МИЛИЦА
+КЛАШЊА МИРОСЛАВ
+КЛАШЊА ВЛАДИСЛАВ ДР ЛЕКАР
+КЛАЋ ДРАГАН
+КЛАЋИК ЈОЖЕФ
+КЛАЋИК МАРИЈА
+КЛАДУШИЋ МЕНСУРА
+КЛАИЋ АНТО
+КЛАИЋ ПАВО
+КЛАЈ ПЕТАР
+КЛАЈИЋ ЂУРА
+КЛАЈИЋ ДАНИЛО
+КЛАЈИЋ ЉУБИЦА
+КЛАЈИЋ МАГДАЛЕНА
+КЛАЈИЋ ОЛГА
+КЛАЈИЋ РОЗАЛИЈА
+КЛАЈИЋ ВАЛЕРИЈА
+КЛАЈИЋ ВИДА
+КЛАЈН АЛБЕРТ
+КЛАЈН АНА
+КЛАЈН ДРАГУТИН
+КЛАЈН ИВАНКА
+КЛАЈН ИВАН
+КЛАЈН ЛАЈЧО ДР
+КЛАЈН МИРОСЛАВ
+КЛАЈН ВЕРА
+КЛАЈНЕР ЕСТЕР
+КЛАЈНЕР ИШТВАН
+КЛАМАР КАРЛО
+КЛАМИК ИМРЕ
+КЛАПАРЕВИЋ ГОРАН
+КЛАПАРЕВИЋ САВА
+КЛАПАРЕВИЋ ВАСИЛИЈЕ
+КЛАРИЋ ДУШАНКА
+КЛАРИЋ ГОРАН
+КЛАРИЋ ЉУБИЦА
+КЛАРИЋ МИЛИЋ
+КЛАРИЋ МИЛОРАД
+КЛАРИЋ ОЛГА
+КЛАРИЋ СЕКА
+КЛАСАН АНА
+КЛАСЕР АЛБЕРТ
+КЛАСИЋ ЛАДИСЛАВ
+КЛАСИЋ САША
+КЛАУС ЕРЖЕБЕТ
+КЛАУС ЕРЖЕБЕТ
+КЛАУС ЛАСЛО
+КЛЕБЕЧКО ШАНДОР
+КЛЕБЕЧКО ШАНДОР
+КЛЕМ АДАМ ДР
+КЛЕМ ЈОЖЕФ
+КЛЕМ ТЕРЕЗА
+КЛЕМЕНОВИЋ УРОШ
+КЛЕНОЦКИ МАРИЈА
+КЛЕНОВШЕК ФРАЊА
+КЛЕНОВШЕК ТЕРЕЗИЈА
+КЛЕНОВШЕК ЗВОНИМИР
+КЛЕПИЋ ЂУРАЂ
+КЛЕПИЋ НИКОЛА
+КЛЕТ ГЕЗА
+КЛЕУТ МИЛАН
+КЛЕУТ РУЖА ДР ЛЕКАР
+КЛЕВЕРНИЋ БОРИСЛАВ
+КЛИЧЕК ИРЕНА
+КЛИЧКОВИЋ ДАНИЦА
+КЛИЧКОВИЋ КОСТА
+КЛИЧКОВИЋ ВЕРА
+КЛИШАНИЋ ЈОСИП
+КЛИШАНИЋ СТАНИСЛАВ
+КЛИЦОВ ИЛИЈА
+КЛИКОВАЦ МИХАЈЛО
+КЛИКОВАЦ ВЕЛИМИР
+КЛИМЕШ ДРАГАНА
+КЛИМЕШ ЗОРА
+КЛИНАЦ УРОШ
+КЛИНАР ИВАН
+КЛИНЦОВ НАДА
+КЛИНЏИЋ СТЈЕПАН
+КЛИНГЕР КАТИЦА
+КЛИНКО ЈАН
+КЛИНОЦКИ ЂЕРЂ
+КЛИНОВСКИ БРАНКО
+КЛИНОВСКИ ДРАГАН
+КЛИНОВСКИ ДРАГАН
+КЛИНОВСКИ ДУШАН
+КЛИПА ЖИВАН
+КЛИПА ЂОРЂЕ
+КЛИПА ЈЕЛИЦА
+КЛИПА-КРАБЕС ГРЕТА
+КЛИПА ЛАЗАР
+КЛИПА МИКА
+КЛИР ИЛОНА
+КЛИР РОЗАЛИЈА
+КЛИСАРА ЖИВКО
+КЛИСАРА ЂОРЂЕ
+КЛИСАРИЋ МИРКО
+КЛИСИЋ НАДА
+КЛИСКА АНЂЕЛИЈА
+КЛИСКА ВОЈО
+КЛИСУРА МИЛОШ
+КЛИСУРА МОМИР
+КЛИСУРА СТАКА
+КЛИСУРИЋ ЂУРО
+КЛИВИЊИ ЈОЖЕФ
+КЉАИЋ ЛЕПОСАВА
+КЉАИЋ МАЦА
+КЉАИЋ СИМО
+КЉАИН ДРАГИЊА
+КЉАИН ЛАЗАР
+КЉАЈИЋ ЂОРЂЕ ПРОФЕСОР
+КЉАЈИЋ ЂОРЂЕ
+КЉАЈИЋ ЂОРЂЕ
+КЉАЈИЋ БОРИВОЈЕ
+КЉАЈИЋ БОРКА
+КЉАЈИЋ БРАНКО
+КЉАЈИЋ БРАНКО
+КЉАЈИЋ ДАНИЛО
+КЉАЈИЋ ДРАГАН
+КЉАЈИЋ ДРАГАН
+КЉАЈИЋ ДУШАНКА
+КЉАЈИЋ ИЛИЈА
+КЉАЈИЋ ИЛИЈА
+КЉАЈИЋ ИВАН
+КЉАЈИЋ ЈЕЛЕНА
+КЉАЈИЋ КОВИЉКА
+КЉАЈИЋ ЛУКА
+КЉАЈИЋ МАРА
+КЉАЈИЋ МИЛАН
+КЉАЈИЋ МИЛЕВА
+КЉАЈИЋ МИОДРАГ
+КЉАЈИЋ НАДА
+КЉАЈИЋ ОЛИВЕРА
+КЉАЈИЋ ПЕТАР
+КЉАЈИЋ-РАДАКОВИЋ МИЛИЦА
+КЉАЈИЋ СЕНКА
+КЉАЈИЋ ВАТА
+КЉАЈИЋ ВЛАДО
+КЉАЈИЋ ВУКИЦА
+КЉАЈИЋ ЗДРАВКО
+КЉАКИЋ ВУКАШИН
+КЉЕЧАНИН МИРЈАНА
+КЉУЧОВСКИ МАХАЉИНА
+КЉУЧОВСКИ НИКОЛА
+КЉУТИЋ ЈАСМИНА
+КЉУТИЋ ОСТОЈА
+КЛОБУШИЦКИ ВЛАДИСЛАВ
+КЛОПФЕР ЂОРЂЕ
+КЛОПКА КЛАРА ДР
+КЛОПКА ПИРОШКА
+КМЕЧ МАРТИН
+КМЕЧКО СТЕВАН
+КМЕЋ ЈАН ДР
+КМЕЗИЋ ИВАНКА
+КМЕЗИЋ МИЛЕ
+КМЕЗИЋ ВЛАДА
+КМИЦИКЕВИЋ ЗОРАН
+КМИЦИКОВИЋ МИЛОЈКА
+КНЕШАУРЕК МАРИЈА
+КНЕЖЕВ ЖАРКО ДИПЛ ИНГ
+КНЕЖЕВ ЂОРЂЕ
+КНЕЖЕВ ЂОРЂЕ
+КНЕЖЕВ ЂУРА
+КНЕЖЕВ ЈЕЛИЦА
+КНЕЖЕВ ЉИЉАНА
+КНЕЖЕВИЋ ЖАРКО
+КНЕЖЕВИЋ ЖЕЉКО
+КНЕЖЕВИЋ ЖЕЉКО
+КНЕЖЕВИЋ ЖЕЉКО
+КНЕЖЕВИЋ ЖИВКА
+КНЕЖЕВИЋ ЖИВКО
+КНЕЖЕВИЋ ЖИВОЈИН
+КНЕЖЕВИЋ ЖИВОЈИН
+КНЕЖЕВИЋ ЂИНЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂОРЂЕ
+КНЕЖЕВИЋ ЂУРА
+КНЕЖЕВИЋ ЂУРА
+КНЕЖЕВИЋ ЂУРО
+КНЕЖЕВИЋ АЛЕКСАНДАР
+КНЕЖЕВИЋ АЛЕКСАНДАР
+КНЕЖЕВИЋ АЛЕКСАНДАР
+КНЕЖЕВИЋ АЛЕКСАНДРА
+КНЕЖЕВИЋ АЛЕКСА
+КНЕЖЕВИЋ АНЂЕЛКО
+КНЕЖЕВИЋ АНИЦА
+КНЕЖЕВИЋ АНИЦА
+КНЕЖЕВИЋ АРКАДИЈА
+КНЕЖЕВИЋ БОШКО
+КНЕЖЕВИЋ БОЖО
+КНЕЖЕВИЋ БОГДАН
+КНЕЖЕВИЋ БОГДАН
+КНЕЖЕВИЋ БОГДАН
+КНЕЖЕВИЋ БОРИСЛАВ
+КНЕЖЕВИЋ БОРИС
+КНЕЖЕВИЋ БОРКА
+КНЕЖЕВИЋ БОСИЉКА
+КНЕЖЕВИЋ БРАНИМИР
+КНЕЖЕВИЋ БРАНКО
+КНЕЖЕВИЋ БРАНКО
+КНЕЖЕВИЋ ЦВИЈО
+КНЕЖЕВИЋ ДОБРИВОЈЕ
+КНЕЖЕВИЋ ДРАГАН
+КНЕЖЕВИЋ ДРАГАН
+КНЕЖЕВИЋ ДРАГАН
+КНЕЖЕВИЋ ДРАГАН
+КНЕЖЕВИЋ ДРАГИША
+КНЕЖЕВИЋ ДРАГИЦА
+КНЕЖЕВИЋ ДРАГИЦА
+КНЕЖЕВИЋ ДРАГОЉУБ
+КНЕЖЕВИЋ ДРАГОЉУБ
+КНЕЖЕВИЋ ДУШАНКА
+КНЕЖЕВИЋ ДУШАН
+КНЕЖЕВИЋ ДУШАН
+КНЕЖЕВИЋ ДУШАН
+КНЕЖЕВИЋ ДУШАН
+КНЕЖЕВИЋ ГЛИША
+КНЕЖЕВИЋ ГОРДАНА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИЛИЈА
+КНЕЖЕВИЋ ИВАНКА
+КНЕЖЕВИЋ ИВАН
+КНЕЖЕВИЋ ИВАН
+КНЕЖЕВИЋ ЈЕЛА
+КНЕЖЕВИЋ ЈЕЛЕНА
+КНЕЖЕВИЋ ЈЕЛЕНА
+КНЕЖЕВИЋ ЈЕЛИСАВКА
+КНЕЖЕВИЋ ЈОСИП
+КНЕЖЕВИЋ ЈОВАНКА
+КНЕЖЕВИЋ ЈОВАНКА
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВАН
+КНЕЖЕВИЋ ЈОВО
+КНЕЖЕВИЋ ЈУГОСЛАВ
+КНЕЖЕВИЋ КРСТАН
+КНЕЖЕВИЋ ЛАТИНКА
+КНЕЖЕВИЋ ЛАЗАР
+КНЕЖЕВИЋ ЛАЗАР
+КНЕЖЕВИЋ ЉИЉАНА
+КНЕЖЕВИЋ ЉУБОМИР
+КНЕЖЕВИЋ ЉУБОМИР
+КНЕЖЕВИЋ ЉУБОМИР
+КНЕЖЕВИЋ МАНЕ
+КНЕЖЕВИЋ МАРИЦА
+КНЕЖЕВИЋ МАРИЦА
+КНЕЖЕВИЋ МАРИЈА
+КНЕЖЕВИЋ МАРИЈА
+КНЕЖЕВИЋ МАРИЈА
+КНЕЖЕВИЋ МАРИЈА
+КНЕЖЕВИЋ МАРКО
+КНЕЖЕВИЋ МИЋА
+КНЕЖЕВИЋ МИХАЈЛО
+КНЕЖЕВИЋ МИХАЈЛО
+КНЕЖЕВИЋ МИХАЈЛО
+КНЕЖЕВИЋ МИХАЈЛО
+КНЕЖЕВИЋ МИЛАДИН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛАН
+КНЕЖЕВИЋ МИЛИЦА
+КНЕЖЕВИЋ МИЛИЈАНА
+КНЕЖЕВИЋ МИЛИВОЈ
+КНЕЖЕВИЋ МИЛКА
+КНЕЖЕВИЋ МИЛОШ
+КНЕЖЕВИЋ МИЛОМИР
+КНЕЖЕВИЋ МИЛОЊА
+КНЕЖЕВИЋ МИЛОЊА
+КНЕЖЕВИЋ МИЛОРАД
+КНЕЖЕВИЋ МИЛУТИН
+КНЕЖЕВИЋ МИОДРАГ
+КНЕЖЕВИЋ МИОДРАГ
+КНЕЖЕВИЋ МИОДРАГ
+КНЕЖЕВИЋ МИРЈАНА
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРКО
+КНЕЖЕВИЋ МИРОСЛАВ
+КНЕЖЕВИЋ МИРОСЛАВ
+КНЕЖЕВИЋ МЛАДЕН
+КНЕЖЕВИЋ МОМЧИЛО
+КНЕЖЕВИЋ МОМИР
+КНЕЖЕВИЋ МОМИР
+КНЕЖЕВИЋ МОМИР
+КНЕЖЕВИЋ НАДА
+КНЕЖЕВИЋ НАДЕЖДА
+КНЕЖЕВИЋ НЕНАД
+КНЕЖЕВИЋ НЕВЕНА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ НИКОЛА
+КНЕЖЕВИЋ ПАНТА
+КНЕЖЕВИЋ ПАВЛЕ
+КНЕЖЕВИЋ ПЕРА
+КНЕЖЕВИЋ ПЕТАР
+КНЕЖЕВИЋ ПЕТАР
+КНЕЖЕВИЋ ПЕТАР
+КНЕЖЕВИЋ ПЕТАР
+КНЕЖЕВИЋ ПЕТКО
+КНЕЖЕВИЋ РАДА
+КНЕЖЕВИЋ РАДЕ
+КНЕЖЕВИЋ РАДИВОЈЕ
+КНЕЖЕВИЋ РАДИВОЈЕ
+КНЕЖЕВИЋ РАДМИЛА
+КНЕЖЕВИЋ РАДОМИР
+КНЕЖЕВИЋ РАДОСЛАВ
+КНЕЖЕВИЋ РАЈКО
+КНЕЖЕВИЋ РАНКО
+КНЕЖЕВИЋ РИСТО
+КНЕЖЕВИЋ РОЗА
+КНЕЖЕВИЋ САВО
+КНЕЖЕВИЋ СИНИША
+КНЕЖЕВИЋ СЛАВКО
+КНЕЖЕВИЋ СЛАВКО
+КНЕЖЕВИЋ СЛАВОЉУБ
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СЛОБОДАН
+КНЕЖЕВИЋ СПАСЕНИЈА
+КНЕЖЕВИЋ СРБИСЛАВА
+КНЕЖЕВИЋ СТАНА
+КНЕЖЕВИЋ СТАНИША
+КНЕЖЕВИЋ СТАНИМИР
+КНЕЖЕВИЋ СТАНКО
+КНЕЖЕВИЋ СТЕВАН
+КНЕЖЕВИЋ СТЕВО
+КНЕЖЕВИЋ СТЕВО
+КНЕЖЕВИЋ СТИПЕ
+КНЕЖЕВИЋ СТОЈАН
+КНЕЖЕВИЋ СВЕТКО
+КНЕЖЕВИЋ СВЕТО
+КНЕЖЕВИЋ ТЕОДОР
+КНЕЖЕВИЋ ТОМИСЛАВ
+КНЕЖЕВИЋ УРОШ
+КНЕЖЕВИЋ ВАСИЛИЈА
+КНЕЖЕВИЋ ВЕРА
+КНЕЖЕВИЋ ВЕРА
+КНЕЖЕВИЋ ВЛАДИМИР
+КНЕЖЕВИЋ ВЛАДИМИР
+КНЕЖЕВИЋ ВЛАСТИМИР
+КНЕЖЕВИЋ ВЛАСТИМИР
+КНЕЖЕВИЋ ВОЈИН
+КНЕЖЕВИЋ ВУКОСАВ
+КНЕЖЕВИЋ ЗДРАВКО
+КНЕЖЕВИЋ ЗЛАТАН
+КНЕЖЕВИЋ ЗОРАН
+КНЕЖЕВИЋ ЗОРАН
+КНЕЖЕВИЋ ЗОРА
+КНЕЖИЋ ОЛГА
+КНЕЖИЋ РАДОМИР
+КНЕБЛ ФРАЊА
+КНЕБЛ НИКОЛА
+КНЕГИЋ МИРОСЛАВ
+КНЕР ДЕЗИДЕР
+КНЕСЕЛАЦ БРАНИСЛАВА
+КНЕЗ ЗЛАТКО
+КНЕЗИ ИВАН
+КНЕЗИ ЈОЖЕФ
+КНЕЗИ СЛОБОДАН
+КЊЕШКО ЖУЖАНА
+КЊЕШКО АЛБЕРТ
+КОЧАР ЛАСЛО
+КОЧАР СТЕФАНИЈА
+КОЧАР ТИХОМИР
+КОЧЕТОВ ТАТЈАНА
+КОЧИ ЕТЕЛКА
+КОЧИ ИШТВАН
+КОЧИ ВЛАДИМИР
+КОЧИШ ЂУРА
+КОЧИШ АНДРИЈА
+КОЧИШ АНДРИЈА
+КОЧИШ ЕРНЕСТ
+КОЧИШ ГЕРГЕЉ ДИПЛ ИНГ
+КОЧИШ ХЕЛЕНА
+КОЧИШ ИШТВАН
+КОЧИШ ЈАКОВ
+КОЧИШ ЈАНКО
+КОЧИШ ЈАНОШ
+КОЧИШ КАРЛО
+КОЧИШ МАРИЈА
+КОЧИШ МИХАЈЛО
+КОЧИШ НИКОЛА ПРОФЕСОР
+КОЧИШ РАДЕ
+КОЧИШ ВЛАДИМИР
+КОЧИШ ВЛАДИМИР
+КОЧИЋ ДРАГО
+КОЧИЋ МАНЕ
+КОЧИЋ МИЛОРАД
+КОЧИЋ СТАНИСЛАВ
+КОЧОБА РАДИСЛАВ
+КОЧОСКИ ПЕТАР
+КОЧОВИЋ АЛЕКСАНДАР
+КОЧОВИЋ МИЛЕТА
+КОШЋАК САВКА
+КОША ТИБОР ДИПЛ ИНГ
+КОШАНИН МИЛОМИР
+КОШАЊИ ФЕРЕНЦ
+КОШАРИЋ ДИМИТРИЈЕ
+КОШИЋ ЉУБИЦА
+КОШИЋ МИТА
+КОШИЋ СТЕВАН
+КОШИЋ СТЕВО
+КОШИЋ ВАСИЛИЈЕ
+КОШИЦКИ ЛЕА
+КОШИЦКИ МАРИЈА
+КОШНИЧАР МИЛАН
+КОШНИЧАР СОФИЈА
+КОШОЦКИ МАРИЈА
+КОШУТИЋ ЂУРО
+КОШУТИЋ ЂУРО
+КОШУТИЋ БОЖИДАР
+КОШУТИЋ БРАНКО
+КОШУТИЋ ДИМИТРИЈЕ
+КОШУТИЋ ДУШАН
+КОШУТИЋ ЈОВАН
+КОШУТИЋ КОСТА
+КОШУТИЋ МАНЕ
+КОШУТИЋ МИЛОШ
+КОШУТИЋ НИКОЛА
+КОЋАЛО РАДОЈИЦА
+КОЖУЛ ГОЈКО
+КОЖУЛ ГОЈКО
+КОЖУЛ РАЈКО
+КОЖУВАРА ГАВРА
+КОБАШ ЈОСИП
+КОБАШ КАТИЦА
+КОБАШ ВУКАШИН
+КОБАЛ ЂУРА
+КОБАЛ БОЖИДАР
+КОБАЛ ИРИС
+КОБАЛ ИВАН
+КОБИЛАРИЋ ЂУРЂИЦА
+КОБИЛАРОВ АНГЕЛИНА
+КОБИЛАРОВ ЉУБОМИР
+КОБИЛАРОВ МИЛАНКА
+КОБИЛАРОВ МИЛОШ
+КОБИЛАРОВ МИРОСЛАВ
+КОБИЛАРОВ НЕГОВАН
+КОБИЛАРОВ НЕСТОР
+КОБИЛАРОВ СИМА
+КОБИЛАРОВ ТОША
+КОБИЛАРОВ ВАСА
+КОБИЉСКИ ЂОРЂЕ
+КОБИЉСКИ ДОБРИЛА
+КОБИЉСКИ ДРАГОМИР
+КОБИЉСКИ ДУШАН
+КОБИЉСКИ ЛАЗАР
+КОБИЉСКИ МИЛОШ
+КОБИЉСКИ МИРЈАНА
+КОБИЉСКИ МЛАДЕН
+КОБИЉСКИ НИКОЛА
+КОБИЉСКИ СТЕВАН
+КОБИЉСКИ ВИДА
+КОБИЛСКИ МАРИЈА
+КОБРЕХЕЛ ЛАЈОШ
+КОЦАП МАРИЈА
+КОЦАП МИРА
+КОЦАП ВЛАДИМИР
+КОЦИ ФЕРЕНЦ
+КОЦИ РЕЖЕ
+КОЦИЋ ЖИКИЦА
+КОЦИЋ АЛЕКСАНДАР
+КОЦИЋ АНИЦА
+КОЦИЋ ДУШАНКА
+КОЦИЋ ЈАСНА
+КОЦИЋ ЉИЉАНА
+КОЦИЋ МИЛИЈАНА
+КОЦИЋ РАДМИЛА
+КОЦИЋ СИНИША
+КОЦИЋ СЛАЂАНА
+КОЦИЋ СЛАВКО
+КОЦИЋ ТОМИСЛАВ
+КОЦИЋ ВАСИЛИЈЕ
+КОЦИЋ ВЕЛИНКА
+КОЦИЋ ЗВЕЗДАН
+КОЦИЈАНЧИЋ МИРА
+КОЦКАР БОРИСЛАВ
+КОЦКАР БОРИСЛАВ
+КОЦКАР ЉУБОМИР
+КОЦКАР ВЛАДИМИР
+КОЦКАРЕВИЋ БРАНИСЛАВ
+КОЦКАРЕВИЋ ЈОВАН
+КОЦКАРЕВИЋ МИЛИЦА
+КОЦО ШАНДОР
+КОЦО ЕРЖЕБЕТ
+КОЦОЉЕВАЦ СТАНИСЛАВ
+КОЏО САША
+КОЏО ЗОРАН
+КОДИЋ ДИМИТРИЈЕ
+КОДРАНОВ РАДОВАН
+КОДРАНОВ СРЕДОЈЕ
+КОДРИН ЉУДМИЛА
+КОГОЈ ЕДУАРД
+КОГОЈ ЕМА
+КОХ ЈОЖЕФ
+КОХ САВЕТА
+КОХАНЕЦ ШАНДОР
+КОХАНЕЦ ФРАЊА
+КОХАНЕЦ ГАШПАР
+КОХАНЕЦ ЈОВАН
+КОХАНЕЦ МАРИЈА
+КОХАНЕЦ ПАЛ
+КОХУТ ЂУРА
+КОХУТ СТОЈА
+КОЈЧИЋ АНЂЕЛКО
+КОЈЧИЋ ДРАГИЦА
+КОЈЧИЋ ИВАНА
+КОЈЧИЋ ПРЕДРАГ
+КОЈЧИЋ СРЕДОЈЕ ДР
+КОЈЧИН ЏЕМИЉА
+КОЈЧИН МИЛЕВА
+КОЈАДИНОВИЋ ЖИВКО
+КОЈАДИНОВИЋ БОШКО
+КОЈАДИНОВИЋ БОРО
+КОЈАДИНОВИЋ ГОРДАНА
+КОЈАДИНОВИЋ КАТА
+КОЈАДИНОВИЋ МИРА
+КОЈАДИНОВИЋ РАДЕ
+КОЈАДИНОВИЋ СТОЈАН
+КОЈАДИНОВИЋ ВЛАДИМИР
+КОЈДИЋ МИРЈАНА
+КОЈДИЋ МЛАДЕН
+КОЈДИЋ ПЕТАР
+КОЈИЧИЋ НОВКА
+КОЈИЧИЋ ТОМИСЛАВ
+КОЈИЧИН МИЛАН
+КОЈИЋ ЧЕДОМИР
+КОЈИЋ ЖИВАН
+КОЈИЋ ЂУРАЂ
+КОЈИЋ АЛЕКСАНДАР
+КОЈИЋ АЛЕКСАНДАР
+КОЈИЋ АЛЕКСАНДАР
+КОЈИЋ АРСЕН
+КОЈИЋ БОШКО
+КОЈИЋ-БОЖАНИЋ СОФИЈА
+КОЈИЋ БОРИВОЈ
+КОЈИЋ БРАНИСЛАВ
+КОЈИЋ ДАНИЦА
+КОЈИЋ ДРАГАН
+КОЈИЋ ДРАГАН
+КОЈИЋ ДРАГАН
+КОЈИЋ ДРАГАН
+КОЈИЋ ДРАГИЊА
+КОЈИЋ ДУШАН
+КОЈИЋ ЕРЖЕБЕТ
+КОЈИЋ ГОРАН
+КОЈИЋ ГОРАН
+КОЈИЋ ГОРАН
+КОЈИЋ ХРИСТИФОР
+КОЈИЋ ИВАН
+КОЈИЋ ИВАН
+КОЈИЋ ИВАН
+КОЈИЋ ЈОВАНКА
+КОЈИЋ ЈОВАНКА
+КОЈИЋ ЈОВО
+КОЈИЋ ЛЕПОСАВА
+КОЈИЋ ЉУБИЦА
+КОЈИЋ ЉУБОДРАГ
+КОЈИЋ ЛУКА
+КОЈИЋ МИХАИЛО
+КОЈИЋ МИЛАН
+КОЈИЋ МИЛАН
+КОЈИЋ МИЛАН
+КОЈИЋ МИЛАН
+КОЈИЋ МИЛЕНА
+КОЈИЋ МИЛЕНА
+КОЈИЋ МИЛЕНКО
+КОЈИЋ МИЛЕНКО
+КОЈИЋ МИЛЕНКО
+КОЈИЋ МИЛОВИНА
+КОЈИЋ МИОДРАГ
+КОЈИЋ МИРЈАНА
+КОЈИЋ МОМЧИЛО
+КОЈИЋ НЕЂО
+КОЈИЋ НЕБОЈША
+КОЈИЋ НЕБОЈША
+КОЈИЋ НЕДЕЉКО
+КОЈИЋ ОЛГИЦА
+КОЈИЋ ПЕТАР
+КОЈИЋ РАДИВОЈ
+КОЈИЋ РУЖИЦА
+КОЈИЋ РУЖИЦА
+КОЈИЋ САВО
+КОЈИЋ СИМЕОН
+КОЈИЋ СИНИША
+КОЈИЋ СПАСЕНИЈА
+КОЈИЋ СТЕВАН
+КОЈИЋ СТЕВАН
+КОЈИЋ СТЕВАН
+КОЈИЋ СВЕТИСЛАВ
+КОЈИЋ УГЉЕША
+КОЈИЋ ВАСА
+КОЈИЋ ВЕЛИМИР
+КОЈИЋ ВИНКА
+КОЈИЋ ВЛАДИСЛАВ
+КОЈОВИЋ ЖАРКО
+КОЈОВИЋ МИЛИНКО
+КОКАИ ШАНДОР
+КОКАИ ШАНДОР
+КОКАИ ШАНДОР
+КОКАИ АЛИСА
+КОКАИ ЕЛЕНА
+КОКАИ ФЕРЕНЦ
+КОКАИ ФЕРЕНЦ
+КОКАИ ФЕРЕНЦ
+КОКАИ ЛАДИСЛАВ
+КОКАИ ЛАСЛО
+КОКАИ МАГДОЛНА
+КОКАИ МИХАЈЛО
+КОКАИ ТИБОР
+КОКАН ИВАН
+КОКАНОВ МИЛЕТА
+КОКАНОВИЋ ДУШАН
+КОКАНОВИЋ КОВИЉКА
+КОКАР ВЕРИЦА
+КОКАР ВИЛМА
+КОКЕЉ ТУГОМИР
+КОКЕЗА ЖАРКО
+КОКЕЗА ДУШАН
+КОКЕЗА МИЛЕНА
+КОКИЋ ЈОВАН
+КОКИЋ МИРОСЛАВ
+КОКИНОВИЋ СЛАВКО
+КОКИР ЉУБО
+КОКОРУШ ОСТОЈА
+КОКОТ РАДЕ
+КОКОТ СМИЉА
+КОКОТ СРЕТА
+КОКОТ СВЕТЛАНА
+КОКОТ ВИЦО
+КОКОТОВИЋ ЖИВКО
+КОКОТОВИЋ БОЖИДАР
+КОКОТОВИЋ ГОЈКО
+КОКОТОВИЋ ИЛИЈА
+КОКОТОВИЋ ИВИЦА
+КОКОТОВИЋ ЈЕЛИСАВЕТА
+КОКОТОВИЋ КАТИЦА
+КОКОТОВИЋ ПЕТАР
+КОКОТОВИЋ СНЕЖАНА
+КОКОТОВИЋ ВЕСЕЛИН
+КОКОВИЋ ДРАГАН
+КОКОВИЋ ГОРАН
+КОЛЂЕРАЈ ЂОН
+КОЛАЧАРИЋ ВЕЛИБОР
+КОЛАШИНАЦ ЉУБОМИР
+КОЛАК ДУШАН
+КОЛАК ЈЕЛЕНА
+КОЛАК МИЛАН
+КОЛАКОВИЋ АЛМАЗ
+КОЛАКОВИЋ ЈУРЕ
+КОЛАКОВИЋ МИЛЕ
+КОЛАКОВИЋ ЗДРАВКО
+КОЛАКУШИЋ ИВИЦА
+КОЛАКВИЋ ЉИЉАНА
+КОЛАНО АНТОН
+КОЛАНО ДРАГОСЛАВ
+КОЛАНО ИВАН
+КОЛАНО ЈУЛКА
+КОЛАР АНА
+КОЛАР АНА
+КОЛАР АНДРИЈА
+КОЛАР АНТАЛ
+КОЛАР ДАРКО
+КОЛАР ИБОЉКА
+КОЛАР ИВАН
+КОЛАР ЈОСИП
+КОЛАР ЈОСИП
+КОЛАР ЈУЛИЈАНА
+КОЛАР ЛАЈОШ
+КОЛАР ЛАСЛО
+КОЛАР ЛОЗИНКА
+КОЛАР МАТИЈА
+КОЛАР МИЛИЦА
+КОЛАР МИРКО
+КОЛАР ПАВЛЕ
+КОЛАР ПЕТАР
+КОЛАРШ ШТЕФАН
+КОЛАРЕВИЋ ЉУБИЦА
+КОЛАРИЋ АЛЕКСАНДРА
+КОЛАРИЋ БРАНКО
+КОЛАРИЋ БРИГИТА
+КОЛАРИЋ ДОБРИЛА
+КОЛАРИЋ ДРАГИЦА
+КОЛАРИЋ ДРАГОЉУБ
+КОЛАРИЋ ДУШАН
+КОЛАРИЋ ФИЛИП
+КОЛАРИЋ ИДА
+КОЛАРИЋ КОСТА
+КОЛАРИЋ МАРИЈА
+КОЛАРИЋ МАРИЈА
+КОЛАРИЋ МИЛАН
+КОЛАРИЋ МИЛАН
+КОЛАРИЋ МИЛИВОЈ
+КОЛАРИЋ МЛАДЕН
+КОЛАРИЋ НАДА
+КОЛАРИЋ НЕМАЊА
+КОЛАРИЋ НИКОЛА
+КОЛАРИЋ РАДОВАН
+КОЛАРИЋ СЛАВКО
+КОЛАРИЋ СЛОБОДАН
+КОЛАРИЋ СЛОБОДАН
+КОЛАРИЋ СНЕЖАНА
+КОЛАРИЋ СТЕВАН
+КОЛАРИЋ ТОМИСЛАВ
+КОЛАРИЋ ВОЈА
+КОЛАРИЋ ЗОРАН
+КОЛАРИЋ ЗВОНКО
+КОЛАРОВ ЖИВА
+КОЛАРОВ ЂОРЂЕ
+КОЛАРОВ АЛЕКСАНДАР
+КОЛАРОВ ДИМИТРИЈЕ
+КОЛАРОВ ДРАГОСЛАВ
+КОЛАРОВ ДРАГОСЛАВ
+КОЛАРОВ ГОЈКО
+КОЛАРОВ ЈОВАН
+КОЛАРОВ ЈОВАН
+КОЛАРОВ ЈУЛКА
+КОЛАРОВ КАТЕ
+КОЛАРОВ ЉИЉАНА
+КОЛАРОВ МАРИЦА
+КОЛАРОВ МИЛАНКА
+КОЛАРОВ МИЛИВОЈ
+КОЛАРОВ МИЛОШ
+КОЛАРОВ МОМИР
+КОЛАРОВ НАДА ДР ЛЕКАР
+КОЛАРОВ НЕБОЈША
+КОЛАРОВ ПАВЛЕ
+КОЛАРОВ ПЕТАР
+КОЛАРОВ РАДОЈКО
+КОЛАРОВ-РАДОВАНОВИЋ МАРИНА
+КОЛАРОВ САВА
+КОЛАРОВ ТОДОР
+КОЛАРОВ ТОМИСЛАВ
+КОЛАРОВ ВОЈИСЛАВ
+КОЛАРОВИЋ ЖИВКО
+КОЛАРОВИЋ ЈЕЛЕНА
+КОЛАРОВИЋ КАТИЦА
+КОЛАРОВИЋ КОВИНКА
+КОЛАРОВИЋ ЛУКА ДР
+КОЛАРОВИЋ МИХАЈЛО
+КОЛАРОВИЋ МИЛИЦА
+КОЛАРОВИЋ НЕНАД
+КОЛАРСКИ ЂОРЂЕ
+КОЛАРСКИ АЛЕКСАНДАР
+КОЛАРСКИ АНИЦА
+КОЛАРСКИ АРПАД
+КОЛАРСКИ БОСИЉКА
+КОЛАРСКИ БРАНИСЛАВ
+КОЛАРСКИ ДАНИЦА
+КОЛАРСКИ ДУШАНКА ДИПЛ ОЕЦ
+КОЛАРСКИ ЈОВАН
+КОЛАРСКИ ЈОВАН
+КОЛАРСКИ КАТИЦА
+КОЛАРСКИ ЛАСЛО
+КОЛАРСКИ ЛАЗАР
+КОЛАРСКИ МИЛАДИН
+КОЛАРСКИ МИЛАН
+КОЛАРСКИ МИЛЕНКО ВЕТЕРИНАР
+КОЛАРСКИ МИЛЕНКО
+КОЛАРСКИ МИЛИЦА
+КОЛАРСКИ МИТАР
+КОЛАРСКИ МЛАДЕН
+КОЛАРСКИ МЛАДЕН
+КОЛАРСКИ НАДА
+КОЛАРСКИ НИКОЛА
+КОЛАРСКИ РАДМИЛА
+КОЛАРСКИ РАДОСЛАВ
+КОЛАРСКИ РАДОВАН
+КОЛАРСКИ РАДОВАН
+КОЛАРСКИ СЛАВИЦА
+КОЛАРСКИ СТЕВАН
+КОЛАРСКИ СТЕВАН
+КОЛАРСКИ ТОДОР
+КОЛАРСКИ ВЕРА
+КОЛАРСКИ ЗДРАВКО
+КОЛБАС ДАНИЈЕЛ
+КОЛБАС ЈАНКО
+КОЛБАС ЈОАКИМ
+КОЛБАС МЕЛАНИЈА
+КОЛБАС МИЛЕВА
+КОЛБАС ВЛАДА
+КОЛЏИЋ БРАНКА
+КОЛЏИЋ БРАНКО
+КОЛЏИН МИРКО
+КОЛЏИН ВЕСЕЛИН
+КОЛДАН МИЛЕНКО
+КОЛЕШКА ЕДУАРД
+КОЛЕДАР АНДРИЈА
+КОЛЕДИН ЂОРЂЕ
+КОЛЕДИН ФОТИЈЕ
+КОЛЕДИН МИЛОШ
+КОЛЕДИН МИРЈАНА
+КОЛЕДИН ПЕТАР
+КОЛЕДИН РАДОСЛАВ
+КОЛЕДИН РАДОВАН
+КОЛЕДИН РАДОВАН
+КОЛЕДИН СТЕВАН
+КОЛЕДИН ВЕЛИМИР
+КОЛЕДИН ВЕРА
+КОЛЕР АНТАЛ
+КОЛЕР ЛАЈОШ
+КОЛЕСАР ЂУРА
+КОЛЕСАР АНИЦА
+КОЛЕСАР ФЕДОР
+КОЛЕСАР ФЕРЕНЦ
+КОЛЕСАР ГАВРА
+КОЛЕСАР ЈАНОШ
+КОЛЕСАР ЈОВАН
+КОЛЕСАР ЈОВАН
+КОЛЕСАР ЈУЛИЈАН
+КОЛЕСАР ЈУЛИЈАН
+КОЛЕСАР КАТИЦА
+КОЛЕСАР КСЕНИЈА
+КОЛЕСАР МИХАЈЛО
+КОЛЕСАР ПЕТАР ДР
+КОЛЕСАР ПЕТАР
+КОЛЕСАР СИМЕОН
+КОЛЕСАР ВЕРА
+КОЛЕСАР ВЛАДИМИР
+КОЛЕСАР ЗОРИЦА
+КОЛЕСАРИЋ ВИНКО
+КОЛЕВ ТОДОРКА
+КОЛИЋ АИША
+КОЛИН ЈОЖЕФ НОВИНАР
+КОЉАЏИНСКИ ЈОВАН
+КОЉАЏИНСКИ СТЕФАНИЈА
+КОЉАЈА БЛАГОЈЕ
+КОЉАЈА ДРАГАН
+КОЉАЈА ГОРАН
+КОЉАНИН ПЕТАР
+КОЛМАН ЈОЖЕФ
+КОЛОЧАИ ЈОСИП
+КОЛОШЊАИ МИРОН
+КОЛОШЊАЈИ ЈАНКО
+КОЛОШЊАЈИ ВЛАДИМИР
+КОЛОПИЋ ПЕТАР
+КОЛОПИЋ РУЖИЦА
+КОЛОВИЋ СТЕВАН
+КОЛТИН БРАНКО
+КОЛУНЏИЋ ЖИВКА
+КОЛУНЏИЋ ЂУРА
+КОЛУНЏИЋ АНКА
+КОЛУНЏИЋ ПЕРИЦА
+КОЛУНЏИЋ СЛАВКО
+КОЛУНЏИЋ СЛАВКО
+КОЛУНЏИЈА АНЂЕЛКА
+КОЛУНЏИЈА БОРИСЛАВ
+КОЛУНЏИЈА ДАВОРКА
+КОЛУНЏИЈА ДРАГАН
+КОЛУНЏИЈА ЛАЗАР
+КОЛУНЏИЈА ЉУБОМИР
+КОЛУНЏИЈА МИРКО
+КОЛУНЏИЈА НАДА
+КОЛУНЏИЈА НИКОЛА
+КОЛУНЏИЈА ЗОРКА
+КОЛУТАЦ МАТИЈА
+КОМШИЋ ЈОВАН
+КОМШО НИКОЛА
+КОМАД АНА
+КОМАД ГОЈКО
+КОМАД РАТОМИР
+КОМАД ТОМИСЛАВ
+КОМАДАНОВИЋ МОМЧИЛО
+КОМАДАНОВИЋ МОМИР
+КОМАДАРИЋ МИЛОШ
+КОМАДИНА МАНЕ
+КОМАДИНА ВЕЛИСЛАВ
+КОМАДИНА ВУЈАДИН
+КОМАДИНИЋ МИЛОРАД
+КОМАДИНОВИЋ ДУШАН
+КОМАДИНОВИЋ МИРА
+КОМАДИНОВИЋ РАДОСЛАВ
+КОМАН БОСИЉКА
+КОМАНОВ МАРИЈА
+КОМАР ГОЈКО ДИПЛ ИНГ
+КОМАР РАДИВОЈЕ
+КОМАР СЛАВКА
+КОМАР СЛОБОДАН
+КОМАР ЗОРКА
+КОМАРЧЕВИЋ АЛЕКСАНДАР
+КОМАРЧЕВИЋ ИШТВАН
+КОМАРЧЕВИЋ МИЛЕНА
+КОМАРЧЕВИЋ МИЛИНКО ДР
+КОМАРЧЕВИЋ МИРОСЛАВ
+КОМАРЧЕВИЋ ВЛАДИМИР
+КОМАРИЦА МАРКО
+КОМАРИЦА НОВКО
+КОМАРИЦА РАДМИЛА
+КОМАРОМИ ЂОРЂЕ
+КОМАРОМИ АНЂЕЛКА
+КОМАРОМИ БОРБАЛА
+КОМАРОМИ БОРЈАНКА
+КОМАРОМИ БОРЈАНКА
+КОМАРОМИ ИРМА
+КОМАРОМИ КЛАРА
+КОМАРОМИ МАГДОЛНА
+КОМАРОМИ МАГДОЛНА
+КОМАРОМИ МАРИЈА
+КОМАРОМИ ПЕТАР
+КОМАРОМИ ЗОЛТАН
+КОМАРОВ АЛЕКСАНДАР ДИПЛ ИНГ
+КОМАРОВ АЛЕКСАНДАР
+КОМАРОВ БРАНКА
+КОМАРОВ ДРАГИЦА
+КОМАРОВ ДРАГОМИР
+КОМАТИНА ДРАГАН
+КОМАТИНОВИЋ МИХАЈЛО
+КОМАТОВИЋ МИЛАН
+КОМАТОВИЋ ВЕЛИМИР
+КОМАЗЕЦ ДРАГОМИР
+КОМАЗЕЦ ПЕТАР
+КОМБЕРИ АВДУШ
+КОМБИЉ ВЕРА
+КОМЕНДА АНДРИЈА
+КОМИНКО ЉУБИЦА
+КОМЛЕНИЋ ЂОРЂЕ
+КОМЛЕНОВ ЖИВАН
+КОМЛЕНОВ ЂОРЂЕ
+КОМЛЕНОВ ЈОВАН
+КОМЛЕНОВИЋ МАРИЈА
+КОМЛЕНОВИЋ МИЛАН
+КОМЛЕНОВИЋ МИЛЕ
+КОМЛЕНОВИЋ ВЕЉКО
+КОМЛЕНСКИ ЖИВАН
+КОМЛЕНСКИ-ДЕЛИЋ ВУКОСАВА ДР
+КОМЛЕНСКИ ЗОРАН
+КОМЉЕНОВИЋ АЛЕКСАНДРА
+КОМЉЕНОВИЋ БОШКО
+КОМЉЕНОВИЋ МИЛАН
+КОМЉЕНОВИЋ МОМИР
+КОМЉЕНОВИЋ СТЕВАН
+КОМЉЕНОВИЋ ВЛАДО
+КОМЛУШАН БОЖА
+КОМЛУШКИ ИВАНА МР
+КОМНЕНИЋ ИВАНКА
+КОМНЕНОВ ШАРЛОТА
+КОМНЕНОВ МИЛОРАД
+КОМНЕНОВ НИКОЛА
+КОМНЕНОВ САНДРА
+КОМНЕНОВ СТАНИСЛАВ
+КОМНЕНОВ ВЕСЕЛИНА
+КОМНЕНОВ ВЛАДИМИР ДР
+КОМНЕНОВИЋ ЖИВАН
+КОМНЕНОВИЋ БРАНКО
+КОМНЕНОВИЋ ДЕЈАН
+КОМНЕНОВИЋ ЈЕЛЕНА
+КОМНЕНОВИЋ ЉУБОЈЕ
+КОМНЕНОВИЋ МИЛАН
+КОМНЕНОВИЋ РАДОСЛАВ
+КОМНЕНОВИЋ СТАНКО
+КОМНЕНОВИЋ СТОЈАН
+КОМНЕНОВИЋ ВЕРИЦА
+КОМОСАР БРАНКО
+КОМОСАР РАЈКО
+КОМОЗЕЦ ЂОРЂЕ
+КОМОЗЕЦ ЛАЗАР
+КОН СЛОБОДАНКА
+КОН СТЕВАН
+КОН ТОМАЖ
+КОНЧАР АНДРИЈА
+КОНЧАР БОСИЉКА
+КОНЧАР ЈОВО
+КОНЧАР ЛАДИСЛАВ
+КОНЧАР МИРА
+КОНЧАР МИТАР
+КОНЧАР НИКОЛА
+КОНЧАР НИКОЛА
+КОНЧАР РАНКО
+КОНЧАР СЛАВКО
+КОНЧАР ЗОРА
+КОНЧАР ЗОРА
+КОНЧАРЕВИЋ ДАНИЦА
+КОНЧАРЕВИЋ ИЛИЈА
+КОНЧЕК РОЗАЛИЈА
+КОНАКОВ НЕДЕЉКО
+КОНЦ ШАНДОР
+КОНЦ ИШТВАН
+КОНЦ ИЛОНА
+КОНЦ ЉИЉАНА
+КОНЦ ЗОРАНКА
+КОНДАН МАРГАРЕТА
+КОНДИЋ АНА
+КОНДИЋ АНКА
+КОНДИЋ БРАНКО
+КОНДИЋ ДРАГАН
+КОНДИЋ ДРАГИЦА
+КОНДИЋ ДРАГОЉУБ
+КОНДИЋ ДУШАНКА
+КОНДИЋ ЈОВАН
+КОНДИЋ ЉУБИЦА
+КОНДИЋ МИЛЕНКО
+КОНДИЋ МИРА
+КОНДИЋ НЕБОЈША
+КОНДИЋ НЕМАЊА
+КОНДИЋ НИКОЛА
+КОНДИЋ НИКОЛА
+КОНДИЋ РАДМИЛА
+КОНДИЋ РАДОЈКА
+КОНДИЋ РАЈКО
+КОНДИЋ САНДРА
+КОНДИЋ ТРИВО
+КОНДИЋ ЗДРАВКО
+КОНДИЋ ЗОРКА
+КОНДОЈАНИ ЂОРЂЕ
+КОНДРАК СТОЈАН
+КОНДРАТЈЕВ ШТЕФАНИЈА
+КОНЕЧНИ МАРИЈА
+КОНЕЦКИ ЗЛАТКО
+КОНЕЦКИ ЗЛАТКО
+КОНЕН РОБЕРТ
+КОНЕН РОБЕРТ
+КОНЕСКА ЉИЉАНА
+КОНГО ВЕРА
+КОЊАТИЋ ШИМО
+КОЊЕВИЋ ЖИВА ДИПЛ ПРАВНИК
+КОЊЕВИЋ АНА
+КОЊЕВИЋ ДАНИЛО
+КОЊЕВИЋ ДОБРИВОЈ
+КОЊЕВИЋ ДРАГОМИР
+КОЊЕВИЋ ГРОЗДАНА
+КОЊЕВИЋ ИВАНКА
+КОЊЕВИЋ МИЛЕВА
+КОЊЕВИЋ МИЛИВОЈ
+КОЊЕВИЋ МЛАЂЕН
+КОЊЕВИЋ МЛАДЕН
+КОЊЕВИЋ НЕНАД
+КОЊЕВИЋ ПРЕДРАГ
+КОЊЕВИЋ ПРЕДРАГ
+КОЊЕВИЋ ПРЕДРАГ
+КОЊЕВИЋ СТАНИСЛАВ
+КОЊЕВИЋ СТАНИСЛАВ
+КОЊИЋ СТОЈАНКА
+КОЊИК НАДА
+КОЊИК ВИДОЈЕ
+КОЊОВИЋ БРАНИСЛАВ
+КОЊОВИЋ ЈОВАН
+КОЊОВИЋ МАКСИМ
+КОЊОВИЋ МИЛАН
+КОЊОВИЋ МИРЈАНА
+КОЊОВИЋ НИКОЛА
+КОЊОВИЋ РАДОСЛАВА
+КОЊОВИЋ СМИЉА
+КОЊОВИЋ СОФИЈА
+КОЊОВИЋ ТИНКА
+КОЊОВИЋ ВЕРА
+КОНКОЛ МИХАЈЛО
+КОНКОЉ МАРИЈА
+КОНОПЕК СТАНИМИР
+КОНРАД ФРАЊА
+КОНРАД МИРЧА
+КОНРАД ПАВЛЕ
+КОНСТАНТИН БУХА
+КОНСТАНТИНИДИС ДИМИТРИЈЕ
+КОНСТАНТИНИДИС ГЕОРГИОС
+КОНСТАНТИНИДИС ТЕОДОР
+КОНСТАНТИНИДУ СОФИЈА
+КОНСТАНТИНОВИЋ АНЂЕЛИЈА
+КОНСТАНТИНОВИЋ БЛАГОЈЕ
+КОНСТАНТИНОВИЋ ХЕРМИНА
+КОНСТАНТИНОВИЋ ЈЕЛИЦА
+КОНСТАНТИНОВИЋ ЈОРДАН
+КОНСТАНТИНОВИЋ ЈОВАН
+КОНСТАНТИНОВИЋ ЉИЉАНА
+КОНСТАНТИНОВИЋ ЛУКА
+КОНСТАНТИНОВИЋ МИРЈАНА
+КОНСТАНТИНОВИЋ НИКОЛА
+КОНСТАНТИНОВИЋ ПЕТАР
+КОНСТАНТИНОВИЋ ВЕРА
+КОНСТАНТИНОВИЋ ЗВОНИМИР
+КОНТИЋ ДОБРИВОЈ
+КОНТИЋ ЈОВАНКА
+КОНТИЋ МИЛАН
+КОНТИЋ СЛАВИЦА
+КОНТРИЋ ЈОВАН
+КОПЧАНСКИ ЖЕЉКО
+КОПЧАНСКИ ИРИНА
+КОПЧАНСКИ НИКОЛА
+КОПЧАНСКИ ПЕТАР
+КОПЧАНСКИ РАДМИЛА
+КОПЧАНСКИ СТЕВАН
+КОПЧАНСКИ ВЛАДА
+КОПЧОК АНА
+КОПЧОК КАТИЦА
+КОПЧОК МИША
+КОПЧОК САНДРА
+КОПАЊА ДАНИЛО
+КОПАЊА ДРАГОМИР
+КОПАЊА ДУШАН
+КОПАЊА ДУШАН
+КОПАЊА ГОЈКО
+КОПАЊА ГОЈКО
+КОПАЊА ИЛИЈА
+КОПАЊА ЉУПКО
+КОПАЊА МИЋО
+КОПАЊА МИОДРАГ
+КОПАЊА МИТАР
+КОПАЊА РАНИСЛАВ
+КОПАЊА РОСА
+КОПАЊА ВИД
+КОПАС ЈАНОШ
+КОПЕРЕЦ АЛЕКСАНДАР
+КОПЕРЕЦ АНДРИЈА
+КОПЕРЕЦ ЈАНОШ
+КОПЕРЕЦ ЈОВАН
+КОПЕРЕЦ СТЕВАН
+КОПЕРЕЦ СТЕВАН
+КОПЕСТЕНСКИ КАТИЦА
+КОПЕСТИНСКИЈ РЕГИНА
+КОПИЋ ИЛОНА
+КОПИЦЛ РУДОЛФ
+КОПИЛОВИЋ ЈОСИП
+КОПИЛОВИЋ МАРГА
+КОПИЛОВИЋ-МИЈАТОВ ДРАГИЦА
+КОПИЛОВИЋ ПАВЛЕ
+КОПИТОВИЋ ШПИРО
+КОПИТОВИЋ ПЕТАР
+КОПЛАЊИ МАРИЈА
+КОПЛАЊИ МИРОСЛАВА
+КОПЛИЋ ЂОРЂЕ
+КОПЛИЋ ДАНИЦА
+КОПЛИЋ ДУШАН
+КОПЛИЋ МИЛЕ
+КОПРЕНОВИЋ РАДОЈКА
+КОПРИВШЕК ЗВОНИМИР
+КОПРИВИЦА АНГЕЛИНА
+КОПРИВИЦА БОЖИДАР
+КОПРИВИЦА БОЖИДАР
+КОПРИВИЦА БОРИСЛАВ
+КОПРИВИЦА ГОРДАНА
+КОПРИВИЦА ЉИЉАНА
+КОПРИВИЦА МИЛЕНКО
+КОПРИВИЦА МИЛУТИН
+КОПРИВИЦА МИОДРАГ
+КОПРИВИЦА НОВАК
+КОПРИВИЦА ОБРЕН
+КОПРИВИЦА ПЕТАР
+КОПРИВИЦА СВЕТОЗАР
+КОПРИВИЦА ЗОРАН
+КОПУНОВИЋ ЉУБИЦА
+КОРЧОК ЈАН
+КОРЧОК МАРИЈА
+КОРЧОК ВЛАДИМИР
+КОРАЋ ЖЕЉКО
+КОРАЋ АНЂЕЛИЈА
+КОРАЋ ДУШАН
+КОРАЋ ГОЈКО
+КОРАЋ ИГОР
+КОРАЋ ЈУЛИЈАНА
+КОРАЋ КАТИЦА
+КОРАЋ ЉУБИСАВ
+КОРАЋ МАНЕ
+КОРАЋ МИХАЈЛО
+КОРАЋ МИЛАН
+КОРАЋ МИЛЕ
+КОРАЋ МИЛЕ
+КОРАЋ МИЛЕ
+КОРАЋ МИЛЕ
+КОРАЋ МИЛОВАН ДР ПРОФ
+КОРАЋ МИЛОВАН
+КОРАЋ МИЛОВАН
+КОРАЋ МИОДРАГ
+КОРАЋ ПЕТАР
+КОРАЋ ПЕТРА
+КОРАЋ РАДЕ
+КОРАЋ РАДОЈКА
+КОРАЋ РАДОЈКА
+КОРАЋ РАДОСАВ
+КОРАЋ СЛОБОДАН
+КОРАЋ СНЕЖАНА
+КОРАЋ ТАТЈАНА
+КОРАЋ ВЛАДО
+КОРАЈИЦА ЂУРА
+КОРАЈЛИЈА ЖАРКО
+КОРАЈЛИЈА ЖАРКО
+КОРАЈЛИЈА ЖАРКО
+КОРАЈЛИЈА ДИМИТРИЈЕ
+КОРАЈЛИЈА МИЛАН
+КОРАКУ ЛУЧИЈАН
+КОРАКУ ЛУЦИЈАН
+КОРБАТФИНСКИ ЕЛВИРА
+КОРБАТФИНСКИ ВИКТОР ДР
+КОРБАТВИНСКИ ДРАГАН
+КОРБАТВИНСКИ-ЛАЛОШЕВИЋ ЗЛАТА
+КОРБИЋ МЛАДЕН
+КОРДА МИЛОШ
+КОРДА НАНДОР
+КОРДИЋ ЂУРА
+КОРДИЋ БОЈАН
+КОРДИЋ ДУШАНКА
+КОРДИЋ ГОЈКО
+КОРДИЋ МИЛАН
+КОРЕНИЋ ГАБРИЕЛ
+КОРЕНИЋ ТЕОДОР
+КОРЕЊИ ЂОРЂЕ
+КОРЕЊИ АЛЕКСАНДАР
+КОРЕЊИ ЛАСЛО
+КОРЕНТ ЛУДВИГ
+КОРХАМЕР ФЕРЕНЦ
+КОРХЕЦ ПАВЛЕ
+КОРИШ ЈУЛИЈАНА
+КОРИЋАНАЦ ИВАН
+КОРИЋАНАЦ ЉУБИНКА
+КОРИЖ АРПАД
+КОРИЦА ЂОРЂЕ
+КОРИЦА ЂУРО
+КОРИЦА ДУШАН
+КОРИЦА ЈАНКО
+КОРИЦА МИЛОРАД
+КОРИЦА НЕДЕЉКО
+КОРИЦА НИКОЛА
+КОРИЦА ПЕТАР
+КОРИЦА СНЕЖАНА
+КОРИЦА СОФИЈА
+КОРИЦА СТЕВАН
+КОРИСТОВИЋ МИКСАРД
+КОРЛАТ ПЕРИЦА
+КОРЛАТ ПЕТАР
+КОРМАЊОШ ШАНДОР
+КОРМАЊОШ АНДРИЈА
+КОРМАЊОШ БОРКА
+КОРМАЊОШ ФЕРЕНЦ
+КОРМАЊОШ КАРОЉ
+КОРМАЊОШ МИХАЉ
+КОРМОШ ЈАНОШ
+КОРМОШ МАРГИТА
+КОРМОШ МАРГИТА
+КОРМОШ МАРИЈА
+КОРМОШ ТЕРЕЗА
+КОРОШ РАСТИСЛАВ
+КОРОШ ВЛАДА
+КОРОШАН ШАНДОР
+КОРОШЕЦ ЛЕО
+КОРОБКО ТАРАС
+КОРОДИ ФРАЊА
+КОРОКНАИ ФЕРЕНЦ
+КОРОКНАИ ЈАНОШ
+КОРОКНАИ ЗОЛТАН
+КОРОЛИЈА ДУШАН ДР ЛЕКАР
+КОРОЛИЈА ДУШАН
+КОРОЛИЈА СТЕВАН ДР
+КОРОЛИЈА ВЕРА
+КОРОМ ЕРЖЕБЕТ
+КОРОМ ТИБОР
+КОРОМАН МИЛОРАД
+КОРОВ ЂОРЂЕ
+КОРОВЉЕВ ИВАН
+КОРОВЉЕВ ЈОВАНКА
+КОРОВЉЕВ МАРИЈА
+КОРОВЉЕВ МИЛЕНКО
+КОРОВЉЕВ МИЛОШ
+КОРОВЉЕВ РАДМИЛА
+КОРОВЉЕВ ВУКИЦА
+КОРПА БЕЛА
+КОРПАШ АМАЛИЈА
+КОРПАШ ДАНИЦА
+КОРПАШ ДИМИТРИЈЕ
+КОРПАШ ЈАНКО
+КОРПАШ МИРОСЛАВ
+КОРПАШ МИРОСЛАВ
+КОРПАШ ПЕРА
+КОРПАК ДРАГИЊА
+КОРПАК НАДА
+КОРПОНАИ ИШТВАН
+КОРПОНАИ МАРИЈА
+КОРУГА БОРА
+КОРУГА ЈУЛКА
+КОРУГА РАДОМИР
+КОРУНИЋ ЛИЗА
+КОС ИДА
+КОС МАРИЈА
+КОС СЛАВКО
+КОС СЛАВКО
+КОС СТАНКО
+КОСАЋ ДАРИНКА
+КОСАНИЋ БРАНИСЛАВ
+КОСАНИЋ ИВАНКА
+КОСАНИЋ САВА
+КОСАНОВ АЛЕКСАНДАР
+КОСАНОВ КАТИЦА
+КОСАНОВ ВЛАДИМИР
+КОСАНОВИЋ АНЂЕЛКА
+КОСАНОВИЋ БОГДАН МР
+КОСАНОВИЋ БРАНКО
+КОСАНОВИЋ БРАНКО
+КОСАНОВИЋ ДАНЕ
+КОСАНОВИЋ ДРАГАН
+КОСАНОВИЋ ДУШАНКА
+КОСАНОВИЋ ДУШАН
+КОСАНОВИЋ ЈЕЛИЦА
+КОСАНОВИЋ ЈОВАН
+КОСАНОВИЋ КОСАНА
+КОСАНОВИЋ ЛАЗО
+КОСАНОВИЋ ЉУБИЦА
+КОСАНОВИЋ ЉУБОМИР ДР
+КОСАНОВИЋ-МАНДИЋ НЕНА
+КОСАНОВИЋ МАНЕ
+КОСАНОВИЋ МАРКО
+КОСАНОВИЋ МИЋО
+КОСАНОВИЋ МИЛАН
+КОСАНОВИЋ МИЛЕ
+КОСАНОВИЋ МИЛОРАД
+КОСАНОВИЋ МИРКО
+КОСАНОВИЋ МИТАР
+КОСАНОВИЋ МЛАДЕН
+КОСАНОВИЋ НАДА
+КОСАНОВИЋ ОЛГА
+КОСАНОВИЋ ПЕТАР
+КОСАНОВИЋ РАДОВАН
+КОСАНОВИЋ СЛАВКО
+КОСАНОВИЋ СТОЈАН
+КОСАНОВИЋ ВЕЛИМИР
+КОСАНОВИЋ ЗОРИЦА
+КОСАРЕНКО ПЕТАР
+КОСЕДНАР СТЈЕПАН
+КОСИЋ ЖАРКО
+КОСИЋ ЖАРКО
+КОСИЋ ЖИВОЈИН
+КОСИЋ БИЉАНА
+КОСИЋ БОЈАН
+КОСИЋ БОРКО
+КОСИЋ БРАНИСЛАВ
+КОСИЋ ГОРАН
+КОСИЋ ГОРДАНА
+КОСИЋ ИВАН
+КОСИЋ ЈЕЛИЦА
+КОСИЋ ЈОВИЦА
+КОСИЋ ЛУКА
+КОСИЋ МАРИЈА
+КОСИЋ МИЛОВАН
+КОСИЋ МИРКО ДИПЛ ИНГ
+КОСИЋ НЕДЕЉКО
+КОСИЋ РУЖА
+КОСИЋ СВЕТОЗАР
+КОСИЋ ТОМА
+КОСИЋ ЗОРИЦА
+КОСИНА МИЛИЦА
+КОСИРОВИЋ МАРИЈА
+КОСИРОВИЋ МИЛАН
+КОСИРОВИЋ ПАНТЕЛИЈА
+КОСЈЕР ДУШАН
+КОСЈЕРИНА МИЛЕНКО
+КОСКА АТМАНА
+КОСКА ХАТИЏЕ
+КОСКА ЈАСМИДИН
+КОСКА ЉЕРКА
+КОСКА МИЛЕНА
+КОСКА НАДЕЖДА
+КОСКА САФЕТ
+КОСКА САЛИ
+КОСМАЈАЦ ЂОРЂЕ
+КОСМАЈАЦ АНИЦА
+КОСО БОСИЉКА
+КОСО ФРАЊО
+КОСО МИХАЉ
+КОСО ОЛИВЕРА
+КОСО ПАЛ
+КОСОРУШ ЂУРА
+КОСОРУШ ЕТЕЛКА
+КОСОРУШ ПЕТЕР
+КОСОВАЦ ЧЕДА
+КОСОВАЦ ЖИВКО
+КОСОВАЦ АЛЕКСАНДАР ДР
+КОСОВАЦ БОЈАН
+КОСОВАЦ БОЈАН
+КОСОВАЦ ДАРКО
+КОСОВАЦ ДРАГАН
+КОСОВАЦ ДУШАН
+КОСОВАЦ ГЕОРГИЈЕ
+КОСОВАЦ ГОЈКО
+КОСОВАЦ ЈУЛИЈАНА
+КОСОВАЦ МИЛАН
+КОСОВАЦ МИЛАН
+КОСОВАЦ МИРКО
+КОСОВАЦ НИКОЛА
+КОСОВАЦ РАДИВОЈ
+КОСОВАЦ ЗДРАВКО
+КОСОВИЋ АНДРИЈА
+КОСОВИЋ АНКИЦА
+КОСОВИЋ МИЛОРАД
+КОСОВИЋ ОЛГА ПРОФЕСОР
+КОСОВИЋ РАДИСЛАВ
+КОСОВИЋ РАТКО
+КОСОВИЋ СВЕТИСЛАВ
+КОСОВРАСТИ АЏИ
+КОСТАДИНОСКИ БЛАГОЈЕ
+КОСТАДИНОВ РИСТА
+КОСТАДИНОВИЋ БРАНИСЛАВ
+КОСТАДИНОВИЋ ДРАГОЉУБ
+КОСТАДИНОВИЋ ЉИЉАНА
+КОСТАДИНОВИЋ ТИХОМИР
+КОСТАДИНОВИЋ ВЕРА
+КОСТАДИНОВИЋ ВЕРИЦА
+КОСТАДИНОВИЋ ВУКАН
+КОСТАДИНОВСКИ ДИМЧЕ
+КОСТЕЛНИК НЕСТОР
+КОСТЕЛНИК СИЛВЕСТЕР
+КОСТЕВСКИ ИВАН
+КОСТИЋ-ШОБОТ МИЛКА
+КОСТИЋ ЖАРКО
+КОСТИЋ ЖЕЉКО
+КОСТИЋ ЖИВОЈИН
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂОРЂЕ
+КОСТИЋ ЂУРЂИЦА
+КОСТИЋ АЦА
+КОСТИЋ АЛЕКСАНДАР
+КОСТИЋ АЛЕКСАНДАР
+КОСТИЋ АЛЕКСАНДАР
+КОСТИЋ АЛЕКСАНДРА
+КОСТИЋ АНА
+КОСТИЋ АНГЕЛИНА
+КОСТИЋ АНКИЦА
+КОСТИЋ БОЖИДАР
+КОСТИЋ БОЖИДАР
+КОСТИЋ БОГОЉУБ
+КОСТИЋ БРАНИМИР
+КОСТИЋ БРАНИСЛАВ
+КОСТИЋ БРАНИСЛАВ
+КОСТИЋ БРАНКО
+КОСТИЋ ДАНИЛО
+КОСТИЋ ДЕЈАН
+КОСТИЋ ДЕСАНКА
+КОСТИЋ ДРАГАН
+КОСТИЋ ДРАГА
+КОСТИЋ ДРАГА
+КОСТИЋ ДРАГИЦА
+КОСТИЋ ДРАГИЦА
+КОСТИЋ ДРАГИЦА
+КОСТИЋ ДРАГОЉУБ
+КОСТИЋ ДУШАН
+КОСТИЋ ДУШАН
+КОСТИЋ ДУШАН
+КОСТИЋ ЕЛЕОНОРА
+КОСТИЋ ГЕОРГИНА
+КОСТИЋ ГЛИША
+КОСТИЋ ГОЛУБ
+КОСТИЋ ГОРДАНА
+КОСТИЋ ГРАДИМИР
+КОСТИЋ ИВАН
+КОСТИЋ ИВАН
+КОСТИЋ ЈЕЛЕНА
+КОСТИЋ ЈЕЛИЦА
+КОСТИЋ ЈЕЛИЦА
+КОСТИЋ ЈОРДАНКА
+КОСТИЋ ЈОВАН
+КОСТИЋ ЈОВАН
+КОСТИЋ ЈОВАН
+КОСТИЋ ЈОВАН
+КОСТИЋ ЈОВАН
+КОСТИЋ КРСМАН
+КОСТИЋ КРСТА
+КОСТИЋ ЉИЉАНА
+КОСТИЋ ЉИЉАНА
+КОСТИЋ ЉУБИША
+КОСТИЋ ЉУБИЦА
+КОСТИЋ ЉУБИЦА
+КОСТИЋ ЉУБИЦА
+КОСТИЋ МАКСИМ
+КОСТИЋ МАРИЈА
+КОСТИЋ МАРКО
+КОСТИЋ МЕТОДИЈЕ
+КОСТИЋ МИХАЈЛО
+КОСТИЋ МИЛАН
+КОСТИЋ МИЛАН
+КОСТИЋ МИЛЕНА ДР
+КОСТИЋ МИЛЕНА
+КОСТИЋ МИЛЕВА
+КОСТИЋ МИЛИЦА
+КОСТИЋ МИЛОРАД
+КОСТИЋ МИЛОВАН
+КОСТИЋ МИЛУША
+КОСТИЋ МИРЈАНА
+КОСТИЋ МИРКО
+КОСТИЋ МОЈСЕ
+КОСТИЋ НАДА
+КОСТИЋ НАДА
+КОСТИЋ НИКОЛА
+КОСТИЋ НИКОЛА
+КОСТИЋ ОЛИВЕРА
+КОСТИЋ ПАВЛЕ
+КОСТИЋ ПЕТАР
+КОСТИЋ ПЕТАР
+КОСТИЋ ПЕТАР
+КОСТИЋ ПЕТАР
+КОСТИЋ ПЕТАР
+КОСТИЋ РАДОЈИЦА
+КОСТИЋ РАДОЈКО
+КОСТИЋ РАДОМИР
+КОСТИЋ РАДОСАВ
+КОСТИЋ РАТКО
+КОСТИЋ РУЖИЦА
+КОСТИЋ САВА
+КОСТИЋ САВА
+КОСТИЋ СЛАВИЦА
+КОСТИЋ СЛАВКА
+КОСТИЋ СЛОБОДАН
+КОСТИЋ СЛОБОДАН
+КОСТИЋ СЛОБОДАН
+КОСТИЋ СНЕЖАНА
+КОСТИЋ СПАСЕНКО
+КОСТИЋ СРЕТЕН
+КОСТИЋ СТАНА
+КОСТИЋ СТАНИМИР
+КОСТИЋ СТАНКО
+КОСТИЋ СТАЗА
+КОСТИЋ СТЕВАН
+КОСТИЋ СТОЈАДИН
+КОСТИЋ СТРАХИЊА ДР ПРОФ
+КОСТИЋ СВЕТИСЛАВ ДР
+КОСТИЋ СВЕТИСЛАВ
+КОСТИЋ СВЕТОЗАР
+КОСТИЋ ТИБЕРИЈЕ
+КОСТИЋ ТОМИСЛАВ
+КОСТИЋ ТОМИСЛАВ
+КОСТИЋ ТОМИСЛАВ
+КОСТИЋ ВАСО
+КОСТИЋ ВЕЛИМИР
+КОСТИЋ ВЕРА
+КОСТИЋ ВЛАДИСЛАВА
+КОСТИЋ ВЛАДИСЛАВ
+КОСТИЋ ВЛАСТИМИР
+КОСТИЋ ВОЈИСЛАВ
+КОСТИЋ ВУКАШИН
+КОСТИЋ ЗДРАВКО
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРАН
+КОСТИЋ ЗОРИЦА
+КОСТОВИЋ ЈЕЛИЦА
+КОСТОВИЋ РАТКО
+КОСТОВИЋ СНЕЖАНА
+КОСТОВСКИ КАТИЦА
+КОСТОВСКИ МИРОСЛАВ
+КОСТОВСКИ ТРАЈЧЕ
+КОСТРЕШ МОМЧИЛО
+КОСТРЕШЕВИЋ ГОРАН
+КОСТРЕШЕВИЋ МИЛАДИН
+КОСТРЕШЕВИЋ НЕДЕЉКО
+КОСТРЕШЕВИЋ СТАНКА
+КОСТРИЧЕНКО ВАСИЛИЈЕ
+КОСТУДИЈА МИРОСЛАВ
+КОТ ИЛОНА
+КОТ ЈОСИП
+КОТ ЛАДИСЛАВ
+КОТ ЛАСЛО
+КОТ МАРТА
+КОТ МИРА
+КОТ МИРКО
+КОТА ЕРЖЕБЕТ
+КОТА ЛАЈОШ
+КОТА МИХАЈЛО
+КОТАРЧЕВИЋ ЕЛВИРА
+КОТАРЧЕВИЋ НИКОЛА
+КОТАРАЦ КАТИЦА
+КОТАРАЦ КОСТА
+КОТАРАЦ СВЕТИСЛАВ
+КОТАРАНИН ЉИЉАНА
+КОТАРАНИН ПЕТАР
+КОТАРЛИЋ ДАРКО
+КОТАРЛИЋ ДРАГАНА
+КОТАРЛИЋ САВА
+КОТХАИ ИШТВАН
+КОТХАИ ЈОЖЕФ
+КОТХАИ СТЕВАН
+КОТХАЈ СТЕВАН
+КОТИЋ ВОЈИСЛАВ
+КОТЛАЈА МИЛАНКО
+КОТЛАЈА МИЛКО
+КОТЛАРИЋ МАРКО ДР
+КОТЛАРИЋ СТАНИМИР
+КОТРБА ФРАЊА
+КОТРЕ МАГДОЛНА
+КОТУШ ЕРЖЕБЕТ
+КОТУШ МИЛИЦА
+КОТУШ МИРОСЛАВ
+КОТУШ СТЕВАН
+КОТУЋ МАРИЈЕТА
+КОТУР АНЂЕЛКА
+КОТУР ДРАГАН
+КОТУР ЈЕЛА
+КОТУР РАДЕ
+КОТУРОВ НАДА
+КОТУРОВИЋ КАТИЦА
+КОУНИС ЉИЉАНА
+КОВЧЕ АМАЛИЈА
+КОВЧЕВ СПАСЕНКА
+КОВЧИН МИЛИЦА
+КОВЧИН МИЛОВАН
+КОВЧИН МИРОСЛАВ ДИПЛ ИНГ
+КОВЧИН НЕГА
+КОВЧИН СТАНИМИР ДР
+КОВАЧ ЧЕДО
+КОВАЧ ШАНДОР
+КОВАЧ ШАНДОР
+КОВАЧ ЂОРЂЕ
+КОВАЧ ЂОРЂЕ
+КОВАЧ ЂУЛА
+КОВАЧ ЂУРЂА
+КОВАЧ-АЧ КАРОЉ
+КОВАЧ АЛЕКСАНДАР
+КОВАЧ АЛЕКСАНДАР
+КОВАЧ АНА
+КОВАЧ АНА
+КОВАЧ АНДРАШ
+КОВАЧ АНТАЛ
+КОВАЧ АНТОН
+КОВАЧ АРПАД
+КОВАЧ АТИЛА
+КОВАЧ БЕЛА
+КОВАЧ БЕЛА
+КОВАЧ-БИРКАШ МИХАЉ
+КОВАЧ БОРИС
+КОВАЧ ДЕЖЕ
+КОВАЧ ДЕСАНКА
+КОВАЧ ДРАГИЦА МР
+КОВАЧ ДУШАН
+КОВАЧ ЕТЕЛКА
+КОВАЧ ЕТЕЛКА
+КОВАЧ ФЕРЕНЦ
+КОВАЧ ФЕРЕНЦ
+КОВАЧ ФРАЊА
+КОВАЧ ФРАЊА
+КОВАЧ ГАБОР
+КОВАЧ ГИЗЕЛА
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИШТВАН
+КОВАЧ ИЛОНА
+КОВАЧ ИМРЕ
+КОВАЧ ИМРЕ
+КОВАЧ ИМРЕ
+КОВАЧ ИРЕНА
+КОВАЧ ИРЕНА
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ИВАН
+КОВАЧ ЈАКОБ
+КОВАЧ ЈАНКО
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАНОШ
+КОВАЧ ЈАН
+КОВАЧ ЈАН
+КОВАЧ ЈЕЛИЦА
+КОВАЧ ЈЕЛИСАВЕТА
+КОВАЧ ЈОЖЕФ
+КОВАЧ ЈОЖЕФ
+КОВАЧ ЈОСИП
+КОВАЧ ЈОСИП
+КОВАЧ ЈОСИП
+КОВАЧ ЈОСИП
+КОВАЧ ЈОВАН
+КОВАЧ ЈОВАН
+КОВАЧ ЈОВАН
+КОВАЧ ЈУЛИАНА
+КОВАЧ ЈУЛИЈАНА
+КОВАЧ КАРЛО
+КОВАЧ КАРЛО
+КОВАЧ КАРОЉ
+КОВАЧ КАРОЉ
+КОВАЧ КАРОЉ
+КОВАЧ КАРОЛЈ
+КОВАЧ КАТАЛИН
+КОВАЧ КАТАРИНА
+КОВАЧ КАТИЦА
+КОВАЧ КАТИЦА
+КОВАЧ КАТИЦА
+КОВАЧ КАТИЦА
+КОВАЧ КАТИЦА
+КОВАЧ КОВИЉКА
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАДИСЛАВ
+КОВАЧ ЛАЈОШ
+КОВАЧ ЛАЈОШ
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЛАСЛО
+КОВАЧ ЉУБАН
+КОВАЧ ЉУДЕВИТ
+КОВАЧ МАЈА
+КОВАЧ МАРГИТА
+КОВАЧ МАРИЈА
+КОВАЧ МАРИЈА
+КОВАЧ МАРИЈА
+КОВАЧ МАРИЈА
+КОВАЧ МАРИЈА
+КОВАЧ МАРТИН
+КОВАЧ МАТИЈА
+КОВАЧ МИХАЈЛО
+КОВАЧ МИХАЈЛО
+КОВАЧ МИХАЉ
+КОВАЧ МИХАЉ
+КОВАЧ МИКЛОШ
+КОВАЧ МИКЛОШ
+КОВАЧ МИЛАДИН
+КОВАЧ МИЛАН
+КОВАЧ МИЛЕНА
+КОВАЧ МИЛОШ
+КОВАЧ МИЛОРАД
+КОВАЧ МИРЈАНА
+КОВАЧ МИРЈАНА
+КОВАЧ МИРЈАНА
+КОВАЧ МИРКО
+КОВАЧ МИРОН ДИПЛ ИНГ
+КОВАЧ МИРОСЛАВ
+КОВАЧ НАТАЛИЈА
+КОВАЧ НИКОЛА
+КОВАЧ НИКОЛА
+КОВАЧ ОЛГИЦА
+КОВАЧ ОЛГИЦА
+КОВАЧ ОТО
+КОВАЧ ПАВЕЛ
+КОВАЧ ПЕТАР
+КОВАЧ РИСТО ДИПЛ ИНГ
+КОВАЧ РОЖИ
+КОВАЧ РОЖИ
+КОВАЧ РОЗАЛИЈА
+КОВАЧ РОЗАЛИЈА
+КОВАЧ РУЖИЦА
+КОВАЧ СИЛВЕСТЕР
+КОВАЧ СМИЉА
+КОВАЧ СТАНОЈКА
+КОВАЧ СТЕВАН
+КОВАЧ СТЕВАН
+КОВАЧ СТЕВАН
+КОВАЧ СТЕВАН
+КОВАЧ СТЈЕПАН ДИПЛ ИНГ
+КОВАЧ СВЕТОЗАР
+КОВАЧ ТЕОДОР ДР ПРОФ
+КОВАЧ ТЕОДОР ДР
+КОВАЧ ТИБОР
+КОВАЧ ТИБОР
+КОВАЧ-ТИХМАЈЕР СТЕВАН
+КОВАЧ ТОМИСЛАВ
+КОВАЧ ТРПИМИР
+КОВАЧ ВАЛЕРИЈА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРА
+КОВАЧ ВЕРИЦА
+КОВАЧ ВЕРОНА
+КОВАЧ ВЕРОНА
+КОВАЧ ВИДА
+КОВАЧ ВЛАДИМИР
+КОВАЧ ВЛАДИМИР
+КОВАЧ ЗОРА
+КОВАЧ ЗВОНИМИР
+КОВАЧЕК БОЖИДАР ДР
+КОВАЧЕК ДАНИЦА
+КОВАЧЕК ЈЕЛЕНА
+КОВАЧЕВ ЂОРЂЕ
+КОВАЧЕВ АЛЕКСАНДАР
+КОВАЧЕВ БРАНКА
+КОВАЧЕВ БРАНКО
+КОВАЧЕВ БРАНКО
+КОВАЧЕВ ДАНЧЕ
+КОВАЧЕВ ДАНИЛКА
+КОВАЧЕВ ДИМИТРИЈЕ
+КОВАЧЕВ ДРАГИША
+КОВАЧЕВ ДРАГОСЛАВ
+КОВАЧЕВ ДРАГУТИН
+КОВАЧЕВ ДРАГУТИН
+КОВАЧЕВ ДУШАНКА
+КОВАЧЕВ ГОРАН
+КОВАЧЕВ ГОРДАНА
+КОВАЧЕВ ГОРДАНА
+КОВАЧЕВ ИЛИЈА
+КОВАЧЕВ ИВИЦА
+КОВАЧЕВ ЈЕЛА
+КОВАЧЕВ ЈЕЛЕНА
+КОВАЧЕВ ЈОВАН
+КОВАЧЕВ ЈУЛИЈАНА
+КОВАЧЕВ ЈУЛКА
+КОВАЧЕВ ЛАЗАР
+КОВАЧЕВ МАРИЈА
+КОВАЧЕВ МИЛАН
+КОВАЧЕВ МИЛАН
+КОВАЧЕВ МИЛЕНА
+КОВАЧЕВ МИЛИЦА
+КОВАЧЕВ МИЛОШ
+КОВАЧЕВ МИЛОРАД ДР ЛЕКАР
+КОВАЧЕВ МИЛУТИН
+КОВАЧЕВ МИРЈАНА
+КОВАЧЕВ МЛАДЕН
+КОВАЧЕВ НЕДЕЉКО
+КОВАЧЕВ НЕМАЊА
+КОВАЧЕВ ПЕТАР
+КОВАЧЕВ СТЕВАН
+КОВАЧЕВ СТЕВАН
+КОВАЧЕВ СТЕВАН
+КОВАЧЕВ СВЕТИСЛАВ
+КОВАЧЕВ СВЕТОЗАР
+КОВАЧЕВ ТЕОДОР ДР
+КОВАЧЕВ ТЕОДОР ДР
+КОВАЧЕВ ВЕРА
+КОВАЧЕВ ВЕРА
+КОВАЧЕВ ВЕСНА
+КОВАЧЕВИЋ ЧЕДА
+КОВАЧЕВИЋ ЖЕЛИМИР
+КОВАЧЕВИЋ ЖЕЉКО
+КОВАЧЕВИЋ ЖИВАН
+КОВАЧЕВИЋ ЖИВАН
+КОВАЧЕВИЋ ЂОРЂЕ ДИПЛ ИНГ
+КОВАЧЕВИЋ ЂОРЂЕ
+КОВАЧЕВИЋ ЂОРЂЕ
+КОВАЧЕВИЋ ЂОРЂЕ
+КОВАЧЕВИЋ ЂОРЂЕ
+КОВАЧЕВИЋ ЂУРЂИНА
+КОВАЧЕВИЋ ЂУРА
+КОВАЧЕВИЋ АГНЕШ
+КОВАЧЕВИЋ АЛЕКСАНДАР
+КОВАЧЕВИЋ АЛЕКСАНДАР
+КОВАЧЕВИЋ АЛЕКСАНДАР
+КОВАЧЕВИЋ АНЂЕЛИЈА
+КОВАЧЕВИЋ АНДРИЈА
+КОВАЧЕВИЋ АНЕТА
+КОВАЧЕВИЋ АНКИЦА
+КОВАЧЕВИЋ АРСА
+КОВАЧЕВИЋ БЛАГОЈЕ
+КОВАЧЕВИЋ БОШКО
+КОВАЧЕВИЋ БОШКО
+КОВАЧЕВИЋ БОШКО
+КОВАЧЕВИЋ БОЖИДАР
+КОВАЧЕВИЋ БОГДАН
+КОВАЧЕВИЋ БОГДАН
+КОВАЧЕВИЋ БОРИСЛАВА
+КОВАЧЕВИЋ БОРИСЛАВ
+КОВАЧЕВИЋ БОРИСЛАВ
+КОВАЧЕВИЋ БОРИВОЈЕ
+КОВАЧЕВИЋ БОРИВОЈ
+КОВАЧЕВИЋ БОРИВОЈ
+КОВАЧЕВИЋ БОРИВОЈ
+КОВАЧЕВИЋ БОРКА
+КОВАЧЕВИЋ БРАНИМИР
+КОВАЧЕВИЋ БРАНИСЛАВА ДИПЛ ИНГ
+КОВАЧЕВИЋ БРАНИСЛАВА
+КОВАЧЕВИЋ БРАНИСЛАВА
+КОВАЧЕВИЋ БРАНИСЛАВ
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БРАНКО
+КОВАЧЕВИЋ БУДИМИР
+КОВАЧЕВИЋ БУДИМИР
+КОВАЧЕВИЋ ДАМЈАН
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЦА
+КОВАЧЕВИЋ ДАНИЛО
+КОВАЧЕВИЋ ДАНКА
+КОВАЧЕВИЋ ДАВОРКА
+КОВАЧЕВИЋ ДЕСАНКА
+КОВАЧЕВИЋ ДИМИТРИЈЕ ДИПЛ ОЕЦ
+КОВАЧЕВИЋ ДРАГАН ДР
+КОВАЧЕВИЋ ДРАГАНА
+КОВАЧЕВИЋ ДРАГАН
+КОВАЧЕВИЋ ДРАГАН
+КОВАЧЕВИЋ ДРАГАН
+КОВАЧЕВИЋ ДРАГИЦА
+КОВАЧЕВИЋ ДРАГИЦА
+КОВАЧЕВИЋ ДРАГОЉУБ
+КОВАЧЕВИЋ ДРАГОЉУБ
+КОВАЧЕВИЋ ДРАГОЉУБ
+КОВАЧЕВИЋ ДРАГО
+КОВАЧЕВИЋ ДРАГО
+КОВАЧЕВИЋ ДРАГУТИН
+КОВАЧЕВИЋ ДРАГУТИН
+КОВАЧЕВИЋ ДРЕНА
+КОВАЧЕВИЋ ДУШАНКА
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШАН
+КОВАЧЕВИЋ ДУШИЦА
+КОВАЧЕВИЋ ДУШИЦА
+КОВАЧЕВИЋ ДУШКО
+КОВАЧЕВИЋ ДУШКО
+КОВАЧЕВИЋ ДУШКО
+КОВАЧЕВИЋ ФРАЊА
+КОВАЧЕВИЋ ГАВРИЛО
+КОВАЧЕВИЋ ГЛИГОРИЈЕ
+КОВАЧЕВИЋ ГОЈКО
+КОВАЧЕВИЋ ИШТВАН
+КОВАЧЕВИЋ ИГЊАТ
+КОВАЧЕВИЋ ИЛИЈА
+КОВАЧЕВИЋ ИЛИЈА
+КОВАЧЕВИЋ ИЛИЈА
+КОВАЧЕВИЋ ИСА
+КОВАЧЕВИЋ ИВАН
+КОВАЧЕВИЋ ЈАГОШ
+КОВАЧЕВИЋ ЈЕЛЕНА
+КОВАЧЕВИЋ ЈЕЛИЦА
+КОВАЧЕВИЋ ЈЕЛИЦА
+КОВАЧЕВИЋ ЈЕЛИСАВЕТА
+КОВАЧЕВИЋ ЈОРДАН
+КОВАЧЕВИЋ ЈОВАНКА
+КОВАЧЕВИЋ ЈОВАН
+КОВАЧЕВИЋ ЈОВАН
+КОВАЧЕВИЋ ЈОВАН
+КОВАЧЕВИЋ ЈОВИЦА
+КОВАЧЕВИЋ ЈОВО
+КОВАЧЕВИЋ КАТАРИНА
+КОВАЧЕВИЋ КАТА
+КОВАЧЕВИЋ КАТИЦА ДР
+КОВАЧЕВИЋ КАТИЦА
+КОВАЧЕВИЋ КАТИЦА
+КОВАЧЕВИЋ КЛАРА
+КОВАЧЕВИЋ КОЧА
+КОВАЧЕВИЋ КОЈА
+КОВАЧЕВИЋ КОСТА
+КОВАЧЕВИЋ КОСТА
+КОВАЧЕВИЋ КОВИЉКА
+КОВАЧЕВИЋ КРСТА
+КОВАЧЕВИЋ КРСТО
+КОВАЧЕВИЋ КСЕНИЈА
+КОВАЧЕВИЋ КСЕНИЈА
+КОВАЧЕВИЋ ЛАЗО
+КОВАЧЕВИЋ ЉИЉАНА
+КОВАЧЕВИЋ ЉИЉА
+КОВАЧЕВИЋ ЉУБИЦА
+КОВАЧЕВИЋ ЉУБО
+КОВАЧЕВИЋ МАРА
+КОВАЧЕВИЋ МАРА
+КОВАЧЕВИЋ МАРИЈА
+КОВАЧЕВИЋ МАРИЈА
+КОВАЧЕВИЋ МАРКО
+КОВАЧЕВИЋ МАРКО
+КОВАЧЕВИЋ МИХАЈЛО
+КОВАЧЕВИЋ МИХАЈЛО
+КОВАЧЕВИЋ МИЛАДИНКА
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛАН
+КОВАЧЕВИЋ МИЛЕНА
+КОВАЧЕВИЋ МИЛЕНА
+КОВАЧЕВИЋ МИЛЕ
+КОВАЧЕВИЋ МИЛИЦА
+КОВАЧЕВИЋ МИЛИЦА
+КОВАЧЕВИЋ МИЛИЦА
+КОВАЧЕВИЋ МИЛИЦА
+КОВАЧЕВИЋ МИЛИМИР
+КОВАЧЕВИЋ МИЛИВОЈ ДР
+КОВАЧЕВИЋ МИЉАН
+КОВАЧЕВИЋ МИЛКА
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОШ
+КОВАЧЕВИЋ МИЛОРАД
+КОВАЧЕВИЋ МИЛОРАД
+КОВАЧЕВИЋ МИЛОВАН
+КОВАЧЕВИЋ МИЛОВАН
+КОВАЧЕВИЋ МИОДРАГ
+КОВАЧЕВИЋ МИОДРАГ
+КОВАЧЕВИЋ МИРА
+КОВАЧЕВИЋ МИРА
+КОВАЧЕВИЋ МИРЈАНА
+КОВАЧЕВИЋ МИРЈАНА
+КОВАЧЕВИЋ МИРКО
+КОВАЧЕВИЋ МИРОСЛАВ
+КОВАЧЕВИЋ МИРОСЛАВ
+КОВАЧЕВИЋ МИРОСЛАВ
+КОВАЧЕВИЋ МИТАР
+КОВАЧЕВИЋ МИТА
+КОВАЧЕВИЋ-МЛАДЕНОВИЋ ОЛГА
+КОВАЧЕВИЋ МЛАДЕН
+КОВАЧЕВИЋ НАДА
+КОВАЧЕВИЋ НАДЕЖДА
+КОВАЧЕВИЋ НАТАЛИЈА
+КОВАЧЕВИЋ НЕБОЈША
+КОВАЧЕВИЋ НЕДЕЉКА
+КОВАЧЕВИЋ НЕДЕЉКО
+КОВАЧЕВИЋ НИКОЛА
+КОВАЧЕВИЋ НИКОЛА
+КОВАЧЕВИЋ НИКОЛА
+КОВАЧЕВИЋ ОЛГИЦА
+КОВАЧЕВИЋ ОЗРЕН
+КОВАЧЕВИЋ ПАВЛЕ
+КОВАЧЕВИЋ ПАВЛЕ
+КОВАЧЕВИЋ ПЕТАР
+КОВАЧЕВИЋ РАДЕНКО
+КОВАЧЕВИЋ РАДЕ
+КОВАЧЕВИЋ РАДИВОЈЕ
+КОВАЧЕВИЋ РАДИВОЈ
+КОВАЧЕВИЋ РАДИВОЈ
+КОВАЧЕВИЋ РАДМИЛА
+КОВАЧЕВИЋ РАДОЈКА
+КОВАЧЕВИЋ РАДОЈКО
+КОВАЧЕВИЋ РАДОМАН
+КОВАЧЕВИЋ РАДОСЛАВ
+КОВАЧЕВИЋ РАДОВАН
+КОВАЧЕВИЋ РАЈКО
+КОВАЧЕВИЋ РАЈКО
+КОВАЧЕВИЋ РАНКО
+КОВАЧЕВИЋ РЕЉА
+КОВАЧЕВИЋ РУЖИЦА
+КОВАЧЕВИЋ РУЖИЦА
+КОВАЧЕВИЋ САВА
+КОВАЧЕВИЋ САВА
+КОВАЧЕВИЋ САВА
+КОВАЧЕВИЋ САВКА
+КОВАЧЕВИЋ САВО
+КОВАЧЕВИЋ СЕКУЛА
+КОВАЧЕВИЋ СИМЕОН
+КОВАЧЕВИЋ СЛАЂАНА
+КОВАЧЕВИЋ СЛАВИЦА
+КОВАЧЕВИЋ СЛАВКО
+КОВАЧЕВИЋ СЛАВКО
+КОВАЧЕВИЋ СЛАВКО
+КОВАЧЕВИЋ СЛАВКО
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СЛОБОДАН
+КОВАЧЕВИЋ СПАСЕНИЈА
+КОВАЧЕВИЋ СРБИЈАНКА
+КОВАЧЕВИЋ СРЕТА
+КОВАЧЕВИЋ СРЕТЕН
+КОВАЧЕВИЋ СТАНА
+КОВАЧЕВИЋ СТАНКА
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВАН
+КОВАЧЕВИЋ СТЕВО
+КОВАЧЕВИЋ СТЕВО
+КОВАЧЕВИЋ СТЕВО
+КОВАЧЕВИЋ СВЕТЛАНА
+КОВАЧЕВИЋ СВЕТЛАНА
+КОВАЧЕВИЋ СВЕТЛАНА
+КОВАЧЕВИЋ СВЕТОЛИК
+КОВАЧЕВИЋ СВЕТОЗАР
+КОВАЧЕВИЋ СВЕТОЗАР
+КОВАЧЕВИЋ СВЕТОЗАР
+КОВАЧЕВИЋ ТЕРЕЗА
+КОВАЧЕВИЋ ТОДОР
+КОВАЧЕВИЋ ТОМИСЛАВ
+КОВАЧЕВИЋ ВАСА
+КОВАЧЕВИЋ ВЕЛИМИР
+КОВАЧЕВИЋ ВЕЛИМИР
+КОВАЧЕВИЋ ВЕРА
+КОВАЧЕВИЋ ВЕРА
+КОВАЧЕВИЋ ВЕРА
+КОВАЧЕВИЋ ВИДОСАВА
+КОВАЧЕВИЋ ВИДОСАВА
+КОВАЧЕВИЋ ВИДОСАВА
+КОВАЧЕВИЋ ВИДОСАВА
+КОВАЧЕВИЋ ВИНКО
+КОВАЧЕВИЋ ВЛАДИМИР
+КОВАЧЕВИЋ ВЛАДИМИР
+КОВАЧЕВИЋ ВЛАДИМИР
+КОВАЧЕВИЋ ВЛАДИСЛАВ
+КОВАЧЕВИЋ ВОЈИН
+КОВАЧЕВИЋ ВОЈИН
+КОВАЧЕВИЋ ВОЈИСЛАВ ДИПЛ ИНГ
+КОВАЧЕВИЋ ВУЈО
+КОВАЧЕВИЋ ВУКАШИН
+КОВАЧЕВИЋ ВУКАШИН
+КОВАЧЕВИЋ ЗДЕНКО
+КОВАЧЕВИЋ ЗДРАВКО
+КОВАЧЕВИЋ ЗОРАН ДР
+КОВАЧЕВИЋ ЗОРАН
+КОВАЧЕВИЋ ЗОРАН
+КОВАЧЕВИЋ ЗОРИЦА
+КОВАЧЕВИЋ ЗОРИЦА
+КОВАЧЕВИЋ ЗВОНИМИРКА
+КОВАЧИЋ ЖИВКО
+КОВАЧИЋ АНИЦА
+КОВАЧИЋ БОЖАНА
+КОВАЧИЋ БОРИВОЈ
+КОВАЧИЋ ДРАГАНА
+КОВАЧИЋ ДУШАНКА
+КОВАЧИЋ ДУШАН
+КОВАЧИЋ ЈОВАН
+КОВАЧИЋ ЈОВАН
+КОВАЧИЋ ЈОВАН
+КОВАЧИЋ ЉЕПОСАВА
+КОВАЧИЋ ЛУКА
+КОВАЧИЋ МИЛАН
+КОВАЧИЋ МИЛЕНКО
+КОВАЧИЋ МИРОСЛАВ
+КОВАЧИЋ МИРОСЛАВ
+КОВАЧИЋ НЕДЕЉКО
+КОВАЧИЋ НИКОЛА
+КОВАЧИЋ ПЕТАР
+КОВАЧИЋ РАДОСЛАВ
+КОВАЧИЋ СЛОБОДАН
+КОВАЧИЋ СТАНИСЛАВ
+КОВАЧИЋ ТАНАСИЈЕ
+КОВАЧИЋ ТОША
+КОВАЧИЋ ТОМИСЛАВ
+КОВАЧИЋ ВЕСНА
+КОВАЧИК МАРГИТА
+КОВАЧИК МАРИЈА
+КОВАЛЧИК ВЛАДИСЛАВ
+КОВАЛОВСКИ ТЕОДОР
+КОВАНОВИЋ ПЕТАР
+КОВАР ЈАЊА
+КОВАРЧИК АНДРИЈА
+КОВАРЧИК МАРИЈА
+КОВАРИК ВАЛЕРИЈА
+КОВЕИНДЛ ЈОСИП
+КОВЕЉ ТОМИСЛАВ
+КОВИЋ ДРАГИЦА
+КОВИЋ НАДА
+КОВИЋ СЛОБОДАН
+КОВИЈАНИЋ ВЛАДИМИР
+КОВИНЧИЋ БОЈАН
+КОВИНЧИЋ МИЛАН
+КОВИНЧИЋ НАДА
+КОВИНЧИЋ НАТАША
+КОВИНЧИЋ СЛОБОДАН ДИПЛ ИНГ
+КОВИНЧИЋ СТОЈАН
+КОВЈАНИЋ АЛЕКСАНДАР
+КОВЈАНИЋ ЈОВАН
+КОВЈАНИЋ МИЛОРАД
+КОВЈАНИЋ НАДА
+КОВЈАНИЋ НЕНАД
+КОВЈАНИЋ ПЕРА
+КОВЈАНИЋ САВА
+КОВЉАН ЂОРЂЕ
+КОВЉАН САВО
+КОВРЛИЈА ЈОВАН
+КОЗАК МАРИЈА
+КОЗАКИВ ИВАН
+КОЗАР РАДЕ
+КОЗАРЧИЋ ЈОВАНКА
+КОЗАРЧИЋ ЈОВАН
+КОЗАРЧИЋ ЈОВАН
+КОЗАРЧИЋ МАРКО
+КОЗАРЧИЋ МИЛАН
+КОЗАРАЦ МИЋО
+КОЗАРЕВ ЖАРКО
+КОЗАРЕВ ЖИВКО
+КОЗАРЕВ АЛЕКСАНДРА
+КОЗАРЕВ БОГОЉУБ
+КОЗАРЕВ ДАРИНКА
+КОЗАРЕВ ДИМИТРИЈЕ
+КОЗАРЕВ ДИМИТРИЈЕ
+КОЗАРЕВ ДРАГИЦА
+КОЗАРЕВ ГОСПАВА
+КОЗАРЕВ ЛАЗАР
+КОЗАРЕВ ЉУБИЦА
+КОЗАРЕВ МАРИЈА
+КОЗАРЕВ МИЛАН
+КОЗАРЕВ МИЛКА
+КОЗАРЕВ МЛАДЕН
+КОЗАРЕВ НЕДЕЉКО
+КОЗАРЕВ ПАВЛЕ
+КОЗАРЕВ ПЕТАР
+КОЗАРЕВ САВА
+КОЗАРЕВ САВА
+КОЗАРЕВ ТОДОР
+КОЗАРЕВИЋ РАДИНКА
+КОЗАРЕВИЋ ЗОРАН
+КОЗАРОВ ЂОРЂЕ
+КОЗАРОВ АНИЦА
+КОЗАРОВ ГАВРА
+КОЗАРОВ ИВАН
+КОЗАРОВ ЈОВАНКА
+КОЗАРОВ КАТИЦА
+КОЗАРОВ МИЛОШ
+КОЗАРОВ НАТАЛИЈА
+КОЗАРОВ ПАВЛЕ
+КОЗАРОВ ПАВЛЕ
+КОЗАРОВ СРБИСЛАВ
+КОЗАРОВ ТОМИСЛАВ
+КОЗАРСКИ ЖИВАН
+КОЗАРСКИ ЖИВКО
+КОЗАРСКИ ЛИДИЈА
+КОЗАРСКИ МАРИЈА
+КОЗАРСКИ МИРОСЛАВ
+КОЗАРСКИ-РАЈИЋ ВЕРИЦА
+КОЗАРСКИ СЛОБОДАН
+КОЗАРСКИ СОФИЈА
+КОЗАРСКИ СТЕВАН
+КОЗАРСКИ ТЕОДОРА
+КОЗАРСКИ ВАСИЛИЈЕ
+КОЗАРСКИ ВЕРА
+КОЗАРСКИ ВОЈИСЛАВ
+КОЗАРСКИ ВОЈИСЛАВ
+КОЗБАШИЋ СТЕВАН
+КОЗИЋ БОГДАН
+КОЗИЋ ПЕТАР
+КОЗИЋ РАТКО
+КОЗИЋ РОЖА
+КОЗИЋ САВА
+КОЗИЋ СТАНКО
+КОЗИЋ ВЕЉКО
+КОЗИНА ИВАН
+КОЗИНА МАРИЦА
+КОЗЛИК КАТАРИНА
+КОЗЛИК ЛАЈОШ
+КОЗЛИНА ДЕСАНКА
+КОЗЛИНА ДУШКО
+КОЗЛИНА ЈЕКА
+КОЗЛИНА МИЛЕ
+КОЗЛИНА ЗЛАТИЦА
+КОЗЛОВАЧКИ ЖИВКО
+КОЗЛОВАЧКИ ГОРДАНА
+КОЗЛОВАЧКИ ЉУБА
+КОЗЛОВАЧКИ САВА
+КОЗЛОВАЧКИ СОФИЈА
+КОЗЛОВАЧКИ ВЕСЕЛИН
+КОЗЛОВИЋ БОРИС
+КОЗЛОВИЋ САВА
+КОЗМА ШАНДОР
+КОЗМА ЕТЕЛ
+КОЗМА ФЕРЕНЦ
+КОЗМА ЈОЖЕФ
+КОЗМА ЈОСИП
+КОЗМИДИС-ПЕТРОВИЋ АНА
+КОЗОМАРА ЂОРЂЕ
+КОЗОМАРА ЈОВО
+КОЗОМАРА ЉУБИЦА
+КОЗОМАРА МАРИЈА
+КОЗОМАРА ЗОРАН
+КОЗОМАРИЋ МАРИЈА
+КОЗОМОРА БОЖИДАР
+КОЗОМОРА БРАНКО
+КОЗОМОРА ИЛИЈА
+КОЗОМОРА ЈОКА
+КОЗОМОРА ЈОВО
+КОЗОМОРА ЛАЗО
+КОЗОМОРА МИЛАН
+КОЗОМОРА МИЛЕ
+КОЗОМОРА МИЛОЈКО
+КОЗОМОРА МИРОСЛАВ
+КОЗОМОРА ПЕТАР
+КОЗОМОРА РАДОМИР
+КОЗОМОРА СРЂАН
+КОЗОМОРА ТАТЈАНА
+КОЗОМОРА ВАСИЛИЈЕ
+КОЗОМОРИЋ БРАНИСЛАВА ДР ЛЕКАР
+КОЗУНОВИЋ МИРОСЛАВ
+КРЧАДИНАЦ КОСТА
+КРЧАДИНАЦ НИКОЛА
+КРЧЕДИНАЦ МИОДРАГ
+КРЧЕДИНАЦ ТИМА
+КРЧЕЛИЋ АНДРИЈА
+КРЧМАР ЖЕЉКО
+КРЧМАР ЦВИЈО
+КРЧМАР ДРАГОМИР
+КРЧМАР ДУШКО
+КРЧМАР ЈОВАН
+КРЧМАР ЛЕПОСАВА
+КРЧМАР ЉУБИЦА
+КРЧМАР ЉУБИЦА
+КРЧМАР МИЛАН
+КРЧМАР МИЛАН
+КРЧМАР МИРКО
+КРЧМАР ПАНЕ
+КРЧМАР ВАСО
+КРЧМАР ВИНКО
+КРЧМАР ЗОРАН
+КРЧМАР ЗОРАН
+КРЧМАРИК ДАНИЛО
+КРЧМАРИК ПРЕДРАГ
+КРЧО БОЖИДАР
+КРЧО МИЛЕНКО
+КРЧО РАСИМ
+КРЧО РАСИМ
+КРШЕВ БОРИС
+КРШЕВ ИВАН
+КРШЕВ ЈУЛИЈАНА
+КРШЕВ ЈУЛКИЦА
+КРШИЋ ДАРА
+КРШИЋ ИГЊАТ
+КРШИЋ ЈЕЛА
+КРШИЋ ТОМО
+КРШИН ЈОВО
+КРШОВИЋ ЈЕЛЕНА
+КРШТЕНИЋ ДЕСАНКА
+КРЖА МИЛЕНКО
+КРЖИЋ СИМО
+КРЂИЋ СПОМЕНКА
+КРАЧЕНСКИ БОРИСЛАВ
+КРАЧЕВСКИ АПОСТОЛ
+КРАЧУН ИВАН
+КРАЧУН ТРАЈАН
+КРАЧУН ТРАЈАН
+КРАЧУНОВ ПЕТАР
+КРАЧУНОВ СТЕВАН
+КРАЧУНОВИЋ ЖИВОРАД
+КРАЧУНОВИЋ ВЕЉКО
+КРАЋАК БОШКО
+КРАГИЧЕК КЛАРА
+КРАГИЋ БИЉАНА
+КРАГИЋ БОРА
+КРАГИЋ ЉИЉАНА
+КРАГИЋ ЗОРАН
+КРАГОВИЋ МАРИНКО
+КРАГОВИЋ ВЛАДИМИР
+КРАГУЈЕВ ДУШАН
+КРАГУЈЕВИЋ МИЛОРАД ДР ЛЕКАР
+КРАГУЈЕВИЋ РАЈКО
+КРАГУЈЕВИЋ СТАНИСЛАВ ДР ЛЕКАР
+КРАГУЉ АЛЕКСАНДАР
+КРАГУЉ ДУШАНКА
+КРАГУЉ ЈЕЛА
+КРАГУЉ ЛАЗО
+КРАГУЉ САВКА
+КРАГУЉЕВИЋ ЗОРИЦА
+КРАЈЧЕВИЋ МИОДРАГ
+КРАЈЧИ ВЛАДИМИР
+КРАЈЧИНОВИЋ ЈОВАН ДР ЛЕКАР
+КРАЈШИЋ МИРКО
+КРАЈАЧЕВИЋ БОРИСЛАВ
+КРАЈАЧЕВИЋ ХИЛДА
+КРАЈАЧЕВИЋ МИРЈАНА
+КРАЈАЧЕВИЋ ТОМИСЛАВ
+КРАЈАЧЕВИЋ ЗОРАН
+КРАЈЦАР ВЛАДИМИР
+КРАЈЦЕР ЕУГЕН
+КРАЈЦЕР ИРЕНА
+КРАЈЦЕР ИВАН
+КРАЈЦЕР ПЕТАР
+КРАЈИШНИК ЖИВОРАД
+КРАЈИШНИК КРИСТИНА
+КРАЈИЋ АГИЦА
+КРАЈИНА АЛЕКСАНДАР
+КРАЈИНА ФИЛИП
+КРАЈИНОВИЋ БРАНКО
+КРАЈИНОВИЋ ЛАЗАР
+КРАЈИНОВИЋ МИЛАН
+КРАЈИНОВИЋ ПАВЛЕ
+КРАЈИНОВИЋ СИНИША
+КРАЈНИК ЖАРКО
+КРАЈНИК ЛАЗАР
+КРАЈНИКЕР НАНДОР
+КРАЈНОВ БОГДАН
+КРАЈНОВ БОГОЉУБ
+КРАЈНОВ ГОРАН
+КРАЈНОВИЋ ЂОРЂЕ
+КРАЈНОВИЋ ЂОРЂЕ
+КРАЈНОВИЋ ЂУРО
+КРАЈНОВИЋ БОШКО
+КРАЈНОВИЋ БОГДАН
+КРАЈНОВИЋ ЈАДРАНКА
+КРАЈНОВИЋ МИЛИЋ
+КРАЈНОВИЋ МИЛИЦА
+КРАЈНОВИЋ НИКОЛА
+КРАЈНОВИЋ ПЕТАР
+КРАЈНОВИЋ РАДЕ
+КРАЈНОВИЋ СЛАВИЦА
+КРАЈНОВИЋ ВЕРА
+КРАЈОВАН МИРЈАНА
+КРАЈОВАН МИРОСЛАВ
+КРАК МИША
+КРАКАНОВИЋ ДУШАН
+КРАКАНОВИЋ ВОЈИСЛАВ
+КРАЛИК МИРОСЛАВ
+КРАЛИК ОЛИНКА
+КРАЛИК ПАВЛЕ
+КРАЛИК СТЕВАН
+КРАЉ ВАЛЕНТИН
+КРАЉ ЗВОНИМИР
+КРАЉЕВАЧКИ БАРБАРА
+КРАЉЕВАЧКИ ИЛИЈА
+КРАЉЕВАЧКИ ЈОСИП
+КРАЉЕВИЋ БОСИЉКА
+КРАЉЕВИЋ ДУШАН
+КРАЉЕВИЋ МАРИЦА
+КРАЉЕВИЋ МИЛКА
+КРАЉЕВИЋ САВО
+КРАЉЕВИЋ ВЛАДИМИР ДР
+КРАЉИЋ ЈЕЛЕНА
+КРАЉИЋ ВЛАДА
+КРАЊЧЕВИЋ ГОРДАНА
+КРАЊЧЕВИЋ ЈОСИП
+КРАС ЈЕЛЕНА
+КРАСАВАЦ ЖИВОРАД
+КРАСАВАЦ МИЛКА
+КРАСАВАЦ МИЛОРАД
+КРАСАВАЦ МИЛОРАД
+КРАСАВАЦ РУЖИЦА
+КРАСИЋ БРАНИСЛАВ
+КРАСИЋ ДУШАН
+КРАСИЋ ГОЛУБ
+КРАСИЋ МИЛОЈЕ
+КРАСИЋ НИКОЛА
+КРАСИЋ СТЕВАН
+КРАСКО ЈАНКО
+КРАСНИЋ ИРИНА
+КРАСНИЋ ВЕРА
+КРАСНИК ВЛАТКО
+КРАСНИК ЗВОНКО
+КРАСОЈЕВИЋ КОНСТАНТИН
+КРАСОЈЕВИЋ ЗОРАН
+КРАСУЛА ТОМА
+КРАСУЉА ДУШАН
+КРАСУЉА СТЕВАН
+КРАУС АНА
+КРАУС ОТО
+КРАВЧЕНКО ПЕТАР
+КРАВАРУШИЋ ДРАГАН
+КРАВАРУШИЋ ИЛИЈА
+КРАВАРУШИЋ ТРИВУН
+КРАВАРУШИЋ ВИТОМИР
+КРАВИЋ ДУШАН
+КРАВИЋ МИЛАН
+КРАВИЋ ПЕТАР
+КРАВЉАНАЦ АЛЕКСАНДРА
+КРАВЉАНАЦ ИВАНКА
+КРБАЊЕВИЋ АЛЕКСАНДАР
+КРБАЊЕВИЋ МИЛАН
+КРБАЊЕВИЋ САША
+КРБАВАЦ ЈЕЛА
+КРЦИЋ БРАТИМИР
+КРЦУНОВИЋ БЛАГОЈЕ
+КРЏАЛИЋ ДРАГАН
+КРЏАЛИЋ СТЕВАН
+КРЏИЋ ВИДОЈЕ
+КРЕШО ЕМИР
+КРЕЦУЛ ЛИДИЈА
+КРЕЦУЉ МАРИЈА
+КРЕГ ЕДУАРД
+КРЕГ ВЛАДИМИР
+КРЕЈИЋ БОРИСЛАВ
+КРЕЈИЋ ЈОВАН
+КРЕЈИЋ МАРИНКО
+КРЕЈИЋ СТАНИСЛАВ
+КРЕЈИЋ СТАНИСЛАВ
+КРЕЈИЋ СТОЈА
+КРЕКИЋ БАРИША ДР
+КРЕКИЋ ЕНВЕР
+КРЕКИЋ ФРАЊА
+КРЕКИЋ МИЛЕНА
+КРЕКО ЉУБИЦА
+КРЕМЕНОВИЋ БОРИСЛАВ
+КРЕМЕНОВИЋ КЛАРА
+КРЕМЕНОВИЋ ЉУБА
+КРЕМЕНОВИЋ ЉУБА
+КРЕМЕНОВИЋ ЉУБА
+КРЕМЕНОВИЋ МИЛАНКА
+КРЕМЕНОВИЋ МИЛЕНА
+КРЕМЕНОВИЋ МИЛЕНКО
+КРЕМЕНОВИЋ МИЛОШ
+КРЕМЕНОВИЋ МИРКО
+КРЕМЕНОВИЋ НЕДЕЉКО
+КРЕМЕНОВИЋ ПЕТАР
+КРЕМЕНОВИЋ РАДОСЛАВ
+КРЕМЕНОВИЋ СИНИША
+КРЕМЕНОВИЋ СНЕЖАНА
+КРЕМЕНОВИЋ СТАНКО
+КРЕМЕНОВИЋ СТЕВО
+КРЕМЕНОВИЋ ВОЈИН
+КРЕМЕР ЕЛИЗАБЕТА
+КРЕМЕР ФРАЊА
+КРЕМЕР ЈОВАН
+КРЕМЕР КАТИЦА
+КРЕМЕР МАТИЈА
+КРЕМЕР ПАЈА
+КРЕМИЋ ДРАГАН
+КРЕМИЋ ЉУБОМИР
+КРЕМПАСКИ-АНДРИЋ ХИЛДА
+КРЕМПАСКИ ЕЛИЗАБЕТА
+КРЕСАНКО ЛАСЛО
+КРЕСАНКО МАРГИТА
+КРЕСАНКО МАРИЈА
+КРЕСИЋ ЈАЊА
+КРЕСИЋ МИЛЕНА
+КРЕСИЋ МИТАР
+КРЕСИЋ СЛАВКО
+КРЕСО ШАЋИР
+КРЕСОЈА ДУШКО
+КРЕСОЈА МАРИНКО
+КРЕСОЈЕВИЋ ДАМЈАН
+КРЕСОЈЕВИЋ ЈОВАНКА
+КРЕСОЈЕВИЋ ЈОВАН
+КРЕСОЈЕВИЋ СРБОСЛАВ
+КРЕСОЈЕВИЋ ВЕСНА
+КРЕСОЈЕВИЋ ЗДРАВКО
+КРЕСОВИЋ СЛАВКО
+КРЕСОВИЋ СЛОБОДАН
+КРЕСОВИЋ ВАСО
+КРЕСТА АРПАД
+КРЕСТА АТИЛА
+КРЕСТИЋ ДАФИНА
+КРЕСТИЋ НАДА
+КРЕСТИЋ СТЕВАН
+КРЕСТИЋ ВЛАДИМИР
+КРЕВЕШИЋ КАРЛО
+КРЕВЕШИЋ КАТА
+КРГА ГАВРА
+КРГА МАНЕ
+КРГА МАРА
+КРГА МИЛАН
+КРГА МИЛОШ
+КРГА ВАСА
+КРГИН МЛАДЕН
+КРГИН НАДА
+КРГИН НЕДЕЉКО
+КРГОВИЋ ДУШАНКА
+КРГОВИЋ ДУШАНКА
+КРГОВИЋ ЈОВО
+КРГОВИЋ МАЛИША
+КРГОВИЋ МАРИЈА
+КРГОВИЋ МИЋО
+КРГОВИЋ МИЛАН
+КРГОВИЋ МИЛОРАД ДР ЛЕКАР
+КРГОВИЋ МОМЧИЛО
+КРГОВИЋ РАТКО
+КРГОВИЋ СМИЉА
+КРГОВИЋ СНЕЖАНА
+КРГОВИЋ СВЕТОЗАР
+КРГОВИЋ ВЛАДА
+КРГОВИЋ ВУКОМАН ДИПЛ ИНГ
+КРГОВИЋ ЗОРИЦА
+КРИШ ПЕТАР
+КРИШАН БОСИЉКА
+КРИШАН ДРАГОЈЛО
+КРИШАН МАТИЈА
+КРИШАН МИЛОШ
+КРИШАН ВУКИЦА
+КРИШАН ЗДРАВКО
+КРИШАНОВ ЈОВАН
+КРИШАНОВИЋ ДРАГОМИР
+КРИШТО ЈУЛИЈАНА
+КРИЖ ЈАНКО
+КРИЖ ПАВЕЛ
+КРИЖАК АНА
+КРИЖАН ШАНДОР
+КРИЖАН ЂУРА
+КРИЖАН АНИЦА
+КРИЖАН ЕДУАРД
+КРИЖАН ЈАНОШ
+КРИЖАН ЈУЛА
+КРИЖАН ЛАСЛО
+КРИЖАН МАРИЈА
+КРИЖАН МАТИЈА
+КРИЖАН МИКЛОШ
+КРИЖАН РОЖА
+КРИЖАНИЋ ЈОВАН
+КРИЖАНИЋ ЈОВАН
+КРИЖАНИЋ МИЛЕНКО
+КРИЖАНИЋ СЛАЂАНА
+КРИЖАНИЋ ВЛАДИМИР
+КРИЖАНОВИЋ ЖУЖАНА
+КРИЖНАР БОЈАН
+КРИЖНАР МАРА
+КРИЖНАР МИРКО ДР ДИПЛ ИНГ
+КРИЖНАР ТОМА ДИПЛ ИНГ
+КРИМШАМХАЛОВ ЗАИДА
+КРИНКОВСКИ АЛЕКСАНДАР
+КРИНКОВСКИ АЛЕКСАНДАР
+КРИНКОВСКИ ВЕРОНИКА
+КРИСТИЋ МАРИЈА
+КРИСТИЋ НАДА
+КРИСТИАН ЈОЖЕФ
+КРИСТОВИЋ МИРОСЛАВА
+КРИСТОВИЋ РУДОЛФ
+КРИВАК АНА
+КРИВАК МИРОСЛАВ
+КРИВИЋ ДРАГАНА
+КРИВИЋ ЉИЉАНА
+КРИВИЋ НИКОЛА
+КРИВОШИЈА ЖИВКО
+КРИВОШИЈА ФРАЊО
+КРИВОШИЈА МИЛЕ
+КРИВОКАПИЋ АМАЛИЈА
+КРИВОКАПИЋ ДАНИЦА
+КРИВОКАПИЋ МАРТИН
+КРИВОКАПИЋ НЕДЕЉКО
+КРИВОКАПИЋ НЕВЕНКА ДИПЛ ЕЦЦ
+КРИВОКАПИЋ РАДОСЛАВ
+КРИВОКАПИЋ СЛОБОДАН
+КРИВОКАПИЋ СЛОБОДАН
+КРИВОКАПИЋ СТЕВАН
+КРИВОКАПИЋ ВЛАДИМИР
+КРИВОКУЋА ЂОРЂЕ
+КРИВОКУЋА ДЕЈАН ДИПЛ ИНГ
+КРИВОКУЋА ДИМИТРИЈЕ
+КРИВОКУЋА ДРАГИЦА
+КРИВОКУЋА ДРАГОМИР
+КРИВОКУЋА ДРАГОМИР
+КРИВОКУЋА ДУШАН
+КРИВОКУЋА ЈЕЛИСАВЕТА
+КРИВОКУЋА ЈОВАН
+КРИВОКУЋА ЈУЛИЈАНА
+КРИВОКУЋА МИЛАН
+КРИВОКУЋА МИЛИЦА
+КРИВОКУЋА МИЛКА
+КРИВОКУЋА МИОДРАГ
+КРИВОКУЋА ПЕТАР
+КРИВОКУЋА РАДОСЛАВ
+КРИВОКУЋА РАДОВАН
+КРИЗБАИ ЗОЛТАН
+КРКЕЛИЋ СЛОБОДАН
+КРКЕЉЕШ БОРИС
+КРКЕЉИЋ МОМЧИЛО
+КРКЕЉИЋ СВЕТИСЛАВ
+КРКИЋ МИЛОВАН
+КРКЛЕЦ ЈОСИП
+КРКЛЕЦ ВЕРА
+КРКЛЕЦ ВЛАДИМИР
+КРКЉЕШ ЂУРО
+КРКЉЕШ БОРА
+КРКЉЕШ МИЛЕ ДР
+КРКЉИЋ ЂУРО
+КРКЉИЋ ДРАГАН
+КРКЉИЋ МИЛАН
+КРКЉИЋ МИЛОВАН
+КРКЉИЋ НИКОЛА
+КРКЉИЋ ОСТОЈА
+КРКЉУШ БОШКО
+КРКЉУШ БРАНКО
+КРКЉУШ ДРАГАНА
+КРКЉУШ ДУШАНКА
+КРКЉУШ ДУШАН
+КРКЉУШ ЈЕЛЕНА
+КРКЉУШ ЈЕЛИЦА
+КРКЉУШ КРИСТИНА
+КРКЉУШ ЉУБИНКА
+КРКЉУШ ЉУБОМИРКА ДР
+КРКЉУШ МИЛАН
+КРКЉУШ МИЛАН
+КРКЉУШ МИЛИЦА
+КРКЉУШ МИЛОРАД
+КРКЉУШ МИРОСЛАВ
+КРКЉУШ МОМЧИЛО
+КРКЉУШ ПЕТАР
+КРКЉУШ ПЕТАР
+КРКЉУШ РАДЕ
+КРКЉУШ СЛАВКО
+КРКЉУШ СЛОБОДАН
+КРКЉУШ СТЕВАН
+КРКЉУШ ВЕРИЦА
+КРКОБАБИЋ ИЛИЈА
+КРКОБАБИЋ ВЕРИЦА
+КРКОВИЋ-ЈУПЕК ДУШАНКА
+КРМАР ДУШАН
+КРМАР ЈАСНА
+КРМАР МАРКО
+КРМАР ЗОРА
+КРМПОТ ГОЈКО
+КРМПОТ ЛАЗАР
+КРМПОТИЋ АНЂЕЛКА
+КРМПОТИЋ ВОЈИСЛАВ ДИПЛ ПРАВНИК
+КРМПОТИЋ ВУКИЦА
+КРНЧЕВИЋ АНЂЕЛКА
+КРНАЈАЦ ЖИВАН
+КРНАЈАЦ ИВАН
+КРНАЈАЦ МОМЧИЛО
+КРНАЈАЦ НЕВЕНКА
+КРНАЈАЦ ПЕТАР
+КРНАЈАЦ РАДОВАН
+КРНАЈАЦ ЗЛАТИЦА
+КРНАЈСКИ МИЛОРАД
+КРНДИЈА БОГОЉУБ
+КРНДИЈА БРАНКО
+КРНДИЈА МАРКО
+КРНДИЈА МИЛОВАН
+КРНДИЈА НЕНАД
+КРНДИЈА ПЕТАР
+КРНДИЈА СТАНА
+КРНДИЈА СТЕВО
+КРНДИЈА ВОЈИН
+КРНЕТА БОГДАН
+КРНЕТА ЈЕЛКА
+КРНЕТА МИЛОРАД
+КРНЕТА МИЛОСАВА
+КРНЕТА НИКОЛА
+КРНЕТА РАДЕ
+КРНЕТА СЛОБОДАН
+КРНЕТА СТЕВАН
+КРНЕТИЋ ГОЈКО
+КРНЕТИЋ ЈОВАН
+КРНИЋ АНА
+КРНИЋ ПЕРА
+КРНИЋ РАДОЈКА
+КРНИЋ СТЕВАН
+КРНИЋ СТИПО
+КРНИЈА МАРИНКО
+КРЊАИЋ ДРАГО
+КРЊАИЋ ГОРАН
+КРЊАИЋ ЈЕЛИСАВЕТА
+КРЊАЈИЋ ДУШАНКА
+КРЊАЈИЋ ИЛИЈА
+КРЊАЈИЋ ИВИЦА
+КРЊАЈИЋ ЈОВАН
+КРЊАЈИЋ МИЛОШ
+КРЊАЈИЋ МИРОСЛАВ
+КРЊАЈИЋ РАДОМИР
+КРЊЕШЕВАЦ САВА
+КРЊЕТА ЛЕПОСАВА
+КРЊЕТА НОВАК
+КРЊЕТИН ЖИВКО
+КРЊЕТИН БРАНКО
+КРЊЕТИН ДРАГАН
+КРЊЕТИН ЈОВАН
+КРЊЕТИН КАТИЦА
+КРЊЕТИН МАЈА
+КРЊЕТИН МИКА
+КРЊЕТИН САВА
+КРЊИЋ ИВАН
+КРЊУЛАЦ ДУШАН
+КРНОЈЕЛАЦ ДАНИЛО
+КРОШЛАК СТЕВАН
+КРОМБХОЛЦ ЕМИЛ
+КРОМХОЛЦ КАРЛО
+КРОМПИЋ ЉИЉАНА ПРОФЕСОР
+КРОМПИЋ ЉУБИЦА
+КРОМПИЋ МИЛАН
+КРОМПИЋ СТАНКО
+КРОНАВЕТЕР АЛФРЕД
+КРОНИЋ ЛАЗАР
+КРОНИЋ МИЛЕНКО
+КРОЊА ИВАН
+КРОЊА ИВАН
+КРОЊА МИЛАНКА
+КРОПШ ХИЛДА
+КРОПАЧЕК ИВАН
+КРОПФ АНЂЕЛКА
+КРОПФ ФРАЊА
+КРПАН ЖЕЉКО
+КРПАН ИВАН
+КРПАН ЉИЉАНА
+КРПАН МИРКО
+КРПАН СТЕВАН
+КРСМАНОВИЋ БОЖИДАРКА
+КРСМАНОВИЋ БОГДАНКА
+КРСМАНОВИЋ БРАНКО
+КРСМАНОВИЋ ЦВИЈАН
+КРСМАНОВИЋ ЈОВАН
+КРСМАНОВИЋ КРСМАН ДИПЛ ИНГ
+КРСМАНОВИЋ ЛАЗАР
+КРСМАНОВИЋ ЉИЉАНА
+КРСМАНОВИЋ МИЛОШ
+КРСМАНОВИЋ МОМЧИЛО
+КРСМАНОВИЋ ОБРЕН
+КРСМАНОВИЋ САША
+КРСМАНОВИЋ СЛАВОЈКА
+КРСМАНОВИЋ СРЕТЕН
+КРСМАНОВИЋ ВАСА
+КРСНИК ЈОН
+КРСНИК МАРИЈА
+КРСТАЈИЋ МИЛОЈИЦА
+КРСТАЈИЋ ПЕРКО
+КРСТАНОВИЋ ЦВИЈО
+КРСТАНОВИЋ ДРАГОМИР
+КРСТАНОВИЋ ФРАЊА
+КРСТАНОВИЋ ИВАНКА
+КРСТАНОВИЋ КОСТА
+КРСТАНОВИЋ МОМЧИЛО
+КРСТАНОВИЋ ПЕТАР
+КРСТЕКАНИЋ ЧЕДОМИР
+КРСТЕКАНИЋ АНА
+КРСТЕКАНИЋ КРИСТИНА
+КРСТЕКАНИЋ РАТОМИР
+КРСТЕВСКИ ДРАГОСЛАВ
+КРСТЕВСКИ СТАНИСЛАВ
+КРСТИЋ-ШТИМАЦ СПАСЕНИЈА ДР
+КРСТИЋ ЖАРКО
+КРСТИЋ ЖИВАН
+КРСТИЋ ЖИВКО
+КРСТИЋ ЖИВКО
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ ЂОРЂЕ
+КРСТИЋ-ЂУРЧЈАНСКИ РУЖЕНКА
+КРСТИЋ АЛЕКСАНДАР ДР
+КРСТИЋ АЛЕКСАНДАР
+КРСТИЋ АЛЕКСАНДАР
+КРСТИЋ АЛЕКСАНДАР
+КРСТИЋ АНДРИЈА
+КРСТИЋ АНИЦА
+КРСТИЋ БОШКО
+КРСТИЋ БОЖИДАР
+КРСТИЋ БОЖИДАР
+КРСТИЋ БОЖИДАР
+КРСТИЋ БОГДАН
+КРСТИЋ БОРИВОЈ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНИСЛАВ
+КРСТИЋ БРАНКА
+КРСТИЋ БРАНКА
+КРСТИЋ БРАНКО
+КРСТИЋ ДАНИЦА
+КРСТИЋ ДЕСАНКА
+КРСТИЋ ДИМИТРИЈЕ
+КРСТИЋ ДОБРИЛА
+КРСТИЋ ДОБРИЛА
+КРСТИЋ ДОБРИНКА
+КРСТИЋ ДОБРОСЛАВ
+КРСТИЋ ДРАГАН
+КРСТИЋ ДРАГИЊА
+КРСТИЋ ДРАГОЉУБ
+КРСТИЋ ДРАГОСЛАВ
+КРСТИЋ ДРАГУТИН
+КРСТИЋ ДУШАН ДИПЛ ИНГ
+КРСТИЋ ДУШАН
+КРСТИЋ ДУШКО
+КРСТИЋ ЕТЕЛКА
+КРСТИЋ ЕВИЦА
+КРСТИЋ ГАВРА
+КРСТИЋ-ГУНЕК МАРИЈА
+КРСТИЋ ИЛИЈА
+КРСТИЋ ИВАН ДР
+КРСТИЋ ЈЕЛЕНА
+КРСТИЋ ЈЕЛЕНА
+КРСТИЋ ЈОРДАН
+КРСТИЋ ЈОВАН
+КРСТИЋ ЈОВАН
+КРСТИЋ ЈОВАН
+КРСТИЋ КАМЕНКО
+КРСТИЋ КАМЕНКО
+КРСТИЋ КАТИЦА
+КРСТИЋ КАТИЦА
+КРСТИЋ КАТИЦА
+КРСТИЋ КОРНЕЛИЈА
+КРСТИЋ ЛАЗАР
+КРСТИЋ ЛАЗАР
+КРСТИЋ ЉИЉАНА
+КРСТИЋ ЉИЉАНА
+КРСТИЋ ЉУБИША
+КРСТИЋ ЉУБИША
+КРСТИЋ ЉУБИЦА
+КРСТИЋ ЉУБИНКА
+КРСТИЋ ЉУБИСАВ
+КРСТИЋ ЉУБОМИР
+КРСТИЋ ЉУБОМИР
+КРСТИЋ ЉУБОМИР
+КРСТИЋ ЉУБОМИР
+КРСТИЋ ЉУБОМИР
+КРСТИЋ МАРИЈА
+КРСТИЋ МАРИЈА
+КРСТИЋ МАРИЈА
+КРСТИЋ МАРКО
+КРСТИЋ МИЛАДИН
+КРСТИЋ МИЛАН
+КРСТИЋ МИЛАН
+КРСТИЋ МИЛАН
+КРСТИЋ МИЛЕНКО
+КРСТИЋ МИЛЕНКО
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛИЦА
+КРСТИЋ МИЛОШ
+КРСТИЋ МИЛОШ
+КРСТИЋ МИЛОЈКО
+КРСТИЋ МИЛОРАД
+КРСТИЋ МИЛОРАД
+КРСТИЋ МИЛОРАД
+КРСТИЋ МИЛОРАД
+КРСТИЋ МИЛОВАН
+КРСТИЋ МИЛОВАН
+КРСТИЋ МИЛОВАН
+КРСТИЋ МИНЧЕ ДИПЛ ИНГ
+КРСТИЋ МИОДРАГ
+КРСТИЋ МИОДРАГ
+КРСТИЋ МИОДРАГ
+КРСТИЋ МИРКО
+КРСТИЋ МИРКО
+КРСТИЋ МИРОЉУБ
+КРСТИЋ МИРОЉУБ
+КРСТИЋ МИРОСЛАВА
+КРСТИЋ МИРОСЛАВА
+КРСТИЋ МИРОСЛАВ
+КРСТИЋ МИТАР
+КРСТИЋ НАДА
+КРСТИЋ НЕБОЈША
+КРСТИЋ НЕНАД
+КРСТИЋ НЕНАД
+КРСТИЋ НИКОЛА
+КРСТИЋ НИКОЛА
+КРСТИЋ НИКОЛА
+КРСТИЋ НОВАК
+КРСТИЋ НОВАК
+КРСТИЋ ПЕТАР ДИПЛ ИНГ
+КРСТИЋ ПЕТАР
+КРСТИЋ ПЕТАР
+КРСТИЋ ПЕТАР
+КРСТИЋ ПЕТАР
+КРСТИЋ ПЕТРУН
+КРСТИЋ РАДИСАВ
+КРСТИЋ РАДИВОЈ
+КРСТИЋ РАДИВОЈ
+КРСТИЋ РАДОЈЕ
+КРСТИЋ РАДОМИР
+КРСТИЋ РАДОМИР
+КРСТИЋ РАДОСАВ
+КРСТИЋ РАДОСЛАВ
+КРСТИЋ РАДОВАН
+КРСТИЋ РАТКО
+КРСТИЋ РАТКО
+КРСТИЋ САВА
+КРСТИЋ САВЕТА
+КРСТИЋ СИНИША
+КРСТИЋ СЛАВИЦА
+КРСТИЋ СЛОБОДАН
+КРСТИЋ СРЂАН
+КРСТИЋ СРЕТЕН
+КРСТИЋ СТАНКО
+КРСТИЋ СТАНОЈЕ
+КРСТИЋ СТЕВАН
+КРСТИЋ СТЕВАН
+КРСТИЋ СТЕВАН
+КРСТИЋ СТЕВАН
+КРСТИЋ СТЕВАН
+КРСТИЋ СТОЈАНКА
+КРСТИЋ СВЕТИСЛАВ
+КРСТИЋ СВЕТИСЛАВ
+КРСТИЋ СВЕТЛАНА
+КРСТИЋ СВЕТЛАНА
+КРСТИЋ СВЕТОЗАР
+КРСТИЋ ТИНКА
+КРСТИЋ УГЉЕША ДР
+КРСТИЋ ВАСА ДР ЛЕКАР
+КРСТИЋ ВАСА
+КРСТИЋ ВАСИЛИЈЕ ДИПЛ ИНГ
+КРСТИЋ ВАСИЛИЈЕ
+КРСТИЋ ВЕЛИМИР
+КРСТИЋ ВЕЉКО
+КРСТИЋ ВЕРА
+КРСТИЋ ВЕРА
+КРСТИЋ ВЕСЕЛИН
+КРСТИЋ ВЛАДА
+КРСТИЋ ВОЈИН
+КРСТИЋ-ВРЖИНА БОСАНКА
+КРСТИЋ ВУКИЦА
+КРСТИЋ ЗОРАН
+КРСТИЋ ЗОРАН
+КРСТИН ЖИВКА
+КРСТИН БРАНКО
+КРСТИН ИВАН
+КРСТИН ЈЕЛКА
+КРСТИН КОСТА
+КРСТИН ЛАЗАР
+КРСТИН МЛАДЕН
+КРСТИН НАТАША
+КРСТИН ПЕТАР
+КРСТИН СЛАВКО
+КРСТИН СТЕВАН
+КРСТИН СВЕТОЗАР
+КРСТИН ВЕРА
+КРСТИН ВЛАДАН
+КРСТИН ЗОРАН
+КРСТИНИЋ ДРАГАН
+КРСТОНОШИЋ ЖИВАН
+КРСТОНОШИЋ БОСИЉКА
+КРСТОНОШИЋ ЈЕЛЕНА
+КРСТОНОШИЋ ЈОВАН
+КРСТОНОШИЋ ЉУБИЦА
+КРСТОНОШИЋ МИЛАНКА
+КРСТОНОШИЋ МИЛЕНКО
+КРСТОНОШИЋ МИЛЕНКО
+КРСТОНОШИЋ МИРОСЛАВ
+КРСТОНОШИЋ НАДА
+КРСТОНОШИЋ НЕСТОР
+КРСТОНОШИЋ ПЕТАР
+КРСТОНОШИЋ ПЕТАР
+КРСТОНОШИЋ СТЕВАН
+КРСТОНОШИЋ ВЕРА
+КРСТОНОШИЋ ВИДА
+КРСТОНОШИЋ ЗЛАТА ДР
+КРСТОНОШИЋ ЗОРА
+КРСТОВСКИ РАДОЈКА
+КРТЕНИЋ БРАНКО
+КРТЕНИЋ ДОБРИЛА
+КРТЕНИЋ ПАВЛЕ
+КРТИНИЋ БОРА
+КРТИНИЋ ДАНЕ
+КРТИНИЋ ДАНЕ
+КРТИНИЋ МИРЈАНА
+КРТИНИЋ МИРКО
+КРТИНИЋ МИРОСЛАВ
+КРТИНИЋ НАДА
+КРТИНИЋ САВА
+КРТИНИЋ СМИЉАНА
+КРТИНИЋ ВЛАДИМИР
+КРУЧИЧАН МИЛАН
+КРУШКА ЂОРЂЕ
+КРУШКА СТЕВАН
+КРУЖЕВИЋ ДЕЈАН
+КРУЖЕВИЋ НЕНАД
+КРУЖЕВИЋ ВЛАДИМИР
+КРУЖЕВИЋ ЗДРАВКО
+КРУЖЕВИЋ ЗОРАН
+КРУЖИЋ АНА
+КРУЉ БРАНИСЛАВА
+КРУЉ МИЛАН
+КРУНИЋ ЖИВАН
+КРУНИЋ ЖИВОРАД
+КРУНИЋ ЂОРЂЕ
+КРУНИЋ ЂОРЂЕ
+КРУНИЋ ЂОРЂЕ
+КРУНИЋ-БЕЛИЋ МИЛАНА
+КРУНИЋ БРАНКО
+КРУНИЋ БРАНКО
+КРУНИЋ БРАНКО
+КРУНИЋ ДАРА
+КРУНИЋ ДРАГОЉУБ
+КРУНИЋ ДРАГОМИР
+КРУНИЋ ГРАДИМИР
+КРУНИЋ ИЛИЈА
+КРУНИЋ ИЛОНКА
+КРУНИЋ ЈЕЛЕНА
+КРУНИЋ ЉУБИША
+КРУНИЋ ЉУБИЦА
+КРУНИЋ ЉУБОМИР
+КРУНИЋ МИЋО
+КРУНИЋ МИКА
+КРУНИЋ МИЛАНКА
+КРУНИЋ МИЛАН
+КРУНИЋ МИЛОШ
+КРУНИЋ НОВАК
+КРУНИЋ ПАВЛЕ
+КРУНИЋ ПЕРИША
+КРУНИЋ ПЛЕМЕНКА
+КРУНИЋ РАДОЈКА
+КРУНИЋ СЛОБОДАН
+КРУНИЋ СОФИЈА
+КРУНИЋ ТОШИЦА
+КРУНИЋ УРОШ
+КРУНИЋ ВЕЛИЧКО
+КРУНИЋ ВЕРИЦА
+КРУНИЋ ЗДРАВКО
+КРУПЕЖЕВИЋ ДАРИНКА
+КРУПЕЖЕВИЋ ПРВОСЛАВ
+КРУПЉАНИН СТАНА
+КРУПЉАНИН ВЕСЕЛА
+КРУТА БОЖАНА
+КРУТА ДРАГАН
+КРВАВАЦ БИСЕРКА
+КРВАВИЦА ДРАЖЕН
+КРВАВИЦА ТОМИСЛАВ
+КРВОПИЋ ОЛГА
+КРЗМАНОВИЋ МАРГАРЕТА
+КРЗНАРИЋ МИЛЕ
+КРЗНАРИЋ ВАЛЕНТИНА
+КУЧ СЛОБОДАН
+КУЧЕРА АЛЕКСАНДАР
+КУЧЕРА СТЕВАН
+КУЧИЋ НИКОЛА
+КУЧМАШ ИРЕНА
+КУЧМАШ НАТАША
+КУЧМАШ НИКОЛА
+КУЧНЕР ЛАДИСЛАВ
+КУШАКОВИЋ СМИЉА
+КУШЛИЋ МИЛАН
+КУШЉАН СЛАВКО
+КУШЉИЋ БОРИСЛАВ
+КУШЉИЋ БОРИСЛАВ
+КУШЉИЋ БОРИС
+КУЋ СТАНКА
+КУЖАТКО АНИЦА
+КУЖАТКО ЕМИЛ
+КУЖАТКО МАРТА
+КУЖАТКО ВЛАДИМИР
+КУЖЕЛКА СИМА
+КУЖЕТИН БОЖА
+КУЖЕТИН ЈЕЛИСАВЕТА
+КУЖЕТИН МАРА
+КУЖЕТИН МИЛАН
+КУЖЕТИН НОВАК
+КУЖЕВСКИ МИЛИВОЈЕ
+КУЖИЋ ДРАГУТИН
+КУЖИЋ МЛАДЕН
+КУЖИЋ МЛАДЕН
+КУЖИЋ ПЕТАР
+КУБАЊИ АНА
+КУБАНОВИ ЗЛАТКО
+КУБАТ МИЛАН ДИПЛ ИНГ
+КУБАТ УРОШ
+КУБАТОВИЋ АНА
+КУБАТОВИЋ ИЛИЈА
+КУБЕЧКА МИЛАН
+КУБЕТ МИЛАН
+КУБИЧЕЛА ПЕТАР
+КУБИЧКО ФЕРЕНЦ
+КУБИЦА СТЈЕПАН
+КУБИЦА ВЕРА
+КУБИК ФРАНЦИШКА
+КУБИЊЕЦ ЈОСИП
+КУБУРИЋ МИЋО
+КУБУРИЋ НОВКА
+КУБУРИЋ СВЕТОЗАР
+КУЦУЛОВИЋ ДАНИЦА
+КУЦУЛОВИЋ ВОЈИСЛАВ
+КУЦУРАЦ ДИМИТРИЈЕ
+КУЦУРАЦ МАРА
+КУЦУРАЦ НАДЕЖДА
+КУЦУРАЦ СТЕВАН
+КУЦУРСКИ ЂУРИЦА
+КУЦУРСКИ ДРАГОМИР
+КУЦУРСКИ РАДИСЛАВ
+КУДИЋ МИЛОСАВА
+КУДИЋ СТЕВА
+КУДРА ДАНИЈЕЛА
+КУДРА ОЛГА
+КУДРА-ЗИКОВИЋ ЉУБИЦА
+КУДРИЋ ДЕСИМИР
+КУГА ЈОВАН
+КУГИЋ ИЛИЈА
+КУГИЋ РАДМИЛА
+КУГИЋ САВКА
+КУГЛИ ИМРЕ
+КУГЛИ ЈОСИП
+КУГЛИ МИХАЈЛО
+КУГЛИ МИХАЉ
+КУГЛИ ПАВАО
+КУГЛИ РОЖИКА
+КУГЛИ СТЕВАН
+КУХАЈДА ШАНДОР
+КУХАЈДА КСЕНИЈА МР
+КУХАЈДА ВЛАДИМИР МР
+КУХАЈДА ЗЛАТА
+КУХАР ЈЕЛЕНА
+КУХАР ЈОВАН
+КУХАР СЛАВИЦА
+КУЈАЧИЋ ДРАГАН
+КУЈОВИЋ НЕДА
+КУЈОВИЋ СОФИЈА
+КУЈУНЏИЋ ЛУЈЗА
+КУЈУНЏИЋ МИОДРАГ
+КУЈУНЏИЋ ТОМАНИЈА
+КУЈУНЏИЋ ВЕРА
+КУКАВИЦА ЈОРДАН
+КУКАВИЦА МИРКО
+КУКАВИЦА РУЖИЦА
+КУКАВСКИ ПАВЛЕ
+КУКИЋ ЖАРКО
+КУКИЋ БРАНКА
+КУКИЋ ДРАГАН
+КУКИЋ ГОЈКО
+КУКИЋ ГОРДАНА
+КУКИЋ ЈЕЛИЦА
+КУКИЋ ЈЕЛКА
+КУКИЋ МИЛАН
+КУКИЋ МИЛОЈКА
+КУКИЋ МИРЈАНА
+КУКИЋ МИРКО
+КУКИЋ НЕБОЈША
+КУКИЋ НИКОЛА
+КУКИЋ ПЕТАР
+КУКИЋ СЛОБОДАН
+КУКИЋ СТЕВАН
+КУКИЋ СВЕТОЗАР
+КУКИЋ ВЕРА
+КУКИЋ ВЛАДИМИР
+КУКИЋ ЗОРАН
+КУКИЋ ЗОРАН
+КУКИЋ ЗВОНИМИР
+КУКИН ЖИВАН
+КУКИН АЛЕКСАНДАР
+КУКИН ДЕЈАН
+КУКИН СМИЉКА
+КУКЛА ИВАН
+КУКОЧ ВИНКО
+КУКОБАТ РАДОВАН
+КУКОЉ ДАНЕ
+КУКОЉ ДРАГАН
+КУКОЉ ДУШКО
+КУКОЉ МИЛКА
+КУКОЉ МИРЈАНА
+КУКОЉ РАДМИЛА
+КУКОЉ РАЈКО
+КУКОВСКИ ЈОВАН
+КУКРИКА БОШКО
+КУКУЧКА ЈАН
+КУКУЧКА МИХАЈЛО
+КУКУЉ ДОБРИЛА
+КУКУРОВ ЈОСИФ
+КУКУРУЗОВИЋ ЈЕЛЕНА
+КУКУРУЗОВИЋ ВЛАДИМИР
+КУЛЧАР ИШТВАН
+КУЛАЧАНИН АНИЦА
+КУЛАЧАНИН БРАНИСЛАВ
+КУЛАЧАНИН МИЛЕНКО
+КУЛАЧАНИН НАДА
+КУЛАЧИЋ ЗВОНИМИР
+КУЛАЧИН ЂУРО
+КУЛАЧИН БУДИМКА
+КУЛАЧИН ДУШАН
+КУЛАЧИН СЛАВКО
+КУЛАЧКИ МИТАР
+КУЛАШ МАРКО
+КУЛАШ СЛОБОДАН
+КУЛАШЕВИЋ ЗЛАТА
+КУЛАШИНОВИЋ АНЂЕЛКА
+КУЛАШИНОВИЋ ДАНИЦА
+КУЛАШИНОВИЋ ДУШИЦА
+КУЛАШИНОВИЋ МИЛАН
+КУЛАШИНОВИЋ МИЛИВОЈ
+КУЛАУЗОВ АРКАДИЈЕ
+КУЛАУЗОВ ЈОВАНКА
+КУЛАУЗОВ МИЛЕНКО ДР
+КУЛЕШЕВИЋ ОЛИВЕРА
+КУЛЕШЕВИЋ ПЕТАР
+КУЛЕШКО ДРАГОСЛАВА
+КУЛЕНОВИЋ АХМЕД
+КУЛЕНОВИЋ ЗОРАН
+КУЛЕВСКИ КАТИЦА
+КУЛЕВСКИ РОЖА
+КУЛЕВСКИ РОЖА
+КУЛИШИЋ НЕДА
+КУЛИШИЋ ОЛГА
+КУЛИШИЋ СЛАВОЉУБ
+КУЛИЋ ДАРИНКА
+КУЛИЋ ЈОВАН
+КУЛИЋ ЈОВО
+КУЛИЋ ЛАЗАР
+КУЛИЋ НЕБОЈША
+КУЛИЋ РАДИВОЈ
+КУЛИЋ ВЛАДИМИР
+КУЛИЏАН ДРАГУТИН
+КУЛИЏАН НЕМАЊА
+КУЛИЏАН ВАСО ДР
+КУЉАЧА ИЛИЈА
+КУЉАЧА ПЕТАР
+КУЉАК МАРИЈА
+КУЉАНЧИЋ ДУШАН
+КУЉАНЧИЋ ЈУЛКА
+КУЉАНЧИЋ МИЛЕНА
+КУЉАНЧИЋ НИКОЛА
+КУЉАНЧИЋ САВО
+КУЉАНЧИЋ ВЕРА
+КУЉАНИН ЈАКОВ
+КУЉАНКИЋ МУРАДИФ
+КУЉАНСКИ ОЛГА
+КУЉАНСКИ СЛАВКО
+КУЉИШ СЛОБОДАН
+КУЉИЋ БИСЕРКА
+КУЉИЋ ДРАГОСЛАВ
+КУЉИЋ ЛАЗАР
+КУЉИЋ ЉУБОМИР
+КУЉИЋ МИРЈАНА
+КУЉИЋ НЕДЕЉКО
+КУЉИЋ НИКОЛА
+КУЉИЋ ПЕТАР
+КУЉИЋ САВО
+КУЉИЋ-СМУЂА МАГДАЛЕНА
+КУЉИЋ ЗДРАВКО
+КУЛКА ГРЕТА
+КУЛПИНЧЕВИЋ ЂОРЂЕ
+КУЛПИНЧЕВИЋ ЈОВО
+КУЛПИНСКИ ДУШАН
+КУЛПИНСКИ МИРЈАНА
+КУЛПИНСКИ СТЕВАН
+КУЛПИНСКИ ВУЈАДИН
+КУМАНОВ ЖИВАН
+КУМАНОВ БОЖИДАР
+КУМАНОВИЋ МИОДРАГ
+КУМАЗЕЦ ЛАЗА
+КУМОВИЋ БРАНКА
+КУМОВИЋ МИЛИЦА
+КУМОВИЋ САВО
+КУН ЂУРА
+КУН АЛЕКСАНДАР
+КУН БЕЛА
+КУН ДАНИЦА
+КУН ЕДИТА
+КУН ЕРНЕ
+КУН ЛАСЛО
+КУН СТЕВАН
+КУНЧАКОВА МАРИЈА
+КУНАРАЦ АНИЕЛА
+КУНДАЧИНА ЈОВО
+КУНДАЧИНА РАДОВАН
+КУНДАЧИНА САВО
+КУНИЋ ЂОРЂЕ
+КУНИЋ ГОРДАНА
+КУНИЋ ВЕСЕЛИНКА
+КУНОСИЋ НЕЏАД
+КУНОСИЋ ОСМАН
+КУНОВАЦ ЉУБО
+КУНСТ ИРЕН
+КУНСТМАН АНАСТАСИЈА
+КУПЕК ЖЕЉКА
+КУПЕК ЗОРИЦА
+КУПИРОВИЋ СОФИЈА
+КУПРЕШАК ДАНИЛО
+КУПРЕШАК ВИДА
+КУПРЕШАНИН БИЉАНА
+КУПРЕШАНИН ИЛИЈА
+КУПРЕШАНИН МИЛЕ ДИПЛ ИНГ
+КУПРЕШКИ ЈОЦА
+КУПРЕШКИ ВЕРА
+КУПУСАРЕВИЋ БРАНИСЛАВ
+КУПУСИНАЦ БРАНИСЛАВ
+КУПУСИНАЦ ВЕЉКО
+КУРЧУБИЋ ДРАГИЋ
+КУРЧУБИЋ МЕЛАНИЈА
+КУРШУМОВИЋ АВДУЛАХ
+КУРАЈИЋ ЈОВАН
+КУРАН ИВАН
+КУРАЊИ ЈАН
+КУРАЊИ ЈАН
+КУРБАЛИЈА ЂОРЂЕ
+КУРБАЛИЈА ДАНИЦА
+КУРБАЛИЈА ЈОВАН
+КУРБАЛИЈА ЛАЗАР
+КУРБАЛИЈА МИРЈАНА
+КУРБАТФИНСКИ ФЕЂА ДИПЛ ИНГ
+КУРБАТФИНСКИ ИВАН
+КУРБАТФИНСКИ СЛАВКО
+КУРБАТФИНСКИ ВЛАДИМИР
+КУРБАТВИНСКИ ДИНА
+КУРБАТВИНСКИ ИВАН
+КУРБАТВИНСКИ СТЕВАН
+КУРБАТВИНСКИ ЗОРА
+КУРЦИНАК ЕМИЛ
+КУРЦИНАК ИМРЕ
+КУРЦИНАК ЈОСИП
+КУРЦИНАК ЛАЈОШ
+КУРЦИНАК ПАВЛЕ
+КУРЦИНАК СТЕВАН
+КУРЦИНАК ВЕСНА
+КУРДИ АМАЛИЈА
+КУРДОВСКИ МИТАР
+КУРДУЛИЋ МИЛОШ
+КУРЕШЕВИЋ РАЦКО
+КУРЕШЕВИЋ САВО
+КУРЕКАШ МИТАР
+КУРЕПА ВАСА
+КУРИШ ШТЕФАН
+КУРИЏА БОГДАН
+КУРИЏА ДУШАН
+КУРИЈ ТОМИСЛАВ
+КУРИЈА ВЕЉКО
+КУРИКША АНТОНИНА
+КУРИЛА ЈАНОШ
+КУРИЛИЋ ЈОВО
+КУРИЛИЋ МИЛАН
+КУРИЛИЋ МИЛОШ
+КУРИЛИЋ МИРОСЛАВ
+КУРИН ЂОРЂЕ
+КУРИН ЈОСИП
+КУРЈАЧКИ ЖИВКО
+КУРЈАЧКИ ЂОРЂЕ
+КУРЈАЧКИ ЂУРЂИНА
+КУРЈАЧКИ АНКИЦА
+КУРЈАЧКИ ДАНИЦА
+КУРЈАЧКИ ЈОВАН
+КУРЈАЧКИ МИХАЈЛО
+КУРЈАЧКИ МИЛАН
+КУРЈАЧКИ МИЛЕВА
+КУРЈАЧКИ МИЛЕВА
+КУРЈАЧКИ МИЛИЦА
+КУРЈАЧКИ МИЛИВОЈ
+КУРЈАЧКИ МИОДРАГ
+КУРЈАЧКИ МИРЈАНА
+КУРЈАЧКИ МИРЈАНА
+КУРЈАЧКИ СРЕДОЈЕ
+КУРЈАЧКИ СТАНКО
+КУРЈАЧКИ СТЕВАН
+КУРЈАЧКИ СВЕТОЗАР
+КУРЈАЧКИ ЗОРА
+КУРЈАКОВ ЂОРЂЕ
+КУРЈАКОВ ДАНИЛО
+КУРЈАКОВ ДРАГАН
+КУРЈАКОВ МИЛАН
+КУРЈАКОВ МИЛИВОЈ
+КУРЈАКОВ РОКСАНДА
+КУРЈАКОВ ВИКТОРИЈА
+КУРС ЂОРЂЕ
+КУРТА АЗИС
+КУРТЕШ ЈАСНА
+КУРТЕШ ЛАЗАР
+КУРТЕШ МАРА
+КУРТЕШ СВЕТКО
+КУРТЕШИ ФУАТ
+КУРТЕШИ НУСРЕТ
+КУРТЕШИ ЗЕНУН
+КУРТИ МУСТАФА
+КУРТИ НЕЗИР
+КУРТИШЕВИЋ НАСУФ
+КУРТИЋ АЛЕКСАНДАР
+КУРТИЋ БРАНИСЛАВА
+КУРТИЋ МИЛОВАН
+КУРТИНОВИЋ ПРЕДРАГ
+КУРТОВИЋ АНА
+КУРТОВИЋ ИВАН
+КУРТУШИЋ ИВАНКА
+КУРУЧЕВ МАРИЈА
+КУРУЧЕВ МИРЈАНА
+КУРУЧЕВ СЛОБОДАН
+КУРУЧКИ КАМЕНКО
+КУРУЧКИ ВЛАДИМИР
+КУРУЧКИ ЗЛАТИМИР
+КУРУШИЋ БОРО
+КУРУЦ ЂУЛА
+КУРУЦ ЂУЛА
+КУРУЦ ИГНАЦ
+КУРУЦ ИРЕНА
+КУРУЦ ЈАНОШ
+КУРУЦ ЈОВО
+КУРУЦ ЛАЈОШ
+КУРУЦ ЛАСЛО
+КУРУЦ НАНДОР
+КУРУЦ ТИБОР
+КУРУЦ ВИНКА
+КУРУЦА БОЖА
+КУРУЦА ЈОВАН
+КУРУЦИЋ ДРАГАН
+КУРУЦИЋ ЉУБИЦА
+КУРУЦИЋ СИНИША
+КУРУЦИЋ ВИТОМИР
+КУРУЦИН ЖИВАНА
+КУРУНЦИ АНДРИЈА
+КУРУНЦИ ЈОЖЕФ
+КУРУНЦИ ЈОЖЕФ
+КУРУНЦИ МАРИЈА
+КУРУЗОВИЋ ТАТЈАНА
+КУСИЋ СРЕТКО
+КУСЛИ ФЕРЕНЦ
+КУСЛИ ГЕЗА
+КУСМУК ДАРИНКА
+КУСТИЋ СОФИЈА
+КУСТУДИЈА ДАНИЦА
+КУСТУДИЈА МИРОСЛАВ
+КУСТУДИЈА СЛОБОДАН
+КУСТУРИЋ НИКОЛА
+КУСТУРИЋ СЕЛИМИР
+КУСТУРИЦА ХАСАН
+КУСТУРИЦА НАЗИФ
+КУСТУРИН АНТУН
+КУСТУРИН МИРЈАНА
+КУСУРОВИЋ АНКИЦА
+КУТИЈЕВАЦ ЉУБИЦА
+КУТЛАЧА МАРКО
+КУТЛЕШИЋ ЉУБИША
+КУТЛЕШИЋ ЉУБИША
+КУТРИ КАРЛО
+КУТРИ КАРОЉ
+КУТРИ СТЕВАН
+КУТРИЧКИ ЗОРАН
+КУТУЗОВ МИЛОРАД
+КУТУЗОВ МИРОСЛАВ
+КУВАЉ СТЕВАН
+КУВАЉА ДРАГАН
+КУВАЉА ДРАГОЉУБ
+КУВАЉА КАТИЦА
+КУВАЉА ОСТОЈА
+КУВЕКАЛОВИЋ РАДОСЛАВ
+КУВЕКАЛОВИЋ СТРАИН
+КУВЕЉИЋ ЖАРКО
+КУВЕЉИЋ ЉИЉАНА
+КУВЕЉИЋ РАДИВОЈЕ
+КУВЕЉИЋ РАДОМАН
+КУВИЗИЋ ЖИВОЈИН
+КУВИЗИЋ ЖИВОЈИН
+КУЗЕВСКИ ДРАГАН
+КУЗМАН АНКА
+КУЗМАН БОГДАН
+КУЗМАН БОГДАН
+КУЗМАН БОРИСЛАВ
+КУЗМАН ДИМИТРИЈЕ
+КУЗМАН ДРАГАН
+КУЗМАН МИЛАН
+КУЗМАН МИЛОВАН
+КУЗМАН МИРКО
+КУЗМАН НАДА
+КУЗМАН НАДА
+КУЗМАН НАДА
+КУЗМАН НАДЕЖДА
+КУЗМАН ПЕТАР
+КУЗМАН РИСТО
+КУЗМАН СЛАВИЦА
+КУЗМАНЧЕВ АЛЕКСАНДАР
+КУЗМАНЧЕВ ДИМИТРИЈЕ
+КУЗМАНЧЕВ ДУШАН
+КУЗМАНЧЕВ ОЛИВЕРА ДР
+КУЗМАНЧЕВ ТИМОШЕНКО
+КУЗМАНОВ БОРИСЛАВ
+КУЗМАНОВ МАРИЈА
+КУЗМАНОВ ОБРАД
+КУЗМАНОВ ОБРАД
+КУЗМАНОВ РАДОШ ДИПЛ ИНГ
+КУЗМАНОВ РАДОСЛАВ
+КУЗМАНОВ САВА
+КУЗМАНОВ СЛАВКО
+КУЗМАНОВ СВЕТИСЛАВ
+КУЗМАНОВ ТАНАСИЈЕ
+КУЗМАНОВ ЗОРАН
+КУЗМАНОВИЋ ЧЕДОМИР
+КУЗМАНОВИЋ ЖИВОЈИН
+КУЗМАНОВИЋ ЂОРЂЕ
+КУЗМАНОВИЋ ЂУРА
+КУЗМАНОВИЋ АЛЕКСАНДАР
+КУЗМАНОВИЋ АНГЕЛИНА
+КУЗМАНОВИЋ БОШКО
+КУЗМАНОВИЋ БОГДАН
+КУЗМАНОВИЋ БОГДАН
+КУЗМАНОВИЋ БОРИСЛАВ
+КУЗМАНОВИЋ БРАНИСЛАВА
+КУЗМАНОВИЋ БРАНИСЛАВ
+КУЗМАНОВИЋ ДАНИЦА
+КУЗМАНОВИЋ ДАРИНКА
+КУЗМАНОВИЋ ДЕЈАН
+КУЗМАНОВИЋ ДРАГИЊА
+КУЗМАНОВИЋ ДРАГОМИР
+КУЗМАНОВИЋ ДРАГУТИН
+КУЗМАНОВИЋ ДРАГУТИН
+КУЗМАНОВИЋ ДУШАН
+КУЗМАНОВИЋ ДУШАН
+КУЗМАНОВИЋ ДУШАН
+КУЗМАНОВИЋ ДУШКО
+КУЗМАНОВИЋ ГОРАН
+КУЗМАНОВИЋ ЈЕЛЕНА
+КУЗМАНОВИЋ ЈОВАН
+КУЗМАНОВИЋ ЈОВАН
+КУЗМАНОВИЋ КАТА
+КУЗМАНОВИЋ ЛАЗАР
+КУЗМАНОВИЋ ЛАЗАР
+КУЗМАНОВИЋ ЛАЗО
+КУЗМАНОВИЋ ЛЕНКА
+КУЗМАНОВИЋ ЉИЉАНА
+КУЗМАНОВИЋ ЉУБИША
+КУЗМАНОВИЋ ЉУБИЦА
+КУЗМАНОВИЋ ЉУБИЦА
+КУЗМАНОВИЋ ЉУБИЦА
+КУЗМАНОВИЋ ЉУБОМИР
+КУЗМАНОВИЋ МИЛАН
+КУЗМАНОВИЋ МИЛАН
+КУЗМАНОВИЋ МИЛЕНА
+КУЗМАНОВИЋ МИЛЕНКО
+КУЗМАНОВИЋ МИЛЕ
+КУЗМАНОВИЋ МИЉОЈКО ДИПЛ ИНГ
+КУЗМАНОВИЋ МИЛОШ
+КУЗМАНОВИЋ МИЛОШ
+КУЗМАНОВИЋ МИЛОШ
+КУЗМАНОВИЋ МИЛОШ
+КУЗМАНОВИЋ МИОДРАГ
+КУЗМАНОВИЋ МИРЈАНА
+КУЗМАНОВИЋ МЛАДЕН
+КУЗМАНОВИЋ НАДА
+КУЗМАНОВИЋ НАДЕЖДА
+КУЗМАНОВИЋ НЕНАД
+КУЗМАНОВИЋ НЕВЕНА
+КУЗМАНОВИЋ НИКОЛА
+КУЗМАНОВИЋ НИКОЛА
+КУЗМАНОВИЋ ПАЈА
+КУЗМАНОВИЋ ПЕТАР
+КУЗМАНОВИЋ ПЕТАР
+КУЗМАНОВИЋ ПРЕДРАГ
+КУЗМАНОВИЋ РАДИВОЈ
+КУЗМАНОВИЋ РАДИВОЈ
+КУЗМАНОВИЋ РАДОЈКО
+КУЗМАНОВИЋ РАДОСАВ
+КУЗМАНОВИЋ РАДОСЛАВ
+КУЗМАНОВИЋ РАЈКО
+КУЗМАНОВИЋ СЛАВКО
+КУЗМАНОВИЋ СЛАВКО
+КУЗМАНОВИЋ СЛОБОДАН
+КУЗМАНОВИЋ СЛОБОДАН
+КУЗМАНОВИЋ СЛОБОДАН
+КУЗМАНОВИЋ СПОМЕНКА
+КУЗМАНОВИЋ СТОЈАН
+КУЗМАНОВИЋ СТОЈАН
+КУЗМАНОВИЋ ТОДОР
+КУЗМАНОВИЋ ТОДОР
+КУЗМАНОВИЋ ВАСИЛИЈЕ
+КУЗМАНОВИЋ ВАСИЛИЈЕ
+КУЗМАНОВИЋ ВЕРА
+КУЗМАНОВИЋ ВЕРА
+КУЗМАНОВИЋ ВЛАСТИМИР
+КУЗМАНОВИЋ ВОЈИСЛАВ
+КУЗМАНОВИЋ ЗДРАВКО
+КУЗМАНОВИЋ ЗОРАН
+КУЗМАНОВИЋ ЗОРА
+КУЗМАНОВСКИ БЛАГОЈА
+КУЗМАНОВСКИ ЦВЕТА
+КУЗМАНОВСКИ ДУШАН
+КУЗМАНОВСКИ МИЛЕ
+КУЗМАНОВСКИ ПЕРЕ
+КУЗМАНОВСКИ РАДОЈКА
+КУЗМАНОВСКИ ТАСЕ
+КУЗМАНОВСКИ ТРАЈЧЕ
+КУЗМИЋ МИЛКА
+КУЗМИЋ ЗВОНКО
+КУЗМИНАЦ БОРИСЛАВ
+КУЗМИНАЦ ГОРДАНА
+КУЗМИНАЦ ПЕТАР
+КУЗМИНАЦ ПРЕДРАГ
+КУЗМИНАЦ РАДОСЛАВ
+КВАШЧЕВ ЈОВАН
+КВАШЧЕВ МИРА
+КВАШЧЕВ РАДИВОЈ
+КВАИЋ ЂОРЂЕ
+КВАИЋ ДУШАН
+КВАИЋ ЈЕЛЕНА
+КВАИЋ МИЛЕВА
+КВРГИЋ БОШКО
+КВРГИЋ МИЛАН
+КВРГИЋ ПЕТАР
+КВРГИЋ РАДОВАН
+КВРГИЋ САВО
+КВРГИЋ ТОМИСЛАВ
+ЛАЧАНСКИ ДЕСАНКА
+ЛАЧОК КАРЛО
+ЛАЧОК КАРОЉ
+ЛАШКОВ ИГОР ДИПЛ ИНГ
+ЛАЋАК ЂУРА
+ЛАЋАК МИХАЉ
+ЛАЋАНСКИ ВОЈИСЛАВ
+ЛАЋАРАЦ ЖАРКО
+ЛАЋАРАЦ БИЉАНА
+ЛАЋАРАЦ БОРИСЛАВ
+ЛАЋАРАЦ ДОБРИВОЈЕ
+ЛАЋАРАЦ ЈОВАН
+ЛАЋАРАЦ МАКСИМ
+ЛАЋАРАЦ НИКОЛА
+ЛАЋАРАЦ НИКОЛА
+ЛАЋАРАЦ НИКОЛА
+ЛАЋАРАЦ ТЕОДОР
+ЛАЋАРАЦ ВЕРА
+ЛАЋАРАК ЖАРКО
+ЛАЋАРАК ЛАЗАР
+ЛАЋАРАК ЛАЗА
+ЛАЋАРАК МИЛОШ
+ЛАЋАРАК МЛАДЕН
+ЛАЋАРАК ОГЊАНКА
+ЛАЖЕГИЋ НЕВЕНКА
+ЛАЖЕТИЋ АЛЕКСАНДАР
+ЛАЖЕТИЋ МАРИЈА ДР
+ЛАЂЕВАЦ ДУШАН
+ЛАЂЕВИЋ ДРАГАН
+ЛАЂЕВИЋ ГОЈКО
+ЛАЂЕВИЋ ЈОВАН
+ЛАЂИНОВИЋ ЖИКА
+ЛАЂИНОВИЋ ЗЛАТКО
+ЛАБАШ ИВАН
+ЛАБАДИ ЈОЖЕФ
+ЛАБАН ЈУЛКА
+ЛАБАН МИРКО
+ЛАБАТ АНА
+ЛАБАТ АНКА
+ЛАБАТ ЈАН
+ЛАБАТ КВЕТОСЛАВА
+ЛАБАТ РУЖЕНА
+ЛАБАТ СТЕВАН
+ЛАБАТ ВЕРА
+ЛАБАТ ВЛАДИМИР
+ЛАБАТ ВЛАДИСЛАВ
+ЛАБАВИЋ ИВАН
+ЛАБОВИЋ БОЖИДАР
+ЛАБОВИЋ МАНОЈЛО
+ЛАБРОВИЋ МИРКО
+ЛАБУДОВИЋ БОРИС
+ЛАБУДОВИЋ ХЕЛЕНА
+ЛАБУДОВИЋ РОЗАЛИЈА
+ЛАБУДОВИЋ ВЛАДИМИР
+ЛАБУС ЂУРО
+ЛАБУС БОЖИДАР
+ЛАБУС БРАНКО
+ЛАБУС ИЛИЈА
+ЛАБУС ЈОВАН
+ЛАБУС ЉУБОМИР
+ЛАБУС МАКЕДОНКА
+ЛАБУС МИЛАН
+ЛАБУС МИЛАН
+ЛАБУС МИЛАН
+ЛАБУС МИЛАН
+ЛАБУС МИЛЕ
+ЛАБУС НИКОЛА
+ЛАБУС СЛАВКО
+ЛАЦИК ЈАНОШ
+ЛАЦИК СЛАВИЦА
+ЛАЦКО МИХАЈЛО
+ЛАЦКОВИЋ ДРАГИША
+ЛАЦКОВИЋ ЈОСИП
+ЛАЦКОВИЋ РАДЕ
+ЛАЦКОВИЋ РАДОВАН
+ЛАЦКОВИЋ СОФИЈА
+ЛАЦКОВИЋ СТАНИМИР
+ЛАЦКОВИЋ ЗЛАТКО
+ЛАЦКОВИЋ ЗОРАН
+ЛАЦМАНОВИЋ МИОДРАГ
+ЛАЦМАНОВИЋ СЛАВОЈКА
+ЛАДАР МИЛОШ
+ЛАДАР СТЕВАН
+ЛАДИ ИШТВАН
+ЛАДИ ЛАЈОШ
+ЛАДИ МАРИЈА
+ЛАДИШИЋ АНТОН
+ЛАДИШИЋ ГУСТАВ
+ЛАДИШИЋ ЈЕЛИСАВЕТА
+ЛАДИШИЋ ЈОСИП
+ЛАДИШИЋ МИРКО
+ЛАДИШИЋ НИКОЛА
+ЛАДИШИЋ СТЕВАН
+ЛАДИК ШАНДОР
+ЛАДИК ФЕРЕНЦ
+ЛАДИК КАТАЛИН
+ЛАДИК КАТАЛИН
+ЛАДИК МАРГИТА
+ЛАДИК МИРЈАНА
+ЛАДИКА БЛАЖ
+ЛАДОЦКИ АНДРИЈА
+ЛАДОЛЕЖ ЕРЖЕБЕТ
+ЛАДОЛЕЖ МИЛАДИН
+ЛАГУМЏИЈА ХАМИД
+ЛАГУМЏИЈА МИЛЕНА
+ЛАГУНЏИН ДРАГАН
+ЛАГУНЏИН ДРАГАН
+ЛАГУНЏИН ДРАГАН
+ЛАГУНЏИН СВЕТОЗАР
+ЛАГУНЏИН ЗОРАН
+ЛАХАРНАР ЛУЦИЈА
+ЛАХОШ ЂОРЂЕ
+ЛАХОШ АНДРИЈА
+ЛАХОШ ИШТВАН
+ЛАИНОВИЋ АЛЕКСА
+ЛАИНОВИЋ БОРИСЛАВ
+ЛАИНОВИЋ РАНКО
+ЛАЈШИЋ СТЕВАН
+ЛАЈШИЋ ЗОРКА
+ЛАЈХ МАРИЈА
+ЛАЈХТНЕР АНТАЛ
+ЛАЈХТНЕР ФРАЊА
+ЛАЈХТНЕР НИКОЛА ДИПЛ ИНГ
+ЛАЈИЋ ШТЕФКА
+ЛАЈИЋ БРАНКО
+ЛАЈИЋ ДРАГАН
+ЛАЈИЋ ДРАГОЉУБ
+ЛАЈИЋ ЉИЉАНА
+ЛАЈИЋ МИРКО
+ЛАЈИЋ РАЈКО
+ЛАЈИЋ СТАНА
+ЛАЈИЋ ЗДРАВКО
+ЛАЈКО ШАНДОР
+ЛАЈКО ЈОСИП
+ЛАЈКО ЛАЈОШ ДИПЛ ИНГ
+ЛАЈКО МАРИЈА
+ЛАЈКО СТЕВАН
+ЛАЈКО ВЕРА
+ЛАЈОШ ЛАСЛО
+ЛАЈТЕР ЕЛЗА
+ЛАЈТЕР ГИЗЕЛА
+ЛАЈТЕР ИВАН
+ЛАЈТИХ СИГФРИД
+ЛАКАТОШ АМАЛИЈА
+ЛАКАТОШ АНА
+ЛАКАТОШ АНДРАШ
+ЛАКАТОШ ДРАГИЦА
+ЛАКАТОШ ГИЗА
+ЛАКАТОШ ИМРЕ
+ЛАКАТОШ ИМРЕ
+ЛАКАТОШ ИМРЕ
+ЛАКАТОШ ЈАСМИНКА
+ЛАКАТОШ ЈЕЛЕНА
+ЛАКАТОШ ЛАЈОШ
+ЛАКАТОШ МИХАЈЛО
+ЛАКАТОШ МИЛИЦА
+ЛАКАТОШ НАДА
+ЛАКАТОШ ПАВЛЕ
+ЛАКАТОШ СТЕВАН
+ЛАКАТОШ ТИБОР
+ЛАКАТОШ ВЕРА
+ЛАКАТОШ ВИЛМОШ
+ЛАКАТОШ ЗОЛТАН
+ЛАКАТОШ ЗОЛТАН
+ЛАКАТУШ БРАНИСЛАВ
+ЛАКЕТА БОЖО
+ЛАКЕТИЋ ЉУБОМИР
+ЛАКЕТИЋ МИЛАН
+ЛАКЕТИЋ МИЛИВОЈ
+ЛАКИЧЕВИЋ НАДА
+ЛАКИЧЕВИЋ-СТОЈАЧИЋ СНЕЖАНА
+ЛАКИЋ АНЂА
+ЛАКИЋ АНЂЕЛКА
+ЛАКИЋ БОГОСАВ
+ЛАКИЋ БРАНКО ДР ЛЕКАР
+ЛАКИЋ БРАНКО
+ЛАКИЋ БРАНКО
+ЛАКИЋ ДАНИЛО
+ЛАКИЋ ИЛИЈА
+ЛАКИЋ ЈОЛАН
+ЛАКИЋ МАРКО
+ЛАКИЋ МИРА
+ЛАКИЋ МИРЈАНА
+ЛАКИЋ МЛАДЕН
+ЛАКИЋ МОМИР
+ЛАКИЋ НИКОЛА
+ЛАКИЋ РАДИВОЈЕ
+ЛАКИЋ РАДИВОЈ
+ЛАКИЋ РАДИВОЈ
+ЛАКИЋ РАДМИЛА
+ЛАКИЋ РАЈКО
+ЛАКИЋ САВА ДР
+ЛАКИЋ СЛОБОДАН
+ЛАКИЋ СМИЉА
+ЛАКИЋ СПАСОЈЕ
+ЛАКИЋ СРЂАН
+ЛАКИЋ СРЂАН
+ЛАКИЋ СРЂАН
+ЛАКИЋ СТЕВАН
+ЛАКИЋ СВЕТИСЛАВ
+ЛАКИЋ ТОМИСЛАВ
+ЛАКИЋ ВЕЛИМИР
+ЛАКИЋ ВЕСНА
+ЛАКИЋ ВУЧЕТА
+ЛАКИЋ ЗОРИЦА
+ЛАКИЋЕВИЋ МИЛИЈА
+ЛАКИЋЕВИЋ СВЕТЛАНА
+ЛАКИЋЕВИЋ ВАСО
+ЛАКИЋЕВИЋ ВЕСНА
+ЛАКИЋЕВИЋ ВУКСАН ДР
+ЛАКЛИЈА СТЕВАН
+ЛАКО МАРИЈА
+ЛАКОБРИЈА ДРАГАН
+ЛАКОБРИЈА ДУШАН
+ЛАКОБРИЈА ИЛИЈА
+ЛАКОБРИЈА ЈЕЛЕНА
+ЛАКОБРИЈА МИЛАН
+ЛАКОБРИЈА МИЛАН
+ЛАКОБРИЈА МИЛОШ
+ЛАКОБРИЈА МИЛОШ
+ЛАКОБРИЈА НИКОЛА
+ЛАКОВИЋ БУДИМИР
+ЛАКОВИЋ ДУШКО
+ЛАКОВИЋ МИЛИЋ
+ЛАКОВИЋ МИЛОРАД
+ЛАКОВИЋ ПЕТАР
+ЛАКОВИЋ РОЗАЛИЈА
+ЛАКОВИЋ ВАСИЉКА
+ЛАЛАТОВИЋ ДЕСАНКА
+ЛАЛАТОВИЋ ДРАГУТИН
+ЛАЛАТОВИЋ СЛОБОДАНКА
+ЛАЛАТОВИЋ ВАСИЛИЈЕ
+ЛАЛИЧИЋ ВЕЛИМИР
+ЛАЛИЋ ЖИВА
+ЛАЛИЋ ЂОРЂЕ
+ЛАЛИЋ АНКИЦА
+ЛАЛИЋ АРКАДИЈЕ
+ЛАЛИЋ БОГДАН
+ЛАЛИЋ ГЛИГОРИЈЕ
+ЛАЛИЋ ГОЈКО
+ЛАЛИЋ ГОРДАНА
+ЛАЛИЋ ИКОНИЈА
+ЛАЛИЋ ЈАГОДА
+ЛАЛИЋ ЈУЛИЈАНА
+ЛАЛИЋ ЈУЛКА
+ЛАЛИЋ ЉУБОМИР
+ЛАЛИЋ МАРИЈА
+ЛАЛИЋ МИЛАДИНКА
+ЛАЛИЋ МИЛАН
+ЛАЛИЋ МИЛИЦА
+ЛАЛИЋ МИРКО
+ЛАЛИЋ НЕНАД
+ЛАЛИЋ НИКОЛА
+ЛАЛИЋ РАДОМИР ДР
+ЛАЛИЋ СРЕДОЈЕ
+ЛАЛИЋ ТАМАРА
+ЛАЛИЋ ТОДОР
+ЛАЛИЋ УГЉЕША
+ЛАЛИЋ ВАСИЛИЈЕ
+ЛАЛИН АЛЕКСАНДАР
+ЛАЛИН МИЛАН
+ЛАЛОШЕВИЋ АЛЕКСАНДАР
+ЛАЛОШЕВИЋ АЛЕКСАНДАР
+ЛАЛОШЕВИЋ ДИМИТРИЈЕ
+ЛАЛОШЕВИЋ ДУШАН
+ЛАЛОШЕВИЋ ДУШКО
+ЛАЛОШЕВИЋ ФЕМКА
+ЛАЛОШЕВИЋ ЈЕЛИСАВЕТА
+ЛАЛОШЕВИЋ ЈОВАН
+ЛАЛОШЕВИЋ КАТИЦА
+ЛАЛОШЕВИЋ ЛАЗАР
+ЛАЛОШЕВИЋ МАРА
+ЛАЛОШЕВИЋ МИКА
+ЛАЛОШЕВИЋ СТЕВАН
+ЛАЛОШЕВИЋ СТЕВА
+ЛАЛОШЕВИЋ ВАСА
+ЛАЛОШЕВИЋ ВЛАДИМИР
+ЛАЛОШЕВИЋ ВЛАДИМИР
+ЛАЛОВИЋ ЈАНКО
+ЛАЛОВИЋ МАРКО
+ЛАЛОВИЋ МИРЈАНА
+ЛАЛОВИЋ НАДА
+ЛАЛОВИЋ РАДИВОЈЕ
+ЛАЛОВИЋ СУЗАНА
+ЛАЛОВИЋ ВЕРА
+ЛАМБЕТА ПЕКО
+ЛАМБИЋ БРАНИСЛАВ
+ЛАМБИЋ ЈОВО
+ЛАМБИЋ ОЛИВЕРА
+ЛАМПРЕТ КРИСТИЈАН
+ЛАНЧУШКИ ЕМИЛКА
+ЛАНЦ ФРАЊА
+ЛАНЦ МАРИЈА
+ЛАНЦОШ АНА
+ЛАНЦОШ НЕНАД
+ЛАНЦОШ СВЕТОЗАР
+ЛАНЦОШ ТОМИСЛАВ
+ЛАНДЕКА АНТОНИЈЕ
+ЛАНГ АТИЛА
+ЛАНГ ДРАГИЦА
+ЛАНГ ЈОСИП
+ЛАНГ МИРЈАНА
+ЛАНГ ВАЛЕРИЈА
+ЛАЊИ АНДРАШ
+ЛАЊИ СТЕВАН
+ЛАНКОВСКИ ПЕЦО
+ЛАНКОВСКИ ТОМЧЕ
+ЛАПЧЕВИЋ ДРАГИЦА
+ЛАПЧЕВИЋ МИЛИЦА
+ЛАПЧЕВИЋ МИЛУТИН
+ЛАПЧЕВИЋ ПАЈА
+ЛАПЧЕВИЋ ВУКОСАВА
+ЛАПЧИЋ МИЛАН
+ЛАПАДАТ ХОРТЕНЗИЈА
+ЛАПАДАТ СОРИН
+ЛАПАДАТ ВАСИЛИЈЕ
+ЛАПАЈНЕ МИЛАН
+ЛАПО ЈОВАН
+ЛАПУ АНДРАШ
+ЛАРКИН СТЕВАН
+ЛАСИЋ ТОМИСЛАВ
+ЛАСИЋ ЗВОНКО
+ЛАСИЋ ЗВОНКО
+ЛАСИЦА БУДИМИР
+ЛАСИЦА ДРАГУТИН
+ЛАСИЦА ИЛИЈА
+ЛАСИЦА МИЛАН
+ЛАСИЦА МИЛАН
+ЛАСИЦА МИЛЕНКО
+ЛАСИЦА МИРОСЛАВ
+ЛАСИЦА УРОШ
+ЛАСИЦА ВЕЉКО
+ЛАСИЦА ЗДРАВКО
+ЛАСИЦА ЗЛАТА
+ЛАСИЦА ЗОРА
+ЛАСКОВ ДОБРЕ
+ЛАСКОВИЋ БРАНКА
+ЛАСКОВИЋ ДАНИЛО
+ЛАСКОВИЋ ДРАГАН
+ЛАСЛО ЕТЕЛКА
+ЛАСЛО ФЕРЕНЦ
+ЛАСЛО ФРАЊА
+ЛАСЛО ФРАЊА
+ЛАСЛО ИЛОНА
+ЛАСЛО ЈОЖЕФ
+ЛАСЛО ЈОСИП
+ЛАСЛО ЈОВАН
+ЛАСЛО ЛАСЛО
+ЛАСЛО МИКЛОШ
+ЛАСЛО МИЛЕНА
+ЛАСЛО ТИБОР
+ЛАСЛО ВЕРА
+ЛАСЛОВСКИ ТЕРЕЗА
+ЛАСТИЋ АЛЕКСАНДАР
+ЛАТАК НАНДОР
+ЛАТАЛ МАРЈАН
+ЛАТАЛ СЛАВИЦА
+ЛАТАЛ СТЕВАН
+ЛАТАЛ ВЕРА
+ЛАТАЛ ЗАГОРКА
+ЛАТАС ЖИВКА
+ЛАТАС ЛАЗАР
+ЛАТАС МАРКО
+ЛАТАС МИЛАДИН
+ЛАТАС МИЛАН
+ЛАТАС ПЕТАР
+ЛАТАС САВА ДР СТОМАТОЛОГ
+ЛАТАС ЗОРА
+ЛАТИШКО УРОШ
+ЛАТИЋ ИСАК
+ЛАТИЋ РАДИВОЈ
+ЛАТИНЧИЋ БОРИСЛАВ
+ЛАТИНЧИЋ ДАНИЦА
+ЛАТИНЧИЋ ГРУЈА
+ЛАТИНЧИЋ НИКОЛА
+ЛАТИНЧИЋ РУЖА
+ЛАТИНКИЋ СТЕВАН
+ЛАТИНКИЋ ВИНКА
+ЛАТИНКОВИЋ РАДОМИР
+ЛАТИНОВИЋ ЖАРКО
+ЛАТИНОВИЋ ЂУЈА
+ЛАТИНОВИЋ БОЖО
+ЛАТИНОВИЋ ДРАГАН
+ЛАТИНОВИЋ ДРАГАН
+ЛАТИНОВИЋ ЕРИКА
+ЛАТИНОВИЋ ИЛИЈА
+ЛАТИНОВИЋ ЈОВАН
+ЛАТИНОВИЋ ЈОВАН
+ЛАТИНОВИЋ ЛАЗА
+ЛАТИНОВИЋ ЉУБА
+ЛАТИНОВИЋ МАЦА
+ЛАТИНОВИЋ МАРИНКО
+ЛАТИНОВИЋ МИЛЕНКО
+ЛАТИНОВИЋ МИЛОРАД
+ЛАТИНОВИЋ МИРКО
+ЛАТИНОВИЋ НЕЂО
+ЛАТИНОВИЋ НЕДЕЉКО
+ЛАТИНОВИЋ НИКОЛА
+ЛАТИНОВИЋ НИКОЛА
+ЛАТИНОВИЋ ПЕТАР
+ЛАТИНОВИЋ РАДОМИР
+ЛАТИНОВИЋ РАЈКО
+ЛАТИНОВИЋ САВО
+ЛАТИНОВИЋ СЛОБОДАНКА
+ЛАТИНОВИЋ СЛОБОДАН
+ЛАТИНОВИЋ СЛОБОДАН
+ЛАТИНОВИЋ СМИЉА
+ЛАТИНОВИЋ СВЕТОЗАР
+ЛАТИНОВИЋ ЗОРКА
+ЛАТКОВИЋ ЖЕЉКО
+ЛАТКОВИЋ ЈОВАН
+ЛАТКОВИЋ ЈОВО
+ЛАТКОВИЋ МИЛЕ
+ЛАТКОВИЋ ВУЈО
+ЛАТКОВСКИ РИСТО
+ЛАТО ЈАСНА
+ЛАТОВЉЕВ ЗАГОРКА
+ЛАУШ ДИМИТРИЈЕ
+ЛАУШ ВЛАДИМИР
+ЛАУШЕВ ДРАГАНА
+ЛАУШЕВ ЈОЦА
+ЛАУШЕВ ЉУБИНКА
+ЛАУШЕВ МИРЈАНА
+ЛАУШЕВ ТОША
+ЛАУШЕВ ВЕЛИМИР
+ЛАУШЕВ ВОЈИСЛАВ
+ЛАУШЕВИЋ ЖИВАН
+ЛАУШЕВИЋ ЖИВКА
+ЛАУШЕВИЋ ЖИВКА
+ЛАУШЕВИЋ БРАНИСЛАВ
+ЛАУШЕВИЋ ДРАГОЈЕ
+ЛАУШЕВИЋ ДРАГУТИН
+ЛАУШЕВИЋ ПАВЛЕ
+ЛАУШЕВИЋ РАДОЈИЦА
+ЛАУШЕВИЋ ВЕСЕЛИН
+ЛАУШЕВИЋ ЗИТА
+ЛАУШИН БРАНИСЛАВ
+ЛАУБЕРТ ВЛАДИСЛАВА
+ЛАУС АНА
+ЛАУС КАТАРИНА
+ЛАУТАРЕВИЋ ДРАГАН
+ЛАУТЕРЕР ЂЕНЂИ
+ЛАУТЕРЕР ЛАСЛО
+ЛАВАЧ ЈОЖЕФ
+ЛАВАЧ ЛАСЛО
+ЛАВИЧКА КАРЛО
+ЛАВРНИЋ КСЕНИЈА
+ЛАВРНИЋ КСЕНИЈА
+ЛАВРНИЋ МИЛОШ
+ЛАВРНИЋ РАДИВОЈ
+ЛАВРЊА ЛАЗАР
+ЛАВРЊА МИЛКАН
+ЛАЗА ЈОН
+ЛАЗА ТЕОДОРА
+ЛАЗАНСКИ АНА
+ЛАЗАНСКИ БРАНИСЛАВ
+ЛАЗАНСКИ ГОРДАНА
+ЛАЗАНСКИ ГОРДАНА
+ЛАЗАР ЂУЛА
+ЛАЗАР ЕЛЕНА
+ЛАЗАР ЈУЛИА
+ЛАЗАР ЈУЛИЈА
+ЛАЗАР КАТАЛИН
+ЛАЗАР ЛАДИСЛАВ
+ЛАЗАР ПАВЛЕ
+ЛАЗАР СИМА
+ЛАЗАР СТЈЕПАН
+ЛАЗАР ВЛАДИМИР
+ЛАЗАРЕВ ЂОКА
+ЛАЗАРЕВ АНА
+ЛАЗАРЕВ АНДРИЈА
+ЛАЗАРЕВ ЈОВАН
+ЛАЗАРЕВ ВЕРА
+ЛАЗАРЕВИЋ ЧЕДА
+ЛАЗАРЕВИЋ ЖИВКА
+ЛАЗАРЕВИЋ ЖИВОТА
+ЛАЗАРЕВИЋ ЂОРЂЕ
+ЛАЗАРЕВИЋ БОШКО
+ЛАЗАРЕВИЋ БОРИСЛАВ
+ЛАЗАРЕВИЋ БРАНКО
+ЛАЗАРЕВИЋ БРАНКО
+ЛАЗАРЕВИЋ ДАНИЛО
+ЛАЗАРЕВИЋ ДАРИНКА
+ЛАЗАРЕВИЋ ДИМИТРИЈЕ
+ЛАЗАРЕВИЋ ДОБРОСАВ
+ЛАЗАРЕВИЋ ДРАГИША
+ЛАЗАРЕВИЋ ДРАГОМИР
+ЛАЗАРЕВИЋ ЈАДВИГА
+ЛАЗАРЕВИЋ ЈЕЛЕНА
+ЛАЗАРЕВИЋ ЈЕЛЕНА
+ЛАЗАРЕВИЋ ЛАЗАР
+ЛАЗАРЕВИЋ ЉУБОМИР
+ЛАЗАРЕВИЋ ЉУБО
+ЛАЗАРЕВИЋ МАНДА
+ЛАЗАРЕВИЋ МИЛАДИНКА
+ЛАЗАРЕВИЋ МИЛАН
+ЛАЗАРЕВИЋ МИЛАН
+ЛАЗАРЕВИЋ МИЛИВОЈЕ
+ЛАЗАРЕВИЋ МИЛОРАД
+ЛАЗАРЕВИЋ МИЛОРАД
+ЛАЗАРЕВИЋ МИЛУН
+ЛАЗАРЕВИЋ МИЛУТИН
+ЛАЗАРЕВИЋ НИКОЛА
+ЛАЗАРЕВИЋ САВА
+ЛАЗАРЕВИЋ СМИЉА
+ЛАЗАРЕВИЋ СТАНИША
+ЛАЗАРЕВИЋ СТАНОЈЕ
+ЛАЗАРЕВИЋ СТЕВАН
+ЛАЗАРЕВИЋ СТЕВАН
+ЛАЗАРЕВИЋ СВЕТИСЛАВ
+ЛАЗАРЕВИЋ ВЕЛИМИР
+ЛАЗАРЕВИЋ ВЕСНА
+ЛАЗАРЕВИЋ ВИДАН
+ЛАЗАРЕВИЋ ВЛАДИМИР
+ЛАЗАРЕВИЋ ВОЈИСЛАВ
+ЛАЗАРЕВИЋ ЗОРАН ДР ЛЕКАР
+ЛАЗАРЕВИЋ ЗОРАН
+ЛАЗАРЕВСКИ ЂОРЂЕ
+ЛАЗАРЕВСКИ ДРАГОЉУБ
+ЛАЗАРЕВСКИ СЛАВКО
+ЛАЗАРОВ ВЕСЕЛИН
+ЛАЗАРОВ ЗОРАН
+ЛАЗАРОВСКИ ДРАГАН
+ЛАЗЕНДИЋ ЛАЗАР
+ЛАЗЕНДИЋ НИКОЛА
+ЛАЗИЧИЋ БРАНКО
+ЛАЗИЧИЋ СТАНИЈА
+ЛАЗИЋ ЖАРКО
+ЛАЗИЋ ЖИВАН
+ЛАЗИЋ ЖИВАН
+ЛАЗИЋ ЖИВАН
+ЛАЗИЋ ЖИВКО
+ЛАЗИЋ ЖИВОЈИН
+ЛАЗИЋ ЖИВОРАД
+ЛАЗИЋ ЂОРЂЕ ДИПЛ ИНГ
+ЛАЗИЋ АНЂЕЛКА
+ЛАЗИЋ АНДРИЈА
+ЛАЗИЋ БОШКО
+ЛАЗИЋ БОЖИДАР
+ЛАЗИЋ БРАНИСЛАВА
+ЛАЗИЋ БРАНИСЛАВА
+ЛАЗИЋ БРАНИСЛАВ
+ЛАЗИЋ БРАНИСЛАВ
+ЛАЗИЋ БРАНИСЛАВ
+ЛАЗИЋ БРАНКА ДР
+ЛАЗИЋ БУДИМИР
+ЛАЗИЋ ДАМЈАНКА
+ЛАЗИЋ ДЕЈАН ДИПЛ ИНГ
+ЛАЗИЋ ДЕЈАН
+ЛАЗИЋ ДРАГАНА
+ЛАЗИЋ ДРАГАН
+ЛАЗИЋ ДРАГА
+ЛАЗИЋ ДРАГИЦА
+ЛАЗИЋ ДРАГОЉУБ
+ЛАЗИЋ ДРАГОМИР
+ЛАЗИЋ ДРАГО
+ЛАЗИЋ ДРАГУТИН
+ЛАЗИЋ ДУШАН
+ЛАЗИЋ ДУШАН
+ЛАЗИЋ ДУШАН
+ЛАЗИЋ ДУШАН
+ЛАЗИЋ ЕМИЛ ДР ЛЕКАР
+ЛАЗИЋ ГОЈКО
+ЛАЗИЋ ГОРОЉУБ
+ЛАЗИЋ ГРОЗДАНА
+ЛАЗИЋ ИВАНА
+ЛАЗИЋ ЈЕЛИСАВЕТА
+ЛАЗИЋ ЈОЦА
+ЛАЗИЋ ЈОВАНКА
+ЛАЗИЋ ЈОВАН
+ЛАЗИЋ ЈУЛКА
+ЛАЗИЋ КАТИЦА
+ЛАЗИЋ КАТИЦА
+ЛАЗИЋ КАТИЦА
+ЛАЗИЋ КОСТАДИН
+ЛАЗИЋ КОСТА
+ЛАЗИЋ ЛАЗАР
+ЛАЗИЋ ЛАЗАР
+ЛАЗИЋ ЉУБАН
+ЛАЗИЋ ЉУБИНКА
+ЛАЗИЋ ЉУБИСАВА
+ЛАЗИЋ ЉУБОМИР
+ЛАЗИЋ МАРИЈА
+ЛАЗИЋ МАРИЈА
+ЛАЗИЋ МАРИНКО
+ЛАЗИЋ МАРТА
+ЛАЗИЋ МИЛАДИН
+ЛАЗИЋ МИЛАДИН
+ЛАЗИЋ МИЛАДИН
+ЛАЗИЋ МИЛАН
+ЛАЗИЋ МИЛАН
+ЛАЗИЋ МИЛАН
+ЛАЗИЋ МИЛАН
+ЛАЗИЋ МИЛЕНА
+ЛАЗИЋ МИЛЕНА
+ЛАЗИЋ МИЛЕНКО
+ЛАЗИЋ МИЛЕНКО
+ЛАЗИЋ МИЛЕВКА
+ЛАЗИЋ МИЛИЦА
+ЛАЗИЋ МИЛИЦА
+ЛАЗИЋ МИЛИЦА
+ЛАЗИЋ МИЛИНКО
+ЛАЗИЋ МИЛИСАВ ПРОФЕСОР
+ЛАЗИЋ МИЛИСАВ
+ЛАЗИЋ МИЛИВОЈ
+ЛАЗИЋ МИЛОШ
+ЛАЗИЋ МИЛОРАД
+ЛАЗИЋ МИОДРАГ
+ЛАЗИЋ МИРА
+ЛАЗИЋ МИРЈАНА
+ЛАЗИЋ МИРКО
+ЛАЗИЋ МИРОЉУБ
+ЛАЗИЋ МИРОСЛАВ
+ЛАЗИЋ МЛАДЕН
+ЛАЗИЋ НАДА
+ЛАЗИЋ НАДА
+ЛАЗИЋ НАДА
+ЛАЗИЋ НАДЕЖДА
+ЛАЗИЋ НАЈДАН
+ЛАЗИЋ НЕВЕНА
+ЛАЗИЋ НИКОЛА ДИПЛ ИНГ
+ЛАЗИЋ НИКОЛА
+ЛАЗИЋ НИКОЛА
+ЛАЗИЋ НИКОЛА
+ЛАЗИЋ НИКОЛА
+ЛАЗИЋ ОБРЕН
+ЛАЗИЋ ПАЈА
+ЛАЗИЋ ПЕТАР
+ЛАЗИЋ ПЕТАР
+ЛАЗИЋ ПЕТАР
+ЛАЗИЋ ПЕТАР
+ЛАЗИЋ ПИРОШКА
+ЛАЗИЋ ПИРОШКА
+ЛАЗИЋ РАДА
+ЛАЗИЋ РАДЕ
+ЛАЗИЋ РАДИША
+ЛАЗИЋ РАДИВОЈ
+ЛАЗИЋ РАДМИЛА
+ЛАЗИЋ РАДОЈКА
+ЛАЗИЋ РАДОЈКО
+ЛАЗИЋ РАДОВАН
+ЛАЗИЋ РАЈКО
+ЛАЗИЋ РОДОЉУБ
+ЛАЗИЋ РУЖА
+ЛАЗИЋ САЊА
+ЛАЗИЋ САВА
+ЛАЗИЋ САВА
+ЛАЗИЋ САВА
+ЛАЗИЋ САВА
+ЛАЗИЋ СИМА ДР
+ЛАЗИЋ СЛАВКО
+ЛАЗИЋ СЛОБОДАН
+ЛАЗИЋ СЛОБОДАН
+ЛАЗИЋ СМИЉА
+ЛАЗИЋ СРБИСЛАВ
+ЛАЗИЋ СТАНИМИР
+ЛАЗИЋ СТАНКО
+ЛАЗИЋ СТЕВАНКА
+ЛАЗИЋ СТЕВАН
+ЛАЗИЋ СТЕВАН
+ЛАЗИЋ СТЕВАН
+ЛАЗИЋ СТЕВАН
+ЛАЗИЋ СТОЈАДИН
+ЛАЗИЋ СТОЈАН
+ЛАЗИЋ СВЕТОЗАР
+ЛАЗИЋ ТЕОДОР
+ЛАЗИЋ ТРАЈКО
+ЛАЗИЋ ВАЛЕРИЈА
+ЛАЗИЋ ВАСИЛИЈЕ
+ЛАЗИЋ ВЕЛИНКА
+ЛАЗИЋ ВЕСЕЛИН
+ЛАЗИЋ ВЕСНА
+ЛАЗИЋ ВЛАДИМИР
+ЛАЗИЋ ЗОРАН
+ЛАЗИЋ ЗОРИЦА
+ЛАЗИЋ ЗОРИЦА
+ЛАЗИЦАНИ АЉУШ
+ЛАЗИН БОГДАН
+ЛАЗИН БРАНКО
+ЛАЗИН ГОЈКО
+ЛАЗИН МИРОСЛАВА
+ЛАЗИН НАТАЛИЈА
+ЛАЗИН САВА
+ЛАЗИН САВА
+ЛАЗИН СИНИША
+ЛАЗИН СИНИША
+ЛАЗИН СЛОБОДАН
+ЛАЗИН ВОЈИН
+ЛАЗИН ЗОРИЦА
+ЛАЗИНИЦА РАДОЈКА
+ЛАЗОР МИРОН
+ЛАЗОР НИКОЛА
+ЛАЗОВ ТРАЈАН
+ЛАЗОВА ТРАЈКА
+ЛАЗОВИЋ ЧЕДО
+ЛАЗОВИЋ БОШКО
+ЛАЗОВИЋ БОЖИДАР
+ЛАЗОВИЋ ДЕЈАН ДИПЛ ИНГ
+ЛАЗОВИЋ ДРАГАН
+ЛАЗОВИЋ ЛАЗАР
+ЛАЗОВИЋ ЉИЉАНА
+ЛАЗОВИЋ МИЛЕНТИЈЕ
+ЛАЗОВИЋ МИЛЕТА
+ЛАЗОВИЋ МИЛИЦА
+ЛАЗОВИЋ МИЛОЈИЦА
+ЛАЗОВИЋ НЕНАД
+ЛАЗОВИЋ РАДОСАВ
+ЛАЗОВИЋ САВИЦА
+ЛАЗОВИЋ СЛОБОДАН
+ЛАЗОВИЋ СТАНКО
+ЛАЗОВИЋ СТЕВАН ПРОФЕСОР
+ЛАЗОВИЋ СВЕТИСЛАВ
+ЛАЗОВИЋ ВУЈАДИН
+ЛАЗОВИЋ ЗОРАН
+ЛАЗОВИЋ ЗОРАН
+ЛАЗОВСКИ СЛАВЧО
+ЛАЗУКИЋ ЧЕДО
+ЛАЗУКИЋ АНЂА
+ЛАЗУКИЋ ЈОВО
+ЛАЗУКИЋ КАЋА
+ЛАЗУКИЋ МИЛАН
+ЛАЗУКИЋ СЛОБОДАН
+ЛЕЧ ЕНДРЕ ДР
+ЛЕЧ ЕРИХ
+ЛЕЧАР ЈОСИП
+ЛЕЧАР КАРЛО
+ЛЕЧИЋ ЧЕДОМИР
+ЛЕЧИЋ ДОБРИЛА
+ЛЕЧИЋ ДОБРОСАВ
+ЛЕЧИЋ ГОЈКО
+ЛЕЧИЋ МИЛЕВА
+ЛЕЧИЋ МИЛОВАН
+ЛЕЧИЋ НАДА
+ЛЕЧИЋ НАДА
+ЛЕЧИЋ СИМО
+ЛЕЧИЋ СПАСОЈЕ
+ЛЕЧИЋ ВИДОСАВА
+ЛЕЧИЋ ВЛАДИМИР
+ЛЕШЧЕШЕН ЕДВАРД
+ЛЕШЧЕШЕН ЈЕЛЕНА
+ЛЕШИЋ ЂУРА
+ЛЕШИЋ СТОЈАН
+ЛЕШКИЋ ЂОРЂЕ
+ЛЕШКИЋ ВОЈИСЛАВ
+ЛЕШКОВ ЈОВАН
+ЛЕШКОВ МИЛАН
+ЛЕШКОВ МИОДРАГ
+ЛЕШКОВ ОЛГИЦА
+ЛЕШКОВИЋ ЗЛАТКО
+ЛЕШНИК ЗАГОРКА
+ЛЕШТАР СТЕВАН
+ЛЕШТАР ЗОРИЦА
+ЛЕЖАЈИЋ ВУКАДИН
+ЛЕЖАКОВ ЂУРЂИЦА
+ЛЕЖАКОВ МИЛАН
+ЛЕЖИМИРАЦ АЛЕКСАНДАР
+ЛЕЖИМИРАЦ БРАНКИЦА
+ЛЕЖИМИРАЦ ДОБРИНКА
+ЛЕЖИМИРАЦ СЛОБОДАН
+ЛЕЖИМИРАЦ СЛОБОДАН
+ЛЕЖИМИРАЦ СВЕТЛАНА
+ЛЕЖИМИРАЦ ВЛАДИМИР
+ЛЕЂАНА ЈЕЛЕНА
+ЛЕЂАНАЦ ЂУРЂИНКА
+ЛЕЂАНАЦ БРАНИСЛАВА
+ЛЕЂАНАЦ ДРАГОМИР
+ЛЕЂАНАЦ ЕМИЛИЈА
+ЛЕЂАНАЦ ГАВРА
+ЛЕЂАНАЦ ГОРИЦА
+ЛЕЂАНАЦ ЈОВАН
+ЛЕЂАНАЦ МИЛАН
+ЛЕЂАНАЦ СЕКУЛА
+ЛЕЂАНАЦ СЕКУЛА
+ЛЕЂАНАЦ СЛАВКО
+ЛЕЂАНАЦ СТЕВАН
+ЛЕЂАНАЦ СТЕВАН
+ЛЕЂАНАЦ ВИТОМИР
+ЛЕЂАНСКИ БРАНКА
+ЛЕЂЕНАЦ ДРАГАН
+ЛЕЂЕНАЦ НАДА
+ЛЕЂЕНАЦ СЛАВКО
+ЛЕЂЕНАЦ СТАНИМИР
+ЛЕЂЕНАЦ СТРАХИЊА
+ЛЕБАР ЗЛАТИЦА
+ЛЕБЕР ЗЛАТКО
+ЛЕБЛ АРПАД ДР ПРОФЕСОР
+ЛЕБОВИЋ МАРИНКО
+ЛЕБУРИЋ ВАСИЛИЈЕ
+ЛЕЦКИ ЂУЛА
+ЛЕЦКИ КРИШТОФ
+ЛЕЦКОВИЋ ЕМИЛ
+ЛЕДЕНКО АНТЕ МР
+ЛЕДЕР ЕМИНА
+ЛЕДЕР ОЛГА
+ЛЕГЕН СТОЈАН
+ЛЕГЕТИЋ БРАНКА
+ЛЕХОЦКИ ШАНДОР
+ЛЕХОЦКИ ФЕРЕНЦ
+ЛЕХОТСКИ КАРЛО
+ЛЕХР ДАВОР
+ЛЕИТНЕР НИКОЛА
+ЛЕКИ ЂУРА
+ЛЕКИ МАРИЈА
+ЛЕКИ СТЈЕПАН
+ЛЕКИ ТЕРЕЗИЈА
+ЛЕКИЋ ЖИВАДИН
+ЛЕКИЋ ЂОРЂИЈЕ
+ЛЕКИЋ БОГДАН
+ЛЕКИЋ БРАНКА
+ЛЕКИЋ БРАНКО
+ЛЕКИЋ ДЕЈАН
+ЛЕКИЋ ДРАГОЉУБ
+ЛЕКИЋ ДУШАН
+ЛЕКИЋ ЈОРДАН
+ЛЕКИЋ ЉУБОМИР
+ЛЕКИЋ ЉУБОМИР
+ЛЕКИЋ МИЛАДИН
+ЛЕКИЋ МИЛАНКА
+ЛЕКИЋ НЕЂО
+ЛЕКИЋ НИКОЛА
+ЛЕКИЋ СИМЕВУН
+ЛЕКИЋ СТАНКА
+ЛЕКИЋ СТЕВАН
+ЛЕКИЋ ТАТЈАНА
+ЛЕКИЋ ТЕОДОР
+ЛЕКИЋ ВЕСЕЛКО
+ЛЕКИЋ ЗАГОРКА
+ЛЕКИЋ ЗДРАВКО
+ЛЕКИН ЉУБИЦА
+ЛЕКИН МИЛАН
+ЛЕКИН МИЛАН
+ЛЕКИН МИЛАН
+ЛЕКИН ЗДРАВКО
+ЛЕКО ЂЕРЂ
+ЛЕКО АЛЕКСАНДАР
+ЛЕКО БОРИСЛАВ
+ЛЕКО МЛАДЕН
+ЛЕКОВИЋ ДОБРИЛО
+ЛЕКОВИЋ ДРАГИША
+ЛЕКОВИЋ МИЛОШ
+ЛЕКОВИЋ МИРКО
+ЛЕКОВИЋ НОВАК
+ЛЕКОВИЋ СЛОБОДАНКА
+ЛЕКОВИЋ ТОМИСЛАВ
+ЛЕКОВИЋ ВЕРИЦА
+ЛЕЛЕА ТОДОР
+ЛЕЛЕОВИЋ БОРО
+ЛЕЛИЋ ЖЕЉКО
+ЛЕЛИЋ МАХМУТ
+ЛЕЛИЋ МАРИЈА
+ЛЕЛИЋ МИРСАМ
+ЛЕЛИЋ ЗУМРЕТА
+ЛЕЛИК ЈАНОШ
+ЛЕЛИК ЈЕНЕ
+ЛЕЛОВИЋ РАДЕ
+ЛЕМАИЋ ЖЕЉКО
+ЛЕМАИЋ СОФИЈА
+ЛЕМАЈИЋ БРАНКО
+ЛЕМАЈИЋ ЦЕЦИЛИЈА
+ЛЕМАЈИЋ КАТИЦА
+ЛЕМАЈИЋ МАРИЈА
+ЛЕМАЈИЋ МИЛАН
+ЛЕМАЈИЋ МИЛАН
+ЛЕМАЈИЋ МИРОСЛАВ
+ЛЕМАЈИЋ РАДОЈИЦА
+ЛЕМАЈИЋ СЛОБОДАН
+ЛЕМАЈИЋ ВЛАДИМИР
+ЛЕМХЕ ЈЕЛИСАВЕТА
+ЛЕМИЋ БОСА
+ЛЕМИЋ ДРАГИЊА
+ЛЕМИЋ ЛАЗАР
+ЛЕМИЋ МИЛЕНКО
+ЛЕМИЋ НЕБОЈША
+ЛЕМИЋ ВЛАДИМИР
+ЛЕН ПИРОШКА
+ЛЕНЧА АНДРИЈА
+ЛЕНЧА КАТА
+ЛЕНЂЕЛ ЂУРО
+ЛЕНЂЕЛ ЈОВАН
+ЛЕНЂЕЛ ЈОВАН
+ЛЕНЂЕЛ КАРОЉ
+ЛЕНЂЕЛ МИХАЈЛО
+ЛЕНАРД АРПАД
+ЛЕНАРД ПЕТАР
+ЛЕНАРТ КАТИЦА
+ЛЕНАРТИЋ ЂОРЂЕ
+ЛЕНАТОВ ДУШАН
+ЛЕНДИЋ ЈОСИП
+ЛЕНДВАЈИ АНДРИЈА
+ЛЕНДВАЈИ ЈОЖЕФ
+ЛЕНДВАЈИ ЉИЉАНА
+ЛЕНЕР АНДРАШ
+ЛЕНЕР ДЕЖЕ
+ЛЕНЕРТ АНТАЛ
+ЛЕНЕРТ ПЕТАР ДР ДОЦЕНТ
+ЛЕНЕРТ СТЕВАН
+ЛЕНХАРД ЈАНОШ
+ЛЕНКЕШ ЈОВАН
+ЛЕНКЕШ ЛАСЛО
+ЛЕОВАЦ МИЛИВОЈЕ
+ЛЕОВАЦ ВУКАДИН
+ЛЕПЧЕВИЋ МИЛЕТА
+ЛЕПШАНОВИЋ ЛАЗАР ДР ЛЕКАР
+ЛЕПШИЋ ДРАГИЦА
+ЛЕПАР ШАНДОР
+ЛЕПАР ЈЕЛИЦА
+ЛЕПАР ЛАДИСЛАВ
+ЛЕПЕШ ЛАДИСЛАВ
+ЛЕПЕШ ТИБОР ДР ПРОФ
+ЛЕПХАФТ ПАЛ
+ЛЕПИР АНЂЕЛКА
+ЛЕПИР БОСИЉКА
+ЛЕПИР МИЛОРАД
+ЛЕПИР ВЕЛИМИР
+ЛЕПОША РУДОЛФ
+ЛЕПОЈЕВ БРАНКО
+ЛЕПОЈЕВ САВА
+ЛЕПОЈЕВ ВАСИЛИЈЕ
+ЛЕПОЈЕВИЋ ЖИВОРАД
+ЛЕПОЈЕВИЋ СТАНКО
+ЛЕПОРИС ЈАН
+ЛЕПОТИЋ ЖИВАН
+ЛЕПОТИЋ МИЛЕНКО
+ЛЕПОТИЋ НИКОЛА
+ЛЕПОВИЋ МИКА
+ЛЕПУША ЗДЕНКО
+ЛЕР ИВАН
+ЛЕРИЋ ЕРЖЕБЕТ
+ЛЕРИК АНДРАШ
+ЛЕРИК ИШТВАН
+ЛЕРИК МИКЛОШ
+ЛЕРИНЦ АНИКО
+ЛЕРИНЦ ДРАГОСЛАВ
+ЛЕРИНЦ ЈАНОШ
+ЛЕРИНЦ КАРЛО
+ЛЕРИНЦ КАТАЛИН
+ЛЕРИНЦ ЛАСЛО
+ЛЕРИНЦ ЛАСЛО
+ЛЕРИНЦ ЛЕО
+ЛЕРИНЦ ЛЕО
+ЛЕРО БОЖИДАР
+ЛЕРО ВЛАДИМИР
+ЛЕСКОВАЦ ЂОРЂЕ
+ЛЕСКОВАЦ ДРАГАН
+ЛЕСКОВАЦ ЉУБИЦА
+ЛЕСКОВАЦ МИЛАН
+ЛЕСКОВАЦ МИЛАН
+ЛЕСКОВАЦ МИЛЕТА
+ЛЕСКОВАЦ МЛАДЕН ПРОФЕСОР
+ЛЕСКОВАЦ РАДОМИР
+ЛЕСКОВАЦ СТАНКА
+ЛЕСКОВАЦ ВЛАДИМИР ДР
+ЛЕСКОВАЦ ВОЈИСЛАВ
+ЛЕТАЈЕВ АЛЕКСАНДАР
+ЛЕТАЈЕВ АЛЕКСАНДАР
+ЛЕТАЈЕВ МИХАЈЛО
+ЛЕТАЈЕВ ВЛАДИМИР
+ЛЕТИЋ ЧЕДО
+ЛЕТИЋ ЖАРКО
+ЛЕТИЋ ЖИВА
+ЛЕТИЋ ЖИВКО ДИПЛ ИНГ
+ЛЕТИЋ ЂОКО
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ ЂОРЂЕ
+ЛЕТИЋ АНИЦА
+ЛЕТИЋ АНИЦА
+ЛЕТИЋ АРИШКО
+ЛЕТИЋ БОГДАН
+ЛЕТИЋ БОРИВОЈ
+ЛЕТИЋ БРАНИСЛАВ
+ЛЕТИЋ БРАНИСЛАВ
+ЛЕТИЋ БРАНКА
+ЛЕТИЋ БРАНКО
+ЛЕТИЋ ДАРИНКА
+ЛЕТИЋ ДРАГАН
+ЛЕТИЋ ДРАГИША
+ЛЕТИЋ ДРАГИЦА
+ЛЕТИЋ ДУШАН
+ЛЕТИЋ ДУШАН
+ЛЕТИЋ ГАВРА
+ЛЕТИЋ ГОЈКО
+ЛЕТИЋ ГОРДАНА ДР
+ЛЕТИЋ ИВАН
+ЛЕТИЋ ЈОВАНКА
+ЛЕТИЋ ЈОВАН
+ЛЕТИЋ КОСТА
+ЛЕТИЋ ЛАЗАР
+ЛЕТИЋ ЛАЗАР
+ЛЕТИЋ ЛАЗАР
+ЛЕТИЋ ЉУБИША
+ЛЕТИЋ ЉУБИЦА
+ЛЕТИЋ МАРИЦА
+ЛЕТИЋ МАРИЈА
+ЛЕТИЋ МАРИЈА
+ЛЕТИЋ МАРИНКО
+ЛЕТИЋ МИЛАН
+ЛЕТИЋ МИЛАН
+ЛЕТИЋ МИЛАН
+ЛЕТИЋ МИЛАН
+ЛЕТИЋ МИЛИЦА
+ЛЕТИЋ МИЛИЦА
+ЛЕТИЋ МИЛИЦА
+ЛЕТИЋ МИЛОРАД
+ЛЕТИЋ МИЛОРАД
+ЛЕТИЋ МИЛОРАД
+ЛЕТИЋ МИЛОВАН
+ЛЕТИЋ МИОДРАГ
+ЛЕТИЋ МИРОСЛАВ
+ЛЕТИЋ МИРОСЛАВ
+ЛЕТИЋ НЕНАД
+ЛЕТИЋ НЕВЕНА
+ЛЕТИЋ ОЛГА
+ЛЕТИЋ ОЛГА
+ЛЕТИЋ ОЛГИЦА
+ЛЕТИЋ ПЕРА
+ЛЕТИЋ РАДА
+ЛЕТИЋ РАДЕ
+ЛЕТИЋ РАДМИЛА
+ЛЕТИЋ САВА
+ЛЕТИЋ САВА
+ЛЕТИЋ СИМКА
+ЛЕТИЋ СЛОБОДАН
+ЛЕТИЋ СТЕВАН
+ЛЕТИЋ СТЕВАН
+ЛЕТИЋ СТЕВАН
+ЛЕТИЋ СТОЈАН ЛЕКАР
+ЛЕТИЋ СВЕТИСЛАВ
+ЛЕТИЋ СВЕТОЗАР
+ЛЕТИЋ ТОДОР
+ЛЕТИЋ ВЕРА
+ЛЕТИЋ ВЕСНА
+ЛЕТИЋ ВИДА
+ЛЕТИЋ ВЛАДИМИР
+ЛЕТИЋ ВЛАДИСЛАВА
+ЛЕТИЋ ЗДРАВКО
+ЛЕТИЋ ЗОРАН
+ЛЕТИЋ ЗОРАН
+ЛЕТИЋ ЗОРАН
+ЛЕТИЋ ЗОРКА
+ЛЕТИЦА ИВАНА
+ЛЕТИЦА МИЛАН
+ЛЕТИЦА ТОМИСЛАВ
+ЛЕТО РУЖИЦА
+ЛЕТОНАИ ЈАНОШ
+ЛЕТОНАИ ЛАСЛО
+ЛЕВА ИЛИНКА
+ЛЕВАИ ГАБОР
+ЛЕВАИ КАТАЛИН
+ЛЕВАИ НАНДОР
+ЛЕВАИ СТЕВАН
+ЛЕВАЈАЦ ВЕРА
+ЛЕВАКОВ МАРА
+ЛЕВАКОВ СЛОБОДАН
+ЛЕВАКОВ ВОЈИСЛАВ
+ЛЕВАРСКИ МИХАЈЛО
+ЛЕВАТИЋ МАТИЈА
+ЛЕВАТИЋ МИЛКА
+ЛЕВАТИЋ МИЛКИЦА
+ЛЕВЕНСКИ ТАДЕЈ
+ЛЕВИ ГОРАН
+ЛЕВИ ЛЕОН
+ЛЕВИ ВИКТОР
+ЛЕВИЋ ЉУБИНКО
+ЛЕВНАЈИЋ ДРАГАН
+ЛЕВНАЈИЋ МИЛКА
+ЛЕВНАЈИЋ МОМЧИЛО
+ЛЕЗЕЧЕВ СИНИША
+ЛИЧАНИН ДРАГАН
+ЛИЧАНИН МАРИЈА
+ЛИЧАНИН СЛАВКО
+ЛИЧЕН ХОТИМИР
+ЛИЧЕН ЈОСИП ДИПЛ ИНГ
+ЛИЧЕН ЉУДМИЛА
+ЛИЧИНА ЂОРЂЕ
+ЛИЧИНА БРАНКИЦА
+ЛИЧИНА ДАНИЛО
+ЛИЧИНА ДМИТАР
+ЛИЧИНА ДРАГО
+ЛИЧИНА ДУШАН
+ЛИЧИНА ЛУКА
+ЛИЧИНА МАРИЈА
+ЛИЧИНА МИЛАНКА
+ЛИЧИНА МИЛАН
+ЛИЧИНА МИЛЕ
+ЛИЧИНА ПРЕДРАГ
+ЛИЧИНА РАДЕ
+ЛИЧИНА ВЕЛИБОР
+ЛИЧИНА ЗОРАН
+ЛИЧИНАР ДРАГАН
+ЛИЧИНАР НЕДЕЉКО
+ЛИЧИНАР СЛАВКО
+ЛИЧИНАР СТАНКО
+ЛИЧИНИЋ ДУШАН
+ЛИЧИНИЋ НАДА
+ЛИШЧИЋ ВЕЛИНКА
+ЛИШИЋ ЂУРЂИНКА
+ЛИШИЋ МАРИЦА
+ЛИШКОВИЋ МИРОСЛАВ
+ЛИШКОВИЋ МИРОСЛАВ
+ЛИБЕР СТЕВАН
+ЛИБРИЋ ИВАН
+ЛИБРИЋ ИВАН
+ЛИБРИЋ МАРИЈАН
+ЛИДЛОФ ПИРОШКА
+ЛИДЛОФ РУДОЛФ
+ЛИДЛОФ ЗОЛТАН
+ЛИХТЕНТАЛ АНТАЛ
+ЛИХТЕНТАЛ ЕЛИЗАБЕТА
+ЛИХВАРЧЕК АНДРИЈА
+ЛИКАВЕЦ ЈАРОМИР
+ЛИКАВЕЦ КАРЛО ДИПЛ ИНГ
+ЛИКИЋ БОРИСЛАВ
+ЛИКИЋ БУДИСЛАВ
+ЛИКОДРИЋ МИЛОВАН
+ЛИЛЧЕВ ДАРИНКА
+ЛИЛИ ВЕРА
+ЛИЛИЋ ЂОРЂЕ
+ЛИЛИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ЛИЛИЋ МАРИЈАНА
+ЛИЛИЋ МИЛЕНА
+ЛИЛИЋ МИОДРАГ
+ЛИЛИЋ СРБИСЛАВ
+ЛИЛИЋ ТАТЈАНА
+ЛИЛИЋ ВЕЛИМИР
+ЛИМАНИ ШАЋИР
+ЛИМАНИ МЕМИШ
+ЛИМАНИ НАЗИФ
+ЛИМАНОВИЋ НАЗИФ
+ЛИМАНОВСКИ ИБРАХИМ
+ЛИМАНОВСКИ МУСАФЕТ
+ЛИМБОЦКИ ПЕТАР
+ЛИМБУРГЕР ЈОЖЕФ
+ЛИНДЕМАН ЈЕЛЕНА
+ЛИНДЕМАН РУДОЛФ
+ЛИНДНЕР МАРГИТ
+ЛИНИЋ ДРАГАН
+ЛИЊАК ДРАГОМИР
+ЛИНКО КОЛОМАН
+ЛИПАИ КОРНЕЛ
+ЛИПАНОВИЋ ГОЈКО
+ЛИПНИЧКИ ЗОРИЦА
+ЛИПОТИЋ ПЕТАР
+ЛИПОВАЦ ДУШАН
+ЛИПОВАЦ МАТИЈА
+ЛИСИЧИН НАДА
+ЛИСИЧИН ТОМИСЛАВ
+ЛИСИЋ МАРИЦА
+ЛИСИЦА МИХАЈЛО
+ЛИСИЦА МИХАЈЛО
+ЛИСИЦА МИЛОШ АДВОКАТ
+ЛИСОВ КАТИЦА
+ЛИСОВ МИЛИМИР
+ЛИСОВ МИРКО
+ЛИСОВАЦ ЗОРАН
+ЛИСУЛ АЛЕКСАНДАР
+ЛИСУЛ МИЛКА
+ЛИСУЛОВ ОЛГА
+ЛИСУЛОВ РАТОМИР
+ЛИСУЛОВ ЗОРАН
+ЛИТАВСКИ ВЛАДИМИР
+ЛИТНЕР ЈОВАН
+ЛИТРИЧИЋ ГАВРА
+ЛИТРИЧИН БОГДАН
+ЛИТРИЧИН ГЕНА
+ЛИТРИЧИН-ВЕБЕР БОГДАНКА
+ЛИТРИЧИН ВЕЛИМИР
+ЛИТВЈАК ПАВЛЕ
+ЛИТВЈАК ВЛАДИМИР
+ЛИВАДА МИЛАН
+ЛИВАДА МИЛОШ
+ЛИВАЈА ЈОЗО
+ЛИВАЈА ЈУРЕ
+ЛИЗАТОВИЋ БРАНКО
+ЉАЧЕВИЋ БОЖИДАР
+ЉАЈИЋ ТАИП
+ЉАЉИЋ ЂОРЂЕ
+ЉАТИФИ КАДРИ
+ЉАВРОШКА ПАВЕЛ
+ЉАВРОШКА ПАВЕЛ
+ЉЕШЕВИЋ ЉИЉАНА ДР
+ЉЕШЕВИЋ МАРИЈА
+ЉЕШЊАК МИРОЉУБ
+ЉЕШЊАК МОМЧИЛО
+ЉЕЉАК МЕХО
+ЉЕПОЈЕВИЋ СТЕВАН
+ЉИКАР ЕВГЕНИЈЕ
+ЉИКАР МИХАЈЛО ДИПЛ ИНГ
+ЉИКАР ВЕРОНА
+ЉИКАР ВЛАДИМИР ЛЕКАР
+ЉИЉАК ЉИЉАНА
+ЉИЉАК МИЛАН
+ЉИЉАК МИЛАН
+ЉИЉАК МИЛЕНКО
+ЉИЉАК МИЛОРАД
+ЉИЉАК МИОДРАГ
+ЉИЉАК МИРКО
+ЉИЉАК МИРОСЛАВ
+ЉИЉАК НАДА
+ЉИЉАК НАДЕЖДА
+ЉИЉАК ПАЈО
+ЉИЉАК САВА
+ЉИЉАК СЛАВКО
+ЉИЉАК ВЛАДИМИР
+ЉИЉАК ВЛАДО
+ЉУШТИНА ЖИВАН
+ЉУШТИНА ЂОРЂЕ
+ЉУШТИНА ЈЕЛЕНА
+ЉУШТИНА ЉУБИЦА
+ЉУШТИНА МИЛАН
+ЉУШТИНА МИЛАН
+ЉУШТИНА МИЛОВАН
+ЉУШТИНА НИКОЛА
+ЉУШТИНА ОЛГА
+ЉУШТИНА СОФИЈА
+ЉУШТИНА ВОЈКА
+ЉУШТИНОВ НАДА
+ЉУБАШЧИК АНТОН
+ЉУБАНИЋ МАРА
+ЉУБАНОВИЋ МИЛЕНКО
+ЉУБАНОВИЋ РАДИСЛАВ
+ЉУБЕНКОВИЋ МИЛОВАН
+ЉУБЕНКОВИЋ ПЕТАР
+ЉУБЕНКОВИЋ ПЕТАР
+ЉУБИЧИЋ ЖАРКО
+ЉУБИЧИЋ ЖАРКО
+ЉУБИЧИЋ ЖИВКА
+ЉУБИЧИЋ ЂУРЂИНКА
+ЉУБИЧИЋ БЛАЖО
+ЉУБИЧИЋ БОРИСЛАВ
+ЉУБИЧИЋ ДАНКО
+ЉУБИЧИЋ ДАРА
+ЉУБИЧИЋ ДРАГУТИН
+ЉУБИЧИЋ ЈОВИЦА
+ЉУБИЧИЋ ЛАЗАР
+ЉУБИЧИЋ ЛУКА
+ЉУБИЧИЋ МАРИЈАН
+ЉУБИЧИЋ МАРИНА
+ЉУБИЧИЋ МИХАЈЛО
+ЉУБИЧИЋ МИЛОШ ЛОКАЛ
+ЉУБИЧИЋ МИЛОШ
+ЉУБИЧИЋ МИРОСЛАВА
+ЉУБИЧИЋ МИРОСЛАВ
+ЉУБИЧИЋ НАДА
+ЉУБИЧИЋ НАДА
+ЉУБИЧИЋ НЕВЕНКА
+ЉУБИЧИЋ НИКОЛА
+ЉУБИЧИЋ ПЕТАР
+ЉУБИЧИЋ ПЕТАР
+ЉУБИЧИЋ РАДОСЛАВ
+ЉУБИЧИЋ РАДОСЛАВ
+ЉУБИЧИЋ РАТКО
+ЉУБИЧИЋ РЕЉА
+ЉУБИЧИЋ РУДОЛФ
+ЉУБИЧИЋ СЛОБОДАН
+ЉУБИЧИЋ СТАНКО
+ЉУБИЧИЋ СТЕВАН
+ЉУБИЧИЋ СУЗАНА
+ЉУБИЧИЋ ТАЛИНКА
+ЉУБИЧИЋ ВЛАДИМИР
+ЉУБИЧИЋ ЗОРА
+ЉУБИШЕВИЋ МИЛОШ
+ЉУБИШИЋ БРАНИСЛАВ
+ЉУБИШИЋ МИЛАНКО
+ЉУБИШИЋ ПЕТАР
+ЉУБИШИЋ СУЗАНА
+ЉУБИЋ АНЂЕЛКА
+ЉУБИЋ АНДРИЈА
+ЉУБИЋ ИВАН
+ЉУБИЋ ЈЕЛЕНА
+ЉУБИЋ МИРЈАНА
+ЉУБИЋ НАТАЛИЈА
+ЉУБИЋ ПЕРО
+ЉУБИЋ РАЈКО
+ЉУБИБРАТИЋ ЕДО
+ЉУБИБРАТИЋ ЛЕО
+ЉУБИНАЦ МИЛАНКА
+ЉУБИНКОВИЋ АЛЕКСАНДРА
+ЉУБИНКОВИЋ БОГОЉУБ
+ЉУБИНКОВИЋ ЛЕНКА
+ЉУБИНКОВИЋ МАРИЈА
+ЉУБИНКОВИЋ МИЛАНКО
+ЉУБИНКОВИЋ МИЛАН
+ЉУБИНКОВИЋ МИЛОРАД
+ЉУБИНКОВИЋ ПАВЛЕ
+ЉУБИНКОВИЋ САВА
+ЉУБИНКОВИЋ СТЕВАН
+ЉУБИНКОВИЋ ВЕЛИМИР
+ЉУБИСАВЉЕВИЋ ДАНИЦА
+ЉУБИСАВЉЕВИЋ МИША
+ЉУБИСАВЉЕВИЋ МИЛАН
+ЉУБИСАВЉЕВИЋ МИЛИЦА
+ЉУБОЈА ДРЕНКА
+ЉУБОЈА МЛАДЕН
+ЉУБОЈА СИЛВИЈА
+ЉУБОЈЕВ БИЉАНА
+ЉУБОЈЕВ ИВАН
+ЉУБОЈЕВ ЈЕЛЕНА
+ЉУБОЈЕВ ЛАЗАР
+ЉУБОЈЕВ МАЈА
+ЉУБОЈЕВ ПЕТАР МР
+ЉУБОЈЕВ РАЈКО
+ЉУБОЈЕВИЋ ЧЕДОМИР
+ЉУБОЈЕВИЋ АНЂЕЛИЈА
+ЉУБОЈЕВИЋ БОРИСЛАВ
+ЉУБОЈЕВИЋ БРАНКО
+ЉУБОЈЕВИЋ ДЕСИМИР
+ЉУБОЈЕВИЋ ДРАГИЦА
+ЉУБОЈЕВИЋ ИЛИЈА
+ЉУБОЈЕВИЋ ЈОВАН
+ЉУБОЈЕВИЋ ЈУЛКА
+ЉУБОЈЕВИЋ КАТИЦА
+ЉУБОЈЕВИЋ КОСТА
+ЉУБОЈЕВИЋ МАРКО
+ЉУБОЈЕВИЋ МАРКО
+ЉУБОЈЕВИЋ МИХАЈЛО
+ЉУБОЈЕВИЋ МИЛЕНА
+ЉУБОЈЕВИЋ МИЛИЦА
+ЉУБОЈЕВИЋ МИРКО
+ЉУБОЈЕВИЋ ОСТОЈА
+ЉУБОЈЕВИЋ ПЕТАР
+ЉУБОЈЕВИЋ РУЖА
+ЉУБОЈЕВИЋ РУЖИЦА
+ЉУБОЈЕВИЋ СЛАВКО
+ЉУБОЈЕВИЋ СЛОБОДАН
+ЉУБОЈЕВИЋ СТЕВАН
+ЉУБОЈЕВИЋ ТОДОР
+ЉУБОЈЕВИЋ ВЕЉКО
+ЉУБОЈЕВИЋ ВЛАДИМИР
+ЉУБОЈЕВИЋ ВЛАДИМИР
+ЉУБОЈЕВИЋ ВОЈИСЛАВ
+ЉУБОТИН ЈЕЛЕНА
+ЉУБОТИН РАДОСЛАВ
+ЉУБОТИНА-БРКИЋ РАЈНА
+ЉУБОВИЋ МАРИНКО
+ЉУБУШЧИК ПЕТАР
+ЉУКОВЧАНИН МИРЈАНА
+ЉУКОВЧАНИН ЗОРИЦА
+ЉУМОЖЕВСКИ ЈЕЛЕНА
+ЉУМОЖЕВСКИ МАРИЈА
+ЉУМОВИЋ ДАНИЦА
+ЉУТИЋ СТАНИКА
+ЉУТВИ РАДИВОЈ
+ЛОЧКИ ЈЕЛИСАВЕТА
+ЛОШИЋ МИЛОРАД
+ЛОШИЋ МИЛОРАД
+ЛОШИЋ МИТРА
+ЛОШОНЦ ХЕНРИЈЕТЕ
+ЛОБОДА АНТУН
+ЛОБОДА СТЕВАН
+ЛОЦ АНДРАШ
+ЛОЦ ЈОЖЕФ
+ЛОЦИ ИШТВАН
+ЛОДИ ГАБОР
+ЛОДИ ЈЕЛИСАВЕТА
+ЛОДИ ЛАСЛО
+ЛОГУНОВ АЛЕКСЕЈ ДИПЛ ИНГ
+ЛОЈАНИЧИЋ РАДИВОЈЕ
+ЛОЈАНИЦА БОШКО
+ЛОЈНА ИВАН
+ЛОЈОВИЋ БОЖИЦА
+ЛОЈОВИЋ ОСТОЈА
+ЛОЈОВИЋ РАНКО
+ЛОЈПУР МИЛОВАН
+ЛОКАС ДАРКО
+ЛОКИЋ ДАНИЦА
+ЛОКИЋ ЈЕЛЕНА
+ЛОКИЋ ЉУБИЦА
+ЛОКИЋ МИЛОВАН
+ЛОКИЋ ВЕРА
+ЛОЛИЋ БОШКО
+ЛОЛИЋ ДОБРИНКА
+ЛОЛИЋ МАРИЈА
+ЛОЛИЋ МИЛАН
+ЛОЛИЋ НЕДЕЉКО
+ЛОЛИЋ СЛАВКА
+ЛОЛИЋ ТОДОР
+ЛОЛИН ДЕЈАН
+ЛОЛИН ЗОРИЦА
+ЛОМЕН ЕЛЕНА
+ЛОМИЋ МОМИР
+ЛОМИЋ РАДОВАН
+ЛОМИЋ СЛОБОДАН
+ЛОМЈАНСКИ АДАМ
+ЛОМЈАНСКИ СТЕВАН
+ЛОМОВИЋ БРАТИСЛАВ МР ОЕЦ И ИУРЕ
+ЛОМОВИЋ МИХАИНА
+ЛОМОВИЋ МИХАИНА
+ЛОМПАР ДРАГАН
+ЛОМПАР МИТАР
+ЛОМПАР ПЕТАР
+ЛОМПАР САВА
+ЛОНЧАР ЧЕДОМИР
+ЛОНЧАР ЂУРО
+ЛОНЧАР БОШКО
+ЛОНЧАР БОЖИДАР
+ЛОНЧАР БОЈАНА
+ЛОНЧАР БОРИС
+ЛОНЧАР БРАНИСЛАВ
+ЛОНЧАР ДРАГАН
+ЛОНЧАР ДУШАН
+ЛОНЧАР ДУШАН
+ЛОНЧАР ДУШАН
+ЛОНЧАР ДУШАН
+ЛОНЧАР ГОЈКО
+ЛОНЧАР ГОРДАНА
+ЛОНЧАР ИЛИЈА
+ЛОНЧАР ЈЕЛИЦА
+ЛОНЧАР ЈОВАН
+ЛОНЧАР КОСТА
+ЛОНЧАР КСЕНИЈА
+ЛОНЧАР ЉУБИЦА
+ЛОНЧАР ЉУБИЦА
+ЛОНЧАР ЉУБИЦА
+ЛОНЧАР МАРКО
+ЛОНЧАР МИХАЈЛО
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛАН
+ЛОНЧАР МИЛЕНКО
+ЛОНЧАР МИЛЕ
+ЛОНЧАР МИЛЕ
+ЛОНЧАР МИЛОРАД
+ЛОНЧАР МИРКО
+ЛОНЧАР МИРКО
+ЛОНЧАР НЕДЕЉКО
+ЛОНЧАР НЕВЕНКА
+ЛОНЧАР НИКОЛА
+ЛОНЧАР НИКОЛА
+ЛОНЧАР ПАНТЕЛИЈА
+ЛОНЧАР ПРЕДРАГ
+ЛОНЧАР РАДЕ
+ЛОНЧАР РАДОМИР
+ЛОНЧАР РАДОМИР
+ЛОНЧАР СИМО
+ЛОНЧАР СЛАВКО
+ЛОНЧАР СЛОБОДАН
+ЛОНЧАР-СРЕМЧЕВ ВЕРИЦА
+ЛОНЧАР СТЕВО
+ЛОНЧАР ТАТЈАНА
+ЛОНЧАР ВЕЛИМИР
+ЛОНЧАР ВЕРА
+ЛОНЧАР ВЛАДА
+ЛОНЧАР ВЛАДИМИРКА ДР
+ЛОНЧАР ВУКАШИН
+ЛОНЧАР ЗДРАВКО
+ЛОНЧАР ЗОРАН
+ЛОНЧАРЕВИЋ ЖИВОТА
+ЛОНЧАРЕВИЋ ИГЊАТ
+ЛОНЧАРЕВИЋ МИЛАН
+ЛОНЧАРЕВИЋ ПУНИША
+ЛОНЧАРЕВИЋ РАДОВАН
+ЛОНЧАРЕВИЋ ВИТОМИР
+ЛОНЧАРИЋ РАДМИЛА
+ЛОНЧАРСКИ ДРАГАНА
+ЛОНЧАРСКИ ДРАГИША
+ЛОНЧАРСКИ ПРЕДРАГ
+ЛОНЧАРСКИ САВА
+ЛОНЧАРСКИ СРЕДОЈЕ
+ЛОНЧИНА МИЉА
+ЛОНЧИНА ПРЕДРАГ
+ЛОНЦИЋ БЕРИСЛАВА
+ЛОНЦИЋ РАЈКО
+ЛОПАТИН НИКОЛА
+ЛОПИЧИЋ ШПИРО
+ЛОПИЧИЋ БРАНКО
+ЛОПИЧИЋ БРАНКО
+ЛОПИЧИЋ ЈЕЛИЦА
+ЛОПИЧИЋ ЈОВАН
+ЛОПИЧИЋ МИОДРАГ
+ЛОПИЧИЋ ОЛГА
+ЛОПИЧИЋ ВЕСЕЛИН
+ЛОПУШАНСКИ ДУШИЦА
+ЛОПУШИНА АЛЕКСАНДАР
+ЛОПУШИНА ЈЕЛИЦА
+ЛОРБЕК ЈОСИП
+ЛОРЕК ЈОВАН
+ЛОРЕНЦИН МИЛАН
+ЛОТИНА ДРАГАН
+ЛОТИНА МИРОСЛАВ
+ЛОТИНА СМИЉА
+ЛОВЧЕВИЋ ДАРИНКА
+ЛОВЧЕВИЋ ДРАГОСЛАВ
+ЛОВЧЕВИЋ МИЛИЋ
+ЛОВЧЕВИЋ ТОМИСЛАВ
+ЛОВЧЕВИЋ ВОЈИСЛАВ
+ЛОВАШ РОЗАЛИЈА
+ЛОВАДИНОВ СВЕТОЗАР
+ЛОВАС ИВАН
+ЛОВИЋ КУЗМАН
+ЛОВРЕ ЧЕДО
+ЛОВРЕ ДРАГАН
+ЛОВРЕ ЉИЉАНА
+ЛОВРЕ МИЛОШ
+ЛОВРЕ САВО
+ЛОВРЕ СЛАВКО
+ЛОВРЕ СТЕВАН
+ЛОВРЕКОВИЋ ТОМИСЛАВ
+ЛОВРЕКОВИЋ ЗЛАТКО
+ЛОВРЕН СЛАВКО
+ЛОВРЕНЧИЋ КАТИЦА
+ЛОВРЕНОВИЋ МИРОСЛАВА
+ЛОВРЕНСКИ ДУШАН
+ЛОВРЕНСКИ ДУШАН
+ЛОВРИЋ ЖЕЉКО
+ЛОВРИЋ ЖЕЉКО
+ЛОВРИЋ ЂУРА
+ЛОВРИЋ ДИВНА
+ЛОВРИЋ МАРКО
+ЛОВРИЋ НИКОЛА
+ЛОВРИЋ ПЕТАР
+ЛОВРИЋ РАЈКО
+ЛОВРИЋ РАТКО
+ЛОВРИЋ СЛАВКО
+ЛОВРИЋ СЛАВКО
+ЛОВРИЋ СТЕВАН
+ЛОВРИЋ СТЕВАН
+ЛОВРИЋ ТАТЈАНА
+ЛОВРИЋ ТРИВУН
+ЛОВРИН ДАРА
+ЛОВРИН ДРАГАН
+ЛОЗАНЧИЋ НИКО
+ЛОЗАНИЋ ИВАН ДИПЛ ИНГ
+ЛОЗАНИЋ-ПАВЛОВИЋ ЂУРЂИНКА
+ЛОЗАНОВ ЕМИЛ
+ЛОЗАНОВ САВА
+ЛОЗИЋ ЈОСИП
+ЛОЗИЋ КРСТА
+ЛОЗИЋ КСЕНИЈА
+ЛОЗИЋ МИОДРАГ ДИПЛ ИНГ
+ЛОЗИЋ ТОМИСЛАВ
+ЛОЗЈАНИН НИКОЛА
+ЛОЗЈАНИН НИКОЛА
+ЛОЗЈАНИН НИКОЛА
+ЛОЗОВОЈ ЉУБИЦА
+ЛУЧАК ЗЛАТИЦА
+ЛУЧАР МИЛАДИН
+ЛУЧАР МИЛАН
+ЛУЧАР ВЕРА
+ЛУЧИ АНИЦА
+ЛУЧИ ИВАН
+ЛУЧИЋ ЧЕДОМИР
+ЛУЧИЋ ЖИВКО
+ЛУЧИЋ ЂОКО
+ЛУЧИЋ ЂОРЂЕ
+ЛУЧИЋ ЂУРЂИНА
+ЛУЧИЋ АЛЕКСАНДАР ДР
+ЛУЧИЋ АЛЕКСАНДРА
+ЛУЧИЋ БРАНКО
+ЛУЧИЋ ДРАГАН
+ЛУЧИЋ ДРАГИЦА
+ЛУЧИЋ ДРАГИЊА
+ЛУЧИЋ ДРАГУТИН
+ЛУЧИЋ ГЕОРГИЈЕ
+ЛУЧИЋ ЈЕЛЕНА
+ЛУЧИЋ ЈЕЛИЦА
+ЛУЧИЋ ЈОВАН МР
+ЛУЧИЋ ЈОВАН
+ЛУЧИЋ ЈОВАН
+ЛУЧИЋ ЈОВИЦА
+ЛУЧИЋ ЛАЗО
+ЛУЧИЋ ЉУБАН
+ЛУЧИЋ ЉУБОМИР
+ЛУЧИЋ ЉУБО
+ЛУЧИЋ МИХАЈЛО
+ЛУЧИЋ МИЛАН
+ЛУЧИЋ МИЛЕНКО
+ЛУЧИЋ МИЛЕНКО
+ЛУЧИЋ МИЛИЦА
+ЛУЧИЋ МИЛИВОЈЕ
+ЛУЧИЋ МИЛОШ
+ЛУЧИЋ МИЛОЈИЦА
+ЛУЧИЋ МИЛОЈКА
+ЛУЧИЋ МИЛОМИР
+ЛУЧИЋ МИЛОСАВА
+ЛУЧИЋ МИЛУТИН
+ЛУЧИЋ МИОДРАГ
+ЛУЧИЋ МИРЈАНА
+ЛУЧИЋ МИРОСЛАВА
+ЛУЧИЋ МОМЧИЛО
+ЛУЧИЋ МОМИР
+ЛУЧИЋ НАДА
+ЛУЧИЋ ОБРАД
+ЛУЧИЋ ПАНТА
+ЛУЧИЋ ПАВА
+ЛУЧИЋ ПЕТАР
+ЛУЧИЋ ПЕТКО
+ЛУЧИЋ ПЕТКО
+ЛУЧИЋ РАЈКО
+ЛУЧИЋ РИСТО
+ЛУЧИЋ СЛАВКО
+ЛУЧИЋ СЛАВНА
+ЛУЧИЋ СОФИЈА
+ЛУЧИЋ СПАСОЈЕ
+ЛУЧИЋ СТЕФАНИЈА
+ЛУЧИЋ СТЕВАН
+ЛУЧИЋ ВАСО
+ЛУЧИЋ ВЛАДО
+ЛУЧИЋ ВОЈИН
+ЛУЧИЋ ЗДРАВКО
+ЛУШИНОВСКИ ДИМИТРИЈЕ
+ЛУЖАИЋ ЂОРЂЕ
+ЛУЖАИЋ ЂОРЂЕ
+ЛУЖАИЋ АНКА
+ЛУЖАИЋ БОЖИЦА
+ЛУЖАИЋ ДУШКО
+ЛУЖАИЋ ЈАДРАНКА
+ЛУЖАИЋ ЈУЛКА
+ЛУЖАИЋ МИРА
+ЛУЖАИЋ ВЛАДИМИР
+ЛУЖАИЋ ВЛАДИМИР
+ЛУЖАЈИЋ АНКА
+ЛУЖАЈИЋ ЈАДРАНКА
+ЛУЖАЈИЋ МИЛЕНА
+ЛУЖАЈИЋ НАДА
+ЛУЖАЈИЋ СТАНКО
+ЛУЖАЈИЋ СТАНКО
+ЛУЖАЈИЋ СТОЈАН
+ЛУЖАНИН СВЕТОЗАР
+ЛУБАШЧИК АНТАЛ
+ЛУБАШЧИК ЛАСЛО
+ЛУБАРДА ЉУБИЦА
+ЛУБАРДА СТЕВАН
+ЛУБЕН РАНКО
+ЛУБЕН САВА
+ЛУБУРИЋ ЧЕДОМИР
+ЛУБУРИЋ ДАНИЛО
+ЛУБУРИЋ МИЛОРАД
+ЛУБУРИЋ МИЛОРАД
+ЛУБУРИЋ МИЛОВАН
+ЛУБУРИЋ МИОДРАГ
+ЛУБУРИЋ МИРКО
+ЛУБУРИЋ НАДА
+ЛУБУРИЋ РАДОМИР
+ЛУБУРИЋ РАЈКО
+ЛУБУРИЋ СТАНА
+ЛУБУРИЋ СТЕВАН
+ЛУЦ ЈАНОШ
+ЛУЦ ЈУЛИЈА
+ЛУЦИЋ ЖИВОЈИН
+ЛУЦИЋ АЛЕКСАНДРА
+ЛУЦИЋ ПЕТАР
+ЛУЦИЋ РАДИВОЈ
+ЛУЦКАРЖ ВЛАДИМИР
+ЛУДАЈИЋ ДУШАН ДИПЛ ИНГ
+ЛУДАЈИЋ ВЕРА
+ЛУДОШКИ АНЂЕЛКО
+ЛУДОШКИ КАТИЦА
+ЛУДОШКИ ЛАЗАР
+ЛУДОШКИ ЛАЗАР
+ЛУДОШКИ ЉУБИЦА
+ЛУДОШКИ ЉУБОМИР
+ЛУДОШКИ МИЛЕНКО
+ЛУДОШКИ ВЕЛИМИР
+ЛУДРОВАН СТЕВА
+ЛУГОЊА ЛАЗО
+ЛУГОЊА ПЕТАР
+ЛУГОЊА РАДИВОЈ
+ЛУГОЊА САВА
+ЛУГОЊА СЛОБОДАН
+ЛУГОЊА ВЕЉКО
+ЛУГОЊА ВИДОЈЕ
+ЛУГУМЕРСКИ ДАНИЦА
+ЛУИНОВИЋ МИЛАН
+ЛУЈАНОВ ДРАГОСЛАВ
+ЛУЈИНОВИЋ МИЛАН
+ЛУЈНОВИЋ БРАНКА
+ЛУКАЧ ШАНДОР
+ЛУКАЧ АНДРАШ
+ЛУКАЧ АНКИЦА
+ЛУКАЧ АРАНКА
+ЛУКАЧ БОШКО
+ЛУКАЧ БОШКО
+ЛУКАЧ БОЖИДАР
+ЛУКАЧ БРАНИСЛАВ
+ЛУКАЧ ДАНИЛО
+ЛУКАЧ ДРАГАН
+ЛУКАЧ ДРАГОСЛАВ ДР
+ЛУКАЧ ФЕРЕНЦ
+ЛУКАЧ ФРАНЦИШКА
+ЛУКАЧ ФРАЊА
+ЛУКАЧ ГРОЗДА
+ЛУКАЧ ИГЊАТ
+ЛУКАЧ ИВАН
+ЛУКАЧ ЛАЗАР
+ЛУКАЧ МИХАЈЛО
+ЛУКАЧ МИХАЈЛО
+ЛУКАЧ МИХАЈЛО
+ЛУКАЧ МИЛЕВА
+ЛУКАЧ НАДЕЖДА
+ЛУКАЧ ПЕТАР
+ЛУКАЧ ПЕТАР
+ЛУКАЧ РАДЕ
+ЛУКАЧ САВА
+ЛУКАЧ СЛОБОДАНКА
+ЛУКАЧ СЛОБОДАН
+ЛУКАЧ СТЕВАН
+ЛУКАЧ СВЕТКО
+ЛУКАЧ ВЕЛИМИР
+ЛУКАЧЕВИЋ ЉУБИША
+ЛУКАЧИ ЈЕЛИСАВЕТА
+ЛУКАЧИ ЈУЛИЈАНА
+ЛУКАЈИЋ ЛАЗАР МР
+ЛУКАН ЂОРЂЕ
+ЛУКАН ВИНЦЕНЦ
+ЛУКАНИЋ ФРИЂЕШ
+ЛУКАНИЋ СТЕВАН
+ЛУКАТЕЛИ ИВАНКА
+ЛУКАВАЦ СМИЉКА
+ЛУКАВАЦ ЗОРАН
+ЛУКЕШЕВИЋ ДРАГАН
+ЛУКЕНИЋ ЉИЉАНА
+ЛУКЕТА РАДМИЛА
+ЛУКИЧИЋ БОГДАН ДИПЛ ИНГ
+ЛУКИЧИЋ КАТИЦА
+ЛУКИЧИЋ РАДА
+ЛУКИЧИЋ СЛОБОДАН
+ЛУКИЧИЋ СЛОБОДАН
+ЛУКИЋ ЖИВОРАД
+ЛУКИЋ ЖИВОРАД
+ЛУКИЋ ЖИВОТА
+ЛУКИЋ ЂУРА
+ЛУКИЋ ЂУРО
+ЛУКИЋ АЛЕКСАНДАР
+ЛУКИЋ АЛЕКСАНДАР
+ЛУКИЋ АЛЕКСАНДАР
+ЛУКИЋ АНГЕЛИНА
+ЛУКИЋ БЕРТА
+ЛУКИЋ БОШКО
+ЛУКИЋ БОЖИДАР
+ЛУКИЋ БОГОЉУБ
+ЛУКИЋ БОРИВОЈЕ
+ЛУКИЋ БОРО
+ЛУКИЋ БОСИЉКА
+ЛУКИЋ ЦВЕТА
+ЛУКИЋ ЦВЈЕТКО
+ЛУКИЋ ДАНЕ
+ЛУКИЋ ДАНЕ
+ЛУКИЋ ДАРИНКА
+ЛУКИЋ ДИМИТРИЈЕ
+ЛУКИЋ ДОБРИЛА
+ЛУКИЋ ДОБРОСАВ
+ЛУКИЋ ДРАГАН
+ЛУКИЋ ДРАГА
+ЛУКИЋ ДРАГОЈЕ
+ЛУКИЋ ДРАГОСЛАВА
+ЛУКИЋ ДУШАНКА
+ЛУКИЋ ДУШАН
+ЛУКИЋ ДУШАН
+ЛУКИЋ-ФУДЕРЕР ЈОЛАНКА
+ЛУКИЋ ГРОЗДА
+ЛУКИЋ ГРУЈИЦА ДИПЛ ИНГ
+ЛУКИЋ ИЛИЈА
+ЛУКИЋ ИЛИЈА
+ЛУКИЋ ИЛИЈА
+ЛУКИЋ ИВАН
+ЛУКИЋ ИВАН
+ЛУКИЋ ИВАН
+ЛУКИЋ ЈАДРАНКА
+ЛУКИЋ ЈАСМИНА
+ЛУКИЋ ЈЕЛЕНА
+ЛУКИЋ ЈЕЛЕНА
+ЛУКИЋ ЈЕЛЕНА
+ЛУКИЋ ЈЕЛИЦА
+ЛУКИЋ ЈОВАНКА
+ЛУКИЋ ЈОВАН
+ЛУКИЋ ЈОВАН
+ЛУКИЋ ЈОВАН
+ЛУКИЋ ЈОВО
+ЛУКИЋ ЈОВО
+ЛУКИЋ ЈУЛКА
+ЛУКИЋ КАТАРИНА
+ЛУКИЋ КОСТА
+ЛУКИЋ КОСТА
+ЛУКИЋ ЛАЗАР
+ЛУКИЋ ЉИЉАНА
+ЛУКИЋ ЉУБА
+ЛУКИЋ ЉУБИША ДР ЛЕКАР
+ЛУКИЋ ЉУБИЦА
+ЛУКИЋ ЛЈУБОМИР
+ЛУКИЋ МАРА
+ЛУКИЋ МАРИЈА
+ЛУКИЋ МАРКО
+ЛУКИЋ МАРКО
+ЛУКИЋ МАРКО
+ЛУКИЋ МИЋА
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛАН
+ЛУКИЋ МИЛЕ
+ЛУКИЋ МИЛИЈА
+ЛУКИЋ МИЛКА
+ЛУКИЋ МИЛОШ
+ЛУКИЋ МИЛОРАД
+ЛУКИЋ МИЛОРАД
+ЛУКИЋ МИОДРАГ
+ЛУКИЋ МИРЈАНА
+ЛУКИЋ МИРЈАНА
+ЛУКИЋ МИРОСЛАВ
+ЛУКИЋ МИРОСЛАВ
+ЛУКИЋ МОМЧИЛО
+ЛУКИЋ НЕВЕНА
+ЛУКИЋ НИКОЛА
+ЛУКИЋ НИКОЛА
+ЛУКИЋ НИКОЛА
+ЛУКИЋ НОВКА
+ЛУКИЋ ОБРАД
+ЛУКИЋ ОЛГА
+ЛУКИЋ ОЛГИЦА
+ЛУКИЋ ПЕТАР
+ЛУКИЋ ПЕТАР
+ЛУКИЋ ПЕТАР
+ЛУКИЋ ПЕТАР
+ЛУКИЋ РАДОСАВ
+ЛУКИЋ РАДОСЛАВ
+ЛУКИЋ РАДОВАН
+ЛУКИЋ РАДОВАН
+ЛУКИЋ РАЈКО
+ЛУКИЋ РИСТО
+ЛУКИЋ РУЖА
+ЛУКИЋ РУЖА
+ЛУКИЋ САВКА
+ЛУКИЋ СЛОБОДАНКА
+ЛУКИЋ СЛОБОДАН
+ЛУКИЋ СЛОБОДАН
+ЛУКИЋ СЛОБОДАН
+ЛУКИЋ СЛОБОДАН
+ЛУКИЋ СОФИЈА
+ЛУКИЋ СОФИЈА
+ЛУКИЋ СТАНА
+ЛУКИЋ СТАНИША
+ЛУКИЋ СТАНИСЛАВ
+ЛУКИЋ СТЕВАН
+ЛУКИЋ СТЕВАН
+ЛУКИЋ-СТЕВИЋ ЉИЉАНА
+ЛУКИЋ СТЕВО
+ЛУКИЋ СТОЈАНКА
+ЛУКИЋ СТОЈАН
+ЛУКИЋ СВЕТЛАНА
+ЛУКИЋ ТАМАРА
+ЛУКИЋ ТОМИСЛАВ
+ЛУКИЋ ТОМИСЛАВ
+ЛУКИЋ ВЕЛИБОР ДР
+ЛУКИЋ ВЕЛИБОР ДР
+ЛУКИЋ ВЕЛИМИР
+ЛУКИЋ ВЕЉКО
+ЛУКИЋ ВЕРА
+ЛУКИЋ ВЕРИЦА
+ЛУКИЋ ВЕРОНА
+ЛУКИЋ ВЕРОНИКА
+ЛУКИЋ ВЕСЕЛИН
+ЛУКИЋ ВИДОСАВА
+ЛУКИЋ ВЛАДИМИР ДИПЛ ИНГ
+ЛУКИЋ ВЛАДИМИР
+ЛУКИЋ ВОЈИН
+ЛУКИЋ ВУКОСАВ
+ЛУКИЋ ВУК
+ЛУКИЋ ЗОРАН
+ЛУКИЋ ЗОРАН
+ЛУКИЋ ЗОРАН
+ЛУКИЋ ЗОРКА
+ЛУКО ШАНДОР
+ЛУКО АНДРАШ
+ЛУКОВАЦ АНИЦА
+ЛУКОВАЦ ДРАГАН
+ЛУКОВАЦ МИЛАН
+ЛУКОВАЦ МИЛОВАН
+ЛУКОВИЋ ДУШАН
+ЛУКОВИЋ ИВАН
+ЛУКОВИЋ ЈОВАН
+ЛУКОВИЋ МИЛАН
+ЛУКОВИЋ МИЛОРАД
+ЛУКОВИЋ МИЛОРАД
+ЛУКОВИЋ МИЛУТИН
+ЛУКОВИЋ СЛАВКО
+ЛУКОВИЋ СЛОБОДАНКА
+ЛУКОВИЋ ВЛАДИМИР
+ЛУЛИЋ АНА
+ЛУЛИЋ АНТУН
+ЛУЛИЋ ФРАЊА
+ЛУЛИЋ ИВАН МР
+ЛУЛИЋ ИВАН
+ЛУЛИЋ МАЈА
+ЛУЛИЋ МАРКО
+ЛУНГ ДРАГАН
+ЛУНГ СТЕВАН
+ЛУНГИНОВИЋ МАРИЈА
+ЛУНГУЛОВ МИЛИВОЈ
+ЛУПШИЋ ЈУЛИЈАНА
+ЛУПШИЋ КОРНЕЛ
+ЛУПШИЋ КОРНЕЛ
+ЛУПШОР СТЕЛА
+ЛУПИНСКИ НИНОСЛАВ
+ЛУПИНСКИ ВЛАДИМИР
+ЛУПУЦ ЈЕЛИЦА
+ЛУПУРОВ ЛАЗА
+ЛУПУРОВИН НЕВЕНКА
+ЛУТКИЋ ЖИВКА
+ЛУТКИЋ ЂОРЂЕ
+ЛУТКИЋ АЛЕКСАНДРА
+ЛУТКИЋ ЛАЗАР
+ЛУТКИЋ МИЛОРАД
+ЛУТКИЋ СТАНКО
+ЛУТКИЋ СТЕВАН
+ЛУТКИЋ ЗАГОРКА
+ЛУТРОВ НАДА
+ЛУВРАДОВ БЛАГОЈЕ
+МАЧЕК ЈОВАН
+МАЧКИЋ БРАНКО
+МАЧКИЋ ДРАГИЦА
+МАЧКИЋ ЈАНКО
+МАЧКИЋ ЈАНКО
+МАЧКИЋ МИЛЕНА
+МАЧКИЋ МИЛЕНКО
+МАЧКИЋ МИЛЕВКА
+МАЧКИЋ МИЛИВОЈ
+МАЧКИЋ МИЉКА
+МАЧКИЋ МИЛОШ
+МАЧКИЋ НЕДЕЉКО
+МАЧКИЋ НЕНАД
+МАЧКИЋ ПЕТРА
+МАЧКИЋ СТЕВО
+МАЧКИЋ ВАСО
+МАЧКИЋ ВЛАДИМИР
+МАЧКОВИЋ МИЛАНА
+МАЧКОВИЋ МИЛАН
+МАЧКОВИЋ ТОМА
+МАЧУКАТ ГРГО
+МАЧВАНИН БОЈАНА ДР ЛЕКАР
+МАША ЕРЖЕБЕТ
+МАША МИХАЈЛО
+МАША ВЛАДИМИР
+МАШАНОВИЋ ЂОРЂЕ ДИПЛ ИНГ
+МАШАНОВИЋ ЂОРЂИЈЕ
+МАШАНОВИЋ БЛАЖО
+МАШАНОВИЋ БОСИЉКА
+МАШАНОВИЋ БРАНИСЛАВ
+МАШАНОВИЋ ДРАГО
+МАШАНОВИЋ НИКОЛА
+МАШАНОВИЋ ПЕТАР
+МАШАНОВИЋ ПЕТАР
+МАШАНОВИЋ ПЕТАР
+МАШАНОВИЋ ЗОРАН
+МАШИЋ ЖАРКО
+МАШИЋ ЖИВАН
+МАШИЋ БОРИС
+МАШИЋ ДРАГАН
+МАШИЋ ДРАГИЋ
+МАШИЋ ИШТВАН
+МАШИЋ ИМРЕ
+МАШИЋ ИВАН
+МАШИЋ ЈОВАН
+МАШИЋ КАРОЉ
+МАШИЋ МАНДА
+МАШИЋ МИЛАН ДР
+МАШИЋ МИЛИНКО
+МАШИЋ МИЛИВОЈ
+МАШИЋ МИЉАНА
+МАШИЋ МИЛОЈЕ
+МАШИЋ МИРА
+МАШИЋ МИРКО
+МАШИЋ МИРОСЛАВ
+МАШИЋ НАДА
+МАШИЋ ПЕТАР
+МАШИЋ РЕШАД
+МАШИЋ СЕНКА
+МАШИЋ СЕНКА
+МАШИЋ СИМЕОН
+МАШИЋ СТЕВАН
+МАШИЋ ТОМИСЛАВ
+МАШИЋ ВЕРА
+МАШИЋ ВИКТОР
+МАШИЋ ВУЧЕТА
+МАШИРЕВИЋ ГОРДАНА
+МАШИРЕВИЋ СТЕВАН
+МАШКОВИЋ НОВИЦА
+МАШКОВИЋ ЗОРАН
+МАШТРАПОВИЋ ДРАГОЉУБ
+МАШУЛОВИЋ ЈАСМИНА
+МАШУЛОВИЋ ЈОВАНКА
+МАЋАШ СТЕВАН
+МАЋАШ ВАСА
+МАЋАШЕВ АЛЕКСАНДАР
+МАЋАШЕВ БРАНИСЛАВ
+МАЋАШЕВ ДАНИЛО
+МАЋАШЕВИЋ ВЛАДИМИР
+МАЋЕШИЋ ЈОСИП
+МАЋЕШИЋ МИХАИЛО
+МАЋКО ЈОЖЕФ
+МАЋКО ВИЛМОШ
+МАЖИЋ ЂОРЂЕ
+МАЖИЋ ДРАГИША
+МАЖИЋ МИРА
+МАЖИЋ ПЕТАР
+МАЖИЋ РУЖА
+МАЖИБРАДА ВАСО
+МАЖИБРАДА-ВУГРИН МАРТА ДИПЛ ИНГ
+МАЂАР БОЖИДАР
+МАЂАР ЕРЖЕБЕТ
+МАЂАР ЈОВАН
+МАЂАР ЈОВАН
+МАЂАР ЛАДИСЛАВ
+МАЂАР СТЕВАН
+МАЂАРЕВИЋ АЛЕКСАНДАР
+МАЂАРЕВИЋ ИВАН
+МАЂАРЕВИЋ КОСТА
+МАЂАРЕВИЋ МИЛЕ
+МАЂАРЕВИЋ МИЛОШ
+МАЂАРЕВИЋ СПАСОЈЕ
+МАЂАРЕВИЋ ЗОРИЦА
+МАЂАРИ АНДОР
+МАЂИСТОРОВ ВЛАДИМИР
+МАЦАК ПАВЛЕ
+МАЦАК ВЛАДИМИР
+МАЦАНОВИЋ ДУШАН
+МАЦАНОВИЋ ЈЕЛЕНА
+МАЦАНОВИЋ ЈЕВРОСИМА
+МАЦАНОВИЋ ЈОВАН
+МАЦАНОВИЋ МИЛОШ
+МАЦАНОВИЋ РАТКО
+МАЦЕДОНИЋ БОГДАН ДР
+МАЦЕДОНИЋ ГОРДАНА
+МАЦЕДОНИЋ СТАНИМИР
+МАЦЕДОНИЋ ВЛАДИМИР
+МАЦКО ЂУРА
+МАЦКО АНА
+МАЦНЕР ДАВОР
+МАЦУРА ЧЕДО
+МАЦУРА ЂОРЂЕ
+МАЦУРА ДОБРИНКА
+МАЦУРА ДРАГО
+МАЦУРА ЛИДИЈА
+МАЦУРА МИЛОШ
+МАЦУРА МИЛОРАД
+МАЦУРА МИРОСЛАВ
+МАЦУРА ПЕТАР
+МАЦУРА ТЕОДОР
+МАЦУТ МИЛОШ
+МАЏАР БОРИСЛАВ
+МАЏАР МИЛОРАД
+МАЏАР МИРКО
+МАЏАРАЦ ЧЕДОМИР
+МАЏАРАЦ ДУШАН ДИПЛ ИНГ
+МАЏАРЕВ ДУШАН
+МАЏАРЕВ МИЛАНКА
+МАЏАРЕВИЋ ЖИВОРАД
+МАЏАРЕВИЋ ЂОРЂЕ
+МАЏАРЕВИЋ БИСЕРКА
+МАЏАРЕВИЋ МАРКО
+МАЏАРЕВИЋ САВА
+МАЏГАЉ МИЛЕНКО
+МАЏГАЉ СЛОБОДАН
+МАЏОВСКИ САНДЕ
+МАДАЧИ МАРИЈА
+МАДАЦКИ АНТАЛ
+МАДАЦКИ ЈАН
+МАДАЦКИ ЈОСИП
+МАДАЦКИ КАРЛО
+МАДАРАС АНДРАШ
+МАДАРАС АРПАД
+МАДАРАС МАЋАШ
+МАДАРАС МАРИЈА
+МАДАРАС РОЗАЛИЈА
+МАДИ ЂУРИЦА
+МАДИ ЈОЖЕФ
+МАДИЋ БОЖИДАР ДИПЛ ИНГ
+МАДИЋ МАРИЈАН
+МАДИЋ МИЛИСАВ
+МАДОНИЋ СТЈЕПАН
+МАДОВ ИЛИЈА
+МАГАРАШЕВИЋ АНАМАРИЈА
+МАГАРАШЕВИЋ БОРИВОЈ
+МАГАРАШЕВИЋ КАТАРИНА
+МАГАРАШЕВИЋ МИРКО
+МАГАРАШЕВИЋ НАДА
+МАГДА КЛАРА
+МАГДАЛЕНИЋ ВЕРЈОВ
+МАГДИЋ ТОМИСЛАВ
+МАГДУ ЈОН ДИПЛ ИНГ
+МАГДУ ЛИА
+МАГДУ РОДИКА ЛЕКАР
+МАГИЋ НИКОЛА
+МАГЛАЈЛИЋ САБРИЈА
+МАГЛИЋ ЈОВАН
+МАГЛИНСКИ БОРИСЛАВ ДИПЛ ПРАВНИК
+МАГЛОВ АЛЕКСАНДАР
+МАГЛОВ ДРАГОЉУБ
+МАГЛОВ ДУШАН
+МАГЛОВСКИ ДУШКО
+МАГЛОВСКИ ЈОСИП
+МАГЛОВСКИ МАРГИТА
+МАГЛОВСКИ МИЛИЦА
+МАГЛОВСКИ МИРОСЛАВ
+МАГЛОВСКИ СТЕВАН
+МАГЛОВСКИ СТЕВАН
+МАГОЧ ФРАЊА
+МАГОЧ ЈУЛИЈАН
+МАГОЧ МИРОЊ
+МАГОШ ШАНДОР
+МАГОШ ЈЕЛИСАВЕТА
+МАГОШ ЈУЛИЈАНА
+МАГОШ МАРИЈА
+МАГУРА ТОМА
+МАХЂИК ЕЛЕНА
+МАХАЧИ ЈАНОШ
+МАХМУТИ МАХМУТ
+МАХМУТИ ЗУЗАНА
+МАХОВАЦ МИЛОРАД
+МАИЦХЕР ЂОРЂЕ
+МАЈШАИ ФЕРЕНЦ
+МАЈШАИ КЛАРА
+МАЈДАНЧЕВИЋ МИТАР
+МАЈДАНАЦ ДРАГИЊА
+МАЈДАНЏИЋ ЈОЗО
+МАЈДАНЏИЋ ПЕРИЦА
+МАЈДАНЏИЋ ПЕТАР
+МАЈДЕВАЦ ЖИВКО ДР
+МАЈДЕВАЦ РАДОВАН
+МАЈЕР ШАНДОР
+МАЈЕР ЕДУАРД
+МАЈЕР ЈАНОШ
+МАЈЕР ЈОВАН
+МАЈЕР КАТИЦА
+МАЈЕР МАРИЈА
+МАЈЕР НИКОЛА
+МАЈЕР ПЕТАР
+МАЈЕР СТЕВАН
+МАЈЕРСКИ ШТЕФАН
+МАЈЕТИЋ АНТОН
+МАЈЕТИЋ МАРИЈА
+МАЈЕТИЋ НИКОЛА
+МАЈИЋ СТЕВАН
+МАЈИЋ ВЕСНА
+МАЈИЋ ЗОРАН
+МАЈИЋ ЗОРАН
+МАЈИН ЕФИМИЈА
+МАЈИН МИОДРАГ
+МАЈИНСКИ ЗОРА
+МАЈКИЋ АЛЕКСАНДРА
+МАЈКИЋ БОГДАН
+МАЈКИЋ БОГДАН
+МАЈКИЋ ДРАГАН
+МАЈКИЋ ИЛИЈА
+МАЈКИЋ ИВАНКА
+МАЈКИЋ ЈОЦА
+МАЈКИЋ МИЛАН
+МАЈКИЋ МИЛАН
+МАЈКИЋ МИЛАН
+МАЈКИЋ МИЛАН
+МАЈКИЋ МИРОСЛАВ
+МАЈКИЋ НИКОЛА
+МАЈКИЋ ОБРАД
+МАЈКИЋ РАДЕ
+МАЈКИЋ РАДОЈКА
+МАЈКИЋ СТОЈАНКА
+МАЈКИЋ ВЕЉКО
+МАЈКИЋ ВЛАДО
+МАЈКИЋ ЗДРАВКО
+МАЈКИЋ ЗОРАН
+МАЈКСНЕР ЂОРЂЕ
+МАЈОР ЂУРА
+МАЈОР АНА
+МАЈОР ФЕРЕНЦ ДР ИНГ
+МАЈОР ЈОЖЕФ
+МАЈОР ЈОЖЕФ
+МАЈОР КАРОЉ
+МАЈОР КАРОЉ
+МАЈОР МАРГИТА
+МАЈОР МАРИЈА
+МАЈОР МАРИЈА
+МАЈОР НАНДОР
+МАЈОР СТЕВАН
+МАЈОРЧИК ФРАЊА
+МАЈОРОШ БЕЛА ДР
+МАЈОРОШ ДЕЖЕ
+МАЈОРОШ ЈОВАН
+МАЈОРОШ ЛАЈОШ
+МАЈОРОШ СТЕВАН
+МАЈОРОШ ТЕРЕЗИЈА
+МАЈОРОШИ-ДЕУРА МАРИЈА
+МАЈОРОШИ ИМРЕ
+МАЈСКИ ЈЕЛИЦА
+МАЈСКИ ЈОВАН
+МАЈСКИ МИЛАН
+МАЈСКИ НИКОЛА
+МАЈСКИ СЛАВКО
+МАЈСКИ ВЕСНА
+МАЈСТОРАЦ ДРАГАН
+МАЈСТОРАЦ ЉУБОМИР
+МАЈСТОРАЦ ПЕТАР
+МАЈСТОРАЦ САВО
+МАЈСТОРОВ ЉУБИША
+МАЈСТОРОВ ВЛАДИМИР
+МАЈСТОРОВИЋ ЂУРАЂ
+МАЈСТОРОВИЋ АНЂА
+МАЈСТОРОВИЋ АНКА
+МАЈСТОРОВИЋ БОГДАН
+МАЈСТОРОВИЋ БОРИВОЈ
+МАЈСТОРОВИЋ БОРИВОЈ
+МАЈСТОРОВИЋ ДАРКО
+МАЈСТОРОВИЋ ДРАГАН
+МАЈСТОРОВИЋ ДРАГОМИР
+МАЈСТОРОВИЋ ДУШАН
+МАЈСТОРОВИЋ ДУШКО
+МАЈСТОРОВИЋ ГОРДАНА
+МАЈСТОРОВИЋ КАТИЦА
+МАЈСТОРОВИЋ-КОСТИЋ ВЕСНА
+МАЈСТОРОВИЋ ЉИЉАНА
+МАЈСТОРОВИЋ МИЛАН
+МАЈСТОРОВИЋ МИЛАН
+МАЈСТОРОВИЋ МИЛИЦА
+МАЈСТОРОВИЋ НЕЂО
+МАЈСТОРОВИЋ НЕБОЈША
+МАЈСТОРОВИЋ НЕВЕНКА
+МАЈСТОРОВИЋ НИКОЛА
+МАЈСТОРОВИЋ ПЕТАР
+МАЈСТОРОВИЋ РАДОСЛАВ
+МАЈСТОРОВИЋ САВКА
+МАЈСТОРОВИЋ СИМА
+МАЈСТОРОВИЋ СЛОБОДАН
+МАЈСТОРОВИЋ СВЕТЛАНА
+МАЈСТОРОВИЋ ТЕОДОР
+МАЈСТОРОВИЋ УРОШ
+МАЈСТОРОВИЋ ВАСА
+МАЈСТОРОВИЋ ВИТОМИР
+МАЈСТОРОВИЋ ВУКАШИН
+МАЈСТОРОВИЋ ВУКОСАВА
+МАЈТАН ЂОРЂЕ ДИПЛ ИНГ
+МАЈТАН КАРЛО
+МАЈТАН МИХАЈЛО
+МАЈТАН ПАВЛЕ
+МАК АНДРИЈА
+МАК ЈОСИПА
+МАК ОСКАР
+МАКША АНА
+МАКША ЈОВАН
+МАКША КАРЛО
+МАКША ПЕТАР
+МАКАЈИ ЈАКОВ
+МАКАЈИ ЈАНКО
+МАКАН ЈАН
+МАКАЊИЋ БОЈАН
+МАКАЊИЋ МИЛИСАВ
+МАКАРИЋ НАДА
+МАКАРИЋ СТЕВАН
+МАКАРИЋ ВИДА
+МАКАРИЋ ЗОРАН
+МАКАРИН ЖАРКО
+МАКАРИН ЗВОНИМИР ДИПЛ ИНГ
+МАКИШ РУЖА
+МАКИШ ВЛАТКО
+МАКИТАН ЈОВАН
+МАКИВИЋ МИХАЈЛО
+МАКИВИЋ МИЛОШ
+МАКИВИЋ САВА
+МАКИВИЋ СТАНИСЛАВ
+МАКЈИ ЗДЕНКА
+МАКЛЕНОВИЋ РАДА
+МАКЉЕНОВИЋ СРБОЉУБ
+МАКЉЕНОВИЋ ЗОРАН
+МАКО ШАНДОР
+МАКО ФРАЊА
+МАКО ЈУЛИЈАНА
+МАКО МИЛЕНА
+МАКОХ АНТОН
+МАКРА АНА
+МАКРА ИВАН
+МАКРА ЈОСИП
+МАКРА КАТАРИНА
+МАКРИН МАРГИТА ДР
+МАКРИН РУЖИЦА
+МАКСИЋ ЖИВАНА
+МАКСИЋ ЂОРЂЕ
+МАКСИЋ БИЉАНА
+МАКСИЋ БОШКО
+МАКСИЋ БОЖИДАР
+МАКСИЋ ДАНИЦА
+МАКСИЋ ДЕЈАН
+МАКСИЋ ДМИТАР
+МАКСИЋ ДОБРИВОЈЕ
+МАКСИЋ ДРАГАН
+МАКСИЋ ДРАГАН
+МАКСИЋ ДРАГОМИР
+МАКСИЋ ДУШАН
+МАКСИЋ ЕДИТ
+МАКСИЋ ГАВРА
+МАКСИЋ ЈЕЛИЦА
+МАКСИЋ ЈЕЛИЦА
+МАКСИЋ ЈОВАНКА
+МАКСИЋ ЈОВАН
+МАКСИЋ ЈОВАН
+МАКСИЋ ЛУКА
+МАКСИЋ МАРИЈАНА
+МАКСИЋ МИЛАНА
+МАКСИЋ МИЛИЦА
+МАКСИЋ МИЛИЦА
+МАКСИЋ МИЛОРАД
+МАКСИЋ МИЛОРАД
+МАКСИЋ НИКОЛА
+МАКСИЋ РАДОСЛАВ
+МАКСИЋ РАТКО
+МАКСИЋ САВА
+МАКСИЋ СЛАВКО
+МАКСИЋ ВОЈИН
+МАКСИЋ ЗОРКА
+МАКСИМЧЕВ АНЂЕЛКО
+МАКСИМЧЕВ СТЕВАН
+МАКСИМОВ БРАНИСЛАВ
+МАКСИМОВ ЉУБОМИР
+МАКСИМОВ СЛОБОДАН
+МАКСИМОВ ВЕРА
+МАКСИМОВИЋ ЧЕДОМИР
+МАКСИМОВИЋ ЖИВОРАД
+МАКСИМОВИЋ ЂУРИЦА
+МАКСИМОВИЋ АЛЕКСАНДАР
+МАКСИМОВИЋ АЛЕКСАНДАР
+МАКСИМОВИЋ АЛЕКСАНДАР
+МАКСИМОВИЋ АНА
+МАКСИМОВИЋ АНКИЦА
+МАКСИМОВИЋ БОШКО
+МАКСИМОВИЋ БОРИВОЈЕ
+МАКСИМОВИЋ БОРИВОЈ
+МАКСИМОВИЋ БРАНИСЛАВ
+МАКСИМОВИЋ БРАНКА
+МАКСИМОВИЋ ЦВИЈЕТИН
+МАКСИМОВИЋ ДАНИЦА
+МАКСИМОВИЋ ДАРКО
+МАКСИМОВИЋ ДИМИТРИЈЕ
+МАКСИМОВИЋ ДРАГАН
+МАКСИМОВИЋ ДРАГАН
+МАКСИМОВИЋ ДРАГАН
+МАКСИМОВИЋ ДРАГИЋ
+МАКСИМОВИЋ ДРАГОСЛАВ
+МАКСИМОВИЋ ДУШАН МР ОЕЦ
+МАКСИМОВИЋ ДУШАН
+МАКСИМОВИЋ ДУШАН
+МАКСИМОВИЋ ДУШАН
+МАКСИМОВИЋ ИВАНКА
+МАКСИМОВИЋ ИВАН
+МАКСИМОВИЋ ЈАКОВ
+МАКСИМОВИЋ ЈЕЛИСАВЕТА
+МАКСИМОВИЋ ЈОВАН
+МАКСИМОВИЋ ЈОВАН
+МАКСИМОВИЋ ЈОВАН
+МАКСИМОВИЋ КАТАРИНА
+МАКСИМОВИЋ КАТИЦА
+МАКСИМОВИЋ ЛАЗАР
+МАКСИМОВИЋ ЛАЗА
+МАКСИМОВИЋ ЛЕНКА
+МАКСИМОВИЋ ЉУБИША
+МАКСИМОВИЋ ЉУБИША
+МАКСИМОВИЋ ЉУБИЦА
+МАКСИМОВИЋ ЉУБИЦА
+МАКСИМОВИЋ ЛУКА
+МАКСИМОВИЋ МАРКО
+МАКСИМОВИЋ МИЛАН ДИПЛ ИНГ
+МАКСИМОВИЋ МИЛАНА
+МАКСИМОВИЋ МИЛАН
+МАКСИМОВИЋ МИЛЕНКО
+МАКСИМОВИЋ МИЛЕНКО
+МАКСИМОВИЋ МИЛИНА
+МАКСИМОВИЋ МИЛОРАД
+МАКСИМОВИЋ МИЛУТИН
+МАКСИМОВИЋ МИОДРАГ
+МАКСИМОВИЋ МИОДРАГ
+МАКСИМОВИЋ МИОДРАГ
+МАКСИМОВИЋ МИОДРАГ
+МАКСИМОВИЋ МИРОСЛАВ
+МАКСИМОВИЋ МЛАДЕН
+МАКСИМОВИЋ НАДА
+МАКСИМОВИЋ НАТАЛИЈА
+МАКСИМОВИЋ НИКОЛА
+МАКСИМОВИЋ НИКОЛА
+МАКСИМОВИЋ ПЕТАР
+МАКСИМОВИЋ ПРЕДРАГ
+МАКСИМОВИЋ РАДМИЛА
+МАКСИМОВИЋ РАДОВАНКА
+МАКСИМОВИЋ РАДО
+МАКСИМОВИЋ РАНЂЕЛ
+МАКСИМОВИЋ РИСТО
+МАКСИМОВИЋ САВА
+МАКСИМОВИЋ САВО
+МАКСИМОВИЋ СЛАВОЉУБ
+МАКСИМОВИЋ СРЕЋКО
+МАКСИМОВИЋ СТЕВАН
+МАКСИМОВИЋ СТЕВАН
+МАКСИМОВИЋ СТЕВАН
+МАКСИМОВИЋ СТЕВИЦА
+МАКСИМОВИЋ СВЕТОМИР
+МАКСИМОВИЋ ТИХОМИР
+МАКСИМОВИЋ ТИНКА
+МАКСИМОВИЋ ТОМИСЛАВ
+МАКСИМОВИЋ ТОМИСЛАВ
+МАКСИМОВИЋ ВЕЛИЧКО
+МАКСИМОВИЋ ВЕЛИМИР
+МАКСИМОВИЋ ВЛАДИМИР
+МАКСИМОВИЋ ЗЛАТА
+МАКСИМОВИЋ ЗОРАН
+МАКСИМОВСКИ ЂОРЂЕ
+МАКСИМОВСКИ ВОЈО
+МАКСИН СЛАВКА
+МАКУХ МИХАИЛО
+МАКУХ МИХАЈЛО
+МАКУХ ВЛАДИМИР
+МАЛЧИЋ АНДРИЈА ДИПЛ ИНГ
+МАЛЧИЋ АНДРИЈА
+МАЛЧИЋ ЈОЖЕФ
+МАЛЧИЋ ЈУЛКА
+МАЛЧИЋ НИКОЛА
+МАЛАШЕВИЋ МИЛУТИН
+МАЛАЦКО ЈУЛИЈАН
+МАЛАЦКО ЉУБИЦА
+МАЛАЕНИЋ ДРАГАН
+МАЛАВРАЗИЋ ЈОВАН
+МАЛБАША БОРИСЛАВА
+МАЛБАША ДРАГОЉУБ
+МАЛБАША ДУШАНКА
+МАЛБАША ЈЕЛКА
+МАЛБАША МИЛАН
+МАЛБАША МИЛЕ
+МАЛБАША ВЕЉКО
+МАЛБАША ЗДРАВКО
+МАЛБАШИЋ БОШКО
+МАЛБАШИЋ ДРАГАН
+МАЛБАШИЋ ЈАНКО
+МАЛБАШИЋ МИЋО
+МАЛБАШИЋ РУЖА
+МАЛБАШКИ ДУШАН
+МАЛБАШКИ-ЈАНКОВ АНЂА
+МАЛБАШКИ МАРИЈА
+МАЛБАШКИ МИЛИНКА
+МАЛЕШ АНЂЕЛКА
+МАЛЕШ БОРА
+МАЛЕШ ДМИТАР
+МАЛЕШ ЈЕЛЕНА
+МАЛЕШ ЈОВАНКА
+МАЛЕШ КОСТА
+МАЛЕШ ЉИЉАНА
+МАЛЕШ МАРИНКО
+МАЛЕШ НОВАК
+МАЛЕШ РАДОМИР
+МАЛЕШ РУЖИЦА
+МАЛЕШ СТАНА
+МАЛЕШ СВЕТЛАНА
+МАЛЕШ ВАСО
+МАЛЕШ ВОЈИСЛАВ
+МАЛЕШ ЗОРА
+МАЛЕШЕВ ЖИВКО
+МАЛЕШЕВ ЖИВОЈИН
+МАЛЕШЕВ ЂОРЂЕ
+МАЛЕШЕВ БОШКО
+МАЛЕШЕВ БОРИСЛАВ
+МАЛЕШЕВ БРАНКО
+МАЛЕШЕВ ДАМЈАН
+МАЛЕШЕВ ДАМЈАН
+МАЛЕШЕВ ДИМИТРИЈЕ
+МАЛЕШЕВ ДРАГАНА
+МАЛЕШЕВ ДРАГОЉУБ
+МАЛЕШЕВ ДРАГОЉУБ
+МАЛЕШЕВ ДУШАН
+МАЛЕШЕВ ЈЕЛИЦА
+МАЛЕШЕВ ЈОВАН
+МАЛЕШЕВ КОСАНА
+МАЛЕШЕВ ЛАЗАР
+МАЛЕШЕВ ЉУБИЦА
+МАЛЕШЕВ ЉУБИНКО
+МАЛЕШЕВ ЉУБОМИР
+МАЛЕШЕВ ЛУКА
+МАЛЕШЕВ МАРИЈА
+МАЛЕШЕВ МИЛЕНКО
+МАЛЕШЕВ МИЛЕВА
+МАЛЕШЕВ МИЉА
+МАЛЕШЕВ МИЛОШ
+МАЛЕШЕВ МИОДРАГ
+МАЛЕШЕВ МИОДРАГ
+МАЛЕШЕВ МИРОСЛАВ
+МАЛЕШЕВ МИРОСЛАВ
+МАЛЕШЕВ ПЕТАР
+МАЛЕШЕВ ПЕТАР
+МАЛЕШЕВ ПРЕДРАГ
+МАЛЕШЕВ ПРЕДРАГ
+МАЛЕШЕВ ПРИЗРЕНКА
+МАЛЕШЕВ СЛАВКО
+МАЛЕШЕВ ТАМАРА
+МАЛЕШЕВ ВЕРА
+МАЛЕШЕВ ВИТОМИР
+МАЛЕШЕВИЋ ЖИВАН
+МАЛЕШЕВИЋ ЖИВКА
+МАЛЕШЕВИЋ ЂУКА
+МАЛЕШЕВИЋ АЛЕКСАНДРА
+МАЛЕШЕВИЋ ДИМИТРИЈЕ
+МАЛЕШЕВИЋ ДРАГАНА
+МАЛЕШЕВИЋ ДРАГАН
+МАЛЕШЕВИЋ ДУШКО
+МАЛЕШЕВИЋ ГОЈКО
+МАЛЕШЕВИЋ ИВАН
+МАЛЕШЕВИЋ ЈОВАН
+МАЛЕШЕВИЋ ЈОВАН
+МАЛЕШЕВИЋ ЛАЗАР
+МАЛЕШЕВИЋ ЉУБИЦА
+МАЛЕШЕВИЋ МАРИЈА
+МАЛЕШЕВИЋ МАРКО
+МАЛЕШЕВИЋ МИЛЕ
+МАЛЕШЕВИЋ МИЛИЦА
+МАЛЕШЕВИЋ МИЛОШ
+МАЛЕШЕВИЋ МИРКО
+МАЛЕШЕВИЋ МИРОСЛАВ
+МАЛЕШЕВИЋ МЛАДЕН
+МАЛЕШЕВИЋ НАДА
+МАЛЕШЕВИЋ НЕДЕЉКО
+МАЛЕШЕВИЋ НИКИЦА
+МАЛЕШЕВИЋ ПЕТАР
+МАЛЕШЕВИЋ ПЕТАР
+МАЛЕШЕВИЋ САВКО ЛОКАЛ
+МАЛЕШЕВИЋ СЛОБОДАНКА ДР
+МАЛЕШЕВИЋ ВАСКРСИЈЕ
+МАЛЕШЕВИЋ ВЛАДИМИР
+МАЛЕШЕВИЋ ВОЈИСЛАВА
+МАЛЕЦКИ БЛАЖ
+МАЛЕНЧИЋ ЂОРЂЕ
+МАЛЕНЧИЋ ГАВРИЛО
+МАЛЕНЧИЋ МАРИЈА
+МАЛЕНЧИЋ НИКОЛА
+МАЛЕНЧИЋ РОДОЉУБ
+МАЛЕНЧИЋ РУЖИЦА
+МАЛЕНИЋ ЛАЗАР
+МАЛЕНИЋ РУЖА
+МАЛЕНИЋ СИМА
+МАЛЕНИЋ ТОМИСЛАВ
+МАЛЕНИЦА ЂУРО
+МАЛЕНИЦА АНТУН
+МАЛЕНИЦА ДРАГО
+МАЛЕНИЦА ИВАН
+МАЛЕНИЦА МАРКО
+МАЛЕНКОВИЋ ЂОРЂЕ
+МАЛЕНКОВИЋ МИЛОШ ДР
+МАЛЕНКОВИЋ ВЛАДИМИР
+МАЛЕНОВИЋ МИРОСЛАВ
+МАЛЕР КРИШТОФ
+МАЛЕРТ ВЕНДЕЛ
+МАЛЕТАШКИ ЕВИЦА
+МАЛЕТИЋ-ШРЕК МАРИЈА
+МАЛЕТИЋ-ШРЕК МАРИЈА
+МАЛЕТИЋ ЖАРКО
+МАЛЕТИЋ ЖИВАНКА
+МАЛЕТИЋ ЖИВКО
+МАЛЕТИЋ ЂОРЂЕ ДИПЛ ИНГ
+МАЛЕТИЋ ЂОРЂЕ
+МАЛЕТИЋ ЂОРЂЕ
+МАЛЕТИЋ БОСИЉКА
+МАЛЕТИЋ ДРАГОСЛАВ
+МАЛЕТИЋ ДРАГО
+МАЛЕТИЋ ЈЕЛИЦА
+МАЛЕТИЋ ЈОВАНКА
+МАЛЕТИЋ ЈОВАН
+МАЛЕТИЋ ЛАУРА
+МАЛЕТИЋ ЛАЗАР
+МАЛЕТИЋ ЛАЗАР
+МАЛЕТИЋ ЛУКА
+МАЛЕТИЋ МАРИЦА
+МАЛЕТИЋ МИЛЕНКО
+МАЛЕТИЋ МИЛОМИР
+МАЛЕТИЋ МИОДРАГ
+МАЛЕТИЋ МИОМИР
+МАЛЕТИЋ НАДА
+МАЛЕТИЋ НЕДЕЉКО
+МАЛЕТИЋ НИКОЛА
+МАЛЕТИЋ ПАЈА
+МАЛЕТИЋ РАДИВОЈ
+МАЛЕТИЋ РАДОСЛАВ
+МАЛЕТИЋ РАДОСЛАВ
+МАЛЕТИЋ САВА
+МАЛЕТИЋ САВО
+МАЛЕТИЋ СЛАВИЦА
+МАЛЕТИЋ СЛОБОДАНКА
+МАЛЕТИЋ СЛОБОДАН
+МАЛЕТИЋ СРБОЉУБ
+МАЛЕТИЋ СТЕВАН
+МАЛЕТИЋ СТЕВАН
+МАЛЕТИЋ СТЕВАН
+МАЛЕТИЋ СВЕТОЗАР
+МАЛЕТИЋ СВЕТОЗАР
+МАЛЕТИЋ ТАМАРА
+МАЛЕТИЋ ВЕКОСЛАВ
+МАЛЕТИЋ ВЈЕРА
+МАЛЕТИЋ ВЈЕРА
+МАЛЕТИЋ ЗЛАТКО
+МАЛЕТИН ЧАРНА ДИПЛ ИНГ
+МАЛЕТИН ЖИВКО
+МАЛЕТИН ЂОРЂЕ
+МАЛЕТИН ЂОРЂЕ
+МАЛЕТИН ЂУРА
+МАЛЕТИН ЂУРИЦА
+МАЛЕТИН АЛЕКСАНДАР
+МАЛЕТИН БОШКО
+МАЛЕТИН БОЖАНА
+МАЛЕТИН ДАНИЦА
+МАЛЕТИН ДАРИНКА
+МАЛЕТИН ДРАГИША
+МАЛЕТИН ДУШАН
+МАЛЕТИН ДУШАН
+МАЛЕТИН ГОРАН
+МАЛЕТИН ЈАНА
+МАЛЕТИН ЈЕЛЕНА
+МАЛЕТИН ЈОВАН
+МАЛЕТИН ЈОВАН
+МАЛЕТИН ЈОВАН
+МАЛЕТИН ЉУБОМИР
+МАЛЕТИН МАРИЈА
+МАЛЕТИН МАРИЈА
+МАЛЕТИН МИЛАНКА
+МАЛЕТИН МИЛАН
+МАЛЕТИН МИЛАН
+МАЛЕТИН МИЛОШ
+МАЛЕТИН МИЛОВАН
+МАЛЕТИН МИРКО
+МАЛЕТИН ПАЈА
+МАЛЕТИН ПАВЛЕ
+МАЛЕТИН РАДА
+МАЛЕТИН РАДИВОЈЕ
+МАЛЕТИН РУЖИЦА
+МАЛЕТИН СЛАВИЦА
+МАЛЕТИН СЛАВКО
+МАЛЕТИН СПОМЕНКА
+МАЛЕТИН СТЕВАН
+МАЛЕТИН СТЕВАН
+МАЛЕТИН СВЕТОЗАР
+МАЛЕТИН СВЕТОЗАР
+МАЛЕТИН ТИМА
+МАЛЕТИН ТОДОР
+МАЛЕТИН ТОДОР
+МАЛЕТИН ВАСА
+МАЛЕТИН ВИТОМИР
+МАЛЕТИН ВОЈИСЛАВ
+МАЛЕТИН ЗОРА
+МАЛЕТИН ЗОРА
+МАЛЕВИЋ ВЛАДИМИР
+МАЛИ ЖИВАН
+МАЛИ ЖИВКО
+МАЛИ ДАМЈАН
+МАЛИ ДРАГА
+МАЛИ ЕЛЕОНОРА
+МАЛИ ГОРАН
+МАЛИ ЈОВАН
+МАЛИ КРИСТИФОР
+МАЛИ ЉУБИЦА
+МАЛИ ЉУБОМИР
+МАЛИ МИЛОШ
+МАЛИ МИОДРАГ
+МАЛИ САВА
+МАЛИ СТАНИМИР
+МАЛИ ВОЈИСЛАВ
+МАЛИЧЕВИЋ ЂОРЂЕ
+МАЛИЧЕВИЋ РАДИВОЈЕ
+МАЛИЧИЋ МИЛОШ
+МАЛИЧИЋ ВОЈИСЛАВ
+МАЛИЋ ЖАРКО
+МАЛИЋ БИЉАНА
+МАЛИЋ БОЖАНА
+МАЛИЋ ЦВИЈЕТИН
+МАЛИЋ МИЛАН
+МАЛИЋ МИЛЕНКО
+МАЛИЋ МИТАР
+МАЛИЋ МЛАДЕН
+МАЛИЋ НОВАК
+МАЛИЋ ПРЕДРАГ
+МАЛИЋ РАДИВОЈ
+МАЛИЋ РАТКО
+МАЛИЋ СЛАВКО
+МАЛИЋ СОФИЈА
+МАЛИЋ СТОЈАН
+МАЛИЋ СТОЈА
+МАЛИЋ УРОШ
+МАЛИЋ ВУКИЦА
+МАЛИЏА ЖЕЉКО
+МАЛИЏАН БЛАЖО
+МАЛИКОВИЋ ДУШАН
+МАЛИН ЂУРА
+МАЛИН ИЛИЈА
+МАЛИН МИЛИЦА
+МАЛИН ОЛГА
+МАЛИН СТАНИСЛАВ
+МАЛИН ТАТЈАНА
+МАЛИНАР ЈЕЛЕНА
+МАЛИНИЋ СПАСОЈЕ
+МАЛИНОВИЋ АНЂА
+МАЛИНОВИЋ АНКИЦА
+МАЛИНОВИЋ АНКИЦА
+МАЛИНОВИЋ БОЖО
+МАЛИНОВИЋ БОГДАН
+МАЛИНОВИЋ БОГДАН
+МАЛИНОВИЋ ДАНИЦА
+МАЛИНОВИЋ ДРАГАН
+МАЛИНОВИЋ ДРАГИЊА
+МАЛИНОВИЋ ДРАГОЉУБ
+МАЛИНОВИЋ ЈОВО
+МАЛИНОВИЋ МАРИНКО
+МАЛИНОВИЋ НЕДЕЉКО
+МАЛИНОВИЋ НЕДЕЉКО
+МАЛИНОВИЋ САВО
+МАЛИНОВИЋ СИНИША
+МАЛИНОВИЋ СЛАВИЦА
+МАЛИНОВИЋ СТЕВАН
+МАЛИНОВИЋ ВЕЉКО
+МАЛИВУК БОЖАНА
+МАЛИВУК ДУШАН
+МАЛИВУК МИЛАН
+МАЛИВУК НИКОЛА
+МАЛИВУК ПАВЛЕ
+МАЛИВУК СВЕТИСЛАВ
+МАЉА МОРИНА
+МАЉИК СТЕВА
+МАЉКОВИЋ ЂУРО
+МАЉКОВИЋ БРАНКО
+МАЉКОВИЋ БРАНКО
+МАЉКОВИЋ-ЏУКЛЕВСКИ АНА
+МАЉКОВИЋ МАРКО
+МАЉКОВИЋ МИЛАН
+МАЉКОВИЋ МИЛАН
+МАЉКОВИЋ НЕВЕНКА
+МАЉКОВИЋ НИКОЛА
+МАЉКОВИЋ РАНКА
+МАЉКОВИЋ ВЕРА
+МАЛКИЋ ГОРДАН
+МАЛКИЋ ЉУБИША
+МАЛКИЋ СТАНА
+МАЛМЕР АНДРИЈА
+МАЛМЕР АНДРИЈА
+МАЛНАР ДРАГУТИН
+МАЛНАР ЈОСИП
+МАЛОЧИЋ МИЛАН
+МАЛОЧИЋ МИЛОРАД
+МАЛОБАБИЋ ЉУБАН
+МАЛОБАБИЋ МАРКО
+МАЛОБАБИЋ МИРОСЛАВ
+МАЛОБАБИЋ НОВИЦА
+МАЛОБАБИЋ РАДЕ
+МАЛОГАЈСКИ БОРИСЛАВ
+МАЛОГАЈСКИ СТЕВАН
+МАЛОТИЋ САВО
+МАЛОВАШИЋ МАРИЈА
+МАЛОВИЋ БОГДАН
+МАЛОВИЋ РАДМИЛА
+МАЛОВИЋ СТАНИША
+МАЛОВРАЗИЋ ГОЈКО
+МАЛОВРАЗИЋ ГОЈКО
+МАЛУЦКОВ БОГДАН
+МАЛУЦКОВ ДАНИЦА
+МАЛУЦКОВ ЈОВАН
+МАЛУЦКОВ МАРИЈА
+МАЛУЦКОВ МИОДРАГ ДИПЛ ИНГ
+МАЛУЦКОВ РАДОВАН ДР ЛЕКАР
+МАЛУЦКОВ СЛОБОДАН
+МАЛУЦКОВ СТЕВАН
+МАЛУЦКОВ ЗОРКА
+МАМИЋ ИВАН
+МАМИЋ ЈОЗО
+МАМУЖИЋ ИВАН ДИПЛ ИНГ
+МАМУЖИЋ ИВАН
+МАМУЖИЋ ИВАН
+МАМУЛА ДУШАН
+МАМУЛА МЛАДЕНКА
+МАМУЛА ПАВЛЕ
+МАМУЛА РУЖА
+МАМУТОВИЋ МИЛАН
+МАМУТОВИЋ МИЛАН
+МАМУТОВИЋ РАДИВОЈ
+МАМУЗИЋ БОГДАНКА
+МАНЧЕВ НИКОЛА
+МАНЧЕВСКИ КАТА
+МАНЧЕВСКИ СТЕВАН
+МАНЧИЋ АРАНКА
+МАНЧИЋ ДРАГАН ДР
+МАНЧИЋ КАТА
+МАНЧИЋ НИКОЛА
+МАНЧИЋ САША
+МАНЧИЋ СЛОБОДАН
+МАНЧИЋ СВЕТОЗАР
+МАНЧУ ЂОРЂЕ
+МАНЧУ ДРАГИЊА
+МАНЧУ ДУШАН
+МАНЧУ МИЛАН
+МАНЧУ МИЛАН
+МАНЧУ МИЛОШ
+МАНЧУ МИЛОШ
+МАНЧУ НЕНАД
+МАНЧУ СТЕВАН
+МАНЧУ СВЕТОЗАР
+МАНЧУ ВИКТОР
+МАНАСИЈЕВИЋ ГЕРАСИМ
+МАНАСТИРАЦ ДАМЈАН
+МАНАСТИРАЦ ЉУБИША
+МАНЦ СТЕВАН
+МАНЦЕДЕР ЂУРА
+МАНЏУКИЋ МИОДРАГ
+МАНЏУКОВИЋ ВЕЛИМИР
+МАНДАРИН НАТАША
+МАНДЕК ФИЛИП
+МАНДЕЛЦ ЉУБИЦА
+МАНДИЋ ЧАВА
+МАНДИЋ ЖИВКО
+МАНДИЋ ЂОРЂЕ
+МАНДИЋ ЂОРЂЕ
+МАНДИЋ ЂУРА
+МАНДИЋ ЂУРИЦА
+МАНДИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+МАНДИЋ АЛЕКСАНДАР
+МАНДИЋ БОШКО
+МАНДИЋ БОГДАН
+МАНДИЋ БОРИСЛАВА
+МАНДИЋ БОРИСЛАВ
+МАНДИЋ БРАНИСЛАВ
+МАНДИЋ ЦВИЈЕТА
+МАНДИЋ ДАНИЦА
+МАНДИЋ ДАРА
+МАНДИЋ ДЕЛФИНА
+МАНДИЋ ДЕНЕШ
+МАНДИЋ ДОБРИЛА
+МАНДИЋ ДРАГАНА
+МАНДИЋ ДРАГАН
+МАНДИЋ ДРАГОСЛАВ
+МАНДИЋ ДРАГО
+МАНДИЋ ДРАГО
+МАНДИЋ ДРАГУТИН
+МАНДИЋ ДУШАНКА
+МАНДИЋ ДУШАНКА
+МАНДИЋ ДУШАНКА
+МАНДИЋ ДУШАН
+МАНДИЋ ФРАЊА
+МАНДИЋ ИГЊАТ
+МАНДИЋ ИВАНКА
+МАНДИЋ ИВКА
+МАНДИЋ ЈОВАНКА
+МАНДИЋ-ЈОВАНОВИЋ ВИНКА
+МАНДИЋ ЈОВО
+МАНДИЋ ЈОВО
+МАНДИЋ КАТИЦА
+МАНДИЋ КОСТА
+МАНДИЋ КСЕНИЈА
+МАНДИЋ ЉИЉАНА
+МАНДИЋ ЉУБИЦА
+МАНДИЋ ЉУБОМИР
+МАНДИЋ МАНЕ
+МАНДИЋ МАНЕ
+МАНДИЋ МАРА
+МАНДИЋ МАРГИТА
+МАНДИЋ МАРИЈА
+МАНДИЋ МАРИЈА
+МАНДИЋ МАРИЈА
+МАНДИЋ МИКА
+МАНДИЋ МИЛАДИЈА
+МАНДИЋ МИЛАН ДИПЛ ИНГ
+МАНДИЋ МИЛАН
+МАНДИЋ МИЛЕНА
+МАНДИЋ МИЛЕ
+МАНДИЋ МИЛЕ
+МАНДИЋ МИЛЕ
+МАНДИЋ МИЛЕ
+МАНДИЋ МИЛОЈЕ
+МАНДИЋ МИЛОЈКО ДР ЛЕКАР
+МАНДИЋ МИЛОРАД
+МАНДИЋ МИЛОРАД
+МАНДИЋ МИОДРАГ
+МАНДИЋ МИРОСЛАВ
+МАНДИЋ НАДА
+МАНДИЋ НАДА
+МАНДИЋ НЕЂО
+МАНДИЋ НЕЂО
+МАНДИЋ НЕДЕЉКО ДИПЛ ПРАВНИК
+МАНДИЋ НИКОЛА
+МАНДИЋ НИКОЛА
+МАНДИЋ НОВКА
+МАНДИЋ ПАНЕ
+МАНДИЋ ПЕРА
+МАНДИЋ ПЕТАР
+МАНДИЋ РАДЕНКО
+МАНДИЋ РАДИВОЈЕ
+МАНДИЋ РАДМИЛА
+МАНДИЋ РАДМИЛА
+МАНДИЋ РАДОЈКА
+МАНДИЋ РАДОМИР
+МАНДИЋ РАДОВАН
+МАНДИЋ РАДОВАН
+МАНДИЋ РАЈА
+МАНДИЋ СИНИША
+МАНДИЋ СЛАВКА
+МАНДИЋ СЛАВКО
+МАНДИЋ СЛОБОДАН
+МАНДИЋ СЛОБОДАН
+МАНДИЋ СНЕЖАНА
+МАНДИЋ СРЕТЕН
+МАНДИЋ СРЕТЕН
+МАНДИЋ СРЕТО
+МАНДИЋ СТЕВАН
+МАНДИЋ СВЕТКО
+МАНДИЋ СВЕТЛАНА
+МАНДИЋ ТЕРЕЗИЈА
+МАНДИЋ ТИБОР
+МАНДИЋ ТОМИСЛАВ
+МАНДИЋ ТОМИСЛАВ
+МАНДИЋ УРОШ ДИПЛ ОЕЦ
+МАНДИЋ ВАСИЛИЈЕ
+МАНДИЋ ВЕЛИЗАР
+МАНДИЋ ВЕРА
+МАНДИЋ ВИОЛЕТА
+МАНДИЋ ЗЛАТИЦА
+МАНДИЋ ЗОРАН
+МАНДИЋ ЗОРАН
+МАНДИЋ ЗОРИЦА
+МАНДИЋ ЗОРКА
+МАНДИЋ ЗОРКА
+МАНДИЋ ЗОРКА
+МАНДИЋ ЗВОНИМИР
+МАНДРАПА ЂУРО
+МАНДРИНО САНКА
+МАНЕСКИ БЛАГОЈА
+МАНЕВСКИ БРАНИСЛАВ
+МАНЕВСКИ ДУШАН
+МАНЕВСКИ РАДОСЛАВ
+МАНЕВСКИ ТРАЈКО ДР
+МАНЕВСКИ ВЕРА
+МАНГ БРАНКО
+МАНГЕР ЈОСИП
+МАНХАЈМ ЈОЖЕФ
+МАНИЋ АНКИЦА
+МАНИЋ БЛАНКА
+МАНИЋ БОЖИДАР
+МАНИЋ БРАНИСЛАВ
+МАНИЋ БРАНКО
+МАНИЋ БРАНКО
+МАНИЋ ДАНИЛО
+МАНИЋ ДРАГИША
+МАНИЋ МИЛОЈЕ
+МАНИЋ МИЛОЈЕ
+МАНИЋ МИЛОРАД
+МАНИЋ СЕВЕР ДИПЛ ПХ
+МАНИЋ СВЕТОМИР
+МАНИН ЂОРЂЕ
+МАЊА СРЕДОЈЕ
+МАЊА ЗДРАВКО
+МАЊАК ДРАГО
+МАЊЕНЧИЋ СЛОБОДАН
+МАЊУЛОВ ЛУКА
+МАНОЈЛОВ ИРЕНА
+МАНОЈЛОВ ИВАН
+МАНОЈЛОВ ЈОВАНКА
+МАНОЈЛОВИЋ ЧЕДОМИР
+МАНОЈЛОВИЋ ЧЕДО
+МАНОЈЛОВИЋ ЖАРКО
+МАНОЈЛОВИЋ ЖИВКО
+МАНОЈЛОВИЋ ЂОРЂЕ
+МАНОЈЛОВИЋ АЛЕКСАНДАР
+МАНОЈЛОВИЋ АЛЕКСАНДАР
+МАНОЈЛОВИЋ АЛЕКСА
+МАНОЈЛОВИЋ АНГЕЛИНА
+МАНОЈЛОВИЋ БИЉАНА
+МАНОЈЛОВИЋ БОСИЉКА
+МАНОЈЛОВИЋ БРАНИСЛАВ
+МАНОЈЛОВИЋ ДАРИНКА
+МАНОЈЛОВИЋ ДЕСАНКА
+МАНОЈЛОВИЋ ДОБРИЛА
+МАНОЈЛОВИЋ ДРАГАНА
+МАНОЈЛОВИЋ ДРАГИЦА
+МАНОЈЛОВИЋ ДУШАН
+МАНОЈЛОВИЋ ДУШАН
+МАНОЈЛОВИЋ ГРУЈИЦА
+МАНОЈЛОВИЋ ИЛИЈА
+МАНОЈЛОВИЋ ЈЕЛЕНА
+МАНОЈЛОВИЋ ЈОВАН
+МАНОЈЛОВИЋ КАТАРИНА
+МАНОЈЛОВИЋ КОВИЉКО
+МАНОЈЛОВИЋ ЛАЗАР
+МАНОЈЛОВИЋ ЛАЗАР
+МАНОЈЛОВИЋ ЛАЗАР
+МАНОЈЛОВИЋ ЉУБИЦА
+МАНОЈЛОВИЋ ЉУБИЦА
+МАНОЈЛОВИЋ ЉУБОМИР
+МАНОЈЛОВИЋ МАЈА
+МАНОЈЛОВИЋ МАНОЈЛО
+МАНОЈЛОВИЋ МАНОЈЛО
+МАНОЈЛОВИЋ МАРИЈА
+МАНОЈЛОВИЋ МИЛАН
+МАНОЈЛОВИЋ МИЛАН
+МАНОЈЛОВИЋ МИЛАН
+МАНОЈЛОВИЋ МИЛЕНКО
+МАНОЈЛОВИЋ МИЛОШ
+МАНОЈЛОВИЋ МИЛОШ
+МАНОЈЛОВИЋ МИЛОШ
+МАНОЈЛОВИЋ МИЛОРАД
+МАНОЈЛОВИЋ МИЛОРАД
+МАНОЈЛОВИЋ МИОДРАГ
+МАНОЈЛОВИЋ МИОДРАГ
+МАНОЈЛОВИЋ МИРЈАНА
+МАНОЈЛОВИЋ МИРКО ДИПЛ ИНГ
+МАНОЈЛОВИЋ МИРКО
+МАНОЈЛОВИЋ МИРОСЛАВ
+МАНОЈЛОВИЋ МОМЧИЛО
+МАНОЈЛОВИЋ МОМЧИЛО
+МАНОЈЛОВИЋ МОМЧИЛО
+МАНОЈЛОВИЋ НЕНАД
+МАНОЈЛОВИЋ НИКОЛА
+МАНОЈЛОВИЋ ПЕТАР
+МАНОЈЛОВИЋ ПЕТАР
+МАНОЈЛОВИЋ РАДИВОЈ
+МАНОЈЛОВИЋ РАТКО
+МАНОЈЛОВИЋ САВА
+МАНОЈЛОВИЋ САВО
+МАНОЈЛОВИЋ СЛАВИЦА
+МАНОЈЛОВИЋ СЛОБОДАН
+МАНОЈЛОВИЋ СТАНИША ДР ПРОФ
+МАНОЈЛОВИЋ СТАНКО
+МАНОЈЛОВИЋ СТЕВАН
+МАНОЈЛОВИЋ СТЕВАН
+МАНОЈЛОВИЋ СВЕТОЗАР
+МАНОЈЛОВИЋ ТОША
+МАНОЈЛОВИЋ ВАНДА
+МАНОЈЛОВИЋ ВЕЛИСЛАВ
+МАНОЈЛОВИЋ ВЕРА
+МАНОЈЛОВИЋ ЗОРАН
+МАНОЈЛОВИЋ ЗОРАН
+МАНОЈЛОВИЋ ЗОРАН
+МАНОЈЛОВИЋ ЗОРИЦА
+МАНОЈЛОВИЋ ЗВОНКО
+МАНУКОВ ОЛГА
+МАНУКОВ ТОДОР
+МАОДУШ АНА
+МАОДУШ ДАНИЦА
+МАОДУШ ЈОВО
+МАОДУШ МИОДРАГ
+МАОДУШ НИКОЛА
+МАОДУШ ПРЕДРАГ
+МАР ЕДВАРД
+МАРЧАК МИХАЈЛО
+МАРЧЕК МИЛАН
+МАРЧЕТА ЂУРА
+МАРЧЕТА БРАНКО
+МАРЧЕТА ДРАГИЦА
+МАРЧЕТА ДРАГИЦА
+МАРЧЕТА ЛАЗАР
+МАРЧЕТА МИЛАН
+МАРЧЕТА РАЈКО
+МАРЧЕТА СЛОБОДАН
+МАРЧЕТА СТЕВА
+МАРЧЕТА ВЕЛИМИР
+МАРЧЕТА ЗОРА
+МАРЧЕТИЋ ЦВЕТА
+МАРЧЕТИЋ ДРАГО
+МАРЧЕТИЋ МАРКО
+МАРЧЕТИЋ МИЛАН
+МАРЧЕТИЋ МИЛАН
+МАРЧЕТИЋ МИЛАН
+МАРЧЕТИЋ НИКОЛА
+МАРЧЕТИЋ ОБРЕНИЈА
+МАРЧЕТИЋ ОЛБИНА
+МАРЧЕТИЋ ПЕРИЦА
+МАРЧЕТИЋ ПЕТАР
+МАРЧЕТИЋ ПЕТАР
+МАРЧЕТИН РАДЕ
+МАРЧИЋ ЖИВАН
+МАРЧИЋ ЂОРЂЕ
+МАРЧИЋ АЛЕКСАНДАР
+МАРЧИЋ БОЖАНА
+МАРЧИЋ ЈЕЛЕНА
+МАРЧИЋ МАРИЈА
+МАРЧИЋ МИЛЕНКО
+МАРЧИЋ СТЕВАН
+МАРЧИЋ СТЕВАН
+МАРЧИЋ СТЕВАН
+МАРЧИЋЕВ МАРИЈА
+МАРЧИЋЕВ МЕРИМА
+МАРЧИНКО МИЛАН
+МАРЧОК АНИЦА
+МАРЧОК ИШТВАН
+МАРЧОК ИСИДОРА
+МАРЧОК ЛИДИЈА
+МАРЧОК МИХАЈЛО
+МАРЧОК МИХАЈЛО
+МАРЧОК ВЕРА
+МАРЧОК ЗУЗАНА
+МАРЧУК САША
+МАРЧУК СТЕВАН
+МАРЖИЋ АНИЦА
+МАРЂЕЛОШКИ СТАНУША
+МАРАШ ЈОВАН
+МАРАШ МИРОЈЕ
+МАРАШ СЛОБОДАН
+МАРАШ ВОЈИН
+МАРАЦИ МИХАЉ
+МАРАКОВИЋ НЕВЕНА
+МАРАМИЦА ЈЕЛЕНА
+МАРАМИЦА МИРОСЛАВ
+МАРАН ДРАГИША
+МАРАН МИЛОРАД
+МАРАС ФИЛИП
+МАРАС ЈОСИП
+МАРАУЦ ЗВОНИМИР
+МАРАВИЋ ЂУРО
+МАРАВИЋ ЂУРО
+МАРАВИЋ ЂУРО
+МАРАВИЋ БРАНИСЛАВ
+МАРАВИЋ ДМИТАР
+МАРАВИЋ ДРАГИЦА
+МАРАВИЋ ЛАЗО
+МАРАВИЋ МАРКО
+МАРАВИЋ МИХАЈЛО
+МАРАВИЋ МИЛАН
+МАРАВИЋ МИЛЕНА
+МАРАВИЋ МИЛОШ
+МАРАВИЋ НИКОЛА
+МАРАВИЋ САВА
+МАРАВИЋ СЛАВИЦА
+МАРАВИЋ ВЛАДА
+МАРЦЕКИЋ ДОБРИНКА
+МАРЦИКИЋ ЖИВАНА
+МАРЦИКИЋ БОГДАН
+МАРЦИКИЋ ДРАГИЦА
+МАРЦИКИЋ ЕМИЛ
+МАРЦИКИЋ ГИГА ДР
+МАРЦИКИЋ КОНСТАНТИН
+МАРЦИКИЋ ЉИЉАНА
+МАРЦИКИЋ ЉУБИНКА
+МАРЦИКИЋ МАРИЦА
+МАРЦИКИЋ МИЛЕНА
+МАРЦИКИЋ СОФИЈА
+МАРЦИКИЋ СТЕВАН
+МАРЦИКИЋ СТЕВАН
+МАРЦИКИЋ ВЕРА
+МАРДЕШИЋ ШИМЕ
+МАРЕШ БОЖО
+МАРЕШ ТРИФУН
+МАРЕШЧУК ПЕТАР
+МАРЕЉ ЖИВАН
+МАРЕЉ МИРОСЛАВ
+МАРЕЉ СЕЛЕНА
+МАРЕЉ ВЕЛИСЛАВ
+МАРЕЉ ЗЛАТА
+МАРЕЉЕВ ЈЕЛЕНА
+МАРЕТИЋ МАРКО ДИПЛ ОЕЦ
+МАРЕТИЋ СТЕВО
+МАРЕТИЋ ВЛАДА
+МАРЕТИЋ ВЛАДА
+МАРЕТИЋ ВЛАДА
+МАРЕВИЋ АНТЕ
+МАРФИ СМИЉКА
+МАРГАНОВИЋ ДРАГИЦА
+МАРГАНОВИЋ ДУШАН ДР
+МАРГАНОВИЋ ГЕОРГИНА
+МАРГАНЗ ВИКТОР
+МАРГЕТА АНИЦА
+МАРГЕТА МАРИЈА
+МАРГЕТИЋ ЖИЖА
+МАРГЕТИЋ ЕЛВИРА
+МАРГИТ ЈУЛИЈАНА
+МАРГИТ ВЕРА
+МАРГУШИЋ АНДРИЈА
+МАРХОШЕВИЋ МУЈО
+МАРИЧЕВИЋ КАТИЦА
+МАРИЧЕВИЋ РИСТА
+МАРИЧИЋ АНДРИЈА
+МАРИЧИЋ БРАНКО
+МАРИЧИЋ БРАТОЉУБ
+МАРИЧИЋ ГОЈКО
+МАРИЧИЋ ИЛИЈА
+МАРИЧИЋ ИВИЦА
+МАРИЧИЋ МАРА
+МАРИЧИЋ МИЛАН
+МАРИЧИЋ МИЛОРАД
+МАРИЧИЋ МИРА
+МАРИЧИЋ НЕДЕЉКО
+МАРИЧИЋ НИКОЛА
+МАРИЧИЋ НИКОЛА
+МАРИЧИЋ ПАВЛЕ
+МАРИЧИЋ СТЕВАН
+МАРИЧИЋ СТЕВАН
+МАРИЧИЋ ВОЈИСЛАВ
+МАРИЧИН НЕНАД
+МАРИШАН ВЛАДИМИР
+МАРИЋ ЖАРКО
+МАРИЋ ЖАРКО
+МАРИЋ ЖИКА
+МАРИЋ ЖИВАНА
+МАРИЋ ЖИВКО
+МАРИЋ ЂОРЂЕ
+МАРИЋ ЂУРО
+МАРИЋ АДАМ ДР
+МАРИЋ АЛЕКСАНДАР
+МАРИЋ АНЂЕЛКО
+МАРИЋ АНЂЕЛКО
+МАРИЋ АНКА
+МАРИЋ АНКА
+МАРИЋ АНКИЦА
+МАРИЋ БОШКО
+МАРИЋ БОШКО
+МАРИЋ БОЖИЦА
+МАРИЋ БОЖИДАР
+МАРИЋ БОГОЉУБ
+МАРИЋ БОЈАДИМИР
+МАРИЋ БОРИВОЈ
+МАРИЋ БОСИЉКА
+МАРИЋ БРАНИСЛАВ ДИПЛ ИНГ
+МАРИЋ БРАНКО
+МАРИЋ БРАНКО
+МАРИЋ БРАНО
+МАРИЋ ЦВИЈО
+МАРИЋ ДАНИЦА
+МАРИЋ ДАРИНКА
+МАРИЋ ДАВИД
+МАРИЋ ДРАГАНА
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГАН
+МАРИЋ ДРАГИЦА
+МАРИЋ ДРАГОЉУБ
+МАРИЋ ДУШАНКА
+МАРИЋ ДУШАН
+МАРИЋ ДУШАН
+МАРИЋ ДУШАН
+МАРИЋ ДУШАН
+МАРИЋ ДУШАН
+МАРИЋ ДУШИЦА
+МАРИЋ ЕРЖЕБЕТ
+МАРИЋ ГОЈКО
+МАРИЋ ГОЈКО
+МАРИЋ ГРУЈИЦА ДР
+МАРИЋ ИЛЕ
+МАРИЋ ИЛИЈА
+МАРИЋ ИЛИЈА
+МАРИЋ ИЛИНКА
+МАРИЋ ИВО
+МАРИЋ ЈАДРАНКА
+МАРИЋ ЈЕЛИЦА
+МАРИЋ ЈОЦА
+МАРИЋ ЈОЛАНКА
+МАРИЋ ЈОВАНКА
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВАН
+МАРИЋ ЈОВО
+МАРИЋ ЈОВО
+МАРИЋ ЈУЛИЈАНА
+МАРИЋ КАДИВКА
+МАРИЋ КАТИЦА
+МАРИЋ КАТИЦА
+МАРИЋ КОСТА
+МАРИЋ ЛАЗАР
+МАРИЋ ЉЕПОСАВА
+МАРИЋ ЉУБА
+МАРИЋ ЉУБИЦА
+МАРИЋ ЉУБОМИР
+МАРИЋ ЉУБОМИР
+МАРИЋ ЉУБОМИР
+МАРИЋ ЉУПКО
+МАРИЋ ЛУКА
+МАРИЋ МАРА
+МАРИЋ МАРИЈА
+МАРИЋ МАРИЈА
+МАРИЋ МАРИЈА
+МАРИЋ МАРКО
+МАРИЋ МАРКО
+МАРИЋ МИЋА ДИПЛ ИНГ
+МАРИЋ МИХАЈЛО
+МАРИЋ МИЛАН ДИПЛ ИНГ
+МАРИЋ МИЛАН ДР
+МАРИЋ МИЛАНА
+МАРИЋ МИЛАНКА
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛАН
+МАРИЋ МИЛЕ ДИПЛ ОЕЦ
+МАРИЋ МИЛЕНА
+МАРИЋ МИЛЕНА
+МАРИЋ МИЛЕНКО
+МАРИЋ МИЛЕНКО
+МАРИЋ МИЛЕНКО
+МАРИЋ МИЛИСАВ
+МАРИЋ МИЛОШ
+МАРИЋ МИЛОШ
+МАРИЋ МИЛОРАД
+МАРИЋ МИЛОРАД
+МАРИЋ МИЛОСАВ
+МАРИЋ МИЛУН
+МАРИЋ МИЛУТИН
+МАРИЋ МИРКО
+МАРИЋ МИРКО
+МАРИЋ МИРКО
+МАРИЋ МИРКО
+МАРИЋ МИРОЉУБ
+МАРИЋ МИТАР
+МАРИЋ МИТАР
+МАРИЋ-МИТРОВИЋ МАРИЈА
+МАРИЋ МОМЧИЛО
+МАРИЋ НЕБОЈША
+МАРИЋ НЕДЕЉКО
+МАРИЋ НЕВЕНКА
+МАРИЋ НИКОЛА
+МАРИЋ НИКОЛА
+МАРИЋ НОВАК
+МАРИЋ НОВАК
+МАРИЋ ОСТОЈА
+МАРИЋ ПАВЛЕ
+МАРИЋ ПЕТАР
+МАРИЋ ПЕТАР
+МАРИЋ ПРВОСЛАВ
+МАРИЋ РАДИВОЈ
+МАРИЋ РАДМИЛА
+МАРИЋ РАДМИЛА
+МАРИЋ РАДМИЛА
+МАРИЋ РАДОМИР ДР
+МАРИЋ РАДОСАВ
+МАРИЋ РАДОСЛАВА
+МАРИЋ РАДОВАНКА
+МАРИЋ РАДОВАН
+МАРИЋ РАДОВАН
+МАРИЋ РАЈКО
+МАРИЋ САВА
+МАРИЋ СИНИША
+МАРИЋ СЛАВИЦА
+МАРИЋ СЛАВКО
+МАРИЋ СЛАВКО
+МАРИЋ СЛОБОДАН
+МАРИЋ СЛОБОДАН
+МАРИЋ СРЕТЕН ДР ПРОФ
+МАРИЋ СТАНИСЛАВ
+МАРИЋ СТАНИСЛАВ
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВАН
+МАРИЋ СТЕВКА
+МАРИЋ СТЕВО
+МАРИЋ СТОЈАНКА
+МАРИЋ СВЕТИСЛАВ ПРОФЕСОР
+МАРИЋ СВЕТИСЛАВ
+МАРИЋ ТАМАРА ДИПЛ ИНГ
+МАРИЋ УРОШ
+МАРИЋ ВАСКА
+МАРИЋ ВАСО
+МАРИЋ ВЕРА
+МАРИЋ ВИД
+МАРИЋ ВЛАДИСЛАВ
+МАРИЋ ВОЈИСЛАВ ДР ПРОФ
+МАРИЋ ВУКАДИН
+МАРИЋ ЗОРАНКА
+МАРИЋ ЗОРАН
+МАРИЋ ЗОРАН
+МАРИЋЕВИЋ ЗОРАН
+МАРИАШ ЈОЖЕФ
+МАРИАШ МАРИЈА
+МАРИЈАШ ЈОВАН
+МАРИЈАШ МАРИЈА
+МАРИЈАШ МАРИЈА
+МАРИЈАШ МАРИЈА
+МАРИЈАШ МИХАЉ
+МАРИЈАШ СТЕВАН
+МАРИЈАШ ЗДЕНКА
+МАРИЈАН ЖЕЉКО
+МАРИЈАН БРАНИСЛАВА
+МАРИЈАНАЦ СТОЈА
+МАРИЈАНОВИЋ РАДОЈКА
+МАРИЈАНОВИЋ СВЕТОЗАР
+МАРИЈАНСКИ ЂОРЂЕ
+МАРИЈАНСКИ ЂОРЂЕ
+МАРИЈАНСКИ АЛЕКСАНДАР
+МАРИЈАНСКИ МИЛОШ
+МАРИЈАНСКИ СТЕВАН
+МАРИЈАНСКИ ВЕСНА
+МАРИН МИЛАН
+МАРИН МИЛИВОЈ
+МАРИН МЛАДЕН
+МАРИН НАТАЛИЈА
+МАРИН НИКОЛА
+МАРИН РАДОМИР
+МАРИН ВАСО
+МАРИН ВЕРИЦА
+МАРИН ЗОРАН
+МАРИНЧЕВ БРАНИСЛАВ
+МАРИНЧЕВ СТЕВАН
+МАРИНЧИЋ ДРАГИЦА
+МАРИНЧИЋ МАРКО
+МАРИНЧИЋ МИЛАН
+МАРИНЧИЋ МИЛАН
+МАРИНЧИЋ ОЛГА
+МАРИНШЕК ВЈЕКОСЛАВ
+МАРИНА ШТЕФАН
+МАРИНА ЛУЋИЈАН
+МАРИНАЦ ЗОРАН
+МАРИНИЋ БРАНКО
+МАРИНИЋ ИВО
+МАРИНИЋ СТИПАН
+МАРИНКОВ ЧЕДА
+МАРИНКОВ ЖАРКО
+МАРИНКОВ ЂОРЂЕ
+МАРИНКОВ ЂОРЂЕ
+МАРИНКОВ ЂУРА ДИПЛ ИНГ
+МАРИНКОВ АНКИЦА
+МАРИНКОВ АРСЕН
+МАРИНКОВ БОЖА
+МАРИНКОВ ДЕЈАН
+МАРИНКОВ ДРАГИЊА
+МАРИНКОВ ДУШАН
+МАРИНКОВ ФЕМКА
+МАРИНКОВ ГАВРА
+МАРИНКОВ ЈОВАНКА
+МАРИНКОВ ЈОВАН
+МАРИНКОВ ЈОВАН
+МАРИНКОВ ЈУЛИЈАНА
+МАРИНКОВ ЈУЛИЈАНА
+МАРИНКОВ МЕЛАНИЈА
+МАРИНКОВ МИЛЕНКО
+МАРИНКОВ МИЛИВОЈ ДИПЛ ИНГ
+МАРИНКОВ МИЉА
+МАРИНКОВ МИЛОРАД
+МАРИНКОВ МИЛОСАВА
+МАРИНКОВ МИОДРАГ
+МАРИНКОВ МИРЈАНА
+МАРИНКОВ МОМЧИЛО
+МАРИНКОВ МОМЧИЛО
+МАРИНКОВ НИКОЛА
+МАРИНКОВ ОМЕР
+МАРИНКОВ ПАЈА
+МАРИНКОВ ПРЕДРАГ
+МАРИНКОВ РУЖИЦА
+МАРИНКОВ САВА
+МАРИНКОВ СИНИША
+МАРИНКОВ СЛАВКО
+МАРИНКОВ СЛАВКО
+МАРИНКОВ СТЕВАН
+МАРИНКОВ СТЕВАН
+МАРИНКОВ СТРАХИЊА ДР ПРОФ
+МАРИНКОВ ВЕСЕЛИН
+МАРИНКОВ ВЕСНА
+МАРИНКОВ ВЛАДА
+МАРИНКОВ ВЛАЈКО
+МАРИНКОВ ЗОРАН
+МАРИНКОВИЋ ЧЕДОМИР
+МАРИНКОВИЋ ЖИВА
+МАРИНКОВИЋ ЖИВКА
+МАРИНКОВИЋ ЖИВКО
+МАРИНКОВИЋ ЖИВКО
+МАРИНКОВИЋ ЖИВКО
+МАРИНКОВИЋ ЖИВОЈИН
+МАРИНКОВИЋ ЖИВОРАД
+МАРИНКОВИЋ БОГОЉУБ
+МАРИНКОВИЋ БОЈА
+МАРИНКОВИЋ БОРИСЛАВ
+МАРИНКОВИЋ БОРИВОЈЕ ДР
+МАРИНКОВИЋ БРАНКО
+МАРИНКОВИЋ БРАТИМИР
+МАРИНКОВИЋ ДРАГАН
+МАРИНКОВИЋ ДРАГАН
+МАРИНКОВИЋ ДРАГАН
+МАРИНКОВИЋ ДРАГАН
+МАРИНКОВИЋ ДРАГИЦА
+МАРИНКОВИЋ ДРАГИЦА
+МАРИНКОВИЋ ЈЕЛИЦА
+МАРИНКОВИЋ ЈОВАН
+МАРИНКОВИЋ КАТАЛИН
+МАРИНКОВИЋ ЛЕПОСАВА
+МАРИНКОВИЋ МИЋО
+МАРИНКОВИЋ МИЛАН
+МАРИНКОВИЋ МИЛЕНА
+МАРИНКОВИЋ МИЛЕНА
+МАРИНКОВИЋ МИЛЕНА
+МАРИНКОВИЋ МИЛЕН
+МАРИНКОВИЋ МИЛИЦА
+МАРИНКОВИЋ МИЛИВОЈЕ
+МАРИНКОВИЋ МИЛОЈКО
+МАРИНКОВИЋ МИЛОРАД
+МАРИНКОВИЋ МИЛОВАН
+МАРИНКОВИЋ МИЛУТИН
+МАРИНКОВИЋ МИРКО
+МАРИНКОВИЋ МИРОСЛАВ
+МАРИНКОВИЋ МИТАР
+МАРИНКОВИЋ МИТАР
+МАРИНКОВИЋ НЕНАД
+МАРИНКОВИЋ НИКОЛА
+МАРИНКОВИЋ НИКОЛА
+МАРИНКОВИЋ НИКОЛА
+МАРИНКОВИЋ РАДА
+МАРИНКОВИЋ РАДИВОЈ
+МАРИНКОВИЋ РАДОЈИЦА
+МАРИНКОВИЋ РАДОЈКА
+МАРИНКОВИЋ РАДОМИР
+МАРИНКОВИЋ РАДОСЛАВ ДР
+МАРИНКОВИЋ РАДОВАН
+МАРИНКОВИЋ РИСТАНА
+МАРИНКОВИЋ РУЖИЦА
+МАРИНКОВИЋ САВА
+МАРИНКОВИЋ СЛАВКО
+МАРИНКОВИЋ СЛОБОДАН
+МАРИНКОВИЋ СЛОБОДАН
+МАРИНКОВИЋ СЛОБОДАН
+МАРИНКОВИЋ СОФИЈА
+МАРИНКОВИЋ СТАНКО
+МАРИНКОВИЋ СТАНОЈКА
+МАРИНКОВИЋ СТЕВАН
+МАРИНКОВИЋ СТОЈАНКА
+МАРИНКОВИЋ СТОЈАН
+МАРИНКОВИЋ СВЕТИСЛАВ
+МАРИНКОВИЋ ВЛАДИЦА
+МАРИНКОВИЋ ВЛАДО
+МАРИНКОВИЋ ВОЈИН
+МАРИНКОВИЋ ВОЈИСЛАВКА
+МАРИНКОВИЋ ВУКАШИН
+МАРИНКОВИЋ ЗОРАН
+МАРИНОВ МАРИНКО
+МАРИНОВИЋ ЂОРЂЕ
+МАРИНОВИЋ АЛЕКСАНДАР
+МАРИНОВИЋ АЛЕКСАНДАР
+МАРИНОВИЋ ДОБРИВОЈЕ
+МАРИНОВИЋ ДУШАН
+МАРИНОВИЋ КАТИЦА
+МАРИНОВИЋ МАРИЈА
+МАРИНОВИЋ МИЛАН
+МАРИНОВИЋ ПЕЈО
+МАРИНОВИЋ-СРДАНОВ ДАНИЦА
+МАРИНОВИЋ ТОМИСЛАВ
+МАРИНОВИЋ ВИНКА
+МАРИНОВИЋ ЗЛАТИЦА
+МАРИНОВИЋ ЗОРИЦА
+МАРИНОВИЋ ЗОРИЦА
+МАРИНОВСКИ ЂОРЂЕ
+МАРИНОВСКИ КАТИЦА
+МАРЈАШ АНКА
+МАРЈАШ ЈАНКО
+МАРЈАШ МИША
+МАРЈАШ МИХАЈЛО
+МАРЈАШ МИЛКА
+МАРЈАШ СТАНКО
+МАРЈАШ ВЛАДИМИР
+МАРЈАН ДУШАН
+МАРЈАН МИЛИЈАНА
+МАРЈАН МИРКО
+МАРЈАНОВ ДУШАН
+МАРЈАНОВ ЕРЖЕБЕТ
+МАРЈАНОВ ЈОВАНКА
+МАРЈАНОВ ЉУБОМИР
+МАРЈАНОВ МАРА
+МАРЈАНОВ МИХАЈЛО ДР
+МАРЈАНОВ МИЛЕНКО
+МАРЈАНОВ ОЛГА
+МАРЈАНОВ РАДОВАН
+МАРЈАНОВ СОЊА
+МАРЈАНОВ ТИМОТИЈЕ
+МАРЈАНОВ ВУЈИЦА
+МАРЈАНОВИЋ ЧЕДОМИР
+МАРЈАНОВИЋ ЖАРКО
+МАРЈАНОВИЋ ЖЕЉКО
+МАРЈАНОВИЋ ЖИВОТА
+МАРЈАНОВИЋ ЖИВОТА
+МАРЈАНОВИЋ ЂОРЂЕ
+МАРЈАНОВИЋ ЂУРО
+МАРЈАНОВИЋ АЛЕКСАНДАР
+МАРЈАНОВИЋ БИЉАНА
+МАРЈАНОВИЋ БОЖИДАР
+МАРЈАНОВИЋ БОЖИДАР
+МАРЈАНОВИЋ БОЈАНА
+МАРЈАНОВИЋ БОРИВОЈЕ
+МАРЈАНОВИЋ БОСИЉКА
+МАРЈАНОВИЋ БРАНИМИР
+МАРЈАНОВИЋ ДАНА
+МАРЈАНОВИЋ ДАНИЛКО
+МАРЈАНОВИЋ ДИМИТРИЈЕ
+МАРЈАНОВИЋ ДРАГАН
+МАРЈАНОВИЋ ДРАГИША
+МАРЈАНОВИЋ ДРАГИША
+МАРЈАНОВИЋ ДРАГОМИР
+МАРЈАНОВИЋ ДУШАНКО
+МАРЈАНОВИЋ ДУШАН
+МАРЈАНОВИЋ ДУШАН
+МАРЈАНОВИЋ ДУШКО
+МАРЈАНОВИЋ ГАБРИЈЕЛ
+МАРЈАНОВИЋ ГОЈКО
+МАРЈАНОВИЋ ЈОВАНКА
+МАРЈАНОВИЋ ЈОВАН
+МАРЈАНОВИЋ ЈОВА
+МАРЈАНОВИЋ ЉУБИВОЈЕ
+МАРЈАНОВИЋ ЉУБОМИР
+МАРЈАНОВИЋ ЛУКА
+МАРЈАНОВИЋ МАРИЈА
+МАРЈАНОВИЋ МИЛАН
+МАРЈАНОВИЋ МИЛАН
+МАРЈАНОВИЋ МИЛАН
+МАРЈАНОВИЋ МИЛАН
+МАРЈАНОВИЋ МИЛЕНКО ДР ИНГ
+МАРЈАНОВИЋ МИЛИЦА ДР
+МАРЈАНОВИЋ МИЛОШ
+МАРЈАНОВИЋ МИЛОМИР
+МАРЈАНОВИЋ МИЛОРАД
+МАРЈАНОВИЋ МИЛОРАД
+МАРЈАНОВИЋ МИЛОРАД
+МАРЈАНОВИЋ МИЛОРАД
+МАРЈАНОВИЋ МИЛУТИН
+МАРЈАНОВИЋ МИРОСЛАВ
+МАРЈАНОВИЋ МИРОСЛАВ
+МАРЈАНОВИЋ МИТАР
+МАРЈАНОВИЋ НАДА
+МАРЈАНОВИЋ НАТАЛИЈА
+МАРЈАНОВИЋ НЕДЕЉКО
+МАРЈАНОВИЋ НЕДЕЉКО
+МАРЈАНОВИЋ НИКОЛА МР
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ НИКОЛА
+МАРЈАНОВИЋ ПРВОСЛАВ
+МАРЈАНОВИЋ РАДМИЛА
+МАРЈАНОВИЋ РУЖИЦА
+МАРЈАНОВИЋ СЛАВОЉУБ ДР
+МАРЈАНОВИЋ СТЕВКА
+МАРЈАНОВИЋ СВЕТЛАНА
+МАРЈАНОВИЋ ТАТЈАНА
+МАРЈАНОВИЋ ТРИВУН
+МАРЈАНОВИЋ ВЕЛИМИР
+МАРЈАНОВИЋ ВЕРА
+МАРЈАНОВИЋ ВИД
+МАРЈАНОВИЋ ВЛАДО
+МАРЈАНОВИЋ ВОЈИН
+МАРЈАНОВИЋ ЗОРАН
+МАРЈАНОВИЋ ЗОРА
+МАРЈАНСКИ ФЕДОР
+МАРКАНОВ ЉУБИЦА
+МАРКАНОВ ЗОРИЦА
+МАРКГРАФ АНИЦА
+МАРКГРАФ СОФИЈА
+МАРКИ НЕВЕНКА
+МАРКИ НИКОЛА
+МАРКИ СЛАВКА
+МАРКИШ СОФИЈА
+МАРКИЋЕВИЋ ДУШАНКА
+МАРКИЋЕВИЋ МИЛАН
+МАРКО ЈАН ПРОФЕСОР
+МАРКО НАДА ДР
+МАРКОСКИ СТОЈАН
+МАРКОВ ЖАРКО
+МАРКОВ ЖИВА
+МАРКОВ ЂУРА
+МАРКОВ АНЂЕЛКА
+МАРКОВ ЦВЕТАНА
+МАРКОВ ДОБРИЛА
+МАРКОВ ДРАГАН
+МАРКОВ ДРАГАН
+МАРКОВ ДУШАН
+МАРКОВ ЕМИЛ
+МАРКОВ ФОТИЈЕ
+МАРКОВ ИЛИЈА
+МАРКОВ ИВИЦА
+МАРКОВ-ЈЕЛЕНИЋ МИРЈАНА
+МАРКОВ ЉУБОМИР
+МАРКОВ ЉУБОМИР
+МАРКОВ ЉУБОМИР
+МАРКОВ МАРИЈА
+МАРКОВ МИЛАН
+МАРКОВ МИЛАН
+МАРКОВ МИЛЕНКО
+МАРКОВ МИЛИЦА
+МАРКОВ МИЛИЦА
+МАРКОВ МИРА
+МАРКОВ НАДА
+МАРКОВ НАДА
+МАРКОВ НИКОЛА
+МАРКОВ ПЕТАР
+МАРКОВ ПЕТАР
+МАРКОВ РАДИСЛАВ
+МАРКОВ РАДОСАВ
+МАРКОВ РАДОВАН
+МАРКОВ РАДОВАН
+МАРКОВ САВА
+МАРКОВ СИНИША
+МАРКОВ СПАСОЈЕ ДР
+МАРКОВ СТОЈАН
+МАРКОВ ТОМИСЛАВ
+МАРКОВ ВЕРА
+МАРКОВ ВИДОСАВА
+МАРКОВ ЗОРАН МР
+МАРКОВ ЗОРА
+МАРКОВ ЗОРКА
+МАРКОВИЋ ЧЕДОМИР
+МАРКОВИЋ ЖАРКО
+МАРКОВИЋ ЖАРКО
+МАРКОВИЋ ЖАРКО
+МАРКОВИЋ ЖЕЛИБОР
+МАРКОВИЋ ЖЕЉКА
+МАРКОВИЋ ЖЕЉКО
+МАРКОВИЋ ЖИВАН
+МАРКОВИЋ ЖИВКО
+МАРКОВИЋ ЖИВОЈИН ДР
+МАРКОВИЋ ЖИВОЈИН
+МАРКОВИЋ ЖИВОЈИН
+МАРКОВИЋ ЖИВОСЛАВ
+МАРКОВИЋ ЖИВОТА
+МАРКОВИЋ ЂЕНА
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ ЂОРЂЕ
+МАРКОВИЋ АДАМ
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АЛЕКСАНДАР
+МАРКОВИЋ АНТОНИЈЕ
+МАРКОВИЋ БОШКО
+МАРКОВИЋ БОРИСЛАВ
+МАРКОВИЋ БОРИСЛАВ
+МАРКОВИЋ БОРИС
+МАРКОВИЋ БОРИВОЈ
+МАРКОВИЋ БРАНИСЛАВ
+МАРКОВИЋ БРАНИСЛАВ
+МАРКОВИЋ БРАНИСЛАВ
+МАРКОВИЋ БРАНКО
+МАРКОВИЋ БРАНКО
+МАРКОВИЋ БУДИМИР
+МАРКОВИЋ БУДИМИР
+МАРКОВИЋ ЦВЕТКО
+МАРКОВИЋ ЦВЕТКО
+МАРКОВИЋ ДАНИЦА
+МАРКОВИЋ ДАНИЦА
+МАРКОВИЋ ДАНИЦА
+МАРКОВИЋ ДЕЈАН
+МАРКОВИЋ ДЕСАНКА
+МАРКОВИЋ ДИМИТРИЈЕ
+МАРКОВИЋ ДИМИТРИЈЕ
+МАРКОВИЋ ДОБРОСАВ
+МАРКОВИЋ ДОБРОСАВ
+МАРКОВИЋ ДРАГАН
+МАРКОВИЋ ДРАГАН
+МАРКОВИЋ ДРАГАН
+МАРКОВИЋ ДРАГИША
+МАРКОВИЋ ДРАГОЈА
+МАРКОВИЋ ДРАГОЈА
+МАРКОВИЋ ДРАГОЉУБ
+МАРКОВИЋ ДРАГОЉУБ
+МАРКОВИЋ ДРАГОЉУБ
+МАРКОВИЋ ДРАГОМИР
+МАРКОВИЋ ДРАГОСЛАВ
+МАРКОВИЋ ДРАГОСЛАВ
+МАРКОВИЋ ДРАГУТИН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУШАН
+МАРКОВИЋ ДУБРАВКО
+МАРКОВИЋ ЕРЖЕБЕТ
+МАРКОВИЋ ЕВИЦА
+МАРКОВИЋ ГОРАН
+МАРКОВИЋ ГОРДАНА
+МАРКОВИЋ ИГЊАТ
+МАРКОВИЋ ИЛИЈА
+МАРКОВИЋ ИЛИЈА
+МАРКОВИЋ ИРЕНА
+МАРКОВИЋ ИВАН
+МАРКОВИЋ ИВКО
+МАРКОВИЋ ЈАДРАНКА
+МАРКОВИЋ ЈАДРАНКА
+МАРКОВИЋ ЈАРОСЛАВ
+МАРКОВИЋ ЈЕЛЕНА
+МАРКОВИЋ ЈЕЛИЦА
+МАРКОВИЋ ЈЕЛИЦА
+МАРКОВИЋ ЈЕЛИСАВКА
+МАРКОВИЋ ЈОВАН ДИПЛ ИНГ
+МАРКОВИЋ ЈОВАНКА
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВАН
+МАРКОВИЋ ЈОВО
+МАРКОВИЋ ЈОВО
+МАРКОВИЋ ЈУЛИЈА
+МАРКОВИЋ ЈУЛКА
+МАРКОВИЋ КАРЛО
+МАРКОВИЋ КАРОЛИНА
+МАРКОВИЋ КАРОЛИНА
+МАРКОВИЋ КАТА
+МАРКОВИЋ КАТИЦА
+МАРКОВИЋ КОСАНА
+МАРКОВИЋ КОСТА
+МАРКОВИЋ КРАСИМИР
+МАРКОВИЋ КСЕНИЈА
+МАРКОВИЋ ЛЕПОСАВА ЛЕКАР
+МАРКОВИЋ ЉУБИША
+МАРКОВИЋ ЉУБИЦА
+МАРКОВИЋ ЉУБИЦА
+МАРКОВИЋ ЉУБИЦА
+МАРКОВИЋ ЉУБИНКО
+МАРКОВИЋ ЉУБОМИР
+МАРКОВИЋ ЉУБОМИР
+МАРКОВИЋ ЛУКА
+МАРКОВИЋ-МАЈТЕЊИ АНДРИЈА
+МАРКОВИЋ-МАЈТЕЊИ МИХАЉ
+МАРКОВИЋ МАРА
+МАРКОВИЋ МАРИЈА
+МАРКОВИЋ МАРИЈА
+МАРКОВИЋ МАРИНА
+МАРКОВИЋ МАРКО
+МАРКОВИЋ МАРКО
+МАРКОВИЋ МИХАИЛО
+МАРКОВИЋ МИХАЈЛО
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛАН
+МАРКОВИЋ МИЛА
+МАРКОВИЋ МИЛЕВА
+МАРКОВИЋ МИЛЕВА
+МАРКОВИЋ МИЛКО
+МАРКОВИЋ МИЛКО
+МАРКОВИЋ МИЛОШ
+МАРКОВИЋ МИЛОШ
+МАРКОВИЋ МИЛОШ
+МАРКОВИЋ МИЛОШ
+МАРКОВИЋ МИЛОЉУБ
+МАРКОВИЋ МИЛОМИР
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛОРАД
+МАРКОВИЋ МИЛО
+МАРКОВИЋ МИЛУТИН
+МАРКОВИЋ МИЛУТИН
+МАРКОВИЋ МИОДРАГ
+МАРКОВИЋ МИОДРАГ
+МАРКОВИЋ МИОДРАГ
+МАРКОВИЋ МИРКО
+МАРКОВИЋ МИРКО
+МАРКОВИЋ МИРОСЛАВА
+МАРКОВИЋ МИРОСЛАВА
+МАРКОВИЋ МИРОСЛАВ
+МАРКОВИЋ МИРОСЛАВ
+МАРКОВИЋ МИРОСЛАВ
+МАРКОВИЋ МИРОСЛАВ
+МАРКОВИЋ МЛАДЕН
+МАРКОВИЋ МЛАДЕН
+МАРКОВИЋ МОМЧИЛО
+МАРКОВИЋ МОМЧИЛО
+МАРКОВИЋ МОМИР
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАДА
+МАРКОВИЋ НАТАША
+МАРКОВИЋ НАТАЛИЈА
+МАРКОВИЋ НЕДЕЉКО
+МАРКОВИЋ НЕГОСЛАВ
+МАРКОВИЋ НЕМАЊА
+МАРКОВИЋ НЕНАД
+МАРКОВИЋ НЕНАД
+МАРКОВИЋ НИКОЛА
+МАРКОВИЋ НИКОЛА
+МАРКОВИЋ НИКОЛА
+МАРКОВИЋ НИКОЛА
+МАРКОВИЋ ОБРАД
+МАРКОВИЋ ОБРАД
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ОЛГА
+МАРКОВИЋ ПАВЛЕ
+МАРКОВИЋ ПЕЈЧА
+МАРКОВИЋ ПЕТАР ДИПЛ ИНГ
+МАРКОВИЋ ПЕТАР ВЕТЕРИНАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТАР
+МАРКОВИЋ ПЕТРОНИЈЕ
+МАРКОВИЋ ПРЕДРАГ
+МАРКОВИЋ ПРВОСЛАВ ДР
+МАРКОВИЋ РАША
+МАРКОВИЋ РАДЕНКО
+МАРКОВИЋ РАДЕ
+МАРКОВИЋ РАДИНКА
+МАРКОВИЋ РАДИВОЈ
+МАРКОВИЋ РАДИВОЈ
+МАРКОВИЋ РАДМИЛА
+МАРКОВИЋ РАДМИЛА
+МАРКОВИЋ РАДОЈКА
+МАРКОВИЋ РАДОСАВ ДИПЛ ИНГ
+МАРКОВИЋ РАДОСАВ
+МАРКОВИЋ РАДОСЛАВ
+МАРКОВИЋ РАДОВАНКА
+МАРКОВИЋ РАДОВАН
+МАРКОВИЋ РАДОВАН
+МАРКОВИЋ РАДОВАН
+МАРКОВИЋ РАНКО
+МАРКОВИЋ РАТКО
+МАРКОВИЋ РОДОЉУБ
+МАРКОВИЋ РОЗАЛИЈА
+МАРКОВИЋ РУЖИЦА
+МАРКОВИЋ РУЖИЦА
+МАРКОВИЋ САША
+МАРКОВИЋ САВА
+МАРКОВИЋ САВА
+МАРКОВИЋ САВА
+МАРКОВИЋ СИНИША
+МАРКОВИЋ СИНИША
+МАРКОВИЋ СЛОБОДАН
+МАРКОВИЋ СЛОБОДАН
+МАРКОВИЋ СЛОБОДАН
+МАРКОВИЋ СМИЉА
+МАРКОВИЋ СРЂАН
+МАРКОВИЋ СТАНА
+МАРКОВИЋ СТАНИША
+МАРКОВИЋ СТАНИМИР
+МАРКОВИЋ СТАНИСЛАВ
+МАРКОВИЋ СТЕФАНИЈА
+МАРКОВИЋ СТЕВАН
+МАРКОВИЋ СТЕВАН
+МАРКОВИЋ СТЕВАН
+МАРКОВИЋ СТЕВАН
+МАРКОВИЋ СТОЈАН
+МАРКОВИЋ СТОЈАН
+МАРКОВИЋ СТОЈАН
+МАРКОВИЋ СТОЈА
+МАРКОВИЋ СВЕТИСЛАВ
+МАРКОВИЋ СВЕТЛАНА
+МАРКОВИЋ СВЕТОЗАР
+МАРКОВИЋ СВЕТОЗАР
+МАРКОВИЋ ТАНАСИЈЕ
+МАРКОВИЋ ТАТЈАНА
+МАРКОВИЋ ТОДОР
+МАРКОВИЋ ТОМИСЛАВ
+МАРКОВИЋ УГЉЕША
+МАРКОВИЋ ВАСА
+МАРКОВИЋ ВАСИЛИЈЕ ДР
+МАРКОВИЋ ВЕЛИМИР
+МАРКОВИЋ ВЕЉКО
+МАРКОВИЋ ВЕЉКО
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВЕРА
+МАРКОВИЋ ВИЋА
+МАРКОВИЋ ВИДОЈЕ
+МАРКОВИЋ ВИДОСАВА
+МАРКОВИЋ ВИД
+МАРКОВИЋ ВИНКО
+МАРКОВИЋ ВИТКО
+МАРКОВИЋ ВИТОМИР
+МАРКОВИЋ ВЛАДАН
+МАРКОВИЋ ВЛАДИМИР
+МАРКОВИЋ ВЛАДИМИР
+МАРКОВИЋ ВЛАДИМИР
+МАРКОВИЋ ВЛАДОЈЕ
+МАРКОВИЋ ВОЈИН
+МАРКОВИЋ ВОЈИН
+МАРКОВИЋ ВОЈИСЛАВ
+МАРКОВИЋ ЗАГОРКА
+МАРКОВИЋ ЗАГОРКА
+МАРКОВИЋ ЗЛАТА
+МАРКОВИЋ ЗЛАТИЈА
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРАН
+МАРКОВИЋ ЗОРА
+МАРКОВИЋ ЗОРА
+МАРКОВИЋ ЗОРИЦА
+МАРКОВИЋАН ЈОН
+МАРКОВИНОВИЋ ПЕТАР
+МАРКОВИНОВИЋ ПЕТАР
+МАРКОВЉЕВ ДРАГАН
+МАРКОВСКИ ЦВЕТАНА
+МАРКОВСКИ ЈОВАН
+МАРКСЕР ИВАН
+МАРКСЕР ЈОВАН
+МАРКУШ АНКИЦА
+МАРКУШ БОРИСЛАВ
+МАРКУШ ЕМИЛ
+МАРКУШ ЕТЕЛКА
+МАРКУШ ЈОСИП
+МАРКУШ ПРЕДРАГ
+МАРКУШ ЗОРАН
+МАРКУШЕВ ДРАГИЦА
+МАРКУШЕВ ЈЕЛЕНА
+МАРЛОГ МИРОСЛАВ
+МАРОШ ДУШАН
+МАРОШ МИЛОВАН
+МАРОШ СТЕВАН
+МАРОШ ВЕЉКО
+МАРОШАН ТИХОМИР
+МАРОШЕВ КРИСТА
+МАРОШЕВИЋ ИВАН
+МАРОШЕВИЋ МАРКО
+МАРОШЕВИЋ МАТА
+МАРОШЕВИЋ НАТАЛИЈА
+МАРОШЕВИЋ ВЛАДИМИР
+МАРОЂИ ИВАН
+МАРОЂИ ЈОЛАН
+МАРОЂИ ЈОЛАН
+МАРОЦИ МАРГИТА
+МАРОЈЕВИЋ АЛЕКСАНДАР
+МАРОЈЕВИЋ ИВАНКА
+МАРОЈЕВИЋ ЈОСИП
+МАРОЈЕВИЋ РАДМИЛО
+МАРОЈЕВИЋ СЛАВОЉУБ
+МАРОЛД ЈОСИП
+МАРОЛИ ИСАК
+МАРОН ДЕНЕШ
+МАРОН КАРЛО
+МАРОСЛАВАЦ МИРОСЛАВ
+МАРОТ ИВАН
+МАРОТИ МИКЛОШ
+МАРОВИЋ ЂУРА
+МАРОВИЋ БОРИС ДР
+МАРОВИЋ ДАРИНКА
+МАРОВИЋ МИЛИЦА
+МАРОВИЋ МИРКО
+МАРОВИЋ РАДОМИР
+МАРОВИЋ ЗДЕНКА
+МАРОВСКИ НИКОЛА
+МАРСЕНИЋ ДРАГАНА
+МАРСЕНИЋ ЛЕКА
+МАРСЕНИЋ СЛАВОЈКА
+МАРТИЋ ЖИВОЈИН
+МАРТИЋ ЂУРА
+МАРТИЋ БРАНКА
+МАРТИЋ ДРАГАН
+МАРТИЋ КОСТА
+МАРТИЋ ЛАЗАР
+МАРТИЋ ЉУБОМИР
+МАРТИЋ МАРА
+МАРТИЋ МИЛАН
+МАРТИЋ МИЛЕНКО
+МАРТИЋ МИЛИЦА
+МАРТИЋ ОЛГА
+МАРТИЋ ПЕРО
+МАРТИЋ РАДМИЛА
+МАРТИЋ РАДОМИР
+МАРТИЋ СЛАВКО
+МАРТИЋ СТЕВАН
+МАРТИЋ ВЛАДИМИР
+МАРТИЋ ВОЈНА
+МАРТИЦКИ МЛАДЕН
+МАРТИН АЛОЈЗИЈЕ
+МАРТИН АНТАЛ
+МАРТИН ЕНДРЕ
+МАРТИН ЕРЖЕБЕТ
+МАРТИН ИМРЕ
+МАРТИН ИВАН
+МАРТИН ЈОСИФ
+МАРТИН ЈОВАН
+МАРТИН ЉУБИНКА
+МАРТИН МАТИЛДА
+МАРТИН МИРОСЛАВА
+МАРТИН ЗВОНИМИР
+МАРТИНЧЕВИЋ МИХАЈЛО
+МАРТИНЧИЋ ДАВОР
+МАРТИНЧИЋ ДАВОР
+МАРТИНАШЕВИЋ ХЕРМИНА
+МАРТИНАШЕВИЋ ОТО
+МАРТИНАК ЈОВАН
+МАРТИНЕЦ АНТОН
+МАРТИНЕК АНТАЛ
+МАРТИНЕК ФЕРЕНЦ
+МАРТИНКО АНДРИЈА
+МАРТИНОВ ЂОРЂЕ
+МАРТИНОВ АНКА
+МАРТИНОВ ЛАЗАР
+МАРТИНОВ МИКА
+МАРТИНОВ МИЛАН ДР
+МАРТИНОВ МИЛИЦА
+МАРТИНОВ МИЛОШ
+МАРТИНОВ МИЛОШ
+МАРТИНОВ МИЛОШ
+МАРТИНОВ САНДРА
+МАРТИНОВ САВА
+МАРТИНОВ СЛАВКО
+МАРТИНОВ СЛАВКО
+МАРТИНОВИЋ ЂОРЂЕ
+МАРТИНОВИЋ АНЂЕЛКА
+МАРТИНОВИЋ АНА
+МАРТИНОВИЋ АНИТА
+МАРТИНОВИЋ БРАНКА
+МАРТИНОВИЋ ДЕСАНКА
+МАРТИНОВИЋ ДУШАН
+МАРТИНОВИЋ ЕЛИЗАБЕТА
+МАРТИНОВИЋ ФИЛИП
+МАРТИНОВИЋ ФИНКА
+МАРТИНОВИЋ ИВО
+МАРТИНОВИЋ ЈЕЛЕНА
+МАРТИНОВИЋ ЈОВАН ВЕТЕРИНАР
+МАРТИНОВИЋ МАРИЈАНА
+МАРТИНОВИЋ МАРИЈА
+МАРТИНОВИЋ МИЛЕ
+МАРТИНОВИЋ МИЛИЦА
+МАРТИНОВИЋ МИЛКА
+МАРТИНОВИЋ МИЛКА
+МАРТИНОВИЋ НАДА
+МАРТИНОВИЋ НЕНАД
+МАРТИНОВИЋ ОЛГА
+МАРТИНОВИЋ ПЕРСИДА
+МАРТИНОВИЋ РИСТА
+МАРТИНОВИЋ СЛАВКО
+МАРТИНОВИЋ СТАНИША
+МАРТИНОВИЋ СТАНКА
+МАРТИНОВИЋ СТЕВАН
+МАРТИНОВИЋ СВЕТОЗАР
+МАРТИНОВИЋ УРОШ
+МАРТИНОВИЋ ВЕЛИМИР
+МАРТИНОВИЋ ВЕЉКО
+МАРТИНОВИЋ ЗАРИЈЕ
+МАРТИНОВСКИ РОМАН
+МАРТОН ШАНДОР
+МАРТОН ЖУЖАНА
+МАРТОН АНДРАШ
+МАРТОН ФЕРЕНЦ
+МАРТОН ИШТВАН
+МАРТОН ИЛЕШ
+МАРТОН ЈОЖЕФ
+МАРТОН ЈОЖЕФ
+МАРТОН ЈОЛАН
+МАРТОН ЛАЈОШ
+МАРТОН МАЋАШ
+МАРТОН МАРИЈА
+МАРТОН РОЗА
+МАРУШЧУК МИРОСЛАВ
+МАРУШЕВИЋ ИВАН
+МАРУШИЋ ДАНИЦА
+МАРУШИЋ ФРАЊА
+МАРУШИЋ ГОРАН
+МАРУШИЋ ЈУЛИЈАНА
+МАРУШИЋ ЉУБО
+МАРУШИЋ МИОРИЦА
+МАРУШИЋ НЕБОЈША
+МАРУШИЋ ОЛГА
+МАРУШИЋ СТОЈАН
+МАРУШИЋ ВЛАДИМИР
+МАРУНИЋ БОСИЉКА
+МАРУНКИЋ МИЛИНА
+МАРУНОВИЋ БЛАГОТА
+МАСЛАЋ АНТЕ
+МАСЛАЋ МИЛЕНКО
+МАСЛАЋ РАЈКО
+МАСЛАЋ ВИНКО
+МАСЛОВАРИЋ БОЖИДАР ДР
+МАСНЕЦ АНКА
+МАСНИКОСА ФЕМКА
+МАСНИКОСА ФЕМКА
+МАСНОВ РОЗАЛИЈА
+МАСТИКОСА ДРАГИЦА
+МАСТИКОСА НИКО
+МАСТИЛОВИЋ ДУШАН
+МАСТИЛОВИЋ ЉУБИЦА
+МАСТИЛОВИЋ МИРА
+МАСТИЛОВИЋ МИРКО
+МАСТИЛОВИЋ МОМЧИЛО
+МАСТИЛОВИЋ ПЛЕМА
+МАСТИЛОВИЋ РАНКО
+МАТАЈЧИЋ ФРАЊО
+МАТАЈЧИЋ ИВАН
+МАТАК МАРИЈА
+МАТАК МАРЈАН
+МАТАК ВЕСНА
+МАТАКОВИЋ КАТИЦА
+МАТАНОВ ЈАСМИНА
+МАТАНОВИЋ ДЕЗИДЕР
+МАТАНОВИЋ ИРЕНА
+МАТАНОВИЋ ЈАДРАНКА
+МАТАНОВИЋ ЈЕЛИСАВЕТА
+МАТАНОВИЋ МИЛОРАД
+МАТАНОВИЋ МИЛОРАД
+МАТАНОВИЋ МИОДРАГ
+МАТАНОВИЋ ПЕТАР
+МАТАНОВИЋ ПЕТАР
+МАТАНОВИЋ СЛАВИЦА
+МАТАНОВИЋ ВЛАДА
+МАТАРУГА ЉИЉАНА
+МАТАРУГА МИЛКА
+МАТАРУГА ПАВЛЕ
+МАТАРУГА ЗАГОРКА
+МАТАРУГИН АЛЕКСАНДАР
+МАТАСИЋ МАРИЈА
+МАТАВУЉ МИЛИЦА
+МАТЕ ЕТЕЛКА
+МАТЕ ГИЗЕЛА
+МАТЕ ВЕНДЕЛ ДР
+МАТЕЧИК МИКЛОШ
+МАТЕЈАШЕВ АЛЕКСАНДАР
+МАТЕЈАШЕВ СВЕТОЗАР
+МАТЕЈАШЕВ СВЕТОЗАР
+МАТЕЈЕВИЋ ЈЕЛЕНА
+МАТЕЈЕВИЋ СТАНКО
+МАТЕЈЕВИЋ ВЕЛИМИР
+МАТЕЈЕВИЋ ВЛАДИМИР
+МАТЕЈЕВИЋ ЗИЛДА
+МАТЕЈИЋ ЂУРА
+МАТЕЈИЋ АЛЕКСАНДАР
+МАТЕЈИЋ НАДЕЖДА
+МАТЕЈИЋ РАТКО
+МАТЕЈИЋ РУЖИЦА
+МАТЕЈИЋ СЛАВОЉУБ ДР ЛЕКАР
+МАТЕЈИН ЂОРЂЕ
+МАТЕЈИН ДРАГАН
+МАТЕЈИН ДРАГИЋ
+МАТЕЈИН ДУШАН
+МАТЕЈИН МИЛИВОЈ
+МАТЕЈИН ВЕСЕЛИН
+МАТЕКАЛО МИЛКА
+МАТЕКОВИЋ СМИЉА
+МАТЕОВИЋ ПУБА ДР
+МАТЕВСКИ ЛУИЂИ
+МАТИЧЕК ЉУДЕВИТ
+МАТИША ИРЕНА
+МАТИШИЋ ЉУБОМИР
+МАТИЋ ЖАРКО
+МАТИЋ ЖИВКА
+МАТИЋ ЖИВКО
+МАТИЋ ЖИВКО
+МАТИЋ ЖИВОЈИН
+МАТИЋ ЖИВОРАД
+МАТИЋ ЂОРЂЕ
+МАТИЋ ЂОРЂЕ
+МАТИЋ ЂОРЂЕ
+МАТИЋ ЂУРЂИЦА
+МАТИЋ ЂУРА ДР
+МАТИЋ АЦКО
+МАТИЋ АЦКО
+МАТИЋ АЛЕКСАНДАР
+МАТИЋ АЛЕКСАНДАР
+МАТИЋ АЛЕКСАНДАР
+МАТИЋ АНКА
+МАТИЋ АНКИЦА
+МАТИЋ АРАНКА
+МАТИЋ АРАНКА
+МАТИЋ-БАУС ЖИВКО
+МАТИЋ-БЕКВАЛАЦ ВЕСНА
+МАТИЋ БОЖИДАР ДР
+МАТИЋ БОЈАНА
+МАТИЋ БРАНИСЛАВ
+МАТИЋ ДАМЈАН ДИПЛ ИНГ
+МАТИЋ ДЕСАНКА
+МАТИЋ ДОБРИЦА
+МАТИЋ ДОБРИЛО
+МАТИЋ ДРАГАН
+МАТИЋ ДРАГАН
+МАТИЋ ДРАГАН
+МАТИЋ ДРАГИША
+МАТИЋ ДРАГИЦА
+МАТИЋ ДРАГИЊА
+МАТИЋ ДРАГУТИН
+МАТИЋ ДУШАНКА
+МАТИЋ ДУШАНКА
+МАТИЋ ДУШАН
+МАТИЋ ДУШАН
+МАТИЋ ДУШАН
+МАТИЋ ДУШАН
+МАТИЋ ЕЛИЗАБЕТА
+МАТИЋ ЕВА
+МАТИЋ ФИНКА
+МАТИЋ ГОРДАНА
+МАТИЋ ИЛИЈА
+МАТИЋ ЈЕЛЕНА
+МАТИЋ ЈЕЛИСАВЕТА
+МАТИЋ ЈЕЛИСАВЕТА
+МАТИЋ ЈЕЛИСАВКА
+МАТИЋ ЈОВАН
+МАТИЋ КАТИЦА
+МАТИЋ-КЕКИЋ СНЕЖАНА
+МАТИЋ КРИСТИНА
+МАТИЋ ЛАЗАР
+МАТИЋ ЛАЗАР
+МАТИЋ ЉИЉАНА
+МАТИЋ ЉИЉАНА
+МАТИЋ ЉИЉАНА
+МАТИЋ ЉУБИЦА
+МАТИЋ ЉУБИЦА
+МАТИЋ ЉУБО
+МАТИЋ ЛУКА
+МАТИЋ МАГДАЛЕНА
+МАТИЋ МАРИЦА
+МАТИЋ МАРИЈА
+МАТИЋ МАРКО
+МАТИЋ МАРКО
+МАТИЋ МИЛАН
+МАТИЋ МИЛАН
+МАТИЋ МИЛАН
+МАТИЋ МИЛЕНКО
+МАТИЋ МИЛЕНКО
+МАТИЋ МИЛИСАВ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОШ
+МАТИЋ МИЛОРАД
+МАТИЋ МИЛОРАД
+МАТИЋ МИЛОРАД
+МАТИЋ МИЛОВАН
+МАТИЋ МИРЈАНА
+МАТИЋ МИРЈАНА
+МАТИЋ МИРКО
+МАТИЋ НАДА
+МАТИЋ НАДЕЖДА
+МАТИЋ НАТАША
+МАТИЋ НАТАЛИЈА
+МАТИЋ НЕГОВАН
+МАТИЋ НИКОЛА
+МАТИЋ НОВИЦА
+МАТИЋ ПАВА
+МАТИЋ ПАВЛЕ
+МАТИЋ ПАВЛЕ
+МАТИЋ ПЕТАР
+МАТИЋ ПЕТАР
+МАТИЋ ПЛАНИНКА
+МАТИЋ ПРЕДРАГ
+МАТИЋ ПРЕДРАГ
+МАТИЋ РАДЕ
+МАТИЋ РАДМИЛА
+МАТИЋ РАДОЈЕ
+МАТИЋ РАДОМИР
+МАТИЋ РАДОМИР
+МАТИЋ РАДОМИР
+МАТИЋ РАДОСЛАВ
+МАТИЋ РАДОВАН
+МАТИЋ РАДОВАН
+МАТИЋ РАЈКО
+МАТИЋ САВА
+МАТИЋ СИМА
+МАТИЋ СЛАВКО
+МАТИЋ СЛАВКО
+МАТИЋ СЛАВКО
+МАТИЋ СЛАВКО
+МАТИЋ СЛОБОДАН
+МАТИЋ СТАНКО
+МАТИЋ СТАНКО
+МАТИЋ СТАЗА
+МАТИЋ СТИПО
+МАТИЋ СТОЈАН
+МАТИЋ СВЕТЛАНА
+МАТИЋ СВЕТОЗАР
+МАТИЋ СВЕТОЗАР
+МАТИЋ ТОМА
+МАТИЋ ТОМИСЛАВ
+МАТИЋ ВАЛЕРИЈА
+МАТИЋ ВЕСЕЛИН
+МАТИЋ ВИДА
+МАТИЋ ВИТОМИР ДИПЛ ИНГ
+МАТИЋ ВЛАДА
+МАТИЋ ВЛАДИМИР
+МАТИЋ ВЛАДИМИР
+МАТИЋ ВЛАДИСЛАВ
+МАТИЋ ВЛАСТИМИР МР
+МАТИЋ ВУЈИЦА
+МАТИЋ ВУКИЦА
+МАТИЋ ЗАГОРКА
+МАТИЋ ЗДРАВКА
+МАТИЋ ЗОРА
+МАТИЦКИ МИЛАНА ДР
+МАТИЦКИ МИЛОШ
+МАТИЈАШ ИЛИЈА
+МАТИЈАШЕВ АЛЕКСАНДАР
+МАТИЈАШЕВ РАДИВОЈ
+МАТИЈАШЕВИЋ АЛЕКСАНДАР
+МАТИЈАШЕВИЋ ЈЕЛКА
+МАТИЈАШЕВИЋ КАТИЦА
+МАТИЈАШЕВИЋ МАРКО
+МАТИЈАШЕВИЋ МИХАИЛО
+МАТИЈАШЕВИЋ СТАНИСЛАВКА
+МАТИЈЕВИЋ АНТИЦА
+МАТИЈЕВИЋ АНТУН
+МАТИЈЕВИЋ БОЈАН
+МАТИЈЕВИЋ БРАНКО
+МАТИЈЕВИЋ ДРАГИЦА
+МАТИЈЕВИЋ ФРАНЧИШКА
+МАТИЈЕВИЋ ИЛИЈА
+МАТИЈЕВИЋ ЈОСИП
+МАТИЈЕВИЋ КАТАЛИН
+МАТИЈЕВИЋ ЛАЈОШ
+МАТИЈЕВИЋ МАРИЈА
+МАТИЈЕВИЋ МИЛЕ
+МАТИЈЕВИЋ МИЛОЈКО
+МАТИЈЕВИЋ ПЕРО
+МАТИЈЕВИЋ ПЕТАР
+МАТИЈЕВИЋ ПЕТАР
+МАТИЈЕВИЋ ПЕТАР
+МАТИЈЕВИЋ РАДЕ
+МАТИЈЕВИЋ СЛАВКО
+МАТИЈЕВИЋ ВУКОСАВА
+МАТИЈЕВИЋ ЗОРАН
+МАТИЈЕВИЋ ЗОРА
+МАТИЈЕВИЋ ЗОРА
+МАТИН ДОРОТЕА
+МАТИН ЈОСИП
+МАТИН ЛАЈОШ
+МАТИН МАТИЈА
+МАТИС ШАНДОР ДИПЛ ПРАВНИК
+МАТИС ШАНДОР
+МАТЈАЧИЋ ВИНКО
+МАТКО ЕВА
+МАТКОВИЋ ЖАРКО
+МАТКОВИЋ ЖАРКО
+МАТКОВИЋ БОЖИДАР
+МАТКОВИЋ ДРАГОЉУБ
+МАТКОВИЋ ДРАГОЉУБ
+МАТКОВИЋ ЈОВАН
+МАТКОВИЋ ЛАДИСЛАВ
+МАТКОВИЋ МИЛЕНКО
+МАТКОВИЋ МИРОСЛАВА
+МАТКОВИЋ МИРОСЛАВ
+МАТКОВИЋ МИРОСЛАВ
+МАТКОВИЋ МОМИР
+МАТКОВИЋ РАДОВАН
+МАТКОВИЋ РОЗАЛИЈА
+МАТКОВИЋ РУЖИЦА
+МАТКОВИЋ СТАМЕНКО
+МАТКОВИЋ ВЛАСТИМИР
+МАТКОВИЋ ЗДЕНКА ДР
+МАТОШЕВИЋ ИВАН
+МАТОШИЋ СТАНИСЛАВ
+МАТОШКОВИЋ АГАТА
+МАТОШКОВИЋ ТЕРЕЗА
+МАТОВИЋ АНЂЕЛКО
+МАТОВИЋ АНА
+МАТОВИЋ БОЖАНА
+МАТОВИЋ БОРИВОЈЕ
+МАТОВИЋ БОРО
+МАТОВИЋ БРАНИСЛАВ
+МАТОВИЋ ДАНИЦА
+МАТОВИЋ ДАРО
+МАТОВИЋ ДЕСА
+МАТОВИЋ ДРАГАНА
+МАТОВИЋ ДРАГИША
+МАТОВИЋ ЉУБИНКА
+МАТОВИЋ МИЛАН ДИПЛ ИНГ
+МАТОВИЋ МИЛАН
+МАТОВИЋ МИЛЕНКО
+МАТОВИЋ МИЛЕ
+МАТОВИЋ-МИЛИЋ БАТРИЋ
+МАТОВИЋ МИЛИЋ
+МАТОВИЋ МИЛОЈКО
+МАТОВИЋ НАТАША
+МАТОВИЋ ПАВЛЕ
+МАТОВИЋ ПЕТАР
+МАТОВИЋ РАДИВОЈЕ
+МАТОВИЋ РАДОСАВ
+МАТОВИЋ РАДОСЛАВ
+МАТОВИЋ ВИТОМИР
+МАТОВИНА ФРАЊА
+МАТОВИНА ГОРАН
+МАТОВИНА МАРКО
+МАТРАК ДРАГАН
+МАТУШ ЈАН
+МАТУШКА МАРТОН
+МАТУЉИН ИГЊАЦ
+МАТУСКИ СОЊА
+МАТВИКОВ ЕУГЕНИЈЕ
+МАУКОВИЋ ВОЈИСЛАВ
+МАУЛ ГОРДАНА
+МАУРИЋ ФЕРЕНЦ
+МАУРИЋ ГЕЗА
+МАУРИЋ НЕНАД
+МАВИЋ СРЂАН
+МАВРАК ИМРЕ
+МАВРЕНСКИ БОГДАН
+МАВРЕНСКИ БОРКО
+МАВРЕНСКИ ИВИЦА
+МАВРОВИЋ БРАНИСЛАВ
+МАЗАЛИЦА БРАНИСЛАВ
+МАЗАЛИЦА ДУШАН
+МАЗАЛИЦА ГОЈКО
+МАЗАЛИЦА ЉУБО
+МАЗАЛИЦА МАРИЈА
+МАЗАЛИЦА РАЈКО
+МАЗАЛИЦА СНЕЖАНА
+МАЗАЛИЦА УРОШ
+МАЗАЛИЦА ВАСО
+МАЗАЛИЦА ВЕЉКО
+МАЗАНЧИК АНДРИЈА
+МАЗАНЋИК ПАЈА
+МАЗАЊИ КАРЛО
+МАЗИЋ ЖИВКО
+МАЗИЋ БРАНКО
+МАЗИЋ ДРАГАН
+МАЗИЋ ЉУБОМИР
+МАЗИЋ МИХАЈЛО
+МАЗИЋ МИРОСЛАВ
+МАЗИЋ ПЛЕТИКОСА
+МАЗИЊАНИН ДУШАН
+МАЗЛАМИ ЏАБИР
+МАЗУР ВУКИЦА
+МЦ-ЦОННЕЛЛ МАРТА
+МЕЧКАРОВСКИ ДРАГАН
+МЕЧКИЋ ДОБРИЛА
+МЕЧКИЋ СЛАВКО
+МЕШАНОВИЋ ХАЗИМ
+МЕШТЕР ИРЕНА
+МЕШТЕРОВИЋ ЉИЉАНА
+МЕШТРОВИЋ БОЖИДАР
+МЕЋАВА БРАНКО
+МЕЋАВА ДРАГАН
+МЕЋАВА МИЛАН
+МЕЂАНИН ДУШАН
+МЕЂЕШИ ЉУБОМИР
+МЕЂЕШИ ВЛАДИМИР
+МЕЂЕД МАРИЦА
+МЕЂЕДОВИЋ ЂОРЂИЈЕ
+МЕЂЕДОВИЋ БРАНКО
+МЕЂЕДОВИЋ ДАНИЛО
+МЕЂЕДОВИЋ ДРАГОЉУБ
+МЕЂЕДОВИЋ ДРАГО
+МЕЂЕДОВИЋ ДУБРАВКА
+МЕЂЕДОВИЋ МИРЈАНА
+МЕЂЕДОВИЋ НЕМАЊА
+МЕЂЕДОВИЋ РАДОВАН
+МЕЂЕРИ ВЕРОНИКА
+МЕЂИМОРЕЦ ЕДУАРД
+МЕЂИМОРЕЦ ЉУБОМИР
+МЕЂИМОРЕЦ СТЈЕПАН
+МЕЂИМОРЕЦ ВИКТОР
+МЕАМЏИЈА МИРА
+МЕАНЏИЋ СЛАВКО
+МЕЦАНОВ СТОЈАНКА
+МЕДАКОВ ЖИВКО
+МЕДАКОВ МАРИЈА
+МЕДАКОВ МИЛАН
+МЕДАКОВ МИЛАН
+МЕДАКОВ МИЉАНА
+МЕДАКОВ РАДИВОЈ
+МЕДАКОВ ВЛАДИМИР
+МЕДАКОВИЋ БОГДАН
+МЕДАКОВИЋ ДАМИР
+МЕДАКОВИЋ ДАРИНКА
+МЕДАКОВИЋ ДУШАН
+МЕДАКОВИЋ ДУШАН
+МЕДАКОВИЋ ИЛДИКО
+МЕДАКОВИЋ ИЛИЈА
+МЕДАКОВИЋ ЈОВАН
+МЕДАКОВИЋ ЉУБИЦА
+МЕДАКОВИЋ ЉУБИЦА
+МЕДАКОВИЋ ПЕТАР
+МЕДАКОВИЋ СВЕТЛАНА
+МЕДАКОВИЋ СВЕТЛАНА
+МЕДАКОВИЋ ВЛАДИСЛАВ
+МЕДАН ДРАГИЊА
+МЕДАН МАНОЈЛО
+МЕДАН МИЛЕНКО
+МЕДАН МИЛЕНКО
+МЕДАН МИЛЕНКО
+МЕДАН МИЛОРАД
+МЕДАН МИРОСЛАВ
+МЕДАН РАДЕНКО
+МЕДАН СЛАВИЦА
+МЕДАН СПАСОЈЕ
+МЕДАН ВЕЛИМИР
+МЕДАН ВЛАДИСЛАВ
+МЕДАНОВСКИ БОРИС
+МЕДАР ВУЧКО
+МЕДАРЕВИЋ ДРАГАН
+МЕДАРЕВИЋ ДРАГАН
+МЕДАРЕВИЋ СТАНА
+МЕДЕНИЦА ЂУРЂИЦА
+МЕДЕНИЦА ЂУРО
+МЕДЕНИЦА БОСИЉКА
+МЕДЕНИЦА МИЛИСАВ
+МЕДЕНИЦА РАДОМИР
+МЕДЕНИЦА СНЕЖАНА
+МЕДЕНИЦА СНЕЖАНА
+МЕДЕНИЦА ВОЈИСЛАВ
+МЕДЕНИЦА ВОЈИСЛАВ
+МЕДЕР ЂОРЂЕ
+МЕДЕР ЈЕЛЕНА
+МЕДИЋ ЂУРА
+МЕДИЋ ЂУРА
+МЕДИЋ БОШКО
+МЕДИЋ БОГДАН
+МЕДИЋ БОГДАН
+МЕДИЋ БОРИВОЈ
+МЕДИЋ БРАНКА
+МЕДИЋ ДАНЕ
+МЕДИЋ ДАНЕ
+МЕДИЋ ДАНИЦА
+МЕДИЋ ДРАГИЦА
+МЕДИЋ ДРАГОЉУБ
+МЕДИЋ ДРАГОСЛАВА
+МЕДИЋ ДУШАН
+МЕДИЋ ДУШАН
+МЕДИЋ ГОЈКО
+МЕДИЋ ИЛИЈА
+МЕДИЋ ИЛИЈА
+МЕДИЋ ИЛИЈА
+МЕДИЋ ЛАЗАР
+МЕДИЋ МИЋО
+МЕДИЋ МИЛАН
+МЕДИЋ МИЛАН
+МЕДИЋ МИЛЕ
+МЕДИЋ МИЛИЦА
+МЕДИЋ МИЛКА
+МЕДИЋ МИЛОШ
+МЕДИЋ МИЛОРАД
+МЕДИЋ МИЛОРАД
+МЕДИЋ МИОДРАГ
+МЕДИЋ МИРА
+МЕДИЋ МИРЈАНА
+МЕДИЋ МИРКО
+МЕДИЋ МИРОСЛАВА
+МЕДИЋ НИКОЛА
+МЕДИЋ НИКОЛА
+МЕДИЋ НИКОЛА
+МЕДИЋ НИКОЛА
+МЕДИЋ ПЕТАР
+МЕДИЋ РАДЕ
+МЕДИЋ РАДОВАН
+МЕДИЋ РАДОВАН
+МЕДИЋ САВО
+МЕДИЋ СИМО
+МЕДИЋ СЛАВКО
+МЕДИЋ СЛОБОДАНКА
+МЕДИЋ СМИЉА
+МЕДИЋ СТЕВАН
+МЕДИЋ СВЕТОЗАР
+МЕДИЋ ТАТЈАНА
+МЕДИЋ ЗДРАВКО
+МЕДИЋ ЗДРАВКО
+МЕДИЋ ЗОРАН
+МЕДИЋ ЗОРА
+МЕДОШ УРОШ
+МЕДОЈЕВИЋ МИЛАН
+МЕДОЈЕВИЋ МИЛЕТА
+МЕДОЈЕВИЋ НИКОЛА
+МЕДОВАРСКИ ФРАЊА
+МЕДОВАРСКИ МИША
+МЕДОВАРСКИ ПИРОШКА
+МЕДОВАРСКИ ПИРОШКА
+МЕДОВАРСКИ СТЕВАН
+МЕДОВИЋ ПРЕДРАГ ДР
+МЕДУЊАНИН ФЕБРОНА
+МЕДУЊАНИН ИСИДОР
+МЕДУРИЋ ДАНИЛО
+МЕДУРИЋ ДРАГОМИР
+МЕДУРИЋ ГОРАН
+МЕДУРИЋ ИРЕНА
+МЕДУРИЋ ЈЕЛЕНА
+МЕДУРИЋ КОСТА
+МЕДУРИЋ МИЛИВОЈ
+МЕДУРИЋ ПЕТАР
+МЕДУРИЋ СМИЉА
+МЕДУРИЋ ЗЛАТА
+МЕДВЕДОВИЋ ДРАГА
+МЕГЛАЈ БОСИЉКА
+МЕХАКОВИЋ ДАНИЦА
+МЕХАНЏИСКИ ВЕНКО
+МЕХМЕТИ ХИСЕН
+МЕХМЕТИ РАФЕТ
+МЕХМЕТОЈ ХАСАН
+МЕЈИЋ НЕВЕНКА
+МЕКЕЊИШАЦ ВЕСЕЛИН
+МЕКЕЊИШАЦ ЗОРАН
+МЕКИЋ СОФИЈА
+МЕКИНДА МАРИЈАН ДР
+МЕКИНДА МИРЈАНА
+МЕКИНИЋ АНТЕ
+МЕКИНИЋ МИРЈАНА
+МЕКИНИЋ ТОНКА
+МЕЛАР АНДРАШ
+МЕЛАР ЈЕЛЕНА
+МЕЛАР ЉУДЕВИТ
+МЕЛЕГ ЈАНКО
+МЕЛЕГ ЈОВАН
+МЕЛЕГ ЈОВАН
+МЕЛЕГ МИША
+МЕЛЕГ ВЛАДИМИР
+МЕЛЕРТ ВЕНДЕЛ
+МЕЛИНК ДУШАНКА
+МЕЛИНК ЈОХАН
+МЕЉА ЈУЛИЈАНА
+МЕЉКУТИ ФЕРЕНЦ
+МЕЉКУТИ ЈОЖЕФ
+МЕЉКУТИ КАРЛО
+МЕЉКУТИ ОРБАН
+МЕЉНИК ИЛИЈА
+МЕЉНИКОВ ДЕСАНКА
+МЕЛКУС БОЖА
+МЕЛКУС БОРИВОЈ
+МЕЛКУС КАТИЦА
+МЕЛКУС МИРЈАНА
+МЕЛКУС ВОЈИСЛАВ
+МЕЛО АЛЕКСАНДАР
+МЕЛОВИЋ ДЕЈАН
+МЕЛОВИЋ МИЛОВАН
+МЕЛВАН ЕРЖЕБЕТ
+МЕЛВАН ПЕТАР
+МЕЛВАН ЗОРАН
+МЕЛВИНГЕР АЛОЈЗИЈА
+МЕМАРОВИЋ РАДОВАН
+МЕМЕДОВИЋ БОРИСЛАВ
+МЕМЕДОВИЋ БОСИЉКА
+МЕМЕДОВСКИ УЗЕИР
+МЕМИШЕВИЋ ИБРАХИМ
+МЕМИШЕВИЋ ИСМАИЛ
+МЕМИШЕВИЋ МАРЈАН
+МЕМИШЕВИЋ МЕХМЕД
+МЕМИШЕВИЋ РАШИДА
+МЕМИШИ ТЕФИК
+МЕМИЏАН РЕЏО
+МЕНЂАН ШАНДОР
+МЕНЂАН МАРИЈА
+МЕНЂАН ПАВЕЛ
+МЕНЂАН РАСТИСЛАВ
+МЕНДЕБАБА БОРИСЛАВ
+МЕНДЕБАБА ПАНТА
+МЕНДЕЛ ЕЛИЗАБЕТА
+МЕНДРАГИЋ ЂОРЂЕ
+МЕНДРЕИ ХЕЛЕНА
+МЕНЕШИ БЕЛА
+МЕНЕШИ ИРЕНА
+МЕНЕШИ ЛАСЛО
+МЕНГЛ ИРЕН
+МЕНГЛ ЛАЈОШ
+МЕНИЧАНИН ЈЕЛА
+МЕНИЧАНИН СТЕВАН
+МЕНИЋАНИН ПЕТАР
+МЕЊАК ИВАН
+МЕНЗИЛЏИЋ ГАБРИЈЕЛА
+МЕРЧ ЈАНОШ
+МЕРЧА СТЕВАН
+МЕРШ МИЛАН
+МЕРЖА КАРОЉ
+МЕРЂЕЛОШКИ МИЛИЦА
+МЕРЦ ЕВА
+МЕРДИЋ МИРОСЛАВ
+МЕРДОВИЋ МИЛКА
+МЕРЕИ КАТАЛИН
+МЕРЕИ МАРГИТА
+МЕРГАНЦ КАТИЦА
+МЕРГЕШ ЈАНОШ
+МЕРГЕЛ МАРИЈА
+МЕРИЧАР РАДОЈИЦА
+МЕРКОВИЋ АЛЕКСАНДАР
+МЕРКОВИЋ АЛОЈЗ
+МЕРКОВИЋ АНКИЦА
+МЕРКОВИЋ ЈУДИТ
+МЕРКОВИЋ ЉУДЕВИТ
+МЕРКОВИЋ НИКОЛА
+МЕРКОВИЋ ПЕТАР
+МЕРКОВИЋ СИЛВИА
+МЕРКОВИЋ СВЕТИСЛАВА
+МЕРКОВИЋ ВЕРА
+МЕРКУЛОВ ЉИЉАНА
+МЕРКВА ЕМА
+МЕРКВА ЈОЖЕФ
+МЕРЊАК ФРАЊО
+МЕСАК НИКОЛА
+МЕСАРИЋ ГАБРИЈЕЛА
+МЕСАРОШ ШАНДОР ДР
+МЕСАРОШ ЂУРА
+МЕСАРОШ АНДРАШ
+МЕСАРОШ АРПАД
+МЕСАРОШ АТИЛА
+МЕСАРОШ БАЛАЖ
+МЕСАРОШ ФЕРЕНЦ
+МЕСАРОШ ФРАЊА
+МЕСАРОШ ГЕЗА
+МЕСАРОШ ГЕЗА
+МЕСАРОШ ГОРАН
+МЕСАРОШ ИШТВАН
+МЕСАРОШ ИШТВАН
+МЕСАРОШ ИЛОНА
+МЕСАРОШ ИЛОНА
+МЕСАРОШ ИМРЕ
+МЕСАРОШ ЈЕЛЕНА
+МЕСАРОШ ЈЕЛИЦА
+МЕСАРОШ ЈОСИФ
+МЕСАРОШ ЈОСО
+МЕСАРОШ КАРЛО
+МЕСАРОШ КАТИЦА
+МЕСАРОШ ЛАЈОШ
+МЕСАРОШ ЛАСЛО
+МЕСАРОШ ЛЕОН
+МЕСАРОШ МИХАЉ
+МЕСАРОШ МИКЛОШ
+МЕСАРОШ ПАВЛЕ
+МЕСАРОШ ПИРОШКА
+МЕСАРОШ СТЕВАН
+МЕСАРОШ ТИБОР
+МЕСАРОШ ТИБОР
+МЕСАРОШ ЗОЛТАН
+МЕСАРОШ ЗОРА ДИПЛ ИНГ
+МЕСАРОШ ЗОРИЦА
+МЕСАРОВИЋ ДУШАН
+МЕСАРОВИЋ ЈОВАН
+МЕСАРОВИЋ МАРГИТА
+МЕСАРОВИЋ МИЛАН
+МЕСАРОВИЋ СВЕТОЛИК
+МЕСЕШАН ГЕЗА
+МЕСЕЛЏИЈА ЖИВКО
+МЕСЕЛЏИЈА НАДЕЖДА
+МЕСЕЛЏИЈА ОСТОЈА
+МЕСЕЛЏИЈА РАЈКО
+МЕСЕЛЏИЈА СЛАВИЦА
+МЕСЕЛЏИЈА СТАНИМИР
+МЕТЕЉСКИ СЕРГИЈЕ
+МЕТОДИЈЕВИЋ МИЛОСАВ
+МЕЗЕ ЈУЛИЈАНА
+МЕЗЕШ ИМРЕ
+МЕЗЕИ ШАНДОР
+МЕЗЕИ ЈОЖЕФ
+МЕЗЕИ ЛАДИСЛАВ
+МЕЗЕИ ЛАСЛО
+МЕЗЕИ СНЕЖАНА
+МЕЗЕИ СТЕВАН ДР
+МЕЗЕИ СТЕВАН
+МИЧА ЈОСИП
+МИЧА ЈОВАН
+МИЧИЋ-ЂЕРМАНОВ ВИДА
+МИЧИЋ БОШКО
+МИЧИЋ БОШКО
+МИЧИЋ МИРЈАНА
+МИЧИЋ-МИТРОВИЋ МИЛИЦА
+МИЧИЋ НЕДЕЉКО
+МИЧИЋ СНЕЖАНА
+МИЧИЋ СОФИЈА
+МИЧИЋ ЗОРА
+МИЧУРИН ЈОСИП
+МИШЧЕВИЋ БРАНКО
+МИШЧЕВИЋ БРАНКО
+МИШЧЕВИЋ ДУШАН
+МИШЧЕВИЋ ДУШАН
+МИШЧЕВИЋ ИЛИЈА
+МИШЧЕВИЋ ИВАНКА
+МИШЧЕВИЋ МАРИЈА
+МИШЧЕВИЋ МИЦА
+МИШЧЕВИЋ МИЛАДИН
+МИШЧЕВИЋ МИЛАН
+МИШЧЕВИЋ НИКОЛА
+МИШЧЕВИЋ ОЛГА
+МИШЧЕВИЋ ПЕТАР
+МИШЧЕВИЋ ПЕТАР
+МИШЧЕВИЋ ПЕТАР
+МИШЧЕВИЋ ВЛАДИМИР
+МИШЧЕВИЋ ЗЛАТКО
+МИШАН ЛАЗАР
+МИШАНОВИЋ ДРАГОЉУБ
+МИШАНОВИЋ СИМО
+МИШЕЛИЋ ЈЕФТА
+МИШИЋ ЧЕДОМИР
+МИШИЋ ЂУРА
+МИШИЋ АЛЕКСАНДАР
+МИШИЋ АЛЕКСАНДАР
+МИШИЋ АЛЕКСАНДАР
+МИШИЋ АНЂЕЛИЈА
+МИШИЋ АНЂЕЛКА
+МИШИЋ АНА
+МИШИЋ БОГДАН
+МИШИЋ БУДИМИР
+МИШИЋ ДРАГИЦА
+МИШИЋ ДРАГИЦА
+МИШИЋ ЕТЈЕН
+МИШИЋ ГОРАН
+МИШИЋ ИВАН
+МИШИЋ ИВАН
+МИШИЋ ЈАГОДА
+МИШИЋ ЈАКОВ
+МИШИЋ ЈАСМИНА
+МИШИЋ ЈОСИП
+МИШИЋ ЈОВАН
+МИШИЋ ЛАЗАР
+МИШИЋ ЛАЗАР
+МИШИЋ ЛИНКА
+МИШИЋ ЉИЉАНА
+МИШИЋ ЉУБО
+МИШИЋ МАРИЈА
+МИШИЋ МАРКО
+МИШИЋ МИЛАН
+МИШИЋ МИЛАН
+МИШИЋ МИЛАН
+МИШИЋ МИЛАН
+МИШИЋ МИЛАН
+МИШИЋ МИЛОСАВКА
+МИШИЋ МИЛОВАН
+МИШИЋ МИОДРАГ
+МИШИЋ МИОМИР
+МИШИЋ МИРЈАНА
+МИШИЋ МИРОСЛАВ
+МИШИЋ МИРОСЛАВ
+МИШИЋ НАДА
+МИШИЋ НЕНАД
+МИШИЋ НЕСТОР
+МИШИЋ НИКОЛА
+МИШИЋ ПЕТАР
+МИШИЋ ПРЕДРАГ
+МИШИЋ РАДЕ
+МИШИЋ РАДИВОЈЕ
+МИШИЋ РАДИВОЈЕ
+МИШИЋ РАДОЈКА
+МИШИЋ РАНКО
+МИШИЋ САВА
+МИШИЋ СЛАВКО
+МИШИЋ СЛОБОДАН
+МИШИЋ СЛОБОДАН
+МИШИЋ СЛОБОДАН
+МИШИЋ СОФИЈА
+МИШИЋ СТИПО
+МИШИЋ СТЈЕПАН
+МИШИЋ СВЕТОЗАР
+МИШИЋ СВЕТОЗАР
+МИШИЋ ТОДОР ДР
+МИШИЋ ТУГОМИР
+МИШИЋ ВАСА
+МИШИЋ ВИДОСАВА
+МИШИЋ ВЛАДИЦА
+МИШИЋ ВОЈИН
+МИШИЋ ЗДРАВКО
+МИШИЋ ЗОРАН
+МИШИЋ ЗОРА
+МИШИЋ ЗОРИЦА
+МИШИЋ ЗВОНИМИР
+МИШИНСКИ ЈЕЛЕНА
+МИШКАР ЈОВАН
+МИШКЕЉИН БОШКО
+МИШКИЋ ШИМУН
+МИШКИЋ ДУШАН
+МИШКИЋ ИВАН
+МИШКИЋ МИЛАН
+МИШКИЋ РАЈКО
+МИШКИЋ РАНКО
+МИШКИЋ СВЕТИСЛАВКА
+МИШКИЋ ВИТОМИР
+МИШКИЋЕВИЋ БОРИВОЈ
+МИШКЉИН КАТИЦА
+МИШКОВ ЂУРЂИНКА
+МИШКОВ АЛЕКСАНДАР
+МИШКОВ АНГЕЛИНА
+МИШКОВ АНКА
+МИШКОВ АНКИЦА
+МИШКОВ АВРАМ
+МИШКОВ БИЉАНА
+МИШКОВ БОЈКА
+МИШКОВ БРАНИМИР
+МИШКОВ БРАНКО
+МИШКОВ ИВИЦА
+МИШКОВ ЈОВАН
+МИШКОВ КАТАРИНА
+МИШКОВ КАТАРИНА
+МИШКОВ ЉУБИЦА
+МИШКОВ ЉУБИЦА
+МИШКОВ МАКСА
+МИШКОВ МАРИЦА
+МИШКОВ МИЛОШ
+МИШКОВ МИЛОВАН
+МИШКОВ МИРОСЛАВ
+МИШКОВ НАДА
+МИШКОВ НЕВЕНКА
+МИШКОВ НИКОЛА
+МИШКОВ НОВА
+МИШКОВ РАДИВОЈ
+МИШКОВ САВА ДИПЛ ИНГ
+МИШКОВ САВА
+МИШКОВ СТАНКА
+МИШКОВ СТЕВАН
+МИШКОВ ВЕСНА
+МИШКОВ ВЕСНА
+МИШКОВ ЗАГОРКА
+МИШКОВ ЗЛАТА
+МИШКОВИЋ ЖИВКО
+МИШКОВИЋ ЂОРЂЕ
+МИШКОВИЋ ЂОРЂЕ
+МИШКОВИЋ ЂОРЂЕ
+МИШКОВИЋ АЛЕКСАНДРА
+МИШКОВИЋ АНА
+МИШКОВИЋ АНА
+МИШКОВИЋ АРСА
+МИШКОВИЋ БЛАЖО
+МИШКОВИЋ БОЖИДАР
+МИШКОВИЋ БОЈАНА
+МИШКОВИЋ БОЈАН
+МИШКОВИЋ БОРИВОЈ
+МИШКОВИЋ БРАНИСЛАВ
+МИШКОВИЋ БРАНКО
+МИШКОВИЋ ЦВЕТКО
+МИШКОВИЋ ДАНЧИКА
+МИШКОВИЋ ДАРИНКА
+МИШКОВИЋ ДЕЛИНКА
+МИШКОВИЋ ДРАГАН
+МИШКОВИЋ ДРАГОРАД
+МИШКОВИЋ ДУБРАВКА
+МИШКОВИЋ ИЛИЈА
+МИШКОВИЋ ИЛИЈА
+МИШКОВИЋ ИЛОНКА
+МИШКОВИЋ ЈОЦА
+МИШКОВИЋ ЈОВАН
+МИШКОВИЋ ЛАЗАР
+МИШКОВИЋ ЉУБИЦА
+МИШКОВИЋ ЉУБИЦА
+МИШКОВИЋ МАРКО
+МИШКОВИЋ МИХАЈЛО
+МИШКОВИЋ МИЛКА
+МИШКОВИЋ МИЛОШ
+МИШКОВИЋ МИЛОЈЕ
+МИШКОВИЋ МИЛОРАД
+МИШКОВИЋ МИОДРАГ
+МИШКОВИЋ МИРЈАНА
+МИШКОВИЋ МИРКО
+МИШКОВИЋ МИРКО
+МИШКОВИЋ МИРКО
+МИШКОВИЋ МИРОСЛАВА
+МИШКОВИЋ НЕНАД
+МИШКОВИЋ НИЋИФОР
+МИШКОВИЋ ОБРАД
+МИШКОВИЋ ОЛГИЦА
+МИШКОВИЋ ПЕТАР
+МИШКОВИЋ РАДЕ
+МИШКОВИЋ РАДИВОЈ МР
+МИШКОВИЋ РАДОСЛАВ
+МИШКОВИЋ РАНКО
+МИШКОВИЋ САША
+МИШКОВИЋ САВКА
+МИШКОВИЋ СТАНКА
+МИШКОВИЋ СТЕВАН
+МИШКОВИЋ СТЕВАН
+МИШКОВИЋ ТАЊА
+МИШКОВИЋ ВИДОСАВА
+МИШКОВИЋ ВИЈЕНЦЕСЛАВ
+МИШКОВИЋ ВУКИЦА
+МИШКОВИЋ ВУКИЦА
+МИШКОВИЋ ЗРНКА
+МИШКОВИЦ ЉУДЕВИТ
+МИШКОВИЦ ЗУЗАНА
+МИШКУЛИН ДРАГИША
+МИШКУЛИН НАДА
+МИШКУЛИН НИКОЛА
+МИШЉЕНОВИЋ МИОДРАГ
+МИШЛОВ ЉУБИЦА
+МИШОВИЋ МИРКО
+МИШОВСКИ РИСТО
+МИШУЛИЋ ПЕТАР
+МИШУЛИЋ ВИДАК
+МИШУЛИЋ ВОЈИСЛАВ
+МИШУРА ИВАН
+МИЋАШЕВИЋ БОШКО
+МИЋАШЕВИЋ САВА
+МИЋАНОВИЋ ДРАГАН
+МИЋАНОВИЋ ДРАГИША
+МИЋАНОВИЋ МАРЈАН
+МИЋЕВИЋ ДУШАН
+МИЋЕВИЋ СОФИЈА
+МИЋИЋ ЂОРЂЕ
+МИЋИЋ ЂУРЂИНА
+МИЋИЋ БОЈАНА
+МИЋИЋ БРАНИСЛАВ
+МИЋИЋ БРАНКА
+МИЋИЋ БРАНКО ДИПЛ ИНГ
+МИЋИЋ БРАНО
+МИЋИЋ ЦВИЈЕТИН
+МИЋИЋ ДРАГОЉУБ
+МИЋИЋ ДУШАН ДИПЛ ПРАВНИК
+МИЋИЋ ДУШАН
+МИЋИЋ ДУШАН
+МИЋИЋ ИЛИЈА
+МИЋИЋ ЈОВАНКА
+МИЋИЋ КОНСТАНТИНА
+МИЋИЋ КРСТА
+МИЋИЋ ЉУБОМИР
+МИЋИЋ ЉУБОМИР
+МИЋИЋ МАРИЈА
+МИЋИЋ МИХАЈЛО
+МИЋИЋ МИЛАНА
+МИЋИЋ МИЛЕНА
+МИЋИЋ МИЛЕНКО ДИПЛ ИНГ
+МИЋИЋ МИЛИЦА
+МИЋИЋ МИЛИЦА
+МИЋИЋ МИЛКА
+МИЋИЋ МИЛОРАД
+МИЋИЋ МИРОСЛАВ
+МИЋИЋ ОЛИВЕРА
+МИЋИЋ ОЗРЕН
+МИЋИЋ РАДМИЛА
+МИЋИЋ РАДОЈИЦА
+МИЋИЋ РАДОВАН
+МИЋИЋ РОДОЉУБ
+МИЋИЋ СЛАВИЦА
+МИЋИЋ СЛАВКО
+МИЋИЋ СМИЉА
+МИЋИЋ СТОЈАН
+МИЋИЋ СУЗАНА
+МИЋИЋ ВЕЛИМИР
+МИЋИЋ ВЛАДИМИР
+МИЋИН ЖАРКО
+МИЋИН ЂОРЂЕ
+МИЋИН ДУШКО
+МИЋИН ЛАЗА
+МИЋИН МИЛИЦА
+МИЋИН РАДОВАН
+МИЋИН УРОШ
+МИЋКОВИЋ МИЛИНКО
+МИЋОВИЋ ЧЕДОМИР
+МИЋОВИЋ БОРИСЛАВ
+МИЋОВИЋ БОСИЉКА
+МИЋОВИЋ ЈАНКО
+МИЋОВИЋ КОСТАДИН ДР
+МИЋОВИЋ МИЛАН
+МИЋОВИЋ МИРЈАНА
+МИЋОВИЋ НЕБОЈША ДИПЛ ИНГ
+МИЋОВИЋ ПРЕДРАГ ДИПЛ ИНГ
+МИЋОВИЋ СТОЈАНКА
+МИЋОВИЋ ВЕЛИМИР
+МИЋУНОВИЋ ДРАГУТИН
+МИЋУНОВИЋ МАРИЦА
+МИЋУНОВИЋ СТАНКА
+МИЋУНОВИЋ ВЛАДО
+МИЋУНОВИЋ ВОЈИСЛАВКА
+МИАВЕЦ МАЋАШ
+МИЦАИ МАРИЈА
+МИЦИЋ ДРАГАН
+МИЦИЋ ДРАГОЉУБ
+МИЦИЋ ДРАГОЉУБ
+МИЦИЋ ДУШАН
+МИЦИЋ КРСТА ДР
+МИЦИЋ МИРКО
+МИЦКОВ БЛАГОЈ
+МИЦКОВ ЕЛЕНА
+МИДИ НЕНАД
+МИДИЋ ЂОРЂЕ
+МИДИЋ БОРИВОЈ
+МИДИЋ-ДУНЂЕРСКИ МИЛЕНА
+МИДИЋ ЈЕЛЕНА
+МИДИЋ ЈОВАН
+МИДИЋ ЉУБИША
+МИДИЋ МИЛЕНКО
+МИДИЋ МИЛОРАД
+МИДИЋ СЛОБОДАН
+МИДИЋ СТЕВАН
+МИДИЋ СВЕТОЗАР
+МИДИЋ СВЕТОЗАР
+МИДИЋ ЗОРКА
+МИГЛИНЦИ БАРБАРА
+МИГЛИНЦИ ЕТЕЛКА
+МИГЛИНЦИ ЈЕЛЕНА
+МИГЛИНЦИ ЛАСЛО
+МИХАИЛОВИЋ ЧЕДОМИР
+МИХАИЛОВИЋ ЂОКО
+МИХАИЛОВИЋ ДРАГУТИН
+МИХАИЛОВИЋ ГОРАН
+МИХАИЛОВИЋ ЈОВАН
+МИХАИЛОВИЋ КОСТАДИН
+МИХАИЛОВИЋ ЉУБИЦА
+МИХАИЛОВИЋ МИЛАН
+МИХАИЛОВИЋ МИЛОШ
+МИХАИЛОВИЋ МИОДРАГ
+МИХАИЛОВИЋ МИРОСЛАВ
+МИХАИЛОВИЋ МИРОСЛАВ
+МИХАИЛОВИЋ СЛАВОЉУБ
+МИХАИЛОВИЋ СВЕТЛАНА
+МИХАИЛОВИЋ СВЕТОЗАР
+МИХАИЛОВИЋ ВЕЛИБОР
+МИХАИЛОВИЋ ВЕРА ДР
+МИХАИЛОВИЋ ВОЈИСЛАВ
+МИХАИЛОВИЋ ЗОРАН
+МИХАЈЉЕВИЋ РАТОМИР
+МИХАЈЛО ЉАВО
+МИХАЈЛОВ ЖИВА
+МИХАЈЛОВ ЂОРЂЕ
+МИХАЈЛОВ АЛЕКСАНДАР ДР
+МИХАЈЛОВ БОГДАН
+МИХАЈЛОВ БРАНИСЛАВ
+МИХАЈЛОВ ДРАГАНА
+МИХАЈЛОВ ДРАГАН
+МИХАЈЛОВ ДУШАН
+МИХАЈЛОВ ИВАН
+МИХАЈЛОВ ЈОВАНКА
+МИХАЈЛОВ ЛАЗАР
+МИХАЈЛОВ ЉИЉАНА
+МИХАЈЛОВ МАРИЈА
+МИХАЈЛОВ МИЛАН
+МИХАЈЛОВ МИЛОШ
+МИХАЈЛОВ МИЛОРАД
+МИХАЈЛОВ МИЛОВАН
+МИХАЈЛОВ МИЛОВАН
+МИХАЈЛОВ МИРОСЛАВА
+МИХАЈЛОВ НИКОЛА
+МИХАЈЛОВ ОЛГА
+МИХАЈЛОВ РАДОЈКА
+МИХАЈЛОВ РАДОСЛАВ
+МИХАЈЛОВ СПАСОЈЕ
+МИХАЈЛОВ ВЕРА
+МИХАЈЛОВ ВЕСЕЛИН
+МИХАЈЛОВ ВИДОСАВ
+МИХАЈЛОВ ЗОРАН
+МИХАЈЛОВИЋ ЧЕДОМИР
+МИХАЈЛОВИЋ ЧЕДО
+МИХАЈЛОВИЋ ЖАРКО
+МИХАЈЛОВИЋ ЖАРКО
+МИХАЈЛОВИЋ ЖЕЉКО
+МИХАЈЛОВИЋ ЖИВКО
+МИХАЈЛОВИЋ ЖИВОЈИН
+МИХАЈЛОВИЋ ЂОРЂЕ
+МИХАЈЛОВИЋ ЂОРЂЕ
+МИХАЈЛОВИЋ ЂОРЂЕ
+МИХАЈЛОВИЋ ЂУРА
+МИХАЈЛОВИЋ АНЂЕЛКО
+МИХАЈЛОВИЋ АНИЦА
+МИХАЈЛОВИЋ АНКА
+МИХАЈЛОВИЋ БОШКО
+МИХАЈЛОВИЋ БОГОЉУБ ДР
+МИХАЈЛОВИЋ БОГОЉУБ
+МИХАЈЛОВИЋ БРАНИСЛАВ
+МИХАЈЛОВИЋ БРАНИСЛАВ
+МИХАЈЛОВИЋ БРАНИСЛАВ
+МИХАЈЛОВИЋ БРАНКА
+МИХАЈЛОВИЋ БРАНКО
+МИХАЈЛОВИЋ БРАНКО
+МИХАЈЛОВИЋ БРАНКО
+МИХАЈЛОВИЋ БРАНКО
+МИХАЈЛОВИЋ ДАНКА
+МИХАЈЛОВИЋ ДАРИНКА
+МИХАЈЛОВИЋ ДЕЈАН
+МИХАЈЛОВИЋ ДЕЈАН
+МИХАЈЛОВИЋ ДЕЛИЈА
+МИХАЈЛОВИЋ ДИМИТРИЈЕ
+МИХАЈЛОВИЋ ДРАГИША
+МИХАЈЛОВИЋ ДРАГОЉУБ ДР ЛЕКАР
+МИХАЈЛОВИЋ ДРАГОЉУБ
+МИХАЈЛОВИЋ ДРАГОЉУБ
+МИХАЈЛОВИЋ ДРЕНКА
+МИХАЈЛОВИЋ ДУШАНКА
+МИХАЈЛОВИЋ ДУШАН
+МИХАЈЛОВИЋ ДУШАН
+МИХАЈЛОВИЋ ДУШАН
+МИХАЈЛОВИЋ ДУШКО
+МИХАЈЛОВИЋ ЕРНЕСТ
+МИХАЈЛОВИЋ ФРАЊА
+МИХАЈЛОВИЋ ГОЈКО
+МИХАЈЛОВИЋ ГОРДАНА
+МИХАЈЛОВИЋ ГОРДАНА
+МИХАЈЛОВИЋ ИЛЕ
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИЛИЈА
+МИХАЈЛОВИЋ ИВАНКА
+МИХАЈЛОВИЋ ЈАСМИНА ДР
+МИХАЈЛОВИЋ ЈЕЛА
+МИХАЈЛОВИЋ ЈЕЛЕНКО
+МИХАЈЛОВИЋ ЈЕЛИЦА
+МИХАЈЛОВИЋ ЈЕЛИЦА
+МИХАЈЛОВИЋ ЈОКА
+МИХАЈЛОВИЋ ЈОВАН ДИПЛ ИНГ
+МИХАЈЛОВИЋ ЈОВАН
+МИХАЈЛОВИЋ ЈОВАН
+МИХАЈЛОВИЋ ЈОВАН
+МИХАЈЛОВИЋ ЈОВАН
+МИХАЈЛОВИЋ ЈУЛИЈАНА
+МИХАЈЛОВИЋ КАТИЦА
+МИХАЈЛОВИЋ КОСТА
+МИХАЈЛОВИЋ КРИСТИНА
+МИХАЈЛОВИЋ КСЕНИЈА
+МИХАЈЛОВИЋ ЛАЗО
+МИХАЈЛОВИЋ ЛЕНКА
+МИХАЈЛОВИЋ ЛЕНКА
+МИХАЈЛОВИЋ ЛЕПОСАВА
+МИХАЈЛОВИЋ ЉУБИША
+МИХАЈЛОВИЋ ЉУБО
+МИХАЈЛОВИЋ МАРГИТА
+МИХАЈЛОВИЋ МАРИЈА
+МИХАЈЛОВИЋ МАРИЈА
+МИХАЈЛОВИЋ МИЋА
+МИХАЈЛОВИЋ МИХАЈЛО
+МИХАЈЛОВИЋ МИЛАДИН
+МИХАЈЛОВИЋ МИЛАН
+МИХАЈЛОВИЋ МИЛАН
+МИХАЈЛОВИЋ МИЛАН
+МИХАЈЛОВИЋ МИЛАН
+МИХАЈЛОВИЋ МИЛА
+МИХАЈЛОВИЋ МИЛЕНКО
+МИХАЈЛОВИЋ МИЛЕНКО
+МИХАЈЛОВИЋ МИЛЕТА
+МИХАЈЛОВИЋ МИЛЕ
+МИХАЈЛОВИЋ МИЛИЦА
+МИХАЈЛОВИЋ МИЛОРАД ДИПЛ ИНГ
+МИХАЈЛОВИЋ МИЛОРАД
+МИХАЈЛОВИЋ МИЛОРАД
+МИХАЈЛОВИЋ МИЛОВАН
+МИХАЈЛОВИЋ МИЛУН
+МИХАЈЛОВИЋ МИРА
+МИХАЈЛОВИЋ МИРКО
+МИХАЈЛОВИЋ МИРКО
+МИХАЈЛОВИЋ МИРКО
+МИХАЈЛОВИЋ МИРОЉУБ ДИПЛ ИНГ
+МИХАЈЛОВИЋ МИРОСЛАВ
+МИХАЈЛОВИЋ МИРОСЛАВ
+МИХАЈЛОВИЋ МИРОСЛАВ
+МИХАЈЛОВИЋ МОМЧИЛО
+МИХАЈЛОВИЋ НАДА
+МИХАЈЛОВИЋ НАДА
+МИХАЈЛОВИЋ НАДА
+МИХАЈЛОВИЋ НАДИРА
+МИХАЈЛОВИЋ НЕБОЈША
+МИХАЈЛОВИЋ НЕДЕЉКО
+МИХАЈЛОВИЋ НЕДЕЉКО
+МИХАЈЛОВИЋ НИКОЛА
+МИХАЈЛОВИЋ НИКОЛА
+МИХАЈЛОВИЋ НИКОЛА
+МИХАЈЛОВИЋ НОВАК
+МИХАЈЛОВИЋ ОЛИВЕРА
+МИХАЈЛОВИЋ ОСТОЈА
+МИХАЈЛОВИЋ ПЕТАР
+МИХАЈЛОВИЋ ПРВОСЛАВ
+МИХАЈЛОВИЋ РАДЕ
+МИХАЈЛОВИЋ РАДИВОЈ
+МИХАЈЛОВИЋ РАДМИЛА
+МИХАЈЛОВИЋ РАДМИЛА
+МИХАЈЛОВИЋ РАДОМИР
+МИХАЈЛОВИЋ РАДОСЛАВ
+МИХАЈЛОВИЋ РАДОСЛАВ
+МИХАЈЛОВИЋ РАДОВАН
+МИХАЈЛОВИЋ РАДОВАН
+МИХАЈЛОВИЋ РАДОВАН
+МИХАЈЛОВИЋ РОЗАЛИЈА
+МИХАЈЛОВИЋ РУЖИЦА
+МИХАЈЛОВИЋ РУЖИЦА
+МИХАЈЛОВИЋ САЊА
+МИХАЈЛОВИЋ САВА
+МИХАЈЛОВИЋ САВА
+МИХАЈЛОВИЋ САВА
+МИХАЈЛОВИЋ САВО
+МИХАЈЛОВИЋ СИНИША
+МИХАЈЛОВИЋ СЛАВИЦА
+МИХАЈЛОВИЋ СЛАВКО
+МИХАЈЛОВИЋ СЛАВОЉУПКА
+МИХАЈЛОВИЋ СЛОБОДАН
+МИХАЈЛОВИЋ СЛОБОДАН
+МИХАЈЛОВИЋ СМИЉАНА
+МИХАЈЛОВИЋ СОФИЈА
+МИХАЈЛОВИЋ СРЂА
+МИХАЈЛОВИЋ СРБИСЛАВ ДР ЛЕКАР
+МИХАЈЛОВИЋ СРЕТЕН
+МИХАЈЛОВИЋ СРЕТКО
+МИХАЈЛОВИЋ СТАНИША ДИПЛ ИНГ
+МИХАЈЛОВИЋ СТАНИСЛАВА
+МИХАЈЛОВИЋ СТАНКО
+МИХАЈЛОВИЋ СТЕВАН
+МИХАЈЛОВИЋ СТЕВАН
+МИХАЈЛОВИЋ СТЕВА
+МИХАЈЛОВИЋ СТЕВИЦА
+МИХАЈЛОВИЋ СТОЈАН
+МИХАЈЛОВИЋ СТОЈАН
+МИХАЈЛОВИЋ-СУБИЋ ЈОВАНКА
+МИХАЈЛОВИЋ СВЕТОЗАР
+МИХАЈЛОВИЋ СВЕТОЗАР
+МИХАЈЛОВИЋ СВЕТОЗАР
+МИХАЈЛОВИЋ ТУГОМИР
+МИХАЈЛОВИЋ УРОШ
+МИХАЈЛОВИЋ ВАСА
+МИХАЈЛОВИЋ ВЕРА
+МИХАЈЛОВИЋ ВИТОМИР
+МИХАЈЛОВИЋ ВЛАДИМИР
+МИХАЈЛОВИЋ ВЛАДИМИР
+МИХАЈЛОВИЋ ВОЈИСЛАВ
+МИХАЈЛОВИЋ ЗОРАНА
+МИХАЈЛОВИЋ ЗОРИЦА
+МИХАЈЛОВСКИ ЉУБИНКА
+МИХАЈЛОВСКИ МИРОСЛАВ
+МИХАЈЛОВСКИ ВЛАДИМИР
+МИХАЛАЧКИ МИХАИЛО
+МИХАЛАЧКИ СЛОБОДАН
+МИХАЛЕЦ АНГЕЛИНА
+МИХАЛЕЦ МАРИЈА
+МИХАЛЕК ИВАН
+МИХАЛЕК МАРИЈА
+МИХАЛЕНКО СТЕВАН
+МИХАЛИЋ ПЕТАР
+МИХАЛИК-ТИР ЗУЗАНА
+МИХАЉ ЕСТЕР
+МИХАЉ МАРИЈА ДР
+МИХАЉ МИХАЈЛО ДР
+МИХАЉ МИРОСЛАВ ДР
+МИХАЉ ВЛАДИМИР
+МИХАЉЧЕВИЋ АЛОЈЗИЈЕ
+МИХАЉЧИЋ ДРАГАН
+МИХАЉЧИЋ ГОЈКО
+МИХАЉЧИЋ ИЛЕ
+МИХАЉЧИЋ ЈОВАН
+МИХАЉЧИЋ ЈОВАН
+МИХАЉЧИЋ ЛУКА
+МИХАЉЧИЋ МИТАР
+МИХАЉЧИЋ СПАСОЈЕ
+МИХАЉЕВ ЖЕЉКО
+МИХАЉЕВ ИВАН ДР
+МИХАЉЕВ СТОЈАН
+МИХАЉЕВИЋ АНТОН
+МИХАЉЕВИЋ ЕМИЛ
+МИХАЉЕВИЋ ИВАН
+МИХАЉЕВИЋ МИЛАН
+МИХАЉЕВИЋ РУЖИЦА
+МИХАЉЕВИЋ ЗДРАВКО
+МИХАЉФИ МАРИКА
+МИХАЉИ МАРИЈА
+МИХАЉИЧИЋ БРАНКО
+МИХАЉИЧИЋ ДМИТАР
+МИХАЉИЧИЋ ЈОВАНКА
+МИХАЉИЧИЋ СИМО
+МИХАЉИЧИЋ ТОДЕ
+МИХАЉИЦА АНЂА
+МИХАЉИЦА БОЖО
+МИХАЉИЦА ЦВЕТКО
+МИХАЉИЦА МИРА
+МИХАЉКА БРАНИСЛАВ
+МИХАЉОВСКИ ДАНИЛО
+МИХАЛОВИЋ БРАНКО
+МИХАЛОВИЋ ГРОЗДАНА
+МИХЕЉ ФРАЊО
+МИХЕВЦ ИВАНКА
+МИХИЋ ЧЕДОМИР
+МИХИЋ БОЖИДАР
+МИХИЋ МИЛАН
+МИХИЋ МИЛАН
+МИХИЋ МИЛЕНА
+МИХИЋ РИСТО
+МИХИЋ РИСТО
+МИХИЋ САВА ДИПЛ ИНГ
+МИХИЋ ВЕРА
+МИХИЋ ВЛАДИМИР
+МИХИЋ ВОЈИСЛАВКА
+МИХИЋ ЗОРАН
+МИХЛИЦ ПЕТАР
+МИХЊАК ЈОАКИМ
+МИХЊАК КАТИЦА
+МИХЊАК ЛАДИСЛАВ
+МИХЊАК МЕЛАНИЈА
+МИХЊАК НАДА
+МИХЊАК ПЕТАР
+МИХОЦИ ФРАЊА
+МИХОЦИ ЗВОНИМИР
+МИХОЈЕВИЋ ЂОРЂЕ
+МИХОЈЕВИЋ МИЛЕНА
+МИХОЈЕВИЋ НИКОЛА
+МИХОЈЕВИЋ СНЕЖАНА
+МИХОЛЧИЋ СТЕВИЦА
+МИХОЉЕВИЋ ЕМА
+МИХОЉЕВИЋ МИЛОТКА
+МИЈАЧ СЛАВКО
+МИЈАЧЕВИЋ МИЛАН
+МИЈАЏЕВИЋ ЈОВО
+МИЈАИЛОВИЋ ЂОРЂЕ
+МИЈАИЛОВИЋ МИЛИВОЈЕ
+МИЈАИЛОВИЋ ПАНТЕЛИЈА
+МИЈАИЛОВИЋ РАНИСАВ
+МИЈАИЛОВИЋ РАНКО
+МИЈАИЛОВИЋ СТАНОЈЕ
+МИЈАЈЛОВИЋ АЈНА
+МИЈАЈЛОВИЋ ВУКОСАВА
+МИЈАЛЧИЋ МИЛАН
+МИЈАЛЧИЋ САВА
+МИЈАЛЧИЋ ЗОРА
+МИЈАЛИЦА СВЕТОСЛАВ
+МИЈАНОВИЋ ЂОРЂЕ
+МИЈАНОВИЋ ЂОРЂЕ
+МИЈАНОВИЋ МИЛИЦА
+МИЈАНОВИЋ МИЛОШ
+МИЈАНОВИЋ МИЛОРАД
+МИЈАНОВИЋ МИЛОРАД
+МИЈАНОВИЋ ПАВЛЕ
+МИЈАНОВИЋ РАДОМИР
+МИЈАТ ИВАН
+МИЈАТ МИЛАНКА
+МИЈАТ РОКО
+МИЈАТ ТОМИСЛАВ
+МИЈАТОВ ЖИВКА
+МИЈАТОВ АЛЕКСАНДАР
+МИЈАТОВ АНЂЕЛКА
+МИЈАТОВ БРАНИСЛАВ
+МИЈАТОВ ДРАГИЋ
+МИЈАТОВ ДРАГИЦА
+МИЈАТОВ ИВАН
+МИЈАТОВ ИВАН
+МИЈАТОВ ЈОСА
+МИЈАТОВ КАТИЦА
+МИЈАТОВ ЛАЗАР
+МИЈАТОВ ЉУБИНКА
+МИЈАТОВ ЉУБОМИР
+МИЈАТОВ МИЛАДИН
+МИЈАТОВ МИЛАН
+МИЈАТОВ МИЛАН
+МИЈАТОВ МИЛАН
+МИЈАТОВ МИЛА
+МИЈАТОВ МИЛЕНКО
+МИЈАТОВ МИЛОШ
+МИЈАТОВ МИЛОРАД
+МИЈАТОВ МИОДРАГ
+МИЈАТОВ МИРЈАНА
+МИЈАТОВ РАДИВОЈ
+МИЈАТОВ РАДОВАН
+МИЈАТОВ САВА
+МИЈАТОВ САВКА
+МИЈАТОВ СЛАВКО
+МИЈАТОВ СМИЉКА
+МИЈАТОВ СТЕВАН
+МИЈАТОВ ВИДОСАВА
+МИЈАТОВ ВОЈИН
+МИЈАТОВ ЗЛАТИНКА
+МИЈАТОВИЋ ЖИВАН
+МИЈАТОВИЋ ЂОРЂЕ
+МИЈАТОВИЋ ЂУЈА
+МИЈАТОВИЋ ЂУРИЦА
+МИЈАТОВИЋ ЂУРО
+МИЈАТОВИЋ АЛЕКСАНДРА
+МИЈАТОВИЋ АНТОНИЈЕ
+МИЈАТОВИЋ БИСЕРКА
+МИЈАТОВИЋ БОШКО
+МИЈАТОВИЋ БОЖИДАР
+МИЈАТОВИЋ БОЖО
+МИЈАТОВИЋ БОГОМИР
+МИЈАТОВИЋ БРАНКО
+МИЈАТОВИЋ ДРАГАН
+МИЈАТОВИЋ ДРАГАН
+МИЈАТОВИЋ ДРАГИЋ
+МИЈАТОВИЋ ДРАГИ
+МИЈАТОВИЋ ДУШАН
+МИЈАТОВИЋ ДУШАН
+МИЈАТОВИЋ ДУШАН
+МИЈАТОВИЋ ГОЈКО
+МИЈАТОВИЋ ИЛИЈА
+МИЈАТОВИЋ ИЛИЈА
+МИЈАТОВИЋ ЈОВАН
+МИЈАТОВИЋ ЈОВАН
+МИЈАТОВИЋ КАТИЦА
+МИЈАТОВИЋ КОСТА
+МИЈАТОВИЋ ЛАЗАР
+МИЈАТОВИЋ ЛАЗАР
+МИЈАТОВИЋ ЛЕЛА
+МИЈАТОВИЋ ЉИЉАНА
+МИЈАТОВИЋ ЉУБЕНКО
+МИЈАТОВИЋ ЉУБИЦА
+МИЈАТОВИЋ ЉУБИЦА
+МИЈАТОВИЋ ЉУБИЦА
+МИЈАТОВИЋ МАРТА
+МИЈАТОВИЋ МАТО
+МИЈАТОВИЋ МИША
+МИЈАТОВИЋ МИЛАН
+МИЈАТОВИЋ МИЛЕВА
+МИЈАТОВИЋ МИЛИВОЈЕ
+МИЈАТОВИЋ МИЛКО
+МИЈАТОВИЋ МИЛОШ
+МИЈАТОВИЋ МИЛОРАД
+МИЈАТОВИЋ МИЛОВАН
+МИЈАТОВИЋ МИОДРАГ
+МИЈАТОВИЋ МИРА
+МИЈАТОВИЋ МИРЈАНА
+МИЈАТОВИЋ МИРЈАНА
+МИЈАТОВИЋ НАТАША
+МИЈАТОВИЋ НЕВЕНА
+МИЈАТОВИЋ НИКОЛА
+МИЈАТОВИЋ НОВО
+МИЈАТОВИЋ ОБРАД
+МИЈАТОВИЋ ПЕРА
+МИЈАТОВИЋ ПЕТАР
+МИЈАТОВИЋ-ПУШИЋ БРАНИСЛАВА ДР
+МИЈАТОВИЋ РАДИЧ
+МИЈАТОВИЋ РАДОСЛАВ
+МИЈАТОВИЋ СИМО
+МИЈАТОВИЋ СНЕЖАНА
+МИЈАТОВИЋ СТАНА
+МИЈАТОВИЋ ТОША
+МИЈАТОВИЋ ТОМИСЛАВ
+МИЈАТОВИЋ ВЕРА
+МИЈАТОВИЋ ВЕРА
+МИЈАТОВИЋ ВИД
+МИЈАТОВИЋ ВЛАДАН
+МИЈАТОВИЋ ВОЈИН АДВОКАТ
+МИЈАТОВИЋ ЗДРАВКО ДИПЛ ИНГ
+МИЈАТОВИЋ ЗОРАН
+МИЈАТОВИЋ ЗОРА
+МИЈАТОВИЋ ЗОРИЦА
+МИЈАТОВИЋ ЗВОНИМИР
+МИЈАВЕЦ ЂОРЂЕ
+МИЈАВЕЦ ЈОВАН
+МИЈАВЕЦ ЛУДВИГ
+МИЈАВЕЦ МИХАЈЛО
+МИЈАВЕЦ ПАЈА
+МИЈАВЕЦ ЗОРА
+МИЈИЋ ЖЕЉКО
+МИЈИЋ ЖЕЉКО
+МИЈИЋ ЂОРЂЕ
+МИЈИЋ АЛЕКСАНДАР
+МИЈИЋ АНТЕ
+МИЈИЋ БРАНКО
+МИЈИЋ ДЕСАНКА
+МИЈИЋ ДРАГАН
+МИЈИЋ ДУШАН
+МИЈИЋ ИЛИЈА
+МИЈИЋ ЈАЊА
+МИЈИЋ МИХАЈЛО
+МИЈИЋ МИЛАН
+МИЈИЋ МИЛОШ
+МИЈИЋ МИОДРАГ
+МИЈИЋ НИКОЛА
+МИЈИЋ ПЕРА
+МИЈИЋ ПЕТАР
+МИЈИЋ ПЕТАР
+МИЈИЋ РАДОВАН
+МИЈИЋ РАДОВАН
+МИЈИЋ САВА
+МИЈИЋ СВЕТИСЛАВ
+МИЈИЋ ТИНКА
+МИЈИЋ ВЕЉКО
+МИЈИЋ ВЕСНА
+МИЈИЋ ВЛАДИМИР
+МИЈИН БОРИСЛАВ
+МИЈИН БРАНИСЛАВ
+МИЈИН ЈОВА
+МИЈИН ЛАЗАР
+МИЈИН ЛАЗАР
+МИЈИН МИЛАН
+МИЈИН МИЛЕВА
+МИЈИН МИЛИЦА
+МИЈИН МИЛОШ
+МИЈИН ПЕТАР
+МИЈИН ПЕТАР
+МИЈИН РАДА
+МИЈИН САВА
+МИЈИН СИМА
+МИЈИН СТЕВАН
+МИЈИН СВЕТОЗАР
+МИЈОКОВ ДРАГАН
+МИЈОЛИЋ СЛОБОДАН
+МИЈОЉЕВИЋ МИЛЕНКО
+МИЈОВИЋ ЖАРКО
+МИЈОВИЋ ДРАГИЦА
+МИЈОВИЋ ГАВРИЛО
+МИЈОВИЋ РАДОЈКА
+МИЈОВИЋ ВЕРА
+МИЈУЧИЋ СТЕВАН
+МИЈУЧИЋ ВЕРА
+МИЈУЧИН МИЛКА
+МИЈУШКОВИЋ ДРАГИЦА
+МИЈУШКОВИЋ ЈОВАН
+МИЈУШКОВИЋ МИЛИВОЈЕ
+МИЈУШКОВИЋ ОБРЕН
+МИЈУШКОВИЋ РАДЕ
+МИЈУШКОВИЋ РАДМИЛА
+МИЈУШКОВИЋ ТИНКА
+МИКША МИЛАН
+МИКШИЋ ЧЕДОМИР
+МИКШИЋ ОТОН
+МИКШИЋ СЛОБОДАН
+МИКАШИНОВИЋ БИЉАНА
+МИКАШИНОВИЋ САВА
+МИКАЋ МИЛАН
+МИКАЦ ЕВКА
+МИКАЛАЧКИ ЂОРЂЕ
+МИКАЛАЧКИ АЛЕКСАНДАР
+МИКАЛАЧКИ ДРАГИЦА
+МИКАЛАЧКИ ИВАНКА
+МИКАЛАЧКИ ИВАНКА
+МИКАЛАЧКИ ЈАСМИНА
+МИКАЛАЧКИ МИЛУТИН
+МИКАЛАЧКИ МИРЈАНА
+МИКАЛАЧКИ ПАВЛЕ
+МИКАЛАЧКИ УРОШ
+МИКАЛАЧКИ ЗОРАН
+МИКАЛАЧКИ ЗОРАН
+МИКАН БОСИЉКА
+МИКАН ИВАН
+МИКАНОВИЋ ДАНИЦА
+МИКАНОВИЋ ДРАГАН
+МИКАНОВИЋ ИРЕНА
+МИКАНОВИЋ РАНКО
+МИКАВИЦА СТАНИМИР
+МИКЕ ЕСТЕР
+МИКЕШ АНДРИЈА
+МИКЕШ ЕНДРЕ
+МИКЕШ ЕТЕЛ
+МИКЕШ МЕЛАНИЈА
+МИКЕШ МИХАЉ
+МИКЕТИЋ МИРЈАНА
+МИКИЋ ЖАРКО
+МИКИЋ ЖАРКО
+МИКИЋ ЂУРА ДР
+МИКИЋ ДЕСИМИР
+МИКИЋ ИВАН
+МИКИЋ ЈОСИП ДИПЛ ИНГ
+МИКИЋ ЛАЗАР
+МИКИЋ МАКСИМ
+МИКИЋ МИЛАН
+МИКИЋ МИЛЕНА
+МИКИЋ МИЛИСАВ
+МИКИЋ МИЛКА
+МИКИЋ МИЛКА
+МИКИЋ МИЛОВАН
+МИКИЋ МИРОСЛАВ
+МИКИЋ ОЛГА
+МИКИЋ РАДИВОЈЕ
+МИКИЋ РАДОЈКА
+МИКИЋ РАДОСЛАВКА
+МИКИЋ РУЖА
+МИКИЋ СЛОБОДАН
+МИКИЋ СРБОЉУБ
+МИКИЋ СТОЈА
+МИКИЋ ТОДОР
+МИКИЋ ВЛАДАН
+МИКИЋ ЗОРКА
+МИКИН НАДА
+МИКИТИШИН НАДА
+МИКЛЕВ СТОЈАНКА
+МИКЛИЋ ЂОРЂЕ
+МИКЛИЋ АНА
+МИКЛИЋ ТЕРЕЗА
+МИКЛОШ АНДРАШ
+МИКЛОШ АНДРИЈА
+МИКЛОШ АНТАЛ
+МИКЛОШ ДИМИТРИЈЕ
+МИКЛОШ ЈАНКО
+МИКЛОШ ЈЕЛИСАВЕТА
+МИКЛОШ ЈУЛИЈАН
+МИКЛОШ НАНДОР ДР ЛЕКАР
+МИКЛОШ СТЕВАН
+МИКЛОШ ВЛАДИМИР
+МИКЛОВИЦ ЈАН
+МИКЛОВИЦ МИЛОСЛАВ
+МИКОЛА ЂУРА
+МИКОЛАЦИ ЛЕПОСАВА
+МИКОЛЕЦКИ СЛАВИЦА
+МИКОЛИЋ АЛЕКСАНДАР
+МИКОВ ЈОВАНКА
+МИКОВ МЕТОДИ ДР ЛЕКАР
+МИКОВ МОМИР
+МИКОВИЋ ЂОРЂЕ
+МИКОВИЋ ЂОРЂЕ
+МИКОВИЋ ЂУРА
+МИКОВИЋ АЛЕКСАНДАР
+МИКОВИЋ АЛЕКСАНДАР
+МИКОВИЋ ДАНИЛО
+МИКОВИЋ ДАРИНКА
+МИКОВИЋ ДЕЈАН
+МИКОВИЋ ДЕСАНКА
+МИКОВИЋ ЈЕЛЕНА
+МИКОВИЋ ЛАЗАР
+МИКОВИЋ ЉИЉАНА
+МИКОВИЋ МИЛЕНА
+МИКОВИЋ МИОДРАГ
+МИКОВИЋ МЛАДЕН
+МИКОВИЋ МОМЧИЛО ДР ПРАВНИК
+МИКОВИЋ НАДА
+МИКОВИЋ НИНОСЛАВ
+МИКОВИЋ ПАВА
+МИКОВИЋ РУЖИЦА
+МИКОВИЋ СЛАВКО
+МИКОВИЋ СНЕЖАНА
+МИКОВИЋ СРЕДОЈЕ
+МИКОВИЛОВИЋ ИВАН
+МИКСАТ ЈОЖЕФ
+МИКУШ АНЂЕЛКА
+МИКУШ МИЛКА
+МИКУШ МИРЈАНА
+МИКУЛЕСКО ДУШАН
+МИКУЛЕСКО САВО ДИПЛ ИНГ
+МИКУЛИЋ ШИМЕ
+МИКУЛИЋ БИЉАНА
+МИКУЛИЋ БЛАЖ
+МИКУЛИЋ ЕДИТ
+МИКУЛИЋ ИВАН
+МИКУЛИЋ ИВАН
+МИКУЛИЋ ИВА
+МИКУЛИЋ ЈЕЛИСАВЕТА
+МИКУЛИЋ ЛОВРЕ
+МИКУЛИЋ МАРА
+МИКУЛИЋ МИЛЕ
+МИКУЛИЋ МИЛИЋ
+МИКУЛИНАЦ МАТИЈА
+МИКУЛИНАЦ РЕНЕТА
+МИКУЛИНАЦ СЛАВИЦА
+МИЛЧИЋ ДРАГАН
+МИЛЧИЋ ЈОВАН
+МИЛАЧИЋ ЖЕЉКО
+МИЛАЧИЋ БОРИВОЈЕ
+МИЛАЧИЋ БРАНИСЛАВ
+МИЛАЧИЋ БРАНКО
+МИЛАЧИЋ ДУШАН
+МИЛАЧИЋ ИВАН
+МИЛАЧИЋ ЉУБОМИР
+МИЛАЧИЋ МАШАН
+МИЛАЧИЋ МИЛЕНКО
+МИЛАЧИЋ СРБОСЛАВ
+МИЛАЧИЋ СВЕТОЗАР
+МИЛАЧИЋ ЗОРИЦА
+МИЛАШ ДРАГАН
+МИЛАШ ДУШАНКА
+МИЛАШЕВИЋ ЗОРКА
+МИЛАШИНОВИЋ ЈОВАН
+МИЛАШИНОВИЋ ЉУБОМИР
+МИЛАШИНОВИЋ МИЋУН
+МИЛАШИНОВИЋ МИЛОРАД
+МИЛАШИНОВИЋ МИРЈАНА
+МИЛАШИНОВИЋ МИРКО
+МИЛАШИНОВИЋ МИРКО
+МИЛАШИНОВИЋ РАДЕ
+МИЛАШИНОВИЋ-СТАНОЈЕВИЋ ЉИЉАНА
+МИЛАШИНОВИЋ ВУКОМАН
+МИЛАШИНОВИЋ ЗЛАТОЈА
+МИЛАДИЋ ЧЕДА
+МИЛАДИЋ ДОБРОМИР
+МИЛАДИЋ ПЕТАР
+МИЛАДИНОСКИ ЛЕВКО
+МИЛАДИНОВ ЖАРКО
+МИЛАДИНОВ ЖИВКО
+МИЛАДИНОВ БОЖИДАР
+МИЛАДИНОВ ДАНИЦА
+МИЛАДИНОВ ДАНИЦА
+МИЛАДИНОВ ДУШАНКА
+МИЛАДИНОВ ДУШАН
+МИЛАДИНОВ ЈОЦА
+МИЛАДИНОВ ЈОВАН
+МИЛАДИНОВ ЈОВАН
+МИЛАДИНОВ ЈОВАН
+МИЛАДИНОВ ЈОВИЦА
+МИЛАДИНОВ ЉУБИЦА
+МИЛАДИНОВ МАРИЈА
+МИЛАДИНОВ МИЛАН
+МИЛАДИНОВ МИЛАН
+МИЛАДИНОВ МИЛЕНА
+МИЛАДИНОВ МИЛЕНКО
+МИЛАДИНОВ МИЛОВАН ДИПЛ ИНГ
+МИЛАДИНОВ МИЛОВАН
+МИЛАДИНОВ НАДА
+МИЛАДИНОВ НОВАК
+МИЛАДИНОВ РАДИВОЈ
+МИЛАДИНОВ РАДОВАН
+МИЛАДИНОВ СЛАВИЦА
+МИЛАДИНОВ СРБИНКО
+МИЛАДИНОВ СВЕТОЗАР
+МИЛАДИНОВ СВЕТОЗАР
+МИЛАДИНОВ ТИХОМИР
+МИЛАДИНОВ ВЕСНА
+МИЛАДИНОВ ВЈЕРА
+МИЛАДИНОВИЋ ЖИВАДИН ДИПЛ ИНГ
+МИЛАДИНОВИЋ ЖИВОЈИН
+МИЛАДИНОВИЋ ЂОРЂЕ
+МИЛАДИНОВИЋ АЛЕКСАНДАР
+МИЛАДИНОВИЋ АЛЕКСАНДАР
+МИЛАДИНОВИЋ БОЖИДАР
+МИЛАДИНОВИЋ БРАНИМИР
+МИЛАДИНОВИЋ БРАНКО
+МИЛАДИНОВИЋ ДАМИР
+МИЛАДИНОВИЋ ДИВНА
+МИЛАДИНОВИЋ ДРАГАН
+МИЛАДИНОВИЋ ДРАГАН
+МИЛАДИНОВИЋ ДРАГИША
+МИЛАДИНОВИЋ ДРАГОМИР
+МИЛАДИНОВИЋ ДРАГОСЛАВ
+МИЛАДИНОВИЋ ДУШАН
+МИЛАДИНОВИЋ ЈОВАН
+МИЛАДИНОВИЋ ЈОВАН
+МИЛАДИНОВИЋ ЉУБИЦА
+МИЛАДИНОВИЋ ЉУБИНКА
+МИЛАДИНОВИЋ МАРКО
+МИЛАДИНОВИЋ МИХАЈЛО
+МИЛАДИНОВИЋ МИЛАН
+МИЛАДИНОВИЋ МИЛАН
+МИЛАДИНОВИЋ МИЛАН
+МИЛАДИНОВИЋ МИЛЕ
+МИЛАДИНОВИЋ МИЛОВАН
+МИЛАДИНОВИЋ МИРОСЛАВ
+МИЛАДИНОВИЋ НОВИЦА
+МИЛАДИНОВИЋ ПРЕДРАГ
+МИЛАДИНОВИЋ РАДМИЛО
+МИЛАДИНОВИЋ РАДОСЛАВ
+МИЛАДИНОВИЋ СЛАВКО
+МИЛАДИНОВИЋ СЛОБОДАНКА
+МИЛАДИНОВИЋ СЛОБОДАН
+МИЛАДИНОВИЋ СЛОБОДАН
+МИЛАДИНОВИЋ СВЕТОМИР
+МИЛАДИНОВИЋ ТОДЕ
+МИЛАДИНОВИЋ ВЕРА
+МИЛАК ЂОРЂЕ
+МИЛАК ДАРИНКА
+МИЛАК ДУШАН
+МИЛАК ЈЕЛЕНА
+МИЛАК ЈОВАН
+МИЛАК ЈОВАН
+МИЛАК КАТИЦА
+МИЛАК ЛАЗАР
+МИЛАК МИЛАН
+МИЛАК МИЛАН
+МИЛАК МИЛЕНКО
+МИЛАК МИЛОШ
+МИЛАК РАДОСЛАВ
+МИЛАК САВА
+МИЛАКОВ ЈЕЛЕНА ДР ПРОФ
+МИЛАКОВ ЉУБИЦА ДР
+МИЛАКОВ МИРЈАНА
+МИЛАКОВИЋ ЂОРЂЕ
+МИЛАКОВИЋ ЂУРАЂ
+МИЛАКОВИЋ ЂУРО
+МИЛАКОВИЋ БОСИЉКА
+МИЛАКОВИЋ ДАНИЦА
+МИЛАКОВИЋ ДРАГИЦА
+МИЛАКОВИЋ ДУШАН
+МИЛАКОВИЋ ГОРАН
+МИЛАКОВИЋ МИЛАН
+МИЛАКОВИЋ МИЛКА
+МИЛАКОВИЋ МЛАДЕН
+МИЛАКОВИЋ РАДМИЛА
+МИЛАКОВИЋ РАТОМИР
+МИЛАКОВИЋ ТЕОДОР
+МИЛАКОВИЋ ВОЈИСЛАВ
+МИЛАКОВИЋ ВОЈО
+МИЛАКОВИЋ ВУКИЦА
+МИЛАКОВИЋ ЗОРАН
+МИЛАНКО СЛАВКО
+МИЛАНКОВ ЖИВА
+МИЛАНКОВ ЖИВА
+МИЛАНКОВ ЂОРЂЕ
+МИЛАНКОВ БРАНИСЛАВ
+МИЛАНКОВ ЦВЕТА
+МИЛАНКОВ ДУШАН
+МИЛАНКОВ ИВАН
+МИЛАНКОВ ЈЕЛЕНА
+МИЛАНКОВ ЈУЛИЈАНА
+МИЛАНКОВ ЛАЗАР
+МИЛАНКОВ МАРКО
+МИЛАНКОВ МИЛЕНКО
+МИЛАНКОВ МИЛИВОЈ
+МИЛАНКОВ МИЛКО
+МИЛАНКОВ СЛАВИМИР
+МИЛАНКОВ СОФИЈА
+МИЛАНКОВ СТАНИМИР
+МИЛАНКОВ СТЕВАН
+МИЛАНКОВИЋ ЂОРЂЕ
+МИЛАНКОВИЋ ЂОРЂЕ
+МИЛАНКОВИЋ АНА
+МИЛАНКОВИЋ-ЦОКОВИЋ МИРЈАНА
+МИЛАНКОВИЋ ДРАГОЉУБ
+МИЛАНКОВИЋ ГОРАН
+МИЛАНКОВИЋ ГОРАН
+МИЛАНКОВИЋ ИЛИНКА
+МИЛАНКОВИЋ ЛАЗАР
+МИЛАНКОВИЋ МИЛАНКО
+МИЛАНКОВИЋ МИЛАН
+МИЛАНКОВИЋ МИЛЕВА
+МИЛАНКОВИЋ РАДОСЛАВ
+МИЛАНКОВИЋ СЛОБОДАН
+МИЛАНКОВИЋ ЗОРА
+МИЛАНОВ АНИЦА
+МИЛАНОВ АНКА
+МИЛАНОВ БОГДАН
+МИЛАНОВ БОРИСЛАВА
+МИЛАНОВ ДОБРИВОЈ
+МИЛАНОВ ЈЕЛИЦА
+МИЛАНОВ ЉУБИША
+МИЛАНОВ МИЛАН
+МИЛАНОВ МИОДРАГ
+МИЛАНОВ МИРЈАНА
+МИЛАНОВ МЛАДЕН
+МИЛАНОВ ПЕРСИДА
+МИЛАНОВ РАДИВОЈ
+МИЛАНОВ САВКА
+МИЛАНОВ СВЕТОЗАР
+МИЛАНОВ ВУКОСАВА
+МИЛАНОВИЋ ЖЕЉКО
+МИЛАНОВИЋ ЖИВОРАД
+МИЛАНОВИЋ ЖИВОТИЈЕ
+МИЛАНОВИЋ АЛЕКСАНДАР
+МИЛАНОВИЋ БОШКО
+МИЛАНОВИЋ БОЖИДАР
+МИЛАНОВИЋ БОГДАН
+МИЛАНОВИЋ БРАНКО ДР
+МИЛАНОВИЋ БРАНКО
+МИЛАНОВИЋ ЦВИЈЕТИН
+МИЛАНОВИЋ ДАМЈАНКА
+МИЛАНОВИЋ ДЕСАНКА
+МИЛАНОВИЋ ДОНКА
+МИЛАНОВИЋ ДРАГАН
+МИЛАНОВИЋ ДРАГАН
+МИЛАНОВИЋ ДРАГАН
+МИЛАНОВИЋ ДРАГИЦА
+МИЛАНОВИЋ ДРАГО
+МИЛАНОВИЋ ДУШАН
+МИЛАНОВИЋ ГОРАН
+МИЛАНОВИЋ ГОРАН
+МИЛАНОВИЋ ИЛИЈА
+МИЛАНОВИЋ ИЛИЈА
+МИЛАНОВИЋ ЈАСМИНА
+МИЛАНОВИЋ КАТИЦА
+МИЛАНОВИЋ ЉИЉАНА
+МИЛАНОВИЋ ЉУБИША
+МИЛАНОВИЋ ЉУБИЦА
+МИЛАНОВИЋ МАРТА
+МИЛАНОВИЋ МИХО
+МИЛАНОВИЋ МИЛАНА
+МИЛАНОВИЋ МИЛЕНКО
+МИЛАНОВИЋ МИЛЕНКО
+МИЛАНОВИЋ МИЛИЈА
+МИЛАНОВИЋ МИЛИСАВ
+МИЛАНОВИЋ МИЛИСАВ
+МИЛАНОВИЋ МИЛОЈЕ
+МИЛАНОВИЋ МИЛОРАД
+МИЛАНОВИЋ МИЛОРАД
+МИЛАНОВИЋ МИОДРАГ
+МИЛАНОВИЋ МЛАДЕН
+МИЛАНОВИЋ НАДА
+МИЛАНОВИЋ-ПЕТРАШЕВИЋ ДРАГИЦА
+МИЛАНОВИЋ РАДОСЛАВ
+МИЛАНОВИЋ РАДОВАН
+МИЛАНОВИЋ САША
+МИЛАНОВИЋ СЛАВОЉУБ
+МИЛАНОВИЋ СЛОБОДАН
+МИЛАНОВИЋ СВЕТОМИР
+МИЛАНОВИЋ ВИКТОРИЈА
+МИЛАНОВИЋ ВИТКО
+МИЛАНОВИЋ ВЛАДИМИР
+МИЛАНОВИЋ ВЛАДИМИР
+МИЛАНОВИЋ ВУЈО
+МИЛАНОВИЋ ЗОРАН
+МИЛАНОВИЋ ЗОРАН
+МИЛАНОВИЋ ЗОРА
+МИЛАНОВИЋ ЗОРКА
+МИЛАРИЋ ИВАН
+МИЛАТОВИЋ ДАНИЛО
+МИЛАТОВИЋ ЈОВАНКА
+МИЛАТОВИЋ ВЛАДИМИР
+МИЛЕШЕВ МИЛИЦА
+МИЛЕШЕВИЋ ОБРАД
+МИЛЕЦ ДОРОТЕА
+МИЛЕЦ ИЛОНКА
+МИЛЕИ ДРАГУТИН
+МИЛЕИ ЈАНОШ
+МИЛЕИ ТОМИСЛАВ
+МИЛЕКШИЋ БОГДАН
+МИЛЕКИЋ ДУШАН
+МИЛЕКИЋ МИЛОМИР
+МИЛЕКИЋ НИКОЛА
+МИЛЕКИЋ СТЕВАН
+МИЛЕКИЋ УРОШ
+МИЛЕНКОВИЋ ЖАРКО
+МИЛЕНКОВИЋ ЖИВОЈИН
+МИЛЕНКОВИЋ ЂОРЂЕ
+МИЛЕНКОВИЋ ЂУРЂИНА
+МИЛЕНКОВИЋ АЛЕКСАНДАР
+МИЛЕНКОВИЋ-АНТИЋ ЛАЗАР
+МИЛЕНКОВИЋ-БЈЕЛАЈАЦ МИЛАНКА
+МИЛЕНКОВИЋ БОЖИДАР
+МИЛЕНКОВИЋ БОГОМИР
+МИЛЕНКОВИЋ БОРИВОЈЕ
+МИЛЕНКОВИЋ БРАНИСЛАВ
+МИЛЕНКОВИЋ БРАНИСЛАВ
+МИЛЕНКОВИЋ БРАНКО
+МИЛЕНКОВИЋ БРАТИСЛАВ
+МИЛЕНКОВИЋ БРАТИСЛАВ
+МИЛЕНКОВИЋ ДАРИНКА
+МИЛЕНКОВИЋ ДОБРИЛА
+МИЛЕНКОВИЋ ДОБРИЛА
+МИЛЕНКОВИЋ ДОБРИВОЈЕ
+МИЛЕНКОВИЋ ДРАГАН ДР
+МИЛЕНКОВИЋ ДРАГОШ
+МИЛЕНКОВИЋ ДРАГОЉУБ ДР
+МИЛЕНКОВИЋ ДРАГОСЛАВ
+МИЛЕНКОВИЋ ДРАГОСЛАВ
+МИЛЕНКОВИЋ ДУШАН
+МИЛЕНКОВИЋ ДУШАН
+МИЛЕНКОВИЋ ЕРЖИКА
+МИЛЕНКОВИЋ ГРОЗДАНА
+МИЛЕНКОВИЋ ИЛОНКА
+МИЛЕНКОВИЋ ИРЕНА
+МИЛЕНКОВИЋ ЈЕЛИЦА
+МИЛЕНКОВИЋ ЈЕВТО
+МИЛЕНКОВИЋ ЈУГОСЛАВ
+МИЛЕНКОВИЋ ЈУСТИНА
+МИЛЕНКОВИЋ КОВИЉКА
+МИЛЕНКОВИЋ КРСТАНА
+МИЛЕНКОВИЋ ЉИЉАНА
+МИЛЕНКОВИЋ ЉИЉАНА
+МИЛЕНКОВИЋ МИЛИЈАН
+МИЛЕНКОВИЋ МИЛИСАВ
+МИЛЕНКОВИЋ МИЛОРАД
+МИЛЕНКОВИЋ МИЛОРАД
+МИЛЕНКОВИЋ МИЛОСАВ
+МИЛЕНКОВИЋ МИЛУТИН
+МИЛЕНКОВИЋ МИОДРАГ
+МИЛЕНКОВИЋ МИРОСЛАВ
+МИЛЕНКОВИЋ МИРОСЛАВ
+МИЛЕНКОВИЋ МОМЧИЛО
+МИЛЕНКОВИЋ НЕБОЈША
+МИЛЕНКОВИЋ НЕНАД
+МИЛЕНКОВИЋ НИЋИФОР
+МИЛЕНКОВИЋ ПАУН
+МИЛЕНКОВИЋ ПРЕДРАГ
+МИЛЕНКОВИЋ РАДИСАВ
+МИЛЕНКОВИЋ РАДОМИР
+МИЛЕНКОВИЋ РАДОСЛАВ
+МИЛЕНКОВИЋ РАДОВАН
+МИЛЕНКОВИЋ САВА
+МИЛЕНКОВИЋ СЛАВОЉУБ
+МИЛЕНКОВИЋ СНЕЖАНА
+МИЛЕНКОВИЋ СРЕТЕН
+МИЛЕНКОВИЋ СТОЈАНКА
+МИЛЕНКОВИЋ СВЕТИСЛАВ
+МИЛЕНКОВИЋ СВЕТОМИР
+МИЛЕНКОВИЋ ТИХОМИР
+МИЛЕНКОВИЋ ВЕСЕЛИНКА
+МИЛЕНКОВИЋ ВИТОМИР
+МИЛЕНКОВИЋ ВЛАДАН
+МИЛЕНКОВИЋ ЗОРИЦА
+МИЛЕНКОВИЋ ЗОРКА
+МИЛЕНКОВСКИ БЛАГОЈЕ
+МИЛЕНКОВСКИ МИЛИЦА
+МИЛЕНОВИЋ ЖИВА
+МИЛЕНОВИЋ-БЕКИЋ МИРЈАНА
+МИЛЕНОВИЋ БРАНКО
+МИЛЕНОВИЋ МИЛОРАД
+МИЛЕНОВИЋ ОЛГА
+МИЛЕНОВИЋ ПРЕДРАГ
+МИЛЕНТИЈЕВИЋ ЖИВОРАД
+МИЛЕНТИЈЕВИЋ ЗДРАВКО
+МИЛЕР БАРБАРА
+МИЛЕР ЕРЖЕБЕТ
+МИЛЕР ФРАЊА
+МИЛЕР ИМРЕ ДР ЛЕКАР
+МИЛЕР ИВАНКА
+МИЛЕР ЈЕЛЕНА
+МИЛЕР ЈЕЛИЦА
+МИЛЕР КАРЛО
+МИЛЕР МАРИЈА
+МИЛЕР МИХАЈЛО
+МИЛЕР ОТОКАР
+МИЛЕР ЗЛАТКО
+МИЛЕСКИ АТАНАСИЈЕ
+МИЛЕТА НИКОЛА
+МИЛЕТАШКИ БОРИВОЈ
+МИЛЕТАШКИ МИЛЕ
+МИЛЕТИЋ ЖИВКО
+МИЛЕТИЋ ЖИВОТА
+МИЛЕТИЋ ЂОРЂЕ
+МИЛЕТИЋ АЛЕКСАНДРА
+МИЛЕТИЋ АНА
+МИЛЕТИЋ БОЖА
+МИЛЕТИЋ БОРИША
+МИЛЕТИЋ БРАНИСЛАВ
+МИЛЕТИЋ ДОБРОСАВ
+МИЛЕТИЋ ДРАГИЦА
+МИЛЕТИЋ ДУШАН
+МИЛЕТИЋ ДУШАН
+МИЛЕТИЋ ДУШАН
+МИЛЕТИЋ ГОЈКО
+МИЛЕТИЋ ГВОЗДЕН
+МИЛЕТИЋ ИЛИЈА
+МИЛЕТИЋ ИВИЦА
+МИЛЕТИЋ ЉУБИЦА
+МИЛЕТИЋ ЉУБИСАВ
+МИЛЕТИЋ МИЛИЦА
+МИЛЕТИЋ МИЛИВОЈ
+МИЛЕТИЋ МИЛОЈЕ
+МИЛЕТИЋ МИТА
+МИЛЕТИЋ НАДА
+МИЛЕТИЋ НИКОЛА
+МИЛЕТИЋ ОЛГА
+МИЛЕТИЋ ПЕТАР
+МИЛЕТИЋ РАДЕ
+МИЛЕТИЋ РАДОШ
+МИЛЕТИЋ РАДОЈКА
+МИЛЕТИЋ РАДОСЛАВ
+МИЛЕТИЋ РАНКО
+МИЛЕТИЋ СЕВЕРИНА
+МИЛЕТИЋ СЛАВКО ДР ЛЕКАР
+МИЛЕТИЋ СЛАВКО
+МИЛЕТИЋ СЛАВОЉУБ
+МИЛЕТИЋ СЛОБОДАН
+МИЛЕТИЋ СЛОБОДАН
+МИЛЕТИЋ СОЊА
+МИЛЕТИЋ СТЕВАН
+МИЛЕТИЋ ВЕЛЕ
+МИЛЕТИЋ ВЕЛИБОР
+МИЛЕТИЋ ВЕЛИБОР
+МИЛЕТИЋ ВЕЛИМИР
+МИЛЕТИЋ ВИДОСАВА
+МИЛЕТИЋ ЗДРАВКО
+МИЛЕТИЦКИ РАДА
+МИЛЕТИЦКИ ЗОРКА
+МИЛЕТИН ДАНА
+МИЛЕТИН МИРЈАНА
+МИЛЕТИН НИКОЛА
+МИЛЕТИН РАДИВОЈ
+МИЛЕТИН СВЕТОЗАР ДИПЛ ОЕЦ
+МИЛЕТОВИЋ СЛАВКО
+МИЛЕУСНИЋ ДРАГАН
+МИЛЕУСНИЋ МАРКО
+МИЛЕУСНИЋ НАДА
+МИЛЕУСНИЋ НАДА
+МИЛЕУСНИЋ ПЕТАР
+МИЛЕВ ПЕТАР
+МИЛЕВСКИ ЂОРЂЕ
+МИЛХАНС СТАНИСЛАВ
+МИЛИЧЕВИЋ ЂУРА
+МИЛИЧЕВИЋ АРАНКА
+МИЛИЧЕВИЋ БРАНКО
+МИЛИЧЕВИЋ ДРАГИЊА
+МИЛИЧЕВИЋ ДУШАН
+МИЛИЧЕВИЋ ЈОВАН
+МИЛИЧЕВИЋ КАТИЦА
+МИЛИЧЕВИЋ МИЛАН
+МИЛИЧЕВИЋ МИЛЕНКО
+МИЛИЧЕВИЋ МИЛИЦА
+МИЛИЧЕВИЋ МИЛИВОЈ
+МИЛИЧЕВИЋ МИЛКАН
+МИЛИЧЕВИЋ МЛАДЕН
+МИЛИЧЕВИЋ НЕНАД
+МИЛИЧЕВИЋ НОВИЦА
+МИЛИЧЕВИЋ ПАВА
+МИЛИЧЕВИЋ ПЕРО
+МИЛИЧЕВИЋ СТАНИМИР
+МИЛИЧЕВИЋ СТЕВАН
+МИЛИЧЕВИЋ ТОМИСЛАВ
+МИЛИЧИЋ ЖАРКО
+МИЛИЧИЋ АЛЕКСАНДАР
+МИЛИЧИЋ АНА
+МИЛИЧИЋ АНДРИЈА
+МИЛИЧИЋ АНКА
+МИЛИЧИЋ БОРИСЛАВ
+МИЛИЧИЋ БРАНКО
+МИЛИЧИЋ ДРАГИЦА
+МИЛИЧИЋ ДРАГОМИР
+МИЛИЧИЋ ДУШАН
+МИЛИЧИЋ ЈЕЛИЦА
+МИЛИЧИЋ ЈОВАНКА
+МИЛИЧИЋ ЈОВАН
+МИЛИЧИЋ КАТИЦА
+МИЛИЧИЋ ЉУБИНКА
+МИЛИЧИЋ МАРИНКО
+МИЛИЧИЋ МИХАЈЛО
+МИЛИЧИЋ МИЛОШ
+МИЛИЧИЋ МИРЈАНА
+МИЛИЧИЋ РАДОВАН
+МИЛИЧИЋ РАЈКО
+МИЛИЧИЋ СТЕВАН
+МИЛИЧИЋ ТИЛКА
+МИЛИЧИЋ ВАСА
+МИЛИШИЋ ЂОРЂЕ
+МИЛИШИЋ ДУШАНКА
+МИЛИШИЋ НЕБОЈША
+МИЛИЋ ЧЕДОМИР
+МИЛИЋ ЧЕДОМИР
+МИЛИЋ ЖИКА
+МИЛИЋ ЖИВКО
+МИЛИЋ ЖИВОМИР
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂОРЂЕ
+МИЛИЋ ЂУРИЦА
+МИЛИЋ АДИЛА
+МИЛИЋ АЛЕКСАНДАР
+МИЛИЋ АЛЕКСАНДРА
+МИЛИЋ АНЂЕЛИЈА
+МИЛИЋ БОЖИДАР ДР
+МИЛИЋ БОЖИДАР
+МИЛИЋ БОЖО
+МИЛИЋ БОГДАН
+МИЛИЋ БОЈАНА
+МИЛИЋ БОРИВОЈЕ
+МИЛИЋ БОРИВОЈ
+МИЛИЋ БРАНИСЛАВ
+МИЛИЋ БРАНИСЛАВ
+МИЛИЋ БРАНИСЛАВ
+МИЛИЋ БРАНКА
+МИЛИЋ БРАНКО
+МИЛИЋ БРАНКО
+МИЛИЋ БРАТИСЛАВ
+МИЛИЋ ДАНИЦА
+МИЛИЋ ДАНИЛКА
+МИЛИЋ ДАНИЛКА
+МИЛИЋ ДАНИЛО
+МИЛИЋ ДАРА
+МИЛИЋ ДРАГАН
+МИЛИЋ ДРАГАН
+МИЛИЋ ДРАГАН
+МИЛИЋ ДРАГИЦА
+МИЛИЋ ДРАГИЦА
+МИЛИЋ ДРАГОМИР
+МИЛИЋ ДРАГОМИР
+МИЛИЋ ДРАГОСЛАВ
+МИЛИЋ ДУШАНКА
+МИЛИЋ ДУШАНКА
+МИЛИЋ ДУШАН
+МИЛИЋ ДУШАН
+МИЛИЋ ДУШАН
+МИЛИЋ ДУШАН
+МИЛИЋ ЕЛИЗАБЕТА
+МИЛИЋ ЕМИЛИЈА
+МИЛИЋ ЕМИЛИЈА
+МИЛИЋ ЕВА
+МИЛИЋ ЕВА
+МИЛИЋ ЕВИЦА
+МИЛИЋ ФЕРЕНЦ
+МИЛИЋ ГАВРА
+МИЛИЋ ИЛИЈА
+МИЛИЋ-ЈАГОДИНСКИ МИЛАН
+МИЛИЋ ЈАНКО
+МИЛИЋ ЈЕЛЕНА
+МИЛИЋ ЈЕЛИЦА
+МИЛИЋ ЈЕЛКА
+МИЛИЋ ЈОВАН
+МИЛИЋ ЈОВАН
+МИЛИЋ ЈОВАН
+МИЛИЋ ЈОВА
+МИЛИЋ ЈОВО
+МИЛИЋ ЈОВО
+МИЛИЋ ЈУЛКА
+МИЛИЋ КАТИЦА
+МИЛИЋ КРСТО
+МИЛИЋ КСЕНИЈА
+МИЛИЋ ЛАЗАР
+МИЛИЋ ЉИЉАНА
+МИЛИЋ ЉУБИША
+МИЛИЋ ЉУБИЦА
+МИЛИЋ ЉУБОМИР ДИПЛ ИНГ
+МИЛИЋ ЉУБОМИР
+МИЛИЋ ЉУБОМИР
+МИЛИЋ ЉУБОМИР
+МИЛИЋ МАРА
+МИЛИЋ МАРИЈА
+МИЛИЋ МАРИЈА
+МИЛИЋ МАРИЈА
+МИЛИЋ МИЛАНКА
+МИЛИЋ МИЛАН
+МИЛИЋ МИЛЕНКО
+МИЛИЋ МИЛИЦА
+МИЛИЋ МИЛИЦА
+МИЛИЋ МИЛОШ
+МИЛИЋ МИЛОШ
+МИЛИЋ МИЛОРАД
+МИЛИЋ МИЛОСАВ
+МИЛИЋ МИЛУТИН
+МИЛИЋ МИОДРАГ
+МИЛИЋ МИРЈАНА ДИПЛ ОЕЦ
+МИЛИЋ МИРЈАНА
+МИЛИЋ МИРОСЛАВ
+МИЛИЋ МИТА
+МИЛИЋ МЛАДЕН
+МИЛИЋ НАДА
+МИЛИЋ НЕДЕЉКО
+МИЛИЋ НИКОЛА
+МИЛИЋ НИКОЛА
+МИЛИЋ НОВАК
+МИЛИЋ НОВАК
+МИЛИЋ ПАНТА
+МИЛИЋ ПАВЛЕ
+МИЛИЋ ПЕРА
+МИЛИЋ ПЕТАР
+МИЛИЋ ПЕТАР
+МИЛИЋ ПРОКА
+МИЛИЋ РАДА
+МИЛИЋ РАДЕ
+МИЛИЋ РАДИВОЈЕ
+МИЛИЋ РАДМИЛА
+МИЛИЋ РАДОЈКА
+МИЛИЋ РАДОМИР
+МИЛИЋ РАНКО
+МИЛИЋ РУЖА
+МИЛИЋ САНДРА
+МИЛИЋ САВА
+МИЛИЋ СЛАВИЦА
+МИЛИЋ СЛАВИЦА
+МИЛИЋ СЛАВКА
+МИЛИЋ СЛАВКО
+МИЛИЋ СЛАВУЈ
+МИЛИЋ СОФИЈА
+МИЛИЋ СТЕВАН
+МИЛИЋ СТЕВАН
+МИЛИЋ СТЕВАН
+МИЛИЋ СВЕТЛАНА
+МИЛИЋ СВЕТОЗАР
+МИЛИЋ СВЕТОЗАР
+МИЛИЋ ТЕОДОРА
+МИЛИЋ ТОДОР
+МИЛИЋ ТОДОР
+МИЛИЋ ТОМИСЛАВ
+МИЛИЋ ТОМИСЛАВ
+МИЛИЋ УРОШ
+МИЛИЋ ВАСА
+МИЛИЋ ВЕЛИНКА
+МИЛИЋ ВЕРА
+МИЛИЋ ВЕРА
+МИЛИЋ ВЕРИЦА
+МИЛИЋ ВЛАДИЦА
+МИЛИЋ ВЛАДО
+МИЛИЋ ВУКИЦА
+МИЛИЋ ЗДРАВКО
+МИЛИЋ ЗОРАН
+МИЛИЋ ЗОРАН
+МИЛИЋ ЗОРАН
+МИЛИЋ ЗОРА
+МИЛИЋЕВ БОРИСЛАВ
+МИЛИЋЕВ БРАНКО
+МИЛИЋЕВ СЛАВКО
+МИЛИЋЕВ ВАСИЛИЈЕ
+МИЛИЋЕВ ВИКЕНТИЈЕ
+МИЛИЋЕВИЋ ЖИВОРАД
+МИЛИЋЕВИЋ ЂОРЂЕ
+МИЛИЋЕВИЋ ЂОРЂЕ
+МИЛИЋЕВИЋ ЂУРАЂ
+МИЛИЋЕВИЋ БОЖИДАР
+МИЛИЋЕВИЋ БОРИША
+МИЛИЋЕВИЋ БРАНКО
+МИЛИЋЕВИЋ ДРАГАН
+МИЛИЋЕВИЋ ДУШАН
+МИЛИЋЕВИЋ ДУШАН
+МИЛИЋЕВИЋ ГОЈКО
+МИЛИЋЕВИЋ ГОРДАНА
+МИЛИЋЕВИЋ КАТАРИНА
+МИЛИЋЕВИЋ КАТИЦА
+МИЛИЋЕВИЋ КСЕНИЈА ДР СТОМАТОЛОГ
+МИЛИЋЕВИЋ ЉУБОМИР
+МИЛИЋЕВИЋ МАРКО
+МИЛИЋЕВИЋ МИХАИЛО
+МИЛИЋЕВИЋ МИЛИЦА
+МИЛИЋЕВИЋ МИЛОРАД
+МИЛИЋЕВИЋ МИЛОВАН
+МИЛИЋЕВИЋ МИОДРАГ
+МИЛИЋЕВИЋ МИОДРАГ
+МИЛИЋЕВИЋ МОМЧИЛО
+МИЛИЋЕВИЋ МОМЧИЛО
+МИЛИЋЕВИЋ НАТАША
+МИЛИЋЕВИЋ НИКОЛА
+МИЛИЋЕВИЋ ПАВЛЕ
+МИЛИЋЕВИЋ ПЕТАР
+МИЛИЋЕВИЋ РАДМИЛА
+МИЛИЋЕВИЋ РАЈКО
+МИЛИЋЕВИЋ СЛАЂАНА
+МИЛИЋЕВИЋ СЛАВИЦА
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СЛОБОДАН
+МИЛИЋЕВИЋ СПАСО
+МИЛИЋЕВИЋ СТАНА
+МИЛИЋЕВИЋ СТЕВАН
+МИЛИЋЕВИЋ СТЕВАН
+МИЛИЋЕВИЋ СВЕТИСЛАВ
+МИЛИЋЕВИЋ ВЕЛИША
+МИЛИЋЕВИЋ ВЕРОЉУБ
+МИЛИЋЕВИЋ ВИТОМИР
+МИЛИЋЕВИЋ ВЛАДИМИР
+МИЛИЋЕВИЋ ВУКОМИР
+МИЛИЦ КАРОЉ
+МИЛИДРАГ КРСТО
+МИЛИДРАГОВИЋ БОРИСЛАВ
+МИЛИДРАГОВИЋ ЛАЗАР
+МИЛИДРАГОВИЋ МИЛИВОЈЕ
+МИЛИДРАГОВИЋ МИЛОРАД ДИПЛ ИНГ
+МИЛИДРАГОВИЋ МЛАДЕН
+МИЛИДРАГОВИЋ НЕДЕЉКО
+МИЛИДРАГОВИЋ СЛОБОДАН
+МИЛИЈАШ-ПАВКОВИЋ МАРИЈА
+МИЛИЈАШЕВИЋ ЖИВОРАД
+МИЛИЈАШЕВИЋ БОШКО
+МИЛИЈАШЕВИЋ МИЛАН
+МИЛИЈАНОВИЋ ЂОРЂЕ
+МИЛИЈАНОВИЋ МИЛАН
+МИЛИЈЕВИЋ ЂУРАЂ
+МИЛИКИЋ ДРАГОЈЕ
+МИЛИКИЋ СИМА
+МИЛИН ЖИВАН
+МИЛИН БРАНИСЛАВ
+МИЛИН ДУШАН
+МИЛИН ДУШАН
+МИЛИН ИВАН
+МИЛИН ЈОВАН
+МИЛИН МИЛЕНКО
+МИЛИН МИЛИЦА
+МИЛИН МОМИР
+МИЛИН РАДИВОЈ ДР
+МИЛИН РАДИВОЈ
+МИЛИН СНЕЖАНА
+МИЛИН СТЕВАН
+МИЛИН СВЕТИСЛАВ
+МИЛИН ВОЈИСЛАВ НОВИНАР
+МИЛИН ЗДРАВКО ДИПЛ ИНГ
+МИЛИН ЗОРИЦА
+МИЛИНЧИЋ ЧАСЛАВ
+МИЛИНЧИЋ СТОЈАН
+МИЛИНИЋ РАДЕНКО
+МИЛИНИЋ РАЈКО
+МИЛИНКОВ ЖИВАН
+МИЛИНКОВ ЖИВОЈИН
+МИЛИНКОВ АНЂЕЛКА
+МИЛИНКОВ БОЖА
+МИЛИНКОВ БРАНИСЛАВ
+МИЛИНКОВ БРАНИСЛАВ
+МИЛИНКОВ БРАНКО
+МИЛИНКОВ ДАНИЛО
+МИЛИНКОВ ДУШАН
+МИЛИНКОВ ИВАН
+МИЛИНКОВ ЈУЛКА
+МИЛИНКОВ ЛАЗАР
+МИЛИНКОВ ЉУБИЦА
+МИЛИНКОВ МИЛАН
+МИЛИНКОВ МИЛИЦА
+МИЛИНКОВ НЕНАД
+МИЛИНКОВ НЕНАД
+МИЛИНКОВ НИКОЛА
+МИЛИНКОВ СЛОБОДАН
+МИЛИНКОВ ВЕРА
+МИЛИНКОВ ВЕСЕЛИН
+МИЛИНКОВ ВЛАЈКО
+МИЛИНКОВ ЗОРАН
+МИЛИНКОВИЋ ЂОРЂЕ
+МИЛИНКОВИЋ ЂОРЂЕ
+МИЛИНКОВИЋ ЂОРЂЕ
+МИЛИНКОВИЋ ЂУРО
+МИЛИНКОВИЋ БИЉАНА
+МИЛИНКОВИЋ БОЈО
+МИЛИНКОВИЋ БУДИМИР
+МИЛИНКОВИЋ ДРАГАН
+МИЛИНКОВИЋ ДРАГОСЛАВ
+МИЛИНКОВИЋ ДУШАН
+МИЛИНКОВИЋ ДУШАН
+МИЛИНКОВИЋ ДУШАН
+МИЛИНКОВИЋ ДУШАН
+МИЛИНКОВИЋ ЕТЕЛКА
+МИЛИНКОВИЋ ИВАН
+МИЛИНКОВИЋ ИВАН
+МИЛИНКОВИЋ ИВАН
+МИЛИНКОВИЋ ИВАН
+МИЛИНКОВИЋ ЈОВАН
+МИЛИНКОВИЋ ЈОВИЦА
+МИЛИНКОВИЋ ЉИЉАНА
+МИЛИНКОВИЋ МАРА
+МИЛИНКОВИЋ МИЛАН
+МИЛИНКОВИЋ МИЛЕНА
+МИЛИНКОВИЋ МИЛИЋ
+МИЛИНКОВИЋ МИЛОРАД
+МИЛИНКОВИЋ НАДЕЖДА
+МИЛИНКОВИЋ НОВАК
+МИЛИНКОВИЋ ПАНТА
+МИЛИНКОВИЋ ПЕТАР
+МИЛИНКОВИЋ СЛАВКО
+МИЛИНКОВИЋ СЛОБОДАН
+МИЛИНКОВИЋ СЛОБОДАН
+МИЛИНКОВИЋ СЛОБОДАН
+МИЛИНКОВИЋ СМИЉКА
+МИЛИНКОВИЋ СРЕТО
+МИЛИНКОВИЋ ВИДА
+МИЛИНКОВИЋ ВЛАДИСЛАВ
+МИЛИНКОВИЋ ВОЈА
+МИЛИНОВ ГАВРА
+МИЛИНОВ ЈЕЛЕНКО
+МИЛИНОВ МИЛОРАД
+МИЛИНОВ МИРЈАНА
+МИЛИНОВ МИРОСЛАВ
+МИЛИНОВ НЕВЕНА
+МИЛИНОВ НИКОЛА
+МИЛИНОВ РАДИВОЈ
+МИЛИНОВ СЛАВКО
+МИЛИНОВ СТЕВАН
+МИЛИНОВ СВЕТИСЛАВ
+МИЛИНОВИЋ ЖАРКО
+МИЛИНОВИЋ БОЖИДАР
+МИЛИНОВИЋ БОГОЉУБ
+МИЛИНОВИЋ ДРАГАН
+МИЛИНОВИЋ ДРАГАН
+МИЛИНОВИЋ КСЕНИЈА
+МИЛИНОВИЋ ЛАЗО
+МИЛИНОВИЋ ЉУБОМИР
+МИЛИНОВИЋ ЉУБОМИР
+МИЛИНОВИЋ МИХАЈЛО
+МИЛИНОВИЋ МИРОСЛАВ
+МИЛИНОВИЋ НИКОЛА
+МИЛИНОВИЋ ПЕТАР
+МИЛИНОВИЋ ПЕТАР
+МИЛИНОВИЋ РАДОМИР
+МИЛИНОВИЋ САВА
+МИЛИНОВИЋ СЛОБОДАН
+МИЛИНОВИЋ СТЕВАН
+МИЛИНОВИЋ СТЕВА
+МИЛИНОВИЋ ТИМА
+МИЛИНОВИЋ ВЈЕКОСЛАВ
+МИЛИНСКИ АЛЕКСАНДАР
+МИЛИНСКИ АРПАД
+МИЛИНСКИ ЕРЖЕБЕТ
+МИЛИНСКИ ГАБОР
+МИЛИНСКИ ГОРДАНА
+МИЛИНСКИ ЈЕЛЕНА
+МИЛИНСКИ ЈЕЛЕНА
+МИЛИНСКИ ЛАДИСЛАВ
+МИЛИНСКИ МИХАИЛО
+МИЛИНСКИ НИКОЛА
+МИЛИНСКИ ТЕОДОР
+МИЛИНСКИ ВИКТОР
+МИЛИНСКИ ВИКТОР
+МИЛИНСКИ ЗОЛТАН
+МИЛИСАВАЦ ЖИВАН
+МИЛИСАВЉЕВИЋ ДРАГОМИР
+МИЛИСАВЉЕВИЋ ДРАГОСЛАВ ДР ПРОФ
+МИЛИСАВЉЕВИЋ ЈОВАН
+МИЛИСАВЉЕВИЋ ЈУЛИЈАНА
+МИЛИСАВЉЕВИЋ МИЛАДИН
+МИЛИСАВЉЕВИЋ МИЛАН
+МИЛИСАВЉЕВИЋ МИЛОРАД
+МИЛИСАВЉЕВИЋ МИРЧЕТА
+МИЛИСАВЉЕВИЋ СТАНИМИР
+МИЛИСАВЉЕВИЋ СТАНИМИР
+МИЛИСАВЉЕВИЋ ВЛАДИМИР
+МИЛИВОЈЧЕВ БОРИСЛАВ
+МИЛИВОЈЧЕВ СТЕВАН
+МИЛИВОЈЧЕВИЋ АЛЕКСАНДАР
+МИЛИВОЈША ЛАЗАР
+МИЛИВОЈШИН ЈОВАН
+МИЛИВОЈШИН ПАЈА
+МИЛИВОЈЕВ АНИЦА
+МИЛИВОЈЕВ БОРИВОЈ
+МИЛИВОЈЕВ ГРАДОЈЕ
+МИЛИВОЈЕВ ЈОВАНКА
+МИЛИВОЈЕВ КОНСТАНТИН
+МИЛИВОЈЕВ ЛУКА
+МИЛИВОЈЕВ МИХАЈЛО
+МИЛИВОЈЕВ МИЛАНА
+МИЛИВОЈЕВ МИЛАН
+МИЛИВОЈЕВ МИЛАН
+МИЛИВОЈЕВ МИЛОШ
+МИЛИВОЈЕВ МЛАДЕН
+МИЛИВОЈЕВ НАДА
+МИЛИВОЈЕВ ПАВЛЕ
+МИЛИВОЈЕВ СОФИЈА
+МИЛИВОЈЕВ СОФИЈА
+МИЛИВОЈЕВ СОФИЈА
+МИЛИВОЈЕВИЋ ЧЕДОМИР
+МИЛИВОЈЕВИЋ ЖИВКА
+МИЛИВОЈЕВИЋ ЂОРЂЕ
+МИЛИВОЈЕВИЋ ЂОРЂЕ
+МИЛИВОЈЕВИЋ ЂОРЂЕ
+МИЛИВОЈЕВИЋ БИЉАНА
+МИЛИВОЈЕВИЋ БОШКО
+МИЛИВОЈЕВИЋ БРАНКО
+МИЛИВОЈЕВИЋ БУДИМИР
+МИЛИВОЈЕВИЋ БУДИСЛАВ
+МИЛИВОЈЕВИЋ ДРАГАН
+МИЛИВОЈЕВИЋ ДРАГАН
+МИЛИВОЈЕВИЋ ДУШАН
+МИЛИВОЈЕВИЋ ДУШАН
+МИЛИВОЈЕВИЋ ИЛИЈА
+МИЛИВОЈЕВИЋ ЈАГОДА
+МИЛИВОЈЕВИЋ ЈЕЛЕНА
+МИЛИВОЈЕВИЋ ЈОВАН
+МИЛИВОЈЕВИЋ ЈОВАН
+МИЛИВОЈЕВИЋ МАРИНА
+МИЛИВОЈЕВИЋ МИЛАН
+МИЛИВОЈЕВИЋ МИЛЕНА
+МИЛИВОЈЕВИЋ МИЛОМИР
+МИЛИВОЈЕВИЋ МИЛОРАД
+МИЛИВОЈЕВИЋ МИЛОВАН
+МИЛИВОЈЕВИЋ МИРЈАНА
+МИЛИВОЈЕВИЋ МИРКО
+МИЛИВОЈЕВИЋ МИРОСЛАВ
+МИЛИВОЈЕВИЋ МОМЧИЛО
+МИЛИВОЈЕВИЋ РАДОЈЕ
+МИЛИВОЈЕВИЋ РАДОСЛАВ
+МИЛИВОЈЕВИЋ САВО
+МИЛИВОЈЕВИЋ СЛАВКО
+МИЛИВОЈЕВИЋ СЛАВНА
+МИЛИВОЈЕВИЋ СТОЈАНКА
+МИЛИВОЈЕВИЋ ВЛАДИМИР
+МИЛИВОЈЕВИЋ ВЛАСТИМИР
+МИЛИВОЈЕВИЋ ВОЈА
+МИЛИВОЈЕВИЋ ВОЈИСЛАВ
+МИЛИВОЈЕВИЋ ВУЧО
+МИЛИВОЈЕВИЋ ЗДРАВКО
+МИЛИВОЈЕВИЋ ЗОРА
+МИЉАКОВИЋ МИЛАН
+МИЉАНИЋ ЖИВКА
+МИЉАНИЋ ДРАГАН
+МИЉАНИЋ ДУШАН
+МИЉАНИЋ ЈОВАН
+МИЉАНИЋ МАРКО
+МИЉАНИЋ НОВАК
+МИЉАНИЋ ОБРАД
+МИЉАНИЋ РАДИВОЈЕ
+МИЉАНИЋ РАДОСЛАВ
+МИЛЈАНИЋ СЛОБОДАН
+МИЉАНИЋ СЛОБОДАН
+МИЉАНИЋ СТАНКО
+МИЉАНИЋ ВУКОТА
+МИЉАНОВИЋ ЖЕЉКО
+МИЉАНОВИЋ АДАМ
+МИЉАНОВИЋ БРАНКО
+МИЉАНОВИЋ ДУШАН
+МИЉАНОВИЋ ДУШИЦА
+МИЉАНОВИЋ МИЛКА
+МИЉАНОВИЋ ПРЕДРАГ
+МИЉАНОВИЋ СТАНКО
+МИЉАНОВИЋ ВИЛМА
+МИЉАНСКИ БОШКО
+МИЉАНСКИ ЛАЗАР
+МИЉАНСКИ ЗОРИЦА
+МИЉАНСКИ ЗОРИЦА
+МИЉАТОВИЋ ЂОРЂЕ
+МИЉАТОВИЋ МАРИЦА
+МИЉАТОВИЋ МИЛАН
+МИЉАТОВИЋ МИЛУТИН
+МИЉАТОВИЋ ВЕРА
+МИЉЕШИЋ НЕНАД
+МИЉЕНОВИЋ СЛОБОДАН
+МИЉЕВИЋ ЖИВКО
+МИЉЕВИЋ АДАМ
+МИЉЕВИЋ АНКА
+МИЉЕВИЋ БОГДАН ДИПЛ ИНГ
+МИЉЕВИЋ ДРАГОЉУБ
+МИЉЕВИЋ ДУШАН
+МИЉЕВИЋ ГАВРИЛО
+МИЉЕВИЋ ЈАЊА
+МИЉЕВИЋ ЈОВАН
+МИЉЕВИЋ ЈОВО
+МИЉЕВИЋ ЛАЗАР
+МИЉЕВИЋ ЉУБИЦА
+МИЉЕВИЋ ЉУБИНКО
+МИЉЕВИЋ МАРИНКО
+МИЉЕВИЋ МИЛОРАД
+МИЉЕВИЋ НАТАША
+МИЉЕВИЋ НЕДЕЉКО
+МИЉЕВИЋ ОБРАД
+МИЉЕВИЋ РАДОЈКА
+МИЉЕВИЋ СТЕВАН
+МИЉЕВИЋ ВЕРИЦА
+МИЉЕВИЋ ВЕРИЦА
+МИЉЕВИЋ ВИНКО
+МИЉИЋ СЛАВКО
+МИЉКОВ ЂУРИЦА
+МИЉКОВАЦ БОГОСАВ
+МИЉКОВАЦ ДРАГОМИР
+МИЉКОВАЦ ПЕТАР
+МИЉКОВАЦ РАДОВАН
+МИЉКОВАЦ ТАТЈАНА
+МИЉКОВИЋ ЧЕДОМИР
+МИЉКОВИЋ ЖИВАН
+МИЉКОВИЋ БОШКО
+МИЉКОВИЋ БОРИСЛАВ
+МИЉКОВИЋ БОСИЉКА
+МИЉКОВИЋ ДОБРИЛО
+МИЉКОВИЋ ДРАГАН
+МИЉКОВИЋ ДРАГИША
+МИЉКОВИЋ ДРАГУТИН
+МИЉКОВИЋ ДУШАН
+МИЉКОВИЋ ДУШАН
+МИЉКОВИЋ ЛЕНКЕ
+МИЉКОВИЋ ЉИЉАНА
+МИЉКОВИЋ ЉУБИША
+МИЉКОВИЋ ЉУБИЦА
+МИЉКОВИЋ ЉУПЧЕ
+МИЉКОВИЋ МАРА
+МИЉКОВИЋ МИЋА
+МИЉКОВИЋ МИЛИЦА
+МИЉКОВИЋ МИЛИЦА
+МИЉКОВИЋ МИЛОШ
+МИЉКОВИЋ МИОДРАГ
+МИЉКОВИЋ МИРА
+МИЉКОВИЋ МИРЈАНА
+МИЉКОВИЋ МИРЈАНА
+МИЉКОВИЋ МИТА
+МИЉКОВИЋ МЛАДЕН
+МИЉКОВИЋ МОЈСА
+МИЉКОВИЋ НИКОЛА ДР ИНГ
+МИЉКОВИЋ НИКОЛА
+МИЉКОВИЋ НИКОЛА
+МИЉКОВИЋ РАДОСАВ
+МИЉКОВИЋ РАДОСЛАВ
+МИЉКОВИЋ РАХИЉА
+МИЉКОВИЋ РОСА
+МИЉКОВИЋ РОСА
+МИЉКОВИЋ СЛОБОДАН
+МИЉКОВИЋ СТАМЕНКО ДР ЛЕКАР
+МИЉКОВИЋ СТОЈАДИН
+МИЉКОВИЋ СТОЈАН
+МИЉКОВИЋ ТОМИСЛАВ
+МИЉКОВИЋ ВЕЛИБОР
+МИЉОЈКОВИЋ ДЕСИМИР
+МИЉОЈКОВИЋ ДОБРИНКА
+МИЉОЈКОВИЋ ЕМИЛИЈА
+МИЉОЈКОВИЋ ЉУБИША
+МИЉОЈКОВИЋ ЉУБИША
+МИЉУШ ЂУРО
+МИЉУШ АЛЕКСАНДАР
+МИЉУШ БРАНКО
+МИЉУШ БРАНКО
+МИЉУШ ДРАГО
+МИЉУШ ДУШАНКА
+МИЉУШ ДУШАН
+МИЉУШ ЕВА
+МИЉУШ ЈОВАН ДР
+МИЉУШ ЈОВАН
+МИЉУШ ЈОВАН
+МИЉУШ КАТАРИНА
+МИЉУШ ЉИЉАНА
+МИЉУШ ЉУБИЦА
+МИЉУШ МАРИЈА
+МИЉУШ МАРИЈА
+МИЉУШ МИЛАН
+МИЉУШ МИЛЕ
+МИЉУШ МИЛОРАД
+МИЉУШ МИОДРАГ
+МИЉУШ НИКОЛА
+МИЉУШ ПЕТАР
+МИЛКОВ ЂУРЂИНКА
+МИЛКОВ ЂУРЂИНКА
+МИЛКОВ АЦА
+МИЛКОВ ДРАГАН ДР
+МИЛКОВ ДРАГИЊА
+МИЛКОВ ГОРДАНА
+МИЛКОВ ГОРДАНА
+МИЛКОВ ЈАСМИНА
+МИЛКОВ ЈЕЛЕНА
+МИЛКОВ ЛАЗАР
+МИЛКОВ ЛАЗАР
+МИЛКОВ СЛАВИЦА
+МИЛКОВ СТАНОЈЕ
+МИЛКОВ СТЕВАН
+МИЛКОВИЋ ДРАГИЦА
+МИЛКОВИЋ ДУШАН
+МИЛКОВИЋ ДУШАН
+МИЛКОВИЋ ВЕЉКО
+МИЛНОВИЋ АЛЕКСАНДАР
+МИЛНОВИЋ КАМЕНКО
+МИЛНОВИЋ ЛАЗАР
+МИЛНОВИЋ МИХАЈЛО
+МИЛНОВИЋ СТОЈАН
+МИЛНОВИЋ ВАСИЛИЈЕ
+МИЛНОВИЋ ЗОРА
+МИЛО ГИЗЕЛА
+МИЛОШ ИВАН
+МИЛОШЧИН СТАША
+МИЛОШЧИН СТЕВАН
+МИЛОШЧИН ВЛАДИМИР
+МИЛОШЕВ ЖАРКО ДР
+МИЛОШЕВ ЖИКА
+МИЛОШЕВ ЖИВКА
+МИЛОШЕВ ЖИВОЈИН
+МИЛОШЕВ АЛЕКСАНДАР
+МИЛОШЕВ АНЂЕЛИЈА
+МИЛОШЕВ БОШКО ДИПЛ ИНГ
+МИЛОШЕВ БРАНИСЛАВА
+МИЛОШЕВ БРАНИСЛАВ
+МИЛОШЕВ БРАНИСЛАВ
+МИЛОШЕВ ДОБРИВОЈ
+МИЛОШЕВ ДУШАН
+МИЛОШЕВ ДУШКО
+МИЛОШЕВ ЈОВАНКА
+МИЛОШЕВ ЈОВАН
+МИЛОШЕВ ЉУБОМИР
+МИЛОШЕВ МАРИЈА
+МИЛОШЕВ МИЋО
+МИЛОШЕВ МИХАЈЛО
+МИЛОШЕВ МИЛАН
+МИЛОШЕВ МИЛЕНКО
+МИЛОШЕВ МИЛИВОЈ
+МИЛОШЕВ МИЉАНА
+МИЛОШЕВ МИЛОШ
+МИЛОШЕВ МИЛОШ
+МИЛОШЕВ МИЛОШ
+МИЛОШЕВ МИЛОРАД
+МИЛОШЕВ МИЛОРАД
+МИЛОШЕВ МИОДРАГ
+МИЛОШЕВ МИРА
+МИЛОШЕВ МИРЈАНА
+МИЛОШЕВ МИРКО
+МИЛОШЕВ МИРОСЛАВА
+МИЛОШЕВ МИРОСЛАВ
+МИЛОШЕВ МИТА
+МИЛОШЕВ МОМЧИЛО
+МИЛОШЕВ НЕБОЈША
+МИЛОШЕВ НОВКА
+МИЛОШЕВ ПЕТАР
+МИЛОШЕВ РАДА
+МИЛОШЕВ САВА
+МИЛОШЕВ СЛАВКА
+МИЛОШЕВ СОФИЈА
+МИЛОШЕВ СТАНА
+МИЛОШЕВ СТОЈАНКА
+МИЛОШЕВ ВАСА ДИПЛ ИНГ
+МИЛОШЕВ ВАСА
+МИЛОШЕВ ВЕЛИМИР
+МИЛОШЕВ ЗЛАТОМИР
+МИЛОШЕВИЋ ЖИВОЈИН
+МИЛОШЕВИЋ ЖИВОРАД
+МИЛОШЕВИЋ АЛЕКСАНДАР
+МИЛОШЕВИЋ АЛЕКСАНДАР
+МИЛОШЕВИЋ АЛЕКСАНДАР
+МИЛОШЕВИЋ АЛЕКСАНДАР
+МИЛОШЕВИЋ АЛЕКСАНДРА
+МИЛОШЕВИЋ АЛЕКСАНДРА
+МИЛОШЕВИЋ АНАСТАЗИЈА
+МИЛОШЕВИЋ АНКА
+МИЛОШЕВИЋ БИЉАНА
+МИЛОШЕВИЋ БИСЕРКА
+МИЛОШЕВИЋ БОШКО
+МИЛОШЕВИЋ БОЖИДАР
+МИЛОШЕВИЋ БОЖИДАР
+МИЛОШЕВИЋ БОЖИДАР
+МИЛОШЕВИЋ БОЖО
+МИЛОШЕВИЋ БОГДАН
+МИЛОШЕВИЋ БОЈАНА
+МИЛОШЕВИЋ БРАНИСЛАВА
+МИЛОШЕВИЋ БРАНИСЛАВА
+МИЛОШЕВИЋ БРАНИСЛАВ
+МИЛОШЕВИЋ БРАНИСЛАВ
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ БРАНКО
+МИЛОШЕВИЋ ЦВЕТАН
+МИЛОШЕВИЋ ЦВЕТАН
+МИЛОШЕВИЋ ДАНИЦА
+МИЛОШЕВИЋ ДАРИНКА
+МИЛОШЕВИЋ ДЕЈАН
+МИЛОШЕВИЋ ДОБРИНКА
+МИЛОШЕВИЋ ДОБРОСАВ
+МИЛОШЕВИЋ ДРАГАНА
+МИЛОШЕВИЋ ДРАГАН
+МИЛОШЕВИЋ ДРАГАН
+МИЛОШЕВИЋ ДРАГАН
+МИЛОШЕВИЋ ДРАГИЦА
+МИЛОШЕВИЋ ДРАГИЦА
+МИЛОШЕВИЋ ДРАГОЉУБ
+МИЛОШЕВИЋ ДРАГОМИР ДИПЛ ИНГ
+МИЛОШЕВИЋ ДРАГУТИН
+МИЛОШЕВИЋ ДУШАН ДР
+МИЛОШЕВИЋ ДУШАН
+МИЛОШЕВИЋ ДУШАН
+МИЛОШЕВИЋ ЕВА
+МИЛОШЕВИЋ ЕВИЦА
+МИЛОШЕВИЋ ГРОЗДА
+МИЛОШЕВИЋ ИГЊАТ
+МИЛОШЕВИЋ ИВАНКА
+МИЛОШЕВИЋ ЈАКОВ
+МИЛОШЕВИЋ ЈАНКО
+МИЛОШЕВИЋ ЈЕЛЕНА
+МИЛОШЕВИЋ ЈЕЛЕНА
+МИЛОШЕВИЋ ЈЕЛЕНА
+МИЛОШЕВИЋ ЈЕЛЕНА
+МИЛОШЕВИЋ ЈЕРИНА
+МИЛОШЕВИЋ ЈОВАН
+МИЛОШЕВИЋ ЈОВАН
+МИЛОШЕВИЋ ЈОВАН
+МИЛОШЕВИЋ ЈОВАН
+МИЛОШЕВИЋ ЈОВИЦА
+МИЛОШЕВИЋ ЈУЛКА
+МИЛОШЕВИЋ КЛАУДИЈЕ
+МИЛОШЕВИЋ КРИСТИНА
+МИЛОШЕВИЋ ЛАТИНКА
+МИЛОШЕВИЋ ЛАЗАР
+МИЛОШЕВИЋ ЛАЗАР
+МИЛОШЕВИЋ ЉИЉАНА
+МИЛОШЕВИЋ ЉИЉАНА
+МИЛОШЕВИЋ ЉУБИША
+МИЛОШЕВИЋ ЉУБОМИР
+МИЛОШЕВИЋ ЛОЗАНА
+МИЛОШЕВИЋ МАРА
+МИЛОШЕВИЋ МАРИЦА
+МИЛОШЕВИЋ МАРИЈА
+МИЛОШЕВИЋ МАРИЈА
+МИЛОШЕВИЋ МАРКО
+МИЛОШЕВИЋ МАРТА
+МИЛОШЕВИЋ МИХАИЛО
+МИЛОШЕВИЋ МИХАЉИНА
+МИЛОШЕВИЋ МИЛАДИН
+МИЛОШЕВИЋ МИЛАНКА
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛАН
+МИЛОШЕВИЋ МИЛЕНКО
+МИЛОШЕВИЋ МИЛЕНКО
+МИЛОШЕВИЋ МИЛЕНКО
+МИЛОШЕВИЋ МИЛЕНКО
+МИЛОШЕВИЋ МИЛИЦА
+МИЛОШЕВИЋ МИЛИВОЈЕ
+МИЛОШЕВИЋ МИЛИВОЈЕ
+МИЛОШЕВИЋ МИЛОШ
+МИЛОШЕВИЋ МИЛОШ
+МИЛОШЕВИЋ МИЛОРАД
+МИЛОШЕВИЋ МИЛОРАД
+МИЛОШЕВИЋ МИЛОРАД
+МИЛОШЕВИЋ МИЛОРАД
+МИЛОШЕВИЋ МИЛОСАВ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИОДРАГ
+МИЛОШЕВИЋ МИРА
+МИЛОШЕВИЋ МИРЈАНА
+МИЛОШЕВИЋ МИРЈАНА
+МИЛОШЕВИЋ МИРЈАНА
+МИЛОШЕВИЋ МИРЈАНА
+МИЛОШЕВИЋ МИРКО
+МИЛОШЕВИЋ МИРОСЛАВ
+МИЛОШЕВИЋ МИТАР
+МИЛОШЕВИЋ МОМЧИЛО
+МИЛОШЕВИЋ НАДА
+МИЛОШЕВИЋ НЕВЕНА
+МИЛОШЕВИЋ НИКОЛА
+МИЛОШЕВИЋ НИКОЛА
+МИЛОШЕВИЋ НОВИЦА
+МИЛОШЕВИЋ ОБРАД
+МИЛОШЕВИЋ ОЛГА
+МИЛОШЕВИЋ ОЛИВЕРА
+МИЛОШЕВИЋ ПАВЛЕ
+МИЛОШЕВИЋ ПАВЛЕ
+МИЛОШЕВИЋ ПЕТАР
+МИЛОШЕВИЋ ПЕТАР
+МИЛОШЕВИЋ ПЕТАР
+МИЛОШЕВИЋ ПРЕДРАГ
+МИЛОШЕВИЋ РАДЕ ДР
+МИЛОШЕВИЋ РАДЕ
+МИЛОШЕВИЋ РАДЕ
+МИЛОШЕВИЋ РАДЕ
+МИЛОШЕВИЋ РАДЕ
+МИЛОШЕВИЋ РАДОВАН
+МИЛОШЕВИЋ РАЈКО
+МИЛОШЕВИЋ РАЈКО
+МИЛОШЕВИЋ РАТКО
+МИЛОШЕВИЋ РИСТО
+МИЛОШЕВИЋ РУЖА
+МИЛОШЕВИЋ РУЖИЦА
+МИЛОШЕВИЋ САВА
+МИЛОШЕВИЋ САВА
+МИЛОШЕВИЋ САВА
+МИЛОШЕВИЋ САВА
+МИЛОШЕВИЋ СЕЛЕНКА
+МИЛОШЕВИЋ СЛАВА
+МИЛОШЕВИЋ СЛАВКО
+МИЛОШЕВИЋ СЛОБОДАН
+МИЛОШЕВИЋ СЛОБОДАН
+МИЛОШЕВИЋ СЛОБОДАН
+МИЛОШЕВИЋ СНЕЖАНА
+МИЛОШЕВИЋ СНЕЖАНА
+МИЛОШЕВИЋ СПАСОЈЕ
+МИЛОШЕВИЋ СПАСОЈЕ
+МИЛОШЕВИЋ СРБОБРАН
+МИЛОШЕВИЋ СТАНИМИР
+МИЛОШЕВИЋ СТАНКО
+МИЛОШЕВИЋ СТАНКО
+МИЛОШЕВИЋ СТЕВИЦА
+МИЛОШЕВИЋ СТОЈА
+МИЛОШЕВИЋ СВЕТИСЛАВ
+МИЛОШЕВИЋ СВЕТОЉУБ
+МИЛОШЕВИЋ СВЕТОЗАР
+МИЛОШЕВИЋ СВЕТОЗАР
+МИЛОШЕВИЋ ТАДИЈА
+МИЛОШЕВИЋ ТОМИСЛАВ
+МИЛОШЕВИЋ УРОШ
+МИЛОШЕВИЋ ВАСА
+МИЛОШЕВИЋ ВАСИЛИЈЕ
+МИЛОШЕВИЋ ВЕЉКО
+МИЛОШЕВИЋ ВЕРА
+МИЛОШЕВИЋ ВЕСЕЛИН
+МИЛОШЕВИЋ ВИДОЈЕ
+МИЛОШЕВИЋ ВЛАДА ДИПЛ ОЕЦ
+МИЛОШЕВИЋ ВЛАДИМИР
+МИЛОШЕВИЋ ВОЈИСЛАВ
+МИЛОШЕВИЋ ВОЈИСЛАВ
+МИЛОШЕВИЋ ВОЈКАН
+МИЛОШЕВИЋ ВУКАШИН ДР ЛЕКАР
+МИЛОШЕВИЋ ВУКАШИН
+МИЛОШЕВИЋ ЗАХАРИЈЕ
+МИЛОШЕВИЋ ЗДРАВКО
+МИЛОШЕВИЋ ЗЛАТИМИР
+МИЛОШЕВИЋ ЗОРАН ДИПЛ ИНГ
+МИЛОШЕВИЋ ЗОРАН
+МИЛОЈЕВИЋ ЂОРЂЕ
+МИЛОЈЕВИЋ АНА
+МИЛОЈЕВИЋ БРАНИСЛАВ
+МИЛОЈЕВИЋ БРАНИСЛАВ
+МИЛОЈЕВИЋ ЦВИЈЕТА
+МИЛОЈЕВИЋ ДИМИТРИЈЕ
+МИЛОЈЕВИЋ ДРАГАН
+МИЛОЈЕВИЋ ДРАГАН
+МИЛОЈЕВИЋ ДУШАНКА
+МИЛОЈЕВИЋ ДУШАН
+МИЛОЈЕВИЋ ДУШАН
+МИЛОЈЕВИЋ ДУШАН
+МИЛОЈЕВИЋ ГОЈКО
+МИЛОЈЕВИЋ ГОРДАНА
+МИЛОЈЕВИЋ ГРОЗДАНА
+МИЛОЈЕВИЋ ЈАНКО
+МИЛОЈЕВИЋ ЈЕЛЕНА
+МИЛОЈЕВИЋ ЈУЛИЈАНА
+МИЛОЈЕВИЋ МИХАЈЛО
+МИЛОЈЕВИЋ-МИЛАНОВ СВЕТЛАНА
+МИЛОЈЕВИЋ МИЛИВОЈЕ
+МИЛОЈЕВИЋ МИЛОЈЕ ДР ПРОФ
+МИЛОЈЕВИЋ МИЛОРАД
+МИЛОЈЕВИЋ МИРОСЛАВ
+МИЛОЈЕВИЋ МОМИР ДР
+МИЛОЈЕВИЋ ОЛГИЦА
+МИЛОЈЕВИЋ ПАВЛЕ
+МИЛОЈЕВИЋ ПРЕДРАГ
+МИЛОЈЕВИЋ РАДОВАН
+МИЛОЈЕВИЋ РАНКО
+МИЛОЈЕВИЋ СЛОБОДАН
+МИЛОЈЕВИЋ ВАСА
+МИЛОЈЕВИЋ ВЛАДА
+МИЛОЈЕВИЋ ВЛАДИМИР
+МИЛОЈЕВИЋ ВОЈИН
+МИЛОЈЕВИЋ ВОЈИСЛАВ
+МИЛОЈЕВИЋ ЗОРАН
+МИЛОЈЕВИЋ ЗОРАН
+МИЛОЈЕВИЋ ЗВОНКО
+МИЛОЈИЦА МИЉА
+МИЛОЈКОВИЋ ЖИВАН
+МИЛОЈКОВИЋ АЦА
+МИЛОЈКОВИЋ БОЖАНА
+МИЛОЈКОВИЋ БОЖИДАР
+МИЛОЈКОВИЋ ДУШАН
+МИЛОЈКОВИЋ ДУШАН
+МИЛОЈКОВИЋ ЈОВАНКА
+МИЛОЈКОВИЋ КАТАРИНА
+МИЛОЈКОВИЋ КРИСТА
+МИЛОЈКОВИЋ ЉУБОМИР
+МИЛОЈКОВИЋ МИЛИВОЈ
+МИЛОЈКОВИЋ МИЛОВАН
+МИЛОЈКОВИЋ МИРОЉУБ
+МИЛОЈКОВИЋ НАДЕЖДА
+МИЛОМ ИМРЕ
+МИЛОМ ИМРЕ
+МИЛОРАДИЋ БРАНКО
+МИЛОРАДИЋ НИКОЛА
+МИЛОРАДОВ БОРИСЛАВА
+МИЛОРАДОВ МИЛОШ
+МИЛОРАДОВ МИЛОРАД
+МИЛОРАДОВ РАДОСЛАВКА
+МИЛОРАДОВ ВИОЛЕТА
+МИЛОРАДОВИЋ БРАНИСЛАВ
+МИЛОРАДОВИЋ ДЕЈАН
+МИЛОРАДОВИЋ ДРАГАН
+МИЛОРАДОВИЋ МИЛОШ
+МИЛОРАДОВИЋ МЛАДЕН
+МИЛОРАДОВИЋ ЗЛАТОЈЕ
+МИЛОСАВАЦ МИЋА
+МИЛОСАВИЋ БОРИСЛАВ
+МИЛОСАВИЋ БРАНКО
+МИЛОСАВИЋ КРСТАН
+МИЛОСАВИЋ МЛАДЕН
+МИЛОСАВИЋ МОМЧИЛО
+МИЛОСАВИЋ ПЕТАР
+МИЛОСАВИЋ РАДИВОЈ
+МИЛОСАВИЋ СТОЈА
+МИЛОСАВЉЕВ ЖИВАН
+МИЛОСАВЉЕВ ЖИВКА
+МИЛОСАВЉЕВ АЛЕКСАНДАР
+МИЛОСАВЉЕВ БОЖИДАР
+МИЛОСАВЉЕВ ДОБРЕН
+МИЛОСАВЉЕВ ДРАГИЊА
+МИЛОСАВЉЕВ ЉИЉАНА
+МИЛОСАВЉЕВ МЕЛАНИЈА
+МИЛОСАВЉЕВ МИЛЕНКО
+МИЛОСАВЉЕВ МИЛИЦА
+МИЛОСАВЉЕВ НОВКА
+МИЛОСАВЉЕВ ВЛАДА
+МИЛОСАВЉЕВ ВОЈА
+МИЛОСАВЉЕВИЋ ЖАРКО
+МИЛОСАВЉЕВИЋ ЖИВАДИН
+МИЛОСАВЉЕВИЋ ЖИВКО
+МИЛОСАВЉЕВИЋ ЖИВКО
+МИЛОСАВЉЕВИЋ АДАМ ДИПЛ ПРАВНИК
+МИЛОСАВЉЕВИЋ БОЖИДАР
+МИЛОСАВЉЕВИЋ БОРА
+МИЛОСАВЉЕВИЋ БОРИВОЈЕ
+МИЛОСАВЉЕВИЋ БРАНИСЛАВ
+МИЛОСАВЉЕВИЋ БРАНКО
+МИЛОСАВЉЕВИЋ БРАТИСЛАВ
+МИЛОСАВЉЕВИЋ ДЕЈАН
+МИЛОСАВЉЕВИЋ ДРАГАН
+МИЛОСАВЉЕВИЋ ДРАГАН
+МИЛОСАВЉЕВИЋ ДРАГАН
+МИЛОСАВЉЕВИЋ ДРАГИЦА
+МИЛОСАВЉЕВИЋ ДРАГИЦА
+МИЛОСАВЉЕВИЋ ДРАГУТИН
+МИЛОСАВЉЕВИЋ ДУШАНКА
+МИЛОСАВЉЕВИЋ ИЛИЈА
+МИЛОСАВЉЕВИЋ ЈЕЛИСАВЕТА
+МИЛОСАВЉЕВИЋ ЈОВАН
+МИЛОСАВЉЕВИЋ ЈОВАН
+МИЛОСАВЉЕВИЋ ЈОВАН
+МИЛОСАВЉЕВИЋ КАТИЦА
+МИЛОСАВЉЕВИЋ ЛАЗАР
+МИЛОСАВЉЕВИЋ МАРИЈА
+МИЛОСАВЉЕВИЋ МИХАЈЛО
+МИЛОСАВЉЕВИЋ МИЛАН
+МИЛОСАВЉЕВИЋ МИЛАН
+МИЛОСАВЉЕВИЋ МИЛЕ
+МИЛОСАВЉЕВИЋ МИЛИЦА
+МИЛОСАВЉЕВИЋ МИЛКА
+МИЛОСАВЉЕВИЋ МИЛОРАД
+МИЛОСАВЉЕВИЋ МИЛОРАД
+МИЛОСАВЉЕВИЋ МИЛОРАД
+МИЛОСАВЉЕВИЋ МИЛОВАН
+МИЛОСАВЉЕВИЋ МИОДРАГ ДР
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИОДРАГ
+МИЛОСАВЉЕВИЋ МИРОСЛАВ
+МИЛОСАВЉЕВИЋ НИКОЛА ДР
+МИЛОСАВЉЕВИЋ НОВИЦА
+МИЛОСАВЉЕВИЋ ОЛГА
+МИЛОСАВЉЕВИЋ ПЕТАР
+МИЛОСАВЉЕВИЋ РАДИВОЈЕ
+МИЛОСАВЉЕВИЋ РАДИВОЈ
+МИЛОСАВЉЕВИЋ РАДОМИР
+МИЛОСАВЉЕВИЋ САВО
+МИЛОСАВЉЕВИЋ СЛАВКО
+МИЛОСАВЉЕВИЋ СЛОБОДАН
+МИЛОСАВЉЕВИЋ СЛОБОДАН
+МИЛОСАВЉЕВИЋ СРЕТА
+МИЛОСАВЉЕВИЋ СТАНИСЛАВ
+МИЛОСАВЉЕВИЋ СТАНКО
+МИЛОСАВЉЕВИЋ СТЕВО
+МИЛОСАВЉЕВИЋ СВЕТОЗАР
+МИЛОСАВЉЕВИЋ ВЕРА
+МИЛОСАВЉЕВИЋ ВЕРА
+МИЛОСАВЉЕВИЋ ВЛАДИМИР
+МИЛОСАВЉЕВИЋ ВЛАДИСЛАВ
+МИЛОСАВЉЕВИЋ ЗОРАН
+МИЛОСОВИЋ ЈОВАН
+МИЛОСОВИЋ МИЛОШ
+МИЛОСОВИЋ МИРКО
+МИЛОВЧЕВИЋ МИЛОШ
+МИЛОВАЦ ДУШАН
+МИЛОВАЦ ГЛИША
+МИЛОВАЦ ГОРАН
+МИЛОВАЦ ИЛЕ
+МИЛОВАЦ ИЛИЈА
+МИЛОВАЦ ЈЕЛА
+МИЛОВАЦ МИЛАН
+МИЛОВАЦ МИЛАН
+МИЛОВАЦ МИЛАН
+МИЛОВАЦ ПЕТАР
+МИЛОВАЦ РУЖИЦА
+МИЛОВАЦ СИМО
+МИЛОВАЦ СТАНКО
+МИЛОВАЦ СТЕВАН
+МИЛОВАЦ СТОЈАН
+МИЛОВАН КОНСТАНЦА
+МИЛОВАНЧЕВ АЛЕКСАНДАР
+МИЛОВАНЧЕВ ИСИДОР
+МИЛОВАНЧЕВ НИКОЛА
+МИЛОВАНЧЕВ СЛОБОДАН ДИПЛ ИНГ
+МИЛОВАНЧЕВ СВЕТОЗАР ДР
+МИЛОВАНКИЋ ЂОРЂЕ
+МИЛОВАНКИЋ МИРОСЛАВ
+МИЛОВАНОВ ЂОРЂЕ
+МИЛОВАНОВ АЛЕКСАНДАР ДИПЛ ИНГ
+МИЛОВАНОВ АНИЦА
+МИЛОВАНОВ БОЖИДАР
+МИЛОВАНОВ ДИМИТРИЈЕ ДИПЛ ИНГ
+МИЛОВАНОВ ДРАГАН
+МИЛОВАНОВ ГОЈКО
+МИЛОВАНОВ ГОЈКО
+МИЛОВАНОВ ГОРАН
+МИЛОВАНОВ ГОРДАНА ДР ЛЕКАР
+МИЛОВАНОВ ИВАН
+МИЛОВАНОВ ЈУЛКА
+МИЛОВАНОВ МИЛАН
+МИЛОВАНОВ МИЛЕ
+МИЛОВАНОВ МИЛИНКА
+МИЛОВАНОВ МИЛИНКА
+МИЛОВАНОВ МИРЈАНА
+МИЛОВАНОВ СИМА
+МИЛОВАНОВ СТОЈАНКА
+МИЛОВАНОВ ТОДОР
+МИЛОВАНОВ ВАСИЛИЈЕ
+МИЛОВАНОВ ЗОРАН
+МИЛОВАНОВИЋ ЖИКА
+МИЛОВАНОВИЋ ЖИВКО
+МИЛОВАНОВИЋ АНЂЕЛКА
+МИЛОВАНОВИЋ АНИЦА
+МИЛОВАНОВИЋ АНИЦА
+МИЛОВАНОВИЋ БОГОСАВ
+МИЛОВАНОВИЋ БРАНИСЛАВА
+МИЛОВАНОВИЋ БРАНИСЛАВ
+МИЛОВАНОВИЋ БРАНИСЛАВ
+МИЛОВАНОВИЋ ДАНИЦА
+МИЛОВАНОВИЋ ДОБРИСАВ
+МИЛОВАНОВИЋ ДОБРИВОЈЕ
+МИЛОВАНОВИЋ ДРАГИЊА
+МИЛОВАНОВИЋ ДРАГОЉУБ
+МИЛОВАНОВИЋ ДРАГОЉУБ
+МИЛОВАНОВИЋ ДРАГОМИР
+МИЛОВАНОВИЋ ДРАГОСЛАВ
+МИЛОВАНОВИЋ ДРАГОСЛАВ
+МИЛОВАНОВИЋ ДУШАН ДР ЛЕКАР
+МИЛОВАНОВИЋ ДУШАН
+МИЛОВАНОВИЋ ГОРАН
+МИЛОВАНОВИЋ ГОРДАНА
+МИЛОВАНОВИЋ ИЛИЈА
+МИЛОВАНОВИЋ ИВАНКА
+МИЛОВАНОВИЋ ИВИЦА
+МИЛОВАНОВИЋ ЈОВАН
+МИЛОВАНОВИЋ КАТАЛИН
+МИЛОВАНОВИЋ КАТИЦА
+МИЛОВАНОВИЋ КОСАРА
+МИЛОВАНОВИЋ КРСТОМИР
+МИЛОВАНОВИЋ ЉИЉАНА
+МИЛОВАНОВИЋ ЉИЉАНА
+МИЛОВАНОВИЋ ЉУБИЦА
+МИЛОВАНОВИЋ ЛУКА
+МИЛОВАНОВИЋ МИЛАДИН
+МИЛОВАНОВИЋ МИЛАН
+МИЛОВАНОВИЋ МИЛЕНА
+МИЛОВАНОВИЋ МИЛЕНКО
+МИЛОВАНОВИЋ МИЛЕВА
+МИЛОВАНОВИЋ МИЛИСАВ
+МИЛОВАНОВИЋ МИЛИВОЈЕ
+МИЛОВАНОВИЋ МИЛОРАД
+МИЛОВАНОВИЋ МИЛОВАН
+МИЛОВАНОВИЋ МИЛОВАН
+МИЛОВАНОВИЋ МИРЈАНА
+МИЛОВАНОВИЋ МИРЈАНА
+МИЛОВАНОВИЋ МОМИР ДИПЛ ИНГ
+МИЛОВАНОВИЋ НАДА МР
+МИЛОВАНОВИЋ НИКОЛА
+МИЛОВАНОВИЋ ОБРЕН
+МИЛОВАНОВИЋ ОЛГА
+МИЛОВАНОВИЋ РАДАШИН
+МИЛОВАНОВИЋ РАДЕНКО
+МИЛОВАНОВИЋ РАДЕНКО
+МИЛОВАНОВИЋ РАДЕНКО
+МИЛОВАНОВИЋ РАДЕ
+МИЛОВАНОВИЋ РАДИСАВ
+МИЛОВАНОВИЋ РАДИСЛАВ
+МИЛОВАНОВИЋ РАДОСЛАВ
+МИЛОВАНОВИЋ РИСТА
+МИЛОВАНОВИЋ САВА
+МИЛОВАНОВИЋ СЛАВКА
+МИЛОВАНОВИЋ СЛАВКО
+МИЛОВАНОВИЋ СЛОБОДАН
+МИЛОВАНОВИЋ СОЊА
+МИЛОВАНОВИЋ СРБИСЛАВ
+МИЛОВАНОВИЋ СТАНИЦА
+МИЛОВАНОВИЋ СТЕВАН ДИПЛ ИНГ
+МИЛОВАНОВИЋ СТЕВАН
+МИЛОВАНОВИЋ СТЕВАН
+МИЛОВАНОВИЋ СВЕТОЗАР
+МИЛОВАНОВИЋ СВЕТОЗАР
+МИЛОВАНОВИЋ ТЕРКА
+МИЛОВАНОВИЋ ВЕСЕЛИНКА
+МИЛОВАНОВИЋ ВЕСНА
+МИЛОВАНОВИЋ ВИДАН
+МИЛОВАНОВИЋ ВЛАДИМИР
+МИЛОВАНОВИЋ ВЛАДИМИР
+МИЛОВАНОВИЋ ВЛАДИСЛАВ
+МИЛОВАНОВИЋ ВОЈА
+МИЛОВАНОВИЋ ВОЈИСЛАВ
+МИЛОВАНОВИЋ ВОЈИСЛАВ
+МИЛОВАНОВИЋ ВОЈИСЛАВ
+МИЛОВАНОВИЋ ВОЈИСЛАВ
+МИЛОВАНОВИЋ ВУКОСАВА
+МИЛОВАНОВИЋ ЗОРАН
+МИЛОВАНОВИЋ ЗОРАН
+МИЛОВАНОВИЋ ЗОРКА
+МИЛОВИЋ ЧЕДО
+МИЛОВИЋ ЂОРЂЕ
+МИЛОВИЋ БОШКО
+МИЛОВИЋ БОГДАН
+МИЛОВИЋ БОРИША
+МИЛОВИЋ БОРО
+МИЛОВИЋ БОРО
+МИЛОВИЋ БРАНКО
+МИЛОВИЋ ДЕСИМИР
+МИЛОВИЋ ДУШАН
+МИЛОВИЋ ГОЈКО
+МИЛОВИЋ ГОЈКО
+МИЛОВИЋ ИЛИЈА
+МИЛОВИЋ ЈЕЛЕНА
+МИЛОВИЋ КРСТО
+МИЛОВИЋ ЉУБОМИР
+МИЛОВИЋ МАЈА
+МИЛОВИЋ МАРИЈАН
+МИЛОВИЋ МИЛАН
+МИЛОВИЋ МИЛЕНКО
+МИЛОВИЋ МИЛОРАД
+МИЛОВИЋ МИЛОРАД
+МИЛОВИЋ МИОМИР
+МИЛОВИЋ МОМЧИЛО
+МИЛОВИЋ ОРЛЕ
+МИЛОВИЋ ПЕТАР
+МИЛОВИЋ РАДЕ
+МИЛОВИЋ РАДОВАН
+МИЛОВИЋ СЛОБОДАН
+МИЛОВИЋ СТАНКО
+МИЛОВИЋ ТОМИСЛАВ
+МИЛОВИЋ ВУКАШИН
+МИЛУШИЋ ЕВИЦА
+МИЛУШИЋ ПЕТАР ДИПЛ ИНГ
+МИЛУНОВ ЈОВАН
+МИЛУНОВ ЈУЛКА
+МИЛУНОВИЋ БРАНКО
+МИЛУНОВИЋ ДРАГОМИР
+МИЛУНОВИЋ МИЛОШ
+МИЛУНОВИЋ МИЛОМИР
+МИЛУНОВИЋ МИЛОРАД
+МИЛУНОВИЋ МИЛУН
+МИЛУНОВИЋ РАДОМИР
+МИЛУНОВИЋ СПАСЕНКО
+МИЛУНОВИЋ ЗОРИЦА
+МИЛУРОВИЋ СЛОБОДАН
+МИЛУТИН ЖИВКО
+МИЛУТИН ЈАСНА
+МИЛУТИН МИРА
+МИЛУТИН НЕДЕЉКО
+МИЛУТИН РАТКО
+МИЛУТИН ВОЈИСЛАВ
+МИЛУТИНОВ ЂОКА
+МИЛУТИНОВ АЦА
+МИЛУТИНОВ ДРАГОСЛАВ
+МИЛУТИНОВ ЈЕЛИСАВЕТА
+МИЛУТИНОВ ЈОВАН
+МИЛУТИНОВ КОНСТАНТИН
+МИЛУТИНОВ ЛАЗАР
+МИЛУТИНОВ МИЛИСАВ
+МИЛУТИНОВ МИТА
+МИЛУТИНОВ-НЕДЕЉКОВИЋ РАДОВАН
+МИЛУТИНОВ РАДА
+МИЛУТИНОВ РАДОСЛАВ
+МИЛУТИНОВ САВА
+МИЛУТИНОВ САВЕТА
+МИЛУТИНОВ ТОДОР
+МИЛУТИНОВ ВЕЛИБОР
+МИЛУТИНОВИЋ ШТЕФИЦА
+МИЛУТИНОВИЋ ЖИКА
+МИЛУТИНОВИЋ ЂОРЂЕ
+МИЛУТИНОВИЋ ЂОРЂЕ
+МИЛУТИНОВИЋ ЂОРЂЕ
+МИЛУТИНОВИЋ ЂУРЂИЦА
+МИЛУТИНОВИЋ АНЂЕЛКО
+МИЛУТИНОВИЋ БОШКО
+МИЛУТИНОВИЋ БОЈАН
+МИЛУТИНОВИЋ БРАНКА
+МИЛУТИНОВИЋ БУДИМИР
+МИЛУТИНОВИЋ ДАНИЈЕЛА
+МИЛУТИНОВИЋ ДРАГАН
+МИЛУТИНОВИЋ ДРАГИЦА
+МИЛУТИНОВИЋ ДРАГИЦА
+МИЛУТИНОВИЋ ДРАГУТИН
+МИЛУТИНОВИЋ ДУШАНКА
+МИЛУТИНОВИЋ ДУШАН
+МИЛУТИНОВИЋ ГАВРИЛО
+МИЛУТИНОВИЋ ИГЊАТ
+МИЛУТИНОВИЋ ЈОВАН
+МИЛУТИНОВИЋ ЈОВАН
+МИЛУТИНОВИЋ ЈУЛКИЦА
+МИЛУТИНОВИЋ ЛИДИЈА
+МИЛУТИНОВИЋ ЛИДИЈА
+МИЛУТИНОВИЋ ЉУБИНКА
+МИЛУТИНОВИЋ ЉУБО
+МИЛУТИНОВИЋ МАНДА
+МИЛУТИНОВИЋ МАРТА
+МИЛУТИНОВИЋ МЕЛАНИЈА
+МИЛУТИНОВИЋ МИЛАДИН
+МИЛУТИНОВИЋ МИЛАН
+МИЛУТИНОВИЋ МИЛАН
+МИЛУТИНОВИЋ МИЛЕНКО
+МИЛУТИНОВИЋ МИЛИНКО
+МИЛУТИНОВИЋ МИЛИВОЈЕ
+МИЛУТИНОВИЋ МИЛИВОЈЕ
+МИЛУТИНОВИЋ МИЛОШ
+МИЛУТИНОВИЋ МИЛОЈКО
+МИЛУТИНОВИЋ МИЛОРАД
+МИЛУТИНОВИЋ МИЛОРАД
+МИЛУТИНОВИЋ МИЛОВАН
+МИЛУТИНОВИЋ МИЛУТИН
+МИЛУТИНОВИЋ МИОМИР
+МИЛУТИНОВИЋ МИРЈАНА
+МИЛУТИНОВИЋ МИРЈАНА
+МИЛУТИНОВИЋ МИРЈАНА
+МИЛУТИНОВИЋ МИРОСЛАВА ДР
+МИЛУТИНОВИЋ МИРОСЛАВ
+МИЛУТИНОВИЋ МОМИР
+МИЛУТИНОВИЋ ОЛГА
+МИЛУТИНОВИЋ ПЕТАР
+МИЛУТИНОВИЋ ПЕТАР
+МИЛУТИНОВИЋ РАДЕ
+МИЛУТИНОВИЋ РАДИША
+МИЛУТИНОВИЋ РАДОЈКА
+МИЛУТИНОВИЋ РАДОСАВ
+МИЛУТИНОВИЋ САША
+МИЛУТИНОВИЋ СЛАВКО
+МИЛУТИНОВИЋ СЛОБОДАНКА
+МИЛУТИНОВИЋ СРЕТЕН
+МИЛУТИНОВИЋ СТАНА
+МИЛУТИНОВИЋ СТЕВАН
+МИЛУТИНОВИЋ СТОЈАНКА
+МИЛУТИНОВИЋ СТОЈАН
+МИЛУТИНОВИЋ СВЕТОЗАР
+МИЛУТИНОВИЋ ВЕЛИМИР
+МИЛУТИНОВИЋ ВЕРА
+МИЛУТИНОВИЋ ВЕРА
+МИЛУТИНОВИЋ ВЕРИЦА ДР
+МИЛУТИНОВИЋ-ВУКСАН ОЛГА
+МИЛУТИНОВИЋ ЗОРАН
+МИЛУТИНОВИЋ ЗОРАН
+МИЛУТИНОВИЋ ЗОРАН
+МИЛУТИНОВИЋ ЗОРАН
+МИМИЦА МЛАДЕН
+МИМИЦА НЕНАД
+МИМИЦА НЕНАД
+МИМИЦА НЕНАД
+МИНЧИЋ МИРОЉУБ
+МИНЧИЋ МИРОСЛАВ
+МИНЧИЋ СЛОБОДАНКА
+МИНДА-РАЂЕНОВИЋ ЕЛЕНА
+МИНДА ТИБОР
+МИНДИЋ МИРЈАНА
+МИНДИЋ СВЕТИСЛАВ
+МИНЕА РОМАН
+МИНИЋ МИЛОСАВ
+МИНИЋ НАДА
+МИНИЋ СЛАВКО
+МИНИЋ ТОМИСЛАВ
+МИНИЋ ЗОРКА
+МИНИК ШАНДОР
+МИНИК ЈОСИП
+МИЊА МАЈА
+МИЊА МИЛУТИН
+МИОЧ ЖЕЉКО
+МИОЧ ИВАН
+МИОЧ ЗДЕНКО
+МИОЧИНОВИЋ МАРКО
+МИОЧИНОВИЋ МИЛАН
+МИОДАНИЋ ДАНКО
+МИОДРАГ АНА
+МИОДРАГ МИРКО
+МИОДРАГ ПЕРО
+МИОДРАГ ЗДРАВКА
+МИОДРАГ ЗОРИЦА
+МИОДРАГОВИЋ АЛАКСАНДАР
+МИОДРАГОВИЋ БОРИСЛАВ
+МИОДРАГОВИЋ ДРАГОЉУБ
+МИОДРАГОВИЋ ДРАГОЉУБ
+МИОДРАГОВИЋ ДРАГОМИР
+МИОДРАГОВИЋ ДУШКО
+МИОДРАГОВИЋ МИЛЕНКО ДИПЛ ИНГ
+МИОДРАГОВИЋ МИЛЕНКО
+МИОДРАГОВИЋ РАДОСЛАВ
+МИОДРАГОВИЋ СТЕВАН
+МИОДРАГОВИЋ ТОША
+МИОДРАГОВИЋ ВЕРА
+МИОДРАГОВИЋ-ВУКАНИЋ АЛЕКСАНДРА
+МИОДРАГОВИЋ ЗОРИЦА
+МИОК ВЛАСТИМИР
+МИОКОВИЋ БРАНКО
+МИОКОВИЋ ДАНИЦА
+МИОКОВИЋ РАДОСЛАВ
+МИОЛСКИ БОРИСЛАВ
+МИОЛСКИ ДУШКО
+МИОЛСКИ СТАНКО
+МИОЛСКИ СТЕВАН
+МИРЧЕТИЋ ЈОВАН
+МИРЧЕТИЋ ЛАЗАР
+МИРЧЕТИЋ МИЛИЦА
+МИРЧЕТИЋ МИЛУТИН
+МИРЧЕТИЋ РАДОСЛАВ
+МИРЧЕТИЋ СЛАВКО
+МИРЧЕТИЋ ЗОРАН
+МИРЧЕТИЋ ЗОРАН
+МИРЧЕВСКИ МИХАИЛО
+МИРЧИЋ КОВИЉКА
+МИРЧИЋ МИЛОРАД
+МИРЧИЋ НИКОЛА
+МИРЧИЋ РАДОВАН
+МИРЧИЋ СТОЈАНКА
+МИРЧИЋ СТОЈАН
+МИРАЖИЋ АНТУН
+МИРАЖИЋ БРАНИСЛАВ
+МИРАЖИЋ БРАНКО
+МИРАЖИЋ ЈЕЛА
+МИРАЖИЋ МАРА
+МИРАЖИЋ ВЕСЕЛИНКА
+МИРАЛЕМ АХМЕД
+МИРАНОВИЋ КСЕНИЈА ДР ЛЕКАР
+МИРАНОВИЋ МАЈА
+МИРАНОВИЋ МИРКО
+МИРЕШЕВИЋ ДУШАН
+МИРЕШЕВИЋ РАДОЈКА
+МИРИЋ ЂУРА
+МИРИЋ АГАТА
+МИРИЋ БОЖИДАР
+МИРИЋ ДАНЕ
+МИРИЋ ДРАГОМИР
+МИРИЋ ДРАГУТИН
+МИРИЋ ДУШАНКА
+МИРИЋ ДУШАН
+МИРИЋ ДУШАН
+МИРИЋ ДУШКО
+МИРИЋ ЈОСИФ
+МИРИЋ ЈОВАН
+МИРИЋ ЈОВО
+МИРИЋ КАТА
+МИРИЋ КАТИЦА
+МИРИЋ КОВИЉКА
+МИРИЋ МАРИЈА
+МИРИЋ МИЛАН
+МИРИЋ МИЛАН
+МИРИЋ МИЛАН
+МИРИЋ МИЛЕНА
+МИРИЋ МИЛКА
+МИРИЋ НИКОЛА
+МИРИЋ ПАВЛЕ
+МИРИЋ РАЈКО
+МИРИЋ РУЖИЦА
+МИРИЋ САША
+МИРИЋ САВКА
+МИРИЋ СМИЉА
+МИРИЋ СТЕВАН
+МИРИЋ СТОЈАНКА
+МИРИЋ ВАСИЛИЈЕ
+МИРИЛОВ АЛЕКСАНДАР
+МИРИЛОВ МИЛАДИН ДР
+МИРИЛОВ ЗОРКА
+МИРИЛОВИЋ ДРАГАН
+МИРИЛОВИЋ ГОРДАНА
+МИРИЛОВИЋ ЛАЗАР
+МИРИЛОВИЋ МЛАДЕН
+МИРИЛОВИЋ СНЕЖАНА
+МИРИМАНОВ ДАРА
+МИРИМАНОВ ВЛАДИМИР
+МИРЈАЧИЋ БОСА
+МИРЈАНИЋ ДАНИЦА
+МИРЈАНИЋ МОРАВКА
+МИРЈАНИЋ ВАСА
+МИРЈАНИЋ ВЕРИЦА
+МИРЈАНИН НЕРА
+МИРКАЦ СТАНИСЛАВ
+МИРКАЈЛОВИЋ МИЛОВАН
+МИРКАЈЛОВИЋ МИЛОВАН
+МИРКИЋ БЛАГОЈЕ
+МИРКОЊ СРЕДОЈЕ
+МИРКОЊЕВ БРАНИСЛАВ
+МИРКОЊЕВ СНЕЖАНА
+МИРКОВ ЖЕЉКО
+МИРКОВ ЖИВАН
+МИРКОВ ЂОРЂЕ
+МИРКОВ ЂУРЂИЈА
+МИРКОВ ЂУРЂИЈА
+МИРКОВ ЂУРИЦА
+МИРКОВ БОСИЉКА
+МИРКОВ ДУШИЦА
+МИРКОВ ЕВИЦА
+МИРКОВ МАРИЦА
+МИРКОВ ПАВЛЕ
+МИРКОВ РУЖИЦА
+МИРКОВ СЕКУЛА ДИПЛ ОЕЦ
+МИРКОВ СЛОБОДАН
+МИРКОВ СНЕЖАНА
+МИРКОВ СТАНИСЛАВ
+МИРКОВ СТЕВАН
+МИРКОВ СТЕВАН
+МИРКОВ ВЕЉКО
+МИРКОВ ВЛАДА
+МИРКОВ ЗОРАН
+МИРКОВ ЗОРИЦА
+МИРКОВ ЗОРКА
+МИРКОВИЋ ЧЕДОМИР
+МИРКОВИЋ ЖИВАН
+МИРКОВИЋ ЖИВКА
+МИРКОВИЋ ЖИВОЈИН
+МИРКОВИЋ ЂОРЂЕ
+МИРКОВИЋ ЂОРЂЕ
+МИРКОВИЋ АВРАМ
+МИРКОВИЋ БОРА
+МИРКОВИЋ БРАНИСЛАВ
+МИРКОВИЋ БРАНКА
+МИРКОВИЋ БРАНКА
+МИРКОВИЋ БРАНКО
+МИРКОВИЋ БРАНКО
+МИРКОВИЋ ДАНИЦА
+МИРКОВИЋ ДЕЈАН
+МИРКОВИЋ ДРАГАНА
+МИРКОВИЋ ДРАГИЦА
+МИРКОВИЋ ДРАГИЦА
+МИРКОВИЋ ДРАГОЉУБ
+МИРКОВИЋ ДУШАН
+МИРКОВИЋ ДУШАН
+МИРКОВИЋ ДУШАН
+МИРКОВИЋ ДУШКО
+МИРКОВИЋ ДУБРАВКА
+МИРКОВИЋ ЕДИТА
+МИРКОВИЋ ЕЛА
+МИРКОВИЋ ЕМИЛИЈА
+МИРКОВИЋ ГАВРИЛО
+МИРКОВИЋ ИВАН
+МИРКОВИЋ ЈОВАНКА
+МИРКОВИЋ ЈОВАН
+МИРКОВИЋ ЈОВАН
+МИРКОВИЋ ЈОВАН
+МИРКОВИЋ КАТИЦА
+МИРКОВИЋ ЛАЗАР
+МИРКОВИЋ ЉИЉАНА
+МИРКОВИЋ ЉИЉАНА
+МИРКОВИЋ МАРА
+МИРКОВИЋ МАРА
+МИРКОВИЋ МИЛАН ДР
+МИРКОВИЋ МИЛАН
+МИРКОВИЋ МИЛАН
+МИРКОВИЋ МИЛАН
+МИРКОВИЋ МИЛАН
+МИРКОВИЋ МИЛИЦА
+МИРКОВИЋ МИЛИСАВ
+МИРКОВИЋ МИЛИВОЈ ДИПЛ ИНГ
+МИРКОВИЋ МИЛИВОЈЕ
+МИРКОВИЋ МИЛКА
+МИРКОВИЋ МИЛОШ
+МИРКОВИЋ МИЛОСАВ
+МИРКОВИЋ МИЛОВАН
+МИРКОВИЋ МИЛУТИН
+МИРКОВИЋ МИОДРАГ
+МИРКОВИЋ МИРЈАНА
+МИРКОВИЋ МИРКО
+МИРКОВИЋ МИРОСЛАВ
+МИРКОВИЋ НЕНАД
+МИРКОВИЋ НОВАК
+МИРКОВИЋ ПЕТАР
+МИРКОВИЋ ПЕТАР
+МИРКОВИЋ ПЕТАР
+МИРКОВИЋ ПЕТАР
+МИРКОВИЋ ПРЕДРАГ
+МИРКОВИЋ РАДМИЛА
+МИРКОВИЋ РАТКО
+МИРКОВИЋ САЊА
+МИРКОВИЋ САВА
+МИРКОВИЋ СЛОБОДАН ДР ЛЕКАР
+МИРКОВИЋ СЛОБОДАН
+МИРКОВИЋ СТЕВАН
+МИРКОВИЋ СВЕТИСЛАВ
+МИРКОВИЋ ТРИФУН
+МИРКОВИЋ ВЛАДИМИР
+МИРКОВИЋ ЗОРАН ДР
+МИРКОВИЋ ЗОРАН
+МИРКОВИЋ ЗОРАН
+МИРКОВИЋ ЗОРКА
+МИРКОВИЋ ЗОРКА
+МИРНИЋ ЈОСИП ДР
+МИРНИЋ СИЛВИЈА
+МИРНИЋ ВУКАШИН
+МИРОШЕВИЋ НИНО
+МИРОНИЦКИ РУЖИЦА
+МИРОНИЦКИ ЗВОНИМИР
+МИРОСАВИЋ МИЛЕНКО
+МИРОСАВИЋ МИЛЕНКО
+МИРОСАВЉЕВ ИЛИНКА
+МИРОСАВЉЕВ ЈОЦА
+МИРОСАВЉЕВ МАРИЈА
+МИРОСАВЉЕВ МИЛЕНКО
+МИРОСАВЉЕВ МЛАДЕН
+МИРОСАВЉЕВИЋ АЛЕКСАНДАР
+МИРОСАВЉЕВИЋ БОШКО
+МИРОСАВЉЕВИЋ БОРИСЛАВ
+МИРОСАВЉЕВИЋ БОРИВОЈ
+МИРОСАВЉЕВИЋ БРАНКА
+МИРОСАВЉЕВИЋ ДОБРИЛА
+МИРОСАВЉЕВИЋ ЈОВАН
+МИРОСАВЉЕВИЋ ЛЕПОСАВА
+МИРОСАВЉЕВИЋ ЉУБИЦА
+МИРОСАВЉЕВИЋ ЉУБОДРАГ
+МИРОСАВЉЕВИЋ МАГДА
+МИРОСАВЉЕВИЋ МИЛЕНКО
+МИРОСАВЉЕВИЋ НИКОЛА
+МИРОСАВЉЕВИЋ НИКОЛА
+МИРОСАВЉЕВИЋ СТЕВАН
+МИРОСАВЉЕВИЋ СТРАХИЊА
+МИРОСАВЉЕВИЋ СВЕТИСЛАВ
+МИРОСАВЉЕВИЋ ТОМИСЛАВ
+МИРОСАВЉЕВИЋ ТОМИСЛАВ
+МИРОСАВЉЕВИЋ ВЕРА
+МИРОСАВЉЕВИЋ ВЕРА
+МИРОСАВЉЕВИЋ ВОЈИСЛАВ
+МИРОСАВЉЕВИЋ ЗОРАН
+МИРОСАВЉЕВИЋ ЗОРКА
+МИРОСЛАВЉЕВИЋ ДУШАНКА
+МИРОВИЋ АЛЕКСАНДАР
+МИРОВИЋ ДИМИТРИЈЕ
+МИРОВИЋ ИГОР
+МИРОВИЋ МАРИЈА
+МИРОВИЋ МИЛО
+МИРОВИЋ НЕНАД
+МИСАИЛОВИЋ СВЕТОЗАР
+МИСАЈЛОВИЋ МАРГИТА
+МИСАЉЕВИЋ НЕМАЊА
+МИСИМИ КАМБЕР
+МИСИНИ МИРИМАН
+МИСИРКИЋ МИЛОШ
+МИСИРКИЋ ВЛАДА
+МИСИРЛИС ГЕОРГИОС
+МИСКИН ДРАГАН
+МИСКИН МИЛОШ
+МИСКИН НИКО
+МИСКИН ЗДРАВКО
+МИСЛИМИ АЛИВЕБИ
+МИТАР ТОМА
+МИТАР ВЕРА
+МИТЕВСКИ ИВАН
+МИТИЋ ЧЕДОМИР
+МИТИЋ АЛЕКСАНДАР
+МИТИЋ БОРИВОЈ
+МИТИЋ БРАНИСЛАВА
+МИТИЋ БРАНИСЛАВ
+МИТИЋ БУДИМИР
+МИТИЋ ДАНИЦА
+МИТИЋ ДРАГОЉУБ
+МИТИЋ ДРАГОЉУБ
+МИТИЋ ДРАГУТИН
+МИТИЋ ДУШАН
+МИТИЋ ГОРДАНА
+МИТИЋ ИГОР
+МИТИЋ ЈОСИФ
+МИТИЋ ЈОВАН
+МИТИЋ ЈОВАН
+МИТИЋ МАРИЈА
+МИТИЋ МИЛАН
+МИТИЋ МИЛИВОЈ
+МИТИЋ МИОДРАГ ДР ЛЕКАР
+МИТИЋ МИОДРАГ
+МИТИЋ МИРКО
+МИТИЋ МИТАР ДИПЛ ИНГ
+МИТИЋ НИКОЛА
+МИТИЋ ПАВЛЕ
+МИТИЋ РАДИВОЈЕ
+МИТИЋ РУЖИЦА
+МИТИЋ СЛАВКО
+МИТИЋ СРЕБРА
+МИТИЋ СУЗАНА
+МИТИЋ ТОМИСЛАВ
+МИТИЋ ВЕЛИМИР
+МИТИЋ ВЕРА
+МИТИЋ ВИДОСАВА
+МИТИЋ ВИТОМИР
+МИТКОВИЋ ДРАГАН
+МИТОШЕВИЋ БОГДАН
+МИТОШЕВИЋ МИЛЕ
+МИТОШЕВИЋ НАДА
+МИТОШЕВИЋ САВА
+МИТОВИЋ АЛЕКСАНДАР
+МИТОВИЋ ДОБРИСЛАВ
+МИТОВИЋ МИРОСЛАВ
+МИТРАШИНОВИЋ ЉИЉАНА
+МИТРАШИНОВИЋ ЗОРА
+МИТРАКОВИЋ ЂУРАЂ
+МИТРАКОВИЋ МИРОСЛАВ
+МИТРАКОВИЋ НЕНАД
+МИТРАКОВИЋ УГЉЕША
+МИТРЕКАНИЋ МИЛОРАД
+МИТРЕСКИ МОМЧИЛО
+МИТРЕВСКА ЕВДОКИЈА
+МИТРЕВСКИ ЛАМБЕ
+МИТРЕВСКИ МОМЧИЛО
+МИТРЕВСКИ РАДА
+МИТРИЧЕВИЋ ЖИКА
+МИТРИЧЕВИЋ АНЂЕЛКА
+МИТРИЧЕВИЋ АНА
+МИТРИЧЕВИЋ СМИЉА
+МИТРИЋ ЂУРО
+МИТРИЋ БОГИЋ
+МИТРИЋ МИЛАН
+МИТРИЋ МИЛАН
+МИТРИЋ МИЛОШ
+МИТРИЋ НЕЂО
+МИТРИЋ НЕЂО
+МИТРИЋ НОВАК
+МИТРИЋ РАДМИЛА
+МИТРИЋ ВАЛЕНТИНА
+МИТРОВЧАН ЈУЛКИЦА
+МИТРОВЧАН КОСТА
+МИТРОВЧАН ЛАЗАР
+МИТРОВЧАН ЉУБИНКО
+МИТРОВЧАН ЉУБИНКО
+МИТРОВЧАН МИТА
+МИТРОВЧАН РАДИНКА
+МИТРОВЧАН СТЕВАН
+МИТРОВЧАН СТЈЕПАН
+МИТРОВЧАН ЗАГОРКА
+МИТРОВИЋ ЧЕДОМИР
+МИТРОВИЋ ЖАРКО
+МИТРОВИЋ ЖИВОРАД
+МИТРОВИЋ ЂОКО
+МИТРОВИЋ АЛЕКСАНДАР
+МИТРОВИЋ АЛЕКСАНДАР
+МИТРОВИЋ АЛЕКСАНДАР
+МИТРОВИЋ АНГЕЛИНА
+МИТРОВИЋ АНКА
+МИТРОВИЋ БИЉАНА
+МИТРОВИЋ БОШКО
+МИТРОВИЋ БОРИСЛАВ
+МИТРОВИЋ БРАНКО
+МИТРОВИЋ БРАНКО
+МИТРОВИЋ ДАНИЦА
+МИТРОВИЋ ДАРИНКА
+МИТРОВИЋ ДЕСАНКА
+МИТРОВИЋ ДРАГАН
+МИТРОВИЋ ДРАГАН
+МИТРОВИЋ ДРАГИЦА
+МИТРОВИЋ ДРАГИ
+МИТРОВИЋ ДРАГОЈЛО
+МИТРОВИЋ ДРАГОЉУБ
+МИТРОВИЋ ДУШАНКА
+МИТРОВИЋ ДУШАН
+МИТРОВИЋ ДУШАН
+МИТРОВИЋ ДУШКО
+МИТРОВИЋ ДУБРАВКА
+МИТРОВИЋ ГОЈКО
+МИТРОВИЋ ГОСПАВА
+МИТРОВИЋ ГОСПА
+МИТРОВИЋ ИКА
+МИТРОВИЋ ИВАН
+МИТРОВИЋ ЈЕЛЕНА
+МИТРОВИЋ ЈЕЛЕНА
+МИТРОВИЋ ЈЕЛИЦА
+МИТРОВИЋ ЈОВАН
+МИТРОВИЋ ЈОВАН
+МИТРОВИЋ ЈОВАН
+МИТРОВИЋ ЛАЗАР
+МИТРОВИЋ ЛАЗАР
+МИТРОВИЋ ЉИЉАНА
+МИТРОВИЋ ЉУБИСАВ
+МИТРОВИЋ ЉУБОМИР
+МИТРОВИЋ ЉУБОМИР
+МИТРОВИЋ МАРКО
+МИТРОВИЋ МИХАЈЛО
+МИТРОВИЋ МИХАЈЛО
+МИТРОВИЋ МИЛАНКА
+МИТРОВИЋ МИЛАН
+МИТРОВИЋ МИЛАН
+МИТРОВИЋ МИЛЕНА
+МИТРОВИЋ МИЛЕНКО
+МИТРОВИЋ МИЛИЦА
+МИТРОВИЋ МИЛКА
+МИТРОВИЋ МИЛОШ
+МИТРОВИЋ МИЛОШ
+МИТРОВИЋ МИЛОРАД
+МИТРОВИЋ МИЛОВАН
+МИТРОВИЋ МИОДРАГ
+МИТРОВИЋ МИОДРАГ
+МИТРОВИЋ МИОДРАГ
+МИТРОВИЋ МИРКО
+МИТРОВИЋ МИРКО
+МИТРОВИЋ МИРОСЛАВ
+МИТРОВИЋ МИРОСЛАВ
+МИТРОВИЋ МИТАР ДИПЛ ИНГ
+МИТРОВИЋ МЛАДЕН
+МИТРОВИЋ МЛАДЕН
+МИТРОВИЋ МЛАДЕН
+МИТРОВИЋ МОМЧИЛО
+МИТРОВИЋ МОМИР
+МИТРОВИЋ НАДЕЖДА
+МИТРОВИЋ НЕНАД
+МИТРОВИЋ НИКОЛА
+МИТРОВИЋ ОЛГА
+МИТРОВИЋ ПЕТАР
+МИТРОВИЋ РАДИСЛАВ
+МИТРОВИЋ РАДИВОЈЕ
+МИТРОВИЋ РАДИВОЈ
+МИТРОВИЋ РАДМИЛА
+МИТРОВИЋ РАДМИЛА
+МИТРОВИЋ РАДОЈИЦА
+МИТРОВИЋ РАДОВАН
+МИТРОВИЋ РАДОВАН
+МИТРОВИЋ РАДО
+МИТРОВИЋ РАТКО
+МИТРОВИЋ СЛАВКО
+МИТРОВИЋ СЛАВКО
+МИТРОВИЋ СЛОБОДАН
+МИТРОВИЋ СЛОБОДАН
+МИТРОВИЋ СЛОБОДАН
+МИТРОВИЋ СОФИЈА
+МИТРОВИЋ СРЕТА
+МИТРОВИЋ СТАКА
+МИТРОВИЋ СТАНИША
+МИТРОВИЋ СТАНКО
+МИТРОВИЋ СТЕВАН
+МИТРОВИЋ СТЕВАН
+МИТРОВИЋ СУЗАНА
+МИТРОВИЋ СУЗАНА
+МИТРОВИЋ ТИХОМИР ДИПЛ ИНГ
+МИТРОВИЋ ТИХОМИР
+МИТРОВИЋ ТОДЕ
+МИТРОВИЋ ВАЛЕРИЈА
+МИТРОВИЋ ВАСА
+МИТРОВИЋ ВЕЛИМИР
+МИТРОВИЋ ВЕРА
+МИТРОВИЋ ВЕРА
+МИТРОВИЋ ВЕРИЦА
+МИТРОВИЋ ВЕРОНИКА
+МИТРОВИЋ ВЕСЕЛИН
+МИТРОВИЋ ВЛАДИМИР
+МИТРОВИЋ ВУЧЕТА
+МИТРОВИЋ-ВУЈНИЋ СМИЉАНА
+МИТРОВИЋ ВУЈОШ
+МИТРОВИЋ ЗЛАТКО
+МИТРУШИЋ БОРИСЛАВ
+МИТРУШИЋ БРАНИСЛАВ
+МИТРУШИЋ ЈЕЛИСАВЕТА
+МИУЧИН НАТАЛИЈА
+МИУЧИН РОЗИНА
+МИУЧИН СЛАВКО
+МИУЧИН СВЕТОЗАР
+МИУЧИН ВЕРИЦА
+МИЗ МАРИЈА
+МИЗ РОМАН
+МИЗДРАК БРАНКО
+МЈЕДА СИМОН
+МЛАЂЕН ЂУРО
+МЛАЂЕН ДМИТАР
+МЛАЂЕНОВИЋ БРАНКА
+МЛАЂЕНОВИЋ ЕЛЕНА
+МЛАЂЕНОВИЋ РАДЕ
+МЛАДЕНОВИЋ ЖИВОРАД
+МЛАДЕНОВИЋ ЂОРЂЕ
+МЛАДЕНОВИЋ ЂОРЂЕ
+МЛАДЕНОВИЋ АЛЕКСАНДАР
+МЛАДЕНОВИЋ АЛЕКСАНДАР
+МЛАДЕНОВИЋ АНЂЕЛКА
+МЛАДЕНОВИЋ АНКИЦА
+МЛАДЕНОВИЋ БОШКО
+МЛАДЕНОВИЋ БОГДАН
+МЛАДЕНОВИЋ БОСИЉКА
+МЛАДЕНОВИЋ ДАНИЛО
+МЛАДЕНОВИЋ ДРАГАН
+МЛАДЕНОВИЋ ДРАГАН
+МЛАДЕНОВИЋ ДРАГОЉУБ
+МЛАДЕНОВИЋ ДРАГОМИР
+МЛАДЕНОВИЋ ДУШАН
+МЛАДЕНОВИЋ ДУШАН
+МЛАДЕНОВИЋ ГРАДИМИР
+МЛАДЕНОВИЋ ЈЕЛЕНА
+МЛАДЕНОВИЋ ЈЕЛЕНА
+МЛАДЕНОВИЋ ЈЕЛИЦА
+МЛАДЕНОВИЋ ЈЕЛИЦА
+МЛАДЕНОВИЋ ЈУСТИНА
+МЛАДЕНОВИЋ МАРА
+МЛАДЕНОВИЋ МАРИНА
+МЛАДЕНОВИЋ МИХАЈЛО
+МЛАДЕНОВИЋ МИЛАН ДИПЛ ИНГ
+МЛАДЕНОВИЋ МИЛАН
+МЛАДЕНОВИЋ МИЛАН
+МЛАДЕНОВИЋ МИЛОРАД
+МЛАДЕНОВИЋ МИЛОРАД
+МЛАДЕНОВИЋ МИЛОВАН
+МЛАДЕНОВИЋ МИЛОВАН
+МЛАДЕНОВИЋ МЛАДЕН
+МЛАДЕНОВИЋ НАДЕЖДА
+МЛАДЕНОВИЋ НЕБОЈША
+МЛАДЕНОВИЋ-НИКОЛИЋ ГОРДАНА
+МЛАДЕНОВИЋ ОЛГА
+МЛАДЕНОВИЋ ПЕТАР
+МЛАДЕНОВИЋ РАДИВОЈ
+МЛАДЕНОВИЋ РАЈКО
+МЛАДЕНОВИЋ РАНКО
+МЛАДЕНОВИЋ РУЖИЦА
+МЛАДЕНОВИЋ САВА
+МЛАДЕНОВИЋ СЛОБОДАН
+МЛАДЕНОВИЋ СЛОБОДАН
+МЛАДЕНОВИЋ СРБИСЛАВКА
+МЛАДЕНОВИЋ ТИХОМИР
+МЛАДЕНОВИЋ ТОМИСЛАВ
+МЛАДЕНОВИЋ ТОМИСЛАВ
+МЛАДЕНОВИЋ УРОШ
+МЛАДЕНОВИЋ ВЕКОСЛАВ
+МЛАДЕНОВИЋ ВЕРИЦА
+МЛАДЕНОВИЋ ВОЈИСЛАВ
+МЛАДЕНОВИЋ ЗАГОРКА
+МЛАДЕНОВИЋ ЗОРАНА
+МЛАДЕНОВСКИ ЛОЗАНА
+МЛАДИН ИМРЕ
+МЛАДИН МАРГИТА
+МЛАЗЕВ ВАСИЛ
+МЛИНАР МУХАРЕМ
+МЛИНАР МУСТАФА
+МЛИНКО АМБРОЗИЈЕ
+МЛИНКО ДУШАН
+МЛИНКО ПЕТАР
+МЛИНКО ЗВОНИМИР
+МОЧ ЈЕЛЕНА
+МОЧ ЈОВАНКА
+МОШО ЈОЖЕФ
+МОШОРИНАЦ ЖИВКО
+МОШОРИНАЦ НЕНАД
+МОШОРИНСКИ ЗАГОРКА
+МОШОРИНСКИ ЗОРА
+МОЋАН ЈЕЛЕНА ДИПЛ ИНГ
+МОЖЕ ЕМИЛ
+МОЦИЋ МОМИР
+МОЦИК ЂУЛА
+МОЦИК ИРЕНКА
+МОЦКО ЈАН
+МОЦКО-МИЛАДИНОВИЋ ВИЕРА
+МОЦКО МИРОСЛАВ
+МОЦКО СТЕВАН
+МОЦНАИ ИРЕНА
+МОЦНИ ЈОВАН
+МОЦНИ МАРИЈА
+МОЦНИ СТЕВАН
+МОДЕЛСКИ БРАНИСЛАВА
+МОДИЋ МИЛЕНКО
+МОДИЋ МИЛЕНКО
+МОДИЋ МИЛИВОЈЕ
+МОДИЋ РАНКО
+МОДИЋ СЛОБОДАН
+МОДИЋ ТОМИСЛАВ
+МОДИЋ ТОМИСЛАВ
+МОДОШАНОВ МАРТА
+МОДОШАНОВ НИКОЛА
+МОДРАХ ВЛАДИМИР
+МОДРИ ШАНДОР
+МОДРИ ДРАГАН
+МОДРИ ЕВА
+МОДРИЋ ИЛИЈА
+МОДРИЋ СТАНКО
+МОДРИНИЋ МИЛИЦА
+МОДРОЊА ФЕХИМ
+МОФАРДИН СПАСЕНКА
+МОГА БРАНКО
+МОГА ЈОВАН
+МОГА МИЛАН ДР ЛЕКАР
+МОГА МЛАДЕН
+МОГА ПАЈА
+МОГА СТЕВАН
+МОГА ВЕРА
+МОГИЋ АЛЕКСАНДАР
+МОГИЋ БОРИСЛАВ
+МОГИЋ ГОРАНА
+МОГИН АЛЕКСАНДАР
+МОГИН АЛЕКСАНДАР
+МОГИН АЛЕКСАНДАР
+МОГИН БОРИСЛАВ
+МОГИН ИРИНА
+МОГИН ЈЕЛЕНА
+МОГИН ЈУЛИЈАНА
+МОГИН КСЕНИЈА
+МОГИН ЛАЗАР
+МОГИН ЉУБИША
+МОГИН МАРА
+МОГИН МИЛАНА
+МОГИН МИЛАН
+МОГИН ПАВЛЕ
+МОГИН ПАВЛЕ
+МОГИН ПАВЛЕ
+МОГИН ПЕТАР
+МОГИН РАДОМИР
+МОГИН РАДОМИР
+МОГИН ВИТОМИР
+МОХАЧИ АЛЕКСАНДАР
+МОХАЧИ ЛАСЛО
+МОХАН ДЕАНА
+МОХАН ЈОН
+МОХАН ПЕТАР
+МОХАН СМИЉАНА
+МОХОРА ЕМИЛИЈАН
+МОХОРИЋ ДАНИЦА
+МОХОРКО ИЛИЈА
+МОХОРКО ИЛИЈА
+МОХОРКО МАРГИТА
+МОХОРКО РАЈКО
+МОЈИЋ ДУШАН
+МОЈИЋ ДУШАН
+МОЈИЋ ИВАНКА
+МОЈИЋ МИЛИВОЈЕ
+МОЈИЋ МИЛОРАД
+МОЈИЋ МИТАР
+МОЈИЋ НИКОЛА
+МОЈИЋ НИКОЛА
+МОЈИЋ СЛАВКО
+МОЈИЋЕВИЋ ДЕСИМИР
+МОЈИН СОФИЈА
+МОЈСЕ КАТИЦА
+МОЈСЕ НАНДОР
+МОЈСЕЈЕВ АЛЕКСАНДАР
+МОЈСЕЈЕВ КОНСТАНТИН ДИПЛ ПХ
+МОЈСИЈЕВИЋ НИКОЛА
+МОЈСИЈЕВИЋ САВА
+МОЈСИЛОВ ДИМИТРИЈЕ
+МОЈСИЛОВ ДРАГАН
+МОЈСИЛОВ МИЛИСАВ
+МОЈСИЛОВИЋ МИЛОМИР
+МОЈСИЛОВИЋ ПЕТАР
+МОЈСИЛОВИЋ СЛАВИЦА
+МОЈСИЛОВИЋ ВЕРА
+МОЈСИЛОВИЋ ВИДОЈЕ
+МОЈСИН ДРАГОМИР
+МОЈСОВИЋ АЛЕКСАНДАР
+МОЈЗЕШ АЛФРЕД
+МОЈЗЕШ МАРИЈА
+МОКУШ ШАНДОР
+МОКУШ ИМРЕ
+МОКУШ ЈОВАН
+МОКУШ КАЛМАН
+МОКУШ ЛАСЛО
+МОКУШ ЛАСЛО
+МОКУШ ЛАСЛО
+МОКУШ МИКЛОШ
+МОКУШ ТИБОР
+МОКУШ ЗОЛТАН
+МОЛАЦ МИЛОРАД
+МОЛЦ КАТИЦА
+МОЛДОВАН ЉУБИНКА
+МОЛДОВАН МАРИЈА
+МОЛДОВАНОВ БОШКО
+МОЛДОВАНОВИЋ ЂОРЂЕ
+МОЛДВАИ ЕРВИН
+МОЛДВАИ ИЗАБЕЛА
+МОЛДВАИ ЛАСЛО
+МОЛДВАИ ОТО
+МОЛДВАЈ ФРАЊА
+МОЛДВАЈ ХИЛДА
+МОЛДВАЈ-ОЛАХ ЕМИЛИЈА
+МОЛДВАЈ РОЗАЛИА
+МОЛДВАЈ СТЕВАН
+МОЛДВАЈ ВИКТОР
+МОЛДВАЈИ ПРЕДРАГ
+МОЛЕРОВ РАДОВАН
+МОЉАЦ ЂОРЂЕ
+МОЉАЦ БРАНКА
+МОЉАЦ ГАВРА
+МОЉАЦ ГАВРА
+МОЉАЦ ЈОВАН
+МОЉАЦ ЈОВАН
+МОЉАЦ КАТИЦА
+МОЉАЦ МИЛИЦА
+МОЉАЦ МИОДРАГ
+МОЉАЦ НАДА
+МОЉАЦ ПАЈА
+МОЉАЦ СТЕВАН
+МОЉАЦ СТЕВАН
+МОЉАЦ ВЕРА
+МОЉСКИ МИРОСЛАВ
+МОЛКУЦ ПЕТАР ДИПЛ ИНГ
+МОЛКУЦ ВИРЂИНЕЛ
+МОЛНАР ШАНДОР
+МОЛНАР-ШТЕФУЛИК ИЛОНА
+МОЛНАР ЂОРЂЕ
+МОЛНАР АЛЕКСАНДАР
+МОЛНАР АНДРАШ
+МОЛНАР АНДРАШ
+МОЛНАР АНТОН
+МОЛНАР АРПАД
+МОЛНАР БРАНИСЛАВА
+МОЛНАР ДЕЖЕ
+МОЛНАР ЕМИЛИЈА
+МОЛНАР ЕМИЛИЈА
+МОЛНАР ЕВИЦА
+МОЛНАР ФЕОДОР
+МОЛНАР ФЕРЕНЦ ДИПЛ ИНГ
+МОЛНАР ИШТВАН
+МОЛНАР ИШТВАН
+МОЛНАР ИМРЕ ДР
+МОЛНАР ИМРЕ
+МОЛНАР ИМРЕ
+МОЛНАР ИРЕНА
+МОЛНАР ИВАН ДИПЛ ИНГ
+МОЛНАР ИВАН
+МОЛНАР ИВАН
+МОЛНАР ЈАКОВ
+МОЛНАР ЈАНОШ
+МОЛНАР ЈАН
+МОЛНАР ЈЕЛЕНА
+МОЛНАР ЈЕЛИЦА
+МОЛНАР ЈЕЛИСАВЕТА
+МОЛНАР ЈЕЛИСАВЕТА
+МОЛНАР ЈЕЛИСАВЕТА
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЖЕФ
+МОЛНАР ЈОЛАНКА
+МОЛНАР ЈОСИП
+МОЛНАР ЈОСИП
+МОЛНАР ЈОСИП
+МОЛНАР ЈОСИП
+МОЛНАР ЈОВАН
+МОЛНАР КАРЛО
+МОЛНАР КАТАЛИН
+МОЛНАР ЛАСЛО
+МОЛНАР ЛАЗАР
+МОЛНАР МАЋАШ
+МОЛНАР МАРИЈА ДР
+МОЛНАР МАРТА ДР
+МОЛНАР МАТИЛДА
+МОЛНАР МИХАЈЛО
+МОЛНАР МИХАЉ
+МОЛНАР МИХАЉ
+МОЛНАР МИХАЉ
+МОЛНАР МИХАЉ
+МОЛНАР МИЛАН
+МОЛНАР МИРОН
+МОЛНАР НИКОЛА
+МОЛНАР СПОМЕНКА
+МОЛНАР СВЕТОСЛАВ
+МОЛНАР ТЕРЕЗА
+МОЛНАР ВЕРА
+МОЛНАР ВИЛМОШ ДИПЛ ИНГ
+МОЛНАР ВЈЕРА
+МОЛНАР ВЛАДИМИР
+МОЛНАР ЗВОНКО
+МОМЧИЛОВ ДОБРИЈА
+МОМЧИЛОВ ГАВРИЛО
+МОМЧИЛОВ ГАВРИЛО
+МОМЧИЛОВ СТЕВАН
+МОМЧИЛОВИЋ ЧЕДОМИР
+МОМЧИЛОВИЋ БОГОМИР
+МОМЧИЛОВИЋ БРАНКО ДР
+МОМЧИЛОВИЋ ДАНЕ
+МОМЧИЛОВИЋ ДРАГАН
+МОМЧИЛОВИЋ ДУШАНКА
+МОМЧИЛОВИЋ ИЛИЈА
+МОМЧИЛОВИЋ МИХАЈЛО
+МОМЧИЛОВИЋ МИЛАН
+МОМЧИЛОВИЋ МИЛАН
+МОМЧИЛОВИЋ МИЛЕ
+МОМЧИЛОВИЋ МИРА
+МОМЧИЛОВИЋ МИРА
+МОМЧИЛОВИЋ МОМЧИЛО
+МОМЧИЛОВИЋ ПЕТАР
+МОМЧИЛОВИЋ РУЖИЦА
+МОМЧИЛОВИЋ СМИЉА
+МОМЧИЛОВИЋ ТОМИСЛАВ
+МОМЧИЛОВИЋ ВАСА
+МОМЧИЛОВИЋ ВИДАН
+МОМЧИЛОВИЋ ВОЈИСЛАВ
+МОМЧИЛОВИЋ ВУКИЦА
+МОМАНИ АКРАМ
+МОМИЋ ОБРАД
+МОМИРОВ ИЛИЈА
+МОМИРОВ ЉИЉАНА
+МОМИРОВ МИЛЕНКО
+МОМИРОВ МИЛЕТА
+МОМИРОВ МИРОСЛАВ
+МОМИРОВ НАДА
+МОМИРОВ ПАЈА
+МОМИРОВ САВА
+МОМИРОВ СВЕТЛАНА
+МОМИРОВ СВЕТОЗАР
+МОМИРОВ ТОША
+МОМИРОВ ЗОРИЦА
+МОМИРОВИЋ БРАНКО
+МОМИРОВИЋ ЈЕЛИЦА
+МОМИРОВИЋ ЈОВИЦА
+МОМИРОВИЋ ЛАЗА
+МОМИРОВИЋ ПЕТАР
+МОМИРОВИЋ СРЕЋКО
+МОМИРОВИЋ СТЕВАН
+МОМИРОВСКИ-МИЛОШЕВИЋ ЦВЕТАНА
+МОНАР ЈАНКО
+МОНАРЕВ АЛЕКСАНДАР
+МОНАРЕВ ЈОСИПА
+МОНАРЕВ-СОКОЛИЋ НАДА
+МОНАРОВ ЕЛИЗАБЕТА
+МОНАРОВ ЈОЗЕФИНА
+МОНДОВИЋ ЂУЛА
+МОНДОВИЋ АЛЕКСАНДАР
+МОНДОВИЋ ФРАЊА
+МОНДОВИЋ КАТИЦА
+МОНДОВИЋ ЛАДИСЛАВ
+МОНГЕЈАР РАДОСАВА
+МОНИ ИСЛАМ
+МОНОКИ ЂУЛА
+МОНОКИ ИШТВАН
+МОР ЂЕРЂ
+МОР ФРАЊА
+МОР ГАБОР
+МОР ГАБОР
+МОР ЛАСЛО
+МОР ЗДЕНКО
+МОРА АНА
+МОРА АНДРАШ
+МОРА КОРНЕЛИЈА
+МОРАЧА ЂУРАЂ
+МОРАЧА МИОДРАГ
+МОРАЧА НИКОЛА
+МОРАЧА РАДМИЛА
+МОРАЧА ВАСО
+МОРАЧА ВАСО
+МОРАЧАНИН МИЛОРАД
+МОРАИЋ ЂОРЂЕ
+МОРАРЕВИЋ ЉУБИЦА
+МОРАРЕВИЋ ВОЈКАН
+МОРАВАЦ ВОЈИСЛАВ
+МОРАВЕК ЈАНКО
+МОРЕ МАРИЈА
+МОРЕ СИЛВЕСТЕР
+МОРГЕНТАЛЕР ЈОВАН
+МОРИЋ ХАМО
+МОРИЦ ДРАГУТИН
+МОРИЦ ГАБОР
+МОРИЦ ЈАНОШ
+МОРИЦ ЈЕЛЕНА
+МОРИЦ ЈУЛИЈА
+МОРИЦ КАРЛО
+МОРИЦ ЛАЈОШ
+МОРИЦ ЛАСЛО
+МОРИЦ ЛАСЛО
+МОРИЦ ЛИДИЈА
+МОРИЦ МИЛАНА
+МОРИЦ ПАУЛА
+МОРИЦ СИЛАРД
+МОРИЦ СЛАВИЦА
+МОРИЦ ЗОЛТАН
+МОРОШЕВ РАДОСЛАВ
+МОРОКВАШИЋ БОГДАНКА
+МОРОКВАШИЋ МИЛИСАВ
+МОРОКВАШИЋ НЕНАД
+МОРОКВАШИЋ НИКОЛА
+МОРОМИЛОВ ЉУБИНКА
+МОРОТВАНСКИ ВИДОСАВА
+МОРОВИЋ МАТИЛДА
+МОРОВИЋ МИЛЕНА
+МОРОВИЋ НЕСТОР
+МОРОВИЦ ЛАСЛО
+МОРВАИ ШАНДОР
+МОРВАИ ЂЕРЂ
+МОРВАИ ФЕРЕНЦ
+МОРВАИ ЈАНОШ
+МОРВАИ КАРЛО
+МОРВАИ ЛАДИСЛАВ
+МОРВАИ ПЕТАР
+МОСИЋ МИОДРАГ
+МОСКАЉ ЉУБОМИР
+МОСКАЉ НИКОЛА
+МОСКАЉ НИКОЛА
+МОСКАЉ РАДМИЛА
+МОСКВАЉ САВКА
+МОСЛОВАЦ КАТАРИНА
+МОСНАК АНДРИЈА
+МОСНАК ПАВЕЛ
+МОСТАРАЦ ЈЕЛЕНА
+МОСТАРСКИ СЛАВИЦА
+МОСТИЋ РАДМИЛА
+МОСУРОВИЋ МИЛИЈАНА
+МОТОК ЂОРЂЕ
+МОТОК БРАНКО
+МОТОРОЖЕСКУ АУРОРА
+МОВРИН ИВАН
+МОЗЕТИЋ МЛАДЕН
+МРЧАРИЦА ЗОРАН
+МРША МИЛЕНКА
+МРШИЋ ЂОРЂЕ
+МРШИЋ БОГДАН
+МРШИЋ ДУШАН
+МРШИЋ МАРКО
+МРШИЋ МИЛЕ
+МРШО АНТО
+МРШУЉА НИКОЛА
+МРШУЉА РАДОМИР
+МРЂА БОШКО
+МРЂА БОГДАН
+МРЂА МАНЕ
+МРЂА МИЛКАН
+МРЂА МИРОСЛАВ
+МРЂА СТЕВАН
+МРЂА ЗОРАН
+МРЂАН ДУШАН
+МРЂАН МИХАЈЛО
+МРЂАН РУЖИЦА
+МРЂАН САВА
+МРЂАН САВА
+МРЂАН СТЕВАН
+МРЂАН СТЕВАН
+МРЂАНИН ВЛАДИСЛАВ
+МРЂАНОВ ЖАРКО
+МРЂАНОВ АНИЦА
+МРЂАНОВ КСЕНИЈА
+МРЂАНОВ ЛАЗА
+МРЂАНОВ МАРИНКО
+МРЂАНОВ МЕЛАНИЈА
+МРЂАНОВ МИРОСЛАВ
+МРЂАНОВ МОМЧИЛО
+МРЂАНОВ НЕМАЊА
+МРЂАНОВ НОВИЦА
+МРЂАНОВ ПРОКА
+МРЂАНОВ СМИЉА
+МРЂАНОВ ВУКОСАВА
+МРЂАНОВ ЗДРАВКО
+МРЂЕН ИЛИЈА
+МРЂЕН ЈЕЛЕНА
+МРЂЕН ЛАЗАР
+МРЂЕН МИРКО
+МРЂЕН ВЕЉКО
+МРЂЕНОВ КАТИЦА
+МРЂЕНОВИЋ БРАНИСЛАВ
+МРЂЕНОВИЋ БРАНКО
+МРЂЕНОВИЋ ЉУБОМИР
+МРЂЕНОВИЋ НЕБОЈША
+МРЂЕНОВИЋ ПЕТАР
+МРЂЕНОВИЋ ВАСО
+МРАЧАЈАЦ ЦВИЈО
+МРАЧАЈАЦ ДЕЈАН
+МРАЋЕВИЋ РАДИВОЈ
+МРАКОВИЋ БОЖИДАР
+МРАКОВИЋ ЉУБАН
+МРАКОВИЋ СЛОБОДАНКА
+МРАОВИЋ-БАХУН МИЛИЈАНА
+МРАОВИЋ ДРАГАН
+МРАОВИЋ ДУШАН
+МРАОВИЋ КАТИЦА
+МРАОВИЋ МАРКО
+МРАОВИЋ ОЛГА ДР ПРАВНИК
+МРАОВИЋ СЛОБОДАН
+МРАОВИЋ СТОЈАН
+МРАТИНКОВИЋ БОРИС ДР ЛЕКАР
+МРАТИНКОВИЋ ДУШАН ДР
+МРАТИНКОВИЋ ЉУБИЦА
+МРАВИК ЖИВКА
+МРАВИК ЂУРА
+МРАВИК ПАВЛЕ
+МРАЗ АНДРИЈА
+МРАЗЕК БЕРНАРДО
+МРАЗОВИЋ ЈОСИП
+МРАЗОВИЋ МИЛАНА
+МРАЗОВИЋ МИЛАН
+МРАЗОВИЋ НЕВЕНКА
+МРДАК ЂОРЂЕ
+МРДАК МИРАШ
+МРДАКОВИЋ БОРИСАВ
+МРДАКОВИЋ МИЛУТИН
+МРДАКОВИЋ ВЕРИЦА
+МРДАКОВИЋ ВУКОСАВ
+МРДАЉ ПЕТАР
+МРДИЋ КАРОЛИНА
+МРДИЋ МАРКО
+МРДИЋ САЊА
+МРГАНИЋ ЈОЗО
+МРГАНИЋ СРЕЋКО
+МРГИЋ МИРЈАНА
+МРКШИЋ ЂОРЂЕ
+МРКШИЋ АЛЕКСАНДАР
+МРКШИЋ БОЈАНА
+МРКШИЋ ДРАГАН
+МРКШИЋ ДРАГАН
+МРКШИЋ ЈЕЛЕНА
+МРКШИЋ ЈОЦА
+МРКШИЋ ЈОЦА
+МРКШИЋ КОСТА
+МРКШИЋ МИЛОШ
+МРКШИЋ НЕНАД
+МРКШИЋ СЛАВИЦА
+МРКШИЋ ЗАГОРКА
+МРКШИЋ ЗЛАТА
+МРКАИЋ ГОРАН
+МРКАИЋ СИМА
+МРКАИЋ ТОМИСЛАВ
+МРКАЉ БОЖИДАР
+МРКЕЛА МИРА
+МРКЕЛА ВОЈИН
+МРКИЋ БРАНИСЛАВ
+МРКИЋ МИЛКА МР ПХ
+МРКИЋ НИКОЛА
+МРКИЋ СМИЉА
+МРКОЈЕВИЋ КОСТА
+МРКОЈЕВИЋ МАРИЈА
+МРКОЊЕВ ДРАГАН
+МРКОЊИЋ ЖИВОЈИН
+МРКОВАЧКИ ЈЕЛЕНА
+МРКОВАЧКИ МИЛОШ
+МРКОВАЧКИ МИЛОВАН
+МРКОВИЋ МЛАДЕН
+МРКУШИЋ МИЛИЦА
+МРКУШИЋ МИЛИЦА
+МРКУШИЋ РАДИВОЈ
+МРКУШИЋ СТЕВАН
+МРМОШ МИЛАН
+МРНУШТИК СТЕВАН
+МРВИЋ НЕДЕЉКО
+МРВИЋ САВА
+МРВИЋ СТЕВАН
+МРВИЋ ВУКОМИР
+МРВИЦА РУЖИЦА
+МРВОШ ЈОВАН
+МРВОШ МИХАИЛО
+МРВОШ МИЛАНКА
+МУЧАЛИЦА ДРАГОЉУБ
+МУЧАЛО СЛАВИЦА
+МУЧАЛОВ СЛОБОДАН
+МУЧАЛОВИЋ ДУШКО
+МУЧЕНСКИ ЉУБОМИР
+МУЧЕНСКИ НИКОЛА
+МУЧЕНСКИ ВЛАДИМИР
+МУЧИ ЂЕРЂ ДИПЛ ИНГ
+МУЧИ АНДРАШ
+МУЧИ ФРАЊА
+МУЧИ ИЛОНА
+МУЧИ ИЛОНКА
+МУЧИ ЈОЖЕФ
+МУЧИ ЈОЖЕФ
+МУЧИБАБИЋ МИРЈАНА
+МУЧИБАБИЋ НАТАЛИЈА
+МУЧИБАБИЋ РАДОВАН
+МУЧИБАБИЋ РАДОВАН
+МУЧИБАБИЋ САВО
+МУЧИБАБИЋ ВЕРА
+МУЧУ ЈОВАН
+МУЧУ НИКОЛА
+МУШАН МАРИЈА
+МУШИЋ ФРАЊА
+МУШИЦКИ ЋИРА
+МУШИЦКИ ЖИВАН
+МУШИЦКИ ЖИВАН
+МУШИЦКИ ЖИВАН
+МУШИЦКИ ЂОРЂЕ
+МУШИЦКИ ЂОРЂЕ
+МУШИЦКИ БОГДАН
+МУШИЦКИ БОЈАНА
+МУШИЦКИ БРАНИСЛАВ
+МУШИЦКИ БРАНКА
+МУШИЦКИ ДОРОТЕЈА
+МУШИЦКИ ДРАГАН
+МУШИЦКИ ДРАГОСЛАВ
+МУШИЦКИ ДУШАН
+МУШИЦКИ ДУШАН
+МУШИЦКИ ДУШАН
+МУШИЦКИ ЕВИЦА
+МУШИЦКИ ЈОВАН
+МУШИЦКИ ЛАЗАР
+МУШИЦКИ МАРИЈА
+МУШИЦКИ МИЛАНА
+МУШИЦКИ МИЛЕНКО
+МУШИЦКИ МИЛИЦА
+МУШИЦКИ МИЛИЦА
+МУШИЦКИ МИЛОРАД
+МУШИЦКИ НАТАША
+МУШИЦКИ НОВАК
+МУШИЦКИ ПРОКА
+МУШИЦКИ СЛАВКО
+МУШИЦКИ СЛАВКО
+МУШИЦКИ СОФИЈА
+МУШИЦКИ СТЕВАН
+МУШИЦКИ ВЕЉКО
+МУШИКИЋ БОЖИДАР
+МУШИКИЋ ЉУБИЦА
+МУШИКИЋ РАДОМИР
+МУШИКИЋ РАТКО
+МУШКИЊА БАРИЦА
+МУШКИЊА МИРКО
+МУЖЕК ВИДА
+МУЖИЈЕВИЋ РИСТО
+МУЖИК БИЉАНА
+МУЖИК МАТА
+МУЖИКА-ТОТ ЗОЛТАН
+МУЖЛАИ ШАНДОР
+МУЦ ЗЛАТОМИР
+МУЦИ ЈАНОШ
+МУДРЕНИЋ МАРИЈА
+МУДРЕНИЋ РАДИСЛАВ
+МУДРИ ЕУГЕН
+МУДРИ ЈОАКИМ
+МУДРИ ЉУБИЦА
+МУДРИ МИРОСЛАВ
+МУДРИ ПЕТАР
+МУДРИ ПЕТАР
+МУДРИ ВЕРА ДР ВЕТЕРИНЕ
+МУДРИ ВЛАДА
+МУДРИ ВЛАДИМИР
+МУДРИ ВЛАДИМИР
+МУДРИЋ ЂУРА
+МУДРИЋ ДРАГОЉУБ
+МУДРИЋ ЉУБОМИР ДИПЛ ИНГ
+МУДРИЋ ПЕТАР
+МУДРИЋ СЛАВКА
+МУДРИНИЋ БОШКО
+МУДРИНИЋ БОШКО
+МУДРИНИЋ БРАНКО
+МУДРИНИЋ ГОЈКО
+МУДРИНИЋ МАЈА
+МУДРИНИЋ МИХАЈЛО
+МУДРИНИЋ МИЛАН
+МУДРИНИЋ МИЛЕВА
+МУДРИНИЋ МЛАДЕН
+МУДРИНИЋ ПЕТАР ДР
+МУДРИНИЋ СЛАВКО
+МУДРИНИЋ СПАСЕНКА
+МУДРИНИЋ СТЕВО
+МУДРИНИЋ СТОЈАН
+МУДРИНИЋ ВЛАДИМИР
+МУДРИНИЋ ВОЈИН
+МУДРИНСКИ ЂОРЂЕ
+МУДРИНСКИ АЛЕКСАНДАР
+МУДРИНСКИ АЛЕКСАНДАР
+МУДРИНСКИ БОРИСЛАВ
+МУДРИНСКИ БОСИЉКА
+МУДРИНСКИ ИВАНКА
+МУДРИНСКИ ЛАЗАР
+МУДРИНСКИ МИЛАН
+МУДРИНСКИ МИЛЕТА
+МУДРИНСКИ МИЛОШ
+МУДРИНСКИ МИРОСЛАВ
+МУДРИНСКИ ОЛГА
+МУДРИНСКИ ПЕТАР
+МУДРИНСКИ САВА
+МУДРИНСКИ СОФИЈА
+МУДРИНСКИ СТЕВАН
+МУДРИНСКИ ВОЈИСЛАВ
+МУГОША МИЛО
+МУХА ЗУЗАНА
+МУХАРЕМИ ФУАД
+МУХАРЕМСКИ-БЕЋИРОВИЋ РЕМЗИЈА
+МУХАРИ ЛАЈОШ
+МУХИ БЕЛА
+МУЈАНОВИЋ САФЕТ
+МУЈАНОВИЋ СЛОБОДАН
+МУЈАНОВИЋ СВЕТЛАНА
+МУЈЕЗИНОВИЋ АЛМАС
+МУЈЕЗИНОВИЋ ИРЕНА
+МУЈЕЗИНОВИЋ ЗЛАТАН
+МУЈИЋ МИЛАН
+МУЈКАНОВИЋ САЛИХ
+МУЈКИЋ ШЕФИК
+МУЈКИЋ ХАЈРУДИН
+МУЈКИЋ ИЛДУЗА
+МУЈКИЋ ИЗУДИН
+МУЈКИЋ ЈАКУБ
+МУЈКИЋ МЕХМЕД
+МУК-САМАРЏИЋ ЕМА
+МУЛАИ МАТИЈА
+МУЛАЈ ЕСТИКА
+МУЛАЈ КАТИЦА
+МУЛИЋ КАТАРИНА
+МУЛИЋ МИОДРАГ
+МУЛИЋ МИРОСЛАВ
+МУЛИЋ ПЕТАР
+МУЛИЋ РАДМИЛО
+МУЛИЋ СВЕТИСЛАВ
+МУЛИЋ ВЕЉКО
+МУЛИЋ ЗОРАН
+МУМЏИЋ ХАЗИР
+МУМИН АЛЕКСАНДАР
+МУМИН НИКОЛА
+МУМИНАГИЋ АЛИДА
+МУМИНОВИЋ АЛИМ
+МУМИНОВИЋ ХАМЕД
+МУМОВИЋ АНДРИЈА
+МУМОВИЋ ЈОВА
+МУМОВИЋ САВА
+МУНЋАН ЂОРЂЕ
+МУНЋАН ЂОРЂЕ
+МУНЋАН ЂОРЂЕ
+МУНЋАН АЛЕКСАНДАР
+МУНЋАН АНГЕЛИНА
+МУНЋАН БОШКО
+МУНЋАН БОШКО
+МУНЋАН ДРАГАН
+МУНЋАН ДРАГОЉУБ
+МУНЋАН ДУШАН
+МУНЋАН ЈОВАН ДР
+МУНЋАН ЈОВАН
+МУНЋАН ЛАЗАР
+МУНЋАН ЛАЗА
+МУНЋАН МИЛЕНКО
+МУНЋАН РАДОВАН
+МУНЋАН СЛАВКО
+МУНЋАН СОФИЈА
+МУНЋАН ТОДОР
+МУНЋАН ВАСА
+МУНЋАН ВЕСЕЛИН
+МУНЋАН ВЛАДИМИР
+МУНЋАН ЗОРА
+МУНЏИЋ ЖИВОЈИН
+МУНЏИЋ БОГДАН
+МУНЏИЋ МИРЈАНА
+МУНЏИЋ ПЕТАР
+МУНДИНГ ЕТЕЛКА
+МУНИШИЋ ЈОВАН
+МУНИЖАБА ЂОРЂЕ ДИПЛ ИНГ
+МУНИЖАБА БРАНИСЛАВ
+МУНИЖАБА ЈОВАН
+МУНИЖАБА КАТИЦА
+МУНИЖАБА ЛАЗАР
+МУНИЖАБА МИЛЕНКО
+МУНИЖАБА ВЕДРАНА
+МУНИТЛАК ДРАГАН
+МУЊАС БОЖИДАР
+МУЊАС ДМИТАР
+МУЊАС МИЛАН
+МУЊАС СИМКА
+МУЊАС СТАНА
+МУЊИН ЖИВКО
+МУЊИН АЛЕКСАНДАР
+МУЊИН-БАНИЋ ОЛГА ДИПЛ ПРАВНИК
+МУЊИН КАЈИЦА
+МУЊИН ЛАЗАР
+МУЊИН ПЕТАР
+МУЊИН СМИЉА
+МУЊИЗА ЖЕЉКО
+МУЊИЗА ЈОВАНКА
+МУНК ЂОРЂЕ
+МУНКА ДУШАНКА
+МУНКАЧИ МИХАЈЛО
+МУНТЕАН ИЛИЈА
+МУНТЕАН ТОДОР
+МУНЗАР ВЕРА
+МУРАТИ МИЉАЗИМ
+МУРАТИ СТАНА
+МУРАТОВИЋ ИБРАХИМ
+МУРАТОВИЋ ЈОВО
+МУРАТОВИЋ МИКА
+МУРАТОВИЋ РАДЕНКО
+МУРАТОВИЋ САБРИЈА
+МУРГАШКИ БРАНКА
+МУРГАШКИ ДАНИЦА
+МУРГАШКИ ДОБРЕН
+МУРГАШКИ ДУШАН
+МУРГАШКИ ЈОВАН
+МУРГАШКИ ЉУБИНКА
+МУРГАШКИ МАТИЈА
+МУРГАШКИ МИХАЈЛО
+МУРГАШКИ МИЛИЦА
+МУРГАШКИ МИЛОШ
+МУРГАШКИ МИЛОРАД
+МУРГАШКИ МИРОСЛАВ
+МУРГАШКИ НЕНАД
+МУРГАШКИ НОВАК
+МУРГАШКИ ПЕТАР
+МУРГАШКИ САВА
+МУРГАШКИ СЕВЕР
+МУРГАШКИ СЛОБОДАН ДР
+МУРГАШКИ СВЕТОЗАР
+МУРГАШКИ ВУКОСАВА
+МУРГУЛ ЉУБОМИР
+МУРГУЛОВИЋ МОМИР
+МУРИЋ СЛАВКО
+МУРИЋ СТЕВАН
+МУРИЋ ВЕЉКО
+МУРИЊИ ЈОСИП
+МУРИЊИ КАТИЦА
+МУРИЊИ МИЛЕВА
+МУРИЊИ СТОЈАНКА
+МУРПХУ МИРЈАНА
+МУРСЕЛИ МИРЧЕ
+МУРСЕЛИ НЕЗИР
+МУРСЕЛОВИЋ НАЗИФ
+МУРСЕЛОВИЋ РАИФ
+МУСА ИВАНКА
+МУСА ЈЕЛИЦА
+МУСАФИЈА БЛАНКА
+МУСИЋ ШАБАНИЈА
+МУСИЋ ШЕМСА
+МУСИЋ КАТИЦА
+МУСИЋ МИРКО
+МУСИЋ РАДОЈКА
+МУСИЋ ЗОРАН
+МУСИН КАЛМАН
+МУСОВСКИ ИСА
+МУСТАФИЋ БРАНКА
+МУСТАФИЋ ХАРИЗ
+МУСТАФИЋ МИЛИЦА
+МУСТАФИЋ СЕДАТ
+МУСТАФОСКИ БЕДРИЈА
+МУСТЕДАНАГИЋ ЕСАД
+МУСУЛИН ГОРКИ
+МУСУЛИН МИЛОРАД
+МУСУЛИН СЛАВКО
+МУТАБЏИЈА МИЛОВАН
+МУТАВЧИЕВ ИВАН
+МУТАВЏИЋ-ГИОН МАРИЈА
+МУТАВЏИЋ МИЛАН
+МУТАВЏИЋ МИЛАН
+МУТАВЏИЋ МИЛОШ
+МУТАВЏИЋ РАТКО
+МУТАВЏИЋ ТОМИСЛАВ
+МУТАВЏИЋ ВЕЉКО
+МУТАВЏИЋ ЗЛАТА
+МУТАВЏИЈА МИРЈАНА
+МУТИЋ ЖИВКО
+МУТИЋ БРАНКО
+МУТИЋ ДУШАН
+МУТИЋ ДУШАН
+МУТИЋ ДУШАН
+МУТИЋ ДУШИЦА
+МУТИЋ КАМЕНКО
+МУТИЋ ЉИЉАНА
+МУТИЋ РАДОСЛАВ
+МУТИЋ СМИЉА
+МУТИБАРИЋ АЛЕКСАНДАР ДР
+МУТИБАРИЋ АЛЕКСАНДАР
+МУТИБАРИЋ ДРАГОЉУБ
+МУТИБАРИЋ ИРЕНА
+МУТИБАРИЋ ЛИБУША
+МУТИБАРИЋ МИЛАН
+МУТИБАРИЋ МИЛЕ
+МУТИБАРИЋ НАТАША
+МУТИБАРИЋ СТЕВАН
+МУТИБАРИЋ ТОДОР
+МУТИН ЂОРЂЕ
+МУТИН ЕМИЛ
+МУТИН ЗДРАВКО
+МУЗАЛЕВСКИ АЛЕКСАНДАР
+МУЗЕКА МАРИЈАНА
+МУЗЕР ФРАЊА
+МУЗЕР МИРОСЛАВ
+МУЗЕР РАДОСЛАВ
+МУЗИКРАВИЋ БЛАЖО
+МУЗИКРАВИЋ ЉУБОМИР ДР
+НАЧ АНДРИЈА
+НАЧА ЈАНОШ
+НАЧА ЈОСИП
+НАЧА ОТИЛИЈА
+НАШИГАЋИН МИЛЕНКО
+НАЋУК АЛЕКСАНДАР
+НАЋУК ИРИНА
+НАЂ ЧОНГОР
+НАЂ ЧОНГОР
+НАЂ ШАНДОР
+НАЂ ШАНДОР
+НАЂ ЂЕРЂ
+НАЂ-АБОЊИ ГАБОР
+НАЂ АЛЕКСАНДАР
+НАЂ АНА
+НАЂ АНГЕЛА
+НАЂ БАРБАРА
+НАЂ БЕЛА
+НАЂ БРАНКА
+НАЂ ДЕЖЕ
+НАЂ-ДОРОТИЋ МАРИЈА
+НАЂ ДРАГИСЛАВ
+НАЂ ДУШАНКА
+НАЂ ЕРЖЕБЕТ
+НАЂ ЕТЕЛ
+НАЂ ЕУФЕМИЈА
+НАЂ ФЕРЕНЦ
+НАЂ ФЕРЕНЦ
+НАЂ ФЕРЕНЦ
+НАЂ ФЕРЕНЦ
+НАЂ ФЕРЕНЦ
+НАЂ-ФОРКАШ КАТИЦА
+НАЂ ФРАЊА
+НАЂ ФРАЊА
+НАЂ ФРАЊА
+НАЂ ГЕОРГИНА
+НАЂ ГИЗЕЛА
+НАЂ-ХЕВЕШИ ЛАСЛО
+НАЂ ИШТВАН
+НАЂ ИШТВАН
+НАЂ ИЛОНА
+НАЂ ИМРЕ
+НАЂ ИРИНА
+НАЂ ИВАН
+НАЂ ЈАНОШ
+НАЂ ЈАНОШ
+НАЂ ЈОЖЕФ
+НАЂ ЈОЖЕФ
+НАЂ ЈОЖЕФ
+НАЂ ЈОЖЕФ
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОСИП
+НАЂ ЈОВАНКА
+НАЂ ЈОВАН
+НАЂ КАРЛО
+НАЂ КАРОЉ
+НАЂ КАРОЉ
+НАЂ КАТАРИНА
+НАЂ ЛАДИСЛАВ
+НАЂ ЛАЈОШ
+НАЂ ЛАЈОШ
+НАЂ ЛАСЛО ДИПЛ ИНГ
+НАЂ ЛАСЛО
+НАЂ ЛАСЛО
+НАЂ ЛАСЛО
+НАЂ ЛАСЛО
+НАЂ ЛАСЛО
+НАЂ ЛЕОНА
+НАЂ ЛЕОНА
+НАЂ ЉУБИЦА
+НАЂ МАРГАРЕТА
+НАЂ МАРИЈА
+НАЂ МАРИЈА
+НАЂ МАРТОН
+НАЂ-МЕЉКУТИ ЕДИТ
+НАЂ МИХАЈЛО
+НАЂ МИХАЉ
+НАЂ МИРА
+НАЂ МИРА
+НАЂ МИРА
+НАЂ МИРЈАНА
+НАЂ НАНДОР
+НАЂ НАНДОР
+НАЂ НЕВЕНКА
+НАЂ НИКОЛА
+НАЂ НОВИЦА
+НАЂ ОТО
+НАЂ ОТО
+НАЂ ПАВЛЕ
+НАЂ ПАВЛЕ
+НАЂ ПЕТАР
+НАЂ ПЕТАР
+НАЂ ПЕТАР
+НАЂ ПЕТЕР
+НАЂ ПИРОШКА
+НАЂ ПИРОШКА
+НАЂ-ПОПОВ ЦЕЦИЛИЈА
+НАЂ РОЗА
+НАЂ СЛАВКО
+НАЂ СТЕВАН
+НАЂ СТЕВАН
+НАЂ СВЈАТОСЛАВ
+НАЂ-ТАНАСКОВИЋ ЈУЛИЈА
+НАЂ ТИБОР
+НАЂ ВАСИЛИЈЕ
+НАЂ ВЕРОНА
+НАЂ ВИКТОРИЈА
+НАЂ ВЛАДИМИР
+НАЂ ВЛАДИМИР
+НАЂ ВЛАДИМИР
+НАЂ ВЛАДИМИР
+НАЂ ЗЛАТИМИР
+НАЂ ЗОЛТАН
+НАЂАЛИН БРАНКО
+НАЂАЛИН ИСА
+НАЂБАБИ ФЕРЕНЦ
+НАЂБАБИ ФЕРЕНЦ
+НАЂБАБИ ИГОР
+НАЂБАБИ ИВКА
+НАЂБАБИ ЈАНИКА
+НАЂЕРЂ ИЛОНКА
+НАЂГЕЛЕРТ ЈАНОШ
+НАЂХЕЂЕШИ ФРАЊА
+НАЂХЕЂЕШИ ЈОВАН
+НАЂХЕЂЕШИ ЛАДИСЛАВ
+НАЂИДАИ КАРОЉ
+НАЂМЕЉКУТИ КЛАРА
+НАЂМИЋО ВЕСЕЛИНА
+НАЂОРЂ САША
+НАЂПАЛ ИРЕНКА
+НАЂВИНСКИ КСЕНИЈА
+НАЂВИНСКИ ПЕТАР
+НАЦЕВ ГРУЈО
+НАДАШКИ ЛАЗАР
+НАДАШКИ МИЛИВОЈ
+НАДАШКИ МИРОСЛАВ
+НАДАШКИЋ КАТИЦА
+НАДАЖДИ РУЖИЦА
+НАДАРЕВИЋ БОРИС
+НАДБАНДИЋ СВЕТИСЛАВ ДИПЛ ИНГ
+НАДБАНТИЋ НАДА
+НАДИХ ФРИДРИХ
+НАДИХ МИРКО
+НАДЛАЧКИ АЛЕКСАНДАР
+НАДЛАЧКИ МИЛОЈЕ
+НАДЛАЧКИ РАДИВОЈ
+НАДЛАЧКИ РАДОВАН
+НАДЛАЧКИ СТЕВКА
+НАДЛУКАЧ МАРИЈА
+НАДРЉАНСКИ ЂОРЂЕ
+НАДРЉАНСКИ ДАНИЛКА
+НАДРЉАНСКИ ЉИЉАНА
+НАДРЉАНСКИ ЉУБИША
+НАДРЉАНСКИ МИЛИВОЈ
+НАДРЉАНСКИ СЛОБОДАН
+НАДРЉАНСКИ СТЕВАН
+НАЕРАЦ СЛОБОДАН
+НАГЛИЋ СЛАВКО
+НАГРАДИЋ ЈЕЛЕНА
+НАГРАДИЋ ЉУБИЦА
+НАХЛОВСКИ ЈОЖЕФ
+НАЈБАУЕР ИВАН
+НАЈДАНОВ ГЕОРГИ
+НАЈДАНОВ ИВАН
+НАЈДЕК ВИНКО
+НАЈДОВСКИ ТОМИСЛАВ
+НАЈДОВСКИ ТОМИСЛАВ
+НАЈИЋ АНКИЦА
+НАЈИЋ МИЛЕНКО
+НАЈИЋ ЗОРИЦА
+НАЈВИРТ ГОТФРИД
+НАЈВИРТ ЈОВАН
+НАКАРАДА ДАРИНКА
+НАКАРАДИЋ ЉУБО
+НАКИЋ ДРАГАН
+НАКИЋ ИВАН
+НАКИЋ ЈАЊА
+НАКИЋ ЉУБИНКА
+НАКИЋ РАДОВАН
+НАКИЋ СТЕВАН
+НАКОМЧИЋ ЗОРКА
+НАКОВ ЈОРДАН
+НАЛИЋ ДРАГИЦА
+НАЛИЋ ЕНИСА
+НАМЕСНИК ОЛГА
+НАМЛИЂИ ФЕРИДА
+НАНАШИ ЖОЛТ
+НАНАШИ АГАТА
+НАНАШИ ЈУЛИЈАНА
+НАНИЋ ЂОКА
+НАНОВСКИ ВЛАДИМИР
+НАНОВСКИЈ АЛЕКСАНДАР
+НАОДОВИЋ ПАВЛЕ
+НАРАИ ФЕРЕНЦ
+НАРАНЧИЋ ИЛОНКА
+НАРАНЧИЋ МИЛЕ
+НАРАНЧИЋ МИЛЕ
+НАРАНЧИЋ МИЛОРАД
+НАРАНЧИЋ НАДА
+НАРАНЧИЋ ПЕТАР
+НАРАНЧИЋ ПЕТАР
+НАРАНЧИЋ ПЕТАР
+НАРАНЧИЋ ПЕТАР
+НАРАНЧИЋ САВА
+НАРАНЧИЋ СТЕВАН
+НАРАНЧИЋ СТЕВАН
+НАРАНЧИЋ СУЗАНА
+НАРАНЧИЋ ВЛАДИМИР
+НАРАНЏИЋ ДАРКО
+НАРАНЏИЋ ЕВА
+НАРАНЏИЋ МИЛАН
+НАРАНЏИЋ МИРЈАНА
+НАРАНЏИЋ ВЕРА
+НАРИЋ НЕДЕЉКО
+НАС ЂЕРЂ
+НАС ФЕРЕНЦ
+НАС ФРАЊА
+НАС КАРЛО
+НАСКОВИЋ БЛАЖА
+НАСКОВИЋ ЗОРКА
+НАСОВ МИЛИВОЈ
+НАСТАСИЋ ДРАГАН
+НАСТАСИЋ ИВАН
+НАСТАСИЋ ЈЕЛЕНА
+НАСТАСИЋ ЉИЉАНА
+НАСТАСИЋ ПАВЛЕ
+НАСТАСИЋ РАДОСЛАВ
+НАСТАСИЋ СТЕВАН ДР ЛЕКАР
+НАСТАСИЋ ТАТЈАНА
+НАСТАСИЋ ТЕОДОР
+НАСТАСИЈЕВИЋ МИРОСЛАВ
+НАСТАСОВИЋ МЛАДЕН
+НАСТАСОВИЋ ТОНЧА
+НАСТЕВИЋ ТОДОР
+НАСТИЋ ИРЕНА
+НАСТИЋ ЛЕПОСАВА
+НАСТИЋ МИХАИЛО
+НАСТИЋ МИЛЕНА
+НАСТИЋ МИЛИЦА
+НАСТИЋ МИРЈАНА
+НАСТИЋ НИКОЛЕТА
+НАСТИЋ ОЛГА
+НАСТИЋ РАДЕ
+НАСТИЋ РАДИСАВ
+НАСТИЋ РАДОМИР
+НАСТИЋ РАТОМИР
+НАСТИЋ СВЕТОЗАР
+НАСТИЋ ВЛАДА
+НАСТИЋ ЗОРАН ДР ЛЕКАР
+НАСТОВ КИРО
+НАСТОВСКИ ДРАГО
+НАТОШЕВИЋ ДЕЈАН
+НАУМОВ ЂОРЂЕ
+НАУМОВ БРАНКА
+НАУМОВ ДРАГОЉУБ
+НАУМОВ КАТАРИНА
+НАУМОВ КАТАРИНА
+НАУМОВ МИЛЕНА
+НАУМОВ МИЛИВОЈ
+НАУМОВ СТЕВАН
+НАУМОВИЋ ЈЕЛИЦА
+НАУМОВИЋ МИЛИВОЈ ДР
+НАУМОВИЋ НИКОЛА
+НАУМОВИЋ СЛОБОДАН
+НАУМОВСКИ МИРКО
+НАУМОВСКИ НИКОЛА
+НАУМОВСКИ СОЊА
+НАУМОВСКИ СТОЈАН
+НАУМОВСКИ ТАНАС
+НАУНКОВИЋ БОГДАНКА
+НАУНКОВИЋ СИНИША
+НАВАЛА НИКОЛА
+НАВАЛУШИЋ ЈУЛИЈАНА
+НАВАЛУШИЋ ВОЈИН
+НАВРАТИЛ ЂУРА
+НАВРАТИЛ ЈОСИП
+НАВРАТИЛ ЈОСИП
+НАВРАТИЛ СЛОБОДАН
+НАВРАТИЛ ЗДЕНКО
+НАВРАТИЛ ЗОРАН
+НАЗДРАВЕЦКИ АНДРАШ
+НЕЧОВСКИ ДИМИТРИЈЕ
+НЕШЕВИЋ АНЂЕЛКА
+НЕШЕВИЋ АНЂЕЛКО
+НЕШИЋ АЦА
+НЕШИЋ АЛЕКСАНДАР
+НЕШИЋ АЛЕКСАНДАР
+НЕШИЋ БОЖИДАР
+НЕШИЋ БРАНИСЛАВ ДР
+НЕШИЋ БРАНИСЛАВ
+НЕШИЋ ДИМИТРИЈЕ
+НЕШИЋ ДУШАН
+НЕШИЋ ЈЕФТА
+НЕШИЋ ЈОВАН
+НЕШИЋ ЈОВАН
+НЕШИЋ ЈОВАН
+НЕШИЋ ЈОВАН
+НЕШИЋ КОСАНА
+НЕШИЋ ЛЕНКА
+НЕШИЋ ЛЕОНИД
+НЕШИЋ ЉИЉАНА
+НЕШИЋ МАРЈАН
+НЕШИЋ МИЛАН
+НЕШИЋ МИЛАН
+НЕШИЋ МИЛАН
+НЕШИЋ МИЛЕНКО
+НЕШИЋ МИЛИЦА
+НЕШИЋ МИЛИВОЈ
+НЕШИЋ МИЛКА
+НЕШИЋ МИЛОРАД
+НЕШИЋ МИРА
+НЕШИЋ МИРКО
+НЕШИЋ МИРОСЛАВА
+НЕШИЋ МЛАДЕН
+НЕШИЋ МЛАДЕН
+НЕШИЋ НЕДЕЉКО
+НЕШИЋ ПЕТАР
+НЕШИЋ РАДИСАВ
+НЕШИЋ САВЕТА
+НЕШИЋ СИМЕОН
+НЕШИЋ СЛАВКО
+НЕШИЋ СЛАВОЈКА
+НЕШИЋ ТОДОР
+НЕШИЋ ВЛАДИМИР
+НЕШИН ЖАРКО
+НЕШИН ЈОВАНА
+НЕШИН ЈОВАН
+НЕШИН МАРКО
+НЕШИН СТЕВАН
+НЕШКОВ ДРАГОСЛАВ ДР
+НЕШКОВ СТАНИСЛАВ
+НЕШКОВ ВОЈИСЛАВ
+НЕШКОВИЋ ЂУРЂА
+НЕШКОВИЋ АЛЕКСАНДАР
+НЕШКОВИЋ ДРАГАН
+НЕШКОВИЋ ИРЕНА
+НЕШКОВИЋ ЈЕЛЕНА
+НЕШКОВИЋ ЉУБИША
+НЕШКОВИЋ МИХАИЛО
+НЕШКОВИЋ МИЛАН
+НЕШКОВИЋ МИЛИЈАН
+НЕШКОВИЋ МИЛИСАВ
+НЕШКОВИЋ МИЛИВОЈЕ
+НЕШКОВИЋ МИЛКА
+НЕШКОВИЋ МИЛОВАН
+НЕШКОВИЋ МИТА
+НЕШКОВИЋ НЕШКО
+НЕШКОВИЋ ПЕРИЦА
+НЕШКОВИЋ ПЕТАР
+НЕШКОВИЋ РАДИСАВ
+НЕШКОВИЋ РАДОМИР
+НЕШКОВИЋ РАДОЊА
+НЕШКОВИЋ РЕЈМОНД
+НЕШКОВИЋ РУЖИЦА
+НЕШКОВИЋ СТЕВАН
+НЕШКОВИЋ-ЗДРАВИЋ ВЕРИЦА
+НЕШОВИЋ ДЕСАНКА
+НЕШОВИЋ ДРАГАН ДИПЛ ИНГ
+НЕШОВИЋ ДРАГАНА
+НЕШОВИЋ ДРАГАН
+НЕШОВИЋ ИВАНКА
+НЕШОВИЋ МИЛОВАН
+НЕШОВИЋ ПРЕДРАГ
+НЕШОВИЋ РАДОМИР
+НЕШОВИЋ РУЖИЦА
+НЕШОВИЋ ТРИВКА
+НЕШТИЦКИ ЈОСИП
+НЕШТИЦКИ ЈОСИП
+НЕШТИЦКИ МИЛИЦА
+НЕШТИЦКИ СТЕВАН
+НЕЋАК ЂОРЂЕ
+НЕЋАК АЛЕКСАНДАР
+НЕЋАК БРАНКО
+НЕЋАК-КОРАЋ АНЂЕЛКА
+НЕЋАК СТЕВАН
+НЕЋАК ВЕРА
+НЕЋАК ЗДРАВКО
+НЕЋАКОВ МАРИЈА
+НЕЋАКОВ МИЛАН
+НЕЋАКОВ МИЛКА
+НЕЋАКОВ СИМА
+НЕЋАКОВ СЛОБОДАН
+НЕЖИЋ ДАМИР
+НЕАТНИЦА ДУШАН
+НЕАТНИЦА РАДИВОЈ ДИПЛ ИНГ
+НЕБЕСНИ БОРИС
+НЕБОЈША СОФИЈА
+НЕБРИГИЋ ЈОВИЦА
+НЕБРИГИЋ РАТКО
+НЕЦЕВ ДРАГОЉУБ
+НЕЦИЋ ДРАГОЉУБ
+НЕЦИЋ ТОША
+НЕЦИН ЖИВИЦА
+НЕЦИН СТЕВА
+НЕЦИН ВОЈА
+НЕЦИН ЗЛАТОМИР
+НЕЦКОВ ДРАГИЊА
+НЕЦКОВ ГОРАН
+НЕЦКОВ КАТИЦА
+НЕЦКОВ ЛАЗАР
+НЕЦКОВ ЛОЗИНКА
+НЕЦКОВ МАРИЈА
+НЕЦКОВ МИРЈАНА
+НЕЦКОВ МОМЧИЛО
+НЕЦКОВ НИКОЛА
+НЕДЕЉКОВ ЖИВКО
+НЕДЕЉКОВ ЖИВКО
+НЕДЕЉКОВ ЂОРЂЕ
+НЕДЕЉКОВ ЂОРЂЕ
+НЕДЕЉКОВ ЂОРЂЕ
+НЕДЕЉКОВ АНЂЕЛКА
+НЕДЕЉКОВ АНКА
+НЕДЕЉКОВ ДЕСАНКА
+НЕДЕЉКОВ ДРАГАН
+НЕДЕЉКОВ ДРАГИЊА
+НЕДЕЉКОВ ДУШАН
+НЕДЕЉКОВ ИЛИЈА
+НЕДЕЉКОВ ИРЕНА
+НЕДЕЉКОВ ИВАН
+НЕДЕЉКОВ ЈЕЛЕНА
+НЕДЕЉКОВ ЈОВАН
+НЕДЕЉКОВ ЈОВАН
+НЕДЕЉКОВ ЈУЛИЈАНА
+НЕДЕЉКОВ КАТИЦА
+НЕДЕЉКОВ КРСТА
+НЕДЕЉКОВ ЛАЗАР ДИПЛ ИНГ
+НЕДЕЉКОВ ЛИНА
+НЕДЕЉКОВ ЉИЉАНА
+НЕДЕЉКОВ ЉУБИЦА
+НЕДЕЉКОВ ЉУБИЦА
+НЕДЕЉКОВ МАРИЈА
+НЕДЕЉКОВ МАРИЈА
+НЕДЕЉКОВ МАРКО
+НЕДЕЉКОВ МИЛАН
+НЕДЕЉКОВ МИЛАН
+НЕДЕЉКОВ МИЛИВОЈ
+НЕДЕЉКОВ МИЛОШ
+НЕДЕЉКОВ МИРЈАНА
+НЕДЕЉКОВ МИРКО
+НЕДЕЉКОВ МИРОСЛАВА
+НЕДЕЉКОВ МИТА
+НЕДЕЉКОВ ОЛГА
+НЕДЕЉКОВ ОЛГА
+НЕДЕЉКОВ РАДЕ
+НЕДЕЉКОВ РАДИВОЈ
+НЕДЕЉКОВ РАДОЈКА
+НЕДЕЉКОВ РАДОМИР
+НЕДЕЉКОВ СИНИША
+НЕДЕЉКОВ СТЕВАН
+НЕДЕЉКОВ ТЕОДОРА
+НЕДЕЉКОВ ТОМИСЛАВ
+НЕДЕЉКОВ ВИНКА
+НЕДЕЉКОВ ВОЈИСЛАВ
+НЕДЕЉКОВИЋ ЖИВКО
+НЕДЕЉКОВИЋ ЖИВКО
+НЕДЕЉКОВИЋ ЖИВКО
+НЕДЕЉКОВИЋ ЖИВОЈИН
+НЕДЕЉКОВИЋ ЂОРЂЕ
+НЕДЕЉКОВИЋ ЂОРЂЕ
+НЕДЕЉКОВИЋ АЛЕКСАНДАР
+НЕДЕЉКОВИЋ АЛЕКСАНДАР
+НЕДЕЉКОВИЋ АНДРИЈА
+НЕДЕЉКОВИЋ БОГОМИР
+НЕДЕЉКОВИЋ БОРИСЛАВ ДИПЛ ИНГ
+НЕДЕЉКОВИЋ БОРКА
+НЕДЕЉКОВИЋ БОСИЉКА
+НЕДЕЉКОВИЋ ДАРИНКА
+НЕДЕЉКОВИЋ ДОБРИЛА
+НЕДЕЉКОВИЋ ДОБРИНКА
+НЕДЕЉКОВИЋ ДРАГАН
+НЕДЕЉКОВИЋ ЈАДРАНКА
+НЕДЕЉКОВИЋ ЈЕЛЕНА
+НЕДЕЉКОВИЋ ЈОРДАН
+НЕДЕЉКОВИЋ ЈОВАН
+НЕДЕЉКОВИЋ ЈОВАН
+НЕДЕЉКОВИЋ ЈУГОСЛАВ
+НЕДЕЉКОВИЋ ЈУЛКИЦА
+НЕДЕЉКОВИЋ ЈУСТА
+НЕДЕЉКОВИЋ ЛЕПОСАВА
+НЕДЕЉКОВИЋ ЉУБОМИР
+НЕДЕЉКОВИЋ МАРКО
+НЕДЕЉКОВИЋ МИЛАН
+НЕДЕЉКОВИЋ МИЛАН
+НЕДЕЉКОВИЋ МИЛАН
+НЕДЕЉКОВИЋ МИЛЕНКО
+НЕДЕЉКОВИЋ МИЛИЈА
+НЕДЕЉКОВИЋ МИЛИСАВ
+НЕДЕЉКОВИЋ МИЛОЈКА
+НЕДЕЉКОВИЋ МИЛОЈКА
+НЕДЕЉКОВИЋ МИЛУТИН
+НЕДЕЉКОВИЋ МИРЈАНА
+НЕДЕЉКОВИЋ МИРОСЛАВ
+НЕДЕЉКОВИЋ МИРОСЛАВ
+НЕДЕЉКОВИЋ НЕБОЈША
+НЕДЕЉКОВИЋ НИКОЛА
+НЕДЕЉКОВИЋ ПАВА
+НЕДЕЉКОВИЋ РАДОЈИЦА
+НЕДЕЉКОВИЋ РАДОМИР
+НЕДЕЉКОВИЋ РАДОВАН
+НЕДЕЉКОВИЋ СИМА
+НЕДЕЉКОВИЋ СИМА
+НЕДЕЉКОВИЋ СЛАВКО
+НЕДЕЉКОВИЋ СЛОБОДАНКА
+НЕДЕЉКОВИЋ СЛОБОДАНКА
+НЕДЕЉКОВИЋ СЛОБОДАН
+НЕДЕЉКОВИЋ СОФИЈА
+НЕДЕЉКОВИЋ СРЕТА
+НЕДЕЉКОВИЋ СТАНИМИР
+НЕДЕЉКОВИЋ СТЕВАН
+НЕДЕЉКОВИЋ СТЕВАН
+НЕДЕЉКОВИЋ СТЕВАН
+НЕДЕЉКОВИЋ СВЕТИСЛАВ
+НЕДЕЉКОВИЋ СВЕТИСЛАВ
+НЕДЕЉКОВИЋ СВЕТОЗАР
+НЕДЕЉКОВИЋ ВЕРА
+НЕДЕЉКОВИЋ ВЕРИЦА
+НЕДЕЉКОВИЋ ВЛАДИСЛАВ ДР
+НЕДЕЉКОВИЋ ВОЈИСЛАВ
+НЕДЕЉКОВИЋ ВУЧКО
+НЕДЕЉКОВИЋ ЗАГОРКА
+НЕДЕЉКОВИЋ ЗЛАТА
+НЕДИЋ ШПИРО
+НЕДИЋ БИЉАНА
+НЕДИЋ БОРИСЛАВ
+НЕДИЋ БОРЈАНКА
+НЕДИЋ ДАРИНКА
+НЕДИЋ ДЕСАНКА ПРОФЕСОР
+НЕДИЋ ДРАГОСЛАВ
+НЕДИЋ ЈЕЛЕНА
+НЕДИЋ ЈЕЛИСАВЕТА
+НЕДИЋ ЈОВАН ДИПЛ ИНГ
+НЕДИЋ ЈОВАН
+НЕДИЋ КАТИЦА
+НЕДИЋ КАТИЦА
+НЕДИЋ ЛАЗАР
+НЕДИЋ ЛАЗАР
+НЕДИЋ ЛАЗАР
+НЕДИЋ ЛАЗАР
+НЕДИЋ ЉУБИЦА
+НЕДИЋ МЕЛАНИЈА
+НЕДИЋ МИЛАН
+НЕДИЋ МИЛАН
+НЕДИЋ МИЛАН
+НЕДИЋ МИЛЕНКО
+НЕДИЋ МИЛОШ
+НЕДИЋ МИЛОЈЕ
+НЕДИЋ МИЛОВАН
+НЕДИЋ МИРОСЛАВ
+НЕДИЋ МЛАДЕН
+НЕДИЋ НЕНАД
+НЕДИЋ НИКОЛА
+НЕДИЋ ПЕТАР
+НЕДИЋ РАДОШ
+НЕДИЋ РАДОМИР
+НЕДИЋ РАДОСЛАВ
+НЕДИЋ РАДОСЛАВ
+НЕДИЋ САВА
+НЕДИЋ СМИЉА
+НЕДИЋ СНЕЖАНА
+НЕДИЋ-СРЕМАЦ НАДА
+НЕДИЋ СТЕВАН
+НЕДИЋ ВЕРА
+НЕДИЋ ВИДА
+НЕДИЋ ВЛАДИМИР
+НЕДИЋ ЗЛАТОЈЕ
+НЕДИЋ ЗОРАН
+НЕДИМОВИЋ БОЖО
+НЕДИМОВИЋ ДРАГАН
+НЕДИМОВИЋ ГОРДАНА
+НЕДИНИЋ СРЕТЕН
+НЕДИНИЋ ЗОРАН
+НЕДОМАЧКИ МИЛАН
+НЕДОМАЧКИ СТЕВАН
+НЕДОВИЋ АНКИЦА
+НЕДОВИЋ МИРО
+НЕДОВИЋ МИРО
+НЕДОВИЋ ВЛАДО
+НЕДУЧИЋ СВЕТОЗАР
+НЕДУЧИН АЛЕКСАНДАР
+НЕДУЧИН ДРАГИЦА
+НЕДУЧИН ЛАЗАР ДИПЛ ИНГ
+НЕДУЧИН МИЛЕНА
+НЕДВИДЕК БОРИС ДР
+НЕГЛИЋ ЂОРЂЕ
+НЕГЛИЋ КАТИЦА
+НЕГОВАНОВИЋ ЖИВКО
+НЕГОВАНОВИЋ БРАНКО
+НЕГОВАНОВИЋ ЛАЗАР
+НЕГРУ БИСЕРКА
+НЕГУШЕВИЋ ПАЈА
+НЕЈГЕБАУЕР АЛЕКСАНДАР ДР ПРОФ
+НЕМЧАНИН ЂУРЂИЦА
+НЕМЧАНИН МАРИЈА
+НЕМЧАНИН МИРЈАНА
+НЕМЧЕВ БОРИВОЈ
+НЕМЧЕВ ДУШКО
+НЕМЧЕВ ЈЕЛЕНА
+НЕМЧЕВ НИКОЛА
+НЕМЧЕВ СРБИНКО
+НЕМЧЕВИЋ МАРКО
+НЕМЧЕВИЋ ПЕТАР
+НЕМА ВАЛЕРИЈА
+НЕМЕЧЕК РОЖА
+НЕМЕШ ЈЕЛА
+НЕМЕШ СЛОБОДАНКА
+НЕМЕЦ АНТУН
+НЕМЕЦ АНТУН
+НЕМЕЦ ЕМАНУЕЛ
+НЕМЕЦ ЉУДМИЛА
+НЕМЕТ ШАНДОР
+НЕМЕТ АНДРИЈА
+НЕМЕТ АНТАЛ
+НЕМЕТ АНТАЛ
+НЕМЕТ АНТАЛ
+НЕМЕТ АРПАД
+НЕМЕТ БОРИСЛАВКА
+НЕМЕТ ДЕЖЕ
+НЕМЕТ ДЕЈАН
+НЕМЕТ ЕРНЕСТ
+НЕМЕТ ГЕРГЕЉ
+НЕМЕТ ГЕЗА ДР
+НЕМЕТ ГЕЗА
+НЕМЕТ ИШТВАН
+НЕМЕТ ИШТВАН
+НЕМЕТ ИШТВАН
+НЕМЕТ ИЛОНА
+НЕМЕТ ИЛОНА
+НЕМЕТ ИЛОНКА
+НЕМЕТ ЈУЛИЈАНА
+НЕМЕТ КАРЛО
+НЕМЕТ КАРЛО
+НЕМЕТ КАТИЦА
+НЕМЕТ ЛАЈОШ
+НЕМЕТ ЛАСЛО
+НЕМЕТ ЛАСЛО
+НЕМЕТ ЉИЉАНА
+НЕМЕТ МАРИЈАНА
+НЕМЕТ МАРИЈА
+НЕМЕТ МАРИЈА
+НЕМЕТ МИХАЉ
+НЕМЕТ МИЛКА
+НЕМЕТ МИРЈАНА
+НЕМЕТ-МУЧИ МАРИЈА
+НЕМЕТ ОЛИВЕРА
+НЕМЕТ ОТО
+НЕМЕТ ПЕТАР
+НЕМЕТ РОЗАЛИЈА
+НЕМЕТ РУДОЛФ
+НЕМЕТ СТЕВАН
+НЕМЕТ СТОЈАНКА
+НЕМЕТ ТИБОР
+НЕМЕТ ВИОЛЕТА
+НЕМЕТ ЗОЛТАН
+НЕМЕТ ЗОЛТАН
+НЕМЕТХ ИРЕНА
+НЕНАД СИМО
+НЕНАДИЋ МИЛАН
+НЕНАДИЋ МИЛЕНКО
+НЕНАДИЋ МИЛОРАД
+НЕНАДИЋ РАТКО
+НЕНАДОВ ЖИВКО
+НЕНАДОВ АМАЛИЈА
+НЕНАДОВ АНКА
+НЕНАДОВ БРАНИСЛАВ
+НЕНАДОВ ДРАГОМИР
+НЕНАДОВ ЈЕВРОСИМА
+НЕНАДОВ КАМЕНКО
+НЕНАДОВ КОСТА ДИПЛ ИНГ
+НЕНАДОВ МИЛЕНКО
+НЕНАДОВ МИЛЕНКО
+НЕНАДОВ ОЛГА
+НЕНАДОВ ПЕТАР
+НЕНАДОВ РАЈКО
+НЕНАДОВ СТЕВАН
+НЕНАДОВ ВОЈИСЛАВ
+НЕНАДОВИЋ БОРИСЛАВ
+НЕНАДОВИЋ ДАНИЦА
+НЕНАДОВИЋ ДРАГИЦА
+НЕНАДОВИЋ ДУШАН
+НЕНАДОВИЋ ЈУЛКИЦА
+НЕНАДОВИЋ МИХАЈЛО
+НЕНАДОВИЋ МИЛЕНКО ДР
+НЕНАДОВИЋ МИТАР
+НЕНАДОВИЋ ПАНТА
+НЕНАДОВИЋ ПЕТАР
+НЕНАДОВИЋ СЛАВНА
+НЕНАДОВИЋ СЛОБОДАН
+НЕНАДОВИЋ ВАСИЛИЈЕ
+НЕНЕЗИЋ ЂОРЂЕ
+НЕНЕЗИЋ ДАРКО
+НЕНЕЗИЋ МИРОСЛАВ
+НЕНЕЗИЋ РАДЕНКО
+НЕНЕЗИЋ РАДИСАВ
+НЕНИЋ ЂОРЂЕ
+НЕНИЋ БРАНИМИР
+НЕНИЋ САВА
+НЕНИЋ ВЕРА
+НЕНИЋ ВЕРИЦА
+НЕНИН ЖИВКО
+НЕНИН ДЕЈАН
+НЕНИН ДРАГИЊА
+НЕНИН ДРАГОМИР
+НЕНИН ЈАСЕНКА
+НЕНИН ЛЕНКА
+НЕНИН МАРА
+НЕНИН МИЛАН
+НЕНИН МИЛИЦА
+НЕНИН МИЛИЦА
+НЕНИН МИЛОРАД
+НЕНИН МИРКО
+НЕНИН РАЈКО
+НЕНИН САВА
+НЕНИН СЛАВКО
+НЕНИН ТОМИСЛАВ
+НЕНИН ВАСА
+НЕОФИТОВИЋ ДЕЈАН
+НЕПИЛ АНТУН
+НЕПОКОЈЧИЦКИ АЛЕКСАНДАР
+НЕРА ОРЛЕАНА
+НЕРАЦ МЛАДИНКО
+НЕРАЦ ПЕРО
+НЕРАЦ СЛОБОДАН
+НЕРАНЧИЋ НИКОЛА
+НЕРАНЏИЋ БОШКО
+НЕРАНЏИЋ БРАНИСЛАВ
+НЕРАНЏИЋ ЈАСМИНА
+НЕРАНЏИЋ МАКСИМ
+НЕРАНЏИЋ НЕВЕНКА
+НЕРАНЏИЋ СТОЈАНКА
+НЕРЕР ЂУРА
+НЕРЕР АЛЕКСАНДАР
+НЕРТИЦА СТЕВАН
+НЕСКАЛИЋ ЕВГЕНИЈЕ
+НЕСКАЛИЋ ЛЕОНАРДО
+НЕСТОРОВ ЖЕЉКО
+НЕСТОРОВ АЛЕКСАНДАР
+НЕСТОРОВ ДРАГОЉУБ
+НЕСТОРОВ ЛАЗАР
+НЕСТОРОВ МИЛАН ДИПЛ ИНГ
+НЕСТОРОВ МИРКО
+НЕСТОРОВ СЛОБОДАН
+НЕСТОРОВИЋ ЖИВОТА
+НЕСТОРОВИЋ БИЉАНА
+НЕСТОРОВИЋ БЛАГОЈЕ
+НЕСТОРОВИЋ БОЈАНА
+НЕСТОРОВИЋ БОРИС
+НЕСТОРОВИЋ ДРАГАН
+НЕСТОРОВИЋ ДРАГОЉУБ
+НЕСТОРОВИЋ ДРАГУТИН
+НЕСТОРОВИЋ ДУШАНКА
+НЕСТОРОВИЋ ГАВРА
+НЕСТОРОВИЋ ИСА
+НЕСТОРОВИЋ ЉИЉАНА
+НЕСТОРОВИЋ МИЛЕ
+НЕСТОРОВИЋ НАДА
+НЕСТОРОВИЋ НАДЕЖДА
+НЕСТОРОВИЋ РАДМИЛА
+НЕСТОРОВИЋ РАДОВАН
+НЕСТОРОВИЋ САВА
+НЕСТОРОВИЋ СЛАВИЦА
+НЕСТОРОВИЋ СЛОБОДАН
+НЕСТОРОВИЋ ВЛАДИМИР
+НЕСТОРОВИЋ ВЛАДИМИР
+НЕВАЈДИЋ ВЕЛИМИР
+НЕВИДОВЧИЋ ЉУБИЦА
+НЕВИДОВЧИЋ МИЛКА
+НЕВИДОВЧИЋ САВА
+НЕВОЛИЋ АНИЦА
+НЕЗИРИ АРИФ
+НЕЗИРОВ АЉИЉ
+НЕЗИРОВ ВЕЛИЧКО
+НИЧИЋ НАДА
+НИЧИЋ ПРЕДРАГ
+НИШАВИЋ КРИСТИНА
+НИШАВИЋ МИЛУТИН
+НИШАВИЋ ПАВЛЕ
+НИШАВИЋ РАДОСЛАВ
+НИШЕВИЋ ЂОРЂЕ
+НИШЕВИЋ ЂУРА
+НИШЕВИЋ ЈОВИЦА
+НИШЕВИЋ КАТИЦА
+НИШЕВИЋ ОЛГА
+НИШЕВИЋ САВА
+НИШИЋ ДРАГАН
+НИШИЋ МЛАЂЕН
+НИШКАНОВИЋ БОШКО
+НИШКАНОВИЋ ЉУПКО
+НИШКАНОВИЋ МИРКО
+НИЋЕТИЋ ЉУБОМИР
+НИЋЕТИЋ МИРА
+НИЋИФОРОВИЋ ЈОВАН
+НИЋИФОРОВИЋ ПЕРА
+НИЋИФОРОВИЋ ПЕТАР
+НИЋИФОРОВИЋ ТЕОДОР
+НИЋИН ЂОРЂЕ
+НИЋИН АЛЕКСАНДАР
+НИЋИН БРАНИСЛАВ
+НИЋИН ДОНКА
+НИЋИН ДУШКО
+НИЋИН МИРОСЛАВ
+НИЋИН НЕВЕНКА
+НИЋИН НИЋИФОР ДИПЛ ИНГ
+НИЋИН СНЕЖАНА
+НИЋИН СОФИЈА
+НИЋИН СВЕТОЗАР
+НИЋИН ВАСИЛИЈЕ
+НИЋИН ВЕРИЦА
+НИЋИН ЗОРА
+НИЦИЋ ДАРКО
+НИДЕРЛЕНДЕР ЂОРЂЕ
+НИДЕРЛЕНИЋ ЗОРАНА
+НИЈЕМЧЕВИЋ НИКОЛА
+НИКЧЕВИЋ БОШКО
+НИКЧЕВИЋ ЈОВАН
+НИКЧЕВИЋ ЉУБОМИР
+НИКЧЕВИЋ МОМО
+НИКЧЕВИЋ РАТКО
+НИКЧЕВИЋ СТАНА
+НИКШИЋ ЖИВКО
+НИКШИЋ ЂУРА
+НИКШИЋ ЦВЕТОЗАР
+НИКШИЋ ДАРКО
+НИКШИЋ ДРАГИЊА
+НИКШИЋ ДРАГОЉУБ
+НИКШИЋ ДУШАНКА
+НИКШИЋ ФРАЊА
+НИКШИЋ ИСА
+НИКШИЋ ЈУЛИЈА
+НИКШИЋ МИЛАН
+НИКШИЋ МИРКО
+НИКШИЋ МЛАДЕН
+НИКШИЋ СТЕВАН
+НИКШИЋ ВЕСНА
+НИКАЧЕВ РАДОВАН
+НИКАЧЕВ РАДОВАН
+НИКАЧЕВИЋ МИХОВИЛ
+НИКАЧЕВИЋ РАДОМАН
+НИКАШИНОВИЋ ЉИЉАНА
+НИКАШИНОВИЋ ЉУБИЦА
+НИКЕТИЋ ГОРДАНА
+НИКЕТИЋ ГОСПАВА
+НИКЕТИЋ ЈЕФТА
+НИКЕТИЋ КАТИЦА
+НИКЕТИЋ НЕБОЈША ДР
+НИКЕТИЋ ПЕТАР
+НИКЕТИЋ САША
+НИКЕТИЋ СИМА
+НИКЕТИЋ СЛОБОДАН
+НИКЕТИЋ ВЛАДИМИР
+НИКЕЗИЋ МИЛА
+НИКЕЗИЋ ПЕТАР
+НИКЕЗИЋ РОКСАНДА
+НИКИЋ БРАНИСЛАВА
+НИКИЋ БРАНИСЛАВ
+НИКИЋ БУДИМИР
+НИКИЋ ДАЈАНА
+НИКИЋ ДРАГАН
+НИКИЋ ЈОВАНКА
+НИКИЋ ЈОВО
+НИКИЋ ЈОВО
+НИКИЋ КАТИЦА
+НИКИЋ ЛАЗАР
+НИКИЋ МАРИНКО
+НИКИЋ МИЛАН
+НИКИЋ МИЛЕ
+НИКИЋ МИЛУТИН
+НИКИЋ МИОДРАГ
+НИКИЋ МИРЈАНА
+НИКИЋ НАДА
+НИКИЋ НАТАША
+НИКИЋ НЕВЕНКА
+НИКИЋ РАДМИЛА
+НИКИЋ РАДОМИР
+НИКИЋ РАДОМИР
+НИКИЋ РАДОМИР
+НИКИЋ САЊА
+НИКИЋ САВА
+НИКИЋ ВЛАДИМИР
+НИКИЋ ЗДРАВКО
+НИКИЋ ЗЛАТА
+НИКИЋ ЗОРА
+НИКИЋ ЗОРКА
+НИКИН БОРИСЛАВ
+НИКИН РАДОМИР
+НИКИН ВЕРА
+НИКИТИШИН НАДА
+НИКИТОВИЋ ЧЕДОМИР
+НИКИТОВИЋ АЛЕКСАНДАР
+НИКИТОВИЋ АНГЕЛИНА
+НИКИТОВИЋ БОЖО
+НИКИТОВИЋ ДУШАН
+НИКИТОВИЋ ДУШАН
+НИКИТОВИЋ МИХАЈЛО
+НИКИТОВИЋ МИЛИЈАНКА
+НИКИТОВИЋ РАДА
+НИКИТОВИЋ РАДОЈИЦА
+НИКИТОВИЋ СЛОБОДАН
+НИКОЧЕВ ЗОРИЦА
+НИКОДИЈЕВИЋ ДУШАН
+НИКОДИЈЕВИЋ ЕНЕСА
+НИКОДИЈЕВИЋ РАДОЈКО
+НИКОДИЈЕВИЋ РАТОМИР
+НИКОДИНОВСКИ СТОЈАН ДИПЛ ИНГ
+НИКОЛЧИЋ БЛАЖО
+НИКОЛЧИЋ ДРАГАН
+НИКОЛЧИЋ СВЕТЛАНА
+НИКОЛЧИН МИЛОШ
+НИКОЛЧИН МИРЈАНА
+НИКОЛАШЕВ БОРИВОЈ
+НИКОЛАШЕВ ЈОВА
+НИКОЛАШЕВ ЉУБОМИР
+НИКОЛАШЕВ МАТИЛДА
+НИКОЛАШЕВ НАДА
+НИКОЛАЈЕВ ЈЕЛЕНА
+НИКОЛАЈЕВ ЛАЗАР
+НИКОЛАЈЕВ МИЛИЦА
+НИКОЛАЈЕВИЋ ДИМИТРИЈЕ
+НИКОЛАЈЕВИЋ ДУШАН
+НИКОЛАЈЕВИЋ ИРЕНА
+НИКОЛАЈЕВИЋ МИЛИВОЈ АКАДЕМСКИ СЛИКАР
+НИКОЛАЈЕВИЋ НИКОЛА
+НИКОЛАЈЕВИЋ РАДИВОЈ
+НИКОЛАЈЕВИЋ ВОЈИСЛАВ
+НИКОЛАЈЕВСКИ АЛЕКСАНДАР
+НИКОЛЕТИЋ БОРА
+НИКОЛЕТИЋ ДРАГАН
+НИКОЛЕТИЋ ДУШАНКА
+НИКОЛЕТИЋ ДУШАН
+НИКОЛЕТИЋ ДУШАН
+НИКОЛЕТИЋ ЈОВАНКА
+НИКОЛЕТИЋ ЈОВАН
+НИКОЛЕТИЋ ЈОВАН
+НИКОЛЕТИЋ ЈОВАН
+НИКОЛЕТИЋ ЈОВАН
+НИКОЛЕТИЋ МИЛАН
+НИКОЛЕТИЋ МИЛОШ
+НИКОЛЕТИЋ МИЛОВАН
+НИКОЛЕТИЋ СИМО
+НИКОЛЕТИЋ СТЕВАН
+НИКОЛЕТИЋ СВЕТОЗАР
+НИКОЛЕТИЋ ВИД
+НИКОЛЕТИЋ ЗОРАН
+НИКОЛИЧИН БРАНКО
+НИКОЛИЧИН ДАНИЛО
+НИКОЛИЧИН ЗОРАН
+НИКОЛИШ ДРАГУТИН
+НИКОЛИШ ЕВИЦА
+НИКОЛИШ МИЛАН
+НИКОЛИЋ-ЧАЊИ БАРБАРА
+НИКОЛИЋ-ШИКОПАРИЈА НЕВЕНКА
+НИКОЛИЋ ЋИРИЛО
+НИКОЛИЋ ЖАРКО
+НИКОЛИЋ ЖАРКО
+НИКОЛИЋ ЖАРКО
+НИКОЛИЋ ЖАРКО
+НИКОЛИЋ ЖИВАН
+НИКОЛИЋ ЖИВАН
+НИКОЛИЋ ЖИВАН
+НИКОЛИЋ ЖИВАН
+НИКОЛИЋ ЖИВА
+НИКОЛИЋ ЖИВКА
+НИКОЛИЋ ЖИВКА
+НИКОЛИЋ ЖИВКО
+НИКОЛИЋ ЖИВКО
+НИКОЛИЋ ЖИВОРАД
+НИКОЛИЋ ЖИВОРАД
+НИКОЛИЋ ЖИВОРАД
+НИКОЛИЋ ЖИВОТА
+НИКОЛИЋ ЖИВОТА
+НИКОЛИЋ ЂОРЂЕ ПРОФЕСОР
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂОРЂЕ
+НИКОЛИЋ ЂУРЂИНКА
+НИКОЛИЋ ЂУРЂИНКА
+НИКОЛИЋ ЂУРА
+НИКОЛИЋ ЂУРА
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ АЛЕКСАНДАР
+НИКОЛИЋ-АЛЕКСОВСКИ СЛАВИЦА
+НИКОЛИЋ АНА
+НИКОЛИЋ АНДРИЈА
+НИКОЛИЋ АНКА
+НИКОЛИЋ АНКИЦА
+НИКОЛИЋ-БАЈШЕВ СТАНКА
+НИКОЛИЋ БИЉАНА
+НИКОЛИЋ БИСЕРКА
+НИКОЛИЋ БОШКО
+НИКОЛИЋ БОШКО
+НИКОЛИЋ БОШКО
+НИКОЛИЋ БОЖИДАР
+НИКОЛИЋ БОЖИДАР
+НИКОЛИЋ БОЖИДАР
+НИКОЛИЋ БОЖИДАР
+НИКОЛИЋ БОЖО
+НИКОЛИЋ БОГДАН
+НИКОЛИЋ БОЈКА
+НИКОЛИЋ БОРА
+НИКОЛИЋ БОРА
+НИКОЛИЋ БОРИСЛАВ
+НИКОЛИЋ БОРИСЛАВ
+НИКОЛИЋ БОРИСЛАВ
+НИКОЛИЋ БОРИВОЈЕ
+НИКОЛИЋ БОРИВОЈ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНИСЛАВ
+НИКОЛИЋ БРАНКО
+НИКОЛИЋ БРАНКО
+НИКОЛИЋ БРАНКО
+НИКОЛИЋ БУДИМИР
+НИКОЛИЋ ЦВЕТАНКА
+НИКОЛИЋ ЦВИЈЕТА
+НИКОЛИЋ-ЏАВЕР ИВАН ДИПЛ ИНГ
+НИКОЛИЋ ДАМЈАН
+НИКОЛИЋ ДАМЈАН
+НИКОЛИЋ ДАНА
+НИКОЛИЋ ДАНИЦА
+НИКОЛИЋ ДАНИЦА
+НИКОЛИЋ ДАНИЦА
+НИКОЛИЋ ДАНИЕЛ
+НИКОЛИЋ ДАНИЈЕЛ
+НИКОЛИЋ ДАНИЛО
+НИКОЛИЋ ДАНИЛО
+НИКОЛИЋ ДАНКО
+НИКОЛИЋ ДАРИНКА
+НИКОЛИЋ ДАВОРИН
+НИКОЛИЋ ДЕЈАН
+НИКОЛИЋ ДЕСАНКА
+НИКОЛИЋ ДИМИТРИЈЕ
+НИКОЛИЋ ДОБРИВОЈЕ
+НИКОЛИЋ ДРАШКО
+НИКОЛИЋ ДРАГАНА
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГАН
+НИКОЛИЋ ДРАГА
+НИКОЛИЋ ДРАГИЦА
+НИКОЛИЋ ДРАГИЦА
+НИКОЛИЋ ДРАГИЦА
+НИКОЛИЋ ДРАГОЉУБ
+НИКОЛИЋ ДРАГОЉУБ
+НИКОЛИЋ ДРАГОЉУБ
+НИКОЛИЋ ДРАГОЉУБ
+НИКОЛИЋ ДРАГОМИР
+НИКОЛИЋ ДРАГОМИР
+НИКОЛИЋ ДРАГОМИР
+НИКОЛИЋ ДРАГОСЛАВ
+НИКОЛИЋ ДРАГО
+НИКОЛИЋ ДРАГУТИН
+НИКОЛИЋ ДУШАН ДИПЛ ИНГ
+НИКОЛИЋ ДУШАНКА
+НИКОЛИЋ ДУШАНКА
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШАН
+НИКОЛИЋ ДУШКО
+НИКОЛИЋ ЕМИЛИЈА
+НИКОЛИЋ ЕМИЛ
+НИКОЛИЋ ГОРДАНА
+НИКОЛИЋ ГОРДАНА
+НИКОЛИЋ ГОРДАНА
+НИКОЛИЋ ХИЛДА
+НИКОЛИЋ ХРИСТИНА
+НИКОЛИЋ ИЛИЈА
+НИКОЛИЋ ИСИДОР
+НИКОЛИЋ ИВАНКА
+НИКОЛИЋ ИВАН
+НИКОЛИЋ ИВО
+НИКОЛИЋ ЈАВОРКА
+НИКОЛИЋ ЈЕФТА
+НИКОЛИЋ ЈЕФТИМИР
+НИКОЛИЋ ЈЕФТИМИР
+НИКОЛИЋ ЈЕЛЕНА
+НИКОЛИЋ ЈЕЛЕНА
+НИКОЛИЋ ЈЕЛКА
+НИКОЛИЋ ЈЕЛКА
+НИКОЛИЋ ЈОЦА
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВАН
+НИКОЛИЋ ЈОВИЦА
+НИКОЛИЋ ЈУЛИЈАНА
+НИКОЛИЋ ЈУЛКА
+НИКОЛИЋ КАТАРИНА
+НИКОЛИЋ КАТИЦА
+НИКОЛИЋ КАТИЦА
+НИКОЛИЋ КАТИЦА
+НИКОЛИЋ КОСТАДИН
+НИКОЛИЋ КОСТА
+НИКОЛИЋ КРСТА ДР
+НИКОЛИЋ КРСТА
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЛАЗАР
+НИКОЛИЋ ЉИЉАНА
+НИКОЛИЋ ЉИЉАНА
+НИКОЛИЋ ЉИЉАНА
+НИКОЛИЋ ЉУБИЦА
+НИКОЛИЋ ЉУБИЦА
+НИКОЛИЋ ЉУБИЦА
+НИКОЛИЋ ЉУБИЦА
+НИКОЛИЋ ЛУЈЗА
+НИКОЛИЋ ЛУКА
+НИКОЛИЋ МАНОЈЛО
+НИКОЛИЋ МАРА
+НИКОЛИЋ МАРА
+НИКОЛИЋ МАРА
+НИКОЛИЋ МАРГИТА
+НИКОЛИЋ МАРГИТА
+НИКОЛИЋ МАРИЦА
+НИКОЛИЋ МАРИЈА
+НИКОЛИЋ МАРИЈА
+НИКОЛИЋ МАРИЈА
+НИКОЛИЋ МАРИЈА
+НИКОЛИЋ МАРКО
+НИКОЛИЋ МАРКО
+НИКОЛИЋ МАРКО
+НИКОЛИЋ МЕЛАНИЈА СТОМАТОЛОГ
+НИКОЛИЋ МЕЛАНИЈА
+НИКОЛИЋ МИХАЈЛО
+НИКОЛИЋ МИХАЈЛО
+НИКОЛИЋ МИХАЈЛО
+НИКОЛИЋ МИЛАШИН
+НИКОЛИЋ МИЛАНА
+НИКОЛИЋ МИЛАНА
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛАН
+НИКОЛИЋ МИЛЕНА
+НИКОЛИЋ МИЛЕНКО
+НИКОЛИЋ МИЛЕВА
+НИКОЛИЋ МИЛЕВА
+НИКОЛИЋ МИЛЕ
+НИКОЛИЋ МИЛЕ
+НИКОЛИЋ МИЛЕ
+НИКОЛИЋ МИЛИЦА
+НИКОЛИЋ МИЛИЦА
+НИКОЛИЋ МИЛИЦА
+НИКОЛИЋ МИЛИВОЈЕ
+НИКОЛИЋ МИЛКА
+НИКОЛИЋ МИЛКА
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОШ
+НИКОЛИЋ МИЛОЈКО
+НИКОЛИЋ МИЛОМИР
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОРАД
+НИКОЛИЋ МИЛОСАВА
+НИКОЛИЋ МИЛОСАВА
+НИКОЛИЋ МИЛОВАН
+НИКОЛИЋ МИЛУТИН
+НИКОЛИЋ МИЛУТИН
+НИКОЛИЋ МИЛУТИН
+НИКОЛИЋ МИОДРАГ ДИПЛ ИНГ
+НИКОЛИЋ МИОДРАГ ДР
+НИКОЛИЋ МИОДРАГ ДР
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИОДРАГ
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРЈАНА
+НИКОЛИЋ МИРКО
+НИКОЛИЋ МИРКО
+НИКОЛИЋ МИРОСЛАВ ДИПЛ ИНГ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИРОСЛАВ
+НИКОЛИЋ МИТА
+НИКОЛИЋ МИТА
+НИКОЛИЋ МИТА
+НИКОЛИЋ МЛАДЕНКА
+НИКОЛИЋ МЛАДЕН
+НИКОЛИЋ МОМЧИЛО
+НИКОЛИЋ-МУШИЦКИ ДАРА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДА
+НИКОЛИЋ НАДЕЖДА
+НИКОЛИЋ НЕБОЈША
+НИКОЛИЋ НЕДЕЉКА
+НИКОЛИЋ НЕДЕЉКО
+НИКОЛИЋ НЕДЕЉКО
+НИКОЛИЋ НЕНАД ДР
+НИКОЛИЋ НЕНАД
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НИКОЛА
+НИКОЛИЋ НОВИЦА
+НИКОЛИЋ НОВИЦА
+НИКОЛИЋ НОВИЦА
+НИКОЛИЋ ОЛГА
+НИКОЛИЋ ОСМАН
+НИКОЛИЋ ПАУН
+НИКОЛИЋ ПАВЛЕ
+НИКОЛИЋ ПЕРА
+НИКОЛИЋ ПЕРО
+НИКОЛИЋ ПЕРСИДА
+НИКОЛИЋ ПЕТАР ДИПЛ ОЕЦ
+НИКОЛИЋ ПЕТАР
+НИКОЛИЋ ПЕТАР
+НИКОЛИЋ ПЕТАР
+НИКОЛИЋ ПЕТРА
+НИКОЛИЋ ПЕТРА
+НИКОЛИЋ ПЕТРОНИЈЕ
+НИКОЛИЋ ПРЕДРАГ
+НИКОЛИЋ ПРВОСЛАВ
+НИКОЛИЋ РАДЕНКО
+НИКОЛИЋ РАДИСАВ
+НИКОЛИЋ РАДИВОЈЕ
+НИКОЛИЋ РАДОЈИЦА
+НИКОЛИЋ РАДОЈКА
+НИКОЛИЋ РАДОЈКА
+НИКОЛИЋ РАДОМИР
+НИКОЛИЋ РАДОМИР
+НИКОЛИЋ РАДОМИР
+НИКОЛИЋ РАДОСЛАВА
+НИКОЛИЋ РАДОСЛАВ
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАДОВАН
+НИКОЛИЋ РАЈКО
+НИКОЛИЋ РАЈКО
+НИКОЛИЋ РАНКА
+НИКОЛИЋ РАТКО МР
+НИКОЛИЋ РАТОМИР
+НИКОЛИЋ РАТОМИР
+НИКОЛИЋ РУЖА
+НИКОЛИЋ РУЖИЦА
+НИКОЛИЋ РУЖИЦА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВА
+НИКОЛИЋ САВЕТА
+НИКОЛИЋ САВКА
+НИКОЛИЋ САВО
+НИКОЛИЋ СЕЋЕРКА
+НИКОЛИЋ СИМА
+НИКОЛИЋ СИМЕОН
+НИКОЛИЋ СИМЕУН
+НИКОЛИЋ СИНИША
+НИКОЛИЋ СИНИША
+НИКОЛИЋ СИНИША
+НИКОЛИЋ СЛАЂАНА
+НИКОЛИЋ СЛАВИША
+НИКОЛИЋ СЛАВИЦА
+НИКОЛИЋ СЛАВКО
+НИКОЛИЋ СЛАВНА
+НИКОЛИЋ СЛОБОДАНКА
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СЛОБОДАН
+НИКОЛИЋ СМИЉАНА
+НИКОЛИЋ СНЕЖАНА
+НИКОЛИЋ СОФИЈА
+НИКОЛИЋ СОФИЈА
+НИКОЛИЋ СОФИЈА
+НИКОЛИЋ СПАСЕНКА
+НИКОЛИЋ СПАСОЈЕ
+НИКОЛИЋ СПАСОЈЕ
+НИКОЛИЋ СПАСОЈЕ
+НИКОЛИЋ СРЕТА
+НИКОЛИЋ СРЕТЕНКА
+НИКОЛИЋ СТАНИМИР
+НИКОЛИЋ СТАНИМИР
+НИКОЛИЋ СТАНИСЛАВ
+НИКОЛИЋ СТАНКО
+НИКОЛИЋ СТЕФАНИЈА
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВАН
+НИКОЛИЋ СТЕВИЦА
+НИКОЛИЋ СТОЈАДИН
+НИКОЛИЋ СТОЈАН
+НИКОЛИЋ СУЗАНА
+НИКОЛИЋ СВЕТИСЛАВ
+НИКОЛИЋ СВЕТИСЛАВ
+НИКОЛИЋ СВЕТОЗАР
+НИКОЛИЋ СВЕТОЗАР
+НИКОЛИЋ СВЕТОЗАР
+НИКОЛИЋ СВЕТОЗАР
+НИКОЛИЋ ТАМАРА
+НИКОЛИЋ ТАТЈАНА
+НИКОЛИЋ ТЕОДОР
+НИКОЛИЋ ТЕОДОР
+НИКОЛИЋ ТИХОМИР
+НИКОЛИЋ ТИХОМИР
+НИКОЛИЋ ТОДОР
+НИКОЛИЋ ТОМИСЛАВ МР
+НИКОЛИЋ ТОМИСЛАВ
+НИКОЛИЋ ТОМИСЛАВ
+НИКОЛИЋ ТРЕНЧА
+НИКОЛИЋ ВАСИЛИЈЕ
+НИКОЛИЋ ВЕКОСЛАВ
+НИКОЛИЋ ВЕЛИМИР
+НИКОЛИЋ ВЕЛИМИР
+НИКОЛИЋ ВЕЉКО ДР ИНГ
+НИКОЛИЋ ВЕЉКО
+НИКОЛИЋ ВЕРА
+НИКОЛИЋ ВЕРА
+НИКОЛИЋ ВЕРА
+НИКОЛИЋ ВЕРА
+НИКОЛИЋ ВЕРИЦА
+НИКОЛИЋ ВЕСНА
+НИКОЛИЋ ВИДОСАВА
+НИКОЛИЋ ВИТОМИР
+НИКОЛИЋ ВИТОМИР
+НИКОЛИЋ ВИТОМИР
+НИКОЛИЋ ВЛАДА
+НИКОЛИЋ ВЛАДИМИР
+НИКОЛИЋ ВЛАДИМИР
+НИКОЛИЋ ВЛАДИМИР
+НИКОЛИЋ ВЛАДИМИР
+НИКОЛИЋ ВЛАДИСЛАВ ДР
+НИКОЛИЋ ВОЈИСЛАВ ДР ДОЦЕНТ
+НИКОЛИЋ ВОЈИСЛАВ ДР ЛЕКАР
+НИКОЛИЋ ВОЈИСЛАВ
+НИКОЛИЋ ВУКАШИН
+НИКОЛИЋ ВУКАШИН
+НИКОЛИЋ ЗАГОРКА
+НИКОЛИЋ ЗДРАВКО
+НИКОЛИЋ ЗДРАВКО
+НИКОЛИЋ ЗОРАН
+НИКОЛИЋ ЗОРАН
+НИКОЛИЋ ЗОРАН
+НИКОЛИЋ ЗОРА
+НИКОЛИЋ ЗОРА
+НИКОЛИЋ ЗОРА
+НИКОЛИЋ ЗОРКА
+НИКОЛИН АЛЕКСАНДРА
+НИКОЛИН АНА
+НИКОЛИН БРАНКО
+НИКОЛИН ДРАГОСЛАВА ДР
+НИКОЛИН ДУШИЦА
+НИКОЛИН ЕРЖЕБЕТ
+НИКОЛИН ИВИЦА
+НИКОЛИН ЛАЗАР ДР ЛЕКАР
+НИКОЛИН ЉУБИША
+НИКОЛИН МАРГИТА
+НИКОЛИН МИЛАН
+НИКОЛИН МИЛИЦА
+НИКОЛИН МИЛИВОЈ
+НИКОЛИН МИЛИВОЈ
+НИКОЛИН МИРОСЛАВ
+НИКОЛИН РАДОВАН
+НИКОЛИН РАДОВАН
+НИКОЛИН РУЖИЦА
+НИКОЛИН САВА
+НИКОЛИН СИНИША
+НИКОЛИН СИНИША
+НИКОЛИН СТИПАН
+НИКОЛИН ВЕСНА
+НИКОЛИН ВИТОМИР
+НИКОЛОСКИ НИКОЛА
+НИКОЛОСКИ СЛАВИЦА
+НИКОЛОВ ЂОРЂЕ
+НИКОЛОВ БОШКО
+НИКОЛОВ ЈОЦА
+НИКОЛОВ ЈОЦА
+НИКОЛОВ ЉУБИЦА
+НИКОЛОВ НИНА
+НИКОЛОВ РАША
+НИКОЛОВ СИНИША
+НИКОЛОВ СТОЈАН
+НИКОЛОВ ТОДОР
+НИКОЛОВСКИ ИЛИЈА
+НИКОЛОВСКИ МИЛАН
+НИКОТИЋ ВЕЛИМИР
+НИЛИЋ НИКОЛА
+НИЛОВИЋ МИРОСЛАВ
+НИМРИХТЕР ДРАГУТИН
+НИМРИХТЕР МИЛАН
+НИМРИХТЕР МИРОСЛАВ
+НИМРИХТЕР ВЛАДА
+НИНЧИЋ БИСЕРКА
+НИНЧИЋ ДАМЈАН
+НИНЧИЋ МИЛЕНКО
+НИНЧИЋ ПЕРО
+НИНИЋ АЛЕКСА
+НИНИЋ БРАНИСЛАВ
+НИНИЋ МАРКО
+НИНИЋ МИРКО
+НИНИЋ РАДОЈЕ
+НИНИЋ РАДОМИР
+НИНКОВ ЖИВКО
+НИНКОВ ЂОРЂЕ
+НИНКОВ ЂОРЂЕ
+НИНКОВ ЂОРЂЕ
+НИНКОВ БОЖИЦА
+НИНКОВ БОРИСЛАВ
+НИНКОВ БОРИСЛАВ
+НИНКОВ БРАНИСЛАВ
+НИНКОВ ДОБРИВОЈ
+НИНКОВ ДРАГОМИР
+НИНКОВ ДУШАН
+НИНКОВ ДУШАН
+НИНКОВ ДУШАН
+НИНКОВ ЕМИЛИЈА
+НИНКОВ ЕРЖЕБЕТ
+НИНКОВ ЈЕЛИЦА
+НИНКОВ ЈОВАН
+НИНКОВ ЈУЛИЈАН МР
+НИНКОВ-КОМЛЕНОВ ДАНИЦА ДР
+НИНКОВ ЛАЗАР
+НИНКОВ ЛАЗАР
+НИНКОВ-ЛЕЂЕНАЦ ЈОВАНКА ДР
+НИНКОВ ЉУБОМИР
+НИНКОВ ЉУБОМИР
+НИНКОВ МАРИЈА
+НИНКОВ МАРИЈА
+НИНКОВ МИЛАНА
+НИНКОВ МИЛАН
+НИНКОВ МИЛИЦА
+НИНКОВ МИЛОШ
+НИНКОВ МИЛОШ
+НИНКОВ МИЛОШ
+НИНКОВ МИЛОВАН
+НИНКОВ МИЛОВАН
+НИНКОВ МИЛУТИН
+НИНКОВ МИРЈАНА
+НИНКОВ МИРКО
+НИНКОВ МИРОСЛАВ
+НИНКОВ МИРОСЛАВ
+НИНКОВ НАДА
+НИНКОВ НЕБОЈША
+НИНКОВ НЕБОЈША
+НИНКОВ НИКОЛА
+НИНКОВ ОЛГИЦА
+НИНКОВ РАДИЦА
+НИНКОВ САВЕТА ДИПЛ ИНГ
+НИНКОВ САВЕТА
+НИНКОВ СЛАВКО
+НИНКОВ СМИЉА
+НИНКОВ СОФИЈА
+НИНКОВ СПОМЕНКА
+НИНКОВ СТЕВАН
+НИНКОВ СТЕВАН
+НИНКОВ СТЕВАН
+НИНКОВ ВЕЛИМИР
+НИНКОВ ВЕЉКО
+НИНКОВ ВЕРИЦА
+НИНКОВ ВЛАДИМИР
+НИНКОВ ВОЈИСЛАВ
+НИНКОВИЋ ШПИРО
+НИНКОВИЋ ШПИРО
+НИНКОВИЋ ЂУРАЂ
+НИНКОВИЋ ЂУРА
+НИНКОВИЋ АНКИЦА
+НИНКОВИЋ БРАНКО
+НИНКОВИЋ ДАНИЦА
+НИНКОВИЋ ДРАГА
+НИНКОВИЋ ДУШАН
+НИНКОВИЋ ЕРИКА
+НИНКОВИЋ ГАВРА
+НИНКОВИЋ ЈАНКО
+НИНКОВИЋ ЈОЈА
+НИНКОВИЋ ЈОВАНКА
+НИНКОВИЋ МАРИЦА
+НИНКОВИЋ МАРКО
+НИНКОВИЋ МИЋО
+НИНКОВИЋ МИХАИЛО
+НИНКОВИЋ МИЛАН
+НИНКОВИЋ МИЛОШ
+НИНКОВИЋ МИРЈАНА
+НИНКОВИЋ МИРЈАНА
+НИНКОВИЋ НИКОЛА
+НИНКОВИЋ НИКОЛА
+НИНКОВИЋ ПЕРА
+НИНКОВИЋ ПЕРО
+НИНКОВИЋ ПЕТАР
+НИНКОВИЋ РАДОМИР
+НИНКОВИЋ РАДОВАН
+НИНКОВИЋ РАЈКО
+НИНКОВИЋ СРЂАН
+НИНКОВИЋ СТОЈАН
+НИНКОВИЋ СВЕТИСЛАВ
+НИНКОВИЋ ВЕРА
+НИСИМ ДЕСА
+НИСТЕР ЕВА
+НИСТОР ДРАГАН
+НИСТОРАН ЂОРЂЕ
+НИСТОРАН МИЛАН
+ЊАГОЈЕВ МИЛАДИН
+ЊАГРИН СЛАВИЦА
+ЊАГУЛ-ДОКИЋ СРБИСЛАВА
+ЊАГУЛ ДУШАН
+ЊАРАДИ ЕВГЕНИЈЕ
+ЊАРАДИ ЈАНКО
+ЊАРАДИ ЈОВГЕН
+ЊАРАДИ МАРИЈА
+ЊАРАДИ СОФИЈА
+ЊАРИ ШАНДОР
+ЊАРИ ДЕЖЕ
+ЊЕЖИЋ ОБРАД
+ЊЕЖИЋ ЗВОНКО
+ЊЕГОМИР ЂУРО
+ЊЕГОМИР ЉУБИНКА ДР ЛЕКАР
+ЊЕГОМИР МИЛАН
+ЊЕГОМИР НИКОЛА
+ЊЕГОМИР НОВАК
+ЊЕГОВАН ЖАРКО
+ЊЕГОВАН ЈОВАНКА
+ЊЕГОВАН МАРА
+ЊЕГОВАН МАРИЈА
+ЊЕГОВАН МИРКО
+ЊЕГОВАН МИРКО
+ЊЕГОВАН СТОЈАНКА
+ЊЕГОВАНОВИЋ ЕЛЕНА
+ЊЕГРИЋ МАРИЈА
+ЊЕГРИЋ РАДМИЛА
+ЊЕМЧОК ЈОЖЕФ
+ЊЕМОГА ЈУРАЈ
+ЊЕЊИЋ ВЛАДО
+ЊЕРГЕШ ЈАНОШ
+ЊЕРГЕШ МАРИЈА
+ЊИРЕ СТЕВАН
+ЊИРЈАК ЂОРЂЕ
+ЊИРЈАК ЛЕОНА
+ЊИТРИ КАРОЉ
+ЊУЊИЋ МИЛЕВА
+НОЧЕВСКА ВЕЛИКА
+НОЧЕВСКИ БИЉАНА
+НОЧЕВСКИ РАДЕ
+НОЖИЦА ЦВИЈЕТА
+НОЖИЦА МИЛИВОЈЕ
+НОЖИНИЋ ДАРА
+НОЖИНИЋ ЉУБИЦА
+НОЖИНИЋ МИЛАН
+НОЖИНИЋ НИКОЛА
+НОЛА ТИМЊА
+НОЛИН ЂУРЂИНКА
+НОНИН АНЂЕЛКА
+НОНИН ДУШАН
+НОНИН МИЛОРАД
+НОНИН НИКОЛА
+НОНИН СОЊА
+НОНИН ВИТОМИР
+НОНКОВИЋ МИЛАН
+НОНКОВИЋ МИЛОРАД
+НОСАК ЂОРЂЕ
+НОСАК МИКЛОШ
+НОСАЉ МИША
+НОСЕК ЕВИЦА
+НОСЕК ФРАЊА
+НОСЕК КАРЛО
+НОСЕК КСЕНИЈА
+НОСЕК ЗОРАН
+НОСОЊИН ЛЕНКА
+НОСОЊИН МИЛАН
+НОСОЊИН САВА
+НОСОВИЋ ЂОРЂЕ
+НОСОВИЋ ДАНИЦА
+НОСОВИЋ ЈАНКО
+НОСОВИЋ ЈОВАН
+НОСОВИЋ ЈОВАН
+НОСОВИЋ ЗОРАН
+НОТА ЈАНКО
+НОТАРОШ ДАРИНКА
+НОТАРОШ ДЕЈАН
+НОТАРОШ МИЛАН
+НОТХОФ ЕВА
+НОТХОФ ЗОЛТАН
+НОВЧИЋ БУДИМИР
+НОВЧИЋ ДАМЊАН
+НОВЧИЋ ДУШАН
+НОВЧИЋ СТАНА
+НОВЧИЋ СТАНА
+НОВЧИЋ ТАТЈАНА
+НОВЧИЋ ВЛАДИМИР
+НОВАЧИЋ ЂУРА
+НОВАЧИЋ ЂУРО
+НОВАЧИЋ ПЕРСИДА
+НОВАК ЂОРЂЕ
+НОВАК АНДРИЈА
+НОВАК АНТАЛ
+НОВАК БОШКО
+НОВАК ДРАГИЦА
+НОВАК ДУШАНКА
+НОВАК ФРАЊА
+НОВАК ИШТВАН
+НОВАК ИРЕНА
+НОВАК ИВАН
+НОВАК ЈАНА
+НОВАК ЈАНОШ
+НОВАК ЈОСИП
+НОВАК ЈОСИП
+НОВАК ЈОВАН
+НОВАК ЛАДИСЛАВ МР
+НОВАК ЛАСЛО
+НОВАК ЛАЗАР
+НОВАК ЉУБОМИР
+НОВАК МАРГИТА
+НОВАК МАРИЈА
+НОВАК МАТИЛДА
+НОВАК МИХАЉ
+НОВАК НАНДОР
+НОВАК НИКОЛА
+НОВАК СЛАВКА
+НОВАК СТЕВАН
+НОВАК СТЕВАН
+НОВАК СТЈЕПАН
+НОВАК ТИБОР
+НОВАК-ВАЈДА ЉИЉАНА
+НОВАК ВАСИЛИЈА
+НОВАК ВЕРА
+НОВАК ВЕРОНА
+НОВАК ВИКТОР
+НОВАКОВ ЧЕДОМИР
+НОВАКОВ АНЂЕЛКО
+НОВАКОВ БОРИСЛАВ
+НОВАКОВ ДРАГОЉУБ МР
+НОВАКОВ ДУШАН
+НОВАКОВ ГОРДАНА
+НОВАКОВ ГОСПАВА ДР
+НОВАКОВ ЈЕЛИЦА
+НОВАКОВ ЛАЗАР
+НОВАКОВ ЉУБИНКА
+НОВАКОВ ЉУБОМИР
+НОВАКОВ МАРИНА
+НОВАКОВ МИЛАН
+НОВАКОВ МИЛИЦА
+НОВАКОВ МИЛИВОЈ
+НОВАКОВ МИЛОРАД
+НОВАКОВ МИРОСЛАВ
+НОВАКОВ НАДА
+НОВАКОВ ПРЕДРАГ
+НОВАКОВ ПРЕДРАГ
+НОВАКОВ РАДОВАН ДИПЛ ИНГ
+НОВАКОВ САВА
+НОВАКОВ САВА
+НОВАКОВ СРБИСЛАВ
+НОВАКОВ СРЕТЕН
+НОВАКОВ СРЕТЕН
+НОВАКОВ СТЕВАН ДР
+НОВАКОВ СТЕВАН
+НОВАКОВ ВАЛЕРИЈА
+НОВАКОВ ВЕСЕЛИН
+НОВАКОВ ЗДРАВКО
+НОВАКОВИЋ ЖИВАН
+НОВАКОВИЋ ЖИВАН
+НОВАКОВИЋ ЖИВКО
+НОВАКОВИЋ ЖИВОЈИН
+НОВАКОВИЋ ЂОРЂЕ
+НОВАКОВИЋ ЂУЈА
+НОВАКОВИЋ ЂУРО
+НОВАКОВИЋ АЛЕКСАНДАР
+НОВАКОВИЋ АНЂЕЛКА
+НОВАКОВИЋ АНА
+НОВАКОВИЋ АНКА
+НОВАКОВИЋ БОШКО ДР ПРОФ
+НОВАКОВИЋ БОГДАН
+НОВАКОВИЋ БРАНИСЛАВА
+НОВАКОВИЋ БРАНИСЛАВ
+НОВАКОВИЋ БРАНКО
+НОВАКОВИЋ БРАНКО
+НОВАКОВИЋ ЦВЕТКО ДР
+НОВАКОВИЋ ЦВИЈЕТА
+НОВАКОВИЋ ДАНА
+НОВАКОВИЋ ДАНИЦА
+НОВАКОВИЋ ДИМИТРИЈЕ
+НОВАКОВИЋ ДРАГАН
+НОВАКОВИЋ ДРАГАН
+НОВАКОВИЋ ДРАГА
+НОВАКОВИЋ ДРАГОЉУБ
+НОВАКОВИЋ ДРАГОЉУБ
+НОВАКОВИЋ ДРАГОСЛАВ
+НОВАКОВИЋ ДУШАНКА
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ДУШАН
+НОВАКОВИЋ ФРАЊО
+НОВАКОВИЋ ГОРДАНА
+НОВАКОВИЋ ГОРИЦА
+НОВАКОВИЋ ГРОЗДА
+НОВАКОВИЋ ИНЂИЈА
+НОВАКОВИЋ ЈЕЛЕНА
+НОВАКОВИЋ ЈЕЛЕНА
+НОВАКОВИЋ ЈОВАНКА
+НОВАКОВИЋ ЈОВАН
+НОВАКОВИЋ ЈОВАН
+НОВАКОВИЋ КОСА
+НОВАКОВИЋ ЛАЗАР
+НОВАКОВИЋ ЛЕПОСАВА
+НОВАКОВИЋ ЉИЉАНА
+НОВАКОВИЋ ЉУБОМИР
+НОВАКОВИЋ ЉУБОМИР
+НОВАКОВИЋ МАРИЦА
+НОВАКОВИЋ МАРИЈА
+НОВАКОВИЋ МАРИЈА
+НОВАКОВИЋ МАРИЈА
+НОВАКОВИЋ МЕЛАНИЈА
+НОВАКОВИЋ МИШО
+НОВАКОВИЋ-МИДИ ДИВНА ДИПЛ ТУРИЗМ
+НОВАКОВИЋ МИЈОДРАГ
+НОВАКОВИЋ МИЛАН
+НОВАКОВИЋ МИЛАН
+НОВАКОВИЋ МИЛАН
+НОВАКОВИЋ МИЛОШ
+НОВАКОВИЋ МИЛОШ
+НОВАКОВИЋ МИЛОРАД
+НОВАКОВИЋ МИЛОРАД
+НОВАКОВИЋ МИЛОРАД
+НОВАКОВИЋ МИЛОРАД
+НОВАКОВИЋ МИЛОВАН
+НОВАКОВИЋ МИЛОВАН
+НОВАКОВИЋ МИОДРАГ ДР
+НОВАКОВИЋ МИОДРАГ
+НОВАКОВИЋ МЛАДЕН
+НОВАКОВИЋ МОМЧИЛО
+НОВАКОВИЋ НАДА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ НИКОЛА
+НОВАКОВИЋ ОЛИВЕР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ ПЕТАР
+НОВАКОВИЋ-ПЛАВШИЋ ЈЕЛЕНА
+НОВАКОВИЋ РАДМИЛО
+НОВАКОВИЋ РАДОЈКА
+НОВАКОВИЋ РАДОМИР
+НОВАКОВИЋ РАДОМИР
+НОВАКОВИЋ РАДОМИР
+НОВАКОВИЋ РАДОВАН
+НОВАКОВИЋ РАЈКО
+НОВАКОВИЋ РАНКО
+НОВАКОВИЋ РОСАНКА
+НОВАКОВИЋ РУЖИЦА
+НОВАКОВИЋ САВА
+НОВАКОВИЋ САВА
+НОВАКОВИЋ СЛАВКО
+НОВАКОВИЋ СЛОБОДАН
+НОВАКОВИЋ СЛОБОДАН
+НОВАКОВИЋ СЛОБОДАН
+НОВАКОВИЋ СОФИЈА
+НОВАКОВИЋ СПАСОЈА
+НОВАКОВИЋ СПОМЕНКА
+НОВАКОВИЋ СТАНИСЛАВ
+НОВАКОВИЋ СТЕВАН ДИПЛ ИНГ
+НОВАКОВИЋ СТЕВАН
+НОВАКОВИЋ СТЕВАН
+НОВАКОВИЋ СТЕВАН
+НОВАКОВИЋ СТЕВО
+НОВАКОВИЋ СТОЈАН
+НОВАКОВИЋ СВЕТОМИР
+НОВАКОВИЋ ВЕЛИМИР
+НОВАКОВИЋ ВЕЛИНКА
+НОВАКОВИЋ ВЕРИЦА
+НОВАКОВИЋ ВЕСНА
+НОВАКОВИЋ ВИДОЈЕ
+НОВАКОВИЋ ВИТКО
+НОВАКОВИЋ ВЛАДИМИР ДИПЛ ИНГ
+НОВАКОВИЋ ВЛАДИМИР
+НОВАКОВИЋ ВЛАДИМИР
+НОВАКОВИЋ ВЛАДИСЛАВ
+НОВАКОВИЋ ЗЛАТОМИР
+НОВАКОВИЋ ЗОРА
+НОВАКОВИЋ ЗОРИЦА
+НОВАКОВИЋ ЗОРИЦА
+НОВИЧИЋ МИЛОШ
+НОВИЋ ЧЕДО
+НОВИЋ-ЧУЉАК ЉУБИЦА
+НОВИЋ ДАНИЦА
+НОВИЋ ДУШАН
+НОВИЋ ЈОВАН
+НОВИЋ МИЛАН
+НОВИЋ МИЛАН
+НОВИЋ МИРОСЛАВ
+НОВИЋ МИРОСЛАВ
+НОВИЋ МИТАР
+НОВИЋ НИКОЛА
+НОВИЋ ПАНТЕЛИЈА
+НОВИЋ ПЕРСИДА
+НОВИЋ ТАТЈАНА
+НОВИЋ ТОМА
+НОВИЋ ВЛАЈКО
+НОВИЦКИ АЛЕКСА
+НОВИКОВ ВЕРА
+НОВИНЦ ИВАН
+НОВИТОВИЋ МАРКО
+НОВКОВ ЖИВОЈИН
+НОВКОВ ДОБРИЛА
+НОВКОВ ГАВРА
+НОВКОВ ЈОВАН
+НОВКОВ МИЛАН
+НОВКОВ НАДА
+НОВКОВ СТЕВАН
+НОВКОВ СТЕВАН
+НОВКОВ ЗАГОРКА
+НОВКОВИЋ ЂОРЂЕ
+НОВКОВИЋ АНКА
+НОВКОВИЋ БИЉАНА
+НОВКОВИЋ ДРАГИЦА
+НОВКОВИЋ ДРАГИЊА
+НОВКОВИЋ ДУШАН
+НОВКОВИЋ ДУШАН
+НОВКОВИЋ ДУШАН
+НОВКОВИЋ ДУШАН
+НОВКОВИЋ ЕЛФРИДА
+НОВКОВИЋ ЕЛИЗАБЕТА
+НОВКОВИЋ ЈОВАН
+НОВКОВИЋ МИХАЈЛО
+НОВКОВИЋ МИЛАН
+НОВКОВИЋ МИЛИНКО
+НОВКОВИЋ МИЛОШ
+НОВКОВИЋ МИРЈАНА
+НОВКОВИЋ МОМЧИЛО
+НОВКОВИЋ МОМЧИЛО
+НОВКОВИЋ НАДА
+НОВКОВИЋ НЕБОЈША ДР
+НОВКОВИЋ НИКОЛА
+НОВКОВИЋ РОСА
+НОВКОВИЋ СМИЉКА
+НОВКОВИЋ СТАНКО
+НОВКОВИЋ ВЛАДА
+НОВКОВИЋ ВУКАШИН
+НОВОСЕЛ ГОРДАНА
+НОВОСЕЛ МАРИЈА
+НОВОСЕЛ НАДА
+НОВОСЕЛ РАЈКО
+НОВОСЕЛАЦ КАТИЦА
+НОВОСЕЛАЦ СТЕВАН
+НОВОСЕЛАЦ ЗВОНИМИР
+НОВОСЕЉАЧКИ МИЛИВОЈ
+НОВОСЕЛОВСКИ АНГЕЛ
+НОВОТ ЛАДИСЛАВ
+НОВОТ ПАВЛЕ
+НОВОВИЋ ЖИВОЈИН
+НОВОВИЋ БАТРИЋ
+НОВОВИЋ БИЉАНА
+НОВОВИЋ ДРАГАН
+НОВОВИЋ ГОРДАНА
+НОВОВИЋ МИНА
+НОВОВИЋ НАДА
+НОВОВИЋ ВЛАДО
+НОВОВИЋ ЗДЕНКА
+НОВТА НИКОЛА ДР
+НОВТА ВЛАДИМИР
+НОВТА ВЛАДИМИР
+НУЖДИЋ МИЛАН
+НУЖДИЋ ОБРАД
+НУБЕР АНА
+НУДИЋ ЂОРЂЕ
+НУДИЋ СВЕТОЗАР
+НУХИ ФЕВЗИ
+НУХИ ХАЈДАН
+НУХИ ЗЕКИЈА
+НУКА ХАСАН
+НУКИЋ АЉО
+НУКИЋ ЏЕВАД
+НУКИЋ КАНИТА
+НУКИЋ ОМЕР
+ОЧЕНАШ ЉУДМИЛА
+ОЧКАЈИ ИШТВАН
+ОЧКО ВИЛХЕЛМ
+ОЧОВАЈ БОЖЕНКА
+ОЧОВАЈ ЗУЗАНА
+ОШАП ЈЕЛЕНА
+ОШАП ЈОВАН
+ОШКЕРТ АНКА
+ОШТРИЋ МИЛЕ ДИПЛ ИНГ
+ОШТРИКА ЖАРКО
+ОШТРИКА ЖАРКО
+ОШТРИКА ДАРИНКА
+ОЖЕГОВИЋ ЖАРКО ДИПЛ ИНГ
+ОЖЕГОВИЋ БОШКО
+ОЖЕГОВИЋ БРАНКО ДИПЛ ИНГ
+ОЖЕГОВИЋ ДАНЕ
+ОЖЕГОВИЋ ДРАГА
+ОЖЕГОВИЋ ЛАЗАР
+ОЖЕГОВИЋ МИРКО
+ОЖЕГОВИЋ МОМЧИЛО
+ОЖЕГОВИЋ НЕВЕНКА
+ОЖЕГОВИЋ СЛАВКО
+ОЖЕГОВИЋ СЛОБОДАН
+ОЖЕКОВИЋ ГОЈКО
+ОЖВАТ ЈАСМИНА
+ОЖВАТ ЈАСМИНА
+ОЖВАТ ЈУЛИЈАНА
+ОЖВАТ ОНДРЕЈ
+ОЂИЋ АЛЕКСАНДАР
+ОБШУСТ ЈАНКО
+ОБАДОВ АЛЕКСАНДРА
+ОБАДОВ МИЛЕ
+ОБАДОВ НАТАЛИЈА
+ОБАДОВ СЛАВКО
+ОБАДОВИЋ ДУШАНКА
+ОБАДОВИЋ МИЛОЈЕ
+ОБАДОВИЋ МИЛОЈЕ
+ОБАДОВИЋ МИЛОЈЕ
+ОБАДОВИЋ МИЛОРАД
+ОБАДОВИЋ СЛОБОДАНКА
+ОБЕРМАЈЕР ФРАЊА
+ОБЕРМАН БРАНИСЛАВ
+ОБЕРТ ФРАНЦ
+ОБЈЕДОВИЋ СТОЈАН
+ОБЛЕШЧУК АНКА
+ОБЛЕШЧУК АНКА
+ОБЛЕШЧУК ДРАГИША
+ОБЛЕШЧУК ГРЕГОР
+ОБЛЕШЧУК МАРИЈА
+ОБОЧКИ ВЛАДИМИР
+ОБРАДОВ ГОРДАНА
+ОБРАДОВ ГОРДАНА
+ОБРАДОВ ЉУБИША
+ОБРАДОВ ЉУБИША
+ОБРАДОВ МИЛАН
+ОБРАДОВ МИЛОРАД
+ОБРАДОВ НАДА
+ОБРАДОВ НОВАК
+ОБРАДОВ РАДИВОЈ
+ОБРАДОВ РАДМИЛА
+ОБРАДОВ СТОЈАНКА
+ОБРАДОВИЋ ЧЕДОМИР
+ОБРАДОВИЋ ЖИВКО
+ОБРАДОВИЋ ЖИВКО
+ОБРАДОВИЋ ЂОРЂЕ
+ОБРАДОВИЋ ЂОРЂЕ
+ОБРАДОВИЋ ЂОРЂЕ
+ОБРАДОВИЋ ЂУРЂИНА
+ОБРАДОВИЋ ЂУРО
+ОБРАДОВИЋ ЂУРО
+ОБРАДОВИЋ АЛЕКСАНДАР
+ОБРАДОВИЋ АНКА
+ОБРАДОВИЋ БОГДАНКА
+ОБРАДОВИЋ БОГДАН
+ОБРАДОВИЋ БОГДАН
+ОБРАДОВИЋ БОРИСЛАВ
+ОБРАДОВИЋ БОРКА
+ОБРАДОВИЋ БРАНИСЛАВ
+ОБРАДОВИЋ БРАНИСЛАВ
+ОБРАДОВИЋ БРАНКО
+ОБРАДОВИЋ БУДИМИР
+ОБРАДОВИЋ БУДО
+ОБРАДОВИЋ ДАНЕ
+ОБРАДОВИЋ ДАНИЈЕЛА
+ОБРАДОВИЋ ДАНИЛО ДР
+ОБРАДОВИЋ ДМИТАР
+ОБРАДОВИЋ ДОБРИЛА
+ОБРАДОВИЋ ДРАГАН
+ОБРАДОВИЋ ДРАГИЦА
+ОБРАДОВИЋ ДРАГОЉУБ
+ОБРАДОВИЋ ДУШАНКА
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ДУШАН
+ОБРАДОВИЋ ЕМИЛИЈА
+ОБРАДОВИЋ ГЛИША
+ОБРАДОВИЋ ГОРДАНА
+ОБРАДОВИЋ ГВОЗДЕН
+ОБРАДОВИЋ ИЛИЈА
+ОБРАДОВИЋ ЈАСМИНА
+ОБРАДОВИЋ ЈОВАН
+ОБРАДОВИЋ ЈОВАН
+ОБРАДОВИЋ ЈОВО
+ОБРАДОВИЋ КОНСТАНТИН
+ОБРАДОВИЋ ЛАЗАР
+ОБРАДОВИЋ ЛАЗАР
+ОБРАДОВИЋ ЛИДИЈА
+ОБРАДОВИЋ ЉИЉАНА
+ОБРАДОВИЋ ЉИЉАНА
+ОБРАДОВИЋ ЉИЉАНА
+ОБРАДОВИЋ ЉУБИША
+ОБРАДОВИЋ ЉУБОДРАГ
+ОБРАДОВИЋ ЛУКА
+ОБРАДОВИЋ МАРКО
+ОБРАДОВИЋ МИЛАДИН
+ОБРАДОВИЋ МИЛАН
+ОБРАДОВИЋ МИЛА
+ОБРАДОВИЋ МИЛЕНА
+ОБРАДОВИЋ МИЛЕНКО
+ОБРАДОВИЋ МИЛЕ
+ОБРАДОВИЋ МИЛЕ
+ОБРАДОВИЋ МИЛИЦА
+ОБРАДОВИЋ МИЛИЈАНА
+ОБРАДОВИЋ МИЛКА
+ОБРАДОВИЋ МИЛОШ
+ОБРАДОВИЋ МИЛОЈКО
+ОБРАДОВИЋ МИЛОРАД
+ОБРАДОВИЋ МИЛОРАД
+ОБРАДОВИЋ МИЛОВАН ДИПЛ ИНГ
+ОБРАДОВИЋ МИЛУН
+ОБРАДОВИЋ МИЛУТИН
+ОБРАДОВИЋ МИОДРАГ
+ОБРАДОВИЋ МИРАШ
+ОБРАДОВИЋ МИРЈАНА ДИПЛ ИНГ
+ОБРАДОВИЋ МИРКО
+ОБРАДОВИЋ МИРОСЛАВ
+ОБРАДОВИЋ МЛАДЕН
+ОБРАДОВИЋ НАДА
+ОБРАДОВИЋ НЕБОЈША
+ОБРАДОВИЋ НЕДЕЉКА
+ОБРАДОВИЋ НЕДЕЉКО
+ОБРАДОВИЋ НЕМАЊА
+ОБРАДОВИЋ НЕНАД ДР ЛЕКАР
+ОБРАДОВИЋ НИКОЛА
+ОБРАДОВИЋ ПЕТАР
+ОБРАДОВИЋ ПЕТАР
+ОБРАДОВИЋ РАДЕ
+ОБРАДОВИЋ РАДИВОЈЕ
+ОБРАДОВИЋ РАДИВОЈ
+ОБРАДОВИЋ РАДМИЛА
+ОБРАДОВИЋ РАТКО
+ОБРАДОВИЋ РОСА
+ОБРАДОВИЋ САВА
+ОБРАДОВИЋ-СИКИМИЋ МИРЈАНА
+ОБРАДОВИЋ СЛАВИЦА
+ОБРАДОВИЋ СЛАВКО
+ОБРАДОВИЋ СЛАВКО
+ОБРАДОВИЋ СЛОБОДАН
+ОБРАДОВИЋ СМИЉКА
+ОБРАДОВИЋ СМИЉКА
+ОБРАДОВИЋ СТАНИМИР
+ОБРАДОВИЋ СТАНКО
+ОБРАДОВИЋ СТЕВАН ДР
+ОБРАДОВИЋ СТЕВАН
+ОБРАДОВИЋ СТЕВАН
+ОБРАДОВИЋ СТЕВО
+ОБРАДОВИЋ СТЕВО
+ОБРАДОВИЋ СТЈЕПАН
+ОБРАДОВИЋ СВЕТОЗАР
+ОБРАДОВИЋ СВЕТОЗАР
+ОБРАДОВИЋ СВЕТОЗАР
+ОБРАДОВИЋ ТОДОР
+ОБРАДОВИЋ ВЕРА
+ОБРАДОВИЋ ВЕРА
+ОБРАДОВИЋ ВОЈИСЛАВ
+ОБРАДОВИЋ ЗЛАТИЦА
+ОБРЕХТ ПЕТАР
+ОБРЕНИЋ БОРИВОЈЕ
+ОБРЕНИЋ ДРАГО
+ОБРЕНИЋ ЈЕЛИСАВЕТА
+ОБРЕНИЋ МАНОЈЛЕ
+ОБРЕНИЋ МИЛАДИН
+ОБРЕНИЋ МИЛЕВА
+ОБРЕНИЋ МИЛОМИР
+ОБРЕНИЋ ПРЕДРАГ
+ОБРЕНИЋ РАДОМАН
+ОБРЕНИЋ СНЕЖАНА
+ОБРЕНОВ ЖИВАН
+ОБРЕНОВ ЖИВАН
+ОБРЕНОВ ЈЕЛЕНА
+ОБРЕНОВ ЈЕВРЕМ
+ОБРЕНОВ ЈОЛАНДА
+ОБРЕНОВ КРУНА
+ОБРЕНОВ ПЕТАР
+ОБРЕНОВ РАДИВОЈ
+ОБРЕНОВ САЊА
+ОБРЕНОВ САВА
+ОБРЕНОВ СЛОБОДАНКА
+ОБРЕНОВ СТАНКА
+ОБРЕНОВ СТЕВАН
+ОБРЕНОВ ВАСА
+ОБРЕНОВ ВЛАДИМИР
+ОБРЕНОВ ЗОРИЦА
+ОБРЕНОВ ЗОРИЦА
+ОБРЕНОВИЋ БОЖИДАР
+ОБРЕНОВИЋ БРАНКО
+ОБРЕНОВИЋ ДАРИНКА
+ОБРЕНОВИЋ ДЕСИМИР
+ОБРЕНОВИЋ КАТАРИНА
+ОБРЕНОВИЋ МИЛАН ДР
+ОБРЕНОВИЋ МИОДРАГ ДИПЛ ИНГ
+ОБРЕНОВИЋ МИРОСЛАВ
+ОБРЕНОВИЋ НИКОЛА
+ОБРЕНОВИЋ РАДОСЛАВ
+ОБРЕНОВИЋ ТАТЈАНА
+ОБРЕНОВИЋ ВАСО
+ОБРЕНОВИЋ ВЛАЈКО
+ОБРИЋ ГОЈКО
+ОБРИЋ РАДОЈИЦА
+ОБРКНЕЖЕВ ЂОРЂЕ
+ОБРКНЕЖЕВ МИЛЕНКО
+ОБРКНЕЖЕВ РАДМИЛА
+ОБРКНЕЖЕВ РАДОЈКА
+ОБРКНЕЖЕВ СТЕВАН
+ОБРОВАЧКИ ДУШИЦА
+ОБРОВАЧКИ ГОРДАНА
+ОБРОВАЧКИ МИРОСЛАВ
+ОБРОВАЧКИ РАДЕ
+ОБРОВАЧКИ СВЕТОЗАР
+ОБРОВАЦ МИЈАТ
+ОБРОВСКИ ЂОРЂЕ
+ОБРОВСКИ ДРАГУТИН
+ОБРОВСКИ ИВАН
+ОБРОВСКИ ЈОВАН
+ОБРОВСКИ КАТИЦА
+ОБРОВСКИ МИХАЈЛО
+ОБРОВСКИ ВАСА
+ОБУЋИНА РАТОМИР
+ОБУЋИНА СЛАВКО
+ОБУЋИНА СЛАВОЉУБ
+ОЦОКОЉИЋ ЉУБИНКО
+ОЏИЋ НОВКА
+ОЏИЋ РАТОМИР
+ОЏИЋ ЗОРКА
+ОЏОВСКИ ИЛИЈА
+ОДАЏИЋ ДУШАН
+ОДАЏИЋ ГОРДАНА
+ОДАЏИЋ ЈЕЛИСАВЕТА
+ОДАЏИЋ НАДА
+ОДАЏИЋ РАДИВОЈ
+ОДАЏИЋ СТЕВАН
+ОДАЛОВИЋ БРАНКО
+ОДАВИЋ-ЈОСИЋ ЈЕЛИЦА ДИПЛ ИНГ
+ОДАВИЋ МИЛКА
+ОДАВИЋ СЛАВКО
+ОДОР ЈОСИП
+ОДОВИЋ ЈОВО
+ОДРИ БАЛИНТ
+ОДРИ КАРЛО
+ОФЕНБЕХЕР ГИЗЕЛА
+ОФЕНБЕХЕР ВАЛЕРИЈА
+ОФЕНБЕХЕР ВЕРИЦА
+ОГАР ЈЕЛЕНА
+ОГАР ВЛАДЕ
+ОГНЕНОВСКА БОЈАНА
+ОГНЕНОВСКА ЦВЕТАНКА
+ОГЊАНАЦ ДРАГИЦА
+ОГЊАНОВ МИЛЕТА
+ОГЊАНОВАЦ БОРИСЛАВ
+ОГЊАНОВИЋ ЂОРЂЕ
+ОГЊАНОВИЋ АЦА
+ОГЊАНОВИЋ БРАНИСЛАВА
+ОГЊАНОВИЋ ДАНИЛО
+ОГЊАНОВИЋ ДЕЈАН ДР ЛЕКАР
+ОГЊАНОВИЋ ДМИТАР
+ОГЊАНОВИЋ МАРИЈА ДР ЛЕКАР
+ОГЊАНОВИЋ МИХАЈЛО
+ОГЊАНОВИЋ МИЛОВАН
+ОГЊАНОВИЋ ОГЊЕНА
+ОГЊАНОВИЋ РАДОЈКА ДР ЛЕКАР
+ОГЊАНОВИЋ РАНКО
+ОГЊАНОВИЋ СПАСОЈЕ
+ОГЊАНОВИЋ СВЕТЛАНА
+ОГЊЕНОВИЋ БОЖИДАР
+ОГЊЕНОВИЋ ДАРА
+ОГЊЕНОВИЋ ДРАГУТИН
+ОГЊЕНОВИЋ МИЛЕНКО
+ОГЊЕНОВИЋ НИКОЛА
+ОГЊЕНОВИЋ НИКОЛА
+ОГЊЕНОВИЋ НОВКА
+ОГЊЕНОВИЋ ПЕТАР
+ОГЊЕНОВИЋ РАДОВАНКА
+ОГЊЕНОВИЋ СТАНИСЛАВ
+ОГЊЕНОВИЋ СТЕВАН
+ОГЊЕНОВИЋ СТЕВО
+ОГЊЕНОВИЋ ТОМИСЛАВ
+ОГОРЕЛИЦА БИЛЈАНА
+ОГОРЕЛИЦА БОГДАН
+ОГОРЕЛИЦА БРАНКО
+ОГОРЕЛИЦА МАРИЈА
+ОГРИЗЕК ДРАГИЦА
+ОГРИЗЕК ДРАГУТИН
+ОГРИЗЕК КРИСТИНА
+ОГРИЗЕК РОБЕРТ
+ОГРИЗОВИЋ АЛЕКСАНДАР
+ОГРИЗОВИЋ БОРА
+ОГРИЗОВИЋ ДЕСАНКА
+ОГРИЗОВИЋ ДЕСАНКА
+ОГРИЗОВИЋ ДРАГИЦА
+ОГРИЗОВИЋ ДУШАН
+ОГРИЗОВИЋ ЉУБИЦА
+ОГРИЗОВИЋ ЉУБИЦА
+ОГРИЗОВИЋ МИЛАН
+ОГРИЗОВИЋ МИЛЕ
+ОГРИЗОВИЋ МИЛИВОЈ
+ОГРИЗОВИЋ НЕДЕЉКО
+ОГРИЗОВИЋ НЕДЕЉКО
+ОГРИЗОВИЋ РАДОЈКА
+ОГРИЗОВИЋ СРЕТА
+ОГРИЗОВИЋ ВЕЉКО
+ОГРИЗОВИЋ ВЛАДИМИР
+ОГРИЗОВИЋ ЗОРАН
+ОЈДАНИЋ САВА
+ОЈКИЋ СЛАВКО
+ОКАШАНОВИЋ СРЕТЕН
+ОКАЊ СТЕВАН
+ОКАЊИ ЛАЈОШ
+ОКАЊИ ОСКАР
+ОКАЊИ РАНКА
+ОКАЊИ ТИБОР
+ОКАНОВИЋ НОВИЦА
+ОКЕЗАН ЈОВАН
+ОКИЉ СЛАВКО
+ОКИЉЕВИЋ СОФИЈА
+ОКЉЕША НЕНАД
+ОКЉЕША НЕНАД
+ОКЛОБЏИЈА МАРКО
+ОКРАЈНОВ СТЕВАН
+ОКРУЖНИК ДРАГАН
+ОКСЕНФЕЛД ЈОВАН
+ОКУКА ЉИЉАНА
+ОКУЛИЋ БОГДАН
+ОКУЛИЋ ЗОРАН
+ОЛШОВИ НИКОЛА
+ОЛАХ ШАНДОР
+ОЛАХ ШАНДОР
+ОЛАХ ШАНДОР
+ОЛАХ ЂОРЂЕ
+ОЛАХ АНДРИЈА
+ОЛАХ ЕРНА
+ОЛАХ ФЕРЕНЦ
+ОЛАХ ФЕРЕНЦ
+ОЛАХ ИШТВАН
+ОЛАХ ИШТВАН
+ОЛАХ ЈЕЛЕНА
+ОЛАХ ЈЕЛИСАВЕТА
+ОЛАХ ЈОВАН
+ОЛАХ ЈУЛИЈАНА
+ОЛАХ ЛАСЛО
+ОЛАХ МИРКО
+ОЛАХ НАНДОР
+ОЛАХ НАНДОР
+ОЛАХ ПАВЛЕ
+ОЛАХ ПАВЛЕ
+ОЛАХ РОЗАЛИЈА
+ОЛАХ ВИНЦЕ
+ОЛАЈОШ БЕЛА
+ОЛАЈОШ ГОРДАНА
+ОЛАЈОШ ЈАНОШ
+ОЛАЈОШ МИХАЉ
+ОЛАЈОШ МИХАЉ
+ОЛАЈОШ ОТО
+ОЛАР ПАУ
+ОЛБИНА СЛАВКО
+ОЛЕАР МИХАЈЛО
+ОЛЕАР МИХАЈЛО
+ОЛЕАР САЊА
+ОЛЕАР СВЕТИСЛАВ
+ОЛЕАР ВЛАДА
+ОЛЕЈАР ЈОАКИМ
+ОЛИЧКОВ БРАНИСЛАВ
+ОЛИЧКОВ МИЛОРАД
+ОЛИЋ СТЕВАН
+ОЛИВЕРИЋ НЕБОЈША
+ОЉШЕВСКА НАТАША
+ОЉАЧА ИЛИЈА
+ОЉАЧА МАРИЦА
+ОЉАЧА МИЛЕНКО
+ОЉАЧА МИЛОВАН
+ОЉАЧА НИКОЛА
+ОЉАЧА РАДА
+ОЉАЧА СЛАВОЉУБ
+ОЉАЧА СТАНИСЛАВ
+ОЉАЧА СТЕВАН
+ОЛМАН МАРИЈА
+ОЛУШКИ ДОБРИЛА
+ОЛУШКИ ДУШАН
+ОЛУШКИ ДУШАН
+ОЛУШКИ ЛАЗАР
+ОЛУШКИ МИЛУТИН
+ОЛУШКИ МИРОСЛАВ
+ОЛУШКИ МИРОСЛАВ
+ОЛУШКИ ОЛИВЕРА
+ОЛУШКИ СТОЈАН
+ОЛУШКИ ТОДОР
+ОЛУШКИ ТОМИСЛАВ
+ОЛУШКИ ВАСА
+ОЛУШКИ ВЕЛИМИР ДР
+ОЛУШКИ ВЕРИЦА
+ОЛУЈИЋ ИВАНА
+ОЛУЈИЋ ИВАН
+ОЛУЈИЋ ЈЕЛЕНА
+ОЛУЈИЋ МИЛИЦА
+ОЛУЈИЋ МИРКО
+ОМЧИКУС БОШКО
+ОМЧИКУС ЈЕЛЕНА
+ОМЧИКУС МАГДА
+ОМЧИКУС НИКОЛА
+ОМЧИКУС РАЈКО
+ОМАЉЕВ ИВАН
+ОМАЉЕВ ИВАН
+ОМАЉЕВ ЈУЛКА
+ОМАЉЕВ ЛЕПОСАВА
+ОМАЉЕВ ЛЕПОСАВА
+ОМАЉЕВ МИЛЕНА
+ОМАЉЕВ МИЛОРАД
+ОМАЉЕВ ВОЈИСЛАВ
+ОМАЗИЋ СОФИЈА
+ОМЕРАГИЋ КЕМАЛ
+ОМЕРИ ХАЈРУДИН
+ОМЕРИ ХАЛИМ
+ОМЕРИ ХАСО
+ОМЕРИ НЕЏАД
+ОМЕРИ НУРУДИН
+ОМЕРЗУ АНТОН
+ОМЕРЗУ ЕЛИЗАБЕТА
+ОМИЋ ИДРИЗ
+ОМОРАЦ КАТАРИНА
+ОМОРАЦ ЛАТИНКА
+ОНЧЕВСКИ ЈОВАН
+ОНЧУ ПЕТАР
+ОНДРИК ДУШАНКА
+ОНЕШЧУК МИХАЈЛО
+ОНЕШЋУК НЕНАД
+ОНХАУЗ МАРИЈА
+ОНОДИ ИШТВАН
+ОПАЧАК АНТУН
+ОПАЧАК ИВАН
+ОПАЧИЋ АНЂА
+ОПАЧИЋ АНГЕЛИНА
+ОПАЧИЋ БОСИЉКА
+ОПАЧИЋ БРАНКО
+ОПАЧИЋ ДУШАН
+ОПАЧИЋ КОСТА
+ОПАЧИЋ МИЛАН
+ОПАЧИЋ МИЛАН
+ОПАЧИЋ МИЛОРАД
+ОПАЧИЋ МИОДРАГ
+ОПАЧИЋ МИРКО
+ОПАЧИЋ МИРКО
+ОПАЧИЋ НЕНАД
+ОПАЧИЋ ПАВЛЕ
+ОПАЧИЋ СИМО
+ОПАЧИЋ СЛАВКО
+ОПАЧИЋ СТЕВАН
+ОПАЧИЋ ТОДОР
+ОПАЛИЋ ДАРИНКА
+ОПАЛИЋ МАРКО
+ОПАЛИЋ НИКОЛА
+ОПАЛИЋ НИКОЛА
+ОПАЛИЋ НИКОЛА
+ОПАЛИЋ СОФИЈА
+ОПАНЧАРЕВ ДУШАН
+ОПАНЧАРЕВ ИВАН
+ОПАНЧАРЕВ МИЛКА
+ОПАРНИЦА ЉУБО
+ОПАРНИЦА ЛУКА
+ОПАРНИЦА МАКСИМ
+ОПАРНИЦА МАКСИМ
+ОПАРНИЦА МАКСИМ
+ОПАРНИЦА МАРИНКО
+ОПАРНИЦА МИЛЕНКО
+ОПАРНИЦА МИРА
+ОПАРНИЦА СОФИЈА
+ОПАРНИЦА ВИД
+ОПЕЛЦ ЛАДИСЛАВ
+ОПОЈЛЕВИЋ ЛАЗАР
+ОПРАНОВИЋ БОЖИДАР
+ОПРАНОВИЋ МИЦА
+ОПРЕШНИК АНКИЦА
+ОПРИЈАН АНЂЕЛКО ДИПЛ ИНГ
+ОПРИЈАН ДРАГАН
+ОПРИЈАН МИЛКА
+ОПРУЦ МИЛОРАД
+ОПСЕНИЦА МИЛАН
+ОПСЕНИЦА СОКА
+ОРЧИЋ ШИМЕ
+ОРЧИЋ ШИМЕ
+ОРЧИЋ БОЖИДАР
+ОРЧИЋ ДРАГО
+ОРЧИЋ ИВАН
+ОРЧИЋ СТЈЕПАН
+ОРШИЋ ЂОРЂЕ
+ОРШИЋ ЈОЦА
+ОРШИЋ МИЛИЦА
+ОРШОШ ЂОРЂЕ
+ОРШОШ БРАНКО
+ОРШОШ ДРАГАН
+ОРШОШ ФЕРЕНЦ
+ОРШОШ ЈОСИП
+ОРШОШ НИКОЛА
+ОРШОШ РОЗАЛИЈА
+ОРШОШ САВА
+ОРШОШ ТЕРЕЗА
+ОРШОШ ЗОРАН
+ОРШОЛИЋ СТЈЕПАН
+ОРАНИЦА МАКСИМ
+ОРАВЕЦ БРАНИСЛАВ
+ОРАВЕЦ БРАНКО
+ОРАВЕЦ МАРКО
+ОРАВЕЦ ПАВЛЕ
+ОРБАН АЛЕКСАНДАР
+ОРБАН ЕМИЛИЈА
+ОРБАН ГАВРА
+ОРБАН ВЕСНА
+ОРДАНОСКИ ЈЕЛЕНА
+ОРДИНАЧЕВ ЂОРЂЕ
+ОРДИНАЧЕВ МЛАДЕН
+ОРДИНАЧЕВ ТОДОР
+ОРДИНАЧЕВ ТОДОР
+ОРДИНАЧЕВ ТОДОР
+ОРЕШЧАНИН БОГДАН
+ОРЕШЧАНИН БРАНКО
+ОРЕШЧАНИН МИЛАН
+ОРЕШЧАНИН МИЛОВАН
+ОРЕШЧАНИН НАТАЛИЈА ДР
+ОРЕШЧАНИН НАТАЛИЈА
+ОРЕШЧАНИН НИКОЛА
+ОРЕШЧАНИН РАДОВАН
+ОРЕШЧАНИН ВЛАДИМИР
+ОРЕШЧАНИН ВЛАДИМИР
+ОРЕШЋАНИН ДУШАН
+ОРЕШКОВИЋ ДОНА
+ОРЕШКОВИЋ ЈЕЛЕНА
+ОРЕШКОВИЋ МИЛЕ
+ОРЕШКОВИЋ СЛАВКО
+ОРЕШКОВИЋ ЗВОНИМИР
+ОРЕБ БОРИС
+ОРЕХОВАЦ РУЖА
+ОРЕЉ ЂУРО
+ОРЕЉ БРАНИСЛАВ
+ОРЕЉ ДАРИНКА
+ОРЕЉ ЈОВАН
+ОРЕЉ ЉУБО
+ОРЕЉ МАТИЛДА
+ОРЕЉ МИЛЕВА
+ОРЕЉ НАТАЛИЈА
+ОРЕЉ РАДЕ
+ОРЕНДИ ЈУЛИЈАНА
+ОРЕНДИ ЛАСЛО
+ОРЕНДИ ОТО
+ОРЛАНДИЋ КОРНЕЛИЈА
+ОРЛАНДИЋ ЗОЛТАН
+ОРЛИЋ БРАНИСЛАВ
+ОРЛИЋ ЉУБИЦА
+ОРЛИЋ ЉУБИЦА
+ОРЛИЋ МАРИЦА
+ОРЛИЋ МАРИЈА
+ОРЛИЋ МИЛАН
+ОРЛИЋ МИЛОРАД
+ОРЛИЋ НАДА
+ОРЛИЋ НАДЕЖДА
+ОРЛИЋ НЕДЕЉКО
+ОРЛИК АНА
+ОРЛИК МАРИЈА
+ОРЛОВАЦ ЕРЖЕБЕТ
+ОРЛОВИЋ АНТЕ
+ОРЛОВИЋ ДАРИНКА
+ОРЛОВИЋ ДУШАН
+ОРЛОВИЋ ЈОВО
+ОРЛОВИЋ ЉУБИЦА
+ОРЛОВИЋ МАНЕ
+ОРЛОВИЋ МИХАЈЛО
+ОРЛОВИЋ МИЛАН
+ОРЛОВИЋ МИЛАН
+ОРЛОВИЋ МИЛОРАД ДР
+ОРЛОВИЋ МИЛОРАД
+ОРЛОВИЋ САША
+ОРЛОВИЋ СРБОЉУБ
+ОРЛОВИЋ СТЕВИЦА
+ОРЛОВИЋ СТОЈАН
+ОРЛОВИЋ СВЕТЛАНА
+ОРМАИ ТИБОР
+ОРЊАКОВ ПРИЗРЕНКА
+ОРО ЧЕДОМИР
+ОРОС ЖАРКО
+ОРОС ЂУРА
+ОРОС ЂУРА
+ОРОС АЛБЕРТ
+ОРОС ЕУГЕН
+ОРОС ЈОАКИМ
+ОРОС МАРИЈА
+ОРОС НИКОЛА
+ОРОС ВАСА
+ОРОС ЗДЕНКА
+ОРОВЧАНЕЦ КИРА ДР
+ОРОВЕЦ ЈОСИП
+ОРОВИЋ МИЛОВАН
+ОРСАГ АНТАЛ
+ОРСИЋ РАДМИЛА
+ОРТАК КАЋА
+ОРВОШ ЛАЈОШ
+ОРЗА МИРЦА
+ОРЗА РОСАНА
+ОСЕЋАНСКИ МЛАДЕН
+ОСЕТРОВ НИКОЛА
+ОСЛОВЧАН БОСИЉКА
+ОСМАНАЈ ИМЕР
+ОСМАНИ АСАН
+ОСМАНИ МЕХМЕД
+ОСМАНИ НЕШАТ
+ОСМАНИ РОМАНКА
+ОСМАНИ СЕЛИМ
+ОСМАНКАЧ СЕЛИМ
+ОСМАНОВИЋ КЛАУДИЈА
+ОСМАНОВИЋ ЉУБИНКА
+ОСМОНОЈ САДРИЈА
+ОСНОВИЋ ОСКАР
+ОСОСЛИЈА РАДЕНКО
+ОСРЕДКАР ЈОСИП
+ОСТЕР ИЛОНА
+ОСТОИЋ ЂОРЂЕ
+ОСТОИЋ ЗОРАН
+ОСТОЈИЋ ЖИВКО
+ОСТОЈИЋ ЂОРЂЕ
+ОСТОЈИЋ БОШКО
+ОСТОЈИЋ БОЖИДАР
+ОСТОЈИЋ БОЖИДАР
+ОСТОЈИЋ БОГДАН
+ОСТОЈИЋ БРАНА
+ОСТОЈИЋ БРАНИМИР
+ОСТОЈИЋ БРАНИСЛАВ ДР
+ОСТОЈИЋ БРАНКО
+ОСТОЈИЋ ДАФИНА
+ОСТОЈИЋ ДОБРИВОЈ
+ОСТОЈИЋ ДРАГАН
+ОСТОЈИЋ ДРАГИЦА
+ОСТОЈИЋ ДРАГИЦА
+ОСТОЈИЋ ДРАГОЉУБ
+ОСТОЈИЋ ДУШАН
+ОСТОЈИЋ ДУШАН
+ОСТОЈИЋ ДУШАН
+ОСТОЈИЋ ГОЈКО
+ОСТОЈИЋ ГОРИНКА
+ОСТОЈИЋ ИВАН
+ОСТОЈИЋ ЈОВАНКА
+ОСТОЈИЋ КАТИЦА
+ОСТОЈИЋ ЛАЗАР
+ОСТОЈИЋ ЉУБА
+ОСТОЈИЋ ЉУБИНКО
+ОСТОЈИЋ ЉУБОМИР
+ОСТОЈИЋ ЉУБОМИР
+ОСТОЈИЋ ЉУБОМИР
+ОСТОЈИЋ МИЋА
+ОСТОЈИЋ МИЛАДИН
+ОСТОЈИЋ МИЛАН
+ОСТОЈИЋ МИЛЕНКО
+ОСТОЈИЋ МИЛЕНКО
+ОСТОЈИЋ МИЛЕВА
+ОСТОЈИЋ МИЛИЦА
+ОСТОЈИЋ МИЛКА
+ОСТОЈИЋ МИЛОШ
+ОСТОЈИЋ МИЛОРАД
+ОСТОЈИЋ МИЛОРАД
+ОСТОЈИЋ МИРЈАНА
+ОСТОЈИЋ НАДА
+ОСТОЈИЋ НАТАША
+ОСТОЈИЋ НЕНАД
+ОСТОЈИЋ ОБРАД
+ОСТОЈИЋ ОБРАД
+ОСТОЈИЋ ОЛГА
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПЕТАР
+ОСТОЈИЋ ПРЕДРАГ
+ОСТОЈИЋ РАДИВОЈЕ
+ОСТОЈИЋ РАДОЈИЦА
+ОСТОЈИЋ РАДОВАН
+ОСТОЈИЋ РАТКО
+ОСТОЈИЋ РИСТО
+ОСТОЈИЋ СЛАВИЦА
+ОСТОЈИЋ СЛАВКО
+ОСТОЈИЋ СЛОБОДАН
+ОСТОЈИЋ СМИЉКА
+ОСТОЈИЋ СТАНА
+ОСТОЈИЋ СТАНКА
+ОСТОЈИЋ СВЕТОЗАР
+ОСТОЈИЋ ТОМИСЛАВ
+ОСТОЈИЋ ВАСА
+ОСТОЈИЋ ВАСИЛИЈЕ
+ОСТОЈИЋ ВЕСЕЛИН
+ОСТОЈИЋ ВЕСЕЛИН
+ОСТОЈИЋ ВЛАДИМИР
+ОСТОЈИЋ ВОЈИСЛАВ
+ОСТОЈИЋ ЗАГОРКА
+ОСТОЈИЋ ЗОРАН
+ОСТОЈИЋ ЗОРА
+ОСТОЈИН ЖАРКО
+ОСТОЈИН ЈУЛКА
+ОСТОЈИН ЛАЗАР
+ОСТОЈИН МАРИЈА
+ОСТОЈИН МИЛОШ
+ОСТОЈИН ПЕРА
+ОСТОЈИН ПЕРО
+ОСТОЈИН ПЕТАР
+ОСТОЈИН ПЕТАР
+ОСТОЈИН РАДОВАН
+ОСТОЈИН СВЕТИСЛАВ
+ОСТОЈИН ТОША
+ОСТРОГОНАЦ ИВАН НОВИНАР
+ОСТРОГОНАЦ ИВАН
+ОСТРОГОНАЦ ТИБОР
+ОСВАЛД БАРБАРА
+ОСВАЛД ИВАН
+ОСВАЛД ВЕРА
+ОТАШЕВИЋ ЖИВКО
+ОТАШЕВИЋ ЈОВАН
+ОТАШЕВИЋ СЛОБОДАНКА
+ОТАШЕВИЋ ВЛАСТА
+ОТИЋ ЖИВКО
+ОТИЋ БОРИВОЈ
+ОТИЋ БОРИВОЈ
+ОТИЋ ДАРИНКА
+ОТИЋ ДУБРАВКА
+ОТИЋ ЈОВАНКА
+ОТИЋ КАТИЦА
+ОТИЋ МИЛАН
+ОТИЋ МИЛИВОЈ
+ОТИЋ НИКОЛА
+ОТИЋ НОВАК
+ОТИЋ РАДОСЛАВА
+ОТИЋ РАДОСЛАВА
+ОТИЋ РАДОСЛАВ
+ОТИЋ САВА
+ОТИЋ СВЕТОЗАР
+ОТИЋ ВЕЛИЗАР
+ОТИЋ ВЛАДИСЛАВ
+ОТИЋ ВУКИЦА
+ОТЛОКАН ЈОВАН
+ОТМАЧИЋ ДРАГО
+ОТОШ АНДРАШ
+ОТОРАНОВ СЛАВКО
+ОТОВИЋ ВЛАДИМИР
+ОТРУПЧАК ЈОСИП
+ОТРУПЧАК МИЛОШ
+ОТРУПЧАК САМУИЛО
+ОВЦИН МИЛОРАД
+ОВУКА ЂУРО
+ОВУКА ЂУРО
+ОВУКА МИЛАН
+ОВУКА НИКОЛА
+ОЗЕР ЂУРА
+ОЗЕР ЂУРА
+ОЗЕР ЂУРА
+ОЗМЕЦ ВЕРА
+ПШЕНИЧНИК ЗВОНИМИР
+ПАЧАРИЋ ЖИВАН
+ПАЧАРИЋ МАРИЈА
+ПАЧАРИЋ МИРКО
+ПАЧАРИЋ НИКОЛА
+ПАЧАРИЋ РАДИВОЈ
+ПАЧАРИЋ РАДОМИР
+ПАЧАРИЋ ЗОРАН
+ПАШЋАН ШТЕФАНИЈА
+ПАШЋАН ЂОРЂЕ
+ПАШЋАН ЂОРЂЕ
+ПАШЋАН АНКА
+ПАШЋАН ДАНИЦА
+ПАШЋАН ДРАГАН
+ПАШЋАН ДУШАНКА
+ПАШЋАН ДУШАН
+ПАШЋАН ГАВРА
+ПАШЋАН ЈОВАН
+ПАШЋАН ЈОВАН
+ПАШЋАН МИЛОРАД
+ПАШЋАН НАДЕЖДА
+ПАШЋАН НЕДЕЉКО
+ПАШЋАН НИКОЛА
+ПАШЋАН ОЛГА
+ПАШЋАН ПЕРА
+ПАШЋАН ПЕТАР
+ПАШЋАН РАДИВОЈ
+ПАШЋАН РАДОСЛАВА
+ПАШЋАН РАДОСЛАВ
+ПАШЋАН САВА
+ПАШЋАН СИНИША
+ПАШЋАН СМИЉА
+ПАШЋАН СТЕВАН
+ПАШЋАН ТОДОР
+ПАШЋАН ВАСА
+ПАШЋАН ЗАГОРКА
+ПАШЋАНОВИЋ ГРАДИМИР
+ПАШЋАНОВИЋ ЛАЗАР
+ПАШЋАНОВИЋ ЉУБИЦА
+ПАШЋИК КЛАРА
+ПАШЋИК ЛАСЛО
+ПАШАГИЋ РАЈКО
+ПАШАЈЛИЋ АНЂЕЛКО
+ПАШАЈЛИЋ БИЉАНА
+ПАШАЈЛИЋ МИОДРАГ
+ПАШАЈЛИЋ РАДОСЛАВ
+ПАШАЈЛИЋ РАДОСЛАВ
+ПАШАЈЛИЋ ВЛАДО
+ПАШАЛИЋ ПАВЛЕ
+ПАШАНСКИ МИЛАН
+ПАШАНСКИ ВУКИЦА
+ПАШИЋ БОЖАНА
+ПАШИЋ БОЖО
+ПАШИЋ ДРАГИЦА
+ПАШИЋ ДУШКО
+ПАШИЋ ЈОВАН
+ПАШИЋ КАТИЦА
+ПАШИЋ МИЛАН
+ПАШИЋ МИЛЕНА
+ПАШИЋ ПЕТАР
+ПАШИЋ РОСА
+ПАШИЋ САША
+ПАШИЋ СИНИША
+ПАШИЋ СТОЈА
+ПАШИЋ ВОЈИСЛАВ
+ПАШИЋ ЗОРА
+ПАШИН ГРОЗДАНА
+ПАШКА ШАНДОР
+ПАШКИНОВ ВАСКО
+ПАШТЕРАЦ АЛЕКСАНДАР
+ПАШТИ ШАНДОР
+ПАШТИ МАТИЈА
+ПАШУЈКОВИЋ ЈОВАН
+ПАЋИ БОРИС
+ПАЋИ ИШТВАН
+ПАЋИ МАРИО
+ПАЋУК НИКОЛА
+ПАЋУК СЛАВКО
+ПАЖЂЕРСКИ-МАНОЈЛОВИЋ ЈЕЛЕНА
+ПАЖИН ЖЕЉКО
+ПАЖИН АНЂЕЛКО
+ПАЖИН ДАНИЦА
+ПАЖИН ЉУБОМИР
+ПАЂАН ЉУБОМИР
+ПАЂАН МИЛИЦА
+ПАЂЕН ДУШАН
+ПАЂЕН ЛЕПА
+ПАЂЕН МАРИЈА
+ПАЂЕН СТЕВА
+ПАЂЕН ЗДРАВКО
+ПАЦ ИВАНКА
+ПАЦЕК ЛАСЛО
+ПАЦИК ИШТВАН
+ПАДЕЖАНИН ЉУБО
+ПАДЕЖАНИН ВЛАДЕТА
+ПАДЕЈСКИ МИЛЕНА
+ПАДЕЈСКИ МИЛОВАН
+ПАДЕЈСКИ САВА
+ПАДЕЈСКИ ВЕЛИМИР
+ПАДИ АЛЕКСАНДАР
+ПАДИ АЛЕКСАНДАР
+ПАДИ ЛАЈОШ
+ПАДРОВ ГОРАН
+ПАДРОВ НИКОЛА
+ПАДРОВ РАДИВОЈ
+ПАДРОВ ВЕСНА
+ПАГАЧ БИЉАНА
+ПАГАЧ НИКОЛА
+ПАГАЧЕВИЋ АНЂЕЛКО
+ПАГАЧЕВИЋ ДРАГОМИР
+ПАГАЧЕВИЋ СТЕВАН
+ПАГАЧЕВИЋ СТЕВАН
+ПАГАЧЕВИЋ ВАСА
+ПАГАНЕТО ТИНА
+ПАГОНИС ЈУЛКА
+ПАГОНИС ВЛАДИМИРОС
+ПАИЋ ЂУРАЂ
+ПАИЋ ДРАГАН
+ПАИЋ ФРАНЕ
+ПАИЋ ИВАН
+ПАИЋ МАРИЈА
+ПАЈЧИЋ АЛЕКСА
+ПАЈЧИЋ АНА
+ПАЈЧИН ИЛИЈА
+ПАЈЧИН МИЛОЈКО
+ПАЈЧИН НЕДЕЉКА
+ПАЈЧИН ВОЈИСЛАВ
+ПАЈАНТИЋ ДРАГАН
+ПАЈАЗИТОВИЋ МИРЈАНА
+ПАЈДАКОВИЋ ДУБРАВКА
+ПАЈДИЋ ЈУЛИЈА
+ПАЈДИЋ МАРИЈАН
+ПАЈЕВИЋ ЂОРЂЕ
+ПАЈЕВИЋ ДРАГОЉУБ
+ПАЈЕВИЋ ГОРАН
+ПАЈЕВИЋ КОСТА
+ПАЈЕВИЋ МИЛАН
+ПАЈИЋ БЛАГОЈЕ
+ПАЈИЋ БЛАГОЈЕ
+ПАЈИЋ БОЖИДАР
+ПАЈИЋ БОЖО
+ПАЈИЋ БОГИЋ
+ПАЈИЋ БОРИСЛАВ
+ПАЈИЋ БРАНИСЛАВ
+ПАЈИЋ БРАНКО
+ПАЈИЋ БУДИСЛАВ
+ПАЈИЋ ДОБРИВОЈ
+ПАЈИЋ ДРАГОСЛАВ
+ПАЈИЋ ДУШАН ДР
+ПАЈИЋ ДУШАН
+ПАЈИЋ ДУШАН
+ПАЈИЋ ЕМИНА
+ПАЈИЋ ГОРДАНА
+ПАЈИЋ ГОРИЦА
+ПАЈИЋ ГРУЈА
+ПАЈИЋ КОВИЉКА
+ПАЈИЋ ЉУБИНКА
+ПАЈИЋ ЉУБОМИР ДИПЛ ИНГ
+ПАЈИЋ МАРИЈА
+ПАЈИЋ МИЛИЦА
+ПАЈИЋ МИЛИВОЈЕ
+ПАЈИЋ МИЛОШ
+ПАЈИЋ МИЛОШ
+ПАЈИЋ МИЛОЈЕ
+ПАЈИЋ МИЛОРАД
+ПАЈИЋ МИЛОСАВ
+ПАЈИЋ МИЛУН
+ПАЈИЋ МИРКО
+ПАЈИЋ МИРКО
+ПАЈИЋ МЛАДЕН
+ПАЈИЋ НАДА
+ПАЈИЋ НАДА
+ПАЈИЋ НИКОЛА
+ПАЈИЋ НОВАК
+ПАЈИЋ ПЕРО
+ПАЈИЋ ПЕТАР
+ПАЈИЋ РАДОЈИЦА
+ПАЈИЋ РАДОМИР
+ПАЈИЋ РАДОСЛАВА
+ПАЈИЋ РАЈКО
+ПАЈИЋ СИНИША
+ПАЈИЋ СМИЉА
+ПАЈИЋ СРЕДОЈЕ
+ПАЈИЋ СТЕВАН
+ПАЈИЋ СВЕТОЗАР
+ПАЈИЋ ТИХОМИР
+ПАЈИЋ ВАСА
+ПАЈИЋ ВЕЛИМИР
+ПАЈИЋ ВЕСЕЛИН
+ПАЈИЋ ВИДОСАВА
+ПАЈИЋ ВЛАДИСЛАВ
+ПАЈИЋ ВУКИЦА
+ПАЈИК ДАНИЦА
+ПАЈИН ЈОВАН
+ПАЈИН МИЛИВОЈ
+ПАЈКЕРТ АЛЕКСАНДАР
+ПАЈКЕРТ ФРАЊА
+ПАЈКЕРТ МИРОСЛАВА
+ПАЈКЕРТ РАНКА
+ПАЈКИЋ ДРАГАН
+ПАЈКИЋ РАДОСЛАВ
+ПАЈКОВИЋ ДРАГАНА
+ПАЈКОВИЋ ВЛАСТИМИР
+ПАЈОР МАТИЈА
+ПАЈОВИЋ ШПИРО
+ПАЈОВИЋ ЂОРЂЕ
+ПАЈОВИЋ ДРАГОМИР
+ПАЈОВИЋ ДУШАН
+ПАЈОВИЋ ЈЕЛЕНА
+ПАЈОВИЋ ПРЕДРАГ
+ПАЈОВИЋ РАЈКО
+ПАЈОВИЋ СЛОБОДАН
+ПАЈОВИЋ ЗОРКА
+ПАЈТАШЕВ ДОБРИВОЈ
+ПАЈТАК РАДМИЛА
+ПАЈТИЋ ПАВЛЕ
+ПАЈВАНЧИЋ ФРАЊА
+ПАЈВАНЧИЋ КАТА
+ПАЈВАНЧИЋ МАРИЈАНА
+ПАЈВОД БОСИЉКА
+ПАКАШКИ ЂУРА
+ПАКАШКИ МИКА
+ПАКАШКИ МИЛОВАН
+ПАКАШКИ РАДОСЛАВ
+ПАКАШКИ СИМА
+ПАКАШКИ ВАСА
+ПАКАШКИ ВИТАЛИЈ ДИПЛ ИНГ
+ПАКАИ ЈОЖЕФ
+ПАКАИ ЛАСЛО
+ПАКЛАР ВИДА
+ПАКЛЕДИНАЦ ВИНКО
+ПАКУШЕВСКИ КАТАРИНА
+ПАКУШЕВСКИ МИХАЈЛО
+ПАКУШЕВСКИ МИТАР
+ПАКУШЕВСКИ РУЖИЦА
+ПАКУШЕВСКИЈ СТЕФАН
+ПАЛ ИЛОНА
+ПАЛ РОЗАЛИЈА
+ПАЛЧЕК ЈОСИП
+ПАЛАЧКОВИЋ МИЛАН
+ПАЛАЧКОВИЋ УРОШ
+ПАЛАШТИ ЂОРЂЕ
+ПАЛАШТИ ДЕСАНКА
+ПАЛАШТИ ИШТВАН
+ПАЛАШТИ ИШТВАН
+ПАЛАШТИ ЈОСИП
+ПАЛАШТИ РОЗАЛИЈА
+ПАЛАДА ЈОЗО
+ПАЛАЛИЋ ЂУРА
+ПАЛАЛИЋ ДРАГАН
+ПАЛАЛИЋ ДУШАН
+ПАЛАЛИЋ ГОЈКО
+ПАЛАЛИЋ ГОЈКО
+ПАЛАЛИЋ ИЛИЈА
+ПАЛАЛИЋ ЈОВАН
+ПАЛАЛИЋ МИРКО
+ПАЛАЛИЋ НЕВЕНА
+ПАЛАЛИЋ НИКО
+ПАЛАЛИЋ ПАВЛЕ
+ПАЛАЛИЋ РАДЕ
+ПАЛАЛИЋ СНЕЖАНА
+ПАЛАЛИЋ СРЕТО
+ПАЛАЛИЋ СТОЈАН
+ПАЛАЛИЋ ТОДЕ
+ПАЛАЛИЋ ВИД
+ПАЛАЛИЋ ВОЈИН
+ПАЛАЛИЋ ЗДРАВКО
+ПАЛАМАРЧУК АЛЕКСАНДАР
+ПАЛАН ЈОСИП
+ПАЛАНЧАНИН ЕЛЕНА
+ПАЛАНЧАНИН ЈОВАН
+ПАЛАНЧАНИН РУЖА
+ПАЛАНЧАНИН ВАСА
+ПАЛАНЧАНИН ВАСА
+ПАЛАНАЧКИ ЂОРЂЕ
+ПАЛАНАЧКИ РУЖИЦА
+ПАЛАНАЧКИ САВА
+ПАЛАТИНУШ АНДРАШ
+ПАЛАТИНУШ ИШТВАН
+ПАЛАТИНУШ ЈОЖЕФ
+ПАЛЕЖЕВИЋ БОРИСЛАВ
+ПАЛЕВИЋ СЛАВИЦА
+ПАЛФИ АЛЕКСАНДАР
+ПАЛФИ БОРКА
+ПАЛФИ ИШТВАН
+ПАЛФИ ИШТВАН
+ПАЛФИ ЈУЛИЈАНА
+ПАЛФИ КАТИЦА
+ПАЛИЧКО ЂУРЂИНКА
+ПАЛИЧКО АНДРАШ
+ПАЛИЧКО ИЛЕШ
+ПАЛИЧКО ИРЕНА
+ПАЛИЧКО ЈЕЛЕНА
+ПАЛИШАШКИ ОЛГА
+ПАЛИЋ БОРИСЛАВ ДИПЛ ИНГ
+ПАЛИЋ ДРАГАН
+ПАЛИЋ ДУШАН
+ПАЛИЋ ЉУБИЦА
+ПАЛИЋ МАРТА
+ПАЛИЋ МИЛЕНКО
+ПАЛИЋ НИКОЛА
+ПАЛИЋ ОЛГА
+ПАЛИЋ СТЕВАН
+ПАЛИЋ СТЕВАН
+ПАЛИЋ ВЛАСТИМИР
+ПАЛИНКАШ ЂОРЂЕ
+ПАЛИНКАШ ЂУРА
+ПАЛИНКАШ БЛАНКА
+ПАЛИНКАШ БОРИВОЈЕ ДИПЛ ИНГ
+ПАЛИНКАШ ФРАЊА
+ПАЛИНКАШ ГЕЗА
+ПАЛИНКАШ ЈОЖЕФ
+ПАЛИНКАШ МАРИЈА
+ПАЛИНКАШ МИХАЉ
+ПАЛИНКАШ МИРКО
+ПАЛИНКАШ СТЕВАН
+ПАЛИНКАШ ВЕРА ДР
+ПАЉИЋ ЉУБОМИР
+ПАЉУРАС АПОСТОЛОС
+ПАЛОШ ИВАН
+ПАЛОШИ ОЛГА
+ПАЛОЦ ШАНДОР
+ПАЛОЦ ЛАСЛО
+ПАЛОЦ ТИБОР
+ПАЛОТАШ АНДРИЈА
+ПАЛОВ МИХАИЛО ДР
+ПАЛУРОВИЋ СТЕПАН
+ПАМУЧИНА ЈОВАН
+ПАНЧИЋ ГАВРИЛО
+ПАНЧИЋ ГРАДИМИР
+ПАНЧИЋ ЈУЛИЈАНА
+ПАНЧИЋ ЈУЛИЈАНА
+ПАНЧИЋ СЛОБОДАН
+ПАНЧИЋ ЗОРАН
+ПАНЧОВАН АВРАМ
+ПАНЧУЛИДЗЕВ АЛЕКСИЈЕ
+ПАНАЈОТИДИС ЛЕОНИДАС
+ПАНАОТОВИЋ БОГДАН
+ПАНАОТОВИЋ ДУШАНКА
+ПАНАОТОВИЋ ЈОВИЦА
+ПАНАОТОВИЋ МИРЈАНА
+ПАНЦЕР БРАНКО
+ПАНЦЕР БРАНКО
+ПАНЏА БОЖИЦА
+ПАНЏА ЗВЕЗДАНА
+ПАНЏИЋ НАДА
+ПАНЏИЋ СЛОБОДАНКА
+ПАНЏИЋ СВЕТОЗАР
+ПАНЏИЋ ТОМИСЛАВ
+ПАНЏИЋ ВОЈИСЛАВ ДИПЛ ИНГ
+ПАНДИ ОСКАР
+ПАНДУРЕВИЋ МИЛАНКО
+ПАНДУРОВ ЖИВКА
+ПАНДУРОВ АЦА
+ПАНДУРОВ ДРАГОЉУБ
+ПАНДУРОВ ДУШАНКА
+ПАНДУРОВ МИЛИЦА
+ПАНДУРОВ МИЛИВОЈ
+ПАНДУРОВ МИРОСЛАВ
+ПАНДУРОВ ПЕТАР
+ПАНДУРОВ САВА
+ПАНДУРОВ ЗОРАН
+ПАНДУРОВ ЗОРАН
+ПАНДУРОВИЋ ЖИВКА
+ПАНДУРОВИЋ ИВАН
+ПАНДУРОВИЋ ЈОВАН
+ПАНДУРОВИЋ ЈУЛКА
+ПАНДУРОВИЋ ПАВЛЕ
+ПАНДУРОВИЋ РАДМИЛА
+ПАНДУРОВИЋ СРЕТЕН
+ПАНДУРОВИЋ СВЕТОЗАР
+ПАНДУРОВИЋ ТОМИСЛАВ
+ПАНДУРОВИЋ ВЛАДИСЛАВА
+ПАНДУРОВИЋ ВОЈИН
+ПАНДУРСКИ МИРОСЛАВ
+ПАНГЕРЦ МАРА
+ПАНГЕРЦ ВЕЛИБОР
+ПАНИЋ ЖАРКО
+ПАНИЋ ЖИВАН
+ПАНИЋ ЖИВОЈИН
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂОРЂЕ
+ПАНИЋ ЂУРА
+ПАНИЋ АЛЕКСАНДАР
+ПАНИЋ АНА
+ПАНИЋ АНА
+ПАНИЋ АНТУН
+ПАНИЋ БРАНИСЛАВ
+ПАНИЋ БРАНИСЛАВ
+ПАНИЋ БРАНИСЛАВ
+ПАНИЋ БРАНКО
+ПАНИЋ ДАМЈАН
+ПАНИЋ ДАНИЛКА
+ПАНИЋ ДРАГАН
+ПАНИЋ ДРАГАН
+ПАНИЋ ДРАГАН
+ПАНИЋ ДРАГАН
+ПАНИЋ ДРАГОЉУБ
+ПАНИЋ ДРАГОСЛАВ
+ПАНИЋ ДРАГОСЛАВ
+ПАНИЋ ДРЕНА
+ПАНИЋ ДУШАН
+ПАНИЋ ДУШАН
+ПАНИЋ ГОРДАНА
+ПАНИЋ ИЛИЈА
+ПАНИЋ ИЛОНА
+ПАНИЋ ЈАША
+ПАНИЋ ЈЕЛЕНА
+ПАНИЋ ЈЕЛЕНА
+ПАНИЋ ЈОВАНКА ДР
+ПАНИЋ ЈОВАНКА
+ПАНИЋ ЈОВАНКА
+ПАНИЋ ЈУЛКА
+ПАНИЋ КАИЦА
+ПАНИЋ КАТА
+ПАНИЋ КОНСТАНТИН
+ПАНИЋ ЉУБИЦА
+ПАНИЋ МАРКО
+ПАНИЋ МИЋО
+ПАНИЋ МИЦА
+ПАНИЋ МИКА
+ПАНИЋ МИЛАНА
+ПАНИЋ МИЛАН
+ПАНИЋ МИЛЕНА
+ПАНИЋ МИЛЕНКО
+ПАНИЋ МИЛЕ
+ПАНИЋ МИЛИЦА
+ПАНИЋ МИЛИЈА
+ПАНИЋ МИЛИВОЈ
+ПАНИЋ МИЛИВОЈ
+ПАНИЋ МИЛИВОЈ
+ПАНИЋ МИЛОШ
+ПАНИЋ МИЛОШ
+ПАНИЋ МИЛОШ
+ПАНИЋ МИЛОРАД
+ПАНИЋ МИЛОРАД
+ПАНИЋ МИЛОВАН
+ПАНИЋ МИРЈАНА
+ПАНИЋ МИРКО
+ПАНИЋ МИРКО
+ПАНИЋ МИРОСЛАВ
+ПАНИЋ НАДА
+ПАНИЋ НАДА
+ПАНИЋ НАДА
+ПАНИЋ НЕМАЊА
+ПАНИЋ НЕНАД
+ПАНИЋ ОБРАДИН
+ПАНИЋ ОГЊЕН
+ПАНИЋ ОЛГА
+ПАНИЋ ПЕТАР
+ПАНИЋ ПЕТАР
+ПАНИЋ ПРЕДРАГ
+ПАНИЋ РАДИВОЈЕ
+ПАНИЋ РАДОМИР
+ПАНИЋ РАДОСЛАВ
+ПАНИЋ РАНКО
+ПАНИЋ РИСТО
+ПАНИЋ САША
+ПАНИЋ САЊА
+ПАНИЋ СЛАЂАНА
+ПАНИЋ СМИЉАНКА
+ПАНИЋ СНЕЖАНА
+ПАНИЋ СРЂАН
+ПАНИЋ СРБОЉУБ
+ПАНИЋ СТАНА
+ПАНИЋ СТАНКА
+ПАНИЋ СТЕВАН
+ПАНИЋ СТЕВАН
+ПАНИЋ СТЕВАН
+ПАНИЋ СВЕТОЗАР
+ПАНИЋ ТОМИСЛАВ
+ПАНИЋ УГЉЕША
+ПАНИЋ ВАСИЉКА
+ПАНИЋ ВЛАДИМИР
+ПАНИЋ ВОЈИСЛАВ
+ПАНИЋ ЗДРАВКО
+ПАНИЋ ЗЛАТКО
+ПАНИЋ ЗОРАН
+ПАНИЋ ЗОРА
+ПАНИАН АНИЦА
+ПАНИН БОРИВОЈЕ
+ПАНИН БРАНА
+ПАНИН МИЛИЦА
+ПАНИН МИЛОШ
+ПАНИН МИТА
+ПАНИН МЛАДЕН
+ПАНИН ЗОРАН
+ПАНИНЧИЋ СОФИЈА
+ПАЊКОВИЋ БИЉАНА
+ПАЊКОВИЋ БРАНКА
+ПАЊКОВИЋ ДРАГАН
+ПАЊКОВИЋ ИЛИЈА МР
+ПАЊКОВИЋ ЈЕЛЕНА
+ПАЊКОВИЋ МЕЛАНИЈА
+ПАЊКОВИЋ МИЛАН
+ПАЊКОВИЋ МИЛАН
+ПАЊКОВИЋ МИЛАН
+ПАЊКОВИЋ МИЛИЦА
+ПАЊКОВИЋ НАДА
+ПАЊКОВИЋ НИКОЛА
+ПАЊКОВИЋ ПЕТАР
+ПАЊКОВИЋ ВЛАДИМИР
+ПАНКОВ БРАНИСЛАВ
+ПАНКОВ БРАНИСЛАВ
+ПАНКОВ БРАНКО
+ПАНКОВ ЈЕЛЕНА
+ПАНКОВ ЈЕЛИЦА
+ПАНКОВ КАТИЦА
+ПАНКОВ МАРКО
+ПАНКОВ МИЛЕНКО
+ПАНКОВ МИЛОВАН
+ПАНКОВ ПРЕДРАГ
+ПАНКОВ РАДОСЛАВ
+ПАНКОВ САВА
+ПАНКОВ СЛАВКО
+ПАНКОВ СВЕТОЗАР
+ПАНКОВ ВЕСНА
+ПАНКОВИЋ ЛАЗАР
+ПАНОВ ДЕСАНКА
+ПАНОВ НЕНАД
+ПАНОВИЋ АНЂЕЛКО
+ПАНОВИЋ МИОДРАГ
+ПАНТЕЛЕМОНОВ НЕДЕЉКО
+ПАНТЕЛЕМОНОВ НОВКА
+ПАНТЕЛИЋ ЧЕДОМИР
+ПАНТЕЛИЋ ЖАРКО
+ПАНТЕЛИЋ ЂОРЂЕ
+ПАНТЕЛИЋ ЂОРЂЕ
+ПАНТЕЛИЋ АНЂЕЛКО
+ПАНТЕЛИЋ АНА
+ПАНТЕЛИЋ БОРИВОЈЕ
+ПАНТЕЛИЋ БОРИВОЈ
+ПАНТЕЛИЋ ЦВЕТИН
+ПАНТЕЛИЋ ДАФИНА
+ПАНТЕЛИЋ ДАНИЦА
+ПАНТЕЛИЋ ДРАГАН
+ПАНТЕЛИЋ ДРАГОЉУБ
+ПАНТЕЛИЋ ДРАГОЉУБ
+ПАНТЕЛИЋ ИЛИЈА ДИПЛ ИНГ
+ПАНТЕЛИЋ ИЛИЈА
+ПАНТЕЛИЋ ЈУЛИЈАНА
+ПАНТЕЛИЋ КАМЕНКО
+ПАНТЕЛИЋ ЛАЗАР
+ПАНТЕЛИЋ ЉУБИША
+ПАНТЕЛИЋ ЉУБИЦА
+ПАНТЕЛИЋ МИХАЈЛО
+ПАНТЕЛИЋ МИЛАДИН
+ПАНТЕЛИЋ МИЛАН
+ПАНТЕЛИЋ МИЛОШ
+ПАНТЕЛИЋ МИЛОРАД
+ПАНТЕЛИЋ МИЛОВАН
+ПАНТЕЛИЋ МИОДРАГ
+ПАНТЕЛИЋ МИРОСЛАВ
+ПАНТЕЛИЋ МОМЧИЛО
+ПАНТЕЛИЋ МОМИР
+ПАНТЕЛИЋ НЕНАД
+ПАНТЕЛИЋ НЕВЕНКА
+ПАНТЕЛИЋ НИКОЛА
+ПАНТЕЛИЋ ПАЈО
+ПАНТЕЛИЋ ПАВЛЕ
+ПАНТЕЛИЋ ПЕТАР ДИПЛ ИНГ
+ПАНТЕЛИЋ ПЕТАР
+ПАНТЕЛИЋ-ПЕТРОВИЋ МАРИЈА
+ПАНТЕЛИЋ СЛАВИЦА
+ПАНТЕЛИЋ СОФИЈА
+ПАНТЕЛИЋ ВАСА
+ПАНТЕЛИЋ ВЕРА
+ПАНТЕЛИЋ ВЛАДИМИР
+ПАНТЕЛИЋ ВЛАДИСЛАВ
+ПАНТЕЛИЋ ВУЈИЦА
+ПАНТЕЛИЋ-ВУКАНОВИЋ ВУКОСАВА
+ПАНТЕЛИЋ ВУКИЦА
+ПАНТЕЛИЋ ВУКИЦА
+ПАНТЕЛИЋ ЗОРАН
+ПАНТЕЛИН ГЕОРГИЈЕ
+ПАНТЕЛИНАЦ НИКОЛА
+ПАНТЕЛИНАЦ ПАВЛЕ
+ПАНТЕЛИНАЦ СЛОБОДАН
+ПАНТИЋ ЖАРКО
+ПАНТИЋ ЖИВАН
+ПАНТИЋ ЖИВКА
+ПАНТИЋ ЖИВОЈИН
+ПАНТИЋ ЖИВОРАД
+ПАНТИЋ ЂОРЂЕ
+ПАНТИЋ ЂУРЂИНКА
+ПАНТИЋ АЛЕКСАНДАР
+ПАНТИЋ БАТА
+ПАНТИЋ БОГДАН
+ПАНТИЋ БОРИВОЈЕ
+ПАНТИЋ БОСИЉКА
+ПАНТИЋ ДОБРИВОЈ
+ПАНТИЋ ДОБРОСАВ
+ПАНТИЋ ДУШАН
+ПАНТИЋ ГИЗЕЛА
+ПАНТИЋ ГВОЗДЕН
+ПАНТИЋ ЈЕЛИЦА
+ПАНТИЋ ЉУБИЦА
+ПАНТИЋ МАРИНА
+ПАНТИЋ МИХАИЛО
+ПАНТИЋ МИЛАН
+ПАНТИЋ МИЛЕНКО
+ПАНТИЋ МИЛИВОЈЕ
+ПАНТИЋ МИЛИВОЈ
+ПАНТИЋ МИЛОРАД
+ПАНТИЋ МИЛОРАД
+ПАНТИЋ МИОДРАГ ДР ЛЕКАР
+ПАНТИЋ РАДЕНКО
+ПАНТИЋ РАДОМИР
+ПАНТИЋ РАДОМИР
+ПАНТИЋ РАДОСЛАВ
+ПАНТИЋ РОЗА
+ПАНТИЋ СЕЛИМИР
+ПАНТИЋ СЕЛИМИР
+ПАНТИЋ СВЕТОЗАР
+ПАНТИЋ ТОМИСЛАВ
+ПАНТИЋ УРОШ
+ПАНТИЋ ВЕСНА
+ПАНТИЋ ВОЈИСЛАВ ДР
+ПАНТИЋ ЗАГОРКА
+ПАНТИЋ ЗДРАВКО
+ПАНТОШ ЂУРО
+ПАНТОШ КОВИЉКА
+ПАНТОШ ПЕТАР
+ПАНТОШ ПЕТАР
+ПАНТОВИЋ ШЋЕПАН
+ПАНТОВИЋ ЖЕЉКО
+ПАНТОВИЋ АЦА
+ПАНТОВИЋ БИЉАНА
+ПАНТОВИЋ БРАНКО
+ПАНТОВИЋ ДРАГИЊА
+ПАНТОВИЋ ЉУБО
+ПАНТОВИЋ МИЛИСАВ
+ПАНТОВИЋ МИЛОВАН
+ПАНТОВИЋ МЛАДЕН
+ПАНТОВИЋ САВА
+ПАНТОВИЋ СВЕТОЛИК
+ПАНТОВИЋ ВЛАДИМИР
+ПАНЗАЛОВИЋ РАДОВАН
+ПАОЛОНИ ЂУЗЕПИНА
+ПАП ШАНДОР
+ПАП ШАНДОР
+ПАП ШАНДОР
+ПАП ШАНДОР
+ПАП ЂЕРЂ
+ПАП ЂУРО
+ПАП АНА
+ПАП ДЕЈАН
+ПАП ДРАГИЦА
+ПАП ЕДИТ
+ПАП ЕДИТ
+ПАП ЕНДРЕ ДР
+ПАП ЕНДРЕ
+ПАП ЕРЖЕБЕТ
+ПАП ЕТЕЛКА
+ПАП ФЕРЕНЦ
+ПАП ФРАЊА
+ПАП ФРАЊА
+ПАП ГАБОР
+ПАП ИШТВАН ДР
+ПАП ИШТВАН
+ПАП ИЛЕШ
+ПАП ИМРЕ
+ПАП ИМРЕ
+ПАП ИРЕНА
+ПАП ИРЕНА
+ПАП ЈАЊА
+ПАП ЈАНКО
+ПАП ЈЕЛЕНА
+ПАП ЈЕЛИСАВЕТА
+ПАП ЈОЖЕФ ДР
+ПАП ЈОСИП
+ПАП ЈОСИП
+ПАП ЈОВАН
+ПАП ЈУЛИЈАНА
+ПАП ЈУЛИЈАН
+ПАП ЈУЛИЈА
+ПАП КАТАРИНА
+ПАП ЛАСЛО
+ПАП МАРГИТА
+ПАП МИХАЈЛО
+ПАП МИХАЈЛО
+ПАП МИКЛОШ
+ПАП МИРОН
+ПАП ОЛГА
+ПАП ПАВЛЕ
+ПАП РОЗАЛИЈА
+ПАП СИЛВЕСТЕР
+ПАП ТЕРЕЗИЈА
+ПАП ТИБОР
+ПАП ВАЛЕРИЈА
+ПАП ВЕРА
+ПАП ВИНЦЕ
+ПАП ВЛАДИСЛАВ
+ПАП ЗДЕНКА
+ПАП ЗОЛТАН
+ПАПШОТ-КОЗИК ПЕПИ
+ПАПЂУРДЕС ЈОВГЕН
+ПАПАДОПОЛО ДРАГОСЛАВ
+ПАПАДОПОЛО ВЈЕКОСЛАВ
+ПАПАДОПУЛОС ЈАНИС
+ПАПАДОПУЛОС КОСТАС
+ПАПАГЕОРГИТ КОСТА
+ПАПАК ДРАГАН
+ПАПАТАНАСИУ НИЦА
+ПАПЕШ ЈОСИП
+ПАПЕШ КОСА
+ПАПЕЖ ИЛИНКА
+ПАПХАРХАЈИ ЂУРА
+ПАПХАРХАЈИ ТЕРЕЗИЈА
+ПАПХАРХАЈИ ВЛАДИМИР
+ПАПИШТА ФРАЊА
+ПАПИШТА ФРАЊА
+ПАПИШТА ИЛДИКА
+ПАПИШТА ЈОВАН
+ПАПИШТА МАРИЈА
+ПАПИШТА МАРКО
+ПАПИШТА МИХАЈЛО
+ПАПИЋ ЧЕДОМИР
+ПАПИЋ ЖИВКО
+ПАПИЋ АЛЕКСАНДАР
+ПАПИЋ АЛЕКСАНДАР
+ПАПИЋ АНА
+ПАПИЋ АРАНКА
+ПАПИЋ АРАНКА
+ПАПИЋ АРАНКА
+ПАПИЋ АРАНКА
+ПАПИЋ БОШКО
+ПАПИЋ БОЖА
+ПАПИЋ БОЖИДАР
+ПАПИЋ БРАНИСЛАВ
+ПАПИЋ БРАНКО
+ПАПИЋ БРАНКО
+ПАПИЋ ДЕСАНКА
+ПАПИЋ ДОБРИВОЈЕ
+ПАПИЋ ДУШАН
+ПАПИЋ ДУШАН
+ПАПИЋ ГОЈКО
+ПАПИЋ ИВАН
+ПАПИЋ ЈЕЛИСАВЕТА
+ПАПИЋ ЛАЗАР
+ПАПИЋ ЛЕПОСАВА
+ПАПИЋ ЉУБИЦА
+ПАПИЋ ЛОЗИНКА
+ПАПИЋ ЛУКА
+ПАПИЋ МАРИЈА
+ПАПИЋ МИХАЈЛО
+ПАПИЋ МИЛАДИН
+ПАПИЋ МИЛАДИН
+ПАПИЋ МИЛИЦА
+ПАПИЋ МИЛИВОЈ
+ПАПИЋ МИЛКА
+ПАПИЋ МИЛОШ
+ПАПИЋ МИРОСЛАВ
+ПАПИЋ МИРОСЛАВ
+ПАПИЋ НИКОЛА
+ПАПИЋ ПАВЛЕ
+ПАПИЋ РАДЕНКО
+ПАПИЋ САВА
+ПАПИЋ СМИЉА
+ПАПИЋ СРЂАН ДР
+ПАПИЋ СРЂАНКА
+ПАПИЋ СТЕВАН
+ПАПИЋ СТЕВАН
+ПАПИЋ СТЕВАН
+ПАПИЋ СВЕТИСЛАВ ДИПЛ ИНГ
+ПАПИЋ ТЕОДОР
+ПАПИЋ ТОДОР
+ПАПИЋ ВЕРА
+ПАПИЋ ЗОРИЦА
+ПАПИЋ ЗОРИЦА
+ПАПИК ВИКТОР
+ПАПИЛИОН БОРИШКА
+ПАПЛАЦКО ВЕЛИМИР
+ПАПОВИЋ ЧЕДОМИР
+ПАПОВИЋ БЛАЖО
+ПАПОВИЋ БЛАГОЈЕ
+ПАПОВИЋ КРСТО
+ПАПОВИЋ МИЛЕ
+ПАПОВИЋ МИОДРАГ
+ПАПОВИЋ МЛАДЕН
+ПАПОВИЋ ВЕСЕЛИН
+ПАПОВИЋ ВУКОСАВ
+ПАПРИЋ ЖИВАН
+ПАПРИЋ ЂОРЂЕ
+ПАПРИЋ МАРКО
+ПАПРИЋ РАЈКО
+ПАПУГА ЂУРА
+ПАПУГА ДИМИТРИЈЕ
+ПАПУГА ЕУФЕМИЈА
+ПАПУГА ИРИНА
+ПАПУГА ЈАРОСЛАВ
+ПАПУГА КИРИЛ
+ПАПУГА ЉУБОМИР
+ПАПУГА МИХАЈЛО
+ПАПУГА ТАТЈАНА
+ПАПУГА ВЕРА
+ПАПУГА ВЛАДИМИР
+ПАПУЛИН ЂЕРЂИКА
+ПАПУЛИН БОРИСЛАВ
+ПАПУЛИН ДОБРИНА
+ПАПУЛИН РАДОЈКА
+ПАРЧИЋ НАЂА ДР
+ПАРАБУЋСКИ МИЛЕНКО
+ПАРАБУЋСКИ-СИМИЋ РУЖИЦА
+ПАРАБУЋСКИ СВЕТИСЛАВ НОВИНАР
+ПАРАБУЦКИ ЛАЗАР
+ПАРАБУЦКИ ЉИЉАНА
+ПАРАГ СТЕВАН
+ПАРАНДИЛОВИЋ РОСА
+ПАРАПИД МИРЈАНА
+ПАРАВИЛ НИКОЛА
+ПАРАВИНА ЈАРМИЛА
+ПАРАВИНА МИЛОШ
+ПАРДОВИЦКИ ФЕРЕНЦ
+ПАРДОВИЦКИ ФРАЊА
+ПАРДОВИЦКИ МАРИЈА
+ПАРЕЖАНИН РАДИВОЈ
+ПАРЕЖАНИН СЛОБОДАН
+ПАРЕЖАНИН ВЛАДИСЛАВ
+ПАРХАНОВ ВИКТОРИЈА
+ПАРИЧЕВИЋ ЕВА
+ПАРИЋ СТИПЕ
+ПАРИПОВ ЈЕЛА
+ПАРИПОВ МИЛАН
+ПАРИПОВ МИЛЕНКО
+ПАРИПОВИЋ ЧЕДОМИР
+ПАРИПОВИЋ ДРАГАН
+ПАРИПОВИЋ ДУШАН
+ПАРИПОВИЋ ЈОВАН
+ПАРИПОВИЋ ЈОВО
+ПАРИПОВИЋ МИХАЈЛО
+ПАРИПОВИЋ МИЛЕНКО
+ПАРИПОВИЋ МИЛЕ
+ПАРИПОВИЋ МИЛКА
+ПАРИПОВИЋ ПАЈА
+ПАРИПОВИЋ СЛОБОДАН
+ПАРИПОВИЋ СВЕТОЗАР
+ПАРИПОВИЋ ВЛАДИМИР
+ПАРИПОВИЋ ВЛАДИСЛАВКА
+ПАРИПОВИЋ ЗОРАН
+ПАРКАЊИ САМУЕЛ
+ПАРЛАЋ ЉУБОМИР
+ПАРЛАЋ МАРИНКО
+ПАРЛАЋ МИОДРАГ
+ПАРЛИЋ АНА
+ПАРЛИЋ ЈЕВТА
+ПАРЛИЋ НИКОЛА
+ПАРМАЋ НЕДЕЉКО
+ПАРНИЦКИ ИВАН
+ПАРНИЦКИ ЈОВАН
+ПАРОШКАЈ ЂУРА
+ПАРОШКАЈ ДАНИЛО
+ПАРОШКИ ЂОРЂЕ
+ПАРОШКИ ЂОРЂЕ
+ПАРОШКИ АЛЕКСАНДАР
+ПАРОШКИ АЛЕКСАНДАР
+ПАРОШКИ АНА
+ПАРОШКИ АНКИЦА
+ПАРОШКИ БОРИВОЈ
+ПАРОШКИ БРАНИСЛАВ
+ПАРОШКИ ДАМЈАН
+ПАРОШКИ ДИМИТРИЈЕ
+ПАРОШКИ ДОБРИЛА
+ПАРОШКИ ДРАГАН
+ПАРОШКИ ДУШАН
+ПАРОШКИ ГЛИША
+ПАРОШКИ ГОРДАН
+ПАРОШКИ ИВАН
+ПАРОШКИ ЈЕЛЕНА
+ПАРОШКИ ЈЕЛИЦА
+ПАРОШКИ ЈОВАН
+ПАРОШКИ МАРИЈА
+ПАРОШКИ МИЛАН
+ПАРОШКИ МИЛАН
+ПАРОШКИ МИЛАН
+ПАРОШКИ МИЛИЦА
+ПАРОШКИ МИЛОШ
+ПАРОШКИ МИЛОРАД
+ПАРОШКИ МИЛОВАН
+ПАРОШКИ МИРА
+ПАРОШКИ МИРЈАНА
+ПАРОШКИ МИРКО
+ПАРОШКИ НЕСТОР
+ПАРОШКИ ОБРЕН
+ПАРОШКИ ОЛГА
+ПАРОШКИ ПЕТАР
+ПАРОШКИ ПУНИША
+ПАРОШКИ РАДМИЛА
+ПАРОШКИ РАЈКО
+ПАРОШКИ РОЖА
+ПАРОШКИ САВА
+ПАРОШКИ СЛАВИЦА
+ПАРОШКИ СОФИЈА
+ПАРОШКИ СТЕВАН
+ПАРОШКИ ВЕРОЉУБ
+ПАРОШКИ ВЛАДИМИР
+ПАРОШКИ ЗАГОРКА
+ПАРОЦИ ЈОСИП
+ПАРОЦИ ЈУЛИЈАНА
+ПАРОЦИ КАРЛО
+ПАРОЦИ ЉИЉАНА
+ПАРОЦИ ТИБОР
+ПАРОЦИ ТИБОР
+ПАРОЦИ ТИБОР
+ПАРОЈЧИЋ ЉУБИЦА
+ПАРОЈЧИЋ СЛОБОДАН
+ПАРОКАИ МИРКО
+ПАРОВИЋ СЛАВКО
+ПАРУЖИЋ ПАНТА
+ПАРУЦКИ МИХАЈЛО
+ПАСАРИЋ РУЖА
+ПАСКАШ МИЛАН
+ПАСКАШ МИЛКА
+ПАСКАШ НАТАША
+ПАСКАЛИ ГОРАН
+ПАСКАЉЕВИЋ АЛЕКСАНДАР
+ПАСКУ ДИМИТРИЈЕ
+ПАСКУЛОВ МИРОЉУБ
+ПАСТ РОБЕРТ
+ПАСТЕРКО СТЕВАН
+ПАСТОЊИЦКИ ЕЛЕМИР
+ПАСТОР ГЕЗА
+ПАСТОР ЈАНОШ
+ПАСТОР ЈАНОШ
+ПАСТОР ЈОСИП
+ПАСТОР ЈОСИП
+ПАСТОР ЈОЗЕФ
+ПАСТОР ЛАСЛО
+ПАСТОР МАРИЈА
+ПАСТОР МИХАЈЛО
+ПАСТОР МИЛАН
+ПАСТОР ПЕТАР
+ПАСТОР СТЈЕПАН
+ПАСТОРНАЧКИ ЂУРЂИНКА
+ПАСТОРНАЧКИ ЛАЗАР
+ПАСТОРНАЧКИ ЉУБИША
+ПАСТОРНАЧКИ МАРИЈА
+ПАСТОРНАЧКИ РАДОСЛАВ
+ПАСТОРЊИЦКИ ГОРДАНА
+ПАТАФТА ЈУЛИЈА
+ПАТАФТА СТЕВАН
+ПАТАЈ АРАНКА ДР
+ПАТАК ПАВЛЕ
+ПАТАКИ АНА
+ПАТАКИ ЕВА
+ПАТАКИ ГОРАН
+ПАТАРИЋ СТИПАН
+ПАТАРИЦА ЕЛЕМЕР
+ПАТИЋ ДРАГОМИР
+ПАТИЋ РАДОСАВ
+ПАТИЋ РАТКО
+ПАТИЋ ВЛАДИМИР
+ПАТЛЕЈХ НАДЕЖДА
+ПАТРИК ЛАЈОШ
+ПАТРИК СТЕВАН
+ПАТРНОГИЋ БРАНИСЛАВ ДИПЛ ИНГ
+ПАТРНОГИЋ ДУШАН ДР
+ПАТРНОГИЋ ДУШИЦА
+ПАТРНОГИЋ ЛИДИЈА
+ПАУШИЋ ИВАН
+ПАУШИЋ МАРКО
+ПАУКОВИЋ МИРЈАНА
+ПАУЛ КАТИЦА
+ПАУЛ ЛАЈОШ
+ПАУЛ ЛАЈОШ
+ПАУЛ ОСКАР
+ПАУЛИЋ МИЛЕ
+ПАУЛИК АЛЕКСАНДАР
+ПАУЛИК ПЕРО
+ПАУЛИК ПЕТАР
+ПАУЛОВИЋ ДРАГУТИН
+ПАУНЕСКУ ВАСА
+ПАУНИЋ ЖИВКО ДИПЛ ИНГ
+ПАУНИЋ ЂУРА
+ПАУНИЋ АЛИМПИЈЕ
+ПАУНИЋ БРАНКО
+ПАУНИЋ ДИМИТРИЈЕ
+ПАУНИЋ ДРАГОМИР
+ПАУНИЋ ИЛИЈА
+ПАУНИЋ ЛАЗАР
+ПАУНИЋ МИЛАНА
+ПАУНИЋ МИЛЕВА
+ПАУНИЋ МИЛЕ
+ПАУНИЋ СТАНИМИР
+ПАУНИЋ ТОМА
+ПАУНИЋ ВУКАШИН
+ПАУНКОВИЋ ЈОВАНА
+ПАУНКОВИЋ ЉИЉАНА
+ПАУНКОВИЋ ВЕЛИМИР
+ПАУНКОВИЋ ВЛАДИМИР
+ПАУНКУ АУРЕЛИЈА
+ПАУНОВИЋ ЧАСЛАВ
+ПАУНОВИЋ АНТО
+ПАУНОВИЋ БОГДАН
+ПАУНОВИЋ БОГДАН
+ПАУНОВИЋ БРАНКА
+ПАУНОВИЋ БРАНКО
+ПАУНОВИЋ ДИМИТРИЈЕ
+ПАУНОВИЋ ДРАГОЉУБ
+ПАУНОВИЋ ДРАГУТИН
+ПАУНОВИЋ ГОСПАВА
+ПАУНОВИЋ ЈЕЛЕНА
+ПАУНОВИЋ ЈОВАН
+ПАУНОВИЋ ЈОВИЦА
+ПАУНОВИЋ КАТИЦА
+ПАУНОВИЋ КОВИЉКА
+ПАУНОВИЋ КОВИЉКА
+ПАУНОВИЋ ЉИЉАНА
+ПАУНОВИЋ ЉУБИВОЈЕ
+ПАУНОВИЋ МАРИНА
+ПАУНОВИЋ МЕЛИНДА
+ПАУНОВИЋ МИЛИЦА
+ПАУНОВИЋ МИЛОМИР
+ПАУНОВИЋ МИЛОРАД
+ПАУНОВИЋ МИЛОРАД
+ПАУНОВИЋ МИЛОРАД
+ПАУНОВИЋ НИКОЛА
+ПАУНОВИЋ ПАУН
+ПАУНОВИЋ ПЕТАР
+ПАУНОВИЋ РАДОШ
+ПАУНОВИЋ РАДОСЛАВ
+ПАУНОВИЋ РАДОСЛАВ
+ПАУНОВИЋ РАТОМИР
+ПАУНОВИЋ СЛАВА
+ПАУНОВИЋ СЛОБОДАНКА
+ПАУНОВИЋ СРБИЦА
+ПАУНОВИЋ СТОЈАНКА
+ПАУНОВИЋ ТОМИСЛАВ
+ПАУНОВИЋ ВУКОСАВА
+ПАУНОВИЋ ЗОРАН
+ПАУНОВИЋ ЗВОНКО
+ПАУТ МИЛАН
+ПАУЗЕНБЕРГЕР ИРЕНА
+ПАУЗЕНБЕРГЕР ЈОВАН
+ПАВАИ ФРАЊА
+ПАВЕЛКА ДАНИЕЛА
+ПАВЕЛКА ВЛАДИМИР
+ПАВИЧ ДАНИЦА
+ПАВИЧЕВИЋ МИЛАН
+ПАВИЧЕВИЋ НАДА
+ПАВИЧИЋ ДРАГИЦА
+ПАВИЧИЋ ИВАН
+ПАВИЧИЋ МИРКО
+ПАВИШИЋ ЂУРА
+ПАВИЋ ЂУРО
+ПАВИЋ АНКА
+ПАВИЋ АРОН
+ПАВИЋ БИЉАНА
+ПАВИЋ ДУШАН
+ПАВИЋ ГАШО
+ПАВИЋ ГОЈКО
+ПАВИЋ ЈОЖЕФ
+ПАВИЋ ЉУБИША
+ПАВИЋ ЉУБИЦА
+ПАВИЋ ЉУБОМИР
+ПАВИЋ МАРИЈА
+ПАВИЋ МИЛАН
+ПАВИЋ МИЛАН
+ПАВИЋ МИЛИЦА
+ПАВИЋ СЛАВКО
+ПАВИЋ СТЕВАН
+ПАВИЋ-СУЛОЦКИ ЕСТЕР
+ПАВИЋ ТЕРЕЗИЈА
+ПАВИЋ ВЕНКО
+ПАВИЋ ВЕРКА
+ПАВИЋЕВИЋ АЛЕКСАНДАР
+ПАВИЋЕВИЋ АЛЕКСАНДАР
+ПАВИЋЕВИЋ АНАНИЈЕ
+ПАВИЋЕВИЋ БРАНИСЛАВ
+ПАВИЋЕВИЋ ДЕСА
+ПАВИЋЕВИЋ ДРАГАН
+ПАВИЋЕВИЋ ДУШАН
+ПАВИЋЕВИЋ ДУШАН
+ПАВИЋЕВИЋ ЈЕЛЕНА
+ПАВИЋЕВИЋ ЉИЉАНА
+ПАВИЋЕВИЋ МИЛАНКО
+ПАВИЋЕВИЋ МИЛОШ
+ПАВИЋЕВИЋ МИЛОМИР
+ПАВИЋЕВИЋ МИЛУТИН
+ПАВИЋЕВИЋ МИОДРАГ
+ПАВИЋЕВИЋ МИОДРАГ
+ПАВИЋЕВИЋ МИРА
+ПАВИЋЕВИЋ МИРКО
+ПАВИЋЕВИЋ СЛАВКО
+ПАВИЋЕВИЋ СЛОБОДАН
+ПАВИН ЉУБИЦА
+ПАВКОВ ЖИВКО
+ПАВКОВ ЖИВОЈИН
+ПАВКОВ ЂУРЂЕВКА
+ПАВКОВ ЂУРЂИНА
+ПАВКОВ АЛЕКСАНДАР
+ПАВКОВ АНКА
+ПАВКОВ БОЖИДАР
+ПАВКОВ БОСИЉКА
+ПАВКОВ БРАНКО
+ПАВКОВ ДРАГАН
+ПАВКОВ ДРАГАН
+ПАВКОВ ДУШАН
+ПАВКОВ ДУШАН
+ПАВКОВ ГОЈКО
+ПАВКОВ ГОРДАНА
+ПАВКОВ ИВАНКА
+ПАВКОВ ЈОВАН
+ПАВКОВ ЈОВАН
+ПАВКОВ ЈОВАН
+ПАВКОВ КАТИЦА
+ПАВКОВ ЛАЗАР
+ПАВКОВ МИЛАН
+ПАВКОВ МИЛАН
+ПАВКОВ МИЛАН
+ПАВКОВ МИЛИВОЈ ДИПЛ ИНГ
+ПАВКОВ МИЛОШ
+ПАВКОВ МИЛОЈЕ
+ПАВКОВ МИЛОРАД
+ПАВКОВ МИЛОРАД
+ПАВКОВ МИЛУТИН
+ПАВКОВ МИТАР
+ПАВКОВ НАДА
+ПАВКОВ НАДА
+ПАВКОВ ПАВЛЕ
+ПАВКОВ ПЕТАР
+ПАВКОВ РАДИВОЈ
+ПАВКОВ РАДОВАН
+ПАВКОВ РАТОМИР
+ПАВКОВ САВА
+ПАВКОВ САВА
+ПАВКОВ СИНИША
+ПАВКОВ СЛАВКО
+ПАВКОВ СТЕВАН
+ПАВКОВ СТЕВАН
+ПАВКОВ СТЕВАН
+ПАВКОВ УРОШ
+ПАВКОВ ВИТОМИР
+ПАВКОВ ЗОРАН
+ПАВКОВ ЗОРКА
+ПАВКОВИЋ БОЖИДАР
+ПАВКОВИЋ БОРИСЛАВ
+ПАВКОВИЋ ДРАГАНА
+ПАВКОВИЋ ДРАГИЦА
+ПАВКОВИЋ ЈОВАНКА
+ПАВКОВИЋ КАТИЦА
+ПАВКОВИЋ НИКОЛА
+ПАВКОВИЋ ПЕТАР
+ПАВКОВИЋ РАДОЈЕ
+ПАВЛЕКИЋ СТЕВАН
+ПАВЛЕСКИ МЕНКА
+ПАВЛЕВСКИ ДЕСА
+ПАВЛЕВСКИ ТРАЈАН
+ПАВЛИЧ МИРКО
+ПАВЛИЧИЋ КРЕШИМИР
+ПАВЛИЧИЋ ЉУБИША ДР
+ПАВЛИЋ ЂОРЂЕ
+ПАВЛИЋ БОРИСЛАВ
+ПАВЛИЋ БРАНКО ДИПЛ ИНГ
+ПАВЛИЋ ПЕТАР ДИПЛ ИНГ
+ПАВЛИЋ ВЛАДА
+ПАВЛИЋЕВ ЂОРЂЕ
+ПАВЛИЦА БРАНИСЛАВ
+ПАВЛИЦА ЈОВАН
+ПАВЛИЦА ЛАЗАР
+ПАВЛИЦА МАРИЦА
+ПАВЛИЦА МИЦА
+ПАВЛИЦА МИЛАН
+ПАВЛИЦА МИЛЕНА
+ПАВЛИЦА МИЛЕВА
+ПАВЛИЦА НАДА
+ПАВЛИЦА НИКОЛА
+ПАВЛИЦА НИКОЛА
+ПАВЛИЦА САВО
+ПАВЛИЦА СОФИЈА
+ПАВЛИЦА ТОДОР
+ПАВЛИЦА ВЛАДИМИР
+ПАВЛИК АНТАЛ
+ПАВЛИК ЈОСИП
+ПАВЛИК КАТАРИНА
+ПАВЛИК МИША
+ПАВЛИК ВИНКО
+ПАВЛОВ ЖАРКО
+ПАВЛОВ ЖИВАН
+ПАВЛОВ ЖИВКА
+ПАВЛОВ ЂОКА
+ПАВЛОВ АЛЕКСАНДАР
+ПАВЛОВ АЛЕКСАНДАР
+ПАВЛОВ АЛЕКСАНДАР
+ПАВЛОВ БОГДАНКА
+ПАВЛОВ БОРИСЛАВ
+ПАВЛОВ ДАНИЦА
+ПАВЛОВ ДАНИЛО
+ПАВЛОВ ДРАГИЊА
+ПАВЛОВ ДРАГОМИР
+ПАВЛОВ ДУШАНКА
+ПАВЛОВ ДУШАНКА
+ПАВЛОВ ДУШАН
+ПАВЛОВ ДУШАН
+ПАВЛОВ ЈОВАН
+ПАВЛОВ КАТИЦА
+ПАВЛОВ-КОСТИЋ АНА ДР
+ПАВЛОВ КОВИЉКА
+ПАВЛОВ КРИСТИНА
+ПАВЛОВ КУЗМАН
+ПАВЛОВ ЛАЗАР
+ПАВЛОВ ЛАЗАР
+ПАВЛОВ ЉУБИЦА
+ПАВЛОВ ЉУБИЦА
+ПАВЛОВ МАРИЈА
+ПАВЛОВ МИЛАН
+ПАВЛОВ МИЛЕТА
+ПАВЛОВ МИЛИВОЈ
+ПАВЛОВ МИЛОРАД
+ПАВЛОВ МИЛОРАД
+ПАВЛОВ МИЛОВАН
+ПАВЛОВ МИЛОВАН
+ПАВЛОВ МИЛУТИН
+ПАВЛОВ МИРА
+ПАВЛОВ-МИРКОВИЋ МИРОСЛАВА ДР
+ПАВЛОВ МИРОСЛАВ
+ПАВЛОВ МИРОСЛАВ
+ПАВЛОВ МИТКО
+ПАВЛОВ НАДА
+ПАВЛОВ НАДА
+ПАВЛОВ НАТАЛИЈА
+ПАВЛОВ НЕВЕНКА
+ПАВЛОВ ОЛГА
+ПАВЛОВ ПАЈА
+ПАВЛОВ ПАВЕЛ
+ПАВЛОВ ПАВЕЛ
+ПАВЛОВ ПАВЛЕ
+ПАВЛОВ ПЕТАР
+ПАВЛОВ ПЕТАР
+ПАВЛОВ РАДА
+ПАВЛОВ РАДИВОЈ
+ПАВЛОВ РАДМИЛА
+ПАВЛОВ РАДОСЛАВА
+ПАВЛОВ РАДОСЛАВ
+ПАВЛОВ САВА
+ПАВЛОВ САВА
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТЕВАН
+ПАВЛОВ СТОЈАН
+ПАВЛОВ СВЕТОЗАР
+ПАВЛОВ ВАСИЛИЈЕ
+ПАВЛОВ ВЕРА
+ПАВЛОВ ВЕРА
+ПАВЛОВ ВЕРИЦА
+ПАВЛОВ ВИДОСАВА
+ПАВЛОВ ВЛАДИМИР
+ПАВЛОВ ВЛАСТИМИР
+ПАВЛОВИЋ ЧЕДОМИР
+ПАВЛОВИЋ ЖАРКО
+ПАВЛОВИЋ-ЖЕНЕР ОЛГА
+ПАВЛОВИЋ ЂОРЂЕ
+ПАВЛОВИЋ ЂОРЂЕ
+ПАВЛОВИЋ ЂОРЂЕ
+ПАВЛОВИЋ ЂОРЂО
+ПАВЛОВИЋ ЂОРЂО
+ПАВЛОВИЋ АЛЕКСАНДАР ДР
+ПАВЛОВИЋ АЛЕКСАНДАР
+ПАВЛОВИЋ АЛЕКСИЈЕ
+ПАВЛОВИЋ АНА
+ПАВЛОВИЋ АНА
+ПАВЛОВИЋ АНДРИЈА
+ПАВЛОВИЋ АНИЦА
+ПАВЛОВИЋ АНКИЦА
+ПАВЛОВИЋ БЛАГОЈЕ
+ПАВЛОВИЋ БЛАГО
+ПАВЛОВИЋ БОЖИДАР
+ПАВЛОВИЋ БОЖО
+ПАВЛОВИЋ БОГДАН
+ПАВЛОВИЋ БОГОЉУБ
+ПАВЛОВИЋ БОРА
+ПАВЛОВИЋ БОРИСАВ
+ПАВЛОВИЋ БОРИСЛАВ
+ПАВЛОВИЋ БОРИСЛАВ
+ПАВЛОВИЋ БРАНКО
+ПАВЛОВИЋ БРАНКО
+ПАВЛОВИЋ ЦВЕТАН
+ПАВЛОВИЋ ДЕЈАН
+ПАВЛОВИЋ ДИМИТРИЈЕ
+ПАВЛОВИЋ ДОБРИВОЈ
+ПАВЛОВИЋ ДОБРОСЛАВ
+ПАВЛОВИЋ ДРАГАН
+ПАВЛОВИЋ ДРАГАН
+ПАВЛОВИЋ ДРАГАН
+ПАВЛОВИЋ ДРАГАН
+ПАВЛОВИЋ ДРАГОЉУБ
+ПАВЛОВИЋ ДРАГОЉУБ
+ПАВЛОВИЋ ДРАГОСЛАВА
+ПАВЛОВИЋ ДРАГОСЛАВ
+ПАВЛОВИЋ ДРАГУТИН
+ПАВЛОВИЋ ДУШАНКА
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШАН
+ПАВЛОВИЋ ДУШКО
+ПАВЛОВИЋ ЕМИЛ
+ПАВЛОВИЋ ЕРЖЕБЕТ
+ПАВЛОВИЋ ЕРЖЕБЕТ
+ПАВЛОВИЋ ГОЈКО
+ПАВЛОВИЋ ГОРИНКА
+ПАВЛОВИЋ ИЛИЈА
+ПАВЛОВИЋ ИЛИЈА
+ПАВЛОВИЋ ИЛОНА
+ПАВЛОВИЋ ИЛОНА
+ПАВЛОВИЋ ИРИНА
+ПАВЛОВИЋ ИВАН ДИПЛ ИНГ
+ПАВЛОВИЋ ИВАН
+ПАВЛОВИЋ ЈАГО
+ПАВЛОВИЋ ЈАНКО
+ПАВЛОВИЋ ЈАНКО
+ПАВЛОВИЋ ЈАНОШ
+ПАВЛОВИЋ ЈЕЛА
+ПАВЛОВИЋ ЈЕЛЕНА
+ПАВЛОВИЋ ЈЕЛЕНА
+ПАВЛОВИЋ ЈЕЛЕНА
+ПАВЛОВИЋ ЈЕЛЕНА
+ПАВЛОВИЋ ЈЕЛИЦА
+ПАВЛОВИЋ ЈОАКИМ
+ПАВЛОВИЋ ЈОВАН
+ПАВЛОВИЋ ЈОВАН
+ПАВЛОВИЋ ЈОВИЦА
+ПАВЛОВИЋ КАТАРИНА
+ПАВЛОВИЋ КАТИЦА
+ПАВЛОВИЋ КОНСТАНТИН
+ПАВЛОВИЋ КОВИНКА
+ПАВЛОВИЋ ЛАЗАР
+ПАВЛОВИЋ ЛАЗАР
+ПАВЛОВИЋ ЛАЗАР
+ПАВЛОВИЋ ЉУБИША
+ПАВЛОВИЋ МАГДА
+ПАВЛОВИЋ МАРА ДИПЛ ИНГ
+ПАВЛОВИЋ МАРА
+ПАВЛОВИЋ МАРИЦА
+ПАВЛОВИЋ МАРКО ДИПЛ ИНГ
+ПАВЛОВИЋ МАРКО
+ПАВЛОВИЋ МИЦА
+ПАВЛОВИЋ МИЛАДИН
+ПАВЛОВИЋ МИЛАН
+ПАВЛОВИЋ МИЛАН
+ПАВЛОВИЋ МИЛЕНА
+ПАВЛОВИЋ МИЛЕНКО
+ПАВЛОВИЋ МИЛЕНКО
+ПАВЛОВИЋ МИЛЕ
+ПАВЛОВИЋ МИЛЕ
+ПАВЛОВИЋ МИЛИЦА
+ПАВЛОВИЋ МИЛИЦА
+ПАВЛОВИЋ МИЛИЦА
+ПАВЛОВИЋ МИЛИСАВ
+ПАВЛОВИЋ МИЉАНА
+ПАВЛОВИЋ МИЛКА
+ПАВЛОВИЋ МИЛКА
+ПАВЛОВИЋ МИЛОЈЕ
+ПАВЛОВИЋ МИЛОЈЕ
+ПАВЛОВИЋ МИЛОМИР
+ПАВЛОВИЋ МИЛОРАД ДР
+ПАВЛОВИЋ МИЛОРАД
+ПАВЛОВИЋ МИЛОРАД
+ПАВЛОВИЋ МИЛОРАД
+ПАВЛОВИЋ МИЛОСАВА
+ПАВЛОВИЋ МИЛОСАВ
+ПАВЛОВИЋ МИЛОВАН
+ПАВЛОВИЋ МИЛОВАН
+ПАВЛОВИЋ МИОДРАГ
+ПАВЛОВИЋ МИОДРАГ
+ПАВЛОВИЋ МИОДРАГ
+ПАВЛОВИЋ МИРА
+ПАВЛОВИЋ МИРЈАНА ДР
+ПАВЛОВИЋ МИРЈАНА
+ПАВЛОВИЋ МИРЈАНА
+ПАВЛОВИЋ МИРЈАНА
+ПАВЛОВИЋ МИРКО ДИПЛ ОЕЦ
+ПАВЛОВИЋ МИРКО
+ПАВЛОВИЋ МИРКО
+ПАВЛОВИЋ МИРОСЛАВА
+ПАВЛОВИЋ МИРОСЛАВ
+ПАВЛОВИЋ МОМЧИЛО
+ПАВЛОВИЋ НАДА ДР
+ПАВЛОВИЋ НАДА
+ПАВЛОВИЋ НАДА
+ПАВЛОВИЋ НЕДЕЉКА
+ПАВЛОВИЋ НЕДЕЉКО
+ПАВЛОВИЋ НЕМАЊА
+ПАВЛОВИЋ НЕМАЊА
+ПАВЛОВИЋ НИКОЛА
+ПАВЛОВИЋ НИКОЛА
+ПАВЛОВИЋ НИКОЛИЦА
+ПАВЛОВИЋ НИНА
+ПАВЛОВИЋ НОВАК
+ПАВЛОВИЋ ОЛГА
+ПАВЛОВИЋ ОЛГА
+ПАВЛОВИЋ ОЛГА
+ПАВЛОВИЋ ОЛГА
+ПАВЛОВИЋ ПАВЛЕ
+ПАВЛОВИЋ ПАВЛЕ
+ПАВЛОВИЋ ПЕЂА
+ПАВЛОВИЋ ПЕРО
+ПАВЛОВИЋ ПЕТАР
+ПАВЛОВИЋ ПЕТАР
+ПАВЛОВИЋ ПЕТАР
+ПАВЛОВИЋ ПЛЕМЕНКА
+ПАВЛОВИЋ-ПОПОВИЋ ЗОРА ДР ЛЕКАР
+ПАВЛОВИЋ ПРЕДРАГ
+ПАВЛОВИЋ ПРЕДРАГ
+ПАВЛОВИЋ ПРВОСЛАВ
+ПАВЛОВИЋ РАДЕНКО
+ПАВЛОВИЋ РАДИВОЈ
+ПАВЛОВИЋ РАДМИЛА
+ПАВЛОВИЋ РАДМИЛО ДИПЛ ИНГ
+ПАВЛОВИЋ РАДМИЛО
+ПАВЛОВИЋ РАДОЈЕ
+ПАВЛОВИЋ РАДОЈКА
+ПАВЛОВИЋ РАДОМИР ДИПЛ ОЕЦ
+ПАВЛОВИЋ РАДОМИР
+ПАВЛОВИЋ РАДОСЛАВА
+ПАВЛОВИЋ РАДОВАН ДР ВЕТЕРИНЕ
+ПАВЛОВИЋ РАДОВАН
+ПАВЛОВИЋ РАЈКО
+ПАВЛОВИЋ РАНКО
+ПАВЛОВИЋ РАТКО
+ПАВЛОВИЋ САВА
+ПАВЛОВИЋ САВО
+ПАВЛОВИЋ СИМА
+ПАВЛОВИЋ СИМЕОН
+ПАВЛОВИЋ СИМЕОН
+ПАВЛОВИЋ СИНИША
+ПАВЛОВИЋ СЛАВИЦА
+ПАВЛОВИЋ СЛАВКО ДИПЛ ИНГ
+ПАВЛОВИЋ СЛАВКО
+ПАВЛОВИЋ СЛАВКО
+ПАВЛОВИЋ СЛАВКО
+ПАВЛОВИЋ СЛОБОДАН ДР
+ПАВЛОВИЋ СЛОБОДАН
+ПАВЛОВИЋ СЛОБОДАН
+ПАВЛОВИЋ СЛОБОДАН
+ПАВЛОВИЋ СМИЉА
+ПАВЛОВИЋ СТАНА
+ПАВЛОВИЋ СТАНИКА
+ПАВЛОВИЋ СТАНИСЛАВ
+ПАВЛОВИЋ СТЕВАНКА
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЕВАН
+ПАВЛОВИЋ СТЈЕПАН
+ПАВЛОВИЋ СТОЈАН
+ПАВЛОВИЋ СТОЈАН
+ПАВЛОВИЋ СВЕТИСЛАВ
+ПАВЛОВИЋ СВЕТОЗАР
+ПАВЛОВИЋ ТОША
+ПАВЛОВИЋ ТОМА
+ПАВЛОВИЋ ТОМИСЛАВ ДР
+ПАВЛОВИЋ ВЕЛИЗАР
+ПАВЛОВИЋ ВЕРА
+ПАВЛОВИЋ ВЕРА
+ПАВЛОВИЋ ВЕРА
+ПАВЛОВИЋ ВИДА
+ПАВЛОВИЋ ВИДОСАВА
+ПАВЛОВИЋ ВИДОСАВА
+ПАВЛОВИЋ ВИДОСЛАВ
+ПАВЛОВИЋ ВИТОМИР
+ПАВЛОВИЋ ВИТОМИР
+ПАВЛОВИЋ ВЛАДИМИР
+ПАВЛОВИЋ ВОЈИСЛАВ
+ПАВЛОВИЋ ЗАГОРКА
+ПАВЛОВИЋ ЗДРАВКО
+ПАВЛОВИЋ ЗОРАН
+ПАВЛОВИЋ ЗОРАН
+ПАВЛОВИЋ ЗОРАН
+ПАВЛОВИЋ ЗОРАН
+ПАВЛОВИЋ ЗОРА
+ПАВЛОВИЋ ЗОРИЦА
+ПАВЛОВИЋ ЗВОНИМИР
+ПАВЛОВСКИ АЛЕКСАНДАР
+ПАВЛОВСКИ МАРИЈА
+ПАВЛОВСКИ СЕРГЕЈ
+ПАВОШЕВИЋ АНКА
+ПАВОШЕВИЋ РОДОЉУБ
+ПАЗАРСКИ СТЕВАН
+ПАЗМАЊ ЈУЛИЈАНА
+ПЕЧАРИЋ КАТИЦА
+ПЕЧИ ГЕЗА
+ПЕЧИ ИШТВАН
+ПЕЧИ МАРИЈА
+ПЕЧКАИ-КОВАЧ АНА
+ПЕЧКАИ МАРГИТА
+ПЕЧВАРАЦ СТАНОЈЕ
+ПЕШЕЊАНСКИ ИВАН
+ПЕШЕЊАНСКИ ИВАН
+ПЕШЕЊАНСКИ КАРЛО
+ПЕШЕВИЋ БОГДАН
+ПЕШЕВСКИ ЂОКА
+ПЕШЕВСКИ ТОМЕ
+ПЕШЕВСКИ ВЛАДО
+ПЕШИЋ ЖИВАН
+ПЕШИЋ АЛЕКСАНДАР
+ПЕШИЋ АНЂЕЛКО
+ПЕШИЋ БУДИМИР
+ПЕШИЋ ДЕСИМИР
+ПЕШИЋ ДИМИТРИЈЕ
+ПЕШИЋ ДИМИТРИЈЕ
+ПЕШИЋ ДРАГАН
+ПЕШИЋ ДРАГИЦА
+ПЕШИЋ ДРАГОЉУБ
+ПЕШИЋ ДРАГОЉУБ
+ПЕШИЋ ГОЈКО
+ПЕШИЋ ГРАДИМИР
+ПЕШИЋ ИЛИЈА
+ПЕШИЋ ЈОРДАН
+ПЕШИЋ ЈОВАН
+ПЕШИЋ ЉУБИЦА
+ПЕШИЋ МИЛАДИН
+ПЕШИЋ МИЛАН
+ПЕШИЋ МИЛИНКО
+ПЕШИЋ МИЛУТИН
+ПЕШИЋ МИЛУТИН
+ПЕШИЋ МИРОСЛАВ
+ПЕШИЋ ПЕТАР
+ПЕШИЋ РАДМИЛА
+ПЕШИЋ РАЈКО
+ПЕШИЋ РУЖА
+ПЕШИЋ САВА
+ПЕШИЋ СТАНОЈЕ
+ПЕШИЋ СТЕВАН ДР
+ПЕШИЋ ВЛАДИМИР
+ПЕШИЋ ВУКАШИН
+ПЕШИКАН ТИХОМИР
+ПЕШИКАН ВУК
+ПЕШКА АНА
+ПЕШКАН ДРАГАН
+ПЕШКАН ВЕРА
+ПЕШКАНОВ МИЛОРАД
+ПЕШКАНОВ ПЕРСИДА
+ПЕШКАНОВ СТЕВАН
+ПЕШКАНОВ ТОДОР
+ПЕШОВИЋ МИЛИВОЈЕ
+ПЕШОВИЋ СТОЈАН
+ПЕШТАЛИЋ СЛОБОДАНКА
+ПЕШТЕРАЦ ЧЕДОМИР
+ПЕШТЕРАЦ МИЛОМИР
+ПЕШТЕРАЦ МИЛУТИН
+ПЕШТИ ЈОЖЕФ
+ПЕШУТ АЛЕКСАНДРА
+ПЕШУТ БОШКО
+ПЕШУТ БРАНКО
+ПЕШУТ ДУШАН
+ПЕШУТ ДУШАН
+ПЕШУТ ИЛИЈА
+ПЕШУТ МАРИЈА
+ПЕШУТ МИЛАН
+ПЕШУТ МИЛИЦА
+ПЕШУТ СЛАВКА
+ПЕШУТ СМИЉА
+ПЕШУТ ВЛАДИМИР
+ПЕЋАНАЦ БОСИЉКА
+ПЕЋАНАЦ ДИМИТРИЈЕ
+ПЕЋАНАЦ ЈОВАН
+ПЕЋАНАЦ НИКОЛА
+ПЕЋАНАЦ ВЕСНА
+ПЕЋАНИН ДУШАН
+ПЕЋАНИН ЉУБИША ДИПЛ ИНГ
+ПЕЋАНИН МИРОСЛАВА
+ПЕЋАНИН ОМИЉЕН
+ПЕЋАНИН-ВЕРМЕЗОВИЋ ОЉА
+ПЕЋКО ДАНИЛО
+ПЕЋКО ВЕРА
+ПЕЋО ЛАЗАР
+ПЕЋО ЛУКА
+ПЕЋО СВЕТОЗАР
+ПЕЦ ЈУЛИЈЕ
+ПЕЦАРСКИ ЛЕКСА
+ПЕЦЕ ЂОРЂЕ
+ПЕЦЕ ЂОРЂЕ
+ПЕЦЕ АЛЕКСАНДАР
+ПЕЦЕ АНТОН
+ПЕЦЕ ИЛЕШ
+ПЕЦЕ ЗОЛТАН
+ПЕЦЕЉ БОЖО
+ПЕЦЕЉ СТЕВАН
+ПЕЦИЋ АЦА
+ПЕЦИЋ КАТАРИНА
+ПЕЦИЋ МИОДРАГ
+ПЕЦИЋ СТЕВАН
+ПЕЦЊИК АНА
+ПЕЦО МИРСАД
+ПЕЦОВИЋ РАДОМИР
+ПЕДОВИЋ РАТОМИР
+ПЕИЋ-ТУКУЉАЦ ВЈЕКОСЛАВ
+ПЕЈЧИЋ БОЖИДАР
+ПЕЈЧИЋ БРАТИСЛАВ
+ПЕЈЧИЋ ДОБРИВОЈЕ
+ПЕЈЧИЋ ДОБРИВОЈ
+ПЕЈЧИЋ ДОБРОСАВ
+ПЕЈЧИЋ ДРАГОМИР
+ПЕЈЧИЋ ДУШАНКА
+ПЕЈЧИЋ ДУБРАВКА
+ПЕЈЧИЋ ГРАДИМИР
+ПЕЈЧИЋ ИЛИЈА
+ПЕЈЧИЋ ИЛИЈА
+ПЕЈЧИЋ ЈАСМИНА
+ПЕЈЧИЋ ЈОВАН
+ПЕЈЧИЋ ЈОВАН
+ПЕЈЧИЋ ЉУБИЦА
+ПЕЈЧИЋ ЉУБОМИР
+ПЕЈЧИЋ МИЛЕНКО
+ПЕЈЧИЋ МИЛЕ
+ПЕЈЧИЋ МИОДРАГ
+ПЕЈЧИЋ МИРОСЛАВ
+ПЕЈЧИЋ МИТАР
+ПЕЈЧИЋ МОМЧИЛО
+ПЕЈЧИЋ НОВАК
+ПЕЈЧИЋ ПЕТАР
+ПЕЈЧИЋ РАДОСЛАВА
+ПЕЈЧИЋ РУЖА
+ПЕЈЧИЋ САВА
+ПЕЈЧИЋ САВА
+ПЕЈЧИЋ СВЕТИСЛАВ
+ПЕЈЧИЋ ВОЈИСЛАВ
+ПЕЈЧИЋ ВОЈИСЛАВ
+ПЕЈЧИЋ ЗОРАН
+ПЕЈАК ЂОРЂЕ
+ПЕЈАК ЂУРА
+ПЕЈАК БРАНКО
+ПЕЈАК ДРАГОСЛАВА
+ПЕЈАК ЈЕЛЕНА
+ПЕЈАК ЈОВАН
+ПЕЈАК ЈОВИЦА
+ПЕЈАК ЛАЗАР
+ПЕЈАК ЉУБИЦА
+ПЕЈАК МИЛАН
+ПЕЈАК МИЛИНКА
+ПЕЈАК МИОДРАГ
+ПЕЈАК МИРЈАНА
+ПЕЈАК МОЈА
+ПЕЈАК НЕВЕНКА
+ПЕЈАК РАДОВАН
+ПЕЈАК РАЈКО
+ПЕЈАК САВА
+ПЕЈАК СЛАВКО
+ПЕЈАК ТРИВА
+ПЕЈАК ВЕРИЦА
+ПЕЈАК ВЛАДИМИР
+ПЕЈАКИЋ МАРКО
+ПЕЈАКОВИЋ ЖАРКО
+ПЕЈАКОВИЋ ЂОРЂЕ
+ПЕЈАКОВИЋ ДУШАН
+ПЕЈАКОВИЋ ИЛИЈА
+ПЕЈАКОВИЋ МИЛЕНКО
+ПЕЈАКОВИЋ НАНДОР
+ПЕЈАКОВИЋ НЕНАД
+ПЕЈАКОВИЋ ПЕРИЦА
+ПЕЈАКОВИЋ ПЕТАР
+ПЕЈАКОВИЋ ПРЕДРАГ
+ПЕЈАНОВИЋ ЂОРЂЕ
+ПЕЈАНОВИЋ АНЂЕЛКО
+ПЕЈАНОВИЋ БРАНКО
+ПЕЈАНОВИЋ ДИМИТРИЈЕ
+ПЕЈАНОВИЋ МИЛКА
+ПЕЈАНОВИЋ РАДОВАН ДР
+ПЕЈАНОВИЋ ЗОРАН
+ПЕЈИЧИЋ МИЛАН
+ПЕЈИЋ ЖИВАН
+ПЕЈИЋ АЛЕКСАНДАР
+ПЕЈИЋ АЛЕКСАНДАР
+ПЕЈИЋ АНИЦА
+ПЕЈИЋ АНТОН
+ПЕЈИЋ БОГДАНКА
+ПЕЈИЋ БОРИВОЈ
+ПЕЈИЋ БРАНИСЛАВ
+ПЕЈИЋ БРАНИСЛАВ
+ПЕЈИЋ ДРАГАН
+ПЕЈИЋ ДРАГАН
+ПЕЈИЋ ДРАГИША
+ПЕЈИЋ ДРАГИЦА
+ПЕЈИЋ ДРАГО
+ПЕЈИЋ ДРАГО
+ПЕЈИЋ ДУШАН
+ПЕЈИЋ ДУШАН
+ПЕЈИЋ ДУШАН
+ПЕЈИЋ ГАВРА
+ПЕЈИЋ ИВАН
+ПЕЈИЋ ИВАН
+ПЕЈИЋ ЈАЊА
+ПЕЈИЋ ЈОВАН
+ПЕЈИЋ ЉУБОМИР
+ПЕЈИЋ МАРА
+ПЕЈИЋ МИХАЈЛО
+ПЕЈИЋ МИЛАН
+ПЕЈИЋ МИЛАН
+ПЕЈИЋ МИЛАН
+ПЕЈИЋ МИЛЕНКО
+ПЕЈИЋ МИЛИЦА
+ПЕЈИЋ МИЛОШ
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОРАД
+ПЕЈИЋ МИЛОСАВ
+ПЕЈИЋ НЕДЕЉКО
+ПЕЈИЋ НИКОЛА
+ПЕЈИЋ НИКО
+ПЕЈИЋ НОВАК
+ПЕЈИЋ ОРЈЕН
+ПЕЈИЋ ПРЕДРАГ
+ПЕЈИЋ РАДОЈКА
+ПЕЈИЋ РАДОСАВ
+ПЕЈИЋ РАЈКО
+ПЕЈИЋ РУЖИЦА
+ПЕЈИЋ СЛОБОДАНКА
+ПЕЈИЋ СЛОБОДАН
+ПЕЈИЋ СЛОБОДАН
+ПЕЈИЋ СОФИЈА
+ПЕЈИЋ СТАНКО
+ПЕЈИЋ СТЕВАН
+ПЕЈИЋ СТИПАН
+ПЕЈИЋ ВЕРИЦА
+ПЕЈИЋ ВЛАДО
+ПЕЈИН ЂОРЂЕ
+ПЕЈИН ЂУРЂИНА
+ПЕЈИН АНЂЕЛКА
+ПЕЈИН БРАНИМИР
+ПЕЈИН БРАНИМИР
+ПЕЈИН БРАНИМИР
+ПЕЈИН ДЕЈАН
+ПЕЈИН ДИМИТРИЈЕ
+ПЕЈИН ДУШАН ДР
+ПЕЈИН ГОЈКО
+ПЕЈИН ЈЕЛЕНА
+ПЕЈИН ЈОВАН
+ПЕЈИН ЛАЗАР ДИПЛ ОЕЦ
+ПЕЈИН МАРИЈА
+ПЕЈИН МАРИТА
+ПЕЈИН МИЛИВОЈ
+ПЕЈИН МИЛОШ
+ПЕЈИН МИЛОРАД
+ПЕЈИН МИРОСЛАВ
+ПЕЈИН МЛАДЕН
+ПЕЈИН НЕНАД
+ПЕЈИН НИКОЛА
+ПЕЈИН НИКОЛА
+ПЕЈИН НИКОЛА
+ПЕЈИН НОВАК
+ПЕЈИН ПАВЛЕ
+ПЕЈИН ПЕРСИДА
+ПЕЈИН ПЛАВША
+ПЕЈИН РАДА
+ПЕЈИН РАДА
+ПЕЈИН РАДОСЛАВ
+ПЕЈИН СТЕВАН
+ПЕЈИН СТЕВАН
+ПЕЈИН ВАСА
+ПЕЈИН ВЕРИЦА
+ПЕЈИН ВУКОСАВА
+ПЕЈИНОВ БРАНИСЛАВ
+ПЕЈИНОВ ЉУБИЦА
+ПЕЈИНОВ ВЕЉКО
+ПЕЈИНОВИЋ ДРАГАН
+ПЕЈКОВИЋ АЛЕКСАНДАР
+ПЕЈКОВИЋ ДАНИЛКА
+ПЕЈКОВИЋ ИБОЉКА
+ПЕЈКОВИЋ ИВАН
+ПЕЈКОВИЋ ЈАСНА
+ПЕЈНОВИЋ БОСИЉКА
+ПЕЈНОВИЋ ЉУБИНКА
+ПЕЈНОВИЋ МИЛАН
+ПЕЈНОВИЋ МИРОСЛАВ
+ПЕЈНОВИЋ НИКОЛА
+ПЕЈНОВИЋ СТЕВАН
+ПЕЈОВИЋ ЂОКА
+ПЕЈОВИЋ ЂУКАН
+ПЕЈОВИЋ АЛЕКСАНДАР
+ПЕЈОВИЋ АЛЕКСАНДАР
+ПЕЈОВИЋ БОЖИДАР
+ПЕЈОВИЋ БОРИСЛАВ
+ПЕЈОВИЋ БОРИВОЈЕ
+ПЕЈОВИЋ БОРКА
+ПЕЈОВИЋ БОСИЉКА
+ПЕЈОВИЋ БРАНКА
+ПЕЈОВИЋ ДАНИЦА
+ПЕЈОВИЋ ДАНИЛО
+ПЕЈОВИЋ ДАВИД
+ПЕЈОВИЋ ДЕЈАН
+ПЕЈОВИЋ ДОБРИЛА
+ПЕЈОВИЋ ДРАГИЦА
+ПЕЈОВИЋ ЉУБО
+ПЕЈОВИЋ МАРКО
+ПЕЈОВИЋ МИЛАН
+ПЕЈОВИЋ МИЛЕНА
+ПЕЈОВИЋ МИЛЕНА
+ПЕЈОВИЋ МИЛИЈА
+ПЕЈОВИЋ МИЛОЈКА
+ПЕЈОВИЋ МИОДРАГ
+ПЕЈОВИЋ МИРЈАНА
+ПЕЈОВИЋ МОМИР
+ПЕЈОВИЋ НАДА
+ПЕЈОВИЋ ОЛГА
+ПЕЈОВИЋ ПАВЛЕ
+ПЕЈОВИЋ ПЕТАР
+ПЕЈОВИЋ САВА
+ПЕЈОВИЋ СЛАВКА
+ПЕЈОВИЋ СЛОБОДАНКА
+ПЕЈОВИЋ СЛОБОДАН
+ПЕЈОВИЋ ТОМИСЛАВ
+ПЕЈОВСКИ ДРАГАН
+ПЕЈОВСКИ КОЛЕ
+ПЕЈОВСКИ ТОМИСЛАВ
+ПЕКАР ДАРКО
+ПЕКАР ЈАНОШ
+ПЕКАР МИЛКА
+ПЕКАР РОЗАЛИЈА
+ПЕКАРОВИЋ ДРАГИЦА
+ПЕКАС АНТЕ
+ПЕКЕЧ МИТА
+ПЕКЕЗ БРАНКО
+ПЕКЕЗ ЈОВАН
+ПЕКЕЗ ЈОВАН
+ПЕКЕЗ МАРИЦА
+ПЕКЕЗ МИЛОРАД
+ПЕКЕЗ СТАНА
+ПЕКЕЗ ЗОРА
+ПЕКИЋ БРАНИСЛАВ ДР
+ПЕКИЋ ГОРАН
+ПЕКИЋ КРСТО
+ПЕКИЋ МИХАЈЛО
+ПЕКИЋ МИЛАН
+ПЕКИЋ МИЛАН
+ПЕКИЋ МИЛОШ
+ПЕКИЋ МИРКО
+ПЕКИЋ СТЕВАН
+ПЕКОВИЋ ЖЕЉКО
+ПЕКОВИЋ ИЛИЈА
+ПЕКОВИЋ МАГДАЛЕНА
+ПЕКОВИЋ МИЛИВОЈЕ
+ПЕКОВИЋ МИТРУША
+ПЕКОВИЋ-ПАРЛАЋ СМИЉА ДР
+ПЕКОВИЋ ПАВА
+ПЕКОВИЋ ВЕРА
+ПЕКОВИЋ ВИДА
+ПЕКОВИЋ ВУКАШИН
+ПЕКУРАР КОРНЕЛ
+ПЕКУРАР РОМАН
+ПЕЛАГИЋ НАДА
+ПЕЛАГИЋ СРЂАН
+ПЕЛЕ ФЕРЕНЦ
+ПЕЛЕ МАРИЈА
+ПЕЛЕ ЗОЛТАН
+ПЕЛЕГРИН СТЈЕПАН
+ПЕЛЕГРИН ВЛАДО
+ПЕЛЕВИЋ БРАНКО
+ПЕЛХЕ ФРАЊА ДР
+ПЕЉХА ЂУРА
+ПЕЉХА САЊА
+ПЕЉХА ЗВОНКО
+ПЕЛОЗА ДУШАН
+ПЕЛОЗА НАДА
+ПЕЛВА ЈОСИП
+ПЕЛВА ЈОВАН
+ПЕЛВА ЗОЛТАН
+ПЕЛВАИ-ЗОРИЋ ЕДИТ
+ПЕМАЦ БРАНИСЛАВ
+ПЕМАЦ ЛАЗАР
+ПЕНА МАРИНКО
+ПЕНА МИЛАН
+ПЕНА МИОДРАГ
+ПЕНА РАДИВОЈ
+ПЕНА СЛОБОДАН
+ПЕНАЦ СТАКИЦА
+ПЕНАВИН ВЕЛИМИР
+ПЕНЦ ДОБРИЛА
+ПЕНЦ ИРЕНА
+ПЕНЦА СЛАВКО
+ПЕНЏИЋ БРАНИСЛАВ
+ПЕНЏИЋ ЈЕРОСИМА
+ПЕНЕЗИЋ ДУШАН
+ПЕНЕЗИЋ НЕНАД
+ПЕНЕЗИЋ РАДОСЛАВ
+ПЕНЕЗИЋ ЗОРИЦА
+ПЕНИЋ ЧЕДОМИР
+ПЕНИЋ ЂУРЂИЦА
+ПЕНИЋ БОРИСЛАВ
+ПЕНИЋ БРАНКО
+ПЕНИЋ МИХАЈЛО
+ПЕНИЋ МИЛЕВА
+ПЕНИЋ МИЛИЦА
+ПЕНИЋ ПАВЛЕ
+ПЕНИЋ СЛАВКО
+ПЕНИЋ СТЕВАН
+ПЕНИЋ ВЛАДИМИР
+ПЕЊАШКОВИЋ ЗВОНИМИР
+ПЕЊИН ЖИВА
+ПЕЊИН СЛАВКО
+ПЕНОВ ЕМИЛ
+ПЕНОВ ЉУБИША
+ПЕНОВ МАРКО
+ПЕНЗЕШ ЂОРЂЕ
+ПЕНЗЕШ ФЕРЕНЦ
+ПЕНЗЕШ ФЕРЕНЦ
+ПЕНЗЕШ МИХАЉ
+ПЕНЗЕШ МИХАЉ
+ПЕНЗЕШ ТИБОР
+ПЕПИЋ ЛАЗО
+ПЕПИЋ МИЛАН
+ПЕПИЋ МИЛЕ
+ПЕПИЋ МИРЈАНА
+ПЕПИЋ МИРКО
+ПЕПЛИНАЦ ТОМА
+ПЕРЧИ АГНЕЗА
+ПЕРЧИЋ ДРАГАН
+ПЕРШ КСЕНИЈА
+ПЕРШАЈ МИРЈАНА
+ПЕРШИЋ ДАНИЦА
+ПЕРШИЋ ВАЛЕРИЈА
+ПЕРЂЕЂАЈ БАШКИМ
+ПЕРЂУН ЗВОНКО
+ПЕРАЋ БРАНКО
+ПЕРАЋ ЉУПКО
+ПЕРАЗИЋ САВА
+ПЕРАЗИЋ ВЛАДИМИР
+ПЕРЦ БРАНКА
+ПЕРЦ ЕЛА
+ПЕРЦ ВЛАДИМИР
+ПЕРЦЕ ЛУКА
+ПЕРДАН СТАНИСЛАВ
+ПЕРЕШ ХЕРМИНА
+ПЕРЕЖА НИКОЛА
+ПЕРЕГИ ГЕЗА
+ПЕРЕГИ ОСКАР
+ПЕРЕХИНАЦ ИВАН
+ПЕРЕНЧЕВИЋ ВАСО
+ПЕРЕПАТИЋ ПИРОШ
+ПЕРЕПАТИЋ СТЕВАН
+ПЕРЕУЛА БОГДАН
+ПЕРГАЛ МИРОСЛАВ ДР ИНГ
+ПЕРГЕ ЕСТЕР
+ПЕРГЕ МАРА
+ПЕРГЕ ВИКТОРИЈА
+ПЕРИЧЕВИЋ БРАНКО
+ПЕРИЧЕВИЋ РАЈКО
+ПЕРИЧИН ЖИВАН
+ПЕРИЧИН МИЛАНКА
+ПЕРИЧИН МИЛЕНКО
+ПЕРИЧИН РАТКО
+ПЕРИЧИН ВЛАДА
+ПЕРИША ЈАКОВ
+ПЕРИША МИРОСЛАВ
+ПЕРИШИЋ ЧЕДОМИР
+ПЕРИШИЋ ЖИВОДАРКА
+ПЕРИШИЋ ЂОРЂЕ
+ПЕРИШИЋ ЂОРЂЕ
+ПЕРИШИЋ АЛЕКСАНДАР
+ПЕРИШИЋ АНИЦА
+ПЕРИШИЋ БЛАЖО
+ПЕРИШИЋ БЛАГОЈЕ
+ПЕРИШИЋ БОБАН
+ПЕРИШИЋ БОРИСЛАВ
+ПЕРИШИЋ БРАНКО
+ПЕРИШИЋ ДАНИЦА
+ПЕРИШИЋ ДРАГОМИР
+ПЕРИШИЋ ДУШАНКА
+ПЕРИШИЋ ИРЕНА
+ПЕРИШИЋ КАТИЦА
+ПЕРИШИЋ КАТИЦА
+ПЕРИШИЋ ЛАЗАР
+ПЕРИШИЋ ЛАЗАР
+ПЕРИШИЋ ЛАЗАР
+ПЕРИШИЋ ЛАЗА
+ПЕРИШИЋ ЉУБОМИР
+ПЕРИШИЋ МАНЦИКА
+ПЕРИШИЋ МАРА
+ПЕРИШИЋ МИХАЈЛО
+ПЕРИШИЋ МИЛАН
+ПЕРИШИЋ МИЛЕНКО
+ПЕРИШИЋ МИЛИНКО
+ПЕРИШИЋ МИЉА
+ПЕРИШИЋ МИЛОВАН
+ПЕРИШИЋ МИЛОВАН
+ПЕРИШИЋ МИЛУТИН
+ПЕРИШИЋ МИОДРАГ
+ПЕРИШИЋ МИРА
+ПЕРИШИЋ НИКОЛА
+ПЕРИШИЋ РАДЕ
+ПЕРИШИЋ РАДОСЛАВА
+ПЕРИШИЋ РАДОСЛАВ
+ПЕРИШИЋ РАНКО
+ПЕРИШИЋ СТАНКО
+ПЕРИШИЋ СТЕВО
+ПЕРИШИЋ СТОЈАН
+ПЕРИШИЋ СВЕТОЗАР
+ПЕРИШИЋ ТОДОР
+ПЕРИШИЋ УГЉЕША
+ПЕРИШИЋ ВАСО
+ПЕРИШИЋ ВАСО
+ПЕРИЋ ЖАРКО
+ПЕРИЋ ЖИВКА
+ПЕРИЋ ЖИВОЈИН
+ПЕРИЋ ЂОРЂЕ
+ПЕРИЋ ЂУРИЦА
+ПЕРИЋ АЛЕКСАНДАР
+ПЕРИЋ АНА
+ПЕРИЋ БИСЕРКА
+ПЕРИЋ БОЖИДАР
+ПЕРИЋ БОЖИДАР
+ПЕРИЋ БОРИС
+ПЕРИЋ БРАНИСЛАВ
+ПЕРИЋ БРАНИСЛАВ
+ПЕРИЋ БРАНКО
+ПЕРИЋ ЦВИЈЕТИН
+ПЕРИЋ ДОБРИЛА
+ПЕРИЋ ДРАГАНА
+ПЕРИЋ ДУШАНКА
+ПЕРИЋ ДУШАН
+ПЕРИЋ ДУШАН
+ПЕРИЋ ГОЈКО ДИПЛ ИНГ
+ПЕРИЋ ГОРАН
+ПЕРИЋ ИВАН
+ПЕРИЋ ЈАНКО
+ПЕРИЋ ЈЕЛКА
+ПЕРИЋ ЈОВАНКА
+ПЕРИЋ ЈОВАН
+ПЕРИЋ КСЕНИЈА
+ПЕРИЋ ЛАЗА
+ПЕРИЋ ЉУБИША
+ПЕРИЋ ЉУБИЦА
+ПЕРИЋ ЉУБИНКА
+ПЕРИЋ ЉУБИНКО
+ПЕРИЋ ЉУБОМИР
+ПЕРИЋ МАРА
+ПЕРИЋ МАРИЈА
+ПЕРИЋ МАРИЈА
+ПЕРИЋ МАРИЈА
+ПЕРИЋ МАРИНКО
+ПЕРИЋ МАРКО
+ПЕРИЋ МИХА
+ПЕРИЋ МИЛАДИН
+ПЕРИЋ МИЛАН
+ПЕРИЋ МИЛЕНКО
+ПЕРИЋ МИЛИЦА
+ПЕРИЋ МИЛКИЦА
+ПЕРИЋ МИЛОШ
+ПЕРИЋ МИЛОШ
+ПЕРИЋ МИЛОРАД
+ПЕРИЋ МИОДРАГ
+ПЕРИЋ МИТАР
+ПЕРИЋ НАТАША
+ПЕРИЋ-НЕШИЋ ЦОКА
+ПЕРИЋ НИКОЛА
+ПЕРИЋ НИКОЛА
+ПЕРИЋ НИКОЛА
+ПЕРИЋ НИКОЛА
+ПЕРИЋ ПАВЛЕ
+ПЕРИЋ ПЕТАР
+ПЕРИЋ РАША
+ПЕРИЋ РАДЕ
+ПЕРИЋ РАДИВОЈ
+ПЕРИЋ РАДО
+ПЕРИЋ РАЈКО
+ПЕРИЋ РОДОЉУБ
+ПЕРИЋ РУЖИЦА
+ПЕРИЋ САВА
+ПЕРИЋ САВА
+ПЕРИЋ СЛАВИЦА
+ПЕРИЋ СЛАВКО
+ПЕРИЋ СЛОБОДАН
+ПЕРИЋ СЛОБОДАН
+ПЕРИЋ СМИЉА
+ПЕРИЋ СТАНКА
+ПЕРИЋ СВЕТОЗАР
+ПЕРИЋ ТОМИСЛАВ
+ПЕРИЋ ВАСА
+ПЕРИЋ ВИНКА
+ПЕРИЋ ВЛАТКО
+ПЕРИЋ ЗДЕНКА
+ПЕРИЋ ЗОРАН
+ПЕРИЋ ЗОРАН
+ПЕРИЋ ЗОРА
+ПЕРИЦА АНТЕ
+ПЕРИЦА РАДОСЛАВ
+ПЕРИН БРАНИСЛАВ
+ПЕРИН ДРАГИША
+ПЕРИН МИЛИНКО
+ПЕРИН МИЛОРАД
+ПЕРИН РАДИША
+ПЕРИН СЕКУЛА
+ПЕРИН ЗОРА
+ПЕРИНАЦ РАДОВАН
+ПЕРИНАЦ РАДОВАН
+ПЕРИНОВИЋ БРАНКО
+ПЕРИНОВИЋ НАДА
+ПЕРИНОВИЋ СЛАВИЦА
+ПЕРИНОВИЋ СЛАВКО
+ПЕРИНОВИЋ СТАНКО
+ПЕРИЗ СТЕВО
+ПЕРКОВ РАДИНКА
+ПЕРКОВАЦ МАРИЈА
+ПЕРКОВИЋ БРАНИМИР
+ПЕРКОВИЋ БРАНИСЛАВ
+ПЕРКОВИЋ ДАНИЦА
+ПЕРКОВИЋ ДРАГАН
+ПЕРКОВИЋ ГВОЗДЕН
+ПЕРКОВИЋ ЈЕЛКА
+ПЕРКОВИЋ РАДИВОЈ
+ПЕРКОВИЋ РАДОМАН МР
+ПЕРКОВИЋ СЛАВКО
+ПЕРКОВИЋ ТАДИЈА
+ПЕРКОВИЋ ТОМО
+ПЕРКОВСКИ ЂОРЂЕ
+ПЕРКОВСКИ АНЂЕЛКО
+ПЕРКУЧИН ЂОРЂЕ
+ПЕРКУЧИН ЂУЛИНКА
+ПЕРКУЧИН ДУШАН
+ПЕРКУЧИН ГОРДАНА
+ПЕРКУЧИН КАТИЦА
+ПЕРКУЧИН НИКОЛА
+ПЕРКУЧИН РАДИВОЈ ДР
+ПЕРЛАКИ ЛАЈОШ
+ПЕРЛИЋ ДРАГАН
+ПЕРЛИНАЦ СИМЕУН
+ПЕРЊАК НАТАЛИЈА
+ПЕРЊАК НИКОЛА ДИПЛ ИНГ
+ПЕРЊАКОВИЋ ДРАГОСЛАВ
+ПЕРОШЕВИЋ НОВИЦА
+ПЕРОШЕВИЋ СТАНКА
+ПЕРОСАВЉЕВИЋ ЉУБИША
+ПЕРОВАНОВИЋ АЛЕКСАНДАР
+ПЕРОВАНОВИЋ ДУШАН
+ПЕРОВАНОВИЋ ЈАГОДА
+ПЕРОВИЋ ЖАНКА
+ПЕРОВИЋ АНЂЕЛКА
+ПЕРОВИЋ БОЈАНА
+ПЕРОВИЋ БРАНКО
+ПЕРОВИЋ БРАТИМИР
+ПЕРОВИЋ ДРАГО
+ПЕРОВИЋ ГАБРИЕЛА
+ПЕРОВИЋ ИВАНКА
+ПЕРОВИЋ ЈЕЛА
+ПЕРОВИЋ ЈОВАН
+ПЕРОВИЋ КАТАРИНА
+ПЕРОВИЋ МАРКО
+ПЕРОВИЋ МИЛЕНКО ДР
+ПЕРОВИЋ МИЛОРАД
+ПЕРОВИЋ МЛАЂЕН
+ПЕРОВИЋ НАДЕЖДА
+ПЕРОВИЋ НИКОЛА
+ПЕРОВИЋ РАДАШИН
+ПЕРОВИЋ РАДИСАВ
+ПЕРОВИЋ РАДИСЛАВ
+ПЕРОВИЋ РАДИВОЈЕ
+ПЕРОВИЋ РАДИВОЈ
+ПЕРОВИЋ РАДОВАН ДИПЛ ИНГ
+ПЕРОВИЋ СВЕТОМИР
+ПЕРОВИЋ ВЕСЕЛИН
+ПЕРОВИЋ ВЛАЈКО
+ПЕРТИЋ ЗАКАРИАШ
+ПЕРТОТ ЈЕЛЕНА
+ПЕРУНИЧИЋ ДОБРИЛА
+ПЕРУНИЧИЋ МИЛОРАД
+ПЕРУНИЧИЋ РАДАН
+ПЕРУНОВИЋ ЉИЉАНА
+ПЕРУНОВИЋ ПАНТО
+ПЕРУНОВИЋ СТАНОЈЕ
+ПЕРВАЗ ЖИВКА
+ПЕРВАЗ ДРАГИЊА ДР ПРОФ
+ПЕСИРАЦ ДРАГОЉУБ
+ПЕСИРАЦ КАТАРИНА
+ПЕСИРАЦ ПЕТАР
+ПЕСИРАЦ СТЕВАН
+ПЕСЛАЋ ЈОВАН
+ПЕСТАЛИЋ ЈОСИП
+ПЕСТЕЛЕК ЉУБИША
+ПЕСТЕЛЕК ЉУБИША
+ПЕТАКОВ ЖИВКО
+ПЕТАКОВ ЈУЛКА
+ПЕТАКОВ МИЛЕНКО
+ПЕТАКОВ РАДОСЛАВ
+ПЕТАКОВ РАНКА
+ПЕТАКОВ САВА
+ПЕТАКОВИЋ ДОБРИЛА
+ПЕТАКОВИЋ ДУШАН
+ПЕТАКОВИЋ ИЛИЈА
+ПЕТАКОВИЋ ЈОВАН
+ПЕТАКОВИЋ МИЛИЦА
+ПЕТАКОВИЋ НЕМАЊА
+ПЕТАКОВИЋ РАДИВОЈ
+ПЕТАКОВИЋ РАЈКО
+ПЕТАКОВИЋ САВА
+ПЕТЕ ЂУРА
+ПЕТЕ ЂУРА
+ПЕТЕ ДУШАНКА
+ПЕТЕ ФЕРЕНЦ
+ПЕТЕ ФЕРЕНЦ
+ПЕТЕ ФРАЊА
+ПЕТЕ ИШТВАН
+ПЕТЕ ИШТВАН
+ПЕТЕ ИШТВАН
+ПЕТЕ КАРОЉ
+ПЕТЕ ПЕТАР
+ПЕТЕ СТЕПАН
+ПЕТЕ СТЕВАН
+ПЕТЕЈ РАТКО
+ПЕТЕК ДАМИР
+ПЕТЕЛИН ЕЛИЗАБЕТА
+ПЕТЕЊИ ЈОСИП ДР
+ПЕТЕЊИ СТЕВАН
+ПЕТЕР ФРАНЦИШКА
+ПЕТЕР ЈОЖЕФ
+ПЕТЕР ЈОЛАН
+ПЕТЕР ЈОВАН
+ПЕТЕР МИХАЉ
+ПЕТЕР ВИЛМОШ
+ПЕТЕРКА ЂОРЂЕ
+ПЕТЕРКА ЈЕЛЕНА
+ПЕТЕРКА ЈОСИП
+ПЕТЕРКА МАРИЈА
+ПЕТЕРКА СТЕВАН
+ПЕТЕРКА ВЛАДИСЛАВ
+ПЕТЕРЛИЋ МИЛАН
+ПЕТЕРНЕЛ ЛИДИЈА
+ПЕТИЋ МИЛАН
+ПЕТИЋ ЗОРКА
+ПЕТИЈЕВИЋ ЈОВАН МР
+ПЕТИЈЕВИЋ ЈОВАН
+ПЕТИН НИКОЛА ПРОФЕСОР
+ПЕТКАНИЋ МИЛОРАД
+ПЕТКОВ ЖАРЕ
+ПЕТКОВ ЂОРЂЕ
+ПЕТКОВ ЂУРА
+ПЕТКОВ БОРИСЛАВ
+ПЕТКОВ ИВАН
+ПЕТКОВ МИЛАН
+ПЕТКОВ НАДЕЖДА
+ПЕТКОВ САВА
+ПЕТКОВ СТЕВАН
+ПЕТКОВ СТЕВА
+ПЕТКОВИЋ ЧЕДА
+ПЕТКОВИЋ ЖАРКО
+ПЕТКОВИЋ ЖЕЉКО
+ПЕТКОВИЋ ЖИВОРАД
+ПЕТКОВИЋ ЖИВОРАД
+ПЕТКОВИЋ ЂОРЂЕ ДР
+ПЕТКОВИЋ ЂОРЂЕ
+ПЕТКОВИЋ ЂОРЂЕ
+ПЕТКОВИЋ ЂОРЂЕ
+ПЕТКОВИЋ ЂОРЂЕ
+ПЕТКОВИЋ ЂУЛА
+ПЕТКОВИЋ ЂУРАЂ
+ПЕТКОВИЋ АЛЕКСАНДАР
+ПЕТКОВИЋ АНА
+ПЕТКОВИЋ АНТУН
+ПЕТКОВИЋ БОЈАНА
+ПЕТКОВИЋ БОРИСЛАВ
+ПЕТКОВИЋ БОРКО
+ПЕТКОВИЋ БРАНКО
+ПЕТКОВИЋ БРАНКО
+ПЕТКОВИЋ БРАНКО
+ПЕТКОВИЋ БРАНКО
+ПЕТКОВИЋ ЦВЕТКО
+ПЕТКОВИЋ ДАРИНКА
+ПЕТКОВИЋ ДРАГАН
+ПЕТКОВИЋ ДРАГАН
+ПЕТКОВИЋ ДРАГИША
+ПЕТКОВИЋ ДРАГИЦА
+ПЕТКОВИЋ ДРАГОЉУБ
+ПЕТКОВИЋ ДУШАН
+ПЕТКОВИЋ ДУШАН
+ПЕТКОВИЋ ДУШАН
+ПЕТКОВИЋ ГОРДАНА
+ПЕТКОВИЋ ГВОЗДЕН
+ПЕТКОВИЋ ИШТВАН
+ПЕТКОВИЋ ИЛИЈА
+ПЕТКОВИЋ ИЛИЈА
+ПЕТКОВИЋ ИЉА
+ПЕТКОВИЋ ИРЕНА
+ПЕТКОВИЋ ЈАГОДА
+ПЕТКОВИЋ ЈОСИП
+ПЕТКОВИЋ ЈОВАН
+ПЕТКОВИЋ ЈОВО
+ПЕТКОВИЋ КАЛМАН
+ПЕТКОВИЋ КАТАРИНА
+ПЕТКОВИЋ КОСТАДИН
+ПЕТКОВИЋ КРСТА
+ПЕТКОВИЋ ЛАЗАР
+ПЕТКОВИЋ ЛАЗАР
+ПЕТКОВИЋ ЛАЗАР
+ПЕТКОВИЋ ЛАЗО
+ПЕТКОВИЋ ЉУБИНКО
+ПЕТКОВИЋ ЉУБОМИР
+ПЕТКОВИЋ МАРКО
+ПЕТКОВИЋ МИХАЈЛО
+ПЕТКОВИЋ МИЛАНА
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛАН
+ПЕТКОВИЋ МИЛИЦА
+ПЕТКОВИЋ МИЛКА
+ПЕТКОВИЋ МИЛОРАД
+ПЕТКОВИЋ МИЛОРАД
+ПЕТКОВИЋ МИЛОВАНКА
+ПЕТКОВИЋ МИЛУТИН
+ПЕТКОВИЋ МИЛУТИН
+ПЕТКОВИЋ МИЛУТИН
+ПЕТКОВИЋ МИОДРАГ
+ПЕТКОВИЋ МИОДРАГ
+ПЕТКОВИЋ МИОДРАГ
+ПЕТКОВИЋ МИОРИКА
+ПЕТКОВИЋ МИРА
+ПЕТКОВИЋ МИРЈАНА ДИПЛ ИНГ
+ПЕТКОВИЋ МИРЈАНА
+ПЕТКОВИЋ МИРКО
+ПЕТКОВИЋ МИРКО
+ПЕТКОВИЋ МИРКО
+ПЕТКОВИЋ МЛАДЕН
+ПЕТКОВИЋ МЛАДЕН
+ПЕТКОВИЋ МЛАДЕН
+ПЕТКОВИЋ НАДА
+ПЕТКОВИЋ НИКО
+ПЕТКОВИЋ ОБРАД
+ПЕТКОВИЋ ОЛИВЕРА
+ПЕТКОВИЋ ПАВЛЕ
+ПЕТКОВИЋ ПАВЛЕ
+ПЕТКОВИЋ ПАВЛЕ
+ПЕТКОВИЋ ПЕТАР
+ПЕТКОВИЋ ПЕТАР
+ПЕТКОВИЋ ПЕТАР
+ПЕТКОВИЋ ПЕТРА
+ПЕТКОВИЋ ПУНИША
+ПЕТКОВИЋ РАДЕ
+ПЕТКОВИЋ РАДИВОЈ
+ПЕТКОВИЋ РАДОВАН
+ПЕТКОВИЋ РАДОВАН
+ПЕТКОВИЋ РАТКА
+ПЕТКОВИЋ СЛАВКО
+ПЕТКОВИЋ СЛОБОДАН
+ПЕТКОВИЋ СЛОБОДАН
+ПЕТКОВИЋ СРЂАН
+ПЕТКОВИЋ СТАНА
+ПЕТКОВИЋ СТАНОЈЕ
+ПЕТКОВИЋ СТЕВАН
+ПЕТКОВИЋ СТЕВАН
+ПЕТКОВИЋ СВЕТИСЛАВ
+ПЕТКОВИЋ ТОМИСЛАВ
+ПЕТКОВИЋ ТОМИСЛАВ
+ПЕТКОВИЋ ВАСИЛИЈЕ
+ПЕТКОВИЋ ВЕРА
+ПЕТКОВИЋ ВЕРИЦА
+ПЕТКОВИЋ ВЕСЕЛИН
+ПЕТКОВИЋ ВЛАДИМИР
+ПЕТКОВИЋ ВЛАДИМИР
+ПЕТКОВИЋ ВЛАДИМИР
+ПЕТКОВИЋ ВЛАДИСЛАВ
+ПЕТКОВИЋ ВОЈИСЛАВ
+ПЕТКОВИЋ ВУКАШИН
+ПЕТКОВИЋ ВУКОСАВА
+ПЕТКОВИЋ ЗЛАТКО
+ПЕТКОВИЋ ЗЛАТОМИР
+ПЕТКОВИЋ ЗОРАН
+ПЕТКОВСКА СЛАВИЦА
+ПЕТКОВСКИ АЦА
+ПЕТКОВСКИ ГОРАН
+ПЕТКОВСКИ МИЛКА
+ПЕТКОВСКИ СТАНКО
+ПЕТЛЕК ЈОВАН
+ПЕТЉАНСКИ БРАНКО
+ПЕТЉАНСКИ ДРАГОСЛАВ
+ПЕТЉАНСКИ ИРЕНА
+ПЕТО ЈОЖЕФ
+ПЕТОШЕВИЋ МИЛЕ
+ПЕТОШЕВИЋ СЛАВКО
+ПЕТОШЕВИЋ СТЕВАН
+ПЕТОШЕВИЋ СВЕТИСЛАВ
+ПЕТОХЛЕБ ПАВИЦА
+ПЕТОЈЕВИЋ ЂОРЂЕ
+ПЕТОВИЋ ЂУРО
+ПЕТОВИЋ ГОЈКО
+ПЕТОВИЋ МИЛЕНА
+ПЕТОВИЋ СЛАВКО
+ПЕТРАШИНОВИЋ ДРАГАН
+ПЕТРАШКОВИЋ ДРАГАН
+ПЕТРАШКОВИЋ ЕМИЛИЈА
+ПЕТРАКОВИЋ-ГРАОВАЦ КОСАНА
+ПЕТРАНОВИЋ ЈОСИП
+ПЕТРАНОВИЋ МАГДА
+ПЕТРАНОВИЋ ЗВОНКО
+ПЕТРЕШ ФРАЊО
+ПЕТРЕШ РАДЕ
+ПЕТРЕЊ СТЕВАН
+ПЕТРЕВСКА ЗОРАНКА
+ПЕТРЕВСКИ БОРИС
+ПЕТРЕВСКИ ИЛОНА
+ПЕТРЕВСКИ КИРО
+ПЕТРИ МИЛЕНА
+ПЕТРИ МИРОСЛАВА
+ПЕТРИЧЕВИЋ ИВАН
+ПЕТРИЧИЋ БРАНКО
+ПЕТРИЧИЋ ДАНЕ
+ПЕТРИЧИЋ ЈОВО
+ПЕТРИЧИЋ МИЛАН
+ПЕТРИЧИЋ МИЛАН
+ПЕТРИЧИЋ СТЕВАН
+ПЕТРИЧИЋ ТАТЈАНА
+ПЕТРИЋ ЂОРЂЕ
+ПЕТРИЋ АЛЕКСАНДАР
+ПЕТРИЋ АНАСТАЗИЈА
+ПЕТРИЋ БОШКО
+ПЕТРИЋ БРАНИСЛАВА
+ПЕТРИЋ БРАНКО ДР
+ПЕТРИЋ ДАНИЛО
+ПЕТРИЋ ДЕСАНКА ДИПЛ ИНГ
+ПЕТРИЋ ДЕСИМИР
+ПЕТРИЋ ДИМИТРИЈЕ ДИПЛ ИНГ
+ПЕТРИЋ ДИМИТРИЈЕ
+ПЕТРИЋ ДИМИТРИЈЕ
+ПЕТРИЋ ДУШАНКА
+ПЕТРИЋ ДУШАН
+ПЕТРИЋ ИЛИЈА
+ПЕТРИЋ ЈОВАН
+ПЕТРИЋ ЛАЗАР МР
+ПЕТРИЋ ЉИЉАНА
+ПЕТРИЋ ЉУБИЦА
+ПЕТРИЋ МИЛАН
+ПЕТРИЋ МИЛАН
+ПЕТРИЋ МИЛЕНКО
+ПЕТРИЋ МИЛЕТА
+ПЕТРИЋ МИЛИВОЈ
+ПЕТРИЋ МИЛОРАД
+ПЕТРИЋ НАДА
+ПЕТРИЋ ОЛГА
+ПЕТРИЋ ПЕТАР
+ПЕТРИЋ ПЕТАР
+ПЕТРИЋ РАДИСАВ
+ПЕТРИЋ РАДИСАВ
+ПЕТРИЋ РАДОВАН
+ПЕТРИЋ СЛАВИЦА
+ПЕТРИЋ СЛОБОДАНКА
+ПЕТРИЋ СЛОБОДАН
+ПЕТРИЋ СОФИЈА
+ПЕТРИЋ СОФИЈА
+ПЕТРИЋ ВАСИЛИЈЕ
+ПЕТРИЋ ВУЛЕТА
+ПЕТРИК ШАНДОР
+ПЕТРИК АЛЕКСАНДАР ДИПЛ ИНГ
+ПЕТРИК ЕЛИЗАБЕТА
+ПЕТРИК ИШТВАН
+ПЕТРИК ВИНЦЕ
+ПЕТРИК ЗОЛТАН
+ПЕТРИКА ЉУБИША
+ПЕТРИКА МИОДРАГ
+ПЕТРИКОЊА КСЕНИЈА
+ПЕТРИКОЊА ЛАЗАР
+ПЕТРИН ДУШАН
+ПЕТРИН КАТИЦА
+ПЕТРИН МАЈА
+ПЕТРИН МИЛАНКА
+ПЕТРИН МИЛАНКА
+ПЕТРИН РАДМИЛА
+ПЕТРИН ВЛАДИМИР
+ПЕТРИН ВЛАДИМИР
+ПЕТРИНИЋ МИРКО
+ПЕТРИНОВИЋ МИЛИНА
+ПЕТРИНОВИЋ СТЕВА
+ПЕТРО АНТЕ
+ПЕТРО КАТАЛИН
+ПЕТРО НИКО
+ПЕТРО САЊА
+ПЕТРОНИЋ ЖИВОТА
+ПЕТРОНИЋ АЛЕКСАНДАР
+ПЕТРОНИЋ КАТАРИНА
+ПЕТРОНИЈЕВИЋ ДРАГОМИР
+ПЕТРОНИЈЕВИЋ ГОРАН
+ПЕТРОНИЈЕВИЋ ПРЕДРАГ
+ПЕТРОНИЈЕВИЋ СРЕТА
+ПЕТРОНИЈЕВИЋ ВЛАСТИМИР
+ПЕТРОЊЕ МИОДРАГ
+ПЕТРОЊЕ МИОДРАГ
+ПЕТРОВ ЖИВАНА
+ПЕТРОВ ЖИВАН
+ПЕТРОВ АНАТОЛИЈ
+ПЕТРОВ АНА
+ПЕТРОВ БОРИС
+ПЕТРОВ ДАНИЦА
+ПЕТРОВ ДУШАНКА
+ПЕТРОВ ДУШАН
+ПЕТРОВ ЕВИЦА
+ПЕТРОВ ФРАНКА
+ПЕТРОВ ИШТВАН
+ПЕТРОВ ИВАН
+ПЕТРОВ ЈАСМИНА
+ПЕТРОВ ЈЕЛЕНА
+ПЕТРОВ ЈОЖЕФ
+ПЕТРОВ ЛАЗАР
+ПЕТРОВ ЉУБОМИР
+ПЕТРОВ ЉУБОМИР
+ПЕТРОВ МАРИЈА
+ПЕТРОВ МАРИЈА
+ПЕТРОВ МАРИНКО
+ПЕТРОВ МИЛАН
+ПЕТРОВ МИЛЕНКО
+ПЕТРОВ МИЛИЦА
+ПЕТРОВ МИЛОРАД
+ПЕТРОВ МИЛОСАВА
+ПЕТРОВ МИЛОВАН
+ПЕТРОВ МИОДРАГ
+ПЕТРОВ МИОДРАГ
+ПЕТРОВ МИРОСЛАВ
+ПЕТРОВ МОМЧИЛО
+ПЕТРОВ НАДА
+ПЕТРОВ НАТАЛИЈА
+ПЕТРОВ НЕБОЈША ДР
+ПЕТРОВ ОЛГА
+ПЕТРОВ РАДМИЛА
+ПЕТРОВ САША
+ПЕТРОВ САВА
+ПЕТРОВ САВА
+ПЕТРОВ САВА
+ПЕТРОВ СЕРГИЈЕ
+ПЕТРОВ СЛАВКА
+ПЕТРОВ СЛАВКО
+ПЕТРОВ СЛОБОДАН
+ПЕТРОВ СРБИВОЈ
+ПЕТРОВ СТЕВАН
+ПЕТРОВ СВЕТОЗАР
+ПЕТРОВ ТОМИСЛАВ
+ПЕТРОВ ВАСО
+ПЕТРОВ ВЕЛИЗАР
+ПЕТРОВ ВЛАДИМИР
+ПЕТРОВ ВОЈИСЛАВ
+ПЕТРОВ ВОЈИСЛАВ
+ПЕТРОВ ЗЛАТОМИР
+ПЕТРОВЧАН-ШПАНОВИЋ ЕУФЕМИЈА
+ПЕТРОВАЧКИ ДУШАН
+ПЕТРОВАЧКИ ЈОВАН
+ПЕТРОВАЧКИ ЉИЉАНА
+ПЕТРОВАЧКИ ВЕРА
+ПЕТРОВИЋ ЧЕДА
+ПЕТРОВИЋ ШТЕФАН
+ПЕТРОВИЋ ЖАРКО
+ПЕТРОВИЋ ЖАРКО
+ПЕТРОВИЋ ЖАРКО
+ПЕТРОВИЋ ЖАРКО
+ПЕТРОВИЋ ЖЕЉКО
+ПЕТРОВИЋ ЖЕЉКО
+ПЕТРОВИЋ ЖИКА
+ПЕТРОВИЋ ЖИВАН
+ПЕТРОВИЋ ЖИВКА
+ПЕТРОВИЋ ЖИВКА
+ПЕТРОВИЋ ЖИВКО
+ПЕТРОВИЋ ЖИВКО
+ПЕТРОВИЋ ЖИВОЈИН
+ПЕТРОВИЋ ЖИВОРАД
+ПЕТРОВИЋ ЖИВОТА
+ПЕТРОВИЋ ЂОКИЦА
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂОРЂЕ
+ПЕТРОВИЋ ЂУРА
+ПЕТРОВИЋ АЛЕКСАНДАР
+ПЕТРОВИЋ АЛЕКСАНДАР
+ПЕТРОВИЋ АЛЕКСАНДАР
+ПЕТРОВИЋ АЛЕКСАНДАР
+ПЕТРОВИЋ АЛЕКСАНДРА
+ПЕТРОВИЋ АЛЕКСАНДРА
+ПЕТРОВИЋ АЛИНКА
+ПЕТРОВИЋ АНЂЕЛКА
+ПЕТРОВИЋ АНА
+ПЕТРОВИЋ АНГЕЛИНА
+ПЕТРОВИЋ АНИЦА
+ПЕТРОВИЋ АНКА
+ПЕТРОВИЋ АНКА
+ПЕТРОВИЋ-БАЛИЖ ЉИЉАНА
+ПЕТРОВИЋ БИЉАНА
+ПЕТРОВИЋ БОШКО
+ПЕТРОВИЋ БОЖИДАР
+ПЕТРОВИЋ БОГДАН
+ПЕТРОВИЋ БОГДАН
+ПЕТРОВИЋ БОЈАНА
+ПЕТРОВИЋ БОСИЉКА
+ПЕТРОВИЋ БОСИЉКА
+ПЕТРОВИЋ БРАНИМИР
+ПЕТРОВИЋ БРАНИСЛАВА
+ПЕТРОВИЋ БРАНИСЛАВА
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНИСЛАВ
+ПЕТРОВИЋ БРАНКА
+ПЕТРОВИЋ БРАНКО
+ПЕТРОВИЋ БРАНКО
+ПЕТРОВИЋ БРАНКО
+ПЕТРОВИЋ БРАНКО
+ПЕТРОВИЋ ЦВИКО
+ПЕТРОВИЋ ДАМИР
+ПЕТРОВИЋ ДАМИР
+ПЕТРОВИЋ ДАНИЦА
+ПЕТРОВИЋ ДАНИЦА
+ПЕТРОВИЋ ДАНИЦА
+ПЕТРОВИЋ ДАРА
+ПЕТРОВИЋ ДАРИНКА
+ПЕТРОВИЋ ДАРИНКА
+ПЕТРОВИЋ ДЕЈАН
+ПЕТРОВИЋ ДЕСАНКА
+ПЕТРОВИЋ ДЕСИМИР
+ПЕТРОВИЋ ДИМИТРИЈЕ
+ПЕТРОВИЋ ДОБРИЦА
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГАН
+ПЕТРОВИЋ ДРАГИША ДИПЛ ПРАВНИК
+ПЕТРОВИЋ ДРАГИША
+ПЕТРОВИЋ ДРАГИЋ
+ПЕТРОВИЋ ДРАГИЊА
+ПЕТРОВИЋ ДРАГОЉУБ ДР
+ПЕТРОВИЋ ДРАГОЉУБ
+ПЕТРОВИЋ ДРАГОЉУБ
+ПЕТРОВИЋ ДРАГОМИР
+ПЕТРОВИЋ ДРАГОСЛАВ
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШАН
+ПЕТРОВИЋ ДУШИЦА
+ПЕТРОВИЋ ДУШКО
+ПЕТРОВИЋ ЕВА
+ПЕТРОВИЋ ЕВГЕНИЈЕ
+ПЕТРОВИЋ ЕВИЦА
+ПЕТРОВИЋ ФАБИЈАН
+ПЕТРОВИЋ ГАВРИЛО
+ПЕТРОВИЋ ГОРДАНА
+ПЕТРОВИЋ ГОРДАНА
+ПЕТРОВИЋ ГРАДИМИР
+ПЕТРОВИЋ ГРАДИМИР
+ПЕТРОВИЋ ХРИСТИНА
+ПЕТРОВИЋ ИЛИЈА
+ПЕТРОВИЋ ИЛИЈА
+ПЕТРОВИЋ ИЛИЈА
+ПЕТРОВИЋ ИЛОНА
+ПЕТРОВИЋ ИСАК
+ПЕТРОВИЋ ИВАНКА
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ИВАН
+ПЕТРОВИЋ ЈАНКО
+ПЕТРОВИЋ ЈАСМИНКА
+ПЕТРОВИЋ ЈЕЛЕНА
+ПЕТРОВИЋ ЈЕЛИЦА
+ПЕТРОВИЋ ЈЕЛИСАВЕТА
+ПЕТРОВИЋ ЈЕВРЕМ
+ПЕТРОВИЋ ЈОЖЕФ
+ПЕТРОВИЋ ЈОВАНКА
+ПЕТРОВИЋ ЈОВАНКА
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ ЈОВАН
+ПЕТРОВИЋ КАТИЦА
+ПЕТРОВИЋ КАТИЦА
+ПЕТРОВИЋ КАТИЦА
+ПЕТРОВИЋ КАТИЦА
+ПЕТРОВИЋ КОСТА ДР
+ПЕТРОВИЋ КРСТО
+ПЕТРОВИЋ ЛАЗАР
+ПЕТРОВИЋ ЛАЗАР
+ПЕТРОВИЋ ЛЕНКА
+ПЕТРОВИЋ ЛИДА
+ПЕТРОВИЋ ЉИЉАНА
+ПЕТРОВИЋ ЉИЉАНА
+ПЕТРОВИЋ ЉИЉАНА
+ПЕТРОВИЋ ЉИЉАНА
+ПЕТРОВИЋ ЉУБИША
+ПЕТРОВИЋ ЉУБИЦА
+ПЕТРОВИЋ ЉУБИЦА
+ПЕТРОВИЋ ЉУБИЦА
+ПЕТРОВИЋ ЉУБИНКА
+ПЕТРОВИЋ ЉУБИСАВ
+ПЕТРОВИЋ ЉУБОМИР
+ПЕТРОВИЋ ЉУБОМИР
+ПЕТРОВИЋ МАРА
+ПЕТРОВИЋ МАРИЦА
+ПЕТРОВИЋ МАРИЈА
+ПЕТРОВИЋ МАРИЈА
+ПЕТРОВИЋ МАРИКА
+ПЕТРОВИЋ МАРКО
+ПЕТРОВИЋ МАРКО
+ПЕТРОВИЋ МАРКО
+ПЕТРОВИЋ МАРКО
+ПЕТРОВИЋ МИАЈЛО
+ПЕТРОВИЋ МИЦА
+ПЕТРОВИЋ МИХАИЛО
+ПЕТРОВИЋ МИХАИЛО
+ПЕТРОВИЋ МИХАЈЛО ДР ВЕТЕРИНЕ
+ПЕТРОВИЋ МИЈОМИР
+ПЕТРОВИЋ МИЛАДИН
+ПЕТРОВИЋ МИЛАНКА
+ПЕТРОВИЋ МИЛАНКО
+ПЕТРОВИЋ МИЛАНКО
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛАН
+ПЕТРОВИЋ МИЛЕНА
+ПЕТРОВИЋ МИЛЕНКО
+ПЕТРОВИЋ МИЛЕНКО
+ПЕТРОВИЋ МИЛЕНКО
+ПЕТРОВИЋ МИЛЕН
+ПЕТРОВИЋ МИЛЕВА
+ПЕТРОВИЋ МИЛЕ
+ПЕТРОВИЋ МИЛИЋ
+ПЕТРОВИЋ МИЛИЦА
+ПЕТРОВИЋ МИЛИЦА
+ПЕТРОВИЋ МИЛИЦА
+ПЕТРОВИЋ МИЛИВОЈ
+ПЕТРОВИЋ МИЛОШ ДР
+ПЕТРОВИЋ МИЛОШ ДР
+ПЕТРОВИЋ МИЛОШ
+ПЕТРОВИЋ МИЛОЈЕ
+ПЕТРОВИЋ МИЛОЈКО
+ПЕТРОВИЋ МИЛОЉУБ
+ПЕТРОВИЋ МИЛОРАД
+ПЕТРОВИЋ МИЛОРАД
+ПЕТРОВИЋ МИЛОВАН
+ПЕТРОВИЋ МИЛОВАН
+ПЕТРОВИЋ МИЛОВАН
+ПЕТРОВИЋ МИЛУН
+ПЕТРОВИЋ МИЛУН
+ПЕТРОВИЋ МИЛУТИН
+ПЕТРОВИЋ МИЛУТИН
+ПЕТРОВИЋ МИЛУТИН
+ПЕТРОВИЋ МИОДРАГ
+ПЕТРОВИЋ МИОДРАГ
+ПЕТРОВИЋ МИОДРАГ
+ПЕТРОВИЋ МИОЉУБ
+ПЕТРОВИЋ МИОМИР
+ПЕТРОВИЋ МИРЧЕА
+ПЕТРОВИЋ МИРЈАНА
+ПЕТРОВИЋ МИРЈАНА
+ПЕТРОВИЋ МИРКО
+ПЕТРОВИЋ МИРОСЛАВ ДР ЛЕКАР
+ПЕТРОВИЋ МИРОСЛАВА
+ПЕТРОВИЋ МИРОСЛАВКА
+ПЕТРОВИЋ МИРОСЛАВ
+ПЕТРОВИЋ МИРОСЛАВ
+ПЕТРОВИЋ МЛАЂЕН
+ПЕТРОВИЋ МЛАДЕН
+ПЕТРОВИЋ МЛАДЕН
+ПЕТРОВИЋ МОМЧИЛО
+ПЕТРОВИЋ МОМЧИЛО
+ПЕТРОВИЋ МОМЧИЛО
+ПЕТРОВИЋ МОМЧИЛО
+ПЕТРОВИЋ НАДА
+ПЕТРОВИЋ НАДА
+ПЕТРОВИЋ НАДА
+ПЕТРОВИЋ НАДИРА
+ПЕТРОВИЋ НАТАЛИЈА
+ПЕТРОВИЋ НЕНАД
+ПЕТРОВИЋ НЕВЕНА
+ПЕТРОВИЋ НЕВЕНКА ДР
+ПЕТРОВИЋ НИКОЛА
+ПЕТРОВИЋ НИКОЛА
+ПЕТРОВИЋ НОВАК
+ПЕТРОВИЋ НОВИЦА
+ПЕТРОВИЋ ОБРАД
+ПЕТРОВИЋ ОЛГА
+ПЕТРОВИЋ ОЛГИЦА
+ПЕТРОВИЋ ОЛИВЕРА
+ПЕТРОВИЋ ПАЈА
+ПЕТРОВИЋ ПАНТЕЛИЈА
+ПЕТРОВИЋ ПЕРСИДА
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТАР
+ПЕТРОВИЋ ПЕТРИЈА
+ПЕТРОВИЋ ПЛАМЕНКА
+ПЕТРОВИЋ-ПОПАДИЋ МИЛАН
+ПЕТРОВИЋ ПРЕДРАГ
+ПЕТРОВИЋ ПРВОСЛАВ
+ПЕТРОВИЋ РАДА
+ПЕТРОВИЋ РАДЕ
+ПЕТРОВИЋ РАДИША ДИПЛ ИНГ
+ПЕТРОВИЋ РАДИША
+ПЕТРОВИЋ РАДИША
+ПЕТРОВИЋ РАДИВОЈЕ
+ПЕТРОВИЋ РАДИВОЈ
+ПЕТРОВИЋ РАДИВОЈ
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДМИЛА
+ПЕТРОВИЋ РАДОЈКА
+ПЕТРОВИЋ РАДОМИР
+ПЕТРОВИЋ РАДОМИР
+ПЕТРОВИЋ РАДОМИР
+ПЕТРОВИЋ РАДОМИР
+ПЕТРОВИЋ РАДОСАВ
+ПЕТРОВИЋ РАДОСЛАВ
+ПЕТРОВИЋ РАДОСЛАВ
+ПЕТРОВИЋ РАЈКО
+ПЕТРОВИЋ РАЈКО
+ПЕТРОВИЋ РАНКО
+ПЕТРОВИЋ РАНКО
+ПЕТРОВИЋ РАТКО
+ПЕТРОВИЋ РАТКО
+ПЕТРОВИЋ РАТОМИР
+ПЕТРОВИЋ РИСТО
+ПЕТРОВИЋ РОДОЉУБ
+ПЕТРОВИЋ РОСА
+ПЕТРОВИЋ РУЖА
+ПЕТРОВИЋ РУЖИЦА
+ПЕТРОВИЋ РУЗМАРИНКА
+ПЕТРОВИЋ САВАН
+ПЕТРОВИЋ САВА
+ПЕТРОВИЋ САВА
+ПЕТРОВИЋ САВА
+ПЕТРОВИЋ СИМА
+ПЕТРОВИЋ СИМЕУН
+ПЕТРОВИЋ СИМО
+ПЕТРОВИЋ СИНИША
+ПЕТРОВИЋ СЛАВИЦА
+ПЕТРОВИЋ СЛАВКА
+ПЕТРОВИЋ СЛАВКА
+ПЕТРОВИЋ СЛАВКО
+ПЕТРОВИЋ СЛАВКО
+ПЕТРОВИЋ СЛОБОДАН ДИПЛ ИНГ
+ПЕТРОВИЋ СЛОБОДАН ДИПЛ ИНГ
+ПЕТРОВИЋ СЛОБОДАН ДР
+ПЕТРОВИЋ СЛОБОДАНКА
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СЛОБОДАН
+ПЕТРОВИЋ СМИЉА
+ПЕТРОВИЋ СНЕЖАНА
+ПЕТРОВИЋ СОФИЈА
+ПЕТРОВИЋ СПАСЕ
+ПЕТРОВИЋ СПАСОЈЕ
+ПЕТРОВИЋ СПОМЕНКА
+ПЕТРОВИЋ СРЂАН
+ПЕТРОВИЋ СТАМЕНКО
+ПЕТРОВИЋ СТАНИША
+ПЕТРОВИЋ СТАНИСЛАВ
+ПЕТРОВИЋ СТЕВАН ДИПЛ ИНГ
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТЕВАН
+ПЕТРОВИЋ СТОЈАДИН
+ПЕТРОВИЋ СТОЈАН
+ПЕТРОВИЋ СТОЈАН
+ПЕТРОВИЋ СТОЈКА
+ПЕТРОВИЋ СУЗАНА ДР
+ПЕТРОВИЋ СУЗАНА
+ПЕТРОВИЋ СВЕТИСЛАВ
+ПЕТРОВИЋ СВЕТКО
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ СВЕТОЗАР
+ПЕТРОВИЋ ТАТЈАНА
+ПЕТРОВИЋ ТИБОР
+ПЕТРОВИЋ ТИНКА
+ПЕТРОВИЋ ТОДОРКА
+ПЕТРОВИЋ ТОМИСЛАВ
+ПЕТРОВИЋ УРОШ
+ПЕТРОВИЋ УРОШ
+ПЕТРОВИЋ ВАСА
+ПЕТРОВИЋ ВАСИЛИЈЕ
+ПЕТРОВИЋ ВЕЛИБОР
+ПЕТРОВИЋ ВЕЛИБОР
+ПЕТРОВИЋ ВЕЛИБОР
+ПЕТРОВИЋ ВЕЛИМИР
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРА
+ПЕТРОВИЋ ВЕРИЦА
+ПЕТРОВИЋ ВЕСЕЛА
+ПЕТРОВИЋ ВЕСЕЛИН
+ПЕТРОВИЋ ВЕСНА
+ПЕТРОВИЋ ВИШЊА
+ПЕТРОВИЋ ВИДА
+ПЕТРОВИЋ ВЛАДА
+ПЕТРОВИЋ ВЛАДЕ
+ПЕТРОВИЋ ВЛАДИМИР
+ПЕТРОВИЋ ВЛАДИМИР
+ПЕТРОВИЋ ВЛАДИСЛАВА
+ПЕТРОВИЋ ВЛАСТИМИР
+ПЕТРОВИЋ ВОЈИН
+ПЕТРОВИЋ ВОЈИН
+ПЕТРОВИЋ ВОЈИСЛАВ
+ПЕТРОВИЋ ВОЈИСЛАВ
+ПЕТРОВИЋ ВОЈИСЛАВ
+ПЕТРОВИЋ ВОЈКА
+ПЕТРОВИЋ ВУКАШИН
+ПЕТРОВИЋ ВУКИЦА
+ПЕТРОВИЋ ЗАГОРКА
+ПЕТРОВИЋ ЗАГОРКА
+ПЕТРОВИЋ ЗАГОРКА
+ПЕТРОВИЋ ЗДЕНКО
+ПЕТРОВИЋ ЗДЕНКО
+ПЕТРОВИЋ ЗЛАТАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРАН
+ПЕТРОВИЋ ЗОРА
+ПЕТРОВИЋ ЗОРА
+ПЕТРОВИЋ ЗОРИЦА
+ПЕТРОВИЋ ЗОРИЦА
+ПЕТРОВИЋ ЗОРИЦА
+ПЕТРОВИЋ ЗОРКА
+ПЕТРОВСКИ БОРИС
+ПЕТРОВСКИ ДИМИТРИЈЕ
+ПЕТРОВСКИ ЕВА
+ПЕТРОВСКИ ФИДАНЧО
+ПЕТРОВСКИ ХЕЛЕНА
+ПЕТРОВСКИ МИЛАДИН
+ПЕТРОВСКИ МИЛАН
+ПЕТРОВСКИ МИЛОДАРКА
+ПЕТРОВСКИ ПЕТАР
+ПЕТРОВСКИ СЛАВКА
+ПЕТРУШЕВИЋ МОМЧИЛО
+ПЕТРУШЕВСКИ МОМЧИЛО
+ПЕТРУШЕВСКИ НАДА
+ПЕТРУШИЋ-ПАРИПОВИЋ ОЛГА
+ПЕТРУШИЋ ВАСИЉ
+ПЕТРУЉЕСКОВ ДРАГАН
+ПЕТРУЉЕСКОВ ДРАГАН
+ПЕУЛИЋ ЉУБОМИР
+ПЕУЛИЋ МИРЈАНА
+ПЕУЉА ВОЈИН
+ПЕУРАЧА ДРАГАН
+ПЕУРАЧА МИЛЕ
+ПЕВАЧ СТЈЕПАН
+ПЕВИЋ ЕРЖЕБЕТ
+ПЕЗДЕВШЕК ЈАНЕЗ
+ПЕЗДЕВШЕК КАРЛ
+ПЕЗЕРОВИЋ ВЕЛИМИР
+ПФАЈФЕР АЛЕКСАНДАР
+ПФАЈФЕР АТИЛА
+ПФАЈФЕР ПЕТАР
+ПФАЈФЕРТ АЛЕКСАНДАР
+ПФАУ ЈОВАНКА
+ПФУНШТАЈН ЈОСИП
+ПИШКОРИЋ ИВАН
+ПИШПЕК МАРТА
+ПИШТАЛОВИЋ МИХАЈЛО
+ПИШТАЛОВИЋ МИРКО
+ПИЋУРИЋ ЖИВКО
+ПИЋУРИЋ МИКО
+ПИЖУРИЦА МАТО
+ПИГЛ АНА
+ПИГЛ ИМРЕ
+ПИХАЈЛИЋ БЛАЖ
+ПИХЛЕР ЈОСИП
+ПИХЛЕР СТАНКО ДР
+ПИХЛЕР ТОДОР
+ПИЈАНИЋ ДАНИЈЕЛ
+ПИЈЕТЛОВИЋ БРАНО
+ПИЈЕТЛОВИЋ ЈОВАН
+ПИЈУКОВИЋ ЕЛЗА
+ПИЈУКОВИЋ ИЛИЈА
+ПИКСИАДЕС ОНДРЕЈ
+ПИКСИЈАДЕС АНА
+ПИКСИЈАДЕС ПАВЕЛ
+ПИКСИЈАДЕС ПАВЛЕ
+ПИКУЛА ЂОРЂЕ
+ПИКУЛА БРАНКО
+ПИЛ АНДРИЈА
+ПИЛ МИХАЈЛО
+ПИЛ СТЕВАН
+ПИЛ ТЕРЕЗА
+ПИЛАР МАРИЦА
+ПИЛЦ НАНДОР
+ПИЛЦ РЕЖЕ
+ПИЛЦ ЗОЛТАН
+ПИЛЕР КАРЛО
+ПИЛИШ АНА
+ПИЛИШ АНДРАШ
+ПИЛИШ ЈОСИП
+ПИЛИШЕР ЂОРЂЕ
+ПИЛИЋ ЖАРКО
+ПИЛИЋ АНТОН
+ПИЛИЋ БОРИВОЈ
+ПИЛИЋ БОРО
+ПИЛИЋ ГАВРА
+ПИЛИЋ ЈОВАН
+ПИЛИЋ-КАЛЕНИЋ МИЛИНКА
+ПИЛИЋ ЉИЉА
+ПИЛИЋ МИЛОШ
+ПИЛИЋ МИЛУТИН
+ПИЛИЋ РАНКО
+ПИЛИЋ СЛАВКО
+ПИЛИЋ СРБОЉУБ
+ПИЛИЋ СТАНКО
+ПИЛИЋ СТЕВАН
+ПИЛИЋ ВОЈИСЛАВ
+ПИЛИПОВ ЕВА
+ПИЛИПОВИЋ ЧЕДА
+ПИЛИПОВИЋ ЖИВКО
+ПИЛИПОВИЋ ЂОРЂЕ
+ПИЛИПОВИЋ ЂУРА
+ПИЛИПОВИЋ АНЂА
+ПИЛИПОВИЋ БОШКО
+ПИЛИПОВИЋ БОЖИДАР
+ПИЛИПОВИЋ БРАНКО
+ПИЛИПОВИЋ ЦВИЈЕТА
+ПИЛИПОВИЋ ЦВИЈЕТА
+ПИЛИПОВИЋ ДАНЕ
+ПИЛИПОВИЋ ДАНИЦА
+ПИЛИПОВИЋ ДАНИЦА
+ПИЛИПОВИЋ ДРАГАН
+ПИЛИПОВИЋ ДРАГО
+ПИЛИПОВИЋ ГОРАН
+ПИЛИПОВИЋ ЈОЛАН
+ПИЛИПОВИЋ ЈОВАН
+ПИЛИПОВИЋ ЛАЗАР
+ПИЛИПОВИЋ ЉИЉАНА
+ПИЛИПОВИЋ ЉУБИЦА
+ПИЛИПОВИЋ ЉУБО
+ПИЛИПОВИЋ МАРИЈА
+ПИЛИПОВИЋ МИХАЈЛО
+ПИЛИПОВИЋ МИХАЈЛО
+ПИЛИПОВИЋ МИЛАН
+ПИЛИПОВИЋ МИЛАН
+ПИЛИПОВИЋ МИЛАН
+ПИЛИПОВИЋ МИЛЕНКО
+ПИЛИПОВИЋ МИЛЕВА
+ПИЛИПОВИЋ МИЛОШ
+ПИЛИПОВИЋ МИРКО
+ПИЛИПОВИЋ НИКОЛА
+ПИЛИПОВИЋ ПЕТАР ДИПЛ ИНГ
+ПИЛИПОВИЋ РАДЕ
+ПИЛИПОВИЋ РАДЕ
+ПИЛИПОВИЋ РАДИВОЈЕ
+ПИЛИПОВИЋ РАДОМИР
+ПИЛИПОВИЋ СЛАВКО
+ПИЛИПОВИЋ СПОМЕНКО
+ПИЛИПОВИЋ СТАНА
+ПИЛИПОВИЋ СТЕВАН
+ПИЛИПОВИЋ СТЕВАН
+ПИЛИПОВИЋ СТЕВО
+ПИЛИПОВИЋ ВОЈИН
+ПИЛИПОВИЋ ЗОРИЦА
+ПИЛИПОВИЋ ЗВОНКО
+ПИЉИЋ МАРИЈАН
+ПИЛКО ИРЕНА
+ПИЛКО ПАВЛЕ
+ПИЛОВИЋ ДЕСИМИР
+ПИЛОВИЋ ДУШАНКА
+ПИЛОВИЋ МИЛАН
+ПИНЋИР ЈАН
+ПИНЋИР ВЛАДИМИР
+ПИНЋИР ЗДЕНКО
+ПИНЋЈЕР ОНДРЕЈ
+ПИНЋЈЕР САМУЕЛ
+ПИНЋЈЕР САМУИЛО
+ПИЊУШИЋ ИЛИЈА
+ПИЊУХ МИРЈАНА
+ПИЊУХ ПЕТАР
+ПИНТАЧ ФРАЊО
+ПИНТАЧ ЛАДИСЛАВ
+ПИНТАЧ НИКОЛА ДИПЛ ОЕЦ
+ПИНТАЧ ВЕСНА
+ПИНТАЋ ЂОРЂЕ
+ПИНТАЋ МАРИЈА
+ПИНТАРИЋ ЈАСНА
+ПИНТАРИЋ ЈОВАН
+ПИНТЕР АДРИЕНЕ
+ПИНТЕР АЛЕКСАНДАР
+ПИНТЕР АНДРАШ
+ПИНТЕР БЕЛА
+ПИНТЕР БЕЛА
+ПИНТЕР ФРАЊА
+ПИНТЕР ИМРЕ
+ПИНТЕР ЈАНОШ
+ПИНТЕР КАРОЉ
+ПИНТЕР КАТАЛИН
+ПИНТЕР ЛЕНКА
+ПИНТЕР ЛИВИЈА
+ПИНТЕР МАРИЈА
+ПИНТЕР МИХАЉ
+ПИНТЕР МИХАЉ
+ПИНТЕР СТЕВАН
+ПИНТЕР ТИБОР
+ПИНТЕР ВЕРА
+ПИНТЕР ВЈЕКОСЛАВ
+ПИПЕР ВЕЛИБОР
+ПИПЕРАЦ НАДА
+ПИПЕРКОВ АНКА
+ПИПЕРСКИ ЖИВА
+ПИПЕРСКИ АНА
+ПИПЕРСКИ ДРАГОМИР
+ПИПЕРСКИ КОСТА
+ПИРЦ ДАНИЦА
+ПИРИ ЈАНОШ
+ПИРИ ЈОЖЕФ
+ПИРИ ЈОСИП
+ПИРИ ЈОСИП
+ПИРИЋ ИБРАХИМ
+ПИРИЋ ОСМАН
+ПИРИЋ ЗОРА
+ПИРИВАТРИЋ ДУШАНКА
+ПИРМАЈЕР ЈОСИП
+ПИРОШКИ ДРАГИЦА
+ПИРОШКИ ЈУЛИЈАНА
+ПИРОШКИ МИОДРАГ
+ПИРОШКИ ВАСА
+ПИРТИЋ КСЕНИЈА
+ПИРТИЋ РАДИНКА
+ПИРТИЋ САВЕТА
+ПИС ЕДИТА
+ПИСАЧИЋ ВЛАДИМИР
+ПИСАР ШАНДОР
+ПИСАР ДУШАН
+ПИСАР ЈОЖЕФ
+ПИСАР ЛАСЛО
+ПИСАРЕВ ЂОРЂЕ
+ПИСАРЕВ ЕМИЛИЈА
+ПИСАРЕВ КАТИЦА
+ПИСАРЕВ МИЛАН
+ПИСАРЕВИЋ ЂОРЂЕ
+ПИСАРЕВИЋ МИРКО
+ПИСАРЕВИЋ МИРКО
+ПИСАРЕВИЋ МИТАР
+ПИСАРЕВИЋ СПАСЕНИЈА
+ПИСАРИЋ ЂУРА
+ПИСАРИЋ ЂУРО
+ПИСАРИЋ БЛАЖО
+ПИСАРИЋ БРАНКО
+ПИСАРИЋ ДРАГАН
+ПИСАРИЋ ДРАГО
+ПИСАРИЋ НЕЂО
+ПИСАРИЋ ОСТОЈА
+ПИСАРИЋ ОСТОЈА
+ПИСАРИЋ ПАВЛЕ
+ПИСАРИЋ ВЛАДО
+ПИСАРОВ ЂОРЂЕ
+ПИСАРОВ КАТИЦА
+ПИСАРОВ ВАСА
+ПИТА МАХМУТ
+ПИТА МАХМУТ
+ПИТОМАЧИЋ СТОЈАНКА
+ПИТОМАЧИЋ ВЛАДА
+ПИТУК НАДА
+ПИУКОВИЋ ИВАН
+ПИУКОВИЋ МАГДА
+ПИВАЧ БОСИЉКА
+ПИВАЦ ДРАГОЉУБ
+ПИВАЦ МИЛОРАД
+ПИВАЦ МИЛОВАН
+ПИВАЦ ЗВОНИМИР
+ПИВАРСКИ БРАНКА
+ПИВАРСКИ ДУШАН
+ПИВАРСКИ МИОДРАГ
+ПИВАРСКИ РАТОМИР
+ПИВАРСКИ СЛАВИЦА
+ПИВАРСКИ СТЕВАН
+ПИВАРСКИ ВЕСЕЛИН МР ПХ
+ПИВНИЧКИ БОГДАНКА
+ПИВНИЧКИ БРАНИСЛАВ
+ПИВНИЧКИ БРАНИСЛАВ
+ПИВНИЧКИ БРАНКА
+ПИВНИЧКИ ДРАГАН
+ПИВНИЧКИ ГОРДАНА
+ПИВНИЧКИ ИВАНКА
+ПИВНИЧКИ КАТАРИНА
+ПИВНИЧКИ МАРИЈА
+ПИВНИЧКИ МИЛАН
+ПИВНИЧКИ МИЛЕТА
+ПИВНИЧКИ РАДЕНКО
+ПИВНИЧКИ РАЈКО
+ПИВНИЧКИ СТОЈКА
+ПИВНИЧКИ СВЕТОЗАР
+ПЈАНИЋ МИХАЈЛО
+ПЈАНИЋ РИСТА
+ПЈЕШЧИЋ БОГОЉУБ
+ПЈЕШЧИЋ ЛЕПОСАВА
+ПЈЕШЧИЋ МАРИЈА
+ПЈЕШЧИЋ МИЛЕВА
+ПЈЕШЧИЋ НОВАК
+ПЈЕШИВАЦ ЗДРАВКО
+ПЈЕТЛОВИЋ ДРАГИЦА
+ПЈЕВАЧ НИКОЛА
+ПЈЕВАЦ БРАНКО
+ПЈЕВАЦ ДУШАН
+ПЈЕВАЦ СТЕВАН
+ПЈЕВАЦ ВЛАДИМИР
+ПЈЕВАЦ ЗОРА
+ПЈЕВАЛИЦА УРОШ
+ПЈЕВИЋ ЂУРАЂ
+ПЈЕВИЋ БОЖО
+ПЈЕВИЋ МИРКО ДР
+ПЈЕВИЋ МИРОСЛАВА ДР
+ПЛАЧКИЋ ЖАРКО
+ПЛАЧКИЋ БОЖИДАР
+ПЛАЧКИЋ БРАНКО
+ПЛАЧКИЋ МЕЛАНИЈА
+ПЛАЧКИЋ СЛАВКО
+ПЛАЧКИЋ ТОМИСЛАВ
+ПЛАЧКО СТЈЕПАН
+ПЛАЧКОВ ЖИВКА
+ПЛАЧКОВ ЂОРЂЕ
+ПЛАЧКОВ БОРИВОЈ
+ПЛАЧКОВ БРАНИСЛАВ
+ПЛАЧКОВ БРАНИСЛАВ
+ПЛАЧКОВ БРАНИСЛАВ
+ПЛАЧКОВ БРАНКА
+ПЛАЧКОВ ДУШАН
+ПЛАЧКОВ ИЛОНКА
+ПЛАЧКОВ МИЛАН
+ПЛАЧКОВ МИРОЉУБ
+ПЛАЧКОВ ПАЈА
+ПЛАЧКОВ ПЕРА
+ПЛАЧКОВ ПЕТАР
+ПЛАЧКОВ РУДОЛФ
+ПЛАЧКОВ САВА
+ПЛАЧКОВ САВЕТА
+ПЛАЧКОВ СИМА
+ПЛАЧКОВ СТАНИМИР
+ПЛАЧКОВ СТЕВАН
+ПЛАЧКОВ СТЕВА
+ПЛАЧКОВ СТОЈАН
+ПЛАЧКОВ СВЕТОЗАР
+ПЛАЧКОВ ВУКОСАВА
+ПЛАЧКОВИЋ МИЛАН
+ПЛАЧКОВИЋ ПАЈА
+ПЛАЦ ЕДО
+ПЛАКАЛОВИЋ МИЛАДИН
+ПЛАНЧАК АМАЛИЈА
+ПЛАНЧАК ЕУФЕМИЈА
+ПЛАНЧАК ЕУГЕН
+ПЛАНЧАК ЈОВАН
+ПЛАНЧАК МИХАЈЛО
+ПЛАНЧАК МИРОСЛАВ ДР ПРОФ
+ПЛАНИЋ РАДОВАН
+ПЛАНИЋ ЗДЕНКА
+ПЛАНИНЧИЋ МИНА
+ПЛАНИНЧИЋ ВЕСЕЛИН
+ПЛАЊАНИН РАДОМИР
+ПЛАНОЈЕВИЋ МИЛУТИН ДР
+ПЛАНОВИЋ ВЕСНА
+ПЛАТИША МИЛАН
+ПЛАТИША МИОДРАГ
+ПЛАВШИЋ АНЂА
+ПЛАВШИЋ АНИЦА
+ПЛАВШИЋ АНИЦА
+ПЛАВШИЋ АНКА
+ПЛАВШИЋ БОШКО
+ПЛАВШИЋ БОЖА
+ПЛАВШИЋ БОЖА
+ПЛАВШИЋ БОЖИДАР
+ПЛАВШИЋ БОГОМИР
+ПЛАВШИЋ БОРИСЛАВ
+ПЛАВШИЋ БРАНИСЛАВ
+ПЛАВШИЋ БРАНКО
+ПЛАВШИЋ БРАНКО
+ПЛАВШИЋ БРАНКО
+ПЛАВШИЋ ЦВИЈО
+ПЛАВШИЋ ДРАГАН
+ПЛАВШИЋ ДУШАН
+ПЛАВШИЋ ДУШИЦА
+ПЛАВШИЋ ГОРДАНА
+ПЛАВШИЋ ЈЕЛИСАВЕТА
+ПЛАВШИЋ ЈОВАНКА
+ПЛАВШИЋ ЈОВАН
+ПЛАВШИЋ ЈОВАН
+ПЛАВШИЋ ЈОВИЦА
+ПЛАВШИЋ КАТАРИНА
+ПЛАВШИЋ КРСТА
+ПЛАВШИЋ ЛАЗАР
+ПЛАВШИЋ ЉИЉАНА
+ПЛАВШИЋ ЉУБИЦА
+ПЛАВШИЋ ЉУБИЦА
+ПЛАВШИЋ ЉУБИНКА
+ПЛАВШИЋ ЉУБОМИР
+ПЛАВШИЋ ЛУКА
+ПЛАВШИЋ МАРИЈА
+ПЛАВШИЋ МАРИНКО
+ПЛАВШИЋ МАРИНКО
+ПЛАВШИЋ МИЛЕНКО
+ПЛАВШИЋ МИЛЕНКО
+ПЛАВШИЋ МИЛИЦА
+ПЛАВШИЋ МИЛИЦА
+ПЛАВШИЋ МИЛИНКА
+ПЛАВШИЋ МИЛОШ
+ПЛАВШИЋ МИЛОМИР
+ПЛАВШИЋ МИОДРАГ
+ПЛАВШИЋ МИРКО
+ПЛАВШИЋ МИРКО
+ПЛАВШИЋ МИРОСЛАВ ДР ЛЕКАР
+ПЛАВШИЋ МИТАР
+ПЛАВШИЋ МИТА
+ПЛАВШИЋ МОМЧИЛО
+ПЛАВШИЋ МОМИР
+ПЛАВШИЋ НЕРА
+ПЛАВШИЋ НИКОЛА
+ПЛАВШИЋ НОВКА
+ПЛАВШИЋ ПАВА
+ПЛАВШИЋ ПЕТАР
+ПЛАВШИЋ ПЕТАР
+ПЛАВШИЋ РАДЕ
+ПЛАВШИЋ РАДМИЛА
+ПЛАВШИЋ РАДОВАН
+ПЛАВШИЋ РАДОВАН
+ПЛАВШИЋ РАНКО
+ПЛАВШИЋ РАНКО
+ПЛАВШИЋ СИМА
+ПЛАВШИЋ СЛОБОДАН
+ПЛАВШИЋ СЛОБОДАН
+ПЛАВШИЋ СТЕВАН
+ПЛАВШИЋ СТЕВАН
+ПЛАВШИЋ СТЕВО
+ПЛАВШИЋ ТОДЕ
+ПЛАВШИЋ ТОДОР
+ПЛАВШИЋ ВИНКО
+ПЛАВШИЋ ВИТОМИР
+ПЛАВШИЋ ВЛАДА
+ПЛАВШИЋ ВОЈИН
+ПЛАВШИЋ ВОЈИН
+ПЛАВШИЋ ВУКОСАВА
+ПЛАВШИЋ ЗОРКА
+ПЛАВШИН ДУШАН
+ПЛАВШИН МИЛИЦА
+ПЛАВШИН СТЕВАН
+ПЛАВАЦ ЖЕЉКО
+ПЛАВАЦ ДУШАН
+ПЛАВАЦ ЈАНКО
+ПЛАВЦ АХМЕТ
+ПЛАВЦ БАЈРУШ
+ПЛАВЉАНИН ЖИВКО
+ПЛАЗАЧИЋ ВИДОЈЕ
+ПЛАЗИНА ПУНИША
+ПЛЕША ЈОСИП
+ПЛЕШЕ ГОРАН
+ПЛЕШКО АНИЦА
+ПЛЕШТИЋ ДИМИТРИЈЕ
+ПЛЕШТИЋ МИРЈАНА
+ПЛЕЋАШ ДАНИЛО
+ПЛЕЋАШ ИЛИЈА
+ПЛЕЋАШ КАТИЦА
+ПЛЕЋАШ МИЛЕВА
+ПЛЕЋАШ РАДЕ
+ПЛЕЋАШ РОЗАЛИЈА
+ПЛЕМИЋ ЂУРО
+ПЛЕМИЋ ДАНЕ
+ПЛЕМИЋ МИЛАН
+ПЛЕСКОЊА МИЛОЈИЦА
+ПЛЕСКОЊИЋ АМАЛИЈА
+ПЛЕСКОВИЋ АНТУН
+ПЛЕСКОВИЋ НИКОЛА
+ПЛЕСКОВИЋ ЗДРАВКО
+ПЛЕТЕЛ КСЕНИЈА
+ПЛЕТЕЛ МИЛАН
+ПЛЕТИКАПИЋ ДРАГАН
+ПЛЕТИКОСИЋ ЉЕРКА
+ПЛЕТИКОСИЋ ПЕТАР
+ПЛЕТЛ ОТИЛИЈА
+ПЛИСНИЋ МИЛИЦА
+ПЛИСНИЋ МИЛОРАД
+ПЛИВАР ЈОВАН
+ПЉУЦО БРАНКО
+ПЛОХ ДРАГО
+ПЛОХ ФРАЊА
+ПЛОЈ МАРИЈА
+ПЛОС МИОДРАГ
+ПЛУЖАРЕВ ЛАЗАР
+ПЛУЖАРЕВ ОЛИВЕРА ДР
+ПЛУЖАРОВ МИЛЕНКО
+ПЛУКАВЕЦ ИВАН
+ПЛЗАК ДРАГОСЛАВ
+ПОЧАНИЋ ТРИПО
+ПОЧЕК БРАНИСЛАВ
+ПОЧЕК БРАНКО
+ПОЧЕК ЉИЉАНА
+ПОЧЕК МИЛОВАН
+ПОЧЕК ВЛАДА
+ПОЧЕК ВЛАДИСЛАВ
+ПОЧЕК ВЛАДИСЛАВ
+ПОЧЕТАК МИЛЕНКО
+ПОЧЕТАК МИЛИЦА
+ПОЧУЧА ДМИТАР
+ПОЧУЧА ДУШАН
+ПОЧУЧА ЈОВАНКА
+ПОЧУЧА ПЕТАР
+ПОЧУЧА РАДМИЛА
+ПОШЧИЋ ЕРИКА
+ПОША ЂУРА
+ПОША АНДРАШ
+ПОША ДРАГИЦА
+ПОША ИШТВАН
+ПОША КАРЛО
+ПОША ПЕТАР
+ПОША РОЗАЛИЈА
+ПОША СНЕЖАНА
+ПОШАРАЦ ДУШКО
+ПОШАРАЦ ЗОРАН
+ПОШТА НИКОЛА
+ПОШТИЋ ЂОРЂЕ ДР
+ПОШТИЋ ДРАГАН
+ПОШТИЋ МИЛАН
+ПОШТИЋ СЛОБОДАНКА
+ПОШТИЋ СОФИЈА
+ПОШТИЋ СРЂАН ДИПЛ ИНГ
+ПОШТОШ ВЕРА
+ПОЖАР МИЛИЦА
+ПОЖАРЕВ ЂОРЂЕ
+ПОЖАРЕВ ЂОРЂЕ
+ПОЖАРЕВ АЛЕКСАНДАР
+ПОЖАРЕВ АНЂЕЛКА
+ПОЖАРЕВ ДОРА
+ПОЖАРЕВ ЈЕЛЕНА
+ПОЖАРЕВ РАДЕ
+ПОЖАРЕВ РАТОМИРКА
+ПОЖАРЕВ РАТОМИР
+ПОЖАРЕВ СТЕВАН
+ПОЖАРЕВ ВЕСЕЛИН
+ПОЖЕГА МИЛЕ
+ПОЖЕГА СОФИЈА
+ПОЖЕГА СТЕВАН
+ПОЖГАЈ АНТУН
+ПОЖГАЈ ТОМИСЛАВ
+ПОБОР ЈЕЛЕНА
+ПОБОР СРЕТО
+ПОБРАН СТЕВАН
+ПОБРАН ВЛАДИМИР
+ПОБРИЋ ИСАК
+ПОБУЋАНОВИЋ-КУЉАНКИЋ ШУХРЕТА
+ПОБУЂАНОВИЋ ИЛИНКА
+ПОБУЂАНОВИЋ МУХАРЕМ
+ПОБУЂАНОВИЋ СВЕТЛАНА
+ПОЦАЈТ ВИКТОР
+ПОЦМАН АНТУН
+ПОЦМАН ВИЛИМ
+ПОЦРНИЋ МИЛЕ
+ПОЦРНИЋ НИКОЛА
+ПОДГОРНИК МИЛАН
+ПОДГОРНИК РАЈНА
+ПОДЛИПЕЦ МАРИЈА
+ПОДМАЈОРСКИ МАРА
+ПОДОБНИК ЈАСНА
+ПОДОЛА ЈУСТИНА
+ПОДРАШЧАНИН ЈОВАН
+ПОДРАШЧАНИН НАДА
+ПОДРАШЧАНИН ВОЈА
+ПОДРАВАЦ БРАНКО
+ПОГАНЧЕВ ГОРАН
+ПОГАНЧЕВ ГОРАН
+ПОГАЊ ЈУЛИЈАНА
+ПОГУБЕРОВИЋ ЈОВАН
+ПОЈБИЋ ДУШАН
+ПОЈЕ ЈОСИП
+ПОЈИЋ БРАНКО
+ПОКА ЈОСИП
+ПОКАС ЈОСИП
+ПОКРАЈАЦ АНГЕЛИНА
+ПОКРАЈАЦ ЈОВАН
+ПОКРАЈАЦ ЈОВАН
+ПОКРАЈАЦ МИЛАН
+ПОКРАЈАЦ МИЛОРАД
+ПОКРАЈАЦ РАДЕ
+ПОКРАЈАЦ СЛАВКО
+ПОКРИЋ ВОЈИСЛАВ
+ПОКУШЕВСКИ ДОБРИНКА
+ПОКУПЕЦ МИЛАН
+ПОЛАК ЈЕЛЕНА
+ПОЛАК ЈОЖЕФ
+ПОЛАК СТЕВАН
+ПОЛАКОВИЋ ЕРЖЕБЕТ
+ПОЛАКОВИЋ ЈАНОШ
+ПОЛАНЕЦ ФРАЊО
+ПОЛЕ НИКОЛА
+ПОЛЕ НИКОЛА
+ПОЛЕДИЦА ДУШАНКА
+ПОЛЕНДЕР СОФИЈА
+ПОЛЕРМАН БЕЛА
+ПОЛЕРМАН МИЛИЦА
+ПОЛЕТАНОВИЋ МАРИНКО
+ПОЛЕТО ДОМЕНИК
+ПОЛЕТО ИВАН
+ПОЛГАР ИШТВАН
+ПОЛИЋ ЂУРА
+ПОЛИЋ БОШКО
+ПОЛИЋ ДАНИЦА
+ПОЛИЋ ДРАГАН
+ПОЛИЋ ЉУБИЦА
+ПОЛИЋ МАРИЈАН
+ПОЛИЋ СЛОБОДАН
+ПОЛИМАЦ АНЂЕЛИЈА
+ПОЛИН ЂУРА
+ПОЛИН ЛАСЛО
+ПОЛИНСКИ АРАНКА
+ПОЉАЧКИ АЛЕКСАНДАР
+ПОЉАЧКИ МИЛИЦА
+ПОЉАЧКИ МИЛИЦА
+ПОЉАЧКИ СВЕТОЗАР
+ПОЉАК ЂЕРЂ
+ПОЉАК ЕВА
+ПОЉАК ФРАЊО
+ПОЉАК ЛАСЛО
+ПОЉАК МИША
+ПОЉАК МИХАЉ
+ПОЉАК МИЛКА
+ПОЉАК МИОДРАГ
+ПОЉАК МИОДРАГ
+ПОЉАК НИКОЛА
+ПОЉАК НИКОЛА
+ПОЉАК ПЕТАР
+ПОЉАК РАНКО
+ПОЉАКОВИЋ СТЈЕПАН
+ПОЉАНСКИ ЈОВИЦА
+ПОЉАНСКИ ЉУБИЦА
+ПОЉАНСКИ СТОЈАН
+ПОЉИЧАК АНТЕ
+ПОЉИЧАК ЉУБАН
+ПОЉИЋ РЕФИК
+ПОЉОВКА ЈАН
+ПОЉВАШ ЈОЖЕФ
+ПОЛОЈАЦ ЛУКА
+ПОЛОВИЋ КОСТА
+ПОЛОВИЋ СТЕВО
+ПОЛОВИНА ЂОРЂЕ
+ПОЛОВИНА ДАНИЈЕЛ
+ПОЛОВИНА ИСА
+ПОЛОВИНА МИЛАН
+ПОЛОВИНА МИЛИЦА
+ПОЛОВИНА МИЛОРАД
+ПОЛОВИНА НАДА
+ПОЛОВИНА НИКОЛА
+ПОЛОВИНА ПЛЕМЕНКА
+ПОЛОВИНА РАДИВОЈЕ
+ПОЛОВИНА СЛОБОДАН
+ПОЛОВИНА СТЕВО
+ПОЛОВИНА ТОДОР
+ПОЛОВИНА ВЛАДИМИР
+ПОЛОВИНА ВЛАДО
+ПОЛОВИНСКИ САВА
+ПОЛТУРА ЖУЖАНА
+ПОЛТУРА ГАБОР
+ПОЛТУРА ИРЕНА
+ПОЛТУРА МИРКО
+ПОЛУЖАНСКИ ИВАНКА
+ПОЛУМИРАЦ МИЛИЦА
+ПОЛУТА ЛИНА
+ПОЛВЕРЕЖАН-ОБШУСТ ЋЕЋИЛИЈА
+ПОЛЗОВИЋ АЛЕКСАНДАР
+ПОЛЗОВИЋ ЈОВАН
+ПОЛЗОВИЋ МИОМИР
+ПОЛЗОВИЋ МИРОСЛАВ
+ПОЛЗОВИЋ РАДОСЛАВ
+ПОМОРИШКИ БРАНИСЛАВ
+ПОНГО ЖУЖАНА
+ПОНГО ЈАНОШ
+ПОНГО ЛАСЛО
+ПОНГО СТЕВАН
+ПОЊАРАЦ САВО
+ПОЊАВИЋ ГОРДАНА
+ПОЊАВИЋ РАДИСАВ
+ПОЊАВИЋ СИНИША
+ПОЊЕВИЋ МОМЧИЛО
+ПОЊЕВИЋ ПЕТАР
+ПОЊЕВИЋ СПАСАН
+ПОЊЕВИЋ ЗВЕЗДАН
+ПОЊИЧАН ХОРИСЛАВ
+ПОЊИЧАН ЈАН
+ПОЊИЧАН ЈОСИП
+ПОЊИГЕР ЂУРА
+ПОЊИГЕР ИВАН
+ПОНОЋКО ЧЕДОМИР
+ПОНОРАЦ ЛАЗАР
+ПОП-ЈОВАНОВ ВЕРА
+ПОП ЗДЕНКО
+ПОПЂУРЂЕВ МИЛАН
+ПОПА СПАСЕНИЈА
+ПОПАДИЋ ЖИВАН
+ПОПАДИЋ ЖИВА
+ПОПАДИЋ ЖИВКО
+ПОПАДИЋ ЂОКО
+ПОПАДИЋ ЂУКА
+ПОПАДИЋ БРАНКА
+ПОПАДИЋ ГОЈКО
+ПОПАДИЋ ИСИДОР
+ПОПАДИЋ-ЈАНУЗОВИЋ РАДМИЛА
+ПОПАДИЋ ЉИЉАНА
+ПОПАДИЋ ЉУБИЦА
+ПОПАДИЋ ЉУБО
+ПОПАДИЋ МИЛАН
+ПОПАДИЋ МИЛЕНКО
+ПОПАДИЋ МИЛЕНКО
+ПОПАДИЋ МИЛЕНКО
+ПОПАДИЋ МИОДРАГ
+ПОПАДИЋ НЕДЕЉКО
+ПОПАДИЋ НЕГОВАН
+ПОПАДИЋ НИКОЛА
+ПОПАДИЋ НОВАК
+ПОПАДИЋ ПЕТКО
+ПОПАДИЋ ПРЕДРАГ
+ПОПАДИЋ РАДМИЛА
+ПОПАДИЋ РАДМИЛА
+ПОПАДИЋ РАТОМИР
+ПОПАДИЋ СИЛВИЈА
+ПОПАДИЋ СЛАВКО
+ПОПАДИЋ СЛАВОЉУБ
+ПОПАДИЋ СТАНА
+ПОПАДИЋ СТОЈИЦА
+ПОПАДИЋ СВЕТЛАНА
+ПОПАДИЋ ТИХОМИР
+ПОПАДИЋ ВЕРА
+ПОПАДИЋ ВОЈИСЛАВ АДВОКАТ
+ПОПАДИЋ ВОЈИСЛАВ
+ПОПАРА АЛЕКСАНДАР
+ПОПАРА ИЛИЈА
+ПОПАРА ЉУБИША
+ПОПАРА ТАДИЈА
+ПОПАРА ЗОРАН
+ПОПАРИЋ ЖИВОЈИН
+ПОПАРИЋ ИСИДОР
+ПОПАРИЋ МАРИЦА
+ПОПАРИЋ НЕНАД
+ПОПДАНКОВ ЈУДИТА
+ПОПЕЈКОВ БОРИСЛАВ
+ПОПЕЈКОВ ЉИЉАНА
+ПОПЕЈКОВ МАРА
+ПОПЕНГОВ ВАСА
+ПОПЕСКУ РУЖА
+ПОПГЛИГОРИН ПАВЛЕ
+ПОПИЋ ЖЕЉКО
+ПОПИЋ АЛЕКСАНДАР
+ПОПИЋ АНЂЕЛКО
+ПОПИЋ БРАНКО
+ПОПИЋ БУДИМИР
+ПОПИЋ ДРАГАН
+ПОПИЋ ДУШАН
+ПОПИЋ ДУШАН
+ПОПИЋ ДУШАН
+ПОПИЋ ЕДИТА
+ПОПИЋ ГОРДАНА
+ПОПИЋ ЈЕЛИСАВЕТА
+ПОПИЋ КАТИЦА
+ПОПИЋ ЉИЉАНА
+ПОПИЋ ЛУКА
+ПОПИЋ МИЛАН
+ПОПИЋ МИЛАН
+ПОПИЋ МИЛАН
+ПОПИЋ МИЛИЦА
+ПОПИЋ МИЛИВОЈ
+ПОПИЋ МИРА
+ПОПИЋ МИРА
+ПОПИЋ МИРЈАНА
+ПОПИЋ НАДА
+ПОПИЋ-ПАЉИЋ ФЕОДОРА
+ПОПИЋ РАДИВОЈ
+ПОПИЋ САВА
+ПОПИЋ САВО
+ПОПИЋ СНЕЖАНА
+ПОПИЋ СОФИЈА
+ПОПИЋ СОФИЈА
+ПОПИЋ СВЕТОЗАР
+ПОПИЋ ТОМА
+ПОПИЋ ВУКИЦА
+ПОПИЋ ЗОРА
+ПОПИН ИВАН
+ПОПИН РАДИВОЈ
+ПОПИН ВИТОМИР
+ПОПИН ВЛАДИМИР
+ПОПИВОДА БОЖИДАР
+ПОПИВОДА МИЛОВАН
+ПОПИВОДА МИЛУТИН
+ПОПИВОДА НЕДЕЉКО
+ПОПИВОДА ПЕТАР
+ПОПИВОДА РАДИСЛАВ
+ПОПМИХАЈЛОВ ДИМИТРИЈЕ
+ПОПМИХАЈЛОВ ДУШАН
+ПОПНОВАКОВ ДРАГОМИР
+ПОПНОВАКОВ МИЛАН
+ПОПНОВАКОВ МИЛИЦА
+ПОПОВ ЧЕДОМИР
+ПОПОВ ЖАРКО
+ПОПОВ ЖАРКО
+ПОПОВ-ЖИКЕЛИЋ ЗОРА
+ПОПОВ ЖИВКА
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЖИВКО
+ПОПОВ ЂОКА
+ПОПОВ ЂОКА
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂОРЂЕ
+ПОПОВ ЂУРЂИНА
+ПОПОВ ЂУРА
+ПОПОВ ЂУРА
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АЛЕКСАНДАР
+ПОПОВ АНЂА
+ПОПОВ АНДОН
+ПОПОВ АНКИЦА
+ПОПОВ-БАША ВЕРА
+ПОПОВ БОРИВОЈ ДИПЛ ИНГ
+ПОПОВ БРАНИСЛАВА
+ПОПОВ БРАНИСЛАВ
+ПОПОВ БРАНИСЛАВ
+ПОПОВ БРАНИСЛАВ
+ПОПОВ БРАНКО
+ПОПОВ БРАНКО
+ПОПОВ ДАНИЦА
+ПОПОВ ДАНИЦА
+ПОПОВ ДАНИЛО
+ПОПОВ ДАНИЛО
+ПОПОВ ДАРИНКА
+ПОПОВ ДИМИТРИЈЕ
+ПОПОВ ДИМИТРИЈЕ
+ПОПОВ ДРАГАНА
+ПОПОВ ДРАГАН
+ПОПОВ ДРАГАН
+ПОПОВ ДРАГАН
+ПОПОВ ДРАГАН
+ПОПОВ ДРАГА
+ПОПОВ ДРАГИША
+ПОПОВ ДРАГИЦА
+ПОПОВ-ДРАГИН ОЛГА
+ПОПОВ ДРАГОЉУБ
+ПОПОВ ДРАГОЉУБ
+ПОПОВ ДРАГОЉУБ
+ПОПОВ ДРАГОМИР
+ПОПОВ ДРАГОМИР
+ПОПОВ ДРАГОМИР
+ПОПОВ ДРАГОСЛАВА
+ПОПОВ ДУШАН ДР
+ПОПОВ ДУШАН
+ПОПОВ ДУШАН
+ПОПОВ ДУШАН
+ПОПОВ ДУШКА
+ПОПОВ ГАВРА
+ПОПОВ ГОРАН
+ПОПОВ ГОРДАНА ДР
+ПОПОВ ГОРДАНА
+ПОПОВ ГОРДАНА
+ПОПОВ ИЛОНКА
+ПОПОВ ИСА
+ПОПОВ ИВАНКА
+ПОПОВ ИВАН
+ПОПОВ ИВКА
+ПОПОВ ЈЕЛА
+ПОПОВ ЈЕЛА
+ПОПОВ ЈЕЛИСАВЕТА
+ПОПОВ ЈЕЗДИМИР
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈОВАН
+ПОПОВ ЈУГОСЛАВ
+ПОПОВ ЈУГ
+ПОПОВ ЈУЛКА
+ПОПОВ КАТИЦА
+ПОПОВ КАТИЦА
+ПОПОВ КОСА
+ПОПОВ КОВИНКА
+ПОПОВ ЛАЗАР
+ПОПОВ ЛАЗАР
+ПОПОВ ЛАЗАР
+ПОПОВ ЛАЗАР
+ПОПОВ ЛЕНКА
+ПОПОВ ЉИЉАНА
+ПОПОВ ЉИЉАНА
+ПОПОВ ЉУБИША
+ПОПОВ ЉУБИЦА
+ПОПОВ ЉУБИЦА
+ПОПОВ ЉУБИЦА
+ПОПОВ ЉУБИЦА
+ПОПОВ ЉУБИНКА
+ПОПОВ ЉУБОМИР
+ПОПОВ МАРА
+ПОПОВ МАРИЦА
+ПОПОВ МАРИЈА
+ПОПОВ МАРИЈА
+ПОПОВ МАРИНКО
+ПОПОВ МАРКО
+ПОПОВ МАРКО
+ПОПОВ МАРКО
+ПОПОВ МИЛАДИН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛАН
+ПОПОВ МИЛЕНА
+ПОПОВ МИЛЕНА
+ПОПОВ МИЛЕНКО
+ПОПОВ МИЛИЦА
+ПОПОВ МИЛИЦА
+ПОПОВ МИЛИЦА
+ПОПОВ МИЛИЦА
+ПОПОВ МИЛИВОЈ
+ПОПОВ МИЛИВОЈ
+ПОПОВ МИЛИВОЈ
+ПОПОВ МИЛИВОЈ
+ПОПОВ МИЛКА
+ПОПОВ МИЛОШ
+ПОПОВ МИЛОШ
+ПОПОВ МИЛОЈЕ
+ПОПОВ МИЛОРАД
+ПОПОВ МИЛОВАН
+ПОПОВ МИЛОВАН
+ПОПОВ МИЛУТИН
+ПОПОВ МИРЈАНА
+ПОПОВ МИРЈАНА
+ПОПОВ МИРЈАН
+ПОПОВ МИРОСЛАВ
+ПОПОВ МИТА
+ПОПОВ МОМЧИЛО
+ПОПОВ НЕДЕЉКО
+ПОПОВ НЕНАТКА
+ПОПОВ НИКОЛА
+ПОПОВ НИНА
+ПОПОВ НИНОСЛАВ ДИПЛ ИНГ
+ПОПОВ НОВАК
+ПОПОВ ОБРАД
+ПОПОВ-ОБРОВАЧКИ СОФИЈА
+ПОПОВ ОЛГА
+ПОПОВ ПАЈА
+ПОПОВ ПАВЛЕ
+ПОПОВ ПАВЛЕ
+ПОПОВ ПАВЛЕ
+ПОПОВ ПЕРА
+ПОПОВ ПЕТАР
+ПОПОВ ПЕТАР
+ПОПОВ ПЛАТОН
+ПОПОВ ПРЕДРАГ
+ПОПОВ РАДИВОЈЕ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДИВОЈ
+ПОПОВ РАДМИЛА
+ПОПОВ РАДОЈКА
+ПОПОВ РАДОВАН ДИПЛ ИНГ
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАДОВАН
+ПОПОВ РАТОМИР
+ПОПОВ РЕЉА
+ПОПОВ РОДОЉУБ
+ПОПОВ САВА
+ПОПОВ САВА
+ПОПОВ САВА
+ПОПОВ САВА
+ПОПОВ САВЕТА
+ПОПОВ СЕКУЛА
+ПОПОВ СИНИША
+ПОПОВ СЛАВИЦА
+ПОПОВ СЛАВКО
+ПОПОВ СЛАВКО
+ПОПОВ СЛАВКО
+ПОПОВ СЛОБОДАН
+ПОПОВ СЛОБОДАН
+ПОПОВ СНЕЖАНА
+ПОПОВ СОФИЈА
+ПОПОВ СПАСОЈЕ
+ПОПОВ СРЕДОЈЕ
+ПОПОВ СТАНА
+ПОПОВ СТЕВАН ДИПЛ ИНГ
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВАН
+ПОПОВ СТЕВА
+ПОПОВ СТЕВИЦА
+ПОПОВ СТОЈАНКА
+ПОПОВ СВЕТЛАНА
+ПОПОВ СВЕТОЗАР
+ПОПОВ СВЕТОЗАР
+ПОПОВ ТАТОМИР
+ПОПОВ ТОДОР
+ПОПОВ ТРИВА
+ПОПОВ УРОШ
+ПОПОВ ВАСИЛИЈЕ
+ПОПОВ ВАСИЛИЈЕ
+ПОПОВ ВАСИЛИЈЕ
+ПОПОВ ВЕРА
+ПОПОВ ВЕРА
+ПОПОВ ВЕРА
+ПОПОВ ВЕРИЦА
+ПОПОВ ВЕСЕЛИН
+ПОПОВ ВЛАДИМИР
+ПОПОВ ВЛАДИМИР
+ПОПОВ ВОЈИН
+ПОПОВ ВОЈИСЛАВ
+ПОПОВ ВУКОСАВА
+ПОПОВ ЗЛАТА
+ПОПОВ ЗЛАТИЦА
+ПОПОВ ЗОРКА
+ПОПОВИЋ ЧАСЛАВ ДИПЛ ПРАВНИК
+ПОПОВИЋ ЧЕДОМИР ДИПЛ ИНГ
+ПОПОВИЋ ЧЕДОМИР
+ПОПОВИЋ ЧЕДОМИР
+ПОПОВИЋ ЧЕДОМИР
+ПОПОВИЋ-ЧЕЈОВИЋ ПАВЛЕ
+ПОПОВИЋ ШЋЕПАН
+ПОПОВИЋ ЖАРКО
+ПОПОВИЋ ЖАРКО
+ПОПОВИЋ ЖАРКО
+ПОПОВИЋ ЖЕЉКО
+ПОПОВИЋ ЖИВАН
+ПОПОВИЋ ЖИВАН
+ПОПОВИЋ ЖИВКО
+ПОПОВИЋ ЖИВОРАД
+ПОПОВИЋ ЖУЖАНА
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂЕ
+ПОПОВИЋ ЂОРЂИЈЕ
+ПОПОВИЋ ЂУРЂИНА
+ПОПОВИЋ ЂУРЂИНА
+ПОПОВИЋ ЂУРА
+ПОПОВИЋ ЂУРИЦА
+ПОПОВИЋ ЂУРО
+ПОПОВИЋ ЂУРО
+ПОПОВИЋ АКСЕНТИЈЕ
+ПОПОВИЋ АЛЕКСАНДАР ДР ПРАВНИК
+ПОПОВИЋ АЛЕКСАНДАР ДР
+ПОПОВИЋ АЛЕКСАНДАР
+ПОПОВИЋ АЛЕКСАНДАР
+ПОПОВИЋ АЛЕКСАНДАР
+ПОПОВИЋ АЛЕКСАНДАР
+ПОПОВИЋ АНЂЕЛКА
+ПОПОВИЋ АНЂЕЛКА
+ПОПОВИЋ АНЂЕЛ
+ПОПОВИЋ АНА
+ПОПОВИЋ АНА
+ПОПОВИЋ АНГЕЛИНА
+ПОПОВИЋ АНГЕЛИНА
+ПОПОВИЋ АНГЕЛИНА
+ПОПОВИЋ АНИЦА
+ПОПОВИЋ БЛАГОЈЕ
+ПОПОВИЋ БОЖА
+ПОПОВИЋ БОЖИДАР
+ПОПОВИЋ БОГДАН
+ПОПОВИЋ БОГДАН
+ПОПОВИЋ БОГОЉУБ
+ПОПОВИЋ БОЈАН
+ПОПОВИЋ БОРИСЛАВА
+ПОПОВИЋ БОРИСЛАВ
+ПОПОВИЋ БОРЈАН
+ПОПОВИЋ БОРКА
+ПОПОВИЋ БОСИЉКА
+ПОПОВИЋ БРАНИСЛАВ ДР
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИСЛАВ
+ПОПОВИЋ БРАНИВОЈ
+ПОПОВИЋ БРАНИВОЈ
+ПОПОВИЋ БРАНКА
+ПОПОВИЋ БРАНКО
+ПОПОВИЋ БРАНКО
+ПОПОВИЋ БРАНКО
+ПОПОВИЋ ЦВЕЈА
+ПОПОВИЋ ДАНЧИКА
+ПОПОВИЋ ДАНЕ
+ПОПОВИЋ ДАНЕ
+ПОПОВИЋ ДАНИЦА
+ПОПОВИЋ ДАНИЦА
+ПОПОВИЋ ДАНИЛО
+ПОПОВИЋ ДАНКИЦА
+ПОПОВИЋ ДАРИНКА
+ПОПОВИЋ ДЕЈАН
+ПОПОВИЋ ДЕСАНКА
+ПОПОВИЋ ДЕСА
+ПОПОВИЋ ДИМИТРИЈЕ
+ПОПОВИЋ ДИМИТРИЈЕ
+ПОПОВИЋ ДИМИТРИЈЕ
+ПОПОВИЋ ДОБРИНКА
+ПОПОВИЋ ДОБРИНКА
+ПОПОВИЋ ДОБРИНКО
+ПОПОВИЋ ДОБРИВОЈ
+ПОПОВИЋ ДРАГАНА
+ПОПОВИЋ ДРАГАН
+ПОПОВИЋ ДРАГАН
+ПОПОВИЋ ДРАГАН
+ПОПОВИЋ ДРАГИША ДР
+ПОПОВИЋ ДРАГИША
+ПОПОВИЋ ДРАГИЊА
+ПОПОВИЋ ДРАГО ДИПЛ ИНГ
+ПОПОВИЋ ДРАГОЈЛО
+ПОПОВИЋ ДРАГОЉУБ
+ПОПОВИЋ ДРАГОЉУБ
+ПОПОВИЋ ДРАГОЉУБ
+ПОПОВИЋ ДРАГОМИР
+ПОПОВИЋ ДРАГОМИР
+ПОПОВИЋ ДРАГО
+ПОПОВИЋ ДРАГО
+ПОПОВИЋ ДРАГО
+ПОПОВИЋ ДРАГУТИН
+ПОПОВИЋ ДУШАН ДР
+ПОПОВИЋ ДУШАНКА
+ПОПОВИЋ ДУШАНКА
+ПОПОВИЋ ДУШАНКА
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШАН
+ПОПОВИЋ ДУШИЦА
+ПОПОВИЋ ДУШКО ДР
+ПОПОВИЋ ЕМИЛ
+ПОПОВИЋ ФЕОДОРА
+ПОПОВИЋ ФЕОДОР
+ПОПОВИЋ ГОЈКО
+ПОПОВИЋ ГОРАН
+ПОПОВИЋ ГОРДАНА
+ПОПОВИЋ ИЛЕ
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИЛИЈА
+ПОПОВИЋ ИРИНА
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ИВАН
+ПОПОВИЋ ЈАДРАНКА
+ПОПОВИЋ ЈАНКО
+ПОПОВИЋ ЈАСНА
+ПОПОВИЋ ЈЕФТА
+ПОПОВИЋ ЈЕЛЕНА
+ПОПОВИЋ ЈЕЛЕНА
+ПОПОВИЋ ЈЕЛЕНА
+ПОПОВИЋ ЈЕЛЕНА
+ПОПОВИЋ ЈЕЛИСАВЕТА
+ПОПОВИЋ ЈОВАНКА
+ПОПОВИЋ ЈОВАНКА
+ПОПОВИЋ ЈОВАНКА
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВАН
+ПОПОВИЋ ЈОВО
+ПОПОВИЋ КАТАРИНА
+ПОПОВИЋ КАТИЦА
+ПОПОВИЋ КАТИЦА
+ПОПОВИЋ КАТИЦА
+ПОПОВИЋ КОНСТАНТИН
+ПОПОВИЋ КОСТА ДР
+ПОПОВИЋ КОСТАДИН
+ПОПОВИЋ КОСТА
+ПОПОВИЋ КОСТА
+ПОПОВИЋ КРИСТИНА
+ПОПОВИЋ КРСТА
+ПОПОВИЋ КРСТО
+ПОПОВИЋ КСЕНИЈА
+ПОПОВИЋ ЛАЗАР ДР ЛЕКАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛАЗАР
+ПОПОВИЋ ЛЕЛА
+ПОПОВИЋ ЛЕПОСАВА
+ПОПОВИЋ ЉИЉАНА ДР
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉИЉАНА
+ПОПОВИЋ ЉУБИЦА
+ПОПОВИЋ ЉУБИЦА
+ПОПОВИЋ ЉУБИЦА
+ПОПОВИЋ ЉУБИЦА
+ПОПОВИЋ ЉУБИСАВ
+ПОПОВИЋ ЉУБОМИР
+ПОПОВИЋ ЉУБОМИР
+ПОПОВИЋ ЉУБОМИР
+ПОПОВИЋ ЉУБОМИР
+ПОПОВИЋ МАКСИМ
+ПОПОВИЋ МАРА
+ПОПОВИЋ МАРА
+ПОПОВИЋ МАРИЈА ДР
+ПОПОВИЋ МАРИЈАНА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИЈА
+ПОПОВИЋ МАРИНКО
+ПОПОВИЋ МАРКО ДР ЛЕКАР
+ПОПОВИЋ МАРКО МР ИНГ
+ПОПОВИЋ МАРКО
+ПОПОВИЋ МАРКО
+ПОПОВИЋ МАРТА
+ПОПОВИЋ МЕЛАНИЈА
+ПОПОВИЋ МИХАИЛО
+ПОПОВИЋ МИХАЈЛО ДР
+ПОПОВИЋ МИХАЈЛО
+ПОПОВИЋ МИЛАНА
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛАН
+ПОПОВИЋ МИЛА
+ПОПОВИЋ МИЛЕНА
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕНКО
+ПОПОВИЋ МИЛЕТА ДИПЛ ИНГ
+ПОПОВИЋ МИЛЕ
+ПОПОВИЋ МИЛИЦА
+ПОПОВИЋ МИЛИЦА
+ПОПОВИЋ МИЛИЈАН ДР
+ПОПОВИЋ МИЛИНКО
+ПОПОВИЋ МИЛИВОЈЕ
+ПОПОВИЋ МИЛКА
+ПОПОВИЋ МИЛОШ ДИПЛ ИНГ
+ПОПОВИЋ МИЛОШ
+ПОПОВИЋ МИЛОШ
+ПОПОВИЋ МИЛОШ
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОРАД
+ПОПОВИЋ МИЛОСАВА
+ПОПОВИЋ МИЛОСАВ
+ПОПОВИЋ МИЛОВАН
+ПОПОВИЋ МИЛУТИН
+ПОПОВИЋ МИОДРАГ
+ПОПОВИЋ МИОДРАГ
+ПОПОВИЋ МИОДРАГ
+ПОПОВИЋ МИОДРАГ
+ПОПОВИЋ МИРА
+ПОПОВИЋ МИРА
+ПОПОВИЋ МИРЈАНА
+ПОПОВИЋ МИРЈАНА
+ПОПОВИЋ МИРЈАНА
+ПОПОВИЋ МИРЈАНА
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРКО
+ПОПОВИЋ МИРОЉУБ
+ПОПОВИЋ МИРОСЛАВ
+ПОПОВИЋ МИРОСЛАВ
+ПОПОВИЋ МИРОСЛАВ
+ПОПОВИЋ МИРОСЛАВ
+ПОПОВИЋ МИТАР
+ПОПОВИЋ МИТАР
+ПОПОВИЋ МЛАДЕН
+ПОПОВИЋ МЛАДИНКО
+ПОПОВИЋ МОМЧИЛО
+ПОПОВИЋ МОМЧИЛО
+ПОПОВИЋ МОМЧИЛО
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДА
+ПОПОВИЋ НАДЕЖДА
+ПОПОВИЋ НАДЕЖДА
+ПОПОВИЋ НАДЕЖДА
+ПОПОВИЋ НАТАЛИЈА
+ПОПОВИЋ НЕЂО
+ПОПОВИЋ НЕБОЈША
+ПОПОВИЋ НЕДЕЉКО
+ПОПОВИЋ НЕДЕЉКО
+ПОПОВИЋ НЕНАД
+ПОПОВИЋ НЕНАД
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НИКОЛА
+ПОПОВИЋ НОВАК
+ПОПОВИЋ НОВАК
+ПОПОВИЋ ОБРАД
+ПОПОВИЋ ОБРАД
+ПОПОВИЋ ОЛГА
+ПОПОВИЋ ОЛГА
+ПОПОВИЋ ОЛГА
+ПОПОВИЋ ПАЈА
+ПОПОВИЋ ПАВЛЕ ДИПЛ ПРАВНИК
+ПОПОВИЋ ПАВЛЕ
+ПОПОВИЋ ПАВЛЕ
+ПОПОВИЋ ПАВЛЕ
+ПОПОВИЋ ПЕРА
+ПОПОВИЋ ПЕРИЦА
+ПОПОВИЋ ПЕРО
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ ПЕТАР
+ПОПОВИЋ РАДА
+ПОПОВИЋ РАДЕНКО
+ПОПОВИЋ РАДЕ
+ПОПОВИЋ РАДЕ
+ПОПОВИЋ РАДЕ
+ПОПОВИЋ РАДИНКА
+ПОПОВИЋ РАДИВОЈЕ
+ПОПОВИЋ РАДИВОЈ
+ПОПОВИЋ РАДИВОЈ
+ПОПОВИЋ РАДМИЛА
+ПОПОВИЋ РАДМИЛА
+ПОПОВИЋ РАДОИЦА
+ПОПОВИЋ РАДОИЦА
+ПОПОВИЋ РАДОЈИЦА
+ПОПОВИЋ РАДОЈКА
+ПОПОВИЋ РАДОЈКА
+ПОПОВИЋ РАДОМИР
+ПОПОВИЋ РАДОСАВ
+ПОПОВИЋ РАДОСАВ
+ПОПОВИЋ РАДОСЛАВ
+ПОПОВИЋ РАДОВАНКА
+ПОПОВИЋ РАДОВАНКА
+ПОПОВИЋ РАДОВАН
+ПОПОВИЋ РАДУЛ
+ПОПОВИЋ РАЈКО
+ПОПОВИЋ РАНКО
+ПОПОВИЋ РАТКО
+ПОПОВИЋ РАВИЈОЈЛА
+ПОПОВИЋ РЕЉА ДР
+ПОПОВИЋ РОДОЉУБ
+ПОПОВИЋ САЊА
+ПОПОВИЋ САВА ДИПЛ ИНГ
+ПОПОВИЋ САВА ДИПЛ ИНГ
+ПОПОВИЋ САВА
+ПОПОВИЋ САВА
+ПОПОВИЋ САВА
+ПОПОВИЋ САВО
+ПОПОВИЋ СЕКУЛА
+ПОПОВИЋ СИНИША ДР ЛЕКАР
+ПОПОВИЋ СЛАВИЦА
+ПОПОВИЋ СЛАВКО ДИПЛ ОЕЦ
+ПОПОВИЋ СЛАВКО
+ПОПОВИЋ СЛАВКО
+ПОПОВИЋ СЛАВКО
+ПОПОВИЋ СЛАВОЉУБ
+ПОПОВИЋ СЛАВОЉУБ
+ПОПОВИЋ СЛОБОДАН
+ПОПОВИЋ СЛОБОДАН
+ПОПОВИЋ СЛОБОДАН
+ПОПОВИЋ СЛОБОДАН
+ПОПОВИЋ СМИЉАНА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОФИЈА
+ПОПОВИЋ СОЊА
+ПОПОВИЋ СПАСОЈЕ
+ПОПОВИЋ СТАНИМИР
+ПОПОВИЋ СТАНИМИР
+ПОПОВИЋ СТАНКО
+ПОПОВИЋ СТАНКО
+ПОПОВИЋ СТАНКО
+ПОПОВИЋ СТЕВАН ДР
+ПОПОВИЋ СТЕВАН
+ПОПОВИЋ СТЕВАН
+ПОПОВИЋ СТЕВАН
+ПОПОВИЋ СТЕВКА
+ПОПОВИЋ СТЕВО
+ПОПОВИЋ СТОЈАН
+ПОПОВИЋ СВЕТИСЛАВ
+ПОПОВИЋ СВЕТЛАНА
+ПОПОВИЋ СВЕТОЗАР
+ПОПОВИЋ ТЕОДОР
+ПОПОВИЋ ТЕРЕЗА
+ПОПОВИЋ ТОДОР
+ПОПОВИЋ ТОМИСЛАВ
+ПОПОВИЋ ТОМО
+ПОПОВИЋ УГЉЕША
+ПОПОВИЋ ВАСИЛИЈЕ
+ПОПОВИЋ ВАСИЛИЈЕ
+ПОПОВИЋ ВЕЛИМИР
+ПОПОВИЋ ВЕЛИЗАР
+ПОПОВИЋ ВЕЉКО
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРА
+ПОПОВИЋ ВЕРИЦА
+ПОПОВИЋ ВЕСЕЛИН
+ПОПОВИЋ ВИДОЈЕ
+ПОПОВИЋ ВИДОСАВА
+ПОПОВИЋ ВИКТОРИЈА
+ПОПОВИЋ ВЛАДАН
+ПОПОВИЋ ВЛАДИМИР ДР
+ПОПОВИЋ ВЛАДИМИР
+ПОПОВИЋ ВЛАДИМИР
+ПОПОВИЋ ВЛАДИМИР
+ПОПОВИЋ ВЛАДИМИР
+ПОПОВИЋ ВЛАДИСЛАВ
+ПОПОВИЋ ВЛАДО
+ПОПОВИЋ ВОЈИН
+ПОПОВИЋ ВОЈИН
+ПОПОВИЋ ВОЈИСЛАВ
+ПОПОВИЋ ВУЧИНА
+ПОПОВИЋ ВУЧКО
+ПОПОВИЋ ВУЈАДИН
+ПОПОВИЋ ВУКАДИН
+ПОПОВИЋ ВУКАДИН
+ПОПОВИЋ ВУКОСАВА
+ПОПОВИЋ ЗДЕНКО
+ПОПОВИЋ ЗДРАВКА
+ПОПОВИЋ ЗЛАТОЈА
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРАН
+ПОПОВИЋ ЗОРКА
+ПОПОВИЋ ЗУЗАНА
+ПОПОВИЋ ЗВОНИМИР
+ПОПОВИЦКИ ЖАРКО
+ПОПОВИЦКИ БОРИСЛАВ
+ПОПОВИЦКИ ЈОВАНКА
+ПОПОВИЦКИ ЉУБОМИР
+ПОПОВИЦКИ МИЛЕНКО
+ПОПОВИЦКИ МИЛЕНКО
+ПОПОВИЦКИ МИЛИЦА
+ПОПОВИЦКИ МИЛОШ
+ПОПОВИЦКИ ПЕТАР
+ПОПОВИЦКИ РАДОМИР
+ПОПОВИЦКИ РАДОМИР
+ПОПОВИЦКИ САЛОМА
+ПОПОВИЦКИ СВЕТИСЛАВ
+ПОПОВИЦКИ ТАТЈАНА
+ПОПОВИЦКИ ТЕОДОР
+ПОПОВИЦКИ ВЛАДИСЛАВ
+ПОПОВИЦКИ ЗОРАН
+ПОПОВСКИ РАДОЈКА
+ПОПОВСКИ ВЕНКО
+ПОПРЖАН МИЛАН
+ПОПРЖАН НИКОЛА
+ПОПРЖАН ВАЛЕНТИНА
+ПОПРЖЕН БОРИВОЈ
+ПОПСАВИН ДУШАН
+ПОПСАВИН ВЕЛИМИР
+ПОПТЕШИН ЂОРЂЕ
+ПОПТЕШИН ЛАЗАР ДИПЛ ПРАВНИК
+ПОПТЕШИН МИЛАДИНКА
+ПОПТЕШИН СТЕВАН
+ПОРЧА ЉИЉАНА
+ПОРЧА РАМИЗ
+ПОРОШИН ДРАГИЊА
+ПОРОШИН ГЕОРГИЈЕ ДР ЛЕКАР
+ПОРОБИЋ МИЛАН
+ПОРОБИЋ МИРОСЛАВ
+ПОРОБИЋ МИРОСЛАВ
+ПОРОБИЋ НИЈАЗ
+ПОРОБИЋ НИКОЛА
+ПОРОБИЋ СЛОБОДАН
+ПОРОПАТ БОШКО
+ПОРОПАТИЋ ЗОРА
+ПОСАВАЦ ВЈЕКОСЛАВ
+ПОСЛАН ИВАН
+ПОСТОЛОВИЋ СТАНИМИР
+ПОТ ФРАЊА
+ПОТ ЈОСИП
+ПОТ МИРКО ДИПЛ ИНГ
+ПОТАИ ЛАДИСЛАВ
+ПОТХ ЉУДЕВИТ
+ПОТИЋ МАРИЈЕЛА
+ПОТИЋ РАДИВОЈЕ
+ПОТИЋ РАДОМИР
+ПОТКОЊАК ЈОВАН
+ПОТКОЊАК МАРА
+ПОТКОЊАК НИКОЛА
+ПОТКОЊАК ПЕТАР
+ПОТКОЊАК СОФИЈА
+ПОТКОЊАК СТАНКО
+ПОТКОЊАК СТЕВО
+ПОТКОЊАК ВЛАДО
+ПОТКОЗАРАЦ ЈУЛИЈАНА
+ПОТНЕР ТЕРЕЗИЈА
+ПОТОКОВИЋ АБДУЛАХ
+ПОТОКОВИЋ СМАЈО
+ПОТПАРИЋ ЈЕЛИЦА
+ПОТРАН МИША
+ПОТРЕБИЋ ЂУРО
+ПОТРЕБИЋ ДОБРИЛА
+ПОТРЕБИЋ ДРАГИЦА
+ПОТРЕБИЋ МИЛЕ
+ПОТРЕБИЋ МИЛЕ
+ПОТРЕБИЋ МИЛИЦА
+ПОТРЕБИЋ НИКОЛА
+ПОТРЕБИЋ РАДЕ
+ПОТРЕБИЋ СЛАВКО
+ПОТРЕБИЋ СОФИЈА
+ПОТУРИЋ СТЕВА
+ПОУЧКИ РАДИСЛАВ
+ПОВА МИРОСЛАВА
+ПОВАЖАН АНДРИЈА
+ПОВАЖАН МАРИЈА
+ПОВАЗАИ ИШТВАН
+ПОВАЗАИ ТИБОР
+ПОВИЋ МИЛАН
+ПОВРЖАН СИМО
+ПОЗДАН ЂУРО
+ПОЗДЕР ВЕРОНА
+ПОЗДЕРЕЦ ФРАНЦ
+ПОЗНАНОВИЋ ДЕЈАН
+ПОЗНАНОВИЋ ЈЕЛЕНА
+ПОЗНАНОВИЋ ЉУБОМИР
+ПОЗНАНОВИЋ МИЛАН
+ПОЗНАНОВИЋ МИЛАН
+ПОЗНАНОВИЋ МИЛЕНКО
+ПОЗНАНОВИЋ ОБРАД
+ПОЗНАНОВИЋ РАДИВОЈЕ
+ПОЗНИЋ ЂУРО
+ПОЗНИЋ ЈОВО
+ПОЗНИЋ МИРА
+ПОЗНИЋ НИКОЛА
+ПОЗОЈЕВИЋ КЛАРА
+ПОЗОЈЕВИЋ СТЕВАН
+ПРЧИЋ ЈЕЛИСАВЕТА
+ПРЧИЋ СТЈЕПАН
+ПРЧИЋ ТИХОМИР
+ПРЧИЋ ВЛАДИМИР
+ПРША МИРОСЛАВ МР
+ПРША ВЕРА
+ПРЋИЋ ИВАН
+ПРЖАР НАДА
+ПРЖЕВАЉСКИ НИКОЛА
+ПРЖНИЦА МИЛАНА
+ПРЖНИЦА ЗЛАТКО
+ПРАШЧЕВИЋ АНТОНИЈА
+ПРАШЧЕВИЋ ЗОРИЦА
+ПРАШТАЛО МИЛУТИН
+ПРАШТАЛО ПЕТАР
+ПРАЖИЋ БИЉАНА
+ПРАЖИЋ БРАНКО
+ПРАЦНЕР ЈОСИП
+ПРАЦНЕР РУЖИЦА
+ПРАЛИЦА ЉУБОМИР
+ПРАЛИЦА НЕДЕЉКО
+ПРАЛИЦА СТЕВАН
+ПРАЛИЦА СТЕВАН
+ПРАМЕНКО МИРОСЛАВ
+ПРАМЕНКО НЕДЕЉКО
+ПРАМЕНКО РИСТО
+ПРАМЕНКО СРЕТО
+ПРАНИЋ КАТИЦА
+ПРАНИЋ МИРКО
+ПРАНИЋ ПЕТАР
+ПРАНИЋ ТОФИЛ
+ПРАЊИЋ ЗЛАТКО
+ПРАЊКИЋ МАРКО
+ПРАНКИЋ МИЛЕ
+ПРАВДА БОРБАЛА
+ПРАВДА ЛАДИСЛАВ
+ПРАВДА ЛАЈОШ
+ПРАВИЦА ЕВИЦА
+ПРАВИЦА ЉУБОМИР
+ПРДИЋ НЕДЕЉКО
+ПРЕЧАНИЦА БОЖО
+ПРЕШЕРН ЈУЛИЈАНА
+ПРЕШОВА МИРЈАНА
+ПРЕБЕГ ДРАГАН
+ПРЕБИРЧЕВИЋ НЕВЕНА
+ПРЕБИРАЧЕВИЋ КРИСТИНА
+ПРЕБИРАЧЕВИЋ ЛАЗО
+ПРЕДА АУРЕЛ
+ПРЕДИЋ МИХАЈЛО
+ПРЕДИЋ РАДОМИР
+ПРЕДОЈЕВИЋ ЖЕЉКО
+ПРЕДОЈЕВИЋ АНКА
+ПРЕДОЈЕВИЋ БОЖО
+ПРЕДОЈЕВИЋ БОЖО
+ПРЕДОЈЕВИЋ БОРИСЛАВ
+ПРЕДОЈЕВИЋ ДАНИЦА
+ПРЕДОЈЕВИЋ ДРАГИЦА
+ПРЕДОЈЕВИЋ ЉУБОМИР
+ПРЕДОЈЕВИЋ ЛУКА
+ПРЕДОЈЕВИЋ МИЛАН
+ПРЕДОЈЕВИЋ МИЛЕ
+ПРЕДОЈЕВИЋ МИЛИЦА
+ПРЕДОЈЕВИЋ МИЛОРАД
+ПРЕДОЈЕВИЋ МИЛОВАН
+ПРЕДОЈЕВИЋ МИРКО
+ПРЕДОЈЕВИЋ НЕНАД
+ПРЕДОЈЕВИЋ ПАВЛЕ
+ПРЕДОЈЕВИЋ ПРЕДРАГ
+ПРЕДОЈЕВИЋ РАДОСЛАВА
+ПРЕДОЈЕВИЋ СИМА
+ПРЕДОЈЕВИЋ СИМО
+ПРЕДОЈЕВИЋ СТОЈАН
+ПРЕДОЈЕВИЋ ТРИВО
+ПРЕДОЈЕВИЋ ЗОРА
+ПРЕДОЛАЦ ДРАГОМИР
+ПРЕДОВИЋ ДУШАН
+ПРЕДРАШКИ ДРАГОЉУБ
+ПРЕДРАГОВИЋ БОРА
+ПРЕДРАГОВИЋ ДЕСИМИР
+ПРЕДРАГОВИЋ МАРИЈА
+ПРЕДРАГОВИЋ НОВАК
+ПРЕДРАГОВИЋ ВЕСЕЛКО
+ПРЕДРАГОВИЋ ВЕСНА
+ПРЕДРАГОВИЋ ЗВЕЗДАН ДИПЛ ИНГ
+ПРЕГУН ЂУРА
+ПРЕГУН НИКОЛА
+ПРЕГУН ПЕТАР
+ПРЕГУН СТЕВАН
+ПРЕГУН ЗОРА
+ПРЕКАЈАЦ ЖИВОЈИН
+ПРЕКАЈАЦ СЛАВКО
+ПРЕКАЈСКИ БРАНКО
+ПРЕКАЈСКИ МИРЈАН
+ПРЕКИЋ АНЂЕЛКА
+ПРЕКОДРАВАЦ НЕВЕНКА
+ПРЕКОГАЧИЋ ЂОРЂЕ
+ПРЕКОГАЧИЋ ДАНИЦА
+ПРЕКОГАЧИЋ ИЛИЈА
+ПРЕКОГАЧИЋ ВЕРА
+ПРЕКОП ЈОЖЕФ
+ПРЕКОП РАДОЈКА
+ПРЕКПАЉАЈ БИБА
+ПРЕКПАЉАЈ КОЉА
+ПРЕКПАЉАЈ МАРТИН
+ПРЕКПАЉАЈ ПЈЕТЕР
+ПРЕЛ МАРИЈА
+ПРЕЛЕВИЋ БОРИСЛАВ
+ПРЕЛЕВИЋ МАРКО
+ПРЕЛЕВИЋ МИЛАН
+ПРЕЛЕВИЋ МИЛОШ
+ПРЕЛЕВИЋ РАДОМИР
+ПРЕЛЕВИЋ СЕНКА
+ПРЕЛЕВИЋ ВАСИЛИЈЕ
+ПРЕЛИЋ МИЛОЈКА
+ПРЕЛИЋ ВАСА
+ПРЕЛИЋ ЗАГОРКА
+ПРЕМИЋ ПЕТАР
+ПРЕМИЋ ВАСА
+ПРЕМОВИЋ ДАНИЦА
+ПРЕМОВИЋ РАДОМИР
+ПРЕМОВИЋ ТОМИСЛАВ
+ПРЕМУШ ФРАЊА
+ПРЕМУЖИЋ ДАМИР
+ПРЕМУЖИЋ МАТО
+ПРЕМУЖИЋ ВЛАДИМИР
+ПРЕНДОВИЋ ПАЉУШ
+ПРЕНТОВИЋ ДРАГАН
+ПРЕНТОВИЋ ДРАГАН
+ПРЕНТОВИЋ МИЛАН
+ПРЕНТОВИЋ ПАВЛЕ
+ПРЕНТОВИЋ ПЕТАР
+ПРЕНТОВИЋ РИСТО
+ПРЕНТОВИЋ ВАСО
+ПРЕРАД ДОБРИЛА
+ПРЕРАДОВ ДИНКА
+ПРЕРАДОВ ДРАГИЦА
+ПРЕРАДОВ ДУБРАВКА
+ПРЕРАДОВ ГАВРА
+ПРЕРАДОВ ЛАЗАР
+ПРЕРАДОВ ЛЕПОСАВА
+ПРЕРАДОВ МАРИЈА
+ПРЕРАДОВ МИРЈАНА
+ПРЕРАДОВ МИРЈАНА
+ПРЕРАДОВ НЕДЕЉКО
+ПРЕРАДОВ ПЕТАР
+ПРЕРАДОВ САВА
+ПРЕРАДОВ ВЕЛИЗАР
+ПРЕРАДОВ ВЛАДИМИР
+ПРЕРАДОВИЋ АНА
+ПРЕРАДОВИЋ БОЈА
+ПРЕРАДОВИЋ МИЛЕНКО
+ПРЕРАДОВИЋ МЛАДЕН
+ПРЕРАДОВИЋ НЕДЕЉКО
+ПРЕРАДОВИЋ НЕДЕЉКО
+ПРЕСЕЧКОВИЋ ВЕСНА
+ПРЕТМЕРСКИ ЈОВАН
+ПРЕТМЕРСКИ СТЕВАН
+ПРЕВЕДЕН ЛЕО
+ПРГОМЕЉА НИКОЛА
+ПРИШИЋ КАТИЦА
+ПРИШИЋ ЛАЗАР
+ПРИШИЋ ЛИДИЈА
+ПРИШИЋ МИЛОШ
+ПРИШИЋ МИТА
+ПРИШИЋ НАТАЛИЈА
+ПРИШИЋ СТЕВАН
+ПРИБАКОВИЋ КСЕНИЈА
+ПРИБАКОВИЋ МИЛАНА
+ПРИБАКОВИЋ НИКОЛА
+ПРИБАНОВИЋ ТОМИСЛАВ
+ПРИБИЧЕВИЋ АРСЕНИЈЕ
+ПРИБИЧЕВИЋ САВКА
+ПРИБИЧЕВИЋ СВЕТОЗАР ДР ИНГ
+ПРИБИШ СТЕВАН
+ПРИБИШЕВ МИРЈАНА
+ПРИБИШИЋ ЉУБО
+ПРИБИШИЋ МИРОСЛАВ
+ПРИБИШИЋ РИСТИЊА
+ПРИБИШИЋ САВО
+ПРИБИЋ АРСЕНИЈЕ
+ПРИБИЋ ДАНИЛО
+ПРИБИЋ ДИМИТРИЈЕ
+ПРИБИЋ МАРИЈА
+ПРИБИЋ МИЛОЈЕ
+ПРИБИЋ САВА
+ПРИБИЋЕВИЋ ЈОВО
+ПРИБИЋЕВИЋ ОЛГА
+ПРИБИЋЕВИЋ ТАТЈАНА
+ПРИБИЛОВИЋ БРАНКИЦА
+ПРИЦА ЖИВКО
+ПРИЦА АЛЕКСАНДАР
+ПРИЦА БОРИВОЈ
+ПРИЦА БОСИЉКА
+ПРИЦА ДАНИЛО
+ПРИЦА ДУШАН
+ПРИЦА ИСО
+ПРИЦА ЈОВАНКА
+ПРИЦА МАРКО
+ПРИЦА МИЛЕ
+ПРИЦА МЛАДЕН
+ПРИЦА ПЕТАР
+ПРИЦА СОФИЈА
+ПРИЈЕВИЋ ЂОРЂЕ
+ПРИЈЕВИЋ МИЛАН
+ПРИЈИЋ МИЛАН
+ПРИЈИЋ МИРСАД
+ПРИЈОВИЋ БОГДАН
+ПРИЈОВИЋ ДРАГАН
+ПРИЈОВИЋ СТАНИША
+ПРИКЕЛ ПЕТАР
+ПРИКИДАНОВИЧ ЛАСЛО
+ПРИКИДАНОВИЋ АНА
+ПРИЉЕВА БОРИСЛАВ
+ПРИМОРАЦ НИКОЛА
+ПРИМОВИЋ БЛАГОЈЕ
+ПРИМОВИЋ ДЕЈАН
+ПРИМОВИЋ ДОБРИЦА
+ПРИМОВИЋ ГОРДАНА
+ПРИМОВИЋ КОВИНКА
+ПРИМОВИЋ МИЛАН
+ПРИМОВИЋ СТОЈАН
+ПРИНЦИП ЈОЗО
+ПРИСЕЛАЦ БОРИС
+ПРИСЕЛАЦ БРАНКО
+ПРИСЕЛАЦ ЗДРАВКО
+ПРИСЛАН ЗВОНИМИР
+ПРИСТАИ ЛАДИСЛАВ
+ПРИВРОДСКИ БОРИС ДР
+ПРИВРОДСКИ КОНСТАНТИН
+ПРКУШИЋ АНИЦА
+ПРКУШИЋ СЛАВКО
+ПРЛЕВИЋ СТОЈАН
+ПРЛИНАЦ ВЕЉКО
+ПРЉЕВИЋ НАДА
+ПРОЧИКЕВИЋ АНКА
+ПРОШИЋ БОГДАН
+ПРОШИЋ ЈОВАН
+ПРОШИЋ НЕЂО
+ПРОШИЋ НЕЂО
+ПРОШИЋ НЕБОЈША
+ПРОШИЋ НИКОЛА
+ПРОШИЋ ПЕТАР
+ПРОШИЋ СМИЉА
+ПРОБОЈЧЕВИЋ АНТУН
+ПРОБОЈЧЕВИЋ ЕРНЕСТ
+ПРОБОЈЧЕВИЋ МАРИЈА
+ПРОБОЈЧИЋ БРАНИСЛАВА
+ПРОДАНА КРСТАН
+ПРОДАНИЋ БОРИСЛАВ
+ПРОДАНИЋ МИЛАН
+ПРОДАНОВ АНЂЕЛКА
+ПРОДАНОВ БЛАГОЈА
+ПРОДАНОВ БОРА
+ПРОДАНОВ ДАНИЛО
+ПРОДАНОВ ДРАГОЉУБ
+ПРОДАНОВ ДРАГОЉУБ
+ПРОДАНОВ ДРАГОСЛАВ
+ПРОДАНОВ ДУШАН
+ПРОДАНОВ ГОРИЦА
+ПРОДАНОВ ИЛИЈА
+ПРОДАНОВ ЈОВАН
+ПРОДАНОВ ЈУСТИНА
+ПРОДАНОВ МИЛАН
+ПРОДАНОВ МИЛЕНА
+ПРОДАНОВ МИЛЕНКО
+ПРОДАНОВ МИОДРАГ
+ПРОДАНОВ МЛАДЕН
+ПРОДАНОВ НЕДЕЉКО
+ПРОДАНОВ РАДОСЛАВ
+ПРОДАНОВ САВА
+ПРОДАНОВ СЛАВКА ДР
+ПРОДАНОВ ЗУЗАНА
+ПРОДАНОВИЋ ШПИРО
+ПРОДАНОВИЋ ЖАРКО
+ПРОДАНОВИЋ ЖЕЉКО
+ПРОДАНОВИЋ ЖИВАН
+ПРОДАНОВИЋ ЖИВКА
+ПРОДАНОВИЋ ЖИВКО
+ПРОДАНОВИЋ ЂОКА
+ПРОДАНОВИЋ ЂОРЂЕ
+ПРОДАНОВИЋ ЂОРЂЕ
+ПРОДАНОВИЋ ЂОРЂЕ
+ПРОДАНОВИЋ ЂУРО
+ПРОДАНОВИЋ АЛЕКСАНДАР
+ПРОДАНОВИЋ АНЂЕЛКО
+ПРОДАНОВИЋ БИЉАНА
+ПРОДАНОВИЋ БОРИСЛАВ
+ПРОДАНОВИЋ БОСИЉКА
+ПРОДАНОВИЋ БРАНИМИР
+ПРОДАНОВИЋ ДАМЈАН
+ПРОДАНОВИЋ ДАНИЦА
+ПРОДАНОВИЋ ДАНИЦА
+ПРОДАНОВИЋ ДАНИЛКА
+ПРОДАНОВИЋ ДРАГАН
+ПРОДАНОВИЋ ДРАГАН
+ПРОДАНОВИЋ ДРАГАН
+ПРОДАНОВИЋ ДУШАНКА
+ПРОДАНОВИЋ ДУШАН
+ПРОДАНОВИЋ ДУШАН
+ПРОДАНОВИЋ ДУШИЦА
+ПРОДАНОВИЋ ГАВРА
+ПРОДАНОВИЋ ЈОВАНКА
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ ЈОВАН
+ПРОДАНОВИЋ КОСТА
+ПРОДАНОВИЋ КОСТА
+ПРОДАНОВИЋ ЛАЗАР ДИПЛ ИНГ
+ПРОДАНОВИЋ ЉУБИЦА
+ПРОДАНОВИЋ ЉУБИНКА
+ПРОДАНОВИЋ ЉУБОЈА
+ПРОДАНОВИЋ ЉУБОМИР
+ПРОДАНОВИЋ МАРТА
+ПРОДАНОВИЋ МИЛАН
+ПРОДАНОВИЋ МИЛАН
+ПРОДАНОВИЋ МИЛАН
+ПРОДАНОВИЋ МИЛАН
+ПРОДАНОВИЋ МИЛИЦА
+ПРОДАНОВИЋ МИЉКО
+ПРОДАНОВИЋ МИЛОРАД
+ПРОДАНОВИЋ МИЛОВАН
+ПРОДАНОВИЋ МИОДРАГ
+ПРОДАНОВИЋ МИОДРАГ
+ПРОДАНОВИЋ МИРА
+ПРОДАНОВИЋ МИРЈАНА
+ПРОДАНОВИЋ МИРОСЛАВ
+ПРОДАНОВИЋ МЛАДЕН
+ПРОДАНОВИЋ НИКОЛА
+ПРОДАНОВИЋ-ПАЊКОВИЋ ЂУРЂИНКА
+ПРОДАНОВИЋ ПАВА
+ПРОДАНОВИЋ ПАВЛЕ
+ПРОДАНОВИЋ ПЕТАР
+ПРОДАНОВИЋ ПЕТАР
+ПРОДАНОВИЋ ПЕТАР
+ПРОДАНОВИЋ РАДИСАВ
+ПРОДАНОВИЋ РАДОСЛАВ
+ПРОДАНОВИЋ РАТКО
+ПРОДАНОВИЋ РОДОЉУБ
+ПРОДАНОВИЋ САВА
+ПРОДАНОВИЋ СИНИША
+ПРОДАНОВИЋ СИНИША
+ПРОДАНОВИЋ СЛАВКО
+ПРОДАНОВИЋ СЛОБОДАН
+ПРОДАНОВИЋ СЛОБОДАН
+ПРОДАНОВИЋ СТАНА
+ПРОДАНОВИЋ ТАНАСИЈЕ
+ПРОДАНОВИЋ ВАСА
+ПРОДАНОВИЋ ВАСА
+ПРОДАНОВИЋ ВЕЛИНКА
+ПРОДАНОВИЋ ВЕЉКО
+ПРОДАНОВИЋ ВЕРА ДР
+ПРОДАНОВИЋ ВИДОСАВА
+ПРОДАНОВИЋ ВЛАДИМИР
+ПРОДАНОВИЋ ЗАГОРКА
+ПРОДАНОВИЋ ЗАГОРКА
+ПРОДАНОВИЋ ЗОРАН
+ПРОДИЋ ДАНИЦА
+ПРОДИЋ ВИДА
+ПРОДИЋ ВИТОМИР
+ПРОДИЋ ВИТОМИР
+ПРОФОНТАРОВИЋ РОЗАЛИЈА
+ПРОХАСКА МИЛЕНКО
+ПРОХАСКА НИКОЛА
+ПРОХАСКА СТЕВАН
+ПРОХАСКА ВЕРА
+ПРОЈКОВСКИ ДЕСПА
+ПРОКЕШ БЕЛА
+ПРОКЕШ ЛАДИСЛАВ
+ПРОКИЋ ЂОРЂЕ
+ПРОКИЋ ГОРАН
+ПРОКИЋ МИЛАН
+ПРОКИЋ МИРА
+ПРОКИЋ РУЖИЦА
+ПРОКИЋ СТЕВАН
+ПРОКИЋ СТЕВАН
+ПРОКИЋ ЗОРАН
+ПРОКИЋ ЗОРАН
+ПРОКИН АНЂЕЛКА
+ПРОКИН БРАНИСЛАВ
+ПРОКИН КСЕНИЈА
+ПРОКИН ЛАЗАР
+ПРОКИН МАРКО
+ПРОКИН МИРА
+ПРОКИН РАДИВОЈ
+ПРОКИН РУЖИЦА
+ПРОКИН СТЕВАН
+ПРОКИН СТЕВАН
+ПРОКИН ЗЛАТИНКА
+ПРОКИН ЗОРА
+ПРОКОПЕЦ ДУШАН
+ПРОКОПЕЦ ХЕЛЕНА
+ПРОКОПЕЦ ЈЕЛИСАВЕТА
+ПРОКОПЕЦ СТЕВАН
+ПРОКОПИЋ ЧЕДО
+ПРОКОПИЋ МИХАЈИЛО
+ПРОКОПИЋ СТОЈАН
+ПРОЛЕ ЦВИЈО
+ПРОЛЕ ЈАГОДА
+ПРОЛЕ МЕЛАНИЈА
+ПРОЛЕ МИЛЕНКО
+ПРОЛЕ МИЛИЈАНА
+ПРОЛЕ МИЛОШ
+ПРОЛЕ МИРКО
+ПРОЛЕ МИРОСЛАВ
+ПРОЛЕ МИТАР
+ПРОЛЕ МИТАР
+ПРОЛЕ МЛАДЕН
+ПРОЛЕ РАДОВАН
+ПРОЛЕ РИСТА
+ПРОЛЕ СТАНИСЛАВ
+ПРОЛЕ СТАНКО
+ПРОЛЕ УГЉЕША
+ПРОЛЕ ВЕЉКО
+ПРОЛЕ ВЕРОНА
+ПРОЛИЋ ДРАГИЦА
+ПРОЛИЋ МИЛОРАД
+ПРОЛИЋ ПЕРО
+ПРОЛИЋ ВИД
+ПРОСЕНИЦА МАРКО
+ПРОСЕНИЦА ВИДОСАВА
+ПРОСЕНИК ДУБРАВКО
+ПРОСЕНИК ЗВОНИМИР
+ПРОСТРАН ЧЕДОМИР
+ПРОСТРАН ПЕТАР
+ПРОТИЋ ЖАРКО
+ПРОТИЋ ЂОКА
+ПРОТИЋ ЂОРЂЕ
+ПРОТИЋ БОСИЉКА
+ПРОТИЋ БРАНИСЛАВ
+ПРОТИЋ ДРАГАН
+ПРОТИЋ ДУШАН
+ПРОТИЋ ИЛИЈА ДИПЛ ИНГ
+ПРОТИЋ ЈОСИМ
+ПРОТИЋ МАРИЈА
+ПРОТИЋ МИЛЕНА ДР СТОМАТОЛОГ
+ПРОТИЋ МИЛКА
+ПРОТИЋ-МИЛОШЕВИЋ СИМКА ПРОФ
+ПРОТИЋ МИЛОШ
+ПРОТИЋ МИЛОРАД
+ПРОТИЋ МИРЈАНА
+ПРОТИЋ МИТАР
+ПРОТИЋ НАДА
+ПРОТИЋ ОБРАД
+ПРОТИЋ ПРЕДРАГ
+ПРОТИЋ ПУНИША
+ПРОТИЋ РАДОМИР
+ПРОТИЋ САМУИЛО
+ПРОТИЋ СМИЉА
+ПРОТИЋ ВИДА
+ПРОТИЋ ВИТОМИР
+ПРОВЧИ АГАФИЈА
+ПРОВЧИ ЕВГЕНИЈЕ ДИПЛ ИНГ
+ПРОВЧИ ЈОВГЕН
+ПРОВЧИ ВЕРА
+ПРПА АНЂА
+ПРПА ГОСПА
+ПРПА ЛАЗАР
+ПРПА МАРГИТА
+ПРПА МИЛОВАН
+ПРПА ВЕЉКО
+ПРПА ЗАГОРКА
+ПРПИЋ АЛЕКСАНДАР
+ПРПИЋ АЛЕКСАНДАР
+ПРПИЋ АЛЕКСАНДАР
+ПРПИЋ МАРИЈАНА
+ПРПИЋ НИКОЛА
+ПРПИЋ РАДОВАН
+ПРСКАЛО БЛАГО
+ПРСТОЈЕВИЋ ГОРАН
+ПРСТОЈЕВИЋ ВОЈИСЛАВ
+ПРТИНА БРАНКО
+ПРУЖАРЕВ ТАТЈАНА
+ПРУДАН-ЂУРИШИЋ РАДОЈКА ДР
+ПРУГИЋ ЉУБОМИР
+ПРУГИЋ ВОЈИСЛАВ
+ПРУГИНИЋ ЉУБИЦА
+ПРУНИЋ ЈОВАН
+ПРУСИНА ДРАГО
+ПРУСИНА ИЛИЈА
+ПРУСИНА МАРГИТА
+ПРУСИНА МИЛАН
+ПРУСИНА ВЛАТКО
+ПРВАНОВ БРАНИСЛАВ
+ПРВАНОВ ДАРИНКА
+ПРВАНОВ ДИВНА
+ПРВАНОВ МИЛОШ
+ПРВАНОВ ВЛАДИМИР
+ПРВАНОВИЋ МИЛЕВА
+ПСОДАРОВ БРАНКО
+ПСОДОРОВ МАЈА
+ПСОДОРОВ СПАСОЈЕ
+ПСОДОРОВ ТАМАРА
+ПТИЧАР ЂУРА
+ПТИЧАР МИЛАН
+ПУШАЦ БРАНКО
+ПУШАЦ ЈЕЛЕНКО
+ПУШАЦ МИЛЕНА
+ПУШАЦ МИЛЕНА
+ПУШАРА ЂОРЂЕ
+ПУШАРА БОЖИДАР
+ПУШАРА ДУШАН
+ПУШАРА ЈЕЛЕНА
+ПУШАРА МИЛИВОЈ
+ПУШАРА МИРКО
+ПУШАРА МИРОСЛАВ
+ПУШАРА РАДМИЛА
+ПУШЕЉИЋ ЈЕЛЕНА
+ПУШЕЊАК МАРИЈА
+ПУШИЋ ДРАГОЉУБ
+ПУШИЋ ДУШАН
+ПУШИЋ ЕМИЛ
+ПУШИЋ ГОРАН
+ПУШИЋ ЈОВАН
+ПУШИЋ ЉУБИНКО
+ПУШИЋ МИЛЕНА
+ПУШИЋ МИЛИЦА
+ПУШИЋ МИЛИВОЈ
+ПУШИЋ МИЛОШ
+ПУШИЋ НИКОЛА
+ПУШИЋ ОБРАД
+ПУШИЋ ПАВЛЕ
+ПУШИЋ САВА
+ПУШИЋ САВА
+ПУШИЋ СОФИЈА
+ПУШИЋ СТЕВАН
+ПУШИЋ ВЕРИЦА
+ПУШИЋ ВЕРИЦА
+ПУШИЋ ЗАГОРКА
+ПУШИБРК ЦВЕТКО
+ПУШИБРК ВАСА
+ПУШИН МИРЈАНА
+ПУШИН МИРОСЛАВ
+ПУШИН МИРОСЛАВ
+ПУШИН ВЛАДА
+ПУШКАШ ЂУРА
+ПУШКАШ ЂУРА
+ПУШКАШ ЦИЛА
+ПУШКАШ ЈОЖЕФ
+ПУШКАШ ЈОАКИМ
+ПУШКАШ ЈУЛИЈАН
+ПУШКАШ МИХАЈЛО
+ПУШКАШ МИЛЕНА
+ПУШКАШ МИРОСЛАВ
+ПУШКАШ ОЛЕНА
+ПУШКАШ ОНУФРИЈЕ
+ПУШКАШ ПЕТАР
+ПУШКАШ РОЗАЛИЈА
+ПУШКАШ СТЕВАН
+ПУШКАШ ВЕРА
+ПУШКАШ ВЛАДИМИР
+ПУШКАШ ВЛАДИМИР
+ПУШКАР ЈОВИЦА
+ПУШКАР СТЕВА
+ПУШКАР ВОЈИСЛАВ
+ПУШКАРЕВИЋ ЈОВАНКА
+ПУШКАРЕВИЋ СВЕТИСЛАВ
+ПУШКАРИЋ АНА
+ПУШКАРИЋ ИВАН
+ПУШКАРИЋ ЈУРЕ
+ПУШКАРИЋ МАРИЈА
+ПУШКАРОВ ДАНИЛКА
+ПУШКАРОВ ДАНИЛКА
+ПУШКАРОВ МИЛАН
+ПУШКАРОВ ЗОРА
+ПУШКОВИЋ АНЂЕЛКО
+ПУШТРИЋ МИЛАН
+ПУШТРИЋ СПАСОЈЕ
+ПУЖ-ЕВИЋ ОЛГА
+ПУЖИЋ ВЕРА
+ПУЂА ЛЕПОСАВА
+ПУАЧ СВЕТИСЛАВ
+ПУАЧ СВЕТОЗАР
+ПУАЧА ВЕЉКО ДР
+ПУЦАР ЂУРО
+ПУЦАР ДУШАН
+ПУЦАР МИЛИЦА
+ПУЦАР СТЕВО
+ПУЦАР ВАСИЛИЈЕ
+ПУЦАР ВАСО
+ПУЦАР ЗДРАВКО
+ПУЦАРЕВИЋ ЖИВКО
+ПУЦАРЕВИЋ БОСИЉКА
+ПУЦАРЕВИЋ ГОЈКО
+ПУЦАРЕВИЋ ХИЛДА
+ПУЦАРЕВИЋ ЈЕЛА
+ПУЦАРЕВИЋ НОВАК
+ПУЦАРЕВИЋ СОФИЈА
+ПУЦОВСКИ ЂУРО
+ПУДАР ДАНИЛО
+ПУДАР ГОЈКО
+ПУДАР РАЈКО
+ПУДАР РАНКО
+ПУДАР РАНКО
+ПУДАР РАНКО
+ПУДАР РАТКО
+ПУДАР СЛОБОДАН
+ПУДАР СТЕВАН
+ПУДАР ЗДРАВКО
+ПУДИЋ ИЛИЈА
+ПУДИЋ ЈОЗА
+ПУДРЉА БРАНКО
+ПУГАР АНЂЕЛКА
+ПУХАЧА СТЕВО
+ПУХАЛАК БЕРТА
+ПУХАЛАК ЛАСЛО ДР ЛЕКАР
+ПУХАЛАК СТЕВАН
+ПУХАН ОСКАР
+ПУХАНИЋ ТЕРЕЗА
+ПУХАР ДУШАН
+ПУХАР ФРАНЦ
+ПУИЋ ЂОРЂЕ
+ПУИЋ РАДОСЛАВ
+ПУЈА ФЛОРИН
+ПУЈИЋ МИЛИВОЈ
+ПУЈИЋ МИЛОШ
+ПУЈИЋ НАДЕЖДА
+ПУЈИЋ ПЕРСИДА ДИПЛ ИНГ
+ПУЈИЋ САВА
+ПУЈИЋ СТЕВАН
+ПУЈИН ЛАЗА
+ПУЈИН РАДЕ
+ПУЈИН РАДИВОЈЕ
+ПУЈИН СТЕВАН
+ПУЈИН ВЛАСТА ДР
+ПУЛАИ ЛАЈОШ
+ПУЛЕТИЋ ЗДРАВКО
+ПУЛИЋ АНТОНИЈА
+ПУЛИЋ ОЛГА
+ПУЛИЋ РАДОЈКА
+ПУЛИСАК ФРАЊА
+ПУЛИСАК ИЛОНКА
+ПУЛИСАК ЈОВАН
+ПУЛИСАК МИХАЈЛО
+ПУЛИСАК НАДЕЖДА
+ПУЛИСАК НИКОЛА
+ПУЉИЗЕВИЋ АНТУН ДИПЛ ИНГ
+ПУНДОВ АНДРЕЈ
+ПУНГУЛ ЈОВИЦА
+ПУНГУЛ МИРА
+ПУПАВАЦ ЂОРЂЕ
+ПУПАВАЦ БРАНКО
+ПУПАВАЦ БРАНКО
+ПУПАВАЦ ФРАЊА
+ПУПАВАЦ МИЛАН
+ПУПАВАЦ ПЕТАР
+ПУПАВАЦ СТАКА
+ПУПАВАЦ СТЕВАН
+ПУПАВАЦ СТОЈАН
+ПУПАВАЦ ТОДОР
+ПУПАВАЦ ВЕСНА
+ПУПИЋ РАДМИЛА
+ПУПИН ЖИВАН
+ПУПОВАЦ ДМИТАР
+ПУПОВАЦ ДУШАН
+ПУПОВАЦ ЛУКА
+ПУПОВАЦ МИЛОШ
+ПУПОВАЦ МИЛОШ
+ПУПОВАЦ СВЕТЛАНА
+ПУПОВАЦ ТОДОР
+ПУПОВИЋ ЉУБОМИР
+ПУРАЋ ЖИВКО
+ПУРАЋ БРАНКО
+ПУРАЋ ЕРЖЕБЕТ
+ПУРАЋ ЈОВАН
+ПУРАЋ ЛАЗАР
+ПУРАЋ МАГДА
+ПУРАЋ МИЛАДИН
+ПУРАЋ МИЛАДИН
+ПУРАЋ МИЛЕНКО
+ПУРАЋ МИРОСЛАВ
+ПУРАЋ НАДА
+ПУРАЋ ОЛГА
+ПУРИШИЋ ЧЕДО
+ПУРИШИЋ СВЕТЛАНА
+ПУРИЋ БЛАНКА
+ПУРИЋ БОЖО
+ПУРИЋ ДИЈАНА
+ПУРИЋ ДРАГАН
+ПУРИЋ ДРАГИЦА
+ПУРИЋ МИЛАН
+ПУРИЋ СЛОБОДАН
+ПУРИЋ ЗОРА
+ПУРКОВ ВЕСЕЛИН
+ПУРКОВИЋ ЉИЉАНА
+ПУРТИЋ НИКОЛА
+ПУСТАИ ИМРЕ
+ПУСТАИ ЈЕНЕ
+ПУСТАЈИЋ БРАНКА
+ПУСТАЈИЋ РАДА
+ПУСТАЈИЋ ВУКИЦА
+ПУСТИ ЈОСИП
+ПУТАРИЋ ЈОВАН
+ПУТИЋ ЖИВАНА
+ПУТИЋ КАТИЦА
+ПУТИЋ ЛИВИЈА
+ПУТИЋ СЛОБОДАН
+ПУТИЋ СВЕТИСЛАВ
+ПУТИЋ ЗОРАН
+ПУТНИК АЛЕКСАНДАР
+ПУТНИК АЛЕКСАНДАР
+ПУТНИК БОРИСЛАВ
+ПУТНИК БРАНКО
+ПУТНИК ДАНИЛКА
+ПУТНИК ДИМИТРИЈЕ
+ПУТНИК ГЕРТРУДА
+ПУТНИК ГОРАН
+ПУТНИК ИВАН
+ПУТНИК ЈЕЛЕНА
+ПУТНИК КАТИЦА
+ПУТНИК КСЕНИЈА
+ПУТНИК ЉУБИЦА
+ПУТНИК МИЛАН
+ПУТНИК МИЛАН
+ПУТНИК МИЛЕНА
+ПУТНИК МИЛОРАД
+ПУТНИК НЕВЕНКА
+ПУТНИК ПАЈО
+ПУТНИК ПЕТАР
+ПУТНИК ПЕТАР
+ПУТНИК РАДЕ
+ПУТНИК РАДОМИР
+ПУТНИК РАДОВАН
+ПУТНИК СЛОБОДАН ДИПЛ ИНГ
+ПУТНИК СНЕЖАНА
+ПУТНИК СТЕФАНИЈА
+ПУТНИК СТЕВАН
+ПУТНИК СТЕВАН
+ПУТНИК-УРАЧ РЕНАТА
+ПУТНИК ВЛАДИМИР ДР
+ПУТНИК ВЛАДИМИР
+ПУТНИК ЗОРАН
+ПУТНИКОВИЋ ИВАН
+ПУТНИКОВИЋ МИЛЕНА
+ПУТНИКОВИЋ ПИРОШКА
+ПУВАЧА ЉИЉАНА
+ПУВАЛИЋ КАТИЦА
+ПУЗИЋ БИЉАНА
+ПУЗИЋ БОШКО
+ПУЗИЋ БОСА
+ПУЗИЋ ДРАГОМИР
+ПУЗИЋ САВА
+ПУЗИЋ ВЕЉКО
+ПУЗИГАЋА КРИСТИНА
+РАЧИЋ АРАНЂЕЛ
+РАЧИЋ ЛЕПОСАВА
+РАЧИЋ МИЛОШ
+РАЧИЋ МИРОСЛАВ
+РАЧИЋ НАДА
+РАЧИЋ РАНКО
+РАЧИЋ САША
+РАЧИЋ-САВИН ЗОРИЦА
+РАЧИЋ СТОЈАН
+РАЧИЋ ТОМИСЛАВ
+РАЧИЋ ВЕРА
+РАЧИЋ ЗДРАВКО
+РАШЧАНИН БРАНИСЛАВ
+РАШЧАНИН БРАНИСЛАВ
+РАШЧИЋ НЕХРУ
+РАША ДОЈНА
+РАШАЈСКИ ДУШАН
+РАШАЈСКИ ВЕРОСЛАВ
+РАШЕТА ДАНЕ
+РАШЕТА МИОДРАГ
+РАШЕТА МИРЈАНА
+РАШЕТА НИКОЛА
+РАШЕТА ПЕТАР
+РАШЕТА СТЕВА
+РАШЕТА ТОМА
+РАШЕТА ЗДРАВКО
+РАШЕВИЋ ЖАРКО
+РАШЕВИЋ ЖЕЉКО
+РАШЕВИЋ МИОДРАГ
+РАШИЋ БОЖИДАР ДР
+РАШИЋ ДИМИТРИЈЕ
+РАШИЋ ДУШИЦА
+РАШИЋ ИБОЈКА
+РАШИЋ ИГЊАТ
+РАШИЋ ИЛИЈА
+РАШИЋ-КОПЧОК НАДА
+РАШИЋ ЛАЗАР
+РАШИЋ МАНДА
+РАШИЋ МАРИЈА
+РАШИЋ НАДЕЖДА
+РАШИЋ НИКОЛА
+РАШИЋ ПАУН
+РАШИЋ ПЕТАР МР ИНГ
+РАШИЋ СМИЉА
+РАШИЋ СТОЈАН
+РАШИЋ УРОШ
+РАШИЋ ВЕСНА
+РАШИДИ ДОРОТЕЈА
+РАШИДИ СЛОБОДАНКА
+РАШИЈОВАН РАДМИЛА
+РАШИТИ БАЈРАМ
+РАШИТИ ХАВА
+РАШИТИ ИМЕР
+РАШКОВ БРАНКО
+РАШКОВ БРАНКО
+РАШКОВ ДАНИЦА
+РАШКОВ МАРИЈА
+РАШКОВ СМИЉКА
+РАШКОВИЋ ЂОРЂЕ
+РАШКОВИЋ ЂОРЂЕ
+РАШКОВИЋ ДАРИНКА
+РАШКОВИЋ ДРАГАН
+РАШКОВИЋ ДРАГОЉУБ
+РАШКОВИЋ ДРАГОСЛАВА
+РАШКОВИЋ ГОРДАНА
+РАШКОВИЋ МИЛАН
+РАШКОВИЋ МИЛИЦА
+РАШКОВИЋ МИОДРАГ
+РАШКОВИЋ МИРЈАНА
+РАШКОВИЋ МИРЈАНА
+РАШКОВИЋ МЛАДЕН
+РАШКОВИЋ РАДОСАВ
+РАШКОВИЋ СЛОБОДАН
+РАШКОВИЋ СРЕЋКО
+РАШКОВИЋ СТЕВАН
+РАШКОВИЋ ВЕРА
+РАШКОВИЋ ВЛАДИМИР
+РАШОВИЋ РАДОВАН
+РАШОВИЋ ВОЈИСЛАВ
+РАЖНАТОВИЋ РАДИВОЈ
+РАЂЕЛИЋ ГОРДАНА
+РАЂЕЛИЋ МИЛАН
+РАЂЕНОВИЋ ЖЕЉКО
+РАЂЕНОВИЋ ЖЕЉКО
+РАЂЕНОВИЋ БОЖО
+РАЂЕНОВИЋ БОРИС
+РАЂЕНОВИЋ БОСА
+РАЂЕНОВИЋ БРАНКО
+РАЂЕНОВИЋ ДРАГА
+РАЂЕНОВИЋ ДУШАН
+РАЂЕНОВИЋ ДУШАН
+РАЂЕНОВИЋ КАРЛО
+РАЂЕНОВИЋ МАНЕ
+РАЂЕНОВИЋ МИЛАНКО
+РАЂЕНОВИЋ МИЛЕВА
+РАЂЕНОВИЋ МИЛКА
+РАЂЕНОВИЋ МИЛКА
+РАЂЕНОВИЋ НЕБОЈША
+РАЂЕНОВИЋ НИКОЛА
+РАЂЕНОВИЋ СОФИЈА
+РАЂЕНОВИЋ УРОШ
+РАЂЕНОВИЋ ВЕЉКО
+РАЂЕНОВИЋ ЗОРИЦА
+РАЂЕВИЋ САВО
+РАБАЏИЈЕВСКИ ПАУЛА
+РАБАТИЋ МИЛОШ
+РАБИ ЈОЖЕФ
+РАБИЈАЦ СРБА
+РАБРЕНОВИЋ МАРИЈА
+РАБРЕНОВИЋ РАДИСАВ
+РАБРЕНОВИЋ ЗЛАТИНКА
+РАЦ ШАНДОР
+РАЦ АЛБЕРТ
+РАЦ АНА
+РАЦ БРУНО
+РАЦ ЕДМУНД
+РАЦ ФЕРЕНЦ
+РАЦ ФЕРЕНЦ
+РАЦ ФРАЊА
+РАЦ ГАБРИЈЕЛ
+РАЦ ЈАНОШ
+РАЦ ЈЕЛИСАВЕТА
+РАЦ ЈОВАН
+РАЦ ЉИЉАНА
+РАЦ ЉУБОМИР
+РАЦ МАРИЈА
+РАЦ МАРИЈА
+РАЦ МЕЛАНИЈА
+РАЦ ПАЛ
+РАЦ РУДОЛФ
+РАЦ-САБО ЛАЈОШ
+РАЦ СТЕВАН
+РАЦ ТЕОДОР
+РАЦ ВЛАДИМИР
+РАЦ ЗЛАТА
+РАЦА ЂУРО
+РАЦА ДРАГАН
+РАЦА ДРАГАН
+РАЦА ДРАГАН
+РАЦА ДУШАН
+РАЦА ГОРДАНА ДР
+РАЦА МИРКО
+РАЦА ПЕТАР
+РАЦА РУЖИЦА
+РАЦИЋ ЧЕДОМИР
+РАЦИЋ БРАНКО
+РАЦИЋ ДУШАН
+РАЦИЋ МИЛАН
+РАЦИЋ МИЛЕНКО
+РАЦИЋ МИЛИЦА
+РАЦИЋ МИЛИЦА
+РАЦИЋ МИЛОРАД
+РАЦИЋ МИРЈАНА
+РАЦИЋ НЕДЕЉКО
+РАЦИЋ РАДЕНКО
+РАЦИЋ СЛОБОДАН
+РАЦИЋ СЛОБОДАН
+РАЦИЋ ВЕЉКО
+РАЦИЋ ЗДРАВКО
+РАЦИЋ ЗДРАВКО
+РАЦИЋ ЗОРАН
+РАЦКОВ ДАРИНКА
+РАЦКОВ ДРАГОСЛАВ
+РАЦКОВ КАТИЦА
+РАЦКОВ ЛАЗАР
+РАЦКОВ МИЛИЦА
+РАЦКОВ МИЛИВОЈ
+РАЦКОВ МИЛОШ
+РАЦКОВ МИРОСЛАВ
+РАЦКОВ МИРОСЛАВ
+РАЦКОВ НАТАША
+РАЦКОВ ОЛГА
+РАЦКОВ РАДОЈКА
+РАЦКОВ РАДОМИР
+РАЦКОВ РАДОСЛАВ
+РАЦКОВ САВА
+РАЦКОВ СЛОБОДАН
+РАЦКОВ СРЂАН
+РАЦКОВ СРЂАН
+РАЦКОВ СРЂАН
+РАЦКОВ ЗЛАТИЦА
+РАЦКОВИЋ ЂОРЂЕ
+РАЦКОВИЋ ДРАГОМИР
+РАЦКОВИЋ ДУШАН
+РАЦКОВИЋ ЛАЗАР
+РАЦКОВИЋ МИЛАН
+РАЦКОВИЋ МИЛОШ
+РАЦКОВИЋ МИРЈАНА
+РАЦЛЕР ЂЕРЂ
+РАЦЛЕР МАРГИТ
+РАЦО МИЋО
+РАЦО РАТКО
+РАД ПРЕДРАГ
+РАДАШИН ЕЛВИРА
+РАДАШИН ВЛАДИМИР
+РАДАШИН ЗВЕЗДАН
+РАДАК ЂОРЂЕ
+РАДАК ЂУРИЦА
+РАДАК ДУШАН
+РАДАК ДУШАН
+РАДАК ГАВРА
+РАДАК ЈЕЛИСАВЕТА
+РАДАК ЈОВАНКА
+РАДАК ЈОВАН
+РАДАК КОВИНКА
+РАДАК ЛАЗАР
+РАДАК ЛАЗАР
+РАДАК ЉУБИЦА
+РАДАК ЉУБИЦА
+РАДАК ЛУКА
+РАДАК МИЛАДИНКА
+РАДАК МИРОСЛАВ
+РАДАК ОЛГА
+РАДАК РАДМИЛА
+РАДАК СЛАВКО
+РАДАК ЗОРА
+РАДАКОВИЋ ЖИВАН
+РАДАКОВИЋ ЂОРЂЕ
+РАДАКОВИЋ ЂОРЂЕ
+РАДАКОВИЋ ЂУРАЂ
+РАДАКОВИЋ АЛЕКСАНДАР
+РАДАКОВИЋ АНА ДР
+РАДАКОВИЋ БРАНКО
+РАДАКОВИЋ БРАНКО
+РАДАКОВИЋ БРАНКО
+РАДАКОВИЋ ДАМЈАН
+РАДАКОВИЋ ДАРКА
+РАДАКОВИЋ ДИМИТРИЈЕ
+РАДАКОВИЋ ДУШАН
+РАДАКОВИЋ ДУШАН
+РАДАКОВИЋ ИЛИЈА
+РАДАКОВИЋ ИЛИЈА
+РАДАКОВИЋ ЈЕЛЕНА
+РАДАКОВИЋ ЈОВАН
+РАДАКОВИЋ ЈОВАН
+РАДАКОВИЋ ЈОВАН
+РАДАКОВИЋ ЈОВАН
+РАДАКОВИЋ ЛАЗО
+РАДАКОВИЋ ЉИЉАНА
+РАДАКОВИЋ МАНДА
+РАДАКОВИЋ МАНЕ
+РАДАКОВИЋ МИЛАНКО
+РАДАКОВИЋ МИЛАН
+РАДАКОВИЋ МИЛЕНА
+РАДАКОВИЋ МИЛЕ
+РАДАКОВИЋ МИЛЕ
+РАДАКОВИЋ МИЛОЈКА
+РАДАКОВИЋ МИЛОРАД
+РАДАКОВИЋ МИРОСЛАВ
+РАДАКОВИЋ НЕНАД
+РАДАКОВИЋ ПЕТАР
+РАДАКОВИЋ РАДЕ
+РАДАКОВИЋ РАДЕ
+РАДАКОВИЋ РАЈКО
+РАДАКОВИЋ РУЖИЦА
+РАДАКОВИЋ САВА
+РАДАКОВИЋ СМИЉКА
+РАДАКОВИЋ ТЕОДОРА
+РАДАКОВИЋ ВЛАДИМИР
+РАДАКОВИЋ ВЛАДИСЛАВ
+РАДАН ВЕЛИМИР
+РАДАНОВ БИЉАНА
+РАДАНОВ ДРАГОМИР
+РАДАНОВ ДУШАН
+РАДАНОВ ГОСПАВА
+РАДАНОВ ЉУБОМИР АДВОКАТ
+РАДАНОВ ЉУБОМИР
+РАДАНОВ МИРОСЛАВА
+РАДАНОВ НИКОЛА
+РАДАНОВ ОЛИВЕРА
+РАДАНОВ РАДИНКА
+РАДАНОВ РАДИВОЈ
+РАДАНОВ РАДОСЛАВ
+РАДАНОВ ВЕРИЦА
+РАДАНОВИЋ ЖЕЉКО
+РАДАНОВИЋ ЂОРЂЕ
+РАДАНОВИЋ ЂОРЂЕ
+РАДАНОВИЋ ЂУКА
+РАДАНОВИЋ АЛЕКСАНДАР
+РАДАНОВИЋ АНЂЕЛКО
+РАДАНОВИЋ БОЖИДАР
+РАДАНОВИЋ ДИМИТРИЈЕ
+РАДАНОВИЋ ДРАГАН
+РАДАНОВИЋ ДРАГИЦА
+РАДАНОВИЋ ДРАГОМИР
+РАДАНОВИЋ ДРАГОМИР
+РАДАНОВИЋ ДРАГУТИН
+РАДАНОВИЋ ГОЈКО
+РАДАНОВИЋ ИЛИЈА
+РАДАНОВИЋ ЈОВАНКА
+РАДАНОВИЋ ЈОВАН
+РАДАНОВИЋ ЈОВАН
+РАДАНОВИЋ ЈОВАН
+РАДАНОВИЋ КАТА
+РАДАНОВИЋ КОВИЉКА
+РАДАНОВИЋ ЉУБО
+РАДАНОВИЋ МАРИЈА
+РАДАНОВИЋ МИЛАНКО
+РАДАНОВИЋ МИЛАН
+РАДАНОВИЋ МИЛАН
+РАДАНОВИЋ МИЛАН
+РАДАНОВИЋ МИЛЕНКО
+РАДАНОВИЋ МИЛОШ
+РАДАНОВИЋ МИОДРАГ
+РАДАНОВИЋ МИОДРАГ
+РАДАНОВИЋ НЕВЕНКА
+РАДАНОВИЋ НИКОЛА
+РАДАНОВИЋ НИКОЛА
+РАДАНОВИЋ ОБРАД
+РАДАНОВИЋ ПЕТАР
+РАДАНОВИЋ ПЕТАР
+РАДАНОВИЋ РАДИВОЈ
+РАДАНОВИЋ РАДОВАНКА
+РАДАНОВИЋ РАДОВАН
+РАДАНОВИЋ РАЈКО
+РАДАНОВИЋ САША
+РАДАНОВИЋ САВА
+РАДАНОВИЋ СОФИЈА
+РАДАНОВИЋ СОФИЈА
+РАДАНОВИЋ СРЕТЕН
+РАДАНОВИЋ ТРИША
+РАДАНОВИЋ ВИТОМИР
+РАДАТ МАРКО
+РАДАТОВИЋ МАРИЈА
+РАДЕК АНДРАШ
+РАДЕК МАРИЈА
+РАДЕКА ШТЕФКА
+РАДЕКА ДУШКО
+РАДЕКА ЈОВАН
+РАДЕКА МИЛЕ
+РАДЕКА МИЛКА
+РАДЕКА НИКОЛА
+РАДЕКА РАДОВАН
+РАДЕКИН ЉУБИЦА
+РАДЕЛИЋ МИЛАН
+РАДЕНЧИЋ ЈОСИП
+РАДЕНКОВИЋ ЧЕДОМИР
+РАДЕНКОВИЋ ЖИВОЈИН
+РАДЕНКОВИЋ БЛАЖА
+РАДЕНКОВИЋ ДРАГАН
+РАДЕНКОВИЋ ЛЕПОСАВА
+РАДЕНКОВИЋ ЉУБИША
+РАДЕНКОВИЋ МИЛИВОЈЕ
+РАДЕНКОВИЋ МИЛОВАН
+РАДЕНКОВИЋ МИЛОВАН
+РАДЕНКОВИЋ МИОДРАГ
+РАДЕНКОВИЋ НАДА
+РАДЕНКОВИЋ РАДОМИР
+РАДЕНКОВИЋ РАДОСЛАВА
+РАДЕНКОВИЋ РАТОМИР
+РАДЕНКОВИЋ РОЗАЛИЈА
+РАДЕНКОВИЋ СЛОБОДАН
+РАДЕНКОВИЋ ТОМИСЛАВ
+РАДЕНКОВИЋ ВИТОМИР
+РАДЕНКОВИЋ ВЈЕРА
+РАДЕНОВИЋ ОБРЕН
+РАДЕТА СЛАВКО
+РАДЕТА СВЕТОЗАР
+РАДЕТИЋ БОШКО
+РАДЕТИЋ БРАНКО
+РАДЕТИЋ ГОРАН
+РАДЕТИЋ РАДОМИР
+РАДЕТИЋ ВОЈИСЛАВ
+РАДЕВИЋ ЂОРЂЕ
+РАДЕВИЋ ГОРАН
+РАДЕВИЋ ИВАН
+РАДЕВИЋ МИЛЕВА
+РАДЕВИЋ МИЛОШ
+РАДЕВИЋ ВОЈИМИР
+РАДИЧЕВ ЈЕЛИЦА
+РАДИЧЕВ МАРИЈА ДР
+РАДИЧЕВИЋ РАДМИЛА
+РАДИЧЕВИЋ САВА
+РАДИЧЕВИЋ ЗОРАН
+РАДИЧИЋ СМИЉАНА
+РАДИШИЋ ЖИВКО
+РАДИШИЋ ЂОРЂЕ
+РАДИШИЋ АНЂЕЛКА
+РАДИШИЋ БИЉАНА
+РАДИШИЋ БОРИСЛАВ
+РАДИШИЋ БОРИСЛАВ
+РАДИШИЋ БРАНИСЛАВ
+РАДИШИЋ БРАНКА
+РАДИШИЋ БРАНКО
+РАДИШИЋ ДРАГИША
+РАДИШИЋ ДРАГУТИН
+РАДИШИЋ ДУШАН
+РАДИШИЋ ДУШИЦА
+РАДИШИЋ ИЛИЈА
+РАДИШИЋ ЈЕФТА
+РАДИШИЋ ЈЕЛЕНА
+РАДИШИЋ ЈОВАН
+РАДИШИЋ ЈОВО
+РАДИШИЋ КАТИЦА
+РАДИШИЋ ЛАЗАР
+РАДИШИЋ ЛАЗАР
+РАДИШИЋ ЛАЗАР
+РАДИШИЋ ЉИЉАНА
+РАДИШИЋ ЉУБИЦА
+РАДИШИЋ МАРКО
+РАДИШИЋ МИЛАН
+РАДИШИЋ МИЛЕНА
+РАДИШИЋ МИЛЕНКО
+РАДИШИЋ МИЛИЦА
+РАДИШИЋ МИЛИЈАНА
+РАДИШИЋ МИЛУТИН
+РАДИШИЋ МИРОСЛАВА
+РАДИШИЋ МЛАДЕН
+РАДИШИЋ НЕНА
+РАДИШИЋ НИКОЛА
+РАДИШИЋ ОБРАДИН
+РАДИШИЋ ОЛИВЕРА
+РАДИШИЋ ПЕРИЦА
+РАДИШИЋ ПЕРО
+РАДИШИЋ ПЕРСА
+РАДИШИЋ ПЕТАР
+РАДИШИЋ РАДИВОЈ
+РАДИШИЋ РАДМИЛА
+РАДИШИЋ РАДОЈКА
+РАДИШИЋ САВЕТА
+РАДИШИЋ СЛОБОДАН
+РАДИШИЋ СТАНОЈЕ
+РАДИШИЋ СТЕВАН
+РАДИШИЋ СТЕВАН
+РАДИШИЋ СВЕТОЗАР
+РАДИШИЋ ТОДОР
+РАДИШИЋ ВЛАДИМИР
+РАДИШИЋ ВЛАДИМИР
+РАДИШИЋ ЗОРАН
+РАДИЋ ЧЕДА
+РАДИЋ ЖЕЉКО
+РАДИЋ ЖИВАН
+РАДИЋ ЂОРЂЕ
+РАДИЋ ЂОРЂЕ
+РАДИЋ АНЂА
+РАДИЋ АНЂЕЛКО
+РАДИЋ АНДРИЈА ДР
+РАДИЋ АНГЕЛИНА
+РАДИЋ АНКИЦА
+РАДИЋ АНТЕ
+РАДИЋ БОШКО
+РАДИЋ БРАНКА
+РАДИЋ ДОБРИВОЈЕ
+РАДИЋ ДРАГОЉУБ
+РАДИЋ ДУШАН
+РАДИЋ ДУШАН
+РАДИЋ ФРАЊА
+РАДИЋ ФРАЊО
+РАДИЋ ГОЈКО
+РАДИЋ ХРАНИСЛАВ
+РАДИЋ ИЛИЈА
+РАДИЋ ИЛИЈА
+РАДИЋ ИВАНКА
+РАДИЋ ЈОСИП
+РАДИЋ ЈОВАН
+РАДИЋ ЛАЗАР
+РАДИЋ ЉУБИЦА
+РАДИЋ ЉУБОМИР
+РАДИЋ МАРИЈА
+РАДИЋ МИЈА
+РАДИЋ МИЛАНКО
+РАДИЋ МИЛАН
+РАДИЋ МИЛАН
+РАДИЋ МИЛЕ
+РАДИЋ МИЛИВОЈ
+РАДИЋ МИЛИВОЈ
+РАДИЋ МИЛКА
+РАДИЋ МИЛУТИН ДИПЛ ИНГ
+РАДИЋ МИРЈАНА
+РАДИЋ МИРКО
+РАДИЋ МЛАДЕН
+РАДИЋ НЕДЕЉКО
+РАДИЋ НЕНАД
+РАДИЋ ПАВЛЕ
+РАДИЋ ПЕТАР
+РАДИЋ ПЕТАР
+РАДИЋ ПЕТАР
+РАДИЋ ПЕТАР
+РАДИЋ ПЕТАР
+РАДИЋ-ПОПОВИЋ ГОРДАНА
+РАДИЋ ПРЕДРАГ
+РАДИЋ РАДА
+РАДИЋ РАДЕ
+РАДИЋ РОБЕРТ
+РАДИЋ САВА
+РАДИЋ СЛАВИША
+РАДИЋ СЛАВКО
+РАДИЋ СОФИЈА
+РАДИЋ СТАНКО
+РАДИЋ СТЕВАН
+РАДИЋ СТЕВАН
+РАДИЋ СТОЈАН
+РАДИЋ ТИХОМИР
+РАДИЋ ТРИВА
+РАДИЋ ВЕЛИНКА
+РАДИЋ ВЛАДИМИР
+РАДИЋ ЗДРАВКО
+РАДИЋ ЗОРАН
+РАДИЋ ЗОРА
+РАДИЋ ЗОРИЦА
+РАДИБРАТОВИЋ МИЛИЦА
+РАДИБРАТОВИЋ МОМЧИЛО
+РАДИЈЕЉАЦ ЈЕЛЕНА
+РАДИЈЕЉАЦ МОМЧИЛО
+РАДИН ЖИВАН
+РАДИН АЛЕКСАНДАР
+РАДИН АНТОНИЈА
+РАДИН БРАНИСЛАВ
+РАДИН БРАНИСЛАВ
+РАДИН БРАНКО
+РАДИН ДРАГОЈЛА
+РАДИН ХРИСТИНА
+РАДИН ИВАНКА
+РАДИН ЈОВАНКА
+РАДИН ЛАЗАР
+РАДИН ЉУБОМИР ДР ЛЕКАР
+РАДИН ЉУБОМИР
+РАДИН МАКСИМИЛИЈАН
+РАДИН МАРА
+РАДИН МИЛАДИНКА
+РАДИН МИЛАН
+РАДИН МИЛАН
+РАДИН МИЛАН
+РАДИН МИЛАН
+РАДИН МИЛАН
+РАДИН МИЛЕНА
+РАДИН МИЛКА
+РАДИН МИРА
+РАДИН МИРОСЛАВ
+РАДИН МЛАДЕН
+РАДИН НАДА
+РАДИН НИКОЛА ДИПЛ ИНГ
+РАДИН ПЕТАР ДР
+РАДИН РАДА
+РАДИН РАДОСЛАВ
+РАДИН СЛАВИНКА
+РАДИН СЛАВКО
+РАДИН СТЕВАН
+РАДИН СТЕВАН
+РАДИН СВЕТИСЛАВ
+РАДИН ТОМИСЛАВ
+РАДИН ВЕСЕЛИН
+РАДИН ВЛАДИМИР
+РАДИН ЗЛАТОЈЕ
+РАДИН ЗОРАНКА
+РАДИН ЗОРА
+РАДИНОВИЋ ЂОРЂЕ
+РАДИНОВИЋ БУДИМИР
+РАДИНОВИЋ ДИМИТРИЈЕ
+РАДИНОВИЋ ДУШКО
+РАДИНОВИЋ ИЛИЈА
+РАДИНОВИЋ ЛАЗО
+РАДИНОВИЋ МАНОЈЛО
+РАДИНОВИЋ МАРИЈА
+РАДИНОВИЋ МИЛИЦА
+РАДИНОВИЋ МИЛИВОЈ
+РАДИНОВИЋ МИЛОРАД
+РАДИНОВИЋ МИРА
+РАДИНОВИЋ МЛАДЕН
+РАДИНОВИЋ МОМЧИЛО ДИПЛ ПРАВНИК
+РАДИНОВИЋ МОМЧИЛО
+РАДИНОВИЋ НИКОЛА
+РАДИНОВИЋ РАДОСЛАВ
+РАДИНОВИЋ СИЛВАНА
+РАДИНОВИЋ СТЕВАН
+РАДИНОВИЋ ВУКАШИН
+РАДИСАВЉЕВИЋ ЖИВОРАД
+РАДИСАВЉЕВИЋ БОГДАН
+РАДИСАВЉЕВИЋ БОРИВОЈЕ
+РАДИСАВЉЕВИЋ ИВАН
+РАДИСАВЉЕВИЋ МИЛОСАВ
+РАДИСАВЉЕВИЋ СЛАВИЦА
+РАДИСАВЉЕВИЋ СТАНИША
+РАДИСАВЉЕВИЋ ЗОРИЦА ДР
+РАДИВОЈША МИЛОШ
+РАДИВОЈША СМИЉА
+РАДИВОЈАЦ ДОБРИЛА
+РАДИВОЈАЦ ДРАГА
+РАДИВОЈАЦ ДРАГОЉУБ
+РАДИВОЈАЦ ЈОВАН
+РАДИВОЈАЦ НАТАЛИЈА
+РАДИВОЈЕВ РАДИНКА
+РАДИВОЈЕВИЋ АНЂЕЛКО
+РАДИВОЈЕВИЋ БОГОЉУБ
+РАДИВОЈЕВИЋ БРАНИСЛАВ
+РАДИВОЈЕВИЋ БРАНКО
+РАДИВОЈЕВИЋ БРАТИМИР
+РАДИВОЈЕВИЋ ДРАГАН МР
+РАДИВОЈЕВИЋ ДРАГИША
+РАДИВОЈЕВИЋ ДРАГОМИР
+РАДИВОЈЕВИЋ ДРАГОСЛАВ
+РАДИВОЈЕВИЋ ДУШАН ДИПЛ ОЕЦ
+РАДИВОЈЕВИЋ ДУШАНКА
+РАДИВОЈЕВИЋ ИДА
+РАДИВОЈЕВИЋ ЈАНКО
+РАДИВОЈЕВИЋ ЈЕЛА
+РАДИВОЈЕВИЋ ЈОВАНКА
+РАДИВОЈЕВИЋ ЈОВАН
+РАДИВОЈЕВИЋ ЉУБИЦА
+РАДИВОЈЕВИЋ ЉУБОДРАГ
+РАДИВОЈЕВИЋ ЉУБОМИР
+РАДИВОЈЕВИЋ ЉУБОМИР
+РАДИВОЈЕВИЋ ЛУКА
+РАДИВОЈЕВИЋ ЛУКА
+РАДИВОЈЕВИЋ МИЛАН
+РАДИВОЈЕВИЋ МИЛА
+РАДИВОЈЕВИЋ МИЛЕ
+РАДИВОЈЕВИЋ МИЛИВОЈЕ
+РАДИВОЈЕВИЋ МИЛОМИР
+РАДИВОЈЕВИЋ МИРЈАНА
+РАДИВОЈЕВИЋ МЛАДЕН
+РАДИВОЈЕВИЋ МОМЧИЛО
+РАДИВОЈЕВИЋ НЕЂО
+РАДИВОЈЕВИЋ НЕМАЊА
+РАДИВОЈЕВИЋ НИКОЛА
+РАДИВОЈЕВИЋ ПАВЛЕ
+РАДИВОЈЕВИЋ РАДИША
+РАДИВОЈЕВИЋ РАДИВОЈЕ
+РАДИВОЈЕВИЋ РАДОШ
+РАДИВОЈЕВИЋ РАТКО
+РАДИВОЈЕВИЋ СИНИША
+РАДИВОЈЕВИЋ СЛОБОДАН
+РАДИВОЈЕВИЋ СЛОБОДАН
+РАДИВОЈЕВИЋ СЛОБОДАН
+РАДИВОЈЕВИЋ СЛОБОДАН
+РАДИВОЈЕВИЋ СТЕВАН
+РАДИВОЈЕВИЋ СТОЈАДИН
+РАДИВОЈЕВИЋ ТОМИСЛАВ
+РАДИВОЈЕВИЋ ТУГОМИР
+РАДИВОЈЕВИЋ ВЕРА
+РАДИВОЈЕВИЋ ВИДА
+РАДИВОЈЕВИЋ ВИДА
+РАДИВОЈЕВИЋ ВУКИЦА
+РАДИВОЈЕВИЋ ЗОРАН
+РАДИВОЈЕВИЋ ЗОРАН
+РАДИВОЈКОВ ЂОРЂЕ
+РАДИВОЈКОВ ЈЕЛИЦА
+РАДИВОЈКОВ МИРЈАНА
+РАДИВОЈКОВ РАЈКО
+РАДИВОЈКОВ САВА
+РАДИВОЈКОВ СТЕВАН
+РАДЛОВАЧКИ ДОБРИНКА
+РАДЛОВАЧКИ СИНИША
+РАДЛОВИЋ МИЛКА
+РАДМАН ШИМУН
+РАДМАН ШПИРО
+РАДМАН ИВАН
+РАДМАН ЛЕПОСАВА
+РАДМАН МИЛАН
+РАДМАН МИЛЕ
+РАДМАН МИЛИЦА
+РАДМАН МИЛОВАН
+РАДМАН МИРОСЛАВ
+РАДМАНИЋ ЕВИЦА
+РАДМАНОВАЦ МИЛОВАН
+РАДМАНОВИЋ ДРАГИЦА
+РАДМАНОВИЋ ДУШАНКА
+РАДМАНОВИЋ МИЛУТИН
+РАДМИЛО ЂУРО
+РАДМИЛО МАРИЈА
+РАДМИЛО МИРКО
+РАДМИЛОВИЋ ДУШАНКА
+РАДМИЛОВИЋ МИЛАН
+РАДМИЛОВИЋ МИЛОШ
+РАДМИЛОВИЋ МИРОСЛАВ
+РАДМИЛОВИЋ НЕДЕЉКО
+РАДМИЛОВИЋ РАДЕ ПРОФЕСОР
+РАДМИЛОВИЋ СЛАВОЉУБ
+РАДМИЛОВИЋ СТЕВО
+РАДНИЋ ДОБРИНКА
+РАДНОВ АЛЕКСА
+РАДНОВ ЛЕНКА
+РАДНОВ РАДИВОЈ
+РАДНОВ РАЈКО
+РАДНОВ ЗОРКА
+РАДНОВИЋ ДРАГАН
+РАДНОВИЋ ОЛГИЦА
+РАДНОВИЋ РАДОВАН
+РАДНОВИЋ УРОШ
+РАДНОВИЋ УРОШ
+РАДОЧАЈ ДУШАНКА
+РАДОЧАЈ ИЛИЈА
+РАДОЧАЈ МАРА
+РАДОЧАЈ МИЛКА
+РАДОЧАЈ НЕДЕЉКА
+РАДОЧАЈ САВКА
+РАДОШ БОРИСЛАВ
+РАДОШ ДАНИЦА
+РАДОШ ДРЕНКА
+РАДОШ МАРТА
+РАДОШ МИЛАН
+РАДОШ РУЖА
+РАДОШ ВОЈИСЛАВ
+РАДОШ ЗОРА
+РАДОШЕВИЋ-ШТИМАЦ ЉУБИЦА
+РАДОШЕВИЋ ЂОРЂЕ
+РАДОШЕВИЋ АНЂЕЛКА
+РАДОШЕВИЋ АНИЦА
+РАДОШЕВИЋ АНИЦА
+РАДОШЕВИЋ БОЖИДАР
+РАДОШЕВИЋ БОЖО
+РАДОШЕВИЋ БРАНИСЛАВ
+РАДОШЕВИЋ БРАНКО
+РАДОШЕВИЋ ДЕСАНКА
+РАДОШЕВИЋ ДУШИЦА
+РАДОШЕВИЋ ЈЕЛИСАВЕТА
+РАДОШЕВИЋ ЈОВАНКА
+РАДОШЕВИЋ ЈОВАН
+РАДОШЕВИЋ ЈОВАН
+РАДОШЕВИЋ ЉИЉАНА
+РАДОШЕВИЋ ЉУБИЦА
+РАДОШЕВИЋ МИЛЕНА
+РАДОШЕВИЋ МИЛЕНА
+РАДОШЕВИЋ МИЛИВОЈ
+РАДОШЕВИЋ МИЛОШ
+РАДОШЕВИЋ МИЛУТИН
+РАДОШЕВИЋ МИОДРАГ
+РАДОШЕВИЋ МИРЈАНА
+РАДОШЕВИЋ МИРОСЛАВА
+РАДОШЕВИЋ МИТАР
+РАДОШЕВИЋ НИКОЛА
+РАДОШЕВИЋ ОЛИВЕРА
+РАДОШЕВИЋ РАДЕ
+РАДОШЕВИЋ РАДИВОЈ
+РАДОШЕВИЋ РАДМИЛА
+РАДОШЕВИЋ РАДОВАН
+РАДОШЕВИЋ РАДОВАН
+РАДОШЕВИЋ РОДОЉУБ
+РАДОШЕВИЋ СТАНИЦА
+РАДОШЕВИЋ ТЕРЕЗА
+РАДОШЕВИЋ ВЛАДИМИР
+РАДОШЕВИЋ ЗДРАВКО
+РАДОЦ ФРАЊА
+РАДОЦ-СИМИЋ СОФИЈА
+РАДОИЧИЋ МИЛОШ
+РАДОИЧКИ БРАНИСЛАВ
+РАДОЈЧЕВИЋ МИЛОШ
+РАДОЈЧИЋ БОЖА ДИПЛ ИНГ
+РАДОЈЧИЋ БОЖИДАР
+РАДОЈЧИЋ БОЖИДАР
+РАДОЈЧИЋ ДАНИЦА
+РАДОЈЧИЋ ДАРИНКА
+РАДОЈЧИЋ ДРАГАНА
+РАДОЈЧИЋ ДРАГОМИР
+РАДОЈЧИЋ ДРАГО
+РАДОЈЧИЋ ДУШКО
+РАДОЈЧИЋ ГОЈКО
+РАДОЈЧИЋ ИРЕНА
+РАДОЈЧИЋ ИВАН
+РАДОЈЧИЋ ИВАН
+РАДОЈЧИЋ ИВАН
+РАДОЈЧИЋ ЉИЈАНА
+РАДОЈЧИЋ ЉИЉАНА
+РАДОЈЧИЋ МИЛАДИН
+РАДОЈЧИЋ МИЛАН
+РАДОЈЧИЋ МИЛЕНКО
+РАДОЈЧИЋ МИЛИЦА
+РАДОЈЧИЋ МИЛОРАД
+РАДОЈЧИЋ МИЛУТИН
+РАДОЈЧИЋ МИОДРАГ
+РАДОЈЧИЋ МИТАР
+РАДОЈЧИЋ НАДИЦА
+РАДОЈЧИЋ НЕНАД
+РАДОЈЧИЋ-ОБЕРКНЕЖЕВ МИРЈАНА
+РАДОЈЧИЋ ПАВЛЕ
+РАДОЈЧИЋ САВА
+РАДОЈЧИЋ СРЕТЕН
+РАДОЈЧИЋ СТЕВАН
+РАДОЈЧИЋ ВИТОМИР
+РАДОЈЧИЋ ВЛАДАН
+РАДОЈЧИЋ ВОЈИСЛАВ
+РАДОЈЧИН ЂОРЂЕ
+РАДОЈЧИН АНИЦА
+РАДОЈЧИН ДОБРИЛА
+РАДОЈЧИН ДУШИЦА
+РАДОЈЧИН ЕВИЦА
+РАДОЈЧИН ЈУЛКА
+РАДОЈЧИН МАРА
+РАДОЈЧИН МАРТА
+РАДОЈЧИН МИЛАН
+РАДОЈЧИН МИЛКА
+РАДОЈЧИН МИЛОШ
+РАДОЈЧИН МИЛОВАН
+РАДОЈЧИН МИРЈАНА
+РАДОЈЧИН РАДМИЛА
+РАДОЈЧИН РАДОЈКА
+РАДОЈЧИН РАДОВАН
+РАДОЈЧИН СЛОБОДАН
+РАДОЈЧИН СРЕДОЈЕ
+РАДОЈЧИН ТОДОР
+РАДОЈЧИН ВЕЛИМИР
+РАДОЈЧИН ВЕРА
+РАДОЈЧИН ВЕРА
+РАДОЈА БОРИСЛАВ
+РАДОЈА КОВИЉКА
+РАДОЈЕВ ИВАН
+РАДОЈЕВ СЛАВКО
+РАДОЈЕВИЋ ЂОКА
+РАДОЈЕВИЋ АНЂЕЛКА
+РАДОЈЕВИЋ БОСИЉКА
+РАДОЈЕВИЋ ДЕЈАН
+РАДОЈЕВИЋ ДРАГОСЛАВ
+РАДОЈЕВИЋ ЈЕЛЕНА
+РАДОЈЕВИЋ ЈЕЛИЦА
+РАДОЈЕВИЋ КАТА
+РАДОЈЕВИЋ КОСТА
+РАДОЈЕВИЋ МИЛАН
+РАДОЈЕВИЋ МИЛЕНКО
+РАДОЈЕВИЋ МИЛЕ
+РАДОЈЕВИЋ МИЛУТИН
+РАДОЈЕВИЋ МИРЈАНА
+РАДОЈЕВИЋ МИРОСАНДА
+РАДОЈЕВИЋ МОМЧИЛО
+РАДОЈЕВИЋ НИКОЛА
+РАДОЈЕВИЋ НИКОЛА
+РАДОЈЕВИЋ НИКОЛА
+РАДОЈЕВИЋ ПЕТРА
+РАДОЈЕВИЋ РАДИСАВ
+РАДОЈЕВИЋ РАДОСЛАВКА ДР
+РАДОЈЕВИЋ САВА
+РАДОЈЕВИЋ СЛАВКО
+РАДОЈЕВИЋ СРБОЉУБ
+РАДОЈЕВИЋ СТЕВАН
+РАДОЈЕВИЋ СТЕВАН
+РАДОЈЕВИЋ ТАТЈАНА
+РАДОЈЕВИЋ ВЕРА
+РАДОЈЕВИЋ ЗОРАН
+РАДОЈИЧИЋ ЂОКА
+РАДОЈИЧИЋ ЂОРЂО
+РАДОЈИЧИЋ ДАНИЛО
+РАДОЈИЧИЋ ДРАГАН
+РАДОЈИЧИЋ ЈЕЛЕНА
+РАДОЈИЧИЋ ЈОРДАН
+РАДОЈИЧИЋ ЉУБОМИР
+РАДОЈИЧИЋ МИЛИЦА
+РАДОЈИЧИЋ МИЛОСАВ
+РАДОЈИЧИЋ ОБРЕН
+РАДОЈИЧИЋ РАДЕ
+РАДОЈИЧИЋ РАДИША
+РАДОЈИЧИЋ ВЛАДАН
+РАДОЈИЧИЋ ВОЈИН
+РАДОЈКО ЈЕЛЕНА
+РАДОЈКОВИЋ ЂУРЂИНКА
+РАДОЈКОВИЋ ЉУБИЦА
+РАДОЈКОВИЋ ПРЕДРАГ
+РАДОЈКОВИЋ ПРВОСЛАВ
+РАДОЈКОВИЋ ПРВОСЛАВ
+РАДОЈКОВИЋ РАЈКО
+РАДОЈКОВИЋ ТИХОМИР
+РАДОЈКОВИЋ ТОМИСЛАВ
+РАДОЈКОВИЋ ТРАЈКО
+РАДОЈКОВИЋ ВЛАДИМИР
+РАДОМАН ЈЕЛЕНА
+РАДОМАН ЉУБИЦА
+РАДОМАН МАРТА
+РАДОМАН МИРОСЛАВ
+РАДОМАН ЗОРАН
+РАДОМИР СТОЈАН
+РАДОМИРОВИЋ МИЛОРАД
+РАДОМИРОВИЋ ВИНКО
+РАДОМИРОВИЋ ВУКСАН
+РАДОМИРОВИЋ ЗЛАТА
+РАДОНЧИЋ ЈУСУФ
+РАДОНЧИЋ РАМИЗ
+РАДОНИЋ ЖЕЉКО
+РАДОНИЋ ЖИВАН
+РАДОНИЋ ЖИВКО
+РАДОНИЋ АЛЕКСАНДАР
+РАДОНИЋ АНЂЕЛКА
+РАДОНИЋ БЛАГОЈЕ
+РАДОНИЋ БРАНИСЛАВ
+РАДОНИЋ БРАНКО ДИПЛ ИНГ
+РАДОНИЋ БРАНКО
+РАДОНИЋ ДАНИЦА
+РАДОНИЋ ДУШАН
+РАДОНИЋ ЕВГЕНИЈЕ
+РАДОНИЋ ФЕРЕНЦ
+РАДОНИЋ ХАНА
+РАДОНИЋ ЈОВАН
+РАДОНИЋ ЉУБОМИР
+РАДОНИЋ МАКСИМ
+РАДОНИЋ МИЛИВОЈЕ
+РАДОНИЋ МИЛОВАН
+РАДОНИЋ МЛАДЕН
+РАДОНИЋ НАДА
+РАДОНИЋ НАДА
+РАДОНИЋ НЕДЕЉКО
+РАДОНИЋ НЕНАД
+РАДОНИЋ НИКОЛА
+РАДОНИЋ НИКОЛА
+РАДОНИЋ НОВИЦА
+РАДОНИЋ ПЕТАР
+РАДОНИЋ РАДА
+РАДОНИЋ РАДЕ
+РАДОНИЋ РАДИВОЈ
+РАДОНИЋ РАДИВОЈ
+РАДОНИЋ РАДМИЛА
+РАДОНИЋ РАЈКО
+РАДОНИЋ СОФИЈА
+РАДОНИЋ ВЛАДА
+РАДОНИЋ ВЛАДИМИР
+РАДОЊА АНТЕ
+РАДОЊАНИН МАРТА
+РАДОЊАНИН ПЕТАР
+РАДОЊАНИН ВЛАСТИМИР
+РАДОЊИЋ БРАНИСЛАВ
+РАДОЊИЋ ДРАГАН
+РАДОЊИЋ ИВАН
+РАДОЊИЋ КАТАРИНА
+РАДОЊИЋ ЛУКА
+РАДОЊИЋ МАНДА
+РАДОЊИЋ МИЛАДИН
+РАДОЊИЋ МИЛОВАН
+РАДОЊИЋ МИРЈАНА
+РАДОЊИЋ МИТАР
+РАДОЊИЋ ОЛГА
+РАДОЊИЋ СЕНКА
+РАДОЊИЋ СЛАВОМИР
+РАДОЊИЋ СЛОБОДАН
+РАДОЊИЋ СНЕЖАНА
+РАДОЊИЋ СТАНА
+РАДОЊИЋ ВЕРИЦА
+РАДОСАВ ЕРЖЕБЕТ
+РАДОСАВ КРИСТИНА
+РАДОСАВ РАДИВОЈ
+РАДОСАВЧЕВ ДУШАН
+РАДОСАВЧЕВ МИЛА
+РАДОСАВАЦ ДИМИТРИЈЕ ДР
+РАДОСАВАЦ ДУШИЦА
+РАДОСАВАЦ НЕДЕЉКО
+РАДОСАВАЦ ВЕЛИЗАР
+РАДОСАВАЦ ВЛАДО
+РАДОСАВЉЕВ ЖИВАН
+РАДОСАВЉЕВ БОЖИДАР
+РАДОСАВЉЕВ ДРАГОЉУБ
+РАДОСАВЉЕВ ДРАГУТИН
+РАДОСАВЉЕВ ГОЈКО
+РАДОСАВЉЕВ ИВАН
+РАДОСАВЉЕВ ЈЕВРЕМ
+РАДОСАВЉЕВ КАЋА
+РАДОСАВЉЕВ МИЛОРАД
+РАДОСАВЉЕВ НИКОЛА
+РАДОСАВЉЕВ ПАВЛЕ
+РАДОСАВЉЕВ СЛАВКА
+РАДОСАВЉЕВ СТЕВАН
+РАДОСАВЉЕВ ЗОРА
+РАДОСАВЉЕВ ЗОРИЦА
+РАДОСАВЉЕВИЋ ЖИВАН
+РАДОСАВЉЕВИЋ ЂОРЂЕ
+РАДОСАВЉЕВИЋ ЂОРЂЕ
+РАДОСАВЉЕВИЋ АЛЕКСАНДАР
+РАДОСАВЉЕВИЋ АНА
+РАДОСАВЉЕВИЋ АНА
+РАДОСАВЉЕВИЋ БОЖИДАР
+РАДОСАВЉЕВИЋ БОГДАН
+РАДОСАВЉЕВИЋ БОГОВИД
+РАДОСАВЉЕВИЋ БОРА
+РАДОСАВЉЕВИЋ БОРА
+РАДОСАВЉЕВИЋ БУДИМИР
+РАДОСАВЉЕВИЋ ДАНИЕЛ
+РАДОСАВЉЕВИЋ ДИАНА
+РАДОСАВЉЕВИЋ ДОБРИВОЈЕ
+РАДОСАВЉЕВИЋ ДРАГАН
+РАДОСАВЉЕВИЋ ДРАГИША
+РАДОСАВЉЕВИЋ ДРАГОЉУБ
+РАДОСАВЉЕВИЋ ДРАГУТИН
+РАДОСАВЉЕВИЋ ДУШАН ДИПЛ ИНГ
+РАДОСАВЉЕВИЋ ДУШАН
+РАДОСАВЉЕВИЋ ДУШАН
+РАДОСАВЉЕВИЋ ИЛИЈА
+РАДОСАВЉЕВИЋ ЈАСМИНА
+РАДОСАВЉЕВИЋ ЈОВАН
+РАДОСАВЉЕВИЋ ЈОВАН
+РАДОСАВЉЕВИЋ ЈОВАН
+РАДОСАВЉЕВИЋ ЈУЛИЈА
+РАДОСАВЉЕВИЋ ЛЕПОСАВА
+РАДОСАВЉЕВИЋ ЉИЉАНА
+РАДОСАВЉЕВИЋ ЉИЉА
+РАДОСАВЉЕВИЋ ЉУБИША
+РАДОСАВЉЕВИЋ ЉУБОМИР
+РАДОСАВЉЕВИЋ ЉУБОМИР
+РАДОСАВЉЕВИЋ МАРКО
+РАДОСАВЉЕВИЋ МИЛАН
+РАДОСАВЉЕВИЋ МИЛАН
+РАДОСАВЉЕВИЋ МИЛАН
+РАДОСАВЉЕВИЋ МИЛЕНКО
+РАДОСАВЉЕВИЋ МИЛЕНКО
+РАДОСАВЉЕВИЋ МИЛЕВА
+РАДОСАВЉЕВИЋ МИЛКА
+РАДОСАВЉЕВИЋ МИЛОВАН
+РАДОСАВЉЕВИЋ МИОДРАГ
+РАДОСАВЉЕВИЋ МИРЈАНА
+РАДОСАВЉЕВИЋ МИРЈАНА
+РАДОСАВЉЕВИЋ МЛАДЕН
+РАДОСАВЉЕВИЋ ЊЕГОСАВА
+РАДОСАВЉЕВИЋ ПАВЛЕ
+РАДОСАВЉЕВИЋ ПЕТАР
+РАДОСАВЉЕВИЋ РАДИША
+РАДОСАВЉЕВИЋ РАДИША
+РАДОСАВЉЕВИЋ РАДИВОЈ
+РАДОСАВЉЕВИЋ РАМИЗА
+РАДОСАВЉЕВИЋ РОДОЉУБ ДИПЛ ИНГ
+РАДОСАВЉЕВИЋ САВА
+РАДОСАВЉЕВИЋ СИНИША
+РАДОСАВЉЕВИЋ СТЕВАН
+РАДОСАВЉЕВИЋ СТЕВАН
+РАДОСАВЉЕВИЋ СТЕВАН
+РАДОСАВЉЕВИЋ СТОЈАН
+РАДОСАВЉЕВИЋ СВЕТИСЛАВ
+РАДОСАВЉЕВИЋ СВЕТИСЛАВ
+РАДОСАВЉЕВИЋ СВЕТЛАНА
+РАДОСАВЉЕВИЋ СВЕТОЗАР
+РАДОСАВЉЕВИЋ ВИДОСАВА
+РАДОСАВЉЕВИЋ ВЛАДЕТА
+РАДОСАВЉЕВИЋ ЗАГА
+РАДОСАВЉЕВИЋ ЗАГОРКА
+РАДОСАВЉЕВИЋ ЗОРИЦА
+РАДОВАЦ ИВА
+РАДОВАЦ НИКОЛА
+РАДОВАЦ ПЕТАР
+РАДОВАЦ САВА
+РАДОВАН АНТЕ
+РАДОВАН ВИДОСАВА
+РАДОВАНЧЕВ БРАНИСЛАВ
+РАДОВАНЧЕВ ЉУБИЦА
+РАДОВАНЧЕВ ВЛАДИМИР
+РАДОВАНЧЕВ ВЛАДИМИР
+РАДОВАНАЦ ЂУРА
+РАДОВАНАЦ НЕЂО
+РАДОВАНОВ ЖИВАН
+РАДОВАНОВ АЛЕКСАНДАР
+РАДОВАНОВ АНЂЕЛКА
+РАДОВАНОВ АНКА
+РАДОВАНОВ БОЖИДАР
+РАДОВАНОВ БОГДАНКА
+РАДОВАНОВ БРАНКО
+РАДОВАНОВ ДАНИЦА
+РАДОВАНОВ ДУШАН
+РАДОВАНОВ ДУШАН
+РАДОВАНОВ ДУШАН
+РАДОВАНОВ ЕВИЦА
+РАДОВАНОВ ГОРДАНА
+РАДОВАНОВ ИЛИЈА
+РАДОВАНОВ КУЗМАН
+РАДОВАНОВ ЉУБИЦА
+РАДОВАНОВ МАРИЈА
+РАДОВАНОВ МЕЛАНИЈА
+РАДОВАНОВ МИЛАН
+РАДОВАНОВ МИЛАН
+РАДОВАНОВ МИЛЕНКО
+РАДОВАНОВ МИЛЕНКО
+РАДОВАНОВ МИЛЕНКО
+РАДОВАНОВ МИЛИЦА
+РАДОВАНОВ МИЛИЦА
+РАДОВАНОВ МИЛИЦА
+РАДОВАНОВ МИЛКА
+РАДОВАНОВ МИРЈАНА
+РАДОВАНОВ НАДА
+РАДОВАНОВ НЕВЕНКА
+РАДОВАНОВ ПЕТАР
+РАДОВАНОВ ПЕТАР
+РАДОВАНОВ ПЕТАР
+РАДОВАНОВ РАДОМИР
+РАДОВАНОВ РАДОВАН
+РАДОВАНОВ РУЖИЦА
+РАДОВАНОВ СЛОБОДАНКА
+РАДОВАНОВ СЛОБОДАН
+РАДОВАНОВ СЛОБОДАН
+РАДОВАНОВ СМИЉАНА
+РАДОВАНОВ СТЕВАН
+РАДОВАНОВ СТЕВАН
+РАДОВАНОВ СТЕВА
+РАДОВАНОВ СВЕТОЗАР
+РАДОВАНОВ ТАТЈАНА
+РАДОВАНОВ ТИНКА
+РАДОВАНОВ ВОЈИСЛАВ
+РАДОВАНОВИЋ ЖИВАДИН
+РАДОВАНОВИЋ ЂОРЂИЈЕ
+РАДОВАНОВИЋ БОРА
+РАДОВАНОВИЋ БОРКА
+РАДОВАНОВИЋ БРАНКО
+РАДОВАНОВИЋ ДАНИЛО
+РАДОВАНОВИЋ ДАРИНКА
+РАДОВАНОВИЋ ДОБРИВОЈЕ
+РАДОВАНОВИЋ ДРАГАН
+РАДОВАНОВИЋ ДРАГИША
+РАДОВАНОВИЋ ДРАГИША
+РАДОВАНОВИЋ ДРАГОЉУБ
+РАДОВАНОВИЋ ДУШАНКА
+РАДОВАНОВИЋ ДУШАН
+РАДОВАНОВИЋ ДУШКО ДИПЛ ИНГ
+РАДОВАНОВИЋ ИЛОНКА
+РАДОВАНОВИЋ ЈЕЛИЦА
+РАДОВАНОВИЋ ЈОКА
+РАДОВАНОВИЋ ЈОВАНКА
+РАДОВАНОВИЋ ЛАЗАР
+РАДОВАНОВИЋ ЛАЗО
+РАДОВАНОВИЋ ЉУБИЦА
+РАДОВАНОВИЋ ЉУБОМИР
+РАДОВАНОВИЋ МАРА
+РАДОВАНОВИЋ МАРИЈА ДР
+РАДОВАНОВИЋ МАРИЈА
+РАДОВАНОВИЋ МИЋО
+РАДОВАНОВИЋ МИЛАДИН
+РАДОВАНОВИЋ МИЛАН
+РАДОВАНОВИЋ МИЛАН
+РАДОВАНОВИЋ МИЛАН
+РАДОВАНОВИЋ МИЛА
+РАДОВАНОВИЋ МИЛИЦА
+РАДОВАНОВИЋ МИЛОШ
+РАДОВАНОВИЋ МИЛОШ
+РАДОВАНОВИЋ МИЛОРАД
+РАДОВАНОВИЋ МИЛОРАД
+РАДОВАНОВИЋ МИЛОРАД
+РАДОВАНОВИЋ МИЛУТИН
+РАДОВАНОВИЋ МИРА
+РАДОВАНОВИЋ МИРОСЛАВ ДР ПРОФ
+РАДОВАНОВИЋ МИРОСЛАВ
+РАДОВАНОВИЋ МЛАЂЕН
+РАДОВАНОВИЋ МОМИР
+РАДОВАНОВИЋ НАДА
+РАДОВАНОВИЋ НЕДЕЉКО
+РАДОВАНОВИЋ НИКОЛА
+РАДОВАНОВИЋ НИНОСЛАВ ДР
+РАДОВАНОВИЋ ПРЕДРАГ
+РАДОВАНОВИЋ РАДЕНКО
+РАДОВАНОВИЋ РАДИВОЈ
+РАДОВАНОВИЋ РАДОЈИЦА
+РАДОВАНОВИЋ РАДОМИР ДР ЛЕКАР
+РАДОВАНОВИЋ РАДОСЛАВ
+РАДОВАНОВИЋ РАДОСЛАВ
+РАДОВАНОВИЋ РАДОВАН
+РАДОВАНОВИЋ РАЈА
+РАДОВАНОВИЋ РАЈКО
+РАДОВАНОВИЋ СЛАДОЉУБ
+РАДОВАНОВИЋ СЛАВКО
+РАДОВАНОВИЋ СЛАВКО
+РАДОВАНОВИЋ СЛОБОДАН
+РАДОВАНОВИЋ СНЕЖАНА
+РАДОВАНОВИЋ СРЕТЕН
+РАДОВАНОВИЋ СТАНОЈЕ
+РАДОВАНОВИЋ СТЕВАН
+РАДОВАНОВИЋ СТЕВАН
+РАДОВАНОВИЋ СВЕТИСЛАВ
+РАДОВАНОВИЋ ТОМИСЛАВ
+РАДОВАНОВИЋ ВЕЛИСАВ
+РАДОВАНОВИЋ ВИДОСАВА
+РАДОВАНОВИЋ ВИНКА
+РАДОВАНОВИЋ ВЛАДИМИР
+РАДОВАНОВИЋ ВОЈИСЛАВ
+РАДОВАНОВИЋ ВОЈИСЛАВ
+РАДОВАНОВИЋ ЗОРКА
+РАДОВАНОВИЋ ЗВЕЗДАНА
+РАДОВИЋ ЧЕДОМИР
+РАДОВИЋ ЖАРКО
+РАДОВИЋ ЖИВАН
+РАДОВИЋ ЂОРЂЕ
+РАДОВИЋ АЛЕКСАНДАР
+РАДОВИЋ АЛЕКСАНДАР
+РАДОВИЋ АНЂЕЛИЈА
+РАДОВИЋ БЛАГА
+РАДОВИЋ БЛАГОЈЕ
+РАДОВИЋ БОШКО
+РАДОВИЋ БОГОЉУБ
+РАДОВИЋ БОРИСЛАВ
+РАДОВИЋ БРАНИСЛАВ ДИПЛ ИНГ
+РАДОВИЋ БРАНКО
+РАДОВИЋ ДАМЈАН
+РАДОВИЋ ДАРКО
+РАДОВИЋ ДЕЈАН
+РАДОВИЋ ДИМИТРИЈЕ
+РАДОВИЋ ДОБРИЛА
+РАДОВИЋ ДРАГАН
+РАДОВИЋ ДРАГИША
+РАДОВИЋ ДРАГИЦА
+РАДОВИЋ ДРАГОЉУБ
+РАДОВИЋ ДРАГУТИН
+РАДОВИЋ ДУШАН
+РАДОВИЋ ГОЈКО ДИПЛ ИНГ
+РАДОВИЋ ИРМА
+РАДОВИЋ ИВА
+РАДОВИЋ ЈЕВТО
+РАДОВИЋ ЈОВАН
+РАДОВИЋ ЉУБОМИР
+РАДОВИЋ МАГДАЛЕНА
+РАДОВИЋ МАГДА
+РАДОВИЋ МИЛАН
+РАДОВИЋ МИЛАН
+РАДОВИЋ МИЛАН
+РАДОВИЋ МИЛАН
+РАДОВИЋ МИЛЕНА
+РАДОВИЋ МИЛЕВА
+РАДОВИЋ МИЛЕ
+РАДОВИЋ МИЛОШ
+РАДОВИЋ МИЛОЈЕ
+РАДОВИЋ МИЛОМИР
+РАДОВИЋ МИЛУТИН
+РАДОВИЋ МИОДРАГ
+РАДОВИЋ МИОДРАГ
+РАДОВИЋ МИРЧЕТА
+РАДОВИЋ МОМЧИЛО
+РАДОВИЋ МОМЧИЛО
+РАДОВИЋ НЕДЕЉКО
+РАДОВИЋ НОВАК
+РАДОВИЋ ОЛГА
+РАДОВИЋ ПАВЛЕ
+РАДОВИЋ ПЕТАР
+РАДОВИЋ ПЕТКО
+РАДОВИЋ РАДОЈКА
+РАДОВИЋ РАДОМИР
+РАДОВИЋ РАДОВАН
+РАДОВИЋ РАДОВАН
+РАДОВИЋ РАДОВАН
+РАДОВИЋ РАЈКО
+РАДОВИЋ РАТОМИР ДИПЛ ИНГ
+РАДОВИЋ РОЗИКА
+РАДОВИЋ САВО
+РАДОВИЋ СИМА
+РАДОВИЋ СЛАВИЦА
+РАДОВИЋ СЛАВИЦА
+РАДОВИЋ СЛАВКА
+РАДОВИЋ СЛАВКО
+РАДОВИЋ СРЕТЕН
+РАДОВИЋ СТАНКО
+РАДОВИЋ СТЕВАН
+РАДОВИЋ СТРАХИЊА
+РАДОВИЋ ТЕРЕЗИЈА
+РАДОВИЋ-УВЕРИЋ МИЛА ДР
+РАДОВИЋ ВЕЛИМИР
+РАДОВИЋ ВЕЉА
+РАДОВИЋ ВЕЉКО
+РАДОВИЋ ВЕЉКО
+РАДОВИЋ ВЕРА
+РАДОВИЋ ВЕРА
+РАДОВИЋ ВИДАК
+РАДОВИЋ ВИДОСАВ
+РАДОВИЋ ВЛАДИМИР
+РАДОВИЋ ВЛАДИМИР
+РАДОВИЋ ВЛАЈКО
+РАДОВИЋ ВОЈИСЛАВ
+РАДОВИЋ ВУКСАН
+РАДОВИЋ ЗДРАВКО
+РАДОВИЋ ЗОРАН
+РАДОВНИКОВИЋ МАРИЈА
+РАДУ БРАНКО
+РАДУЈКО ЂУРА
+РАДУЈКО АЛЕКСАНДАР
+РАДУЈКО БРАНКО
+РАДУЈКО ДЕСА
+РАДУЈКО ДУШАН
+РАДУЈКО ДУШАН
+РАДУЈКО ГОРАН
+РАДУЈКО ЈАСМИНА
+РАДУЈКО ЉИЉАНА
+РАДУЈКО МАРКО
+РАДУЈКО МИЛАН
+РАДУЈКО МИРА
+РАДУЈКО МИРКО
+РАДУЈКО НЕДЕЉКО
+РАДУЈКО СТЕВО
+РАДУЈКОВ АЛЕКСАНДАР
+РАДУЈКОВ ДАНИЦА ДИПЛ ИНГ
+РАДУЈКОВ ДАНИЛО
+РАДУЈКОВ ДАНИЛО
+РАДУЈКОВ ДЕЈАН
+РАДУЈКОВ ДРАГОЉУБ
+РАДУЈКОВ ЉУБИЦА
+РАДУЈКОВ ЉУБИЦА
+РАДУЈКОВ МИЛАН
+РАДУЈКОВ МИЛИВОЈ
+РАДУЈКОВ МИТАР
+РАДУЈКОВ НИКОЛА
+РАДУЈКОВ ПЕТАР
+РАДУЈКОВ РУЖИЦА
+РАДУЈКОВ СТЕВАН
+РАДУЈКОВ ВЛАДИМИР
+РАДУЈКОВИЋ ИЛИЈА
+РАДУЈКОВИЋ ЈЕЛКА
+РАДУЈКОВИЋ КОСТА
+РАДУКА ЛАЈОШ
+РАДУКИЋ РАДОСАВ
+РАДУКИН АЛЕКСА
+РАДУКИН БРАНКА
+РАДУКИН ДАНИЦА
+РАДУКИН ГАВРА
+РАДУКИН ЉУБОМИР
+РАДУКИН МИЛАН
+РАДУКИН МИЛЕНКО
+РАДУКИН МИРКО
+РАДУКИН РАДОСЛАВ
+РАДУКИН СТОЈКА
+РАДУЛАШКИ БОШКО
+РАДУЛАШКИ СТЕВАН
+РАДУЛЕВ ЈОВАН
+РАДУЉ ЈЕЛЕНА
+РАДУЛОВ ЦВЕТИСЛАВ
+РАДУЛОВ ЦВЕТИСЛАВ
+РАДУЛОВ ЈОВАН
+РАДУЛОВ ЈУЛКА
+РАДУЛОВИЋ ЖИВКО
+РАДУЛОВИЋ ЂОКО
+РАДУЛОВИЋ ЂОРЂЕ
+РАДУЛОВИЋ ЂОРЂЕ
+РАДУЛОВИЋ ЂУРО
+РАДУЛОВИЋ АЛЕКСАНДАР
+РАДУЛОВИЋ АЛЕКСАНДАР
+РАДУЛОВИЋ АНЂЕЛКА
+РАДУЛОВИЋ АНЂЕЛКО
+РАДУЛОВИЋ АНЂЕЛКО
+РАДУЛОВИЋ АНА
+РАДУЛОВИЋ-БЕЛИЋ ЗОРКА
+РАДУЛОВИЋ БОГДАНКА
+РАДУЛОВИЋ БОРИВОЈ
+РАДУЛОВИЋ БОСА
+РАДУЛОВИЋ БОСИЉКА
+РАДУЛОВИЋ БРАНКА
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАНКО
+РАДУЛОВИЋ БРАТИСЛАВ
+РАДУЛОВИЋ ДАНИЈЕЛА
+РАДУЛОВИЋ ДРАГАН
+РАДУЛОВИЋ ДРАГИЦА
+РАДУЛОВИЋ ДРАГИЦА
+РАДУЛОВИЋ ДРАГОЉУБ
+РАДУЛОВИЋ ДРАГУТИН
+РАДУЛОВИЋ ДУШАН
+РАДУЛОВИЋ ГОРАН
+РАДУЛОВИЋ ИЛИЈА
+РАДУЛОВИЋ ЈОРДАН
+РАДУЛОВИЋ ЈОВАН
+РАДУЛОВИЋ ЈОВАН
+РАДУЛОВИЋ КРУНИСЛАВ
+РАДУЛОВИЋ КСЕНИЈА
+РАДУЛОВИЋ ЛАЗАР
+РАДУЛОВИЋ ЉУБИША ДИПЛ ИНГ
+РАДУЛОВИЋ МАГДА
+РАДУЛОВИЋ МАРИЈАНА
+РАДУЛОВИЋ МАРИЈА
+РАДУЛОВИЋ МАРИЈА
+РАДУЛОВИЋ МИХАИЛО
+РАДУЛОВИЋ МИЛАН
+РАДУЛОВИЋ МИЛАН
+РАДУЛОВИЋ МИЛАН
+РАДУЛОВИЋ МИЛАН
+РАДУЛОВИЋ МИЛЕНА
+РАДУЛОВИЋ МИЛЕ
+РАДУЛОВИЋ МИЛОЈЕ
+РАДУЛОВИЋ МИЛОРАД ДР
+РАДУЛОВИЋ МИЛОВАН
+РАДУЛОВИЋ МИЛУТИН
+РАДУЛОВИЋ МИРЈАНА
+РАДУЛОВИЋ МИРКО
+РАДУЛОВИЋ МИРОСЛАВА
+РАДУЛОВИЋ НАДА
+РАДУЛОВИЋ НЕДЕЉКА
+РАДУЛОВИЋ НИКОЛА ДИПЛ ИНГ
+РАДУЛОВИЋ НИКОЛА
+РАДУЛОВИЋ НИКОЛА
+РАДУЛОВИЋ НИКОЛА
+РАДУЛОВИЋ НИНОСЛАВА ДР
+РАДУЛОВИЋ ПЕТАР
+РАДУЛОВИЋ ПЕТАР
+РАДУЛОВИЋ РАДЕ
+РАДУЛОВИЋ РАДИВОЈ
+РАДУЛОВИЋ РАДОЈЕ ДР
+РАДУЛОВИЋ РАДОЈКА
+РАДУЛОВИЋ РАДОМИР
+РАДУЛОВИЋ РАЈКО
+РАДУЛОВИЋ РОЗАЛИЈА
+РАДУЛОВИЋ РУЖА
+РАДУЛОВИЋ РУДОЛФ
+РАДУЛОВИЋ САВА
+РАДУЛОВИЋ САВА
+РАДУЛОВИЋ САВА
+РАДУЛОВИЋ СЕЛИМИР
+РАДУЛОВИЋ СЛАВИЦА
+РАДУЛОВИЋ СЛОБОДАН
+РАДУЛОВИЋ СРЕЋКО
+РАДУЛОВИЋ СРЕТО
+РАДУЛОВИЋ СТАНА
+РАДУЛОВИЋ СТАНКО
+РАДУЛОВИЋ СТЕВАН ДР
+РАДУЛОВИЋ СТЕВАН
+РАДУЛОВИЋ СТЕВАН
+РАДУЛОВИЋ СВЕТКО
+РАДУЛОВИЋ СВЕТОЗАР
+РАДУЛОВИЋ СВЕТОЗАР
+РАДУЛОВИЋ ТОМАШ
+РАДУЛОВИЋ ВЕЛИМИР
+РАДУЛОВИЋ ЗЛАТИНКА ДР
+РАДУЛОВИЋ ЗОРАН
+РАДУЛОВИЋ ЗОРАН
+РАДУЛОВИЋ ЗВОНИМИР
+РАДУМИЛО АЛЕКСАНДАР
+РАДУМИЛО ГОРДАНА
+РАДУМИЛО МИЋО
+РАДУМИЛО МИЛОРАД
+РАДУМИЛО МИРКО
+РАДУН ЖЕЉКО
+РАДУН ЖЕЉКО
+РАДУН ДРАГАН
+РАДУН ГОРАН
+РАДУН ИЛИЈА
+РАДУН ЈОВАН
+РАДУН ЉУБИЦА
+РАДУН МАРКО
+РАДУН МИЛОШ
+РАДУН СЛОБОДАН
+РАДУН СМИЉА
+РАДУН ВЛАДО
+РАДУЊИЋ МИЛОМИР
+РАДУНКОВИЋ МИРОСЛАВ
+РАДУНКОВИЋ РАДОМИР
+РАДУНКОВИЋ РАНКО
+РАДУНОВИЋ ЂОРЂЕ
+РАДУНОВИЋ ЈЕЛИЦА
+РАДУНОВИЋ ЈЕЛИЦА
+РАДУНОВИЋ ЈЕВРЕМ
+РАДУНОВИЋ РАДУН
+РАДУНОВИЋ РОСАНДА
+РАДУСИН МИЛЕ
+РАДУСИН ТОМА
+РАДУСИН ВЕРИЦА
+РАДУСИН ВЛАДИМИР
+РАДУСИНОВИЋ БИСЕР ДИПЛ ИНГ
+РАДУСИНОВИЋ БОРА
+РАДУСИНОВИЋ ДАНИЛО
+РАДУСИНОВИЋ МИЛАН
+РАДУСИНОВИЋ НЕДЕЉКО
+РАДУСИНОВИЋ ВОЈИСЛАВ
+РАДВАЊ САША
+РАДВАЊИ ЈОВАН
+РАДВАНСКИ СТЕВАН
+РАФА АНДРАШ
+РАФАИ ГАБОР
+РАФАИ ИШТВАН
+РАФАИ ЈУЛИЈАНА
+РАФАИ СТЕВАН
+РАФАИ ТИБОР
+РАФАЈЛОВИЋ ЗУЗАНА
+РАФАЛ ЂУРЂИНКА
+РАФАЛ ЛАЈОШ
+РАФАЛ МАРИЈА
+РАГАЧ ИВАН
+РАГАИ ЈОВГЕН
+РАГАЈИ ЂУРА
+РАГАЈИ ИРИНА
+РАГАЈИ НИКОЛА
+РАГАЈИ НИКОЛА
+РАГАЈИ ВЛАДА
+РАГАЈИ ВЛАДА
+РАГАЈИ ВЛАДИМИР
+РАГО АДАМ
+РАГУЖ ДРАЖЕН
+РАХЕЛИЋ СВЕТОМИР ДР
+РАХМАН МИХАЈЛО
+РАИЧ АЛЕКСАНДАР
+РАИЧ НИКОЛА
+РАИЧЕВИЋ ЖИВКО
+РАИЧЕВИЋ ЖИВОЈИН
+РАИЧЕВИЋ ЖИВОЈИН
+РАИЧЕВИЋ БОРКА
+РАИЧЕВИЋ ДРАГИЋ
+РАИЧЕВИЋ МИЛАН
+РАИЧЕВИЋ МИЛИЦА
+РАИЧЕВИЋ НИКОЛА
+РАИЧЕВИЋ ВЕСНА
+РАИЧЕВИЋ ЗОРАН
+РАИЧИЋ ЖИВОЈИН
+РАИЧИЋ ЖИВОЈИН
+РАИЋ ДРАГАН
+РАИЋ НИКОЛА
+РАИЛИЋ РАНКО
+РАИЛИЋ ВУКОСАВА
+РАИМОВСКИ ДЕСАНКА
+РАИНАЦ МАРИКА
+РАИНАЦ МИТАР
+РАЈЧАН ИШТВАН
+РАЈЧЕТИЋ ДРАГОМИР
+РАЈЧЕТИЋ ЕМИЛ
+РАЈЧЕТИЋ ГОЈКО
+РАЈЧЕТИЋ ИВАНКА
+РАЈЧЕТИЋ ЛАЗАР
+РАЈЧЕТИЋ ЉУБИЦА
+РАЈЧЕТИЋ МИЛИВОЈ
+РАЈЧЕТИЋ МИРОСЛАВ
+РАЈЧЕТИЋ РУЖИЦА
+РАЈЧЕТИЋ СИНИША
+РАЈЧЕТИЋ СТОЈАН
+РАЈЧЕТИЋ ВЕРА
+РАЈЧЕТИЋ ВЛАДИСЛАВ
+РАЈЧЕТИЋ ВЛАДИСЛАВ
+РАЈЧЕВИЋ ВЛАДЕТА
+РАЈЧИЋ ГРГА
+РАЈЧИЋ ПАВЛЕ
+РАЈЧИЋ СТЕВАН
+РАЈШИЋ АНЂА
+РАЈШИЋ ДАНИЦА
+РАЈШИЋ ДУШАН
+РАЈШИЋ ИЛИЈА
+РАЈШИЋ ЈЕЛА
+РАЈШИЋ НАДА
+РАЈШИЋ РАДЕ
+РАЈШИЋ СТАНА
+РАЈШИЋ СТАНКО
+РАЈШЛИ ИЛОНА
+РАЈШЛИ ЛАСЛО
+РАЈАЧИЋ-ЧАПАКОВИЋ ЈЕЛИЦА
+РАЈАЧИЋ ЂУРО
+РАЈАЧИЋ ЂУРО
+РАЈАЧИЋ АЛЕКСАНДАР
+РАЈАЧИЋ БОРИСЛАВ
+РАЈАЧИЋ БОРИСЛАВ
+РАЈАЧИЋ БРАНИСЛАВА
+РАЈАЧИЋ ДМИТАР
+РАЈАЧИЋ ДУШАН
+РАЈАЧИЋ ГОРДАНА
+РАЈАЧИЋ ИЛИЈА
+РАЈАЧИЋ ЈОВАН
+РАЈАЧИЋ МИЛАН
+РАЈАЧИЋ МИЛАН
+РАЈАЧИЋ МИЛАН
+РАЈАЧИЋ ПЕТАР
+РАЈАЧИЋ ТИХОМИР
+РАЈАЧИЋ ВЛАДИМИР
+РАЈАЧИЋ ВЛАДО
+РАЈАЧИЋ ЗОРИЦА
+РАЈАЧИЋ ЗОРКА
+РАЈАК БРАНКО
+РАЈАК МИЛЕНА
+РАЈАК НЕГОВАН
+РАЈАКОВАЦ МИОДРАГ
+РАЈАКОВАЦ ЗОРАН
+РАЈБЕР ЈОЖЕФ
+РАЈДА ПЕТАР
+РАЈДА ПЕТЕР
+РАЈДА САНДИ
+РАЈЕВИЋ КОСТА
+РАЈЕВИЋ ВАЛЕРИЈА
+РАЈХ ДЕЖЕ
+РАЈХ ОЛГА
+РАЈХ ВЛАДИМИР
+РАЈИЧ МИЛАН
+РАЈИЧИЋ КАТАЛИН
+РАЈИЧИЋ МИОДРАГ
+РАЈИЧИЋ МИОДРАГ
+РАЈИЋ АНКИЦА
+РАЈИЋ БОРИСАВ
+РАЈИЋ ДАРИНКА
+РАЈИЋ ДЕСАНКА
+РАЈИЋ ДОБРИВОЈ
+РАЈИЋ ДРАГАН
+РАЈИЋ ДРАГА
+РАЈИЋ ДРАГИЦА
+РАЈИЋ ДРАГУТИН
+РАЈИЋ ГОРДАНА
+РАЈИЋ ИГЊАТ
+РАЈИЋ ИСА
+РАЈИЋ ЈОВАН
+РАЈИЋ ЈОВАН
+РАЈИЋ КАТАРИНА
+РАЈИЋ КОВИНКА
+РАЈИЋ КРИСТИНА
+РАЈИЋ ЉУБИЦА
+РАЈИЋ ЛУКА
+РАЈИЋ МИЛАН
+РАЈИЋ МИЛЕНА
+РАЈИЋ МИЛКА
+РАЈИЋ МИЛОРАД
+РАЈИЋ МИОМИР
+РАЈИЋ НАДА
+РАЈИЋ НАДА
+РАЈИЋ НИКОЛА
+РАЈИЋ ПЕРКА
+РАЈИЋ ПЕТАР
+РАЈИЋ РАДЕ
+РАЈИЋ РАДИСЛАВ
+РАЈИЋ РАДМИЛА
+РАЈИЋ РУЖА
+РАЈИЋ СЛАВКА
+РАЈИЋ СНЕЖАНА
+РАЈИЋ СПАСОЈЕ ДР
+РАЈИЋ СТЕВАН
+РАЈИЋ СТЕВАН
+РАЈИЋ СТЕВАН
+РАЈИЋ ВЕЛИМИР
+РАЈИЋ ВЕЛИМИР
+РАЈИЋ ВЕЛИНКА
+РАЈИЋ ВОЈИСЛАВ
+РАЈИЋ ВОЈИСЛАВ
+РАЈИЋ ЗОРАН
+РАЈИЛИЋ ЈОВАНКА
+РАЈИНАЦ-БУКУРОВ ДРАГАНА
+РАЈИНАЦ НЕНАД
+РАЈИНАЦ СВЕТОЗАР
+РАЈИНОВИЋ МИРКО
+РАЈКИЋ НИКОЛА
+РАЈКОВ БОГДАН ДР
+РАЈКОВ БОРИВОЈ
+РАЈКОВ ДЕСАНКА
+РАЈКОВ ДРАГИЋ
+РАЈКОВ ДУШАН
+РАЈКОВ ИСИДОР
+РАЈКОВ ИВАН
+РАЈКОВ ИВАН
+РАЈКОВ ЉУБОМИР
+РАЈКОВ МАРКО
+РАЈКОВ МИЛАН
+РАЈКОВ МИЛЕНКО
+РАЈКОВ МИЛОРАД
+РАЈКОВ МЛАДЕН ДИПЛ ИНГ
+РАЈКОВ МОМИР
+РАЈКОВ МОМИР
+РАЈКОВ НИКОЛА
+РАЈКОВ ПЕТАР
+РАЈКОВ РАЈКО
+РАЈКОВ РАТИМИР
+РАЈКОВ САВА
+РАЈКОВ СТЕВАН
+РАЈКОВ ВЕСНА
+РАЈКОВ ВЛАДИМИР
+РАЈКОВ ВУКАШИН
+РАЈКОВИЋ ЧЕДОМИР
+РАЈКОВИЋ ЖИВАН ДР
+РАЈКОВИЋ АНКИЦА
+РАЈКОВИЋ БЛАГУТИН
+РАЈКОВИЋ БОГОЉУБ
+РАЈКОВИЋ БОРИВОЈЕ
+РАЈКОВИЋ БРАНКО
+РАЈКОВИЋ ДАМЊАН
+РАЈКОВИЋ ДРАГАНА
+РАЈКОВИЋ ДРАГАН
+РАЈКОВИЋ ДРАГИША
+РАЈКОВИЋ ДРАГОЉУБ
+РАЈКОВИЋ ДУШАН
+РАЈКОВИЋ ИВО
+РАЈКОВИЋ ЉУБОМИР
+РАЈКОВИЋ МИЛАН
+РАЈКОВИЋ МИЛЕВА
+РАЈКОВИЋ МИЛИЋ
+РАЈКОВИЋ МИЉКО
+РАЈКОВИЋ МИРКО
+РАЈКОВИЋ МИРОЉУБ
+РАЈКОВИЋ НИКОЛА
+РАЈКОВИЋ ПЕТАР
+РАЈКОВИЋ РАЈКО
+РАЈКОВИЋ РАТКО
+РАЈКОВИЋ СЛАВКО
+РАЈКОВИЋ СЛОБОДАН
+РАЈКОВИЋ СРБОЉУБ
+РАЈКОВИЋ СРЕТЕН
+РАЈКОВИЋ СТЕВАН
+РАЈКОВИЋ СТОЈА
+РАЈКОВИЋ СВЕТИСЛАВ
+РАЈКОВИЋ ТАТЈАНА
+РАЈКОВИЋ ТОМИСЛАВ
+РАЈКОВИЋ ВЕЛИМИР
+РАЈКОВИЋ ВИДОСАВ
+РАЈКОВИЋ ВЛАСТИМИР
+РАЈЛИЋ МИЛКА
+РАЈЛИЋ НЕВЕНКА
+РАЈМОВСКА ЈЕЛЗА
+РАЈНИЋ ДРАГАН
+РАЈНИЋ НОВАК
+РАЈНИНГЕР ЈОЖЕФ
+РАЈНОВИЋ АЛОЈЗ
+РАЈНОВИЋ БЛАЖ
+РАЈНОВИЋ ЈЕЛЕНА
+РАЈНОВИЋ ЈОВАН
+РАЈНОВИЋ ЈУЛИЈАНА
+РАЈНОВИЋ НАДА
+РАЈНОВИЋ СНЕЖАНА
+РАЈНПРЕХТ ВЕРА
+РАЈТА ИШТВАН
+РАЈТА МАРИЈА
+РАЈТА НИКОЛА
+РАЈТЕНБАХ ЕЛЕМИР
+РАЈТЕР ДРАГИЦА
+РАЈТЕР ЗОЛТАН
+РАК АНИЦА
+РАК МАРИЈА
+РАК НИКОЛА
+РАК ВЕЛИБОР
+РАКШАЊИ ЛАДИСЛАВ
+РАКАС ЂОРЂЕ
+РАКАС РАДОЈКА
+РАКАЗОВ МИОДРАГ
+РАКЕТИЋ ТОМИСЛАВ
+РАКИЋ ЖАРКО
+РАКИЋ ЖИВКА
+РАКИЋ ЖИВКО
+РАКИЋ ЂОРЂЕ
+РАКИЋ ЂОРЂЕ
+РАКИЋ ЂОРЂЕ
+РАКИЋ ЂУРА
+РАКИЋ АЛЕКСАНДАР
+РАКИЋ АНЂЕЛИЈА
+РАКИЋ АНЂЕЛКА
+РАКИЋ АНАСТАСИЈА
+РАКИЋ АНА
+РАКИЋ БЛАГОЈЕ
+РАКИЋ БОЖО
+РАКИЋ БОГДАНКА
+РАКИЋ БОРО
+РАКИЋ БРАНИМИР
+РАКИЋ БРАНИСЛАВ
+РАКИЋ БРАНКА
+РАКИЋ БРАНКО
+РАКИЋ ДАРИНКА
+РАКИЋ ДОМИНКА
+РАКИЋ ДРАГАНА
+РАКИЋ ДРАГАН
+РАКИЋ ДРАГИША
+РАКИЋ ДРАГОМИР
+РАКИЋ ДУШАНКА
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ДУШАН
+РАКИЋ ГАВРА
+РАКИЋ ГЛИГОРИЈЕ
+РАКИЋ ГОРДАНА
+РАКИЋ ГРУЈА
+РАКИЋ ИВАН
+РАКИЋ ЈОВАНКА
+РАКИЋ ЈОВАН
+РАКИЋ ЈОВАН
+РАКИЋ ЈОВАН
+РАКИЋ ЈОВИЦА
+РАКИЋ КАТИЦА
+РАКИЋ КЛЕМЕНТ
+РАКИЋ ЛАЗАР
+РАКИЋ ЉИЉАНА
+РАКИЋ ЉИЉАНА
+РАКИЋ ЉИЉАНА
+РАКИЋ ЉУБИША ДР ЛЕКАР
+РАКИЋ ЉУБИША
+РАКИЋ ЉУБИЦА
+РАКИЋ ЉУБИЦА
+РАКИЋ ЉУБИЦА
+РАКИЋ ЉУБИЦА
+РАКИЋ ЉУБОМИР
+РАКИЋ ЉУБО
+РАКИЋ МАТИЈА
+РАКИЋ МИЛАНКА
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛАН
+РАКИЋ МИЛЕНКО
+РАКИЋ МИЛЕНКО
+РАКИЋ МИЛЕНКО
+РАКИЋ МИЛИЦА
+РАКИЋ МИЛИНА
+РАКИЋ МИЛИВОЈЕ
+РАКИЋ МИЛИВОЈ
+РАКИЋ МИЛИВОЈ
+РАКИЋ МИЛИВОЈ
+РАКИЋ МИЛКА
+РАКИЋ МИЛОШ
+РАКИЋ МИЛОВАН
+РАКИЋ МИЛУТИН
+РАКИЋ МИОДРАГ
+РАКИЋ МИРА
+РАКИЋ МИРА
+РАКИЋ МИРЈАНА
+РАКИЋ МИРЈАНА
+РАКИЋ МИРЈАНА
+РАКИЋ МИРЈАНА
+РАКИЋ МИРОСЛАВА
+РАКИЋ НАТАЛИЈА
+РАКИЋ НЕБОЈША
+РАКИЋ НЕДЕЉКО
+РАКИЋ НЕНАД
+РАКИЋ НЕНАД
+РАКИЋ НИКОЛА
+РАКИЋ НИКОЛА
+РАКИЋ НОВАК
+РАКИЋ ОБРАД
+РАКИЋ ПАЈА
+РАКИЋ ПАНЕ
+РАКИЋ ПАВЛЕ
+РАКИЋ ПЕТАР
+РАКИЋ ПЕТАР
+РАКИЋ ПРЕДРАГ
+РАКИЋ РАДМИЛА
+РАКИЋ РАДМИЛА
+РАКИЋ РАДОЈКА
+РАКИЋ РАДОЈКА
+РАКИЋ РАДОСЛАВ ДИПЛ ИНГ
+РАКИЋ РАДОВАН
+РАКИЋ РАДОВАН
+РАКИЋ РАДОВАН
+РАКИЋ РАДОВАН
+РАКИЋ РАДОВАН
+РАКИЋ РАЈКО
+РАКИЋ РАЈКО
+РАКИЋ РУЖИЦА
+РАКИЋ САВА
+РАКИЋ СЛАВКА
+РАКИЋ СЛАВКО
+РАКИЋ СЛОБОДАН
+РАКИЋ СЛОБОДАН
+РАКИЋ СЛОБОДАН
+РАКИЋ СМИЉАНА
+РАКИЋ СОФИЈА
+РАКИЋ СТАМЕНКА
+РАКИЋ СТЕВАНКА
+РАКИЋ СТЕВАН
+РАКИЋ СТЕВАН
+РАКИЋ СТЕВАН
+РАКИЋ СТЕВАН
+РАКИЋ СТЕВИЦА
+РАКИЋ СТОЈАНКА
+РАКИЋ СТОЈАН
+РАКИЋ СВЕТОМИР
+РАКИЋ СВЕТОЗАР
+РАКИЋ ТИМА
+РАКИЋ ТОДОР
+РАКИЋ ТОМИСЛАВ
+РАКИЋ ВАСИЛИЈЕ
+РАКИЋ ВЕЛЕМИР
+РАКИЋ ВЕРА
+РАКИЋ ВЕРА
+РАКИЋ ВИДОСАВА
+РАКИЋ ВЛАДИМИР
+РАКИЋ ВЛАДИМИР
+РАКИЋ ВЛАДИМИР
+РАКИЋ ВЛАДИМИР
+РАКИЋ ВЛАДИМИР
+РАКИЋ ЗАГА
+РАКИЋ ЗЛАТА
+РАКИЋ ЗОРАН
+РАКИЋ ЗОРКА
+РАКИЋЕВИЋ СТАМЕНА
+РАКИЋЕВИЋ ТИХОМИР
+РАКИЋЕВИЋ ЗОРАН
+РАКИН ЂОРЂЕ
+РАКИН АНТУН
+РАКИН БОРИСЛАВ
+РАКИН ГОЈКО
+РАКИН ЈЕЛИЦА
+РАКИН ЈУЛИЈАНА
+РАКИН-МАРТИНОВИЋ РАДМИЛА
+РАКИН РАДОВАН
+РАКИТА АНКИЦА
+РАКИТА БОЖО
+РАКИТА ЦВИЈАН
+РАКИТА ЦВИЈО
+РАКИТА ЈОВО
+РАКИТА ЉИЉАНА
+РАКИТА МИЛАН
+РАКИТА МЛАДИНКО
+РАКИТА ПЕТАР
+РАКИТА СИМКА
+РАКОЧЕВИЋ ЂОРЂЕ
+РАКОЧЕВИЋ БОРО
+РАКОЧЕВИЋ ГРУЈИЦА
+РАКОЧЕВИЋ МАРИЈАН
+РАКОЧЕВИЋ МАРКО
+РАКОЧЕВИЋ МИЛАН
+РАКОЧЕВИЋ МИЛИЈА
+РАКОЧЕВИЋ МИРОСЛАВ
+РАКОЧЕВИЋ РАДЕ
+РАКОЧЕВИЋ РАДМИЛА
+РАКОШ ЈАНОШ
+РАКОШ КАТИЦА
+РАКОШ ЗВОНИМИР
+РАКОШИ НАДА
+РАКОШИ ВЛАДИСЛАВ
+РАКОЊАЦ БОГОЉУБ
+РАКОЊАЦ ПУНИША
+РАКОВИЋ АЛЕКСАНДАР
+РАКОВИЋ ДРАГИЦА
+РАКОВИЋ ДУШАН
+РАКОВИЋ ЈУГОСЛАВ
+РАКОВИЋ ЉУБИНКА
+РАКОВИЋ МИЛАН
+РАКОВИЋ МИЛОВАН
+РАКОВИЋ НИКОЛА
+РАКОВИЋ ОСТОЈА
+РАКОВИЋ РАДОМИР
+РАКОВИЋ РАТКО
+РАКОВИЋ СЛАВКО
+РАКОВИЋ СТАНИСЛАВ
+РАКОВИЋ ТОМИСЛАВ
+РАКОВИЋ ВИТОМИРКА
+РАКОВИЋ ВЛАДО
+РАКУШИЋ ВЛАДИМИР
+РАЛЕТИЋ ЖИВКА
+РАЛЕТИЋ ЂОРЂЕ
+РАЛЕТИЋ ЂУРА
+РАЛЕТИЋ АНЂЕЛКА
+РАЛЕТИЋ АНА
+РАЛЕТИЋ БОГДАН
+РАЛЕТИЋ ДОБРИЦА
+РАЛЕТИЋ ДРАГАН
+РАЛЕТИЋ ДУШАН
+РАЛЕТИЋ ИЛИЈА
+РАЛЕТИЋ ЈЕЛИЦА
+РАЛЕТИЋ ЛАЗАР
+РАЛЕТИЋ ЛАЗАР
+РАЛЕТИЋ ЛАЗАР
+РАЛЕТИЋ ЛЕПОСАВА
+РАЛЕТИЋ МАЈА
+РАЛЕТИЋ МИЛАН
+РАЛЕТИЋ МИЛОШ
+РАЛЕТИЋ МИЛОШ
+РАЛЕТИЋ МИЛОРАД
+РАЛЕТИЋ МИРКО
+РАЛЕТИЋ МИРОСЛАВ
+РАЛЕТИЋ МЛАДЕН
+РАЛЕТИЋ ПЕТАР
+РАЛЕТИЋ-САВИЋ ЈЕЛЕНА
+РАЛЕТИЋ-САВИЋ ЈЕЛЕНА
+РАЛЕТИЋ ВЕЉКО
+РАЛЕТИЋ ВЕРА
+РАЛЕТИЋ ЗОРАН
+РАЛЕТИЋ ЗОРИЦА
+РАЛЕВИЋ НЕБОЈША
+РАЛИЋ ЖИВОЈИН
+РАЛИЋ БРАНКО
+РАЛИЋ ДРАГИЦА
+РАЛИЋ ДУШАН
+РАЛИЋ МАРИЈА
+РАЛИЋ МАРИЈА
+РАЛИЋ МИЛЕ
+РАЛИЋ МОМИРКА
+РАЛИЋ СТЕВАН
+РАЛИЋ СТЕВА
+РАЉИЋ АНЂЕЛКО
+РАЉИЋ ДРАГИЊА
+РАЉИЋ ДУШАН
+РАЉИЋ НЕДЕЉКО
+РАМАЧ АНИЦА
+РАМАЧ ИВАН
+РАМАЧ ЈУЛИЈАН
+РАМАЧ ЛЕОНА
+РАМАЧ ЉУБОМИР
+РАМАЧ ЉУБОМИР
+РАМАЧ ЉУБОМИР
+РАМАЧ МАРИЈА
+РАМАЧ МИХАЈЛО
+РАМАЧ МИХАЈЛО
+РАМАЧ МИРОСЛАВ
+РАМАЧ НАДА
+РАМАЧ НАТАЛИЈА
+РАМАЧ ПЕТАР
+РАМАЧ СИМЕОН
+РАМАЧ ВЛАДИМИР
+РАМАЧ ЗДЕНКА
+РАМАЋ МИЛЕВА
+РАМАДАНИ РОЗА
+РАМАДАНОВ МУМУДИЈА
+РАМАДАНОВИЋ ЂЕМАЉ
+РАМАДАНОВИЋ ЈАКОВ
+РАМАДАНОВСКИ НАДА
+РАМАДАНОВСКИ НЕДЕЉКО
+РАМАДАНСКИ ДРАГИЋ
+РАМАДАНСКИ ЈЕЛЕНА
+РАМАДАНСКИ МИЛИНКА
+РАМАЗАНОВ ВИКТОР
+РАМИЋ ЂУКА
+РАМИЋ ЈОВАНКА
+РАМИЋ ЛАЗАР
+РАМИЋ ЛУКА
+РАМИЋ ЛУКА
+РАМИЋ МИЛОШ ДИПЛ ОЕЦ
+РАМИЋ НИКОЛА
+РАМИЋ РАДОЈКА
+РАМИЋ СТОЈАН
+РАМИЋ ВЕЛИДА
+РАМЉАК ВЛАДИМИР
+РАМЉАК ЗЛАТКО
+РАНЧИЋ ШИМЕ
+РАНЧИЋ ДУШАНКА
+РАНЧИЋ ХРАНИСЛАВ
+РАНЧИЋ ЈОРДАН
+РАНЧИЋ МИЛОШ
+РАНЧИЋ РАНКО
+РАНЂЕЛОВИЋ ЂОРЂЕ
+РАНЂЕЛОВИЋ ХРАНИСЛАВ
+РАНЂЕЛОВИЋ ИЛИЈА
+РАНЂЕЛОВИЋ ЉИЉАНА
+РАНЂЕЛОВИЋ ЉУБИША
+РАНЂЕЛОВИЋ ЉУБОДРАГ
+РАНЂЕЛОВИЋ МИРЈАНА
+РАНЂЕЛОВИЋ МИРОСЛАВ
+РАНЂЕЛОВИЋ МИРОСЛАВ
+РАНЂЕЛОВИЋ МЛАДЕН
+РАНЂЕЛОВИЋ ОБРАД
+РАНЂЕЛОВИЋ РУЖИЦА
+РАНЂЕЛОВИЋ СЛАВОЉУБ
+РАНЂЕЛОВИЋ СТЕВАН
+РАНЂЕЛОВИЋ ТОМИСЛАВ
+РАНЂЕЛОВИЋ ВЛАСТИМИР
+РАНЂЕЛОВИЋ ЗОРАН
+РАНДЕЉ ЂОРЂЕ
+РАНДЕЉ ЂУРЂИНКА
+РАНДЕЉ ЛАЗАР
+РАНДЕЉ ОЛИВЕРА
+РАНДЕЉ ПЕТАР
+РАНДЕЉ СТЕВАН
+РАНДЕЉ СВЕТОЗАР
+РАНГЕЛОВ ДИМИТАР
+РАНГЕЛОВ СТЕВАН
+РАНГЕЛОВ СТЕВАН
+РАНИЋ ВЛАДИСЛАВ
+РАНИН ЈОВАН
+РАНИН ЛАЗАР
+РАНИСАВ РАДИВОЈ
+РАНИСАВЉЕВ ЖИВКО
+РАНИСАВЉЕВ ЂОРЂЕ
+РАНИСАВЉЕВ ЂОРЂЕ
+РАНИСАВЉЕВ ГОРДАНА
+РАНИСАВЉЕВ МИЛИЦА
+РАНИСАВЉЕВ МИЛОШ
+РАНИСАВЉЕВ ПАЈА
+РАНИСАВЉЕВ РАДА
+РАНИСАВЉЕВ РАДМИЛА
+РАНИСАВЉЕВ РАДМИЛА
+РАНИСАВЉЕВ РАДОСЛАВ
+РАНИСАВЉЕВ СЛАВОЉУБ
+РАНИСАВЉЕВ СТЕВАН
+РАНИСАВЉЕВ ТИЈАНА
+РАНИСАВЉЕВИЋ ЖАРКО
+РАНИСАВЉЕВИЋ ЖЕЉКО
+РАНИСАВЉЕВИЋ БОГУМИЛА
+РАНИСАВЉЕВИЋ ДОБРИВОЈ
+РАНИСАВЉЕВИЋ ДУШАН
+РАНИСАВЉЕВИЋ ЈЕЛЕНА
+РАНИСАВЉЕВИЋ НЕБОЈША
+РАНИСАВЉЕВИЋ РАДИВОЈ
+РАНИСАВЉЕВИЋ СИНИША
+РАНИСАВЉЕВИЋ СЛАВКА
+РАНИСАВЉЕВИЋ ВИОЛЕТА
+РАНИСАВЉЕВИЋ ЗОРАН
+РАНИСЛАВ-ЛАРТY НАДА ДР
+РАНИТОВИЋ БОШКО
+РАНИТОВИЋ БОГОЉУБ
+РАНИТОВИЋ ДИВНА
+РАНИТОВИЋ ДРАГОСЛАВ
+РАНИТОВИЋ ЈЕЛИЦА
+РАНИТОВИЋ СЛАВИЦА
+РАНИТОВИЋ ВЕЛИСЛАВ
+РАНКИЋ СТЕВО
+РАНКИЋ ТОМИСЛАВ
+РАНКОВ АНКИЦА
+РАНКОВ ДРАГАН ДР
+РАНКОВ ДРАГОЉУБ
+РАНКОВ ГРОЗДА
+РАНКОВ ИРЕНА
+РАНКОВ ИВАНКА
+РАНКОВ ЈОВАН
+РАНКОВ КОСТА
+РАНКОВ ЉИЉАНА
+РАНКОВ ЉУБИЦА
+РАНКОВ МАРИЈА
+РАНКОВ МИЛАН
+РАНКОВ МИЛИВОЈ
+РАНКОВ МИРОСЛАВ
+РАНКОВ НЕДЕЉКО
+РАНКОВ НЕДЕЉКО
+РАНКОВ ОЛГИЦА
+РАНКОВ ПЕТАР
+РАНКОВ РАДИСЛАВ
+РАНКОВ РАДМИЛА
+РАНКОВ РАДОЈКА
+РАНКОВ СТЕВАН
+РАНКОВ СТЕВАН
+РАНКОВ ТАНАСИЈЕ
+РАНКОВ ЗОРА
+РАНКОВИЋ ЖИВКО
+РАНКОВИЋ АНЂЕЛКА ДР
+РАНКОВИЋ АНДРИЈА
+РАНКОВИЋ АНКА
+РАНКОВИЋ БОШКО
+РАНКОВИЋ БОЈАН
+РАНКОВИЋ БОРИВОЈ
+РАНКОВИЋ БРАНИСЛАВ
+РАНКОВИЋ БРАНКА
+РАНКОВИЋ ДАРИНКА
+РАНКОВИЋ ДЕСАНКА
+РАНКОВИЋ ДРАГО
+РАНКОВИЋ ДУШАН
+РАНКОВИЋ ДУШИЦА
+РАНКОВИЋ ДУБРАВКА
+РАНКОВИЋ ИРЕНА
+РАНКОВИЋ ИВАН
+РАНКОВИЋ ЈОВАН
+РАНКОВИЋ ЉУБИЦА
+РАНКОВИЋ МЕЛАНИЈА
+РАНКОВИЋ МИЛИЦА
+РАНКОВИЋ МИРОСЛАВ
+РАНКОВИЋ НИКОЛА ДИПЛ ИНГ
+РАНКОВИЋ ПРЕДРАГ
+РАНКОВИЋ РАДИВОЈ
+РАНКОВИЋ РАТОМИР
+РАНКОВИЋ РОЗАЛИЈА
+РАНКОВИЋ СЛОБОДАН
+РАНКОВИЋ СТЕВАН
+РАНКОВИЋ СВЕТОЗАР
+РАНКОВИЋ СВЕТОЗАР
+РАНКОВИЋ ТОМИСЛАВ
+РАНКОВИЋ ВУКОСАВА
+РАНКОВИЋ ЗОРАН
+РАНОГАЈЕЦ ИВАН
+РАОНИЋ ЂОРЂЕ
+РАОНИЋ ИКОНИЈА
+РАОНИЋ ЈАНКО
+РАОНИЋ РАДЕНКО
+РАОНИЋ СПАСОЈЕ
+РАОНИЋ ВУКОЛА
+РАПЧО КАТАЛИН
+РАПАИЋ ДЕЈАН
+РАПАИЋ МИОДРАГ ДР
+РАПАИЋ РАДЕНКА
+РАПАИЋ СТЕВАН
+РАПАЈИЋ АНАМАРИЈА
+РАПАЈИЋ БОРИВОЈЕ
+РАПАЈИЋ ДУШКО
+РАПАЈИЋ МИЛАН АДВОКАТ
+РАПАЈИЋ МИЛАН
+РАПАЈИЋ МИЛАН
+РАПАЈИЋ РАДОЈА
+РАПАЈИЋ СТЕВАН
+РАПАЈИЋ ТАМАРА
+РАПИЋ БОРЕ
+РАПИЋ ДРАГОМИР
+РАПИЋ ДУШАНКА
+РАПИЋ ЈОВАН
+РАПИЋ ЈОВАН
+РАПИЋ МИЛАН
+РАПИЋ НАДА
+РАПИЋ НЕНАД
+РАПИЋ РАДЕ
+РАПИЋ РУШКО
+РАПО СТЈЕПАН
+РАПОТИ ИШТВАН
+РАСПОПОВИЋ БОШКО
+РАСПОПОВИЋ МИЛОШ
+РАСПОПОВИЋ СЛОБОДАН
+РАСПОПОВИЋ СВЕТИСЛАВ
+РАСПОПОВИЋ ВЛАДИСЛАВ
+РАСТАВАЦ ПЕТАР
+РАСТИК ЂОРЂЕ
+РАСТОВАЦ ЂУРО
+РАСТОВИЋ ИЛИЈА
+РАСТОВИЋ ЈЕЛЕНА
+РАСТОВИЋ МИЛАН
+РАСТОВИЋ МИЛИЦА
+РАСТОВИЋ-ПЛИВЕЛИЋ ДЕСАНКА
+РАСТОВИЋ РАДОЈКА
+РАСТОВИЋ СЛОБОДАН
+РАСТОВИЋ СТЕВАН
+РАСТОВИЋ ВЕРА
+РАТ ФЕРЕНЦ
+РАТ ФРАЊА
+РАТ ЈАКОБ
+РАТ ЈОСИП
+РАТАЈАЦ ДРАГОЉУБ ДР
+РАТГЕБЕР ЈУЛИЈА
+РАТГЕБЕР ЛАСЛО
+РАТИЋ ЂУРЂИНА
+РАТИЋ БОРА
+РАТИЋ ДУШАН
+РАТКЕЛИЋ МИЛАН
+РАТКОВ ЖИВКО
+РАТКОВ ЂОРЂЕ
+РАТКОВ АЦА
+РАТКОВ БОРИВОЈ
+РАТКОВ ЦЕЦИЛИЈА
+РАТКОВ ДРАГАН
+РАТКОВ ДРАГИЊА
+РАТКОВ ДРАГИЊА
+РАТКОВ ДУШАНКА
+РАТКОВ ДУШАН
+РАТКОВ ЈЕЛЕНА
+РАТКОВ ЈУЛИЈАНА
+РАТКОВ КАТАРИНА
+РАТКОВ ЛЕПОСАВА
+РАТКОВ МИЋО
+РАТКОВ МИЛЕНКО
+РАТКОВ МИЛЕНКО
+РАТКОВ МИЛИЦА
+РАТКОВ НЕНАД
+РАТКОВ НЕНАД
+РАТКОВ ПАВЛЕ
+РАТКОВ ПРЕДРАГ
+РАТКОВ РАДЕ
+РАТКОВ РАДИВОЈ
+РАТКОВ РАДОМИР
+РАТКОВ РУЖИЦА
+РАТКОВ САВКА
+РАТКОВ СМИЉАНА
+РАТКОВ СТАНИСЛАВА
+РАТКОВ СТАНИСЛАВ
+РАТКОВ ВЕРА
+РАТКОВ ВИДОСАВА
+РАТКОВ ВЛАДИМИР
+РАТКОВ ВЛАДИМИР
+РАТКОВ ВОЈИСЛАВ
+РАТКОВ ВУЈИЦА
+РАУШ КЛАУДИЈА
+РАУШ РИХАРД
+РАУШЕНБЕРГЕР МАРТИН
+РАУШКИ ЂОРЂЕ
+РАУШКИ АНГЕЛИНА
+РАУШКИ ДАНИЛО
+РАУШКИ ЉИЉАНА
+РАУШКИ МИЛАНА
+РАУШКИ МИЛОШ
+РАУСАВЉЕВИЋ ЂОРЂЕ
+РАУСАВЉЕВИЋ ДУШАНКА
+РАУЗА ПАЛКО
+РАВАЈИЋ ЂУРО
+РАВАСИ ЉУБИЦА
+РАВИЋ НИКОЛА
+РАВИЋ СЛОБОДАНКА
+РАВЛИЋ-БАЊАЦ СНЕЖАНА
+РАВЛИЋ ПЕЈО
+РАВЛИЋ ВИДА
+РАВЛИЈА ДРАГАН
+РАЗДЕВШЕК СТОЈАНКА
+РАЗИЋ ЏЕМАЛ
+РАЗМОВСКИ НИКОЛА
+РАЗУМЕНИЋ-КОТРОШАН МИЛЕНА
+РЕЧЕИ ИЛОНКА
+РЕЧКО ИЛЕШ
+РЕШЋАНСКИ БОШКО
+РЕШЋАНСКИ БОГДАН
+РЕШЋАНСКИ ВЕРА
+РЕШЕТАР АНТЕ
+РЕШЕТАР СТАНА
+РЕШЕТАРОВИЋ ЈОВАН
+РЕШИТИ ЂОРЂЕ
+РЕШЊАК АНДРИЈА
+РЕШЊАК ЛАСЛО
+РЕШЊАК СТЕВАН
+РЕШЊАК ЗОРИЦА
+РЕЖЊАК ЛАСЛО
+РЕЖУК ЈОСИП
+РЕЂЕП ДРАШКО
+РЕЂЕПИ ЏЕЉАН
+РЕЂЕПИ МИЛАИМ
+РЕЂЕПОВИЋ АЛИЈА
+РЕБА БЛАГОЈЕ
+РЕБА ИГОР
+РЕБА ИГОР
+РЕБИЋ БОГДАН ДИПЛ ИНГ
+РЕБИЋ ДРАГАН
+РЕБИЋ НЕДЕЉКО
+РЕБИЋ НЕДЕЉКО
+РЕБИЋ СИМЕОН
+РЕБИЋ СИМО
+РЕБИЋ СЛОБОДАН ДР
+РЕБИЋ ВЛАДИМИР
+РЕБРИНА КАТАРИНА
+РЕЏА ИБРАХИМ
+РЕЏЕК ЈОВАН
+РЕЏЕП ЈУСНИЈА
+РЕЏЕПОВ ШЕВКИН
+РЕЏЕПОВ КАМБЕР
+РЕДЕ РУДОЛФ
+РЕДИГ ВИЛИМ
+РЕДЛИ ЂОРЂЕ
+РЕДЛИ МАРИЈА
+РЕДЛИ ВЕРА
+РЕГАЈЗ СТЕВАН
+РЕГЕЦ ЕТЕЛКА
+РЕГЕЉАЦ ЉУБИЦА
+РЕГЕЉАЦ МАРА
+РЕГЕР ЈОВАН
+РЕГЛ ВЛАДИМИР
+РЕГОДИЋ СВЕТОЗАР
+РЕГОЈЕВИЋ МЛАЂЕНКО
+РЕХАК ИМРЕ
+РЕХАК ЛАСЛО
+РЕХАК ОЛГА
+РЕХНЕР МАРИЈА
+РЕХНЕР СТАМЕНКА
+РЕИНХОЛЦ ЂЕЗЕ
+РЕИНХОЛЦ ЂЕЗЕ
+РЕИНХОЛЗ ЂЕЗЕ
+РЕКА АРИФ
+РЕКА-ИВАНОВИЋ ДУШИЦА
+РЕКЕЋЕ ШАНДОР
+РЕКЕЦКИ ЕЛЕОНОРА
+РЕКЕЦКИ ЈОЖЕФ
+РЕКИЋ ХУСЕИН
+РЕЛИЋ ЂОРЂЕ
+РЕЛИЋ ЂОРЂЕ
+РЕЛИЋ ДАРКО
+РЕЛИЋ ДИМИТРИЈЕ
+РЕЛИЋ ГОЈКО
+РЕЛИЋ ЈОВАН
+РЕЛИЋ ЈОВИЦА
+РЕЛИЋ КОНСТАНТИН
+РЕЛИЋ ЉУБАН
+РЕЛИЋ МИЛАН
+РЕЛИЋ МИЛЕНКО
+РЕЛИЋ МИЛИВОЈ
+РЕЛИЋ МИРА
+РЕЛИЋ ПАВЛЕ
+РЕЛИЋ ПЕТАР
+РЕЛИЋ РАДИНКА
+РЕЛИЋ САВА
+РЕЛИЋ СЛАВОЉУБ
+РЕЛИЋ СОФИЈА
+РЕЛИЋ СОФИЈА
+РЕЛИЋ СПОМЕНКА ДИПЛ ПРАВНИК
+РЕЛИЋ СРЕТА
+РЕЉАНОВИЋ МАРИЈА
+РЕЉИЋ ЂУРИЦА
+РЕЉИЋ ЂУРО
+РЕЉИЋ БОЖИДАР
+РЕЉИЋ ДАМЈАНКА
+РЕЉИЋ ДАНИЛО
+РЕЉИЋ ЈОВАН
+РЕЉИЋ ЉУБОМИР
+РЕЉИЋ МАРА
+РЕЉИЋ МИЛОРАД
+РЕЉИЋ РОМАН
+РЕЉИЋ СЛАВКО
+РЕЉИЋ СМИЉА
+РЕЉИЋ СНЕЖАНА
+РЕЉИЋ СТЕВАН
+РЕЉИЋ СТЕВА
+РЕЉИЋ ЗЛАТКО
+РЕЉИЋ ЗОРКА
+РЕЉИН ДУШАНКА
+РЕЉИН ДУШАН
+РЕЉИН ДУШАН
+РЕЉИН ИГЊАТ ДР
+РЕЉИН ИЛОНА
+РЕЉИН ИВАН
+РЕЉИН ЛАЗАР
+РЕЉИН ЛЕПОСАВА
+РЕЉИН МАРИЦА
+РЕЉИН МИЛАН
+РЕЉИН МИЛАН
+РЕЉИН МИЛИЦА
+РЕЉИН МИЛИВОЈ
+РЕЉИН МИЛОШ
+РЕЉИН МИЛОШ
+РЕЉИН МИЛОШ
+РЕЉИН МИЛОШ
+РЕЉИН МИЛОРАД
+РЕЉИН НАДА
+РЕЉИН ПРОКОПИЈЕ
+РЕЉИН РАДОВАН
+РЕЉИН САВА
+РЕЉИН СИМА
+РЕЉИН СЛОБОДАН
+РЕЉИН СТЕВАН
+РЕЛОТА РУДОЛФ
+РЕМЕЦКИ ДРАГУТИН
+РЕМЕЦКИ ПЕТАР
+РЕМЕЛИ АНТОН
+РЕМЕЛИ ЛАСЛО
+РЕМЕНАР ДРАГУТИН
+РЕМЕР БРАНИСЛАВ
+РЕМЛИНГЕР РОБЕРТ
+РЕНЧАР ШАНДОР
+РЕНЧАР ТИВАДАР
+РЕНЧЕВИЋ МИЛАН
+РЕНДУЛИЋ МАРКО
+РЕНДУЛИЋ СТОЈАН
+РЕПШТОК ЈОЖЕФ
+РЕПАШИ ЈОСИП
+РЕПАШИ СТЕВАН
+РЕПАЦ ЖУЖАНА
+РЕПАЦ ЂОРЂЕ
+РЕПАЦ АНА
+РЕПАЦ ИСА
+РЕПАЦ ЈОВАН
+РЕПАЦ КОВИЉКА
+РЕПАЦ МИРОСЛАВ
+РЕПАЦ ПЕРКИЦА
+РЕПАЦ ПЕТАР
+РЕПАЦ СЛАВКО
+РЕПАЦ СТАНИША
+РЕПАЦ ВАСИЛИЈА
+РЕПИЋ ЖИВАН
+РЕПИЋ ДАНИЦА
+РЕПИЋ ЕМИЛ
+РЕПИЋ ГИЗЕЛА
+РЕПИЋ ИВАН
+РЕПИЋ МАРКО
+РЕПИЋ МИЛЕНА
+РЕПИЋ МИЛКА
+РЕПИЋ ВЕРИЦА
+РЕПИЋ ЗОРАН
+РЕСАН АНА
+РЕСАНОВИЋ АНКА
+РЕСАНОВИЋ ДРАГАН
+РЕСАНОВИЋ ЉУБО
+РЕСАНОВИЋ НАДА
+РЕСАНОВИЋ ПЕРО
+РЕСМАН ЗДРАВКО
+РЕСУЛОВСКИ СТОЈАН
+РЕУ ЛАВИНЕЛ
+РЕВЕС АНДРИЈА
+РЕВИД КАТАРИНА
+РЕЗАНЦОВ КАТИЦА
+РЕЗЕЦ АНТОН
+РЕЗНИЧЕК КАРЛО
+РИЖАЊИ ИРЕНА
+РИЂИЧКИ ЂОКА
+РИЂИЧКИ ЂОРЂЕ
+РИЂИЧКИ МИЛАНКА
+РИЂИЧКИ МИЛАН
+РИЂИЧКИ СПОМЕНКА
+РИЂИК-ГРУЈИЋ ЧЕДОМИР
+РИЂИК-ГРУЈИЋ ЈАДРАНКА
+РИЂИК-ГРУЈИЋ ВЕЛИМИР
+РИБАР ШАНДОР
+РИБАР БЕЛА ДР
+РИБАР ИМРЕ
+РИБАР КАТИЦА
+РИБАРЕВИЋ ВЕРА
+РИБАРОВ МИРОСЛАВ
+РИБАРОВ СЛАВИЦА
+РИБИЧ РУЖА
+РИБИЋ ЧЕДО
+РИБИЋ БРАНКО
+РИБИЋ ФРАНЦ
+РИБИЋ ЈОВАН
+РИБИЋ МИХАЈЛО
+РИБИЋ МИЛАН
+РИБИЋ ПАВО
+РИБИЋ ПЕТАР
+РИБИЋ СТАНКО
+РИБИЋ ЗОРИЦА
+РИБОВИЋ АМАЛИЈА
+РИЦ МИХАЉ ДИПЛ ОЕЦ
+РИЦ РУДОЛФ
+РИЦ ВЕСЕЛИН
+РИЦА АНИЦА
+РИЦЕ МАРГИТА
+РИГО ЂУЛА
+РИГО ЛАСЛО
+РИХАК НАНДОР
+РИХТАРЕЦ КАТАРИНА
+РИЈАВЕЦ ИВАН
+РИКЕР ЗВОНИМИР
+РИКИЋ ЖЕЉКО
+РИКИЋ ДРАГИЦА
+РИКИЋ МИЛАДИН
+РИКИЋ МИЛЕНКО
+РИЛ ПАЛ
+РИЛАК МИЛОМИР
+РИЛКЕ РОБЕРТ
+РИМШНАЈДЕР РОБЕРТ
+РИМАЦ ЈОСИП
+РИМАН ЕГОН ДР
+РИМАР ЛЕОНА
+РИМАР ВЛАДИМИР
+РИМСКИ ЖАРКО
+РИМСКИ ЖАРКО
+РИМСКИ ЖАРКО
+РИМСКИ ЖАРКО
+РИМСКИ ЂОКА
+РИМСКИ БИСЕРКА
+РИМСКИ БИСЕРКА
+РИМСКИ БРАНИСЛАВ
+РИМСКИ БРАНКА
+РИМСКИ БРАНКО
+РИМСКИ ЈАСМИНА
+РИМСКИ ЈЕЛЕНА
+РИМСКИ МИЛАН
+РИМСКИ МИЛИЦА
+РИМСКИ НАТАЛИЈА
+РИМСКИ НОВАК
+РИМСКИ САВА
+РИМСКИ САВА
+РИМСКИ СМИЉА
+РИМСКИ СМИЉА
+РИМСКИ СТЕВАН
+РИС ШАНДОР
+РИС АЛЕКСАНДАР
+РИС ДРАГИЊА
+РИС ДУШКО
+РИС ГЕЗА
+РИС НЕДЕЉКО
+РИС СТЕВАН
+РИС ТАЊА
+РИС ЗДРАВКО
+РИСОВИЋ ДУШАН
+РИСОВИЋ НЕДЕЉКО
+РИСОВИЋ НЕДЕЉКО
+РИСТА ЖЕЉКА
+РИСТАНОВИЋ ЦВЕТИН
+РИСТАНОВИЋ РАДЕ
+РИСТАНОВИЋ РАДОСЛАВ
+РИСТАНОВИЋ ВЕРИЦА
+РИСТАНОВИЋ ВОЈИМИР
+РИСТАНОВИЋ ЗДРАВКО
+РИСТАНОВИЋ ЗОРАН
+РИСТАНОВИЋ ЗОРАН
+РИСТИЋ ЂОРЂЕ ДР ЛЕКАР
+РИСТИЋ ЂОРЂЕ
+РИСТИЋ ЂОРЂЕ
+РИСТИЋ ЂОРЂЕ
+РИСТИЋ ЂУЈА
+РИСТИЋ ЂУРЂА
+РИСТИЋ АЛЕКСАНДАР
+РИСТИЋ АЛЕКСАНДАР
+РИСТИЋ АЛЕКСАНДАР
+РИСТИЋ АЛЕКСАНДАР
+РИСТИЋ АЛЕКСА
+РИСТИЋ АНДРИЈА
+РИСТИЋ БОЖИДАР
+РИСТИЋ БОЖИДАР
+РИСТИЋ БОРА
+РИСТИЋ БОРИСЛАВ
+РИСТИЋ БРАНИСЛАВ
+РИСТИЋ БРАНКО
+РИСТИЋ ЦВЈЕТАНКА
+РИСТИЋ ДАНИЛО
+РИСТИЋ ДАРИНКА
+РИСТИЋ ДИМИТРИЈЕ
+РИСТИЋ ДИМИТРИЈЕ
+РИСТИЋ ДИМИТРИЈЕ
+РИСТИЋ ДОБРИВОЈЕ
+РИСТИЋ ДРАГАН
+РИСТИЋ ДРАГАН
+РИСТИЋ ДРАГИША
+РИСТИЋ ДРАГИЦА
+РИСТИЋ ДРАГОЈЛА
+РИСТИЋ ДРАГОЉУБ
+РИСТИЋ ДРАГОЉУБ
+РИСТИЋ ДУШАН ДР
+РИСТИЋ ДУШАН
+РИСТИЋ ДУШАН
+РИСТИЋ ДУШАН
+РИСТИЋ ДУШАН
+РИСТИЋ ГАВРИЛО
+РИСТИЋ ИСИДОР
+РИСТИЋ ЈАСМИНА
+РИСТИЋ ЈЕЛЕНА
+РИСТИЋ ЈЕЛЕНА
+РИСТИЋ ЈЕРЕМИЈА
+РИСТИЋ ЈОВАН ДР
+РИСТИЋ ЈОВАН ДР
+РИСТИЋ ЈОВАН
+РИСТИЋ КСЕНИЈА
+РИСТИЋ ЛАБУД ДР ЛЕКАР
+РИСТИЋ ЛАЗАР
+РИСТИЋ ЉИЉАНА
+РИСТИЋ ЉИЉАНА
+РИСТИЋ ЉУБИЦА
+РИСТИЋ ЉУБИЦА
+РИСТИЋ МАРИЈА
+РИСТИЋ МАРИЈА
+РИСТИЋ МАРИЈА
+РИСТИЋ МАРИЈА
+РИСТИЋ МАРИЈЕНКА
+РИСТИЋ МАРКО
+РИСТИЋ МИХАЈЛО
+РИСТИЋ МИЛАНКА
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛАН
+РИСТИЋ МИЛЕТА
+РИСТИЋ МИЛИВОЈЕ
+РИСТИЋ МИЛКА
+РИСТИЋ МИЛОШ
+РИСТИЋ МИЛОШ
+РИСТИЋ МИЛОРАД
+РИСТИЋ МИЛОРАД
+РИСТИЋ МИЛУН
+РИСТИЋ МИЛУТИН
+РИСТИЋ МИОДРАГ
+РИСТИЋ МИОДРАГ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МИРОСЛАВ
+РИСТИЋ МЛАДЕН
+РИСТИЋ НАДА
+РИСТИЋ НАТАЛИЈА
+РИСТИЋ НЕГОВАН
+РИСТИЋ НЕСТОР
+РИСТИЋ НИКОЛА
+РИСТИЋ НИКОЛА
+РИСТИЋ НОВИЦА
+РИСТИЋ ОЛГА
+РИСТИЋ ПАВЛЕ
+РИСТИЋ ПЕРА
+РИСТИЋ ПЕТАР
+РИСТИЋ-ПОПОВИЋ МИЛИЦА
+РИСТИЋ РАДИСАВ
+РИСТИЋ РАИСА
+РИСТИЋ РОДОЉУБ ДР
+РИСТИЋ САВА
+РИСТИЋ САВА
+РИСТИЋ САВО
+РИСТИЋ СЛАЂАН
+РИСТИЋ СЛАВИЦА
+РИСТИЋ СЛАВИЦА
+РИСТИЋ СЛАВКО
+РИСТИЋ СПОМЕНКА
+РИСТИЋ СТАНИША
+РИСТИЋ СТАНОЈЕ ДР
+РИСТИЋ СТЕВАН
+РИСТИЋ СТЕВАН
+РИСТИЋ СТЕВАН
+РИСТИЋ СТЕВАН
+РИСТИЋ СТЕВИЦА
+РИСТИЋ СВЕТИСЛАВ
+РИСТИЋ ТЕМЕЉКО
+РИСТИЋ ТОМИСЛАВ
+РИСТИЋ ВЕРИЦА
+РИСТИЋ ВИТОМИР
+РИСТИЋ ВЛАДИМИР
+РИСТИЋ ВЛАДИМИР
+РИСТИЋ ВЛАДИМИР
+РИСТИЋ ВОЈИН
+РИСТИЋ ВОЈИСЛАВ
+РИСТИЋ ЗАГОРКА
+РИСТИЋ ЗДРАВКО
+РИСТИЋ ЗОРАН
+РИСТИЋ ЗОРАН
+РИСТИН ЈОВАН
+РИСТИН МИОДРАГ
+РИСТИН МИОДРАГ
+РИСТИВОЈЕВИЋ АНЂЕЛКА
+РИСТИВОЈЕВИЋ АНИЦА
+РИСТИВОЈЕВИЋ ДЕСИМИР
+РИСТИВОЈЕВИЋ ИГЊАТ
+РИСТИВОЈЕВИЋ РАДОМИР
+РИСТИВОЈЕВИЋ РАТОМИР
+РИСТИВОЈЕВИЋ СТОЈАНКА
+РИСТИВОЈЕВИЋ ЗДРАВКО
+РИСТОВИЋ ЈОВАНКА
+РИСТОВИЋ НЕБОЈША
+РИСТОВИЋ РАДИВОЈЕ
+РИСТОВИЋ РАТКО
+РИСТОВСКИ АЛЕКСАНДАР
+РИСТОВСКИ КОСТА
+РИСТОВСКИ ЉИЉАНА
+РИСТОВСКИ ЉИЉАНА
+РИСТОВСКИ ЉУБО
+РИСТОВСКИ СИМЕОН
+РИТЕР АНКИЦА
+РИТЕР АНТОН
+РИТЕР ФРАЊА
+РИТЕР ЈОЖЕФ
+РИТЕР ЛУДВИГ
+РИТЕР НАДА
+РИТОЦ ГЕЗА
+РИТТЕР ШАНДОР
+РИВИЋ ИВО
+РИЗНИЋ БРАНИСЛАВА
+РИЗНИЋ ВЕЉКО
+РИЗНИЋ ВЕЉКО
+РИЗОВСКИ ДРАГО
+РИЗВАН ШУКРИ
+РИЗВАНОВИЋ САДИК
+РМУШ ЗОРИЦА
+РНИЋ МИХАИЛО
+РЊАК ДАНИЦА
+РЊАК СТАНКО
+РОШИН КСЕНИЈА
+РОШИН ЗОРКО
+РОШУ КОСТА
+РОШУЉ ЖИВАН
+РОШУЉ ЖИВА
+РОШУЉ АНЂЕЛКА
+РОШУЉ ЕМИЛ
+РОШУЉ ЛАЗАР
+РОШУЉ МИЛАНА
+РОШУЉ МИЛОРАД
+РОШУЉ РАДОВАН
+РОШУЉ СВЕТОЗАР
+РОШУЉ ЗОРАН
+РОШУЉА ВАСА
+РОШУЛОВ СТАДОЈЕ
+РОЖА БЕЛА
+РОЖА ФЕРЕНЦ
+РОЖА ЈАНОШ
+РОЖА ЈОВАН
+РОЖА МИРКО
+РОЖАНКОВИЋ ИВАН
+РОЂАК ФРАЊА
+РОЂЕНКОВ ЖИВОЈИН
+РОЂЕНКОВ ЂУРА
+РОЂЕНКОВ МИЛОШ
+РОБОТИЋ АНА
+РОБОТИЋ ТЕРЕЗА
+РОД ДАНИЦА
+РОДИЋ ЧЕДОМИР
+РОДИЋ ЧЕДОМИР
+РОДИЋ ШПИРО
+РОДИЋ ЂОРЂЕ
+РОДИЋ АЛЕКСАНДАР
+РОДИЋ АНДРИЈА
+РОДИЋ БОЖО
+РОДИЋ БОЖО
+РОДИЋ БОГДАН
+РОДИЋ БОРИСЛАВ
+РОДИЋ БОРИСЛАВ
+РОДИЋ БРАНИСЛАВ
+РОДИЋ ДАНИЦА
+РОДИЋ ДРАГАН
+РОДИЋ ДРАГОМИР
+РОДИЋ ДУШАН
+РОДИЋ ДУШАН
+РОДИЋ ДУШАН
+РОДИЋ ДУШАН
+РОДИЋ ГОЈКО
+РОДИЋ ГОЈКО
+РОДИЋ ГОЈКО
+РОДИЋ ЈЕЛИСАВЕТА
+РОДИЋ ЈОВО
+РОДИЋ ЛЕПА
+РОДИЋ ЉИЉАНА
+РОДИЋ МАНОЈЛО
+РОДИЋ МИЋА
+РОДИЋ МИЋО
+РОДИЋ МИЛАН
+РОДИЋ МИЛЕНА
+РОДИЋ МИЛИЦА
+РОДИЋ МИЛИЦА
+РОДИЋ МИЛКА
+РОДИЋ МИЛОШ
+РОДИЋ МИЛОРАД
+РОДИЋ МИРКО
+РОДИЋ МИРОСЛАВ
+РОДИЋ НАТАЛИЈА
+РОДИЋ НЕЂО
+РОДИЋ НЕДЕЉКО
+РОДИЋ НИКОЛА
+РОДИЋ НИКОЛА
+РОДИЋ НИКОЛА
+РОДИЋ НИКОЛА
+РОДИЋ ОЛГА
+РОДИЋ ПЕТАР ДИПЛ ИНГ
+РОДИЋ ПЕТАР
+РОДИЋ ПЕТРА
+РОДИЋ РАДЕ
+РОДИЋ РАНКО
+РОДИЋ СЛАВКО
+РОДИЋ СМИЉА
+РОДИЋ СРЕТЕН
+РОДИЋ СТАНКО
+РОДИЋ СТЕВАН
+РОДИЋ СУЗАНА
+РОДИЋ СУЗАНА
+РОДИЋ СВЕТКО
+РОДИЋ-ТОМЉАНОВИЋ МИРЈАНА
+РОДИЋ ВЕРИЦА
+РОДИЋ ЗОРАН
+РОГАЧ СВЕТЛАНА
+РОГАЧ СВЕТОЗАР
+РОГАЧЕВИЋ ОБРАД
+РОГАЉСКИ ЈЕЛЕНА
+РОГАЛО АНТОН
+РОГАН СВЕТОЗАР
+РОГАНОВИЋ КАТАРИНА
+РОГАНОВИЋ ЛУКА
+РОГАНОВИЋ МИЛАНКА
+РОГАНОВИЋ НАДА
+РОГАНОВИЋ НОВАК
+РОГАНОВИЋ СЛОБОДАН
+РОГАНОВИЋ СТЕВО
+РОГАНОВИЋ ТАЊА
+РОГАНОВИЋ ВЕЛИЗАР
+РОГАВАЦ МИЛАН
+РОГИЋ АЛЕКСА
+РОГИЋ МИЛОРАД
+РОГИЋ САВА
+РОГИЋ ВЕЉКО
+РОГИЋ ВЕСЕЛИН
+РОГИЋ ВЕСНА
+РОГИЋ ЗОРАН
+РОГЛИЋ ИВАН
+РОГЛИЋ ЉУБОМИР
+РОГЛИЋ МИЛАН
+РОГЛИЋ ВЕСНА
+РОГЛИЋ ВЕСНА
+РОГОЖАРСКИ СТЕВАНКА
+РОГУЛИЋ ЈЕЛЕНА
+РОГУЉА ЂОРЂЕ
+РОГУЉА ИЛИЈА
+РОГУЉА ЈОВАН
+РОГУЉА НИКОЛА
+РОГУЉА ПАВЛЕ ДР
+РОГУЉИЋ МИЛОРАД
+РОГУЉИЋ НЕДЕЉКО
+РОГУЉИЋ ПРЕДРАГ
+РОГУЉИЋ ЗДРАВКО
+РОЈКА АНДРЕЈ
+РОЈКА АНДРЕЈ
+РОЈНИК ЉУБОМИР
+РОКА ЖУЖАНА
+РОКА ЈАНОШ
+РОКА ВАЛЕРИЈА
+РОКАИ ПЕТАР
+РОКИЋ ДУШАН
+РОКИЋ МИЛЕНКО
+РОКЛИЦЕР ФРАЊА
+РОКЛИЦЕР ЈОСИП
+РОКНИЋ ЈУЛКИЦА
+РОКНИЋ МИЛЕНКО
+РОКНИЋ МОМЧИЛО
+РОКСАНДИЋ АДАМ
+РОКСАНДИЋ МИЛАН
+РОКСАНДИЋ СИМА
+РОКСАНДИЋ ВЛАДИМИР
+РОКСАНДИЋ ВЛАДО
+РОКСИЋ СЛОБОДАН
+РОКВИЋ БОГДАН
+РОКВИЋ БРАНИСЛАВ
+РОКВИЋ ДУШАН
+РОКВИЋ ГОЈКО
+РОКВИЋ ЛАЗАР
+РОКВИЋ МАРКО
+РОКВИЋ МИЛАН
+РОКВИЋ МИЛИЦА
+РОКВИЋ МИЛОРАД
+РОКВИЋ НИКОЛА ДИПЛ ПОЛИТИКОЛОГ
+РОКВИЋ ОМИЉКО
+РОКВИЋ РАДИВОЈ
+РОКВИЋ РАДОЈКА
+РОКВИЋ РАНКО
+РОКВИЋ СИНИША
+РОКВИЋ ВЕСЕЛКО
+РОКВИЋ ЗДРАВКО
+РОЛАНД ТОМИСЛАВ
+РОЛОВИЋ ДУШАНКА
+РОЛОВИЋ ОЛГА
+РОМ БРАНКА
+РОМЧЕВ МИРОСЛАВ
+РОМАН ЈЕЛЕНА
+РОМАН ЉУБИЦА
+РОМАН МИНЕА
+РОМАН МИРОН
+РОМАН РОМКО
+РОМАНДИЋ АНКИЦА
+РОМАНДИЋ ЈЕЛЕНА
+РОМАНДИЋ СТАНИМИР
+РОМАНЕЛИ ГИНО
+РОМАНИЋ ДУШАН
+РОМАНИЋ ЕРЖЕБЕТ
+РОМАНИЋ ЈОЦ0
+РОМАНИЋ МАРИЈА
+РОМАНКИВ МИХАЈЛО
+РОМАНОВ ЈОСИП
+РОМАНОВ СНЕЖАНА
+РОМАНОВИЋ ЂОРЂЕ ДИПЛ ПРАВНИК
+РОМАНОВИЋ ЂОРЂЕ
+РОМАНОВИЋ АЛЕКСАНДАР
+РОМАНОВИЋ ИЛИНКА
+РОМАНОВИЋ МИЛАН
+РОМАНОВИЋ НАДА
+РОМАС ЈОСИП
+РОМИЋ ЕТА
+РОМИЋ ЈАНКО
+РОМИЋ ЉУБОМИР
+РОМИЋ ЉУБОМИР
+РОМИЋ МЛАДЕН
+РОМИЋ НЕНАД
+РОМИЋ ПАВЛЕ
+РОМИЋ ПРЕДРАГ
+РОМОДА ИШТВАН
+РОМОДА КАРЛО
+РОМОДА МАРИЈА
+РОНЧЕЛИ КАТИЦА
+РОНЧЕВИЋ БОГДАН
+РОНЧЕВИЋ ДРАГАН
+РОНЧЕВИЋ ИКОНИЈА
+РОНЧЕВИЋ КОСТА
+РОНЧЕВИЋ МИЛЕ
+РОНЧЕВИЋ НАДА
+РОНЧЕВИЋ ОБРАД
+РОНЧЕВИЋ ПЕТАР
+РОНЧЕВИЋ ПЕТАР
+РОНЧЕВИЋ ПЕТАР
+РОНЧЕВИЋ РАДИВОЈЕ
+РОНЧЕВИЋ САВЕТА
+РОНЧЕВИЋ САВО
+РОНЧЕВИЋ СТАНА
+РОНЧЕВИЋ СТАНИМИР
+РОНЧЕВИЋ СТАНИМИР
+РОНЧЕВИЋ СТЕВАН
+РОНЧЕВИЋ СТЕВАН
+РОНЧЕВИЋ ВЕРА
+РОНАИ МИРКО ДИПЛ ИНГ
+РОНТО ФРАНЦИШКА
+РОНТО ИЛОНКА
+РОНТО ЈАКОБ
+РОНТОВИЋ РАДОСЛАВ
+РОР ДЕСА
+РОРБАХЕР МАГДОЛНА
+РОСИЋ ЂУРО
+РОСИЋ БОГДАН
+РОСИЋ ДРАГАНА
+РОСИЋ ДРАГАН
+РОСИЋ ДРАГАН
+РОСИЋ ДРАГАН
+РОСИЋ ДРАГАН
+РОСИЋ ДУШАН
+РОСИЋ ГРОЗДАНА
+РОСИЋ ИЛИЈА
+РОСИЋ ЉИЉАНА
+РОСИЋ МИЛЕНА
+РОСИЋ МИЛИЦА
+РОСИЋ МИЛОРАД
+РОСИЋ МИОДРАГ
+РОСИЋ НИКОЛА
+РОСИЋ ОСТОЈА
+РОСИЋ ВЛАДИМИР
+РОСИЋ ЗОРАН
+РОСЛАВЉЕВ ВОЈИСЛАВ
+РОСО ИВАН
+РОСО МАРТА
+РОТ ДЕЗИДЕР
+РОТ ФРАЊА
+РОТАРИУ ТИБЕРИЈЕ
+РОТБАРТ ВЛАДИСЛАВ
+РОТИМ ИВАН
+РОВЧАНИН ЕУЂЕНИЈА
+РОВЧАНИН УЗЕИР
+РОВЧАНИН ВЕСЕЛИН
+РОВИЋ БРАНИСЛАВ
+РОВИЋ ДИМИТРИЈЕ
+РОВО МИХАЉ
+РОЗЕНТАЛ ДРАГИЦА
+РОЗЕНТАЛ КАРЛО
+РОЗЕНТАЛ МАРТОН
+РОЗИЋ АНТЕ
+РОЗМАРИНГ ИШТВАН
+РОЗМИРОВ ДРАГАН
+РОЗМИРОВ МИЛЕНКО
+РУШИТИ АЛИЈА
+РУШКО ЕРЖЕБЕТ
+РУШКУЦ ЂОРЂЕ
+РУШКУЦ АТАНАСИЈЕ
+РУШКУЦ МАРГАРИТА
+РУШКУЦ МАРТА
+РУШКУЦ ПАВЛЕ
+РУШКУЦ СТЕВАН
+РУШКУЦ СВЕТИСЛАВ
+РУШКУЦ ВЕСЕЛИН
+РУШКУЦ ВЛАДИМИР
+РУЖАНОВИЋ ДРАГОЉУБ
+РУЖАНОВИЋ МАРИЈА
+РУЖИЧИЋ ЂОРЂЕ
+РУЖИЧИЋ БОШКО
+РУЖИЧИЋ МИЛАН
+РУЖИЧИН ДАНИЦА
+РУЖИЧИН РАДИВОЈ
+РУЖИЧКА ЂУРА
+РУЖИЧКА РУЖА
+РУЖИЋ ЖАРКО
+РУЖИЋ АЛЕКСАНДАР
+РУЖИЋ ДРАЖАНА
+РУЖИЋ ДУШАН
+РУЖИЋ ДУШАН
+РУЖИЋ ДУШАН
+РУЖИЋ ЕМА
+РУЖИЋ ГОРДАНА
+РУЖИЋ ИВИЦА
+РУЖИЋ ЈОВАН
+РУЖИЋ ЈОВО
+РУЖИЋ ЈУЛКА
+РУЖИЋ КРСТО
+РУЖИЋ МАРИЈА
+РУЖИЋ МАРИЈА
+РУЖИЋ МИЛАН
+РУЖИЋ МИЛАН
+РУЖИЋ МИЛИВОЈ
+РУЖИЋ МИРА
+РУЖИЋ МИРЈАНА
+РУЖИЋ МИРЈАНА
+РУЖИЋ МИРКО
+РУЖИЋ НИКОЛА
+РУЖИЋ НИКОЛА
+РУЖИЋ ПАВА
+РУЖИЋ ПЕТАР
+РУЖИЋ РАДМИЛА
+РУЖИЋ РАДОМИР
+РУЖИЋ СЛОБОДАН
+РУЖИЋ СМИЉАНА
+РУЖИЋ СТАНКО
+РУЖИЋ-СТАРИ ВЕСНА
+РУЖИЋ СТЈЕПАН
+РУЖИЋ СВЕТОЛИК
+РУЖИЋ ВЕЉКО
+РУЖИЋ ВЛАДИМИР ДИПЛ ИНГ
+РУЖИЋ ЗОРАН
+РУЖИЋ ЗОРАН
+РУЖИН ЧЕДОМИР
+РУЖИН МИЛОРАД
+РУЖНИЦКИ ИВАН
+РУЂА НЕМАЊА
+РУЂА ЗОРАН
+РУЂА ЗОРАН
+РУБЕЖИЋ МИЛОВАН
+РУБЕЖИЋ СЛОБОДАН
+РУБИН МИЛАН
+РУБУШ АГНЕЗА
+РУБУШ ЈОЖЕФ
+РУДАН МАРКО
+РУДАН РАДИВОЈЕ
+РУДЕЖ ИЛИЈА
+РУДЕЖ МИЋО
+РУДЕЖ ПЕРА
+РУДЕК ЈАРОСЛАВ
+РУДЕК НИКОЛА
+РУДЕК НИКОЛА
+РУДИЋ ДАРКО
+РУДИЋ ДИМИТРИЈЕ
+РУДИЋ ДРАГАН
+РУДИЋ ДУШАН
+РУДИЋ ИМРЕ
+РУДИЋ ИВАН
+РУДИЋ ИВАН
+РУДИЋ ЈОСИП
+РУДИЋ ЛАЗАР
+РУДИЋ МАРКО
+РУДИЋ МАРКО
+РУДИЋ МИЛКА
+РУДИЋ НЕДЕЉКО
+РУДИЋ НИКОЛА
+РУДИЋ ПЕРА
+РУДИЋ СТЕВАН
+РУДИЋ СТЕВИЦА
+РУДИЋ-ВРАНИЋ НЕДЕЉКА
+РУДОЛФ КЛАЈН
+РУДОЛФ ОЛГА
+РУДОЛФ СПАСОЈЕ
+РУДОЛФ ЗОРАН
+РУДОВИЋ ДАНИЛО
+РУДОВИЋ ИЛИЈА
+РУДОВИЋ ЈУГОСЛАВ
+РУДОВИЋ МИРЈАНА
+РУДОВИЋ ЗОРАН
+РУФЧЕСКИ СЛОБОДАН
+РУЈЕВИЋ ЈАДРАНКА
+РУЈЕВИЋ МИЛЕВА
+РУКАВИНА-ШЛИБАР ХЕРМИНА
+РУКАВИНА АЛЕКСАНДАР
+РУКАВИНА БАРИЦА
+РУКАВИНА ДЕСПИНА
+РУКАВИНА ДОБРИЛА
+РУКАВИНА ДУШАН
+РУКАВИНА ЈУРЕ
+РУКАВИНА КРЕШИМИР
+РУКАВИНА ЉУБИЦА
+РУКАВИНА МАРИЈА
+РУКАВИНА МИЛКА
+РУКАВИНА РУДОЛФ
+РУКАВИНА РУДОЛФ
+РУКАВИНА СТЕВАН
+РУКАВИНА ЗВОНИМИР
+РУМАН МИХАЈЛО
+РУНИЋ МАРИЈА
+РУНИЋ МИЛАН ДИПЛ ИНГ
+РУЊАЈИЋ ИЛИЈА
+РУЊАНИН ЂОРЂЕ
+РУЊАНИН ВЛАДИСЛАВ
+РУЊАНИН ВОЈО
+РУЊИЋ АМАЛИЈА
+РУЊИЋ ДРАГАН
+РУЊИЋ ДРАГИЦА
+РУЊИЋ ГАВРИЛО
+РУЊИЋ ГОРАН
+РУЊО ЈОВАН
+РУНТИЋ БОШКО
+РУПЧИЋ ВЛАДИМИР
+РУПА АТИЛА
+РУПАР БРАНИСЛАВ
+РУПАР ЕРЖЕБЕТ
+РУПИЋ ЖИВКО
+РУПЊАК БРАНИСЛАВ
+РУС ЂУРЂИНКА
+РУС ДРАГАН
+РУС ИВАНКА
+РУС ЈОСИП
+РУС МАРГИТА
+РУС МАРИЈА
+РУС МИЛОСАВА
+РУС РАДА
+РУС СЛАВИЦА
+РУС СМИЉА
+РУС СВЕТЛАНА
+РУС ВЕРА
+РУС ВУКОСАВА
+РУСИЋ АНДРИЈА
+РУСКАЈИ СЛАВОМИР
+РУСКИ ДИМИТРИЈЕ
+РУСКИ ЛАЗАР
+РУСКОВСКИ ЂОРЂЕ
+РУСКОВСКИ ДРАГИЦА
+РУСКОВСКИ МАГДАЛЕНА
+РУСМИР РАДМИЛА
+РУСМИРОВИЋ БИЉАНА
+РУСМИРОВИЋ БИЉАНА
+РУСОВ ЖАРКО
+РУСОВ ЖИВКА
+РУСОВ БРАНКА
+РУСОВ БРАНКО
+РУСОВ ДРЕНКА
+РУСОВ КАТИЦА
+РУСОВ КОСТА
+РУСОВ КРИСТИНА
+РУСОВ МАРИЈА
+РУСОВ МИЛАН
+РУСОВ МИЛОРАД
+РУСОВ НАДА
+РУСОВ ПАВЛЕ
+РУСОВ СЛОБОДАН
+РУСОВ ВЛАДИМИР
+РУСОВАН ЖИВИЦА
+РУСОВАН ДРАГОЉУБ
+РУСОВАН МИЛАН
+РУСОВАН МИЛАН
+РУСТЕМАГИЋ ЕРВИН
+РУСТЕМИ ШАБАН
+РУТЕШИЋ ЈОВИЦА
+РУТИЋ МИЛОРАД
+РУТОНИЋ ЈУЛКИЦА
+РУТОНИЋ-КОЛЕНДА ВИДОСАВА
+РУТОНИЋ ЛАЗАР
+РУТОНИЋ ЛАЗАР
+РУТОЊСКИ ДУШАН
+РУТОЊСКИ ЈЕЛИЦА
+РУТОЊСКИ ЈОВАНКА
+РУТОЊСКИ НАДА
+РУТОЊСКИ СЛОБОДАН
+РУТОЊСКИ ВАСА
+РУТОНСКИ ЂОРЂЕ
+РУТОВИЋ БОШКО
+САЧЕК МИРОСЛАВ
+САЧЕР РОКИ
+САЧИЋ МАРИЈА
+САБАДИ ЛАСЛО
+САБАДИ МИРЈАНА
+САБАДКА ШАНДОР
+САБАДКА ИЛОНКА
+САБАДКА ВАЛЕРИЈА
+САБАДОШ ШАНДОР
+САБАДОШ ЂУРА
+САБАДОШ ИВАН
+САБАДОШ ЈАНКО
+САБАДОШ ЈАНКО
+САБАДОШ ЈАНКО
+САБАДОШ ЈОАКИМ
+САБАДОШ ЉУБОМИР
+САБАДОШ МИША
+САБАДОШ МИХАЈЛО
+САБАДОШ МИХАЈЛО
+САБАДОШ МИРОСЛАВ
+САБАДОШ ПАВЛИНА
+САБАДОШ РУЖИЦА
+САБАДОШ СЛАВНА
+САБАДОШ СЛАВОМИР
+САБАДОШ СРБИСЛАВ
+САБАДОШ СТЕВАН
+САБАДОШ ВЛАДИМИР
+САБАДОШ ВЛАДИМИР
+САБАДОШ ЗДЕНКА
+САБАДУШ ЈОВАН ДИПЛ ИНГ
+САБАДУШ СТЕВАН
+САБАТКА СТЕВАН
+САБАТУШ БОРИСЛАВ
+САБАТУШ ДРАГОЉУБ
+САБАТУШ ТОМИСЛАВ
+САБЛИЋ БРАНКО
+САБЉАК ДРАГАН
+САБЉАК ФРАЊО
+САБЉАК МАРИЈАН
+САБЉАКОВИЋ ЕСАД
+САБЉАР ЂОРЂЕ
+САБЉАР МАНОЈЛО
+САБЉАР МИЛАН
+САБЉАР ТЕОДОР
+САБЉАРЕВИЋ ВЕРИЦА
+САБЉИЋ ДАНИЛО ДИПЛ ПРАВНИК
+САБЉИЋ ДАРА
+САБЉИЋ ГОРДАНА
+САБЉОВ ИШТВАН
+САБЉОВ МИЛИЦА
+САБО ШАНДОР
+САБО ШАЊИКА
+САБО ЂЕЗЕ
+САБО ЂОРЂЕ
+САБО ЂОРЂЕ
+САБО АЛЕКСАНДАР
+САБО АЛЕКСАНДАР
+САБО АНА ДР
+САБО АНА
+САБО АНА
+САБО АНДРАШ
+САБО АНДРАШ
+САБО АНИЦА
+САБО АНИЦА
+САБО БЕРТАЛАН
+САБО ДРАГАН
+САБО ЕЛИЗАБЕТА
+САБО ЕМИЛ
+САБО ЕРЖЕБЕТ
+САБО ЕРЖЕБЕТ
+САБО ЕРНЕ
+САБО ЕРНЕ
+САБО ЕСТЕР
+САБО ФЕРЕНЦ
+САБО ФЕРЕНЦ
+САБО ФРАЊА
+САБО ФРАЊА
+САБО ФРАЊО
+САБО ГАШПАР
+САБО ГАБОР
+САБО ГЕРГЕЉ
+САБО ГИЗЕЛА
+САБО ГОРДАНА
+САБО ХИЛДА
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИШТВАН
+САБО ИБОЉКА
+САБО ИДА
+САБО ИЛОНА
+САБО ИМРЕ
+САБО ИМРЕ
+САБО ИВАН
+САБО ЈАНИКА
+САБО ЈАНОШ
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈОСИП
+САБО ЈУЛИА
+САБО ЈУЛИЈАНА
+САБО КАРОЛИНА
+САБО КАТИЦА
+САБО КАТИЦА
+САБО ЛАДИСЛАВ
+САБО ЛАДИСЛАВ
+САБО ЛАДИСЛАВ
+САБО ЉУБОМИР
+САБО МАРИЈА
+САБО МАРТА
+САБО МИХАЈЛО
+САБО МИЛИЦА
+САБО НИКОЛА
+САБО ОЛИВЕРА
+САБО ПАВЛЕ
+САБО ПЕТАР
+САБО ПЕТАР
+САБО ПЕТАР
+САБО ПИШТА
+САБО РОЗАЛИЈА
+САБО СНИЈЕЖАНА
+САБО СТЕВАН
+САБО ТЕРЕЗИЈА
+САБО ТИБОР
+САБО ВАЛЕРИЈА
+САБО ЗОЛТАН
+САБО ЗОЛТАН
+САБОШОТИ ФАБИЈАН
+САБОЛ ЈАРОСЛАВ
+САБОЛ ЈЕЛЕНА
+САБОЛЧКИ АНДРИЈА
+САБОЛЧКИ АНДРИЈА
+САБОЛЧКИ АНДРИЈА
+САБОЛЧКИ ЗОЛТАН
+САБОЛОВИЋ БОРИС
+САБОВ БОРИВОЈЕ
+САБОВЉЕВИЋ РАДОВАН
+САЏАК ЉУБИЦА
+САЏАКОВ ДРАГОМИР
+САЏАКОВ ДУШАНКА
+САЏАКОВ МИРОСЛАВ
+САЏАКОВ ОЛГА
+САЏАКОВ ПЕТАР
+САЏАКОВ РАДОВАН
+САЏАКОВ РАДОВАН
+САЏАКОВ ВИДОСАВА
+САЏАКОВ ЗОРАН
+САДИЋ РАДИВОЈ
+САДИКУ САДИК
+САИТОВ ШАХИМ
+САЈФЕРТ ЂУЛА
+САЈФЕРТ ЈОХАН
+САЈФЕРТ ЉУБИША
+САЈФЕРТ ЉУБИША
+САЈФЕРТ МАРГИТ
+САЈФЕРТ МАРИЈА
+САЈИЋ МИЛИВОЈЕ
+САЈКО БРАНКА
+САЈКО ИШТВАН
+САЈКО МАРГИТА
+САЈКО РУЖИЦА
+САЈКО ЗОЛТАН
+САЈЛЕР ФЕРЕНЦ
+САЈТОВИЋ ДРАГИЊА
+САКАЧ БОРИСЛАВ ЛЕКАР
+САКАЧ ФЕРЕНЦ
+САКАЧ ИШТВАН
+САКАЧ ЈАНКО
+САКАЧ ЈАНКО
+САКАЧ ЈОВАН
+САКАЧ ЈУЛИЈАНА
+САКАЧ ЈУЛИЈАН
+САКАЧ ЉУДЕВИТ
+САКАЧ МАГДА
+САКАЧ МАРИЈА
+САКАЧ МИХАИЛО
+САКАЧ СИМА
+САКАЧ СВЕТЛАНА
+САКАЧ ВАСИЛИЈЕ
+САКАЧ ВЛАДИМИР АДВОКАТ
+САКАЧ ВЛАДИМИР
+САКАЧ ВЛАДИМИР
+САКАЛ АДЕЛА
+САКАЛ АУГУСТИНА
+САКАЛ ГАБОР
+САКАЛ ЈОЖЕФ
+САКАЛ МАРИЈА
+САКАЛ МАРИЈА
+САКАЛАШ ОТО
+САКАН ДАЛИБОР
+САКОВИЋ АЛИЈА
+САКОВИЋ СТОЈАН
+САКУЛСКИ МИЛАН
+САЛАЧ ЂУРО
+САЛАГ ЕВГЕНИЈЕ
+САЛАГ ЈАНКО
+САЛАГ ЉУБА
+САЛАИ ЕРЖЕБЕТ
+САЛАИ ЕСТЕР
+САЛАИ-ГОМБАР РУЖА
+САЛАИ ИШТВАН НОВИНАР
+САЛАИ ЈЕЛИСАВЕТА
+САЛАИ ЛАДИСЛАВ
+САЛАИ ЛАСЛО
+САЛАЈ ФРАЊО
+САЛАЈ ЈАНКО
+САЛАЈ ЈОЖЕФ
+САЛАЈ МИРЈАНА
+САЛАЈ РУДОЛФ
+САЛАК ЈАНКО
+САЛАК ВЛАДИМИР
+САЛАК ВЛАДИМИР
+САЛАМУН АНА
+САЛАМУН БОСИЉКА
+САЛАМУН ИЛИЈА
+САЛАМУН ЈАНКО
+САЛАМУН ЈОАКИМ
+САЛАМУН ЈОАКИМ
+САЛАМУН НАТАЛИЈА
+САЛАМУН СИЛВЕСТЕР
+САЛАМУН ВЛАДИМИР
+САЛАПУРА МИЛЕ
+САЛАПУРА НЕДЕЉКО
+САЛАПУРА ПЕТАР
+САЛАТИЋ МИЛОВАН
+САЛАТИЋ ПЕТАР МР ОЕЦ
+САЛАТИЋ ВЕЛИМИР
+САЛДУМ ВИДА
+САЛЕТА АНТУН
+САЛИЋ МИЛАН
+САЛИБЕГОВИЋ МУСТАФА
+САЛИХОВИЋ ИСМЕТ
+САЛИЈА СЕФЕР
+САЛИЈЕВИЋ ШЕЋЕРИЈА
+САЛКАИ ИЛОНА
+САЛКАИ ЛАСЛО
+САЛМА ШАНДОР
+САЛМА ГЕЗА
+САЛМА ЈОЖЕФ ПРОФ ДР
+САЛМА ЈОСИП
+САЛМА ПЕТАР
+САЛМА ТИБОР
+САЛМА ТИБОР
+САЛОЦКИ СТЕВАН
+САЛОНСКИ БОЖИДАР
+САЛОНСКИ ЈЕЛЕНА
+САЛОНСКИ МИЛОРАД
+САЛОНСКИ МИРЈАНА
+САЛОНСКИ МИРОСЛАВ
+САЛОНСКИ РУЖА
+САЛОНТАИ ЈУЛИЈАНА
+САЛОПЕК БРАНКО
+САЛОВ ЈОВАН
+САМАЦ ИВАНКА
+САМАЦ МИРКО
+САМАРЂИЋ БРАНИСЛАВА
+САМАРЏИЋ ЖАРКО
+САМАРЏИЋ АДАМ
+САМАРЏИЋ БОШКО
+САМАРЏИЋ БОШКО
+САМАРЏИЋ БОРА
+САМАРЏИЋ БОРА
+САМАРЏИЋ БРАНИСЛАВ
+САМАРЏИЋ БРАНКО
+САМАРЏИЋ ДАНИЛО
+САМАРЏИЋ ДАНИЛО
+САМАРЏИЋ ДЕСА
+САМАРЏИЋ ДРАГАН
+САМАРЏИЋ ДУШАН
+САМАРЏИЋ ГОЈКО
+САМАРЏИЋ ИЛИЈА
+САМАРЏИЋ ИВАН
+САМАРЏИЋ КРСТА
+САМАРЏИЋ ЉУБО
+САМАРЏИЋ МИЛАН
+САМАРЏИЋ МИЛИЈА
+САМАРЏИЋ МИЛОШ
+САМАРЏИЋ МИЛОШ
+САМАРЏИЋ МИЛОЈКО
+САМАРЏИЋ МИЛОРАД
+САМАРЏИЋ МИЛОСАВ
+САМАРЏИЋ МИОДРАГ
+САМАРЏИЋ МИРА
+САМАРЏИЋ НЕЂА
+САМАРЏИЋ НОВИЦА
+САМАРЏИЋ ОЛГА
+САМАРЏИЋ ОСТОЈА
+САМАРЏИЋ РАДОЈКА
+САМАРЏИЋ РАДОСЛАВ
+САМАРЏИЋ РАДОВАН
+САМАРЏИЋ РАЈКО
+САМАРЏИЋ РАТКО
+САМАРЏИЋ РОЗИНА
+САМАРЏИЋ САВКА
+САМАРЏИЋ САВО
+САМАРЏИЋ СПОМЕНКА
+САМАРЏИЋ СРЕТЕН
+САМАРЏИЋ СРЕТЕН
+САМАРЏИЋ-СТАНИШИЋ МИЛАНКА
+САМАРЏИЋ СВЕТЛАНА
+САМАРЏИЋ ВАСИЛИЈА
+САМАРЏИЋ ВАСО
+САМАРЏИЋ ВЕЛИМИР
+САМАРЏИЋ ВЛАДО
+САМАРЏИЋ ВУКАШИН
+САМАРЏИЋ ЗДРАВКО
+САМАРЏИЋ ЗОРАН
+САМАРЏИЋ ЗУЗАНА
+САМАРЏИЈА ЂУРЂИНКА
+САМАРЏИЈА ЂУРАЂ
+САМАРЏИЈА ЂУРА
+САМАРЏИЈА БОШКО
+САМАРЏИЈА ДЕСА
+САМАРЏИЈА ДУШАН
+САМАРЏИЈА ГОРИЦА
+САМАРЏИЈА ЈЕЛЕНА
+САМАРЏИЈА ЉУБИЦА
+САМАРЏИЈА ЉУБИЦА
+САМАРЏИЈА МАРИЈА
+САМАРЏИЈА МАРИЈА
+САМАРЏИЈА МИЛАНКА
+САМАРЏИЈА МИЛАН
+САМАРЏИЈА МИЛАН
+САМАРЏИЈА МИЛЕ
+САМАРЏИЈА МИРКО
+САМАРЏИЈА МИРОСЛАВ
+САМАРЏИЈА НЕБОЈША
+САМАРЏИЈА НОВИЦА
+САМАРЏИЈА ПЕТАР
+САМАРЏИЈА РАДЕ
+САМАРЏИЈА РАДЕ
+САМАРЏИЈА РАНКО
+САМАРЏИЈА СТОЈАН
+САМАРЏИЈЕВИЋ МИРОСЛАВ
+САМБРАИЛО БРУНО
+САМЕЦ БОЖЕНКА
+САМИИ АББАС
+САМОЧЕТА АЛЕКСАНДРА
+САМОЧЕТА МИЛЕ
+САМОЧЕТА НЕВЕНКА
+САМОЧЕТА РАДОМИР
+САМОЈЛИК НИКОЛА
+САМОКОВЛИЈА МАРКО
+САМОЛОВ ВЕЉКО
+САМОЛОВЧЕВ ИВАНКА
+САМСОНОВ НИКОЛА ДИПЛ ИНГ
+САНЧАНИН МИЛИВОЈ
+САНАДЕР ЖИВКО
+САНАДЕР ЖИВКО
+САНАДЕР ЈЕЛЕНА
+САНАДЕР РАДОВАН
+САНАДЕР СЛОБОДАН
+САНАДЕР ВЕРА
+САНДИЋ БРАНИМИР
+САНДИЋ ИВАН
+САНДИЋ СВЕТЛАНА
+САНДИКИ АПОСТОЛ
+САНДИКИ КОСТА
+САНДИКИ КОСТА
+САНКОВИЋ БОРКО
+САНКОВИЋ ЉУБИНКА
+САНКОВИЋ МИЛОРАД
+САНКОВИЋ МИРА
+САНКОВИЋ ПЕТАР
+САНКОВИЋ САБИНА
+САНКОВИЋ СВЕТОЗАР
+САНТАИ ИЛОНА
+САНТО ФРАЊА
+САНТО КАРОЉ
+САНТО ЛАДИСЛАВ ДИПЛ ИНГ
+САНТО ЗОЛТАН
+САНТО ЗОЛТАН
+САНТОВАЦ ДРАГАН
+САНТОВАЦ ЉУБИНКА
+САНТОВАЦ МИЛОШ
+САНТОВАЦ ПЕТАР
+САНТОВАЦ СТЕВАН
+САНТРАЧ ЂУРЂИНКА
+САНТРАЧ ДРАГОЉУБ
+САНТРАЧ ГОРДАНА
+САНТРАЧ МИЛАН
+САНТРАЧ МИЛОРАД
+САНТРАЧ МОМЧИЛО
+САНТРАЧ НИКОЛА
+САНТРАЧ РАТКО
+САНТРАЧ САВО
+САНТРАЧ СЛАВКО
+САПУНЏИЋ-МАТИЋ МИРЈАНА
+САПУНЏИЋ МИЛАН
+САПУНЏИЋ МИРА
+САПУНЏИЋ ТАТЈАНА
+САПУНЏИЈА ЕРЖЕБЕТ
+САПУНЏИЈА МАРИЈА
+САРЧЕВ НАДИЦА
+САРЧЕВ РАДИВОЈ
+САРАЧЕВИЋ СРБОЉУБ
+САРАФИЈАНОВИЋ НИКОЛА
+САРАЈЛИЈА ДРАГОМИР
+САРАМАНДИЋ МОМИР
+САРАМАНДИЋ НЕДЕЉКО
+САРАНДА ВАСИЉКА
+САРАПКА КАТИЦА
+САРАТЛИЋ МИЛАН
+САРАТЛИЋ СРБОЉУБ
+САРАВОЛАЦ ЛАЗАР ВЕТЕРИНАР
+САРАВОЛАЦ МАГДАЛЕНА
+САРАВОЛАЦ МИРЈАНА
+САРАВОЛАЦ МИРЈАНА
+САРАВОЛАЦ СИНИША ДР
+САРАВОЛАЦ СЛАВКО
+САРАВОЛАЦ СВЕТЛАНА
+САРИЋ ЂУРА
+САРИЋ ДАНИЛО
+САРИЋ ИВАН
+САРИЋ ЛЕПОСАВА
+САРИЋ МАРИНКО
+САРИЋ МИЛОШ
+САРИЋ МИЛОЈЕ ДР
+САРИЋ РАДОШ
+САРИЋ РАТКО
+САРИЋ ТИБОР
+САРИЋ ВОЈИН
+САРИКАС СНЕЖАНА
+САРИКАС ВАСИЛИЈЕ
+САРКА АРПАД
+САРКА МИХАЉ
+САРКОТИЋ ФРАЊА
+САРМЕШ МАРИЈА ДИПЛ ПРАВНИК
+САРОВ ЛАЗАР
+САРВАШ ШАНДОР
+САРВАШ ЈАНОШ
+САРВАК АЛЕКСА
+САРВАН ДРАГОЉУБ
+САРВАН ВЈЕРА
+САС ЈЕНЕ
+САСИК БОРИСЛАВ
+САТАРИЋ БРАНИСЛАВ
+САТАРИЋ МИЉКО ДР
+САТКАНОВИЋ ХАБИБ
+САУЕР ЈЕЛИЦА
+САУЕР МАРГИТА
+САУЕР ПАВЛЕ
+САУЕР РОСА
+САУЕР СМИЉАНА
+САУСМАН ЛАСЛО
+САУЗЕР ФРАЊО
+САВЧИЋ ДРАГАН
+САВЧИЋ МИЛАНА
+САВЧИЋ МИЛИВОЈЕ
+САВЧИЋ МИЛИВОЈ
+САВЧИЋ МИРОСЛАВ
+САВЧИЋ СЛОБОДАН
+САВА ФРАЊА
+САВАНОВИЋ БРАНКО
+САВАНОВИЋ ДРАГОЉУБ
+САВАНОВИЋ ДУШАН
+САВАНОВИЋ ЈОВАН
+САВАНОВИЋ ЈОВО
+САВАНОВИЋ ЉУБОМИР
+САВАНОВИЋ МАРИЦА
+САВАНОВИЋ МАРИНКО
+САВАНОВИЋ МИЛАН
+САВАНОВИЋ МИЛОШ
+САВАНОВИЋ МИРКО
+САВАНОВИЋ НЕНАД
+САВАНОВИЋ СНЕЖАНА
+САВАНОВИЋ СТОЈАН
+САВАНОВИЋ ЗДРАВКА
+САВАТИЋ ДРАГОМИР
+САВАТИЋ ВЛАДИМИР
+САВАТОВИЋ БОСИЉКА
+САВАТОВИЋ ДРАГАН
+САВАТОВИЋ ДУШАН
+САВАТОВИЋ РАДОВАН
+САВЕЉИЋ ЧЕДОМИР
+САВЕЉИЋ ДУШАН
+САВЕЉИЋ МАРИЈА
+САВЕЉИЋ СВЕТЛАНА
+САВЕЉИЋ ВЕЉКО
+САВЕСКИ МИЛЧО
+САВЕСКИ ЗОРАН
+САВИЧЕВИЋ ГОЈКО
+САВИЧИЋ ГОЈКО
+САВИЧИЋ СТОЈАН
+САВИЧИН ЉУБИЦА
+САВИЋ ЧЕДОМИР
+САВИЋ ЧЕДО
+САВИЋ ЋЕТКО
+САВИЋ ЖИВКА
+САВИЋ ЖИВКА
+САВИЋ ЂОКА
+САВИЋ ЂОРЂЕ ДИПЛ ИНГ
+САВИЋ ЂОРЂЕ
+САВИЋ ЂУРЂИЈА
+САВИЋ АЛЕКСАНДРА
+САВИЋ АЛЕКСА
+САВИЋ АНЂЕЛКА
+САВИЋ АНЂЕЛКА
+САВИЋ АНА
+САВИЋ АНДРИЈА
+САВИЋ АНДРИЈА
+САВИЋ АНГЕЛИНА
+САВИЋ БЛАГОЈЕ
+САВИЋ БЛАГОЈЕ
+САВИЋ БОЖИДАР
+САВИЋ БОЖИМИР ДР
+САВИЋ БОГДАН
+САВИЋ БОРИСЛАВ
+САВИЋ БРАНИСЛАВ
+САВИЋ БРАНИСЛАВ
+САВИЋ БРАНИСЛАВ
+САВИЋ БРАНКО
+САВИЋ ЦВЕТАНКА
+САВИЋ ЦВЕТКО
+САВИЋ ДАМЈАН ДР ЛЕКАР
+САВИЋ ДАНИЦА
+САВИЋ ДАРА
+САВИЋ ДЕЈАН
+САВИЋ ДЕСАНКА
+САВИЋ ДЕСИМИР
+САВИЋ ДОБРИЛА
+САВИЋ ДРАГАН
+САВИЋ ДРАГАН
+САВИЋ ДРАГАН
+САВИЋ ДРАГАН
+САВИЋ ДРАГИША
+САВИЋ ДРАГОСЛАВ
+САВИЋ ДРАГО
+САВИЋ ДРАГУТИН
+САВИЋ ДРАГУТИН
+САВИЋ ДУШАНКА
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ДУШАН
+САВИЋ ГЕОРГИЈЕ
+САВИЋ ГЛИГОРИЈЕ
+САВИЋ ГОЈКО
+САВИЋ ГОРАН
+САВИЋ ГОСТИМИР
+САВИЋ ГРОЗДАНА
+САВИЋ ИЛИЈА
+САВИЋ ИЛИЈА
+САВИЋ ИВАН
+САВИЋ ЈАДРАНКА
+САВИЋ ЈЕЛА
+САВИЋ ЈЕЛЕНА
+САВИЋ ЈЕЛЕНА
+САВИЋ ЈЕЛИЦА
+САВИЋ ЈЕВТО
+САВИЋ ЈОВАНКА
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ ЈОВАН
+САВИЋ КАТИЦА
+САВИЋ КАТИЦА
+САВИЋ КОСТА
+САВИЋ КСЕНИЈА
+САВИЋ ЛАЗАР
+САВИЋ ЛАЗАР
+САВИЋ ЛЕНКА ДР
+САВИЋ ЉИЉАНА
+САВИЋ ЉИЉАНА
+САВИЋ ЉУБИША
+САВИЋ ЉУБИЦА
+САВИЋ ЉУБОМИР
+САВИЋ ЉУБОСЛАВ
+САВИЋ ЛУКА
+САВИЋ МАРИЈА
+САВИЋ МАРИЈА
+САВИЋ МАРИЈА
+САВИЋ МАРИЈА
+САВИЋ МАРИНА
+САВИЋ МАРИНА
+САВИЋ МАРКО
+САВИЋ МЕЏО
+САВИЋ МИХАЈЛО
+САВИЋ МИЛАДИН
+САВИЋ МИЛАН
+САВИЋ МИЛАН
+САВИЋ МИЛАН
+САВИЋ МИЛАН
+САВИЋ МИЛЕНА
+САВИЋ МИЛЕНКО
+САВИЋ МИЛЕНКО
+САВИЋ МИЛЕНКО
+САВИЋ МИЛИЈАНА
+САВИЋ МИЛИСАВ
+САВИЋ МИЛИВОЈЕ
+САВИЋ МИЛИВОЈЕ
+САВИЋ МИЛИВОЈЕ
+САВИЋ МИЛИВОЈ
+САВИЋ МИЛИВОЈ
+САВИЋ МИЛКО
+САВИЋ МИЛОШ ДИПЛ ИНГ
+САВИЋ МИЛОШ
+САВИЋ МИЛОШ
+САВИЋ МИЛОШ
+САВИЋ МИЛОШ
+САВИЋ МИЛОРАД
+САВИЋ МИЛОРАД
+САВИЋ МИЛОРАД
+САВИЋ МИЛОСАВА
+САВИЋ МИЛОСАВ
+САВИЋ МИЛОВАН
+САВИЋ МИЛУТИН
+САВИЋ МИОДРАГ
+САВИЋ МИОДРАГ
+САВИЋ МИРЈАНА
+САВИЋ МИРКО
+САВИЋ МИРКО
+САВИЋ МИРОСЛАВ
+САВИЋ МИРОСЛАВ
+САВИЋ МИРОСЛАВ
+САВИЋ МИРОСЛАВ
+САВИЋ МЛАДЕН
+САВИЋ МОМЧИЛО
+САВИЋ НАДА
+САВИЋ НАДЕЖДА
+САВИЋ НАТАША
+САВИЋ НЕДЕЉКО
+САВИЋ НЕДЕЉКО
+САВИЋ НЕДЕЉКО
+САВИЋ НЕДЕЉКО
+САВИЋ НЕНАД
+САВИЋ НИКОЛА
+САВИЋ НИКОЛА
+САВИЋ НИКОЛА
+САВИЋ НИКОЛА
+САВИЋ НИНОСЛАВ
+САВИЋ НОВО
+САВИЋ ОЛГА
+САВИЋ ОЛИВЕРА
+САВИЋ ОЛИВЕРА
+САВИЋ ПАНТЕЛИЈА
+САВИЋ ПАВЛЕ
+САВИЋ ПЕРА
+САВИЋ ПЕТАР
+САВИЋ ПЕТАР
+САВИЋ ПЕТАР
+САВИЋ ПЕТАР
+САВИЋ ПЛАНИНКА
+САВИЋ ПРЕДРАГ
+САВИЋ ПРОКОПИЈЕ
+САВИЋ РАДИША
+САВИЋ РАДИВОЈЕ ДИПЛ ИНГ
+САВИЋ РАДМИЛА
+САВИЋ РАДМИЛА
+САВИЋ РАДМИЛА
+САВИЋ РАДОЈИЦА
+САВИЋ РАДОМИР
+САВИЋ РАДОМИР
+САВИЋ РАДОВАН
+САВИЋ РАДОВАН
+САВИЋ РАКИЋ
+САВИЋ РАТКО
+САВИЋ РАТКО
+САВИЋ РЕЉА ДР
+САВИЋ РЕНАТА
+САВИЋ РОКСАНДА
+САВИЋ РУЖИЦА
+САВИЋ САША
+САВИЋ САВА АДВОКАТ
+САВИЋ САВА
+САВИЋ САВА
+САВИЋ САВА
+САВИЋ СИМЕУН ДИПЛ ИНГ
+САВИЋ СИНИША
+САВИЋ СЛАВКО
+САВИЋ СЛАВОЉУБ
+САВИЋ СЛАВОЉУБ
+САВИЋ СЛОБОДАН
+САВИЋ СЛОБОДАН
+САВИЋ СМИЉА
+САВИЋ СПАСОЈЕ
+САВИЋ СПАСОЈЕ
+САВИЋ СРЂАН
+САВИЋ СРБИСЛАВ
+САВИЋ СРЕТА
+САВИЋ СТЕВАН
+САВИЋ СТОЈАНКА
+САВИЋ СТОЈАН
+САВИЋ СТОЈАН
+САВИЋ СТОЈАН
+САВИЋ СВЕНКА
+САВИЋ СВЕТОЗАР
+САВИЋ СВЕТОЗАР
+САВИЋ ТАТОМИР
+САВИЋ ТЕОДОР
+САВИЋ ТИНКА
+САВИЋ ТОДОР
+САВИЋ ТОДОР
+САВИЋ ТОДОР
+САВИЋ ТОМИСЛАВ
+САВИЋ УРОШ
+САВИЋ ВЕЉКО
+САВИЋ ВЕРИЦА
+САВИЋ ВЕРИЦА
+САВИЋ ВЕСНА
+САВИЋ ВИДОСАВ
+САВИЋ ВИТОМИР
+САВИЋ ВЛАДИМИР
+САВИЋ ВЛАДИМИР
+САВИЋ ВОЈА
+САВИЋ ВУКАН
+САВИЋ ВУКОТА
+САВИЋ ЗОРАН
+САВИЋ ЗОРАН
+САВИЋ ЗОРАН
+САВИЋ ЗОРАН
+САВИЋ ЗОРАН
+САВИЋ ЗОРА
+САВИН ЖИВКА
+САВИН ЖИВКО
+САВИН ЂОРЂЕ
+САВИН ЂУРЂИНКА
+САВИН БЕРИСЛАВ
+САВИН БИЉАНА ДР
+САВИН БОРА
+САВИН ДАНИЦА
+САВИН ДРАГОЉУБ
+САВИН ДРАГОМИР
+САВИН ДРЕНКА
+САВИН ДУШАН
+САВИН ДУШАН
+САВИН ЈОВАН
+САВИН ЈОВАН
+САВИН ЈУЛКА
+САВИН ЛАСЛО
+САВИН ЛАЗАР
+САВИН ЉУБИНКА
+САВИН МАГДА
+САВИН МИЛЕВА
+САВИН МИЛИЦА
+САВИН МИЛКА
+САВИН МИЛОРАД
+САВИН МИЛОРАД
+САВИН МИЛОВАН
+САВИН МИОДРАГ ДИПЛ ОЕЦ
+САВИН МИРЈАНА
+САВИН МИРЈАНА
+САВИН НИКОЛА
+САВИН ПАВЛЕ
+САВИН ПРЕДРАГ
+САВИН РАДИВОЈ
+САВИН САВА
+САВИН СНЕЖАНА
+САВИН СПИРИДОН
+САВИН СТАНА
+САВИН ТОДОР
+САВИН ТОДОР
+САВИН ВЕРИЦА
+САВИН ВУКОСАВА
+САВИН ЗОРА
+САВКЕЉИН СТЕВАН
+САВКИЋ ДУШАН
+САВКОВ ДРАГОЉУБ
+САВКОВ ИЛИЈА
+САВКОВ МИЛАН
+САВКОВ ТОДОР
+САВКОВ ВЕРА
+САВКОВ ВОЈИСЛАВ
+САВКОВ ЗОРАН
+САВКОВИЋ ЖИВОРАД
+САВКОВИЋ ЈАЊА
+САВКОВИЋ МИЛУТИН
+САВКОВИЋ МИРКО
+САВКОВИЋ НЕМАЊА
+САВКОВИЋ САВА
+САВКОВИЋ САВО
+САВКОВИЋ СТАША
+САВКОВИЋ ТАТЈАНА
+САВКОВИЋ ВУКА
+САВКОВИЋ ЗДРАВКО
+САВОВИЋ ДЕСАНКА
+САВОВИЋ ФАТИМА
+САВОВИЋ ЉУБО
+САВОВИЋ ЛУКА
+САВОВИЋ НЕНАД
+САВОВИЋ РАДЕ
+САВУ-МИХАЈЛОВИЋ СОФИЈА
+САВУ ТИБИ
+САВУЉИЋ РАДОМИР
+САЗДАНИЋ ЂОКА
+САЗДАНИЋ ПАВЛЕ
+САЗДАНИЋ СТЕВАН
+СЕЧАНСКИ ЂОРЂЕ
+СЕЧЕН МИЛИВОЈ
+СЕЧЕН СВЕТОЗАР ДР
+СЕЧЕЊИ ИБОЉА
+СЕЧИ ИШТВАН
+СЕЧИВАНОВИЋ ЛЕПША
+СЕЧИВАНОВИЋ ЛЕПША
+СЕЧИВАНОВИЋ ПАВЛЕ
+СЕЧУЈСКИ АНДРИЈА ДИПЛ ИНГ
+СЕЧУЈСКИ ДАНИЛО
+СЕЧУЈСКИ МЛАДЕН
+СЕЧУЈСКИ РАДИВОЈ
+СЕБАСТИАН ЕРНЕ
+СЕБАСТИАН ЈОХАНА
+СЕБАСТИЈАН ЗЛАТКО
+СЕБЕЛЕДИ ПАВЛЕ
+СЕБЕЊИ ФЕРЕНЦ
+СЕБЕЊИ ФРАЊА
+СЕБИШАНОВИЋ ЂОРЂЕ
+СЕБИШАНОВИЋ ПАВЛЕ
+СЕДЕЈ ЈАНЕЗ
+СЕДЕР АЛЕКСАНДАР
+СЕДЕР ИВИЦА
+СЕДЕР СЛАВКО
+СЕДЕР ВЛАДИМИР
+СЕДЕРЛАНД ЂОРЂЕ
+СЕДЛАЧЕК САРА
+СЕДЛАК АНДРАШ
+СЕДЛАН ИЛИЈА
+СЕДЛАН МАНОЈЛО
+СЕДЛАН МИРКО ДИПЛ ИНГ
+СЕДЛАН РАДОСЛАВ
+СЕДЛАН САВА
+СЕДЛАР ИЛИЈА
+СЕДЛАР МАНЕ
+СЕДЛАР МИЛИЦА
+СЕДЛАР МИЛИЦА
+СЕДЛАР НАДА
+СЕДМАК ДРАГАН
+СЕДМАК ВЛАДО
+СЕФЧИК ЖУЖАНА
+СЕФЕР МАРИЈА
+СЕФЕР САКИБ
+СЕФЕР СЕНАД
+СЕФЕРОВИЋ СУАД
+СЕГ ЖУЖАНА
+СЕГ ИМРЕ
+СЕГЕДИ БРАНКА
+СЕГЕДИ ДИМИТРИЈЕ
+СЕГЕДИ ЕВГЕНИЈЕ
+СЕГЕДИ ИВИЦА
+СЕГЕДИ ЈОСИП
+СЕГЕДИ ЈОВАН
+СЕГЕДИ ЈУЛИЈАН
+СЕГЕДИ КАРОЉ
+СЕГЕДИ-КОВАЧЕВ БРАНКА ДР
+СЕГЕДИ КСЕНИЈА
+СЕГЕДИ ЛЕОНА
+СЕГЕДИ МАРИЈА
+СЕГЕДИ МЕЛИТА
+СЕГЕДИ МИЛЕНА
+СЕГЕДИ СЛАВИЦА
+СЕГЕДИ СТЕВАН
+СЕГЕДИ ВЛАДИМИР
+СЕГЕДИНАЦ ДУШКО
+СЕГЕДИНАЦ НАТАЛИЈА
+СЕГЕДИНАЦ ЗДРАВКО
+СЕГЕДИНСКИ АРКАДИЈЕ
+СЕГЕДИНСКИ БОЈКО
+СЕГЕДИНСКИ ЈУЛИЈАНА
+СЕГЕДИНСКИ НЕСТОР
+СЕГЕДИНСКИ САВА
+СЕГЕДИНСКИ ТОМА
+СЕГЕДИНСКИ ВИТОМИР
+СЕГИ ЛАСЛО
+СЕГИЋ БОРИСЛАВ
+СЕГИЋ РАНКО
+СЕИЗОВИЋ ДУШАНКА
+СЕКАЧ ПЕТАР
+СЕКЕ АРПАД
+СЕКЕ ЕВА
+СЕКЕ ИЛИЈА
+СЕКЕ ЈОСИП
+СЕКЕ КАТАРИНА
+СЕКЕ СТЕВАН
+СЕКЕ СТЕВАН
+СЕКЕЉ ЈАНИ
+СЕКЕЉ ЈОСИП
+СЕКЕЉ МАРИЈА
+СЕКЕЉ РУЖИЦА
+СЕКЕРЕШ ШАНДОР
+СЕКЕРЕШ ЂУЛА
+СЕКЕРЕШ ДЕНЕШ
+СЕКЕРЕШ ЕТЕЛ
+СЕКЕРЕШ ФЕРЕНЦ ДР ЛЕКАР
+СЕКЕРЕШ ФЕРЕНЦ
+СЕКЕРЕШ ИШТВАН
+СЕКЕРЕШ ИШТВАН
+СЕКЕРЕШ ИРЕНА
+СЕКЕРЕШ ЈОЖЕФ
+СЕКЕРЕШ ЈУЛИЈАНА
+СЕКЕРЕШ ЈУЛИЈА
+СЕКЕРЕШ КАРОЉ
+СЕКЕРЕШ КАТИЦА
+СЕКЕРЕШ ЛАЈОШ ДИПЛ ИНГ
+СЕКЕРЕШ НАНДОР
+СЕКЕРЕШ СТЕВАН
+СЕКЕРЕШ ТИБОР
+СЕКЕРЕШ ВЕРА
+СЕКЕРЕЗОВИЋ МИЛАН
+СЕКЕРИЋ СТЕВАН
+СЕКЕРУШ ЈЕЛИСАВЕТА
+СЕКЕРУШ ЉУБИЦА
+СЕКЕРУШ МИЛКИЦА
+СЕКЕРУШ МИРЈАНА
+СЕКЕРУШ ПАВЛЕ
+СЕКЕРУШ ПЕТАР
+СЕКЕРУШ СТАНИСЛАВ
+СЕКЕРУШ ВЛАДИМИР
+СЕКИЦКИ АЛЕКСАНДАР
+СЕКИЦКИ ЕМИЛИЈА
+СЕКИЦКИ ИСИДОР
+СЕКИЦКИ ЛАЗАР
+СЕКИЦКИ МАРИЦА
+СЕКИЦКИ МИЛОРАД
+СЕКИЦКИ ПЕТАР
+СЕКИЦКИ ВЕЉА
+СЕКИЗ ЖИВКО
+СЕКИЗ ИЛИЈА
+СЕКИЗ ЈОВАН
+СЕКИЗ МЕЛАНИЈА
+СЕКИЗ ПЕТАР
+СЕКИЗ ПЕТАР
+СЕКИЗ РАДИВОЈ
+СЕКИЗ СОЊА
+СЕКОШАН ЉУБИЦА
+СЕКОШАН МАРИНА
+СЕКОЛ МИЛКА
+СЕКОСКИ ЈОМЧЕ
+СЕКОВСКИ РАДЕ
+СЕКРЕЊ ЈОЖЕФ
+СЕКУЛИЋ ЧЕДИЦА
+СЕКУЛИЋ ЧЕДОМИР
+СЕКУЛИЋ ЖАРКО
+СЕКУЛИЋ ЖИВКО
+СЕКУЛИЋ ЖИВКО
+СЕКУЛИЋ ЖИВОЈИН ДИПЛ ИНГ
+СЕКУЛИЋ ЂОРЂЕ
+СЕКУЛИЋ ЂОРЂЕ
+СЕКУЛИЋ ЂУРЂИЦА
+СЕКУЛИЋ ЂУРАЂ
+СЕКУЛИЋ АЛЕКСАНДАР
+СЕКУЛИЋ АЛЕКСАНДАР
+СЕКУЛИЋ АНЂЕЛКА
+СЕКУЛИЋ АРСЕНИЈЕ
+СЕКУЛИЋ БОЖИДАР ДИПЛ ИНГ
+СЕКУЛИЋ БРАНИСЛАВ
+СЕКУЛИЋ БРАНИСЛАВ
+СЕКУЛИЋ БРАНИСЛАВ
+СЕКУЛИЋ ДАНЕ
+СЕКУЛИЋ ДАРИНКА
+СЕКУЛИЋ ДАРИНКА
+СЕКУЛИЋ ДЕСАНКА
+СЕКУЛИЋ ДЕСАНКА
+СЕКУЛИЋ ДОСТА
+СЕКУЛИЋ ДРАГАН
+СЕКУЛИЋ ДРАГИЦА
+СЕКУЛИЋ ДРАГОЉУБ
+СЕКУЛИЋ ДРАГОМИР
+СЕКУЛИЋ ДРАГОМИР
+СЕКУЛИЋ ДУШАН
+СЕКУЛИЋ ДУШАН
+СЕКУЛИЋ ДУШАН
+СЕКУЛИЋ ДУШАН
+СЕКУЛИЋ ИЛИЈА
+СЕКУЛИЋ ИЛИЈА
+СЕКУЛИЋ ИВАН
+СЕКУЛИЋ ИВАН
+СЕКУЛИЋ КАТИЦА
+СЕКУЛИЋ ЛАЗАР
+СЕКУЛИЋ ЉИЉАНА
+СЕКУЛИЋ ЉИЉАНА
+СЕКУЛИЋ ЉУБИША
+СЕКУЛИЋ ЉУБИЦА
+СЕКУЛИЋ ЉУБИЦА
+СЕКУЛИЋ ЉУБИЦА
+СЕКУЛИЋ ЉУБОМИР
+СЕКУЛИЋ МАРИЈА
+СЕКУЛИЋ МАРИЈА
+СЕКУЛИЋ МАРИЈА
+СЕКУЛИЋ МИЋО
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛАН
+СЕКУЛИЋ МИЛЕНА
+СЕКУЛИЋ МИЛЕНА
+СЕКУЛИЋ МИЛИВОЈЕ
+СЕКУЛИЋ МИЉА
+СЕКУЛИЋ МИЛОРАД
+СЕКУЛИЋ МИЛОРАД
+СЕКУЛИЋ МИЛОВАН
+СЕКУЛИЋ МИЛОВАН
+СЕКУЛИЋ МИЛОВАН
+СЕКУЛИЋ МИОДРАГ
+СЕКУЛИЋ МИОДРАГ
+СЕКУЛИЋ МИРА
+СЕКУЛИЋ МИРЈАНА
+СЕКУЛИЋ МИРЈАНА
+СЕКУЛИЋ МИРКО
+СЕКУЛИЋ НЕГИЦА
+СЕКУЛИЋ НЕМАЊА
+СЕКУЛИЋ ОЛГА
+СЕКУЛИЋ ОЛИВЕРА
+СЕКУЛИЋ ПАВЛЕ
+СЕКУЛИЋ ПАВЛЕ
+СЕКУЛИЋ ПЕТАР ДР
+СЕКУЛИЋ ПЕТАР
+СЕКУЛИЋ ПЕТКО
+СЕКУЛИЋ РАДЕ
+СЕКУЛИЋ РАДИВОЈ МР
+СЕКУЛИЋ РАДМИЛА
+СЕКУЛИЋ РАДОСАВ
+СЕКУЛИЋ РУЖИЦА
+СЕКУЛИЋ СИМО
+СЕКУЛИЋ СЛАВКО
+СЕКУЛИЋ СМИЉА
+СЕКУЛИЋ СПАСА
+СЕКУЛИЋ СПАСО
+СЕКУЛИЋ СТАНИСЛАВ
+СЕКУЛИЋ СТАНОЈЕ
+СЕКУЛИЋ СТЕВАН
+СЕКУЛИЋ СТЕВАН
+СЕКУЛИЋ СТОЈАН ДИПЛ ИНГ
+СЕКУЛИЋ СТОЈАН
+СЕКУЛИЋ СВЕТОЗАР
+СЕКУЛИЋ СВЕТОЗАР
+СЕКУЛИЋ ТИХОМИР
+СЕКУЛИЋ ТОМИСЛАВ
+СЕКУЛИЋ ТОМИСЛАВ
+СЕКУЛИЋ УСТИЈАНКА
+СЕКУЛИЋ ВАЛЕНТИНА
+СЕКУЛИЋ ВЕНО
+СЕКУЛИЋ ВИДОЈЕ
+СЕКУЛИЋ ВИНКО
+СЕКУЛИЋ ВЛАДИМИР
+СЕКУЛИЋ ВЛАДИМИР
+СЕКУЛИЋ ВЛАДО
+СЕКУЛИЋ ВОЈИСЛАВ
+СЕКУЛИЋ ЗОРАН
+СЕКУЛИЋ ЗОРАН
+СЕКУЛИЋ ЗОРА
+СЕКУЛИЋ ЗОРИЦА
+СЕКУЛОВИЋ МИХАИЛО
+СЕКУЛОВИЋ МИЛАНКА
+СЕКУЛОВИЋ МИЛЕНКО
+СЕКУЛОВИЋ РАДИВОЈЕ
+СЕКУЛОВИЋ СЛАВКО
+СЕЛ АНА
+СЕЛ ЈОЖЕФ
+СЕЛ ЛАДИСЛАВ
+СЕЛАК ЈОВАН
+СЕЛАК ЈОВО
+СЕЛАК МИРЈАНА
+СЕЛАК СТЕВАН
+СЕЛАКОВИЋ ЂОРЂЕ ДР ЛЕКАР
+СЕЛАКОВИЋ ДРАГИЦА ДР ЛЕКАР
+СЕЛАКОВИЋ ЉУБИСАВ
+СЕЛАКОВИЋ МИЛАН
+СЕЛАКОВИЋ МИОДРАГ
+СЕЛАКОВИЋ МИРОСЛАВ
+СЕЛАКОВИЋ МЛАДЕН
+СЕЛАКОВИЋ РАДОСЛАВ
+СЕЛАКОВИЋ СРЕЋКО
+СЕЛАКОВИЋ ВОЈА
+СЕЛЕШ КАРОЉ
+СЕЛЕШ КАРОЉ
+СЕЛЕШ МИХАЈЛО
+СЕЛЕШИ ЕЛЗА
+СЕЛЕШИ ЕТЕЛКА
+СЕЛЕШИ ЛАДИСЛАВ
+СЕЛЕШИ ЛАСЛО
+СЕЛЕШИ МАГДАЛЕНА
+СЕЛЕШИ МАРИЈА
+СЕЛЕШИ ПАЛ
+СЕЛЕШИ СТЕВАН
+СЕЛЕШИ ВИНЦЕ
+СЕЛЕШИ ЗОЛТАН
+СЕЛЕНА ЈЕЛЕНА
+СЕЛЕНА НИКОЛА
+СЕЛЕНИЋ АНКИЦА
+СЕЛИ ЕТЕЛКА
+СЕЛИ ИШТВАН ДР
+СЕЛИ МИКЛОШ
+СЕЛИЋ ДРАГУТИН
+СЕЛИЋ МИЋО
+СЕЛИЋ МИЛОШ
+СЕЛИЋ МИЛОРАД
+СЕЛИХ ДАНИЛО
+СЕЛИХ ДРАГО
+СЕЛИК ЈОСИП
+СЕЛИК ЛАДИСЛАВ
+СЕЛИМОВИЋ МУСТАФА
+СЕЛИНГЕР ГАБРИЈЕЛА
+СЕЉАКОВ НАДА
+СЕЛМАН ХАКИЈА
+СЕЛСКИ АНА
+СЕЛСКИ МАРИЈА
+СЕЛВЕР АЛИНАЂИ
+СЕМАН ЈОАКИМ
+СЕМЕДЕР ДИМИТРИЈЕ
+СЕМЕДЕР СУЗАНА
+СЕМЕДЕР СУЗАНА
+СЕМЕК ЧАБА
+СЕМЕК ЧИЛА
+СЕМЕНСКИ КОРНЕЛИЈА
+СЕМЕРЕДИ ЈОЖЕФ
+СЕМЕРЕДИ ВЕРА
+СЕМИЗ КАТИЦА
+СЕМИЗОВИЋ САДИК
+СЕМНИЦ РУДОЛФ ДР
+СЕН МАРТИН
+СЕНЧУК СЛАВИЦА
+СЕНЧУК СТЕВО
+СЕНЋАНСКИ ЈУЛИЈА
+СЕНЋАНСКИ КАТИЦА
+СЕНЋАНСКИ НАДА
+СЕНЋАНСКИ ПЕТАР
+СЕНЋАНСКИ ЗОРА
+СЕНАШИ ЛАДИСЛАВ
+СЕНЦИ ЛАДИСЛАВ
+СЕНДЕРАК ЂУРА
+СЕНДЕРАК ЕУГЕН
+СЕНДЕРАК ЛИДИЈА
+СЕНДЕРАК МЕЛАНИЈА
+СЕНДЕРАК МИРКО
+СЕНДЕРАК НИКОЛА
+СЕНДЕРАК ПЕТАР
+СЕНДЕРАК СИЛВЕСТЕР
+СЕНЕШИ ЈЕЛЕНА
+СЕНИЋ АНИЦА
+СЕНИЋ ИВАНКА
+СЕНИЋ ЛАЗАР
+СЕНИЋ МИЛОРАД
+СЕНИЋ РИСТО
+СЕНИЋ ВЛАДИМИР
+СЕЊЕШ ШАНДОР
+СЕЊИ АГОШТОН ДР ЛЕКАР
+СЕЊИ ИЛОНА
+СЕЊИ ИРЕНА
+СЕНТЕ ЉУБИЦА
+СЕНТЕ ПЕТАР
+СЕНТИН ЧЕДОМИР
+СЕНТИВАНАЦ ЂОРЂЕ
+СЕНТИВАНАЦ МАРКО
+СЕНТИВАНАЦ МИЛАН
+СЕНТИВАНАЦ МИЛОШ
+СЕНТИВАНАЦ МОМИР
+СЕНТИВАНАЦ САВА
+СЕНТИВАНАЦ СВЕТЛАНА
+СЕНТИВАНАЦ ТОДОР
+СЕНТИВАНАЦ ВЕСНА
+СЕНТМАРТОНИ ФЕРЕНЦ
+СЕП АНТАЛ
+СЕП ДЕЖЕ ДР ЛЕКАР
+СЕП ФЕРЕНЦ
+СЕП-ВАРГА ЕМИЛИЈА
+СЕРАФИМОВ КИРИЛ
+СЕРАТЛИЋ ЧЕДОМИР
+СЕРАТЛИЋ ДАРКА
+СЕРАТЛИЋ ГОЛУБ
+СЕРАТЛИЋ МИРАШ
+СЕРАТЛИЋ МИРЈАНА
+СЕРАТЛИЋ ВЕЛИМИР ДР
+СЕРАТЛИЋ ЗОРАН
+СЕРДА ШАНДОР
+СЕРДАР ДАНИЦА
+СЕРДАР ИЛИЈА
+СЕРДАР МАРА
+СЕРДАР МЛАДЕН
+СЕРДАР НЕДЕЉКО
+СЕРДАР ПЕТАР
+СЕРДАР ПЕТАР
+СЕРДАРЕВИЋ ЋАЗИМ
+СЕРДАРЕВИЋ ГИЗЕЛА
+СЕРЕШИ ФЕРЕНЦ
+СЕРЕШИ ИШТВАН
+СЕРЕШИ ЛАСЛО
+СЕРЕШИ РОЗАЛИЈА
+СЕРЕШИ СТЕВАН
+СЕРЕШИ ТИБОР
+СЕРЕНЧЕ ЛАДИСЛАВ
+СЕРЕНЧЕШ ЈОЖЕФ НОВИНАР
+СЕРНЕЦ СТЕВАН
+СЕРТИЋ ДРАГАН
+СЕРТИЋ МАРИЈА
+СЕРТИЋ МАТИЈА
+СЕРТИЋ МИЛАН
+СЕРТИЋ ВЛАДА
+СЕТЕНЧИЋ МИЛОРАД
+СЕВЕР ШИМЕ
+СЕВЕРИНИ ЈАН
+СЕВИЋ ЂОРЂЕ
+СЕВИЋ РАДЕНКО
+СЕВКИЋ БРАНКО
+СЕВКИЋ МАГДАЛЕНА
+СИЧ АНДРИЈА
+СИЧ ДРАГАН
+СИЧ ФЕРЕНЦ
+СИЧ ИМРЕ
+СИЧ ЈОЖЕФ
+СИЧ ЈОСИП
+СИЧ ЈОСИП
+СИЧ ЈУЛИЈАНА
+СИЧ КАЛМАН
+СИЧ КАЛМАН
+СИЧ МАРГИТА
+СИЧ МАРИЈА
+СИЧ МАРИЈА
+СИЧ МИХАЉ
+СИЧ МИРОСЛАВА
+СИЧ ПЕТАР ДР ЛЕКАР
+СИЧ ПИРОШКА
+СИЧ СТЕВАН
+СИЧ СТЕВАН
+СИЧ СТЕВАН
+СИЧ ТЕРЕЗА
+СИЧ ВЛАДИСЛАВ
+СИЧ ЗЛАТКО
+СИЋ МИРОСЛАВ
+СИЋ СЛАЂАНА
+СИЋ СТАНИСЛАВ
+СИЋ СТАНКО
+СИЂИ МИРКО
+СИБЕР ИШТВАН
+СИБЕР ИШТВАН
+СИБИНАЦ ВУКИЦА
+СИБИНКИЋ ПЕТАР
+СИБИНКИЋ РАТКО
+СИБИНКИЋ РАТКО
+СИБИНКИЋ ВАСА
+СИБИНОВ НИКОЛА
+СИБИНОВИЋ РАДОМИР
+СИБИНСКИ ВИДА
+СИЏИМОСКИ ДИМИТРИЈЕ
+СИДОР ЋИРИЛ ДР
+СИГЕТИ-БИЧКЕИ АГОТА
+СИГЕТИ ЈАША
+СИГЕТИ ЈАНОШ
+СИГЕТИ СТЕВАН
+СИКА ФРАЊА
+СИКА ИРЕНА
+СИКИМИЋ АНЂЕЛКА
+СИКИМИЋ НОВАК
+СИКИМИЋ СРЂАН
+СИКИМИЋ СРЂАН
+СИКИРИЦА МИРЈАНА
+СИКОРА КАРОЉ
+СИКОРА ЛАДИСЛАВ
+СИКОРА ПЕТАР
+СИЛАШКИ ИЛИЈА
+СИЛАШКИ РАДОВАН
+СИЛАШКИ СЛАВКО
+СИЛАШКИ СНЕЖАНА
+СИЛАШКИ ВЕРА
+СИЛАШКИ ВЛАДИСЛАВА
+СИЛАЂЕВ РУЖИЦА
+СИЛАЂИ ШАНДОР
+СИЛАЂИ АНДРАШ
+СИЛАЂИ ФРАЊА
+СИЛАЂИ ГИЗЕЛА
+СИЛАЂИ ИШТВАН
+СИЛАЂИ ИМРЕ
+СИЛАЂИ ЈЕЛИСАВЕТА
+СИЛАЂИ КАРОЉ
+СИЛАЂИ ЛАДИСЛАВ
+СИЛАЂИ ЛАСЛО ВАЈАР
+СИЛАЂИ ЛАСЛО
+СИЛАЂИ ЛАСЛО
+СИЛАЂИ ЛАСЛО
+СИЛАЂИ ЉУДЕВИТ
+СИЛАЂИ ЉУДЕВИТ
+СИЛАЂИ МАРИЈА
+СИЛАЂИ МИКЛОШ
+СИЛАЂИ РОЗАЛИЈА
+СИЛАЂИ ТЕРЕЗА
+СИЛАЂИ ВИКТОРИЈА
+СИЛАК АНДРАШ
+СИЛАК ГИЗЕЛА
+СИЛАК ИШТВАН
+СИЛАК ЗОЛТАН
+СИЛБАШКИ ДОШКО
+СИЛБАШКИ ЉУБИЦА
+СИЛБАШКИ МАРЈАН
+СИЛБАШКИ ЗОРАН
+СИЛБЕРХОЛЦ СТЕВАН
+СИЛЕР ЂУЛА
+СИЛЕР ДУШИЦА
+СИЛЕР ГУСТАВ
+СИЛЕР КАРЛ
+СИЉАНОВСКИ ДАРКО
+СИЉАНОВСКИ ЈОЖЕ
+СИЛНИ СЛАВНА
+СИЛВАШИ ШАНДОР
+СИЛВАШИ ЈАНОШ
+СИЛВАШИ КАРОЉ
+СИЛВЕСТРОВИЋ МИЛИЦА
+СИЛВЕСТРОВИЋ ТАНАСИЈЕ
+СИМЧИН МИХАЈЛО
+СИМАНИЋ ИЛИЈА
+СИМАНИЋ ЈЕЗДИМИР
+СИМАНИЋ ПЕТКО
+СИМАНИЋ РАЈКА
+СИМАНИЋ САВА
+СИМЕНДИЋ БОЖА
+СИМЕНДИЋ ГОРАН
+СИМЕНДИЋ СВЕТОЗАР
+СИМЕНДИЋ ВЛАДИМИР
+СИМЕНТИЋ ЈОВАН
+СИМЕНТИЋ ВОЈИСЛАВ
+СИМЕОНОВ ПАВЛЕ
+СИМЕОНОВ РАДИВОЈ
+СИМЕОНОВ ЗДРАВЧО
+СИМЕОНОВИЋ ЂОРЂЕ
+СИМЕОНОВИЋ МИЛИВОЈ
+СИМЕОНОВИЋ РАДОСЛАВ
+СИМЕОНОВИЋ СЛОБОДАНКА
+СИМЕТИЋ МОМЧИЛО
+СИМЕТИЋ ОСТОЈА
+СИМЕУНОВИЋ БОРИСЛАВ
+СИМЕУНОВИЋ ДРАГАН
+СИМЕУНОВИЋ ДРАГАН
+СИМЕУНОВИЋ ДРАГОЉУБ
+СИМЕУНОВИЋ ДУШАН
+СИМЕУНОВИЋ ЈАНКО
+СИМЕУНОВИЋ ЛЕПОСАВА
+СИМЕУНОВИЋ МИЛАН
+СИМЕУНОВИЋ МИЛОМИР
+СИМЕУНОВИЋ НЕВЕНКА
+СИМЕУНОВИЋ РАДОСАВ
+СИМЕУНОВИЋ САВА
+СИМЕУНОВИЋ СИМО
+СИМЕУНОВИЋ СИМО
+СИМЕУНОВИЋ СРЕТЕН
+СИМЕУНОВИЋ ВЛАДА
+СИМИЧИЋ ДРАГАНА
+СИМИШИЋ РАДОЈИЦА
+СИМИЋ ЧЕДА
+СИМИЋ ЖИВОЈИН
+СИМИЋ ЖИВОЈИН
+СИМИЋ ЂУРЂЕВКА
+СИМИЋ ЂУРА
+СИМИЋ ЂУРО
+СИМИЋ АЦА
+СИМИЋ АДАМ
+СИМИЋ АЛЕКСАНДАР
+СИМИЋ АЛЕКСАНДАР
+СИМИЋ АНЂЕЛКА
+СИМИЋ БОШКО
+СИМИЋ БОЈАНА
+СИМИЋ БОРА
+СИМИЋ БОРИСЛАВ
+СИМИЋ БОРИСЛАВ
+СИМИЋ БОРКА
+СИМИЋ БОСИЉКА
+СИМИЋ БРАНИСЛАВ
+СИМИЋ БРАНИСЛАВ
+СИМИЋ БРАНИСЛАВ
+СИМИЋ БРАНКО
+СИМИЋ БУДИМИР
+СИМИЋ-ЦХАЛАБИ ДРАГАНА
+СИМИЋ ЦВЕТИН
+СИМИЋ ДЕЈАН
+СИМИЋ ДОБРИВОЈЕ
+СИМИЋ ДОБРИВОЈЕ
+СИМИЋ ДОЈЧИН
+СИМИЋ ДРАГАН
+СИМИЋ ДРАГИЦА
+СИМИЋ ДРАГОЉУБ
+СИМИЋ ДРАГОЉУБ
+СИМИЋ ДРАГУТИН
+СИМИЋ ДУШАНКА
+СИМИЋ ДУШАН
+СИМИЋ ДУШАН
+СИМИЋ ДУШИЦА
+СИМИЋ ГОЈКО
+СИМИЋ ГОРДАНА
+СИМИЋ ГРАДИМИР
+СИМИЋ ХЕРМИНА ДР
+СИМИЋ ИЛИЈА
+СИМИЋ ИЛОНКА
+СИМИЋ ИВАН
+СИМИЋ ЈЕЛЕНА
+СИМИЋ ЈОВАН
+СИМИЋ ЈОВАН
+СИМИЋ ЈОВИЦА
+СИМИЋ ЈОВО
+СИМИЋ ЈОВО
+СИМИЋ ЈУДИТ
+СИМИЋ КРИСТИНА
+СИМИЋ ЉИЉАНА
+СИМИЋ МАРИЈА
+СИМИЋ МАРИЈА
+СИМИЋ МАРИЈА
+СИМИЋ МИЦА
+СИМИЋ МИХАИЛО
+СИМИЋ МИЛАН
+СИМИЋ МИЛАН
+СИМИЋ МИЛАН
+СИМИЋ МИЛЕНА
+СИМИЋ МИЛИЦА
+СИМИЋ МИЛИЈА
+СИМИЋ МИЛИВОЈ
+СИМИЋ МИЛОШ
+СИМИЋ МИЛОШ
+СИМИЋ МИЛОШ
+СИМИЋ МИЛОРАД
+СИМИЋ МИЛОРАД
+СИМИЋ МИЛОВАН
+СИМИЋ МИЛУТИН
+СИМИЋ МИЛУТИН
+СИМИЋ МИЛУТИН
+СИМИЋ МИРКО
+СИМИЋ МОМЧИЛО
+СИМИЋ МОМЧИЛО
+СИМИЋ МОМЧИЛО
+СИМИЋ МОМЧИЛО
+СИМИЋ НАДА
+СИМИЋ НАДА
+СИМИЋ НАРАНЧА
+СИМИЋ НЕЂО
+СИМИЋ НЕДЕЉКО
+СИМИЋ НЕМАЊА
+СИМИЋ НЕВЕНКА
+СИМИЋ НИКОЛА
+СИМИЋ НИКОЛА
+СИМИЋ НОВАК
+СИМИЋ НОВАК
+СИМИЋ НОВАК
+СИМИЋ ОЛГА
+СИМИЋ ОСТОЈА
+СИМИЋ ПАНТЕЛИЈА
+СИМИЋ ПАВЛЕ
+СИМИЋ ПЕТАР
+СИМИЋ РАДА
+СИМИЋ РАДЕНКО
+СИМИЋ РАДЕНКО
+СИМИЋ РАДИСАВ
+СИМИЋ РАДИВОЈЕ
+СИМИЋ РАДИВОЈЕ
+СИМИЋ РАДИВОЈ
+СИМИЋ РАДОЈЕ
+СИМИЋ РАДОВАН
+СИМИЋ РАЈКО
+СИМИЋ РУЖИЦА
+СИМИЋ РУЖИЦА
+СИМИЋ САВА
+СИМИЋ СИМА
+СИМИЋ СИНИША
+СИМИЋ СЛАДА
+СИМИЋ СЛАВКО
+СИМИЋ СЛОБОДАН
+СИМИЋ СРЂАН
+СИМИЋ СРЕТЕН
+СИМИЋ СТЕВАН
+СИМИЋ СТЕВАН
+СИМИЋ СТЕВАН
+СИМИЋ СТОЈАНКА
+СИМИЋ СВЕТИСЛАВ
+СИМИЋ СВЕТИСЛАВ
+СИМИЋ ТИХОМИР
+СИМИЋ ТИХОМИР
+СИМИЋ ТОДЕ
+СИМИЋ ТОМИСЛАВ
+СИМИЋ ТОМИСЛАВ
+СИМИЋ ВАЈКА
+СИМИЋ ВАСА
+СИМИЋ ВЕРОНКА
+СИМИЋ ВЕСЕЛКО
+СИМИЋ ВИНКА
+СИМИЋ ВЛАДЕ
+СИМИЋ ВЛАДИМИР
+СИМИЋ ВЛАДО
+СИМИЋ ВОЈИСЛАВ
+СИМИЋ ЗЛАТИМИР
+СИМИЋ ЗОРАН
+СИМИЋ ЗОРАН
+СИМИЋ ЗОРАН
+СИМИЋ ЗОРА
+СИМИЋ ЗОРА
+СИМИЋ ЗОРИЦА
+СИМИЋ ЗОРКА
+СИМИЋЕВИЋ РАДОМАН
+СИМИЈОНОВИЋ СЛОБОДАН
+СИМИКИЋ ЈОВАН
+СИМИЛЕЊИ ДУШИЦА
+СИМИН ЖИВКА
+СИМИН ЖИВОЈИН
+СИМИН АНЂЕЛКА
+СИМИН АРАНКА
+СИМИН ЦВЕТКО
+СИМИН ДАНИЦА
+СИМИН ДАНИЛО
+СИМИН ДИНА
+СИМИН ДРАГАН
+СИМИН ХИЛДА
+СИМИН ИВАНКА
+СИМИН ИВАН
+СИМИН ЈАША
+СИМИН ЈЕЛЕНА
+СИМИН КОСТА
+СИМИН ЛАЗАР
+СИМИН ЛЕПОСАВА
+СИМИН ЉУБИЦА
+СИМИН МАГДА
+СИМИН МИЛЕНА
+СИМИН МИЛИЦА
+СИМИН МИЛИЦА
+СИМИН МИЛИВОЈ
+СИМИН МИЛИВОЈ
+СИМИН МИЛУТИН
+СИМИН МИРОСЛАВ
+СИМИН НАДА
+СИМИН НАДА
+СИМИН НЕБОЈША
+СИМИН ПАВЛЕ
+СИМИН ПЕТАР
+СИМИН РАДИЦА
+СИМИН РАДИВОЈЕ
+СИМИН РАДОЈИЦА
+СИМИН РАДОВАН
+СИМИН СИНИША
+СИМИН СОФИЈА
+СИМИН СТЕВАН
+СИМОНОВИЋ ДРАГОСЛАВА
+СИМОНОВИЋ ХРИСТИНА
+СИМОНОВИЋ ИРЕНА ДР
+СИМОНОВИЋ МИЛЕ
+СИМОНОВИЋ МИЛОРАД
+СИМОНОВИЋ МИЛОРАД
+СИМОНОВИЋ НАДА
+СИМОНОВИЋ НИКОЛА
+СИМОНОВИЋ ПЕТАР
+СИМОНОВИЋ СЛОБОДАН
+СИМОНОВИЋ ТОМИСЛАВ
+СИМОНОВИЋ ВОЈИСЛАВ
+СИМОНОВСКИ ФИНКА
+СИМОНОВСКИ МИТА
+СИМОТИН РАДОВАН
+СИМОВИЋ ЖЕЉКО
+СИМОВИЋ ЖИВОТА
+СИМОВИЋ АНКА
+СИМОВИЋ БРАНИСЛАВ ДР
+СИМОВИЋ ДРАГОЉУБ
+СИМОВИЋ ДРАГОЉУБ
+СИМОВИЋ ДРАГО
+СИМОВИЋ ЈОВА
+СИМОВИЋ ЉУБИША
+СИМОВИЋ МИЛАН
+СИМОВИЋ МИЛАН
+СИМОВИЋ МИЛАН
+СИМОВИЋ МИЛАН
+СИМОВИЋ МИЛОШ
+СИМОВИЋ МИЛОШ
+СИМОВИЋ МИРКО
+СИМОВИЋ МИТАР
+СИМОВИЋ ПЕТАР
+СИМОВИЋ РАДИВОЈЕ
+СИМОВИЋ РАДОМИР
+СИМОВИЋ СЛОБОДАН ПРОФЕСОР
+СИМОВИЋ СЛОБОДАН
+СИМОВИЋ ТОДОР
+СИМОВИЋ ВИДАК
+СИМОВИЋ ВЛАДИМИР
+СИМОВЉЕВИЋ ЈОЦА
+СИМУНИЋ ЖЕЛИМИР
+СИМУНИЋ АНДРИЈА
+СИМУНИЋ МАГДА
+СИМУНИЋ СТАНИМИР
+СИМУНОВИЋ МАРИЈА
+СИМУНОВИЋ МИЛУН
+СИМУРДИЋ МИЛАН
+СИМУРДИЋ ПЕТАР
+СИМУРДИЋ ВИТОМИР
+СИНЧИЋ ЗВОНИМИР
+СИНЂЕЛИЋ ЉУБИСАВ
+СИНЂЕЛИЋ МИЛОШ
+СИНЂИЋ МИЛЕНКО
+СИНАДИНОВИЋ ВОЈО
+СИНАНИ АБДУЛА
+СИНАНИ МИЛИЦА
+СИНАНОВИЋ САФЕТ
+СИНГЕР ДРАГИЦА
+СИНГЕР РУЖИЦА
+СИРАЧКИ КАРОЛИНА
+СИРАЦКИ ЈОВАН
+СИРАЦКИ ВЛАДИМИР
+СИРАК ЛАСЛО ДР
+СИРИШКИ ЖАРКО
+СИРИШКИ ЂУРЂИНА
+СИРИШКИ БРАНИСЛАВ
+СИРИШКИ ИВАН
+СИРИШКИ ЈАСМИНКА
+СИРИШКИ ЈЕЛЕНА
+СИРИШКИ ЈОВАН
+СИРИШКИ МИРОСЛАВА
+СИРИШКИ СЛАВКО СУДИЈА
+СИРИШКИ СЛАВКО
+СИРОЧИЋ ИВАН
+СИРОЖЕНКО СНЕЖАНА
+СИРОЖЕНКО ВЕРА
+СИРОТИН СЛАВИЦА
+СИРОВИЦА ЈАНОШ
+СИРУЧЕК ВИЛИМ ДИПЛ ИНГ
+СИТАШ ИЛОНА
+СИТАШ ЛАЈОШ
+СИТАРЕВИЋ АМИР
+СИТАРИЋ ПАЈА
+СИВЧ АМАЛИЈА
+СИВЧ АНЂЕЛКА
+СИВЧ ДАНИЛО
+СИВЧ ХЕЛЕНА
+СИВЧ ИРИНА
+СИВЧ ЈАНКО
+СИВЧ ЉУБОМИР
+СИВЧ ЉУБОМИР
+СИВЧ НЕСТОР
+СИВЧ ВЛАДИМИР
+СИВЧЕВ ЂОКА
+СИВЧЕВ БОЖИДАР
+СИВЧЕВ ЈОВАН ДР
+СИВЧЕВ ЈУЛКА
+СИВЧЕВ ЉУБИЦА
+СИВЧЕВ МИЛАН
+СИВЧЕВ ЗОРАН
+СИВАЧКИ ЂУРА
+СИВАЧКИ ЈОВАН
+СИВАЧКИ МИЛАН
+СИВАЧКИ МИРЈАНА
+СИВАЧКИ МИРОСЛАВ
+СИВАЧКИ САВА
+СИВАЧКИ СЛОБОДАНКА
+СИВАЧКИ ВЕРА
+СИВАЧКИ ВЕРА
+СИВАЦ ЈОВАНКА
+СИВАК ИБОЉА
+СИВАК ЈУДИТА
+СИВАК ЉУБИНКА
+СИВАК РОЗИНА
+СИВИЋ ГОЈКО
+СИВИЋ РАДЕ
+СИЗОВ МАРГИТА
+СЈЕНИЧИЋ НЕДЕЉКО
+СЈЕПАНОВИЋ СРЂАН
+СКАКАВАЦ НИКОЛА
+СКАКАВАЦ НОВА
+СКАКАВАЦ НОВА
+СКАКАВАЦ СОФИЈА
+СКАКАВАЦ ВЕЛИМИР
+СКАКАВАЦ ВУЈИЦА
+СКАКАВАЦ ЗДРАВКО
+СКАКИЋ БОШКО
+СКАКИЋ МИЛАН
+СКАКИЋ НИКОЛА
+СКАКУН ЖИВКО
+СКАЛА АНТАЛ
+СКАЛА МИЛЕНА
+СКАЛА ВЛАДИМИР
+СКАЛИЦКИ ЗАГОРКА
+СКАНДАРСКИ АНКА
+СКАНДАРСКИ МИЛАН
+СКАНДАРСКИ МИЛОШ
+СКАНДАРСКИ МИРКО
+СКАНДАРСКИ МЛАДЕН
+СКАНДАРСКИ МОМЧИЛО
+СКАНДАРСКИ РАДОВАН
+СКАРАМУЦА МИЈО
+СКАРАМУЦА ЗДРАВКО
+СКЕЛЕЏИЋ АЛЕКСАНДАР
+СКЕЛЕЏИЋ АЛЕКСАНДАР
+СКЕЛЕЏИЋ БРАНИСЛАВ
+СКЕЛЕЏИЋ БРАНИСЛАВ
+СКЕЛЕЏИЋ ДРАГИЦА
+СКЕЛЕЏИЋ КАТИЦА
+СКЕЛЕЏИЋ ЉУБИНКО
+СКЕЛЕЏИЋ МАРИЈА
+СКЕЛЕЏИЋ МИЛАН
+СКЕЛЕЏИЋ МИРОСЛАВА
+СКЕЛЕЏИЋ РАДОСЛАВ
+СКЕЛЕЏИЋ РАДОСЛАВ
+СКЕЛЕЏИЈА КАТА
+СКЕЛЕЏИЈА РАДОЈИЦА
+СКЕЛЕЏИЈА СПАСИМИР
+СКЕНЏИЋ ЖАРКО
+СКЕНЏИЋ БОГДАН
+СКЕНЏИЋ БРАНКА
+СКЕНЏИЋ ДАНЕ
+СКЕНЏИЋ ДАНИЛО
+СКЕНЏИЋ ДРАГОМИР
+СКЕНЏИЋ ДУШАН
+СКЕНЏИЋ ИЛИЈА
+СКЕНЏИЋ ЈАСМИНКА
+СКЕНЏИЋ ЈОВАНКА
+СКЕНЏИЋ МАРГАРЕТА
+СКЕНЏИЋ МИЛАН
+СКЕНЏИЋ МИЛЕНКО
+СКЕНЏИЋ МИЛИЦА
+СКЕНЏИЋ РАДЕ
+СКЕНЏИЋ САРА
+СКЕНЏИЋ СОФИЈА
+СКЕНЏИЋ СТЕВАН
+СКЕНДЕРОВИЋ АНДРИЈА
+СКЕНДЕРОВИЋ БЕРИСЛАВ
+СКЕНДЕРОВИЋ ГАБОР
+СКЕНДЕРОВИЋ МАРИЈА
+СКЕНДЕРОВИЋ СИНИША
+СКЕРЛЕТОВИЋ МИЛОШ
+СКЕРЛЕТОВИЋ ЗОРАН
+СКЕРТ БОЖИДАР
+СКИЧАК ЛАСЛО
+СКИВЈАНИ ШАНДОР
+СКИВЈАНИ МИХАЉ
+СКЛАБИНАЦ ВЛАДИМИР
+СКЛАБИНСКИ САМО
+СКЛЕНА ЈОХАН ДИПЛ ИНГ
+СКЛЕНА ОЛИВЕРА
+СКЛЕНА ВИКТОРИЈА
+СКЛЕНАР ПЕТАР
+СКЉАР ЂУРО
+СКОЧАЈИЋ ВУКАШИН
+СКОЧОВСКИ МАРИЈА
+СКОБЕ ИВАН
+СКОК МИРЈАНА
+СКОКАНДИЋ ПЕТАР
+СКОКИЋ НЕНАД
+СКОКИЋ ВЕСНА
+СКОКНИЋ ДУШАН
+СКОКНИЋ СТЕВАН
+СКОКО МИЛОШ
+СКОМИНА ВЕРИЦА
+СКОПАЛ БЕЛА
+СКОПАЛ ЈОВАН
+СКОРИЋ ЈАСМИНКА
+СКОРИЋ ЉУБО
+СКОРИЋ ТОНКА
+СКОРИЋ ВУЈО
+СКОРУПАН ЂУРА
+СКОРУПАН ДАНИЦА
+СКОРУПАН КАТА
+СКОРУПАН РАДЕНКО
+СКОРУПАН СЛАВКО
+СКОТОВИЋ ФЕРЕНЦ
+СКРАМОЋИН СРЕЋКО
+СКРОБИЋ ДРАГАН
+СКРОБИЋ ПЕТАР
+СКРОБОЊА АЛЕКСАНДАР
+СКРОБОЊА КАТИЦА
+СКРОБОЊА НИКОЛА
+СКРОБОЊА ВЛАДИМИР
+СКУБАН ХЕЛЕНА
+СКУБАН ЈАНКО
+СКУБАН ЈЕФРЕМ
+СКУБАН ЈУЛИЈАН
+СКУБАН ЛЕОНА
+СКУБАН ЉУБОМИР
+СКУБАН МИХАЈЛО
+СКУБАН НАТАЛИЈА
+СКУБАН НИКОЛА
+СКУБАН ЗОРКА
+СКУЛАР РАДОЈКА
+СКУЛИЋ МИРЈАНА
+СКУЛИЋ СИМКА
+СКУЛИЋ ВЛАДИМИР
+СКУМПИЈА ЈОЖЕФ
+СКУРУПАТИС МИРЈАНА
+СЛАЋАНИН ИВАН
+СЛАДАКОВИЋ НИКОЛА
+СЛАДЕК АНДРИЈА
+СЛАДИЋ ЦВЕТА
+СЛАДИЋ СЛОБОДАН
+СЛАДИЋ СТЕВАН
+СЛАДИЋ ЗОРИЦА
+СЛАДОЈА МИЛОВАН
+СЛАДОЈЕ ИЛИЈА
+СЛАДОЈЕ РАДОМИР
+СЛАДОЈЕВ МИЛАН
+СЛАДОЈЕВ ПРЕДРАГ
+СЛАДОЈЕВИЋ ЖИВКО
+СЛАДОЈЕВИЋ МИРКО
+СЛАДОЈЕВИЋ РАДИВОЈ
+СЛАМА ЂОРЂЕ
+СЛАМА МАРИЈА
+СЛАМАР ФЕРЕНЦ
+СЛАНЦ ЈЕЛЕНА
+СЛАНКАМЕНАЦ ЖИВКО
+СЛАНКАМЕНАЦ ЖИВКО
+СЛАНКАМЕНАЦ ЂОРЂЕ
+СЛАНКАМЕНАЦ АЛЕКСАНДАР
+СЛАНКАМЕНАЦ АНКИЦА
+СЛАНКАМЕНАЦ БРАНИСЛАВ
+СЛАНКАМЕНАЦ ДУШАНКА
+СЛАНКАМЕНАЦ ИДА
+СЛАНКАМЕНАЦ ЈЕЛЕНА
+СЛАНКАМЕНАЦ ЈОВАН
+СЛАНКАМЕНАЦ МАРИЈА
+СЛАНКАМЕНАЦ МАРИЈА
+СЛАНКАМЕНАЦ МИЛАН
+СЛАНКАМЕНАЦ МИЛАН
+СЛАНКАМЕНАЦ МИЛАН
+СЛАНКАМЕНАЦ МИЛОШ
+СЛАНКАМЕНАЦ МИЛОШ
+СЛАНКАМЕНАЦ МИЛОЈЕ
+СЛАНКАМЕНАЦ МИРЈАНА
+СЛАНКАМЕНАЦ МОМЧИЛО
+СЛАНКАМЕНАЦ НАДА
+СЛАНКАМЕНАЦ ПЕТАР ДР
+СЛАНКАМЕНАЦ ПЕТАР
+СЛАНКАМЕНАЦ ПЕТАР
+СЛАНКАМЕНАЦ ПРОКА
+СЛАНКАМЕНАЦ РАДОСЛАВ
+СЛАНКАМЕНАЦ СТЕВАН
+СЛАНКАМЕНАЦ ВЕСЕЛИН
+СЛАНКАМЕНАЦ ЗОРАН
+СЛАТВИНСКИ ГЕОРГИЈЕ
+СЛАВИЋ ЂОРЂЕ
+СЛАВИЋ СОФИЈА
+СЛАВИЦА СТИПЕ
+СЛАВКИЋ ДУШАНКА
+СЛАВКОВИЋ АЛОЈЗ
+СЛАВКОВИЋ МИЛОШ
+СЛАВКОВИЋ МИРЈАНА
+СЛАВКОВИЋ СИБИН
+СЛАВКОВИЋ СНЕЖАНА
+СЛАВКОВИЋ ТРИФУН
+СЛАВКОВИЋ ЗДЕНКО
+СЛАВНИЋ ДАНИЛО
+СЛАВНИЋ ЈАСМИНА
+СЛАВНИЋ ЉУБИЦА
+СЛАВНИЋ НОВКА
+СЛАВНИЋ РАДИВОЈ
+СЛАВНОВИЋ ИВАН
+СЛАВУЈ БОЖО
+СЛАВУЈ ДРАГАН
+СЛАВУЈЕВИЋ ДУШАН
+СЛАВУЈЕВИЋ ЉУБОМИР
+СЛАВУЈЕВИЋ МИЛЕНА
+СЛАВУЈЕВИЋ РАДИСАВ
+СЛАВУЈЕВИЋ СТЕВО
+СЛАВУЉ МИЛЕ
+СЛЕПЧЕВ ЖИВАН
+СЛЕПЧЕВ ДАНИЦА
+СЛЕПЧЕВ ЈОВАН
+СЛЕПЧЕВ НИКОЛА
+СЛЕПЧЕВ ЗДЕНКА
+СЛЕПЧЕВ ЗОРИЦА
+СЛЕПЧЕВИЋ КРСТАН
+СЛЕПЧЕВИЋ ЉУБИША
+СЛЕПЧЕВИЋ МИЛАН
+СЛЕПЧЕВИЋ ОЛГА
+СЛЕПЧЕВИЋ РУЖА
+СЛЕПЧЕВИЋ ЗДРАВКА
+СЛЕПКО ИРЕНА
+СЛЕПКО ЈОВАН
+СЛЕПКО МИХАЈЛО
+СЛЕПКО МИЛИЦА
+СЛЕСАР ДАНИЛО
+СЛЕСАР ЈЕЛЕНА
+СЛЕСАР МОМЧИЛО
+СЛЕСАР ВАСА
+СЛИШКО АНДРИЈА
+СЛИШКО МАРКО
+СЛИШКОВИЋ АНЂЕЛКА
+СЛИЈЕПЧЕВИЋ АНА
+СЛИЈЕПЧЕВИЋ БИСЕРКА
+СЛИЈЕПЧЕВИЋ ДРАГАН
+СЛИЈЕПЧЕВИЋ ДУШАН
+СЛИЈЕПЧЕВИЋ ДУШАН
+СЛИЈЕПЧЕВИЋ ГЕОРГИЈЕ
+СЛИЈЕПЧЕВИЋ ЈАНКО
+СЛИЈЕПЧЕВИЋ ЈАНКО
+СЛИЈЕПЧЕВИЋ ЈОВАН
+СЛИЈЕПЧЕВИЋ КОВИЉКА
+СЛИЈЕПЧЕВИЋ ЉУБАН
+СЛИЈЕПЧЕВИЋ МИЛОРАД
+СЛИЈЕПЧЕВИЋ МИЛОВАН
+СЛИЈЕПЧЕВИЋ МИРОСЛАВА
+СЛИЈЕПЧЕВИЋ НОВИЦА
+СЛИЈЕПЧЕВИЋ РУЖИЦА
+СЛИЈЕПЧЕВИЋ САВО
+СЛИЈЕПЧЕВИЋ ВЕРА
+СЛИЈЕПЧЕВИЋ ВЈЕКОСЛАВА
+СЛИЈЕПЧЕВИЋ ЗВОНКО
+СЛИЈЕПАЦ МИЛОШ
+СЛИЈЕПАЦ СЛОБОДАН
+СЛИМАК АДАМ
+СЛИВА ЕЛИЗАБЕТА
+СЛИВКА ЂУРА
+СЛИВКА АНА
+СЛИВКА БОЖАНА
+СЛИВКА БОСИЉКА
+СЛИВКА ЈАРОСЛАВ
+СЛИВКА ЈОВАН
+СЛИВКА МИША
+СЛИВКА МИША
+СЛИВКА СТЕВАН
+СЛИВКА ЗДЕНКА
+СЛИВКА ЗЛАТА
+СЉУКА БОХУСЛАВ
+СЉУКА ЈУРАЈ
+СЛОБОДА АНТАЛ
+СЛОБОДА ИШТВАН
+СЛОБОДА ЈАНОШ
+СЛОБОДА ЈОЖЕФ
+СЛОБОДА ЈУЛКА
+СЛОБОДА МИХАЈЛО
+СЛОБОДА МИХАЉ
+СЛОБОДА ПЕТАР
+СЛОБОДА СЛАВКА
+СЛОБОДА СТЕВАН
+СЛОКАР ИВАН
+СЛОКАР МАТИЈА
+СЛОВИЋ ДРАГОЉУБ ДР
+СЛУЊСКИ ФРАЊА
+СМАГИН ИВАН
+СМАЈИЋ МАКСИМ
+СМАЈИЋ МИЛОШ
+СМАЈИЋ СЛОБОДАН
+СМАЈИЋ СЛОБОДАН
+СМЕДЕРЕВАЦ ДУШАН
+СМЕДЕРЕВАЦ ЈОВАН
+СМЕДЕРЕВАЦ МИЛИЦА
+СМЕДЕРЕВАЦ ПЕТАР
+СМЕДЕРЕВАЦ СТЕВИЦА
+СМИЋЕВИЋ УРОШ
+СМИЕШКО ЈЕЛИСАВЕТА
+СМИЛИЋ МАРИЈА
+СМИЉАНИЋ ЂОРЂЕ
+СМИЉАНИЋ ЂОРЂЕ
+СМИЉАНИЋ ЂОРЂЕ
+СМИЉАНИЋ БОЈАНА
+СМИЉАНИЋ БОРКА
+СМИЉАНИЋ БРАНКО
+СМИЉАНИЋ ДОБРИВОЈ
+СМИЉАНИЋ ДРАГИЦА
+СМИЉАНИЋ ИЛИЈА
+СМИЉАНИЋ ЈОВАНА
+СМИЉАНИЋ ЈОВАН
+СМИЉАНИЋ ЈОВО
+СМИЉАНИЋ ЉИЉАНА
+СМИЉАНИЋ ЉИЉАНА
+СМИЉАНИЋ МАРИЈА
+СМИЉАНИЋ МИЛАН
+СМИЉАНИЋ МИЛАН
+СМИЉАНИЋ МИЛЕНКО
+СМИЉАНИЋ МИЛКА
+СМИЉАНИЋ МИЛОРАД
+СМИЉАНИЋ МИЛУТИН
+СМИЉАНИЋ МИОДРАГ
+СМИЉАНИЋ МЛАДЕН
+СМИЉАНИЋ НЕВЕНКА
+СМИЉАНИЋ НЕВЕНКА
+СМИЉАНИЋ ОЛИВЕРА
+СМИЉАНИЋ ПЕТАР
+СМИЉАНИЋ ПРЕДРАГ
+СМИЉАНИЋ РАДА
+СМИЉАНИЋ РАДЕ
+СМИЉАНИЋ САВА
+СМИЉАНИЋ СОФИЈА
+СМИЉАНИЋ СОФИЈА
+СМИЉАНИЋ СТАНА
+СМИЉАНИЋ СТЕВО
+СМИЉАНИЋ ТРИВО
+СМИЉАНИЋ ВЕСЕЛКО
+СМИЉАНИЋ ВИДОСАВ
+СМИЉАНИЋ ВИНКО
+СМИЉАНИЋ ВЛАДИМИР
+СМИЉАНИЋ ВЛАДИМИР
+СМИЉАНИЋ ЗЛАТКО
+СМИЉАНИЋ ЗОРКА
+СМИЉАНОВ МИЛАН
+СМИЉАНОВ РАДОВАН
+СМИЉАНСКИ МИЛАН
+СМИЉИЋ ЖИВКО
+СМИЉКОВИЋ РАДОМИР
+СМИЉКОВИЋ СТАНИМИР
+СМИРНОВ ЈУДИТА
+СМИРНОВ ЈУДИТ
+СМИРНОВ РАСТИСЛАВ
+СМИРНОВ ВЛАДИМИР
+СМОК НИКОЛА
+СМОЛЧИЋ РУЖА
+СМОЛЕНИЦКИ МЕЛИТА
+СМОЛЕНСКИ КАРЛО
+СМОЛЕНСКИ РОЗАЛИЈА
+СМОЉАНИКОВ МИХАЈЛО ДИПЛ ИНГ
+СМОЛОВИЋ ДРАГОЉУБ
+СМОЛОВИЋ МИХАЈЛО
+СМОЛОВИЋ РАДМИЛА
+СМОЛОВИЋ РАТКО
+СМОЛОВИЋ САВА
+СМРЕКА ДРАГИЦА
+СМУЂА ГРАДИМИР
+СМУЂА ЈОВАН
+СМУЂА МИЛЕНКО
+СМУЂА НИКОЛА
+СМУЂА САВА
+СМУК ЖИВАНА
+СМУК БОРИВОЈ
+СМУТЕК ЈОСИП
+СМУТНИ ИВАН
+СЊИДА АНА
+СЊИДА САША
+СОБЧАК ФРАЊА
+СОБОЧАН МИША
+СОБОЋАН ИВАН
+СОЦЕК ИМРЕ
+СОЦЕК ЈОСИП
+СОЦЕК МИРЈАНА
+СОФИЉ АЛЕКСАНДРА
+СОФИЉ ДРАГИЦА
+СОФИЉ ЈОВАНКА
+СОФИЉ РАНКО
+СОФИЉ СЛАВИЦА
+СОФИНКИЋ БРАНКА
+СОФРАЏИЈА МУХАМЕД
+СОФРАНИН БОРИВОЈ
+СОФРАНИН КУЗМАН
+СОФРАНИН МИЛИВОЈ
+СОФРЕНИЋ ВЕРИЦА
+СОФРОНИЈЕВИЋ ЉУБИЦА
+СОФТИЋ МАРИЈА
+СОГИЋ САВА
+СОГИЋ ВЛАДИСЛАВ
+СОЈЕВИЋ МЛАДЕН
+СОЈИЋ РАДОЈКА
+СОКЕЛЕ БРАНИСЛАВ
+СОКИЋ ЖИВКО
+СОКИЋ ЂУРЂИЦА
+СОКИЋ ИЛИЈА
+СОКИЋ ЛИДИЈА
+СОКИЋ ЗОРКА
+СОКНИЋ ТОМИСЛАВ
+СОКОЛА АНТУН
+СОКОЛА ФЕРЕНЦ
+СОКОЛА ИШТВАН
+СОКОЛА ИШТВАН
+СОКОЛА КАТАРИНА
+СОКОЛА МАРТА
+СОКОЛАИ ЈОЖЕФ
+СОКОЛАИ ЛАЈОШ
+СОКОЛИЋ ЖЕЉКО
+СОКОЛОВ АЛЕКСАНДАР
+СОКОЛОВ ЉУБОМИР
+СОКОЛОВ МИЛАН
+СОКОЛОВ НАДКА
+СОКОЛОВ СЛАВКА
+СОКОЛОВ СТЕВАН
+СОКОЛОВ ЗИНАИДО
+СОКОЛОВИЋ ЂОРЂЕ
+СОКОЛОВИЋ АНА
+СОКОЛОВИЋ ДУШКО
+СОКОЛОВИЋ КАТАРИНА
+СОКОЛОВИЋ МИЛЕ
+СОКОЛОВИЋ НАТАЛИЈА
+СОКОЛОВИЋ РУЖИЦА
+СОКОЛОВИЋ СЛОБОДАН
+СОКОЛОВИЋ СЛОБОДАН
+СОКОЛОВИЋ ТОМИСЛАВ
+СОКОЛОВИЋ ЗОРИЦА
+СОКОВИЋ ДИМИТРИЈЕ
+СОКОВИЋ ДУШАН
+СОЛАР ЉУБИЦА
+СОЛАР СТЈЕПАН
+СОЛАРЕВИЋ ЈОВАНКА
+СОЛАРЕВИЋ МИЛАНКА
+СОЛАРИЋ СОФИЈА
+СОЛАРОВ БОРИСЛАВ
+СОЛАРОВ БОРО
+СОЛАРОВ МИЛАН
+СОЛАРОВ МИЛИЦА
+СОЛАРОВ МИЛИЦА
+СОЛАРОВ МИЛОШ
+СОЛАРОВ МИЛОВАН
+СОЛАРОВ НИКОЛА
+СОЛАРОВ РАДИВОЈ
+СОЛДАТ БОШКО
+СОЛДАТ БРАНКА
+СОЛДАТ ДРАГО
+СОЛДАТ МИЛОШ
+СОЛДАТ МИТАР
+СОЛДАТ ПЕТАР
+СОЛДАТ ВЕСНА
+СОЛДАТОВИЋ ЂОРЂЕ
+СОЛДАТОВИЋ ЂОРЂЕ
+СОЛДАТОВИЋ ГОРАН
+СОЛДАТОВИЋ ЈОВАН
+СОЛДАТОВИЋ МИЛА
+СОЛДАТОВИЋ САВА НОВИНАР
+СОЛДАТОВИЋ СТАНОЈЕ
+СОЛДАТОВИЋ ВЕСНА
+СОЛДАТОВИЋ ВОЈО
+СОЛДО АЛЕКСАНДАР
+СОЛДО ИВАН
+СОЛДО НОВИЦА
+СОЛДО ВЛАДИМИР
+СОЛЕША МИШО
+СОЛОМУН БРАНКО
+СОЛОМУН ДРАГО
+СОЛОМУН ИЛИЈА
+СОЛОМУН МИЛЕ
+СОЛОМУН ВЕСА
+СОЛОЊА СТЕВАН
+СОМБОРАЦ АЛЕКСАНДАР
+СОМБОРАЦ ЈОВАН
+СОМБОРАЦ МАРИЈА
+СОМБОРАЦ СРЕЋКО
+СОМБОРАЦ ТЕРЕЗА
+СОМБОРАЦ ТОДОР
+СОМБОРСКИ ЛАЗАР
+СОМБОРСКИ МИЛИЦА
+СОМЕР ИМРЕ
+СОМЕР ЈЕЛЕНА
+СОМЕР ТИБОР
+СОПКА АНИЦА
+СОПКА ЈАНКО
+СОПКА ЉУБОМИР
+СОПКА ЉУБОМИР
+СОПКА МАРИЈА
+СОПКА МИРОСЛАВ
+СОРШАК МИЛАН
+СОРШАК ВАЛЕНТИН
+СОРАДИ АНТУН
+СОРАДИ ИВАН
+СОРАДИ СТЈЕПАН
+СОРАЈИЋ МИЛАН
+СОРАЈИЋ МИЛИВОЈ
+СОРАК ДЕЛИВОЈЕ
+СОРГ АНГЕЛИНА
+СОРГ ЈЕЛЕНА
+СОРГ НИКОЛА
+СОРГЕР МИРА
+СОРО МИЛАН
+СОРО МИОДРАГ
+СОРО МИРЈАНА
+СОРО НИКОЛА
+СОРО СИМО
+СОТЕР ЈАНОШ
+СОТИРОВИЋ СЛАВИЦА
+СОТОНИЦА РАЈКО
+СОВА ПЕТАР
+СОВА РУДИ
+СОВИШ ЂОРЂЕ
+СОВИШ МИША
+СОВИШ ОЛГА
+СОВИШ ПАВЛЕ
+СОВИЉ ЂОРЂЕ
+СОВИЉ ЂУРО
+СОВИЉ АНЂЕЛКО
+СОВИЉ АНКА
+СОВИЉ БОЖО
+СОВИЉ БОГДАН
+СОВИЉ ДУШАН
+СОВИЉ ИЛИЈА
+СОВИЉ ИЛИЈА
+СОВИЉ ИЛИЈА
+СОВИЉ ИВИЦА
+СОВИЉ ЈОВАН ДР ЛЕКАР
+СОВИЉ ЉУБИЦА
+СОВИЉ МИЛАН МР
+СОВИЉ МИЛАН
+СОВИЉ ПЕРКА
+СОВИЉ ПЕТАР
+СОВИЉ ПЕТАР
+СОВИЉ ВЛАДО
+СПАХИЋ КЕМАЛ
+СПАИЋ ЖЕЉКО
+СПАИЋ МИЛАН
+СПАИЋ МИЛАН
+СПАЈИЋ БОЖА
+СПАЈИЋ ДИКО
+СПАЈИЋ ЈОВАН
+СПАЈИЋ ЈУЛИЈАНА
+СПАЈИЋ МИЛОЈЕ
+СПАЈИЋ МИРЈАНА
+СПАЈИЋ СОФИЈА
+СПАЈИЋ ВОЈИСЛАВ
+СПАЈИЋ ЗОРАН
+СПАЈИЋ ЗОРАН
+СПАЛЕВИЋ МИОМИР
+СПАЛЕВИЋ ВЕРА
+СПАРИОСИ АНЂЕЛКА
+СПАСЕНОСКИ ДИМИТРИЈЕ
+СПАСЕНОВ МИЛЕ
+СПАСЕНОВ СПАСКО
+СПАСЕНОВ СТАНА
+СПАСЕНОВИЋ ЖИВКО
+СПАСЕНОВИЋ ЉУБИЦА
+СПАСЕНОВСКИ РОМАН
+СПАСЕНОВСКИ ВАСА
+СПАСИЋ ЖИВОМИР
+СПАСИЋ ЂОРЂЕ
+СПАСИЋ АЛЕКСАНДАР
+СПАСИЋ БОЖИДАР
+СПАСИЋ БРАНИСЛАВ
+СПАСИЋ БРАНИСЛАВ
+СПАСИЋ ДРАГИША
+СПАСИЋ ГОРДАНА
+СПАСИЋ ГОРДАНА
+СПАСИЋ ЈЕЛИСАВЕТА
+СПАСИЋ ЈОВАН
+СПАСИЋ ЈУГОСЛАВ
+СПАСИЋ ЉИЉАНА
+СПАСИЋ ЉУБИЦА
+СПАСИЋ МИЛАН
+СПАСИЋ МИЛЕВА
+СПАСИЋ МИЛОШ
+СПАСИЋ МИЛУТИН
+СПАСИЋ МИРЈАНА
+СПАСИЋ МИРКО
+СПАСИЋ ОЛИВЕРА
+СПАСИЋ ПЕТАР
+СПАСИЋ ПРЕДРАГ
+СПАСИЋ СТАНИША
+СПАСИЋ СТАНКО
+СПАСИЋ СТОЈАН
+СПАСИЋ СВЕТИСЛАВ
+СПАСИЋ ТОМИСЛАВ ДИПЛ ИНГ
+СПАСИЋ ТОМИСЛАВ
+СПАСИЋ ТРАЈАНКА
+СПАСИЋ ВЕЛИЧКО
+СПАСИЋ ВУЈИЦА
+СПАСОЈЕВ ЉУБИЦА
+СПАСОЈЕВ СТОЈАН
+СПАСОЈЕВИЋ ЖИВОТА
+СПАСОЈЕВИЋ ЂОРЂЕ
+СПАСОЈЕВИЋ ЂУРА
+СПАСОЈЕВИЋ БОРИША МР
+СПАСОЈЕВИЋ БОРИСЛАВ
+СПАСОЈЕВИЋ ЦВЕТКО
+СПАСОЈЕВИЋ ДЕСИМИР
+СПАСОЈЕВИЋ ДОБРИЛА
+СПАСОЈЕВИЋ ДОБРОСАВ
+СПАСОЈЕВИЋ ДРАГАН
+СПАСОЈЕВИЋ ДРАГИША
+СПАСОЈЕВИЋ ДРАГОЉУБ
+СПАСОЈЕВИЋ ДРАГОМИР
+СПАСОЈЕВИЋ ДУШАН
+СПАСОЈЕВИЋ ЕЛИЗАБЕТА
+СПАСОЈЕВИЋ ГОСПАВА
+СПАСОЈЕВИЋ ГОСТИМИР
+СПАСОЈЕВИЋ ЈОВАН
+СПАСОЈЕВИЋ ЈУЛКА
+СПАСОЈЕВИЋ КАТИЦА
+СПАСОЈЕВИЋ КРСТА
+СПАСОЈЕВИЋ ЛАЗАР
+СПАСОЈЕВИЋ МИЋО
+СПАСОЈЕВИЋ МИЋО
+СПАСОЈЕВИЋ МИХАЈЛО
+СПАСОЈЕВИЋ МИЛОРАД
+СПАСОЈЕВИЋ МИОДРАГ
+СПАСОЈЕВИЋ МИОДРАГ
+СПАСОЈЕВИЋ МОМЧИЛО
+СПАСОЈЕВИЋ НЕБОЈША
+СПАСОЈЕВИЋ НОВАК
+СПАСОЈЕВИЋ ПАВЛЕ
+СПАСОЈЕВИЋ ПРЕДРАГ
+СПАСОЈЕВИЋ РАЦО
+СПАСОЈЕВИЋ РАДИСАВ
+СПАСОЈЕВИЋ РАДОЈЛЕ
+СПАСОЈЕВИЋ РАНКО ДИПЛ ИНГ
+СПАСОЈЕВИЋ РОДОЉУБ
+СПАСОЈЕВИЋ РУЖИЦА
+СПАСОЈЕВИЋ СЛАВКА
+СПАСОЈЕВИЋ СЛАВКО
+СПАСОЈЕВИЋ СЛАВО
+СПАСОЈЕВИЋ СЛОБОДАН
+СПАСОЈЕВИЋ СОЊА
+СПАСОЈЕВИЋ СТАНИСЛАВА
+СПАСОЈЕВИЋ СТЕВАН
+СПАСОЈЕВИЋ СУЗАНА
+СПАСОЈЕВИЋ ВИТОМИР ДР
+СПАСОЈЕВИЋ ВЛАДИМИР
+СПАСОЈЕВИЋ ЗОРАН
+СПАСОЛИ ФЕРАТ
+СПАСОВА ЉУБИЦА
+СПЕРАНСКИ ЉУДМИЛА МР
+СПЕРЊАК ЂОРЂЕ
+СПЕРЊАК БОГДАН
+СПЕРЊАК ЉУБИНКА
+СПЕРЊАК МИЛЕНКО ДИПЛ ИНГ
+СПЕВАК ДАНИЕЛА
+СПЕВАК ЈУРАЈ
+СПЕВАК ЗОРОСЛАВ
+СПИЧАНОВИЋ ЕВИЦА
+СПИЧАНОВИЋ МАЈА
+СПИЧАНОВИЋ ЗАГОРКА
+СПИЛКУЦИЋ БОРИВОЈЕ
+СПИРИЋ АЛЕКСАНДАР
+СПИРИДОНОВ АНАСТАС
+СПИРИДОНОВИЋ ГРАДИМИР
+СПИРИДОНОВИЋ МИЛЕНКО
+СПИРИДОНОВИЋ СИЛВИЈА
+СПИРОСКИ АЛЕКСАНДАР
+СПИРОВСКИ ЦАНЕ
+СПОЈА ЖЕЉКО
+СПРЕМИЋ ДРАГАН
+СПРЕМИЋ ПЕТАР
+СПРЕМИЋ СРЕТЕН
+СПРЕМО ЂУРО
+СПРЕМО МИОДРАГ
+СПРЕМО МИРКО
+СПРЕМО МИРОСЛАВ
+СПРЕМО РАДОВАН
+СПРЕМО СЛАВКО
+СПРЕМО ВОЈИСЛАВ
+СПУСЕНИК ЛАЈОШ
+СРЂАНОВ ЖАРКО
+СРЂАНОВ ЖИВКО
+СРЂАНОВ КОНСТАНТИН
+СРЂАНОВ МИХАЈЛО
+СРЂАНОВ МИЛИВОЈ
+СРЂАНОВ МИЛОШ ДИПЛ ИНГ
+СРЂАНОВ МИЛОШ
+СРЂАНОВ МИРОСЛАВ
+СРЂАНОВ НАДА
+СРЂАНОВ НАДА
+СРЂАНОВ СЛАВКО
+СРЂАНОВ СЛОБОДАНКА
+СРЂАНОВ СЛОБОДАНКА
+СРЂАНОВ СЛОБОДАН
+СРЂАНОВ ВЕРА
+СРЂЕНОВИЋ МИЛАН
+СРЂЕНОВИЋ УРОШ
+СРЂЕВИЋ БОЈАН
+СРБИН АНКА
+СРБИН БОГДАН
+СРБИН ЈОВАН ДР
+СРБИН КОСТА
+СРБИН МИРОСЛАВ
+СРБИНОВСКИ БОРИС
+СРБИНОВСКИ ДРАГАНА
+СРБИНОВСКИ ДРАГАНА
+СРБИНОВСКИ МАША
+СРБИНОВСКИ ПАНТА
+СРБИНОВСКИ ПЕТАР
+СРБЉАН ЛАЗАР
+СРБЉАНИН ДРАГАН
+СРБЉАНИН ПРЕДРАГ
+СРБОВАН ЈОН
+СРБУЛОВИЋ БОЖИДАР
+СРБУЛОВИЋ ДРАГОЉУБ
+СРБУЛОВИЋ МИРОСЛАВ
+СРДАНОВ ЖИВАН
+СРДАНОВ ЖИВОЈИН
+СРДАНОВ ЂОРЂЕ
+СРДАНОВ БОЖИДАР
+СРДАНОВ ЈЕЛКА
+СРДАНОВ ЈОВАН
+СРДАНОВ ЛАЗАР
+СРДАНОВ ЛАЗАР
+СРДАНОВ ЉИЉАНА
+СРДАНОВ МИША
+СРДАНОВ МИЛИЦА
+СРДАНОВ МИЛОШ
+СРДАНОВ МИЛОСАВА
+СРДАНОВ ПЕТАР
+СРДАНОВ СИМА
+СРДАНОВ СЛАВКА
+СРДАНОВ СЛОБОДАН
+СРДАНОВ СЛОБОДАН
+СРДАНОВ ТОДОР
+СРДАНОВИЋ БРАНИСЛАВ
+СРДАНОВИЋ ДЕЈАН
+СРДАНОВИЋ ДРАГОЈЕ
+СРДАНОВИЋ ФИЛИП
+СРДАНОВИЋ ЛЕПОСАВА
+СРДАНОВИЋ ОЗРЕН ДИПЛ ИНГ
+СРДАНОВИЋ РОСАНДА
+СРДАНОВИЋ САЊА
+СРДИЋ ЧЕДОМИР
+СРДИЋ ЖИВКО
+СРДИЋ ЖИВКО
+СРДИЋ ЖИВКО
+СРДИЋ ЂОРЂЕ МР
+СРДИЋ ЂУРО
+СРДИЋ АНЂА
+СРДИЋ АНА
+СРДИЋ БОШКО
+СРДИЋ БОГДАН
+СРДИЋ БОСА
+СРДИЋ БРАНИСЛАВ
+СРДИЋ ДАНЕ
+СРДИЋ ДИЈАНА
+СРДИЋ ДУШАН
+СРДИЋ ЕМЕРИКА
+СРДИЋ ЕМЕРИКА
+СРДИЋ ГОРАН
+СРДИЋ ИВАН
+СРДИЋ ЈЕЛЕНА
+СРДИЋ ЉУБИЦА
+СРДИЋ МИЛАН
+СРДИЋ МИЛАН
+СРДИЋ МИЛИЦА
+СРДИЋ МИРЈАНА
+СРДИЋ МИРКО
+СРДИЋ МИРКО
+СРДИЋ НАДА
+СРДИЋ НАДА
+СРДИЋ НИКОЛА
+СРДИЋ НИКОЛА
+СРДИЋ НИКОЛА
+СРДИЋ ПЕТАР
+СРДИЋ РАДЕ
+СРДИЋ РАДЕ
+СРДИЋ СИМА
+СРДИЋ СЛОБОДАН
+СРДИЋ СВЕТОЗАР
+СРДИЋ ВАСО
+СРДИЋ ВЛАДИМИР
+СРДИЋ ВОЈА
+СРДИЋ ЗОРА
+СРЕЋКОВ ЖИВКО
+СРЕЋКОВ БЛАГИЦА
+СРЕЋКОВ БРАНКО
+СРЕЋКОВ ДРАГАН
+СРЕЋКОВ ДРАГИЦА
+СРЕЋКОВ ДУШАН
+СРЕЋКОВ ДУШАН
+СРЕЋКОВ ЕРЖЕБЕТ
+СРЕЋКОВ ЈОВАН
+СРЕЋКОВ КАТИЦА
+СРЕЋКОВ МИЛЕНА
+СРЕЋКОВ МИЛЕНА
+СРЕЋКОВ МИЛИВОЈ
+СРЕЋКОВ МИРОСЛАВ
+СРЕЋКОВ РАДИВОЈ
+СРЕЋКОВ РАДОЈКА
+СРЕЋКОВ СТАНКО
+СРЕЋКОВ СТЕВАН
+СРЕЋКОВ ТЕОДОРА
+СРЕЋКОВ ВАСА
+СРЕЋКОВ ЗДРАВКО
+СРЕЋКОВИЋ АЛЕКСАНДАР ДР
+СРЕЋКОВИЋ ДРАГИША
+СРЕЋКОВИЋ МАРИЈА
+СРЕЋКОВИЋ МИЛУТИН
+СРЕЋКОВИЋ РАДИША
+СРЕЋКОВИЋ СТОЈАНА
+СРЕЋО ДАНИЦА
+СРЕЋО МИЋО
+СРЕБОТЊАК СТАНКО
+СРЕБРО ИЛИЈА ДР
+СРЕДАНОВИЋ МИЛОРАД ДИПЛ ИНГ
+СРЕДАНОВИЋ НЕДЕЉКО
+СРЕДОЈЕВИЋ ДАРИНКА
+СРЕДОЈЕВИЋ ДОБРО
+СРЕДОЈЕВИЋ ЈУЛКИЦА
+СРЕДОЈЕВИЋ ЛАЗАР
+СРЕДОЈЕВИЋ МИЛИСАВ
+СРЕДОЈЕВИЋ МИРКО
+СРЕДОЈЕВИЋ НЕБОЈША
+СРЕДОЈЕВИЋ ВЕЛИМИР
+СРЕДОЈЕВИЋ ВЕЛИМИР
+СРЕДОВИЋ РАЈКО
+СРЕЈИЋ БОРКА
+СРЕМЧЕВ ЂОРЂЕ
+СРЕМЧЕВ АЛЕКСАНДАР ДР ЛЕКАР
+СРЕМЧЕВ ЛАЗАР
+СРЕМЧЕВ МАРИЈА
+СРЕМЧЕВ НЕСТОР
+СРЕМЧЕВ СЛОБОДАН
+СРЕМЧЕВ СОФИЈА
+СРЕМЧЕВИЋ БОРИСЛАВ
+СРЕМЧЕВИЋ ЈОВАН
+СРЕМЧЕВИЋ ЈОВАН
+СРЕМЧЕВИЋ КАТА
+СРЕМЧЕВИЋ КАТИЦА
+СРЕМЧЕВИЋ ЉУБИША
+СРЕМЧЕВИЋ РАДИВОЈ
+СРЕМЧЕВИЋ РАСТКО
+СРЕМЧЕВИЋ СЛАВНА
+СРЕМЧЕВИЋ СТАНИСЛАВ
+СРЕМЧЕВИЋ ВЕЉКО
+СРЕМАЧКИ ЂОРЂЕ
+СРЕМАЧКИ ДРАГОЉУБ
+СРЕМАЧКИ ДУШАНКА
+СРЕМАЧКИ-ГАВРИЛОВИЋ МАЈА
+СРЕМАЧКИ ИВАНКА
+СРЕМАЧКИ ЈОВАНКА
+СРЕМАЧКИ МИЛОШ
+СРЕМАЧКИ-МИРКОВИЋ МИРЈАНА
+СРЕМАЧКИ ПЕТАР
+СРЕМАЧКИ СИМА
+СРЕМАЧКИ СОКА
+СРЕМАЧКИ СПАСОЈЕ
+СРЕМАЧКИ СТАНОЈЕ
+СРЕМАЧКИ ВЛАДА
+СРЕМАЧКИ ЗОРИЦА
+СРЕМАЦ ЂОРЂЕ
+СРЕМАЦ АЛЕКСАНДАР
+СРЕМАЦ ДРАГОЉУБ
+СРЕМАЦ ИСАК
+СРЕМАЦ ЈАНКО
+СРЕМАЦ ЈОВАН
+СРЕМАЦ ЉУБИЦА
+СРЕМАЦ ЉУБИЦА
+СРЕМАЦ МИЛЕНА
+СРЕМАЦ МИЛЕНКО
+СРЕМАЦ МИЛИВОЈ
+СРЕМАЦ МИРА
+СРЕМАЦ НИКОЛА
+СРЕМАЦ ПАУЛИНА
+СРЕМАЦ ПАВЛЕ
+СРЕМАЦ ПЕРСИДА
+СРЕМАЦ РАДОЈКО
+СРЕМАЦ СЛОБОДАН
+СРЕМАЦ СРЂАН
+СРЕМАЦ СТОЈАНКА
+СРЕМАЦ СВЕТИСЛАВ
+СРЕМАЦ СВЕТИСЛАВ
+СРЕМАЦ ТАНАСИЈЕ
+СРЕМАЦ ВЛАДИМИР
+СРЕМАЦ ВЛАЈКО
+СРЕМАЦ ЗОРАНА
+СРЕМАЦ ЗОРАН
+СРЕТЕНОВИЋ ЂУРЂИНКА
+СРЕТЕНОВИЋ БОРИВОЈ
+СРЕТЕНОВИЋ-МАНОЈЛОВИЋ ЂУРЂИНКА
+СРЕТЕНОВИЋ НЕВЕНКА
+СРЕТЕНОВИЋ СТОЈАДИН
+СРЕТИЋ МИЛЕНКО
+СРЕТИЋ МИРЈАНА
+СРЕТИЋ РАТОМИР
+СРЕТКОВИЋ ВЕРИЦА
+СРНДОВИЋ ЗОРКА
+СРНЕЦ ЖЕЉКО
+СРНИЋ БОГДАН
+СРНИЋ ЕВИЦА
+СРНКА ЈАНКО
+СРНКА ЈОВАН
+СТАШУК МИХАЈЛО
+СТАХАНИЋ АНКА
+СТАИН СТЕВАН
+СТАЈЧИЋ ИВАН
+СТАЈЧИЋ ПЕТАР
+СТАЈШИЋ ЂУРА
+СТАЈИЋ ЂОРЂЕ
+СТАЈИЋ АЛЕКСАНДРА
+СТАЈИЋ БОЖИДАР
+СТАЈИЋ БОРИСЛАВ
+СТАЈИЋ БОРИСЛАВ
+СТАЈИЋ БОРИВОЈ
+СТАЈИЋ БРАНИМИР
+СТАЈИЋ БРАНИСЛАВ
+СТАЈИЋ ДРАГОЉУБ
+СТАЈИЋ ДУШАН
+СТАЈИЋ ДУШИЦА
+СТАЈИЋ ФЕМА
+СТАЈИЋ ГЛИГОРИЈЕ
+СТАЈИЋ ГЛИГОРИЈЕ
+СТАЈИЋ ГРИГОРИЈЕ ДИПЛ ИНГ
+СТАЈИЋ ЈУСТИНА
+СТАЈИЋ ЛЕПОСАВА
+СТАЈИЋ ЉУБОМИР
+СТАЈИЋ МАРА
+СТАЈИЋ МАРИЈА
+СТАЈИЋ МИЛАН ДИПЛ ИНГ
+СТАЈИЋ МИЛАН
+СТАЈИЋ МИЛЕСА
+СТАЈИЋ МИЛЕВА
+СТАЈИЋ МИЛКА
+СТАЈИЋ МИРОСЛАВ
+СТАЈИЋ НЕСТОР
+СТАЈИЋ ПАВЛЕ
+СТАЈИЋ ПЕТАР
+СТАЈИЋ-ПОПОВ БОРИСЛАВА ДР
+СТАЈИЋ РАДИВОЈ
+СТАЈИЋ РАДОСЛАВ
+СТАЈИЋ СИКА
+СТАЈИЋ СРЕТА
+СТАЈИЋ СТАНИСЛАВ
+СТАЈИЋ СТОЈАДИН
+СТАЈИЋ ТОДОР
+СТАЈИЋ ВЕЛИМИР
+СТАЈИЋ ВУКОСАВ
+СТАЈИЋ ЗЛАТА
+СТАЈКОВИЋ БРАТИСЛАВ
+СТАЈКОВИЋ ДРАГОЉУБ
+СТАКИЋ ЖИВАН
+СТАКИЋ ЖИВКА
+СТАКИЋ ЂУРО
+СТАКИЋ АЛЕКСАНДАР
+СТАКИЋ БОШКО
+СТАКИЋ БОЖИДАР
+СТАКИЋ БОРИВОЈЕ
+СТАКИЋ БРАНИСЛАВ
+СТАКИЋ ДЕЈАН
+СТАКИЋ ДУШАН ДИПЛ ИНГ
+СТАКИЋ ЈЕЛЕНА
+СТАКИЋ ЈОВАН СУДИЈА
+СТАКИЋ МЕЛИНДА
+СТАКИЋ МИЛАН
+СТАКИЋ МИЛАН
+СТАКИЋ МИРКО
+СТАКИЋ МОМИР
+СТАКИЋ НЕБОЈША
+СТАКИЋ НЕДЕЉКО
+СТАКИЋ НИКОЛА
+СТАКИЋ ПАВЛЕ
+СТАКИЋ СПОМЕНКА
+СТАКИЋ СТОЈАН
+СТАКИЋ ВЕРА
+СТАКИЋ ЗАХАРИЈЕ
+СТАКИЋ ЗОРАН
+СТАКОРИЋ ЗДРАВКО
+СТАМАТОВИЋ МИЛЕНКО ДР
+СТАМАТОВИЋ МИЛОРАД
+СТАМЕНИЋ ДАМЊАН
+СТАМЕНИЋ МАРКО
+СТАМЕНИЋ РАДОСАВ
+СТАМЕНИЋ ТОМИСЛАВ
+СТАМЕНКОВИЋ ЖИВОЈИН
+СТАМЕНКОВИЋ ЖИВОЈИН
+СТАМЕНКОВИЋ АЛЕКСАНДАР
+СТАМЕНКОВИЋ БЛАГОЈЕ
+СТАМЕНКОВИЋ ДРАГАН
+СТАМЕНКОВИЋ ГОРДАНА
+СТАМЕНКОВИЋ ЉУБОМИР ДР
+СТАМЕНКОВИЋ ЉУБОМИР
+СТАМЕНКОВИЋ МАРЈАН
+СТАМЕНКОВИЋ МИЛОРАД
+СТАМЕНКОВИЋ МИРОСЛАВА
+СТАМЕНКОВИЋ НОВИЦА
+СТАМЕНКОВИЋ ПЕТРОНИЈЕ
+СТАМЕНКОВИЋ РАДОМИР ДИПЛ ИНГ
+СТАМЕНКОВИЋ СИНИША
+СТАМЕНКОВИЋ СЛАВОЉУБ
+СТАМЕНКОВИЋ СЛОБОДАН
+СТАМЕНКОВИЋ СРЕТЕН ДР
+СТАМЕНКОВИЋ СРЕТЕН
+СТАМЕНКОВИЋ СТАНИМИР
+СТАМЕНКОВИЋ СТОЈАН
+СТАМЕНКОВИЋ СТОЈАН
+СТАМЕНКОВИЋ СТОЈАН
+СТАМЕНКОВИЋ ВАСИЛИЈЕ
+СТАМЕНКОВИЋ ВЕЛИБОР
+СТАМЕНКОВИЋ ВЕРА
+СТАМЕНКОВИЋ ВЛАДИМИР ДИПЛ ИНГ
+СТАМЕНКОВИЋ ВЛАДИМИР
+СТАМЕНКОВИЋ ВЛАСТИМИР
+СТАМЕНКОВИЋ ВУКАДИН
+СТАМЕНКОВИЋ ЗОРАН
+СТАМЕНКОВИЋ ЗОРА
+СТАМЕНОВ БРАНКО
+СТАМЕНОВ НИКОЛА
+СТАМЕНОВ СЛАВКА
+СТАМЕНОВИЋ КРСТИВОЈ
+СТАМЕНОВИЋ РАЈКО
+СТАМЕВСКИ ТОНЧЕ
+СТАМОРАН КАТИЦА
+СТАМПФЕР РОЗАЛИЈА
+СТАНЧЕТИЋ ДРАГИЦА
+СТАНЧЕТИЋ ПАВЛЕ
+СТАНЧИЋ АНЂЕЛКА
+СТАНЧИЋ АНДРИЈА ДР
+СТАНЧИЋ БЛАГОЈЕ МР
+СТАНЧИЋ БОЖАНА
+СТАНЧИЋ БОЖИДАР
+СТАНЧИЋ ДАНИЦА
+СТАНЧИЋ ДРАГОЉУБ
+СТАНЧИЋ ЛАЗАР
+СТАНЧИЋ ЉУБОМИР
+СТАНЧИЋ МАРИЈА
+СТАНЧИЋ МАРКО
+СТАНЧИЋ МИЋА
+СТАНЧИЋ МИХАЈЛО
+СТАНЧИЋ МИКА
+СТАНЧИЋ МИОДРАГ
+СТАНЧИЋ НИКОЛА
+СТАНЧИЋ ПАВЛЕ
+СТАНЧИЋ ТАНКОСАВА
+СТАНЧИЋ ТИХОМИР
+СТАНЧИЋ ЗОРАН
+СТАНЧИК МАРГИТА
+СТАНЧУ МАРИЈА
+СТАНЧУЛ ЖИВАН
+СТАНЧУЛ АНКА
+СТАНЧУЛ ЉИЉАНА
+СТАНЧУЛ ЉУБОМИР
+СТАНЧУЛ РАДИСЛАВ
+СТАНЧУЛ РАДОВАН
+СТАНЧУЛ САВА
+СТАНЧУЛОВ ДРАГИЦА
+СТАНЧУЛОВ МИЛАН
+СТАНАЋЕВ ЖИВА
+СТАНАЋЕВ МИЛЕНА
+СТАНАЋЕВ МИЛИВОЈ
+СТАНАЋЕВ СРЕДОЈЕ ДР
+СТАНАР ЂУРА
+СТАНАР ЂУРА
+СТАНАР ЂУРА
+СТАНАР АНКА
+СТАНАР ДЕСА
+СТАНАР ДУШАНКА
+СТАНАР ДУШАН
+СТАНАР-ГОГИЋ СТЕВАН
+СТАНАР ИЛИЈА
+СТАНАР МИЛЕ
+СТАНАР РАДЕ
+СТАНАР РАТКО
+СТАНАРЕВИЋ ЖЕЉКО
+СТАНАРЕВИЋ БОЖА
+СТАНАРЕВИЋ МАРКО
+СТАНАРЕВИЋ МИХАЈЛО
+СТАНАРЕВИЋ МИЛАН
+СТАНАРЕВИЋ НЕДЕЉКА
+СТАНАРЕВИЋ САВА
+СТАНБОЛИЈА МИРКО
+СТАНЕКОВИЋ МИЛАН
+СТАНЕКОВИЋ СТАНИСЛАВ
+СТАНЕКОВИЋ ВОЈА
+СТАНИЧКОВ ЧЕДОМИР
+СТАНИЧКОВ БОРА
+СТАНИЧКОВ ЈОВАН
+СТАНИЧКОВ ЉИЉАНА
+СТАНИЧКОВ МАРТА
+СТАНИШИЋ БОГОЉУБ
+СТАНИШИЋ БОРИСЛАВ
+СТАНИШИЋ БУДИНКА
+СТАНИШИЋ ДАМЈАН
+СТАНИШИЋ ДРАГОЉУБ
+СТАНИШИЋ ДРАГОЉУБ
+СТАНИШИЋ ДРАГОМИР
+СТАНИШИЋ ДУШАН
+СТАНИШИЋ ДУШАН
+СТАНИШИЋ ГОЈКО
+СТАНИШИЋ ЈЕЛЕНА
+СТАНИШИЋ ЈОВАН
+СТАНИШИЋ ЈОВАН
+СТАНИШИЋ КАТИЦА
+СТАНИШИЋ ЛЕПОСАВА
+СТАНИШИЋ ЉИЉАНА ДР
+СТАНИШИЋ ЉУБИЦА
+СТАНИШИЋ МАРКО
+СТАНИШИЋ МАРКО
+СТАНИШИЋ МИЛАН
+СТАНИШИЋ МИЛАН
+СТАНИШИЋ МИЛИЋ ДР ЛЕКАР
+СТАНИШИЋ МИЛИВОЈ
+СТАНИШИЋ МИЛОШ
+СТАНИШИЋ МИОДРАГ
+СТАНИШИЋ МИОДРАГ
+СТАНИШИЋ МЛАДЕН
+СТАНИШИЋ МОМИР
+СТАНИШИЋ НЕБОЈША
+СТАНИШИЋ НЕДЕЉКА
+СТАНИШИЋ НИКОЛА
+СТАНИШИЋ НИКОЛА
+СТАНИШИЋ ОЛГИЦА
+СТАНИШИЋ ПАВЛЕ
+СТАНИШИЋ ПАВЛЕ
+СТАНИШИЋ ПЕТАР
+СТАНИШИЋ ПРОКА
+СТАНИШИЋ РАДА
+СТАНИШИЋ РАДОВАН
+СТАНИШИЋ РАТКО
+СТАНИШИЋ РЕЉА
+СТАНИШИЋ СИМО
+СТАНИШИЋ СЛАВКО ДИПЛ ИНГ
+СТАНИШИЋ СЛОБОДАН
+СТАНИШИЋ СТАНИША
+СТАНИШИЋ СТАНИСЛАВ
+СТАНИШИЋ СТЕВО
+СТАНИШИЋ СТОЈАНЧА
+СТАНИШИЋ СВЕТЛАНА
+СТАНИШИЋ СВЕТОЗАР ДР
+СТАНИШИЋ СВЕТОЗАР
+СТАНИШИЋ ТИХОМИР
+СТАНИШИЋ ТОДОР
+СТАНИШИЋ ТОМАШ
+СТАНИШИЋ ВАСИЉКА
+СТАНИШИЋ ВЕЉКО
+СТАНИШИЋ ВЛАДА
+СТАНИШИЋ ЗОРАН
+СТАНИШИЋ ЗОРАН
+СТАНИШИН БРАНКО
+СТАНИШИН ИСА
+СТАНИШИН ВОЈИН
+СТАНИШЉЕВИЋ ДУШАНКА
+СТАНИЋ ЖИВАДИН
+СТАНИЋ ЖИВАН
+СТАНИЋ ЂУРА
+СТАНИЋ АЛЕКСАНДАР
+СТАНИЋ БОШКО
+СТАНИЋ БОГДАН
+СТАНИЋ БРАНКА
+СТАНИЋ БРАНКО
+СТАНИЋ БРАНКО
+СТАНИЋ ДАНЕ
+СТАНИЋ ДАНИЦА
+СТАНИЋ ДАНКА
+СТАНИЋ ДРАГАН
+СТАНИЋ ДРАГОСЛАВ ДР
+СТАНИЋ ДРАГО
+СТАНИЋ ДУШАН
+СТАНИЋ ГОЈКО
+СТАНИЋ ИЛИЈА
+СТАНИЋ ИЛИЈА
+СТАНИЋ ИЛИЈА
+СТАНИЋ ИЛИЈА
+СТАНИЋ ИВАН
+СТАНИЋ ЈАДРАНКА
+СТАНИЋ ЈЕЛЕНА
+СТАНИЋ ЈОВАН ДИПЛ ИНГ
+СТАНИЋ ЈОВАН ДИПЛ ИНГ
+СТАНИЋ ЈУЛКА
+СТАНИЋ КРИСТИВОЈЕ
+СТАНИЋ ЛИНКА
+СТАНИЋ ЉУБОДРАГ
+СТАНИЋ МАНЕ
+СТАНИЋ МАРКО
+СТАНИЋ МИЛАН ДИПЛ ПРАВНИК
+СТАНИЋ МИЛАНКО
+СТАНИЋ МИЛАНКО
+СТАНИЋ МИЛАН
+СТАНИЋ МИЛАН
+СТАНИЋ МИЛАН
+СТАНИЋ МИЛАН
+СТАНИЋ МИЛЕ
+СТАНИЋ МИЛИЦА
+СТАНИЋ МИЛИНКО
+СТАНИЋ МИЛИСАВ
+СТАНИЋ МИЛОЈЕ
+СТАНИЋ МИЛОСАВА
+СТАНИЋ МЛАДЕН
+СТАНИЋ МОМЧИЛО
+СТАНИЋ ОЛГА
+СТАНИЋ ОСТОЈА
+СТАНИЋ ПЕТАР
+СТАНИЋ ПЕТАР
+СТАНИЋ ПЕТАР
+СТАНИЋ РАДЕ
+СТАНИЋ РАДЕ
+СТАНИЋ РАДИША
+СТАНИЋ РАДОВАН ДИПЛ ИНГ
+СТАНИЋ РАЈКО
+СТАНИЋ САВО
+СТАНИЋ СИМО
+СТАНИЋ СИНИША
+СТАНИЋ СПАСОЈЕ
+СТАНИЋ СРЂАН
+СТАНИЋ СТАМЕНА
+СТАНИЋ СТЕВАН
+СТАНИЋ УРОШ
+СТАНИЋ ВЕЛИБОР
+СТАНИЋ ВИКТОР
+СТАНИЋ ВИТОМИР
+СТАНИЋ ВИТОМИР
+СТАНИЋ ВЛАДИМИР
+СТАНИЋ ВОЈИСЛАВ
+СТАНИЋ ЗОРАН
+СТАНИЋ ЗОРАН
+СТАНИЖАН МИЛОРАД
+СТАНИК ОЛГА
+СТАНИКИЋ МИЛАН
+СТАНИКИЋ МИЛЕВА
+СТАНИМИРОВ АЛЕКСАНДАР
+СТАНИМИРОВ АНА
+СТАНИМИРОВ БОРИВОЈ
+СТАНИМИРОВ БРАНКА
+СТАНИМИРОВ ДУШАН
+СТАНИМИРОВ ГАВРА
+СТАНИМИРОВ ЈЕЛКА
+СТАНИМИРОВ КАТИЦА
+СТАНИМИРОВ ЉИЉАНА
+СТАНИМИРОВ ЉИЉАНА
+СТАНИМИРОВ ЉУБИЦА
+СТАНИМИРОВ НЕДЕЉКО
+СТАНИМИРОВ РАДИВОЈ
+СТАНИМИРОВ РАНКА
+СТАНИМИРОВ СЛАВКО
+СТАНИМИРОВ ЗОРИЦА
+СТАНИМИРОВИЋ ЖИВОЈИН
+СТАНИМИРОВИЋ ДЕСИМИР
+СТАНИМИРОВИЋ ДРАГАН
+СТАНИМИРОВИЋ ДРАГАН
+СТАНИМИРОВИЋ ДРАГОМИР
+СТАНИМИРОВИЋ ЈАДРАНКА
+СТАНИМИРОВИЋ ЈЕЛИЦА
+СТАНИМИРОВИЋ КРСТО
+СТАНИМИРОВИЋ МОМА ДР
+СТАНИМИРОВИЋ ПАВЛЕ
+СТАНИМИРОВИЋ РАДОЈКА
+СТАНИМИРОВИЋ СТАНИМИР
+СТАНИМИРОВИЋ ТАТЈАНА
+СТАНИМИРОВИЋ ТРИФУН
+СТАНИМИРОВИЋ ВЕРОНИКА
+СТАНИСАВЉЕВ ЂОКА
+СТАНИСАВЉЕВ ЂОРЂЕ
+СТАНИСАВЉЕВ АЛЕКСАНДРА
+СТАНИСАВЉЕВ АНА
+СТАНИСАВЉЕВ ДОБРИВОЈ
+СТАНИСАВЉЕВ ДУШАН
+СТАНИСАВЉЕВ ЉУБИЦА
+СТАНИСАВЉЕВ ЉУБОМИР
+СТАНИСАВЉЕВ МИЛАН
+СТАНИСАВЉЕВ МИЛИЦА
+СТАНИСАВЉЕВ МИЛОЈКО
+СТАНИСАВЉЕВ МИРОСЛАВ
+СТАНИСАВЉЕВИЋ ЂОРЂЕ ДИПЛ ИНГ
+СТАНИСАВЉЕВИЋ ЂОРЂЕ
+СТАНИСАВЉЕВИЋ БИЉАНА
+СТАНИСАВЉЕВИЋ БОЖА
+СТАНИСАВЉЕВИЋ ЦВЕТА
+СТАНИСАВЉЕВИЋ ДАНЕ
+СТАНИСАВЉЕВИЋ ДИМИТРИЈЕ
+СТАНИСАВЉЕВИЋ ДРАГОМИР
+СТАНИСАВЉЕВИЋ ДУШАНКА
+СТАНИСАВЉЕВИЋ ЕЛИЗАБЕТА
+СТАНИСАВЉЕВИЋ ГИЗЕЛА
+СТАНИСАВЉЕВИЋ ГОРДАНА
+СТАНИСАВЉЕВИЋ ИГЊАТИЈЕ
+СТАНИСАВЉЕВИЋ КАТИЦА
+СТАНИСАВЉЕВИЋ ЛЕПОСАВА
+СТАНИСАВЉЕВИЋ МАРИЈА
+СТАНИСАВЉЕВИЋ МИЛАН
+СТАНИСАВЉЕВИЋ МИЛАН
+СТАНИСАВЉЕВИЋ МИЛИВОЈЕ
+СТАНИСАВЉЕВИЋ МИЛОШ
+СТАНИСАВЉЕВИЋ МИОДРАГ
+СТАНИСАВЉЕВИЋ МИОДРАГ
+СТАНИСАВЉЕВИЋ МИРКО
+СТАНИСАВЉЕВИЋ НАДА
+СТАНИСАВЉЕВИЋ РАДЕ
+СТАНИСАВЉЕВИЋ РУЖИЦА
+СТАНИСАВЉЕВИЋ САВА ДИПЛ ИНГ
+СТАНИСАВЉЕВИЋ СТАВРА ДИПЛ ИНГ
+СТАНИСАВЉЕВИЋ СТЕВАН
+СТАНИСАВЉЕВИЋ ВЕЛИЗАР
+СТАНИСАВЉЕВИЋ ВЕЉКО
+СТАНИСАВЉЕВИЋ ЗОРИЦА
+СТАНИВУК ЖАРКО
+СТАНИВУК ДЕЈАН
+СТАНИВУК МИРКО
+СТАНИВУК МЛАДЕН
+СТАНИВУК НАДА
+СТАНИВУК НЕДЕЉКО
+СТАНИВУК НИКОЛА
+СТАНИВУК ЗДРАВКО
+СТАНИВУКОВИЋ ДРАГУТИН МР
+СТАНИВУКОВИЋ ДРАГУТИН
+СТАНИВУКОВИЋ ЉИЉАНА
+СТАНИВУКОВИЋ МАРИЈА
+СТАНИВУКОВИЋ МИЛИВОЈ ДР ВЕТЕРИНЕ
+СТАНИВУКОВИЋ УРОШ
+СТАНКИЋ ДРАГАН
+СТАНКИЋ ЛАЗАР
+СТАНКИЋ МИЛОШ
+СТАНКИЋ СТЕВАН
+СТАНКИЋ ВИЛОГОРКА
+СТАНКИЈЕВИЋ ДУШАН
+СТАНКИН ЂОРЂЕ
+СТАНКИН БРАНКА
+СТАНКИН ЈАСМИНА
+СТАНКИН МИЛЕ
+СТАНКИН МИЛИВОЈ
+СТАНКИН МИЛИВОЈ
+СТАНКИН ТОДОР
+СТАНКО ИМРЕ
+СТАНКО ИВАН
+СТАНКО ЈОСИП ДИПЛ ИНГ
+СТАНКО СТЕВАН
+СТАНКО СТЕВАН
+СТАНКО СТЕВАН
+СТАНКО ВЕРИЦА
+СТАНКОВ ЖАРКО
+СТАНКОВ ЖИВКА
+СТАНКОВ ЖИВКО
+СТАНКОВ ЖИВКО
+СТАНКОВ ЂОРЂЕ
+СТАНКОВ БОЈАНА
+СТАНКОВ ДАРИНКА
+СТАНКОВ ДАРКО
+СТАНКОВ ДУШАН
+СТАНКОВ ДУШАН
+СТАНКОВ ЕЖЕБЕТ
+СТАНКОВ ИВАНКА
+СТАНКОВ ИВАН
+СТАНКОВ ЈЕЛЕНА
+СТАНКОВ КАТИЦА
+СТАНКОВ КОВИНА
+СТАНКОВ ЉУБИЦА
+СТАНКОВ МАРИЈА
+СТАНКОВ МАРИНКО
+СТАНКОВ МАРКО
+СТАНКОВ МИЛАНКО
+СТАНКОВ МИЛАНКО
+СТАНКОВ МИЛОШ
+СТАНКОВ МИРЈАНА
+СТАНКОВ МИРОСЛАВ
+СТАНКОВ НЕВЕНКА
+СТАНКОВ НИКОЛА
+СТАНКОВ ПАЈА ДР
+СТАНКОВ ПАВЛЕ
+СТАНКОВ ПЕТАР
+СТАНКОВ ПЕТАР
+СТАНКОВ РАДОВАН
+СТАНКОВ РАСТКО
+СТАНКОВ РУЖИЦА
+СТАНКОВ СЛОБОДАНКА
+СТАНКОВ СОФИЈА
+СТАНКОВ СТАНКА
+СТАНКОВ СТЕВАН
+СТАНКОВ СТЕВАН
+СТАНКОВ СТОЈАН
+СТАНКОВ СВЕТИСЛАВ
+СТАНКОВ СВЕТОЗАР
+СТАНКОВ ВЕЉКО
+СТАНКОВ ВЕЉКО
+СТАНКОВ ВЛАДИМИР
+СТАНКОВ ВОЈИСЛАВ
+СТАНКОВ ВОЈИСЛАВ
+СТАНКОВ ВОЈИСЛАВ
+СТАНКОВ ЗОРАНКА
+СТАНКОВ ЗОРАН
+СТАНКОВИЋ ЖАРКО
+СТАНКОВИЋ ЖАРКО
+СТАНКОВИЋ ЖИВКО
+СТАНКОВИЋ ЖИВКО
+СТАНКОВИЋ ЖИВОЈИН
+СТАНКОВИЋ ЖИВОЈИН
+СТАНКОВИЋ ЖИВОРАД
+СТАНКОВИЋ ЂОРЂЕ
+СТАНКОВИЋ ЂОРЂЕ
+СТАНКОВИЋ ЂОРЕ
+СТАНКОВИЋ ЂУРО
+СТАНКОВИЋ АЛЕКСАНДАР
+СТАНКОВИЋ АЛЕКСАНДАР
+СТАНКОВИЋ АЛЕКСАНДАР
+СТАНКОВИЋ АНЂЕЛКА
+СТАНКОВИЋ АНЂЕЛКА
+СТАНКОВИЋ АНА
+СТАНКОВИЋ АНИЦА
+СТАНКОВИЋ АРАНКА
+СТАНКОВИЋ АВРАМ
+СТАНКОВИЋ БИЉАНА
+СТАНКОВИЋ БОЖИДАР
+СТАНКОВИЋ БОЖИДАР
+СТАНКОВИЋ БОГОЉУБ ДР
+СТАНКОВИЋ БОГОЉУБ
+СТАНКОВИЋ БОЈАНА
+СТАНКОВИЋ БОЈАН
+СТАНКОВИЋ БОРА
+СТАНКОВИЋ БОРА
+СТАНКОВИЋ БОРА
+СТАНКОВИЋ БОРИСЛАВ
+СТАНКОВИЋ БОРИСЛАВ
+СТАНКОВИЋ БОСИЉКА
+СТАНКОВИЋ БРАНКО
+СТАНКОВИЋ ДАНИЦА
+СТАНКОВИЋ ДАНИЛО
+СТАНКОВИЋ ДАРИНКА
+СТАНКОВИЋ ДИВНА
+СТАНКОВИЋ ДОБРИНКА
+СТАНКОВИЋ ДОБРИВОЈЕ
+СТАНКОВИЋ ДОБРИВОЈЕ
+СТАНКОВИЋ ДОБРОСЛАВ
+СТАНКОВИЋ ДРАГАН
+СТАНКОВИЋ ДРАГАН
+СТАНКОВИЋ ДРАГИША
+СТАНКОВИЋ ДРАГИША
+СТАНКОВИЋ ДРАГИЦА
+СТАНКОВИЋ ДРАГОЉУБ
+СТАНКОВИЋ ДРАГОРАД
+СТАНКОВИЋ ДРАГУТИН
+СТАНКОВИЋ ДУШАН
+СТАНКОВИЋ ДУШАН
+СТАНКОВИЋ ДУШАН
+СТАНКОВИЋ ДУШАН
+СТАНКОВИЋ ДУШКО
+СТАНКОВИЋ ЕВЕЛИН ДР
+СТАНКОВИЋ ЕВИЦА
+СТАНКОВИЋ ФРЕДЕРИК
+СТАНКОВИЋ ИЛИЈА
+СТАНКОВИЋ ИЛИЈА
+СТАНКОВИЋ ИВАН
+СТАНКОВИЋ ИВАН
+СТАНКОВИЋ ЈАГОДА
+СТАНКОВИЋ ЈЕЛЕНА
+СТАНКОВИЋ ЈЕЛИЦА
+СТАНКОВИЋ ЈЕСЕНКА ДР
+СТАНКОВИЋ ЈОВАН ДИПЛ ИНГ
+СТАНКОВИЋ ЈОВАН
+СТАНКОВИЋ ЈОВИЦА
+СТАНКОВИЋ ЈОВИЦА
+СТАНКОВИЋ КАТАЛИН
+СТАНКОВИЋ КАТАРИНА
+СТАНКОВИЋ КАТИЦА
+СТАНКОВИЋ КОСАНА
+СТАНКОВИЋ КОСТАДИН
+СТАНКОВИЋ ЛАЗАР ДИПЛ ИНГ
+СТАНКОВИЋ ЛАЗАР
+СТАНКОВИЋ ЛАЗАР
+СТАНКОВИЋ ЉИЉАНА
+СТАНКОВИЋ ЉИЉАНА
+СТАНКОВИЋ ЉИЉАНА
+СТАНКОВИЋ ЉУБИЦА
+СТАНКОВИЋ ЉУБИЦА
+СТАНКОВИЋ ЉУБИСАВ
+СТАНКОВИЋ ЉУБОМИР
+СТАНКОВИЋ ЉУБОМИР
+СТАНКОВИЋ ЉУБОМИР
+СТАНКОВИЋ ЉУБО
+СТАНКОВИЋ МАРИЈА
+СТАНКОВИЋ МАРИЈА
+СТАНКОВИЋ МАРИНКО
+СТАНКОВИЋ МАРИНКО
+СТАНКОВИЋ МАРЈАН
+СТАНКОВИЋ МАРКО
+СТАНКОВИЋ МЕЛАНИЈА
+СТАНКОВИЋ МИХАЈЛО
+СТАНКОВИЋ МИХАЈЛО
+СТАНКОВИЋ МИЛАНКО
+СТАНКОВИЋ МИЛАНКО
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛАН
+СТАНКОВИЋ МИЛЕНКО
+СТАНКОВИЋ МИЛОШ
+СТАНКОВИЋ МИЛОШ
+СТАНКОВИЋ МИЛОРАД
+СТАНКОВИЋ МИЛУТИН
+СТАНКОВИЋ МИОДРАГ
+СТАНКОВИЋ МИОМИР
+СТАНКОВИЋ МИРЈАНА
+СТАНКОВИЋ МИРЈАНА
+СТАНКОВИЋ МИРКО
+СТАНКОВИЋ МИРКО
+СТАНКОВИЋ МИРОЉУБ
+СТАНКОВИЋ МИРОСЛАВ
+СТАНКОВИЋ МИРОСЛАВ
+СТАНКОВИЋ МИТАР
+СТАНКОВИЋ МЛАДЕН
+СТАНКОВИЋ МЛАДЕН
+СТАНКОВИЋ МОМЧИЛО
+СТАНКОВИЋ НАДА
+СТАНКОВИЋ НАДА
+СТАНКОВИЋ НАДА
+СТАНКОВИЋ НАДА
+СТАНКОВИЋ НАТАША
+СТАНКОВИЋ НАТАЛИЈА
+СТАНКОВИЋ НЕНАД
+СТАНКОВИЋ НЕВЕНА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ НИКОЛА
+СТАНКОВИЋ ОЛГА
+СТАНКОВИЋ ОЛГА
+СТАНКОВИЋ ОЛГИЦА
+СТАНКОВИЋ ОСТОЈА
+СТАНКОВИЋ ПАВЛЕ
+СТАНКОВИЋ ПЕТАР
+СТАНКОВИЋ ПЕТАР
+СТАНКОВИЋ РАДИВОЈ
+СТАНКОВИЋ РАДОМИР
+СТАНКОВИЋ РАДОСЛАВ
+СТАНКОВИЋ САША
+СТАНКОВИЋ САВКА
+СТАНКОВИЋ САВО
+СТАНКОВИЋ СЛАВКО
+СТАНКОВИЋ СЛАВКО
+СТАНКОВИЋ СЛОБОДАНКА
+СТАНКОВИЋ СЛОБОДАН
+СТАНКОВИЋ СЛОБОДАН
+СТАНКОВИЋ СЛОБОДАН
+СТАНКОВИЋ СОФИЈА
+СТАНКОВИЋ СРЂАН
+СТАНКОВИЋ СРБОЉУБ ДИПЛ ИНГ
+СТАНКОВИЋ СТАМЕН
+СТАНКОВИЋ СТАНКО
+СТАНКОВИЋ СТАНОЈЕ
+СТАНКОВИЋ СТЕВАН
+СТАНКОВИЋ СТЕВАН
+СТАНКОВИЋ СТЕВО
+СТАНКОВИЋ СВЕТИСЛАВ
+СТАНКОВИЋ СВЕТИСЛАВ
+СТАНКОВИЋ СВЕТОЗАР
+СТАНКОВИЋ СВЕТОЗАР
+СТАНКОВИЋ ТЕРЕЗА
+СТАНКОВИЋ ТИОСАВ
+СТАНКОВИЋ ТОША
+СТАНКОВИЋ ТОМИСЛАВ
+СТАНКОВИЋ ТОМИСЛАВ
+СТАНКОВИЋ ВЕНЕРА
+СТАНКОВИЋ ВЕСЕЛИН
+СТАНКОВИЋ ВЕСЕЛИН
+СТАНКОВИЋ ВИТОМИР
+СТАНКОВИЋ ВЛАДАН
+СТАНКОВИЋ ВЛАДА
+СТАНКОВИЋ ВЛАДИМИР
+СТАНКОВИЋ ВЛАДИМИР
+СТАНКОВИЋ ВОЈИСЛАВ
+СТАНКОВИЋ-ВРАНИЋ МИЛИЦА
+СТАНКОВИЋ ЗЛАТИВОЈЕ
+СТАНКОВИЋ ЗОРАН
+СТАНКОВИЋ ЗОРАН
+СТАНКОВИЋ ЗОРА
+СТАНКОВСКИ КОСТА
+СТАНКОВСКИ СТЕВАН
+СТАНКОВСКИ ВЕЉАН
+СТАНОЈЧИЋ ЂОРЂЕ
+СТАНОЈЧИЋ АНЂЕЛКО
+СТАНОЈЧИЋ АНКИЦА
+СТАНОЈЧИЋ ДЕСИМИР
+СТАНОЈЧИЋ ДУШАНКА
+СТАНОЈЧИЋ ОЛГА
+СТАНОЈЧИЋ СЛОБОДАН
+СТАНОЈЧИЋ СОФИЈА
+СТАНОЈЧИЋ СТЕВАН
+СТАНОЈЧИЋ ВЕРА
+СТАНОЈЧИЋ ВОЈИСЛАВ
+СТАНОЈЕВ ЖИВАН
+СТАНОЈЕВ АЛЕКСАНДРА
+СТАНОЈЕВ БРАНИСЛАВ
+СТАНОЈЕВ ДЕЈАН
+СТАНОЈЕВ ДУШАН
+СТАНОЈЕВ ДУШАН
+СТАНОЈЕВ ДУШАН
+СТАНОЈЕВ ДУШАН
+СТАНОЈЕВ ГОРАН
+СТАНОЈЕВ ЈОЦА
+СТАНОЈЕВ ЛАЗАР
+СТАНОЈЕВ ЉУБИЦА
+СТАНОЈЕВ МИЛАН
+СТАНОЈЕВ-МОСКАЉ ОЛГА
+СТАНОЈЕВ НЕБОЈША
+СТАНОЈЕВ НИКОЛА
+СТАНОЈЕВ-ПЕТРЕЊ МИРЈАНА
+СТАНОЈЕВ САВА
+СТАНОЈЕВ СТАНКА
+СТАНОЈЕВ СТЕВАН
+СТАНОЈЕВ ТИХОМИР
+СТАНОЈЕВ ВЕРИЦА
+СТАНОЈЕВ ВЛАДИМИР
+СТАНОЈЕВ ВЛАДИМИР
+СТАНОЈЕВИЋ ЧЕДОМИР
+СТАНОЈЕВИЋ ЖАРКО
+СТАНОЈЕВИЋ ЖИВАНКО
+СТАНОЈЕВИЋ ЖИВОЈИН
+СТАНОЈЕВИЋ ЂУРА
+СТАНОЈЕВИЋ БОЖИДАР
+СТАНОЈЕВИЋ ДАНИЦА
+СТАНОЈЕВИЋ ДРАГАН
+СТАНОЈЕВИЋ ДРАГОЉУБ
+СТАНОЈЕВИЋ ДУШАН
+СТАНОЈЕВИЋ ДУШАН
+СТАНОЈЕВИЋ ХРАНИСЛАВ
+СТАНОЈЕВИЋ ИЛИЈА
+СТАНОЈЕВИЋ ЈОВАН
+СТАНОЈЕВИЋ КАЋА
+СТАНОЈЕВИЋ КОСТА
+СТАНОЈЕВИЋ ЉУБИНКА
+СТАНОЈЕВИЋ-МАНДИЋ МИЛА
+СТАНОЈЕВИЋ МАРИЈА
+СТАНОЈЕВИЋ МИЛАН
+СТАНОЈЕВИЋ МИЛАН
+СТАНОЈЕВИЋ МИЛАН
+СТАНОЈЕВИЋ МИЛАН
+СТАНОЈЕВИЋ МИЛА
+СТАНОЈЕВИЋ МИЛЕТА
+СТАНОЈЕВИЋ МИЛИВОЈ
+СТАНОЈЕВИЋ МИЛОРАД
+СТАНОЈЕВИЋ МИОДРАГ
+СТАНОЈЕВИЋ МИОДРАГ
+СТАНОЈЕВИЋ МИРОСЛАВ
+СТАНОЈЕВИЋ НАДА
+СТАНОЈЕВИЋ НАТАША
+СТАНОЈЕВИЋ НЕБОЈША
+СТАНОЈЕВИЋ НЕМАЊА
+СТАНОЈЕВИЋ НЕСТОР
+СТАНОЈЕВИЋ НИКОЛА
+СТАНОЈЕВИЋ НИКОЛА
+СТАНОЈЕВИЋ ПАВЛЕ
+СТАНОЈЕВИЋ ПЕТАР
+СТАНОЈЕВИЋ ПРЕДРАГ
+СТАНОЈЕВИЋ РАДМИЛА
+СТАНОЈЕВИЋ РАДОМИР
+СТАНОЈЕВИЋ РАДОСЛАВ
+СТАНОЈЕВИЋ РАДО
+СТАНОЈЕВИЋ СЛОБОДАН
+СТАНОЈЕВИЋ СОФИЈА
+СТАНОЈЕВИЋ СРБОЉУБ
+СТАНОЈЕВИЋ СТЕВАН
+СТАНОЈЕВИЋ СВЕТИСЛАВ
+СТАНОЈЕВИЋ ТАТЈАНА
+СТАНОЈЕВИЋ ТОМИСЛАВ
+СТАНОЈЕВИЋ-ВАРГА АНА ДР
+СТАНОЈЕВИЋ ВЕЉКО
+СТАНОЈЕВИЋ ВЛАДИМИР
+СТАНОЈЕВИЋ ВЛАДИМИР
+СТАНОЈЕВИЋ ВЛАДИСЛАВ
+СТАНОЈЕВИЋ ВУК
+СТАНОЈЕВИЋ ЗДРАВКО
+СТАНОЈЕВИЋ ЗЛАТКО
+СТАНОЈЕВИЋ ЗОРАН
+СТАНОЈЕВИЋ ЗОРАН
+СТАНОЈЕВИЋ ЗОРАН
+СТАНОЈЕВИЋ ЗОРАН
+СТАНОЈКОВИЋ МИЛОШ
+СТАНОЈКОВИЋ РАДЕ
+СТАНОЈКОВИЋ ВЛАДА
+СТАНОЈЛОВИЋ МИТАР
+СТАНОЈЛОВИЋ СТЕВАН
+СТАНОЈОСКИ ДАНИЦА
+СТАНОЈОСКИ ЗЛАТА
+СТАНОЈСКИ БЛАГОЈЕ
+СТАНОВИЋ СТЕВАН
+СТАНОВИЋ ВЕСЕЛИН
+СТАНТЕ ЈОСИП
+СТАНТИЋ БАРТУЛ
+СТАНТИЋ БЕРТАЛАН
+СТАНТИЋ КАТАЛИН
+СТАНТИЋ ЛАДИСЛАВ
+СТАНТИЋ ВЕРОНА
+СТАНУШИЋ МИЈАТ
+СТАНУЛ ПЕТАР
+СТАНУЛОВ СВЕТЛАНА
+СТАНУЛОВ ТОДОР
+СТАНУЛОВИЋ ДИМИТРИЈЕ ДР
+СТАНУЛОВИЋ МИЛАН ДР
+СТАПАР АЛЕКСАНДАР
+СТАПАРСКИ БОРИСЛАВ
+СТАПАРСКИ МИЛАН
+СТАПАРСКИ ПЕТАР
+СТАПАРСКИ СТЕВАН
+СТАРЧЕВ АНЂЕЛКА
+СТАРЧЕВ БРАНКА
+СТАРЧЕВ ДЕСАНКА
+СТАРЧЕВ ЈЕЛА
+СТАРЧЕВ КАТИЦА
+СТАРЧЕВ МИЛАН ДИПЛ ИНГ
+СТАРЧЕВ МИЛЕНКО
+СТАРЧЕВ МИЛОШ
+СТАРЧЕВ МИРОСЛАВ
+СТАРЧЕВ СТОЈАНКА
+СТАРЧЕВИЋ АНИЦА
+СТАРЧЕВИЋ АНКА
+СТАРЧЕВИЋ БОШКО
+СТАРЧЕВИЋ БОГДАН
+СТАРЧЕВИЋ БОРИСЛАВ
+СТАРЧЕВИЋ БРАНИСЛАВ
+СТАРЧЕВИЋ БУДИМИР
+СТАРЧЕВИЋ ДРАГИЦА
+СТАРЧЕВИЋ ДУШАНКА
+СТАРЧЕВИЋ ДУШАН
+СТАРЧЕВИЋ ФРАЊА
+СТАРЧЕВИЋ ИВАН
+СТАРЧЕВИЋ ЉУБИНКО ДИПЛ ИНГ
+СТАРЧЕВИЋ МИЛАН
+СТАРЧЕВИЋ МИЛАН
+СТАРЧЕВИЋ МИЛАН
+СТАРЧЕВИЋ МИЛАН
+СТАРЧЕВИЋ МИЛИЦА
+СТАРЧЕВИЋ МИЛИЦА
+СТАРЧЕВИЋ МИЛКА
+СТАРЧЕВИЋ МИЛОВАН
+СТАРЧЕВИЋ МИОДРАГ
+СТАРЧЕВИЋ МИРКО
+СТАРЧЕВИЋ МИРКО
+СТАРЧЕВИЋ МИРКО
+СТАРЧЕВИЋ НИКОЛА
+СТАРЧЕВИЋ ОЛГА
+СТАРЧЕВИЋ ПАВЛЕ
+СТАРЧЕВИЋ РУДОЛФ
+СТАРЧЕВИЋ СТАМЕНКА
+СТАРЧЕВИЋ СТАНКО
+СТАРЧЕВИЋ СТИПО
+СТАРЧЕВИЋ СТОЈАН
+СТАРЧЕВИЋ ВЛАСТИМИР
+СТАРАЧЕК ЖЕЉКО
+СТАРАЧЕК ЈОЖЕФ
+СТАРАЧЕК ЈОВАН
+СТАРЕВИЋ НИКОЛА
+СТАРИ ДАНИЕЛ
+СТАРИ ЛИВИЈА
+СТАРИЋ ИВАН
+СТАРОВИЋ БОРИВОЈ ДР
+СТАРОВИЋ БРАНКО
+СТАРОВИЋ МАРИЈА
+СТАРОВИЋ МИЛАН
+СТАРОВИЋ ПРЕДРАГ
+СТАРОВИЋ РАДОМИР
+СТАРОВИЋ РАСТИСЛАВ
+СТАРОВИЋ ЗДРАВКО
+СТАРОВЛАХ МЛАДЕН
+СТАВЕНОВ ЂОРЂЕ
+СТАВЈЕЛ МЛАДЕН
+СТАВРЕВСКИ БОГДАН
+СТАВРИЋ ИЛОНКА
+СТАВРИЋ СТАНОЈЕ
+СТАВРОВ ДАНИЦА
+СТЕЋ МИТАР
+СТЕЋ ВАСИЛИЈЕ
+СТЕФАН ИВАН
+СТЕФАН ЉУБОМИРА
+СТЕФАНИДЕС ЈУЛИЈЕ
+СТЕФАНИДЕС ЉУДЕВИТ
+СТЕФАНИДИС КИРИАКИ
+СТЕФАЊУК НИКОЛА
+СТЕФАНОВ БЛАГОЈЕ
+СТЕФАНОВ ЉУБОМИР
+СТЕФАНОВ НАДА
+СТЕФАНОВИЋ ЖАРКО
+СТЕФАНОВИЋ ЖИКА
+СТЕФАНОВИЋ ЖИКА
+СТЕФАНОВИЋ ЖИКА
+СТЕФАНОВИЋ ЖИВКО
+СТЕФАНОВИЋ ЖИВОРАД
+СТЕФАНОВИЋ ЖИВОТА
+СТЕФАНОВИЋ ЂОРЂЕ
+СТЕФАНОВИЋ ЂУРИЦА ДР ЛЕКАР
+СТЕФАНОВИЋ АЛЕКСАНДАР
+СТЕФАНОВИЋ АЛЕКСАНДАР
+СТЕФАНОВИЋ АНА
+СТЕФАНОВИЋ АНГЕЛИНА
+СТЕФАНОВИЋ АНКА
+СТЕФАНОВИЋ БОГДАН
+СТЕФАНОВИЋ БОГОЉУБ
+СТЕФАНОВИЋ БОРИВОЈЕ
+СТЕФАНОВИЋ БОРИВОЈ
+СТЕФАНОВИЋ БРАНИСЛАВ
+СТЕФАНОВИЋ БРАНКА
+СТЕФАНОВИЋ БРАНКО
+СТЕФАНОВИЋ ДАНИЦА
+СТЕФАНОВИЋ ДАНИЦА
+СТЕФАНОВИЋ ДАНИЛКА
+СТЕФАНОВИЋ ДАРИНКА
+СТЕФАНОВИЋ ДЕЖЕ
+СТЕФАНОВИЋ ДЕЈАН
+СТЕФАНОВИЋ ДРАГАНА
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГАН
+СТЕФАНОВИЋ ДРАГИША
+СТЕФАНОВИЋ ДРАГИША
+СТЕФАНОВИЋ ДРАГИЦА
+СТЕФАНОВИЋ ДРАГИЦА
+СТЕФАНОВИЋ ДРАГИЦА
+СТЕФАНОВИЋ ДРАГОЉУБ
+СТЕФАНОВИЋ ДРАГОЉУБ
+СТЕФАНОВИЋ ДРАГУТИН
+СТЕФАНОВИЋ ДРАГУТИН
+СТЕФАНОВИЋ ДУШАН
+СТЕФАНОВИЋ ДУШКО
+СТЕФАНОВИЋ ЕРЖИКА
+СТЕФАНОВИЋ-ГЕРИЋ ЗОРКА
+СТЕФАНОВИЋ ГОРАН
+СТЕФАНОВИЋ ГОРДАН
+СТЕФАНОВИЋ ИВАН
+СТЕФАНОВИЋ ЈЕЛИЦА
+СТЕФАНОВИЋ ЈЕЛИЦА
+СТЕФАНОВИЋ ЈОСИФ
+СТЕФАНОВИЋ ЈОВАНКА
+СТЕФАНОВИЋ ЈОВАН
+СТЕФАНОВИЋ ЈОВАН
+СТЕФАНОВИЋ ЈОЗЕФИНА
+СТЕФАНОВИЋ ЈУЛИЈАНА
+СТЕФАНОВИЋ КАРАНФИЛА
+СТЕФАНОВИЋ КАТИЦА
+СТЕФАНОВИЋ ЛАЗАР
+СТЕФАНОВИЋ ЛЕНКА
+СТЕФАНОВИЋ ЉУБОМИР ДР
+СТЕФАНОВИЋ ЉУБОМИР
+СТЕФАНОВИЋ ЛУЦИЈА
+СТЕФАНОВИЋ МАРИЈА
+СТЕФАНОВИЋ МАРИНКО
+СТЕФАНОВИЋ МАРКО
+СТЕФАНОВИЋ МАРТА
+СТЕФАНОВИЋ МАРТА
+СТЕФАНОВИЋ МИХАЈЛО
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛАН
+СТЕФАНОВИЋ МИЛЕНА
+СТЕФАНОВИЋ МИЛЕН
+СТЕФАНОВИЋ МИЛИЦА
+СТЕФАНОВИЋ МИЛОШ
+СТЕФАНОВИЋ МИЛОШ
+СТЕФАНОВИЋ МИЛОЈЕ
+СТЕФАНОВИЋ МИЛОВАН
+СТЕФАНОВИЋ МИЛУТИН ДИПЛ ПРАВНИК
+СТЕФАНОВИЋ МИЛУТИН
+СТЕФАНОВИЋ МИОМИР
+СТЕФАНОВИЋ МИРА
+СТЕФАНОВИЋ МИРЈАНА
+СТЕФАНОВИЋ МИРКО
+СТЕФАНОВИЋ МИРКО
+СТЕФАНОВИЋ МИРКО
+СТЕФАНОВИЋ МИРОСЛАВ
+СТЕФАНОВИЋ МИРОСЛАВ
+СТЕФАНОВИЋ МИРОСЛАВ
+СТЕФАНОВИЋ МИРОСЛАВ
+СТЕФАНОВИЋ НАДА
+СТЕФАНОВИЋ НЕДЕЉКА
+СТЕФАНОВИЋ НИКОЛА
+СТЕФАНОВИЋ НИКОЛА
+СТЕФАНОВИЋ НИКОЛА
+СТЕФАНОВИЋ НИКОЛА
+СТЕФАНОВИЋ ПАНТА
+СТЕФАНОВИЋ ПАУЛА
+СТЕФАНОВИЋ ПЕТАР
+СТЕФАНОВИЋ РАДМИЛА
+СТЕФАНОВИЋ РАДМИЛА
+СТЕФАНОВИЋ РАДОСЛАВ
+СТЕФАНОВИЋ РУЖИЦА
+СТЕФАНОВИЋ САЊА
+СТЕФАНОВИЋ СЛАВИЦА ДР
+СТЕФАНОВИЋ СЛАВКА
+СТЕФАНОВИЋ СЛАВКО
+СТЕФАНОВИЋ СЛАВКО
+СТЕФАНОВИЋ СЛОБОДАН ПРОФЕСОР
+СТЕФАНОВИЋ СЛОБОДАН
+СТЕФАНОВИЋ СМИЉА
+СТЕФАНОВИЋ СМИЉКА
+СТЕФАНОВИЋ СНЕЖАНА
+СТЕФАНОВИЋ СТАНИША
+СТЕФАНОВИЋ СТАНКО
+СТЕФАНОВИЋ СТЕВАН
+СТЕФАНОВИЋ СТЕВАН
+СТЕФАНОВИЋ СТЕВАН
+СТЕФАНОВИЋ СТЈЕПАН
+СТЕФАНОВИЋ СТОЈАНА
+СТЕФАНОВИЋ СУЗАНА
+СТЕФАНОВИЋ СВЕТИСЛАВ
+СТЕФАНОВИЋ СВЕТОЗАР
+СТЕФАНОВИЋ СВЕТОЗАР
+СТЕФАНОВИЋ ТАТЈАНА
+СТЕФАНОВИЋ-ТИЛИЋ ДИВНА
+СТЕФАНОВИЋ ТОДОР
+СТЕФАНОВИЋ ТОМИСЛАВ
+СТЕФАНОВИЋ ВАСА
+СТЕФАНОВИЋ ВАСА
+СТЕФАНОВИЋ ВАСИЛИЈЕ
+СТЕФАНОВИЋ ВЕРА
+СТЕФАНОВИЋ ВЕРА
+СТЕФАНОВИЋ ВЕРИЦА
+СТЕФАНОВИЋ ВЕСНА
+СТЕФАНОВИЋ ВЕСНА
+СТЕФАНОВИЋ ВИТОМИР
+СТЕФАНОВИЋ ВЛАДИЦА
+СТЕФАНОВИЋ ВЛАДИМИР
+СТЕФАНОВИЋ ВЛАДИМИР
+СТЕФАНОВИЋ ВЛАДИМИР
+СТЕФАНОВИЋ ВЛАДИМИР
+СТЕФАНОВИЋ ВЛАЈКО
+СТЕФАНОВИЋ ВОЈИСЛАВА
+СТЕФАНОВИЋ ВОЈИСЛАВ
+СТЕФАНОВИЋ ВОЈИСЛАВ
+СТЕФАНОВИЋ ЗОРАН
+СТЕФАНОВИЋ ЗОРАН
+СТЕФАНОВСКА ЗОРКА
+СТЕФАНОВСКИ ЛЕВКО
+СТЕФАНОВСКИ МЕТОДИЈЕ
+СТЕФАНОВСКИ МИЛОРАД
+СТЕФАНОВСКИ СТАМЕН
+СТЕГИЋ ДЕЈАН
+СТЕГИЋ ИВАН
+СТЕГИЋ НИКОЛА
+СТЕГЊАИЋ ОЛГА
+СТЕГЊАЈИЋ ВЛАДИМИР
+СТЕЈИЋ АРАНКА
+СТЕЈИЋ ЈЕЛЕНА
+СТЕЈИЋ КОСТА
+СТЕЈИЋ НЕВЕНКА
+СТЕЈИЋ РУЖА
+СТЕЈИН ЂОРЂЕ
+СТЕЈИН БОРИСЛАВ
+СТЕЈИН ДУШАН ДИПЛ ИНГ
+СТЕЈИН ЈЕЛЕНА
+СТЕЈИН ЈОВАНКА
+СТЕЈИН ЉУБИЦА
+СТЕЈИН РУЖИЦА
+СТЕЈИН САША
+СТЕЈИН СРЂАН
+СТЕЛА ВЛАДИМИРА
+СТЕЉА НОВАК
+СТЕЉИЋ МИЛИВОЈЕ
+СТЕЉИЋ МИЛУН
+СТЕЛКИЋ ЂУРИЦА
+СТЕЛКИЋ ДРАГИЦА
+СТЕЛКИЋ МИЛИВОЈ
+СТЕЛКИЋ РАДИЦА
+СТЕЛКИЋ РЕЉА ДИПЛ ИНГ
+СТЕЛКИЋ СВЕТОЗАР
+СТЕЛКИЋ ЗЛАТОМИР
+СТЕПАНЧЕВ АНИЦА
+СТЕПАНЧЕВ СТЕВАН
+СТЕПАНЧЕВ ВЛАДИСЛАВ
+СТЕПАНЧЕВ ЗОРАН
+СТЕПАНЧЕВ ЗОРА
+СТЕПАНЧЕВ ЗОРИЦА
+СТЕПАНЧЕВИЋ МИЛИЦА
+СТЕПАНЧЕВИЋ МИОДРАГ
+СТЕПАНЧЕВИЋ СОФИЈА
+СТЕПАНЧЕВИЋ СПАСОЈЕ
+СТЕПАНИЋ МИЛИСАВ
+СТЕПАНИЋ ПРЕДРАГ
+СТЕПАНОВ ЂОРЂЕ
+СТЕПАНОВ ЂОРЂЕ
+СТЕПАНОВ ЂОРЂЕ
+СТЕПАНОВ АЛЕКСАНДАР
+СТЕПАНОВ АЛЕКСАНДРА
+СТЕПАНОВ АНЂЕЛКА
+СТЕПАНОВ БРАНИСЛАВ
+СТЕПАНОВ БРАНКО
+СТЕПАНОВ БРАНКО
+СТЕПАНОВ ДРАГИША
+СТЕПАНОВ ДРАГИЦА
+СТЕПАНОВ ДУШАН
+СТЕПАНОВ ДУШАН
+СТЕПАНОВ ЕМИЛ
+СТЕПАНОВ ЈОЛЕ
+СТЕПАНОВ КАТИЦА
+СТЕПАНОВ ЉИЉАНА
+СТЕПАНОВ ЉУБОМИР ДР
+СТЕПАНОВ ЉУБОМИР
+СТЕПАНОВ МАКСА
+СТЕПАНОВ МАРА
+СТЕПАНОВ МИЛАНКА
+СТЕПАНОВ МИЛАНКА
+СТЕПАНОВ МИЛАН
+СТЕПАНОВ МИЛАН
+СТЕПАНОВ МИЛЕВА
+СТЕПАНОВ МИЛИВОЈ
+СТЕПАНОВ МИЛИВОЈ
+СТЕПАНОВ МИЛИВОЈ
+СТЕПАНОВ МИЛОВАН
+СТЕПАНОВ НИКОЛА
+СТЕПАНОВ ПАЈА
+СТЕПАНОВ ПАЈА
+СТЕПАНОВ ПЕТАР ДР
+СТЕПАНОВ ПЕТАР
+СТЕПАНОВ ПИРОШКА
+СТЕПАНОВ РАДИВОЈ
+СТЕПАНОВ РАДОВАН
+СТЕПАНОВ САВА
+СТЕПАНОВ САВА
+СТЕПАНОВ СЕРГИЈЕ
+СТЕПАНОВ СЛОБОДАН
+СТЕПАНОВ СВЕТИСЛАВ
+СТЕПАНОВ ВАСИЛИЈЕ
+СТЕПАНОВ ВЕЛИМИР
+СТЕПАНОВ ВЕСНА
+СТЕПАНОВ ВИДА
+СТЕПАНОВ ВИДОСАВА
+СТЕПАНОВ ВОЈНА
+СТЕПАНОВ ЗДРАВКО
+СТЕПАНОВИЋ ЂУРЂИЦА
+СТЕПАНОВИЋ БРАТИСЛАВ
+СТЕПАНОВИЋ ДРАГИША
+СТЕПАНОВИЋ ДРАГИЦА
+СТЕПАНОВИЋ МИЛОРАД
+СТЕПАНОВИЋ НЕБОЈША
+СТЕПАНОВИЋ СЛОБОДАН
+СТЕПАНОВИЋ СНЕЖАНА
+СТЕПАНОВИЋ СТЕВАН
+СТЕПАНОВИЋ СВЕТЛАНА
+СТЕПИЋ ЈОСИП
+СТЕПИЋ МАРИЈА
+СТЕРИО ЂОРЂЕ
+СТЕРИО БРАНКО ДР
+СТЕРПИН ЗВОНИМИР
+СТЕВЧИЋ САВАТИЈЕ
+СТЕВАНЧЕВ АНКИЦА
+СТЕВАНЧЕВ МИЛИЦА
+СТЕВАНЧЕВ МИЛОРАД
+СТЕВАНЧЕВ ОЛГА
+СТЕВАНЧЕВИЋ ЉИЉАНА
+СТЕВАНДИЋ ЂУРО
+СТЕВАНДИЋ МИЛИЦА
+СТЕВАНДИЋ РАДЕ
+СТЕВАНИЋ БОРИВОЈЕ
+СТЕВАНИЋ ДРАГОСЛАВ
+СТЕВАНИЋ ИВАН
+СТЕВАНИЋ МИОДРАГ
+СТЕВАНИЋ СЛОБОДАН
+СТЕВАНИЋ ВУКОМАН
+СТЕВАНОВ ЖИВАН
+СТЕВАНОВ ДРАГАНА
+СТЕВАНОВ ЕМИЛКА
+СТЕВАНОВ ГАВРА
+СТЕВАНОВ ЈЕЛЕНА
+СТЕВАНОВ ЉИЉАНА
+СТЕВАНОВ МАДЛЕН
+СТЕВАНОВ МИЛОРАД
+СТЕВАНОВ МИЛОВАН
+СТЕВАНОВ МИЛУТИН
+СТЕВАНОВ МЛАДЕН
+СТЕВАНОВ МЛАДЕН
+СТЕВАНОВ НАТАЛИЈА
+СТЕВАНОВ СТАНА
+СТЕВАНОВ СВЕТОЗАР
+СТЕВАНОВ ВЕСЕЛИН
+СТЕВАНОВ ВЛАДИМИР
+СТЕВАНОВ ЗЛАТОЈЕ
+СТЕВАНОВИЋ ЖИВАДИН
+СТЕВАНОВИЋ ЖИВКА
+СТЕВАНОВИЋ ЖИВОРАД
+СТЕВАНОВИЋ АДАМ
+СТЕВАНОВИЋ АЛЕКСАНДАР
+СТЕВАНОВИЋ БОШКО
+СТЕВАНОВИЋ БОРА
+СТЕВАНОВИЋ БРАНИСЛАВА
+СТЕВАНОВИЋ ДАНИЦА
+СТЕВАНОВИЋ ДЕСИМИР
+СТЕВАНОВИЋ ДРАГИША
+СТЕВАНОВИЋ ДРАГИЦА
+СТЕВАНОВИЋ ДРАГОСЛАВ
+СТЕВАНОВИЋ ДУШАН ДР
+СТЕВАНОВИЋ ГОРАН
+СТЕВАНОВИЋ ГОРАН
+СТЕВАНОВИЋ ЈАРОСЛАВ
+СТЕВАНОВИЋ ЈОВАН
+СТЕВАНОВИЋ ЉУБИША
+СТЕВАНОВИЋ МИЛАДИНКА
+СТЕВАНОВИЋ МИЛАДИН
+СТЕВАНОВИЋ МИЛЕНКО
+СТЕВАНОВИЋ МИЛЕ
+СТЕВАНОВИЋ МИЛИВОЈ
+СТЕВАНОВИЋ МИЛКА
+СТЕВАНОВИЋ МИЛОЉУБ
+СТЕВАНОВИЋ МИОМИР
+СТЕВАНОВИЋ МИРА
+СТЕВАНОВИЋ МЛАДЕНКА
+СТЕВАНОВИЋ-НЕЋАК СЛОБОДАНКА ДИПЛ ИНГ
+СТЕВАНОВИЋ НИКОСАВА
+СТЕВАНОВИЋ РАДОСЛАВ
+СТЕВАНОВИЋ РАЈКО
+СТЕВАНОВИЋ РАНКО ДР ЛЕКАР
+СТЕВАНОВИЋ РАТКО
+СТЕВАНОВИЋ РУЖА
+СТЕВАНОВИЋ САВА
+СТЕВАНОВИЋ СЛОБОДАН
+СТЕВАНОВИЋ СНЕЖАНА
+СТЕВАНОВИЋ СТОЈАДИН
+СТЕВАНОВИЋ СВИЈЕТЛАНА
+СТЕВАНОВИЋ ТОМИСЛАВ
+СТЕВАНОВИЋ ТОМИСЛАВ
+СТЕВАНОВИЋ ВЕРА
+СТЕВАНОВИЋ ВЛАДА
+СТЕВАНОВИЋ ВЛАСТИМИР
+СТЕВАНОВИЋ ЗЛАТКО ДР
+СТЕВАНОВИЋ ЗОРАН
+СТЕВАНОВИЋ ЗОРИЦА
+СТЕВАНОВСКИ ГОШЕ
+СТЕВАНОВСКИ СЛОБОДАН
+СТЕВИЋ ДОБРИВОЈЕ
+СТЕВИЋ ДУШАН
+СТЕВИЋ ГОРДАНА
+СТЕВИЋ ЉУБИША
+СТЕВИЋ НИКОЛА
+СТЕВИЋ ПЕТАР
+СТЕВИЋ СЛОБОДАН
+СТЕВИЋ СНЕЖАНА
+СТЕВИЋ СРБА
+СТЕВИЋ ВЕЛИМИР
+СТЕВИЋ ВОЈИСЛАВ
+СТЕВИН БОГДАН
+СТЕВИН БОРИСЛАВ
+СТЕВИН НАДА ДИПЛ ИНГ
+СТЕВИН РАДОЈЛА
+СТЕВОВИЋ АНКА
+СТЕВОВИЋ БОЖИДАР
+СТЕВОВИЋ БРАНИСЛАВ
+СТЕВОВИЋ ИВАН ДИПЛ ПРАВНИК
+СТЕВОВИЋ-ЛУКИЋ РАДМИЛА
+СТЕВОВИЋ МИЛОСАВА
+СТЕВОВИЋ ВОЈИН
+СТИЈАЧИЋ БРАНКО
+СТИЈАЧИЋ ПАВЛЕ
+СТИЈАЧИЋ СВЕТОЗАР
+СТИЈАКОВИЋ ДРАГАН
+СТИЈЕПОВИЋ АЛЕКСА
+СТИЈЕПОВИЋ МИЛИЈАНА
+СТИЈОВИЋ ИЛИЈА
+СТИЈОВИЋ ЈЕЛИСАВЕТА
+СТИЈОВИЋ МАРА
+СТИЈОВИЋ МИЛАН
+СТИКИЋ БИЉАНА
+СТИКИЋ ЈОВАН
+СТИКИЋ МОМИРКА
+СТИКОВИЋ РОСА
+СТИЛИНОВИЋ КОВИНКА
+СТИЛИНОВИЋ ЗВОНИМИР ДИПЛ ИНГ
+СТИПАНЧИЋ СТИПАН
+СТИПАНОВИЋ БЈЕЛИЦА
+СТИПАНОВИЋ ГОЈКО
+СТИПЕТИЋ ДРАГАН
+СТИПИЋ АНДРИЈА
+СТИПИЋ АНТЕ
+СТИПИЋ БУДЕ
+СТИПИЋ ГИЗЕЛА
+СТИПИЋ ЈАША
+СТИПИЋ НАДА
+СТИПИЋ ОЛИВЕРА
+СТИПИЋ СОЊА
+СТИПИЋ ВЕЉКО
+СТИСКАЛО ТИХОМИР
+СТЈЕЉА ДАНИЦА
+СТЈЕПЧЕВИЋ АНИЦА
+СТЈЕПАНОВИЋ БОЖО
+СТЈЕПАНОВИЋ БОРИВОЈЕ
+СТЈЕПАНОВИЋ ЦВЕЈА
+СТЈЕПАНОВИЋ ЈАСНА
+СТЈЕПАНОВИЋ ЈЕЛЕНА
+СТЈЕПАНОВИЋ ЈЕЛИСАВЕТА
+СТЈЕПАНОВИЋ ЈОВИЦА
+СТЈЕПАНОВИЋ СТАНКА
+СТЈЕПАНОВИЋ ТОМИСЛАВ
+СТЈЕПИЋ ЈОСИП
+СТЈЕПИЋ МИЈО
+СТОШИЋ ДРАГАН
+СТОШИЋ ДРАГАН
+СТОШИЋ ДРАГАН
+СТОШИЋ ДУШАН
+СТОШИЋ ДУШАН
+СТОШИЋ ДУШАН
+СТОШИЋ ЈЕЛЕНА
+СТОШИЋ МИЛИЦА
+СТОШИЋ НЕДЕЉКО
+СТОШИЋ РАДИВОЈ
+СТОШИЋ СЛАВИША
+СТОШИЋ СТОЈАДИН
+СТОШИЋ СТОЈАН
+СТОШИЋ ТАЊА
+СТОШИЋ ТОМИСЛАВ
+СТОШИЋ ВЛАДИМИР
+СТОШИЋ ВОЈИСЛАВ
+СТОШИЋ ЗОРАН
+СТОЖИНИЋ ДРАГИЊА
+СТОЕСКИ ЈЕВТИМ
+СТОГОВ АНАТОЛИЈ ДИПЛ ИНГ
+СТОИЉКОВИЋ ЖИКА
+СТОИЉКОВИЋ ДРАГОСЛАВ
+СТОИЉКОВИЋ ЈЕЛИЦА
+СТОИЉКОВИЋ ЈОВАН
+СТОИЉКОВИЋ МИЛОРАД
+СТОИЉКОВИЋ НЕНАД
+СТОИЉКОВИЋ СТОЈАН
+СТОИЛКОВСКИ БОРИС
+СТОИСАВЉЕВИЋ ЂУЈА
+СТОИСАВЉЕВИЋ МИЋО
+СТОЈЧЕВ МАРИЈА
+СТОЈЧЕВИЋ ИЛИЈА
+СТОЈЧЕВИЋ СТАНОЈКО
+СТОЈЧЕВСКИ БЛАГОЈА
+СТОЈЧЕВСКИ ТОМИСЛАВ
+СТОЈЧЕВСКИ ТОНЕ
+СТОЈЧИЋ ЂОРЂЕ
+СТОЈЧИЋ ЂУРО
+СТОЈЧИЋ ДЕСИМИР
+СТОЈЧИЋ ДУШАН
+СТОЈЧИЋ ЈЕЛЕНА
+СТОЈЧИЋ МИЛАН
+СТОЈЧИЋ МИЛАН
+СТОЈЧИЋ МИЛЕНКО
+СТОЈЧИЋ МИРОСЛАВ
+СТОЈЧИЋ НИКОЛА
+СТОЈЧИЋ СРЕЋКО
+СТОЈЧИЋ СРЕТКО
+СТОЈЧИНОВИЋ МАРКО
+СТОЈЧИНОВИЋ СИМО
+СТОЈШИЋ ЖИВАН
+СТОЈШИЋ ЂОРЂЕ
+СТОЈШИЋ ЂОРЂЕ
+СТОЈШИЋ БОЈКА
+СТОЈШИЋ ДАНЧИКА
+СТОЈШИЋ ДРАГИ
+СТОЈШИЋ ДУШАНКА
+СТОЈШИЋ ЈЕЛЕНА
+СТОЈШИЋ ЈОВАН
+СТОЈШИЋ ЈОВАН
+СТОЈШИЋ ЛАЗАР
+СТОЈШИЋ МАРИЈА
+СТОЈШИЋ МАРИЈА
+СТОЈШИЋ МАРИЈА
+СТОЈШИЋ МИЛАН ДИПЛ ИНГ
+СТОЈШИЋ МИЛАН
+СТОЈШИЋ МИЛАН
+СТОЈШИЋ МИЛИВОЈ
+СТОЈШИЋ МИЛКА
+СТОЈШИЋ МИЛОШ
+СТОЈШИЋ МИРА
+СТОЈШИЋ НАДА
+СТОЈШИЋ НАДА
+СТОЈШИЋ НЕГОВАН
+СТОЈШИЋ НЕНАД
+СТОЈШИЋ НЕВЕНКА
+СТОЈШИЋ НЕВЕНКА
+СТОЈШИЋ НИКОЛА
+СТОЈШИЋ ОЛГА
+СТОЈШИЋ ПЕТАР
+СТОЈШИЋ ПРОКОПИЈЕ
+СТОЈШИЋ ПРВОСЛАВ
+СТОЈШИЋ САВА
+СТОЈШИЋ САВА
+СТОЈШИЋ САВА
+СТОЈШИЋ СЛАВИЦА
+СТОЈШИЋ СМИЉА
+СТОЈШИЋ СОФИЈА
+СТОЈШИЋ СРБИСЛАВ
+СТОЈШИЋ СТАНОЈЕ
+СТОЈШИЋ СТЕВАН
+СТОЈШИЋ ТАТЈАНА
+СТОЈШИЋ ВЕРА
+СТОЈШИЋ ВИДОСАВА
+СТОЈШИЋ ВЛАДИМИР
+СТОЈШИЋ ВЛАДИМИР
+СТОЈШИЋ ВЛАДИМИР
+СТОЈШИЋ ВОЈИСЛАВ
+СТОЈШИЋ ВУЈАДИН ДИПЛ ИНГ
+СТОЈШИЋ ЗДРАВКО
+СТОЈШИН ЖАРКО
+СТОЈШИН ЂОРЂЕ
+СТОЈШИН ЂУРЂА
+СТОЈШИН ЂУРЂИНКА
+СТОЈШИН БОГОСЛОВ
+СТОЈШИН ДИМИТРИЈЕ
+СТОЈШИН ДОБРИВОЈ
+СТОЈШИН ДРАГАН
+СТОЈШИН ДУШАН
+СТОЈШИН ЕМИЛ
+СТОЈШИН ЕСТЕР
+СТОЈШИН ГАВРА
+СТОЈШИН ГРОЗДАНА
+СТОЈШИН ЈОВАН
+СТОЈШИН ЈОВАН
+СТОЈШИН ЛАЗАР
+СТОЈШИН МИЛАНКА
+СТОЈШИН МИЛАН
+СТОЈШИН МИЛАН
+СТОЈШИН МИЛИЦА
+СТОЈШИН МИЛОРАД
+СТОЈШИН МИЛОВАН
+СТОЈШИН НИКОЛА
+СТОЈШИН ОЛГА
+СТОЈШИН РАДА
+СТОЈШИН РАДОСЛАВ
+СТОЈШИН САВА
+СТОЈШИН САВА
+СТОЈШИН СИНИША
+СТОЈШИН СВЕТОЗАР
+СТОЈШИН ТОДОР
+СТОЈШИН ВАСА
+СТОЈШИН ВЕРА
+СТОЈШИН ЗЛАТА
+СТОЈА ЉИЉАНА
+СТОЈА МАРИЈА
+СТОЈА МИЛАНА
+СТОЈА СЛАЂАНА
+СТОЈА СЛОБОДАН ДР ЛЕКАР
+СТОЈА ВОЈИСЛАВ
+СТОЈАЧИЋ ДИМИТРИЈЕ
+СТОЈАЧИЋ МИЛАН
+СТОЈАЧИЋ НЕНАД
+СТОЈАЧИЋ ВЛАДИСЛАВ
+СТОЈАДИНОВ РАДИВОЈ
+СТОЈАДИНОВИЋ АНИЦА
+СТОЈАДИНОВИЋ БОРИСЛАВА
+СТОЈАДИНОВИЋ БОРИВОЈ
+СТОЈАДИНОВИЋ ДИМИТРИЈЕ
+СТОЈАДИНОВИЋ ДОБРИЛА
+СТОЈАДИНОВИЋ ДРАГАНА ЛЕКАР
+СТОЈАДИНОВИЋ ДРАГИЊА
+СТОЈАДИНОВИЋ ДРАГОСЛАВ
+СТОЈАДИНОВИЋ ЛАЗАР
+СТОЈАДИНОВИЋ ЉУБИША
+СТОЈАДИНОВИЋ МИЛАН
+СТОЈАДИНОВИЋ МИЛАН
+СТОЈАДИНОВИЋ МИЛЕВА
+СТОЈАДИНОВИЋ МИЛИЦА
+СТОЈАДИНОВИЋ МИЛИНКО
+СТОЈАДИНОВИЋ МИЛКА
+СТОЈАДИНОВИЋ МИЛОЈЕ
+СТОЈАДИНОВИЋ ПЕТАР
+СТОЈАДИНОВИЋ ПЕТАР
+СТОЈАДИНОВИЋ ПУНИША
+СТОЈАДИНОВИЋ СЛАВКО
+СТОЈАДИНОВИЋ СЛОБОДАН
+СТОЈАДИНОВИЋ СЛОБОДАН
+СТОЈАДИНОВИЋ СОФИЈА
+СТОЈАДИНОВИЋ СОФИЈА
+СТОЈАДИНОВИЋ СТЕВАН
+СТОЈАДИНОВИЋ ТАТЈАНА
+СТОЈАДИНОВИЋ ВЛАДЕТА
+СТОЈАК ЗОРИЦА
+СТОЈАКОВ БОЖИДАР
+СТОЈАКОВ МИЛОРАД
+СТОЈАКОВ СРБОСЛАВ
+СТОЈАКОВ СРБОСЛАВ
+СТОЈАКОВИЋ ЂУКАН
+СТОЈАКОВИЋ ЂУРО
+СТОЈАКОВИЋ БРАНИСЛАВА
+СТОЈАКОВИЋ ДИВНА
+СТОЈАКОВИЋ ДРАГАН
+СТОЈАКОВИЋ ЈЕЛКА
+СТОЈАКОВИЋ КОСТА
+СТОЈАКОВИЋ ЛАЗАР
+СТОЈАКОВИЋ МАРГИТА
+СТОЈАКОВИЋ МИХАЈЛО
+СТОЈАКОВИЋ МИЛАДИНКА
+СТОЈАКОВИЋ МИЛА
+СТОЈАКОВИЋ МИЛЕ
+СТОЈАКОВИЋ МИЛИСАВ
+СТОЈАКОВИЋ МИЛОВАН
+СТОЈАКОВИЋ НИКОЛА
+СТОЈАКОВИЋ РАДМИЛА
+СТОЈАКОВИЋ САВАН
+СТОЈАКОВИЋ СЛАВКО
+СТОЈАКОВИЋ СМИЉА
+СТОЈАКОВИЋ СТАНКО
+СТОЈАКОВИЋ СТЕВО
+СТОЈАКОВИЋ СВЕТОЗАР
+СТОЈАКОВИЋ ЗОРАН
+СТОЈАКОВИЋ ЗОРА
+СТОЈАНЧЕВ ГОРДАНА
+СТОЈАНЧЕВ ИВАН
+СТОЈАНЧЕВ РАДОМИР
+СТОЈАНЧЕВ СЛАВИЦА
+СТОЈАНЧЕВ ВАСА
+СТОЈАНЧИЋ ВЛАДА
+СТОЈАНАЦ БРАНКО
+СТОЈАНАЦ МИЛЕ
+СТОЈАНАЦ НИКОЛА
+СТОЈАНИЋ АНГЕЛИНА
+СТОЈАНОСКИ ДУШАН
+СТОЈАНОСКИ ГАВРИЛ
+СТОЈАНОВ БРАНКО
+СТОЈАНОВ БРАНКО
+СТОЈАНОВ ИВАН
+СТОЈАНОВ МИЛОВАН
+СТОЈАНОВ МИРЈАНА
+СТОЈАНОВ МЛАДЕН ДР
+СТОЈАНОВ НАДА
+СТОЈАНОВ НАДА
+СТОЈАНОВ ОЛГА
+СТОЈАНОВ РАДИВОЈЕ
+СТОЈАНОВ РАДОВАН
+СТОЈАНОВ САВА
+СТОЈАНОВ САВА
+СТОЈАНОВ СЕНКА
+СТОЈАНОВ СТАНКО
+СТОЈАНОВ СТЕВАН
+СТОЈАНОВ ВЕРА
+СТОЈАНОВ ВЛАДИМИР
+СТОЈАНОВ ВУКИЦА
+СТОЈАНОВ ЗОРАН
+СТОЈАНОВИЋ ЖИВКО
+СТОЈАНОВИЋ ЖИВКО
+СТОЈАНОВИЋ ЖИВКО
+СТОЈАНОВИЋ ЖИВОЈИН
+СТОЈАНОВИЋ ЖИВОРАД
+СТОЈАНОВИЋ ЂОРЂЕ
+СТОЈАНОВИЋ ЂОРЂЕ
+СТОЈАНОВИЋ ЂУРЂИЦА
+СТОЈАНОВИЋ ЂУРА
+СТОЈАНОВИЋ АЦА
+СТОЈАНОВИЋ АЛЕКСАНДАР
+СТОЈАНОВИЋ АЛЕКСАНДАР
+СТОЈАНОВИЋ АЛЕКСАНДАР
+СТОЈАНОВИЋ АЉОША
+СТОЈАНОВИЋ АНА
+СТОЈАНОВИЋ-БАЛИНТ БОЖАНА
+СТОЈАНОВИЋ БЛАГОЈЕ
+СТОЈАНОВИЋ БОШКО
+СТОЈАНОВИЋ БОШКО
+СТОЈАНОВИЋ БОШКО
+СТОЈАНОВИЋ БОЖИДАР
+СТОЈАНОВИЋ БОЖИДАР
+СТОЈАНОВИЋ БОБАН
+СТОЈАНОВИЋ БОГОЉУБ
+СТОЈАНОВИЋ БОРИСЛАВА
+СТОЈАНОВИЋ БОРИСЛАВ
+СТОЈАНОВИЋ БОРИВОЈЕ
+СТОЈАНОВИЋ БОРИВОЈ
+СТОЈАНОВИЋ БРАНИСЛАВ
+СТОЈАНОВИЋ БРАНИСЛАВ
+СТОЈАНОВИЋ БРАНИСЛАВ
+СТОЈАНОВИЋ БРАНКА
+СТОЈАНОВИЋ БРАНКА
+СТОЈАНОВИЋ БРАНКО
+СТОЈАНОВИЋ БРАНКО
+СТОЈАНОВИЋ БУДИМИР
+СТОЈАНОВИЋ ЦВИЈЕТА
+СТОЈАНОВИЋ ДАНИЦА
+СТОЈАНОВИЋ ДАНИЦА
+СТОЈАНОВИЋ ДАНИЛО
+СТОЈАНОВИЋ ДАНКА
+СТОЈАНОВИЋ ДАРИНКА ДР
+СТОЈАНОВИЋ ДЕСИМИР
+СТОЈАНОВИЋ ДОБРИЛА
+СТОЈАНОВИЋ ДОБРИЛА
+СТОЈАНОВИЋ ДОБРИЛА
+СТОЈАНОВИЋ ДОБРИНКА
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГАН
+СТОЈАНОВИЋ ДРАГИША
+СТОЈАНОВИЋ ДРАГИША
+СТОЈАНОВИЋ ДРАГИЦА
+СТОЈАНОВИЋ ДРАГОЉУБ
+СТОЈАНОВИЋ ДРАГОЉУБ
+СТОЈАНОВИЋ ДРАГОМИР
+СТОЈАНОВИЋ ДРАГОСЛАВ
+СТОЈАНОВИЋ ДУШАН
+СТОЈАНОВИЋ ДУШИЦА
+СТОЈАНОВИЋ ГАВРИЛО
+СТОЈАНОВИЋ ГАВРО
+СТОЈАНОВИЋ ГОРАН
+СТОЈАНОВИЋ ГРАДИМИР
+СТОЈАНОВИЋ ИВКО
+СТОЈАНОВИЋ ЈАКОВ
+СТОЈАНОВИЋ ЈАСМИНА
+СТОЈАНОВИЋ-ЈЕФТОВИЋ БОСИЉКА
+СТОЈАНОВИЋ ЈЕЛЕНА
+СТОЈАНОВИЋ ЈЕЛЕНА
+СТОЈАНОВИЋ ЈЕЛИЦА
+СТОЈАНОВИЋ ЈОВАН
+СТОЈАНОВИЋ ЈОВАН
+СТОЈАНОВИЋ ЈУЛКА
+СТОЈАНОВИЋ КАТИЦА
+СТОЈАНОВИЋ КОНСТАНТИН
+СТОЈАНОВИЋ КОСТА
+СТОЈАНОВИЋ КРСТА
+СТОЈАНОВИЋ ЛАЗАР
+СТОЈАНОВИЋ ЛАЗАР
+СТОЈАНОВИЋ ЛЕОНА
+СТОЈАНОВИЋ ЉУБИША
+СТОЈАНОВИЋ ЉУБИЦА
+СТОЈАНОВИЋ ЉУБИНКО
+СТОЈАНОВИЋ ЉУБОМИР
+СТОЈАНОВИЋ ЉУБОМИР
+СТОЈАНОВИЋ МАРИЈА
+СТОЈАНОВИЋ МАРКО
+СТОЈАНОВИЋ МИША
+СТОЈАНОВИЋ МИЛАК
+СТОЈАНОВИЋ МИЛАН
+СТОЈАНОВИЋ МИЛАН
+СТОЈАНОВИЋ МИЛЕТА
+СТОЈАНОВИЋ МИЛЕ
+СТОЈАНОВИЋ МИЛИЦА
+СТОЈАНОВИЋ МИЛИЦА
+СТОЈАНОВИЋ МИЛИВОЈЕ
+СТОЈАНОВИЋ МИЛКА
+СТОЈАНОВИЋ МИЛОШ
+СТОЈАНОВИЋ МИЛОШ
+СТОЈАНОВИЋ МИЛОШ
+СТОЈАНОВИЋ МИЛОВАН
+СТОЈАНОВИЋ МИЛОВАН
+СТОЈАНОВИЋ МИЛОВАН
+СТОЈАНОВИЋ МИОДРАГ
+СТОЈАНОВИЋ МИОДРАГ
+СТОЈАНОВИЋ МИОМИР
+СТОЈАНОВИЋ МИРА
+СТОЈАНОВИЋ МИРЈАНА
+СТОЈАНОВИЋ МИРЈАНА
+СТОЈАНОВИЋ МИРОЉУБ
+СТОЈАНОВИЋ МИРОСЛАВ
+СТОЈАНОВИЋ МИРОСЛАВ
+СТОЈАНОВИЋ МИРОСЛАВ
+СТОЈАНОВИЋ МИРОСЛАВ
+СТОЈАНОВИЋ МИРО
+СТОЈАНОВИЋ МОМЧИЛО
+СТОЈАНОВИЋ МОМИР
+СТОЈАНОВИЋ НАДА
+СТОЈАНОВИЋ НАДА
+СТОЈАНОВИЋ НАСТАС
+СТОЈАНОВИЋ НЕДЕЉКО
+СТОЈАНОВИЋ НЕНАД
+СТОЈАНОВИЋ НЕНАД
+СТОЈАНОВИЋ НИКИЦА
+СТОЈАНОВИЋ НИКОЛА
+СТОЈАНОВИЋ НИКОЛА
+СТОЈАНОВИЋ НОВИЦА
+СТОЈАНОВИЋ НОВИЦА
+СТОЈАНОВИЋ ОБРАД
+СТОЈАНОВИЋ ОЛГА
+СТОЈАНОВИЋ ОСТОЈА
+СТОЈАНОВИЋ ПЕТАР
+СТОЈАНОВИЋ ПЕТАР
+СТОЈАНОВИЋ ПЕТАР
+СТОЈАНОВИЋ ПЕТАР
+СТОЈАНОВИЋ ПРВАН
+СТОЈАНОВИЋ РАДЕ
+СТОЈАНОВИЋ РАДЕ
+СТОЈАНОВИЋ РАДИСАВ
+СТОЈАНОВИЋ РАДМИЛА
+СТОЈАНОВИЋ РАДМИЛА
+СТОЈАНОВИЋ РАДМИЛА
+СТОЈАНОВИЋ РАДМИЛО
+СТОЈАНОВИЋ РАДОИЦА
+СТОЈАНОВИЋ РАДОМИР
+СТОЈАНОВИЋ РАДОМИР
+СТОЈАНОВИЋ РАДОВАН
+СТОЈАНОВИЋ РУЖИЦА
+СТОЈАНОВИЋ САША
+СТОЈАНОВИЋ САВА
+СТОЈАНОВИЋ-СИМИЋ ВЕСНА
+СТОЈАНОВИЋ СЛАВКО
+СТОЈАНОВИЋ СЛАВКО
+СТОЈАНОВИЋ СЛАВКО
+СТОЈАНОВИЋ СЛАВОЈКА
+СТОЈАНОВИЋ СЛАВОЉУБ
+СТОЈАНОВИЋ СЛОБОДАН
+СТОЈАНОВИЋ СЛОБОДАН
+СТОЈАНОВИЋ СЛОБОДАН
+СТОЈАНОВИЋ СРЂАН
+СТОЈАНОВИЋ СРБОЉУБ
+СТОЈАНОВИЋ СРЕТЕН
+СТОЈАНОВИЋ СРЕТЕН
+СТОЈАНОВИЋ СТАНИСЛАВ ДР ЛЕКАР
+СТОЈАНОВИЋ СТАНОЈЕ
+СТОЈАНОВИЋ СТАНОЈЕ
+СТОЈАНОВИЋ СТЕВАН ДР
+СТОЈАНОВИЋ СТЕВАН
+СТОЈАНОВИЋ СТЕВАН
+СТОЈАНОВИЋ СТЕВАН
+СТОЈАНОВИЋ СТЕВАН
+СТОЈАНОВИЋ СТОЈАН
+СТОЈАНОВИЋ СТОЈАН
+СТОЈАНОВИЋ СТОЛЕ
+СТОЈАНОВИЋ СВЕТИСЛАВ
+СТОЈАНОВИЋ СВЕТЛАНА
+СТОЈАНОВИЋ СВЕТОЗАР
+СТОЈАНОВИЋ ТИХОМИР ДР ИНГ
+СТОЈАНОВИЋ ТИХОМИР
+СТОЈАНОВИЋ ТОМИСЛАВ МР
+СТОЈАНОВИЋ ТОМИСЛАВ
+СТОЈАНОВИЋ ВАЛЕРИЈА
+СТОЈАНОВИЋ ВАСИЛИЈЕ
+СТОЈАНОВИЋ ВАСО
+СТОЈАНОВИЋ ВЕЛИМИР
+СТОЈАНОВИЋ ВЕЛИМИР
+СТОЈАНОВИЋ ВЕЉКО
+СТОЈАНОВИЋ ВЕРА
+СТОЈАНОВИЋ ВЕРА
+СТОЈАНОВИЋ ВЕСНА
+СТОЈАНОВИЋ ВЕСНА
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАДИМИР
+СТОЈАНОВИЋ ВЛАСТИМИР
+СТОЈАНОВИЋ ВОЈИСЛАВ
+СТОЈАНОВИЋ ВУКАШИН
+СТОЈАНОВИЋ ЗДРАВКО
+СТОЈАНОВИЋ ЗОРАН ДР
+СТОЈАНОВИЋ ЗОРАН
+СТОЈАНОВИЋ ЗОРАН
+СТОЈАНОВИЋ ЗОРАН
+СТОЈАНОВИЋ ЗОРКА
+СТОЈАНОВСКИ ЖИВКО
+СТОЈАНОВСКИ АНДРИЈА
+СТОЈАНОВСКИ БИЉАНА
+СТОЈАНОВСКИ БРАНИМИР
+СТОЈАНОВСКИ ДРАГАН ДИПЛ ОЕЦ
+СТОЈАНОВСКИ ЈОРДАН
+СТОЈАНОВСКИ ЉУБИША
+СТОЈАНОВСКИ ЉУБИЦА
+СТОЈАНОВСКИ ПАВЛЕ
+СТОЈАНОВСКИ ПАВЛЕ
+СТОЈАНОВСКИ САНЕ
+СТОЈАНОВСКИ СЛАВИЦА
+СТОЈАНОВСКИ ТОМО
+СТОЈЕВ СТОИЧКО
+СТОЈИЧИЋ ДЕСАНКА
+СТОЈИЧИЋ ГЛИГОРИЈЕ
+СТОЈИЧИЋ ЈАСМИНА
+СТОЈИЧИЋ ЈАСМИНА
+СТОЈИЧИЋ МИЛИЦА
+СТОЈИЧИЋ РОСА
+СТОЈИЧИЋ СЛАВКО
+СТОЈИЧИЋ ТОДОРА
+СТОЈИШИЋ ЂУРИЦА ДР
+СТОЈИЋ ЂУРЂИНКА
+СТОЈИЋ-АПИЋ СЛАВКА
+СТОЈИЋ БОГОЉУБ
+СТОЈИЋ БОГОЉУБ
+СТОЈИЋ БОГОЉУБ
+СТОЈИЋ БРАНКА
+СТОЈИЋ ДОБРИВОЈ
+СТОЈИЋ ДРАГИЊА
+СТОЈИЋ ДРАГОЉУБ
+СТОЈИЋ ДУШАН
+СТОЈИЋ ГАВРА
+СТОЈИЋ ГОЈКО
+СТОЈИЋ ГРАДИМИР
+СТОЈИЋ ИШТВАН
+СТОЈИЋ ЈУЛИЈАНА
+СТОЈИЋ КАТИЦА
+СТОЈИЋ ЉУБИНКА
+СТОЈИЋ МАРА
+СТОЈИЋ МАРИНКО
+СТОЈИЋ МИЛАН
+СТОЈИЋ МИЛЕНА
+СТОЈИЋ МИЛЕ
+СТОЈИЋ МИЛИЦА
+СТОЈИЋ МИОДРАГ ДР
+СТОЈИЋ МИОМИР
+СТОЈИЋ МИРКО
+СТОЈИЋ МЛАДЕН ДР ЛЕКАР
+СТОЈИЋ НЕДЕЉКО
+СТОЈИЋ НИКОЛА
+СТОЈИЋ СИНИША ДР
+СТОЈИЋ СЛАВКА
+СТОЈИЋ СТАНИСЛАВ
+СТОЈИЋ СВЕТЛАНА
+СТОЈИЋ СВЕТОЗАР
+СТОЈИЋ ТОДОР
+СТОЈИЋ ВАСА
+СТОЈИЋ ВУЧКО
+СТОЈИЋ ВУКАШИН
+СТОЈИЋ ЗОРАН
+СТОЈИЋЕВИЋ СЛОБОДАН
+СТОЈИЦ ЈОНЕЛ
+СТОЈИЉКОВИЋ БОЖИДАР
+СТОЈИЉКОВИЋ БОЖИДАР
+СТОЈИЉКОВИЋ БРАНИМИР ДИПЛ ОЕЦ
+СТОЈИЉКОВИЋ ДАМИР
+СТОЈИЉКОВИЋ ДАРКА
+СТОЈИЉКОВИЋ ГОРАН ДР
+СТОЈИЉКОВИЋ ГОРДАНА
+СТОЈИЉКОВИЋ ЈЕЛИЦА
+СТОЈИЉКОВИЋ ЉУБИША
+СТОЈИЉКОВИЋ ТОМИСЛАВ
+СТОЈИЉКОВИЋ ТОМИСЛАВ
+СТОЈИЉКОВИЋ ВИКТОР
+СТОЈИЛКОВИЋ МИЛЕТИЈЕ
+СТОЈИЛКОВИЋ МИЛЕ
+СТОЈИЛКОВИЋ СТОЈАН
+СТОЈИЛКОВИЋ ВАЛЕРИЈА
+СТОЈИЛОВ РАДОСЛАВ
+СТОЈИЛОВИЋ МИЛАН
+СТОЈИЛОВИЋ МИЛАН
+СТОЈИН ЧЕДОМИР
+СТОЈИН МИЛИВОЈ ДР ПРОФ
+СТОЈИН МИЛИВОЈ
+СТОЈИНОВ ЖИВКО
+СТОЈИНОВ БРАНКО
+СТОЈИНОВ ДУШАН
+СТОЈИНОВ ЈОВАН
+СТОЈИНОВ КАТАРИНА
+СТОЈИНОВ КАТИЦА
+СТОЈИНОВ ЉУБИЦА
+СТОЈИНОВ МИЛЕНКО
+СТОЈИНОВ ЗОРИЦА
+СТОЈИНОВИЋ ГОРАН
+СТОЈИНОВИЋ МАРИЦА
+СТОЈИСАВЉЕВИЋ ДУШАН
+СТОЈИСАВЉЕВИЋ ЈОВАНКА
+СТОЈИСАВЉЕВИЋ МИЛАН
+СТОЈИСАВЉЕВИЋ МИЛЕ
+СТОЈИСАВЉЕВИЋ СЛОБОДАН
+СТОЈИСАВЉЕВИЋ СЛОБОДАН
+СТОЈИСАВЉЕВИЋ ВЕЉКО
+СТОЈКОВ ЖАРКО
+СТОЈКОВ ЖИВОРАД
+СТОЈКОВ АЛЕКСАНДАР
+СТОЈКОВ БОГДАН
+СТОЈКОВ БОРИВОЈ
+СТОЈКОВ БРАНИСЛАВ
+СТОЈКОВ ДИМИТРИЈЕ
+СТОЈКОВ ДРАГИНА
+СТОЈКОВ ИВАН
+СТОЈКОВ ЈЕЛИЦА
+СТОЈКОВ ЈЕЛКА
+СТОЈКОВ ЈОВАН
+СТОЈКОВ ЈУЛКА
+СТОЈКОВ КАТИЦА
+СТОЈКОВ ЉУБИЦА
+СТОЈКОВ МИЛАН
+СТОЈКОВ МИЛАН
+СТОЈКОВ МИЛАН
+СТОЈКОВ МИЛЕНА
+СТОЈКОВ МИЛЕВКА
+СТОЈКОВ МИЛЕ
+СТОЈКОВ МИОДРАГ
+СТОЈКОВ МИОМИР
+СТОЈКОВ МИРОСЛАВ
+СТОЈКОВ МЛАДЕН
+СТОЈКОВ НЕГОВАН
+СТОЈКОВ РАДИВОЈ
+СТОЈКОВ РАДИВОЈ
+СТОЈКОВ СЛОБОДАН
+СТОЈКОВ СТЕВАН
+СТОЈКОВ СТОЈАН
+СТОЈКОВ СТОЈАН
+СТОЈКОВ ТОДОР
+СТОЈКОВ ВЕРИЦА
+СТОЈКОВ ВУКОСАВА
+СТОЈКОВ ЗДРАВКО
+СТОЈКОВИЋ-ШАЛБОТ БОЈАНА
+СТОЈКОВИЋ ЖИВКА
+СТОЈКОВИЋ ЖИВОТА
+СТОЈКОВИЋ ЂОРЂЕ
+СТОЈКОВИЋ ЂОРЂЕ
+СТОЈКОВИЋ АЛЕКСАНДАР
+СТОЈКОВИЋ АЛЕКСАНДАР
+СТОЈКОВИЋ АЛЕКСАНДАР
+СТОЈКОВИЋ АНЂЕЛКА
+СТОЈКОВИЋ АНАНИЈЕ
+СТОЈКОВИЋ АНТОНИЈЕ
+СТОЈКОВИЋ БЛАГОЈЕ
+СТОЈКОВИЋ БОЖИДАР
+СТОЈКОВИЋ БОЖИДАР
+СТОЈКОВИЋ БОРИСЛАВ
+СТОЈКОВИЋ БОРКО
+СТОЈКОВИЋ БРАНИСЛАВ
+СТОЈКОВИЋ ДРАГАН
+СТОЈКОВИЋ ДРАГАН
+СТОЈКОВИЋ ДРАГИЊА
+СТОЈКОВИЋ ДРАГОЉУБ
+СТОЈКОВИЋ ДРАГОЉУБ
+СТОЈКОВИЋ ДУШАНКА
+СТОЈКОВИЋ ДУШАНКА
+СТОЈКОВИЋ ДУШАН
+СТОЈКОВИЋ ДУШАН
+СТОЈКОВИЋ ДУШАН
+СТОЈКОВИЋ ГОРДАНА
+СТОЈКОВИЋ ГОРДАНА
+СТОЈКОВИЋ ГРАДИМИР
+СТОЈКОВИЋ ИЛИЈА
+СТОЈКОВИЋ ИВАН
+СТОЈКОВИЋ ЈЕЛЕНА
+СТОЈКОВИЋ ЈЕЛЕНА
+СТОЈКОВИЋ ЈЕЛЕНА
+СТОЈКОВИЋ-ЈОВАНОВИЋ СЛАВИЦА
+СТОЈКОВИЋ ЈОВАН
+СТОЈКОВИЋ ЈОВАН
+СТОЈКОВИЋ КАТИЦА
+СТОЈКОВИЋ КУЗМАН
+СТОЈКОВИЋ ЛЕНКА
+СТОЈКОВИЋ МАРИЈА
+СТОЈКОВИЋ МИЛАН
+СТОЈКОВИЋ МИЛАН
+СТОЈКОВИЋ МИЛАН
+СТОЈКОВИЋ МИЛЕНКО
+СТОЈКОВИЋ МИЛЕНКО
+СТОЈКОВИЋ МИЛЕНТИЈЕ
+СТОЈКОВИЋ МИЛОШ
+СТОЈКОВИЋ МИЛОВАН
+СТОЈКОВИЋ МИЛТЕН
+СТОЈКОВИЋ МИЛУТИН
+СТОЈКОВИЋ МИОДРАГ
+СТОЈКОВИЋ МИОДРАГ
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРЈАНА
+СТОЈКОВИЋ МИРКО
+СТОЈКОВИЋ МИРОСЛАВ
+СТОЈКОВИЋ МЛАДЕН
+СТОЈКОВИЋ НАДА
+СТОЈКОВИЋ ПАВЛЕ
+СТОЈКОВИЋ ПАВЛЕ
+СТОЈКОВИЋ ПЕТАР
+СТОЈКОВИЋ ПЕТАР
+СТОЈКОВИЋ ПЕТАР
+СТОЈКОВИЋ ПРЕДРАГ ДР
+СТОЈКОВИЋ РАДЕНКО
+СТОЈКОВИЋ РАДИСАВ ДИПЛ ИНГ
+СТОЈКОВИЋ РАДИВОЈЕ
+СТОЈКОВИЋ РАДМИЛА
+СТОЈКОВИЋ РАДМИЛА
+СТОЈКОВИЋ РАДОМИР
+СТОЈКОВИЋ РАДОСЛАВКА
+СТОЈКОВИЋ РАДОСЛАВ
+СТОЈКОВИЋ РАДОВАН ДИПЛ ИНГ
+СТОЈКОВИЋ САЊА
+СТОЈКОВИЋ СЛАВКА
+СТОЈКОВИЋ СЛАВОЉУБ
+СТОЈКОВИЋ СМИЉКА
+СТОЈКОВИЋ СТОЈАДИН
+СТОЈКОВИЋ ТЕОДОР
+СТОЈКОВИЋ ВЕЛИМИР
+СТОЈКОВИЋ ВЕЉКО
+СТОЈКОВИЋ ВЕРОСЛАВ
+СТОЈКОВИЋ ВЛАДИМИР
+СТОЈКОВИЋ ВЛАДИМИР
+СТОЈКОВИЋ ЗАГОРКА
+СТОЈКОВИЋ ЗЛАТИБОР
+СТОЈКОВИЋ ЗОРАН
+СТОЈКОВСКИ ДРАГАН
+СТОЈКОВСКИ ДРАГАН
+СТОЈЛОВИЋ ЂУЛА
+СТОЈМЕНОВИЋ ЖИВКО
+СТОЈМЕНОВИЋ ИВАН
+СТОЈМЕНОВИЋ ЈОВАН
+СТОЈМЕНОВИЋ МАРИЈА
+СТОЈМЕНОВИЋ ВЛАДА
+СТОЈМЕНОВИЋ ВОЈИСЛАВ
+СТОЈНИЋ БОШКО
+СТОЈНИЋ ДРАГАН
+СТОЈНИЋ ДРАГИЦА
+СТОЈНИЋ ДУШАН
+СТОЈНИЋ МИЛИЦА
+СТОЈНИЋ МИРКО
+СТОЈНИЋ ПАВЛЕ
+СТОЈНИЋ РАДОМИР
+СТОЈНИЋ СЛОБОДАН
+СТОЈНОВ ДАМЈАН
+СТОЈОВИЋ РАДОМИР
+СТОЈОВИЋ ТОМАШ
+СТОЈСАВЉЕВИЋ НИКОЛА
+СТОЈСАВЉЕВИЋ ПЕТАР
+СТОЈСАВЉЕВИЋ СТЕВАН
+СТОЈСАВЉЕВИЋ ТИХОМИР
+СТОКАНОВИЋ ЂОРЂЕ
+СТОКАНОВИЋ МИЛОРАД
+СТОКИЋ ЂОРЂЕ
+СТОКИЋ ДРАГОЉУБ
+СТОКИЋ ДУШАН
+СТОКИЋ ЈОВИЦА
+СТОКИЋ МИЛАН
+СТОКИЋ ТОДОР
+СТОКИН АЛЕСАНДАР
+СТОКИН БРАНКО
+СТОКИН МИЛИВОЈ
+СТОКИН СЛОБОДАН
+СТОКИН СТОЈАН
+СТОКУЋА ДАНЕ
+СТОКУЋА МИХАЈЛО
+СТОКУЋА МИЛАН
+СТОКУЋА МИЛАН
+СТОКУЋА МИЛАН
+СТОКУЋА МИРЈАНА
+СТОКУЋА НИКОЛА
+СТОКУЋА ПЕТАР
+СТОЛЕСКИ МИТИЈА
+СТОЛИЋ ЂУРО
+СТОЛИЋ БИСЕРКА
+СТОЛИЋ ДУШАН
+СТОЛИЋ ДУШАН
+СТОЛИЋ ДУШАН
+СТОЛИЋ КАТИЦА
+СТОЛИЋ ЉУБИЦА
+СТОЛИЋ МИРЈАНА
+СТОЛИЋ МИРОСЛАВ
+СТОЛИЋ МИРОСЛАВ
+СТОЛИЋ НЕНАД
+СТОЛИЋ ПЕТАР ДР
+СТОЛИЋ СРЕТА
+СТОЛИЋ СТЕВАН
+СТОПИНШЕК СТАНИСЛАВ
+СТРАЖМЕШТЕР БОЖИДАР
+СТРАЖМЕШТЕР ДУШАН
+СТРАЖМЕШТЕРОВ ДИМИТРИЈЕ
+СТРАЖМЕШТЕРОВ МИЛИЦА
+СТРАЖМЕШТЕРОВ МИРОСЛАВ ДИПЛ ИНГ
+СТРАЖМЕШТЕРОВ САВА
+СТРАЖМЕШТЕРОВ СОФИЈА
+СТРАЖМЕШТЕРОВ СТЕВАН
+СТРАЦЕНСКИ МИРОСЛАВ
+СТРАЦЕНСКИ СТЕВАН
+СТРАГА СТЈЕПАН
+СТРАХИНИЋ КРСТОМИР
+СТРАЈИН БРАНИСЛАВА
+СТРАЈИН ЈЕЛЕНА
+СТРАЈИН НАДА
+СТРАЈИН РАДОВАН
+СТРАЈИН СТОЈАН
+СТРАЈИН ВЕЛИЗАР
+СТРАЈИНИЋ БОЖИДАР
+СТРАЈИНИЋ ИРЕНА
+СТРАЈИНИЋ ЈОВАН
+СТРАЈИНИЋ ЛАЗАР
+СТРАЈИНИЋ МИЛУТИН
+СТРАЈНИЋ БРАНКО
+СТРАЈНИЋ ДУШАН
+СТРАЈНИЋ ГРУЈА
+СТРАЈНИЋ МАРИЈА
+СТРАЈНИЋ МИЛАНКО
+СТРАЈНИЋ МИЛАН
+СТРАЈНИЋ МЛАДЕН
+СТРАЈНИЋ ПАЛ
+СТРАЈНИЋ ТОША
+СТРАНИЋ ЈОВИЦА
+СТРАЊАКОВИЋ ЖИВОЈИН
+СТРАЊАНАЦ МИЛОРАД
+СТРАЊАНАЦ МИРОСЛАВ
+СТРБАЧКИ ФРИДОЛИНА
+СТРБАЧКИ СТЕВАН
+СТРБАД СТЕВАН
+СТРБАТ ТОМИСЛАВ
+СТРЕХОВСКИ ЗУЗАНА
+СТРЕЛЕ РАША
+СТРЕЗОСКИ ЈОВАН
+СТРЕЗОСКИ МИЛЕСА
+СТРЕЗОСКИ НИКОДИНКА
+СТРЕЗОСКИ ВЛАДИМИР
+СТРГАР ПЕТАР
+СТРИЧЕВИЋ ДАРА
+СТРИЧЕВИЋ ДУШАН
+СТРИЧЕВИЋ ЈОСИП
+СТРИЧЕВИЋ ЈУЛКА
+СТРИЧЕВИЋ КСЕНИЈА
+СТРИЧЕВИЋ ЉУБОМИР
+СТРИЧЕВИЋ МЛАДЕН
+СТРИЧЕВИЋ РАДИВОЈ
+СТРИЧЕВИЋ САВКА
+СТРИЧЕВИЋ ВЕЛИМИР
+СТРИЧЕВИЋ ВЛАДИСЛАВА
+СТРИЧКО ВЛАДИМИР
+СТРИБЕР ЕМИЛ
+СТРИБЕР ФРАЊА
+СТРИБЕР ФРАЊА
+СТРИБЕР МИХАЈЛО
+СТРИБЕР СТЕВАН
+СТРИБЕР СТЕВАН
+СТРИЦКИ ИВАН
+СТРИКА ЂОРЂЕ
+СТРИКА БРАНКО
+СТРИКОВИЋ ЋАМИЛ
+СТРИКОВИЋ БЕЛИ
+СТРИКОВИЋ ЈАНОШ
+СТРИКОВИЋ МИЛОСАВ
+СТРИКОВИЋ РАДОСЛАВ
+СТРИКОВИЋ ВЕРА
+СТРИНЕКА КАТИЦА
+СТРИЗОВИЋ ЉИЉАНА
+СТРИЗОВИЋ МАКСИМ
+СТРУГАР ЖАРКО
+СТРУГАР ЖИВОРАД
+СТРУГАР ГОРАН
+СТРУГАР ЈОСИП
+СТРУГАР МИЛУТИН
+СТРУГАР ПАВЛЕ
+СТРУГАР РАДМИЛА
+СТРУГАР СОЊА
+СТРУГАР ВОЈИСЛАВ
+СТРУГАР ЗАРИЈА
+СТРУХАР АНА
+СТРУХАР ЈАРМИЛА
+СТРУХАР ЈОСИП
+СТРУХАР МАГДА
+СТРУХАРИК ЈОСИП
+СТРУХАРИК ЈОСИП
+СТРУХАРИК-ЈУР РАСТИСЛАВ
+СТРУХАРИК ЈУРАЈ ДР
+СТРУХАРИК МАРЈЕНА
+СТРУХАРИК МАТО
+СТРУХАРИК ПАВЛЕ
+СТРУКАН ДОМАГОЈ ДР
+СТРУЊАШ ГОРДАНА
+СТУБЛИНАЦ МИЛОШ
+СТУДЕН ЖИВОРАД
+СТУЛАР ДУШАН
+СТУПАР ЧЕДА
+СТУПАР ЖЕЉКО
+СТУПАР ЖИВКО
+СТУПАР ЂОРЂЕ
+СТУПАР БОГОЉУБ
+СТУПАР БОРО
+СТУПАР БОСИЉКА
+СТУПАР БРАНКО
+СТУПАР БРАНКО
+СТУПАР БРАНКО
+СТУПАР ЦВЕТА
+СТУПАР ДЕСАНКА
+СТУПАР ДРАГАН
+СТУПАР ДРАГО
+СТУПАР ДУШАНКА
+СТУПАР ДУШАН
+СТУПАР ДУШАН
+СТУПАР ДУШАН
+СТУПАР ИЛИЈА
+СТУПАР ЈАЊА
+СТУПАР ЈАНКО
+СТУПАР ЈОВО
+СТУПАР ЉУБИНКА
+СТУПАР МАРКО
+СТУПАР МАРКО
+СТУПАР МИЉА
+СТУПАР МИЛКА
+СТУПАР МИЛОРАД
+СТУПАР МИЛОРАД
+СТУПАР МИРЈАНА
+СТУПАР МИРКО
+СТУПАР НИКОЛА
+СТУПАР ПЕРО
+СТУПАР ПЕТАР
+СТУПАР ПЕТАР
+СТУПАР РАДА
+СТУПАР РАДЕ
+СТУПАР РАЈКО
+СТУПАР РАЈКО
+СТУПАР РАЈКО
+СТУПАР СЛАЂАНА
+СТУПАР ВЛАДИМИР
+СТУПАР ЗДРАВКО
+СТУПАР ЗОРАН
+СТУПАВСКИ АНДРЕЈ
+СТУПАВСКИ ЈАНКО
+СТУПИЋ СЛАВЕНКО
+СТУПИН ИВАН
+СТУПИН ЗВОНИМИР
+СТУРАР ЗДРАВКО
+СТВОРИЋ ПАВЛЕ
+СУЧЕВИЋ ДАНЕ ДИПЛ ПРАВНИК
+СУЧЕВИЋ ДРАГАН
+СУЧЕВИЋ ДУШАН
+СУЧЕВИЋ МАРИЈА
+СУЧЕВИЋ МАРТА
+СУЧЕВИЋ МИРОСЛАВ
+СУЧЕВИЋ НИКОЛА
+СУЧЕВИЋ НИКОЛА
+СУЧЕВИЋ РУЖИЦА
+СУША ДАНИЛО
+СУША МАРКО
+СУША МИЛИЈАНА
+СУШАЦ ВИНКО
+СУШИЋ ГОРДАНА
+СУШИЋ ХИЛДА
+СУШИЋ РАДА
+СУШИЋ ВУЈАНА
+СУЂИ ЈОВАН
+СУЂИ МАРИЈА
+СУЂИ СТАНКО
+СУБАШИЋ БОРИСЛАВ
+СУБАШИЋ ЈУЛКА
+СУБАШИЋ ЛАЗАР
+СУБАШИЋ МАРКО
+СУБАШИЋ МИЛАН
+СУБАШИЋ НИКОЛА
+СУБАШИЋ ПЕРО
+СУБАШИЋ ПЕТАР МР
+СУБАШИЋ РАЈКО
+СУБАШИЋ СИМА
+СУБАШИЋ СТОЈАН
+СУБАЈКОВ РАДОЈКА
+СУБАКОВ КОВИЉКА
+СУБАКОВ СМИЉКА
+СУБАКОВ СОФИЈА
+СУБАНОВИЋ МИЛАН
+СУБИЋ ЖАРКО
+СУБИЋ ЂОРЂЕ
+СУБИЋ АЛЕКСАНДАР
+СУБИЋ АНЂЕЛКА
+СУБИЋ БОЖЕНА
+СУБИЋ БОЖИДАР
+СУБИЋ БРАНИСЛАВ
+СУБИЋ ДАМИР
+СУБИЋ ДАРА
+СУБИЋ ДИМИТРИЈЕ
+СУБИЋ ДУШАН
+СУБИЋ ГОРДАНА
+СУБИЋ ЈОВАН
+СУБИЋ КОСТА
+СУБИЋ ЛАЗАР
+СУБИЋ ЛАЗАР
+СУБИЋ ЛАЗАР
+СУБИЋ ЉУБИЦА
+СУБИЋ ЉУБОМИР
+СУБИЋ ЉУБОМИР
+СУБИЋ ЉУБОМИР
+СУБИЋ МАРИЈА
+СУБИЋ МАРКО
+СУБИЋ МАРКО
+СУБИЋ МИЛАН
+СУБИЋ МИРОСЛАВА
+СУБИЋ МЛАДЕН
+СУБИЋ НАДА
+СУБИЋ НЕДЕЉКА
+СУБИЋ НЕДЕЉКО
+СУБИЋ НОВАК
+СУБИЋ ОЛГА
+СУБИЋ ПАЈА
+СУБИЋ РАДИВОЈ
+СУБИЋ РАДОСЛАВ
+СУБИЋ СМИЉА
+СУБИЋ СНЕЖАНА
+СУБИЋ СТЕВАН
+СУБИЋ ЗОРАН
+СУБОТИЧКИ БРАНИСЛАВ
+СУБОТИЧКИ ГОРИЦА
+СУБОТИЧКИ КАТИЦА
+СУБОТИЧКИ ЛУКА
+СУБОТИЧКИ МИРЈАНА
+СУБОТИЧКИ МИРКО
+СУБОТИЧКИ НАДА
+СУБОТИЧКИ НЕСТОР ДИПЛ ИНГ
+СУБОТИЧКИ РАДОВАН
+СУБОТИЧКИ САВА
+СУБОТИЧКИ СЛОБОДАН
+СУБОТИЧКИ СОФИЈА
+СУБОТИЧКИ СВЕТИСЛАВ
+СУБОТИЧКИ ВАСА
+СУБОТИЧКИ ВЕРА
+СУБОТИЧКИ ВЛАДИМИР
+СУБОТИЧКИ ЗОРАН
+СУБОТИЋ ЖАРКО
+СУБОТИЋ ЂОРЂЕ
+СУБОТИЋ ЂУРО
+СУБОТИЋ АЛЕКСАНДАР
+СУБОТИЋ БРАНИСЛАВ ДР
+СУБОТИЋ ДРАГУТИН
+СУБОТИЋ ДУШАН
+СУБОТИЋ ДУШАН
+СУБОТИЋ ЉИЉАНА
+СУБОТИЋ ЉУБИЦА
+СУБОТИЋ МАЦА
+СУБОТИЋ МАРКО
+СУБОТИЋ МИЛИВОЈ
+СУБОТИЋ МИЛОШ
+СУБОТИЋ МИЛОРАД
+СУБОТИЋ МИОДРАГ ДИПЛ ИНГ
+СУБОТИЋ НЕНАД
+СУБОТИЋ РАДИВОЈ
+СУБОТИЋ РАДОШ
+СУБОТИЋ РАЈКО
+СУБОТИЋ РАЈКО
+СУБОТИЋ РУЖА
+СУБОТИЋ РУЖА
+СУБОТИЋ САВА
+СУБОТИЋ СЛОБОДАН
+СУБОТИЋ СТАНА
+СУБОТИЋ СВЕТОЗАР
+СУБОТИЋ СВЕТОЗАР
+СУБОТИЋ ТОМИСЛАВ
+СУБОТИЋ ВЕРА
+СУБОТИЋ ВЛАДАНА
+СУБОТИН ЖИВКО
+СУБОТИН ЖИВКО
+СУБОТИН ЂОРЂЕ
+СУБОТИН ЂОРЂЕ
+СУБОТИН ЂУРА
+СУБОТИН БОГДАН
+СУБОТИН БОГДАН
+СУБОТИН ДАНИЦА
+СУБОТИН ДИМИТРИЈЕ
+СУБОТИН ДРАГАН
+СУБОТИН ДРАГИЊА
+СУБОТИН ДУШАНКА
+СУБОТИН ИРИНА
+СУБОТИН ИВАН
+СУБОТИН ЈЕЛЕНА
+СУБОТИН ЈЕЛИЦА
+СУБОТИН ЉИЉАНА
+СУБОТИН ЉУБИНКА
+СУБОТИН МАРКО
+СУБОТИН МАРКО
+СУБОТИН МАРКО
+СУБОТИН МИЛАН
+СУБОТИН МИЛАН
+СУБОТИН МИЛАН
+СУБОТИН МИЛОРАД
+СУБОТИН НЕВЕНКА
+СУБОТИН ПАВЛЕ
+СУБОТИН ПЕТАР
+СУБОТИН ПРЕДРАГ
+СУБОТИН РАДОСЛАВ
+СУБОТИН РАДОВАН
+СУБОТИН САША
+СУБОТИН САВА
+СУБОТИН САВА
+СУБОТИН САВА
+СУБОТИН СЛОБОДАН
+СУБОТИН СМИЉА
+СУБОТИН СТАНКА
+СУБОТИН СТЕВАН
+СУБОТИН СТЕВАН
+СУБОТИН СВЕТОЗАР
+СУБОТИН СВЕТОЗАР
+СУБОТИН СВЕТОЗАР
+СУБОТИН ЗОРА
+СУБУ ЂОРЂЕ
+СУЏУКОВИЋ НИКОЛА
+СУЏУМ БОШКО
+СУЏУМ БОГДАН
+СУЏУМ ИЛИЈА
+СУДАК ВЛАДИМИР
+СУДАР ДУШАН
+СУДАР ДУШАН
+СУДАР ГАЈА
+СУДАР ВОЈИН
+СУДАРЕВИЋ БОШКО
+СУДАРОВ БРАТИСЛАВ
+СУДАРСКИ ДУШАН
+СУДИМАЦ ДРАГО
+СУДИМАЦ МИЛАН
+СУХАНЕК АДАМ
+СУХАНСКИ СТЕВАН
+СУХОВСКИ ЈАНО
+СУИЋ БРАНКО
+СУИЋ НЕНАД
+СУЈЕР МИХАЈЛО
+СУЈИЋ ЈЕЛЕНА
+СУЈИЋ МИЛАН
+СУЈИЋ СОФИЈА
+СУЈИЋ ВОЈИН
+СУЈИЋ ЗДЕНКА
+СУКАЧ МИХАЈЛО
+СУКЊАЈА ДАНИЛО
+СУКНОВИЋ МИРКО
+СУКНОВИЋ РАДИВОЈЕ
+СУКНОВИЋ СЛАВКО
+СУКОЛА АНТАЛ
+СУКОЛА СУЗАНА
+СУКУП МАРГИТА
+СУЛЕЈМАНОВ НАФИЈА
+СУЛИЋ МАРИЦА
+СУЛИЋ ТОМИСЛАВ
+СУЉА РАМАДАН
+СУЉАГИЋ РЕФИК
+СУЛОЦКИ ЈОШКА
+СУЛОМАР АГНЕЗА
+СУЛОМАР ЕРЖЕБЕТ
+СУЛОМАР ИЛОНА
+СУЛОМАР ЈАНОШ
+СУЛОМАР МАГДА
+СУМАН МИЛЕ
+СУМАРОВ ЈЕЛИСАВЕТА
+СУМИНА ДАНИЦА
+СУМИЊА МИША
+СУНАЈКО ЂУРО
+СУНАЈКО ДУШАН
+СУНДАЋ ЂУРА
+СУНДАЋ ТОДОР
+СУНИЋ МИРЈАНА
+СУНКА ЉУБИЦА
+СУНТОК АНИЦА
+СУНЗЕР ВЛАДИМИР
+СУПИЋ БОРИША
+СУПИЋ ДАРИНКА
+СУПИЋ МИЛАН
+СУПИЋ ОЛГА
+СУРЋА ЈОСИП
+СУРЋА ТРАЈАН
+СУРА МАРГИТА
+СУРДУЧАН ДИМИТРИЈЕ
+СУРДУЧКИ ЖИВКО
+СУРДУЧКИ ДРАГАН
+СУРДУЧКИ ИЛИЈА
+СУРДУЧКИ ИЛИЈА
+СУРДУЧКИ ИСИДОР
+СУРДУЧКИ МАРА
+СУРДУЧКИ МИЛАН
+СУРДУЧКИ МИЛОШ
+СУРДУЧКИ МИЛОШ
+СУРДУЧКИ МИРЈАНА
+СУРДУЧКИ НЕБОЈША
+СУРДУЧКИ ПАНТЕЛИЈА
+СУРДУЧКИ ПЕРСА
+СУРДУЧКИ СИНИША
+СУРДУЧКИ СТАНКА
+СУРДУЧКИ СТЕВАН
+СУРЛА БОЖО
+СУРЛА ДУШАН
+СУРЛА ЛУКА
+СУРЛА ПЕТАР
+СУРЛА ПЕТАР
+СУРЛА САВА
+СУРЛА ЗОРАН
+СУРЛИЋ МИЛЕНКО
+СУРОВИ АНТОН
+СУРОВИ ЈОЛАНКА
+СУРОВИ МИХАЛ
+СУРОВИ МИРОСЛАВ
+СУРОВИ СТЕВАН
+СУРОВИ ВЛАДИМИР
+СУСЕДСКИ ОСКАР
+СУТАРИЋ ВЕРА
+СУТРИН БОРИС
+СУТУРОВИЋ ЈАГА
+СУТУРОВИЋ МАРИЈА
+СУТУРОВИЋ НЕСТО
+СУТУРОВИЋ ЗВОНИМИР
+СУВАЧАР ИЛИНКА
+СУВАЧАР ТОДОР
+СУВАЧАР ВЕРА
+СУВАЧАРЕВ БОРИСЛАВА
+СУВАЧАРЕВ ЈОВАН
+СУВАЧАРЕВ МАРИЈА
+СУВАЧАРЕВ МИЛЕНКО
+СУВАЧАРЕВ МОМИР
+СУВАЧАРЕВ ОБРАД
+СУВАЧАРЕВ ПАЈА
+СУВАЧАРЕВ РАДЕНКО
+СУВАЈЧЕВИЋ СВЕТИСЛАВ
+СУВАЈАЦ ЖЕЉКО
+СУВАЈАЦ ВАСИЛИЈЕ
+СУВАЈЏИЋ ЖИВКО
+СУВАЈЏИЋ ЂОРЂЕ
+СУВАЈЏИЋ ЂОРЂЕ
+СУВАЈЏИЋ ДИМИТРИЈЕ
+СУВАЈЏИЋ ГОЈКО
+СУВАЈЏИЋ ИЛИЈА
+СУВАЈЏИЋ ИСА
+СУВАЈЏИЋ ЈОВАН
+СУВАЈЏИЋ ЉИЉАНА
+СУВАЈЏИЋ МАРИЈА
+СУВАЈЏИЋ МАРИНКО
+СУВАЈЏИЋ МИЛКА
+СУВАЈЏИЋ НЕНАД
+СУВАЈЏИЋ НЕНАД
+СУВАЈЏИЋ ОБРАД
+СУВАЈЏИЋ ОЛГИЦА
+СУВАЈЏИЋ ПЕТАР
+СУВАЈЏИЋ РАДМИЛА
+СУВАЈЏИЋ ВАСА
+СУВАЈЏИЋ ВАСА
+СУВАЈЏИН ЈОВАН
+СУВАЈЏИН ЈОВАН
+СУВАЈЏИН МЛАДЕН
+СУВАЈЏИН НИКОЛА
+СУЗИЋ МАРА
+СУЗИЋ МИРКО
+СУЗИЋ НИКОЛА
+СУЗИЋ СОФИЈА
+СВАЛИНА КАТА
+СВЕЋЊАК БРАНКО
+СВЕТИЋ ИВАН ДР
+СВЕТИЋ ИВАН
+СВЕТИЋ ЉЕРКА
+СВЕТЛИК АДАМ
+СВИЛАКОС МАРИЈА
+СВИЛАР АНЂЕЛКА
+СВИЛАР БРАНИСЛАВ
+СВИЛАР ГОЈКО
+СВИЛАР ЉУБОМИР
+СВИЛАР МИХАЈЛО
+СВИЛАР МИХАЈЛО
+СВИЛАР НИКОЛА
+СВИЛАР ПЕТАР
+СВИЛАР РАДОМИР
+СВИЛАР РАТКО
+СВИЛАР СЛАВИЦА
+СВИЛАР СОФИЈА
+СВИЛАР ВЕРИЦА
+СВИЛАР ВИНКА
+СВИЛАРЕВИЋ СТЕВО
+СВИЛАРКОВИЋ СТАНИМИР ДИПЛ ИНГ
+СВИЛАРОВ МИЛАН
+СВИЛОКОС БОРИСЛАВ
+СВИЛОКОС ГАВРА
+СВИЛОКОС КАТИЦА
+СВИЛОКОС МИЛАН
+СВИЛОКОС СТЕВАН
+СВИЊАРЕВИЋ СЛАВКО
+СВИРЧЕВ ЖИВКО
+СВИРЧЕВ ЈОВАН
+СВИРЧЕВ МИЛИВОЈ
+СВИРЧЕВ МИЛОШ
+СВИРЧЕВ РАДА
+СВИРЧЕВИЋ АЛЕКСАНДАР ДР ДОЦЕНТ
+СВИРЧЕВИЋ АНА
+СВИРЧЕВИЋ БОРИСЛАВ
+СВИРЧЕВИЋ ДРАГАН
+СВИРЧЕВИЋ ДРАГА
+СВИРЧЕВИЋ ДРЕНКА
+СВИРЧЕВИЋ ЈОВАН
+СВИРЧЕВИЋ ЈОВАН
+СВИРЧЕВИЋ ЉУБОМИР
+СВИРЧЕВИЋ МИЛИВОЈ
+СВИРЧЕВИЋ МИЛОРАД
+СВИРЧЕВИЋ МИРЈАНА
+СВИРЧЕВИЋ ПЕТАР
+СВИРЧЕВИЋ РАДОВАН
+СВИРЧЕВИЋ СЛАВКО
+СВИРЧЕВИЋ СТЕВАН
+СВИРЧЕВИЋ ТЕОДОРА
+СВИРЧЕВИЋ-ТРАЈКОВИЋ ЉУБИЦА
+СВИРЧЕВИЋ ВАСА
+СВИРЧЕВИЋ ВУКАН
+СВИРАЦ РУЖИЦА
+СВИТИЋ БОЖО
+СВИТЛИЦА ДРАГАН
+СВИТЛИЦА ДУШАН
+СВИТЛИЦА ГОЈКО ДИПЛ ОЕЦ
+СВИТЛИЦА ЈЕЛИЦА
+СВИТЛИЦА МИЛАН
+СВИТЛИЦА РУЖИЦА
+СВИТЛИЦА СИМО
+СВИТЛИЦА СТАНКО
+СВИТЛИЦА ТАНАСИЈЕ ДИПЛ ОЕЦ
+СВИТЛИЦА ВЕРА
+СВОБОДА СТЕВАН
+СВОРЦАН БРАНИСЛАВ
+СВОРЦАН ЉУБОМИР
+СВОРЦАН МИЛОШ
+СВОРЦАН МИЛОРАД
+СВОРЦАН МИЛОРАД
+СВОРЦАН РАДИСЛАВ
+СВОРЦАН РАДОМИР
+СВОРЦАН СТЕВАН
+СВОРЦАН СТОЈАН
+СВОРЦАН ЗОРИЦА
+СВРДЛАН МЛАЂАН
+СВРКОТА ЖИВКО
+СВРКОТА ВУКОМАН
+СВРЗИЋ ГОРДАНА
+ТАЧИ ИСМАИЉ
+ТАЧИ ТЕОФИЛ
+ТАШ КАРОЉ
+ТАШЕВСКИ МИЛКА
+ТАШЕВСКИ СОФИЈА
+ТАШИ ЉУБИЦА
+ТАШИ ПЕТАР
+ТАШИ РОЗАЛИЈА
+ТАШИ СТЕВАН
+ТАШИ ЗОЛТАН
+ТАШИЋ МИЛИВОЈ
+ТАШИЋ ВЕРА
+ТАШНАДИ МИХАЉ
+ТАБШ НАДА
+ТАБШ НОХАДЕДИН
+ТАБАЧКИ ВЛАДИМИР
+ТАБАЧКИ ЗОРИЦА
+ТАБАК ДРАГАН
+ТАБАК ИВАН
+ТАБАК ВАСА
+ТАБАК ВОЈИСЛАВ
+ТАБАКОВ ДРАГОМИР
+ТАБАКОВ МИЛЕНКО
+ТАБАКОВ МЛАДЕН
+ТАБАКОВИЋ ЂОРЂЕ ДИПЛ ИНГ
+ТАБАКОВИЋ ДУШАН
+ТАБАКОВИЋ ИСМЕТ
+ТАБАКОВИЋ МИРКО
+ТАБОРИ ЂОРЂЕ ДР ЛЕКАР
+ТАЦОВИЋ ВЕРА
+ТАДИЋ ЖИВАН
+ТАДИЋ ЂОРЂЕ
+ТАДИЋ ЂОРЂЕ
+ТАДИЋ АЛЕКСАНДАР
+ТАДИЋ АНА
+ТАДИЋ АРСЕНИЈЕ
+ТАДИЋ БОСИЉКА
+ТАДИЋ ДАНИЛО
+ТАДИЋ ДРАГАН
+ТАДИЋ ДРАГА
+ТАДИЋ ДУШАН
+ТАДИЋ ДУШАН
+ТАДИЋ ДУШАН
+ТАДИЋ ЕДИТА
+ТАДИЋ ГОРАН
+ТАДИЋ ИЛИЈА
+ТАДИЋ ИЛИЈА
+ТАДИЋ ИВАН
+ТАДИЋ ЈОВИЦА
+ТАДИЋ КРАСИМИР
+ТАДИЋ ЛАЗАР
+ТАДИЋ ЛАЗАР
+ТАДИЋ МАРИЈА
+ТАДИЋ МАРИНКО
+ТАДИЋ МАРИНКО
+ТАДИЋ МИЈО
+ТАДИЋ МИЛОШ ДИПЛ ИНГ
+ТАДИЋ МИЛОШ
+ТАДИЋ МИЛОЈЕ
+ТАДИЋ МИЛОСАВ
+ТАДИЋ МИРКО
+ТАДИЋ МИРКО
+ТАДИЋ МИРКО
+ТАДИЋ НАДА
+ТАДИЋ НЕВЕНКА
+ТАДИЋ ОБРЕН
+ТАДИЋ ПЕТАР
+ТАДИЋ РАДОЈЕ
+ТАДИЋ РАТКО
+ТАДИЋ САША
+ТАДИЋ САВА
+ТАДИЋ СЛОБОДАН
+ТАДИЋ СОФИЈА
+ТАДИЋ СПАСОЈЕ
+ТАДИЋ СТОЈАН
+ТАДИЋ ТАНКОСАВА
+ТАДИЋ УРОШ
+ТАДИЋ ВЕСЕЛИН
+ТАДИЋ ЗОРАН
+ТАДИЋ ЗОРА
+ТАДИЋ ЗОРКА
+ТАДИЈАНОВИЋ СИЛВЕСТЕР
+ТАДИЈИН ГЛИША
+ТАДИЈИН МИЛИЦА
+ТАДИЈИН МИЛОШ
+ТАДИЈИН МИЛОРАД
+ТАДИН ДУШАНКА
+ТАДИН ДУШАН
+ТАДИН ИВАНКА
+ТАДИН МИЛОВАН
+ТАДИН ЗЛАТОЈЕ
+ТАХИРОВИЋ ЕВИЦА
+ТАХИРОВИЋ МАРИЈА
+ТАХИРОВИЋ МИЛАДИНКА
+ТАИРОВИЋ АЛЕКСАНДАР
+ТАЈХМАН БЕЛА
+ТАЈХМАН ДЕСАНКА
+ТАЈХМАН ЈОСИП
+ТАЈКОВ АНЂЕЛКА
+ТАЈКОВ ЈОВАН
+ТАЈКОВ МИРЈАНА
+ТАЈКОВ РАДОЈКА
+ТАЈКОВИЋ МИЛИЦА
+ТАЈТИ ВЕРОНИКА
+ТАКАЧ ШАНДОР
+ТАКАЧ ЂЕРЂИ
+ТАКАЧ ЂОРЂЕ
+ТАКАЧ ЂУЛА
+ТАКАЧ ЂУРА
+ТАКАЧ ЂУРА
+ТАКАЧ АНЂЕЛКА
+ТАКАЧ АНДРИЈА
+ТАКАЧ АНТАЛ
+ТАКАЧ АНТАЛ
+ТАКАЧ АНТУН
+ТАКАЧ АНТУН
+ТАКАЧ АРПАД
+ТАКАЧ ЕРНЕ
+ТАКАЧ ЕВГЕН
+ТАКАЧ ФЕРЕНЦ
+ТАКАЧ ФРАЊА
+ТАКАЧ ИШТВАН
+ТАКАЧ ИШТВАН
+ТАКАЧ ЈАКИМ
+ТАКАЧ ЈАНОШ
+ТАКАЧ ЈАНОШ
+ТАКАЧ ЈАНОШ
+ТАКАЧ ЈОЖЕФ ДИПЛ ИНГ
+ТАКАЧ ЈОЖЕФ
+ТАКАЧ ЈОЖЕФ
+ТАКАЧ ЈОСИП
+ТАКАЧ КАРОЉ
+ТАКАЧ КАТИЦА
+ТАКАЧ КАТИЦА
+ТАКАЧ ЛАДИСЛАВ
+ТАКАЧ ЛАЈОШ
+ТАКАЧ ЛАСЛО
+ТАКАЧ МАГДА
+ТАКАЧ МАТА
+ТАКАЧ МИХАЈЛО
+ТАКАЧ МИЛАН
+ТАКАЧ МИРКО
+ТАКАЧ РОЖА
+ТАКАЧ СЕНА
+ТАКАЧ СОФИЈА
+ТАКАЧ СОФИЈА
+ТАКАЧ СТЕВАН
+ТАКАЧ ТИБОР
+ТАКАЧ ТИБОР
+ТАКАЧ ВИНКО
+ТАКАЧ ВЛАДИМИР
+ТАКАЧ ВЛАДИМИР
+ТАКАЧ ЗОЛТАН
+ТАКАЧИ АРПАД ДИПЛ ОЕЦ
+ТАКАЧИ АРПАД ДР
+ТАКАЧИ ГАБОР
+ТАКО ЗВОНИМИР
+ТАКОВАЦ РАДИСАВ
+ТАКОВСКИ БЛАГОЈЕ
+ТАКОВСКИ ЈОВАНКА
+ТАЛЕСКИ ЉУБИЦА
+ТАЛЕСКИ РИСТА
+ТАЛИЋ ДРАГАН
+ТАЛИЋ МИТАР
+ТАЛИЈАН РОЖА
+ТАЛО ШАНДОР
+ТАЛО ЖИВКА
+ТАЛО АЛЕКСАНДАР
+ТАЛО БРИГИТА
+ТАЛО ФРАЊА
+ТАЛО ЈЕЛЕНА
+ТАЛО ЈЕЛИСАВЕТА
+ТАЛО ЈОЖЕФ
+ТАЛО ЈОСИП
+ТАЛО ЈОВАН
+ТАЛО ТЕРЕЗА
+ТАЛОШИ ЂОРЂЕ
+ТАЛОШИ ИРЕНА
+ТАЛОШИ КАРОЉ
+ТАЛОВИЋ БЕХУДИН
+ТАЛОВИЋ ХАЈРИЈА
+ТАЛОВИЋ САДИК
+ТАМАШ ЂЕРЂ
+ТАМАШ ЂУРА
+ТАМАШ ИРИНЕЈ
+ТАМАШ-ЈОШАНОВ АЛЕКСАНДРА
+ТАМАШ ЉУБОМИР
+ТАМАШ МАРИЈА
+ТАМАШ МИХАЈЛО
+ТАМАШ ПАВЛЕ
+ТАМАШ ВЛАДИМИР
+ТАМАШ ВЛАДИМИР
+ТАМАШИ АГОШТОН
+ТАМАШИ АЛАДАР
+ТАМАШИ ТИБОР
+ТАМАШКОВИЋ ЗОЛТАН
+ТАМБУРАШЕВ ВУКАШИН
+ТАМБУРКОВСКИ ДРАГАН
+ТАМИНЏИЋ ЧЕДОМИР
+ТАМИНЏИЋ АНЂЕЛКО
+ТАМИНЏИЋ КОВИНКА
+ТАМИНЏИЋ РИСТА
+ТАМИНЏИЈА ДАНИЛО
+ТАМИНЏИЈА МИЛОРАД
+ТАМИНЏИЈА МИРКО
+ТАМИНЏИЈА ВЛАДО
+ТАНЧИК ШАНДОР
+ТАНЧИК АЛБЕРТ
+ТАНЧИК АЛЕКСАНДАР
+ТАНЧИК ЕМИЛ
+ТАНЧИК ИБОЉА
+ТАНЧИК РОЗА
+ТАНАЦКОВ НОВАК
+ТАНАЦКОВИЋ АЦО
+ТАНАЦКОВИЋ МИХАЈЛО
+ТАНАСИЋ ЈОВАН
+ТАНАСИЋ ОЛИВЕРА
+ТАНАСИЋ ПРЕДРАГ
+ТАНАСИЋ РУЖА
+ТАНАСИЋ СПАСОЈЕ
+ТАНАСИЋ ВАЛЕРИЈА
+ТАНАСИЋ ВАЛЕРИЈА
+ТАНАСИЈЕВИЋ ЖАРКО
+ТАНАСИЈЕВИЋ-ФИЛИПОВ ИВАНКА
+ТАНАСИЈЕВИЋ МИЛАН
+ТАНАСИЈЕВИЋ СИНИША
+ТАНАСИЈИН ЛУКА
+ТАНАСИЈИН ПЕТАР
+ТАНАСИЈИН ВЕРА
+ТАНАСИН ДАНИСЛАВА
+ТАНАСИН ЈОВАН
+ТАНАСИН ЉУБИЦА
+ТАНАСИН НЕСТОР
+ТАНАСИН СТЕВАН
+ТАНАСИН СТЕВАН
+ТАНАСИН СТЕВАН
+ТАНАСИН СТЕВАН
+ТАНАСКОВИЋ ДРАГАН
+ТАНАСКОВИЋ ДРАГОМИР
+ТАНАСКОВИЋ ГИНА
+ТАНАСКОВИЋ ГОРДАНА
+ТАНАСКОВИЋ ГОСПАВА
+ТАНАСКОВИЋ ЛАЗАР
+ТАНАСКОВИЋ МИЛЕ
+ТАНАСКОВИЋ НОВАК
+ТАНАСКОВИЋ СТАНИСЛАВ
+ТАНАСКОВИЋ ВИТКО
+ТАНАСКОВИЋ ВИТОМИР
+ТАНАСКОВИЋ ВУКАН
+ТАНДИ ЈУЛИЈАНА
+ТАНЕВ ТРАЈКО
+ТАНГЛ ИВАН
+ТАНГЛ ОЛГА
+ТАЊЕВИЋ ДРАГОЉУБ
+ТАЊЕВИЋ ЉУБОМИР
+ТАЊГА ГОРАН
+ТАЊГА ЉУБОМИР
+ТАЊГА МАРИЈА
+ТАЊГА РАЈКО
+ТАЊГА ТАНЕ
+ТАНКА ИШТВАН
+ТАНКОСИЋ БОГДАН
+ТАНКОСИЋ БОЈАНА
+ТАНКОСИЋ БРАНКО
+ТАНКОСИЋ ЈОВАН
+ТАНКОСИЋ КУЗМАН
+ТАНКОСИЋ МАРКО
+ТАНКОСИЋ МИХАЈЛО
+ТАНКОСИЋ МИЛАН
+ТАНКОСИЋ МИЛЕНА
+ТАНКОСИЋ МИЛИЦА
+ТАНКОСИЋ МИЛИЦА
+ТАНКОСИЋ НИКОЛА
+ТАНКОСИЋ РАЗИЈА
+ТАНКОСИЋ СТЕВАН
+ТАНКОВИЋ САЛКО
+ТАНОВИЋ ГАВРИЛО МР
+ТАНОВИЋ ЈОВО
+ТАНОВИЋ ВЛАДИМИР
+ТАНТИЋ СЛАВКО
+ТАНУРЏИЋ ЖИВОЈИН
+ТАНУРЏИЋ АЛЕКСАНДАР
+ТАНУРЏИЋ ДАРИНКА
+ТАНУРЏИЋ ГОЈКО
+ТАНУРЏИЋ ЈОВАН
+ТАНУРЏИЋ МИЛИЦА
+ТАНУРЏИЋ МИРКО
+ТАНУРЏИЋ СРБОМИР
+ТАНУРЏИЋ СТАНИСЛАВА
+ТАНУРЏИЋ СВЕТОЗАР
+ТАНУРЏИЋ ЗОРА
+ТАПАИ РУДОЛФ
+ТАПАЈ ГАБРИЈЕЛ
+ТАПАЈ СТАМЕНКА
+ТАПАЛАГА ЈОН
+ТАПАЛАГА ТОДОР
+ТАПАВИЧКИ ЧЕДОМИР
+ТАПАВИЧКИ БОРИВОЈ
+ТАПАВИЧКИ ФЕОДОР
+ТАПАВИЧКИ МЛАДЕН
+ТАПАВИЧКИ РАДОВАН
+ТАПАВИЧКИ СТЕВАН
+ТАПАВИЦА ЧЕДОМИР
+ТАПАВИЦА АЛЕКСАНДРА
+ТАПАВИЦА АЛЕКСАНДРА
+ТАПАВИЦА БОРКА
+ТАПАВИЦА БРАНКА
+ТАПАВИЦА ДОБРИЛА
+ТАПАВИЦА ЈЕЛИЦА
+ТАПАВИЦА ЉУБОМИР
+ТАПАВИЦА МИЛОРАД
+ТАПАВИЦА МИТА
+ТАПАВИЦА РАДОСЛАВА
+ТАПАВИЦА РАЈКО
+ТАПАВИЦА СИМА
+ТАПАВИЦА СТЕВАН
+ТАПАВИЦА ТИХОМИР
+ТАПАВИЦА ВЕРИЦА
+ТАПАВИЦА ВЕРИЦА
+ТАРАКЧИЈА ЂОРЂЕ
+ТАРАКЧИЈА-МИЛОВАНОВИЋ РАТКА
+ТАРАНЏА ИВАН
+ТАРАНЏА ИВАН
+ТАРАСЕНКО БРАТИСЛАВ ДР
+ТАРБУК МИРКО
+ТАРБУК НИКОЛА
+ТАРЕВСКИ ЋАМИЛ
+ТАРГУШ МАТИЈА
+ТАРИ ИЛОНА
+ТАРЈАН ДЕЖЕ
+ТАРЈАН ГАБОР
+ТАРЈАН ИМРЕ
+ТАРЈАН КАРЛО
+ТАРЈАН ТИБОР
+ТАРКО ЈАНОШ
+ТАРЛАЋ ПЕРИЦА
+ТАРЛЕ ИЛИЈА
+ТАРЛЕ ИВАН
+ТАРНОЦКИ АМАЛИЈА ДР
+ТАРНОЦКИ ПАЛ
+ТАСЕВ БЛАЖО
+ТАСЕВСКИ ИЛО
+ТАСЕВСКИ ЈОРДАН
+ТАСИЋ ЖАКЛИНА
+ТАСИЋ ЖИВОЈИН
+ТАСИЋ ЂОРЂЕ
+ТАСИЋ АНЂЕЛИЈА
+ТАСИЋ АНА
+ТАСИЋ БЛАГОЈЕ ДИПЛ ПРАВНИК
+ТАСИЋ БЛАГОЈЕ
+ТАСИЋ БОЖИДАР МР ПХ
+ТАСИЋ БОРИСЛАВ
+ТАСИЋ БОРИВОЈЕ
+ТАСИЋ БОРИВОЈЕ
+ТАСИЋ ДЕСАНКА
+ТАСИЋ ДОБРИВОЈ
+ТАСИЋ ИВАН
+ТАСИЋ ЉУБОДРАГ ДИПЛ ИНГ
+ТАСИЋ МИЛОШ ДР ЛЕКАР
+ТАСИЋ МИЛОШ ДР
+ТАСИЋ МИЛОШ ДР
+ТАСИЋ МИЛОШ
+ТАСИЋ МИРОСЛАВ
+ТАСИЋ МИРОСЛАВ
+ТАСИЋ НЕВЕНКА
+ТАСИЋ РАДЕ
+ТАСИЋ СИНИША
+ТАСИЋ СЛОБОДАН
+ТАСИЋ ТРИФУН
+ТАСИЋ УРОШ
+ТАСИЋ ВЕРА
+ТАСИЋ ВЛАДАНКА
+ТАСИЋ ЗОРАН
+ТАСКОВИЋ ДУШАН
+ТАСКОВИЋ МИРОСЛАВ
+ТАСКОВИЋ ПЕРА
+ТАСОВАЦ ДОБРИЛА
+ТАСОВАЦ МИЛОРАД
+ТАТАИ ЕМИЛИЈА
+ТАТАИ ИВАН
+ТАТАИ КАРОЉ
+ТАТАИ МАРГИТ
+ТАТАИ ТИБОР
+ТАТАЛОВИЋ ЖИВКО
+ТАТАЛОВИЋ БРАНИМИР
+ТАТАЛОВИЋ ДРАГАН
+ТАТАЛОВИЋ ИЛИЈА
+ТАТАЛОВИЋ ИЛИЈА
+ТАТАЛОВИЋ ЛАЗО
+ТАТАЛОВИЋ МИЛАН
+ТАТАЛОВИЋ МИЛАН
+ТАТАЛОВИЋ ПЕТАР
+ТАТАЛОВИЋ ПЕТАР
+ТАТАЛОВИЋ ПЕТАР
+ТАТАР ДУШАН
+ТАТАР ДУШАН
+ТАТАРЕВИЋ БЛАЖА
+ТАТАРИН РУЖИЦА
+ТАТАРСКИ ДУШАН
+ТАТАРСКИ МИЛОРАД
+ТАТАРСКИ НАДА
+ТАТАРСКИ СВЕТИСЛАВ
+ТАТАРСКИ ВЛАДЕТА
+ТАТИЋ ЖАРКО
+ТАТИЋ ЂУРЂИНКА
+ТАТИЋ АЛЕКСАНДАР
+ТАТИЋ АЛЕКСАНДАР
+ТАТИЋ АНКИЦА
+ТАТИЋ БРАНКО
+ТАТИЋ ДАНА
+ТАТИЋ ДРАГАН
+ТАТИЋ ДРАГОШ
+ТАТИЋ ДРАГОЉУБ
+ТАТИЋ ДРАГОМИР
+ТАТИЋ ДУШАН
+ТАТИЋ ЕМИЛ ДР
+ТАТИЋ ЕВИЦА
+ТАТИЋ ИЛИЈА
+ТАТИЋ ИЛИЈА
+ТАТИЋ ИЛОНКА
+ТАТИЋ ЈЕЛЕНА
+ТАТИЋ ЈОВАН ДИПЛ ИНГ
+ТАТИЋ ЈОВАН
+ТАТИЋ ЛАЗАР
+ТАТИЋ МАРА
+ТАТИЋ МАРИЈА
+ТАТИЋ МАРИЈА
+ТАТИЋ МИЛАН
+ТАТИЋ МИЛАН
+ТАТИЋ МИЛИВОЈ
+ТАТИЋ МИЛКА
+ТАТИЋ МИЛОШ
+ТАТИЋ МИЛОРАД
+ТАТИЋ МИЛОСАВ
+ТАТИЋ МИЛУТИН ДИПЛ ИНГ
+ТАТИЋ НЕДЕЉКО
+ТАТИЋ ПАЈА
+ТАТИЋ ПЕРСИДА
+ТАТИЋ ПЕТАР
+ТАТИЋ РАДМИЛА
+ТАТИЋ РАДОСЛАВ
+ТАТИЋ СЛАВКО
+ТАТИЋ СЛОБОДАН
+ТАТИЋ СРБИСЛАВ
+ТАТИЋ СТЕВАН
+ТАТИЋ ТОМИСЛАВ
+ТАТИЋ ЗЛАТИЦА
+ТАТОМИР МАРКО
+ТАТОМИРОВ ЈОВАН
+ТАТОМИРОВ МАРИЈА
+ТАТОМИРОВ МАРИЈА
+ТАТОМИРОВ РАДИВОЈ
+ТАТОМИРОВ ЗОРАН
+ТАТОМИРОВИЋ БРАНКА
+ТАУШАН МАРКО
+ТАУШАНОВИЋ ИЛИЈА
+ТАУШАНОВИЋ РАДЕ
+ТАУБНЕР КАТИЦА
+ТЕШАНОВ МИЛАН
+ТЕШАНОВИЋ ЧЕДО
+ТЕШАНОВИЋ ЖЕЉКО
+ТЕШАНОВИЋ ЂОКО
+ТЕШАНОВИЋ ЦВИЈЕТА
+ТЕШАНОВИЋ ДРАГАН
+ТЕШАНОВИЋ ДРАГАН
+ТЕШАНОВИЋ ДУШАН
+ТЕШАНОВИЋ ЈЕЛА
+ТЕШАНОВИЋ ЛАЗАР
+ТЕШАНОВИЋ НЕНАД
+ТЕШАНОВИЋ НЕВЕНКА
+ТЕШАНОВИЋ ПЕТАР
+ТЕШАНОВИЋ РАШКО
+ТЕШАНОВИЋ РАЈКО
+ТЕШАНОВИЋ ТОМА
+ТЕШАНОВИЋ ВОЈА
+ТЕШАНОВИЋ ЗОРАН
+ТЕШЕЊИ ЕДУАРД
+ТЕШИЋ ЂОРЂЕ
+ТЕШИЋ АЛЕКСАНДАР
+ТЕШИЋ ДАРИНКА
+ТЕШИЋ ДРАГАН
+ТЕШИЋ ДУШАН
+ТЕШИЋ ЕРЖЕБЕТ
+ТЕШИЋ ГРАДИМИР
+ТЕШИЋ ИЛИЈА
+ТЕШИЋ ЈУЛИЈАНА
+ТЕШИЋ ЉУБОМИР
+ТЕШИЋ ЛУКА
+ТЕШИЋ МАРИЈА
+ТЕШИЋ МИЛЕНКО
+ТЕШИЋ МИЛЕ
+ТЕШИЋ МИЛЕ
+ТЕШИЋ МИЛИЦА
+ТЕШИЋ МИЛОРАД
+ТЕШИЋ МИРКО
+ТЕШИЋ ПЕРСА
+ТЕШИЋ РАДИСЛАВ
+ТЕШИЋ СЛАВКА
+ТЕШИЋ СЛАВОЉУБ ДИПЛ ИНГ
+ТЕШИЋ СОФИЈА
+ТЕШИЋ СТАНИСЛАВА
+ТЕШИЋ СТЕВАН ДР
+ТЕШИЋ СВЕТЛАНА
+ТЕШИЋ ЗДРАВКО
+ТЕШИН ЈАСМИНКА
+ТЕШИН ЉУБИНКА
+ТЕШИН МИЛОШ
+ТЕШИН СТЕВКА
+ТЕШИН ВЕСНА
+ТЕШОВИЋ ДРАГИЦА
+ТЕШОВИЋ ЉУБО
+ТЕШОВИЋ МИЛЕНКО
+ТЕШОВИЋ МИЛОМИР
+ТЕШОВИЋ МИЛОРАД
+ТЕШОВИЋ ВАСИЛИЈЕ
+ТЕЖЛА АНДРИЈА
+ТЕДИЋ ЖИВКО
+ТЕДИЋ БРАНИСЛАВ
+ТЕДИЋ МИЛОВАН
+ТЕДИЋ НЕВЕНКА
+ТЕГЕЛТИЈА БОГДАН
+ТЕГЕЛТИЈА ДУШАН
+ТЕГЕЛТИЈА ДУШАН
+ТЕГЕЛТИЈА ИЛОНКА
+ТЕГЕЛТИЈА МАГДАЛЕНА
+ТЕГЕЛТИЈА МИЛАН
+ТЕГЕЛТИЈА МИТРА
+ТЕГЕЛТИЈА СТАНКО
+ТЕГЕЛТИЈА ВЛАЈКО
+ТЕГЛАШ АНА
+ТЕГЛАШ ЛИДИЈА
+ТЕГЛАШ НАДА
+ТЕГЛАШИ ИШТВАН
+ТЕГЛАШИ ЈОЖЕФ
+ТЕЈИЋ БРАНКО
+ТЕЈИЋ-КОВАЧ МАРИЈА
+ТЕЈИЋ ЛАЗАР
+ТЕЈИЋ МИЛИЈА
+ТЕКИЋ БОРО
+ТЕКИЋ МИЛАН
+ТЕКИЋ МИЛКА
+ТЕКИЋ МИОДРАГ
+ТЕКИЋ МИРКО
+ТЕКИЋ СЛАВИЦА
+ТЕКИЋ СЛАВКО
+ТЕЛ ФЕРЕНЦ
+ТЕЛ ЈАНОШ
+ТЕЛ ЈЕЛИСАВЕТА
+ТЕЛ ЈЕНЕ
+ТЕЛ ПЕТАР
+ТЕЛ ВИЛМОШ
+ТЕЛАРОВ АНКА
+ТЕЛАРОВ ЈОВАН
+ТЕЛАРОВ МИЛОШ
+ТЕЛАРОВ НАДА
+ТЕЛАРОВ ПЕРА
+ТЕЛАРОВ СИМА
+ТЕЛАРОВ СИНИША
+ТЕЛАРОВ СИНИША
+ТЕЛАРОВ СМИЉАНА
+ТЕЛАРОВ ВОЈИН
+ТЕЛАРОВ ЗОРА
+ТЕЛАРОВИЋ БОРИС
+ТЕЛАРОВИЋ ДИМИТРИЈЕ
+ТЕЛАРОВИЋ ИВАНА
+ТЕЛАРОВИЋ ИВАН
+ТЕЛАРОВИЋ РАТОМИР
+ТЕЛАРОВИЋ СЛОБОДАН
+ТЕЛАРОВИЋ СТЕВАН
+ТЕЛАРОВИЋ СТЈЕПАН
+ТЕЛЕКИ ШАНДОР
+ТЕЛЕКИ ЕРИКА
+ТЕЛЕКИ СТЕВАН
+ТЕЛЕКИ ВЕРА
+ТЕМЕРИНАЦ ДАРА
+ТЕМЕРИНАЦ МИЛЕВА
+ТЕМЕРИНАЦ МИОДРАГ
+ТЕМЕРИНСКИ ЈЕЛИЦА
+ТЕМЕРИНСКИ ЈОВАН
+ТЕМЕРИНСКИ НАДА
+ТЕМУНОВИЋ МАРИЈА
+ТЕНЦЕ АЛБИН
+ТЕЊИ ЂОРЂЕ
+ТЕЊИ ЈОСИП
+ТЕЊИ ЈОСИП
+ТЕЊИ ЈОСИП
+ТЕЊИ КСЕНИЈА
+ТЕЊИ МАРИЈА
+ТЕЊОВИЋ ДОБРИВОЈЕ
+ТЕЊОВИЋ МИЛОШ
+ТЕЊОВИЋ РАДИВОЈЕ
+ТЕОДОРОВИЋ АНДРЕЈА
+ТЕОДОРОВИЋ ДОБРИЛА
+ТЕОДОРОВИЋ ДУШАН
+ТЕОДОРОВИЋ ЈОВАН
+ТЕОДОРОВИЋ ЈОВАН
+ТЕОДОРОВИЋ ЉУБО
+ТЕОДОРОВИЋ МАРА
+ТЕОДОРОВИЋ МИЛАН
+ТЕОДОРОВИЋ НАДА
+ТЕОДОРОВИЋ ПАЈА
+ТЕОДОРОВИЋ ПЕРА
+ТЕОДОРОВИЋ ПЕРА
+ТЕОДОРОВИЋ РАТИМИР
+ТЕОДОРОВИЋ САВА
+ТЕОДОРОВИЋ СИМА
+ТЕОДОРОВИЋ СЛОБОДАН
+ТЕОДОРОВИЋ ВИТОМИР
+ТЕОДОРОВИЋ ВЛАДИСЛАВ ДИПЛ ИНГ
+ТЕОДОРОВИЋ ВЛАДИСЛАВА
+ТЕОДОСИЋ МИРЈАНА
+ТЕОДОСИЈЕВИЋ БРАНИСЛАВ
+ТЕОДОСИЈЕВИЋ МИЛИЦА
+ТЕОДОСИЈЕВИЋ ЗОРАН
+ТЕОФАНОВ ЂУРЂИЦА
+ТЕОФАНОВ БОШКО
+ТЕОФАНОВ ДОБРИНКА
+ТЕОФАНОВ ДУШАН
+ТЕОФАНОВ ДУШКО
+ТЕОФАНОВ МАРИНКО
+ТЕОФАНОВ МИЛАН
+ТЕОФАНОВ МИЛИВОЈ
+ТЕОФАНОВ МИЛОШ
+ТЕОФАНОВ МИЛОШ
+ТЕОФАНОВ ОЛИВЕРА
+ТЕОФАНОВ ЗОРА
+ТЕОФАНОВИЋ ШТЕФАНИЈА
+ТЕОФАНОВИЋ АЛЕКСАНДАР
+ТЕОФАНОВИЋ АЛЕКСАНДАР
+ТЕОФАНОВИЋ АНА
+ТЕОФАНОВИЋ АРАНЂЕЛ
+ТЕОФАНОВИЋ БОГДАН
+ТЕОФАНОВИЋ БОГДАН
+ТЕОФАНОВИЋ ДАНИЛО
+ТЕОФАНОВИЋ ДОНКА
+ТЕОФАНОВИЋ ДУШАН
+ТЕОФАНОВИЋ МАРКО ДР ВЕТЕРИНЕ
+ТЕОФАНОВИЋ МИЛЕВА
+ТЕОФАНОВИЋ МИЛИЦА
+ТЕОФАНОВИЋ ТАДИЈА
+ТЕОФИЛОВИЋ ЂУРЂИЦА
+ТЕОФИЛОВИЋ АЛЕКСАНДАР
+ТЕОФИЛОВИЋ БРАНКА
+ТЕОФИЛОВИЋ ГОРАН
+ТЕОФИЛОВИЋ МОМЧИЛО
+ТЕОФИЛОВИЋ САВО
+ТЕОВАНОВИЋ НЕВЕНКА
+ТЕПША НЕБОЈША
+ТЕПША СИНИША
+ТЕПШИЋ ЈОВИЦА
+ТЕПШИЋ МИОДРАГ
+ТЕПШИЋ РАДЕ
+ТЕПАЧЕВИЋ АНДРЕЈА
+ТЕПАВЧЕВИЋ ЖАНКА
+ТЕПАВЧЕВИЋ БОЖИДАР
+ТЕПАВЧЕВИЋ ГОЈКО
+ТЕПАВЧЕВИЋ МИЛОВАН
+ТЕПАВЧЕВИЋ ПЕТАР ДР
+ТЕПАВЧЕВИЋ РАТКО
+ТЕПАВЧЕВИЋ СТРАХИЊА
+ТЕПИЋ ФРАНЦИКА
+ТЕПИЋ ГОРАН
+ТЕПИЋ ЈОВАН
+ТЕПИЋ МИЛАН
+ТЕПИЋ МИЛОШ
+ТЕПИЋ МИЛОВАН
+ТЕПИЋ НЕДЕЉКО
+ТЕПИЋ ОБРЕНКО
+ТЕПИЋ РАДОВАН
+ТЕПИЋ РАЈКО
+ТЕПИЋ СНЕЖАНА
+ТЕПИЋ ВИДА
+ТЕПИЋ ЗОРАН
+ТЕРЕЧЕК АНЂЕЛКА
+ТЕРЕЧИЋ ЛАЈОШ
+ТЕРЕЧИК ПАЛ
+ТЕРЕЦКИ ИШТВАН
+ТЕРЕК ЂУЛА
+ТЕРЕК АНДРИЈА
+ТЕРЕК ФЕРЕНЦ
+ТЕРЕК ИШТВАН
+ТЕРЕК ИМРЕ ДИПЛ ИНГ
+ТЕРЕК ИРЕНА
+ТЕРЕК ЈАНОШ
+ТЕРЕК КАТАЛИН
+ТЕРЕК ЛАСЛО
+ТЕРЕК ЉУДЕВИТ ДР ИНГ
+ТЕРЕК ОЛГА
+ТЕРЕК ТИБОР
+ТЕРЕЗИЈА БОСИЉКА
+ТЕРХЕШ ШАНДОР
+ТЕРЈЕК АЛЕКСАНДАР
+ТЕРЈЕК-КОВАЧ КАРЛО
+ТЕРЈЕК МИХАЈЛО
+ТЕРЈЕК ВИКТОРИЈА
+ТЕРКЕЉ АНА
+ТЕРЉУК ИВАН
+ТЕРНОВАЦ ИШТВАН
+ТЕРЗИЋ ЖИВКО
+ТЕРЗИЋ ЂОРЂЕ
+ТЕРЗИЋ ЂУРО
+ТЕРЗИЋ БЕЛА
+ТЕРЗИЋ БИСЕРКА
+ТЕРЗИЋ БОГОЉУБ
+ТЕРЗИЋ БРАНКА
+ТЕРЗИЋ ДРАГАН
+ТЕРЗИЋ ДРАГОМИР
+ТЕРЗИЋ ДУШАН
+ТЕРЗИЋ ДУШАН
+ТЕРЗИЋ ФРАНЦА
+ТЕРЗИЋ ЈЕВРЕМ
+ТЕРЗИЋ ЈОВАН
+ТЕРЗИЋ МИЛАН
+ТЕРЗИЋ МИЛАН
+ТЕРЗИЋ МИЛЕНА
+ТЕРЗИЋ МИЛЕНКО
+ТЕРЗИЋ МИЛИЦА
+ТЕРЗИЋ МИОДРАГ
+ТЕРЗИЋ МИОДРАГ
+ТЕРЗИЋ НИКОЛА
+ТЕРЗИЋ ЊЕГОСАВА
+ТЕРЗИЋ ПАВЛЕ
+ТЕРЗИЋ ПЕРКА
+ТЕРЗИЋ ПЕТАР ДР
+ТЕРЗИЋ ПЕТАР
+ТЕРЗИЋ ПЕТАР
+ТЕРЗИЋ РЕЉА
+ТЕРЗИЋ САВА
+ТЕРЗИЋ СЛАВКО
+ТЕРЗИЋ СЛАВКО
+ТЕРЗИЋ СЛАВНА
+ТЕРЗИЋ СЛОБОДАН
+ТЕРЗИЋ СРБИСЛАВ
+ТЕРЗИЋ СТАНКА
+ТЕРЗИЋ ТЕОДОР
+ТЕРЗИЋ ТЕРЕЗА
+ТЕРЗИЋ ТРИФУН
+ТЕРЗИЋ ВЕРА
+ТЕРЗИЋ ВЛАДАН
+ТЕРЗИЋ ВОЈИСЛАВ
+ТЕРЗИЈА МИТАР
+ТЕРЗИН БРАНИСЛАВ
+ТЕРЗИН БРАНКО
+ТЕРЗИН ДРАГОСЛАВ
+ТЕРЗИН ДУШАН
+ТЕРЗИН ЈОВАНКА
+ТЕРЗИН ЈОВАНКА
+ТЕРЗИН ЉУБИЦА
+ТЕРЗИН МИЛАН
+ТЕРЗИН МИЛИНА
+ТЕРЗИН МИРЈАНА
+ТЕРЗИН МИРОСЛАВА
+ТЕРЗИН МИРОСЛАВА
+ТЕРЗИН МИТА
+ТЕРЗИН НЕВЕНКА
+ТЕРЗИН РАДИВОЈ
+ТЕРЗИН РАДМИЛА
+ТЕРЗИН РИСТА
+ТЕРЗИН СЛОБОДАН
+ТЕРЗИН СТАНКО
+ТЕРЗИН ТОША
+ТЕРЗИН ВАСА
+ТЕРЗИН ВЕЛИМИР
+ТЕРЗИН ВЕЉКО
+ТЕРЗИН ВЕРИЦА
+ТЕРЗИН ВЕСЕЛИН
+ТЕРЗИН ВОЈИСЛАВ
+ТЕСЛА ШПИРО
+ТЕСЛА БРАНКО
+ТЕСЛА ДРАГАН
+ТЕСЛА МИРА
+ТЕСЛИЋ ЂОРЂЕ
+ТЕСЛИЋ МАКСИМ
+ТЕСЛИЋ МАРКО
+ТЕСЛИЋ ВЛАДИМИР
+ТЕСТИН МАРИЈА
+ТИШАНОВИЋ МИЛИВОЈ
+ТИШИЋ МИЛЕНА
+ТИШМА ЧЕДОМИР
+ТИШМА ЖЕЉКО
+ТИШМА ЂУРИЦА
+ТИШМА АНДРЕЈ
+ТИШМА БРАНКО
+ТИШМА ДУШАН
+ТИШМА ДУШАН
+ТИШМА ИЛИЈА
+ТИШМА ЈОВАН
+ТИШМА ЛАЗАР
+ТИШМА ЉИЉАНА
+ТИШМА МАРИЈА
+ТИШМА МАРТА
+ТИШМА-МИЛОШЕВСКИ НАТАША
+ТИШМА МИЛОШ
+ТИШМА МИРКО
+ТИШМА МОМИР
+ТИШМА НИКОЛА
+ТИШМА СИНИША
+ТИШМА СМИЉА
+ТИШМА СТЕВАН
+ТИШМА СВЕТОЗАР
+ТИШМА ВОЈИНКА
+ТИШМА ВОЈИН
+ТИШМА ЗОРАН
+ТИБАИ ИШТВАН
+ТИЦ АНАМАРИЈА
+ТИЦА БОЖО
+ТИЦА ЦВЕТА
+ТИЦА ДМИТАР
+ТИЦА ДРАГАН
+ТИЦА ЈОВАН
+ТИЦА МИЛОШ
+ТИЦА НЕДЕЉКО
+ТИГАЊ АНТЕ
+ТИХИ ЈОСИП
+ТИХОМИРОВИЋ МИЛАН
+ТИХОМИРОВИЋ ВЕЉКО
+ТИХВИНСКИ ВЛАДАН
+ТИХВИНСКИ ВЛАДИМИР ДИПЛ ИНГ
+ТИЈАНИЋ МИЛОШ
+ТИЈАНИЋ СМИЉА
+ТИЈАНИЋ ЗОРАН
+ТИКВЕША НАИЛА
+ТИКВИЋ БОШКО
+ТИКВИЋ МИРОСЛАВ
+ТИКВИЦКИ ХРВОЈЕ
+ТИКВИЦКИ МАРИЈАНА
+ТИЛ ЕДВИН ДР
+ТИМАРАЦ БРАНКО
+ТИМАРАЦ СТОЈАН
+ТИМАРОВ ЂОРЂЕ
+ТИМАРОВ СТЕВАН
+ТИМАРОВ ВАСА
+ТИМАРОВ ВЕРА
+ТИМИЛИЋ ДИМИТРИЈЕ
+ТИМКО ИРИНЕЈ
+ТИМКО ЉУБОВ
+ТИМКО МЕЛАНИЈА
+ТИМКО НЕСТОР
+ТИМКО ВЕРА
+ТИМКО ВЛАДИМИР
+ТИМОТИЋ ЂОРЂЕ
+ТИМОТИЋ СТАНА
+ТИМОТИЋ УРОШ
+ТИМОТИЈЕВИЋ АНИЦА
+ТИМОТИЈЕВИЋ БОЖИДАР
+ТИМОТИЈЕВИЋ ДИМИТРИЈЕ
+ТИМОТИЈЕВИЋ ЈЕВРЕМ
+ТИМОТИЈЕВИЋ-КОПРИВИЦА МАЈА
+ТИМОТИЈЕВИЋ МИРОСЛАВ
+ТИМОТИЈЕВИЋ ОЛГА
+ТИМОТИЈЕВИЋ ПЛЕМЕНКА
+ТИМОТИЈЕВИЋ РАДОСЛАВ
+ТИНКОВИЋ ТОМИСЛАВ
+ТИНТЕР ХЕДВИГА
+ТИНТОР ЂУРА
+ТИНТОР ДУШАН
+ТИНТОР МАРКО
+ТИНТОР МИЛКА
+ТИНТОР МИОДРАГ
+ТИНТОР МИРА
+ТИНТОР-РАДОМИР СТОЈА
+ТИНТОР СТЕВАН
+ТИНУС БЕРНАДЕТА
+ТИНУС МАРТА
+ТИОДОРОВИЋ ЉИЉАНА
+ТИОДОРОВИЋ РАДОВАН
+ТИПШИН БОРИСЛАВ
+ТИПУРА ЈОСИП
+ТИПУРА ЈОСИП
+ТИПУРА ЛАДИСЛАВ
+ТИПУРА ЛАСЛО
+ТИР ИШТВАН
+ТИР МИЛКА
+ТИР ПЕТАР
+ТИРИ АНТАЛ
+ТИРИНДА ЂУРА
+ТИРИНГЕР ЕЛЗА
+ТИРКАЈЛА АНА
+ТИРКАЈЛА СЛАВОМИР
+ТИРНАНИЋ БИСЕРКА
+ТИСИНОВИЋ ЈЕЛИСАВЕТА
+ТИСТА ЕРЖЕБЕТ
+ТИСТА ЈАНОШ
+ТИТЕЛАЦ ЂОРЂЕ
+ТИТЕЛАЦ ЂОРЂЕ
+ТИТЕЛАЦ ЈЕЛЕНА
+ТИТЕЛАЦ ЈОВАН
+ТИТЕЛАЦ МИЛИНКА
+ТИТЕЛАЦ НАДА
+ТИТЕЛАЦ СТЕВАН
+ТИТЕЛАЦ ЗОРИЦА
+ТИТОВ АЛЕКСАНДАР
+ТИТОВ АНА
+ТИТОВ АНИЦА
+ТИТОВ ЕВГЕНИЈЕ
+ТИТОВ ПАВЛЕ
+ТИТОВ ТОМИСЛАВ
+ТКАЛЧЕЦ ЈОВАН
+ТКАЛЕЦ ПАВАО
+ТОШИЋ ЖАРКО
+ТОШИЋ БОРИСЛАВА
+ТОШИЋ БОРИСЛАВ
+ТОШИЋ БРАТИСЛАВ
+ТОШИЋ БРАТИСЛАВ
+ТОШИЋ ДАНИЦА
+ТОШИЋ ДРАГАН
+ТОШИЋ ДРАГАН
+ТОШИЋ ДУШАН
+ТОШИЋ ДУШАН
+ТОШИЋ ДУШАН
+ТОШИЋ ЕРЖЕБЕТ
+ТОШИЋ ЕВИЦА
+ТОШИЋ ГОЈКО
+ТОШИЋ ЈЕЛА
+ТОШИЋ ЈОВАН
+ТОШИЋ ЈОВИЦА
+ТОШИЋ КРСТАН
+ТОШИЋ КРСТОМИР
+ТОШИЋ ЉУБИЦА
+ТОШИЋ ЉУБИНКО
+ТОШИЋ МИХАЈЛО
+ТОШИЋ МИЛАН
+ТОШИЋ МИЛАН
+ТОШИЋ МИЛАН
+ТОШИЋ МИЛЕВА
+ТОШИЋ МИЛЕ
+ТОШИЋ МИЛОШ
+ТОШИЋ МИЛОРАД
+ТОШИЋ МИЛУТИН
+ТОШИЋ МИОДРАГ
+ТОШИЋ МИРКО
+ТОШИЋ МИТАР
+ТОШИЋ НЕДЕЉКО
+ТОШИЋ НЕВЕНКА
+ТОШИЋ НИКОЛА
+ТОШИЋ НИКО
+ТОШИЋ НОВАК
+ТОШИЋ ОБРАД
+ТОШИЋ ОСТОЈА
+ТОШИЋ ПЕРО
+ТОШИЋ ПЕТАР
+ТОШИЋ РАДЕ
+ТОШИЋ РАДОМИР
+ТОШИЋ РАДОМИР
+ТОШИЋ РАТКО
+ТОШИЋ САВА
+ТОШИЋ СЛАВКА
+ТОШИЋ СОФИЈА
+ТОШИЋ СТАНИМИР
+ТОШИЋ СТЕВАН
+ТОШИЋ СТЕВАН
+ТОШИЋ СВЕТИСЛАВ
+ТОШИЋ СВЕТЛАНА
+ТОШИЋ ВЕЛИБОР
+ТОШИЋ ВЕРА
+ТОШИЋ ВИД
+ТОШИЋ ВЛАДО
+ТОШИЋ ВЛАСТИМИР
+ТОШИЋ ВОЈИН
+ТОШИНОВИЋ ЛУКА
+ТОШКОВ ХРАНИСЛАВ
+ТОШКОВ ПЕРА
+ТОШКОВИЋ ВУЧЕТА
+ТОШКОВИЋ ВУЧИЋ
+ТОШКОВИЋ ЗДРАВКО
+ТОШОВИЋ МИЛАНКА
+ТОШОВИЋ МИЛОЈЕ
+ТОЂЕР КОСТА
+ТОБЏИЋ-БРАШАНАЦ МИРОСЛАВА
+ТОБЏИЋ КАТАРИНА
+ТОБЏИЋ МИЛЕНКО
+ТОБЏИЋ СТЕВАН
+ТОБИ МАРИЈА
+ТОБИ МИРОСЛАВ
+ТОБИАШ ВИЛМОШ
+ТОБОЛКА АНА
+ТОБОЛКА ДАНИЕЛ
+ТОБОЛКА ЕРИКА
+ТОБОЛКА ИШТВАН
+ТОБОЛКА ИЛОНА
+ТОДИЋ БОГДАН
+ТОДИЋ БОРИСЛАВ
+ТОДИЋ БОРИСЛАВ
+ТОДИЋ БРАНИСЛАВ
+ТОДИЋ ДАНИЈЕЛА
+ТОДИЋ ГОЈКО ДИПЛ ИНГ
+ТОДИЋ МАРИЈАНА
+ТОДИЋ МИЛАНКО
+ТОДИЋ МИЛАН
+ТОДИЋ МИЛЕ
+ТОДИЋ МИЛОШ ДИПЛ ИНГ
+ТОДИЋ МИЛОШ
+ТОДИЋ МИРОСЛАВ
+ТОДИЋ НЕЂО
+ТОДИЋ РАДИВОЈ
+ТОДИЋ РАЈКО
+ТОДИЋ РАТОМИР
+ТОДИЋ СТАНИСАВА
+ТОДИЋ СТАНКО
+ТОДИЋ ТОМИСЛАВ
+ТОДИЋ ВЕЛИМИР
+ТОДИЋ ВЛАДО
+ТОДОШКОВИЋ БОГДАН
+ТОДОШКОВИЋ НАДА
+ТОДОШКОВИЋ НЕМАЊА
+ТОДОРЧЕВИЋ ДРАГУТИН
+ТОДОРЧЕВИЋ ОСТОЈА
+ТОДОРЧЕВИЋ ПЕРО
+ТОДОРЧЕВИЋ СВЕТЛАНА
+ТОДОРЧЕВИЋ ВАСИЛИЈЕ
+ТОДОРЧЕВИЋ ВАСО
+ТОДОРЧЕВИЋ ВОЈИН
+ТОДОРАН ТРАЈАН
+ТОДОРИЋ ЧЕДОМИР
+ТОДОРИЋ БРАНКО
+ТОДОРИЋ ДРАГАН
+ТОДОРИЋ ГОЈКО
+ТОДОРИЋ ИЛИЈА
+ТОДОРИЋ ЈЕЛЕНА
+ТОДОРИЋ ЈОВАНКА
+ТОДОРИЋ ЈОВАН
+ТОДОРИЋ ЉУБА
+ТОДОРИЋ ЉУБИВОЈЕ
+ТОДОРИЋ МАРИЈА
+ТОДОРИЋ МИЛОШ
+ТОДОРИЋ МИЛОШ
+ТОДОРИЋ НЕДЕЉКО
+ТОДОРИЋ НИКОЛА
+ТОДОРИЋ НИКО
+ТОДОРИЋ РАДМИЛА
+ТОДОРИЋ СЕЛИМИР
+ТОДОРИЋ ТРИВУНА
+ТОДОРОВ ЂУРА
+ТОДОРОВ АЛЕКСАНДАР
+ТОДОРОВ БИСЕРКА
+ТОДОРОВ ДЕСАНКА
+ТОДОРОВ ГЛИША
+ТОДОРОВ ИВАН
+ТОДОРОВ-ЈАШАРЕВИЋ ДАНИЦА
+ТОДОРОВ МИЛИВОЈ
+ТОДОРОВ МИЛОШ
+ТОДОРОВ НЕДЕЉКО
+ТОДОРОВ ОБРЕНКА
+ТОДОРОВ РАДОВАН
+ТОДОРОВ РОБЕРТ
+ТОДОРОВ САВА
+ТОДОРОВ СЛОБОДАН
+ТОДОРОВ СПИРО ДР
+ТОДОРОВ ТОМИСЛАВ
+ТОДОРОВИЋ ЧЕДО
+ТОДОРОВИЋ ЖАРКО
+ТОДОРОВИЋ ЖАРКО
+ТОДОРОВИЋ ЖИВОЈИН
+ТОДОРОВИЋ ЖИВОТА
+ТОДОРОВИЋ ЖИВОТА
+ТОДОРОВИЋ АЛЕКСАНДАР
+ТОДОРОВИЋ АЛЕКСАНДАР
+ТОДОРОВИЋ АЛЕКСАНДАР
+ТОДОРОВИЋ АНЂЕЛКО
+ТОДОРОВИЋ АНА
+ТОДОРОВИЋ АНКА
+ТОДОРОВИЋ АНТУН
+ТОДОРОВИЋ БОШКО
+ТОДОРОВИЋ БОШКО
+ТОДОРОВИЋ БОГДАН
+ТОДОРОВИЋ БОРИСЛАВ
+ТОДОРОВИЋ БОРИВОЈЕ
+ТОДОРОВИЋ БОСА
+ТОДОРОВИЋ БРАНИСЛАВ
+ТОДОРОВИЋ БРАНКО
+ТОДОРОВИЋ БРАНКО
+ТОДОРОВИЋ БРАНКО
+ТОДОРОВИЋ БРАНКО
+ТОДОРОВИЋ ЦВЕТКО
+ТОДОРОВИЋ ЦВИЈЕТИН
+ТОДОРОВИЋ ЦВИЈО
+ТОДОРОВИЋ ДАНИЦА
+ТОДОРОВИЋ ДАНИЛО
+ТОДОРОВИЋ ДИМИТРИЈЕ
+ТОДОРОВИЋ ДОБРОСАВ
+ТОДОРОВИЋ ДОБРОСАВ
+ТОДОРОВИЋ ДРАГАН
+ТОДОРОВИЋ ДРАГАН
+ТОДОРОВИЋ ДРАГАН
+ТОДОРОВИЋ ДРАГАН
+ТОДОРОВИЋ ДРАГИЦА
+ТОДОРОВИЋ ДРАГОЉУБ
+ТОДОРОВИЋ ДРАГОЉУБ
+ТОДОРОВИЋ ДРАГОСЛАВ
+ТОДОРОВИЋ ДРАГОСЛАВ
+ТОДОРОВИЋ ДУШАН
+ТОДОРОВИЋ ДУШАН
+ТОДОРОВИЋ ДУШАН
+ТОДОРОВИЋ ДУШАН
+ТОДОРОВИЋ ДУШКО
+ТОДОРОВИЋ ГОЈКО
+ТОДОРОВИЋ ГОЈКО
+ТОДОРОВИЋ ГРАДИМИР
+ТОДОРОВИЋ ИЛЕ
+ТОДОРОВИЋ ЈАСНА
+ТОДОРОВИЋ ЈЕЛЕНА
+ТОДОРОВИЋ ЈЕЛИЦА
+ТОДОРОВИЋ ЈЕЛИЦА
+ТОДОРОВИЋ ЈОКА
+ТОДОРОВИЋ ЈОВАНКА
+ТОДОРОВИЋ ЈОВИЦА
+ТОДОРОВИЋ ЈУЛИЈАНА
+ТОДОРОВИЋ КОВИНКА
+ТОДОРОВИЋ ЛАЗАР
+ТОДОРОВИЋ ЛЕНКА
+ТОДОРОВИЋ ЉУБИЦА
+ТОДОРОВИЋ ЉУБИЦА
+ТОДОРОВИЋ ЉУБИНКА
+ТОДОРОВИЋ ЉУБОМИР
+ТОДОРОВИЋ МАРА
+ТОДОРОВИЋ МАРГИТА
+ТОДОРОВИЋ МАРИЈА
+ТОДОРОВИЋ МАРКО
+ТОДОРОВИЋ МАРКО
+ТОДОРОВИЋ МАРКО
+ТОДОРОВИЋ МИШО
+ТОДОРОВИЋ МИЋА
+ТОДОРОВИЋ МИЋО
+ТОДОРОВИЋ МИХАЈЛО
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛАН
+ТОДОРОВИЋ МИЛЕНКО
+ТОДОРОВИЋ МИЛЕ
+ТОДОРОВИЋ МИЛИЦА
+ТОДОРОВИЋ МИЛКА
+ТОДОРОВИЋ МИЛОШ
+ТОДОРОВИЋ МИЛОРАД
+ТОДОРОВИЋ МИЛОВАН
+ТОДОРОВИЋ МИРКО ДИПЛ ИНГ
+ТОДОРОВИЋ МИРКО ДР ЛЕКАР
+ТОДОРОВИЋ МИРКО
+ТОДОРОВИЋ МИРКО
+ТОДОРОВИЋ МИРКО
+ТОДОРОВИЋ МИРКО
+ТОДОРОВИЋ МИРОСЛАВА
+ТОДОРОВИЋ МИРОСЛАВ
+ТОДОРОВИЋ МЛАДЕН ДР
+ТОДОРОВИЋ МЛАДЕН
+ТОДОРОВИЋ МЛАДОМИР
+ТОДОРОВИЋ МОМЧИЛО
+ТОДОРОВИЋ МОМЧИЛО
+ТОДОРОВИЋ МОМИРКА
+ТОДОРОВИЋ НАДА
+ТОДОРОВИЋ НАДА
+ТОДОРОВИЋ НИЋИФОР
+ТОДОРОВИЋ НИКОЛА
+ТОДОРОВИЋ НИКОЛА
+ТОДОРОВИЋ ОЛГИЦА
+ТОДОРОВИЋ ОСТОЈА
+ТОДОРОВИЋ ПЕТАР
+ТОДОРОВИЋ ПЕТАР
+ТОДОРОВИЋ РАШКО
+ТОДОРОВИЋ РАДА
+ТОДОРОВИЋ РАДИША
+ТОДОРОВИЋ РАДИВОЈ АДВОКАТ
+ТОДОРОВИЋ РАДИВОЈЕ
+ТОДОРОВИЋ РАДИВОЈ
+ТОДОРОВИЋ РАДМИЛА
+ТОДОРОВИЋ РАДОЈКА
+ТОДОРОВИЋ РАДОСЛАВ
+ТОДОРОВИЋ РАЈКО
+ТОДОРОВИЋ РАНКО
+ТОДОРОВИЋ РАТКО
+ТОДОРОВИЋ РОСА
+ТОДОРОВИЋ САША
+ТОДОРОВИЋ САВА
+ТОДОРОВИЋ САВА
+ТОДОРОВИЋ САВО
+ТОДОРОВИЋ САВО
+ТОДОРОВИЋ СЕНКА
+ТОДОРОВИЋ СИМА
+ТОДОРОВИЋ СИНИША
+ТОДОРОВИЋ СЛАВЕ
+ТОДОРОВИЋ СЛОБОДАН
+ТОДОРОВИЋ СЛОБОДАН
+ТОДОРОВИЋ СМИЉКА
+ТОДОРОВИЋ СНЕЖАНА
+ТОДОРОВИЋ СОФИЈА
+ТОДОРОВИЋ СРЕДОЈЕ
+ТОДОРОВИЋ СРЕТЕН
+ТОДОРОВИЋ СТАНИМИР
+ТОДОРОВИЋ СТАНИСЛАВ
+ТОДОРОВИЋ СТАНКО
+ТОДОРОВИЋ СТЕВАН
+ТОДОРОВИЋ СТЕВАН
+ТОДОРОВИЋ СТЕВА
+ТОДОРОВИЋ ТОДЕ
+ТОДОРОВИЋ ТОДЕ
+ТОДОРОВИЋ ТОМИСЛАВ
+ТОДОРОВИЋ ТОМИСЛАВ
+ТОДОРОВИЋ ВЕРА
+ТОДОРОВИЋ ВЕРА
+ТОДОРОВИЋ ВЕРА
+ТОДОРОВИЋ ВЛАДЕТА
+ТОДОРОВИЋ ВЛАДИМИР
+ТОДОРОВИЋ ВЛАДИМИР
+ТОДОРОВИЋ ВЛАДИСЛАВ
+ТОДОРОВИЋ ВУКАШИН
+ТОДОРОВИЋ ЗОРАН
+ТОДОРОВИЋ ЗОРАН
+ТОДОРОВИЋ ЗОРАН
+ТОДОРОВИЋ ЗОРА
+ТОДОРОВИЋ ЗОРКА
+ТОДОРОВСКИ МАНАСИЈЕ
+ТОДОРОВСКИ МИРОСЛАВ
+ТОДОРОВСКИ НАДА
+ТОДОСИЈЕВИЋ ЂОРЂЕ
+ТОДОСИЈЕВИЋ ДРАГОЉУБ
+ТОДОСИЈЕВИЋ МИЛАН
+ТОДОСИЈЕВИЋ ЗЛАТКО ДИПЛ ПРАВНИК
+ТОФИЛ СОФИЈА
+ТОХОЉ ЈОВО
+ТОХОЉЕВИЋ БОШКО
+ТОХОЉЕВИЋ ЗДРАВКО
+ТОЈАГА МИЛАН
+ТОЈАГА МИЛОШ
+ТОЈАГА СВЕТОЗАР
+ТОЈАГИЋ ЂОРЂЕ
+ТОЈАГИЋ БОЖИДАР
+ТОЈАГИЋ ДАНЕ
+ТОЈАГИЋ ДАНИЛО
+ТОЈАГИЋ ДУШАН
+ТОЈАГИЋ ЈЕЛА
+ТОЈАГИЋ ЛУДМИЛА
+ТОЈАГИЋ МИРЈАНА
+ТОЈАГИЋ НИКОЛА
+ТОЈАГИЋ НИКОЛА
+ТОЈАГИЋ РАДОВАН
+ТОЈАГИЋ СЛОБОДАН
+ТОЈЗАН ИЛОНА
+ТОКАР ЈУЛИЈА
+ТОКИЋ КОСАРА
+ТОКИЋ МИХАЈЛО
+ТОКИЋ МИЛАН
+ТОКИЋ САВА
+ТОКИЋ САВА
+ТОКИЋ САВА
+ТОКИН-ЂЕРИЋ ЗАГОРКА
+ТОКИН ЂОРЂЕ
+ТОКИН АЛИСА
+ТОКИН БОРА
+ТОКИН ДАНИЦА
+ТОКИН ПРОКОП ДР ЛЕКАР
+ТОКИН СЛОБОДАН
+ТОКИН ВЕРА
+ТОКИН ВЛАДА
+ТОКОДИ ЈАНОШ
+ТОКОДИ ЈОЛАНКА
+ТОКОДИ МАРГИТА
+ТОКОВИЋ ЈЕЛИЦА
+ТОЛ АНДРАШ
+ТОЛ ЈОЖЕФ
+ТОЛДИ ЕВА
+ТОЛДИ ВИЛМОШ
+ТОЛИЋ МИЛОШ
+ТОЛИЋ ВЕСНА
+ТОЛИЦКИ ЗОРА
+ТОЛИМИР УРОШ
+ТОЉАГА ВУКОСАВА
+ТОЉЕВИЋ БРАНКО
+ТОЉЕВИЋ ДОБРИСЛАВ
+ТОЉЕВИЋ ДРАГИЦА
+ТОЉИЋ РАЈКО
+ТОЛМАЧ ЗОРАН
+ТОЛМАЧЕВ ЖИВА
+ТОЛМАЧЕВ МИРОСЛАВ
+ТОЛНАИ ОТО
+ТОЛНАИ РУЖА
+ТОЛТ ЈОЖЕФ
+ТОЛТ ЈОСИП
+ТОЛВАЈ АГНЕШ
+ТОЛВАЈ ЕЛЕОНОРА
+ТОЛВЕТ ОСКАР
+ТОМЧАЊИ ИВАН
+ТОМЧАЊИ МИРОСЛАВА
+ТОМЧАЊИ СТАНИСЛАВА
+ТОМЧЕВА НЕВЕНКА ДР
+ТОМЧЕВСКИ ЦВЕТАН
+ТОМЧИЋ ЧЕДОМИР
+ТОМЧОВ ТОМЧО
+ТОМЧОВА АНЕТА ДР
+ТОМЧОВА АНИТА ДР
+ТОМШИЋ ЛАДИСЛАВ
+ТОМА ШАНДОР
+ТОМА АНДРИЈА
+ТОМА ЈАНОШ
+ТОМА ЈАНОШ
+ТОМА ЈАНОШ
+ТОМА ЈУЛИЈАНА
+ТОМА ЛАДИСЛАВ
+ТОМА МАРИЈА
+ТОМА МИХАЈЛО
+ТОМА ОЛГА
+ТОМА ПАЛ
+ТОМА РОЗАЛИЈА
+ТОМА СТЕВАН
+ТОМАШ ЂУРА
+ТОМАШ ЈАНКО
+ТОМАШ ЈОВАН
+ТОМАШ МИЛОРАД
+ТОМАШ МИЛОВАН
+ТОМАШ СТОЈАНКА
+ТОМАШЕВ БОЖИДАР
+ТОМАШЕВ КОВИНКА
+ТОМАШЕВ МАТИЈА
+ТОМАШЕВ МАТИЈА
+ТОМАШЕВ ПЕТАР
+ТОМАШЕВ ВЕРА
+ТОМАШЕВИЋ БЛАГОТА
+ТОМАШЕВИЋ БОЖИДАР
+ТОМАШЕВИЋ БОРИСЛАВ
+ТОМАШЕВИЋ ДРАГАНА
+ТОМАШЕВИЋ ЕВИЦА
+ТОМАШЕВИЋ ИВАН
+ТОМАШЕВИЋ ЈЕЛИЦА
+ТОМАШЕВИЋ ЈОВАН
+ТОМАШЕВИЋ КОСТА
+ТОМАШЕВИЋ ЉУБИША
+ТОМАШЕВИЋ ЉУБИЦА
+ТОМАШЕВИЋ ЛУКА
+ТОМАШЕВИЋ МАНОЈЛЕ
+ТОМАШЕВИЋ МИЛЕНКО
+ТОМАШЕВИЋ МИЛИВОЈ
+ТОМАШЕВИЋ МИЛКА
+ТОМАШЕВИЋ МИЛОРАД
+ТОМАШЕВИЋ МИОДРАГ
+ТОМАШЕВИЋ МИОДРАГ
+ТОМАШЕВИЋ НАДА
+ТОМАШЕВИЋ НАДЕЖДА
+ТОМАШЕВИЋ РАДИВОЈ
+ТОМАШЕВИЋ РАДОЈКА
+ТОМАШЕВИЋ РАДОЈКА
+ТОМАШЕВИЋ САВО
+ТОМАШЕВИЋ СЛОБОДАН
+ТОМАШЕВИЋ СВЕТОМИР
+ТОМАШЕВИЋ ВЛАДИМИР
+ТОМАШЕВИЋ ВОЈИСЛАВ
+ТОМАШИЋ ЂУРА
+ТОМАШИЋ БЕРТА
+ТОМАШИЋ МАРТИН
+ТОМАШИЋ МИРЈАНА
+ТОМАШИЋ ТИБОР
+ТОМАЦ ИВАН
+ТОМАЦ МИРОСЛАВ
+ТОМАЦ РУЖИЦА
+ТОМАН ДИН
+ТОМАН ФРАЊА
+ТОМАН ЈОЖЕФ
+ТОМАН ЛАСЛО
+ТОМАН МАГДОЛНА
+ТОМАНИЋ ДУШАН
+ТОМАНИЋ-ЛАЦКОВИЋ МИЛЕНА
+ТОМАНИЋ МИЛЕНА
+ТОМАНИЋ ЗДЕНКА
+ТОМАНОВИЋ БРАНИСЛАВ
+ТОМАНОВИЋ МАРИЈА
+ТОМАНОВИЋ МИОДРАГ
+ТОМАНОВИЋ РАЈКО
+ТОМАНОВИЋ ТОМИСЛАВ
+ТОМАС АНДРИЈА
+ТОМАС ЈОСИП
+ТОМАС РУДОЛФ
+ТОМАС ЗДРАВКА
+ТОМЕЦ ВЛАДИСЛАВ
+ТОМИЧИЋ АНТЕ
+ТОМИЧИЋ ЦВИЈО
+ТОМИЧИЋ ЈОВО
+ТОМИЧИЋ ПЕТАР
+ТОМИЧИЋ СТОЈА
+ТОМИЧИЋ ТОМИСЛАВ
+ТОМИЧИН МАРИЈА
+ТОМИЋ ЧЕДОМИР ДИПЛ ИНГ
+ТОМИЋ ЧЕДОМИР
+ТОМИЋ ЖЕЉКО
+ТОМИЋ ЖИВКО
+ТОМИЋ ЖИВОЈИН
+ТОМИЋ ЂОРЂЕ
+ТОМИЋ ЂУРЂИЦА
+ТОМИЋ ЂУРЂИНКА
+ТОМИЋ ЂУРИЦА
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСАНДАР
+ТОМИЋ АЛЕКСА
+ТОМИЋ АНА
+ТОМИЋ АНГЕЛИНА
+ТОМИЋ АНКА
+ТОМИЋ АНКИЦА
+ТОМИЋ АНКИЦА
+ТОМИЋ АРИЈАДНА
+ТОМИЋ БИЉАНА
+ТОМИЋ БОШКО
+ТОМИЋ БОШКО
+ТОМИЋ БОЖИДАРКА
+ТОМИЋ БОГДАНКА
+ТОМИЋ БОЈКА
+ТОМИЋ БОРИСЛАВ ДР ИНГ
+ТОМИЋ БОРИСЛАВ
+ТОМИЋ БОСИЉКА
+ТОМИЋ БРАНКО
+ТОМИЋ ДАНИЦА
+ТОМИЋ ДАНИЛО МР
+ТОМИЋ ДАРИНКА
+ТОМИЋ ДЕЈАН
+ТОМИЋ ДЕВА
+ТОМИЋ ДРАГАН
+ТОМИЋ ДРАГАН
+ТОМИЋ ДРАГАН
+ТОМИЋ ДРАГА
+ТОМИЋ ДРАГА
+ТОМИЋ ДРАГОЉУБ
+ТОМИЋ ДРАГУТИН
+ТОМИЋ ДУШАН
+ТОМИЋ ДУШАН
+ТОМИЋ ДУШИЦА
+ТОМИЋ ЕВА
+ТОМИЋ ЕВА
+ТОМИЋ ГОРДАНА
+ТОМИЋ ГРАДИМИР
+ТОМИЋ ИЛЕ
+ТОМИЋ ИЛЕ
+ТОМИЋ ИЛИЈА
+ТОМИЋ ИЛИЈА
+ТОМИЋ ИЛИЈА
+ТОМИЋ ИВАН
+ТОМИЋ-ИВИЧИЋ БИЉАНА
+ТОМИЋ ЈЕЛЕНА
+ТОМИЋ ЈЕЛИЦА
+ТОМИЋ ЈОСИФ
+ТОМИЋ ЈОСИП
+ТОМИЋ ЈОВАНКА
+ТОМИЋ ЈОВАН
+ТОМИЋ ЈОВАН
+ТОМИЋ ЈОВАН
+ТОМИЋ ЈУЛИАНА
+ТОМИЋ КАТАРИНА
+ТОМИЋ КОНСТАНТИН
+ТОМИЋ КОРНЕЛИА
+ТОМИЋ КОСА
+ТОМИЋ КРСТА
+ТОМИЋ ЛАЗАР
+ТОМИЋ ЛАЗАР
+ТОМИЋ ЛЕПОСАВА
+ТОМИЋ ЉИЉАНА
+ТОМИЋ ЉИЉА
+ТОМИЋ ЉУБА
+ТОМИЋ ЉУБИША
+ТОМИЋ ЉУБИША
+ТОМИЋ ЉУБИША
+ТОМИЋ ЉУБИНКА
+ТОМИЋ ЉУБОМИР
+ТОМИЋ ЉУБОМИР
+ТОМИЋ МАРГИТ
+ТОМИЋ МАРИЈА
+ТОМИЋ МАРИЈА
+ТОМИЋ МАРИЈА
+ТОМИЋ МАРИЈА
+ТОМИЋ МАРКО
+ТОМИЋ МИЈОДРАГ
+ТОМИЋ МИЛАДИН
+ТОМИЋ МИЛАН
+ТОМИЋ МИЛАН
+ТОМИЋ МИЛАН
+ТОМИЋ МИЛАН
+ТОМИЋ МИЛЕНКО
+ТОМИЋ МИЛЕНКО
+ТОМИЋ МИЛЕ
+ТОМИЋ МИЛИВОЈ
+ТОМИЋ МИЛКА
+ТОМИЋ МИЛОШ
+ТОМИЋ МИЛОШ
+ТОМИЋ МИЛОМИР
+ТОМИЋ МИЛОРАД
+ТОМИЋ МИЛОРАД
+ТОМИЋ МИЛОСАВ
+ТОМИЋ МИРЈАНА
+ТОМИЋ МИРЈАНА
+ТОМИЋ МИРЈАН
+ТОМИЋ МИРКО
+ТОМИЋ МИРКО
+ТОМИЋ МИРОСЛАВ
+ТОМИЋ МИРОСЛАВ
+ТОМИЋ МИРОСЛАВ
+ТОМИЋ МИРОСЛАВ
+ТОМИЋ МИТАР
+ТОМИЋ МЛАДЕН
+ТОМИЋ МОМЧИЛО
+ТОМИЋ МОМЧИЛО
+ТОМИЋ НАТАША
+ТОМИЋ НАТАЛИЈА
+ТОМИЋ НЕБОЈША
+ТОМИЋ НЕДЕЉКА
+ТОМИЋ-НЕДЕЉКОВИЋ ДОБРИЛА
+ТОМИЋ НЕДЕЉКО
+ТОМИЋ НЕНАД
+ТОМИЋ НЕНАД
+ТОМИЋ НЕНАД
+ТОМИЋ НИКОЛА
+ТОМИЋ НИКОЛА
+ТОМИЋ НОВИЦА
+ТОМИЋ ОЛГИЦА МР
+ТОМИЋ ОЛИВЕРА
+ТОМИЋ ПАВЛЕ ДР
+ТОМИЋ ПЕЛКА
+ТОМИЋ ПЕТАР
+ТОМИЋ ПЕТКО
+ТОМИЋ РАДИВОЈЕ
+ТОМИЋ РАДОВАН
+ТОМИЋ РАДОВАН
+ТОМИЋ РАТОМИР
+ТОМИЋ РОЗАЛИЈА
+ТОМИЋ САША
+ТОМИЋ САВА
+ТОМИЋ САВА
+ТОМИЋ СЕЛИМИР
+ТОМИЋ-СИМИН МИЛКА
+ТОМИЋ СИНИША
+ТОМИЋ СЛАВИЦА
+ТОМИЋ СЛАВИЦА
+ТОМИЋ СЛАВКО
+ТОМИЋ СЛАВКО
+ТОМИЋ СЛАВКО
+ТОМИЋ СЛАВОЉУБ
+ТОМИЋ СЛОБОДАНКА
+ТОМИЋ СЛОБОДАН
+ТОМИЋ СЛОБОДАН
+ТОМИЋ СНЕЖАНА
+ТОМИЋ СОФИЈА
+ТОМИЋ СТАНКО
+ТОМИЋ СТЕВАН
+ТОМИЋ СТЕВАН
+ТОМИЋ СТЕВАН
+ТОМИЋ СТЕВАН
+ТОМИЋ СТИПА
+ТОМИЋ СТЈЕПАН
+ТОМИЋ СВЕТОЗАР
+ТОМИЋ СВЕТОЗАР
+ТОМИЋ ТАТЈАНА
+ТОМИЋ ТОДЕ
+ТОМИЋ ТОДОР
+ТОМИЋ ВАЛЕРИЈА
+ТОМИЋ ВЕЉКО
+ТОМИЋ ВЕЉКО
+ТОМИЋ ВЕРА
+ТОМИЋ ВЕРИЦА
+ТОМИЋ ВЕСНА
+ТОМИЋ ВЕСНА
+ТОМИЋ ВЕСНА
+ТОМИЋ ВИД
+ТОМИЋ ВИНКО
+ТОМИЋ ВЛАДИМИР
+ТОМИЋ ВЛАДИМИР
+ТОМИЋ ВЛАСТИМИР
+ТОМИЋ ВЛАСТИМИР
+ТОМИЋ ВОЈИСЛАВА
+ТОМИЋ ВУКОСАВА
+ТОМИЋ ЗОРАН
+ТОМИЋ ЗОРИЦА
+ТОМИЋ ЗОРКА
+ТОМИЋ ЗОРКА
+ТОМИЋ ЗОРКА
+ТОМИК ЈОВАН
+ТОМИК СОФИЈА
+ТОМИК СТЕВАН
+ТОМИН ЖИВАН
+ТОМИН АЛЕКСАНДАР
+ТОМИН БРАНИСЛАВ
+ТОМИН БРАНИСЛАВ
+ТОМИН ДИМИТРИЈЕ
+ТОМИН ДРАГАН
+ТОМИН ДРАГАН
+ТОМИН ДРАГИЊА
+ТОМИН ДУШАН
+ТОМИН ГОРДАНА
+ТОМИН ЉУБИЦА
+ТОМИН ЉУБИЦА
+ТОМИН МАРИЈА
+ТОМИН МИЛАН
+ТОМИН МИЛУТИН
+ТОМИН МИЛУТИН
+ТОМИН МИРОСЛАВ
+ТОМИН МИТАР
+ТОМИН РАДОСЛАВ
+ТОМИН СТЕВАН ДИПЛ ПРАВНИК
+ТОМИН СТЕВАН
+ТОМИН СТЕВАН
+ТОМИН СТЕВАН
+ТОМИН СТЕВАН
+ТОМИН СВЕТЛАНА
+ТОМИН ВАСА
+ТОМИН ВИДОСАВА
+ТОМИНЧИЋ МИЛОВАН
+ТОМИНАЦ ВИНКО
+ТОМКА АЛПАР
+ТОМКА КАРЛО
+ТОМЉАНОВИЋ БОГОСЛАВ
+ТОМЉАНОВИЋ ЉУБИЦА
+ТОМЉАНОВИЋ МАРИЈА
+ТОМЉАНОВИЋ МИЛАН
+ТОМО ЈОСИП
+ТОМОВ БОГДАН
+ТОМОВ МИРЧЕ
+ТОМОВ САВА
+ТОМОВ СЛОБОДАН
+ТОМОВ ТОША
+ТОМОВ ТОДОР
+ТОМОВ ВЕЛИН
+ТОМОВ ВЕЛИН
+ТОМОВИЋ АНЂА
+ТОМОВИЋ БОЖИДАР
+ТОМОВИЋ БОРИСЛАВ
+ТОМОВИЋ ДРАГИЊА
+ТОМОВИЋ ДУШАН
+ТОМОВИЋ МИТАР
+ТОМОВИЋ РАДОМИР
+ТОМОВИЋ РАДОСЛАВ
+ТОМОВИЋ СТОЈАНКА
+ТОМОВИЋ ТОМО
+ТОМОВИЋ ВАСИЛИЈЕ
+ТОМОВИЋ ЗОРАН
+ТОМОВИЋ ЗОРИЦА
+ТОНЧЕВ ИВАН
+ТОНДОЛО СМИЉА
+ТОНИЋ ЖИКИЦА
+ТОНИЋ РУЖИЦА
+ТОНИЋ СТОЈИМЕН
+ТОНКОВИЋ ЈОЦА
+ТОНКОВИЋ ЈОСИП
+ТОНКОВИЋ МИЛАН
+ТОНКОВИЋ МИЛАН
+ТОНТЕ ФРИЂЕШ
+ТОНТИЋ ЂОРЂЕ
+ТОНТИЋ ДУШАН
+ТОПАЛОВ ДУШАН
+ТОПАЛОВ ГАВРА ДИПЛ ИНГ
+ТОПАЛОВ ЈЕЛИЦА
+ТОПАЛОВ МЕЛАНИЈА
+ТОПАЛОВ МЕЛАНИЈА
+ТОПАЛОВ МИХАЈЛО
+ТОПАЛОВ МИЛЕНА
+ТОПАЛОВ МИЛОШ
+ТОПАЛОВ МИЛОРАД
+ТОПАЛОВ НАДА
+ТОПАЛОВ ПЕТАР
+ТОПАЛОВ СОФИЈА
+ТОПАЛОВ СПАСОЈЕ
+ТОПАЛОВ СТАНИСЛАВА
+ТОПАЛОВ СТЕВАН
+ТОПАЛОВ СТЕВАН
+ТОПАЛОВ СТЕВАН
+ТОПАЛОВ СВЕТОЗАР
+ТОПАЛОВ ВАСИЛИЈЕ
+ТОПАЛОВ ВЕРА
+ТОПАЛОВИЋ БОЖО
+ТОПАЛОВИЋ ДУШАН
+ТОПАЛОВИЋ ДУКАТИНКА
+ТОПАЛОВИЋ ЕМИЛИЈА
+ТОПАЛОВИЋ ЈЕЛЕНА
+ТОПАЛОВИЋ ЈУЛИЈЕ
+ТОПАЛОВИЋ МИХАЈЛО
+ТОПАЛОВИЋ МИЛАН
+ТОПАЛОВИЋ МИРКО
+ТОПАЛОВИЋ НЕВЕНКА
+ТОПАЛОВИЋ РАДОЈИЦА
+ТОПАЛОВИЋ СТАНИЈА
+ТОПАЛОВИЋ ВЛАЈКО
+ТОПАЛСКИ ДАНИЛО
+ТОПАЛСКИ ДУШАНКА
+ТОПАЛСКИ-ФИШТЕШ НАДА
+ТОПАЛСКИ МИЛЕНА
+ТОПАЛСКИ ЗОРАН
+ТОПАР МАРИЈА
+ТОПИЋ ЧЕДО
+ТОПИЋ ЂУРО
+ТОПИЋ АНТО
+ТОПИЋ ЦВИЈА
+ТОПИЋ ДАНИЦА
+ТОПИЋ ДАНИЦА
+ТОПИЋ ДРАГАН
+ТОПИЋ ДРАГАН
+ТОПИЋ ИЛИЈА
+ТОПИЋ ЈОВАН
+ТОПИЋ ЈОВАН
+ТОПИЋ ЛЕОН
+ТОПИЋ ЉУБО
+ТОПИЋ МАРИЈА
+ТОПИЋ МИЛАДИНКА
+ТОПИЋ МИЛАН
+ТОПИЋ МИЛИВОЈЕ
+ТОПИЋ МИЛИВОЈ
+ТОПИЋ МИЛОРАД
+ТОПИЋ МИЛОРАД
+ТОПИЋ МИЛОРАД
+ТОПИЋ МИЛОРАД
+ТОПИЋ МИЛОВАН
+ТОПИЋ МИРКО
+ТОПИЋ МИТАР
+ТОПИЋ НАТАЛИЈА
+ТОПИЋ НЕЂО
+ТОПИЋ НИКО
+ТОПИЋ ПЕТАР
+ТОПИЋ РАТКО
+ТОПИЋ СРЕТЕН
+ТОПИЋ СТЕВАН
+ТОПИЋ ТАТЈАНА
+ТОПИЋ ВОЈИН
+ТОПИЋ ВОЈИСЛАВ
+ТОПКА АЛЕКСАНДАР
+ТОПКА АЛЕКСАНДАР
+ТОПЛАК ИМРЕ
+ТОПЛИЦА АБЕДИН
+ТОПЛИЦА ГАНИ
+ТОПЛИЦА НЕЂМЕДИН
+ТОПЛИЦА РАМАДАН
+ТОПЛИЦА ЗЕЋИР
+ТОПЛИЦА ЗЕНИЈА
+ТОПО АНТОНИЈА
+ТОПО ЉУБОМИР
+ТОПО НЕНАД
+ТОПОЛЧЕВИЋ ЈОВАН
+ТОПОЛАЦ РАДИВОЈ ДР ЛЕКАР
+ТОПОЛИЋ ЂУРА
+ТОПОЛИЋ ДУШАН
+ТОПОЛИЋ ПЕЈА
+ТОПОЉАНИН ВЛАДИСЛАВА
+ТОПОЛКОВИЋ ВЛАДИМИР
+ТОПОЛОВАЧКИ РАДОВАН
+ТОПОЛОВАЧКИ ВУКОСАВА
+ТОПРЕК СИМО
+ТОРЂАНСКИ АЛЕКСАНДАР
+ТОРБАРОВ ДУШАН
+ТОРБИЦА АЛЕКСА
+ТОРБИЦА БОРИСЛАВ
+ТОРБИЦА ДУШАН
+ТОРБИЦА ДУШАН
+ТОРБИЦА ИЛИЈА
+ТОРБИЦА ЈЕЛКА
+ТОРБИЦА ЈУЛКА
+ТОРБИЦА МАРИЈА
+ТОРБИЦА МИЛОШ
+ТОРБИЦА МИРОСЛАВ
+ТОРБИЦА НАДА
+ТОРБИЦА РАДОСЛАВ
+ТОРБИЦА ВЕРИЦА
+ТОРДА ЈАНКО
+ТОРДАИ ИЛОНА
+ТОРДАИ МАРИЈА
+ТОРДАИ СВЕТЛАНА
+ТОРДАЈ МИШКО
+ТОРДАЈИ ЈАНКО
+ТОРЕР ЂУРА
+ТОРМА ГЕЗА
+ТОРМА ЈОСИП
+ТОРМА ЈОВАН
+ТОРМА МАРГИТА
+ТОРМА СТЕВАН
+ТОРМА ВИЛИМ
+ТОРМАШИ ЂЕРЂ
+ТОРМАШИ ЈАНОШ
+ТОРМАШИ СМИЉКА
+ТОРМАШИ СТЕВАН
+ТОРМОШИ ЈОЖЕФ
+ТОРЊАНСКИ ЖАРКО
+ТОРЊАНСКИ БОРИСЛАВ
+ТОРЊАНСКИ БРАНИСЛАВ
+ТОРЊАНСКИ ЈЕЛКА
+ТОРЊАНСКИ СВЕТИСЛАВ
+ТОРОК ЧАБА
+ТОРОМАН БРАНИСЛАВ
+ТОРОМАН НЕЂЕЉКО
+ТОРОМАН РАДИСАВ
+ТОРОМАН РАДМИЛА
+ТОРОМАН РАДОЈИЦА
+ТОРОВИЋ ТРИПО
+ТОРТИЋ АНДРИЈА
+ТОРТИЋ ЈОСИП
+ТОРТИЋ МИХАЈЛО
+ТОРТИЋ СТЕВАН
+ТОРТИЋ ВЕРА
+ТОСМАН ЈОСИП
+ТОСУНОВИЋ ЈЕЛИСАВЕТА
+ТОСУНОВИЋ МАРИЈА
+ТОСУНОВИЋ ВЛАДИМИР
+ТОТ ШАНДОР
+ТОТ ШАНДОР
+ТОТ ШАНДОР
+ТОТ АМАЛИЈА
+ТОТ АНА
+ТОТ АНА
+ТОТ АНДРАШ
+ТОТ АНДРИЈА
+ТОТ АНДРИЈА
+ТОТ АНИЦА
+ТОТ АНТАЛ ДИПЛ ИНГ
+ТОТ АНТОНИЈА
+ТОТ АРПАД
+ТОТ-АРВАИ АНТАЛ
+ТОТ-АРВАИ ЈАНОШ
+ТОТ-АРВАИ ЈАНОШ
+ТОТ-БАГИ ИМРЕ
+ТОТ-БАГИ ЈАНОШ
+ТОТ-БАГИ МАРИЈА
+ТОТ БАЛИНТ
+ТОТ БЕРТА
+ТОТ-БОЈНИК ДЕЗИДЕР ДИПЛ ИНГ
+ТОТ БОРА
+ТОТ ДЕЖЕ
+ТОТ ДУШАНКА
+ТОТ ФЕРЕНЦ
+ТОТ ФЕРЕНЦ
+ТОТ ФЕРЕНЦ
+ТОТ ФЕРЕНЦ
+ТОТ ФЕРЕНЦ
+ТОТ ФРАЊА
+ТОТ ФРАЊА
+ТОТ ФРАЊА
+ТОТ ГАБОР
+ТОТ ГЕЗА
+ТОТ-ХОРТИ ШАНДОР
+ТОТ ИШТВАН
+ТОТ ИШТВАН
+ТОТ ИШТВАН
+ТОТ ИБОЉА ДР
+ТОТ ИЛОНА
+ТОТ ИЛОНА
+ТОТ ИЛОНА
+ТОТ ИМРЕ
+ТОТ ИРЕНА
+ТОТ ИРЕНА
+ТОТ ИВАН
+ТОТ ЈАНОШ
+ТОТ ЈАНОШ
+ТОТ ЈАНОШ
+ТОТ ЈЕЛЕНА
+ТОТ ЈОЖЕФ
+ТОТ ЈОЖЕФ
+ТОТ ЈОЖЕФ
+ТОТ ЈОЖЕФ
+ТОТ ЈОЖЕФ
+ТОТ ЈОСИП
+ТОТ ЈОВАНКА
+ТОТ ЈОВАН
+ТОТ ЈУЛИЈАНА
+ТОТ ЈУЛИЈАНА
+ТОТ ЈУЛИЈА
+ТОТ-КАША БЛАЖ
+ТОТ КАРОЉ
+ТОТ КАРОЉ
+ТОТ КАТАРИНА
+ТОТ КАТИЦА
+ТОТ КОВИЉКА
+ТОТ ЛАЈОШ
+ТОТ ЛАЈОШ
+ТОТ ЛАСЛО ДР
+ТОТ ЛАСЛО
+ТОТ ЛАСЛО
+ТОТ ЛАСЛО
+ТОТ ЛИВИЈА
+ТОТ МАГДОЛНА
+ТОТ МАРГИТА
+ТОТ МАРГИТА
+ТОТ МАРИЈА
+ТОТ МАРИЈА
+ТОТ МАРИЈА
+ТОТ МАРИЈА
+ТОТ МИХАЉ
+ТОТ МИХАЉ
+ТОТ МИКЛОШ
+ТОТ МИЛАНКА
+ТОТ МИЛКА
+ТОТ МИРОСЛАВ
+ТОТ НЕБОЈША
+ТОТ ОЛГА
+ТОТ ПАЛИКА
+ТОТ ПАЛ
+ТОТ ПАЛ
+ТОТ ПАЛ
+ТОТ ПАВЛЕ
+ТОТ РОЗАЛИЈА
+ТОТ РОЗАЛИЈА
+ТОТ СИЛВЕСТЕР
+ТОТ СТЕВАН
+ТОТ СТЕВАН
+ТОТ СТЕВАН
+ТОТ СТЈЕПАН
+ТОТ ТЕРЕЗА
+ТОТ ТЕРЕЗА
+ТОТ ТИБОР
+ТОТ ТОМИСЛАВ
+ТОТ ВАЛЕРИЈА
+ТОТ ВЛАДИМИР
+ТОТ ВЛАДИСЛАВ
+ТОТ ЗИТА
+ТОТ ЗЛАТА
+ТОТ ЗОЛТАН
+ТОТ ЗОРА
+ТОТАРВАИ МАРИЈА
+ТОТХ СИЛВЕСТЕР
+ТОТИЋ СВЕТОЗАР
+ТОТОВИЋ ЈОВАНКА
+ТОТОВИЋ МИЛАН
+ТОВАРЛОЖА ДУШАНКА
+ТОВЕРНИЋ ЗОРА
+ТОВИЛОВИЋ СВЕТЛАНА
+ТОВИЛОВИЋ ЗОРАН
+ТОВИТОВИЋ НИКОЛА
+ТОВИТОВИЋ СЛОБОДАН
+ТОВЈАНИН БИЉАНА
+ТОВЉАНИЋ ДУШАН
+ТОВЉАНИЋ САВА
+ТРАЖИ ПАЛ
+ТРАБАК КАТАРИНА
+ТРАИЛОВИЋ НАДА
+ТРАИЛОВИЋ СЕЛИМИР
+ТРАИЛОВИЋ ВОЈИСЛАВ
+ТРАЈЧЕВИЋ ЛЕПОСАВА
+ТРАЈЧЕВСКА АНИТА
+ТРАЈАНОВСКИ ЉУБИЦА
+ТРАЈАНОВСКИ ЉУБО
+ТРАЈАНОВСКИ МОЈСО
+ТРАЈАНОВСКИ ТРАЈАН
+ТРАЈБАР АДОЛФ
+ТРАЈБАР ЗВОНИМИР
+ТРАЈЕР ЛАДИСЛАВ ДР
+ТРАЈЕР РОБЕРТ
+ТРАЈКОВИЋ БОЖИДАР
+ТРАЈКОВИЋ БРАНИМИР
+ТРАЈКОВИЋ БРАНИСЛАВ
+ТРАЈКОВИЋ БРАНКО
+ТРАЈКОВИЋ ДИМИТРИЈЕ
+ТРАЈКОВИЋ ГЛИГОРИЈЕ
+ТРАЈКОВИЋ МИЛАН
+ТРАЈКОВИЋ МИЛОРАД
+ТРАЈКОВИЋ НАДА
+ТРАЈКОВИЋ НАЈДАН
+ТРАЈКОВИЋ РУЖИЦА
+ТРАЈКОВИЋ СЛОБОДАН
+ТРАЈКОВИЋ СТОЈАДИН
+ТРАЈКОВСКИ ДИМИТРИЈЕ
+ТРАЈКОВСКИ МЕТОДИЈЕ
+ТРАЈКОВСКИ ПАНТА
+ТРАКИЛОВИЋ ВЛАДА
+ТРАЉИЋ ИВАН
+ТРАНДАФИР ВАСИЛИЈЕ
+ТРАНКОЛОВИЋ ЦВЕТА
+ТРАНКУЛОВ ЈОЖЕФ
+ТРАУМ АРАНКА
+ТРАВАЊ ЈОВАНКА
+ТРАВАР ЂУРО
+ТРАВАР ЉУБИША
+ТРАВАР МИЛОСАВ
+ТРАВИЦА МИЛАН
+ТРАВИЦА МИЛЕ
+ТРАВИЦА НИКОЛА
+ТРАВИЦА РАДЕ
+ТРБАНОС ЖИВА
+ТРБИЋ БРАНИСЛАВ
+ТРБИЋ ЉУБИША
+ТРБИЋ МИЛАДИН
+ТРБИЋ МИРОСЛАВ
+ТРБИЋ ТАМАРА
+ТРБИЋ ВЛАДИМИР
+ТРБОЈЕВИЋ ЂОРЂЕ
+ТРБОЈЕВИЋ ЂУРАЂ
+ТРБОЈЕВИЋ БОГОЉУБ
+ТРБОЈЕВИЋ БРАНКО
+ТРБОЈЕВИЋ ДРАГИЦА
+ТРБОЈЕВИЋ ГАВРА
+ТРБОЈЕВИЋ ИДА
+ТРБОЈЕВИЋ ИЛИЈА
+ТРБОЈЕВИЋ ЈОВАН
+ТРБОЈЕВИЋ ЛАЗА
+ТРБОЈЕВИЋ МАРИЦА
+ТРБОЈЕВИЋ МИЛЕ
+ТРБОЈЕВИЋ МИЛИЦА
+ТРБОЈЕВИЋ НИКОЛА
+ТРБОЈЕВИЋ НИКОЛА
+ТРБОЈЕВИЋ СТЕВАН
+ТРБОЉЕВАЦ ДРАГОСЛАВ
+ТРБОВИЋ МИХАЈЛО ДИПЛ ПРАВНИК
+ТРБОВИЋ МИЛАН
+ТРБОВИЋ МИЛАН
+ТРБОВИЋ ВЕСНА
+ТРЕШЊИЋ АЛЕКСАНДРА
+ТРЕШЊИЋ ЈОВАН
+ТРЕШЊИЋ СТЕВАН
+ТРЕЋАКОВ СТОЈАН
+ТРЕБАТИЦКИ АЛЕКСАНДАР
+ТРЕБАТИЦКИ АЛЕКСАНДАР
+ТРЕБАТИЦКИ ЈУСТИНА
+ТРЕБАТИЦКИ МАРИЈА
+ТРЕБИЧНИК-ВУЧИЋ ОЛГА
+ТРЕБОВАЦ МИЛЕ
+ТРЕНЧЕВСКИ НАДЕЖДА
+ТРЕПАНИЋ МАХМУТ
+ТРЕСИГЛАВИЋ КАТИЦА
+ТРЕСИГЛАВИЋ МИЛАН
+ТРЕСИГЛАВИЋ СЛАВКО
+ТРЕСИГЛАВИЋ СТЕВАН
+ТРЕСИГЛАВИЋ ВАСА
+ТРЕСИГЛАВИЋ ВАСА
+ТРЕСКИЋ ЗДРАВКО
+ТРГАЛА ЂУРА
+ТРГО НЕВЕНКА
+ТРИЧКОВИЋ АНКА
+ТРИЧКОВИЋ ЈУЛКА
+ТРИЧКОВИЋ МИОДРАГ
+ТРИЧКОВИЋ СИНИША
+ТРИЧКОВИЋ ВЕРИЦА
+ТРИШИЋ ХРАНИСЛАВ
+ТРИШИЋ-ИЛИЋ СВЕТЛАНА
+ТРИШИЋ МЛАДЕН
+ТРИФКОВИЋ ЈОВИЦА
+ТРИФКОВИЋ КУЗМАН
+ТРИФКОВИЋ ЉУБИЦА
+ТРИФКОВИЋ МАРКО
+ТРИФКОВИЋ МИЛАДИН
+ТРИФКОВИЋ МИЛАН
+ТРИФКОВИЋ МИЛАН
+ТРИФКОВИЋ МИЛИСАВ
+ТРИФКОВИЋ МИРОСЛАВА
+ТРИФКОВИЋ НЕДЕЉКО
+ТРИФКОВИЋ СРЂА ДР
+ТРИФКОВИЋ ВЛАДИМИР
+ТРИФКОВИЋ ВОЈИСЛАВ
+ТРИФУ ДОРУ
+ТРИФУНЧЕВИЋ МАРИЈА
+ТРИФУНЧЕВИЋ МИЛОШ
+ТРИФУЊАГИЋ СПАСОЈЕ
+ТРИФУЊАГИЋ СВЕТИСЛАВ
+ТРИФУНОВ ДАНИЛО
+ТРИФУНОВ ЈОСИФ
+ТРИФУНОВ МИОДРАГ
+ТРИФУНОВ РАДМИЛА
+ТРИФУНОВИЋ ЖИКИЦА
+ТРИФУНОВИЋ ЖИВКА
+ТРИФУНОВИЋ БОШКО
+ТРИФУНОВИЋ ДАНКА
+ТРИФУНОВИЋ ДРАГАН
+ТРИФУНОВИЋ ДРАГОМИР
+ТРИФУНОВИЋ ИЛИНКА
+ТРИФУНОВИЋ ЈЕЛЕНА
+ТРИФУНОВИЋ ЈОВАН
+ТРИФУНОВИЋ ЈОВАН
+ТРИФУНОВИЋ МАКСИМ
+ТРИФУНОВИЋ МИЛИСАВ
+ТРИФУНОВИЋ МИЛОРАД ДИПЛ ИНГ
+ТРИФУНОВИЋ МИРЈАНА
+ТРИФУНОВИЋ МИРКО
+ТРИФУНОВИЋ НАДА
+ТРИФУНОВИЋ НАДЕЖДА
+ТРИФУНОВИЋ НЕГОВАНКА
+ТРИФУНОВИЋ ОЛГА
+ТРИФУНОВИЋ ПАВЛЕ
+ТРИФУНОВИЋ ПЕТАР
+ТРИФУНОВИЋ ПЕТАР
+ТРИФУНОВИЋ РАДИВОЈ
+ТРИФУНОВИЋ РАДМИЛА
+ТРИФУНОВИЋ РАДОМИР ДИПЛ ПРАВНИК
+ТРИФУНОВИЋ РУЖИЦА
+ТРИФУНОВИЋ СЛАВИЦА
+ТРИФУНОВИЋ СЛОБОДАН ДР
+ТРИФУНОВИЋ СЛОБОДАН
+ТРИФУНОВИЋ СОФИЈА
+ТРИФУНОВИЋ СТАНА
+ТРИФУНОВИЋ СВЕТИСЛАВ ДР
+ТРИФУНОВИЋ СВЕТОМИР
+ТРИФУНОВИЋ ТРИФУН
+ТРИФУНОВИЋ ВАСА
+ТРИФУНОВИЋ ВЕРА
+ТРИФУНОВИЋ ВЛАДАН
+ТРИФУНОВИЋ ВЛАДИМИР
+ТРИФУНОВИЋ ВЛАДИМИР
+ТРИФУНОВИЋ ВОЈИСЛАВ
+ТРИФУНОВИЋ ВУКОСАВА
+ТРИФУНОВИЋ ВУКОСАВ
+ТРИКИЋ ДРАГИЦА
+ТРИКИЋ МИРКО
+ТРИКИЋ РОСА
+ТРИКИЋ СВЕТОЗАР
+ТРИКИЋ ВЛАДИМИР
+ТРИПКОВИЋ МИЛАН
+ТРИПКОВИЋ СЛОБОДАН
+ТРИПОЛСКИ МАРИЈА
+ТРИПУНОВИЋ ЂОРЂИЈА
+ТРИПУНОВИЋ БЛАЖО
+ТРИПУНОВИЋ ДРАГОМИР
+ТРИС ЈАКОБ
+ТРИВАНОВИЋ ДРАГАН
+ТРИВАНОВИЋ РАДЕ
+ТРИВАНОВИЋ СТЕВАН
+ТРИВАНОВИЋ ВЕРА
+ТРИВИЋ БОРИС
+ТРИВИЋ БРАНИСЛАВ
+ТРИВИЋ ДОБРИВОЈЕ
+ТРИВИЋ ДУШАН
+ТРИВИЋ ЈОВАН
+ТРИВИЋ СВЕТЛАНА
+ТРИВУНЧИЋ МИРА
+ТРИВУНЏА МИЛОШ
+ТРИВУНЏА НЕНАД
+ТРИВУНИЋ БОГОЉУБ
+ТРИВУНИЋ МИРОСЛАВ
+ТРИВУНИЋ РАНКО
+ТРИВУНОВИЋ МЛАДЕНКО
+ТРИВУНОВИЋ СИМО
+ТРИВУНОВИЋ ТИХОМИР
+ТРИЗЛИЋ СЛАВКО
+ТРКЉА ГОЈКО
+ТРКЉА МИРКО
+ТРКУЉА ЖИВОРАД
+ТРКУЉА АНА
+ТРКУЉА БОШКО
+ТРКУЉА БОРИСЛАВ
+ТРКУЉА БРАНКО
+ТРКУЉА ДРАГАН
+ТРКУЉА ДРАГАН
+ТРКУЉА ЕСТЕР
+ТРКУЉА ГОЈКО
+ТРКУЉА ГРОЗДА
+ТРКУЉА ЈОВАН
+ТРКУЉА ЈУЛКА
+ТРКУЉА МАРИНКО
+ТРКУЉА МИЛАН
+ТРКУЉА МИЛОРАД
+ТРКУЉА МИОДРАГ
+ТРКУЉА МИОДРАГ
+ТРКУЉА НЕДЕЉКО
+ТРКУЉА НИКОЛА
+ТРКУЉА НОВАК
+ТРКУЉА НОВАК
+ТРКУЉА ПЕТАР
+ТРКУЉА РАНКО
+ТРКУЉА СЛАВКО
+ТРКУЉА СОФИЈА
+ТРКУЉА СОЊА
+ТРКУЉА СТЕВАН
+ТРКУЉА СТОЈАНКА
+ТРКУЉА ВЛАДИСЛАВА
+ТРМЧИЋ РАДОСЛАВ
+ТРНЧИЋ ЛАЗО
+ТРНАВАЦ МИЛАН
+ТРНИЋ РАДМИЛА
+ТРНИЋ ВЕРА
+ТРНИНИЋ ЖИВАН
+ТРНИНИЋ ЖИВОЈИН
+ТРНИНИЋ ЂОРЂЕ
+ТРНИНИЋ ЂУРА
+ТРНИНИЋ БОГДАН
+ТРНИНИЋ БОЈА
+ТРНИНИЋ БОРИВОЈ
+ТРНИНИЋ БОСИЉКА
+ТРНИНИЋ ДОБРИВОЈ
+ТРНИНИЋ ДРАГАН
+ТРНИНИЋ ДРАГАН
+ТРНИНИЋ ДУШАН
+ТРНИНИЋ МАРА
+ТРНИНИЋ МАРИЈА
+ТРНИНИЋ МИРКО
+ТРНИНИЋ МИРКО
+ТРНИНИЋ МИРОСЛАВ
+ТРНИНИЋ МОМЧИЛО
+ТРНИНИЋ ОЛИВЕРА
+ТРНИНИЋ РАДИВОЈ
+ТРНИНИЋ РАДОЈКА
+ТРНИНИЋ РАДОВАН
+ТРНИНИЋ СТЕВА
+ТРНИНИЋ ВЛАДИМИР
+ТРЊАКОВ ДУШАН
+ТРНОВАЦ НАДА
+ТРОЧА КОРНЕЛ
+ТРОШЕЉАЦ МАТО
+ТРОШКИН САВЕТА
+ТРОШКИН ТАМАРА
+ТРОЈАНОВ ЕДВАРД
+ТРОЈАНОВ МАРИЈА
+ТРОЈАНОВ РОМАН
+ТРОЈКОВИЋ ИЛОНА
+ТРОМЛЕР ЛАСЛО
+ТРПЧЕВИЋ МИРОСЛАВ
+ТРПЧЕВСКИ ТОМЧЕ
+ТРПИНАЦ ЈЕЛЕНА
+ТРПКА ПАВЛЕ
+ТРПКА ПАВЛЕ
+ТРПОВСКИ ВАСИЉ
+ТРСТЕЊАК ФРАЊА
+ТРТИЋ СЛАВКО
+ТРУШНОВЕЦ ИВАН
+ТРУБАРАЦ ГАБРИЈЕЛА
+ТРУДА АЛИЈА
+ТРУДИЋ ИВАН
+ТРУЈИЋ ДУШИЦА
+ТРУЈИЋ МИЛОШ ВЕТЕРИНАР
+ТРУМБИЋ ВЕДРАН
+ТРУМИЋ СОФИЈА
+ТРУМИЋ ВЕРА
+ТУЧЕВ ЖИВАНКА
+ТУШЕВ ЖИВКО
+ТУШЈАК ЈАН
+ТУШЈАК ЈУРАЈ
+ТУШЈАК МИЛОШ
+ТУШНЕК ОТИЛИЈА
+ТУШЊАК АНА
+ТУБИЋ ЖИВАН
+ТУБИЋ АЛЕКСАНДАР
+ТУБИЋ БРАНИСЛАВ
+ТУБИЋ ДРАГУТИН
+ТУБИЋ ДУШАН
+ТУБИЋ ДУШАН
+ТУБИЋ ЈУГОСЛАВ
+ТУБИЋ ЛЕПОСАВА
+ТУБИЋ МИЛАН
+ТУБИЋ МИЛЕНКО
+ТУБИЋ МИЛИВОЈ
+ТУБИЋ МИЛОШ
+ТУБИЋ МИЛОЈКО
+ТУБИЋ МИЛОРАД
+ТУБИЋ НИКОЛА
+ТУБИЋ НОВАК
+ТУБИЋ ОЛГА
+ТУБИЋ ПЕТАР
+ТУБИЋ РАДА
+ТУБИЋ РАДМИЛА
+ТУБИЋ РАДОВАН
+ТУБИЋ САВА
+ТУБИЋ СТАНКО
+ТУБИЋ СВЕТОЗАР ДР
+ТУБИЋ ВЕРА
+ТУБИЋ ВЛАДИМИР
+ТУБИЋ ЗОРАН
+ТУБИН КАТАРИНА
+ТУБИН СТОЈАН ДИПЛ ИНГ
+ТУБИН СТОЈА
+ТУБИН ТОМИСЛАВ
+ТУБИН ЗОРКА
+ТУЦАКОВ ЂОРЂЕ
+ТУЦАКОВ ЂОРЂЕ
+ТУЦАКОВ БОШКО
+ТУЦАКОВ БОГДАНКА
+ТУЦАКОВ БОРА
+ТУЦАКОВ БРАНКО
+ТУЦАКОВ ДАРИНКА
+ТУЦАКОВ ДРАГАН
+ТУЦАКОВ КАМЕНКО
+ТУЦАКОВ ЛАТИНКА
+ТУЦАКОВ МАРИЈА
+ТУЦАКОВ МАРКО
+ТУЦАКОВ МИЛАН
+ТУЦАКОВ МИЛАН
+ТУЦАКОВ МИЛИЦА
+ТУЦАКОВ НОВАК
+ТУЦАКОВ РАДИВОЈ
+ТУЦАКОВ РАДОЈКА
+ТУЦАКОВ РАДОСЛАВ
+ТУЦАКОВ РАЈКО
+ТУЦАКОВ СИНИША
+ТУЦАКОВ ТАНАСИЈЕ
+ТУЦАКОВ ВЕРА
+ТУЦАКОВ ВЛАДИМИР
+ТУЦАКОВ ЗОРАНА
+ТУЦАКОВ ЗОРА
+ТУЦАКОВИЋ ЂОРЂЕ
+ТУЦАКОВИЋ ДАНИЦА
+ТУЦАКОВИЋ ДЕСАНКА
+ТУЦАКОВИЋ ЈОВАН
+ТУЦАКОВИЋ МИЛОШ
+ТУЦАКОВИЋ РАДОСЛАВ
+ТУЦИЋ ЂОРЂЕ
+ТУЦИЋ БРАНИСЛАВ
+ТУЦИЋ ЛАЗАР
+ТУЦИЋ МИЛЕНКО
+ТУЦИЋ МИРОСЛАВА
+ТУЦИЋ МИРОСЛАВ
+ТУЦИЋ ВУЈИЦА
+ТУЦОВИЋ ЗОРА
+ТУФЕГЏИЋ МИЛЕН
+ТУКАЧ МИХАЈЛО
+ТУКАНИЋ ЕНДРЕ
+ТУКАНИЋ ИРЕНА
+ТУКАР ФАДИЛ
+ТУКАР МИРЈАНА
+ТУКИЋ ПЕТАР
+ТУКИЋ СТОЈАНКА
+ТУЛАЋ ЈОВИЦА
+ТУЛЕНЧИЋ КАТИЦА
+ТУЛЕНЧИЋ РАДОСЛАВА
+ТУЛЕНЧИЋ РАДОСЛАВ
+ТУЛИЋ БОРКО
+ТУЛИЋ НЕВЕНКО
+ТУЛУБЕЦ ЂОРЂЕ
+ТУЛУБЕЦ МИЛКА
+ТУЛУБЕЦ ВАСИЛИЈЕ
+ТУМАРИЋ БРАНИСЛАВ
+ТУМАРИЋ ЦВЕТИН
+ТУМАРИЋ МИЛОРАД
+ТУМБАС АГНЕЗА
+ТУМБАС ИВАН
+ТУМБАС ЉУДЕВИТ
+ТУМИН ДУШАНКА
+ТУНГУЗ ЈЕЛИСАВЕТА
+ТУНИЋ РАДОЈИЦА
+ТУНИЋ РАЈКО
+ТУНИЋ СПАСОЈЕ
+ТУНИЋ СТЕВАН
+ТУНТЕВ МАРИЈА
+ТУПАНЧЕВСКИ НИКОЛА
+ТУПЕЦ ЗВОНИМИР
+ТУПИЋ НЕВЕНКА
+ТУР МИХАЈЛО
+ТУР СУЗАНА
+ТУРЧАН ЈАН
+ТУРЧАН ЈАН
+ТУРЧАН ЈУРАЈ
+ТУРЧАН ВЛАДИМИР СУДИЈА
+ТУРЧИЋ МИРОСЛАВА
+ТУРШИЋ ЈЕЛЕНА
+ТУРШИЈАН ВАСА
+ТУРАИ БЕЛА
+ТУРАИ МИХАЈЛО
+ТУРАИ ТЕРЕЗА
+ТУРАЈЛИЋ МИЛЕ
+ТУРАЈЛИЈА БОЖИЦА
+ТУРАЈЛИЈА МИРОСЛАВ
+ТУРАН ЂУРА
+ТУРАН ЉУБИЦА
+ТУРАНСКИ ЂОРЂЕ
+ТУРАНСКИ ФЕРЕНЦ
+ТУРАНСКИ ГЕЗА
+ТУРАНСКИ ЈАНОШ
+ТУРАНСКИ ЈОСИП
+ТУРАНСКИ ЛАСЛО
+ТУРАНСКИ МАРИЦА
+ТУРАНСКИ МАРИЈА
+ТУРАНСКИ МАТИЈА
+ТУРАНСКИ ПЕТАР
+ТУРАНСКИ СТЕВАН
+ТУРИ АРПАД
+ТУРИ ТИБОР
+ТУРИЋ ЛУКА
+ТУРИЋ МАРИНКО
+ТУРИКА ЈОСИМ
+ТУРИНСКИ ДУШАН
+ТУРИНСКИ ЕДИТА
+ТУРИНСКИ МИЛЕТА
+ТУРИНСКИ МИОМИР
+ТУРК МИРКО
+ТУРК НАДА
+ТУРКАЉ КАТА
+ТУРКОВИЋ ХАКИЈА
+ТУРКОВИЋ МИРКО
+ТУРКОВИЋ МИТАР
+ТУРКОВИЋ ПЕТАР
+ТУРКОВИЋ РАФИТ
+ТУРКОВИЋ ВЛАДИМИР
+ТУРКОВИЋ ЗИНКА
+ТУРКУЛОВ ЖАКЛИНА
+ТУРКУЛОВ ДУШАН
+ТУРКУЛОВ ЈОВАН
+ТУРЛАКОВ ЦВЕТАН
+ТУРНАЈ СЛАВОЉУБ ДИПЛ ИНГ
+ТУРО МИХАЉ
+ТУРОМАН МИЛОРАД
+ТУРОПОЉАЦ МИЋО
+ТУРУДИЋ МИЛАН
+ТУРУДИЋ МИОДРАГ
+ТУРУДИЈА МИЛОРАД
+ТУРУКАЛО МИОДРАГ
+ТУРУКАЛО РАДМИЛА
+ТУРУКАЛО ЗОРА
+ТУРЗО ЈЕЛИСАВЕТА
+ТУРЗО КАРЛО
+ТУТИЋ ИЛИЈА
+ТУТНИЛОВИЋ НАДА
+ТУТЊЕВИЋ БОЖЕНКА
+ТУТЊЕВИЋ БОГДАН
+ТУТЊЕВИЋ ЈОВАН
+ТУТЊЕВИЋ МИРОСЛАВ
+ТУТЊЕВИЋ РАДОЈКА
+ТУТОРОВ ДЕСАНЧИЋ
+ТУТОРОВ ЈУЛКИЦА
+ТУТОРОВ СТАНА
+ТУТОРОВ СТЕВАН
+ТУТУЛУГЏИЈА МАРА
+ТУВЕЏИЋ ДРАГАНА
+ТУВИЋ СЛОБОДАН
+ТВРТКОВИЋ МАРИН ДР ЛЕКАР
+УШЋЕБРКА ЛАЗАР
+УШЋЕБРКА МИЛЕНКО
+УШЋЕБРКА ЗЛАТО
+УШЋУМЛИЋ МИЛЕНКО
+УШЋУМЛИЋ НЕШКО
+УШЋУМЛИЋ ВУКИЦА
+УШАН ЈАНЕЗ
+УШЈАК ЈАНКО
+УШЈАК ЈАРМИЛА
+УШЈАК ВЛАСТА
+УШЉЕБРКА МИЛОРАД
+УШТИПАК ЈЕЛА
+УЋУКАЛО СИМО
+УЖАР ДЕСАНКА
+УЖАР КАТИЦА
+УЖИЧАНИН ЂОРЂЕ
+УБАВЧИЋ САВА
+УБАВИЋ ДАРИНКА
+УБАВИЋ ЉУБИЦА
+УБАВИЋ МОМЧИЛО ДР
+УБИПАРИП ЧЕДО
+УБИПАРИП ЖИВКО
+УБИПАРИП ГОЈКО
+УБИПАРИП ИЛЕ
+УБИПАРИП ЈАЊА
+УБИПАРИП ЈОВО
+УБИПАРИП МАРИНКО
+УБИПАРИП МАРКО
+УБИПАРИП МИЛАН
+УБИПАРИП МИРКО
+УБИПАРИП МОМИР
+УБИПАРИП ПАВЛЕ
+УБИПАРИП СЛАВКО
+УБИПАРИП ТОДЕ
+УБИПАРИП ВОЈКО
+УБИПАРИП ЗДРАВКО
+УБИПАРИП ЗОРАН
+УБОРКА ШАНДОР
+УБОРКА МАРТОН
+УБОРКА СТЕВКА
+УБОРЊИ ШАНДОР
+УБОРЊИ АНДРАШ
+УБОВИЋ ЕВА
+УБОВИЋ ЈЕФТА
+УБОВИЋ ЈОВИЦА
+УБОВИЋ МАРКО
+УБОВИЋ МИЛОШ
+УБОВИЋ ПЕТРА
+УБОВИЋ РАЈКО
+УЦАЈ ВЛАДИМИР
+УДИЦКИ ПАЈА
+УДИЦКИ СЛАВИЦА
+УДИЦКИ СРЕДОЈЕ
+УДОВИЧИЋ БОБАН
+УДОВИЧИЋ БРАНКО
+УДОВИЧИЋ ИВАН
+УДОВИЧИЋ МОМИР
+УДОВИЧИЋ РАДОСЛАВ
+УДОВИЧИЋ СТЕВАН
+УДОВИЧКИ БРАНКО ЛЕКАР
+УДОВИЧКИ ЈУЛКА
+УДОВИЧКИ ОЛГИЦА ДР
+УДОВИЧКИ СЛОБОДАН
+УДОВИЧКИ СВЕТОЗАР
+УДРИЈА ПЕТАР
+УДВАРДИ КАРЛО
+УГАРЧИНА БОРИСЛАВ
+УГАРЧИНА ДРАГАН
+УГАРЧИНА ИЛИЈА
+УГАРАК ЂОРЂЕ
+УГАРАК БОЖО
+УГАРАК ДРАГАН
+УГАРАК ДУШАН
+УГАРАК ПЕТАР
+УГАРКОВИЋ ДАРИНКА
+УГАРКОВИЋ ЈЕЛА
+УГАРКОВИЋ КАТИЦА
+УГАРКОВИЋ СТЕВАН
+УГЉЕШИЋ БОШКО
+УГЉЕШИЋ ХИЛДА
+УГРЧИЋ ВУКИЦА
+УГРЕШИЋ ПЕТАР
+УГРЕМ МАРИЈА
+УГРЕМ РАДОВАН
+УГРЕН МИЛОРАД
+УГРЕН ПЕТАР
+УГРЕНИЋ ЛАСЛО
+УГРЕНИЋ МИХАЉ
+УГРЕНОВИЋ ВУЧИЋ
+УГРЕНОВИЋ ВУЈАДИН
+УГРИЦА ДРАГАН
+УГРИЦА СРЕЋКО
+УГРИН ИЛИЈА
+УГРИН МИЛОВАН
+УГРИНЧИЋ ДАНИЛКА
+УГРИНЧИЋ ДОБРИЛА
+УГРИНЧИЋ МИЛИВОЈ
+УГРИНЧИЋ МИРЈАНА ДР
+УГРИНЧИЋ СТЕВАН
+УГРИНЧИЋ ВЛАДА ДИПЛ ИНГ
+УГРИНОВ ЂУРИЦА
+УГРИНОВ ДОБРИЛА
+УГРИНОВ МИЛИЦА
+УГРИНОВ НАДА
+УГРНОВ ВЛАДИМИР
+УГРНОВ ЗОРИЦА
+УХЕР ВЕРА
+УХЛАРИК ЕЛИЗАБЕТА
+УХЛАРИК ЛАДИСЛАВ
+УХЛАРИК СТЕВАН
+УХОР ПЕТАР
+УЈ МАРТОН
+УЈЧИЋ БЛАЖ
+УЈЧИЋ ТОМА
+УЈДИЛОВИЋ МИЛОРАД
+УЈФАЛУШ ВЕЛИМИР
+УЈФАЛУШИ ЂУРА
+УЈФАЛУШИ ЈАНКО
+УЈФАЛУШИ ЈУЛИЈАН
+УЈФАЛУШИ ЉУБОМИР
+УЈФАЛУШИ МИРОСЛАВ
+УЈФАЛУШИ НИКОЛА
+УЈФАЛУШИ СИЛВЕСТЕР
+УЈФАЛУШИ ВЛАДИМИР
+УЈФЕЉАН МИЛАН
+УЈХАЗИ БОРИШКА
+УЈХАЗИ ИВАН
+УЈХАЗИ ЈЕЛИСАВЕТА
+УЈХАЗИ ЛАДИСЛАВ
+УЈХАЗИ МИРКО
+УЈХЕЉИ ЈОВАНКА
+УЈХЕЉИ МИХАЉ
+УЈЛАКОШ КАРЛО
+УЈВАРИ ГАБОР
+УЈВАРИ КАТАЛИН
+УКАЧЕК ВЕРКА
+УКРОПИНА ЧЕДА
+УКРОПИНА ДЕСАНКА
+УКРОПИНА ЈЕЛЕНА
+УКРОПИНА ЈОВАНКА
+УКРОПИНА ЈОВАН
+УКРОПИНА МИЛОВАН
+УКРОПИНА НЕБОЈША
+УКРОПИНА ПАНТО
+УКРОПИНА ТОМИСЛАВ
+УЛЕМЕК ЂУРО
+УЛИЋ ЖЕЉКА
+УЛИЋ ЂОРЂЕ
+УЛИЋ АЛЕКСАНДАР
+УЛИЋ ДОБРОСЛАВ
+УЛИЋ МИЛАН
+УЉАРЕВИЋ ПЕРО
+УМЕК МАРГИТА
+УМЕК МИКЛОШ
+УМИЧЕВИЋ ПЕРА
+УМИЋЕВИЋ ЖЕЉКО
+УМИЋЕВИЋ ГОРДАНА
+УМИЋЕВИЋ МИРКО
+УМИЋЕВИЋ МЛАДЕН
+УНЧАНИН БОЈАН
+УНЧАНИН ДУШАН
+УНГАР ТИХОМИР
+УНГУРОВИЋ ЈЕЛЕНА
+УНКОВИЋ АНЂЕЛКО
+УНКОВИЋ МЛАДЕН
+УРАЧ ШАНДОР
+УРАЧ АЛЕКСАНДАР
+УРАЧ ДАНИЦА
+УРАЧ ГИЗЕЛА
+УРАЧ ИШТВАН
+УРАЧ РОЗАЛИЈА
+УРБАН ЂЕРЂ
+УРБАН ЂОРЂЕ
+УРБАН АНА
+УРБАН ХОРВАТ
+УРБАН ИШТВАН
+УРБАН ЈАНОШ
+УРБАН ЈАСНА
+УРБАН МИХАЉ
+УРБАН МИХАЉ
+УРБАН ПАВЕЛ
+УРБАН СТАНИСЛАВ
+УРБАН СТЕВАН
+УРБАН ВИКТОРИЈА
+УРБАН ВЛАДИСЛАВ
+УРБАНЧИК ПИРОШКА
+УРБАНЧИК СИЛВИА
+УРБАНОВИЋ СТЕВАН
+УРДАРЕВИЋ СТАНИМИР
+УРЕКЕ ЂОРЂЕ
+УРИ ЧАБА
+УРИ АЛЕКСАНДАР
+УРИ ЕВА
+УРИ ГАБОР
+УРИ КАРЛО
+УРИ ЛАСЛО
+УРИ ПАЈА
+УРИ СТЕВАН
+УРИ СТЕВАН
+УРКИН ЉУБИЦА
+УРЛИХ МАРИЈА
+УРОШЕВ ЖИВАН
+УРОШЕВ БОЈКА
+УРОШЕВ ИЛИЈА
+УРОШЕВ ЈЕРИЦА
+УРОШЕВ МИЛЕНКО
+УРОШЕВ МИРЈАНА
+УРОШЕВ ПАЈА
+УРОШЕВ СОФИЈА
+УРОШЕВ СТОЈАН
+УРОШЕВ ВЕЛИНКА
+УРОШЕВИЋ ЖИВАН
+УРОШЕВИЋ АЛЕКСАНДАР
+УРОШЕВИЋ БОГДАН ДИПЛ ИНГ
+УРОШЕВИЋ БОРИВОЈ
+УРОШЕВИЋ БРАНКА
+УРОШЕВИЋ БРАНКО
+УРОШЕВИЋ ДРАГИША
+УРОШЕВИЋ ДУШАН
+УРОШЕВИЋ ИВАН
+УРОШЕВИЋ ЛЕОНА
+УРОШЕВИЋ ЉИЉАНА
+УРОШЕВИЋ ЉУБИЦА
+УРОШЕВИЋ МАРКА
+УРОШЕВИЋ МИЛОШ
+УРОШЕВИЋ МИРЈАНА
+УРОШЕВИЋ НАДА
+УРОШЕВИЋ РУЖИЦА
+УРОШЕВИЋ СРЂА
+УРОШЕВИЋ СТАНИСЛАВА
+УРОШЕВИЋ ВИДОЈКО
+УРОШЕВИЋ ВЛАДИМИР
+УРОШЕВИЋ ЗОРИЦА
+УРСИЋ ВЛАДИМИР
+УРСУЛЕСКУ ФЛОРИН
+УРСУЛЕСКУ ЈУЛИЈАН
+УСКОКОВИЋ БРАНИСЛАВ
+УСКОКОВИЋ МИЛЕНКО
+УСКОКОВИЋ МИЛОШ
+УСТИЋ ЂУРА
+УСТИЋ НИКОЛА
+УСТИЋ СИМА
+УСТИЋ ВОЈКО
+УТАШИ ЧАБА
+УТЈЕШАНОВИЋ СИМО
+УТЈЕШИНОВИЋ ДЕСАНКА
+УТЈЕШИНОВИЋ ЉИЉАНА
+УТЈЕШИНОВИЋ МИЛАН
+УТЈЕШИНОВИЋ ВЕРА
+УТОРНИК ИВАН
+УТОРНИК ЈОВАН
+УТОРНИК КАТИЦА
+УТОРНИК ЉУБИЦА
+УТОРНИК МИЛОШ
+УТОРНИК-РАДУЛОВИЋ МАРИЈА
+УТОРНИК СТЕВАН
+УТОРНИК СВЕТОЗАР
+УТРЖАН БРАНКО
+УТВИЋ КОСТА
+УТВИЋ ПАВЛЕ
+УТВИЋ ВАСА
+УТВИЋ-ВУКАШИНОВИЋ ДАРА
+УВАЛИЋ АНГЕЛИНА
+УВАЛИЋ ДУШАНКА
+УВАЛИЋ ДУШАН
+УВАЛИЋ ДУШКО
+УВАЛИЋ ЛАЗАР
+УВАЛИЋ МЕЛАНИЈА
+УВАЛИЋ РАДОСЛАВ
+УВАЛИЋ СТАНИСЛАВ
+УВАЛИЋ ВАСА
+УВЕРИЋ ЂУРА
+УВЕРИЋ БРАНКА
+УВЕРИЋ МИЛАН
+УВЕРИЋ МИЛОШ
+УВЕРИЋ МИЛОРАД
+УВЕРИЋ МИРЈАНА
+УВЕРИЋ НИКОЛА
+УЗАИР АЛИЈА
+УЗЕИРИ МУАРЕМ
+УЗЕЛАЦ ЂОРЂЕ
+УЗЕЛАЦ ЂОРЂЕ
+УЗЕЛАЦ ЂОРЂЕ
+УЗЕЛАЦ ЂОРЂЕ
+УЗЕЛАЦ ЂУРИЦА
+УЗЕЛАЦ ЂУРО
+УЗЕЛАЦ АЛЕКСАНДРА
+УЗЕЛАЦ АЛЕКСА
+УЗЕЛАЦ БИСЕРКА
+УЗЕЛАЦ БОШКО
+УЗЕЛАЦ БОГДАН
+УЗЕЛАЦ БОГДАН
+УЗЕЛАЦ БРАНИСЛАВ
+УЗЕЛАЦ БРАНИСЛАВ
+УЗЕЛАЦ БРАНИСЛАВ
+УЗЕЛАЦ БРАНКО
+УЗЕЛАЦ ЦВЕТА
+УЗЕЛАЦ ДАРИНКА
+УЗЕЛАЦ ДЕСАНКА
+УЗЕЛАЦ ДРАГАН
+УЗЕЛАЦ ДРАГАН
+УЗЕЛАЦ ДРАГАН
+УЗЕЛАЦ ДУШАНКА
+УЗЕЛАЦ ДУШАН
+УЗЕЛАЦ ДУШАН
+УЗЕЛАЦ ДУШАН
+УЗЕЛАЦ ДУШАН
+УЗЕЛАЦ ЕВА
+УЗЕЛАЦ ГАЛИНА
+УЗЕЛАЦ ГОРДАНА
+УЗЕЛАЦ ИЛИЈА
+УЗЕЛАЦ ИВАН
+УЗЕЛАЦ ЈЕЛЕНА
+УЗЕЛАЦ КОСТА
+УЗЕЛАЦ ЛАЗАР
+УЗЕЛАЦ МАРИЈА
+УЗЕЛАЦ МАРИЈА
+УЗЕЛАЦ МАРИЈА
+УЗЕЛАЦ МАРИЈА
+УЗЕЛАЦ МИХАЈЛО
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛАН
+УЗЕЛАЦ МИЛЕ
+УЗЕЛАЦ МИЛИЦА
+УЗЕЛАЦ МИЛОШ
+УЗЕЛАЦ МОМЧИЛО
+УЗЕЛАЦ НИКОЛА
+УЗЕЛАЦ НИКОЛА
+УЗЕЛАЦ ОЛИВЕРА
+УЗЕЛАЦ РАДМИЛА
+УЗЕЛАЦ РАДОЈКА
+УЗЕЛАЦ РЕНАТА
+УЗЕЛАЦ СЛАВКО
+УЗЕЛАЦ СЛОБОДАН
+УЗЕЛАЦ СЛОБОДАН
+УЗЕЛАЦ СОФИЈА
+УЗЕЛАЦ СРЂАН
+УЗЕЛАЦ СРЂАН
+УЗЕЛАЦ СТЕВАН
+УЗЕЛАЦ СТЕВАН
+УЗЕЛАЦ СТЕВАН
+УЗЕЛАЦ СТЕВАН
+УЗЕЛАЦ СТОЈАН
+УЗЕЛАЦ ВЕРА
+УЗЕЛАЦ ВУЈО
+УЗЕЛАЦ ЗЛАТКО
+УЗЕЛАЦ ЗЛАТКО
+УЗЕЛАЦ ЗЛАТКО
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗЕЛАЦ ЗОРАН
+УЗОРОЦКИ ИШТВАН
+УЗУНОВИЋ БРАНИСЛАВ
+УЗУНОВИЋ ЛАДИСЛАВ
+УЗУНОВИЋ МИЛОРАД
+УЗУНОВИЋ МИТО
+УЗУНОВИЋ НАСУФ
+УЗУНОВИЋ РАЈКО
+УЗУРОВ ОБРЕНИЈА
+УЗУРОВ РАДМИЛА
+ВАЧИЋ АЛЕКСАНДАР
+ВАЧИЋ ЗОРАН
+ВАЧИК ЈОЖЕФ
+ВАШ АТИЛА
+ВАШ ЈОСИП
+ВАШ ПАВЛЕ
+ВАШ ВЕРА
+ВАШЧИЋ БОЖИДАР
+ВАШАШ МИКЛОШ
+ВАШАШ ОЛГА
+ВАШАДИ ФЕРЕНЦ
+ВАШАДИ ЈУЛИЈАНА
+ВАШАДИ ВАЛЕРИЈА
+ВАШАЛИЋ АНКА
+ВАШАЛИЋ МИЛОШ
+ВАШАЛИЋ ОБРАД
+ВАШАЛИЋ УРОШ
+ВАШТАГ ЂОРЂЕ
+ВАШТАГ АНДРАШ
+ВАШТАГ ИШТВАН
+ВАШТАГ ИШТВАН
+ВАШТАГ ЈАСМИНКА
+ВАШТАГ МАРГИТА
+ВАШТАГ МАРИЈА
+ВАШТАГ МИХАЉ
+ВАШТАГ ОЛГА
+ВАШТАГ РУЖА
+ВАШТАГ СТОЈАН
+ВАЖИЋ ДАНИЦА
+ВАЖИЋ ЈОВАН
+ВАЖИЋ ЈУЛИЈА
+ВАЖИЋ МИРА
+ВАЖИЋ СЛАВИЦА
+ВАЖИЋ ВЕРИЦА
+ВАЖИЋ ВЕСЕЛИН
+ВАЖИЋ ВЛАДИМИР
+ВАЖОЊИ АНТАЛ
+ВАЖОЊИ РОЗАЛИЈА
+ВАЦИ ШИМОН
+ВАЦИЋ БЛАГОЈЕ
+ВАЦИЋ ВИДЕН
+ВАЦЛАВИК МАРИЈА
+ВАДАСКИ ЦЕЦИЛИЈА
+ВАДАСКИ ЉУБОМИР
+ВАДОЦ ФРАЊА
+ВАДОЦ ИВИЦА
+ВАДОЦ ЈОСИП
+ВАГИЋ ЂУРО
+ВАГНЕР ЂУРА
+ВАГНЕР АНДРИЈА
+ВАГНЕР ЈОСИП
+ВАГНЕР КАРЛО
+ВАГНЕР ЛАСЛО
+ВАГНЕР МАРИЈА
+ВАГНЕР ОТИЛИЈА
+ВАГО ИШТВАН
+ВАГО СТЕВАН
+ВАГУРИЋ ЗДРАВКО
+ВАЈАГИЋ АНЂЕЛКА
+ВАЈАГИЋ БОШКО
+ВАЈАГИЋ ГОРДАНА
+ВАЈАГИЋ МИЛАН
+ВАЈАГИЋ НИКОЛА ДР
+ВАЈАГИЋ НИКОЛА
+ВАЈАГИЋ САВО
+ВАЈАГИЋ СИМА
+ВАЈАГИЋ СТОЈАН
+ВАЈАГИЋ ЗОРИЦА
+ВАЈДА ШАНДОР
+ВАЈДА ШАНДОР
+ВАЈДА ИРМА
+ВАЈДА ЛАЈОШ
+ВАЈДА ЛАЈОШ
+ВАЈДА ТИБОР
+ВАЈДА ТОМИСЛАВ
+ВАЈДИЋ ЖИВКО
+ВАЈДИЋ ИВАН
+ВАЈДИЋ ЈОВАН ДР
+ВАЈДИЋ ЈОВАН ДР
+ВАЈДИЋ МИЛИЦА
+ВАЈДИЋ МИЛИЦА
+ВАЈДИЋ НАДА
+ВАЈДИЋ ПЕТАР
+ВАЈДИЋ ТИХОМИР
+ВАЈДЛ ЈОВАН
+ВАЈДЛ МИРОСЛАВ
+ВАЈДЛЕ ЈОЛАН
+ВАЈЛЕР АНДРИЈА
+ВАЈНШТАЈН ПЕТАР
+ВАЈНБЕРГЕР ВЛАДИМИР
+ВАЈНБЕРГЕР ЗЛАТКО
+ВАЈНБЕРГЕР ЗВОНИМИР
+ВАЈНГЕРТНЕР РАДОЈКА ДИПЛ ЕЦЦ
+ВАЈНХЕПЛ МАРИА
+ВАЈНХЕПЛ ОТМАР ДИПЛ ИНГ
+ВАЈОВИЋ ВАСИЛИЈЕ
+ВАЈС ШАНДОР
+ВАЈС БРАНКО
+ВАЈС КАРЛО
+ВАЈС КАРЛО
+ВАЈС МАГДА
+ВАЈС ВЕРИЦА
+ВАЈСЕНБЕРГ ЈОСИП
+ВАЈУКИЋ ПАНТЕЛИЈА
+ВАКАЊАЦ МИЛИЦА
+ВАЛ ЂОРЂЕ
+ВАЛ АНДРИЈА
+ВАЛ ЕВА
+ВАЛ ЗОЛТАН
+ВАЛАХ ЈАНКО
+ВАЛАН ОСТОЈА
+ВАЛАН ЗОРАН
+ВАЛДМА АРБО
+ВАЛЕК ЕМИЛИЈА
+ВАЛЕК ФРАЊА
+ВАЛЕНЧИК ПАВЕЛ
+ВАЛЕНЧИК СТЕВАН
+ВАЛЕНЋИК АНДРИЈА
+ВАЛЕНЋИК ЈАН
+ВАЛЕНЋИК ПАВЛЕ
+ВАЛЕНЋИК ВЛАДИМИР
+ВАЛЕНТ ЖУЖАНА
+ВАЛЕНТ ЈАНКО
+ВАЛЕНТ ЈАНКО
+ВАЛЕНТ ЛАСЛО
+ВАЛЕНТА ЈАСМИНКА
+ВАЛЕНТЕЊИ ЈОСИП
+ВАЛЕНТЕЊИ ЈУЛИЈАНА
+ВАЛЕНТИЋ ИВАН
+ВАЛЕНТИЋ ВИКТОР
+ВАЛЕНТИЋ ВИКТОР
+ВАЛЕНТИК НИКОЛА
+ВАЛЕНТИН ИМРЕ
+ВАЛЕНТИН ЈУЦИКА
+ВАЛЕНТИН СТЕВАН
+ВАЛЕНТИРОВ СТЕВАН
+ВАЛЕНТИРОВИЋ ЉУБОМИР
+ВАЛЕНТОВИЋ ЈОСИП
+ВАЛЕНТОВИЋ КАРЛО
+ВАЛЕНТОВИЋ КАРЛО
+ВАЛЕНТОВИЋ КАРЛО
+ВАЛЕНТОВИЋ ТИБОР
+ВАЛИЋ ГОРАН
+ВАЛИЋ СЛАВКО
+ВАЛИЏИЈА НИКОЛА ДИПЛ ИНГ
+ВАЛИХОРА ЈОЗЕФ
+ВАЛИХОРА КАТИЦА
+ВАЛКАИ ЈОЖЕФ
+ВАЛКО ГАВРА
+ВАЛО ГОРДАНА
+ВАЛО ЈОСИП
+ВАЛО ЈОСИП
+ВАЛО МИРКО
+ВАЛО СТЕВАН
+ВАЛОК ЂОРЂЕ
+ВАЛОК ЂУРА
+ВАЛОК РАТОМИР
+ВАЛТЕР ДРАГИЊА
+ВАЛТЕР ЉИЉАНА
+ВАЛТЕР НОРБЕРТ
+ВАЛТНЕР ПЕТАР
+ВАЛУШЕК ЈОВАН
+ВАЛУШЕК КАТИЦА
+ВАЛУШЕК ПАВЛЕ
+ВАЛУХ БРАНИСЛАВ
+ВАЛУХ ЈАНКО
+ВАЛУХ ЈАНКО
+ВАЛУХ КАРЛО
+ВАЛУХ МИХАЈЛО
+ВАМБАХ ВИКТОРИЈА
+ВАМОШЕР МИРЈАНА
+ВАМОШЕР ПАВЛЕ
+ВАМПОВАЦ ЈОСИП
+ВАНЂЕЛ МИЛАН
+ВАНДЕРЕР ПАЛ
+ВАНДОРИ МАРИЈА
+ВАНИЋ ДРАГУТИН
+ВАНИЋ КАТИЦА
+ВАНИЋ ЉУБИЦА
+ВАЊУР ФРАЊА
+ВАЊУР ФРАЊА
+ВАЊУР ИШТВАН ДИПЛ ИНГ
+ВАЊУР ЈОЖЕФ
+ВАЊУР ЈОСИП
+ВАЊУР КАРЛО
+ВАЊУР КАРЛО
+ВАЊУР МАРИЈА
+ВАНКО ЈАРОСЛАВ
+ВАНОВИЋ СНЕЖАНА
+ВАПА ЈОВАНКА
+ВАПА МИЛАН ДР
+ВАПА ВЕРА
+ВАПА ЗОРАН
+ВАПЕНСКИ ИВАН
+ВАПЕНСКИ МАРИЈА
+ВАРШАЊИ ИРЕНА
+ВАРАЂАНИН МИЛАН
+ВАРАДИ ТИБОР ДР ПРОФ
+ВАРАГИЋ БОГДАН
+ВАРАГИЋ ЉУБИЦА
+ВАРАГИЋ МАРИЈА
+ВАРАГИЋ МЕЛАНИЈА
+ВАРАГИЋ МИЛИЦА
+ВАРАГИЋ ВИЋЕНТИЈЕ
+ВАРАЈИЋ ГОРАН
+ВАРАЈИЋ ГОРАН
+ВАРАВА ЕМИЛИЈАН
+ВАРБАИ ЛАДИСЛАВ
+ВАРЦАР ДЕСАНКА
+ВАРДИЋ ГАВРИЛО
+ВАРЕНИКА ЂОКА
+ВАРЕНИКА БРАНИСЛАВ
+ВАРЕНИКА РАДОЈКА
+ВАРЕВАЦ ДРАГАН
+ВАРГА ШАНДОР
+ВАРГА ШАНДОР
+ВАРГА ШАНДОР
+ВАРГА ШАНДОР
+ВАРГА ШАНДОР
+ВАРГА-ШОМОЂИ ЈАНОШ
+ВАРГА ЖАРКО
+ВАРГА ЂЕРЂ
+ВАРГА ЂОРЂЕ
+ВАРГА ЂОРЂЕ
+ВАРГА ЂУЛА
+ВАРГА ЂУРА
+ВАРГА ЂУРА
+ВАРГА АЛЕКСАНДАР
+ВАРГА АНА
+ВАРГА АНДРАШ
+ВАРГА АНДРИЈА
+ВАРГА АНДРИЈА
+ВАРГА АНТОН
+ВАРГА АРАНКА
+ВАРГА БЕЛА
+ВАРГА БЕЛА
+ВАРГА БИЉАНА
+ВАРГА-БУРАИ ЕРЖЕБЕТ
+ВАРГА ДРАГИЦА
+ВАРГА ДУШАНКА
+ВАРГА ЕРЖИКА
+ВАРГА ФЕРЕНЦ
+ВАРГА ФЕРЕНЦ
+ВАРГА ФЕРЕНЦ
+ВАРГА ФРАЊА
+ВАРГА ФРАЊА
+ВАРГА ФРАЊО
+ВАРГА ФРАЊО
+ВАРГА ГАБОР
+ВАРГА ГИЗЕЛА
+ВАРГА ХЕЛЕНА
+ВАРГА ИШТВАН
+ВАРГА ИШТВАН
+ВАРГА ИШТВАН
+ВАРГА ИШТВАН
+ВАРГА ИЛЕШ
+ВАРГА ИМРЕ
+ВАРГА-ИВАН АНГЕЛИНА
+ВАРГА ЈАКИМ
+ВАРГА ЈАН ДР
+ВАРГА ЈАНОШ
+ВАРГА ЈАНОШ
+ВАРГА ЈАРОСЛАВ
+ВАРГА ЈЕЛЕНА
+ВАРГА ЈЕЛИСАВЕТА
+ВАРГА ЈОЖЕФ
+ВАРГА ЈОЖЕФ
+ВАРГА ЈОЖЕФ
+ВАРГА ЈОСИПА
+ВАРГА ЈОСИП
+ВАРГА ЈОСИП
+ВАРГА ЈОВАН
+ВАРГА ЈУЛИЈА
+ВАРГА КАРЛО
+ВАРГА КАТАРИНА
+ВАРГА КАТА
+ВАРГА-КЛИШАНИЋ ЉУБИЦА
+ВАРГА КОРНЕЛИЈА
+ВАРГА КОРНЕЛ
+ВАРГА КОСАНА
+ВАРГА ЛАДИСЛАВ
+ВАРГА ЛАЈОШ
+ВАРГА ЛАЈОШ
+ВАРГА ЛАСЛО
+ВАРГА ЛАСЛО
+ВАРГА ЛАСЛО
+ВАРГА ЛАСЛО
+ВАРГА ЉУПКА
+ВАРГА МАРГИТА
+ВАРГА МАРИЈА
+ВАРГА МАРИЈА
+ВАРГА МАРИЈА
+ВАРГА МИХАЈЛО
+ВАРГА МИХАЈЛО
+ВАРГА МИХАЉ
+ВАРГА МИРКО
+ВАРГА МИРОН
+ВАРГА МИРОСЛАВ
+ВАРГА НИКОЛА
+ВАРГА ОЛГА
+ВАРГА ПАЛ
+ВАРГА ПАЛ
+ВАРГА ПЕТАР
+ВАРГА ПЕТАР
+ВАРГА ПЕТЕР ДИПЛ ИНГ
+ВАРГА РАСТИСЛАВ
+ВАРГА РОЗАЛИЈА
+ВАРГА РОЗАЛИЈА
+ВАРГА СЛАВИЦА
+ВАРГА СТЕВАН
+ВАРГА СТЕВАН
+ВАРГА СТЈЕПАН
+ВАРГА ТИБОР
+ВАРГА ТИБОР
+ВАРГА ВЕРА
+ВАРГА ВЕРА
+ВАРГА ВЕРОНИКА
+ВАРГА ВЛАДИСЛАВ
+ВАРГА ВЛАСТА
+ВАРГА ЗОЛТАН
+ВАРГА ЗОЛТАН
+ВАРГЕЦ ИВАН
+ВАРХОЛИК АДАМ
+ВАРИЋАК БОЖО
+ВАРИЋАК ДАРИНКА
+ВАРЈУ ЛАСЛО
+ВАРЈУ МАРИЈА
+ВАРЈУ ТЕРЕЗА
+ВАРКАШ ИВАН
+ВАРМАЗ ИСМЕТ
+ВАРМЕЂА ЂОРЂЕ
+ВАРМУЖА МАЋАШ
+ВАРНИЦА ИВАН
+ВАРНИЦА ПЕТАР
+ВАРЊУ АНУШКА
+ВАРЊУ ГИЗЕЛА
+ВАРЊУ ИЛОНА
+ВАРНОС МАРТОН
+ВАРНУС ЈОЖЕФ
+ВАРОШЧИЋ СПАСЕНИЈА
+ВАРОШИ ГАБРИЕЛА
+ВАРОШИ ЈОВАН
+ВАРОШИ СИЛАРД
+ВАСЕЛЕК ШТЕФАН
+ВАСЕЛЕК СТЕВАН
+ВАСЕЛЕК СТЕВАН
+ВАСЕЛЕК ВАСИЉ
+ВАСИЋ ЖЕЉКО
+ВАСИЋ ЖИВКА
+ВАСИЋ ЖИВКО
+ВАСИЋ ЖИВКО
+ВАСИЋ ЖИВКО
+ВАСИЋ ЂОКА
+ВАСИЋ ЂОРЂЕ
+ВАСИЋ ЂОРЂЕ
+ВАСИЋ АЛЕКСАНДАР
+ВАСИЋ АНИЦА
+ВАСИЋ АНКИЦА
+ВАСИЋ БОЈАНА
+ВАСИЋ БОРИСЛАВ
+ВАСИЋ БОРИВОЈ
+ВАСИЋ БРАНКО
+ВАСИЋ ЦВЕТКО
+ВАСИЋ ДАРИНКА
+ВАСИЋ ДОБРИВОЈ
+ВАСИЋ ДРАГАНА
+ВАСИЋ ДРАГАН
+ВАСИЋ ДРАГИЦА
+ВАСИЋ ДРАГИЦА
+ВАСИЋ ДРАГИЦА
+ВАСИЋ ДРАГОЉУБ
+ВАСИЋ ДРАГОМИР
+ВАСИЋ ДРАГОМИР
+ВАСИЋ ДРАГОСЛАВ
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШАН
+ВАСИЋ ДУШИЦА
+ВАСИЋ ДУШКО НОВИНАР
+ВАСИЋ ДУБРАВКА
+ВАСИЋ ЕЛЕНА
+ВАСИЋ ГОРАН
+ВАСИЋ ГОРДАНА
+ВАСИЋ ГОРДАНА
+ВАСИЋ ГОРДИЦА
+ВАСИЋ ЈАКОВ
+ВАСИЋ ЈАНА
+ВАСИЋ ЈАНКО
+ВАСИЋ ЈЕЛИЦА
+ВАСИЋ ЈОВО
+ВАСИЋ КАТИЦА
+ВАСИЋ КОСТА
+ВАСИЋ КРИСТИНА
+ВАСИЋ ЛАЗАР
+ВАСИЋ ЉИЉАНА ДР
+ВАСИЋ ЉИЉАНА
+ВАСИЋ ЉУБОМИР
+ВАСИЋ ЛУКА
+ВАСИЋ МАКСИМ
+ВАСИЋ МАРИЈАНА
+ВАСИЋ МАРКО
+ВАСИЋ МИЋО
+ВАСИЋ МИХАИЛО
+ВАСИЋ МИХАЈЛО
+ВАСИЋ МИКА
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛАН
+ВАСИЋ МИЛЕНКО ДР ПРИМАРИУС
+ВАСИЋ МИЛЕНКО
+ВАСИЋ МИЛЕНКО
+ВАСИЋ МИЛИЦА
+ВАСИЋ МИЛИНКО
+ВАСИЋ МИЛОШ
+ВАСИЋ МИЛОШ
+ВАСИЋ МИЛОВАН
+ВАСИЋ МИЛОВАН
+ВАСИЋ МИЛУТИН
+ВАСИЋ МИОДРАГ
+ВАСИЋ МИРЈАНА
+ВАСИЋ МИРЈАНА
+ВАСИЋ МИРЈАНА
+ВАСИЋ МИРОСЛАВА
+ВАСИЋ НАДА
+ВАСИЋ НАДА
+ВАСИЋ НЕДЕЉКО
+ВАСИЋ НЕДЕЉКО
+ВАСИЋ НЕДЕЉКО
+ВАСИЋ НИКОЛА
+ВАСИЋ НОВАК
+ВАСИЋ НОВАК
+ВАСИЋ НОВАК
+ВАСИЋ ОЛГА
+ВАСИЋ ОЛГИЦА
+ВАСИЋ ОСТОЈА
+ВАСИЋ ОСТОЈА
+ВАСИЋ ПАЈА
+ВАСИЋ ПЕРО
+ВАСИЋ ПЕТАР
+ВАСИЋ ПЕТАР
+ВАСИЋ-ПОПОВИЋ ЉИЉАНА
+ВАСИЋ ПРВОСЛАВ ДИПЛ ИНГ
+ВАСИЋ РАДИЦА
+ВАСИЋ РАДИВОЈ
+ВАСИЋ РАДОЈЕ
+ВАСИЋ РАДОСЛАВ
+ВАСИЋ РАДОВАН
+ВАСИЋ РАТКО
+ВАСИЋ РАВИЦА
+ВАСИЋ САВА
+ВАСИЋ САВА
+ВАСИЋ САВА
+ВАСИЋ СЕКУЛА
+ВАСИЋ СЛАВИЦА
+ВАСИЋ СЛАВКО
+ВАСИЋ СЛАВКО
+ВАСИЋ СЛОБОДАН
+ВАСИЋ СЛОБОДАН
+ВАСИЋ СЛОБОДАН
+ВАСИЋ СНЕЖАНА
+ВАСИЋ СОФИЈА
+ВАСИЋ СРЕТКО
+ВАСИЋ СТАНИША
+ВАСИЋ СТЕВАН
+ВАСИЋ СТЕВАН
+ВАСИЋ СТЕВАН
+ВАСИЋ СТЕВАН
+ВАСИЋ СВЕТЛАНА
+ВАСИЋ СВЕТОЗАР
+ВАСИЋ ТИХОМИР
+ВАСИЋ ТИНКА
+ВАСИЋ ТОША
+ВАСИЋ ТОМИСЛАВ
+ВАСИЋ ВЕЛИМИР
+ВАСИЋ ВЕЛИМИР
+ВАСИЋ ВЕСЕЛИН
+ВАСИЋ ВИДА
+ВАСИЋ ВЛАДИМИР ДР ЛЕКАР
+ВАСИЋ ВЛАДИМИР
+ВАСИЋ ВОЈИСЛАВ
+ВАСИЋ ЗДРАВКО
+ВАСИЋ ЗОРАН
+ВАСИЋ ЗОРИЦА
+ВАСИЛЧИН СЛОБОДАН
+ВАСИЛЕСКИ БРАНКО
+ВАСИЛИШИН АНТОН
+ВАСИЛИШИН МИЛАН
+ВАСИЛИЋ БРАНИСЛАВ
+ВАСИЛИЋ ДАНИЦА
+ВАСИЛИЋ ДРАГА
+ВАСИЛИЋ МИЛАН
+ВАСИЛИЋ МИЛЕНКО
+ВАСИЛИЋ МИРА
+ВАСИЛИЋ НИКОЛА
+ВАСИЛИЋ РАЈКО
+ВАСИЛИЋ СТЕВАН
+ВАСИЛИЋ ТОДЕ
+ВАСИЛИЋ ВЕСНА
+ВАСИЛИЋ ВОЈИН ДИПЛ ИНГ
+ВАСИЉЧИН ЖИВКО
+ВАСИЉЕВ АНА
+ВАСИЉЕВ ДЕЈАН
+ВАСИЉЕВ ДРАГОСЛАВ
+ВАСИЉЕВ ЈЕЛИЦА
+ВАСИЉЕВ ЈОВАН
+ВАСИЉЕВ ЈОВАН
+ВАСИЉЕВ ЉУБИЦА
+ВАСИЉЕВ МАРА
+ВАСИЉЕВ МИЛОРАД
+ВАСИЉЕВ МИРОЉУБ
+ВАСИЉЕВ МИТА
+ВАСИЉЕВ РАДОВАН
+ВАСИЉЕВ СПАСОЈЕ
+ВАСИЉЕВ СТАНОЈЕ
+ВАСИЉЕВ ТАМАРА
+ВАСИЉЕВ ЗДРАВКО
+ВАСИЉЕВИЋ ШАРЛОТА
+ВАСИЉЕВИЋ ЖИВОТА
+ВАСИЉЕВИЋ ЂОРЂЕ
+ВАСИЉЕВИЋ ЂУРА
+ВАСИЉЕВИЋ-АЋАНСКИ ИВАНА
+ВАСИЉЕВИЋ АНЂЕЛКА
+ВАСИЉЕВИЋ АНДРЕЈА
+ВАСИЉЕВИЋ ЦВЕТКО
+ВАСИЉЕВИЋ ДАНИЦА
+ВАСИЉЕВИЋ ДРАГИША
+ВАСИЛЈЕВИЋ ДУШИЦА
+ВАСИЉЕВИЋ ГЛИГОР
+ВАСИЉЕВИЋ ГОЈАН
+ВАСИЉЕВИЋ ГОЈКО
+ВАСИЉЕВИЋ ГРОЗДА
+ВАСИЉЕВИЋ ЈАВОРКА
+ВАСИЉЕВИЋ ЈУЛКА
+ВАСИЉЕВИЋ ЛЕПА
+ВАСИЉЕВИЋ ЉУБИНКО
+ВАСИЉЕВИЋ МАРКО
+ВАСИЉЕВИЋ МАРКО
+ВАСИЉЕВИЋ МИЛЕНА
+ВАСИЉЕВИЋ МИЛЕНКО
+ВАСИЉЕВИЋ МИЛИСАВ
+ВАСИЉЕВИЋ МИЉКО
+ВАСИЉЕВИЋ МИЛОШ
+ВАСИЉЕВИЋ МИЛОРАД
+ВАСИЉЕВИЋ МИОДРАГ ДИПЛ ИНГ
+ВАСИЉЕВИЋ МИРА
+ВАСИЉЕВИЋ МИРОСЛАВ
+ВАСИЉЕВИЋ МОМЧИЛО ДР
+ВАСИЉЕВИЋ НАДА
+ВАСИЉЕВИЋ НЕДЕЉКО
+ВАСИЉЕВИЋ НЕВЕНКА
+ВАСИЉЕВИЋ НИКОЛА
+ВАСИЉЕВИЋ НИКОЛА
+ВАСИЉЕВИЋ ОЛГА
+ВАСИЉЕВИЋ ОСТОЈА
+ВАСИЉЕВИЋ ПЕТАР
+ВАСИЉЕВИЋ ПЕТАР
+ВАСИЉЕВИЋ РАДА
+ВАСИЉЕВИЋ РАДЕНКА
+ВАСИЉЕВИЋ РАДОСАВ
+ВАСИЉЕВИЋ РАДОСЛАВ
+ВАСИЉЕВИЋ РАДО
+ВАСИЉЕВИЋ РАЈА НОВИНАР
+ВАСИЉЕВИЋ РАЈКО
+ВАСИЉЕВИЋ СИМО
+ВАСИЉЕВИЋ СЛАВКО
+ВАСИЉЕВИЋ СТАНИМИР
+ВАСИЉЕВИЋ ТИХОМИР
+ВАСИЉЕВИЋ ТОША
+ВАСИЉЕВИЋ УМКА
+ВАСИЉЕВИЋ ВЕРИЦА
+ВАСИЉЕВИЋ ВУКИЦА
+ВАСИЉЕВИЋ ЗДРАВКО
+ВАСИЉЕВИЋ ЗЛАТКО
+ВАСИЉЕВИЋ ЗЛАТОЈЕ
+ВАСИЉЕВИЋ ЗОРАН
+ВАСИЉЕВСКИ ВАСИЛИЈЕ
+ВАСИН ЂОРЂЕ
+ВАСИН ЂОРЂЕ
+ВАСИН АНЂЕЛКА
+ВАСИН АРАНКА
+ВАСИН БОРИВОЈЕ
+ВАСИН БРАНИСЛАВ
+ВАСИН ДРАГАНА
+ВАСИН ДРАГОМИР
+ВАСИН ЈАСМИНА
+ВАСИН ЈЕЛЕНА
+ВАСИН ЈЕВРОСИМА
+ВАСИН ЈУЛКА
+ВАСИН ЛАЗАР
+ВАСИН ЉУБИНКА
+ВАСИН МАРИЦА
+ВАСИН МИЛЕНКО
+ВАСИН МИЛЕНКО
+ВАСИН НЕДЕЉКО
+ВАСИН ОЛГИЦА
+ВАСИН ПАВЛЕ
+ВАСИН ПЕТАР
+ВАСИН РАДИВОЈ
+ВАСИН СТЕВАН
+ВАСИН СВЕТИСЛАВ
+ВАСИН СВЕТОЗАР
+ВАСИН ТОДОР
+ВАСИН ЗОРА
+ВАСКО ВЕРА
+ВАСКОВИЋ МИЛОРАД
+ВАСКРСИЋ САВЕТА
+ВАСОВИЋ АЛЕКСАНДАР
+ВАСОВИЋ МИЛЕНА
+ВАСОВИЋ МИЛОВАН
+ВАСОВИЋ ПРЕДРАГ
+ВАСОВИЋ СЛАВИМИРКА
+ВАТАЈИ ЂУЛА
+ВАТИЋ МАРЈАН
+ВАТИЋ МАРКО
+ВАТИЋ МИРАШ
+ВАТИЋ НИКОЛА
+ВАТОВИЋ ХРАНИСЛАВ
+ВАТОВИЋ ЈЕЛЕНА
+ВАУРИЧАК КАТАЛИН
+ВАВАН МИЛОРАД
+ВАВАН МИЛОРАД
+ВАВАН МЛАДЕНКО
+ВАВАН ПАВЛЕ
+ВАВАН СЛАВКО
+ВАВИЋ ЈОВАН
+ВАВРА ПРЕДРАГ
+ВАВРИН ЈОСИП
+ВАВРИН ПЕТАР
+ВДОВИАК БЕРНАРД
+ВЕЧЕИ ЈОЖЕФ
+ВЕЧЕИ ЈОСИП
+ВЕЧЕИ ЉИЉАНА
+ВЕЧЕЈИ ЈОВАН
+ВЕЧЕРА МИХАЈЛО
+ВЕЧЕРИ ЈУЛИУС
+ВЕЧИ ИШТВАН
+ВЕЧИЋ СВЕТЛАНА
+ВЕШЛИГАЈ СТЕВАН
+ВЕШЛИГАЈ ВЕРА
+ВЕШОВИЋ ИВАНКА
+ВЕШОВИЋ ЛЕОПОЛД
+ВЕШОВИЋ ОЛГА
+ВЕШОВИЋ СМИЉАНА
+ВЕШОВИЋ ВЛАСТИМИР
+ВЕШОВИЋ ВУКСАН
+ВЕШОВИЋ ЗОРКА МР
+ВЕЋКАЛОВ ЂОРЂЕ
+ВЕЋКАЛОВ АЛЕКСАНДАР
+ВЕЋКАЛОВ СОФИЈА ДР ЛЕКАР
+ВЕБЕЛ ВАЛЕРИЈА
+ВЕБЕР БОЖАНА
+ВЕБЕР ГАБРИЕЛА
+ВЕБЕР ГАБРИЕЛА
+ВЕБЕР МИЛИЦА
+ВЕБЕР ОЛГА
+ВЕБЕР ТЕРЕЗИЈА
+ВЕГ ШАНДОР
+ВЕГ ЕНИКЕ
+ВЕГШЕ ПАВЛЕ
+ВЕГЕЛ ЛАСЛО
+ВЕГВАРИ ДЕЖЕ
+ВЕГВАРИ ЈУЛИАНА
+ВЕГВАРИ МИКЛОШ
+ВЕХТЕР КАРОЉ
+ВЕХТЕР КАРОЉ
+ВЕХТЕР ЗОЛТАН
+ВЕИН ЈЕКА
+ВЕИН ЗОРКА
+ВЕИНОВИЋ НИКОЛА
+ВЕЈИН ЂОРЂЕ
+ВЕЈИН БРАНИСЛАВА
+ВЕЈИН БРАНИСЛАВ
+ВЕЈИН ДУШАНКА
+ВЕЈИН КРИСТИНА
+ВЕЈНОВИЋ ДАНЕ
+ВЕЈНОВИЋ ДРАГАН
+ВЕЈНОВИЋ ЈЕЛЕНА
+ВЕЈНОВИЋ МИРКО
+ВЕЈНОВИЋ МЛАДЕН ДИПЛ ИНГ
+ВЕЈНОВИЋ НИКОЛА
+ВЕЈНОВИЋ ОБРАД
+ВЕЈНОВИЋ РАЈКО
+ВЕЈНОВИЋ СИМЕОН
+ВЕЈНОВИЋ ТИХОМИР
+ВЕЈНОВИЋ ТИХОМИР
+ВЕЈНОВИЋ ВАЈКО
+ВЕЈНОВИЋ ВОЈИСЛАВ
+ВЕЈЗОВСКИ ВЕЈЗ
+ВЕКАШ ЖУЖАНА
+ВЕКАШ АТИЛА
+ВЕКАШ ЕВА
+ВЕКАШ ЕВА
+ВЕКАШ ЈАНОШ
+ВЕКАШ ЈУДИТА
+ВЕКАШ ЛАСЛО
+ВЕКИЋ АНА
+ВЕКИЋ ДРАГАН
+ВЕКИЋ ЕЛЕНА
+ВЕКИЋ ЈУЛИЈАНА
+ВЕКИЋ НИКОЛА
+ВЕКИЋ ПЕТАР
+ВЕКИЋ РАДИВОЈ
+ВЕКИЋ РАДМИЛА
+ВЕКИЋ ТЕРЕЗА
+ВЕКИЋ ТЕРЕЗА
+ВЕКИЋ ЗВОНКО
+ВЕКОЊ ШАНДОР
+ВЕКОЊ ЛАДИСЛАВ
+ВЕКОВИЋ МИЛОРАД
+ВЕЛЧЕК ИШТВАН
+ВЕЛЧЕК ЈОСИП
+ВЕЛЧЕК ВЛАДИМИР
+ВЕЛЂИ АНА
+ВЕЛЂИ ЈОЖЕФ
+ВЕЛЂИ ЛАДИСЛАВ
+ВЕЛЂИ МАРИЈА
+ВЕЛАГИЋ САЊА
+ВЕЛАЈА ЈОВО
+ВЕЛБАБОВИЋ ДЕСАНКА
+ВЕЛБАБОВИЋ МИЛОРАД
+ВЕЛБАБОВИЋ РАДИНКА
+ВЕЛЕЧКОВИЋ БРАНКО
+ВЕЛЕЧКОВИЋ ЕВА
+ВЕЛЕМИР АНИЦА
+ВЕЛЕМИР ДРАГОЉУБ
+ВЕЛЕМИР ИЛИЈА
+ВЕЛЕМИР МИЛОМИР
+ВЕЛЕМИР РИСТО
+ВЕЛЕМИР РИСТО
+ВЕЛЕМИР САВКА
+ВЕЛЕМИР СЛАВКО
+ВЕЛЕМИР СВЕТОМИР
+ВЕЛЕМИР ТОДОР
+ВЕЛЕМИР ВОЈА
+ВЕЛЕМИР ВОЈКО
+ВЕЛЕМИРОВ СИМА
+ВЕЛЕНДЕЧИЋ БОЖО
+ВЕЛЕНДЕЧИЋ МИЛАН
+ВЕЛЕЗ ИШТВАН
+ВЕЛЕЗ ИШТВАН
+ВЕЛХЕС МИРОСЛАВ
+ВЕЛХНЕР ЈОСИП ДИПЛ ИНГ
+ВЕЛИЧКОВ ЖИВАН
+ВЕЛИЧКОВ ДАНИЦА
+ВЕЛИЧКОВ ГРОЗДА
+ВЕЛИЧКОВ КАТИЦА
+ВЕЛИЧКОВ ЉИЉА
+ВЕЛИЧКОВ НАТАША
+ВЕЛИЧКОВ РАДИВОЈ
+ВЕЛИЧКОВИЋ ЖИВОРАД ДИПЛ ПРАВНИК
+ВЕЛИЧКОВИЋ ЖИВОТА
+ВЕЛИЧКОВИЋ ЂОРЂЕ
+ВЕЛИЧКОВИЋ БИЉАНА
+ВЕЛИЧКОВИЋ ДУШАН
+ВЕЛИЧКОВИЋ ЕМИЛИЈА
+ВЕЛИЧКОВИЋ ИВАНКА
+ВЕЛИЧКОВИЋ ЈОВАН
+ВЕЛИЧКОВИЋ ЈОВАН
+ВЕЛИЧКОВИЋ КАТАРИНА
+ВЕЛИЧКОВИЋ КСЕНИЈА
+ВЕЛИЧКОВИЋ МАРИЈА
+ВЕЛИЧКОВИЋ МИЛАНКА
+ВЕЛИЧКОВИЋ МИЛАН
+ВЕЛИЧКОВИЋ МИЛИЦА
+ВЕЛИЧКОВИЋ МИЛОРАД
+ВЕЛИЧКОВИЋ НЕНАД
+ВЕЛИЧКОВИЋ НИКОЛА
+ВЕЛИЧКОВИЋ ПЕРСИДА
+ВЕЛИЧКОВИЋ ПРЕДРАГ
+ВЕЛИЧКОВИЋ СЛАВИША
+ВЕЛИЧКОВИЋ СЛАВОЉУБ
+ВЕЛИЧКОВИЋ СОЊА
+ВЕЛИЧКОВИЋ СТЕВАН
+ВЕЛИЧКОВИЋ ЗОРАН
+ВЕЛИЧКОВСКИ АЛЕКСАНДАР
+ВЕЛИШЕК ГАБРИЕЛА
+ВЕЛИШЕК ГЕЗА
+ВЕЛИШЕК КАРЛО
+ВЕЛИЋ ИЛИЈА
+ВЕЛИЋ ЗОРАН
+ВЕЛИЦКИ ЂОРЂЕ
+ВЕЛИЦКИ АЛЕКСАНДАР
+ВЕЛИЦКИ АЛЕКСАНДАР
+ВЕЛИЦКИ ЈЕЛИЦА
+ВЕЛИЦКИ ЈОВИЦА
+ВЕЛИЦКИ ЉУБОМИР
+ВЕЛИЦКИ МИЛАН
+ВЕЛИЦКИ МИЛАН
+ВЕЛИЦКИ МИЛИВОЈ
+ВЕЛИЦКИ МИОДРАГ
+ВЕЛИЦКИ НОВАК
+ВЕЛИЦКИ СВЕТОЗАР
+ВЕЛИЦКИ УРОШ
+ВЕЛИЦКИ ЗОРАН
+ВЕЛИЦКИ ЗОРА
+ВЕЛИЈА ЉИЉАНА
+ВЕЛИЈА РЕЂЕП
+ВЕЛИКИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ВЕЛИКИЋ АНА
+ВЕЛИКИЋ ДАНИЦА
+ВЕЛИКИЋ ЉУБОМИР
+ВЕЛИКИЋ СИМА
+ВЕЛИКИЋ ЗОРАН
+ВЕЛИМИРОВ ЈЕЛЕНА
+ВЕЛИМИРОВ МИЛОШ
+ВЕЛИМИРОВ ВЛАДИМИР
+ВЕЛИМИРОВИЋ АНГЕЛА
+ВЕЛИМИРОВИЋ БОШКО
+ВЕЛИМИРОВИЋ ДИМИТРИЈЕ
+ВЕЛИМИРОВИЋ ДРАШКО
+ВЕЛИМИРОВИЋ ЈЕЛИСАВЕТА
+ВЕЛИМИРОВИЋ ЈОВАН
+ВЕЛИМИРОВИЋ ЛАЗАР
+ВЕЛИМИРОВИЋ НОВАК
+ВЕЛИМИРОВИЋ СИМЕОН
+ВЕЛИМИРОВИЋ СЛАВИЦА
+ВЕЛИМИРОВИЋ СЛАВОЉУБ
+ВЕЛИМИРОВИЋ СМИЉАНА
+ВЕЛИМИРОВИЋ СНЕЖАНА
+ВЕЛИМИРОВИЋ ВОЈИН
+ВЕЛИОСКИ САДЕМ
+ВЕЛИОВ ЏЕМАЈЛО
+ВЕЛИСАВЉЕВ ГОРДАНА ДР
+ВЕЛИСАВЉЕВ МИЛОРАД ДР
+ВЕЛИСАВЉЕВ СРЕДОЈЕ
+ВЕЛИСАВЉЕВИЋ МИЛИСАВ
+ВЕЉА ЖИВА ДИП ОЕЦ
+ВЕЉА ПЕТАР
+ВЕЉАНОВИЋ БРАНИСЛАВ
+ВЕЉАНОВИЋ МОМЧИЛО
+ВЕЉАНОВИЋ ТОМИСЛАВА
+ВЕЉАНОВСКИ ИВАН
+ВЕЉИЋ МИЛОВАН
+ВЕЉКО АНЂЕЛКО
+ВЕЉКОВ ДАРИНКА
+ВЕЉКОВ ГЕОРГИЈЕ
+ВЕЉКОВ ИДА
+ВЕЉКОВ МИРОСЛАВ ДИПЛ ПРАВНИК
+ВЕЉКОВ ПАВЛЕ
+ВЕЉКОВ-ПФАЈФЕР СОФИЈА
+ВЕЉКОВ СТЕВАН
+ВЕЉКОВ ВЛАДИМИР
+ВЕЉКОВИЋ ЖАРКО
+ВЕЉКОВИЋ АЛЕКСАНДАР ДИПЛ ИНГ
+ВЕЉКОВИЋ АЛЕКСАНДАР
+ВЕЉКОВИЋ АНЂЕЛКА
+ВЕЉКОВИЋ БОЖИДАР
+ВЕЉКОВИЋ БОЈАН
+ВЕЉКОВИЋ ДОБРОСАВ
+ВЕЉКОВИЋ ДРАГАН
+ВЕЉКОВИЋ МИЛОМИР
+ВЕЉКОВИЋ МИОДРАГ
+ВЕЉКОВИЋ МИОДРАГ
+ВЕЉКОВИЋ МИРЈАНА
+ВЕЉКОВИЋ МИРКО
+ВЕЉКОВИЋ НАДА
+ВЕЉКОВИЋ ПЕТАР
+ВЕЉКОВИЋ РАДА
+ВЕЉКОВИЋ РАДИСАВ
+ВЕЉКОВИЋ РАДОСАВ
+ВЕЉКОВИЋ РАДОСЛАВ
+ВЕЉКОВИЋ РУЖИЦА
+ВЕЉКОВИЋ СРЕТЕН
+ВЕЉКОВИЋ СВЕТА
+ВЕЉКОВИЋ СВЕТИСЛАВ
+ВЕЉКОВИЋ ТИХОМИР
+ВЕЉКОВИЋ ВИДОЈЕ
+ВЕЉКОВИЋ ВОЈИСЛАВ
+ВЕЉКОВИЋ ВУКАШИН
+ВЕЉОВИЋ ДУШАН
+ВЕЉОВИЋ ЛЕПОСАВА
+ВЕЉОВИЋ МИЛАН
+ВЕЉОВИЋ МИТАР
+ВЕЉОВИЋ МОМЧИЛО
+ВЕЉОВИЋ ПАВЛЕ
+ВЕЉОВИЋ РУЖА
+ВЕЉОВИЋ СИМО
+ВЕЉОВИЋ СЛАВИЦА
+ВЕЛКОВСКИ ИРЕНА
+ВЕЛКОВСКИ ТЕОФИЛ
+ВЕМЕНАЦ ОБРАД
+ВЕМИЋ БОРА
+ВЕМИЋ ДРАГИЊА
+ВЕМИЋ ИЛИЈА
+ВЕМИЋ ЛАЗАР
+ВЕМИЋ МИЛАН
+ВЕМИЋ РАДИВОЈЕ ДР
+ВЕМИЋ РАДИВОЈЕ
+ВЕНЧЕЛОВСКИ ЉУБИЦА
+ВЕНЧЕЛОВСКИ ВЛАДА
+ВЕНЧЕЛОВСКИ ВЛАДИМИР
+ВЕНЧЕЛОВСКИ ВЛАСТА
+ВЕНЦЕЛ ГЕЗА
+ВЕНЦЕЛ ГЕЗА
+ВЕНЦЛ ЈОСИП
+ВЕНЦЛ ЗВОНИМИР
+ВЕНДЛЕНЕР АНДРИЈАНА
+ВЕНДЛЕНЕР ЈЕЛЕНА
+ВЕНДЛЕНЕР ЗОРАН
+ВЕНЕ ГОРДАНА
+ВЕНГРИН АГНЕШ
+ВЕНГРИНГ ФЕРЕНЦ
+ВЕНГРИНГ СТЕВАН
+ВЕРАЦ МИОДРАГ
+ВЕРБА ЈОЖЕФ
+ВЕРБАНЕЦ ИШТВАН
+ВЕРБАНЕЦ ИШТВАН
+ВЕРБАСИ ФРАЊА
+ВЕРБАСИ ЈОВАНКА
+ВЕРЕШ ЂУЛА
+ВЕРЕШ АНДРИЈА
+ВЕРЕШ ДРАГУТИН
+ВЕРЕШ ХАЈНАЛКА
+ВЕРЕШ ИВАН
+ВЕРЕШ ЈЕЛИСАВЕТА
+ВЕРЕШ ЈОЖЕФ
+ВЕРЕШ ЈОСИП
+ВЕРЕШ ЈОСИП
+ВЕРЕШ ЛАДИСЛАВ
+ВЕРЕШ МАРИЈА
+ВЕРЕШБАРАЊИ ИШТВАН
+ВЕРЕШБАРАЊИ МАРИЈА
+ВЕРЕШЕВИЋ ТИХОМИР
+ВЕРЕЖАН ЂУРИЦА
+ВЕРЕЖАН ЗОРКА
+ВЕРЕБ ЖУЖАНА
+ВЕРЕБЕШ БОРИСЛАВА
+ВЕРЕБЕШ ЕРВИН
+ВЕРЕЦКЕИ ДУШИЦА
+ВЕРЕЦКЕИ ГЕЗА
+ВЕРЕЦКЕИ МАРГИТА
+ВЕРГАШ БРАНКО
+ВЕРИЋ РАТКО
+ВЕРКИЋ ТОДОР
+ВЕРКИЋ ВИТОМИР
+ВЕРКИЋ ВОЈИСЛАВ
+ВЕРЛИЋ МИЛАН
+ВЕРМЕШ ЛИЛИ
+ВЕРМЕЗОВИЋ ЂОРЂЕ
+ВЕРНАЧКИ АНИТА
+ВЕРНАЧКИ БРАНИСЛАВ
+ВЕРНАЧКИ ГАВРА
+ВЕРНАЧКИ ГАВРИЛО
+ВЕРНАЧКИ МИРОСЛАВ
+ВЕРНЕР АНА
+ВЕРНЕР МИХАЈЛО
+ВЕРНЕР СТЕВАН
+ВЕРНОТ АНА
+ВЕРНОТ ДУЊА
+ВЕРНОТ ЈОСИП
+ВЕРНОТ ВЈЕКОСЛАВА
+ВЕРНОТ ЗДЕНКО
+ВЕРНОТ ЗДЕНКО
+ВЕРЗОТИ ДРАГИЦА
+ВЕРЗОТИ ЈУЛИЈАНА
+ВЕРЗОТИ ПЕТАР
+ВЕРЗОТИ СТАНКА
+ВЕСЕЛИЋ БОРИВОЈ
+ВЕСЕЛИЋ ДРАГОЉУБ
+ВЕСЕЛИЋ ГОСПАВА
+ВЕСЕЛИЋ РАДОЈКА
+ВЕСЕЛИЋ СЛАВКО
+ВЕСЕЛИЦА МАНЕ
+ВЕСЕЛИЦА МИЛАН
+ВЕСЕЛИЦА СВЕТОЗАР
+ВЕСЕЛИН ПЕТАР
+ВЕСЕЛИНОВ ЂОРЂЕ
+ВЕСЕЛИНОВ БОРИСЛАВА
+ВЕСЕЛИНОВ БРАНИСЛАВ
+ВЕСЕЛИНОВ ЛИБУША
+ВЕСЕЛИНОВ МИЛИЦА
+ВЕСЕЛИНОВ РИСТА
+ВЕСЕЛИНОВ СТЕВАН ДР
+ВЕСЕЛИНОВ СТЕВАН
+ВЕСЕЛИНОВ СВЕТОЗАР
+ВЕСЕЛИНОВ ВЕРА
+ВЕСЕЛИНОВИЋ ЂОРЂЕ
+ВЕСЕЛИНОВИЋ ЂОРЂЕ
+ВЕСЕЛИНОВИЋ ЂОРЂЕ
+ВЕСЕЛИНОВИЋ ЂУЈА
+ВЕСЕЛИНОВИЋ ЂУРА
+ВЕСЕЛИНОВИЋ ЂУРО
+ВЕСЕЛИНОВИЋ АЛЕКСАНДАР
+ВЕСЕЛИНОВИЋ АЛЕКСАНДАР
+ВЕСЕЛИНОВИЋ АЛЕКСАНДАР
+ВЕСЕЛИНОВИЋ АЛЕКСАНДАР
+ВЕСЕЛИНОВИЋ БОРА
+ВЕСЕЛИНОВИЋ БРАНЕ
+ВЕСЕЛИНОВИЋ БРАНИСЛАВ
+ВЕСЕЛИНОВИЋ БРАНИСЛАВ
+ВЕСЕЛИНОВИЋ ДАРА
+ВЕСЕЛИНОВИЋ ДАРКО
+ВЕСЕЛИНОВИЋ ДРАГАН
+ВЕСЕЛИНОВИЋ ДРАГОМИР
+ВЕСЕЛИНОВИЋ ДРАГОРАД
+ВЕСЕЛИНОВИЋ ДУШАНКА
+ВЕСЕЛИНОВИЋ ГОРДАНА
+ВЕСЕЛИНОВИЋ ИЛИЈА
+ВЕСЕЛИНОВИЋ ЈЕЛИСАВКА
+ВЕСЕЛИНОВИЋ ЈОРДАН
+ВЕСЕЛИНОВИЋ ЈОСИПА
+ВЕСЕЛИНОВИЋ ЈОВАНКА
+ВЕСЕЛИНОВИЋ ЈУЛИЈАНА
+ВЕСЕЛИНОВИЋ КАТИЦА
+ВЕСЕЛИНОВИЋ ЛАНА
+ВЕСЕЛИНОВИЋ ЛЕНКИЦА
+ВЕСЕЛИНОВИЋ ЉУБОМИР
+ВЕСЕЛИНОВИЋ МАРИЈА
+ВЕСЕЛИНОВИЋ МИКА
+ВЕСЕЛИНОВИЋ МИЛАНКА
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛАН
+ВЕСЕЛИНОВИЋ МИЛЕНА
+ВЕСЕЛИНОВИЋ МИЛЕ
+ВЕСЕЛИНОВИЋ МИЛИСАВ
+ВЕСЕЛИНОВИЋ МИЛОРАД
+ВЕСЕЛИНОВИЋ МИРКО
+ВЕСЕЛИНОВИЋ МИТА
+ВЕСЕЛИНОВИЋ МЛАДЕН
+ВЕСЕЛИНОВИЋ НИКОЛА
+ВЕСЕЛИНОВИЋ НИКОЛА
+ВЕСЕЛИНОВИЋ ОЛГА
+ВЕСЕЛИНОВИЋ ПАВЛЕ
+ВЕСЕЛИНОВИЋ ПЕРСИДА
+ВЕСЕЛИНОВИЋ ПЕТАР
+ВЕСЕЛИНОВИЋ-ПОПОВИЋ БРАНКА
+ВЕСЕЛИНОВИЋ ПРЕДРАГ
+ВЕСЕЛИНОВИЋ РАДМИЛ
+ВЕСЕЛИНОВИЋ РАНКО
+ВЕСЕЛИНОВИЋ РАНКО
+ВЕСЕЛИНОВИЋ РУЖИЦА
+ВЕСЕЛИНОВИЋ РУЖИЦА
+ВЕСЕЛИНОВИЋ РУЖИЦА
+ВЕСЕЛИНОВИЋ САВА
+ВЕСЕЛИНОВИЋ СЕВЕР
+ВЕСЕЛИНОВИЋ СЛОБОДАН
+ВЕСЕЛИНОВИЋ СПАСОЈЕ
+ВЕСЕЛИНОВИЋ СТЕВАН
+ВЕСЕЛИНОВИЋ СТЕВАН
+ВЕСЕЛИНОВИЋ СВЕТИСЛАВ
+ВЕСЕЛИНОВИЋ ТОДОР
+ВЕСЕЛИНОВИЋ ТОДОР
+ВЕСЕЛИНОВИЋ УРОШ
+ВЕСЕЛИНОВИЋ ВАСИЉКА
+ВЕСЕЛИНОВИЋ ВЕЛИМИР
+ВЕСЕЛИНОВИЋ ВЕЛИЗАР
+ВЕСЕЛИНОВИЋ ВЕЉКО
+ВЕСЕЛИНОВИЋ ВЕРА
+ВЕСЕЛИНОВИЋ ВЕРА
+ВЕСЕЛИНОВИЋ ВЕСЕЛИН
+ВЕСЕЛИНОВИЋ ВЕСЕЛИН
+ВЕСЕЛИНОВИЋ ВИНКА
+ВЕСЕЛИНОВИЋ ВЛАДИСЛАВ
+ВЕСЕЛИНОВИЋ ВЛАСТИМИР
+ВЕСЕЛИНОВИЋ ВОЈИСЛАВ ДР ЛЕКАР
+ВЕСЕЛИНОВИЋ ВОЈИСЛАВ
+ВЕСЕЛИНОВИЋ ВУКИЦА
+ВЕСЕЛИНОВИЋ ЗОРАН
+ВЕСЕЛИНОВИЋ ЗОРАН
+ВЕСЕЛИНОВИЋ ЗВЕЗДАН
+ВЕСИЋ ДОБРОСАВ
+ВЕСИЋ ДРАГОСЛАВ
+ВЕСИЋ КАТИЦА
+ВЕСИЋ КРСТА
+ВЕСИЋ МИЛАН
+ВЕСИЋ МИЛАН
+ВЕСИЋ МИЛИЦА
+ВЕСИЋ МИОДРАГ
+ВЕСИЋ МИТАР
+ВЕСИЋ МЛАДЕН
+ВЕСИЋ РУЖИЦА
+ВЕСИЋ-ВАРГА ДРАГИЦА
+ВЕСИЋ ВЕСЕЛИНКА
+ВЕСИН БРАНКО
+ВЕСИН МИЛАН
+ВЕСИН НАДА
+ВЕСИН ПЕТАР
+ВЕСКОВ АЛЕКСАНДАР
+ВЕСКОВ АЛЕКСАНДАР
+ВЕСКОВ ИВАН
+ВЕСКОВ ЈЕЛЕНА
+ВЕСКОВ МИЛОШ
+ВЕСКОВИЋ АНКИЦА
+ВЕСКОВИЋ ДРАШКО
+ВЕСКОВИЋ КАТАРИНА
+ВЕСКОВИЋ МАРИЦА
+ВЕСКОВИЋ МИРОСЛАВ
+ВЕСКОВИЋ МОМЧИЛО ДИПЛ ИНГ
+ВЕСКОВИЋ ПЕТАР
+ВЕСКОВИЋ СЛАВКО
+ВЕСКОВИЋ СТАНОЈЕ
+ВЕСКОВИЋ ЗОРА
+ВЕСЛАВСКИ ТИНКА
+ВЕСНИЋ МИЛЕНА
+ВЕСНИЋ-ВАСИЉЕВИЋ АНЂЕЛИЈА
+ВЕСОВИЋ АЦО
+ВЕСОВИЋ АНДРИЈА
+ВЕТРАБ ФРАЊА
+ВЕТРАБ КАТАЛИН
+ВЕТРАБ МИХАЉ
+ВЕТРО ПЕТАР
+ВЕВЕРИЧЕК МАРИЈА
+ВЕЗЕТИ МИХАЕЛ
+ВЕЗЕТИ ПЕТАР
+ВЕЗИЛИЋ ЂОРЂЕ
+ВЕЗИЛИЋ ЦРНОГОРКА
+ВЕЗИЛИЋ ДУШАНКА
+ВЕЗИЛИЋ ДУШИЦА
+ВЕЗИЛИЋ ЈЕЛИЦА
+ВЕЗИЛИЋ РАДОСЛАВ
+ВЕЗМАР БРАНКО
+ВЕЗМАР ИЛИЈА
+ВЕЗМАР МАРГАРИТА
+ВЕЗМАР МИЛАН
+ВЕЗМАР МИЛОШ
+ВЕЗМАР МИЛОРАД
+ВЕЗМАР МОМЧИЛО
+ВЕЗМАР НИКОЛА
+ВЕЗМАР ПЕТАР
+ВЕЗУЛИЋ ЂОРЂЕ
+ВИЧЕК ШАНДОР
+ВИЧЕК КАРОЉ
+ВИЧЕВИЋ ЗВОНИМИР
+ВИЧИК ИГЊАТ
+ВИШЕКРУНА БОРИВОЈ
+ВИШЕКРУНА ДАНКО
+ВИШЕКРУНА ДУШАН
+ВИШЕКРУНА ДУШКО
+ВИШЕКРУНА ЈОВАН
+ВИШЕКРУНА МИЛАН
+ВИШЕКРУНА СЛАВКО
+ВИШЕКРУНА ВОЈИН
+ВИШИЋ МИЛЕ
+ВИШКОВИЋ МИЛИЦА
+ВИШКОВИЋ МИЛОШ
+ВИШКОВИЋ ПЛАНИНКА
+ВИШКОВИЋ ПРЕДРАГ
+ВИШКОВИЋ ВЛАДИМИР ДР
+ВИШНИЋ ДАНИЦА
+ВИШНИЋ ДУШАН
+ВИШНИЋ ЗОРКА
+ВИШЊЕВЧАНИН ЈОВАН
+ВИШЊЕВЧАНИН ЛЕПА
+ВИШЊЕВАЦ БОРО
+ВИШЊЕВАЦ ОЛИВЕРА
+ВИШЊЕВСКИ КАТИЦА
+ВИШЊИЧАН ДУШАН
+ВИШЊИЧАН ГАВРИЛО
+ВИШЊИЧАН ЈОВАНКА
+ВИШЊИЧАН МИЛИЦА
+ВИШЊИЧАНИН ЈОВАНКА
+ВИШЊИЧАР ЖАРКО
+ВИШЊИЧАР ЂОРЂЕ
+ВИШЊИЧАР ЂОРЂЕ
+ВИШЊИЧАР ДРАГОСЛАВ
+ВИШЊИЧАР МАРИЈА
+ВИШЊИЧАР МИКА
+ВИШЊИЧАР НЕДЕЉКО
+ВИШЊИЧКИ ГОРДАНА
+ВИШЊИЧКИ МИЛОШ
+ВИШЊИЧКИ МИРОСЛАВ
+ВИШЊИЧКИ СРЕТЕН
+ВИШЊИЋ ЧЕДОМИЛА
+ВИШЊИЋ БРАНКО
+ВИШЊИЋ БРАНСИЛАВА
+ВИШЊИЋ ДАЛИБОР
+ВИШЊИЋ ДУШАН
+ВИШЊИЋ ИЛИЈА
+ВИШЊИЋ ЈОСИП
+ВИШЊИЋ МАРИЈА
+ВИШЊИЋ МИЛАН
+ВИШЊИЋ МИЛИЦА
+ВИШЊИЋ ОЛИВЕРА
+ВИШЊИЋ ОЛИВЕР
+ВИШЊИЋ СПАСОЈЕ
+ВИШЊИЋ ТИХОМИР
+ВИШЊИЋ ВАСИЛИЈЕ
+ВИШЊИЋ ВЕРА
+ВИШЊИЋ ВЕСНА
+ВИШЊОВСКИ ЂУРА
+ВИШЊОВСКИ АРАНКА
+ВИШЊОВСКИ МАРИЈА
+ВИШЊОВСКИ МАРЈАН
+ВИШОШЕВИЋ РУЖЕНА
+ВИШОНТАИ ЈОЖЕФ
+ВИШОНТАИ ЈОЖЕФ
+ВИЋЕВИЋ РАДИША
+ВИЖАИ ШАНДОР
+ВИАТОРИС ЈАНОШ
+ВИАТОРИС ЈУЛИШКА
+ВИАТОРИС ЉУБИЦА
+ВИБОК ЈОЖЕФ
+ВИЦЕИ ЈОЖЕФ
+ВИЦЕИ НИКОЛА
+ВИЦИАН КЛАРА
+ВИЦКО АРПАД
+ВИЦКО ФРАЊА
+ВИЦКО ЈОСИП
+ВИЦКОШ ЈОЖЕФ
+ВИЦКОВИЋ БРАНКО
+ВИЦКОВИЋ БРАНКО
+ВИЦКОВИЋ ДРАГИЦА
+ВИЦКОВИЋ ТОМИСЛАВ
+ВИЦКОВИЋ ВЕСНА
+ВИЦО БОГДАН
+ВИЦО РАДИВОЈЕ
+ВИЦО РАДОМИР
+ВИД БРАНИСЛАВА
+ВИДА ЈЕЛИСАВЕТА
+ВИДА ЈОЖЕФ
+ВИДА ЈУЛИЈА
+ВИДА СЛОБОДАНКА
+ВИДА ВИЛИ
+ВИДАЧ ЈАЊА ЛОКАЛ
+ВИДАЧ ЛАСЛО
+ВИДАЧ СЛАВИЦА
+ВИДАЈИЋ ЖИВКО
+ВИДАЈИЋ ЈАСМИНА
+ВИДАЈИЋ ЈОСИП
+ВИДАЈИЋ ЛУЧИЈАНО
+ВИДАЈИЋ МАРИЈА
+ВИДАЈИЋ ВЕЉА
+ВИДАЈИЋ ВЛАДА
+ВИДАКОВ АНКИЦА
+ВИДАКОВ ЈОВАН
+ВИДАКОВ ЗОРИЦА
+ВИДАКОВИЋ АЛЕКСАНДАР
+ВИДАКОВИЋ АЛЕКСАНДРА ДР
+ВИДАКОВИЋ АНГЕЛИНА
+ВИДАКОВИЋ БРАНИМИР
+ВИДАКОВИЋ БРАНКО
+ВИДАКОВИЋ ДУШАНКА
+ВИДАКОВИЋ ДУШАН
+ВИДАКОВИЋ ЕМИЛ
+ВИДАКОВИЋ ИВАН
+ВИДАКОВИЋ ИВАН
+ВИДАКОВИЋ ИВАН
+ВИДАКОВИЋ ЈАГОДА
+ВИДАКОВИЋ ЈОСИП
+ВИДАКОВИЋ ЈОСИП
+ВИДАКОВИЋ КОСА
+ВИДАКОВИЋ МИХАЈЛО
+ВИДАКОВИЋ МИЛАН
+ВИДАКОВИЋ МИЛАН
+ВИДАКОВИЋ МИЉА
+ВИДАКОВИЋ МИРЧЕТА
+ВИДАКОВИЋ МИРЈАНА
+ВИДАКОВИЋ МИРКО
+ВИДАКОВИЋ НЕДЕЉКО
+ВИДАКОВИЋ ОЛГА
+ВИДАКОВИЋ ОЛГА
+ВИДАКОВИЋ РАДЕНКО
+ВИДАКОВИЋ РАДМИЛА
+ВИДАКОВИЋ САВА
+ВИДАКОВИЋ СЛАВКА
+ВИДАКОВИЋ СОФИЈА
+ВИДАКОВИЋ СРЕЋКО
+ВИДАКОВИЋ СРЕЋКО
+ВИДАКОВИЋ СТЕВАН
+ВИДАКОВИЋ СТОЈАН
+ВИДАКОВИЋ СВЕТОЗАР
+ВИДАКОВИЋ ТЕРЕЗА
+ВИДАКОВИЋ ВОЈИСЛАВ
+ВИДАКОВИЋ ВОЈИСЛАВ
+ВИДАКОВИЋ ВУКАШИН
+ВИДАНОВИЋ МИХАЈЛО
+ВИДАНОВИЋ-СКОКО ЈЕЛЕНА
+ВИДАРИЋ ЈОВО
+ВИДАРИЋ МИЛОРАД
+ВИДАРИЋ РАТКО
+ВИДАРИЋ СТЕВАН
+ВИДАС ТЕРЕЗА
+ВИДЕЦ ЈОСИП
+ВИДЕЦ ЈОСИП
+ВИДЕНОВИЋ БРАНКО
+ВИДЕНОВИЋ КОСОВКА
+ВИДЕНОВИЋ ЉИЉАНА ДР
+ВИДЕНОВИЋ МОМИР
+ВИДЕР МИРКО ДИПЛ ИНГ
+ВИДИЋ ЖЕЉКО
+ВИДИЋ ЂОРЂЕ
+ВИДИЋ БРАНИСЛАВ
+ВИДИЋ БРАНКА
+ВИДИЋ БРАНКА
+ВИДИЋ БРАНКО
+ВИДИЋ ДРАГАНА
+ВИДИЋ ДУШАНКА
+ВИДИЋ ЕМИЛИЈА
+ВИДИЋ ЈЕЛИЦА
+ВИДИЋ ЈОЦА
+ВИДИЋ ЉИЉАНА
+ВИДИЋ ЉУБОМИР
+ВИДИЋ МАРИЈА
+ВИДИЋ МИЛАН
+ВИДИЋ МИЛАН
+ВИДИЋ МИЛОШ
+ВИДИЋ МИРОСЛАВА
+ВИДИЋ МИРОСЛАВ
+ВИДИЋ НАДА
+ВИДИЋ ПЕРО
+ВИДИЋ РАДМИЛА
+ВИДИЋ РАДМИЛА
+ВИДИЋ РАЈКО
+ВИДИЋ СОФИЈА
+ВИДИЋ СТАНИСЛАВА
+ВИДИЋ СТЕВАН
+ВИДИЋ СВЕТИСЛАВ
+ВИДИЋ ВЕЉКО
+ВИДИЋ ВЕРА
+ВИДИЋ ЗДРАВКО
+ВИДИЦКИ БРАНКО
+ВИДИЦКИ ИВАН
+ВИДИЦКИ КОСТА
+ВИДИЦКИ ЉУБОМИР
+ВИДИЦКИ МИРОСЛАВ
+ВИДИНЕР БОЖИДАР
+ВИДМАНИЋ ГАБРИЈЕЛА
+ВИДОЈЕВИЋ ЖИВКА
+ВИДОЈЕВИЋ БЛАЖО
+ВИДОЈЕВИЋ БОЖА
+ВИДОЈЕВИЋ ЈОСИФ
+ВИДОЈКОВИЋ РАДОМИР
+ВИДОСАВЉЕВИЋ ДОБРОСАВ
+ВИДОСАВЉЕВИЋ ДУШАН
+ВИДОСАВЉЕВИЋ ЈЕЛИЦА
+ВИДОСАВЉЕВИЋ ЗВОНИМИР
+ВИДОВИЋ ЖИВКО
+ВИДОВИЋ АМИРА
+ВИДОВИЋ АНИЦА
+ВИДОВИЋ БЕАТРИС
+ВИДОВИЋ БИЉАНА
+ВИДОВИЋ БИСЕРКА
+ВИДОВИЋ БОЖИДАР
+ВИДОВИЋ БОРИСЛАВ
+ВИДОВИЋ БОРИСЛАВ
+ВИДОВИЋ БРАНИСЛАВ
+ВИДОВИЋ ДРАГО
+ВИДОВИЋ МАРЈАН
+ВИДОВИЋ МИЛАН
+ВИДОВИЋ МИЛАН
+ВИДОВИЋ МИЛАН
+ВИДОВИЋ МИЛЕ
+ВИДОВИЋ МИЛИЦА
+ВИДОВИЋ МИЛОШ
+ВИДОВИЋ МИРКО
+ВИДОВИЋ НАДА
+ВИДОВИЋ ПЕТАР
+ВИДОВИЋ РАДОМИР
+ВИДОВИЋ РАЈКО
+ВИДОВИЋ РУЖИЦА
+ВИДОВИЋ САВА
+ВИДОВИЋ СЛОБОДАН
+ВИДОВИЋ ВИД
+ВИГИ ЈОСИП
+ВИГЊЕВИЋ ЂОРЂЕ
+ВИГЊЕВИЋ АНА
+ВИГЊЕВИЋ БРАНКА
+ВИГЊЕВИЋ БРАНКО
+ВИГЊЕВИЋ ДАКО
+ВИГЊЕВИЋ ДРАГАН
+ВИГЊЕВИЋ ДРАГАН
+ВИГЊЕВИЋ ДУШАНКА
+ВИГЊЕВИЋ МИЛЕНКО
+ВИГЊЕВИЋ НЕВЕНКА
+ВИГЊЕВИЋ РАДЕ
+ВИГЊЕВИЋ СТЕВАНИЈА
+ВИГЊЕВИЋ ВЕСНА
+ВИГЊЕВИЋ ВЛАДИМИР
+ВИГЊЕВИЋ ЗОРАН
+ВИЈАТОВ СМИЉА
+ВИЈЕШТИЦА ЊЕГОМИР
+ВИЈУК ЉУБАН
+ВИЈУК САВА
+ВИКОР ПЕТАР
+ВИКОР РУЖА
+ВИЛЧЕК ЈАЊА
+ВИЛЧЕК НИКОЛА
+ВИЛА МИЛОВАН
+ВИЛАГОШ ЂЕРЂИ
+ВИЛЕТИ ЗОРА
+ВИЛИШ ЂУРА
+ВИЛИШ ФРАЊА
+ВИЛИЋ МАРКО
+ВИЛИЋ РАДОМИР
+ВИЛИЋ РАДОСЛАВА
+ВИЛИЋ РОЗАЛИЈА
+ВИЛИЋ ВОЈИСЛАВ
+ВИЛИГОРСКИ ПАУЛА
+ВИЛОТИЋ ЖИВКО
+ВИЛОТИЋ МИЛИСАВ
+ВИЛОТИЈЕВИЋ ДРАГУТИН
+ВИЛОТИЈЕВИЋ КИЋУН
+ВИЛОТИЈЕВИЋ МИРОЈЕ
+ВИЛОВАЧКИ КАТИЦА
+ВИЛОВАЧКИ СЛАВКО
+ВИЛОВАЦ ЈОВАН
+ВИЛОВАЦ ЈОВАН
+ВИЛОВАЦ МИЛАН
+ВИЛОВСКИ ЂОРЂЕ
+ВИЛОВСКИ БРАНИСЛАВ
+ВИЛОВСКИ БРАНКО
+ВИЛОВСКИ САВА
+ВИЛОВСКИ СЛАВОМИР
+ВИЛОВСКИ СМИЉАНА
+ВИЛОВСКИ ВЕЉКО
+ВИЛОВСКИ ЗОРА
+ВИЛУС ДАНИЦА
+ВИМЕР ВЕРА
+ВИН ИВАН
+ВИН ЈОСИП
+ВИН ЛАЈОШ
+ВИН ПАВЛЕ
+ВИН СВЕТЛАНА
+ВИНШ ДРАГУТИН
+ВИНАЈ ЂОРЂЕ
+ВИНАЈ ЂОРЂЕ
+ВИНАЈ ЈАНКО
+ВИНАЈ ЉУБИЦА
+ВИНАЈ МЕЛАНИЈА
+ВИНАЈИ ЂУРА
+ВИНАЈИ МИТАР
+ВИНАЈИ ВЕРИЦА
+ВИНАРЖ ВЛАДИМИР
+ВИНЦЕ АНДРИЈА
+ВИНЦЕ ЕРЖЕБЕТ
+ВИНЦЕ ИШТВАН
+ВИНЦЕ КАРЛО
+ВИНЦЕ ЛАЦИКА
+ВИНЦЕ МАРЕЛА
+ВИНЦЕ МАРГИТА
+ВИНЦЕ ПАВЛЕ
+ВИНЦЕТИН АНА
+ВИНЏАНОВИЋ ПЕТАР
+ВИНЏАНОВИЋ РАДИВОЈЕ
+ВИНДИШ ДРАГУТИН
+ВИНДИШ СТЕВАН
+ВИНЕР БРАНИСЛАВ
+ВИНЕР ИВАН
+ВИНЕР ЈЕРОНИМ
+ВИНЕР МАРИЈА
+ВИНЕР ЗВОНИМИР
+ВИНКА ЕМАНУЕЛА
+ВИНКИЋ ИЛИЈА
+ВИНКЛЕР ЈОЖЕФ
+ВИНКЛЕРОВИЋ ВЕРИЦА
+ВИНКОВИЋ АНА
+ВИНКОВИЋ ДРАГАН
+ВИНКОВИЋ ЉУДЕВИТ
+ВИНОКИЋ БОГДАН
+ВИНОКИЋ ВАСИЉКА
+ВИРАГ АЛБЕРТ
+ВИРАГ АНДРИЈА
+ВИРАГ ЕРИКА
+ВИРАГ ЈУЛИЈАНА
+ВИРАГ ЉУДЕВИТ
+ВИРАГ МАРТОН
+ВИРАГ МИХАЈЛО
+ВИРАГ РОБЕРТ
+ВИРАГ РОБЕРТ
+ВИРЦ ФЕРЕНЦ
+ВИРЦ ЈОЖЕФ
+ВИРЦ ЈОВАН
+ВИРЦ МАРТИН
+ВИРЦ НАДА
+ВИРЦ РУЖИЦА
+ВИРЦ СТЕВАН
+ВИРИЋ ИВАН
+ВИРИЋ ИВАН
+ВИРИЈЕВИЋ ЂОРЂЕ
+ВИРИЈЕВИЋ БОЖИДАР
+ВИРИЈЕВИЋ БУДИМИР
+ВИРИЈЕВИЋ ЈОВАНКА
+ВИРИЈЕВИЋ ЉУБИНКО
+ВИРИЈЕВИЋ ПЕТАР
+ВИРИЈЕВИЋ ВОЈИН
+ВИСЛАВСКИ ЂУРА
+ВИСЛАВСКИ БОГДАН
+ВИСЛАВСКИ ЈАКИМ
+ВИСЛАВСКИ ЈАКИМ
+ВИСЛАВСКИ ЈАНОШ
+ВИСЛАВСКИ ЈАНОШ
+ВИСЛАВСКИ ЛЕОН
+ВИСЛАВСКИ ЉУБОМИР
+ВИСЛАВСКИ МАРИЈА
+ВИСЛАВСКИ МИХАЈЛО
+ВИСЛАВСКИ МИРОН
+ВИСЛАВСКИ МИРОСЛАВ
+ВИСЛАВСКИ МИРОСЛАВ
+ВИСЛАВСКИ НАТАША
+ВИСЛАВСКИ ЗЛАТКО
+ВИСТ ХЕЛГААНА
+ВИТАС СТЕВАН
+ВИТАС СТЕВАН
+ВИТАСОВИЋ ДУШАНКА
+ВИТАСОВИЋ ДУШАНКА
+ВИТАСОВИЋ ДУШАН
+ВИТАСОВИЋ НЕБОЈША
+ВИТАЗ ПЕТАР
+ВИТЕЗ ЈАН
+ВИТЕЗ ТУГОМИР
+ВИТЕЗ ЗВОНКО
+ВИТИЋ ЂОРЂЕ
+ВИТИЋ ЂОРЂЕ
+ВИТИЋ БОШКО ДР ЛЕКАР
+ВИТЈУК МИРЈАНА ДИПЛ ИНГ
+ВИТЈУК ПЕТАР ДИПЛ ИНГ
+ВИТКАИ ИЛОНА
+ВИТКОВИЋ БРАНКО
+ВИТКОВИЋ ДРАГО
+ВИТКОВИЋ ЈОВАН
+ВИТОМИРОВ ЖИВАН
+ВИТОМИРОВИЋ БОРИС
+ВИТОМИРОВИЋ ДРАГОМИР
+ВИТОРАЦ ЂУРА
+ВИТОРАЦ ЂУРО
+ВИТОРАЦ БОРИСЛАВ
+ВИТОРАЦ ИЛИЈА
+ВИТОРАЦ НАДА
+ВИТОРАЦ РУЖЕНКА
+ВИТОРОВИЋ МИЛАН
+ВИТОРОВИЋ МИЛОШ
+ВИТОРОВИЋ ОЛГА
+ВИТОРОВИЋ РАНКА
+ВИТОРОВИЋ СОФИЈА
+ВИТУШКА СТЕВАН
+ВИВОД ЈЕЛИСАВЕТА
+ВИВОД МАГДАЛЕНА
+ВИЗИ ШАНДОР
+ВИЗИ ЈОСИП
+ВИЗИ ЈОВАН
+ВИЗИ КАТИЦА
+ВИЗИ МАРИЈА
+ВИЗИ МАРИЈА
+ВИЗИ РАДОЈКА
+ВИЗИ СОЊА
+ВИЗИ СТЕВАН
+ВЈЕШТИЦА ЂУРО
+ВЈЕШТИЦА ДУШАНКА
+ВЈЕШТИЦА ЈОВО
+ВЈЕШТИЦА МИЛАН
+ВЈЕШТИЦА МИРКО
+ВЈЕШТИЦА МИРОСЛАВ
+ВЈЕШТИЦА НАДА
+ВЈЕШТИЦА НЕБОЈША
+ВЈЕШТИЦА СЛАВКО
+ВЈЕРГ БРАНИСЛАВ
+ВЈЕТРОВ ЉУБИЦА
+ВЛА ДУШАН
+ВЛА ДУШАН
+ВЛА ЈОВАН
+ВЛА МИЛОВАН
+ВЛА ПЕТАР
+ВЛА РАДОСЛАВ
+ВЛА СЛАВКО
+ВЛА СРЕТА
+ВЛАЧО ДУШАНКА
+ВЛАШЧИЋ АЛЕКСАНДАР
+ВЛАШИЋ МИОДРАГ
+ВЛАШИЋ ВАСО
+ВЛАШКАЛИЋ ЂОРЂЕ
+ВЛАШКАЛИЋ АЛЕКСАНДАР
+ВЛАШКАЛИЋ АНДРИЈА
+ВЛАШКАЛИЋ БОЖАНА
+ВЛАШКАЛИЋ-БОЈАНОВИЋ РАЈКА
+ВЛАШКАЛИЋ БРАНИСЛАВ
+ВЛАШКАЛИЋ БРАНИСЛАВ
+ВЛАШКАЛИЋ БРАНИСЛАВ
+ВЛАШКАЛИЋ ДОНКА
+ВЛАШКАЛИЋ ФАДИЛА
+ВЛАШКАЛИЋ ИЛИЈА
+ВЛАШКАЛИЋ ЛАЗАР
+ВЛАШКАЛИЋ ЛАЗАР
+ВЛАШКАЛИЋ МИЛОРАД
+ВЛАШКАЛИЋ НИКОЛА
+ВЛАШКАЛИЋ ОЛГА
+ВЛАШКАЛИЋ ПАВЛЕ
+ВЛАШКАЛИЋ ПАВЛЕ
+ВЛАШКАЛИЋ ПАВЛЕ
+ВЛАШКАЛИЋ ПЕТАР
+ВЛАШКАЛИЋ ПЕТАР
+ВЛАШКАЛИЋ-ПОПОВИЋ ДУШАНКА
+ВЛАШКАЛИЋ РАДОСЛАВ
+ВЛАШКАЛИЋ САВА
+ВЛАШКАЛИЋ СЛОБОДАН
+ВЛАШКАЛИЋ СЛОБОДАН
+ВЛАШКАЛИЋ СТЕВАН
+ВЛАШКАЛИЋ СТОЈАН
+ВЛАШКАЛИЋ ВЛАДИМИР
+ВЛАШКАЛИЋ ЗОРА
+ВЛАШКАЛИЈА ЈЕЛЕНА
+ВЛАШКАЛИЈА ВЛАДА
+ВЛАШКАЛИН БРАНКО
+ВЛАШКИ БОГДАНКА
+ВЛАШКИ ЛАЗАР
+ВЛАШКИ ПРЕДРАГ
+ВЛАДАРСКИ ОЛГА
+ВЛАДАРСКИ ОЛГА
+ВЛАДЕТИЋ МИЛАН
+ВЛАДЕТИЋ МИРКО
+ВЛАДИЋ ДРАГО
+ВЛАДИЋ МИЛАН
+ВЛАДИЋ ПЕТАР
+ВЛАДИМИР СЕЛЕНА
+ВЛАДИМИР ЗДРАВКО
+ВЛАДИМИРОВИЋ АЛЕКСАНДАР
+ВЛАДИМИРОВИЋ МИЛАН
+ВЛАДИМИРОВИЋ ВЛАДИМИР
+ВЛАДИСАВЉЕВ ЖИВАН
+ВЛАДИСАВЉЕВ МИЛОРАД
+ВЛАДИСАВЉЕВ ПЕРА
+ВЛАДИСАВЉЕВ ТОМА
+ВЛАДИСАВЉЕВИЋ ЂОРЂЕ
+ВЛАДИСАВЉЕВИЋ ЂУРА
+ВЛАДИСАВЉЕВИЋ ДЕСИМИР
+ВЛАДИСАВЉЕВИЋ ДРАГИЦА
+ВЛАДИСАВЉЕВИЋ ЕРЖЕБЕТ
+ВЛАДИСАВЉЕВИЋ ЈЕЛЕНА
+ВЛАДИСАВЉЕВИЋ МИЛОСАВА
+ВЛАДИСАВЉЕВИЋ МИРОСЛАВ
+ВЛАДИСАВЉЕВИЋ ОБРАД
+ВЛАДИСАВЉЕВИЋ-ПЕШКАНОВ МИРЈАНА
+ВЛАДИСАВЉЕВИЋ ПРЕДРАГ
+ВЛАДИСАВЉЕВИЋ ВОЈИСЛАВ
+ВЛАДОВИЋ ЈОВАН
+ВЛАДОВИЋ ЈОВАН
+ВЛАДОВИЋ РАДОЈКА
+ВЛАДУША НИКОЛА
+ВЛАДУШИЋ ИВАН
+ВЛАДУШИЋ МИЛАН
+ВЛАДУЛОВ ЖИВОЈИН
+ВЛАДУЛОВИЋ-ПОПОВ МАРИЈА ДР ЛЕКАР
+ВЛАДУЛОВИЋ ТИХОМИР
+ВЛАХ ДАНИЦА
+ВЛАХ ИВАН
+ВЛАХ ПАВЛЕ
+ВЛАХ РАДОВАН
+ВЛАХЕК СТАНКО
+ВЛАХИНИЋ МИЛОШ
+ВЛАХО КРУНОСЛАВ
+ВЛАХОВИЋ ЂОРЂЕ
+ВЛАХОВИЋ БОЈАНА
+ВЛАХОВИЋ БРАНИСЛАВ
+ВЛАХОВИЋ БРАНКА
+ВЛАХОВИЋ БРАНКА
+ВЛАХОВИЋ ДАНИЈЕЛА
+ВЛАХОВИЋ ДРАГОЉУБ
+ВЛАХОВИЋ ДРАГО
+ВЛАХОВИЋ ДУШАН
+ВЛАХОВИЋ ЈЕЛИЦА
+ВЛАХОВИЋ ЉУБИЦА
+ВЛАХОВИЋ ЉУБИНКА
+ВЛАХОВИЋ МАРИЈА
+ВЛАХОВИЋ МИЛАН ДИПЛ ИНГ
+ВЛАХОВИЋ МИЛЕНКО
+ВЛАХОВИЋ МИЛИЦА
+ВЛАХОВИЋ МИРКО ДР ИНГ
+ВЛАХОВИЋ МИРОСЛАВА
+ВЛАХОВИЋ МОМЧИЛО
+ВЛАХОВИЋ ПАВЛЕ
+ВЛАХОВИЋ РАДОШ
+ВЛАХОВИЋ РАДОМИР
+ВЛАХОВИЋ РАДОЊА
+ВЛАХОВИЋ САВА ДР
+ВЛАХОВИЋ СЕНКА
+ВЛАХОВИЋ СЛОБОДАН
+ВЛАХОВИЋ СТЕВАН
+ВЛАХОВИЋ СТРАХИЊА
+ВЛАХОВИЋ ТЕОДОРА
+ВЛАХОВИЋ ВИТОМИРКА
+ВЛАХОВИЋ ВЛАДА
+ВЛАХОВИЋ ВЛАДИМИР
+ВЛАХУШИЋ МИРКО
+ВЛАХУШИЋ ОЛГИЦА
+ВЛАИСАВЉЕВИЋ ЖИВКО
+ВЛАИСАВЉЕВИЋ ЂУЈО
+ВЛАИСАВЉЕВИЋ АНГЕЛИНА
+ВЛАИСАВЉЕВИЋ ДАНИЛО
+ВЛАИСАВЉЕВИЋ ДАРА
+ВЛАИСАВЉЕВИЋ ДМИТАР
+ВЛАИСАВЉЕВИЋ ДУШАН
+ВЛАИСАВЉЕВИЋ МАКСИМ
+ВЛАИСАВЉЕВИЋ МИЛАН
+ВЛАИСАВЉЕВИЋ МИЛАН
+ВЛАИСАВЉЕВИЋ МИЛИЈАНА
+ВЛАИСАВЉЕВИЋ МИЛОШ
+ВЛАИСАВЉЕВИЋ МОМЧИЛО
+ВЛАИСАВЉЕВИЋ НИКОЛА
+ВЛАИСАВЉЕВИЋ НИКОЛА
+ВЛАИСАВЉЕВИЋ НИКОЛА
+ВЛАИСАВЉЕВИЋ РАДМИЛА
+ВЛАИСАВЉЕВИЋ САВО
+ВЛАИСАВЉЕВИЋ СЛОБОДАН
+ВЛАИСАВЉЕВИЋ СОФИЈА
+ВЛАИСАВЉЕВИЋ СТОЈА
+ВЛАИСАВЉЕВИЋ ТРИВУНА
+ВЛАИСАВЉЕВИЋ ВАСО
+ВЛАЈАНКОВ ЛАЗАР
+ВЛАЈАНКОВ НАТАЛИЈА
+ВЛАЈАНКОВ СЛОБОДАН
+ВЛАЈАНКОВ-ВУЛИЋ ВЕРА
+ВЛАЈИЋ ДРАГАН
+ВЛАЈИЋ ДРАГОСЛАВА
+ВЛАЈИЋ ДУШАНКА
+ВЛАЈИЋ ДУШИЦА
+ВЛАЈИЋ ЈОВАН
+ВЛАЈИЋ МАРИЈА
+ВЛАЈИЋ МИЛОШ
+ВЛАЈИЋ ВАЛЕРИЈА
+ВЛАЈКОВ БОСИЉКА
+ВЛАЈКОВ БРАНИСЛАВ
+ВЛАЈКОВ БРАНКО
+ВЛАЈКОВ-ИВАНОВИЋ СНЕЖАНА
+ВЛАЈКОВ ЛАЗАР
+ВЛАЈКОВ ЛАЗА
+ВЛАЈКОВ МАЦА
+ВЛАЈКОВ МИОДРАГ
+ВЛАЈКОВ МИРКО
+ВЛАЈКОВ МЛАДЕН
+ВЛАЈКОВ НИКОЛА
+ВЛАЈКОВ ПАВЛЕ
+ВЛАЈКОВ ПЕТАР
+ВЛАЈКОВ ЗОРИЦА
+ВЛАЈКОВИЋ АНТОНИЈА
+ВЛАЈКОВИЋ БОГДАН
+ВЛАЈКОВИЋ МИЛУТИН
+ВЛАЈКОВИЋ МИОДРАГ
+ВЛАЈКОВИЋ НЕМАЊА
+ВЛАЈНИЋ ЧЕДОМИР
+ВЛАЈНИЋ ГОРАН
+ВЛАЈНИЋ МИРЈАНА
+ВЛАЈНИЋ ЗОРА
+ВЛАЈОВАНОВ СЛОБОДАН
+ВЛАЛУКИН ДРАГОСЛАВ
+ВЛАЛУКИН ИЛОНА
+ВЛАЛУКИН ИЛОНКА
+ВЛАЛУКИН МИЛОРАД ДИПЛ ИНГ
+ВЛАЛУКИН МИРЈАНА
+ВЛАЛУКИН НАДА
+ВЛАЛУКИН САВА
+ВЛАЛУКИН СЛАВКО
+ВЛАЛУКИН ЗОРА
+ВЛАОВ-ЖАРКОВ ОЛГА
+ВЛАОВ ГОРДАНА
+ВЛАОВ ЈАВОРКА
+ВЛАОВ МИЛОШ
+ВЛАОВ МИРОСЛАВ
+ВЛАОВ ВЕЛИМИР
+ВЛАОВИЋ ЂОРЂЕ
+ВЛАОВИЋ ЂОРЂЕ
+ВЛАОВИЋ ЂОРЂЕ
+ВЛАОВИЋ ЂОРЂЕ
+ВЛАОВИЋ АЛЕКСАНДАР
+ВЛАОВИЋ АНИЦА
+ВЛАОВИЋ БОШКО
+ВЛАОВИЋ БРАНИСЛАВА
+ВЛАОВИЋ ДИМИТРИЈЕ
+ВЛАОВИЋ ДРАГАН
+ВЛАОВИЋ ДРАГАН
+ВЛАОВИЋ ДРАГОЉУБ
+ВЛАОВИЋ ДУШАН
+ВЛАОВИЋ ДУШКО
+ВЛАОВИЋ ГАВРА
+ВЛАОВИЋ ХАРИ
+ВЛАОВИЋ ИГЊАТ
+ВЛАОВИЋ ИВАНКА
+ВЛАОВИЋ ЈЕЛА
+ВЛАОВИЋ ЈОВАН
+ВЛАОВИЋ ЈОВАН
+ВЛАОВИЋ КАТИЦА
+ВЛАОВИЋ ЛАЗАР
+ВЛАОВИЋ ЉУБИША
+ВЛАОВИЋ ЉУБИЦА
+ВЛАОВИЋ ЉУБОМИР
+ВЛАОВИЋ ЉУБОМИР
+ВЛАОВИЋ ЛУКА
+ВЛАОВИЋ МАРА
+ВЛАОВИЋ МАРКО
+ВЛАОВИЋ МИЛОШ
+ВЛАОВИЋ МИЛОШ
+ВЛАОВИЋ МИЛОСАВ
+ВЛАОВИЋ МИРОСЛАВ
+ВЛАОВИЋ МЛАДЕН
+ВЛАОВИЋ НИКОЛА
+ВЛАОВИЋ НИКОЛА
+ВЛАОВИЋ ОЛИВЕРА
+ВЛАОВИЋ ПЛЕМЕНКА
+ВЛАОВИЋ РАДИВОЈ
+ВЛАОВИЋ РАЈКО
+ВЛАОВИЋ САВА
+ВЛАОВИЋ СЛАВКО
+ВЛАОВИЋ СТАНОЈЕ
+ВЛАОВИЋ СТЕВАН
+ВЛАОВИЋ СТЕВАН
+ВЛАОВИЋ СВЕТОЗАР
+ВЛАОВИЋ ТОША
+ВЛАОВИЋ ТОДОР
+ВЛАОВИЋ ТОМА
+ВЛАОВИЋ ТОМИСЛАВ
+ВЛАОВИЋ ВЕСНА
+ВЛАОВИЋ ВЛАСТИСЛАВА
+ВЛАОВИЋ ЗОРАН
+ВЛАСАЧЕВИЋ СТОЈКО
+ВЛАСАК РЕНАТА
+ВЛАСОВ МИХАЈЛО
+ВЛАСТЕЛИЋ РОКСАНДА
+ВЛАТКОВИЋ ЖЕЉКО
+ВЛАТКОВИЋ АНГЕЛО
+ВЛАТКОВИЋ ДУШАН
+ВЛАТКОВИЋ КРЕШИМИР
+ВЛАТКОВИЋ МАРИЈА
+ВЛАТКОВИЋ МАРИЈА
+ВЛАТКОВИЋ МИЛАН
+ВЛАТКОВИЋ МИЛИЦА
+ВЛАТКОВИЋ МИРОСЛАВ
+ВЛАТКОВИЋ МЛАДЕН
+ВЛАТКОВИЋ НИКОЛА
+ВЛАТКОВИЋ САВКА
+ВЛАТКОВИЋ СВЕТОЗАР
+ВОШТИЋ АЛЕКСАНДАР
+ВОШТИЋ МИОДРАГ
+ВОДА ЗДЕНКО
+ВОДАЛОВ ДЕЈАН
+ВОДАЛОВ МЛАДЕН
+ВОДЕНИЧАР НИКОЛА
+ВОДОГАЗ ДРАГАН
+ВОДОГАЗ ЛЕПОСАВА
+ВОДОПИВЕЦ ЖЕЉКО
+ВОДОПИВЕЦ ДРАГИЦА
+ВОДОПИВЕЦ МИХАЕЛ
+ВОГАЊАЦ МИЛЕНКО
+ВОГЛЕШ ЛИДИЈА
+ВОИН АЛЕКСАНДАР ДР ЛЕКАР
+ВОЈЧЕВСКИ АЛЕКСАНДАР
+ВОЈЧИЋ ЈОВАН
+ВОЈАШЋУК МАРА
+ВОЈИЧИЋ ЈЕЛЕНА
+ВОЈИЧИЋ РАЈКО
+ВОЈИЧИЋ САВА
+ВОЈИЧИЋ ВЛАДИМИР
+ВОЈИМИРОВИЋ СЛАВКО
+ВОЈИН МИЛКА
+ВОЈИНОВ ЂОРЂЕ
+ВОЈИНОВ МИРА
+ВОЈИНОВ РАДОСЛАВ
+ВОЈИНОВИЋ АЛЕКСАНДРА
+ВОЈИНОВИЋ БОГИЋ
+ВОЈИНОВИЋ ДРАГАН
+ВОЈИНОВИЋ ДРАГОЉУБ
+ВОЈИНОВИЋ ДРАГОСЛАВ
+ВОЈИНОВИЋ ЈЕЛЕНА
+ВОЈИНОВИЋ ЈОВАН ДР
+ВОЈИНОВИЋ ЉИЉАНА
+ВОЈИНОВИЋ ЉУБОМИР
+ВОЈИНОВИЋ МИЛИВОЈЕ
+ВОЈИНОВИЋ МИЛОРАД
+ВОЈИНОВИЋ МИРЈАНА ДР
+ВОЈИНОВИЋ МИРОСЛАВ
+ВОЈИНОВИЋ МИРОСЛАВ
+ВОЈИНОВИЋ МИРОСЛАВ
+ВОЈИНОВИЋ НЕБОЈША
+ВОЈИНОВИЋ ВЕСЕЛИН
+ВОЈИНОВИЋ ВУЈИЦА
+ВОЈИНОВИЋ ВУКОСАВА
+ВОЈИНОВИЋ ЗОРКА
+ВОЈИСАВЉЕВИЋ ЗЛАТИЈА
+ВОЈКИЋ БОШКО
+ВОЈКИЋ РАДИСЛАВ
+ВОЈНИЋ ФРАЊА
+ВОЈНИЋ-ХАЈДУК ГИЗА
+ВОЈНИЋ-ХАЈДУК ЉИЉАНА
+ВОЈНИЋ-ХАЈДУК МИРЈАНА
+ВОЈНИЋ ЈОВАН
+ВОЈНИЋ-КОРТУИШ СТАНА
+ВОЈНИЋ СТЕВАН
+ВОЈНОВ БРАНИСЛАВ
+ВОЈНОВ-ИЛИЋ РОЗАЛИЈА
+ВОЈНОВ СТОЈАН ДР ЛЕКАР
+ВОЈНОВИЋ ЖАРКО
+ВОЈНОВИЋ ЖАРКО
+ВОЈНОВИЋ ЖАРКО
+ВОЈНОВИЋ ЂОРЂЕ
+ВОЈНОВИЋ ЂОРЂЕ
+ВОЈНОВИЋ ЂУРА
+ВОЈНОВИЋ ЂУРО
+ВОЈНОВИЋ АЦА
+ВОЈНОВИЋ АНАСТАЗИЈА
+ВОЈНОВИЋ БРАЦА
+ВОЈНОВИЋ БРАНКО
+ВОЈНОВИЋ БРАНКО
+ВОЈНОВИЋ БРАНКО
+ВОЈНОВИЋ ДАНИЦА
+ВОЈНОВИЋ ДАВОР
+ВОЈНОВИЋ ДЕСАНКА
+ВОЈНОВИЋ ДЕСАНКА
+ВОЈНОВИЋ ДИМИТРИЈЕ
+ВОЈНОВИЋ ДРАГАН
+ВОЈНОВИЋ ДРАГАН
+ВОЈНОВИЋ ДРАГИЦА
+ВОЈНОВИЋ ДУШАН ДИПЛ ИНГ
+ВОЈНОВИЋ ДУШАН
+ВОЈНОВИЋ ДУШАН
+ВОЈНОВИЋ ДУШАН
+ВОЈНОВИЋ ДУШАН
+ВОЈНОВИЋ ГИЗЕЛА
+ВОЈНОВИЋ ИЛИЈА
+ВОЈНОВИЋ ИЛИЈА
+ВОЈНОВИЋ ИЛИЈА
+ВОЈНОВИЋ ИЛИЈА
+ВОЈНОВИЋ ИВАНКА
+ВОЈНОВИЋ ИВАН
+ВОЈНОВИЋ ЈОВАН
+ВОЈНОВИЋ ЈОВАН
+ВОЈНОВИЋ КАТАРИНА
+ВОЈНОВИЋ КАТИЦА
+ВОЈНОВИЋ КЛАРА
+ВОЈНОВИЋ ЉУБИША
+ВОЈНОВИЋ ЉУБИНКА
+ВОЈНОВИЋ МАРА
+ВОЈНОВИЋ МАРКО
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛАН
+ВОЈНОВИЋ МИЛЕНКО
+ВОЈНОВИЋ МИЛЕНКО
+ВОЈНОВИЋ МИЛИЦА
+ВОЈНОВИЋ МИЛИНА
+ВОЈНОВИЋ МИЉАН
+ВОЈНОВИЋ МИЛКА
+ВОЈНОВИЋ МИЛОШ
+ВОЈНОВИЋ МИЛУТИН
+ВОЈНОВИЋ МИОДРАГ
+ВОЈНОВИЋ МИРЈАНА
+ВОЈНОВИЋ МИРКО
+ВОЈНОВИЋ МИРОСЛАВ
+ВОЈНОВИЋ МЛАДЕН ДИПЛ ОЕЦ
+ВОЈНОВИЋ НАДА
+ВОЈНОВИЋ НАДА
+ВОЈНОВИЋ НАДЕЖДА
+ВОЈНОВИЋ НАТАША
+ВОЈНОВИЋ НАТАША
+ВОЈНОВИЋ НИКОЛА ДР
+ВОЈНОВИЋ НИКОЛА
+ВОЈНОВИЋ НИКОЛА
+ВОЈНОВИЋ ПЕТАР
+ВОЈНОВИЋ ПЕТАР
+ВОЈНОВИЋ ПЕТАР
+ВОЈНОВИЋ РАДА
+ВОЈНОВИЋ РАДЕ
+ВОЈНОВИЋ РАДЕ
+ВОЈНОВИЋ РАДЕ
+ВОЈНОВИЋ РАДИВОЈ
+ВОЈНОВИЋ-РАДУЈКОВ НАДА
+ВОЈНОВИЋ РАЈКО
+ВОЈНОВИЋ РУЖИЦА
+ВОЈНОВИЋ СЛАВКО
+ВОЈНОВИЋ СЛАВКО
+ВОЈНОВИЋ СПАСЕНИЈА
+ВОЈНОВИЋ СТАМЕНКА
+ВОЈНОВИЋ СТАНИСЛАВ
+ВОЈНОВИЋ СТЕВАН
+ВОЈНОВИЋ СТЕВАН
+ВОЈНОВИЋ СТЕВАН
+ВОЈНОВИЋ СТЕВА
+ВОЈНОВИЋ СТЕВО
+ВОЈНОВИЋ СТОЈКА
+ВОЈНОВИЋ СТРАХИЊА
+ВОЈНОВИЋ ТОМИСЛАВ
+ВОЈНОВИЋ ВЕСЕЛИН
+ВОЈНОВИЋ ВЕСЕЛИН
+ВОЈНОВИЋ ВЛАДИМИР
+ВОЈНОВИЋ ВЛАДИМИР
+ВОЈНОВИЋ ВЛАДИМИР
+ВОЈНОВИЋ ВЛАДИМИР
+ВОЈНОВИЋ ВОЈИСЛАВ
+ВОЈНОВИЋ ВОЈИСЛАВ
+ВОЈНОВИЋ ЗДРАВКО
+ВОЈТ ЉУБИЦА
+ВОЈТ МИЛАНА
+ВОЈТАС СТАНИСЛАВ
+ВОЈТЕХОВСКИ ЈАРОСЛАВ
+ВОЈТЕХОВСКИ ОТО
+ВОЈТЕХОВСКИ ОТО
+ВОЈТЕХОВСКИ ЗАГОРКА
+ВОЈВОДИЋ ЂУРА
+ВОЈВОДИЋ АЛЕКСАНДАР
+ВОЈВОДИЋ АНА
+ВОЈВОДИЋ БРАНИСЛАВ
+ВОЈВОДИЋ ДАНИЦА
+ВОЈВОДИЋ ДРАГОЉУБ
+ВОЈВОДИЋ ДУШАН
+ВОЈВОДИЋ ГРАДИМИР
+ВОЈВОДИЋ ЈОВАН
+ВОЈВОДИЋ МАНИША
+ВОЈВОДИЋ МИЛАН
+ВОЈВОДИЋ МИЛЕ
+ВОЈВОДИЋ МИЛОШ
+ВОЈВОДИЋ МИЛОРАД
+ВОЈВОДИЋ МИРКО
+ВОЈВОДИЋ НАДА
+ВОЈВОДИЋ НИКОЛА
+ВОЈВОДИЋ РАДОВАН
+ВОЈВОДИЋ РАТКА
+ВОЈВОДИЋ СЛАВКО
+ВОЈВОДИЋ СТЕВАН
+ВОЈВОДИЋ СТЕВАН
+ВОЈВОДИЋ-ТАСИЋ СВЕТЛАНА
+ВОЈВОДИЋ ВАСО
+ВОЈВОДИЋ ВОЈИСЛАВ
+ВОЈВОДИЋ ЗОРА
+ВОКШИ ЂЕВАД
+ВОКАЛИЋ ХИЛДЕГАРД
+ВОКАЛИЋ ТЕОБАЛД
+ВОКИЋ ДРАГАН
+ВОКИЋ ДУШКО
+ВОКИЋ ЈОВАН
+ВОКИЋ НАДА
+ВОЛЧЕВИЋ БОРИСЛАВ
+ВОЛЧЕВИЋ ЕВА
+ВОЛЧЕВИЋ ТОДОР
+ВОЛЧЕВСКИ ЕВАНТИЈЕ
+ВОЛЧЕВСКИ НИКОЛА
+ВОЛАШ ИСИДОР
+ВОЛАШ МИЛАНКО
+ВОЛАШ МИЛАН
+ВОЛАР АНДРАШ
+ВОЛАР КАРЛО
+ВОЛАР ПЕТАР
+ВОЛАР СТЈЕПАН
+ВОЛАРЕВ ЉУБОМИР
+ВОЛАРЕВ НАДА
+ВОЛАРЕВ СТЕВАН
+ВОЛАРЕВИЋ МАРКО
+ВОЛАРЕВИЋ ЗОРАН
+ВОЛАРОВ МИЛАН
+ВОЛАРОВ РАДОВАН
+ВОЛЕНЦ МАРИЈА
+ВОЛФ БОРИС
+ВОЛФ ДРАГУТИН
+ВОЛФ ИШТВАН
+ВОЛФ ЉУБИЦА
+ВОЛФ ЉУДЕВИТ
+ВОЛФ МИРА
+ВОЛФ МИРА
+ВОЛФ ВЕРА
+ВОЛИЧ ВЛАДИМИР
+ВОЛИЋ АЛЕКСАНДАР
+ВОЛИЋ БОЖИДАР
+ВОЛИЋ ДРАГОСЛАВ
+ВОЛИЋ ГРУЈА
+ВОЛИЋ ЉИЉАНА
+ВОЛИЋ МАРИНКА
+ВОЛИЋ ПЕТАР
+ВОЛИЋ РАДОСЛАВ
+ВОЛИЋ СЛАВКО
+ВОЛИЋ ТИХОМИР
+ВОЛИЋ ВИНКА
+ВОЛКАР ЕМИЛ
+ВОЛКОВ РАДОСЛАВ
+ВОЛОШКИН БРАТИСЛАВ
+ВОЛОШКИН ДРАГИЦА
+ВОНИЋ ВЛАТКО
+ВОРАЧЕК ЖЕЉКО
+ВОРАЧЕК ЛАДИСЛАВ
+ВОРАТОВИЋ РАДИВОЈ
+ВОРГИЋ ЂОРЂЕ
+ВОРГИЋ АЛЕКСАНДАР
+ВОРГИЋ АНЂЕЛКА
+ВОРГИЋ БОРИВОЈ
+ВОРГИЋ ДРАГАН
+ВОРГИЋ ЕМИЛ
+ВОРГИЋ ГАВРА
+ВОРГИЋ ЈОСИП
+ВОРГИЋ ЛАЗАР
+ВОРГИЋ МАРА
+ВОРГИЋ МИЛАДИНКА
+ВОРГИЋ НИКОЛА ДР
+ВОРГИЋ СЛОБОДАН
+ВОРГИЋ СТЕВАН
+ВОРГИЋ СТЕВАН
+ВОРГИЋ ВУЈИЦА
+ВОРГИЋ ЗДРАВКО
+ВОРГИЋ ЗОРА
+ВОРГИНЦ ЦВЕТА
+ВОРГУЧИЋ МИЛОШ
+ВОРГУЧИЋ САША
+ВОРГУЧИН ИВАН
+ВОРКАПА НИКОЛА
+ВОРКАПИЋ ДУШАН
+ВОРКАПИЋ ЉУБИЦА
+ВОРКАПИЋ МИЛАН
+ВОРКАПИЋ НИКОЛА
+ВОРЛИЧЕК ЈАНОШ
+ВОРЛИЧЕК ЈАНОШ
+ВОРЛИЧЕК МАРИЦА
+ВОРОБЈЕВ ПЕТАР
+ВОРОБЈЕВ САВА
+ВОРОТОВИЋ СТАНА
+ВОРТИЋ БОСИЉКА
+ВОЗАР АНА
+ВОЗАР ДАНИЦА
+ВОЗАР ДРАГАН
+ВОЗАР МИЛОШ
+ВОЗАР ПАВЛЕ ДИПЛ ИНГ
+ВОЗАРЕВИЋ ЂОРЂЕ
+ВОЗАРЕВИЋ ЕЛИЗАБЕТА
+ВОЗАРЕВИЋ ЈЕЛИЦА
+ВОЗАРЕВИЋ МИРКО
+ВОЗАРОВИЋ ВИДА
+ВРЧИНАЦ ПЕТАР
+ВРШКА ЂОРЂЕ
+ВРШКА ДАНИЈЕЛ
+ВРШКА КАТАРИНА
+ВРАЧАР БРАНИСЛАВ
+ВРАЧАР ДАРИНКА
+ВРАЧАР ЈОВАН
+ВРАЧАР ЉУБОМИР
+ВРАЧАР ЉУБО
+ВРАЧАР МИЛАН
+ВРАЧАР МИОЉКА
+ВРАЧАР НЕДЕЉКО
+ВРАЧАР СЛАВКА
+ВРАЧАР СЛОБОДАН
+ВРАЧАР ВЕРА
+ВРАЧАР ВУК
+ВРАЧАР ЗДЕНКА
+ВРАЧАРИЧИЋ РАДЕ
+ВРАЧАРИЋ ЂОРЂЕ
+ВРАЧАРИЋ АЛЕКСАНДАР
+ВРАЧАРИЋ ДИМИТРИЈЕ
+ВРАЧАРИЋ ЈЕЛИЦА
+ВРАЧАРИЋ ЉИЉАНА
+ВРАЧАРИЋ ЉУБИША
+ВРАЧАРИЋ ЉУБОМИР
+ВРАЧАРИЋ МАРИЈА
+ВРАЧАРИЋ МИЛЕНКО
+ВРАЧАРИЋ МИЛИСАВ
+ВРАЧАРИЋ МИЛОМИР
+ВРАЧАРИЋ ВЛАДИМИР
+ВРАЧЕВИЋ САВКА
+ВРАШТАНОВИЋ ЉУБИНКА
+ВРАБЛИК ЈУЛИЈАНА
+ВРАГОВИЋ ЈОЦА
+ВРАНА НАДА
+ВРАНАЦ КСЕНИЈА
+ВРАНАЦ СЕАД
+ВРАНАЦ ВАХИДА
+ВРАНАЦ ЗИЈАД
+ВРАНЕШ ЧЕДОМИР
+ВРАНЕШ БОЖИДАР
+ВРАНЕШ ДАВОРИН
+ВРАНЕШ ЕМИЛИЈА
+ВРАНЕШ ЈОВАНКА
+ВРАНЕШ МАРИЈА
+ВРАНЕШ МИЛАН
+ВРАНЕШ МИЛКА
+ВРАНЕШ МИЛУТИН
+ВРАНЕШ НАДА
+ВРАНЕШ НИКОЛА
+ВРАНЕШ ПЕТАР
+ВРАНЕШ СМИЉА
+ВРАНЕШ ВЕРИЦА
+ВРАНЕШЕВИЋ АДАМ
+ВРАНЕШЕВИЋ БРАНИСЛАВ ДР
+ВРАНЕШЕВИЋ ДАМЈАН
+ВРАНЕШЕВИЋ КАТИЦА
+ВРАНЕШЕВИЋ МИЛАН
+ВРАНЕШЕВИЋ МИЛАН
+ВРАНЕШЕВИЋ МИЛОШ
+ВРАНЕШЕВИЋ МИРОСЛАВ
+ВРАНЕШЕВИЋ МЛАДЕН
+ВРАНЕШЕВИЋ НАДА ДР
+ВРАНЕШЕВИЋ ПРЕДРАГ
+ВРАНЕШЕВИЋ РАЈКО
+ВРАНЕШЕВИЋ СТЕВАН
+ВРАНЕШЕВИЋ СТОЈАН
+ВРАНИЋ ЧЕДОМИР
+ВРАНИЋ БРАНКО
+ВРАНИЋ ДОБРИНА
+ВРАНИЋ ДРАГИЊА
+ВРАНИЋ ДРАГОСЛАВ
+ВРАНИЋ ИЛИЈА
+ВРАНИЋ ЈАДРАНКА
+ВРАНИЋ МАРКО
+ВРАНИЋ МИЛАН ПРОФЕСОР
+ВРАНИЋ МИЛОРАД
+ВРАНИЋ МИЛУТИН
+ВРАНИЋ МИРЧЕТА
+ВРАНИЋ МИРКО
+ВРАНИЋ МИТРА
+ВРАНИЋ НЕНАД
+ВРАНИЋ НИКОЛА
+ВРАНИЋ РАДИВОЈЕ
+ВРАНИЋ РАДОЈКА
+ВРАНИЋ СЛАВКО
+ВРАНИЋ СЛОБОДАН
+ВРАЊЕШ ГОЈКО
+ВРАЊЕШ ЈОВАНКА
+ВРАЊЕШ МИЛЕНКО
+ВРАЊЕШ МИЛЕНКО
+ВРАЊЕШ МИЛЕ
+ВРАЊЕШ МИЛКА
+ВРАЊЕШ НЕНАД
+ВРАЊЕШ РАДОМИР
+ВРАЊЕШ СОФИЈА
+ВРАЊЕШ СВЕТИСЛАВ
+ВРАЊЕШ СВЕТЛАНА
+ВРАЊЕШЕВИЋ БРАНКО
+ВРАЊЕШЕВИЋ ДИНКА
+ВРАЊЕШЕВИЋ ДРАГАН
+ВРАЊЕШЕВИЋ ЈОВИЦА
+ВРАЊЕШЕВИЋ МОМИР
+ВРАЊЕШЕВИЋ РАТОМИР
+ВРАЊЕШЕВИЋ ВЕЉКО
+ВРАЊЕВАЦ ДРАГАН
+ВРАЊЕВАЦ МИЛИВОЈЕ
+ВРАЊКОВИЋ МИЛАН
+ВРАЊКОВИЋ МИЛЕ
+ВРАЊКОВИЋ СМИЉКА
+ВРАЊКОВИЋ СРЕТО
+ВРАЊО ФРАЊА
+ВРАЊО ЗОЛТАН
+ВРАНКОВИЋ ЈУРАЈ
+ВРАНКОВИЋ ЛУКА
+ВРАНКОВИЋ МИЛАН
+ВРАПЧЕВ ЖИВКО
+ВРАПЧЕВ ДУШКО
+ВРАПЧЕВ МЕЛАНИЈА
+ВРАТЊАН БРАНИМИР
+ВРАТОЊИЋ СЛАВОЉУБ
+ВРБАШКИ ЖАРКО
+ВРБАШКИ ЖАРКО
+ВРБАШКИ ЂОРЂЕ
+ВРБАШКИ ЂОРЂЕ
+ВРБАШКИ ЂУРА
+ВРБАШКИ АЛЕКСАНДАР
+ВРБАШКИ АНИЦА
+ВРБАШКИ БРАНИСЛАВА
+ВРБАШКИ ДАРИНКА
+ВРБАШКИ ДРАГОМИР
+ВРБАШКИ ДРАГОСЛАВ
+ВРБАШКИ ДУШАН
+ВРБАШКИ ДУШАН
+ВРБАШКИ ДУШАН
+ВРБАШКИ ДУШИЦА
+ВРБАШКИ ГОРДАНА
+ВРБАШКИ ЈЕЛЕНА
+ВРБАШКИ ЈЕЛИСАВЕТА
+ВРБАШКИ ЈОВАН
+ВРБАШКИ ЈУЛИЈАНА
+ВРБАШКИ КОСТА
+ВРБАШКИ ЛАЗАР
+ВРБАШКИ ЉИЉАНА
+ВРБАШКИ ЉУБИЦА МР
+ВРБАШКИ ЉУБОМИР
+ВРБАШКИ МИЛАН
+ВРБАШКИ МИЛАН
+ВРБАШКИ МИЛЕНА
+ВРБАШКИ МИЛЕНКО
+ВРБАШКИ МИЛИЦА
+ВРБАШКИ МИЛОРАД
+ВРБАШКИ МИОДРАГ
+ВРБАШКИ МИРОСЛАВ
+ВРБАШКИ МИРОСЛАВ
+ВРБАШКИ ПАВЛЕ
+ВРБАШКИ ПЕТАР ДИПЛ ИНГ
+ВРБАШКИ ПЕТАР
+ВРБАШКИ ПЕТАР
+ВРБАШКИ РАДА
+ВРБАШКИ РАДЕНКО
+ВРБАШКИ САВА
+ВРБАШКИ СЛОБОДАН
+ВРБАШКИ СТЕВАН ДР
+ВРБАШКИ СВЕТЛАНА
+ВРБАШКИ ТАЊА
+ВРБАШКИ ТИМА
+ВРБАШКИ ТОДОР
+ВРБАШКИ ВЛАДИСЛАВ
+ВРБАЈАЦ ЂОРЂЕ
+ВРБАЈАЦ ЦВЕЋЕ
+ВРБАЈАЦ ЈОВАН
+ВРБАЈАЦ ВАЛЕРИЈА
+ВРБАНАЦ ЛАЈОШ
+ВРБИЦА ДРАГОЉУБ
+ВРБИЦА КСЕНИЈА
+ВРБИЦА ПЕТАР
+ВРБЉАНАЦ АЛЕН
+ВРЦАН ВАЛЕРИЈА
+ВРЦЕЉ ЖИВКО
+ВРЦЕЉ БОЖИДАР
+ВРЦЕЉ ЉИЉАНА
+ВРЦЕЉ МИХАЈЛО
+ВРЦЕЉ ЗОРАН
+ВРДОЉАК БРАНИМИР
+ВРДОЉАК РАДОВАНКА
+ВРЕШЋАК ИШТВАН
+ВРЕЋА БРАНКО
+ВРЕЋО ВЕЛИМИР
+ВРЕБАЦ ЗВОНИМИР
+ВРЕБАЛОВ АЛЕКСАНДРА
+ВРЕБАЛОВ СТЕВАН
+ВРЕБАЛОВ ТИХОМИР
+ВРЕВЕЗОСКИ РИСТО
+ВРЕВИЧИЋ ЂОРЂЕ
+ВРЕВИЧИЋ СИМА
+ВРЕВИЧИЋ ТРИВУН
+ВРГОВ КОСТА
+ВРГОВИЋ ДРАГАН
+ВРГОВИЋ СТЕВАН
+ВРГОВИЋ ВЕРА
+ВРГОВИЋ ВЛАДИМИР
+ВРХОВАЦ БРАНИСЛАВ
+ВРХОВАЦ ДАНЕ
+ВРХОВАЦ ЈАСМИНА
+ВРХОВАЦ НЕДЕЉКО
+ВРХОВАЦ СЛАВКО ДИПЛ ИНГ
+ВРХОВАЦ ТОМИСЛАВ
+ВРКЕШ ГОРАН
+ВРМИЋ МЛАДЕН
+ВРНЧИЋ ЂОРЂЕ
+ВРСАЈКОВ ИЛИЈА
+ВРСАЈКОВ ИСИДОР
+ВРСАЈКОВ ЈУЛКА
+ВРСАЈКОВ ЉУБИЦА
+ВРСАЈКОВ МИЛОШ
+ВРСАЈКОВ НЕВЕНКА
+ВРСЕЉА ВИНКО
+ВРТИКАПА ЈОВАНКА
+ВРТИПРАШКИ ПЕТАР
+ВРТИПРАШКИ РАДОВАН ДР
+ВРТИПРАШКИ РАДОВАН
+ВРТИПРАШКИ ВАСА
+ВРТОВШНИК МИХАЈЛО
+ВРТУЛЕК СМИЉА
+ВРТУНИЋ БОРИСЛАВ
+ВРТУНИЋ МАРКО
+ВРТУНИЋ НИКОЛА
+ВРТУНСКИ ДАНИЦА
+ВРТУНСКИ ХЕДВИГА
+ВРТУНСКИ ЈУЛКА
+ВРТУНСКИ КАТАРИНА
+ВРТУНСКИ МИЛАН
+ВРТУНСКИ МИЛИЦА
+ВРТУНСКИ МИОДРАГ
+ВРТУНСКИ МЛАДЕН
+ВРТУНСКИ СРЂАН
+ВРТУНСКИ ВЛАДИМИР
+ВРУЋИНИЋ РАДОЈИЦА
+ВРУЋИНИЋ РАЈКО
+ВРЗИЋ БОРИСЛАВ
+ВРЗИЋ ДРАГИЦА
+ВРЗИЋ ДРАГИЦА
+ВРЗИЋ НАДЕЖДА
+ВРЗИЋ СТЕВО
+ВУЧАЈ АЛЕКСАНДАР
+ВУЧАЈ ФРАН
+ВУЧАЈ МИОМИРА
+ВУЧАЈ РОБЕРТ
+ВУЧАНОВИЋ ПРЕДРАГ
+ВУЧЕЛИЋ РАДОМИР
+ВУЧЕЛИЋ СЛАВКО
+ВУЧЕЛИЋ ВЕРА
+ВУЧЕЛИЋ ВЛАЈКО
+ВУЧЕН МИЛАНА
+ВУЧЕНИЋ ПРЕДРАГ
+ВУЧЕНОВ ЂУРИЦА
+ВУЧЕНОВ КАТАЛИН
+ВУЧЕНОВ МИРЈАНА
+ВУЧЕНОВ СТЕВАН
+ВУЧЕНОВИЋ ЖИВАН
+ВУЧЕНОВИЋ ЖИВАН
+ВУЧЕНОВИЋ БРАНКА
+ВУЧЕНОВИЋ ДЕСАНКА
+ВУЧЕНОВИЋ ДРАГОЉУБ
+ВУЧЕНОВИЋ ЈОВАН
+ВУЧЕНОВИЋ ЛУКА
+ВУЧЕНОВИЋ МИРКО
+ВУЧЕНОВИЋ ПЕТАР
+ВУЧЕНОВИЋ СРЕТО
+ВУЧЕНОВИЋ СВЕТЛАНА
+ВУЧЕРИЋ ПРВОСЛАВ
+ВУЧЕТИЋ ЖИКА
+ВУЧЕТИЋ ЖИВКО
+ВУЧЕТИЋ АНЂЕЛКА
+ВУЧЕТИЋ БОЖИДАР
+ВУЧЕТИЋ БОЈАНА
+ВУЧЕТИЋ ДАРИНКА
+ВУЧЕТИЋ ДЕСИМИР
+ВУЧЕТИЋ ДЕВА
+ВУЧЕТИЋ ДИМИТРИЈЕ
+ВУЧЕТИЋ ДРАГАН
+ВУЧЕТИЋ ДУШАН
+ВУЧЕТИЋ ЛАЗАР
+ВУЧЕТИЋ ЉИЉАНА
+ВУЧЕТИЋ МИЋА
+ВУЧЕТИЋ МИЛЕНА
+ВУЧЕТИЋ МИЛЕНА
+ВУЧЕТИЋ МИЛЕН
+ВУЧЕТИЋ МИЛОСАВ
+ВУЧЕТИЋ НИКОЛА
+ВУЧЕТИЋ НИКОЛА
+ВУЧЕТИЋ НИНКО
+ВУЧЕТИЋ ПЕТАР
+ВУЧЕТИЋ ПЕТАР
+ВУЧЕТИЋ РАДЕ
+ВУЧЕТИЋ РАДОЈКА
+ВУЧЕТИЋ РАДОЈКО
+ВУЧЕТИЋ РАЈКО
+ВУЧЕТИЋ САЊА
+ВУЧЕТИЋ СЛОБОДАН
+ВУЧЕТИЋ СМИЉКА
+ВУЧЕТИЋ СОФИЈА
+ВУЧЕТИЋ СТАНКО
+ВУЧЕТИЋ СТЕВАН
+ВУЧЕТИЋ СВЕТЛАНА
+ВУЧЕТИЋ ВАЊА
+ВУЧЕТИЋ ВЕЉКО ДР
+ВУЧЕТИЋ ВЕРА
+ВУЧЕТИЋ ВЛАДИСЛАВ
+ВУЧЕТИЋ ЗОРАН
+ВУЧЕТИЋ ЗОРАН
+ВУЧЕТИН ЖИВАН
+ВУЧЕТИН МИЛОРАД
+ВУЧЕТИН ПЕТАР
+ВУЧЕТИН СОФИЈА
+ВУЧЕТИН ТОДОР
+ВУЧЕВАЦ ЖЕЛИМИР
+ВУЧЕВИЋ АЛЕКСАНДАР
+ВУЧЕВИЋ БОЖАНА
+ВУЧЕВИЋ ВАЛЕРИЈА
+ВУЧИЧЕВИЋ МИЛАН
+ВУЧИЧЕВИЋ НИКОЛА
+ВУЧИЋ ЖАРКО
+ВУЧИЋ ЂОРЂЕ
+ВУЧИЋ ЂУРЂИНКА
+ВУЧИЋ БОГДАН
+ВУЧИЋ БРАНИСЛАВА
+ВУЧИЋ ДРАГАН
+ВУЧИЋ ДУШАН
+ВУЧИЋ ДУШАН
+ВУЧИЋ ЈЕЛЕНА
+ВУЧИЋ ЈОВАНКА
+ВУЧИЋ ЈОВАН
+ВУЧИЋ КАТИЦА
+ВУЧИЋ МАРГИТА
+ВУЧИЋ МИЛАН
+ВУЧИЋ МИЛАН
+ВУЧИЋ МИРОСЛАВ
+ВУЧИЋ НЕВЕНКА
+ВУЧИЋ НИКОЛА
+ВУЧИЋ РАДМИЛА
+ВУЧИЋ СЛОБОДАН
+ВУЧИЋ ТОДОР
+ВУЧИЋ ВЕСЕЛИН
+ВУЧИЋЕВИЋ ЂОРЂЕ
+ВУЧИЋЕВИЋ БОЖИДАР
+ВУЧИЋЕВИЋ ДУШАН
+ВУЧИЋЕВИЋ ГОРДАНА
+ВУЧИЋЕВИЋ МИЛАН
+ВУЧИЋЕВИЋ МИЛАН
+ВУЧИЋЕВИЋ МИЛЕНКО
+ВУЧИЋЕВИЋ МИЛИЦА
+ВУЧИЋЕВИЋ МИОДРАГ
+ВУЧИЋЕВИЋ НАДЕЖДА
+ВУЧИЋЕВИЋ ПЕТАР
+ВУЧИЋЕВИЋ СЕЛИМИР
+ВУЧИЋЕВИЋ ВУКОСАВ
+ВУЧИНИЋ АНЂЕЛИЈА
+ВУЧИНИЋ АНДРИЈА
+ВУЧИНИЋ ДУШАН
+ВУЧИНИЋ ГАВРИЛО
+ВУЧИНИЋ ЈАЊА
+ВУЧИНИЋ ЈАСМИНКА
+ВУЧИНИЋ ЉИЉАНА ДР
+ВУЧИНИЋ ЉУБОМИР
+ВУЧИНИЋ МАРИЈА
+ВУЧИНИЋ МИЛАН
+ВУЧИНИЋ МИЛАН
+ВУЧИНИЋ МИЛИСАВ
+ВУЧИНИЋ МИЛУТИН
+ВУЧИНИЋ МИОДРАГ
+ВУЧИНИЋ МЛАДЕН
+ВУЧИНИЋ МЛАДЕН
+ВУЧИНИЋ ПЕТАР
+ВУЧИНИЋ РАДМИЛА
+ВУЧИНИЋ РАДМИЛА
+ВУЧИНИЋ РАДМИЛА
+ВУЧИНИЋ РАЈКО
+ВУЧИНИЋ ВЕСНА
+ВУЧИНИЋ ВЛАДИМИР
+ВУЧИНИЋ ВУКМАН
+ВУЧИНИЋ ЗЛАТИБОР
+ВУЧИНОВИЋ РАДМИЛА
+ВУЧКОВ БОЈАНА
+ВУЧКОВ БРАНИСЛАВ
+ВУЧКОВ МАРЕЛА
+ВУЧКОВ МИЛОВАН
+ВУЧКОВАЦ ДРАГАН
+ВУЧКОВАЦ РАДЕ
+ВУЧКОВАЦ ТОМИСЛАВ
+ВУЧКОВИЋ ЧАСЛАВ
+ВУЧКОВИЋ ЖАРКО
+ВУЧКОВИЋ ЖИВКО
+ВУЧКОВИЋ ЂОРЂЕ
+ВУЧКОВИЋ ЂОРЂЕ
+ВУЧКОВИЋ АНЂЕЛКО
+ВУЧКОВИЋ АНА
+ВУЧКОВИЋ БОГДАН
+ВУЧКОВИЋ БРАНИСЛАВ
+ВУЧКОВИЋ БРАНКО
+ВУЧКОВИЋ БРАНКО
+ВУЧКОВИЋ ДОБРИЛА
+ВУЧКОВИЋ ДРАГАН
+ВУЧКОВИЋ ДРАГО
+ВУЧКОВИЋ ДУШАНКА
+ВУЧКОВИЋ ДУШАН
+ВУЧКОВИЋ ДУШАН
+ВУЧКОВИЋ ДУШАН
+ВУЧКОВИЋ ДУШАН
+ВУЧКОВИЋ ДУБРАВКА
+ВУЧКОВИЋ ЕМИН
+ВУЧКОВИЋ ЕВИЦА
+ВУЧКОВИЋ ГЕОРГИЈЕ
+ВУЧКОВИЋ ЈАНКО
+ВУЧКОВИЋ ЈАНКО
+ВУЧКОВИЋ ЈОВАН
+ВУЧКОВИЋ ЈОВАН
+ВУЧКОВИЋ ЈОВАН
+ВУЧКОВИЋ ЈОВАН
+ВУЧКОВИЋ ЉУБИЦА
+ВУЧКОВИЋ ЛУКА ДИПЛ ОЕЦ
+ВУЧКОВИЋ МАРА
+ВУЧКОВИЋ МАРИЈА
+ВУЧКОВИЋ МАРКО
+ВУЧКОВИЋ МАРКО
+ВУЧКОВИЋ МИХАЈЛО
+ВУЧКОВИЋ МИХАЈЛО
+ВУЧКОВИЋ МИЛАН
+ВУЧКОВИЋ МИЛАН
+ВУЧКОВИЋ МИЛЕНА
+ВУЧКОВИЋ МИЛОШ
+ВУЧКОВИЋ МИЛОШ
+ВУЧКОВИЋ МИЛОШ
+ВУЧКОВИЋ МИЛОЈКА
+ВУЧКОВИЋ МИЛОРАД
+ВУЧКОВИЋ МИОДРАГ
+ВУЧКОВИЋ МИОДРАГ
+ВУЧКОВИЋ МИРКО
+ВУЧКОВИЋ МИРОСЛАВ
+ВУЧКОВИЋ МОМЧИЛО
+ВУЧКОВИЋ НАДА ДР
+ВУЧКОВИЋ НАДА
+ВУЧКОВИЋ НЕДЕЉКО
+ВУЧКОВИЋ НИКОЛА ВЕТЕРИНАР
+ВУЧКОВИЋ НОВИЦА
+ВУЧКОВИЋ ПАУЛИНА
+ВУЧКОВИЋ-ПЕУРАЧА ЉИЉАНА
+ВУЧКОВИЋ РАДИВОЈ
+ВУЧКОВИЋ РАДОВАН
+ВУЧКОВИЋ САВЕТА
+ВУЧКОВИЋ-СИМИЋ ВЕСНА
+ВУЧКОВИЋ СИНИША
+ВУЧКОВИЋ СТЕВАН
+ВУЧКОВИЋ СТОЈАН ДР ЛЕКАР
+ВУЧКОВИЋ СТОЈАН ДР
+ВУЧКОВИЋ СВЕТЛАНА
+ВУЧКОВИЋ ТАЈСИЈА
+ВУЧКОВИЋ ТОМО
+ВУЧКОВИЋ ВАСА
+ВУЧКОВИЋ ВЛАДИСЛАВ
+ВУЧКОВИЋ ВОЈИСЛАВ
+ВУЧКОВИЋ ВУКИЦА
+ВУЧКОВИЋ ВУКОСАВА
+ВУЧУРЕВИЋ ЧЕДО
+ВУЧУРЕВИЋ ЂОРЂЕ
+ВУЧУРЕВИЋ АНЂЕЛИЈА
+ВУЧУРЕВИЋ БИЉАНА
+ВУЧУРЕВИЋ БЛАЖО
+ВУЧУРЕВИЋ БОШКО
+ВУЧУРЕВИЋ БРАНИСЛАВ
+ВУЧУРЕВИЋ ДАРИНКА
+ВУЧУРЕВИЋ ДРАГОМИР
+ВУЧУРЕВИЋ ДУШАН
+ВУЧУРЕВИЋ ГОРДАНА
+ВУЧУРЕВИЋ ЈЕЛЕНА
+ВУЧУРЕВИЋ МАША
+ВУЧУРЕВИЋ МИЛОШ
+ВУЧУРЕВИЋ МИРКО
+ВУЧУРЕВИЋ МЛАДЕН
+ВУЧУРЕВИЋ НАДА
+ВУЧУРЕВИЋ НИКОЛА
+ВУЧУРЕВИЋ ПЕТАР
+ВУЧУРЕВИЋ ТЕРЕЗИЈА
+ВУЧУРЕВИЋ УРОШ
+ВУЧУРЕВИЋ ВЕСНА
+ВУЧУРЕВИЋ ВЛАДИСЛАВА
+ВУЧУРЕВИЋ ВЛАДО
+ВУЧУРЕВИЋ ВОЈИСЛАВ
+ВУЧУРЕВИЋ ВОЈО
+ВУЧУРОВИЋ ЈАСНА
+ВУЧУРОВИЋ ЈОВАН
+ВУЧУРОВИЋ МИРКО
+ВУЧУРОВИЋ МИРОСЛАВ
+ВУЧУРОВИЋ МЛАДЕН
+ВУЧУРОВИЋ ПРЕДРАГ
+ВУЧУРОВИЋ СЛОБОДАН ДР
+ВУШТАР БОГДАН
+ВУЦЕЛИЋ СЛОБОДАН ДИПЛ ИНГ
+ВУЦЕЉА ДРАГАН
+ВУЦЕЉА МИЛОШ
+ВУЦЕЉА-ПЕТРОНИЈЕВИЋ ВЕРА
+ВУЦЕЉА ТРИВУН
+ВУЦЕЉА ВОЈИН
+ВУДРАГ САВО
+ВУДРАГ ЗОРАН
+ВУДРАГ ЗОРАН
+ВУДРАКОВИЋ РАТКО
+ВУГДЕЛИЋ ДОБРИВОЈ
+ВУГДЕЛИЋ ВУК
+ВУГЛЕЦ ЕДИТА
+ВУГРЕНИЧЕК ЂУРА
+ВУГРЕНИЧЕК МАГДА
+ВУГРИН СТЕВАН
+ВУГРИНЧИЋ АНКА
+ВУГРИНЧИЋ ФРАЊО
+ВУГРИНЧИЋ ЈАРОСЛАВ
+ВУГРИНЕЦ РУДОЛФ
+ВУИЋ ЈОСИП
+ВУЈЧИЋ ДРАГАН
+ВУЈЧИЋ МИЛЕ
+ВУЈЧИЋ ПЕТАР
+ВУЈЧИЋ ПЕТРИЈА
+ВУЈЧИН ЈОВАН
+ВУЈЧИН МИЛАН
+ВУЈЧИН МИТА
+ВУЈАЧИЋ ДРАГУТИН
+ВУЈАЧИЋ ДУБРАВКА
+ВУЈАЧИЋ МИЛИСАВ
+ВУЈАЧИЋ МИЛОРАД
+ВУЈАЧИЋ МИЛОРАД
+ВУЈАЧИЋ НИКОЛА
+ВУЈАЧИЋ РАДОСАВ
+ВУЈАЧИЋ РАЈКО
+ВУЈАШКОВИЋ СЛАВКО
+ВУЈАШКОВИЋ ВЛАДИМИР
+ВУЈАШКОВИЋ ВЛАДИСЛАВ
+ВУЈАШКОВИЋ ЗОРА
+ВУЈАЦКОВ ЂОРЂЕ
+ВУЈАЦКОВ АЛЕКСАНДАР
+ВУЈАЦКОВ ЈОВАН
+ВУЈАДИНОВ ДОБРИВОЈЕ ДИПЛ ИНГ
+ВУЈАДИНОВИЋ БЛАГОЈЕ
+ВУЈАДИНОВИЋ БРАНИСЛАВА
+ВУЈАДИНОВИЋ ЉУБИЦА
+ВУЈАДИНОВИЋ МИЛАН
+ВУЈАДИНОВИЋ МИЛИВОЈЕ
+ВУЈАДИНОВИЋ МИЛИВОЈ
+ВУЈАДИНОВИЋ МИЛИВОЈ
+ВУЈАДИНОВИЋ РАДОШ
+ВУЈАДИНОВИЋ РАЈКО
+ВУЈАДИНОВИЋ СЛАВИЦА
+ВУЈАДИНОВИЋ СВЕТОЗАР
+ВУЈАДИНОВИЋ ТОМИСЛАВ
+ВУЈАДИНОВИЋ ВЕРА
+ВУЈАДИНОВИЋ ВИШЊА
+ВУЈАДИНОВИЋ ВИТО
+ВУЈАДИНОВИЋ ВОЈИСЛАВ
+ВУЈАКЛИЈА ДЕСА
+ВУЈАКЛИЈА СТАНКО
+ВУЈАКОВИЋ ЂУРАЂ
+ВУЈАКОВИЋ ДРАГУТИН
+ВУЈАКОВИЋ КРСТАН
+ВУЈАКОВИЋ СЛОБОДАН
+ВУЈАКОВИЋ ВАСО
+ВУЈАКОВИЋ ВУЈО
+ВУЈАНИЋ ЖИВОСАВ
+ВУЈАНИЋ ЖИВОСЛАВ
+ВУЈАНИЋ БОРИВОЈ
+ВУЈАНИЋ БРАНКО
+ВУЈАНИЋ ГОРДАНА
+ВУЈАНИЋ ЈОРДАН
+ВУЈАНИЋ КОРНЕЛИЈА
+ВУЈАНИЋ МИЛАН
+ВУЈАНИЋ МИЛЕ
+ВУЈАНИЋ МИЛОВАН
+ВУЈАНИЋ НЕДЕЉКА
+ВУЈАНИЋ ПЕТАР
+ВУЈАНИЋ-ВАРГА ДИНКА ДР
+ВУЈАНОВ АЛЕКСАНДАР
+ВУЈАНОВ МИЛАНКА
+ВУЈАНОВ НИКОЛА
+ВУЈАНОВИЋ ЖАРКО
+ВУЈАНОВИЋ АЛЕКСАНДАР
+ВУЈАНОВИЋ БОШКО
+ВУЈАНОВИЋ БОЖИДАР ДР
+ВУЈАНОВИЋ БОЖИДАР
+ВУЈАНОВИЋ БОРИСЛАВ
+ВУЈАНОВИЋ БРАНКО
+ВУЈАНОВИЋ ДЕСИМИР
+ВУЈАНОВИЋ ДИМИТРИЈЕ
+ВУЈАНОВИЋ ДИМИТРИЈЕ
+ВУЈАНОВИЋ ДРАГИЦА
+ВУЈАНОВИЋ ЈОВАНКА
+ВУЈАНОВИЋ ЈОВО
+ВУЈАНОВИЋ МИЈО
+ВУЈАНОВИЋ МИЛАН
+ВУЈАНОВИЋ МИЛЕ
+ВУЈАНОВИЋ МИЛИНКА
+ВУЈАНОВИЋ МИЛОРАД
+ВУЈАНОВИЋ МИРКО
+ВУЈАНОВИЋ МЛАДЕН
+ВУЈАНОВИЋ СИМО
+ВУЈАНОВИЋ СЛАВОЉУБ
+ВУЈАНОВИЋ СТАНА
+ВУЈАНОВИЋ СТОЈАН
+ВУЈАНОВИЋ ВИТОМИР
+ВУЈАСИН СТРАИЛО
+ВУЈАСИНОВИЋ ЧЕДОМИР
+ВУЈАСИНОВИЋ ЈЕЛИЦА
+ВУЈАСИНОВИЋ ЉУБОМИР
+ВУЈАСИНОВИЋ МАРКО
+ВУЈАСИНОВИЋ МИЛАН
+ВУЈАСИНОВИЋ МИРОСЛАВ
+ВУЈАСИНОВИЋ РАДМИЛА
+ВУЈАТОВИЋ МИЛЕНКО
+ВУЈАТОВИЋ МИРЈАНА
+ВУЈАТОВИЋ ТЕОДОР
+ВУЈЕВИЋ РУЖА
+ВУЈИЧИЋ ЂОРЂЕ
+ВУЈИЧИЋ БИСЕРКА
+ВУЈИЧИЋ БОЖИДАР
+ВУЈИЧИЋ ЦВЕТА
+ВУЈИЧИЋ ДАНИЛО ДР
+ВУЈИЧИЋ ДОБРИЛА
+ВУЈИЧИЋ ДРАГАН
+ВУЈИЧИЋ ДУШАН
+ВУЈИЧИЋ ГОЈКО
+ВУЈИЧИЋ ИГЊАТ
+ВУЈИЧИЋ ИЛИЈА
+ВУЈИЧИЋ ИВИЦА ДР ПРОФ
+ВУЈИЧИЋ МАРКО
+ВУЈИЧИЋ МИХАЈЛО
+ВУЈИЧИЋ МИЛЕНКО
+ВУЈИЧИЋ МИЛОШ
+ВУЈИЧИЋ МИЛОШ
+ВУЈИЧИЋ ПЕТАР
+ВУЈИЧИЋ ПЕТРА
+ВУЈИЧИЋ РАДОСЛАВ
+ВУЈИЧИЋ РАНКО
+ВУЈИЧИЋ РАТКО
+ВУЈИЧИЋ РАТКО
+ВУЈИЧИЋ СИМО
+ВУЈИЧИЋ СЛОБОДАН
+ВУЈИЧИЋ СРЂАН
+ВУЈИЧИЋ СТАНКО
+ВУЈИЧИЋ СТЕВАН
+ВУЈИЧИЋ СТОЈАН ДИПЛ ИНГ
+ВУЈИЧИЋ СВЕТКО
+ВУЈИЧИЋ ТОМИСЛАВ
+ВУЈИЧИЋ ВАСИЛИЈЕ
+ВУЈИЧИЋ ВЕРА
+ВУЈИЧИЋ ВЕРИЦА
+ВУЈИЧИЋ ВЛАДИМИР
+ВУЈИЧИЋ ВОЈИН
+ВУЈИЧИН ЖАРКО
+ВУЈИЧИН ЂОРЂЕ
+ВУЈИЧИН ЂУРЂИЦА
+ВУЈИЧИН ЉУБИЦА
+ВУЈИЧИН ПЕТАР
+ВУЈИЋ ЖАРКО
+ВУЈИЋ ЖИВКО
+ВУЈИЋ ЂОРЂЕ
+ВУЈИЋ ЂОРЂЕ
+ВУЈИЋ ЂУРЂИЈА
+ВУЈИЋ ЂУРА
+ВУЈИЋ ЂУРА
+ВУЈИЋ АЛЕКСАНДАР
+ВУЈИЋ АЛЕКСАНДАР
+ВУЈИЋ АНЂЕЛИЈА
+ВУЈИЋ АНТЕ
+ВУЈИЋ АНТЕ
+ВУЈИЋ БОРИСЛАВ
+ВУЈИЋ БРАНИСЛАВ
+ВУЈИЋ БРАНИСЛАВ
+ВУЈИЋ БРАНКА
+ВУЈИЋ ДРАГА
+ВУЈИЋ ДРАГА
+ВУЈИЋ ДРАГИЊА
+ВУЈИЋ ДРАГОСЛАВА
+ВУЈИЋ ДРАГОСЛАВ
+ВУЈИЋ ДУШАН
+ВУЈИЋ ИВАН ДР
+ВУЈИЋ ИВАН ДР
+ВУЈИЋ ИВАНКА
+ВУЈИЋ ЈАКОБ ДР ЛЕКАР
+ВУЈИЋ ЈОВАН
+ВУЈИЋ ЈОВАН
+ВУЈИЋ ЈОВО
+ВУЈИЋ КАТАРИНА
+ВУЈИЋ-КОСО ВЕСНА
+ВУЈИЋ ЛАЗАР
+ВУЈИЋ ЉУБАН
+ВУЈИЋ ЉУБИЦА
+ВУЈИЋ МАРИЈА ПРОФЕСОР
+ВУЈИЋ МИЛАН
+ВУЈИЋ МИЛЕВА
+ВУЈИЋ МИЛЕВА
+ВУЈИЋ МИЛЕВКА
+ВУЈИЋ МИЛИЦА
+ВУЈИЋ МИЛОШ ДР
+ВУЈИЋ МИЛОШ
+ВУЈИЋ МИЛОШ
+ВУЈИЋ МИЛОШ
+ВУЈИЋ МИРА
+ВУЈИЋ МИРОСЛАВ ДИПЛ ИНГ
+ВУЈИЋ МОМИР
+ВУЈИЋ НАДА
+ВУЈИЋ НАДА
+ВУЈИЋ ПАВЛЕ ДР
+ВУЈИЋ ПРЕДРАГ
+ВУЈИЋ РАДИВОЈ
+ВУЈИЋ РАДОСЛАВ
+ВУЈИЋ РАТКА
+ВУЈИЋ САВО
+ВУЈИЋ САВО
+ВУЈИЋ СЛАВКА
+ВУЈИЋ СОФИЈА
+ВУЈИЋ СТАНКО
+ВУЈИЋ СТАНКО
+ВУЈИЋ СТЕВАН
+ВУЈИЋ СТЕВАН
+ВУЈИЋ СТЕВАН
+ВУЈИЋ ВЕРА
+ВУЈИЋ ВЕСНА
+ВУЈИЋ ВЛАДИМИР
+ВУЈИЋ ВЛАДИМИР
+ВУЈИЋ ВОЈИСЛАВА
+ВУЈИЋ ЗОРАН
+ВУЈИН ЂОКА
+ВУЈИН ЂУРИЦА
+ВУЈИН АЛЕКСАНДАР
+ВУЈИН ДАНИЦА
+ВУЈИН ДАВИД
+ВУЈИН ЈЕВРЕМ
+ВУЈИН ЈОВАНКА
+ВУЈИН ЛАЗАР
+ВУЈИН МАРА
+ВУЈИН МЕЛАНИЈА
+ВУЈИН МИРЈАНА
+ВУЈИН РАДИВОЈ
+ВУЈИН РАДОВАН
+ВУЈИН СЛАВКО
+ВУЈИН СЛОБОДАН
+ВУЈИН СВЕТОЗАР
+ВУЈИН ВУЈАДИН
+ВУЈИНОВИЋ ЖИВКА
+ВУЈИНОВИЋ ЂУРА
+ВУЈИНОВИЋ ЂУРО
+ВУЈИНОВИЋ БОРИСЛАВ
+ВУЈИНОВИЋ БРАНИМИР
+ВУЈИНОВИЋ ГЊАТИЈА
+ВУЈИНОВИЋ ЈОВО
+ВУЈИНОВИЋ ЉУБОМИР
+ВУЈИНОВИЋ МИЛОШ
+ВУЈИНОВИЋ МЛАДИНКО
+ВУЈИНОВИЋ НАДА
+ВУЈИНОВИЋ СРЕТЕН
+ВУЈИНОВИЋ СТОЈАН
+ВУЈИНОВИЋ ТЕОДОСИЈЕ
+ВУЈИНОВИЋ ВЕРА
+ВУЈИНОВИЋ ВИДОЈЕ
+ВУЈКО САВА
+ВУЈКОВ ЧЕДОМИР
+ВУЈКОВ ЂОРЂЕ
+ВУЈКОВ АЛЕКСАНДАР
+ВУЈКОВ АНТИНИЈА
+ВУЈКОВ БОЖИДАР
+ВУЈКОВ БОЖИДАР
+ВУЈКОВ ДРАГИЦА
+ВУЈКОВ ДРАГИЊА
+ВУЈКОВ ДРАГОЉУБ
+ВУЈКОВ ДУШАН
+ВУЈКОВ ДУШАН
+ВУЈКОВ-ИСАКОВ ЈАГИЦА
+ВУЈКОВ ЈЕЛЕНА
+ВУЈКОВ ЛАЗАР
+ВУЈКОВ ЛАЗАР
+ВУЈКОВ МИЛАН ДИПЛ ИНГ
+ВУЈКОВ МИЛАНА
+ВУЈКОВ МИЛАНА
+ВУЈКОВ МИЛАН
+ВУЈКОВ МИЛАН
+ВУЈКОВ МИЛЕНА
+ВУЈКОВ МИЛИЦА
+ВУЈКОВ МИЛИЦА
+ВУЈКОВ МИЛИВОЈ
+ВУЈКОВ МИРЈАНА
+ВУЈКОВ МИРОСЛАВ ДИПЛ ИНГ
+ВУЈКОВ МИРОСЛАВ
+ВУЈКОВ НАДА
+ВУЈКОВ НЕНАД
+ВУЈКОВ ОЛГА
+ВУЈКОВ ПАВЛЕ
+ВУЈКОВ ПЕРА
+ВУЈКОВ ПЕТАР ДИПЛ ПРАВНИК
+ВУЈКОВ РАДИВОЈ
+ВУЈКОВ РАДОСЛАВ
+ВУЈКОВ САВА
+ВУЈКОВ САВА
+ВУЈКОВ СЕНКА
+ВУЈКОВ СИМА
+ВУЈКОВ СЛАВКО
+ВУЈКОВ СЛОБОДАН
+ВУЈКОВ СНЕЖАНА
+ВУЈКОВ СНЕЖАНА
+ВУЈКОВ СТЕВАН
+ВУЈКОВ СВЕТОЗАР
+ВУЈКОВ ТАМАРА
+ВУЈКОВ ТОМИСЛАВ
+ВУЈКОВ ВАСА ДР
+ВУЈКОВ ВЕСЕЛИН ДР ПРОФ
+ВУЈКОВ ВЛАДИМИР
+ВУЈКОВ ЗДРАВКО
+ВУЈКОВ ЗДРАВКО
+ВУЈКОВИЋ ЂУРА
+ВУЈКОВИЋ ДРАГАН
+ВУЈКОВИЋ ГОРДАНА
+ВУЈКОВИЋ ГОСПАВА
+ВУЈКОВИЋ МИРА
+ВУЈКОВИЋ НИКОЛА
+ВУЈКОВИЋ РУЖА
+ВУЈКОВИЋ СЛОБОДАН
+ВУЈКОВИЋ СТЕВАН
+ВУЈНОВИЋ АНКА
+ВУЈНОВИЋ БОСИЉКА
+ВУЈНОВИЋ ДРАГАН
+ВУЈНОВИЋ ГОЈКО
+ВУЈНОВИЋ ГОЈКО
+ВУЈНОВИЋ ИЛИЈА
+ВУЈНОВИЋ-МИХАЈЛОВИЋ ДЕСАНКА
+ВУЈНОВИЋ МИЛАН
+ВУЈНОВИЋ МИЛАН
+ВУЈНОВИЋ ВЕЉКО
+ВУЈНОВИЋ ВЕРА
+ВУЈНОВИЋ ЗОРА
+ВУЈОШЕВИЋ БОРИСЛАВ
+ВУЈОШЕВИЋ БРАНКО ДИПЛ ОЕЦ
+ВУЈОШЕВИЋ ДОБРИСЛАВ
+ВУЈОШЕВИЋ ДУШАН
+ВУЈОШЕВИЋ КЛАРА
+ВУЈОШЕВИЋ ЉУБОМИР
+ВУЈОШЕВИЋ МИЛАН
+ВУЈОШЕВИЋ НИКОЛА
+ВУЈОШЕВИЋ РАТКО
+ВУЈОШЕВИЋ ЗОРА
+ВУЈОВИЋ ЂОРЂЕ
+ВУЈОВИЋ АЛЕКСАНДАР
+ВУЈОВИЋ БЛАЖО
+ВУЈОВИЋ БЛАГОЈЕ
+ВУЈОВИЋ БОЖИДАР
+ВУЈОВИЋ ДАНИЦА
+ВУЈОВИЋ ДАРИНКА
+ВУЈОВИЋ ДРАГОЉУБ
+ВУЈОВИЋ ДУШАН
+ВУЈОВИЋ МАРТА
+ВУЈОВИЋ МИХАИЛО
+ВУЈОВИЋ МИЛОМИР
+ВУЈОВИЋ МИЛОРАД
+ВУЈОВИЋ МИЛОРАД
+ВУЈОВИЋ МИЛОРАД
+ВУЈОВИЋ МИЛОВАН
+ВУЈОВИЋ МИОДРАГ
+ВУЈОВИЋ МИОМИР
+ВУЈОВИЋ МИРЈАНА
+ВУЈОВИЋ НЕЂЕЉКО
+ВУЈОВИЋ НЕЂО
+ВУЈОВИЋ НОВИЦА
+ВУЈОВИЋ ОЛГА
+ВУЈОВИЋ ПАВЛЕ
+ВУЈОВИЋ ПАВЛЕ
+ВУЈОВИЋ ПЕТКО
+ВУЈОВИЋ РАДИВОЈЕ
+ВУЈОВИЋ РАДИВОЈ
+ВУЈОВИЋ РАДОЈЕ
+ВУЈОВИЋ РАТКО
+ВУЈОВИЋ СЛОБОДАН
+ВУЈОВИЋ СЛОБОДАН
+ВУЈОВИЋ СТЕВАН
+ВУЈОВИЋ СВЕТИСЛАВ
+ВУЈОВИЋ ВАСИЛИЈЕ
+ВУЈОВИЋ ВАСИЛИЈЕ
+ВУЈОВИЋ ВАСИЛИЈЕ
+ВУЈОВИЋ ВЕЉКО
+ВУЈОВИЋ ВЕСЕЛИН
+ВУЈОВИЋ ВЛАДО
+ВУЈОВИЋ ВЛАЈКО
+ВУЈОВИЋ ВЛАТКО
+ВУЈОВИЋ ВОЈИСЛАВ
+ВУЈОВИЋ ВОЈИСЛАВ
+ВУЈОВИЋ ВОЈИСЛАВ
+ВУЈОВИЋ ВУКИЦА
+ВУЈОВИЋ ЗОРАН
+ВУКЧЕВИЋ ДУШАН
+ВУКЧЕВИЋ ГОРДАНА
+ВУКЧЕВИЋ ЈОВАН
+ВУКЧЕВИЋ КРСТО
+ВУКЧЕВИЋ ЉУБОМИР
+ВУКЧЕВИЋ ЉУБОМИР
+ВУКЧЕВИЋ МИЛЕНКО
+ВУКЧЕВИЋ МИЛЕНКО
+ВУКЧЕВИЋ ПЕТАР
+ВУКЧЕВИЋ САВО
+ВУКЧЕВИЋ СОФИЈА
+ВУКЧЕВИЋ СТЕВАН
+ВУКЧЕВИЋ ЗОРАН
+ВУКША ЧЕДО
+ВУКША ЖЕЉКО
+ВУКША БОРИВОЈЕ
+ВУКША ЛАЗАР
+ВУКША МИЛЕНКО
+ВУКША МИЛУТИН
+ВУКША ПЕТАР
+ВУКША ВЈЕРА
+ВУКАШЕВИЋ МИЛО
+ВУКАШЕВИЋ СЛОБОДАН
+ВУКАШИН ЈОВАН
+ВУКАШИНОВ БРАНИМИР
+ВУКАШИНОВ ЦВЕТКО
+ВУКАШИНОВ СТЕВАН
+ВУКАШИНОВИЋ ЖАРКО
+ВУКАШИНОВИЋ ЖИВАН
+ВУКАШИНОВИЋ ЂОРЂЕ
+ВУКАШИНОВИЋ БОЖИДАР
+ВУКАШИНОВИЋ БОЈАН
+ВУКАШИНОВИЋ ДРАГАН
+ВУКАШИНОВИЋ ДРАГИЊА
+ВУКАШИНОВИЋ ДРАГОЉУБ
+ВУКАШИНОВИЋ ИРЕНА
+ВУКАШИНОВИЋ ИРЕНА
+ВУКАШИНОВИЋ ЛАЗАР
+ВУКАШИНОВИЋ ЛАЗАР
+ВУКАШИНОВИЋ МИЛАН
+ВУКАШИНОВИЋ МИЛЕ
+ВУКАШИНОВИЋ МИЛИЦА
+ВУКАШИНОВИЋ МИРА
+ВУКАШИНОВИЋ МИРЈАНА
+ВУКАШИНОВИЋ МИРОСЛАВ
+ВУКАШИНОВИЋ МОМИР
+ВУКАШИНОВИЋ НИКОЛА
+ВУКАШИНОВИЋ ПАВЛЕ
+ВУКАШИНОВИЋ РАДОЈЕ
+ВУКАШИНОВИЋ СПОМЕНКА
+ВУКАШИНОВИЋ СТОЈАН
+ВУКАШИНОВИЋ ВЕРА
+ВУКАШИНОВИЋ ВЕРИЦА
+ВУКАШИНОВИЋ ВЕСЕЛИН
+ВУКАШИНОВИЋ ВИДА
+ВУКАШИНОВИЋ ЗДРАВКО
+ВУКАДИН ДОБРИВОЈЕ
+ВУКАДИН ТОМИСЛАВ
+ВУКАДИНОВ ЂОРЂЕ
+ВУКАДИНОВ ЂУРА
+ВУКАДИНОВ БОЈКА
+ВУКАДИНОВ БРАНИСЛАВ
+ВУКАДИНОВ ИСИДОР
+ВУКАДИНОВ ИВАНКА
+ВУКАДИНОВ ИВАНКА
+ВУКАДИНОВ ЈОВАН
+ВУКАДИНОВ КАТИЦА
+ВУКАДИНОВ МИЛЕНКО
+ВУКАДИНОВ МИОДРАГ
+ВУКАДИНОВ НЕНАД
+ВУКАДИНОВИЋ АНЂЕЛКО
+ВУКАДИНОВИЋ БИЉАНА
+ВУКАДИНОВИЋ БОСИЉКА
+ВУКАДИНОВИЋ БРАНИСЛАВ
+ВУКАДИНОВИЋ БРАНИСЛАВ
+ВУКАДИНОВИЋ БРАНИСЛАВ
+ВУКАДИНОВИЋ БРАНКО
+ВУКАДИНОВИЋ ГАБРИЈЕЛА ПРОФЕСОР
+ВУКАДИНОВИЋ ЈЕЛИЦА
+ВУКАДИНОВИЋ ЛЕПОСАВА
+ВУКАДИНОВИЋ ЉУБО
+ВУКАДИНОВИЋ МИЛЕНКО
+ВУКАДИНОВИЋ МИЛИВОЈЕ
+ВУКАДИНОВИЋ МИЉОЈКО
+ВУКАДИНОВИЋ МИЛОШ
+ВУКАДИНОВИЋ МИЛОЈЕ
+ВУКАДИНОВИЋ МИЛОРАД
+ВУКАДИНОВИЋ НИКОЛА
+ВУКАДИНОВИЋ ПАВЛЕ ДР
+ВУКАДИНОВИЋ ПЕТАР
+ВУКАДИНОВИЋ ПЕТАР
+ВУКАДИНОВИЋ СОФИЈА ЛОКАЛ
+ВУКАДИНОВИЋ СОФИЈА
+ВУКАДИНОВИЋ СТАНА
+ВУКАДИНОВИЋ СТЕВАН ДР
+ВУКАДИНОВИЋ СВЕТОЗАР
+ВУКАДИНОВИЋ СВЕТОЗАР
+ВУКАДИНОВИЋ ТАТЈАНА
+ВУКАДИНОВИЋ ВЕЛИЗАР
+ВУКАДИНОВИЋ ВЛАДИСАВ
+ВУКАДИНОВИЋ ЗОЛИКА
+ВУКАДИНОВИЋ ЗОЛИКА
+ВУКАЈЛОВ БУДИМИР
+ВУКАЈЛОВ МИРОСЛАВ
+ВУКАЈЛОВИЋ ЖИВАН ПРОФЕСОР
+ВУКАЈЛОВИЋ ЂОРЂЕ
+ВУКАЈЛОВИЋ АНКИЦА
+ВУКАЈЛОВИЋ ДАНИЛО
+ВУКАЈЛОВИЋ ДАРИНКА
+ВУКАЈЛОВИЋ ДУШАН
+ВУКАЈЛОВИЋ ЕЛИЗАБЕТА
+ВУКАЈЛОВИЋ ЛАЗАР
+ВУКАЈЛОВИЋ МИЛЕНА
+ВУКАЈЛОВИЋ МИРЈАНА
+ВУКАЈЛОВИЋ СРЕТО
+ВУКАЈЛОВИЋ СТЕВАН
+ВУКАЛИЋ МУМИН
+ВУКАЉЕВИЋ ИЛИЈА
+ВУКАЉЕВИЋ СЛАВКО
+ВУКАЛОВИЋ СВЕТЛАНА
+ВУКАНИЋ АЛЕКСАНДАР
+ВУКАНИЋ ПЕТАР
+ВУКАНИЋ СРЕТЕН
+ВУКАНИЋ ЗОРАН
+ВУКАНИЋ ЗОРАН
+ВУКАНОВИЋ ЖИВКА
+ВУКАНОВИЋ АНИЦА
+ВУКАНОВИЋ МАРИНА
+ВУКАНОВИЋ МИРОСЛАВ
+ВУКАНОВИЋ НЕБОЈША
+ВУКАНОВИЋ РАДИВОЈ
+ВУКАНОВИЋ СЛАВИМИР
+ВУКАНОВИЋ СЛОБОДАН
+ВУКАНОВИЋ СЛОБОДАН
+ВУКАС ЂОРЂЕ
+ВУКАС ЂУРО
+ВУКАС АНКИЦА
+ВУКАС БРАНКО
+ВУКАС ОМЕРКА
+ВУКАСОВИЋ БРАНИСЛАВ
+ВУКАСОВИЋ МАРИЈА
+ВУКАСОВИЋ МИЛАН
+ВУКАСОВИЋ СЛАВИЦА
+ВУКАВИЋ АЛЕКСАНДРА
+ВУКЕЛИЋ АНЂЕЛКА
+ВУКЕЛИЋ БОРИСЛАВ
+ВУКЕЛИЋ БРАНКО
+ВУКЕЛИЋ БРАНКО
+ВУКЕЛИЋ ДАРА
+ВУКЕЛИЋ ДРАГАН
+ВУКЕЛИЋ ЈОВАН
+ВУКЕЛИЋ ЉУБОМИР
+ВУКЕЛИЋ МИЛАН
+ВУКЕЛИЋ МИЛЕ
+ВУКЕЛИЋ МИЛИЦА
+ВУКЕЛИЋ МИОДРАГ
+ВУКЕЛИЋ МОМИР
+ВУКЕЛИЋ ПАВЛЕ
+ВУКЕЛИЋ ПЕТАР
+ВУКЕЛИЋ ПЕТАР
+ВУКЕЛИЋ РАДА
+ВУКЕЛИЋ РАДЕ
+ВУКЕЛИЋ СИЛВИЈЕ
+ВУКЕЛИЋ СИМО
+ВУКЕЛИЋ СЛАВКО
+ВУКЕЛИЋ СТЕВАН
+ВУКЕЛИЋ СТЕВАН
+ВУКЕЛИЋ ТОМИСЛАВ
+ВУКЕЛИЋ ВЕЉКО
+ВУКЕЛИЋ ВЕРИЦА
+ВУКЕЛИЋ ВЕСНА
+ВУКЕЛИЋ ВУКИЦА
+ВУКЕЛИЋ ЗДРАВКО ДР
+ВУКЕЛИЋ ЗОРИЦА
+ВУКЕЛИЋ ЗВОНИМИР
+ВУКЕЉА БРАНКА
+ВУКИЧЕВИЋ ДРАГОМИР
+ВУКИЧЕВИЋ ЉИЉАНА
+ВУКИЧЕВИЋ МИЛАН
+ВУКИЧЕВИЋ МИЛАН
+ВУКИЧЕВИЋ МИЛАН
+ВУКИЧЕВИЋ МИТАР ДИПЛ ПРАВНИК
+ВУКИЧЕВИЋ РАНКО
+ВУКИЧЕВИЋ СПАСОЈЕ
+ВУКИЧЕВИЋ ВЕСНА
+ВУКИЋ-ЋУЛАФИЋ БРАНКА
+ВУКИЋ ЖИВКО
+ВУКИЋ АНДРЕЈ
+ВУКИЋ БОЖИДАР
+ВУКИЋ БОРИСЛАВ
+ВУКИЋ БРАНКО
+ВУКИЋ БРАНКО
+ВУКИЋ БУДИМИР
+ВУКИЋ ДЕЈАН
+ВУКИЋ ДИМИТРИЈЕ
+ВУКИЋ ДУШАН
+ВУКИЋ ИВАНКА
+ВУКИЋ ЈОВАН
+ВУКИЋ ЉУБИЦА
+ВУКИЋ ЉУБОМИР
+ВУКИЋ МАРИЈА
+ВУКИЋ МИЛАН
+ВУКИЋ МИЛИЦА
+ВУКИЋ МИРЈАНА
+ВУКИЋ МИРКО
+ВУКИЋ МОМЧИЛО
+ВУКИЋ НИКОЛА
+ВУКИЋ НИКОЛА
+ВУКИЋ НОВАК
+ВУКИЋ ПЕТАР
+ВУКИЋ СТАНКО
+ВУКИЋ СТЕВАН
+ВУКИЋ ВЕЛИМИР
+ВУКИЋ ВЛАДО
+ВУКИЋ ВУКАШИН
+ВУКИЋЕВИЋ ЂОРЂЕ
+ВУКИЋЕВИЋ ЂОРЂЕ
+ВУКИЋЕВИЋ АЛЕКСАНДАР
+ВУКИЋЕВИЋ БРАТИСЛАВ
+ВУКИЋЕВИЋ ДРАГИЦА
+ВУКИЋЕВИЋ ДУШАНКА
+ВУКИЋЕВИЋ ИСИДОР
+ВУКИЋЕВИЋ ИСИДОР
+ВУКИЋЕВИЋ МИОМИР
+ВУКИЋЕВИЋ МИРОСЛАВ
+ВУКИЋЕВИЋ МИРОСЛАВ
+ВУКИЋЕВИЋ МОМЧИЛО ДР
+ВУКИЋЕВИЋ СТАНИША
+ВУКИЋЕВИЋ ТОМА
+ВУКИЋЕВИЋ ВЕЉКО
+ВУКЛИШ ДРАГАН
+ВУКЛИШ СЛОБОДАН
+ВУКМАНОВИЋ ДАНИЛО
+ВУКМАНОВИЋ ЉУБА
+ВУКМАНОВИЋ МИЛАНА
+ВУКМАНОВИЋ МИЛАН
+ВУКМАНОВИЋ НЕНАД
+ВУКМАНОВИЋ ПЕТАР
+ВУКМАНОВИЋ СИМО
+ВУКМАНОВИЋ ВЕЛИМИР
+ВУКМАНОВИЋ ВЕРА
+ВУКМИРОВИЋ ЂОРЂЕ
+ВУКМИРОВИЋ ЂОРЂЕ
+ВУКМИРОВИЋ БОЖИДАР
+ВУКМИРОВИЋ БРАНКО
+ВУКМИРОВИЋ БРАНКО
+ВУКМИРОВИЋ ДАНЕ
+ВУКМИРОВИЋ ДРАГАН
+ВУКМИРОВИЋ ГОЈКО
+ВУКМИРОВИЋ ИЛИЈА
+ВУКМИРОВИЋ ИЛИЈА
+ВУКМИРОВИЋ ИЛИЈА
+ВУКМИРОВИЋ ЈАЊА
+ВУКМИРОВИЋ ЉУБОМИР
+ВУКМИРОВИЋ МИЛАН
+ВУКМИРОВИЋ МИЛАН
+ВУКМИРОВИЋ МИЛИЦА
+ВУКМИРОВИЋ МИЛОШ
+ВУКМИРОВИЋ МИЛО
+ВУКМИРОВИЋ НИКОЛА
+ВУКМИРОВИЋ ПЕТАР
+ВУКМИРОВИЋ РАНКО
+ВУКМИРОВИЋ РАНКО
+ВУКМИРОВИЋ РОДОЉУБ
+ВУКМИРОВИЋ СМИЉКА
+ВУКМИРОВИЋ СРЕЋКО
+ВУКМИРОВИЋ ВЕЛИНКА
+ВУКМИРОВИЋ ВУКИЦА
+ВУКМИРОВИЋ ЗДРАВКА
+ВУКНИЋ МАРИЈАН
+ВУКОБРАД ДРАГО
+ВУКОБРАД ЉУБОМИР
+ВУКОБРАД МАРКО
+ВУКОБРАД МИЛОШ
+ВУКОБРАТ ДАНИЦА
+ВУКОБРАТ ДРАГАН
+ВУКОБРАТ ЈОШО
+ВУКОБРАТ ЉУБОМИР
+ВУКОБРАТ МИЛАН
+ВУКОБРАТ НИКОЛА
+ВУКОБРАТ ПЕТАР
+ВУКОБРАТ ТАТЈАНА
+ВУКОБРАТ ЗДРАВКО
+ВУКОБРАТОВ РАДОВАН ДИПЛ ИНГ
+ВУКОБРАТОВ СЛОБОДАН
+ВУКОБРАТОВИЋ БОГДАН
+ВУКОБРАТОВИЋ ДАНИЦА
+ВУКОБРАТОВИЋ ЈОВАН
+ВУКОБРАТОВИЋ МИРЈАНА
+ВУКОБРАТОВИЋ НАДА
+ВУКОБРАТОВИЋ СЛАВИЦА
+ВУКОЈЧИЋ ДУШАН
+ВУКОЈА АНТУН
+ВУКОЈЕ ДУШАН
+ВУКОЈЕ ГАШО
+ВУКОЈЕ ИЛИЈА
+ВУКОЈЕ ЈОВАН
+ВУКОЈЕ МИЛАНА
+ВУКОЈЕ РАДИВОЈЕ
+ВУКОЈЕ РАДМИЛА
+ВУКОЈЕ РАДОВАН
+ВУКОЈЕ ВАЊА
+ВУКОЈЕ ВОЈО
+ВУКОЈЕВ БОГДАН
+ВУКОЈЕВ ДУШАН
+ВУКОЈЕВ ДУШАН
+ВУКОЈЕВ СЛОБОДАН
+ВУКОЈЕВИЋ ЂУРО
+ВУКОЈЕВИЋ МАРА
+ВУКОЈЕВИЋ МИЋО
+ВУКОЈЕВИЋ МИОДРАГ
+ВУКОЈЕВИЋ НИКО
+ВУКОЈЕВИЋ ВЕРИЦА
+ВУКОЈЕВИЋ ВИДОСАВ
+ВУКОЈЕВИЋ ЗОРАН
+ВУКОЈИЧИЋ БОРИСЛАВ
+ВУКОЈИЧИЋ ДРАГАН
+ВУКОЈИЧИЋ МИОДРАГ
+ВУКОЈИЧИЋ МИОДРАГ
+ВУКОЈИЧИЋ СЛАВОЉУБ
+ВУКОМАН ЕМИЛИЈА
+ВУКОМАН МИЛОРАД
+ВУКОМАН РАДА
+ВУКОМАН ЗОРАН
+ВУКОМАН ЗОРКА
+ВУКОМАНОВ ЈОВАН
+ВУКОМАНОВИЋ АНДРИЈА
+ВУКОМАНОВИЋ КАТИЦА
+ВУКОМАНОВИЋ НИКОЛА
+ВУКОМАНОВИЋ РАДОМИР
+ВУКОМАНОВИЋ СЛАВКО
+ВУКОСАВ БОРИВОЈЕ
+ВУКОСАВ БОРКО ДР
+ВУКОСАВ ДОБРИЛА
+ВУКОСАВ ЈОВО
+ВУКОСАВ МИЛОВАН
+ВУКОСАВ РАДЕ
+ВУКОСАВ СЕНКА
+ВУКОСАВ ВЛАЈКО
+ВУКОСАВЉЕВ БОГДАНКА
+ВУКОСАВЉЕВ ДАНИЦА
+ВУКОСАВЉЕВ ДРАГИЦА
+ВУКОСАВЉЕВ ЈЕЛЕНА
+ВУКОСАВЉЕВ ЛАЗАР
+ВУКОСАВЉЕВ МАКСА
+ВУКОСАВЉЕВ МИЛАН
+ВУКОСАВЉЕВ ПЕТАР
+ВУКОСАВЉЕВ САВА
+ВУКОСАВЉЕВ СЛАВИЦА
+ВУКОСАВЉЕВ СТЕВАН
+ВУКОСАВЉЕВ ВОЈИН ДИПЛ ИНГ
+ВУКОСАВЉЕВИЋ АНЂЕЛКА
+ВУКОСАВЉЕВИЋ БАРБАРА
+ВУКОСАВЉЕВИЋ ЦВИЈЕТИН
+ВУКОСАВЉЕВИЋ ДРАГИЦА
+ВУКОСАВЉЕВИЋ ИВАН
+ВУКОСАВЉЕВИЋ ЉУБИЦА
+ВУКОСАВЉЕВИЋ ЛУКА
+ВУКОСАВЉЕВИЋ МАРА
+ВУКОСАВЉЕВИЋ МИЛЕНКО
+ВУКОСАВЉЕВИЋ МИЛОРАД
+ВУКОСАВЉЕВИЋ МИРА
+ВУКОСАВЉЕВИЋ МИРОСЛАВ
+ВУКОСАВЉЕВИЋ ПАВЛЕ
+ВУКОСАВЉЕВИЋ СЛОБОДАН
+ВУКОСАВЉЕВИЋ СТОЈАН
+ВУКОСЛАВЧЕВИЋ НИКОЛА
+ВУКОСЛАВЧЕВИЋ ЗАРИЈЕ
+ВУКОСЛАВОВИЋ РАДОЊА
+ВУКОТА МАРКО
+ВУКОТА МИЛАН
+ВУКОТИЋ БРАНКО
+ВУКОТИЋ ИВА
+ВУКОТИЋ КАТАРИНА
+ВУКОТИЋ-КОВАЧЕВИЋ БИЉАНА
+ВУКОТИЋ ЛУКА
+ВУКОТИЋ МАРА
+ВУКОТИЋ МАРИЈА
+ВУКОТИЋ МИЛАН
+ВУКОТИЋ МИЛИЦА
+ВУКОТИЋ МИОДРАГ
+ВУКОТИЋ НЕНАД
+ВУКОТИЋ НИКОЛА
+ВУКОТИЋ ОЛГА
+ВУКОТИЋ ПЕРИША
+ВУКОТИЋ РАДОЈЕ
+ВУКОТИЋ РАДОВАН
+ВУКОТИЋ СОФИЈА
+ВУКОТИЋ ЗОРИЦА
+ВУКОВ ЖИВКО
+ВУКОВ ЂОРЂЕ
+ВУКОВ ЂОРЂЕ
+ВУКОВ БОШКО
+ВУКОВ БОШКО
+ВУКОВ БОЖАНА
+ВУКОВ БРАНИСЛАВ
+ВУКОВ БРАНИСЛАВ
+ВУКОВ ДРАГАН
+ВУКОВ ДРАГОЉУБ
+ВУКОВ ЈОВАН
+ВУКОВ ЈОВАН
+ВУКОВ ЛАЗАР
+ВУКОВ ЉУБОМИР
+ВУКОВ МАРИЈА
+ВУКОВ МАРКО
+ВУКОВ НИКОЛИЈА
+ВУКОВ ОЛГА
+ВУКОВ СТЕВИЦА
+ВУКОВ ВУКАШИН
+ВУКОВАЦ ДРАГАН
+ВУКОВАЦ ПАНТА
+ВУКОВИЋ ШТЕФИЦА
+ВУКОВИЋ ЖИВКО
+ВУКОВИЋ ЖИВОЈИН
+ВУКОВИЋ ЂОРЂЕ
+ВУКОВИЋ ЂУКА
+ВУКОВИЋ АЛЕКСАНДАР
+ВУКОВИЋ АЛЕКСАНДРА
+ВУКОВИЋ АЛЕКСИЈА
+ВУКОВИЋ АНДРИЈА
+ВУКОВИЋ АНТО
+ВУКОВИЋ БИЉАНА
+ВУКОВИЋ БЛАЖО
+ВУКОВИЋ БЛАГОЈЕ
+ВУКОВИЋ БОШКО
+ВУКОВИЋ БОШКО
+ВУКОВИЋ БОГИЋ
+ВУКОВИЋ БОЈАНА
+ВУКОВИЋ БОЈАНА
+ВУКОВИЋ БОРИША
+ВУКОВИЋ БОРИША
+ВУКОВИЋ БОРИВОЈ
+ВУКОВИЋ БОСИЉКА
+ВУКОВИЋ БРАНИСЛАВ
+ВУКОВИЋ БУДИМИР
+ВУКОВИЋ ЦВЕТКО
+ВУКОВИЋ ДАРИНКА
+ВУКОВИЋ ДОБРИВОЈЕ
+ВУКОВИЋ ДРАГАН
+ВУКОВИЋ ДРАГАН
+ВУКОВИЋ ДРАГОЉУБ
+ВУКОВИЋ ДРАГОСЛАВ
+ВУКОВИЋ ДРАГО
+ВУКОВИЋ ДУШАН ДР ЛЕКАР
+ВУКОВИЋ ДУШАНКА
+ВУКОВИЋ ДУШАН
+ВУКОВИЋ ДУШАН
+ВУКОВИЋ ГЕЗА НОВИНАР
+ВУКОВИЋ ГОЈКО
+ВУКОВИЋ ГОРАН
+ВУКОВИЋ ГОРДАНА
+ВУКОВИЋ ИЛИЈА
+ВУКОВИЋ ИЛИЈА
+ВУКОВИЋ ИВАН
+ВУКОВИЋ ИВАН
+ВУКОВИЋ ИВИЦА
+ВУКОВИЋ ЈАСМИНА
+ВУКОВИЋ ЈЕЛИЦА
+ВУКОВИЋ ЈОСИП
+ВУКОВИЋ ЈОВА
+ВУКОВИЋ ЈУЛИЈАНА
+ВУКОВИЋ ЈУЛИЈАНА
+ВУКОВИЋ ЉУБАН
+ВУКОВИЋ МАРГАРЕТА
+ВУКОВИЋ МАРЈЕНКА
+ВУКОВИЋ МАТО
+ВУКОВИЋ МИЛАДИН
+ВУКОВИЋ МИЛАН
+ВУКОВИЋ МИЛАН
+ВУКОВИЋ МИЛЕНА
+ВУКОВИЋ МИЛЕНА
+ВУКОВИЋ МИЛЕНКО
+ВУКОВИЋ МИЛИВОЈЕ
+ВУКОВИЋ МИЛИВОЈЕ
+ВУКОВИЋ МИЛИВОЈЕ
+ВУКОВИЋ МИЛИВОЈ
+ВУКОВИЋ МИЉАН
+ВУКОВИЋ МИЛКА
+ВУКОВИЋ МИЛКА
+ВУКОВИЋ МИЛОРАД
+ВУКОВИЋ МИЛУТИН
+ВУКОВИЋ МИЛУТИН
+ВУКОВИЋ МИОДРАГ
+ВУКОВИЋ МИОДРАГ
+ВУКОВИЋ МИРЈАНА
+ВУКОВИЋ МИРЈАНА
+ВУКОВИЋ МИРКО
+ВУКОВИЋ МИРКО
+ВУКОВИЋ МИРОЈЕ
+ВУКОВИЋ МИРОСЛАВ
+ВУКОВИЋ МИРОСЛАВ
+ВУКОВИЋ МИТАР
+ВУКОВИЋ МИТАР
+ВУКОВИЋ МИТА
+ВУКОВИЋ МЛАДЕН
+ВУКОВИЋ НАДА
+ВУКОВИЋ НАДА
+ВУКОВИЋ НЕДА
+ВУКОВИЋ ОБРАД
+ВУКОВИЋ ОБРАД
+ВУКОВИЋ ОЛГИЦА
+ВУКОВИЋ ОЛГИЦА
+ВУКОВИЋ ПЕТАР
+ВУКОВИЋ ПЕТАР
+ВУКОВИЋ ПЕТАР
+ВУКОВИЋ РАДЕНКО
+ВУКОВИЋ РАДЕ
+ВУКОВИЋ РАДОСЛАВ
+ВУКОВИЋ РАДОВАН
+ВУКОВИЋ РАТКО
+ВУКОВИЋ САВА
+ВУКОВИЋ СЕНКА
+ВУКОВИЋ СИМА
+ВУКОВИЋ СЛОБОДАН
+ВУКОВИЋ СЛОБОДАН
+ВУКОВИЋ СРЕЋКО
+ВУКОВИЋ СРЕДОЈЕ
+ВУКОВИЋ СТАНКА
+ВУКОВИЋ СТАНКА
+ВУКОВИЋ СТИПА
+ВУКОВИЋ СВЕТИСЛАВ
+ВУКОВИЋ СВЕТЛАНА
+ВУКОВИЋ СВЕТЛАНА
+ВУКОВИЋ-ТАВЧИОСКА АЛЕКСАНДРА
+ВУКОВИЋ ТОДОР
+ВУКОВИЋ ТОМИСЛАВ
+ВУКОВИЋ ВЕСНА
+ВУКОВИЋ ВИДАК
+ВУКОВИЋ ВИНКА
+ВУКОВИЋ ВЛАДИМИР
+ВУКОВИЋ ВЛАДИМИР
+ВУКОВИЋ ВЛАДИМИР
+ВУКОВИЋ ВЛАДИСЛАВ ДР
+ВУКОВИЋ ВЛАТКО ДИПЛ ИНГ
+ВУКОВИЋ ВОЈИСЛАВ
+ВУКОВИЋ ВОЈКО
+ВУКОВИЋ ВУЧИЋ
+ВУКОВИЋ ВУКАШИН
+ВУКОВИЋ ЗОРАН
+ВУКОВИЋ ЗОРАН
+ВУКОВИЋ ЗОРАН
+ВУКОВИЋ ЗОРАН
+ВУКОВИЋ ЗОРАН
+ВУКОВЉАК БОСИЉКА
+ВУКОВЉАК ЕВИЦА
+ВУКОВЉАК МИРКО
+ВУКОВЉАК ВОЈИН
+ВУКОВОЈАЦ ОЛГА
+ВУКОВОЈАЦ ВОЈИСЛАВ
+ВУКСАН МИЛАН
+ВУКСАН МИЛИВОЈ
+ВУКСАН МИОДРАГ
+ВУКСАН НИКОЛА
+ВУКСАН РАДОСЛАВ ПРОФЕСОР
+ВУКСАН РУЖИЦА
+ВУКСАН СВЕТОЗАР
+ВУКСАН ВУКОСАВА
+ВУКСАНОВ ЉУБИЦА
+ВУКСАНОВ ВОЈИСЛАВ
+ВУКСАНОВИЋ ЖИВОРАД
+ВУКСАНОВИЋ АЛЕКСАНДАР
+ВУКСАНОВИЋ АЛЕКСАНДАР
+ВУКСАНОВИЋ ДАРКО
+ВУКСАНОВИЋ ДЕСАНКА
+ВУКСАНОВИЋ ГОРАН
+ВУКСАНОВИЋ ГОРДАНА
+ВУКСАНОВИЋ ЈОВАН
+ВУКСАНОВИЋ МИЛЕ
+ВУКСАНОВИЋ МИЛИСАВ
+ВУКСАНОВИЋ МИЛОРАД
+ВУКСАНОВИЋ МИОДРАГ
+ВУКСАНОВИЋ МИРО
+ВУКСАНОВИЋ САВО
+ВУКСАНОВИЋ СТЕВАНКА
+ВУКСИЋ СТЕВО
+ВУКСИЋ ВЕЛИМИР
+ВУКУШИЋ АНТЕ
+ВУЛАНОВИЋ РЕЉА
+ВУЛАНОВИЋ ВОЈИСЛАВ
+ВУЛЕТА БОЈАН
+ВУЛЕТА ПРЕДРАГ
+ВУЛЕТА РИСТО
+ВУЛЕТИЋ ЖЕЉКО
+ВУЛЕТИЋ ЂОРЂИЈЕ
+ВУЛЕТИЋ АНДРИЈА
+ВУЛЕТИЋ БОРИСЛАВ
+ВУЛЕТИЋ БРАНИСЛАВА
+ВУЛЕТИЋ БРАНКО
+ВУЛЕТИЋ БРАНКО
+ВУЛЕТИЋ ДАНИЦА ДР
+ВУЛЕТИЋ ДИМИТРИЈЕ
+ВУЛЕТИЋ ЈЕЛЕНА
+ВУЛЕТИЋ ЈЕЛИЦА ПРОФЕСОР
+ВУЛЕТИЋ МИЛАДИН
+ВУЛЕТИЋ МИЛАН ВЕТЕРИНАР
+ВУЛЕТИЋ МИЛЕ
+ВУЛЕТИЋ МИЛИВОЈ
+ВУЛЕТИЋ МЛАДЕН
+ВУЛЕТИЋ НАДЕЖДА
+ВУЛЕТИЋ НЕДЕЉКО
+ВУЛЕТИЋ НИКОЛА
+ВУЛЕТИЋ ОБРАД
+ВУЛЕТИЋ РАДОВАН
+ВУЛЕТИЋ СРЂАН
+ВУЛЕТИЋ ВАСИЛИЈЕ
+ВУЛЕТИЋ ВИДОСАВА
+ВУЛЕТИЋ ВИТОМИР
+ВУЛЕТИЋ ВЛАДИМИР
+ВУЛЕТИЋ ВЛАСТИМИР
+ВУЛЕТИЋ ЗОРИЦА
+ВУЛЕТИН ЗОРА
+ВУЛЕВИЋ ЧЕДОМИР
+ВУЛЕВИЋ ЧЕДОМИР
+ВУЛЕВИЋ ЧЕДОМИР
+ВУЛЕВИЋ СПАСОЈЕ
+ВУЛИЋ ЖИКА
+ВУЛИЋ ЂОРЂЕ
+ВУЛИЋ ЂОРЂЕ
+ВУЛИЋ БОЖИДАР
+ВУЛИЋ БОРИСЛАВ
+ВУЛИЋ БРАНИСЛАВ
+ВУЛИЋ БРАНИСЛАВ
+ВУЛИЋ ДАРИНКА
+ВУЛИЋ ДЕСАНКА
+ВУЛИЋ ДРАГОЉУБ
+ВУЛИЋ ИЛИЈА
+ВУЛИЋ ЈАВОРКА
+ВУЛИЋ ЈЕЛЕНА
+ВУЛИЋ ЈЕЛЕНА
+ВУЛИЋ ЈОВАН
+ВУЛИЋ ЈОВАН
+ВУЛИЋ ЈОВАН
+ВУЛИЋ ЛУКА
+ВУЛИЋ ЛУКА
+ВУЛИЋ МИЛАНКА
+ВУЛИЋ МИЛАН
+ВУЛИЋ МИЛИВОЈЕ
+ВУЛИЋ МИЛОРАД
+ВУЛИЋ МИЛОРАД
+ВУЛИЋ МИРОСЛАВ
+ВУЛИЋ МЛАДЕН
+ВУЛИЋ МОМЧИЛО
+ВУЛИЋ НИКОЛА
+ВУЛИЋ ПЕТКО
+ВУЛИЋ СЛАВИЦА
+ВУЛИЋ СЛАВКО
+ВУЛИЋ СТЕВАН
+ВУЛИЋ ЗЛАТА
+ВУЛИЋ ЗЛАТИЈА
+ВУЛИКИЋ ЛУКА
+ВУЛИКИЋ РУЖИЦА
+ВУЛИКИЋ ВЕСЕЛИН
+ВУЛИКИЋ ВОЈИСЛАВ
+ВУЛИН АНГЕЛИНА
+ВУЛИН БРАНИСЛАВ
+ВУЛИН ГОЈКО
+ВУЛИН ЈУЛКА
+ВУЛИН МЛАДЕН
+ВУЛИН НЕНАД
+ВУЛИН НЕНАД
+ВУЛИН ПРЕДРАГ
+ВУЛИН РАДОМИР
+ВУЛИН СТЕВАН
+ВУЛИН ВУКАШИН
+ВУЉАЈ ВАСЕЉ
+ВУЉЕВИЋ ЂОКА
+ВУЛКАНИ ГОРДАНА
+ВУЛОВИЋ ДРАГИЦА
+ВУЛОВИЋ ДРАГОШ
+ВУЛОВИЋ ДРАГОЉУБ
+ВУЛОВИЋ ДРАГОМИР
+ВУЛОВИЋ ГОРАН
+ВУЛОВИЋ ПЕТАР
+ВУЛОВИЋ РАЈКО
+ВУЛОВИЋ САВО
+ВУЛОВИЋ СЛАВИША
+ВУЛОВИЋ ВЛАДИМИР
+ВУЛОВИЋ ВУКИЦА
+ВУЛСАНОВИЋ ИЛКА
+ВУНДЕРЛИХ ЈОСИП
+ВУНДУК МИРОСЛАВА
+ВУНИЋ МИЉЕНКО
+ВУНИЋ ПЕТАР
+ВУНИЋ РАДОЈКА
+ВУЊАК ЂОРЂЕ
+ВУЊАК БРАНИСЛАВА
+ВУЊАК ДУШАН
+ВУРДЕЉА НЕМАЊА ДР ПРОФ
+ВУРДЕЉА СОФИЈА
+ВУРДЕЉА ВАСА
+ВУРСТ ЈОВАНКА
+ВУРУНА БРАНКО
+ВУРУНА МАРИЈА
+ВУРУНИЋ ЗДРАВКО
+ЗАБЛЕЋАНСКИ ВЛАДА
+ЗАБРДАЦ МИЛАН
+ЗАБУНОВ ВЛАДИМИР
+ЗАДОР АНДРИЈА ДР ИУРЕ
+ЗАДРАВЕЦ ЈОСИП
+ЗАДРО НИКОЛА
+ЗАФИРОВИЋ БРАНКО
+ЗАГА МИЛАН
+ЗАГАЈЧАН КОСТА
+ЗАГОРЧИЋ ЖАРКО
+ЗАГОРЧИЋ ЖИВКО
+ЗАГОРЧИЋ ЖИВКО
+ЗАГОРЧИЋ ЂОРЂЕ
+ЗАГОРЧИЋ ЂОРЂЕ
+ЗАГОРЧИЋ ЂОРЂЕ
+ЗАГОРЧИЋ АЛЕКСАНДАР
+ЗАГОРЧИЋ АНГЕЛИНА
+ЗАГОРЧИЋ БОРИСЛАВ
+ЗАГОРЧИЋ БОРИСЛАВ
+ЗАГОРЧИЋ ДРАГОЉУБ
+ЗАГОРЧИЋ ГАВРА
+ЗАГОРЧИЋ ГЛИГОРИЈЕ
+ЗАГОРЧИЋ ГОРАН
+ЗАГОРЧИЋ ИЛИЈА
+ЗАГОРЧИЋ ИЛИЈА
+ЗАГОРЧИЋ ИРЕНА
+ЗАГОРЧИЋ ЈАСМИНА
+ЗАГОРЧИЋ ЈЕЛЕНА
+ЗАГОРЧИЋ ЈОВАН
+ЗАГОРЧИЋ ЈОВАН
+ЗАГОРЧИЋ КРИСТИНА
+ЗАГОРЧИЋ ЛАЗАР
+ЗАГОРЧИЋ ЛАЗАР
+ЗАГОРЧИЋ ЛАЗА
+ЗАГОРЧИЋ МАРИЈА
+ЗАГОРЧИЋ МИЛАН
+ЗАГОРЧИЋ МИЛАН
+ЗАГОРЧИЋ МИЛИЦА
+ЗАГОРЧИЋ МИЛИВОЈЕ
+ЗАГОРЧИЋ МИЛИВОЈ
+ЗАГОРЧИЋ МИЛИВОЈ
+ЗАГОРЧИЋ МИЛОШ
+ЗАГОРЧИЋ МИЛОСАВ
+ЗАГОРЧИЋ-ОРШОШ ДРАГАНА
+ЗАГОРЧИЋ ПАНТА
+ЗАГОРЧИЋ ПЕТАР
+ЗАГОРЧИЋ ПЕТАР
+ЗАГОРЧИЋ ПРЕДРАГ
+ЗАГОРЧИЋ РАДИВОЈ
+ЗАГОРЧИЋ РАДОСЛАВ
+ЗАГОРЧИЋ СЛОБОДАН
+ЗАГОРЧИЋ СТЕВАН
+ЗАГОРЧИЋ СВЕТИСЛАВ
+ЗАГОРЧИЋ СВЕТОЗАР
+ЗАГОРЧИЋ УРОШ
+ЗАГОРЧИЋ ВАСА
+ЗАГОРЧИЋ ВАСА
+ЗАГОРЧИЋ ВАСА
+ЗАГОРЧИЋ ВУКОСАВА
+ЗАГОРЧИЋ ЗИЈАХ
+ЗАГОРАЦ БОЖИЦА
+ЗАГОРАЦ ДИМИТРИЈЕ
+ЗАГОРАЦ ДУШАН
+ЗАГОРАЦ ИВАН
+ЗАГОРАЦ МАРИЈА
+ЗАГОРАЦ МИЛЕНА
+ЗАГОРАЦ МИЛИЦА
+ЗАГОРАЦ МИЛИЦА
+ЗАГОРАЦ НЕДЕЉКО
+ЗАГОРАЦ НИКОЛА
+ЗАГОРАЦ НИКОЛА
+ЗАГОРАЦ ОСТОЈА
+ЗАГОРАЦ ПЕТАР
+ЗАГОРАЦ РАЈКО
+ЗАГОРАЦ РУЖИЦА
+ЗАГОРАЦ СИМО
+ЗАГОРАЦ ВАЛКО
+ЗАГОРЕЦ ЈОСИП
+ЗАГОРИЦА ОЗРЕН
+ЗАГРАЂА БАЈИРАМ
+ЗАХАРИЈЕВИЋ БОГДАН
+ЗАХОРАИ ЈОВАН
+ЗАХОРЕЦ ЗУЗАНА
+ЗАХОРОДНИ АНТОН
+ЗАХОРОДНИ ИВАН
+ЗАИМОВИЋ МУХАРЕМ
+ЗАЈЗОВ ЈЕЛЕНА
+ЗАКАЊ АРПАД
+ЗАКАЊ ЛАЈОШ
+ЗАКАЊ МИРКО
+ЗАКАЊ-ТОБОЛКА ЕВА
+ЗАКИЋ ЂОРЂЕ
+ЗАКИЋ БОЖИДАР
+ЗАКИЋ ДИМИТРИЈЕ
+ЗАКИЋ ДОБРИВОЈ
+ЗАКИЋ ДОБРИВОЈ
+ЗАКИЋ ИВАН
+ЗАКИЋ МИЛАН
+ЗАКИЋ САВА
+ЗАКЛАН ЂУРА
+ЗАКЛАН МИЛАН
+ЗАКЛАН НЕГИЦА
+ЗАКЛАН РАНКО
+ЗАКЛАН СЛОБОДАН
+ЗАКЛАН СТАНИША
+ЗАКЛАН ТИХОМИР
+ЗАКЛАН ТОМИСЛАВ
+ЗАЛИС ГЕОРГИЈЕ
+ЗАЛИС ЈАНИС
+ЗАМАКЛАР ЗОРАН
+ЗАМОЛО ЕДУАРД
+ЗАМУРОВИЋ АЛЕКСАНДАР
+ЗАМУРОВИЋ БОЈАНА
+ЗАМУРОВИЋ КОСТА
+ЗАМУРОВИЋ МИЛЕНА
+ЗАМУРОВИЋ ОЛГА ДР
+ЗАМУРОВИЋ СТОЈАН
+ЗАНОВЈАК ПЕТЕР
+ЗАПУНИДИС ЛЕОНИДАС
+ЗАРЕЦКИ РОЗАЛИЈА
+ЗАРИЧНИ ВЕРИЦА
+ЗАРИЧНИ ВЕРОНИКА
+ЗАРИЋ ЂОРЂЕ
+ЗАРИЋ ЂОРЂЕ
+ЗАРИЋ ЂОРЂЕ
+ЗАРИЋ БОШКО
+ЗАРИЋ БОГДАН
+ЗАРИЋ БОРИСЛАВ
+ЗАРИЋ БРАНИСЛАВ
+ЗАРИЋ БРАТИСЛАВ
+ЗАРИЋ ДРАГА
+ЗАРИЋ ДРАГОСЛАВ
+ЗАРИЋ ДУШАН
+ЗАРИЋ ИВАНКА
+ЗАРИЋ ИВАН
+ЗАРИЋ ЈЕЛЕНА
+ЗАРИЋ ЈОВАН
+ЗАРИЋ ЈОВО
+ЗАРИЋ КАТИЦА
+ЗАРИЋ КАТИЦА
+ЗАРИЋ ЛАЗАР
+ЗАРИЋ МАРИЈА
+ЗАРИЋ МАРИЈА
+ЗАРИЋ МИКА
+ЗАРИЋ МИЛАДИН
+ЗАРИЋ МИЛАН
+ЗАРИЋ МИЛАН
+ЗАРИЋ МИЛЕНА
+ЗАРИЋ МИЛИЦА
+ЗАРИЋ МИЛИЦА
+ЗАРИЋ МИОДРАГ
+ЗАРИЋ МЛАДЕН
+ЗАРИЋ МОМЧИЛО
+ЗАРИЋ НИКОЛА
+ЗАРИЋ НИКОЛА
+ЗАРИЋ НОВАК
+ЗАРИЋ ПЕТАР
+ЗАРИЋ РАДМИЛА
+ЗАРИЋ РАЈО
+ЗАРИЋ САВА
+ЗАРИЋ СЛОБОДАН
+ЗАРИЋ СЛОБОДАН
+ЗАРИЋ СТАНИМИР
+ЗАРИЋ СТАНИСЛАВ
+ЗАРИЋ СТАНКА
+ЗАРИЋ СТЕВАН
+ЗАРИЋ ВЕСНА
+ЗАРИЋ ЗАРИЈА
+ЗАРИЋ ЗДРАВКО
+ЗАРИЋ ЗОРКА
+ЗАРИН СТЕВА
+ЗАРИНГЕР-ПИНТЕР НИКОЛА
+ЗАРКОВ КОЦА
+ЗАРЛИ КАТАРИНА
+ЗАРНОЦКИ ПАВЛЕ
+ЗАРОЛ АЛЕКСАНДАР
+ЗАРУБАЦ АЛЕКСАНДАР
+ЗАРУБАЦ БОРКА
+ЗАРУБАЦ РОМИЦА
+ЗАРУБИЦА БОЖАНА
+ЗАРУБИЦА РАДУН
+ЗАРУПСКИ ЂОРЂЕ
+ЗАРУПСКИ БРАНКО
+ЗАРУПСКИ МИЛОВАН
+ЗАТЕК МАРИЈА
+ЗАТЕЗАЛО ДУШАН ПРОФ
+ЗАТЕЗАЛО МИОДРАГ
+ЗАТЕЗАЛО ПЕТАР
+ЗАТЕЗАЛО ПРЕДРАГ
+ЗАВАРГО ЗОЛТАН
+ЗАВАРКО ШАНДОР
+ЗАВАРКО ШАНДОР
+ЗАВАРКО ШАНДОР
+ЗАВАРКО АНТАЛ
+ЗАВАРКО ЕСТЕРА
+ЗАВАРКО ИШТВАН
+ЗАВАРКО ЈАНОШ
+ЗАВАРКО КАРЛО
+ЗАВАРКО МАРИЈА
+ЗАВАРКО ВЕРА
+ЗАВАРОШ АНДРИЈА
+ЗАВИША ПЕТАР
+ЗАВИША РАНКО
+ЗАВИШИЋ ЦВИЈЕТА
+ЗАВИШИЋ МИЛАН
+ЗАВИШИЋ ПРЕДРАГ
+ЗАВИШИЋ ВИДА
+ЗАВИШИН МАРИЦА
+ЗАВИШИН МОМИР
+ЗАВИШИН САВА
+ЗАВРТАНИК ИВАН
+ЗАВРТАНИК ИВАН
+ЗАВРТАНИК МАРЈАН
+ЗАЗУЉАК СЛАВКО
+ЗБАЧНИК ЗОФИЈА
+ЗБИЉИЋ ДРАГОЉУБ
+ЗБУЋНОВИЋ ЈОВАНКА
+ЗБУЋНОВИЋ МИЛАН
+ЗБУЋНОВИЋ МИЛОШ
+ЗБУЋНОВИЋ МИТА
+ЗБУЋНОВИЋ ПАВЛЕ
+ЗБУЋНОВИЋ САВА
+ЗДЕЛАР СЛОБОДАН
+ЗДЕЊАК ЈОСИП
+ЗДИХАН МАРКО
+ЗДЈЕЛАР ДРАГАН
+ЗДЈЕЛАР МИРОСЛАВ
+ЗДЈЕЛАР ОЛГА
+ЗДЈЕЛАР ВИШЊА
+ЗДЈЕЛАР ЗДРАВКО
+ЗДЈЕЛАРИЋ БРАНКО
+ЗДЈЕЛАРИЋ ДРАГАН
+ЗДРАВЕСКИ ДУШАНКА
+ЗДРАВЕВСКИ ИЛИЈА
+ЗДРАВКОВИЋ АНЂЕЛИЈА
+ЗДРАВКОВИЋ БОГОЉУБ
+ЗДРАВКОВИЋ БОРИСЛАВ
+ЗДРАВКОВИЋ ДЕЈАН
+ЗДРАВКОВИЋ ДРАГОЉУБ
+ЗДРАВКОВИЋ ДУШАНКА
+ЗДРАВКОВИЋ ЈЕЛЕНА
+ЗДРАВКОВИЋ ЈОВАН
+ЗДРАВКОВИЋ МИХАЈЛО
+ЗДРАВКОВИЋ МИЛАН
+ЗДРАВКОВИЋ МИОДРАГ
+ЗДРАВКОВИЋ МИОДРАГ
+ЗДРАВКОВИЋ МИРОСЛАВ
+ЗДРАВКОВИЋ РАДЕ
+ЗДРАВКОВИЋ РАДЕ
+ЗДРАВКОВИЋ ТИХОМИР
+ЗДРАВКОВИЋ ТОМИСЛАВ
+ЗДРАВКОВИЋ ВЕРОЉУБ
+ЗДРАВКОВИЋ ВИДОЈЕ
+ЗДУПСКИ БОЖИДАР
+ЗЕЧАК ВОЈА
+ЗЕЧЕВИЋ ЂОРЂО
+ЗЕЧЕВИЋ АНГЕЛИНА
+ЗЕЧЕВИЋ ЦВИЈАН
+ЗЕЧЕВИЋ ДОБРИВОЈЕ ДР
+ЗЕЧЕВИЋ ДРАГАН ДР
+ЗЕЧЕВИЋ ДУШАН
+ЗЕЧЕВИЋ ГОЛУБ
+ЗЕЧЕВИЋ ГВОЗДЕН
+ЗЕЧЕВИЋ ХИМЗО
+ЗЕЧЕВИЋ КРСТО
+ЗЕЧЕВИЋ ЉУБИЦА
+ЗЕЧЕВИЋ ЉУБИНКО
+ЗЕЧЕВИЋ МАРИЈА
+ЗЕЧЕВИЋ МИЛАН
+ЗЕЧЕВИЋ МИЛАН
+ЗЕЧЕВИЋ МИЛИСАВ
+ЗЕЧЕВИЋ МИЛО
+ЗЕЧЕВИЋ МИОМИР
+ЗЕЧЕВИЋ МИРЈАНА
+ЗЕЧЕВИЋ НИКОЛА
+ЗЕЧЕВИЋ НИКОЛА
+ЗЕЧЕВИЋ НОВАК
+ЗЕЧЕВИЋ ПРЕДРАГ
+ЗЕЧЕВИЋ РАЈКО
+ЗЕЧЕВИЋ РИСТИВОЈЕ
+ЗЕЧЕВИЋ САВО
+ЗЕЧЕВИЋ СЛАВКО
+ЗЕЧЕВИЋ СЛОБОДАН
+ЗЕЧЕВИЋ СМИЉА
+ЗЕЧЕВИЋ СМИЉА
+ЗЕЧЕВИЋ СОФИЈА
+ЗЕЧЕВИЋ ВЕСНА
+ЗЕЧЕВИЋ ВЛАДИМИР
+ЗЕЧЕВИЋ ЗОРАН
+ЗЕЧИРОВИЋ ИЛМИ
+ЗЕЋИРИ ИСМАИЛ
+ЗЕЋИРИ ЗИЈА
+ЗЕЦ ЖЕЉКО
+ЗЕЦ ЂУРО
+ЗЕЦ БОШКО
+ЗЕЦ БОЖИДАР
+ЗЕЦ ДАНИЈЕЛ
+ЗЕЦ ДРАГАН
+ЗЕЦ ДРАГУТИН
+ЗЕЦ ДУШАН
+ЗЕЦ ДУШАН
+ЗЕЦ ЈОВАН
+ЗЕЦ МАРИЈА
+ЗЕЦ МАРИЈА
+ЗЕЦ МАРИНКО
+ЗЕЦ МАТА
+ЗЕЦ МИЛАН
+ЗЕЦ МИЛАН
+ЗЕЦ МИЛЕ ДИПЛ ИНГ
+ЗЕЦ МИЛОШ
+ЗЕЦ МИЛОШ
+ЗЕЦ МИЛОРАД
+ЗЕЦ МИЛОВАН
+ЗЕЦ НИКОЛА
+ЗЕЦ НИКОЛА
+ЗЕЦ РАДОВАН
+ЗЕЦ РАЈКО
+ЗЕЦ РАЈКО
+ЗЕЦ СТЕВАНИЈА
+ЗЕЦ ЗОРИЦА
+ЗЕДИ МИХАЉ
+ЗЕГА АЛЕКСАНДАР
+ЗЕГНАЛ РУДОЛФ
+ЗЕЈАК ИВАН
+ЗЕЈАК МИЛЕТА
+ЗЕЈАК РАДОШ
+ЗЕКА ГЗИМ
+ЗЕКА ХИРЗЕН
+ЗЕКА ИРМА
+ЗЕКАВИЦА ЈЕЛЕНА
+ЗЕКАВИЦА МИРЈАНА
+ЗЕКАВИЦА СЛАВИЦА
+ЗЕКАВИЦА СРЂАН
+ЗЕКИЋ МИРА
+ЗЕКОЊА ЗДРАВКО
+ЗЕКОВИЋ БОШКО
+ЗЕКОВИЋ ДРАГОМИР
+ЗЕКОВИЋ ГОРДАНА
+ЗЕКОВИЋ ХАНКИЈА
+ЗЕКОВИЋ ЈУЛИЈАНА
+ЗЕКОВИЋ ЛИЛА
+ЗЕКОВИЋ МИЛАДИН
+ЗЕКОВИЋ МИЛОШ
+ЗЕКОВИЋ ПЕТАР ДИЛП ОЕЦ
+ЗЕКОВИЋ ПЕТАР
+ЗЕКОВИЋ РАДЕНКО
+ЗЕКОВИЋ РИЗА
+ЗЕКОВИЋ ВАСО
+ЗЕКОВСКИ ЗОРИЦА
+ЗЕЛЕНБАБА РАТКО
+ЗЕЛЕНБАБА СТЕВАН
+ЗЕЛЕНХАСИЋ ЕМИР
+ЗЕЛЕЊАК АНДРИЈА
+ЗЕЛЕЊАК СТЈЕПАН
+ЗЕЛЕНКА ФРАЊА
+ЗЕЛЕНКА МАРИЈА
+ЗЕЛЕНКО ЕМА
+ЗЕЛЕНОВИЋ БОРИША
+ЗЕЛЕНОВИЋ ДРАГАН
+ЗЕЛЕНОВИЋ ЈЕЛЕНА
+ЗЕЛЕНОВИЋ ЈОВАН
+ЗЕЛЕНОВИЋ ЉУБИЦА
+ЗЕЛЕНОВИЋ ЉУБО
+ЗЕЛЕНОВИЋ МАРА
+ЗЕЛЕНОВИЋ МИЛАДИН
+ЗЕЛЕНОВИЋ МИЛАН
+ЗЕЛЕНОВИЋ МИЛИСАВ
+ЗЕЛЕНОВИЋ МИЛИСАВ
+ЗЕЛЕНОВИЋ ВЕРА
+ЗЕЛЕНОВИЋ ВЛАДИМИР
+ЗЕЛЕНСКИ АЛЕКСАНДАР
+ЗЕЛЕНСКИ АЛЕКСАНДАР
+ЗЕЛЕНСКИ ЈЕЛЕНА
+ЗЕЛЕНСКИ МИЛИЦА
+ЗЕЛИЋ ЂОРЂЕ
+ЗЕЛИЋ ИВАН
+ЗЕЛИЋ ЈАНОШ
+ЗЕЛИЋ ЈОВАН
+ЗЕЛИЋ ЛАЗАР
+ЗЕЛИЋ ЉУБА
+ЗЕЛИЋ ЉУБИЦА
+ЗЕЛИЋ ЉУБОМИР
+ЗЕЛИЋ МАРТА
+ЗЕЛИЋ ПАВЛЕ
+ЗЕЛИЋ ПЕРСИДА
+ЗЕЛИЋ ПЕТАР
+ЗЕЛИЋ РУЖИЦА
+ЗЕЛИЋ ВЛАДИМИР
+ЗЕЛИЋ ЗОЛТАН
+ЗЕЉАЈИЋ НИКОЛА ДР
+ЗЕЉИЋ СЛОБОДАН
+ЗЕЉКО МАРИЦА
+ЗЕЉКОВИЋ ЖЕЉКО
+ЗЕЉКОВИЋ ЖЕЉКО
+ЗЕЉКОВИЋ ЂУРО
+ЗЕЉКОВИЋ БОСА
+ЗЕЉКОВИЋ БРАНКО
+ЗЕЉКОВИЋ БРАНКО
+ЗЕЉКОВИЋ ДЕСИМИР
+ЗЕЉКОВИЋ ДРАГУТИН
+ЗЕЉКОВИЋ ДУШКО
+ЗЕЉКОВИЋ ИВАНКА
+ЗЕЉКОВИЋ ЈОВАН
+ЗЕЉКОВИЋ ЈОВО
+ЗЕЉКОВИЋ КРИСТИНА
+ЗЕЉКОВИЋ ЉИЉАНА
+ЗЕЉКОВИЋ МАРКО
+ЗЕЉКОВИЋ МИЛАН
+ЗЕЉКОВИЋ МИЛАН
+ЗЕЉКОВИЋ МИЛИЋ
+ЗЕЉКОВИЋ МИЉА
+ЗЕЉКОВИЋ МИЛОШ
+ЗЕЉКОВИЋ МИРКО
+ЗЕЉКОВИЋ ОСТОЈА
+ЗЕЉКОВИЋ РАДМИЛА
+ЗЕЉКОВИЋ РАНКО
+ЗЕЉКОВИЋ РАТКО
+ЗЕЉКОВИЋ СИМА
+ЗЕЉКОВИЋ СТЕВО
+ЗЕЉКОВИЋ СТОЈАНКА
+ЗЕЉКОВИЋ ТОДЕ
+ЗЕЉКОВИЋ ТОМА
+ЗЕЉКОВИЋ ВЕРА
+ЗЕЉКОВИЋ ВЛАЈКО
+ЗЕЉКОВИЋ ВУКАШИН
+ЗЕЉКОВИЋ ЗОРАН
+ЗЕЉКОВИЋ ЗОРАН
+ЗЕЉКОВИЋ ЗОРАН
+ЗЕМБЕРИ ФЕРЕНЦ
+ЗЕМБЕРИ ЈОСИП
+ЗЕМБЕРИ РОБЕРТ
+ЗЕМКО ШАНДОР
+ЗЕМЉАК ИВАН
+ЗЕМЉАНАЦ МИЛАНКА
+ЗЕНТАИ РОБЕРТ ДИПЛ ИНГ
+ЗЕНУН АВДО
+ЗЕНЗЕРОВИЋ ПАВЛЕ
+ЗЕРДО БОЖИДАР
+ЗЕРДО МИЛОРАД
+ЗЕРДО РАДОСЛАВ
+ЗЕРДО ЗЛАТА
+ЗЕРЕМСКИ ДАНИЛО
+ЗЕРЕМСКИ ДРАГАН
+ЗЕРЕМСКИ ДУШАН
+ЗЕРЕМСКИ КАМЕНКО
+ЗЕРЕМСКИ НАДА
+ЗЕРЕМСКИ НОВАК
+ЗЕРЕМСКИ ПЕТАР
+ЗЕРЕМСКИ ПЕТАР
+ЗЕРЕМСКИ ПИРОШКА
+ЗЕРЕМСКИ РАДОЈКА
+ЗЕРЕМСКИ РАНКО
+ЗЕРЕМСКИ РАТОМИР
+ЗЕРЕМСКИ РУЖИЦА
+ЗЕРЕМСКИ СЛАВИЦА
+ЗЕРЕМСКИ СТЕВАН
+ЗЕРЕМСКИ СТЕВАН
+ЗЕРЕМСКИ ТЕОФАН
+ЗЕРЕМСКИ ТОМИСЛАВ
+ЗЕРЕМСКИ ВЕРА
+ЗЕРЕМСКИ ВЛАДИМИР
+ЗЕРЕМСКИ ВУЈАДИН
+ЗЕЗДИН АЛЕКСАНДАР ДР
+ЗГОМБА ЛАЗАР
+ЗГОМБА ВЛАДИМИР
+ЗГОЊАНИН МИЛАН
+ЗГОЊАНИН РАДЕ
+ЗГОЊАНИН РУЖА
+ЗИДАР МАРИЈАН
+ЗИКОВ АНДРИЈА
+ЗИКОВ ДРАГОЉУБ
+ЗИМА ЧАБА
+ЗИМА РУДОЛФ
+ЗИМАЊИ ЈОВАН
+ЗИМОЊА ЉУБОМИР
+ЗИМОЊИЋ ВЛАДИМИР
+ЗИНАИЋ ЦВИЈЕТА
+ЗИНАИЋ УРОШ
+ЗИРАМОВ ЖАРКО
+ЗИРАМОВ ЈЕВРОСИМА
+ЗИРАМОВ ЈЕВРОСИМА
+ЗИРАМОВ САВА
+ЗИРАМОВ СТЕВАН
+ЗИРДУХ МАРИЈАН
+ЗИРОЈЕ ДРАГАН
+ЗИРОЈЕВИЋ АНЂА
+ЗИРОЈЕВИЋ ГОЈКО
+ЗИРОЈЕВИЋ МИЛЕНКО
+ЗИРОЈЕВИЋ МЛАДЕН
+ЗИРОЈЕВИЋ ОБРАД
+ЗИРОЈЕВИЋ ТОМИСЛАВ
+ЗИСИЈАДЕС МИРЈАНА
+ЗИВЛАК БРАНКО
+ЗИВЛАК ЈЕЛКА
+ЗИВЛАК ЈОВАН
+ЗИВЛАК ПЕРО
+ЗИВЛАК ПЕРО
+ЗИВЛАК ВЛАДИМИР
+ЗИВЛАКОВИЋ ДРАГОЉУБ
+ЗЈАЧИЋ ЂОРЂЕ
+ЗЈАЧИЋ ЂОРЂЕ
+ЗЈАЧИЋ БРАНКО
+ЗЈАЈИЋ КРСТАН
+ЗЈАЛИЋ ДРАГОМИР АДВОКАТ
+ЗЈАЛИЋ ДРАГОМИР
+ЗЈАЛИЋ МАРГИТА
+ЗЈЕВАЛО АНКИЦА
+ЗЛАТАНОВИЋ БЛАГОЈЕ
+ЗЛАТАНОВИЋ ЦВЕТКО
+ЗЛАТАНОВИЋ РАДИВОЈ
+ЗЛАТАНОВИЋ ТИХОМИР
+ЗЛАТАНОВИЋ ВЛАДИМИР
+ЗЛАТАНОВСКИ ДИМИТРИЈЕ
+ЗЛАТАНОВСКИ РУСЕ
+ЗЛАТАР МИЛЕНКО
+ЗЛАТАРЕВ ДУШАН
+ЗЛАТАРЕВ ДУШАН
+ЗЛАТАРЕВ ВЕРИЦА
+ЗЛАТАРИЋ МОМЧИЛО
+ЗЛАТАРИЋ ВОЈИСЛАВ
+ЗЛАТАРОВ МИЛОВАН
+ЗЛАТЕК ЛАЗАР
+ЗЛАТИЧАНИН ТОШО
+ЗЛАТИЋ МИЛОРАД
+ЗЛАТИЋ РАДОСЛАВ
+ЗЛАТИЋ ВЕСЕЛИН
+ЗЛАТКОВИЋ БОШКО
+ЗЛАТКОВИЋ БОРИСЛАВ
+ЗЛАТКОВИЋ ЈЕЛИЦА
+ЗЛАТКОВИЋ-ЈОВИЋ ОЛГИЦА
+ЗЛАТКОВИЋ КАТАРИНА
+ЗЛАТКОВИЋ МЕЛАНИЈА
+ЗЛАТКОВИЋ РУСОМИР
+ЗЛАТКОВИЋ СЛАЂАНА
+ЗЛАТКОВИЋ СЛАВКО
+ЗЛАТОНИЋ СЛАВКО
+ЗЛАТОВЕРХОВНИКОВ ЂОРЂЕ
+ЗЛАТОВИЋ ЈЕЛИСАВЕТА
+ЗЛАТОВИЋ НИКОЛА
+ЗЛИЧИЋ АЛЕКСАНДРА
+ЗЛИЧИЋ ДАРИНКА
+ЗЛИЧИЋ ДИМИТРИЈЕ
+ЗЛИЧИЋ ДУШАНКА ДИПЛ ИНГ
+ЗЛИЧИЋ ДУШАН
+ЗЛИЧИЋ ИВАН
+ЗЛИЧИЋ КАТИЦА
+ЗЛИЧИЋ ЉУБИЦА
+ЗЛИЧИЋ МИЛАН
+ЗЛИЧИЋ МИЛОРАД
+ЗЛИЧИЋ РАДОВАН
+ЗЛИЧИЋ ВАСИЉКА
+ЗЛОЈУТРО МИЋО
+ЗЛОЈУТРО МИХАЈЛО
+ЗЛОЈУТРО СТЕВО
+ЗЛОЈУТРО ВАСА
+ЗЛОКОЛИЦА ЖИВКО
+ЗЛОКОЛИЦА ЂОРЂЕ
+ЗЛОКОЛИЦА БОШКО
+ЗЛОКОЛИЦА ЈОРГОВАНКА
+ЗЛОКОЛИЦА ЈОВАН
+ЗЛОКОЛИЦА ЈОВАН
+ЗЛОКОЛИЦА ЛАЗАР
+ЗЛОКОЛИЦА ЉУБИЦА
+ЗЛОКОЛИЦА МАРКО
+ЗЛОКОЛИЦА МИЛОШ
+ЗЛОКОЛИЦА МИОДРАГ
+ЗЛОКОЛИЦА НИКОЛА
+ЗЛОКОЛИЦА НОВАК
+ЗЛОКОЛИЦА СЛАВКО
+ЗЛОКОЛИЦА СЛАВНА
+ЗЛОКОЛИЦА СТЕВАН
+ЗЛОКОЛИЦА СТЕВАН
+ЗЛОКОЛИЦА ТОДОР
+ЗЛОКОЛИЦА ВЛАДА
+ЗЛОКОЛИЦА ЗЛАТА
+ЗМИЈАЊАЦ МИЛАН
+ЗМРЗЛИКАР МИРЈАНА
+ЗОЋЕВИЋ МАРИЈА
+ЗОЋЕВИЋ ВИТОР
+ЗОБЕНИЦА БИЉАНА
+ЗОБЕНИЦА ДАНИЦА
+ЗОБЕНИЦА МИРЈАНА
+ЗОГОВИЋ ВУК
+ЗОКИ СТЕВАН
+ЗОКИЋ РАДОВАН
+ЗОЛНАИ ТОМАШ
+ЗОЛЊАН ПАВЕЛ
+ЗОЛОТИЋ КАТАРИНА
+ЗОЛОТИЋ ВЕЛИНКА
+ЗОЛОТИЋ ВУКОСАВ
+ЗОМБОРАЦ ЗВОНКО
+ЗОНА ДИВНА
+ЗОНАИ ПАЛ
+ЗОНИЋ ЉУБАН
+ЗОНИЋ РИЗАХ
+ЗОРАД МИХАЉ
+ЗОРАД СТЕВАН
+ЗОРАЈА ЂУРА
+ЗОРАЈА ДРАГАН
+ЗОРАЈА ИГЊАТ
+ЗОРАЈА ПЕТАР
+ЗОРАЈА СТЕВАН
+ЗОРАНИЋ СЛАВИЦА
+ЗОРАНОВИЋ ДУШАНКА
+ЗОРАНОВИЋ ИЛИЈА
+ЗОРАНОВИЋ ЛАЗАР
+ЗОРАНОВИЋ ЛАЗАР
+ЗОРАНОВИЋ МИЛАН
+ЗОРАНОВИЋ МИОДРАГ
+ЗОРАНОВИЋ СОФИЈА
+ЗОРАНОВИЋ СПАСА
+ЗОРАНОВИЋ СТЕВАН
+ЗОРАНОВИЋ СВЕТЛАНА
+ЗОРИЧИЋ ДРАГОЉУБ
+ЗОРИЋ ЧЕДО
+ЗОРИЋ ЂОРЂЕ
+ЗОРИЋ ЂОРЂЕ
+ЗОРИЋ ЂУРЂИЦА
+ЗОРИЋ ЂУРИЦА
+ЗОРИЋ ЂУРО
+ЗОРИЋ ЂУРО
+ЗОРИЋ ЂУРО
+ЗОРИЋ АНЂЕЛКА
+ЗОРИЋ БОШКО
+ЗОРИЋ БОЖИДАР
+ЗОРИЋ БОГДАН
+ЗОРИЋ БОГОЉУБ
+ЗОРИЋ БОРИВОЈ
+ЗОРИЋ БОРО
+ЗОРИЋ БОРО
+ЗОРИЋ БРАНКА
+ЗОРИЋ БРАНКО
+ЗОРИЋ ДАРИНКА
+ЗОРИЋ ДАРКО
+ЗОРИЋ ДРАГАН
+ЗОРИЋ ДРАГАН
+ЗОРИЋ ДРАГАН
+ЗОРИЋ ДРАГОЉУБ
+ЗОРИЋ ДУШАНКА
+ЗОРИЋ ДУШАН
+ЗОРИЋ ДУШАН
+ЗОРИЋ-ГАРДИНОВАЧКИ МАРИЈАНА
+ЗОРИЋ ГАВРИЛО
+ЗОРИЋ ГОРДАНА
+ЗОРИЋ ЈЕЛИСАВЕТА
+ЗОРИЋ ЈЕЛИСАВЕТА
+ЗОРИЋ ЈОВАН
+ЗОРИЋ КАТА
+ЗОРИЋ КЛАРА
+ЗОРИЋ КОСТАДИН
+ЗОРИЋ КОВИЉКА
+ЗОРИЋ ЛАЗАР
+ЗОРИЋ ЛУКА
+ЗОРИЋ МАРИЈА
+ЗОРИЋ МАРКО
+ЗОРИЋ МИКА
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛАН
+ЗОРИЋ МИЛЕВА
+ЗОРИЋ МИЛИЦА
+ЗОРИЋ МИЛИЦА
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИЛОРАД
+ЗОРИЋ МИОДРАГ
+ЗОРИЋ МИРКО ИНГ
+ЗОРИЋ МИРКО
+ЗОРИЋ МИРОСЛАВ
+ЗОРИЋ НИКОЛА
+ЗОРИЋ НИКОЛА
+ЗОРИЋ НИКОЛА
+ЗОРИЋ ПАВЛЕ
+ЗОРИЋ ПЕРА
+ЗОРИЋ ПЕТАР
+ЗОРИЋ ПЕТКО
+ЗОРИЋ РАДЕ
+ЗОРИЋ РАДЕ
+ЗОРИЋ САВА
+ЗОРИЋ СИМА
+ЗОРИЋ СИМЕОН
+ЗОРИЋ СЛАВИЦА
+ЗОРИЋ СЛОБОДАН
+ЗОРИЋ СНЕЖАНА
+ЗОРИЋ СОКА
+ЗОРИЋ СПАСОЈЕ
+ЗОРИЋ СТАНКО
+ЗОРИЋ СТОЈАН
+ЗОРИЋ СВЕТКО
+ЗОРИЋ СВЕТКО
+ЗОРИЋ ВАСИЛИЈЕ
+ЗОРИЋ ВЕЛИМИР
+ЗОРИЋ ВЕЉКО ДИПЛ ИНГ
+ЗОРИЋ ВЛАДИСЛАВ
+ЗОРИЋ ВЛАДО
+ЗОРИЋ ВОЈИН
+ЗОРИЋ ВОЈКА
+ЗОРИЋ ЗДРАВКА
+ЗОРИЋ ЗОРИЦА
+ЗОРИЋ ЗВОНИМИР
+ЗОРИЦА АЦО
+ЗОРИЦА ДУШАН
+ЗОРИЦА МАРКО
+ЗОРИЈАН ЕМИЛ
+ЗОРЈАН БРАНКО
+ЗОРЈАН ЈАНКО
+ЗОРКИЋ ЖИВКО
+ЗОРНИЈА БРАНКО
+ЗОРНИЈА ВЛАДИСЛАВ
+ЗОРНИК АЛДА
+ЗОРЗИЋ МИЛОРАД
+ЗОТИН ЂОРЂЕ
+ЗОТИН САВА
+ЗОТИН СЛАВОЉУБ
+ЗОТОВИЋ АЛЕКСАНДАР
+ЗОТОВИЋ ОБРАД
+ЗОВИЋ АНА
+ЗОВИЋ ДУШАН
+ЗОВИЋ МИЛОВАН
+ЗОВИЋ МИРОСЛАВ
+ЗОВКО ШИМУН
+ЗОВКО ИЛИЈА
+ЗОВКО ЈОСИП
+ЗОВКО МАНДА
+ЗОВКО МАРЈАН
+ЗОЗУК ЉУБОМИР
+ЗРИЛИЋ НАДА
+ЗРИЛИЋ ВЕРА
+ЗРИЛИЋ ВЛАДИМИР ДР ЛЕКАР
+ЗРНИЋ ШПИРО
+ЗРНИЋ ЂОРЂЕ
+ЗРНИЋ ЂУРО
+ЗРНИЋ ЂУРО
+ЗРНИЋ БРАНКО
+ЗРНИЋ ДУШАН
+ЗРНИЋ ГОЈКО
+ЗРНИЋ ГОЈКО
+ЗРНИЋ ЈОВАН
+ЗРНИЋ ЛАЗАР
+ЗРНИЋ МАЈА
+ЗРНИЋ МАЛИНА
+ЗРНИЋ МАНЕ ДИПЛ ИНГ
+ЗРНИЋ МАНЕ
+ЗРНИЋ МАРИНКО
+ЗРНИЋ МИЛАН
+ЗРНИЋ МИЛАН
+ЗРНИЋ МИЛОШ
+ЗРНИЋ МИРЈАНА
+ЗРНИЋ МИРОЉУБ
+ЗРНИЋ НЕНАД
+ЗРНИЋ НИКОЛА
+ЗРНИЋ ПЕТАР
+ЗРНИЋ СИНИША
+ЗРНИЋ СЛОБОДАН
+ЗРНИЋ СРЂАН
+ЗРНИЋ ВЛАДО
+ЗРНИЋ ЗОРАН
+ЗРНИЋ ЗОРАН
+ЗУБАЦ ЧЕДОМИР
+ЗУБАЦ ДИВНА
+ЗУБАЦ МИЛАН
+ЗУБАЦ ПЕРО
+ЗУБАК СТЕВАН
+ЗУБАН ПЕТАР
+ЗУБАНОВ БРАНИСЛАВ
+ЗУБАНОВ ВЛАДИМИР
+ЗУБЕР ДУШАН
+ЗУБЕР МАРКО
+ЗУБЕРЕЦ ЈОВАН
+ЗУБИЋ ЖАРКО
+ЗУБИЋ ЂУРЂА
+ЗУБИЋ БИЉАНА
+ЗУБИЋ БОЖО
+ЗУБИЋ БРАНИСЛАВА
+ЗУБИЋ ДРАГО
+ЗУБИЋ ЈОВО
+ЗУБИЋ ЛАЗО
+ЗУБИЋ ПЕТАР
+ЗУБИЋ РАДОСЛАВ
+ЗУБИЋ РАТКО
+ЗУБИЋ ВЕРА
+ЗУБИЋ ВЕРКА
+ЗУБОВ АДЕЛА
+ЗУБОВИЋ АНДРИЈА
+ЗУБОВИЋ МИРЈАНА
+ЗУБОВИЋ СЛОБОДАН
+ЗУБОВИЋ СТЕВАН
+ЗУЦАЈИЋ ЈЕЛЕНА
+ЗУКИЋ ГОЈКО
+ЗУКОВИЋ МИЛИНКО
+ЗУЛИЋ АГНЕШ
+ЗУМБУЛОВИЋ ПРЕДРАГ
+ЗУПАНЧИЋ ФРАНЦ
+ЗУПАНЧИЋ ИВАН
+ЗУПАНЦ ДАРКО
+ЗУПАНЦ РАЈКО
+ЗУПКОВ ЂУРА
+ЗУПКОВ МИРОСЛАВ
+ЗУРКОВИЋ ЂОРЂЕ
+ЗУРКОВИЋ АЛЕКСАНДАР
+ЗУРКОВИЋ БОГОЉУБ
+ЗУРКОВИЋ ДУШАН
+ЗУРКОВИЋ ГАВРА
+ЗУРКОВИЋ МИРЈАНА
+ЗУРКОВИЋ НИКОЛА
+ЗУРКОВИЋ РАДОСЛАВ
+ЗУРКОВИЋ РУЖА
+ЗУРКОВИЋ ВЕРА
+ЗУРОВАЦ ЈОВО
+ЗУРОВАЦ ВЕЉКО
+ЗУВИЋ ОБРАД
+ЗУЗАКУ РЕЏЕП
+ЗВАРА ЈУЛИЈА
+ЗВЕКАНОВИЋ ЈОСИП
+ЗВЕКИЋ ДУШАНКА
+ЗВЕКИЋ ЈУГОСЛАВ
+ЗВЕКИЋ МАРИЈА
+ЗВЕКИЋ МИЛАН
+ЗВЕКИЋ НАДА
+ЗВЕКИЋ ПЕТАР
+ЗВЕКИЋ СИНИША
+ЗВЕКИЋ ВЕЛИМИР
+ЗВЕРЖИНА ЈОСИП
+ЗВЕЗДАНОВИЋ БОРА
+ЗВЕЗДАНОВИЋ ТОМА
+ЗВЕЗДИН ЈОВАНКА
+ЗВИЈЕР МИЛОРАД
+ЗВИЗДИЋ МЕХМЕД
+ЗВОШЕЦ КЛАРА
+ЗВОНАРЕВИЋ КАТА
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt
new file mode 100644
index 0000000..c63d8d3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Simplified_Chinese.txt
@@ -0,0 +1,10902 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+虹如
+丁一贤
+丁川伟
+丁心岚
+丁弘光
+丁任法
+丁志宏
+丁幸姬
+丁俊夫
+丁建文
+丁映纯
+丁羿文
+丁哲
+丁伟民
+丁国梅
+丁淑玲
+丁苏南
+丁毓彦
+丁雍哲
+丁绮慧
+丁慧岚
+丁璟枫
+丁誉琳
+丁鋐镒
+卜正伦
+于弋翔
+于秀美
+于秉弘
+于清华
+于殿圣
+山杰
+尹寸欣
+尹居才
+尹振威
+尹瑞丰
+尹晓恩
+仇家琪
+孔守中
+孔智杰
+孔繁霖
+尤心瑜
+尤吟文
+尤良
+尤明仲
+尤俊响
+尤星策
+尤伟仕
+尤净缨
+尤钦乐
+尤盟贵
+尤宽宏
+尤韵琇
+尤莳萱
+文志忠
+文真花
+文仪咏
+方士铭
+方天中
+方文锋
+方永清
+方汝育
+方孝君
+方志明
+方秀敏
+方佳俊
+方幸宜
+方怡洁
+方长扬
+方俊雄
+方奕斌
+方建智
+方彦程
+方映芬
+方柏钦
+方秋锦
+方若珊
+方重凯
+方晋德
+方健刚
+方彩宜
+方淑芬
+方淑儒
+方凯玲
+方景弘
+方策民
+方雅琪
+方爱珍
+方瑞远
+方裕钦
+方嘉兴
+方翠鸿
+方慧琴
+方静宜
+方琼仪
+方丽雅
+方钟锋
+方菀萍
+毛文勇
+毛佩娟
+毛彦乔
+毛淑芬
+毛汉梅
+水祥苓
+牛贵贤
+王一珍
+王乃俐
+王力平
+王上维
+王士忠
+王士荣
+王士豪
+王大昌
+王子成
+王子英
+王子熙
+王小芬
+王中平
+王中憓
+王尹圣
+王仁君
+王仁宗
+王仁舜
+王元助
+王元兴
+王友志
+王天文
+王少文
+王心忠
+王心怡
+王心智
+王文平
+王文君
+王文志
+王文杰
+王文郁
+王文琪
+王文瑶
+王文鸿
+王方怡
+王月婷
+王世宇
+王世明
+王世杰
+王世广
+王丕铨
+王可欣
+王巧莹
+王弘毅
+王正威
+王正达
+王永仁
+王永升
+王永诚
+王玉文
+王玉珠
+王玉云
+王生勋
+王立梅
+王立玮
+王仲琦
+王光麃
+王吉佳
+王如玉
+王宇清
+王安凯
+王旭全
+王有权
+王自强
+王佐辅
+王伯逸
+王利生
+王君瑞
+王妙红
+王孝君
+王宏仁
+王宏哲
+王宏嘉
+王序纶
+王志仁
+王志文
+王志弘
+王志呈
+王志忠
+王志峰
+王志伟
+王志清
+王志钦
+王志诚
+王志豪
+王志铭
+王杏如
+王秀云
+王秀芬
+王秀珠
+王秀雯
+王秀椿
+王育德
+王谷神
+王亚志
+王依韵
+王佳珍
+王佳琪
+王佩
+王佩音
+王佩诗
+王坤贤
+王孟谦
+王宗棋
+王宜彦
+王冈陵
+王念慈
+王怡仁
+王怡文
+王怡方
+王怡珍
+王怡清
+王怡婷
+王怡晴
+王怡雅
+王怡苹
+王承舜
+王明仁
+王明珊
+王明富
+王昀珩
+王欣之
+王欣慧
+王泓翔
+王治邦
+王玫桦
+王芳慧
+王邵郁
+王金华
+王雨湘
+王亭钧
+王信仁
+王信泰
+王信富
+王信裕
+王俊仁
+王俊立
+王俊彦
+王俊清
+王俊杰
+王俊凯
+王俊凯
+王俊富
+王俊钦
+王俊超
+王俊道
+王俊龙
+王俞文
+王冠伦
+王冠然
+王则胜
+王劲凌
+王品淇
+王奕君
+王奕钧
+王姿今
+王姿萍
+王威能
+王宣卿
+王建山
+王建文
+王建政
+王建凯
+王建钦
+王建雄
+王建斌
+王彦能
+王彦智
+王律之
+王思捷
+王思洁
+王政治
+王政权
+王昭人
+王昭淑
+王昭懿
+王星皓
+王昱凯
+王昱苹
+王柏欣
+王柏尧
+王柏钧
+王派轩
+王为蒨
+王玲英
+王盈心
+王盈杰
+王盈雅
+王祈钧
+王秋惠
+王纪
+王美玉
+王美玲
+王美淑
+王美惠
+王美雯
+王美懿
+王致棠
+王若筑
+王英文
+王英蓉
+王衍易
+王贞懿
+王郁欣
+王郁婷
+王郁菁
+王郁珺
+王韦翔
+王修兰
+王哲聪
+王家伟
+王家瑜
+王展玮
+王悦如
+王振宇
+王振浩
+王时蔚
+王桂岑
+王海天
+王浩伦
+王佩伦
+王佩璇
+王素卿
+王纯美
+王茹馨
+王伟民
+王伟州
+王伟军
+王伟德
+王健民
+王健勋
+王国
+王国彦
+王国隆
+王国龙
+王执信
+王培桦
+王婉瑜
+王崇明
+王昆龙
+王彩霞
+王惇慧
+王启宗
+王启樵
+王敏贞
+王敏铨
+王晨晔
+王梅兰
+王淳慧
+王清鸿
+王淑怡
+王淑冠
+王淑眉
+王淑娟
+王淑媛
+王淑雯
+王淑慧
+王淑韵
+王净莹
+王祥宇
+王祥霖
+王绍真
+王莉汶
+王莉雯
+王雪如
+王杰立
+王凯弘
+王凯怡
+王凯蒂
+王胜弘
+王胜雄
+王博文
+王博修
+王尧弘
+王婷仪
+王富昌
+王复辉
+王惠君
+王惠玲
+王惠敏
+王惠慧
+王敦正
+王晴姿
+王景元
+王景泉
+王智弘
+王智立
+王智益
+王智鸣
+王智龙
+王朝永
+王朝键
+王钦帝
+王湘云
+王琪
+王琦枚
+王皓正
+王紫雯
+王翔宁
+王舒瑜
+王舜生
+王菁兰
+王咏慧
+王贵龙
+王逸修
+王进鸿
+王闵韦
+王雅伶
+王雅姿
+王雅贞
+王雅惠
+王雅雯
+王雅仪
+王雅慧
+王雯
+王云生
+王顺鸿
+王勤善
+王意惠
+王慈庆
+王爱嘉
+王敬翔
+王新慧
+王榆富
+王毓菁
+王毓煇
+王照兴
+王瑞吟
+王瑞烽
+王瑞云
+王瑞颐
+王瑞芗
+王盟仁
+王棱钧
+王圣
+王圣尤
+王圣淳
+王圣棋
+王圣维
+王圣玮
+王裕正
+王裕智
+王诗郁
+王诗婷
+王诗雅
+王诗馨
+王道仁
+王钜翔
+王靖雯
+王鼎允
+王嘉君
+王嘉郁
+王嘉琪
+王嘉农
+王嘉慧
+王嘉兴
+王嘉龄
+王彰懋
+王荣发
+王汉祥
+王睿君
+王硕庆
+王福祥
+王维如
+王维雯
+王维灿
+王翠华
+王苍龙
+王豪杰
+王铭梅
+王铭鸿
+王凤宜
+王仪颖
+王德皓
+王庆堂
+王慧君
+王慧英
+王慧凯
+王慧雯
+王慧静
+王标钦
+王瑾瑜
+王辉铭
+王儒隆
+王宪盟
+王晓音
+王晓雯
+王晓玮
+王燕强
+王兴邦
+王蕙容
+王锡禄
+王锦慧
+王静怡
+王静琪
+王静慧
+王爵暐
+王臆铃
+王薇媛
+王谦维
+王鸿志
+王鸿钧
+王礼谦
+王宠惠
+王瀚基
+王琼佩
+王琼瑶
+王绘岚
+王证雄
+王韵淑
+王鹏
+王麒钧
+王丽芬
+王丽淑
+王丽琦
+王丽雯
+王麓斯
+王宝龙
+王继尧
+王耀晖
+王耀庆
+王耀铎
+王钟铭
+王馨敏
+王馨苹
+王龄梓
+王俪颖
+王樱娟
+王跃霖
+王显卉
+王芊雯
+王姵雯
+王浟美
+王琇姿
+王翊萤
+王棨德
+王琮玮
+王琡雯
+王嫆棻
+王玮铃
+王筱婷
+王筱萱
+王钰欣
+王钰植
+王蓁仪
+王薏雯
+王嬿淑
+世潓静
+丘真绮
+冉兆珍
+包志文
+包宫维
+古一真
+古月娥
+古玉凤
+古秀铃
+古佩玉
+古承弘
+古明晟
+古俊纲
+古英山
+古桂菊
+古惟铭
+古莉霜
+古智伟
+古云仁
+古诗仪
+古学涵
+古俶绮
+司顺安
+史先鸿
+史明原
+史国福
+史圣鸿
+史曜彰
+左宗元
+左蓌
+甘永裕
+甘孟龙
+甘政弘
+甘惠华
+甘霈霖
+田世贤
+田兆琪
+田沐恩
+田佩灏
+田怡
+田芳茹
+田英志
+田佩促
+田淑君
+田钦文
+田嘉玲
+田晓钧
+田璧菀
+申志斌
+申富鑫
+白大尹
+白全成
+白岑怡
+白佳渝
+白宜铮
+白欣松
+白玲慈
+白振源
+白耿行
+白淑瑜
+白喜文
+白舜元
+白煌麒
+白荣修
+白静如
+白丽娜
+石乃如
+石世名
+石玉凤
+石旭生
+石育玟
+石佳蓉
+石宗仁
+石明周
+石芳珊
+石美玲
+石峻平
+石纯绮
+石彩慧
+石杰宇
+石朝安
+石雅惠
+石庆和
+石锦航
+石馥瑄
+石玮静
+伍世扬
+伍秀蓉
+伍建文
+伍家谊
+伍健鹏
+伍碧玲
+任才俊
+任君敏
+任俊儒
+任纯慧
+任新兰
+任筱清
+危明康
+向西阳
+向德容
+安志伟
+成丹玲
+曲昌隆
+朱乙真
+朱心怡
+朱文碧
+朱世钧
+朱正文
+朱玉汶
+朱亦丹
+朱百晟
+朱妍如
+朱希振
+朱志洋
+朱沛怡
+朱育佑
+朱育莹
+朱佳琪
+朱宗蔚
+朱念英
+朱怡臻
+朱东应
+朱秉慧
+朱邱明
+朱俊祥
+朱俊龙
+朱奎州
+朱建泰
+朱彦儒
+朱政哲
+朱柏苍
+朱珍慧
+朱秋慧
+朱若梅
+朱郁庭
+朱原宏
+朱家正
+朱家欣
+朱家慧
+朱容练
+朱峰谊
+朱时彦
+朱书贤
+朱殷廷
+朱佩仪
+朱祐呈
+朱纯莹
+朱伟杰
+朱健诚
+朱培萱
+朱康铭
+朱敏道
+朱淑惠
+朱陈启源
+朱寓理
+朱朝麟
+朱咏联
+朱雅铃
+朱嗣芬
+朱瑞勇
+朱达明
+朱荣宏
+朱福山
+朱凤薇
+朱慧真
+朱辉耀
+朱晓晴
+朱静文
+朱璇尹
+朱丽婷
+朱芮宜
+朱琬蓁
+次兰英
+江中健
+江天授
+江文松
+江文琼
+江世华
+江正杰
+江玉卉
+江立峰
+江吉祥
+江成斌
+江呈阳
+江志宏
+江志隆
+江秀玲
+江育霆
+江佳芳
+江佳纯
+江佳霖
+江佩玲
+江佩萦
+江协勇
+江孟芝
+江孟泽
+江宗哲
+江宜芳
+江宜桦
+江岩达
+江忠远
+江怡萱
+江怡禛
+江昌鸿
+江明松
+江明书
+江明璋
+江明艺
+江东懋
+江欣容
+江玩萩
+江芝敏
+江长寿
+江信东
+江俊明
+江俊亿
+江俊兴
+江品仪
+江威德
+江建铭
+江彦辉
+江恬
+江政儒
+江昭贤
+江柏苇
+江玲慧
+江纪明
+江美慧
+江英信
+江衍龙
+江风远
+江家铭
+江振宇
+江书莹
+江佩宙
+江纯玫
+江健成
+江国庆
+江寅甫
+江启仲
+江条均
+江淑贞
+江盛龙
+江凯洁
+江惠华
+江智维
+江逸安
+江雅文
+江雅惠
+江传江
+江瑞祥
+江裕国
+江嘉伦
+江榕樱
+江翠芳
+江宽慈
+江慧芳
+江慕屏
+江忆雯
+江颖明
+江锦辉
+江蕾
+江丰良
+江丽娟
+江劭伦
+江媞
+江柽皇
+池泰宏
+牟昕
+艾青蓉
+何大新
+何仁田
+何天恩
+何文文
+何文萱
+何世雄
+何永琳
+何玉洁
+何亘彬
+何光棂
+何旭平
+何君萍
+何志浩
+何沛熙
+何育杰
+何享蓉
+何佳南
+何佳真
+何佳融
+何佩芝
+何佩纯
+何其泽
+何姗蓉
+何孟贤
+何季秦
+何宗彬
+何宗熹
+何宗禧
+何宜倩
+何宜璇
+何岳珈
+何怡君
+何承仲
+何易展
+何明宗
+何明书
+何明颖
+何升儒
+何松瑶
+何欣轩
+何秉欣
+何芷瑄
+何雨雯
+何信宗
+何俊廷
+何俊达
+何俊贤
+何冠霖
+何威德
+何建乐
+何彦驹
+何思颖
+何政翰
+何昭贤
+何炳贤
+何秋萱
+何美玲
+何若瑜
+何香叶
+何家菁
+何峻杰
+何振维
+何浚铭
+何素君
+何健维
+何国晟
+何崇维
+何敏菁
+何清龙
+何淑婷
+何涵
+何胜合
+何惠君
+何惠钰
+何舒岚
+何逸然
+何雅琪
+何意莹
+何瑞美
+何萱璇
+何嘉展
+何荣文
+何维耕
+何铭宏
+何庆兴
+何慧仪
+何学厚
+何晓盈
+何燕屏
+何锦题
+何静仪
+何织
+何丽君
+何旻霜
+何翊绮
+余子铭
+余心农
+余文裕
+余弘伟
+余吉祥
+余伶
+余志龙
+余迅
+余佳音
+余佳兴
+余佩娟
+余坪芳
+余孟霏
+余宗儒
+余宛儒
+余忠灯
+余昌翰
+余明娟
+余明泽
+余东晓
+余法昌
+余金典
+余信伟
+余俊渊
+余俊儒
+余劲毅
+余帝庆
+余彦霖
+余政隆
+余星柔
+余盈锋
+余若帆
+余凌昌
+余家莹
+余泰男
+余素兰
+余国安
+余婉萍
+余晨华
+余盛钦
+余惠文
+余智杰
+余雅淑
+余慈宴
+余瑞萍
+余嘉峰
+余福浩
+余齐威
+余宪宗
+余谐
+余谢辉
+余丽琴
+余琬瑜
+利秀兰
+利德弦
+吴乃元
+吴千慧
+吴大维
+吴子豪
+吴中宏
+吴仁佑
+吴仁贵
+吴元平
+吴元嫈
+吴少钧
+吴心惠
+吴文玉
+吴文怡
+吴文益
+吴文杰
+吴文发
+吴文铃
+吴文毅
+吴文斌
+吴火山
+吴世伟
+吴世达
+吴仕强
+吴仞一
+吴平和
+吴必胜
+吴正奇
+吴正华
+吴永昌
+吴永裕
+吴玉吟
+吴玉茹
+吴玉景
+吴玉蓉
+吴立民
+吴立勤
+吴伊苹
+吴仲泂
+吴兆文
+吴吉龙
+吴如楦
+吴安邦
+吴旭泰
+吴至仁
+吴行中
+吴伶丽
+吴君育
+吴妙伦
+吴宏仁
+吴宏基
+吴希祖
+吴志宏
+吴志恒
+吴志伟
+吴志汉
+吴志龙
+吴杏旋
+吴沛晃
+吴汶汶
+吴秀玲
+吴秀纹
+吴秀鹃
+吴育宗
+吴育硕
+吴育霖
+吴亚欣
+吴依妮
+吴依蓓
+吴佳和
+吴佳芳
+吴佳南
+吴佳玲
+吴佳玲
+吴佳倩
+吴佳容
+吴佳真
+吴佳惠
+吴佳蓉
+吴佳憬
+吴佳桦
+吴佳颖
+吴佳蕙
+吴佳静
+吴佳鸿
+吴佩君
+吴佩芳
+吴佩城
+吴佩珊
+吴佩玲
+吴佩娥
+吴佩纯
+吴佩蓉
+吴佩儒
+吴佩谕
+吴佩蓁
+吴侑庭
+吴其霖
+吴函蓁
+吴叔镇
+吴坤祐
+吴坤鸿
+吴奇哲
+吴奇龙
+吴孟宗
+吴孟芬
+吴孟贞
+吴孟娟
+吴孟茹
+吴孟蓉
+吴孟宪
+吴孟锡
+吴孟荞
+吴季瑾
+吴宗岱
+吴宗祈
+吴宗桓
+吴宗隆
+吴宗儒
+吴宗宪
+吴宗翰
+吴宗兴
+吴宗龙
+吴定疆
+吴宜芳
+吴宜贞
+吴宜祐
+吴宜穆
+吴宜嫔
+吴宛怡
+吴宛萦
+吴尚倍
+吴尚儒
+吴冈儒
+吴岱霖
+吴岳桐
+吴幸枝
+吴幸真
+吴延晃
+吴忠政
+吴忠霖
+吴怡君
+吴怡珊
+吴怡萍
+吴怡庆
+吴怡莹
+吴怡宪
+吴怡静
+吴怡
+吴承哲
+吴承璋
+吴招
+吴易逊
+吴昌庭
+吴昆
+吴昆璋
+吴明
+吴明忠
+吴明芳
+吴明珍
+吴明哲
+吴明恭
+吴明轩
+吴明达
+吴明璋
+吴明勋
+吴明晔
+吴明龙
+吴明颜
+吴昕姿
+吴升桥
+吴东和
+吴东耿
+吴东霖
+吴松沛
+吴欣佩
+吴欣怡
+吴欣伦
+吴欣硕
+吴欣儒
+吴欣鸿
+吴泓玳
+吴治英
+吴玫姗
+吴直耕
+吴秉伦
+吴秉勋
+吴秉骏
+吴芳青
+吴芳瑜
+吴芝纬
+吴采芳
+吴金玉
+吴金历
+吴长柏
+吴雨哲
+吴青育
+吴青峰
+吴青环
+吴亭谊
+吴信幸
+吴信宽
+吴信辉
+吴侯璋
+吴俊宏
+吴俊奇
+吴俊杰
+吴俊杰
+吴俊达
+吴俊仪
+吴俊德
+吴俊毅
+吴俊纬
+吴俊贤
+吴俊锋
+吴俊谚
+吴俊睿
+吴俞莹
+吴冠群
+吴冠贤
+吴冠翚
+吴劲龙
+吴品蓉
+吴奕成
+吴奕羲
+吴姿仪
+吴姿桦
+吴威芳
+吴宣锋
+吴建生
+吴建男
+吴建芝
+吴建达
+吴建德
+吴建贤
+吴建勋
+吴建旻
+吴彦庆
+吴律铭
+吴思萱
+吴思莹
+吴思颖
+吴政
+吴政旺
+吴政原
+吴政彬
+吴政德
+吴政勋
+吴政颖
+吴政霖
+吴春生
+吴春缓
+吴昭蓉
+吴昭毅
+吴昭龙
+吴昱宏
+吴柄德
+吴柏青
+吴柏仪
+吴柏毅
+吴柏颖
+吴炫宗
+吴炳峣
+吴玲媛
+吴皇欣
+吴盈洁
+吴祉龙
+吴秋美
+吴秋慧
+吴纪君
+吴美妮
+吴美玲
+吴美惠
+吴美祯
+吴美慧
+吴美萤
+吴羿喧
+吴致铭
+吴若华
+吴英宏
+吴英鸿
+吴贞宜
+吴贞莹
+吴郁芳
+吴重毅
+吴飞龙
+吴倩
+吴原宇
+吴哲雯
+吴哲权
+吴家明
+吴家琪
+吴家荣
+吴家豪
+吴家慧
+吴容莹
+吴庭狱
+吴振成
+吴振豪
+吴挺锋
+吴晏平
+吴书荣
+吴桂箐
+吴泰昌
+吴海芬
+吴佩君
+吴佩慈
+吴佩祯
+吴益芳
+吴素芬
+吴纯欣
+吴轩轩
+吴伟伦
+吴伟诚
+吴健民
+吴健鑫
+吴国伟
+吴国狮
+吴国熙
+吴国铭
+吴坚玮
+吴培贤
+吴婉婷
+吴婉歆
+吴崇铭
+吴彩邑
+吴悠
+吴启扬
+吴启斌
+吴敏真
+吴敏钜
+吴梓逢
+吴添锋
+吴淑如
+吴淑芬
+吴淑卿
+吴淑敏
+吴淑华
+吴淑凤
+吴涵宜
+吴祥维
+吴绍华
+吴莉婷
+吴雪妮
+吴竟芳
+吴凯雯
+吴胜祺
+吴乔森
+吴复兴
+吴惠君
+吴惠彩
+吴惠雯
+吴斯熏
+吴智东
+吴智豪
+吴栋隆
+吴犀灵
+吴善铭
+吴菁菁
+吴咏宸
+吴逸民
+吴逸群
+吴钧婷
+吴雅坤
+吴雅郁
+吴雅岚
+吴雅萍
+吴雅雯
+吴雅绮
+吴云骥
+吴圆朗
+吴敬琪
+吴毓真
+吴源章
+吴瑞
+吴瑞哲
+吴瑞钦
+吴瑞庆
+吴稚霆
+吴圣威
+吴诗婷
+吴诚昌
+吴鼎伟
+吴嘉信
+吴嘉娟
+吴嘉胜
+吴嘉荣
+吴嘉蕙
+吴宁瑄
+吴荣泰
+吴汉铭
+吴碧俐
+吴福量
+吴维倩
+吴维裕
+吴肇腾
+吴远诚
+吴铭振
+吴铨友
+吴凤兰
+吴德元
+吴庆文
+吴慧君
+吴慧玲
+吴慧贞
+吴慧敏
+吴慧雯
+吴洁珊
+吴赐忠
+吴宪中
+吴忆屏
+吴晓青
+吴晓纯
+吴晓菁
+吴晓薇
+吴燕芬
+吴颖轩
+吴蕙如
+吴蕙纹
+吴遵先
+吴锦佳
+吴锦镒
+吴静宜
+吴静怡
+吴静芳
+吴静茹
+吴静雯
+吴龙宝
+吴总成
+吴声源
+吴迈
+吴鸿昌
+吴鸿森
+吴曜臣
+吴丰吉
+吴镇利
+吴琼玉
+吴韵卉
+吴丽春
+吴丽婷
+吴献良
+吴馨怡
+吴懿婷
+吴显宗
+吴佼佼
+吴旻儒
+吴玠蓉
+吴昶葳
+吴淩安
+吴琮杰
+吴玮琳
+吴筱珈
+吴璁
+吴韫德
+吕子豪
+吕仁团
+吕友婷
+吕文专
+吕文铃
+吕世豪
+吕正安
+吕玉秋
+吕立伟
+吕如英
+吕自达
+吕志宏
+吕志锋
+吕育芳
+吕育玮
+吕佳宜
+吕佳容
+吕佳桦
+吕佩姗
+吕佩纯
+吕其霖
+吕姗姗
+吕季芳
+吕宗铭
+吕宜芳
+吕宜晏
+吕宜霖
+吕居勋
+吕忠育
+吕怡慧
+吕旺骐
+吕明
+吕明泰
+吕明龙
+吕杰纬
+吕欣颖
+吕芳俊
+吕金彦
+吕长馨
+吕保岸
+吕俊仪
+吕俐
+吕南畿
+吕威德
+吕建彦
+吕建锋
+吕彦融
+吕政彦
+吕政谕
+吕昭仪
+吕柏宏
+吕皇其
+吕秋云
+吕美惠
+吕美龄
+吕英玮
+吕韦箴
+吕哲明
+吕庭维
+吕格豪
+吕祐吉
+吕伟钦
+吕国培
+吕婉茹
+吕梅音
+吕淑卿
+吕淑祯
+吕理霖
+吕绍荣
+吕雪瑜
+吕惠菁
+吕智杰
+吕咏真
+吕雅玲
+吕雅琪
+吕雯歆
+吕沧尧
+吕圣章
+吕嘉元
+吕嘉丰
+吕维玲
+吕铭智
+吕慧惠
+吕学君
+吕学智
+吕学睿
+吕燕林
+吕锦顺
+吕静蓉
+吕鸿麟
+吕丽娟
+吕厅严
+吕翊民
+宋大辰
+宋之揆
+宋心慧
+宋世文
+宋玉婷
+宋伯瑜
+宋沛勇
+宋育玮
+宋佩珊
+宋孟瑛
+宋幸真
+宋昌霖
+宋东威
+宋秉萱
+宋俊洋
+宋奕儒
+宋建欣
+宋政隆
+宋禹莹
+宋致远
+宋家霖
+宋舫臣
+宋培元
+宋敏华
+宋乔玉
+宋朝斌
+宋云明
+宋嘉仁
+宋碧琳
+宋慧洁
+宋燕俪
+宋窜
+宋旻真
+巫子懿
+巫戎怡
+巫佩璇
+巫宜学
+巫明翰
+巫芷玮
+巫冠谊
+巫柏毅
+巫振嘉
+巫清文
+巫善福
+巫嘉兴
+巫晓芬
+巫晟逸
+李乃文
+李士享
+李子允
+李小芬
+李中任
+李中慧
+李仁修
+李仁凯
+李今黛
+李元圃
+李元裕
+李友淳
+李天桦
+李心仁
+李心岚
+李文
+李文吉
+李文志
+李文政
+李文莉
+李文惠
+李文琦
+李文意
+李文达
+李文贤
+李文斌
+李月星
+李世安
+李世伟
+李世剀
+李世宽
+李以新
+李可立
+李巧琳
+李弘昊
+李正元
+李正彦
+李正胜
+李正豪
+李永昌
+李永钦
+李永鸿
+李玉佩
+李玉卿
+李玉琳
+李玉铃
+李立仁
+李立强
+李亦晴
+李仲玄
+李光
+李光祥
+李光倢
+李兆斌
+李吉敏
+李名伦
+李如珍
+李宇弘
+李守维
+李安琳
+李成汉
+李有钦
+李羽
+李至章
+李佐宁
+李伯毅
+李君彦
+李含仁
+李妍莹
+李宏文
+李宏洲
+李廷伟
+李志成
+李志明
+李志峰
+李志伟
+李志章
+李志铭
+李志鹏
+李沛杰
+李汪盛
+李秀年
+李秀玲
+李秀卿
+李秀华
+李秀蘅
+李育枝
+李育庭
+李育群
+李育莹
+李育融
+李见汶
+李亚伦
+李京桦
+李依纯
+李依恂
+李佳汶
+李佳明
+李佳芳
+李佳芬
+李佳玲
+李佳玲
+李佳珍
+李佳倩
+李佳家
+李佳晃
+李佳真
+李佳训
+李佳雯
+李佳蓉
+李佳庆
+李佳儒
+李佳桦
+李佳颖
+李佳臻
+李佳霖
+李佳霏
+李佳键
+李佳蓁
+李侃洋
+李佩佩
+李佩芝
+李佩姿
+李佩珊
+李佩玲
+李佩倩
+李佩真
+李佩陵
+李佩仪
+李佩晔
+李佩谕
+李佩嬬
+李侑宬
+李其澧
+李函芬
+李卓道
+李和昌
+李坤明
+李坤源
+李坤霖
+李奇展
+李奇翰
+李孟坤
+李孟珊
+李孟哲
+李孟轩
+李孟儒
+李孟颖
+李孟灿
+李孟璁
+李季华
+李宗坤
+李宗伦
+李宗恩
+李宗义
+李宗贤
+李宗宪
+李宗颖
+李宗翰
+李宗霖
+李宗鸿
+李定远
+李宜明
+李宜芳
+李宜洲
+李宜玲
+李宜哲
+李宜峻
+李宜纯
+李宜洁
+李宜桦
+李宜霖
+李宜韩
+李宜圜
+李宛玲
+李宛萍
+李宛静
+李尚贤
+李岩晖
+李岱蓁
+李岳峰
+李岳桦
+李岳鸿
+李幸娟
+李幸锭
+李忠和
+李忠义
+李忠颖
+李念蒨
+李怡昌
+李怡玲
+李怡萱
+李怡宽
+李怡慧
+李怡瑾
+李怡颖
+李怡旻
+李承宗
+李承璋
+李承龙
+李易修
+李易谚
+李昌达
+李昆宏
+李昆达
+李昆龙
+李明利
+李明怡
+李明杰
+李明彦
+李明修
+李明哲
+李明书
+李明钊
+李明达
+李明洁
+李明勋
+李明桦
+李明谕
+李明霞
+李明墉
+李昀臻
+李昊
+李升翰
+李东彦
+李东隆
+李东龙
+李杰如
+李松家
+李欣怡
+李欣怡
+李欣哲
+李欣达
+李欣儒
+李欣颖
+李欣霞
+李法汉
+李治安
+李玟玟
+李玥莹
+李秉朔
+李秉翰
+李芳圻
+李芳婷
+李芳仪
+李芝绫
+李芸彦
+李虎峰
+李金泓
+李金铃
+李金桦
+李长文
+李长荣
+李长纮
+李青松
+李青阳
+李非霏
+李信成
+李信杰
+李信德
+李信颖
+李保蓁
+李俊宏
+李俊奇
+李俊昀
+李俊彦
+李俊祺
+李俊亿
+李俊德
+李俊毅
+李俊贤
+李俊贤
+李俊贤
+李俊勋
+李俊锜
+李俞慧
+李冠朋
+李冠仪
+李冠莹
+李冠臻
+李勇宁
+李南娇
+李品慧
+李奕枚
+李奏锐
+李姿仪
+李姿莹
+李威宏
+李威德
+李威霖
+李宣莹
+李建民
+李建宏
+李建邦
+李建明
+李建威
+李建苇
+李建宽
+李建贤
+李建锋
+李建桦
+李建兴
+李建禲
+李彦宏
+李彦宜
+李彦仪
+李彦莹
+李彦儒
+李彦霖
+李律玮
+李思怡
+李思萱
+李思仪
+李思莹
+李思谕
+李政
+李政忠
+李政哲
+李政达
+李政辉
+李政晔
+李政龙
+李春枝
+李春燕
+李昭美
+李昭纬
+李映萱
+李昱春
+李昱磷
+李柏杉
+李柏蓉
+李柏贤
+李柏璁
+李炳坤
+李珊珊
+李界锋
+李盈盈
+李盈洁
+李盈颖
+李科泯
+李秋梅
+李秋仪
+李秋麟
+李美玉
+李美芳
+李美伦
+李美瑜
+李美仪
+李美莹
+李美锜
+李胤瑶
+李致慧
+李茂全
+李英志
+李英瑞
+李英玮
+李虹仪
+李贞宜
+李贞慧
+李述申
+李郁伟
+李重贤
+李音慧
+李倩
+李修齐
+李哲安
+李哲纬
+李家宏
+李家珍
+李家萱
+李家豪
+李家侬
+李家兴
+李容婷
+李师媺
+李悦嘉
+李振昌
+李振诚
+李振仪
+李晋豪
+李书涵
+李根嘉
+李桃森
+李泰霖
+李浩庭
+李佩如
+李佩琳
+李佩嘉
+李益荣
+李祖珍
+李素梅
+李纯慧
+李能远
+李训亿
+李干晖
+李伟吉
+李伟恺
+李伟嘉
+李伟颙
+李健源
+李健铭
+李国全
+李国强
+李国华
+李国瑞
+李国荣
+李国维
+李国银
+李国兴
+李基弘
+李培华
+李婉真
+李婉瑞
+李崇仁
+李崇豪
+李康正
+李彩莹
+李启弘
+李启沧
+李敏吉
+李敏嘉
+李敏龙
+李清吟
+李淑君
+李淑芬
+李淑贞
+李淑茹
+李淑惠
+李淑华
+李淑蓉
+李淑静
+李涵富
+李祥瑞
+李绍绮
+李翎毓
+李连峰
+李雪萍
+李杰如
+李凯桢
+李胜雄
+李乔铮
+李岚琦
+李惠芬
+李惠珠
+李惠琳
+李惠雯
+李晴雯
+李智怡
+李智强
+李智维
+李森
+李湘桦
+李皖玲
+李善同
+李舜华
+李咏秋
+李逸才
+李逸群
+李进福
+李隆华
+李雅玫
+李雅玲
+李雅梅
+李雅婷
+李雅惠
+李雅惠
+李雅萍
+李雅雯
+李雅燕
+李雯燕
+李传君
+李意雯
+李想
+李新泽
+李毓真
+李源
+李瑞文
+李瑞贞
+李瑞华
+李瑞骐
+李义雄
+李圣琰
+李诗伟
+李诗楷
+李道林
+李嘉
+李嘉林
+李嘉凌
+李嘉轩
+李嘉华
+李嘉铭
+李嘉鸿
+李宁芳
+李荣茂
+李荣驰
+李汉祺
+李碧婷
+李福蓉
+李维仁
+李维伦
+李维桢
+李肇欣
+李志明
+李铭周
+李铭毓
+李鸣宇
+李齐芳
+李广祁
+李德海
+李庆宏
+李庆华
+李慧芬
+李慧美
+李慧珠
+李慧仪
+李毅信
+李莹洁
+李贤淦
+李学明
+李宪斌
+李晓妮
+李晓玲
+李晓岚
+李晓菁
+李晓榕
+李泽育
+李燕玲
+李璟郁
+李翰青
+李兴舜
+李蕙如
+李蕙芸
+李豫凡
+李锦升
+李锦莲
+李静宜
+李静怡
+李静怡
+李静美
+李静蓉
+李龙生
+李龙麟
+李爵臣
+李聪岳
+李舆鑫
+李鸿志
+李鸿达
+李曜存
+李谨帆
+李熔阡
+李馥如
+李琼英
+李丽枝
+李丽珠
+李宝玉
+李耀民
+李馨怡
+李懿如
+李权家
+李劭军
+李旻升
+李旻玮
+李昶欣
+李苹慈
+李涴汝
+李堨
+李絜
+李玮琪
+李筱云
+李钰雯
+李靓宸
+李铠任
+李君
+杜文杰
+杜民杰
+杜全林
+杜志贤
+杜佳豪
+杜孟政
+杜宛谕
+杜承鑫
+杜升翰
+杜芳政
+杜俊毅
+杜威廷
+杜彦霖
+杜炳龙
+杜美慧
+杜家昌
+杜佩诗
+杜婉雯
+杜淑铮
+杜阳圆
+杜嘉玲
+杜维修
+杜燕华
+杜耀仁
+沙正悦
+沈士杰
+沈仁杰
+沈文祥
+沈世闵
+沈正德
+沈立仁
+沈如峰
+沈佑翰
+沈君璐
+沈志川
+沈志龙
+沈汶萍
+沈育星
+沈依颖
+沈佳慧
+沈佩雯
+沈坤升
+沈宗庆
+沈宜蓁
+沈怡伶
+沈昌明
+沈明萱
+沈欣学
+沈秉谊
+沈芸萩
+沈信增
+沈俊翔
+沈冠宏
+沈姿慧
+沈建成
+沈建德
+沈恒光
+沈昭贤
+沈柏宽
+沈盈菁
+沈美娟
+沈郁康
+沈哲标
+沈家荣
+沈振兴
+沈益承
+沈纯如
+沈国铨
+沈晨钟
+沈淑华
+沈惠菁
+沈舒琳
+沈雅惠
+沈晖庭
+沈瑞钦
+沈圣昆
+沈道论
+沈嘉蕙
+沈维毓
+沈德厚
+沈学成
+沈蕙君
+沈鸿洲
+沈妏真
+沈筱云
+汪大伦
+汪巧玲
+汪百轩
+汪秀燕
+汪孟涵
+汪怡华
+汪青蓉
+汪冠宏
+汪美玉
+汪家莹
+汪启文
+汪雅萍
+汪靖国
+汪庆珍
+汪丽娟
+狄家溧
+谷泓道
+车益华
+辛宗潭
+辛奕成
+辛菁娥
+辛旻修
+邢能文
+阮文祥
+阮吕真
+阮信宪
+阮昱宏
+阮飞铭
+阮淑茹
+阮斐瑜
+阮雅伦
+阮睿祥
+阮鹏硕
+卓士勋
+卓永堂
+卓志忠
+卓佳庆
+卓宛君
+卓明仪
+卓芳如
+卓俊宏
+卓建隆
+卓英哲
+卓家楠
+卓训良
+卓淑媛
+卓朝闵
+卓瑞崇
+卓志隆
+卓静如
+卓生
+周上钦
+周士杰
+周大钧
+周子敬
+周中兴
+周心怡
+周文政
+周文雅
+周月霜
+周世丰
+周代尉
+周弘敏
+周正国
+周永雄
+周玉莲
+周立伟
+周仲凯
+周吉龙
+周年盛
+周至芬
+周佑祯
+周伯鑫
+周君鸿
+周孝芳
+周宏瑜
+周廷隆
+周志忠
+周志清
+周志勋
+周汶珊
+周秀晏
+周育伶
+周育润
+周亚欣
+周佳怡
+周佳蓉
+周佳震
+周佩宜
+周佩仪
+周协利
+周奇蓉
+周孟谊
+周宗建
+周宜芳
+周宛萱
+周幸蓉
+周怡伶
+周怡君
+周怡邦
+周怡俪
+周明弘
+周明彻
+周明辉
+周杰
+周欣芸
+周欣莹
+周玟萱
+周芳如
+周芝涵
+周金燕
+周青蓉
+周信辉
+周俊宏
+周俊豪
+周冠伶
+周品妍
+周威呈
+周建呈
+周建铭
+周彦岑
+周思微
+周政翰
+周星同
+周柏甫
+周玲
+周盈杉
+周秋萍
+周美春
+周致丞
+周郁文
+周韦翰
+周凌悌
+周娟如
+周家浩
+周家庆
+周峰正
+周振凯
+周书婷
+周泰安
+周佩如
+周祐慧
+周耿行
+周伟茹
+周国靖
+周婉琳
+周敏钰
+周淑娟
+周淑燕
+周凯慧
+周惠莲
+周智敏
+周渝珊
+周咏训
+周逸兰
+周雅婷
+周云棠
+周敬晏
+周业钦
+周煌耿
+周瑞楠
+周义峰
+周圣慧
+周裕丰
+周道泓
+周嘉松
+周嘉庆
+周汉源
+周福凤
+周翠芬
+周亿信
+周慧姿
+周乐天
+周贤德
+周宪邦
+周晓萍
+周燕盈
+周融骏
+周静雯
+周聪宇
+周镇邦
+周丽玲
+周兰芳
+周旻静
+周旆瑜
+周玮
+周钰翔
+孟天祥
+孟庆安
+季育泽
+官大弘
+官育萱
+官芳如
+官苑杰
+官农哲
+尚书
+屈道刚
+岳维铤
+房兆隆
+于家珍
+易足真
+易智健
+昌孟翰
+东慎琳
+林一炜
+林上志
+林久匀
+林于正
+林于婷
+林于祯
+林千媚
+林千毓
+林士力
+林士郁
+林士渊
+林士杰
+林士扬
+林士越
+林士农
+林大元
+林大祥
+林大钧
+林女满
+林子玄
+林子伟
+林子杰
+林子惠
+林子咏
+林子勤
+林子绮
+林子瑄
+林小琪
+林山云
+林才元
+林中强
+林之菁
+林仁彦
+林仁杰
+林介一
+林元恺
+林升权
+林天民
+林心如
+林心岚
+林文中
+林文全
+林文泳
+林文科
+林文将
+林文祥
+林文胜
+林文斯
+林文琦
+林文雯
+林文德
+林文聪
+林文媄
+林月英
+林木兴
+林世平
+林世昌
+林世芳
+林世峰
+林世伟
+林世淇
+林世翔
+林世寰
+林主恩
+林以晨
+林仕伟
+林加冠
+林可钧
+林巨淙
+林巧梅
+林平苑
+林弘升
+林弘祥
+林正一
+林正宗
+林正军
+林正伟
+林正凯
+林正福
+林民基
+林永昌
+林永信
+林永清
+林永祥
+林永森
+林永庆
+林永晟
+林玉如
+林玉芳
+林玉玲
+林玉佩
+林玉敏
+林玉婷
+林玉菁
+林玉云
+林玉龙
+林石隆
+林立任
+林立伦
+林立伟
+林立群
+林立鑫
+林仲威
+林仰望
+林兆盈
+林吉伯
+林后唯
+林如敏
+林宇星
+林守德
+林安缇
+林有俊
+林百扬
+林至承
+林行谦
+林佑安
+林佑珊
+林佑儒
+林佑锺
+林伯岳
+林伯峻
+林伯勋
+林伶贞
+林克威
+林克寰
+林呈任
+林君宜
+林君玲
+林君瑜
+林君翰
+林吟姿
+林均郁
+林妙君
+林妙娥
+林妍妤
+林孝全
+林孝宪
+林宏坤
+林宏亮
+林宏韦
+林宏干
+林宏达
+林宏儒
+林宏锜
+林岐益
+林廷吉
+林廷辉
+林志民
+林志成
+林志良
+林志忠
+林志明
+林志杰
+林志芬
+林志勇
+林志皇
+林志峰
+林志伟
+林志坚
+林志扬
+林志慎
+林志豪
+林志豪
+林志铭
+林志儒
+林志颖
+林志谋
+林志龙
+林志鸿
+林志鸿
+林李铭
+林材俊
+林沛君
+林沛蓁
+林灼龙
+林秀坪
+林秀花
+林秀俐
+林秀玲
+林秀美
+林秀卿
+林秀真
+林秀雯
+林秀凤
+林秀颖
+林秀馨
+林育仕
+林育正
+林育民
+林育生
+林育立
+林育名
+林育如
+林育成
+林育宏
+林育昀
+林育珊
+林育进
+林育群
+林育萱
+林育蓓
+林育慧
+林育贤
+林育锋
+林育麟
+林良俊
+林见明
+林谷峰
+林贝珊
+林里燕
+林享烨
+林依盈
+林依洁
+林依璇
+林佳生
+林佳宏
+林佳良
+林佳怡
+林佳欣
+林佳亭
+林佳盈
+林佳贞
+林佳陵
+林佳阳
+林佳绮
+林佳蓉
+林佳亿
+林佳庆
+林佳慧
+林佳慧
+林佳洁
+林佳莹
+林佳贤
+林佳桦
+林佳燕
+林佳臻
+林佳静
+林佳鸿
+林佳潓
+林佩君
+林佩怡
+林佩芬
+林佩贞
+林佩雯
+林佩蓉
+林佩蓉
+林佩慧
+林佩桦
+林佩锦
+林佩璇
+林侑青
+林其侯
+林其锋
+林协村
+林和秀
+林坤生
+林坤韦
+林坤梁
+林坤霂
+林奇模
+林孟仕
+林孟君
+林孟亭
+林孟萱
+林孟德
+林孟贤
+林孟颖
+林孟葳
+林季苗
+林季烨
+林宗廷
+林宗顺
+林宗亿
+林宗庆
+林宗贤
+林宗辉
+林宗泽
+林宗谟
+林官逸
+林宜君
+林宜玫
+林宜珍
+林宜圣
+林宜蓉
+林宜慧
+林宜贤
+林宜桦
+林宜铮
+林宜静
+林宜蓁
+林宜
+林宛瑜
+林宛桦
+林尚良
+林尚颖
+林岱蓉
+林岱融
+林岳仪
+林岳嶙
+林幸蓉
+林庚立
+林征卫
+林忠岳
+林忠庆
+林怡
+林怡汝
+林怡伶
+林怡利
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡君
+林怡均
+林怡秀
+林怡辰
+林怡芳
+林怡青
+林怡莉
+林怡菁
+林怡萱
+林怡宽
+林怡儒
+林怡礽
+林承岳
+林承毅
+林于妮
+林易珊
+林昌弘
+林昌贤
+林昆田
+林昆模
+林昆煇
+林明生
+林明志
+林明宗
+林明杰
+林明彦
+林明莉
+林明枫
+林明志
+林明德
+林明毅
+林明纬
+林明辉
+林明勋
+林明环
+林昀龙
+林升永
+林升龙
+林东茂
+林东毅
+林杰欣
+林松尧
+林欣立
+林欣怡
+林欣怡
+林欣怡
+林欣政
+林欣慈
+林欣仪
+林欣仪
+林欣毅
+林欣谊
+林欣颖
+林欣丽
+林武谚
+林泓君
+林泱秀
+林牧台
+林玟君
+林玟妏
+林玫君
+林玫蓉
+林秉泓
+林秉莹
+林芳一
+林芳如
+林芳如
+林芳州
+林芳芳
+林芳新
+林芳仪
+林芝卉
+林芝宁
+林芬芳
+林芸晖
+林芷筠
+林金仕
+林金明
+林金莲
+林金龙
+林长志
+林长庆
+林雨农
+林青志
+林青慧
+林青霞
+林亮仁
+林信全
+林信佑
+林信宏
+林信廷
+林信延
+林信义
+林保成
+林俊仲
+林俊宇
+林俊佑
+林俊伯
+林俊宏
+林俊宏
+林俊廷
+林俊甫
+林俊男
+林俊言
+林俊杰
+林俊杰
+林俊逸
+林俊达
+林俊豪
+林俊魁
+林俊贤
+林俊麟
+林俐亭
+林俞增
+林冠宇
+林冠吟
+林冠宏
+林冠秀
+林冠瑛
+林冠儒
+林勇成
+林南宏
+林品宜
+林奕成
+林奕伶
+林奕秀
+林奕岚
+林奎君
+林姿伶
+林姿吾
+林姿妙
+林姿婷
+林威名
+林威利
+林威廷
+林威良
+林宣任
+林宣鳌
+林建一
+林建仲
+林建宇
+林建成
+林建吾
+林建宏
+林建宏
+林建廷
+林建志
+林建男
+林建良
+林建邦
+林建升
+林建华
+林建彰
+林建莹
+林建勋
+林彦文
+林彦名
+林彦亨
+林彦伶
+林彦孝
+林彦宏
+林彦甫
+林彦享
+林彦嘉
+林彦兴
+林思吟
+林思华
+林思亲
+林恒硕
+林恪群
+林政位
+林政良
+林政浩
+林政裕
+林政仪
+林政纬
+林政锋
+林政翰
+林春年
+林春美
+林昭宇
+林昭志
+林昭铭
+林映汝
+林星晨
+林昱君
+林昱伟
+林柑杏
+林柏州
+林柏伸
+林柏宏
+林柏村
+林柏城
+林柏荣
+林柏翰
+林泉洋
+林洪霄
+林为文
+林炳煌
+林珊如
+林玲至
+林珍如
+林皇利
+林盈成
+林盈君
+林盈志
+林盈萱
+林祈均
+林科宏
+林秋良
+林秋惠
+林秋菊
+林秋莲
+林纪元
+林美如
+林美伶
+林美君
+林美吟
+林美秀
+林美怡
+林美玲
+林美珠
+林美智
+林美华
+林美慧
+林美龄
+林羿妏
+林致君
+林致颖
+林茂盛
+林英男
+林英杰
+林英铭
+林虹如
+林虹宏
+林贞
+林贞延
+林郁文
+林郁欣
+林郁芬
+林郁敏
+林郁森
+林郁雄
+林郁兰
+林韦丞
+林韦廷
+林韦嘉
+林香君
+林倍伊
+林倩如
+林倩慧
+林修民
+林伦旭
+林原合
+林哲民
+林哲任
+林哲宏
+林哲裕
+林哲辉
+林娟如
+林娉孜
+林家弘
+林家弘
+林家生
+林家如
+林家亨
+林家勇
+林家惠
+林家晖
+林家圣
+林家祯
+林家铭
+林家庆
+林家贤
+林家蕙
+林家斌
+林容仞
+林容圣
+林展圣
+林峻晖
+林峰年
+林师群
+林庭玮
+林恩光
+林恩霈
+林振浩
+林振旸
+林振滨
+林时新
+林晋全
+林晋畿
+林晏如
+林晏稚
+林书弘
+林书聿
+林书楷
+林书毅
+林书泽
+林桓赋
+林桂珠
+林格妃
+林泰安
+林泰维
+林浚杰
+林浩群
+林佩如
+林佩菁
+林佩儒
+林益弘
+林益如
+林益运
+林真绮
+林祐禾
+林祐榆
+林祐瑄
+林窈意
+林素如
+林素贞
+林素华
+林纯如
+林纯湘
+林耘德
+林耿弘
+林耿真
+林茵
+林起翎
+林轩颉
+林高源
+林伟民
+林伟彬
+林伟桢
+林伟德
+林健青
+林唯凯
+林国欣
+林国祥
+林国隆
+林国勋
+林培尧
+林婉君
+林婉婷
+林婉瑜
+林崇宇
+林崇毅
+林康宁
+林启人
+林启航
+林启丰
+林敏裕
+林梅陇
+林清吉
+林清云
+林淑君
+林淑芬
+林淑玲
+林淑贞
+林淑娟
+林淑娥
+林淑梅
+林淑媛
+林淑惠
+林淑萍
+林淑华
+林淑雯
+林淑仪
+林淑铮
+林涵瑜
+林盛杰
+林莘怡
+林荷芳
+林雪萍
+林杰圣
+林创
+林胜杰
+林博隆
+林婷
+林富美
+林惠文
+林惠怡
+林惠美
+林惠敏
+林惠萍
+林惠雯
+林惠琇
+林敦煌
+林景民
+林景氛
+林智能
+林智清
+林智业
+林期
+林森田
+林港贵
+林湘惠
+林湲舒
+林琦国
+林登山
+林紫菁
+林舒慧
+林华一
+林视尊
+林咏翔
+林超
+林逸昀
+林逸峰
+林逸菁
+林逸儒
+林进益
+林钧陶
+林雁敏
+林雅君
+林雅芬
+林雅玲
+林雅伦
+林雅淳
+林雅博
+林雅惠
+林雅琪
+林雅萍
+林雅华
+林雅雯
+林雅慧
+林雅慧
+林雅谦
+林雯宣
+林云正
+林顺安
+林顺兴
+林勤淙
+林嵩山
+林意伦
+林意腾
+林爱惠
+林敬文
+林敬渊
+林敬翔
+林新凡
+林新发
+林晖皓
+林楠棋
+林殿一
+林毓珊
+林毓超
+林源河
+林照男
+林煜庭
+林煌轩
+林焕钦
+林瑞明
+林瑞家
+林瑞雪
+林瑞德
+林瑞兰
+林瑜莉
+林盟杰
+林祺勋
+林稚扬
+林经维
+林义峰
+林义杰
+林义智
+林义雄
+林群峰
+林群耀
+林圣怡
+林圣恩
+林圣杰
+林圣智
+林圣钧
+林圣耀
+林苇萍
+林裕昕
+林裕坚
+林裕胜
+林裕舜
+林诗凡
+林诗倩
+林诗渊
+林诗雯
+林诗苹
+林运浩
+林铉智
+林雍翔
+林靖修
+林颂博
+林鼎植
+林嘉禾
+林嘉信
+林嘉珍
+林嘉伟
+林嘉琪
+林嘉群
+林嘉慧
+林嘉鸿
+林掴彦
+林荣钦
+林汉
+林汉斌
+林睿旸
+林碧惠
+林硕儒
+林精湛
+林维珊
+林维莉
+林翠萍
+林蓓羚
+林豪彦
+林铭洲
+林铭煌
+林铭熛
+林凤珍
+林齐蔚
+林仪虹
+林增威
+林广义
+林德晋
+林庆升
+林庆蓉
+林慧君
+林慧怡
+林慧珊
+林慧美
+林慧珠
+林慧淳
+林慧萍
+林慧华
+林慧雯
+林慧丽
+林憬良
+林澄泽
+林莹芳
+林瑾兰
+林蔚玲
+林卫圣
+林贤得
+林适之
+林儒民
+林学隆
+林宪政
+林忆淳
+林晓君
+林晓芳
+林晓玲
+林晓婷
+林晓华
+林晓嘉
+林晓娸
+林泽义
+林燕梅
+林璟
+林颖
+林颖莉
+林颖聪
+林兴钊
+林蕙淇
+林豫亭
+林锦伶
+林锦隆
+林锦鸿
+林静吟
+林静宜
+林静怡
+林静怡
+林静芬
+林静雯
+林静仪
+林龙生
+林懋州
+林聪仁
+林谦妙
+林骏逸
+林鸿君
+林鸿彬
+林鸿达
+林鸿锜
+林礼强
+林丰舜
+林瀛文
+林琼芳
+林韵娟
+林丽君
+林丽美
+林丽珠
+林丽华
+林丽蓉
+林宝秀
+林继平
+林耀南
+林蔼文
+林巍龙
+林懿君
+林麟
+林夆宾
+林芊亨
+林旻逸
+林炅嵚
+林姝均
+林昶安
+林珈妤
+林倬世
+林纾玮
+林琇雯
+林棨任
+林琮闵
+林琬瑜
+林暐庭
+林炜鸿
+林玮竣
+林筱玲
+林筱菁
+林萩燕
+林钰庭
+林钰凯
+林钰慧
+林璇怡
+林霙真
+林驧
+武良文
+武敬和
+祁义国
+花羽薇
+花雅斐
+初若凡
+邵文泰
+邵志丰
+邵奕钧
+邵郁惠
+邵胜添
+邵爱玟
+邵怀德
+邱一真
+邱于倩
+邱千绮
+邱士恭
+邱大刚
+邱子枫
+邱小嫚
+邱仁杰
+邱天宏
+邱文玉
+邱文柏
+邱文钦
+邱文鸿
+邱世民
+邱仕杰
+邱幼媚
+邱正祥
+邱永嘉
+邱玉玲
+邱立国
+邱仲韵
+邱名仕
+邱安台
+邱有谅
+邱君清
+邱志光
+邱志强
+邱志斌
+邱秀英
+邱秀静
+邱良毅
+邱佳松
+邱佳颍
+邱孟月
+邱定邦
+邱延龄
+邱怡乔
+邱怡祯
+邱昌裕
+邱明琪
+邱欣怡
+邱泓彰
+邱芳宜
+邱金生
+邱信益
+邱信辉
+邱俊昌
+邱俊智
+邱俊荣
+邱俊霖
+邱冠瑜
+邱品华
+邱垂章
+邱奕明
+邱奕睿
+邱姿惠
+邱建中
+邱建诚
+邱建鋐
+邱彦瑛
+邱思嘉
+邱政涌
+邱昭钦
+邱昱臻
+邱柏瑜
+邱柏霖
+邱珀祥
+邱盈棠
+邱纪华
+邱美惠
+邱美慧
+邱致颖
+邱军浩
+邱郁淑
+邱重宪
+邱哲琳
+邱家贤
+邱振峰
+邱桂铃
+邱浩彰
+邱佩绮
+邱纯玮
+邱伟伦
+邱健雄
+邱国恭
+邱国洁
+邱培瑜
+邱婉嬅
+邱启翔
+邱敏蕙
+邱清龙
+邱淑娟
+邱淑琴
+邱淑慧
+邱绍溢
+邱莉婷
+邱凯
+邱创俭
+邱富源
+邱惠娥
+邱惠诗
+邱景萍
+邱智杰
+邱湘云
+邱结
+邱咏淳
+邱逸群
+邱雅芬
+邱雅莉
+邱雅雯
+邱雅茜
+邱圆惠
+邱敬雯
+邱毓玲
+邱焕文
+邱瑞梅
+邱盟琇
+邱圣文
+邱圣斌
+邱诗渊
+邱诗琁
+邱靖雯
+邱嘉杰
+邱嘉慧
+邱碧施
+邱维婉
+邱韶莹
+邱德凯
+邱慧如
+邱慧婷
+邱纬平
+邱晓玲
+邱树国
+邱静宜
+邱静雯
+邱锺仁
+邱丰祥
+邱琼惠
+邱琼慧
+邱韵宁
+邱丽英
+邱宝萱
+邱继莹
+邱蕴静
+邱馨仪
+邱龄颐
+邱显桓
+邱显霖
+邱姵绫
+邱琬淑
+邱椿凯
+邱筱雯
+邱钰斐
+邱瞍
+金士为
+金京荣
+金明辉
+金政谚
+金珞琳
+金勤
+金磊
+侯力维
+侯文哲
+侯正鸿
+侯如芬
+侯宏昌
+侯秀如
+侯佳典
+侯函秀
+侯岳宏
+侯昆助
+侯欣翰
+侯信宇
+侯咸仰
+侯彦伸
+侯柏青
+侯致中
+侯素云
+侯渊铭
+侯博元
+侯景勋
+侯贵龄
+侯雅雯
+侯嘉珍
+侯庆辰
+侯静汝
+侯丽慧
+侯霈青
+俞佳凡
+俞泊霖
+俞能方
+俞雅婷
+俞芊荟
+姜元钧
+姜后怡
+姜宏荣
+姜佩伶
+姜明宏
+姜芝怡
+姜建铭
+姜堉颍
+姜凯杰
+姜智钧
+姜雅婷
+姜义恺
+姜增炫
+姜树锦
+姜礼豪
+姜旻姗
+姚又文
+姚方洁
+姚立三
+姚克钧
+姚志宪
+姚佳慧
+姚宗朴
+姚怡兰
+姚金源
+姚威宇
+姚盈任
+姚素兰
+姚凯文
+姚琛富
+姚瑞贤
+姚德麟
+姚丽人
+宣志凌
+律振扬
+施大维
+施文
+施文豪
+施可隆
+施玉品
+施名玥
+施宇骏
+施百桦
+施伯宜
+施孝德
+施宏泽
+施志豪
+施秀宛
+施育瑜
+施佳君
+施佩君
+施佩华
+施孟宏
+施宜呈
+施宛直
+施怡如
+施怡铃
+施明妍
+施杰松
+施玫君
+施雨佐
+施俊名
+施俊贤
+施奕涵
+施建宇
+施彦甫
+施政豪
+施柏如
+施皇旭
+施美瑛
+施郁蕙
+施振坤
+施素卿
+施健鸿
+施敏男
+施淑惠
+施雪姿
+施博元
+施富浩
+施惠琪
+施智勇
+施程凯
+施咏然
+施钧伦
+施雅娟
+施雯琪
+施义沧
+施嘉琪
+施汉嵘
+施志豪
+施慧君
+施瑾伦
+施晓雯
+施静怡
+施琼如
+施馨贵
+施旻宜
+施玮瑜
+柯力豪
+柯元凯
+柯文祥
+柯世贤
+柯永忠
+柯全益
+柯伯彦
+柯宏威
+柯志明
+柯沛志
+柯良蕙
+柯佳秀
+柯佩君
+柯坤明
+柯宗伯
+柯宛君
+柯怡玟
+柯明翰
+柯欣仪
+柯金杏
+柯俊吉
+柯俊隆
+柯宣宇
+柯彦旭
+柯昭生
+柯盈如
+柯虹如
+柯泰名
+柯敏盛
+柯淑惠
+柯连田
+柯博元
+柯富议
+柯惠菱
+柯智仁
+柯棋棣
+柯闵文
+柯雅华
+柯毓萍
+柯嘉汶
+柯碧昭
+柯凤仪
+柯宪苍
+柯锦男
+柯琼蓥
+柯旻良
+查慧琳
+柳如庭
+柳佩君
+柳建良
+柳茹萍
+柳棋元
+柳嘉轩
+柳鹤松
+段明宏
+段逸轩
+洪一中
+洪力壹
+洪于闵
+洪千惠
+洪千琦
+洪士育
+洪士杰
+洪大为
+洪子婷
+洪小惠
+洪元斌
+洪文明
+洪文凯
+洪文贤
+洪世升
+洪世嘉
+洪加达
+洪正光
+洪永昌
+洪玉芳
+洪玉婷
+洪玉蒨
+洪亦洁
+洪光亿
+洪名衡
+洪安俐
+洪百贤
+洪佑升
+洪君祥
+洪宏政
+洪志生
+洪志明
+洪志雄
+洪志铭
+洪村铭
+洪秀芳
+洪秀莹
+洪良欣
+洪依琪
+洪佳琳
+洪佩伶
+洪坤锜
+洪孟瑶
+洪宗汉
+洪宜良
+洪尚铭
+洪忠圣
+洪怡真
+洪明化
+洪明伟
+洪明龙
+洪欣升
+洪芷漪
+洪信嘉
+洪俊雄
+洪宣竹
+洪思琪
+洪政霈
+洪柏宁
+洪秋华
+洪美萍
+洪茂雄
+洪英杰
+洪郁庭
+洪重卿
+洪家琪
+洪悦玲
+洪振益
+洪振铭
+洪根华
+洪佩芳
+洪佩绮
+洪耿智
+洪伟哲
+洪伟杰
+洪伟谕
+洪健峰
+洪曼珊
+洪国哲
+洪国惟
+洪国翔
+洪国耀
+洪培伦
+洪婉纹
+洪崇恩
+洪昆健
+洪御彗
+洪启伟
+洪敏芳
+洪敏雄
+洪清健
+洪淑贞
+洪淑惠
+洪淑淩
+洪绍文
+洪翎宾
+洪雪芳
+洪胜凯
+洪惠文
+洪惠棋
+洪晴晴
+洪智贤
+洪琦惠
+洪菁隆
+洪菱紫
+洪隆智
+洪雅苓
+洪雅雯
+洪顺男
+洪慈伶
+洪恺廷
+洪桢邦
+洪毓嫔
+洪煌凯
+洪瑞堂
+洪瑞蓉
+洪瑞鸿
+洪万得
+洪圣恩
+洪萱锋
+洪裕焜
+洪诗雅
+洪靖凯
+洪嘉圻
+洪嘉珊
+洪嘉琳
+洪嘉莲
+洪嘉骏
+洪宁
+洪荣辉
+洪甄苡
+洪硕伟
+洪绮
+洪维良
+洪维泽
+洪肇彦
+洪志强
+洪铭佐
+洪铭阳
+洪铭锺
+洪魁禧
+洪宽泰
+洪庆铭
+洪慧玲
+洪慧萍
+洪莹珍
+洪儒明
+洪晓岚
+洪蕙心
+洪静怡
+洪声铨
+洪礼君
+洪艺菁
+洪丽姿
+洪丽钧
+洪继贤
+洪俪凤
+洪劭元
+洪晢惇
+洪斌凯
+洪歆怡
+洪筱佩
+洪钰樱
+相孟豪
+纪人玮
+纪文钦
+纪吉如
+纪伯璁
+纪志霖
+纪佳宜
+纪宗霖
+纪怡婷
+纪泓尧
+纪长兴
+纪威羽
+纪盈州
+纪祖豪
+纪淑芳
+纪博敏
+纪智仁
+纪钧闳
+纪顺兴
+纪铭坤
+纪晓恩
+纪兰洁
+胡丁元
+胡小萍
+胡心慧
+胡文瑜
+胡世融
+胡正翰
+胡玉慧
+胡同亮
+胡成章
+胡廷威
+胡志铭
+胡育维
+胡佳祯
+胡定宇
+胡怡芳
+胡东升
+胡芳慈
+胡金灏
+胡帝
+胡玲婉
+胡若男
+胡修瑀
+胡家荣
+胡展铭
+胡振中
+胡书绵
+胡纯菁
+胡干锋
+胡授淳
+胡淑君
+胡淑雅
+胡凯智
+胡博砚
+胡惠婷
+胡景雯
+胡智铭
+胡竣砚
+胡贵月
+胡雅妍
+胡雅智
+胡顺隆
+胡毓发
+胡瑞洙
+胡诗菁
+胡嘉真
+胡碧媜
+胡赫廷
+胡慧如
+胡宪霖
+胡静苑
+胡琼文
+胡耀仁
+胡懿心
+胡炜珍
+范中威
+范文政
+范世璋
+范玉萱
+范吉庆
+范均沛
+范甫宗
+范佳雯
+范明中
+范冠伟
+范姜彦如
+范姜慧怡
+范秋霞
+范郁如
+范家诚
+范振文
+范振麟
+范耕魁
+范国基
+范淑玲
+范莉苓
+范博彰
+范扬宜
+范扬腾
+范智钦
+范钧杰
+范毓贞
+范瑞祥
+范诗漪
+范汉君
+范纲贤
+范慧如
+范晓怡
+范瀚文
+范耀聪
+范琇璇
+苗后杰
+计竹宇
+韦人瑜
+韦志鸿
+韦桂仁
+候昺辰
+倪玉龙
+倪志鸿
+倪威远
+倪伟智
+倪淑婷
+倪瑞期
+倪慧珊
+凌世芳
+凌明德
+凌雪惠
+凌慧萍
+唐千惠
+唐文贤
+唐永兴
+唐作豪
+唐邦泰
+唐明志
+唐思维
+唐英娜
+唐佩珊
+唐国忠
+唐淑芬
+唐朝纬
+唐雅燕
+唐义尧
+唐嘉羚
+唐韶霙
+唐晓微
+唐誉玫
+夏正邦
+夏良玉
+夏春香
+夏淑蓉
+夏达伟
+夏慧龄
+夏翊伦
+孙上雯
+孙士烘
+孙元俊
+孙方仪
+孙可为
+孙永信
+孙立民
+孙如彬
+孙伯中
+孙志勇
+孙育芝
+孙协裕
+孙忠凯
+孙明骏
+孙采薇
+孙建崴
+孙美英
+孙郁婷
+孙振凉
+孙佩芳
+孙伟伦
+孙国书
+孙崇哲
+孙惟正
+孙淑芬
+孙杰
+孙琦
+孙逸燕
+孙传凯
+孙溢堂
+孙睦杰
+孙道隆
+孙嘉荫
+孙纲
+孙豪志
+孙铭鸿
+孙慧津
+孙学仪
+孙龙翔
+孙丽娟
+孙炘宜
+孙瑀
+宫姗姗
+师宜青
+徐乙可
+徐千祐
+徐千雅
+徐士勋
+徐子平
+徐子强
+徐小萍
+徐仁干
+徐心宜
+徐文君
+徐文益
+徐月娥
+徐世基
+徐仕泓
+徐巧凌
+徐正怡
+徐永光
+徐永鸣
+徐玉芬
+徐玉慈
+徐立达
+徐光平
+徐匡平
+徐如升
+徐有庆
+徐艾伶
+徐克钧
+徐宏宇
+徐志宇
+徐志伟
+徐志豪
+徐李全
+徐秀玲
+徐育慈
+徐佳如
+徐佩如
+徐佩锦
+徐宗源
+徐忠义
+徐昆羿
+徐明华
+徐明鸿
+徐松鸿
+徐欣妏
+徐知本
+徐采薇
+徐信中
+徐俊杰
+徐奕晖
+徐思维
+徐柏韬
+徐美玉
+徐美华
+徐若馨
+徐英硕
+徐郁桦
+徐家楷
+徐振洲
+徐书政
+徐浚杰
+徐佩祯
+徐伟凡
+徐伟峻
+徐伟顺
+徐健顺
+徐国伦
+徐国智
+徐国耀
+徐培溶
+徐婉仪
+徐昆仑
+徐从诰
+徐敏芳
+徐敏华
+徐梅凌
+徐淑娟
+徐淑嫔
+徐祥然
+徐莉真
+徐雪琼
+徐富康
+徐惠珍
+徐掌瑛
+徐朝康
+徐舒亚
+徐咏媛
+徐进宝
+徐雅棋
+徐顺宏
+徐爱婷
+徐毓良
+徐瑚镁
+徐瑞恭
+徐瑞聪
+徐瑜敏
+徐裕彬
+徐资证
+徐靖惠
+徐嘉宏
+徐嘉琳
+徐嘉驹
+徐梦麟
+徐荣辰
+徐甄鸿
+徐福祥
+徐维扬
+徐翠遥
+徐铭佛
+徐铭谦
+徐凤忆
+徐德贤
+徐慧心
+徐慧婷
+徐毅宏
+徐震东
+徐晓筠
+徐兴淦
+徐静仪
+徐鸿仁
+徐赞登
+徐丽珍
+徐继政
+徐樱芳
+徐淯
+徐菡禧
+徐玮芬
+徐筱芸
+徐钰绫
+徐鑫豪
+书百川
+桑怡秋
+柴学舜
+殷芷若
+殷绍闵
+殷肇阳
+浦晓凤
+留干焜
+祖晓凤
+秦一平
+秦安立
+秦建玮
+秦梓铭
+秦圣杰
+秦丽雅
+翁于琪
+翁士轩
+翁子婷
+翁文茹
+翁以哲
+翁玉娟
+翁仲贤
+翁宇骏
+翁宏霖
+翁志豪
+翁育稔
+翁佳韵
+翁宗裕
+翁明安
+翁林铤
+翁信台
+翁柏圣
+翁英斌
+翁振芳
+翁佩怡
+翁伟伦
+翁健纬
+翁基清
+翁崇庭
+翁启信
+翁晨耀
+翁淑华
+翁壹姿
+翁滋佩
+翁逸轩
+翁雅惠
+翁毓翎
+翁瑞羚
+翁义宗
+翁鼎昌
+翁嘉翎
+翁梦君
+翁碧壕
+翁维良
+翁铭逊
+翁德卿
+翁晓芬
+翁静瑜
+翁麒昌
+翁俪倩
+翁玮娟
+翁靓晏
+荆伟政
+袁天英
+袁如冈
+袁怡茹
+袁柏伟
+袁伟伦
+袁启鑫
+袁雅惠
+袁荣灿
+袁静华
+记佳雯
+郝政鸿
+马一文
+马中骅
+马占峰
+马玉娟
+马安妮
+马志明
+马佳伶
+马岳宏
+马南欣
+马英杰
+马佩婷
+马国蕾
+马淑卿
+马智君
+马煌坤
+马嘉隆
+马绪川
+马忆婷
+马樱菁
+高一铭
+高千惠
+高士明
+高子淇
+高小文
+高友慧
+高文彬
+高世昌
+高主强
+高弘州
+高正国
+高玉如
+高玉馨
+高伊俊
+高合助
+高旭庆
+高至宽
+高宏铭
+高志伟
+高志魁
+高秀铃
+高亚兰
+高佩吟
+高妮玮
+高宗炜
+高幸瑜
+高明
+高明玮
+高欣洁
+高金志
+高咸实
+高彦勋
+高柏豪
+高美芳
+高英凯
+高郁凯
+高峰
+高栩
+高佩绮
+高伟伦
+高健
+高国哲
+高国宁
+高培真
+高彬原
+高启祐
+高敏娉
+高淑芳
+高淑惠
+高笙辅
+高雪卿
+高婷
+高景怡
+高琪舒
+高咏彦
+高雅芳
+高雅腹
+高意祯
+高毓辰
+高照闵
+高瑞瑶
+高义忠
+高诗娉
+高颂清
+高嘉良
+高嘉屿
+高彰隆
+高睿兰
+高端玫
+高翠翎
+高银穗
+高铭杰
+高铭琇
+高仪铭
+高庆斌
+高慧萍
+高忆如
+高静民
+高薇薇
+高谱伦
+高丽蕙
+高颢哲
+高斌鑫
+高筱慧
+高薏涵
+商弘易
+商凤英
+寇丽雯
+崔佑维
+崔倩苓
+崔琦民
+常欣玉
+康乃月
+康仕宗
+康宇宁
+康攸华
+康孟意
+康金锋
+康美玲
+康家彰
+康庭瑞
+康配容
+康杰民
+康智升
+康登杰
+康雅婷
+康稚旸
+康嘉兰
+康晓蕙
+康丽贞
+张
+张一鸿
+张乃文
+张乃伟
+张力仁
+张力夫
+张又千
+张又牙
+张千里
+张士贤
+张子昌
+张小萍
+张中薇
+张尹馨
+张仁杰
+张仁杰
+张仁聪
+张元
+张元隆
+张元鸿
+张友
+张天凤
+张尤子
+张心怡
+张心瑜
+张心馨
+张文育
+张文明
+张文彦
+张文玲
+张文轩
+张文钦
+张文雯
+张文荣
+张文豪
+张文樵
+张文炉
+张文腾
+张月容
+张世中
+张世岳
+张世明
+张世芬
+张世雯
+张世儒
+张世壎
+张以全
+张仕育
+张仕旻
+张加升
+张可欣
+张央昌
+张巧玲
+张幼玮
+张弘泰
+张必明
+张正余
+张正忠
+张正杰
+张正隆
+张正卫
+张正玗
+张永材
+张永昆
+张永俊
+张永棋
+张永勋
+张玄鸿
+张玉欣
+张玉玲
+张玉琪
+张玉蓉
+张玉旻
+张立文
+张立欣
+张立钧
+张立纬
+张亦宁
+张仲平
+张仲铨
+张光仁
+张光伟
+张兆域
+张匡杰
+张吉丰
+张好礼
+张如莹
+张宇竣
+张安妮
+张式良
+张旭宗
+张泛骐
+张羽洁
+张至睿
+张艾铃
+张佑民
+张佑群
+张作成
+张伯骏
+张克伟
+张君如
+张君瑜
+张吟慈
+张妙慧
+张宋萍
+张宏春
+张宏瑞
+张宏铭
+张希圣
+张志
+张志仰
+张志宇
+张志舟
+张志明
+张志伟
+张志坚
+张志祥
+张志琳
+张志源
+张志达
+张志豪
+张志豪
+张志豪
+张志铭
+张志鸿
+张志瑄
+张沅玺
+张秀玉
+张秀珍
+张秀琪
+张秀蓉
+张育平
+张育崧
+张育菁
+张育慎
+张育诚
+张育彰
+张育纶
+张育铨
+张育玮
+张良源
+张邑如
+张亚衔
+张佳文
+张佳音
+张佳惠
+张佳雯
+张佳蓉
+张佩帆
+张佩瑛
+张叔美
+张孟玉
+张孟婷
+张宗仁
+张宗贤
+张宜新
+张尚钧
+张延任
+张念慈
+张怡欣
+张怡莉
+张怡慧
+张昆煌
+张明利
+张明祥
+张明照
+张明璋
+张升钦
+张林芬
+张欣怡
+张欣蕙
+张治国
+张秉祺
+张芳菁
+张芳绫
+张芝友
+张芸慧
+张金山
+张金凤
+张雨筑
+张信发
+张俊伟
+张俊尧
+张俊贤
+张冠华
+张姿媚
+张建邦
+张建祥
+张建豪
+张彦菁
+张思仪
+张恒玮
+张政杰
+张昭元
+张柔明
+张洲期
+张为栋
+张玲婉
+张界聪
+张盈鸿
+张秋婷
+张纪君
+张美玲
+张美羚
+张美雯
+张美霞
+张致蒨
+张茂醒
+张英琦
+张郁芬
+张郁婷
+张香玺
+张幸碧
+张修豪
+张伦玮
+张刚维
+张原谋
+张哲健
+张哲瑞
+张哲榕
+张哲维
+张哲铭
+张娟华
+张家明
+张家振
+张家淦
+张家栋
+张家菱
+张家源
+张家瑜
+张家群
+张家榕
+张家荣
+张家硕
+张家绮
+张家豪
+张家豪
+张家豪
+张家赫
+张家铭
+张家铭
+张家润
+张家怀
+张家玮
+张容菱
+张宸宗
+张峻杰
+张峻嘉
+张峻严
+张峰荣
+张庭源
+张庭玮
+张恩琼
+张振源
+张振镒
+张晋通
+张晋豪
+张晏诚
+张晏龄
+张书航
+张书维
+张书豪
+张书铭
+张书馨
+张根源
+张桂华
+张桂凤
+张泰青
+张浩堂
+张佩怡
+张佩琪
+张益州
+张益华
+张益维
+张祐慈
+张祐维
+张秦芸
+张素秋
+张素华
+张纯益
+张纯玮
+张耿
+张耿维
+张耿崚
+张训义
+张轩豪
+张高瑞
+张伟伦
+张伟钧
+张健良
+张国志
+张国浩
+张国媛
+张国玺
+张堂凡
+张婉君
+张婉暄
+张崇伟
+张康虔
+张惟捷
+张启明
+张敏芝
+张梅君
+张淳惠
+张清文
+张清凯
+张淑君
+张淑芳
+张淑芬
+张淑珍
+张淑贞
+张淑娟
+张淑茹
+张淑婷
+张淑琦
+张淑雅
+张淑娴
+张淑谨
+张渊富
+张涵轩
+张盛纲
+张绍晖
+张莉茹
+张逢时
+张雪云
+张凯宇
+张凯淳
+张凯岚
+张凯琳
+张凯超
+张凯维
+张胜仁
+张胜杰
+张胜雄
+张博和
+张博勋
+张博钧
+张喻
+张乔翔
+张壹能
+张婷韵
+张富淳
+张富祯
+张惠如
+张惠珊
+张惠娟
+张惠婷
+张惠琪
+张惠菁
+张惠雯
+张惠兰
+张敦义
+张晴晴
+张景伦
+张景浑
+张景闳
+张智安
+张智刚
+张智清
+张智杰
+张智崴
+张智翔
+张智钧
+张智豪
+张智谦
+张朝凯
+张朝龙
+张棋雯
+张湘怡
+张琪华
+张琦绍
+张登翔
+张皓崴
+张程顺
+张紫铃
+张翔智
+张舒琦
+张舜华
+张菁茹
+张华倩
+张咏茵
+张证荃
+张贵琳
+张逸凡
+张逸群
+张量然
+张钧富
+张钧贻
+张闵富
+张雁婷
+张雅姗
+张雅芬
+张雅玲
+张雅卿
+张雅敏
+张雅婷
+张雅婷
+张雅婷
+张雅婷
+张雅岚
+张雅惠
+张雅惠
+张雅琪
+张雅琴
+张雅萍
+张雅雯
+张雅雯
+张雅铃
+张雅莹
+张雯茵
+张雯仪
+张顺吉
+张顺福
+张嗣文
+张意诚
+张慈洒
+张恺晏
+张新宏
+张毓
+张毓芬
+张毓伦
+张毓洁
+张源鑫
+张瑚珊
+张瑞君
+张瑞杰
+张瑞芸
+张瑞娟
+张瑞景
+张瑞桦
+张瑞氶
+张瑜君
+张瑜娟
+张祺升
+张义忠
+张群朋
+张圣莉
+张裕昌
+张裕雯
+张诗怡
+张诗雯
+张资昊
+张道智
+张靖怡
+张鼎铉
+张嘉元
+张嘉正
+张嘉宏
+张嘉欣
+张嘉芬
+张嘉玲
+张嘉玲
+张嘉哲
+张嘉晋
+张嘉真
+张嘉训
+张嘉惠
+张嘉雄
+张嘉维
+张嘉声
+张嘉珣
+张宁馨
+张榕容
+张荣盈
+张荣宪
+张荧珊
+张睿颖
+张碧娟
+张硕元
+张硕桓
+张福政
+张纲邑
+张彩芳
+张维全
+张维珊
+张维哲
+张维真
+张维淳
+张维洁
+张翠文
+张翠琪
+张肇梁
+张蓓萱
+张豪文
+张银芳
+张铭宗
+张铭峰
+张铭翰
+张凤平
+张凤仪
+张广浩
+张德榆
+张庆怡
+张庆丰
+张慧怡
+张慧娟
+张慧萍
+张慧箴
+张莹珊
+张卫帆
+张适恒
+张学伦
+张忆君
+张晓昀
+张晓婷
+张晓菁
+张晓凤
+张燕妮
+张翰文
+张醒世
+张锦婷
+张静如
+张静怡
+张静茹
+张龙仁
+张环伊
+张谦达
+张鸿如
+张鸿智
+张曜铨
+张简正伟
+张简欣华
+张简嘉人
+张蓝尹
+张丰璸
+张怀恩
+张琼之
+张琼文
+张琼文
+张琼方
+张琼惠
+张艺馨
+张丽君
+张丽淑
+张宝云
+张献壬
+张缤文
+张继昌
+张耀云
+张耀允
+张耀正
+张耀声
+张释文
+张馨文
+张馨文
+张腾元
+张俪薰
+张巍耀
+张誉馨
+张鹤耀
+张霁月
+张芃
+张倛
+张茜茹
+张琇闵
+张媜媜
+张琬宜
+张琬菁
+张菀倩
+张炜宁
+张玮芸
+张玮伦
+张玮婷
+张筱君
+张筱雯
+张鄐憛
+张钰彩
+张禕伦
+张璁文
+张镫尹
+张恒中
+戚久智
+敖永龙
+曹士敏
+曹文彦
+曹世浩
+曹立行
+曹聿男
+曹志强
+曹佳安
+曹昌男
+曹欣良
+曹春文
+曹哲嘉
+曹峻昌
+曹佩怡
+曹伟茹
+曹淑媛
+曹胜丰
+曹智欣
+曹皓云
+曹雅惠
+曹新彦
+曹嘉文
+曹维伦
+曹毅勇
+曹玺穠
+曹莨贤
+梁乃健
+梁仁华
+梁文安
+梁文宾
+梁世豪
+梁正忠
+梁玉玲
+梁任中
+梁汝舜
+梁君霙
+梁志彬
+梁志铭
+梁育华
+梁佳进
+梁怡芬
+梁东林
+梁信元
+梁俐琦
+梁彦豪
+梁炳铸
+梁郁蓁
+梁家明
+梁家豪
+梁峻铭
+梁晋魁
+梁佩佩
+梁秦宜
+梁健忠
+梁启玄
+梁淑娟
+梁莉娟
+梁胜铭
+梁惠婷
+梁景尧
+梁朝凯
+梁舒怡
+梁逸芬
+梁雅舒
+梁恺芸
+梁瑞轩
+梁圣昌
+梁嘉珍
+梁碧慧
+梁翠珊
+梁慧华
+梁晓维
+梁静宜
+梁琼丹
+梁继仁
+梁懿德
+梁玮真
+梅光宇
+梅雅婷
+毕志华
+盛心
+盛祥
+符肇中
+莫星宇
+庄一凡
+庄于莹
+庄士国
+庄子凯
+庄仁宏
+庄心萍
+庄文昭
+庄文豪
+庄世杰
+庄弘任
+庄正扬
+庄永福
+庄玉麟
+庄如轩
+庄克伟
+庄志明
+庄志荣
+庄秀铃
+庄育榕
+庄依婷
+庄佳荣
+庄佩雯
+庄坤哲
+庄孟玲
+庄孟纾
+庄宗勋
+庄官璇
+庄宜璇
+庄忠益
+庄怡轩
+庄昌晔
+庄明达
+庄东明
+庄欣哲
+庄玥嬛
+庄金静
+庄俊杰
+庄建
+庄政宪
+庄秋子
+庄美馨
+庄英琴
+庄仓杰
+庄家升
+庄家铭
+庄峻榕
+庄桓嘉
+庄佩铃
+庄纯纯
+庄伟仁
+庄国辰
+庄培鑫
+庄启文
+庄梨青
+庄清富
+庄淑芬
+庄淑婷
+庄淑闵
+庄淑珺
+庄莉莉
+庄凯茵
+庄胜利
+庄博清
+庄尧任
+庄富杰
+庄复贵
+庄惠茹
+庄惠萍
+庄惠蓉
+庄晴云
+庄景琇
+庄智涵
+庄智钧
+庄朝钧
+庄登发
+庄善芳
+庄贺乔
+庄闵旭
+庄雅心
+庄雅玲
+庄雅婷
+庄雅惠
+庄雅萍
+庄雅云
+庄雯雯
+庄嵩纬
+庄瑞南
+庄裕文
+庄嘉玲
+庄汉清
+庄维铭
+庄铭景
+庄慧心
+庄莹姿
+庄树宏
+庄蕙萍
+庄锦平
+庄静怡
+庄滨绮
+庄曜旭
+庄蝉妃
+庄熔璞
+庄馥纲
+庄丽足
+庄懿强
+庄捃娉
+庄斌智
+庄筱婷
+许一之
+许乃积
+许又仁
+许大容
+许仁全
+许元铭
+许壬耀
+许心盈
+许文忠
+许文厚
+许文桐
+许文华
+许文豪
+许文蓝
+许日春
+许世民
+许世昌
+许世恬
+许世贤
+许加宏
+许平
+许弘毅
+许正忠
+许正谊
+许永明
+许永毅
+许玉芳
+许玉娟
+许玉婵
+许甲
+许立群
+许仲贤
+许名世
+许宇杰
+许戎岑
+许泛颖
+许至全
+许佑铨
+许克仲
+许君豪
+许妍希
+许宏伟
+许宏德
+许志同
+许志宏
+许志崇
+许志雄
+许志维
+许志远
+许志鹏
+许汶州
+许秀珊
+许秀蓉
+许育菁
+许育诚
+许良
+许贝如
+许佳政
+许佳雯
+许佩茹
+许卓尘
+许孟翔
+许宗荣
+许幸雯
+许怡佩
+许承训
+许明杰
+许明德
+许松等
+许泓琮
+许芳慈
+许芳铭
+许芙玱
+许金发
+许信荣
+许俊雄
+许姿怡
+许彦然
+许恬绫
+许昭元
+许柏桦
+许珊瑜
+许秋玲
+许美芳
+许美华
+许致维
+许英杰
+许郁敏
+许俸昌
+许修铭
+许原铭
+许哲瑞
+许哲彰
+许哲豪
+许哲玮
+许家宣
+许家杰
+许家旸
+许家彰
+许家荣
+许家豪
+许家豪
+许家庆
+许宸豪
+许峻哲
+许峻玮
+许峰铭
+许庭玮
+许振湖
+许时嘉
+许晋荧
+许书
+许书荣
+许书铨
+许根宜
+许栓豪
+许浩玮
+许佩嘉
+许益轩
+许祐莱
+许素菁
+许纯瑜
+许耿豪
+许财得
+许伟忠
+许国安
+许国贤
+许婉茹
+许彩真
+许启扬
+许梅菁
+许淳琇
+许清枫
+许淑芬
+许淑贞
+许淑茹
+许淑惠
+许淑华
+许淑莲
+许盛昌
+许莉莉
+许凯惇
+许凯嘉
+许胜勋
+许博为
+许博森
+许堡如
+许富忠
+许富雄
+许惠如
+许惠珍
+许惠茹
+许惠琳
+许惠雯
+许惠滢
+许晴斐
+许景钧
+许智玲
+许智惟
+许智凯
+许智翔
+许智雄
+许智德
+许朝富
+许钦豪
+许登渊
+许竣能
+许善凯
+许舒茜
+许华倚
+许咏胜
+许贵彰
+许逸章
+许进兴
+许闵雄
+许雅欣
+许雅玲
+许雅淑
+许雅婷
+许雅惠
+许雅惠
+许雅萍
+许雅雁
+许雅雯
+许雅慧
+许雯琳
+许顺清
+许意苹
+许恺翔
+许桢祥
+许毓娟
+许源泉
+许瑞
+许瑞芸
+许瑞恩
+许瑞仪
+许瑜芳
+许禀曼
+许圣杰
+许裕亿
+许诗筠
+许铃英
+许嘉元
+许嘉芳
+许嘉倩
+许嘉佩
+许嘉惠
+许嘉颖
+许榕
+许荣隆
+许瑶馨
+许碧珠
+许硕修
+许箔涵
+许维育
+许维真
+许翠端
+许诱
+许铭仁
+许铭哲
+许铭财
+许阁文
+许凤雅
+许庆文
+许慧君
+许慧贞
+许慕贞
+许适枫
+许忆芳
+许晓菁
+许燕萍
+许锦文
+许静宜
+许静雪
+许嵘仁
+许鸿文
+许薰文
+许怀文
+许琼文
+许琼月
+许陇祺
+许丽华
+许缤如
+许耀文
+许馨仁
+许腾元
+许跃议
+许昶华
+许琇婷
+许琮邦
+许嫈玉
+许筱萍
+许钰茹
+许鋑鸿
+许恒达
+连仁圣
+连世和
+连佑仁
+连秀仁
+连佩泠
+连芸凰
+连建智
+连秋旺
+连容琪
+连桂宏
+连伟杰
+连婉仪
+连启智
+连胜祥
+连雅贞
+连嘉纯
+连庆丰
+连静茹
+郭一桦
+郭乃荣
+郭人豪
+郭力玮
+郭于祯
+郭士华
+郭士凤
+郭子立
+郭子荧
+郭子禕
+郭仁哲
+郭天立
+郭文同
+郭文彦
+郭文惠
+郭文铨
+郭水山
+郭世兰
+郭卉雯
+郭正宗
+郭永明
+郭玉珍
+郭立
+郭立达
+郭仲渊
+郭兆雯
+郭夙吟
+郭年真
+郭有镇
+郭至哲
+郭君怡
+郭宏文
+郭宏骏
+郭志宏
+郭志祥
+郭杏
+郭沂村
+郭育先
+郭育昌
+郭育维
+郭邦彦
+郭佳欣
+郭佳雯
+郭佳鑫
+郭佩琦
+郭奇文
+郭孟蓉
+郭宗庆
+郭尚勋
+郭忠和
+郭怡伶
+郭怡君
+郭怡君
+郭怡秀
+郭怡铃
+郭承仪
+郭明宗
+郭明峰
+郭明道
+郭明玮
+郭松颖
+郭武安
+郭玟玟
+郭玥妦
+郭芳君
+郭芳雯
+郭芝睿
+郭长树
+郭信宏
+郭保君
+郭俊宏
+郭俊男
+郭俊信
+郭俊亿
+郭俐亨
+郭冠廷
+郭品秀
+郭姿伶
+郭姿欣
+郭威志
+郭建宏
+郭建廷
+郭建良
+郭建源
+郭彦君
+郭彦甫
+郭思宜
+郭政忠
+郭政璋
+郭昭安
+郭昭显
+郭昱旻
+郭柏秀
+郭炳成
+郭玲慈
+郭盈君
+郭省萱
+郭美君
+郭美姗
+郭美善
+郭美兰
+郭茂虔
+郭贞孍
+郭倍安
+郭幸铨
+郭凌志
+郭哲成
+郭哲玮
+郭家宏
+郭家祥
+郭家豪
+郭家慧
+郭宸昀
+郭峰升
+郭庭蓉
+郭振汉
+郭晏佑
+郭书豪
+郭桂凤
+郭浩志
+郭益元
+郭祖佑
+郭素绫
+郭耿任
+郭轩
+郭国正
+郭婉玲
+郭启沐
+郭添新
+郭淑芯
+郭淑敏
+郭淑慧
+郭逢祥
+郭胜
+郭乔年
+郭惠青
+郭惠旻
+郭智明
+郭智玮
+郭琪娲
+郭咏佩
+郭进昌
+郭雅汝
+郭雅婷
+郭雅菱
+郭雅薇
+郭慈盈
+郭煜崇
+郭瑞钦
+郭义棠
+郭诗屏
+郭嘉伟
+郭梦竹
+郭荣庆
+郭碧娟
+郭纶益
+郭肇强
+郭铭杰
+郭庆生
+郭慧珍
+郭慧薄
+郭儒谦
+郭晓卉
+郭晓雯
+郭燕玲
+郭蕙萍
+郭锟霖
+郭静美
+郭济维
+郭骏
+郭曜彰
+郭镇元
+郭琼媛
+郭丽秋
+郭献文
+郭蕴忱
+郭馨镁
+郭笼庆
+郭旻瑜
+郭晟宇
+郭暐
+郭钰芳
+郭恒妙
+陈一成
+陈一华
+陈一玮
+陈乃钏
+陈乃荣
+陈人甄
+陈力凡
+陈又昕
+陈又圣
+陈上伦
+陈千锦
+陈士杰
+陈大同
+陈子仁
+陈子彦
+陈子钧
+陈小萍
+陈己升
+陈中铭
+陈之谕
+陈仁宗
+陈仁杰
+陈今凡
+陈元孝
+陈元靖
+陈兮
+陈天仁
+陈天赏
+陈心怡
+陈心怡
+陈心洁
+陈文川
+陈文成
+陈文忠
+陈文亮
+陈文昭
+陈文郎
+陈文涓
+陈文彬
+陈文章
+陈文钦
+陈文华
+陈文蓉
+陈文德
+陈文学
+陈文鸿
+陈文钰
+陈月妮
+陈水泉
+陈世宇
+陈世宗
+陈世明
+陈世杰
+陈世政
+陈世庭
+陈世伟
+陈世章
+陈世棻
+陈世盟
+陈世豪
+陈世泽
+陈世鸿
+陈主欣
+陈以静
+陈仕芳
+陈仕源
+陈仕睿
+陈加明
+陈功霖
+陈可欣
+陈右民
+陈右谕
+陈巨鶠
+陈巧珊
+陈巧惠
+陈巧颐
+陈幼欣
+陈弘文
+陈弘欣
+陈弘训
+陈弘毅
+陈弘铠
+陈札培
+陈正宏
+陈正昌
+陈正芳
+陈正峰
+陈正杰
+陈正雄
+陈正豪
+陈正兴
+陈民
+陈永
+陈永宗
+陈永昌
+陈永青
+陈永凌
+陈永康
+陈永富
+陈永志
+陈永穆
+陈永珩
+陈玉文
+陈玉奇
+陈玉芳
+陈玉芬
+陈玉珊
+陈玉珍
+陈玉娟
+陈玉珠
+陈玉梅
+陈玉琳
+陈玉菁
+陈玉云
+陈玉娇
+陈玉璘
+陈玉馨
+陈生松
+陈石育
+陈立凡
+陈立言
+陈立欣
+陈立伦
+陈立伟
+陈立翎
+陈立维
+陈立翰
+陈亦凡
+陈伊伦
+陈仲志
+陈仲贤
+陈光甫
+陈光华
+陈兆奕
+陈吉利
+陈向荣
+陈在明
+陈如芬
+陈如苹
+陈宇杰
+陈宇超
+陈安佑
+陈安朴
+陈旬
+陈有志
+陈江立
+陈百杰
+陈羽珊
+陈至凯
+陈亨成
+陈佑任
+陈佑庭
+陈伸田
+陈伯杰
+陈伯苍
+陈克宇
+陈克铭
+陈君妃
+陈君航
+陈君荣
+陈君儒
+陈均硕
+陈妙桢
+陈妍伶
+陈妍秀
+陈妤蕙
+陈孝铨
+陈宏仁
+陈宏安
+陈宏昌
+陈宏波
+陈宏美
+陈宏彬
+陈宏隆
+陈宏达
+陈宏铭
+陈宏贤
+陈宏炜
+陈廷俊
+陈志山
+陈志平
+陈志仲
+陈志安
+陈志宏
+陈志沛
+陈志岳
+陈志怡
+陈志明
+陈志升
+陈志欣
+陈志彦
+陈志浩
+陈志伟
+陈志强
+陈志祥
+陈志翔
+陈志雄
+陈志源
+陈志达
+陈志荣
+陈志维
+陈志豪
+陈志豪
+陈志豪
+陈志远
+陈志铭
+陈志宽
+陈志颖
+陈志鸿
+陈志斌
+陈攸婷
+陈村龙
+陈沛吟
+陈汶津
+陈甸
+陈秀君
+陈秀芝
+陈秀玲
+陈秀娟
+陈秀敏
+陈秀惠
+陈秀雅
+陈秀铃
+陈秀慧
+陈秀兰
+陈育正
+陈育佐
+陈育奇
+陈育章
+陈育廉
+陈育诗
+陈育莹
+陈育斌
+陈良政
+陈见秋
+陈辰扬
+陈酉茹
+陈亚铃
+陈依辰
+陈依翔
+陈佳
+陈佳汝
+陈佳伶
+陈佳吟
+陈佳宏
+陈佳妮
+陈佳玥
+陈佳盈
+陈佳真
+陈佳惠
+陈佳琪
+陈佳琦
+陈佳雯
+陈佳群
+陈佳凤
+陈佳慧
+陈佳璘
+陈佳骏
+陈佳怜
+陈侃婷
+陈佩君
+陈佩君
+陈佩佩
+陈佩芸
+陈佩真
+陈佩琳
+陈佩瑜
+陈佩莹
+陈侑娥
+陈其钧
+陈协昌
+陈和成
+陈坤佐
+陈坤杰
+陈坤锺
+陈委承
+陈孟伶
+陈孟良
+陈孟威
+陈孟伟
+陈孟琪
+陈孟铃
+陈孟辉
+陈季佑
+陈宗仁
+陈宗志
+陈宗盈
+陈宗雄
+陈宗旗
+陈宗纬
+陈宗龙
+陈定至
+陈宜平
+陈宜君
+陈宜秀
+陈宜姿
+陈宜培
+陈宜群
+陈宜璋
+陈宜旻
+陈宛姗
+陈尚文
+陈尚瑜
+陈居仁
+陈岳君
+陈幸足
+陈幸满
+陈延道
+陈忠良
+陈忠义
+陈怡
+陈怡文
+陈怡卉
+陈怡冰
+陈怡如
+陈怡如
+陈怡如
+陈怡如
+陈怡如
+陈怡如
+陈怡安
+陈怡竹
+陈怡伶
+陈怡伶
+陈怡伶
+陈怡利
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡君
+陈怡廷
+陈怡秀
+陈怡昌
+陈怡芳
+陈怡珊
+陈怡香
+陈怡真
+陈怡婷
+陈怡婷
+陈怡琴
+陈怡菁
+陈怡雯
+陈怡诚
+陈怡硕
+陈怡蓉
+陈怡洁
+陈怡儒
+陈怡颖
+陈怡静
+陈怡静
+陈怡苹
+陈怡蓁
+陈怡睿
+陈招诚
+陈易村
+陈昌文
+陈昌港
+陈昆杰
+陈昂佑
+陈明正
+陈明伸
+陈明宏
+陈明材
+陈明昌
+陈明政
+陈明珠
+陈明莉
+陈明婷
+陈明楷
+陈明裕
+陈明德
+陈明贤
+陈明丰
+陈昕方
+陈升毅
+陈东华
+陈杰盛
+陈松萍
+陈欣如
+陈欣宏
+陈欣宜
+陈欣怡
+陈欣怡
+陈欣泰
+陈欣瑜
+陈欣兰
+陈泳任
+陈法光
+陈泓翔
+陈泓霖
+陈治宇
+陈泊辰
+陈玟光
+陈玟伶
+陈玟瑛
+陈玫如
+陈玫君
+陈玫芳
+陈玫臻
+陈玥燕
+陈秉淳
+陈秉斌
+陈芳珍
+陈芳萱
+陈芝倩
+陈芝范
+陈芯怡
+陈邵鑫
+陈金良
+陈金堤
+陈金声
+陈长庆
+陈雨新
+陈青瑜
+陈亭君
+陈亮丞
+陈亮君
+陈亮颖
+陈信伊
+陈信宇
+陈信旭
+陈信吟
+陈信宏
+陈信宏
+陈信甫
+陈信忠
+陈信智
+陈信裕
+陈信豪
+陈信学
+陈保元
+陈保彰
+陈俊仁
+陈俊文
+陈俊仰
+陈俊吉
+陈俊如
+陈俊宇
+陈俊安
+陈俊成
+陈俊旭
+陈俊佑
+陈俊呈
+陈俊宏
+陈俊宏
+陈俊宏
+陈俊宏
+陈俊廷
+陈俊男
+陈俊男
+陈俊良
+陈俊和
+陈俊杰
+陈俊郎
+陈俊彬
+陈俊杰
+陈俊凯
+陈俊华
+陈俊源
+陈俊达
+陈俊榕
+陈俊维
+陈俊豪
+陈俊铭
+陈俊铭
+陈俊璋
+陈俊桦
+陈俊谚
+陈俊龙
+陈俊玮
+陈俐安
+陈俐秀
+陈俐洁
+陈俞仲
+陈俞妙
+陈俞静
+陈冠夫
+陈冠仰
+陈冠如
+陈冠宇
+陈冠州
+陈冠舟
+陈冠含
+陈冠宏
+陈冠廷
+陈冠男
+陈冠杰
+陈冠呜
+陈冠维
+陈冠铭
+陈冠桦
+陈冠妏
+陈则钦
+陈勇在
+陈勇志
+陈勇达
+陈劲吾
+陈南居
+陈厚铭
+陈品先
+陈品秀
+陈品辉
+陈奕中
+陈奕任
+陈奕帆
+陈奕利
+陈奕廷
+陈奕盈
+陈奕达
+陈奕颖
+陈奕蓁
+陈奎每
+陈姿文
+陈姿百
+陈姿利
+陈姿吟
+陈姿岐
+陈姿珊
+陈姿蓉
+陈姿颖
+陈姿璇
+陈威丞
+陈威全
+陈威宇
+陈威成
+陈威助
+陈威廷
+陈威志
+陈威志
+陈威邑
+陈威翔
+陈威豪
+陈威儒
+陈威霖
+陈宣任
+陈宣每
+陈宥任
+陈宥谕
+陈帅名
+陈建中
+陈建元
+陈建文
+陈建任
+陈建同
+陈建宇
+陈建安
+陈建州
+陈建成
+陈建旭
+陈建行
+陈建呈
+陈建宏
+陈建宏
+陈建宏
+陈建宏
+陈建廷
+陈建志
+陈建志
+陈建甫
+陈建男
+陈建良
+陈建邦
+陈建明
+陈建国
+陈建扬
+陈建华
+陈建评
+陈建源
+陈建达
+陈建荣
+陈建蓉
+陈建辅
+陈建铭
+陈建铭
+陈建璋
+陈建勋
+陈建桦
+陈建龙
+陈建烜
+陈彦夫
+陈彦文
+陈彦任
+陈彦合
+陈彦宇
+陈彦帆
+陈彦竹
+陈彦伸
+陈彦君
+陈彦壮
+陈彦宏
+陈彦宏
+陈彦廷
+陈彦甫
+陈彦良
+陈彦昌
+陈彦凯
+陈彦恺
+陈彦纶
+陈彦豪
+陈彦慰
+陈彦勋
+陈彦霖
+陈律元
+陈思先
+陈思年
+陈思妤
+陈思亮
+陈思源
+陈思蓉
+陈思朴
+陈思颖
+陈思翰
+陈思璇
+陈政文
+陈政宏
+陈政昕
+陈政尧
+陈政裕
+陈政毅
+陈政谦
+陈春妃
+陈春明
+陈春燕
+陈昭文
+陈昭宇
+陈昭伶
+陈昭志
+陈昭伟
+陈昭荣
+陈昭铭
+陈昭玮
+陈映旭
+陈映志
+陈映儒
+陈星宇
+陈星熹
+陈昱丞
+陈昱全
+陈昱汝
+陈昱宏
+陈昱甫
+陈昱达
+陈昱桦
+陈柔安
+陈柄方
+陈柏元
+陈柏份
+陈柏宇
+陈柏州
+陈柏年
+陈柏舟
+陈柏含
+陈柏宏
+陈柏志
+陈柏沅
+陈柏岳
+陈柏峰
+陈柏凯
+陈柏瑞
+陈柏宁
+陈柏蓉
+陈柏璋
+陈柏翰
+陈柏辑
+陈柏玮
+陈洲星
+陈炫君
+陈炳仲
+陈炳辰
+陈炳锟
+陈炯锦
+陈珊珊
+陈珍莹
+陈皆兴
+陈皇旭
+陈皇龙
+陈盈全
+陈盈如
+陈盈如
+陈盈安
+陈盈竹
+陈盈君
+陈盈孜
+陈盈杉
+陈盈贝
+陈盈婷
+陈盈绮
+陈盈璋
+陈盈谕
+陈盈璇
+陈相达
+陈祈宾
+陈禹齐
+陈科顺
+陈秋方
+陈秋帆
+陈秋秀
+陈秋纯
+陈秋萍
+陈秋雯
+陈秋燕
+陈红玉
+陈纪足
+陈美云
+陈美玉
+陈美如
+陈美年
+陈美伶
+陈美君
+陈美吟
+陈美廷
+陈美秀
+陈美芝
+陈美玲
+陈美娟
+陈美纯
+陈美乔
+陈美惠
+陈美琴
+陈美菱
+陈美铃
+陈美慧
+陈美儒
+陈美静
+陈美钰
+陈羿谷
+陈致仰
+陈致宏
+陈致福
+陈致睿
+陈若曦
+陈茂雄
+陈英杰
+陈英振
+陈英杰
+陈英蓓
+陈英鸿
+陈苓娟
+陈虹曲
+陈虹吟
+陈虹洁
+陈衍至
+陈衍霖
+陈贞旭
+陈贞妤
+陈贞蓉
+陈贞玮
+陈郁仁
+陈郁文
+陈郁芬
+陈郁杰
+陈郁菁
+陈郁枫
+陈重光
+陈重廷
+陈重儒
+陈韦在
+陈韦伶
+陈韦廷
+陈韦承
+陈韦豪
+陈音
+陈飞良
+陈香如
+陈香吟
+陈香婷
+陈倍甄
+陈幸翠
+陈凌砚
+陈哲民
+陈哲强
+陈哲贤
+陈家正
+陈家奇
+陈家珍
+陈家祥
+陈家湖
+陈家雯
+陈家汉
+陈家仪
+陈家慧
+陈家兴
+陈家琮
+陈容萱
+陈峰州
+陈恕
+陈恩荣
+陈振东
+陈振涌
+陈振铭
+陈时盟
+陈书光
+陈书毓
+陈桂玉
+陈桂慧
+陈泰全
+陈泰伶
+陈泰峰
+陈泰铭
+陈浚钦
+陈浩茹
+陈佩云
+陈佩怡
+陈佩佩
+陈佩瑜
+陈佩玮
+陈益裕
+陈祐悌
+陈纺
+陈素珍
+陈素娥
+陈素瑜
+陈纯怡
+陈耘宽
+陈荃豪
+陈郡怡
+陈干淦
+陈伟民
+陈伟信
+陈伟莉
+陈伟裕
+陈健上
+陈健封
+陈健霖
+陈国元
+陈国明
+陈国峰
+陈国梁
+陈国棋
+陈国荣
+陈国锋
+陈坚民
+陈培育
+陈培端
+陈婉育
+陈婉卿
+陈婉菁
+陈婉洁
+陈崇原
+陈昆铭
+陈彩纯
+陈捷
+陈启存
+陈启清
+陈启铭
+陈敏星
+陈敏新
+陈梓玮
+陈梅馨
+陈清奇
+陈清源
+陈淑
+陈淑君
+陈淑怡
+陈淑芬
+陈淑芬
+陈淑玲
+陈淑秋
+陈淑贞
+陈淑娟
+陈淑娟
+陈淑真
+陈淑羚
+陈淑惠
+陈淑萍
+陈淑雅
+陈淑铃
+陈淑慧
+陈淑静
+陈渊秋
+陈猛宗
+陈祥钧
+陈绍庭
+陈庄伟
+陈莉婷
+陈许民
+陈雪芬
+陈雪华
+陈杰裕
+陈凯玲
+陈凯钿
+陈胜如
+陈胜嘉
+陈博康
+陈乔宇
+陈婷玟
+陈富民
+陈富荣
+陈惠文
+陈惠君
+陈惠芬
+陈惠玲
+陈惠美
+陈惠娟
+陈惠婷
+陈惠萍
+陈惠雯
+陈惠雯
+陈惠龄
+陈扬哲
+陈晶晶
+陈景泰
+陈景鑫
+陈智亮
+陈智伟
+陈智阳
+陈智宽
+陈朝文
+陈朝熙
+陈棋珍
+陈湘于
+陈湘琴
+陈渝文
+陈琪雯
+陈琦琳
+陈登隆
+陈筑筠
+陈肃权
+陈舒憛
+陈菁
+陈华伟
+陈咏亮
+陈贺钰
+陈辜亮
+陈逸平
+陈逸明
+陈逸盈
+陈逸菁
+陈逸维
+陈逸鸿
+陈进志
+陈进隆
+陈钧屏
+陈闵隆
+陈隆斌
+陈雅君
+陈雅玫
+陈雅芬
+陈雅玲
+陈雅玲
+陈雅苓
+陈雅佩
+陈雅雪
+陈雅婷
+陈雅惠
+陈雅惠
+陈雅琪
+陈雅琴
+陈雅菁
+陈雅雯
+陈雅雯
+陈雅铃
+陈雅慧
+陈雅韵
+陈雯
+陈雯惠
+陈云朴
+陈顺发
+陈传兴
+陈意文
+陈意雯
+陈慈雅
+陈爱甄
+陈敬文
+陈敬杰
+陈新烈
+陈业统
+陈榆涵
+陈毓良
+陈毓茹
+陈毓钧
+陈源正
+陈温萍
+陈照慈
+陈煦淑
+陈焕森
+陈瑞利
+陈瑞昌
+陈瑞芬
+陈瑞钏
+陈瑞瑜
+陈瑞霖
+陈瑞麟
+陈瑜诗
+陈祺富
+陈经国
+陈义忠
+陈义纬
+陈圣尹
+陈圣宜
+陈圣杰
+陈圣宪
+陈萱蔓
+陈蜂灏
+陈裕升
+陈裕廷
+陈裕智
+陈诗平
+陈诗泉
+陈诗婷
+陈诗诗
+陈诗苹
+陈运征
+陈达裕
+陈雍
+陈靖怡
+陈鼎仁
+陈嘉仁
+陈嘉亨
+陈嘉宏
+陈嘉怡
+陈嘉玲
+陈嘉峰
+陈嘉茵
+陈嘉淦
+陈嘉惠
+陈嘉雁
+陈嘉勤
+陈嘉德
+陈嘉莹
+陈嘉营
+陈嘉琮
+陈旗昌
+陈荣杰
+陈荣进
+陈荣耀
+陈汉珍
+陈汉蔚
+陈瑶真
+陈碧红
+陈碧云
+陈硕伟
+陈福林
+陈绮华
+陈维邦
+陈维哲
+陈维仪
+陈翠婷
+陈肇鸿
+陈蓓玲
+陈志睿
+陈铭
+陈铭泉
+陈铭强
+陈铭雄
+陈铭耀
+陈凤玲
+陈凤鸣
+陈仪
+陈仪珊
+陈仪洁
+陈宽如
+陈广麟
+陈德和
+陈德堂
+陈德远
+陈征宗
+陈庆星
+陈庆华
+陈庆维
+陈庆翰
+陈庆鸿
+陈慧玉
+陈慧如
+陈慧君
+陈慧芝
+陈慧珊
+陈慧玲
+陈慧美
+陈慧卿
+陈慧真
+陈慧纯
+陈慧敏
+陈慧萍
+陈慧雯
+陈慧蓉
+陈慧樵
+陈慧兰
+陈慕儒
+陈毅正
+陈毅鸿
+陈洁音
+陈莹芳
+陈莹蓉
+陈莹瑄
+陈纬恩
+陈蔚青
+陈谊芳
+陈贤典
+陈辉吉
+陈震宇
+陈黎桂
+陈学明
+陈宪仁
+陈宪仪
+陈忆雯
+陈晓姗
+陈晓青
+陈晓风
+陈晓岚
+陈晓菁
+陈晓筠
+陈晓慧
+陈晓丽
+陈树年
+陈泽珊
+陈燕伶
+陈燕菁
+陈燕怜
+陈颖君
+陈颖祥
+陈颖慧
+陈穆蓉
+陈翰璋
+陈蕙芳
+陈蕙苹
+陈锡华
+陈锦秀
+陈锦堂
+陈锦慧
+陈锦鸿
+陈静如
+陈静宜
+陈静怡
+陈静怡
+陈静怡
+陈静芳
+陈静淑
+陈静宁
+陈静仪
+陈静慧
+陈静贤
+陈龙生
+陈龙宽
+陈曙东
+陈聪仁
+陈臆仁
+陈薇
+陈薇如
+陈谦毅
+陈骏扬
+陈鸿文
+陈鸿志
+陈鸿清
+陈鸿裕
+陈鸿霖
+陈璇如
+陈丰振
+陈怀哲
+陈玺争
+陈琼淇
+陈琼桦
+陈艺心
+陈赞中
+陈铿任
+陈韵夙
+陈韵如
+陈韵如
+陈韵如
+陈韵竹
+陈韵婷
+陈韵静
+陈鹏禾
+陈麒元
+陈麒全
+陈丽文
+陈丽如
+陈丽宇
+陈丽而
+陈丽芬
+陈丽卿
+陈丽珠
+陈丽婷
+陈丽萍
+陈丽雯
+陈丽莲
+陈宝玉
+陈宝莲
+陈耀仁
+陈耀笙
+陈馨怡
+陈俪文
+陈樱容
+陈誉龄
+陈鹤中
+陈懿映
+陈艳铃
+陈芊秀
+陈怜君
+陈旻政
+陈玠源
+陈姮霏
+陈姵如
+陈姵吟
+陈姵瑱
+陈昶昱
+陈珈琦
+陈彧馨
+陈琇如
+陈堜
+陈琮闵
+陈琬婷
+陈琬菁
+陈椸涓
+陈玮
+陈玮典
+陈玮耘
+陈玮昶
+陈筱芳
+陈筱婷
+陈筱筠
+陈萩芸
+陈钰玫
+陈钰婷
+陈钰玺
+陈铫茹
+陈霈宇
+陈薏雯
+陈滢如
+陈滢淑
+陈嬿因
+陈嬿伶
+陈顗文
+陈鑫麟
+陆小燕
+陆正义
+陆季宏
+陆信龙
+陆津华
+陆梅婷
+陆云泰
+陆凤玲
+陆淯铃
+陶育均
+陶惟萱
+章文芝
+章佳云
+章根源
+章翔
+章琼方
+麦佩雯
+麦卢宝全
+傅一雄
+傅子
+傅文进
+傅正希
+傅光智
+傅宏斌
+傅亚凡
+傅怡芳
+傅金宏
+傅建国
+傅映先
+傅美蓉
+傅佩淇
+傅国栋
+傅启皇
+傅淑雯
+傅斯平
+傅雅卿
+傅煌锦
+傅铅文
+傅德政
+傅锹淼
+傅琮
+单亦侠
+喻至善
+乔宗尧
+富康翔
+彭上吉
+彭士
+彭仁志
+彭及辰
+彭文宏
+彭文慧
+彭以信
+彭正良
+彭玉华
+彭伊芬
+彭如敏
+彭成杰
+彭旭初
+彭宏君
+彭志豪
+彭佳伟
+彭宗意
+彭怡蕙
+彭朋雍
+彭秉正
+彭保欣
+彭俊福
+彭冠瑛
+彭威翔
+彭建荣
+彭律凡
+彭柏威
+彭秋萍
+彭若慈
+彭郁仁
+彭哲仁
+彭浩伦
+彭伟君
+彭国峰
+彭崇信
+彭启钧
+彭淑珍
+彭盛
+彭雪琦
+彭喜浩
+彭晶声
+彭滋萍
+彭舒彦
+彭开明
+彭雅绢
+彭爱苹
+彭瑞苓
+彭圣萍
+彭嘉君
+彭荣桂
+彭铭淇
+彭慧如
+彭贤一
+彭晓琪
+彭锦炫
+彭骏洁
+彭丽慧
+彭馨慧
+彭玮彦
+彭颀苹
+景雨秋
+曾凡哲
+曾于慈
+曾千豪
+曾士轩
+曾士
+曾子庭
+曾小玲
+曾仁佑
+曾元志
+曾孔钰
+曾文
+曾文忠
+曾文彬
+曾文慧
+曾文顗
+曾世煌
+曾令瑜
+曾平诰
+曾正耀
+曾玉如
+曾玉菁
+曾立德
+曾仲盟
+曾吉宏
+曾如君
+曾安琪
+曾羽岭
+曾君豪
+曾志玄
+曾志杰
+曾志麟
+曾秀梅
+曾育菁
+曾佳玲
+曾佳瑱
+曾季歆
+曾尚志
+曾怡娟
+曾怡嘉
+曾承志
+曾明德
+曾泓霖
+曾芝兰
+曾信杰
+曾俊彦
+曾俊智
+曾俊豪
+曾俊玮
+曾冠桦
+曾品彰
+曾姿绮
+曾威谕
+曾建和
+曾建博
+曾建荣
+曾建霖
+曾彦闵
+曾彦翰
+曾思维
+曾政豪
+曾昭翔
+曾映龄
+曾柏涵
+曾柏兴
+曾皇龙
+曾秋敏
+曾美怡
+曾美华
+曾美龄
+曾英峰
+曾郁文
+曾郁颖
+曾家振
+曾展其
+曾书慧
+曾佩琳
+曾素铃
+曾轩彬
+曾伟翔
+曾健逢
+曾国志
+曾国书
+曾国裕
+曾国鋆
+曾婉惠
+曾庸哲
+曾启强
+曾梅玉
+曾淑芳
+曾淑敏
+曾淑萍
+曾涵副
+曾祥达
+曾贯智
+曾凯悌
+曾博彦
+曾富钰
+曾惠玲
+曾惠雯
+曾斐红
+曾智弘
+曾智祺
+曾湘云
+曾舒平
+曾华龄
+曾贵祯
+曾钧鼎
+曾雅青
+曾雅惠
+曾雅铉
+曾云沐
+曾意文
+曾慈惠
+曾晖洸
+曾溥元
+曾焕杰
+曾瑞晃
+曾瑛琳
+曾筠凊
+曾圣然
+曾裕凯
+曾诗翰
+曾靖娟
+曾鼎元
+曾嘉英
+曾荣
+曾碧莲
+曾维群
+曾铭衔
+曾德龙
+曾庆瑄
+曾慧真
+曾澄堉
+曾宪忠
+曾晓琪
+曾蕙菁
+曾静怡
+曾繁青
+曾鸿家
+曾怀贤
+曾琼慧
+曾韵真
+曾丽娟
+曾宝磁
+曾继增
+曾耀贤
+曾馨仪
+曾龄慧
+曾郅絜
+曾琮彦
+曾暐清
+曾筱婷
+曾钰芬
+曾瞍
+游力行
+游士汉
+游大纬
+游之娴
+游文志
+游文聪
+游世斌
+游本威
+游玉姿
+游兆君
+游君苹
+游志伟
+游李雄
+游亚俐
+游佳敏
+游佩勋
+游宗宪
+游宜群
+游怡祥
+游昌翰
+游明仪
+游欣
+游青霏
+游奕霖
+游政璋
+游秋怡
+游英如
+游娟娟
+游家豪
+游恩政
+游佩筠
+游高杰
+游婉青
+游启辉
+游淑如
+游淑惠
+游祥杰
+游凯媜
+游乔智
+游惠玲
+游景翔
+游智超
+游朝舜
+游竣盛
+游舜杰
+游进富
+游雅芳
+游雅婷
+游雅筠
+游瑞莲
+游裕德
+游荣华
+游庆芳
+游辉祥
+游晓芸
+游锡宗
+游骏伟
+游镇邦
+游献群
+游旻宪
+游矞皇
+汤一珊
+汤今兰
+汤玉琴
+汤志忠
+汤佳翰
+汤岳豊
+汤治邦
+汤家豪
+汤健文
+汤渊富
+汤富棋
+汤咏瑜
+汤雅枫
+汤庆铮
+汤鸿贤
+焦信祥
+程之宁
+程文锺
+程立辉
+程志文
+程尚则
+程秉鑫
+程奕欣
+程建翰
+程柏章
+程秋兰
+程伟政
+程婉欣
+程淑玲
+程斐文
+程雅惠
+程诗婷
+程洁菡
+程琼萱
+程蕴霞
+童士芬
+童弘
+童安亨
+童信和
+童美满
+童惟新
+童湘芸
+童圣杰
+童韵如
+童滢蓉
+舒婷婷
+华国锋
+覃思齐
+费骐葳
+贺厚平
+贺瑞丽
+买菁华
+辜信福
+辜郁仁
+辜惠群
+辜静怡
+闵任远
+阳正光
+云智勇
+须上苑
+冯允中
+冯文政
+冯永滢
+冯佑雄
+冯佳琦
+冯长龙
+冯建筌
+冯美珊
+冯晋嘉
+冯彩娟
+冯博伟
+冯翔瑜
+冯瑞阳
+冯志遵
+冯炽炜
+冯耀文
+黄一
+黄一伦
+黄乙上
+黄力言
+黄上芳
+黄凡维
+黄于芬
+黄于珊
+黄于哲
+黄于真
+黄于祯
+黄千芳
+黄千凌
+黄千华
+黄士
+黄士欣
+黄士原
+黄士峰
+黄士钊
+黄士嘉
+黄士豪
+黄士贤
+黄大伦
+黄子才
+黄子建
+黄子卿
+黄子轩
+黄子穆
+黄小佩
+黄小娟
+黄山峰
+黄才旺
+黄中伟
+黄之亭
+黄仁弘
+黄仁良
+黄仁柏
+黄仁璋
+黄元山
+黄元隆
+黄元骏
+黄友谦
+黄天健
+黄少雨
+黄心怡
+黄心怡
+黄心怡
+黄心仪
+黄心姮
+黄文正
+黄文孝
+黄文村
+黄文怡
+黄文信
+黄文彦
+黄文玲
+黄文益
+黄文胜
+黄文隆
+黄文祺
+黄文荣
+黄文璋
+黄文龙
+黄文麒
+黄日青
+黄月瑾
+黄世安
+黄世宜
+黄世朋
+黄世坚
+黄世涌
+黄世嘉
+黄世增
+黄世颖
+黄以乔
+黄仕达
+黄加欣
+黄可甄
+黄巧婷
+黄平宇
+黄弘吉
+黄弘毅
+黄正一
+黄正安
+黄正佩
+黄正伟
+黄正顺
+黄正锟
+黄永仁
+黄永升
+黄永智
+黄永汉
+黄汀满
+黄玉君
+黄玉雨
+黄玉娟
+黄玉婷
+黄玉菁
+黄玉莹
+黄玉兰
+黄立文
+黄立芬
+黄立达
+黄立纬
+黄亦萱
+黄仲正
+黄仲煦
+黄任延
+黄光玉
+黄光满
+黄兆敏
+黄全富
+黄吉廷
+黄名池
+黄夙慧
+黄如真
+黄如翰
+黄宇廷
+黄守田
+黄安德
+黄旭弘
+黄旭辉
+黄江瑜
+黄百灿
+黄聿君
+黄至枰
+黄至鹏
+黄伯年
+黄克任
+黄君怡
+黄妙芬
+黄孝彰
+黄宏亮
+黄宏进
+黄宏骏
+黄志仁
+黄志平
+黄志成
+黄志明
+黄志伟
+黄志强
+黄志扬
+黄志雄
+黄志嘉
+黄志豪
+黄志铭
+黄志龙
+黄杏如
+黄沛声
+黄秀玲
+黄秀容
+黄秀华
+黄秀蓉
+黄育信
+黄良
+黄邦彦
+黄依文
+黄佳元
+黄佳春
+黄佳媛
+黄佳华
+黄佳娴
+黄佳蕙
+黄佩俐
+黄佩萱
+黄卓君
+黄坤德
+黄孟专
+黄孟樵
+黄宗基
+黄宗贤
+黄宜玲
+黄宛贞
+黄幸仪
+黄念芹
+黄怡君
+黄怡珊
+黄怡茹
+黄怡萍
+黄怡菁
+黄怡雯
+黄怡嘉
+黄怡维
+黄怡龄
+黄承德
+黄昌鼎
+黄明志
+黄明彦
+黄明理
+黄明瑞
+黄明慧
+黄昕岚
+黄东海
+黄松筠
+黄欣怡
+黄欣愉
+黄欣蕙
+黄河顺
+黄治平
+黄玟瑾
+黄秉钧
+黄芝华
+黄芷云
+黄金汤
+黄金树
+黄长泽
+黄亭萍
+黄亮凯
+黄信文
+黄信捷
+黄信棠
+黄信恺
+黄信彰
+黄信铭
+黄信颖
+黄信斌
+黄保璁
+黄俊生
+黄俊哲
+黄俊淇
+黄俊杰
+黄俊杰
+黄俊杰
+黄俊凯
+黄俊棋
+黄俊舜
+黄俊隆
+黄俊祺
+黄俊嘉
+黄俊维
+黄俊豪
+黄俊贤
+黄俊颖
+黄俊龙
+黄俊烨
+黄俞斐
+黄冠怡
+黄冠程
+黄冠雅
+黄冠宾
+黄冠龙
+黄勇慧
+黄厚盛
+黄品杰
+黄品毅
+黄奕揆
+黄奕霖
+黄姿婷
+黄姿绫
+黄威凯
+黄威铭
+黄宣凯
+黄宣穆
+黄建中
+黄建文
+黄建青
+黄建凯
+黄建智
+黄建程
+黄建钧
+黄建源
+黄建彰
+黄建豪
+黄建铭
+黄建勋
+黄建颖
+黄建龙
+黄彦太
+黄彦强
+黄彦博
+黄彦皓
+黄彦瑜
+黄彦宾
+黄彦樵
+黄彦斌
+黄思凯
+黄思嘉
+黄思贤
+黄思玮
+黄政原
+黄政扬
+黄政龙
+黄春堤
+黄昭仁
+黄昭智
+黄昭维
+黄映瑄
+黄昱中
+黄昱恺
+黄昱龙
+黄柏元
+黄柏强
+黄柏乔
+黄柏翔
+黄柏瑞
+黄柏绮
+黄柏璋
+黄柏翰
+黄柏禲
+黄为栋
+黄炳宪
+黄珊萍
+黄珀钟
+黄盈惠
+黄盈彰
+黄相志
+黄秋芳
+黄秋萍
+黄秋瑛
+黄秋霞
+黄美玉
+黄美玲
+黄美娟
+黄美羚
+黄美筑
+黄美雯
+黄美蓉
+黄美燕
+黄致恒
+黄致远
+黄若薇
+黄茂源
+黄英彦
+黄英杰
+黄英铭
+黄衍钦
+黄贞颖
+黄郁仁
+黄郁玫
+黄郁珊
+黄郁茗
+黄郁婷
+黄郁棠
+黄郁雯
+黄郁静
+黄重凯
+黄韦琪
+黄韦勋
+黄香榕
+黄仓彦
+黄哲枫
+黄孙宇
+黄家珍
+黄家隆
+黄家纬
+黄峻峥
+黄庭钰
+黄振甫
+黄振庭
+黄振诚
+黄振玱
+黄书寅
+黄书钰
+黄泰昆
+黄泰霖
+黄浩天
+黄浩钧
+黄佩芸
+黄佩娟
+黄佩舒
+黄佩瑜
+黄益建
+黄祖贤
+黄素真
+黄纯美
+黄能丰
+黄钊俊
+黄伟宙
+黄伟修
+黄伟峰
+黄伟杰
+黄伟诚
+黄伟铭
+黄健奇
+黄健晏
+黄健溢
+黄凰慈
+黄国全
+黄国芳
+黄国伦
+黄国展
+黄国晋
+黄国轩
+黄国栋
+黄国钧
+黄国裕
+黄国荣
+黄国豪
+黄国钟
+黄堂轩
+黄培峻
+黄培铭
+黄婉贞
+黄婉菁
+黄尉翔
+黄崇训
+黄崇铭
+黄常树
+黄彩铭
+黄惟圣
+黄启宏
+黄启修
+黄启书
+黄启彰
+黄敏
+黄敏修
+黄敏华
+黄敏慧
+黄梅玲
+黄添虎
+黄清泰
+黄清麟
+黄淑岑
+黄淑芬
+黄淑玲
+黄淑贞
+黄淑卿
+黄淑桃
+黄淑梅
+黄淑媛
+黄淑琪
+黄淑华
+黄淑雯
+黄淑甄
+黄淑静
+黄渊贤
+黄皎
+黄祥恩
+黄祥斌
+黄绍萱
+黄莉
+黄莉娟
+黄莉琪
+黄莉嘉
+黄途岩
+黄雪凤
+黄杰文
+黄凯威
+黄凯琪
+黄凯麟
+黄胜志
+黄胜裕
+黄博泰
+黄喜麟
+黄尧伟
+黄婷婷
+黄富
+黄富详
+黄复聪
+黄惠君
+黄惠芬
+黄惠珍
+黄惠娥
+黄惠敏
+黄惠琴
+黄惠勤
+黄惠诗
+黄惠霞
+黄扬名
+黄斯骏
+黄景裕
+黄智勇
+黄智伟
+黄智康
+黄智隆
+黄智铭
+黄智玮
+黄朝琴
+黄朝梁
+黄植懋
+黄湘巧
+黄湘婷
+黄渝芳
+黄琪婷
+黄琳钧
+黄琦棻
+黄登键
+黄竣南
+黄筑钰
+黄善晖
+黄舒彦
+黄舜忠
+黄菁薇
+黄菊英
+黄咏瑞
+黄贵堂
+黄逸
+黄逸纯
+黄逸玮
+黄钧沁
+黄闵农
+黄雅君
+黄雅芳
+黄雅津
+黄雅玲
+黄雅卿
+黄雅淑
+黄雅雪
+黄雅惠
+黄雅琪
+黄雅琴
+黄雅萍
+黄雅雯
+黄雅萱
+黄雅铃
+黄雅慧
+黄雅龄
+黄雯玉
+黄雯筠
+黄顺吉
+黄传围
+黄廉智
+黄意茹
+黄意超
+黄慈
+黄敬元
+黄敬斌
+黄晖文
+黄楷祺
+黄榆婷
+黄毓翎
+黄毓华
+黄源璋
+黄照凯
+黄煦氛
+黄瑟芸
+黄瑞伶
+黄瑞屏
+黄瑞祥
+黄瑞阳
+黄瑞兴
+黄瑜淑
+黄盟凯
+黄祺芬
+黄筠真
+黄义君
+黄义铭
+黄群雄
+黄圣圳
+黄圣哲
+黄圣杰
+黄圣棻
+黄圣鸿
+黄裕中
+黄裕宜
+黄裕盛
+黄裕翔
+黄裕昶
+黄诗芸
+黄诗茹
+黄诗涵
+黄诗惠
+黄诗雯
+黄诗苹
+黄道全
+黄铃琪
+黄隽琦
+黄靖芸
+黄靖惠
+黄靖雯
+黄鼎能
+黄嘉民
+黄嘉勇
+黄嘉伦
+黄嘉雪
+黄嘉萱
+黄嘉贤
+黄荣山
+黄荣顺
+黄汉光
+黄汉辉
+黄睿伸
+黄碧云
+黄祯庆
+黄维
+黄维智
+黄肇宏
+黄远宏
+黄铭伟
+黄铭辉
+黄魁彬
+黄仪君
+黄德秀
+黄德炜
+黄庆华
+黄慧玉
+黄慧芬
+黄慧娟
+黄慧茹
+黄慧菁
+黄慧祯
+黄澄伟
+黄蔚仁
+黄贤章
+黄震宇
+黄宪得
+黄忆菁
+黄晓佩
+黄晓音
+黄晓菱
+黄晓薇
+黄燕娥
+黄兴元
+黄蕙萍
+黄铮晖
+黄锦章
+黄静子
+黄静宜
+黄静怡
+黄静莉
+黄龙一
+黄应璇
+黄聪琪
+黄薇琼
+黄骏达
+黄鸿智
+黄礼伸
+黄薰莹
+黄双玉
+黄怀庆
+黄瀚德
+黄琼妃
+黄琼华
+黄琼仪
+黄琼仪
+黄琼慧
+黄琼慧
+黄琼谊
+黄琼
+黄镜生
+黄韵如
+黄韵韵
+黄鹏图
+黄丽妃
+黄丽芬
+黄丽香
+黄丽容
+黄丽蓉
+黄丽铮
+黄宝玉
+黄宝仪
+黄宝稹
+黄献谆
+黄继增
+黄耀文
+黄耀俊
+黄耀德
+黄耀莹
+黄耀辉
+黄议德
+黄钟苇
+黄馨怡
+黄馨仪
+黄馨慧
+黄馨毅
+黄馨霈
+黄龄萱
+黄兰玉
+黄铁豪
+黄显婷
+黄艳玉
+黄玠晟
+黄姵瑄
+黄昶斌
+黄勖轩
+黄琇苓
+黄翊宸
+黄枨吉
+黄琮富
+黄琬君
+黄琬婷
+黄琬雯
+黄琬瑂
+黄菀铃
+黄暐睿
+黄玮欣
+黄玮宁
+黄筱芸
+黄筱乔
+黄筱雁
+黄筱苹
+黄钰娟
+黄钰婷
+黄钰婷
+黄钰斐
+黄钰雯
+黄钲闵
+黄瞍
+黄薏澄
+黄謵说
+黄龆
+涂巧忆
+涂时雨
+涂媄云
+杨
+杨人颖
+杨三贤
+杨千里
+杨千慧
+杨士弘
+杨士朋
+杨士毅
+杨士贤
+杨大毅
+杨子恒
+杨子毅
+杨子瑢
+杨小慧
+杨中孚
+杨之慧
+杨仁华
+杨介文
+杨允中
+杨心怡
+杨心德
+杨文宏
+杨文杰
+杨文媛
+杨文瑞
+杨文仪
+杨文玮
+杨世平
+杨世凯
+杨世鹏
+杨仕馨
+杨可歆
+杨弘先
+杨本圣
+杨正彬
+杨永正
+杨永琦
+杨玉君
+杨玉鼎
+杨白鲸
+杨立群
+杨仲民
+杨兆钦
+杨妃婷
+杨守城
+杨旨祥
+杨自雄
+杨伶慧
+杨妙恩
+杨宏祥
+杨志平
+杨志能
+杨志伟
+杨志祥
+杨志雍
+杨志学
+杨沛莳
+杨秀珠
+杨秀慧
+杨育真
+杨育儒
+杨亚琦
+杨佳欣
+杨佳展
+杨佳菁
+杨佳撰
+杨佳萤
+杨佩珊
+杨佩儒
+杨其瀚
+杨坤英
+杨奇惠
+杨孟修
+杨孟蓉
+杨孟翰
+杨宗
+杨宗倍
+杨宗尧
+杨宗儒
+杨宗颖
+杨宗翰
+杨宗烜
+杨宜文
+杨宜璋
+杨宜蓁
+杨尚训
+杨尚融
+杨岱儒
+杨忠仁
+杨忠宪
+杨怡芳
+杨怡萍
+杨承
+杨承熹
+杨易伦
+杨昌宾
+杨昆霖
+杨明杰
+杨明纯
+杨明诚
+杨明寰
+杨明禧
+杨升桦
+杨东敏
+杨松铭
+杨欣怡
+杨欣佩
+杨欣燕
+杨泓褘
+杨秉顺
+杨芳雄
+杨芸
+杨金璋
+杨长洁
+杨青峰
+杨俊宏
+杨俊辉
+杨奕昶
+杨建彦
+杨思隽
+杨政彬
+杨政勋
+杨政霖
+杨昭辉
+杨为舜
+杨秋男
+杨纪芸
+杨美玲
+杨美惠
+杨美艺
+杨苑利
+杨倩
+杨哲安
+杨哲铭
+杨家明
+杨家祺
+杨家铭
+杨家玮
+杨恭沛
+杨振宗
+杨振汉
+杨晏菁
+杨书豪
+杨涓樱
+杨佩君
+杨佩琦
+杨真珠
+杨素卿
+杨荐翔
+杨虔雅
+杨伟文
+杨伟琪
+杨健国
+杨国松
+杨国鼎
+杨培恩
+杨婉莉
+杨崇鑫
+杨惟白
+杨启宏
+杨敏芳
+杨梵孛
+杨淳砚
+杨清桃
+杨淑元
+杨淑佳
+杨淑芬
+杨淑美
+杨淑敏
+杨淑惠
+杨淑萍
+杨淑雅
+杨淑慧
+杨渊胜
+杨净芝
+杨盛斌
+杨莉芳
+杨雪雅
+杨凯仲
+杨凯杰
+杨凯钧
+杨胜宇
+杨胜斐
+杨勋凯
+杨博宇
+杨博钦
+杨喻闵
+杨壹舒
+杨婷钧
+杨富安
+杨富琛
+杨循婷
+杨惠宇
+杨惠真
+杨惠婷
+杨惠琳
+杨惠雯
+杨敦杰
+杨斯凯
+杨景元
+杨景尧
+杨景雯
+杨智元
+杨智宏
+杨智杰
+杨智尧
+杨智善
+杨智钧
+杨智龙
+杨朝敏
+杨朝舜
+杨森发
+杨涌评
+杨登安
+杨皓玮
+杨策航
+杨善惠
+杨舒帆
+杨舒媛
+杨舒雯
+杨舜钦
+杨菁芬
+杨菱雅
+杨咏菘
+杨贵媛
+杨逸莉
+杨钧百
+杨闵翔
+杨雅玉
+杨雅芳
+杨雅伦
+杨雅淑
+杨雅婷
+杨雅婷
+杨雅岚
+杨雅惠
+杨雅晶
+杨雅翔
+杨雅超
+杨雅雯
+杨雅云
+杨雅茜
+杨雯惠
+杨云翔
+杨顺棋
+杨慈仪
+杨毓玲
+杨焕章
+杨瑞杰
+杨万帆
+杨裕
+杨诗轩
+杨道忠
+杨嘉玲
+杨嘉瑜
+杨嘉丰
+杨荣吉
+杨槐驹
+杨碧雯
+杨维华
+杨赵铭
+杨铭顾
+杨德志
+杨庆隆
+杨慧玲
+杨慧琼
+杨璋
+杨震伟
+杨宪升
+杨晓青
+杨晓菁
+杨桥霖
+杨燕云
+杨蕙芳
+杨蕙嘉
+杨锡宪
+杨静如
+杨静怡
+杨静雯
+杨戴州
+杨爵骏
+杨骏民
+杨曜准
+杨础远
+杨绣绫
+杨丰全
+杨丰铭
+杨镇远
+杨馥诚
+杨琼华
+杨丽冠
+杨丽琴
+杨曦琳
+杨钟铉
+杨灵苓
+杨茜卉
+杨琇如
+杨琇媛
+杨翊佩
+杨琬婷
+杨玮琦
+杨蓁蓁
+杨铠伊
+温丈纬
+温心岚
+温正龙
+温至任
+温秀怡
+温宗
+温承翰
+温金瑞
+温建声
+温若婷
+温展华
+温素梅
+温培青
+温淑怡
+温凯
+温智连
+温雅清
+温圣延
+温铭哲
+温晓华
+温馥远
+温菘渝
+万佳昕
+万建明
+万敏婉
+万晓明
+叶丁源
+叶乃祯
+叶人宾
+叶又嘉
+叶千菊
+叶士新
+叶大苇
+叶子豪
+叶山华
+叶天将
+叶文伟
+叶文龙
+叶世民
+叶代权
+叶正圣
+叶玉玲
+叶亦盛
+叶光愉
+叶向阳
+叶如雯
+叶竹育
+叶佐骏
+叶宏杰
+叶志彦
+叶志博
+叶步旻
+叶秀梅
+叶育峰
+叶依青
+叶佳欣
+叶佳菁
+叶佳勋
+叶佩真
+叶奉杰
+叶孟尧
+叶宗智
+叶宗鑫
+叶宛轩
+叶忠欣
+叶怡君
+叶怡芳
+叶承泓
+叶昌伦
+叶明升
+叶明旋
+叶明鑫
+叶松炫
+叶欣毓
+叶玟君
+叶芳伶
+叶芳萍
+叶芷妘
+叶长青
+叶亭志
+叶信廷
+叶俊宏
+叶俊甫
+叶俊庆
+叶俞杉
+叶冠慧
+叶奕维
+叶姿妏
+叶建君
+叶建升
+叶彦志
+叶思仪
+叶政辉
+叶昭伶
+叶昱志
+叶柏纲
+叶玲岑
+叶秋月
+叶美娟
+叶致忠
+叶衍孜
+叶郁菁
+叶倩
+叶哲全
+叶家宇
+叶家铃
+叶家儒
+叶峻宾
+叶振福
+叶晋嘉
+叶书玮
+叶涓涓
+叶益升
+叶素绫
+叶耿齐
+叶健伟
+叶国贤
+叶张建
+叶欲
+叶淑珍
+叶淑铃
+叶绍任
+叶胜玄
+叶惠文
+叶惠祯
+叶智仁
+叶森渝
+叶咏晴
+叶雁甄
+叶雅婷
+叶雅雯
+叶云鹏
+叶毓峰
+叶义松
+叶铃珊
+叶嘉华
+叶睿哲
+叶铭昌
+叶仪芳
+叶慧欣
+叶洁恩
+叶晓芬
+叶树开
+叶蕙芳
+叶锦凤
+叶曙庆
+叶骏逸
+叶礼维
+叶琼文
+叶宝壬
+叶腾远
+叶骥
+叶玴豪
+叶琤怡
+叶怿馨
+葛世萱
+葛倩如
+董人宏
+董子青
+董巧玲
+董合恩
+董志仁
+董佳豪
+董怡君
+董芳铭
+董姿利
+董彦宏
+董秋瑾
+董修铭
+董振雄
+董能瑞
+董惠芳
+董圣缘
+董慧美
+董鸿楠
+董峣泓
+裘元恺
+解美铃
+詹于芳
+詹子民
+詹仁嘉
+詹文祥
+詹世杰
+詹永祥
+詹立成
+詹如钤
+詹宏彬
+詹志鸿
+詹育雯
+詹佳振
+詹佳兴
+詹佩颖
+詹孟晃
+詹宗宪
+詹宜纹
+詹忠荣
+詹昌吉
+詹明洁
+詹欣宜
+詹青艳
+詹前泰
+詹政峰
+詹美珍
+詹卿苹
+詹家铨
+詹浚升
+詹益伟
+詹益铭
+詹茗芸
+詹婉君
+詹启纬
+詹淑妃
+詹淑萍
+詹淑芩
+詹凯捷
+詹胜钦
+詹富智
+詹惠媛
+詹景尧
+詹智杰
+詹森
+詹翔任
+詹证富
+詹钧维
+詹雅婷
+詹雅闵
+詹雯莹
+詹群毅
+詹嘉璇
+詹德馨
+詹勋明
+詹颖萍
+詹璨嵘
+詹丰宇
+詹鹃年
+詹玓玮
+詹琬渝
+资君仪
+贾治国
+贾爱玫
+贾髐憛
+邹一仲
+邹文隆
+邹立彦
+邹李昌
+邹佳华
+邹宗华
+邹明原
+邹金德
+邹国龙
+邹智仁
+邹新全
+邹维刚
+邹静佩
+雍敦元
+雷宜庭
+雷衍兴
+雷惠琦
+雷雅菁
+雷鹏程
+廖丁逸
+廖于文
+廖千慧
+廖士尧
+廖大樟
+廖小华
+廖仁禾
+廖元利
+廖允靖
+廖文平
+廖文茹
+廖文评
+廖文甄
+廖文洁
+廖月观
+廖仕绮
+廖本元
+廖正伟
+廖玉
+廖玉萍
+廖丞晞
+廖光辉
+廖守正
+廖伯璋
+廖含洁
+廖宏慈
+廖志民
+廖志伟
+廖志远
+廖秀卿
+廖育良
+廖良淮
+廖佳玥
+廖佩如
+廖佩凤
+廖宗山
+廖宜群
+廖怡玲
+廖怡景
+廖承庆
+廖明仪
+廖欣仪
+廖芳玲
+廖芝坚
+廖青松
+廖信宽
+廖俊杰
+廖俊钦
+廖冠美
+廖奕任
+廖姿毓
+廖建城
+廖建钧
+廖彦凯
+廖恒毅
+廖春菊
+廖昱树
+廖炳焜
+廖盈奇
+廖秋怡
+廖美玲
+廖美琳
+廖茂良
+廖英男
+廖英杰
+廖苑君
+廖述茂
+廖郁婷
+廖倩宜
+廖卿惠
+廖哲论
+廖家玲
+廖家宁
+廖家莹
+廖家婧
+廖峻毅
+廖恩慈
+廖振良
+廖挺崴
+廖书佩
+廖桂君
+廖浚宏
+廖佩君
+廖佩玫
+廖佩爱
+廖益群
+廖素卿
+廖耕辉
+廖干成
+廖伟成
+廖伟辰
+廖伟斯
+廖伟鸿
+廖健明
+廖健铭
+廖国宏
+廖国勋
+廖国华
+廖基宏
+廖培瑜
+廖婉利
+廖婉欣
+廖寄萍
+廖崇硕
+廖康霖
+廖惇治
+廖启良
+廖敏汝
+廖敏玲
+廖梓茜
+廖淑君
+廖淑贞
+廖淑惠
+廖淑丽
+廖祥达
+廖贯佩
+廖章棋
+廖富田
+廖惠娟
+廖智辉
+廖琪美
+廖舒仪
+廖进平
+廖雅倩
+廖顺帆
+廖楷文
+廖筠怡
+廖萱芹
+廖嗾
+廖嘉阳
+廖汉鼎
+廖维珍
+廖铭仁
+廖庆贺
+廖慧雯
+廖莹璇
+廖宪堂
+廖晓慧
+廖锦瑜
+廖擎帆
+廖曜莹
+廖麒闵
+廖耀东
+廖显庆
+廖偲妤
+廖斌杰
+廖钰铭
+汉述仁
+熊立新
+熊东增
+熊凌霆
+熊崇纬
+熊勤云
+甄慧明
+管幼仲
+管金玲
+管琪芸
+翟敦敏
+台文照
+蒲信全
+蒲骏毅
+裴伟程
+褚心怡
+褚俊伟
+褚家德
+宾敬文
+赵士齐
+赵子维
+赵仁佑
+赵元宏
+赵友崧
+赵文忠
+赵方恺
+赵世裕
+赵必昌
+赵玉莲
+赵安琪
+赵君杰
+赵宏钧
+赵志豪
+赵育琳
+赵佩芬
+赵宜君
+赵怡婷
+赵明辉
+赵芷菁
+赵俊凯
+赵品彦
+赵建胜
+赵恬仪
+赵炫勋
+赵秋凤
+赵英龙
+赵修霖
+赵家良
+赵家贤
+赵振宏
+赵桂青
+赵佩汛
+赵祐甄
+赵伟廷
+赵伟翔
+赵国志
+赵培霖
+赵崇闵
+赵敏如
+赵淑芳
+赵皎君
+赵婷完
+赵湘君
+赵钧志
+赵瑞昌
+赵嘉敬
+赵广元
+赵慕群
+赵树仪
+赵龙基
+赵双骏
+赵玹羲
+远藤永康
+鄞豪辉
+齐雪汝
+刘乙萱
+刘乃萱
+刘人豪
+刘几萍
+刘力豪
+刘又慈
+刘上旗
+刘于菁
+刘千瑜
+刘士华
+刘士豪
+刘大荣
+刘子由
+刘子嘉
+刘子颀
+刘山豪
+刘中琪
+刘仁正
+刘仁裕
+刘元凤
+刘少维
+刘心仪
+刘文玉
+刘文玲
+刘文胜
+刘文超
+刘文福
+刘日顺
+刘世文
+刘世清
+刘世庆
+刘以筠
+刘台
+刘弘伟
+刘正河
+刘正雄
+刘永健
+刘玉文
+刘玉家
+刘玉萍
+刘玉琇
+刘立伟
+刘亦升
+刘伊修
+刘仲涵
+刘光杰
+刘兆容
+刘全彬
+刘名娟
+刘如芳
+刘如薰
+刘宇薇
+刘安祥
+刘旭芬
+刘汝娟
+刘至安
+刘伯彦
+刘君祺
+刘孝伦
+刘宏伟
+刘廷楷
+刘志勇
+刘志浩
+刘志源
+刘志玮
+刘沂昀
+刘秀郁
+刘秀雯
+刘育成
+刘育志
+刘育宗
+刘育洸
+刘育诚
+刘育颖
+刘邦平
+刘邦相
+刘亚芸
+刘依文
+刘佳沐
+刘佳怡
+刘佳芳
+刘佳洧
+刘佳琪
+刘佳达
+刘佳颖
+刘侃如
+刘佩青
+刘佩绫
+刘和德
+刘坤颖
+刘孟佳
+刘孟冠
+刘孟翰
+刘宗怡
+刘宗葆
+刘定宇
+刘宜昆
+刘宜婷
+刘宛如
+刘冈陵
+刘幸雪
+刘忠勋
+刘怡伶
+刘怡君
+刘怡君
+刘怡君
+刘怡和
+刘怡芬
+刘怡惠
+刘怡静
+刘承桦
+刘昌
+刘昌诚
+刘明合
+刘明杰
+刘明哲
+刘明达
+刘明丽
+刘升鑫
+刘果珍
+刘欣坤
+刘欣怡
+刘欣茹
+刘武浚
+刘玟成
+刘玫宁
+刘穹林
+刘芳吟
+刘芳玲
+刘芳兰
+刘芬芳
+刘采真
+刘金凤
+刘青苹
+刘信宏
+刘信良
+刘信鸿
+刘俊宏
+刘俊廷
+刘俊良
+刘俊杰
+刘俊毅
+刘俊岩
+刘俐梅
+刘冠妍
+刘冠良
+刘冠显
+刘勃彦
+刘品宜
+刘奕志
+刘姿
+刘姿吟
+刘威汗
+刘威昌
+刘建民
+刘建宏
+刘建宏
+刘建村
+刘建良
+刘建明
+刘建德
+刘建町
+刘彦君
+刘彦廷
+刘彦良
+刘彦博
+刘律明
+刘思洁
+刘恪人
+刘政勋
+刘昭如
+刘映秀
+刘昱辰
+刘柏宏
+刘柏麟
+刘为明
+刘珊妮
+刘珍佑
+刘盈如
+刘盈秀
+刘盈兰
+刘秋成
+刘秋燕
+刘美君
+刘美仑
+刘美玲
+刘美华
+刘羿汝
+刘若谨
+刘英龙
+刘贞伶
+刘军毅
+刘韦成
+刘倍如
+刘修明
+刘哲宇
+刘哲郎
+刘哲玮
+刘家成
+刘家宏
+刘家升
+刘家琳
+刘家僖
+刘家豪
+刘家凤
+刘家馨
+刘容懿
+刘峻伶
+刘峰郡
+刘恩吉
+刘振中
+刘振豪
+刘晋育
+刘晏诚
+刘书宏
+刘根豪
+刘桐盛
+刘浚铭
+刘佩怡
+刘益伸
+刘益祯
+刘祖宁
+刘素玲
+刘纯杏
+刘耕维
+刘轩宇
+刘伟立
+刘伟诚
+刘国平
+刘国栋
+刘国龙
+刘婉玲
+刘崇理
+刘康楝
+刘得光
+刘启平
+刘敏琪
+刘淳雅
+刘淑芬
+刘淑贞
+刘淑莉
+刘淑华
+刘淑慧
+刘祥民
+刘莉燕
+刘凯茹
+刘博文
+刘富明
+刘惠怡
+刘惠纹
+刘扬铭
+刘智仁
+刘智钧
+刘朝莲
+刘湘琪
+刘皓宁
+刘舒慈
+刘咏薇
+刘逸竹
+刘闵结
+刘雅君
+刘雅玲
+刘雅惠
+刘雅萍
+刘雅慧
+刘云霞
+刘勤经
+刘敬民
+刘毓波
+刘源伦
+刘瑞芳
+刘瑞豪
+刘经纶
+刘裕宏
+刘诗韵
+刘靖
+刘嘉育
+刘嘉淳
+刘嘉雯
+刘嘉桦
+刘彰
+刘荣德
+刘熙慧
+刘硕稳
+刘维泰
+刘肇鹏
+刘铭村
+刘铭辉
+刘凤兴
+刘德正
+刘德诚
+刘庆镇
+刘慧玲
+刘慧婷
+刘慧珑
+刘莹娟
+刘贤荧
+刘震鸿
+刘忆
+刘晓芬
+刘晓琪
+刘晓桦
+刘树蕙
+刘燕萍
+刘璟锋
+刘颖蒨
+刘兴家
+刘蕙瑄
+刘锦堂
+刘锦鸿
+刘静芳
+刘静华
+刘龙山
+刘爵维
+刘锺霖
+刘鸿霖
+刘璧莹
+刘镇嘉
+刘瀚阳
+刘韵琦
+刘丽惠
+刘宝婷
+刘耀升
+刘译聪
+刘灌辉
+刘懿慧
+刘赞嘻
+刘旻珊
+刘姵嘉
+刘挐
+刘翊邡
+刘玮玲
+刘筱慧
+刘滢騿
+厉斌中
+樊乃嘉
+樊修龙
+乐子骏
+欧士源
+欧世洋
+欧如程
+欧志盈
+欧邦华
+欧宗原
+欧怡秀
+欧昀修
+欧长晏
+欧俊彦
+欧建民
+欧政艳
+欧美莹
+欧娉妦
+欧书豪
+欧淑姿
+欧逸青
+欧阳有慧
+欧阳玫
+欧阳惠如
+欧阳铭文
+欧阳忻忆
+欧荣杰
+欧颖君
+欧缮嘉
+潘
+潘允仁
+潘文华
+潘正元
+潘玉惠
+潘亦蕾
+潘成富
+潘宏宗
+潘志伟
+潘秀盈
+潘佳妤
+潘佩君
+潘宗裕
+潘延辉
+潘怡君
+潘怡瑾
+潘明楷
+潘玟桦
+潘亮如
+潘信翰
+潘俊良
+潘冠宏
+潘品洁
+潘威历
+潘建成
+潘建彰
+潘彦蓉
+潘政纬
+潘柔考
+潘珍琪
+潘美玲
+潘述东
+潘家铭
+潘泰全
+潘能哲
+潘婉萍
+潘淑雯
+潘惠娟
+潘进益
+潘雅馨
+潘瑞香
+潘裕智
+潘睿哲
+潘仪恬
+潘慧敏
+潘儒莹
+潘锦昌
+潘鸿铭
+潘丽萍
+潘姵如
+潘钰柔
+滕忆雯
+练建伸
+蒋中衍
+蒋正福
+蒋汝安
+蒋沆祥
+蒋佳珊
+蒋佩余
+蒋孟儒
+蒋宜静
+蒋怡慧
+蒋明儒
+蒋长旻
+蒋政颖
+蒋佩泠
+蒋淑慧
+蒋萍
+蒋苇立
+蒋德才
+蒋滨州
+蒋耀毅
+蔡丁经哲
+蔡士旺
+蔡子怡
+蔡中钧
+蔡仁伟
+蔡元正
+蔡元雄
+蔡天祺
+蔡文仁
+蔡文彦
+蔡文伟
+蔡文博
+蔡文钦
+蔡文嘉
+蔡文鸿
+蔡月珠
+蔡世杰
+蔡世鸿
+蔡巧如
+蔡弘原
+蔡正宗
+蔡正晖
+蔡永彬
+蔡永莹
+蔡玉秋
+蔡玉菁
+蔡立芬
+蔡亦雯
+蔡仲宁
+蔡兆骅
+蔡名书
+蔡如婷
+蔡宇伦
+蔡安乔
+蔡旭曜
+蔡羽容
+蔡行真
+蔡伯鸿
+蔡君毅
+蔡宏文
+蔡宏培
+蔡廷颖
+蔡志宏
+蔡志明
+蔡志晃
+蔡志扬
+蔡志维
+蔡志鸿
+蔡沁玲
+蔡沛婷
+蔡汶鸿
+蔡秀玲
+蔡秀惠
+蔡育正
+蔡育彦
+蔡育真
+蔡育勋
+蔡贝珊
+蔡享翰
+蔡依珊
+蔡依容
+蔡依龄
+蔡佳伶
+蔡佳宏
+蔡佳良
+蔡佳欣
+蔡佳芬
+蔡佳玲
+蔡佳珍
+蔡佳容
+蔡佳真
+蔡佳航
+蔡佳琳
+蔡佳蓉
+蔡佳桦
+蔡佳颖
+蔡佳霖
+蔡佳礽
+蔡佩如
+蔡佩君
+蔡佩妤
+蔡佩芳
+蔡佩芬
+蔡佩珊
+蔡佩珊
+蔡佩玲
+蔡佩娥
+蔡佩纹
+蔡佩蓉
+蔡佩颖
+蔡佩静
+蔡侑廷
+蔡其佩
+蔡协甫
+蔡受勋
+蔡坤佑
+蔡坤雄
+蔡坤锦
+蔡奇均
+蔡奇霖
+蔡孟君
+蔡孟育
+蔡孟芳
+蔡孟秋
+蔡孟哲
+蔡孟真
+蔡孟雄
+蔡孟儒
+蔡孟桦
+蔡孟谕
+蔡季玲
+蔡宗佑
+蔡宗志
+蔡宗玫
+蔡宗益
+蔡宗达
+蔡宗儒
+蔡宗宪
+蔡宗颖
+蔡宗翰
+蔡宗霖
+蔡宜君
+蔡宜廷
+蔡宜芳
+蔡宜珊
+蔡宜倩
+蔡宜真
+蔡宜蓉
+蔡宜霖
+蔡宜蓁
+蔡宛玲
+蔡宛谕
+蔡尚岳
+蔡尚颖
+蔡岱勋
+蔡岳书
+蔡幸如
+蔡幸恒
+蔡幸淳
+蔡弦豪
+蔡忠信
+蔡忠颖
+蔡怡君
+蔡怡萍
+蔡承昊
+蔡承璋
+蔡承翰
+蔡易亨
+蔡易升
+蔡易宪
+蔡昌宇
+蔡昌儒
+蔡昆佑
+蔡明
+蔡明泛
+蔡明宏
+蔡明杉
+蔡明宗
+蔡明芳
+蔡明伦
+蔡明哲
+蔡明峰
+蔡明茵
+蔡明钦
+蔡明蒲
+蔡明赐
+蔡明宪
+蔡明颖
+蔡明龙
+蔡昀甫
+蔡升伯
+蔡升颖
+蔡东明
+蔡东颖
+蔡杰志
+蔡松柏
+蔡松霖
+蔡欣怡
+蔡欣伦
+蔡欣达
+蔡欣颖
+蔡武谚
+蔡牧勋
+蔡直勋
+蔡秉昆
+蔡秉璋
+蔡秉谕
+蔡芳洵
+蔡采芳
+蔡金峰
+蔡金龙
+蔡长荣
+蔡雨洁
+蔡青峰
+蔡信良
+蔡俊晏
+蔡俊贤
+蔡品仪
+蔡宥定
+蔡建裕
+蔡思捷
+蔡政宏
+蔡政言
+蔡政哲
+蔡政群
+蔡政勋
+蔡政翰
+蔡政龙
+蔡昭龙
+蔡柏毅
+蔡玲津
+蔡禹歆
+蔡纪源
+蔡美芝
+蔡美莉
+蔡美慧
+蔡英宗
+蔡郁君
+蔡韦志
+蔡凌凤
+蔡娟娟
+蔡家华
+蔡容瑛
+蔡悦玟
+蔡振议
+蔡栩维
+蔡佩怡
+蔡真禕
+蔡素碧
+蔡茹茵
+蔡伟杰
+蔡国手
+蔡国圣
+蔡培译
+蔡崇民
+蔡启堂
+蔡添文
+蔡淑妃
+蔡淑怡
+蔡淑玲
+蔡淑真
+蔡淑惠
+蔡淑瑜
+蔡淑薇
+蔡盛勋
+蔡雪卿
+蔡胜雄
+蔡博全
+蔡乔安
+蔡富贵
+蔡惠如
+蔡惠美
+蔡惠琪
+蔡惠燕
+蔡景淑
+蔡智宏
+蔡智暐
+蔡湘怡
+蔡皓明
+蔡舒宇
+蔡菁菁
+蔡咏翔
+蔡逸珊
+蔡进昌
+蔡隆泰
+蔡雅君
+蔡雅芬
+蔡雅茹
+蔡雅惠
+蔡雅菁
+蔡雅慧
+蔡雯淇
+蔡传德
+蔡桢瑜
+蔡毓霖
+蔡瑞文
+蔡瑞峰
+蔡瑞麒
+蔡义益
+蔡裕健
+蔡诗薏
+蔡嘉仁
+蔡嘉恒
+蔡嘉章
+蔡嘉庆
+蔡荣昌
+蔡荣贤
+蔡汉义
+蔡碧容
+蔡福晏
+蔡维玲
+蔡维蓁
+蔡裴伶
+蔡铭
+蔡铭峰
+蔡铭贤
+蔡凤仪
+蔡征霖
+蔡慧民
+蔡慧贞
+蔡慧萱
+蔡毅轩
+蔡贤皇
+蔡学文
+蔡忆铃
+蔡晓然
+蔡泽铭
+蔡颖箴
+蔡翰熊
+蔡蕙婷
+蔡锦坡
+蔡静宜
+蔡静惠
+蔡龙仪
+蔡翼如
+蔡鸿民
+蔡鸿斌
+蔡璧光
+蔡丰文
+蔡丰杰
+蔡镇岳
+蔡鹃弥
+蔡琼仪
+蔡丽芳
+蔡丽惠
+蔡献毅
+蔡耀群
+蔡耀驹
+蔡馨仪
+蔡佶兴
+蔡旻芳
+蔡旻宪
+蔡琄竹
+蔡歆怡
+蔡玮竑
+蔡缏
+蔡鑫廷
+谈昭兰
+郑一凡
+郑乃佳
+郑人元
+郑力仁
+郑又仁
+郑士韦
+郑子见
+郑小岚
+郑尹斯
+郑仁富
+郑元孝
+郑元瑜
+郑友诚
+郑心如
+郑文正
+郑文彬
+郑文富
+郑文嘉
+郑月枝
+郑世昌
+郑世湘
+郑仕鑫
+郑巧青
+郑弘伟
+郑正诚
+郑永津
+郑玉伶
+郑玉英
+郑玉菁
+郑立享
+郑亘吟
+郑伊真
+郑仲宏
+郑仲贤
+郑光佑
+郑光淳
+郑兆均
+郑先萌
+郑吉佑
+郑吏孜
+郑合修
+郑夙涵
+郑如欣
+郑如纯
+郑宇宏
+郑宇净
+郑守东
+郑安芸
+郑安翔
+郑成棠
+郑旭盛
+郑有财
+郑百婷
+郑羽晴
+郑至刚
+郑伯南
+郑君达
+郑宏明
+郑志功
+郑志伟
+郑志龙
+郑秀怡
+郑秀娟
+郑秀慧
+郑育升
+郑贝如
+郑佳宜
+郑佳祥
+郑佳仪
+郑佩珊
+郑其雯
+郑孟玲
+郑宗杰
+郑宜芳
+郑幸宜
+郑怡君
+郑怡婷
+郑昌岳
+郑明忠
+郑明铨
+郑欣如
+郑欣荣
+郑秉泓
+郑芸芸
+郑长志
+郑俊宏
+郑勇猛
+郑建佳
+郑彦达
+郑春菊
+郑省村
+郑美玉
+郑美琴
+郑若琤
+郑迪允
+郑倩如
+郑家典
+郑家铭
+郑振宜
+郑书钰
+郑佩君
+郑祐阡
+郑素彬
+郑茗聪
+郑伟珊
+郑国正
+郑国祥
+郑培聪
+郑崇佑
+郑惟心
+郑启荣
+郑梅君
+郑清俊
+郑淑云
+郑淑米
+郑淑玲
+郑淑婷
+郑淑燕
+郑渊藤
+郑祥如
+郑莉雯
+郑杰元
+郑凯仁
+郑凯元
+郑凯文
+郑凯育
+郑凯鸿
+郑胜旭
+郑博仁
+郑博文
+郑乔铭
+郑婷文
+郑富仁
+郑尊孝
+郑惠文
+郑惠君
+郑惠纹
+郑惠霜
+郑斯尹
+郑景仁
+郑景文
+郑景隆
+郑智仁
+郑智元
+郑智昌
+郑智豪
+郑朝元
+郑朝营
+郑植寰
+郑湘昀
+郑皓云
+郑程议
+郑丝雯
+郑翔龙
+郑舒蕊
+郑咏仁
+郑诏谦
+郑逸娴
+郑闵鸿
+郑雅云
+郑雅友
+郑雅文
+郑雅妃
+郑雅芬
+郑雅娟
+郑雅琪
+郑雅甄
+郑雅黛
+郑云鹏
+郑意中
+郑敬桦
+郑毓龄
+郑瑞美
+郑瑜琳
+郑义宪
+郑圣贤
+郑裕年
+郑诗慧
+郑嘉仁
+郑嘉扬
+郑嘉旻
+郑荣娟
+郑福和
+郑肇心
+郑铭泰
+郑凤龄
+郑庆哲
+郑慧芳
+郑慧镁
+郑蔚蝉
+郑宪存
+郑晓怡
+郑晓薇
+郑颖铨
+郑蕙琦
+郑霖骏
+郑静芳
+郑懋杰
+郑谢冠
+郑鸿源
+郑丰嘉
+郑丽君
+郑献文
+郑旻轩
+郑琇仁
+郑埵
+郑絜心
+郑玮隆
+郑钰钟
+郑靋
+邓升敦
+邓文仪
+邓永忠
+邓伊容
+邓后琛
+邓旭敦
+邓志煌
+邓佳玲
+邓宜欣
+邓明芳
+邓金鸿
+邓秋惠
+邓振英
+邓伟贤
+邓淑玲
+邓博仁
+邓惠文
+邓景龙
+邓翔仁
+邓雅心
+邓顺展
+邓裕馨
+邓福隆
+邓震宇
+邓颖骏
+邓劦呈
+鲁忠豪
+鲁宪云
+黎世廉
+黎宇容
+黎明伦
+黎俐均
+黎家伶
+黎婉仪
+黎焕元
+黎铭仁
+黎礼智
+卢三仁
+卢仁杰
+卢文忠
+卢文晟
+卢弘海
+卢永升
+卢申泰
+卢吉勇
+卢呈芳
+卢志忠
+卢志融
+卢育圣
+卢佳惠
+卢叔欣
+卢定均
+卢延华
+卢怡伶
+卢怡涵
+卢承业
+卢欣宜
+卢玫妏
+卢雨涵
+卢保全
+卢俊言
+卢俊儒
+卢冠晔
+卢奎伯
+卢威霖
+卢建宏
+卢建铭
+卢思源
+卢星全
+卢柏良
+卢盈宏
+卢美如
+卢英仁
+卢韦仁
+卢家钰
+卢祖翔
+卢婉瑜
+卢淑丽
+卢惠杰
+卢超群
+卢恺莉
+卢群育
+卢嘉振
+卢德芳
+卢慧宜
+卢辉展
+卢颖志
+卢龙生
+卢韵岑
+卢誉允
+卢筱莹
+穆美蕙
+萧人豪
+萧士泰
+萧尹贞
+萧允泰
+萧文欣
+萧文笔
+萧文魁
+萧世民
+萧以亮
+萧正平
+萧永泓
+萧玉贞
+萧立韦
+萧亦维
+萧仲志
+萧兆琳
+萧名沂
+萧圭妙
+萧如珊
+萧宇伯
+萧安廷
+萧有宏
+萧聿宏
+萧君怡
+萧宏裕
+萧志羽
+萧志豪
+萧秀惠
+萧育隆
+萧佳悌
+萧佩珊
+萧季薇
+萧尚文
+萧怡芳
+萧昆廷
+萧欣怡
+萧芳盈
+萧青萍
+萧俊贤
+萧彦彰
+萧柏轩
+萧美娟
+萧述仁
+萧夏敏
+萧振安
+萧佩如
+萧训国
+萧国正
+萧国宝
+萧崇论
+萧敏彦
+萧清燕
+萧淑珍
+萧淑颖
+萧雪吟
+萧凯懋
+萧博仁
+萧博仰
+萧富元
+萧惠元
+萧惠芳
+萧惠乡
+萧斐如
+萧景聪
+萧智梅
+萧棋元
+萧竣鸿
+萧咏方
+萧逸平
+萧雅丹
+萧雅文
+萧雅莉
+萧雯心
+萧爱玲
+萧焕纬
+萧瑛旗
+萧圣桦
+萧诗璇
+萧嘉琪
+萧宁君
+萧维倩
+萧辅彦
+萧铭权
+萧慧怡
+萧莹真
+萧忆兰
+萧翰英
+萧静宜
+萧丰智
+萧丽娟
+萧鹤轩
+萧琮翰
+萧柽哗
+赖乃颂
+赖士超
+赖仁祐
+赖天鸿
+赖文英
+赖文华
+赖世昌
+赖世维
+赖可恩
+赖弘璘
+赖正野
+赖永铃
+赖玉唐
+赖玉霜
+赖亦贞
+赖妃君
+赖旭彦
+赖伯威
+赖妙宣
+赖宏昌
+赖廷禹
+赖志昌
+赖志伟
+赖志纲
+赖杏儒
+赖秀春
+赖育廷
+赖育麟
+赖佳伶
+赖佳欣
+赖佳慧
+赖佩君
+赖其亮
+赖孟华
+赖宗诚
+赖宜佳
+赖居正
+赖怡文
+赖怡伶
+赖怡君
+赖怡欣
+赖怡桦
+赖昌彦
+赖明宏
+赖明德
+赖东延
+赖欣宜
+赖武溪
+赖玫如
+赖芳延
+赖长佑
+赖信光
+赖信诚
+赖俊兆
+赖俊宏
+赖俊杰
+赖俊达
+赖俐卉
+赖冠宏
+赖勇志
+赖奕帆
+赖姿均
+赖威均
+赖宣妤
+赖建合
+赖建佑
+赖建志
+赖建雄
+赖建融
+赖彦佐
+赖彦良
+赖彦桦
+赖思霖
+赖政宽
+赖昭光
+赖昭龙
+赖昱勋
+赖柏伸
+赖柏龙
+赖珀贤
+赖盈青
+赖科印
+赖红霞
+赖美冠
+赖美錵
+赖茂廷
+赖虹伶
+赖军举
+赖郁雯
+赖韦达
+赖家弘
+赖振生
+赖浩丰
+赖秩光
+赖高志
+赖国恩
+赖基渌
+赖启源
+赖淑怡
+赖淑贞
+赖淑萍
+赖莉雯
+赖惠君
+赖愉芳
+赖钦诠
+赖贵义
+赖隆平
+赖雅琴
+赖顺振
+赖源淳
+赖义中
+赖苇帆
+赖靖宜
+赖嘉慧
+赖荣琏
+赖维廷
+赖铭相
+赖增聪
+赖庆铭
+赖慧娟
+赖洁芳
+赖锋
+赖晓枫
+赖颖辉
+赖锦亿
+赖静璇
+赖鸿铭
+赖韵如
+赖丽
+赖丽雯
+赖芃君
+赖柊棋
+赖玮昀
+赖霈儒
+迟尚权
+钱以恬
+钱良蕙
+钱欣宜
+钱威融
+钱郁苹
+钱逸霖
+钱德俊
+锜惠雯
+阎惠玲
+霍莘瑜
+骆永建
+骆季平
+骆芳梧
+骆建呈
+骆衍龙
+骆嘉庆
+鲍行仁
+鲍国峰
+龙秀贞
+龙星兆
+储于超
+应志宏
+戴乙菁
+戴大钧
+戴元利
+戴文雄
+戴正平
+戴立人
+戴全利
+戴守正
+戴佑洲
+戴呈安
+戴宏丞
+戴志升
+戴杏芳
+戴佳平
+戴季全
+戴怡贞
+戴明珠
+戴俊纬
+戴秋香
+戴郁芳
+戴振远
+戴国良
+戴惟有
+戴莉
+戴森地
+戴雅如
+戴传家
+戴瑞君
+戴群峰
+戴嘉宏
+戴嘉宪
+戴维伸
+戴增瑜
+戴贤祥
+戴静仪
+戴忞臻
+戴薏珊
+缪信宇
+薛乃允
+薛丹桂
+薛世煌
+薛玉锋
+薛光程
+薛如君
+薛百惠
+薛志宏
+薛依蒨
+薛幸嘉
+薛升旭
+薛奕龙
+薛美芳
+薛展立
+薛伟伯
+薛淑靖
+薛凯文
+薛围中
+薛景文
+薛竣纶
+薛雅萍
+薛瑞珍
+薛嘉雄
+薛蓓芳
+薛儒霙
+薛韵婷
+薛钰真
+谢于樱
+谢小梅
+谢仁哲
+谢元贵
+谢心雅
+谢文娟
+谢文尧
+谢文瑜
+谢文斌
+谢以欣
+谢弘亮
+谢正益
+谢永信
+谢玉珠
+谢立群
+谢光中
+谢吉丰
+谢如鸿
+谢戌嘉
+谢聿
+谢佐宜
+谢克强
+谢均毅
+谢宏忠
+谢宏纬
+谢志宏
+谢志明
+谢志伟
+谢志逸
+谢志德
+谢扶锦
+谢秀青
+谢秀莲
+谢育娟
+谢育霖
+谢亚岚
+谢依伦
+谢佳文
+谢佳宏
+谢佳芳
+谢佳倩
+谢佳纯
+谢佳雯
+谢佳颖
+谢佳樱
+谢佩君
+谢佩芳
+谢佩珊
+谢佩珍
+谢佩真
+谢佩蓉
+谢侑书
+谢其斌
+谢周炽
+谢坤宪
+谢孟君
+谢孟芸
+谢孟真
+谢孟桦
+谢孟芩
+谢宗佑
+谢宗容
+谢宗贤
+谢宗宪
+谢宗翰
+谢宜
+谢宜芳
+谢宜伦
+谢宜婷
+谢宜臻
+谢宛玲
+谢宛谘
+谢尚儒
+谢幸宜
+谢庚翰
+谢忠勤
+谢怡婷
+谢承达
+谢于睿
+谢易霖
+谢昌瑾
+谢明
+谢明宏
+谢明村
+谢明芳
+谢明伦
+谢明书
+谢明惠
+谢明憬
+谢明宪
+谢明翰
+谢明諴
+谢升哲
+谢东升
+谢东晓
+谢松宪
+谢欣宏
+谢欣怡
+谢欣钊
+谢欣霖
+谢牧阮
+谢秉容
+谢秉谚
+谢芝青
+谢金贞
+谢长原
+谢雨青
+谢青桦
+谢俊宏
+谢俞枰
+谢奕姝
+谢彦吏
+谢政男
+谢政达
+谢政翰
+谢柏舟
+谢皇翔
+谢秋燕
+谢美玲
+谢致群
+谢郁瑄
+谢家菱
+谢庭恩
+谢晋贤
+谢浩然
+谢素菱
+谢干骏
+谢曼盈
+谢国彬
+谢婉玲
+谢启文
+谢梓麟
+谢清洲
+谢淑芬
+谢淑娟
+谢淑钧
+谢皎盈
+谢笠元
+谢凯伟
+谢博皓
+谢媛琪
+谢岚屏
+谢惠芬
+谢惠萍
+谢景仁
+谢智浩
+谢植冈
+谢皓智
+谢菊蕙
+谢进忠
+谢雅如
+谢雅雪
+谢雅萍
+谢雯凯
+谢顺隆
+谢毓玲
+谢瑞梅
+谢万龙
+谢诗慧
+谢嘉珊
+谢嘉铭
+谢荣哲
+谢碧菁
+谢维仁
+谢翠环
+谢铭忠
+谢铭智
+谢凤玲
+谢德钧
+谢慧珍
+谢慧琼
+谢蔚儒
+谢学纲
+谢晓岚
+谢燕玲
+谢蕙
+谢融齐
+谢静宜
+谢静仪
+谢瑷如
+谢鸿骏
+谢礼成
+谢镇宇
+谢琼文
+谢韵儒
+谢宝瑢
+谢耀养
+谢显铭
+谢旻莉
+谢晟铭
+谢炜频
+谢耀聪
+锺乙民
+锺元振
+锺文宇
+锺文钦
+锺月圆
+锺幼凌
+锺永雄
+锺玉惠
+锺兆民
+锺成奇
+锺伯君
+锺孝其
+锺志宏
+锺志豪
+锺秀芳
+锺育谚
+锺依静
+锺佳真
+锺佳颖
+锺佩芸
+锺佩婷
+锺卓儒
+锺孟憬
+锺宜全
+锺宜兴
+锺尚儒
+锺延华
+锺承璋
+锺易达
+锺明秀
+锺明晏
+锺明宪
+锺升颖
+锺欣翰
+锺秉谚
+锺金璋
+锺俊甫
+锺政民
+锺政锦
+锺盈慧
+锺美琳
+锺郁翎
+锺振泓
+锺纹易
+锺商骏
+锺崇梅
+锺淑芬
+锺淑萍
+锺凯依
+锺惠如
+锺智杰
+锺绚如
+锺逸石
+锺云光
+锺源德
+锺裕文
+锺嘉凤
+锺祯元
+锺铭智
+锺德霖
+锺乐吟
+锺晓岚
+锺锦琳
+锺薰
+锺鹏飞
+锺懿华
+锺旻圜
+鞠岱琦
+韩文丰
+韩克俭
+韩佩劭
+韩宜洁
+韩明伦
+韩相宜
+韩梅
+韩雅而
+韩嘉骏
+韩宝莹
+丛淑华
+简上哲
+简士益
+简士濠
+简小蕙
+简文亨
+简文贵
+简世裕
+简巧婷
+简民龙
+简玉珍
+简立人
+简伊婕
+简仰壮
+简吉聪
+简宇屏
+简百应
+简至霆
+简伶娟
+简君玲
+简妤玲
+简宏伦
+简廷安
+简志安
+简志峰
+简志雄
+简志颖
+简秀杏
+简秀纯
+简贝珊
+简佳琪
+简佩琪
+简宗德
+简怡婷
+简明雁
+简玫玉
+简雨荫
+简建一
+简昭萸
+简美娟
+简虹琪
+简家新
+简佩雅
+简健俊
+简国斌
+简启恒
+简淑芬
+简淑婷
+简莉静
+简博彬
+简惠湘
+简森乙
+简华真
+简雅如
+简顺立
+简敬庭
+简溢均
+简瑞棻
+简圣豪
+简诗峰
+简嘉宏
+简嘉彬
+简嘉龄
+简汉璋
+简祯佑
+简维萱
+简远真
+简铭辰
+简凤仪
+简慧娟
+简忆如
+简锡渊
+简骏贸
+简艺峰
+简骊洁
+简玮伦
+简圣
+聂东南
+聂暐峻
+蓝子桓
+蓝元皓
+蓝文孝
+蓝弘伟
+蓝仲伟
+蓝志发
+蓝怡平
+蓝昕纬
+蓝春发
+蓝峻彬
+蓝伟仁
+蓝国华
+蓝梓仑
+蓝惠萍
+蓝雅龄
+蓝嘉哲
+蓝慧珊
+蓝黛莹
+阙少芳
+阙吟夙
+阙明慧
+阙逢毅
+阙滢芬
+颜士彬
+颜大福
+颜小凡
+颜月
+颜弘祥
+颜永芳
+颜玉玮
+颜光玗
+颜如玉
+颜有男
+颜伯奇
+颜呈旭
+颜妙芳
+颜宏哲
+颜宏睿
+颜志成
+颜志扬
+颜志麟
+颜秀真
+颜良泽
+颜佳慧
+颜宗平
+颜承伟
+颜秉德
+颜奕仁
+颜秋琴
+颜若庭
+颜家祺
+颜佩岚
+颜国书
+颜尉凯
+颜晨暐
+颜淑云
+颜婷玲
+颜华成
+颜雅卉
+颜雯韵
+颜瑞文
+颜瑜慧
+颜圣鸿
+颜嘉成
+颜嘉琳
+颜宁佑
+颜福顺
+颜银桐
+颜鸣庆
+颜莹鹏
+颜泽宇
+颜鸿钦
+颜献佑
+颜钰芸
+魏士杰
+魏子晴
+魏仁威
+魏文绮
+魏巧晴
+魏玉雯
+魏任廷
+魏名泛
+魏宇达
+魏百盛
+魏伶娟
+魏君洁
+魏孝宽
+魏岑芬
+魏志伦
+魏秀恬
+魏良佑
+魏佳卿
+魏宜宽
+魏明章
+魏俊旺
+魏春生
+魏英镇
+魏晋一
+魏伟
+魏崇桓
+魏淑玫
+魏逢毅
+魏朝信
+魏逸玲
+魏爱津
+魏滇佑
+魏筠文
+魏铃芝
+魏嘉良
+魏嫦妆
+魏硕颖
+魏铭汉
+魏慕帆
+魏趋吉
+魏麒容
+魏瑄谊
+庞永培
+旷婉君
+罗千雯
+罗子轩
+罗尹伶
+罗仁勇
+罗元甫
+罗允中
+罗友声
+罗心屏
+罗文宜
+罗文彬
+罗文齐
+罗月凰
+罗世铭
+罗仕棋
+罗巧莉
+罗正邦
+罗永智
+罗玉萍
+罗亦旋
+罗仰真
+罗兆维
+罗宇任
+罗旭君
+罗至善
+罗宏一
+罗志雄
+罗秀玲
+罗亚宁
+罗佳琦
+罗宜君
+罗怡惠
+罗明章
+罗欣慈
+罗芷青
+罗俊彦
+罗彦
+罗玲玲
+罗美莲
+罗苑榕
+罗家欣
+罗振廷
+罗泰伦
+罗佩娟
+罗素花
+罗伟哲
+罗健志
+罗唯瑄
+罗国华
+罗国暐
+罗婉娥
+罗强
+罗敏文
+罗敏仪
+罗淇文
+罗淑蓉
+罗绍文
+罗杰
+罗凯颐
+罗博俊
+罗惠方
+罗惠兰
+罗智能
+罗紫菁
+罗华浓
+罗钧耀
+罗雅敏
+罗雯琴
+罗毓杰
+罗瑞荣
+罗圣琳
+罗达
+罗嘉玲
+罗荣辉
+罗际川
+罗庆杰
+罗莹棻
+罗晓威
+罗兴安
+罗鸿基
+罗馨宜
+罗炜程
+谭又民
+谭光华
+谭佩岚
+谭悦馨
+谭智仁
+谭谛
+关一心
+关志宇
+关淑云
+严子筑
+严心元
+严可君
+严志哲
+严春凤
+严振兴
+严婉玲
+严淑菁
+严咏圣
+严维德
+严馥
+窦瑞霞
+蔺心怡
+苏千代
+苏士豪
+苏子翔
+苏中怡
+苏元乙
+苏文
+苏文娟
+苏文辉
+苏世庭
+苏巧宁
+苏正家
+苏永杰
+苏玉修
+苏立凯
+苏如蕙
+苏竹安
+苏君霏
+苏宏泰
+苏志孟
+苏志坚
+苏志鸿
+苏秀玲
+苏育弘
+苏育俞
+苏育瑱
+苏佳足
+苏佩瑜
+苏宗一
+苏尚瑾
+苏怡如
+苏怡君
+苏怡菁
+苏怡馨
+苏明俊
+苏明鸿
+苏武龙
+苏芳正
+苏芳莹
+苏青妙
+苏信源
+苏俊夫
+苏俊祥
+苏俊铭
+苏俞如
+苏勇诚
+苏奕杰
+苏威达
+苏建中
+苏建志
+苏建豪
+苏彦荧
+苏恒至
+苏政谦
+苏昭君
+苏昱任
+苏柏州
+苏柏桦
+苏珊莹
+苏皇原
+苏盈穗
+苏纪敏
+苏美玲
+苏致仁
+苏英皓
+苏贞燕
+苏郁伦
+苏郁雅
+苏香琪
+苏仓永
+苏哲亿
+苏家
+苏家信
+苏家莹
+苏峻民
+苏庭瑶
+苏振铭
+苏桓庆
+苏浩为
+苏益禄
+苏窈瑱
+苏纯慧
+苏轩民
+苏伟诚
+苏国典
+苏堂豪
+苏婉惠
+苏敏
+苏清安
+苏淑婷
+苏皎慧
+苏莉惠
+苏博玄
+苏惠贞
+苏晶新
+苏湘怡
+苏舜卿
+苏逸真
+苏雅君
+苏雅惠
+苏雅慧
+苏顺诚
+苏意岚
+苏敬菱
+苏毓彬
+苏猷翔
+苏睦仁
+苏群杰
+苏圣涵
+苏裕文
+苏诗婷
+苏靖岚
+苏嘉宏
+苏嘉鸿
+苏碧昭
+苏闻谨
+苏亿珍
+苏慧文
+苏慧娟
+苏毅
+苏晓如
+苏晓芃
+苏锦升
+苏静芳
+苏声振
+苏鸿仪
+苏鹏翰
+苏丽华
+苏旻君
+苏烜毅
+苏琡评
+苏玮琳
+苏豊棋
+苏钰菁
+钟士钦
+钟文秀
+钟玉如
+钟佳绢
+钟盈凯
+钟挺豪
+钟国铭
+钟敏愫
+钟惠宇
+钟顺禹
+钟碧兰
+钟馨谊
+饶志豪
+饶亮
+饶佩龄
+饶敬国
+党一为
+顾文绚
+顾立苹
+顾宗沛
+顾倩如
+顾崇德
+顾翠华
+龚于珊
+龚文颖
+龚兆祺
+龚佩君
+龚青云
+龚彦名
+龚贞如
+龚书圣
+龚淑苗
+龚雅欣
+龚靖诒
+龚豫慧
+亓隆祥
+佘尚鸿
+佘联斌
+邾亦南
+涂世和
+涂君蓉
+涂育荣
+涂欣宏
+涂政男
+涂振民
+涂启原
+涂富星
+涂雅燕
+涂嘉原
+涂慧珍
+涂耀升
+粘弘吉
+粘育玮
+粘纯如
+粘圣鑫
+粘耀仁
+邬心怡
+靳立伟
+邝光宁
+栾季强
+芳琦
+婉婷
+铭源
+文勋
+凤琪
+信义
diff --git a/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt
new file mode 100644
index 0000000..e978215
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/collation/TestNames_Thai.txt
@@ -0,0 +1,10843 @@
+﻿#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+ก๊กเฮง แซ่แต้
+กชกร ศราทธทัต
+กติกา อังคสุภณ
+กนก ธรรมประทีป
+กนก วงศ์ทองศรี
+กนกกร ช้างเย็นฉ่ำ
+กนกฉัตร์ ถาวรนันท์
+กนกนวล โปษยะนันทน์
+กนกพร คมคาย
+กนกพร ตีรเลิศพานิช
+กนกพร พันทร
+กนกพร ศรีบัณฑิต
+กนกพร อติวรรณาพัฒน์
+กนกพรรณ ศรีวนาภิรมย์
+กนกรัตน์ เกียรติยิ่งอังศุลี
+กนกรัตน์ สุธรรมพิทักษ์
+กนกวรรณ คงคาประเสริฐ
+กนกวรรณ แซ่เตียว
+กนกวรรณ บุญประเสริฐ
+กนกวรรณ รักทรัพย์
+กนกวรรณ สัจจพงษ์
+กนกวรรณ อุ้ยวงศ์ไพศาล
+กนกศักดิ์ ยิ่งยง
+กนกแก้ว กรสมิต
+กนิษฐา ทนุถนอมราษฎร์
+กนิษฐา หวังวิบูลย์กิจ
+กมล กาญจนโรจน์
+กมล คัมภีร์
+กมล เจตน์มงคลรัตน์
+กมล ชูตระกูลธรรม
+กมล ตระการพินิจ
+กมล ทัพพะรังสี
+กมล บัดติยา
+กมล พงษ์อนันตโยธิน
+กมล โพโสภา
+กมล รมเยศ
+กมล โลหะไพศาล
+กมล วิสุทธิ์เสรีวงศ์
+กมล สมพงษ์
+กมล สุรพงษ์ประชา
+กมล แหวนทับทิม
+กมล เอี่ยมศิริ
+กมลชัย ศรีสิริรัตนากร
+กมลทิพย์ บัวหิรัญ
+กมลทิพย์ อภินันท์สิริ
+กมลพร สาโรวาท
+กมลมาศ จิวะธนะพร
+กมลรัตน์ เดชะปิยวงศ์
+กมลรัตน์ เลิศเลาห์กุล
+กมลวรรณ งามละม้าย
+กมลวรรณ บุญเสริม
+กมลวรรณ สรานุกูล
+กมลศักดิ์ งามบริรักษ์
+กมลา มโนพัฒนะ
+กร กรินรักษ์
+กรกฎ จงเจริญ
+กรกนก วงศ์พันธุเศรษฐ์
+กรกริช กุสุมามาลย์
+กรชุลี กิตติเสรีชัย
+กรทอง ศรีสุโข
+กรมใบ สุริโย
+กรรณิกา กนกวัฒนาวรรณ
+กรรณิกา จุลอยู่
+กรรณิกา แต้เจริญ
+กรรณิกา ผาณิตพงศ์
+กรรณิกา ลิ้มสกุล
+กรรณิกา สารพานิช
+กรรณิการ์ กนกวรรณจำรัส
+กรรณิการ์ จาริยานนท์
+กรรณิการ์ แซ่เตียว
+กรรณิการ์ นครศรี
+กรรณิการ์ ไผทฉันท์
+กรรณิการ์ มีสุข
+กรรณิการ์ วัชระคุ้มครอง
+กรรณิการ์ สาทรกิจ
+กรรณิการ์ อังสถิตย์อนันต์
+กรรมสิทธิ์ เทพสุทธิ์
+กรวิกา สืบวงศ์คล้าย
+กรหทัย จิตฤทัย
+กรองกาญจน์ อัจฉริยวงศ์
+กรองทอง นาถพิริยรัตน์
+กรองทิพย์ ประจันตะเสน
+กรองแก้ว แซ่แต้
+กรองแก้ว หิรัญ
+กระจ่าง เลิศเกียรติดำรงค์
+กระสัน เสริมทรัพย์
+กระแสร์ ท้วมจั่น
+กรานต์ประภา ประสิทธิ์วรากุล
+กริชจุฑา ศรีสกุล
+กริสน์ นวมทอง
+กรีฑาพร วงศ์รอด
+กรุณา ขันทอง
+กรุณา พิเชฐสัทธา
+กรูดีป ซิงห์
+กฤช ปุณณกันต์
+กฤชปณต นิธินโรดม
+กฤดา กิติวิภาต
+กฤตพร กาญจนการุณวงศ์
+กฤตยา พุฒิเนาวรัตน์
+กฤตวิทย์ สิงห์สุข
+กฤติกา ศุกรกำเหนิด
+กฤติยา ธนาเศรษฐ์กุล
+กฤษ สุนทรารชุน
+กฤษฎา จิระวิชชเลิศ
+กฤษฎา บุญราช
+กฤษฎา วรรณสารเมธา
+กฤษฎางค์ ถนอมวงษ์
+กฤษฏ์ ไตรกฤษดาพร
+กฤษณะ คุณากร
+กฤษณะ พงษ์ธนะ
+กฤษณะ อยู่สุข
+กฤษณา คลาเวช
+กฤษณา เซนต์วิบูลย์
+กฤษณา ธรรมวุฒิ
+กฤษณา ปิยะตระกูลรัตน์
+กฤษณา มณเฑียร
+กฤษณา ศรีคำ
+กฤษณา สุขวัฒก์
+กฤษณา อู่หิรัญ
+กฤษณเดว ทรีปาตี
+กฤษณ์ ทองไทยสิน
+กฤษณ์ วงษ์สมบูรณ์
+กฤษดา กฤษณาชูวงศ์
+กฤษดา ทอนสูงเนิน
+กฤษดา เลิศไพศาลกิจ
+กฤษดา เอื้อปิยะชาติ
+กฤษวรรณ อินทพานิช
+กลยุทธ์ วุ่นบำรุง
+กลอยใจ พุ่มพวง
+กล้าณรงค์ เผือกคุ้มกฤษ
+กลิ่นขจร รักวงษ์
+กวงบู้ แซ่ตั้ง
+กวา แซ่เต๋ง
+กวินนาถ เลิศสุดประเสริฐ
+กวี ทังสุบุตร
+กวี เลาะฟอ
+กวีชัย หวังศิลปคุณ
+ก้วงเซีย แซ่ฉั่ว
+กษมา วงศ์ไพฑูรย์ปิยะ
+กสมา โรจน์เมธา
+กอง ว่องพงศาวิวัฒน์
+กองเหว่ง แซ่เจียง
+กอบกาญจน์ ธรรมวาทิน
+กอบกุล จันทร์กระจ่าง
+กอบกุล นุชแดง
+กอบกุล วิวัฒนะประเสริฐ
+กอบกูล สิงคะตีระ
+กอบชัย แหละเหล่าปราชญ์
+กอบศักดิ์ ตปนียทรัพย์
+กอบเกื้อ พุกกลิ่น
+กอบแก้ว ศิริวรรณ
+กอเซ็ม เม่นทอง
+ก่อเกียรติ ขุนทอง
+ก่อโชค จันทวรางกูร
+ก้องเกียรติ เฟื่องวุฒิราญ
+ก้อนแก้ว ศรีนคร
+กังวาล เกียรติ์ศักดาวงศ์
+กังสดาล หอมกลิ่นราตรี
+กัญจนี งามพสุธาดล
+กัญญธร พงศ์พงัน
+กัญญา เกษสังข์
+กัญญา ใจมั่น
+กัญญา ดีที่สุด
+กัญญา นวลแข
+กัญญา ผู้กฤตยาคามี
+กัญญา รุ่งเรือง
+กัญญา ศรีวัฒนะ
+กัญญา หงสกุล
+กัญญาภรณ์ ลิลิตชาญ
+กัญญารัตน์ เมืองแก้ว
+กัญทิมา ธีรภาพรุ่งโรจน์
+กัณฐิกา ณ สงขลา
+กัณทิมา เจริญรัตนวัฒน์
+กัณหา สุวรรณกาโร
+กันตยา เพิ่มผล
+กันทิมา รอดสำอางค์
+กันยา จีนฟุ้ง
+กันยา โภคาสถิตย์
+กันยา เอี่ยมอนันต์วัฒนะ
+กันยาลักษณ์ เตชะพงศ์วรชัย
+กัมปนาท ยอแสงทอง
+กัมพล ตั้งจิตรศรัทธา
+กัมพล สิขรียะ
+กัลนิกา เยาวรักษ์
+กัลยา การักษ์พิทักษ์
+กัลยา คุณปสุต
+กัลยา ฉายชูพงศ์
+กัลยา แซ่อึ๊ง
+กัลยา เถระปัญญา
+กัลยา นุชนาฎนนท์
+กัลยา เผ่าไทย
+กัลยา ไพรวัฒนานุพันธ์
+กัลยา ยิ่งธเนศ
+กัลยา ลิ้มโยธิน
+กัลยา วิริยะโรจนาวุฒิ
+กัลยา สรรพกิจผล
+กัลยา สุรพฤกษ์
+กัลยา อินทรทัต
+กัลยาณี คูประพัทธ์พงศ์
+กัลยาณี ถิระรณรงค์
+กัลยาณี รุ่งเลิศ
+กัลยาณี หิรัญเชรษฐ์
+กัลยารัตน์ บัณฑิตภิรมย์
+กากอง แซ่หยี่
+กาญจนะ ไม้แก้ว
+กาญจนา กาญจนา
+กาญจนา แก่นประยูร
+กาญจนา ครุฑไชยันต์
+กาญจนา จันทนะโสตถิ์
+กาญจนา จีระแพทย์
+กาญจนา เฉลิมพันธุ์
+กาญจนา เชิงชาญกิจ
+กาญจนา แซ่อั๊ง
+กาญจนา แดงประไพ
+กาญจนา โต๊ะพิกุล
+กาญจนา เทพรส
+กาญจนา นาควิสัย
+กาญจนา บุญช่วย
+กาญจนา ปองเสงี่ยม
+กาญจนา พนมวรรณเวช
+กาญจนา พิพัฒนานิตย์
+กาญจนา ภาคคู
+กาญจนา เมฆกุลวิโรจน์
+กาญจนา ราตรี
+กาญจนา เลิศศักดิ์วิมาน
+กาญจนา วัฒนะจันทร์
+กาญจนา ศรีประทีปบัณฑิต
+กาญจนา เศวตามร์
+กาญจนา สามารถกิจ
+กาญจนา สุทธินุ่น
+กาญจนา แสงสูง
+กาญจนา อภินันท์นาถ
+กาญจนา อินทรพิทักษ์
+กาญจนาภรณ์ ขมิ้นเครือ
+กาญจนี รักษ์สกุล
+กาญจน์ ยู่โหงว
+กานดา คณะสุข
+กานดา เด่นไทย
+กานดา ปานชี
+กานดา รุ่งประกายรัตน์
+กานดา ศักดิ์สิทธิ์
+กานดา อัมพรวิโรจน์กิจ
+กานต์ โกสินทรกุล
+กาบนภา นามแดง
+การะเกด กุหลาบแก้ว
+การีม บุญมาเลิศ
+การุณ ชัยวงศ์โรจน์
+การุณ ศรีสดใส
+การุณย์ เสริมสกุล
+กาหลง ด่านพาณิชย์กุล
+ก้าน น่วมสำลี
+กำจร ชูธนากรณ์กุล
+กำจร อนัญญาเขต
+กำจัด ฤทธิ์ดี
+กำชัย ลาวัณยวุฒิ
+กำธร จารุสุวรรณภูมิ
+กำธร ตันธีระธรรม
+กำธร พรทวีโภคทรัพย์
+กำธร ไวทยะพานิช
+กำธร อินทรไพโรจน์
+กำพล เข็มทอง
+กำพล โชคสุนทสุทธิ์
+กำพล บูรพาชีพ
+กำพล รัตนวิริยะ
+กำพล ศักดิ์พิชัยสกุล
+กำพล อดุลวิทย์
+กำเนิด เทียนเนียม
+กำไร ฉิมดอนทอง
+กิ่ง กสิภาร์
+กิ่งกาญจน์ ธนคุ้มชีพ
+กิ่งกาญจ์ วงศ์กิจจาเลิศ
+กิ่งพร คงเอี่ยมพิธี
+กิ่งแก้ว ใจต๊ะมา
+กิ่งแก้ว ยังเจริญ
+กิจ นาวาพนม
+กิจจา เจริญผล
+กิจจา พูลผล
+กิจจา สุขประเสริฐ
+กิจติพงษ์ ชูไทย
+กิตดนัย ธรมธัช
+กิตติ กิตติวรพันธ์
+กิตติ คงชื่นสิน
+กิตติ จ่างจรูญโรจน์
+กิตติ ชัยศิริพงศ์
+กิตติ แซ่หลิ้ม
+กิตติ ตโมหรณวงศ์
+กิตติ ธนาภินันท์ชัย
+กิตติ บุญวันต์
+กิตติ พงศ์พลาญชัย
+กิตติ ไพบูลย์ยิ่ง
+กิตติ รองรัตน์
+กิตติ ลิ้มชัยกิจ
+กิตติ วัชระคุปต์
+กิตติ ศรีสุทธิรักษ์
+กิตติ สันประเสริฐ
+กิตติ เสรีบุตร
+กิตติ อยู่โพธิ์
+กิตติ เอื้อชาญเวช
+กิตติคุณ เจือกิจกำจร
+กิตติชัย ช่อทองดี
+กิตติชัย พิริยะกุลธร
+กิตติชัย อรชร
+กิตตินันท์ หมายมั่นศร
+กิตติพงศ์ ทองสุขา
+กิตติพงษ์ กิตติภัสสร
+กิตติพงษ์ ทรัพย์สุข
+กิตติพงษ์ เมษะมัต
+กิตติพงษ์ หาญไทยผลดี
+กิตติพล จันทร์ยิ้ม
+กิตติพันธุ์ เล็กประสมวงค์
+กิตติมา เกียรติกมลมาลย์
+กิตติมา เพิ่มสุข
+กิตติมา เอื้อกิจธิโรปกรณ์
+กิตติยา รัตนศรีอำไพพงศ์
+กิตติวรรณ กำธรเจริญ
+กิตติวุฒิ ศศิพงศ์อนันต์
+กิตติศักดิ์ แซ่ตั้ง
+กิตติศักดิ์ ประอินทร์
+กิตติศักดิ์ วรกิจประทีป
+กิตติศักดิ์ หอมจำปา
+กิตติเดช ธนรรฆากร
+กิติ ชวนะลิขิกร
+กิติกร พนิชย์สกุล
+กิติชัย สิทธิ์ธรรมวิไล
+กิติพงษ์ ตันติวณิชย์
+กิติพัฒน์ ปวีณวิทยโชติ
+กิติมา พุฒจันทร์
+กิติยา นกทอง
+กิติศักดิ์ แกล้วกสิวิทย์
+กิติศักดิ์ เลิศวงศ์วีรชัย
+กินรี ดำทองสุข
+กิมกี แซ่หรือ
+กิมจั๊ว แซ่โป่ว
+กิมซ้ง แซ่ลี้
+กิมป๊อ เลิศกวีวงศ์
+กิมลั้ง กิจเจริญชัย
+กิมลุ้ย แซ่ลิ้ม
+กิมหยุน แซ่จง
+กิมฮวด เจริญรังสรรค์
+กิมฮั้ว แซ่ลี้
+กิมเช็ง แซ่ไหล
+กิมเตียง แซ่เฮ้ง
+กิมเลี้ยง บุญยงค์
+กิมเอ็ง แซ่หลิม
+กิมเฮียง แซ่ไหล
+กิมไจ๊ แซ่อึ๊ง
+กิ้มกุ้ง แซ่ปึ้ง
+กิรณ จารุจินดา
+กี จี้เซ้ง
+กีรณา ทันตะเวช
+กีรบุตร กิติยาดิศัย
+กุง แซ่เล้า
+กุณฑล พุกกรมานนท์
+กุนที ไพจิตรประภาภรณ์
+กุยเกียง แซ่เอี้ย
+กุ่ยเฮียง แซ่ลิ้ม
+กุร์จรันชิงห์ โครานา
+กุลชร แย้มผอบ
+กุลญา มัญชุวาทินี
+กุลธร นารูลา
+กุลธิดา อุตตโน
+กุลปราณี คงพลัง
+กุลมิตกอร์ จาวาลา
+กุลรัตน์ สิ่งยัง
+กุลวดี ธีรสุนทรวัฒน์
+กุลวลี ตระกูลสันติชัย
+กุลเทพ นาคะอภิ
+กุศล บุญเสมอ
+กุศลศรี ศักดิ์เมือง
+กุสุมา เทียนประเสริฐ
+กุสุมา เสือเนียม
+กุหลาบ คุณสามารถ
+กุหลาบ ทรัพย์เกษตร
+กุหลาบ พุกกะณะสุต
+กุหลาบ วิสุทธิอุทัยกุล
+กุหลาบ อารีรัตน์
+กู้เกียรติ ชัยกรโกศล
+เกชา โต๊ะสมัน
+เกตุ ฤทธิ์ดี
+เกนซิงห์ เกนซิงห์
+เกริก เมนัช
+เกริกอิทธิ์ เกษมสันต์
+เกรียง เยาวนวิมล
+เกรียงชัย รัตนไพวงศ์
+เกรียงศักดิ์ ก้องไตรภพ
+เกรียงศักดิ์ โฆษิตกุลพร
+เกรียงศักดิ์ ชวลิขิต
+เกรียงศักดิ์ ตรีทิพยรักษ์
+เกรียงศักดิ์ นรดี
+เกรียงศักดิ์ พงศ์เพ็ชร
+เกรียงศักดิ์ เฟื่องฟูพงศ์
+เกรียงศักดิ์ ฤกษ์อำนวยโชค
+เกรียงศักดิ์ วิชชุวัฒนากร
+เกรียงศักดิ์ สมกิจรุ่งโรจน์
+เกรียงศักดิ์ แสนใหม่
+เกรียงศักดิ์ อุดมมิตรรัก
+เกรียงไกร กิตติชัยเดช
+เกรียงไกร จิรสิริโรจนากร
+เกรียงไกร ด่านธนะชัย
+เกรียงไกร นาคทอง
+เกรียงไกร พิณทอง
+เกรียงไกร ลาภสิริสวัสดิ์
+เกรียงไกร ศิรามพุธ
+เกรียงไกร หงสไกร
+เกลียวดี ตันสุวรรณดี
+เกวลี พลชัย
+เกศทิพย์ พุทธพงษ์
+เกศรา แซ่เฮ้ง
+เกศราภรณ์ พลีเกตุ
+เกศรินทร์ หลีทับ
+เกศสุนีย์ วิวัฒนาภิรักษ์
+เกศินี ชวลี
+เกศินี มนทิราลัย
+เกศีณี ลือกุลวัฒนชัย
+เกษณี แซ่ตั้ง
+เกษตร สุวรรณธรรมา
+เกษม กิตติโสภณกิจ
+เกษม คำพยัคฆ์
+เกษม จำนงค์ไว
+เกษม ช่วงโชติ
+เกษม แซ่ซื้อ
+เกษม ตุ้มทอง
+เกษม ธีรทีฆานุวงศ์
+เกษม บุญมายะพันธุ์
+เกษม ปึงชวลิตโสภี
+เกษม พิพัฒน์ประทานพร
+เกษม มั่นถาวร
+เกษม รัตนาธรรมวัฒน์
+เกษม เลี่ยงวิชชุพันธ์
+เกษม เวชรัตน์พิมล
+เกษม สมิทธิเนตย์
+เกษม สุดวิสัย
+เกษม หวังจิตต์เชียร
+เกษม อินทรสกุล
+เกษมศรี ชีวะเกตุ
+เกษมศักดิ์ ปัญญาฤทธิ์
+เกษมสันต์ สนธิสถาพร
+เกษร กุลเลิศประเสริฐ
+เกษร ชีวปรีชา
+เกษร นำพัก
+เกษร เพิ่มทรัพย์
+เกษร วัฒนาลัย
+เกษร โสรัตน์
+เกษรา พวงสวัสดิ์
+เกษรินทร์ สมวงศ์
+เกษสุนีย์ มามีชัย
+เกษแก้ว เจริญสุข
+เกสรี เกียรติกำจร
+เการักษ์ สุคนธ์เลิศสมร
+เกียง เลิศพลาชัย
+เกียรติ กังวานเวชกุล
+เกียรติ ดีขจร
+เกียรติ มหเกียรติไพศาล
+เกียรติ หงษ์วิศิษฐกุล
+เกียรติคุณ ทักษิณนุกุลวงศ์
+เกียรติชัย โตอรุวงศ์
+เกียรติชัย เวศน์มัฆวาน
+เกียรติณรงค์ รัตนปรีชาเวช
+เกียรติพร จารุธรรม
+เกียรติศักดิ์ กิจก้องขจรชัย
+เกียรติศักดิ์ ฉัตรวิทยาทรัพย์
+เกียรติศักดิ์ บุญเรือง
+เกียรติศักดิ์ เรือนนาค
+เกียรติศักดิ์ เสาสาย
+เกียรติ์ กัณวเศรษฐ
+เกียว พัวสวัสดิ์
+เกี้ยงซวง แซ่งุ่ย
+เกื้อกูล กองวิเศษ
+เกื้อกูล วงศ์ทศพร
+เก็ก แซ่อิม
+เก่งกาจ ปักกาเต
+เก๋ สุวรรณวัฒน์
+แก่น ทั่งสถิตย์
+แก้ว จิรบวรวิสุทธิ์
+แก้ว ถาวรนันท์
+แก้ว ยาน้อย
+แก้ว ไสยจิตร์
+แก้วจินดา ทองแก้ว
+แก้วตา ศฤงคารเจษฎา
+แก้วมณี ศรีวะรมย์
+แก้วใจ ไวศยางกูร
+โกมล โกมุทธนชาติ
+โกมล ปัตตานุสรณ์
+โกมล ศิริพร
+โกมินทร์ ฑีฆธนานนท์
+โกลิตา มีลาภ
+โกวิท แซ่เล้า
+โกวิท พันธุ์แย้มมาลี
+โกวิท วาตะ
+โกวิท อุทัยฉาย
+โกวิทย์ ทรัพย์เจริญศรี
+โกวิทย์ วงศ์รุ่งโรจน์
+โกศล กฤษณประพันธ์
+โกศล ใจวิจิตร
+โกศล ธีรพิทยาธร
+โกศล เพ็ชรสุวรรณ์
+โกศล วัฒนามานนท์
+โกศล เหล่าศิริรัตน์
+โกสิทธิ์ ฉันทาจารุวงศ์
+โกสินทร์ วัลลิโภดม
+โกสุม แมนผดุง
+โกสุมภ์ อภิวันทนันท์
+โกเมศ โกมุทเกื้อกูล
+ใกล้รุ่ง แพทย์ประเสริฐ
+ไกรดา ดวงประชา
+ไกรฤกษ์ ณ ลำปาง
+ไกรวัลย์ วิริยะวิทย์
+ไกรศร ปรารถนาดี
+ไกรศักดิ์ หุ่นวิจิตร
+ไกรสร วงศ์นภากาญจน์
+ไกรสีห์ คล้ายมณี
+ไกวัล จาตนิลพันธุ์
+ขจร ช้อนประเสริฐ
+ขจร พิมพิชัย
+ขจร สุนทโรดม
+ขจรพล แสนสุดสวาท
+ขจรศักดิ์ เจ้ากรมทอง
+ขจรศักดิ์ โพธินามทอง
+ขจรศักดิ์ เหล่าพงษ์ศร
+ขจรเดช พงษ์สนาม
+ขจิตพรรณ คชพันธุ์
+ขชล วรทีปานนท์
+ขนิษฐา การสมพิษ
+ขนิษฐา จำเนียรกาล
+ขนิษฐา ดวงแก้ว
+ขนิษฐา นากาอิ
+ขนิษฐา ผลงาม
+ขนิษฐา ยงวานิชจิต
+ขนิษฐา วงศ์เหลือง
+ขนิษฐา สังข์ศิริ
+ขนิษฐา อนุสถิตย์
+ขยัน ศาสตระรุจิ
+ขวัญ ขวัญเทียนทอง
+ขวัญจิต ยอดสอน
+ขวัญชัย กงบุราณ
+ขวัญชัย เชื้อสุวรรณ
+ขวัญชัย พงษ์เลาหพันธุ์
+ขวัญชัย วงษ์ณรัตน์
+ขวัญชัย อมรเมธ
+ขวัญตา จันทร์ฉาย
+ขวัญตา ศุภเสาวภาคย์
+ขวัญยืน บุญพรม
+ขวัญศิริ วณิชกุลบดี
+ขวัญเมือง คงถาวร
+ขวัญเรือน งามเผือก
+ขวัญเรือน สียวน
+ขวัญใจ เจตน์จำนงค์สกุล
+ขวัญใจ นรมัตถ์
+ขวัญใจ รุ่งเรือง
+ขวัญใจ สุขอาบใจ
+ขัณฑ์ไชย วงศ์งาม
+ขันติ เดชะคุปต์
+ขันทอง ศรีคำ
+ขางิ้ม แซ่ลิ้ม
+ขาว สุบรรณรัตน์
+ขำเสมอ คงศิริ
+ขุนแผน แก้วน้อย
+เขมชาติ อิรัชตานนท์
+เขมา วิสุทธิวัฒนากร
+เขียน ภัทรี
+เข็ม คล้อยแสง
+เข็มทอง ศิริแสงเลิศ
+แขนภา ดุษฎีดำเกิง
+ไขศรี รังสิยานนท์
+ไข่มุกข์ คงคา
+คงกฤตย์ ปานจันทร์
+คงฤทธิ์ เปี่ยมเจริญชัย
+คงศักดิ์ เติมพิทยาเวช
+คงศักดิ์ วาณิชกรพิพัฒน์
+คงเดช แซ่โหง้ว
+คฑาทอง ทองใหญ่
+คณารัชต์ ทีเหล็ก
+คณิต ซิ้มเจริญ
+คณิต ศาศวัตศานติ
+คณิน จุฑามาศ
+คติ พันธุ์สว่าง
+คนอง นิลพันธ์
+คนึง ชูประจง
+คนึง โสมะเกษตริน
+คนึงนิจ ทวีแก้ว
+คนึงนิจ สังข์เจริญ
+คนึงนิตย์ สุขสกุล
+คมกริช เฉลิมวัฒน์
+คมกฤช ประคุณคดี
+คมขำ ชวลิต
+คมคาย ตั้งตรงคิด
+คมจักร เจนจบ
+คมศักดิ์ กอสินประเสริฐ
+คมสัน คุณเจริญ
+คมสัน บัณฑิตวงษ์
+คมสัน ศรีทองสุข
+คมสันต์ กลิ่นดี
+คมสันต์ สุพรรณโรจน์
+ครรชิต คล่องบุญจิต
+ครรชิต ผลาบูรณะ
+ครรชิต สุวรรณชื่น
+ครองเกียรติ เทศประสิทธิ์
+คลอใจ ปัญญาศร
+คลึง ทวีวรรณ์
+คอตีเยาะ สามัญ
+คะเน็ต ผดุงชีวิต
+คัทรียา ยนตร์เปี่ยม
+คัมภีรปัญญากร พระครู
+คาตี๋ แซ่คง
+คาเกียว แซ่โอ้ว
+คำ วรรณสิทธิ
+คำตา บุญชู
+คำนวน บุณยผล
+คำนึง ไชยยนต์
+คำนึง ศิริจันทร์
+คำปัน แสนสุข
+คำพล คงขวัญเมือง
+คำพันธ์ ศุภสร
+คำมา ศิริอาจ
+คำรณ แซ่กัง
+คำรณ รุ่งโรจน์พานิชย์
+คำรน จตุทอง
+คำหม่อน ประสมผล
+คำแผน ศรีขาว
+คิณห์ วัฒนพิทักษ์กุล
+คิมโอ้ว หวังสุขนิรันดร์
+คีม เล่าวจีศาสตร์
+คึกฤทธิ์ อารีปกรณ์
+คุณน้อง พัฒนานารักษ์
+คุณากรณ์ วิเศษศิริลักษณ์
+คุม บุญแจก
+คูณ โสภณานุกูล
+คเณศ ขาวจันทร์
+เคน สุวรรณศรี
+เครือบุญ โหติธะนัง
+เครือวรรณ ศิรยานนท์พินิจ
+เครือวัลย์ ดำรงค์รักษ์
+เครือวัลย์ พุ่มชา
+เครือวัลย์ สีเลิศ
+เคลิ้ม ภู่ทอง
+เคียงขวัญ จั่นเอี่ยม
+เค็ก แซ่เตีย
+แคล้ว แดงดี
+ไคอู๋ แซ่อึ้ง
+โฆษิต พัฒนพงศ์
+ง่วงเซี้ยม แซ่แห
+ง้วน แซ่ลิ้ม
+ง้อ สินธีรภาพ
+งามขำ ฮุ่นตระกูล
+งามฉินน์ ยิ้มประเสริฐ
+งามตา สาระเทียน
+งามพรรณ แย้มสกุล
+งามศักดิ์ แย้มชื่น
+งิ๊ม แซ่เฮง
+เงิน แก้วชนะชัย
+เงินยวง นุนพนัสศักดิ์
+เง็ก แซ่โง้ว
+เง็กซิม ตนันท์ยุทธวงศ์
+เง็กฮวย แซ่จึง
+เง็กเล้ง แซ่เจียม
+โง้วเคี้ยง แซ่หลอ
+จงกรณ์ อิ่มสกุล
+จงกล ทองโอฬาร
+จงกล ลานเจริญ
+จงกล แหประสพโชค
+จงกลณี แม้นหมาย
+จงกลนี ปิ่นเจริญ
+จงจิต แซ่อึ๋ง
+จงจิตต์ บุญชนานนท์
+จงจิตร จันทวี
+จงจินต์ เสรีรักษ์
+จงดี บัวบูชา
+จงดี แสงเพชร
+จงรัก เต็งอำนวย
+จงรักษ์ จันทร์คงสุวรรณ
+จงรักษ์ พันธมิตร
+จงรักษ์ หาญวุชานุรักษ์
+จงศิริ ล้อกาญจนรัตน์
+จงเฮง แซ่นิ้ม
+จตุพร กาญจนคลอด
+จตุพร ธมรัตน์
+จตุพร วัชรานาค
+จตุพล อิ่มเงิน
+จตุรงค์ พลนิล
+จตุรพร สุริยามาศ
+จรงค์ กลิ่นรื่น
+จรรยรักษ์ คุณุปการ
+จรรยา เงินดี
+จรรยา ชูขวัญ
+จรรยา ทีปานนท์
+จรรยา ปั้นเหน่งเพชร
+จรรยา มณีโชติ
+จรรยา เลาหเลิศชัย
+จรรยา เศรษฐบุตร
+จรรยา ห่วงศรี
+จรรยารักษ์ ทรัพย์เกรียงไกร
+จรวย ทองมีปั่น
+จรวยพร กองเพ็ง
+จรอน โปรยเจริญ
+จรัญ จันทร์ทิม
+จรัญ ดุลยาภินันท์
+จรัญ เนียมหอม
+จรัญ พิริยะปัญญา
+จรัญ ร้องขันแก้ว
+จรัญ ศักดิ์สยามกุล
+จรัญ หงวนเสงี่ยม
+จรัญญา จันทราสุวรรณ
+จรัญเดช จำปาวัลย์
+จรัล จิรศานต์ชัย
+จรัล บุนนาค
+จรัล วิโรจน์ยิ่งยง
+จรัลรัตน์ เรืองชาติ
+จรัส ชัยมหาวัน
+จรัส ปิ่นโสภา
+จรัส วรกุลดำรง
+จรัส อับดุลลา
+จรัสพร แซ่เตียว
+จรัสศรี เจริญชุ่ม
+จรัสศรี พึ่งกัน
+จรัสศรี สุกันญา
+จริง พุ่มแพร
+จริน ภู่น้อย
+จรินทร์ กลิ่นมะลิ
+จรินทร์ ช้างประสิทธิ์
+จรินทร์ นาคศรีอาภรณ์
+จรินทร์ พุทธิสาวงศ์
+จรินทร์ เรือนแก้ว
+จรินทร์ สมุห์สนธ์
+จรินทร์ อิ่มจันทร์
+จริยา เกรียงไกรวณิช
+จริยา เจริญสิน
+จริยา ดิลกโกมล
+จริยา บุญจอง
+จริยา โพธิวิชยานนท์
+จริยา วงศ์กิจเจริญ
+จริยา สังวาลย์
+จริยา องค์วาสิฎฐ์
+จรี ตรีสอาด
+จรีภรณ์ อินทแพทย์
+จรีรัตน์ พิกุลแย้ม
+จรุง พรหมมานนท์
+จรุงศรี จรุงกลิ่น
+จรูญ กันซัน
+จรูญ คงมา
+จรูญ จีระวัฒนา
+จรูญ โชคจารุเนตร
+จรูญ ทรัพย์เนืองนอง
+จรูญ แนมใส
+จรูญ แป้นเล็ก
+จรูญ เพ็ชร์กลับ
+จรูญ รักษาราช
+จรูญ วรรธนะสิน
+จรูญ สร้อยสว่าง
+จรูญ แสนราช
+จรูญ เอื้อเพิ่มเกียรติ
+จรูญลักษณ์ อังค์ไพโรจน์
+จรูญศรี ศุขรุ่งเรือง
+จรูญโรจน์ ฉิมสำราญ
+จวงจันทร์ แก้วพึ่งทรัพย์
+จวน ด้วงเงิน
+จวนฟาง ตั้งสมบูรณ์
+จอน วิริยะอรรถวุฒิ
+จอมฝาง สัมทราย
+จอห์น แอลแลนแร
+จ๊ะ แซ่ท้าว
+จักรกริช รุจอุฬาร
+จักรกฤษ ชุนกองฮอ
+จักรกฤษณ์ นุสสติ
+จักรกฤษณ์ สิทธาจารวัฒน์
+จักรชัย เพ็ชรเม็ดใหญ่
+จักรพงศ์ เลิศมณีพันธ์
+จักรพงษ์ สุภาพ
+จักรพันธ์ ก้อนผูก
+จักรพันธ์ เลิศถวิลภักดี
+จักรวาล กำลังศร
+จักราวุธ แจ้งเวชฉาย
+จักรี เขื่อนธรรม
+จักฤษณ์ ฤทธิ์เลิศ
+จั้ง มดทอง
+จันจนา สมสืบ
+จันดี อิงสา
+จันทนา กมลทิพย์ตระกูล
+จันทนา งามเลิศวงศ์
+จันทนา ชิดชอบ
+จันทนา ตันติประเสริฐ
+จันทนา นุ้ยเผือก
+จันทนา พัฒนจิตวิไล
+จันทนา รอดวิจิตร
+จันทนา วัชรินทร์พิทักษ์
+จันทนา สายกระสุน
+จันทนา โหมวานิช
+จันทนี จันทรารมย์
+จันทนี สิงห์สุวรรณ
+จันทยา ตรองตระการ
+จันทร์กำเหนิด เจริญพิทักษ์
+จันทร์จิรา เชื้อจุ้ย
+จันทร์ฉาย กุลอนันต์
+จันทร์ฉาย พงษ์ประเสริฐ
+จันทร์ดี กุญจร
+จันทร์ทรา บู่สาลี
+จันทร์ทิพย์ วุฒิประเสริฐ
+จันทร์นิภา เกรแฮม
+จันทร์พิม คล้ายนาค
+จันทร์รัตน์ ถนอมพลคลัง
+จันทร์ศรี สวยรูป
+จันทร์สุดา ลาภวุฒิรัตน์
+จันทรา กิจกัญจนาสน์
+จันทรา แซ่กี้
+จันทรา บุญที
+จันทรา โรจน์พลาเสถียร
+จันทรา สุขสิงห์
+จันทราภา พันธุ์สมบุญ
+จันทร์เพ็ญ กลีบบัว
+จันทร์เพ็ญ จันสำโรง
+จันทร์เพ็ญ แซ่ยิด
+จันทร์เพ็ญ ธนพงศ์นุโรจน์
+จันทร์เพ็ญ ปานเทศ
+จันทร์เพ็ญ มาตรสิงห์
+จันทร์เพ็ญ วงศ์ชำนาญ
+จันทร์เพ็ญ สัญญะวี
+จันทร์เพ็ญ อมรสมบูรณ์ศักดิ์
+จันทร์แดง ผลจันทร์
+จันทร์โรจน์ สถิตวิริยวงศ์
+จันทร์ โชคสุริยะสกุล
+จันทร์ พิลา
+จันทร์ สกุณา
+จันทา เกลี้ยงพร้อม
+จันทิมา แก้วประโลม
+จันทิมา ณะรินทร์ฟู
+จันทิมา พินทุวัฒนะ
+จันทิมา ศรีไกรวัชร
+จันทิรา กระบวนยุทธ
+จันทิรา สุขสกุลนี
+จันวิไล ชิตนุชตรานนท์
+จั่วคุณ แซ่เซียว
+จาตุรงค์ สุริยาศศิน
+จามจุรี ศรีหิรัญรัศมี
+จามรี เหรียญอัมพร
+จาริณี สุคนธชาติ
+จารีย์พร พุ่มน้ำเย็น
+จารึก ชูนุช
+จารึก เวทวัฒนาพิบูล
+จารุ วิชาไทย
+จารุณี จะโรครัมย์
+จารุณี นาคนาม
+จารุณี ยุกติรัตน์
+จารุณี เสวตไอยาราม
+จารุนันท์ บุญจันทร์
+จารุพร ศิริทัตสวัสดิ์
+จารุภา แสมขาว
+จารุลักษณ์ ธรรมธาร
+จารุวรรณ จงเลิศวณิชกุล
+จารุวรรณ แซ่โอ๊ว
+จารุวรรณ นิรันดรพฤกษ์
+จารุวรรณ ภิรมย์เจียว
+จารุวรรณ วัฒนสิงหะ
+จารุวรรณ เสรีเจริญสถิตย์
+จารุวัฒน์ จารุวัฒนะ
+จารุเกียรติ คาดสนิท
+จำนง โกวิทอิสริยะ
+จำนง รังสิกุล
+จำนงค์ กิตติรัตนอุดม
+จำนงค์ จรรยาวรวงศ์
+จำนงค์ ชิตจ้อย
+จำนงค์ ทองประเสริฐ
+จำนงค์ บัวประดิษฐ์
+จำนงค์ พวงละออง
+จำนงค์ มังกรประดิษฐ์
+จำนงค์ เล็กดารา
+จำนงค์ สระทอง
+จำนงค์ หนูภักดี
+จำนงนาฏ จิตตกิจ
+จำนอง พวงพุฒ
+จำปา โกษะโยธิน
+จำปา พุมมา
+จำปี จันทร์คำ
+จำปี เป๋าทอง
+จำปี สิงหพันธุ์
+จำรัญ อรรถสุนทร
+จำรัส เงินศิริ
+จำรัส ไชยศิรินทร์
+จำรัส ทับเจริญ
+จำรัส บุญประสพ
+จำรัส พันธุ์แก้ว
+จำรัส มีคัลและห์
+จำรัส เล้าชัยวัฒน์
+จำรัส สงวนพงษ์
+จำรัส แสงรูจี
+จำรัส อินศรี
+จำรูญ คุ้มชุ่ม
+จำรูญ ปิตะโหตระ
+จำรูญ สงวนศักดิ์โยธิน
+จำลอง กองแสงศรี
+จำลอง แขเขียว
+จำลอง จารุชัยนิวัฒน์
+จำลอง ชื่นบำรุง
+จำลอง ท้วมเจริญ
+จำลอง น้อยอินทร์
+จำลอง ปลื้มเปรม
+จำลอง พุฒหยวก
+จำลอง เมธาวิริยะศิลป์
+จำลอง ไล้รักษา
+จำลอง ศิลาพันธ์
+จำลอง สุขสวัสดิ์
+จำลอง อนันตผล
+จำลองลักษณ์ สัญญะเดชากุล
+จำเนียร กองบุบผา
+จำเนียร จงไพจิตร
+จำเนียร แช่มช้อย
+จำเนียร เทศเพ็ญ
+จำเนียร ประภารัตน์
+จำเนียร เพ็งเจริญ
+จำเนียร รัฐวิเศษ
+จำเนียร ศรีวงษ์
+จำเนียร สุดศิริ
+จำเนียร อีดี
+จำเริญ คำสอน
+จำเริญ บุญทองสุข
+จำเริญ เลิศเจริญยงค์
+จำเริญ อันธิรส
+จำเรียง ดิษฐานนท์
+จำเรียง สุวรรณโณ
+จิงล้ง แซ่ตั้ง
+จิณหธาน์ บุญไกรสิทธิ์
+จิตกรอง อินทรอุดม
+จิตต์บรรยง จิตต์บรรยง
+จิตตรา พุกกะมาน
+จิตต์สมร อติเรกานนท์
+จิตติ โชติรัตนะศิริ
+จิตติ วิจิตรชลกานต์
+จิตตินันท์ จินดาหรา
+จิตติมา เกษมโกเมศ
+จิตติมา เทวีลาภรณ์
+จิตติมา เลิศบุญยพันธ์
+จิตติมา อิสระกูล
+จิตต์ ชื่นภักดี
+จิตต์ หมวดสง
+จิตประไพ กนิษฐายน
+จิตร ตันตินิกร
+จิตรกร ศรีหิรัญ
+จิตรภณ รัตนมงคลกุล
+จิตรลดา เหรัญณุกรณ์
+จิตรา กระแสกุศล
+จิตรา จิตต์หาญ
+จิตรา แซ่โง้ว
+จิตรา ธนากูรเมธา
+จิตรา พฤฒิวทัญญู
+จิตรา เยี่ยมฉวี
+จิตรา วัฒนเรืองชัย
+จิตรา สันทนีอนุกูล
+จิตรา อัครพันธ์
+จิตราภรณ์ นามจักร
+จิตรี วงศ์รัตนาวิน
+จิตวดี วิประวิทย์
+จิตอารีย์ เกียรติก่อสุข
+จิน อยู่สบาย
+จินดา แก้วสกลณี
+จินดา จันทร์ภูมิ
+จินดา ฉ่ำจิตรชื่น
+จินดา แซ่หลี
+จินดา ทรัพย์จินดาวงศ์
+จินดา นามทอง
+จินดา ปัญญาวชิรชัย
+จินดา พันนัทธี
+จินดา มากพุ่ม
+จินดา ฤกษ์ปิยะทรัพย์
+จินดา วิวัฒน์พนชาติ
+จินดา สวนทวี
+จินดา เสาร์เกิด
+จินดา อัศวเมธาพร
+จินดาพร ศรีสุขสันต์
+จินดารัตน์ เดชะรักษ์พงษ์
+จินดารัตน์ อมรตานนท์
+จินตนา กลิ่นหอม
+จินตนา เกตุสัมพันธ์
+จินตนา เข็มนาค
+จินตนา จรรยาพาณิชย์
+จินตนา จีระพัฒน์
+จินตนา ชมมาลี
+จินตนา เชิญศิริ
+จินตนา แซ่อ๋อง
+จินตนา เดโชพล
+จินตนา ถาวรวิวัฒนบุตร
+จินตนา เทิดทูลกุล
+จินตนา นาคปนคำ
+จินตนา บุญประสงค์
+จินตนา ปานกลาง
+จินตนา พรหมพิชิต
+จินตนา พุ่มศิริ
+จินตนา มฤคสนธิ
+จินตนา โยธาสมุทร
+จินตนา ลดาวัลย์
+จินตนา วงศ์ชินศรี
+จินตนา วิจิตรศรีวัฒน์
+จินตนา ศรีสวัสดิ์
+จินตนา สถิตรายุธ
+จินตนา สุขทวี
+จินตนา เสนาพรหม
+จินตนา หาเรือนชีพ
+จินตนา อาภานันท์
+จินตนาฏ นิติสารศิลป์
+จินต์ คงทอง
+จินาวรรณ เฮอร์แมน
+จิมฮง แซ่เฮ่ง
+จิรชัย หวังสะดวก
+จิรนันท์ มีวาสนา
+จิรพงษ์ พันธโคตร์
+จิรพร เผื่อนน้อย
+จิรพรรณ นิรัติศัย
+จิรพัฒน์ รัตนปิณฑะ
+จิรภัทร เทวินทรภักติ
+จิรภา มหาพล
+จิรยุทธ อดิเทพนรางกูร
+จิรวรรณ นิมิตศิริวัฒน์
+จิรวัจน์ เจริญศักดิ์
+จิรวัฒน์ ทุมมานนท์
+จิรวัฒน์ สุนทวัฒโรดม
+จิรศักดิ์ กนกกัณฑพงษ์
+จิรศักดิ์ ประไพกรเกียรติ
+จิรศักดิ์ สังขธนานนท์
+จิระ จีรภัทร์
+จิระ ศิลปชำนาญ
+จิระนันต์ แดงพันธ์
+จิระพร กุลเพชรประสิทธิ์
+จิระพันธ์ จินรัตน์
+จิระภา รัตนาวิบูลย์
+จิระวัฒน์ แซ่โง้ว
+จิระศักดิ์ เด่นดวง
+จิระศักดิ์ ศุภบัณฑิตตา
+จิรัชยา แย้มสุวรรณ
+จิรา กมลวาทิน
+จิรานนท์ ศรีทรัพย์
+จิราพร ชูสกุล
+จิราพร ปานเอก
+จิราพร เร่งรัด
+จิราพร สุวินทวงศ์
+จิราพันธุ์ วัฒนา
+จิราภรณ์ จันทรรัศมี
+จิราภรณ์ ณ ไชโย
+จิราภรณ์ บูรณสิงค์
+จิราภรณ์ ยะอนันต์
+จิราภรณ์ วิโรจนวัฒน์
+จิราภรณ์ สุดยอด
+จิราภรณ์ อุบลชาติ
+จิราภา พ่วงสำเนียง
+จิรายุ คุ้มปิติ
+จิรารัช คชภูธร
+จิราวรรณ กันทาซาว
+จิราวรรณ สมพงษ์
+จิราศักดิ์ มันทรานนท์
+จิลาวัลย์ เหียงแก้ว
+จิโรจน์ ไพฑูรย์
+จีรชัย ตังครัช
+จีรพร คุ้มครองธรรม
+จีรพันธ์ อินทเส
+จีรวรรณ แจ่มขำ
+จีรวัฒน์ ไชยวิทย์วิวัฒน์
+จีรศักดิ์ เฉลิมเลิศปัญญา
+จีระ ณ พัทลุง
+จีระพร ลาภานุวัฒน์
+จีระวรรณ พรมเพ็ง
+จีระศักดิ์ มาลัยวงศ์
+จีราพร ลิ้มสุวรรณ
+จีราวุฒิ ทรวงแสวง
+จี้ หง เจิ้ง
+จือเท้ง แซ่ลิ้ม
+จุ่งหยง แซ่ลี้
+จุฑา เชิงชาญ
+จุฑาทิพ วุฒิธรรมสุข
+จุฑาทิพย์ พุทธรักษา
+จุฑาธิป ฉิมกุล
+จุฑาภรณ์ ธนศักดิ์โสภณ
+จุฑามาศ แก้วมงคล
+จุฑามาศ ตนันท์ยุทธวงศ์
+จุฑามาศ พงษ์ศิริ
+จุฑามาศ วัชรเมฆินทร์
+จุฑามาศ เหลืออนันต์
+จุฑารัตน์ กิตติกุลยุทธ์
+จุฑารัตน์ ฐิติปุญญา
+จุฑารัตน์ พลาฤทธิ์
+จุฑารัตน์ วิลัยกรวด
+จุฑาลักษณ์ ถาวรจิตร
+จุติพล เสตะวีระ
+จุนันท์ วงศ์อารี
+จุมพฏ กาญจนกำธน
+จุมพล จันทรศรีเกษร
+จุมพล แนวสกล
+จุมพล ลัมพาภิวัฒน์
+จุมพล หล่มทอง
+จุ้ยร้าง แซ่ฉั่ว
+จุรินทิพย์ สมพันธ์สาทิตย์
+จุรี มงคลละ
+จุรีพร ชั้วชั้น
+จุรีย์ จั่นจุ้ย
+จุรีรัตน์ เครือสุวรรณ
+จุรีรัตน์ วงศ์จันทรา
+จุล ทิพวรนิก
+จุลพงษ์ ณ น่าน
+จุลศิริ สุวรรณศิริ
+จุสิน สุธาชัยพร
+จุฬาพร ขยันการนาวี
+จุฬารัตน์ แซ่เบ้
+จุฬาลักษณ์ นางสวย
+จุไร จงประชาวัฒน์
+จุไร พิเศษกุล
+จุไรพร ศิลปพงษ์
+จุไรรัตน์ เดชเจริญ
+จุไรรัตน์ มหาอิทธิดล
+จุไรรัตน์ หาญไชโยภูมิ
+จุไรศรี มีกังวาล
+จู แซ่ใช้
+จูเคี้ยง แซ่โค้ว
+จเร ญาณะชัย
+จเร สิริสุทธิ
+เจด็จ อรรถหิรัญ
+เจตนา รักษ์กำเนิด
+เจตน์ พรหมเจริญ
+เจน กาบแก้ว
+เจน อิทธิภิญโญ
+เจนจิรา ธรรมวรรธนะ
+เจนนี่ ถาวรกุล
+เจมส์อาเธอร์ ยอร์ช
+เจริญ เกษตรสุวรรณ
+เจริญ คุวินทร์พันธุ์
+เจริญ จิระสถิตย์
+เจริญ ชัยกิตติ
+เจริญ แซ่กวด
+เจริญ ตั้งบุญฤทธิ์ฤทัย
+เจริญ ทองมา
+เจริญ นววัฒนทรัพย์
+เจริญ บุษบรรณ
+เจริญ ผานิล
+เจริญ เพียรเจริญ
+เจริญ ไมดินซา
+เจริญ เรืองศักดิ์
+เจริญ วสันตยานันท์
+เจริญ ศรีวงศ์ษา
+เจริญ สมพร
+เจริญ สุขอากาศ
+เจริญ โสสุด
+เจริญ อินทรเกษตร
+เจริญชัย กาญจนพิบูลย์
+เจริญชัย พิริยะปราการ
+เจริญพงศ์ สุขขี
+เจริญรักษ์ ปลื้มจิตไพบูลย์
+เจริญศรี โกมลฤทธิ์
+เจริญศรี ภู่ประดิษฐ์
+เจริญศักดิ์ กันตชูเวสศิริ
+เจริญสุข กิจเจริญ
+เจรียง พุกกะมาน
+เจษฎา ชนินทรลีลา
+เจษฎา บุญวิจิตร
+เจษฎา เรืองหิรัญ
+เจษฎา แสงสุพรรณ
+เจษฎ์ อนรรฆมงคล
+เจอรี่เยน ยูเชน
+เจิม เดชดำรงค์
+เจิ้ง เจิ้งอิง
+เจียน คชาชัย
+เจียม ไชยราช
+เจียมจิต แก้วน้อย
+เจียมจิตร เชยชื่นจิตร
+เจียมใจ ทะลือ
+เจียรนัย วงษากาศ
+เจียเคียกเล้ง แซ่กัง
+เจือ ทับศรี
+เจือ สุวรรณเจริญ
+เจือเจริญ สถาปนานนท์
+เจ็งเกี๊ยก แซ่ลี้
+แจ่ม เกตุสิงห์น้อย
+แจ่มจันทร์ ปราชญาวิริยะ
+แจ่มศรี อิทธิกุล
+แจ๋ว กีรติไกรนนท์
+ใจ จาตุวิทย์
+ใจทิพย์ ซัง
+ใจอารี วิริยานนท์
+ฉกาจ อารีเสวต
+ฉลวย กัลยาณมิตร
+ฉลวย จูฑะพล
+ฉลวย ตรีเพ็ชร์
+ฉลวย บุญมา
+ฉลวย พันธ์ขะวงษ์
+ฉลวย แย้มกลีบ
+ฉลวย ศรีรัตนา
+ฉลวย แสงอุทัยจามร
+ฉลวยลักษณ์ เรืองจุติโพธิ์พาน
+ฉลอง จารุพัฒนกุล
+ฉลอง ทรัพย์สิน
+ฉลอง ใบเงิน
+ฉลอง มูลเจริญ
+ฉลอง ศาสตรสุข
+ฉลอง อจลพงศ์
+ฉลองพร ศักดิ์เจริญ
+ฉลอม แสงนรินทร์
+ฉลาด ปานเจริญ
+ฉลาด อนันตา
+ฉวี จันทรขำ
+ฉวี เนื้อนิ่มถาวร
+ฉวี วัฒนวิกย์กิจ
+ฉวี อารยางกูร
+ฉวีวรรณ ขจรประศาสน์
+ฉวีวรรณ แจ้งมณี
+ฉวีวรรณ ตันติพิสิทธิ์
+ฉวีวรรณ นราพิทักษ์
+ฉวีวรรณ ปานดำ
+ฉวีวรรณ ภิญญาธินันท์
+ฉวีวรรณ ลาภเจียม
+ฉวีวรรณ ศรสังข์ทอง
+ฉวีวรรณ สิทธิพรธนกุล
+ฉวีวรรณ เหล่าพิทยา
+ฉวีไล รอดพลอย
+ฉอ้อน นอกกระโทก
+ฉอ้าน วุฑฒิกรรมรักษา
+ฉัฐพล จรัสมงคลเจริญ
+ฉัตร ภาคากิจ
+ฉัตรชัย แก้วเกตุ
+ฉัตรชัย เจริญสุข
+ฉัตรชัย เดชาศักดิ์พรรณ
+ฉัตรชัย ธรรมสวยดี
+ฉัตรชัย พจนากำธร
+ฉัตรชัย แย้มแสงทอง
+ฉัตรชัย วัลลิสุต
+ฉัตรชัย สิริปูชกะ
+ฉัตรชัย อัศวปตินาคินทร์
+ฉัตรทิพย์ สวัสดิไชย
+ฉัตรมนา มงคลกิจภักดี
+ฉัตรา ชุมภูทอง
+ฉัตรไชย อาณาวรรณ
+ฉันทนา จังศรียวงศ์
+ฉันทนา ทองธูป
+ฉันทนา พิมลสมบัติ
+ฉันทนา วัชรเสวี
+ฉันทนา หงษ์เฉิดฉันท์
+ฉันท์สินี ทิพศร
+ฉั่นกิ๊ม แซ่ฉั่น
+ฉาย สิงห์ใหญ่
+ฉินกี้ฟอง แซ่ฉิน
+เฉนียน เสนวงษ์
+เฉลย สมิตะมาน
+เฉลา จิระชีวะนันท์
+เฉลา เปี๊ยะสวัสดิ์
+เฉลา วีระกุล
+เฉลาศรี ทรรพวาทิน
+เฉลิม ขำปัญญา
+เฉลิม แจ่มจำรัส
+เฉลิม ดีประเสริฐ
+เฉลิม ธาดาประดับสกุล
+เฉลิม ปัญญา
+เฉลิม พิสิษฐ์สังฆการ
+เฉลิม ยงค์เจริญชัย
+เฉลิม ลือสัมพันธ์
+เฉลิม ศิริวงศ์
+เฉลิม สุขุมพานิช
+เฉลิม องค์ศุลี
+เฉลิมขวัญ ชูคำ
+เฉลิมชัย จันทรวิรุจ
+เฉลิมชัย ทรัพย์สอน
+เฉลิมชัย โพธิ์ทอง
+เฉลิมชัย ศรีอินทนนท์
+เฉลิมชัย อุดมรัตน์
+เฉลิมพงษ์ มหาวาณิชย์วงศ์
+เฉลิมพร เวชเฉลิมจิตร
+เฉลิมพล ฐิตินันท์ถาวร
+เฉลิมพล พานิชยานุวัฒน์
+เฉลิมพล สร้างสมสุขสกุล
+เฉลิมมาต ลิมปิชัยพานิช
+เฉลิมวุธ ซื่อตรง
+เฉลิมศรี เทียมสมบูรณ์
+เฉลิมศรี วิวัฒน์วานิชกุล
+เฉลิมศักดิ์ คงเรืองศรี
+เฉลิมศักดิ์ ระบิลวงศ์
+เฉลิมอัฑฒ์ ก้อนทอง
+เฉลิมเกียรติ สันติพันธุ์
+เฉลียว กลิ่นนิ่มนวล
+เฉลียว จงประสมสิน
+เฉลียว แซ่เตีย
+เฉลียว ไทยเจือ
+เฉลียว ปรึกษา
+เฉลียว เพชรขำ
+เฉลียว รอดเดช
+เฉลียว ศรีหาวงศ์
+เฉลียว แสงกิตติไพบูลย์
+เฉลียว เอี่ยมยอดสิน
+เฉวียน คำเนตร
+เฉิดโฉม สุกกสังค์
+แฉล้ม กระถินทอง
+แฉล้ม โชติช่วง
+แฉล้ม ผูกพันธ์
+แฉล้ม วิชุประภา
+แฉล้ม อุศุภรัตน์
+โฉมยงค์ นาคนึก
+โฉลง กลั่นทรัพย์
+ไฉน พลีขันธ์
+ไฉไล กุลภัทร์แสงทอง
+ช วรัตน์
+ชญานี ตรีทิพยางกูร
+ชฎาพร มันยากุล
+ชฎาวัลย์ รื่นวงษา
+ชณิตา คงสายทองคำ
+ชดช้อย พวงรอด
+ชนกพร เรืองกิจปกรณ์
+ชนม์นิภา นาคย้อย
+ชนะ จันทร์กระจ่าง
+ชนะ เทพบริสุทธิ์
+ชนะ เยี่ยงกมลสิงห์
+ชนะ หนุนภักดี
+ชนะชัย ภู่มีเจริญ
+ชนัชณ์ จันทรเจริญ
+ชนัตถ์ กิตติวิโรจน์
+ชนาญวัต จิตร์ภิรมย์ศรี
+ชนาพร ชูทิม
+ชนิกานต์ ทาคำมา
+ชนิดา ครุฑทอง
+ชนิดา ตาณะสุต
+ชนิดา โภไคศวรรย์
+ชนิดา ศิริรัตนกุล
+ชนิต วิทยากรโกมล
+ชนินทร ศรีรัตน์ภิญโญ
+ชนินทร์ ชีวโชคชัย
+ชนินทร์ ปิยะวาณิชเสถียร
+ชนินทร์ วิเศษดั้น
+ชนินทร์ อัศวธเรศ
+ชนุวรรณ ตรีเกษม
+ชม แซ่ตัน
+ชม สีแจ่ม
+ชมนาค เจริญกุล
+ชมพล สิริสัมพันธ์เจริญ
+ชมพูนุท แซ่ตั้ง
+ชมภู ชมภูนุช
+ชมภู่ พรมพูนพะเนา
+ชมัยพร คำหอมกุล
+ชยทัต รติรมย์พันธ์
+ชยันต์ โพธิ์ทอง
+ชยาวุธ ทิวเสถียร
+ชรัตน์ ต่ออ่อน
+ชรินทร์ กนกพิพัฒน์วงศ์
+ชรินทร์ บัวอ่อน
+ชรินทร์ สวนเจริญ
+ชฤทธิ์ มีสิทธิ์
+ชลดา ปิยณรงค์โรจน์
+ชลธนันท์ เอื้อประกิจสิริ
+ชลธิชา โชติช่วง
+ชลธิชา มหากิจศิริ
+ชลธิดา ธรรมวัฒน์วิมล
+ชลนิชา เจริญสมบัติ
+ชลลดา จงปติยัตต์
+ชลลดา ศิริพงศ์สัมพันธ์
+ชลอ กรีชวด
+ชลอ งามฤทธิ์
+ชลอ แซ่เล้า
+ชลอ นิ่มทอง
+ชลอ พงษ์ภมร
+ชลอ มหาอมรเลิศ
+ชลอ วิมูลชาติ
+ชลอ สุจิตธรรมวงศ์
+ชลอ อุปะเดีย
+ชลัช เทพมโนทัยสกุล
+ชลัมพร ธรรมเนียมจัด
+ชลาภรณ์ สถาพรธนาสิน
+ชลิดา คงรัตนประเสริฐ
+ชลิต ขีตตะสังคะ
+ชลิต ทองมณี
+ชลิต ลิ้มรสสุคนธ์
+ชลิต อาชาไนยกุล
+ชลินทร อนุตรพร
+ชลีพร รักพืช
+ชวชาติ ใจเพ็ชร
+ชวน โชติจารุไชยา
+ชวน พทธโกสัย
+ชวน ศิริกิจ
+ชวนชม จันทระเปารยะ
+ชวนชื่น กราพงษ์
+ชวนพิศ งามขำ
+ชวนพิศ เนมี
+ชวนพิศ วิรยศิริ
+ชวนัชย์ จรรยาศักดิ์
+ชวรัตน์ บวบทอง
+ชวลิต เกตุพล
+ชวลิต จันทรสวัสดิ์
+ชวลิต ชวลิตสุนทร
+ชวลิต แซ่ลิ้ม
+ชวลิต ทรงศรชัย
+ชวลิต นิธากร
+ชวลิต ปัญญาสงค์
+ชวลิต พุนทิกาพัทธ์
+ชวลิต มีแก้วน้อย
+ชวลิต ลิมปิผลไพบูลย์
+ชวลิต วิริยะอาภรณ์
+ชวลิต ส่วนเศรษฐา
+ชวลิต เสนาขันธ์
+ชวลิต อ่อนเมือง
+ชวลี ปัญจางค์เจริญ
+ชวาล เขมะลิลิต
+ชวาลา สุวรรณชีพ
+ช่วง กุลวรรณวิจิตร
+ช่วงโชค ทองอยู่
+ช้วน บัวทอง
+ชอบ คุ้มสติ
+ชอบ พรหมเดช
+ชอบศักดิ์ เส็งประเสริฐ
+ชอุ่ม ไวทยาคม
+ช่อ อยู่บัว
+ช่อทิพย์ เทศประสงค์
+ช่อทิพย์ หิรัญวงษ์
+ช่อลัดดา นนทวัฒน์
+ช้องฮวย รุ่งเรืองรัตนชัย
+ช้อฮั้ว สมศิริวัฒนา
+ชะลอ ศรีเงินยวง
+ชะเลงศักดิ์ เชื้ออรวรรณ
+ชะโอด ทรัพย์กล้า
+ชั้งกิม แซ่โก
+ชัชชนก ศุภผลถาวร
+ชัชชัย บุญยืนยงสกุล
+ชัชชาย วงศ์สงวน
+ชัชพงษ์ โหตะระภวานนท์
+ชัชวรรณ ศิริบรรจงศักดิ์
+ชัชวาล ชูชัยพิเชฐ
+ชัชวาล ปิยะประพันธ์พงษ์
+ชัชวาล วิริยะเจริญมงคล
+ชัชวาล เอี่ยมพิภักดิ์
+ชัชวาลย์ เจริญสวรรยา
+ชัชวาลย์ เต็มฤทธิวงศ์
+ชัชวาลย์ ปายะนันทย์
+ชัชวาลย์ เมฆฉาย
+ชัชวาลย์ วุฒิประเสริฐ
+ชัชวาลย์ สุวิริยะไพศาล
+ชัชสมร ชุนหชัย
+ชัดชัย ปานนาค
+ชั้น จูน้อย
+ชั้น ฤทธิ์หิรัญ
+ชัย ขมิ้นผง
+ชัย แซ่เฮ้ง
+ชัย มนัสศิริเพ็ญ
+ชัย สุรสิทธิ์
+ชัยกิจ อุทัยวัณน์
+ชัยชนะ พันธุ์ภักดีดิสกุล
+ชัยชาญ จูงเจริญจิตต์
+ชัยชาญ สิริมงคลพาณิชย์
+ชัยณรงค์ จันทร์สว่าง
+ชัยณรงค์ ธนาสมบูรณ์ผล
+ชัยณรงค์ เมธีระวัฒน์
+ชัยณรงค์ สนธิปัญญากุล
+ชัยดิษฐ์ ยงบรรเจิด
+ชัยธวัช นาคะนคร
+ชัยนันท์ วิสูตรเรืองเดช
+ชัยปิติ ม่วงกูล
+ชัยพจน์ ฉัตรศรีนพคุณ
+ชัยพร ไชยวุฒิเสรี
+ชัยพร ประเสริฐกันย์
+ชัยพร รัตนเมธานนท์
+ชัยพร สมใจนึก
+ชัยพฤกษ์ แก้วกมล
+ชัยพันธุ์ ประยูรวรรณ
+ชัยมงคล ยิ่งยมสาร
+ชัยยงค์ กาญจนฆาร
+ชัยยงค์ ศรีอรัญญากุล
+ชัยยศ ชินโชติกร
+ชัยยศ พงศ์พูลทอง
+ชัยยศ สินธุประสิทธิ์
+ชัยยะ มีสกุล
+ชัยยันต์ บัวอุไร
+ชัยยา ภิญโย
+ชัยยุทธ ชัยสุรินทร์
+ชัยยุทธ ปิติปาละ
+ชัยยุทธ วันสอง
+ชัยยุทธ เอียดแก้ว
+ชัยรัตน์ กมลนรเทพ
+ชัยรัตน์ จูประจักษ์
+ชัยรัตน์ เดชานำวงศ์
+ชัยรัตน์ บุญน้อย
+ชัยรัตน์ มาประณีต
+ชัยรัตน์ วรวงศ์เธอ
+ชัยรัตน์ สุรชัยธนวัฒน์
+ชัยฤกษ์ เพิ่มเกียรติศักดิ์
+ชัยฤทธิ์ สีหิสราภิสิทธิ์
+ชัยวัฒน์ กิตติพรนันท์
+ชัยวัฒน์ จริยาภรณ์
+ชัยวัฒน์ ชัยรัตนทรงพร
+ชัยวัฒน์ ตันกำแหงเดชา
+ชัยวัฒน์ ธีรสุขประเสริฐ
+ชัยวัฒน์ ประเสริฐชัยกิจ
+ชัยวัฒน์ พานิชยาภรณ์
+ชัยวัฒน์ เยาวภาพงศ์
+ชัยวัฒน์ วงศ์วัฒนศานต์
+ชัยวัฒน์ ศรีเจริญธรรม
+ชัยวัฒน์ สุขวณิชนันท์
+ชัยวัฒน์ อริยมงคลสกุล
+ชัยวัตร์ เตชะฤดีวรรณ
+ชัยวิวัฒน์ เขียวโสภณ
+ชัยวุฒิ ศุภวงศ์วิศาล
+ชัยศักดิ์ ชั่งใจ
+ชัยศิริ พันธุ์โอภาส
+ชัยสิทธิ์ ก่อเกียรติเจริญ
+ชัยสิทธิ์ แต้รัตนชัย
+ชัยสิทธิ์ ลูกรักษ์
+ชัยสิทธิ์ อัญชนานนท์
+ชัยเจริญ เจริญสิทธิ์
+ชัยเลิศ โกยสมบูรณ์
+ชัยโรจน์ เกษรางกูร
+ชัยโรจน์ วัฒนศิริสุข
+ชาคร ปราการนพคุณ
+ชาคริต สุขพรวิทวัส
+ชาญ เกียรติสังวรณ์
+ชาญ เจริญสิทธิพันธ์
+ชาญ เชี่ยวธีรกุล
+ชาญ เตรียมศิริวรกุล
+ชาญ บัวทอง
+ชาญ พันธ์แช่ม
+ชาญ เมธางกูร
+ชาญ วงศ์สุรศิลป์
+ชาญ สง่างาม
+ชาญ เสรีรัฐโพธิ์ตระกูล
+ชาญ เอี่ยมอุ่น
+ชาญชัย กิตติวงศ์ไกร
+ชาญชัย คงโต
+ชาญชัย จารุไพบูลย์
+ชาญชัย ชวลิตกิจเจริญ
+ชาญชัย ไชยนามสถิตย์
+ชาญชัย ณ ถลาง
+ชาญชัย โตบดี
+ชาญชัย นทีวงศ์กิจ
+ชาญชัย ประดับชนานุรัตน์
+ชาญชัย พร้อมวุฒิ
+ชาญชัย ภัทรสิทธิเสรี
+ชาญชัย รัตนาชัยพงษ์
+ชาญชัย เลิศประสพโชค
+ชาญชัย วิทูรปัญญากิจ
+ชาญชัย ศิริวงศ์วราภรณ์
+ชาญชัย สิทธิชัยวิริยะกุล
+ชาญชัย แสงจันทร์ศิวดล
+ชาญชัย อภิรมย์เสมอ
+ชาญชัย เอมะรุจิ
+ชาญณรงค์ ขวัญเจริญ
+ชาญณรงค์ ทองนวล
+ชาญณรงค์ ภูผา
+ชาญณรงค์ สิทธิสมบูรณ์
+ชาญบูรณ์ เพ็ญตระกูล
+ชาญยุทธ ประเสริฐโสภา
+ชาญยุทธ์ ตรีสุคนธ์
+ชาญวิทย์ ช่วงชัย
+ชาญวิทย์ ปิยะวาณิชเสถียร
+ชาญวิทย์ สุขอร่าม
+ชาญวุฒิ พรกิตติวัฒนากุล
+ชาญศักดิ์ ทานธนะเจริญ
+ชาญศักดิ์ อุดมถิรพันธุ์
+ชาญเวช ศรัทธาพุทธ
+ชาตรี เกรียงยะกุล
+ชาตรี เจริญจรัสกุล
+ชาตรี ดิเรกวัฒนชัย
+ชาตรี นกสกุล
+ชาตรี พัธนพันธุ์
+ชาตรี ลิมปิชัยโสภณ
+ชาตรี ศรีสุคนธ์
+ชาตรี สุหัสไพศาล
+ชาตรี อินคุ้ม
+ชาติ ทางทอง
+ชาติชัย จาตุศรีพิทักษ์
+ชาติชาย จงกล
+ชาติชาย แซ่แต้
+ชาติชาย ประสิทธิสา
+ชาติชาย ยุวนะเตมีย์
+ชาติชาย ศรีสาริสถ์
+ชาติชาย อัครวิบูลย์
+ชาติเฉลิม เลขวณิชธรรมวิทักษ์
+ชานนท์ สายชุม
+ชาย ท้วมกลิ่น
+ชาย อุมะวิชนี
+ชายใหญ่ บุญเข็มทอง
+ชาลินี จันทวารา
+ชาลี คำลาย
+ชาลี ทิพยวาน
+ชาลี เพียรมานะ
+ชาลี วัชรเสถียร
+ชาลี อนันต์วิริยะชัย
+ชำนะ ทัตติยพงศ์
+ชำนาญ ฉวีวงษ์
+ชำนาญ แต้สุจิ
+ชำนาญ บุญวิทยากุล
+ชำนาญ โพธิ์สุข
+ชำนาญ เลาหบุตร
+ชำนาญ สาระผล
+ชำนาญ อินทะนะ
+ชำเชี้ยะ ขันทอง
+ชิงชัย พิพัฒน์จรัสสกุล
+ชิด จริยาวิลาศ
+ชิดชนก ศรีสมวงษ์
+ชิดพงษ์ สยามเนตร
+ชิต ตันศิริล้ำ
+ชิต ยะโส
+ชิตชม จัตตุพรพงษ์
+ชิตสกนธ์ สันทัด
+ชิน ตั้งกุศลลลิต
+ชิน โรจนแสง
+ชินณเรศ ดิษฐผล
+ชินฤทธิ์ ประยูรทอง
+ชินวัตร ใจเที่ยง
+ชินเหรียญ เสกธีระ
+ชิลัย สุวรรณสาร
+ชี เค แลม
+ชีวา กลิ่นดี
+ชื่น เกตุปมา
+ชื่น เวทมาหะ
+ชื่นจิต แหลมจริง
+ชื่นจิตร แซ่ตั้ง
+ชื่นสุข กมลทกาภัย
+ชื้น ทองญวน
+ชุงเอง แซ่เจีย
+ชุดาพร แสนราชา
+ชุตินันท์ เตชะสมบูรณ์
+ชุติมณฑน์ บุญชัชวาล
+ชุติมา ขันดี
+ชุติมา ชินโน
+ชุติมา ทรัพย์สิรินทร์
+ชุติมา ปัววราภรณ์
+ชุติมา มหัคคกุล
+ชุติมา วชิรเสรีชัย
+ชุติมา สินสาธิต
+ชุติมา อัญญณรงค์กุล
+ชุน แซ่โง้ว
+ชุนเซ้ง แซ่โง้ว
+ชุบ จันทร์แก้ว
+ชุบ ลาไม้
+ชุมนุม ศัตรูลี้
+ชุมพร ผดุงกิจ
+ชุมพล กาญจนโกศล
+ชุมพล ชมพูทวีป
+ชุมพล ตีรณสาร
+ชุมพล บุญสาใจ
+ชุมพล มรรคผล
+ชุมพล เวสสบุตร
+ชุมพล เสริมชั้น
+ชุมรัตน์ จักรจิตรภา
+ชุมสาย มณีน้อย
+ชุ่ม น้อยประชา
+ชุรีวรรณ จินตกวีวัฒน์
+ชุลี เรืองฤทธิ์
+ชุลีกร รัตน์วิจิตต์เวช
+ชุลีพร บุญอยู่
+ชุลีพร อึ้งวิศิษฎ์วงศ์
+ชู โจแอนนา
+ชูจันทร์ฉาย ลาเคน
+ชูจิตต์ ธรรมฐิติ
+ชูจิตร มักพันธ์เจริญกิจ
+ชูชัย เกิดผล
+ชูชัย เตชะธรารักษ์
+ชูชัย เรียบเลิศหิรัญ
+ชูชัย อุดมโภชน์
+ชูชาติ คำโต
+ชูชาติ ซึ่งดำรง
+ชูชาติ นพวงษ์
+ชูชาติ พงษ์รัตน์
+ชูชาติ รักษาสัตย์
+ชูชาติ ศรีรัตน์
+ชูชาติ สุวัชรวิวัฒน์
+ชูชาติ เอี่ยมสุทธา
+ชูชีพ ปัญจสังข์
+ชูชีพ สังข์นิลแก้ว
+ชูดวง แสงชูโต
+ชูพงศ์ หวังวัฒนานันท์
+ชูพันธ์ โกมลสุต
+ชูรัตน์ บุญเนาว์
+ชูวงศ์ นิติปัญญาวงศ์
+ชูศรี กองแก้ว
+ชูศรี เจียรกุลประเสริฐ
+ชูศรี ทองธรรมชาติ
+ชูศรี ปาละกูล
+ชูศรี มะลิอ่อง
+ชูศรี วิวัฒน์วงศ์ธร
+ชูศรี สุริวงษ์
+ชูศรี เอี่ยมสอาด
+ชูศักดิ์ จันทรมานะ
+ชูศักดิ์ โชคบวร
+ชูศักดิ์ ทองกล่ำ
+ชูศักดิ์ ประทีปเทียนทอง
+ชูศักดิ์ ม่วงยา
+ชูศักดิ์ ลือชาอุดมเกียรติ
+ชูศักดิ์ ศรีเจริญล่ำซำ
+ชูศักดิ์ สุวรรณบูลย์
+ชูศักดิ์ อุ่นประเสริฐศิลป์
+ชูสาร วงศ์วัชรา
+ชูเกียรติ กัณฑศิลป์
+ชูเกียรติ ชื่นภากรณ์
+ชูเกียรติ นาครนราธร
+ชูเกียรติ เมธีประภา
+ชูเกียรติ สว่างเนตร
+ชูเคว้ง แซ่โง้ว
+ชูเอ็ง พรทวีทัศน์
+ชูใจ ฮูเซ็น
+ชโลทร สุวรรณสัญญา
+ชไมพร ชุมเสวี
+ชไมพร วิทิตวัฒน
+เชงคิ้ง แซ่แต้
+เชน ปิ่นเพชร
+เชล พงษ์ศักดิ์
+เชวง เพชรสุวรรณ
+เชวงศักดิ์ เมฆา
+เชษฐชัย รัตนานุวงศ์ชัย
+เชษฐา สุนทรกิติ
+เชอรี่วรรณ จิณณธรรมพงษ์
+เชาวนี สมิตานนท์
+เชาวน์ ยะสุพัฒนากุล
+เชาวรัตน์ เนตรมณีทิพย์สิริ
+เชาวลิต ขำศิริ
+เชาวลิต โปร่งกมล
+เชาวลิต สุขสบาย
+เชาว์ แก้วประดิษฐ
+เชาว์ ทองมา
+เชาว์ มิ่งแก้ว
+เชาว์ หลักเพ็ชร
+เชิงชัย ธำรงวินิจฉัย
+เชิญ ประทุมนนท์
+เชิด บัวเปรม
+เชิด อินทร์มงคล
+เชิดชัย นันทิวัชรินทร์
+เชิดชัย ศรีคำรุณ
+เชิดชาย มากบำรุง
+เชิดพันธุ์ เจริญเวช
+เชิดศักดิ์ นำเจริญกิจกุล
+เชิดศักดิ์ สุคนธสิงห์
+เชียง สำเร็จผล
+เชียะตง เอกอรุณรุ่งฤทธิ์
+เชี้ยน มอญกระโทก
+เชื้อ เกตุนวม
+เชื้อ เรืองรุ่งโรจน์
+เชื้อเต็ก แซ่ฉิ่น
+เช็งสุน แซ่เลี่ยว
+เช้า ธรรมโชติ
+แช่ม เผือกทอง
+โชค พงศาปาน
+โชคชัย จันทร์ผาสุข
+โชคชัย แซ่โง้ว
+โชคชัย บุญญารัตน์สถาพร
+โชคชัย ภาวสุทธิการ
+โชคชัย วังมะนาว
+โชคชัย สุทธิ์ประเสริฐพร
+โชคดี กำพลเชตุ
+โชคอนันต์ พงษ์ติแด
+โชติ จิณณวาโส
+โชติ ประยงค์ทรัพย์
+โชติ สนธิทรัพย์
+โชติกา สวัสดิ์สาระ
+โชติมา กมลวิบูลย์
+โชติรส คูผาสุข
+โชติวุฒิ ผดาจิตร
+ใช่เอ็ง แซ่หลิ่ว
+ไชย แซ่โซว
+ไชยณรงค์ สุนทโรทยาน
+ไชยพร สุคนโธหก
+ไชยยงค์ รินสถิตนนท์
+ไชยยศ พูนดี
+ไชยยันต์ จิรา
+ไชยยา หาญวิวัฒน์วงศ์
+ไชยรัตน์ รัตนแก้วกาญจน์
+ไชยวัฒน์ ฉลองพันธรัตน์
+ไชยวัฒน์ สาวถยางกูร
+ไชยสนธิ์ ถนัดใช้ปืน
+ไชยันต์ ฤตวิรุฬห์
+ไชยา มณี
+ไชยเทพ พิมลธนรักษ์
+ไชโย สิทธิกรโสมนัส
+ซกฮุย พันทร
+ซงค์ รพิทยพรรณ
+ซ่งเม้ง แซ่ตั้ง
+ซ้งเส็ง สุริยะจันทร์หอม
+ซอยม่วย เหลืองทำเหมือน
+ซ่อหยิน แซ่ตั้ง
+ซังเอ็ง แซ่ตั้ง
+ซั้วปวยเม้ง แซ่ซัว
+ซามวล ฟิลลิพส์มิวส์
+ซาวารัน ซิงห์
+ซิกซวง แซ่อั้ง
+ซิมค้วง แซ่เตง
+ซิวง้อ แซ่กัว
+ซิวม่วย แซ่อึ้ง
+ซิวเจ็ง แซ่ตั้ง
+ซิวไน้ แซ่โง้ว
+ซิ้วจู แซ่ตั้ง
+ซิ้วเตียง ประดิษฐ์
+ซีรอยุดดิน มินสาคร
+ซื่อเหลียง แซ่ตั้ง
+ซุนติ๊ก แซ่ฮึ้ง
+ซุยง้อ แซ่เอี้ยว
+ซุ่ยล้ง แซ่ตั้ง
+ซุ้ยลิ้ม แซ่ตั้ง
+ซูบ๊วย แซ่ลิ้ม
+ซู่เกี่ยว แซ่ตั้ง
+เซน โหมดเสม
+เซาะฮวง แซ่หลาย
+เซียงกวง แซ่จึง
+เซียมจู เธียรปรีชา
+เซียมเง็ก แซ่เอี้ย
+เซียวตวง แซ่แต้
+เซียะจั้ว แซ่ตั้ง
+เซียะเกียว แซ่กี้
+เซี่ยงกง แซ่ตั้ง
+เซี่ยมจวน แซ่เฮ้ง
+เซี่ยมลั้ง แซ่ลิ้ม
+เซี่ยมเกียง แซ่ตั้ง
+เซี่ยมเม้ง แซ่เล้า
+เซี่ยวจิว แซ่เอ็ง
+เซี้ยม แซ่เอ็ง
+เซี้ยะย้ง แซ่คู
+เซ็งเฮียง แซ่เตียว
+เซ่งเตียง แซ่โง้ว
+เซ้ยเจี่ย แซ่เบ๊
+โซเฟีย ดำสำราญ
+ไซจู แซ่อึ้ง
+ไซโกอัง แซ่ลิ้ม
+ไซ้เอ็ง แซ่ลิ้ม
+ญาณินี ธชาลุภัฏ
+ญาณีย์ อุ้ยสกุล
+ญานี ตันติตระกูล
+ฐนิดา สกุลชัยวานิช
+ฐากูร ทรงประจักษ์กุล
+ฐานันดร์ อัศวเลิศสรร
+ฐานิศวร์ เจริญพงศ์
+ฐาปนี ศรีนาค
+ฐิตราพร สำราญจิตต์
+ฐิติ โชคเจริญพัฒนกิจ
+ฐิติกา มีธรณี
+ฐิตินันท์ จริยวัฒนสกุล
+ฐิติพงศ์ ศุภผล
+ฐิติพร เตชะโสภณมณี
+ฐิติพร สืบประดิษฐ์
+ฐิติมา คงสว่าง
+ฐิติมา เพียรชอบ
+ฐิติมา อนุสนธิ์
+ฐิติรัตน์ ประภายสาธก
+ฐิติวัฒน์ ล้วนวัฒนานุกูล
+ฐิราอร มินราชัน
+เฑียร กรรณสูต
+ณฐวรรณ ประยุกต์สกุล
+ณพล พลินสุต
+ณรงค์ชัย กิตติโชติรัตน์
+ณรงค์ชัย ธนะปักษิณ
+ณรงค์ชัย ศิริบุญละม่อม
+ณรงค์ยศ สำราญ
+ณรงค์ฤทธิ์ พนาสวัสดิ์
+ณรงค์วิทย์ วิทสัทธาวรกุล
+ณรงค์ศักดิ์ ดีอำพัน
+ณรงค์ศักดิ์ พรหมสาขา ณ สกลนคร
+ณรงค์ศักดิ์ เลิศอนันต์
+ณรงค์ศักดิ์ แสงวัชร
+ณรงค์เดช บุญครอง
+ณรงค์ กองทรัพย์โต
+ณรงค์ กุสสลานุภาพ
+ณรงค์ ขันจอก
+ณรงค์ คำพานิช
+ณรงค์ จวบฤกษ์เย็น
+ณรงค์ จำรูญวัฒน์
+ณรงค์ เจริญเกียรติวงศ์
+ณรงค์ ชัยธีรกิจ
+ณรงค์ โชคจารุรัตน์
+ณรงค์ ด่านอนันต์สุข
+ณรงค์ ตั้งวิบูลย์วิทย์
+ณรงค์ โต๊ะเงิน
+ณรงค์ ทองเรือง
+ณรงค์ ไทยสุริยะ
+ณรงค์ น้อยวงศ์
+ณรงค์ นุตจรัส
+ณรงค์ บุญสิทธิ์
+ณรงค์ ปรีญานนท์
+ณรงค์ ผลามิตร
+ณรงค์ พรายทอง
+ณรงค์ พิริยพฤนท์สกุล
+ณรงค์ โพธิพุกกะนะ
+ณรงค์ มณีวงษ์
+ณรงค์ เมธีวิริยาภรณ์
+ณรงค์ รอดสาย
+ณรงค์ รุ่งวิชานิวัฒน์
+ณรงค์ ลิมปิศิลป์
+ณรงค์ วงษ์สว่าง
+ณรงค์ วิบูลย์เจริญกิจ
+ณรงค์ ศรีนาวาวงศ์
+ณรงค์ ศิลปชำนาญ
+ณรงค์ สรรสุนทร
+ณรงค์ สิทธิมงคล
+ณรงค์ สุทธิวัล
+ณรงค์ เสาวลักษณ์
+ณรงค์ หมื่นวงษ์
+ณรงค์ อดุลย์วิจิตร
+ณรงค์ อังคะจันทร์
+ณรงค์ อุ่นอ่อน
+ณรงศักดิ์ ตั้งเจริญสุขจีระ
+ณริสาห์ เหลืองสวัสดิ์
+ณัชชา กสิพร้อง
+ณัฎฐพร พรหมจินดา
+ณัฎฐินี ดวงภิรมย์
+ณัฏฐพงศ์ ขจรโกวิทย์
+ณัฏฐา น้อยนิวรณ์
+ณัฏฐไชย สายบัว
+ณัฐ ถนอมพิชัย
+ณัฐ อินธการ
+ณัฐกานต์ จงดี
+ณัฐการ อุดมหรรษากุล
+ณัฐชนก แก่งหินแก้ว
+ณัฐชัย ปิยะวงศ์วัฒนา
+ณัฐญา ลี้พ้นพาล
+ณัฐณิชา ธเนศพงศ์ธรรม
+ณัฐธร คูดำรงสวัสดิ์
+ณัฐนันทน์ ทองวิเศษ
+ณัฐปกรณ์ เลาแก้วหนู
+ณัฐพงศ์ สิริพลังคานนท์
+ณัฐพงษ์ สันติศานต์
+ณัฐพร นามบุรี
+ณัฐพร หวังศรีตรัย
+ณัฐพล ช้างสำลี
+ณัฐพล ภัทรเรืองสกุล
+ณัฐพล หวังฤทธิ์ไกรกุล
+ณัฐภรณ์ พรกิตติโชติเจริญ
+ณัฐยา ศิรินันท์
+ณัฐวร สิงหทัต
+ณัฐวรรณ รัศมีพรหม
+ณัฐวัฒน์ บุนนาค
+ณัฐวุฒิ จารุวรรณากูร
+ณัฐวุฒิ ปัญตะโญ
+ณัฐวุฒิ สิมะสุวรรณรงค์
+ณัฐสมพล จำปาทิพย์
+ณัฐสุรางค์ หลิมเจริญ
+ณัฐิยา สันติโยธิน
+ณัศภร เอี่ยมโอภาส
+ณิชาภัทร ชมวิชา
+ณุติศิษฏ์ วิบูลยานนท์
+ดนัย กล่อมเอี้ยง
+ดนัย ฉัพพรรณรังษี
+ดนัย ทิวาเวช
+ดนัย พิณรัตน์
+ดนัย วัฒนรัชกิจ
+ดนัย หะสิตะพงษ์
+ดนุจร เจิมเจิดพล
+ดรรชนี เทวานุรักษ์
+ดรุณพร กมลภุส
+ดรุณี จันดาเวียง
+ดรุณี ตรีศิริพิศาล
+ดรุณี บุษยานุเคราะห์
+ดรุณี รักสัตย์
+ดรุณี ศรีชัยกุล
+ดรุณี หาญสมบูรณ์
+ดลณัฏฐา ศรีเรืองชีพ
+ดลฤดี วิทยาศิริกุล
+ดวง เสมากูร
+ดวงกมล แซ่ตั้ง
+ดวงกมล พูพัฒนานุรักษ์
+ดวงกมล สินธุบูรณ์
+ดวงจันทร์ คลังตระกูล
+ดวงจันทร์ โยธาสิงห์
+ดวงจิตต์ การุณสถิตย์ชัย
+ดวงดาว แซ่ก๊วย
+ดวงดาว เหลืองอาสนะทิพย์
+ดวงตา แตงอ่อน
+ดวงตา สมจิตร์
+ดวงทิพย์ วนะภูติ
+ดวงนภา สวนธนาศิริ
+ดวงพร คำขันธ์
+ดวงพร ชุมพงษ์ทอง
+ดวงพร ไตรสุธรรมพร
+ดวงพร ปิยะชาตินันท์
+ดวงพร ยงค์ฤประพันธ์
+ดวงพร วิไลพรเจริญ
+ดวงพร สุคนธ์
+ดวงพร อึ้งอัมพรวิไล
+ดวงมน วงษ์จันทร์แดง
+ดวงรัตน์ ด่านวัฒนศิริ
+ดวงรัตน์ ศรีทอง
+ดวงฤดี ทวีพจน์
+ดวงฤมล รักษาคุณ
+ดวงสมร มณีผ่อง
+ดวงสุมน สมวิชัย
+ดวงเดือน คล้ายพงษ์พันธ์
+ดวงเดือน บุญชัยฤทธิ์
+ดวงเดือน สัยเกตุ
+ดวงเพชร อรัญชราธร
+ดวงแข โกมุทพงศ์
+ดวงใจ กีระวิศาสกิจ
+ดวงใจ ชาวประสา
+ดวงใจ ทัพพะรังสี
+ดวงใจ ผุดประภากุล
+ดวงใจ รักเนตรสาคร
+ดวงใจ สงวนแก้ว
+ดวงใจ อุปเสนสกุลวงษ์
+ดอกไม้ จ้อยถนอม
+ดะห์ ดีเจริญ
+ดัสซันซิงห์ กุลาตี
+ดาร์ชั่น ซิงห์
+ดารณี จำปา
+ดารณี ถิรธนกุล
+ดารณี เปรื่องวิทยากุล
+ดารณี เมฆกวี
+ดารณี วิชญคุปต์
+ดารณี เสริมสุนทรศิลป์
+ดาระกา ศิริสันติสัมฤทธิ์
+ดารา จันทร์แสงสุก
+ดารา เลี้ยงชูศักดิ์
+ดาราณี เสาวมล
+ดารารัตน์ จิงเสถียรทรัพย์
+ดารารัตน์ สถิตธรรมนูญ
+ดาราวรรณ รัตนสุภา
+ดาริณี เกษมสันต์
+ดารินทร์ สอนเจตน์
+ดารุณี มั่นคง
+ดาลัด วิมุกติบุตร
+ดาวณี สุขมา
+ดาวรุ่ง พรหมศรีทอง
+ดาวุฒ อัชฌาสัย
+ดาวเรือง รอดภัย
+ดาเรศ พรรณขาม
+ดำรง เกษะประดิษฐ์
+ดำรง ทองมาก
+ดำรง รัชตศรีประเสริฐ
+ดำรง สุขผลานันท์
+ดำรงค์ศักดิ์ ทองยืน
+ดำรงค์ คงเจริญ
+ดำรงค์ ชูติกาญจน์
+ดำรงค์ ทองพลาย
+ดำรงค์ ปรีดาภัทรพงษ์
+ดำรงค์ ภูทัตโต
+ดำรงค์ วงษ์ทอง
+ดำรงค์ สิมพลิพันธุ์
+ดำรงค์ อายุเจริญกูล
+ดำรงฤทธิ์ สันติปาตี
+ดำรงศักดิ์ มะลิทอง
+ดำรงเกียรติ มิตรภักดี
+ดำริ ผางยอยซ้าย
+ดำริห์ ปรุงแต่งกิจ
+ดำเกิง จันทราประภาเวช
+ดำเนิน เผ่าพันธุ์
+ดิน รื่นพิทักษ์
+ดิลก ปรางค์นวรัตน์
+ดิลก สามลเวช
+ดิษพงค์ พฤฒิธาดา
+ดิเรก เกตุวัสห์
+ดิเรก โชติวิจิตร
+ดิเรก บางเขียว
+ดิเรก มีอนันต์
+ดิเรก ศักดี
+ดิเรก โฮรา
+ดีมั่น กอบพิมาย
+ดุจดาว สุทธิปรวิทยากุล
+ดุลยนิตย์ อุดมวงศ์ทรัพย์
+ดุษฎี เจริญจิตกร
+ดุษฎี พักตรพันธานนท์
+ดุษฎี สิทธิทอง
+ดุษฏี รัตนาสังการ
+ดุษณี เลรามัญ
+ดุษดี อนันต์ลักษณ์การ
+ดุสิต แจ่มศรี
+ดุสิต บุษบา
+ดุสิต วิรยศิริ
+ดุสิตธรรมคุณ พระครู
+เดช ถิตย์สงวน
+เดช หนูน้ำ
+เดชพล เหรียญวิโรจน์
+เดชา ก้องไพรินทร์
+เดชา จารุมณีโรจน์
+เดชา แซ่แต้
+เดชา เทศะศิริ
+เดชา เปี่ยมราศรี
+เดชา มีระเสน
+เดชา ไวว่อง
+เดชา สุฒนกิจกุล
+เดชา อินทนิล
+เดวิด เดนนี่
+เดือน ปิยะมาลย์มาศ
+เดือนทิพย์ ชัยพันธ์
+เดือนเพ็ญ ฐาปนาชัย
+เดือนเพ็ญ วรประเสริฐ
+เดโช วุฒิกาญจนาวงศ์
+เด่น ศิริบุญ
+เด่นนภา ศาลิคุปต
+แดง จรจันทร์
+แดง ด่านแจ้ง
+แดง ม่วงงาม
+แดง หนูพันธ์
+แดนชัย ขาวฉอ้อน
+ได้เอ็ง แซ่ผู่
+ตติยา จินาวงศ์
+ตรรกพงษ์ หาญพิทักษ์ญาติ
+ตระกูล จันแตง
+ตรัยพจน์ ติสระพงศ์
+ตรีชัย สุทธิเชื้อนาค
+ตรีระนันท์ มะละคำ
+ตรีเทพ เพียรภักดี
+ตลับ มีสัมฤทธิ์
+ตวงพร ธนังคเวชวิบูลย์
+ตวงสิทธิ์ มนัสดำรง
+ตอง ก้านทอง
+ต่อบุญ สุวรรณเภสัช
+ต่อศักดิ์ ทองสาย
+ต่อศักดิ์ อยู่วัฒนา
+ต้อย นิ่มสุวรรณ
+ตะวัน ถาวรอนุมาศ
+ตังฉ่าย แก้วไพรัช
+ตั้งฮั่งเคี้ยง แซ่ตั้ง
+ตั้น ชลธาร
+ตาบ กรานจรูญ
+ต้าเกียง แซ่แต้
+ติ้งชุน แซ่เตียว
+ติ๋ม บุญสนธิ์
+ติ๋ว สายอุบล
+ตี้เฮียง แซ่อึ้ง
+ตี๋ แซ่เบ๊
+ตุ๊กตา แซ่แต้
+ตุ่ม แซ่เถียน
+ตุลยา สีหมากสุก
+ตุ๊ เสริมฤทธิรงค์
+เตาะเคี้ยง แซ่เฮ้ง
+เติม สามนปาล
+เติมศรี สุรพันธุ์
+เติมศักดิ์ อิพภูดม
+เตียง แซ่เฮ้ง
+เตียงทง แซ่โง้ว
+เตียวเซียะ แซ่ฉั่ว
+เตี้ยโอว แซ่เตีย
+เตือนจิตต์ เจริญสุข
+เตือนตา หาญวิริยะฤทธา
+เตือนใจ งามประดิษฐ์
+เตือนใจ แซ่เฮ็ง
+เตือนใจ เนตร์ทอง
+เตือนใจ พูนล้ำเลิศ
+เตือนใจ ลิ้มรุ่งโรจน์
+เตือนใจ สังขรัตน์
+เตือนใจ อหิงสโก
+เต็กย้ง แซ่ลิ้ม
+เต็งง้วน แซ่อึ้ง
+เต็มดวง เก็ษตระทัต
+เต็มเดือน หิรัณยัษฐีติ
+แตงผึ่งผาย พิศมัย
+แต้สี แซ่เซียว
+โตะอู๊ แซ่เตีย
+ไตรพร ลวสุต
+ไตรรงค์ มหาวาณิชย์วงศ์
+ไตรรัตน์ ศิริธรรม
+ไต้จุ้ย แซ่ปึง
+ถนอม เกลาเกลี้ยง
+ถนอม ชลออยู่
+ถนอม ธีรานุตร์
+ถนอม ปึงประยูร
+ถนอม มาลากรณ์
+ถนอม ศรีลาปัง
+ถนอม หรินทรัตน์
+ถนอมจิต พรหมพัฒน์
+ถนอมพงศ์ สุวัฒนธรรม
+ถนอมศรี แซ่เจี่ย
+ถนอมศรี วังไพบูลย์
+ถนอมศักดิ์ ทองใบใหญ่
+ถนัด นาคแกมทอง
+ถนิม มานะกวิน
+ถมยา วงษ์สงฆ์
+ถวัลย์ แก้วประสิทธิ์
+ถวัลย์ ทิมลอยแก้ว
+ถวัลย์ ภรินทนันท์
+ถวัลย์ สิงห์งาม
+ถวิล กิจสมใจ
+ถวิล เจริญศิริสุทธิกุล
+ถวิล เถาว์จู
+ถวิล บุญกล่อม
+ถวิล พึงยา
+ถวิล รื่นยศ
+ถวิล ศรีเจียม
+ถวิล สุเมฆประดิษฐ์
+ถวิลวงศ์ ช่วงชิง
+ถาวร กิจทองถาวร
+ถาวร เงินเพชรทองคำ
+ถาวร ชละเอม
+ถาวร ตั้งสหไมตรี
+ถาวร น่วมแก้ว
+ถาวร ปานรุ่ง
+ถาวร ภูรีโรจน์
+ถาวร ล้วนรัตน์
+ถาวร วีระพงษ์
+ถาวร สุขพิทักษ์
+ถาวร อรัญภูมิ
+ถ้ำ เดชฤดี
+ถิรวัฒน์ เลิศมหาทรัพย์
+ถุงเงิน พันธุ์คูณ
+เถลิงศักดิ์ บัณฑิตพิสุทธิ์
+แถม จันทรทศ
+แถว ไตรบรรณ์
+ทนง จรูญชาติรักษ์
+ทนง แพคงคา
+ทนงค์ กีรวิทย์
+ทนงศักดิ์ คุณาสถิตย์ชัย
+ทนงศักดิ์ ทัศนภักดี
+ทนงศักดิ์ ภัทรไชยนันท์
+ทนงศักดิ์ สราญชื่น
+ทนันท์ชัย พงศ์พิพัฒน์เวช
+ทม เนียมบุบผา
+ทรง ผดุงกิจเจริญ
+ทรงคุณ เลิศฤทธิ์เดชา
+ทรงชัย ทองเล็ก
+ทรงชัย ศิริสร้อย
+ทรงธรรม ป่าพกุล
+ทรงพร ศรีวิบูลย์
+ทรงพล ชูเชิด
+ทรงพล แพทย์รักษ์
+ทรงพล สุทธิเสริม
+ทรงยศ เครือมังกร
+ทรงยศ หริรักษ์สกุล
+ทรงวาด ขนันไทย
+ทรงวุฒิ ไชยสุริวิรัตน์
+ทรงวุฒิ ยาท้วม
+ทรงศรี เฉลิมญาติ
+ทรงศรี อินไชยะ
+ทรงศักดิ์ ฉัตรดำรงธรรม
+ทรงศักดิ์ ทนุบำรุงสาสน์
+ทรงศักดิ์ พันธุมาศ
+ทรงศักดิ์ วงษ์ซิ้ม
+ทรงศักดิ์ สุขประเสริฐกุล
+ทรงศิลป์ เจริญยัง
+ทรงเกียรติ จารุเกียรติขจร
+ทรงเกียรติ์ ธรรมาภิวันท์
+ทรรศนันท์ แย้มกลีบบัว
+ทรรศวรรณ นันชนก
+ทรัพย์ ทินวงค์
+ทฤษฎี อาษารัฐ
+ทวนทอง เปลี่ยนภักดี
+ทวิกา เอกขจรวงษ์
+ทวิช วุฒิรักษ์ชัย
+ทวิพร ฐิติธรรมสวัสดิ์
+ทวี เกตุทับทิม
+ทวี คงสมบูรณ์
+ทวี จันทรี
+ทวี เฉยทุม
+ทวี แซ่จิว
+ทวี ตาตะยานนท์
+ทวี ทองใบใหญ่
+ทวี นวลเจริญ
+ทวี บุญถนอมวงศ์
+ทวี เปี่ยมพงศ์สุข
+ทวี พันธุ์สวัสดิ์
+ทวี ภู่ตระกูล
+ทวี รอดจรูญ
+ทวี ลีลาพันธิสิทธิ
+ทวี วาศประเสริฐ
+ทวี ศิริ
+ทวี สำราญวงษ์
+ทวี สุโกศล
+ทวี โห้ไทย
+ทวี อุตสาหตัน
+ทวีชัย จิรแสงทอง
+ทวีชัย เบญจางคประเสริฐ
+ทวีชัย วิริยะวงศ์สกุล
+ทวีทรัพย์ ช้างแก้ว
+ทวีป เขียวสนั่น
+ทวีป เนตรนิยม
+ทวีป ไวยดี
+ทวีผล วงศ์เลื่อยฤทธิ์
+ทวีพร นิมิตรวรพจน์
+ทวีพัฒน์ คล่องกิจโรจน์
+ทวีลักษณ์ เทพหัสดิน ณ อยุธยา
+ทวีวรรณ พรหมมานนท์
+ทวีวัฒน์ ภูมี
+ทวีศรี อัตตะนันทน์
+ทวีศักดิ์ เข็มเพ็ชร์
+ทวีศักดิ์ จิรบุญวณิชย์
+ทวีศักดิ์ ซอเซวี
+ทวีศักดิ์ ตันแสนทอง
+ทวีศักดิ์ ธรรมนิภา
+ทวีศักดิ์ บุญโพธิ์
+ทวีศักดิ์ พระสว่าง
+ทวีศักดิ์ มหชวโรจน์
+ทวีศักดิ์ ลิขิตชัชวาลกุล
+ทวีศักดิ์ วิวัฒนขจรสุข
+ทวีศักดิ์ สกุลพฤกษ์
+ทวีศักดิ์ สุภสิทธิ์มงคล
+ทวีศักดิ์ อนุสนธิ์
+ทวีศิลป ทิพโกมุท
+ทวีสิน ชินะพัฒนวงศ์
+ทวีสุข อมรสินวรชัย
+ทวีแสง ไหลวัฒนชัย
+ทศนารถ ภวภูตานนท์
+ทศพร ตุลาธรรมกิจ
+ทศพร มหาดไทย
+ทศพร เหล่าอินทร์
+ทศพล ทนทาน
+ทศพล สินแน่นดำรง
+ทหาร ขำหิรัญ
+ทอง นาคนาวา
+ทอง เหมือนเดช
+ทองขาว จิตร์ภักดี
+ทองคำ แก้วบัวดี
+ทองคำ โชควิบูลย์เจริญ
+ทองคำ ธรรมปัญญา
+ทองคำ ผ่องใส
+ทองคำ ยอดเงิน
+ทองคำ ศิริโส
+ทองคำ อรุณศิริ
+ทองจันทร์ ทาวงษ์
+ทองชุบ นิลพลับ
+ทองดี คชาไพร
+ทองดี ดนตรีเสนาะ
+ทองดี บำรุงสิน
+ทองดี โพธิ์เผือก
+ทองดี วิเศษฤทธิ์
+ทองดี หรรษคุณารมณ์
+ทองทวี พิมเสน
+ทองธัช ทองประสานคุณ
+ทองปลิว กิจแจ่มเลิศ
+ทองปอน แสนปะทะ
+ทองพันธ์ ใจแก้ว
+ทองพูน ทรัพย์สงวน
+ทองพูน สุทัศน์
+ทองม้วน กระบิลสิงห์
+ทองมา จอมคำสิงห์
+ทองยวน แจ่มวงษ์
+ทองย้อย ปานย้อย
+ทองยุ้น ประเสริฐศักดิ์
+ทองล้อม เส็งสมาน
+ทองศูนย์ ผากา
+ทองสี สังคีรี
+ทองสุก ศรีนาค
+ทองสุข จันทะสอน
+ทองสุข แดงชาติ
+ทองสุข บุญญาเสนีย์กุล
+ทองสุข พิศเพียงจันทร์
+ทองสุข รัตนโภคา
+ทองสุข สังข์สวน
+ทองสุข อยู่ใจเย็น
+ทองหยอด ผึ่งผดุง
+ทองหล่อ ไกรทอง
+ทองหล่อ เตชะวิเศษ
+ทองหล่อ พลับอินทร์
+ทองหล่อ ลือหมู่
+ทองหล่อ อดทน
+ทองอยู่ แก้วพันธ์พงษ์
+ทองอยู่ ธนังเลิศมาลัย
+ทองอยู่ วีระวัฒนโยธิน
+ทองอวบ อุตรวิเชียร
+ทองอินทร์ ถาวรเจริญ
+ทองฮวย ธรรมสโร
+ทองเจือ เทียมอุทัยสกุล
+ทองเจือ แสวงเงิน
+ทองเติม หาญมณี
+ทองเปลว ไพฑูรย์รัตน์
+ทองเพียร ตันชะ
+ทองเล็ก ไม้ตราวัฒนา
+ทองเอิบ เพ็งแจ่มศรี
+ทองแถม พรมพงษ์
+ทองใบ กลิ่นสุคนธ์
+ทองใบ ชัยเจริญ
+ทองใบ ธรรมสาร
+ทองใบ พรหมปั้น
+ทองใบ รอดบุญชัง
+ทองใบ สาหร่ายทองคำ
+ทองใส บัวมวง
+ทอสรวง สภานุชาต
+ทักษณี ชื่นสำราญ
+ทักษิณา สถิตย์กุล
+ทัดทร บุญเทา
+ทันใจ ตาลาวนิช
+ทับทิม บัลลังค์โพธิ์
+ทับทิม องค์การ
+ทัศนชัย ศิริไพพรรณ
+ทัศนัย เขมเกษม
+ทัศนัย วัชรเกื้อ
+ทัศนา แซ่เล้า
+ทัศนา สิงคะเนติ
+ทัศนี ฉายรังษี
+ทัศนียา ทรรศนกุลพันธ์
+ทัศนีย์ กิตติศิลากร
+ทัศนีย์ คุณาพิส
+ทัศนีย์ จิตราจุลนันท์
+ทัศนีย์ ชัยกุล
+ทัศนีย์ แซ่ลี้
+ทัศนีย์ ตันตินีรนาท
+ทัศนีย์ ทักธิการ
+ทัศนีย์ นาควิลัย
+ทัศนีย์ ประมูล
+ทัศนีย์ พรหมชู
+ทัศนีย์ เพชรแก้วกุล
+ทัศนีย์ มาสณี
+ทัศนีย์ รัตนอุดม
+ทัศนีย์ เล็กคง
+ทัศนีย์ วิริยะเวสม์กุล
+ทัศนีย์ ศิริโสภานนท์
+ทัศนีย์ สิริวิเศษวรกุล
+ทัศนีย์ เสรีพกกะณะ
+ทัศนีย์ อนุตรินทร์
+ทัศนีย์ เอี่ยมสกุล
+ทัศพร พรสุธารักษ์
+ทัศไนย บัญญัติทัศไนย
+ทาบ ผลโพธิ์
+ทำนิ วิไลรัตน์
+ทิฆัมพร ชิ้นศิริกุล
+ทิชากร ชมเดช
+ทิน พัดชา
+ทินกร ทีเก่ง
+ทินกร ลิมปนสุทธิพงศ์
+ทินกรณ์ จันทร์พลับ
+ทิพพวัล เพ็งสอาด
+ทิพยญาณ วิชยานนท์
+ทิพย์ภาพร บุญเจริญยศ
+ทิพย์รัตน์ พงศ์คำ
+ทิพยวรรณ ฟุ้งลัดดา
+ทิพย์วรรณ จิรชนานนท์
+ทิพย์วรรณ พรหมวราทร
+ทิพย์วรรณ สุวรรณพิมล
+ทิพย์วัลย์ ธีรธวัชกุล
+ทิพย์วารี มิ่งขวัญปิยะกุล
+ทิพย์สุดา ใบมรกต
+ทิพยา นวคุณวิจิตร์
+ทิพย์ จันทร์หิรัญ
+ทิพย์ แสวงลาภ
+ทิพวรรณ กรกรอง
+ทิพวรรณ จีรพันธ์
+ทิพวรรณ ทองประเสริฐ
+ทิพวรรณ พัฒนะบดี
+ทิพวรรณ ลิมปนานนท์
+ทิพวรรณ ศิริวิไลรุ่งเรือง
+ทิพวรรณ อนิวรรตพงษ์
+ทิพวัลย์ คีรีวงศ์
+ทิพวัลย์ มาลัยมาลย์
+ทิพวิมล แซ่อึ้ง
+ทิพากร ศรีชียธำรง
+ทิพาพร ศรีอาจ
+ทิพารัตน์ นิลสนธิ
+ทิม มีบุตรสม
+ทิวา จวนจวบทรง
+ทิวา วงเดือน
+ทิวาพร ฉัตรรัตนาวาณิช
+ทิวาวรรณ สิงหพัศ
+ทีเนตร อยู่สุธา
+ทุเรียน จิตตกานต์พิชัย
+ทุเรียน สิทธิภา
+เทพ งามชัยพิสิฐ
+เทพ ลีนะกนิษฐ์
+เทพชัย เจริญพร
+เทพนิรันดร์ ศรีสวัสดิ์
+เทพรัตน์ สารคาม
+เทพสุริยา อรรถวิเศษ
+เทพไทย เสนพงศ์
+เทวัน อุดมเวศย์
+เทวินทร์ มุ่งธัญญา
+เทวีรัตน์ ปาลกะวงศ์ ณ อยุธยา
+เทอดพงษ์ แซ่ตั้ง
+เทอดศักดิ์ นิทัศนานันท์
+เทอดศักดิ์ สัมฤทธิการุณ
+เทิดชัย เตชะธิการ
+เทิดไทย สุขอารมย์
+เทียน พุ่มเจริญ
+เทียนชัย เจริญกิจไพบูลย์
+เทียนชัย ปานรักษา
+เทียนชัย วัฒนโรจนกิจ
+เทียนทิพย์ จงเจตน์ดี
+เทียบ สัมจารินทร์
+เทียม เทียมอารักษ์
+เทียมจันทร์ จารุวัฒนพันธ์
+เทียมฉัตร ริ้วกงแจ
+เทียมใจ บุญถาวรวัฒน
+เที่ยง ประเสริฐสิริเจริญ
+เทเวศ แซ่ซื้อ
+แทน เทศวิลัย
+ไทย เจริญวรรักษ์
+ไทรงาม จำนงค์สูญ
+ธงชัย กนกพนาทัต
+ธงชัย เกียรติเรืองกมลา
+ธงชัย งามธนโกศล
+ธงชัย จิรัฐิติพันธ์
+ธงชัย ชัยพรพงศ์
+ธงชัย แซ่ซิ้ม
+ธงชัย ตนสกุลเดช
+ธงชัย ถุงแก้วรุ่งเรือง
+ธงชัย ธรรมวิไลวัฒน์
+ธงชัย บุญณรงค์
+ธงชัย ปิ่นแก้วประเสริฐ
+ธงชัย พานทอง
+ธงชัย ภูษณะพงษ์
+ธงชัย รอดแก้ว
+ธงชัย ลิขิตวัฒนานุรักษ์
+ธงชัย วัชระอยู่
+ธงชัย ศรีไทยรักษ์
+ธงชัย สาครสุขศรีฤกษ์
+ธงชัย สุพลธวณิชย์
+ธงชัย หาญมงคล
+ธงชัย อากาศวิภาต
+ธงชาติ พวงสุวรรณ
+ธงไชย พลวิทย์
+ธน รมยานนท์
+ธนกร ศุภกรอาภรณ์
+ธนงค์ วิจิตรโท
+ธนชัย เหลืองตระกูลสิริ
+ธนน ศรีธนาโสฬส
+ธนพงศ์ วสุเสถียร
+ธนพร เชาวนปรีชา
+ธนพร ศรีจันทร์
+ธนพล คุ้มวรชัย
+ธนพล วณิชชานนท์
+ธนพันธ์ ฟูพันธุ์อนันต์
+ธนยา วงศ์สงวน
+ธนวรรณ แซ่เตีย
+ธนวรรษ์ เสริมพาณิชย์
+ธนวัฒน์ ประสานธรรมคุณ
+ธนวัฒน์ สามกษัตริย์
+ธนวิศณ์ ภูมิไชย
+ธนสรณ์ ไชยชนะ
+ธนะ พงษ์ทนานนท์กุล
+ธนะชัย วงศ์ทองศรี
+ธนะวรรณ หมื่นสา
+ธนะเสริฐ ยลประสาน
+ธนัญชัย ราชวัลภานุสิษฐ
+ธนัติ บุรินทร์กุล
+ธนันท์ รังสีพรหม
+ธนา ชีรวินิจ
+ธนา โปษยานนท์
+ธนา สว่างกิจ
+ธนากร เตชะสมบูรณ์ผล
+ธนากร สัจจพจน์โสภณ
+ธนาจักร์ น่วมอยู่
+ธนาธิป รัตนัย
+ธนาพร พิชัยวัฒน์โกมล
+ธนาภรณ์ รัตนเสน
+ธนารัช สิริภูมิรัตนานนท์
+ธนาวัฒน์ พิธุวรรณ
+ธนาศักดิ์ วัตราเศรษฐ์
+ธนิดา จินตนวิศิษฐ์
+ธนิต เขียวเงิน
+ธนิต เทพจิตร
+ธนิต มาศรีนวล
+ธนิต สุกันยา
+ธนิตร เนาวศักดิ์
+ธนินทร์ ประเสริฐกาญจน์
+ธนิศร์ อิศราธิกูล
+ธนียา หรยางกูร
+ธนู ฉุยฉาย
+ธนู ฟองกุนฑล
+ธนู หงษ์ดำเนิน
+ธนเดช สุขวัฒนาพร
+ธรณินทร์ กองรักษเวช
+ธรรมณพ เกตุทอง
+ธรรมนูญ คล้ายกรูฏ
+ธรรมนูญ ทัศน์ศรี
+ธรรมนูญ พิชัยศรแผลง
+ธรรมนูญ ศรีชะฎา
+ธรรมนูญ อังศุสิงห์
+ธรรมรักษ์ ทินกร ณ อยุธยา
+ธรรมรัตน์ สังข์ศรีแก้ว
+ธรรมศักดิ์ แม้นมินทร์
+ธรวิสิทธิ์ โชคสัมฤทธิ์ผล
+ธราพงษ์ เคลืองาม
+ธวัช กันต์มิตรี
+ธวัช จอมสง่า
+ธวัช ชั้นเสวิกุล
+ธวัช ตันติปิฏก
+ธวัช ธีรภานุมาศกุล
+ธวัช บุตรยี่
+ธวัช แพใหม่
+ธวัช รัฐประดิษฐ์
+ธวัช วัชรเดชสุวรรณ
+ธวัช สัญญะวิรี
+ธวัช แสนมนตรีกุล
+ธวัช อินแตง
+ธวัชชัย กิมยงค์
+ธวัชชัย คามจินดา
+ธวัชชัย จิตประภาจิณ
+ธวัชชัย ชั่งทอง
+ธวัชชัย ซุ้นซิ่ม
+ธวัชชัย ดีระพันธ์กุล
+ธวัชชัย โตสิตระกูล
+ธวัชชัย ไทยวัฒนา
+ธวัชชัย นาประดิษฐ์
+ธวัชชัย ปัญจรักษ์สกุล
+ธวัชชัย พวงจันทรทิพย์
+ธวัชชัย ฟุ้งเจริญกุล
+ธวัชชัย รติสราญจิต
+ธวัชชัย ลี้ภูมิวนิชย์
+ธวัชชัย วัฒนะ
+ธวัชชัย ศรีวิบูลย์
+ธวัชชัย สราญณิยธรรม
+ธวัชชัย สุนทรกิติ
+ธวัชชัย เหลืองสมอุไร
+ธวัชชัย อิสระนิมิตร
+ธวัฒชัย พิพัฒน์ศิริขจร
+ธัช รัตนทุมมา
+ธัชพล พวงกนก
+ธัญญรักษ์ กุฐินพัฒน์
+ธัญญะ เจริญสุข
+ธัญญา นาคสิเนหผล
+ธัญญา อ่วมเจริญ
+ธัญทิพย์ เล้าวัฒนา
+ธัญยธรณ์ ลักขุนทด
+ธัญลักษณ์ สุวรรณปัทม
+ธันยธร ก้องวิริยะไพศาล
+ธันวดี เครือวัลย์
+ธาดา เกษมสุวรรณ
+ธาดา เลิศสินส่งเสริม
+ธาตรี ดาราเย็น
+ธานันท์ มงคลวราภรณ์
+ธานินทร์ แซ่จึง
+ธานินทร์ พริ้งมงคล
+ธานินทร์ ศรีสุข
+ธานี กลิ่นเกษร
+ธานี โตอดิเทพย์
+ธานี เพิ่มพึ่งรัตน์
+ธานี วาจางาม
+ธานี เหล็งขยัน
+ธารทิพย์ ณ สงขลา
+ธารลักษณ์ หวังธีรพงศ์
+ธารา โรจน์ลือชัย
+ธารารัตน์ พงษ์โสภา
+ธาริณี เสือศรีเสริม
+ธารี สังเนตร์
+ธำรง เจียมประเสริฐบุญ
+ธำรง ภูวประเสริฐ
+ธำรงค์ กาญจนประภาส
+ธำรงค์ มูลเงิน
+ธำรงศักดิ์ ธำรงเลิศฤทธิ์
+ธิดา คุ้มเขว้า
+ธิดา ผลคิมหันต์
+ธิดา สุชาติ
+ธิดารัตน์ กุศลจิตภรณ์
+ธิดารัตน์ สมพันธ์
+ธิติ ทางอนันต์
+ธิติพงศ์ เศรษฐีสมบัติ
+ธิติมา ลาภศรีมงคล
+ธิภาพร ชุณหจิรัฐติกาล
+ธีร ศรแก้ว
+ธีรชัย เดโชพล
+ธีรชัย เศรษฐชาตนันท์
+ธีรดา แซ่ลิ้ม
+ธีรนารถ ปาลกะวงศ์ ณ อยุธยา
+ธีรพงศ์ ดวงเนตร
+ธีรพงษ์ โคจรานนท์
+ธีรพงษ์ รัตนเสถียร
+ธีรพร คุณาทรวัฒนกุล
+ธีรพล เตี๋ยพัฒนกิจ
+ธีรพล สันติวนานนท์
+ธีรพันธ์ พัชรประภากร
+ธีรยศ ชัยเสนะบัณฑิต
+ธีรยุทธ ปรัชญาบำรุ
+ธีรยุทธ อัจจิมารังษี
+ธีรวรรณ วัชรสินธุ์
+ธีรวัฒน์ เตชะสุริยะมณี
+ธีรวัฒน์ ศรีสุข
+ธีรวิทย์ บวรบุญสุข
+ธีรวุฒิ พงศ์เศรษฐไพศาล
+ธีรศักดิ์ จิรวิริยวงศ์
+ธีรศักดิ์ ภิสัชเพ็ญ
+ธีรศักดิ์ อาภาสกุลเดช
+ธีระ คำสา
+ธีระ ไชยรัตน์
+ธีระ ทรัพยรุ่งทวีผล
+ธีระ นิลแจ้ง
+ธีระ พิกุลน้อย
+ธีระ ริมพนัส
+ธีระ วิภูชนิน
+ธีระ สิงหพันธุ์
+ธีระ อนันต์มานะ
+ธีระชัย เกตุตรีกรณ์
+ธีระชัย พันธุลาภ
+ธีระชาติ เลิศบวรวงศ์
+ธีระพงศ์ วัฒนพิทยกุล
+ธีระพงษ์ พลมั่น
+ธีระพร วีระถาวร
+ธีระพล รอบำรุง
+ธีระพันธุ์ วัฒนพันธุ์
+ธีระยุทธ แซ่เล้า
+ธีระวงศ์ แซ่อึ้ง
+ธีระวัฒน์ ศศิธร
+ธีระศักดิ์ กาสาวพานิชย์
+ธีระศักดิ์ บุญเฉลียว
+ธีระศักดิ์ สิงหโรจนากุล
+ธีระเดช ตรีทศายุธ
+ธีรา รุ่งโรจน์
+ธีราลักษณ์ ยมะสมิต
+ธีรเดช เลิศวิไลกุลนที
+ธเนต เปลี่ยนนุช
+ธเนศ ฉายรังษี
+ธเนศ ธาณาธะระนิต
+ธเนศ มีเดช
+ธเนศ ศักดิ์ชัยสมบูรณ์
+ธเนศพล ศุกลกานต์
+เธนตร พิมพ์จันทร์
+เธียรชัย ฝากลาภ
+เธียรไชย ศันสนะกุล
+นกเล็ก ทับนาโคก
+นกแก้ว วงศ์ส่ายถนอม
+นคร ชัยสมบูรณ์พันธ์
+นคร บุตรโพธิ์
+นคร ยิ้มศิริวัฒนะ
+นคร สงคราม
+นคร อินทร์สุข
+นคเรศ ทนงศักดิ์มนตรี
+นงคราญ เขื่อนแก้ว
+นงคราญ วีระพานิชเจริญ
+นงค์เยาว์ ธรรมนิธา
+นงนาฏ นิพนธ์ศักดิ์
+นงนุช กอสกุล
+นงนุช จันทร์หอม
+นงนุช แซ่ตั้ง
+นงนุช ทับศรี
+นงนุช ประกอบเพ็ชร
+นงนุช ไพฑูรย์มงคล
+นงนุช ลาภศรีวิวัฒน์
+นงนุช ศัลย์วิเศษ
+นงนุช สุวรรณกนิษฐ
+นงนุช อุณห์ไวทยะ
+นงพุธ ชื่นชม
+นงลักษณ์ กิตติศักดิ์ไพรัช
+นงลักษณ์ จริยพฤทธิพงศ์
+นงลักษณ์ ช่วยวงษ์ญาติ
+นงลักษณ์ ฐิติวร
+นงลักษณ์ ทองอัศวิน
+นงลักษณ์ บุญญวัฒน์
+นงลักษณ์ พรสืบวงศ์
+นงลักษณ์ ภู่สุบิน
+นงลักษณ์ โรจน์กุลขจร
+นงลักษณ์ วิทยาวิศวสกุล
+นงลักษณ์ สมแก้ว
+นงลักษณ์ สุลาวรรณ
+นงลักษณ์ อรชร
+นงเยาวดี ไพทีกุล
+นงเยาว์ จันทมาศ
+นงเยาว์ แซ่โซว
+นงเยาว์ ธิติไพศาล
+นงเยาว์ พรหมไกรวร
+นงเยาว์ เมนะเศวต
+นงเยาว์ วานะรินทร์
+นงเยาว์ สุกใส
+นงเยาว์ อุทัย
+นที จึงประสิทธิ์พร
+นที เมฆกัลจาย
+นทีทิพย์ รัตติธรรม
+นนทพร อุดมมาก
+นนทิยา ดิถีเพ็ง
+นพ โชติกเสถียร
+นพกร จิตโตภาษ
+นพคุณ วงษ์สวรรค์
+นพณรงค์ แก้วจำลอง
+นพดล ไกรแสง
+นพดล จุฑาธิปัตย์
+นพดล แซ่ตั้ง
+นพดล โตเจริญธนาผล
+นพดล นิลกาเด็ด
+นพดล ปัทมะ
+นพดล พิเดช
+นพดล มิ่งลดาพร
+นพดล ฤทธิ์เทพ
+นพดล เวชวิฐาน
+นพดล สังข์ศิรินทร์
+นพดล หลาวทอง
+นพดล อุชชิน
+นพปฎล จงสกุลนิรันดร์
+นพพร เครือแก้ว
+นพพร ตุงคะรักษ์
+นพพร ประโมจนีย์
+นพพร รัตนวิศิษฎ์กุล
+นพพร ศาสตร์ขำ
+นพพร อินทรสวัสดิ์
+นพพล หมวดจันทร์
+นพมณี แซ่โง้ว
+นพมาศ ไวยรัชพานิช
+นพรัตน์ เขื่อนชัย
+นพรัตน์ ไชยรัตน์
+นพรัตน์ บุญพรพิมล
+นพรัตน์ ยี่อำพันธ์
+นพรัตน์ สมบัติประชากร
+นพรัตน์ อารยะนรากูล
+นพวรรณ คงมะกล่ำ
+นพวรรณ ถาวรวิสิทธิ์
+นพวรรณ ภักดีดำรงฤทธิ์
+นพวรรณ สินตั้งวงษ์
+นพวัลย์ สัมพันธ์สุขศรี
+นพเก้า สุขสิน
+นภดล ไทยธัญญพานิช
+นภดล สุวรรณมณี
+นภัส รัตนไพฑูรย์
+นภา จามีกรกุล
+นภา โต๊ะสมัน
+นภา ภาคาวัลย์
+นภา ศรีกัณฑิมารักษ์
+นภา เอี่ยมละออ
+นภาพร เกียรติชัยทรัพย์
+นภาพร ชลบุษปกุล
+นภาพร ดวงสร้อยทอง
+นภาพร นอบน้อมธรรม
+นภาพร พจนะศิลป
+นภาพร เมตตพันธุ์
+นภาพร วงศ์กุดั่น
+นภาพร สถิรานุวัฒน์
+นภาพร หอมขจร
+นภาพรรณ เตชะพิริยะกุล
+นภาภรณ์ ทิพรัตน์
+นภาภรณ์ หะสิตะเวช
+นภาลัย สุวรรณธาดา
+นภาศิริ ดาดาษ
+นรชัย มานิตกุล
+นรรัตน์ อนุศิริ
+นรา เทพเสนา
+นราทิพย์ วงศ์วิรัตน์
+นราภรณ์ จีระประภากาญจน์
+นราวัลย์ จุลโมกข์
+นรินทรัตน์ สวัสดิวงศ์
+นรินทร์ ฉัตรเฉลิมชัย
+นรินทร์ นรินทร์
+นรินทร์ พสุนธราธรรม
+นรินทร์ ลิ้มสร้อยเพ็ชร
+นรินทร์ สุจิตโต
+นรินทิพย์ โกมุทกุล
+นริศ ธีรพรพงศ์
+นริศ สนใจ
+นริศรา ตรีวรรัตนกุล
+นริศรา อุษาไพรพรรณ
+นริส อารีย์
+นรีทิพย์ ทุ่งกาวี
+นรเศรษฐ์ อิศรางกูร ณ อยุธยา
+นฤดี หิรัญบูรณะ
+นฤนาท ลีเลิศพันธ์
+นฤพร อัครพงศ์ไพศาล
+นฤมล กาญจนถมยา
+นฤมล ขันแก้ว
+นฤมล จันทรวรเมท
+นฤมล ชัยคูณผล
+นฤมล แซ่อึ่ง
+นฤมล ตินา
+นฤมล ธนะถ้อย
+นฤมล บุญกนก
+นฤมล เปรมวุฒิ
+นฤมล พุทธนวรัตน์
+นฤมล มานะสกุลกิจ
+นฤมล รุจิหาญ
+นฤมล วรรณาไทร
+นฤมล ศิริพงศ์ตระกูล
+นฤมล สิริปรีดานนท์
+นฤมล แสนสวย
+นฤมล อรุณเจริญกุล
+นฤมิต ผลากรกุล
+นลพร ภิญโญบริสุทธิ์
+นลินทิพย์ แสนทวีสุข
+นลินี ธงนำทรัพย์
+นลินี อร่ามเรืองสกุล
+นวพร กุลวชิราวรรณ์
+นวพร วงศ์อุไร
+นวม พลับจุ้ย
+นวรัตน์ เจริญธนาวัฒน์
+นวรัตน์ ปุกหุต
+นวรัตน์ สงวนเสรีพานิช
+นวล วัยมุข
+นวลจันทร์ จอมแสง
+นวลจันทร์ ตังคบดี
+นวลจันทร์ บุญพจนสุนทร
+นวลจันทร์ โภคา
+นวลจันทร์ ศรีรุ่งโรจน์
+นวลจันทร์ อารีศรีวัฒนาวงษ์
+นวลฉวี บัวครื้น
+นวลตา พัฒนสิงห์
+นวลน้อย กนิษฐสุต
+นวลน้อย สุขวานิชย์เจริญ
+นวลปราง ชัยทน
+นวลพร ภาณุมาภรณ์
+นวลพรรณ สำรองทรัพย์
+นวลฤดี เต็มฤทธิวงศ์
+นวลละออ เลค
+นวลศรี ฉวีพิศาล
+นวลศรี ริจิรวนิช
+นวลศิริ จงเจริญรุ่งโรจน์
+นวลอนงค์ เจริญผล
+นวลอนงศ์ ธรรมสุจริต
+นววรรณ กิจเจริญวงศ์
+นอลเดวซิงห์ จาวลา
+น้อม ทรัพยัย
+น้อมจิตต์ พึ่งพร
+น้อย คงศิลา
+น้อย ชูดวง
+น้อย ตรีพรไพรัช
+น้อย นุชชัย
+น้อย พัฒพิบูลย์
+น้อย ยรรยงพาณิชย์
+น้อย โวหาร
+น้อย สุดหล้า
+น้อย ฮามิค
+นักรบ หลิ่มวิรัตน์
+นัฎดา ศรีล้อมลาภ
+นัฐกิตติ แซ่เจียม
+นัฐยา อนุดิษฐ์
+นัดดา โพธา
+นัทธมน แตงพุก
+นัน พันเดช
+นันทกา พาสุนันท์
+นันท์ชนก ชาวเรือ
+นันทนา ครองบุญศรี
+นันทนา ซาอะดี
+นันทนา ธรรมสุวรรณ์
+นันทนา พรทรานนท์
+นันทนา ราตรีโชติ
+นันทนา ศิลาสัย
+นันทนา อนันต์ธโนดม
+นันทนี เตชะมโนรมย์
+นันทพร ชัยวรทร
+นันทพร รื่นไวย
+นันทพล ทองคำ
+นันทยา โปร่งแสงธรรม
+นันทรา ฤดีขจร
+นันทวรรณ บูรณประพฤกษ์
+นันทวัฒน์ คนิยมเวคิน
+นันทวัน เจียรอุดมทรัพย์
+นันทวัน ภูริศรี
+นันทวัน อิสระมาลัย
+นันทสาร จันทร์เพ็ญ
+นันทา ชินธรรมมิตร์
+นันทา บุญทวีสกุล
+นันทา รัตนไชย
+นันทา สุขเจริญ
+นันทิกา วิริยะสาโรจน์
+นันทิภา รัตนเพียรชัย
+นันทิยา นำเกียรติวงษา
+นันทิยา ศักดิ์ฉันทอำพน
+นันท์ เรืองตระกูล
+นัยน์รัตน์ เทียมทัศน์
+นัยนา แซ่คู
+นัยนา ปอประสิทธิ์
+นัยนา ลีนะธรรม
+นัยนา สุวรรณทอง
+นัสติยา บุญพิทักษ์
+นาคิน เพชรรักษ์
+นาฎยา อดิเรกฤทธิรณ
+นาฏยา ฤทธิ์เขียว
+นาตยา คงเขาม่วง
+นาตยา นิยม
+นาตยา ศรีสุบิน
+นาตอนงค์ ชื่นบาน
+นาถฤดี สวัสดิ์พร้อม
+นานา แซ่ถัว
+นารถ ธาระพุทธ
+นารา โสมะนันทน์
+นารี ครองสัตย์
+นารี เตชะสุภากูร
+นารี พันธ์ดี
+นารี ศักดิ์เสรีชัยกุล
+นารีนารถ ฉิมภู่นุ่ม
+นารีรัตน์ ธนาสุวรรณดิถี
+นารีรัตน์ สีเหล็ก
+นาวิน กระต่ายจีน
+นาวิน หล่อลักษณ์
+นาเวส ยังน้อย
+นำชัย ทิพชาติโยธิน
+นำชัย อื้อเศรษฐศักดิ์
+นำลาภ เบ้าสุวรรณ
+น้ำ ชลสายพันธ์
+น้ำทิพย์ จันทกนก
+น้ำทิพย์ ภาระเวช
+น้ำผน ระเบียบ
+น้ำฝน วิบูลชาติ
+น้ำเชี่ยว จินดาพันธ์
+นิกร กังวาราวุฒิ
+นิกร นวปรีชากุล
+นิกร เลิศชามพูนท
+นิกรม พึ่งขำ
+นิคม คำเผื่อน
+นิคม เตวัฒตานนท์
+นิคม พงศ์ไทย
+นิคม รุ่งเรือง
+นิคม สุขสุมิตร
+นิจ ยุชมภู
+นิชญา โกวิทคณิต
+นิด แซ่ตั้ง
+นิดดา วสะภิญโญกุล
+นิดา ผ่องอารมณ์
+นิดาวรรณ ฐิตรัตนพล
+นิตย์ประภา อดุลเดชจรัล
+นิตยา การสามารถ
+นิตยา ขวัญฤกษ์
+นิตยา งั่นบุญศรี
+นิตยา จิรประภาพร
+นิตยา ชรินทราวุฒิ
+นิตยา ไชยมงคล
+นิตยา แซ่เป๊
+นิตยา ตั้งจิตนบ
+นิตยา ทวีโต
+นิตยา ธำรงวิทวัสพงศ์
+นิตยา เนียมคง
+นิตยา ประคอง
+นิตยา แผ่นทอง
+นิตยา พิลาแดง
+นิตยา ภู่ยอดยิ่ง
+นิตยา โมฮำมัสอีสมาอีล
+นิตยา เรืองดารกานนท์
+นิตยา วงศ์ปรีดี
+นิตยา วิภาตะโยธิน
+นิตยา ศาลยาชีวิน
+นิตยา สังข์ทอง
+นิตยา สุทธิศิริ
+นิตยา แสงแดง
+นิตยา อยู่นิ่ม
+นิตยา อุดมรัตนานนท์
+นิตย์ แก้วฉาย
+นิตย์ ถี่ถ้วน
+นิตย์ ภู่ใจเที่ยง
+นิตย์ สุนทรอนันตกุล
+นิติ ฉ่ำผึ้ง
+นิติกร สถิตฤทธานันท์
+นิติพร ทองนุ่ม
+นิทธิรา ฟักแย้ม
+นิทัศน์ กังแขก
+นิทัศน์ ประเสริฐเนติกุล
+นิทัศน์ อภิชาติบุตร์
+นิธิชัย ไชยธวัช
+นิธิมา ชาคริตฐากูร
+นิธี เมฆสุทัศน์
+นิพนธ์ กรเกษม
+นิพนธ์ ไกรลักษณ์
+นิพนธ์ จันทร
+นิพนธ์ ชาญอักษร
+นิพนธ์ ดาราวรรณ์
+นิพนธ์ ทศรงค์
+นิพนธ์ นิ่มใหม่
+นิพนธ์ ประสงค์สัมฤทธิ์
+นิพนธ์ พฤฒิคามภีร์
+นิพนธ์ ภวสันต์
+นิพนธ์ โยมา
+นิพนธ์ ลีลาวิลาส
+นิพนธ์ วิลาลัย
+นิพนธ์ สงวนนาม
+นิพนธ์ สุขสมาน
+นิพนธ์ หงส์วิจักษณ์
+นิพนธ์ อัศวสงคราม
+นิพร วรฉัตร
+นิพัฒน์ ขนอนเวช
+นิพัทธ์ ทองเล็ก
+นิพันธ์ เนียมวงศ์
+นิพิฐ อรุณวงษ์ ณ อยุธยา
+นิภา แก้วหอม
+นิภา จันทิมา
+นิภา ช่างนาค
+นิภา แซ่อึ้ง
+นิภา ถกลวิโรจน์
+นิภา นนทชีวา
+นิภา ปรีชาตั้งกิจ
+นิภา พันธมิตร
+นิภา โภคารักษ์
+นิภา รุจิระกิติวกูล
+นิภา วรไกวัล
+นิภา ศรีสวัสดิ์
+นิภา สิริมหาสุวัฒน์
+นิภา หาญเกิดสิริ
+นิภา อินพัตรา
+นิภาพร จงจรวยสกุล
+นิภาพร บัวทอง
+นิภาพร ศักดิ์แสน
+นิภาพรรณ พงศ์ไพโรจน์
+นิภาภรณ์ เชิญรุ่งโรจน์
+นิภาภรณ์ สุขสวัสดิ์
+นิภาวรรณ ทรงศิลป์
+นิมน ตุ่มศิริ
+นิมิต สุริหาร
+นิมิตร น้อยเจริญ
+นิมิตร แสงอำไพ
+นิ่มนวล เกศวรางกูร
+นิ่มนวล ศุภษร
+นิยดา ภู่อนุสาสน์
+นิยม จนิษฐ์
+นิยม แดงเอี่ยมเอก
+นิยม นิลสุวรรณ์
+นิยม พิพัฒน์ศานต์
+นิยม เลิศสำราญเริงรมย์
+นิยม สุภาพ
+นิยมศรี สารสุข
+นิรชา โยธินอุปไมย
+นิรมล จงชาญสิทโธ
+นิรมล ตันติพันธ์วดี
+นิรมล พัฒนสุวรรณ
+นิรมล วยากรณ์วิจิตร
+นิรมล หล่อรุ่งโรจน์
+นิรักษ์ ลิ้มแหลมทอง
+นิรัตน์ พรหรรษาวิจิต
+นิรันดร พวงพุด
+นิรันดร์ จอนแจ้ง
+นิรันดร์ ทองน้อย
+นิรันดร์ พันทรกิจ
+นิรันดร์ โล้สกุล
+นิรันดร์ สุขศรีจักรวาฬ
+นิรันต์ เฉยรอด
+นิรุฒน์ ตันอนุชิตติกุล
+นิรุธ แย้มโชติ
+นิลบล ทูรานุภาพ
+นิลวรรณ พงษ์เผือก
+นิลุบล โกไศยกานนท์
+นิว แซ่เจียง
+นิวัฒน์ คงชื่น
+นิวัฒน์ ตันจิรวัฒนา
+นิวัฒน์ พันธ์พุ่ม
+นิวัฒน์ วัฒนาเจริญศิลป์
+นิวัฒน์ อริยพฤกษ์
+นิวัตน์ ภูติกนิษฐ์
+นิวัตร์ นิยมไทย
+นิวัติ ผลธัญญา
+นิวัติ ห่านตระกูล
+นิศา เจียมรุจีกุล
+นิศากร ปิจเจริญ
+นิศานาท ธรรมดำเกิง
+นิษฐกานต์ เย็นพระพาย
+นิสัย อรรถไกวัลวที
+นิสา ปิยะพันธ์
+นิสากร เกียรติก้องขจร
+นิสารัตน์ เตชาวัฒนวิศาล
+นิสิตา พรมพิลา
+นิเวศ เจิ่งมโนธรรม
+นิเวศน์ นาคสมบูรณ์
+นิโน อินเตอรันเต
+นิไกล โยปัง
+นีรมล สุนทรนนท์
+นุกร วรากูลศิริวรรณ
+นุกูล แซ่ลิ้ม
+นุกูล พฤกษวัน
+นุกูล สุขสม
+นุจรินทร์ สินวนาทรัพย์
+นุช คลองน้อย
+นุชจรินทร์ เจวินนุกุล
+นุชจรี ทองธรรมชาติ
+นุชจารี คล้ายสุวรรณ
+นุชนาจ พลทมิฬ
+นุชนาฎ โสภา
+นุชนาถ เกิดเพิ่ม
+นุชนาถ ศีสังข์
+นุชนารถ ทรัพย์สุทธิ
+นุชนารถ ใสสุทธิ์
+นุชรินทร์ แว่นประทุม
+นุชรีย์ สุขเกียรติภัย
+นุชิต เจริญพานิช
+นุมาน ยิ่งนิยม
+นุศรา พรกฤษฎากุล
+นุสรา จันทร์เจิดสุริยะ
+นุสรา เพ็ชรประพันธุ์กุล
+นุสรา อัศวนัยกิจ
+นเรนทร์ ดิสระพงษ์
+นเรศ ทองแก้ว
+นเรศ ศรพรหม
+นเรศร์ ธรรมสาลี
+เนตร ศรีสุวรรณ
+เนตรทิพย์ ชินลาภากุล
+เนตรนภา หวังสินสุจริต
+เนตริกา เกตุประดิษฐ์
+เนรมิต ศรีจำนง
+เนาวรัตน์ กำลัง
+เนาวรัตน์ เซ็นสาส์น
+เนาวรัตน์ นพเสถียร
+เนาวรัตน์ พิพิธวรรณ
+เนาวรัตน์ วัฒนาภา
+เนาวรัตน์ แสวงศักดิ์
+เนาว์ สุดใจธรรม
+เนียม บำรุงประเสริฐ
+เนี้ยว แซ่เล้า
+เนื้อทิพย์ จันทร์โปร์
+แนบ โสตถิพันธุ์
+แน่งน้อย เซี่ยงผุง
+แน่งน้อย ปุ่นอุดม
+แน่งน้อย เวทยพงษ์
+แน่งน้อย อินทรรักขา
+โนรี แสงศรี
+ไน้ รอดทอง
+บงกช บุญช่วย
+บงกช เหล่าวรวิทย์
+บดินทร์ ดิลกวรโชติ
+บพิตร ดวงแก้ว
+บรรจง กุหลาบวิรัตน์
+บรรจง จันทร์ทอง
+บรรจง ชัยวิริยะวงศ์
+บรรจง ตุ่นทา
+บรรจง นามมีไชย
+บรรจง ป้องภัย
+บรรจง เพิ่มผล
+บรรจง ร่มโพธิหยก
+บรรจง วิลาสรัตน์
+บรรจง สาสะกุล
+บรรจง หรั่งเอม
+บรรจงกิจ ปิยะสันติสุข
+บรรจบ ชื่นพันธุ์
+บรรจบ ภูววีรานนท์
+บรรจะ เรือนแก้ววงศ์
+บรรณา นนทวงษ์
+บรรทึก ล้อวชิระวัฎฎ์
+บรรพต ดีรักษา
+บรรพต มหัทธนากุล
+บรรพต แสงแก่นเพ็ชร์
+บรรยง พิพัฒน์เรืองไร
+บรรยงค์ ยมแพทย์
+บรรลือ เรืองตระกูล
+บรรลุ ภูมิพันธุ์
+บรรหาร ศิลปอาชา
+บรรเจิด ชื่นกุล
+บรรเจิด ภู่ทรัพย์
+บรรเจิด แสงทอง
+บรรเทิง ขาวผ่อง
+บรรเทิง วงษ์พูล
+บรรเลิศ แซ่โค้ว
+บริบูรณ์ วาราชนนท์
+บริหารวรกิจ พระครู
+บวร ประเสริฐสฤษดิ์
+บวร เสถียรโสภณ
+บวรศักดิ์ นิ่มศิริเรืองผล
+บ๊วย ธรรมมงคล
+บักจุ้ย แซ่เฮ้ง
+บักเกียว แซ่ลิ้ม
+บักโคย แซ่ลิ้ม
+บังอร กระถินทอง
+บังอร คงถาวร
+บังอร จิตจรัสแสง
+บังอร ชื่นโชติ
+บังอร เดชผล
+บังอร ทิมโป่งแก้ว
+บังอร บัวสร้อย
+บังอร ปิยสุทธิกุล
+บังอร พุทธินันทน์
+บังอร มาสศรี
+บังอร ลวเศรษฐี
+บังอร วุ้นเหลี่ยม
+บังอร สะสิสมิต
+บังอร สุวรรณานนท์
+บังอร อติชาติ
+บังอร เฮงภู่เจริญ
+บังเอิญ เพ็งสุข
+บัญชร สุขอนันต์ชัย
+บัญชา ครุธเวโช
+บัญชา ชัยประสพ
+บัญชา แต้สุวรรณ
+บัญชา บุนนาคประเสริฐ
+บัญชา เพียรประสาธน์ศิริ
+บัญชา วงศ์ศรีกุล
+บัญชา สะดวกดี
+บัญชา อัจฉรามงคล
+บัญญัติ จินตนาปราโมทย์
+บัญญัติ บุญธรรม
+บัญญัติ วงษ์ประยูร
+บัญฑิต ศรกล้า
+บัณฑิต คู่ทวีธรรม
+บัณฑิต ตระการวีระเดช
+บัณฑิต บุญญาวัฒน์
+บัณฑิต โพธิ์น้อย
+บัณฑิต วรานุศภากุล
+บัณฑิต สุทธิวุฒินฤเบศร์
+บัณฑิต อุลิศ
+บัณฑิตย์ สนิทรักษา
+บัณฑูรย์ พันธุสุข
+บันลือ โยธี
+บัลลังก์ นาคพันธุ์
+บัว พุกเจริญ
+บัวขาว สุขคำ
+บัวซ่อน ทิพย์จักร
+บัวน้อย งัดสันเทียะ
+บัวผิน เปรมกมล
+บัวลอย กมขุนทด
+บัววรรณ อนีจะไพบูลย์
+บัวหลวง พรหมรักษา
+บัวเรียว เกาฏีระ
+บัวไข แจ่มอุลิตรัตน์
+บาซัมยาน มูลาคาน
+บานเย็น สถาวรสมิต
+บ้านกรรณิการ์ บ้านกรรณิการ์
+บ้านชิดตวัน บ้านชิดตวัน
+บ้านนางเลิ้ง 2
+บ้านปิยะณิดา บ้านปิยะณิดา
+บ้านมหิโคต บ้านมหิโคต
+บ้านวิจิตรศรีกมล บ้านวิจิตรศรีกมล
+บ้านสินาลักษณ์ บ้านสินาลักษณ์
+บ้านเกาะกลาง บ้านเกาะกลาง
+บ้านแก้ว บ้านแก้ว
+บำรุง คงขวัญยงค์
+บำรุง แซ่ก๊วย
+บำรุง ประภารักษ์
+บำรุง แย้มบัญชร
+บำรุง สุขสถาน
+บำเพ็ญ กุลดิลกชัย
+บำเพ็ญ สะลอยรัมย์
+บี้ แซ่ล้อ
+บุญ เฉลิมทรานุวัฒน์
+บุญ ศรีช่วย
+บุญก่อ เมธีกุล
+บุญควร เหมบุตร
+บุญจริง ตงจิตรัตน์
+บุญจันทร์ รำจวน
+บุญจิรา ดำริห์กล้า
+บุญชม คำอิ่น
+บุญช่วย กันพูล
+บุญช่วย คาวสุวรรณ
+บุญช่วย ฉิมฉวี
+บุญช่วย แซ่เฮ้ง
+บุญช่วย ทองสุข
+บุญช่วย เนาว์ใหม่
+บุญช่วย แป้นเหมือน
+บุญช่วย เพียรดี
+บุญช่วย ยูนชุ่ม
+บุญช่วย วัฒนาวงศ์
+บุญช่วย สังข์แป้น
+บุญช่วย แสงทองประดิษฐ์
+บุญช่วย อุดมตระกูลวงศ์
+บุญชอบ ทองแก้ว
+บุญชอบ อุดมประมวล
+บุญชัย ขันติญานุวัฒน์
+บุญชัย จีระไพโรจน์กุล
+บุญชัย ชุติอนุสรณ์ชัย
+บุญชัย แซ่โค้ว
+บุญชัย เติมทรัพย์ถาวร
+บุญชัย นิลรพีเกียรติ
+บุญชัย ปรีชาพันธ์
+บุญชัย เพชรพลอยงาม
+บุญชัย เรียงวิไลกุล
+บุญชัย วรกิจพรสิน
+บุญชัย ศรีสุภร
+บุญชัย สุขภิรมย์เกษม
+บุญชัย เหล่าพากเพียร
+บุญชัย อุปถัมชาติ
+บุญชิด บุญเลิศ
+บุญชื่น ปิยะปกรณ์ชัย
+บุญชู กระถินทอง
+บุญชู งิ้วชน
+บุญชู ชัยบุญญลักษณ์
+บุญชู ตระกูลเจริญสุข
+บุญชู ธิราศักดิ์
+บุญชู ปั้นเขียว
+บุญชู โพธิสาร
+บุญชู รอดเพ็งสังค์
+บุญชู วังกานนท์
+บุญชู สมบูรณ์
+บุญชู สุวรรณชาติ
+บุญชู อึ้งกุล
+บุญญฤทธิ์ ลิขิตเจริญวัฒนะ
+บุญฑริก จันทรธารารัตน์
+บุญดี สงวนความดี
+บุญตา แซ่เวียน
+บุญตา ศักดิ์มังกร
+บุญถิ่น พงษ์ขาว
+บุญทรง เนียมโภคะ
+บุญทรัพย์ สหเทวสุคนธ์
+บุญทวี ไวยสุตรา
+บุญทอม โถปั้น
+บุญทัศน์ จรณะหุต
+บุญทิพย์ วัฒนะวิบูลย์
+บุญธรรม กลัดอยู่
+บุญธรรม จรูญศรี
+บุญธรรม แซ่ไหล
+บุญธรรม นพคุณ
+บุญธรรม ผิวเกลี้ยง
+บุญธรรม ม่วงศรี
+บุญธรรม วังเสนา
+บุญธรรม สุวรรณวิจิตร
+บุญธารี จันทรทีประ
+บุญนะ ศรีจินดา
+บุญนาค ญาณโกมุท
+บุญนาค พ่วงพร้อม
+บุญนาค สำแดงเดช
+บุญนำ ช้างมณี
+บุญนำ อยู่ดี
+บุญประสิทธิ์ กนกสิงห์
+บุญปลูก ขุมทรัพย์
+บุญปลูก รุจินาม
+บุญผ่อง รุธันว์
+บุญพันธ์ ทัศนอัมพร
+บุญพา สาริกา
+บุญมั่น ขวัญยืน
+บุญมา เขียวชอุ่ม
+บุญมา แซ่ฉั่ว
+บุญมา นวลสวาท
+บุญมา พุ่มเรือง
+บุญมา วรรณสุทธิพงศ์
+บุญมา เสือแซมเสริม
+บุญมาก ชูศรี
+บุญมี กรรณสูต
+บุญมี งามจิตรุ่งเรือง
+บุญมี ชีวสาธน์
+บุญมี ทวีตระกูล
+บุญมี บุญล้วน
+บุญมี พิษณุวงศ์
+บุญมี โยธาดึก
+บุญมี ศรมยุรา
+บุญมี สุจิตรวัฒนะสุข
+บุญมี เอี่ยมหุ่น
+บุญยง รัตนานันท์
+บุญยงค์ นามดี
+บุญยงค์ แสงมณี
+บุญยะรัตน์ คล้านสินธุ์
+บุญยัง เปียทอง
+บุญยิ่ง กฤษณะประสิทธิ์
+บุญยิ่ง ภาณุศานต์
+บุญยิน สุขมณี
+บุญยืน ทองแจ้ง
+บุญยืน รักษ์สุรวงศา
+บุญยูร อ่อนอำไพ
+บุญร่วม สุวรรณชาติกุล
+บุญรอด ไชยชนะ
+บุญรอด เนตรทิพย์
+บุญรอด มีเดชา
+บุญรอด สุขสารัญ
+บุญรักษ์ เกียรติประภาพกุล
+บุญรัตน์ เจริญพานิช
+บุญรัตน์ วรรณกิจ
+บุญรุ่ง พานิชวัฒน์
+บุญฤทธิ์ นุ้ยขาว
+บุญฤทธิ์ เอกสมสุข
+บุญล้อม ชาวกงจักร
+บุญล้อม วาณิชย์กูล
+บุญลาภ ขาวสอาด
+บุญลือ แข่งขันดี
+บุญลือ ไทรเมือง
+บุญลือ มีมาก
+บุญลือ แสงอินทร์
+บุญศรี กอบบุญ
+บุญศรี ไชยฮวดหล้ำ
+บุญศรี บัณฑุศิลาอาสน์
+บุญศรี มากรอด
+บุญศรี ศุขการค้า
+บุญศรี หลีกภัย
+บุญศักดิ์ เลิศวัฒนชัย
+บุญศิริ ยังเฟื่องมนต์
+บุญส่ง กวยรักษา
+บุญส่ง ขุนหนังสือ
+บุญส่ง จันทร์ฉายทอง
+บุญส่ง ฉันทแพทย์
+บุญส่ง ไชยสาม
+บุญส่ง ตั้งชัยฤกษ์
+บุญส่ง ทองจันทร์มูล
+บุญส่ง นัยริยสัจ
+บุญส่ง บุญอยู่คง
+บุญส่ง เปี่ยมพลาย
+บุญส่ง พานิชการ
+บุญส่ง ภู่พงศ์เพ็ชร
+บุญส่ง ใยพูล
+บุญส่ง ลุจนานนท์
+บุญส่ง วิวัฒนะชัยแสง
+บุญส่ง ศุภวัชรเสรีกุล
+บุญส่ง สาระภา
+บุญส่ง เสมทัพพระ
+บุญส่ง เหล่านพเก้าสกุล
+บุญส่ง อินทร์เหยี่ยว
+บุญสนิท ยามไสย
+บุญสม คำนวนวุฒิ
+บุญสม ชัยสุภา
+บุญสม ทองพันธุ์
+บุญสม บุญอินทร์
+บุญสม โพธิสิทธิ์
+บุญสม ลายหยก
+บุญสม สวนกุหลาบ
+บุญสม แสงเรือง
+บุญสม ฮิมสุ่น
+บุญสันติ์ ฉันทกิจโกศล
+บุญสิน สบายตัว
+บุญสืบ ทองนาก
+บุญสืบ ศาตวรรณ
+บุญสุภา กลิ่นมาลัย
+บุญหล่อ ยิ้มละมัย
+บุญอำไพ กุลสิริสวัสดิ์
+บุญเกิด แซ่ลิ้ม
+บุญเกิด รัตนประภาภาศ
+บุญเกิด อือนอก
+บุญเกียรติ วรงค์โอฬาร
+บุญเกื้อ ท่านัทธี
+บุญเจริญ ไกรกมล
+บุญเจือ รัตนสมบัติ
+บุญเชิด คันธรักษ์
+บุญเชิด เลิศนิมิตร
+บุญเต็ม จันทรเกตุ
+บุญเตือน ผ่องอำไพ
+บุญเทียน แพรนนท์
+บุญเทียม อาเพล
+บุญเนื่อง โลจะยะ
+บุญเพ็ญ พุทธประเสริฐ
+บุญเย็น บุญเรืองอนันต์
+บุญเยี่ยม อินทรไพบูลย์
+บุญเรียม ก้านขาว
+บุญเรือง ดวนด่วน
+บุญเรือง มิซากะ
+บุญเรือง เหลืองอรุณ
+บุญเรือน จันทร์บำรุง
+บุญเรือน ทวีกาญจน์
+บุญเรือน พลอยชู
+บุญเรือน วงษา
+บุญเรือน เหมะปัทมะ
+บุญเลิศ กิ่งคำ
+บุญเลิศ คารวะกุล
+บุญเลิศ เจริญสุข
+บุญเลิศ เณรแก้ว
+บุญเลิศ ทะปะสพ
+บุญเลิศ บัณฑิตวงศ์รัตน์
+บุญเลิศ เปี่ยมปิ่นเศษ
+บุญเลิศ โพธิ์อ่อง
+บุญเลิศ โยทา
+บุญเลิศ เลิศสกุลสมบูรณ์
+บุญเลิศ ศรีสุวรรณ
+บุญเลิศ สุขทอง
+บุญเลิศ เหม็งตระกูล
+บุญเลิศ เอกะวงษ์
+บุญเลี้ยง แป้นอิน
+บุญเลื่อน ศรีทรัพย์
+บุญเสริม โฆษะธรรมกูล
+บุญเสริม เนตรเก่ง
+บุญเสริม ลดาสุนทร
+บุญเสริม แสงแก้ว
+บุญเหลือ ด้วงทอง
+บุญเหลือ สินเต็ม
+บุญเอื้อ ตันยะกุล
+บุญแย้ม เกิดน้อย
+บุญโชติ ทิพย์ประเสริฐสิน
+บุญโฮม ฉายประดับ
+บุญไทย แกมวณิชกุล
+บุณธรรม พานรักษ์
+บุณรอด ศรีแพ่ง
+บุนนาค พุทพงษ์
+บุ้นหงี แซ่ด่าน
+บุบผา กุลเสวต
+บุบผา เซี้ยเจริญ
+บุบผา บุญนิธิวัฒนา
+บุบผา เพ็ชรประไพ
+บุบผา วงศ์แสนสุข
+บุบผา แสงพุ่ม
+บุปผา ก้านขาว
+บุปผา ตาฬวัฒน์
+บุปผา พานิชกูล
+บุปผา ศรีหะรัญ
+บุผา พันธ์ศรี
+บุรินทร์ นอขุนทด
+บุรี ชัยกิจไพบูลย์
+บุลเดช วิบูลผล
+บุศรา ธาราชีวิน
+บุศรา อรุณคุณารักษ์
+บุศรินทร์ ไตรวรเดชา
+บุษกร กรรมารางกูร
+บุษกร ประกาศเกตุการ
+บุษกร สันติวงค์
+บุษบง จันทรกูล
+บุษบงก์ ดิษฐจำเนียร
+บุษบา ชัยจินดา
+บุษบา เนืองนุช
+บุษบา เมชิรานุรักษ์
+บุษบา สงวนยศ
+บุษบาพรรณ อุดมวัฒน์ทวี
+บุษยา ประภายนต์
+บุษรา ชูแก้ว
+บุษราภรณ์ กิจสมุทร
+บุหงัน เจียเพิ่มพูล
+บุหงา ลายประดิษฐ
+บุหลัน วรรัตนวงศ์
+บูรณะศิลป์ บุญสุวรรณ
+บู่ อุดมศรีสำราญ
+เบญจพร ดาวอุดม
+เบญจพร สุขสังวาลย์
+เบญจมา ก้อนทอง
+เบญจมาศ คุณาชีวะ
+เบญจมาศ ทองทิพย์
+เบญจมาศ เพลินประภาพร
+เบญจมาศ ศรีบุญเรือง
+เบญจมาศ เอื้อกาญจนวิไล
+เบญจรัตน์ สิงห์สมบุญ
+เบญจวรรณ คุณณะรักษ์ไทย
+เบญจวรรณ แซ่เฮง
+เบญจวรรณ บุญวัฒน์
+เบญจวรรณ รักท้วม
+เบญจวรรณ เศรษฐบุตร
+เบญจวรรณ อารี
+เบญจา แก้วล้วน
+เบญจา วงศ์ชินชัย
+เบญจารัตน์ อิงคเวทย์
+เบิกฟ้า เกตุนุติ
+เบ็ญจพร สนธิสมบัติ
+เบ็ญจมาศ เหมหงษ์ทอง
+เบ็ญจวรรณ บัวทอง
+เบ็ญจะ บุญศิริยานนท์ชัย
+เบ็ญจา สิงหเนตร
+แบรนด์ลี เอช
+ใบ คงขุนทด
+ปกจิตต์ ประมาญ
+ปกรณ์ เจียรสุต
+ปกรณ์ บุญสินสุข
+ปกรณ์ วงศ์วิทยาภิรมย์
+ปกรณ์ อินทราวุธ
+ปชา ตีระรัตน์
+ปฏินุช วงศ์ทองศรี
+ปฏิมา กาญจนมัย
+ปฐม คล้ายสุทธิ
+ปฐม อักษรศรี
+ปฐมรัตน์ อนุรักษ์เลขา
+ปณัษฐ์ ดวงอุดม
+ปณิธาน รวมวิญญูชัย
+ปทีป ไม้งาม
+ปทุม เปี้ยวนิ่ม
+ปทุม หาญกิตติสกุล
+ปทุมพร อมรจิรพร
+ปทุมรัตน์ วิวัฒน์สวัสดิ์
+ปนัดดา แก้วศรี
+ปนัดดา นามณี
+ปนัดดา วาริธร
+ปนัสยา พอนเจริญ
+ปภัสสร โคบายาชิ
+ปรง เรืองจุ้ย
+ปรวิชย์ โอภาส
+ประกอบ กฤษสุวรรณ
+ประกอบ จันทร์ตรี
+ประกอบ ดอกแก้ว
+ประกอบ นามวงศ์
+ประกอบ พวงทองทิพย์
+ประกอบ รัตนสวัสดิ์
+ประกอบ ศิริโชตะ
+ประกอบ อนันตกุล
+ประกาย จุฬวนิช
+ประกายรัตน์ ตันธีรวงศ์
+ประการ นุชบุษบา
+ประกาส กัณฐัศแก้ว
+ประกิจ ตรีกิตตินุรักษ์
+ประกิจ ยอดยรรยง
+ประกิจ อิงภานุวงศ์
+ประกิต ธนาเจริญภิรมย์
+ประกิต วิศวกรวิศิษฏ์
+ประครอง โชคโสด
+ประคอง เจ็งน้อย
+ประคอง นิลฉาย
+ประคอง พัวพงษ์ทอง
+ประคอง โรจน์รักษ์
+ประคอง สุขพุ่ม
+ประคองศรี เจริญลาภ
+ประจง สิทธิวณิช
+ประจบ วงษ์นิ่ม
+ประจวบ แก่นจันทน์
+ประจวบ จันทรา
+ประจวบ แซ่ลี้
+ประจวบ เที่ยงบุญ
+ประจวบ บุญเอี่ยม
+ประจวบ พัชนีรัตนกรณ์
+ประจวบ มีวันดี
+ประจวบ เลี้ยงเกิด
+ประจวบ สมจิตร์
+ประจวบ แสงเสวต
+ประจวบ อุรุนานนท์
+ประจักร์ อ่ำสุข
+ประจักษ์ เจริญพัฒนานนท์
+ประจักษ์ ธาราฉัตร
+ประจักษ์ พังพานนาค
+ประจักษ์ วัฒนเดชาชาญ
+ประจักษ์ โสธรศักดิ์
+ประจำ วิเศษสมิต
+ประจิตร หามนตรี
+ประชญ มีชูศักดิ์
+ประชา กิจรัตนกาญจน์
+ประชา ชื่นแขก
+ประชา เทศทำนุ
+ประชา ป่างศรี
+ประชา ยิ้มพรพิพัฒน์ผล
+ประชา ศรีศศิวิมล
+ประชา องศ์เจริญวุฒิ
+ประชาวุฒิ โสวรวุฒินันท์
+ประชิต ธีรศาสตร์
+ประชีพ ชูพันธ์
+ประชุม ชวลิต
+ประชุม บัวเขียว
+ประชุม มุกดากรรณ์
+ประชุม สวัสดิวงศ์
+ประชุม เอี่ยมละออ
+ประณต บุนนาค
+ประณีต จิตตินันทน์
+ประดับ จิตติมาพร
+ประดับ พุ่มสุวรรณ์
+ประดับ โสภณกิตยาภรณ์
+ประดิษฐ จันทรา
+ประดิษฐ เลิศวิชา
+ประดิษฐ์ กลิ่นหอมรื่น
+ประดิษฐ์ จงสืบพันธ์
+ประดิษฐ์ ชูพึ่งอาตม์
+ประดิษฐ์ ทองพสิฐสมบัติ
+ประดิษฐ์ บุญมาก
+ประดิษฐ์ พรรณาโส
+ประดิษฐ์ มหพันธ์
+ประดิษฐ์ ลิมปิราษฎร์
+ประดิษฐ์ เวสารัชชนนท์
+ประดิษฐ์ สังข์สว่าง
+ประดิษฐ์ แสวงศักดิ์
+ประดิษฐ์ เอกอุ่น
+ประถม อิ่มสว่าง
+ประทวน นาคพลัง
+ประทวน อรรถโกวิท
+ประทาน นันทประไพ
+ประทิน จำปาเงิน
+ประทิน เบญจพล
+ประทิน ศงสนันทน์
+ประทินทิพย์ บัวพันธุ์
+ประทีป เกิดผล
+ประทีป จงมีเสร็จ
+ประทีป ชัยเฉลิมศักดิ์
+ประทีป เตชะประภาวกุล
+ประทีป นรมั่ง
+ประทีป ประไพลักษณ์
+ประทีป พุฒิสกุลวงศ์
+ประทีป ยิ้มสาระ
+ประทีป วงศ์เลิศ
+ประทีป สนใจพาณิชย์
+ประทีป เสียงหวาน
+ประทีป อุดมผล
+ประทุม ขวัญมา
+ประทุม เจริญชอบ
+ประทุม ดีโรจน์วงค์
+ประทุม นุชนวล
+ประทุม พรหมสนธิ์
+ประทุม ยุวานนท์
+ประทุม เวณุนันทน์
+ประทุม สุขมา
+ประทุม อวยศิริ
+ประทุมพิน มุตเงิน
+ประธาน ชุณหะสันต์
+ประธาน เวชชประสิทธิ์
+ประนอม ก้องสมุทร
+ประนอม โคศิลา
+ประนอม ชนะภัย
+ประนอม ตรีวิจิตรวิวัฒน์
+ประนอม ธงสวัสดิ์
+ประนอม บุญมาเลิศ
+ประนอม พงษ์ศรี
+ประนอม โพธิยานนท์
+ประนอม ยิ้มงาม
+ประนอม วงศาธิชัยสกุล
+ประนอม สถิรสมบัติ
+ประนอม สุวรรณเครือ
+ประนอม อังคเสถียร
+ประพงศ์ วัฒนสุข
+ประพจน์ มีทรัพย์
+ประพนธ์ เกษรางกูล
+ประพนธ์ นพสิทธิศุภพงษ์
+ประพนธ์ วัดมณี
+ประพร ยังประดิษฐ
+ประพฤทธิ์ ศุภพัฒนวรกุล
+ประพัฒน์พงษ์ บำเพ็ญสิทธิ์
+ประพัฒน์ ธนะธนิต
+ประพัฒน์ ลิมป์ธีระกุล
+ประพัฒน์ อุดมโภชน์
+ประพันธุ์ ขันธโสภา
+ประพันธ์ คล้ายสุบรรณ
+ประพันธ์ ฉัตรธนาอนันต์
+ประพันธ์ เดโชธรรมสถิต
+ประพันธ์ ธานีคำ
+ประพันธ์ ประภาพิทยากร
+ประพันธ์ พิพัฒน์อนันต์
+ประพันธ์ ยุชัย
+ประพันธ์ วงศ์แสงวิบูลย์
+ประพันธ์ ศิริโชติรุ่งขจร
+ประพันธ์ สุวรรณ์
+ประพันธ์ อัญญมณี
+ประพาศ ศกุนตนาค
+ประพาฬ แสนสุข
+ประพิทย์ ไชยอุทิตย์กุล
+ประพิมพ์ พุทธิรักษ์กุล
+ประพิศ บุญรุ่ง
+ประพิศ แสงอาทิตย์
+ประพีร์ อิฏฐกรพันธ์
+ประภัศร ไชยเศรษฐ
+ประภัสร์ พิศิษฐการ
+ประภัสสร ทองคำคูณ
+ประภัสสร ลุประสงค์
+ประภัสสร เอี่ยมโอภาส
+ประภา คำเพราะ
+ประภา ชารีอัน
+ประภา ตั๋นเจริญ
+ประภา นาคนิล
+ประภา พงษ์พิพัฒน์
+ประภา มีแสง
+ประภา วิเชียรสิงห์
+ประภา สุขพันธี
+ประภา อิงคนันท์
+ประภาทิพย์ ฉ เจริญผล
+ประภาพร แซ่ลิ้ม
+ประภาพร แย้มอ่วม
+ประภาพร อุบลวิรัตนา
+ประภาพรรณ บุณยะศรี
+ประภาพรรณ อิ่มพูลทรัพย์
+ประภาภรณ์ ผินแต
+ประภารัตน์ บางภิภพ
+ประภาวดี อำมฤตโชติ
+ประภาศรี คารวะตรีเดช
+ประภาศรี เที่ยงขำ
+ประภาศรี เมืองพรหม
+ประภาศรี สุนทเรกานนท์
+ประภาส เกตกะโกมล
+ประภาส ทับทิมทอง
+ประภาส พุทธิดิลก
+ประภาส ศิริอังคณา
+ประภาส โอภาสพันธ์วงศ์
+ประมวญ ประดิษฐโสภณ
+ประมวล คำเวียงจันทร์
+ประมวล เติมกุศลทรัพย์
+ประมวล บุญสิงห์ศร
+ประมวล ภูมิชัย
+ประมวล วิมลโนธ
+ประมวล สุวรรณจินดา
+ประมวลศรี สินอาษา
+ประมาน สุงสุวรรณ
+ประมุข พรหมรัตน์พงศ์
+ประมูล ชูแก้ว
+ประยงค์ กิตติการุณจิต
+ประยงค์ ใจดี
+ประยงค์ ตัณฑ์สุทธิวงค์
+ประยงค์ บัวขจร
+ประยงค์ พ่วงทรัพย์
+ประยงค์ รอดนำพา
+ประยงค์ สง่าวงค์
+ประยงค์ หงษ์อ่อน
+ประยวช นิลพันธ์
+ประยุทธ ขจรกวินกุล
+ประยุทธ ไชยมาตร
+ประยุทธ นิมิตหลิวพานิชย์
+ประยุทธ พุ่มชูศรี
+ประยุทธ วงศ์ประทุม
+ประยุทธ สุทธิสานนท์
+ประยุทธ์ โกวิทวณิชกานนท์
+ประยุธ ยินดีพิธ
+ประยูร แก้วบัณฑิต
+ประยูร จงมีพรชัย
+ประยูร แจ้งจิตร
+ประยูร ไชโย
+ประยูร ทองประทุม
+ประยูร นิ่มขาว
+ประยูร บูรณศิริ
+ประยูร พรสัมพันธ์สุข
+ประยูร ภูมิโสม
+ประยูร รอยตระกูล
+ประยูร เลิศไชยประดิษฐ์
+ประยูร ศรีวิไล
+ประยูร สำเนียงงาม
+ประยูร หงษ์โต
+ประยูร อุณรุท
+ประลอง สุทธินันทสุข
+ประวัติ จิระสถิตย์
+ประวัติ นพรัตนราภรณ์
+ประวัติ รัตนวิภาพงษ์
+ประวัติ สุทธิสารเศรษฐ์
+ประวิง นวลกะสิน
+ประวิช อัชฌาสุทธิคุณ
+ประวิตร วงศ์จิตตาโภค
+ประวิทย์ กังกล
+ประวิทย์ จงจิตสำราญ
+ประวิทย์ เจาสุริยตระกูล
+ประวิทย์ แซ่ปึง
+ประวิทย์ เตชะบูรณเทพาภรณ์
+ประวิทย์ นานาชิน
+ประวิทย์ ปาลศรี
+ประวิทย์ พูลเกษร
+ประวิทย์ รติสิน
+ประวิทย์ เลิศเธียรดำรง
+ประวิทย์ วุฒินภารัตน์
+ประวิทย์ สายจันทร์หอม
+ประวิทย์ แสงไชย
+ประวิทย์ อารีสงเคราะห์กุล
+ประวีณ จันทร์เจริญ
+ประวุฒิ ศรีมันตะ
+ประศาสน์ บุรินทร์วัฒนา
+ประสงค์ กำแหงฤทธิ์
+ประสงค์ แคล้วโยธา
+ประสงค์ เจิดสกุลบุญ
+ประสงค์ แซ่ยิ้ม
+ประสงค์ ตู้จินดา
+ประสงค์ ธำรงวัฒนเลิศ
+ประสงค์ ปทุมเดชะ
+ประสงค์ พรชัยวรกุล
+ประสงค์ แพประเสริฐ
+ประสงค์ รอดเชื้อ
+ประสงค์ วงศ์ชนะภัย
+ประสงค์ ศรีชัยศิริเวช
+ประสงค์ สวนสมจิตร
+ประสงค์ สุวรรณประเทศ
+ประสงค์ อย่างธารา
+ประสบ โต๊ะตระกูล
+ประสพ นวลเถลิงศักดิ์
+ประสพ หัสขันธิ์เปี่ยมสุข
+ประสพสิน ศุขเอี่ยม
+ประสพโชค วุฒิสาร
+ประสม สีน้ำเงิน
+ประสาท เกษตระชนม์
+ประสาท ตั้นเส็ง
+ประสาท พิทักษ์พงศ์ศิริ
+ประสาท ศรีนาค
+ประสาท อร่ามกุล
+ประสาธน์พล คล่องการเขียน
+ประสาน เกษประดิษฐิ์
+ประสาน เฉลยภาพ
+ประสาน เตชะประภาวกุล
+ประสาน บุญรุตน์
+ประสาน พึ่งบุญพานิชย์
+ประสาน เรืองแจ่ม
+ประสาน ศิริบุญ
+ประสาน สุระเรืองชัย
+ประสาน อินทศักดิ์อุบล
+ประสาร ขจรกลิ่น
+ประสาร ธรรมจำรัส
+ประสาร มีสมมนต์
+ประสาร แสงศรี
+ประสิทธิ สิงห์เจริญกิจ
+ประสิทธิ์พร วิริยะประพันธ์
+ประสิทธิ์ กวินปณิธาน
+ประสิทธิ์ กิติศักดิ์กุล
+ประสิทธิ์ แก้วสมนึก
+ประสิทธิ์ คนซื่อ
+ประสิทธิ์ จงอัศญากุล
+ประสิทธิ์ จันไกรผล
+ประสิทธิ์ จุ้ยนิ่ม
+ประสิทธิ์ ฉลองธนากุล
+ประสิทธิ์ ชางประยูร
+ประสิทธิ์ เชื้อชาวนา
+ประสิทธิ์ แซ่หุ่น
+ประสิทธิ์ เดชวนิชยนุมัติ
+ประสิทธิ์ ตันสงวนวงษ์
+ประสิทธิ์ ทรงคะมาลี
+ประสิทธิ์ เทพเอื้อตระกูล
+ประสิทธิ์ นวลอนงค์
+ประสิทธิ์ บรรทัดเที่ยง
+ประสิทธิ์ บุญแก้ว
+ประสิทธิ์ ประเสริฐเลิศ
+ประสิทธิ์ ปุระมาปัด
+ประสิทธิ์ พรพิพัฒน์
+ประสิทธิ์ พันแสงดาว
+ประสิทธิ์ เพชรสุขสันติ์
+ประสิทธิ์ ภู่งามชื่น
+ประสิทธิ์ มานะผล
+ประสิทธิ์ ยืนยง
+ประสิทธิ์ รุ่งธีรกุล
+ประสิทธิ์ ลิมป์วัฒนกุล
+ประสิทธิ์ วงค์ภู่
+ประสิทธิ์ วัชระไพโรจน์
+ประสิทธิ์ วีระพานิชเจริญ
+ประสิทธิ์ ศรีอุทารวงศ์
+ประสิทธิ์ สกุลนามอเนก
+ประสิทธิ์ สันตโยดม
+ประสิทธิ์ สีมาธรรมรัตน์
+ประสิทธิ์ สุทธิศิริกุล
+ประสิทธิ์ แสงภักดี
+ประสิทธิ์ หาญกล้า
+ประสิทธิ์ อ้นปันส์
+ประสิทธิ์ อามินเซ็น
+ประสิทธิ์ เอียดแก้ว
+ประสูต ชาญจำลอง
+ประหยัด คล้อยพึ่งอาจ
+ประหยัด แดงอินทวัฒน์
+ประหยัด บุญส่ง
+ประหยัด ม่วงเลี้ยง
+ประหยัด เศรษฐวงศ์
+ประหลาท นวราช
+ประเจษฎ์ ขจรนันทน์
+ประเชิญ ปั้นทอง
+ประเดิม ยุวเทพากร
+ประเทือง กงทอง
+ประเทือง คงมนต์
+ประเทือง เจียไพแก้ว
+ประเทือง ติณะมาศ
+ประเทือง นิตยะ
+ประเทือง เปาชม
+ประเทือง มหารักขกะ
+ประเทือง เล็กใจกล้า
+ประเทือง สังขสูตร
+ประเทือง หาพจน์
+ประเทืองทิพย์ สุขดี
+ประเมิน ขันธารักษ์
+ประเวช ภักดีประพันธ์
+ประเวศ กุลวิจิตรรังสี
+ประเวศ ภาสวรเวช
+ประเวศน์ บุญวิภารัตน์
+ประเสริฐ กลั่นประสม
+ประเสริฐ กิจเจริญวิศาล
+ประเสริฐ เกิดภู่
+ประเสริฐ ขวัญทะเล
+ประเสริฐ ครองศักดิ์ศรี
+ประเสริฐ โคตรประทุม
+ประเสริฐ จังสถิตย์กุล
+ประเสริฐ จิตต์จารึก
+ประเสริฐ เจตน์สมบูรณ์
+ประเสริฐ ฉากงาม
+ประเสริฐ ชาญฐิติเวช
+ประเสริฐ เชิดชูความดี
+ประเสริฐ แซ่ลิ้ม
+ประเสริฐ ดารารัตน์
+ประเสริฐ ตั้งจรรยาธรรม
+ประเสริฐ เติมประยูร
+ประเสริฐ ทวีโชติช่วง
+ประเสริฐ ทัศนศร
+ประเสริฐ ธรรมรัตโนทัย
+ประเสริฐ นันทสันติ
+ประเสริฐ เนียมกุลรักษ์
+ประเสริฐ บุญรัตน์
+ประเสริฐ ประมงกิจ
+ประเสริฐ ปานสุข
+ประเสริฐ ผาสุถาน
+ประเสริฐ พฤกษางกูร
+ประเสริฐ พีระแพทย์
+ประเสริฐ โพธิเจริญ
+ประเสริฐ ภูมิจันทร์
+ประเสริฐ มักพิมล
+ประเสริฐ มูฮำมัดอารี
+ประเสริฐ รมยศิริไทย
+ประเสริฐ รุจิธารณรงค์
+ประเสริฐ ลาภดารา
+ประเสริฐ เลาหเลิศชัย
+ประเสริฐ วงศ์อัครกุล
+ประเสริฐ วัฒนะชัยศรีสกุล
+ประเสริฐ วุฒยประดิษฐ์
+ประเสริฐ ศรีสุภางค์
+ประเสริฐ ศึกวัฒนา
+ประเสริฐ สวนปรางค์
+ประเสริฐ สายวัฒนาสุข
+ประเสริฐ สุขบาง
+ประเสริฐ สุบินมิตร
+ประเสริฐ เส็งสุข
+ประเสริฐ หรูลักษณานนท์
+ประเสริฐ เหลืองศุภชัยกุล
+ประเสริฐ อยู่พุ่มพฤกษ์
+ประเสริฐ อาจเนียม
+ประเสริฐ อุดมศิริโภคศัย
+ประเสริฐ โอวะกุลวงศ์
+ประเสริฐศรี วงษ์สุรินทร์
+ประเสริฐิ์ ขาวบริสุทธิ์
+ประโมทย์ ไชยกิจ
+ประโยชน์ ไทยอุดม
+ประโยชน์ สนิทวงศ์
+ประไทย ประกอบกลิ่น
+ประไพ ขาวสุทธิ
+ประไพ จำเรียง
+ประไพ ชูประยูร
+ประไพ ตรีนิตย์
+ประไพ เทียนไทย
+ประไพ บุญยะรัตน์
+ประไพ พรมณะ
+ประไพ โพธิ์แหบ
+ประไพ รัตนะชีวะกุล
+ประไพ วิสาลสกล
+ประไพ สร้อยสนธิ์
+ประไพ แสงเดช
+ประไพ อินเอี่ยม
+ประไพพรรณ เก็จวลีวรร
+ประไพพรรณ์ ชะเอม
+ประไพรัตน์ กาญจนพิบูลย์
+ประไพศรี ดวงแก้ว
+ประไพศรี ศรีภิรมย์
+ปรัชญา จรูญโรจน์
+ปรัชญา วิทยาพันธุ์
+ปรัญญา จันทราภรณ์
+ปราการ บ้านเกาะ
+ปรางค์ แก้วงาม
+ปราจิณ วุฒานุสร
+ปราณี กฤษณกรี
+ปราณี กิตติคุณ
+ปราณี แก้วคำ
+ปราณี คงประโยชน์
+ปราณี คุ้มจั่น
+ปราณี จันทร์ทวีลาภ
+ปราณี จิวะพงษ์
+ปราณี ฉัตรไพศาลสุข
+ปราณี ชาญช่างทหาร
+ปราณี โชคชัยเฉลิมวงศ์
+ปราณี แซ่ตั้ง
+ปราณี แซ่เฮ้ง
+ปราณี ตรงเวโรจน์
+ปราณี เตียเติมศุภผล
+ปราณี ทองดอนพุ่ม
+ปราณี ทู้ไพเราะ
+ปราณี ธุรกิจวงค์
+ปราณี นิยมเสน
+ปราณี บุญกล่ำ
+ปราณี ประดิษฐ์สุดสวาท
+ปราณี ปาพจนานนท์
+ปราณี เผือกเกษม
+ปราณี พฤติศรัณยนนท์
+ปราณี พิเนตรเสถียร
+ปราณี โพธิ์มี
+ปราณี มหัตเดชกุล
+ปราณี ไม้สัก
+ปราณี รังสิยานนท์
+ปราณี โรจน์พจนารัช
+ปราณี เลาหะกุลธรรม
+ปราณี วรฉัตราวณิช
+ปราณี วิทุรวงศ์
+ปราณี ศรีทัย
+ปราณี ศิริทัศนกุล
+ปราณี สมบูรณ์ศักดิ์
+ปราณี สายเจริญ
+ปราณี สุขธีวุฒิ
+ปราณี สุริยะฉาย
+ปราณี แสนสุข
+ปราณี หิตะหุ่ง
+ปราณี อยู่เสนาสน์
+ปราณี อำไพสุวรรณ
+ปราณี เอกสิริลัญจกร
+ปราณีต ชวาลกุล
+ปราณีต พึ่งพงศ์
+ปราณีต เหมือนใจ
+ปรานอม จิตรบำรุง
+ปรานอม มิตรธรรมศิริ
+ปรานี เดชมณี
+ปรารถนา จันทร์แกมแก้ว
+ปรารถนา มิลินทจินดา
+ปรารภ รัตพันธุ์
+ปราศรัย อัจฉรารักษ์
+ปราโมท ยินดี
+ปราโมทย์ คงธนะ
+ปราโมทย์ จำปาทอง
+ปราโมทย์ ชุติมา
+ปราโมทย์ ตำราเรียง
+ปราโมทย์ นภาแจ้ง
+ปราโมทย์ บุณยรังสฤษฎ์
+ปราโมทย์ พงศ์กล่ำ
+ปราโมทย์ มกรพฤกษ์
+ปราโมทย์ โรจนวิภาต
+ปราโมทย์ วโรดมวนิชกุล
+ปราโมทย์ สรรเพชรศิริ
+ปราโมทย์ สุบรรณพงษ์
+ปราโมทย์ โห้ใย
+ปริกกีปาล ซิงห์
+ปริญญา คำทะเนตร
+ปริญญา ติรณะประกิจ
+ปริญญา เปรมธีรสมบูรณ์
+ปริญญา แย้มชมสวน
+ปริญญา ศรีสุริโย
+ปริญญา เหมมาชูเกียรติกุล
+ปริญดา นิลจรัสวณิช
+ปริทปาลซิงห์ ซาบาดา
+ปริม คุณะเกษม
+ปริยา ปัญญาพล
+ปริศนา แก้วรุ่งเรือง
+ปริศนา ประหารข้าศึก
+ปริศนา อัศวเรืองชัย
+ปรีชา กลางบุรัมย์
+ปรีชา กีรเศรษฐรุ่งทวี
+ปรีชา แก้วโกถม
+ปรีชา คล่องสู้ศึก
+ปรีชา เงินถาวรวัฒนา
+ปรีชา จารุศิรินุกุล
+ปรีชา เจริญชัยเพชร
+ปรีชา เฉลิมพล
+ปรีชา ชินะนาวิน
+ปรีชา ไชยวสุ
+ปรีชา แซ่โง้ว
+ปรีชา ตรัยศิลานันท์
+ปรีชา เตชทิพากร
+ปรีชา ทรัพย์สถิตย์
+ปรีชา ทิศาภาคย์
+ปรีชา ธาราสนธิ์
+ปรีชา นาสด
+ปรีชา บุญกลั่น
+ปรีชา เบญจนากาศกุล
+ปรีชา ปรีชาวิภาษ
+ปรีชา ผลมาก
+ปรีชา พรหมเกิด
+ปรีชา พิชยพิพัฒน์
+ปรีชา เพ็ชรน่วม
+ปรีชา ภู่สุดแสวง
+ปรีชา มีบุญพูลทรัพย์
+ปรีชา รวยประเสริฐ
+ปรีชา รุ่งเรือง
+ปรีชา ลิปิพัฒนกุล
+ปรีชา วงศ์จิตตาโภค
+ปรีชา วัฒนดิเรก
+ปรีชา วิไลรัตน์
+ปรีชา ศรีเรือง
+ปรีชา สงวนปี
+ปรีชา สว่างจิตต์
+ปรีชา สิทธิกิจ
+ปรีชา สุทธินิภาชัย
+ปรีชา เสรีวงศ์
+ปรีชา หอมพวงภู่
+ปรีชา อนุภาพประเสริฐ
+ปรีชา อัยสานนท์
+ปรีชา อุดมยิ่งเจริญ
+ปรีชาพล ผุสสรางค์มาลัย
+ปรีดา คงสุวรรณ
+ปรีดา แซ่ตั้ง
+ปรีดา บรรทัดพันธุ์
+ปรีดา พิบูลศักดิ์
+ปรีดา โรจน์บัวทอง
+ปรีดา สหนันทรายุทธ
+ปรีดา เอกศิรสุวรรณ
+ปรีดี ขุมสุวรรณ์
+ปรีดี สุทธิแย้ม
+ปรียพรรณ ไทยสวัสดิ์
+ปรียา จิรรักษ์โสภากุล
+ปรียา พงศานรากุล
+ปรียา สมุทรใหญ่
+ปรียานิจ ศรีแก่นจันทร์
+ปรียาพร แซ่อึ้ง
+ปรียาภา อภิสุข
+ปรุง เดชมานนท์
+ปรุงศรี เพชรบูรณ์
+ปรเมษฐ์ พรเลิศ
+ปลอดภัย พีรดัม
+ปลิว ดิษฐปัญญา
+ปลื้มจิตต์ จุฑรรพ
+ปวรินทร บุญยุบล
+ปวิตร์ สุธาวิยางกูร
+ปวีณา ตันสิน
+ปวีณา สนธิภักดี
+ป่วยล้วง แซ่จึง
+ปอง อาภาศิลป์
+ปอจู ตันติอนุกุลบุตร
+ป้อม ประจำมูล
+ปะวิง ศิริกิจ
+ปัญจพงษ์ แซ่ตั้ง
+ปัญจรัตน์ ยุทธวงศ์
+ปัญจาภรณ์ พรหมายน
+ปัญญา กาหลง
+ปัญญา คุณวุฒิดีเลิศยิ่ง
+ปัญญา แจ้งการดี
+ปัญญา แซ่โง้ว
+ปัญญา ทองศรี
+ปัญญา นิลสินธพ
+ปัญญา ปิ่นปาน
+ปัญญา พุ่มลำเจียก
+ปัญญา รอดเครือมิตร
+ปัญญา วรรณกระจ่าง
+ปัญญา ศรีใส
+ปัญญา สุขวัฒนทรัพย์
+ปัญญา ห่านสิงห์
+ปัญญา เอ่งฉ้วน
+ปัณชารีย์ เลี้ยงบำรุง
+ปัทมา กุลปัญญาเลิศ
+ปัทมา ชาญชัยศรี
+ปัทมา ตุลารักษา
+ปัทมา เปี่ยมสัมฤทธิ์
+ปัทมา เมืองทองแก้ว
+ปัทมา วิปัสสนาธรรม
+ปัทมา สุขก้อน
+ปัทมา อาระยานิมิตสกุล
+ปัทมาวดี บุหลัน
+ปั้น โชติกะพุกกะณะ
+ปาน แก้วชนะ
+ปานคำ ลัวะตื้น
+ปานชัย แก้วอัมพร
+ปานทิพย์ นามไชย
+ปานฤทัย ตั้งใจ
+ปานเสก อาทรธุระสุข
+ปารวีร์ บุญโต
+ปาริชาต ก้อนนาค
+ปาริชาติ กราเซียนี่
+ปาริชาติ ทัพภะสุต
+ปาริชาติ ระวังสำโรง
+ปาริชาติ เสวกพันธ์
+ปาลิดา คณารมย์
+ปิง พานิชยานนท์
+ปิติ ปิ่นสุกาญจนะ
+ปิติพงศ์ คุณพงศ์ไพศาล
+ปิ่น กิจเมธี
+ปิ่น มณีบุตร
+ปิ่นทอง ศาลยาชีวิน
+ปิ่นอนงค์ พรหมดวง
+ปิยฉัตร อิศรเสนา ณ อยุธยา
+ปิยนันท์ ทรงสกุล
+ปิยนุช คารวะพิทยากุล
+ปิยพงศ์ ติณสูลานนท์
+ปิยพรรณ แย้มน้อย
+ปิยรัตน์ จาตุรันตบุตร
+ปิยวรรณ คำพยา
+ปิยวรรณ ศรีคต
+ปิยวุฒิ งามพล
+ปิยะ จารุศุกร
+ปิยะ เถื่อนเมือง
+ปิยะ เปสตันยี
+ปิยะ วงศ์สวัสดิ์
+ปิยะ อัชชเสวิน
+ปิยะชาติ จันทรัตน์
+ปิยะดา ล้อศิรินันท์
+ปิยะนาถ ชุ่มอระ
+ปิยะนุช บุญรัตน์
+ปิยะพงศ์ ปิยางสุ
+ปิยะพร นิลฉาย
+ปิยะพันธ์ สีดอกบวบ
+ปิยะรัตน์ ดำรงค์กุล
+ปิยะวดี วิริยะชาติ
+ปิยะวรรณ สุคนธสิงห์
+ปิยะศิริ งามถิ่น
+ปิยาภรณ์ ชินูปการพงศ์
+ปิยเศรษฐ์ วรอาตมพิทักษ์
+ปียาภรณ์ ม่วงกุล
+ปุณณรัตน์ โพธิกำจร
+ปุ่ม มาลากุล
+เป บุญกอง
+เปรม จันทรา
+เปรมกมล เกิดเดช
+เปรมจิตต แพ่งสถา
+เปรมจิตต์ สารธิราช
+เปรมชัย เตชะมงคลาภิวัฒน์
+เปรมพันธ์ ชมภูรัตน์
+เปรมฤดี วงศ์ทองคำ
+เปรมวดี รัตนศิรินทรวุธ
+เปรมสิทธิ์ เติมจรัส
+เปรียบ บุญลือ
+เปลว อยู่สอาด
+เปล่ง นิ่มคำ
+เปาลิน เกียรติยศนุสรณ์
+เปี่ยมศรี เจริญสุข
+เปี๊ยก ล้วนเจริญ
+เป้ง แซ่อื้อ
+เป้า โพธิ์เนืองผล
+เป๋งไก แซ่เจี่ย
+แป้น ระดมงาม
+โปรยมาศย์ ศรีทองกุล
+โป๊ะชัย แซ่จัง
+ผกา นรนิตชัยกุล
+ผกากรอง พุ่มวงศ์สำเนียง
+ผกาพรรณ ปะติเส
+ผกามาศ ตีรณธาดา
+ผกามาศ สิทธิพล
+ผกาวรรณ เทียมทองคำ
+ผกาแก้ว ลีนะบรรจง
+ผจงสุข อังประทีป
+ผจญ หีบแก้ว
+ผดุง ทองบริสุทธิ์
+ผดุง สิงหเสนี
+ผดุงศักดิ์ ธนากิจเจริญสุข
+ผดุงเกียรติ เอื้ออารยะมนตรี
+ผล ปองสุข
+ผลัด เอาฬาร
+ผสาร สุทัศน์ ณ อยุธยา
+ผ่อง ยุทธารักษ์
+ผ่องพรรณ จงไชโย
+ผ่องพรรณ ภิยโยดิลกชัย
+ผ่องพิศ ศิริพานิช
+ผ่องศรี เจยเสนานนท์
+ผ่องศรี นกแก้ว
+ผ่องศรี เพศยนาวิน
+ผ่องศรี วิเศษสุข
+ผ่องศรี อินทรลาวัณย์
+ผ่องใส พาหุรัตน์
+ผ่อน อ่วมวงษ์
+ผัน บุญชิต
+ผาณิต จันทรเทศ
+ผาด กำเหนิดแก้ว
+ผานิต เจริญพงศ์พัฒนะ
+ผาสิต หิรัญญชาติธาดา
+ผาสุข พร้อมเพรียง
+ผิน ก้อนทองดี
+ผิน ศรีอุเทนชัย
+ผิวพรรณ เปียแก้ว
+ผุสดี เขียวพันธุ์
+ผุสดี เบ็ญจมินทร์
+ผุสดี ศรีสำราญ
+ผูกจิต อินทวงศ์
+เผชิญ ยอดยิ่ง
+เผดียง ชัยอัศวรักษ์
+เผด็จ ผู้พัฒน์
+เผด็จชัย ศรีสุวรรณ
+เผือด ทองทิพย์
+เผ่าพงษ์ ใจเจตนกุศล
+แผ่ว เพ็งชะอุ่ม
+ไผ่เทพ กิมเฮียะ
+ฝ้าย ศิริพันธ์
+พงพจน์ เลิศเจียมรัตน์
+พงศกร เส็งสำราญ
+พงศ์ชาย เกียรติกิตติพงษ์
+พงศธร เลิศภูตราช
+พงศ์นรินทร์ พงษ์สิน
+พงศ์พันธุ์ แพทย์พงศ์
+พงศ์รัตน์ รัตนภากร
+พงศ์ศักดิ์ แซ่แต้
+พงศ์ศักดิ์ วัฒนาศรมศิริ
+พงศ์สวัสดิ์ หมู่พงศ์สุวรรณ
+พงศา แสนใจงาม
+พงศ์เทพ อันตะริกานนท์
+พงษกร พัชรไพศาล
+พงษ์ชัย เฉลิมกลิ่น
+พงษ์ชาติ กอหาญ
+พงษ์ธร สุดยอดบรรพต
+พงษ์พัฒน์ ธีรประเทืองกุล
+พงษ์พันธ์ พันธุ์เสือ
+พงษ์ยุทธ ณ พัทลุง
+พงษ์ศรี แซ่ลิ้ม
+พงษ์ศักดิ์ คารวสิริธรรม
+พงษ์ศักดิ์ ชมภูอินตา
+พงษ์ศักดิ์ ดำรงชัยนิมิตร
+พงษ์ศักดิ์ ธีรภาพพิทักษ์
+พงษ์ศักดิ์ ปัญญจเร
+พงษ์ศักดิ์ เพิ่มทวีผล
+พงษ์ศักดิ์ รอบรู้
+พงษ์ศักดิ์ วงศ์สุริยานนท์
+พงษ์ศักดิ์ ศรีสมศักดิ์
+พงษ์ศักดิ์ สินอวย
+พงษ์ศักดิ์ เหล่าเลิศชัย
+พงษ์ศานต์ ค้ำชู
+พงษ์สวัสดิ์ ธงศรี
+พงษ์สิทธิ์ เวชสิทธิ์
+พงษ์เกียรติ ชลวิไล
+พงษ์เทพ ทัพภมาน
+พงษ์เทพ สิตวาทิน
+พงษ์ กิตติมโนรม
+พงษ์ อัครถนอม
+พจน์ณรงค์ ศรีทัศนีย์
+พจนา ไกรประเสริฐโชค
+พจนา ปิยะวิสุทธิกุล
+พจนา ศิลา
+พจนาถ ศุภเศรษฐ์
+พจนารถ เอกญาติ
+พจนีย์ คุณปกรณ์ชัย
+พจนีย์ ปานภักดี
+พจนีย์ ศิริวัฒน์
+พจน์ เกิดผล
+พจน์ ธีรคุปต์
+พจน์ มั่นกันนาน
+พจน์ แสงนิล
+พจมาน ภู่ประดิษฐ์
+พจีรัตน์ รอดรัตนาทูล
+พดา เจริญวัฒนานนท์
+พนม ช้างมณี
+พนม ปานภักดี
+พนม เรืองศิลป์
+พนม หวังดี
+พนมพร นิ่มองคำ
+พนมวัลย์ กาญจนนัมพะ
+พนอ ตันธิประพันธ์
+พนอจันทร์ มาลากุล ณ อยุธยา
+พนัส ฉายสีศิริ
+พนัส สีมันตร
+พนานุรักษา พนานุรักษา
+พนาวัลย์ แคล้วเครือ
+พนิดา คาถา
+พนิดา แซ่ลี้
+พนิดา นาคอ่อน
+พนิดา เพคยางกูร
+พนิดา วงศ์พร้อมเจริญ
+พนิดา สุขโพธิ์เพ็ชร
+พนิต ทองวิจิตร
+พนินธา จ้อยชู
+พยงค์ จันทรังษี
+พยงค์ บุญลือ
+พยงค์ สารจันทร์
+พยนต์ คุ้มรำไพ
+พยนต์ พุตยบุตร
+พยนต์ อุทยานะกะ
+พยอม จั่นอุไร
+พยอม ทวีคูณ
+พยอม ปู่หิน
+พยอม รวมศิลป์
+พยอม สนธิธรรม
+พยอม อินทร์กิ่ง
+พยัพ นาคทั่ง
+พยุง จงปิยะโชติ
+พยุง ทับทอง
+พยุง ฟักเพชร
+พยุง สายัณหวิกสิต
+พยุงศรี จันทร์ศรี
+พยุงศักดิ์ สุขสถาน
+พยูร รักขาว
+พร ไตรรัตนวงศ์
+พร รุ่งเรือง
+พร อัศวพิทยา
+พรจันทร์ ชัยเธียรสุทธานัน
+พรจิตต์ พรหมบรรดาโชค
+พรชนก วรินทรเวช
+พรชัย กิจวรลักษณ์
+พรชัย เขมโชคนที
+พรชัย จันทบาล
+พรชัย เจี่ยสอาด
+พรชัย เชื่องหลิว
+พรชัย แซ่เจี่ย
+พรชัย เดชาประพันธ์
+พรชัย เตชะกนกสุวรรณ
+พรชัย ทุติยาภรณ์
+พรชัย นันทวิมล
+พรชัย ประภากรวรกุล
+พรชัย พรพัฒนาจิรพันธิ
+พรชัย พิริยวิทโยภาส
+พรชัย มงคลตรีมาศ
+พรชัย รัตนโชติพงศ์
+พรชัย ลี้ถาวร
+พรชัย วนาโรจน์
+พรชัย วีระกิตติ
+พรชัย ศิลาโภชน์
+พรชัย สิงห์กุล
+พรชัย สุรีย์กมลชัย
+พรชัย เหลืองจิตวัฒนา
+พรชัย อังสุรัตน์โกมล
+พรชัย เอี่ยมสุขมงคล
+พรณรงค์ ระดมทอง
+พรทวี อธิศิวกุล
+พรทิพย์ กาญจนสุนทร
+พรทิพย์ ขันทอง
+พรทิพย์ จอนแจ้ง
+พรทิพย์ เจริญกิจชัยชนะ
+พรทิพย์ ชินรัตน์
+พรทิพย์ แซ่ลี้
+พรทิพย์ เดชะทัศน์
+พรทิพย์ เตมีรักษ์
+พรทิพย์ ทิพยเสม
+พรทิพย์ นาคบุตร
+พรทิพย์ บุณโยทยาน
+พรทิพย์ ผลฟักแฟง
+พรทิพย์ พิณพิพัณน์
+พรทิพย์ ไพบูลย์
+พรทิพย์ มีทรัพย์สถาพร
+พรทิพย์ รัตนวิเชียร
+พรทิพย์ ลิขิตชีวะ
+พรทิพย์ วชิรานุกูล
+พรทิพย์ วิเศษพงษ์พันธ์
+พรทิพย์ ศิริเอี่ยม
+พรทิพย์ สารการ
+พรทิพย์ สุรชัยสติกุล
+พรทิพย์ หอมลอด
+พรทิพย์ อันประเสริฐพร
+พรทิพย์ ฮวบดี
+พรทิพา พณิชยางกูร
+พรทิภา ทองเขียว
+พรธิดา คงศิลป์
+พรนภา ปิ่นรัตน์
+พรนิดา สิทธิพรรัตนมณี
+พรนุช คืนคงดี
+พรประเสริฐ สุวรรธนะพาณิชย์
+พรพจน์ ป่านแก้ว
+พรพยง คูห์สุวรรณ
+พรพรรณ จิชชุกรจิรภัค
+พรพรรณ ฐานะเจริญกิจ
+พรพรรณ ธีระชาติ
+พรพรรณ พัชรวัฒนพงศ์
+พรพรรณ เย็นลำยอง
+พรพรรณ วิชญาเดชะ
+พรพรรณ สุนาพันธ์
+พรพรรณ์ ไทยเจริญ
+พรพันธุ์ ปิ่นโมรา
+พรพิพัฒน์ สวัสดิ์เวทิน
+พรพิมล จาดประดิษฐ์
+พรพิมล แซ่เบ้
+พรพิมล ธุรพันธ์
+พรพิมล พัฒนายุ
+พรพิมล ลอองสุทธิ์
+พรพิมล ศิลปสืบเชื้อ
+พรพิมล ใหม่นวล
+พรพิลาศ ศุภนานนทชัย
+พรพิศ อาภรณ์ศิริพงษ์
+พรพูล หลุยเจริญ
+พรมณี ไชยบุตร
+พรรณงาม กาพย์แก้ว
+พรรณทิพย์ งามละเมียด
+พรรณทิพย์ ไวทยานนท์
+พรรณทิพา มรกตสินธุ์
+พรรณนรา ปานณรงค์
+พรรณนิภา อุดมจรรยา
+พรรณพิมล แซ่ฮั่น
+พรรณยุพา ฮ่อสกุล
+พรรณรำไพ ดวงดี
+พรรณวดี อัมพุช
+พรรณอร ฉันทโรจน์
+พรรณิกา จันทร์เป้า
+พรรณิภา สิงห์โตเพ็ชร
+พรรณี เกิดเปี่ยม
+พรรณี โคตรักษา
+พรรณี จิรวศิน
+พรรณี ชื่นอุไทย
+พรรณี แซ่โค้ว
+พรรณี ตานะประทีปกุล
+พรรณี ธนภานนท์
+พรรณี บัวชุ่ม
+พรรณี ปูรณามระ
+พรรณี พิมลเกียรติ
+พรรณี มณีชาติ
+พรรณี รองโสภา
+พรรณี ลิ้มสุธาโภชน์
+พรรณี วัฒนายากร
+พรรณี ศรีอนุชาต
+พรรณี สันป่าแก้ว
+พรรณี เสมาทอง
+พรรณี อภิชัยทวีสิน
+พรรณี เอกสินเสริม
+พรรณใจ จันทร์สวัสดิ์
+พรรษพล ตั้งยะฤทธิ์
+พรรัชนี จ้อยพุทธ
+พรฤดี วงศ์ระลึก
+พรวารัตน์ สกุลโชติพาณิชย์
+พรวิไล เจริญชัยเพชร
+พรศรี ชลายนนาวิน
+พรศรี พิมพกรณ์
+พรศรี แสงฉวี
+พรศักดิ์ จำปาทอง
+พรศักดิ์ ทัพสิทธิ์
+พรศักดิ์ พิทักษ์นราธรรม
+พรศักดิ์ วิจิตรโสภณ
+พรศักดิ์ เหล่าตรงจริง
+พรศิริ ผาสุขกานนท์
+พรศุลี จันทร์ศิริศรี
+พรสวรรค์ แซ่เฮ้ง
+พรสวรรค์ ศักดิ์ธนวัฒน์
+พรสิทธิ์ อาศิรพงศ์พิศิษฐ์
+พรสุข ศิริวงศ์
+พรสุรีย์ เพิกจร
+พรหมพิศ ตั้งเลิศสัมพันธ์
+พรอำพัน ชวลิตนิธิกุล
+พร้อม อินทร์โต
+พร้อมศักดิ์ ณ สงขลา
+พริ้ง เถาว์เพ็ง
+พริ้มเพรา โน้ตศิริ
+พรเทพ ก่อเลิศรัศมี
+พรเทพ ฉัตรศิลป์ชัย
+พรเทพ ติงพิทักษ์สกุล
+พรเทพ ปรางค์นวรัตน์
+พรเทพ มหัธนสกุล
+พรเทพ วรกุลพิทักษ์
+พรเทพ สุทธิพิพัฒน์พงศ์
+พรเนตร แย้มงามเหลือ
+พรเพ็ญ ชำนาญกิจวนิช
+พรเพ็ญ ทับน้อย
+พรเพ็ญ มหาคุณโชติ
+พรเพ็ญ ศีตะจิตต์
+พรเพ็ญ อิงอนุรักษ์สกุล
+พรเลิศ รักสิฐ
+พรใจ องศ์ศิริกุล
+พฤฒิวรรณ สมบุญ
+พล กระต่ายโพธิ์
+พล พลรัตน์
+พล อาชีวะ
+พลชัย ส้มเขียวหวาน
+พลมิตร พูลสวัสดิ์
+พลศรี นิรันดร
+พลสินธุ์ ขลิบไหมทอง
+พลอยไพฑูรย์ ชาติประเสริฐ
+พลากร ห่วงกลจักร์
+พลเดช วรฉัตร
+พวง ปะกลาง
+พวงชมนาถ จริยะจินดา
+พวงทอง บุญประเสริฐเจริญ
+พวงทอง สระสม
+พวงทิพย์ มีสุข
+พวงผกา คงอุทัยกุล
+พวงพยอม งามลักษณ์
+พวงพันธ์ กฤษณธรณิศ
+พวงรัตน์ ถาวรรัตน์
+พวงวิไล จันทวงศ์
+พวงเพชร ชัยกุล
+พวงเพชร อินต๊ะวงค์
+พวงเพ็ญ จั่นเพ็ชร
+พวงเพ็ญ วิบูลย์สวัสดิ์
+พวงแก้ว พิมพสุต
+พสิษฐ์ ตุรงค์สมบูรณ์
+พอดี ชัยเวฬุ
+พอล รูดอล์ฟ
+พะจุณณ์ ตามประทีป
+พะเยาว์ โฉมงาม
+พะเยาว์ มาลาเวช
+พะเยีย แจ่มกระจ่าง
+พักตร์ศิริ ชูวานนท์
+พัชณี ชั้นพรภักดี
+พัชนี คุณแพ
+พัชนี นาถประชา
+พัชนี วิสิทธิ์
+พัชนีย์ บุญกรณ์
+พัชรชัย กุลหอมเนียม
+พัชรัตน์ แซ่โหล่
+พัชรา จิตตภัทรโรจน์
+พัชรา แตงนาค
+พัชรา ปานเสมศรี
+พัชรา มีทรัพย์
+พัชรา ศิวิลัย
+พัชรา อิงอรวิจิตร
+พัชราภรณ์ ช่างชุบ
+พัชราภรณ์ วงศ์มั่นกตัญญู
+พัชราวดี แพรัตกุล
+พัชรินทร์ การบริสุทธิ์
+พัชรินทร์ จันทริก
+พัชรินทร์ แซ่จิว
+พัชรินทร์ โต๊ะวนิชรักษา
+พัชรินทร์ ปรีดียานนท์
+พัชรินทร์ โพธิ์อ่อน
+พัชรินทร์ ราหุลปาน
+พัชรินทร์ ศรีชะบา
+พัชรินทร์ สุดใจ
+พัชรินทร์ อัศวนิก
+พัชรี เกตุหอม
+พัชรี จันทรดาวัลย์
+พัชรี ชูจิรวงศ์
+พัชรี ตั้งตระกูล
+พัชรี นรสิงห์
+พัชรี ปริปุรณะ
+พัชรี พันธุมจินดา
+พัชรี มากกรัด
+พัชรี ลิมปภาพันธุ์
+พัชรี ศรีกระจาย
+พัชรี สว่างพันธุ์
+พัชรี สุวพรศิลป์
+พัชรี อรัญทรวานิช
+พัชรีพร สุขโสมนัส
+พัชรีย์ สมเจริญ
+พัฒณี แซ่ลิ้ม
+พัฒนพงศ์ สุขโกษา
+พัฒนวงษ์ วานิช
+พัฒนะชัย ใสสว่างพันธ์
+พัฒนา ทิมสุวรรณ
+พัฒนา มีศุข
+พัฒนา สุมาลี
+พัฒนี บุญทวี
+พัฒน์ พลภัทรพิจารณ์
+พัด โพธิ์สระคู
+พัทธยา นิระมล
+พัทยา พิมพ์สะอาด
+พัน ผลเจริญ
+พันทิพา จันทรวรรณะ
+พันทิพา สุขประไพพัฒน์
+พันธ์ทิพย์ เนตรรังษี
+พันธวิทธิ์ ใจซื่อกุล
+พันธ์ศักดิ์ เย็นสกุลสุข
+พันธิภา ผลภาษี
+พันธุ์ทิพย์ สายสุนทร
+พันธุ์ศักดิ์ สร้อยคำ
+พันธ์เทพ มานะเกียรติตระกูล
+พันปี รัตนประภา
+พันเภา มินโด
+พัลลภ ธนะสมบูรณ์
+พัลลภ สวนไพรินทร์
+พัว ดีประเสริฐ
+พา จันทร์เที่ยง
+พาณิช ภักตร์เจริญ
+พาณี บำเพ็ญบุณย์
+พาณี สุขสวัสดิ์
+พานิช จิตรแจ้ง
+พานิต ศรีสุกใส
+พายัพ เชื้อสุวรรณ
+พารา เอี่ยมมะโนชญ์
+พาสุข ตั้งตรัสธรรม
+พิกุล เจริญวัย
+พิกุล น้อยผาง
+พิกุล มโนภิญโญภิญญะ
+พิกุล สาระ
+พิงค์ศิริ สุนทรชาติ
+พิจิตร เจริญทรัพย์
+พิจิตรา ชงัด
+พิชญ์นรี สันประเสริฐ
+พิชญาณี เลอเลิศกุล
+พิชัย กฤษฎาพิพัฒน์
+พิชัย เขมทโรนนท์
+พิชัย จำปางาม
+พิชัย ชยสดมภ์
+พิชัย แซ่ตั้ง
+พิชัย ตันตินวะชัย
+พิชัย แทนประยูร
+พิชัย บัวมาศ
+พิชัย เปรมทอง
+พิชัย พิริยะเสถียรกุล
+พิชัย มิ่นสุข
+พิชัย รุ้งทาบนภา
+พิชัย วงศ์กุศลสิริ
+พิชัย วุฒิจำนงค์
+พิชัย สถาวรมณี
+พิชัย สุนทรอำพล
+พิชัย หาญณรงค์ฤทธิ์
+พิชัย อินทรพิพัฒน์
+พิชา วัฒนะธารี
+พิชิต กรานเลิศ
+พิชิต จุลฤกษ์
+พิชิต ตั้งสหไมตรี
+พิชิต บุณยเสนา
+พิชิต ภักดิ์แจ่มใส
+พิชิต วัชราดิลกกุล
+พิชิต สิริวุฒิจรุงจิตติ์
+พิชิต เอี่ยมละออ
+พิฑูรย์ ตันติอมรพงษ์
+พิณทิพย์ บริบูรณ์สุข
+พิณสรวง วงศ์วิลัย
+พิทยา คุณาวิริยะสิริ
+พิทยา นุชเจริญ
+พิทยา แย้มศรวล
+พิทยา สุขใจเจริญเวช
+พิทย์ เศรษฐพิทยากุล
+พิทักษ์ จันทร์หอม
+พิทักษ์ ตั้งชูทวีทรัพย์
+พิทักษ์ ปราดเปรื่องเวทย์
+พิทักษ์ เมฆสกุลรัตน์
+พิทักษ์ ศรีตะวัน
+พิทักษ์ หวังศิริสมบูรณ์
+พิธาน คุณพรศรีภิรมย์
+พิน สมาธิ
+พินัย จงศิริรักษ์
+พินิจ กานติกุล
+พินิจ เจริญวิวัฒนกุล
+พินิจ ตริการชอบ
+พินิจ บุญวิเศษ
+พินิจ ภคสกุล
+พินิจ ว่องเมทินี
+พินิจ สุนากร
+พินิจเสนาการ พอ พระ
+พินิตศักดิ์ อ่องจรูญ
+พิบูล อินทรสวัสดิ์
+พิบูลย์ ไทยเจริญ
+พิบูลย์ วิเชียรวรรณ
+พิพัฒนพงษ์ รักยุติธรรม
+พิพัฒน์ จงเจริญกมล
+พิพัฒน์ เชี่ยวหัตถ์พงษ์
+พิพัฒน์ ทองศรีนาค
+พิพัฒน์ ปลื้มเจริญ
+พิพัฒน์ พิชิตนภากุล
+พิพัฒน์ รวยแท้
+พิพัฒน์ วงศาโรจน์
+พิพัฒน์ ศุภสิงห์ศิริปรีชา
+พิพัฒน์ หทัยวสีวงศ์
+พิพัฒน์ โอมพรนุวัฒน์
+พิภพ จันทรโสภาคย์
+พิภพ เลาคำ
+พิภาดา เจริญจันทร์
+พิมพ์กาญจน์ หล่อศิริไพบูลย์
+พิมพ์ประไพ บุณยะประภูติ
+พิมพ์พร มณีรัตน์
+พิมพ์พา ทิพวัลย์
+พิมพร พิมเภาว์
+พิมพรรณ เปรมธาดา
+พิมพ์วัลย์ สุวรรณประกร
+พิมพา งามเงิน
+พิมพา พงศกรรุ่งโรจน์
+พิมพา หนูแก้ว
+พิมพิศ วุฒิธรรมาภรณ์
+พิมพ์ใจ นำสุวิมลกูล
+พิมพ์ใจ หอมจันทร์
+พิมพ์ วงษ์จันทร์
+พิมล เจริญยิ่ง
+พิมล ปีติยา
+พิมล วีรวัฒน์พงศ์
+พิมลพร มหัธนากร
+พิมลพรรณ เหลี่ยมมุกดา
+พิมลรัตน์ อังกูรสิทธิ์
+พิมานมาศ สถิตย์ทรัพย์
+พิรยุทธ โทสูงเนิน
+พิริยะ กิ่งขจี
+พิรุณ เจริญกุล
+พิรุณรัตน์ สุงสุวรรณ
+พิวัฒน์ วิภาวีพิทักษ์
+พิศณุ เจริญนุกูล
+พิศมร ถิรจิตต์สิริ
+พิศมัย เคียงประพันธ์
+พิศมัย ไชยวัฒน์
+พิศมัย นพรัตน์บัญฑิต
+พิศมัย พัฒนา
+พิศมัย เลาห์หิรัญญากุล
+พิศมัย สิริชูติวงศ์
+พิศมัย อินทร์รจนา
+พิศวง มีสุวรรณ
+พิศสมัย เอกอุ่น
+พิศาล ฉายากล
+พิศาล มโนลีหกุล
+พิศาล โฮตระกูล
+พิศิษฐ อักษรพันธ์
+พิศิษฐ์ ทองมั่นคง
+พิศิษฐ์ รงควิลิต
+พิศิษฐ์ เอกปัญญากุล
+พิศเสน่ห์ นิ่มนวล
+พิษณุ ไตรปิ่นเพ็ชร
+พิษณุ มาลยานนท์
+พิษณุ แสงสาคร
+พิสนธิ์ ศรีภัทรโชติ
+พิสมัย นุธิรงค์
+พิสมัย หล้าล้ำ
+พิสันต์ โอสุวรรณ
+พิสิฏฐ อัศวเพชรฤกษ์
+พิสิฐ จันทร์จิรีย์
+พิสิฐ พรวัฒนมงคล
+พิสิฐ สร้างดี
+พิสิทธิ์ ชัยมงคล
+พิสิทธิ์ วุฒิวงศ์วัฒนา
+พิสิษฐ์ กมลวารินทร์
+พิสิษฐ์ พิริยะเบญจวัฒน์
+พิสุทธิ์ แก้วอำไพ
+พิสุทธิ์ ศุภพร
+พิเชฎร์ บุญมา
+พิเชฐ ติยะพงษ์พิทักษ์
+พิเชฐ วัฒนาเอี๊ยบพันธ์
+พิเชต เรือนทิพย์
+พิเชษฐ เตชะดี
+พิเชษฐ รัตนารมย์
+พิเชษฐ อุยยานุกูล
+พิเชษฐ์ เจริญวรกิจการ
+พิเชษฐ์ ทิพย์โกษัย
+พิเชษฐ์ เพ็ญศรี
+พิเชษฐ์ วิมลธรรมวัฒน์
+พิเชษฐ์ อัครพินท์
+พิเศก มาสังข์
+พิไล ครุฑวณิชนนท์
+พิไลลักษณ์ โกสุมพิทักษ์
+พี ปิโตรเลียม
+พีรนุช เพ่งพานิช
+พีรพงษ์ ลิมป์สุทธิรัชต์
+พีรพล ภูมิวัฒน์
+พีรพันธ์ ศรีสุวรรณผไท
+พีรวัฒน์ ชุณหะนันทน์
+พีระ กอสุวรรณสกุล
+พีระ ทักษะวณิชชา
+พีระ มีแสงนิล
+พีระ หวังวิวัฒน์สิน
+พีระพงศ์ คลองกิจโรจน์
+พีระพงษ์ พระคุณอำนวย
+พีระพล ชาตพุทธิธรกุล
+พีระพล แสงจันทร์
+พีระยุทธ ไทยลิ่มทอง
+พีระศักดิ์ ปิยภาณีกุล
+พีรัตน์ ฮามีดี
+พึงใจ เกียรติสาโรจน์
+พุฒ ดอกไม้จีน
+พุฒธิพงษ์ เสน่หา
+พุดจีบ เฟื่องชื่น
+พุทธชาติ วงศ์สุวรรณ
+พุทธศักดิ์ โอฐยิ้มพราย
+พุธ โคตรใต้
+พู ทวีจิตร
+พูนชัย เอื้องสุภาภรณ์
+พูนทรัพย์ สิทธิพรหม
+พูนยศ บุณยรักษ์
+พูนศรี ธีระปกรณ์กุล
+พูนศรี สุบงกช
+พูนศักดิ์ พสุนนท์
+พูนสมบัติ แซ่อื้อ
+พูนสุข คหะแก้ว
+พูนสุข สันติสวัสดิ์
+พูลชัย กาญจนโรจน์
+พูลทรัพย์ พราหมณีย์
+พูลพิพัฒน์ สงวนสัตย์
+พูลศรี แซ่หั่น
+พูลศรี สุขุมวาท
+พูลศักดิ์ พึ่งประภา
+พูลศิริ อิงตระกูล
+พูลสิน เสนีย์
+พูลสุข เม่นแมน
+พเยาว์ กระดาษ
+พเยาว์ จันทร์งาม
+พเยาว์ แตงอ่อน
+พเยาว์ ปั้นบุญชู
+พเยาว์ ภูษา
+พเยาว์ วงษ์สาลี
+พเยาว์ สินช้าง
+พเยาว์ เอี่ยมวงศ์
+เพชร รอสูงเนิน
+เพชรน้อย เวทยประสิทธิ์
+เพชรรัตน์ ปลื้มอารมย์
+เพชรรัตน์ อุตะปะละ
+เพชรัตน์ พรบวรเกียรติ
+เพชรา วิจิตรเลขการ
+เพชรี ภู่สุข
+เพทาย ทองศรี
+เพทาย หาเรือนชีพ
+เพรียบ หุตางกูร
+เพลิน ผิวเณร
+เพลินจิต วัชรโชติ
+เพลินตา อิ่มอกใจ
+เพลินพิศ แดงไพบูลย์
+เพลินพิศ มหาวนิช
+เพลินพิศ ไหลมา
+เพาพะงา อัสมิมานะ
+เพิ่ม ศรีประพันธ์
+เพิ่มพร รุ่งเรืองชัย
+เพิ่มศรี วัดแก้ว
+เพิ่มศักดิ์ ปิติธนสารสมบัติ
+เพิ่มศักดิ์ อยู่เป็นสุข
+เพียงจันทร์ พันธุรัตน์
+เพียงพร อมรไชย
+เพียงเพ็ญ จึงสำราญ
+เพียงใจ จ่าพันธ์อินทร์
+เพียงใจ มหานนท์
+เพียน บังครัน
+เพียร ศิริโชติรัตน์
+เพียรพร ศรีเพียรผล
+เพียว อภิสิทธิ์ภิญโญ
+เพ็กจู แซ่เอี้ย
+เพ็กเฮี้ย แซ่เตีย
+เพ็ชร ศรีวิชัย
+เพ็ชรรัตน์ อารีรักษ์
+เพ็ชราภรณ์ วสุนธรามาศ
+เพ็ญ เชื้อบุญ
+เพ็ญ แสงโชติ
+เพ็ญจันทร์ จิระสินอนันต์
+เพ็ญจันทร์ ปั้นตระกูล
+เพ็ญจันทร์ ศรีจันทร์ดี
+เพ็ญจิต ลิ่วศรีสกุล
+เพ็ญณีย์ ปิงยอง
+เพ็ญทิพา บุญชูกุศล
+เพ็ญนภา บำเพ็ญเกียรติ
+เพ็ญนิดา ตุลวรรธนะ
+เพ็ญประภา ตรีรุ่งเรืองกุล
+เพ็ญประภา แสนเมืองมา
+เพ็ญพร เตชะพิทักษ์เผ่าพันธุ์
+เพ็ญพรรณ จ้อยรุ่ง
+เพ็ญพรรณ เรี่ยวพานิชกุล
+เพ็ญพักตร์ นันธิราภากร
+เพ็ญพิศ ครุธวีร์
+เพ็ญรัตน์ บุณยศิริกุล
+เพ็ญฤดี พุทธปราโมทย์
+เพ็ญศรี กลิ่นประทุม
+เพ็ญศรี ไข่แก้ว
+เพ็ญศรี จิตต์จง
+เพ็ญศรี ชิดประสงค์
+เพ็ญศรี ณ ระนอง
+เพ็ญศรี โตอนันต์
+เพ็ญศรี นภาศรี
+เพ็ญศรี บูรญะบุญวงศ์
+เพ็ญศรี พระกำกับ
+เพ็ญศรี ภังคานนท์
+เพ็ญศรี รัตนรุ่งชัย
+เพ็ญศรี วงษ์ปาน
+เพ็ญศรี ศรีสำราญรุ่งเรือง
+เพ็ญศรี สาระกุล
+เพ็ญศรี แสงเจริญ
+เพ็ญศรี อำนวยผล
+เพ็ญศิริ คัมภิรานนท์
+เพ็ญศิริ รักษาวงษ์รัตน์
+เพ็ญสินี ต้องสกุลโรจน์
+เพ็ญแข คงพิทักษ์ศิลป์
+เพ็ญแข ภัทรดิลก
+เพ็ญแรม มนูญชัย
+เพ้ง ล้อมเพชรพลอย
+แพรว โตโคกขาม
+แพรวพรรณ รังษีกิจโพธิ์
+โพชนะ มาศเขื่อนขันธ์
+โพธิ์พันธุ์ ใจมีธรรมดี
+ไพจิต วศินปริญญา
+ไพจิตร ชัยพฤกษ์
+ไพจิตร มาดี
+ไพจิตรา ศุขสมาน
+ไพฑูรย์ กันภัย
+ไพฑูรย์ คงคาสุริยฉาย
+ไพฑูรย์ เจนจาคะ
+ไพฑูรย์ แซ่เตี้ยว
+ไพฑูรย์ ทองกระจ่าง
+ไพฑูรย์ บัวคลี่
+ไพฑูรย์ ผลภาษี
+ไพฑูรย์ พูลสวัสดิ์
+ไพฑูรย์ รังษิยาภา
+ไพฑูรย์ วรสัมปุรณะ
+ไพฑูรย์ ศิวะพรชัย
+ไพฑูรย์ สุนทรวัฒน์
+ไพฑูรย์ อ่อนศิริ
+ไพฑูลย์ จรูญเรือง
+ไพบูรณ์ คำบุรี
+ไพบูลย์ กิจทวีสมบูรณ์
+ไพบูลย์ ขาวบริสุทธิ์
+ไพบูลย์ จันทร์ตรี
+ไพบูลย์ ใจตาบ
+ไพบูลย์ แซ่ตั้ง
+ไพบูลย์ ต่ายสกุลทิพย์
+ไพบูลย์ เทพจินดา
+ไพบูลย์ นิลาสน์
+ไพบูลย์ ประไพทอง
+ไพบูลย์ พฤทธิพัฒกุล
+ไพบูลย์ พุ่มอาศัย
+ไพบูลย์ มณีโรจน์
+ไพบูลย์ รังสีกุลพงศ์
+ไพบูลย์ ลีลาภาณุมาศ
+ไพบูลย์ ว่องไวยิ่งเจริญ
+ไพบูลย์ ศรีสันติรัตน์
+ไพบูลย์ สมัครการ
+ไพบูลย์ สุขสันต์
+ไพบูลย์ แสงแก้ว
+ไพบูลย์ อมรอนุกูล
+ไพบูลย์ เอมพันธุ์
+ไพมนา เหล่าขัติยะ
+ไพรรินทร์ ธูปสุวรรณ์
+ไพรวัลย์ เพียรลุประสิทธิ์
+ไพรัก ภู่โสภา
+ไพรัช จันทร์เปล่ง
+ไพรัช แซ่เฮ้ง
+ไพรัช ธรรมแพทย์
+ไพรัช ปานทิพย์อำพร
+ไพรัช ไพบูลย์มั่นคง
+ไพรัช ลี้เจริญ
+ไพรัช ศิริชาติ
+ไพรัช เสวกพิบูลย์
+ไพรัช โอสถเจริญผล
+ไพรัตน์ จรรยหาญ
+ไพรัตน์ ธรรมชาติ
+ไพรัตน์ รัตน์พงษ์โสภิต
+ไพรัตน์ แสวงกิจ
+ไพริน ผลหว้า
+ไพรินทร์ จันทร์มณี
+ไพรินทร์ พ่วงสุนทร
+ไพรินทร์ เสือน้อย
+ไพลิน จิตรเจริญ
+ไพลิน ปาระพงศ์
+ไพลิน ว่องประชานุกูล
+ไพลิน อินทร์สุวรรณ
+ไพศรี ธูปเทียนทอง
+ไพศาล เกียรติเกษมศานต์
+ไพศาล จ๋วงพานิช
+ไพศาล เจิดจำนงวิทยากุล
+ไพศาล เชียงมา
+ไพศาล ตั้งจริยธรรม
+ไพศาล ทั้วสุภาพ
+ไพศาล นิลนที
+ไพศาล ประภาอภิรัตน์
+ไพศาล พรหมมณี
+ไพศาล โพธิ์นิ่มแดง
+ไพศาล ยุ้นพันธ์
+ไพศาล ลาวัณยากุล
+ไพศาล วรโพธิ์
+ไพศาล ศรีเกตุ
+ไพศาล สำราญกิจดำรงค์
+ไพศาล เสรีรักษ์
+ไพศาล อยู่เย็น
+ไพศาล โอนเงิน
+ไพสิฐ จริยะเศรษฐ์
+ไพเราะ เกิดวิชัย
+ไพเราะ ทองใบ
+ไพเราะ รีรัตนชาติ
+ไพเราะ อุ่นนิ่ม
+ไพโรจน์ กาญจนพิบูลย์
+ไพโรจน์ ขจรวัชรา
+ไพโรจน์ จรุงภัสสร์ขจร
+ไพโรจน์ จีนขจร
+ไพโรจน์ ชัยพร
+ไพโรจน์ ซึ้งเกษม
+ไพโรจน์ ตลอดกาล
+ไพโรจน์ ทรัพย์สมบูรณ์
+ไพโรจน์ ธีรเกษตรชัย
+ไพโรจน์ บริบูรณ์
+ไพโรจน์ ประสิทธิ์พร
+ไพโรจน์ พงษ์จินดาวานิช
+ไพโรจน์ พิภักกิจ
+ไพโรจน์ ภัทรสุขเสริม
+ไพโรจน์ เมฆวิภาต
+ไพโรจน์ รุ่งบรรลือศักดิ์
+ไพโรจน์ ลิ่มกาญจนโชติ
+ไพโรจน์ วรรณสถิตย์
+ไพโรจน์ ศรจิตติ
+ไพโรจน์ โศจิศุภร
+ไพโรจน์ สิงห์อุสาหะ
+ไพโรจน์ สุวรรณสุทธิ
+ไพโรจน์ หาญพงษ์ธรรม
+ไพโรจน์ อัตตสัมพันธ์
+ไพโรจน์ โอวาทจรูญจิตต์
+ฟองคำ รุจิแสงอนันต์
+ฟองแก้ว พลนะเดช
+ฟาติมะ เกตุประสิทธิ์
+ฟารีดา เซ็มสมพร
+ฟิลิป ปิ่นสุกาญจนะ
+ฟื้น หิรัญสุขสันต์
+ฟู บุญเพ็ง
+ฟูเชียง แซ่จ๋าว
+เฟื่องฉัตร สุคนธ์ขจร
+เฟื่องลัดดา กิจสนาโยธิน
+ภคพร ภักศรีวงษ์
+ภคินี สรพงศ์ไพรัช
+ภมร ฉ ตระกูล
+ภรณ์พรรณ รัตสิรยากร
+ภรณี พงศ์เลิศนภากร
+ภรณ์เพ็ญ แก้วช่วย
+ภราดร รอดเลี่ยม
+ภวัญญา ล้วนใจสนธิ์
+ภักดี จันทพันธ์
+ภักดี พ่วงภักดี
+ภักดี สุพรพัฒนา
+ภัคพงษ์ กุลชล
+ภัชรี ปิ่นประเสริฐ
+ภัททโก โชติกไกร
+ภัทร์กมล เต็มสุข
+ภัทรพร จารุพัฒน์
+ภัทรภร ธนาเกษมพล
+ภัทร์วรรณ คงอรรถการ
+ภัทรา เชี่ยววุฒิภาค
+ภัทรา พรพงศ์ทวีวัฒน์
+ภัทรา วันดี
+ภัทราพร ซื่อกิตติศักดิ์
+ภัทราภรณ์ เอียสกุล
+ภัทราวุธ พันธุเมธาวงศ์
+ภัทรียา บุญยมโนนุกุล
+ภัสรา พงษ์อุดทา
+ภัสสรา เดชะศิริ
+ภาคภูมิ ชาญพิชัย
+ภาคย์ กรดนิยมชัย
+ภาณี เชิดชื่น
+ภาณี สิริเวชกุล
+ภาณุ บริสุทธิ์
+ภาณุธัช พรหมปัญญากุล
+ภาณุมาศ กุศลลานุกูล
+ภาณุวัฒน์ จำจด
+ภาณุศักดิ์ อินทรรักษา
+ภานุ บุตรศรี
+ภานุมาศ พูนสุขโข
+ภานุวุธ นวลสา
+ภารณี อับดุลลา
+ภารดี โรจนวัฒนวุฒิ
+ภาวณี สมันตเวคิน
+ภาวดี อมรพัชระ
+ภาวนา นราจันทร์
+ภาวนา ศรีอรุณ
+ภาวิณี กลิ่นขจร
+ภาวิณี ทองมาก
+ภาวิณี วชิรปัญญานุกูล
+ภาวิต โตดิลก
+ภาวี มีวัตถา
+ภาสกร จิตตรอง
+ภาสกร เหมกรณ์
+ภิชญรัตน์ วงศ์วสุสิน
+ภิญโญ ขันทอง
+ภิญโญ ธันวารชร
+ภิญโญ รพีพิศาล
+ภิญโญ หิโตปกรณ์
+ภิรมณ์ คงอยู่
+ภิรมย์ ฉายารักษ์
+ภิรมย์ พฤกษชาติเจริญ
+ภิรมย์ สงวนนาม
+ภิเศก ใจอ่อนน้อม
+ภุชงค์ ตัณฑ์ไพโรจน์
+ภุชชงค์ ชาญธนากิจ
+ภู ใจชาย
+ภูมิ โสภาจารีย์
+ภูมิพิชญ์ จรรยาวิจักษณ์
+ภูริดา โทธกานันท์
+ภูวดล เรืองโกสินทร์
+ภูวนารถ อุเทศนันทน์
+ภูษิต ประธานพิพัฒน์
+ภูเก็จ แสดงธรรม
+เภาวนา อินทะแสง
+มงคล กษิติประดิษฐ
+มงคล เขียวผึ้ง
+มงคล จันทร์แสงรัตน์
+มงคล ฉิมเล็ก
+มงคล แซ่กุ่ย
+มงคล ตั้งจิตต์วัฒนา
+มงคล ทับทิมชูสุวรรณ
+มงคล นาคะมา
+มงคล ปาณะบรรจง
+มงคล พ่วงพงศ์
+มงคล ภาสกรจรัส
+มงคล ยืนยงหัตถภรณ์
+มงคล ลิ่วมโนมนต์
+มงคล วินิจเจริญศรี
+มงคล ศิริแสงชัยกุล
+มงคล สีดา
+มงคล แสงวงศ์วาณิชย์
+มงคล อยู่นุช
+มงคล เฮงบุญสุขกุล
+ม่งเซี้ย แซ่ตั้ง
+มณฑริก เดชหนู
+มณฑล ใบบัว
+มณฑล อัศวภัทรากร
+มณฑา จรุงกลิ่น
+มณฑา แซ่เฮ้ง
+มณฑา เนียมศิริ
+มณฑา พุฒตาล
+มณฑา เลิศทนุพงศ์
+มณฑา สันติธัญญาโชค
+มณฑา เหลืองลัญจกร
+มณฑาทิพย์ โตแย้ม
+มณฑิตา อู่ทรัพย์
+มณฑ์ สมพันธ์
+มณพิรา อางนานนท์
+มณี โกศลเมธากุล
+มณี เจริญสุข
+มณี แซ่โค้ว
+มณี ทองเกษร
+มณี บุญประสิทธิ์
+มณี พัฒนะเอนก
+มณี มูฮำมัดโน
+มณี วงศ์กรุด
+มณี ศิริวัฒธนะตระกูล
+มณี สุนทรลิปิกร
+มณี อัศวจินดาวัฒน์
+มณีนาฏ พงศ์ภควัตร
+มณีรักษ์ จินตนาบรรเจิด
+มณีรัตน์ แจ้งแจ่มจิตต์
+มณีรัตน์ ถินปวัติ
+มณีรัตน์ พรกุลวัฒน์
+มณีรัตน์ เลิศสุคนธ์
+มณีรัตน์ สุวรรณภาภรณ์
+มณีวรรณ ณ นคร
+มณีวัลย์ อมรธีระกุล
+มณเฑียร ชัยมิตรเจริญ
+มณเฑียร พูลศิริ
+มณเฑียร อาจบรรจง
+มธุรส บุตรดี
+มนชยา ไกรฤกษ์
+มนณัชชา ชูชาติไทย
+มนต์ชัย โชติหิรัณรัตน์
+มนต์ชัย ไผทรักษาธรรม
+มนต์ชัย วิสุทธิสวัสดิ์
+มนต์ชัย เอี่ยมรัตนชัย
+มนตร์วงศ์ ภัทรวิทย์
+มนตรี แก้วเล็ก
+มนตรี จริยากูล
+มนตรี เจริญรัตน์
+มนตรี ชูนามชัย
+มนตรี ดาวเรือง
+มนตรี แตงเจริญ
+มนตรี ธรรมรังษี
+มนตรี เนียมจีน
+มนตรี ประเสริฐวิทยาการ
+มนตรี พรพจน์ธนมาศ
+มนตรี เพิ่มผลชัยกุล
+มนตรี มานะทัต
+มนตรี รอดสวัสดิ์
+มนตรี ลีลาโสภิณ
+มนตรี วิพันธ์วรพงษ์
+มนตรี ศิริตันติธรรม
+มนตรี สังขวุฒิชัยกุล
+มนตรี สุบรรณพงษ์
+มนตรี หฤไชยะศักดิ์
+มนตรี อังศุธนสมบัติ
+มนตรี เอื้ออมร
+มนต์ เชตมี
+มนทิพย์ วิชัยธนพัฒน์
+มนธิรา เอกบุญยืน
+มนวิภา ประชัญคดี
+มนันย์ บุญยะชัย
+มนัส ขันธิโชติ
+มนัส จันทวิช
+มนัส ชัยสุภา
+มนัส ดีชมจันทร์
+มนัส ทองสะอาด
+มนัส นิ่มนวล
+มนัส ประจักษ์จิตร์
+มนัส พลับบุรี
+มนัส ภาคีธรรม
+มนัส ยอแสง
+มนัส เลิศวัฒนาเสรี
+มนัส ศรีธนสาร
+มนัส สอิ้งทอง
+มนัส สุภาวิตา
+มนัส องค์สรณะคม
+มนัส โอสถจันทร์
+มนัสวี พยัคฆนันทน์
+มนุชญ์ วัฒนโกเมร
+มนู โชติรัต
+มนู ปิ่นภู่
+มนู วาวี
+มนู อัศวเกศมณี
+มนูญ ชูศิริอุทัย
+มนูญ นุตวงษ์
+มนูญ พูลทวี
+มนูญ วิกกมานันท์
+มนูญ หินลอย
+มนูศักดิ์ บุญมาเลิศ
+มยุรา จีรจริยาเวช
+มยุรี กลิ่นขจร
+มยุรี จงอุดมทรัพย์
+มยุรี เฉลิมเขตต์
+มยุรี เดชสมฤทธิ์ฤทัย
+มยุรี ธนาเกียรติภิญโญ
+มยุรี ปิ่นแก้ว
+มยุรี เพ็ชร์พนมพร
+มยุรี แย้มเกษร
+มยุรี วงษ์สมบูรณ์
+มยุรี สถาพรวุฒิคุณ
+มยุรี ไสยสมบัติ
+มยุรี เอี่ยมเจริญ
+มรกต จันทร์ทอง
+มรกต ศยามล
+มรินา ด่านวนิช
+มลฑา พิมพ์เหลี่ยม
+มลผกา สรรเพชดาญาน
+มลฤดี ประสงค์ผล
+มลวิภา ใจหลัก
+มลิ หลีสุขเสริฐ
+มลิวัลย์ แก้วสพาน
+มลิวัลย์ พจนสัจ
+มลิวัลย์ สุขประสาท
+ม่วย แซ่คู
+ม่วย สถิรชวาล
+ม่วยเกี้ย ลาจังหรีด
+ม้วย เหล่าสิริภูมิ
+มอซ์ กามรูดิน
+มะนิตย์ เชื้อนุช
+มะลิ กลิ่นมาลา
+มะลิ จิวะสมหวัง
+มะลิ ด้วงเงิน
+มะลิ นามมนตรี
+มะลิ พิริยะอนนท์
+มะลิ รูปพรหม
+มะลิ สาธุ
+มะลิ อมรินทร์เทวา
+มะลิวรรณ รายณะสุข
+มะลิวัลย์ แซ่ตั้ง
+มะลิวัลย์ วัฒนกิตติพร
+มะหะหมาดราหวี นาปาเลน
+มังกร จีรภัทร์
+มังกร ยาน้อย
+มัจฉรี แซ่เตี๋ยว
+มัณฑนา กู้สุวรรณวิจิตร
+มัณฑนา ธาดาสีห์
+มัณฑนา รัตชะถาวร
+มัณฑนา อยู่ยงค์
+มัด เดชะชีพ
+มัทนา โชควรวัฒนกร
+มัทนา โอสถหงษ์
+มัธยา รวมทรัพย์
+มันทนา ศรสิงห์
+มันโมฮันซิงห์ จาวลาห์
+มั้นฟา แซ่เตียว
+มัลลิกา ชัยสิริโรจน์
+มัลลิกา พงศ์เต็มสุข
+มัลลิกา ศรีวีระวานิชกุล
+มัลลี จงเกษม
+มาก เหมือนจันทร์
+มาณพ รุจนิสรกุล
+มาณี บุญหลง
+มาดี แซ่โค้ว
+มานนท์ โตวงศ์ศรีเจริญ
+มานพ ขำชื่น
+มานพ จิตตเกษม
+มานพ ซับซ้อน
+มานพ ทรงเสี่ยงชัย
+มานพ นิ่มนวลอนันต์
+มานพ ปิยะสอน
+มานพ พึ่งอำนวย
+มานพ มูฮำหมัด
+มานพ ลีลาหิรัญ
+มานพ ศรีสงวน
+มานพ สุขวงษ์ศิลป์
+มานพ เหล่าขวัญสถิตย์
+มานวิภา มาศพงศ์
+มานะ งามวัชรสกุล
+มานะ เชี่ยวสงวน
+มานะ ทรัพย์งามศิริ
+มานะ บุญประเสริฐ
+มานะ พิมพ์สมุทร
+มานะ รัตนงามกุล
+มานะ วิสุทธิ์สมุทร
+มานะ สีผ่อง
+มานะ อินทรพินทุวัฒน์
+มานัต ยอดมนต์
+มานัส รุ่งเทียม
+มานิจ ทิมพัฒนพงศ์
+มานิดา รัชดาทิตย์
+มานิต เจียรดิฐ
+มานิต นิลเขตร์
+มานิต ยศอนันตกุล
+มานิต สุจริตวัฒนศักดิ์
+มานิตย์ กาหลง
+มานิตย์ จุนทการ
+มานิตย์ ดิษฐวิศาล
+มานิตย์ นาคไทย
+มานิตย์ เผือกวัฒนะ
+มานิตย์ มีชนะ
+มานิตย์ วงศ์กิตติพัฒนา
+มานิตย์ สัจจเดชะ
+มานิตย์ อนุรัตน์พานิช
+มานิสา เมฆศิริกุล
+มานีรัตน์ มัทธวรัตน์
+มารยาท จัตุรงค์
+มารศรี จันทร์เมือง
+มารศรี ยะอุโมงค์
+มารศรี อัสวะวิสิทธิ์ชัย
+มาริษ ท่าราบ
+มาริสา กาญจโนภาส
+มาริสา สุทธิวรรณารัตน์
+มารุจา สุรพันธุ์
+มารุต สุนทรศิริบุญญา
+มาลัย ขำเจริญพร
+มาลัย ชมพูบุตร
+มาลัย ดอกบัวหลวง
+มาลัย นาให้ผล
+มาลัย พรหมสวัสดิ์
+มาลัย ยังสว่าง
+มาลัย ศรีช้างอิ่ม
+มาลัย แสงงิ้ว
+มาลัยกรอง มูลศาสตร์
+มาลา แซ่โง้ว
+มาลา หิรัญฤทธิ์
+มาลิน ชลานุเคราะห์
+มาลินี กำเนิดดิษฐ์
+มาลินี ชอุ่มพฤกษ์
+มาลินี ทรัพยวณิช
+มาลินี แป้งประสิทธิ์
+มาลินี ยอดโพธิ์ทอง
+มาลินี ศรีสุวัจรีย์
+มาลินี หฤทัยสิริรัตน์
+มาลี กลั่นจังหรีด
+มาลี กุนะวงษ์
+มาลี ขันติวงวาร
+มาลี เครือเฉลิมพันธ์
+มาลี จันใจเด็ด
+มาลี เจริญเกษกิจ
+มาลี ชัยวนิชยา
+มาลี เชื้อศิริ
+มาลี แซ่ตัน
+มาลี แซ่เต็ง
+มาลี ดำรงกิจกุลชัย
+มาลี ตันติปิฏก
+มาลี ทวีศรี
+มาลี ธรมธัช
+มาลี นิภากรพันธ์
+มาลี บุญรอด
+มาลี ปานจันทร์
+มาลี พงศ์สำราญ
+มาลี พันผึ้ง
+มาลี แพร่ศรีตระกูล
+มาลี มนต์วิเศษ
+มาลี ยวงเงิน
+มาลี รัตนานนท์
+มาลี ลิมปิยากร
+มาลี วงศ์แหลมทอง
+มาลี วิลัยสัมพันธ์
+มาลี ศิริคงสุวรรณ
+มาลี สร้างความคิด
+มาลี สินพานิช
+มาลี สุรัตนชัยการ
+มาลี หนึ่งดวงกมล
+มาลี อติแพทย์
+มาลี อาทร
+มาลี อุ้ยอิ่มทรัพย์
+มาลีพันธ์ รัฐสมบูรณ์
+มาลีรัตน์ ศุภทนต์
+มาวิน ศรีมณีพันธ์
+มาเรีย วรรณาพงศ์
+มาเรียม บูรณะรุ่งเรืองกิจ
+มาเรียม สุทธิศีลธรรม
+มาโนช กำจัดภัย
+มาโนช ชัยประเสริฐ
+มาโนช ธรรมรัชสุนทร
+มาโนช เปรมแก้ว
+มาโนช มีศรี
+มาโนช วิชิตวาสุเทพ
+มาโนช แสงสุข
+มาโนชญ์ ชนะภัย
+มาโนชญ์ อรุณรัศมี
+ม้าเสี่ยง แซ่ม้า
+มิ่งขวัญ เมตตากรุณากุล
+มิตร นาคเสน
+มิตรภาพ บุญชูช่วย
+มิ่น เหล่าชาญกิจวนิช
+มี ทองเรือง
+มีชัย นะรา
+มีชัย หงษ์พานิช
+มีนา โรจน์วิชชา
+มีศิริ กิจไพศาลดำรง
+มุก บุญยืน
+มุกดา ฉัตรแก้ว
+มุกดา เทศบรรเทิง
+มุกดา มั่นศิริ
+มุกดา ศิลาโรจน์
+มุกดา อิทธิธานันท์
+มุ่งมุ้ย แซ่หยิน
+มุทิตา ถนอมทรัพย์
+มุยเตียง ศิริอัครกรกุล
+มุ่ยเค็ง แซ่เฮ้ง
+มุ้ยง้อ แซ่โง้ว
+มุสตาฟา มะหะหมัด
+มูหะหมัด เสือสมิง
+มโน จงธนูธรรม
+มโนรส ยอดยิ่ง
+เมตตา เกิดนาค
+เมตตา ปิตยานนท์
+เมตตา สิทธิสุวรรณ
+เมทินี ดาราพัตร
+เมธา แซ่เฮ้ง
+เมธา วงศ์วานิช
+เมธาณี งามทวีวิวัฒน์
+เมธินี ทรัพย์ประเสริฐ
+เมธี จรูญประสิทธิ์พร
+เมธี บัวศรี
+เมธี รัตนตั้งตระกูล
+เมธี หงษ์ทอง
+เมษฐรัตน์ มนเทียรทอง
+เมี่ยวจิง แซ่อื้อ
+เมี้ยวหยิ้น แซ่กอ
+เม่งซก แซ่จิว
+เม้ง แซ่ฉั่ว
+แมน ฉายานนท์
+แมรี่ แวนดา
+แม้นมาตร แอ้นชัยภูมิ
+โมฬี คงกลาง
+ไม นวลเนตร
+ไมตรี ชูมณี
+ไมตรี บัวเนตร
+ไมตรี เลิศเพียรพิทยกุล
+ไมตรี หาญธนวุฒิชัย
+ไม้ ศรีสง่า
+ยง เตชะพงศธร
+ยงค์ชัย ทศพลอภินันท์
+ยงชัย คุณธรรมดี
+ยงยศ ปริพฤติพงศ์
+ยงยุทธ กิจพงษ์นิกร
+ยงยุทธ ฆังนิมิตร
+ยงยุทธ ใจเจริญธรรมกุล
+ยงยุทธ แซ่เตื้อง
+ยงยุทธ ถีระวงศ์
+ยงยุทธ นาคะพงศ์
+ยงยุทธ ปัญญาสกุลวงศ์
+ยงยุทธ พุทธสุวรรณ
+ยงยุทธ เมตะศิริ
+ยงยุทธ ลอยเมฆ
+ยงยุทธ วิเชียรสรรค์
+ยงยุทธ สมิทธิเดชกุล
+ยงยุทธ สุวรรณเพ็ชร
+ยงยุทธ อ่องบางน้อย
+ยงยุทธิ์ วรวุฒิ
+ยงวัฒน์ บูรณะปฏิมากร
+ยงสิน เตชามหชัย
+ย่งฮวด แซ่ลี้
+ย้ง แซ่ลี้
+ยนต์ บุญเหลือหล่อ
+ยมโดย ชลายนนาวิน
+ยรรยง บุญสมพงษ์
+ยรรยง ศุภวิฑูรย์
+ยรรยงค์ พลศิริ
+ยวง ลอยสา
+ย้วน พันนก
+ยศ สมบูรณ์จันทร์
+ยศราวดี เปี่ยมอรุณ
+ยอด กลิ่นกลั่น
+ยอด สันตินิเวศน์
+ยอดธง เจริญจงวิทยา
+ยอดศักดิ์ หล่อจิตต์เสียง
+ยะ เกิดอยู่
+ยักโมฮันซิงห์ ยักโมฮันซิงห์
+ยัสบีรซิงห์ ยัสบีรซิงห์
+ยาดา เศวตตานุสรณ์
+ยาใจ แซ่ลี้
+ย้า เอกประเสริฐ
+ยิ่งยง แซ่ลิ้ม
+ยิ่งยศ บุนนาค
+ยิ่งศักดิ์ ปัจชามาตย์
+ยิน เสมอเชื้อ
+ยินดี พรมเกตุ
+ยินดี อินทรมงคล
+ยิ้ม นาสมนึก
+ยิ้ว หลิวประเสริฐ
+ยี่สุ่น ศุกระวณิช
+ยืนยง นุภาพ
+ยุกยิ้น เชียงฉิน
+ยุคลธร โออดิศัย
+ยุทธ เจริญคติธรรม
+ยุทธ หนุนภักดี
+ยุทธชัย น้ำทิพย์
+ยุทธนันท์ เกษียรธาดานนท์
+ยุทธนา จริงใจกุล
+ยุทธนา ดุจติปิยะ
+ยุทธนา บุณยะวุฒกุล
+ยุทธนา โภคประเสริฐ
+ยุทธนา วานิชอังกูร
+ยุทธนา สุจินตวงษ์
+ยุทธนา เอี่ยมสินธุ์
+ยุทธพงษ์ ฉ โรจน์ประเสริฐ
+ยุทธพล ไกรอาบ
+ยุทธศักดิ์ แซ่โง้ว
+ยุทธศิลป์ เกษรศุกร์
+ยุธิตา แซ่เฮ้ง
+ยุพดี กาญจนา
+ยุพดี ชีพอารนัย
+ยุพดี บริสุทธิ์
+ยุพดี รักการดี
+ยุพดี สนใจยุทธ
+ยุพดี เอี่ยมศุภสวัสดิ์
+ยุพยงค์ พิริยะกิจ
+ยุพา ก๋งน้อย
+ยุพา ขันทอง
+ยุพา จิตรโสภาภรณ์
+ยุพา ชุ่มชาติ
+ยุพา แซ่โค้ว
+ยุพา ทิพยพรเกษม
+ยุพา บัวธรา
+ยุพา เปี๊ยะขายคล่อง
+ยุพา เพ็ญสายใจ
+ยุพา ยิ่งดำนุ่น
+ยุพา เลอยศเกรียงไกร
+ยุพา ไวทยะวิญญู
+ยุพา สามุติอุดมรัตน์
+ยุพา แสงเสริม
+ยุพา อานุภาพมงคล
+ยุพาพร พรหมโชติ
+ยุพาภรณ์ กลั่นกลีบ
+ยุพาวดี ยินดียั่งยืน
+ยุพิน กำเหนิดวัน
+ยุพิน คล้ายสุบรรณ
+ยุพิน จินดาสันต์
+ยุพิน ชื่นสวัสดิ์
+ยุพิน ดอนอุไพร
+ยุพิน ทรงประเสริฐกุล
+ยุพิน เธียรพาณิช
+ยุพิน บุตรเนียม
+ยุพิน พนาชื่นวงศ์สกุล
+ยุพิน ไพรินทราภา
+ยุพิน เมืองวิลัย
+ยุพิน ลีสุวิชากร
+ยุพิน ศรีชัย
+ยุพิน สฤษดิวุฒิ
+ยุพิน สุทธิสุนทร
+ยุพิน หาญวงศ์
+ยุพิน อึ๊งดำรง
+ยุพเยาว์ ศิริเอี้ยวพิกูล
+ยุภา เจ๊ะเลาะ
+ยุภา แสงเดช
+ยุภี เคหะรอด
+ยุรี แซ่โอ้ว
+ยุวดี กระจ่างใจ
+ยุวดี เจนรักมาตุภูมิ
+ยุวดี เตชะเชวงกุล
+ยุวดี ปรมางกูร
+ยุวดี มิตรภักดี
+ยุวดี วัฒนพิทักษ์กุล
+ยุวดี แสงด้วง
+ยุวนา ลวเวชกุล
+ยุวภา บุญเลิศ
+ยุวลักษณ์ เกียรติปัญญา
+ยุเพ็ญ ชูศักดิ์แสงทอง
+ยูซบ อับดุสลาม
+ยูสบ หลงจิ
+ยู่เตียง แซ่เซีย
+เยา ไลไว
+เยาวดี แย้มจุไร
+เยาวนิจ นิติธรรม
+เยาวนุช พุทธิพิรกุล
+เยาวภรณ์ สิริวโรธากุล
+เยาวภา ทัพรัตน์
+เยาวภา วิลัยปาน
+เยาวมาลย์ ทองพรหม
+เยาวรัตน์ ความชอบ
+เยาวลักษณ์ กรันตานนท์
+เยาวลักษณ์ ไชยฤทธิ์
+เยาวลักษณ์ บุญญาวิวัฒน์
+เยาวลักษณ์ มณีโชติ
+เยาวลักษณ์ วงศาโรจน์
+เยาวลักษณ์ สุวรรณลภาพร
+เยาวเรศ กะตากูล
+เยาวเรศ วรรณสุข
+เยียม พุ่มพฤกษ์
+เยี่ยม อินทรกำแหง
+เยื้อน เกตุลอย
+เย็น กองโฮม
+เย็นจิต จิราพัฒนพงศ์
+เย็นจิตร์ ประทีปแสงรัตน์
+แย้ม โกมินา
+โยธิน คงเจริญ
+โยธิน พงศ์พัชราพันธุ์
+โยธิน ศิริโสภณ
+ใย ปัถวี
+รจนา จักรฤทธิพงศ์
+รจนา พาดี
+รจนา แสงโสภณ
+รจิต รักยอด
+รณ สาสนสิทธิ์
+รณชัย นิติชาคร
+รณชัย เอนกอมรชัย
+รณรงค์ โฉมศุภางค์
+รณสิทธิ์ รัตนเกษตร
+รติพรรณ รัตนิต
+รพินทร์ วิชชุไตรภพ
+รพีพรรณ เฉลิมชัยโกศล
+รพีวรรณ สัมปชัญญะ
+รมย์ชลี บุตรไชย
+รวงทอง ส้มเกลี้ยง
+รวมพร ภานันทน์
+รวยริน วจะโนภาส
+รวิวรรณ ไชยวสุ
+รวีนุช คุณธรรมสถิต
+รวีวรรณ พงษ์ดนตรี
+รวีวรรณ อารีธรรมศิริกุล
+รสนา วัฒนาสุนทรพงศ์
+รสรินทร์ กนกอุดม
+รสสุคนธ์ ตามศรี
+รสสุคนธ์ ศรีติมงคล
+รอง มูลมณี
+รอฟะห์ เซ็นหลวง
+รอเบี๊ยะ ยิ่งนิยม
+ระตา อินทร์แก้ว
+ระบิล โสภณพนิช
+ระพี ประสพชัย
+ระพีพรรณ ขอบชิต
+ระพีพรรณ ลำจวนจิตต์
+ระพีพันธ์ อารีย์
+ระย้าทิพย์ อินทรทูต
+ระวิ บุญผดุง
+ระวิวรรณ ประทุมพวง
+ระวี นันทสำเริง
+ระวีวรรณ เจนการ
+ระวีวรรณ ภัทรประภา
+ระวีวรรณ์ ตาชูชาติ
+ระเบียบ กิจกล้า
+ระเบียบ จิตรบำรุง
+ระเบียบ ทับจันทร์
+ระเบียบ ปิ่นแก้ว
+ระเบียบ มานิกพันธุ์
+ระเบียบ วรสุขสังข์
+ระเบียบ เสือสมิง
+ระเวง ลัยศรี
+รักชนก แซ่เจีย
+รักพงษ์ วงษ์จำนงค์
+รักษ์ กะรีรัต
+รักษ์ อ่อนนาง
+รังทอง วีระพัฒน์
+รังษี เทศพันธ์
+รังสรรค์ กัมสุวรรณ
+รังสรรค์ จุฬาธรรมกุล
+รังสรรค์ ตันติเวชกุล
+รังสรรค์ ปัญญาภา
+รังสรรค์ มิตรพันธ์พานิชย์
+รังสรรค์ วิบูลพัฒนะวงศ์
+รังสรรค์ สุนทรนันท์
+รังสรรค์ เอี่ยมจำรัส
+รังสิต เดชะกุล
+รังสิมันต์ ฤกษ์อินทรอารีย์
+รังสิมา แสงหิรัญวัฒนา
+รัช วรรณวัฒนะ
+รัชฎา จิตติวรรณ
+รัชฎา สิริวัฒนวงศ์
+รัชฎาวรรณ ยะตินันท์
+รัชดา เคยมีทรัพย์
+รัชดา รุ่งเศวตกุล
+รัชดาพร สุขเกษมรัตน์
+รัชตฤดี รุจิณรงค์
+รัชนิกร แสงกระจ่าง
+รัชนี กิตติรังสี
+รัชนี คาจิจิ
+รัชนี จิรทวีวงศ์
+รัชนี ชวตานนท์
+รัชนี แซ่ลิ้ม
+รัชนี ตรีบัญชาวงศ์
+รัชนี ทับละคร
+รัชนี นาคสุข
+รัชนี บุตรสี
+รัชนี แผ่ประเสริฐ
+รัชนี พูลทรัพย์
+รัชนี มาฬมงคล
+รัชนี รัตนโกวิท
+รัชนี ลือวิมลกฤษฐ
+รัชนี วิรัชนีย์
+รัชนี สกุลสุรรัตน์
+รัชนี สุกษมรัตน์
+รัชนี แสงสีทอง
+รัชนี อภิชัยกุล
+รัชนี เอกนวาระชาติ
+รัชนีกร มั่งมีผล
+รัชนีบูลย์ มาไพศาลย์
+รัชนีภรณ์ แซ่ลิ้ม
+รัชนีวรรณ ก๋อยสุวรรณ
+รัชนีวรรณ ละออเอี่ยม
+รัชพงษ์ ศิริมี
+รัชรี แซ่ลิ้ม
+รัญจวน วงษ์กล้าหาญ
+รัฐการ เกิดดี
+รัฐพล งามสมุทร
+รัฐาภิรักษ์ ตัณฑประศาสน์
+รัตติกร ตั้งพานทอง
+รัตติพร กรสุทธิโสภณ
+รัตติยา พูลอร่าม
+รัตน์กุล ณ วิทยานันท์
+รัตน์ชฎา พันธ์นิกุล
+รัตนมณี แพทย์พันธ์ศรี
+รัตนะ คุณานพรัตน์
+รัตนา กลั่นแก้ว
+รัตนา กุศล
+รัตนา เขียนภักดี
+รัตนา งามขำ
+รัตนา จิตต์จารึก
+รัตนา ใจปาน
+รัตนา ชินวัฒนา
+รัตนา แซ่ตั้ง
+รัตนา ณ ตะกั่วทุ่ง
+รัตนา ตารพล
+รัตนา ทองคล้าย
+รัตนา ธีระมงคลกุล
+รัตนา เนียมนำผล
+รัตนา เบ็ญจโภคี
+รัตนา เปลี่ยนสี
+รัตนา พลอยประเสริฐ
+รัตนา พุกบางจาก
+รัตนา ภาสวรวิทย์
+รัตนา มีลักษณะ
+รัตนา รักษ์ชน
+รัตนา โรจน์มหามงคล
+รัตนา เลี่ยวปรีชา
+รัตนา วสุวานิช
+รัตนา เวียงธีรวัฒน์
+รัตนา ศิรินรากรณ์
+รัตนา สมบูรณ์นิธิผล
+รัตนา สีวิสุทธิ์
+รัตนา สุวัชรีรักษ์
+รัตนา หาญพลาชัย
+รัตนา อ่องเพ็ชร์
+รัตนา อุชุภาพ
+รัตนาพร คุ้มพงศ์เจริญ
+รัตนาภรณ์ จึงสงวนสิทธิ์
+รัตนาภรณ์ ประยูรโภคราช
+รัตนาภรณ์ ศรีนาราง
+รัตนาวดี ตันตะปาล
+รัตน์ แก้วกูร
+รัตน์ พานิชพันธ์
+รัตน์ เหลืองศุภโชค
+รันดร เหล็กยัง
+รัมภา พระรักษา
+รัศมี คุณประเสริฐกุล
+รัศมี เทพดลไชย
+รัศมี ยิ่งเจริญกอบกิจ
+รัศมี สุวรรณผ่องใส
+รัสมี คำแหงพล
+ราชปาลซิงห์ นารัง
+ราชันย์ เพ็ชรรัตน์
+ราชินี นวเจริญวงศ์
+ราณี ปูรณโชติ
+ราตรี กลิ่นหวล
+ราตรี จตุโชติชวาลุล
+ราตรี แซ่เลี้ยง
+ราตรี นันภักดี
+ราตรี พงศ์พันธ์ศักดา
+ราตรี มั่นจิตต์
+ราตรี ไวทยินทร์
+ราตรี สุ่มมาตย์
+รานี เงินถาวร
+รามฤทธิ์ เทวกุล
+ราวิน อนันต์ทรงวิทย์
+ราศรี ศรีรัตนกูล
+ราเชนทร์ ชาญนิติ
+ราเมศ บินแอ
+รำพวน ปรากฏวงษ์
+รำพึง นิลสุวรรณ
+รำพึง สุขเจริญ
+รำเพย ภาสพันธ์
+รำไพ แซ่ลิ้ม
+รำไพ เรือนทิพย์
+รำไพ อุฬารางกูร
+รินชัย ชัยวรพร
+ริวโก๊ะเคียว ถิตะชัย
+รื่น สะเนาว์
+รุ่ง ชมชื่น
+รุ่งกานต์ พืชสิงห์
+รุ่งตวัน ตันรัตนวงศ์
+รุ่งทิพย์ ตันตระภิรมย์
+รุ่งทิพย์ มณีสังข์
+รุ่งทิพย์ สุเรนทรารักษ์
+รุ่งทิวา ชาญพิทยานุกูลกิจ
+รุ่งทิวา พิภพไชยาสิทธิ์
+รุ่งทิวา สุนา
+รุ่งนภา คงสวัสดิ์
+รุ่งนภา แซ่เอี้ย
+รุ่งนภา บุญชื่น
+รุ่งนภา มณฑาทอง
+รุ่งนภา วาสนาดำรงดี
+รุ่งนภา แสวงผล
+รุ่งพิทยา วัลย์ศรี
+รุ่งรวี ศรีวิลัย
+รุ่งรัฐ กิตติชัยณรงค์
+รุ่งรัตน์ พจน์ธนมาศ
+รุ่งรัตน์ สุนทรวรเชษฐ์
+รุ่งฤดี บุญเจริญทวีสุข
+รุ่งฤทัย รอดโพธิ์ทอง
+รุ่งศักดิ์ แป้นใหญ่
+รุ่งอรุณ กรองการุณย์
+รุ่งอรุณ โพธิ์นิมิตร
+รุ่งเกียรติ ปิยศุภกิจ
+รุ่งเรือง ยืนยงค์
+รุ่งโรจน์ กรรณสูต
+รุ่งโรจน์ โชติประกายเกียรติ
+รุ่งโรจน์ บุญซื่อ
+รุ่งโรจน์ เรืองฤทธิ์
+รุ่งโรจน์ สุพุทธิไกร
+รุ้งทอง คุณประภากร
+รุ้งลดา หุ่นสวัสดิ์
+รุจจรินทร์ รินทระ
+รุจา สุขมาลจันทร์
+รุจิรัตน์ นิติสุพรรัตน์
+รุจิรา เที่ยงอรุณ
+รุจิรา ศรจิตต์
+รุจิเรก ธันวานนท์
+รุจี เพ็ชรนิล
+รุน องอาจ
+เรณุมาศ ฟองเพ็ชร
+เรณู งามขำ
+เรณู ซื่อตรง
+เรณู ธนสิน
+เรณู ปิตินันท์
+เรณู มหาชานิกะ
+เรณู ลี้ธีระกุล
+เรณู เศวตเลข
+เรณู สุไลมาน
+เรณู เอื้อเฟื้อ
+เรวดี ไชยาคำ
+เรวดี บุญเลิศ
+เรวดี เลิศชัยวรกุล
+เรวดี เหลี่ยมไทย
+เรวัต ง้าววิเศษ
+เรวัต เพ็ชรรัตน์
+เรวัตต์ วรรณสินธ์
+เรวัตร สินธุสอาด
+เริง ขำสุข
+เริงชัย วงษ์ดี
+เริงฤทธิ์ นันทนาจารย์กุล
+เริงศักดิ์ สมพงษ์
+เริ่มรจิต ด้วงสำราญ
+เรียม เกษสาคร
+เรียม ภูบาล
+เรียมรัตน์ เกตุกาญจน์
+เรืองกิจ เหรียญกมล
+เรืองชัย รอดรัตน์
+เรืองยศ ขาวสอาด
+เรืองรัตนา อุนะพำนัก
+เรืองวิทย์ จุลกองฮ้อ
+เรืองศักดิ์ จารุกิจโสภณ
+เรืองศักดิ์ ส่งไพศาล
+เรืองเกียรติ เชาวรัตน์
+เรืองไร พูนพานิช
+เรไร จิรศักดิ์ทวี
+แรงรัฐ กวียะ
+โรจนี เมฆประเสริฐวิทย์
+โรม คงเจาะ
+ไรวรรณ สายสกุล
+ฤดี กมลมาศ
+ฤดี ลิ่มทองน้อย
+ฤดีรัตน์ ชีพสุทธา
+ฤทธิชัย นิยมโชค
+ฤทธิรงค์ ทวีธนวาณิชย์
+ฤทธิ์ เชื้อชัย
+ฤทัย พันธุเดช
+ฤาชุตา อัมพุช
+ลดาพรรณ พิศลพูล
+ลดาวัลย์ จินดาวงษ์
+ลดาวัลย์ เผื่อนน้อย
+ลดาวัลย์ ศรีกาญจนา
+ลบ นาดอน
+ลมัย แก้วพันตา
+ลมัย มนาปี
+ลมาด พลเรือง
+ลมูล ทองชื่น
+ลลนา ดีสมสุข
+ลลิตตา สาธุการ
+ลลิสา นามสุดใจ
+ล้วน บุษบา
+ล้วน หมวดสันเทียะ
+ลอย หาญณรงค์
+ลออ บูรณศิริ
+ลออ หอยศรีจันทร์
+ลออศรี บรรจงศิลป
+ละดา สนลอย
+ละม่อม เนตตะสูต
+ละม่อม แสงสุวรรณ
+ละมัย ทองยั่งยืน
+ละมัย รักการ
+ละมัย อารมย์ดี
+ละม้าย พฤกษ์สุนันท์
+ละมุน เปล่งวัน
+ละมูล วงศ์สุวรรณ
+ละออ คูณสินทวีกุล
+ละออ ธเนศธาดา
+ละออ เพ็ญสมบูรณ์
+ละออ วิจิตร
+ละออ อยู่ยืนยง
+ละออง ชะเนติยัง
+ละออง ปานเม่น
+ละออง วงษา
+ละอองดาว เกื้อกูล
+ละออศรี สาเอี่ยม
+ละเมียด ทับทิมทอง
+ละเมียด เลาหพันธุ์สวัสดิ์
+ละเอียด กลิ่นลำดวน
+ละเอียด จันทะวงศ์
+ละเอียด ด้วงโต
+ละเอียด นุ้ยเล็ก
+ละเอียด พิลึก
+ละเอียด เรืองศรี
+ละเอียด สารจันทร์
+ละเอียด เอี่ยมวิจารณ์
+ลักขณา กรรโมปกรณ์
+ลักขณา ช้างแจ้ง
+ลักขณา น้อยปรีชา
+ลักขณา โพธิกุล
+ลักขณา เวฬุสุวรรณ
+ลักขณา อภิวัฒนพงศ์
+ลักษ์คณา ธนะปักษ์
+ลักษณา จารุแสงไพไรจน์
+ลักษณา ปิ่นปลื้มจิตต์
+ลักษณา ศรีเชาวรัตน์
+ลักษณี ศรีสถาพร
+ลักษณ์ อภิชาติธรรม
+ลักษมี ไพบูลย์
+ลัคนา กันตระวงศ์
+ลั้ง แซ่คู
+ลั้งเฮียง แซ่โก
+ลัดดา กาญจนกันทร์
+ลัดดา แก้วรัศมีวงศ์
+ลัดดา คุ้มเกรง
+ลัดดา จิตต์อ่อน
+ลัดดา ชลไพรพิมลรัตน์
+ลัดดา ซอสุขไพบูลย์
+ลัดดา แซ่อึ้ง
+ลัดดา ดีสั้น
+ลัดดา โต๊ะทอง
+ลัดดา ธรรมาภิรานนท์
+ลัดดา นุชเปลี่ยน
+ลัดดา ปฏิบัติ
+ลัดดา เผ่าบุญมี
+ลัดดา พึ่งพัฒน์
+ลัดดา มงคลนัฎ
+ลัดดา ยงไสว
+ลัดดา รุ่งวิตรี
+ลัดดา วงศ์ละคร
+ลัดดา วิมุกตายน
+ลัดดา ศิริงะ
+ลัดดา สัมฤทธิเวช
+ลัดดา สุนทราวงศ์
+ลัดดา หวังมี
+ลัดดา อับดุลลาใบ
+ลัดดา เอิบอิ่ม
+ลัดดาวรรณ จิตรดา
+ลัดดาวรรณ์ พุ่มวิเศษ
+ลัดดาวัลย์ งามประมวญ
+ลัดดาวัลย์ แซ่นิ้ม
+ลัดดาวัลย์ นนทะนาคร
+ลัดดาวัลย์ พลอยเพ็ชร
+ลัดดาวัลย์ ยุทธนาสิริกุล
+ลัดดาวัลย์ ศรีรัตนโชติช่วง
+ลัดดาวัลย์ สุเมธาศร
+ลัดพลี สินธุโสภณ
+ลั่นทม ลีพันแสง
+ลาน วงศ์งามกนก
+ลาลีวัณย์ บุนนาค
+ลาวัณย์ ไชยบูรณะพันธ์กุล
+ลาวัณย์ ฤทธินนท์
+ลาวัลย์ กันชาติ
+ลาวัลย์ โชติพันธ์
+ลาวัลย์ บินสุมัน
+ลาวัลย์ แย้มประภา
+ลาวัลย์ ศุขเทวา
+ลาวัลย์ อินทรดิษฐ์
+ลำจวน บุญเข็ม
+ลำดวน กรุดพันธ์
+ลำดวน เตชะเสน
+ลำดวน เพ็ชรกลับ
+ลำดวน สิมะขจรบุญ
+ลำพร คำมา
+ลำพัง อุดม
+ลำพู สืบสว่างกุล
+ลำภู ศรีภคากร
+ลำยอง นภนที
+ลำระ ทับเปลี่ยน
+ลำเจียก รัตรสาร
+ลำเพย เมฆประสาท
+ลำใย จริตชีวะ
+ลำใย ปานเรือง
+ลำใย สุวรรณโชติ
+ล้ำ ใจเก่งกิจ
+ลิขิต ชวศิริ
+ลิขิต รัตนพงศ์
+ลิดา ตันติจรรยานนท์
+ลินดา จิรประภากร
+ลินดา วีรพันธุ์
+ลิ้นจี่ ขันทองดี
+ลิ้นจี่ สมิตินันทน์
+ลิ่มชิว แซ่ลิ้ม
+ลิ้ม สุขวิทยากุล
+ลิลี่ หงส์สุขพันธุ์
+ลี สุขแสงใส
+ลีต้า กิจสวัสดิ์
+ลีลา ลิน
+ลีฮั้ว ศิริชาตชัย
+ลี่เค็ง แซ่ตั้ง
+ลี่ อยู่ประสิทธิ์
+ลือชัย ไพโรจน์พุทธิคุณ
+ลือพงษ์ โพธิ์เจริญ
+ลุ้ย โตตรึงทรัพย์
+ลูกชิ้น หงษ์ทอง
+เลขา เพชรเสนา
+เลอพงษ์ เรืองวานิช
+เลอศักดิ์ สถิตย์วิมล
+เลาหนุวัติ เลาหนุวัติ
+เลิศ ชื่นไม่วาย
+เลิศ ระหา
+เลิศชัย คล่องธนกิจ
+เลิศชาย ค้าผลดี
+เลิศฤทธิ์ ตั้งก่อสกุล
+เลิศวิทย์ โรจน์ขจรนภาลัย
+เลิศศิลป์ คีรี
+เลียงชัย อรุณกิจเจริญ
+เลี่ยงคิม แซ่อั๊ง
+เลี่ยงเฮ็ง แซ่ตั้ง
+เลี้ยง แซ่เตียว
+เลื่อน กฤษณกรี
+เลื่อน สมดี
+เล็ก กุลกิจกำจร
+เล็ก จตุพรหมวงศ์
+เล็ก ช้างเผือก
+เล็ก แซ่ลี้
+เล็ก ดอกสายหยุด
+เล็ก ทรัพย์แสนดี
+เล็ก นาสุวรรณ
+เล็ก ป้อมชูแก้ว
+เล็ก พีรพลานันท์
+เล็ก เมธีกุล
+เล็ก ลิ้มปิกรณ์
+เล็ก ศรีกลิ่นสุวรรณ
+เล็ก สาตรนนทรีย์
+เล็ก แสงใสแก้ว
+เล็ก อักษรานุวัตร
+เล็บ วงษ์เจริญ
+เล้ง แซ่แต้
+แล้ม ภิรมย์ม่วง
+ไล่ฮก แซ่เบ๊
+วงจันทร์ ไทรงาม
+วงศ์จันทร์ วิเศษศร
+วงศ์ศิริ พรหมชนะ
+วงศ์ จำนงวิทย์
+วงษ์เดือน ชนประชา
+วงเดือน งามโพธิ์ทอง
+วงเดือน ปิ่นกุมภีร์
+วงเดือน สุขเนตร
+วชิร นิยมศิลป
+วชิระ ธรรมหทัย
+วชิรา กิ่งแก้ว
+วชิรา หลีละเมียร
+วชิราวัลย์ วิทยพานิช
+วณิชา โอทกานนท์
+วณี วิจิตร
+วดีกรณ์ สุขจารุวรรณ
+วนรัชต์ ตั้งคารวะคุณ
+วนาลี จิตตานนท์
+วนิชา รัตนะวิศ
+วนิดา กาหลิบ
+วนิดา ขันธสิทธิ์
+วนิดา จงปิยะเลิศ
+วนิดา จุลสุวรรณ
+วนิดา ชัยชัชวาล
+วนิดา ซึงทอง
+วนิดา ฐานะสถิรกุล
+วนิดา ติลกานันท์
+วนิดา เทพพิทักษ์พงษ์
+วนิดา นิมมานไพโรจน์
+วนิดา บูรณสัจจะ
+วนิดา ผลาผล
+วนิดา พานิชเจริญ
+วนิดา ภูทิพยวงษา
+วนิดา ไม้ดีเลิศ
+วนิดา เรืองธีรอำนวย
+วนิดา เลี้ยงถนอม
+วนิดา วิญญูวิสิทธิรักษ์
+วนิดา ศานต์พิริยะ
+วนิดา สราวุธวินัย
+วนิดา สุขสมภักดิ์
+วนิดา แสงพงศ์ชวาล
+วนิดา อมาตยกุล
+วนิดา อุทยางกูร
+วนิภา ว่องวัจนะ
+วรกานต์ ภควัตสุนทร
+วรกิจ สุรณรงค์พันธ์
+วรจิตรา วศินพงศ์วณิช
+วรชัย ทัศไนยเธียรกุล
+วรชัย สินธนนพคุณ
+วรชาติ พันธุ์สวัสดิ์
+วรณี มธุรสตระกูล
+วรธรรม แจ่มจันทร์
+วรนาถ ปิยสุวรรณาภรณ์
+วรนุช กิจอุดมสิน
+วรนุช ตั้งเจริญเสถียร
+วรนุช พิษณุวงษ์
+วรนุช ศรีทัศนีย์
+วรนุช โอภาสเจริญพร
+วรพงศ์ ศิริพงษ์วิรัช
+วรพงษ์ โพธิ์สว่าง
+วรพจน์ กิตติพัฒนาพงศ์
+วรพจน์ ตรรกพงศ์
+วรพจน์ เปรมสาย
+วรพจน์ วงศ์สง่า
+วรพจน์ สุวัฒน์ธนากร
+วรพร ทรัพย์ทวีพร
+วรพรรณ มีทองคำ
+วรพล เบญกานี
+วรพัฒน์ สุมะโน
+วรพิชญา บุญศรีโรจน์
+วรมน คงอ่อน
+วรยุทธ์ ประธานทิพย์
+วรรณกานต์ ขาวลาภ
+วรรณชัย บุญบำรุง
+วรรณดี จันทร์ปลั่ง
+วรรณดี พรนันทารัตน์
+วรรณดี หงส์นิมิตชัย
+วรรณทิพย์ แซ่โป่ว
+วรรณนภา แซ่เตี๋ยว
+วรรณนิภา พุ่มสุวรรณ
+วรรณพร กิตติโสภณ
+วรรณพร เพียรสาระ
+วรรณพิบูลย์ นุชใย
+วรรณภา ชมทรัพย์
+วรรณภา ปิยะตระกูล
+วรรณภา ศรไพศาล
+วรรณรักษ์ วัฒนวุฒิพงศ์
+วรรณรี ชุณหภิญโญกุล
+วรรณวดี โตษยานนท์
+วรรณวิภา ธเนศสุธรรม
+วรรณวิมล ฐานานุศักดิ์
+วรรณวิมล สุขปาน
+วรรณวิไล ศิริชัยเทวินทร์
+วรรณศิริ ตันเจริญ
+วรรณะ คณาญาติ
+วรรณะ ไสยเกื้อ
+วรรณา กุลพนาเวศ
+วรรณา คงเจริญจิตติกุล
+วรรณา จันทรคง
+วรรณา เจียงวงศ์ถาวร
+วรรณา ชินศรีสุข
+วรรณา แซ่ลิ่ว
+วรรณา แซ่โล่
+วรรณา ตันเจริญ
+วรรณา ทองสุข
+วรรณา ธีระพงษ์
+วรรณา บวรวัฒนวานิช
+วรรณา ปรางทอง
+วรรณา พจน์ศิริศิลป
+วรรณา พานิชย์เจริญยิ่ง
+วรรณา ภัทรบัณฑิต
+วรรณา แม้นจันทร์
+วรรณา เรืองประเภท
+วรรณา วงศ์ประเสริฐ
+วรรณา วิสุทธวิเศษ
+วรรณา ศิตะโยธิน
+วรรณา สหธรรมิก
+วรรณา สุจริต
+วรรณา โสภณนรินทร์
+วรรณา อนุสรณชัย
+วรรณา อินทร์พระยา
+วรรณาภา แซ่ซึง
+วรรณิภา สุขพลอย
+วรรณี เกียรติกังวานกุล
+วรรณี คุ้มอนุวงศ์
+วรรณี เจริญเตียวงศ์
+วรรณี โชคชูชัย
+วรรณี แซ่เอียะ
+วรรณี ตั้งเสาวภาคย์
+วรรณี ไทเมืองพล
+วรรณี บุญญะฤทธิ์
+วรรณี ผุสดิน
+วรรณี พุ่มศิริ
+วรรณี มานะภักดิ์ศิริกุล
+วรรณี เรืองสมหมาย
+วรรณี วงษ์เทียนจันทร์
+วรรณี ศรีวิมลทัศน์
+วรรณี สัจจะเวทะ
+วรรณี สุวรรณฤกษ์
+วรรณี อภิรัตนกุล
+วรรณี เอี่ยมสอาด
+วรรณเพ็ญ พรมจันทร์
+วรรธ กันต์ไพเราะ
+วรรลภรณ์ เลอวัฒนกิจถาวร
+วรรัตน์ นิระฉัตรสุวรรณ์
+วรลักษณ์ จันทรดี
+วรลักษณ์ สินไชย
+วรวรรณ ญาณิสสร
+วรวรรณ เลิศคงคาทิพย์
+วรวรรณ เอี่ยมสันติไพศาล
+วรวัฒน์ วิวัฒน์ยุศันต์
+วรวิทย์ กุลวงษ์วาณิชย์
+วรวิทย์ ชาติเวียง
+วรวิทย์ ทัศธนะสิริกุล
+วรวิทย์ พาณิชพัฒน์
+วรวิทย์ วรกิตติพันธ์
+วรวิทย์ สินชวาลวัฒน์
+วรวิทย์ อิศรางกูร ณ อยุธยา
+วรวุฒิ จำเริญรัตนากร
+วรวุฒิ ตั้งสมภาควรกุล
+วรวุฒิ พรวรนันท์
+วรวุฒิ เลิศปรีชาพงษ์
+วรวุฒิ สิทธิศาสตร์สกุล
+วรวุธ เนตรทัศน์
+วรศักดิ์ เด่นเกศินีล้ำ
+วรศักดิ์ สิงหธิติกุล
+วรสิทธิ์ ปลื้มสัมพันธ์
+วรัช อรุณกมล
+วรัญญา ศิลปสมศักดิ์
+วรัมพร สุขได้พึ่ง
+วรากร ผจงจิตติกุล
+วรางคณา ดีมาก
+วรางคณา อินชูโต
+วราทิพย์ ไอยรากาญจนกุล
+วราพร งามสมตระกูลชาติ
+วราพร พันธ์ณรงค์
+วราพร สุทันติกร
+วราภรณ์ กระต่ายแก้ว
+วราภรณ์ โกศลวัฒนะ
+วราภรณ์ จงปั้น
+วราภรณ์ เจียรสมจิตร
+วราภรณ์ ไชยวงศ์
+วราภรณ์ ดาวประจักษ์
+วราภรณ์ โตแจ้ง
+วราภรณ์ ธนาภรณ์พิบูล
+วราภรณ์ บัวคลี่
+วราภรณ์ ปิ่นทอง
+วราภรณ์ พิณเมืองงาม
+วราภรณ์ มฤศโชติ
+วราภรณ์ รัตนะ
+วราภรณ์ เล่งวิริยะกุล
+วราภรณ์ วิพัฒน์กิจวิไล
+วราภรณ์ ศุนาลัย
+วราภรณ์ สุขบุญส่ง
+วราภรณ์ หมึกหอม
+วราภรณ์ อัศวกายมณี
+วรามาศ ซึ่งจิตเสถียร
+วรารัตน์ จิระขจรวงศ์
+วรารัตน์ ออรัตนชัย
+วราลักษณ์ อิทธิเจริญสุข
+วราวุฒิ ธรเสถียร
+วราวุธ เพียรกิจ
+วราห์ เผ่าตำรวจ
+วรินทรีย์ ชินสาย
+วรินทร์ อินทร์ธิราช
+วริศรา เอื้ออารีวิวัฒน์
+วรีภรณ์ สัจจริตานันท์
+วรุณ ลิ้มอุดมสุข
+วรุณี ตั้งสืบกุล
+วรเชต ศรีประภาสุขสันติ
+วรเดช ลิ้มธรเบญจพล
+วรเทพ แทนวันชัย
+วรเทพ สวัสดิยนาวิน
+วรโชติ เชียงทอง
+วลัย แป้นทอง
+วลัยพร เกียรติทับทิว
+วลัยพร ภัทราพงศ์
+วลัยพรรณ ดวงแก้ว
+วลัยรัตน์ แก้วสว่าง
+วลัยลักษณ์ ฤทธิรงค์วัฒนา
+วลิยา วัฒนาพร
+วลี พละบุญมี
+วลีพร สุทธินัยวราภรณ์
+วลีรัตน์ สุวรรณอักษร
+วศิน วณิชย์วรนันต์
+วสันติ โอภาสวานิช
+วสันต์ จงศุภนิมิต
+วสันต์ เชื่อมทอง
+วสันต์ ทองคง
+วสันต์ ปฏิโภคสุทธิ์
+วสันต์ โพธิ์ไพรทอง
+วสันต์ วงศ์กัทลีคาม
+วสันต์ สกุลฟอง
+วสันต์ หทัยเกียรติกุล
+วสุ บูรณะเหตุ
+วอน ฉ่ำนิตย์
+วัง สุขสมบุญ
+วัจวิท ทักษณิวรรตกุล
+วัชร พลวรรณาภา
+วัชรพงษ์ กิจโกศล
+วัชรพันธ์ ประดิษฐพงษ์
+วัชระ แจ่มจำรัส
+วัชระ บุญเอนกทรัพย์
+วัชระ เย็นวิจิตรโสภา
+วัชระ สุระแสง
+วัชรา เจริญรัตนพร
+วัชรา ลิมานนท์ดำรงค์
+วัชราพร เสมคำ
+วัชราภรณ์ ยิ่งยงยศ
+วัชริน ตรีวิลาศรัตน์
+วัชรินทร์ เจริญรัตน์
+วัชรินทร์ ทองรักษ์
+วัชรินทร์ พลับแก้ว
+วัชรินทร์ วชิรพาหุ
+วัชรินทร์ สุบรรณพงษ์
+วัชรี กาญจโนภาส
+วัชรี เจริญทรัพย์
+วัชรี ตรีพานิช
+วัชรี บูรณ์วรุตม์
+วัชรี ฟุกตานนท์
+วัชรี วงศ์กลธูต
+วัชรี สง่าเมือง
+วัชรี หิรัณยาตาพงศ์
+วัชรียา ธนะสุนทร
+วัชร์แสง เหล่าหงษ์เงิน
+วัฒนชัย จินดานุรักษ์
+วัฒนชัย สาตรพันธุ์
+วัฒนศักดิ์ พันธุ์กำแหง
+วัฒนะ ปริศนาวาณิชย์
+วัฒนา กรอบเพ็ชร์
+วัฒนา เขียมทรัพย์
+วัฒนา จิตการุณ
+วัฒนา ชาญไชย
+วัฒนา ตรีวิทยากุล
+วัฒนา เทียนเพ็ง
+วัฒนา บำรุงพฤกษ์
+วัฒนา ปิ่นเสม
+วัฒนา พิมพ์ประดับ
+วัฒนา มาระมิ่ง
+วัฒนา รัตนะมงคลกุล
+วัฒนา วัชระพิมลมาศ
+วัฒนา ศรีเอนกราธา
+วัฒนา สุขกนิษฐ์
+วัฒนา แสดมณี
+วัฒนา อินทรักษ์
+วัฒนาภรณ์ ลี้ชาญกุล
+วัฒน์ เจริญประเสริฐกุล
+วัดกระจัง วัดกระจัง
+วัดช่องนนทรี วัดช่องนนทรี
+วัดธาตุทอง วัดธาตุทอง
+วัดบางพลีน้อย วัดบางพลีน้อย
+วัดป่าเรไร วัดป่าเรไร
+วัดราชคฤห์ วัดราชคฤห์
+วัดสวนแก้ว วัดสวนแก้ว
+วัดอยู่ดีบำรุงธรรม วัดอยู่ดีบำรุงธรรม
+วัดเสด็จ วัดเสด็จ
+วัดใหม่ลำนกแขวก วัดใหม่ลำนกแขวก
+วัธนา พัชราวลัย
+วันจนีย์ ดำรัสการ
+วันชัย กิตติจารุกำจร
+วันชัย ขนบดี
+วันชัย โคตรสมบัติ
+วันชัย จำนงค์
+วันชัย เจียระไนพันธ์
+วันชัย ชาญสง่าเวช
+วันชัย ซื่อเธียรสกุล
+วันชัย แซ่เยี้ย
+วันชัย ตรีสินธ์
+วันชัย โตความรู้
+วันชัย เทิดบัญชรสุข
+วันชัย นันทคุณากร
+วันชัย บุญช้าง
+วันชัย ปั้นพินิจ
+วันชัย พรมวงษ์
+วันชัย พูนทรัพย์
+วันชัย มงคลวงศ์สกุล
+วันชัย ยังประยูร
+วันชัย รุ่งรัตน์มณีมาศ
+วันชัย ลีลาชูพงศ์
+วันชัย วงษ์ขาว
+วันชัย วินัยวรสกุล
+วันชัย ศรีสุวรรณ
+วันชัย สกุลศักดิ์นิมิตร
+วันชัย สายสวัสดิ์
+วันชัย สุทธิอารีกุล
+วันชัย โสตถีวรกุล
+วันชัย อภิกวินวงศ์
+วันชัย อานันทนสกุล
+วันชัย เอี่ยมวิวัฒนะกุล
+วันชาติ ปุญวัฒโท
+วันณี ดาวแสง
+วันดี ไกรรมณ์
+วันดี จุลสำลี
+วันดี แซ่ตั้ง
+วันดี แดงหนู
+วันดี ไทยประดิษฐ์
+วันดี บุณยะกาญจน
+วันดี พลอยมะกล้ำ
+วันดี มฮำหมัด
+วันดี ละมั่ง
+วันดี ไวอ่อน
+วันดี สิงหาพันธุ์
+วันดี หุโลประการกุล
+วันทณี โชติเวที
+วันทนา จงแจ่ม
+วันทนา เดชประสิทธิ์
+วันทนา บุญกร่าง
+วันทนา เพียรวนิช
+วันทนา วงศ์ภักดี
+วันทนา สุวรรณพงษ์
+วันทนาพร ศิรินันทวิทยา
+วันทนี ฤทธิสิงห์
+วันทนีย์ ชลิตตานนท์
+วันทนีย์ เนียมเทศ
+วันทนีย์ ลัทธะพานิชย์
+วันทนีย์ หวัง
+วันธณี แดงประดับ
+วันนา ศรีสวาท
+วันมูหะมัดนอร์ มะทา
+วันวิสา สิริศรัณย์
+วันเจิด ตามเพิ่ม
+วันเพ็ญ กิ่งใบสมบูรณ์
+วันเพ็ญ เขาแก้ว
+วันเพ็ญ จันทรวิโรจน์
+วันเพ็ญ ชนากร
+วันเพ็ญ แซ่ลิ้ม
+วันเพ็ญ ตระกูลสุขทรัพย์
+วันเพ็ญ ทรัพย์มณี
+วันเพ็ญ นาคแย้ม
+วันเพ็ญ ประดิษฐ์สุวรรณ
+วันเพ็ญ พรธนาวุฒิ
+วันเพ็ญ เพชรกาญจนาพงศ์
+วันเพ็ญ มาโนช
+วันเพ็ญ รุ่งเรือง
+วันเพ็ญ วรพัฒนานันต์
+วันเพ็ญ ศรีโยยอด
+วันเพ็ญ สิงห์สวัสดิ์
+วันเพ็ญ สูญสิ้นภัย
+วันเพ็ญ อนุติรยะ
+วันเพ็ญ เอวาสกุล
+วัยวัจน์ ทายาทสุวรรณ
+วัลนภา ราศรีปลั่ง
+วัลภา ดุลยานนท์
+วัลภา ยรรยงพัฒนะ
+วัลภา หรั่งสิโย
+วัลย์ลัดดา ธีระศักดิ์กุล
+วัลยา นวลละออง
+วัลยาภรณ์ รัชวิชัย
+วัลลภ แก้วเปีย
+วัลลภ แจ่มวุฒิปรีชา
+วัลลภ ทองก้าย
+วัลลภ บูรณศิริ
+วัลลภ มะชรา
+วัลลภ วชิรพรพงศา
+วัลลภ สังข์สอน
+วัลลภ อรัญญเกษม
+วัลลภา เฉลิมนัย
+วัลลภา พรมโชติ
+วัลลภา วีระปุลลี
+วัลลา เกาสุรัตน์
+วัลลี นันตาลิก
+วัลลีย์ ประทุมชาติ
+วัลลีย์ ฮั้วห้วยพระ
+วาณิชย์ วดีศิริศักดิ์
+วาณี พันธุมจินดา
+วาณี เหลืองบริสุทธิ์
+วาทิต พิชยนันท์
+วาทินี วงศ์บุษยกุล
+วานิช เมธาธำรงค์ศิริ
+วารณี แดงสี
+วาริท หลาวทอง
+วารินทร์ กิตติโชติกุล
+วารินทร์ บุญชยานุรักษ์
+วารินทร์ วารมา
+วารินี โอษฐิเวช
+วารี จีนสุวรรณ์
+วารี ไตรพุทธางกูร
+วารี พลสระน้อย
+วารี วงศ์อุไร
+วารี สุปรียาวรรณชัย
+วารีทิพย์ เทพนำโสมนัสส์
+วารุณภัค ฮั่นตระกูล
+วารุณี จิตต์ธรรม
+วารุณี ดาบเจริญชัย
+วารุณี นิลเพชร์พลอย
+วารุณี พันธุเพ็ง
+วารุณี โรจน์พลากร
+วารุณี ศรีสกุลดี
+วารุณี สุวรรณศรี
+วารุณีย์ จำปานิล
+วาสนา กระพันพงศ์สกุล
+วาสนา แก้วชูศิลป์
+วาสนา คำศิริรักษ์
+วาสนา จินดาศักดิ์
+วาสนา ชานก
+วาสนา แซ่เล้า
+วาสนา ไตรเวทย์วรกุล
+วาสนา เทียมแสงอรุณ
+วาสนา นิยมฤทธิ์
+วาสนา บูรศิริรักษ์
+วาสนา เผ่าถนอม
+วาสนา พูลนิกร
+วาสนา มะเสริฐ
+วาสนา ระรื่นจิตต์
+วาสนา และเย๊าะห์
+วาสนา วีระรัศมี
+วาสนา ศุภวิทยาโภคี
+วาสนา สำเภาทอง
+วาสนา เสถียรธรรมวิทย์
+วาสนา เหลืองสะอาด
+วาสนา อินทสุวาท
+วาสิน สุภประกร
+ว้า แซ่แต้
+วิกรม วิกรมประสิทธิ์
+วิกิจ สุขสำราญ
+วิจันทรา บุนนาค
+วิจารณ์ นาควิเชียร
+วิจิต ไทยเจริญ
+วิจิตร เกตุธรรมวงศ์
+วิจิตร จุลรัษเฐียร
+วิจิตร ตราชู
+วิจิตร บำรุงกิจ
+วิจิตร พานิชย์
+วิจิตร รังสิยานนท์
+วิจิตร วุฒิอำพล
+วิจิตร สุขวิทยาวงษ์
+วิจิตร อัจฉริยอังกูร
+วิจิตรา แก้วสิทธิวงศ์
+วิจิตรา ถิรสุนทรากุล
+วิจิตรา ม่วงยิ่งสุข
+วิจิตรา สิทธิโชคอุดม
+วิจิตร์ ล้อมกุลไพศาล
+วิชชา อัศววรฤทธิ์
+วิชชุดา ลีลาสุขสันติกุล
+วิชญา สุทธิประเสริฐ
+วิชวน ศิริกาญจนวานิช
+วิชัย กันตังกุล
+วิชัย กีรติพานิช
+วิชัย เกี๋ยวพะมิตร
+วิชัย เขมะวรรณา
+วิชัย คุณากรสิริรักษ์
+วิชัย จตุรพักตรารักษ์
+วิชัย จั่วแจ่มใส
+วิชัย จิระไชยเขื่อนขันธ์
+วิชัย เจริญวุฒิวงษา
+วิชัย ฉายวิชิต
+วิชัย ชัยอำนวย
+วิชัย ชูชัยเจริญ
+วิชัย ซื้อพัฒนารุ่งโรจน์
+วิชัย แซ่ลิ้ม
+วิชัย แซ่เล้า
+วิชัย ดีสุคนธ์
+วิชัย ตั้งจารุ
+วิชัย ตามเที่ยงตรง
+วิชัย ไตรทิพย์พิทักษ์
+วิชัย ทองแท้
+วิชัย ธนะรัชติการนนท์
+วิชัย นกแย้ม
+วิชัย นิมิตไตรทิพย์
+วิชัย บุญญธนัง
+วิชัย บุษยะจารุ
+วิชัย ปรีชาวุฒิ
+วิชัย เปลี่ยนแพ
+วิชัย พรธรรมสิริ
+วิชัย พันธ์คำ
+วิชัย พึ่งสัมพันธ์
+วิชัย ไพบูลย์ลีสกุล
+วิชัย มณีฉาย
+วิชัย มีทรัพย์วัฒนา
+วิชัย ยิ้มน้อย
+วิชัย รัตนเจริญสกุล
+วิชัย โรจน์วิชาวงศ์
+วิชัย ลิ้มพรกุล
+วิชัย เลิศพลากร
+วิชัย วงศ์สระทอง
+วิชัย ว่องกิตติสิน
+วิชัย วิชัยธนพัฒน์
+วิชัย วิเชียรทองคำ
+วิชัย ศรีปัญจพงษ์
+วิชัย ศิริคุม
+วิชัย สกลพงษ์ไพโรจน์
+วิชัย สะอิ๊นะ
+วิชัย สินทัตตโสภณ
+วิชัย สุขเจริญ
+วิชัย สุริยะมงคล
+วิชัย แสงสมมาตร์
+วิชัย หัสดาดล
+วิชัย ไหลเจริญวงศ์
+วิชัย อรุณวัฒน์
+วิชัย อาภาพงศ์ศักดิ์
+วิชัย อุทิศ
+วิชัย ฮั้วประเสริฐ
+วิชา ช่วงโชติ
+วิชา ปิติพัฒนพันธ์
+วิชา วิชาชาญ
+วิชาญ กระแสร์กุล
+วิชาญ จินต์สุภัค
+วิชาญ ดีประหลาด
+วิชาญ บุญประเสริฐยิ่ง
+วิชาญ เพ็งสอาด
+วิชาญ ลิ้มสวัสดิ์
+วิชาญ ศิริเวชวราวุธ
+วิชาญ เหนี่ยวองอาจ
+วิชาติ ยุทธนาวรากุล
+วิชิต เกิดแกง
+วิชิต จิตรีเชื้อ
+วิชิต โชติชัชวาล
+วิชิต เตชะชุณหกิจ
+วิชิต บุญถนอม
+วิชิต พันธุ์พานิช
+วิชิต ร่วมสุข
+วิชิต วงษ์ใหญ่
+วิชิต ศรีพงษ์พันธุ์กุล
+วิชิต สุขสินธารานนท์
+วิชิต อนุตระกูล
+วิชิต เอี่ยมเสมารุ่ง
+วิชุดา แซ่ลิ่ม
+วิชุพร อิทธิรังสิมา
+วิญญู ทองพรรณ
+วิฑิต นีรพิทักษ์
+วิฑูร ลีวงศ์เจริญ
+วิฑูรย์ ขวัญเมือง
+วิฑูรย์ ชุ่มเล็ก
+วิฑูรย์ นิวาสสวัสดิกุล
+วิฑูรย์ โพธิ์จงรักษ์
+วิฑูรย์ วรรณจิตจรูญ
+วิฑูรย์ เส็งพานิช
+วิณัฐฑิตา โสภิตกานต์
+วิทยรัตน์ ทองนิ่ม
+วิทยา แก้ววัฒนะ
+วิทยา จันทร์ดาเรือง
+วิทยา ฉัตรวิทยายุทธ
+วิทยา แซ่ตู
+วิทยา ตัณฑสุทธิ์
+วิทยา ธนะพานิชย์
+วิทยา บุญญธนาภิวัฒน์
+วิทยา พงษ์สัมฤทธิ์
+วิทยา พูลพรรณ
+วิทยา เมตตาสัตย์
+วิทยา ฤทธิ์เดช
+วิทยา วรชาติ
+วิทยา ศรนรินทร์
+วิทยา สันตโยภาส
+วิทยา เสริมชีพ
+วิทยา อร่ามศรี
+วิทยากร เชียงกูล
+วิทย์ เพชรรัศมีพราว
+วิทวัส กิตติคุณานันท์
+วิทวัส หงสไกร
+วิทิต ศิริโภคากิจ
+วิทูร เทพพิทักษ์
+วิทูร แสงสิงแก้ว
+วิทูล สมบัติทวี
+วิน กล่ำแสง
+วินดา ชื่นเชื่อม
+วินัย กลิ่นพุฒ
+วินัย แก้วเกษการณ์
+วินัย คุ้มคอน
+วินัย จิตต์แจ่ม
+วินัย ชนะคช
+วินัย แช่มปรีดา
+วินัย เดชนที
+วินัย ถาวร
+วินัย เทียมน้อย
+วินัย นิธิชัย
+วินัย บุญวัฒนโสภณ
+วินัย ปางกิตติพงศ์
+วินัย พร้อมศิริพงษ์
+วินัย พุ่มเจริญวัฒนา
+วินัย มรรคนันท์
+วินัย ยุดดร
+วินัย โรจน์เจียง
+วินัย วงศ์อำนวยกุล
+วินัย วิลัยกรวด
+วินัย ศาสตร์สาระ
+วินัย สากล
+วินัย สุทธิวรรณารัตน์
+วินัย หมู่มิ่ง
+วินัย อรุณวัฒนกูล
+วินัย เฮงสมบูรณ์
+วินิจ เจริญศิริ
+วินิจ ปรีชารัตน์
+วินิจ วิริยกรอบชัย
+วินิช ชิรวานิช
+วินิตย์ สังข์สีเหลือบ
+วิบูรณ์ ปู่คงพระ
+วิบูลย์ยศ อมาตยกุล
+วิบูลย์ กิตติอัมพานนท์
+วิบูลย์ เจียรวงศ์
+วิบูลย์ แดงดวงแก้ว
+วิบูลย์ แทนบุญไพรัช
+วิบูลย์ ปอแก้ว
+วิบูลย์ ภาควณิช
+วิบูลย์ ฤทัยศรีมณีพันธ์
+วิบูลย์ วิบูลย์กิจวรกุล
+วิบูลย์ สถิรศิลปิน
+วิบูลย์ หวังรวยนาม
+วิบูลลักษณ์ ดิษฐอ่วม
+วิพล ปิตานุเคราะห์
+วิพากย์ โรจนแพทย์
+วิภา กานต์เหมรัตน์
+วิภา คูณขุนทด
+วิภา เจียมทวีวิบูลย์
+วิภา แซ่ตั้ง
+วิภา ตันตริยานนท์
+วิภา ธรรมาจักร์กุล
+วิภา ปาแก้ว
+วิภา พิทักษ์สิริศักดิ์
+วิภา ยังวิเศษ
+วิภา เลี้ยงศิริประเสริฐ
+วิภา เวศาขวรินธ์
+วิภา สามสี
+วิภา แสงสว่าง
+วิภา อิฐงาม
+วิภาจรี ตั้งสำเริงวงศ์
+วิภาดา นิธิปรีชานนท์
+วิภาดา หิรัญน้อย
+วิภาพร แซ่โล้ว
+วิภาพร ฤดีชูพิมล
+วิภาพรรณ พุ่มสงวน
+วิภาภรณ์ แซ่ไหล
+วิภาภรณ์ อาจอาสา
+วิภารัตน์ พรหมศรีสวัสดิ์
+วิภาวดี ไข่มุก
+วิภาวรรณ คุณติสุข
+วิภาวรรณ ภู่ตระกูล
+วิภาวลัย แจวชำนาญเชาว์
+วิภาวี สมิทธิเศรษฐ์
+วิภาส เอกธรรมสกุล
+วิมล กลิ่นเกษร
+วิมล คำเครื่อง
+วิมล ฉายปัญญาเลิศ
+วิมล แซ่เฮี้ย
+วิมล ทองดอนน้อย
+วิมล บุญยัง
+วิมล พัฒนาดิสัย
+วิมล มาลัยทอง
+วิมล ลิมปิสวัสดิ์
+วิมล วูวนิช
+วิมล สุขสมใจ
+วิมล แหยมงาม
+วิมลทิพย์ เกษโกมล
+วิมลมาลย์ สมคะเน
+วิมลรัตน์ งามพฤกษ์วานิชย์
+วิมลรัตน์ นิรัติกุลชัย
+วิมลรัตน์ ลีลาประชากุล
+วิมลรัตน์ อรุณนิธิ
+วิมลวรรณ เผ่าศรีเจริญ
+วิมลศรี ประดับแก้ว
+วิมาน ธิโสภา
+วิยดา วิศิษฐ์รัศมีวงศ์
+วิยะดา ทาประทุม
+วิยะดา ศิริทองคำ
+วิรงรอง อ้นอารี
+วิระ บำรุงศรี
+วิรัช กลิ่นขจร
+วิรัช ขุมทรัพย์
+วิรัช จิตพันธ์
+วิรัช ชื่นมีศรี
+วิรัช ดิษฐบรรจง
+วิรัช เทพประทุม
+วิรัช บรรเทิง
+วิรัช เปรมศรี
+วิรัช พูนทรัพย์
+วิรัช มาดวง
+วิรัช เรือนเงิน
+วิรัช วรรณรัตน์
+วิรัช ศรีบุญวงษ์
+วิรัช สหสมโชค
+วิรัช แสงเงิน
+วิรัช อมศิริ
+วิรัชช สุภานุสร
+วิรัต ยิ้มระหงษ์
+วิรัตน์ แก้วรัตนอัมพร
+วิรัตน์ จารุเวฬ
+วิรัตน์ ชูฉัตร์
+วิรัตน์ ตันติอธิมงคล
+วิรัตน์ ธูปทอง
+วิรัตน์ ประเสริฐกุล
+วิรัตน์ พิลัย
+วิรัตน์ ยันตเวช
+วิรัตน์ ลีลาสมานชัย
+วิรัตน์ แววนกยูง
+วิรัตน์ สิงห์งาม
+วิรัตน์ เหมนรากร
+วิรัตน์ เอียดเสน
+วิราณี วรชาครียนันท์
+วิรินทร์ ตันติพลาวนิชย์
+วิริยะ นิลรังษี
+วิริยา กิตตินันท์
+วิรียา นาคา
+วิรุต ตรียวง
+วิรุฬห์ ครองบุญศรี
+วิรุฬห์ สุนทราภัย
+วิลัย ใจดี
+วิลัย วิสุทธิชาติ
+วิลัยศักดิ์ สุกิจญาณ
+วิลาวรรณ ธารธนาภรณ์
+วิลาวัณย์ แก้วกนกวิจิตร
+วิลาวัณย์ ภัทรวนากุล
+วิลาวัลย์ กระจ่างทิศ
+วิลาวัลย์ นรสิงห์
+วิลาวัลย์ ศรีมีสวัสดิ์
+วิลาศ จีนารักษ์
+วิลาศ เวชภูติ
+วิลาสินี แซ่อึ้ง
+วิวรรณ กมลศรีจักร
+วิวรรธน์ ภิรมย์ประเมศ
+วิวัฒน์ กันฑธนกิจ
+วิวัฒน์ คุณติสุข
+วิวัฒน์ ฉายาสกุลวิวัฒน์
+วิวัฒน์ แซ่โกย
+วิวัฒน์ โตเจริญวิวัฒน์
+วิวัฒน์ นิติภูมิเวชสกุล
+วิวัฒน์ ปิ่นภักดี
+วิวัฒน์ พีรศักดิ์โสภณ
+วิวัฒน์ ยิ่งชนะเกียรติ
+วิวัฒน์ เลาวเลิศ
+วิวัฒน์ วิกรานตโนรส
+วิวัฒน์ ศิลกรุงธีระภาพ
+วิวัฒน์ สุขเจริญ
+วิวัฒน์ อภิวัฒนลังการ
+วิวัฒน์ เอื้อรัตน์ศรีทอง
+วิศณี ศรทัตต์
+วิศลย์ สิริทัศนคุณ
+วิศาล เฉลิมกิจ
+วิศาล ลือกระจ่างธรรม
+วิศิษฎ์ แก้วล้อม
+วิศิษฎ์ พัฒนเมฆิน
+วิศิษฎ์ อภินันท์
+วิศิษฏ์ ภูริวัฒน์
+วิศิษฏ์ อิสณพงศ์
+วิศิษฐ์ กิตตินันทพันธุ์
+วิศิษฐ์ ตารัชกุล
+วิศิษฐ์ มั่งคั่ง
+วิศิษฐ์ ศิวะบวร
+วิศิษย์ศักดิ์ วงศ์สถิตย์พร
+วิษณุ ทวีวิโรจน์สกุล
+วิษณุ วงษ์เงิน
+วิษณุวัต วัจนะพุกกะ
+วิสันต์ จันทร์ศรีเจริญ
+วิสัย สมบูรณ์ทรัพย์
+วิสาร เตชะธีราวัฒน์
+วิสิฐ ลุผลแท้
+วิสิทธิ์ จิตรพานิชเจริญ
+วิสิทธิ์ พงโศธร
+วิสิทธิ์ เศรษฐีพ่อค้า
+วิสิษฐ ฤทธิ์สำเร็จ
+วิสุทธิ บุญกำพร้า
+วิสุทธิ์ คุ้มภาคสกุล
+วิสุทธิ์ ด่านธนสาคร
+วิสุทธิ์ บุญดีเจริญยิ่ง
+วิสุทธิ์ ภัทรเกียรติเจริญ
+วิสุทธิ์ วิสุทธิพิเนตร
+วิสุทธิ์ สุทธิวิริยะกุล
+วิสุทธ์ เคห์ทุ่ม
+วิสูตร ฉกาจฤทธิพงศ์
+วิสูตร ประคองสันติกุล
+วิสูตร วงศ์ไชยศรี
+วิสูตร สู่พานิช
+วิเกื้อ สกุลจันทร์
+วิเชษฐ ปราชเปรื่อง
+วิเชษฐ์ รอดนุสนธิ์
+วิเชียร กังวาลย์
+วิเชียร เกิดภู่
+วิเชียร เข็มเงิน
+วิเชียร เคารพพาพงค์
+วิเชียร จันทโชติบุตร
+วิเชียร เจริญพงษ์
+วิเชียร ชัยชำนะภัย
+วิเชียร โชติตันติมากร
+วิเชียร แซ่โค้ว
+วิเชียร ตรีพุฒ
+วิเชียร เติมวุฒิ
+วิเชียร ทัตตมนัส
+วิเชียร ธารมนูลาภ
+วิเชียร เนตรประเสริฐกุล
+วิเชียร บุริมจิตต์
+วิเชียร ปานอุทัย
+วิเชียร พรายมี
+วิเชียร พิริยะพงศธร
+วิเชียร ฟุ้งสุข
+วิเชียร มามีเกตุ
+วิเชียร ใยประยูร
+วิเชียร รุ่งโรจนาลักษณ์
+วิเชียร ลิ้มอารีธรรม
+วิเชียร วงศ์อนุสรณ์
+วิเชียร วันลักษณ์
+วิเชียร ไวพจนาท
+วิเชียร ศิริรุ่งเรือง
+วิเชียร สมศิริกุล
+วิเชียร สำเภา
+วิเชียร สุคนธาภิรมย์ ณ พัทลุง
+วิเชียร เสร็จสวัสดิ์
+วิเชียร หอมคง
+วิเชียร อยู่เรือง
+วิเชียร อินทร์สำอางค์
+วิเชียร ฮวดประดิษฐ์
+วิเลิศ อร่ามเลิศตระกูล
+วิเศษ บุญประเสริฐ
+วิโชค วิเศษพันธุ์ชัย
+วิโรจน์ กัปปิยจรรยา
+วิโรจน์ โกยอนรรฆกุล
+วิโรจน์ งามเอกอุดมพงศ์
+วิโรจน์ จิวารุ่งเรือง
+วิโรจน์ ชลรัตนกุล
+วิโรจน์ โชติวรรณกุล
+วิโรจน์ ดอนยางไพร
+วิโรจน์ เตชะชนาลัย
+วิโรจน์ ทัศนบริสุทธิ์
+วิโรจน์ นาคน้อย
+วิโรจน์ เบญจพสกุล
+วิโรจน์ ผลตูม
+วิโรจน์ พิทยานนท์
+วิโรจน์ ภาใจธรรม
+วิโรจน์ ยั่งยืนภราดร
+วิโรจน์ รุโจปการ
+วิโรจน์ ลิ่วลักษณ์
+วิโรจน์ วงษ์ศิริ
+วิโรจน์ วิริยะธนากร
+วิโรจน์ ศฤงคาร
+วิโรจน์ สังวรโยธิน
+วิโรจน์ สุทธิรักษ์
+วิโรจน์ หลิมไชยกุล
+วิโรจน์ อรุณรัตนกุล
+วิโรจน์ เอี่ยมสกุลรัตน์
+วิไล กิระวงศ์สกุล
+วิไล คัคนัมพรเลิศ
+วิไล จารุพงศ์
+วิไล ชดช้อย
+วิไล แซ่กิม
+วิไล ดาวสุข
+วิไล โตสุวรรณ
+วิไล ธารีไทย
+วิไล บุญมี
+วิไล ปาดศรี
+วิไล พิทักษ์ชัยวัฒนา
+วิไล มณีแสง
+วิไล รัตตกุล
+วิไล ลิ้มเปรมวัฒนา
+วิไล วิจิตรนิรันดร
+วิไล ศรีอรุณกิจจา
+วิไล สหอารักขา
+วิไล สุทัดณ์วานิช
+วิไล หวังเจริญ
+วิไล อัชณากรลักษณ์
+วิไลพร กุลบุตร
+วิไลพร ท่าไคร้กลาง
+วิไลพร วิทยาขจรเดช
+วิไลพรรณ สมบูรณสิน
+วิไลรัตน์ โกศลจันทรยนต์
+วิไลรัตน์ ปูนวิภากุล
+วิไลรัตน์ หวังศรีตรัย
+วิไลลักษณ์ เจนสมานชัยกุล
+วิไลลักษณ์ นรินทร์
+วิไลลักษณ์ รัตนสวัสดิ์
+วิไลลักษณ์ แสงทักษิณ
+วิไลวรรณ คงคิด
+วิไลวรรณ ชูแดง
+วิไลวรรณ เทียนถาวร
+วิไลวรรณ แป้นสุวรรณ
+วิไลวรรณ ยินดีฤกษ์
+วิไลวรรณ วาศวิท
+วิไลวรรณ สุเพียร
+วิไลวรรณ์ เหลืองสวัสดิ์
+วีณา กัสตัน
+วีณา เจนกิจเจริญชัย
+วีณา ตันเกษม
+วีณา บุญขวัญ
+วีณา ภักดีวัฒนะกุล
+วีณา วงษ์กมลชุณห์
+วีณา สายหยุด
+วีณา เอี่ยมประจง
+วีนัส ปิ่นมังกร
+วีนัส เอี่ยมวัฒนะ
+วีรกิตต์ ไพบูลย์กิจโกศล
+วีรชัย แซ่เซียว
+วีรชัย ลาภเจริญพร
+วีรชัย อานันทศิริเกียรติ
+วีรนาถ แดงบุญ
+วีรพงศ์ เลิศวงศ์ภักดี
+วีรพจน์ เชิดไชยวงษ์
+วีรพล ธนาภรณ์ไพบูลย์
+วีรพัฒน์ กิตติภาณุกุล
+วีรยศ ฤทธิ์ไทย
+วีรยุทธ บัณฑิตภูวนนท์
+วีรยุทธ์ ปีกานนท์
+วีรวรรณ แตงแก้ว
+วีรวรรณ เวสารัชเศรษฐ์
+วีรวัฒน์ คุณพิทักษ์วัฒนา
+วีรวัฒน์ พึ่งโพธิ์สภ
+วีรวัต คุณานุกูล
+วีรศักดิ์ ขจรเกียรติ
+วีรศักดิ์ บรรจงมณี
+วีรศักดิ์ วิชชาชู
+วีรสิทธิ์ ฉัตรสุภางค์
+วีระ แก้วนุ่ม
+วีระ จะบัง
+วีระ ฉินทกานนท์
+วีระ โชคยานุวัฒน์ศิริ
+วีระ โดแวนเว
+วีระ ทองลิ้นจี่
+วีระ นำชาญชัยวุฒิ
+วีระ ประดิษฐผลพานิช
+วีระ พลศักดิ์
+วีระ มนตเสรีวงศ์
+วีระ รัชตามุขยนันต์
+วีระ ลือวิชนะ
+วีระ วัฒนายิ่งสกุล
+วีระ ศรีมาลา
+วีระ สวรรยารัตน์
+วีระ สุริยประภาดิลก
+วีระ เหลืองบริบูรณะ
+วีระ อุนคานนท์
+วีระชัย กูดโพนงาม
+วีระชัย ชิ้นศิริ
+วีระชัย ทองวงษ์
+วีระชัย พรหมมาศ
+วีระชัย โล้พิรุณ
+วีระชัย สุนทรเจริญนนท์
+วีระชาต พงศ์สวัสดิ์
+วีระชาติ อิงสันเทียะ
+วีระพงศ์ บุญกิตติเจริญ
+วีระพงษ์ เทียนเสริมทรัพย์
+วีระพงษ์ สิริวัฒนเสถียร
+วีระพล จิรังนิมิตสกุล
+วีระพล มีลาภ
+วีระพล โอสภารยกุล
+วีระพันธ์ เพชรรัตน์
+วีระยุทธ โกรัตนะ
+วีระยุทธ ศุภนารา
+วีระวรรณ แซ่โค้ว
+วีระวัฒน์ ตุงควิจิตรวัฒน์
+วีระวัฒน์ สุวรรณเบญจกุล
+วีระศักดิ์ กองแก้ว
+วีระศักดิ์ ชาญวิรวงศ์
+วีระศักดิ์ ทองไพบูลย์
+วีระศักดิ์ โปธิมา
+วีระศักดิ์ ฤกษ์สมบูรณ์ศิริ
+วีระศักดิ์ ศรีสินทร
+วีระศักดิ์ หอมชื่น
+วีระเกียรติ ตั้งอมรรัตน์
+วีระเทพ เต็มสินผดุง
+วีรายา อ่วมสะอาด
+วีรเดช ลิมป์รัชตามร
+วุฒฑินันท์ ศรีโฉมงาม
+วุฒิ โชสิวสกุล
+วุฒิ มีสุข
+วุฒิ เหล่าสุนทร
+วุฒิชัย เกศปานนท์
+วุฒิชัย แซ่ลิ้ม
+วุฒิชัย ประวิงรัตน์
+วุฒิชัย รอดเจริญ
+วุฒิชัย ศฤงคารภาษิต
+วุฒิชัย แสนมาโนช
+วุฒินันท์ ตุลยลักษณ์
+วุฒิพงศ์ หวังธนกิจ
+วุฒิพงษ์ ศรีพาณิชย์
+วุฒิวัฒน์ อรุณทอง
+วุฒิสา บุษมงคล
+วุฒิไกร อุทัยวัฒนปรีชา
+วโรชา ตุงคะเศรณี
+วไลพร ดีถาวร
+วไลลักษณ์ เจริญอัควสุข
+เวช ทองเรือง
+เวณิก จงเจริญ
+เวสท์แลนด์ ดี
+เวียงฟ้า คุ้มไพทูลย์
+เว้งฮง แซ่กัง
+แวว อ่อนละมูล
+แววตา รอดคลองตัน
+แววใจ แซ่บ้าง
+ไวฑูรย์ ปรัชญาพงศ์พันธ์
+ไวย เป้าทอง
+ไววิทย์ เหล่าวรวิทย์
+ศกุนตลา รักษาสัตย์
+ศจีพร อิสริยะเสรีกุล
+ศนิษา นัยธนิช
+ศรชัย เกียรติชัยวุฒิ
+ศรชัย รัศมิทัต
+ศรร ธรรมถุติ
+ศรศิลป์ พลเตชา
+ศรัญญา โพธิ์แก้ว
+ศรัณญา จงนรังสิน
+ศรัณยา วงศ์บา
+ศรัณย์ เธียรศิลากุล
+ศรัทธา ทองวุฒิพันธ์
+ศราภรณ์ ปรีชา
+ศรายุทธ สาสนิท
+ศราวุฒิ จินาตุน
+ศราวุธ ด่านเพ็ชรดำรง
+ศราวุธ สมัยเทอดศักดิ์
+ศรินดา ปัสนะจะโน
+ศรินทิพย์ ถ้ำทิมทอง
+ศรินยา สหสิทธิวัฒน์
+ศรี เผ่าทองจีน
+ศรีกันยา โบว์สุวรรณ
+ศรีจันทน์ ว่องเจริญ
+ศรีจันทร์ ยินดีอัน
+ศรีจิตต์ สุชาติสุธาธรรม
+ศรีชาติ สุภาษิต
+ศรีทอง พูลทรัพย์
+ศรีธิชา ทองอินทร์
+ศรีนวล จันทร์สุข
+ศรีนวล ทุมเที่ยง
+ศรีนวล เมฆห่วง
+ศรีนวล สุขสอาด
+ศรีนารี แซ่เฮง
+ศรีประภา กลิ่นสังข์
+ศรีประภา แสงเนตร
+ศรีปราชญ์ สุทัศนศึกษา
+ศรีพร มาละวิชัย
+ศรีพัชรา ศุภรวรรณ
+ศรีมาลา กลีบกมล
+ศรีรัตนา รอดดี
+ศรีรัตน์ บรรยงกะเสนา ณ อยุธยา
+ศรีรัตน์ สังข์พันธ์
+ศรีลัดดา โป๊ะบุญชื่น
+ศรีวรรณ ชูณรงค์
+ศรีวรรณ รัตนเศรษฐ
+ศรีวรรณ อินทรัตน์
+ศรีวลี ลิ่มมรกต
+ศรีวิชัย นกยิ้ม
+ศรีวิลัย สงวนสัตย์
+ศรีวิไล สุขุมกาญจนะ
+ศรีศักดิ์ สุวรรณศักดิ์ศรี
+ศรีสกุล ศรีตะปันย์
+ศรีสมบูรณ์ เพชรม่วง
+ศรีสมร พงศาวลีรัตน์
+ศรีสมัย วิบูลยานนท์
+ศรีสวัสดิ์ ธนานันท์
+ศรีสวาสดิ์ น้อยพันธุ์
+ศรีสอาด แซ่ฮั้ง
+ศรีสุข กลิ่นบัว
+ศรีสุชาติ ทองไล้
+ศรีสุดา แดงดีเลิศ
+ศรีสุดา มั่นคงสกุล
+ศรีสุดา สุวรรณกิจวัฒน์
+ศรีสุนี อัศวพิภพ
+ศรีสุมาลย์ งามประเสริฐกิจ
+ศรีสุวรรณ รุณประเสริฐ
+ศรีออน ทองคำ
+ศรีอุดม เดชะศิริ
+ศรีเจริญ รอบคอบ
+ศรีเพ็ญ ทรัพย์มนชัย
+ศรีเรือน ประยูรพรหม
+ศรีแค ทรัพย์ดี
+ศรีไทย ศรีเวทย์บดี
+ศรุต ครบธีรวงศ์
+ศลิษา วรรณกิจ
+ศศวรรณ ฤกษ์สุริยพันธ์
+ศศิชล จรูญเลิศสิทธิผล
+ศศิธร คำสัณห์
+ศศิธร ไชยริปู
+ศศิธร ธรรมพักตรกุล
+ศศิธร พราหมณะนันทน์
+ศศิธร รุจานุรักษ์
+ศศิธร ศรีอนุพันธุ์
+ศศิธร สุริยาพร
+ศศิธร แอนอึ้ง
+ศศิพร ธนโกวิท
+ศศิภาส์ ประเสริฐสุข
+ศศิลักษณ์ เชาว์พานนท์
+ศศิวิมล โกสิยกุล
+ศศิเพ็ญ วรรณวิจิตร
+ศักดา คล้ายสาคร
+ศักดา แซ่ตั้ง
+ศักดา ธรรมพิทักษ์
+ศักดา พงษ์ผล
+ศักดา แม้นสุวรรณ
+ศักดา วิสุทธิวงศ์
+ศักดา สุริยะพรชัยกุล
+ศักดา เอี่ยมอร่ามศรี
+ศักดิ์ชัย คมกฤส
+ศักดิ์ชัย ช่อชัยพฤกษ์
+ศักดิ์ชัย ดำริห์งาม
+ศักดิ์ชัย ทักขิญเสถียร
+ศักดิ์ชัย ปัญญามีเสมอ
+ศักดิ์ชัย โพธิ์ปริสุทธิ์
+ศักดิ์ชัย ฤกษ์เกษม
+ศักดิ์ชัย วิริยะสุขสินธุ์
+ศักดิ์ชัย สิริประภาพรรณ
+ศักดิ์ชัย เหลียงกอบกิจ
+ศักดิ์ชัย เอื้อสุนทรพานิช
+ศักดิ์ชาย ลิขิตตระกุล
+ศักดิ์ดา ไชยานุวงศ์
+ศักดิ์ดา อิงควะระ
+ศักดิ์ยันต์ ชูใจ
+ศักดิ์ศิริมา ขำเอี่ยม
+ศักดิ์สิทธิ์ เถาทอง
+ศักดิ์สิทธิ์ เหมกิตติเกียรติ์
+ศักดิ์ไสว ทองรัตน์
+ศักดิ์ พึ่งเจริญ
+ศักดี เฉียบแหลม
+ศังกร ภูวเจริญ
+ศันสนีย์ ตะโพนทอง
+ศันสนีย์ วิชัยดิษฐ
+ศัลยวิทย์ ศิริมณฑล
+ศานติ อัจจิมากร
+ศาวิตรี ภวาติเศรษฐ์
+ศินิตย์ อณิสันฑ์
+ศิรพร ศิริบุญรักษา
+ศิระ สโตน
+ศิรานุช สุวรรณโชติ
+ศิริ ไกรสมจิตร
+ศิริ ชัยสันธนะ
+ศิริ ธรรมสุริเชษฐ์
+ศิริ ผลินกูล
+ศิริ มัธยมจันทร์
+ศิริ วงศ์ฉิ่งยืนยง
+ศิริ เศวตรักต
+ศิริ หวานสนิท
+ศิริกัญญา แรมวัลย์
+ศิริกุล จินตนางกูร
+ศิริกุล รักเกียรติยศ
+ศิริขวัญ แซ่เฮา
+ศิริฉาย พงศ์สุประดิษฐ์
+ศิริชัย คูอนันต์กุล
+ศิริชัย แซ่เจียง
+ศิริชัย นภาบริรักษ์
+ศิริชัย พินิจวรกุล
+ศิริชัย ลิ้มเลิศตระกูล
+ศิริชัย ศุภรัชตการ
+ศิริชัย หงษ์วิทยากร
+ศิริณัฐ ใจอารี
+ศิริทิพย์ พรหมสกุลชัย
+ศิรินทร จงเสถียร
+ศิรินทร์ นิมมานเหมินทร์
+ศิรินธร ทองสุข
+ศิรินันท์ แซ่อึ่ง
+ศิรินันท์ เอสุจินต์
+ศิรินารถ ติษยางกูร
+ศิริบูรณ์ เล็กผลิผล
+ศิริพงศ์ อินทร์บำรุง
+ศิริพงษ์ ทับทิม
+ศิริพงษ์ วงศ์พิมพ์
+ศิริพงษ์ อุทัยธนารักษ์
+ศิริพร กาศสุวรรณ
+ศิริพร ขุนโอษฐ
+ศิริพร จันกลัด
+ศิริพร เจริญกิจพิมล
+ศิริพร ชาติพาณิชย์
+ศิริพร แซ่ตั้ง
+ศิริพร ดำรงวงศ์ศิริ
+ศิริพร เต็มสุนทร
+ศิริพร เทียนธรรมชาติ
+ศิริพร นิลพราว
+ศิริพร ประยุกต์วงศ์
+ศิริพร พงษ์ชัยประทีป
+ศิริพร พานิชล้อเจริญ
+ศิริพร ภูมิอมร
+ศิริพร ยันต์ตระกูล
+ศิริพร เรืองธวัชศิลป
+ศิริพร เลิศธนาผล
+ศิริพร วัลลภศิริ
+ศิริพร ศรีสิงห์ชัย
+ศิริพร สลับ
+ศิริพร สุขเจริญนุกูล
+ศิริพร แสงเพ็ชร์
+ศิริพร ให้อุดมกาญจนลาภ
+ศิริพร อารมย์สุข
+ศิริพรรณ กลิ่นสวัสดิ์
+ศิริพรรณ ธรรมคุฬห์
+ศิริพรรณ สุขหิรัญกิจ
+ศิริพัฒนา วิเศษแพทยา
+ศิริพันธ์ ลักขณานุกุล
+ศิริภรณ์ เหลี่ยมศิริวัฒนา
+ศิริมา คุ้มโต
+ศิริมา เฟื่องขจร
+ศิริมา อินธำรงค์
+ศิริรักษ์ บุญช่วยเมตตา
+ศิริรัตน์ เข็มนาค
+ศิริรัตน์ แซ่กิม
+ศิริรัตน์ เทพนิมิตร
+ศิริรัตน์ พรพงศ์อธิคม
+ศิริรัตน์ รักธรรม
+ศิริรัตน์ ศรีนาคคำ
+ศิริรัตน์ แสงจันทร์
+ศิริรัตน์ เอี่ยมเวช
+ศิริลักษณ์ จตุเสน
+ศิริลักษณ์ ตั้งเฉลิมกุล
+ศิริลักษณ์ ปั้นบำรุงกิจ
+ศิริลักษณ์ รุจิโกไศย
+ศิริลักษณ์ สาครรัตนกุล
+ศิริลักษณ์ เอกวงค์
+ศิริวรรณ เกิดวัฒนา
+ศิริวรรณ จารุจรณ
+ศิริวรรณ ชุติจาตุรนต์
+ศิริวรรณ ดาวอุดม
+ศิริวรรณ ทองพูล
+ศิริวรรณ บัวศรี
+ศิริวรรณ พระเทพ
+ศิริวรรณ มหาศักดิ์ศิริ
+ศิริวรรณ เลิศสินอุดม
+ศิริวรรณ ศรีบัวเผื่อน
+ศิริวรรณ สันติเวชชกุล
+ศิริวรรณ แสงสุรีย์
+ศิริวรรณ อินทธิ์สัณห์
+ศิริวัฒน์ แซ่โล้ว
+ศิริวัลภ์ ดารากร ณ อยุธยา
+ศิริศักดิ์ จงตระกูล
+ศิริศักดิ์ โรจน์ฤทธากร
+ศิริสุข เรี่ยวเรืองสุข
+ศิริอร เอียประเสริฐ
+ศิริเพ็ญ โกเมนเอก
+ศิริเพ็ญ บุญกังวาน
+ศิริเพ็ญ สินธุธาน
+ศิริโรจน์ สโลภาพ
+ศิลปชัย ไทยประเสริฐ
+ศิลป์ชัย เจริญใจ
+ศิลปวัธน์ ชัยพัฒนาวรรณ
+ศิลา ราชอภัย
+ศิวพร เกลียวอรรคเดช
+ศิวพร ยินดี
+ศิวลี จันทมาศ
+ศิวะพล งามธนวโรทัย
+ศิวาพร แยงคำ
+ศิวิกานติ์ ไวจรรยา
+ศิษฎ์ ฉันทาริยะ
+ศีลวัต อนะธรรมสมบัติ
+ศุขธาพัฒน์ กัณฑ์ชูสิน
+ศุพิรัตน์ สำราญสุขรัตน์
+ศุภกาญจน์ แสวงศักดิ์
+ศุภกิจ พันธ์บุญเกิด
+ศุภกิจ อิงอนุรักษ์สกุล
+ศุภชัย แก้วมีชัย
+ศุภชัย จิตวิสุทธิ์พงศ์
+ศุภชัย แซ่จึง
+ศุภชัย ตุลวรรธนะ
+ศุภชัย นิ่มนวล
+ศุภชัย พงศ์ชัยสิริกุล
+ศุภชัย มั่งเกียรติสกุล
+ศุภชัย ฤทธิ์ลายา
+ศุภชัย วิวัฒนมงคลกุล
+ศุภชัย สนองคุณ
+ศุภชัย แสงฟ้าสกุลไท
+ศุภชัย อึ้งสกุล
+ศุภณัฐ พรหมพิริยาภรณ์
+ศุภนิตย์ โชครัตนชัย
+ศุภพร มังกรกาญจน์
+ศุภมาส ด่านพานิช
+ศุภมิตร สุขศรี
+ศุภรงค์ ละโว้ชัย
+ศุภรัตน์ ยิ่งกวีมานพ
+ศุภราภรณ์ พุทธรัตน์
+ศุภฤกษ์ หล่อพิริยะวงศ์
+ศุภลักษณ์ แซ่แต้
+ศุภลักษณ์ เลิศรัตน์เดชากุล
+ศุภลัคณ์ มีมาก
+ศุภวรรณ เนติธาดา
+ศุภวรรณ สุวรรณเลิศ
+ศุภวัฒน์ สวัสดิ์วงศ์
+ศุภวิศ สิริเกษมสุข
+ศุภษร พรจิตโกวิท
+ศุภอรรถ นัจจะนันทน์
+ศุภาสินี กังวาลเนาวรัตน์
+ศุภโชค ธนปัญจาภรณ์
+ศุรพงษ์ คชาชีวะ
+ศุลีพร สันนะกิจ
+เศกสรร ทองศรีคำ
+เศรษฐชัย ศักดิ์โฆษิต
+เศรษฐา จงพรประเสริฐ
+เศวต ศรีปัญญา
+โศภิดา เตชะศรินทร์
+โศรยา ศุภกรแสงทอง
+สกน มีกังวาล
+สกนธ์ อริยมงคลสกุล
+สกล ชูเกษ
+สกล เปี่ยมวิมล
+สกล ลีลาขจรจิต
+สกล สุรคุปต์
+สกลวรรณ วาสินนท์
+สกาวรัตน์ อัคคีเดช
+สกุณา รุจิเกียรติกำจร
+สกุล นครชัย
+สกุล เหลืองอร่าม
+สกุลรัตน์ ลัทธ์สัมฤทธิ์
+สงกรานต์ จุณณทัศน์
+สงกรานต์ ศิริพานิช
+สงคราม ฉิมพสุทธ
+สงคราม ศรีสุข
+สงบ งามผ่อง
+สงบ นันทขว้าง
+สงบ เย็นฤดี
+สงบ อ้นประดิษฐ์
+สงวน แกล้วกล้า
+สงวน จันทรอักษร
+สงวน ชูตระกูล
+สงวน ตันสุขานันท์
+สงวน นุชรีวรรณ
+สงวน พงษ์หงษ์
+สงวน ภาระโข
+สงวน รุณภัย
+สงวน วิมลสุทธิกุล
+สงวน สงวนเตชะตระกูล
+สงวน สุวิทยาภรณ์
+สงวน อังกุวรกุล
+สงวนรักษ์ ไตรนาจา
+สงวนศรี ภู่งาม
+สงวนศักดิ์ ลิขนานนทวงศ์
+สงัด จันทร์แต้
+สงัด ปริกเพชร์
+สงัด วันณุปถัมภ์
+สงัด เอี่ยมสำอางค์
+สง่า คงสำราญ
+สง่า ฉวีปลั่ง
+สง่า แดงดีเลิศ
+สง่า ธรรมยิ่งยง
+สง่า ปานะนิล
+สง่า ภาษิต
+สง่า รื่นไทย
+สง่า วุฒิมงคลชัย
+สง่า สาหร่าย
+สง่า หอมสมบัติ
+สงุ่น ซื่อมาก
+ส่งศรี แก้วจันทร์
+ส่งศักดิ์ กรณปกรณ์
+สจ๊วต ชาร์ล
+สด พุ่มนิคม
+สดศรี พุ่มเจริญ
+สดาวรรณ บุญเจริญ
+สดใส ยุทธนาสิริกุล
+สตีเฟน ฮาว
+สถาพร คัมภิรานนท์
+สถาพร ชูวงศ์เติม
+สถาพร นีรนาถวงศ์
+สถาพร พึ่งพระเกียรติ
+สถาพร เล้าประเสริฐศรี
+สถาพร สินธุนาวา
+สถาพร อุกกุฏานนท์
+สถิตพงศ์ มนาปราณี
+สถิตย์ ใจสุทธิ์
+สถิตย์ นาวุฒิ
+สถิตย์ ไม้งิ้ว
+สถิตย์ สิงห์โต
+สถิรพันธุ์ เกยานนท์
+สนชัย พิรุณสาร
+สนทิศ สกุลกนก
+สนธยา เด่นวรกุล
+สนธยา โพธิ์น้อย
+สนธยา เสียงวรานนท์
+สนธิ เลื่อนฉวี
+สนธิยา เกียรติวรางกูร
+สนม โตรักษาสกุล
+สนวน ฉิมนาคพันธุ์
+สนอง จันทรศัพท์
+สนอง ตัมพันธุสกุล
+สนอง บุญมีฤทธิ์
+สนอง โพธิ
+สนอง ลีนะวัต
+สนอง สินเบญจทรัพย์
+สนอง อุ่นทรัพย์
+สนั่น กฤษดาธิการ
+สนั่น โคกขำ
+สนั่น ชื่นเผือก
+สนั่น ทองสมบัติ
+สนั่น บุญมาก
+สนั่น พิกุลแย้ม
+สนั่น รักสมยา
+สนั่น ศรีละม้าย
+สนั่น สุขช่วย
+สนั่น อบเชย
+สนาน จันทรเลิศ
+สนาม พลอยศิริ
+สนิท แก้วพล
+สนิท จั่นประดับ
+สนิท ดุษฏีโหนด
+สนิท แท่งทอง
+สนิท บุญพิทักษ์
+สนิท พ่วงพงษ์
+สนิท มาประจวบ
+สนิท ลูกจันทร์
+สนิท สตมหาชลาสินธุ์
+สนิท แสงทอง
+สนิท อุดมธีรกุล
+สนุ่น เชื้อนุ่น
+สปัน พัชรารัตน์
+สภาองค์การลูกจ้างแรงงานแห่งปร สภาองค์การลูกจ้างแรงงานแห่งปร
+สม น้อยปรีชา
+สม วรรณประภา
+สมกมล มะโนกิจ
+สมคล เชื้อเมืองทาน
+สมควร จันทร์นุ้ย
+สมควร แซ่แต้
+สมควร นัยศิริ
+สมควร พัฒนพงษ์ไพบูลย์
+สมควร รักกลัด
+สมควร ศรีอินทร์
+สมควร ไสยสมบัติ
+สมคิค วัฒนเสรีวงศ์
+สมคิด แก้วชิงดวง
+สมคิด จอนสมจิตต์
+สมคิด ใจอิ่ม
+สมคิด แซ่จิว
+สมคิด ตั้งศิริทรัพย์
+สมคิด ทะรังศรี
+สมคิด นิคมเขตต์
+สมคิด ใบมงคล
+สมคิด พร้อมมูล
+สมคิด เพ็งพาด
+สมคิด มูลทองชุน
+สมคิด รุ่งเรืองศรี
+สมคิด วันวะนา
+สมคิด ศิริรัตนวุฒิ
+สมคิด สิงห์สำราญ
+สมคิด แสงนนท์ตระกูล
+สมคิด อ้นเปรม
+สมคิด อุนทริจันทร์
+สมจันทร์ เหรียญปัญญากุล
+สมจิต จันทุมากร
+สมจิต ตัณฑสุทธิ์
+สมจิต บุญทวี
+สมจิต เพ็งสวน
+สมจิต วรรณรักษ์
+สมจิต สุทธิมาลย์
+สมจิตต์ กนกชัยปราโมทย์
+สมจิตต์ แก้วเกื้อกูล
+สมจิตต์ จิตต์สุทัศน์
+สมจิตต์ ชินราช
+สมจิตต์ แซ่เอี้ย
+สมจิตต์ ถิ่นถนอม
+สมจิตต์ ธัมมรัคคิต
+สมจิตต์ เบนกุโรโม
+สมจิตต์ พลามิตร
+สมจิตต์ ภูมิจิตอมร
+สมจิตต์ รามศร
+สมจิตต์ วชิรวณิชกิจ
+สมจิตต์ ศาสตร์สุข
+สมจิตต์ สิงหา
+สมจิตต์ หมู่ผึ้ง
+สมจิตต์ อิงคะวัต
+สมจิตร เกตุติมะ
+สมจิตร จรรยา
+สมจิตร ใจวังโลก
+สมจิตร แซ่เบ๊
+สมจิตร ทองสุภร
+สมจิตร เนียมศิริ
+สมจิตร ปิ่นมณี
+สมจิตร พุ่มประดับ
+สมจิตร เมี่ยงบัว
+สมจิตร เลิศถวิลจิร
+สมจิตร ศรีสุวณิชกุล
+สมจิตร สินเพ็ง
+สมจิตร หมัดโน๊ต
+สมจิตรา จันโภคา
+สมจิตร์ ฉัตร์ทอง
+สมจิตร์ ทิพย์ประภาแย้ม
+สมจิตร์ พึ่งยนต์
+สมจิตร์ วัฒนเจริญพร
+สมจิตร์ หวังดิลก
+สมจินตนา วังทอง
+สมฉวี เหมะวิริยาพรวัฒนา
+สมชัย กิจเลิศไพโรจน์
+สมชัย คล่องธนกิจ
+สมชัย จิรชยางกูร
+สมชัย ชัยจรูญพร
+สมชัย ไชยศรีธรรมคุณ
+สมชัย แซ่เลี่ยง
+สมชัย ตั้งนิรันดร
+สมชัย ทรงฮง
+สมชัย นรเศรษฐ์โศภณ
+สมชัย โบสุวรรณ์
+สมชัย พรมงคลสุข
+สมชัย ฟุ้งสิริรัตน์
+สมชัย ยุทธนาภินันท์
+สมชัย ล้วนใจสนธิ์
+สมชัย วงศ์พันธ์งาม
+สมชัย วิศวสมภพ
+สมชัย ศิลปสาธิต
+สมชัย สายด้วง
+สมชัย สุโชติกพันธุ์
+สมชัย โหตรจิตร
+สมชัย อาภาวัชน์
+สมชาญ ลีมาสวัสดิ์กุล
+สมชาติ จิตตวิสุทธิวงศ์
+สมชาติ ดลยานุเคราะห์
+สมชาติ นิรันดร์วงศ์วาน
+สมชาติ เพ็ญเสงี่ยม
+สมชาติ เลิศธรรมนาถ
+สมชาติ สันตินรศักดิ์
+สมชาติ อ่วมประเสริฐ
+สมชาย กลพิสุทธิ์
+สมชาย กาญจนกันติการ
+สมชาย กิตติเลิศไพศาล
+สมชาย เกิดเรือง
+สมชาย แก้วสมบูรณ์
+สมชาย ขุนวิเศส
+สมชาย ค้าทันเจริญ
+สมชาย โฆษิตวิวัฒน์
+สมชาย จงเทิดทูนสกุล
+สมชาย จันทรประทิน
+สมชาย จิตตรานนท์
+สมชาย จุนเจือทรัพย์
+สมชาย เจษฎานภาวงศ์
+สมชาย ฉัตรมงคลเกษม
+สมชาย ชลพิไลพงศ์
+สมชาย ชาญสมอน
+สมชาย ชุ่มไชยพฤกษ์
+สมชาย โชคสิริสวัสดิ์
+สมชาย แซ่คู
+สมชาย แซ่ตั้ง
+สมชาย แซ่ลี้
+สมชาย แซ่ฮ้อ
+สมชาย แซ่เฮง
+สมชาย แซ่โล้ว
+สมชาย ดีมงคลสุข
+สมชาย ตระกูลนิ่มนวล
+สมชาย ตั้งปนิธานดี
+สมชาย ตันเจริญ
+สมชาย เตี้ยบัวแก้ว
+สมชาย ถิรโสตถินานนท์
+สมชาย ทองหล่อ
+สมชาย เทอดวงศ์วรกุล
+สมชาย ธรรมกิจไพโรจน์
+สมชาย ธเนศนิตย์
+สมชาย นาคพลั้ง
+สมชาย นิลวณิชย์
+สมชาย บำรุงวงศ์
+สมชาย บุญสุวรรณ์
+สมชาย ประกายโกวิท
+สมชาย ปลื้มจิต
+สมชาย ปุณณรุจาวงษ์
+สมชาย เผื่อนจาง
+สมชาย พรถิระมงคล
+สมชาย พวงทอง
+สมชาย พิทักษ์กิจถาวร
+สมชาย พุ่มสุข
+สมชาย โพธิ์งาม
+สมชาย ภัทรางกูร
+สมชาย มณีเขียว
+สมชาย มารีกัน
+สมชาย เมฆเนย
+สมชาย เย็นใจเฉื่อย
+สมชาย รัตนชาติกุล
+สมชาย รุ่งศรีศศิธร
+สมชาย โรจนวรโสภณ
+สมชาย ลาภอุดมทรัพย์
+สมชาย ลี้ลัทธเกียรติ
+สมชาย เลิศวิบูลย์กิจ
+สมชาย วงศ์ตระกูลจง
+สมชาย วงษ์หิรัญวานิช
+สมชาย ว่องวงศ์ศรี
+สมชาย วานิชวัฒน์
+สมชาย วิษณุวงศ์
+สมชาย ศรบรรจง
+สมชาย ศรีวิไล
+สมชาย ศิริธีราเจษฎ์
+สมชาย ศุภลักษณ์วัจนะ
+สมชาย สนสง่า
+สมชาย สว่างน้อมจิตต์
+สมชาย สัยละมัย
+สมชาย สินธุประภา
+สมชาย สุขนันทศักดิ์
+สมชาย สุทธิขาว
+สมชาย สุรเดชานันท์
+สมชาย เสาหง
+สมชาย หงษ์รัตนวิจิตร
+สมชาย หอมกระหลบ
+สมชาย เหลืองศิริรังษี
+สมชาย อนันต์สุขบรรณ
+สมชาย อยู่เกิด
+สมชาย อังกูรารักษ์
+สมชาย อาจหาญ
+สมชาย อิ่มสมบูรณ์
+สมชาย เอกปัญญากุล
+สมชาย เอื้อเกษมสิน
+สมญา ชาญกระบี่
+สมดี ว่องไววณิชกุล
+สมถวิล จันทร์สิริพจน์
+สมถวิล ทองเหง้า
+สมถวิล พรหมพงษ์
+สมถวิล เลี้ยวพรประสาท
+สมถวิล แสงนิลศิริ
+สมทบ ภู่มงกุฎชัย
+สมทรง ขอพบสุข
+สมทรง เจริญยิ่ง
+สมทรง ตันประเสริฐ
+สมทรง เนื่องจากนาค
+สมทรง พานิชยะมนตรี
+สมทรง รุ่งเรืองศิลป์
+สมทรง เศวตเวช
+สมทรง แสงสว่าง
+สมทรัพย์ พรศิริลัคณา
+สมนัส ขรรค์ชัย
+สมนึก กฤษณสุวรรณ
+สมนึก เกิดเปี่ยม
+สมนึก คงยิ่ง
+สมนึก จรูญศักดิ์
+สมนึก จึงจตุรพิธ
+สมนึก เฉลิมศรี
+สมนึก ชูทรัพย์
+สมนึก แซ่อื้อ
+สมนึก ตั้งวัชรพงศ์
+สมนึก ท้วมแสง
+สมนึก ธัมพิพิธ
+สมนึก เนียมทับทิม
+สมนึก บูรณะสมษัติ
+สมนึก เปรมรัตนา
+สมนึก พลายงาม
+สมนึก พูลโอษฐ์
+สมนึก มงคลจรัสแสง
+สมนึก ยอดบริบูรณ์
+สมนึก รุ้งกมลพันธ์
+สมนึก เลิศสิริสุข
+สมนึก วัชรบูรณพงษ์
+สมนึก ศรีประดับรัตน์
+สมนึก สนธิโหมด
+สมนึก สิงหาคุณ
+สมนึก สุทธิวงศ์
+สมนึก หงุ่ยกระโทก
+สมนึก อมรสิริพาณิชย์
+สมนึก อิสรั่น
+สมบัตร์ ทรัพย์แย้ม
+สมบัติ กุลวุฒิ
+สมบัติ เขียวโสภา
+สมบัติ เครืออาษา
+สมบัติ จารุบรรยงค์
+สมบัติ ฉัตรวรุณรัตน์
+สมบัติ ไชยทรัพย์
+สมบัติ ด้วงวงศ์ศรี
+สมบัติ เตชอัครเสถียร
+สมบัติ ทองย้อย
+สมบัติ เธียรพจน์
+สมบัติ บัวรุ่ง
+สมบัติ ประเสริฐนพคุณ
+สมบัติ ผูกเกษร
+สมบัติ พาเจริญสุข
+สมบัติ โพธิบุญ
+สมบัติ มะหะหมัด
+สมบัติ ยิ่งเจริญ
+สมบัติ เรื้อก
+สมบัติ วงศ์กำชัย
+สมบัติ วิภูศิริ
+สมบัติ ศรเลิศ
+สมบัติ สมศรีอักษรแสง
+สมบัติ สิงห์สวัสดิ์
+สมบัติ สุนทรเสณี
+สมบัติ หม่อมประเสริฐ
+สมบัติ อยู่ประเสริฐ
+สมบัติ อุตมะวิริยางกูร
+สมบุญ เกตมณี
+สมบุญ จารุรัตนเกื้อ
+สมบุญ แซ่หยิบ
+สมบุญ ทองพงษ์เนียม
+สมบุญ บุญวัฒนา
+สมบุญ พูนสิรสิน
+สมบุญ รักษ์สุรวงศา
+สมบุญ วาทรัพย์
+สมบุญ สีน้ำเงิน
+สมบุญ อภิวรรณศรี
+สมบูรณ์ กนกนภากุล
+สมบูรณ์ กิจรังษีวิบูลย์
+สมบูรณ์ แก้วการ
+สมบูรณ์ คงมั่น
+สมบูรณ์ งามธรรมศิริ
+สมบูรณ์ จันโทวาท
+สมบูรณ์ จุลพล
+สมบูรณ์ ฉายะโอภาส
+สมบูรณ์ ชุณหะวัณ
+สมบูรณ์ แซ่ฟุ้ง
+สมบูรณ์ ณัฎฐสมบูรณ์
+สมบูรณ์ ตั้งประดิษฐ์
+สมบูรณ์ เต่าทอง
+สมบูรณ์ ทองอร่าม
+สมบูรณ์ ธนาสุวรรณดิถี
+สมบูรณ์ นิมะ
+สมบูรณ์ บุญล้นเหลือ
+สมบูรณ์ ประเสริฐสุขแสน
+สมบูรณ์ ผ่องไสว
+สมบูรณ์ พรเดชเดชะ
+สมบูรณ์ พิเศษพัฒนกุล
+สมบูรณ์ ฟูเฟื่องสมบัติ
+สมบูรณ์ มั่งมี
+สมบูรณ์ ยันนาดี
+สมบูรณ์ รื่นราตรี
+สมบูรณ์ ลี่ทองอิน
+สมบูรณ์ วงศ์สุวรรณนิธิ
+สมบูรณ์ วัยวิรัตน์
+สมบูรณ์ ศริมโนนุกุล
+สมบูรณ์ ศิริบรรจง
+สมบูรณ์ สมอุดร
+สมบูรณ์ สาสะเดาะห์
+สมบูรณ์ สุทธิชัง
+สมบูรณ์ แสงดี
+สมบูรณ์ หาญพัฒนชัยกูร
+สมบูรณ์ อรรคศิรินนท์
+สมบูรณ์ อินจำปา
+สมบูรณ์ โอภาสเจริญวิทย์
+สมประสงค์ บุญยะชัย
+สมประสงค์ อุ่นละม้าย
+สมปอง เกษร์มณี
+สมปอง จิวไพโรจน์กิจ
+สมปอง ดวงประเสริฐ
+สมปอง เทพเทพา
+สมปอง บูรณะวุฒิ
+สมปอง พุดตาล
+สมปอง ยงวณิชย์
+สมปอง แวววัชระ
+สมปอง สิงหเสนี
+สมปอง เหล่าเพ็ชรรัตน์
+สมพค ศีลพิพัฒน์
+สมพงศ์ แซ่โค้ว
+สมพงศ์ รัตนบุรี
+สมพงษ์ กรรณสูต
+สมพงษ์ กิตติรัตนาภินันท์
+สมพงษ์ โกศลรอด
+สมพงษ์ คล้ายมี
+สมพงษ์ จันทร์จำรัส
+สมพงษ์ จีนเวชศาสตร์
+สมพงษ์ ฉายแก้ว
+สมพงษ์ ชีวะเจริญไทย
+สมพงษ์ แซ่ตั้ง
+สมพงษ์ ณรงค์เปลี่ยน
+สมพงษ์ ตันตระกูล
+สมพงษ์ ทรงทรัพย์กุล
+สมพงษ์ เทพไกรลาศ
+สมพงษ์ นันทพรพิพัฒน์
+สมพงษ์ บุญคุณ
+สมพงษ์ ประภาศิริ
+สมพงษ์ ปุยยะรุน
+สมพงษ์ พงษ์เภตรา
+สมพงษ์ พินิจการณ์
+สมพงษ์ ไพจิตร
+สมพงษ์ มังกรพานิช
+สมพงษ์ ยูฮันเงาะ
+สมพงษ์ รุจิขจร
+สมพงษ์ ลือชาติเมธิกุล
+สมพงษ์ วงสอาด
+สมพงษ์ วิริยะมนตรี
+สมพงษ์ ศรีสากล
+สมพงษ์ สกุลสุภายนา
+สมพงษ์ สะสมทรัพย์
+สมพงษ์ สินสดวก
+สมพงษ์ สุนทรธรรม
+สมพงษ์ แสงสินทรัพย์
+สมพงษ์ หาญพาณิชย์พันธุ์
+สมพงษ์ อมรธัญสิริกุล
+สมพงษ์ อาหมัด
+สมพจน์ กยาวัฒนกิจ
+สมพจน์ หอมนิยม
+สมพร กิจกังวาล
+สมพร แก้วนิล
+สมพร คงสิทธิ์
+สมพร งอนหอม
+สมพร จันทะรังศรี
+สมพร แจวเจริญ
+สมพร ชัยนิคม
+สมพร เชื้อเกตุ
+สมพร แซ่อึ้ง
+สมพร ดีไพศาล
+สมพร ตุ่มมะ
+สมพร ทองประดิษฐ
+สมพร เทียนทัด
+สมพร น้อยเข็มเงิน
+สมพร บัวอุไร
+สมพร บุตรขันทอง
+สมพร ปานใยสมบูรณ์
+สมพร พงษ์สุวรรณ
+สมพร พาชีรัตน์
+สมพร เพชรดี
+สมพร ภู่พวง
+สมพร มิรอซา
+สมพร รอดรัศมี
+สมพร เรืองฤทธิ์
+สมพร เลาหรัตนาหิรัญ
+สมพร วรรณชนะ
+สมพร วิลัยรัตน์
+สมพร ศรีเพชร
+สมพร สนทอง
+สมพร สาธิตพิฐกุล
+สมพร สุขแก้ว
+สมพร แสงนนท์
+สมพร หาญพงษ์พันธุ์
+สมพร อ่องละออ
+สมพร อิศรานุรักษ์
+สมพฤษ์ พรหมมิ
+สมพล ฉายายน
+สมพล ธาดากร
+สมพล พึงมงคลชัยกิจ
+สมพล วงศ์ธิบดีเดช
+สมพล สุพโล
+สมพักตร์ มหาพาณิชย์
+สมพันธ์ บุญกังวาล
+สมพิศ กระแสร์คุปต์
+สมพิศ ควรแถลง
+สมพิศ ชุ่มชวย
+สมพิศ โตมะโน
+สมพิศ เนินกร่าง
+สมพิศ พัฒนาฤดี
+สมพิศ ยอดสวัสดิ์
+สมพิศ วิชัยกุล
+สมพิศ สิลุจจยานนท์
+สมพิศ อ่วมธรรม
+สมภพ กิจไชยา
+สมภพ จิรจรัล
+สมภพ ติรชุลี
+สมภพ ประกอบนพเก้า
+สมภพ พูนผลเจริญศรี
+สมภพ ลมลอย
+สมภพ ศรุตวรสกุล
+สมภพ สุรักขกะ
+สมภพ อัมพุประภา
+สมภาพ รัตนดากุล
+สมมาต สังขพันธ์
+สมมาตร พรหมานุกูล
+สมมาตร์ ช้างเผือก
+สมมาศ กวยมงคล
+สมมิตร จันทร์ภักดี
+สมมุติ รัชตะวรรณ
+สมยศ เกิดอนันต์
+สมยศ จั่นเพ็ชร
+สมยศ เชี่ยวชาญแต่ง
+สมยศ ไตรประเสริฐพงศ์
+สมยศ บุญชัยศรี
+สมยศ พรเจริญวัฒนา
+สมยศ มหัทธนะมงคล
+สมยศ รุจิโมระ
+สมยศ วิบูลย์ปิ่น
+สมยศ สังข์ประดิษฐ์
+สมยศ หลีขาว
+สมยา รอดหร่าย
+สมร จันทร์เลิศ
+สมร ไตรวิชา
+สมร ปานย้อย
+สมร มีแก้ว
+สมร ศิธรกุล
+สมร อรรถพิทย์
+สมรรัตน์ ดิษฐอุดมโพธิ์
+สมรส มงคล
+สมรัก ไพบูลย์วีระสกุล
+สมรักษ์ ต่อวงศ์ไพชยนต์
+สมรัตน์ ปรีเจริญ
+สมฤกษ์ หิรัญศุภโชติ
+สมฤดี บุญประเสริฐ
+สมฤดี เสนะวีณิน
+สมฤทัย กล่อมน้อย
+สมลักษณ์ กิติพงษ์
+สมลักษณ์ ซ่อมประดิษฐ์
+สมลักษณ์ ประสิทธิเมกุล
+สมลักษณ์ ลินจงเจริญ
+สมลักษณ์ สุวรรณแสง
+สมวงศ์ คร้ามกำจร
+สมวงษ์ ชำนาญกิจจา
+สมวิทย์ พงศ์บริพัตร
+สมศรี กิจรักษา
+สมศรี ขาวทอง
+สมศรี ง่วนจร
+สมศรี จิตจรัสแสง
+สมศรี ฉิมคล้าย
+สมศรี ชูศรีนวล
+สมศรี แซ่ตั้ง
+สมศรี แซ่โง้ว
+สมศรี ตั้งเจริญ
+สมศรี เถ่ง
+สมศรี เทศธรรม
+สมศรี นาสมฝัน
+สมศรี บุญศักดิ์
+สมศรี ปัทมพงศ์ประยูร
+สมศรี พรปรัชญาพงศ์
+สมศรี พูลทรัพย์
+สมศรี ภูหานาม
+สมศรี ยศชู
+สมศรี รัตนประภาต
+สมศรี ลิขิตสกุลชัย
+สมศรี วงษ์หวังจันทร์
+สมศรี วิริยะบุศย์
+สมศรี ศักดิ์เสมอพรหม
+สมศรี สลัดยะนันท์
+สมศรี สีวันนา
+สมศรี เส็งดอนไพร
+สมศรี หามนตรี
+สมศรี อังคนาวราพันธุ์
+สมศรี อุ่นวัฒนนุกูล
+สมศักดิ์ กรุงทองจันทร์
+สมศักดิ์ กาญจนประพิณ
+สมศักดิ์ กิตติพิทักษ์
+สมศักดิ์ เกรียงไชยกิจกุล
+สมศักดิ์ แก้วบวร
+สมศักดิ์ ขัตตุพงศ์วณิช
+สมศักดิ์ คงไพศาลถาวร
+สมศักดิ์ คุ้มภัยพาล
+สมศักดิ์ จงวนิชย์
+สมศักดิ์ จันทรกุล
+สมศักดิ์ จารุจุฑารัตน์
+สมศักดิ์ จินารักษ์
+สมศักดิ์ เจนจรัสสกุล
+สมศักดิ์ เจือจันทร์
+สมศักดิ์ เฉลยสังข์
+สมศักดิ์ ชาญสมร
+สมศักดิ์ ชูวงศ์วาลย์
+สมศักดิ์ ใช่แน่
+สมศักดิ์ แซ่ตั้ง
+สมศักดิ์ แซ่อึ้ง
+สมศักดิ์ แซ่โตว
+สมศักดิ์ ดีนก
+สมศักดิ์ ตระกูลโอสถ
+สมศักดิ์ ตั้งเจริญธรรม
+สมศักดิ์ ติลกเลิศ
+สมศักดิ์ โตรักษา
+สมศักดิ์ ทรัพย์วิไล
+สมศักดิ์ ทั่งทอง
+สมศักดิ์ เที่ยงสมบูรณ์
+สมศักดิ์ ธรฤทธิ์
+สมศักดิ์ นวลอุไร
+สมศักดิ์ นินนาท
+สมศักดิ์ บวรอนันต์
+สมศักดิ์ บุญมาเลิศ
+สมศักดิ์ บูรณะศิลปกิจ
+สมศักดิ์ ประเสริฐประศาสน์
+สมศักดิ์ ปาลศรี
+สมศักดิ์ ผจงพฤทธิ์
+สมศักดิ์ พดด้วง
+สมศักดิ์ พฤกษะวัน
+สมศักดิ์ พันธุ์สน
+สมศักดิ์ พืชสะกะ
+สมศักดิ์ เพียรรังสรรค์
+สมศักดิ์ ภคสิริกุล
+สมศักดิ์ มงคลมหาชัย
+สมศักดิ์ มาดี
+สมศักดิ์ มโนทรัพย์บำรุง
+สมศักดิ์ ยิ่งประเสริฐ
+สมศักดิ์ ระวิโรจน์
+สมศักดิ์ ราชแพทยาคม
+สมศักดิ์ เรืองโรจน์
+สมศักดิ์ ลิขิตวิทยศักดิ์
+สมศักดิ์ ลือพัฒนสุข
+สมศักดิ์ โล่ห์สวัสดิ์
+สมศักดิ์ วงษ์พิพัฒน์พงษ์
+สมศักดิ์ ว่องอนันต์วิทย์
+สมศักดิ์ วานิชยางกูร
+สมศักดิ์ วิวัฒนศิริศักดิ์
+สมศักดิ์ ศรศรีทอง
+สมศักดิ์ ศรีสกาวกุล
+สมศักดิ์ ศักดิ์โศภณกุล
+สมศักดิ์ ศิริไพรวัน
+สมศักดิ์ สดใส
+สมศักดิ์ สรไชยเมธา
+สมศักดิ์ สันทัตเวช
+สมศักดิ์ สินชัยดี
+สมศักดิ์ สุขผดุง
+สมศักดิ์ สุทธิผลไพบูลย์
+สมศักดิ์ สุวรรณพิบูลย์
+สมศักดิ์ เสือโตงาม
+สมศักดิ์ โสตถิเสาวภาคย์
+สมศักดิ์ หวังโซ๊ะ
+สมศักดิ์ เหลืองเจริญวัฒนา
+สมศักดิ์ อภิจารี
+สมศักดิ์ อรุณรัตน์
+สมศักดิ์ อัศวยุทธพล
+สมศักดิ์ อิงคนันท์
+สมศักดิ์ อุตมะ
+สมศักดิ์ เอื้อราศีกุล
+สมศิริ พัฒนประภาพันธุ์
+สมษร ทองวิวัฒน์
+สมสนิท ตามพร
+สมสมัย ธะเศรษฐ
+สมสรี พงศ์แพทย์พินิจ
+สมส่วน ฉายาลักษณ์
+สมสิทธิ์ วิเชษนลินวงษ์
+สมสุข ขันติอุดม
+สมสุข พรามเจริญ
+สมสุข สิกขปัญญา
+สมหญิง ทีปะสมบัติ
+สมหมาย กลิ่นแจ่ม
+สมหมาย เขตรคง
+สมหมาย จิตติวัฒนกุล
+สมหมาย ชินวิชา
+สมหมาย ดาบทองดี
+สมหมาย ทวีสุทธิ์
+สมหมาย นาคสมบูรณ์
+สมหมาย ประภากร
+สมหมาย พลายเมือง
+สมหมาย ภรารัตนวัฒน์
+สมหมาย ไม้เกตุ
+สมหมาย ละอองศรี
+สมหมาย วโรดมวิทยา
+สมหมาย สอนวิทย์
+สมหมาย สุดขาว
+สมหมาย หวังทอง
+สมหมาย อิทธิมณีรัตน์
+สมหวัง เกษมโกสินทร์
+สมหวัง ชุนเจริญ
+สมหวัง นันต์จารุวงศ์
+สมหวัง เพชรพินิจวงศ์
+สมหวัง ลอมาเละ
+สมหวัง สาธิตอเนกชัย
+สมหวัง อรุณสวัสดิ์
+สมอาจ อยู่กิจติชัย
+สมัคร ตั้งประเสริฐสม
+สมัคร มุ่งหมาย
+สมัคร อินทรศิลป์
+สมัย เขียวสะอาด
+สมัย แซ่จัง
+สมัย นิลโต
+สมัย เพิ่มพูลวิทยา
+สมัย เลิศกลาง
+สมัย สีที
+สมัย อุณหพันธ
+สมาน กิ่งพรไพนิพัฒน์
+สมาน ค้าคล่อง
+สมาน เจนนภา
+สมาน เซ็นเชาวนิช
+สมาน โตกระจ่าง
+สมาน ธูปเทียน
+สมาน บุษยทริกากรณ์
+สมาน พลีบัตร
+สมาน ม่วงสีตอง
+สมาน แย้มเกษร
+สมาน เลี้ยงประยูร
+สมาน ศิริไพพรรณ
+สมาน สีทา
+สมาน โสด้วง
+สมาน อับดุลเลาะห์
+สมานพล อยู่อ่อน
+สมารุต มะรุลี
+สมิต วรมงคล
+สมิทธิ์ สหนาวิน
+สมุทร แพรมณี
+สมเกลียว บุญคง
+สมเกียรติ กิตติสุวรรณ์
+สมเกียรติ ขวัญดี
+สมเกียรติ งามเสงี่ยม
+สมเกียรติ จิรรัตนชาญ
+สมเกียรติ ชวลิตจิราพันธุ์
+สมเกียรติ ไชยสิงห์
+สมเกียรติ แซ่เบ๊
+สมเกียรติ ตั้งตรงจิตร์
+สมเกียรติ ไตรรัตน์ทวีสุข
+สมเกียรติ แท่นทอง
+สมเกียรติ นิรันดร์วงศ์วาน
+สมเกียรติ ประกอบสุพรรณ
+สมเกียรติ ผลวิเศษชัยกุล
+สมเกียรติ พันธุ์ศิริ
+สมเกียรติ ฟูกระเดื่อง
+สมเกียรติ เมืองประเสริฐ
+สมเกียรติ รุจิรวัฒน์
+สมเกียรติ เลิศลบธาตรี
+สมเกียรติ วัฒนธรรม
+สมเกียรติ ศรทรง
+สมเกียรติ ศุภโกวิท
+สมเกียรติ สิงห์แก้ว
+สมเกียรติ สุรเชษฐ์กิจ
+สมเกียรติ หาญภัทรานนท์
+สมเกียรติ อรุโณทัยจิตร
+สมเกียรติ เอนทะมิน
+สมเจต เกตุแก้ว
+สมเจตน์ จันทร์กระจ่าง
+สมเจตน์ ธำรงราชนิติ
+สมเจตน์ เลิศพลาพงศ์
+สมเจตน์ เอี่ยมอธิฤทธิ์
+สมเด็จ สืบเหล่ารบ
+สมเดช ดุลยอนุกิจ
+สมเดช มณีไมตรีจิต
+สมเดช สุวรรณนาค
+สมเพ็ชร ธรรมถาวรวณิช
+สมเหมือน ประไพย์
+สมโชค ลิ้มเจริญ
+สมโพธิ สรัคคานนท์
+สมโภช เปลี่ยนบางยาง
+สมโภชน์ แก่นทองแดง
+สมโภชน์ แตงบุตร
+สมโภชน์ พุฒสุวรรณ
+สมโภชน์ ศรีธนสุกาญจน์
+สมโภชน์ อัศวศิริโรจน์
+สมใจ กาญจนะวาศ
+สมใจ ขำหาญ
+สมใจ จันทร์ประสิทธิ์
+สมใจ เจียมศุภกิตต์
+สมใจ ชื่นอารมย์
+สมใจ แซ่ย่อง
+สมใจ ฐิวรินทร์
+สมใจ ตันชาลี
+สมใจ ทองรอด
+สมใจ นันทศิลปชัย
+สมใจ บุญรัตนเนตร
+สมใจ ปิยะรังษี
+สมใจ พวงทอง
+สมใจ ฟองจันทร์
+สมใจ มีประดิษฐ์
+สมใจ รื่นเริง
+สมใจ เลียงวัฒนคล
+สมใจ วิวัฒน์วานิช
+สมใจ ศิริกมลมาศ
+สมใจ สว่างแสนสุข
+สมใจ สุขเสริมสกุล
+สมใจ หงษาครประเสริฐ
+สมใจ อมาตยกุล
+สมใจ เอียการนา
+ส้มจีน นิ่มวิบูลย์สม
+ส้มเกลี้ยง สร้างสุขดี
+สยาม ขำแป้ง
+สยาม สาคร
+สยุมพร รัศมีธารา
+สรชัย โพธิ์ชัย
+สรนพ ชวนบุญ
+สรภัย แซ่เหลี่ยว
+สรรค์ชัย เค้าฉิม
+สรรชัย ทองใจ
+สรรพชัย พิทักษากร
+สรรักษ์ ผ่องใส
+สรรเสริญ ชวนประพันธ์
+สรรเสริญ แสงดาว
+สรวงสุดา ค้ำจุน
+สรวุฒิ ธนเขมภัทร
+สรศักดิ์ แซ่เบ๊
+สรศักดิ์ ลาภรัตนไตร
+สรศักดิ์ เอี่ยมโสภณา
+สร้อย ตันเจริญ
+สร้อยทิพย์ คงถาวรสกุล
+สร้อยสอ สุวรรณน้อย
+สรัญญะวงษ์ เกตุฉัตราริยะกุล
+สรัญธร สมประกอบ
+สราญทิพย์ จารุบริสุทธิคุณ
+สรายุทธ สังข์วิเศษ
+สราวุฒิ เกษณียบุตร
+สราวุธ ไชยสว่างศิลป์
+สราวุธ มณีเสาวนพ
+สราวุธ เอี่ยมสงคราม
+สรินทิพย์ หุ่นศาสตร์
+สรียา ทองกระจ่างเนตร
+สฤษฏพร นิคมประศาสน์
+สลวย คชรัตน์
+สละ ดะเงาะ
+สละ รอดปราณี
+สลักจิต ธรรมเกษร
+สลาม เจ๊ะเซ็น
+สลิลโรจน์ รุ่งสมบูรณ์
+สวง โชคมั่งมี
+สวง พวงพิมาย
+สวง สัญกรณ์
+สวงค์ ปราบพุทธจา
+สวดี มานะนิตย์
+สวนีย์ วงษ์เวทย์
+สวรรค์ คมสัน
+สวรรยา นันทไตรเดช
+สวลี อิศรางกูร ณ อยุธยา
+สวัสดิ์เกียรติ สว่างศรี
+สวัสดิ์ ขติยะสุนทร
+สวัสดิ์ จ่างเจริญ
+สวัสดิ์ ช่างหล่อ
+สวัสดิ์ ต้นรัศมี
+สวัสดิ์ ธนาศรีสวัสดิ์
+สวัสดิ์ บุญยรัตประภา
+สวัสดิ์ ผุงเพิ่มตระกูล
+สวัสดิ์ เพชรตระกูล
+สวัสดิ์ มาลีวิลาศ
+สวัสดิ์ ฤทธิ์ทองพิทักษ์
+สวัสดิ์ วิไลรางกูร
+สวัสดิ์ สมบูรณ์ชัยวงศ์
+สวัสดิ์ สุขทั่วญาติ
+สวัสดิ์ หนูไชยา
+สวัสดิ์ อินทปุระ
+สวาท เกตุปาระ
+สวาท ทรัพย์มาก
+สวาท มงคลสวัสดิ์
+สวาท หงษ์เกียร์
+สวาสดิ์ รมณียธรรม
+สว่าง จันทรา
+สว่าง ต่อสหะกุล
+สว่าง ปึกขาว
+สว่าง รัศมีฉาย
+สว่าง สามโกเศศ
+สว่างกิจ อมราชีวะ
+สว่างจิตร สวนจันทร์
+สวิง เกตุโกมุท
+สวิง เลี้ยงบำรุง
+สวิน ทิมมณีฉาย
+สสิธร นากสุก
+สหรัฐ ไชยเผือก
+สหัส เชื้อสุวรรณ
+สหัสชัย รัชตโพธิ์
+สอดศรี จันทร์กระจ่าง
+สอน ศรีเนตร
+สอางค์ คชเสนี
+สอาด กาญจนอุดม
+สอาด จีนะวานิช
+สอาด เทศอินทร์
+สอาด พรพงษ์
+สอาด ยั่งยืน
+สอาด สกุมา
+สอาด เหลียวอินทร์
+สอิ้ง กองหิรัญ
+สอิ้ง บุญธรรม
+สอิ้ง ศรีพนม
+ส่องศรี งามไพบูลย์
+สะตาลีราห์ บูซัล
+สะหมัด เลาะศิริ
+สะอาด ถนอมวงศ์
+สะอาด วงเวียน
+สะอารี แวมูดอ
+สะใบ มะลิใจ
+สัคค์ รัตนธราธร
+สังข์ เผ่าพิมพา
+สังคม ราศรี
+สังวร เพชรประสม
+สังวรณ์ วะเกิดเป้ง
+สังวาลย์ กลิ่นมาลัย
+สังวาลย์ จี่เพชร
+สังวาลย์ นัยศิริ
+สังวาลย์ เพ็ชรนุช
+สังวาลย์ ศรีบุตร
+สังวาลย์ อภัยภักดิ์
+สังเวียน ก้องเวหาสิงหล
+สังเวียน เชาวลิต
+สังเวียน บุญเสงี่ยม
+สังเวียน ลาภพิเศษ
+สังเวียน แหล่งหล้า
+สัจจะ ฤทธิกุลประเสริฐ
+สัจจา สถิราวุธ
+สัญชัย คล้ายชุมแสง
+สัญชัย เธียรสวัสดิ์กิจ
+สัญชัย ลิขิตลัญฉกร
+สัญชัย เหมประชิตชัย
+สัญญา คล้ายจินดา
+สัญญา นุ่มแสง
+สัญญา รัศสุวรรณ
+สัญญา สุขพณิชนันท์
+สัณชาย วิสุทธานนท์
+สัณห์ นิวาสะวัต
+สัตยา ศรีอ่อน
+สันฐัทฒ์ ทองมา
+สันติ กัณนกิจ
+สันติ คุตตะสิงคี
+สันติ จินดาคมน์
+สันติ ชุ่มวรรณ์
+สันติ ตติยตฤษณา
+สันติ ทรงศิริ
+สันติ นิมมานนิตย์
+สันติ ผลประเสริฐ
+สันติ โพธิ์ทอง
+สันติ เย็นสถิตย์
+สันติ เลิศสกุลพันธ์
+สันติ วิไลนำโชคชัย
+สันติ สตาเขต
+สันติ สุขมาก
+สันติ หวังสุนทร
+สันติ อาภาสกุลเดช
+สันติชัย ทองขาว
+สันติพงษ์ นิมิตรดี
+สันติลักษณ์ ธัญญาหาร
+สันติ์ อินทรเกษม
+สันต์ ธนรัตน์รุ่งเรือง
+สันต์ เลิศปิยะบุญ
+สันต์ อัจจิมาธร
+สันทนา วุ่นจู๊ด
+สันทัด จิตตุรงค์อาภรณ์
+สันทัด สำนักพงษ์
+สันธาน คำมิ่ง
+สัมผัส คชวงศ์
+สัมพันธ์ คำณพัฒน์
+สัมพันธ์ ซุ่มเสนา
+สัมพันธ์ นนทศุข
+สัมพันธ์ พันธุ์มณี
+สัมพันธ์ รู้ประมาณ
+สัมพันธ์ สว่างแผ้ว
+สัมพันธ์ หิรัญรักษา
+สัมมารินทร์ ตันศรี
+สัมฤทธิ์ คุณเจตเจริญสุข
+สัมฤทธิ์ ดวงสะอาด
+สัมฤทธิ์ นิ่มอนงค์
+สัมฤทธิ์ พุกพัก
+สัมฤทธิ์ เลี่ยมเพ็ชรรัตน์
+สัมฤทธิ์ สุขใส
+สัมฤทธิ์ อุรุนานนท์
+สากล สรสุนทร
+สาคร คงสมบูรณ์
+สาคร แดงสี
+สาคร บัวเพชร
+สาคร พูนพจน์มาศ
+สาคร ลาภเจริญ
+สาคร สารชาติ
+สาคร อุ่นจิตร
+สาทิต ศรีสวัสดิ์
+สาธร ปาละกะวงษ์
+สาธิต จันทรจิโรจน์กุล
+สาธิต เต็มเจริญ
+สาธิต พงศ์วรินทร์
+สาธิต ลีลาจารุวรรณ
+สาธิต สุทธิวุฒินฤเบศร์
+สาธินี วิลาวรรณ
+สานิต น่วมทัต
+สานิตย์ ปั้นทอง
+สามชัย พวงสำลี
+สามารถ คงคำสี
+สามารถ ชื่นภักดี
+สามารถ นวลละออง
+สามารถ พลายเถื่อน
+สามารถ รัศมีโรจน์วงศ์
+สามารถ สว่างแสง
+สามารถ อินทรเทพ
+สาย พราหมณะนันทน์
+สายจิต ชัยมงคล
+สายชล ฉัตรแก้วบริบูรณ์
+สายชล พุกเจริญ
+สายชล สุขศานติสกุล
+สายทอง ชัยชนะ
+สายทอง มิอรัญ
+สายทิพย์ เจริญชัยศรี
+สายธาร ศุขรัตน์
+สายบัว พลอยงาม
+สายฝน ตาลุคเดอร์
+สายฝน วิเศษศิริ
+สายพิณ ครุสาตะ
+สายพิณ เถาสุวรรณ
+สายพิณ พุ่มเกลี้ยง
+สายพิณ ศรีโรจน์
+สายพิน ชวาลสันตติ
+สายพิน อินทรหะ
+สายรุ่ง รามวินิจ
+สายลม ทรัพย์นาค
+สายสนม วาจนะวินิจ
+สายสมร โต๊ะอาจ
+สายสมร สมบูรณ์ยิ่งสุข
+สายสวาท บัวกล่ำ
+สายสุณี ขุนทอง
+สายสุดใจ ปิ่นกล่อม
+สายสุนีย์ จุติพิทักษ์วงศ์
+สายสุนีย์ ภักดิ์สุขเจริญ
+สายสุนีย์ อัศว์ไชยตระกูล
+สายหยุด จันทร
+สายหยุด ธินนท์
+สายหยุด เพิ่มสมบัติ
+สายหยุด สงสุวรรณ
+สายหยุด โอฬารสุขสกุล
+สายัณห์ กัลยาณมิตร
+สายัณห์ ตรงศิริวิบูลย์
+สายัณห์ พันธุ์ประสิทธิ์
+สายัณห์ วชิรเดชเสถียร
+สายัณห์ หนูราช
+สายันต์ คงคุณ
+สายันต์ พุทธมา
+สายันห์ ลีลากุศลวงศ์
+สายใจ ค้ำจุน
+สายใจ ทองนาค
+สายใจ เพียรเสริมกิจ
+สายใจ วุฒิพงศ์
+สายใจ อรุณชัย
+สารภี คงทรัพย์
+สารภี ไวทย์กุล
+สารัชต์ เผื่อนปฐม
+สาริณี อัศวินนิมิตร
+สาลิกา ธนะวิบูลย์ชัย
+สาลินี สิตะยัง
+สาลี สาโรวาท
+สาลี่ แซ่ฮั้น
+สาลี่ โพธิเวชกุล
+สาลี่ แสงฉาย
+สาวิตรี กล่อมเอี้ยง
+สาวิตรี ผิวผ่อง
+สาวิตรี สิงหรา ณ อยุธยา
+สาหร่าย ไชยมาตร
+สาโรจน์ โกมลหทัย
+สาโรจน์ ทองสวรรค์
+สาโรจน์ พึ่งสุข
+สาโรจน์ ศิริเอี้ยวพิกูล
+สาโรช เจริญศรี
+สาโรช เลาวกุล
+สำนวน ผกาแก้ว
+สำรวจ นิยมเดช
+สำรวม บุรุษรัตนพันธุ์
+สำรวม อ่อนมิ่ง
+สำรวย ขำภักดี
+สำรวย จันทร์สมบุญ
+สำรวย ชุ่มวิเชียร
+สำรวย ถึงใจ
+สำรวย นาน้อย
+สำรวย ประทังคำ
+สำรวย พ่วงเภตรา
+สำรวย ภู่ทอง
+สำรวย รอดกำเหนิด
+สำรวย วรนุช
+สำรวย สมิทธิธรรมธาดา
+สำรวย สุรีย์ศรีสกาว
+สำรวย อ่อนนิ่ม
+สำรวล พุกกะณานนท์
+สำรอง ฤกษ์สุทธิศิริเดช
+สำราญ กัลยาณศิรินทร์
+สำราญ เขียวชะอุ่ม
+สำราญ จันทร์เอี่ยม
+สำราญ ช้างเยาว์
+สำราญ ดีสุด
+สำราญ ทิพวัฒน์
+สำราญ นุชแทน
+สำราญ ปกสว่างเจริญ
+สำราญ พยุงแก้ว
+สำราญ เพ็ชรอุไร
+สำราญ มาลีเทศ
+สำราญ รัตตากร
+สำราญ วรรณตรง
+สำราญ ศัลย์วิเศษ
+สำราญ สาคร
+สำราญ เสงี่ยมเฉย
+สำราญ อรรถอินทรีย์
+สำราญ ฮาเซ๊ะ
+สำฤทธิ์ สอนกระต่าย
+สำลี แซ่ภู่
+สำลี พิฆเนศวร
+สำลี สายขุนทด
+สำออย รุ่งเรือง
+สำอาง อิ่มจิตร
+สำอางค์ ชนะสุริยะเกียรติ
+สำอางค์ นันทรัตนชัย
+สำอางค์ เพลินหัด
+สำอางค์ วงษ์สายสิน
+สำอางค์ ไหวสว่าง
+สำเนา ธิคุนันท์
+สำเนา สุวรรณอ่อน
+สำเนียง กรกมล
+สำเนียง จีดลำดวน
+สำเนียง ทศวงษ์
+สำเนียง ปะละชาติ
+สำเนียง ภู่ประเสริฐ
+สำเนียง ศรีวรรณ์
+สำเนียง หอมชื่น
+สำเภา เจียรสุมัย
+สำเภา บุญอ่อน
+สำเภา วงศ์สีดา
+สำเร็จ จรัญญาอ่อน
+สำเริง กองแสงศรี
+สำเริง จันทรมณี
+สำเริง ดวงภุมเมศ
+สำเริง นิลพฤกษ์
+สำเริง พลอยงาม
+สำเริง มิ่งขวัญ
+สำเริง วัฒนะโชติ
+สำเริง สีสุก
+สำเริง อัมลีย์
+สิงขร ธีราทรง
+สิงห์ทวน เตจ๊ะ
+สิงหะ สายทอง
+สิงห์ คชเสนี
+สิงห์ เลิศนามวงศ์วาน
+สิตธิ์ จังพานิช
+สิทธิ ตัณฑโอภาส
+สิทธิกร ศิริเมืองมูล
+สิทธิชัย เข่งทอง
+สิทธิชัย ใจชื้น
+สิทธิชัย ดรุณวัติ
+สิทธิชัย เทวหสกุลทอง
+สิทธิชัย ปลีกอำไพ
+สิทธิชัย เพียรประเสริฐกุล
+สิทธิชัย ฤกษ์สวัสดิ์กุล
+สิทธิชัย วิสุทธิ์อำพัน
+สิทธิชัย สิทธิวิบูลย์วัฒน์
+สิทธิชัย เหลืองสุขสาคร
+สิทธินัน ชนประเสริฐ
+สิทธิพงษ์ ก่อเศรษฐรัชต์
+สิทธิพยากรณ์ (วีรานุวัตต์)
+สิทธิพร บำเหน็จพันธ์
+สิทธิพร สมบุญ
+สิทธิพล วัฒนคดี
+สิทธิรัตน์ พิชญ์พิทยานนท์
+สิทธิศักดิ์ แซ่แจ้ง
+สิทธิศักดิ์ ลิ้มรสธรรม
+สิทธิศักดิ์ อุบลรัตนะ
+สิทธิเทศ กิตติกุลสุวรรณ
+สิทธิโชค ศรีสุคนธ์
+สิทธิ์ ปรุศดำเกิง
+สิน จินดารัตนวรกุล
+สิน วงศ์คุ้มพงศ์
+สินชัย จอมแสง
+สินชัย พรหมเสนีย์
+สินชัย สุทธิวงษ์
+สินธาร ว่องตาประดิษฐ์
+สินธุ์ ลิ้มปิติ
+สินหลั่ง เอื้อสมสกุล
+สินี มณีกุล
+สินีนาฏ ทองโบราณ
+สินีพรรณ บุญเลี้ยง
+สิรกุล ตะเคียนนุช
+สิริ ประวาหะนาวิน
+สิริกาญจน์ ดวงงาม
+สิริกุล เวียงชนก
+สิริชัย ตันติเลิศเจริญ
+สิริญญา โสภณสกุลศักดิ์
+สิรินทร์ทิพย์ ขำทิพย์
+สิรินราภรณ์ นิลบุตร
+สิรินาท เหลืองอร่ามวิไล
+สิริพงษ์ พุทธธนสุนทร
+สิริพร เจนกชกร
+สิริพร เตชนะศักดิ์
+สิริพร พิพัฒพลกาย
+สิริพร ศรีเพียร
+สิริพร อัศวรันต์
+สิริพัฒน์ กมลรัตน์
+สิริมนต์ บุญหล้า
+สิริมา ไผ่พลู
+สิริมาตา เร่งสมบูรณ์สุข
+สิริรัตน์ แจ่มดวง
+สิริรัตน์ พรวิลาศสิริ
+สิริรัตน์ แสงพยัพ
+สิริลักษณ์ บุญใหญ่
+สิริลักษณ์ อ๋องสกุล
+สิริวรรณ นาคอ่อน
+สิริวรรณ สิทธางกูร
+สิริวิภา อนันตชาติ
+สิริอรรณพ ธนรักษ์
+สิรี ขันทอง
+สิวอ่อน แซ่ตั้ง
+สิโรตม์ วัธนธาดา
+สีดา วัชรพิมลพรรณ
+สีนวล จันทร์ริ้ว
+สีนีพรรณ เกียรติพงษ์สาร
+สีหนาท ประยูรรัตน์
+สืบ คำนิล
+สืบพงษ์ ฐิติโชติรัตนา
+สืบศักดิ์ ปริญญากุล
+สืบสวัสดิ์ วัฒนฐานะ
+สุกร ชลประเสริฐสุข
+สุกรี วัชรพรรณ
+สุกล ยืนตระกูลชัย
+สุกัญญา กุลเรืองทรัพย์
+สุกัญญา คำม่วง
+สุกัญญา จิตรเจริญ
+สุกัญญา ชัยศรีวิบูลย์
+สุกัญญา แซ่อึ้ง
+สุกัญญา ตั้งเติมทอง
+สุกัญญา ทาบสุวรรณ
+สุกัญญา นิยมในธรรม
+สุกัญญา ประสงค์
+สุกัญญา พรวสันต์
+สุกัญญา แพภิรมย์รัตน์
+สุกัญญา เมฆอริยะ
+สุกัญญา ฤทัยธรรม
+สุกัญญา วัฒฑกโกศล
+สุกัญญา ศิริประภากิจ
+สุกัญญา สิงห์ทอง
+สุกัญญา สุโรจนานนท์
+สุกัญญา อนุมานศิริกุล
+สุกัญญา เอมเจริญ
+สุกันยา ภูแข
+สุกัลยา ประเสริฐสังข์
+สุกาญจน์ ฤกษ์สินสาโรจน์
+สุกานดา ธาตุดี
+สุกานดา สุกิตไพบูลย์
+สุกิจ กูลมนูญ
+สุกิจ เชื้ออินทร์
+สุกิจ นิ่มพร้าว
+สุกิจ ภุมมี
+สุกิจ วิชัยโชติ
+สุกิจ แสงพลสุข
+สุกิต วิวัฒนทีปะ
+สุข แจ้งกระจ่าง
+สุข สุระพินิจ
+สุขจิตต งามบรรจง
+สุขชัย อุปสันต์
+สุขประเสริฐ ร่มโพธิ์
+สุขวสา แสงดี
+สุขศรี วงษ์ถม
+สุขสมบัติ เทศะนันทน์
+สุขสอาด จรีศรี
+สุขสันต์ พรสวรรค์วัฒนา
+สุขหรรษา งามวัฒนาเจริญ
+สุขุม เจียมสกุล
+สุขุม พหูสูตร
+สุขุม ศรีวิไลฤทธิ์
+สุขุม เอี่ยมสอาด
+สุขุมาลย์ ประเสริฐศรี
+สุขเกษม เลื่อมอรุณ
+สุขโข สุมานนท์
+สุขใจ วงศ์สุรพิเชษฐ์
+สุคนธ์ทิพย์ ทำเลทอง
+สุคนธา สุระมานะ
+สุคนธ์ เฉลิมพิพัฒน์
+สุคนธ์ เนื่องกันทา
+สุคนธ์ รัตนสะอาด
+สุคนธ์ สุจริต
+สุคิน เด่นเมฆา
+สุจริต มณีวงค์
+สุจารีต กรรณล้วน
+สุจิต สถิตย์มาลัยวงศ์
+สุจิตต์ ตั้งตระกูล
+สุจิตร ชัยคูณผล
+สุจิตรา กล่ำแสง
+สุจิตรา จันทรดิลกกุล
+สุจิตรา แซ่จิว
+สุจิตรา ทวีรัตน์
+สุจิตรา บุญสูง
+สุจิตรา พันธุ์ภัทร์
+สุจิตรา ยิ้มแย้ม
+สุจิตรา วรยศโกวิท
+สุจิตรา สถาพรชัยสิทธิ์
+สุจิตรา สุรรัตน์เดชา
+สุจิตรา อุตตมะศิล
+สุจิน มุกน้อย
+สุจินดา แซ่เล้า
+สุจินดา ภัคภิญโญ
+สุจินดา สิทธิศรัณย์กุล
+สุจินตนา เสือแก้ว
+สุจินต์ จิระชัย
+สุจินต์ ตัณฑ์วรกุล
+สุจินต์ เบ้ากุล
+สุจินต์ ฟุ้งธรรมสาร
+สุจินต์ วงศ์พันธุ์
+สุจินต์ สักกะวนิช
+สุจินต์ อุดมพันธุ์
+สุจิรา ภู่ขำ
+สุชฏิล วัฒยากร
+สุชล ปานกลาง
+สุชัย จำรัสวิมลรัตน์
+สุชัย นรเศรษฐพงศ์
+สุชัย เลิศธีระชาญชัย
+สุชัย หวังกิจจินดา
+สุชาญ ธนะไพรรักษ์
+สุชาดา เกียรติเรืองสุข
+สุชาดา จอนุวัฒนกุล
+สุชาดา ฉายะเกษตริน
+สุชาดา แซ่อึ้ง
+สุชาดา เตี๊ยกคำ
+สุชาดา นทีตานนท์
+สุชาดา ประถมปัทมะ
+สุชาดา พันธุ์มณี
+สุชาดา มารยาท
+สุชาดา โรจนฤทธิ์พิเชษฐ์
+สุชาดา วิทยาภรณ์
+สุชาดา สตังดี
+สุชาดา สุทธิศันสนีย์
+สุชาดา หิรัญพัฒนกุล
+สุชาดา อึ๊งสมุทร
+สุชาติ กลิ่นอุดมสุข
+สุชาติ เกรียงโกมล
+สุชาติ แขรัตนะ
+สุชาติ งามแสง
+สุชาติ จิตพัฒนกุล
+สุชาติ เจษฤาเจิม
+สุชาติ ชัยนะเลิศวงศ์
+สุชาติ เชาว์ไว
+สุชาติ แซ่หลิว
+สุชาติ ดำรงค์อนุกูล
+สุชาติ ตั้งพูลพันธุ์
+สุชาติ ถาวรวงษ์
+สุชาติ เทียมสมัย
+สุชาติ นรากุลรัศมี
+สุชาติ บำรุงพานิช
+สุชาติ ประสานธรรมคุณ
+สุชาติ ผลภิรม
+สุชาติ พะนอจันทร์
+สุชาติ เพียรธุรัตน์
+สุชาติ มลทองดี
+สุชาติ ยิ้มเจริญ
+สุชาติ รุจิโมระ
+สุชาติ ลีรุ่งเรือง
+สุชาติ วงศ์สมบุญ
+สุชาติ วานิชย์หานนท์
+สุชาติ ศรีฟ้าลาวัณย์
+สุชาติ ศุกรวรรณ
+สุชาติ สว่างการ
+สุชาติ สินประสงค์
+สุชาติ สุทธิพรสกุล
+สุชาติ เสรีสุวรรณกิจ
+สุชาติ เหงี่ยมงามศรี
+สุชาติ อ่อนสุข
+สุชาติ อุดมภักดีวงศ์
+สุชาย ชวาลดิฐ
+สุชาย สุนันทารอด
+สุชิต ล่ำซำ
+สุชิน จำปาน้อย
+สุชิน ต่างใจ
+สุชิน ประไพศิลป์
+สุชิน เมฆะสุวรรณโรจน์
+สุชิน ศรีพัฒนวรางกูล
+สุชิน แสงอินทร์
+สุชีพ กุลกาญจนาชีวิน
+สุชีพ สิงห์ธีร์
+สุชีลา แซ่ห่าน
+สุฑาทิพย์ ฟักเย็น
+สุณิสา เย็นฉ่ำ
+สุณี จิรันดร
+สุณี เดชสุวรรณ์
+สุณี ปานดี
+สุณี ลิมป์พนาวงศ์
+สุณี สิทธิเวชวิจิตร
+สุณีนุช โต๊ะหวัง
+สุณีย์ เทพสาย
+สุณีย์ วิทยาทรงตระกูล
+สุด กระแสเทพ
+สุดจิต เจริญนิพนธ์วานิช
+สุดจิตต์ ศรีตรีรัตน์
+สุดชาย บุญโต
+สุดธิดา มหิโคต
+สุดสงวน จันทร์ศรี
+สุดสวาท เฉียบแหลม
+สุดสายใจ หาเรือนโภค
+สุดา จงวัฒนา
+สุดา เชียงเชาว์ไว
+สุดา ตุลาวณิช
+สุดา บำรุงหมู่
+สุดา พึ่งโพธิปักขิยะ
+สุดา รุ่งแสง
+สุดา ศรีกรการ
+สุดา สุขวิบูลย์
+สุดา อัศวโภคิน
+สุดาทิพย์ เอี่ยมอิทธิฤทธิ์
+สุดาพร มณีรัตน์
+สุดาพันธ์ อิศรางกูร ณ อยุธยา
+สุดารัตน์ แก้วชิงดวง
+สุดารัตน์ ชินะประภา
+สุดารัตน์ ธัญสิริโรจน์
+สุดารัตน์ พิมพิมล
+สุดารัตน์ เลิศวิทยาพนธ์
+สุดารัตน์ สารตายน
+สุดารัตน์ อินโทอธิพร
+สุดาวดี แสงชมภู
+สุดาวรรณ ศรีสวัสดิ์
+สุดาอร สัจจาธรรม
+สุดแสวง แสงนพรัตน์
+สุดใจ จงมโนประเสริฐ
+สุดใจ ชัยเปรม
+สุดใจ แตงอ่อน
+สุดใจ บุญมาก
+สุดใจ พานิชกุล
+สุดใจ แย้มเหมือน
+สุดใจ ศรีม่วง
+สุดใจ สินสมุทร์
+สุดใจ อ่อนศรี
+สุถาวรณ์ เกียรติศิลปนันต์
+สุทธาทิพย์ ประสพสุขเจริญ
+สุทธิ ชาติยานนท์
+สุทธิ เพ็งเจริญ
+สุทธิ สุทธิธรรมกุล
+สุทธิชัย ไกรคุณาศัย
+สุทธิชัย ตันธนาศิริกุล
+สุทธิชัย มหวลีรัตน์
+สุทธิชัย สุทธิพิบูลย์
+สุทธิณี จิตตานนท์
+สุทธินันท์ โพธินาค
+สุทธินี สาระยา
+สุทธิพงศ์ วจีปิยนันทานนท์
+สุทธิพงษ์ ไตรรัตนทรงพล
+สุทธิพงษ์ ศรีเนียม
+สุทธิพร ตันมงคล
+สุทธิพล แสงรุ้งฐิติรักษ์
+สุทธิมา จิตตรง
+สุทธิรัตน์ งามทรัพย์
+สุทธิลักษณ์ ผ่องศิริ
+สุทธิวิทย์ ขำลำภู
+สุทธิศักดิ์ ระจิตดำรงค์
+สุทธิสันต์ ตั้งศรีวงษ์
+สุทธี กิจสุภี
+สุทรรศ วัฑฒกานนท์
+สุทัน สวัสดิ์ฟัก
+สุทัศน์ กลิ่นโซดา
+สุทัศน์ จำรัสจุฬาเนตร
+สุทัศน์ ด่านอุดมชาญ
+สุทัศน์ ธีรธนากร
+สุทัศน์ พนัสเลิศ
+สุทัศน์ รอยกุลเจริญ
+สุทัศน์ วุฒิกรวณิชย์
+สุทัศน์ สิทธิวงศ์
+สุทัศน์ อ่อนชุลี
+สุทิต กนกเลิศวงศ์
+สุทิน คูน้ำทิพย์
+สุทิน โชติจุฬางกูร
+สุทิน ทัตตานนท์
+สุทิน บูรณสิน
+สุทิน ภาคยะวัธน์
+สุทิน ฤทราคร
+สุทิน สนทอง
+สุทิน แสวงธีระ
+สุทินี โกมลสิงห์
+สุทิศา อุดมจารุมณี
+สุธน ชูชัย
+สุธน ลิมปมนต์
+สุธร จิตกรีสร
+สุธรรม ชัยศรีวิบูลย์
+สุธรรม บุญเอกบุศย์
+สุธรรม เลิศพงษ์ประเสริฐ
+สุธรรม หะสิตะเวช
+สุธัญญา โพธิรัชตางกูร
+สุธา หงษ์รัตนอุทัย
+สุธาทิพย์ ชยางศุ
+สุธาทิพย์ ศรีมุกข์
+สุธาภรณ์ สุทธินา
+สุธารัตน์ สุขสำอางค์
+สุธาสินี วิจิตรานนท์
+สุธิดา ชื่นแสงจันทร์
+สุธิดา ศิระวัฒนชัย
+สุธิพร สอนมัง
+สุธี กรอุไร
+สุธี ฉัตรอภิวันท์
+สุธี เต่าทอง
+สุธี บุณยเกียรติ
+สุธี มาลีศรี
+สุธี วิเศษสุนทรสกุล
+สุธี สุธรรมฐิติ
+สุธีดา กมลรัตนา
+สุธีรา คุณนิรันดร
+สุธีรา พลสนะ
+สุธีรา อมรนฤนาถ
+สุธีร์ ปรีชานุวัฒน์
+สุธีลา ธนะฤทธิ์โรจน์
+สุนทร กิจจุลลจาริต
+สุนทร ขันทะราม
+สุนทร โค้วนฤมิตร
+สุนทร จิรายุวัฒนา
+สุนทร ชาญ
+สุนทร แซ่ฟอง
+สุนทร ตระกูลฤทธิเดช
+สุนทร ทรัพย์เจริญ
+สุนทร ธิชากรณ์
+สุนทร บัวสมบูรณ์
+สุนทร ประภาโรจน์
+สุนทร พจน์ธนมาศ
+สุนทร พุฒิกรกุล
+สุนทร ภูมิอ่อน
+สุนทร ยศแก้ว
+สุนทร รุ่งแจ้ง
+สุนทร เล้าวิชัย
+สุนทร วิชาชาญ
+สุนทร ศรีแสงฟ้า
+สุนทร สอนสี
+สุนทร สุขมัย
+สุนทร เสือใหญ่
+สุนทร อนุเดช
+สุนทร อิ่มเอิบสุข
+สุนทรา นวลวิจิตร
+สุนทรี กอสิงหวัฒนา
+สุนทรี จันทวุฒิ
+สุนทรี แซ่อึ้ง
+สุนทรี ทารมย์
+สุนทรี ปัญญาธัญญะ
+สุนทรี ไพศาลวิจิตรนุช
+สุนทรี ลำไยทอง
+สุนทรี ศิลปสาคร
+สุนทรี แสงเงิน
+สุนทรี เอี่ยมฤกษ์ศิริ
+สุนนท์ สุวงศ์
+สุนัน ประกายศิลป์
+สุนันทรา คำบรรลือ
+สุนันทา คชนาค
+สุนันทา ฉันทศาสตร์รัศมี
+สุนันทา แซ่เตีย
+สุนันทา โตมานะ
+สุนันทา นิลศรี
+สุนันทา โปษยานนท์
+สุนันทา โพธิ์ทอง
+สุนันทา รังษีธรรม
+สุนันทา วรกิจอาทร
+สุนันทา ศุภมาตรา
+สุนันทา สุรภักดี
+สุนันทา อัศวนัยกิจ
+สุนันท์ กิยะแพทย์
+สุนันท์ งามอัครกุล
+สุนันท์ ฉัตรแก้ว
+สุนันท์ แซ่หว่อง
+สุนันท์ ตาปสนันทน์
+สุนันท์ ธรรมวงศ์วัฒน์
+สุนันท์ บูรณ์ลอม
+สุนันท์ พวงนิล
+สุนันท์ มงคล
+สุนันท์ รังสิตเสถียร
+สุนันท์ วงศ์สุวรรณ
+สุนันท์ ศิริการณ์
+สุนันท์ สินธุ์ประสพชัย
+สุนันท์ หอมพุฒ
+สุนันท์ เอกวัฒน์
+สุนัย มยุรนาคิน
+สุนาค หอมหวล
+สุนารี สงเคราะห์
+สุนิดา ตันกันภัย
+สุนิตยา แก้วเอี่ยม
+สุนิตย์ สุนทร
+สุนิภา รุ่งเมฆารัตน์
+สุนิษา จันเกิด
+สุนิสา จันทบูลย์
+สุนิสา ตันติกุลพาณิชย์
+สุนิสา พิทยาธนาสกุล
+สุนิสา วัชรพงศ์
+สุนิสา เหลืองระฆัง
+สุนี คงสินทวีสุข
+สุนี แซ่เจีย
+สุนี นิ่มน้อย
+สุนี มิ่งมณีนาคิน
+สุนี ศรีสุรีย์ไพศาล
+สุนี อัศวเจริญลาภ
+สุนีย์รัตน์ ศิริเลิศเรืองชัย
+สุนีย์ กุลฤชากร
+สุนีย์ คนมั่น
+สุนีย์ จาตุวัฒน์
+สุนีย์ ฉันทสมบัติ
+สุนีย์ โชติมา
+สุนีย์ แซ่ล้อ
+สุนีย์ ดาริการ์นนท์
+สุนีย์ แต้มเติม
+สุนีย์ ธนานนท์
+สุนีย์ นิรุตตินานนท์
+สุนีย์ ปรีชาทรัพย์
+สุนีย์ พรหมสุวิชัย
+สุนีย์ แพรสุวัฒน์ศิลป์
+สุนีย์ มาทอง
+สุนีย์ รัตนภูมิภิญโญ
+สุนีย์ ลิ้มพรรัตน์
+สุนีย์ วรวุฒิ
+สุนีย์ ศรีพัชรพันธ์
+สุนีย์ สร้อยทอง
+สุนีย์ สุขุมวรพจน์
+สุนีย์ แสงใยมณี
+สุนีย์ อนุพงศ์อภัย
+สุนีย์ อิงสกุลรุ่งเรือง
+สุนีรัตน์ จงปรีชา
+สุ่น เกิดลาภ
+สุบรรณ์ แก่นสาร
+สุบิน ตรีปัจยากร
+สุบิน โพธิ์อัมพร
+สุบิน อาขุรัตน์
+สุปราณี กนกวุฒิ
+สุปราณี จันทร์สิน
+สุปราณี แซ่ลิ้ม
+สุปราณี ธีรอนุรักษ์กุล
+สุปราณี พัชรพจนากรณ์
+สุปราณี รัตนคาม
+สุปราณี ศรีทาโฮม
+สุปราณี ไสยสมบัติ
+สุปรานี ตันสิทธิ
+สุปรีดา เมฆอนันตโกศล
+สุปรียา ศิลาเกษ
+สุปัน พลเสนา
+สุพงศ์ นะมาตร์
+สุพงษ์ เอี่ยมฤกษ์ชัย
+สุพจน์ กิตติโภคิรัตน์
+สุพจน์ คงพ่วง
+สุพจน์ จันทร์วิเมลือง
+สุพจน์ เจริญพรหมมาตร์
+สุพจน์ ช้างวงศ์ทอง
+สุพจน์ แซ่โง้ว
+สุพจน์ ตันตระกูล
+สุพจน์ เทียมทับ
+สุพจน์ นิรันตสุขรัตน์
+สุพจน์ ประภาอภิรัตน์
+สุพจน์ พจนาวราพันธุ์
+สุพจน์ พึ่งพัฒนา
+สุพจน์ มงคลกิจชัยการ
+สุพจน์ เยี่ยมวิญญะ
+สุพจน์ ฤกษ์โศภิษฐ์
+สุพจน์ วงศ์วรเศรษฐ์
+สุพจน์ วิสารทานนท์
+สุพจน์ ศิริวรรณชัย
+สุพจน์ สัมพันธารักษ์
+สุพจน์ สุนทรวิเนตร์
+สุพจน์ หนูแย้ม
+สุพจน์ อยู่ยั่งยืน
+สุพจน์ อุทัยโชติรัตน์
+สุพพตา พรวชิราภา
+สุพร จรรยางาม
+สุพร แซ่มา
+สุพร ธรรมาพิทักษ์พร
+สุพร พละพลีวัลย์
+สุพร รุจาพันธุ์
+สุพร ศุภลักษณ์นารี
+สุพร เหลี่ยมมกราเจริญ
+สุพรชัย วรรณทิม
+สุพรรณ จันพิศาล
+สุพรรณ พงศ์จีรกำจร
+สุพรรณ สุขอรุณ
+สุพรรณา เขียวชอุ้ม
+สุพรรณี ครูซอ
+สุพรรณี แซ่กี้
+สุพรรณี ธรรมคีรี
+สุพรรณี พรพัฒนนางกูร
+สุพรรณี รุจิภักดิ์
+สุพรรณี สมบุญญานนท์
+สุพรรณี อับดุลลาส์
+สุพรรัตน์ เหลืองชวพงศ์
+สุพล เฉลิมเกียรติกุล
+สุพล น้ำเพชร
+สุพล มงคล
+สุพล สมพงษ์
+สุพล เอื้ออนันต์
+สุพัฒฌา แจงาม
+สุพัฒน์ กิจบารมี
+สุพัฒน์ ตั้งศรีประชิต
+สุพัฒน์ ปาวะพิพัฒน์
+สุพัฒน์ รัตนพนัง
+สุพัฒน์ ศาสตร์สิริสมบัติ
+สุพัฒน์ อิทธิเดชรัตน์
+สุพัตรา กันอริ
+สุพัตรา งามลิขิตวัฒนกุล
+สุพัตรา ชินวีระพันธุ์
+สุพัตรา ตังกรัตน์
+สุพัตรา นันทรัตนากูล
+สุพัตรา ไผ่แก้ว
+สุพัตรา มั่งสุวรรณ
+สุพัตรา เลิศอภิสิทธิ์
+สุพัตรา ศุขะวาที
+สุพัตรา สุตรีเชาวนกุล
+สุพัตรา โหรานิคม
+สุพัตศร รักษ์ชน
+สุพา จันทร์ทิพย์
+สุพิชญา พิบูลภานุวัธน
+สุพิตร หาญณรงค์
+สุพิน แซ่อึ้ง
+สุพิน วราพฤกษ์
+สุพินดา วุฒิชัย
+สุพิศ จันแจ่มจิตต์
+สุพิศ วงศ์ภูมินทร์
+สุพีร์พัฒน์ จองพานิช
+สุภจิรา ด้วงดี
+สุภณัฐ นิลรัตน์
+สุภร โขวิฑูรกิจ
+สุภรณ์ งามเงินวรรณ์
+สุภรณ์ พรงาม
+สุภรณ์ เสือจุ้ย
+สุภลัคณ์ นาคะสันต์
+สุภัข สภาคกุล
+สุภัค หงษ์ฉลาด
+สุภัท นกศิริ
+สุภัทร พินิจเวชการ
+สุภัทรา จงเจริญ
+สุภัทรา บุญชัยยุทธศักดิ์
+สุภัทรา วัฒนเกียรติสรร
+สุภัทร์ จันทร์สุข
+สุภา เกษรสมบัติ
+สุภา ฉลาดสุนทรวาที
+สุภา แซ่ลิ้ม
+สุภา ทรัพย์อวยสุข
+สุภา เปียรอด
+สุภา มุนินทร์นิมิตต์
+สุภา เลิศแสวงกิจ
+สุภา ศิริสิทธิ์
+สุภา สุนทรเกศ
+สุภา อังคณาวิศัลย์
+สุภางค์ เทอดเกียรติกุล
+สุภาณี จ้อยวิลัย
+สุภาณี นาฮิม
+สุภาณี วงศ์วิทูไท
+สุภาณี เอี้ยวตระกูล
+สุภาพ กตัญญู
+สุภาพ คำแผง
+สุภาพ ชุนเจริญ
+สุภาพ โตษจระ
+สุภาพ บุญทริกชาติ
+สุภาพ พวงหิมวันต์
+สุภาพ ยศะสินธุ์
+สุภาพ วันวิเวก
+สุภาพ สายกมล
+สุภาพ อภิโช
+สุภาพร กำหนดแน่
+สุภาพร จงสุขกิจพานิช
+สุภาพร แจ้งสนิท
+สุภาพร แซ่นำ
+สุภาพร ตั้งบรรเจิดวนิช
+สุภาพร เทียนประยูร
+สุภาพร บุญเชิดชัยยันต์
+สุภาพร พัฒนประทีป
+สุภาพร ภู่โสภา
+สุภาพร เรืองศรี
+สุภาพร วรรณก้อน
+สุภาพร ศิริลักษณมานนท์
+สุภาพร สุทวีทรัพย์
+สุภาพร เหลี่ยมมงคล
+สุภาพร อินทนานุช
+สุภาพรรณ ชุ่มสุวรรณ
+สุภาพรรณ สันติสุข
+สุภาภรณ์ กล้าหาญ
+สุภาภรณ์ โคตะพันธ์
+สุภาภรณ์ ฉายวิเชียร
+สุภาภรณ์ แซ่อั้ง
+สุภาภรณ์ ไตรกุล
+สุภาภรณ์ นิศาภากร
+สุภาภรณ์ พัฒนาวณิชย์
+สุภาภรณ์ เย็นฉ่ำ
+สุภาภรณ์ วชิโรภาสกรณ์
+สุภาภรณ์ ศิริโสภณา
+สุภาภรณ์ สุธีราธิกุล
+สุภาภรณ์ อาภาชนาวัฒน์
+สุภารัตน์ จักรพันธุ์
+สุภารัตน์ ศรีวุฒิชาญ
+สุภาวดี ขำน้อย
+สุภาวดี แซ่เฮ้า
+สุภาวดี ปุราธนานนท์
+สุภาวดี รังสิเสนา ณ อยุธยา
+สุภาวดี สิงหะเนติ
+สุภาวดี อุปชีวะ
+สุภาวิณี พิมโสม
+สุภาเพ็ญ หลักหาญ
+สุภิดา โอสถานุเคราะห์
+สุภีพรรณ ดารากร ณ อยุธยา
+สุมณฑา จำปา
+สุมณฑา โรจนาเปรมสุข
+สุมน กำปงซัน
+สุมน มธุวานนท์
+สุมน อัครวรรักษ์
+สุมนทา พงษ์พิบูลย์
+สุมนา ไกรกาญจน์
+สุมนา ปทีปะปาณี
+สุมนา สกุลมงคลนาม
+สุมล โควานิสัยสุขกุล
+สุมล ทองพันชั่ง
+สุมล รุ่งอุดมกิจ
+สุมล อยู่ทอง
+สุมลรัตน์ แต้รัตนมงคล
+สุมาณี กิจบุญชัย
+สุมาภรณ์ อุดมโชค
+สุมาลย์ ยิ้มเป็นสุข
+สุมาลา ธูปเทียนหอม
+สุมาลี กิมชูวาณิช
+สุมาลี คงอาษา
+สุมาลี จันทร์วิทยานุชิต
+สุมาลี แจ่มมี
+สุมาลี ชูสังข์
+สุมาลี แซ่แห่ว
+สุมาลี ตุลาดิลก
+สุมาลี เทศนะโยธิน
+สุมาลี นาคเศรณี
+สุมาลี บุญวรเศรษฐ์
+สุมาลี โปสาภิวัฒน์
+สุมาลี พิทักษ์พินิจนันท์
+สุมาลี ภูมิปรีชา
+สุมาลี ไม้หอม
+สุมาลี เรืองศรี
+สุมาลี วงศ์ข้าหลวง
+สุมาลี วิไลแก้ว
+สุมาลี ศิริบาล
+สุมาลี สิงหพันธุ์
+สุมาลี สู้ชิงชัย
+สุมาลี เหลืองปฐมชัย
+สุมาลี อารีวงค์
+สุมาศ เกิดแก่นแก้ว
+สุมิตร ฉัตรชัยวิวัฒนา
+สุมิตร ปุญญาสวัสดิ์
+สุมิตร ศิริซุ้มสุวรรณ
+สุมิตรา เกียรติเอี่ยม
+สุมิตรา ตีรพัฒนพันธ์
+สุมิตรา ภูวเศรษฐ์
+สุมิตรา สิงหทัต
+สุมินทร์ สุนทรพาณิชย์
+สุรกานต์ ปัญญางาม
+สุรกิจ โลหธิตพิทักษ์
+สุรจิต เตชะบูรณเทพากรณ์
+สุรจิตร นนท์ธนประกิจ
+สุรชัย กังเสถียร
+สุรชัย ขจรเกียรติสุข
+สุรชัย จริยานันทเนตร
+สุรชัย เจนปิยพงศ์
+สุรชัย ชัยเสถียรกิจ
+สุรชัย แซ่คู
+สุรชัย ณ เชียงใหม่
+สุรชัย ตั้งเจริญไพบูลย์
+สุรชัย ทวีลาภ
+สุรชัย ธีราเวทย์นุพงศ์
+สุรชัย บุญพลับ
+สุรชัย ปิยะรัตนโยธิน
+สุรชัย พิพัฒพงศา
+สุรชัย มงคลบูรณะศิริ
+สุรชัย โยธาประเสริฐ
+สุรชัย ฤทัยรุ้ง
+สุรชัย วงศ์จารีกิตติ
+สุรชัย วิจารณ์กัยกิจ
+สุรชัย ศรีเจริญสุขยิ่ง
+สุรชัย สวัสดิ์สรรพ์
+สุรชัย สุจินดามณี
+สุรชัย แสงอรุณศิริ
+สุรชัย อดุลยธรรม
+สุรชัย อาจหาญศิริ
+สุรชา ทองพิลา
+สุรชาติ ตำราเรียง
+สุรชาติ ศศิธนานุรักษ์
+สุรณี ตันติวณิชชานนท์
+สุรทิน อิ้งจะนิล
+สุรปรีช์ โคตรโสภา
+สุรพงศ์ พันธ์วิศวาส
+สุรพงศ์ เอื้อวัฒนามงคล
+สุรพงษ์ จุลมนต์
+สุรพงษ์ ตั้งใจการุณย์
+สุรพงษ์ ปกาสิทธิ์
+สุรพงษ์ ภูประไพ
+สุรพงษ์ วังเอก
+สุรพงษ์ สุพัฒน์ศิลป์
+สุรพงษ์ อึ้งอัมพรวิไล
+สุรพร มณีสินธุ์
+สุรพล กิตติดำรง
+สุรพล คงสกุล
+สุรพล จันเพ็ง
+สุรพล เฉลิมชัยนุกุล
+สุรพล แซ่ผั่ง
+สุรพล ตาปนานนท์
+สุรพล เทศขจร
+สุรพล นิโครพิทักษ์
+สุรพล ปรัศว์เมธีกุล
+สุรพล พรหมนิมิตร
+สุรพล พูลทวี
+สุรพล มาพูนสวัสดิ์วัฒนา
+สุรพล รัตน์พงษ์พร
+สุรพล เล็กประสาร
+สุรพล วิยะดามงคล
+สุรพล ศิริชัยวัฒนา
+สุรพล สังข์สิงห์
+สุรพล สุประดิษฐ์
+สุรพล หัสดิน
+สุรพล อินทรลักษณ์
+สุรพัตร สุทธิธนากร
+สุรพันธ์ เตชนะรุ่งโรจน์
+สุรพันธ์ วรกิตติวณิช
+สุรพี แซ่อึ้ง
+สุรภี ทิมพิทักษ์
+สุรมย์ แซ่เตีย
+สุรวงศ์ ทวีสัตย์
+สุรวิทย์ ศาลาสุข
+สุรวุฒิ เศรษฐบุตร
+สุรศักดิ์ กิ่งไทร
+สุรศักดิ์ คงกิตติกร
+สุรศักดิ์ จันทราทิพย์
+สุรศักดิ์ แจวเจริญ
+สุรศักดิ์ เชาว์วิศิษฐ์
+สุรศักดิ์ แซ่เล้า
+สุรศักดิ์ ตั้งศรีรัตนกุล
+สุรศักดิ์ ทองสมบูรณ์
+สุรศักดิ์ นันทวิโรจน์
+สุรศักดิ์ ประทานวรปัญญา
+สุรศักดิ์ พลับพลี
+สุรศักดิ์ ภู่วุฒิกุล
+สุรศักดิ์ รัชตะวรรณ
+สุรศักดิ์ ลือวิศวกุล
+สุรศักดิ์ วรสุวรรณาทร
+สุรศักดิ์ วีรชายลักษณ์
+สุรศักดิ์ ศิริโชติ
+สุรศักดิ์ สังข์ทอง
+สุรศักดิ์ สุพัฒนาภรณ์
+สุรศักดิ์ หะรังษี
+สุรศักดิ์ อังกาบศรี
+สุรศักดิ์ โอฬารรุ่งเรือง
+สุรสิทธิ์ จันทร์โสภณพงศ์
+สุรสิทธิ์ ปราบณรงค์
+สุรสิทธิ์ ศรีอรทัยกุล
+สุรสิทธิ์ เอี่ยมธนากุล
+สุระ พ่วงลาภหลาย
+สุระชัย มาลีแย้ม
+สุระพล อ่อนฤทธิ์
+สุรัช กองนิมิตร
+สุรัชดา ภูวดลพิทักษ์
+สุรัชวดี หอมยก
+สุรัตน์พร เทียมเมฆ
+สุรัตน์ กันตะศรี
+สุรัตน์ จันทร์โชคพงษ์
+สุรัตน์ เชิดชูมาลัยกิจ
+สุรัตน์ ทองเสม็ด
+สุรัตน์ บุญรักษ์
+สุรัตน์ พุ่มผล
+สุรัตน์ รุ่งแสง
+สุรัตน์ ศรีลาภ
+สุรัตน์ สุขพิศาล
+สุรัตน์ อัครภานุมาศ
+สุรัติ เศรษฐอภิธาน
+สุรัสวดี สีบุญเรือง
+สุรางค์รัตน์ มุสิกไชย
+สุรางค์ จรรยาอังกูร
+สุรางค์ ดุลย์พจน์เทวา
+สุรางค์ โปษยานนท์
+สุรางค์ รักษาราชวิตร
+สุรางค์ สงวนวงศ์
+สุรางค์ โหมานันท์
+สุราษฎร์ เกษตระชนม์
+สุรินทร์ทิพย์ อิสสระชัย
+สุรินทร์ เกิดสุวรรณ์
+สุรินทร์ คำโถมฤทธิ์
+สุรินทร์ จินันทยา
+สุรินทร์ ชัยชะนะมงคล
+สุรินทร์ ญาณเกียรติพงศ์
+สุรินทร์ เติมสายทอง
+สุรินทร์ ธนกิจจำรูญ
+สุรินทร์ บุญลพ
+สุรินทร์ โปรเทียรณ์
+สุรินทร์ พิชัยศรทัต
+สุรินทร์ ภู่ประภาดิลก
+สุรินทร์ ยิ้มเพ็ง
+สุรินทร์ ลักษมีวรานนท์
+สุรินทร์ วรพันธ์พิทักษ์
+สุรินทร์ ศรีวารีรัตน์
+สุรินทร์ สมัครช่วย
+สุรินทร์ สุขมาก
+สุรินทร์ แสงรัตน์
+สุรินทร์ อนังรัสดี
+สุรินทร์ อิ่มสุข
+สุริมาศ แพทยานนท์
+สุริยนต์ เกษรพรหม
+สุริยะ ดวงแก้ว
+สุริยะ โลหะเวช
+สุริยัญ นิลทจันทร์
+สุริยันต์ ชูตะวงษ์
+สุริยา เคล้าจันทร์พงษ์
+สุริยา ทองเต็ม
+สุริยา เพ็ชรปิ่นแก้ว
+สุริยา สละกุล
+สุริย์ คูณผล
+สุรี ตันธน์ศุภกาญจน
+สุรีพร คนเจน
+สุรีพร โพธิ์ศิรินันทชัย
+สุรีพร เอี้ยวถาวร
+สุรีย์พร เงินงามเลิศ
+สุรีย์พร ปรียะพานิช
+สุรีย์พร ศรีสืบ
+สุรีย์รัตน์ คงพิทยาพันธุ์
+สุรีย์รัตน์ อนันตกาลต์
+สุรีย์ กิตติวรวงศ์
+สุรีย์ จันทร์ทรัพย์
+สุรีย์ ชื่นสมถ้วย
+สุรีย์ แซ่โง้ว
+สุรีย์ ทรงเชื้อ
+สุรีย์ นิมิตรกุล
+สุรีย์ เปรมปราโมชย์
+สุรีย์ พุ่มศิริ
+สุรีย์ ไม้สถิตย์
+สุรีย์ ลิ้มสุวรรณ
+สุรีย์ วิเชียรกุล
+สุรีย์ สรสุคนธ์
+สุรีย์ สุวรรณประทีป
+สุรีย์ อมรธีระกุล
+สุรีรัตน์ คณะเจริญ
+สุรีรัตน์ ตันธุวนิตย์
+สุรีรัตน์ ยังสว่าง
+สุรีรัตน์ หาญจงกล
+สุรเกียรติ วิเศษสิทธุ์
+สุรเชษฐ น้านาคินทร์
+สุรเชษฐ์ เจริญชัยถาวรจิต
+สุรเชษฐ์ ยังสุข
+สุรเดช กังสดาล
+สุรเดช ดาร์ซิงห์
+สุรเดช ประสานเกียรติราช
+สุรเดช ไร้กังวล
+สุรเดช สิทธิเจริญ
+สุรเทพ ประเสริฐจิตสรร
+สุรไกร กีรติปาล
+สุลัดดา ช้อนทอง
+สุลี คืนตัก
+สุวคนธ์ ม่วงทอง
+สุวณี จิตต์รัตนธรรม
+สุวณีย์ เชี่ยววัฒนา
+สุวดี เทพรักษ์
+สุวดี อารีสกุลสุข
+สุวนิตย์ เสฏฐสุวจะ
+สุวพร เซ็มเฮง
+สุวพิศ ยงศิลปชัย
+สุวภา เลี่ยมพุธทอง
+สุวรรณ กลิ่นจันทร์หอม
+สุวรรณ ขวัญยืน
+สุวรรณ จันทร์สุรินทร์
+สุวรรณ ช้างชัย
+สุวรรณ ดำเนินทอง
+สุวรรณ ทัมพร
+สุวรรณ บรรดาศักดิ์
+สุวรรณ ปิยะภาณี
+สุวรรณ พุ่มประดับ
+สุวรรณ มีหลักชัย
+สุวรรณ โรจนวิภาต
+สุวรรณ วาสนกมล
+สุวรรณ ศิริวิกุล
+สุวรรณ สุขประเสริฐ
+สุวรรณ หอมจันทร์
+สุวรรณ เอี่ยมรัศมีโชติ
+สุวรรณทิพย์ แซ่เฮง
+สุวรรณา กนิษฐสุต
+สุวรรณา เกษมสุข
+สุวรรณา คุปตานนท์
+สุวรรณา จินดาธเนศ
+สุวรรณา ชยะอลงกรณ์
+สุวรรณา ซึ้งวิริยะกุล
+สุวรรณา แซ่เล้า
+สุวรรณา ตั้งคุรุสรณ์
+สุวรรณา ทองทา
+สุวรรณา นนทสุต
+สุวรรณา บำรุงกิจเจริญ
+สุวรรณา ปัญญาชีวิน
+สุวรรณา พัฒนพงศกร
+สุวรรณา ไพโรจน์กิจจา
+สุวรรณา มูมะหะหมัดซอและ
+สุวรรณา รื่นเริงใจ
+สุวรรณา เลิศวงศ์ชัชวาล
+สุวรรณา วิจิตรประภาพงษ์
+สุวรรณา ศรีศุภวรรณ
+สุวรรณา สว่างพาณิชย์
+สุวรรณา สุขมั่นคงเสมอ
+สุวรรณา แสงธนาพฤกษ์
+สุวรรณา อนันตสิทธิ์สกุล
+สุวรรณา อินทร์อุดม
+สุวรรณี การไทย
+สุวรรณี คำสุข
+สุวรรณี จิวรวิวัฒน์
+สุวรรณี ชุติพรวณิช
+สุวรรณี แซ่ฮั้ง
+สุวรรณี ตั้งวงศ์ศานต์
+สุวรรณี เทพสินธนสกุล
+สุวรรณี บัวจีน
+สุวรรณี เผิง
+สุวรรณี เพ่งรุ่งเรืองวงษ์
+สุวรรณี รักษาพจนากิจ
+สุวรรณี เลิศวิริยะไพศาล
+สุวรรณี วิภากุลพิทักษ์
+สุวรรณี สมุทรรังสี
+สุวรรณี สุมามาลย์
+สุวรรณี อ้นรุ่ง
+สุวรรณี เอื้อสมสกุล
+สุวรรณ์ นาคประดิษฐ์
+สุวรัตน์ บุญยสิทธิ์พิชัย
+สุวรีย์ เลิศอริยานันท์
+สุวลักษณ์ อนันตชัย
+สุวลี เอี่ยมสอาด
+สุวัจน์ สงวนวงศ์
+สุวัชร์ ศุภกาญจน์เดชากุล
+สุวัฒนะ ฟุ้งลัดดา
+สุวัฒนา เพ่งพินิจ
+สุวัฒน์ กวีวุฒิศิลป์
+สุวัฒน์ คงประสิทธิ์สิงห์
+สุวัฒน์ จึงประภา
+สุวัฒน์ โชคอวยพรชัย
+สุวัฒน์ ตันเสถียร
+สุวัฒน์ นะโยสิน
+สุวัฒน์ โปษยะพิสิษฐ์
+สุวัฒน์ โพธิแสง
+สุวัฒน์ รัศมี
+สุวัฒน์ เล็กสุวรรณกุล
+สุวัฒน์ วิภัชนนท์กิจ
+สุวัฒน์ ศุภธนสินเขษม
+สุวัฒน์ สุขสันติ์
+สุวัฒน์ หวังวิชา
+สุวัฒน์ อาวรณ์
+สุวัตร ศรีชญา
+สุวันนี โกคูณ
+สุวานีย์ จินตยังคุณ
+สุวารี รุ่งสิริจรัสทอง
+สุวิช ชูตระกูล
+สุวิช ศิริวัฒนโยธิน
+สุวิชญา เกิดคง
+สุวิชา เกตุแก้ว
+สุวิชาน์ กำลังเสือ
+สุวิทย์ กองกันภัย
+สุวิทย์ ไกวัลโกศล
+สุวิทย์ จันทรงาม
+สุวิทย์ จุติประเสริฐ
+สุวิทย์ ชาญทวีคุณ
+สุวิทย์ แซ่เฮง
+สุวิทย์ ตันประวัติ
+สุวิทย์ ทองผาสุข
+สุวิทย์ นฤเบศร์ไกรสีห์
+สุวิทย์ บุญรักษา
+สุวิทย์ โปษยะพิสิษฐ์
+สุวิทย์ พิทักษ์เลิศกุล
+สุวิทย์ ภู่ไพจิตรกุล
+สุวิทย์ รัตนเจริญ
+สุวิทย์ เลาหะกุลธรรม
+สุวิทย์ วัชรเสถียร
+สุวิทย์ เวทย์วราวุธ
+สุวิทย์ เศรษฐีชัยชนะ
+สุวิทย์ สิมะสกุล
+สุวิทย์ เสรีโรจนา
+สุวิทย์ อมฤตกุล
+สุวิทย์ เอกวัฒน์
+สุวิน เลาหประสิทธิ์
+สุวิภรณ์ แย้มทับ
+สุวิมล ก้องกังวาฬโชค
+สุวิมล จันทร์เจริญ
+สุวิมล ชินะวรพงศ์
+สุวิมล ดิลกานนท์
+สุวิมล ธรรมมโนวานิช
+สุวิมล ปิติเจริญโชคลาภ
+สุวิมล ภววรพันธุ์
+สุวิมล ฤทธิโนมัย
+สุวิมล วิบูลย์เลิศวัฒนะ
+สุวิมล สันติทานนท์
+สุวิมล อดุลย์ฐานานุศักดิ์
+สุวิรัตน์ เจนวสุ
+สุวิไล เต็มธารทิพย์
+สุวโรช พะลัง
+สุหาญ สุนทรพาณิชย์
+สุเจตน์ อภัยวงศ์
+สุเชษฐ์ นิลสุวรรณากุล
+สุเทพ กลิ่นถือศีล
+สุเทพ แก้วนิมิตชัย
+สุเทพ โค้วเจริญ
+สุเทพ จีนเจนพจน์
+สุเทพ ชัยสกุล
+สุเทพ แซ่อึ้ง
+สุเทพ ตันวินิจ
+สุเทพ ทับทิมแสง
+สุเทพ ธุวะเศรษฐกุล
+สุเทพ บุญทรัพย์
+สุเทพ ปั้นนิ่ม
+สุเทพ พรอำนวย
+สุเทพ พุ่มท้วม
+สุเทพ มณีเสาวภาคย์
+สุเทพ รวยดี
+สุเทพ ลิ้มตระกูล
+สุเทพ วรยศ
+สุเทพ ศรีนิยม
+สุเทพ สมานมิตร
+สุเทพ สุขบำรุง
+สุเทพ สุวิชาชนันทร์
+สุเทพ เหมือนดวง
+สุเทพ อ่ำสุข
+สุเธียร นิรันดรเกียรติ
+สุเนตรา จิตเบญจกูล
+สุเพ็ญ จรรยานุภาพ
+สุเพียร วงค์ปันง้าว
+สุเมธ กางไธสง
+สุเมธ จันทวงศ์
+สุเมธ ไชยแก้ว
+สุเมธ ทวีทรัพย์
+สุเมธ เปลี่ยนกลิ่น
+สุเมธ มโหสถ
+สุเมธ วงศ์สุขหฤทัย
+สุเมธ ศุภพาณิชวงศ์
+สุเมธ แสงทรัพย์
+สุเมธ อิสริยอำไพ
+สุเมศร์ สุขุมภาณุเมศร์
+สุเวทย์ งูพิมาย
+สุโข ปัญจวีณิน
+สุโภชน์ ตันติวงศ์
+สุใบด๊ะ สุขเจริญ
+สุไลมาน นะมิ
+สเก็ดดาว ซื่อวัฒนะ
+สไบทิพย์ ศิริวงศ์
+เสกสรร นิ่มพิจารณ์
+เสกสรร อุทิศานนท์
+เสกสรรค์ ป้องกันภัย
+เสกสรรค์ อยู่เป็นสุข
+เสงี่ยม เก่งชน
+เสงี่ยม แซ่ชิง
+เสงี่ยม บุตรชะม้อย
+เสงี่ยม มีสันฐาน
+เสงี่ยม สมบัติถาวรวงศ์
+เสงี่ยม เอกฉัตร
+เสถียร คามีศักดิ์
+เสถียร ดลบันดาลโชค
+เสถียร บัวคลี่
+เสถียร ภาสะพันธ์
+เสถียร วงศ์เจริญเกียรติ
+เสถียร ส่อสุหัท
+เสถียร เหลืองอร่าม
+เสนอ แจ้งชัดใจ
+เสนอ มูลศาสตร์
+เสนาะ กันโรคา
+เสนาะ ตุ่นไวย์
+เสนาะ ประดับลาย
+เสนาะ ยิ้มเจริญ
+เสนาะ สังข์ทองดี
+เสนาะ เอมวะดี
+เสนีย์ ธรรมาจักร์กุล
+เสนีย์ อนุสรศักดิ์
+เสน่ห์ ความดี
+เสน่ห์ เชี่ยวธนวัฒน์
+เสน่ห์ นาห้วยทราย
+เสน่ห์ พันธ์จีน
+เสน่ห์ เมฆเฉลิม
+เสน่ห์ ศรีวัฒน์
+เสน่ห์ โสรินทร์
+เสมอ เกียรติไกร
+เสมอ มิตรวิจารณ์
+เสมอพร ชุณหชัชวาล
+เสมา ธิรามนตร์
+เสมือน เชื้อมอญ
+เสริม เกษทอง
+เสริม เนียมนพเนตร
+เสริม มูลทองย้อย
+เสริม หรูสกุล
+เสริมทรัพย์ บุญชู
+เสริมศรี กาญจนาภรณ์กุล
+เสริมศรี ศรีแก้ว
+เสริมศักดิ์ เดชบุญ
+เสริมศักดิ์ ลัคนาจันทโชติ
+เสริมศักดิ์ เอกวัฒน์
+เสริมสุข โชติช่วงฉัตรชัย
+เสริมสุข อยู่ยงสิน
+เสรี เกียรติบรรลือ
+เสรี เจียรแสงทอง
+เสรี เดชกล้า
+เสรี ธานี
+เสรี ปฏิปทานนท์
+เสรี พัวศิริ
+เสรี ยุวรี
+เสรี วงศ์ภัทรชน
+เสรี ศิริธร
+เสรี สุธาชี
+เสรี อริยโสภารักษ์
+เสวก ขะมันจา
+เสวก พันธ์หนอย
+เสวก แสงเขียว
+เสวย เรืองโชติ
+เสวียง อิศรางกูร ณ อยุธยา
+เสาร์แก้ว ใจกว้าง
+เสาวคนธ์ วิสิอติ
+เสาวณี ครอบครอง
+เสาวณี ภักดี
+เสาวณี เอี่ยมวงศ์นุกูล
+เสาวณีย์ ชูเชิด
+เสาวณีย์ ผลิตกุศลธัช
+เสาวณีย์ วิจิตรตระการรุ่ง
+เสาวณีย์ อรุณแฉ่ง
+เสาวนิต ไอน้ำทิพย์
+เสาวนี ศรีเพ็ชรดานนท์
+เสาวนีย์ ชั้นประเสริฐ
+เสาวนีย์ บุรินทรามาตย์
+เสาวนีย์ ลียากาศ
+เสาวนีย์ แสงแก้ว
+เสาวภา ช่วยชูวงศ์
+เสาวภา ศรีรัตนโพธิ์
+เสาวภาคย์ อนันต์ชื่นสุข
+เสาวรส ศรีพนม
+เสาวรีย์ ตะโพนทอง
+เสาวลักษณ์ จิรพงศานานุรักษ์
+เสาวลักษณ์ ฐานะอุดมมงคล
+เสาวลักษณ์ นารถบุญ
+เสาวลักษณ์ พิชิตลำเค็ญ
+เสาวลักษณ์ ลิขิตวัฒนพร
+เสาวลักษณ์ สกุลรัตน์
+เสาวลักษณ์ หลิ่มสาโรช
+เสาวลี ติกขปัญญกุล
+เสียดฟ้า ชวนจิตต์
+เส็ง ชื่นสุข
+เส่ย รัตนวัฒนาธร
+แสง ประยูรหงษ์
+แสง สุระเรืองชัย
+แสงจันทร์ เจริญสุข
+แสงจันทร์ ผกามาศ
+แสงจันทร์ สัชชะเดช
+แสงชัย ฉัตรชัยสุชา
+แสงชัย นวรัตน์ดุสิต
+แสงชัย ศรีรุ่งเรืองภรณ์
+แสงดาว ทองแพ
+แสงทอง ทินนิกร
+แสงธรรม ฟุ้งไพศาลพงศ์
+แสงมา เดชมนต์
+แสงรัตน์ อุดมชัยบรรเจิด
+แสงสุรีย์ วงศ์สุวรรณนิธิ
+แสงอรุณ บุญชู
+แสงอ่อน คำลือ
+แสงเดือน ทิพมนต์
+แสงเดือน สุววรรธน์
+แสงเพ็ญ ลีธนศักดิ์สกุล
+แสดง ตันตยากร
+แสนพล รัศมี
+แสวง กันรัมย์
+แสวง จันทร์อุดม
+แสวง ดำรัสมงคลสิริ
+แสวง บุญงอก
+แสวง พลาณิชย์
+แสวง เย็นใจประเสริฐ
+แสวง ศิริประภาษมงคล
+แสวง หมัดนุรักษ์
+โสดา รัญดร
+โสพล สุขเจริญ
+โสพิศ ภูสนาคม
+โสภณ กู๋เจริญ
+โสภณ จันทร์กลิ่น
+โสภณ ชาลีพรหม
+โสภณ เดชเทวพร
+โสภณ ทับบรรจง
+โสภณ บุญช่วย
+โสภณ พงษ์เภตรารัตน์
+โสภณ ภุมราพันธุ์
+โสภณ รัตนเลิศ
+โสภณ ว่องวงศ์ศรี
+โสภณ ศิวิลัย
+โสภณ สุญาณเศรษฐกร
+โสภณ เหมือนสมัย
+โสภณพัฒนาภรณ์ พระครู
+โสภา เกียรติสังวรณ์
+โสภา เจริญสุขจิระ
+โสภา เตียวพิพัฒน์
+โสภา บุญเรือง
+โสภา เพ็ชรคูเวียง
+โสภา ลิมานนท์วราไชย
+โสภา สวัสดิ์ทัติ
+โสภา โหตระกิตย์
+โสภาพร อาหินันโท
+โสภาศ โสวัฒนางกูร
+โสภิดา แท้เที่ยงธรรม
+โสภิต ลิ้มอำนวย
+โสภิษฐ ผลคำสุข
+โสภี อนุจารีรัตน์
+โสมพิชฌา วรรณกูล
+โสรยา บุญยวิตร์
+โสรัตน์ จอง
+โสฬส ม่วงนุ่ม
+ไส ยิ้มเนียม
+ไสว แขดวง
+ไสว เฉ่งทอง
+ไสว โตวงษ์
+ไสว บุญทิม
+ไสว พึ่งแก้ว
+ไสว ราชวงศ์
+ไสว ศรีแสง
+ไสว สุดปาน
+ไสว อำไพพร
+หง อิสระวรวาณิช
+หงษ์ โกวินธนาพัฒน์
+หงษ์ เผ่าโภคสถิตย์
+หงิ่งล้วง แซ่เซียว
+หทัย เผือกลาดพร้าว
+หทัยชนก แสงพรมทิพย์
+หทัยรัตน์ คุ่ยต่วน
+หทัยรัตน์ พัฒน์คุ้ม
+หทัยรุ่ง ตั้งจิตพิทักษ์กุล
+หนำ ปิยัสสพันธุ์
+หนึ่งหทัย เนติลักษณวิจารณ์
+หนู รุ่งเจริญรอด
+หนูน้อย ฮอกิ้นส์
+หนูวรรณ์ วรรัตน์
+หนูเล็ก แสงทอง
+หม่วย ธรรมบุตร
+หมัด หมัดฮารุณ
+หมุด สุขภิญโญ
+หมุยเตียง แซ่โอ๊ว
+หยกศิริ ประชุมโชติ
+หยวก ล้ำเลิศ
+หยาดดวง เวณุจันทร์
+หยี่ เอี่ยมกลิ่น
+หรรษ์ศักดิ์ พันธ์งาม
+หรรษา มะโรหะบุตร์
+หรั่ง สุทธิสุวรรณ
+หฤทัย เจียมใจสว่างฤกษ์
+หลง สิงห์รุ่งเรือง
+หล่องง้อ แซ่เซียว
+หลาด นิลศิริ
+หลิน ศรีวงจันทร์
+หลี ปลอดภัย
+หลีเอง แซ่ฉั่ว
+หวล เทียมอัมพร
+หวัง ฤกษ์รัชนีกร
+หวั่น จุลมุน
+หวานใจ คล้ายศรี
+หอม เทียมเจริญ
+หอมหวล ปัตนี
+หัด โคตะมะ
+หัทยา พานิชกุล
+หัสตชัย แสงเสริฐเศรษฐ์
+หาญ ซื่อตรง
+หาญ อั๋นวงศ์
+ห่างคุง แซ่ลิ้ม
+หิรัญ บุนนาค
+หิรัญญิการ์ อรัญญิก
+หุ้ยไน้ แซ่ตั้ง
+เหมพรรณ จานศิลา
+เหมือน สีเหล็ก
+เหรียญ ชีวานันท์
+เหรียญ สง่าเนตร
+เหรียญเงิน ทัศนวิรุฬห์
+เหลี่ยม นานอก
+เหล็กฮู้ แซ่เล็ก
+เห็ม ลำเหลือ
+แหลมทอง อภิมหาบุณย์
+โหล่เหมย แซ่เฉิน
+ใหม่ แซ่ซิ้ม
+ไหล่ฮก แซ่จึง
+องค์อร เลอลภ
+องอาจ จึงประภา
+องอาจ โตประดิษฐ์
+องอาจ พจน์ทวีเกียรติ
+องอาจ โรจน์ตรงจิตต์
+องอาจ สุจิรชาโต
+องุ่น โกฏิตระกูล
+องุ่น พรหมมายน
+องุ่น โหงวเจริญ
+อณิวัฒน์ เหลืองมีชัย
+อดินันท์ มงคลรัตน์นากร
+อดิศร ชาติกำแหง
+อดิศร เพ็ชรถนอม
+อดิศร สุริยวรวงศ์
+อดิศักดิ์ กุลศิริวุฒิชัย
+อดิศักดิ์ โฉมแก้ว
+อดิศักดิ์ ทองแท่ง
+อดิศักดิ์ พวงเพ็ชร์
+อดิศักดิ์ โรหิตะศุน
+อดิศักดิ์ ศักดิ์นำส่ง
+อดิศักดิ์ หละทิ้ง
+อดิศัย ธนวิบูลย์
+อดิสัย วิมลสัจจารักษ์
+อดิเรก บุญเอี่ยม
+อดุล จันทรสุริยศักดิ์
+อดุลย์ศักดิ์ ตีระจินดา
+อดุลย์ จารุรัตน์
+อดุลย์ เตียสกุล
+อดุลย์ ผาติหัตถกร
+อดุลย์ รัตนทัศนีย์
+อดุลย์ สกุลพาณิชย์
+อดุลย์ อินเสนี
+อตินุช รังสิยานนท์
+อติเรก ณ ถลาง
+อธิคม ศุภดิลกชัย
+อธิปัตย์ คลี่สุนทร
+อธิวัฒน์ อรรถปวัตน์
+อนงค์นาฎ เตชะวสัญญู
+อนงค์นุช กองจินดา
+อนงค์ลักษณ์ มาลากอง
+อนงค์ แก้วกิตติคุณ
+อนงค์ จันทรศุภแสง
+อนงค์ ชาตบุตร
+อนงค์ แซ่เบ๊
+อนงค์ ทวีสุข
+อนงค์ นามศรีคุณ
+อนงค์ ประพัตร์กุล
+อนงค์ พัลลภรักษา
+อนงค์ ภู่เจริญ
+อนงค์ รุ่งเรือง
+อนงค์ วิเวโก
+อนงค์ สมานสิน
+อนงค์ สุภาพพร้อม
+อนงค์ อ่วมสุข
+อนงลักษณ์ โรจนบุรานนท์
+อนวัช ฐิติภากร
+อนัญญา วีระฐานะ
+อนันต์ชัย ขันโท
+อนันต์ศักดิ์ เพียรจิตเลิศขจร
+อนันต์ กำปั่นทอง
+อนันต์ ขยัน
+อนันต์ งามยิ่งสง่า
+อนันต์ จิตต์รักไทย
+อนันต์ แจ้งกลีบ
+อนันต์ ชุ่มกรานต์
+อนันต์ แซ่เหีย
+อนันต์ ตรีพจนีย์
+อนันต์ ไตรสารศรี
+อนันต์ ธนะศิรินาวิน
+อนันต์ นิติเจริญพงศ์
+อนันต์ บุญศรีสุข
+อนันต์ ปลื้มมณี
+อนันต์ พงษ์สมบัติ
+อนันต์ พึ่งทรัพย์
+อนันต์ ภู่ศรีวราวงศ์กูล
+อนันต์ เมฆลอย
+อนันต์ รัชเวทย์
+อนันต์ ลิ้นจี่
+อนันต์ วงศ์สกุล
+อนันต์ วิริรัตน์
+อนันต์ ศรีเพียร
+อนันต์ สวัสดิ์พาณิชย์
+อนันต์ สุขน้อย
+อนันต์ สูจิฆระ
+อนันต์ เหมือนแม้น
+อนันต์ อัศวกุล
+อนันต์ เอกนิยม
+อนัส ศิลสมบูรณ์
+อนิรุทธ์ คงเปรม
+อนิษฎา ศรีสันติแสง
+อนุ วัฒธัญญกรรม
+อนุกูล ชาติอุดมเดช
+อนุกูล ศิริศักดิ์ไพบูลย์
+อนุชรักษ์ มหาอัมพรพฤกษ์
+อนุชา จารุหิรัญสกุล
+อนุชา ธำรงรัตน์
+อนุชา มุกดาสนิท
+อนุชา สิริสินวิบูลย์
+อนุชาติ คชศิลา
+อนุชิต การนอก
+อนุชิต ทองอั้น
+อนุชิต เร่งพุฒิพงษ์
+อนุชิต อินธิรักษ์
+อนุธิดา แพลงกระโทก
+อนุพงษ์ จังนภาพร
+อนุพนธ์ ยศภรณ์
+อนุพันธ์ สุวรรณ์
+อนุรักษ์ คันธรักษ์
+อนุรักษ์ นาดสาร
+อนุรักษ์ ลีลาปิยมิตร
+อนุรักษ์ เอื้องอุดม
+อนุรัตน์ หมัดสะและ
+อนุวรรตน์ กลเซ็มมูซอ
+อนุวัฒน์ นาคศรีสุข
+อนุวัฒน์ สถิรวิกรานต์
+อนุวัตน์ อังศุภากร
+อนุวัตร อาจวาทิน
+อนุศักดิ์ จงจามรีสีทอง
+อนุศักดิ์ มีสมวิทย์
+อนุศิษฎ์ เทพสินธพสกุล
+อนุสรณ์ คิวเกษมสวัสดิ์
+อนุสรณ์ ถ้ำสุวรรณ
+อนุสรณ์ พงษ์โชติ
+อนุสรณ์ ลิมปิวัฒน์
+อนุสรณ์ สุนทรา
+อนุสรา สุขชาติ
+อนุเทพ บุญเปี่ยมศักดิ์
+อบมาลี ภิญโญวานิชกะ
+อภัย ธรฤทธิ์
+อภิชญา นพมาศ
+อภิชัย จิรัฐติยางกูร
+อภิชัย ทรงศิลป์
+อภิชัย มหารุ่งเรืองรัตน์
+อภิชัย ศรีไชยยันต์
+อภิชัย อัศวโรจน์พานิช
+อภิชาต แพรสีเจริญ
+อภิชาติ กีรติอาภากุล
+อภิชาติ จันทโรบล
+อภิชาติ เชิดชัยภูมิ
+อภิชาติ ตั้งคารวคุณ
+อภิชาติ ธีรสุนทรวัฒน์
+อภิชาติ โปรณานันท์
+อภิชาติ มณีโรจน์ฉาย
+อภิชาติ เลิศปิยะนันทกูร
+อภิชาติ ศิริมาตย์
+อภิชาติ สุวรรณกุล
+อภิชาติ อัศวพิชญ์โชติ
+อภิชิต ฤทธิบูรณ์
+อภิญญา ฉัตรโอฬารกุล
+อภิญญา บุญจำรัส
+อภิญญา เลิศวัฒนนนท์
+อภิญญา อยู่คำ
+อภินพ เกิดพิบูลย์
+อภินันท์ ณ นคร
+อภินันท์ รักตประจิต
+อภิบาล วรรังสฤษฏิ์
+อภิยุตต์ ศิริกุล
+อภิรดี โพธิยันต์
+อภิรมย์ ดิษฐี
+อภิรักษ์ ชีวเสถียรพร
+อภิรักษ์ ศิริทรัพยากร
+อภิรัฐ อิทธิวิกุล
+อภิรัตน์ สุขศรี
+อภิวรรณ สวัสดี
+อภิวัฒน์ บุรีสิริรัตน์
+อภิวัตน์ พิณทอง
+อภิศักดิ์ ซิ้มประเสริฐ
+อภิศักดิ์ สรวิสูตร
+อภิสิทธิ์ จันทรวงศ์
+อภิสิทธิ์ พรเจริญ
+อภิสิทธิ์ สายะวิบูลย์
+อภิเชษฐ์ ช่องดารากุล
+อภิโรจน์ ปิ่นเสถียรเกส
+อมร จะเชือนรัมย์
+อมร ดิเรกบุษราคัม
+อมร บางเจริญพรพงศ์
+อมร พิสุทธิรัตนพันธุ์
+อมร เรืองมานะมงคล
+อมร ศิริอาชาวัฒนา
+อมร หมัดขาว
+อมร เอี่ยมสำอางค์
+อมรพรรณ บุรีสิริรัตน์
+อมรรัตน์ กาญจนวิจิตรเลิศ
+อมรรัตน์ จุฑามาชาติ
+อมรรัตน์ ดุสิต
+อมรรัตน์ นิยมราษฎร์
+อมรรัตน์ พูนตระกูลเกียรติ
+อมรรัตน์ รุ่งโรจน์สกุล
+อมรรัตน์ วินิจฉายะจินดา
+อมรรัตน์ สีเง้อ
+อมรรัตน์ อังสุทธิ
+อมรวิทย์ เอกแสงศรี
+อมรศักดิ์ วงศ์พัฒนาสิน
+อมรา คุ้มแก้ว
+อมรา นิ่มราศรี
+อมรา รัตตากร
+อมรา หงษ์พร้อมญาติ
+อมราวดี อังคสุวรรณ
+อมรเทพ พ่วงโกศล
+อมันยิต ซิงห์
+อยุธ นันทาภิวัธน์
+อร แซ่โง้ว
+อรฉัฐ ช่างทำ
+อรชร โพธิสุข
+อรชุดา พรมบุตร
+อรณี กิติอาภา
+อรณี หลอดเงิน
+อรทัย กฤษณยรรยง
+อรทัย จีรวรรณวงศ์
+อรทัย ดุษฏีทวีพันธุ์
+อรทัย บุญฉิม
+อรทัย ภักดีวิจิตร
+อรทัย เลิศประสพสุข
+อรทัย สยุมพร
+อรทัย อนุพันธ์วีระพงษ์
+อรธิดา บุญสม
+อรนุช ก้องสินธุ
+อรนุช ชนะพันธ์
+อรนุช ถนัดกิจ
+อรนุช พาณิชย์จินดา
+อรนุช วรรณวิจิตร
+อรนุช หังสะไวศยะ
+อรพร บัวประดิษฐ์
+อรพรรณ ฉันวิไลกิจ
+อรพรรณ ปฏิพัทธ์ปัญญากุล
+อรพรรณ วิเศษมงคลชัย
+อรพรรณ อินทรสุริยเดช
+อรพิณ เกตุปัญญา
+อรพิน จันทรสุข
+อรพิน ตันติวิรุฬห์
+อรพิน พรประกาสิต
+อรพิน ว่องวิชชุเวทย์
+อรพิน อนันตรกิตติ
+อรพินทร์ อภินันท์จารุพงศ์
+อรพินท์ แซ่เจี่ย
+อรพินท์ พงศ์วรามิตรชัย
+อรพินท์ วงศ์วิสุทธิรัตน์
+อรพินท์ อนันตบุตร
+อรพินธ์ ธิดารัตน์สกุล
+อรมณี ภาณุพันธ์
+อรรคเดช เลื่อมแสง
+อรรณพ เคียงศิริ
+อรรณพ บุญพิรุณรักษา
+อรรณพ วิจิตรตระการกุล
+อรรณพ อึ้งวิฑูรสถิตย์
+อรรถกมลยบุตยานวัตร หลวง
+อรรถชัย ฤกษบุตร
+อรรถพร โชคชัยเจริญศรี
+อรรถพล กฤษดาธิการ
+อรรถพล ยินบัว
+อรรถพล เฮงบุณยพันธ์
+อรรถวุฒิ รัตนานันท์
+อรรถอุดม พลาศรัย
+อรลักษณ์ ปิ่นนิกร
+อรวรรณ แก่นทอง
+อรวรรณ จันทร์เที่ยง
+อรวรรณ ชฎาชัยวิวัฒน์
+อรวรรณ แซ่เจ่า
+อรวรรณ เต็มสุวรรณพานิช
+อรวรรณ ธีระวิทยเลิศ
+อรวรรณ ปฐมวาณิชย์
+อรวรรณ พงษ์วร
+อรวรรณ ภวพงศ์สุภัทร
+อรวรรณ รอดพันธ์
+อรวรรณ เลิศสาธิต
+อรวรรณ วิทยาเวช
+อรวรรณ ศิริสุขสมบูรณ์
+อรวรรณ สินลอยมา
+อรวรรณ แสงรัตนชัยกุล
+อรวรรณ อรุณรุ่งโรจน์
+อรวรรณ์ มุ่งหน้าที่
+อรศรี นิยมวัน
+อรษา ทรงสมรรถภาพ
+อรสา ขัตติยพรพงศ์
+อรสา ตันไพจิตร
+อรสา พลอยพานิชเจริญ
+อรสา วนรักษ์
+อรสา หงษ์ทอง
+อรอณี เวชพงศา
+อรอนงค์ ตั้งสวัสดิรัตน์
+อรอนงค์ เพริดพริ้ง
+อรอนงค์ ศรีมูล
+อรอนงค์ เอี่ยมฤกษ์ชัย
+อรอุมา นันทุรัตน์
+อรอุษา อาษานอก
+อรัญ เผือกทอง
+อรัญ สุนิพล
+อรัญญา จันทร์สุริวงศ์
+อรัญญา ธนานันท์
+อรัญญา มานะแก้ว
+อรัญญา สาธุ
+อรัณ ศรีอวยชัย
+อร่าม เทพานนท์
+อร่าม วงศ์ถิรวรรธน์
+อร่ามศรี มงคลศิริ
+อรินา ศิริวงศ์
+อริยา วิทยศรีเจริญ
+อริสา เกษมกิจสุวรรณ
+อรุณ เกียรติปัญญา
+อรุณ จังทองศิริ
+อรุณ ชมเชยวงศ์
+อรุณ ดำรงผล
+อรุณ ทองนอก
+อรุณ นิมมานนท์
+อรุณ ปรีดา
+อรุณ พุกพัก
+อรุณ มาฮาบูบ
+อรุณ เรืองยุทธปกรณ์
+อรุณ วันรักษ์
+อรุณ ศึกษาพรต
+อรุณ สุขสบาย
+อรุณ หาญชนะ
+อรุณ อุดมสุข
+อรุณประศาสตร์ เปล่งแสงศรี
+อรุณรัตน์ ทับเล
+อรุณรัตน์ เอี่ยมเจริญยิ่ง
+อรุณวรรณ กีรติพลกุล
+อรุณศรี เกษมพงษ์
+อรุณศรี นุ่มหอม
+อรุณศรี ศิริพรเทพ
+อรุณา บาก้า
+อรุณี คงเรืองฤทธิ์
+อรุณี เจริญผล
+อรุณี ไชยกล
+อรุณี แตงฉ่ำ
+อรุณี นาคประสิทธิ์
+อรุณี ปิ่นบัณฑิต
+อรุณี พีรากรเดช
+อรุณี รักษานาเวศ
+อรุณี โลหาชีวะ
+อรุณี ศรีภา
+อรุณี สิงห์คำ
+อรุณี หมู่ขจรพันธ์
+อรุณี อุดมปราละ
+อรุสรา ชาญสว่าง
+อรไท วุฒิเดชเกรียงไกร
+อลงกรณ์ เดชคง
+อลิตา ดิศรภักดี
+อลิสา ทีโส
+อวบ ประโมจนีย์
+อวยชัย ปิยะคุณ
+อวยพร แก้วมณี
+อวยพร มงคลกล้า
+อวล นิตยสุทธิ์
+อสุนีย์ ทรัพย์ศรีศุภชัย
+ออมสิน สิงห์เทียน
+อ่อนตา สัทธารังสี
+อ้อ โพธา
+อ้อมใจ เพิ่มพิกุล
+อ้อยทิพย์ แซ่อั้ง
+อ้อยใจ บุญยัง
+อัก ชุ่มชื่น
+อักษรักส์ โตกฤษณะ
+อัครนาฏ กิตติแสงธรรม
+อัครพัฒน์ แซ่โค้ว
+อัครเชษฐ์ คงเจริญ
+อัครเดช อารีย์สกุล
+อังกูร ปาลีวงศ์
+อังคณา คำสุนทร
+อังคณา โชติขจรเกียรติ
+อังคณา ทองประเสริฐ
+อังคณา เปี่ยมสุขวัฒน์
+อังคณา เมธยาภา
+อังคณา วาณิชวิเศษกุล
+อังคณา สุขสิทธิ์
+อังคณา อินทรโกเศศ
+อังคาร วัชรบูรพาชัย
+อังสนา คชรักษ์
+อังสนา เลิศผกากุล
+อังเดร จูเนียร์
+อัจจณา ดิถีสวัสดิ์
+อัจฉรา กลิ่นหอม
+อัจฉรา เขมสิริโชค
+อัจฉรา จิตรนุวัฒน์กุล
+อัจฉรา ชื่นสุวรรณ
+อัจฉรา ดิษฐอินทร์
+อัจฉรา ทองมี
+อัจฉรา นิลสวัสดิ์
+อัจฉรา ปลื้มอุทร
+อัจฉรา พิชญ์เลิศชาญ
+อัจฉรา มาศพันธุ์
+อัจฉรา ลวชลาคม
+อัจฉรา วัชรกุล
+อัจฉรา ศรีเล็กดี
+อัจฉรา สารพิมพา
+อัจฉรา สุวิทยาพรสกุล
+อัจฉรา อดิศักดิ์กิตติ
+อัจฉรา เอกจำนงค์
+อัจฉราพันธ์ คัพทะนาวิน
+อัจฉราวรรณ เภตรารัตน์
+อัจฉริยา เสริมทอง
+อัจฉรีย์ อมรเลิศวิมาน
+อัชฌา ตั้งติปกรณ์
+อัชนา ลาภหลาย
+อัชราภรณ์ สุขเกษม
+อัญชฎา เอี่ยมประดิษฐ์ภัณ
+อัญชนา เปล่งจินดาเรือง
+อัญชนี พงศ์ธีรภาพ
+อัญชลี กานดา
+อัญชลี คงกัลป์
+อัญชลี จั่วแจ่มใส
+อัญชลี ชมรส
+อัญชลี แซ่ตั้ง
+อัญชลี ตันติมิตร
+อัญชลี ธนะประ
+อัญชลี บัวทอง
+อัญชลี ปิยะสาธุกิจ
+อัญชลี พินทุพีรโกวิท
+อัญชลี มงคลเจริญ
+อัญชลี รุ่งรัตนาอุบล
+อัญชลี วงศ์ทิม
+อัญชลี วิโรจน์ธนะชัย
+อัญชลี ศุภวรรณ
+อัญชลี สุขุมวานิชกุล
+อัญชลี หล่อนพเก้า
+อัญชลี อินทร์ทอง
+อัญชัญ คำตา
+อัญชัน วุฒิพฤกษ์
+อัญชุลี สุโภทัย
+อัญญาต์ ไพจิตรานนท์
+อัญเชิญ จันทรุเบกษา
+อัฐพล ไชยรักษ์
+อัตถพร ลับไพรี
+อัธยา บุญญะดิษฐ์
+อั่น แซ่จิว
+อับดุลเลาะ สุขถาวร
+อัปสร นิทัศนจารุกุล
+อัมพร กมลบริสุทธิ์
+อัมพร แก่นกระจ่าง
+อัมพร จตุรวัฒนา
+อัมพร เจนอนันต์พร
+อัมพร ชื่นใจ
+อัมพร แซ่โค้ว
+อัมพร ตุณสุวรรณ
+อัมพร ธนสุวรรณเกษม
+อัมพร บรรดาศักดิ์
+อัมพร ปรางค์รัตน์
+อัมพร พรมตัน
+อัมพร พุลเล็ก
+อัมพร มาบจะบก
+อัมพร รุ่งเสรีรัตน์
+อัมพร วงศ์เลิศฟ้า
+อัมพร วิโนทัย
+อัมพร ศิริเวชพันธุ์
+อัมพร สาระพงษ์
+อัมพร สูงสว่าง
+อัมพร อมรกุลาจารย์
+อัมพร อุ่นเสียม
+อัมพริศ เสือวรรณศรี
+อัมพวัน พลอยเพชรมณี
+อัมพา ไข่มุก
+อัมพิกา แซ่อึ้ง
+อัมภา จิรเจิดนภา
+อัมรา คุณเชียร
+อัมรินทร์ นาราช
+อัลดุลเลาะ แดงโกเมน
+อัศนีย์ บุญศิริคำชัย
+อัศวิน แจ้งกระจ่าง
+อัศวิน ศรีสวัสดิ์
+อัษฎางค์ ฐานะวร
+อัสดางค์ ปิ่นสุวรรณ์
+อัสอารี กัสตาวี
+อาคม คร้ามศรี
+อาคม นิตยากรณ์
+อาคม เฟื่องฟุ้ง
+อาคม ศานติสรร
+อาคม อัตถะสัมบุณณะ
+อาจ วสุขันธ์
+อาจารี หอมเศรษฐี
+อาจินต์ เสี่ยงโชคอยู่
+อาชีวะ มงคลสกุลฤทธิ์
+อาณัติ พันธุวดี
+อาดูลย์ ยันตรพินิจ
+อาทร แชประเสริฐ
+อาทร รามโกมุท
+อาทรทิพย์ พวงมณี
+อาทิตย์ ใจบุญ
+อาทิตย์ มานสัจจธรรม
+อาทิตย์ อวศิริพงษ์
+อานนท์ จีรดิษฐ์
+อานนท์ เพ็ชรน้อย
+อานนท์ สระทองแพ
+อานันต์ อิฐสุวรรณ
+อานีตา จาวาลา
+อานุภาพ สุนอนันต์
+อาพร แซ่ลี้
+อาภรณ์ กุลวัฒโท
+อาภรณ์ ใจทัศน์กุล
+อาภรณ์ ตั้งศิริเสถียร
+อาภรณ์ นิโรจน์
+อาภรณ์ พานทอง
+อาภรณ์ รัตนะคุปต์
+อาภรณ์ ศิลอุดม
+อาภรณ์ สโรชวิกสิต
+อาภัทรา ธรรมเจริญ
+อาภา โฉมศรี
+อาภา ศรีงามผ่อง
+อาภากร พิพัฒน์จริยา
+อาภาพรรณ ตระการสิงหนาท
+อาภาภรณ์ สุขสัย
+อาม่วย แซ่โต๋ว
+อามุ่ย แซ่ตัน
+อารดา กรุณายิ่งพันธ์
+อารมณ์ แจ่มดาว
+อารมณ์ ผลเจริญ
+อารมณ์ สงวนทรัพย์
+อารมย์ จั่นฮวบ
+อารมย์ มูเทีย
+อารยะ ตรีศุกร์
+อารยา งามวงศ์เวชกุล
+อารยา ทิมกุล
+อารยา พิพัทธกุศลกุล
+อารยา ศตัษเฐียร
+อารยา อินทร์จันทึก
+อารักษ์ ปุ้ยตระกูล
+อาริชย์ คุณประสพ
+อารี กองเป็ง
+อารี แจ้งสว่าง
+อารี ดิษาภิรมย์
+อารี นาคะสิงห์
+อารี พรหมโณมัย
+อารี ยิ้มอ่ำ
+อารี วิไลวรรณ
+อารี สีตะสิทธิ์
+อารี อัศรัสกร
+อารีพร วงษ์มณีเทศ
+อารีย์วรรณ บัวเผื่อน
+อารียา ลิยะกุลพงศ์
+อารีย์ กิติสารศักดิ์
+อารีย์ คุ้มศิริ
+อารีย์ เจียไพบูลย์
+อารีย์ ซื่อชัยเจริญ
+อารีย์ เด่นศิริพงษ์
+อารีย์ ทิพย์ญานวงศ์
+อารีย์ บินหมัด
+อารีย์ พงศ์พัฒนานุรักษ์
+อารีย์ โพธิสุวรรณ
+อารีย์ เมืองสงวน
+อารีย์ ลิ่มวงศ์
+อารีย์ ศรประเสริฐกุล
+อารีย์ สว่างศรี
+อารีย์ สุนพงษ์ศรี
+อารีย์ หุตะมาน
+อารีย์ อุดมคณารัตน์
+อารีรัตน์ เจตต์สรรวิสรณ์
+อารีรัตน์ บุญทวี
+อารีรัตน์ ลิ้มประเสริฐสกุล
+อารีรัตน์ แหธัญวิสิฐ
+อารีวรรณ ธาราธีรเศรษฐ์
+อารีเฟน ฮะซานี
+อาลัย สุระเรืองชัย
+อาวุฒิ สงวนทรัพย์
+อาวุธ ศรีจันทร์
+อาสา ขยันเขียน
+อาอีซ๊ะ เหมสมัน
+อาเยกุมาร ปาวา
+อ่าง แซ่เตีย
+อ๋า ศรีอำไพ
+อำนวย เกษบำรุง
+อำนวย ครุฑนา
+อำนวย จันทะ
+อำนวย ฉัตรชาญมงคล
+อำนวย ไชยโรจน์
+อำนวย เตชะศรี
+อำนวย ทัศนเมธิน
+อำนวย นาคนาวา
+อำนวย บุญทรักษา
+อำนวย ปั้นงาม
+อำนวย พรเลิศปิติ
+อำนวย เพชรแสง
+อำนวย มาสา
+อำนวย รัตนวิไลกุล
+อำนวย วงศ์วณิช
+อำนวย เวชสุกรรม
+อำนวย สนหลี
+อำนวย สีนวน
+อำนวย สุวรรณปาล
+อำนวย หอยสังข์
+อำนวย อัศวศรีสุวรรณ
+อำนวย ฮาซันบิน
+อำนวยพร ศิริพงษ์ไพบูลย์
+อำนาจ การุณมรรคผล
+อำนาจ จงอดิเรกลาภ
+อำนาจ ชยสมานนท์
+อำนาจ ตรียานนท์
+อำนาจ ธีระประดิษฐผล
+อำนาจ บุญเต็ม
+อำนาจ พรหมนิตย์
+อำนาจ มงคลพันธ์
+อำนาจ เรือนทิพย์
+อำนาจ ไวจงเจริญ
+อำนาจ สายดวง
+อำนาจ แสงศิริ
+อำนาจ อำนาจสิทธิชัย
+อำพน ยิ้มสมบัติ
+อำพร คูณสวัสดิ์
+อำพร ดอนไพรเพชร
+อำพร บัวชัง
+อำพร ภู่เกลี้ยง
+อำพร ไว้ทเบรชท์
+อำพร แสงเพชร
+อำพรรณ ทวีมารถ
+อำพล เกาะกากลาง
+อำพล ชำนาญกิจ
+อำพล นามสนธิ
+อำพล โพธิ์พุ่มเย็น
+อำพล วีระตะนนท์
+อำพล หะรินสุต
+อำพัน คล้ายชัง
+อำพัน ผลห้า
+อำพัน สุขจอด
+อำพันธ์ ชวกุล
+อำพันพงษ์ โดเรี่ยน
+อำภา จันทรคุณาภาส
+อำภา ปานรักษา
+อำภา สุขอารมย์
+อำรุง สรรพสิทธิ์วงศ์
+อำไพ แก้วแจ่ม
+อำไพ จิตรมิตร
+อำไพ ไชยพุทธ
+อำไพ ถุงทรัพย์
+อำไพ บัณฑิต
+อำไพ ผลดี
+อำไพ ภมรสุวรรณ
+อำไพ รัตนรัตน์
+อำไพ วิชาทานสกุล
+อำไพ สมัครไทย
+อำไพ สุรงค์เลิศ
+อำไพ อยู่ศรีเจริญ
+อำไพพรรณ วุฒิธรรมจารี
+อิ๊กตี๋ แซ่เบ๊
+อิงอร วิเชียรสรรค์
+อิ๊ดซ้ง แซ่ฮ้อ
+อิทธิชัย สุหัตถาพร
+อิทธิพล ใจตั้ง
+อิทธิพล รัชในวรรณ
+อิทธิยา แจ่มมิน
+อิทธิโรจน์ พงษ์พิทักษ์
+อินทรศักดิ์ ทองดี
+อินท์อร พันธวารี
+อินทิรา ตันปกิจวงศ์
+อินทิรา เวชธรรม
+อินธิดา แซ่ลี้
+อิม แซ่เจ็ง
+อิ่มจิตต์ อุดมธนภัทร
+อิ้วท้ง แซ่โง้ว
+อิศรา ยงยืน
+อิศเรศ ฉัตรแก้วนพดล
+อิสระ จิตมีสุข
+อิสรา สงวนพงศ์
+อิสสระ ผลาเกตุ
+อีซา พลอยดี
+อี๋เต็ก แซ่เตียว
+อุกฤษ ชาญเลขา
+อุกฤษฏ์ สังข์แก้ว
+อุณานันทน์ วงษ์สัจจานันท์
+อุดม กึกก้อง
+อุดม โกสัยสุก
+อุดม คำภิระยศ
+อุดม จันทร์เที่ยง
+อุดม เจริญศรี
+อุดม ชารีธรรม
+อุดม แซ่ตั้ง
+อุดม แดงรัศมีโสภณ
+อุดม ทรงมี
+อุดม ธรรมภูษิต
+อุดม บัวรุ่ง
+อุดม ปานเถื่อน
+อุดม พรหมเกตุจันทร์
+อุดม พุ่มพวง
+อุดม ภิญโญชีพ
+อุดม มุตรนิพันธุ์
+อุดม รัศมีรังษีเหลือง
+อุดม ลีทอง
+อุดม วสุวิวัฒน์
+อุดม ศรีนพคุณ
+อุดม ศุภสินธุ์
+อุดม สันธู
+อุดม สุดไธสง
+อุดม แสนจำหน่าย
+อุดม อนันตเสถ
+อุดม อึ้งสุวรรณพานิช
+อุดมชัย ตั้งอมรศิริ
+อุดมพร ตันชัยมงคล
+อุดมพันธุ์ ทิพทัส
+อุดมลักษณ์ นนทิวรรธก
+อุดมศรี กิจค้า
+อุดมศักดิ์ โกมลารชุน
+อุดมศักดิ์ ธูปสุวรรณ
+อุดมศักดิ์ วงศ์พิศาล
+อุดมศักดิ์ อวิรุทธา
+อุดมเดช ชาญชยศึก
+อุดร ใจปันธิ
+อุดร พึ่งทอง
+อุดร เสถียรภาพงษ์
+อุทร เขมะบุลกุล
+อุทัย แก่นแก้ว
+อุทัย คูแก้ว
+อุทัย ใจประสาท
+อุทัย แซ่อึ้ง
+อุทัย เตชะรงค์
+อุทัย ธรรมอินทร์
+อุทัย บูรณวิชัยศิลป์
+อุทัย พันธ์พรึกส์
+อุทัย มุสิกะชัย
+อุทัย ลิ้มประเสริฐ
+อุทัย เวชยา
+อุทัย สวัสดิจันทร์
+อุทัย สุวรรณะ
+อุทัย อ่อนรั่ว
+อุทัยพร จารุกิจโสภา
+อุทัยวรรณ จันทร์วัฒนางกูร
+อุทัยวรรณ บัวแก้ว
+อุทัยวรรณ รัมยะรังสิ
+อุทัยวรรณ สุนทรวัฒน์
+อุทาร เฟื่องฟูสิน
+อุทิศ ดุลยกาญจน์
+อุทิศ ล้วนเจริญ
+อุทิศ โอภาสนำพาวงศ์
+อุทุมพร พลาวงศ์
+อุนิตย์ วรรณสินธ์
+อุ่นเรือน จิยะวรนันท์
+อุ่นใจ บุญเสริมแท้
+อุบล แก้วนิมิตร
+อุบล จันทร์ชีวะ
+อุบล ชื่นจิตร
+อุบล โตมอญ
+อุบล นิลเขียว
+อุบล ผ่านจังหาร
+อุบล ภูพีระสุพงษ์
+อุบล เริงกมล
+อุบล ศรีกิตติศักดิ์
+อุบล สิริจันทรดิลก
+อุบล หมื่นภักดี
+อุบล อุปเสวี
+อุบลรัตน์ จิตตะเสนีย์
+อุบลรัตน์ แพ่งนคร
+อุบลรัตน์ เสรีเจียบปรีชา
+อุบลวรรณ เปรมจิตต์ชื่น
+อุบลศรี ต่ายแต้มทอง
+อุปนันท์ เนตรสว่าง
+อุมา อัครลิขิต
+อุมาพร พัฒนเสรี
+อุมาภรณ์ ติกวัฒนานนท์
+อุยฮวง แซ่โง้ว
+อุรดี สาณะเสน
+อุรา แก้วกลม
+อุริน สินศึกสงบ
+อุลิต ปัทมาลัย
+อุษณา ศรีสำเริง
+อุษณี สุนาโพธิ์
+อุษณีย์ ชินพัฒนาการ
+อุษณีย์ บุญเสน่ห์
+อุษณีย์ วงศ์ปราณีกุล
+อุษณีย์ อาจอรุณ
+อุษา เกียรติระบิล
+อุษา จิตต์จรรยากุล
+อุษา โชคเจริญ
+อุษา ทวีสุทธิ์
+อุษา บัวศิริ
+อุษา พงษ์พฤกษา
+อุษา ม่วงจำกัด
+อุษา เล็กยิ้ม
+อุษา ศรีใส
+อุษา สุขสนอง
+อุษา อยู่แพ
+อุษาวดี แซ่โง้ว
+อุสรา ประทีป ณ ถลาง
+อุสาห์ ศิลปี
+อุเทน เฉลิมพรรัตนา
+อุเทน เสรีเด่นชัย
+อุไร กุศลสร้าง
+อุไร คังคะเกตุ
+อุไร เจียประเสริฐ
+อุไร แซ่ว่อง
+อุไร เตียะเพ็ชร
+อุไร นวมแหลม
+อุไร บุนารักษ์
+อุไร พงษ์สว่าง
+อุไร โพธิ์ฐิติรัตน์
+อุไร เมฆไพบูลย์วัฒนา
+อุไร ลิ้นแก้ว
+อุไร ศรฤทธิ์ชิงชัย
+อุไร สวัสดิ์เฉย
+อุไร สุวิวัฒนชัยกุล
+อุไร อรรคเสลา
+อุไรพร แซ่ลิ้ม
+อุไรรัตน์ ฉายชูวงษ์
+อุไรรัตน์ สหวัธนะ
+อุไรวรรณ กำปั่นทอง
+อุไรวรรณ จรูญสมิทธิ์
+อุไรวรรณ เชาวกิตติโรจน์
+อุไรวรรณ เทพประทานกิจ
+อุไรวรรณ ปรีประทุม
+อุไรวรรณ พึ่งใหญ่
+อุไรวรรณ แย้มนิยม
+อุไรวรรณ วิจิตรบัณฑิตกุล
+อุไรวรรณ สาครสินธุ์
+อุไรวรรณ หวั่นวะดี
+อุไรวรรณ เอี่ยมปราณีต
+อู๊ด ดำเกิงตระกูล
+อู๋ มาลาเล็ก
+อโณทัย เจตนเสน
+อโณทัย วงศ์เมธีสุเมธ
+อโนชา สุวรรณรัตน
+อโนทัย อัศวประภา
+เอก ชัฏอนันต์
+เอก สยามวาลา
+เอกชัย กองแก้ว
+เอกชัย ฉลองปิยรัตน์
+เอกชัย เดชศิริพันธ์
+เอกชัย บุษยบริบูรณ์โชติ
+เอกชัย ภัทรนุธาพร
+เอกชัย ว่องบรรจงหาร
+เอกชัย สิริชูสินวงศ์
+เอกชัย อัศวโกวิท
+เอกผล อภิชาติพันธุ์กวี
+เอกพร กังวาฬไกรไพศาล
+เอกพันธ์ ช่างเอกวงศ์
+เอกยง แซ่เซียว
+เอกรัศมี อวยสินประเสริฐ
+เอกรินทร์ เบี้ยวไม
+เอกวัฒน์ ชัยวัตร
+เอกศักดิ์ พิสุทธิชานนท์
+เอกสิทธิ์ ใจบุญ
+เอกสิทธิ์ ศิวาวุธ
+เอกเชาวน์ เพิ่มประเสริฐสุข
+เอนก กิจไพศาล
+เอนก จันรอด
+เอนก แซ่โง้ว
+เอนก เทียนเกษม
+เอนก ปวิดาภา
+เอนก โพธิ์นิ่ม
+เอนก ลิขิตตระกูลเลิศ
+เอนก ศรีแสง
+เอนก แสงฉาย
+เอนก อู่บังสิน
+เอมอร กลิ่นมาลา
+เอมอร เฉลิมนนท์
+เอมอร นาคภูมิ
+เอมอร เฟื่องวิทยาการ
+เอมอร ศรีคงศรี
+เอมอร อรุณยงจิต
+เอส เอ็ม
+เอิบลาภ เลิศวิธี
+เอียะเจ็ง แซ่ตั้ง
+เอี่ยม บุญคง
+เอี่ยม อัศวฤทธิ์กุล
+เอี่ยมซ้ง แซ่ตัน
+เอี่ยมเจียง แซ่โต๋ว
+เอี้ยง แซ่โต๊ะ
+เอี้ยมเซี้ย แซ่นิ่ม
+เอี้ยห่างกวง แซ่เอี้ย
+เอื้อ วงษ์สาก้อ
+เอื้อจิตต์ ผลอินทร์
+เอื้อนพร จิรานนท์
+เอื้อมพร กัลป์เสาวภาคย์กุล
+เอื้อมพร ผุดผาด
+เอื้อมพร ไหมพิมพ์
+เอื้ออารี วงศ์วิฑูรยาพร
+เอ็ง แซ่ลิ้ม
+เอ็งยิ้ว แซ่เยี่ยง
+เอ็นดู ศรีบุญเรือง
+แอน แสงศรี
+แอนโทนี่ เตียง
+แอ๋ว กำมะหยี่
+โอภา ภัทรธรรมบาล
+โอภาส เงินเต็มเปี่ยม
+โอภาส ทรัพย์อาภากร
+โอภาส พรหมรัตนพงศ์
+โอภาส ลิลิตกันยากุล
+โอภาส สุพรรณโอชากุล
+โอรส วงษ์สิทธิ์
+โอสถ โกศิน
+โอฬาร พึ่งสนิท
+โอ้วเซ็ง แซ่อั๊ง
+ไอเซนโฮเฟอร์ ไอ อี
+ฮกเฮง แซ่ลี้
+ฮ่งฮวด แซ่โง้ว
+ฮวงเจ็ง แซ่ตั้ง
+ฮวย แซ่หลาย
+ฮ่ออึ้ง แซ่เตียว
+ฮังตี๋ ตั้งมุจลินท์
+ฮั่งเจีย แซ่ตั้ง
+ฮั้งเกียง แซ่เอี้ยว
+ฮั้นง้วน แซ่ฉั่ว
+ฮั่วปิด แซ่อึ้ง
+ฮั้วใช้ แซ่เล้า
+ฮายูรซิงห์ กัมบีร์
+ฮารี่ปาซาน ซาฮี
+ฮิม แซ่หล่อ
+ฮุก พรหมฤทธิเดชา
+ฮุยกุง แซ่ซิ
+ฮุยเง็ก แซ่เอ็ง
+ฮุ่ยฮวง แซ่ตั้ง
+ฮุ้ยลั้ง ประสิทธิลักษณะ
+เฮง ศิริมงคลรัตน์
+เฮม รุ่งสกุล
+เฮียง แซ่อ้าว
+เฮียงกี่ แซ่เหี่ย
+เฮี้ยงซิม แซ่โง้ว
+โฮง เอกธนานันท์
+ไฮ้ เลิศลิขิตธนิตกุล
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/arabic.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/arabic.txt
new file mode 100644
index 0000000..b9b3f27
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/arabic.txt
@@ -0,0 +1,18 @@
+﻿  ما هي الشفرة الموحدة "يونِكود" ؟
+
+أساسًا، تتعامل الحواسيب فقط مع الأرقام، وتقوم بتخزين الأحرف والمحارف الأخرى بعد أن تُعطي رقما معينا لكل واحد منها. وقبل اختراع "يونِكود"، كان هناك مئات الأنظمة للتشفير وتخصيص هذه الأرقام للمحارف، ولم يوجد نظام تشفير واحد يحتوي على جميع المحارف الضرورية. وعلى سبيل المثال، فإن الاتحاد الأوروبي لوحده، احتوى العديد من الشفرات المختلفة ليغطي جميع اللغات المستخدمة في الاتحاد. وحتى لو اعتبرنا لغة واحدة، كاللغة الإنجليزية، فإن جدول شفرة واحد لم يكف لاستيعاب جميع الأحرف وعلامات الترقيم والرموز الفنية والعلمية الشائعة الاستعمال.
+
+ 
+
+وتجدر الملاحظة أن أنظمة التشفير المختلفة تتعارض مع بعضها البعض. وبعبارة أخرى، يمكن أن يستخدِم جدولي شفرة نفس الرقم لتمثيل محرفين مختلفين، أو رقمين مختلفين لتمثيل نفس المحرف. ولو أخذنا أي جهاز حاسوب، وبخاصة جهاز النادل (server)، فيجب أن تكون لديه القدرة على التعامل مع عدد كبير من الشفرات المختلفة، ويتم تصميمه على هذا الأساس. ومع ذلك، فعندما تمر البيانات عبر أنظمة مختلفة، توجد هناك خطورة لضياع أو تحريف بعض هذه البيانات.
+
+ 
+
+"يونِكود" تغير هذا كليـا !
+
+تخصص الشفرة الموحدة "يونِكود" رقما وحيدا لكل محرف في جميع اللغات العالمية، وذلك بغض النظر عن نوع الحاسوب أو البرامج المستخدمة. وقد تـم تبني مواصفة "يونِكود" مــن قبـل قادة الصانعين لأنظمة الحواسيب فـي العالم، مثل شركات آي.بي.إم. (IBM)، أبـل (APPLE)، هِيـْولِـت بـاكـرد (Hewlett-Packard) ، مايكروسوفت (Microsoft)، أوراكِـل (Oracle) ، صن (Sun) وغيرها. كما أن المواصفات والمقاييس الحديثة (مثل لغة البرمجة "جافا" "JAVA" ولغة "إكس إم إل" "XML" التي تستخدم لبرمجة الانترنيت) تتطلب استخدام "يونِكود". علاوة على ذلك ، فإن "يونِكود" هي الطـريـقـة الرسـمية لتطبيق المقيـاس الـعـالـمي إيزو ١٠٦٤٦  (ISO 10646) .
+
+ 
+
+إن بزوغ مواصفة "يونِكود" وتوفُّر الأنظمة التي تستخدمه وتدعمه، يعتبر من أهم الاختراعات الحديثة في عولمة البرمجيات لجميع اللغات في العالم. وإن استخدام "يونِكود" في عالم الانترنيت سيؤدي إلى توفير كبير مقارنة مع استخدام المجموعات التقليدية للمحارف المشفرة. كما أن استخدام "يونِكود" سيُمكِّن المبرمج من كتابة البرنامج مرة واحدة، واستخدامه على أي نوع من الأجهزة أو الأنظمة، ولأي لغة أو دولة في العالم أينما كانت، دون الحاجة لإعادة البرمجة أو إجراء أي تعديل. وأخيرا، فإن استخدام "يونِكود" سيمكن البيانات من الانتقال عبر الأنظمة والأجهزة المختلفة دون أي خطورة لتحريفها، مهما تعددت الشركات الصانعة للأنظمة واللغات، والدول التي تمر من خلالها هذه البيانات.
+
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/english.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/english.txt
new file mode 100644
index 0000000..bd4225f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/english.txt
@@ -0,0 +1,20 @@
+What is Unicode?
+
+Unicode provides a unique number for every character,
+no matter what the platform,
+no matter what the program,
+no matter what the language.
+
+Fundamentally, computers just deal with numbers. They store letters and other characters by assigning a number for each one. Before Unicode was invented, there were hundreds of different encoding systems for assigning these numbers. No single encoding could contain enough characters: for example, the European Union alone requires several different encodings to cover all its languages. Even for a single language like English no single encoding was adequate for all the letters, punctuation, and technical symbols in common use.
+
+These encoding systems also conflict with one another. That is, two encodings can use the same number for two different characters, or use different numbers for the same character. Any given computer (especially servers) needs to support many different encodings; yet whenever data is passed between different encodings or platforms, that data always runs the risk of corruption.
+Unicode is changing all that!
+
+Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. The Unicode Standard has been adopted by such industry leaders as Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys and many others. Unicode is required by modern standards such as XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etc., and is the official way to implement ISO/IEC 10646. It is supported in many operating systems, all modern browsers, and many other products. The emergence of the Unicode Standard, and the availability of tools supporting it, are among the most significant recent global software technology trends.
+
+Incorporating Unicode into client-server or multi-tiered applications and websites offers significant cost savings over the use of legacy character sets. Unicode enables a single software product or a single website to be targeted across multiple platforms, languages and countries without re-engineering. It allows data to be transported through many different systems without corruption.
+About the Unicode Consortium
+
+The Unicode Consortium is a non-profit organization founded to develop, extend and promote use of the Unicode Standard, which specifies the representation of text in modern software products and standards. The membership of the consortium represents a broad spectrum of corporations and organizations in the computer and information processing industry. The consortium is supported financially solely through membership dues. Membership in the Unicode Consortium is open to organizations and individuals anywhere in the world who support the Unicode Standard and wish to assist in its extension and implementation.
+
+For more information, see the Glossary, Unicode Enabled Products, Technical Introduction and Useful Resources.
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/french.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/french.txt
new file mode 100644
index 0000000..46b7791
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/french.txt
@@ -0,0 +1,20 @@
+﻿Qu'est ce qu'Unicode?
+
+Unicode spécifie un numéro unique pour chaque caractère,
+quelle que soit la plate-forme,
+quel que soit le logiciel,
+quelle que soit la langue.
+
+Fondamentalement, les ordinateurs ne comprennent que les nombres. Ils codent les lettres et autres caractères sous formes de nombres. Avant l'invention d'Unicode, des centaines de systèmes de codage de caractères ont été créés. Pas un seul d'entre eux n'était satisfaisant : par exemple, l'Union Européenne a besoin de plusieurs systèmes de codage pour couvrir toutes ses langues d'usage. Même pour une seule langue comme le français, aucun système de codage ne couvrait toutes les lettres, les signes de ponctuation et les symboles techniques en usage courant.
+
+Ces systèmes de codage sont souvent incompatibles entre eux. Ainsi, deux systèmes peuvent utiliser le même nombre pour deux caractères différents ou utiliser différents nombres pour le même caractère. Les ordinateurs, et plus particulièrement les serveurs, doivent supporter plusieurs systèmes de codage de caractères, ce qui crée un risque de corruption des données à chaque transition.
+Unicode transforme tout cela !
+
+Unicode spécifie un numéro unique pour chaque caractère, quelle que soit la plate-forme, quel que soit le logiciel et quelle que soit la langue. Le standard Unicode a été choisi par des pionniers technologiques tels que Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys et bien d'autres. Unicode est exigé par de nombreux standards récents tels que XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etc. Le développement d'Unicode est synchronisé avec celui de la norme ISO/CÉI 10646, la version 3.0 d'Unicode est identique code pour code avec l'ISO/CÉI 10646:2000 mais contient de nombreux éléments supplémentaires d'implantation. Unicode est utilisé dans de nombreux systèmes d'exploitation, dans tous les navigateurs récents, et dans de nombreux autres produits. L'apparition du standard Unicode, ainsi que la disponibilité d'outils le gérant, sont parmi les faits les plus marquants de la globalisation récente du développement logiciel.
+
+L'incorporation d'Unicode dans les applications client-serveur, les applications distribuées et les sites Internet permet une simplification de l'architecture et une réduction des coûts par rapport à l'utilisation des systèmes de codage traditionnels. Grâce à Unicode, un seul logiciel ou site Internet peut satisfaire simultanément et sans modification les demandes de plusieurs plate-formes, langues et pays. Unicode permet aussi à des logiciels de provenance variée d'échanger des caractères sans pertes de données.
+À propos du Consortium Unicode
+
+Le Consortium Unicode est une organisation sans but lucratif, ayant pour mission de développer, d'étendre et de promouvoir Unicode. Les membres du consortium sont issus d'un large éventail d'entreprises et d'organisations dans le domaine de l'informatique et des technologies de l'information. Le consortium est financé uniquement par les cotisations de ses membres. L'adhésion au consortium Unicode est ouverte à toutes les organisations et individus qui soutiennent le standard Unicode et souhaitent favoriser son extension et son utilisation.
+
+On trouvera des renseignements additionnels dans le glossaire, la liste partielle de produits gérant Unicode, l'aperçu technique et les ressources utiles [liens en Anglais].
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/greek.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/greek.txt
new file mode 100644
index 0000000..6aee92c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/greek.txt
@@ -0,0 +1,20 @@
+﻿Τι είναι το Unicode;
+
+Η κωδικοσελίδα Unicode προτείνει έναν και μοναδικό αριθμό για κάθε χαρακτήρα,
+ανεξάρτητα από το λειτουργικό σύστημα,
+ανεξάρτητα από το λογισμικό,
+ανεξάρτητα από την γλώσσα.
+
+Οι ηλεκτρονικοί υπολογιστές, σε τελική ανάλυση, χειρίζονται απλώς αριθμούς. Αποθηκεύουν γράμματα και άλλους χαρακτήρες αντιστοιχώντας στο καθένα τους από έναν αριθμό (ονομάζουμε μία τέτοια αντιστοιχία κωδικοσελίδα). Πριν την εφεύρεση του Unicode, υπήρχαν εκατοντάδες διαφορετικές κωδικοσελίδες. Λόγω περιορισμών μεγέθους όμως, σε καμία κωδικοσελίδα δεν χωρούσαν αρκετοί χαρακτήρες: λόγου χάριν, η Ευρωπαϊκή Ένωση χρειαζόταν πλήθος διαφορετικών κωδικοσελίδων για να καλύψει όλες τις γλώσσες των χωρών-μελών της. Ακόμα και για μία και μόνη γλώσσα, όπως π.χ. τα Αγγλικά, μία κωδικοσελίδα δεν επαρκούσε για να καλύψει όλα τα γράμματα, σημεία στίξης και τεχνικά σύμβολα ευρείας χρήσης.
+
+Εκτός αυτού, οι κωδικοσελίδες αυτές διαφωνούσαν μεταξύ τους. Έτσι, δύο κωδικοσελίδες μπορούσαν κάλλιστα να χρησιμοποιούν τον ίδιο αριθμό για δύο διαφορετικούς χαρακτήρες, ή να χρησιμοποιούν διαφορετικούς αριθμούς για τον ίδιο χαρακτήρα. Κάθε υπολογιστής (και ιδίως εάν ήταν διακομιστής) έπρεπε να υποστηρίζει πλήθος διαφορετικών κωδικοσελίδων· ταυτόχρονα κάθε φορά που δεδομένα μεταφέρονταν μεταξύ διαφορετικών κωδικοσελίδων ή λειτουργικών συστημάτων, τα δεδομένα αυτά κινδύνευαν να αλλοιωθούν.
+Το Unicode αλλάζει αυτή την κατάσταση!
+
+Το Unicode προτείνει έναν μοναδικό αριθμό για κάθε χαρακτήρα, ανεξάρτητα από το λειτουργικό σύστημα, ανεξάρτητα από το λογισμικό, ανεξάρτητα από την γλώσσα. Την κωδικοσελίδα Unicode έχουν ασπασθεί κορυφαίοι παράγοντες του χώρου των λογισμικών όπως οι: Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys και πολλοί άλλοι. Το Unicode απαιτούν πολλές σύγχρονες τυποποιήσεις όπως οι: XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, κ.λπ., και είναι η επίσημη μέθοδος εφαρμογής της τυποποίησης ISO/IEC 10646. Υποστηρίζεται από πολλά λειτουργικά συστήματα, όλους τους σύχρονους περιηγητές Διαδικτύου, και πολλά άλλα προϊόντα. Η εμφάνιση της κωδικοσελίδας Unicode, και η διαθεσιμότητα εργαλείων που να την υποστηρίζουν είναι από τις σημαντικότερες εξελίξεις της πρόσφατης τεχνολογίας λογισμικών.
+
+Η ενσωμάτωση του Unicode σε εφαρμογές πελάτη-διακομιστή ή "multi-tiered" προσφέρει σημαντικές οικονομίες σε σχέση με τις ως τώρα υπάρχουσες κωδικοσελίδες. Χάρις στο Unicode ένα και μόνο προϊόν ή μία και μόνη τοποθεσία Διαδικτύου μπορεί να επικοινωνεί με διάφορα λειτουργικά συστήματα, σε διάφορες γλώσσες και χώρες, χωρίς την ανάγκη επαναπρογραμματισμού. Γίνεται έτσι δυνατή η μεταφορά δεδομένων ανάμεσα σε πλήθος διαφορετικών συστημάτων δίχως κίνδυνο αλλοίωσης.
+Σχετικά με το Κονσόρτιουμ Unicode
+
+Tο Κονσόρτιουμ Unicode είναι ένας κοινωφελής οργανισμός· ιδρύθηκε για να αναπτύξει, να επεκτείνει και να μεταδώσει την χρήση της κωδικοσελίδας Unicode που καθορίζει την αναπαράσταση κειμένου σε σύγχρονα λογισμικά προϊόντα και τυποποιήσεις. Μεγάλος αριθμός εταιρειών και οργανισμών της διεθνούς βιομηχανίας υπολογιστών και λογισμικών είναι μέλη του Κονσόρτιουμ Unicode. Το Κονσόρτιουμ χρηματοδοτείται μόνο από τις συνδρομές των μελών του. Μέλος του κονσόρτιουμ Unicode μπορεί να γίνει οιοσδήποτε (οργανισμός, εταιρεία ή ιδιώτης, οπουδήποτε στον κόσμο) που να υποστηρίζει την κωδικοσελίδα Unicode και να επιθυμεί να συνδράμει στην επέκταση και στην εφαρμογή της.
+
+Για περαιτέρω πληροφορίες, βλέπε τις εξής ιστοσελίδες: Γλωσσάρι, Δείγματα προϊόντων συμβατών με το Unicode, Τεχνική Εισαγωγή και Χρήσιμες πηγές πληροφοριών.
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/hebrew.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/hebrew.txt
new file mode 100644
index 0000000..9d52a32
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/hebrew.txt
@@ -0,0 +1,20 @@
+﻿מה זה יוניקוד (Unicode)?
+
+יוניקוד מקצה מספר ייחודי לכל תו,
+לא משנה על איזו פלטפורמה,
+לא משנה באיזו תוכנית,
+ולא משנה באיזו שפה.
+
+באופן בסיסי, מחשבים עוסקים רק במספרים. הם מאחסנים אותיות ותווים אחרים על-ידי הקצאת מספר לכל אחד מהם. בטרם הומצא היוניקוד, היו מאות מערכות קידוד שונות להקצאת המספרים הללו. אף לא אחת מהן יכלה להכיל כמות תווים מספקת. לדוגמא: רק לאיחוד האירופאי נדרשים כמה סוגי קידודים שונים על מנת לכסות את כל השפות המדוברות בו. יתירה מזאת אף לשפה בודדת, כמו אנגלית למשל, לא היה די במערכת קידוד אחת בעבור כל האותיות, סימני הפיסוק והסמלים הטכניים שבשימוש שוטף.
+
+מערכות קידוד אלו אף סותרות זו את זו. כלומר, שני קידודים יכולים להשתמש באותו מספר לשני תוים נבדלים, או להשתמש במספרים שונים לאותו תו. על כל מחשב (ובמיוחד שרתים) לתמוך במספר רב של מערכות קידוד שונות; אולם כל אימת שנתונים עוברים בין מערכות קידוד או פלטפורמות שונות קיים הסיכון שייפגמו.
+יוניקוד משנה את כל זה!
+
+יוניקוד מקצה מספר ייחודי לכל תו, ללא תלות בפלטפורמה, בתוכנית, או בשפה. תקן היוניקוד אומץ על-ידי המובילים בתעשייה כמו Apple‏, HP‏, IBM‏, JustSystem‏, Microsoft‏, Oracle‏, SAP‏, Sun‏, Sybase‏, Unisys‏ ורבים אחרים. יוניקוד נדרש על-ידי תקנים מודרניים כמו XML‏, Java‏, ECMAScript (JavaScript)‎‏, LDAP‏, CORBA 3.0‎‏, WML‏ וכדומה, ומהווה למעשה את היישום הרשמי של תקן ISO/IEC 10646. הוא נתמך על ידי מערכות הפעלה רבות, כל הדפדפנים החדישים, ומוצרים רבים אחרים. הופעת תקן היוניקוד וזמינות הכלים התומכים בו נמנות עם המגמות הכלל-עולמיות החשובות ביותר, אשר מסתמנות לאחרונה בטכנולוגיית התוכנה.
+
+שילוב יוניקוד ביישומי שרת-לקוח או ביישומים רבי-שכבות ובאתרי אינטרנט מאפשר חיסכון ניכר בעלויות לעומת השימוש בסדרות התווים המסורתיות. הודות ליוניקוד, מוצר תוכנה אחד או אתר יחיד ברשת יכול להרחיב את יעדיו למגוון פלטפורמות, ארצות ושפות ללא צורך בשינויים מרחיקים. יוניקוד מאפשר מעבר נתונים דרך מערכות רבות ושונות מבלי שייפגמו.
+פרטים אודות הקונסורציום של יוניקוד (Unicode Consortium)
+
+הקונסורציום של יוניקוד הוא ארגון ללא מטרת רווח שנוסד כדי לפתח, להרחיב ולקדם את השימוש בתקן יוניקוד, אשר מגדיר את ייצוג הטקסט במוצרי תוכנה ותקנים מודרניים. חברים בקונסורציום מגוון רחב של תאגידים וארגונים בתעשיית המחשבים ועיבוד המידע. הקונסורציום ממומן על-ידי דמי-חבר בלבד. החברות בקונסורציום יוניקוד פתוחה לארגונים ולאנשים פרטיים, בכל רחבי העולם, אשר תומכים בתקן יוניקוד ומעוניינים לסייע בהתפתחותו והטמעתו.
+
+למידע נוסף, ראה מילון מונחים, רשימה חלקית של מוצרים מותאמים ליוניקוד, מבוא טכני ו- חומרי עזר [קישורים באנגלית].
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/hindi.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/hindi.txt
new file mode 100644
index 0000000..055f94d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/hindi.txt
@@ -0,0 +1,20 @@
+﻿यूनिकोड क्या है?
+
+यूनिकोड प्रत्येक अक्षर के लिए एक विशेष नम्बर प्रदान करता है,
+चाहे कोई भी प्लैटफॉर्म हो,
+चाहे कोई भी प्रोग्राम हो,
+चाहे कोई भी भाषा हो।
+
+कम्प्यूटर, मूल रूप से, नंबरों से सम्बंध रखते हैं। ये प्रत्येक अक्षर और वर्ण के लिए एक नंबर निर्धारित करके अक्षर और वर्ण संग्रहित करते हैं। यूनिकोड का आविष्कार होने से पहले, ऐसे नंबर देने के लिए सैंकडों विभिन्न संकेत लिपि प्रणालियां थीं। किसी एक संकेत लिपि में पर्याप्त अक्षर नहीं हो सकते हैं : उदाहरण के लिए, यूरोपिय संघ को अकेले ही, अपनी सभी भाषाऒं को कवर करने के लिए अनेक विभिन्न संकेत लिपियों की आवश्यकता होती है। अंग्रेजी जैसी भाषा के लिए भी, सभी अक्षरों, विरामचिन्हों और सामान्य प्रयोग के तकनीकी प्रतीकों हेतु एक ही संकेत लिपि पर्याप्त नहीं थी।
+
+ये संकेत लिपि प्रणालियां परस्पर विरोधी भी हैं। इसीलिए, दो संकेत लिपियां दो विभिन्न अक्षरों के लिए, एक ही नंबर प्रयोग कर सकती हैं, अथवा समान अक्षर के लिए विभिन्न नम्बरों का प्रयोग कर सकती हैं। किसी भी कम्प्यूटर (विशेष रूप से सर्वर) को विभिन्न संकेत लिपियां संभालनी पड़ती है; फिर भी जब दो विभिन्न संकेत लिपियों अथवा प्लैटफॉर्मों के बीच डाटा भेजा जाता है तो उस डाटा के हमेशा खराब होने का जोखिम रहता है।
+यूनिकोड से यह सब कुछ बदल रहा है!
+
+यूनिकोड, प्रत्येक अक्षर के लिए एक विशेष नंबर प्रदान करता है, चाहे कोई भी प्लैटफॉर्म हो, चाहे कोई भी प्रोग्राम हो, चाहे कोई भी भाषा हो। यूनिकोड स्टैंडर्ड को ऐपल, एच.पी., आई.बी.एम., जस्ट सिस्टम, माईक्रोसॉफ्ट, औरेकल, सैप, सन, साईबेस, यूनिसिस जैसी उद्योग की प्रमुख कम्पनियों और कई अन्य ने अपनाया है। यूनिकोड की आवश्यकता आधुनिक मानदंडों, जैसे एक्स.एम.एल., जावा, एकमा स्क्रिप्ट (जावा स्क्रिप्ट), एल.डी.ए.पी., कोर्बा 3.0, डब्ल्यू.एम.एल. के लिए होती है और यह आई.एस.ओ./आई.ई.सी. 10646 को लागू करने का अधिकारिक तरीका है। यह कई संचालन प्रणालियों, सभी आधुनिक ब्राउजरों और कई अन्य उत्पादों में होता है। यूनिकोड स्टैंडर्ड की उत्पति और इसके सहायक उपकरणों की उपलब्धता, हाल ही के अति महत्वपूर्ण विश्वव्यापी सॉफ्टवेयर टेक्नोलॉजी रुझानों में से हैं।
+
+यूनिकोड को ग्राहक-सर्वर अथवा बहु-आयामी उपकरणों और वेबसाइटों में शामिल करने से, परंपरागत उपकरणों के प्रयोग की अपेक्षा खर्च में अत्यधिक बचत होती है। यूनिकोड से एक ऐसा अकेला सॉफ्टवेयर उत्पाद अथवा अकेला वेबसाइट मिल जाता है, जिसे री-इंजीनियरिंग के बिना विभिन्न प्लैटफॉर्मों, भाषाओं और देशों में उपयोग किया जा सकता है। इससे डाटा को बिना किसी बाधा के विभिन्न प्रणालियों से होकर ले जाया जा सकता है।
+यूनिकोड कन्सॉर्शियम के बारे में
+
+यूनिकोड कन्सॉर्शियम, लाभ न कमाने वाला एक संगठन है जिसकी स्थापना यूनिकोड स्टैंडर्ड, जो आधुनिक सॉफ्टवेयर उत्पादों और मानकों में पाठ की प्रस्तुति को निर्दिष्ट करता है, के विकास, विस्तार और इसके प्रयोग को बढ़ावा देने के लिए की गई थी। इस कन्सॉर्शियम के सदस्यों में, कम्प्यूटर और सूचना उद्योग में विभिन्न निगम और संगठन शामिल हैं। इस कन्सॉर्शियम का वित्तपोषण पूर्णतः सदस्यों के शुल्क से किया जाता है। यूनिकोड कन्सॉर्शियम में सदस्यता, विश्व में कहीं भी स्थित उन संगठनों और व्यक्तियों के लिए खुली है जो यूनिकोड का समर्थन करते हैं और जो इसके विस्तार और कार्यान्वयन में सहायता करना चाहते हैं।
+
+अधिक जानकारी के लिए, शब्दावली, सैम्पल यूनिकोड-सक्षम उत्पाद, तकनीकी परिचय और उपयोगी स्रोत देखिए।
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/japanese.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/japanese.txt
new file mode 100644
index 0000000..b420ee4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/japanese.txt
@@ -0,0 +1,20 @@
+﻿ユニコードとは何か？
+
+ユニコードは、すべての文字に固有の番号を付与します
+プラットフォームには依存しません
+プログラムにも依存しません
+言語にも依存しません
+
+コンピューターは、本質的には数字しか扱うことができません。コンピューターは、文字や記号などのそれぞれに番号を割り振ることによって扱えるようにします。ユニコードが出来るまでは、これらの番号を割り振る仕組みが何百種類も存在しました。どの一つをとっても、十分な文字を含んではいませんでした。例えば、欧州連合一つを見ても、そのすべての言語をカバーするためには、いくつかの異なる符号化の仕組みが必要でした。英語のような一つの言語に限っても、一つだけの符号化の仕組みでは、一般的に使われるすべての文字、句読点、技術的な記号などを扱うには不十分でした。
+
+これらの符号化の仕組みは、相互に矛盾するものでもありました。二つの異なる符号化の仕組みが、二つの異なる文字に同一の番号を付けることもできるし、同じ文字に異なる番号を付けることもできるのです。どのようなコンピューターも（特にサーバーは）多くの異なった符号化の仕組みをサポートする必要があります。たとえデータが異なる符号化の仕組みやプラットフォームを通過しても、いつどこでデータが乱れるか分からない危険を冒すことのなるのです。
+ユニコードはすべてを変えます
+
+ユニコードは、プラットフォームに係わらず、プログラムに係わらず、言語に係わらず、すべての文字に独立した番号を与えます。ユニコード標準は、アップル、ヒューレットパッカード、IBM、ジャストシステム、マイクロソフト、オラクル、SAP、サン、サイベースなどの産業界の主導的企業と他の多くの企業に採用されています。ユニコードは、XML、Java、ECMAScript(JavaScript)、LDAP、CORBA 3.0などの最先端の標準の前提となっており、ユニコードを実装すれば、ISO/IEC 10646に適合することになります。ユニコードは、多くのオペレーティングシステムとすべての最新のブラウザーと他の多くの製品でサポートされています。ユニコード標準の出現とユニコードをサポートするツール類は、昨今顕著になっているソフトウエア技術のグローバル化の流れに対して、特に役に立っています。
+
+ユニコードをクライアントサーバー型のアプリケーションや、多層構造を持つアプリケーション、ウェブサイトなどにに組み込むことで、従来の文字コードセットを用いるよりも明らかなコスト削減が可能です。ユニコードは、単一のソフトウエア製品、単一のウェブサイトに、何ら手を加えることなく、複数のプラットフォーム、複数の言語、複数の国をカバーすることが出来るのです。ユニコードは、データが多くの異なるシステムの間を、何の乱れもなしに転送することを可能とするのです。
+ユニコードコンソーシアムについて
+
+ユニコードコンソーシアムは、最新のソフトウエア製品と標準においてテキストを表現することを意味する“ユニコード標準”の構築、発展、普及、利用促進を目的として設立された非営利組織です。同コンソーシアムの会員は、コンピューターと情報処理に係わる広汎な企業や組織から構成されています。同コンソーシアムは、財政的には、純粋に会費のみによって運営されています。ユニコード標準を支持し、その拡張と実装を支援する世界中の組織や個人は、だれもがユニコードコンソーシアムの会員なることができます。
+
+より詳しいことをお知りになりたい方は、Glossary, Unicode-Enabled Products, Technical Introduction および Useful Resourcesをご参照ください。
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/korean.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/korean.txt
new file mode 100644
index 0000000..18a55e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/korean.txt
@@ -0,0 +1,20 @@
+﻿유니코드에 대해 ?
+
+어떤 플랫폼,
+어떤 프로그램,
+어떤 언어에도 상관없이
+유니코드는 모든 문자에 대해 고유 번호를 제공합니다.
+
+기본적으로 컴퓨터는 숫자만 처리합니다. 글자나 다른 문자에도 숫자를 지정하여 저장합니다. 유니코드가 개발되기 전에는 이러한 숫자를 지정하기 위해 수백 가지의 다른 기호화 시스템을 사용했습니다. 단일 기호화 방법으로는 모든 문자를 포함할 수 없었습니다. 예를 들어 유럽 연합에서만 보더라도 모든 각 나라별 언어를 처리하려면 여러 개의 다른 기호화 방법이 필요합니다. 영어와 같은 단일 언어의 경우도 공통적으로 사용되는 모든 글자, 문장 부호 및 테크니컬 기호에 맞는 단일 기호화 방법을 갖고 있지 못하였습니다.
+
+이러한 기호화 시스템은 또한 다른 기호화 시스템과 충돌합니다. 즉 두 가지 기호화 방법이 두 개의 다른 문자에 대해 같은 번호를 사용하거나 같은 문자에 대해 다른 번호를 사용할 수 있습니다. 주어진 모든 컴퓨터(특히 서버)는 서로 다른 여러 가지 기호화 방법을 지원해야 합니다. 그러나, 데이터를 서로 다른 기호화 방법이나 플랫폼 간에 전달할 때마다 그 데이터는 항상 손상의 위험을 겪게 됩니다.
+유니코드로 모든 것을 해결할 수 있습니다!
+
+유니코드는 사용 중인 플랫폼, 프로그램, 언어에 관계없이 문자마다 고유한 숫자를 제공합니다. 유니코드 표준은 Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys 및 기타 여러 회사와 같은 업계 선두주자에 의해 채택되었습니다. 유니코드는 XML, Java, ECMAScript(JavaScript), LDAP, CORBA 3.0, WML 등과 같이 현재 널리 사용되는 표준에서 필요하며 이는 ISO/IEC 10646을 구현하는 공식적인 방법입니다. 이는 많은 운영 체제, 요즘 사용되는 모든 브라우저 및 기타 많은 제품에서 지원됩니다. 유니코드 표준의 부상과 이를 지원하는 도구의 가용성은 최근 전 세계에 불고 있는 기술 경향에서 가장 중요한 부분을 차지하고 있습니다.
+
+유니코드를 클라이언트-서버 또는 다중-연결 응용 프로그램과 웹 사이트에 통합하면 레거시 문자 세트 사용에 있어서 상당한 비용 절감 효과가 나타납니다. 유니코드를 통해 리엔지니어링 없이 다중 플랫폼, 언어 및 국가 간에 단일 소프트웨어 플랫폼 또는 단일 웹 사이트를 목표로 삼을 수 있습니다. 이를 사용하면 데이터를 손상 없이 여러 시스템을 통해 전송할 수 있습니다.
+유니코드 콘소시엄에 대해
+
+유니코드 콘소시엄은 비영리 조직으로서 현대 소프트웨어 제품과 표준에서 텍스트의 표현을 지정하는 유니코드 표준의 사용을 개발하고 확장하며 장려하기 위해 세워졌습니다. 콘소시엄 멤버쉽은 컴퓨터와 정보 처리 산업에 종사하고 있는 광범위한 회사 및 조직의 범위를 나타냅니다. 콘소시엄의 재정은 전적으로 회비에 의해 충당됩니다. 유니코드 컨소시엄에서의 멤버쉽은 전 세계 어느 곳에서나 유니코드 표준을 지원하고 그 확장과 구현을 지원하고자하는 조직과 개인에게 개방되어 있습니다.
+
+더 자세한 내용은 용어집, 예제 유니코드 사용 가능 제품, 기술 정보 및 기타 유용한 정보를 참조하십시오.
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/data/conversion/s-chinese.txt b/src/com/ibm/icu/dev/test/perf/data/conversion/s-chinese.txt
new file mode 100644
index 0000000..50f9a46
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/data/conversion/s-chinese.txt
@@ -0,0 +1,20 @@
+﻿什么是Unicode(统一码)?
+
+Unicode给每个字符提供了一个唯一的数字，
+不论是什么平台，
+不论是什么程序，
+不论是什么语言。
+
+基本上，计算机只是处理数字。它们指定一个数字，来储存字母或其他字符。在创造Unicode之前，有数百种指定这些数字的编码系统。没有一个编码可以包含足够的字符：例如，单单欧州共同体就需要好几种不同的编码来包括所有的语言。即使是单一种语言，例如英语，也没有哪一个编码可以适用于所有的字母，标点符号，和常用的技术符号。
+
+这些编码系统也会互相冲突。也就是说，两种编码可能使用相同的数字代表两个不同的字符，或使用不同的数字代表相同的字符。任何一台特定的计算机(特别是服务器)都需要支持许多不同的编码，但是，不论什么时候数据通过不同的编码或平台之间，那些数据总会有损坏的危险。
+Unicode正在改变所有这一切！
+
+Unicode给每个字符提供了一个唯一的数字，不论是什么平台，不论是什么程序，不论什么语言。Unicode标准已经被这些工业界的领导们所采用，例如：Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。最新的标准都需要Unicode，例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML等等，并且，Unicode是实现ISO/IEC 10646的正规方式。许多操作系统，所有最新的浏览器和许多其他产品都支持它。Unicode标准的出现和支持它工具的存在，是近来全球软件技术最重要的发展趋势。
+
+将Unicode与客户服务器或多层应用程序和网站结合，比使用传统字符集节省费用。Unicode使单一软件产品或单一网站能够贯穿多个平台，语言和国家，而不需要重建。它可将数据传输到许多不同的系统，而无损坏。
+关于Unicode学术学会
+
+Unicode学术学会是一个非盈利的组织，是为发展，扩展和推广使用Unicode标准而建立的，Unicode学术学会设立了现代软件产品和标准文本的表示法。学术学会的会员代表了广泛领域的计算机和资讯工业的公司和组织。学术学会只由会员提供资金。Unicode学术学会的会员资格开放给世界上任何支持Unicode标准和希望协助其扩展和执行的组织及个人。
+
+欲知更多信息，请参阅术语词汇表，Unicode产品样本，技术简介和参考资料。
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/perf/dateformatperf.pl b/src/com/ibm/icu/dev/test/perf/dateformatperf.pl
new file mode 100755
index 0000000..f8a6cfa
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/dateformatperf.pl
@@ -0,0 +1,496 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.DateFormatPerformanceTest';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+                 ['TestJDKConstruction',     'TestICUConstruction'],
+                 ['TestJDKParse',            'TestICUParse'],
+                 ['TestJDKFormat',           'TestICUFormat']
+               );
+# Patterns which define the set of characters used for testing.
+my @OPTIONS = (
+#                 locale    pattern              date string
+                [ "en_US",  "dddd MMM yyyy",     "15 Jan 2007"],
+                [ "sw_KE",  "dddd MMM yyyy",     "15 Jan 2007"],
+                [ "en_US",  "HH:mm",             "13:13"],
+                [ "en_US",  "HH:mm zzzz",        "13:13 Pacific Standard Time"],
+                [ "en_US",  "HH:mm z",           "13:13 PST"],
+                [ "en_US",  "HH:mm Z",           "13:13 -0800"],
+              );
+
+my $THREADS;        # number of threads (input from command-line args)
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+# run all tests with the specified number of threads from command-line input
+# (if there is no arguments, use $THREADS = 1)
+foreach my $arg ($#ARGV >= 0 ? @ARGV : "1") {
+  $THREADS = $arg;
+  main();
+}
+
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $threads = ($THREADS > 1) ? "($THREADS threads)" : "";
+    my $title = "ICU4J Performance Test $threads $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Options</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@OPTIONS) {
+            print HTML "<TR><TD>@$pat[0], \"@$pat[1]\", \"@$pat[2]\"</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod [@$pat]\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\n$baselineMethod [@$pat]\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method for input file @$pat[0] for encoding @$pat[2] , ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+        
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+        
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -classpath classes $TESTCLASS $method $n -p $passes -L @$pat[0] \"@$pat[1]\" \"@$pat[2]\" -r $THREADS";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/decimalformatperf.pl b/src/com/ibm/icu/dev/test/perf/decimalformatperf.pl
new file mode 100755
index 0000000..ceb2b92
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/decimalformatperf.pl
@@ -0,0 +1,491 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.DecimalFormatPerformanceTest';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+                 ['TestJDKConstruction',     'TestICUConstruction'],
+                 ['TestJDKParse',            'TestICUParse'],
+                 ['TestJDKFormat',           'TestICUFormat']
+               );
+# Patterns which define the set of characters used for testing.
+my @OPTIONS = (
+#                 locale    pattern      date string
+                [ "en_US",  "#,###.##",  "1,234.56"],
+                [ "de_DE",  "#,###.##",  "1.234,56"],
+              );
+
+my $THREADS;        # number of threads (input from command-line args)
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+# run all tests with the specified number of threads from command-line input
+# (if there is no arguments, use $THREADS = 1)
+foreach my $arg ($#ARGV >= 0 ? @ARGV : "1") {
+  $THREADS = $arg;
+  main();
+}
+
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $threads = ($THREADS > 1) ? "($THREADS threads)" : "";
+    my $title = "ICU4J Performance Test $threads $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Options</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+        $OUT = '';
+
+        for my $pat (@OPTIONS) {
+            print HTML "<TR><TD>@$pat[0], \"@$pat[1]\", \"@$pat[2]\"</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod [@$pat]\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\n$baselineMethod [@$pat]\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method for input file @$pat[0] for encoding @$pat[2] , ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+        
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+        
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -classpath classes $TESTCLASS $method $n -p $passes -L @$pat[0] \"@$pat[1]\" \"@$pat[2]\" -r $THREADS";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/normalizationperf_r_b.pl b/src/com/ibm/icu/dev/test/perf/normalizationperf_r_b.pl
new file mode 100755
index 0000000..00b42cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/normalizationperf_r_b.pl
@@ -0,0 +1,83 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+#Assume we are running outside of the ICU4J source
+use lib 'svn-icu4j/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.NormalizerPerformanceTest'; 
+
+my $options = {
+	       "title"=>"Normalization performance regression (ICU4J 3.6 and 3.8)",
+	       "headers"=>"ICU4J36 ICU4J38",
+	       "operationIs"=>"code point",
+	       "timePerOperationIs"=>"Time per code point",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       "outputType"=>"HTML",
+	       "dataDir"=>"C:\\svn-icu4j\\src\\com\\ibm\\icu\\dev\\test\\perf\\data\\collation",
+	       "outputDir"=>"svn-icu4j\\results_ICU4J"
+	      };
+
+# programs
+
+my $jvm1 = "java -cp svn-icu4j_3-6/classes $TESTCLASS -b -e UTF-8";
+my $jvm2 = "java -cp svn-icu4j/classes $TESTCLASS -b -e UTF-8";
+
+my $dataFiles = {
+		 "",
+		 [
+		  "TestNames_Asian.txt",
+		  "TestNames_Chinese.txt",
+		  "TestNames_Japanese.txt",
+		  "TestNames_Japanese_h.txt",
+		  "TestNames_Japanese_k.txt",
+		  "TestNames_Korean.txt",
+		  "TestNames_Latin.txt",
+		  "TestNames_SerbianSH.txt",
+		  "TestNames_SerbianSR.txt",
+		  "TestNames_Thai.txt",
+		  "Testnames_Russian.txt",
+#		  "th18057.txt",
+#		  "thesis.txt",
+#		  "vfear11a.txt",
+		 ]
+		};
+
+
+my $tests = { 
+#	     "NFC_NFD_Text",  ["$jvm1 TestICU_NFC_NFD_Text"  ,  "$jvm2 TestICU_NFC_NFD_Text" ],
+	     "NFC_NFC_Text",  ["$jvm1 TestICU_NFC_NFC_Text"  ,  "$jvm2 TestICU_NFC_NFC_Text" ],
+	     "NFC_Orig_Text", ["$jvm1 TestICU_NFC_Orig_Text" ,  "$jvm2 TestICU_NFC_Orig_Text"],
+	     "NFD_NFD_Text",  ["$jvm1 TestICU_NFD_NFD_Text"  ,  "$jvm2 TestICU_NFD_NFD_Text" ],
+	     "NFD_NFC_Text",  ["$jvm1 TestICU_NFD_NFC_Text"  ,  "$jvm2 TestICU_NFD_NFC_Text" ],
+	     "NFD_Orig_Text", ["$jvm1 TestICU_NFD_Orig_Text" ,  "$jvm2 TestICU_NFD_Orig_Text"],
+	     ##
+	     "QC_NFC_NFD_Text",  ["$jvm1 TestQC_NFC_NFD_Text"  ,  "$jvm2 TestQC_NFC_NFD_Text" ],
+	     "QC_NFC_NFC_Text",  ["$jvm1 TestQC_NFC_NFC_Text"  ,  "$jvm2 TestQC_NFC_NFC_Text" ],
+	     "QC_NFC_Orig_Text", ["$jvm1 TestQC_NFC_Orig_Text" ,  "$jvm2 TestQC_NFC_Orig_Text"],
+	     "QC_NFD_NFD_Text",  ["$jvm1 TestQC_NFD_NFD_Text"  ,  "$jvm2 TestQC_NFD_NFD_Text" ],
+	     "QC_NFD_NFC_Text",  ["$jvm1 TestQC_NFD_NFC_Text"  ,  "$jvm2 TestQC_NFD_NFC_Text" ],
+	     "QC_NFD_Orig_Text", ["$jvm1 TestQC_NFD_Orig_Text" ,  "$jvm2 TestQC_NFD_Orig_Text"],
+	     ##
+	     "IsNormalized_NFC_NFD_Text",  ["$jvm1 TestIsNormalized_NFC_NFD_Text"  ,  "$jvm2 TestIsNormalized_NFC_NFD_Text" ],
+	     "IsNormalized_NFC_NFC_Text",  ["$jvm1 TestIsNormalized_NFC_NFC_Text"  ,  "$jvm2 TestIsNormalized_NFC_NFC_Text" ],
+	     "IsNormalized_NFC_Orig_Text", ["$jvm1 TestIsNormalized_NFC_Orig_Text" ,  "$jvm2 TestIsNormalized_NFC_Orig_Text"],
+	     "IsNormalized_NFD_NFD_Text",  ["$jvm1 TestIsNormalized_NFD_NFD_Text"  ,  "$jvm2 TestIsNormalized_NFD_NFD_Text" ],
+	     "IsNormalized_NFD_NFC_Text",  ["$jvm1 TestIsNormalized_NFD_NFC_Text"  ,  "$jvm2 TestIsNormalized_NFD_NFC_Text" ],
+	     "IsNormalized_NFD_Orig_Text", ["$jvm1 TestIsNormalized_NFD_Orig_Text" ,  "$jvm2 TestIsNormalized_NFD_Orig_Text"]
+	    };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/normalizationperf_r_l.pl b/src/com/ibm/icu/dev/test/perf/normalizationperf_r_l.pl
new file mode 100755
index 0000000..9130a11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/normalizationperf_r_l.pl
@@ -0,0 +1,83 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+#Assume we are running outside of the ICU4J source
+use lib './icu4jsrc_3_4/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.NormalizerPerformanceTest'; 
+
+my $options = {
+	       "title"=>"Normalization performance regression (ICU4J 3.2 and 3.4)",
+	       "headers"=>"ICU4J32 ICU4J34",
+	       "operationIs"=>"code point",
+	       "timePerOperationIs"=>"Time per code point",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       #"outputType"=>"HTML",
+	       "dataDir"=>"c:\\src\\perf\\data",
+	       "outputDir"=>"results_ICU4J"
+	      };
+
+# programs
+
+my $jvm1 = "java -cp ./icu4jsrc_3_2/icu4j32.jar;./icu4jsrc_3_2/perf32.jar $TESTCLASS -l -e UTF-8";
+my $jvm2 = "java -cp ./icu4jsrc_3_4/icu4j34.jar;./icu4jsrc_3_4/perf34.jar $TESTCLASS -l -e UTF-8";
+
+my $dataFiles = {
+		 "",
+		 [
+		  "TestNames_Asian.txt",
+		  "TestNames_Chinese.txt",
+		  "TestNames_Japanese.txt",
+		  "TestNames_Japanese_h.txt",
+		  "TestNames_Japanese_k.txt",
+		  "TestNames_Korean.txt",
+		  "TestNames_Latin.txt",
+		  "TestNames_SerbianSH.txt",
+		  "TestNames_SerbianSR.txt",
+		  "TestNames_Thai.txt",
+		  "Testnames_Russian.txt",
+#		  "th18057.txt",
+#		  "thesis.txt",
+#		  "vfear11a.txt",
+		 ]
+		};
+
+
+my $tests = { 
+	     "NFC_NFD_Text",  ["$jvm1 TestICU_NFC_NFD_Text"  ,  "$jvm2 TestICU_NFC_NFD_Text" ],
+	     "NFC_NFC_Text",  ["$jvm1 TestICU_NFC_NFC_Text"  ,  "$jvm2 TestICU_NFC_NFC_Text" ],
+	     "NFC_Orig_Text", ["$jvm1 TestICU_NFC_Orig_Text" ,  "$jvm2 TestICU_NFC_Orig_Text"],
+	     "NFD_NFD_Text",  ["$jvm1 TestICU_NFD_NFD_Text"  ,  "$jvm2 TestICU_NFD_NFD_Text" ],
+	     "NFD_NFC_Text",  ["$jvm1 TestICU_NFD_NFC_Text"  ,  "$jvm2 TestICU_NFD_NFC_Text" ],
+	     "NFD_Orig_Text", ["$jvm1 TestICU_NFD_Orig_Text" ,  "$jvm2 TestICU_NFD_Orig_Text"],
+	     ##
+	     "QC_NFC_NFD_Text",  ["$jvm1 TestQC_NFC_NFD_Text"  ,  "$jvm2 TestQC_NFC_NFD_Text" ],
+	     "QC_NFC_NFC_Text",  ["$jvm1 TestQC_NFC_NFC_Text"  ,  "$jvm2 TestQC_NFC_NFC_Text" ],
+	     "QC_NFC_Orig_Text", ["$jvm1 TestQC_NFC_Orig_Text" ,  "$jvm2 TestQC_NFC_Orig_Text"],
+	     "QC_NFD_NFD_Text",  ["$jvm1 TestQC_NFD_NFD_Text"  ,  "$jvm2 TestQC_NFD_NFD_Text" ],
+	     "QC_NFD_NFC_Text",  ["$jvm1 TestQC_NFD_NFC_Text"  ,  "$jvm2 TestQC_NFD_NFC_Text" ],
+	     "QC_NFD_Orig_Text", ["$jvm1 TestQC_NFD_Orig_Text" ,  "$jvm2 TestQC_NFD_Orig_Text"],
+	     ##
+	     "IsNormalized_NFC_NFD_Text",  ["$jvm1 TestIsNormalized_NFC_NFD_Text"  ,  "$jvm2 TestIsNormalized_NFC_NFD_Text" ],
+	     "IsNormalized_NFC_NFC_Text",  ["$jvm1 TestIsNormalized_NFC_NFC_Text"  ,  "$jvm2 TestIsNormalized_NFC_NFC_Text" ],
+	     "IsNormalized_NFC_Orig_Text", ["$jvm1 TestIsNormalized_NFC_Orig_Text" ,  "$jvm2 TestIsNormalized_NFC_Orig_Text"],
+	     "IsNormalized_NFD_NFD_Text",  ["$jvm1 TestIsNormalized_NFD_NFD_Text"  ,  "$jvm2 TestIsNormalized_NFD_NFD_Text" ],
+	     "IsNormalized_NFD_NFC_Text",  ["$jvm1 TestIsNormalized_NFD_NFC_Text"  ,  "$jvm2 TestIsNormalized_NFD_NFC_Text" ],
+	     "IsNormalized_NFD_Orig_Text", ["$jvm1 TestIsNormalized_NFD_Orig_Text" ,  "$jvm2 TestIsNormalized_NFD_Orig_Text"]
+	    };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/normperf.pl b/src/com/ibm/icu/dev/test/perf/normperf.pl
new file mode 100755
index 0000000..60cf55b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/normperf.pl
@@ -0,0 +1,546 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.NormalizerPerformanceTest'; 
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+                ['TestJDK_NFD_NFC_Text',  'TestICU_NFD_NFC_Text'],
+                ['TestJDK_NFC_NFC_Text',  'TestICU_NFC_NFC_Text'],
+#               ['TestJDK_NFC_NFD_Text',  'TestICU_NFC_NFD_Text'],
+                ['TestJDK_NFC_Orig_Text', 'TestICU_NFC_Orig_Text'],
+                ['TestJDK_NFD_NFC_Text',  'TestICU_NFD_NFC_Text'],
+                ['TestJDK_NFD_NFD_Text',  'TestICU_NFD_NFD_Text'],
+                ['TestJDK_NFD_Orig_Text', 'TestICU_NFD_Orig_Text'], 
+               );
+
+# Patterns which define the set of characters used for testing.
+
+my $SOURCEDIR ="src/com/ibm/icu/dev/test/perf/data/collation/";
+
+my @OPTIONS = (
+#                      src text                     src encoding  mode  
+                    [ "TestNames_SerbianSH.txt",    "UTF-8", "b"],
+#                   [ "arabic.txt",                 "UTF-8", "b"],
+#                   [ "french.txt",                 "UTF-8", "b"],
+#                   [ "greek.txt",                  "UTF-8", "b"],
+#                   [ "hebrew.txt",                 "UTF-8", "b"],
+#                   [ "hindi.txt" ,                 "UTF-8", "b"],
+#                   [ "japanese.txt",               "UTF-8", "b"],
+#                   [ "korean.txt",                 "UTF-8", "b"],
+#                   [ "s-chinese.txt",              "UTF-8", "b"],
+#                   [ "french.txt",                 "UTF-8", "b"],
+#                   [ "greek.txt",                  "UTF-8", "b"],
+#                   [ "hebrew.txt",                 "UTF-8", "b"],
+#                   [ "hindi.txt" ,                 "UTF-8", "b"],
+#                   [ "japanese.txt",               "UTF-8", "b"],
+#                   [ "korean.txt",                 "UTF-8", "b"],
+#                   [ "s-chinese.txt",              "UTF-8", "b"],
+#                   [ "arabic.html",                "UTF-8", "b"],
+#                   [ "czech.html",                 "UTF-8", "b"],
+#                   [ "danish.html",                "UTF-8", "b"],
+#                   [ "english.html",               "UTF-8", "b"],
+#                   [ "esperanto.html",             "UTF-8", "b"],
+#                   [ "french.html",                "UTF-8", "b"],
+#                   [ "georgian.html",              "UTF-8", "b"],
+#                   [ "german.html",                "UTF-8", "b"],
+#                   [ "greek.html",                 "UTF-8", "b"],
+#                   [ "hebrew.html",                "UTF-8", "b"],
+#                   [ "hindi.html",                 "UTF-8", "b"],
+#                   [ "icelandic.html",             "UTF-8", "b"],
+#                   [ "interlingua.html",           "UTF-8", "b"],
+#                   [ "italian.html",               "UTF-8", "b"],
+#                   [ "japanese.html",              "UTF-8", "b"],
+#                   [ "korean.html",                "UTF-8", "b"],
+#                   [ "lithuanian.html",            "UTF-8", "b"],
+#                   [ "maltese.html",               "UTF-8", "b"],
+#                   [ "persian.html",               "UTF-8", "b"],
+#                   [ "polish.html",                "UTF-8", "b"],
+#                   [ "portuguese.html",            "UTF-8", "b"],
+#                   [ "romanian.html",              "UTF-8", "b"],
+#                   [ "russian.html",               "UTF-8", "b"],
+#                   [ "s-chinese.html",             "UTF-8", "b"],
+#                   [ "spanish.html",               "UTF-8", "b"],
+#                   [ "swedish.html",               "UTF-8", "b"],
+#                   [ "t-chinese.html",             "UTF-8", "b"],
+#                   [ "welsh.html",                 "UTF-8", "b"],
+                    [ "TestNames_Asian.txt",        "UTF-8", "l"],
+                    [ "TestNames_Chinese.txt",      "UTF-8", "l"],
+                    [ "TestNames_Japanese.txt",     "UTF-8", "l"],
+                    [ "TestNames_Japanese_h.txt",   "UTF-8", "l"],
+                    [ "TestNames_Japanese_k.txt",   "UTF-8", "l"],
+                    [ "TestNames_Korean.txt",       "UTF-8", "l"],
+                    [ "TestNames_Latin.txt",        "UTF-8", "l"],
+                    [ "TestNames_SerbianSH.txt",    "UTF-8", "l"],
+                    [ "TestNames_SerbianSR.txt",    "UTF-8", "l"],
+                    [ "TestNames_Thai.txt",         "UTF-8", "l"],
+                    [ "Testnames_Russian.txt",      "UTF-8", "l"], 
+              );
+
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+main();
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $title = "ICU4J Performance Test $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Options</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@OPTIONS) {
+            print HTML "<TR><TD>@$pat[0], @$pat[2]</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod [@$pat]\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\n$baselineMethod [@$pat]\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method for input file @$pat[0] in @$pat[2] , ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+    
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $fileName = $SOURCEDIR . @$pat[0] ; 
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -classpath classes $TESTCLASS $method $n -p $passes -f $fileName -e @$pat[1] -@$pat[2]";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/perldriver/Dataset.pm b/src/com/ibm/icu/dev/test/perf/perldriver/Dataset.pm
new file mode 100644
index 0000000..ed99311
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/perldriver/Dataset.pm
@@ -0,0 +1,139 @@
+#!/usr/local/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2006, International Business Machines Corporation and
+#  * others. All Rights Reserved.
+#  ********************************************************************
+
+package Dataset;
+use Statistics::Descriptive;
+use Statistics::Distributions;
+use strict;
+
+# Create a new Dataset with the given data.
+sub new {
+    my ($class) = shift;
+    my $self = bless {
+        _data => \@_,
+        _scale => 1.0,
+        _mean => 0.0,
+        _error => 0.0,
+    }, $class;
+
+    my $n = @_;
+    
+    if ($n >= 1) {
+        my $stats = Statistics::Descriptive::Full->new();
+        $stats->add_data(@{$self->{_data}});
+        $self->{_mean} = $stats->mean();
+
+        if ($n >= 2) {
+            # Use a t distribution rather than Gaussian because (a) we
+            # assume an underlying normal dist, (b) we do not know the
+            # standard deviation -- we estimate it from the data, and (c)
+            # we MAY have a small sample size (also works for large n).
+            my $t = Statistics::Distributions::tdistr($n-1, 0.005);
+            $self->{_error} = $t * $stats->standard_deviation();
+        }
+    }
+
+    $self;
+}
+
+# Set a scaling factor for all data; 1.0 means no scaling.
+# Scale must be > 0.
+sub setScale {
+    my ($self, $scale) = @_;
+    $self->{_scale} = $scale;
+}
+
+# Multiply the scaling factor by a value.
+sub scaleBy {
+    my ($self, $a) = @_;
+    $self->{_scale} *= $a;
+}
+
+# Return the mean.
+sub getMean {
+    my $self = shift;
+    return $self->{_mean} * $self->{_scale};
+}
+
+# Return a 99% error based on the t distribution.  The dataset
+# is desribed as getMean() +/- getError().
+sub getError {
+    my $self = shift;
+    return $self->{_error} * $self->{_scale};
+}
+
+# Divide two Datasets and return a new one, maintaining the
+# mean+/-error.  The new Dataset has no data points.
+sub divide {
+    my $self = shift;
+    my $rhs = shift;
+    
+    my $minratio = ($self->{_mean} - $self->{_error}) /
+                   ($rhs->{_mean} + $rhs->{_error});
+    my $maxratio = ($self->{_mean} + $self->{_error}) /
+                   ($rhs->{_mean} - $rhs->{_error});
+
+    my $result = Dataset->new();
+    $result->{_mean} = ($minratio + $maxratio) / 2;
+    $result->{_error} = $result->{_mean} - $minratio;
+    $result->{_scale} = $self->{_scale} / $rhs->{_scale};
+    $result;
+}
+
+# subtracts two Datasets and return a new one, maintaining the
+# mean+/-error.  The new Dataset has no data points.
+sub subtract {
+    my $self = shift;
+    my $rhs = shift;
+    
+    my $result = Dataset->new();
+    $result->{_mean} = $self->{_mean} - $rhs->{_mean};
+    $result->{_error} = $self->{_error} + $rhs->{_error};
+    $result->{_scale} = $self->{_scale};
+    $result;
+}
+
+# adds two Datasets and return a new one, maintaining the
+# mean+/-error.  The new Dataset has no data points.
+sub add {
+    my $self = shift;
+    my $rhs = shift;
+    
+    my $result = Dataset->new();
+    $result->{_mean} = $self->{_mean} + $rhs->{_mean};
+    $result->{_error} = $self->{_error} + $rhs->{_error};
+    $result->{_scale} = $self->{_scale};
+    $result;
+}
+
+# Divides a dataset by a scalar.
+# The new Dataset has no data points.
+sub divideByScalar {
+    my $self = shift;
+    my $s = shift;
+    
+    my $result = Dataset->new();
+    $result->{_mean} = $self->{_mean}/$s;
+    $result->{_error} = $self->{_error}/$s;
+    $result->{_scale} = $self->{_scale};
+    $result;
+}
+
+# Divides a dataset by a scalar.
+# The new Dataset has no data points.
+sub multiplyByScalar {
+    my $self = shift;
+    my $s = shift;
+    
+    my $result = Dataset->new();
+    $result->{_mean} = $self->{_mean}*$s;
+    $result->{_error} = $self->{_error}*$s;
+    $result->{_scale} = $self->{_scale};
+    $result;
+}
+
+1;
diff --git a/src/com/ibm/icu/dev/test/perf/perldriver/Format.pm b/src/com/ibm/icu/dev/test/perf/perldriver/Format.pm
new file mode 100644
index 0000000..20d6075
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/perldriver/Format.pm
@@ -0,0 +1,166 @@
+#!/usr/local/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2006, International Business Machines Corporation and
+#  * others. All Rights Reserved.
+#  ********************************************************************
+
+my $PLUS_MINUS = "&plusmn;";
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    #always do seconds if the following line is commented out
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . '%';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+1;
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/perldriver/Output.pm b/src/com/ibm/icu/dev/test/perf/perldriver/Output.pm
new file mode 100644
index 0000000..741a25c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/perldriver/Output.pm
@@ -0,0 +1,389 @@
+#!/usr/local/bin/perl
+
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2006, International Business Machines Corporation and
+#  * others. All Rights Reserved.
+#  ********************************************************************
+
+
+use strict;
+
+use Dataset;
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+my $outType = "HTML";
+my $html = "noName";
+my $inTable;
+my @headers;
+my @timetypes = ("mean per op", "error per op", "events", "per event");
+my %raw;
+my $current = "";
+my $exp = 0;
+my $mult = 1e9; #use nanoseconds
+my $perc = 100; #for percent
+my $printEvents = 0;
+my $legend = "<a name=\"Legend\">\n<h2>Table legend</h2></a><ul>";
+my $legendDone = 0;
+my %options;
+my $operationIs = "operation";
+my $eventIs = "event";
+
+sub startTest {
+  $current = shift;
+  $exp = 0;
+  outputData($current);
+}
+
+sub printLeg {
+  if(!$legendDone) {
+    my $message;
+    foreach $message (@_) {
+      $legend .= "<li>".$message."</li>\n";
+    }
+  }
+}
+
+sub outputDist {
+  my $value = shift;
+  my $percent = shift;
+  my $mean = $value->getMean;
+  my $error = $value->getError;
+  print HTML "<td class=\"";
+  if($mean > 0) {
+    print HTML "value";
+  } else {
+    print HTML "worse";
+  }
+  print HTML "\">";
+  if($percent) {
+    print HTML formatPercent(2, $mean);
+  } else {
+    print HTML formatNumber(2, $mult, $mean);
+  }
+  print HTML "</td>\n";  
+  print HTML "<td class=\"";
+  if((($error*$mult < 10)&&!$percent) || (($error<10)&&$percent)) {
+    print HTML "error";
+  } else {
+    print HTML "errorLarge";
+  }
+  print HTML "\">&plusmn;";
+  if($percent) {
+    print HTML formatPercent(2, $error);
+  } else {
+    print HTML formatNumber(2, $mult, $error);
+  }
+  print HTML "</td>\n";  
+}
+  
+sub outputValue {
+  my $value = shift;
+  print HTML "<td class=\"sepvalue\">";
+  print HTML $value;
+  #print HTML formatNumber(2, 1, $value);
+  print HTML "</td>\n";  
+}
+
+sub startTable {
+  #my $printEvents = shift;
+  $inTable = 1;
+  my $i;
+  print HTML "<table $TABLEATTR>\n";
+  print HTML "<tbody>\n";
+  if($#headers >= 0) {
+    my ($header, $i);
+    print HTML "<tr>\n";
+    print HTML "<th rowspan=\"2\" class=\"testNameHeader\"><a href=\"#TestName\">Test Name</a></th>\n";
+    print HTML "<th rowspan=\"2\" class=\"testNameHeader\"><a href=\"#Ops\">Ops</a></th>\n";
+    printLeg("<a name=\"Test Name\">TestName</a> - name of the test as set by the test writer\n", "<a name=\"Ops\">Ops</a> - number of ".$operationIs."s per iteration\n");
+    if(!$printEvents) {
+      print HTML "<th colspan=".((4*($#headers+1))-2)." class=\"sourceType\">Per Operation</th>\n";
+    } else {
+      print HTML "<th colspan=".((2*($#headers+1))-2)." class=\"sourceType\">Per Operation</th>\n";
+      print HTML "<th colspan=".((5*($#headers+1))-2)." class=\"sourceType\">Per Event</th>\n";
+    }
+    print HTML "</tr>\n<tr>\n";
+    if(!$printEvents) {
+      foreach $header (@headers) {
+	print HTML "<th class=\"source\" colspan=2><a href=\"#meanop_$header\">$header<br>/op</a></th>\n";
+	printLeg("<a name=\"meanop_$header\">$header /op</a> - mean time and error for $header per $operationIs");
+      }
+    }
+    for $i (1 .. $#headers) {
+      print HTML "<th class=\"source\" colspan=2><a href=\"#mean_op_$i\">ratio $i<br>/op</a></th>\n";
+      printLeg("<a name=\"mean_op_$i\">ratio $i /op</a> - ratio and error of per $operationIs time, calculated as: (($headers[0] - $headers[$i])/$headers[$i])*100%, mean value");
+    }
+    if($printEvents) {
+      foreach $header (@headers) {
+	print HTML "<th class=\"source\"><a href=\"#events_$header\">$header<br>events</a></th>\n";
+	printLeg("<a name=\"events_$header\">$header events</a> - number of ".$eventIs."s for $header per iteration");
+      }
+      foreach $header (@headers) {
+	print HTML "<th class=\"source\" colspan=2><a href=\"#mean_ev_$header\">$header<br>/ev</a></th>\n";
+	printLeg("<a name=\"mean_ev_$header\">$header /ev</a> - mean time and error for $header per $eventIs");
+      }
+      for $i (1 .. $#headers) {
+	print HTML "<th class=\"source\" colspan=2><a href=\"#mean_ev_$i\">ratio $i<br>/ev</a></th>\n";
+	printLeg("<a name=\"mean_ev_$i\">ratio $i /ev</a> - ratio and error of per $eventIs time, calculated as: (($headers[0] - $headers[$i])/$headers[$i])*100%, mean value");
+      }
+    }
+    print HTML "</tr>\n";
+  }
+  $legendDone = 1;
+}
+
+sub closeTable {
+  if($inTable) {
+    undef $inTable;
+    print HTML "</tr>\n";
+    print HTML "</tbody>";
+    print HTML "</table>\n";
+  }
+}
+
+sub newRow {
+  if(!$inTable) {
+    startTable;
+  } else {
+    print HTML "</tr>\n";
+  }
+  print HTML "<tr>";
+}
+
+sub outputData {
+  if($inTable) {
+    my $msg = shift;
+    my $align = shift;
+    print HTML "<td";
+    if($align) {
+      print HTML " align = $align>";
+    } else {
+      print HTML ">";
+    }
+    print HTML "$msg";
+    print HTML "</td>";
+  } else {
+    my $message;
+    foreach $message (@_) {
+      print HTML "$message";
+    }
+  }
+}
+
+sub setupOutput {
+  my $date = localtime;
+  my $options = shift;
+  %options = %{ $options };
+  my $title = $options{ "title" };
+  my $headers = $options{ "headers" };
+  if($options{ "operationIs" }) {
+    $operationIs = $options{ "operationIs" };
+  }
+  if($options{ "eventIs" }) {
+    $eventIs = $options{ "eventIs" };
+  }
+  @headers = split(/ /, $headers);
+  my ($t, $rest);
+  ($t, $rest) = split(/\.\w+/, $0);
+  $t =~ /^.*\W(\w+)$/;
+  $t = $1;
+  if($outType eq 'HTML') {
+    $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "$t $html.html";
+    if($options{ "outputDir" }) {
+      $html = $options{ "outputDir" }."/".$html;
+    }
+    $html =~ s/ /_/g;
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+#<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+    print HTML <<EOF;
+<HTML>
+   <HEAD>
+   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+      <TITLE>$title</TITLE>
+<style>
+<!--
+body         { font-size: 10pt; font-family: sans-serif }
+th           { font-size: 10pt; border: 0 solid #000080; padding: 5 }
+th.testNameHeader { border-width: 1 }
+th.testName  { text-align: left; border-left-width: 1; border-right-width: 1; 
+               border-bottom-width: 1 }
+th.source    { border-right-width: 1; border-bottom-width: 1 }
+th.sourceType { border-right-width: 1; border-top-width: 1; border-bottom-width: 1 }
+td           { font-size: 10pt; text-align: Right; border: 0 solid #000080; padding: 5 }
+td.string    { text-align: Left; border-bottom-width:1; border-right-width:1 }
+td.sepvalue  { border-bottom-width: 1; border-right-width: 1 }
+td.value     { border-bottom-width: 1 }
+td.worse     { color: #FF0000; font-weight: bold; border-bottom-width: 1 }
+td.error     { font-size: 75%; border-right-width: 1; border-bottom-width: 1 }
+td.errorLarge { font-size: 75%; color: #FF0000; font-weight: bold; border-right-width: 1; 
+               border-bottom-width: 1 }
+A:link    { color: black; font-weight: normal; text-decoration: none}    /* unvisited links */
+A:visited { color: blue; font-weight: normal; text-decoration: none }   /* visited links   */
+A:hover   { color: red; font-weight: normal; text-decoration: none } /* user hovers     */
+A:active  { color: lime; font-weight: normal; text-decoration: none }   /* active links    */
+-->
+</style>
+   </HEAD>
+   <BODY bgcolor="#FFFFFF" LINK="#006666" VLINK="#000000">
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    #print HTML "<H2>$TESTCLASS</H2>\n";
+  }
+}
+
+sub closeOutput {
+  if($outType eq 'HTML') {
+    if($inTable) {
+      closeTable;
+    }
+    $legend .= "</ul>\n";
+    print HTML $legend;
+    outputRaw();
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+  }
+}
+
+
+sub outputRaw {
+  print HTML "<h2>Raw data</h2>";
+  my $key;
+  my $i;
+  my $j;
+  my $k;
+  print HTML "<table $TABLEATTR>\n";
+  for $key (sort keys %raw) {
+    my $printkey = $key;
+    $printkey =~ s/\<br\>/ /g;
+    if($printEvents) {
+      if($key ne "") {
+	print HTML "<tr><th class=\"testNameHeader\" colspan = 7>$printkey</td></tr>\n"; # locale and data file
+      }
+      print HTML "<tr><th class=\"testName\">test name</th><th class=\"testName\">interesting arguments</th><th class=\"testName\">iterations</th><th class=\"testName\">operations</th><th class=\"testName\">mean time (ns)</th><th class=\"testName\">error (ns)</th><th class=\"testName\">events</th></tr>\n";
+    } else {
+      if($key ne "") {
+	print HTML "<tr><th class=\"testName\" colspan = 6>$printkey</td></tr>\n"; # locale and data file
+      }
+      print HTML "<tr><th class=\"testName\">test name</th><th class=\"testName\">interesting arguments</th><th class=\"testName\">iterations</th><th class=\"testName\">operations</th><th class=\"testName\">mean time (ns)</th><th class=\"testName\">error (ns)</th></tr>\n";
+    }
+    $printkey =~ s/[\<\>\/ ]//g;
+      
+    my %done;
+    for $i ( $raw{$key} ) {
+      print HTML "<tr>";
+      for $j ( @$i ) {
+	my ($test, $args);
+	($test, $args) = split(/,/, shift(@$j));
+
+	print HTML "<th class=\"testName\">";
+	if(!$done{$test}) {
+	  print HTML "<a name=\"".$printkey."_".$test."\">".$test."</a>";
+	  $done{$test} = 1;
+	} else {
+	  print HTML $test;
+	}
+	print HTML "</th>";
+
+	print HTML "<td class=\"string\">".$args."</td>";
+	
+	print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+	print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+
+	my @data = @{ shift(@$j) };
+	my $ds = Dataset->new(@data);
+	print HTML "<td class=\"sepvalue\">".formatNumber(4, $mult, $ds->getMean)."</td><td class=\"sepvalue\">".formatNumber(4, $mult, $ds->getError)."</td>";
+	if($#{ $j } >= 0) {
+	  print HTML "<td class=\"sepvalue\">".shift(@$j)."</td>";
+	}
+	print HTML "</tr>\n";
+      }
+    }
+  }
+}
+
+sub store {
+  $raw{$current}[$exp++] = [@_];
+}
+
+sub outputRow {
+  #$raw{$current}[$exp++] =  [@_];
+  my $testName = shift;
+  my @iterPerPass = @{shift(@_)};
+  my @noopers =  @{shift(@_)};
+   my @timedata =  @{shift(@_)};
+  my @noevents;
+  if($#_ >= 0) {
+    @noevents =  @{shift(@_)};
+  }
+  if(!$inTable) {
+    if(@noevents) {
+      $printEvents = 1;
+      startTable;
+    } else {
+      startTable;
+    }
+  }
+  debug("No events: @noevents, $#noevents\n");
+
+  my $j;
+  my $loc = $current;
+  $loc =~ s/\<br\>/ /g;
+  $loc =~ s/[\<\>\/ ]//g;
+
+  # Finished one row of results. Outputting
+  newRow;
+  #outputData($testName, "LEFT");
+  print HTML "<th class=\"testName\"><a href=\"#".$loc."_".$testName."\">$testName</a></th>\n";
+  #outputData($iterCount);
+  #outputData($noopers[0], "RIGHT");
+  outputValue($noopers[0]);
+
+  if(!$printEvents) {
+    for $j ( 0 .. $#timedata ) {
+      my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noopers[$j]); # time per operation
+      #debug("Time per operation: ".formatSeconds(4, $perOperation->getMean, $perOperation->getError)."\n");
+      outputDist($perOperation);
+    }
+  }
+  my $baseLinePO = $timedata[0]->divideByScalar($iterPerPass[0]*$noopers[0]);
+  for $j ( 1 .. $#timedata ) {
+    my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noopers[$j]); # time per operation
+    my $ratio = $baseLinePO->subtract($perOperation);
+    $ratio = $ratio->divide($perOperation);
+    outputDist($ratio, "%");
+  }   
+  if (@noevents) {
+    for $j ( 0 .. $#timedata ) {
+      #outputData($noevents[$j], "RIGHT");
+      outputValue($noevents[$j]);
+    }
+    for $j ( 0 .. $#timedata ) {
+      my $perEvent =  $timedata[$j]->divideByScalar($iterPerPass[$j]*$noevents[$j]); # time per event
+      #debug("Time per operation: ".formatSeconds(4, $perEvent->getMean, $perEvent->getError)."\n");
+      outputDist($perEvent);
+    }   
+    my $baseLinePO = $timedata[0]->divideByScalar($iterPerPass[0]*$noevents[0]);
+    for $j ( 1 .. $#timedata ) {
+      my $perOperation = $timedata[$j]->divideByScalar($iterPerPass[$j]*$noevents[$j]); # time per operation
+      my $ratio = $baseLinePO->subtract($perOperation);
+      $ratio = $ratio->divide($perOperation);
+      outputDist($ratio, "%");
+    }   
+  }
+}
+
+
+1;
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/perldriver/PerfFramework4j.pm b/src/com/ibm/icu/dev/test/perf/perldriver/PerfFramework4j.pm
new file mode 100644
index 0000000..ac001a8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/perldriver/PerfFramework4j.pm
@@ -0,0 +1,415 @@
+#!/usr/local/bin/perl
+#  ***********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2006, International Business Machines Corporation
+#  * and others. All Rights Reserved.
+#  ***********************************************************************
+
+use strict;
+
+#use Dataset;
+use Format;
+use Output;
+
+my $VERBOSE = 0;
+my $DEBUG   = 1;
+my $start_l = ""; #formatting help
+my $end_l   = "";
+my @testArgs; # different kinds of tests we want to do
+my $datadir = "data";
+my $extraArgs; # stuff that always gets passed to the test program
+
+
+my $iterCount = 0;
+my $NUMPASSES = 4;
+my $TIME = 2;
+my $ITERATIONS;   #Added by Doug
+my $DATADIR;
+
+sub setupOptions {
+  my %options = %{shift @_};
+
+  if($options{"time"}) {
+    $TIME = $options{"time"};
+  }
+
+  if($options{"passes"}) {
+    $NUMPASSES = $options{"passes"};
+  }
+	
+  if($options{"dataDir"}) {
+    $DATADIR = $options{"dataDir"};
+  }
+  
+  # Added by Doug
+  if ($options{"iterations"}) {
+  	$ITERATIONS = $options{"iterations"};
+  }
+}
+
+sub runTests {
+  debug("Enter runTest in PerfFramework4j\n");
+  my $options = shift;
+  my @programs;
+  my $tests = shift;
+  my %datafiles;
+  if($#_ >= 0) { # maybe no files/locales
+    my $datafiles = shift;
+    if($datafiles) {
+      %datafiles = %{$datafiles};
+    }
+  }
+  setupOutput($options);
+  setupOptions($options);
+
+  my($locale, $iter, $data, $program, $args, $variable);
+#
+#  Outer loop runs through the locales to test
+#
+  if (%datafiles) {
+    foreach $locale (sort keys %datafiles ) {
+      foreach $data (@{ $datafiles{$locale} }) {
+	closeTable;
+	my $locdata = "";
+	if(!($locale eq "")) {
+	  $locdata = "<b>Locale:</b> $locale<br>";
+	}
+	$locdata .= "<b>Datafile:</b> $data<br>";
+	startTest($locdata);
+
+	if($DATADIR) {
+	  compareLoop ($tests, $locale, $DATADIR."/".$data);
+	} else {
+	  compareLoop ($tests, $locale, $data);
+	}
+      }
+    }
+  } else {
+    compareLoop($tests);
+  }
+  closeOutput();
+}
+
+sub compareLoop {
+  #debug("enter compareLoop\n");
+  
+  my $tests = shift;
+  #debug("tests $tests");
+  #my @tests = @{$tests};
+  my %tests = %{$tests};
+  #debug("tests $tests");
+  my $locale = shift;
+  my $datafile = shift;
+  my $locAndData = "";
+  if($locale) {
+    $locAndData .= " -L $locale";
+  }
+  
+  if($datafile) {
+    $locAndData .= " -f $datafile";
+  }
+	  
+  my $args;
+  my ($i, $j, $aref);
+  foreach $i ( sort keys %tests ) {
+    #debug("Test: $i\n");
+    $aref = $tests{$i};
+    my @timedata;
+    my @iterPerPass;
+    my @noopers;
+    my @noevents;
+
+    my $program;
+    my @argsAndTest;
+    for $j ( 0 .. $#{$aref} ) {
+    # first we calibrate. Use time from somewhere
+    # first test is used for calibration
+    ##################
+    #  ($program, @argsAndTest) = split(/\ /, @{ $tests{$i} }[$j]);
+    #  #Modified by Doug
+    #   my $commandLine;
+    #  if ($ITERATIONS) {
+    #  	$commandLine = "$program -i $ITERATIONS -p $NUMPASSES $locAndData @argsAndTest";
+    #  } else {
+    #  	$commandLine = "$program -t $TIME -p $NUMPASSES $locAndData @argsAndTest";
+    # 	}
+    ######################
+    ######################
+    my $custArgs;
+    my $testCommand = @{ $tests{$i} }[$j];
+      if ($testCommand =~/--/) {
+      	$custArgs = $& . $';	#The matched part and the right part
+      	$testCommand = $`;		#The left part for furthur processing
+      } else { $custArgs = ''; }
+      ($program, @argsAndTest) = split(/\ /, $testCommand);
+      my $commandLine;
+      if ($ITERATIONS) {
+      	$commandLine = "$program @argsAndTest -i $ITERATIONS -p $NUMPASSES $locAndData $custArgs";
+      } else {
+      	$commandLine = "$program @argsAndTest -t $TIME -p $NUMPASSES $locAndData $custArgs";
+    	}
+    #debug("custArgs:$custArgs\n");
+    ####################
+      
+      my @res = measure1($commandLine);
+      store("$i, $program @argsAndTest", @res);
+
+      push(@iterPerPass, shift(@res));
+      push(@noopers, shift(@res));
+      my @data = @{ shift(@res) };
+      if($#res >= 0) {
+	push(@noevents, shift(@res));
+      }
+    
+
+      shift(@data) if (@data > 1); # discard first run
+
+      #debug("data is @data\n");
+      my $ds = Dataset->new(@data);
+
+      push(@timedata, $ds);
+    }
+
+    outputRow($i, \@iterPerPass, \@noopers, \@timedata, \@noevents);
+  }
+
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    # run passes
+    my @t = callProg(shift); #"$program $args $argsAndTest");
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        #push(@ms, $b[0]);
+        push(@ms, shift(@b));
+    }
+    my $iterCount = shift(@b);
+    my $operationsPerIter = shift(@b);
+    my $eventsPerIter;
+    if($#b >= 0) {
+      $eventsPerIter = shift(@b);
+    }
+
+#    out("Iterations per pass: $iterCount<BR>\n");
+#    out("Events per iteration: $eventsPerIter<BR>\n");
+#    debug("Iterations per pass: $iterCount<BR>\n");
+#    if($eventsPerIter) {
+#      debug("Events per iteration: $eventsPerIter<BR>\n");
+#    }
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+#    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+    debug("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+    if($eventsPerIter) {
+      ($iterCount, $operationsPerIter, \@ms, $eventsPerIter);
+    } else {
+      ($iterCount, $operationsPerIter, \@ms);
+    }
+}
+
+
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @res = measure1(@_);
+    my $iterPerPass = shift(@res);
+    my $operationsPerIter = shift(@res);
+    my @data = @{ shift(@res) };
+    my $eventsPerIter = shift(@res);
+    
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    #$ds->setScale(1.0e-3 / ($iterPerPass * $operationsPerIter));
+    ($ds, $iterPerPass, $operationsPerIter, $eventsPerIter);
+}
+
+
+#---------------------------------------------------------------------
+# Invoke program and capture results, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callProg {
+    my $cmd = shift;
+    #my $pat = shift;
+    #my $n = shift;
+
+    #my $cmd = "java -cp c:\\dev\\myicu4j\\classes $TESTCLASS $method $n $pat";
+    debug( "[$cmd]\n"); # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Program failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #debug( "[", join("\n", @out), "]\n");
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #debug ("$_ => [[$m $state !!!$d!!! $data ]]\n");
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #debug( "#$method:", join(";",@$data), "\n");
+                unshift(@$data, $method); # add method to start
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+sub debug  {
+  my $message;
+  if($DEBUG != 0) {
+    foreach $message (@_) {
+      print STDERR "$message";
+    }
+  }
+}
+
+sub measure1Alan {
+  #Added here, was global
+  my $CALIBRATE = 2; # duration in seconds for initial calibration
+
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method using $pat, ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        my $timePerIter = 1.0e-3 * $data[0] / $data[2];
+    
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[2] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, "$iterCount " x $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0]);
+    }
+    my $eventsPerIter = $b[1];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+
+1;
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/rbbiperf_r.pl b/src/com/ibm/icu/dev/test/perf/rbbiperf_r.pl
new file mode 100755
index 0000000..a75f0db
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/rbbiperf_r.pl
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+use lib 'svn-icu4j/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+my $options = {
+	       "title"=>"Rule Based BreakIterator performance regression (ICU4J 3.6 and 3.8)",
+	       "headers"=>"ICU4J36 ICU4J38",
+	       "operationIs"=>"code point",
+	       "eventIs"=>"break",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       "outputType"=>"HTML",
+	       "dataDir"=>"svn-icu4j/src/com/ibm/icu/dev/test/perf/data/collation",
+	       "outputDir"=>"svn-icu4j/results_ICU4J"
+	      };
+
+# programs
+# Test class
+my $TESTCLASS = "com.ibm.icu.dev.test.perf.RBBIPerf";
+# tests will be done for all the programs. Results will be stored and connected
+my $m1 = "char";
+my $m2 = "word";
+my $m3 = "line";
+my $m4 = "jdkline";
+
+my $m;
+
+if(@_ >= 0) {
+  $m = "-- -m ".shift;
+} else {
+  $m = $m1;
+}
+
+my $jvm1 = "java -classpath svn-icu4j_3-6/classes $TESTCLASS";
+my $jvm2 = "java -classpath svn-icu4j/classes $TESTCLASS";
+
+my $dataFiles = {
+"en", [
+	   #"thesis.txt", 
+       #"2drvb10.txt", 
+       #"ulyss10.txt",  
+       #"nvsbl10.txt", 
+       #"vfear11a.txt", 		  
+       "TestNames_Asian.txt",
+       "TestNames_Chinese.txt",
+       "TestNames_Japanese.txt",
+       "TestNames_Japanese_h.txt",
+       "TestNames_Japanese_k.txt",
+       "TestNames_Korean.txt",
+       "TestNames_Latin.txt",
+       "TestNames_SerbianSH.txt",
+       "TestNames_SerbianSR.txt",
+       "TestNames_Thai.txt",
+       "Testnames_Russian.txt",
+],
+#"th", ["TestNames_Thai.txt", "th18057.txt"]
+};
+
+
+my $tests = { 
+"TestNextChar",      ["$jvm1 testRBBINext $m1", "$jvm2 testRBBINext $m1"],
+"TestNextWord",      ["$jvm1 testRBBINext $m2", "$jvm2 testRBBINext $m2"],
+"TestNextLine",      ["$jvm1 testRBBINext $m3", "$jvm2 testRBBINext $m3"],
+"TestNextJDKLine",   ["$jvm1 testRBBINext $m4", "$jvm2 testRBBINext $m4"],
+##
+"TestPreviousChar",      ["$jvm1 testRBBIPrevious $m1", "$jvm2 testRBBIPrevious $m1"],
+"TestPreviousWord",      ["$jvm1 testRBBIPrevious $m2", "$jvm2 testRBBIPrevious $m2"],
+"TestPreviousLine",      ["$jvm1 testRBBIPrevious $m3", "$jvm2 testRBBIPrevious $m3"],
+#"TestPreviousSentence",  ["$jvm1 testRBBIPrevious $m4", "$jvm2 testRBBIPrevious $m4"],
+##						                                                     
+"TestIsBoundaryChar",      ["$jvm1 testRBBIIsBoundary $m1", "$jvm2 testRBBIIsBoundary $m1"],
+"TestIsBoundaryWord",      ["$jvm1 testRBBIIsBoundary $m2", "$jvm2 testRBBIIsBoundary $m2"],
+"TestIsBoundaryLine",      ["$jvm1 testRBBIIsBoundary $m3", "$jvm2 testRBBIIsBoundary $m3"],
+#"TestIsBoundarySentence",  ["$jvm1 testRBBIIsBoundary $m4", "$jvm2 testRBBIIsBoundary $m4"],
+};
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/resourcebundleperf.pl b/src/com/ibm/icu/dev/test/perf/resourcebundleperf.pl
new file mode 100755
index 0000000..11bfa89
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/resourcebundleperf.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+#/**
+# *******************************************************************************
+# * Copyright (C) 2006-2008, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+use lib 'src/com/ibm/icu/dev/test/perf';
+use lib 'src/com/ibm/icu/dev/test/perf/perldriver';
+use PerfFramework4j;
+
+$TEST_DATA="src/com/ibm/icu/dev/test/perf/data/collation";
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = "com.ibm.icu.dev.test.perf.ResourceBundlePerf"; 
+
+mkdir "results_ICU4J";
+
+my $options = {
+         "title"=>"ResourceBundle performance test",
+         "headers"=>"Java ICU",
+         "operationIs"=>"various",
+         "timePerOperationIs"=>"Time per each fetch",
+         "passes"=>"1",
+         "time"=>"1",
+         "outputType"=>"HTML",
+         "dataDir"=>$TEST_DATA,
+         "outputDir"=>"results_ICU4J"
+        };
+
+# programs
+
+my $cmd = 'java -classpath "classes" '.$TESTCLASS;
+
+my $dataFiles = "";
+
+my $tests = { 
+               "Empty array",           ["$cmd TestEmptyArrayJava",                 "$cmd TestEmptyArrayICU"],
+               "Empty Explicit String", ["$cmd TestEmptyExplicitStringJava",        "$cmd TestEmptyExplicitStringICU"],
+               "Empty String",          ["$cmd TestEmptyStringJava",                "$cmd TestEmptyStringICU"],
+               "Get 123",               ["$cmd TestGet123Java",                     "$cmd TestGet123ICU"],
+               "Get Binary Test",       ["$cmd TestGetBinaryTestJava",              "$cmd TestGetBinaryTestICU"],
+               "Get Empty Binary",      ["$cmd TestGetEmptyBinaryJava",             "$cmd TestGetBinaryTestICU"],
+               "Get Empty Menu",        ["$cmd TestGetEmptyMenuJava",               "$cmd TestGetEmptyMenuICU"],
+               "Get Empty Int",         ["$cmd TestGetEmptyIntJava",                "$cmd TestGetEmptyIntICU"],
+               "Get Empty Int Array",   ["$cmd TestGetEmptyIntegerArrayJava",       "$cmd TestGetEmptyIntegerArrayICU"],
+               "Get Int Array",         ["$cmd TestGetIntegerArrayJava",            "$cmd TestGetIntegerArrayICU"],
+               "Get Menu",              ["$cmd TestGetMenuJava",                    "$cmd TestGetMenuICU"],
+               "Get Minus One",         ["$cmd TestGetMinusOneJava",                "$cmd TestGetMinusOneICU"],
+               "Get Minus One Uint",    ["$cmd TestGetMinusOneUintJava",            "$cmd TestGetMinusOneUintICU"],
+               "Get One",               ["$cmd TestGetOneJava",                     "$cmd TestGetOneICU"],
+               "Get Plus One",          ["$cmd TestGetPlusOneJava",                 "$cmd TestGetPlusOneICU"],
+               "Construction",          ["$cmd TestResourceBundleConstructionJava", "$cmd TestResourceBundleConstructionICU"],
+               "Zero Test",             ["$cmd TestZeroTestJava",                   "$cmd TestZeroTestICU"]
+            };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/ucharacterperf.pl b/src/com/ibm/icu/dev/test/perf/ucharacterperf.pl
new file mode 100755
index 0000000..305583f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/ucharacterperf.pl
@@ -0,0 +1,493 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.UCharacterPerf';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (['JDKDigit',                    'Digit'],
+                ['JDKGetNumericValue',          'GetNumericValue'],
+                ['JDKGetType',                  'GetType'],
+                ['JDKIsDefined',                'IsDefined'],
+                ['JDKIsDigit',                  'IsDigit'],
+                ['JDKIsIdentifierIgnorable',    'IsIdentifierIgnorable'],
+                ['JDKIsISOControl',             'IsISOControl'],
+                ['JDKIsLetter',                 'IsLetter'],
+                ['JDKIsLetterOrDigit',          'IsLetterOrDigit'],
+                ['JDKIsLowerCase',              'IsLowerCase'],
+                ['JDKIsSpaceChar',              'IsSpaceChar'],
+                ['JDKIsTitleCase',              'IsTitleCase'],
+                ['JDKIsUnicodeIdentifierPart',  'IsUnicodeIdentifierPart'],
+                ['JDKIsUnicodeIdentifierStart', 'IsUnicodeIdentifierStart'],
+                ['JDKIsUpperCase',              'IsUpperCase'],
+                ['JDKIsWhiteSpace',             'IsWhiteSpace'],
+               );
+
+# Patterns which define the set of characters used for testing.
+my @PATTERNS = ('0 ffff');
+
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+main();
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $title = "ICU4J Performance Test $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Pattern</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@PATTERNS) {
+            print HTML "<TR><TD>$pat</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod $pat\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\nBegin $baselineMethod $pat\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method using $pat, ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+    
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test, values in hex digits without 0x
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -cp classes $TESTCLASS $method $n -p $passes $pat";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/ucharacterperf_r.pl b/src/com/ibm/icu/dev/test/perf/ucharacterperf_r.pl
new file mode 100755
index 0000000..9de021c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/ucharacterperf_r.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+#Assume we are running outside of the ICU4J source
+use lib 'svn-icu4j/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.UCharacterPerf'; 
+
+my $options = {
+	       "title"=>"UnicodeCharacter Property performance regression (ICU4J 3.6 and 3.8)",
+	       "headers"=>"ICU4J36 ICU4J38",
+	       "operationIs"=>"code point",
+	       "timePerOperationIs"=>"Time per code point",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       "outputType"=>"HTML",
+	       "dataDir"=>"svn-icu4j/src/com/ibm/icu/dev/test/perf/data/collation",
+	       "outputDir"=>"svn-icu4j/results_ICU4J"
+	      };
+
+# programs
+
+my $jvm1 = "java -classpath svn-icu4j/classes $TESTCLASS";
+my $jvm2 = "java -classpath svn-icu4j_3-6/classes $TESTCLASS";
+
+my $dataFiles = "";
+my $pat = '0 ffff';
+
+my $tests = { 
+	     "Digit ($pat)",                     ["$jvm1 Digit $pat"  ,                     "$jvm2 Digit $pat" ],
+	     "GetNumericValue ($pat)",           ["$jvm1 GetNumericValue $pat"  ,           "$jvm2 GetNumericValue $pat" ],
+	     "GetType ($pat)",                   ["$jvm1 GetType $pat"  ,                   "$jvm2 GetType $pat" ],
+	     "IsDefined ($pat)",                 ["$jvm1 IsDefined $pat"  ,                 "$jvm2 IsDefined $pat" ],
+	     "IsDigit ($pat)",                   ["$jvm1 IsDigit $pat"  ,                   "$jvm2 IsDigit $pat" ],
+	     "IsIdentifierIgnorable ($pat)",     ["$jvm1 IsIdentifierIgnorable $pat"  ,     "$jvm2 IsIdentifierIgnorable $pat" ],
+	     "IsISOControl ($pat)",              ["$jvm1 IsISOControl $pat"  ,              "$jvm2 IsISOControl $pat" ],
+	     "IsLetter ($pat)",                  ["$jvm1 IsLetter $pat"  ,                  "$jvm2 IsLetter $pat" ],
+	     "IsLetterOrDigit ($pat)",           ["$jvm1 IsLetterOrDigit $pat"  ,           "$jvm2 IsLetterOrDigit $pat" ],
+	     "IsLowerCase ($pat)",               ["$jvm1 IsLowerCase $pat"  ,               "$jvm2 IsLowerCase $pat" ],
+	     "IsSpaceChar ($pat)",               ["$jvm1 IsSpaceChar $pat"  ,               "$jvm2 IsSpaceChar $pat" ],
+	     "IsTitleCase ($pat)",               ["$jvm1 IsTitleCase $pat"  ,               "$jvm2 IsTitleCase $pat" ],
+	     "IsUnicodeIdentifierPart ($pat)",   ["$jvm1 IsUnicodeIdentifierPart $pat"  ,   "$jvm2 IsUnicodeIdentifierPart $pat" ],
+	     "IsUnicodeIdentifierStart ($pat)",  ["$jvm1 IsUnicodeIdentifierStart $pat"  ,  "$jvm2 IsUnicodeIdentifierStart $pat" ],
+	     "IsUpperCase ($pat)",               ["$jvm1 IsUpperCase $pat"  ,               "$jvm2 IsUpperCase $pat" ],
+	     "IsWhiteSpace ($pat)",              ["$jvm1 IsWhiteSpace $pat"  ,              "$jvm2 IsWhiteSpace $pat" ]
+	    };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/perf/unicodesetperf.pl b/src/com/ibm/icu/dev/test/perf/unicodesetperf.pl
new file mode 100755
index 0000000..276282c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/unicodesetperf.pl
@@ -0,0 +1,483 @@
+#!/usr/local/bin/perl
+# *******************************************************************************
+# * Copyright (C) 2002-2007 International Business Machines Corporation and     *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+use strict;
+
+# Assume we are running within the icu4j root directory
+use lib 'src/com/ibm/icu/dev/test/perf';
+use Dataset;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.UnicodeSetPerf';
+
+# Methods to be tested.  Each pair represents a test method and
+# a baseline method which is used for comparison.
+my @METHODS  = (
+                ['UnicodeSetAdd',      'HashSetAdd'],
+                ['UnicodeSetContains', 'HashSetContains'],
+                ['UnicodeSetIterate',  'HashSetIterate']);
+
+# Patterns which define the set of characters used for testing.
+my @PATTERNS = (
+                '[:Lt:]',
+#               '[:Cn:]'
+               );
+
+my $CALIBRATE = 2;  # duration in seconds for initial calibration
+my $DURATION  = 10; # duration in seconds for each pass
+my $NUMPASSES = 4;  # number of passes.  If > 1 then the first pass
+                    # is discarded as a JIT warm-up pass.
+
+my $TABLEATTR = 'BORDER="1" CELLPADDING="4" CELLSPACING="0"';
+
+my $PLUS_MINUS = "&plusmn;";
+
+if ($NUMPASSES < 3) {
+    die "Need at least 3 passes.  One is discarded (JIT warmup) and need two to have 1 degree of freedom (t distribution).";
+}
+
+my $OUT; # see out()
+
+main();
+
+#---------------------------------------------------------------------
+# ...
+sub main {
+    my $date = localtime;
+    my $title = "ICU4J Performance Test $date";
+
+    my $html = $date;
+    $html =~ s/://g; # ':' illegal
+    $html =~ s/\s*\d+$//; # delete year
+    $html =~ s/^\w+\s*//; # delete dow
+    $html = "perf $html.html";
+
+    open(HTML,">$html") or die "Can't write to $html: $!";
+
+    print HTML <<EOF;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+   "http://www.w3.org/TR/html4/strict.dtd">
+<HTML>
+   <HEAD>
+      <TITLE>$title</TITLE>
+   </HEAD>
+   <BODY>
+EOF
+    print HTML "<H1>$title</H1>\n";
+
+    print HTML "<H2>$TESTCLASS</H2>\n";
+
+    my $raw = "";
+
+    for my $methodPair (@METHODS) {
+
+        my $testMethod = $methodPair->[0];
+        my $baselineMethod = $methodPair->[1];
+
+        print HTML "<P><TABLE $TABLEATTR><TR><TD>\n";
+        print HTML "<P><B>$testMethod vs. $baselineMethod</B></P>\n";
+        
+        print HTML "<P><TABLE $TABLEATTR BGCOLOR=\"#CCFFFF\">\n";
+        print HTML "<TR><TD>Pattern</TD><TD>$testMethod</TD>";
+        print HTML "<TD>$baselineMethod</TD><TD>Ratio</TD></TR>\n";
+
+        $OUT = '';
+
+        for my $pat (@PATTERNS) {
+            print HTML "<TR><TD>$pat</TD>\n";
+
+            out("<P><TABLE $TABLEATTR WIDTH=\"100%\">");
+
+            # measure the test method
+            out("<TR><TD>");
+            print "\n$testMethod $pat\n";
+            my $t = measure2($testMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $t->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            # measure baseline method
+            out("<TR><TD>");
+            print "\nBegin $baselineMethod $pat\n";
+            my $b = measure2($baselineMethod, $pat, -$DURATION);
+            out("</TD></TR>");
+            print HTML "<TD>", formatSeconds(4, $b->getMean(), $t->getError);
+            print HTML "/event</TD>\n";
+
+            out("</TABLE></P>");
+
+            # output ratio
+            my $r = $t->divide($b);
+            my $mean = $r->getMean() - 1;
+            my $color = $mean < 0 ? "RED" : "BLACK";
+            print HTML "<TD><B><FONT COLOR=\"$color\">", formatPercent(3, $mean, $r->getError);
+            print HTML "</FONT></B></TD></TR>\n";
+        }
+
+        print HTML "</TABLE></P>\n";
+
+        print HTML "<P>Raw data:</P>\n";
+        print HTML $OUT;
+        print HTML "</TABLE></P>\n";
+    }
+
+    print HTML <<EOF;
+   </BODY>
+</HTML>
+EOF
+    close(HTML) or die "Can't close $html: $!";
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub out {
+    $OUT .= join('', @_);
+}
+
+#---------------------------------------------------------------------
+# Append text to the global variable $OUT
+sub outln {
+    $OUT .= join('', @_) . "\n";
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return a Dataset object, scaled by iterations per pass and
+#         events per iteration, to give time per event
+#
+sub measure2 {
+    my @data = measure1(@_);
+    my $iterPerPass = shift(@data);
+    my $eventPerIter = shift(@data);
+
+    shift(@data) if (@data > 1); # discard first run
+
+    my $ds = Dataset->new(@data);
+    $ds->setScale(1.0e-3 / ($iterPerPass * $eventPerIter));
+    $ds;
+}
+
+#---------------------------------------------------------------------
+# Measure a given test method with a give test pattern using the
+# global run parameters.
+#
+# @param the method to run
+# @param the pattern defining characters to test
+# @param if >0 then the number of iterations per pass.  If <0 then
+#        (negative of) the number of seconds per pass.
+#
+# @return array of:
+#         [0] iterations per pass
+#         [1] events per iteration
+#         [2..] ms reported for each pass, in order
+#
+sub measure1 {
+    my $method = shift;
+    my $pat = shift;
+    my $iterCount = shift; # actually might be -seconds/pass
+
+    out("<P>Measuring $method using $pat, ");
+    if ($iterCount > 0) {
+        out("$iterCount iterations/pass, $NUMPASSES passes</P>\n");
+    } else {
+        out(-$iterCount, " seconds/pass, $NUMPASSES passes</P>\n");
+    }
+
+    # is $iterCount actually -seconds/pass?
+    if ($iterCount < 0) {
+
+        # calibrate: estimate ms/iteration
+        print "Calibrating...";
+        my @t = callJava($method, $pat, -$CALIBRATE, 1);
+        print "done.\n";
+
+        my @data = split(/\s+/, $t[0]->[2]);
+        $data[0] *= 1.0e+3;
+
+        my $timePerIter = 1.0e-3 * $data[0] / $data[1];
+    
+        # determine iterations/pass
+        $iterCount = int(-$iterCount / $timePerIter + 0.5);
+
+        out("<P>Calibration pass ($CALIBRATE sec): ");
+        out("$data[0] ms, ");
+        out("$data[1] iterations = ");
+        out(formatSeconds(4, $timePerIter), "/iteration<BR>\n");
+    }
+    
+    # run passes
+    print "Measuring $iterCount iterations x $NUMPASSES passes...";
+    my @t = callJava($method, $pat, $iterCount, $NUMPASSES);
+    print "done.\n";
+    my @ms = ();
+    my @b; # scratch
+    for my $a (@t) {
+        # $a->[0]: method name, corresponds to $method
+        # $a->[1]: 'begin' data, == $iterCount
+        # $a->[2]: 'end' data, of the form <ms> <loops> <eventsPerIter>
+        # $a->[3...]: gc messages from JVM during pass
+        @b = split(/\s+/, $a->[2]);
+        push(@ms, $b[0] * 1.0e+3);
+    }
+    my $eventsPerIter = $b[2];
+
+    out("Iterations per pass: $iterCount<BR>\n");
+    out("Events per iteration: $eventsPerIter<BR>\n");
+
+    my @ms_str = @ms;
+    $ms_str[0] .= " (discarded)" if (@ms_str > 1);
+    out("Raw times (ms/pass): ", join(", ", @ms_str), "<BR>\n");
+
+    ($iterCount, $eventsPerIter, @ms);
+}
+
+#---------------------------------------------------------------------
+# Invoke java to run $TESTCLASS, passing it the given parameters.
+#
+# @param the method to run
+# @param the number of iterations, or if negative, the duration
+#        in seconds.  If more than on pass is desired, pass in
+#        a string, e.g., "100 100 100".
+# @param the pattern defining characters to test
+#
+# @return an array of results.  Each result is an array REF
+#         describing one pass.  The array REF contains:
+#         ->[0]: The method name as reported
+#         ->[1]: The params on the '= <meth> begin ...' line
+#         ->[2]: The params on the '= <meth> end ...' line
+#         ->[3..]: GC messages from the JVM, if any
+#
+sub callJava {
+    my $method = shift;
+    my $pat = shift;
+    my $n = shift;
+    my $passes = shift;
+    
+    my $n = ($n < 0) ? "-t ".(-$n) : "-i ".$n;
+    
+    my $cmd = "java -cp classes $TESTCLASS $method $n -p $passes $pat";
+    print "[$cmd]\n"; # for debugging
+    open(PIPE, "$cmd|") or die "Can't run \"$cmd\"";
+    my @out;
+    while (<PIPE>) {
+        push(@out, $_);
+    }
+    close(PIPE) or die "Java failed: \"$cmd\"";
+
+    @out = grep(!/^\#/, @out);  # filter out comments
+
+    #print "[", join("\n", @out), "]\n";
+
+    my @results;
+    my $method = '';
+    my $data = [];
+    foreach (@out) {
+        next unless (/\S/);
+
+        if (/^=\s*(\w+)\s*(\w+)\s*(.*)/) {
+            my ($m, $state, $d) = ($1, $2, $3);
+            #print "$_ => [[$m $state $data]]\n";
+            if ($state eq 'begin') {
+                die "$method was begun but not finished" if ($method);
+                $method = $m;
+                push(@$data, $d);
+                push(@$data, ''); # placeholder for end data
+            } elsif ($state eq 'end') {
+                if ($m ne $method) {
+                    die "$method end does not match: $_";
+                }
+                $data->[1] = $d; # insert end data at [1]
+                #print "#$method:", join(";",@$data), "\n";
+                unshift(@$data, $method); # add method to start
+
+                push(@results, $data);
+                $method = '';
+                $data = [];
+            } else {
+                die "Can't parse: $_";
+            }
+        }
+
+        elsif (/^\[/) {
+            if ($method) {
+                push(@$data, $_);
+            } else {
+                # ignore extraneous GC notices
+            }
+        }
+
+        else {
+            die "Can't parse: $_";
+        }
+    }
+
+    die "$method was begun but not finished" if ($method);
+
+    @results;
+}
+
+#|#---------------------------------------------------------------------
+#|# Format a confidence interval, as given by a Dataset.  Output is as
+#|# as follows:
+#|#   241.23 - 241.98 => 241.5 +/- 0.3
+#|#   241.2 - 243.8 => 242 +/- 1
+#|#   211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
+#|#   220.3 - 234.3 => 227 +/- 7
+#|#   220.3 - 300.3 => 260 +/- 40
+#|#   220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
+#|#   0.022 - 0.024 => 0.023 +/- 0.001
+#|#   0.022 - 0.032 => 0.027 +/- 0.005
+#|#   0.022 - 1.000 => 0.5 +/- 0.5
+#|# In other words, take one significant digit of the error value and
+#|# display the mean to the same precision.
+#|sub formatDataset {
+#|    my $ds = shift;
+#|    my $lower = $ds->getMean() - $ds->getError();
+#|    my $upper = $ds->getMean() + $ds->getError();
+#|    my $scale = 0;
+#|    # Find how many initial digits are the same
+#|    while ($lower < 1 ||
+#|           int($lower) == int($upper)) {
+#|        $lower *= 10;
+#|        $upper *= 10;
+#|        $scale++;
+#|    }
+#|    while ($lower >= 10 &&
+#|           int($lower) == int($upper)) {
+#|        $lower /= 10;
+#|        $upper /= 10;
+#|        $scale--;
+#|    }
+#|}
+
+#---------------------------------------------------------------------
+# Format a number, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param multiplier
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23" or "23 +/- 10".
+#
+sub formatNumber {
+    my $sigdig = shift;
+    my $mult = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    my $result = formatSigDig($sigdig, $a*$mult);
+    if (defined($delta)) {
+        my $d = formatSigDig($sigdig, $delta*$mult);
+        # restrict PRECISION of delta to that of main number
+        if ($result =~ /\.(\d+)/) {
+            # TODO make this work for values with all significant
+            # digits to the left of the decimal, e.g., 1234000.
+
+            # TODO the other thing wrong with this is that it
+            # isn't rounding the $delta properly.  Have to put
+            # this logic into formatSigDig().
+            my $x = length($1);
+            $d =~ s/\.(\d{$x})\d+/.$1/;
+        }
+        $result .= " $PLUS_MINUS " . $d;
+    }
+    $result;
+}
+
+#---------------------------------------------------------------------
+# Format a time, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param time in seconds to be formatted
+# @optional delta in seconds
+#
+# @return string of the form "23 ms" or "23 +/- 10 ms".
+#
+sub formatSeconds {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+
+    my @MULT = (1   , 1e3,  1e6,  1e9);
+    my @SUFF = ('s' , 'ms', 'us', 'ns');
+
+    # Determine our scale
+    my $i = 0;
+    ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
+    
+    formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
+}
+
+#---------------------------------------------------------------------
+# Format a percentage, optionally with a +/- delta, to n significant
+# digits.
+#
+# @param significant digit, a value >= 1
+# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
+# @optional delta, as a fraction
+#
+# @return string of the form "23 %" or "23 +/- 10 %".
+#
+sub formatPercent {
+    my $sigdig = shift;
+    my $a = shift;
+    my $delta = shift; # may be undef
+    
+    formatNumber($sigdig, 100, $a, $delta) . ' %';
+}
+
+#---------------------------------------------------------------------
+# Format a number to n significant digits without using exponential
+# notation.
+#
+# @param significant digit, a value >= 1
+# @param number to be formatted
+#
+# @return string of the form "1234" "12.34" or "0.001234".  If
+#         number was negative, prefixed by '-'.
+#
+sub formatSigDig {
+    my $n = shift() - 1;
+    my $a = shift;
+
+    local $_ = sprintf("%.${n}e", $a);
+    my $sign = (s/^-//) ? '-' : '';
+
+    my $a_e;
+    my $result;
+    if (/^(\d)\.(\d+)e([-+]\d+)$/) {
+        my ($d, $dn, $e) = ($1, $2, $3);
+        $a_e = $e;
+        $d .= $dn;
+        $e++;
+        $d .= '0' while ($e > length($d));
+        while ($e < 1) {
+            $e++;
+            $d = '0' . $d;
+        }
+        if ($e == length($d)) {
+            $result = $sign . $d;
+        } else {
+            $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
+        }
+    } else {
+        die "Can't parse $_";
+    }
+    $result;
+}
+
+#eof
diff --git a/src/com/ibm/icu/dev/test/perf/unicodesetperf_r.pl b/src/com/ibm/icu/dev/test/perf/unicodesetperf_r.pl
new file mode 100755
index 0000000..6763365
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/perf/unicodesetperf_r.pl
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2002-2007, International Business Machines
+#  * Corporation and others. All Rights Reserved.
+#  ********************************************************************
+
+use strict;
+
+#Assume we are running outside of the ICU4J source
+use lib 'svn-icu4j/src/com/ibm/icu/dev/test/perf/perldriver';
+
+use PerfFramework4j;
+
+#---------------------------------------------------------------------
+# Test class
+my $TESTCLASS = 'com.ibm.icu.dev.test.perf.UnicodeSetPerf'; 
+
+my $options = {
+	       "title"=>"Unicode Set performance regression (ICU4J 3.6 and 3.8)",
+	       "headers"=>"ICU4J36 ICU4J38",
+	       "operationIs"=>"code point",
+	       "timePerOperationIs"=>"Time per code point",
+	       "passes"=>"10",
+	       "time"=>"5",
+	       "outputType"=>"HTML",
+	       "dataDir"=>"svn-icu4j/src/com/ibm/icu/dev/test/perf/data/collation",
+	       "outputDir"=>"svn-icu4j/results_ICU4J"
+	      };
+
+# programs
+
+my $jvm1 = "java -classpath svn-icu4j_3-6/classes $TESTCLASS";
+my $jvm2 = "java -classpath svn-icu4j/classes $TESTCLASS";
+
+my $dataFiles = "";
+my $pat1 = '[:Lt:]';
+my $pat2 = '[:Cn:]';
+
+my $tests = { 
+	     "UnicodeSetAdd ($pat1)",       ["$jvm1 UnicodeSetAdd $pat1"  ,       "$jvm2 UnicodeSetAdd $pat1" ],
+	     "UnicodeSetAdd ($pat2)",       ["$jvm1 UnicodeSetAdd $pat2"  ,       "$jvm2 UnicodeSetAdd $pat2" ],
+	     "UnicodeSetContains ($pat1)",  ["$jvm1 UnicodeSetContains $pat1"  ,  "$jvm2 UnicodeSetContains $pat1" ],
+	     "UnicodeSetContains ($pat2)",  ["$jvm1 UnicodeSetContains $pat2"  ,  "$jvm2 UnicodeSetContains $pat2" ],
+	     "UnicodeSetIterate ($pat1)",   ["$jvm1 UnicodeSetIterate $pat1"  ,   "$jvm2 UnicodeSetIterate $pat1" ],
+	     "UnicodeSetIterate ($pat2)",   ["$jvm1 UnicodeSetIterate $pat2"  ,   "$jvm2 UnicodeSetIterate $pat2" ],
+	     ##
+	     "HashSetAdd ($pat1)",          ["$jvm1 HashSetAdd $pat1"  ,          "$jvm2 HashSetAdd $pat1" ],
+	     "HashSetAdd ($pat2)",          ["$jvm1 HashSetAdd $pat2"  ,          "$jvm2 HashSetAdd $pat2" ],
+	     "HashSetContains ($pat1)",     ["$jvm1 HashSetContains $pat1"  ,     "$jvm2 HashSetContains $pat1" ],
+	     "HashSetContains ($pat2)",     ["$jvm1 HashSetContains $pat2"  ,     "$jvm2 HashSetContains $pat2" ],
+	     "HashSetIterate ($pat1)",      ["$jvm1 HashSetIterate $pat1"  ,      "$jvm2 HashSetIterate $pat1" ],
+	     "HashSetIterate ($pat2)",      ["$jvm1 HashSetIterate $pat2"  ,      "$jvm2 HashSetIterate $pat2" ]
+	    };
+
+
+runTests($options, $tests, $dataFiles);
+
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
new file mode 100644
index 0000000..a30b2b5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.BreakIterator;
+import java.text.CharacterIterator;
+import java.util.Arrays;
+import java.util.Locale;
+
+public class BreakIteratorRegTest extends TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorRegTest().run(args);
+    }
+
+    public void TestRegUnreg() {
+    Locale thailand_locale = new Locale("th", "TH", "");
+    Locale foo_locale = new Locale("fu", "FU", "FOO");
+    BreakIterator jwbi = BreakIterator.getWordInstance(Locale.JAPAN);
+    BreakIterator uwbi = BreakIterator.getWordInstance(Locale.US);
+    BreakIterator usbi = BreakIterator.getSentenceInstance(Locale.US);
+    BreakIterator twbi = BreakIterator.getWordInstance(thailand_locale);
+    BreakIterator rwbi = BreakIterator.getWordInstance(new Locale("", "", ""));
+
+    BreakIterator sbi = (BreakIterator)usbi.clone();
+    // todo: this will cause the test to fail, no way to set a breakiterator to null text so can't fix yet.
+    // String text = "This is some test, by golly. Boy, they don't make tests like they used to, do they?  This here test ain't worth $2.50.  Nope.";
+    // sbi.setText(text);
+
+    assertTrue(!BreakIterator.unregister(""), "unregister before register"); // coverage
+
+    Object key0 = BreakIterator.registerInstance((BreakIterator)twbi.clone(), foo_locale, BreakIterator.KIND_WORD);
+    Object key1 = BreakIterator.registerInstance(sbi, Locale.US, BreakIterator.KIND_WORD);
+    Object key2 = BreakIterator.registerInstance((BreakIterator)twbi.clone(), Locale.US, BreakIterator.KIND_WORD);
+    
+    {
+        BreakIterator test0 = BreakIterator.getWordInstance(Locale.JAPAN);
+        BreakIterator test1 = BreakIterator.getWordInstance(Locale.US);
+        BreakIterator test2 = BreakIterator.getSentenceInstance(Locale.US);
+        BreakIterator test3 = BreakIterator.getWordInstance(thailand_locale);
+        BreakIterator test4 = BreakIterator.getWordInstance(foo_locale);
+
+        assertEqual(test0, jwbi, "japan word == japan word");
+        assertEqual(test1, twbi, "us word == thai word");
+        assertEqual(test2, usbi, "us sentence == us sentence");
+        assertEqual(test3, twbi, "thai word == thai word");
+        assertEqual(test4, twbi, "foo word == thai word");
+    }
+
+    //Locale[] locales = BreakIterator.getAvailableLocales();
+    
+    assertTrue(BreakIterator.unregister(key2), "unregister us word (thai word)");
+    assertTrue(!BreakIterator.unregister(key2), "unregister second time");
+    boolean error = false;
+    try {
+        BreakIterator.unregister(null);
+    }
+    catch (IllegalArgumentException e) {
+        error = true;
+    }
+
+    assertTrue(error, "unregister null");
+
+    {
+        CharacterIterator sci = BreakIterator.getWordInstance(Locale.US).getText();
+        int len = sci.getEndIndex() - sci.getBeginIndex();
+        assertEqual(len, 0, "us word text: " + getString(sci));
+    }
+
+    assertTrue(Arrays.asList(BreakIterator.getAvailableLocales()).contains(foo_locale), "foo_locale");
+    assertTrue(BreakIterator.unregister(key0), "unregister foo word (thai word)");
+    assertTrue(!Arrays.asList(BreakIterator.getAvailableLocales()).contains(foo_locale), "no foo_locale");
+    assertEqual(BreakIterator.getWordInstance(Locale.US), usbi, "us word == us sentence");
+    
+    assertTrue(BreakIterator.unregister(key1), "unregister us word (us sentence)");
+    {
+        BreakIterator test0 = BreakIterator.getWordInstance(Locale.JAPAN);
+        BreakIterator test1 = BreakIterator.getWordInstance(Locale.US);
+        BreakIterator test2 = BreakIterator.getSentenceInstance(Locale.US);
+        BreakIterator test3 = BreakIterator.getWordInstance(thailand_locale);
+        BreakIterator test4 = BreakIterator.getWordInstance(foo_locale);
+
+        assertEqual(test0, jwbi, "japanese word break");
+        assertEqual(test1, uwbi, "us sentence-word break");
+        assertEqual(test2, usbi, "us sentence break");
+        assertEqual(test3, twbi, "thai word break");
+        assertEqual(test4, rwbi, "root word break");
+
+        CharacterIterator sci = test1.getText();
+        int len = sci.getEndIndex() - sci.getBeginIndex();
+        assertEqual(len, 0, "us sentence-word break text: " + getString(sci));
+    }
+    }
+
+    private void assertEqual(Object lhs, Object rhs, String msg) {
+    msg(msg, lhs.equals(rhs) ? LOG : ERR, true, true);
+    }
+
+    private void assertEqual(int lhs, int rhs, String msg) {
+    msg(msg, lhs == rhs ? LOG : ERR, true, true);
+    }
+
+    private void assertTrue(boolean arg, String msg) {
+    msg(msg, arg ? LOG : ERR, true, true);
+    }
+
+    private static String getString(CharacterIterator ci) {
+    StringBuffer buf = new StringBuffer(ci.getEndIndex() - ci.getBeginIndex() + 2);
+    buf.append("'");
+    for (char c = ci.first(); c != CharacterIterator.DONE; c = ci.next()) {
+        buf.append(c);
+    }
+    buf.append("'");
+    return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
new file mode 100644
index 0000000..2d353a4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
@@ -0,0 +1,219 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import java.util.ListResourceBundle;
+
+/**
+ * This resource bundle is included for testing and demonstration purposes only.
+ * It applies the dictionary-based algorithm to English text that has had all the
+ * spaces removed.  Once we have good test cases for Thai, we will replace this
+ * with good resource data (and a good dictionary file) for Thai
+ */
+public class BreakIteratorRules_en_US_TEST extends ListResourceBundle {
+    private static final String DATA_NAME = "/com/ibm/icu/dev/data/rbbi/english.dict";
+
+    // calling code will handle case where dictionary does not exist
+
+    public Object[][] getContents() {
+        return new Object[][] {
+            // names of classes to instantiate for the different kinds of break
+            // iterator.  Notice we're now using DictionaryBasedBreakIterator
+            // for word and line breaking.
+            {   "BreakIteratorClasses",
+                new String[] {
+                    "RuleBasedBreakIterator",
+                    // character-break iterator class
+                    "DictionaryBasedBreakIterator",
+                    // word-break iterator class
+                    "DictionaryBasedBreakIterator",
+                    // line-break iterator class
+                    "RuleBasedBreakIterator" } // sentence-break iterator class
+            },
+
+            // These are the same word-breaking rules as are specified in the default
+            // resource, except that the Latin letters, apostrophe, and hyphen are
+            // specified as dictionary characters
+            {
+                "WordBreakRules",
+                // ignore non-spacing marks, enclosing marks, and format characters,
+                // all of which should not influence the algorithm
+                "$_ignore_=[[:Mn:][:Me:][:Cf:]];"
+
+                // lower and upper case Roman letters, apostrophy and dash are
+                // in the English dictionary
+                +"$_dictionary_=[a-zA-Z\\'\\-];"
+
+                // Hindi phrase separator, kanji, katakana, hiragana, CJK diacriticals,
+                // other letters, and digits
+                +"$danda=[\u0964\u0965];"
+                    + "$kanji=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+                    + "$kata=[\u3099-\u309c\u30a1-\u30fe];"
+                    + "$hira=[\u3041-\u309e\u30fc];"
+                    + "$let=[[[:L:][:Mc:]]-[$kanji$kata$hira]];"
+                    + "$dgt=[:N:];"
+
+                // punctuation that can occur in the middle of a word: currently
+                // dashes, apostrophes, and quotation marks
+                +"$mid_word=[[:Pd:]\u00ad\u2027\\\"\\\'];"
+
+                // punctuation that can occur in the middle of a number: currently
+                // apostrophes, qoutation marks, periods, commas, and the Arabic
+                // decimal point
+                +"$mid_num=[\\\"\\\'\\,\u066b\\.];"
+
+                // punctuation that can occur at the beginning of a number: currently
+                // the period, the number sign, and all currency symbols except the cents sign
+                +"$pre_num=[[[:Sc:]-[\u00a2]]\\#\\.];"
+
+                // punctuation that can occur at the end of a number: currently
+                // the percent, per-thousand, per-ten-thousand, and Arabic percent
+                // signs, the cents sign, and the ampersand
+                +"$post_num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+
+                // line separators: currently LF, FF, PS, and LS
+                +"$ls=[\n\u000c\u2028\u2029];"
+
+                // whitespace: all space separators and the tab character
+                +"$ws=[[:Zs:]\t];"
+
+                // a word is a sequence of letters that may contain internal
+                // punctuation, as long as it begins and ends with a letter and
+                // never contains two punctuation marks in a row
+                +"$word=($let+($mid_word$let+)*$danda?);"
+
+                // a number is a sequence of digits that may contain internal
+                // punctuation, as long as it begins and ends with a digit and
+                // never contains two punctuation marks in a row.
+                +"$number=($dgt+($mid_num$dgt+)*);"
+
+                // break after every character, with the following exceptions
+                // (this will cause punctuation marks that aren't considered
+                // part of words or numbers to be treated as words unto themselves)
+                +".;"
+
+                // keep together any sequence of contiguous words and numbers
+                // (including just one of either), plus an optional trailing
+                // number-suffix character
+                +"$word?($number$word)*($number$post_num?)?;"
+
+                // keep together and sequence of contiguous words and numbers
+                // that starts with a number-prefix character and a number,
+                // and may end with a number-suffix character
+                +"$pre_num($number$word)*($number$post_num?)?;"
+
+                // keep together runs of whitespace (optionally with a single trailing
+                // line separator or CRLF sequence)
+                +"$ws*\r?$ls?;"
+
+                // keep together runs of Katakana
+                +"$kata*;"
+
+                // keep together runs of Hiragana
+                +"$hira*;"
+
+                // keep together runs of Kanji
+                +"$kanji*;" },
+
+            // These are the same line-breaking rules as are specified in the default
+            // resource, except that the Latin letters, apostrophe, and hyphen are
+            // specified as dictionary characters
+            {   "LineBreakRules",
+                // ignore non-spacing marks, enclosing marks, and format characters
+                "$_ignore_=[[:Mn:][:Me:][:Cf:]];"
+
+                // lower and upper case Roman letters, apostrophy and dash
+                // are in the English dictionary
+                +"$_dictionary_=[a-zA-Z\\'\\-];"
+
+                // Hindi phrase separators
+                +"$danda=[\u0964\u0965];"
+
+                // characters that always cause a break: ETX, tab, LF, FF, LS, and PS
+                +"$break=[\u0003\t\n\f\u2028\u2029];"
+
+                // characters that always prevent a break: the non-breaking space
+                // and similar characters
+                +"$nbsp=[\u00a0\u2007\u2011\ufeff];"
+
+                // whitespace: space separators and control characters, except for
+                // CR and the other characters mentioned above
+                +"$space=[[[:Zs:][:Cc:]]-[$nbsp$break\r]];"
+
+                // dashes: dash punctuation and the discretionary hyphen, except for
+                // non-breaking hyphens
+                +"$dash=[[[:Pd:]\u00ad]-[$nbsp]];"
+
+                // characters that stick to a word if they precede it: currency symbols
+                // (except the cents sign) and starting punctuation
+                +"$pre_word=[[[:Sc:]-[\u00a2]][:Ps:]\\\"\\\'];"
+
+                // characters that stick to a word if they follow it: ending punctuation,
+                // other punctuation that usually occurs at the end of a sentence,
+                // small Kana characters, some CJK diacritics, etc.
+                +"$post_word=[[:Pe:]\\!\\\"\\\'\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034"
+                    + "\u2103\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                    + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                    + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0c"
+                    + "\uff0e\uff1f];"
+
+                // Kanji: actually includes both Kanji and Kana, except for small Kana and
+                // CJK diacritics
+                +"$kanji=[[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa]-[$post_word$_ignore_]];"
+
+                // digits
+                +"$digit=[[:Nd:][:No:]];"
+
+                // punctuation that can occur in the middle of a number: periods and commas
+                +"$mid_num=[\\.\\,];"
+
+                // everything not mentioned above, plus the quote marks (which are both
+                // <pre-word>, <post-word>, and <char>)
+                +"$char=[^$break$space$dash$kanji$nbsp$_ignore_$pre_word$post_word$mid_num$danda\r\\\"\\\'];"
+
+                // a "number" is a run of prefix characters and dashes, followed by one or
+                // more digits with isolated number-punctuation characters interspersed
+                +"$number=([$pre_word$dash]*$digit+($mid_num$digit+)*);"
+
+                // the basic core of a word can be either a "number" as defined above, a single
+                // "Kanji" character, or a run of any number of not-explicitly-mentioned
+                // characters (this includes Latin letters)
+                +"$word_core=([$pre_word$char]*|$kanji|$number);"
+
+                // a word may end with an optional suffix that be either a run of one or
+                // more dashes or a run of word-suffix characters, followed by an optional
+                // run of whitespace
+                +"$word_suffix=(($dash+|$post_word*)$space*);"
+
+                // a word, thus, is an optional run of word-prefix characters, followed by
+                // a word core and a word suffix (the syntax of <word-core> and <word-suffix>
+                // actually allows either of them to match the empty string, putting a break
+                // between things like ")(" or "aaa(aaa"
+                +"$word=($pre_word*$word_core$word_suffix);"
+
+                // finally, the rule that does the work: Keep together any run of words that
+                // are joined by runs of one of more non-spacing mark.  Also keep a trailing
+                // line-break character or CRLF combination with the word.  (line separators
+                // "win" over nbsp's)
+                +"$word($nbsp+$word)*\r?$break?;" },
+
+            // these two resources specify the pathnames of the dictionary files to
+            // use for word breaking and line breaking.  Both currently refer to
+            // a file called english.dict placed in com.ibm.icu.impl.data
+            // somewhere in the class path.  It's important to note that
+            // english.dict was created for testing purposes only, and doesn't
+            // come anywhere close to being an exhaustive dictionary of English
+            // words (basically, it contains all the words in the Declaration of
+            // Independence, and the Revised Standard Version of the book of Genesis,
+            // plus a few other words thrown in to show more interesting cases).
+            // { "WordBreakDictionary", "com\\ibm\\text\\resources\\english.dict" },
+            // { "LineBreakDictionary", "com\\ibm\\text\\resources\\english.dict" }
+            {   "WordBreakDictionary", DATA_NAME }, 
+            {   "LineBreakDictionary", DATA_NAME }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
new file mode 100644
index 0000000..8bd628e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
@@ -0,0 +1,846 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.BreakIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+import java.util.Vector;
+
+public class BreakIteratorTest extends TestFmwk
+{
+    private BreakIterator characterBreak;
+    private BreakIterator wordBreak;
+    private BreakIterator lineBreak;
+    private BreakIterator sentenceBreak;
+    private BreakIterator titleBreak;
+
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorTest().run(args);
+    }
+
+    public BreakIteratorTest()
+    {
+
+    }
+    protected void init(){
+        characterBreak = BreakIterator.getCharacterInstance();
+        wordBreak = BreakIterator.getWordInstance();
+        lineBreak = BreakIterator.getLineInstance();
+        //logln("Creating sentence iterator...");
+        sentenceBreak = BreakIterator.getSentenceInstance();
+        //logln("Finished creating sentence iterator...");
+        titleBreak = BreakIterator.getTitleInstance();
+    }
+    //=========================================================================
+    // general test subroutines
+    //=========================================================================
+
+    private void generalIteratorTest(BreakIterator bi, Vector expectedResult) {
+        StringBuffer buffer = new StringBuffer();
+        String text;
+        for (int i = 0; i < expectedResult.size(); i++) {
+            text = (String)expectedResult.elementAt(i);
+            buffer.append(text);
+        }
+        text = buffer.toString();
+
+        bi.setText(text);
+
+        Vector nextResults = _testFirstAndNext(bi, text);
+        Vector previousResults = _testLastAndPrevious(bi, text);
+
+        logln("comparing forward and backward...");
+        int errs = getErrorCount();
+        compareFragmentLists("forward iteration", "backward iteration", nextResults,
+                        previousResults);
+        if (getErrorCount() == errs) {
+            logln("comparing expected and actual...");
+            compareFragmentLists("expected result", "actual result", expectedResult,
+                            nextResults);
+        }
+
+        int[] boundaries = new int[expectedResult.size() + 3];
+        boundaries[0] = BreakIterator.DONE;
+        boundaries[1] = 0;
+        for (int i = 0; i < expectedResult.size(); i++)
+            boundaries[i + 2] = boundaries[i + 1] + ((String)expectedResult.elementAt(i)).
+                            length();
+        boundaries[boundaries.length - 1] = BreakIterator.DONE;
+
+        _testFollowing(bi, text, boundaries);
+        _testPreceding(bi, text, boundaries);
+        _testIsBoundary(bi, text, boundaries);
+
+        doMultipleSelectionTest(bi, text);
+    }
+
+    private Vector _testFirstAndNext(BreakIterator bi, String text) {
+        int p = bi.first();
+        int lastP = p;
+        Vector result = new Vector();
+
+        if (p != 0)
+            errln("first() returned " + p + " instead of 0");
+        while (p != BreakIterator.DONE) {
+            p = bi.next();
+            if (p != BreakIterator.DONE) {
+                if (p <= lastP)
+                    errln("next() failed to move forward: next() on position "
+                                    + lastP + " yielded " + p);
+
+                result.addElement(text.substring(lastP, p));
+            }
+            else {
+                if (lastP != text.length())
+                    errln("next() returned DONE prematurely: offset was "
+                                    + lastP + " instead of " + text.length());
+            }
+            lastP = p;
+        }
+        return result;
+    }
+
+    private Vector _testLastAndPrevious(BreakIterator bi, String text) {
+        int p = bi.last();
+        int lastP = p;
+        Vector result = new Vector();
+
+        if (p != text.length())
+            errln("last() returned " + p + " instead of " + text.length());
+        while (p != BreakIterator.DONE) {
+            p = bi.previous();
+            if (p != BreakIterator.DONE) {
+                if (p >= lastP)
+                    errln("previous() failed to move backward: previous() on position "
+                                    + lastP + " yielded " + p);
+
+                result.insertElementAt(text.substring(p, lastP), 0);
+            }
+            else {
+                if (lastP != 0)
+                    errln("previous() returned DONE prematurely: offset was "
+                                    + lastP + " instead of 0");
+            }
+            lastP = p;
+        }
+        return result;
+    }
+
+    private void compareFragmentLists(String f1Name, String f2Name, Vector f1, Vector f2) {
+        int p1 = 0;
+        int p2 = 0;
+        String s1;
+        String s2;
+        int t1 = 0;
+        int t2 = 0;
+
+        while (p1 < f1.size() && p2 < f2.size()) {
+            s1 = (String)f1.elementAt(p1);
+            s2 = (String)f2.elementAt(p2);
+            t1 += s1.length();
+            t2 += s2.length();
+
+            if (s1.equals(s2)) {
+                debugLogln("   >" + s1 + "<");
+                ++p1;
+                ++p2;
+            }
+            else {
+                int tempT1 = t1;
+                int tempT2 = t2;
+                int tempP1 = p1;
+                int tempP2 = p2;
+
+                while (tempT1 != tempT2 && tempP1 < f1.size() && tempP2 < f2.size()) {
+                    while (tempT1 < tempT2 && tempP1 < f1.size()) {
+                        tempT1 += ((String)f1.elementAt(tempP1)).length();
+                        ++tempP1;
+                    }
+                    while (tempT2 < tempT1 && tempP2 < f2.size()) {
+                        tempT2 += ((String)f2.elementAt(tempP2)).length();
+                        ++tempP2;
+                    }
+                }
+                logln("*** " + f1Name + " has:");
+                while (p1 <= tempP1 && p1 < f1.size()) {
+                    s1 = (String)f1.elementAt(p1);
+                    t1 += s1.length();
+                    debugLogln(" *** >" + s1 + "<");
+                    ++p1;
+                }
+                logln("***** " + f2Name + " has:");
+                while (p2 <= tempP2 && p2 < f2.size()) {
+                    s2 = (String)f2.elementAt(p2);
+                    t2 += s2.length();
+                    debugLogln(" ***** >" + s2 + "<");
+                    ++p2;
+                }
+                errln("Discrepancy between " + f1Name + " and " + f2Name);
+            }
+        }
+    }
+
+    private void _testFollowing(BreakIterator bi, String text, int[] boundaries) {
+        logln("testFollowing():");
+        int p = 2;
+        for (int i = 0; i <= text.length(); i++) {
+            if (i == boundaries[p])
+                ++p;
+
+            int b = bi.following(i);
+            logln("bi.following(" + i + ") -> " + b);
+            if (b != boundaries[p])
+                errln("Wrong result from following() for " + i + ": expected " + boundaries[p]
+                                + ", got " + b);
+        }
+    }
+
+    private void _testPreceding(BreakIterator bi, String text, int[] boundaries) {
+        logln("testPreceding():");
+        int p = 0;
+        for (int i = 0; i <= text.length(); i++) {
+            int b = bi.preceding(i);
+            logln("bi.preceding(" + i + ") -> " + b);
+            if (b != boundaries[p])
+                errln("Wrong result from preceding() for " + i + ": expected " + boundaries[p]
+                                + ", got " + b);
+
+            if (i == boundaries[p + 1])
+                ++p;
+        }
+    }
+
+    private void _testIsBoundary(BreakIterator bi, String text, int[] boundaries) {
+        logln("testIsBoundary():");
+        int p = 1;
+        boolean isB;
+        for (int i = 0; i <= text.length(); i++) {
+            isB = bi.isBoundary(i);
+            logln("bi.isBoundary(" + i + ") -> " + isB);
+
+            if (i == boundaries[p]) {
+                if (!isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+                ++p;
+            }
+            else {
+                if (isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+            }
+        }
+    }
+
+    private void doMultipleSelectionTest(BreakIterator iterator, String testText)
+    {
+        logln("Multiple selection test...");
+        BreakIterator testIterator = (BreakIterator)iterator.clone();
+        int offset = iterator.first();
+        int testOffset;
+        int count = 0;
+
+        do {
+            testOffset = testIterator.first();
+            testOffset = testIterator.next(count);
+            logln("next(" + count + ") -> " + testOffset);
+            if (offset != testOffset)
+                errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+            if (offset != BreakIterator.DONE) {
+                count++;
+                offset = iterator.next();
+            }
+        } while (offset != BreakIterator.DONE);
+
+        // now do it backwards...
+        offset = iterator.last();
+        count = 0;
+
+        do {
+            testOffset = testIterator.last();
+            testOffset = testIterator.next(count);
+            logln("next(" + count + ") -> " + testOffset);
+            if (offset != testOffset)
+                errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+            if (offset != BreakIterator.DONE) {
+                count--;
+                offset = iterator.previous();
+            }
+        } while (offset != BreakIterator.DONE);
+    }
+
+
+    private void doOtherInvariantTest(BreakIterator tb, String testChars)
+    {
+        StringBuffer work = new StringBuffer("a\r\na");
+        int errorCount = 0;
+
+        // a break should never occur between CR and LF
+        for (int i = 0; i < testChars.length(); i++) {
+            work.setCharAt(0, testChars.charAt(i));
+            for (int j = 0; j < testChars.length(); j++) {
+                work.setCharAt(3, testChars.charAt(j));
+                tb.setText(work.toString());
+                for (int k = tb.first(); k != BreakIterator.DONE; k = tb.next())
+                    if (k == 2) {
+                        errln("Break between CR and LF in string U+" + Integer.toHexString(
+                                (int)(work.charAt(0))) + ", U+d U+a U+" + Integer.toHexString(
+                                (int)(work.charAt(3))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+            }
+        }
+
+        // a break should never occur before a non-spacing mark, unless it's preceded
+        // by a line terminator
+        work.setLength(0);
+        work.append("aaaa");
+        for (int i = 0; i < testChars.length(); i++) {
+            char c = testChars.charAt(i);
+            if (c == '\n' || c == '\r' || c == '\u2029' || c == '\u2028' || c == '\u0003')
+                continue;
+            work.setCharAt(1, c);
+            for (int j = 0; j < testChars.length(); j++) {
+                c = testChars.charAt(j);
+                if (Character.getType(c) != Character.NON_SPACING_MARK && Character.getType(c)
+                        != Character.ENCLOSING_MARK)
+                    continue;
+                work.setCharAt(2, c);
+                tb.setText(work.toString());
+                for (int k = tb.first(); k != BreakIterator.DONE; k = tb.next())
+                    if (k == 2) {
+                        errln("Break between U+" + Integer.toHexString((int)(work.charAt(1)))
+                                + " and U+" + Integer.toHexString((int)(work.charAt(2))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+            }
+        }
+    }
+
+    public void debugLogln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        logln(out.toString());
+    }
+
+    //=========================================================================
+    // tests
+    //=========================================================================
+
+
+    /**
+     * @bug 4097779
+     */
+    public void TestBug4097779() {
+        Vector wordSelectionData = new Vector();
+
+        wordSelectionData.addElement("aa\u0300a");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Words() {
+        Vector wordSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        wordSelectionData.addElement("\uc0c1\ud56d");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\ud55c\uc778");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\uc5f0\ud569");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\uc7a5\ub85c\uad50\ud68c");
+        wordSelectionData.addElement(" ");
+        // conjoining jamo...
+        wordSelectionData.addElement("\u1109\u1161\u11bc\u1112\u1161\u11bc");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u1112\u1161\u11ab\u110b\u1175\u11ab");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u110b\u1167\u11ab\u1112\u1161\u11b8");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+
+    /**
+     * @bug 4111338
+     */
+    public void TestBug4111338() {
+        Vector sentenceSelectionData = new Vector();
+
+        // test for bug #4111338: Don't break sentences at the boundary between CJK
+        // and other letters
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165:\"JAVA\u821c"
+                + "\u8165\u7fc8\u51ce\u306d,\u2494\u56d8\u4ec0\u60b1\u8560\u51ba"
+                + "\u611d\u57b6\u2510\u5d46\".\u2029");
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8"
+                + "\u97e4JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0"
+                + "\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4"
+                + "\u6470\u8790JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8"
+                + "\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+        sentenceSelectionData.addElement("He said, \"I can go there.\"\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+
+    /**
+     * @bug 4143071
+     */
+    public void TestBug4143071() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentences that end with digits work right
+        sentenceSelectionData.addElement("Today is the 27th of May, 1998.  ");
+        sentenceSelectionData.addElement("Tomorrow will be 28 May 1998.  ");
+        sentenceSelectionData.addElement("The day after will be the 30th.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4152416
+     */
+    public void TestBug4152416() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentences ending with a capital letter are treated correctly
+        sentenceSelectionData.addElement("The type of all primitive "
+                + "<code>boolean</code> values accessed in the target VM.  ");
+        sentenceSelectionData.addElement("Calls to xxx will return an "
+                + "implementor of this interface.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4152117
+     */
+    public void TestBug4152117() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentence breaking is handling punctuation correctly
+        // [COULD NOT REPRODUCE THIS BUG, BUT TEST IS HERE TO MAKE SURE
+        // IT DOESN'T CROP UP]
+        sentenceSelectionData.addElement("Constructs a randomly generated "
+                + "BigInteger, uniformly distributed over the range <tt>0</tt> "
+                + "to <tt>(2<sup>numBits</sup> - 1)</tt>, inclusive.  ");
+        sentenceSelectionData.addElement("The uniformity of the distribution "
+                + "assumes that a fair source of random bits is provided in "
+                + "<tt>rnd</tt>.  ");
+        sentenceSelectionData.addElement("Note that this constructor always "
+                + "constructs a non-negative BigInteger.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    public void TestLineBreak() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("Multi-");
+        lineSelectionData.addElement("Level ");
+        lineSelectionData.addElement("example ");
+        lineSelectionData.addElement("of ");
+        lineSelectionData.addElement("a ");
+        lineSelectionData.addElement("semi-");
+        lineSelectionData.addElement("idiotic ");
+        lineSelectionData.addElement("non-");
+        lineSelectionData.addElement("sensical ");
+        lineSelectionData.addElement("(non-");
+        lineSelectionData.addElement("important) ");
+        lineSelectionData.addElement("sentence. ");
+
+        lineSelectionData.addElement("Hi  ");
+        lineSelectionData.addElement("Hello ");
+        lineSelectionData.addElement("How\n");
+        lineSelectionData.addElement("are\r");
+        lineSelectionData.addElement("you\u2028");
+        lineSelectionData.addElement("fine.\t");
+        lineSelectionData.addElement("good.  ");
+
+        lineSelectionData.addElement("Now\r");
+        lineSelectionData.addElement("is\n");
+        lineSelectionData.addElement("the\r\n");
+        lineSelectionData.addElement("time\n");
+        lineSelectionData.addElement("\r");
+        lineSelectionData.addElement("for\r");
+        lineSelectionData.addElement("\r");
+        lineSelectionData.addElement("all");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4068133
+     */
+    public void TestBug4068133() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("\u96f6");
+        lineSelectionData.addElement("\u4e00\u3002");
+        lineSelectionData.addElement("\u4e8c\u3001");
+        lineSelectionData.addElement("\u4e09\u3002\u3001");
+        lineSelectionData.addElement("\u56db\u3001\u3002\u3001");
+        lineSelectionData.addElement("\u4e94,");
+        lineSelectionData.addElement("\u516d.");
+        lineSelectionData.addElement("\u4e03.\u3001,\u3002");
+        lineSelectionData.addElement("\u516b");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4086052
+     */
+    public void TestBug4086052() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("foo\u00a0bar ");
+//        lineSelectionData.addElement("foo\ufeffbar");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4097920
+     */
+    public void TestBug4097920() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("dog,cat,mouse ");
+        lineSelectionData.addElement("(one)");
+        lineSelectionData.addElement("(two)\n");
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+ 
+
+    /**
+     * @bug 4117554
+     */
+    public void TestBug4117554Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // Fullwidth .!? should be treated as postJwrd
+        lineSelectionData.addElement("\u4e01\uff0e");
+        lineSelectionData.addElement("\u4e02\uff01");
+        lineSelectionData.addElement("\u4e03\uff1f");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    public void TestLettersAndDigits() {
+        // a character sequence such as "X11" or "30F3" or "native2ascii" should
+        // be kept together as a single word
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("X11 ");
+        lineSelectionData.addElement("30F3 ");
+        lineSelectionData.addElement("native2ascii");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+
+    private static final String graveS = "S\u0300";
+    private static final String acuteBelowI = "i\u0317";
+    private static final String acuteE = "e\u0301";
+    private static final String circumflexA = "a\u0302";
+    private static final String tildeE = "e\u0303";
+
+    public void TestCharacterBreak() {
+        Vector characterSelectionData = new Vector();
+
+        characterSelectionData.addElement(graveS);
+        characterSelectionData.addElement(acuteBelowI);
+        characterSelectionData.addElement("m");
+        characterSelectionData.addElement("p");
+        characterSelectionData.addElement("l");
+        characterSelectionData.addElement(acuteE);
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("s");
+        characterSelectionData.addElement(circumflexA);
+        characterSelectionData.addElement("m");
+        characterSelectionData.addElement("p");
+        characterSelectionData.addElement("l");
+        characterSelectionData.addElement(tildeE);
+        characterSelectionData.addElement(".");
+        characterSelectionData.addElement("w");
+        characterSelectionData.addElement(circumflexA);
+        characterSelectionData.addElement("w");
+        characterSelectionData.addElement("a");
+        characterSelectionData.addElement("f");
+        characterSelectionData.addElement("q");
+        characterSelectionData.addElement("\n");
+        characterSelectionData.addElement("\r");
+        characterSelectionData.addElement("\r\n");
+        characterSelectionData.addElement("\n");
+
+        generalIteratorTest(characterBreak, characterSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Characters() {
+        Vector characterSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        characterSelectionData.addElement("\uc0c1");
+        characterSelectionData.addElement("\ud56d");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\ud55c");
+        characterSelectionData.addElement("\uc778");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\uc5f0");
+        characterSelectionData.addElement("\ud569");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\uc7a5");
+        characterSelectionData.addElement("\ub85c");
+        characterSelectionData.addElement("\uad50");
+        characterSelectionData.addElement("\ud68c");
+        characterSelectionData.addElement(" ");
+        // conjoining jamo...
+        characterSelectionData.addElement("\u1109\u1161\u11bc");
+        characterSelectionData.addElement("\u1112\u1161\u11bc");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u1112\u1161\u11ab");
+        characterSelectionData.addElement("\u110b\u1175\u11ab");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u110b\u1167\u11ab");
+        characterSelectionData.addElement("\u1112\u1161\u11b8");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u110c\u1161\u11bc");
+        characterSelectionData.addElement("\u1105\u1169");
+        characterSelectionData.addElement("\u1100\u116d");
+        characterSelectionData.addElement("\u1112\u116c");
+
+        generalIteratorTest(characterBreak, characterSelectionData);
+    }
+
+    public void TestTitleBreak()
+    {
+        Vector titleData = new Vector();
+        titleData.addElement("   ");
+        titleData.addElement("This ");
+        titleData.addElement("is ");
+        titleData.addElement("a ");
+        titleData.addElement("simple ");
+        titleData.addElement("sample ");
+        titleData.addElement("sentence. ");
+        titleData.addElement("This ");
+
+        generalIteratorTest(titleBreak, titleData);
+    }
+
+
+
+    /*
+     * @bug 4153072
+     */
+    public void TestBug4153072() {
+        BreakIterator iter = BreakIterator.getWordInstance();
+        String str = "...Hello, World!...";
+        int begin = 3;
+        int end = str.length() - 3;
+        // not used boolean gotException = false;
+ 
+
+        iter.setText(new StringCharacterIterator(str, begin, end, begin));
+        for (int index = -1; index < begin + 1; ++index) {
+            try {
+                iter.isBoundary(index);
+                if (index < begin)
+                    errln("Didn't get exception with offset = " + index +
+                                    " and begin index = " + begin);
+            }
+            catch (IllegalArgumentException e) {
+                if (index >= begin)
+                    errln("Got exception with offset = " + index +
+                                    " and begin index = " + begin);
+            }
+        }
+    }
+
+
+    public void TestBug4146175Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // the fullwidth comma should stick to the preceding Japanese character
+        lineSelectionData.addElement("\u7d42\uff0c");
+        lineSelectionData.addElement("\u308f");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    private static final String cannedTestChars
+        = "\u0000\u0001\u0002\u0003\u0004 !\"#$%&()+-01234<=>ABCDE[]^_`abcde{}|\u00a0\u00a2"
+        + "\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00ab\u00ad\u00ae\u00af\u00b0\u00b2\u00b3"
+        + "\u00b4\u00b9\u00bb\u00bc\u00bd\u02b0\u02b1\u02b2\u02b3\u02b4\u0300\u0301\u0302\u0303"
+        + "\u0304\u05d0\u05d1\u05d2\u05d3\u05d4\u0903\u093e\u093f\u0940\u0949\u0f3a\u0f3b\u2000"
+        + "\u2001\u2002\u200c\u200d\u200e\u200f\u2010\u2011\u2012\u2028\u2029\u202a\u203e\u203f"
+        + "\u2040\u20dd\u20de\u20df\u20e0\u2160\u2161\u2162\u2163\u2164";
+
+    public void TestSentenceInvariants()
+    {
+        BreakIterator e = BreakIterator.getSentenceInstance();
+        doOtherInvariantTest(e, cannedTestChars + ".,\u3001\u3002\u3041\u3042\u3043\ufeff");
+    }
+
+    public void TestEmptyString()
+    {
+        String text = "";
+        Vector x = new Vector();
+        x.addElement(text);
+
+        generalIteratorTest(lineBreak, x);
+    }
+
+    public void TestGetAvailableLocales()
+    {
+        Locale[] locList = BreakIterator.getAvailableLocales();
+
+        if (locList.length == 0)
+            errln("getAvailableLocales() returned an empty list!");
+        // I have no idea how to test this function...
+        
+        com.ibm.icu.util.ULocale[] ulocList = BreakIterator.getAvailableULocales();
+        if (ulocList.length == 0) {
+            errln("getAvailableULocales() returned an empty list!");        
+        } else {
+            logln("getAvailableULocales() returned " + ulocList.length + " locales");
+        }
+    }
+
+    
+    /**
+     * @bug 4068137
+     */
+    public void TestEndBehavior()
+    {
+        String testString = "boo.";
+        BreakIterator wb = BreakIterator.getWordInstance();
+        wb.setText(testString);
+
+        if (wb.first() != 0)
+            errln("Didn't get break at beginning of string.");
+        if (wb.next() != 3)
+            errln("Didn't get break before period in \"boo.\"");
+        if (wb.current() != 4 && wb.next() != 4)
+            errln("Didn't get break at end of string.");
+    }
+
+    // The Following two tests are ported from ICU4C 1.8.1 [Richard/GCL]
+    /**
+     * Port From:   ICU4C v1.8.1 : textbounds : IntlTestTextBoundary
+     * Source File: $ICU4CRoot/source/test/intltest/ittxtbd.cpp
+     **/
+    /**
+     * test methods preceding, following and isBoundary
+     **/
+    public void TestPreceding() {
+        String words3 = "aaa bbb ccc";
+        BreakIterator e = BreakIterator.getWordInstance(Locale.getDefault());
+        e.setText( words3 );
+        e.first();
+        int p1 = e.next();
+        int p2 = e.next();
+        int p3 = e.next();
+        int p4 = e.next();
+
+        int f = e.following(p2+1);
+        int p = e.preceding(p2+1);
+        if (f!=p3)
+            errln("IntlTestTextBoundary::TestPreceding: f!=p3");
+        if (p!=p2)
+            errln("IntlTestTextBoundary::TestPreceding: p!=p2");
+
+        if (p1+1!=p2)
+            errln("IntlTestTextBoundary::TestPreceding: p1+1!=p2");
+
+        if (p3+1!=p4)
+            errln("IntlTestTextBoundary::TestPreceding: p3+1!=p4");
+
+        if (!e.isBoundary(p2) || e.isBoundary(p2+1) || !e.isBoundary(p3))
+        {
+            errln("IntlTestTextBoundary::TestPreceding: isBoundary err");
+        }
+    }
+
+    
+    /**
+     * Bug 4450804
+     */
+    public void TestLineBreakContractions() {
+        Vector expected = new Vector();
+        expected.add("These ");
+        expected.add("are ");
+        expected.add("'foobles'. ");
+        expected.add("Don't ");
+        expected.add("you ");
+        expected.add("like ");
+        expected.add("them?");
+        generalIteratorTest(lineBreak, expected);
+    }
+
+    /**
+     * Ticket#5615
+     */
+    public void TestT5615() {
+        com.ibm.icu.util.ULocale[] ulocales = BreakIterator.getAvailableULocales();
+        int type = 0;
+        com.ibm.icu.util.ULocale loc = null;
+        try {
+            for (int i = 0; i < ulocales.length; i++) {
+                loc = ulocales[i];
+                for (type = 0; type < 5 /* 5 = BreakIterator.KIND_COUNT */; ++type) {
+                    BreakIterator brk = BreakIterator.getBreakInstance(loc, type);
+                    if (brk == null) {
+                        errln("ERR: Failed to create an instance type: " + type + " / locale: " + loc);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            errln("ERR: Failed to create an instance type: " + type + " / locale: " + loc + " / exception: " + e.getMessage());
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java b/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
new file mode 100644
index 0000000..2c31cbb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
@@ -0,0 +1,418 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/** 
+ * Port From:   ICU4C v1.8.1 : rbbi : RBBIAPITest
+ * Source File: $ICU4CRoot/source/test/intltest/rbbiapts.cpp
+ **/
+
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import java.util.Locale;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+/**
+ * API Test the RuleBasedBreakIterator class
+ */
+public class RBBIAPITest extends com.ibm.icu.dev.test.TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new RBBIAPITest().run(args);
+    }
+    
+    /**
+     * Tests clone() and equals() methods of RuleBasedBreakIterator         
+     **/
+    public void TestCloneEquals() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator biequal = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 
+
+        String testString = "Testing word break iterators's clone() and equals()";
+        bi1.setText(testString);
+        bi2.setText(testString);
+        biequal.setText(testString);
+        
+        bi3.setText("hello");
+        logln("Testing equals()");
+        logln("Testing == and !=");
+        if (!bi1.equals(biequal) || bi1.equals(bi2) || bi1.equals(bi3))
+            errln("ERROR:1 RBBI's == and !- operator failed.");
+        if (bi2.equals(biequal) || bi2.equals(bi1) || biequal.equals(bi3))
+            errln("ERROR:2 RBBI's == and != operator  failed.");
+        logln("Testing clone()");
+        RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone();
+        RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone();
+        if (!bi1clone.equals(bi1)
+            || !bi1clone.equals(biequal)
+            || bi1clone.equals(bi3)
+            || bi1clone.equals(bi2))
+            errln("ERROR:1 RBBI's clone() method failed");
+
+        if (bi2clone.equals(bi1)
+            || bi2clone.equals(biequal)
+            || bi2clone.equals(bi3)
+            || !bi2clone.equals(bi2))
+            errln("ERROR:2 RBBI's clone() method failed");
+
+        if (!bi1.getText().equals(bi1clone.getText())
+            || !bi2clone.getText().equals(bi2.getText())
+            || bi2clone.equals(bi1clone))
+            errln("ERROR: RBBI's clone() method failed");
+    }
+    
+    /**
+     * Tests toString() method of RuleBasedBreakIterator
+     **/
+    public void TestToString() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault());
+        logln("Testing toString()");
+        bi1.setText("Hello there");
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) bi1.clone();
+        String temp = bi1.toString();
+        String temp2 = bi2.toString();
+        String temp3 = bi3.toString();
+        if (temp2.equals(temp3) || temp.equals(temp2) || !temp.equals(temp3))
+            errln("ERROR: error in toString() method");
+    }
+    
+    /**
+     * Tests the method hashCode() of RuleBasedBreakIterator
+     **/
+    public void TestHashCode() {
+        RuleBasedBreakIterator bi1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi3 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator bi2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault());
+        logln("Testing hashCode()");
+        bi1.setText("Hash code");
+        bi2.setText("Hash code");
+        bi3.setText("Hash code");
+        RuleBasedBreakIterator bi1clone = (RuleBasedBreakIterator) bi1.clone();
+        RuleBasedBreakIterator bi2clone = (RuleBasedBreakIterator) bi2.clone();
+        if (bi1.hashCode() != bi1clone.hashCode()
+            || bi1.hashCode() != bi3.hashCode()
+            || bi1clone.hashCode() != bi3.hashCode()
+            || bi2.hashCode() != bi2clone.hashCode())
+            errln("ERROR: identical objects have different hashcodes");
+        
+        if (bi1.hashCode() == bi2.hashCode()
+            || bi2.hashCode() == bi3.hashCode()
+            || bi1clone.hashCode() == bi2clone.hashCode()
+            || bi1clone.hashCode() == bi2.hashCode())
+            errln("ERROR: different objects have same hashcodes");
+    }
+    
+    /**
+      * Tests the methods getText() and setText() of RuleBasedBreakIterator
+      **/
+    public void TestGetSetText() {
+        logln("Testing getText setText ");
+        String str1 = "first string.";
+        String str2 = "Second string.";
+        //RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 
+        CharacterIterator text1 = new StringCharacterIterator(str1);
+        //CharacterIterator text1Clone = (CharacterIterator) text1.clone();
+        //CharacterIterator text2 = new StringCharacterIterator(str2);
+        wordIter1.setText(str1);
+        if (!wordIter1.getText().equals(text1))
+            errln("ERROR:1 error in setText or getText ");
+        if (wordIter1.current() != 0)
+            errln("ERROR:1 setText did not set the iteration position to the beginning of the text, it is"
+                   + wordIter1.current() + "\n"); 
+        wordIter1.next(2);
+        wordIter1.setText(str2);
+        if (wordIter1.current() != 0)
+            errln("ERROR:2 setText did not reset the iteration position to the beginning of the text, it is"
+                    + wordIter1.current() + "\n"); 
+        //ICU4J has remove the method adoptText
+        /*
+        charIter1.adoptText(text1Clone);
+        if (wordIter1.getText() == charIter1.getText()
+            || wordIter1.getText() != text2
+            || charIter1.getText() != text1)
+            errln((UnicodeString) "ERROR:2 error is getText or setText()");
+        
+        RuleBasedBreakIterator rb = (RuleBasedBreakIterator) wordIter1.clone();
+        rb.adoptText(text1);
+        if (rb.getText() != text1)
+            errln((UnicodeString) "ERROR:1 error in adoptText ");
+        rb.adoptText(text2);
+        if (rb.getText() != text2)
+            errln((UnicodeString) "ERROR:2 error in adoptText ");
+        */
+    }
+    
+    /**
+      * Testing the methods first(), next(), next(int) and following() of RuleBasedBreakIterator
+      *   TODO:  Most of this test should be retired, rule behavior is much better covered by
+      *          TestExtended, which is also easier to understand and maintain.
+      **/
+    public void TestFirstNextFollowing() {
+        int p, q;
+        String testString = "This is a word break. Isn't it? 2.25";
+        logln("Testing first() and next(), following() with custom rules");
+        logln("testing word iterator - string :- \"" + testString + "\"\n");
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault());
+        wordIter1.setText(testString);
+        p = wordIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = wordIter1.next(9);
+        doTest(testString, p, q, 20, "This is a word break");
+        p = q;
+        q = wordIter1.next();
+        doTest(testString, p, q, 21, ".");
+        p = q;
+        q = wordIter1.next(3);
+        doTest(testString, p, q, 28, " Isn't ");
+        p = q;
+        q = wordIter1.next(2);
+        doTest(testString, p, q, 31, "it?");
+        q = wordIter1.following(2);
+        doTest(testString, 2, q, 4, "is");
+        q = wordIter1.following(22);
+        doTest(testString, 22, q, 27, "Isn't");
+        wordIter1.last();
+        p = wordIter1.next();
+        q = wordIter1.following(wordIter1.last());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: next()/following() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length() + "\n"); 
+        RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault()); 
+        testString = "Write hindi here. "; 
+        logln("testing char iter - string:- \"" + testString + "\"");
+        charIter1.setText(testString);
+        p = charIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = charIter1.next();
+        doTest(testString, p, q, 1, "W");
+        p = q;
+        q = charIter1.next(4);
+        doTest(testString, p, q, 5, "rite");
+        p = q;
+        q = charIter1.next(12);
+        doTest(testString, p, q, 17, " hindi here.");
+        p = q;
+        q = charIter1.next(-6);
+        doTest(testString, p, q, 11, " here.");
+        p = q;
+        q = charIter1.next(6);
+        doTest(testString, p, q, 17, " here.");
+        p = charIter1.following(charIter1.last());
+        q = charIter1.next(charIter1.last());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This  costs $20,00,000."; 
+        RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) BreakIterator.getSentenceInstance(Locale.getDefault()); 
+        logln("testing sentence iter - String:- \"" + testString + "\"");
+        sentIter1.setText(testString);
+        p = sentIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = sentIter1.next();
+        doTest(testString, p, q, 7, "Hello! ");
+        p = q;
+        q = sentIter1.next(2);
+        doTest(testString, p, q, 31, "how are you? I'am fine. ");
+        p = q;
+        q = sentIter1.next(-2);
+        doTest(testString, p, q, 7, "how are you? I'am fine. ");
+        p = q;
+        q = sentIter1.next(4);
+        doTest(testString, p, q, 60, "how are you? I'am fine. Thankyou. How are you doing? ");
+        p = q;
+        q = sentIter1.next();
+        doTest(testString, p, q, 83, "This  costs $20,00,000.");
+        q = sentIter1.following(1);
+        doTest(testString, 1, q, 7, "ello! ");
+        q = sentIter1.following(10);
+        doTest(testString, 10, q, 20, " are you? ");
+        q = sentIter1.following(20);
+        doTest(testString, 20, q, 31, "I'am fine. ");
+        p = sentIter1.following(sentIter1.last());
+        q = sentIter1.next(sentIter1.last());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+        testString = "Hello! how\r\n (are)\r you? I'am fine- Thankyou. foo\u00a0bar How, are, you? This, costs $20,00,000."; 
+        logln("(UnicodeString)testing line iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) BreakIterator.getLineInstance(Locale.getDefault()); 
+        lineIter1.setText(testString);
+        p = lineIter1.first();
+        if (p != 0)
+            errln("ERROR: first() returned" + p + "instead of 0");
+        q = lineIter1.next();
+        doTest(testString, p, q, 7, "Hello! ");
+        p = q;
+        p = q;
+        q = lineIter1.next(4);
+        doTest(testString, p, q, 20, "how\r\n (are)\r ");
+        p = q;
+        q = lineIter1.next(-4);
+        doTest(testString, p, q, 7, "how\r\n (are)\r ");
+        p = q;
+        q = lineIter1.next(6);
+        doTest(testString, p, q, 30, "how\r\n (are)\r you? I'am ");
+        p = q;
+        q = lineIter1.next();
+        doTest(testString, p, q, 36, "fine- ");
+        p = q;
+        q = lineIter1.next(2);
+        doTest(testString, p, q, 54, "Thankyou. foo\u00a0bar ");
+        q = lineIter1.following(60);
+        doTest(testString, 60, q, 64, "re, ");
+        q = lineIter1.following(1);
+        doTest(testString, 1, q, 7, "ello! ");
+        q = lineIter1.following(10);
+        doTest(testString, 10, q, 12, "\r\n");
+        q = lineIter1.following(20);
+        doTest(testString, 20, q, 25, "you? ");
+        p = lineIter1.following(lineIter1.last());
+        q = lineIter1.next(lineIter1.last());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: following()/next() at last position returned #"
+                    + p + " and " + q + " instead of" + testString.length()); 
+    }
+    
+    /**
+     * Testing the methods lastt(), previous(), and preceding() of RuleBasedBreakIterator
+     **/
+    public void TestLastPreviousPreceding() {
+        int p, q;
+        String testString = "This is a word break. Isn't it? 2.25 dollars";
+        logln("Testing last(),previous(), preceding() with custom rules");
+        logln("testing word iteration for string \"" + testString + "\"");
+        RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault()); 
+        wordIter1.setText(testString);
+        p = wordIter1.last();
+        if (p != testString.length()) {
+            errln("ERROR: first() returned" + p + "instead of" + testString.length());
+        }
+        q = wordIter1.previous();
+        doTest(testString, p, q, 37, "dollars");
+        p = q;
+        q = wordIter1.previous();
+        doTest(testString, p, q, 36, " ");
+        q = wordIter1.preceding(25);
+        doTest(testString, 25, q, 22, "Isn");
+        p = q;
+        q = wordIter1.previous();
+        doTest(testString, p, q, 21, " ");
+        q = wordIter1.preceding(20);
+        doTest(testString, 20, q, 15, "break");
+        p = wordIter1.preceding(wordIter1.first());
+        if (p != BreakIterator.DONE)
+            errln("ERROR: preceding()  at starting position returned #" + p + " instead of 0");
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This  costs $20,00,000."; 
+        logln("testing sentence iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator sentIter1 = (RuleBasedBreakIterator) BreakIterator.getSentenceInstance(Locale.getDefault()); 
+        sentIter1.setText(testString);
+        p = sentIter1.last();
+        if (p != testString.length())
+            errln("ERROR: last() returned" + p + "instead of " + testString.length());
+        q = sentIter1.previous();
+        doTest(testString, p, q, 60, "This  costs $20,00,000.");
+        p = q;
+        q = sentIter1.previous();
+        doTest(testString, p, q, 41, "How are you doing? ");
+        q = sentIter1.preceding(40);
+        doTest(testString, 40, q, 31, "Thankyou.");
+        q = sentIter1.preceding(25);
+        doTest(testString, 25, q, 20, "I'am ");
+        sentIter1.first();
+        p = sentIter1.previous();
+        q = sentIter1.preceding(sentIter1.first());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: previous()/preceding() at starting position returned #"
+                    + p + " and " + q + " instead of 0\n"); 
+        testString = "Hello! how are you? I'am fine. Thankyou. How are you doing? This\n costs $20,00,000."; 
+        logln("testing line iter - String:- \"" + testString + "\"");
+        RuleBasedBreakIterator lineIter1 = (RuleBasedBreakIterator) BreakIterator.getLineInstance(Locale.getDefault());
+        lineIter1.setText(testString);
+        p = lineIter1.last();
+        if (p != testString.length())
+            errln("ERROR: last() returned" + p + "instead of " + testString.length());
+        q = lineIter1.previous();
+        doTest(testString, p, q, 72, "$20,00,000.");
+        p = q;
+        q = lineIter1.previous();
+        doTest(testString, p, q, 66, "costs ");
+        q = lineIter1.preceding(40);
+        doTest(testString, 40, q, 31, "Thankyou.");
+        q = lineIter1.preceding(25);
+        doTest(testString, 25, q, 20, "I'am ");
+        lineIter1.first();
+        p = lineIter1.previous();
+        q = lineIter1.preceding(sentIter1.first());
+        if (p != BreakIterator.DONE || q != BreakIterator.DONE)
+            errln("ERROR: previous()/preceding() at starting position returned #"
+                    + p + " and " + q + " instead of 0\n");
+    }
+    
+    /**
+     * Tests the method IsBoundary() of RuleBasedBreakIterator
+     **/
+    public void TestIsBoundary() {
+        String testString1 = "Write here. \u092d\u0301\u0930\u0924 \u0938\u0941\u0902\u0926\u0930 a\u0301u";
+        RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault());
+        charIter1.setText(testString1);
+        int bounds1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 20, 21, 22, 23, 25, 26};
+        doBoundaryTest(charIter1, testString1, bounds1);
+        RuleBasedBreakIterator wordIter2 = (RuleBasedBreakIterator) BreakIterator.getWordInstance(Locale.getDefault());
+        wordIter2.setText(testString1);
+        int bounds2[] = {0, 5, 6, 10, 11, 12, 16, 17, 22, 23, 26};
+        doBoundaryTest(wordIter2, testString1, bounds2);
+    }
+    
+    //---------------------------------------------
+    //Internal subroutines
+    //---------------------------------------------
+    
+    /* Internal subroutine used by TestIsBoundary() */ 
+    public void doBoundaryTest(BreakIterator bi, String text, int[] boundaries) {
+        logln("testIsBoundary():");
+        int p = 0;
+        boolean isB;
+        for (int i = 0; i < text.length(); i++) {
+            isB = bi.isBoundary(i);
+            logln("bi.isBoundary(" + i + ") -> " + isB);
+            if (i == boundaries[p]) {
+                if (!isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+                p++;
+            } else {
+                if (isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+            }
+        }
+    }
+    
+    /*Internal subroutine used for comparision of expected and acquired results */
+    public void doTest(String testString, int start, int gotoffset, int expectedOffset, String expectedString) {
+        String selected;
+        String expected = expectedString;
+        if (gotoffset != expectedOffset)
+            errln("ERROR:****returned #" + gotoffset + " instead of #" + expectedOffset);
+        if (start <= gotoffset) {
+            selected = testString.substring(start, gotoffset);
+        } else {
+            selected = testString.substring(gotoffset, start);
+        }
+        if (!selected.equals(expected))
+            errln("ERROR:****selected \"" + selected + "\" instead of \"" + expected + "\"");
+        else
+            logln("****selected \"" + selected + "\"");
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBITest.java b/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
new file mode 100644
index 0000000..95945b5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
@@ -0,0 +1,571 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+ 
+//Regression testing of RuleBasedBreakIterator
+//
+//  TODO:  These tests should be mostly retired.
+//          Much of the test data that was originally here was removed when the RBBI rules
+//            were updated to match the Unicode boundary TRs, and the data was found to be invalid.
+//          Much of the remaining data has been moved into the rbbitst.txt test data file,
+//            which is common between ICU4C and ICU4J.  The remaining test data should also be moved,
+//            or simply retired if it is no longer interesting.
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Vector;
+
+public class RBBITest extends TestFmwk 
+{  
+    
+  public static void main(String[] args) throws Exception {
+    new RBBITest().run(args);
+  }
+
+  public RBBITest() { 
+  }
+  
+  private static final String halfNA = "\u0928\u094d\u200d";  /*halfform NA = devanigiri NA + virama(supresses inherent vowel)+ zero width joiner */  
+
+
+  // tests default rules based character iteration.
+  // Builds a new iterator from the source rules in the default (prebuilt) iterator.
+  //
+  public void TestDefaultRuleBasedCharacterIteration(){
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)BreakIterator.getCharacterInstance();
+      logln("Testing the RBBI for character iteration by using default rules");
+
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      
+      RuleBasedBreakIterator charIterDefault=null;
+      try{
+          charIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedCharacterIteration()"+ iae.toString());
+      }
+
+      Vector chardata = new Vector();
+      chardata.addElement("H");
+      chardata.addElement("e");
+      chardata.addElement("l");
+      chardata.addElement("l");
+      chardata.addElement("o");
+      chardata.addElement("e\u0301");                   //acuteE
+      chardata.addElement("&");
+      chardata.addElement("e\u0303");                   //tildaE
+      //devanagiri characters for Hindi support
+      chardata.addElement("\u0906");                    //devanagiri AA
+      //chardata.addElement("\u093e\u0901");              //devanagiri vowelsign AA+ chandrabindhu
+      chardata.addElement("\u0916\u0947");              //devanagiri KHA+vowelsign E
+      chardata.addElement("\u0938\u0941\u0902");        //devanagiri SA+vowelsign U + anusvara(bindu)
+      chardata.addElement("\u0926");                    //devanagiri consonant DA
+      chardata.addElement("\u0930");                    //devanagiri consonant RA
+      // chardata.addElement("\u0939\u094c");              //devanagiri HA+vowel sign AI
+      chardata.addElement("\u0964");                    //devanagiri danda
+      //end hindi characters      
+      chardata.addElement("A\u0302");                   // circumflexA 
+      chardata.addElement("i\u0301");                   // acuteBelowI   
+      // conjoining jamo... 
+      chardata.addElement("\u1109\u1161\u11bc");
+      chardata.addElement("\u1112\u1161\u11bc");
+      chardata.addElement("\n");
+      chardata.addElement("\r\n");                      // keep CRLF sequences together  
+      chardata.addElement("S\u0300");                   //graveS
+      chardata.addElement("i\u0301");                   // acuteBelowI
+      chardata.addElement("!");
+
+       // What follows is a string of Korean characters (I found it in the Yellow Pages
+      // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+      // it correctly), first as precomposed syllables, and then as conjoining jamo.
+      // Both sequences should be semantically identical and break the same way.
+      // precomposed syllables...
+      chardata.addElement("\uc0c1");
+      chardata.addElement("\ud56d");
+      chardata.addElement(" ");
+      chardata.addElement("\ud55c");
+      chardata.addElement("\uc778");
+      chardata.addElement(" ");
+      chardata.addElement("\uc5f0");
+      chardata.addElement("\ud569");
+      chardata.addElement(" ");
+      chardata.addElement("\uc7a5");
+      chardata.addElement("\ub85c");
+      chardata.addElement("\uad50");
+      chardata.addElement("\ud68c");
+      chardata.addElement(" ");
+       // conjoining jamo...
+      chardata.addElement("\u1109\u1161\u11bc");
+      chardata.addElement("\u1112\u1161\u11bc");
+      chardata.addElement(" ");
+      chardata.addElement("\u1112\u1161\u11ab");
+      chardata.addElement("\u110b\u1175\u11ab");
+      chardata.addElement(" ");
+      chardata.addElement("\u110b\u1167\u11ab");
+      chardata.addElement("\u1112\u1161\u11b8");
+      chardata.addElement(" ");
+      chardata.addElement("\u110c\u1161\u11bc");
+      chardata.addElement("\u1105\u1169");
+      chardata.addElement("\u1100\u116d");
+      chardata.addElement("\u1112\u116c");
+
+
+      generalIteratorTest(charIterDefault, chardata);
+
+  }
+
+  public void TestDefaultRuleBasedWordIteration(){
+      logln("Testing the RBBI for word iteration using default rules");
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)BreakIterator.getWordInstance();
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      
+      RuleBasedBreakIterator wordIterDefault=null;
+      try{
+      wordIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedWordIteration() -- custom rules"+ iae.toString());
+      }
+
+      Vector worddata = new Vector();
+      worddata.addElement ("Write");
+      worddata.addElement (" ");
+      worddata.addElement ("wordrules");
+      worddata.addElement (".");
+      worddata.addElement(" ");
+      //worddata.addElement("alpha-beta-gamma");
+      worddata.addElement(" ");      
+      worddata.addElement("\u092f\u0939");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u093f" + halfNA + "\u0926\u0940");
+      worddata.addElement(" ");
+      worddata.addElement("\u0939\u0948");
+      //  worddata.addElement("\u0964");   //danda followed by a space
+      worddata.addElement(" ");
+      worddata.addElement("\u0905\u093e\u092a");
+      worddata.addElement(" ");
+      worddata.addElement("\u0938\u093f\u0916\u094b\u0917\u0947");
+      worddata.addElement("?");
+      worddata.addElement(" ");
+       worddata.addElement("\r");
+      worddata.addElement("It's");
+      worddata.addElement(" ");
+     // worddata.addElement("$30.10");
+      worddata.addElement(" ");  
+       worddata.addElement(" ");
+      worddata.addElement("Badges");
+      worddata.addElement("?");
+      worddata.addElement(" ");
+      worddata.addElement("BADGES");
+      worddata.addElement("!");
+      worddata.addElement("1000,233,456.000");
+      worddata.addElement(" ");
+
+      generalIteratorTest(wordIterDefault, worddata);
+  }
+//  private static final String kParagraphSeparator = "\u2029";
+  private static final String kLineSeparator      = "\u2028";
+
+  public void TestDefaultRuleBasedSentenceIteration(){
+      logln("Testing the RBBI for sentence iteration using default rules");
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)BreakIterator.getSentenceInstance();
+      
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      RuleBasedBreakIterator sentIterDefault=null;
+      try{
+          sentIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedSentenceIteration()" + iae.toString());
+      }
+      
+      Vector sentdata = new Vector();
+      sentdata.addElement("(This is it.) ");
+      sentdata.addElement("Testing the sentence iterator. ");
+      sentdata.addElement("\"This isn\'t it.\" ");
+      sentdata.addElement("Hi! ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("(This is it.) ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("\"This isn\'t it.\" ");
+      sentdata.addElement("Hi! ");
+      sentdata.addElement("This is a simple sample sentence. ");
+      sentdata.addElement("It does not have to make any sense as you can see. ");
+      sentdata.addElement("Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. ");
+      sentdata.addElement("Che la dritta via aveo smarrita. ");
+       generalIteratorTest(sentIterDefault, sentdata);
+  }
+   
+  public void TestDefaultRuleBasedLineIteration(){
+      logln("Testing the RBBI for line iteration using default rules");
+      RuleBasedBreakIterator rbbi=(RuleBasedBreakIterator)RuleBasedBreakIterator.getLineInstance();
+      //fetch the rules used to create the above RuleBasedBreakIterator
+      String defaultRules=rbbi.toString();
+      RuleBasedBreakIterator lineIterDefault=null;
+      try{
+          lineIterDefault   = new RuleBasedBreakIterator(defaultRules); 
+      }catch(IllegalArgumentException iae){
+          errln("ERROR: failed construction in TestDefaultRuleBasedLineIteration()" + iae.toString());
+      }
+
+     Vector linedata = new Vector();
+     linedata.addElement("Multi-");
+     linedata.addElement("Level ");
+     linedata.addElement("example ");
+     linedata.addElement("of ");
+     linedata.addElement("a ");
+     linedata.addElement("semi-");
+     linedata.addElement("idiotic ");
+     linedata.addElement("non-");
+     linedata.addElement("sensical ");
+     linedata.addElement("(non-");
+     linedata.addElement("important) ");
+     linedata.addElement("sentence. ");
+
+     linedata.addElement("Hi  ");
+     linedata.addElement("Hello ");
+     linedata.addElement("How\n");
+     linedata.addElement("are\r");
+     linedata.addElement("you" + kLineSeparator);
+     linedata.addElement("fine.\t");
+     linedata.addElement("good.  ");
+
+     linedata.addElement("Now\r");
+     linedata.addElement("is\n");
+     linedata.addElement("the\r\n");
+     linedata.addElement("time\n");
+     linedata.addElement("\r");
+     linedata.addElement("for\r");
+     linedata.addElement("\r");
+     linedata.addElement("all");
+
+     generalIteratorTest(lineIterDefault, linedata);
+
+
+  }
+ 
+      //=========================================================================
+     // general test subroutines
+     //=========================================================================
+
+     private void generalIteratorTest(RuleBasedBreakIterator rbbi, Vector expectedResult){
+         StringBuffer buffer = new StringBuffer();
+         String text;
+         for (int i = 0; i < expectedResult.size(); i++) {
+             text = (String)expectedResult.elementAt(i);
+             buffer.append(text);
+         }
+         text = buffer.toString();
+         if (rbbi == null) {
+             errln("null iterator, test skipped.");
+             return;
+         }
+
+         rbbi.setText(text);
+
+         Vector nextResults = _testFirstAndNext(rbbi, text);
+         Vector previousResults = _testLastAndPrevious(rbbi, text);
+
+         logln("comparing forward and backward...");
+         int errs = getErrorCount();
+         compareFragmentLists("forward iteration", "backward iteration", nextResults,
+                         previousResults);
+         if (getErrorCount() == errs) {
+             logln("comparing expected and actual...");
+             compareFragmentLists("expected result", "actual result", expectedResult,
+                             nextResults);
+         }
+
+        int[] boundaries = new int[expectedResult.size() + 3];
+        boundaries[0] = RuleBasedBreakIterator.DONE;
+        boundaries[1] = 0;
+        for (int i = 0; i < expectedResult.size(); i++)
+         boundaries[i + 2] = boundaries[i + 1] + ((String)expectedResult.elementAt(i)).length();
+      
+        boundaries[boundaries.length - 1] = RuleBasedBreakIterator.DONE;
+      
+        _testFollowing(rbbi, text, boundaries);
+        _testPreceding(rbbi, text, boundaries);
+        _testIsBoundary(rbbi, text, boundaries);
+
+        doMultipleSelectionTest(rbbi, text);
+     }
+
+     private Vector _testFirstAndNext(RuleBasedBreakIterator rbbi, String text) {
+         int p = rbbi.first();
+         int lastP = p;
+         Vector result = new Vector();
+
+         if (p != 0)
+             errln("first() returned " + p + " instead of 0");
+         while (p != RuleBasedBreakIterator.DONE) {
+             p = rbbi.next();
+             if (p != RuleBasedBreakIterator.DONE) {
+                 if (p <= lastP)
+                     errln("next() failed to move forward: next() on position "
+                                     + lastP + " yielded " + p);
+
+                 result.addElement(text.substring(lastP, p));
+             }
+             else {
+                 if (lastP != text.length())
+                     errln("next() returned DONE prematurely: offset was "
+                                     + lastP + " instead of " + text.length());
+             }
+             lastP = p;
+         }
+         return result;
+     }
+
+     private Vector _testLastAndPrevious(RuleBasedBreakIterator rbbi, String text) {
+         int p = rbbi.last();
+         int lastP = p;
+         Vector result = new Vector();
+
+         if (p != text.length())
+             errln("last() returned " + p + " instead of " + text.length());
+         while (p != RuleBasedBreakIterator.DONE) {
+             p = rbbi.previous();
+             if (p != RuleBasedBreakIterator.DONE) {
+                 if (p >= lastP)
+                     errln("previous() failed to move backward: previous() on position "
+                                     + lastP + " yielded " + p);
+
+                 result.insertElementAt(text.substring(p, lastP), 0);
+             }
+             else {
+                 if (lastP != 0)
+                     errln("previous() returned DONE prematurely: offset was "
+                                     + lastP + " instead of 0");
+             }
+             lastP = p;
+         }
+         return result;
+     }
+
+     private void compareFragmentLists(String f1Name, String f2Name, Vector f1, Vector f2) {
+         int p1 = 0;
+         int p2 = 0;
+         String s1;
+         String s2;
+         int t1 = 0;
+         int t2 = 0;
+
+         while (p1 < f1.size() && p2 < f2.size()) {
+             s1 = (String)f1.elementAt(p1);
+             s2 = (String)f2.elementAt(p2);
+             t1 += s1.length();
+             t2 += s2.length();
+
+             if (s1.equals(s2)) {
+                 debugLogln("   >" + s1 + "<");
+                 ++p1;
+                 ++p2;
+             }
+             else {
+                 int tempT1 = t1;
+                 int tempT2 = t2;
+                 int tempP1 = p1;
+                 int tempP2 = p2;
+
+                 while (tempT1 != tempT2 && tempP1 < f1.size() && tempP2 < f2.size()) {
+                     while (tempT1 < tempT2 && tempP1 < f1.size()) {
+                         tempT1 += ((String)f1.elementAt(tempP1)).length();
+                         ++tempP1;
+                     }
+                     while (tempT2 < tempT1 && tempP2 < f2.size()) {
+                         tempT2 += ((String)f2.elementAt(tempP2)).length();
+                         ++tempP2;
+                     }
+                 }
+                 logln("*** " + f1Name + " has:");
+                 while (p1 <= tempP1 && p1 < f1.size()) {
+                     s1 = (String)f1.elementAt(p1);
+                     t1 += s1.length();
+                     debugLogln(" *** >" + s1 + "<");
+                     ++p1;
+                 }
+                 logln("***** " + f2Name + " has:");
+                 while (p2 <= tempP2 && p2 < f2.size()) {
+                     s2 = (String)f2.elementAt(p2);
+                     t2 += s2.length();
+                     debugLogln(" ***** >" + s2 + "<");
+                     ++p2;
+                 }
+                 errln("Discrepancy between " + f1Name + " and " + f2Name);
+             }
+         }
+     }
+
+    private void _testFollowing(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testFollowing():");
+       int p = 2;
+       for(int i = 0; i <= text.length(); i++) {
+           if (i == boundaries[p])
+               ++p;
+           int b = rbbi.following(i);
+           logln("rbbi.following(" + i + ") -> " + b);
+           if (b != boundaries[p])
+               errln("Wrong result from following() for " + i + ": expected " + boundaries[p]
+                               + ", got " + b);
+       }
+   }
+
+   private void _testPreceding(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testPreceding():");
+       int p = 0;
+       for(int i = 0; i <= text.length(); i++) {
+           int b = rbbi.preceding(i);
+           logln("rbbi.preceding(" + i + ") -> " + b);
+           if (b != boundaries[p])
+               errln("Wrong result from preceding() for " + i + ": expected " + boundaries[p]
+                              + ", got " + b);
+           if (i == boundaries[p + 1])
+               ++p;
+       }
+   }
+
+   private void _testIsBoundary(RuleBasedBreakIterator rbbi, String text, int[] boundaries) {
+       logln("testIsBoundary():");
+       int p = 1;
+       boolean isB;
+       for(int i = 0; i <= text.length(); i++) {
+           isB = rbbi.isBoundary(i);
+           logln("rbbi.isBoundary(" + i + ") -> " + isB);
+           if(i == boundaries[p]) {
+               if (!isB)
+                   errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+               ++p;
+           }
+           else {
+               if(isB)
+                   errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+           }
+       }
+   }
+   private void doMultipleSelectionTest(RuleBasedBreakIterator iterator, String testText)
+   {
+       logln("Multiple selection test...");
+       RuleBasedBreakIterator testIterator = (RuleBasedBreakIterator)iterator.clone();
+       int offset = iterator.first();
+       int testOffset;
+       int count = 0;
+
+       do {
+           testOffset = testIterator.first();
+           testOffset = testIterator.next(count);
+           logln("next(" + count + ") -> " + testOffset);
+           if (offset != testOffset)
+               errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+           if (offset != RuleBasedBreakIterator.DONE) {
+               count++;
+               offset = iterator.next();
+           }
+       } while (offset != RuleBasedBreakIterator.DONE);
+
+       // now do it backwards...
+       offset = iterator.last();
+       count = 0;
+
+       do {
+           testOffset = testIterator.last();
+           testOffset = testIterator.next(count);
+           logln("next(" + count + ") -> " + testOffset);
+           if (offset != testOffset)
+               errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+           if (offset != RuleBasedBreakIterator.DONE) {
+               count--;
+               offset = iterator.previous();
+           }
+       } while (offset != RuleBasedBreakIterator.DONE);
+   }
+
+   private void debugLogln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+         logln(out.toString());
+    }
+   
+   public void TestThaiDictionaryBreakIterator() {
+       int position;
+       int index;
+       int result[] = { 1, 2, 5, 10, 11, 12, 11, 10, 5, 2, 1, 0 };
+       char ctext[] = { 
+               0x0041, 0x0020,
+               0x0E01, 0x0E32, 0x0E23, 0x0E17, 0x0E14, 0x0E25, 0x0E2D, 0x0E07,
+               0x0020, 0x0041
+               };
+       String text = new String(ctext);
+       
+       ULocale locale = ULocale.createCanonical("th");
+       BreakIterator b = BreakIterator.getWordInstance(locale);
+       
+       b.setText(text);
+       
+       index = 0;
+       // Test forward iteration
+       while ((position = b.next())!= BreakIterator.DONE) {
+           if (position != result[index++]) {
+               errln("Error with ThaiDictionaryBreakIterator forward iteration test at " + position + ".\nShould have been " + result[index-1]);
+           }
+       }
+       
+       // Test backward iteration
+       while ((position = b.previous())!= BreakIterator.DONE) {
+           if (position != result[index++]) {
+               errln("Error with ThaiDictionaryBreakIterator backward iteration test at " + position + ".\nShould have been " + result[index-1]);
+           }
+       }
+       
+       //Test invalid sequence and spaces
+       char text2[] = {
+               0x0E01, 0x0E39, 0x0020, 0x0E01, 0x0E34, 0x0E19, 0x0E01, 0x0E38, 0x0E49, 0x0E07, 0x0020, 0x0E1B, 
+               0x0E34, 0x0E49, 0x0E48, 0x0E07, 0x0E2D, 0x0E22, 0x0E39, 0x0E48, 0x0E43, 0x0E19, 
+               0x0E16, 0x0E49, 0x0E33
+       };
+       int expectedWordResult[] = {
+               2, 3, 6, 10, 11, 15, 17, 20, 22
+       };
+       int expectedLineResult[] = {
+               3, 6, 11, 15, 17, 20, 22
+       };
+       BreakIterator brk = BreakIterator.getWordInstance(new ULocale("th"));
+       brk.setText(new String(text2));
+       position = index = 0;
+       while ((position = brk.next()) != BreakIterator.DONE && position < text2.length) {
+           if (position != expectedWordResult[index++]) {
+               errln("Incorrect break given by thai word break iterator. Expected: " + expectedWordResult[index-1] + " Got: " + position);
+           }
+       }
+      
+       brk = BreakIterator.getLineInstance(new ULocale("th"));
+       brk.setText(new String(text2));
+       position = index = 0;
+       while ((position = brk.next()) != BreakIterator.DONE && position < text2.length) {
+           if (position != expectedLineResult[index++]) {
+               errln("Incorrect break given by thai line break iterator. Expected: " + expectedLineResult[index-1] + " Got: " + position);
+           }
+       }
+   }
+  
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java b/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java
new file mode 100644
index 0000000..6a5f969
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java
@@ -0,0 +1,492 @@
+/*
+ * Created on May 5, 2004
+ * 
+ * Copyright (C) 2004-2006 International Business Machines Corporation and others.
+ * All Rights Reserved.
+ *
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.ULocale;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.util.Arrays;
+
+
+/**
+ * Rule based break iterator data driven test.
+ *      Perform the tests from the file rbbitst.txt.
+ *      The test data file is common to both ICU4C and ICU4J.
+ *      See the data file for a description of the tests.
+ *
+ */
+public class RBBITestExtended extends TestFmwk {
+    
+    public static void main(String[] args)throws Exception {
+        new RBBITestExtended().run(args);
+    }
+    
+    
+public RBBITestExtended() { 
+    }
+
+
+
+static class TestParams {
+    BreakIterator   bi;
+    StringBuffer    dataToBreak    = new StringBuffer();
+    int[]           expectedBreaks = new int[1000];
+    int[]           srcLine        = new int[1000];
+    int[]           srcCol         = new int[1000];
+    ULocale         currentLocale  = new ULocale("en_US");
+}
+
+
+public void TestExtended() {
+
+    TestParams     tp = new TestParams();
+
+
+    //
+    //  Open and read the test data file.
+    //
+    InputStreamReader isr = null;
+    StringBuffer  testFileBuf = new StringBuffer();
+    try {
+        InputStream is = RBBITestExtended.class.getResourceAsStream("rbbitst.txt");
+        if (is == null) {
+            errln("Could not open test data file rbbitst.txt");
+            return;
+        }
+        isr = new InputStreamReader(is, "UTF-8");           
+        int c;
+        int count = 0;
+        for (;;) {
+            c = isr.read();
+            if (c < 0) {
+                break;
+            }
+            count++;
+            if (c==0xFEFF && count==1) {
+               // BOM in the test data file.  Discard it.
+               continue;
+            }
+           
+            UTF16.append(testFileBuf, c);
+        }
+        
+    } catch (IOException e) {
+        errln(e.toString());
+        return;
+    }
+    
+    String testString = testFileBuf.toString();
+    
+
+    final int  PARSE_COMMENT = 1;
+    final int  PARSE_TAG     = 2;
+    final int  PARSE_DATA    = 3;
+    final int  PARSE_NUM     = 4;
+
+    int parseState = PARSE_TAG;
+
+    int savedState = PARSE_TAG;
+
+    final char CH_LF        = 0x0a;
+    final char CH_CR        = 0x0d;
+    final char CH_HASH      = 0x23;
+    /*static const UChar CH_PERIOD    = 0x2e;*/
+    final char CH_LT        = 0x3c;
+    final char CH_GT        = 0x3e;
+    final char CH_BACKSLASH = 0x5c;
+    final char CH_BULLET    = 0x2022;
+
+    int    lineNum  = 1;
+    int    colStart = 0;
+    int    column   = 0;
+    int    charIdx  = 0;
+    int    i;
+
+    int    tagValue = 0;       // The numeric value of a <nnn> tag.
+    int    len = testString.length();
+
+    for (charIdx = 0; charIdx < len; ) {
+        int  c = UTF16.charAt(testString, charIdx);
+        charIdx++;
+        if (c == CH_CR && charIdx<len && testString.charAt(charIdx) == CH_LF) {
+            // treat CRLF as a unit
+            c = CH_LF;
+            charIdx++;
+        }
+        if (c == CH_LF || c == CH_CR) {
+            lineNum++;
+            colStart = charIdx;
+        }
+        column = charIdx - colStart + 1;
+
+        switch (parseState) {
+        case PARSE_COMMENT:
+            if (c == 0x0a || c == 0x0d) {
+                parseState = savedState;
+            }
+            break;
+
+        case PARSE_TAG:
+            {
+            if (c == CH_HASH) {
+                parseState = PARSE_COMMENT;
+                savedState = PARSE_TAG;
+                break;
+            }
+            if (UCharacter.isWhitespace(c)) {
+                break;
+            }
+           if (testString.startsWith("<word>", charIdx-1)) {
+                tp.bi = BreakIterator.getWordInstance(tp.currentLocale);
+                charIdx += 5;
+                break;
+            }
+            if (testString.startsWith("<char>", charIdx-1)) {
+                tp.bi = BreakIterator.getCharacterInstance(tp.currentLocale);
+                charIdx += 5;
+                break;
+            }
+            if (testString.startsWith("<line>", charIdx-1)) {
+                tp.bi = BreakIterator.getLineInstance(tp.currentLocale);
+                charIdx += 5;
+                break;
+            }
+            if (testString.startsWith("<sent>", charIdx-1)) {
+                tp.bi = BreakIterator.getSentenceInstance(tp.currentLocale);
+                charIdx += 5;
+                break;
+            }
+            if (testString.startsWith("<title>", charIdx-1)) {
+                tp.bi = BreakIterator.getTitleInstance(tp.currentLocale);
+                charIdx += 6;
+                break;
+            }
+            if (testString.startsWith("<locale ", charIdx-1)) {
+                int closeIndex = testString.indexOf(">", charIdx);
+                if (closeIndex < 0) {
+                    errln("line" + lineNum + ": missing close on <locale  tag.");
+                    break;
+                }
+                String localeName = testString.substring(charIdx+6, closeIndex);
+                localeName = localeName.trim();
+                tp.currentLocale = new ULocale(localeName);
+                charIdx = closeIndex+1;
+                break;
+            }
+            if (testString.startsWith("<data>", charIdx-1)) {
+                parseState = PARSE_DATA;
+                charIdx += 5;
+                tp.dataToBreak.setLength(0);
+                Arrays.fill(tp.expectedBreaks, 0);
+                Arrays.fill(tp.srcCol, 0);
+                Arrays.fill(tp.srcLine, 0);
+                break;
+            }
+
+            errln("line" + lineNum + ": Tag expected in test file.");
+            return;
+            //parseState = PARSE_COMMENT;
+            //savedState = PARSE_DATA;
+            }
+
+        case PARSE_DATA:
+            if (c == CH_BULLET) {
+                int  breakIdx = tp.dataToBreak.length();
+                tp.expectedBreaks[breakIdx] = -1;
+                tp.srcLine[breakIdx]        = lineNum;
+                tp.srcCol[breakIdx]         = column;
+                break;
+            }
+
+            if (testString.startsWith("</data>", charIdx-1))  {
+                // Add final entry to mappings from break location to source file position.
+                //  Need one extra because last break position returned is after the
+                //    last char in the data, not at the last char.
+                int idx = tp.dataToBreak.length();
+                tp.srcLine[idx] = lineNum;
+                tp.srcCol[idx]  = column;
+
+                parseState = PARSE_TAG;
+                charIdx += 6;
+
+                // RUN THE TEST!
+                executeTest(tp);
+                break;
+            }
+
+           if (testString.startsWith("\\N{", charIdx-1)) {
+               int nameEndIdx = testString.indexOf('}', charIdx);
+               if (nameEndIdx == -1) {
+                   errln("Error in named character in test file at line " + lineNum +
+                           ", col " + column);
+               }
+                // Named character, e.g. \N{COMBINING GRAVE ACCENT}
+                // Get the code point from the name and insert it into the test data.
+                String charName = testString.substring(charIdx+2, nameEndIdx);
+                c = UCharacter.getCharFromName(charName);
+                if (c == -1) {
+                    errln("Error in named character in test file at line " + lineNum +
+                            ", col " + column);
+                } else {               
+                    // Named code point was recognized.  Insert it
+                    //   into the test data.
+                    UTF16.append(tp.dataToBreak, c);
+                    for (i = tp.dataToBreak.length()-1; i>=0 && tp.srcLine[i]==0; i--) {
+                        tp.srcLine[i] = lineNum;
+                        tp.srcCol[i]  = column;
+                    }
+                    
+                 }
+                if (nameEndIdx > charIdx) {
+                    charIdx = nameEndIdx+1;
+                }
+                break;
+            }
+
+            if (testString.startsWith("<>", charIdx-1)) {
+                charIdx++;
+                int  breakIdx = tp.dataToBreak.length();
+                tp.expectedBreaks[breakIdx] = -1;
+                tp.srcLine[breakIdx]        = lineNum;
+                tp.srcCol[breakIdx]         = column;
+                break;
+            }
+
+            if (c == CH_LT) {
+                tagValue   = 0;
+                parseState = PARSE_NUM;
+                break;
+            }
+
+            if (c == CH_HASH && column==3) {   // TODO:  why is column off so far?
+                parseState = PARSE_COMMENT;
+                savedState = PARSE_DATA;
+                break;
+            }
+
+            if (c == CH_BACKSLASH) {
+                // Check for \ at end of line, a line continuation.
+                //     Advance over (discard) the newline
+                int cp = UTF16.charAt(testString, charIdx); 
+                if (cp == CH_CR && charIdx<len && UTF16.charAt(testString, charIdx+1) == CH_LF) {
+                    // We have a CR LF
+                    //  Need an extra increment of the input ptr to move over both of them
+                    charIdx++;
+                }
+                if (cp == CH_LF || cp == CH_CR) {
+                    lineNum++;
+                    column   = 0;
+                    charIdx++;
+                    colStart = charIdx;
+                    break;
+                }
+
+                // Let unescape handle the back slash.
+                int  charIdxAr[] = new int[1];
+                charIdxAr[0] = charIdx;
+                cp = Utility.unescapeAt(testString, charIdxAr);
+                if (cp != -1) {
+                    // Escape sequence was recognized.  Insert the char
+                    //   into the test data.
+                    charIdx = charIdxAr[0];
+                    UTF16.append(tp.dataToBreak, cp);
+                    for (i=tp.dataToBreak.length()-1; i>=0 && tp.srcLine[i]==0; i--) {
+                        tp.srcLine[i] = lineNum;
+                        tp.srcCol[i]  = column;
+                    }
+                    
+                    break;
+                }
+
+
+                // Not a recognized backslash escape sequence.
+                // Take the next char as a literal.
+                //  TODO:  Should this be an error?
+                c = UTF16.charAt(testString,charIdx);
+                charIdx = UTF16.moveCodePointOffset(testString, charIdx, 1);
+             }
+
+            // Normal, non-escaped data char.
+            UTF16.append(tp.dataToBreak, c);
+ 
+            // Save the mapping from offset in the data to line/column numbers in
+            //   the original input file.  Will be used for better error messages only.
+            //   If there's an expected break before this char, the slot in the mapping
+            //     vector will already be set for this char; don't overwrite it.
+            for (i=tp.dataToBreak.length()-1; i>=0 && tp.srcLine[i]==0; i--) {
+                tp.srcLine[i] = lineNum;
+                tp.srcCol[i]  = column;
+            }
+            break;
+
+
+        case PARSE_NUM:
+            // We are parsing an expected numeric tag value, like <1234>,
+            //   within a chunk of data.
+            if (UCharacter.isWhitespace(c)) {
+                break;
+            }
+
+            if (c == CH_GT) {
+                // Finished the number.  Add the info to the expected break data,
+                //   and switch parse state back to doing plain data.
+                parseState = PARSE_DATA;
+                if (tagValue == 0) {
+                    tagValue = -1;
+                }
+                int  breakIdx = tp.dataToBreak.length();
+                tp.expectedBreaks[breakIdx] = tagValue;
+                tp.srcLine[breakIdx]        = lineNum;
+                tp.srcCol[breakIdx]         = column;
+                break;
+            }
+
+            if (UCharacter.isDigit(c)) {
+                tagValue = tagValue*10 + UCharacter.digit(c);
+                break;
+            }
+
+            errln("Syntax Error in test file at line "+ lineNum +", col %d" + column);
+            return;
+            
+            // parseState = PARSE_COMMENT;   // TODO: unreachable.  Don't stop on errors.
+            // break;
+        }
+
+
+ 
+    }
+}
+
+void executeTest(TestParams t) {
+    int    bp;
+    int    prevBP;
+    int    i;
+
+    if (t.bi == null) {
+        return;
+    }
+    
+    t.bi.setText(t.dataToBreak.toString());
+    //
+    //  Run the iterator forward
+    //
+    prevBP = -1;
+    for (bp = t.bi.first(); bp != BreakIterator.DONE; bp = t.bi.next()) {
+        if (prevBP ==  bp) {
+            // Fail for lack of forward progress.
+            errln("Forward Iteration, no forward progress.  Break Pos=" + bp +
+                    "  File line,col=" + t.srcLine[bp] + ", " + t.srcCol[bp]);
+            break;
+        }
+
+        // Check that there were we didn't miss an expected break between the last one
+        //  and this one.
+        for (i=prevBP+1; i<bp; i++) {
+            if (t.expectedBreaks[i] != 0) {
+                errln("Forward Iteration, break expected, but not found.  Pos=" + i + 
+                    "  File line,col= " + t.srcLine[i] + ", " + t.srcCol[i]);
+            }
+        }
+
+        // Check that the break we did find was expected
+        if (t.expectedBreaks[bp] == 0) {
+            errln("Forward Iteration, break found, but not expected.  Pos=" + bp + 
+                    "  File line,col= " + t.srcLine[bp] + ", " + t.srcCol[bp]);
+        } else {
+            // The break was expected.
+            //   Check that the {nnn} tag value is correct.
+            int expectedTagVal = t.expectedBreaks[bp];
+            if (expectedTagVal == -1) {
+                expectedTagVal = 0;
+            }
+            int line = t.srcLine[bp];
+            int rs = ((RuleBasedBreakIterator)t.bi).getRuleStatus();
+            if (rs != expectedTagVal) {
+                errln("Incorrect status for forward break.  Pos = " + bp +
+                        ".  File line,col = " + line + ", " + t.srcCol[bp] + "\n" +
+                      "          Actual, Expected status = " + rs + ", " + expectedTagVal);
+            }
+        }
+
+
+        prevBP = bp;
+    }
+
+    // Verify that there were no missed expected breaks after the last one found
+    for (i=prevBP+1; i<t.dataToBreak.length()+1; i++) {
+        if (t.expectedBreaks[i] != 0) {
+            errln("Forward Iteration, break expected, but not found.  Pos=" + i + 
+                    "  File line,col= " + t.srcLine[i] + ", " + t.srcCol[i]);
+       }
+    }
+
+    //
+    //  Run the iterator backwards, verify that the same breaks are found.
+    //
+    prevBP = t.dataToBreak.length()+2;  // start with a phony value for the last break pos seen.
+    for (bp = t.bi.last(); bp != BreakIterator.DONE; bp = t.bi.previous()) {
+        if (prevBP ==  bp) {
+            // Fail for lack of progress.
+            errln("Reverse Iteration, no progress.  Break Pos=" + bp +
+                    "File line,col=" + t.srcLine[bp] + " " +  t.srcCol[bp]);
+            break;
+        }
+
+        // Check that there were we didn't miss an expected break between the last one
+        //  and this one.  (UVector returns zeros for index out of bounds.)
+        for (i=prevBP-1; i>bp; i--) {
+            if (t.expectedBreaks[i] != 0) {
+                errln("Reverse Itertion, break expected, but not found.  Pos=" + i + 
+                    "  File line,col= " + t.srcLine[i] + ", " + t.srcCol[i]);
+            }
+        }
+
+        // Check that the break we did find was expected
+        if (t.expectedBreaks[bp] == 0) {
+            errln("Reverse Itertion, break found, but not expected.  Pos=" + bp + 
+                    "  File line,col= " + t.srcLine[bp] + ", " + t.srcCol[bp]);
+        } else {
+            // The break was expected.
+            //   Check that the {nnn} tag value is correct.
+            int expectedTagVal = t.expectedBreaks[bp];
+            if (expectedTagVal == -1) {
+                expectedTagVal = 0;
+            }
+            int line = t.srcLine[bp];
+            int rs = ((RuleBasedBreakIterator)t.bi).getRuleStatus();
+            if (rs != expectedTagVal) {
+                errln("Incorrect status for reverse break.  Pos=  " + bp +
+                        "File line,col= " + line + ", " + t.srcCol[bp] + "\n" +
+                      "          Actual, Expected status = " + rs + ", " + expectedTagVal);
+                  }
+        }
+
+        prevBP = bp;
+    }
+
+    // Verify that there were no missed breaks prior to the last one found
+    for (i=prevBP-1; i>=0; i--) {
+        if (t.expectedBreaks[i] != 0) {
+            errln("Forward Itertion, break expected, but not found.  Pos=" + i +
+                    "  File line,col= " + t.srcLine[i] + ", " + t.srcCol[i]);
+         }
+    }
+}
+
+
+
+
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java b/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
new file mode 100644
index 0000000..182f410
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
@@ -0,0 +1,1984 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008 International Business Machines Corporation and     *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ package com.ibm.icu.dev.test.rbbi;
+
+
+// Monkey testing of RuleBasedBreakIterator
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+
+/**
+ * Monkey tests for RBBI.  These tests have independent implementations of
+ * the Unicode TR boundary rules, and compare results between these and ICU's
+ * implementation, using random data.
+ * 
+ * Tests cover Grapheme Cluster (char), Word and Line breaks
+ * 
+ * Ported from ICU4C, original code in file source/test/intltest/rbbitst.cpp
+ *
+ */
+public class RBBITestMonkey extends TestFmwk {
+    
+    public static void main(String[] args) {
+        new RBBITestMonkey().run(args);
+    }
+    
+//
+//     classs RBBIMonkeyKind
+//
+//        Monkey Test for Break Iteration
+//        Abstract interface class.   Concrete derived classes independently
+//        implement the break rules for different iterator types.
+//
+//        The Monkey Test itself uses doesn't know which type of break iterator it is
+//        testing, but works purely in terms of the interface defined here.
+//
+    abstract static class RBBIMonkeyKind {
+    
+        // Return a List of UnicodeSets, representing the character classes used
+        //   for this type of iterator.
+        abstract  List  charClasses();
+
+        // Set the test text on which subsequent calls to next() will operate
+        abstract  void   setText(StringBuffer text);
+
+        // Find the next break postion, starting from the specified position.
+        // Return -1 after reaching end of string.
+        abstract   int   next(int i);
+        
+        // A Character Property, one of the constants defined in class UProperty.
+        //   The value fo this property will be displayed for the characters
+        //    near any test failure.  
+        int   fCharProperty;
+    }
+
+ 
+    /**
+     * Monkey test subclass for testing Character (Grapheme Cluster) boundaries.
+     */
+    static class RBBICharMonkey extends RBBIMonkeyKind {
+        List                      fSets;
+
+        UnicodeSet                fCRLFSet;
+        UnicodeSet                fControlSet;
+        UnicodeSet                fExtendSet;
+        UnicodeSet                fPrependSet;
+        UnicodeSet                fSpacingSet;
+        UnicodeSet                fLSet;
+        UnicodeSet                fVSet;
+        UnicodeSet                fTSet;
+        UnicodeSet                fLVSet;
+        UnicodeSet                fLVTSet;
+        UnicodeSet                fHangulSet;
+        UnicodeSet                fAnySet;
+
+        StringBuffer              fText;
+
+
+    RBBICharMonkey() {
+        fText       = null;
+        fCharProperty = UProperty.GRAPHEME_CLUSTER_BREAK;
+        fCRLFSet    = new UnicodeSet("[\\r\\n]");
+        fControlSet = new UnicodeSet("[\\p{Grapheme_Cluster_Break = Control}]");
+        fExtendSet  = new UnicodeSet("[\\p{Grapheme_Cluster_Break = Extend}]");
+        fPrependSet = new UnicodeSet("[\\p{Grapheme_Cluster_Break = Prepend}]");
+        fSpacingSet = new UnicodeSet("[\\p{Grapheme_Cluster_Break = SpacingMark}]");
+        fLSet       = new UnicodeSet("[\\p{Grapheme_Cluster_Break = L}]");
+        fVSet       = new UnicodeSet("[\\p{Grapheme_Cluster_Break = V}]");
+        fTSet       = new UnicodeSet("[\\p{Grapheme_Cluster_Break = T}]");
+        fLVSet      = new UnicodeSet("[\\p{Grapheme_Cluster_Break = LV}]");
+        fLVTSet     = new UnicodeSet("[\\p{Grapheme_Cluster_Break = LVT}]");
+        fHangulSet  = new UnicodeSet();
+        fHangulSet.addAll(fLSet);
+        fHangulSet.addAll(fVSet);
+        fHangulSet.addAll(fTSet);
+        fHangulSet.addAll(fLVSet);
+        fHangulSet.addAll(fLVTSet);
+
+        fAnySet     = new UnicodeSet("[\\u0000-\\U0010ffff]");
+
+        fSets       = new ArrayList();
+        fSets.add(fCRLFSet);
+        fSets.add(fControlSet);
+        fSets.add(fExtendSet);
+        fSets.add(fPrependSet);
+        fSets.add(fSpacingSet);
+        fSets.add(fHangulSet);
+        fSets.add(fAnySet);
+     }
+
+
+    void setText(StringBuffer s) {
+        fText = s;
+    }
+    
+    List charClasses() {
+        return fSets;
+    }
+    
+    int next(int prevPos) {
+        int    p1, p2, p3;    // Indices of the significant code points around the
+                              //   break position being tested.  The candidate break
+                              //   location is before p2.
+    
+        int     breakPos = -1;
+    
+        int   c1, c2, c3;     // The code points at p0, p1, p2 & p3.
+        
+        // Previous break at end of string.  return DONE.
+        if (prevPos >= fText.length()) {
+            return -1;
+        }
+        p1 = p2 = p3 = prevPos;
+        c3 =  UTF16.charAt(fText, prevPos);
+        c1 = c2 = 0;
+    
+        // Loop runs once per "significant" character position in the input text.
+        for (;;) {
+            // Move all of the positions forward in the input string.
+            p1 = p2;  c1 = c2;
+            p2 = p3;  c2 = c3;
+    
+            // Advance p3 by one codepoint
+            p3 = moveIndex32(fText, p3, 1);
+            c3 = (p3>=fText.length())? -1: UTF16.charAt(fText, p3);
+    
+            if (p1 == p2) {
+                // Still warming up the loop.  (won't work with zero length strings, but we don't care)
+                continue;
+            }
+            if (p2 == fText.length()) {
+                // Reached end of string.  Always a break position.
+                break;
+            }
+    
+            // Rule  GB3   CR x LF
+            //     No Extend or Format characters may appear between the CR and LF,
+            //     which requires the additional check for p2 immediately following p1.
+            //
+            if (c1==0x0D && c2==0x0A && p1==(p2-1)) {
+                continue;
+            }
+    
+            // Rule (GB4).   ( Control | CR | LF ) <break>
+            if (fControlSet.contains(c1) ||
+                c1 == 0x0D ||
+                c1 == 0x0A)  {
+                break;
+            }
+    
+            // Rule (GB5)    <break>  ( Control | CR | LF )
+            //
+            if (fControlSet.contains(c2) ||
+                c2 == 0x0D ||
+                c2 == 0x0A)  {
+                break;
+            }
+    
+    
+            // Rule (GB6)  L x ( L | V | LV | LVT )
+            if (fLSet.contains(c1) &&
+                (fLSet.contains(c2)  ||
+                    fVSet.contains(c2)  ||
+                    fLVSet.contains(c2) ||
+                    fLVTSet.contains(c2))) {
+                continue;
+            }
+    
+            // Rule (GB7)    ( LV | V )  x  ( V | T )
+            if ((fLVSet.contains(c1) || fVSet.contains(c1)) &&
+                (fVSet.contains(c2) || fTSet.contains(c2)))  {
+                continue;
+            }
+    
+            // Rule (GB8)    ( LVT | T)  x T
+            if ((fLVTSet.contains(c1) || fTSet.contains(c1)) &&
+                fTSet.contains(c2))  {
+                continue;
+            }
+    
+            // Rule (GB9)    Numeric x ALetter
+            if (fExtendSet.contains(c2))  {
+                continue;
+            }
+    
+            // Rule (GB9a)   x  SpacingMark
+            if (fSpacingSet.contains(c2)) {
+                continue;
+            }
+    
+            // Rule (GB9b)   Prepend x
+            if (fPrependSet.contains(c1)) {
+                continue;
+            }
+    
+            // Rule (GB10)  Any  <break>  Any
+            break;
+        }
+    
+        breakPos = p2;
+        return breakPos;
+        }
+    }
+
+
+    /**
+     * 
+     * Word Monkey Test Class
+     *
+     * 
+     * 
+     */
+    static class RBBIWordMonkey extends RBBIMonkeyKind {
+        List                      fSets;
+        StringBuffer              fText;
+
+        UnicodeSet                fCRSet;
+        UnicodeSet                fLFSet;
+        UnicodeSet                fNewlineSet;
+        UnicodeSet                fKatakanaSet;
+        UnicodeSet                fALetterSet;
+        UnicodeSet                fMidNumLetSet;
+        UnicodeSet                fMidLetterSet;
+        UnicodeSet                fMidNumSet;
+        UnicodeSet                fNumericSet;
+        UnicodeSet                fFormatSet;
+        UnicodeSet                fExtendSet;
+        UnicodeSet                fExtendNumLetSet;
+        UnicodeSet                fOtherSet;
+
+        
+        RBBIWordMonkey() {
+            fCharProperty    = UProperty.WORD_BREAK;
+
+            fCRSet           = new UnicodeSet("[\\p{Word_Break = CR}]");
+            fLFSet           = new UnicodeSet("[\\p{Word_Break = LF}]");
+            fNewlineSet      = new UnicodeSet("[\\p{Word_Break = Newline}]");
+            fALetterSet      = new UnicodeSet("[\\p{Word_Break = ALetter}]");
+            fKatakanaSet     = new UnicodeSet("[\\p{Word_Break = Katakana}]");
+            fMidNumLetSet    = new UnicodeSet("[\\p{Word_Break = MidNumLet}]");
+            fMidLetterSet    = new UnicodeSet("[\\p{Word_Break = MidLetter}]");
+            fMidNumSet       = new UnicodeSet("[\\p{Word_Break = MidNum}]");
+            fNumericSet      = new UnicodeSet("[\\p{Word_Break = Numeric}]");
+            fFormatSet       = new UnicodeSet("[\\p{Word_Break = Format}]");
+            fExtendNumLetSet = new UnicodeSet("[\\p{Word_Break = ExtendNumLet}]");
+            fExtendSet       = new UnicodeSet("[\\p{Word_Break = Extend}]");
+
+            fOtherSet        = new UnicodeSet();
+            fOtherSet.complement();
+            fOtherSet.removeAll(fCRSet);
+            fOtherSet.removeAll(fLFSet);
+            fOtherSet.removeAll(fNewlineSet);
+            fOtherSet.removeAll(fALetterSet);
+            fOtherSet.removeAll(fKatakanaSet);
+            fOtherSet.removeAll(fMidLetterSet);
+            fOtherSet.removeAll(fMidNumSet);
+            fOtherSet.removeAll(fNumericSet);
+            fOtherSet.removeAll(fFormatSet);
+            fOtherSet.removeAll(fExtendSet);
+            fOtherSet.removeAll(fExtendNumLetSet);
+            // Inhibit dictionary characters from being tested at all.
+            fOtherSet.removeAll(new UnicodeSet("[\\p{LineBreak = Complex_Context}]"));
+
+            fSets            = new ArrayList();
+            fSets.add(fCRSet);
+            fSets.add(fLFSet);
+            fSets.add(fNewlineSet);
+            fSets.add(fALetterSet);
+            fSets.add(fKatakanaSet);
+            fSets.add(fMidLetterSet);
+            fSets.add(fMidNumLetSet);
+            fSets.add(fMidNumSet);
+            fSets.add(fNumericSet);
+            fSets.add(fFormatSet);
+            fSets.add(fExtendSet);
+            fSets.add(fExtendNumLetSet);
+            fSets.add(fOtherSet);
+        }
+        
+        
+        List  charClasses() {
+         return fSets;  
+        }
+        
+        void   setText(StringBuffer s) { 
+            fText = s;        
+        }   
+
+        int   next(int prevPos) {  
+            int    /*p0,*/ p1, p2, p3;      // Indices of the significant code points around the 
+                                        //   break position being tested.  The candidate break
+                                        //   location is before p2.
+            int     breakPos = -1;
+            
+            int c0, c1, c2, c3;   // The code points at p0, p1, p2 & p3.
+            
+            // Previous break at end of string.  return DONE.
+            if (prevPos >= fText.length()) {
+                return -1;
+            }
+            /*p0 =*/ p1 = p2 = p3 = prevPos;
+            c3 = UTF16.charAt(fText, prevPos);
+            c0 = c1 = c2 = 0;
+            
+            
+
+            // Loop runs once per "significant" character position in the input text.
+            for (;;) {
+                // Move all of the positions forward in the input string.
+                /*p0 = p1;*/  c0 = c1;
+                p1 = p2;  c1 = c2;
+                p2 = p3;  c2 = c3;
+                
+                // Advancd p3 by    X(Extend | Format)*   Rule 4
+                //    But do not advance over Extend & Format following a new line. (Unicode 5.1 change)
+                do {
+                    p3 = moveIndex32(fText, p3, 1);
+                    c3 = -1;
+                    if (p3>=fText.length()) {
+                        break;
+                    }
+                    c3 = UTF16.charAt(fText, p3);
+                    if (fCRSet.contains(c2) || fLFSet.contains(c2) || fNewlineSet.contains(c2)) {
+                        break;
+                    }
+                }
+                while (setContains(fFormatSet, c3) || setContains(fExtendSet, c3));
+
+                if (p1 == p2) {
+                    // Still warming up the loop.  (won't work with zero length strings, but we don't care)
+                    continue;
+                }
+                if (p2 == fText.length()) {
+                    // Reached end of string.  Always a break position.
+                    break;
+                }
+
+                // Rule (3)   CR x LF
+                //     No Extend or Format characters may appear between the CR and LF,
+                //     which requires the additional check for p2 immediately following p1.
+                //
+                if (c1==0x0D && c2==0x0A) {
+                    continue;
+                }
+                
+                // Rule (3a)  Break before and after newlines (including CR and LF)
+                //
+                if (fCRSet.contains(c1) || fLFSet.contains(c1) || fNewlineSet.contains(c1)) {
+                    break;
+                }
+                if (fCRSet.contains(c2) || fLFSet.contains(c2) || fNewlineSet.contains(c2)) {
+                    break;
+                }
+
+                // Rule (5).   ALetter x ALetter
+                if (fALetterSet.contains(c1) &&
+                        fALetterSet.contains(c2))  {
+                    continue;
+                }
+                
+                // Rule (6)  ALetter  x  (MidLetter | MidNumLet)  ALetter
+                //
+                if ( fALetterSet.contains(c1) &&
+                        (fMidLetterSet.contains(c2) || fMidNumLetSet.contains(c2)) &&
+                        setContains(fALetterSet, c3)) {
+                    continue;
+                }
+                
+                
+                // Rule (7)  ALetter (MidLetter | MidNumLet)   x  ALetter
+                if (fALetterSet.contains(c0) &&
+                        (fMidLetterSet.contains(c1) ||  fMidNumLetSet.contains(c1))  &&
+                        fALetterSet.contains(c2)) {
+                    continue;
+                }
+                
+                //  Rule (8)    Numeric x Numeric
+                if (fNumericSet.contains(c1) &&
+                        fNumericSet.contains(c2))  {
+                    continue;
+                }
+                
+                // Rule (9)    ALetter x Numeric
+                if (fALetterSet.contains(c1) &&
+                        fNumericSet.contains(c2))  {
+                    continue;
+                }
+
+                // Rule (10)    Numeric x ALetter
+                if (fNumericSet.contains(c1) &&
+                        fALetterSet.contains(c2))  {
+                    continue;
+                }
+                
+                // Rule (11)   Numeric (MidNum | MidNumLet)  x  Numeric
+                if ( fNumericSet.contains(c0) &&
+                        (fMidNumSet.contains(c1) || fMidNumLetSet.contains(c1))  && 
+                        fNumericSet.contains(c2)) {
+                    continue;
+                }
+                
+                // Rule (12)  Numeric x (MidNum | MidNumLet) Numeric
+                if (fNumericSet.contains(c1) &&
+                        (fMidNumSet.contains(c2) || fMidNumLetSet.contains(c2)) &&
+                        setContains(fNumericSet, c3)) {
+                    continue;
+                }
+                
+                // Rule (13)  Katakana x Katakana
+                if (fKatakanaSet.contains(c1) &&
+                        fKatakanaSet.contains(c2))  {
+                    continue;
+                }
+                
+                // Rule 13a  (ALetter | Numeric | Katakana | ExtendNumLet) x ExtendNumLet
+                if ((fALetterSet.contains(c1) || fNumericSet.contains(c1) ||
+                        fKatakanaSet.contains(c1) || fExtendNumLetSet.contains(c1)) &&
+                        fExtendNumLetSet.contains(c2)) {
+                    continue;
+                }
+                // Rule 13b   ExtendNumLet x (ALetter | Numeric | Katakana | ExtendNumLet)
+                if (fExtendNumLetSet.contains(c1) &&
+                        (fALetterSet.contains(c2) || fNumericSet.contains(c2) ||
+                        fKatakanaSet.contains(c2) || fExtendNumLetSet.contains(c2))) {
+                    continue;
+                }
+               
+                // Rule 14.  Break found here.
+                break;
+            }
+            
+            breakPos = p2;
+            return breakPos;
+        }
+        
+    }
+
+ 
+    static class RBBILineMonkey extends RBBIMonkeyKind {
+        
+        List        fSets;
+        
+        UnicodeSet  fBK;
+        UnicodeSet  fCR;
+        UnicodeSet  fLF;
+        UnicodeSet  fCM;
+        UnicodeSet  fNL;
+        UnicodeSet  fSG;
+        UnicodeSet  fWJ;
+        UnicodeSet  fZW;
+        UnicodeSet  fGL;
+        UnicodeSet  fCB;
+        UnicodeSet  fSP;
+        UnicodeSet  fB2;
+        UnicodeSet  fBA;
+        UnicodeSet  fBB;
+        UnicodeSet  fHY;
+        UnicodeSet  fCL;
+        UnicodeSet  fEX;
+        UnicodeSet  fIN;
+        UnicodeSet  fNS;
+        UnicodeSet  fOP;
+        UnicodeSet  fQU;
+        UnicodeSet  fIS;
+        UnicodeSet  fNU;
+        UnicodeSet  fPO;
+        UnicodeSet  fPR;
+        UnicodeSet  fSY;
+        UnicodeSet  fAI;
+        UnicodeSet  fAL;
+        UnicodeSet  fID;
+        UnicodeSet  fSA;
+        UnicodeSet  fJL;
+        UnicodeSet  fJV;
+        UnicodeSet  fJT;
+        UnicodeSet  fH2;
+        UnicodeSet  fH3;
+        UnicodeSet  fXX;
+        
+        StringBuffer  fText;
+        int           fOrigPositions;
+        
+        
+        
+        RBBILineMonkey()
+        {
+            fCharProperty  = UProperty.LINE_BREAK;
+            fSets          = new ArrayList();
+            
+            fBK    = new UnicodeSet("[\\p{Line_Break=BK}]");
+            fCR    = new UnicodeSet("[\\p{Line_break=CR}]");
+            fLF    = new UnicodeSet("[\\p{Line_break=LF}]");
+            fCM    = new UnicodeSet("[\\p{Line_break=CM}]");
+            fNL    = new UnicodeSet("[\\p{Line_break=NL}]");
+            fWJ    = new UnicodeSet("[\\p{Line_break=WJ}]");
+            fZW    = new UnicodeSet("[\\p{Line_break=ZW}]");
+            fGL    = new UnicodeSet("[\\p{Line_break=GL}]");
+            fCB    = new UnicodeSet("[\\p{Line_break=CB}]");
+            fSP    = new UnicodeSet("[\\p{Line_break=SP}]");
+            fB2    = new UnicodeSet("[\\p{Line_break=B2}]");
+            fBA    = new UnicodeSet("[\\p{Line_break=BA}]");
+            fBB    = new UnicodeSet("[\\p{Line_break=BB}]");
+            fHY    = new UnicodeSet("[\\p{Line_break=HY}]");
+            fCL    = new UnicodeSet("[\\p{Line_break=CL}]");
+            fEX    = new UnicodeSet("[\\p{Line_break=EX}]");
+            fIN    = new UnicodeSet("[\\p{Line_break=IN}]");
+            fNS    = new UnicodeSet("[\\p{Line_break=NS}]");
+            fOP    = new UnicodeSet("[\\p{Line_break=OP}]");
+            fQU    = new UnicodeSet("[\\p{Line_break=QU}]");
+            fIS    = new UnicodeSet("[\\p{Line_break=IS}]");
+            fNU    = new UnicodeSet("[\\p{Line_break=NU}]");
+            fPO    = new UnicodeSet("[\\p{Line_break=PO}]");
+            fPR    = new UnicodeSet("[\\p{Line_break=PR}]");
+            fSY    = new UnicodeSet("[\\p{Line_break=SY}]");
+            fAI    = new UnicodeSet("[\\p{Line_break=AI}]");
+            fAL    = new UnicodeSet("[\\p{Line_break=AL}]");
+            fID    = new UnicodeSet("[\\p{Line_break=ID}]");
+            fSA    = new UnicodeSet("[\\p{Line_break=SA}]");
+            fJL    = new UnicodeSet("[\\p{Line_break=JL}]");
+            fJV    = new UnicodeSet("[\\p{Line_break=JV}]");
+            fJT    = new UnicodeSet("[\\p{Line_break=JT}]");
+            fH2    = new UnicodeSet("[\\p{Line_break=H2}]");
+            fH3    = new UnicodeSet("[\\p{Line_break=H3}]");
+            fSG    = new UnicodeSet("[\\ud800-\\udfff]");
+            fXX    = new UnicodeSet("[\\p{Line_break=XX}]");
+
+            
+            fAL.addAll(fXX);     // Default behavior for XX is identical to AL
+            fAL.addAll(fAI);     // Default behavior for AI is identical to AL
+            fAL.addAll(fSA);     // Default behavior for SA is XX, which defaults to AL
+            fAL.addAll(fSG);     // Default behavior for SG (unpaired surrogates) is AL
+            
+            
+            
+            fSets.add(fBK);
+            fSets.add(fCR);
+            fSets.add(fLF);
+            fSets.add(fCM);
+            fSets.add(fNL);
+            fSets.add(fWJ);
+            fSets.add(fZW);
+            fSets.add(fGL);
+            fSets.add(fCB);
+            fSets.add(fSP);
+            fSets.add(fB2);
+            fSets.add(fBA);
+            fSets.add(fBB);
+            fSets.add(fHY);
+            fSets.add(fH2);
+            fSets.add(fH3);
+            fSets.add(fCL);
+            fSets.add(fEX);
+            fSets.add(fIN);
+            fSets.add(fJL);
+            fSets.add(fJT);
+            fSets.add(fJV);
+            fSets.add(fNS);
+            fSets.add(fOP);
+            fSets.add(fQU);
+            fSets.add(fIS);
+            fSets.add(fNU);
+            fSets.add(fPO);
+            fSets.add(fPR);
+            fSets.add(fSY);
+            fSets.add(fAI);
+            fSets.add(fAL);
+            fSets.add(fID);
+            fSets.add(fWJ);
+            fSets.add(fSA);
+            fSets.add(fSG);
+            
+        }
+        
+        void setText(StringBuffer s) {
+            fText       = s;
+        }
+        
+        
+        
+
+        int next(int startPos) {
+            int    pos;       //  Index of the char following a potential break position
+            int    thisChar;  //  Character at above position "pos"
+            
+            int    prevPos;   //  Index of the char preceding a potential break position
+            int    prevChar;  //  Character at above position.  Note that prevChar
+                              //   and thisChar may not be adjacent because combining
+                              //   characters between them will be ignored.
+            
+            int    nextPos;   //  Index of the next character following pos.
+                              //     Usually skips over combining marks.
+            int    tPos;      //  temp value.
+            int    matchVals[]  = null;       // Number  Expression Match Results
+ 
+            
+            if (startPos >= fText.length()) {
+                return -1;
+            }
+            
+            
+            // Initial values for loop.  Loop will run the first time without finding breaks,
+            //                           while the invalid values shift out and the "this" and
+            //                           "prev" positions are filled in with good values.
+            pos      = prevPos   = -1;    // Invalid value, serves as flag for initial loop iteration.
+            thisChar = prevChar  = 0;
+            nextPos  = startPos;
+            
+            
+            // Loop runs once per position in the test text, until a break position
+            //  is found.  In each iteration, we are testing for a possible break
+            //  just preceding the character at index "pos".  The character preceding
+            //  this char is at postion "prevPos"; because of combining sequences,
+            //  "prevPos" can be arbitrarily far before "pos".
+            for (;;) {
+                // Advance to the next position to be tested.
+                prevPos   = pos;
+                prevChar  = thisChar;
+                pos       = nextPos;
+                nextPos   = moveIndex32(fText, pos, 1);
+                
+                // Rule LB2 - Break at end of text.
+                if (pos >= fText.length()) {
+                    break;
+                }
+                
+                // Rule LB 9 - adjust for combining sequences.
+                //             We do this rule out-of-order because the adjustment does
+                //             not effect the way that rules LB 3 through LB 6 match,
+                //             and doing it here rather than after LB 6 is substantially
+                //             simpler when combining sequences do occur.
+                
+                
+                // LB 9         Keep combining sequences together.
+                //              advance over any CM class chars at "pos", 
+                //              result is "nextPos" for the following loop iteration.
+                thisChar  = UTF16.charAt(fText, pos);
+                if (!(fSP.contains(thisChar) || fBK.contains(thisChar) || thisChar==0x0d ||
+                        thisChar==0x0a || fNL.contains(thisChar) || fZW.contains(thisChar) )) {
+                    for (;;) {
+                        if (nextPos == fText.length()) {
+                            break;   
+                        }
+                        int nextChar = UTF16.charAt(fText, nextPos);
+                        if (!fCM.contains(nextChar)) {
+                            break;
+                        }
+                        nextPos = moveIndex32(fText, nextPos, 1);
+                    }
+                }
+                
+                // LB 9 Treat X CM* as if it were X
+                //        No explicit action required.
+                
+                // LB 10     Treat any remaining combining mark as AL
+                if (fCM.contains(thisChar)) {
+                    thisChar = 'A';   
+                }
+
+                
+                // If the loop is still warming up - if we haven't shifted the initial
+                //   -1 positions out of prevPos yet - loop back to advance the
+                //    position in the input without any further looking for breaks.
+                if (prevPos == -1) {
+                    continue;
+                }
+                
+                // LB 4  Always break after hard line breaks,
+                if (fBK.contains(prevChar)) {
+                    break;
+                }
+                
+                // LB 5  Break after CR, LF, NL, but not inside CR LF
+                if (fCR.contains(prevChar) && fLF.contains(thisChar)) {
+                    continue;
+                }
+                if  (fCR.contains(prevChar) ||
+                     fLF.contains(prevChar) ||
+                     fNL.contains(prevChar))  {
+                    break;
+                }
+                
+                // LB 6  Don't break before hard line breaks
+                if (fBK.contains(thisChar) || fCR.contains(thisChar) ||
+                        fLF.contains(thisChar) || fNL.contains(thisChar) ) {
+                    continue;
+                }
+                
+                
+                // LB 7  Don't break before spaces or zero-width space.
+                if (fSP.contains(thisChar)) {
+                    continue;
+                }
+                
+                if (fZW.contains(thisChar)) {
+                    continue;
+                }
+                
+                // LB 8  Break after zero width space
+                if (fZW.contains(prevChar)) {
+                    break;
+                }
+                
+                //  LB 9, 10  Already done, at top of loop.
+                //
+                
+                
+                // LB 11
+                //    x  WJ
+                //    WJ  x
+                if (fWJ.contains(thisChar) || fWJ.contains(prevChar)) {
+                    continue;
+                }
+                
+                
+                // LB 12
+                //        GL x
+                if (fGL.contains(prevChar)) {
+                    continue;
+                }
+                
+                // LB 12a
+                //    [^SP BA HY] x GL
+                if (!(fSP.contains(prevChar) ||
+                      fBA.contains(prevChar) ||
+                      fHY.contains(prevChar)     ) && fGL.contains(thisChar)) {
+                    continue;
+                }
+
+                
+                
+                // LB 13  Don't break before closings.
+                //       NU x CL  and NU x IS are not matched here so that they will
+                //       fall into LB 17 and the more general number regular expression.
+                //
+                if (!fNU.contains(prevChar) && fCL.contains(thisChar) ||
+                        fEX.contains(thisChar) ||
+                        !fNU.contains(prevChar) && fIS.contains(thisChar) ||
+                        !fNU.contains(prevChar) && fSY.contains(thisChar))    {
+                    continue;
+                }
+                
+                // LB 14  Don't break after OP SP*
+                //       Scan backwards, checking for this sequence.
+                //       The OP char could include combining marks, so we actually check for
+                //           OP CM* SP* x
+                tPos = prevPos;
+                if (fSP.contains(prevChar)) {
+                    while (tPos > 0 && fSP.contains(UTF16.charAt(fText, tPos))) {
+                        tPos=moveIndex32(fText, tPos, -1);
+                    }
+                }
+                while (tPos > 0 && fCM.contains(UTF16.charAt(fText, tPos))) {
+                    tPos=moveIndex32(fText, tPos, -1);
+                }
+                if (fOP.contains(UTF16.charAt(fText, tPos))) {
+                    continue;
+                }
+                
+                // LB 15 Do not break within "[ 
+                //       QU CM* SP* x OP
+                if (fOP.contains(thisChar)) {
+                    // Scan backwards from prevChar to see if it is preceded by QU CM* SP*
+                    tPos = prevPos;
+                    while (tPos > 0 && fSP.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    while (tPos > 0 && fCM.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    if (fQU.contains(UTF16.charAt(fText, tPos))) {
+                        continue;
+                    }
+                }               
+                
+                // LB 16   CL SP* x NS
+                if (fNS.contains(thisChar)) {
+                    tPos = prevPos;
+                    while (tPos > 0 && fSP.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    while (tPos > 0 && fCM.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    if (fCL.contains(UTF16.charAt(fText, tPos))) {
+                        continue;
+                    }
+                }               
+                
+                               
+                // LB 17        B2 SP* x B2
+                if (fB2.contains(thisChar)) {
+                    tPos = prevPos;
+                    while (tPos > 0 && fSP.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    while (tPos > 0 && fCM.contains(UTF16.charAt(fText, tPos))) {
+                        tPos = moveIndex32(fText, tPos, -1);
+                    }
+                    if (fB2.contains(UTF16.charAt(fText, tPos))) {
+                        continue;
+                    }
+                }               
+                
+                // LB 18    break after space
+                if (fSP.contains(prevChar)) {
+                    break;
+                }
+                
+                // LB 19
+                //    x   QU
+                //    QU  x
+                if (fQU.contains(thisChar) || fQU.contains(prevChar)) {
+                    continue;
+                }
+                
+                // LB 20  Break around a CB
+                if (fCB.contains(thisChar) || fCB.contains(prevChar)) {
+                    break;
+                }
+                
+                // LB 21
+                if (fBA.contains(thisChar) ||
+                        fHY.contains(thisChar) ||
+                        fNS.contains(thisChar) ||
+                        fBB.contains(prevChar) )   {
+                    continue;
+                }
+                
+                // LB 22
+                if (fAL.contains(prevChar) && fIN.contains(thisChar) ||
+                        fID.contains(prevChar) && fIN.contains(thisChar) ||
+                        fIN.contains(prevChar) && fIN.contains(thisChar) ||
+                        fNU.contains(prevChar) && fIN.contains(thisChar) )   {
+                    continue;
+                }
+                
+                
+                // LB 23    ID x PO    (Note:  Leading CM behaves like ID)
+                //          AL x NU
+                //          NU x AL
+                if (fID.contains(prevChar) && fPO.contains(thisChar) ||
+                        fAL.contains(prevChar) && fNU.contains(thisChar) ||
+                        fNU.contains(prevChar) && fAL.contains(thisChar) )   {
+                    continue;
+                }
+                
+                // LB 24  Do not break between prefix and letters or ideographs.
+                //        PR x ID
+                //        PR x AL
+                //        PO x AL
+                if (fPR.contains(prevChar) && fID.contains(thisChar) ||
+                    fPR.contains(prevChar) && fAL.contains(thisChar) ||
+                    fPO.contains(prevChar) && fAL.contains(thisChar))  {
+                    continue;
+                }
+                
+                
+                // LB 25    Numbers
+                matchVals = LBNumberCheck(fText, prevPos, matchVals);
+                if (matchVals[0] != -1) {
+                    // Matched a number.  But could have been just a single digit, which would
+                    //    not represent a "no break here" between prevChar and thisChar
+                    int numEndIdx = matchVals[1];  // idx of first char following num
+                    if (numEndIdx > pos) {
+                        // Number match includes at least the two chars being checked
+                        if (numEndIdx > nextPos) {
+                            // Number match includes additional chars.  Update pos and nextPos
+                            //   so that next loop iteration will continue at the end of the number,
+                            //   checking for breaks between last char in number & whatever follows.
+                            nextPos = numEndIdx;
+                            pos     = numEndIdx;
+                            do {
+                                pos = moveIndex32(fText, pos, -1);  
+                                thisChar = UTF16.charAt(fText, pos);
+                            }
+                            while (fCM.contains(thisChar));
+                        }
+                        continue;
+                    }
+                }
+                
+                
+                // LB 26  Do not break Korean Syllables
+                if (fJL.contains(prevChar) && (fJL.contains(thisChar) ||
+                                                fJV.contains(thisChar) ||
+                                                fH2.contains(thisChar) ||
+                                                fH3.contains(thisChar))) {
+                                                    continue;
+                                                }
+
+                if ((fJV.contains(prevChar) || fH2.contains(prevChar))  &&
+                    (fJV.contains(thisChar) || fJT.contains(thisChar))) {
+                        continue;
+                }
+
+                if ((fJT.contains(prevChar) || fH3.contains(prevChar)) &&
+                    fJT.contains(thisChar)) {
+                        continue;
+                }
+
+                // LB 27 Treat a Korean Syllable Block the same as ID
+                if ((fJL.contains(prevChar) || fJV.contains(prevChar) ||
+                    fJT.contains(prevChar) || fH2.contains(prevChar) || fH3.contains(prevChar)) &&
+                    fIN.contains(thisChar)) {
+                        continue;
+                    }
+                if ((fJL.contains(prevChar) || fJV.contains(prevChar) ||
+                    fJT.contains(prevChar) || fH2.contains(prevChar) || fH3.contains(prevChar)) &&
+                    fPO.contains(thisChar)) {
+                        continue;
+                    }
+                if (fPR.contains(prevChar) && (fJL.contains(thisChar) || fJV.contains(thisChar) ||
+                    fJT.contains(thisChar) || fH2.contains(thisChar) || fH3.contains(thisChar))) {
+                        continue;
+                    }
+
+                
+                
+                // LB 28 Do not break between alphabetics
+                if (fAL.contains(prevChar) && fAL.contains(thisChar)) {
+                    continue;
+                }
+                
+                // LB 29  Do not break between numeric punctuation and alphabetics
+                if (fIS.contains(prevChar) && fAL.contains(thisChar)) {
+                    continue;
+                }
+                
+                // LB 30  (Withdrawn as of Unicode 5.1)
+              
+                // LB 31    Break everywhere else
+                break;            
+            }
+            
+            return pos;
+        }
+        
+        
+        
+        // Match the following regular expression in the input text.
+        //    ((PR | PO) CM*)? ((OP | HY) CM*)? NU CM* ((NU | IS | SY) CM*) * (CL CM*)?  (PR | PO) CM*)?
+        //      0    0   1       3    3    4              7    7    7    7      9   9     11   11    (match states)
+        //  retVals array  [0]  index of the start of the match, or -1 if no match
+        //                 [1]  index of first char following the match.
+        //  Can not use Java regex because need supplementary character support,
+        //     and because Unicode char properties version must be the same as in
+        //     the version of ICU being tested.
+        private int[] LBNumberCheck(StringBuffer s, int startIdx, int[] retVals) {
+            if (retVals == null) {
+                retVals = new int[2];
+             }
+            retVals[0]     = -1;  // Indicates no match.
+            int matchState = 0;
+            int idx        = startIdx;
+            
+            matchLoop: for (idx = startIdx; idx<s.length(); idx = moveIndex32(s, idx, 1)){
+                int c = UTF16.charAt(s, idx);
+                int cLBType = UCharacter.getIntPropertyValue(c, UProperty.LINE_BREAK);
+                switch (matchState) {
+                    case 0:   
+                        if (cLBType == UCharacter.LineBreak.PREFIX_NUMERIC ||
+                            cLBType == UCharacter.LineBreak.POSTFIX_NUMERIC) {
+                            matchState = 1;  
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.OPEN_PUNCTUATION) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.HYPHEN) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.NUMERIC) {
+                            matchState = 7;
+                            break;
+                        }
+                        break matchLoop;   /* No Match  */
+                        
+                    case 1:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 1;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.OPEN_PUNCTUATION) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.HYPHEN) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.NUMERIC) {
+                            matchState = 7;
+                            break;
+                        }
+                        break matchLoop;   /* No Match  */
+                        
+                        
+                    case 4:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 4;
+                            break;
+                        }
+                        if (cLBType == UCharacter.LineBreak.NUMERIC) {
+                            matchState = 7;
+                            break;
+                        }
+                        break matchLoop;   /* No Match  */
+                        //    ((PR | PO) CM*)? ((OP | HY) CM*)? NU CM* ((NU | IS | SY) CM*) * (CL CM*)?  (PR | PO) CM*)?
+                        //      0    0   1       3    3    4              7    7    7    7      9   9     11   11    (match states)
+                 
+                    case 7:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 7;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.NUMERIC) {
+                            matchState = 7;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.INFIX_NUMERIC) {
+                            matchState = 7;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.BREAK_SYMBOLS) {
+                            matchState = 7;
+                            break;       
+                        }
+                        if (cLBType == UCharacter.LineBreak.CLOSE_PUNCTUATION) {
+                            matchState = 9;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.POSTFIX_NUMERIC) {
+                            matchState = 11;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.PREFIX_NUMERIC) {
+                            matchState = 11;
+                            break;                           
+                        }
+
+                        break matchLoop;    // Match Complete.
+                    case 9:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 9;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.POSTFIX_NUMERIC) {
+                            matchState = 11;
+                            break;                           
+                        }
+                        if (cLBType == UCharacter.LineBreak.PREFIX_NUMERIC) {
+                            matchState = 11;
+                            break;                           
+                        }
+                        break matchLoop;    // Match Complete.
+                    case 11:
+                        if (cLBType == UCharacter.LineBreak.COMBINING_MARK) {
+                            matchState = 11;
+                            break;                           
+                        }
+                        break matchLoop;    // Match Complete.
+                }
+            }
+            if (matchState > 4) {
+                retVals[0] = startIdx;   
+                 retVals[1] = idx;   
+            }
+            return retVals;
+        }
+        
+        
+        List  charClasses() {
+            return fSets;
+        }
+        
+        
+    
+    }
+
+     
+    /**
+     * 
+     * Sentence Monkey Test Class
+     *
+     * 
+     * 
+     */
+    static class RBBISentenceMonkey extends RBBIMonkeyKind {
+        List                 fSets;
+        StringBuffer         fText;
+
+        UnicodeSet           fSepSet;
+        UnicodeSet           fFormatSet;
+        UnicodeSet           fSpSet;
+        UnicodeSet           fLowerSet;
+        UnicodeSet           fUpperSet;
+        UnicodeSet           fOLetterSet;
+        UnicodeSet           fNumericSet;
+        UnicodeSet           fATermSet;
+        UnicodeSet           fSContinueSet;
+        UnicodeSet           fSTermSet;
+        UnicodeSet           fCloseSet;
+        UnicodeSet           fOtherSet;
+        UnicodeSet           fExtendSet;
+
+ 
+        
+        RBBISentenceMonkey() {
+            fCharProperty  = UProperty.SENTENCE_BREAK;
+
+            fSets            = new ArrayList();
+
+            //  Separator Set Note:  Beginning with Unicode 5.1, CR and LF were removed from the separator
+            //                       set and made into character classes of their own.  For the monkey impl,
+            //                       they remain in SEP, since Sep always appears with CR and LF in the rules.
+            fSepSet          = new UnicodeSet("[\\p{Sentence_Break = Sep} \\u000a \\u000d]");
+            fFormatSet       = new UnicodeSet("[\\p{Sentence_Break = Format}]");
+            fSpSet           = new UnicodeSet("[\\p{Sentence_Break = Sp}]");
+            fLowerSet        = new UnicodeSet("[\\p{Sentence_Break = Lower}]");
+            fUpperSet        = new UnicodeSet("[\\p{Sentence_Break = Upper}]");
+            fOLetterSet      = new UnicodeSet("[\\p{Sentence_Break = OLetter}]");
+            fNumericSet      = new UnicodeSet("[\\p{Sentence_Break = Numeric}]");
+            fATermSet        = new UnicodeSet("[\\p{Sentence_Break = ATerm}]");
+            fSContinueSet    = new UnicodeSet("[\\p{Sentence_Break = SContinue}]");
+            fSTermSet        = new UnicodeSet("[\\p{Sentence_Break = STerm}]");
+            fCloseSet        = new UnicodeSet("[\\p{Sentence_Break = Close}]");
+            fExtendSet       = new UnicodeSet("[\\p{Sentence_Break = Extend}]");
+            fOtherSet        = new UnicodeSet();
+
+
+            fOtherSet.complement();
+            fOtherSet.removeAll(fSepSet);
+            fOtherSet.removeAll(fFormatSet);
+            fOtherSet.removeAll(fSpSet);
+            fOtherSet.removeAll(fLowerSet);
+            fOtherSet.removeAll(fUpperSet);
+            fOtherSet.removeAll(fOLetterSet);
+            fOtherSet.removeAll(fNumericSet);
+            fOtherSet.removeAll(fATermSet);
+            fOtherSet.removeAll(fSContinueSet);
+            fOtherSet.removeAll(fSTermSet);
+            fOtherSet.removeAll(fCloseSet);
+            fOtherSet.removeAll(fExtendSet);
+
+            fSets.add(fSepSet);
+            fSets.add(fFormatSet);
+
+            fSets.add(fSpSet);
+            fSets.add(fLowerSet);
+            fSets.add(fUpperSet);
+            fSets.add(fOLetterSet);
+            fSets.add(fNumericSet);
+            fSets.add(fATermSet);
+            fSets.add(fSContinueSet);
+            fSets.add(fSTermSet);
+            fSets.add(fCloseSet);
+            fSets.add(fOtherSet);
+            fSets.add(fExtendSet);
+        }
+        
+        
+        List  charClasses() {
+            return fSets;  
+        }
+        
+        void   setText(StringBuffer s) { 
+            fText = s;        
+        }   
+
+        
+        //      moveBack()   Find the "significant" code point preceding the index i.
+        //      Skips over ($Extend | $Format)*
+        // 
+        private int moveBack(int i) {
+            
+            if (i <= 0) {
+                return -1;
+            }
+            
+            int      c;
+            int      j = i;
+            do {
+                j = moveIndex32(fText, j, -1);
+                c = UTF16.charAt(fText, j);
+            }
+            while (j>0 &&(fFormatSet.contains(c) || fExtendSet.contains(c)));
+            return j;
+        }
+        
+        
+        int moveForward(int i) {
+            if (i>=fText.length()) {
+                return fText.length();
+            }
+            int   c;
+            int   j = i;
+            do {
+                j = moveIndex32(fText, j, 1);
+                c = cAt(j);
+            }
+            while (c>=0 && (fFormatSet.contains(c) || fExtendSet.contains(c)));
+            return j;
+           
+        }
+        
+        int cAt(int pos) {
+            if (pos<0 || pos>=fText.length()) {
+                return -1;
+            }
+            return UTF16.charAt(fText, pos);
+        }
+
+        int   next(int prevPos) {  
+            int    /*p0,*/ p1, p2, p3;      // Indices of the significant code points around the 
+                                        //   break position being tested.  The candidate break
+                                        //   location is before p2.
+            int     breakPos = -1;
+            
+            int c0, c1, c2, c3;         // The code points at p0, p1, p2 & p3.
+            int c;
+            
+            // Prev break at end of string.  return DONE.
+            if (prevPos >= fText.length()) {
+                return -1;
+            }
+            /*p0 =*/ p1 = p2 = p3 = prevPos;
+            c3 = UTF16.charAt(fText, prevPos);
+            c0 = c1 = c2 = 0;
+            
+            // Loop runs once per "significant" character position in the input text.
+            for (;;) {
+                // Move all of the positions forward in the input string.
+                /*p0 = p1;*/  c0 = c1;
+                p1 = p2;  c1 = c2;
+                p2 = p3;  c2 = c3;
+                
+                // Advancd p3 by  X(Extend | Format)*   Rule 4
+                p3 = moveForward(p3);
+                c3 = cAt(p3);
+                
+                // Rule (3) CR x LF
+                if (c1==0x0d && c2==0x0a && p2==(p1+1)) {
+                    continue;
+                }
+                
+                // Rule (4)    Sep  <break>
+                if (fSepSet.contains(c1)) {
+                    p2 = p1+1;   // Separators don't combine with Extend or Format
+                    break;
+                }               
+
+                if (p2 >= fText.length()) {
+                    // Reached end of string.  Always a break position.
+                    break;
+                }
+
+                if (p2 == prevPos) {
+                    // Still warming up the loop.  (won't work with zero length strings, but we don't care)
+                    continue;
+                }
+
+                // Rule (6).   ATerm x Numeric
+                if (fATermSet.contains(c1) &&  fNumericSet.contains(c2))  {
+                    continue;
+                }
+
+                // Rule (7).  Upper ATerm  x  Uppper
+                if (fUpperSet.contains(c0) && fATermSet.contains(c1) && fUpperSet.contains(c2)) {
+                    continue;
+                }
+
+                // Rule (8)  ATerm Close* Sp*  x  (not (OLettter | Upper | Lower | Sep))* Lower
+                //           Note:  Sterm | ATerm are added to the negated part of the expression by a 
+                //                  note to the Unicode 5.0 documents.
+                int p8 = p1;
+                while (p8>0 && fSpSet.contains(cAt(p8))) {
+                    p8 = moveBack(p8);
+                }
+                while (p8>0 && fCloseSet.contains(cAt(p8))) {
+                    p8 = moveBack(p8);
+                }
+                if (fATermSet.contains(cAt(p8))) {
+                    p8=p2;
+                    for (;;) {
+                        c = cAt(p8);
+                        if (c==-1 || fOLetterSet.contains(c) || fUpperSet.contains(c) ||
+                            fLowerSet.contains(c) || fSepSet.contains(c) ||
+                            fATermSet.contains(c) || fSTermSet.contains(c))  
+                         {
+                            break;
+                        }
+                        p8 = moveForward(p8);
+                    }
+                    if (p8<fText.length() && fLowerSet.contains(cAt(p8))) {
+                        continue;
+                    }
+                }
+                
+                // Rule 8a  (STerm | ATerm) Close* Sp* x (SContinue | Sterm | ATerm)
+                if (fSContinueSet.contains(c2) || fSTermSet.contains(c2) || fATermSet.contains(c2)) {
+                    p8 = p1;
+                    while (setContains(fSpSet, cAt(p8))) {
+                        p8 = moveBack(p8);
+                    }
+                    while (setContains(fCloseSet, cAt(p8))) {
+                        p8 = moveBack(p8);
+                    }
+                    c = cAt(p8);
+                    if (setContains(fSTermSet, c) || setContains(fATermSet, c)) {
+                        continue;
+                    }
+                }
+
+
+                // Rule (9)  (STerm | ATerm) Close*  x  (Close | Sp | Sep | CR | LF)
+                int p9 = p1;
+                while (p9>0 && fCloseSet.contains(cAt(p9))) {
+                    p9 = moveBack(p9);
+                }
+                c = cAt(p9);
+                if ((fSTermSet.contains(c) || fATermSet.contains(c))) {
+                    if (fCloseSet.contains(c2) || fSpSet.contains(c2) || fSepSet.contains(c2)) {
+                        continue;
+                    }
+                }
+
+                // Rule (10)  (Sterm | ATerm) Close* Sp*  x  (Sp | Sep | CR | LF)
+                int p10 = p1;
+                while (p10>0 && fSpSet.contains(cAt(p10))) {
+                    p10 = moveBack(p10);
+                }
+                while (p10>0 && fCloseSet.contains(cAt(p10))) {
+                    p10 = moveBack(p10);
+                }
+                if (fSTermSet.contains(cAt(p10)) || fATermSet.contains(cAt(p10))) {
+                    if (fSpSet.contains(c2) || fSepSet.contains(c2)) {
+                        continue;
+                    }
+                }
+
+                // Rule (11)  (STerm | ATerm) Close* Sp*   <break>
+                int p11 = p1;
+                if (p11>0 && fSepSet.contains(cAt(p11))) {
+                    p11 = moveBack(p11);
+                }
+                while (p11>0 && fSpSet.contains(cAt(p11))) {
+                    p11 = moveBack(p11);
+                }
+                while (p11>0 && fCloseSet.contains(cAt(p11))) {
+                    p11 = moveBack(p11);
+                }
+                if (fSTermSet.contains(cAt(p11)) || fATermSet.contains(cAt(p11))) {
+                    break;
+                }
+
+                //  Rule (12)  Any x Any
+                continue;
+            }
+            breakPos = p2;
+            return breakPos;
+        }
+           
+
+        
+    }
+
+ 
+    /**
+     * Move an index into a string by n code points.
+     *   Similar to UTF16.moveCodePointOffset, but without the exceptions, which were
+     *   complicating usage.
+     * @param s   a Text string
+     * @param pos The starting code unit index into the text string
+     * @param amt The amount to adjust the string by.
+     * @return    The adjusted code unit index, pinned to the string's length, or
+     *            unchanged if input index was outside of the string.
+     */
+    static int moveIndex32(StringBuffer s, int pos, int amt) {
+        int i;
+        char  c;
+        if (amt>0) {
+            for (i=0; i<amt; i++) {
+                if (pos >= s.length()) {
+                    return s.length();                   
+                }
+                c = s.charAt(pos);
+                pos++;
+                if (UTF16.isLeadSurrogate(c) && pos < s.length()) {
+                    c = s.charAt(pos);
+                    if (UTF16.isTrailSurrogate(c)) {
+                        pos++;   
+                    }
+                }
+            }
+        } else {
+            for (i=0; i>amt; i--) {
+                if (pos <= 0) {
+                    return 0;   
+                }
+                pos--;
+                c = s.charAt(pos);
+                if (UTF16.isTrailSurrogate(c) && pos >= 0) {
+                    c = s.charAt(pos);
+                    if (UTF16.isLeadSurrogate(c)) {
+                        pos--;   
+                    }
+                }
+            }
+        }
+        return pos;
+    }
+    
+    /**
+     * No-exceptions form of UnicodeSet.contains(c).
+     *    Simplifies loops that terminate with an end-of-input character value.
+     * @param s  A unicode set
+     * @param c  A code point value
+     * @return   true if the set contains c.
+     */
+    static boolean setContains(UnicodeSet s, int c) {
+        if (c<0 || c>UTF16.CODEPOINT_MAX_VALUE ) {
+            return false;
+        }
+        return s.contains(c);
+    }
+    
+    
+    /**
+     * return the index of the next code point in the input text.
+     * @param i the preceding index
+     * @return
+     * @internal
+     */
+    static int  nextCP(StringBuffer s, int i) {
+        if (i == -1) {
+            // End of Input indication.  Continue to return end value.
+            return -1;
+        }
+        int  retVal = i + 1;
+        if (retVal > s.length()) {
+            return -1;
+        }
+        int  c = UTF16.charAt(s, i);
+        if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && UTF16.isLeadSurrogate(s.charAt(i))) {
+            retVal++;
+        }
+        return retVal;
+    }
+    
+    
+    /**
+     * random number generator.  Not using Java's built-in Randoms for two reasons:
+     *    1.  Using this code allows obtaining the same sequences as those from the ICU4C monkey test.
+     *    2.  We need to get and restore the seed from values occurring in the middle
+     *        of a long sequence, to more easily reproduce failing cases.
+     */
+    private static int m_seed = 1;
+    private static int  m_rand()
+    {
+        m_seed = m_seed * 1103515245 + 12345;
+        return (int)(m_seed >>> 16) % 32768;
+    }
+
+    // Helper function for formatting error output.
+    //   Append a string into a fixed-size field in a StringBuffer.
+    //   Blank-pad the string if it is shorter than the field.
+    //   Truncate the source string if it is too long.
+    //
+    private static void appendToBuf(StringBuffer dest, String src, int fieldLen) {
+        int appendLen = src.length();
+        if (appendLen >= fieldLen) {
+            dest.append(src.substring(0, fieldLen));
+        } else {
+            dest.append(src);
+            while (appendLen < fieldLen) {
+                dest.append(' ');
+                appendLen++;
+            }
+        }
+    }
+
+    // Helper function for formatting error output.
+    // Display a code point in "\\uxxxx" or "\Uxxxxxxxx" format
+    private static void appendCharToBuf(StringBuffer dest, int c, int fieldLen) {
+           String hexChars = "0123456789abcdef";
+           if (c < 0x10000) {
+                dest.append("\\u");
+                for (int bn=12; bn>=0; bn-=4) {
+                    dest.append(hexChars.charAt((((int)c)>>bn)&0xf));
+                }
+                appendToBuf(dest, " ", fieldLen-6);
+            } else {
+                dest.append("\\U");
+                for (int bn=28; bn>=0; bn-=4) {
+                    dest.append(hexChars.charAt((((int)c)>>bn)&0xf));
+                }
+                appendToBuf(dest, " ", fieldLen-10);
+
+            }
+       }
+    
+/**
+ *  Run a RBBI monkey test.  Common routine, for all break iterator types.
+ *    Parameters:
+ *       bi      - the break iterator to use
+ *       mk      - MonkeyKind, abstraction for obtaining expected results
+ *       name    - Name of test (char, word, etc.) for use in error messages
+ *       seed    - Seed for starting random number generator (parameter from user)
+ *       numIterations
+ */
+void RunMonkey(BreakIterator  bi, RBBIMonkeyKind mk, String name, int  seed, int numIterations) {
+    int              TESTSTRINGLEN = 500;
+    StringBuffer     testText         = new StringBuffer();
+    int              numCharClasses;
+    List             chClasses;
+    int[]            expected         = new int[TESTSTRINGLEN*2 + 1];
+    int              expectedCount    = 0;
+    boolean[]        expectedBreaks   = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        forwardBreaks    = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        reverseBreaks    = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        isBoundaryBreaks = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        followingBreaks  = new boolean[TESTSTRINGLEN*2 + 1];
+    boolean[]        precedingBreaks  = new boolean[TESTSTRINGLEN*2 + 1];
+    int              i;
+    int              loopCount        = 0;
+    boolean          printTestData    = false;
+    boolean          printBreaksFromBI = false;
+
+    m_seed = seed;
+
+    numCharClasses = mk.charClasses().size();
+    chClasses      = mk.charClasses();
+
+    // Verify that the character classes all have at least one member.
+    for (i=0; i<numCharClasses; i++) {
+        UnicodeSet s = (UnicodeSet)chClasses.get(i);
+        if (s == null || s.size() == 0) {
+            errln("Character Class " + i + " is null or of zero size.");
+            return;
+        }
+    }
+
+    //--------------------------------------------------------------------------------------------
+    //
+    //  Debugging settings.  Comment out everything in the following block for normal operation
+    //
+    //--------------------------------------------------------------------------------------------
+    // numIterations = -1;  
+    // RuleBasedBreakIterator_New.fTrace = true;
+    // m_seed = 859056465;
+    // TESTSTRINGLEN = 50;
+    // printTestData = true;
+    // printBreaksFromBI = true;
+    // ((RuleBasedBreakIterator_New)bi).dump();
+    
+    //--------------------------------------------------------------------------------------------
+    //
+    //  End of Debugging settings.  
+    //
+    //--------------------------------------------------------------------------------------------
+    
+    int  dotsOnLine = 0;
+     while (loopCount < numIterations || numIterations == -1) {
+        if (numIterations == -1 && loopCount % 10 == 0) {
+            // If test is running in an infinite loop, display a periodic tic so
+            //   we can tell that it is making progress.
+            System.out.print(".");
+            if (dotsOnLine++ >= 80){
+                System.out.println();
+                dotsOnLine = 0;
+            }
+        }
+        // Save current random number seed, so that we can recreate the random numbers
+        //   for this loop iteration in event of an error.
+        seed = m_seed;
+
+        testText.setLength(0);
+        // Populate a test string with data.
+        if (printTestData) {
+            System.out.println("Test Data string ..."); 
+        }
+        for (i=0; i<TESTSTRINGLEN; i++) {
+            int        aClassNum = m_rand() % numCharClasses;
+            UnicodeSet classSet  = (UnicodeSet)chClasses.get(aClassNum);
+            int        charIdx   = m_rand() % classSet.size();
+            int        c         = classSet.charAt(charIdx);
+            if (c < 0) {   // TODO:  deal with sets containing strings.
+                errln("c < 0");
+            }
+            UTF16.appendCodePoint(testText, c);
+            if (printTestData) {
+                System.out.print(Integer.toHexString(c) + " ");
+            }
+        }
+        if (printTestData) {
+            System.out.println(); 
+        }
+
+        Arrays.fill(expected, 0);
+        Arrays.fill(expectedBreaks, false);
+        Arrays.fill(forwardBreaks, false);
+        Arrays.fill(reverseBreaks, false);
+        Arrays.fill(isBoundaryBreaks, false);
+        Arrays.fill(followingBreaks, false);
+        Arrays.fill(precedingBreaks, false);
+ 
+        // Calculate the expected results for this test string.
+        mk.setText(testText);
+        expectedCount = 0;
+        expectedBreaks[0] = true;
+        expected[expectedCount ++] = 0;
+        int breakPos = 0;
+        int lastBreakPos = -1;
+        for (;;) {
+            lastBreakPos = breakPos;
+            breakPos = mk.next(breakPos);
+            if (breakPos == -1) {
+                break;
+            }
+            if (breakPos > testText.length()) {
+                errln("breakPos > testText.length()");
+            }
+            if (lastBreakPos >= breakPos) {
+                errln("Next() not increasing.");
+                // break;
+            }
+            expectedBreaks[breakPos] = true;
+            expected[expectedCount ++] = breakPos;
+        }
+
+        // Find the break positions using forward iteration
+        if (printBreaksFromBI) {
+            System.out.println("Breaks from BI...");  
+        }
+        bi.setText(testText.toString());
+        for (i=bi.first(); i != BreakIterator.DONE; i=bi.next()) {
+            if (i < 0 || i > testText.length()) {
+                errln(name + " break monkey test: Out of range value returned by breakIterator::next()");
+                break;
+            }
+            if (printBreaksFromBI) {
+                System.out.print(Integer.toHexString(i) + " ");
+            }
+            forwardBreaks[i] = true;
+        }
+        if (printBreaksFromBI) {
+            System.out.println();
+        }
+
+        // Find the break positions using reverse iteration
+        for (i=bi.last(); i != BreakIterator.DONE; i=bi.previous()) {
+            if (i < 0 || i > testText.length()) {
+                errln(name + " break monkey test: Out of range value returned by breakIterator.next()" + name);
+                break;
+            }
+            reverseBreaks[i] = true;
+        }
+
+        // Find the break positions using isBoundary() tests.
+        for (i=0; i<=testText.length(); i++) {
+            isBoundaryBreaks[i] = bi.isBoundary(i);
+        }
+
+        // Find the break positions using the following() function.
+        lastBreakPos = 0;
+        followingBreaks[0] = true;
+        for (i=0; i<testText.length(); i++) {
+            breakPos = bi.following(i);
+            if (breakPos <= i ||
+                breakPos < lastBreakPos ||
+                breakPos > testText.length() ||
+                breakPos > lastBreakPos && lastBreakPos > i ) {
+                errln(name + " break monkey test: " +
+                    "Out of range value returned by BreakIterator::following().\n" +
+                    "index=" + i + "following returned=" + breakPos +
+                    "lastBreak=" + lastBreakPos);
+                precedingBreaks[i] = !expectedBreaks[i];   // Forces an error.
+            } else {
+                followingBreaks[breakPos] = true;
+                lastBreakPos = breakPos;
+            }
+        }
+        
+        // Find the break positions using the preceding() function.
+        lastBreakPos = testText.length();
+        precedingBreaks[testText.length()] = true;
+        for (i=testText.length(); i>0; i--) {
+            breakPos = bi.preceding(i);
+            if (breakPos >= i ||
+                breakPos > lastBreakPos ||
+                breakPos < 0 ||
+                breakPos < lastBreakPos && lastBreakPos < i ) {
+                errln(name + " break monkey test: " +
+                        "Out of range value returned by BreakIterator::preceding().\n" +
+                        "index=" + i + "preceding returned=" + breakPos +
+                        "lastBreak=" + lastBreakPos);
+                precedingBreaks[i] = !expectedBreaks[i];   // Forces an error.
+            } else {
+                precedingBreaks[breakPos] = true;
+                lastBreakPos = breakPos;
+            }
+        }
+
+        
+
+        // Compare the expected and actual results.
+        for (i=0; i<=testText.length(); i++) {
+            String errorType = null;
+            if  (forwardBreaks[i] != expectedBreaks[i]) {
+                errorType = "next()";
+            } else if (reverseBreaks[i] != forwardBreaks[i]) {
+                errorType = "previous()";
+            } else if (isBoundaryBreaks[i] != expectedBreaks[i]) {
+                errorType = "isBoundary()";
+            } else if (followingBreaks[i] != expectedBreaks[i]) {
+                errorType = "following()";
+            } else if (precedingBreaks[i] != expectedBreaks[i]) {
+                errorType = "preceding()";
+            }
+
+
+            if (errorType != null) {
+                // Format a range of the test text that includes the failure as
+                //  a data item that can be included in the rbbi test data file.
+
+                // Start of the range is the last point where expected and actual results
+                //   both agreed that there was a break position.
+                int startContext = i;
+                int count = 0;
+                for (;;) {
+                    if (startContext==0) { break; }
+                    startContext --;
+                    if (expectedBreaks[startContext]) {
+                        if (count == 2) break;
+                        count ++;
+                    }
+                }
+
+                // End of range is two expected breaks past the start position.
+                int endContext = i + 1;
+                int ci;
+                for (ci=0; ci<2; ci++) {  // Number of items to include in error text.
+                    for (;;) {
+                        if (endContext >= testText.length()) {break;}
+                        if (expectedBreaks[endContext-1]) { 
+                            if (count == 0) break;
+                            count --;
+                        }
+                        endContext ++;
+                    }
+                }
+
+                // Format looks like   "<data><>\uabcd\uabcd<>\U0001abcd...</data>"
+                StringBuffer errorText = new StringBuffer();
+
+                int      c;    // Char from test data
+                for (ci = startContext;  ci <= endContext && ci != -1;  ci = nextCP(testText, ci)) {
+                    if (ci == i) {
+                        // This is the location of the error.
+                        errorText.append("<?>---------------------------------\n");
+                    } else if (expectedBreaks[ci]) {
+                        // This a non-error expected break position.
+                        errorText.append("------------------------------------\n");
+                    }
+                    if (ci < testText.length()) {
+                        c = UTF16.charAt(testText, ci);
+                        appendCharToBuf(errorText, c, 11);
+                        String gc = UCharacter.getPropertyValueName(UProperty.GENERAL_CATEGORY, UCharacter.getType(c), UProperty.NameChoice.SHORT);
+                        appendToBuf(errorText, gc, 8);
+                        int extraProp = UCharacter.getIntPropertyValue(c, mk.fCharProperty);
+                        String extraPropValue = 
+                            UCharacter.getPropertyValueName(mk.fCharProperty, extraProp, UProperty.NameChoice.LONG);
+                        appendToBuf(errorText, extraPropValue, 20);
+
+                        String charName = UCharacter.getExtendedName(c);
+                        appendToBuf(errorText, charName, 40);
+                        errorText.append('\n');
+                    }
+                }
+                if (ci == testText.length() && ci != -1) {
+                    errorText.append("<>");
+                }
+                errorText.append("</data>\n");
+
+                // Output the error
+                errln(name + " break monkey test error.  " + 
+                     (expectedBreaks[i]? "Break expected but not found." : "Break found but not expected.") +
+                      "\nOperation = " + errorType + "; random seed = " + seed + ";  buf Idx = " + i + "\n" +
+                      errorText);
+                break;
+            }
+        }
+
+        loopCount++;
+    }
+}
+
+public void TestCharMonkey() {
+    
+    int        loopCount = 500;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 10000;
+    }
+    
+    RBBICharMonkey  m = new RBBICharMonkey();
+    BreakIterator   bi = BreakIterator.getCharacterInstance(Locale.US);
+    RunMonkey(bi, m, "char", seed, loopCount);
+}
+
+public void TestWordMonkey() {
+    
+    int        loopCount = 500;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 10000;
+    }
+    
+    logln("Word Break Monkey Test");
+    RBBIWordMonkey  m = new RBBIWordMonkey();
+    BreakIterator   bi = BreakIterator.getWordInstance(Locale.US);
+    RunMonkey(bi, m, "word", seed, loopCount);
+}
+
+public void TestLineMonkey() {
+    
+    int        loopCount = 500;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 10000;
+    }
+    
+    logln("Line Break Monkey Test");
+    RBBILineMonkey  m = new RBBILineMonkey();
+    BreakIterator   bi = BreakIterator.getLineInstance(Locale.US);
+    if (params == null) {
+        loopCount = 50;
+    }
+    RunMonkey(bi, m, "line", seed, loopCount);
+}
+
+public void TestSentMonkey() {
+    
+    int        loopCount = 500;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 3000;
+    }
+    
+    logln("Sentence Break Monkey Test");
+    RBBISentenceMonkey  m = new RBBISentenceMonkey();
+    BreakIterator   bi = BreakIterator.getSentenceInstance(Locale.US);
+    if (params == null) {
+        loopCount = 30;
+    }
+    RunMonkey(bi, m, "sent", seed, loopCount);
+}
+//
+//  Round-trip monkey tests.
+//  Verify that break iterators created from the rule source from the default
+//    break iterators still pass the monkey test for the iterator type.
+//
+//  This is a major test for the Rule Compiler.  The default break iterators are built
+//  from pre-compiled binary rule data that was created using ICU4C; these
+//  round-trip rule recompile tests verify that the Java rule compiler can
+//  rebuild break iterators from the original source rules.
+//
+public void TestRTCharMonkey() {
+    
+    int        loopCount = 200;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 2000;
+    }
+    
+    RBBICharMonkey  m = new RBBICharMonkey();
+    BreakIterator   bi = BreakIterator.getCharacterInstance(Locale.US);
+    String rules = bi.toString();
+    BreakIterator rtbi = new RuleBasedBreakIterator(rules);
+    RunMonkey(rtbi, m, "char", seed, loopCount);
+}
+
+public void TestRTWordMonkey() {
+    
+    int        loopCount = 200;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 2000;
+    }
+    
+    logln("Word Break Monkey Test");
+    RBBIWordMonkey  m = new RBBIWordMonkey();
+    BreakIterator   bi = BreakIterator.getWordInstance(Locale.US);
+    String rules = bi.toString();
+    BreakIterator rtbi = new RuleBasedBreakIterator(rules);
+    RunMonkey(rtbi, m, "word", seed, loopCount);
+}
+
+public void TestRTLineMonkey() {
+    
+    int        loopCount = 200;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 2000;
+    }
+    
+    logln("Line Break Monkey Test");
+    RBBILineMonkey  m = new RBBILineMonkey();
+    BreakIterator   bi = BreakIterator.getLineInstance(Locale.US);
+    String rules = bi.toString();
+    BreakIterator rtbi = new RuleBasedBreakIterator(rules);
+    if (params == null) {
+        loopCount = 50;
+    }
+    RunMonkey(rtbi, m, "line", seed, loopCount);
+}
+
+public void TestRTSentMonkey() {
+    
+    int        loopCount = 200;
+    int        seed      = 1;
+    
+    if (params.inclusion >= 9) {
+        loopCount = 1000;
+    }
+    
+    logln("Sentence Break Monkey Test");
+    RBBISentenceMonkey  m = new RBBISentenceMonkey();
+    BreakIterator   bi = BreakIterator.getSentenceInstance(Locale.US);
+    String rules = bi.toString();
+    BreakIterator rtbi = new RuleBasedBreakIterator(rules);
+    if (params == null) {
+        loopCount = 30;
+    }
+    RunMonkey(rtbi, m, "sent", seed, loopCount);
+}
+
+
+
+}
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java b/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java
new file mode 100644
index 0000000..c659e6a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ListResourceBundle;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.DictionaryBasedBreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+
+// TODO: {dlf} this test currently doesn't test anything!
+// You'll notice that the resource that uses the dictionary isn't even on the resource path,
+// so the dictionary never gets used.  Good thing, too, because it would throw a security
+// exception if run with a security manager.  Not that it would matter, the dictionary 
+// resource isn't even in the icu source tree!
+// In order to fix this:
+// 1) make sure english.dict matches the current dictionary format required by dbbi
+// 2) make sure english.dict gets included in icu4jtests.jar
+// 3) have this test use getResourceAsStream to get a stream on the dictionary, and
+//    directly instantiate a DictionaryBasedBreakIterator.  It can use the rules from
+//    the appropriate section of ResourceBundle_en_US_TEST.  I'd suggest just copying
+//    the rules into this file.
+// 4) change the test text by inserting '|' at word breaks, and '||' at line breaks.  
+// 5) process this text to a) create tables of break indices, and b) clean up the test
+//    for the break iterator to work on
+// 
+// This would NOT test the ability to load dictionary-based break iterators through our
+// normal resource mechanism.  One could install such a break iterator and its
+// resources into the icu4j jar, and it would work, but there's no way to register entire
+// resources from outside yet.  Even if there were, the access restrictions are a bit
+// difficult to manage, if one wanted to register a break iterator whose code and data
+// resides outside the icu4j jar.  Since the code to instantiate would be going through 
+// two protection domains, each domain would have to allow access to the data-- but 
+// icu4j's domain wouldn't know about ours.  So we could instantiate before registering
+// the break iterator, but this would mean we'd have to fully initialize the dictionary(s)
+// at instantiation time, rather than let this be deferred until they are actually needed.
+//
+// I've done items 2 and 3 above.  Unfortunately, since I haven't done item 1, the
+// dictionary builder crashes.  So for now I'm disabling this test.  This is not
+// that important, since we have a thai dictionary that we do test thoroughly.
+//
+
+public class SimpleBITest extends TestFmwk{
+    public static final String testText =
+//        "The rain in Spain stays mainly on the plain.  The plains in Spain are mainly pained with rain.";
+//"one-two now--  Hah!  You owe me exactly $1,345.67...  Pay up, huh?  By the way, why don't I send you my re\u0301sume\u0301?  This is a line\r\nbreak.";
+//"nowisthetimeforallgoodmen...  tocometothehelpoftheircountry";
+"When, in the course of human events, it becomes necessary for one people to dissolve the political bonds which have "
+//"When,inthecourseofhumanevents,itbecomesnecessaryforonepeopletodissolvethepoliticalbondswhichhave"
++ "connectedthemwithanother,andtoassumeamongthepowersoftheearth,theseparateandequalstationtowhichthelaws"
++ "ofnatureandofnature'sGodentitlethem,adecentrespecttotheopinionsofmankindrequiresthattheyshoulddeclarethe"
++ "causeswhichimpelthemtotheseparation\n"
++ "Weholdthesetruthstobeself-evident,thatallmenarecreatedequal,thattheyareendowedbytheirCreatorwithcertain"
++ "unalienablerights,thatamongthesearelife,libertyandthepursuitofhappiness.Thattosecuretheserights,governmentsare"
++ "institutedamongmen,derivingtheirjustpowersfromtheconsentofthegoverned.Thatwheneveranyformofgovernment"
++ "becomesdestructivetotheseends,itistherightofthepeopletoalterortoabolishit,andtoinstitutenewgovernment,laying"
++ "itsfoundationonsuchprinciplesandorganizingitspowersinsuchform,astothemshallseemmostlikelytoeffecttheirsafety"
++ "andhappiness.Prudence,indeed,willdictatethatgovernmentslongestablishedshouldnotbechangedforlightandtransient"
++ "causes;andaccordinglyallexperiencehathshownthatmankindaremoredisposedtosuffer,whileevilsaresufferable,than"
++ "torightthemselvesbyabolishingtheformstowhichtheyareaccustomed.Butwhenalongtrainofabusesandusurpations,"
++ "pursuinginvariablythesameobjectevincesadesigntoreducethemunderabsolutedespotism,itistheirright,itistheirduty,"
++ "tothrowoffsuchgovernment,andtoprovidenewguardsfortheirfuturesecurity.--Suchhasbeenthepatientsufferanceof"
++ "thesecolonies;andsuchisnowthenecessitywhichconstrainsthemtoaltertheirformersystemsofgovernment.Thehistory"
++ "ofthepresentKingofGreatBritainisahistoryofrepeatedinjuriesandusurpations,allhavingindirectobjectthe"
++ "establishmentofanabsolutetyrannyoverthesestates.Toprovethis,letfactsbesubmittedtoacandidworld.\n"
++ "Hehasrefusedhisassenttolaws,themostwholesomeandnecessaryforthepublicgood.\n"
++ "Hehasforbiddenhisgovernorstopasslawsofimmediateandpressingimportance,unlesssuspendedintheiroperationtill"
++ "hisassentshouldbeobtained;andwhensosuspended,hehasutterlyneglectedtoattendtothem.\n"
++ "Hehasrefusedtopassotherlawsfortheaccommodationoflargedistrictsofpeople,unlessthosepeoplewouldrelinquish"
++ "therightofrepresentationinthelegislature,arightinestimabletothemandformidabletotyrantsonly.\n"
++ "Hehascalledtogetherlegislativebodiesatplacesunusual,uncomfortable,anddistantfromthedepositoryoftheirpublic"
++ "records,forthesolepurposeoffatiguingthemintocompliancewithhismeasures.\n"
++ "Hehasdissolvedrepresentativehousesrepeatedly,foropposingwithmanlyfirmnesshisinvasionsontherightsofthepeople.\n"
++ "Hehasrefusedforalongtime,aftersuchdissolutions,tocauseotherstobeelected;wherebythelegislativepowers,"
++ "incapableofannihilation,havereturnedtothepeopleatlargefortheirexercise;thestateremaininginthemeantimeexposed"
++ "toallthedangersofinvasionfromwithout,andconvulsionswithin.\n"
++ "Hehasendeavoredtopreventthepopulationofthesestates;forthatpurposeobstructingthelawsfornaturalizationof"
++ "foreigners;refusingtopassotherstoencouragetheirmigrationhither,andraisingtheconditionsofnewappropriationsof"
++ "lands.\n"
++ "Hehasobstructedtheadministrationofjustice,byrefusinghisassenttolawsforestablishingjudiciarypowers.\n"
++ "Hehasmadejudgesdependentonhiswillalone,forthetenureoftheiroffices,andtheamountandpaymentoftheirsalaries.\n"
++ "Hehaserectedamultitudeofnewoffices,andsenthitherswarmsofofficerstoharassourpeople,andeatouttheir"
++ "substance.\n"
++ "Hehaskeptamongus,intimesofpeace,standingarmieswithouttheconsentofourlegislature.\n"
++ "Hehasaffectedtorenderthemilitaryindependentofandsuperiortocivilpower.\n"
++ "Hehascombinedwithotherstosubjectustoajurisdictionforeigntoourconstitution,andunacknowledgedbyourlaws;"
++ "givinghisassenttotheiractsofpretendedlegislation:\n"
++ "Forquarteringlargebodiesofarmedtroopsamongus:\n"
++ "Forprotectingthem,bymocktrial,frompunishmentforanymurderswhichtheyshouldcommitontheinhabitantsofthese"
++ "states:\n"
++ "Forcuttingoffourtradewithallpartsoftheworld:\n"
++ "Forimposingtaxesonuswithoutourconsent:\n"
++ "Fordeprivingusinmanycases,ofthebenefitsoftrialbyjury:\n"
++ "Fortransportingusbeyondseastobetriedforpretendedoffenses:\n"
++ "ForabolishingthefreesystemofEnglishlawsinaneighboringprovince,establishingthereinanarbitrarygovernment,and"
++ "enlargingitsboundariessoastorenderitatonceanexampleandfitinstrumentforintroducingthesameabsoluteruleinthese"
++ "colonies:\n"
++ "Fortakingawayourcharters,abolishingourmostvaluablelaws,andalteringfundamentallytheformsofourgovernments:\n"
++ "Forsuspendingourownlegislatures,anddeclaringthemselvesinvestedwithpowertolegislateforusinallcaseswhatsoever.\n"
++ "Hehasabdicatedgovernmenthere,bydeclaringusoutofhisprotectionandwagingwaragainstus.\n"
++ "Hehasplunderedourseas,ravagedourcoasts,burnedourtowns,anddestroyedthelivesofourpeople.\n"
++ "Heisatthistimetransportinglargearmiesofforeignmercenariestocompletetheworksofdeath,desolationandtyranny,"
++ "alreadybegunwithcircumstancesofcrueltyandperfidyscarcelyparalleledinthemostbarbarousages,andtotalyunworth"
++ "theheadofacivilizednation.\n"
++ "Hehasconstrainedourfellowcitizenstakencaptiveonthehighseastobeararmsagainsttheircountry,tobecomethe"
++ "executionersoftheirfriendsandbrethren,ortofallthemselvesbytheirhands.\n"
++ "Hehasexciteddomesticinsurrectionsamongstus,andhasendeavoredtobringontheinhabitantsofourfrontiers,the"
++ "mercilessIndiansavages,whoseknownruleofwarfare,isundistinguisheddestructionofallages,sexesandconditions.\n"
++ "Ineverystageoftheseoppressionswehavepetitionedforredressinthemosthumbleterms:ourrepeatedpetitionshave"
++ "beenansweredonlybyrepeatedinjury.Aprince,whosecharacteristhusmarkedbyeveryactwhichmaydefineatyrant,is"
++ "unfittobetherulerofafreepeople.\n"
++ "NorhavewebeenwantinginattentiontoourBritishbrethren.Wehavewarnedthemfromtimetotimeofattemptsbytheir"
++ "legislaturetoextendanunwarrantablejurisdictionoverus.Wehaveremindedthemofthecircumstancesofouremigration"
++ "andsettlementhere.Wehaveappealedtotheirnativejusticeandmagnanimity,andwehaveconjuredthembythetiesofour"
++ "commonkindredtodisavowtheseusurpations,which,wouldinevitablyinterruptourconnectionsandcorrespondence.We"
++ "must,therefore,acquiesceinthenecessity,whichdenouncesourseparation,andholdthem,asweholdtherestofmankind,"
++ "enemiesinwar,inpeacefriends.\n"
++ "We,therefore,therepresentativesoftheUnitedStatesofAmerica,inGeneralCongress,assembled,appealingtothe"
++ "SupremeJudgeoftheworldfortherectitudeofourintentions,do,inthename,andbytheauthorityofthegoodpeopleof"
++ "thesecolonies,solemnlypublishanddeclare,thattheseunitedcoloniesare,andofrightoughttobefreeandindependent"
++ "states;thattheyareabsolvedfromallallegiancetotheBritishCrown,andthatallpoliticalconnectionbetweenthemandthe"
++ "stateofGreatBritain,isandoughttobetotallydissolved;andthatasfreeandindependentstates,theyhavefullpowerto"
++ "leveywar,concludepeace,contractalliances,establishcommerce,andtodoallotheractsandthingswhichindependent"
++ "statesmayofrightdo.Andforthesupportofthisdeclaration,withafirmrelianceontheprotectionofDivineProvidence,we"
++ "mutuallypledgetoeachotherourlives,ourfortunesandoursacredhonor.\n";
+
+    public static void main(String[] args) throws Exception {
+        new SimpleBITest().run(args);
+    }
+    
+    protected boolean validate() {
+        // TODO: remove when english.dict gets fixed
+        return false;
+    }
+
+    private BreakIterator createTestIterator(int kind) {
+        final String bname = "com.ibm.icu.dev.test.rbbi.BreakIteratorRules_en_US_TEST";
+
+        BreakIterator iter = null;
+
+        ListResourceBundle bundle = null;
+        try {
+            Class cls = Class.forName(bname);
+            bundle = (ListResourceBundle)cls.newInstance();
+        }
+        catch (Exception e) {
+            errln("could not create bundle: " + bname + "exception: " + e.getMessage());
+            return null;
+        }
+        
+        final String[] kindNames = {
+            "Character", "Word", "Line", "Sentence"
+        };
+        String rulesName = kindNames[kind] + "BreakRules";
+        String dictionaryName = kindNames[kind] + "BreakDictionary";
+        
+        String[] classNames = bundle.getStringArray("BreakIteratorClasses");
+        String rules = bundle.getString(rulesName);
+        if (classNames[kind].equals("RuleBasedBreakIterator")) {
+            iter = new RuleBasedBreakIterator(rules);
+        }
+        else if (classNames[kind].equals("DictionaryBasedBreakIterator")) {
+            try {
+                String dictionaryPath = bundle.getString(dictionaryName);
+                InputStream dictionary = bundle.getClass().getResourceAsStream(dictionaryPath);
+                System.out.println("looking for " + dictionaryPath + " from " + bundle.getClass() + " returned " + dictionary);
+                iter = new DictionaryBasedBreakIterator(rules, dictionary);
+            }
+            catch(IOException e) {
+                e.printStackTrace();
+                errln(e.getMessage());
+                System.out.println(e); // debug
+            }
+            catch(MissingResourceException e) {
+                errln(e.getMessage());
+                System.out.println(e); // debug
+            }
+        }
+        if (iter == null) {
+            errln("could not create iterator");
+        }
+        
+        return iter;
+    }
+    
+    public void testWordBreak() throws Exception {
+        BreakIterator wordBreak = createTestIterator(BreakIterator.KIND_WORD);
+        int breaks = doTest(wordBreak);
+        logln(String.valueOf(breaks));
+    }
+
+    public void testLineBreak() throws Exception {
+        BreakIterator lineBreak = createTestIterator(BreakIterator.KIND_LINE);
+        int breaks = doTest(lineBreak);
+        logln(String.valueOf(breaks));
+    }
+
+    public void testSentenceBreak() throws Exception {
+        BreakIterator sentenceBreak = createTestIterator(BreakIterator.KIND_SENTENCE);
+        int breaks = doTest(sentenceBreak);
+        logln(String.valueOf(breaks));
+    }
+
+    private int doTest(BreakIterator bi) {
+        // forward
+        bi.setText(testText);
+        int p = bi.first();
+        int lastP = p;
+        String fragment;
+        int breaks = 0;
+        logln("Forward...");
+        while (p != BreakIterator.DONE) {
+            p = bi.next();
+            if (p != BreakIterator.DONE) {
+                fragment = testText.substring(lastP, p);
+            } else {
+                fragment = testText.substring(lastP);
+            }
+            debugPrintln(": >" + fragment + "<");
+            ++breaks;
+            lastP = p;
+        }
+        return breaks;
+    }
+
+    private void debugPrintln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        logln(out.toString());
+    }
+
+/*    private void debugPrintln2(String s) {
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= '\u0100')
+                out.append("<" + ((int)c - 0x100) + ">");
+            else
+                out.append(c);
+        }
+        logln(out.toString());
+    }*/
+}
+
diff --git a/src/com/ibm/icu/dev/test/rbbi/TestAll.java b/src/com/ibm/icu/dev/test/rbbi/TestAll.java
new file mode 100644
index 0000000..c767550
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/TestAll.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.rbbi;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+                  // Disabled for now; see comment in SimpleBITest for details
+                  // "SimpleBITest",
+                  "BreakIteratorTest",
+                  "RBBITest",
+                  "RBBIAPITest",
+                  "BreakIteratorRegTest",
+                  "RBBITestExtended",
+                  "RBBITestMonkey"
+              },
+              " BreakIterator and RuleBasedBreakIterator Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "RBBI";
+}
diff --git a/src/com/ibm/icu/dev/test/rbbi/package.html b/src/com/ibm/icu/dev/test/rbbi/package.html
new file mode 100644
index 0000000..62468ad
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for the RuleBasedBreakIterator.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt b/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
new file mode 100644
index 0000000..fe1666e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
@@ -0,0 +1,542 @@
+# Copyright (c) 2001-2008 International Business Machines
+# Corporation and others. All Rights Reserved.
+#
+# RBBI Test Data
+#
+#   File:  rbbitst.txt
+#
+#     The format of this file looks vaguely like some kind of xml-ish markup,
+#     but it is NOT.  The syntax is this..
+#
+#   <word>    any following data is for word break testing
+#   <sent>    any following data is for sentence break testing
+#   <line>    any following data is for line break testing
+#   <char>    any following data is for char break testing
+#   <locale local_name>  Switch to the named locale at the next occurence of <word>, <sent>, etc.
+#   <data> ... </data>   test data.  May span multiple lines.
+#      <>        Break position, status == 0
+#      •         Break position, status == 0   (Bullet, \u2022) 
+#      <nnn>     Break position, status == nnn
+#      \         Escape.  Normal ICU unescape applied.  
+#      \ at end of line  ->  Line Continuation.  Remove both the backslash and the new line
+#   
+#
+
+
+#   Temp debugging tests 
+<sent>
+<data>•  (This is it).  •Testing the sentence iterator. •\
+"This isn't it." •Hi! \
+•This is a simple sample sentence. •(This is it.) •This is a simple sample sentence. •\
+"This isn't it." •\
+Hi! •This is a simple sample sentence. •It does not have to make any sense as you can see. •Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. •Che la dritta via aveo smarrita. •He said, that I said, that you said!! •Don't rock the boat.\u2029•Because I am the daddy, that is why. 
+•Not on my time (el timo.)! •</data>
+
+########################################################################################
+#
+#
+#       G r a p h e m e    C l u s t e r     T e s t s
+#
+#
+##########################################################################################
+<char>
+
+<data>•a•b•c• •,•\u0666•</data>                 # Quick Test
+<data>•\r•\r•\r\n•\r\n•\n•\r•</data>            # don't break CR/LF
+
+# Always break after controls.  Combining chars don't combine with them.
+<data>•\u0003•\N{COMBINING GRAVE ACCENT}•\r•\N{COMBINING GRAVE ACCENT}•</data>
+<data>•\u0085•\N{COMBINING MACRON}•A\N{COMBINING MACRON}•</data>
+
+# Surrogates
+<data>•\U00011000•\U00010020•\U00010000\N{COMBINING MACRON}•</data>
+<data>•\ud800\udc00•\udbff\udfff•a•</data>
+
+# Extend (Combining chars) combine.
+<data>•A\N{COMBINING GRAVE ACCENT}•B•</data>
+<data>•\N{GREEK SMALL LETTER MU}\N{COMBINING LOW LINE}\N{COMBINING HORN}•</data>
+<data>•a\u0301•b\u0302•c\u0303•d\u0304•e\u0305•f\u0306•g\u0307•h\u0308•i\u0309•</data>
+
+<data>•a\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304\u0301\u0302\u0303\u0304•</data>
+
+# Don't break Hangul Syllables
+#   L : \u1100
+#   V : \u1161
+#   T : \u11A8
+#  LV : \uAC00
+# LVT : \uAC01
+
+<data>•\u1100\u1161\u11a8•\u1100\u1161\u11a8•</data>  #LVT
+<data>•\u1100\u1161•\u1100\u1161•</data> 
+<data>•\u1100\u1161\u11a8•\u1161•\u1100•\u11a8•\u1161\u1161\u1161\u11a8•</data>
+<data>•\u1100\u1100\uac01•\u1100\uac01•\u1100\uac01\u0301•\uac01•</data>
+<data>•\u1100\u0301•\u1161\u11a8\u0301•\u11a8•</data>
+
+
+
+# Hindi combining chars.  (An old test)
+#   TODO:  Update these tests for Unicode 5.1 Extended Grapheme clusters 
+#<data>•भ••ा•\u0930•\u0924• •\u0938\u0941\u0902•\u0926•\u0930•
+#•\u0939•\u094c•\u0964•</data>
+#<data>•\u0916\u0947•\u0938\u0941\u0902•\u0926•\u0930•\u0939•\u094c•\u0964•</data>
+
+
+#  Bug 1587.  Tamil.  \u0baa\u0bc1 is an Extended Grpaheme Cluster
+<data>•\u0baa\u0bc1•\u0baa\u0bc1•</data>
+
+#   Regression test for bug 1889
+<data>•\u0f40\u0f7d•\u0000•\u0f7e•</data>
+
+
+#     0xffff is a legal character, and should not stop the break iterator early.
+#     (Requires special casing in implementation, which is why it gets a test.)
+<data>•\uffff•\uffff• •a•</data>
+
+#  Treat Japanese Half Width voicing marks as combining
+<data>•A\uff9e•B\uff9f\uff9e\uff9f•C•</data>
+
+########################################################################################
+#
+#
+#       W o r d    B o u n d a r y      T e s t s
+#
+#
+##########################################################################################
+
+<word>
+#
+# Quick sanity test
+#
+<data>•hello<200> •there<200> •goodbye<200></data>
+<data>•hello<200> •12345<100> •,•</data>
+
+
+#
+# Test data originally in RBBIAPITest::TestFirstNextFollowing() and TestLastPreviousPreceding()
+#
+
+<word>
+<data>•This<200> •is<200> •a<200> •word<200> •break<200>.• • •Isn't<200> •it<200>?• •2.25<100></data>
+
+
+
+#
+# Data originally from TestDefaultRuleBasedWordIteration()
+#
+<data>•Write<200> •wordrules<200>.• •123.456<100> •alpha\u00adbeta\u00adgamma<200> •\u092f\u0939<200> •</data>
+<data>• •\u0939\u093f\u0928\u094d\u200d\u0926\u0940<200> •\u0939\u0948<200> •\u0905\u093e\u092a<200> •\u0938\u093f\u0916\u094b\u0917\u0947<200>?•</data>
+
+#Hindi Numbers
+<data>• •\u0968\u0966.\u0969\u096f<100> •\u0967\u0966\u0966.\u0966\u0966<100> •\N{RUPEE SIGN}•\u0967,\u0967\u0966\u0966.\u0966\u0966<100> • •\u0905\u092e\u091c<200>\n•</data>
+
+<data>•\u0938\u094d\u200d\u0935\u0924\u0902deadTA\u0930<200>\r•It's<200> •$•30.10<100> •12,34<100>¢•£•¤•¥•alpha\u05f3beta\u05f4gamma<200> •</data>
+
+<data>•Badges<200>?• •BADGES<200>!•?•!• •We<200> •don't<200> •need<200> •no<200> •STINKING<200> •BADGES<200>!•!•1000,233,456.000<100> •1,23.322<100>%•123.1222<100>$•123,000.20<100> •179.01<100>%•X<200> •Now<200>\r•is<200>\n•the<200>\r\n•time<200> •</data>
+
+#Hangul
+<data>•\uc5f0\ud569<200> •\uc7a5\ub85c\uad50\ud68c<200> •\u1109\u1161\u11bc\u1112\u1161\u11bc<200> •\u1112\u1161\u11ab\u110b\u1175\u11ab<200> •Hello<200>,• •how<200> •are<200> •you<200> •</data>
+
+
+# Words containing non-BMP letters
+<data>•abc\U00010300<200> •abc\N{DESERET SMALL LETTER ENG}<200> •abc\N{MATHEMATICAL BOLD SMALL Z}<200> •abc\N{MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL}<200> •</data>
+
+# Unassigned code points
+<data>•abc<200>\U0001D800•def<200>\U0001D3FF• •</data>
+
+# Hiragana & Katakana stay together, but separates from each other and Latin.
+<data>•abc<200>\N{HIRAGANA LETTER SMALL A}<300>\N{HIRAGANA LETTER VU}\N{COMBINING ACUTE ACCENT}<300>\N{HIRAGANA ITERATION MARK}<300>\N{KATAKANA LETTER SMALL A}\N{KATAKANA ITERATION MARK}\N{HALFWIDTH KATAKANA LETTER WO}\N{HALFWIDTH KATAKANA LETTER N}<300>def<200>#•</data>
+
+# Words with interior formatting characters
+<data>•def\N{COMBINING ACUTE ACCENT}\N{SYRIAC ABBREVIATION MARK}ghi<200> •</data>
+    
+# to test for bug #4097779
+<data>•aa\N{COMBINING GRAVE ACCENT}a<200> •</data>
+
+
+#      to test for bug #4098467
+#      What follows is a string of Korean characters (I found it in the Yellow Pages
+#      ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+#      it correctly), first as precomposed syllables, and then as conjoining jamo.
+#      Both sequences should be semantically identical and break the same way.
+#      precomposed syllables...
+<data>•\uc0c1\ud56d<200> •\ud55c\uc778<200> •\uc5f0\ud569<200> •\uc7a5\ub85c\uad50\ud68c<200> •\u1109\u1161\u11bc\u1112\u1161\u11bc<200> •\u1112\u1161\u11ab\u110b\u1175\u11ab<200> •\u110b\u1167\u11ab\u1112\u1161\u11b8<200> •\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c<200> •</data>
+
+<data>•abc<200>\u4e01<400>\u4e02<400>\u3005<200>\u4e03<400>\u4e03<400>abc<200> •</data>
+
+<data>•\u06c9\uc799\ufffa<200></data>
+
+#      
+#      Try some words from other scripts.
+#     
+
+#       Try some words from other scripts.
+#          Greek, Cyrillic, Hebrew, Arabic, Arabic, Georgian, Latin
+#      
+<data>•ΑΒΓ<200> •БВГ<200> •אבג֓<200> •ابت<200> •١٢٣<100> •\u10A0\u10A1\u10A2<200> •ABC<200> •</data>
+
+<data>•\u0301•A<200></data>
+
+
+#
+#  Hindi word break tests, imported from the old RBBI tests.
+#    An historical note:  a much earlier version of ICU break iterators had a number
+#    of special case rules for Hindi, which were tested by an earlier version of
+#    this test data.  The current RBBI rules do not special case Hindi in 
+#    any way, making this test data much less signfificant.
+#
+<data>•\u0917\u092a\u00ad\u0936\u092a<200>!•\u092f\u0939<200> •\u0939\u093f\u0928\u094d\u200d\u0926\u0940<200> •\u0939\u0948<200> •\u0905\u093e\u092a<200> •\u0938\u093f\u0916\u094b\u0917\u0947<200>?•\n•:•\u092a\u094d\u0930\u093e\u092f\u0903<200>
+•\u0935\u0930\u094d\u0937\u093e<200>\r\n•\u092a\u094d\u0930\u0915\u093e\u0936<200>,•\u0924\u0941\u092e\u093e\u0930\u094b<200> •\u092e\u093f\u0924\u094d\u0930<200> •\u0915\u093e<200> •\u092a\u0924\u094d\u0930<200> •\u092a\u095d\u094b<200> •\u0938\u094d\u0924\u094d\u0930\u093f<200>.• •\u0968\u0966.\u0969\u096f<100> •\u0967\u0966\u0966.\u0966\u0966<100>\u20a8•\u0967,\u0967\u0966\u0966.\u0966\u0966<100> •\u0905\u092e\u091c<200>\n•\u0938\u094d\u200d\u0935\u0924\u0902\u0924\u094d\u0930<200>\r•</data>
+
+#
+#  Failures from monkey tests
+#
+<data>•\u8527<400>\u02ba<200>\u0027\u0d42•\u00b7•\u09ea<100></data>
+
+#
+# Jitterbug 5276 - treat Japanese half width voicing marks as Grapheme Extend
+#
+<data>•A\uff9e\uff9fBC<200> •1\uff9e\uff9f23<100></data>
+
+########################################################################################
+#
+#
+#       S e n t e n c e     B o u n d a r y      T e s t s
+#
+#
+##########################################################################################
+
+
+#
+# Test data originally from RBBI RBBITest::TestDefaultRuleBasedSentenceIteration()
+#
+<sent>
+
+
+<sent>
+<data>•This\n<100></data>
+<data>•Hello! •how are you? •I'am fine. •Thankyou. •How are you \
+doing? •This\n<100> costs $20,00,000. •</data>
+
+
+# Sentence ending in a quote.
+<data>•"Sentence ending with a quote." •Bye.•</data>
+
+# Sentence, and test data, ending without a period or other terminator.
+<data>•Here is a random sentence, no ending period<100></data>
+
+
+<data>•  (This is it).  •Testing the sentence iterator. •\
+"This isn't it." •Hi! \
+•This is a simple sample sentence. •(This is it.) •This is a simple sample sentence. •\
+"This isn't it." •\
+Hi! •This is a simple sample sentence. •It does not have to make any sense as you can see. •Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. •Che la dritta via aveo smarrita. •He said, that I said, that you said!! •Don't rock the boat.\u2029•Because I am the daddy, that is why. 
+•Not on my time (el timo.)! •</data>
+
+<data>•Hello.  •So what!!\u2029•"But now," he said, \
+"I know!" •\
+Harris thumbed down several, including "Away We Go" (which became the huge success Oklahoma!). •One species, B. anthracis, is highly virulent.
+•Wolf said about Sounder:\
+"Beautifully thought-out and directed." •\
+Have you ever said, "This is where\tI shall live"? •He answered, \
+"You may not!" •Another popular saying is: "How do you do?". \n•\
+Yet another popular saying is: \
+'I'm fine thanks.' •\
+What is the proper use of the abbreviation pp.? •Yes, I am definatelly 12" tall!!\
+•Now\r<100>is\n<100>the\r\n<100>time\n<100>\r<100>for\r<100>\r<100></data>
+
+<data>•No breaks when . is surrounded by UPPER.Case letters.  •</data>
+<data>•No breaks when . is followed by Numeric .4 a.4 C.4 3.1 .•</data>
+<data>•No breaks when . is followed by a lower, with possible intervening punct .,a .$a .)a. •</data>
+
+#
+#  Sentence Breaks: no break at the boundary between CJK and other letters
+#
+<data>•\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165:"JAVA\u821c\u8165\u7fc8\u51ce\u306d,\u2494\u56d8\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46".\u2029•\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u3002•\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4\u6470\u8790JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2048•He said, "I can go there."\u2029•Bye, now.•</data>
+
+#
+#      Treat fullwidth variants of .!? the same as their
+#      normal counterparts
+#
+<data>•I know I'm right\uff0e •Right\uff1f •Right\uff01 •</data>
+
+
+#
+#       Don't break sentences at boundary between CJK and digits
+#
+<data>•\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e48888\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u3002•Bye, now<100></data>
+
+#
+#      Breaks around '(' following a sentence TERM.  (Rule 9)
+#
+<data>•How do you do?(•Fine). •</data>
+<data>•How do you do? •(Fine). •</data>
+<data>•How do you do?(•fine). •</data>
+<data>•How do you do? •(fine). •</data>
+
+#
+<data>•Hello.123<100></data>    # Rule 6    
+<data>•Hello?•123<100></data>  
+  
+<data>•HELLO.Bye<100></data>    # Rule 7    
+<data>•HELLO?•Bye<100></data>    
+
+<data>•Hello.goodbye<100></data>  #Rule 8
+<data>•Hello. •Goodbye<100></data>
+<data>•Hello. goodbye<100></data>
+
+
+
+#
+#        test for bug #4158381: No breaks when there are no terminators around
+#
+<data>•\<P>Provides a set of &quot;lightweight&quot; (all-java\<FONT SIZE="-2">\<SUP>TM\</SUP>\</FONT> language) components that, to the maximum degree possible, work the same on all platforms.  •</data>
+<data>•Another test.\u2029•</data>
+      
+#        test for bug #4143071: Make sure sentences that end with digits
+#        work right
+#
+<data>•Today is the 27th of May, 1998.  •</data>
+<data>•Tomorrow with be 28 May 1998.  •</data>
+<data>•The day after will be the 30th.\u2029•</data>
+      
+#        test for bug #4152416: Make sure sentences ending with a capital
+#        letter are treated correctly
+#
+<data>•The type of all primitive \<code>boolean\</code> values accessed in the target VM.  •Calls to xxx will return an implementor of this interface.  \u2029•</data>
+      
+#        test for bug #4152117: Make sure sentence breaking is handling
+#        punctuation correctly [COULD NOT REPRODUCE THIS BUG, BUT TEST IS
+#        HERE TO MAKE SURE IT DOESN'T CROP UP]
+#
+<data>•Constructs a randomly generated BigInteger, uniformly distributed over the range \<tt>0\</tt> to \<tt>(2\<sup>numBits\</sup> - 1\)\</tt>, inclusive.  •The uniformity of the distribution assumes that a fair source of random bits is provided in \<tt>rnd\</tt>.  •Note that this constructor always constructs a non-negative biginteger.  \n•Ahh abc.  
+•</data>
+
+#        sentence breaks for hindi which used Devanagari script
+#        make sure there is sentence break after ?,danda(hindi phrase separator),
+#        fullstop followed by space.  (VERY old test)
+#       
+<data>•\u0928\u092e\u0938\u094d\u200d\u0924\u0947 \u0930\u092e\u0947\u0936\u0905\u093e\u092a\u0915\u0948\u0938\u0947 \u0939\u0948?•\u092e\u0948 \u0905\u091a\u094d\u200d \u091b\u093e \u0939\u0942\u0901\u0964 •\u0905\u093e\u092a\r\n<100>\
+\u0915\u0948\u0938\u0947 \u0939\u0948?•\u0935\u0939 \u0915\u094d\u200d\u092f\u093e\n\
+<100>\u0939\u0948?•\u092f\u0939 \u0905\u093e\u092e \u0939\u0948. •\u092f\u0939 means "this". •"\u092a\u095d\u093e\u0908" meaning "education" or "studies". •\u0905\u093e\u091c(\u0938\u094d\u200d\u0935\u0924\u0902\u0924\u094d\u0930 \u0926\u093f\u0935\u093e\u0938) \u0939\u0948\u0964 •Let's end here. •</data>
+
+#         Regression test for bug #1984, Sentence break in Arabic text.
+  
+<data>\
+•\u0623\u0633\u0627\u0633\u064b\u0627\u060c\u0020\u062a\u062a\u0639\u0627"\u0645\u0644\u0020\u0627\u0644\u062d\u0648\u0627\u0633\u064a\u0628\u0020"\u0641\u0642\u0637\u0020\u0645\u0639\u0020\u0627\u0644\u0623\u0631\u0642\u0627\u0645\u060c\u0648\u062a\u0642\u0648\u0645\u0020\u0628\u062a\u062e\u0632\u064a\u0646\u0020\u0627\u0644\u0623\u062d\u0631\u0641\u0020\u0648\u0627\u0644\u0645\u062d\u0627\u0631\u0641\u0020\u0627\u0644\u0623\u062e\u0631\u0649\u0020\u0628\u0639\u062f\u0020\u0623\u0646\u062a\u064f\u0639\u0637\u064a\u0020\u0631\u0642\u0645\u0627\u0020\u0645\u0639\u064a\u0646\u0627\u0020\u0644\u0643\u0644\u0020\u0648\u0627\u062d\u062f\u0020\u0645\u0646\u0647\u0627\u002e\u0020•\u0648\u0642\u0628\u0644\u0020\u0627\u062e\u062a\u0631\u0627\u0639\u0022\u064a\u0648\u0646\u0650\u0643\u0648\u062f\u0022\u060c\u0020\u0643\u0627\u0646\u0020\u0647\u0646\u0627\u0643\u0020\u0645\u0626\u0627\u062a\u0020\u0627\u0644\u0623\u0646\u0638\u0645\u0629\u0020\u0644\u0644\u062a\u0634\u0641\u064a\u0631\u0648\u062a\u062e\u0635\u064a\u0635\u0020\u0647\u0630\u0647\u0020\u0627\u0644\u0623\u0631\u0642\u0627\u0645\u0020\u0644\u0644\u0645\u062d\u0627\u0631\u0641\u060c\u0020\u0648\u0644\u0645\u0020\u064a\u0648\u062c\u062f\u0020\u0646\u0638\u0627\u0645\u062a\u0634\u0641\u064a\u0020\u0639\u0644\u0649\u0020\u062c\u0645\u064a\u0639\u0020\u0627\u0644\u0645\u062d\u0627\u0631\u0641\u0020\u0627\u0644\u0636\u0631\u0648\u0631\u064a\u0629.  •</data>
+
+#         Try a few more of the less common sentence endings.
+<data>•Hello, world\u3002 •Hello, world\u1803 •Hello, world\u2048 •Hello, world\u203c •Let's end here. •</data>
+
+
+
+
+################################################################
+#
+#
+#        L I N E     B R E A K
+#
+#
+################################################################
+
+<line>
+#
+# Test Character for each of the line break classes.
+#
+# 00A1;AI # INVERTED EXCLAMATION MARK  ¡
+# 0041;AL # LATIN CAPITAL LETTER A
+# 0009;BA # <control>
+# 00B4;BB # ACUTE ACCENT
+# 000C;BK # <control>
+# 2014;B2 # EM DASH
+# FFFC;CB # OBJECT REPLACEMENT CHARACTER
+# 0029;CL # RIGHT PARENTHESIS
+# 0301;CM # COMBINING ACUTE ACCENT
+# 0021;EX # EXCLAMATION MARK
+# 00A0;GL # NO-BREAK SPACE
+# 002D;HY # HYPHEN-MINUS
+# 4E00;ID # <CJK Ideograph, First>
+# 2024;IN # ONE DOT LEADER
+# 002C;IS # COMMA
+# 000A;LF # <control>
+# 0E5A;NS # THAI CHARACTER ANGKHANKHU
+# 0032;NU # DIGIT TWO
+# 0028;OP # LEFT PARENTHESIS
+# 0025;PO # PERCENT SIGN
+# 0024;PR # DOLLAR SIGN
+# 0022;QU # QUOTATION MARK
+# 0E01;SA # THAI CHARACTER KO KAI
+# DB7F;SG # Surrogate
+# 0020;SP # SPACE
+# 002F;SY # SOLIDUS /
+# F8FF;XX # Private Use
+# 200B;ZW # ZERO WIDTH SPACE
+
+
+# 2b  Always break at end of text
+
+<data>•  •\u00A1•</data>
+<data>•  •\u0041•</data>
+<data>•  •\u0009•</data>
+<data>•  •\u00B4•</data>
+<data>•    \u000C<100></data>    # LB3C  × BK
+<data>•  •\u2014•</data>
+<data>•  •\uFFFC•</data>
+<data>•   \u0029•</data>    # LB 8   × CL
+# <data>• • \u0301•</data>    # LB 7a   Treat SP CM* as if it were ID  #TODO:  SP CM
+<data>•   \u0021•</data>    # LB 8   × EX
+#<data>•   \u00A0•</data>    # LB 11b   × GL   TODO:  fix.
+<data>•  •\u002D•</data>
+<data>•  •\u4E00•</data>
+<data>•  •\u2024•</data>
+<data>•   \u002C•</data>    # LB 8   × IS
+<data>•   \u000A<100></data>    # LB3C   × ( BK | CR | LF | NL )
+<data>•  •\u0E5A•</data>
+<data>•  •\u0032•</data>
+<data>•  •\u0028•</data>
+<data>•  •\u0025•</data>
+<data>•  •\u0024•</data>
+<data>•  •\u0022•</data>
+<data>•  •\u0E01•</data>
+<data>•  •\uDB7F•</data>
+<data>•   \u0020•</data>     # LB4 - don't break before space.
+<data>•   \u002F•</data>     # LB 8  × SY
+<data>•  •\uF8FF•</data>
+<data>•   \u200B•</data>     # LB4 - don't break before ZA
+
+
+# 3a  Always break after hard line breaks.
+# 3c  Never break before hard line breaks.
+
+<data>•  •\u00A1\u2028<100>\u00A1•</data>
+<data>•  •\u0041\u2028<100>\u0041•</data>
+<data>•  •\u0009\u2028<100>\u0009•</data>
+<data>•  •\u00B4\u2028<100>\u00B4•</data>
+<data>•   \u000C<100>\u2028<100>\u000C<100></data>
+<data>•  •\u2014\u2028<100>\u2014•</data>
+<data>•  •\uFFFC\u2028<100>\uFFFC•</data>
+<data>•   \u0029\u2028<100>\u0029•</data>
+#<data>•   \u0301\u2028<100>\u0301•</data>    # TODO:  fix.
+<data>•   \u0021\u2028<100>\u0021•</data>
+#<data>•   \u00A0\u2028<100>\u00A0•</data>    # TODO:  fix
+<data>•  •\u002D\u2028<100>\u002D•</data>
+<data>•  •\u4E00\u2028<100>\u4E00•</data>
+<data>•  •\u2024\u2028<100>\u2024•</data>
+<data>•   \u002C\u2028<100>\u002C•</data>
+<data>•   \u000A<100>\u2028<100>\u000A<100></data>
+<data>•  •\u0E5A\u2028<100>\u0E5A•</data>
+<data>•  •\u0032\u2028<100>\u0032•</data>
+<data>•  •\u0028\u2028<100>\u0028•</data>
+<data>•  •\u0025\u2028<100>\u0025•</data>
+<data>•  •\u0024\u2028<100>\u0024•</data>
+<data>•  •\u0022\u2028<100>\u0022•</data>
+<data>•  •\u0E01\u2028<100>\u0E01•</data>
+<data>•  •\uDB7F\u2028<100>\uDB7F•</data>
+<data>•   \u0020\u2028<100>\u0020•</data>
+<data>•   \u002F\u2028<100>\u002F•</data>
+<data>•  •\uF8FF\u2028<100>\uF8FF•</data>
+<data>•   \u200B\u2028<100>\u200B•</data>
+
+
+#
+#  Old Line Break Test data.  Orginally located in RBBITest::TestDefaultRuleBasedLineIteration()
+#
+
+<line>
+
+<data>•Multi-•Level •example •of •a •semi-•idiotic •non-•sensical •(non-•important) •sentence. 
+<100>Hi  •Hello •How\n<100>are\r<100>you\u2028<100>fine.\t•good.  •Now\r<100>is\n<100>the\r\n<100>time\n<100>\r<100>for\r<100>\r<100>all•</data>
+
+<line>
+<data>•Hello! •how\r\n<100> •(are)\r<100> •you? •I'am •fine- •Thankyou. •foo\u00a0bar 
+<100>How, •are, •you? •This, •costs •$20,00,000.•</data>
+
+#     test for bug #4068133
+#
+<data>•\u96f6•\u4e00\u3002•\u4e8c\u3001•\u4e09\u3002\u3001•\u56db\u3001\u3002\u3001•\u4e94,•\u516d.•\u4e03.\u3001,\u3002•\u516b•</data>
+
+#     to test for bug #4086052
+<data>•foo\u00a0bar•</data>
+
+#     to test for bug #4097920
+<data>•dog,cat,mouse •(one)•(two)\n<100></data>
+
+#     to test for bug #4035266
+<data>•The •balance •is •$-23,456.78, •not •-•$32,456.78!\n<100></data>
+
+
+#      to test for bug #4098467
+#      What follows is a string of Korean characters (I found it in the Yellow Pages
+#      ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+#      it correctly), first as precomposed syllables, and then as conjoining jamo.
+#      Both sequences should be semantically identical and break the same way.
+#      precomposed syllables...  (I == Rich Gillam?)
+#
+<data>•\uc0c1•\ud56d •\ud55c•\uc778 •\uc5f0•\ud569 •\uc7a5•\ub85c•\uad50•\ud68c•</data>
+
+#      conjoining jamo...
+#      TODO:  rules update needed
+#<data>•\u1109\u1161\u11bc•\u1112\u1161\u11bc •\u1112\u1161\u11ab•\u110b\u1175\u11ab #•\u110b\u1167\u11ab•\u1112\u1161\u11b8 •\u110c\u1161\u11bc•\u1105\u1169•\u1100\u116d•\u1112\u116c•</data>
+
+#      to test for bug #4117554: Fullwidth .!? should be treated as postJwrd
+<data>•\u4e01\uff0e•\u4e02\uff01•\u4e03\uff1f•</data>
+
+#      Surrogate line break tests.
+#
+<data>•\u4e01•\ud840\udc01•\u4e02•abc •\ue000 •\udb80\udc01•</data>
+
+#      Regression for bug 836
+#        Note:  Unicode 5.1 changed this behavior
+#               ICU will want to change it back before releasing,
+#               so there is no break preceding the '('
+<data>•AAA•(AAA •</data> 
+
+#       Try some words from other scripts.
+#          Greek, Cyrillic, Hebrew, Arabic, Arabic, Georgian, Latin
+#      
+<data>•ΑΒΓ •БВГ •אבג֓ •ابت •١٢٣ •\u10A0\u10A1\u10A2 •ABC •</data>
+
+
+########################################################################################
+#
+#
+#       T i t l e   B o u n d a r y      T e s t s
+#
+#
+##########################################################################################
+<title>
+<data>•Here •is •a •short •sample •sentence.  •And •another.•</data>
+<data>•HERE •IS •A •SHORT •SAMPLE •SENTENCE.  •AND •ANOTHER.•</data>
+<data>•  •Start •and •end •with •spaces   •</data>
+<data>•Include 123 456 ^&  •some 54332 •numbers 4445•abc123•abc •ending 1223 •</data>
+
+<data>•Combining\u0301 \u0301•ma\u0306rks  •bye  •</data>
+<data>•123  •Start •with •a •number.•</data>
+
+<data>•'•start •with •a •case-•ignorable •cha'r'a'cter•</data>
+
+
+##########################################################################################
+#
+#   Thai Tests
+#
+##########################################################################################
+<locale th>
+<word>
+#
+# Test data originally from the test code source file
+#      // @suwit -- Thai sample data from GVT Guideline
+#
+#  NOTE:  Thai Java results differ from C because the new dictionary code is not
+#         yet ported.  All tags are zero with the old Thai impl.
+
+<data>•\u0E2B\u0E19\u0E36\u0E48\u0E07<000>\u0E04\u0E33<000>\u0E44\u0E17\u0E22<000>\
+\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16<000>\u0E1B\u0E23\u0E30\u0E01\u0E2D\u0E1A<000>\
+\u0E14\u0E49\u0E27\u0E22<000>\u0e2b\u0e25\u0e32\u0e22<000>\
+\u0e1e\u0e22\u0e32\u0e07\u0e04\u0e4c<000></data>
+
+#
+#  Jitterbug 3671 Test Case
+#
+<data>•สวัสดี<000>ครับ<000>สบาย<000>ดี<000>ไหม<000> •ครับ<000></data>
+
+
diff --git a/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java b/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java
new file mode 100644
index 0000000..5a9604e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java
@@ -0,0 +1,169 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.sample;
+
+import com.ibm.icu.dev.test.ModuleTest;
+
+public class ModuleTestSample extends ModuleTest {
+    public static void main(String[] args) throws Exception {
+    new ModuleTestSample().run(args);
+    }
+    ModuleTestSample(){
+        super("com/ibm/icu/dev/data/testdata/", "Test");
+    }
+
+    // standard loop, settings and cases
+//    public void Test01() {
+//    while (nextSettings()) {
+//        logln("--------");
+//        logln("String: " + settings.getString("aString"));
+//        if (settings.isDefined("anInt")) {
+//        logln("Int: " + settings.getInt("anInt"));
+//        }
+//        logln("Boolean: " + settings.getBoolean("aBoolean"));
+//
+//        while (nextCase()) {
+//        logln("  ----");
+//        logln("  StringArray: " + printArray(testcase.getStringArray("aStringArray")));
+//        logln("  IntArray: " + printArray(testcase.getIntArray("anIntArray")));
+//        logln("  BooleanArray: " + printArray(testcase.getBooleanArray("aBooleanArray")));
+//        }
+//    }
+//    }
+//
+//    // loop with just cases
+//    public void Test02() {
+//    while (nextCase()) {
+//        logln("----");
+//        logln("String: " + testcase.getString("aString"));
+//        logln("Int: " + testcase.getInt("anInt"));
+//        logln("Boolean: " + testcase.getBoolean("aBoolean"));
+//    }
+//    }
+
+    // no cases, just uses info for test
+    public void Test03() {
+//    DataMap info = testInfo();
+//    if (info != null) {
+////        logln(info.getString(TestDataModule.DESCRIPTION)); // standard
+//        logln(info.getString("Extra")); // test-specific
+//    }
+//    return;
+    }
+
+    // no data, ModuleTest should not allow this to execute by default
+    public void Test04() {
+    errln("Test04 should not execute!");
+    }
+
+    // special override of validateMethod allows Test05 
+    // to execute even though it has no data in the module
+    protected boolean validateMethod(String methodName) {
+    return methodName.equals("Test05") ? true : super.validateMethod(methodName);
+    }
+
+    // no data, but override of validateMethod allows it to execute
+    public void Test05() {
+    logln("Test05 executed.");
+    }
+
+//    // The test data contains an error in the third case.  When getInt("Data") is
+//    // executed the error is logged and iteration stops.
+//    public void Test06() {
+//    while (nextCase()) {
+//        logln("----");
+//        logln("isGood: " + testcase.getString("IsGood"));
+//        logln("  Data: " + testcase.getInt("Data"));
+//    }
+//    }
+//
+//    // The test using the data reports an error, which also automatically stops iteration.
+//    public void Test07() {
+//    while (nextSettings()) {
+//        int value = settings.getInt("Value");
+//        while (nextCase()) {
+//        int factor = testcase.getInt("Factor");
+//        float result = (float)value / factor;
+//        if (result != (int)result) {
+//            errln("the number '" + factor + "' is not a factor of the number '" + value + "'");
+//        } else {
+//            logln("'" + factor + "' is a factor of '" + value + "'");
+//        }
+//        }
+//    }
+//    }
+
+//    // The number of data elements is incorrect
+//    public void Test08() {
+//    while (nextCase()) {
+//        int one = testcase.getInt("One");
+//        int two = testcase.getInt("Two");
+//        int three = testcase.getInt("Three");
+//        logln("got: " + one + ", " + two + ", " + three);
+//    }
+//    }
+//
+//    public void Test09() {
+//        while (nextCase()) {
+//            int radix = testcase.getInt("Radix");
+//            int[] pow = testcase.getIntArray("Power");
+//            int[] val = testcase.getIntArray("Value");
+//            logln("radix: " + radix + " pow: " + printArray(pow) + " val: " + printArray(val));
+//            for (int i = 0; i < pow.length; ++i) {
+//                if (val[i] != (int)Math.pow(radix, pow[i])) {
+//                    errln("radix: " + radix + " to power " + pow[i] + " != " + val[i]);
+//                    break;
+//                }
+//            }
+//        }
+//    }
+                
+    // utility print functions to display the data from the resource
+    String printArray(String[] a) {
+    StringBuffer buf = new StringBuffer("String[] {");
+    for (int i = 0; i < a.length; ++i) {
+        if (i != 0) {
+        buf.append(",");
+        }
+        buf.append(" " + a[i]);
+    }
+    buf.append(" }");
+    return buf.toString();
+    }
+
+    String printArray(int[] a) {
+    StringBuffer buf = new StringBuffer("int[] {");
+    for (int i = 0; i < a.length; ++i) {
+        if (i != 0) {
+        buf.append(",");
+        }
+        buf.append(" " + a[i]);
+    }
+    buf.append(" }");
+    return buf.toString();
+    }
+
+    String printArray(boolean[] a) {
+    StringBuffer buf = new StringBuffer("boolean[] {");
+    for (int i = 0; i < a.length; ++i) {
+        if (i != 0) {
+        buf.append(",");
+        }
+        buf.append(" " + a[i]);
+    }
+    buf.append(" }");
+    return buf.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.ModuleTest#processModules()
+     */
+    protected void processModules() {
+        // TODO Auto-generated method stub
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java b/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java
new file mode 100644
index 0000000..0ed8ad9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java
@@ -0,0 +1,170 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.sample;
+
+import java.util.ListResourceBundle;
+
+/**
+ * This is sample data for ModuleTestSample, which is an illustration
+ * of a subclass of ModuleTest.  This data is in a format which
+ * is understood by ResourceModule, which for simplicity expects
+ * all data, including numeric and boolean data, to be represented
+ * by Strings.
+ */
+public class ModuleTestSampleData extends ListResourceBundle {
+    public Object[][] getContents() {
+    return contents;
+    }
+
+    Object[][] contents = {
+    { "Info", new Object[][] {
+        { "Description", "This is a sample test module that illustrates ModuleTest " +
+          "and uses data formatted for ResourceModule." },
+        { "Headers", new String[] {
+        "aStringArray", "anIntArray", "aBooleanArray"
+        }},
+    }},
+    
+
+    { "TestData", new Object[][] {
+        { "Test01", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A typical test using both settings and cases." },
+            { "Long_Description", "It does not defined its own headers, but instead " +
+              "uses the default headers defined for the module.  " +
+              "There are two sets of settings and three cases." },
+        }},
+        { "Settings", new Object[] {
+            new Object[][]
+            {{ "aString", "this is a string" },
+             { "anInt", "43" },
+             { "aBoolean", "false" }},
+            new Object[][] 
+            {{ "aString", "this is another string" },
+             { "aBoolean", "true" }}
+        }},
+        { "Cases", new Object[] {
+            new Object[] {
+                new String[] { "one", "two", "three" },
+                new String[] { "24", "48", "72" },
+                new String[] { "true", "false", "true" }
+            },
+            new Object[] { 
+                new String[] { "four", "five", "six" },
+                new String[] { "-1", "-5", "-10" },
+                new String[] { "true", "false", "false" }
+            },
+            new Object[] { 
+                new String[] { "bagel", "peanuts", "carrot" },
+                new String[] { "0", "00001", "10101" },
+                new String[] { "false", "false", "False" }
+            },
+        }}
+        }},
+
+        { "Test02", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A typical test that uses cases but not settings." },
+            { "Long_Description", "It defines its own headers." },
+            { "Headers", new String[] {
+            "aString", "anInt", "aBoolean"
+            }},
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "Superstring", "42", "true" },
+            new Object[] { "Underdog", "12", "false" },
+            new Object[] { "ScoobyDoo", "7", "TrUe" }
+        }}
+        }},
+
+        { "Test03", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A typical test that uses just the info, no cases or settings." },
+            { "Extra", "This is some extra information." }
+        }},
+        }},
+
+        // no Test04 data
+        // Test04 should cause an exception to be thrown since ModuleTestSample does not
+        // specify that it is ok for it to have no data.
+
+        // no Test05 data
+        // Test05 should just log this fact, since ModuleTestSample indicates that it is
+        // ok for Test05 to have no data in its override of validateMethod.
+
+        { "Test06", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A test that has bad data." },
+            { "Long_Description", "This illustrates how a data error will automatically " +
+              "terminate the settings and cases loop." },
+            { "Headers", new String[] {
+            "IsGood", "Data",
+            }},
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "Good", "23" },
+            new Object[] { "Good", "-123" },
+            new Object[] { "Bad", "Whoops" },
+            new Object[] { "Not Executed", "35" },
+        }},
+        }},
+
+        { "Test07", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A test that fails with a certain combination of settings and case." },
+            { "Long_Description", "This illustrates how a test error will automatically " +
+              "terminate the settings and cases loop.  Settings data is values, the case " +
+              "data is factors.  The third factor is not a factor of the second value.  " +
+              "The test will log an error, which will automatically stop the loop." },
+            { "Headers", new String[] {
+            "Factor",
+            }},
+        }},
+        { "Settings" , new Object[] {
+            new Object[][] {{ "Value", "210" }},
+            new Object[][] {{ "Value", "420" }},
+            new Object[][] {{ "Value", "42" }},
+            new Object[][] {{ "Value", "Not reached." }}
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "2" },
+            new Object[] { "3" },
+            new Object[] { "5" },
+            new Object[] { "7" },
+        }},
+        }},
+
+        { "Test08", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A test with data missing from a test case." },
+            { "Headers", new String[] {
+            "One", "Two", "Three"
+            }},
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "1", "2", "3" },
+            new Object[] { "4", "5" }, // too short
+            new Object[] { "6", "7", "8" },
+        }},
+        }},
+
+        { "Test09", new Object[][] {
+        { "Info", new Object[][] {
+            { "Description", "A test with data stored as int arrays instead of strings" },
+            { "Headers", new String[] {
+            "Radix", "Power", "Value"
+            }},
+        }},
+        { "Cases", new Object[] {
+            new Object[] { "2", new int[] { 1, 2, 3 }, new int[] { 2, 4, 8 }},
+            new Object[] { "3", new int[] { 3, 4, 5 }, new int[] { 27, 81, 243 }},
+            new Object[] { "2", new int[] { 0, 8, 16, 24 }, new int[] { 1, 256, 65536, 65536 * 256 }},
+        }},
+        }},
+    }},
+    };
+}
diff --git a/src/com/ibm/icu/dev/test/search/SearchTest.java b/src/com/ibm/icu/dev/test/search/SearchTest.java
new file mode 100644
index 0000000..98b24f8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/search/SearchTest.java
@@ -0,0 +1,2016 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * Port From:   ICU4C v2.1 : collate/StringSearchTest
+ * Source File: $ICU4CRoot/source/test/intltest/srchtest.cpp
+ **/
+
+package com.ibm.icu.dev.test.search;
+
+import java.util.Locale;
+import java.text.StringCharacterIterator;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+public class SearchTest extends TestFmwk {
+
+    //inner class
+    static class SearchData {
+        SearchData(String text, String pattern, String coll, int strength, String breaker,
+                   int[] offset, int[] size) {
+            this.text = text;
+            this.pattern = pattern;
+            this.collator = coll;
+            this.strength = strength;
+            this.breaker = breaker;
+            this.offset = offset;
+            this.size = size;
+        }
+        String              text;
+        String              pattern;
+        String              collator;
+        int                 strength;
+        String              breaker;
+        int[]               offset;
+        int[]               size;
+    }
+
+    RuleBasedCollator m_en_us_;
+    RuleBasedCollator m_fr_fr_;
+    RuleBasedCollator m_de_;
+    RuleBasedCollator m_es_;
+    BreakIterator     m_en_wordbreaker_;
+    BreakIterator     m_en_characterbreaker_;
+
+    static SearchData[] BASIC = {
+        new SearchData("xxxxxxxxxxxxxxxxxxxx",          "fisher",       null, Collator.TERTIARY, null, new int[] {-1},            new int[]{0}),
+        new SearchData("silly spring string",           "string",       null, Collator.TERTIARY, null, new int[]{13, -1},         new int[]{6}),
+        new SearchData("silly spring string string",    "string",       null, Collator.TERTIARY, null, new int[]{13, 20, -1},     new int[]{6, 6}),
+        new SearchData("silly string spring string",    "string",       null, Collator.TERTIARY, null, new int[]{6, 20, -1},      new int[]{6, 6}),
+        new SearchData("string spring string",          "string",       null, Collator.TERTIARY, null, new int[]{0, 14, -1},      new int[]{6, 6}),
+        new SearchData("Scott Ganyo",                   "c",            null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{1}),
+        new SearchData("Scott Ganyo",                   " ",            null, Collator.TERTIARY, null, new int[]{5, -1},          new int[]{1}),
+        new SearchData("\u0300\u0325",                  "\u0300",       null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0}),
+        new SearchData("a\u0300\u0325",                 "\u0300",       null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0}),
+        new SearchData("a\u0300\u0325",                 "\u0300\u0325", null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{2}),
+        new SearchData("a\u0300b",                      "\u0300",       null, Collator.TERTIARY, null, new int[]{1, -1},          new int[]{1}),
+        new SearchData("\u00c9",                        "e",            null, Collator.PRIMARY,  null, new int[]{0, -1},          new int[]{1}),
+        new SearchData(null,                            null,           null, Collator.TERTIARY, null, new int[]{-1},             new int[]{0})
+    };
+
+    SearchData BREAKITERATOREXACT[] = {
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "characterbreaker", new int[] {0, 5, -1}, new int[] {3, 3}),
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "wordbreaker", new int[] {5, -1}, new int[] {3}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "characterbreaker", new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "wordbreaker", new int[] {10, -1}, new int[] {3}),
+        new SearchData("Channel, another channel, more channels, and one last Channel", "Channel", "es", Collator.TERTIARY,
+             "wordbreaker", new int[] {0, 54, -1}, new int[] {7, 7}),
+        /* jitterbug 1745 */
+        new SearchData("testing that \u00e9 does not match e", "e", null, Collator.TERTIARY,
+            "characterbreaker", new int[] {1, 17, 30, -1}, new int[] {1, 1, 1}),
+        new SearchData("testing that string ab\u00e9cd does not match e", "e", null, Collator.TERTIARY,
+            "characterbreaker", new int[] {1, 28, 41, -1}, new int[] {1, 1, 1}),
+        new SearchData("\u00c9", "e", "fr", Collator.PRIMARY,  "characterbreaker", new int[]{0, -1}, new int[]{1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData BREAKITERATORCANONICAL[] = {
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "characterbreaker", new int[] {0, 5, -1}, new int[] {3, 3}),
+        new SearchData("foxy fox", "fox", null, Collator.TERTIARY, "wordbreaker", new int[] {5, -1}, new int[] {3}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "characterbreaker", new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, "wordbreaker", new int[] {10, -1}, new int[] {3}),
+        new SearchData("Channel, another channel, more channels, and one last Channel", "Channel", "es", Collator.TERTIARY, "wordbreaker",
+                       new int[] {0, 54, -1}, new int[] {7, 7}),
+        /* jitterbug 1745 */
+        new SearchData("testing that \u00e9 does not match e", "e", null, Collator.TERTIARY,
+            "characterbreaker", new int[] {1, 17, 30, -1}, new int[] {1, 1, 1}),
+        new SearchData("testing that string ab\u00e9cd does not match e", "e", null,
+             Collator.TERTIARY, "characterbreaker", new int[] {1, 28, 41, -1}, new int[] {1, 1, 1}),
+        new SearchData("\u00c9", "e", "fr", Collator.PRIMARY,  "characterbreaker", new int[]{0, -1}, new int[]{1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData BASICCANONICAL[] = {
+        new SearchData("xxxxxxxxxxxxxxxxxxxx", "fisher", null, Collator.TERTIARY, null, new int[] {-1}, new int [] {0}),
+        new SearchData("silly spring string", "string", null, Collator.TERTIARY, null, new int[] {13, -1}, new int[] {6}),
+        new SearchData("silly spring string string", "string", null, Collator.TERTIARY, null, new int[] {13, 20, -1}, new int[] {6, 6}),
+        new SearchData("silly string spring string", "string", null, Collator.TERTIARY, null, new int[] {6, 20, -1}, new int[] {6, 6}),
+        new SearchData("string spring string", "string", null, Collator.TERTIARY, null, new int[] {0, 14, -1}, new int[] {6, 6}),
+        new SearchData("Scott Ganyo", "c", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("Scott Ganyo", " ", null, Collator.TERTIARY, null, new int[] {5, -1}, new int[] {1}),
+        new SearchData("\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int [] {0, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int [] {1, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300\u0325", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[]{2}),
+        new SearchData("a\u0300b", "\u0300", null, Collator.TERTIARY, null, new int[]{1, -1}, new int[] {1}),
+        new SearchData("a\u0300\u0325b", "\u0300b", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {3}),
+        new SearchData("\u0325\u0300A\u0325\u0300", "\u0300A\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {5}),
+        new SearchData("\u0325\u0300A\u0325\u0300", "\u0325A\u0325", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {5}),
+        new SearchData("a\u0300\u0325b\u0300\u0325c \u0325b\u0300 \u0300b\u0325", "\u0300b\u0325", null, Collator.TERTIARY, null,
+            new int[] {1, 12, -1}, new int[] {5, 3}),
+        new SearchData("\u00c4\u0323", "A\u0323\u0308", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0308\u0323", "\u0323\u0308", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData COLLATOR[] = {
+        /* english */
+        new SearchData("fox fpx", "fox", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}),
+        /* tailored */
+        new SearchData("fox fpx", "fox", null, Collator.PRIMARY, null, new int[] {0, 4, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    String TESTCOLLATORRULE = "& o,O ; p,P";
+    String EXTRACOLLATIONRULE = " & ae ; \u00e4 & AE ; \u00c4 & oe ; \u00f6 & OE ; \u00d6 & ue ; \u00fc & UE ; \u00dc";
+
+
+    SearchData COLLATORCANONICAL[] = {
+        /* english */
+        new SearchData("fox fpx", "fox", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}),
+        /* tailored */
+        new SearchData("fox fpx", "fox", null, Collator.PRIMARY, null, new int[] {0, 4, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData COMPOSITEBOUNDARIES[] = {
+        new SearchData("\u00C0", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u00C0C", "A", null, Collator.TERTIARY, null, new int[]  {0, 1, -1}, new int[]  {1, 1}),
+        new SearchData("\u00C0A", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("B\u00C0", "A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u00C0B", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0300\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("\u00C0\u0300", "\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        /* A + 030A + 0301 */
+        new SearchData("\u01FA", "\u01FA", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030AA", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "A\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030A\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FAA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F73", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F72", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73", "\u0F71\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u0F73", "A\u0F71", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u0F73A", "\u0F72A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData COMPOSITEBOUNDARIESCANONICAL[] = {
+        new SearchData("\u00C0", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u00C0C", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("\u00C0A", "A", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        new SearchData("B\u00C0", "A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u00C0B", "A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0300\u00C0", "\u0300", null, Collator.TERTIARY, null, new int[] {0, 1, -1}, new int[] {1, 1}),
+        /* \u0300 blocked by \u0300 */
+        new SearchData("\u00C0\u0300", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        /* A + 030A + 0301 */
+        new SearchData("\u01FA", "\u01FA", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u01FA", "\u030AA", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        /* blocked accent */
+        new SearchData("\u01FA", "A\u0301", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u0301A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("\u01FA", "\u030A\u0301", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u01FA", "A\u030A", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {1}),
+        new SearchData("\u01FAA", "\u0301A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0F73", "\u0F73", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("\u0F73", "\u0F71\u0F72", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {1}),
+        new SearchData("A\u0F73", "A\u0F71", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0F73A", "\u0F72A", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u01FA A\u0301\u030A A\u030A\u0301 A\u030A \u01FA", "A\u030A",
+            null, Collator.TERTIARY, null, new int[] {0, 6, 10, 13, -1}, new int[] {1, 3, 2, 1}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData SUPPLEMENTARY[] = {
+        /* 012345678901234567890123456789012345678901234567890012345678901234567890123456789012345678901234567890012345678901234567890123456789 */
+        new SearchData("abc \uD800\uDC00 \uD800\uDC01 \uD801\uDC00 \uD800\uDC00abc abc\uD800\uDC00 \uD800\uD800\uDC00 \uD800\uDC00\uDC00",
+            "\uD800\uDC00", null, Collator.TERTIARY, null, 
+            new int[] {4, 13, 22, 26, 29, -1}, new int[] {2, 2, 2, 2, 2}),
+        new SearchData("and\uD834\uDDB9this sentence", "\uD834\uDDB9", null, 
+                       Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {2}),
+        new SearchData("and \uD834\uDDB9 this sentence", " \uD834\uDDB9 ", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and-\uD834\uDDB9-this sentence", "-\uD834\uDDB9-", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and,\uD834\uDDB9,this sentence", ",\uD834\uDDB9,", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and?\uD834\uDDB9?this sentence", "?\uD834\uDDB9?", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    String CONTRACTIONRULE = "&z = ab/c < AB < X\u0300 < ABC < X\u0300\u0315";
+
+    SearchData CONTRACTION[] = {
+        /* common discontiguous */
+        new SearchData("A\u0300\u0315", "\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("A\u0300\u0315", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        /* contraction prefix */
+        new SearchData("AB\u0315C", "A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("AB\u0315C", "AB", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("AB\u0315C", "\u0315", null, Collator.TERTIARY, null, new int[] {2, -1}, new int[] {1}),
+        /* discontiguous problem here for backwards iteration.
+        accents not found because discontiguous stores all information */
+        new SearchData("X\u0300\u0319\u0315", "\u0319", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+         /* ends not with a contraction character */
+        new SearchData("X\u0315\u0300D", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("X\u0315\u0300D", "X\u0300\u0315", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {3}),
+        new SearchData("X\u0300\u031A\u0315D", "X\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        /* blocked discontiguous */
+        new SearchData("X\u0300\u031A\u0315D", "\u031A\u0315D", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("ab", "z", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData CONTRACTIONCANONICAL[] = {
+        /* common discontiguous */
+        new SearchData("A\u0300\u0315", "\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData("A\u0300\u0315", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        /* contraction prefix */
+        new SearchData("AB\u0315C", "A", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("AB\u0315C", "AB", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("AB\u0315C", "\u0315", null, Collator.TERTIARY, null, new int[] {2, -1}, new int[] {1}),
+        /* discontiguous problem here for backwards iteration.
+        forwards gives 0, 4 but backwards give 1, 3 */
+        /* {"X\u0300\u0319\u0315", "\u0319", null, Collator.TERTIARY, null, {0, -1},
+        {4}}, */
+
+         /* ends not with a contraction character */
+        new SearchData("X\u0315\u0300D", "\u0300\u0315", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData("X\u0315\u0300D", "X\u0300\u0315", null, Collator.TERTIARY, null,
+            new int[] {0, -1}, new int[] {3}),
+        new SearchData("X\u0300\u031A\u0315D", "X\u0300", null, Collator.TERTIARY, null,
+            new int[] {0, -1}, new int[] {4}),
+        /* blocked discontiguous */
+        new SearchData("X\u0300\u031A\u0315D", "\u031A\u0315D", null, Collator.TERTIARY, null,
+            new int[] {1, -1}, new int[] {4}),
+        new SearchData("ab", "z", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData MATCH[] = {
+        new SearchData("a busy bee is a very busy beeee", "bee", null, Collator.TERTIARY, null,
+        new int[] {7, 26, -1}, new int[] {3, 3}),
+        /* 012345678901234567890123456789012345678901234567890 */
+        new SearchData("a busy bee is a very busy beeee with no bee life", "bee", null,
+            Collator.TERTIARY, null, new int[] {7, 26, 40, -1}, new int[] {3, 3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    String IGNORABLERULE = "&a = \u0300";
+
+    SearchData IGNORABLE[] = {
+        new SearchData("\u0300\u0315 \u0300\u0315 ", "\u0300", null, Collator.PRIMARY, null,
+            new int[] {0, 3, -1}, new int[] {2, 2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+    
+    SearchData DIACTRICMATCH[] = {
+        new SearchData("\u0061\u0061\u00E1", "\u0061\u00E1", null, Collator.SECONDARY, null,
+            new int[] {1, -1}, new int[] {2}),   
+        new SearchData("\u0020\u00C2\u0303\u0020\u0041\u0061\u1EAA\u0041\u0302\u0303\u00C2\u0303\u1EAB\u0061\u0302\u0303\u00E2\u0303\uD806\uDC01\u0300\u0020",
+            "\u00C2\u0303", null, Collator.PRIMARY, null, new int[] {1, 4, 5, 6, 7, 10, 12, 13, 16,-1}, new int[] {2, 1, 1, 1, 3, 2, 1, 3, 2}),
+        new SearchData("\u03BA\u03B1\u03B9\u0300\u0020\u03BA\u03B1\u1F76", "\u03BA\u03B1\u03B9", null, Collator.PRIMARY, null,
+                new int[] {0, 5, -1}, new int[] {4, 3}),   
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NORMCANONICAL[] = {
+        new SearchData("\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("\u0300\u0325", "\u0325", null, Collator.TERTIARY, null, new int[] {0, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {1, -1},
+            new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300\u0325", null, Collator.TERTIARY, null, new int[] {1, -1},
+            new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0325", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData("a\u0300\u0325", "\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NORMEXACT[] = {
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {1, -1}, new int[] {2}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NONNORMEXACT[] = {
+        new SearchData("a\u0300\u0325", "\u0325\u0300", null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData OVERLAP[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 2, 4, -1}, new int[] {4, 4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NONOVERLAP[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 4, -1}, new int[] {4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData OVERLAPCANONICAL[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 2, 4, -1},
+                        new int[] {4, 4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData NONOVERLAPCANONICAL[] = {
+        new SearchData("abababab", "abab", null, Collator.TERTIARY, null, new int[] {0, 4, -1}, new int[] {4, 4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData PATTERNCANONICAL[] = {
+        new SearchData("The quick brown fox jumps over the lazy foxes", "the", null,
+                       Collator.PRIMARY, null, new int[] {0, 31, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", null,
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData PATTERN[] = {
+        new SearchData("The quick brown fox jumps over the lazy foxes", "the", null,
+                       Collator.PRIMARY, null, new int[] {0, 31, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", null,
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData STRENGTH[] = {
+        /*012345678901234567890123456789012345678901234567890123456789*/
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en",
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en",
+                       Collator.PRIMARY, "wordbreaker", new int[] {16, -1}, new int[] {3}),
+        new SearchData("blackbirds Pat p\u00E9ch\u00E9 p\u00EAche p\u00E9cher p\u00EAcher Tod T\u00F6ne black Tofu blackbirds Ton PAT toehold blackbird black-bird pat toe big Toe",
+                       "peche", "fr", Collator.PRIMARY, null, new int[] {15, 21, 27, 34, -1}, new int[] {5, 5, 5, 5}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, null,
+                        new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("A channel, another CHANNEL, more Channels, and one last channel...", "channel", "es",
+                        Collator.PRIMARY, null, new int[] {2, 19, 33, 56, -1}, new int[] {7, 7, 7, 7}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    SearchData STRENGTHCANONICAL[] = {
+        /*012345678901234567890123456789012345678901234567890123456789 */
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en",
+                       Collator.PRIMARY, null, new int[] {16, 40, -1}, new int[] {3, 3}),
+        new SearchData("The quick brown fox jumps over the lazy foxes", "fox", "en",
+                       Collator.PRIMARY, "wordbreaker", new int[] {16, -1}, new int[] {3}),
+        new SearchData("blackbirds Pat p\u00E9ch\u00E9 p\u00EAche p\u00E9cher p\u00EAcher Tod T\u00F6ne black Tofu blackbirds Ton PAT toehold blackbird black-bird pat toe big Toe",
+                       "peche", "fr", Collator.PRIMARY, null, new int[] {15, 21, 27, 34, -1}, new int[] {5, 5, 5, 5}),
+        new SearchData("This is a toe T\u00F6ne", "toe", "de", Collator.PRIMARY, null,
+                       new int[] {10, 14, -1}, new int[] {3, 2}),
+        new SearchData("A channel, another CHANNEL, more Channels, and one last channel...", "channel", "es",
+                       Collator.PRIMARY, null, new int[]{2, 19, 33, 56, -1}, new int[] {7, 7, 7, 7}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[]{0})
+    };
+
+    SearchData SUPPLEMENTARYCANONICAL[] = {
+        /*012345678901234567890123456789012345678901234567890012345678901234567890123456789012345678901234567890012345678901234567890123456789 */
+        new SearchData("abc \uD800\uDC00 \uD800\uDC01 \uD801\uDC00 \uD800\uDC00abc abc\uD800\uDC00 \uD800\uD800\uDC00 \uD800\uDC00\uDC00",
+                       "\uD800\uDC00", null, Collator.TERTIARY, null, new int[] {4, 13, 22, 26, 29, -1},
+                       new int[] {2, 2, 2, 2, 2}),
+        new SearchData("and\uD834\uDDB9this sentence", "\uD834\uDDB9", null, 
+                       Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {2}),
+        new SearchData("and \uD834\uDDB9 this sentence", " \uD834\uDDB9 ", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and-\uD834\uDDB9-this sentence", "-\uD834\uDDB9-", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and,\uD834\uDDB9,this sentence", ",\uD834\uDDB9,", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData("and?\uD834\uDDB9?this sentence", "?\uD834\uDDB9?", 
+                       null, Collator.TERTIARY, null, new int[] {3, -1}, 
+                       new int[] {4}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    static SearchData VARIABLE[] = {
+        /*012345678901234567890123456789012345678901234567890123456789*/
+        new SearchData("blackbirds black blackbirds blackbird black-bird", "blackbird", null, Collator.TERTIARY,   null,
+        new int[] {0, 17, 28, 38, -1}, new int[] {9, 9, 9, 10}),
+
+        /* to see that it doesn't go into an infinite loop if the start of text
+        is a ignorable character */
+        new SearchData(" on",                                              "go",        null, Collator.TERTIARY,   null,
+                       new int[] {-1}, new int[]{0}),
+        new SearchData("abcdefghijklmnopqrstuvwxyz",                       "   ",       null, Collator.PRIMARY,    null,
+                        new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1},
+                        new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}),
+
+        /* testing tightest match */
+        new SearchData(" abc  a bc   ab c    a  bc     ab  c",             "abc",       null, Collator.QUATERNARY, null,
+                       new int[]{1, -1}, new int[] {3}),
+        /*012345678901234567890123456789012345678901234567890123456789 */
+        new SearchData(" abc  a bc   ab c    a  bc     ab  c",             "abc",       null, Collator.SECONDARY,  null,
+                       new int[] {1, 6, 13, 21, 31, -1}, new int[] {3, 4, 4, 5, 5}),
+
+        /* totally ignorable text */
+        new SearchData("           ---------------",                       "abc",       null, Collator.SECONDARY,  null,
+                       new int[] {-1}, new int[] {0}),
+        new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[] {0})
+    };
+
+    static SearchData TEXTCANONICAL[] = {
+        new SearchData("the foxy brown fox",                               "fox",       null, Collator.TERTIARY,   null,
+                       new int[] {4, 15, -1}, new int[] {3, 3}),
+        new SearchData("the quick brown fox",                              "fox",       null, Collator.TERTIARY,   null,
+                       new int[] {16, -1}, new int[]{3}),
+        new SearchData(null, null, null, Collator.TERTIARY,null, new int[] {-1}, new int[] {0})
+    };
+
+    /**
+     * Constructor
+     */
+    public SearchTest()
+    {
+
+    }
+
+    protected void init()throws Exception{
+        m_en_us_ = (RuleBasedCollator)Collator.getInstance(Locale.US);
+        m_fr_fr_ = (RuleBasedCollator)Collator.getInstance(Locale.FRANCE);
+        m_de_ = (RuleBasedCollator)Collator.getInstance(new Locale("de", "DE"));
+        m_es_ = (RuleBasedCollator)Collator.getInstance(new Locale("es", "ES"));
+        m_en_wordbreaker_ = BreakIterator.getWordInstance();
+        m_en_characterbreaker_ = BreakIterator.getCharacterInstance();
+        String rules = m_de_.getRules() + EXTRACOLLATIONRULE;
+        m_de_ = new RuleBasedCollator(rules);
+        rules = m_es_.getRules() + EXTRACOLLATIONRULE;
+        m_es_ = new RuleBasedCollator(rules);
+
+    }
+    public static void main(String[] args) throws Exception {
+        new SearchTest().run(args);
+        // new SearchTest().TestContraction();
+    }
+
+    RuleBasedCollator getCollator(String collator) {
+        if (collator == null) {
+            return m_en_us_;
+        } if (collator.equals("fr")) {
+            return m_fr_fr_;
+        } else if (collator.equals("de")) {
+            return m_de_;
+        } else if (collator.equals("es")) {
+            return m_es_;
+        } else {
+            return m_en_us_;
+        }
+    }
+
+    BreakIterator getBreakIterator(String breaker) {
+        if (breaker == null) {
+            return null;
+        } if (breaker.equals("wordbreaker")) {
+            return m_en_wordbreaker_;
+        } else {
+            return m_en_characterbreaker_;
+        }
+    }
+
+    boolean assertCanonicalEqual(SearchData search) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch;
+
+        String text = search.text;
+        String  pattern = search.pattern;
+
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search" + e.getMessage());
+            return false;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+
+    boolean assertEqual(SearchData search) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch;
+
+        String text = search.text;
+        String  pattern = search.pattern;
+
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+        } catch (Exception e) {
+            errln("Error opening string search " + e.getMessage());
+            return false;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+
+    boolean assertEqualWithAttribute(SearchData search, boolean canonical, boolean overlap) {
+        Collator      collator = getCollator(search.collator);
+        BreakIterator breaker  = getBreakIterator(search.breaker);
+        StringSearch  strsrch;
+
+        String text = search.text;
+        String  pattern = search.pattern;
+
+        if (breaker != null) {
+            breaker.setText(text);
+        }
+        collator.setStrength(search.strength);
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), (RuleBasedCollator)collator, breaker);
+            strsrch.setCanonical(canonical);
+            strsrch.setOverlapping(overlap);
+        } catch (Exception e) {
+            errln("Error opening string search " + e.getMessage());
+            return false;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, search)) {
+            collator.setStrength(Collator.TERTIARY);
+            return false;
+        }
+        collator.setStrength(Collator.TERTIARY);
+        return true;
+    }
+
+    boolean assertEqualWithStringSearch(StringSearch strsrch, SearchData search) {
+        int           count       = 0;
+        int   matchindex  = search.offset[count];
+        String matchtext;
+
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+            errln("Error with the initialization of match start and length");
+        }
+        // start of following matches
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.next();
+            //int x = strsrch.getMatchStart();
+            if (matchindex != strsrch.getMatchStart() ||
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+            }
+            count ++;
+
+            matchtext = strsrch.getMatchedText();
+            String targetText = search.text;
+            if (matchlength > 0 &&
+                targetText.substring(matchindex, matchindex + matchlength).compareTo(matchtext) != 0) {
+                errln("Error getting following matched text");
+            }
+
+            matchindex = search.offset[count];
+        }
+        strsrch.next();
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+        }
+        // start of preceding matches
+        count = count == 0 ? 0 : count - 1;
+        matchindex = search.offset[count];
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.previous();
+            if (matchindex != strsrch.getMatchStart() ||
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+            }
+
+            matchtext = strsrch.getMatchedText();
+            String targetText = search.text;
+            if (matchlength > 0 &&
+                targetText.substring(matchindex, matchindex + matchlength).compareTo(matchtext) != 0) {
+                errln("Error getting following matched text");
+            }
+
+            matchindex = count > 0 ? search.offset[count - 1] : -1;
+            count --;
+        }
+        strsrch.previous();
+        if (strsrch.getMatchStart() != SearchIterator.DONE ||
+            strsrch.getMatchLength() != 0) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error following match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return false;
+        }
+        return true;
+    }
+
+    public void TestConstructor()
+    {
+        String pattern = "pattern";
+        String text = "text";
+        StringCharacterIterator textiter = new StringCharacterIterator(text);
+        Collator defaultcollator = Collator.getInstance();
+        BreakIterator breaker = BreakIterator.getCharacterInstance();
+        breaker.setText(text);
+        StringSearch search = new StringSearch(pattern, text);
+        if (!search.getPattern().equals(pattern)
+            || !search.getTarget().equals(textiter)
+            || !search.getCollator().equals(defaultcollator)
+            /*|| !search.getBreakIterator().equals(breaker)*/) {
+            errln("StringSearch(String, String) error");
+        }
+        search = new StringSearch(pattern, textiter, m_fr_fr_);
+        if (!search.getPattern().equals(pattern)
+            || !search.getTarget().equals(textiter)
+            || !search.getCollator().equals(m_fr_fr_)
+            /*|| !search.getBreakIterator().equals(breaker)*/) {
+            errln("StringSearch(String, StringCharacterIterator, "
+                  + "RuleBasedCollator) error");
+        }
+        Locale de = new Locale("de", "DE");
+        breaker = BreakIterator.getCharacterInstance(de);
+        breaker.setText(text);
+        search = new StringSearch(pattern, textiter, de);
+        if (!search.getPattern().equals(pattern)
+            || !search.getTarget().equals(textiter)
+            || !search.getCollator().equals(Collator.getInstance(de))
+            /*|| !search.getBreakIterator().equals(breaker)*/) {
+            errln("StringSearch(String, StringCharacterIterator, Locale) "
+                  + "error");
+        }
+
+        search = new StringSearch(pattern, textiter, m_fr_fr_,
+                                  m_en_wordbreaker_);
+        if (!search.getPattern().equals(pattern)
+            || !search.getTarget().equals(textiter)
+            || !search.getCollator().equals(m_fr_fr_)
+            || !search.getBreakIterator().equals(m_en_wordbreaker_)) {
+            errln("StringSearch(String, StringCharacterIterator, Locale) "
+                  + "error");
+        }
+    }
+
+    public void TestBasic() {
+        int count = 0;
+        while (BASIC[count].text != null) {
+            if (!assertEqual(BASIC[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestBreakIterator() {
+
+        String text = BREAKITERATOREXACT[0].text;
+        String pattern = BREAKITERATOREXACT[0].pattern;
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening string search");
+            return;
+        }
+
+        strsrch.setBreakIterator(null);
+        if (strsrch.getBreakIterator() != null) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+
+        strsrch.setBreakIterator(m_en_characterbreaker_);
+        if (!strsrch.getBreakIterator().equals(m_en_characterbreaker_)) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+
+        strsrch.setBreakIterator(m_en_wordbreaker_);
+        if (!strsrch.getBreakIterator().equals(m_en_wordbreaker_)) {
+            errln("Error usearch_getBreakIterator returned wrong object");
+        }
+
+        int count = 0;
+        while (count < 4) {
+            // special purposes for tests numbers 0-3
+            SearchData        search   = BREAKITERATOREXACT[count];
+            RuleBasedCollator collator = getCollator(search.collator);
+            BreakIterator     breaker  = getBreakIterator(search.breaker);
+                  //StringSearch      strsrch;
+
+            text = search.text;
+            pattern = search.pattern;
+            if (breaker != null) {
+                breaker.setText(text);
+            }
+            collator.setStrength(search.strength);
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, breaker);
+            if (strsrch.getBreakIterator() != breaker) {
+                errln("Error setting break iterator");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                collator.setStrength(Collator.TERTIARY);
+            }
+            search   = BREAKITERATOREXACT[count + 1];
+            breaker  = getBreakIterator(search.breaker);
+            if (breaker != null) {
+                breaker.setText(text);
+            }
+            strsrch.setBreakIterator(breaker);
+            if (strsrch.getBreakIterator() != breaker) {
+                errln("Error setting break iterator");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                 errln("Error at test number " + count);
+            }
+            count += 2;
+        }
+        count = 0;
+        while (BREAKITERATOREXACT[count].text != null) {
+            if (!assertEqual(BREAKITERATOREXACT[count])) {
+                errln("Error at test number " + count);
+            }
+             count++;
+        }
+    }
+
+    public void TestBreakIteratorCanonical() {
+        int        count  = 0;
+        while (count < 4) {
+            // special purposes for tests numbers 0-3
+            SearchData     search   = BREAKITERATORCANONICAL[count];
+
+            String text = search.text;
+            String pattern = search.pattern;
+            RuleBasedCollator collator = getCollator(search.collator);
+            collator.setStrength(search.strength);
+
+            BreakIterator breaker = getBreakIterator(search.breaker);
+            StringSearch  strsrch = null;
+            try {
+                strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, breaker);
+            } catch (Exception e) {
+                errln("Error creating string search data");
+                return;
+            }
+            strsrch.setCanonical(true);
+            if (!strsrch.getBreakIterator().equals(breaker)) {
+                errln("Error setting break iterator");
+                return;
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                collator.setStrength(Collator.TERTIARY);
+                return;
+            }
+            search  = BREAKITERATOREXACT[count + 1];
+            breaker = getBreakIterator(search.breaker);
+            breaker.setText(strsrch.getTarget());
+            strsrch.setBreakIterator(breaker);
+            if (!strsrch.getBreakIterator().equals(breaker)) {
+                errln("Error setting break iterator");
+                return;
+            }
+            strsrch.reset();
+            strsrch.setCanonical(true);
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                 errln("Error at test number " + count);
+                 return;
+            }
+            count += 2;
+        }
+        count = 0;
+        while (BREAKITERATORCANONICAL[count].text != null) {
+             if (!assertEqual(BREAKITERATORCANONICAL[count])) {
+                 errln("Error at test number " + count);
+                 return;
+             }
+             count++;
+        }
+    }
+
+    public void TestCanonical() {
+        int count = 0;
+        while (BASICCANONICAL[count].text != null) {
+            if (!assertCanonicalEqual(BASICCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestCollator() {
+        // test collator that thinks "o" and "p" are the same thing
+        String text = COLLATOR[0].text;
+        String pattern  = COLLATOR[0].pattern;
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[0])) {
+            return;
+        }
+        String rules = TESTCOLLATORRULE;
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator(rules);
+            tailored.setStrength(COLLATOR[1].strength);
+        } catch (Exception e) {
+            errln("Error opening rule based collator ");
+            return;
+        }
+
+        strsrch.setCollator(tailored);
+        if (!strsrch.getCollator().equals(tailored)) {
+            errln("Error setting rule based collator");
+        }
+        strsrch.reset();
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[1])) {
+            return;
+        }
+        strsrch.setCollator(m_en_us_);
+        strsrch.reset();
+        if (!strsrch.getCollator().equals(m_en_us_)) {
+            errln("Error setting rule based collator");
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATOR[0])) {
+           errln("Error searching collator test");
+        }
+    }
+
+    public void TestCollatorCanonical() {
+        /* test collator that thinks "o" and "p" are the same thing */
+        String text = COLLATORCANONICAL[0].text;
+        String pattern = COLLATORCANONICAL[0].pattern;
+
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[0])) {
+            return;
+        }
+
+        String rules = TESTCOLLATORRULE;
+        RuleBasedCollator tailored = null;
+        try {
+            tailored = new RuleBasedCollator(rules);
+            tailored.setStrength(COLLATORCANONICAL[1].strength);
+            tailored.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening rule based collator ");
+        }
+
+        strsrch.setCollator(tailored);
+        if (!strsrch.getCollator().equals(tailored)) {
+            errln("Error setting rule based collator");
+        }
+        strsrch.reset();
+        strsrch.setCanonical(true);
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[1])) {
+            logln("COLLATORCANONICAL[1] failed");  // Error should already be reported.
+        }
+        strsrch.setCollator(m_en_us_);
+        strsrch.reset();
+        if (!strsrch.getCollator().equals(m_en_us_)) {
+            errln("Error setting rule based collator");
+        }
+        if (!assertEqualWithStringSearch(strsrch, COLLATORCANONICAL[0])) {
+            logln("COLLATORCANONICAL[0] failed");  // Error should already be reported.
+        }
+    }
+
+    public void TestCompositeBoundaries() {
+        int count = 0;
+        while (COMPOSITEBOUNDARIES[count].text != null) {
+            // logln("composite " + count);
+            if (!assertEqual(COMPOSITEBOUNDARIES[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestCompositeBoundariesCanonical() {
+        int count = 0;
+        while (COMPOSITEBOUNDARIESCANONICAL[count].text != null) {
+            // logln("composite " + count);
+            if (!assertCanonicalEqual(COMPOSITEBOUNDARIESCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestContraction() {
+        String rules = CONTRACTIONRULE;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules);
+            collator.setStrength(Collator.TERTIARY);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening collator ");
+        }
+        String text = "text";
+        String pattern = "pattern";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+        }
+
+        int count = 0;
+        while (CONTRACTION[count].text != null) {
+            text = CONTRACTION[count].text;
+            pattern = CONTRACTION[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, CONTRACTION[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestContractionCanonical() {
+        String rules = CONTRACTIONRULE;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules);
+            collator.setStrength(Collator.TERTIARY);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening collator ");
+        }
+        String text = "text";
+        String pattern = "pattern";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+            strsrch.setCanonical(true);
+        } catch (Exception e) {
+            errln("Error opening string search");
+        }
+
+        int count = 0;
+        while (CONTRACTIONCANONICAL[count].text != null) {
+            text = CONTRACTIONCANONICAL[count].text;
+            pattern = CONTRACTIONCANONICAL[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, CONTRACTIONCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestGetMatch() {
+        SearchData search = MATCH[0];
+        String text = search.text;
+        String pattern = search.pattern;
+
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+
+        int           count      = 0;
+        int   matchindex = search.offset[count];
+        String matchtext;
+        while (matchindex >= 0) {
+            int matchlength = search.size[count];
+            strsrch.next();
+            if (matchindex != strsrch.getMatchStart() ||
+                matchlength != strsrch.getMatchLength()) {
+                errln("Text: " + search.text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+            count++;
+
+            matchtext = strsrch.getMatchedText();
+            if (matchtext.length() != matchlength){
+                errln("Error getting match text");
+            }
+            matchindex = search.offset[count];
+        }
+        strsrch.next();
+        if (strsrch.getMatchStart()  != StringSearch.DONE ||
+            strsrch.getMatchLength() != 0) {
+            errln("Error end of match not found");
+        }
+        matchtext = strsrch.getMatchedText();
+        if (matchtext != null) {
+            errln("Error getting null matches");
+        }
+    }
+
+    public void TestGetSetAttribute() {
+        String  pattern = "pattern";
+        String  text = "text";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening search");
+            return;
+        }
+
+        if (strsrch.isOverlapping()) {
+            errln("Error default overlaping should be false");
+        }
+        strsrch.setOverlapping(true);
+        if (!strsrch.isOverlapping()) {
+            errln("Error setting overlap true");
+        }
+        strsrch.setOverlapping(false);
+        if (strsrch.isOverlapping()) {
+            errln("Error setting overlap false");
+        }
+
+        strsrch.setCanonical(true);
+        if (!strsrch.isCanonical()) {
+            errln("Error setting canonical match true");
+        }
+        strsrch.setCanonical(false);
+        if (strsrch.isCanonical()) {
+            errln("Error setting canonical match false");
+        }
+
+    }
+
+    public void TestGetSetOffset() {
+        String  pattern = "1234567890123456";
+        String  text  = "12345678901234567890123456789012";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening search");
+
+            return;
+        }
+
+        /* testing out of bounds error */
+        try {
+            strsrch.setIndex(-1);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {
+            logln("PASS: strsrch.setIndex(-1) failed as expected");
+        }
+
+        try {
+            strsrch.setIndex(128);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {
+            logln("PASS: strsrch.setIndex(128) failed as expected");
+        }
+
+        int index   = 0;
+        while (BASIC[index].text != null) {
+            SearchData  search      = BASIC[index ++];
+
+            text =search.text;
+            pattern = search.pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            strsrch.getCollator().setStrength(search.strength);
+            strsrch.reset();
+
+            int count = 0;
+            int matchindex  = search.offset[count];
+
+            while (matchindex >= 0) {
+                int matchlength = search.size[count];
+                strsrch.next();
+                if (matchindex != strsrch.getMatchStart() ||
+                    matchlength != strsrch.getMatchLength()) {
+                    errln("Text: " + text);
+                    errln("Pattern: " + strsrch.getPattern());
+                    errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                    return;
+                }
+                matchindex = search.offset[count + 1] == -1 ? -1 :
+                             search.offset[count + 2];
+                if (search.offset[count + 1] != -1) {
+                    strsrch.setIndex(search.offset[count + 1] + 1);
+                    if (strsrch.getIndex() != search.offset[count + 1] + 1) {
+                        errln("Error setting offset\n");
+                        return;
+                    }
+                }
+
+                count += 2;
+            }
+            strsrch.next();
+            if (strsrch.getMatchStart() != StringSearch.DONE) {
+                errln("Text: " + text);
+                errln("Pattern: " + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+        }
+        strsrch.getCollator().setStrength(Collator.TERTIARY);
+    }
+
+    public void TestGetSetOffsetCanonical() {
+
+        String  text = "text";
+        String  pattern = "pattern";
+        StringSearch  strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Fail to open StringSearch!");
+            return;
+        }
+        strsrch.setCanonical(true);
+        /* testing out of bounds error */
+        try {
+            strsrch.setIndex(-1);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {
+            logln("PASS: strsrch.setIndex(-1) failed as expected");
+        }
+        try {
+            strsrch.setIndex(128);
+            errln("Error expecting set offset error");
+        } catch (IndexOutOfBoundsException e) {
+            logln("PASS: strsrch.setIndex(128) failed as expected");
+        }
+
+        int   index   = 0;
+        while (BASICCANONICAL[index].text != null) {
+            SearchData  search      = BASICCANONICAL[index ++];
+            if (BASICCANONICAL[index].text == null) {
+                // skip the last one
+                break;
+            }
+
+            text = search.text;
+            pattern = search.pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            int         count       = 0;
+            int matchindex  = search.offset[count];
+            while (matchindex >= 0) {
+                int matchlength = search.size[count];
+                strsrch.next();
+                if (matchindex != strsrch.getMatchStart() ||
+                    matchlength != strsrch.getMatchLength()) {
+                    errln("Text: " + text);
+                    errln("Pattern: " + strsrch.getPattern());
+                    errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                    return;
+                }
+                matchindex = search.offset[count + 1] == -1 ? -1 :
+                             search.offset[count + 2];
+                if (search.offset[count + 1] != -1) {
+                    strsrch.setIndex(search.offset[count + 1] + 1);
+                    if (strsrch.getIndex() != search.offset[count + 1] + 1) {
+                        errln("Error setting offset");
+                        return;
+                    }
+                }
+
+                count += 2;
+            }
+            strsrch.next();
+            if (strsrch.getMatchStart() != StringSearch.DONE) {
+                errln("Text: " + text);
+                errln("Pattern: %s" + strsrch.getPattern());
+                errln("Error match found at " + strsrch.getMatchStart() + ", " + strsrch.getMatchLength());
+                return;
+            }
+        }
+        strsrch.getCollator().setStrength(Collator.TERTIARY);
+    }
+
+    public void TestIgnorable() {
+        String rules = IGNORABLERULE;
+        int        count  = 0;
+        RuleBasedCollator collator = null;
+        try {
+            collator = new RuleBasedCollator(rules);
+            collator.setStrength(IGNORABLE[count].strength);
+            collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        } catch (Exception e) {
+            errln("Error opening collator ");
+            return;
+        }
+        String pattern = "pattern";
+        String text = "text";
+        StringSearch strsrch = null;
+        try {
+            strsrch = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+
+        while (IGNORABLE[count].text != null) {
+            text = IGNORABLE[count].text;
+            pattern = IGNORABLE[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, IGNORABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestInitialization() {
+        String  pattern;
+        String  text;
+        String  temp = "a";
+        StringSearch  result;
+
+        /* simple test on the pattern ce construction */
+        pattern = temp + temp;
+        text = temp + temp + temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error opening search ");
+            return;
+        }
+
+        /* testing if an extremely large pattern will fail the initialization */
+        pattern = "";
+        for (int count = 0; count < 512; count ++) {
+            pattern += temp;
+        }
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+            logln("pattern:" + result.getPattern());
+        } catch (Exception e) {
+            errln("Fail: an extremely large pattern will fail the initialization");
+            return;
+        }
+        if (result != result) {
+            errln("Error: string search object expected to match itself");
+        }
+
+    }
+
+    public void TestNormCanonical() {
+        m_en_us_.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        int count = 0;
+        while (NORMCANONICAL[count].text != null) {
+            if (!assertCanonicalEqual(NORMCANONICAL[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        m_en_us_.setDecomposition(Collator.NO_DECOMPOSITION);
+    }
+
+    public void TestNormExact() {
+        int count = 0;
+        m_en_us_.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+        while (BASIC[count].text != null) {
+            if (!assertEqual(BASIC[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        count = 0;
+        while (NORMEXACT[count].text != null) {
+            if (!assertEqual(NORMEXACT[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+        m_en_us_.setDecomposition(Collator.NO_DECOMPOSITION);
+        count = 0;
+        while (NONNORMEXACT[count].text != null) {
+            if (!assertEqual(NONNORMEXACT[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+
+    public void TestOpenClose() {
+        StringSearch            result;
+        BreakIterator           breakiter = m_en_wordbreaker_;
+        String           pattern = "";
+        String           text = "";
+        String           temp  = "a";
+        StringCharacterIterator  chariter= new StringCharacterIterator(text);
+
+        /* testing null arguments */
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {
+            logln("PASS: null arguments failed as expected");
+        }
+
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {
+            logln("PASS: null arguments failed as expected");
+        }
+
+        text  = String.valueOf(0x1);
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: Empty pattern should produce an error");
+        } catch (Exception e) {
+            logln("PASS: Empty pattern failed as expected");
+        }
+
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: Empty pattern should produce an error");
+        } catch (Exception e) {
+            logln("PASS: Empty pattern failed as expected");
+        }
+
+        text = "";
+        pattern =temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: Empty text should produce an error");
+        } catch (Exception e) {
+            logln("PASS: Empty text failed as expected");
+        }
+
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: Empty text should produce an error");
+        } catch (Exception e) {
+            logln("PASS: Empty text failed as expected");
+        }
+
+        text += temp;
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {
+            logln("PASS: null arguments failed as expected");
+        }
+
+        chariter.setText(text);
+        try {
+            result = new StringSearch(pattern, chariter, null, null);
+            errln("Error: null arguments should produce an error");
+        } catch (Exception e) {
+            logln("PASS: null arguments failed as expected");
+        }
+
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, chariter, m_en_us_, null);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, chariter, Locale.ENGLISH);
+        } catch (Exception e) {
+            errln("Error: null break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, new StringCharacterIterator(text), m_en_us_, breakiter);
+        } catch (Exception e) {
+            errln("Error: Break iterator is valid for opening search");
+        }
+
+        try {
+            result = new StringSearch(pattern, chariter, m_en_us_, null);
+            logln("pattern:" + result.getPattern());
+        } catch (Exception e) {
+            errln("Error: Break iterator is valid for opening search");
+        }
+    }
+
+    public void TestOverlap() {
+        int count = 0;
+        while (OVERLAP[count].text != null) {
+            if (!assertEqualWithAttribute(OVERLAP[count], false, true)) {
+                errln("Error at overlap test number " + count);
+            }
+            count++;
+        }
+        count = 0;
+        while (NONOVERLAP[count].text != null) {
+            if (!assertEqual(NONOVERLAP[count])) {
+                errln("Error at non overlap test number " + count);
+            }
+            count++;
+        }
+
+        count = 0;
+        while (count < 1) {
+            SearchData search = (OVERLAP[count]);
+            String text = search.text;
+            String pattern = search.pattern;
+
+            RuleBasedCollator collator = getCollator(search.collator);
+            StringSearch strsrch = null;
+            try {
+                strsrch  = new StringSearch(pattern, new StringCharacterIterator(text), collator, null);
+            } catch (Exception e) {
+                errln("error open StringSearch");
+                return;
+            }
+
+            strsrch.setOverlapping(true);
+            if (!strsrch.isOverlapping()) {
+                errln("Error setting overlap option");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                return;
+            }
+
+            search = NONOVERLAP[count];
+            strsrch.setOverlapping(false);
+            if (strsrch.isOverlapping()) {
+                errln("Error setting overlap option");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                errln("Error at test number " + count);
+             }
+            count ++;
+        }
+    }
+
+    public void TestOverlapCanonical() {
+        int count = 0;
+        while (OVERLAPCANONICAL[count].text != null) {
+            if (!assertEqualWithAttribute(OVERLAPCANONICAL[count], true,
+                                          true)) {
+                errln("Error at overlap test number %d" + count);
+            }
+            count ++;
+        }
+        count = 0;
+        while (NONOVERLAP[count].text != null) {
+            if (!assertCanonicalEqual(NONOVERLAPCANONICAL[count])) {
+                errln("Error at non overlap test number %d" + count);
+            }
+            count ++;
+        }
+
+        count = 0;
+        while (count < 1) {
+                 /* UChar       temp[128];
+            const SearchData *search = &(OVERLAPCANONICAL[count]);
+                  UErrorCode  status = U_ZERO_ERROR;*/
+            SearchData search = OVERLAPCANONICAL[count];
+
+            /*u_unescape(search.text, temp, 128);
+            UnicodeString text;
+            text.setTo(temp, u_strlen(temp));
+            u_unescape(search.pattern, temp, 128);
+            UnicodeString pattern;
+            pattern.setTo(temp, u_strlen(temp));*/
+            RuleBasedCollator collator = getCollator(search.collator);
+            StringSearch strsrch = new StringSearch(search.pattern, new StringCharacterIterator(search.text), collator, null);
+            strsrch.setCanonical(true);
+            strsrch.setOverlapping(true);
+            if (strsrch.isOverlapping() != true) {
+                errln("Error setting overlap option");
+            }
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                strsrch = null;
+                return;
+            }
+            search = NONOVERLAPCANONICAL[count];
+            strsrch.setOverlapping(false);
+            if (strsrch.isOverlapping() != false) {
+                errln("Error setting overlap option");
+            }
+            strsrch.reset();
+            if (!assertEqualWithStringSearch(strsrch, search)) {
+                strsrch = null;
+                errln("Error at test number %d" + count);
+             }
+
+            count ++;
+            strsrch = null;
+        }
+    }
+
+    public void TestPattern() {
+        m_en_us_.setStrength(PATTERN[0].strength);
+        StringSearch strsrch = new StringSearch(PATTERN[0].pattern, new StringCharacterIterator(PATTERN[0].text), m_en_us_, null);
+
+        /*if (U_FAILURE(status)) {
+            errln("Error opening string search %s", u_errorName(status));
+            m_en_us_.setStrength(getECollationStrength(UCOL_TERTIARY));
+            if (strsrch != NULL) {
+                delete strsrch;
+            }
+            return;
+        }*/
+
+        if (strsrch.getPattern() != PATTERN[0].pattern) {
+            errln("Error setting pattern");
+        }
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+
+        strsrch.setPattern(PATTERN[1].pattern);
+        if (PATTERN[1].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+        strsrch.reset();
+
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[1])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+
+        strsrch.setPattern(PATTERN[0].pattern);
+        if (PATTERN[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+            strsrch.reset();
+
+        if (!assertEqualWithStringSearch(strsrch, PATTERN[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            if (strsrch != null) {
+                strsrch = null;
+            }
+            return;
+        }
+        /* enormous pattern size to see if this crashes */
+        String pattern = "";
+        for (int templength = 0; templength != 512; templength ++) {
+            pattern += 0x61;
+        }
+        try{
+            strsrch.setPattern(pattern);
+        }catch(Exception e) {
+            errln("Error setting pattern with size 512");
+        }
+
+        m_en_us_.setStrength(Collator.TERTIARY);
+        if (strsrch != null) {
+            strsrch = null;
+        }
+    }
+
+    public void TestPatternCanonical() {
+        //StringCharacterIterator text = new StringCharacterIterator(PATTERNCANONICAL[0].text);
+        m_en_us_.setStrength(PATTERNCANONICAL[0].strength);
+        StringSearch strsrch = new StringSearch(PATTERNCANONICAL[0].pattern, new StringCharacterIterator(PATTERNCANONICAL[0].text),
+                                                m_en_us_, null);
+        strsrch.setCanonical(true);
+
+        if (PATTERNCANONICAL[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+        }
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+
+        strsrch.setPattern(PATTERNCANONICAL[1].pattern);
+        if (PATTERNCANONICAL[1].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+        strsrch.reset();
+        strsrch.setCanonical(true);
+
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[1])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+
+        strsrch.setPattern(PATTERNCANONICAL[0].pattern);
+        if (PATTERNCANONICAL[0].pattern != strsrch.getPattern()) {
+            errln("Error setting pattern");
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+
+        strsrch.reset();
+        strsrch.setCanonical(true);
+        if (!assertEqualWithStringSearch(strsrch, PATTERNCANONICAL[0])) {
+            m_en_us_.setStrength(Collator.TERTIARY);
+            strsrch = null;
+            return;
+        }
+    }
+
+    public void TestReset() {
+        StringCharacterIterator text = new StringCharacterIterator("fish fish");
+        String pattern = "s";
+
+        StringSearch  strsrch = new StringSearch(pattern, text, m_en_us_, null);
+        strsrch.setOverlapping(true);
+        strsrch.setCanonical(true);
+        strsrch.setIndex(9);
+        strsrch.reset();
+        if (strsrch.isCanonical() || strsrch.isOverlapping() ||
+            strsrch.getIndex() != 0 || strsrch.getMatchLength() != 0 ||
+            strsrch.getMatchStart() != SearchIterator.DONE) {
+                errln("Error resetting string search");
+        }
+
+        strsrch.previous();
+        if (strsrch.getMatchStart() != 7 || strsrch.getMatchLength() != 1) {
+            errln("Error resetting string search\n");
+        }
+    }
+
+    public void TestSetMatch() {
+        int count = 0;
+        while (MATCH[count].text != null) {
+            SearchData     search = MATCH[count];
+            StringSearch strsrch = new StringSearch(search.pattern, new StringCharacterIterator(search.text),
+                                                    m_en_us_, null);
+
+            int size = 0;
+            while (search.offset[size] != -1) {
+                size ++;
+            }
+
+            if (strsrch.first() != search.offset[0]) {
+                errln("Error getting first match");
+            }
+            if (strsrch.last() != search.offset[size -1]) {
+                errln("Error getting last match");
+            }
+
+            int index = 0;
+            while (index < size) {
+                if (index + 2 < size) {
+                    if (strsrch.following(search.offset[index + 2] - 1) != search.offset[index + 2]) {
+                        errln("Error getting following match at index " + (search.offset[index + 2]-1));
+                    }
+                }
+                if (index + 1 < size) {
+                    if (strsrch.preceding(search.offset[index + 1] + search.size[index + 1] + 1) != search.offset[index + 1]) {
+                        errln("Error getting preceeding match at index " + (search.offset[index + 1] + 1));
+                    }
+                }
+                index += 2;
+            }
+
+            if (strsrch.following(search.text.length()) != SearchIterator.DONE) {
+                errln("Error expecting out of bounds match");
+            }
+            if (strsrch.preceding(0) != SearchIterator.DONE) {
+                errln("Error expecting out of bounds match");
+            }
+            count ++;
+            strsrch = null;
+        }
+    }
+
+    public void TestStrength() {
+        int count = 0;
+        while (STRENGTH[count].text != null) {
+            if (count == 3) count ++;
+            if (!assertEqual(STRENGTH[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestStrengthCanonical() {
+        int count = 0;
+        while (STRENGTHCANONICAL[count].text != null) {
+            if (count == 3) count ++;
+            if (!assertCanonicalEqual(STRENGTHCANONICAL[count])) {
+                errln("Error at test number" + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestSupplementary() {
+        int count = 0;
+        while (SUPPLEMENTARY[count].text != null) {
+            if (!assertEqual(SUPPLEMENTARY[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestSupplementaryCanonical() {
+        int count = 0;
+        while (SUPPLEMENTARYCANONICAL[count].text != null) {
+            if (!assertCanonicalEqual(SUPPLEMENTARYCANONICAL[count])) {
+                errln("Error at test number" + count);
+            }
+            count ++;
+        }
+    }
+
+    public void TestText() {
+        SearchData TEXT[] = {
+            new SearchData("the foxy brown fox", "fox", null, Collator.TERTIARY, null, new int[] {4, 15, -1}, new int[] {3, 3}),
+            new SearchData("the quick brown fox", "fox", null, Collator.TERTIARY, null, new int[] {16, -1}, new int[] {3}),
+            new SearchData(null, null, null, Collator.TERTIARY, null, new int[] {-1}, new int[]{0})
+        };
+        StringCharacterIterator t = new StringCharacterIterator(TEXT[0].text);
+        StringSearch strsrch = new StringSearch(TEXT[0].pattern, t, m_en_us_, null);
+
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+        }
+        if (!assertEqualWithStringSearch(strsrch, TEXT[0])) {
+            errln("Error at assertEqualWithStringSearch");
+            return;
+        }
+
+        t = new StringCharacterIterator(TEXT[1].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            return;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, TEXT[1])) {
+            errln("Error at assertEqualWithStringSearch");
+            return;
+        }
+    }
+
+    public void TestTextCanonical() {
+        StringCharacterIterator t = new StringCharacterIterator(TEXTCANONICAL[0].text);
+        StringSearch strsrch = new StringSearch(TEXTCANONICAL[0].pattern, t, m_en_us_, null);
+        strsrch.setCanonical(true);
+
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+        }
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[0])) {
+            strsrch = null;
+            return;
+        }
+
+        t = new StringCharacterIterator(TEXTCANONICAL[1].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            strsrch = null;
+            return;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[1])) {
+            strsrch = null;
+            return;
+        }
+
+        t = new StringCharacterIterator(TEXTCANONICAL[0].text);
+        strsrch.setTarget(t);
+        if (!t.equals(strsrch.getTarget())) {
+            errln("Error setting text");
+            strsrch = null;
+            return;
+        }
+
+        if (!assertEqualWithStringSearch(strsrch, TEXTCANONICAL[0])) {
+            errln("Error at assertEqualWithStringSearch");
+            strsrch = null;
+            return;
+        }
+    }
+
+    public void TestVariable() {
+        int count = 0;
+        m_en_us_.setAlternateHandlingShifted(true);
+        while (VARIABLE[count].text != null) {
+            // logln("variable" + count);
+            if (!assertEqual(VARIABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+        m_en_us_.setAlternateHandlingShifted(false);
+    }
+
+    public void TestVariableCanonical() {
+        int count = 0;
+        m_en_us_.setAlternateHandlingShifted(true);
+        while (VARIABLE[count].text != null) {
+            // logln("variable " + count);
+            if (!assertCanonicalEqual(VARIABLE[count])) {
+                errln("Error at test number " + count);
+            }
+            count ++;
+        }
+        m_en_us_.setAlternateHandlingShifted(false);
+    }
+
+    public void TestSubClass()
+    {
+        class TestSearch extends SearchIterator
+        {
+            String pattern;
+            String text;
+
+            TestSearch(StringCharacterIterator target, BreakIterator breaker,
+                       String pattern)
+            {
+                super(target, breaker);
+                this.pattern = pattern;
+                StringBuffer buffer = new StringBuffer();
+                while (targetText.getIndex() != targetText.getEndIndex()) {
+                    buffer.append(targetText.current());
+                    targetText.next();
+                }
+                text = buffer.toString();
+                targetText.setIndex(targetText.getBeginIndex());
+            }
+            protected int handleNext(int start)
+            {
+                int match = text.indexOf(pattern, start);
+                if (match < 0) {
+                    targetText.last();
+                    return DONE;
+                }
+                targetText.setIndex(match);
+                setMatchLength(pattern.length());
+                return match;
+            }
+            protected int handlePrevious(int start)
+            {
+                int match = text.lastIndexOf(pattern, start - 1);
+                if (match < 0) {
+                    targetText.setIndex(0);
+                    return DONE;
+                }
+                targetText.setIndex(match);
+                setMatchLength(pattern.length());
+                return match;
+            }
+
+            public int getIndex()
+            {
+                int result = targetText.getIndex();
+                if (result < 0 || result >= text.length()) {
+                    return DONE;
+                }
+                return result;
+            }
+        }
+
+        TestSearch search = new TestSearch(
+                            new StringCharacterIterator("abc abcd abc"),
+                            null, "abc");
+        int expected[] = {0, 4, 9};
+        for (int i = 0; i < expected.length; i ++) {
+            if (search.next() != expected[i]) {
+                errln("Error getting next match");
+            }
+            if (search.getMatchLength() != search.pattern.length()) {
+                errln("Error getting next match length");
+            }
+        }
+        if (search.next() != SearchIterator.DONE) {
+            errln("Error should have reached the end of the iteration");
+        }
+        for (int i = expected.length - 1; i >= 0; i --) {
+            if (search.previous() != expected[i]) {
+                errln("Error getting next match");
+            }
+            if (search.getMatchLength() != search.pattern.length()) {
+                errln("Error getting next match length");
+            }
+        }
+        if (search.previous() != SearchIterator.DONE) {
+            errln("Error should have reached the start of the iteration");
+        }
+    }
+    
+    //Test for ticket 5024
+    public void TestDiactricMatch() {
+        String pattern = "pattern";
+        String text = "text";
+        StringSearch strsrch = null;
+        int count = 0;
+        try {
+            strsrch = new StringSearch(pattern, text);
+        } catch (Exception e) {
+            errln("Error opening string search ");
+            return;
+        }
+
+        while (DIACTRICMATCH[count].text != null) {
+            strsrch.setCollator(getCollator(DIACTRICMATCH[count].collator));
+            strsrch.getCollator().setStrength(DIACTRICMATCH[count].strength);
+            strsrch.setBreakIterator(getBreakIterator(DIACTRICMATCH[count].breaker));
+            strsrch.reset();
+            text = DIACTRICMATCH[count].text;
+            pattern = DIACTRICMATCH[count].pattern;
+            strsrch.setTarget(new StringCharacterIterator(text));
+            strsrch.setPattern(pattern);
+            if (!assertEqualWithStringSearch(strsrch, DIACTRICMATCH[count])) {
+                errln("Error at test number " + count);
+            }
+            count++;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/search/package.html b/src/com/ibm/icu/dev/test/search/package.html
new file mode 100644
index 0000000..522397a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/search/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tests for the international search classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/security.policy b/src/com/ibm/icu/dev/test/security.policy
new file mode 100644
index 0000000..9c41986
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/security.policy
@@ -0,0 +1,50 @@
+//#
+//#*******************************************************************************
+//#* Copyright (C) 1997-2009, International Business Machines Corporation and    *
+//#* others. All Rights Reserved.                                                *
+//#*******************************************************************************
+//#* This is the ant build file for ICU4J.  See readme.html for more information.
+//#*
+// policies needed to run tests
+grant // codebase "file:${user.dir}/icu4jtests.jar"
+{
+    // temporary for debugging
+    // permission java.lang.RuntimePermission "getProtectionDomain";
+
+    // ibm 141 on ibm xp can't use reflection
+    permission java.lang.RuntimePermission "accessDeclaredMembers";
+
+    // needed for Locale.setDefault, only used in tests and demos
+    permission java.util.PropertyPermission "user.language", "write";
+
+    // needed for TestUtils
+    permission java.util.PropertyPermission "ICUDataPath", "read";
+    permission java.util.PropertyPermission "user.dir", "read";
+    permission java.util.PropertyPermission "GENERATE_TEST_DATA", "read";
+
+    // time zone tests
+    permission java.util.PropertyPermission "user.timezone", "read";
+
+    //for charsets
+    permission java.lang.RuntimePermission "charsetProvider", "read";
+
+    // IBM 1.6 on Windows does not allow to use reflection to access
+    // getDSTSavings in TimeZone implementation class in sun.util.clanedar.
+    permission java.lang.RuntimePermission "accessClassInPackage.sun.util.calendar";
+};
+
+// there must be a way for code in one jar file to call code in another jar
+// file and give the called code permission to read the calling code's
+// jar.  they're in different protection domains despite being on the
+// same classpath and being loaded by the same class loader, so the class
+// loader doesn't disambiguate which protection domain we're using. it's
+// not easy to figure out the security docs, sigh.
+//
+// this is so ICUData (in icu4j.jar), called from test code (in icu4jtests.jar)
+// can read test resource files (in icu4jtests.jar"
+//
+grant codebase "file:${user.dir}/icu4j.jar"
+{
+    permission java.io.FilePermission "${/}${user.dir}${/}icu4jtests.jar", "read";
+    permission java.io.FilePermission "${/}${user.dir}${/}icu4j-charsets.jar", "read";
+};
diff --git a/src/com/ibm/icu/dev/test/serializable/CalendarTests.java b/src/com/ibm/icu/dev/test/serializable/CalendarTests.java
new file mode 100644
index 0000000..de7406f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/CalendarTests.java
@@ -0,0 +1,226 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.util.Locale;
+
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ChineseCalendar;
+import com.ibm.icu.util.CopticCalendar;
+import com.ibm.icu.util.EthiopicCalendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.HebrewCalendar;
+import com.ibm.icu.util.IndianCalendar;
+import com.ibm.icu.util.IslamicCalendar;
+import com.ibm.icu.util.JapaneseCalendar;
+import com.ibm.icu.util.TaiwanCalendar;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class CalendarTests
+{
+    static class CalendarHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone pst = TimeZone.getTimeZone("America/Los_Angeles");
+            Calendar calendars[] = new Calendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = Calendar.getInstance(pst, locales[i]);
+            }
+            
+            return calendars;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            Calendar cal_a = (Calendar) a;
+            Calendar cal_b = (Calendar) b;
+            long now = System.currentTimeMillis();
+            
+            cal_a.setTimeInMillis(now);
+            cal_a.roll(Calendar.MONTH, 1);
+            
+            cal_b.setTimeInMillis(now);
+            cal_b.roll(Calendar.MONTH, 1);
+            
+            return cal_a.getTime().equals(cal_a.getTime());
+        }
+    }
+
+    static class BuddhistCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone tst = TimeZone.getTimeZone("Asia/Bangkok");
+            BuddhistCalendar calendars[] = new BuddhistCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new BuddhistCalendar(tst, locales[i]);
+            }
+            
+            return calendars;
+        }
+    }
+    
+    static class ChineseCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone cst = TimeZone.getTimeZone("Asia/Shanghai");
+            ChineseCalendar calendars[] = new ChineseCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new ChineseCalendar(cst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+    
+    static class CopticCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone ast = TimeZone.getTimeZone("Europe/Athens");
+            CopticCalendar calendars[] = new CopticCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new CopticCalendar(ast, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class EthiopicCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone ast = TimeZone.getTimeZone("Africa/Addis_Ababa");
+            EthiopicCalendar calendars[] = new EthiopicCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new EthiopicCalendar(ast, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class GregorianCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone pst = TimeZone.getTimeZone("America/Los_Angeles");
+            GregorianCalendar calendars[] = new GregorianCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new GregorianCalendar(pst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class HebrewCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone jst = TimeZone.getTimeZone("Asia/Jerusalem");
+            HebrewCalendar calendars[] = new HebrewCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new HebrewCalendar(jst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+    
+    static class IndianCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone jst = TimeZone.getTimeZone("Asia/Calcutta");
+            IndianCalendar calendars[] = new IndianCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new IndianCalendar(jst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+    
+    static class IslamicCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects() {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone cst = TimeZone.getTimeZone("Africa/Cairo");
+            IslamicCalendar calendars[] = new IslamicCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new IslamicCalendar(cst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class JapaneseCalendarHandler extends CalendarHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone jst = TimeZone.getTimeZone("Asia/Tokyo");
+            JapaneseCalendar calendars[] = new JapaneseCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new JapaneseCalendar(jst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    static class TaiwanCalendarHandler extends CalendarHandler {
+        public Object[] getTestObjects() {
+            Locale locales[] = SerializableTest.getLocales();
+            TimeZone cst = TimeZone.getTimeZone("Asia/Shanghai");
+            TaiwanCalendar calendars[] = new TaiwanCalendar[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                calendars[i] = new TaiwanCalendar(cst, locales[i]);
+            }
+            
+            return calendars; 
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        //nothing needed yet...
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java b/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
new file mode 100644
index 0000000..1371852
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
@@ -0,0 +1,278 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.MissingResourceException;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import com.ibm.icu.dev.test.TestFmwk;
+//import com.ibm.icu.dev.test.serializable.SerializableTest;
+
+/**
+ * @author emader
+ */
+public class CompatibilityTest extends TestFmwk
+{
+    public class FolderTarget extends Target
+    {
+        private Target head = new Target(null);
+        private Target tail = head;
+        
+        public FolderTarget(String name)
+        {
+            super(name);
+        }
+        
+        public void add(String className, InputStream is)
+        {
+            HandlerTarget newTarget = new HandlerTarget(className, is);
+            
+            tail.setNext(newTarget);
+            tail = newTarget;
+        }
+        
+        protected boolean validate()
+        {
+            return true;
+        }
+        
+        protected void execute() throws Exception
+        {
+            params.indentLevel += 1;
+            
+            for (Target target = head.getNext(); target != null; target = target.getNext())
+            {
+                target.run();
+            }
+            
+            params.indentLevel -= 1;
+        }
+    }
+
+    public class HandlerTarget extends Target
+    {
+        protected SerializableTest.Handler handler = null;
+        protected InputStream inputStream = null;
+        
+        public HandlerTarget(String name, InputStream is)
+        {
+            super(name);
+            inputStream = is;
+        }
+        
+        protected boolean validate()
+        {
+            handler = SerializableTest.getHandler(name);
+            
+            return handler != null;
+        }
+        
+        protected void execute() throws Exception
+        {
+            if (params.inDocMode()) {
+                // nothing to execute
+            } else if (!params.stack.included) {
+                ++params.invalidCount;
+            } else {
+                params.testCount += 1;
+
+                try {
+                    ObjectInputStream in = new ObjectInputStream(inputStream);
+                    Object inputObjects[] = (Object[]) in.readObject();
+                    Object testObjects[] = handler.getTestObjects();
+                    
+                    in.close();
+                    inputStream.close();
+                    
+                    // TODO: add equality test...
+                    // The commented out code below does that,
+                    // but some test objects don't define an equals() method,
+                    // and the default method is the same as the "==" operator...
+                    for (int i = 0; i < testObjects.length; i += 1) {
+    //                    if (! inputObjects[i].equals(testObjects[i])) {
+    //                        errln("Input object " + i + " failed equality test.");
+    //                    }
+                        
+                        if (! handler.hasSameBehavior(inputObjects[i], testObjects[i])) {
+                            warnln("Input object " + i + " failed behavior test.");
+                        }
+                    }
+                }catch (MissingResourceException e){
+                    warnln("Could not load the data. "+e.getMessage());
+                } catch (Exception e) {
+                  e.printStackTrace();
+                    errln("Exception: " + e.toString());
+                    
+                }
+            }
+        }
+    }
+
+    private static final String[][] SKIP_CASES = {
+        {"ICU_3.8.1",   "com.ibm.icu.text.PluralFormat.dat"},
+        {"ICU_3.8.1",   "com.ibm.icu.text.PluralRules.dat"},
+        // The case below actually works OK with 4.2M1 on JRE5, but not on JRE1.4.2.
+        // It looks the use of anonymous inner class is the root cause.  If we want
+        // to fix the root cause, it will likely break the backward compatibility.
+        // For now, we're skipping this case even it works OK on JRE5.  See ticket#6550.
+        {"ICU_4.0",     "com.ibm.icu.text.PluralRules.dat"},
+        {"ICU_3.6",     "com.ibm.icu.text.RuleBasedNumberFormat.dat"},
+        {"ICU_3.8.1",     "com.ibm.icu.text.RuleBasedNumberFormat.dat"},
+        {"ICU_4.0",     "com.ibm.icu.text.RuleBasedNumberFormat.dat"},
+    };
+
+    private Target getFileTargets(URL fileURL)
+    {
+        File topDir = new File(fileURL.getPath());
+        File dataDirs[] = topDir.listFiles();
+        FolderTarget target = null;
+        
+        for (int d = 0; d < dataDirs.length; d += 1) {
+            File dataDir = dataDirs[d];
+            
+            if (dataDir.isDirectory()) {
+                FolderTarget newTarget = new FolderTarget(dataDir.getName());
+                File files[] = dataDir.listFiles();
+
+                newTarget.setNext(target);
+                target = newTarget;
+
+                String dataDirName = dataDir.getName();
+
+                element_loop:
+                for (int i = 0; i < files.length; i += 1) {
+                    File file = files[i];
+                    String filename = file.getName();
+                    int ix = filename.indexOf(".dat");
+
+                    if (ix > 0) {
+                        String className = filename.substring(0, ix);
+
+                        // Skip some cases which do not work well
+                        for (int j = 0; j < SKIP_CASES.length; j++) {
+                            if (dataDirName.equals(SKIP_CASES[j][0]) && filename.equals(SKIP_CASES[j][1])) {
+                                logln("Skipping test case - " + dataDirName + "/" + className);
+                                continue element_loop;
+                            }
+                        }
+
+                        InputStream is;
+
+                        try {
+                            is = new FileInputStream(file);
+                            target.add(className, is);
+                        } catch (FileNotFoundException e) {
+                            errln("Exception: " + e.toString());
+                        }
+                        
+                    }
+                }
+            }
+        }
+            
+        return target;
+    }
+    
+    private Target getJarTargets(URL jarURL)
+    {
+        String prefix = jarURL.getPath();
+        String currentDir = null;
+        int ix = prefix.indexOf("!/");
+        JarFile jarFile;
+        FolderTarget target = null;
+
+        if (ix >= 0) {
+            prefix = prefix.substring(ix + 2);
+        }
+
+        try {
+            JarURLConnection conn = (JarURLConnection) jarURL.openConnection();
+
+            jarFile = conn.getJarFile();
+
+            Enumeration entries = jarFile.entries();
+
+            element_loop:
+            while (entries.hasMoreElements()) {
+                JarEntry entry = (JarEntry)entries.nextElement();
+                String name = entry.getName();
+                
+                if (name.startsWith(prefix)) {
+                    name = name.substring(prefix.length());
+
+                    if (! entry.isDirectory()) {
+                        int dx = name.lastIndexOf("/");
+                        String dirName  = name.substring(1, dx);
+                        String filename = name.substring(dx + 1);
+
+                        if (! dirName.equals(currentDir)) {
+                            currentDir = dirName;
+
+                            FolderTarget newTarget = new FolderTarget(currentDir);
+
+                            newTarget.setNext(target);
+                            target = newTarget;
+                        }
+
+                        int xx = filename.indexOf(".dat");
+                        
+                        if (xx > 0) {
+                            String className = filename.substring(0, xx);
+
+                            // Skip some cases which do not work well
+                            for (int i = 0; i < SKIP_CASES.length; i++) {
+                                if (dirName.equals(SKIP_CASES[i][0]) && filename.equals(SKIP_CASES[i][1])) {
+                                    logln("Skipping test case - " + dirName + "/" + className);
+                                    continue element_loop;
+                                }
+                            }
+
+                            target.add(className, jarFile.getInputStream(entry));
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            errln("jar error: " + e.getMessage());
+        }
+        
+        return target;
+    }
+    
+    protected Target getTargets(String targetName)
+    {
+        URL dataURL = getClass().getResource("data");
+        String protocol = dataURL.getProtocol();
+        
+        if (protocol.equals("jar")) {
+            return getJarTargets(dataURL);
+        } else if (protocol.equals("file")) {
+            return getFileTargets(dataURL);
+        } else {
+            errln("Don't know how to test " + dataURL.getPath());
+            return null;
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        CompatibilityTest test = new CompatibilityTest();
+        
+        test.run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/CoverageTest.java b/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
new file mode 100644
index 0000000..f575026
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
@@ -0,0 +1,211 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.Modifier;
+import java.net.URL;
+
+import com.ibm.icu.impl.URLHandler;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class CoverageTest extends CompatibilityTest implements URLHandler.URLVisitor
+{
+
+    private static Class serializable;
+
+    public void init() {
+        try {    
+            serializable = Class.forName("java.io.Serializable");
+        } catch (Exception e) {
+            // we're in deep trouble...
+            warnln("Woops! Can't get class info for Serializable.");
+        }
+    }
+
+    private Target head = new Target(null);
+    private Target tail = head;
+    
+    private String path;
+    
+    public CoverageTest()
+    {
+        this(null);
+    }
+    
+    public CoverageTest(String path)
+    {
+        this.path = path;
+        
+        if (path != null) {
+            File dir = new File(path);
+            
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+        }
+    }
+    
+    private void writeFile(String className, byte bytes[])
+    {
+        File file = new File(path + File.separator + className + ".dat");
+        FileOutputStream stream;
+        
+        try {
+            stream = new FileOutputStream(file);
+            
+            stream.write(bytes);
+            stream.close();
+        } catch (Exception e) {
+            System.out.print(" - can't write file!");
+        }
+    }
+    
+    private void add(String className, int classModifiers, byte bytes[])
+    {
+        CoverageTarget newTarget = new CoverageTarget(className, classModifiers, bytes);
+        
+        tail.setNext(newTarget);
+        tail = newTarget;
+    }
+    
+    public class CoverageTarget extends HandlerTarget
+    {
+        private byte bytes[];
+        private int modifiers;
+        
+        public CoverageTarget(String className, int classModifiers, byte bytes[])
+        {
+            super(className, bytes == null? null : new ByteArrayInputStream(bytes));
+            
+            this.bytes = bytes;
+            modifiers = classModifiers;
+        }
+        
+        public boolean validate()
+        {
+            return super.validate() || Modifier.isAbstract(modifiers);
+        }
+        
+        public void execute() throws Exception
+        {
+            Class c = Class.forName(name);
+            try {
+                /*Field uid = */c.getDeclaredField("serialVersionUID");
+            } catch (Exception e) {
+                errln("No serialVersionUID");
+            }
+            
+            if (inputStream == null) {
+                params.testCount += 1;
+            } else {
+               if (path != null) {
+                    writeFile(name, bytes);
+                }
+                
+                super.execute();
+            }
+        }
+    }
+    
+    public void visit(String str)
+    {
+        if(serializable==null){
+            return;
+        }
+        int ix = str.lastIndexOf(".class");
+        
+        if (ix >= 0) {
+            String className = "com.ibm.icu" + str.substring(0, ix).replace('/', '.');
+            
+            // Skip things in com.ibm.icu.dev; they're not relevant.
+            if (className.startsWith("com.ibm.icu.dev.")) {
+                return;
+            }
+            
+            try {
+                Class c = Class.forName(className);
+                int   m = c.getModifiers();
+                
+                if (serializable.isAssignableFrom(c)) {
+                    if (Modifier.isPublic(m) && !Modifier.isInterface(m)) { 
+                        SerializableTest.Handler handler = SerializableTest.getHandler(className);
+                        
+                        if (handler != null) {
+                            Object objectsOut[] = handler.getTestObjects();
+                            
+                            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+                            ObjectOutputStream out = new ObjectOutputStream(byteOut);
+                            
+                            try {
+                                out.writeObject(objectsOut);
+                                out.close();
+                                byteOut.close();
+                            } catch (IOException e) {
+                                warnln("Error writing test objects: " + e.toString());
+                                return;
+                            }
+                            
+                            add(className, m, byteOut.toByteArray());
+                        } else {
+                            add(className, m, null);
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                warnln("coverage of " + className + ": " + e.toString());
+            } catch (Throwable e) {
+                e.printStackTrace();
+                warnln("coverage of " + className + ": " + e.toString());
+            }
+        }
+    }
+    
+    protected Target getTargets(String targetName)
+    {
+        
+        if (System.getSecurityManager() != null) {
+            // This test won't run under a security manager
+
+            // TODO: Is the above statement really true?
+            // We probably need to set up the security policy properly
+            // for writing/reading serialized data.
+
+            return null;
+        }
+        
+        if(serializable==null){
+            init();
+        }
+        URL url = getClass().getResource("/com/ibm/icu");
+        URLHandler handler  = URLHandler.get(url);
+        
+        handler.guide(this, true, false);
+        
+        return head.getNext();
+    }
+    
+    public static void main(String[] args)
+    {
+        CoverageTest test = new CoverageTest();
+        
+        test.run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java b/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java
new file mode 100644
index 0000000..662c841
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java
@@ -0,0 +1,103 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.util.Locale;
+
+import com.ibm.icu.impl.InvalidFormatException;
+import com.ibm.icu.text.ArabicShapingException;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class ExceptionTests
+{
+    static abstract class ExceptionHandler implements SerializableTest.Handler
+    {
+        abstract public Object[] getTestObjects();
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            Exception ea = (Exception) a;
+            Exception eb = (Exception) b;
+            
+            return ea.toString().equals(eb.toString());
+        }
+    }
+    
+    static class ArabicShapingExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            ArabicShapingException exceptions[] = new ArabicShapingException[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                exceptions[i] = new ArabicShapingException(locales[i].toString());
+            }
+            
+            return exceptions;
+        }
+    }
+    
+    static class StringPrepParseExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            String rules = "This is a very odd little set of rules, just for testing, you know...";
+            StringPrepParseException exceptions[] = new StringPrepParseException[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                exceptions[i] = new StringPrepParseException(locales[i].toString(), i, rules, i);
+            }
+            
+            return exceptions;
+        }
+    }
+    
+    static class UResourceTypeMismatchExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            UResourceTypeMismatchException exceptions[] = new UResourceTypeMismatchException[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                exceptions[i] = new UResourceTypeMismatchException(locales[i].toString());
+            }
+            
+            return exceptions;
+        }
+    }
+    
+    static class InvalidFormatExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            InvalidFormatException exceptions[] = new InvalidFormatException[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                exceptions[i] = new InvalidFormatException(locales[i].toString());
+            }
+            
+            return exceptions;
+        }
+    }
+
+    public static void main(String[] args)
+    {
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/FormatTests.java b/src/com/ibm/icu/dev/test/serializable/FormatTests.java
new file mode 100644
index 0000000..d58c4a0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/FormatTests.java
@@ -0,0 +1,2163 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.text.AttributedCharacterIterator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+
+import com.ibm.icu.impl.DateNumberFormat;
+import com.ibm.icu.text.ChineseDateFormat;
+import com.ibm.icu.text.ChineseDateFormatSymbols;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.DateIntervalFormat;
+import com.ibm.icu.text.DateIntervalInfo;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.CurrencyPluralInfo;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.DurationFormat;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.PluralFormat;
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.TimeUnitFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeUnit;
+import com.ibm.icu.util.TimeUnitAmount;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class FormatTests
+{
+    /*
+     * The serialized form of a normally created DateFormatSymbols object
+     * will have locale-specific data in it that might change from one version
+     * of ICU4J to another. To guard against this, we store the following canned
+     * data into the test objects we create.
+     */
+    static HashMap cannedMonthNames      = new HashMap();
+    static HashMap cannedShortMonthNames = new HashMap();
+
+    static String en_CA_MonthNames[] = {
+        "January", 
+        "February", 
+        "March", 
+        "April", 
+        "May", 
+        "June", 
+        "July", 
+        "August", 
+        "September", 
+        "October", 
+        "November", 
+        "December", 
+    };
+
+    static String fr_CA_MonthNames[] = {
+        "janvier", 
+        "f\u00E9vrier", 
+        "mars", 
+        "avril", 
+        "mai", 
+        "juin", 
+        "juillet", 
+        "ao\u00FBt", 
+        "septembre", 
+        "octobre", 
+        "novembre", 
+        "d\u00E9cembre", 
+    };
+
+    static String zh_Hans_CN_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+    };
+
+    static String zh_CN_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+    };
+
+    static String zh_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+    };
+
+    static String en_MonthNames[] = {
+        "January", 
+        "February", 
+        "March", 
+        "April", 
+        "May", 
+        "June", 
+        "July", 
+        "August", 
+        "September", 
+        "October", 
+        "November", 
+        "December", 
+    };
+
+    static String fr_FR_MonthNames[] = {
+        "janvier", 
+        "f\u00E9vrier", 
+        "mars", 
+        "avril", 
+        "mai", 
+        "juin", 
+        "juillet", 
+        "ao\u00FBt", 
+        "septembre", 
+        "octobre", 
+        "novembre", 
+        "d\u00E9cembre", 
+    };
+
+    static String fr_MonthNames[] = {
+        "janvier", 
+        "f\u00E9vrier", 
+        "mars", 
+        "avril", 
+        "mai", 
+        "juin", 
+        "juillet", 
+        "ao\u00FBt", 
+        "septembre", 
+        "octobre", 
+        "novembre", 
+        "d\u00E9cembre", 
+    };
+
+    static String de_MonthNames[] = {
+        "Januar", 
+        "Februar", 
+        "M\u00E4rz", 
+        "April", 
+        "Mai", 
+        "Juni", 
+        "Juli", 
+        "August", 
+        "September", 
+        "Oktober", 
+        "November", 
+        "Dezember", 
+    };
+
+    static String de_DE_MonthNames[] = {
+        "Januar", 
+        "Februar", 
+        "M\u00E4rz", 
+        "April", 
+        "Mai", 
+        "Juni", 
+        "Juli", 
+        "August", 
+        "September", 
+        "Oktober", 
+        "November", 
+        "Dezember", 
+    };
+
+    static String it_MonthNames[] = {
+        "gennaio", 
+        "febbraio", 
+        "marzo", 
+        "aprile", 
+        "maggio", 
+        "giugno", 
+        "luglio", 
+        "agosto", 
+        "settembre", 
+        "ottobre", 
+        "novembre", 
+        "dicembre", 
+    };
+
+    static String it_IT_MonthNames[] = {
+        "gennaio", 
+        "febbraio", 
+        "marzo", 
+        "aprile", 
+        "maggio", 
+        "giugno", 
+        "luglio", 
+        "agosto", 
+        "settembre", 
+        "ottobre", 
+        "novembre", 
+        "dicembre", 
+    };
+
+    static String ja_JP_MonthNames[] = {
+        "1\u6708", 
+        "2\u6708", 
+        "3\u6708", 
+        "4\u6708", 
+        "5\u6708", 
+        "6\u6708", 
+        "7\u6708", 
+        "8\u6708", 
+        "9\u6708", 
+        "10\u6708", 
+        "11\u6708", 
+        "12\u6708", 
+    };
+
+    static String ja_MonthNames[] = {
+        "1\u6708", 
+        "2\u6708", 
+        "3\u6708", 
+        "4\u6708", 
+        "5\u6708", 
+        "6\u6708", 
+        "7\u6708", 
+        "8\u6708", 
+        "9\u6708", 
+        "10\u6708", 
+        "11\u6708", 
+        "12\u6708", 
+    };
+
+    static String ko_KR_MonthNames[] = {
+        "1\uC6D4", 
+        "2\uC6D4", 
+        "3\uC6D4", 
+        "4\uC6D4", 
+        "5\uC6D4", 
+        "6\uC6D4", 
+        "7\uC6D4", 
+        "8\uC6D4", 
+        "9\uC6D4", 
+        "10\uC6D4", 
+        "11\uC6D4", 
+        "12\uC6D4", 
+    };
+
+    static String ko_MonthNames[] = {
+        "1\uC6D4", 
+        "2\uC6D4", 
+        "3\uC6D4", 
+        "4\uC6D4", 
+        "5\uC6D4", 
+        "6\uC6D4", 
+        "7\uC6D4", 
+        "8\uC6D4", 
+        "9\uC6D4", 
+        "10\uC6D4", 
+        "11\uC6D4", 
+        "12\uC6D4", 
+    };
+
+    static String zh_Hant_TW_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+    };
+
+    static String zh_TW_MonthNames[] = {
+        "\u4E00\u6708", 
+        "\u4E8C\u6708", 
+        "\u4E09\u6708", 
+        "\u56DB\u6708", 
+        "\u4E94\u6708", 
+        "\u516D\u6708", 
+        "\u4E03\u6708", 
+        "\u516B\u6708", 
+        "\u4E5D\u6708", 
+        "\u5341\u6708", 
+        "\u5341\u4E00\u6708", 
+        "\u5341\u4E8C\u6708", 
+        };
+
+    static String en_GB_MonthNames[] = {
+        "January", 
+        "February", 
+        "March", 
+        "April", 
+        "May", 
+        "June", 
+        "July", 
+        "August", 
+        "September", 
+        "October", 
+        "November", 
+        "December", 
+    };
+
+    static String en_US_MonthNames[] = {
+        "January", 
+        "February", 
+        "March", 
+        "April", 
+        "May", 
+        "June", 
+        "July", 
+        "August", 
+        "September", 
+        "October", 
+        "November", 
+        "December", 
+    };
+
+    static String en_CA_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mar",
+        "Apr",
+        "May",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Oct",
+        "Nov",
+        "Dec",
+    };
+
+    static String fr_CA_ShortMonthNames[] = {
+        "janv.",
+        "f\u00E9vr.",
+        "mars",
+        "avr.",
+        "mai",
+        "juin",
+        "juil.",
+        "ao\u00FBt",
+        "sept.",
+        "oct.",
+        "nov.",
+        "d\u00E9c.",
+    };
+
+    static String zh_Hans_CN_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String zh_CN_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String zh_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String en_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mar",
+        "Apr",
+        "May",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Oct",
+        "Nov",
+        "Dec",
+    };
+
+    static String fr_FR_ShortMonthNames[] = {
+        "janv.",
+        "f\u00E9vr.",
+        "mars",
+        "avr.",
+        "mai",
+        "juin",
+        "juil.",
+        "ao\u00FBt",
+        "sept.",
+        "oct.",
+        "nov.",
+        "d\u00E9c.",
+    };
+
+   static String fr_ShortMonthNames[] = {
+        "janv.",
+        "f\u00E9vr.",
+        "mars",
+        "avr.",
+        "mai",
+        "juin",
+        "juil.",
+        "ao\u00FBt",
+        "sept.",
+        "oct.",
+        "nov.",
+        "d\u00E9c.",
+    };
+
+    static String de_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mrz",
+        "Apr",
+        "Mai",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Okt",
+        "Nov",
+        "Dez",
+    };
+
+    static String de_DE_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mrz",
+        "Apr",
+        "Mai",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Okt",
+        "Nov",
+        "Dez",
+    };
+
+    static String it_ShortMonthNames[] = {
+        "gen",
+        "feb",
+        "mar",
+        "apr",
+        "mag",
+        "giu",
+        "lug",
+        "ago",
+        "set",
+        "ott",
+        "nov",
+        "dic",
+    };
+
+    static String it_IT_ShortMonthNames[] = {
+        "gen",
+        "feb",
+        "mar",
+        "apr",
+        "mag",
+        "giu",
+        "lug",
+        "ago",
+        "set",
+        "ott",
+        "nov",
+        "dic",
+    };
+
+    static String ja_JP_ShortMonthNames[] = {
+        "1 \u6708",
+        "2 \u6708",
+        "3 \u6708",
+        "4 \u6708",
+        "5 \u6708",
+        "6 \u6708",
+        "7 \u6708",
+        "8 \u6708",
+        "9 \u6708",
+        "10 \u6708",
+        "11 \u6708",
+        "12 \u6708",
+    };
+
+    static String ja_ShortMonthNames[] = {
+        "1 \u6708",
+        "2 \u6708",
+        "3 \u6708",
+        "4 \u6708",
+        "5 \u6708",
+        "6 \u6708",
+        "7 \u6708",
+        "8 \u6708",
+        "9 \u6708",
+        "10 \u6708",
+        "11 \u6708",
+        "12 \u6708",
+    };
+
+    static String ko_KR_ShortMonthNames[] = {
+        "1\uC6D4",
+        "2\uC6D4",
+        "3\uC6D4",
+        "4\uC6D4",
+        "5\uC6D4",
+        "6\uC6D4",
+        "7\uC6D4",
+        "8\uC6D4",
+        "9\uC6D4",
+        "10\uC6D4",
+        "11\uC6D4",
+        "12\uC6D4",
+    };
+
+    static String ko_ShortMonthNames[] = {
+        "1\uC6D4",
+        "2\uC6D4",
+        "3\uC6D4",
+        "4\uC6D4",
+        "5\uC6D4",
+        "6\uC6D4",
+        "7\uC6D4",
+        "8\uC6D4",
+        "9\uC6D4",
+        "10\uC6D4",
+        "11\uC6D4",
+        "12\uC6D4",
+    };
+
+    static String zh_Hant_TW_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String zh_TW_ShortMonthNames[] = {
+        "\u4E00\u6708",
+        "\u4E8C\u6708",
+        "\u4E09\u6708",
+        "\u56DB\u6708",
+        "\u4E94\u6708",
+        "\u516D\u6708",
+        "\u4E03\u6708",
+        "\u516B\u6708",
+        "\u4E5D\u6708",
+        "\u5341\u6708",
+        "\u5341\u4E00\u6708",
+        "\u5341\u4E8C\u6708",
+    };
+
+    static String en_GB_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mar",
+        "Apr",
+        "May",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Oct",
+        "Nov",
+        "Dec",
+    };
+
+    static String en_US_ShortMonthNames[] = {
+        "Jan",
+        "Feb",
+        "Mar",
+        "Apr",
+        "May",
+        "Jun",
+        "Jul",
+        "Aug",
+        "Sep",
+        "Oct",
+        "Nov",
+        "Dec",
+    };
+        
+    static {
+        cannedMonthNames.put("en_CA",      en_CA_MonthNames);
+        cannedMonthNames.put("fr_CA",      fr_CA_MonthNames);
+        cannedMonthNames.put("zh_Hans_CN", zh_Hans_CN_MonthNames);
+        cannedMonthNames.put("zh_CN",      zh_CN_MonthNames);
+        cannedMonthNames.put("zh",         zh_MonthNames);
+        cannedMonthNames.put("en",         en_MonthNames);
+        cannedMonthNames.put("fr_FR",      fr_FR_MonthNames);
+        cannedMonthNames.put("fr",         fr_MonthNames);
+        cannedMonthNames.put("de",         de_MonthNames);
+        cannedMonthNames.put("de_DE",      de_DE_MonthNames);
+        cannedMonthNames.put("it",         it_MonthNames);
+        cannedMonthNames.put("it_IT",      it_IT_MonthNames);
+        cannedMonthNames.put("ja_JP",      ja_JP_MonthNames);
+        cannedMonthNames.put("ja",         ja_MonthNames);
+        cannedMonthNames.put("ko_KR",      ko_KR_MonthNames);
+        cannedMonthNames.put("ko",         ko_MonthNames);
+        cannedMonthNames.put("zh_Hant_TW", zh_Hant_TW_MonthNames);
+        cannedMonthNames.put("zh_TW",      zh_TW_MonthNames);
+        cannedMonthNames.put("en_GB",      en_GB_MonthNames);
+        cannedMonthNames.put("en_US",      en_US_MonthNames);
+
+        cannedShortMonthNames.put("en_CA",      en_CA_ShortMonthNames);
+        cannedShortMonthNames.put("fr_CA",      fr_CA_ShortMonthNames);
+        cannedShortMonthNames.put("zh_Hans_CN", zh_Hans_CN_ShortMonthNames);
+        cannedShortMonthNames.put("zh_CN",      zh_CN_ShortMonthNames);
+        cannedShortMonthNames.put("zh",         zh_ShortMonthNames);
+        cannedShortMonthNames.put("en",         en_ShortMonthNames);
+        cannedShortMonthNames.put("fr_FR",      fr_FR_ShortMonthNames);
+        cannedShortMonthNames.put("fr",         fr_ShortMonthNames);
+        cannedShortMonthNames.put("de",         de_ShortMonthNames);
+        cannedShortMonthNames.put("de_DE",      de_DE_ShortMonthNames);
+        cannedShortMonthNames.put("it",         it_ShortMonthNames);
+        cannedShortMonthNames.put("it_IT",      it_IT_ShortMonthNames);
+        cannedShortMonthNames.put("ja_JP",      ja_JP_ShortMonthNames);
+        cannedShortMonthNames.put("ja",         ja_ShortMonthNames);
+        cannedShortMonthNames.put("ko_KR",      ko_KR_ShortMonthNames);
+        cannedShortMonthNames.put("ko",         ko_ShortMonthNames);
+        cannedShortMonthNames.put("zh_Hant_TW", zh_Hant_TW_ShortMonthNames);
+        cannedShortMonthNames.put("zh_TW",      zh_TW_ShortMonthNames);
+        cannedShortMonthNames.put("en_GB",      en_GB_ShortMonthNames);
+        cannedShortMonthNames.put("en_US",      en_US_ShortMonthNames);
+    }
+
+    private static DateFormatSymbols getCannedDateFormatSymbols(ULocale uloc)
+    {
+        DateFormatSymbols dfs =new DateFormatSymbols(GregorianCalendar.class, uloc);
+        String key = uloc.toString();
+        
+        dfs.setMonths((String[]) cannedMonthNames.get(key));
+        dfs.setShortMonths((String[]) cannedShortMonthNames.get(key));
+        
+        return dfs;
+    }
+    
+    private static SimpleDateFormat getCannedSimpleDateFormat(String pattern, ULocale uloc)
+    {
+        DateFormatSymbols dfs = getCannedDateFormatSymbols(uloc);
+        
+        return new SimpleDateFormat(pattern, dfs, uloc);
+    }
+    
+    /*
+     * The serialized form of a normally created DecimalFormatSymbols object
+     * will have locale-specific data in it that might change from one version
+     * of ICU4J to another. To guard against this, we store the following canned
+     * data into the test objects we create.
+     */
+    static HashMap cannedDecimalFormatSymbols = new HashMap();
+    
+    static String en_CA_StringSymbols[] = {
+        "$", 
+        "E", 
+        "\u221E", 
+        "CAD", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String fr_CA_StringSymbols[] = {
+        "$", 
+        "E", 
+        "\u221E", 
+        "CAD", 
+        "\uFFFD", 
+        ",#\u00A0-,*;%\u2030+@0"
+    };
+
+    static String zh_CN_StringSymbols[] = {
+        "\uFFE5", 
+        "E", 
+        "\u221E", 
+        "CNY", 
+        "\uFFFD",
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String zh_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String en_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String fr_FR_StringSymbols[] = {
+        "\u20AC", 
+        "E", 
+        "\u221E", 
+        "EUR", 
+        "\uFFFD", 
+        ",#\u00A0-,*;%\u2030+@0"
+    };
+
+    static String fr_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ",#\u00A0-,*;%\u2030+@0"
+    };
+
+    static String de_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD",
+        ",#.-,*;%\u2030+@0"
+    };
+
+    static String de_DE_StringSymbols[] = {
+        "\u20AC", 
+        "E", 
+        "\u221E", 
+        "EUR", 
+        "\uFFFD", 
+        ",#.-,*;%\u2030+@0"
+    };
+
+    static String it_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ",#.-,*;%\u2030+@0"
+    };
+
+    static String it_IT_StringSymbols[] = {
+        "\u20AC", 
+        "E", 
+        "\u221E", 
+        "EUR", 
+        "\uFFFD", 
+        ",#.-,*;%\u2030+@0"
+    };
+
+    static String ja_JP_StringSymbols[] = {
+        "\uFFE5", 
+        "E", 
+        "\u221E", 
+        "JPY", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String ja_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String ko_KR_StringSymbols[] = {
+        "\uFFE6", 
+        "E", 
+        "\u221E", 
+        "KRW", 
+        "\uFFFD",
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String ko_StringSymbols[] = {
+        "\u00A4", 
+        "E", 
+        "\u221E", 
+        "XXX", 
+        "\uFFFD",
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String zh_Hans_CN_StringSymbols[] = {
+        "\uFFE5", 
+        "E", 
+        "\u221E", 
+        "CNY", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String zh_Hant_TW_StringSymbols[] = {
+        "NT$", 
+        "E", 
+        "\u221E", 
+        "TWD", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String zh_TW_StringSymbols[] = {
+        "NT$", 
+        "E", 
+        "\u221E", 
+        "TWD", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String en_GB_StringSymbols[] = {
+        "\u00A3", 
+        "E", 
+        "\u221E", 
+        "GBP", 
+        "\uFFFD", 
+        ".#,-.*;%\u2030+@0"
+    };
+
+    static String en_US_StringSymbols[] = {
+        "$", 
+        "E", 
+        "\u221E", 
+        "USD", 
+        "\uFFFD",
+        ".#,-.*;%\u2030+@0"
+    };
+    
+    static {
+        cannedDecimalFormatSymbols.put("en_CA",      en_CA_StringSymbols);
+        cannedDecimalFormatSymbols.put("fr_CA",      fr_CA_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh_CN",      zh_CN_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh",         zh_StringSymbols);
+        cannedDecimalFormatSymbols.put("en",         en_StringSymbols);
+        cannedDecimalFormatSymbols.put("fr_FR",      fr_FR_StringSymbols);
+        cannedDecimalFormatSymbols.put("fr",         fr_StringSymbols);
+        cannedDecimalFormatSymbols.put("de",         de_StringSymbols);
+        cannedDecimalFormatSymbols.put("de_DE",      de_DE_StringSymbols);
+        cannedDecimalFormatSymbols.put("it",         it_StringSymbols);
+        cannedDecimalFormatSymbols.put("it_IT",      it_IT_StringSymbols);
+        cannedDecimalFormatSymbols.put("ja_JP",      ja_JP_StringSymbols);
+        cannedDecimalFormatSymbols.put("ja",         ja_StringSymbols);
+        cannedDecimalFormatSymbols.put("ko_KR",      ko_KR_StringSymbols);
+        cannedDecimalFormatSymbols.put("ko",         ko_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh_Hans_CN", zh_Hans_CN_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh_Hant_TW", zh_Hant_TW_StringSymbols);
+        cannedDecimalFormatSymbols.put("zh_TW",      zh_TW_StringSymbols);
+        cannedDecimalFormatSymbols.put("en_GB",      en_GB_StringSymbols);
+        cannedDecimalFormatSymbols.put("en_US",      en_US_StringSymbols);
+    }
+    
+    private static char[] getCharSymbols(DecimalFormatSymbols dfs)
+    {
+        char symbols[] = {
+            dfs.getDecimalSeparator(),
+            dfs.getDigit(),
+            dfs.getGroupingSeparator(),
+            dfs.getMinusSign(),
+            dfs.getMonetaryDecimalSeparator(),
+            dfs.getPadEscape(),
+            dfs.getPatternSeparator(),
+            dfs.getPercent(),
+            dfs.getPerMill(),
+            dfs.getPlusSign(),
+            dfs.getSignificantDigit(),
+            dfs.getZeroDigit()
+        };
+        
+        return symbols;
+    }
+    
+    private static void setCharSymbols(DecimalFormatSymbols dfs, char symbols[])
+    {
+        dfs.setDecimalSeparator(symbols[0]);
+        dfs.setDigit(symbols[1]);
+        dfs.setGroupingSeparator(symbols[2]);
+        dfs.setMinusSign(symbols[3]);
+        dfs.setMonetaryDecimalSeparator(symbols[4]);
+        dfs.setPadEscape(symbols[5]);
+        dfs.setPatternSeparator(symbols[6]);
+        dfs.setPercent(symbols[7]);
+        dfs.setPerMill(symbols[8]);
+        dfs.setPlusSign(symbols[9]);
+        dfs.setSignificantDigit(symbols[10]);
+        dfs.setZeroDigit(symbols[11]);
+    }
+    
+    private static String[] getStringSymbols(DecimalFormatSymbols dfs)
+    {
+        String symbols[] = {
+            dfs.getCurrencySymbol(),
+            dfs.getExponentSeparator(),
+            dfs.getInfinity(),
+            dfs.getInternationalCurrencySymbol(),
+            dfs.getNaN()
+        };
+        
+        return symbols;
+    }
+    
+    private static DecimalFormatSymbols getCannedDecimalFormatSymbols(ULocale uloc)
+    {
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(uloc);
+        
+        setSymbols(dfs, (String[]) cannedDecimalFormatSymbols.get(uloc.toString()));
+        
+        return dfs;
+    }
+
+    private static DecimalFormat getCannedDecimalFormat(String pattern, ULocale uloc)
+    {
+        return new DecimalFormat(pattern, getCannedDecimalFormatSymbols(uloc));
+    }
+    
+    private static void setSymbols(DecimalFormatSymbols dfs, String symbols[])
+    {
+        dfs.setCurrencySymbol(symbols[0]);
+        dfs.setExponentSeparator(symbols[1]);
+        dfs.setInfinity(symbols[2]);
+        dfs.setInternationalCurrencySymbol(symbols[3]);
+        dfs.setNaN(symbols[4]);
+        
+        setCharSymbols(dfs, symbols[5].toCharArray());
+    }
+    
+    public static class RelativeDateFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DateFormat formats[] = { 
+                    DateFormat.getDateInstance(DateFormat.RELATIVE_LONG,new ULocale("en")),
+                    DateFormat.getDateInstance(DateFormat.RELATIVE_SHORT,new ULocale("ru")),
+            };
+            
+            return formats;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b) {
+            DateFormat da = (DateFormat)a;
+            DateFormat db = (DateFormat)b;
+            
+            Date d = new Date(System.currentTimeMillis());
+            return da.format(d).equals(db.format(d));
+        }
+    }
+
+    public static class BasicDurationFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DurationFormat formats[] = { 
+                    DurationFormat.getInstance(new ULocale("en"))
+                   
+            };
+            
+            return formats;
+        }
+        
+        //TODO: Revisit this after 3.8
+        public boolean hasSameBehavior(Object a, Object b) {
+            //DurationFormat da = (DurationFormat)a;
+            //DurationFormat db = (DurationFormat)b;
+            
+            //Date d = new Date(12345);
+            //System.err.println("Warning: BasicDurationFormat test is being skipped for now.");
+            return true;
+            //return da.format(d).equals(db.format(d));
+        }
+    }
+
+    public static class NumberFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            ULocale uloc = ULocale.forLocale(Locale.US);
+            NumberFormat formats[] = {
+                /*
+                 * The code below was used to genereate the
+                 * serialized NumberFormat objects in ICU 3.6:
+                 * 
+                 *    NumberFormat.getInstance(Locale.US)
+                 *    NumberFormat.getCurrencyInstance(Locale.US)
+                 *    NumberFormat.getPercentInstance(Locale.US)
+                 *    NumberFormat.getScientificInstance(Locale.US)
+                 * 
+                 * Because the locale data might now be different that it was in
+                 * ICU 3.6, the only way to guarantee that the object we generate
+                 * will match the ICU 3.6 objects is to generate DecimalFormat objects
+                 * that use the same patterns and DecimalFormatSymbols that
+                 * were used in ICU 3.6.
+                 */
+                getCannedDecimalFormat("#,##0.###", uloc),
+                getCannedDecimalFormat("\u00A4#,##0.00;(\u00A4#,##0.00)", uloc),
+                getCannedDecimalFormat("#,##0%", uloc),
+                getCannedDecimalFormat("#E0", uloc)
+               
+            };
+            
+            return formats;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            NumberFormat format_a = (NumberFormat) a;
+            NumberFormat format_b = (NumberFormat) b;
+            double number = 1234.56;
+            
+            return format_a.format(number).equals(format_b.format(number));
+        }
+    }
+    
+    public static class DecimalFormatHandler extends NumberFormatHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DecimalFormat formats[] = new DecimalFormat[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                
+                formats[i] = getCannedDecimalFormat("#,##0.###", uloc);
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            if (formats[0] != null) {
+                // Ticket#6449
+                // Once formatToCharacterIterator is called, NumberFormat.Field
+                // instances are created and stored in the private List field.
+                // NumberForamt.Field is not a serializable, so serializing such
+                // instances end up NotSerializableException.  This problem was
+                // reproduced since formatToCharacterIterator was introduced,
+                // up to ICU 4.0.
+
+                AttributedCharacterIterator aci = formats[0].formatToCharacterIterator(new Double(12.345D));
+                if (aci == null) {} // NOP - for resolving 'Unused local variable' warning.
+            }
+//#endif
+            return formats;
+        }
+    }
+    
+    public static class RuleBasedNumberFormatHandler extends NumberFormatHandler
+    {
+        // default rules, from root.txt
+        String xx_SpelloutRules = "=#,##0.######=;\n";
+        String xx_OrdinalRules = "=#,##0=;\n";
+        String xx_DurationRules = "=#,##0=;\n";
+        
+        String ja_spelloutRules = 
+            "%financial:\n" +
+                "\u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n" +
+                "\u62fe[>>];\n" +
+                "20: <<\u62fe[>>];\n" +
+                "100: <<\u767e[>>];\n" +
+                "1000: <<\u5343[>>];\n" +
+                "10,000: <<\u4e07[>>];\n" +
+                "100,000,000: <<\u5104[>>];\n" +
+                "1,000,000,000,000: <<\u5146[>>];\n" +
+                "10,000,000,000,000,000: =#,##0=;\n" +
+                
+            "%traditional:\n" +
+                "\u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n" +
+                "\u5341[>>];\n" +
+                "20: <<\u5341[>>];\n" +
+                "100: <<\u767e[>>];\n" +
+                "1000: <<\u5343[>>];\n" +
+                "10,000: <<\u4e07[>>];\n" +
+                "100,000,000: <<\u5104[>>];\n" +
+                "1,000,000,000,000: <<\u5146[>>];\n" +
+                "10,000,000,000,000,000: =#,##0=;";
+        
+        String en_SpelloutRules = 
+            // This rule set shows the normal simple formatting rules for English
+            "%simplified:\n" +
+                   // negative number rule.  This rule is used to format negative
+                   // numbers.  The result of formatting the number's absolute
+                   // value is placed where the >> is.
+                "-x: minus >>;\n" +
+                   // faction rule.  This rule is used for formatting numbers
+                   // with fractional parts.  The result of formatting the
+                   // number's integral part is substituted for the <<, and
+                   // the result of formatting the number's fractional part
+                   // (one digit at a time, e.g., 0.123 is "zero point one two
+                   // three") replaces the >>.
+                "x.x: << point >>;\n" +
+                   // the rules for the values from 0 to 19 are simply the
+                   // words for those numbers
+                "zero; one; two; three; four; five; six; seven; eight; nine;\n" +
+                "ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n" +
+                    "seventeen; eighteen; nineteen;\n" +
+                   // beginning at 20, we use the >> to mark the position where
+                   // the result of formatting the number's ones digit.  Thus,
+                   // we only need a new rule at every multiple of 10.  Text in
+                   // backets is omitted if the value being formatted is an
+                   // even multiple of 10.
+                "20: twenty[->>];\n" +
+                "30: thirty[->>];\n" +
+                "40: forty[->>];\n" +
+                "50: fifty[->>];\n" +
+                "60: sixty[->>];\n" +
+                "70: seventy[->>];\n" +
+                "80: eighty[->>];\n" +
+                "90: ninety[->>];\n" +
+                   // beginning at 100, we can use << to mark the position where
+                   // the result of formatting the multiple of 100 is to be
+                   // inserted.  Notice also that the meaning of >> has shifted:
+                   // here, it refers to both the ones place and the tens place.
+                   // The meanings of the << and >> tokens depend on the base value
+                   // of the rule.  A rule's divisor is (usually) the highest
+                   // power of 10 that is less than or equal to the rule's base
+                   // value.  The value being formatted is divided by the rule's
+                   // divisor, and the integral quotient is used to get the text
+                   // for <<, while the remainder is used to produce the text
+                   // for >>.  Again, text in brackets is omitted if the value
+                   // being formatted is an even multiple of the rule's divisor
+                   // (in this case, an even multiple of 100)
+                "100: << hundred[ >>];\n" +
+                   // The rules for the higher numbers work the same way as the
+                   // rule for 100: Again, the << and >> tokens depend on the
+                   // rule's divisor, which for all these rules is also the rule's
+                   // base value.  To group by thousand, we simply don't have any
+                   // rules between 1,000 and 1,000,000.
+                "1000: << thousand[ >>];\n" +
+                "1,000,000: << million[ >>];\n" +
+                "1,000,000,000: << billion[ >>];\n" +
+                "1,000,000,000,000: << trillion[ >>];\n" +
+                   // overflow rule.  This rule specifies that values of a
+                   // quadrillion or more are shown in numerals rather than words.
+                   // The == token means to format (with new rules) the value
+                   // being formatted by this rule and place the result where
+                   // the == is.  The #,##0 inside the == signs is a
+                   // DecimalFormat pattern.  It specifies that the value should
+                   // be formatted with a DecimalFormat object, and that it
+                   // should be formatted with no decimal places, at least one
+                   // digit, and a thousands separator.
+                "1,000,000,000,000,000: =#,##0=;\n" +
+
+            // %default is a more elaborate form of %simplified;  It is basically
+            // the same, except that it introduces "and" before the ones digit
+            // when appropriate (basically, between the tens and ones digits) and
+            // separates the thousands groups with commas in values over 100,000.
+            "%default:\n" +
+                   // negative-number and fraction rules.  These are the same
+                   // as those for %simplified, but have to be stated here too
+                   // because this is an entry point
+                "-x: minus >>;\n" +
+                "x.x: << point >>;\n" +
+                   // just use %simplified for values below 100
+                "=%simplified=;\n" +
+                   // for values from 100 to 9,999 use %%and to decide whether or
+                   // not to interpose the "and"
+                "100: << hundred[ >%%and>];\n" +
+                "1000: << thousand[ >%%and>];\n" +
+                   // for values of 100,000 and up, use %%commas to interpose the
+                   // commas in the right places (and also to interpose the "and")
+                "100,000>>: << thousand[>%%commas>];\n" +
+                "1,000,000: << million[>%%commas>];\n" +
+                "1,000,000,000: << billion[>%%commas>];\n" +
+                "1,000,000,000,000: << trillion[>%%commas>];\n" +
+                "1,000,000,000,000,000: =#,##0=;\n" +
+            // if the value passed to this rule set is greater than 100, don't
+            // add the "and"; if it's less than 100, add "and" before the last
+            // digits
+            "%%and:\n" +
+                "and =%default=;\n" +
+                "100: =%default=;\n" +
+            // this rule set is used to place the commas
+            "%%commas:\n" +
+                   // for values below 100, add "and" (the apostrophe at the
+                   // beginning is ignored, but causes the space that follows it
+                   // to be significant: this is necessary because the rules
+                   // calling %%commas don't put a space before it)
+                "' and =%default=;\n" +
+                   // put a comma after the thousands (or whatever preceded the
+                   // hundreds)
+                "100: , =%default=;\n" +
+                   // put a comma after the millions (or whatever precedes the
+                   // thousands)
+                "1000: , <%default< thousand, >%default>;\n" +
+                   // and so on...
+                "1,000,000: , =%default=;" +
+            // %%lenient-parse isn't really a set of number formatting rules;
+            // it's a set of collation rules.  Lenient-parse mode uses a Collator
+            // object to compare fragments of the text being parsed to the text
+            // in the rules, allowing more leeway in the matching text.  This set
+            // of rules tells the formatter to ignore commas when parsing (it
+            // already ignores spaces, which is why we refer to the space; it also
+            // ignores hyphens, making "twenty one" and "twenty-one" parse
+            // identically)
+            "%%lenient-parse:\n" +
+            //                "& ' ' , ',' ;\n" +
+            "   &\u0000 << ' ' << ',' << '-'; \n";
+
+        String en_GB_SpelloutRules =
+            "%simplified:\n" +
+            "-x: minus >>;\n" +
+            "x.x: << point >>;\n" +
+            "zero; one; two; three; four; five; six; seven; eight; nine;\n" +
+            "ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n" +
+            "    seventeen; eighteen; nineteen;\n" +
+            "20: twenty[->>];\n" +
+            "30: thirty[->>];\n" +
+            "40: forty[->>];\n" +
+            "50: fifty[->>];\n" +
+            "60: sixty[->>];\n" +
+            "70: seventy[->>];\n" +
+            "80: eighty[->>];\n" +
+            "90: ninety[->>];\n" +
+            "100: << hundred[ >>];\n" +
+            "1000: << thousand[ >>];\n" +
+            "1,000,000: << million[ >>];\n" +
+            "1,000,000,000,000: << billion[ >>];\n" +
+            "1,000,000,000,000,000: =#,##0=;\n" +
+        "%default:\n" +
+            "-x: minus >>;\n" +
+            "x.x: << point >>;\n" +
+            "=%simplified=;\n" +
+            "100: << hundred[ >%%and>];\n" +
+            "1000: << thousand[ >%%and>];\n" +
+            "100,000>>: << thousand[>%%commas>];\n" +
+            "1,000,000: << million[>%%commas>];\n" +
+            "1,000,000,000,000: << billion[>%%commas>];\n" +
+            "1,000,000,000,000,000: =#,##0=;\n" +
+        "%%and:\n" +
+            "and =%default=;\n" +
+            "100: =%default=;\n" +
+        "%%commas:\n" +
+            "' and =%default=;\n" +
+            "100: , =%default=;\n" +
+            "1000: , <%default< thousand, >%default>;\n" +
+            "1,000,000: , =%default=;" +
+        "%%lenient-parse:\n" +
+            "& ' ' , ',' ;\n";
+        
+        String fr_SpelloutRules =
+            // the main rule set
+            "%main:\n" +
+                "-x: moins >>;\n" +
+                "x.x: << virgule >>;\n" +
+                   // words for numbers from 0 to 10
+                "z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n" +
+                "dix; onze; douze; treize; quatorze; quinze; seize;\n" +
+                "    dix-sept; dix-huit; dix-neuf;\n" +
+                   // ords for the multiples of 10: %%alt-ones inserts "et"
+                   // when needed
+                "20: vingt[->%%alt-ones>];\n" +
+                "30: trente[->%%alt-ones>];\n" +
+                "40: quarante[->%%alt-ones>];\n" +
+                "50: cinquante[->%%alt-ones>];\n" +
+                   // rule for 60.  The /20 causes this rule's multiplier to be
+                   // 20 rather than 10, allowinhg us to recurse for all values
+                   // from 60 to 79...
+                "60/20: soixante[->%%alt-ones>];\n" +
+                   // ...except for 71, which must be special-cased
+                "71: soixante et onze;\n" +
+                   // at 72, we have to repeat the rule for 60 to get us to 79
+                "72/20: soixante->%%alt-ones>;\n" +
+                   // at 80, we state a new rule with the phrase for 80.  Since
+                   // it changes form when there's a ones digit, we need a second
+                   // rule at 81.  This rule also includes "/20," allowing it to
+                   // be used correctly for all values up to 99
+                "80: quatre-vingts; 81/20: quatre-vingt->>;\n" +
+                   // "cent" becomes plural when preceded by a multiplier, and
+                   // the multiplier is omitted from the singular form
+                "100: cent[ >>];\n" +
+                "200: << cents[ >>];\n" +
+                "1000: mille[ >>];\n" +
+                   // values from 1,100 to 1,199 are rendered as "onze cents..."
+                   // instead of "mille cent..."  The > after "1000" decreases
+                   // the rule's exponent, causing its multiplier to be 100 instead
+                   // of 1,000.  This prevents us from getting "onze cents cent
+                   // vingt-deux" ("eleven hundred one hundred twenty-two").
+                "1100>: onze cents[ >>];\n" +
+                   // at 1,200, we go back to formating in thousands, so we
+                   // repeat the rule for 1,000
+                "1200: mille >>;\n" +
+                   // at 2,000, the multiplier is added
+                "2000: << mille[ >>];\n" +
+                "1,000,000: << million[ >>];\n" +
+                "1,000,000,000: << milliard[ >>];\n" +
+                "1,000,000,000,000: << billion[ >>];\n" +
+                "1,000,000,000,000,000: =#,##0=;\n" +
+            // %%alt-ones is used to insert "et" when the ones digit is 1
+            "%%alt-ones:\n" +
+                "; et-un; =%main=;\n" + 
+            "%%lenient-parse:\n" +
+                "&\u0000 << ' ' << ',' << '-';\n";
+        
+        String de_SpelloutRules =
+            // 1 is "eins" when by itself, but turns into "ein" in most
+            // combinations
+            "%alt-ones:\n" +
+                "-x: minus >>;\n" +
+                "x.x: << komma >>;\n" +
+                "null; eins; =%%main=;\n" +
+            "%%main:\n" +
+                   // words for numbers from 0 to 12.  Notice that the values
+                   // from 13 to 19 can derived algorithmically, unlike in most
+                   // other languages
+                "null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n" +
+                "zehn; elf; zw\u00f6lf; >>zehn;\n" +
+                   // rules for the multiples of 10.  Notice that the ones digit
+                   // goes on the front
+                "20: [>>und]zwanzig;\n" +
+                "30: [>>und]drei\u00dfig;\n" +
+                "40: [>>und]vierzig;\n" +
+                "50: [>>und]f\u00fcnfzig;\n" +
+                "60: [>>und]sechzig;\n" +
+                "70: [>>und]siebzig;\n" +
+                "80: [>>und]achtzig;\n" +
+                "90: [>>und]neunzig;\n" +
+                "100: hundert[>%alt-ones>];\n" +
+                "200: <<hundert[>%alt-ones>];\n" +
+                "1000: tausend[>%alt-ones>];\n" +
+                "2000: <<tausend[>%alt-ones>];\n" +
+                "1,000,000: eine Million[ >%alt-ones>];\n" +
+                "2,000,000: << Millionen[ >%alt-ones>];\n" +
+                "1,000,000,000: eine Milliarde[ >%alt-ones>];\n" +
+                "2,000,000,000: << Milliarden[ >%alt-ones>];\n" +
+                "1,000,000,000,000: eine Billion[ >%alt-ones>];\n" +
+                "2,000,000,000,000: << Billionen[ >%alt-ones>];\n" +
+                "1,000,000,000,000,000: =#,##0=;" +
+            "%%lenient-parse:\n" +
+                "&\u0000 << ' ' << '-'\n" +
+                "& ae , \u00e4 & ae , \u00c4\n" +
+                "& oe , \u00f6 & oe , \u00d6\n" +
+                "& ue , \u00fc & ue , \u00dc\n";
+        
+        String it_SpelloutRules =
+            // main rule set.  Follows the patterns of the preceding rule sets,
+            // except that the final vowel is omitted from words ending in
+            // vowels when they are followed by another word; instead, we have
+            // separate rule sets that are identical to this one, except that
+            // all the words that don't begin with a vowel have a vowel tacked
+            // onto them at the front.  A word ending in a vowel calls a
+            // substitution that will supply that vowel, unless that vowel is to
+            // be elided.
+            "%main:\n" +
+                "-x: meno >>;\n" +
+                "x.x: << virgola >>;\n" +
+                "zero; uno; due; tre; quattro; cinque; sei; sette; otto; nove;\n" +
+                "dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n" +
+                "    diciasette; diciotto; diciannove;\n" +
+                "20: venti; vent>%%with-i>;\n" +
+                "30: trenta; trent>%%with-i>;\n" +
+                "40: quaranta; quarant>%%with-a>;\n" +
+                "50: cinquanta; cinquant>%%with-a>;\n" +
+                "60: sessanta; sessant>%%with-a>;\n" +
+                "70: settanta; settant>%%with-a>;\n" +
+                "80: ottanta; ottant>%%with-a>;\n" +
+                "90: novanta; novant>%%with-a>;\n" +
+                "100: cento; cent[>%%with-o>];\n" +
+                "200: <<cento; <<cent[>%%with-o>];\n" +
+                "1000: mille; mill[>%%with-i>];\n" +
+                "2000: <<mila; <<mil[>%%with-a>];\n" +
+                "100,000>>: <<mila[ >>];\n" +
+                "1,000,000: =#,##0= (incomplete data);\n" +
+            "%%with-a:\n" +
+                "azero; uno; adue; atre; aquattro; acinque; asei; asette; otto; anove;\n" +
+                "adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n" +
+                "    adiciasette; adiciotto; adiciannove;\n" +
+                "20: aventi; avent>%%with-i>;\n" +
+                "30: atrenta; atrent>%%with-i>;\n" +
+                "40: aquaranta; aquarant>%%with-a>;\n" +
+                "50: acinquanta; acinquant>%%with-a>;\n" +
+                "60: asessanta; asessant>%%with-a>;\n" +
+                "70: asettanta; asettant>%%with-a>;\n" +
+                "80: ottanta; ottant>%%with-a>;\n" +
+                "90: anovanta; anovant>%%with-a>;\n" +
+                "100: acento; acent[>%%with-o>];\n" +
+                "200: <%%with-a<cento; <%%with-a<cent[>%%with-o>];\n" +
+                "1000: amille; amill[>%%with-i>];\n" +
+                "2000: <%%with-a<mila; <%%with-a<mil[>%%with-a>];\n" +
+                "100,000: =%main=;\n" +
+            "%%with-i:\n" +
+                "izero; uno; idue; itre; iquattro; icinque; isei; isette; otto; inove;\n" +
+                "idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n" +
+                "    idiciasette; idiciotto; idiciannove;\n" +
+                "20: iventi; ivent>%%with-i>;\n" +
+                "30: itrenta; itrent>%%with-i>;\n" +
+                "40: iquaranta; iquarant>%%with-a>;\n" +
+                "50: icinquanta; icinquant>%%with-a>;\n" +
+                "60: isessanta; isessant>%%with-a>;\n" +
+                "70: isettanta; isettant>%%with-a>;\n" +
+                "80: ottanta; ottant>%%with-a>;\n" +
+                "90: inovanta; inovant>%%with-a>;\n" +
+                "100: icento; icent[>%%with-o>];\n" +
+                "200: <%%with-i<cento; <%%with-i<cent[>%%with-o>];\n" +
+                "1000: imille; imill[>%%with-i>];\n" +
+                "2000: <%%with-i<mila; <%%with-i<mil[>%%with-a>];\n" +
+                "100,000: =%main=;\n" +
+            "%%with-o:\n" +
+                "ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto; onove;\n" +
+                "odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n" +
+                "    odiciasette; odiciotto; odiciannove;\n" +
+                "20: oventi; ovent>%%with-i>;\n" +
+                "30: otrenta; otrent>%%with-i>;\n" +
+                "40: oquaranta; oquarant>%%with-a>;\n" +
+                "50: ocinquanta; ocinquant>%%with-a>;\n" +
+                "60: osessanta; osessant>%%with-a>;\n" +
+                "70: osettanta; osettant>%%with-a>;\n" +
+                "80: ottanta; ottant>%%with-a>;\n" +
+                "90: onovanta; onovant>%%with-a>;\n" +
+                "100: ocento; ocent[>%%with-o>];\n" +
+                "200: <%%with-o<cento; <%%with-o<cent[>%%with-o>];\n" +
+                "1000: omille; omill[>%%with-i>];\n" +
+                "2000: <%%with-o<mila; <%%with-o<mil[>%%with-a>];\n" +
+                "100,000: =%main=;\n" ;
+        
+        String en_OrdinalRules =
+            // this rule set formats the numeral and calls %%abbrev to
+            // supply the abbreviation
+            "%main:\n" +
+                "=#,##0==%%abbrev=;\n" +
+            // this rule set supplies the abbreviation
+            "%%abbrev:\n" +
+                   // the abbreviations.  Everything from 4 to 19 ends in "th"
+                "th; st; nd; rd; th;\n" +
+                   // at 20, we begin repeating the cycle every 10 (13 is "13th",
+                   // but 23 and 33 are "23rd" and "33rd")  We do this by
+                   // ignoring all bug the ones digit in selecting the abbreviation
+                "20: >>;\n" +
+                   // at 100, we repeat the whole cycle by considering only the
+                   // tens and ones digits in picking an abbreviation
+                "100: >>;\n";
+        
+        String en_DurationRules =
+            // main rule set for formatting with words
+            "%with-words:\n" +
+                   // take care of singular and plural forms of "second"
+                "0 seconds; 1 second; =0= seconds;\n" +
+                   // use %%min to format values greater than 60 seconds
+                "60/60: <%%min<[, >>];\n" +
+                   // use %%hr to format values greater than 3,600 seconds
+                   // (the ">>>" below causes us to see the number of minutes
+                   // when when there are zero minutes)
+                "3600/60: <%%hr<[, >>>];\n" +
+            // this rule set takes care of the singular and plural forms
+            // of "minute"
+            "%%min:\n" +
+                "0 minutes; 1 minute; =0= minutes;\n" +
+            // this rule set takes care of the singular and plural forms
+            // of "hour"
+            "%%hr:\n" +
+                "0 hours; 1 hour; =0= hours;\n" +
+
+            // main rule set for formatting in numerals
+            "%in-numerals:\n" +
+                   // values below 60 seconds are shown with "sec."
+                "=0= sec.;\n" +
+                   // higher values are shown with colons: %%min-sec is used for
+                   // values below 3,600 seconds...
+                "60: =%%min-sec=;\n" +
+                   // ...and %%hr-min-sec is used for values of 3,600 seconds
+                   // and above
+                "3600: =%%hr-min-sec=;\n" +
+            // this rule causes values of less than 10 minutes to show without
+            // a leading zero
+            "%%min-sec:\n" +
+                "0: :=00=;\n" +
+                "60/60: <0<>>;\n" +
+            // this rule set is used for values of 3,600 or more.  Minutes are always
+            // shown, and always shown with two digits
+            "%%hr-min-sec:\n" +
+                "0: :=00=;\n" +
+                "60/60: <00<>>;\n" +
+                "3600/60: <#,##0<:>>>;\n" +
+            // the lenient-parse rules allow several different characters to be used
+            // as delimiters between hours, minutes, and seconds
+            "%%lenient-parse:\n" +
+                "& ':' = '.' = ' ' = '-';\n";
+
+            HashMap cannedData = new HashMap();
+        
+        {
+            cannedData.put("en_CA/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("en_CA/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("en_CA/DurationRules",      en_DurationRules);
+            
+            cannedData.put("fr_CA/SpelloutRules",      fr_SpelloutRules);
+            cannedData.put("fr_CA/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("fr_CA/DurationRules",      xx_DurationRules);
+            
+            cannedData.put("zh_CN/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("zh_CN/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("zh_CH/DurationRules",      xx_DurationRules);
+            
+            cannedData.put("zh/SpelloutRules",         en_SpelloutRules);
+            cannedData.put("zh/OrdinalRules",          en_OrdinalRules);
+            cannedData.put("zh_DurationRules",         xx_DurationRules);
+            
+            cannedData.put("en/SpelloutRules",         en_SpelloutRules);
+            cannedData.put("en/OrdinalRules",          en_OrdinalRules);
+            cannedData.put("en/DurationRules",         en_DurationRules);
+            
+            cannedData.put("fr_FR/SpelloutRules",      fr_SpelloutRules);
+            cannedData.put("fr_FR/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("fr_FR/DurationRules",      xx_DurationRules);
+            
+            cannedData.put("fr/SpelloutRules",         fr_SpelloutRules);
+            cannedData.put("fr/OrdinalRules",          xx_OrdinalRules);
+            cannedData.put("fr/DurationRules",         xx_DurationRules);
+            
+            cannedData.put("de/SpelloutRules",         de_SpelloutRules);
+            cannedData.put("de/OrdinalRules",          xx_OrdinalRules);
+            cannedData.put("de/DurationRules",         xx_DurationRules);
+            
+            cannedData.put("de_DE/SpelloutRules",      de_SpelloutRules);
+            cannedData.put("de_DE/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("de_DE/DurationRules",      xx_DurationRules);
+            
+            cannedData.put("it/SpelloutRules",         it_SpelloutRules);
+            cannedData.put("it/OrdinalRules",          xx_OrdinalRules);
+            cannedData.put("it/DurationRules",         xx_DurationRules);
+            
+            cannedData.put("it_IT/SpelloutRules",      it_SpelloutRules);
+            cannedData.put("it_IT/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("it_IT/DuratonRules",       xx_DurationRules);
+            
+            cannedData.put("ko_KR/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("ko_KR/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("ko_KR/DurationRules",      en_DurationRules);
+            
+            cannedData.put("ko/SpelloutRules",         en_SpelloutRules);
+            cannedData.put("ko/OrdinalRules",          en_OrdinalRules);
+            cannedData.put("ko/DurationRules",         en_DurationRules);
+            
+            cannedData.put("zh_Hans_CN/SpelloutRules", en_SpelloutRules);
+            cannedData.put("zh_Hans_CN/OrdinalRules",  en_OrdinalRules);
+            cannedData.put("zh_Hans_CH/DurationRules", xx_DurationRules);
+            
+            cannedData.put("zh_Hant_TW/SpelloutRules", en_SpelloutRules);
+            cannedData.put("zh_Hant_TW/OrdinalRules",  en_OrdinalRules);
+            cannedData.put("zh_Hant_TW/DurationRules", en_DurationRules);
+            
+            cannedData.put("zh_TW/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("zh_TW/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("zh_TW/DurationRules",      en_DurationRules);
+            
+            cannedData.put("en_GB/SpelloutRules",      en_GB_SpelloutRules);
+            cannedData.put("en_GB/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("en_GB/DurationRules",      en_DurationRules);
+            
+            cannedData.put("en_US/SpelloutRules",      en_SpelloutRules);
+            cannedData.put("en_US/OrdinalRules",       en_OrdinalRules);
+            cannedData.put("en_US/DurationRules",      en_DurationRules);
+
+            cannedData.put("ja/SpelloutRules",         ja_spelloutRules);
+            cannedData.put("ja/OrdinalRules",          xx_OrdinalRules);
+            cannedData.put("ja/DurationRules",         xx_DurationRules);
+            
+            cannedData.put("ja_JP/SpelloutRules",      ja_spelloutRules);
+            cannedData.put("ja_JP/OrdinalRules",       xx_OrdinalRules);
+            cannedData.put("ja_JP/DurationRules",      xx_DurationRules);
+        }
+        
+        int types[]        = {RuleBasedNumberFormat.SPELLOUT, RuleBasedNumberFormat.ORDINAL, RuleBasedNumberFormat.DURATION};
+        String typeNames[] = {"SpelloutRules", "OrdinalRules", "DurationRules"};
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            RuleBasedNumberFormat formats[] = new RuleBasedNumberFormat[types.length * locales.length];
+            int i = 0;
+            
+            for (int t = 0; t < types.length; t += 1) {
+                for (int l = 0; l < locales.length; l += 1) {
+                    String cannedRules = (String) cannedData.get(locales[l].toString() + "/" + typeNames[t]);
+                    
+                    if (cannedRules != null) {
+                        formats[i++] = new RuleBasedNumberFormat(cannedRules, locales[l]);
+                    } else {
+                        formats[i++] = new RuleBasedNumberFormat(locales[l], types[t]);
+                    }
+                }
+            }
+            
+            return formats;
+        }
+    }
+    
+    public static class DecimalFormatSymbolsHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DecimalFormatSymbols dfs[] = new DecimalFormatSymbols[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+
+                dfs[i] = getCannedDecimalFormatSymbols(uloc);
+
+//                System.out.println("\n    " + uloc.toString() + " = \"" + 
+//                        com.ibm.icu.impl.Utility.escape(String.valueOf(getCharSymbols(dfs[i]), 0, 12)) + "\"");
+            }
+            
+            return dfs;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            DecimalFormatSymbols dfs_a = (DecimalFormatSymbols) a;
+            DecimalFormatSymbols dfs_b = (DecimalFormatSymbols) b;
+            String strings_a[] = getStringSymbols(dfs_a);
+            String strings_b[] = getStringSymbols(dfs_b);
+            char chars_a[] = getCharSymbols(dfs_a);
+            char chars_b[] = getCharSymbols(dfs_b);
+
+            return SerializableTest.compareStrings(strings_a, strings_b) && SerializableTest.compareChars(chars_a, chars_b);
+        }
+    }
+    
+    public static class CurrencyPluralInfoHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            CurrencyPluralInfo currencyPluralInfo[] = {
+                new CurrencyPluralInfo()
+            };
+            currencyPluralInfo[0].setPluralRules("one: n is 1; few: n in 2..4");
+            currencyPluralInfo[0].setCurrencyPluralPattern("few", "few currency");
+            return currencyPluralInfo;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return a.equals(b);
+        }
+    }
+    
+    public static class MessageFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            MessageFormat formats[] = {new MessageFormat("pattern{0}")};
+            
+            return formats;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            MessageFormat mfa = (MessageFormat) a;
+            MessageFormat mfb = (MessageFormat) b;
+            Object arguments[] = {new Integer(123456)};
+            
+            return mfa.format(arguments) != mfb.format(arguments);
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class MessageFormatFieldHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            return new Object[] {MessageFormat.Field.ARGUMENT};
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return (a == b);
+        }
+    }
+//#endif
+
+    public static class DateFormatHandler implements SerializableTest.Handler
+    {
+        static HashMap cannedPatterns = new HashMap();
+        static Date fixedDate;
+        
+        {
+            cannedPatterns.put("en_CA",      "EEEE, MMMM d, yyyy h:mm:ss a z");
+            cannedPatterns.put("fr_CA",      "EEEE d MMMM yyyy HH' h 'mm' min 'ss' s 'z");
+            cannedPatterns.put("zh_Hans_CN", "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE ahh'\u65F6'mm'\u5206'ss'\u79D2' z");
+            cannedPatterns.put("zh_CN",      "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE ahh'\u65F6'mm'\u5206'ss'\u79D2' z");
+            cannedPatterns.put("zh",         "EEEE, yyyy MMMM dd HH:mm:ss z");
+            cannedPatterns.put("en",         "EEEE, MMMM d, yyyy h:mm:ss a z");
+            cannedPatterns.put("fr_FR",      "EEEE d MMMM yyyy HH' h 'mm z");
+            cannedPatterns.put("fr",         "EEEE d MMMM yyyy HH' h 'mm z");
+            cannedPatterns.put("de",         "EEEE, d. MMMM yyyy H:mm' Uhr 'z");
+            cannedPatterns.put("de_DE",      "EEEE, d. MMMM yyyy H:mm' Uhr 'z");
+            cannedPatterns.put("it",         "EEEE d MMMM yyyy HH:mm:ss z");
+            cannedPatterns.put("it_IT",      "EEEE d MMMM yyyy HH:mm:ss z");
+            cannedPatterns.put("ja_JP",      "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE H'\u6642'mm'\u5206'ss'\u79D2'z");
+            cannedPatterns.put("ja",         "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE H'\u6642'mm'\u5206'ss'\u79D2'z");
+            cannedPatterns.put("ko_KR",      "yyyy'\uB144' M'\uC6D4' d'\uC77C' EEEE a hh'\uC2DC' mm'\uBD84' ss'\uCD08' z");
+            cannedPatterns.put("ko",         "yyyy'\uB144' M'\uC6D4' d'\uC77C' EEEE a hh'\uC2DC' mm'\uBD84' ss'\uCD08' z");
+            cannedPatterns.put("zh_Hant_TW", "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE ahh'\u6642'mm'\u5206'ss'\u79D2' z");
+            cannedPatterns.put("zh_TW",      "yyyy'\u5E74'M'\u6708'd'\u65E5'EEEE ahh'\u6642'mm'\u5206'ss'\u79D2' z");
+            cannedPatterns.put("en_GB",      "EEEE, d MMMM yyyy HH:mm:ss z");
+            cannedPatterns.put("en_US",      "EEEE, MMMM d, yyyy h:mm:ss a z");
+            
+            // Get a date that will likely not move in or out of Daylight savings time...
+            Calendar cal = Calendar.getInstance(Locale.US);
+            
+            cal.clear();
+            cal.set(2007, Calendar.JANUARY, 1, 12, 0, 0); // January 1, 2007 12:00:00 PM.
+            fixedDate = cal.getTime();
+        }
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DateFormat formats[] = new DateFormat[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                
+              //formats[i] = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, locales[i]);
+                formats[i] = getCannedSimpleDateFormat((String)cannedPatterns.get(uloc.toString()), uloc);
+            }
+            
+            return formats;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            DateFormat dfa = (DateFormat) a;
+            DateFormat dfb = (DateFormat) b;
+          //Date date = new Date(System.currentTimeMillis());
+            String sfa = dfa.format(fixedDate);
+            String sfb = dfb.format(fixedDate);
+
+            if (!sfa.equals(sfb)) {
+                // TODO
+                // In ICU3.8, localized GMT format pattern was added in
+                // DateFormatSymbols, which has no public setter.
+                // The difference of locale data for localized GMT format
+                // will produce different format result.  This is a temporary
+                // workaround for the issue.
+                DateFormatSymbols dfsa = ((SimpleDateFormat)dfa).getDateFormatSymbols();
+                DateFormatSymbols tmp = (DateFormatSymbols)((SimpleDateFormat)dfb).getDateFormatSymbols().clone();
+
+                tmp.setMonths(dfsa.getMonths());
+                tmp.setShortMonths(dfsa.getShortMonths());
+                tmp.setWeekdays(dfsa.getWeekdays());
+                tmp.setShortWeekdays(dfsa.getShortWeekdays());
+                tmp.setAmPmStrings(dfsa.getAmPmStrings());
+
+                ((SimpleDateFormat)dfa).setDateFormatSymbols(tmp);
+
+                sfa = dfa.format(fixedDate);
+            }
+
+            return sfa.equals(sfb);
+        }
+        
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class DateFormatFieldHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects() {
+            return new Object[] {
+                    DateFormat.Field.AM_PM,
+                    DateFormat.Field.DAY_OF_MONTH,
+                    DateFormat.Field.DAY_OF_WEEK,
+                    DateFormat.Field.DAY_OF_WEEK_IN_MONTH,
+                    DateFormat.Field.DAY_OF_YEAR,
+                    DateFormat.Field.ERA,
+                    DateFormat.Field.HOUR_OF_DAY0,
+                    DateFormat.Field.HOUR_OF_DAY1,
+                    DateFormat.Field.HOUR0,
+                    DateFormat.Field.HOUR1,
+                    DateFormat.Field.MILLISECOND,
+                    DateFormat.Field.MINUTE,
+                    DateFormat.Field.MONTH,
+                    DateFormat.Field.SECOND,
+                    DateFormat.Field.TIME_ZONE,
+                    DateFormat.Field.WEEK_OF_MONTH,
+                    DateFormat.Field.WEEK_OF_YEAR,
+                    DateFormat.Field.YEAR,
+                    DateFormat.Field.DOW_LOCAL,
+                    DateFormat.Field.EXTENDED_YEAR,
+                    DateFormat.Field.JULIAN_DAY,
+                    DateFormat.Field.MILLISECONDS_IN_DAY,
+                    DateFormat.Field.YEAR_WOY,
+                    DateFormat.Field.QUARTER
+            };
+        }
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return (a == b);
+        }
+    }
+//#endif
+
+    public static class DateFormatSymbolsHandler implements SerializableTest.Handler
+    {
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DateFormatSymbols dfs[] = new DateFormatSymbols[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                
+                dfs[i] = getCannedDateFormatSymbols(uloc);
+            }
+            
+            return dfs;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            DateFormatSymbols dfs_a = (DateFormatSymbols) a;
+            DateFormatSymbols dfs_b = (DateFormatSymbols) b;
+            String months_a[] = dfs_a.getMonths();
+            String months_b[] = dfs_b.getMonths();
+            
+            return SerializableTest.compareStrings(months_a, months_b);
+        }
+    }
+    
+    public static class SimpleDateFormatHandler extends DateFormatHandler
+    {
+        String patterns[] = {
+            "EEEE, yyyy MMMM dd",
+            "yyyy MMMM d",
+            "yyyy MMM d",
+            "yy/MM/dd"
+        };
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            SimpleDateFormat dateFormats[] = new SimpleDateFormat[patterns.length * locales.length];
+            int i = 0;
+            
+            for (int p = 0; p < patterns.length; p += 1) {
+                for (int l = 0; l < locales.length; l += 1) {
+                    dateFormats[i++] = getCannedSimpleDateFormat(patterns[p], ULocale.forLocale(locales[l]));
+                }
+            }
+            
+            return dateFormats;
+        }
+    }
+
+    public static class DateIntervalFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DateIntervalFormat dateIntervalFormats[] = {
+                DateIntervalFormat.getInstance("yMMMMEEEEd")
+            };
+            return dateIntervalFormats;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            DateIntervalFormat dfa = (DateIntervalFormat) a;
+            DateIntervalFormat dfb = (DateIntervalFormat) b;
+            DateInterval dateInterval = new DateInterval(1, System.currentTimeMillis());
+            String sfa = dfa.format(dateInterval);
+            String sfb = dfb.format(dateInterval);
+
+            return sfa.equals(sfb);
+        }
+    }
+
+
+    public static class DateIntervalInfoHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DateIntervalInfo dateIntervalInfo[] = {
+                new DateIntervalInfo()
+            };
+            dateIntervalInfo[0].setIntervalPattern("yMd", Calendar.YEAR, "yy/MM/dd - yy/MM/dd");
+            dateIntervalInfo[0].setIntervalPattern("yMd", Calendar.MONTH, "yy/MM - MM/dd");
+            return dateIntervalInfo;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return a.equals(b);
+        }
+    }
+
+
+    public static class PatternInfoHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            DateIntervalInfo.PatternInfo patternInfo[] = {
+                new DateIntervalInfo.PatternInfo("yyyy MMM dd - ", 
+                                                 "dd",
+                                                 false)
+            };
+            return patternInfo;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return a.equals(b);
+        }
+    }
+
+    public static class ChineseDateFormatHandler extends DateFormatHandler
+    {
+        String patterns[] = {
+            "EEEE y'x'G-Ml-d",
+            "y'x'G-Ml-d",
+            "y'x'G-Ml-d",
+            "y'x'G-Ml-d"
+        };
+        
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            ChineseDateFormat dateFormats[] = new ChineseDateFormat[patterns.length * locales.length];
+            int i = 0;
+            
+            for (int p = 0; p < patterns.length; p += 1) {
+                for (int l = 0; l < locales.length; l += 1) {
+                    ULocale locale = new ULocale(locales[l].toString() + "@calendar=chinese");
+                    
+                    dateFormats[i++] = new ChineseDateFormat(patterns[p], locale);
+                }
+            }
+            
+            return dateFormats;
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class ChineseDateFormatFieldHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects() {
+            return new Object[] {
+                    ChineseDateFormat.Field.IS_LEAP_MONTH
+            };
+        }
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return (a == b);
+        }
+    }
+//#endif
+
+    public static class ChineseDateFormatSymbolsHandler extends DateFormatSymbolsHandler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            ChineseDateFormatSymbols cdfs[] = new ChineseDateFormatSymbols[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                
+                cdfs[i] = new ChineseDateFormatSymbols(uloc);
+                cdfs[i].setMonths((String[]) cannedMonthNames.get(uloc.toString()));
+            }
+            
+            return cdfs;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            if (! super.hasSameBehavior(a, b)) {
+                return false;
+            }
+            
+            ChineseDateFormatSymbols cdfs_a = (ChineseDateFormatSymbols) a;
+            ChineseDateFormatSymbols cdfs_b = (ChineseDateFormatSymbols) b;
+            
+            return cdfs_a.getLeapMonth(0).equals(cdfs_b.getLeapMonth(0)) &&
+                   cdfs_a.getLeapMonth(1).equals(cdfs_b.getLeapMonth(1));
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class NumberFormatFieldHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            NumberFormat.Field fields[] = {
+                NumberFormat.Field.CURRENCY, NumberFormat.Field.DECIMAL_SEPARATOR, NumberFormat.Field.EXPONENT,
+                NumberFormat.Field.EXPONENT_SIGN, NumberFormat.Field.EXPONENT_SYMBOL, NumberFormat.Field.FRACTION,
+                NumberFormat.Field.GROUPING_SEPARATOR, NumberFormat.Field.INTEGER, NumberFormat.Field.PERCENT,
+                NumberFormat.Field.PERMILLE, NumberFormat.Field.SIGN
+            };
+            
+            return fields;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            NumberFormat.Field field_a = (NumberFormat.Field) a;
+            NumberFormat.Field field_b = (NumberFormat.Field) b;
+            
+            return field_a.toString().equals(field_b.toString());
+        }
+    }
+//#endif
+
+    public static class DateNumberFormatHandler implements SerializableTest.Handler
+    {
+        public Object[] getTestObjects()
+        {
+            Locale locales[] = SerializableTest.getLocales();
+            DateNumberFormat[] dnfmts = new DateNumberFormat[locales.length];
+            for (int i = 0; i < locales.length; i++) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                dnfmts[i] = new DateNumberFormat(uloc);
+            }
+            return dnfmts;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b) {
+            return a.equals(b);
+        }
+    }
+
+    public static class PluralFormatHandler implements SerializableTest.Handler {
+        public Object[] getTestObjects() {
+            Locale[] locales = { Locale.US }; // main test is in plural rules handler
+            PluralFormat[] plfmts = new PluralFormat[locales.length];
+            for (int i = 0; i < locales.length; i++) {
+                ULocale uloc = ULocale.forLocale(locales[i]);
+                try {
+                    plfmts[i] = new PluralFormat(uloc, "one{1 foo} other{# foo}");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            return plfmts;
+        }
+        public boolean hasSameBehavior(Object a, Object b) {
+            return a.equals(b);
+        }
+    }
+
+    public static class PluralRulesHandler implements SerializableTest.Handler {
+        public Object[] getTestObjects() {
+            String[] localeNames = {"ja","da","fr","lv","ga","ro","lt","hr","cs","pl","sl"};
+            PluralRules[] plrulz = new PluralRules[localeNames.length];
+            for (int i = 0; i < localeNames.length; i++) {
+                ULocale uloc = ULocale.createCanonical(localeNames[i]);
+                try {
+                    plrulz[i] = PluralRules.forLocale(uloc);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            return plrulz;
+        }
+        public boolean hasSameBehavior(Object a, Object b) {
+            return a.equals(b);
+        }
+    }
+    
+    public static class TimeUnitFormatHandler implements SerializableTest.Handler {
+        // TODO - more test coverage!
+        public Object[] getTestObjects() {
+            return new Object[] { new TimeUnitFormat().setLocale(ULocale.ENGLISH) };
+        }
+        public boolean hasSameBehavior(Object a, Object b) {
+            TimeUnitFormat tufa = (TimeUnitFormat)a;
+            TimeUnitFormat tufb = (TimeUnitFormat)b;
+
+            TimeUnitAmount amount = new TimeUnitAmount(3, TimeUnit.HOUR);
+            String resa = tufa.format(amount);
+            String resb = tufb.format(amount);
+
+            return resa.equals(resb);
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        // nothing needed...
+    }
+
+}
+//eof
diff --git a/src/com/ibm/icu/dev/test/serializable/SerializableTest.java b/src/com/ibm/icu/dev/test/serializable/SerializableTest.java
new file mode 100644
index 0000000..6d612d7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/SerializableTest.java
@@ -0,0 +1,723 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.JavaTimeZone;
+import com.ibm.icu.impl.OlsonTimeZone;
+import com.ibm.icu.impl.TimeZoneAdapter;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.math.MathContext;
+import com.ibm.icu.util.AnnualTimeZoneRule;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.util.DateTimeRule;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.InitialTimeZoneRule;
+import com.ibm.icu.util.RuleBasedTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeArrayTimeZoneRule;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneRule;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VTimeZone;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class SerializableTest extends TestFmwk.TestGroup
+{
+    public interface Handler
+    {
+        public Object[] getTestObjects();
+        
+        public boolean hasSameBehavior(Object a, Object b);
+    }
+    
+    public static Handler getHandler(String className)
+    {
+        return (Handler) map.get(className);
+    }
+    
+    private static class TimeZoneHandler implements Handler
+    {
+        String[] ZONES = { "GMT", "MET", "IST" };
+
+        public Object[] getTestObjects()
+        {
+            TimeZone zones[] = new TimeZone[ZONES.length];
+            
+            for(int z = 0; z < ZONES.length; z += 1) {
+                zones[z] = TimeZone.getTimeZone(ZONES[z]);
+            }
+            
+            return zones;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            TimeZone zone_a = (TimeZone) a;
+            TimeZone zone_b = (TimeZone) b;
+
+            if (!(zone_a.getDisplayName().equals(zone_b.getDisplayName()))) {
+                return false;
+            }
+
+            int a_offsets[] = {0, 0};
+            int b_offsets[] = {0, 0};
+
+            boolean bSame = true;
+            for (int i = 0; i < sampleTimes.length; i++) {
+                zone_a.getOffset(sampleTimes[i], false, a_offsets);
+                zone_b.getOffset(sampleTimes[i], false, b_offsets);
+                if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
+                    bSame = false;
+                    break;
+                }
+            }
+            return bSame;
+        }
+    }
+    
+    private static Locale locales[] = {
+        Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA, 
+        Locale.CHINESE, Locale.ENGLISH, Locale.FRANCE, Locale.FRENCH, 
+        Locale.GERMAN, Locale.GERMANY, Locale.ITALIAN, Locale.ITALY, 
+        Locale.JAPAN, Locale.JAPANESE, Locale.KOREA, Locale.KOREAN, 
+        Locale.PRC, Locale.SIMPLIFIED_CHINESE, Locale.TAIWAN, 
+        Locale.TRADITIONAL_CHINESE, Locale.UK, Locale.US
+    };
+    
+    private static Locale places[] = {
+        Locale.CANADA, Locale.CANADA_FRENCH, Locale.CHINA, 
+        Locale.FRANCE, Locale.GERMANY, Locale.ITALY, 
+        Locale.JAPAN, Locale.KOREA, Locale.PRC, Locale.TAIWAN, 
+        Locale.UK, Locale.US
+    };
+    
+    public static Locale[] getLocales()
+    {
+        return locales;
+    }
+    
+    public static boolean compareStrings(String a[], String b[])
+    {
+        if (a.length != b.length) {
+            return false;
+        }
+        
+        for (int i = 0; i < a.length; i += 1) {
+            if (! a[i].equals(b[i])) {
+                return false;
+            }
+        }
+        
+        return true;
+    }
+    
+    public static boolean compareChars(char a[], char b[])
+    {
+        if (a.length != b.length) {
+            return false;
+        }
+        
+        for (int i = 0; i < a.length; i += 1) {
+            if (a[i] != b[i]) {
+                return false;
+            }
+        }
+        
+        return true;
+    }
+
+    private static class SimpleTimeZoneHandler extends TimeZoneHandler
+    {
+        public Object[] getTestObjects()
+        {
+            SimpleTimeZone simpleTimeZones[] = new SimpleTimeZone[6];
+            
+            simpleTimeZones[0] = new SimpleTimeZone(32400000, "MyTimeZone");
+            
+            simpleTimeZones[1] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            
+            simpleTimeZones[2] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            simpleTimeZones[2].setRawOffset(0);
+            
+            simpleTimeZones[3] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            simpleTimeZones[3].setStartYear(100);
+            
+            simpleTimeZones[4] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            simpleTimeZones[4].setStartYear(1000);
+            simpleTimeZones[4].setDSTSavings(1800000);
+            simpleTimeZones[4].setStartRule(3, 4, 180000);
+            simpleTimeZones[4].setEndRule(6, 3, 4, 360000);
+            
+            simpleTimeZones[5] = new SimpleTimeZone(32400000, "Asia/Tokyo");
+            simpleTimeZones[5].setStartRule(2, 3, 4, 360000);
+            simpleTimeZones[5].setEndRule(6, 3, 4, 360000);
+            
+            return simpleTimeZones;
+        }
+    }
+
+    private static class VTimeZoneHandler extends TimeZoneHandler {
+        public Object[] getTestObjects() {
+            //TODO
+            VTimeZone[] vtzs = new VTimeZone[1];
+            vtzs[0] = VTimeZone.create("America/New_York");
+            return vtzs;
+        }
+    }
+
+    private static final int HOUR = 60*60*1000;
+    private static final AnnualTimeZoneRule[] TEST_US_EASTERN = {
+        new AnnualTimeZoneRule("EST", -5*HOUR, 0,
+                new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
+                1967, 2006),
+        
+        new AnnualTimeZoneRule("EST", -5*HOUR, 0,
+                new DateTimeRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
+                2007, AnnualTimeZoneRule.MAX_YEAR),
+        
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
+                1967, 1973),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.JANUARY, 6, 2*HOUR, DateTimeRule.WALL_TIME),
+                1974, 1974),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.FEBRUARY, 23, 2*HOUR, DateTimeRule.WALL_TIME),
+                1975, 1975),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME),
+                1976, 1986),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.APRIL, 1, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
+                1987, 2006),
+
+        new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR,
+                new DateTimeRule(Calendar.MARCH, 8, Calendar.SUNDAY, true, 2*HOUR, DateTimeRule.WALL_TIME),
+                2007, AnnualTimeZoneRule.MAX_YEAR)
+    };
+    
+
+    
+    private static class RuleBasedTimeZoneHandler extends TimeZoneHandler
+    {
+        public Object[] getTestObjects()
+        {
+            RuleBasedTimeZone ruleBasedTimeZones[] = new RuleBasedTimeZone[2];
+
+            InitialTimeZoneRule ir = new InitialTimeZoneRule("GMT-5", -5*HOUR, 0);
+
+            // GMT-5, no transition
+            ruleBasedTimeZones[0] = new RuleBasedTimeZone("GMT-5", ir);
+
+
+            // US Eastern since 1967
+            ruleBasedTimeZones[1] = new RuleBasedTimeZone("US_East", ir);
+            for (int i = 0; i < TEST_US_EASTERN.length; i++) {
+                ruleBasedTimeZones[1].addTransitionRule(TEST_US_EASTERN[i]);
+            }
+            return ruleBasedTimeZones;
+        }
+    }
+
+    private static class DateTimeRuleHandler implements Handler {
+        public Object[] getTestObjects() {
+            DateTimeRule[] rules = new DateTimeRule[4];
+
+            // DOM + UTC
+            rules[0] = new DateTimeRule(Calendar.OCTOBER, 10, 13*HOUR, DateTimeRule.UTC_TIME);
+
+            // DOW + WALL
+            rules[1] = new DateTimeRule(Calendar.MARCH, 2, Calendar.SUNDAY, 2*HOUR, DateTimeRule.WALL_TIME);
+
+            // DOW_GEQ_DOM + STD
+            rules[2] = new DateTimeRule(Calendar.MAY, 1, Calendar.MONDAY, true, 0*HOUR, DateTimeRule.STANDARD_TIME);
+
+            // DOW_LEQ_DOM + WALL
+            rules[3] = new DateTimeRule(Calendar.AUGUST, 31, Calendar.SATURDAY, false, 1*HOUR, DateTimeRule.WALL_TIME);
+
+            return rules;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b) {
+            return hasSameRule((DateTimeRule)a, (DateTimeRule)b);
+        }
+
+        static boolean hasSameRule(DateTimeRule dtra, DateTimeRule dtrb) {
+            boolean bSame = false;
+            if (dtra.getDateRuleType() == dtrb.getDateRuleType()
+                    && dtra.getRuleMonth() == dtrb.getRuleMonth()
+                    && dtra.getTimeRuleType() == dtrb.getTimeRuleType()
+                    && dtra.getRuleMillisInDay() == dtrb.getRuleMillisInDay()) {
+                switch (dtra.getDateRuleType()) {
+                case DateTimeRule.DOM:
+                    bSame = (dtra.getRuleDayOfMonth() == dtrb.getRuleDayOfMonth());
+                    break;
+                case DateTimeRule.DOW:
+                    bSame = (dtra.getRuleDayOfWeek() == dtrb.getRuleDayOfWeek() &&
+                                dtra.getRuleWeekInMonth() == dtrb.getRuleWeekInMonth());
+                    break;
+                case DateTimeRule.DOW_GEQ_DOM:
+                case DateTimeRule.DOW_LEQ_DOM:
+                    bSame = (dtra.getRuleDayOfMonth() == dtrb.getRuleDayOfMonth() &&
+                                dtra.getRuleDayOfWeek() == dtrb.getRuleDayOfWeek());
+                    break;
+                }
+            }
+            return bSame;            
+        }
+    }
+
+    private static boolean compareTimeZoneRules(TimeZoneRule ra, TimeZoneRule rb) {
+        if (ra.getName().equals(rb.getName()) &&
+                ra.getRawOffset() == rb.getRawOffset() &&
+                ra.getDSTSavings() == rb.getDSTSavings()) {
+            return true;
+        }
+        return false;        
+    }
+
+    private static class AnnualTimeZoneRuleHandler implements Handler {
+        public Object[] getTestObjects() {
+            return TEST_US_EASTERN;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b) {
+            AnnualTimeZoneRule ra = (AnnualTimeZoneRule)a;
+            AnnualTimeZoneRule rb = (AnnualTimeZoneRule)b;
+            if (DateTimeRuleHandler.hasSameRule(ra.getRule(), rb.getRule()) &&
+                    ra.getStartYear() == rb.getStartYear() &&
+                    ra.getEndYear() == rb.getEndYear()) {
+                return compareTimeZoneRules(ra, rb);
+            }
+            return false;
+        }
+    }
+
+    private static class InitialTimeZoneRuleHandler implements Handler {
+        public Object[] getTestObjects() {
+            TimeZoneRule[] rules = new TimeZoneRule[2];
+            rules[0] = new InitialTimeZoneRule("EST", -5*HOUR, 0);
+            rules[1] = new InitialTimeZoneRule("PST", -8*HOUR, 0);
+            return rules;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b) {
+            return compareTimeZoneRules((TimeZoneRule)a, (TimeZoneRule)b);
+        }
+    }
+
+    private static class TimeArrayTimeZoneRuleHandler implements Handler {
+        public Object[] getTestObjects() {
+            TimeArrayTimeZoneRule[] rules = new TimeArrayTimeZoneRule[1];
+            long[] ttime = new long[] {-631152000000L, 0L, 946684800000L}; /* {1950-1-1, 1970-1-1, 2000-1-1} */
+            rules[0] = new TimeArrayTimeZoneRule("Foo", 1*HOUR, 1*HOUR, ttime, DateTimeRule.UTC_TIME);
+
+            return rules;
+        }
+        public boolean hasSameBehavior(Object a, Object b) {
+            TimeArrayTimeZoneRule ra = (TimeArrayTimeZoneRule)a;
+            TimeArrayTimeZoneRule rb = (TimeArrayTimeZoneRule)b;
+
+            Date da = ra.getFirstStart(0, 0);
+            Date db = rb.getFirstStart(0, 0);
+            long t = da.getTime();
+            if (da.equals(db)) {
+                da = ra.getFinalStart(0, 0);
+                db = rb.getFinalStart(0, 0);
+                long end = da.getTime();
+                if (da.equals(db)) {
+                    while (t < end) {
+                        da = ra.getNextStart(t, 0, 0, false);
+                        db = ra.getNextStart(t, 0, 0, false);
+                        if (da == null || db == null || !da.equals(db)) {
+                            break;
+                        }
+                        t = da.getTime();
+                    }
+                    return compareTimeZoneRules(ra, rb);
+                }
+            }
+            return false;
+        }
+    }
+
+    private static class ULocaleHandler implements Handler
+    {
+        public Object[] getTestObjects()
+        {
+            ULocale uLocales[] = new ULocale[locales.length];
+            
+            for (int i = 0; i < locales.length; i += 1) {
+                uLocales[i] = ULocale.forLocale(locales[i]);
+            }
+            
+            return uLocales;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            ULocale uloc_a = (ULocale) a;
+            ULocale uloc_b = (ULocale) b;
+            
+            return uloc_a.getName().equals(uloc_b.getName());
+        }
+    }
+    
+    public static class DateIntervalHandler implements Handler
+    {
+        private DateInterval dateInterval[] = {
+                new DateInterval(0L, 1164931200000L/*20061201T000000Z*/)
+        };
+        public Object[] getTestObjects()
+        {
+            return dateInterval;
+        }
+
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            return a.equals(b);
+        }
+    }
+
+
+    private static class CurrencyHandler implements Handler
+    {
+        public Object[] getTestObjects()
+        {
+            Currency currencies[] = new Currency[places.length];
+            
+            for (int i = 0; i < places.length; i += 1) {
+                currencies[i] = Currency.getInstance(places[i]);
+            }
+            
+            return currencies;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            Currency curr_a = (Currency) a;
+            Currency curr_b = (Currency) b;
+            
+            return curr_a.getCurrencyCode().equals(curr_b.getCurrencyCode());
+            
+        }
+    }
+
+    private static String zoneIDs[] = {
+        "Pacific/Honolulu", "America/Anchorage", "America/Los_Angeles", "America/Denver",
+        "America/Chicago", "America/New_York", "Africa/Cairo", "Africa/Addis_Ababa", "Africa/Dar_es_Salaam",
+        "Africa/Freetown", "Africa/Johannesburg", "Africa/Nairobi", "Asia/Bangkok", "Asia/Baghdad",
+        "Asia/Calcutta", "Asia/Hong_Kong", "Asia/Jakarta", "Asia/Jerusalem", "Asia/Manila", "Asia/Tokyo",
+        "Europe/Amsterdam", "Europe/Athens", "Europe/Berlin", "Europe/London", "Europe/Malta", "Europe/Moscow",
+        "Europe/Paris", "Europe/Rome"
+    };
+        
+    private static long sampleTimes[] = {
+        1136073600000L, // 20060101T000000Z
+        1138752000000L, // 20060201T000000Z
+        1141171200000L, // 20060301T000000Z
+        1143849600000L, // 20060401T000000Z
+        1146441600000L, // 20060501T000000Z
+        1149120000000L, // 20060601T000000Z
+        1151712000000L, // 20060701T000000Z
+        1154390400000L, // 20060801T000000Z
+        1157068800000L, // 20060901T000000Z
+        1159660800000L, // 20061001T000000Z
+        1162339200000L, // 20061101T000000Z
+        1164931200000L, // 20061201T000000Z
+    };
+
+    private static class OlsonTimeZoneHandler implements Handler
+    {
+        public Object[] getTestObjects()
+        {
+            OlsonTimeZone timeZones[] = new OlsonTimeZone[zoneIDs.length];
+            
+            for (int i = 0; i < zoneIDs.length; i += 1) {
+                timeZones[i] = new OlsonTimeZone(zoneIDs[i]);
+            }
+            
+            return timeZones;
+                
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            OlsonTimeZone otz_a = (OlsonTimeZone) a;
+            OlsonTimeZone otz_b = (OlsonTimeZone) b;
+            int a_offsets[] = {0, 0};
+            int b_offsets[] = {0, 0};
+
+            boolean bSame = true;
+            for (int i = 0; i < sampleTimes.length; i++) {
+                otz_a.getOffset(sampleTimes[i], false, a_offsets);
+                otz_b.getOffset(sampleTimes[i], false, b_offsets);
+                if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
+                    bSame = false;
+                    break;
+                }
+            }
+            return bSame;
+        }
+    }
+
+    private static class TimeZoneAdapterHandler implements Handler
+    {
+        public Object[] getTestObjects()
+        {
+            TimeZoneAdapter timeZones[] = new TimeZoneAdapter[zoneIDs.length];
+            
+            for (int i = 0; i < zoneIDs.length; i += 1) {
+                timeZones[i] = new TimeZoneAdapter(TimeZone.getTimeZone(zoneIDs[i]));
+            }
+            
+            return timeZones;
+                
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            GregorianCalendar cal = new GregorianCalendar();
+            TimeZoneAdapter tza_a = (TimeZoneAdapter) a;
+            TimeZoneAdapter tza_b = (TimeZoneAdapter) b;
+            
+            int a_offset, b_offset;
+            boolean a_dst, b_dst;
+            boolean bSame = true;
+            for (int i = 0; i < sampleTimes.length; i++) {
+                cal.setTimeInMillis(sampleTimes[i]);
+                int era = cal.get(Calendar.ERA);
+                int year = cal.get(Calendar.YEAR);
+                int month = cal.get(Calendar.MONTH);
+                int day = cal.get(Calendar.DAY_OF_MONTH);
+                int dow = cal.get(Calendar.DAY_OF_WEEK);
+                int mid = cal.get(Calendar.MILLISECONDS_IN_DAY);
+                a_offset = tza_a.getOffset(era, year, month, day, dow, mid);
+                b_offset = tza_b.getOffset(era, year, month, day, dow, mid);
+                Date d = new Date(sampleTimes[i]);
+                a_dst = tza_a.inDaylightTime(d);
+                b_dst = tza_b.inDaylightTime(d);
+                if (a_offset != b_offset || a_dst != b_dst) {
+                    bSame = false;
+                    break;
+                }
+            }
+            return bSame;
+        }
+    }
+
+    private static class JavaTimeZoneHandler implements Handler {
+        String[] ZONES = { "GMT", "America/New_York", "GMT+05:45" };
+
+        public Object[] getTestObjects() {
+            JavaTimeZone zones[] = new JavaTimeZone[ZONES.length];
+            for(int z = 0; z < ZONES.length; z += 1) {
+                zones[z] = new JavaTimeZone(ZONES[z]);
+            }
+            return zones;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            TimeZone zone_a = (TimeZone) a;
+            TimeZone zone_b = (TimeZone) b;
+
+            if (!(zone_a.getID().equals(zone_b.getID()))) {
+                return false;
+            }
+
+            int a_offsets[] = {0, 0};
+            int b_offsets[] = {0, 0};
+
+            boolean bSame = true;
+            for (int i = 0; i < sampleTimes.length; i++) {
+                zone_a.getOffset(sampleTimes[i], false, a_offsets);
+                zone_b.getOffset(sampleTimes[i], false, b_offsets);
+                if (a_offsets[0] != b_offsets[0] || a_offsets[1] != b_offsets[1]) {
+                    bSame = false;
+                    break;
+                }
+            }
+            return bSame;
+        }
+    }
+
+    private static class BigDecimalHandler implements Handler
+    {
+        String values[] = {
+            "1234567890.",
+            "123456789.0",
+            "12345678.90",
+            "1234567.890",
+            "123456.7890",
+            "12345.67890",
+            "1234.567890",
+            "123.4567890",
+            "12.34567890",
+            "1.234567890",
+            ".1234567890"};
+        
+        public Object[] getTestObjects()
+        {
+            BigDecimal bds[] = new BigDecimal[values.length];
+            
+            for (int i = 0; i < values.length; i += 1) {
+                bds[i] = new BigDecimal(values[i]);
+            }
+            
+            return bds;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b) {
+            BigDecimal bda = (BigDecimal) a;
+            BigDecimal bdb = (BigDecimal) b;
+            
+            return bda.toString().equals(bdb.toString());
+        }
+    }
+    
+    private static class MathContextHandler implements Handler
+    {
+        int forms[] = {MathContext.PLAIN, MathContext.ENGINEERING, MathContext.SCIENTIFIC};
+        int rounds[] = {
+            MathContext.ROUND_CEILING, MathContext.ROUND_DOWN, MathContext.ROUND_FLOOR,
+            MathContext.ROUND_HALF_DOWN, MathContext.ROUND_HALF_EVEN, MathContext.ROUND_HALF_UP,
+            MathContext.ROUND_UNNECESSARY, MathContext.ROUND_UP};
+
+        public Object[] getTestObjects()
+        {
+            int objectCount = forms.length * rounds.length;
+            MathContext contexts[] = new MathContext[objectCount];
+            int i = 0;
+            
+            for (int f = 0; f < forms.length; f += 1) {
+                for (int r = 0; r < rounds.length; r += 1) {
+                    int digits = f * r;
+                    boolean lostDigits = (r & 1) != 0;
+                    
+                    contexts[i++] = new MathContext(digits, forms[f], lostDigits, rounds[r]);
+                }
+            }
+            
+            return contexts;
+        }
+        
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            MathContext mca = (MathContext) a;
+            MathContext mcb = (MathContext) b;
+            
+            return mca.toString().equals(mcb.toString());
+        }
+    }
+
+    private static HashMap map = new HashMap();
+    
+    static {
+        map.put("com.ibm.icu.util.TimeZone", new TimeZoneHandler());
+        map.put("com.ibm.icu.util.SimpleTimeZone", new SimpleTimeZoneHandler());
+        map.put("com.ibm.icu.util.RuleBasedTimeZone", new RuleBasedTimeZoneHandler());
+        map.put("com.ibm.icu.util.VTimeZone", new VTimeZoneHandler());
+        map.put("com.ibm.icu.util.DateTimeRule", new DateTimeRuleHandler());
+        map.put("com.ibm.icu.util.AnnualTimeZoneRule", new AnnualTimeZoneRuleHandler());
+        map.put("com.ibm.icu.util.InitialTimeZoneRule", new InitialTimeZoneRuleHandler());
+        map.put("com.ibm.icu.util.TimeArrayTimeZoneRule", new TimeArrayTimeZoneRuleHandler());
+        map.put("com.ibm.icu.util.ULocale", new ULocaleHandler());
+        map.put("com.ibm.icu.util.Currency", new CurrencyHandler());
+        map.put("com.ibm.icu.impl.JavaTimeZone", new JavaTimeZoneHandler());
+        map.put("com.ibm.icu.impl.OlsonTimeZone", new OlsonTimeZoneHandler());
+        map.put("com.ibm.icu.impl.TimeZoneAdapter", new TimeZoneAdapterHandler());
+        map.put("com.ibm.icu.math.BigDecimal", new BigDecimalHandler());
+        map.put("com.ibm.icu.math.MathContext", new MathContextHandler());
+        
+        map.put("com.ibm.icu.text.NumberFormat", new FormatTests.NumberFormatHandler());
+        map.put("com.ibm.icu.text.DecimalFormat", new FormatTests.DecimalFormatHandler());
+        map.put("com.ibm.icu.text.RuleBasedNumberFormat", new FormatTests.RuleBasedNumberFormatHandler());
+        map.put("com.ibm.icu.text.CurrencyPluralInfo", new FormatTests.CurrencyPluralInfoHandler());
+        map.put("com.ibm.icu.text.DecimalFormatSymbols", new FormatTests.DecimalFormatSymbolsHandler());
+        map.put("com.ibm.icu.text.MessageFormat", new FormatTests.MessageFormatHandler());
+        map.put("com.ibm.icu.text.DateFormat", new FormatTests.DateFormatHandler());
+        map.put("com.ibm.icu.text.DateFormatSymbols", new FormatTests.DateFormatSymbolsHandler());
+        map.put("com.ibm.icu.util.DateInterval", new DateIntervalHandler());
+        map.put("com.ibm.icu.text.DateIntervalFormat", new FormatTests.DateIntervalFormatHandler());
+        map.put("com.ibm.icu.text.DateIntervalInfo", new FormatTests.DateIntervalInfoHandler());
+        map.put("com.ibm.icu.text.DateIntervalInfo$PatternInfo", new FormatTests.PatternInfoHandler());
+        map.put("com.ibm.icu.text.SimpleDateFormat", new FormatTests.SimpleDateFormatHandler());
+        map.put("com.ibm.icu.text.ChineseDateFormat", new FormatTests.ChineseDateFormatHandler());
+        map.put("com.ibm.icu.text.ChineseDateFormatSymbols", new FormatTests.ChineseDateFormatSymbolsHandler());
+        map.put("com.ibm.icu.impl.DateNumberFormat", new FormatTests.DateNumberFormatHandler());
+        map.put("com.ibm.icu.text.PluralFormat", new FormatTests.PluralFormatHandler());
+        map.put("com.ibm.icu.text.PluralRules", new FormatTests.PluralRulesHandler());
+        map.put("com.ibm.icu.text.TimeUnitFormat", new FormatTests.TimeUnitFormatHandler());
+
+        map.put("com.ibm.icu.util.Calendar", new CalendarTests.CalendarHandler());
+        map.put("com.ibm.icu.util.BuddhistCalendar", new CalendarTests.BuddhistCalendarHandler());
+        map.put("com.ibm.icu.util.ChineseCalendar", new CalendarTests.ChineseCalendarHandler());
+        map.put("com.ibm.icu.util.CopticCalendar", new CalendarTests.CopticCalendarHandler());
+        map.put("com.ibm.icu.util.EthiopicCalendar", new CalendarTests.EthiopicCalendarHandler());
+        map.put("com.ibm.icu.util.GregorianCalendar", new CalendarTests.GregorianCalendarHandler());
+        map.put("com.ibm.icu.util.HebrewCalendar", new CalendarTests.HebrewCalendarHandler());
+        map.put("com.ibm.icu.util.IndianCalendar", new CalendarTests.IndianCalendarHandler());
+        map.put("com.ibm.icu.util.IslamicCalendar", new CalendarTests.IslamicCalendarHandler());
+        map.put("com.ibm.icu.util.JapaneseCalendar", new CalendarTests.JapaneseCalendarHandler());
+        map.put("com.ibm.icu.util.TaiwanCalendar", new CalendarTests.TaiwanCalendarHandler());
+        
+        map.put("com.ibm.icu.text.ArabicShapingException", new ExceptionTests.ArabicShapingExceptionHandler());
+        map.put("com.ibm.icu.text.StringPrepParseException", new ExceptionTests.StringPrepParseExceptionHandler());
+        map.put("com.ibm.icu.util.UResourceTypeMismatchException", new ExceptionTests.UResourceTypeMismatchExceptionHandler());
+        map.put("com.ibm.icu.impl.InvalidFormatException", new ExceptionTests.InvalidFormatExceptionHandler());
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        map.put("com.ibm.icu.text.NumberFormat$Field", new FormatTests.NumberFormatFieldHandler());
+        map.put("com.ibm.icu.text.DateFormat$Field", new FormatTests.DateFormatFieldHandler());
+        map.put("com.ibm.icu.text.ChineseDateFormat$Field", new FormatTests.ChineseDateFormatFieldHandler());
+        map.put("com.ibm.icu.text.MessageFormat$Field", new FormatTests.MessageFormatFieldHandler());
+//#endif
+        map.put("com.ibm.icu.impl.duration.BasicDurationFormat", new FormatTests.BasicDurationFormatHandler());
+        map.put("com.ibm.icu.impl.RelativeDateFormat", new FormatTests.RelativeDateFormatHandler());
+    }
+    
+    public SerializableTest()
+    {
+        super(
+            new String[] {
+                "com.ibm.icu.dev.test.serializable.CoverageTest",
+                "com.ibm.icu.dev.test.serializable.CompatibilityTest"},
+            "All Serializable Tests"
+        );
+    }
+
+    public static final String CLASS_TARGET_NAME  = "Serializable";
+
+    public static void main(String[] args)
+    {
+        SerializableTest test = new SerializableTest();
+        
+        test.run(args);
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java b/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java
new file mode 100644
index 0000000..e9602ee
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java
@@ -0,0 +1,61 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.serializable;
+
+import com.ibm.icu.util.VersionInfo;
+
+import java.net.URL;
+
+/**
+ * This class writes the test objects for each class to a file. The work is
+ * actually done by the superclass, CoverageTest. This class just constructs
+ * a CoverageTest w/ a non-null path, which tells it to write the data.
+ * 
+ */
+public class SerializableWriter extends CoverageTest
+{
+    public SerializableWriter(String path)
+    {
+        super(path);
+    }
+    
+    private static String folderName()
+    {
+        int major = VersionInfo.ICU_VERSION.getMajor();
+        int minor = VersionInfo.ICU_VERSION.getMinor();
+        int milli = VersionInfo.ICU_VERSION.getMilli();
+        int micro = VersionInfo.ICU_VERSION.getMicro();
+        StringBuffer result = new StringBuffer("ICU_");
+        
+        result.append(major);
+        result.append(".");
+        result.append(minor);
+        
+        if (milli != 0 || micro != 0) {
+            result.append(".");
+            result.append(milli);
+            
+            if (micro != 0) {
+                result.append(".");
+                result.append(micro);
+            }
+        }
+        
+        return result.toString();
+    }
+
+    public static void main(String[] args)
+    {
+        URL dataURL = SerializableWriter.class.getResource("data");
+        CoverageTest test = new SerializableWriter(dataURL.getPath() + "/" + folderName());
+        
+        test.run(args);
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 0000000..721be48
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1b5de397eefd05cdb5ecfe7e7c9108d9cd850a96ea2740cf0178b48c4a6c0638
+size 12256
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 0000000..b8d739c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2bc70590d22e004cea558e5bc71e43f5b925288a2e2e740e48427bae9a340c5
+size 12689
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat
new file mode 100644
index 0000000..f7fdd56
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f98076a5c5a606c20e2a049bdcf0ab2e615c54ee8e54d5757fb5c098b90d1273
+size 520
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat
new file mode 100644
index 0000000..32df3de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57a0769d52aeb561113d877592e03a42106ea2a80ec7b59ebb812deb7788c170
+size 595
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat
new file mode 100644
index 0000000..c28e485
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85080987b76bbe950592d735125d1526dd68d2b538466bdcf06d827ba0fcf31d
+size 6733
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..f112136
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86eb5737bc3bc555f85379d4aa4e5fbf903351db0efbff9ee09d8650911f91fb
+size 182280
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..8417cf7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:026cebad3937dacb0f55f6efd24a3d7db7cfa412900a21530b2e09c3104fe987
+size 26103
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 0000000..84705ec
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3bdef98ad9923682fcad505f170258dd8b1471d2f9cb4b57131e6ac09d2a2456
+size 48532
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..37f5dec
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:779e20204f5f6a3b379465e335a75d0cff6ade0d77f0fbee1f12b43488c8c25a
+size 25664
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat
new file mode 100644
index 0000000..0c39d21
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2122124de82ddc63b662abbcd0b3b8c18c04b775550578a574fe696d0e978b7c
+size 6664
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 0000000..465598f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26aef5c5eda1e07b967f08d00060f00b07a34b6a4829014ed0f33ae7663d1c21
+size 3173
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat
new file mode 100644
index 0000000..9229786
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fb0b44db5ed3fee64df4250fbe550115d24c24494e905504788cb1979e48dd4
+size 641
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat
new file mode 100644
index 0000000..fecd40b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7920d829dfcd660cf5d3e8d3be3f9f96d646cd0348b13abd80c4f133989a63a
+size 2822
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat
new file mode 100644
index 0000000..977493d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a15603db38fbde9844fe1d51eb7560083a06ffa2d4eb040e9eae05b3d92c7a84
+size 53971
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..19cc06e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f336250a58d6e11bad571dfdafdeb85b9484ecdac4744c0bd937629ab996e0c
+size 177586
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat
new file mode 100644
index 0000000..696d498
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11ce2fd0fee67d510bc04f081133d34d056e822ad53508f2ed7ba6b2d6816551
+size 11226
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..a385edb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3071e5ec6a9402b1ee0cfba0e76569e4837f6bcad7bf0f06990bfb31a259eb2e
+size 2344
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat
new file mode 100644
index 0000000..c1c10a5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ba63ec43c4c645d55515d62fd5b69db161ae483592079724846f4076fee1179
+size 3146
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..264e18d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cef07a4abc3ee47d6da1e30c2eb54cbad3e3f084b855ad6a1ab2ccbcea8738fd
+size 2195
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..bc49f0ef9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c78d05c4c1368cdb159baa02ce1fd5c8c295376836079c0b33d775cc6cf7fff1
+size 2964
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat
new file mode 100644
index 0000000..23fa977
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98726d41fcbe24957d2b69a66f20887ad757821d691d48e971851d9c64aa7972
+size 351
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..d250567
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c0b5d9815dfe33d1ff5750e3d6a636c2cd8470ab28040b13f2f5794f33d30643
+size 2256
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat
new file mode 100644
index 0000000..6ca9cb0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d6d08a9c7399943f4071b56c9a8e6a1fe28bfe6a1c89e1321d9aea1064ea818
+size 3155
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..1c7e037
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:79b6497c56ac9a378be6c80d85948d03ef556ae1c6768cccf6d713fd4f1e42f7
+size 2827
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat
new file mode 100644
index 0000000..b88e222
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:961e85416181d3bd7ec8a642f7936e8058ffd92f99f648d9702fbd51971296ff
+size 3011
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..4fc4cfc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da2b4b2c760719e70756a8bd0415c1bb8c7f8e7719350e77fb32c03118722e41
+size 2342
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat
new file mode 100644
index 0000000..0ed26b9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b83a9c167b5e1813fce7ee704aa9ce29cde617a29960d857d03b20a547ad4c1f
+size 1265
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat
new file mode 100644
index 0000000..9f44be5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96b9a210f9d06c06622c5798015d42674903a07411b002d7b2f1a39f66f2fc93
+size 1288
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat
new file mode 100644
index 0000000..11923e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d95304fb413153d2d62a811ad7e4d11a95017a50e627fce7c60336ecbc0ba26
+size 392
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 0000000..22aaf7d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3c90e8f037a12ebc528117d98370fbc97a342335fc71c861d79c1d569c1c2d0
+size 6798
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat
new file mode 100644
index 0000000..371c631
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6fd6014f58302f177fa23f9a691bbd5f14212b5651eeadbfed7e87e568a654f5
+size 1686
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat
new file mode 100644
index 0000000..ea39424
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:569297bacccf8858c59dd944f7cc5b80a337255b239cee67d87f54feddacc1d9
+size 22099
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 0000000..1da2aef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01877ace6f13be237bced72453b55685cbd0742e5ae79cbf9627392286de488c
+size 13642
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat
new file mode 100644
index 0000000..05d388b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ddf741c9ae0e5b8e6f7892926b195ca13d8b59dcafd12a2bd7b24b3a4325f7b7
+size 9670
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 0000000..be4cec5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e8994f28289befdf4b5b995cb6a905dc3a29af86127dd15b2297433d4042ab7f
+size 14075
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
new file mode 100644
index 0000000..236f236
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be22e604c7544d27c107537930361e3526870a26c1a249e2d9f41ddc1d3239f5
+size 383
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat
new file mode 100644
index 0000000..f7fdd56
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f98076a5c5a606c20e2a049bdcf0ab2e615c54ee8e54d5757fb5c098b90d1273
+size 520
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat
new file mode 100644
index 0000000..32df3de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57a0769d52aeb561113d877592e03a42106ea2a80ec7b59ebb812deb7788c170
+size 595
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat
new file mode 100644
index 0000000..8dd87ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32568cce8657f4965c0713b602e41fe802a7c7b7030fbe4bec2431e3a5553fe2
+size 22099
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
new file mode 100644
index 0000000..80067c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db0685c5127565fd7ce341056104753b6599826d54d06fde4f9e4f2bd734544f
+size 312
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..c92e303
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4db90f5b42aa7d0c5cc8addd259f3b5de0f92c3a99ec45ec6a02bbd7919a7b02
+size 112689
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..7dc7929
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd32ccc491187bbac29f204c9a20e206e8974c68deb590989440fcd1889261b8
+size 24454
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat
new file mode 100644
index 0000000..47c1ebf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e237efb9ce85357480d9dd5d8d0911ce008744c51778c42e21c9d206a8252095
+size 792
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 0000000..cc55899
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9fc4257fec856dbeeb6300237a44667c3d474cb420eec71dc8682ccaa242dd9
+size 47710
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..703795c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28960d211ae3502f72b82a5ea32cb14181c4f1c12a69c8baec68ab75994917a5
+size 25976
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat
new file mode 100644
index 0000000..84508e4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0f4eb96301da935b7cc6bf481d41509d9b399aa9137f4fdf524cc84e75aa791a
+size 7188
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 0000000..bdcc1f7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c6bc7e731c503b37bfb666e1d90bf1cc49acaf970ac2a8f3e3918029d2595fb
+size 3161
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat
new file mode 100644
index 0000000..052ec8cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a6147211fa9bf91b682c75e5bf6609143e9b41ff952f3349fb05833dc798584
+size 249
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat
new file mode 100644
index 0000000..6c00c11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4f400ed3b53b1491583ec31dbc21f46dc5d28660e72f1c4408a05a65648f4e3
+size 759
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat
new file mode 100644
index 0000000..f430468
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00baeb776002e737189513debb0d9634dcdf6821a55f9d138ddd207d5bdd90b6
+size 449
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat
new file mode 100644
index 0000000..184a2ad
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03c90c2634cf06f8af8889216fa0f9a5150d9db1ba68c82cadbf98da15789490
+size 2921
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat
new file mode 100644
index 0000000..2794d1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bca493a34e00d438e394276c1e98537b5046cc6cb912d8987b16708732a9dd10
+size 3384
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat
new file mode 100644
index 0000000..5fb674e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b75ca3d7e12f9ac313ed19aed5d7f33a221e0ec36e610c8be256e2bf3abdc746
+size 2627
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
new file mode 100644
index 0000000..c2ff172
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98ad4729c2afa820e0cc4c6a9446257fefca834696e377357d35bc494bdaaf92
+size 53194
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..4afe1b5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:023a7eecdf3a0490a01aea867e53ab49c2a8e17d60a7ef8d51c2debd44d4e71e
+size 122834
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat
new file mode 100644
index 0000000..e40d7e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4faaa5ac4732315928186cca4c34d00b1e7bc6603cf894c1014036f92bc20d94
+size 26674
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
new file mode 100644
index 0000000..74ffe4b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b2e5cb7636e2141e6d937d0fdf2d3b824a4319ece4c2b1bfd294299519d6987
+size 898
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..d55aca0
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d0b4d29818c4f042068513e9becd54d7c7d6542b1adfd9d7b516effb99fa0c7
+size 2402
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat
new file mode 100644
index 0000000..0f20440
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea0ef63b18485d11cc37ba06b82ff2298958dd57652c6697b1fecca5c1e25290
+size 3316
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..34cca1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4900b2a4ab7c715bb3ef31fac3d6cd1e7d11fa7cdd5ddf3196937f3e9b9a9ad
+size 2253
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..63ff746
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:390ee95377769c20e4ac907d41e63a9330973e350c15503b12f66f440a2bd8ae
+size 2942
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat
new file mode 100644
index 0000000..23fa977
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98726d41fcbe24957d2b69a66f20887ad757821d691d48e971851d9c64aa7972
+size 351
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat
new file mode 100644
index 0000000..7f31f10
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95e547b62781546a7fa18adbb52bb14a39f766f24c3f136789504cd32d72570b
+size 324
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..ffe7f39
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61e34b6c6663a872ebbc1b1a77a9928d72798ff603de8b4c65ee75aec3dd7e43
+size 2314
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat
new file mode 100644
index 0000000..424526b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b0eff3437a10b019df6ae9b3185dd2620dcbba29cab431b7fe687dc2e215a64
+size 3325
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..0332370
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1594fefa176e9ae5fcd32cefb5ad693b8030acb1fc75f0e2eff222e15ab6be73
+size 2885
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat
new file mode 100644
index 0000000..601b987
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b8d04d3518db89ab37efd8ef33ee12c875444dcdf1c58be35dca5e47f2e3b4c1
+size 2194
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat
new file mode 100644
index 0000000..faea30f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e87a78c208e64f9a1a791d6a207f1372700b8cb66e8c06296d3ca918bb8d115
+size 241
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat
new file mode 100644
index 0000000..025c8c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54fd7bdaf0d3fbe145e56a90768d425ff84de250faf0f11d958d1fb45bb05382
+size 3111
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..cc1cc8a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdf77fb3b4353164d61687af6ba10cef11c001f70c785b7f91f9624d3d6d2e80
+size 2440
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat
new file mode 100644
index 0000000..9537c28
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f811ee6e4cd76878e700c3eafb0627b3b0cb0524668dc844b0c9b055e649e682
+size 1401
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat
new file mode 100644
index 0000000..faa1a48
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09693cbb7c8d078a5d9696dda0a410916c41f2503320ba76e7d3449b996d8e26
+size 1152
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat
new file mode 100644
index 0000000..872bead
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:213b9dfbf87d4def0e67db118b9af9ebf3ca2914b86a2438de96adf0d3db7a60
+size 2487
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
new file mode 100644
index 0000000..20c8438
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:250f185d9bedd33f314c4e04498c43f9c5d921a086fae76b720e53b23db6b822
+size 312
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat
new file mode 100644
index 0000000..cb919cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09321171f7b79255974c2745e8efe5d18da5be4f80ede16f4451220523bd8762
+size 1271
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat
new file mode 100644
index 0000000..7bbeb2a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2097a6ceea62f53f9176b507ba431c7a379d5fc5d33f8b5f123dfb9e3b37246d
+size 365
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 0000000..bf7febd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02ae6d813c667e5c03fe0e2d384cf82bd161d9857354c1d1a783e9a35489eef5
+size 22324
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat
new file mode 100644
index 0000000..f6f93f9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9df7044f6572b83cff5a8d04fde369eaa03e05c9716a687bb44a8a98b1ef32ff
+size 1897
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat
new file mode 100644
index 0000000..371c631
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6fd6014f58302f177fa23f9a691bbd5f14212b5651eeadbfed7e87e568a654f5
+size 1686
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat
new file mode 100644
index 0000000..ea39424
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:569297bacccf8858c59dd944f7cc5b80a337255b239cee67d87f54feddacc1d9
+size 22099
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat
new file mode 100644
index 0000000..d26405a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e63ce463b9a06b27f37ec0eb559b40540f55f9c363db1a32052b4db85797dc84
+size 2929
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 0000000..ab004dc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:914c7b93800814116e0eb2ee8c74b96071cbdffde729fb2bf0d86d821a208fd0
+size 13730
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat
new file mode 100644
index 0000000..a2100ec
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81065f4f18fb65dd69a43c7081aa0ea93615bec88c10bb85f76198c66e6417fd
+size 10019
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 0000000..2d3869e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d0a5788de3c755cf4d2ab7a0c8c0c41a7e87b67a2039ecedd00b6d0cb2ebaca8
+size 14163
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat
new file mode 100644
index 0000000..236f236
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be22e604c7544d27c107537930361e3526870a26c1a249e2d9f41ddc1d3239f5
+size 383
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat
new file mode 100644
index 0000000..f7fdd56
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f98076a5c5a606c20e2a049bdcf0ab2e615c54ee8e54d5757fb5c098b90d1273
+size 520
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat
new file mode 100644
index 0000000..32df3de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57a0769d52aeb561113d877592e03a42106ea2a80ec7b59ebb812deb7788c170
+size 595
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat
new file mode 100644
index 0000000..8dd87ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32568cce8657f4965c0713b602e41fe802a7c7b7030fbe4bec2431e3a5553fe2
+size 22099
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat
new file mode 100644
index 0000000..80067c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db0685c5127565fd7ce341056104753b6599826d54d06fde4f9e4f2bd734544f
+size 312
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..0fd9fb6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:125a737100e73a642f4281fbc8a563e80366526f068d378904b0c7f032074bfe
+size 110463
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..9d8d6a3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:15709ccd0c198a15a1764561d85e33846cb43c72b8160d63d078a1d2e50bd990
+size 22081
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat
new file mode 100644
index 0000000..47c1ebf
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e237efb9ce85357480d9dd5d8d0911ce008744c51778c42e21c9d206a8252095
+size 792
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 0000000..7d60239
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:618468ea64ce34f41423307cda4c09693dff7624e29382a20a9276a40fdbf22c
+size 44237
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..5286644
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:460d36ca4e0222f7ee234b4b6295d2205cba80f4eacab289acdf3255c8c9503f
+size 22503
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat
new file mode 100644
index 0000000..a598558
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:554712abddf6ebcdbd1a650eefada4374f90ac56732c2855708767919e4ee8c1
+size 8997
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
new file mode 100644
index 0000000..e660cb3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b5593c919fb29bab1d8ca90b6bd69db8669386ec4088da85b8a8ec93d1d8acd
+size 270
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat
new file mode 100644
index 0000000..9c23f8a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89fdd93effcada78b63179de69200d84f0e14aeb93fa1241bf39c83f8a03f3eb
+size 572
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat
new file mode 100644
index 0000000..0ecea63
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0cab5ef21db0dadf0f3c59ca6bfae37d798b24df193d16a5c75ca2f0a43bc8e9
+size 7181
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 0000000..bdcc1f7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c6bc7e731c503b37bfb666e1d90bf1cc49acaf970ac2a8f3e3918029d2595fb
+size 3161
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat
new file mode 100644
index 0000000..052ec8cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a6147211fa9bf91b682c75e5bf6609143e9b41ff952f3349fb05833dc798584
+size 249
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat
new file mode 100644
index 0000000..6c00c11
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4f400ed3b53b1491583ec31dbc21f46dc5d28660e72f1c4408a05a65648f4e3
+size 759
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat
new file mode 100644
index 0000000..f430468
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00baeb776002e737189513debb0d9634dcdf6821a55f9d138ddd207d5bdd90b6
+size 449
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat
new file mode 100644
index 0000000..08bcabd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:73acf53856c55403ddae17ae9a487fce3b6b94cc581578a2ebc113a05f0969f0
+size 2921
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat
new file mode 100644
index 0000000..7f97e47
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f843c4a4b61b51d903a9664b8e0474c4bdc70be966066ed10797c8c8ae5448de
+size 3401
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat
new file mode 100644
index 0000000..3c81bbe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00be589e07cd6334e38abe822b865562a41d7f46de10e2ac27d3797fd71cb16f
+size 2980
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat
new file mode 100644
index 0000000..c2ff172
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98ad4729c2afa820e0cc4c6a9446257fefca834696e377357d35bc494bdaaf92
+size 53194
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..f607717
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26678c923ccd371c6e6ad4a15647f1460ee2bc5ca98f50cbe34f2bcf3fd79bb9
+size 119361
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat
new file mode 100644
index 0000000..e40d7e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4faaa5ac4732315928186cca4c34d00b1e7bc6603cf894c1014036f92bc20d94
+size 26674
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat
new file mode 100644
index 0000000..3c68a89
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:58a2924f58df0bf9c02eb46a62daa386bf59a3d300b58cce157eef716596e762
+size 408
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat
new file mode 100644
index 0000000..74ffe4b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b2e5cb7636e2141e6d937d0fdf2d3b824a4319ece4c2b1bfd294299519d6987
+size 898
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..1f2d7b2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b8c3b5d0501ad0110501f01a4d8aa1ddacd573d755fa0eb3eefee2d1690fb4f2
+size 2402
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat
new file mode 100644
index 0000000..05b3c77
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3100e17cb6a9c65cfa1ef09c25ee1d3c890db486128898df86421abe9f013786
+size 3316
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..1154345
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a08b55d6da351f680960fb36e2564a2a37e8866399bfa2925be2aa060d68392
+size 2253
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..0f54029
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0085bba20777e886a1a53cccf910f98c960d232697d27b6fda534c2e60598872
+size 2842
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat
new file mode 100644
index 0000000..eacaa8c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b31014c3d019e89f0575a637c0ad756c00ecababe2aa009ee338b59911cd403
+size 349
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat
new file mode 100644
index 0000000..dde6bea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23ea1aac56dc3581502d59b006be4e963c0dcf7d7fa9d205480523c5c2c9b34a
+size 139
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat
new file mode 100644
index 0000000..7f31f10
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95e547b62781546a7fa18adbb52bb14a39f766f24c3f136789504cd32d72570b
+size 324
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..77a9cc9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49929366e329211dacc571fd5605d83f6438e02e01cd9d3cd8043011df877a6e
+size 2308
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat
new file mode 100644
index 0000000..cc81bc6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:737a9db8f28e6f983b4ca1ee6441e5f4e83323946863e889dd9b202a3ceaaad6
+size 3325
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..36fca03
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:332d93706a0a6ec1583991844b0b55b4bd564bf94a2dc84f4612fdf1077dc29e
+size 2885
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat
new file mode 100644
index 0000000..7175c8a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f033679c3f2a5179bc16d4e70095ef231c4e45eb426315e13e39169c907f124d
+size 2194
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat
new file mode 100644
index 0000000..faea30f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e87a78c208e64f9a1a791d6a207f1372700b8cb66e8c06296d3ca918bb8d115
+size 241
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat
new file mode 100644
index 0000000..5f22985
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7efacde0ae05f831c2a6a5051918d43c6144d07f17c3b025589e0bc74a2f564c
+size 3111
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..db4c6be
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:52c7f5b0dd264e77e793408c4e802f162c9e9dab5ede44f12adee4faac0d0474
+size 2440
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat
new file mode 100644
index 0000000..9537c28
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f811ee6e4cd76878e700c3eafb0627b3b0cb0524668dc844b0c9b055e649e682
+size 1401
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat
new file mode 100644
index 0000000..faa1a48
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09693cbb7c8d078a5d9696dda0a410916c41f2503320ba76e7d3449b996d8e26
+size 1152
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat
new file mode 100644
index 0000000..398a23b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a792686b660e7a90598ba70dc00c00cccdc044852709be90c26a882945ea677
+size 2487
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
new file mode 100644
index 0000000..20c8438
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:250f185d9bedd33f314c4e04498c43f9c5d921a086fae76b720e53b23db6b822
+size 312
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat
new file mode 100644
index 0000000..cb919cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09321171f7b79255974c2745e8efe5d18da5be4f80ede16f4451220523bd8762
+size 1271
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat
new file mode 100644
index 0000000..7bbeb2a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2097a6ceea62f53f9176b507ba431c7a379d5fc5d33f8b5f123dfb9e3b37246d
+size 365
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 0000000..bf7febd
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02ae6d813c667e5c03fe0e2d384cf82bd161d9857354c1d1a783e9a35489eef5
+size 22324
diff --git a/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat
new file mode 100644
index 0000000..f6f93f9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9df7044f6572b83cff5a8d04fde369eaa03e05c9716a687bb44a8a98b1ef32ff
+size 1897
diff --git a/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java b/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
new file mode 100644
index 0000000..fdbd8d7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
@@ -0,0 +1,503 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.shaping;
+
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.ArabicShaping;
+import com.ibm.icu.text.ArabicShapingException;
+
+/**
+ * Regression test for Arabic shaping.
+ */
+public class ArabicShapingRegTest extends TestFmwk {
+
+    /* constants copied from ArabicShaping for convenience */
+
+    public static final int LENGTH_GROW_SHRINK = 0;
+    public static final int LENGTH_FIXED_SPACES_NEAR = 1;
+    public static final int LENGTH_FIXED_SPACES_AT_END = 2;
+    public static final int LENGTH_FIXED_SPACES_AT_BEGINNING = 3;
+
+    public static final int TEXT_DIRECTION_LOGICAL = 0;
+    public static final int TEXT_DIRECTION_VISUAL_LTR = 4;
+
+    public static final int LETTERS_NOOP = 0;
+    public static final int LETTERS_SHAPE = 8;
+    public static final int LETTERS_SHAPE_TASHKEEL_ISOLATED = 0x18;
+    public static final int LETTERS_UNSHAPE = 0x10;
+
+    public static final int DIGITS_NOOP = 0;
+    public static final int DIGITS_EN2AN = 0x20;
+    public static final int DIGITS_AN2EN = 0x40;
+    public static final int DIGITS_EN2AN_INIT_LR = 0x60;
+    public static final int DIGITS_EN2AN_INIT_AL = 0x80;
+//    private static final int DIGITS_RESERVED = 0xa0;
+
+    public static final int DIGIT_TYPE_AN = 0;
+    public static final int DIGIT_TYPE_AN_EXTENDED = 0x100;
+
+    public static class TestData {
+        public int type;
+        public String source;
+        public int flags;
+        public String result;
+        public int length;
+        public Class error;
+
+        public static final int STANDARD = 0;
+        public static final int PREFLIGHT = 1;
+        public static final int ERROR = 2;
+
+        public static TestData standard(String source, int flags, String result) {
+            return new TestData(STANDARD, source, flags, result, 0, null);
+        }
+
+        public static TestData preflight(String source, int flags, int length) {
+            return new TestData(PREFLIGHT, source, flags, null, length, null);
+        }
+
+        public static TestData error(String source, int flags, Class error) {
+            return new TestData(ERROR, source, flags, null, 0, error);
+        }
+
+        private TestData(int type, String source, int flags, String result, int length, Class error) {
+            this.type = type;
+            this.source = source;
+            this.flags = flags;
+            this.result = result;
+            this.length = length;
+            this.error = error;
+        }
+
+        private static final String[] typenames = { "standard", "preflight", "error" };
+
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            buf.append("[\n");
+            buf.append(typenames[type]);
+            buf.append(",\n");
+            if (source == null) {
+                buf.append("null");
+            } else {
+                buf.append('"');
+                buf.append(escapedString(source));
+                buf.append('"');
+            }
+            buf.append(",\n");
+            buf.append(Integer.toHexString(flags));
+            buf.append(",\n");
+            if (result == null) {
+                buf.append("null");
+            } else {
+                buf.append('"');
+                buf.append(escapedString(result));
+                buf.append('"');
+            }
+            buf.append(",\n");
+            buf.append(length);
+            buf.append(",\n");
+            buf.append(error);
+            buf.append(']');
+            return buf.toString();
+        }
+    }
+
+    private static final String lamAlefSpecialVLTR =
+        "\u0020\u0646\u0622\u0644\u0627\u0020" +
+         "\u0646\u0623\u064E\u0644\u0627\u0020" +
+         "\u0646\u0627\u0670\u0644\u0627\u0020" +
+         "\u0646\u0622\u0653\u0644\u0627\u0020" +
+         "\u0646\u0625\u0655\u0644\u0627\u0020" +
+         "\u0646\u0622\u0654\u0644\u0627\u0020" +
+         "\uFEFC\u0639";
+
+    private static final String tashkeelSpecialVLTR =
+        "\u064A\u0628\u0631\u0639\u0020" +
+        "\u064A\u0628\u0651\u0631\u064E\u0639\u0020" +
+        "\u064C\u064A\u0628\u0631\u064F\u0639\u0020" +
+        "\u0628\u0670\u0631\u0670\u0639\u0020" +
+        "\u0628\u0653\u0631\u0653\u0639\u0020" +
+        "\u0628\u0654\u0631\u0654\u0639\u0020" +
+        "\u0628\u0655\u0631\u0655\u0639\u0020";
+
+    private static final String logicalUnshape =
+        "\u0020\u0020\u0020\uFE8D\uFEF5\u0020\uFEE5\u0020\uFE8D\uFEF7\u0020" +
+        "\uFED7\uFEFC\u0020\uFEE1\u0020\uFE8D\uFEDF\uFECC\uFEAE\uFE91\uFEF4" +
+        "\uFE94\u0020\uFE8D\uFEDF\uFEA4\uFEAE\uFE93\u0020\u0020\u0020\u0020";
+
+    private static final String numSource =
+        "\u0031" +  /* en:1 */
+        "\u0627" +  /* arabic:alef */
+        "\u0032" +  /* en:2 */
+        "\u06f3" +  /* an:3 */
+        "\u0061" +  /* latin:a */
+        "\u0034";   /* en:4 */
+
+    private static final TestData[] standardTests = {
+        /* lam alef special visual ltr */
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\ufee5\u0020\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\ufe76\ufef7\ufe8d\u0020" +
+                          "\ufee5\u0020\u0670\ufefb\ufe8d\u0020" +
+                          "\ufee5\u0020\u0653\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\u0655\ufef9\ufe8d\u0020" +
+                          "\ufee5\u0020\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb\u0020\u0020\u0020\u0020" +
+                          "\u0020\u0020"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0020\u0020\u0020\u0020\u0020\u0020" +
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_GROW_SHRINK,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+
+        /* TASHKEEL */
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\ufee5\u0020\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\ufe76\ufef7\ufe8d\u0020" +
+                          "\ufee5\u0020\u0670\ufefb\ufe8d\u0020" +
+                          "\ufee5\u0020\u0653\ufef5\ufe8d\u0020" +
+                          "\ufee5\u0020\u0655\ufef9\ufe8d\u0020" +
+                          "\ufee5\u0020\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb\u0020\u0020\u0020\u0020" +
+                          "\u0020\u0020"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0020\u0020\u0020\u0020\u0020\u0020" +
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+        TestData.standard(lamAlefSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_GROW_SHRINK,
+                          "\u0020\ufee5\ufef5\ufe8d\u0020\ufee5" +
+                          "\ufe76\ufef7\ufe8d\u0020\ufee5\u0670" +
+                          "\ufefb\ufe8d\u0020\ufee5\u0653\ufef5" +
+                          "\ufe8d\u0020\ufee5\u0655\ufef9\ufe8d" +
+                          "\u0020\ufee5\u0654\ufef5\ufe8d\u0020" +
+                          "\ufefc\ufecb"),
+
+        /* tashkeel special visual ltr */
+        TestData.standard(tashkeelSpecialVLTR,
+                          LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\ufef2\ufe91\ufeae\ufecb\u0020" +
+                          "\ufef2\ufe91\ufe7c\ufeae\ufe77\ufecb\u0020" +
+                          "\ufe72\ufef2\ufe91\ufeae\ufe79\ufecb\u0020" +
+                          "\ufe8f\u0670\ufeae\u0670\ufecb\u0020" +
+                          "\ufe8f\u0653\ufeae\u0653\ufecb\u0020" +
+                          "\ufe8f\u0654\ufeae\u0654\ufecb\u0020" +
+                          "\ufe8f\u0655\ufeae\u0655\ufecb\u0020"),
+
+        TestData.standard(tashkeelSpecialVLTR,
+                          LETTERS_SHAPE_TASHKEEL_ISOLATED | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR,
+                          "\ufef2\ufe91\ufeae\ufecb\u0020" +
+                          "\ufef2\ufe91\ufe7c\ufeae\ufe76\ufecb\u0020" +
+                          "\ufe72\ufef2\ufe91\ufeae\ufe78\ufecb\u0020" +
+                          "\ufe8f\u0670\ufeae\u0670\ufecb\u0020" +
+                          "\ufe8f\u0653\ufeae\u0653\ufecb\u0020" +
+                          "\ufe8f\u0654\ufeae\u0654\ufecb\u0020" +
+                          "\ufe8f\u0655\ufeae\u0655\ufecb\u0020"),
+
+        /* logical unshape */
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_NEAR,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0646\u0020\u0627\u0644\u0623\u0642\u0644\u0627" +
+                          "\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627\u0644\u062d\u0631" +
+                          "\u0629\u0020\u0020\u0020\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_AT_END,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642" +
+                          "\u0644\u0627\u0020\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627" +
+                          "\u0644\u062d\u0631\u0629\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                          "\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642\u0644\u0627\u0020" +
+                          "\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627\u0644\u062d\u0631" +
+                          "\u0629\u0020\u0020\u0020\u0020"),
+        TestData.standard(logicalUnshape,
+                          LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_GROW_SHRINK,
+                          "\u0020\u0020\u0020\u0627\u0644\u0622\u0020\u0646\u0020\u0627\u0644\u0623\u0020\u0642" +
+                          "\u0644\u0627\u0020\u0645\u0020\u0627\u0644\u0639\u0631\u0628\u064a\u0629\u0020\u0627" +
+                          "\u0644\u062d\u0631\u0629\u0020\u0020\u0020\u0020"),
+
+        /* numbers */
+        TestData.standard(numSource,
+                          DIGITS_EN2AN | DIGIT_TYPE_AN,
+                          "\u0661\u0627\u0662\u06f3\u0061\u0664"),
+        TestData.standard(numSource,
+                          DIGITS_AN2EN | DIGIT_TYPE_AN_EXTENDED,
+                          "\u0031\u0627\u0032\u0033\u0061\u0034"),
+        TestData.standard(numSource,
+                          DIGITS_EN2AN_INIT_LR | DIGIT_TYPE_AN,
+                          "\u0031\u0627\u0662\u06f3\u0061\u0034"),
+        TestData.standard(numSource,
+                          DIGITS_EN2AN_INIT_AL | DIGIT_TYPE_AN_EXTENDED,
+                          "\u06f1\u0627\u06f2\u06f3\u0061\u0034"),
+        TestData.standard(numSource,
+                          DIGITS_EN2AN_INIT_LR | DIGIT_TYPE_AN | TEXT_DIRECTION_VISUAL_LTR,
+                          "\u0661\u0627\u0032\u06f3\u0061\u0034"),
+        TestData.standard(numSource,
+                          DIGITS_EN2AN_INIT_AL | DIGIT_TYPE_AN_EXTENDED | TEXT_DIRECTION_VISUAL_LTR,
+                          "\u06f1\u0627\u0032\u06f3\u0061\u06f4"),
+
+        /* no-op */
+        TestData.standard(numSource,
+                          0,
+                          numSource),
+    };
+
+    private static final TestData[] preflightTests = {
+        /* preflight */
+        TestData.preflight("\u0644\u0627",
+                           LETTERS_SHAPE | LENGTH_GROW_SHRINK,
+                           1),
+
+        TestData.preflight("\u0644\u0627\u0031",
+                           DIGITS_EN2AN | DIGIT_TYPE_AN_EXTENDED | LENGTH_GROW_SHRINK,
+                           3),
+
+        TestData.preflight("\u0644\u0644",
+                           LETTERS_SHAPE | LENGTH_GROW_SHRINK,
+                           2),
+
+        TestData.preflight("\ufef7",
+                           LETTERS_UNSHAPE | LENGTH_GROW_SHRINK,
+                           2),
+    };
+
+    private static final TestData[] errorTests = {
+        /* bad data */
+        TestData.error("\u0020\ufef7\u0644\u0020",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_NEAR,
+                       ArabicShapingException.class),
+
+        TestData.error("\u0020\ufef7",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_AT_END,
+                       ArabicShapingException.class),
+
+        TestData.error("\ufef7\u0020",
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_AT_BEGINNING,
+                       ArabicShapingException.class),
+
+        /* bad options */
+        TestData.error("\ufef7",
+                       0xffffffff,
+                       IllegalArgumentException.class),
+
+        TestData.error("\ufef7",
+                       LETTERS_UNSHAPE | LENGTH_GROW_SHRINK,
+                       ArabicShapingException.class),
+
+        TestData.error(null,
+                       LETTERS_UNSHAPE | LENGTH_FIXED_SPACES_AT_END,
+                       IllegalArgumentException.class),
+    };
+
+    public void testStandard() {
+        for (int i = 0; i < standardTests.length; ++i) {
+            TestData test = standardTests[i];
+
+            Exception ex = null;
+            String result = null;
+            ArabicShaping shaper = null;
+
+            try {
+                shaper = new ArabicShaping(test.flags);
+                result = shaper.shape(test.source);
+            }
+            catch(MissingResourceException e){
+                throw e;
+            }
+            catch (IllegalStateException ie){
+                warnln("IllegalStateException: "+ie.toString());
+                return;
+            }
+            catch (Exception e) {
+                ex = e;
+            }
+
+            if (!test.result.equals(result)) {
+                reportTestFailure(i, test, shaper, result, ex);
+            }
+        }
+    }
+
+    public void testPreflight() {
+        for (int i = 0; i < preflightTests.length; ++i) {
+            TestData test = preflightTests[i];
+
+            Exception ex = null;
+            char src[] = null;
+            int len = 0;
+            ArabicShaping shaper = null;
+
+            if (test.source != null) {
+                src = test.source.toCharArray();
+            }
+
+            try {
+                shaper = new ArabicShaping(test.flags);
+                len = shaper.shape(src, 0, src.length, null, 0, 0);
+            }
+            catch (Exception e) {
+                ex = e;
+            }
+
+            if (test.length != len) {
+                reportTestFailure(i, test, shaper, test.source, ex);
+            }
+        }
+    }
+
+    public void testError() {
+        for (int i = 0; i < errorTests.length; ++i) {
+            TestData test = errorTests[i];
+
+            Exception ex = null;
+            char src[] = null;
+            int len = 0;
+            ArabicShaping shaper = null;
+
+            if (test.source != null) {
+                src = test.source.toCharArray();
+                len = src.length;
+            }
+
+            try {
+                shaper = new ArabicShaping(test.flags);
+                shaper.shape(src, 0, len);
+            }
+            catch (Exception e) {
+                ex = e;
+            }
+
+            if (!test.error.isInstance(ex)) {
+                reportTestFailure(i, test, shaper, test.source, ex);
+            }
+        }
+    }
+
+    public void testEquals()
+    {
+        ArabicShaping as1 = new ArabicShaping(LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR);
+        ArabicShaping as2 = new ArabicShaping(LETTERS_SHAPE | TEXT_DIRECTION_VISUAL_LTR | LENGTH_FIXED_SPACES_NEAR);
+        ArabicShaping as3 = new ArabicShaping(LETTERS_UNSHAPE | TEXT_DIRECTION_LOGICAL | LENGTH_FIXED_SPACES_AT_BEGINNING);
+
+        if (! as1.equals(as1)) {
+            err("as1: " + as1 + " does not equal itself!\n");
+        }
+
+        if (! as1.equals(as2)) {
+            err("as1: " + as1 + ", as2: " + as2 + " are not equal, but should be.\n");
+        }
+
+        if (as1.equals(as3)) {
+            err("as1: " + as1 + ", as3: " + as3 + " are equal but should not be.\n");
+        }
+    }
+
+    public void reportTestFailure(int index, TestData test, ArabicShaping shaper, String result, Exception error) {
+        if (noData() && error != null && error instanceof MissingResourceException ) {
+            warnln(error.getMessage());
+        }
+
+        StringBuffer buf = new StringBuffer();
+        buf.append("*** test failure ***\n");
+        buf.append("index: " + index + "\n");
+        buf.append("test: " + test + "\n");
+        buf.append("shaper: " + shaper + "\n");
+        buf.append("result: " + escapedString(result) + "\n");
+        buf.append("error: " + error + "\n");
+
+        if (result != null && test.result != null && !test.result.equals(result)) {
+            for (int i = 0; i < Math.max(test.result.length(), result.length()); ++i) {
+                String temp = Integer.toString(i);
+                if (temp.length() < 2) {
+                    temp = " ".concat(temp);
+                }
+                char trg = i < test.result.length() ? test.result.charAt(i) : '\uffff';
+                char res = i < result.length() ? result.charAt(i) : '\uffff';
+
+                buf.append("[" + temp + "] ");
+                buf.append(escapedString("" + trg) + " ");
+                buf.append(escapedString("" + res) + " ");
+                if (trg != res) {
+                    buf.append("***");
+                }
+                buf.append("\n");
+            }
+        }
+        err(buf.toString());
+    }
+
+    private static String escapedString(String str) {
+        if (str == null) {
+            return null;
+        }
+
+        StringBuffer buf = new StringBuffer(str.length() * 6);
+        for (int i = 0; i < str.length(); ++i) {
+            char ch = str.charAt(i);
+            buf.append("\\u");
+            if (ch < 0x1000) {
+                buf.append('0');
+            }
+            if (ch < 0x0100) {
+                buf.append('0');
+            }
+            if (ch < 0x0010) {
+                buf.append('0');
+            }
+            buf.append(Integer.toHexString(ch));
+        }
+        return buf.toString();
+    }
+
+    public static void main(String[] args) {
+        try {
+            new ArabicShapingRegTest().run(args);
+        }
+        catch (Exception e) {
+            System.out.println(e);
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java b/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java
new file mode 100644
index 0000000..027335c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java
@@ -0,0 +1,286 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.shaping;
+
+import com.ibm.icu.text.ArabicShaping;
+import com.ibm.icu.text.ArabicShapingException;
+
+/**
+ * Interactive test for Arabic shaping.
+ * Invoke from a command line passing args and strings.  Use '-help' to see description of arguments.
+ */
+public class ArabicShapingTest {
+    private static final int COPY = 0;
+    private static final int INPLACE = 1;
+    private static final int STRING = 2;
+
+    public static final void main(String[] args) {
+        int testtype = COPY;
+        int options = 0;
+        int ss = 0;
+        int sl = -1;
+        int ds = 0;
+        int dl = -1;
+        String text = "$22.4 test 123 \ufef6\u0644\u0622 456 \u0664\u0665\u0666!";
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.charAt(0) == '-') {
+                String opt = arg.substring(1);
+                String val = opt;
+                int index = arg.indexOf(':');
+                if (index != -1) {
+                    opt = opt.substring(0, Math.min(index, 3));
+                    val = arg.substring(index + 1);
+                }
+                
+                if (opt.equalsIgnoreCase("len")) {
+                    options &= ~ArabicShaping.LENGTH_MASK;
+                    if (val.equalsIgnoreCase("gs")) {
+                        options |= ArabicShaping.LENGTH_GROW_SHRINK;
+                    } else if (val.equalsIgnoreCase("sn")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_NEAR;
+                    } else if (val.equalsIgnoreCase("se")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_AT_END;
+                    } else if (val.equalsIgnoreCase("sb")) {
+                        options |= ArabicShaping.LENGTH_FIXED_SPACES_AT_BEGINNING;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dir")) {
+                    options &= ~ArabicShaping.TEXT_DIRECTION_MASK;
+                    if (val.equalsIgnoreCase("log")) {
+                        options |= ArabicShaping.TEXT_DIRECTION_LOGICAL;
+                    } else if (val.equalsIgnoreCase("vis")) {
+                        options |= ArabicShaping.TEXT_DIRECTION_VISUAL_LTR;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("let")) {
+                    options &= ~ArabicShaping.LETTERS_MASK;
+                    if (val.equalsIgnoreCase("no")) {
+                        options |= ArabicShaping.LETTERS_NOOP;
+                    } else if (val.equalsIgnoreCase("sh")) {
+                        options |= ArabicShaping.LETTERS_SHAPE;
+                    } else if (val.equalsIgnoreCase("un")) {
+                        options |= ArabicShaping.LETTERS_UNSHAPE;
+                    } else if (val.equalsIgnoreCase("ta")) {
+                        options |= ArabicShaping.LETTERS_SHAPE_TASHKEEL_ISOLATED;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dig")) {
+                    options &= ~ArabicShaping.DIGITS_MASK;
+                    if (val.equalsIgnoreCase("no")) {
+                        options |= ArabicShaping.DIGITS_NOOP;
+                    } else if (val.equalsIgnoreCase("ea")) {
+                        options |= ArabicShaping.DIGITS_EN2AN;
+                    } else if (val.equalsIgnoreCase("ae")) {
+                        options |= ArabicShaping.DIGITS_AN2EN;
+                    } else if (val.equalsIgnoreCase("lr")) {
+                        options |= ArabicShaping.DIGITS_EN2AN_INIT_LR;
+                    } else if (val.equalsIgnoreCase("al")) {
+                        options |= ArabicShaping.DIGITS_EN2AN_INIT_AL;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("typ")) {
+                    options &= ~ArabicShaping.DIGIT_TYPE_MASK;
+                    if (val.equalsIgnoreCase("an")) {
+                        options |= ArabicShaping.DIGIT_TYPE_AN;
+                    } else if (val.equalsIgnoreCase("ex")) {
+                        options |= ArabicShaping.DIGIT_TYPE_AN_EXTENDED;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dst")) {
+                    try {
+                        ds = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("dln")) {
+                    try {
+                        dl = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("sst")) {
+                    try {
+                        ss = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("sln")) {
+                    try {
+                        sl = Integer.parseInt(val);
+                    }
+                    catch (Exception e) {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("tes")) {
+                    if (val.equalsIgnoreCase("cp")) {
+                        testtype = COPY;
+                    } else if (val.equalsIgnoreCase("ip")) {
+                        testtype = INPLACE;
+                    } else if (val.equalsIgnoreCase("st")) {
+                        testtype = STRING;
+                    } else {
+                        throwValError(opt, val);
+                    }
+                } else if (opt.equalsIgnoreCase("help")) {
+                    System.out.println(usage);
+                } else {
+                    throwOptError(opt);
+                }
+            } else {
+                // assume text
+                text = parseText(arg);
+            }
+        }
+
+        if (sl < 0) {
+            sl = text.length() - ss;
+            System.out.println("sl defaulting to " + sl);
+        }
+        if (dl < 0) {
+            dl = 2 * sl;
+            System.out.println("dl defaulting to " + dl);
+        }
+
+        ArabicShaping shaper = new ArabicShaping(options);
+        System.out.println("shaper: " + shaper);
+
+        char[] src = text.toCharArray();
+        System.out.println(" input: '" + escapedText(src, ss, sl) + "'");
+        if (testtype != STRING) {
+            System.out.println("start: " + ss + " length: " + sl + " total length: " + src.length);
+        }
+
+        int result = -1;
+        char[] dest = null;
+
+        try {
+            switch (testtype) {
+            case COPY:
+                dest = new char[ds + dl];
+                result = shaper.shape(src, ss, sl, dest, ds, dl);
+                break;
+
+            case INPLACE:
+                shaper.shape(src, ss, sl);
+                ds = ss;
+                result = sl;
+                dest = src;
+                break;
+
+            case STRING:
+                dest = shaper.shape(text).toCharArray();
+                ds = 0;
+                result = dest.length;
+                break;
+            }
+
+            System.out.println("output: '" + escapedText(dest, ds, result) + "'");
+            System.out.println("length: " + result);
+            if (ds != 0 || result != dest.length) {
+                System.out.println("full output: '" + escapedText(dest, 0, dest.length) + "'");
+            }
+        }
+        catch (ArabicShapingException e) {
+            System.out.println("Caught ArabicShapingException");
+            System.out.println(e);
+        }
+        catch (Exception e) {
+            System.out.println("Caught Exception");
+            System.out.println(e);
+        }
+    }
+
+    private static void throwOptError(String opt) {
+        throwUsageError("unknown option: " + opt);
+    }
+
+    private static void throwValError(String opt, String val) {
+        throwUsageError("unknown value: " + val + " for option: " + opt);
+    }
+
+    private static void throwUsageError(String message) {
+        StringBuffer buf = new StringBuffer("*** usage error ***\n");
+        buf.append(message);
+        buf.append("\n");
+        buf.append(usage);
+        throw new Error(buf.toString());
+    }
+
+    private static final String usage = 
+        "Usage: [option]* [text]\n" +
+        "  where option is in the format '-opt[:val]'\n" +
+        "  options are:\n" +
+        "    -len:[gs|sn|se|sb]    (length: grow/shrink, spaces near, spaces end, spaces beginning)\n" +
+        "    -dir:[log|vis]        (direction: logical, visual)\n" +
+        "    -let:[no|sh|un|ta]    (letters: noop, shape, unshape, tashkeel)\n" +
+        // "    -let:[no|sh|un]       (letters: noop, shape, unshape)\n" +
+        "    -dig:[no|ea|ae|lr|al] (digits: noop, en2an, an2en, en2an_lr, en2an_al)\n" +
+        "    -typ:[an|ex]          (digit type: arabic, arabic extended)\n" +
+        "    -dst:#                (dest start: [integer])\n" +
+        "    -dln:#                (dest length (max size): [integer])\n" +
+        "    -sst:#                (source start: [integer])\n" +
+        "    -sln:#                (source length: [integer])\n" +
+        "    -tes:[cp|ip|st]       (test type: copy, in place, string)\n" +
+        "    -help                 (print this help message)\n" +
+        "  text can contain unicode escape values in the format '\\uXXXX' only\n";
+        
+    private static String escapedText(char[] text, int start, int length) {
+        StringBuffer buf = new StringBuffer();
+        for (int i = start, e = start + length; i < e; ++i) {
+            char ch = text[i];
+            if (ch < 0x20 || ch > 0x7e) {
+                buf.append("\\u");
+                if (ch < 0x1000) {
+                    buf.append('0');
+                }
+                if (ch < 0x100) {
+                    buf.append('0');
+                }
+                if (ch < 0x10) {
+                    buf.append('0');
+                }
+                buf.append(Integer.toHexString(ch));
+            } else {
+                buf.append(ch);
+            }
+        }
+        return buf.toString();
+    }
+
+    private static String parseText(String text) {
+        // process unicode escapes (only)
+        StringBuffer buf = new StringBuffer();
+        char[] chars = text.toCharArray();
+        for (int i = 0; i < chars.length; ++i) {
+            char ch = chars[i];
+            if (ch == '\\') {
+                if ((i < chars.length - 1) &&
+                    (chars[i+1] == 'u')) {
+                    int val = Integer.parseInt(text.substring(i+2, i+6), 16);
+                    buf.append((char)val);
+                    i += 5;
+                } else {
+                    buf.append('\\');
+                }
+            } else {
+                buf.append(ch);
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java b/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
new file mode 100644
index 0000000..65acd89
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
@@ -0,0 +1,311 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.stringprep;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeMap;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * @author limaoyu
+ * 
+ */
+public class IDNAConformanceTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new IDNAConformanceTest().run(args);
+    }
+
+    public void TestConformance() {
+
+        TreeMap inputData = null;
+        
+        try {
+            inputData = ReadInput.getInputData();
+        } catch (UnsupportedEncodingException e) {
+            errln(e.getMessage());
+            return;
+        } catch (IOException e) {
+            errln(e.getMessage());
+            return;
+        }
+        
+        Set keyMap = inputData.keySet();
+        for (Iterator iter = keyMap.iterator(); iter.hasNext();) {
+            Long element = (Long) iter.next();
+            HashMap tempHash = (HashMap) inputData.get(element);
+
+            //get all attributes from input data
+            String passfail = (String) tempHash.get("passfail");
+            String desc = (String) tempHash.get("desc");
+            String type = (String) tempHash.get("type");
+            String namebase = (String) tempHash.get("namebase");
+            String nameutf8 = (String) tempHash.get("nameutf8");
+            String namezone = (String) tempHash.get("namezone");
+            String failzone1 = (String) tempHash.get("failzone1");
+            String failzone2 = (String) tempHash.get("failzone2");
+
+            //they maybe includes <*> style unicode
+            namebase = stringReplace(namebase);
+            namezone = stringReplace(namezone);
+
+            String result = null;
+            boolean failed = false;
+
+            if ("toascii".equals(tempHash.get("type"))) {
+                
+                //get the result
+                try {
+                    //by default STD3 rules are not used, but if the description
+                    //includes UseSTD3ASCIIRules, we will set it.
+                    if (desc.toLowerCase().indexOf(
+                            "UseSTD3ASCIIRules".toLowerCase()) == -1) {
+                        result = IDNA.convertIDNToASCII(namebase,
+                                IDNA.ALLOW_UNASSIGNED).toString();
+                    } else {
+                        result = IDNA.convertIDNToASCII(namebase,
+                                IDNA.USE_STD3_RULES).toString();
+                    }
+                } catch (StringPrepParseException e2) {
+                    //errln(e2.getMessage());
+                    failed = true;
+                }
+                
+                
+                if ("pass".equals(passfail)) {
+                    if (!namezone.equals(result)) {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);                        
+                        errln("\t pass fail standard is pass, but failed");
+                    } else {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        logln("\tpassed");
+                    }
+                }
+
+                if ("fail".equals(passfail)) {
+                    if (failed) {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        logln("passed");
+                    } else {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);                        
+                        errln("\t pass fail standard is fail, but no exception thrown out");
+                    }
+                }
+            } else if ("tounicode".equals(tempHash.get("type"))) {
+                try {
+                    //by default STD3 rules are not used, but if the description
+                    //includes UseSTD3ASCIIRules, we will set it.
+                    if (desc.toLowerCase().indexOf(
+                            "UseSTD3ASCIIRules".toLowerCase()) == -1) {
+                        result = IDNA.convertIDNToUnicode(namebase,
+                                IDNA.ALLOW_UNASSIGNED).toString();
+                    } else {
+                        result = IDNA.convertIDNToUnicode(namebase,
+                                IDNA.USE_STD3_RULES).toString();
+                    }
+                } catch (StringPrepParseException e2) {
+                    //errln(e2.getMessage());
+                    failed = true;
+                }
+                if ("pass".equals(passfail)) {
+                    if (!namezone.equals(result)) {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        
+                        errln("\t Did not get the expected result. Expected: " + prettify(namezone) + " Got: " + prettify(result));
+                    } else {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);                        
+                        logln("\tpassed");
+                    }
+                }
+
+                if ("fail".equals(passfail)) {
+                    if (failed || namebase.equals(result)) {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        
+                        logln("\tpassed");
+                    } else {
+                        printInfo(desc, namebase, nameutf8, namezone,
+                                failzone1, failzone2, result, type, passfail);
+                        
+                        errln("\t pass fail standard is fail, but no exception thrown out");
+                    }
+                }
+            } else {
+                continue;
+            }
+        }
+    }
+
+    /**
+     * Print log message.
+     * @param desc
+     * @param namebase
+     * @param nameutf8
+     * @param namezone
+     * @param failzone1
+     * @param failzone2
+     * @param result
+     */
+    private void printInfo(String desc, String namebase,
+            String nameutf8, String namezone, String failzone1,
+            String failzone2, String result, String type, String passfail) {
+        logln("desc:\t" + desc);
+        log("\t");
+        logln("type:\t" + type);
+        log("\t");
+        logln("pass fail standard:\t" + passfail);
+        log("\t");
+        logln("namebase:\t" + namebase);
+        log("\t");
+        logln("nameutf8:\t" + nameutf8);
+        log("\t");
+        logln("namezone:\t" + namezone);
+        log("\t");
+        logln("failzone1:\t" + failzone1);
+        log("\t");
+        logln("failzone2:\t" + failzone2);
+        log("\t");
+        logln("result:\t" + result);
+    }
+
+    /**
+     * Change unicode string from <00AD> to \u00AD, for the later is accepted
+     * by Java
+     * @param str String including <*> style unicode
+     * @return \\u String
+     */
+    private static String stringReplace(String str) {
+
+        StringBuffer result = new StringBuffer();
+        char[] chars = str.toCharArray();
+        StringBuffer sbTemp = new StringBuffer();
+        for (int i = 0; i < chars.length; i++) {
+            if ('<' == chars[i]) {
+                sbTemp = new StringBuffer();
+                while ('>' != chars[i + 1]) {
+                    sbTemp.append(chars[++i]);
+                }
+                /*
+                 * The unicode sometimes is larger then \uFFFF, so have to use
+                 * UTF16.
+                 */
+                int toBeInserted = Integer.parseInt(sbTemp.toString(), 16);
+                if ((toBeInserted >> 16) == 0) {
+                    result.append((char) toBeInserted);
+                } else {
+                    String utf16String = UTF16.valueOf(toBeInserted);
+                    char[] charsTemp = utf16String.toCharArray();
+                    for (int j = 0; j < charsTemp.length; j++) {
+                        result.append((char) charsTemp[j]);
+                    }
+                }
+            } else if ('>' == chars[i]) {//end when met with '>'
+                continue;
+            } else {
+                result.append(chars[i]);
+            }
+
+        }
+        return result.toString();
+    }
+
+    /**
+     * This class is used to read test data from TestInput file.
+     * 
+     * @author limaoyu
+     *  
+     */
+    public static class ReadInput {
+
+        public static TreeMap getInputData() throws IOException,
+                UnsupportedEncodingException {
+
+            TreeMap result = new TreeMap();
+            try {
+                BufferedReader in = TestUtil.getDataReader("IDNATestInput.txt", "utf-8");
+
+                String tempStr = null;
+                int records = 0;
+                boolean firstLine = true;
+                HashMap hashItem = new HashMap();
+
+                while ((tempStr = in.readLine()) != null) {
+                    //ignore the first line if it's "====="
+                    if (firstLine) {
+                        if ("=====".equals(tempStr))
+                            continue;
+                        firstLine = false;
+                    }
+
+                    //Ignore empty line
+                    if ("".equals(tempStr)) {
+                        continue;
+                    }
+
+                    String attr = "";//attribute
+                    String body = "";//value
+
+                    //get attr and body from line input, and then set them into each hash item.                    
+                    int postion = tempStr.indexOf(":");
+                    if (postion > -1) {
+                        attr = tempStr.substring(0, postion).trim();
+                        body = tempStr.substring(postion + 1).trim();
+
+                        //deal with combination lines when end with '\'
+                        while (null != body && body.length() > 0
+                                && '\\' == body.charAt(body.length() - 1)) {
+                            body = body.substring(0, body.length() - 1);
+                            body += "\n";
+                            tempStr = in.readLine();
+                            body += tempStr;
+                        }
+                    }
+                    //push them to hash item
+                    hashItem.put(attr, body);
+
+                    //if met "=====", it means this item is finished
+                    if ("=====".equals(tempStr)) {
+                        //set them into result, using records number as key
+                        result.put(new Long(records), hashItem);
+                        //create another hash item and continue
+                        hashItem = new HashMap();
+                        records++;
+                        continue;
+                    }
+                }
+            } catch (UnsupportedEncodingException e) {
+                throw e;
+            } catch (FileNotFoundException e) {
+                throw e;
+            } catch (IOException e) {
+                throw e;
+            }
+            return result;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java b/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java
new file mode 100644
index 0000000..94f3aea
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java
@@ -0,0 +1,429 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class IDNAReference {
+    
+    private static char[] ACE_PREFIX = new char[]{ 0x0078,0x006E,0x002d,0x002d } ;
+    private static final int ACE_PREFIX_LENGTH  = 4;
+
+    private static final int MAX_LABEL_LENGTH   = 63;
+    private static final int HYPHEN             = 0x002D;
+    private static final int CAPITAL_A          = 0x0041;
+    private static final int CAPITAL_Z          = 0x005A;
+    private static final int LOWER_CASE_DELTA   = 0x0020;
+    private static final int FULL_STOP          = 0x002E;
+
+
+    public static final int DEFAULT             = 0x0000;
+    public static final int ALLOW_UNASSIGNED    = 0x0001;
+    public static final int USE_STD3_RULES      = 0x0002;
+    public static final NamePrepTransform transform = NamePrepTransform.getInstance();
+  
+    private static boolean startsWithPrefix(StringBuffer src){
+        boolean startsWithPrefix = true;
+
+        if(src.length() < ACE_PREFIX_LENGTH){
+            return false;
+        }
+        for(int i=0; i<ACE_PREFIX_LENGTH;i++){
+            if(toASCIILower(src.charAt(i)) != ACE_PREFIX[i]){
+                startsWithPrefix = false;
+            }
+        }
+        return startsWithPrefix;
+    }
+
+    private static char toASCIILower(char ch){
+        if(CAPITAL_A <= ch && ch <= CAPITAL_Z){
+            return (char)(ch + LOWER_CASE_DELTA);
+        }
+        return ch;
+    }
+
+    private static StringBuffer toASCIILower(StringBuffer src){
+        StringBuffer dest = new StringBuffer();
+        for(int i=0; i<src.length();i++){
+            dest.append(toASCIILower(src.charAt(i)));
+        }
+        return dest;
+    }
+
+    private static int compareCaseInsensitiveASCII(StringBuffer s1, StringBuffer s2){
+        char c1,c2;
+        int rc;
+        for(int i =0;/* no condition */;i++) {
+            /* If we reach the ends of both strings then they match */
+            if(i == s1.length()) {
+                return 0;
+            }
+
+            c1 = s1.charAt(i);
+            c2 = s2.charAt(i);
+        
+            /* Case-insensitive comparison */
+            if(c1!=c2) {
+                rc=toASCIILower(c1)-toASCIILower(c2);
+                if(rc!=0) {
+                    return rc;
+                }
+            }
+        }
+    }
+    
+    private static int getSeparatorIndex(char[] src,int start, int limit){
+        for(; start<limit;start++){
+            if(NamePrepTransform.isLabelSeparator(src[start])){
+                return start;
+            }
+        }
+        // we have not found the separator just return length
+        return start;
+    }
+    
+    private static boolean isLDHChar(int ch){
+        // high runner case
+        if(ch>0x007A){
+            return false;
+        }
+        //[\\u002D \\u0030-\\u0039 \\u0041-\\u005A \\u0061-\\u007A]
+        if( (ch==0x002D) || 
+            (0x0030 <= ch && ch <= 0x0039) ||
+            (0x0041 <= ch && ch <= 0x005A) ||
+            (0x0061 <= ch && ch <= 0x007A)
+          ){
+            return true;
+        }
+        return false;
+    }
+        
+    public static StringBuffer convertToASCII(String src, int options)
+        throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToASCII(iter,options);
+    }
+    public static StringBuffer convertToASCII(StringBuffer src, int options)
+        throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToASCII(iter,options);
+    }
+    public static StringBuffer convertToASCII(UCharacterIterator srcIter, int options)
+                throws StringPrepParseException{
+    
+        char[] caseFlags = null;
+    
+        // the source contains all ascii codepoints
+        boolean srcIsASCII  = true;
+        // assume the source contains all LDH codepoints
+        boolean srcIsLDH = true; 
+
+        //get the options
+        boolean useSTD3ASCIIRules = ((options & USE_STD3_RULES) != 0);
+
+        int ch;
+        // step 1
+        while((ch = srcIter.next())!= UCharacterIterator.DONE){
+            if(ch> 0x7f){
+                srcIsASCII = false;
+            }
+        }
+        int failPos = -1;
+        srcIter.setToStart();
+        StringBuffer processOut = null;
+        // step 2 is performed only if the source contains non ASCII
+        if(!srcIsASCII){
+            // step 2
+            processOut =  transform.prepare(srcIter,options);
+        }else{
+            processOut = new StringBuffer(srcIter.getText());
+        }
+        int poLen = processOut.length();
+        if(poLen==0){
+            throw new StringPrepParseException("Found zero length lable after NamePrep.",StringPrepParseException.ZERO_LENGTH_LABEL);
+        }
+        StringBuffer dest = new StringBuffer();
+        
+        // reset the variable to verify if output of prepare is ASCII or not
+        srcIsASCII = true;
+        
+        // step 3 & 4
+        for(int j=0;j<poLen;j++ ){
+            ch=processOut.charAt(j);
+            if(ch > 0x7F){
+                srcIsASCII = false;
+            }else if(isLDHChar(ch)==false){
+                // here we do not assemble surrogates
+                // since we know that LDH code points
+                // are in the ASCII range only
+                srcIsLDH = false;
+                failPos = j;
+            }
+        }
+    
+        if(useSTD3ASCIIRules == true){
+            // verify 3a and 3b
+            if( srcIsLDH == false /* source contains some non-LDH characters */
+                || processOut.charAt(0) ==  HYPHEN 
+                || processOut.charAt(processOut.length()-1) == HYPHEN){
+
+                /* populate the parseError struct */
+                if(srcIsLDH==false){
+                     throw new StringPrepParseException( "The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                              processOut.toString(),
+                                             (failPos>0) ? (failPos-1) : failPos);
+                }else if(processOut.charAt(0) == HYPHEN){
+                    throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,processOut.toString(),0);
+     
+                }else{
+                     throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                              processOut.toString(),
+                                              (poLen>0) ? poLen-1 : poLen);
+
+                }
+            }
+        }
+        if(srcIsASCII){
+            dest =  processOut;
+        }else{
+            // step 5 : verify the sequence does not begin with ACE prefix
+            if(!startsWithPrefix(processOut)){
+
+                //step 6: encode the sequence with punycode
+                StringBuffer punyout = PunycodeReference.encode(processOut,caseFlags);
+                
+                // convert all codepoints to lower case ASCII
+                StringBuffer lowerOut = toASCIILower(punyout);
+
+                //Step 7: prepend the ACE prefix
+                dest.append(ACE_PREFIX,0,ACE_PREFIX_LENGTH);
+                //Step 6: copy the contents in b2 into dest
+                dest.append(lowerOut);
+            }else{
+                throw new StringPrepParseException("The input does not start with the ACE Prefix.",
+                                   StringPrepParseException.ACE_PREFIX_ERROR,processOut.toString(),0);
+            }
+        }
+        if(dest.length() > MAX_LABEL_LENGTH){
+            throw new StringPrepParseException("The labels in the input are too long. Length > 64.", 
+                                    StringPrepParseException.LABEL_TOO_LONG_ERROR,dest.toString(),0);
+        }
+        return dest;
+    }
+    
+    public static StringBuffer convertIDNtoASCII(UCharacterIterator iter,int options)
+            throws StringPrepParseException{
+            return convertIDNToASCII(iter.getText(), options);          
+    }
+    public static StringBuffer convertIDNtoASCII(StringBuffer str,int options)
+            throws StringPrepParseException{
+            return convertIDNToASCII(str.toString(), options);          
+    }
+    public static StringBuffer convertIDNToASCII(String src,int options)
+            throws StringPrepParseException{
+        char[] srcArr = src.toCharArray();
+        StringBuffer result = new StringBuffer();
+        int sepIndex=0;
+        int oldSepIndex = 0;
+        for(;;){
+            sepIndex = getSeparatorIndex(srcArr,sepIndex,srcArr.length);
+            String label = new String(srcArr,oldSepIndex,sepIndex-oldSepIndex);
+            //make sure this is not a root label separator.
+            if(!(label.length()==0 && sepIndex==srcArr.length)){
+                UCharacterIterator iter = UCharacterIterator.getInstance(label);
+                result.append(convertToASCII(iter,options));
+            }
+            if(sepIndex==srcArr.length){
+                break;
+            }
+            // increment the sepIndex to skip past the separator
+            sepIndex++;
+            oldSepIndex = sepIndex;
+            result.append((char)FULL_STOP);
+        }
+        return result;
+    }
+
+    public static StringBuffer convertToUnicode(String src, int options)
+           throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToUnicode(iter,options);
+    }
+    public static StringBuffer convertToUnicode(StringBuffer src, int options)
+           throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToUnicode(iter,options);
+    }   
+    public static StringBuffer convertToUnicode(UCharacterIterator iter, int options)
+           throws StringPrepParseException{
+
+        char[] caseFlags = null;
+        
+        //get the options
+        boolean useSTD3ASCIIRules = ((options & USE_STD3_RULES) != 0);
+
+        // the source contains all ascii codepoints
+        boolean srcIsASCII  = true;
+        // assume the source contains all LDH codepoints
+        boolean srcIsLDH = true; 
+               
+        int failPos = -1;
+        int ch;
+        int saveIndex = iter.getIndex();
+        // step 1: find out if all the codepoints in src are ASCII  
+        while((ch=iter.next())!= UCharacterIterator.DONE){
+            if(ch>0x7F){
+                srcIsASCII = false;
+            }else if(isLDHChar(ch)==false){
+                failPos = iter.getIndex();
+                srcIsLDH = false;
+            }
+        }
+        StringBuffer processOut;
+        
+        if(srcIsASCII == false){
+            // step 2: process the string
+            iter.setIndex(saveIndex);
+            processOut = transform.prepare(iter,options);
+
+        }else{
+            //just point to source
+            processOut = new StringBuffer(iter.getText());
+        }
+        // TODO:
+        // The RFC states that 
+        // <quote>
+        // ToUnicode never fails. If any step fails, then the original input
+        // is returned immediately in that step.
+        // </quote>
+        
+        //step 3: verify ACE Prefix
+        if(startsWithPrefix(processOut)){
+
+           //step 4: Remove the ACE Prefix
+           String temp = processOut.substring(ACE_PREFIX_LENGTH,processOut.length());
+
+           //step 5: Decode using punycode
+           StringBuffer decodeOut = PunycodeReference.decode(new StringBuffer(temp),caseFlags);
+        
+            //step 6:Apply toASCII
+            StringBuffer toASCIIOut = convertToASCII(decodeOut, options);
+
+            //step 7: verify
+            if(compareCaseInsensitiveASCII(processOut, toASCIIOut) !=0){
+                throw new StringPrepParseException("The verification step prescribed by the RFC 3491 failed",
+                                          StringPrepParseException.VERIFICATION_ERROR); 
+             }
+
+            //step 8: return output of step 5
+            return decodeOut;
+            
+        }else{
+            // verify that STD3 ASCII rules are satisfied
+            if(useSTD3ASCIIRules == true){
+                if( srcIsLDH == false /* source contains some non-LDH characters */
+                    || processOut.charAt(0) ==  HYPHEN 
+                    || processOut.charAt(processOut.length()-1) == HYPHEN){
+    
+                        if(srcIsLDH==false){
+                            throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                                     StringPrepParseException.STD3_ASCII_RULES_ERROR,processOut.toString(),
+                                                     (failPos>0) ? (failPos-1) : failPos);
+                        }else if(processOut.charAt(0) == HYPHEN){
+                            throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                                     StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                                     processOut.toString(),0);
+         
+                        }else{
+                            throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                                     StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                                     processOut.toString(),
+                                                     processOut.length());
+    
+                        }
+                  }
+            }
+            // just return the source
+            return new StringBuffer(iter.getText());
+        }  
+    }
+    public static StringBuffer convertIDNToUnicode(UCharacterIterator iter, int options)
+        throws StringPrepParseException{
+        return convertIDNToUnicode(iter.getText(), options);
+    }
+    public static StringBuffer convertIDNToUnicode(StringBuffer str, int options)
+        throws StringPrepParseException{
+        return convertIDNToUnicode(str.toString(), options);
+    }
+    public static StringBuffer convertIDNToUnicode(String src, int options)
+        throws StringPrepParseException{
+            
+        char[] srcArr = src.toCharArray();
+        StringBuffer result = new StringBuffer();
+        int sepIndex=0;
+        int oldSepIndex=0;
+        for(;;){
+            sepIndex = getSeparatorIndex(srcArr,sepIndex,srcArr.length);
+            String label = new String(srcArr,oldSepIndex,sepIndex-oldSepIndex);
+            if(label.length()==0 && sepIndex!=srcArr.length ){
+                throw new StringPrepParseException("Found zero length lable after NamePrep.",StringPrepParseException.ZERO_LENGTH_LABEL);
+            }
+            UCharacterIterator iter = UCharacterIterator.getInstance(label);
+            result.append(convertToUnicode(iter,options));
+            if(sepIndex==srcArr.length){
+                break;
+            }
+            // increment the sepIndex to skip past the separator
+            sepIndex++;
+            oldSepIndex = sepIndex;
+            result.append((char)FULL_STOP);
+        }
+        return result;
+    }
+    //  TODO: optimize
+    public static int compare(StringBuffer s1, StringBuffer s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1.toString(), options);
+        StringBuffer s2Out = convertIDNToASCII(s2.toString(), options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+    //  TODO: optimize
+    public static int compare(String s1, String s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1, options);
+        StringBuffer s2Out = convertIDNToASCII(s2, options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+    //  TODO: optimize
+    public static int compare(UCharacterIterator i1, UCharacterIterator i2, int options)
+        throws StringPrepParseException{
+        if(i1==null || i2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(i1.getText(), options);
+        StringBuffer s2Out = convertIDNToASCII(i2.getText(), options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java b/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java
new file mode 100644
index 0000000..4d1a0a2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java
@@ -0,0 +1,150 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.StringPrep;
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * This is a dumb implementation of NFS4 profiles. It is a direct port of
+ * C code, does not use Object Oriented principles. Quick and Dirty implementation
+ * for testing.
+ */
+public final class NFS4StringPrep {
+
+    private StringPrep nfscss = null;
+    private StringPrep nfscsi = null;
+    private StringPrep nfscis = null;
+    private StringPrep nfsmxp = null;
+    private StringPrep nfsmxs = null;
+    //singleton instance
+    private static final NFS4StringPrep prep = new NFS4StringPrep();
+    
+
+    private  NFS4StringPrep (){
+        ClassLoader loader = NFS4StringPrep.class.getClassLoader();
+        try{
+            InputStream  nfscsiFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfscsi.spp");
+            nfscsi = new StringPrep(nfscsiFile);
+            nfscsiFile.close();
+            
+            InputStream  nfscssFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfscss.spp");
+            nfscss = new StringPrep(nfscssFile);
+            nfscssFile.close();
+            
+            InputStream  nfscisFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfscis.spp");
+            nfscis = new StringPrep(nfscisFile);
+            nfscisFile.close();
+            
+            InputStream  nfsmxpFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfsmxp.spp");
+            nfsmxp = new StringPrep(nfsmxpFile);
+            nfsmxpFile.close();
+            
+            InputStream  nfsmxsFile = loader.getResourceAsStream("com/ibm/icu/dev/data/testdata/nfsmxs.spp");
+            nfsmxs = new StringPrep(nfsmxsFile);
+            nfsmxsFile.close();
+        }catch(IOException e){
+            throw new MissingResourceException(e.toString(),"","");
+        }
+    }
+    
+    private static byte[] prepare(byte[] src, StringPrep strprep)
+                throws StringPrepParseException, UnsupportedEncodingException{
+        String s = new String(src, "UTF-8");
+        UCharacterIterator iter =  UCharacterIterator.getInstance(s);
+        StringBuffer out = strprep.prepare(iter,StringPrep.DEFAULT);
+        return out.toString().getBytes("UTF-8");
+    }
+    
+    public static byte[] cs_prepare(byte[] src, boolean isCaseSensitive)
+                         throws StringPrepParseException, UnsupportedEncodingException{
+        if(isCaseSensitive == true ){
+            return prepare(src, prep.nfscss);
+        }else{
+            return prepare(src, prep.nfscsi);
+        }
+    }
+    
+    public static byte[] cis_prepare(byte[] src)
+                         throws IOException, StringPrepParseException, UnsupportedEncodingException{
+        return prepare(src, prep.nfscis);
+    }  
+    
+    /* sorted array for binary search*/
+    private static final String[] special_prefixes={
+        "ANONYMOUS",    
+        "AUTHENTICATED",
+        "BATCH", 
+        "DIALUP", 
+        "EVERYONE", 
+        "GROUP",
+        "INTERACTIVE",  
+        "NETWORK", 
+        "OWNER",
+    };
+
+
+    /* binary search the sorted array */
+    private static final int findStringIndex(String[] sortedArr,String target){
+
+        int left, middle, right,rc;
+
+        left =0;
+        right= sortedArr.length-1;
+
+        while(left <= right){
+            middle = (left+right)/2;
+            rc= sortedArr[middle].compareTo(target);
+        
+            if(rc<0){
+                left = middle+1;
+            }else if(rc >0){
+                right = middle -1;
+            }else{
+                return middle;
+            }
+        }
+        return -1;
+    }
+    private static final char AT_SIGN = '@';
+    
+    public static byte[] mixed_prepare(byte[] src)
+                         throws IOException, StringPrepParseException, UnsupportedEncodingException{
+        String s = new String(src, "UTF-8");
+        int index = s.indexOf(AT_SIGN);
+        StringBuffer out = new StringBuffer();
+
+        if(index > -1){
+            /* special prefixes must not be followed by suffixes! */
+            String prefixString = s.substring(0,index);
+            int i= findStringIndex(special_prefixes, prefixString);
+            String suffixString = s.substring(index+1, s.length());
+            if(i>-1 && !suffixString.equals("")){
+                throw new StringPrepParseException("Suffix following a special index", StringPrepParseException.INVALID_CHAR_FOUND);
+            }
+            UCharacterIterator prefix = UCharacterIterator.getInstance(prefixString);
+            UCharacterIterator suffix = UCharacterIterator.getInstance(suffixString);
+            out.append(prep.nfsmxp.prepare(prefix,StringPrep.DEFAULT));
+            out.append(AT_SIGN); // add the delimiter
+            out.append(prep.nfsmxs.prepare(suffix, StringPrep.DEFAULT));
+        }else{
+            UCharacterIterator iter = UCharacterIterator.getInstance(s);
+            out.append(prep.nfsmxp.prepare(iter,StringPrep.DEFAULT));
+            
+        }
+       return out.toString().getBytes("UTF-8");
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java b/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
new file mode 100644
index 0000000..6fb202c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
@@ -0,0 +1,166 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.Transliterator;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class NamePrepTransform {
+    
+    private static final NamePrepTransform transform = new NamePrepTransform();
+    
+    private UnicodeSet labelSeparatorSet;
+    private UnicodeSet prohibitedSet;
+    private UnicodeSet unassignedSet;
+    private Transliterator mapTransform;
+    public static final int NONE = 0;
+    public static final int ALLOW_UNASSIGNED = 1;
+    
+    private NamePrepTransform(){
+        // load the resource bundle
+        ICUResourceBundle bundle = (ICUResourceBundle)ICUResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","idna_rules", NamePrepTransform.class.getClassLoader(), true);
+        String  mapRules      = bundle.getString("MapNoNormalization");
+        mapRules             += bundle.getString("MapNFKC");
+        mapTransform          = Transliterator.createFromRules("CaseMap",mapRules,Transliterator.FORWARD);
+        labelSeparatorSet     = new UnicodeSet(bundle.getString("LabelSeparatorSet"));
+        prohibitedSet         = new UnicodeSet(bundle.getString("ProhibitedSet"));
+        unassignedSet         = new UnicodeSet(bundle.getString("UnassignedSet"));
+    }
+    
+    public static final NamePrepTransform getInstance(){
+        return transform;
+    }
+    public static boolean isLabelSeparator(int ch){
+        return transform.labelSeparatorSet.contains(ch);
+    }
+
+     /*
+       1) Map -- For each character in the input, check if it has a mapping
+          and, if so, replace it with its mapping.  
+
+       2) Normalize -- Possibly normalize the result of step 1 using Unicode
+          normalization. 
+
+       3) Prohibit -- Check for any characters that are not allowed in the
+          output.  If any are found, return an error.  
+
+       4) Check bidi -- Possibly check for right-to-left characters, and if
+          any are found, make sure that the whole string satisfies the
+          requirements for bidirectional strings.  If the string does not
+          satisfy the requirements for bidirectional strings, return an
+          error.  
+          [Unicode3.2] defines several bidirectional categories; each character
+           has one bidirectional category assigned to it.  For the purposes of
+           the requirements below, an "RandALCat character" is a character that
+           has Unicode bidirectional categories "R" or "AL"; an "LCat character"
+           is a character that has Unicode bidirectional category "L".  Note
+
+
+           that there are many characters which fall in neither of the above
+           definitions; Latin digits (<U+0030> through <U+0039>) are examples of
+           this because they have bidirectional category "EN".
+
+           In any profile that specifies bidirectional character handling, all
+           three of the following requirements MUST be met:
+
+           1) The characters in section 5.8 MUST be prohibited.
+
+           2) If a string contains any RandALCat character, the string MUST NOT
+              contain any LCat character.
+
+           3) If a string contains any RandALCat character, a RandALCat
+              character MUST be the first character of the string, and a
+              RandALCat character MUST be the last character of the string.
+    */
+    public StringBuffer prepare(UCharacterIterator src,
+                                       int options)
+                                       throws StringPrepParseException{
+             return prepare(src.getText(),options);
+    }
+    private String map ( String src, int options)
+                                throws StringPrepParseException{
+        // map 
+        boolean allowUnassigned =  ((options & ALLOW_UNASSIGNED)>0);
+        String caseMapOut = transform.mapTransform.transliterate(src);    
+        UCharacterIterator iter = UCharacterIterator.getInstance(caseMapOut);
+        int ch;
+        while((ch=iter.nextCodePoint())!=UCharacterIterator.DONE){                          
+            if(transform.unassignedSet.contains(ch)==true && allowUnassigned ==false){
+                throw new StringPrepParseException("An unassigned code point was found in the input",
+                                         StringPrepParseException.UNASSIGNED_ERROR);
+            }
+        }
+        return caseMapOut;
+    }
+    public StringBuffer prepare(String src,int options)
+                                   throws StringPrepParseException{
+ 
+        int ch;
+        String mapOut = map(src,options);
+        UCharacterIterator iter = UCharacterIterator.getInstance(mapOut);
+
+        int direction=UCharacterDirection.CHAR_DIRECTION_COUNT,
+            firstCharDir=UCharacterDirection.CHAR_DIRECTION_COUNT;    
+        int rtlPos=-1, ltrPos=-1;
+        boolean rightToLeft=false, leftToRight=false;
+           
+        while((ch=iter.nextCodePoint())!= UCharacterIterator.DONE){
+
+
+            if(transform.prohibitedSet.contains(ch)==true && ch!=0x0020){
+                throw new StringPrepParseException("A prohibited code point was found in the input",
+                                         StringPrepParseException.PROHIBITED_ERROR,
+                                         iter.getText(),iter.getIndex());
+            }
+
+            direction = UCharacter.getDirection(ch);
+            if(firstCharDir == UCharacterDirection.CHAR_DIRECTION_COUNT){
+                firstCharDir = direction;
+            }
+            if(direction == UCharacterDirection.LEFT_TO_RIGHT){
+                leftToRight = true;
+                ltrPos = iter.getIndex()-1;
+            }
+            if(direction == UCharacterDirection.RIGHT_TO_LEFT || direction == UCharacterDirection.RIGHT_TO_LEFT_ARABIC){
+                rightToLeft = true;
+                rtlPos = iter.getIndex()-1;
+            }
+        }           
+
+        // satisfy 2
+        if( leftToRight == true && rightToLeft == true){
+            throw new StringPrepParseException("The input does not conform to the rules for BiDi code points.",
+                                     StringPrepParseException.CHECK_BIDI_ERROR,iter.getText(),(rtlPos>ltrPos) ? rtlPos : ltrPos);
+        }
+
+        //satisfy 3
+        if( rightToLeft == true && 
+            !((firstCharDir == UCharacterDirection.RIGHT_TO_LEFT || firstCharDir == UCharacterDirection.RIGHT_TO_LEFT_ARABIC) &&
+            (direction == UCharacterDirection.RIGHT_TO_LEFT || direction == UCharacterDirection.RIGHT_TO_LEFT_ARABIC))
+           ){
+            throw new StringPrepParseException("The input does not conform to the rules for BiDi code points.",
+                                      StringPrepParseException.CHECK_BIDI_ERROR,iter.getText(),(rtlPos>ltrPos) ? rtlPos : ltrPos);
+        }
+        
+        return new StringBuffer(mapOut);
+
+      }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java b/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java
new file mode 100644
index 0000000..c94c42e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java
@@ -0,0 +1,382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+
+/*
+ * 
+Disclaimer and license
+
+    Regarding this entire document or any portion of it (including
+    the pseudocode and C code), the author makes no guarantees and
+    is not responsible for any damage resulting from its use.  The
+    author grants irrevocable permission to anyone to use, modify,
+    and distribute it in any way that does not diminish the rights
+    of anyone else to use, modify, and distribute it, provided that
+    redistributed derivative works do not contain misleading author or
+    version information.  Derivative works need not be licensed under
+    similar terms.
+
+punycode.c 0.4.0 (2001-Nov-17-Sat)
+http://www.cs.berkeley.edu/~amc/idn/
+Adam M. Costello
+http://www.nicemice.net/amc/
+*/
+
+package com.ibm.icu.dev.test.stringprep;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * The implementation is direct port of C code in the RFC
+ */
+
+public final class PunycodeReference {
+    /*** punycode status codes */
+    public static final int punycode_success=0;
+    public static final int punycode_bad_input=1;   /* Input is invalid.                       */
+    public static final int punycode_big_output=2;  /* Output would exceed the space provided. */
+    public static final int punycode_overflow =3;    /* Input needs wider integers to process.  */
+    
+    /*** Bootstring parameters for Punycode ***/
+    private static final int base = 36;
+    private static final int tmin = 1;
+    private static final int tmax = 26;
+    private static final int skew = 38;
+    private static final int damp = 700;
+    private static final int initial_bias = 72;
+    private static final int initial_n = 0x80;
+    private static final int delimiter = 0x2D;
+    
+    
+//    private static final long UNSIGNED_INT_MASK = 0xffffffffL;
+    
+    /* basic(cp) tests whether cp is a basic code point: */
+    private static boolean basic(int cp){
+        return (char)(cp) < 0x80;
+    }
+
+    /* delim(cp) tests whether cp is a delimiter: */
+    private static boolean delim(int cp){
+        return ((cp) == delimiter);
+    }
+
+    /* decode_digit(cp) returns the numeric value of a basic code */
+    /* point (for use in representing integers) in the range 0 to */
+    /* base-1, or base if cp is does not represent a value.       */
+
+    private static int decode_digit(int cp)
+    {
+      return  cp - 48 < 10 ? cp - 22 :  cp - 65 < 26 ? cp - 65 :
+              cp - 97 < 26 ? cp - 97 :  base;
+    }
+
+    /* encode_digit(d,flag) returns the basic code point whose value      */
+    /* (when used for representing integers) is d, which needs to be in   */
+    /* the range 0 to base-1.  The lowercase form is used unless flag is  */
+    /* nonzero, in which case the uppercase form is used.  The behavior   */
+    /* is undefined if flag is nonzero and digit d has no uppercase form. */
+
+    private static char encode_digit(int d, int flag)
+    {
+      return (char) (d + 22 + (75 * ((d < 26) ? 1 : 0) - (((flag != 0) ? 1 :0) << 5)));
+      /*  0..25 map to ASCII a..z or A..Z */
+      /* 26..35 map to ASCII 0..9         */
+    }
+
+    /* flagged(bcp) tests whether a basic code point is flagged */
+    /* (uppercase).  The behavior is undefined if bcp is not a  */
+    /* basic code point.                                        */
+
+    private static boolean flagged(int bcp){
+         return ((bcp) - 65 < 26);
+    }
+
+    /* encode_basic(bcp,flag) forces a basic code point to lowercase */
+    /* if flag is zero, uppercase if flag is nonzero, and returns    */
+    /* the resulting code point.  The code point is unchanged if it  */
+    /* is caseless.  The behavior is undefined if bcp is not a basic */
+    /* code point.                                                   */
+
+    private static char encode_basic(int bcp, int flag)
+    {
+      bcp -= (((bcp - 97) < 26) ? 1 :0 ) << 5;
+      boolean mybcp = (bcp - 65 < 26);
+      return (char) (bcp + (((flag==0) && mybcp ) ? 1 : 0 ) << 5);
+    }
+
+    /*** Platform-specific constants ***/
+
+    /* maxint is the maximum value of a punycode_uint variable: */
+    private static long maxint = 0xFFFFFFFFL;
+    /* Because maxint is unsigned, -1 becomes the maximum value. */
+
+    /*** Bias adaptation function ***/
+
+    private static int adapt(int delta, int numpoints, boolean firsttime ){
+      int k;
+
+      delta = (firsttime==true) ? delta / damp : delta >> 1;
+      /* delta >> 1 is a faster way of doing delta / 2 */
+      delta += delta / numpoints;
+
+      for (k = 0;  delta > ((base - tmin) * tmax) / 2;  k += base) {
+        delta /= base - tmin;
+      }
+
+      return k + (base - tmin + 1) * delta / (delta + skew);
+    }
+
+    /*** Main encode function ***/
+
+    public static final int encode(   int input_length,
+                                      int input[],
+                                      char[] case_flags,
+                                      int[] output_length,
+                                      char output[] ){
+      int delta, h, b, out, max_out, bias, j, q, k, t;
+      long m,n;
+      /* Initialize the state: */
+
+      n = initial_n;
+      delta = out = 0;
+      max_out = output_length[0];
+      bias = initial_bias;
+
+      /* Handle the basic code points: */
+
+      for (j = 0;  j < input_length;  ++j) {
+        if (basic(input[j])) {
+          if (max_out - out < 2) return punycode_big_output;
+          output[out++] = (char)
+            (case_flags!=null ?  encode_basic(input[j], case_flags[j]) : input[j]);
+        }
+        /* else if (input[j] < n) return punycode_bad_input; */
+        /* (not needed for Punycode with unsigned code points) */
+      }
+
+      h = b = out;
+
+      /* h is the number of code points that have been handled, b is the  */
+      /* number of basic code points, and out is the number of characters */
+      /* that have been output.                                           */
+
+      if (b > 0) output[out++] = delimiter;
+
+      /* Main encoding loop: */
+
+      while (h < input_length) {
+        /* All non-basic code points < n have been     */
+        /* handled already.  Find the next larger one: */
+
+        for (m = maxint, j = 0;  j < input_length;  ++j) {
+          /* if (basic(input[j])) continue; */
+          /* (not needed for Punycode) */
+          if (input[j] >= n && input[j] < m) m = input[j];
+        }
+
+        /* Increase delta enough to advance the decoder's    */
+        /* <n,i> state to <m,0>, but guard against overflow: */
+
+        if (m - n > (maxint - delta) / (h + 1)) return punycode_overflow;
+        delta += (m - n) * (h + 1);
+        n = m;
+
+        for (j = 0;  j < input_length;  ++j) {
+          /* Punycode does not need to check whether input[j] is basic: */
+          if (input[j] < n /* || basic(input[j]) */ ) {
+            if (++delta == 0) return punycode_overflow;
+          }
+
+          if (input[j] == n) {
+            /* Represent delta as a generalized variable-length integer: */
+
+            for (q = delta, k = base;  ;  k += base) {
+              if (out >= max_out) return punycode_big_output;
+              t = k <= bias /* + tmin */ ? tmin :     /* +tmin not needed */
+                  k >= bias + tmax ? tmax : k - bias;
+              if (q < t) break;
+              output[out++] = encode_digit(t + (q - t) % (base - t), 0);
+              q = (q - t) / (base - t);
+            }
+
+            output[out++] = encode_digit(q, (case_flags !=null) ? case_flags[j] : 0);
+            bias = adapt(delta, h + 1, (h == b));
+            delta = 0;
+            ++h;
+          }
+        }
+
+        ++delta;
+        ++n;
+      }
+
+      output_length[0] = out;
+      return punycode_success;
+    }
+    
+    public static final StringBuffer encode(StringBuffer input,char[] case_flags)
+                               throws StringPrepParseException{
+        int[] in = new int[input.length()];
+        int inLen = 0;
+        int ch;
+        StringBuffer result = new StringBuffer();
+        UCharacterIterator iter = UCharacterIterator.getInstance(input);
+        while((ch=iter.nextCodePoint())!= UCharacterIterator.DONE){
+            in[inLen++]=ch;
+        }
+
+        int[] outLen =  new int[1];
+        outLen[0] = input.length()*4;
+        char[] output = new char[outLen[0]];
+        int rc = punycode_success;
+        for(;;){
+            rc = encode(inLen,in,case_flags, outLen, output);
+            if(rc==punycode_big_output){
+                outLen[0] = outLen[0]*4;
+                output = new char[outLen[0]];
+                // continue to convert
+                continue;
+            }
+            break;
+        }
+        if(rc==punycode_success){
+            return result.append(output,0,outLen[0]);
+        }
+        getException(rc);
+        return result;
+    }
+
+    private static void getException(int rc) 
+                   throws StringPrepParseException{
+         switch(rc){
+             case punycode_big_output:
+                throw new StringPrepParseException("The output capacity was not sufficient.",StringPrepParseException.BUFFER_OVERFLOW_ERROR);
+             case punycode_bad_input:
+                throw new StringPrepParseException("Illegal char found in the input",StringPrepParseException.ILLEGAL_CHAR_FOUND);
+             case punycode_overflow:
+                throw new StringPrepParseException("Invalid char found in the input",StringPrepParseException.INVALID_CHAR_FOUND);   
+         }
+        
+    }
+    private static final int MAX_BUFFER_SIZE = 100;
+    
+    public static final StringBuffer decode(StringBuffer input,char[] case_flags)
+                               throws StringPrepParseException{
+        char[] in = input.toString().toCharArray();
+        int[] outLen = new int[1];
+        outLen[0] = MAX_BUFFER_SIZE;
+        int[] output = new int[outLen[0]];
+        int rc = punycode_success;
+        StringBuffer result = new StringBuffer();
+        for(;;){
+            rc = decode(input.length(),in, outLen, output,case_flags);
+            if(rc==punycode_big_output){
+                outLen[0] = output.length * 4;
+                output = new int[outLen[0]];
+                continue;
+            }
+            break;
+        }
+        if(rc==punycode_success){
+            for(int i=0; i < outLen[0]; i++ ){
+                UTF16.append(result,output[i]);
+            }
+        }else{
+            getException(rc);
+        }
+        return result;
+    }
+    
+    /*** Main decode function ***/
+    public static final int decode(int input_length,
+                             char[] input,
+                             int[] output_length,
+                             int[] output,
+                             char[] case_flags ){
+      int n, out, i, max_out, bias,
+                     b, j, in, oldi, w, k, digit, t;
+
+      /* Initialize the state: */
+
+      n = initial_n;
+      out = i = 0;
+      max_out = output_length[0];
+      bias = initial_bias;
+
+      /* Handle the basic code points:  Let b be the number of input code */
+      /* points before the last delimiter, or 0 if there is none, then    */
+      /* copy the first b code points to the output.                      */
+
+      for (b = j = 0;  j < input_length;  ++j){
+           if (delim(input[j])==true){
+                b = j;
+           }
+      }
+      if (b > max_out) return punycode_big_output;
+
+      for (j = 0;  j < b;  ++j) {
+        if (case_flags != null) case_flags[out] = (char)(flagged(input[j]) ? 1 : 0);
+        if (!basic(input[j])) return punycode_bad_input;
+        output[out++] = input[j];
+      }
+
+      /* Main decoding loop:  Start just after the last delimiter if any  */
+      /* basic code points were copied; start at the beginning otherwise. */
+
+      for (in = b > 0 ? b + 1 : 0;  in < input_length;  ++out) {
+
+        /* in is the index of the next character to be consumed, and */
+        /* out is the number of code points in the output array.     */
+
+        /* Decode a generalized variable-length integer into delta,  */
+        /* which gets added to i.  The overflow checking is easier   */
+        /* if we increase i as we go, then subtract off its starting */
+        /* value at the end to obtain delta.                         */
+
+        for (oldi = i, w = 1, k = base;  ;  k += base) {
+          if (in >= input_length) return punycode_bad_input;
+          digit = decode_digit(input[in++]);
+          if (digit >= base) return punycode_bad_input;
+          if (digit > (maxint - i) / w) return punycode_overflow;
+          i += digit * w;
+          t = (k <= bias) /* + tmin */ ? tmin :     /* +tmin not needed */
+              (k >= (bias + tmax)) ? tmax : k - bias;
+          if (digit < t) break;
+          if (w > maxint / (base - t)) return punycode_overflow;
+          w *= (base - t);
+        }
+
+        bias = adapt(i - oldi, out + 1, (oldi == 0));
+
+        /* i was supposed to wrap around from out+1 to 0,   */
+        /* incrementing n each time, so we'll fix that now: */
+
+        if (i / (out + 1) > maxint - n) return punycode_overflow;
+        n += i / (out + 1);
+        i %= (out + 1);
+
+        /* Insert n at position i of the output: */
+
+        /* not needed for Punycode: */
+        /* if (decode_digit(n) <= base) return punycode_invalid_input; */
+        if (out >= max_out) return punycode_big_output;
+
+        if (case_flags != null) {
+          System.arraycopy(case_flags, i, case_flags,  i + 1, out - i);
+          /* Case of last character determines uppercase flag: */
+          case_flags[i] = (char)(flagged(input[in - 1]) ? 0 :1);
+        }
+
+        System.arraycopy(output, i, output, i + 1,  (out - i));
+        output[i++] = n;
+      }
+
+      output_length[0] = out;
+      return punycode_success;
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestAll.java b/src/com/ibm/icu/dev/test/stringprep/TestAll.java
new file mode 100644
index 0000000..cc7cd21
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestAll.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class TestAll extends TestGroup {
+   
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+                  new String[] { 
+                      "TestIDNA", 
+                      "TestStringPrep",
+                      "TestIDNARef",
+                      "IDNAConformanceTest",
+                  },
+                  "StringPrep and IDNA test"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "StringPrep";
+   
+
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestData.java b/src/com/ibm/icu/dev/test/stringprep/TestData.java
new file mode 100644
index 0000000..d1aa4e8
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestData.java
@@ -0,0 +1,633 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrepParseException;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class TestData {
+    public static final char[][] unicodeIn ={
+        { 
+            0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643, 0x0644,
+            0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A, 0x061F
+        },
+        {
+            0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D, 0x6587, 
+           
+        },
+        {
+            0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073, 0x0074,
+            0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076, 0x00ED, 0x010D,
+            0x0065, 0x0073, 0x006B, 0x0079,
+        },
+        {
+            0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5, 0x05D8,
+            0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9, 0x05DD, 0x05E2,
+            0x05D1, 0x05E8, 0x05D9, 0x05EA,
+        },
+        {
+            0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928, 0x094D,
+            0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902, 0x0928, 0x0939,
+            0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938, 0x0915, 0x0924, 0x0947,
+            0x0939, 0x0948, 0x0902,
+        },
+        {
+            0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E, 0x3092,
+            0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044, 0x306E, 0x304B,
+           
+        },
+    /*  
+        {
+            0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+            0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+            0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C,
+        },
+    */
+        {   
+            0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435, 0x043E,
+            0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432, 0x043E, 0x0440,
+            0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443, 0x0441, 0x0441, 0x043A,
+            0x0438,
+        },
+        {
+            0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F, 0x0070,
+            0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069, 0x006D, 0x0070,
+            0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074, 0x0065, 0x0068, 0x0061,
+            0x0062, 0x006C, 0x0061, 0x0072, 0x0065, 0x006E, 0x0045, 0x0073, 0x0070,
+            0x0061, 0x00F1, 0x006F, 0x006C,
+        },
+        {
+            0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D, 0x6587,
+           
+        },
+        {
+            0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD, 0x006B,
+            0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3, 0x0063, 0x0068,
+            0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069, 0x1EBF, 0x006E, 0x0067,
+            0x0056, 0x0069, 0x1EC7, 0x0074,
+        },
+        {
+            0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F,
+        },
+        {
+            0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069, 0x0074,
+            0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052, 0x002D, 0x004D,
+            0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053,
+        },
+        {
+            0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E, 0x006F,
+            0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061, 0x0079, 0x002D,
+            0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834, 0x6240,
+        },
+        {
+            0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032,
+        },
+        {
+            0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069, 0x3059,
+            0x308B, 0x0035, 0x79D2, 0x524D,
+        },
+        {
+            0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0,
+           
+        },
+        {
+            0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067,
+        },
+        // test non-BMP code points
+        {    
+            0xD800, 0xDF00, 0xD800, 0xDF01, 0xD800, 0xDF02, 0xD800, 0xDF03, 0xD800, 0xDF05,
+            0xD800, 0xDF06, 0xD800, 0xDF07, 0xD800, 0xDF09, 0xD800, 0xDF0A, 0xD800, 0xDF0B,
+           
+        },
+        {
+            0xD800, 0xDF0D, 0xD800, 0xDF0C, 0xD800, 0xDF1E, 0xD800, 0xDF0F, 0xD800, 0xDF16,
+            0xD800, 0xDF15, 0xD800, 0xDF14, 0xD800, 0xDF12, 0xD800, 0xDF10, 0xD800, 0xDF20,
+            0xD800, 0xDF21,
+           
+        },
+        // Greek
+        {
+            0x03b5, 0x03bb, 0x03bb, 0x03b7, 0x03bd, 0x03b9, 0x03ba, 0x03ac
+        },
+        // Maltese
+        {
+            0x0062, 0x006f, 0x006e, 0x0121, 0x0075, 0x0073, 0x0061, 0x0127,
+            0x0127, 0x0061
+        },
+        // Russian
+        {
+            0x043f, 0x043e, 0x0447, 0x0435, 0x043c, 0x0443, 0x0436, 0x0435,
+            0x043e, 0x043d, 0x0438, 0x043d, 0x0435, 0x0433, 0x043e, 0x0432,
+            0x043e, 0x0440, 0x044f, 0x0442, 0x043f, 0x043e, 0x0440, 0x0443,
+            0x0441, 0x0441, 0x043a, 0x0438
+        },
+   
+    };
+
+    public static final String[] asciiIn = {
+        "xn--egbpdaj6bu4bxfgehfvwxn",
+        "xn--ihqwcrb4cv8a8dqg056pqjye",
+        "xn--Proprostnemluvesky-uyb24dma41a",
+        "xn--4dbcagdahymbxekheh6e0a7fei0b",
+        "xn--i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd",
+        "xn--n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa",
+    /*  "xn--989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c",*/
+        "xn--b1abfaaepdrnnbgefbaDotcwatmq2g4l",
+        "xn--PorqunopuedensimplementehablarenEspaol-fmd56a",
+        "xn--ihqwctvzc91f659drss3x8bo0yb",
+        "xn--TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g",
+        "xn--3B-ww4c5e180e575a65lsy2b",
+        "xn---with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n",
+        "xn--Hello-Another-Way--fc4qua05auwb3674vfr0b",
+        "xn--2-u9tlzr9756bt3uc0v",
+        "xn--MajiKoi5-783gue6qz075azm5e",
+        "xn--de-jg4avhby1noc0d",
+        "xn--d9juau41awczczp",
+        "XN--097CCDEKGHQJK",
+        "XN--db8CBHEJLGH4E0AL",
+        "xn--hxargifdar",                       // Greek
+        "xn--bonusaa-5bb1da",                   // Maltese
+        "xn--b1abfaaepdrnnbgefbadotcwatmq2g4l", // Russian (Cyrillic)
+       };
+
+    public static final String[] domainNames = {
+        "slip129-37-118-146.nc.us.ibm.net",
+        "saratoga.pe.utexas.edu",
+        "dial-120-45.ots.utexas.edu",
+        "woo-085.dorms.waller.net",
+        "hd30-049.hil.compuserve.com",
+        "pem203-31.pe.ttu.edu",
+        "56K-227.MaxTNT3.pdq.net",
+        "dial-36-2.ots.utexas.edu",
+        "slip129-37-23-152.ga.us.ibm.net",
+        "ts45ip119.cadvision.com",
+        "sdn-ts-004txaustP05.dialsprint.net",
+        "bar-tnt1s66.erols.com",
+        "101.st-louis-15.mo.dial-access.att.net",
+        "h92-245.Arco.COM",
+        "dial-13-2.ots.utexas.edu",
+        "net-redynet29.datamarkets.com.ar",
+        "ccs-shiva28.reacciun.net.ve",
+        "7.houston-11.tx.dial-access.att.net",
+        "ingw129-37-120-26.mo.us.ibm.net",
+        "dialup6.austintx.com",
+        "dns2.tpao.gov.tr",
+        "slip129-37-119-194.nc.us.ibm.net",
+        "cs7.dillons.co.uk.203.119.193.in-addr.arpa",
+        "swprd1.innovplace.saskatoon.sk.ca",
+        "bikini.bologna.maraut.it",
+        "node91.subnet159-198-79.baxter.com",
+        "cust19.max5.new-york.ny.ms.uu.net",
+        "balexander.slip.andrew.cmu.edu",
+        "pool029.max2.denver.co.dynip.alter.net",
+        "cust49.max9.new-york.ny.ms.uu.net",
+        "s61.abq-dialin2.hollyberry.com",
+
+    };
+    
+    public static final String[] domainNames1Uni = {
+        "\u0917\u0928\u0947\u0936.sanjose.ibm.com",
+        "www.\u0121.com",
+        //"www.\u00E0\u00B3\u00AF.com",
+        "www.\u00C2\u00A4.com",
+        "www.\u00C2\u00A3.com",
+        // "\\u0025", //'%' (0x0025) produces U_IDNA_STD3_ASCII_RULES_ERROR
+        // "\\u005C\\u005C", //'\' (0x005C) produces U_IDNA_STD3_ASCII_RULES_ERROR
+        //"@",
+        //"\\u002F",
+        //"www.\\u0021.com",
+        //"www.\\u0024.com",
+        //"\\u003f",
+        // These yeild U_IDNA_PROHIBITED_ERROR
+        //"\\u00CF\\u0082.com",
+        //"\\u00CE\\u00B2\\u00C3\\u009Fss.com",
+        //"\\u00E2\\u0098\\u00BA.com",
+        "\u00C3\u00BC.com"
+    };
+    public static final String[] domainNamesToASCIIOut = {
+        "xn--31b8a2bwd.sanjose.ibm.com",
+        "www.xn--vea.com",
+        //"www.xn--3 -iia80t.com",
+        "www.xn--bba7j.com",
+        "www.xn--9a9j.com",
+       // "\u0025",
+       // "\u005C\u005C",
+       // "@",
+       // "\u002F",
+       // "www.\u0021.com",
+       // "www.\u0024.com",
+       // "\u003f",
+        "xn--14-ria7423a.com"
+        
+    };
+
+    public static final String[] domainNamesToUnicodeOut = {
+        "\u0917\u0928\u0947\u0936.sanjose.ibm.com",
+        "www.\u0121.com",
+        //"www.\u00E0\u0033\u0020\u0304.com",
+        "www.\u00E2\u00A4.com",
+        "www.\u00E2\u00A3.com",
+       // "\u0025",
+       // "\u005C\u005C",
+       // "@",
+       // "\u002F",
+       // "www.\u0021.com",
+       // "www.\u0024.com",
+       // "\u003f",
+        "\u00E3\u0031\u2044\u0034.com"
+        
+    };
+
+
+    public static class ErrorCase{
+
+        public char[] unicode;
+        public String ascii;
+        public Exception expected;
+        public boolean useSTD3ASCIIRules;
+        public boolean testToUnicode;
+        public boolean testLabel;
+        ErrorCase(char[] uniIn, String asciiIn, Exception ex,
+                   boolean std3, boolean testToUni, boolean testlabel){
+            unicode = uniIn;
+            ascii = asciiIn;
+            expected = ex;
+            useSTD3ASCIIRules = std3;
+            testToUnicode = testToUni;
+            testLabel = testlabel; 
+            
+        }
+    }
+    public static final ErrorCase[] errorCases = {
+          
+        
+        new ErrorCase( new char[]{ 
+            0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+            0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+            0x070F,/*prohibited*/
+            0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+            0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+           
+        },
+        "www.xn--8mb5595fsoa28orucya378bqre2tcwop06c5qbw82a1rffmae0361dea96b.com",
+        new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR),
+        false, true, true),
+
+        new ErrorCase( new char[]{ 
+                0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+                0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+                0x0221, 0x0234/*Unassigned code points*/,
+                0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+               
+            },
+            "www.xn--6la2bz548fj1gua391bf1gb1n59ab29a7ia.com",
+
+            new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR),
+            false, true, true
+        ),
+       new ErrorCase( new char[]{ 
+                0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+                0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+                0x0644, 0x064A, 0x0647,/*Arabic code points. Cannot mix RTL with LTR*/
+                0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+                0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+               
+            },
+            "www.xn--ghBGI4851OiyA33VqrD6Az86C4qF83CtRv93D5xBk15AzfG0nAgA0578DeA71C.com",
+            new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR),
+            false, true, true
+        ),
+        new ErrorCase( new char[]{ 
+                0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+                /* labels cannot begin with an HYPHEN */
+                0x002D, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+                0x002E, 
+                0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+                0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+               
+            
+            },
+            "www.xn----b95Ew8SqA315Ao5FbuMlnNmhA.com",
+            new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),
+            true, true, false
+        ),
+        new ErrorCase( new char[]{ 
+                /* correct ACE-prefix followed by unicode */
+                0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+                0x0078, 0x006e, 0x002d,0x002d,  /* ACE Prefix */
+                0x002D, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+                0x002D, 
+                0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+                0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+               
+            
+            },
+            /* wrong ACE-prefix followed by valid ACE-encoded ASCII */ 
+            "www.XY-----b91I0V65S96C2A355Cw1E5yCeQr19CsnP1mFfmAE0361DeA96B.com",
+            new StringPrepParseException("",StringPrepParseException.ACE_PREFIX_ERROR),
+            false, false, false
+        ),
+        /* cannot verify U_IDNA_VERIFICATION_ERROR */
+
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+            0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,
+            0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,
+            0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C, 
+            0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+           
+          },
+          "www.xn--989AoMsVi5E83Db1D2A355Cv1E0vAk1DwRv93D5xBh15A0Dt30A5JpSD879Ccm6FeA98C.com",
+          new StringPrepParseException("",StringPrepParseException.LABEL_TOO_LONG_ERROR),
+          false, true, true
+        ),  
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, /* www. */
+            0x0030, 0x0644, 0x064A, 0x0647, 0x0031, /* Arabic code points squashed between EN codepoints */
+            0x002e, 0x0063, 0x006f, 0x006d, /* com. */
+           
+          },
+          "www.xn--01-tvdmo.com",
+          new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR),
+          false, true, true
+        ),  
+    
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+            0x206C, 0x0644, 0x064A, 0x0647, 0x206D, // Arabic code points squashed between BN codepoints 
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+           
+          },
+          "www.XN--ghbgi278xia.com",
+          new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR),
+          false, true, true
+        ),
+        new ErrorCase( new char[] {
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+            0x002D, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, // HYPHEN at the start of label 
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+           
+          },
+          "www.-abcde.com",
+          new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),
+          true, true, false
+        ),
+        new ErrorCase( new char[] {
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+            0x0041, 0x0042, 0x0043, 0x0044, 0x0045,0x002D, // HYPHEN at the end of the label
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+           
+          },
+          "www.abcde-.com",
+          new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),
+          true, true, false
+        ),
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+            0x0041, 0x0042, 0x0043, 0x0044, 0x0045,0x0040, // Containing non LDH code point
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+           
+          },
+          "www.abcde@.com",
+          new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),
+          true, true, false
+        ),
+        new ErrorCase( new char[]{
+            0x0077, 0x0077, 0x0077, 0x002e, // www. 
+             // zero length label
+            0x002e, 0x0063, 0x006f, 0x006d, // com. 
+          },
+          "www..com",
+          new StringPrepParseException("",StringPrepParseException.ZERO_LENGTH_LABEL),
+          true, true, false
+        ),
+    };
+
+
+     public static final class ConformanceTestCase{
+         String comment;
+         String input;
+         String output;
+         String profile;
+         int flags;
+         Exception expected;
+         private static byte[] getBytes(String in){
+             if(in==null){
+                 return null;
+             }
+             byte[] bytes = new byte[in.length()];
+             for(int i=0; i < in.length();i++){
+                 bytes[i] = (byte)in.charAt(i);
+             }
+             return bytes;
+         }
+         ConformanceTestCase(String comt, String in, String out,
+                              String prof, int flg, Exception ex)
+                              {
+                                  
+             try{
+                 comment = comt;
+                 byte[] bytes = getBytes(in);
+                 input = new String(bytes,"UTF-8");
+                 bytes = getBytes(out);
+                 output = (bytes==null)? null : new String(bytes,"UTF-8");
+                 profile = prof;
+                 flags = flg;
+                 expected = ex;
+             }catch (Exception e){
+                 e.printStackTrace();
+                 throw new RuntimeException();
+             }
+         }
+       }
+       
+       public static final ConformanceTestCase[] conformanceTestCases =
+       {
+  
+         new ConformanceTestCase(
+           "Case folding ASCII U+0043 U+0041 U+0046 U+0045",
+           "\u0043\u0041\u0046\u0045", "\u0063\u0061\u0066\u0065",
+           "Nameprep", IDNA.DEFAULT, 
+           null
+
+         ),
+         new ConformanceTestCase(
+           "Case folding 8bit U+00DF (german sharp s)",
+           "\u00C3\u009F", "\u0073\u0073", 
+           "Nameprep", IDNA.DEFAULT, 
+           null
+         ),
+         new ConformanceTestCase(
+           "Non-ASCII multibyte space character U+1680",
+           "\u00E1\u009A\u0080", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-ASCII 8bit control character U+0085",
+           "\u00C2\u0085", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-ASCII multibyte control character U+180E",
+           "\u00E1\u00A0\u008E", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-ASCII control character U+1D175",
+           "\u00F0\u009D\u0085\u00B5", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Plane 0 private use character U+F123",
+           "\u00EF\u0084\u00A3", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Plane 15 private use character U+F1234",
+           "\u00F3\u00B1\u0088\u00B4", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Plane 16 private use character U+10F234",
+           "\u00F4\u008F\u0088\u00B4", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-character code point U+8FFFE",
+           "\u00F2\u008F\u00BF\u00BE", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Non-character code point U+10FFFF",
+           "\u00F4\u008F\u00BF\u00BF", null,
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+     /* 
+         {
+           "Surrogate code U+DF42",
+           "\u00ED\u00BD\u0082", null, "Nameprep", InternationalizedDomainNames.DEFAULT,
+           U_IDNA_PROHIBITED_ERROR
+         },
+    */
+         new ConformanceTestCase(
+           "Non-plain text character U+FFFD",
+           "\u00EF\u00BF\u00BD", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Ideographic description character U+2FF5",
+           "\u00E2\u00BF\u00B5", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Display property character U+0341",
+           "\u00CD\u0081", "\u00CC\u0081",
+           "Nameprep", IDNA.DEFAULT, 
+           null
+
+         ),
+
+         new ConformanceTestCase(
+           "Left-to-right mark U+200E",
+           "\u00E2\u0080\u008E", "\u00CC\u0081", 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+
+           "Deprecated U+202A",
+           "\u00E2\u0080\u00AA", "\u00CC\u0081", 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Language tagging character U+E0001",
+           "\u00F3\u00A0\u0080\u0081", "\u00CC\u0081", 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Language tagging character U+E0042",
+           "\u00F3\u00A0\u0081\u0082", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat character U+05BE and LCat characters",
+           "\u0066\u006F\u006F\u00D6\u00BE\u0062\u0061\u0072", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat character U+FD50 and LCat characters",
+           "\u0066\u006F\u006F\u00EF\u00B5\u0090\u0062\u0061\u0072", null,
+           "Nameprep",IDNA.DEFAULT ,
+           new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat character U+FB38 and LCat characters",
+           "\u0066\u006F\u006F\u00EF\u00B9\u00B6\u0062\u0061\u0072", "\u0066\u006F\u006F \u00d9\u008e\u0062\u0061\u0072",
+           "Nameprep", IDNA.DEFAULT,
+           null
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat without trailing RandALCat U+0627 U+0031",
+           "\u00D8\u00A7\u0031", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)
+         ),
+         new ConformanceTestCase(
+           "Bidi: RandALCat character U+0627 U+0031 U+0628",
+           "\u00D8\u00A7\u0031\u00D8\u00A8", "\u00D8\u00A7\u0031\u00D8\u00A8",
+           "Nameprep", IDNA.DEFAULT,
+           null
+         ),
+         new ConformanceTestCase(
+           "Unassigned code point U+E0002",
+           "\u00F3\u00A0\u0080\u0082", null, 
+           "Nameprep", IDNA.DEFAULT,
+           new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR)
+         ),
+
+    /*  // Invalid UTF-8
+         {
+           "Larger test (shrinking)",
+           "X\u00C2\u00AD\u00C3\u00DF\u00C4\u00B0\u00E2\u0084\u00A1\u006a\u00cc\u008c\u00c2\u00a0\u00c2"
+           "\u00aa\u00ce\u00b0\u00e2\u0080\u0080", "xssi\u00cc\u0087""tel\u00c7\u00b0 a\u00ce\u00b0 ",
+           "Nameprep",
+           InternationalizedDomainNames.DEFAULT, U_ZERO_ERROR
+         },
+        {
+
+           "Larger test (expanding)",
+           "X\u00C3\u00DF\u00e3\u008c\u0096\u00C4\u00B0\u00E2\u0084\u00A1\u00E2\u0092\u009F\u00E3\u008c\u0080",
+           "xss\u00e3\u0082\u00ad\u00e3\u0083\u00ad\u00e3\u0083\u00a1\u00e3\u0083\u00bc\u00e3\u0083\u0088"
+           "\u00e3\u0083\u00ab""i\u00cc\u0087""tel\u0028""d\u0029\u00e3\u0082\u00a2\u00e3\u0083\u0091"
+           "\u00e3\u0083\u00bc\u00e3\u0083\u0088"
+           "Nameprep",
+           InternationalizedDomainNames.DEFAULT, U_ZERO_ERROR
+         },
+      */
+    };
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java b/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
new file mode 100644
index 0000000..0a0a890
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
@@ -0,0 +1,910 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import java.io.InputStream;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.StringPrep;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @author ram
+ */
+public class TestIDNA extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TestIDNA().run(args);
+    }
+    private StringPrepParseException unassignedException = new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR);
+    public void TestToUnicode() throws Exception{
+        for(int i=0; i<TestData.asciiIn.length; i++){
+            // test StringBuffer toUnicode
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.DEFAULT, null);
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.ALLOW_UNASSIGNED, null);
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.USE_STD3_RULES, null); 
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.USE_STD3_RULES|IDNA.ALLOW_UNASSIGNED, null); 
+    
+        }
+    }
+    
+    public void TestToASCII() throws Exception{
+        for(int i=0; i<TestData.asciiIn.length; i++){
+            // test StringBuffer toUnicode
+            doTestToASCII(new String(TestData.unicodeIn[i]),TestData.asciiIn[i],IDNA.DEFAULT, null);
+            doTestToASCII(new String(TestData.unicodeIn[i]),TestData.asciiIn[i],IDNA.ALLOW_UNASSIGNED, null);
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.USE_STD3_RULES, null); 
+            doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNA.USE_STD3_RULES|IDNA.ALLOW_UNASSIGNED, null); 
+    
+        }
+    }
+    
+    public void TestIDNToASCII() throws Exception{
+        for(int i=0; i<TestData.domainNames.length; i++){
+            doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNA.DEFAULT, null);
+            doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNA.ALLOW_UNASSIGNED, null);
+            doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNA.USE_STD3_RULES, null);
+            doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNA.ALLOW_UNASSIGNED|IDNA.USE_STD3_RULES, null);
+        }
+        
+        for(int i=0; i<TestData.domainNames1Uni.length; i++){
+            doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNA.DEFAULT, null);
+            doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNA.ALLOW_UNASSIGNED, null);
+        }
+    }
+    public void TestIDNToUnicode() throws Exception{
+        for(int i=0; i<TestData.domainNames.length; i++){
+            doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNA.DEFAULT, null);
+            doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNA.ALLOW_UNASSIGNED, null);
+            doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNA.USE_STD3_RULES, null);
+            doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNA.ALLOW_UNASSIGNED|IDNA.USE_STD3_RULES, null);
+        }
+        for(int i=0; i<TestData.domainNamesToASCIIOut.length; i++){
+            doTestIDNToUnicode(TestData.domainNamesToASCIIOut[i],TestData.domainNamesToUnicodeOut[i],IDNA.DEFAULT, null);
+            doTestIDNToUnicode(TestData.domainNamesToASCIIOut[i],TestData.domainNamesToUnicodeOut[i],IDNA.ALLOW_UNASSIGNED, null);
+        }
+    }
+    
+    private void doTestToUnicode(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNA.convertToUnicode(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToUnicode did not return expected result with options : "+ options + 
+                      " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            
+            StringBuffer out = IDNA.convertToUnicode(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options + 
+                     " Expected: " + prettify(expected)+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNA.convertToUnicode(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options +
+                     " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("Did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("Did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    
+    private void doTestIDNToUnicode(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNA.convertIDNToUnicode(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToUnicode did not return expected result with options : "+ options + 
+                      " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToUnicode did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            StringBuffer out = IDNA.convertIDNToUnicode(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options + 
+                     " Expected: " + prettify(expected)+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToUnicode did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNA.convertIDNToUnicode(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options +
+                     " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("Did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("Did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    private void doTestToASCII(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNA.convertToASCII(src,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+                errln("convertToASCII did not return expected result with options : "+ options + 
+                      " Expected: " + expected+" Got: "+out);
+            }           
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +"\n Got:  "+ ex.toString() +"\n Expected: " +ex.toString());
+            }
+        }
+        
+        try{            
+            StringBuffer out = IDNA.convertToASCII(inBuf,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+               errln("convertToASCII did not return expected result with options : "+ options + 
+                     " Expected: " + expected+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNA.convertToASCII(inIter,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+               errln("convertToASCII did not return expected result with options : "+ options +
+                     " Expected: " + expected+" Got: "+ out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    private void doTestIDNToASCII(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNA.convertIDNToASCII(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToIDNASCII did not return expected result with options : "+ options + 
+                      " Expected: " + expected+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToIDNASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToIDNASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            StringBuffer out = IDNA.convertIDNToASCII(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToIDNASCII did not return expected result with options : "+ options + 
+                     " Expected: " + expected+" Got: "+out);
+            }           
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToIDNASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToIDNASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNA.convertIDNToASCII(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertIDNToASCII did not return expected result with options : "+ options +
+                     " Expected: " + expected+" Got: "+ out);
+            }
+            
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertIDNToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertIDNToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    public void TestConformance()throws Exception{
+        for(int i=0; i<TestData.conformanceTestCases.length;i++){
+            
+            TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+            if(testCase.expected != null){
+                //Test toASCII
+                doTestToASCII(testCase.input,testCase.output,IDNA.DEFAULT,testCase.expected);
+                doTestToASCII(testCase.input,testCase.output,IDNA.ALLOW_UNASSIGNED,testCase.expected);
+            }
+            //Test toUnicode
+            //doTestToUnicode(testCase.input,testCase.output,IDNA.DEFAULT,testCase.expected);
+        }
+    }
+    public void TestNamePrepConformance() throws Exception{
+        InputStream stream = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/uidna.spp");
+        StringPrep namePrep = new StringPrep(stream);
+        for(int i=0; i<TestData.conformanceTestCases.length;i++){
+            TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+            UCharacterIterator iter = UCharacterIterator.getInstance(testCase.input);
+            try{
+                StringBuffer output = namePrep.prepare(iter,StringPrep.DEFAULT);
+                if(testCase.output !=null && output!=null && !testCase.output.equals(output.toString())){
+                    errln("Did not get the expected output. Expected: " + prettify(testCase.output)+
+                          " Got: "+ prettify(output) );
+                }
+                if(testCase.expected!=null && !unassignedException.equals(testCase.expected)){
+                    errln("Did not get the expected exception. The operation succeeded!");
+                }
+            }catch(StringPrepParseException ex){
+                if(testCase.expected == null || !ex.equals(testCase.expected)){
+                    errln("Did not get the expected exception for source: " +testCase.input +" Got:  "+ ex.toString());
+                }
+            }
+            
+            try{
+                iter.setToStart();
+                StringBuffer output = namePrep.prepare(iter,StringPrep.ALLOW_UNASSIGNED);
+                if(testCase.output !=null && output!=null && !testCase.output.equals(output.toString())){
+                    errln("Did not get the expected output. Expected: " + prettify(testCase.output)+
+                          " Got: "+ prettify(output) );
+                }
+                if(testCase.expected!=null && !unassignedException.equals(testCase.expected)){
+                    errln("Did not get the expected exception. The operation succeeded!");
+                }
+            }catch(StringPrepParseException ex){
+                if(testCase.expected == null || !ex.equals(testCase.expected)){
+                    errln("Did not get the expected exception for source: " +testCase.input +" Got:  "+ ex.toString());
+                }
+            }
+        }
+        
+    }
+    public void TestErrorCases() throws Exception{
+        for(int i=0; i < TestData.errorCases.length; i++){
+            TestData.ErrorCase errCase = TestData.errorCases[i];
+            if(errCase.testLabel==true){
+                // Test ToASCII
+                doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNA.DEFAULT,errCase.expected);
+                doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNA.ALLOW_UNASSIGNED,errCase.expected);
+                if(errCase.useSTD3ASCIIRules){
+                    doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNA.USE_STD3_RULES,errCase.expected);
+                }
+            }
+            if(errCase.useSTD3ASCIIRules!=true){
+                
+                // Test IDNToASCII
+                doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNA.DEFAULT,errCase.expected);
+                doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNA.ALLOW_UNASSIGNED,errCase.expected);
+                
+            }else{
+                doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNA.USE_STD3_RULES,errCase.expected);
+            }
+            
+            //TestToUnicode
+            if(false && errCase.testToUnicode==true){
+                if(errCase.useSTD3ASCIIRules!=true){
+                    // Test IDNToUnicode
+                    doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNA.DEFAULT,errCase.expected);
+                    doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNA.ALLOW_UNASSIGNED,errCase.expected);
+                
+                }else{
+                    doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNA.USE_STD3_RULES,errCase.expected);
+                }
+            }
+        }
+    }
+    private void doTestCompare(String s1, String s2, boolean isEqual){
+        try{
+            int retVal = IDNA.compare(s1,s2,IDNA.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                      " s2: "+prettify(s2));
+            }
+            retVal = IDNA.compare(new StringBuffer(s1), new StringBuffer(s2), IDNA.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+            retVal = IDNA.compare(UCharacterIterator.getInstance(s1), UCharacterIterator.getInstance(s2), IDNA.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+            errln("Unexpected exception thrown by IDNA.compare");
+        }
+        
+        try{
+            int retVal = IDNA.compare(s1,s2,IDNA.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                      " s2: "+prettify(s2));
+            }
+            retVal = IDNA.compare(new StringBuffer(s1), new StringBuffer(s2), IDNA.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+            retVal = IDNA.compare(UCharacterIterator.getInstance(s1), UCharacterIterator.getInstance(s2), IDNA.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+        }catch(Exception e){
+            errln("Unexpected exception thrown by IDNA.compare");
+        }
+    }
+    public void TestCompare() throws Exception{
+        String www = "www.";
+        String com = ".com";
+        StringBuffer source = new StringBuffer(www);
+        StringBuffer uni0   = new StringBuffer(www);
+        StringBuffer uni1   = new StringBuffer(www);
+        StringBuffer ascii0 = new StringBuffer(www);
+        StringBuffer ascii1 = new StringBuffer(www);
+
+        uni0.append(TestData.unicodeIn[0]);
+        uni0.append(com);
+
+        uni1.append(TestData.unicodeIn[1]);
+        uni1.append(com);
+
+        ascii0.append(TestData.asciiIn[0]);
+        ascii0.append(com);
+
+        ascii1.append(TestData.asciiIn[1]);
+        ascii1.append(com);
+
+        for(int i=0;i< TestData.unicodeIn.length; i++){
+
+            // for every entry in unicodeIn array
+            // prepend www. and append .com
+            source.setLength(4);
+            source.append(TestData.unicodeIn[i]);
+            source.append(com);
+            
+            // a) compare it with itself
+            doTestCompare(source.toString(),source.toString(),true);
+        
+            // b) compare it with asciiIn equivalent
+            doTestCompare(source.toString(),www+TestData.asciiIn[i]+com,true);
+        
+            // c) compare it with unicodeIn not equivalent
+            if(i==0){
+                doTestCompare(source.toString(), uni1.toString(), false);
+            }else{
+                doTestCompare(source.toString(),uni0.toString(), false);
+            }
+            // d) compare it with asciiIn not equivalent
+            if(i==0){
+                doTestCompare(source.toString(),ascii1.toString(), false);
+            }else{
+                doTestCompare(source.toString(),ascii0.toString(), false);
+            }
+
+        }
+    }
+
+    //  test and ascertain
+    //  func(func(func(src))) == func(src)
+    public void doTestChainingToASCII(String source)throws Exception{
+        StringBuffer expected; 
+        StringBuffer chained;
+        
+        // test convertIDNToASCII
+        expected = IDNA.convertIDNToASCII(source,IDNA.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNA.convertIDNToASCII(chained,IDNA.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertIDNToASCII");
+        }
+        // test convertIDNToA
+        expected = IDNA.convertToASCII(source,IDNA.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNA.convertToASCII(chained,IDNA.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertToASCII");
+        }   
+    }
+    //  test and ascertain
+    //  func(func(func(src))) == func(src)
+    public void doTestChainingToUnicode(String source)throws Exception{
+        StringBuffer expected; 
+        StringBuffer chained;
+        
+        // test convertIDNToUnicode
+        expected = IDNA.convertIDNToUnicode(source,IDNA.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNA.convertIDNToUnicode(chained,IDNA.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertIDNToUnicode");
+        }
+        // test convertIDNToA
+        expected = IDNA.convertToUnicode(source,IDNA.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNA.convertToUnicode(chained,IDNA.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertToUnicode");
+        }   
+    }
+    public void TestChaining() throws Exception{
+        for(int i=0; i< TestData.asciiIn.length; i++){
+            doTestChainingToUnicode(TestData.asciiIn[i]);
+        }
+        for(int i=0; i< TestData.unicodeIn.length; i++){
+            doTestChainingToASCII(new String(TestData.unicodeIn[i]));
+        }
+    }
+    
+
+    /* IDNA RFC Says:
+    A label is an individual part of a domain name.  Labels are usually
+    shown separated by dots; for example, the domain name
+    "www.example.com" is composed of three labels: "www", "example", and
+    "com".  (The zero-length root label described in [STD13], which can
+    be explicit as in "www.example.com." or implicit as in
+    "www.example.com", is not considered a label in this specification.)
+    */
+    public void TestRootLabelSeparator() throws Exception{
+        String www = "www.";
+        String com = ".com."; //root label separator
+        StringBuffer source = new StringBuffer(www);
+        StringBuffer uni0   = new StringBuffer(www);
+        StringBuffer uni1   = new StringBuffer(www);
+        StringBuffer ascii0 = new StringBuffer(www);
+        StringBuffer ascii1 = new StringBuffer(www);
+
+        uni0.append(TestData.unicodeIn[0]);
+        uni0.append(com);
+
+        uni1.append(TestData.unicodeIn[1]);
+        uni1.append(com);
+
+        ascii0.append(TestData.asciiIn[0]);
+        ascii0.append(com);
+
+        ascii1.append(TestData.asciiIn[1]);
+        ascii1.append(com);
+
+        for(int i=0;i< TestData.unicodeIn.length; i++){
+
+            // for every entry in unicodeIn array
+            // prepend www. and append .com
+            source.setLength(4);
+            source.append(TestData.unicodeIn[i]);
+            source.append(com);
+            
+            // a) compare it with itself
+            doTestCompare(source.toString(),source.toString(),true);
+        
+            // b) compare it with asciiIn equivalent
+            doTestCompare(source.toString(),www+TestData.asciiIn[i]+com,true);
+        
+            // c) compare it with unicodeIn not equivalent
+            if(i==0){
+                doTestCompare(source.toString(), uni1.toString(), false);
+            }else{
+                doTestCompare(source.toString(),uni0.toString(), false);
+            }
+            // d) compare it with asciiIn not equivalent
+            if(i==0){
+                doTestCompare(source.toString(),ascii1.toString(), false);
+            }else{
+                doTestCompare(source.toString(),ascii0.toString(), false);
+            }
+
+        }
+
+    }
+    
+    
+    private static final int loopCount = 100;
+    private static final int maxCharCount = 15;
+   // private static final int maxCodePoint = 0x10ffff;
+    private Random random = null;
+    
+    /**
+     * Return a random integer i where 0 <= i < n.
+     * A special function that gets random codepoints from planes 0,1,2 and 14
+     */
+    private int rand_uni()
+    {
+       int retVal = (int)(random.nextLong()& 0x3FFFF);
+       if(retVal >= 0x30000){
+           retVal+=0xB0000;
+       }
+       return retVal;
+    }
+
+    private int randi(int n){
+        return (random.nextInt(0x7fff) % (n+1));
+    }
+
+    private StringBuffer getTestSource(StringBuffer fillIn) {
+        // use uniform seed value from the framework
+        if(random==null){
+            random = createRandom();
+        }
+        int i = 0;
+        int charCount = (randi(maxCharCount) + 1);
+        while (i <charCount ) {
+            int codepoint = rand_uni();
+            if(codepoint == 0x0000){
+                continue;
+            }
+            UTF16.append(fillIn, codepoint);
+            i++;
+        }
+        return fillIn;
+       
+    }
+    public void MonkeyTest() throws Exception{
+         StringBuffer source = new StringBuffer();
+         /* do the monkey test   */       
+         for(int i=0; i<loopCount; i++){
+             source.setLength(0);
+             getTestSource(source);
+             doTestCompareReferenceImpl(source);
+         }
+         
+         // test string with embedded null  
+         source.append( "\\u0000\\u2109\\u3E1B\\U000E65CA\\U0001CAC5" );
+                           
+         source = new StringBuffer(Utility.unescape(source.toString()));
+         doTestCompareReferenceImpl(source);
+         
+         //StringBuffer src = new StringBuffer(Utility.unescape("\\uDEE8\\U000E228C\\U0002EE8E\\U000E6350\\U00024DD9\u4049\\U000E0DE4\\U000E448C\\U0001869B\\U000E3380\\U00016A8E\\U000172D5\\U0001C408\\U000E9FB5"));
+         //doTestCompareReferenceImpl(src);
+         
+         //test deletion of code points
+         source = new StringBuffer(Utility.unescape("\\u043f\\u00AD\\u034f\\u043e\\u0447\\u0435\\u043c\\u0443\\u0436\\u0435\\u043e\\u043d\\u0438\\u043d\\u0435\\u0433\\u043e\\u0432\\u043e\\u0440\\u044f\\u0442\\u043f\\u043e\\u0440\\u0443\\u0441\\u0441\\u043a\\u0438"));
+         StringBuffer expected = new StringBuffer("xn--b1abfaaepdrnnbgefbadotcwatmq2g4l");
+         doTestCompareReferenceImpl(source);
+         doTestToASCII(source.toString(),expected.toString(), IDNA.DEFAULT, null);
+    }
+    private void doTestCompareReferenceImpl(StringBuffer src) throws Exception{
+        
+        StringBuffer label = src;  
+
+        StringPrepParseException expected = null;
+        StringBuffer ascii = null;
+        int options = IDNA.DEFAULT;
+        logln("Comparing idnaref_toASCII with uidna_toASCII for input: " + prettify(label));
+        try{       
+            ascii = IDNAReference.convertToASCII(label, options);
+        }catch( StringPrepParseException e){
+            expected = e;
+            if(e.equals(unassignedException)){
+                options = IDNA.ALLOW_UNASSIGNED;
+                expected = null;
+                try{
+                    ascii = IDNAReference.convertToASCII(label, options);
+                }catch( StringPrepParseException ex){
+                    expected = ex;                  
+                }
+            }
+        }
+        
+        doTestToASCII(label.toString(), 
+                      (ascii == null) ? null : ascii.toString(),
+                      options,
+                      expected);
+
+        logln("Comparing idnaref_toUnicode with uidna_toUnicode for input: " + prettify(label));
+        StringBuffer uni =null;
+        
+        if(expected == null){
+            options = IDNA.DEFAULT;
+            try{
+                 uni = IDNAReference.convertToUnicode(ascii, options);
+            }catch( StringPrepParseException e ){
+                expected = e;
+                if(expected.equals(unassignedException)){
+                    options = IDNA.ALLOW_UNASSIGNED;
+                    expected = null;
+                    try{
+                        uni = IDNAReference.convertToUnicode(ascii, options);
+                    }catch(StringPrepParseException ex){
+                        expected = ex;
+                    }
+                }
+            }
+            doTestToUnicode(ascii.toString(),
+                            (uni==null)? null : uni.toString(),
+                            options,
+                            expected);
+        }
+
+    }
+    public void TestCompareRefImpl() throws Exception{
+        
+        for(int i = 0x40000 ; i< 0x10ffff; i++){
+            StringBuffer src = new StringBuffer();
+           
+            if(isQuick()==true && i> 0x1FFFF){
+                return;
+            }
+            if(i >= 0x30000 && i<=0xf0000){
+               i+=0xB0000;
+            }
+            UTF16.append(src,i);
+            doTestCompareReferenceImpl(src);
+
+        }  
+    }
+    public void TestUnicode32Norm() {
+        /*
+         * test Unicode 3.2 normalization, before Public Review Issue #29
+         * see cnormtst.c TestComposition()
+         */
+        final String strings[]={
+            "\u1100\u0300\u1161\u0327",
+            "\u0b47\u0300\u0b3e\u0327"
+        };
+
+        String ascii = null, unicode = null;
+        int i;
+
+        for(i=0; i<strings.length; ++i) {
+            try {
+                ascii=IDNA.convertToASCII(strings[i], 0).toString();
+                unicode=IDNA.convertToUnicode(ascii, 0).toString();
+            } catch(StringPrepParseException ex) {
+                errln("string " + i + " gets exception " + ex.toString());
+            }
+            
+            if(unicode == null || unicode.compareTo(ascii) != 0) {
+                String uc = unicode == null? "(null)" : unicode;
+                
+                errln("string " + i + " yields " + uc +" instead of " + ascii);
+            }
+        }
+    }
+    public void TestJB4490(){
+        String[] in = new String[]{
+                "\u00F5\u00dE\u00dF\u00dD",
+                "\uFB00\uFB01"
+               };
+        for ( int i=0; i< in.length; i++){   
+            try{
+                String ascii = IDNA.convertToASCII(in[i],IDNA.DEFAULT).toString();
+                try{
+                    String unicode = IDNA.convertToUnicode(ascii,IDNA.DEFAULT).toString();
+                    logln("result " + unicode);
+                }catch(StringPrepParseException ex){
+                    errln("Unexpected exception for convertToUnicode: " + ex.getMessage());
+                }
+            }catch(StringPrepParseException ex){
+                errln("Unexpected exception for convertToASCII: " + ex.getMessage());
+            }
+        }
+    }
+    public void TestJB4475(){
+        String[] in = new String[]{
+                        "TEST",
+                        "test"
+                       };
+        for ( int i=0; i< in.length; i++){
+            
+            try{
+                String ascii = IDNA.convertToASCII(in[i],IDNA.DEFAULT).toString();
+                if(!ascii.equals(in[i])){
+                    errln("Did not get the expected string for convertToASCII. Expected: "+ in[i] +" Got: " + ascii);
+                }
+            }catch(StringPrepParseException ex){
+                errln("Unexpected exception: " + ex.getMessage());
+            }
+        }
+            
+    }
+        
+    public void TestDebug(){     
+        try{
+            String src = "\u00ED4dn";
+            String uni = IDNA.convertToUnicode(src,IDNA.DEFAULT).toString();
+            if(!uni.equals(src)){
+                errln("Did not get the expected result. Expected: "+ prettify(src) +" Got: " +uni);
+            }
+        }catch(StringPrepParseException ex){
+            logln("Unexpected exception: " + ex.getMessage());
+        }
+        try{
+            String ascii = IDNA.convertToASCII("\u00AD",IDNA.DEFAULT).toString();
+            if(ascii!=null){
+                errln("Did not get the expected exception");
+            }
+        }catch(StringPrepParseException ex){
+            logln("Got the expected exception: " + ex.getMessage());
+        }
+    }
+    public void TestJB5273(){
+        String INVALID_DOMAIN_NAME = "xn--m\u00FCller.de";
+        try {
+            IDNA.convertIDNToUnicode(INVALID_DOMAIN_NAME, IDNA.DEFAULT);
+            IDNA.convertIDNToUnicode(INVALID_DOMAIN_NAME, IDNA.USE_STD3_RULES);
+
+        } catch (StringPrepParseException ex) {
+            errln("Unexpected exception: " + ex.getMessage());
+        } catch (ArrayIndexOutOfBoundsException ex) {
+            errln("Got an ArrayIndexOutOfBoundsException calling convertIDNToUnicode(\"" + INVALID_DOMAIN_NAME + "\")");
+        }
+        
+        String domain = "xn--m\u00FCller.de";
+        try{
+            IDNA.convertIDNToUnicode(domain, IDNA.DEFAULT);
+        }catch(StringPrepParseException ex){
+            logln("Got the expected exception. "+ex.getMessage());
+        }catch (Exception ex){
+            errln("Unexpected exception: " + ex.getMessage());
+        }
+        try{
+            IDNA.convertIDNToUnicode(domain, IDNA.USE_STD3_RULES);
+        }catch(StringPrepParseException ex){
+            logln("Got the expected exception. "+ex.getMessage());
+        }catch (Exception ex){
+            errln("Unexpected exception: " + ex.getMessage());
+        }
+        try{
+            IDNA.convertToUnicode("xn--m\u00FCller", IDNA.DEFAULT);
+        }catch(Exception ex){
+            errln("ToUnicode operation failed! "+ex.getMessage());
+        }
+        try{
+            IDNA.convertToUnicode("xn--m\u00FCller", IDNA.USE_STD3_RULES);
+        }catch(Exception ex){
+            errln("ToUnicode operation failed! "+ex.getMessage());
+        }
+        try{
+            IDNA.convertIDNToUnicode("xn--m\u1234ller", IDNA.USE_STD3_RULES);
+        }catch(StringPrepParseException ex){
+            errln("ToUnicode operation failed! "+ex.getMessage());
+        }
+    }
+    
+    public void TestLength(){
+        String ul = "my_very_very_very_very_very_very_very_very_very_very_very_very_very_long_and_incredibly_uncreative_domain_label";
+
+        /* this unicode string is longer than MAX_LABEL_BUFFER_SIZE and produces an 
+           IDNA prepared string (including xn--)that is exactly 63 bytes long */
+        String ul1 ="\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774"+
+                    "\uD55C\uAD6D\uC5B4\uB97C\uC774\u00AD\u034F\u1806\u180B"+
+                    "\u180C\u180D\u200B\u200C\u200D\u2060\uFE00\uFE01\uFE02"+
+                    "\uFE03\uFE04\uFE05\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B"+
+                    "\uFE0C\uFE0D\uFE0E\uFE0F\uFEFF\uD574\uD55C\uB2E4\uBA74"+
+                    "\uC138\u0041\u00AD\u034F\u1806\u180B\u180C\u180D\u200B"+
+                    "\u200C\u200D\u2060\uFE00\uFE01\uFE02\uFE03\uFE04\uFE05"+
+                    "\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B\uFE0C\uFE0D\uFE0E"+
+                    "\uFE0F\uFEFF\u00AD\u034F\u1806\u180B\u180C\u180D\u200B"+
+                    "\u200C\u200D\u2060\uFE00\uFE01\uFE02\uFE03\uFE04\uFE05"+
+                    "\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B\uFE0C\uFE0D\uFE0E"+
+                    "\uFE0F\uFEFF\u00AD\u034F\u1806\u180B\u180C\u180D\u200B"+
+                    "\u200C\u200D\u2060\uFE00\uFE01\uFE02\uFE03\uFE04\uFE05"+
+                    "\uFE06\uFE07\uFE08\uFE09\uFE0A\uFE0B\uFE0C\uFE0D\uFE0E"+
+                    "\uFE0F\uFEFF";
+        try{
+            IDNA.convertToASCII(ul, IDNA.DEFAULT);
+            errln("IDNA.convertToUnicode did not fail!");
+        }catch (StringPrepParseException ex){
+            if(ex.getError()!= StringPrepParseException.LABEL_TOO_LONG_ERROR){
+                errln("IDNA.convertToASCII failed with error: "+ex.toString());
+            }else{
+                logln("IDNA.convertToASCII(ul, IDNA.DEFAULT) Succeeded");
+            }
+        }
+        try{
+            IDNA.convertToASCII(ul1, IDNA.DEFAULT);
+        }catch (StringPrepParseException ex){
+            errln("IDNA.convertToASCII failed with error: "+ex.toString());
+        }
+        try{
+            IDNA.convertToUnicode(ul1, IDNA.DEFAULT);
+        }catch (StringPrepParseException ex){
+            errln("IDNA.convertToASCII failed with error: "+ex.toString());
+        }
+        try{
+            IDNA.convertToUnicode(ul, IDNA.DEFAULT);
+        }catch (StringPrepParseException ex){
+            errln("IDNA.convertToASCII failed with error: "+ex.toString());
+        }
+        
+        String idn = "my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.my_very_very_long_and_incredibly_uncreative_domain_label.ibm.com";
+        try{
+            IDNA.convertIDNToASCII(idn, IDNA.DEFAULT);
+            errln("IDNA.convertToUnicode did not fail!");
+        }catch (StringPrepParseException ex){
+            if(ex.getError()!= StringPrepParseException.DOMAIN_NAME_TOO_LONG_ERROR){
+                errln("IDNA.convertToASCII failed with error: "+ex.toString());
+            }else{
+                logln("IDNA.convertToASCII(idn, IDNA.DEFAULT) Succeeded");
+            }
+        }
+        try{
+            IDNA.convertIDNToUnicode(idn, IDNA.DEFAULT);
+            errln("IDNA.convertToUnicode did not fail!");  
+        }catch (StringPrepParseException ex){
+            if(ex.getError()!= StringPrepParseException.DOMAIN_NAME_TOO_LONG_ERROR){
+                errln("IDNA.convertToUnicode failed with error: "+ex.toString());
+            }else{
+                logln("IDNA.convertToUnicode(idn, IDNA.DEFAULT) Succeeded");
+            }
+        }
+        
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java b/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java
new file mode 100644
index 0000000..31f550e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java
@@ -0,0 +1,621 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class TestIDNARef extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TestIDNARef().run(args);
+    }
+    private StringPrepParseException unassignedException = new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR);
+    public void TestToUnicode() throws Exception{
+        try{
+            for(int i=0; i<TestData.asciiIn.length; i++){
+                // test StringBuffer toUnicode
+                doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.DEFAULT, null);
+                doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.ALLOW_UNASSIGNED, null);
+                //doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.USE_STD3_RULES, null); 
+                //doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.USE_STD3_RULES|IDNAReference.ALLOW_UNASSIGNED, null); 
+        
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    
+    public void TestToASCII() throws Exception{
+        try{
+            for(int i=0; i<TestData.asciiIn.length; i++){
+                // test StringBuffer toUnicode
+                doTestToASCII(new String(TestData.unicodeIn[i]),TestData.asciiIn[i],IDNAReference.DEFAULT, null);
+                doTestToASCII(new String(TestData.unicodeIn[i]),TestData.asciiIn[i],IDNAReference.ALLOW_UNASSIGNED, null);
+                //doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.USE_STD3_RULES, null); 
+                //doTestToUnicode(TestData.asciiIn[i],new String(TestData.unicodeIn[i]),IDNAReference.USE_STD3_RULES|IDNAReference.ALLOW_UNASSIGNED, null); 
+        
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    
+    public void TestIDNToASCII() throws Exception{
+        try{
+            for(int i=0; i<TestData.domainNames.length; i++){
+                doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.DEFAULT, null);
+                doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.ALLOW_UNASSIGNED, null);
+                doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.USE_STD3_RULES, null);
+                doTestIDNToASCII(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.ALLOW_UNASSIGNED|IDNAReference.USE_STD3_RULES, null);
+            }
+            
+            for(int i=0; i<TestData.domainNames1Uni.length; i++){
+                doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNAReference.DEFAULT, null);
+                doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNAReference.ALLOW_UNASSIGNED, null);
+                doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNAReference.USE_STD3_RULES, null);
+                doTestIDNToASCII(TestData.domainNames1Uni[i],TestData.domainNamesToASCIIOut[i],IDNAReference.ALLOW_UNASSIGNED|IDNAReference.USE_STD3_RULES, null);
+    
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    public void TestIDNToUnicode() throws Exception{
+        try{
+            for(int i=0; i<TestData.domainNames.length; i++){
+                doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.DEFAULT, null);
+                doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.ALLOW_UNASSIGNED, null);
+                doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.USE_STD3_RULES, null);
+                doTestIDNToUnicode(TestData.domainNames[i],TestData.domainNames[i],IDNAReference.ALLOW_UNASSIGNED|IDNAReference.USE_STD3_RULES, null);
+            }
+            for(int i=0; i<TestData.domainNamesToASCIIOut.length; i++){
+                doTestIDNToUnicode(TestData.domainNamesToASCIIOut[i],TestData.domainNamesToUnicodeOut[i],IDNAReference.DEFAULT, null);
+                doTestIDNToUnicode(TestData.domainNamesToASCIIOut[i],TestData.domainNamesToUnicodeOut[i],IDNAReference.ALLOW_UNASSIGNED, null);
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    
+    private void doTestToUnicode(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNAReference.convertToUnicode(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToUnicode did not return expected result with options : "+ options + 
+                      " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            
+            StringBuffer out = IDNAReference.convertToUnicode(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options + 
+                     " Expected: " + prettify(expected)+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNAReference.convertToUnicode(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options +
+                     " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("Did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("Did not get the expected exception for source: " + prettify(src) +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    
+    private void doTestIDNToUnicode(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNAReference.convertIDNToUnicode(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToUnicode did not return expected result with options : "+ options + 
+                      " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToUnicode did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            StringBuffer out = IDNAReference.convertIDNToUnicode(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options + 
+                     " Expected: " + prettify(expected)+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToUnicode did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToUnicode did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNAReference.convertIDNToUnicode(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToUnicode did not return expected result with options : "+ options +
+                     " Expected: " + prettify(expected)+" Got: "+prettify(out));
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("Did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("Did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    private void doTestToASCII(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNAReference.convertToASCII(src,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+                errln("convertToASCII did not return expected result with options : "+ options + 
+                      " Expected: " + expected+" Got: "+out);
+            }           
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{            
+            StringBuffer out = IDNAReference.convertToASCII(inBuf,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+               errln("convertToASCII did not return expected result with options : "+ options + 
+                     " Expected: " + expected+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNAReference.convertToASCII(inIter,options);
+            if(!unassignedException.equals(expectedException) && expected!=null && out != null && expected!=null && out != null && !out.toString().equals(expected.toLowerCase())){
+               errln("convertToASCII did not return expected result with options : "+ options +
+                     " Expected: " + expected+" Got: "+ out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !expectedException.equals(ex)){
+                errln("convertToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    private void doTestIDNToASCII(String src, String expected, int options, Object expectedException) 
+                throws Exception{
+        
+        StringBuffer inBuf = new StringBuffer(src);
+        UCharacterIterator inIter = UCharacterIterator.getInstance(src);
+        try{
+            
+            StringBuffer out = IDNAReference.convertIDNToASCII(src,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+                errln("convertToIDNAReferenceASCII did not return expected result with options : "+ options + 
+                      " Expected: " + expected+" Got: "+out);
+            }
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToIDNAReferenceASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToIDNAReferenceASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        try{
+            StringBuffer out = IDNAReference.convertIDNtoASCII(inBuf,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertToIDNAReferenceASCII did not return expected result with options : "+ options + 
+                     " Expected: " + expected+" Got: "+out);
+            }           
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertToIDNAReferenceSCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertToIDNAReferenceSCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+        
+        try{
+            StringBuffer out = IDNAReference.convertIDNtoASCII(inIter,options);
+            if(expected!=null && out != null && !out.toString().equals(expected)){
+               errln("convertIDNToASCII did not return expected result with options : "+ options +
+                     " Expected: " + expected+" Got: "+ out);
+            }
+            
+            if(expectedException!=null && !unassignedException.equals(expectedException)){
+                errln("convertIDNToASCII did not get the expected exception. The operation succeeded!");
+            }
+        }catch(StringPrepParseException ex){
+            if(expectedException == null || !ex.equals(expectedException)){
+                errln("convertIDNToASCII did not get the expected exception for source: " +src +" Got:  "+ ex.toString());
+            }
+        }
+    }
+    public void TestConformance()throws Exception{
+        try{
+            for(int i=0; i<TestData.conformanceTestCases.length;i++){
+                
+                TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+                if(testCase.expected != null){
+                    //Test toASCII
+                    doTestToASCII(testCase.input,testCase.output,IDNAReference.DEFAULT,testCase.expected);
+                    doTestToASCII(testCase.input,testCase.output,IDNAReference.ALLOW_UNASSIGNED,testCase.expected);
+                }
+                //Test toUnicode
+                //doTestToUnicode(testCase.input,testCase.output,IDNAReference.DEFAULT,testCase.expected);
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    public void TestNamePrepConformance() throws Exception{
+        try{
+            NamePrepTransform namePrep = NamePrepTransform.getInstance();
+            for(int i=0; i<TestData.conformanceTestCases.length;i++){
+                TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+                UCharacterIterator iter = UCharacterIterator.getInstance(testCase.input);
+                try{
+                    StringBuffer output = namePrep.prepare(iter,NamePrepTransform.NONE);
+                    if(testCase.output !=null && output!=null && !testCase.output.equals(output.toString())){
+                        errln("Did not get the expected output. Expected: " + prettify(testCase.output)+
+                              " Got: "+ prettify(output) );
+                    }
+                    if(testCase.expected!=null && !unassignedException.equals(testCase.expected)){
+                        errln("Did not get the expected exception. The operation succeeded!");
+                    }
+                }catch(StringPrepParseException ex){
+                    if(testCase.expected == null || !ex.equals(testCase.expected)){
+                        errln("Did not get the expected exception for source: " +testCase.input +" Got:  "+ ex.toString());
+                    }
+                }
+                
+                try{
+                    iter.setToStart();
+                    StringBuffer output = namePrep.prepare(iter,NamePrepTransform.ALLOW_UNASSIGNED);
+                    if(testCase.output !=null && output!=null && !testCase.output.equals(output.toString())){
+                        errln("Did not get the expected output. Expected: " + prettify(testCase.output)+
+                              " Got: "+ prettify(output) );
+                    }
+                    if(testCase.expected!=null && !unassignedException.equals(testCase.expected)){
+                        errln("Did not get the expected exception. The operation succeeded!");
+                    }
+                }catch(StringPrepParseException ex){
+                    if(testCase.expected == null || !ex.equals(testCase.expected)){
+                        errln("Did not get the expected exception for source: " +testCase.input +" Got:  "+ ex.toString());
+                    }
+                }
+            }
+        }catch(java.lang.ExceptionInInitializerError e){
+            warnln("Could not load NamePrepTransformData");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+        
+    }
+    public void TestErrorCases() throws Exception{
+        try{
+            for(int i=0; i < TestData.errorCases.length; i++){
+                TestData.ErrorCase errCase = TestData.errorCases[i];
+                if(errCase.testLabel==true){
+                    // Test ToASCII
+                    doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.DEFAULT,errCase.expected);
+                    doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.ALLOW_UNASSIGNED,errCase.expected);
+                    if(errCase.useSTD3ASCIIRules){
+                        doTestToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.USE_STD3_RULES,errCase.expected);
+                    }
+                }
+                if(errCase.useSTD3ASCIIRules!=true){
+                    
+                    // Test IDNToASCII
+                    doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.DEFAULT,errCase.expected);
+                    doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.ALLOW_UNASSIGNED,errCase.expected);
+                    
+                }else{
+                    doTestIDNToASCII(new String(errCase.unicode),errCase.ascii,IDNAReference.USE_STD3_RULES,errCase.expected);
+                }
+                
+                //TestToUnicode
+                if(errCase.testToUnicode==true){
+                    if(errCase.useSTD3ASCIIRules!=true){
+                        // Test IDNToUnicode
+                        doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNAReference.DEFAULT,errCase.expected);
+                        doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNAReference.ALLOW_UNASSIGNED,errCase.expected);
+                    
+                    }else{
+                        doTestIDNToUnicode(errCase.ascii,new String(errCase.unicode),IDNAReference.USE_STD3_RULES,errCase.expected);
+                    }
+                }
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    private void doTestCompare(String s1, String s2, boolean isEqual){
+        try{
+            int retVal = IDNAReference.compare(s1,s2,IDNAReference.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                      " s2: "+prettify(s2));
+            }
+            retVal = IDNAReference.compare(new StringBuffer(s1), new StringBuffer(s2), IDNAReference.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+            retVal = IDNAReference.compare(UCharacterIterator.getInstance(s1), UCharacterIterator.getInstance(s2), IDNAReference.DEFAULT);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+            errln("Unexpected exception thrown by IDNAReference.compare");
+        }
+        
+        try{
+            int retVal = IDNAReference.compare(s1,s2,IDNAReference.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                      " s2: "+prettify(s2));
+            }
+            retVal = IDNAReference.compare(new StringBuffer(s1), new StringBuffer(s2), IDNAReference.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+            retVal = IDNAReference.compare(UCharacterIterator.getInstance(s1), UCharacterIterator.getInstance(s2), IDNAReference.ALLOW_UNASSIGNED);
+            if(isEqual==true && retVal != 0){
+                errln("Did not get the expected result for s1: "+ prettify(s1)+ 
+                     " s2: "+prettify(s2));
+            }
+        }catch(Exception e){
+            errln("Unexpected exception thrown by IDNAReference.compare");
+        }     
+    }
+    public void TestCompare() throws Exception{
+        String www = "www.";
+        String com = ".com";
+        StringBuffer source = new StringBuffer(www);
+        StringBuffer uni0   = new StringBuffer(www);
+        StringBuffer uni1   = new StringBuffer(www);
+        StringBuffer ascii0 = new StringBuffer(www);
+        StringBuffer ascii1 = new StringBuffer(www);
+
+        uni0.append(TestData.unicodeIn[0]);
+        uni0.append(com);
+
+        uni1.append(TestData.unicodeIn[1]);
+        uni1.append(com);
+
+        ascii0.append(TestData.asciiIn[0]);
+        ascii0.append(com);
+
+        ascii1.append(TestData.asciiIn[1]);
+        ascii1.append(com);
+        try{
+            for(int i=0;i< TestData.unicodeIn.length; i++){
+    
+                // for every entry in unicodeIn array
+                // prepend www. and append .com
+                source.setLength(4);
+                source.append(TestData.unicodeIn[i]);
+                source.append(com);
+                
+                // a) compare it with itself
+                doTestCompare(source.toString(),source.toString(),true);
+            
+                // b) compare it with asciiIn equivalent
+                doTestCompare(source.toString(),www+TestData.asciiIn[i]+com,true);
+            
+                // c) compare it with unicodeIn not equivalent
+                if(i==0){
+                    doTestCompare(source.toString(), uni1.toString(), false);
+                }else{
+                    doTestCompare(source.toString(),uni0.toString(), false);
+                }
+                // d) compare it with asciiIn not equivalent
+                if(i==0){
+                    doTestCompare(source.toString(),ascii1.toString(), false);
+                }else{
+                    doTestCompare(source.toString(),ascii0.toString(), false);
+                }
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+
+    //  test and ascertain
+    //  func(func(func(src))) == func(src)
+    public void doTestChainingToASCII(String source)throws Exception{
+        StringBuffer expected; 
+        StringBuffer chained;
+        
+        // test convertIDNToASCII
+        expected = IDNAReference.convertIDNToASCII(source,IDNAReference.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNAReference.convertIDNtoASCII(chained,IDNAReference.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertIDNToASCII");
+        }
+        // test convertIDNToA
+        expected = IDNAReference.convertToASCII(source,IDNAReference.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNAReference.convertToASCII(chained,IDNAReference.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertToASCII");
+        } 
+        
+    }
+    //  test and ascertain
+    //  func(func(func(src))) == func(src)
+    public void doTestChainingToUnicode(String source)throws Exception{
+        StringBuffer expected; 
+        StringBuffer chained;
+        
+        // test convertIDNToUnicode
+        expected = IDNAReference.convertIDNToUnicode(source,IDNAReference.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNAReference.convertIDNToUnicode(chained,IDNAReference.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertIDNToUnicode");
+        }
+        // test convertIDNToA
+        expected = IDNAReference.convertToUnicode(source,IDNAReference.DEFAULT);
+        chained = expected;
+        for(int i=0; i< 4; i++){
+            chained = IDNAReference.convertToUnicode(chained,IDNAReference.DEFAULT);
+        }
+        if(!expected.toString().equals(chained.toString())){
+            errln("Chaining test failed for convertToUnicode");
+        }
+
+    }
+    public void TestChaining() throws Exception{
+        try{
+            for(int i=0; i< TestData.unicodeIn.length; i++){
+                doTestChainingToASCII(new String(TestData.unicodeIn[i]));
+            }
+            for(int i=0; i< TestData.asciiIn.length; i++){
+                doTestChainingToUnicode(TestData.asciiIn[i]);
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+    }
+    public void TestRootLabelSeparator() throws Exception{
+        String www = "www.";
+        String com = ".com."; /*root label separator*/
+        StringBuffer source = new StringBuffer(www);
+        StringBuffer uni0   = new StringBuffer(www);
+        StringBuffer uni1   = new StringBuffer(www);
+        StringBuffer ascii0 = new StringBuffer(www);
+        StringBuffer ascii1 = new StringBuffer(www);
+
+        uni0.append(TestData.unicodeIn[0]);
+        uni0.append(com);
+
+        uni1.append(TestData.unicodeIn[1]);
+        uni1.append(com);
+
+        ascii0.append(TestData.asciiIn[0]);
+        ascii0.append(com);
+
+        ascii1.append(TestData.asciiIn[1]);
+        ascii1.append(com);
+        try{
+            for(int i=0;i< TestData.unicodeIn.length; i++){
+    
+                // for every entry in unicodeIn array
+                // prepend www. and append .com
+                source.setLength(4);
+                source.append(TestData.unicodeIn[i]);
+                source.append(com);
+                
+                // a) compare it with itself
+                doTestCompare(source.toString(),source.toString(),true);
+            
+                // b) compare it with asciiIn equivalent
+                doTestCompare(source.toString(),www+TestData.asciiIn[i]+com,true);
+            
+                // c) compare it with unicodeIn not equivalent
+                if(i==0){
+                    doTestCompare(source.toString(), uni1.toString(), false);
+                }else{
+                    doTestCompare(source.toString(),uni0.toString(), false);
+                }
+                // d) compare it with asciiIn not equivalent
+                if(i==0){
+                    doTestCompare(source.toString(),ascii1.toString(), false);
+                }else{
+                    doTestCompare(source.toString(),ascii0.toString(), false);
+                }
+            }
+        }catch(java.lang.ExceptionInInitializerError ex){
+            warnln("Could not load NamePrepTransform data");
+        }catch(java.lang.NoClassDefFoundError ex){
+            warnln("Could not load NamePrepTransform data");
+        } 
+
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java b/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java
new file mode 100644
index 0000000..cb87eab
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java
@@ -0,0 +1,141 @@
+/*
+
+ *******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.stringprep;
+
+/**
+ * @author limaoyu
+ */
+public class TestInputDataStructure {
+    
+    private String desc = null;
+
+    private String namebase = null;
+
+    private String nameutf8 = null;
+
+    private String namezone = null;
+
+    private String failzone1 = null;
+
+    private String failzone2 = null;
+
+    private String token = null;
+
+    private String passfail = null;
+
+    private String type = null;
+    /**
+     * @return Returns the desc.
+     */
+    public String getDesc() {
+        return desc;
+    }
+    /**
+     * @param desc The desc to set.
+     */
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+    /**
+     * @return Returns the failzone1.
+     */
+    public String getFailzone1() {
+        return failzone1;
+    }
+    /**
+     * @param failzone1 The failzone1 to set.
+     */
+    public void setFailzone1(String failzone1) {
+        this.failzone1 = failzone1;
+    }
+    /**
+     * @return Returns the failzone2.
+     */
+    public String getFailzone2() {
+        return failzone2;
+    }
+    /**
+     * @param failzone2 The failzone2 to set.
+     */
+    public void setFailzone2(String failzone2) {
+        this.failzone2 = failzone2;
+    }
+    /**
+     * @return Returns the namebase.
+     */
+    public String getNamebase() {
+        return namebase;
+    }
+    /**
+     * @param namebase The namebase to set.
+     */
+    public void setNamebase(String namebase) {
+        this.namebase = namebase;
+    }
+    /**
+     * @return Returns the nameutf8.
+     */
+    public String getNameutf8() {
+        return nameutf8;
+    }
+    /**
+     * @param nameutf8 The nameutf8 to set.
+     */
+    public void setNameutf8(String nameutf8) {
+        this.nameutf8 = nameutf8;
+    }
+    /**
+     * @return Returns the namezone.
+     */
+    public String getNamezone() {
+        return namezone;
+    }
+    /**
+     * @param namezone The namezone to set.
+     */
+    public void setNamezone(String namezone) {
+        this.namezone = namezone;
+    }
+    /**
+     * @return Returns the passfail.
+     */
+    public String getPassfail() {
+        return passfail;
+    }
+    /**
+     * @param passfail The passfail to set.
+     */
+    public void setPassfail(String passfail) {
+        this.passfail = passfail;
+    }
+    /**
+     * @return Returns the token.
+     */
+    public String getToken() {
+        return token;
+    }
+    /**
+     * @param token The token to set.
+     */
+    public void setToken(String token) {
+        this.token = token;
+    }
+    /**
+     * @return Returns the type.
+     */
+    public String getType() {
+        return type;
+    }
+    /**
+     * @param type The type to set.
+     */
+    public void setType(String type) {
+        this.type = type;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java b/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
new file mode 100644
index 0000000..dc7b819
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
@@ -0,0 +1,204 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.StringPrepParseException;
+
+/**
+ * @author ram
+ *
+ */
+public class TestStringPrep extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TestStringPrep().run(args);
+    }
+    /*
+       There are several special identifiers ("who") which need to be
+       understood universally, rather than in the context of a particular
+       DNS domain.  Some of these identifiers cannot be understood when an
+       NFS client accesses the server, but have meaning when a local process
+       accesses the file.  The ability to display and modify these
+       permissions is permitted over NFS, even if none of the access methods
+       on the server understands the identifiers.
+
+        Who                    Description
+       _______________________________________________________________
+
+       "OWNER"                The owner of the file.
+       "GROUP"                The group associated with the file.
+       "EVERYONE"             The world.
+       "INTERACTIVE"          Accessed from an interactive terminal.
+       "NETWORK"              Accessed via the network.
+       "DIALUP"               Accessed as a dialup user to the server.
+       "BATCH"                Accessed from a batch job.
+       "ANONYMOUS"            Accessed without any authentication.
+       "AUTHENTICATED"        Any authenticated user (opposite of
+                              ANONYMOUS)
+       "SERVICE"              Access from a system service.
+
+       To avoid conflict, these special identifiers are distinguish by an
+       appended "@" and should appear in the form "xxxx@" (note: no domain
+       name after the "@").  For example: ANONYMOUS@.
+    */
+    private String[] mixed_prep_data ={
+        "OWNER@",
+        "GROUP@",        
+        "EVERYONE@",     
+        "INTERACTIVE@",  
+        "NETWORK@",      
+        "DIALUP@",       
+        "BATCH@",        
+        "ANONYMOUS@",    
+        "AUTHENTICATED@",
+        "\u0930\u094D\u092E\u094D\u0915\u094D\u0937\u0947\u0924\u094D@slip129-37-118-146.nc.us.ibm.net",
+        "\u0936\u094d\u0930\u0940\u092e\u0926\u094d@saratoga.pe.utexas.edu",
+        "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e@dial-120-45.ots.utexas.edu",
+        "\u0905\u0927\u094d\u092f\u093e\u092f@woo-085.dorms.waller.net",
+        "\u0905\u0930\u094d\u091c\u0941\u0928@hd30-049.hil.compuserve.com",
+        "\u0935\u093f\u0937\u093e\u0926@pem203-31.pe.ttu.edu",
+        "\u092f\u094b\u0917@56K-227.MaxTNT3.pdq.net",
+        "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930@dial-36-2.ots.utexas.edu",
+        "\u0909\u0935\u093E\u091A\u0943@slip129-37-23-152.ga.us.ibm.net",
+        "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947@ts45ip119.cadvision.com",
+        "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947@sdn-ts-004txaustP05.dialsprint.net",
+        "\u0938\u092e\u0935\u0947\u0924\u093e@bar-tnt1s66.erols.com",
+        "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903@101.st-louis-15.mo.dial-access.att.net",
+        "\u092e\u093e\u092e\u0915\u093e\u0903@h92-245.Arco.COM",
+        "\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935@dial-13-2.ots.utexas.edu",
+        "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924@net-redynet29.datamarkets.com.ar",
+        "\u0938\u0902\u091c\u0935@ccs-shiva28.reacciun.net.ve",
+        "\u0c30\u0c18\u0c41\u0c30\u0c3e\u0c2e\u0c4d@7.houston-11.tx.dial-access.att.net",
+        "\u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27@ingw129-37-120-26.mo.us.ibm.net",
+        "\u0c06\u0c28\u0c02\u0c26\u0c4d@dialup6.austintx.com",
+        "\u0C35\u0C26\u0C4D\u0C26\u0C3F\u0C30\u0C3E\u0C1C\u0C41@dns2.tpao.gov.tr",
+        "\u0c30\u0c3e\u0c1c\u0c40\u0c35\u0c4d@slip129-37-119-194.nc.us.ibm.net",
+        "\u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26@cs7.dillons.co.uk.203.119.193.in-addr.arpa",
+        "\u0c38\u0c02\u0c1c\u0c40\u0c35\u0c4d@swprd1.innovplace.saskatoon.sk.ca",
+        "\u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26@bikini.bologna.maraut.it",
+        "\u0c38\u0c02\u0c1c\u0c40\u0c2c\u0c4d@node91.subnet159-198-79.baxter.com",
+        "\u0c38\u0c46\u0c28\u0c4d\u0c17\u0c41\u0c2a\u0c4d\u0c24@cust19.max5.new-york.ny.ms.uu.net",
+        "\u0c05\u0c2e\u0c30\u0c47\u0c02\u0c26\u0c4d\u0c30@balexander.slip.andrew.cmu.edu",
+        "\u0c39\u0c28\u0c41\u0c2e\u0c3e\u0c28\u0c41\u0c32@pool029.max2.denver.co.dynip.alter.net",
+        "\u0c30\u0c35\u0c3f@cust49.max9.new-york.ny.ms.uu.net",
+        "\u0c15\u0c41\u0c2e\u0c3e\u0c30\u0c4d@s61.abq-dialin2.hollyberry.com",
+        "\u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27@\u0917\u0928\u0947\u0936.sanjose.ibm.com",
+        "\u0c06\u0c26\u0c3f\u0c24\u0c4d\u0c2f@www.\u00E0\u00B3\u00AF.com",
+        "\u0C15\u0C02\u0C26\u0C4D\u0C30\u0C47\u0C17\u0C41\u0c32@www.\u00C2\u00A4.com",
+        "\u0c36\u0c4d\u0c30\u0c40\u0C27\u0C30\u0C4D@www.\u00C2\u00A3.com",
+        "\u0c15\u0c02\u0c1f\u0c2e\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f@\u0025",
+        "\u0c2e\u0c3e\u0c27\u0c35\u0c4d@\u005C\u005C",
+        "\u0c26\u0c46\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f@www.\u0021.com",
+        "test@www.\u0024.com",
+        "help@\u00C3\u00BC.com",
+    };
+    public void TestNFS4MixedPrep(){
+        for(int i=0; i< mixed_prep_data.length; i++){
+            try{
+                String src = mixed_prep_data[i];
+                byte[] dest = NFS4StringPrep.mixed_prepare(src.getBytes("UTF-8"));
+                String destString = new String(dest, "UTF-8");
+                int destIndex = destString.indexOf('@');
+                if(destIndex < 0){
+                    errln("Delimiter @ disappeared from the output!");
+                }
+            }catch(Exception e){
+                errln("mixed_prepare for string: " + mixed_prep_data[i] +" failed with " + e.toString());
+            }
+        } 
+        /* test the error condition */
+        {
+            String src = "OWNER@oss.software.ibm.com";
+            try{
+                byte[] dest = NFS4StringPrep.mixed_prepare(src.getBytes("UTF-8"));
+                if(dest!=null){
+                    errln("Did not get the expected exception");
+                }
+            }catch(Exception e){
+                logln("mixed_prepare for string: " + src +" passed with " + e.toString());
+            }
+
+         }
+    }
+    public void TestCISPrep(){
+
+        for(int i=0;i< (TestData.conformanceTestCases.length);i++){
+            TestData.ConformanceTestCase testCase = TestData.conformanceTestCases[i];
+            String src = testCase.input;
+            Exception expected = testCase.expected;
+            String expectedDest = testCase.output;
+            try{
+                byte[] dest =NFS4StringPrep.cis_prepare(src.getBytes("UTF-8"));
+                String destString = new String(dest, "UTF-8");
+                if(!expectedDest.equalsIgnoreCase(destString)){
+                      errln("Did not get the expected output for nfs4_cis_prep at index " + i);
+                }
+            }catch(Exception e){
+                if(!expected.equals(e)){
+                    errln("Did not get the expected exception");
+                }
+            } 
+
+        }
+    }
+
+    public void TestCSPrep(){
+        
+        // Checking for bidi is turned off
+        String src = "\uC138\uACC4\uC758\uBAA8\uB4E0\uC0AC\uB78C\uB4E4\uC774\u0644\u064A\u0647\uD55C\uAD6D\uC5B4\uB97C\uC774\uD574\uD55C\uB2E4\uBA74";
+        try{
+            NFS4StringPrep.cs_prepare(src.getBytes("UTF-8"), false);
+        }catch(Exception e){
+            errln("Got unexpected exception: " + e.toString());
+        }
+        
+        // normalization is turned off
+        try{
+            src = "www.\u00E0\u00B3\u00AF.com";
+            byte[] dest = NFS4StringPrep.cs_prepare(src.getBytes("UTF-8"), false);
+            String destStr = new String(dest, "UTF-8");
+            if(!src.equals(destStr)){
+                errln("Did not get expected output. Expected: "+ prettify(src)+
+                      " Got: " + prettify(destStr));
+            }
+        }catch(Exception e){
+            errln("Got unexpected exception: " + e.toString());
+        }
+        
+        // test case insensitive string
+        try{
+            src = "THISISATEST";
+            byte[] dest = NFS4StringPrep.cs_prepare(src.getBytes("UTF-8"), false);
+            String destStr = new String(dest, "UTF-8");
+            if(!src.toLowerCase().equals(destStr)){
+                errln("Did not get expected output. Expected: "+ prettify(src)+
+                      " Got: " + prettify(destStr));
+            }
+        }catch(Exception e){
+            errln("Got unexpected exception: " + e.toString());
+        }
+        // test case sensitive string
+        try{
+            src = "THISISATEST";
+            byte[] dest = NFS4StringPrep.cs_prepare(src.getBytes("UTF-8"), true);
+            String destStr = new String(dest, "UTF-8");
+            if(!src.equals(destStr)){
+                errln("Did not get expected output. Expected: "+ prettify(src)+
+                      " Got: " + prettify(destStr));
+            }
+        }catch(Exception e){
+            errln("Got unexpected exception: " + e.toString());
+        }
+    }
+    
+    public void TestCoverage(){
+        if (new StringPrepParseException("coverage", 0, "", 0,0) == null){
+            errln("Construct StringPrepParseException(String, int, String, int, int)");
+        }
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/timescale/TestAll.java b/src/com/ibm/icu/dev/test/timescale/TestAll.java
new file mode 100644
index 0000000..08ea6f2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timescale/TestAll.java
@@ -0,0 +1,34 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                           *
+ **************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.timescale;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run time scale tests as a batch.
+ */
+public class TestAll extends TestGroup {
+
+    public TestAll() {
+        super(
+            new String[] {
+                "TimeScaleAPITest",
+                "TimeScaleDataTest",
+                "TimeScaleMonkeyTest",
+            },
+            "All TimeScale tests");
+    }
+
+    public static void main(String[] args)
+    {
+        new TestAll().run(args);
+    }
+
+    public static final String CLASS_TARGET_NAME  = "TimeScale";
+}
diff --git a/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java b/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java
new file mode 100644
index 0000000..52de3ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java
@@ -0,0 +1,356 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.timescale;
+
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.util.UniversalTimeScale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+/**
+ * Test UniversalTimeScale API
+ */
+public class TimeScaleAPITest extends TestFmwk
+{
+
+    /**
+     * 
+     */
+    public TimeScaleAPITest()
+    {
+    }
+    
+    public void TestBigDecimalFromBigDecimal()
+    {
+        BigDecimal bigZero = new BigDecimal(0);
+        
+        try {
+            UniversalTimeScale.bigDecimalFrom(bigZero, -1);
+            errln("bigDecimalFrom(bigZero, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.bigDecimalFrom(bigZero, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("bigDecimalFrom(bigZero, " + scale + ") threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            UniversalTimeScale.bigDecimalFrom(bigZero, UniversalTimeScale.MAX_SCALE);
+            errln("from(bigZero, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+    }
+    
+    public void TestBigDecimalFromDouble()
+    {
+        try {
+            UniversalTimeScale.bigDecimalFrom(0.0, -1);
+            errln("bigDecimalFrom(0.0, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.bigDecimalFrom(0.0, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("bigDecimalFrom(0.0, " + scale + ") threw IllegalArgumentException.");
+            }
+       }
+        
+        try {
+            UniversalTimeScale.bigDecimalFrom(0.0, UniversalTimeScale.MAX_SCALE);
+            errln("from(0.0, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+    }
+    
+    public void TestBigDecimalFromLong()
+    {
+        try {
+            UniversalTimeScale.bigDecimalFrom(0L, -1);
+            errln("bigDecimalFrom(0L, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.bigDecimalFrom(0L, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("bigDecimalFrom(0L, " + scale + ") threw IllegalArgumentException.");
+            }
+       }
+        
+        try {
+            UniversalTimeScale.bigDecimalFrom(0L, UniversalTimeScale.MAX_SCALE);
+            errln("from(0L, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.bigDecimalFrom failed as expected");
+        }
+    }
+    
+    public void TestFromLong()
+    {
+        long result;
+        
+        try {
+            result = UniversalTimeScale.from(0L, -1);
+            errln("from(0L, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.from failed as expected");
+        }
+
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
+            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
+            
+            try {
+                result = UniversalTimeScale.from(0L, scale);
+                logln("from(0L, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("from(0L, " + scale + ") threw IllegalArgumentException.");
+            }
+
+            try {
+                result = UniversalTimeScale.from(fromMin, scale);
+                logln("from(fromMin, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("from(fromMin, " + scale + ") threw IllegalArgumentException.");
+            }
+             
+            if (fromMin > Long.MIN_VALUE) {
+                try {
+                    result = UniversalTimeScale.from(fromMin - 1, scale);
+                    errln("from(fromMin - 1, " + scale + ") did not throw IllegalArgumentException.");
+                } catch (IllegalArgumentException iae) {
+                    logln("PASS: UniversalTimeScale.from failed as expected");
+                }
+            }
+             
+            try {
+                result = UniversalTimeScale.from(fromMax, scale);
+                logln("from(fromMax, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("from(fromMax, " + scale + ") threw IllegalArgumentException.");
+            }
+              
+            if (fromMax < Long.MAX_VALUE) {
+                try {
+                    result = UniversalTimeScale.from(fromMax + 1, scale);
+                    errln("from(fromMax + 1, " + scale + ") did not throw IllegalArgumentException.");
+               } catch (IllegalArgumentException iae) {
+                logln("PASS: UniversalTimeScale.from failed as expected");
+               }
+            }
+       }
+        
+        try {
+            result = UniversalTimeScale.from(0L, UniversalTimeScale.MAX_SCALE);
+            errln("from(0L, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.from failed as expected");
+        }
+    }
+    
+    public void TestGetTimeScale()
+    {
+        long value;
+        
+        try {
+            value = UniversalTimeScale.getTimeScaleValue(-1, 0);
+            errln("getTimeScaleValue(-1, 0) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.getTimeScaleValue failed as expected");
+        }
+        
+        try {
+            value = UniversalTimeScale.getTimeScaleValue(0, -1);
+            errln("getTimeScaleValue(0, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.getTimeScaleValue failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                value = UniversalTimeScale.getTimeScaleValue(scale, 0);
+                logln("getTimeScaleValue(" + scale + ", 0) returned " + value);
+            } catch (IllegalArgumentException iae) {
+                errln("getTimeScaleValue(" + scale + ", 0) threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            value = UniversalTimeScale.getTimeScaleValue(UniversalTimeScale.MAX_SCALE, 0);
+            errln("getTimeScaleValue(MAX_SCALE, 0) did not throw IllegalArgumentException");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.getTimeScaleValue failed as expected");
+        }
+        
+        try {
+            value = UniversalTimeScale.getTimeScaleValue(0, UniversalTimeScale.MAX_SCALE_VALUE);
+            errln("getTimeScaleValue(0, MAX_SCALE_VALUE) did not throw IllegalArgumentException");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.getTimeScaleValue failed as expected");
+        }
+    }
+    
+    public void TestToBigDecimalFromBigDecimal()
+    {
+        BigDecimal bigZero = new BigDecimal(0);
+        
+        try {
+            UniversalTimeScale.toBigDecimal(bigZero, -1);
+            errln("toBigDecimal(bigZero, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimal failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.toBigDecimal(bigZero, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("toBigDecimal(bigZero, " + scale + ") threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            UniversalTimeScale.toBigDecimal(bigZero, UniversalTimeScale.MAX_SCALE);
+            errln("toBigDecimal(bigZero, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimal failed as expected");
+        }
+    }
+
+    public void TestToBigDecimalTrunc()
+    {
+        BigDecimal bigZero = new BigDecimal(0);
+        
+        try {
+            UniversalTimeScale.toBigDecimalTrunc(bigZero, -1);
+            errln("toBigDecimalTrunc(bigZero, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimalTrunc failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.toBigDecimalTrunc(bigZero, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("toBigDecimalTrunc(bigZero, " + scale + ") threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            UniversalTimeScale.toBigDecimalTrunc(bigZero, UniversalTimeScale.MAX_SCALE);
+            errln("toBigDecimalTrunc(bigZero, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimalTrunc failed as expected");
+        }
+    }
+    
+    public void TestToBigDecimalFromLong()
+    {
+        try {
+            UniversalTimeScale.toBigDecimal(0L, -1);
+            errln("toBigDecimal(0L, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimal failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            try {
+                UniversalTimeScale.toBigDecimal(0L, scale);
+            } catch (IllegalArgumentException iae) {
+                errln("toBigDecimal(0L, " + scale + ") threw IllegalArgumentException.");
+            }
+        }
+        
+        try {
+            UniversalTimeScale.toBigDecimal(0L, UniversalTimeScale.MAX_SCALE);
+            errln("toBigDecimal(0L, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toBigDecimal failed as expected");
+        }
+    }
+    
+    public void TestToLong()
+    {
+        long result;
+        
+        try {
+            result = UniversalTimeScale.toLong(0L, -1);
+            errln("toLong(0L, -1) did not throw IllegalArgumentException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toLong failed as expected");
+        }
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long toMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MIN_VALUE);
+            long toMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MAX_VALUE);
+            
+            try {
+                result = UniversalTimeScale.toLong(0L, scale);
+                logln("toLong(0L, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("toLong(0L, " + scale + ") threw IllegalArgumentException.");
+            }
+            
+            try {
+                result = UniversalTimeScale.toLong(toMin, scale);
+                logln("toLong(toMin, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("toLong(toMin, " + scale + ") threw IllegalArgumentException.");
+            }
+             
+            if (toMin > Long.MIN_VALUE) {
+                try {
+                    result = UniversalTimeScale.toLong(toMin - 1, scale);
+                    errln("toLong(toMin - 1, " + scale + ") did not throw IllegalArgumentException.");
+                } catch (IllegalArgumentException iae) {
+                    logln("PASS: UniversalTimeScale.toLong failed as expected");
+                }
+            }
+             
+            try {
+                result = UniversalTimeScale.toLong(toMax, scale);
+                logln("toLong(toMax, " + scale + ") returned " + result);
+            } catch (IllegalArgumentException iae) {
+                errln("toLong(toMax, " + scale + ") threw IllegalArgumentException.");
+            }
+              
+            if (toMax < Long.MAX_VALUE) {
+                try {
+                    result = UniversalTimeScale.toLong(toMax + 1, scale);
+                    errln("toLong(toMax + 1, " + scale + ") did not throw IllegalArgumentException.");
+               } catch (IllegalArgumentException iae) {
+                logln("PASS: UniversalTimeScale.toLong failed as expected");
+               }
+            }
+       }
+        
+        try {
+            result = UniversalTimeScale.toLong(0L, UniversalTimeScale.MAX_SCALE);
+            errln("toLong(0L, MAX_SCALE) did not throw IllegalArgumetException.");
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: UniversalTimeScale.toLong failed as expected");
+        }
+    }
+    
+    public static void main(String[] args)
+    {
+        new TimeScaleAPITest().run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java b/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java
new file mode 100644
index 0000000..46c595a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java
@@ -0,0 +1,258 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.timescale;
+
+import java.util.Date;
+import java.util.Locale;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.UniversalTimeScale;
+import com.ibm.icu.dev.test.TestFmwk;
+
+/**
+ * @author Owner
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class TimeScaleDataTest extends TestFmwk
+{
+
+    /**
+     * Default contstructor.
+     */
+    public TimeScaleDataTest()
+    {
+    }
+    
+    private void roundTripTest(long value, int scale)
+    {
+        long rt = UniversalTimeScale.toLong(UniversalTimeScale.from(value, scale), scale);
+        
+        if (rt != value) {
+            errln("Round-trip error: time scale = " + scale + ", value = " + value + ", round-trip = " + rt);
+        }
+    }
+    
+    private void toLimitTest(long toLimit, long fromLimit, int scale)
+    {
+        long result = UniversalTimeScale.toLong(toLimit, scale);
+        
+        if (result != fromLimit) {
+            errln("toLimit failure: scale = " + scale + ", toLimit = " + toLimit +
+                  ", toLong(toLimit, scale) = " + result + ", fromLimit = " + fromLimit);
+        }
+    }
+    
+    private void epochOffsetTest(long epochOffset, long units, int scale)
+    {
+        long universalEpoch = epochOffset * units;
+        long local = UniversalTimeScale.toLong(universalEpoch, scale);
+        
+        if (local != 0) {
+            errln("toLong(epochOffset, scale): scale = " + scale + ", epochOffset = " + universalEpoch +
+                  ", result = " + local);
+        }
+        
+        local = UniversalTimeScale.toLong(0, scale);
+        
+        if (local != -epochOffset) {
+            errln("toLong(0, scale): scale = " + scale + ", result = " + local);
+        }
+        
+        long universal = UniversalTimeScale.from(-epochOffset, scale);
+        
+        if (universal != 0) {
+            errln("from(-epochOffest, scale): scale = " + scale + ", epochOffset = " + epochOffset +
+                  ", result = " + universal);
+        }
+        
+        universal = UniversalTimeScale.from(0, scale);
+        
+        if (universal != universalEpoch) {
+            errln("from(0, scale): scale = " + scale + ", result = " + universal);
+        }
+    }
+    
+    public void TestEpochOffsets()
+    {
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long units       = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_VALUE);
+            long epochOffset = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_VALUE);
+            
+            epochOffsetTest(epochOffset, units, scale);
+        }
+    }
+
+    public void TestFromLimits()
+    {
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
+            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
+            
+            roundTripTest(fromMin, scale);
+            roundTripTest(fromMax, scale);
+        }
+    }
+    
+    public void TestToLimits()
+    {
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
+            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
+            long toMin   = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MIN_VALUE);
+            long toMax   = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MAX_VALUE);
+            
+            toLimitTest(toMin, fromMin, scale);
+            toLimitTest(toMax, fromMax, scale);
+       }
+    }
+
+    // Test with data from .Net System.DateTime ---------------------------- ***
+
+    /*
+     * This data was generated by C++.Net code like
+     * Console::WriteLine(L"    {{ {0}, 1, 1, INT64_C({1}) }},", year, DateTime(year, 1, 1).Ticks);
+     * with the DateTime constructor taking int values for year, month, and date.
+     */
+    static private final long dotNetDateTimeTicks[] = {
+        /* year, month, day, ticks */
+        100, 1, 1, 31241376000000000L,
+        100, 3, 1, 31292352000000000L,
+        200, 1, 1, 62798112000000000L,
+        200, 3, 1, 62849088000000000L,
+        300, 1, 1, 94354848000000000L,
+        300, 3, 1, 94405824000000000L,
+        400, 1, 1, 125911584000000000L,
+        400, 3, 1, 125963424000000000L,
+        500, 1, 1, 157469184000000000L,
+        500, 3, 1, 157520160000000000L,
+        600, 1, 1, 189025920000000000L,
+        600, 3, 1, 189076896000000000L,
+        700, 1, 1, 220582656000000000L,
+        700, 3, 1, 220633632000000000L,
+        800, 1, 1, 252139392000000000L,
+        800, 3, 1, 252191232000000000L,
+        900, 1, 1, 283696992000000000L,
+        900, 3, 1, 283747968000000000L,
+        1000, 1, 1, 315253728000000000L,
+        1000, 3, 1, 315304704000000000L,
+        1100, 1, 1, 346810464000000000L,
+        1100, 3, 1, 346861440000000000L,
+        1200, 1, 1, 378367200000000000L,
+        1200, 3, 1, 378419040000000000L,
+        1300, 1, 1, 409924800000000000L,
+        1300, 3, 1, 409975776000000000L,
+        1400, 1, 1, 441481536000000000L,
+        1400, 3, 1, 441532512000000000L,
+        1500, 1, 1, 473038272000000000L,
+        1500, 3, 1, 473089248000000000L,
+        1600, 1, 1, 504595008000000000L,
+        1600, 3, 1, 504646848000000000L,
+        1700, 1, 1, 536152608000000000L,
+        1700, 3, 1, 536203584000000000L,
+        1800, 1, 1, 567709344000000000L,
+        1800, 3, 1, 567760320000000000L,
+        1900, 1, 1, 599266080000000000L,
+        1900, 3, 1, 599317056000000000L,
+        2000, 1, 1, 630822816000000000L,
+        2000, 3, 1, 630874656000000000L,
+        2100, 1, 1, 662380416000000000L,
+        2100, 3, 1, 662431392000000000L,
+        2200, 1, 1, 693937152000000000L,
+        2200, 3, 1, 693988128000000000L,
+        2300, 1, 1, 725493888000000000L,
+        2300, 3, 1, 725544864000000000L,
+        2400, 1, 1, 757050624000000000L,
+        2400, 3, 1, 757102464000000000L,
+        2500, 1, 1, 788608224000000000L,
+        2500, 3, 1, 788659200000000000L,
+        2600, 1, 1, 820164960000000000L,
+        2600, 3, 1, 820215936000000000L,
+        2700, 1, 1, 851721696000000000L,
+        2700, 3, 1, 851772672000000000L,
+        2800, 1, 1, 883278432000000000L,
+        2800, 3, 1, 883330272000000000L,
+        2900, 1, 1, 914836032000000000L,
+        2900, 3, 1, 914887008000000000L,
+        3000, 1, 1, 946392768000000000L,
+        3000, 3, 1, 946443744000000000L,
+        1, 1, 1, 0L,
+        1601, 1, 1, 504911232000000000L,
+        1899, 12, 31, 599265216000000000L,
+        1904, 1, 1, 600527520000000000L,
+        1970, 1, 1, 621355968000000000L,
+        2001, 1, 1, 631139040000000000L,
+        9900, 3, 1, 3123873216000000000L,
+        9999, 12, 31, 3155378112000000000L
+    };
+
+    /*
+     * ICU's Universal Time Scale is designed to be tick-for-tick compatible with
+     * .Net System.DateTime. Verify that this is so for the
+     * .Net-supported date range (years 1-9999 AD).
+     * This requires a proleptic Gregorian calendar because that's what .Net uses.
+     * Proleptic: No Julian/Gregorian switchover, or a switchover before
+     * any date that we test, that is, before 0001 AD.
+     */
+    public void TestDotNet() {
+        TimeZone utc;
+        final long dayMillis = 86400 * 1000L;    /* 1 day = 86400 seconds */
+        final long dayTicks = 86400 * 10000000L;
+        final int kYear = 0;  // offset for dotNetDateTimeTicks[] field
+        final int kMonth = 1;
+        final int kDay = 2;
+        final int kTicks = 3;
+        final int kIncrement = 4;
+        GregorianCalendar cal;
+        long icuDate;
+        long ticks, millis;
+        int i;
+
+        /* Open a proleptic Gregorian calendar. */
+        long before0001AD = -1000000 * dayMillis;
+        utc = new SimpleTimeZone(0, "UTC");
+        cal = new GregorianCalendar(utc, Locale.ENGLISH);
+        cal.setGregorianChange(new Date(before0001AD));
+        for(i = 0; i < dotNetDateTimeTicks.length; i += kIncrement) {
+            /* Test conversion from .Net/Universal time to ICU time. */
+            millis = UniversalTimeScale.toLong(dotNetDateTimeTicks[i + kTicks], UniversalTimeScale.ICU4C_TIME);
+            cal.clear();
+            cal.set((int)dotNetDateTimeTicks[i + kYear],
+                    (int)dotNetDateTimeTicks[i + kMonth] - 1, /* Java & ICU use January = month 0. */
+                    (int)dotNetDateTimeTicks[i + kDay]);
+            icuDate = cal.getTimeInMillis();
+            if(millis != icuDate) {
+                /* Print days not millis. */
+                errln("UniversalTimeScale.toLong(ticks[" + i + "], ICU4C)=" +
+                      (millis/dayMillis) + " != " + (icuDate/dayMillis) +
+                      "=ucal_getMillis(" + dotNetDateTimeTicks[i + kYear] +
+                      "-" + dotNetDateTimeTicks[i + kMonth] +
+                      "-" + dotNetDateTimeTicks[i + kDay] + ")");
+            }
+
+            /* Test conversion from ICU time to .Net/Universal time. */
+            ticks = UniversalTimeScale.from(icuDate, UniversalTimeScale.ICU4C_TIME);
+            if(ticks != dotNetDateTimeTicks[i + kTicks]) {
+                /* Print days not ticks. */
+                errln("UniversalTimeScale.from(date[" + i + "], ICU4C)=" +
+                      (ticks/dayTicks) + " != " + dotNetDateTimeTicks[i + kTicks]/dayTicks +
+                      "=.Net System.DateTime(" + dotNetDateTimeTicks[i + kYear] +
+                      "-" + dotNetDateTimeTicks[i + kMonth] +
+                      "-" + dotNetDateTimeTicks[i + kDay] + ").Ticks");
+            }
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        new TimeScaleDataTest().run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java b/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java
new file mode 100644
index 0000000..6c2915c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java
@@ -0,0 +1,105 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                           *
+ **************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.test.timescale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.UniversalTimeScale;
+import com.ibm.icu.math.BigDecimal;
+import java.util.Random;
+
+/**
+ * This class tests the UniversalTimeScale class by
+ * generating ramdon values in range and making sure
+ * that they round-trip correctly.
+ */
+public class TimeScaleMonkeyTest extends TestFmwk
+{
+
+    /**
+     * The default constructor.
+     */
+    public TimeScaleMonkeyTest()
+    {
+    }
+    
+    private static final int LOOP_COUNT = 1000;
+    private static final BigDecimal longMax = new BigDecimal(Long.MAX_VALUE);
+    
+    private Random ran = null;
+    
+    private long ranInt;
+    private long ranMin;
+    private long ranMax;
+    
+    private void initRandom(long min, long max)
+    {
+        BigDecimal interval = new BigDecimal(max).subtract(new BigDecimal(min));
+        
+        ranMin = min;
+        ranMax = max;
+        ranInt = 0;
+        
+        if (ran == null) {
+            ran = createRandom();
+        }
+        
+        if (interval.compareTo(longMax) < 0) {
+            ranInt = interval.longValue();
+        }
+    }
+    
+    private final long randomInRange()
+    {
+        long value;
+        
+        if (ranInt != 0) {
+            value = ran.nextLong() % ranInt;
+            
+            if (value < 0) {
+                value = -value;
+            }
+            
+            value += ranMin;
+        } else {
+            do {
+                value = ran.nextLong();
+            } while (value < ranMin || value > ranMax);
+        }
+        
+        return value;
+    }
+    
+    public void TestRoundTrip()
+    {
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
+            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
+            int i = 0;
+            
+            initRandom(fromMin, fromMax);
+            
+            while (i < LOOP_COUNT) {
+                long value = randomInRange();
+                                
+                long rt = UniversalTimeScale.toLong(UniversalTimeScale.from(value, scale), scale);
+                
+                if (rt != value) {
+                    errln("Round-trip error: time scale = " + scale + ", value = " + value + ", round-trip = " + rt);
+                }
+                
+                i += 1;
+            }
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        new TimeScaleMonkeyTest().run(args);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TestAll.java b/src/com/ibm/icu/dev/test/timezone/TestAll.java
new file mode 100644
index 0000000..0545f0f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TestAll.java
@@ -0,0 +1,31 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "TimeZoneTest",
+            "TimeZoneRegression",
+            "TimeZoneBoundaryTest",
+//             "TimeZoneAliasTest",
+            "TimeZoneRuleTest",
+            "TimeZoneOffsetLocalTest"
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "TimeZone";
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
new file mode 100644
index 0000000..cbc8d6f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
@@ -0,0 +1,421 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.timezone;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Iterator;
+
+import java.text.DateFormat;
+import java.text.NumberFormat;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.dev.test.util.BagFormatter;
+import com.ibm.icu.util.TimeZone;
+
+
+/**
+ * Class for testing TimeZones for consistency
+ * @author Davis
+ * 
+ */
+public class TimeZoneAliasTest extends TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new TimeZoneAliasTest().run(args);
+    }
+    
+    /**
+     * There are two things to check aliases for:<br>
+     * 1. the alias set must be uniform: if a isAlias b, then aliasSet(a) == aliasSet(b)<br>
+     * 2. all aliases must have the same offsets
+      */
+    public void TestAliases() {
+        Zone.Seconds seconds = new Zone.Seconds();
+        for (Iterator it = Zone.getZoneSet().iterator(); it.hasNext(); ) {
+            Zone zone = (Zone)it.next();
+            String id = zone.id;
+            if (id.indexOf('/') < 0 && (id.endsWith("ST") || id.endsWith("DT"))) {
+                if (zone.minRecentOffset != zone.maxRecentOffset) {
+                    errln(
+                        "Standard or Daylight Time not constant: " + id 
+                        + ": " + Zone.formatHours(zone.minRecentOffset)
+                        + " != " + Zone.formatHours(zone.maxRecentOffset));
+                }
+            }
+            Set aliases = zone.getPurportedAliases();
+            Set aliasesSet = new TreeSet(aliases);
+            aliasesSet.add(id); // for comparison
+            Iterator aliasIterator = aliases.iterator();
+            while (aliasIterator.hasNext()) {
+                String otherId = (String)aliasIterator.next();
+                Zone otherZone = Zone.make(otherId);
+                Set otherAliases = otherZone.getPurportedAliases();
+                otherAliases.add(otherId); // for comparison
+                if (!aliasesSet.equals(otherAliases)) {
+                    errln(
+                        "Aliases Unsymmetric: "
+                        + id + " => " + Zone.bf.join(aliasesSet)
+                        + "; " 
+                        + otherId + " => " + Zone.bf.join(otherAliases));
+                }
+                if (zone.findOffsetOrdering(otherZone, seconds) != 0) {
+                    errln("Aliases differ: " + id + ", " + otherId
+                         + " differ at " + seconds);
+                }
+            }
+        }
+    }
+    
+    /**
+     * We check to see that every timezone that is not an alias is actually different!
+     */
+    public void TestDifferences() {
+        Zone last = null;
+        Zone.Seconds diffDate = new Zone.Seconds();        
+        for (Iterator it = Zone.getZoneSet().iterator(); it.hasNext();) {
+            Zone testZone = (Zone)it.next();
+            if (last != null) {
+                String common = testZone + "\tvs " + last + ":\t";
+                int diff = testZone.findOffsetOrdering(last, diffDate);
+                if (diff != 0) {
+                    logln("\t" + common + "difference at: " + diffDate 
+                        + ", " + Zone.formatHours(diff) + "hr");
+                } else if (testZone.isRealAlias(last)) {
+                    logln("\t" + common + "alias, no difference");
+                } else {
+                    errln(common + "NOT ALIAS BUT NO DIFFERENCE!");
+                }
+            }
+            last = testZone;
+        }
+    }
+    
+    /**
+     * Utility for printing out zones to be translated.
+     */
+    public static void TestGenerateZones() {
+        int count = 1;
+        for (Iterator it = Zone.getUniqueZoneSet().iterator(); it.hasNext();) {
+            Zone zone = (Zone)it.next();
+            System.out.println(zone.toString(count++));
+        }
+    }
+    
+    /** Utility; ought to be someplace common
+     */
+    /*
+    static String join(Collection c, String separator) {
+        StringBuffer result = new StringBuffer();
+        boolean isFirst = true;
+        for (Iterator it = c.iterator(); it.hasNext(); ) {
+            if (!isFirst) result.append(separator);
+            else isFirst = false;
+            result.append(it.next().toString());
+        }
+        return result.toString();
+    }
+    */
+        
+    /**
+     * The guts is in this subclass. It sucks in all the data from the zones,
+     * and analyses it. It constructs some mappings for the unique ids,
+     * etc.<br>
+     * The main tricky bit is that for performance it pre-analyses all zones
+     * for inflections points; the points in time where the offset changes.
+     * The zones can then be sorted by those points, which allows us to
+     * avoid expensive comparisons.
+     * @author Davis
+     */
+    static class Zone implements Comparable {
+        // class fields
+        static private final BagFormatter bf = new BagFormatter().setSeparator(", ");
+        static private final DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.US);
+        static private final NumberFormat nf = NumberFormat.getInstance(Locale.US);
+        static private final long HOUR = 1000*60*60;
+        static private final double DHOUR = HOUR;
+        static private final long DAY = 24*HOUR;
+        static private final long GROSS_PERIOD = 30*DAY;
+        static private final long EPSILON = HOUR/4;
+        static private final int currentYear = new GregorianCalendar().get(Calendar.YEAR);
+        static private final long endDate = getDate((currentYear+1),0,1).getTime();
+        static private final long endDate2 = getDate((currentYear+1),6,1).getTime();
+        static private final long recentLimit = getDate((currentYear-1),6,1).getTime();
+        static private final long startDate = getDate(1905,0,1).getTime();
+        
+        static private final Map idToZone = new HashMap();
+        static private final Set zoneSet = new TreeSet();
+        static private final Set uniqueZoneSet = new TreeSet();
+        static private final Map idToRealAliases = new HashMap();
+
+        // build everything once.
+        static {
+            String [] foo = TimeZone.getAvailableIDs();
+            for (int i = 0; i < foo.length; ++i) {
+                zoneSet.add(Zone.make(foo[i]));
+            }
+            Zone last = null;
+            Zone.Seconds diffDate = new Zone.Seconds();
+            String lastUnique = "";      
+            for (Iterator it = Zone.getZoneSet().iterator(); it.hasNext();) {
+                Zone testZone = (Zone)it.next();
+                if (last == null) {
+                    uniqueZoneSet.add(testZone);
+                    lastUnique = testZone.id;
+                } else {
+                    int diff = testZone.findOffsetOrdering(last, diffDate);
+                    if (diff != 0) {
+                        uniqueZoneSet.add(testZone);
+                        lastUnique = testZone.id;
+                    } else {
+                        Set aliases = (Set)idToRealAliases.get(lastUnique);
+                        if (aliases == null) {
+                            aliases = new TreeSet();
+                            idToRealAliases.put(lastUnique, aliases);
+                        }
+                        aliases.add(testZone.id);
+                    }
+                }
+                last = testZone;
+            }
+        }
+        
+        static public Set getZoneSet() {
+            return zoneSet;
+        }
+        
+        public static Set getUniqueZoneSet() {
+            return uniqueZoneSet;
+        }
+
+        static public Zone make(String id) {
+            Zone result = (Zone)idToZone.get(id);
+            if (result != null) return result;
+            result = new Zone(id);
+            idToZone.put(id, result);
+            return result;
+        }
+        
+        static public String formatHours(int hours) {
+            return nf.format(hours/DHOUR);
+        }
+        
+        // utility class for date return, because Date is clunky.
+        public static class Seconds {
+            public long seconds = Long.MIN_VALUE;
+            public String toString() {
+                if (seconds == Long.MIN_VALUE) return "n/a";
+                return df.format(new Date(seconds));
+            }
+        }
+        
+        // instance fields
+        // we keep min/max offsets not only over all time (that we care about)
+        // but also separate ones for recent years.
+        private String id;
+        private TimeZone zone;
+        // computed below
+        private int minOffset;
+        private int maxOffset;
+        private int minRecentOffset;
+        private int maxRecentOffset;
+        private List inflectionPoints = new ArrayList();
+        private Set purportedAliases = new TreeSet();
+    
+        private Zone(String id) { // for interal use only; use make instead!
+            zone = TimeZone.getTimeZone(id);
+            this.id = id;
+            
+            // get aliases
+            int equivCount = TimeZone.countEquivalentIDs(id);
+            for (int j = 0; j < equivCount; ++j) {
+                String altID = TimeZone.getEquivalentID(id, j);
+                if (altID.equals(id)) continue;
+                purportedAliases.add(altID);
+            }
+
+            // find inflexion points; times where the offset changed
+            long lastDate = endDate;
+            if (zone.getOffset(lastDate) < zone.getOffset(endDate2)) lastDate = endDate2;
+            maxRecentOffset = minRecentOffset = minOffset = maxOffset = zone.getOffset(lastDate);
+
+            inflectionPoints.add(new Long(lastDate));
+            int lastOffset = zone.getOffset(endDate);
+            long lastInflection = endDate;
+            
+            // we do a gross search, then narrow in when we find a difference from the last one
+            for (long currentDate = endDate; currentDate >= startDate; currentDate -= GROSS_PERIOD) {
+                int currentOffset = zone.getOffset(currentDate);
+                if (currentOffset != lastOffset) { // Binary Search
+                    if (currentOffset < minOffset) minOffset = currentOffset;
+                    if (currentOffset > maxOffset) maxOffset = currentOffset;
+                    if (lastInflection >= recentLimit) {
+                        if (currentOffset < minRecentOffset) minRecentOffset = currentOffset;
+                        if (currentOffset > maxRecentOffset) maxRecentOffset = currentOffset;
+                    }
+                    long low = currentDate;
+                    long high = lastDate;
+                    while (low - high > EPSILON) {
+                        long mid = (high + low)/2;
+                        int midOffset = zone.getOffset(mid);
+                        if (midOffset == low) {
+                            low = mid;
+                        } else {
+                            high = mid;
+                        }
+                    }
+                    inflectionPoints.add(new Long(low));
+                    lastInflection = low;
+                }
+                lastOffset = currentOffset;
+            }
+            inflectionPoints.add(new Long(startDate)); // just to cap it off for comparisons.
+        }
+        
+        // we assume that places will not convert time zones then back within one day
+        // so we go first by half
+        public int findOffsetOrdering(Zone other, Seconds dateDiffFound) {
+            //System.out.println("-diff: " + id + "\t" + other.id);
+            int result = 0;
+            long seconds = 0;
+            int min = inflectionPoints.size();
+            if (other.inflectionPoints.size() < min) min = other.inflectionPoints.size();
+            main:
+            {
+                for (int i = 0; i < min; ++i) {
+                    long myIP = ((Long)inflectionPoints.get(i)).longValue();
+                    long otherIP = ((Long)other.inflectionPoints.get(i)).longValue();
+                    if (myIP > otherIP) { // take lowest, for transitivity (semi)
+                        long temp = myIP;
+                        myIP = otherIP;
+                        otherIP = temp;
+                    }
+                    result = zone.getOffset(myIP) - other.zone.getOffset(myIP);
+                    if (result != 0) {
+                        seconds = myIP;
+                        break main;
+                    } 
+                    if (myIP == otherIP) continue; // test other if different
+                    myIP = otherIP;
+                    result = zone.getOffset(myIP) - other.zone.getOffset(myIP);
+                    if (result != 0) {
+                        seconds = myIP;
+                        break main;
+                    } 
+                }
+                // if they are equal so far, we don't care about the rest
+                result = 0;
+                seconds = Long.MIN_VALUE;
+                break main;
+            }
+            //System.out.println("+diff: " + (result/HOUR) + "\t" + dateDiffFound);
+            if (dateDiffFound != null) dateDiffFound.seconds = seconds;
+            return result;
+        }
+        
+        // internal buffer to avoid creation all the time.
+        private Seconds diffDateReturn = new Seconds();
+        
+        public int compareTo(Object o) {
+            Zone other = (Zone)o;
+            // first order by max and min offsets
+            // min will usually correspond to standard time, max to daylight
+            // unless there have been historical shifts
+            if (minRecentOffset < other.minRecentOffset) return -1;
+            if (minRecentOffset > other.minRecentOffset) return 1;
+            if (maxRecentOffset < other.maxRecentOffset) return -1;
+            if (maxRecentOffset > other.maxRecentOffset) return 1;
+            // now check that all offsets are the same over history
+            int diffDate = findOffsetOrdering(other, diffDateReturn);
+            if (diffDate != 0) return diffDate;
+            // choose longer name first!!
+            if (id.length() != other.id.length()) {
+                if (id.length() < other.id.length()) return 1;
+                return -1;
+            }
+            return id.compareTo(other.id);
+        }
+        
+        public Set getPurportedAliases() {
+            return new TreeSet(purportedAliases); // clone for safety
+        }
+        
+        public boolean isPurportedAlias(String zoneID) {
+            return purportedAliases.contains(zoneID);
+        }
+        
+        public boolean isRealAlias(Zone z) {
+            return purportedAliases.contains(z.id);
+        }
+        
+        public String getPurportedAliasesAsString() {
+            Set s = getPurportedAliases();
+            if (s.size() == 0) return "";
+            return " " + bf.join(s);
+        }
+        
+        public String getRealAliasesAsString() {
+            Set s = (Set)idToRealAliases.get(id);
+            if (s == null) return "";
+            return " *" + bf.join(s);
+        }
+        
+        public String getCity() {
+            int pos = id.lastIndexOf(('/'));
+            String city = id.substring(pos+1);
+            return city.replace('_',' ');
+        }
+
+        public String toString() {
+            return toString(-1);
+        }
+        
+        /**
+         * Where count > 0, returns string that is set up for translation
+         */
+        public String toString(int count) {
+            String city = getCity();
+            String hours = formatHours(minRecentOffset)
+                + (minRecentOffset != maxRecentOffset 
+                    ? "," + formatHours(maxRecentOffset) 
+                    : "");
+            if (count < 0) {
+                return id + getPurportedAliasesAsString() + " (" + hours + ")";
+            } 
+            // for getting template for translation
+            return "\t{\t\"" + id + "\"\t// [" + count + "] " + hours 
+                + getRealAliasesAsString() + "\r\n"
+                + "\t\t// translate the following!!\r\n"
+                + (minRecentOffset != maxRecentOffset
+                    ? "\t\t\"" + city + " Standard Time\"\r\n"
+                    + "\t\t\"" + city + "-ST\"\r\n"
+                    + "\t\t\"" + city + " Daylight Time\"\r\n"
+                    + "\t\t\"" + city + "-DT\"\r\n"
+                    : "\t\t\"\"\r\n"
+                    + "\t\t\"\"\r\n"
+                    + "\t\t\"\"\r\n"
+                    + "\t\t\"\"\r\n")
+                + "\t\t\"" + city + " Time\"\r\n"
+                + "\t\t\"" + city + "-T\"\r\n"
+                + "\t\t\"" + city + "\"\r\n"
+                + "\t}";
+        }
+    }
+}
+
+//#endif
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
new file mode 100644
index 0000000..9049e50
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
@@ -0,0 +1,850 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.*;
+import com.ibm.icu.dev.test.*;
+import java.util.Date;
+
+/**
+ * A test which discovers the boundaries of DST programmatically and verifies
+ * that they are correct.
+ */
+public class TimeZoneBoundaryTest extends TestFmwk
+{
+    static final int ONE_SECOND = 1000;
+    static final int ONE_MINUTE = 60*ONE_SECOND;
+    static final int ONE_HOUR = 60*ONE_MINUTE;
+    static final long ONE_DAY = 24*ONE_HOUR;
+    static final long ONE_YEAR = (long)(365.25 * ONE_DAY);
+    static final long SIX_MONTHS = ONE_YEAR / 2;
+
+    static final int MONTH_LENGTH[] = {31,29,31,30,31,30,31,31,30,31,30,31};
+
+    // These values are empirically determined to be correct
+    static final long PST_1997_BEG  = 860320800000L;
+    static final long PST_1997_END  = 877856400000L;
+
+    // Minimum interval for binary searches in ms; should be no larger
+    // than 1000.
+    static final long INTERVAL = 10; // Milliseconds
+
+    // [3Jan01 Liu] Updated for 2000f data
+    static final String AUSTRALIA = "Australia/Adelaide";
+    static final long AUSTRALIA_1997_BEG = 877797000000L;
+    static final long AUSTRALIA_1997_END = 859653000000L;
+    
+    public static void main(String[] args) throws Exception {
+        new TimeZoneBoundaryTest().run(args);
+    }
+
+    /**
+     * Date.toString().substring() Boundary Test
+     * Look for a DST changeover to occur within 6 months of the given Date.
+     * The initial Date.toString() should yield a string containing the
+     * startMode as a SUBSTRING.  The boundary will be tested to be
+     * at the expectedBoundary value.
+     */
+    void findDaylightBoundaryUsingDate(Date d, String startMode, long expectedBoundary)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        if (d.toString().indexOf(startMode) == -1)
+        {
+            logln("Error: " + startMode + " not present in " + d);
+        }
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + SIX_MONTHS;
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            String s = new Date(mid).toString();
+            // logln(s);
+            if (s.indexOf(startMode) != -1)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln("Date Before: " + showDate(min));
+        logln("Date After:  " + showDate(max));
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary);
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary);
+    }
+
+    // This test cannot be compiled until the inDaylightTime() method of GregorianCalendar
+    // becomes public.
+    //    static void findDaylightBoundaryUsingCalendar(Date d, boolean startsInDST)
+    //    {
+    //  // Given a date with a year start, find the Daylight onset
+    //  // and end.  The given date should be 1/1/xx in some year.
+    //
+    //  GregorianCalendar cal = new GregorianCalendar();
+    //  cal.setTime(d);
+    //  if (cal.inDaylightTime() != startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + d + ") != " + startsInDST);
+    //  }
+    //
+    //  // Use a binary search, assuming that we have a Standard
+    //  // time at the midpoint.
+    //  long min = d.getTime();
+    //  long max = min + (long)(365.25 / 2 * 24*60*60*1000);
+    //
+    //  while ((max - min) >  INTERVAL)
+    //  {
+    //      long mid = (min + max) >> 1;
+    //      cal.setTime(new Date(mid));
+    //      if (cal.inDaylightTime() == startsInDST)
+    //      {
+    //      min = mid;
+    //      }
+    //      else
+    //      {
+    //      max = mid;
+    //      }
+    //  }
+    //
+    //  logln("Calendar Before: " + showDate(min));
+    //  logln("Calendar After:  " + showDate(max));
+    //    }
+
+    void findDaylightBoundaryUsingTimeZone(Date d, boolean startsInDST, long expectedBoundary)
+    {
+        findDaylightBoundaryUsingTimeZone(d, startsInDST, expectedBoundary,
+                                          TimeZone.getDefault());
+    }
+
+    void findDaylightBoundaryUsingTimeZone(Date d, boolean startsInDST,
+                                           long expectedBoundary, TimeZone tz)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + SIX_MONTHS;
+
+        if (tz.inDaylightTime(d) != startsInDST)
+        {
+            errln("FAIL: " + tz.getID() + " inDaylightTime(" +
+                  d + ") != " + startsInDST);
+            startsInDST = !startsInDST; // Flip over; find the apparent value
+        }
+
+        if (tz.inDaylightTime(new Date(max)) == startsInDST)
+        {
+            errln("FAIL: " + tz.getID() + " inDaylightTime(" +
+                  (new Date(max)) + ") != " + (!startsInDST));
+            return;
+        }
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            boolean isIn = tz.inDaylightTime(new Date(mid));
+            if (isIn == startsInDST)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln(tz.getID() + " Before: " + showDate(min, tz));
+        logln(tz.getID() + " After:  " + showDate(max, tz));
+
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary; 
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+        fmt.setTimeZone(tz);
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary + " = " + fmt.format(new Date(expectedBoundary)));
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary + " = " + fmt.format(new Date(expectedBoundary)));
+    }
+
+    private static String showDate(long l)
+    {
+        return showDate(new Date(l));
+    }
+
+    private static String showDate(Date d)
+    {
+        java.util.Calendar cal = java.util.Calendar.getInstance();
+        cal.setTime(d);
+        return "" + (cal.get(Calendar.YEAR) - 1900) + "/" + 
+               showNN(cal.get(Calendar.MONTH) + 1) + "/" + 
+               showNN(cal.get(Calendar.DAY_OF_MONTH)) + " " + 
+               showNN(cal.get(Calendar.HOUR_OF_DAY)) + ":" 
+               + showNN(cal.get(Calendar.MINUTE)) + " \"" + d + "\" = " +
+               d.getTime();
+    }
+
+    private static String showDate(long l, TimeZone z)
+    {
+        return showDate(new Date(l), z);
+    }
+
+    private static String showDate(Date d, TimeZone zone)
+    {
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
+        fmt.setTimeZone(zone);
+        java.util.Calendar cal = java.util.Calendar.getInstance();
+        cal.setTime(d);
+        return "" + (cal.get(Calendar.YEAR) - 1900) + "/" + 
+               showNN(cal.get(Calendar.MONTH) + 1) + "/" + 
+               showNN(cal.get(Calendar.DAY_OF_MONTH)) + " " + 
+               showNN(cal.get(Calendar.HOUR_OF_DAY)) + ":" + 
+               showNN(cal.get(Calendar.MINUTE)) + " \"" + d + "\" = " +
+               fmt.format(d) + " = " + d.getTime();
+    }
+
+    private static String showNN(int n)
+    {
+        return ((n < 10) ? "0" : "") + n;
+    }
+
+    /**
+     * Given a date, a TimeZone, and expected values for inDaylightTime,
+     * useDaylightTime, zone and DST offset, verify that this is the case.
+     */
+    void verifyDST(String tag, Calendar cal, TimeZone time_zone,
+                   boolean expUseDaylightTime, boolean expInDaylightTime,
+                   int expRawOffset, int expOffset)
+    {
+        Date d = cal.getTime();
+
+        logln("-- " + tag + ": " + d +
+              " in zone " + time_zone.getID() + " (" +
+              d.getTime()/3600000.0 + ")");
+
+        if (time_zone.inDaylightTime(d) == expInDaylightTime)
+            logln("PASS: inDaylightTime = " + time_zone.inDaylightTime(d));
+        else
+            errln("FAIL: inDaylightTime = " + time_zone.inDaylightTime(d));
+
+        if (time_zone.useDaylightTime() == expUseDaylightTime)
+            logln("PASS: useDaylightTime = " + time_zone.useDaylightTime());
+        else
+            errln("FAIL: useDaylightTime = " + time_zone.useDaylightTime());
+
+        if (time_zone.getRawOffset() == expRawOffset)
+            logln("PASS: getRawOffset() = " + expRawOffset/(double)ONE_HOUR);
+        else
+            errln("FAIL: getRawOffset() = " + time_zone.getRawOffset()/(double)ONE_HOUR +
+                  "; expected " + expRawOffset/(double)ONE_HOUR);
+
+        //GregorianCalendar gc = new GregorianCalendar(time_zone);
+        //gc.setTime(d);
+        int offset = time_zone.getOffset(cal.get(Calendar.ERA), cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
+                                         cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_WEEK),
+                                         ((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+                                           cal.get(Calendar.MINUTE)) * 60 +
+                                          cal.get(Calendar.SECOND)) * 1000 +
+                                         cal.get(Calendar.MILLISECOND));
+        if (offset == expOffset)
+            logln("PASS: getOffset() = " + offset/(double)ONE_HOUR);
+        else {
+            logln("era=" + cal.get(Calendar.ERA) +
+                  ", year=" + cal.get(Calendar.YEAR) +
+                  ", month=" + cal.get(Calendar.MONTH) +
+                  ", dom=" + cal.get(Calendar.DAY_OF_MONTH) +
+                  ", dow=" + cal.get(Calendar.DAY_OF_WEEK) +
+                  ", time-of-day=" + (((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+                               cal.get(Calendar.MINUTE)) * 60 +
+                              cal.get(Calendar.SECOND)) * 1000 +
+                             cal.get(Calendar.MILLISECOND)) / 3600000.0 +
+                            " hours");
+            errln("FAIL: getOffset() = " + offset/(double)ONE_HOUR +
+                  "; expected " + expOffset/(double)ONE_HOUR);
+        }
+    }
+
+    /**
+     * Check that the given year/month/dom/hour maps to and from the
+     * given epochHours.  This verifies the functioning of the
+     * calendar and time zone in conjunction with one another,
+     * including the calendar time->fields and fields->time and
+     * the time zone getOffset method.
+     *
+     * @param epochHours hours after Jan 1 1970 0:00 GMT.
+     */
+    void verifyMapping(Calendar cal, int year, int month, int dom, int hour,
+                       double epochHours) {
+        double H = 3600000.0;
+        cal.clear();
+        cal.set(year, month, dom, hour, 0, 0);
+        Date d = cal.getTime();
+        double e = d.getTime() / H;
+        Date ed = new Date((long)(epochHours * H));
+        if (e == epochHours) {
+            logln("Ok: " + year + "/" + (month+1) + "/" + dom + " " + hour + ":00 => " +
+                  e + " (" + ed + ")");
+        } else {
+            errln("FAIL: " + year + "/" + (month+1) + "/" + dom + " " + hour + ":00 => " +
+                  e + " (" + new Date((long)(e * H)) + ")" +
+                  ", expected " + epochHours + " (" + ed + ")");
+        }
+        cal.setTime(ed);
+        if (cal.get(Calendar.YEAR) == year &&
+            cal.get(Calendar.MONTH) == month &&
+            cal.get(Calendar.DATE) == dom &&
+            cal.get(Calendar.MILLISECONDS_IN_DAY) == hour * 3600000) {
+            logln("Ok: " + epochHours + " (" + ed + ") => " +
+                  cal.get(Calendar.YEAR) + "/" +
+                  (cal.get(Calendar.MONTH)+1) + "/" +
+                  cal.get(Calendar.DATE) + " " +
+                  cal.get(Calendar.MILLISECONDS_IN_DAY)/H);
+        } else {
+            errln("FAIL: " + epochHours + " (" + ed + ") => " +
+                  cal.get(Calendar.YEAR) + "/" +
+                  (cal.get(Calendar.MONTH)+1) + "/" +
+                  cal.get(Calendar.DATE) + " " +
+                  cal.get(Calendar.MILLISECONDS_IN_DAY)/H +
+                  ", expected " + year + "/" + (month+1) + "/" + dom +
+                  " " + hour);
+        }
+    }
+
+// NOTE: Enable this code to check the behavior of the underlying JDK,
+// using a JDK Calendar object.
+//
+//    int millisInDay(java.util.Calendar cal) {
+//        return ((cal.get(Calendar.HOUR_OF_DAY) * 60 +
+//                 cal.get(Calendar.MINUTE)) * 60 +
+//                cal.get(Calendar.SECOND)) * 1000 +
+//            cal.get(Calendar.MILLISECOND);
+//    }
+//
+//    void verifyMapping(java.util.Calendar cal, int year, int month, int dom, int hour,
+//                       double epochHours) {
+//        cal.clear();
+//        cal.set(year, month, dom, hour, 0, 0);
+//        Date d = cal.getTime();
+//        double e = d.getTime() / 3600000.0;
+//        Date ed = new Date((long)(epochHours * 3600000));
+//        if (e == epochHours) {
+//            logln("Ok: " + year + "/" + (month+1) + "/" + dom + " " + hour + ":00 => " +
+//                  e + " (" + ed + ")");
+//        } else {
+//            errln("FAIL: " + year + "/" + (month+1) + "/" + dom + " " + hour + ":00 => " +
+//                  e + " (" + new Date((long)(e * 3600000)) + ")" +
+//                  ", expected " + epochHours + " (" + ed + ")");
+//        }
+//        cal.setTime(ed);
+//        if (cal.get(Calendar.YEAR) == year &&
+//            cal.get(Calendar.MONTH) == month &&
+//            cal.get(Calendar.DATE) == dom &&
+//            millisInDay(cal) == hour * 3600000) {
+//            logln("Ok: " + epochHours + " (" + ed + ") => " +
+//                  cal.get(Calendar.YEAR) + "/" +
+//                  (cal.get(Calendar.MONTH)+1) + "/" +
+//                  cal.get(Calendar.DATE) + " " +
+//                  millisInDay(cal)/3600000.0);
+//        } else {
+//            errln("FAIL: " + epochHours + " (" + ed + ") => " +
+//                  cal.get(Calendar.YEAR) + "/" +
+//                  (cal.get(Calendar.MONTH)+1) + "/" +
+//                  cal.get(Calendar.DATE) + " " +
+//                  millisInDay(cal)/3600000.0 +
+//                  ", expected " + year + "/" + (month+1) + "/" + dom +
+//                  " " + hour);
+//        }
+//    }
+
+    public void TestBoundaries()
+    {
+        TimeZone save = TimeZone.getDefault();
+
+        // Check basic mappings.  We had a problem with this for ICU
+        // 2.8 after migrating to using pass-through time zones.  The
+        // problem appeared only on JDK 1.3.
+        TimeZone pst = safeGetTimeZone("PST");
+        Calendar tempcal = Calendar.getInstance(pst);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 3,  0, 238904.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 4,  0, 238928.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 5,  0, 238952.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 5, 23, 238975.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 6,  0, 238976.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 6,  1, 238977.0);
+        verifyMapping(tempcal, 1997, Calendar.APRIL, 6,  3, 238978.0);
+        
+        TimeZone utc = safeGetTimeZone("UTC");
+        Calendar utccal = Calendar.getInstance(utc);
+        verifyMapping(utccal, 1997, Calendar.APRIL, 6, 0, 238968.0);
+
+// NOTE: Enable this code to check the behavior of the underlying JDK,
+// using a JDK Calendar object.
+//
+//        java.util.TimeZone jdkpst = java.util.TimeZone.getTimeZone("PST");
+//        java.util.Calendar jdkcal = java.util.Calendar.getInstance(jdkpst);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 5,  0, 238952.0);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 5, 23, 238975.0);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 6,  0, 238976.0);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 6,  1, 238977.0);
+//        verifyMapping(jdkcal, 1997, Calendar.APRIL, 6,  3, 238978.0);
+
+        tempcal.clear();
+        tempcal.set(1997, Calendar.APRIL, 6);
+        Date d = tempcal.getTime();
+
+        try {
+            TimeZone.setDefault(pst);
+
+            // DST changeover for PST is 4/6/1997 at 2 hours past midnight
+            // at 238978.0 epoch hours.
+
+            // i is minutes past midnight standard time
+            for (int i=-120; i<=180; i+=60)
+            {
+                boolean inDST = (i >= 120);
+                tempcal.setTimeInMillis(d.getTime() + i*60*1000);
+                verifyDST("hour=" + i/60,
+                          tempcal, pst, true, inDST, -8*ONE_HOUR,
+                          inDST ? -7*ONE_HOUR : -8*ONE_HOUR);
+            }
+        } finally {
+            TimeZone.setDefault(save);
+        }
+
+        // We no longer use ICU TimeZone implementation for Java
+        // default TimeZone.  Java 1.3 or older version do not
+        // support historic transitions, therefore, the test below
+        // will fail on such environment (with the latest TimeZone
+        // patch for US 2007+ rule).
+        String javaver = System.getProperty("java.version", "1.3");
+        if (!javaver.startsWith("1.3"))
+        {
+            // This only works in PST/PDT
+            TimeZone.setDefault(safeGetTimeZone("PST"));
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingDate(tempcal.getTime(), "PST", PST_1997_BEG);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingDate(tempcal.getTime(), "PDT", PST_1997_END);
+        }
+
+        //  if (true)
+        //  {
+        //      logln("========================================");
+        //      findDaylightBoundaryUsingCalendar(new Date(97,0,1), false);
+        //      logln("========================================");
+        //      findDaylightBoundaryUsingCalendar(new Date(97,6,1), true);
+        //  }
+
+        if (true)
+        {
+            // Southern hemisphere test
+            logln("========================================");
+            TimeZone z = safeGetTimeZone(AUSTRALIA);
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), true, AUSTRALIA_1997_END, z);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), false, AUSTRALIA_1997_BEG, z);
+        }
+
+        if (true)
+        {
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), false, PST_1997_BEG);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            findDaylightBoundaryUsingTimeZone(tempcal.getTime(), true, PST_1997_END);
+        }
+
+        // This just shows the offset for April 4-7 in 1997.  This is redundant
+        // with a test above, so we disable it.
+        if (false)
+        {
+            TimeZone z = TimeZone.getDefault();
+            tempcal.set(1997, 3, 4);
+            logln(z.getOffset(1, 97, 3, 4, 6, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 5);
+            logln(z.getOffset(1, 97, 3, 5, 7, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 6);
+            logln(z.getOffset(1, 97, 3, 6, 1, 0) + " " + tempcal.getTime());
+            tempcal.set(1997, 3, 7);
+            logln(z.getOffset(1, 97, 3, 7, 2, 0) + " " + tempcal.getTime());
+        }
+    }
+
+
+    //----------------------------------------------------------------------
+    // Can't do any of these without a public inDaylightTime in GC
+    //----------------------------------------------------------------------
+
+
+    //    static GregorianCalendar cal = new GregorianCalendar();
+    //
+    //    static void _testUsingBinarySearch(Date d, boolean startsInDST)
+    //    {
+    //  // Given a date with a year start, find the Daylight onset
+    //  // and end.  The given date should be 1/1/xx in some year.
+    //
+    //  // Use a binary search, assuming that we have a Standard
+    //  // time at the midpoint.
+    //  long min = d.getTime();
+    //  long max = min + (long)(365.25 / 2 * ONE_DAY);
+    //
+    //  // First check the max
+    //  cal.setTime(new Date(max));
+    //  if (cal.inDaylightTime() == startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + (new Date(max)) + ") != " + (!startsInDST));
+    //  }
+    //
+    //  cal.setTime(d);
+    //  if (cal.inDaylightTime() != startsInDST)
+    //  {
+    //      logln("Error: inDaylightTime(" + d + ") != " + startsInDST);
+    //  }
+    //
+    //  while ((max - min) >  INTERVAL)
+    //  {
+    //      long mid = (min + max) >> 1;
+    //      cal.setTime(new Date(mid));
+    //      if (cal.inDaylightTime() == startsInDST)
+    //      {
+    //      min = mid;
+    //      }
+    //      else
+    //      {
+    //      max = mid;
+    //      }
+    //  }
+    //
+    //  logln("Binary Search Before: " + showDate(min));
+    //  logln("Binary Search After:  " + showDate(max));
+    //    }
+    //
+    //    static void _testUsingMillis(Date d, boolean startsInDST)
+    //    {
+    //  long millis = d.getTime();
+    //  long max = millis + (long)(370 * ONE_DAY); // A year plus extra
+    //
+    //  boolean lastDST = startsInDST;
+    //  while (millis < max)
+    //  {
+    //      cal.setTime(new Date(millis));
+    //      boolean inDaylight = cal.inDaylightTime();
+    //
+    //      if (inDaylight != lastDST)
+    //      {
+    //      logln("Switch " + (inDaylight ? "into" : "out of")
+    //                 + " DST at " + (new Date(millis)));
+    //      lastDST = inDaylight;
+    //      }
+    //
+    //      millis += 15*ONE_MINUTE;
+    //  }
+    //    }
+    //
+    //    static void _testUsingFields(int y, boolean startsInDST)
+    //    {
+    //  boolean lastDST = startsInDST;
+    //  for (int m = 0; m < 12; ++m)
+    //  {
+    //      for (int d = 1; d <= MONTH_LENGTH[m]; ++d)
+    //      {
+    //      for (int h = 0; h < 24; ++h)
+    //      {
+    //          for (int min = 0; min < 60; min += 15)
+    //          {
+    //          cal.clear();
+    //          cal.set(y, m, d, h, min);
+    //          boolean inDaylight = cal.inDaylightTime();
+    //          if (inDaylight != lastDST)
+    //          {
+    //              lastDST = inDaylight;
+    //              log("Switch " + (lastDST ? "into" : "out of")
+    //                       + " DST at " + y + "/" + (m+1) + "/" + d
+    //                       + " " + showNN(h) + ":" + showNN(min));
+    //              logln(" " + cal.getTime());
+    //
+    //              cal.set(y, m, d, h-1, 45);
+    //              log("Before = "
+    //+ y + "/" + (m+1) + "/" + d
+    //+ " " + showNN(h-1) + ":" + showNN(45));
+    //              logln(" " + cal.getTime());
+    //          }
+    //          }
+    //      }
+    //      }
+    //  }
+    //    }
+    //
+    //    public void Test1()
+    //    {
+    //  logln(Locale.getDefault().getDisplayName());
+    //  logln(TimeZone.getDefault().getID());
+    //  logln(new Date(0));
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      _testUsingBinarySearch(new Date(97,0,1), false);
+    //      logln("========================================");
+    //      _testUsingBinarySearch(new Date(97,6,1), true);
+    //  }
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      logln("Stepping using millis");
+    //      _testUsingMillis(new Date(97,0,1), false);
+    //  }
+    //
+    //  if (true)
+    //  {
+    //      logln("========================================");
+    //      logln("Stepping using fields");
+    //      _testUsingFields(1997, false);
+    //  }
+    //
+    //  if (false)
+    //  {
+    //      cal.clear();
+    //      cal.set(1997, 3, 5, 10, 0);
+    //      //  cal.inDaylightTime();
+    //      logln("Date = " + cal.getTime());
+    //      logln("Millis = " + cal.getTime().getTime()/3600000);
+    //  }
+    //    }
+
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+
+    void _testUsingBinarySearch(SimpleTimeZone tz, Date d, long expectedBoundary)
+    {
+        // Given a date with a year start, find the Daylight onset
+        // and end.  The given date should be 1/1/xx in some year.
+
+        // Use a binary search, assuming that we have a Standard
+        // time at the midpoint.
+        long min = d.getTime();
+        long max = min + (long)(365.25 / 2 * ONE_DAY);
+
+        // First check the boundaries
+        boolean startsInDST = tz.inDaylightTime(d);
+
+        if (tz.inDaylightTime(new Date(max)) == startsInDST)
+        {
+            errln("Error: inDaylightTime(" + (new Date(max)) + ") != " + (!startsInDST));
+        }
+
+        while ((max - min) >  INTERVAL)
+        {
+            long mid = (min + max) >> 1;
+            if (tz.inDaylightTime(new Date(mid)) == startsInDST)
+            {
+                min = mid;
+            }
+            else
+            {
+                max = mid;
+            }
+        }
+
+        logln("Binary Search Before: " + showDate(min));
+        logln("Binary Search After:  " + showDate(max));
+
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 && mindelta <= INTERVAL &&
+            mindelta >= 0 && mindelta <= INTERVAL)
+            logln("PASS: Expected boundary at " + expectedBoundary);
+        else
+            errln("FAIL: Expected boundary at " + expectedBoundary);
+    }
+
+    /*
+      static void _testUsingMillis(Date d, boolean startsInDST)
+      {
+      long millis = d.getTime();
+      long max = millis + (long)(370 * ONE_DAY); // A year plus extra
+
+      boolean lastDST = startsInDST;
+      while (millis < max)
+      {
+      cal.setTime(new Date(millis));
+      boolean inDaylight = cal.inDaylightTime();
+
+      if (inDaylight != lastDST)
+      {
+      logln("Switch " + (inDaylight ? "into" : "out of")
+      + " DST at " + (new Date(millis)));
+      lastDST = inDaylight;
+      }
+
+      millis += 15*ONE_MINUTE;
+      }
+      }
+      */
+
+    /**
+     * Test new rule formats.
+     */
+    public void TestNewRules()
+    {
+        //logln(Locale.getDefault().getDisplayName());
+        //logln(TimeZone.getDefault().getID());
+        //logln(new Date(0));
+
+        if (true)
+        {
+            // Doesn't matter what the default TimeZone is here, since we
+            // are creating our own TimeZone objects.
+
+            SimpleTimeZone tz;
+            java.util.Calendar tempcal = java.util.Calendar.getInstance();
+            tempcal.clear();
+
+            logln("-----------------------------------------------------------------");
+            logln("Aug 2ndTues .. Mar 15");
+            tz = new SimpleTimeZone(-8*ONE_HOUR, "Test_1",
+                                    Calendar.AUGUST, 2, Calendar.TUESDAY, 2*ONE_HOUR,
+                                    Calendar.MARCH, 15, 0, 2*ONE_HOUR);
+            //logln(tz.toString());
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 858416400000L);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 871380000000L);
+
+            logln("-----------------------------------------------------------------");
+            logln("Apr Wed>=14 .. Sep Sun<=20");
+            tz = new SimpleTimeZone(-8*ONE_HOUR, "Test_2",
+                                    Calendar.APRIL, 14, -Calendar.WEDNESDAY, 2*ONE_HOUR,
+                                    Calendar.SEPTEMBER, -20, -Calendar.SUNDAY, 2*ONE_HOUR);
+            //logln(tz.toString());
+            logln("========================================");
+            tempcal.set(1997, 0, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 861184800000L);
+            logln("========================================");
+            tempcal.set(1997, 6, 1);
+            _testUsingBinarySearch(tz, tempcal.getTime(), 874227600000L);
+        }
+
+        /*
+          if (true)
+          {
+          logln("========================================");
+          logln("Stepping using millis");
+          _testUsingMillis(new Date(97,0,1), false);
+          }
+
+          if (true)
+          {
+          logln("========================================");
+          logln("Stepping using fields");
+          _testUsingFields(1997, false);
+          }
+
+          if (false)
+          {
+          cal.clear();
+          cal.set(1997, 3, 5, 10, 0);
+          //    cal.inDaylightTime();
+          logln("Date = " + cal.getTime());
+          logln("Millis = " + cal.getTime().getTime()/3600000);
+          }
+          */
+    }
+
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    // Long Bug
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+    //----------------------------------------------------------------------
+
+    //public void Test3()
+    //{
+    //    findDaylightBoundaryUsingTimeZone(new Date(97,6,1), true);
+    //}
+
+    /**
+     * Find boundaries by stepping.
+     */
+    void findBoundariesStepwise(int year, long interval, TimeZone z, int expectedChanges)
+    {
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(year, Calendar.JANUARY, 1);
+        Date d = tempcal.getTime();
+        long time = d.getTime(); // ms
+        long limit = time + ONE_YEAR + ONE_DAY;
+        boolean lastState = z.inDaylightTime(d);
+        int changes = 0;
+        logln("-- Zone " + z.getID() + " starts in " + year + " with DST = " + lastState);
+        logln("useDaylightTime = " + z.useDaylightTime());
+        while (time < limit)
+        {
+            d.setTime(time);
+            boolean state = z.inDaylightTime(d);
+            if (state != lastState)
+            {
+                logln((state ? "Entry " : "Exit ") +
+                      "at " + d);
+                lastState = state;
+                ++changes;
+            }
+            time += interval;
+        }
+        if (changes == 0)
+        {
+            if (!lastState && !z.useDaylightTime()) logln("No DST");
+            else errln("FAIL: DST all year, or no DST with true useDaylightTime");
+        }
+        else if (changes != 2)
+        {
+            errln("FAIL: " + changes + " changes seen; should see 0 or 2");
+        }
+        else if (!z.useDaylightTime())
+        {
+            errln("FAIL: useDaylightTime false but 2 changes seen");
+        }
+        if (changes != expectedChanges)
+        {
+            errln("FAIL: " + changes + " changes seen; expected " + expectedChanges);
+        }
+    }
+
+    public void TestStepwise()
+    {
+        findBoundariesStepwise(1997, ONE_DAY, safeGetTimeZone("America/New_York"), 2);
+        // disabled Oct 2003 aliu; ACT could mean anything, depending on the underlying JDK, as of 2.8
+        // findBoundariesStepwise(1997, ONE_DAY, safeGetTimeZone("ACT"), 2);
+        findBoundariesStepwise(1997, ONE_DAY, safeGetTimeZone("America/Phoenix"), 0); // Added 3Jan01
+        findBoundariesStepwise(1997, ONE_DAY, safeGetTimeZone(AUSTRALIA), 2);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
new file mode 100644
index 0000000..d375682
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
@@ -0,0 +1,240 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+
+import java.util.Date;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.AnnualTimeZoneRule;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateTimeRule;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.InitialTimeZoneRule;
+import com.ibm.icu.util.RuleBasedTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * Testing getOffset APIs using local time
+ */
+public class TimeZoneOffsetLocalTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneOffsetLocalTest().run(args);
+    }
+
+    /*
+     * Testing getOffset APIs around rule transition by local standard/wall time.
+     */
+    public void TestGetOffsetAroundTransition() {
+        final int HOUR = 60*60*1000;
+        final int MINUTE = 60*1000;
+
+        int[][] DATES = {
+            {2006, Calendar.APRIL, 2, 1, 30, 1*HOUR+30*MINUTE},
+            {2006, Calendar.APRIL, 2, 2, 00, 2*HOUR},
+            {2006, Calendar.APRIL, 2, 2, 30, 2*HOUR+30*MINUTE},
+            {2006, Calendar.APRIL, 2, 3, 00, 3*HOUR},
+            {2006, Calendar.APRIL, 2, 3, 30, 3*HOUR+30*MINUTE},
+            {2006, Calendar.OCTOBER, 29, 0, 30, 0*HOUR+30*MINUTE},
+            {2006, Calendar.OCTOBER, 29, 1, 00, 1*HOUR},
+            {2006, Calendar.OCTOBER, 29, 1, 30, 1*HOUR+30*MINUTE},
+            {2006, Calendar.OCTOBER, 29, 2, 00, 2*HOUR},
+            {2006, Calendar.OCTOBER, 29, 2, 30, 2*HOUR+30*MINUTE},
+        };
+
+        // Expected offsets by getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds)
+        int[] OFFSETS1 = {
+            // April 2, 2006
+            -8*HOUR,
+            -7*HOUR,
+            -7*HOUR,
+            -7*HOUR,
+            -7*HOUR,
+
+            // October 29, 2006
+            -7*HOUR,
+            -8*HOUR,
+            -8*HOUR,
+            -8*HOUR,
+            -8*HOUR,
+        };
+
+        
+        // Expected offsets by getOffset(long time, boolean local, int[] offsets) with local = true
+        // or getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_STD/duplicatedTimeOpt = LOCAL_STD
+        int[][] OFFSETS2 = {
+            // April 2, 2006
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+
+            // Oct 29, 2006
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+        };
+
+        // Expected offsets by getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_DST/duplicatedTimeOpt = LOCAL_DST
+        int[][] OFFSETS3 = {
+            // April 2, 2006
+            {-8*HOUR, 0},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+
+            // October 29, 2006
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 1*HOUR},
+            {-8*HOUR, 0},
+            {-8*HOUR, 0},
+        };
+
+        int[] offsets = new int[2];
+
+        TimeZone utc = TimeZone.getTimeZone("UTC");
+        Calendar cal = Calendar.getInstance(utc);
+        cal.clear();
+
+        // Set up TimeZone objects - OlsonTimeZone, SimpleTimeZone and RuleBasedTimeZone
+        BasicTimeZone[] TESTZONES = new BasicTimeZone[3];
+
+        TESTZONES[0] = (BasicTimeZone)TimeZone.getTimeZone("America/Los_Angeles", TimeZone.TIMEZONE_ICU);
+        TESTZONES[1] = new SimpleTimeZone(-8*HOUR, "Simple Pacific Time",
+                                            Calendar.APRIL, 1, Calendar.SUNDAY, 2*HOUR,
+                                            Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*HOUR);
+
+        InitialTimeZoneRule ir = new InitialTimeZoneRule(
+                "Pacific Standard Time", // Initial time Name
+                -8*HOUR,        // Raw offset
+                0*HOUR);        // DST saving amount
+
+        RuleBasedTimeZone rbPT = new RuleBasedTimeZone("Rule based Pacific Time", ir);
+
+        DateTimeRule dtr;
+        AnnualTimeZoneRule atzr;
+        final int STARTYEAR = 2000;
+
+        dtr = new DateTimeRule(Calendar.APRIL, 1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME); // 1st Sunday in April, at 2AM wall time
+        atzr = new AnnualTimeZoneRule("Pacific Daylight Time",
+                -8*HOUR /* rawOffset */, 1*HOUR /* dstSavings */, dtr,
+                STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbPT.addTransitionRule(atzr);
+
+        dtr = new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME); // last Sunday in October, at 2AM wall time
+        atzr = new AnnualTimeZoneRule("Pacific Standard Time",
+                -8*HOUR /* rawOffset */, 0 /* dstSavings */, dtr,
+                STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbPT.addTransitionRule(atzr);
+
+        TESTZONES[2] = rbPT;
+
+        // Calculate millis
+        long [] MILLIS = new long[DATES.length];
+        for (int i = 0; i < DATES.length; i++) {
+            cal.clear();
+            cal.set(DATES[i][0], DATES[i][1], DATES[i][2], DATES[i][3], DATES[i][4]);
+            MILLIS[i] = cal.getTimeInMillis();
+        }
+
+        DateFormat df = DateFormat.getInstance();
+        df.setTimeZone(utc);
+
+        // Test getOffset(int era, int year, int month, int day, int dayOfWeek, int millis)
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int d = 0; d < DATES.length; d++) {
+                int offset = TESTZONES[i].getOffset(GregorianCalendar.AD, DATES[d][0], DATES[d][1], DATES[d][2],
+                                                    Calendar.SUNDAY, DATES[d][5]);
+                if (offset != OFFSETS1[d]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[d])) + "(standard) - Got: " + offset + " Expected: " + OFFSETS1[d]);
+                }
+            }
+        }
+
+        // Test getOffset(long time, boolean local, int[] offsets) with local=true
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffset(MILLIS[m], true, offsets);
+                if (offsets[0] != OFFSETS2[m][0] || offsets[1] != OFFSETS2[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS2[m][0] + "/" + OFFSETS2[m][1]);
+                }
+            }
+        }
+
+        // Test getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_STD/duplicatedTimeOpt = LOCAL_STD
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffsetFromLocal(MILLIS[m], BasicTimeZone.LOCAL_STD, BasicTimeZone.LOCAL_STD, offsets);
+                if (offsets[0] != OFFSETS2[m][0] || offsets[1] != OFFSETS2[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall/STD/STD) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS2[m][0] + "/" + OFFSETS2[m][1]);
+                }
+            }
+        }
+
+        // Test getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_DST/duplicatedTimeOpt = LOCAL_DST
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffsetFromLocal(MILLIS[m], BasicTimeZone.LOCAL_DST, BasicTimeZone.LOCAL_DST, offsets);
+                if (offsets[0] != OFFSETS3[m][0] || offsets[1] != OFFSETS3[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall/DST/DST) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS3[m][0] + "/" + OFFSETS3[m][1]);
+                }
+            }
+        }
+
+        // Test getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_FORMER/duplicatedTimeOpt = LOCAL_LATTER
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffsetFromLocal(MILLIS[m], BasicTimeZone.LOCAL_FORMER, BasicTimeZone.LOCAL_LATTER, offsets);
+                if (offsets[0] != OFFSETS2[m][0] || offsets[1] != OFFSETS2[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall/FORMER/LATTER) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS2[m][0] + "/" + OFFSETS2[m][1]);
+                }
+            }
+        }
+
+        // Test getOffsetFromLocal(long time, int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets)
+        // with nonExistingTimeOpt = LOCAL_LATTER/duplicatedTimeOpt = LOCAL_FORMER
+        for (int i = 0; i < TESTZONES.length; i++) {
+            for (int m = 0; m < MILLIS.length; m++) {
+                TESTZONES[i].getOffsetFromLocal(MILLIS[m], BasicTimeZone.LOCAL_LATTER, BasicTimeZone.LOCAL_FORMER, offsets);
+                if (offsets[0] != OFFSETS3[m][0] || offsets[1] != OFFSETS3[m][1]) {
+                    errln("Bad offset returned by " + TESTZONES[i].getID() + " at "
+                            + df.format(new Date(MILLIS[m])) + "(wall/LATTER/FORMER) - Got: "
+                            + offsets[0] + "/" + offsets[1]
+                            + " Expected: " + OFFSETS3[m][0] + "/" + OFFSETS3[m][1]);
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
new file mode 100644
index 0000000..8b0fcc7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
@@ -0,0 +1,1154 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * @test 1.18 99/09/21
+ * @bug 4052967 4073209 4073215 4084933 4096952 4109314 4126678 4151406 4151429
+ * @bug 4154525 4154537 4154542 4154650 4159922 4162593 4173604 4176686 4184229 4208960
+ */
+
+package com.ibm.icu.dev.test.timezone;
+import com.ibm.icu.util.*;
+import java.io.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import java.util.Date;
+import java.util.Locale;
+
+public class TimeZoneRegression extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneRegression().run(args);
+    }
+
+    public void Test4052967() {
+        logln("*** CHECK TIMEZONE AGAINST HOST OS SETTING ***");
+        String id = TimeZone.getDefault().getID();
+        try {
+            // user.timezone is a protected system property
+            logln("user.timezone: " + System.getProperty("user.timezone", "<not set>"));
+            logln("TimeZone.getDefault().getID(): " + id);
+            logln(new Date().toString());
+            logln("*** THE RESULTS OF THIS TEST MUST BE VERIFIED MANUALLY ***");
+        }
+        catch (SecurityException e) {
+            warnln("security exception: " + e.toString());
+        }
+    }
+
+    public void Test4073209() {
+        TimeZone z1 = TimeZone.getTimeZone("PST");
+        TimeZone z2 = TimeZone.getTimeZone("PST");
+        if (z1 == z2) errln("Fail: TimeZone should return clones");
+    }
+
+    public void Test4073215() {
+        SimpleTimeZone z = new SimpleTimeZone(0, "GMT");
+        if (z.useDaylightTime())
+            errln("Fail: Fix test to start with non-DST zone");
+        z.setStartRule(Calendar.FEBRUARY, 1, Calendar.SUNDAY, 0);
+        z.setEndRule(Calendar.MARCH, -1, Calendar.SUNDAY, 0);
+        if (!z.useDaylightTime())
+            errln("Fail: DST not active");
+        Calendar tempcal = Calendar.getInstance();
+        tempcal.clear();
+        tempcal.setTimeZone(z);
+        tempcal.set(1997, Calendar.JANUARY, 31);
+        Date d1 = tempcal.getTime();
+        if (z.inDaylightTime(d1)) {
+            errln("Fail: DST not working as expected");
+        } 
+
+        tempcal.set(1997, Calendar.MARCH, 1);
+        Date d2 = tempcal.getTime();
+        if (!z.inDaylightTime(d2)) {
+            errln("Fail: DST not working as expected");
+        }
+        tempcal.clear();
+        tempcal.set(1997, Calendar.MARCH, 31);
+        Date d3 = tempcal.getTime();
+        if (z.inDaylightTime(d3)) {
+            errln("Fail: DST not working as expected");
+        } 
+    }
+
+    /**
+     * The expected behavior of TimeZone around the boundaries is:
+     * (Assume transition time of 2:00 AM)
+     *    day of onset 1:59 AM STD  = display name 1:59 AM ST
+     *                 2:00 AM STD  = display name 3:00 AM DT
+     *    day of end   0:59 AM STD  = display name 1:59 AM DT
+     *                 1:00 AM STD  = display name 1:00 AM ST
+     */
+    public void Test4084933() {
+        TimeZone tz = TimeZone.getTimeZone("PST");
+
+        long offset1 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (2*60*60*1000));
+        long offset2 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (2*60*60*1000)-1);
+
+        long offset3 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (1*60*60*1000));
+        long offset4 = tz.getOffset(1,
+            1997, Calendar.OCTOBER, 26, Calendar.SUNDAY, (1*60*60*1000)-1);
+
+        /*
+         *  The following was added just for consistency.  It shows that going *to* Daylight
+         *  Savings Time (PDT) does work at 2am.
+         */
+
+        long offset5 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (2*60*60*1000));
+        long offset6 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (2*60*60*1000)-1);
+
+        long offset7 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (1*60*60*1000));
+        long offset8 = tz.getOffset(1,
+            1997, Calendar.APRIL, 6, Calendar.SUNDAY, (1*60*60*1000)-1);
+
+        long SToffset = -8 * 60*60*1000L;
+        long DToffset = -7 * 60*60*1000L;
+        if (offset1 != SToffset || offset2 != SToffset ||
+            offset3 != SToffset || offset4 != DToffset ||
+            offset5 != DToffset || offset6 != SToffset ||
+            offset7 != SToffset || offset8 != SToffset)
+            warnln("Fail: TimeZone misbehaving");
+    }
+
+    public void Test4096952() {
+        String[] ZONES = { "GMT", "MET", "IST" };
+        boolean pass = true;
+        try {
+            for (int i=0; i<ZONES.length; ++i) {
+                TimeZone zone = TimeZone.getTimeZone(ZONES[i]);
+                if (!zone.getID().equals(ZONES[i]))
+                    warnln("Fail: Test broken; zones not instantiating");
+
+                ByteArrayOutputStream baos;
+                ObjectOutputStream ostream =
+                    new ObjectOutputStream(baos = new
+                                           ByteArrayOutputStream());
+                ostream.writeObject(zone);
+                ostream.close();
+                baos.close();
+                ObjectInputStream istream =
+                    new ObjectInputStream(new
+                                          ByteArrayInputStream(baos.toByteArray()));
+                TimeZone frankenZone = (TimeZone) istream.readObject();
+                //logln("Zone:        " + zone);
+                //logln("FrankenZone: " + frankenZone);
+                if (!zone.equals(frankenZone)) {
+                    logln("TimeZone " + zone.getID() +
+                          " not equal to serialized/deserialized one");
+                    pass = false;
+                }
+            }
+            if (!pass) errln("Fail: TimeZone serialization/equality bug");
+        }
+        catch (IOException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+        catch (ClassNotFoundException e) {
+            errln("Fail: " + e);
+            e.printStackTrace();
+        }
+    }
+
+    public void Test4109314() {
+        GregorianCalendar testCal = (GregorianCalendar)Calendar.getInstance();
+        TimeZone PST = TimeZone.getTimeZone("PST");
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998,Calendar.APRIL,4,22,0);
+        Date d1 = tempcal.getTime();
+        tempcal.set(1998,Calendar.APRIL,5,6,0);
+        Date d2 = tempcal.getTime();
+        tempcal.set(1998,Calendar.OCTOBER,24,22,0);
+        Date d3 = tempcal.getTime();
+        tempcal.set(1998,Calendar.OCTOBER,25,6,0);
+        Date d4 = tempcal.getTime();
+        Object[] testData = {
+            PST, d1, d2,
+            PST, d3, d4,
+        };
+        boolean pass=true;
+        for (int i=0; i<testData.length; i+=3) {
+            testCal.setTimeZone((TimeZone) testData[i]);
+            long t = ((Date)testData[i+1]).getTime();
+            Date end = (Date) testData[i+2];
+            while (t < end.getTime()) {
+                testCal.setTime(new Date(t));
+                if (!checkCalendar314(testCal, (TimeZone) testData[i]))
+                    pass = false;
+                t += 60*60*1000L;
+            }
+        }
+        if (!pass) errln("Fail: TZ API inconsistent");
+    }
+
+    boolean checkCalendar314(GregorianCalendar testCal, TimeZone testTZ) {
+        // GregorianCalendar testCal = (GregorianCalendar)aCal.clone();
+
+        final int ONE_DAY = 24*60*60*1000;
+
+        int tzOffset, tzRawOffset;
+        Float tzOffsetFloat,tzRawOffsetFloat;
+        // Here is where the user made an error.  They were passing in the value of
+        // the MILLSECOND field; you need to pass in the millis in the day in STANDARD
+        // time.
+        int millis = testCal.get(Calendar.MILLISECOND) +
+            1000 * (testCal.get(Calendar.SECOND) +
+                    60 * (testCal.get(Calendar.MINUTE) +
+                          60 * (testCal.get(Calendar.HOUR_OF_DAY)))) -
+            testCal.get(Calendar.DST_OFFSET);
+
+        /* Fix up millis to be in range.  ASSUME THAT WE ARE NOT AT THE
+         * BEGINNING OR END OF A MONTH.  We must add this code because
+         * getOffset() has been changed to be more strict about the parameters
+         * it receives -- it turns out that this test was passing in illegal
+         * values. */
+        int date = testCal.get(Calendar.DATE);
+        int dow  = testCal.get(Calendar.DAY_OF_WEEK);
+        while (millis < 0) {
+            millis += ONE_DAY;
+            --date;
+            dow = Calendar.SUNDAY + ((dow - Calendar.SUNDAY + 6) % 7);
+        }
+        while (millis >= ONE_DAY) {
+            millis -= ONE_DAY;
+            ++date;
+            dow = Calendar.SUNDAY + ((dow - Calendar.SUNDAY + 1) % 7);
+        }
+
+        tzOffset = testTZ.getOffset(testCal.get(Calendar.ERA),
+                                    testCal.get(Calendar.YEAR),
+                                    testCal.get(Calendar.MONTH),
+                                    date,
+                                    dow,
+                                    millis);
+        tzRawOffset = testTZ.getRawOffset();
+        tzOffsetFloat = new Float((float)tzOffset/(float)3600000);
+        tzRawOffsetFloat = new Float((float)tzRawOffset/(float)3600000);
+
+        Date testDate = testCal.getTime();
+
+        boolean inDaylightTime = testTZ.inDaylightTime(testDate);
+        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm");
+        sdf.setCalendar(testCal);
+        String inDaylightTimeString;
+
+        boolean passed;
+
+        if (inDaylightTime)
+        {
+            inDaylightTimeString = " DST ";
+            passed = (tzOffset == (tzRawOffset + 3600000));
+        }
+        else
+        {
+            inDaylightTimeString = "     ";
+            passed = (tzOffset == tzRawOffset);
+        }
+
+        String output = testTZ.getID() + " " + sdf.format(testDate) +
+            " Offset(" + tzOffsetFloat + ")" +
+            " RawOffset(" + tzRawOffsetFloat + ")" +
+            " " + millis/(float)3600000 + " " +
+            inDaylightTimeString;
+
+        if (passed)
+            output += "     ";
+        else
+            output += "ERROR";
+
+        if (passed) logln(output); else errln(output);
+        return passed;
+    }
+
+    /**
+     * CANNOT REPRODUDE
+     *
+     * Yet another _alleged_ bug in TimeZone.getOffset(), a method that never
+     * should have been made public.  It's simply too hard to use correctly.
+     *
+     * The original test code failed to do the following:
+     * (1) Call Calendar.setTime() before getting the fields!
+     * (2) Use the right millis (as usual) for getOffset(); they were passing
+     *     in the MILLIS field, instead of the STANDARD MILLIS IN DAY.
+     * When you fix these two problems, the test passes, as expected.
+     */
+    public void Test4126678() {
+    // Note: this test depends on the PST time zone.
+    TimeZone initialZone = TimeZone.getDefault();
+        Calendar cal = Calendar.getInstance();
+        TimeZone tz = TimeZone.getTimeZone("PST");
+    TimeZone.setDefault(tz);
+        cal.setTimeZone(tz);
+
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1998, Calendar.APRIL, 5, 10, 0);
+        Date dt = tempcal.getTime();
+    // the dt value is local time in PST.
+        if (!tz.inDaylightTime(dt))
+            errln("We're not in Daylight Savings Time and we should be.\n");
+
+        cal.setTime(dt);
+        int era = cal.get(Calendar.ERA);
+        int year = cal.get(Calendar.YEAR);
+        int month = cal.get(Calendar.MONTH);
+        int day = cal.get(Calendar.DATE);
+        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
+        int millis = cal.get(Calendar.MILLISECOND) +
+            (cal.get(Calendar.SECOND) +
+             (cal.get(Calendar.MINUTE) +
+              (cal.get(Calendar.HOUR) * 60) * 60) * 1000) -
+            cal.get(Calendar.DST_OFFSET);
+
+        long offset = tz.getOffset(era, year, month, day, dayOfWeek, millis);
+        long raw_offset = tz.getRawOffset();
+        if (offset == raw_offset)
+            errln("Offsets should not match when in DST");
+
+    // restore the initial time zone so that this test case
+    // doesn't affect the others.
+    TimeZone.setDefault(initialZone);
+    }
+
+    /**
+     * TimeZone.getAvailableIDs(int) throws exception for certain values,
+     * due to a faulty constant in TimeZone.java.
+     */
+    public void Test4151406() {
+        int max = 0;
+        for (int h=-28; h<=30; ++h) {
+            // h is in half-hours from GMT; rawoffset is in millis
+            int rawoffset = h * 1800000;
+            int hh = (h<0) ? -h : h;
+            String hname = ((h<0) ? "GMT-" : "GMT+") +
+                ((hh/2 < 10) ? "0" : "") +
+                (hh/2) + ':' +
+                ((hh%2==0) ? "00" : "30");
+            try {
+                String[] ids = TimeZone.getAvailableIDs(rawoffset);
+                if (ids.length > max) max = ids.length;
+                logln(hname + ' ' + ids.length +
+                      ((ids.length > 0) ? (" e.g. " + ids[0]) : ""));
+            } catch (Exception e) {
+                errln(hname + ' ' + "Fail: " + e);
+            }
+        }
+        logln("Maximum zones per offset = " + max);
+    }
+
+    public void Test4151429() {
+        try {
+            TimeZone tz = TimeZone.getTimeZone("GMT");
+            /*String name =*/ tz.getDisplayName(true, Integer.MAX_VALUE,
+                                            Locale.getDefault());
+            errln("IllegalArgumentException not thrown by TimeZone.getDisplayName()");
+        } catch(IllegalArgumentException e) {
+            System.out.print("");
+        }
+    }
+
+    /**
+     * SimpleTimeZone accepts illegal DST savings values.  These values
+     * must be non-zero.  There is no upper limit at this time.
+     */
+    public void Test4154525() {
+        final int GOOD = 1, BAD = 0;
+        int[] DATA = {
+            1, GOOD,
+            0, BAD,
+            -1, BAD,
+            60*60*1000, GOOD,
+            Integer.MIN_VALUE, BAD,
+            // Integer.MAX_VALUE, ?, // no upper limit on DST savings at this time
+        };
+        for (int i=0; i<DATA.length; i+=2) {
+            int savings = DATA[i];
+            boolean valid = DATA[i+1] == GOOD;
+            String method = null;
+            for (int j=0; j<2; ++j) {
+                try {
+                    switch (j) {
+                    case 0:
+                        method = "constructor";
+                        SimpleTimeZone z = new SimpleTimeZone(0, "id",
+                            Calendar.JANUARY, 1, 0, 0,
+                            Calendar.MARCH, 1, 0, 0,
+                            savings); // <- what we're interested in
+                        break;
+                    case 1:
+                        method = "setDSTSavings()";
+                        z = new SimpleTimeZone(0, "GMT");
+                        z.setDSTSavings(savings);
+                        break;
+                    }
+                    if (valid) {
+                        logln("Pass: DST savings of " + savings + " accepted by " + method);
+                    } else {
+                        errln("Fail: DST savings of " + savings + " accepted by " + method);
+                    }
+                } catch (IllegalArgumentException e) {
+                    if (valid) {
+                        errln("Fail: DST savings of " + savings + " to " + method + " gave " + e);
+                    } else {
+                        logln("Pass: DST savings of " + savings + " to " + method + " gave " + e);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * SimpleTimeZone.hasSameRules() doesn't work for zones with no DST
+     * and different DST parameters.
+     */
+    public void Test4154537() {
+        // tz1 and tz2 have no DST and different rule parameters
+        SimpleTimeZone tz1 = new SimpleTimeZone(0, "1", 0, 0, 0, 0, 2, 0, 0, 0);
+        SimpleTimeZone tz2 = new SimpleTimeZone(0, "2", 1, 0, 0, 0, 3, 0, 0, 0);
+        // tza and tzA have the same rule params
+        SimpleTimeZone tza = new SimpleTimeZone(0, "a", 0, 1, 0, 0, 3, 2, 0, 0);
+        SimpleTimeZone tzA = new SimpleTimeZone(0, "A", 0, 1, 0, 0, 3, 2, 0, 0);
+        // tzb differs from tza
+        SimpleTimeZone tzb = new SimpleTimeZone(0, "b", 0, 1, 0, 0, 3, 1, 0, 0);
+        if (tz1.useDaylightTime() || tz2.useDaylightTime() ||
+            !tza.useDaylightTime() || !tzA.useDaylightTime() ||
+            !tzb.useDaylightTime()) {
+            errln("Test is broken -- rewrite it");
+        }
+        if (!tza.hasSameRules(tzA) || tza.hasSameRules(tzb)) {
+            errln("Fail: hasSameRules() broken for zones with rules");
+        }
+        if (!tz1.hasSameRules(tz2)) {
+            errln("Fail: hasSameRules() returns false for zones without rules");
+            errln("zone 1 = " + tz1);
+            errln("zone 2 = " + tz2);
+        }
+    }
+
+    /**
+     * SimpleTimeZone constructors, setStartRule(), and setEndRule() don't
+     * check for out-of-range arguments.
+     */
+    public void Test4154542() {
+        final int GOOD = 1;
+        final int BAD  = 0;
+
+        final int GOOD_MONTH       = Calendar.JANUARY;
+        final int GOOD_DAY         = 1;
+        final int GOOD_DAY_OF_WEEK = Calendar.SUNDAY;
+        final int GOOD_TIME        = 0;
+
+        int[] DATA = {
+            GOOD, Integer.MIN_VALUE,    0,  Integer.MAX_VALUE,   Integer.MIN_VALUE,
+            GOOD, Calendar.JANUARY,    -5,  Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,    5,  Calendar.SATURDAY,   24*60*60*1000-1,
+            BAD,  Calendar.DECEMBER,    5,  Calendar.SATURDAY,   24*60*60*1000+1,
+            BAD,  Calendar.DECEMBER,    5,  Calendar.SATURDAY,  -1,
+            BAD,  Calendar.JANUARY,    -6,  Calendar.SUNDAY,     0,
+            BAD,  Calendar.DECEMBER,    6,  Calendar.SATURDAY,   24*60*60*1000,
+            GOOD, Calendar.DECEMBER,    1,  0,                   0,
+            GOOD, Calendar.DECEMBER,   31,  0,                   0,
+            BAD,  Calendar.APRIL,      31,  0,                   0,
+            BAD,  Calendar.DECEMBER,   32,  0,                   0,
+            BAD,  Calendar.JANUARY-1,   1,  Calendar.SUNDAY,     0,
+            BAD,  Calendar.DECEMBER+1,  1,  Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,   31, -Calendar.SUNDAY,     0,
+            GOOD, Calendar.DECEMBER,   31, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,   32, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,  -32, -Calendar.SATURDAY,   0,
+            BAD,  Calendar.DECEMBER,   31, -Calendar.SATURDAY-1, 0,
+        };
+        SimpleTimeZone zone = new SimpleTimeZone(0, "Z");
+        for (int i=0; i<DATA.length; i+=5) {
+            boolean shouldBeGood = (DATA[i] == GOOD);
+            int month     = DATA[i+1];
+            int day       = DATA[i+2];
+            int dayOfWeek = DATA[i+3];
+            int time      = DATA[i+4];
+
+            Exception ex = null;
+            try {
+                zone.setStartRule(month, day, dayOfWeek, time);
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("setStartRule(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }
+
+            ex = null;
+            try {
+                zone.setEndRule(month, day, dayOfWeek, time);
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("setEndRule(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }
+
+            ex = null;
+            try {
+                /*SimpleTimeZone temp =*/ new SimpleTimeZone(0, "Z",
+                        month, day, dayOfWeek, time,
+                        GOOD_MONTH, GOOD_DAY, GOOD_DAY_OF_WEEK, GOOD_TIME);
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("SimpleTimeZone(month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (", <end>) should work but throws " + ex)
+                       : ", <end>) should fail but doesn't"));
+            }
+
+            ex = null;
+            try {
+                /*SimpleTimeZone temp = */new SimpleTimeZone(0, "Z",
+                        GOOD_MONTH, GOOD_DAY, GOOD_DAY_OF_WEEK, GOOD_TIME,
+                        month, day, dayOfWeek, time);
+               // temp = null;
+            } catch (IllegalArgumentException e) {
+                ex = e;
+            }
+            if ((ex == null) != shouldBeGood) {
+                errln("SimpleTimeZone(<start>, month=" + month + ", day=" + day +
+                      ", dayOfWeek=" + dayOfWeek + ", time=" + time +
+                      (shouldBeGood ? (") should work but throws " + ex)
+                       : ") should fail but doesn't"));
+            }
+        }
+    }
+
+    /**
+     * SimpleTimeZone.getOffset accepts illegal arguments.
+     */
+    public void Test4154650() {
+        final int GOOD=1, BAD=0;
+        final int GOOD_ERA=GregorianCalendar.AD, GOOD_YEAR=1998, GOOD_MONTH=Calendar.AUGUST;
+        final int GOOD_DAY=2, GOOD_DOW=Calendar.SUNDAY, GOOD_TIME=16*3600000;
+        int[] DATA = {
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GregorianCalendar.BC, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            GOOD, GregorianCalendar.AD, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GregorianCalendar.BC-1, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GregorianCalendar.AD+1, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.DECEMBER, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY-1, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.DECEMBER+1, GOOD_DAY, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 1, GOOD_DOW, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 31, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 0, GOOD_DOW, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, Calendar.JANUARY, 32, GOOD_DOW, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SUNDAY, GOOD_TIME,
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SATURDAY, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SUNDAY-1, GOOD_TIME,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, Calendar.SATURDAY+1, GOOD_TIME,
+
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 0,
+            GOOD, GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 24*3600000-1,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, -1,
+            BAD,  GOOD_ERA, GOOD_YEAR, GOOD_MONTH, GOOD_DAY, GOOD_DOW, 24*3600000,
+        };
+
+        TimeZone tz = TimeZone.getDefault();
+        for (int i=0; i<DATA.length; i+=7) {
+            boolean good = DATA[i] == GOOD;
+            IllegalArgumentException e = null;
+            try {
+                /*int offset =*/ tz.getOffset(DATA[i+1], DATA[i+2], DATA[i+3],
+                                          DATA[i+4], DATA[i+5], DATA[i+6]);
+                //offset = 0;
+           } catch (IllegalArgumentException ex) {
+                e = ex;
+            }
+            if (good != (e == null)) {
+                errln("Fail: getOffset(" +
+                      DATA[i+1] + ", " + DATA[i+2] + ", " + DATA[i+3] + ", " +
+                      DATA[i+4] + ", " + DATA[i+5] + ", " + DATA[i+6] +
+                      (good ? (") threw " + e) : ") accepts invalid args"));
+            }
+        }
+    }
+
+    /**
+     * TimeZone constructors allow null IDs.
+     */
+    public void Test4159922() {
+        TimeZone z = null;
+
+        // TimeZone API.  Only hasSameRules() and setDefault() should
+        // allow null.
+        try {
+            z = TimeZone.getTimeZone(null);
+            errln("FAIL: Null allowed in getTimeZone");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        z = TimeZone.getTimeZone("GMT");
+        try {
+        // {dlf} requiring cast for disambiguation is ok for compatibility since null
+        // is not a valid argument to this API
+            z.getDisplayName(false, TimeZone.SHORT, (ULocale)null);
+            errln("FAIL: Null allowed in getDisplayName(3)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+        // {dlf} see above
+            z.getDisplayName((ULocale)null);
+            errln("FAIL: Null allowed in getDisplayName(1)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            if (z.hasSameRules(null)) {
+                errln("FAIL: hasSameRules returned true");
+            }
+        } catch (NullPointerException e) {
+            errln("FAIL: Null NOT allowed in hasSameRules");
+        }
+        try {
+            z.inDaylightTime(null);
+            errln("FAIL: Null allowed in inDaylightTime");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            z.setID(null);
+            errln("FAIL: Null allowed in setID");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+
+        TimeZone save = TimeZone.getDefault();
+        try {
+            TimeZone.setDefault(null);
+        } catch (NullPointerException e) {
+            errln("FAIL: Null NOT allowed in setDefault");
+        } finally {
+            TimeZone.setDefault(save);
+        }
+
+        // SimpleTimeZone API
+        SimpleTimeZone s = null;
+        try {
+            s = new SimpleTimeZone(0, null);
+            errln("FAIL: Null allowed in SimpleTimeZone(2)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            s = new SimpleTimeZone(0, null, 0, 1, 0, 0, 0, 1, 0, 0);
+            errln("FAIL: Null allowed in SimpleTimeZone(10)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        try {
+            s = new SimpleTimeZone(0, null, 0, 1, 0, 0, 0, 1, 0, 0, 1000);
+            errln("FAIL: Null allowed in SimpleTimeZone(11)");
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        if(s!=null){
+            errln("FAIL: Did not get the expected Exception");
+        }
+    }
+
+    /**
+     * TimeZone broken at midnight.  The TimeZone code fails to handle
+     * transitions at midnight correctly.
+     */
+    public void Test4162593() {
+        SimpleDateFormat fmt = new SimpleDateFormat("z", Locale.US);
+        final int ONE_HOUR = 60*60*1000;
+        final float H = (float) ONE_HOUR;
+        TimeZone initialZone = TimeZone.getDefault();
+        SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy HH:mm z");
+
+        SimpleTimeZone asuncion = new SimpleTimeZone(-4*ONE_HOUR, "America/Asuncion" /*PY%sT*/,
+            Calendar.OCTOBER, 1, 0 /*DOM*/, 0*ONE_HOUR,
+            Calendar.MARCH, 1, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR);
+
+        /* Zone
+         * Starting time
+         * Transition expected between start+1H and start+2H
+         */
+        Object[] DATA = {
+            new SimpleTimeZone(2*ONE_HOUR, "Asia/Damascus" /*EE%sT*/,
+                Calendar.APRIL, 1, 0 /*DOM*/, 0*ONE_HOUR,
+                Calendar.OCTOBER, 1, 0 /*DOM*/, 0*ONE_HOUR, 1*ONE_HOUR),
+            new int[] {1998, Calendar.SEPTEMBER, 30, 22, 0},
+            Boolean.TRUE,
+
+            asuncion,
+            new int[] {2000, Calendar.FEBRUARY, 28, 22, 0},
+            Boolean.FALSE,
+
+            asuncion,
+            new int[] {2000, Calendar.FEBRUARY, 29, 22, 0},
+            Boolean.TRUE,
+        };
+
+        String[] zone = new String[4];
+
+        for (int j=0; j<DATA.length; j+=3) {
+            TimeZone tz = (TimeZone)DATA[j];
+            TimeZone.setDefault(tz);
+            fmt.setTimeZone(tz);
+            sdf.setTimeZone(tz);
+
+            // Must construct the Date object AFTER setting the default zone
+            int[] p = (int[])DATA[j+1];
+            Calendar cal = Calendar.getInstance();
+            cal.clear();
+            cal.set(p[0], p[1], p[2], p[3], p[4]);
+            long start = cal.getTime().getTime();
+            boolean transitionExpected = ((Boolean)DATA[j+2]).booleanValue();
+
+            logln(tz.getID() + ":");
+            for (int i=0; i<4; ++i) {
+                Date d = new Date(start + i*ONE_HOUR);
+                zone[i] = fmt.format(d);
+                logln("" + i + ": " + sdf.format(d) + " => " + zone[i] +
+                      " (" + d.getTime()/H + ")");
+            }
+            cal.set(p[0], p[1], p[2], 0, 0);
+            for (int i=0; i<4; ++i) {
+                int h = 22+i;
+                int dom = p[2]+(h>=24?1:0);
+                h %= 24;
+                int ms = h*ONE_HOUR;
+                cal.clear();
+                cal.set(p[0], p[1], dom, 0, 0);
+                int off = tz.getOffset(GregorianCalendar.AD,
+                                       cal.get(Calendar.YEAR),
+                                       cal.get(Calendar.MONTH),
+                                       cal.get(Calendar.DATE),
+                                       cal.get(Calendar.DAY_OF_WEEK),
+                                       ms);
+                cal.add(Calendar.HOUR, h);
+                int dstOffset = cal.get(Calendar.DST_OFFSET);
+                logln("h=" + h + "; dom=" + dom +
+                      "; ZONE_OFFSET=" + cal.get(Calendar.ZONE_OFFSET)/H +
+                      "; DST_OFFSET=" + dstOffset/H +
+                      "; getOffset()=" + off/H +
+                      " (" + cal.getTime().getTime()/H + ")");
+            }
+            if (zone[0].equals(zone[1]) &&
+                (zone[1].equals(zone[2]) != transitionExpected) &&
+                zone[2].equals(zone[3])) {
+                logln("Ok: transition " + transitionExpected);
+            } else {
+                errln("FAIL: expected " +
+                      (transitionExpected?"transition":"no transition"));
+            }
+        }
+
+    // restore the initial time zone so that this test case
+    // doesn't affect the others.
+    TimeZone.setDefault(initialZone);
+    }
+
+    /**
+     * TimeZone broken in last hour of year
+     */
+    public void Test4173604() {
+        TimeZone pst = TimeZone.getTimeZone("PST");
+        int o22 = pst.getOffset(1, 1998, 11, 31, Calendar.THURSDAY, 22*60*60*1000);
+        int o23 = pst.getOffset(1, 1998, 11, 31, Calendar.THURSDAY, 23*60*60*1000);
+        int o00 = pst.getOffset(1, 1999, 0, 1, Calendar.FRIDAY, 0);
+        if (o22 != o23 || o22 != o00) {
+            errln("Offsets should be the same (for PST), but got: " +
+                  "12/31 22:00 " + o22 +
+                  ", 12/31 23:00 " + o23 +
+                  ", 01/01 00:00 " + o00);
+        }
+
+        GregorianCalendar cal = new GregorianCalendar();
+        cal.setTimeZone(pst);
+        cal.clear();
+        cal.set(1998, Calendar.JANUARY, 1);
+        int lastDST = cal.get(Calendar.DST_OFFSET);
+        int transitions = 0;
+        int delta = 5;
+        while (cal.get(Calendar.YEAR) < 2000) {
+            cal.add(Calendar.MINUTE, delta);
+            if (cal.get(Calendar.DST_OFFSET) != lastDST) {
+                ++transitions;
+                Calendar t = (Calendar)cal.clone();
+                t.add(Calendar.MINUTE, -delta);
+                logln(t.getTime() + "  " + t.get(Calendar.DST_OFFSET));
+                logln(cal.getTime() + "  " + (lastDST=cal.get(Calendar.DST_OFFSET)));
+            }
+        }
+        if (transitions != 4) {
+            errln("Saw " + transitions + " transitions; should have seen 4");
+        }
+    }
+
+    /**
+     * getDisplayName doesn't work with unusual savings/offsets.
+     */
+    public void Test4176686() {
+        // Construct a zone that does not observe DST but
+        // that does have a DST savings (which should be ignored).
+        int offset = 90 * 60000; // 1:30
+        SimpleTimeZone z1 = new SimpleTimeZone(offset, "_std_zone_");
+        z1.setDSTSavings(45 * 60000); // 0:45
+
+        // Construct a zone that observes DST for the first 6 months.
+        SimpleTimeZone z2 = new SimpleTimeZone(offset, "_dst_zone_");
+        z2.setDSTSavings(45 * 60000); // 0:45
+        z2.setStartRule(Calendar.JANUARY, 1, 0);
+        z2.setEndRule(Calendar.JULY, 1, 0);
+
+        // Also check DateFormat
+        DateFormat fmt1 = new SimpleDateFormat("z");
+        fmt1.setTimeZone(z1); // Format uses standard zone
+        DateFormat fmt2 = new SimpleDateFormat("z");
+        fmt2.setTimeZone(z2); // Format uses DST zone
+        java.util.Calendar tempcal = java.util.Calendar.getInstance();
+        tempcal.clear();
+        tempcal.set(1970, Calendar.FEBRUARY, 1);
+        Date dst = tempcal.getTime(); // Time in DST
+        tempcal.set(1970, Calendar.AUGUST, 1);
+        Date std = tempcal.getTime(); // Time in standard
+
+        // Description, Result, Expected Result
+        String[] DATA = {
+            "getDisplayName(false, SHORT)/std zone",
+            z1.getDisplayName(false, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(false, LONG)/std zone",
+            z1.getDisplayName(false, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(true, SHORT)/std zone",
+            z1.getDisplayName(true, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(true, LONG)/std zone",
+            z1.getDisplayName(true, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(false, SHORT)/dst zone",
+            z2.getDisplayName(false, TimeZone.SHORT), "GMT+01:30",
+            "getDisplayName(false, LONG)/dst zone",
+            z2.getDisplayName(false, TimeZone.LONG ), "GMT+01:30",
+            "getDisplayName(true, SHORT)/dst zone",
+            z2.getDisplayName(true, TimeZone.SHORT), "GMT+02:15",
+            "getDisplayName(true, LONG)/dst zone",
+            z2.getDisplayName(true, TimeZone.LONG ), "GMT+02:15",
+            "DateFormat.format(std)/std zone", fmt1.format(std), "GMT+01:30",
+            "DateFormat.format(dst)/std zone", fmt1.format(dst), "GMT+01:30",
+            "DateFormat.format(std)/dst zone", fmt2.format(std), "GMT+01:30",
+            "DateFormat.format(dst)/dst zone", fmt2.format(dst), "GMT+02:15",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            if (!DATA[i+1].equals(DATA[i+2])) {
+                errln("FAIL: " + DATA[i] + " -> " + DATA[i+1] + ", exp " + DATA[i+2]);
+            }
+        }
+    }
+
+    /**
+     * SimpleTimeZone allows invalid DOM values.
+     */
+    // Current orgnaization of data in zoneinfor.res allows negative
+    // values from DOM so comment these tests out
+    
+    public void Test4184229() {
+        SimpleTimeZone zone = null;
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, -1, 0, 0, 0, 0, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 startDay");
+        } catch(IllegalArgumentException e) {
+            logln("(a) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, 0, 0, 0, 0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 endDay");
+        } catch(IllegalArgumentException e) {
+            logln("(b) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, -1, 0, 0, 0, 0, 0, 0, 1000);
+            errln("Failed. No exception has been thrown for DOM -1 startDay +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(c) " + e.getMessage());
+        }
+        try {
+            zone = new SimpleTimeZone(0, "A", 0, 0, 0, 0, 0, -1, 0, 0, 1000);
+            errln("Failed. No exception has been thrown for DOM -1 endDay +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(d) " + e.getMessage());
+        }
+        // Make a valid constructor call for subsequent tests.
+
+        zone = new SimpleTimeZone(0, "A", 0, 1, 0, 0, 0, 1, 0, 0);
+        
+        try {
+            zone.setStartRule(0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setStartRule +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(e) " + e.getMessage());
+        }
+        try {
+            zone.setStartRule(0, -1, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setStartRule");
+        } catch(IllegalArgumentException e) {
+            logln("(f) " + e.getMessage());
+        }
+        try {
+            zone.setEndRule(0, -1, 0, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setEndRule +savings");
+        } catch(IllegalArgumentException e) {
+            logln("(g) " + e.getMessage());
+        }
+        try {
+            zone.setEndRule(0, -1, 0);
+            errln("Failed. No exception has been thrown for DOM -1 setEndRule");
+        } catch(IllegalArgumentException e) {
+            logln("(h) " + e.getMessage());
+        }
+        
+    }
+
+    /**
+     * SimpleTimeZone.getOffset() throws IllegalArgumentException when to get
+     * of 2/29/1996 (leap day).
+     */
+    public void Test4208960 () {
+    TimeZone tz = TimeZone.getTimeZone("PST");
+    try {
+        /*int offset =*/ tz.getOffset(GregorianCalendar.AD, 1996, Calendar.FEBRUARY, 29,
+                      Calendar.THURSDAY, 0);
+        //offset = 0;
+    } catch (IllegalArgumentException e) {
+        errln("FAILED: to get TimeZone.getOffset(2/29/96)");
+    }
+    try {
+        /*int offset =*/ tz.getOffset(GregorianCalendar.AD, 1997, Calendar.FEBRUARY, 29,
+                      Calendar.THURSDAY, 0);
+        //offset = 0;
+        warnln("FAILED: TimeZone.getOffset(2/29/97) expected to throw Exception.");
+    } catch (IllegalArgumentException e) {
+        logln("got IllegalArgumentException");
+    }
+    }
+
+    /**
+     * Test to see if DateFormat understands zone equivalency groups.  It
+     * might seem that this should be a DateFormat test, but it's really a
+     * TimeZone test -- the changes to DateFormat are minor.
+     *
+     * We use two known, zones that are equivalent, where one zone has
+     * localized name data, and the other doesn't, in some locale.
+     */
+    public void TestJ449() {
+        // not used String str;
+
+        // Modify the following three as necessary.  The two IDs must
+        // specify two zones in the same equivalency group.  One must have
+        // locale data in 'loc'; the other must not.
+        String idWithLocaleData = "America/Los_Angeles";
+        String idWithoutLocaleData = "PST"; // "US/Pacific";
+        Locale loc = new Locale("en", "", "");
+
+        TimeZone zoneWith = TimeZone.getTimeZone(idWithLocaleData);
+        TimeZone zoneWithout = TimeZone.getTimeZone(idWithoutLocaleData);
+        // Make sure we got valid zones
+        if (!(zoneWith.getID().equals(idWithLocaleData) &&
+              zoneWithout.getID().equals(idWithoutLocaleData))) {
+            warnln("Fail: Unable to create zones");
+        } else {
+            GregorianCalendar calWith = new GregorianCalendar(zoneWith);
+            GregorianCalendar calWithout = new GregorianCalendar(zoneWithout);
+            SimpleDateFormat fmt =
+                new SimpleDateFormat("MMM d yyyy hh:mm a zzz", loc);
+            Date date = new Date(0L);
+            fmt.setCalendar(calWith);
+            String strWith = fmt.format(date);
+            fmt.setCalendar(calWithout);
+            String strWithout = fmt.format(date);
+            if (strWith.equals(strWithout)) {
+                logln("Ok: " + idWithLocaleData + " -> " +
+                      strWith + "; " + idWithoutLocaleData + " -> " +
+                      strWithout);
+            } else {
+                errln("FAIL: " + idWithLocaleData + " -> " +
+                      strWith + "; " + idWithoutLocaleData + " -> " +
+                      strWithout);
+            }
+        }
+    }
+
+    /**
+     * getOffset returns wrong offset for days in early 20th century
+     */
+    public void TestJ5134() {
+        GregorianCalendar testCal = (GregorianCalendar)Calendar.getInstance();
+        TimeZone icuEastern = TimeZone.getTimeZone("America/New_York");        
+        testCal.setTimeZone(icuEastern);
+        testCal.set(1900, Calendar.JANUARY, 1, 0, 0, 0);
+        long time = testCal.getTimeInMillis();
+
+        int offset = icuEastern.getOffset(time);
+        if (offset != -18000000) {
+            errln("FAIL: UTC offset in time zone America/New_York on Jan 1, 1900 -> " + offset);
+        }
+        boolean isDst = icuEastern.inDaylightTime(new Date(time));
+        if (isDst) {
+            errln("FAIL: DST is observed in time zone America/New_York on Jan 1, 1900");
+        }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        if (System.getProperty("java.vendor", "").startsWith("IBM") &&
+            System.getProperty("java.version", "").equals("1.4.1")) {
+            // IBM JDK 1.4.1 has a bug and fails to run this test case.
+            return;
+        }
+        java.util.TimeZone jdkEastern = java.util.TimeZone.getTimeZone("America/New_York");
+        // Compare offset and DST observation with JDK and ICU for 50 years since 1900
+        testCal.add(Calendar.YEAR, 50);
+        long endTime = testCal.getTimeInMillis();
+        int jdkOffset;
+        boolean isDstJdk;
+        while (time < endTime) {
+            offset = icuEastern.getOffset(time);
+            jdkOffset = jdkEastern.getOffset(time);
+            if (offset != jdkOffset) {
+                errln("FAIL: Incompatible UTC offset -> JDK:" + jdkOffset + "/ICU:" + offset + " [" + time + "]");
+            }
+            Date d = new Date(time);
+            isDst = icuEastern.inDaylightTime(d);
+            isDstJdk = jdkEastern.inDaylightTime(d);
+            if (isDst != isDstJdk) {
+                errln("FAIL: Incompatible DST -> JDK:" + isDstJdk + "/ICU:" + isDst + " [" + time + "]");
+            }
+            time += 24*60*60*1000L; // increment 1 day
+        }
+//#endif
+    }
+
+    /**
+     * Test setRawOffset works OK with system timezone
+     */
+    public void TestT5280() {
+        String[] tzids = TimeZone.getAvailableIDs();
+        for (int i = 0; i < tzids.length; i++) {
+            TimeZone tz = TimeZone.getTimeZone(tzids[i]);
+            boolean useDst = tz.useDaylightTime();
+
+            // Increase offset for 30 minutes
+            int newRawOffset = tz.getRawOffset() + 30*60*1000;
+            try {
+                tz.setRawOffset(newRawOffset);
+            } catch (Exception e) {
+                errln("FAIL: setRawOffset throws an exception");
+            }
+            int offset = tz.getRawOffset();
+            if (offset != newRawOffset) {
+                errln("FAIL: Modified zone(" + tz.getID() + ") - getRawOffset returns " + offset + "/ Expected: " + newRawOffset);
+            }
+            // Ticket#5917
+            // Check if DST observation status is not unexpectedly changed to true.
+            // When original Olson time zone observes DST, setRawOffset may change DST observation
+            // status for some zones.  For example, Asia/Jerusalem, which currently use no DST after
+            // 2037 in tzdata 2007g.  But, the opposite change (false -> true) should never happen.
+            if (!useDst) {
+                if (tz.useDaylightTime()) {
+                    errln("FAIL: Modified zone(" + tz.getID() + ") - useDaylightTime has changed from false to true.");
+                }
+            }
+            // Make sure the offset is preserved in a clone
+            TimeZone tzClone = (TimeZone)tz.clone();
+            offset = tzClone.getRawOffset();
+            if (offset != newRawOffset) {
+                errln("FAIL: Cloned modified zone(" + tz.getID() + ") - getRawOffset returns " + offset + "/ Expected: " + newRawOffset);
+            }
+        }
+    }
+
+    /*
+     * Zone ID is not set by a SimpleTimeZone constructor
+     */
+    public void TestT5432() {
+        String tzid = "MyZone";
+        SimpleTimeZone stz;
+
+        // 2-arg constructor
+        stz = new SimpleTimeZone(0, tzid);
+        if (!tzid.equals(stz.getID())) {
+            errln("FAIL: Bad zone id (" + stz.getID() + ") is returned - expected ("
+                    + tzid + ") [2-arg constructor]");
+        }
+
+        // 10-arg constructor
+        stz = new SimpleTimeZone(0, tzid, 3, -1, 1, 3600000, 9, -1, 1, 3600000);
+        if (!tzid.equals(stz.getID())) {
+            errln("FAIL: Bad zone id (" + stz.getID() + ") is returned - expected ("
+                    + tzid + ") [10-arg constructor]");
+        }
+
+        // 11-arg constructor
+        stz = new SimpleTimeZone(0, tzid, 3, -1, 1, 3600000, 9, -1, 1, 3600000, 3600000);
+        if (!tzid.equals(stz.getID())) {
+            errln("FAIL: Bad zone id (" + stz.getID() + ") is returned - expected ("
+                    + tzid + ") [11-arg constructor]");
+        }
+
+        // 13-arg constructor - this version had a problem reported by trac#5432
+        stz = new SimpleTimeZone(0, tzid, 3, -1, 1, 3600000, SimpleTimeZone.WALL_TIME,
+                9, -1, 1, 3600000, SimpleTimeZone.WALL_TIME, 3600000);
+        if (!tzid.equals(stz.getID())) {
+            errln("FAIL: Bad zone id (" + stz.getID() + ") is returned - expected ("
+                    + tzid + ") [13-arg constructor]");
+        }
+    }
+    
+    // test bug #4265
+    public void TestJohannesburg() {
+        String j_id="Africa/Johannesburg";
+        TimeZone johannesburg = TimeZone.getTimeZone(j_id);
+        final int ONE_HOUR = 60*60*1000;
+        int expectedOffset = ONE_HOUR*2;  // GMT+2 - NO DST
+        int offset = johannesburg.getOffset(GregorianCalendar.AD,2007,Calendar.JULY,5,Calendar.THURSDAY,0);        
+        
+        if(offset != expectedOffset) {
+            errln("FAIL: zone " + j_id +" returned offset in July " + offset +", expected "+expectedOffset);
+        } else {
+            logln("OK: zone " + j_id +" returned offset in July: " + offset);
+        }
+
+        int offset2 = johannesburg.getOffset(GregorianCalendar.AD,2007,Calendar.DECEMBER,12,Calendar.WEDNESDAY,0);
+
+        if(offset2 != expectedOffset) {
+            errln("FAIL: zone " + j_id +" returned offset in December " + offset2 +", expected "+expectedOffset);
+        } else {
+            logln("OK: zone " + j_id +" returned offset in December: " + offset2);
+        }
+
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
new file mode 100644
index 0000000..02a7f8e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
@@ -0,0 +1,1656 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.timezone;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Date;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.AnnualTimeZoneRule;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateTimeRule;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.InitialTimeZoneRule;
+import com.ibm.icu.util.RuleBasedTimeZone;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeArrayTimeZoneRule;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneRule;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VTimeZone;
+
+/**
+ * Test cases for TimeZoneRule and RuleBasedTimeZone
+ */
+public class TimeZoneRuleTest extends TestFmwk {
+
+    private static final int HOUR = 60 * 60 * 1000;
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneRuleTest().run(args);
+    }
+
+    /*
+     * RuleBasedTimeZone test cases
+     */
+    public void TestSimpleRuleBasedTimeZone() {
+        SimpleTimeZone stz = new SimpleTimeZone(-1*HOUR, "TestSTZ",
+                Calendar.SEPTEMBER, -30, -Calendar.SATURDAY, 1*HOUR, SimpleTimeZone.WALL_TIME,
+                Calendar.FEBRUARY, 2, Calendar.SUNDAY, 1*HOUR, SimpleTimeZone.WALL_TIME,
+                1*HOUR);
+
+
+        DateTimeRule dtr;
+        AnnualTimeZoneRule atzr;
+        final int STARTYEAR = 2000;
+
+        InitialTimeZoneRule ir = new InitialTimeZoneRule(
+                "RBTZ_Initial", // Initial time Name
+                -1*HOUR,        // Raw offset
+                1*HOUR);        // DST saving amount
+        
+        // RBTZ
+        RuleBasedTimeZone rbtz1 = new RuleBasedTimeZone("RBTZ1", ir);
+        dtr = new DateTimeRule(Calendar.SEPTEMBER, 30, Calendar.SATURDAY, false,
+                1*HOUR, DateTimeRule.WALL_TIME); // SUN<=30 in September, at 1AM wall time
+        atzr = new AnnualTimeZoneRule("RBTZ_DST1",
+                -1*HOUR /* rawOffset */, 1*HOUR /* dstSavings */, dtr,
+                STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz1.addTransitionRule(atzr);
+        dtr = new DateTimeRule(Calendar.FEBRUARY, 2, Calendar.SUNDAY,
+                1*HOUR, DateTimeRule.WALL_TIME); // 2nd Sunday in February, at 1AM wall time
+        atzr = new AnnualTimeZoneRule("RBTZ_STD1",
+                -1*HOUR /* rawOffset */, 0 /* dstSavings */, dtr,
+                STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz1.addTransitionRule(atzr);
+
+        // Equivalent, but different date rule type
+        RuleBasedTimeZone rbtz2 = new RuleBasedTimeZone("RBTZ2", ir);
+        dtr = new DateTimeRule(Calendar.SEPTEMBER, -1, Calendar.SATURDAY,
+                1*HOUR, DateTimeRule.WALL_TIME); // Last Sunday in September at 1AM wall time
+        atzr = new AnnualTimeZoneRule("RBTZ_DST2", -1*HOUR, 1*HOUR, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz2.addTransitionRule(atzr);
+        dtr = new DateTimeRule(Calendar.FEBRUARY, 8, Calendar.SUNDAY, true,
+                1*HOUR, DateTimeRule.WALL_TIME); // SUN>=8 in February, at 1AM wall time
+        atzr = new AnnualTimeZoneRule("RBTZ_STD2", -1*HOUR, 0, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz2.addTransitionRule(atzr);
+
+        // Equivalent, but different time rule type
+        RuleBasedTimeZone rbtz3 = new RuleBasedTimeZone("RBTZ3", ir);
+        dtr = new DateTimeRule(Calendar.SEPTEMBER, 30, Calendar.SATURDAY, false,
+                2*HOUR, DateTimeRule.UTC_TIME);
+        atzr = new AnnualTimeZoneRule("RBTZ_DST3", -1*HOUR, 1*HOUR, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz3.addTransitionRule(atzr);
+        dtr = new DateTimeRule(Calendar.FEBRUARY, 2, Calendar.SUNDAY,
+                0*HOUR, DateTimeRule.STANDARD_TIME);
+        atzr = new AnnualTimeZoneRule("RBTZ_STD3", -1*HOUR, 0, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz3.addTransitionRule(atzr);
+
+        // Check equivalency for 10 years
+        long start = getUTCMillis(STARTYEAR, Calendar.JANUARY, 1);
+        long until = getUTCMillis(STARTYEAR + 10, Calendar.JANUARY, 1);
+
+        if (!(stz.hasEquivalentTransitions(rbtz1, start, until))) {
+            errln("FAIL: rbtz1 must be equivalent to the SimpleTimeZone in the time range.");
+        }
+        if (!(stz.hasEquivalentTransitions(rbtz2, start, until))) {
+            errln("FAIL: rbtz2 must be equivalent to the SimpleTimeZone in the time range.");
+        }
+        if (!(stz.hasEquivalentTransitions(rbtz3, start, until))) {
+            errln("FAIL: rbtz3 must be equivalent to the SimpleTimeZone in the time range.");
+        }
+
+        // hasSameRules
+        if (rbtz1.hasSameRules(rbtz2)) {
+            errln("FAIL: rbtz1 and rbtz2 have different rules, but returned true.");
+        }
+        if (rbtz1.hasSameRules(rbtz3)) {
+            errln("FAIL: rbtz1 and rbtz3 have different rules, but returned true.");
+        }
+        RuleBasedTimeZone rbtz1c = (RuleBasedTimeZone)rbtz1.clone();
+        if (!rbtz1.hasSameRules(rbtz1c)) {
+            errln("FAIL: Cloned RuleBasedTimeZone must have the same rules with the original.");
+        }
+
+        // getOffset
+        GregorianCalendar cal = new GregorianCalendar();
+        int[] offsets = new int[2];
+        int offset;
+        boolean dst;
+
+        cal.setTimeZone(rbtz1);
+        cal.clear();
+
+        // Jan 1, 1000 BC
+        cal.set(Calendar.ERA, GregorianCalendar.BC);
+        cal.set(1000, Calendar.JANUARY, 1);
+
+        offset = rbtz1.getOffset(cal.get(Calendar.ERA), cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
+                cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_WEEK), cal.get(Calendar.MILLISECONDS_IN_DAY));
+        if (offset != 0) {
+            errln("FAIL: Invalid time zone offset: " + offset + " /expected: 0");
+        }
+        dst = rbtz1.inDaylightTime(cal.getTime());
+        if (!dst) {
+            errln("FAIL: Invalid daylight saving time");
+        }
+        rbtz1.getOffset(cal.getTimeInMillis(), true, offsets);
+        if (offsets[0] != -3600000) {
+            errln("FAIL: Invalid time zone raw offset: " + offsets[0] + " /expected: -3600000");
+        }
+        if (offsets[1] != 3600000) {            
+            errln("FAIL: Invalid DST amount: " + offsets[1] + " /expected: 3600000");
+        }
+
+        // July 1, 2000, AD
+        cal.set(Calendar.ERA, GregorianCalendar.AD);
+        cal.set(2000, Calendar.JULY, 1);
+
+        offset = rbtz1.getOffset(cal.get(Calendar.ERA), cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),
+                cal.get(Calendar.DAY_OF_MONTH), cal.get(Calendar.DAY_OF_WEEK), cal.get(Calendar.MILLISECONDS_IN_DAY));
+        if (offset != -3600000) {
+            errln("FAIL: Invalid time zone offset: " + offset + " /expected: -3600000");
+        }
+        dst = rbtz1.inDaylightTime(cal.getTime());
+        if (dst) {
+            errln("FAIL: Invalid daylight saving time");
+        }
+        rbtz1.getOffset(cal.getTimeInMillis(), true, offsets);
+        if (offsets[0] != -3600000) {
+            errln("FAIL: Invalid time zone raw offset: " + offsets[0] + " /expected: -3600000");
+        }
+        if (offsets[1] != 0) {            
+            errln("FAIL: Invalid DST amount: " + offsets[1] + " /expected: 0");
+        }
+
+        // July 1, 2000, AD
+
+        // Try to add 3rd final rule
+        dtr = new DateTimeRule(Calendar.OCTOBER, 15, 1*HOUR, DateTimeRule.WALL_TIME);
+        atzr = new AnnualTimeZoneRule("3RD_ATZ", -1*HOUR, 2*HOUR, dtr, STARTYEAR, AnnualTimeZoneRule.MAX_YEAR);
+        boolean bException = false;
+        try {
+            rbtz1.addTransitionRule(atzr);
+        } catch (IllegalStateException ise) {
+            bException = true;
+        }
+        if (!bException) {
+            errln("FAIL: 3rd final rule must be rejected");
+        }
+
+        // Try to add an initial rule
+        bException = false;
+        try {
+            rbtz1.addTransitionRule(new InitialTimeZoneRule("Test Initial", 2*HOUR, 0));
+        } catch (IllegalArgumentException iae) {
+            bException = true;
+        }
+        if (!bException) {
+            errln("FAIL: InitialTimeZoneRule must be rejected");
+        }
+    }
+
+    /*
+     * Test equivalency between OlsonTimeZone and custom RBTZ representing the
+     * equivalent rules in a certain time range
+     */
+    public void TestHistoricalRuleBasedTimeZone() {
+        // Compare to America/New_York with equivalent RBTZ
+        TimeZone ny = TimeZone.getTimeZone("America/New_York", TimeZone.TIMEZONE_ICU);
+
+        //RBTZ
+        InitialTimeZoneRule ir = new InitialTimeZoneRule("EST", -5*HOUR, 0);
+        RuleBasedTimeZone rbtz = new RuleBasedTimeZone("EST5EDT", ir);
+
+        DateTimeRule dtr;
+        AnnualTimeZoneRule tzr;
+
+        // Standard time
+        dtr = new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME);    // Last Sunday in October, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EST", -5*HOUR /* rawOffset */, 0 /* dstSavings */, dtr, 1967, 2006);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY,
+                true, 2*HOUR, DateTimeRule.WALL_TIME);  // SUN>=1 in November, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EST", -5*HOUR, 0, dtr, 2007, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz.addTransitionRule(tzr);
+
+        // Daylight saving time
+        dtr = new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME);    // Last Sunday in April, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1967, 1973);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.JANUARY, 6,
+                2*HOUR, DateTimeRule.WALL_TIME);    // January 6, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1974, 1974);
+        rbtz.addTransitionRule(tzr);
+        
+        dtr = new DateTimeRule(Calendar.FEBRUARY, 23,
+                2*HOUR, DateTimeRule.WALL_TIME);    // February 23, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1975, 1975);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.APRIL, -1, Calendar.SUNDAY,
+                2*HOUR, DateTimeRule.WALL_TIME);    // Last Sunday in April, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1976, 1986);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.APRIL, 1, Calendar.SUNDAY,
+                true, 2*HOUR, DateTimeRule.WALL_TIME);  // SUN>=1 in April, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 1987, 2006);
+        rbtz.addTransitionRule(tzr);
+
+        dtr = new DateTimeRule(Calendar.MARCH, 8, Calendar.SUNDAY,
+                true, 2*HOUR, DateTimeRule.WALL_TIME);  // SUN>=8 in March, at 2AM wall time
+        tzr = new AnnualTimeZoneRule("EDT", -5*HOUR, 1*HOUR, dtr, 2007, AnnualTimeZoneRule.MAX_YEAR);
+        rbtz.addTransitionRule(tzr);
+
+        // hasEquivalentTransitions
+        long jan1_1950 = getUTCMillis(1950, Calendar.JANUARY, 1);
+        long jan1_1967 = getUTCMillis(1971, Calendar.JANUARY, 1);
+        long jan1_2010 = getUTCMillis(2010, Calendar.JANUARY, 1);        
+
+        if (!(((BasicTimeZone)ny).hasEquivalentTransitions(rbtz, jan1_1967, jan1_2010))) {
+            errln("FAIL: The RBTZ must be equivalent to America/New_York between 1967 and 2010");
+        }
+        if (((BasicTimeZone)ny).hasEquivalentTransitions(rbtz, jan1_1950, jan1_2010)) {
+            errln("FAIL: The RBTZ must not be equivalent to America/New_York between 1950 and 2010");
+        }
+
+        // Same with above, but calling RBTZ#hasEquivalentTransitions against OlsonTimeZone
+        if (!rbtz.hasEquivalentTransitions(ny, jan1_1967, jan1_2010)) {
+            errln("FAIL: The RBTZ must be equivalent to America/New_York between 1967 and 2010");
+        }
+        if (rbtz.hasEquivalentTransitions(ny, jan1_1950, jan1_2010)) {
+            errln("FAIL: The RBTZ must not be equivalent to America/New_York between 1950 and 2010");
+        }
+
+        // TimeZone APIs
+        if (ny.hasSameRules(rbtz) || rbtz.hasSameRules(ny)) {
+            errln("FAIL: hasSameRules must return false");
+        }
+        RuleBasedTimeZone rbtzc = (RuleBasedTimeZone)rbtz.clone();
+        if (!rbtz.hasSameRules(rbtzc) || !rbtz.hasEquivalentTransitions(rbtzc, jan1_1950, jan1_2010)) {
+            errln("FAIL: hasSameRules/hasEquivalentTransitions must return true for cloned RBTZs");
+        }
+
+        long times[] = {
+           getUTCMillis(2006, Calendar.MARCH, 15),
+           getUTCMillis(2006, Calendar.NOVEMBER, 1),
+           getUTCMillis(2007, Calendar.MARCH, 15),
+           getUTCMillis(2007, Calendar.NOVEMBER, 1),
+           getUTCMillis(2008, Calendar.MARCH, 15),
+           getUTCMillis(2008, Calendar.NOVEMBER, 1)
+        };
+        int[] offsets1 = new int[2];
+        int[] offsets2 = new int[2];
+
+        for (int i = 0; i < times.length; i++) {
+            // Check getOffset - must return the same results for these time data
+            rbtz.getOffset(times[i], false, offsets1);
+            ny.getOffset(times[i], false, offsets2);
+            if (offsets1[0] != offsets2[0] || offsets1[1] != offsets2[1]) {
+                errln("FAIL: Incompatible time zone offsets for ny and rbtz");
+            }
+            // Check inDaylightTime
+            Date d = new Date(times[i]);
+            if (rbtz.inDaylightTime(d) != ny.inDaylightTime(d)) {
+                errln("FAIL: Incompatible daylight saving time for ny and rbtz");
+            }
+        }
+    }
+
+    /*
+     * Check if transitions returned by getNextTransition/getPreviousTransition
+     * are actual time transitions.
+     */
+    public void TestOlsonTransition() {
+        String[] zids = getTestZIDs();
+        for (int i = 0; i < zids.length; i++) {
+            TimeZone tz = TimeZone.getTimeZone(zids[i], TimeZone.TIMEZONE_ICU);
+            if (tz == null) {
+                break;
+            }
+            int j = 0;
+            while (true) {
+                long[] timerange = getTestTimeRange(j++);
+                if (timerange == null) {
+                    break;
+                }
+                verifyTransitions(tz, timerange[0], timerange[1]);
+            }
+        }
+    }
+
+    /*
+     * Check if an OlsonTimeZone and its equivalent RBTZ have the exact same
+     * transitions.
+     */
+    public void TestRBTZTransition() {
+        int[] STARTYEARS = {
+            1950,
+            1975,
+            2000,
+            2010
+        };
+
+        String[] zids = getTestZIDs();
+        for (int i = 0; i < zids.length; i++) {
+            TimeZone tz = TimeZone.getTimeZone(zids[i], TimeZone.TIMEZONE_ICU);
+            if (tz == null) {
+                break;
+            }
+            for (int j = 0; j < STARTYEARS.length; j++) {
+                long startTime = getUTCMillis(STARTYEARS[j], Calendar.JANUARY, 1);
+                TimeZoneRule[] rules = ((BasicTimeZone)tz).getTimeZoneRules(startTime);
+                RuleBasedTimeZone rbtz = new RuleBasedTimeZone(tz.getID() + "(RBTZ)",
+                        (InitialTimeZoneRule)rules[0]);
+                for (int k = 1; k < rules.length; k++) {
+                    rbtz.addTransitionRule(rules[k]);
+                }
+
+                // Compare the original OlsonTimeZone with the RBTZ starting the startTime for 20 years
+                long until = getUTCMillis(STARTYEARS[j] + 20, Calendar.JANUARY, 1);
+
+                // Ascending
+                compareTransitionsAscending(tz, rbtz, startTime, until, false);
+                // Ascending/inclusive
+                compareTransitionsAscending(tz, rbtz, startTime + 1, until, true);
+                // Descending
+                compareTransitionsDescending(tz, rbtz, startTime, until, false);
+                // Descending/inclusive
+                compareTransitionsDescending(tz, rbtz, startTime + 1, until, true);
+            }
+            
+        }
+    }
+
+    /*
+     * Test cases for HasTimeZoneRules#hasEquivalentTransitions
+     */
+    public void TestHasEquivalentTransitions() {
+        // America/New_York and America/Indiana/Indianapolis are equivalent
+        // since 2006
+        TimeZone newyork = TimeZone.getTimeZone("America/New_York", TimeZone.TIMEZONE_ICU);
+        TimeZone indianapolis = TimeZone.getTimeZone("America/Indiana/Indianapolis", TimeZone.TIMEZONE_ICU);
+        TimeZone gmt_5 = TimeZone.getTimeZone("Etc/GMT+5", TimeZone.TIMEZONE_ICU);
+
+        long jan1_1971 = getUTCMillis(1971, Calendar.JANUARY, 1);
+        long jan1_2005 = getUTCMillis(2005, Calendar.JANUARY, 1);
+        long jan1_2006 = getUTCMillis(2006, Calendar.JANUARY, 1);
+        long jan1_2007 = getUTCMillis(2007, Calendar.JANUARY, 1);
+        long jan1_2011 = getUTCMillis(2010, Calendar.JANUARY, 1);
+        
+        if (((BasicTimeZone)newyork).hasEquivalentTransitions(indianapolis, jan1_2005, jan1_2011)) {
+            errln("FAIL: New_York is not equivalent to Indianapolis between 2005 and 2010, but returned true");
+        }
+        if (!((BasicTimeZone)newyork).hasEquivalentTransitions(indianapolis, jan1_2006, jan1_2011)) {
+            errln("FAIL: New_York is equivalent to Indianapolis between 2006 and 2010, but returned false");
+        }
+
+        if (!((BasicTimeZone)indianapolis).hasEquivalentTransitions(gmt_5, jan1_1971, jan1_2006)) {
+            errln("FAIL: Indianapolis is equivalent to GMT+5 between 1971 and 2005, but returned false");
+        }
+        if (((BasicTimeZone)indianapolis).hasEquivalentTransitions(gmt_5, jan1_1971, jan1_2007)) {
+            errln("FAIL: Indianapolis is not equivalent to GMT+5 between 1971 and 2006, but returned true");
+        }
+
+        // Cloned TimeZone
+        TimeZone newyork2 = (TimeZone)newyork.clone();
+        if (!((BasicTimeZone)newyork).hasEquivalentTransitions(newyork2, jan1_1971, jan1_2011)) {
+            errln("FAIL: Cloned TimeZone must have the same transitions");
+        }
+        if (!((BasicTimeZone)newyork).hasEquivalentTransitions(newyork2, jan1_1971, jan1_2011, true /*ignoreDstAmount*/)) {
+            errln("FAIL: Cloned TimeZone must have the same transitions");
+        }
+
+        // America/New_York and America/Los_Angeles has same DST start rules, but
+        // raw offsets are different
+        TimeZone losangeles = TimeZone.getTimeZone("America/Los_Angeles", TimeZone.TIMEZONE_ICU);
+        if (((BasicTimeZone)newyork).hasEquivalentTransitions(losangeles, jan1_2006, jan1_2011)) {
+            errln("FAIL: New_York is not equivalent to Los Angeles, but returned true");
+        }
+    }
+
+    /*
+     * Write out time zone rules of OlsonTimeZone into VTIMEZONE format, create a new
+     * VTimeZone from the VTIMEZONE data, then compare transitions
+     */
+    public void TestVTimeZoneRoundTrip() {
+        long startTime = getUTCMillis(1850, Calendar.JANUARY, 1);
+        long endTime = getUTCMillis(2050, Calendar.JANUARY, 1);
+
+        String[] tzids = getTestZIDs();
+        for (int i = 0; i < tzids.length; i++) {
+            BasicTimeZone olsontz = (BasicTimeZone)TimeZone.getTimeZone(tzids[i], TimeZone.TIMEZONE_ICU);
+            VTimeZone vtz_org = VTimeZone.create(tzids[i]);
+            vtz_org.setTZURL("http://source.icu-project.org/timezone");
+            vtz_org.setLastModified(new Date());
+            VTimeZone vtz_new = null;
+            try {
+                // Write out VTIMEZONE
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                OutputStreamWriter writer = new OutputStreamWriter(baos);
+                vtz_org.write(writer);
+                writer.close();
+                byte[] vtzdata = baos.toByteArray();
+                // Read VTIMEZONE
+                ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+                InputStreamReader reader = new InputStreamReader(bais);
+                vtz_new = VTimeZone.create(reader);
+                reader.close();
+
+                // Write out VTIMEZONE one more time
+                ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+                OutputStreamWriter writer1 = new OutputStreamWriter(baos1);
+                vtz_new.write(writer1);
+                writer1.close();
+                byte[] vtzdata1 = baos1.toByteArray();
+
+                // Make sure VTIMEZONE data is exactly same with the first one
+                if (vtzdata.length != vtzdata1.length) {
+                    errln("FAIL: different VTIMEZONE data length");
+                }
+                for (int j = 0; j < vtzdata.length; j++) {
+                    if (vtzdata[j] != vtzdata1[j]) {
+                        errln("FAIL: different VTIMEZONE data");
+                        break;
+                    }
+                }
+            } catch (IOException ioe) {
+                errln("FAIL: IO error while writing/reading VTIMEZONE data");
+            }
+            // Check equivalency after the first transition.
+            // The DST information before the first transition might be lost
+            // because there is no good way to represent the initial time with
+            // VTIMEZONE.
+            if (vtz_new.getOffset(startTime) != olsontz.getOffset(startTime)) {
+                errln("FAIL: VTimeZone for " + tzids[i]
+                         + " is not equivalent to its OlsonTimeZone corresponding at " + startTime);
+            }
+            TimeZoneTransition tzt = olsontz.getNextTransition(startTime, false);
+            if (tzt != null) {
+                if (!vtz_new.hasEquivalentTransitions(olsontz, tzt.getTime(), endTime, true)) {
+                    errln("FAIL: VTimeZone for " + tzids[i] + " is not equivalent to its OlsonTimeZone corresponding.");
+                }
+                if (!vtz_new.hasEquivalentTransitions(olsontz, tzt.getTime(), endTime, false)) {
+                    logln("VTimeZone for " + tzids[i] + " is not equivalent to its OlsonTimeZone corresponding in strict comparison mode.");
+                }
+            }
+        }
+    }
+
+    /*
+     * Write out time zone rules of OlsonTimeZone after a cutoff date into VTIMEZONE format,
+     * create a new VTimeZone from the VTIMEZONE data, then compare transitions
+     */
+    public void TestVTimeZoneRoundTripPartial() {
+        long[] startTimes = new long[] {
+            getUTCMillis(1900, Calendar.JANUARY, 1),
+            getUTCMillis(1950, Calendar.JANUARY, 1),
+            getUTCMillis(2020, Calendar.JANUARY, 1)
+        };
+        long endTime = getUTCMillis(2050, Calendar.JANUARY, 1);
+
+        String[] tzids = getTestZIDs();
+        for (int n = 0; n < startTimes.length; n++) {
+            long startTime = startTimes[n];
+            for (int i = 0; i < tzids.length; i++) {
+                BasicTimeZone olsontz = (BasicTimeZone)TimeZone.getTimeZone(tzids[i], TimeZone.TIMEZONE_ICU);
+                VTimeZone vtz_org = VTimeZone.create(tzids[i]);
+                VTimeZone vtz_new = null;
+                try {
+                    // Write out VTIMEZONE
+                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                    OutputStreamWriter writer = new OutputStreamWriter(baos);
+                    vtz_org.write(writer, startTime);
+                    writer.close();
+                    byte[] vtzdata = baos.toByteArray();
+                    // Read VTIMEZONE
+                    ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+                    InputStreamReader reader = new InputStreamReader(bais);
+                    vtz_new = VTimeZone.create(reader);
+                    reader.close();
+
+                } catch (IOException ioe) {
+                    errln("FAIL: IO error while writing/reading VTIMEZONE data");
+                }
+                // Check equivalency after the first transition.
+                // The DST information before the first transition might be lost
+                // because there is no good way to represent the initial time with
+                // VTIMEZONE.
+                if (vtz_new.getOffset(startTime) != olsontz.getOffset(startTime)) {
+                    errln("FAIL: VTimeZone for " + tzids[i]
+                             + " is not equivalent to its OlsonTimeZone corresponding at " + startTime);
+                }
+                TimeZoneTransition tzt = olsontz.getNextTransition(startTime, false);
+                if (tzt != null) {
+                    if (!vtz_new.hasEquivalentTransitions(olsontz, tzt.getTime(), endTime, true)) {
+                        errln("FAIL: VTimeZone for " + tzids[i] + "(>=" + startTime + ") is not equivalent to its OlsonTimeZone corresponding.");
+                    }
+                }
+            }            
+        }
+    }
+
+    /*
+     * Write out simple time zone rules from an OlsonTimeZone at various time into VTIMEZONE
+     * format and create a new VTimeZone from the VTIMEZONE data, then make sure the raw offset
+     * and DST savings are same in these two time zones.
+     */
+    public void TestVTimeZoneSimpleWrite() {
+        long[] testTimes = new long[] {
+                getUTCMillis(2006, Calendar.JANUARY, 1),
+                getUTCMillis(2006, Calendar.MARCH, 15),
+                getUTCMillis(2006, Calendar.MARCH, 31),
+                getUTCMillis(2006, Calendar.APRIL, 5),
+                getUTCMillis(2006, Calendar.OCTOBER, 25),
+                getUTCMillis(2006, Calendar.NOVEMBER, 1),
+                getUTCMillis(2006, Calendar.NOVEMBER, 5),
+                getUTCMillis(2007, Calendar.JANUARY, 1)
+        };
+
+        String[] tzids = getTestZIDs();
+        for (int n = 0; n < testTimes.length; n++) {
+            long time = testTimes[n];
+
+            int[] offsets1 = new int[2];
+            int[] offsets2 = new int[2];
+
+            for (int i = 0; i < tzids.length; i++) {
+                VTimeZone vtz_org = VTimeZone.create(tzids[i]);
+                VTimeZone vtz_new = null;
+                try {
+                    // Write out VTIMEZONE
+                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                    OutputStreamWriter writer = new OutputStreamWriter(baos);
+                    vtz_org.writeSimple(writer, time);
+                    writer.close();
+                    byte[] vtzdata = baos.toByteArray();
+                    // Read VTIMEZONE
+                    ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+                    InputStreamReader reader = new InputStreamReader(bais);
+                    vtz_new = VTimeZone.create(reader);
+                    reader.close();
+                } catch (IOException ioe) {
+                    errln("FAIL: IO error while writing/reading VTIMEZONE data");
+                }
+
+                // Check equivalency
+                vtz_org.getOffset(time, false, offsets1);
+                vtz_new.getOffset(time, false, offsets2);
+                if (offsets1[0] != offsets2[0] || offsets1[1] != offsets2[1]) {
+                    errln("FAIL: VTimeZone writeSimple for " + tzids[i] + " at time " + time + " failed to the round trip.");
+                }
+            }
+        }
+    }
+
+    /*
+     * Write out time zone rules of OlsonTimeZone into VTIMEZONE format with RFC2445 header TZURL and
+     * LAST-MODIFIED, create a new VTimeZone from the VTIMEZONE data to see if the headers are preserved.
+     */
+    public void TestVTimeZoneHeaderProps() {
+        String tzid = "America/Chicago";
+        String tzurl = "http://source.icu-project.org";
+        Date lastmod = new Date(getUTCMillis(2007, Calendar.JUNE, 1));
+
+        VTimeZone vtz = VTimeZone.create(tzid);
+        vtz.setTZURL(tzurl);
+        vtz.setLastModified(lastmod);
+
+        // Roundtrip conversion
+        VTimeZone newvtz1 = null;
+        try {
+            // Write out VTIMEZONE
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            OutputStreamWriter writer = new OutputStreamWriter(baos);
+            vtz.write(writer);
+            writer.close();
+            byte[] vtzdata = baos.toByteArray();
+            // Read VTIMEZONE
+            ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+            InputStreamReader reader = new InputStreamReader(bais);
+            newvtz1 = VTimeZone.create(reader);
+            reader.close();
+
+            // Check if TZURL and LAST-MODIFIED headers are preserved
+            if (!(tzurl.equals(newvtz1.getTZURL()))) {
+                errln("FAIL: TZURL property is not preserved during the roundtrip conversion.  Before:"
+                        + tzurl + "/After:" + newvtz1.getTZURL());
+            }
+            if (!(lastmod.equals(newvtz1.getLastModified()))) {
+                errln("FAIL: LAST-MODIFIED property is not preserved during the roundtrip conversion.  Before:"
+                        + lastmod.getTime() + "/After:" + newvtz1.getLastModified().getTime());
+            }
+        } catch (IOException ioe) {
+            errln("FAIL: IO error while writing/reading VTIMEZONE data");
+        }
+
+        // Second roundtrip, with a cutoff
+        VTimeZone newvtz2 = null;
+        try {
+            // Set different tzurl
+            String newtzurl = "http://www.ibm.com";
+            newvtz1.setTZURL(newtzurl);
+            // Write out VTIMEZONE
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            OutputStreamWriter writer = new OutputStreamWriter(baos);
+            newvtz1.write(writer, getUTCMillis(2000, Calendar.JANUARY, 1));
+            writer.close();
+            byte[] vtzdata = baos.toByteArray();
+            // Read VTIMEZONE
+            ByteArrayInputStream bais = new ByteArrayInputStream(vtzdata);
+            InputStreamReader reader = new InputStreamReader(bais);
+            newvtz2 = VTimeZone.create(reader);
+            reader.close();
+
+            // Check if TZURL and LAST-MODIFIED headers are preserved
+            if (!(newtzurl.equals(newvtz2.getTZURL()))) {
+                errln("FAIL: TZURL property is not preserved during the second roundtrip conversion.  Before:"
+                        + newtzurl + "/After:" + newvtz2.getTZURL());
+            }
+            if (!(lastmod.equals(newvtz2.getLastModified()))) {
+                errln("FAIL: LAST-MODIFIED property is not preserved during the second roundtrip conversion.  Before:"
+                        + lastmod.getTime() + "/After:" + newvtz2.getLastModified().getTime());
+            }
+        } catch (IOException ioe) {
+            errln("FAIL: IO error while writing/reading VTIMEZONE data");
+        }
+        
+    }
+
+    /*
+     * Extract simple rules from an OlsonTimeZone and make sure the rule format matches
+     * the expected format.
+     */
+    public void TestGetSimpleRules() {
+        long[] testTimes = new long[] {
+                getUTCMillis(1970, Calendar.JANUARY, 1),
+                getUTCMillis(2000, Calendar.MARCH, 31),
+                getUTCMillis(2005, Calendar.JULY, 1),
+                getUTCMillis(2010, Calendar.NOVEMBER, 1),
+            };
+
+        String[] tzids = getTestZIDs();
+        for (int n = 0; n < testTimes.length; n++) {
+            long time = testTimes[n];
+            for (int i = 0; i < tzids.length; i++) {
+                BasicTimeZone tz = (BasicTimeZone)TimeZone.getTimeZone(tzids[i], TimeZone.TIMEZONE_ICU);
+                TimeZoneRule[] rules = tz.getSimpleTimeZoneRulesNear(time);
+                if (rules == null) {
+                    errln("FAIL: Failed to extract simple rules for " + tzids[i] + " at " + time);
+                } else {
+                    if (rules.length == 1) {
+                        if (!(rules[0] instanceof InitialTimeZoneRule)) {
+                            errln("FAIL: Unexpected rule object type is returned for " + tzids[i] + " at " + time);
+                        }
+                    } else if (rules.length == 3) {
+                        if (!(rules[0] instanceof InitialTimeZoneRule)
+                                || !(rules[1] instanceof AnnualTimeZoneRule)
+                                || !(rules[2] instanceof AnnualTimeZoneRule)) {
+                            errln("FAIL: Unexpected rule object type is returned for " + tzids[i] + " at " + time);
+                        }
+                        for (int idx = 1; idx <= 2; idx++) {
+                            DateTimeRule dtr = ((AnnualTimeZoneRule)rules[idx]).getRule();
+                            if (dtr.getTimeRuleType() != DateTimeRule.WALL_TIME) {
+                                errln("FAIL: WALL_TIME is not used as the time rule in the time zone rule(" + idx + ") for " + tzids[i] + " at " + time);
+                            }
+                            if (dtr.getDateRuleType() != DateTimeRule.DOW) {
+                                errln("FAIL: DOW is not used as the date rule in the time zone rule(" + idx + ") for " + tzids[i] + " at " + time);
+                            }
+                        }
+                    } else {
+                        errln("FAIL: Unexpected number of rules returned for " + tzids[i] + " at " + time);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * API coverage tests for TimeZoneRule 
+     */
+    public void TestTimeZoneRuleCoverage() {
+        long time1 = getUTCMillis(2005, Calendar.JULY, 4);
+        long time2 = getUTCMillis(2015, Calendar.JULY, 4);
+        long time3 = getUTCMillis(1950, Calendar.JULY, 4);
+
+        DateTimeRule dtr1 = new DateTimeRule(Calendar.FEBRUARY, 29, Calendar.SUNDAY, false,
+                3*HOUR, DateTimeRule.WALL_TIME); // Last Sunday on or before Feb 29, at 3 AM, wall time
+        DateTimeRule dtr2 = new DateTimeRule(Calendar.MARCH, 11, 2*HOUR,
+                DateTimeRule.STANDARD_TIME); // Mar 11, at 2 AM, standard time
+        DateTimeRule dtr3 = new DateTimeRule(Calendar.OCTOBER, -1, Calendar.SATURDAY,
+                6*HOUR, DateTimeRule.UTC_TIME); //Last Saturday in Oct, at 6 AM, UTC
+        DateTimeRule dtr4 = new DateTimeRule(Calendar.MARCH, 8, Calendar.SUNDAY, true,
+                2*HOUR, DateTimeRule.WALL_TIME); // First Sunday on or after Mar 8, at 2 AM, wall time
+
+        AnnualTimeZoneRule a1 = new AnnualTimeZoneRule("a1", -3*HOUR, 1*HOUR, dtr1,
+                2000, AnnualTimeZoneRule.MAX_YEAR);
+        AnnualTimeZoneRule a2 = new AnnualTimeZoneRule("a2", -3*HOUR, 1*HOUR, dtr1,
+                2000, AnnualTimeZoneRule.MAX_YEAR);
+        AnnualTimeZoneRule a3 = new AnnualTimeZoneRule("a3", -3*HOUR, 1*HOUR, dtr1,
+                2000, 2010);
+        
+        InitialTimeZoneRule i1 = new InitialTimeZoneRule("i1", -3*HOUR, 0);
+        InitialTimeZoneRule i2 = new InitialTimeZoneRule("i2", -3*HOUR, 0);
+        InitialTimeZoneRule i3 = new InitialTimeZoneRule("i3", -3*HOUR, 1*HOUR);
+        
+        long[] emptytimes = {};
+        long[] trtimes1 = {0};
+        long[] trtimes2 = {0, 10000000};
+
+        TimeArrayTimeZoneRule t0 = null;
+        try {
+            // Try to construct TimeArrayTimeZoneRule with null transition times
+            t0 = new TimeArrayTimeZoneRule("nulltimes", -3*HOUR, 0,
+                    null, DateTimeRule.UTC_TIME);
+        } catch (IllegalArgumentException iae) {
+            logln("TimeArrayTimeZoneRule constructor throws IllegalArgumentException as expected.");
+            t0 = null;
+        }
+        if (t0 != null) {
+            errln("FAIL: TimeArrayTimeZoneRule constructor did not throw IllegalArgumentException for null times");
+        }
+        
+        try {
+            // Try to construct TimeArrayTimeZoneRule with empty transition times
+            t0 = new TimeArrayTimeZoneRule("nulltimes", -3*HOUR, 0,
+                    emptytimes, DateTimeRule.UTC_TIME);
+        } catch (IllegalArgumentException iae) {
+            logln("TimeArrayTimeZoneRule constructor throws IllegalArgumentException as expected.");
+            t0 = null;
+        }
+        if (t0 != null) {
+            errln("FAIL: TimeArrayTimeZoneRule constructor did not throw IllegalArgumentException for empty times");
+        }
+
+        TimeArrayTimeZoneRule t1 = new TimeArrayTimeZoneRule("t1", -3*HOUR, 0, trtimes1, DateTimeRule.UTC_TIME);
+        TimeArrayTimeZoneRule t2 = new TimeArrayTimeZoneRule("t2", -3*HOUR, 0, trtimes1, DateTimeRule.UTC_TIME);
+        TimeArrayTimeZoneRule t3 = new TimeArrayTimeZoneRule("t3", -3*HOUR, 0, trtimes2, DateTimeRule.UTC_TIME);
+        TimeArrayTimeZoneRule t4 = new TimeArrayTimeZoneRule("t4", -3*HOUR, 0, trtimes1, DateTimeRule.STANDARD_TIME);
+        TimeArrayTimeZoneRule t5 = new TimeArrayTimeZoneRule("t5", -4*HOUR, 1*HOUR, trtimes1, DateTimeRule.WALL_TIME);
+
+        // AnnualTimeZoneRule#getRule
+        if (!a1.getRule().equals(a2.getRule())) {
+            errln("FAIL: The same DateTimeRule must be returned from AnnualTimeZoneRule a1 and a2");
+        }
+    
+        // AnnualTimeZoneRule#getStartYear
+        int startYear = a1.getStartYear();
+        if (startYear != 2000) {
+            errln("FAIL: The start year of AnnualTimeZoneRule a1 must be 2000 - returned: " + startYear);
+        }
+
+        // AnnualTimeZoneRule#getEndYear
+        int endYear = a1.getEndYear();
+        if (endYear != AnnualTimeZoneRule.MAX_YEAR) {
+            errln("FAIL: The start year of AnnualTimeZoneRule a1 must be MAX_YEAR - returned: " + endYear);
+        }
+        endYear = a3.getEndYear();
+        if (endYear != 2010) {
+            errln("FAIL: The start year of AnnualTimeZoneRule a3 must be 2010 - returned: " + endYear);
+        }
+        
+        // AnnualTimeZone#getStartInYear
+        Date d1 = a1.getStartInYear(2005, -3*HOUR, 0);
+        Date d2 = a3.getStartInYear(2005, -3*HOUR, 0);
+        if (d1 == null || d2 == null || !d1.equals(d2)) {
+            errln("FAIL: AnnualTimeZoneRule#getStartInYear did not work as expected");
+        }
+        d2 = a3.getStartInYear(2015, -3*HOUR, 0);
+        if (d2 != null) {
+            errln("FAIL: AnnualTimeZoneRule#getSTartInYear returned non-null date for 2015 which is out of rule range");
+        }
+
+        // AnnualTimeZone#getFirstStart
+        d1 = a1.getFirstStart(-3*HOUR, 0);
+        d2 = a1.getFirstStart(-4*HOUR, 1*HOUR);
+        if (d1 == null || d2 == null || !d1.equals(d2)) {
+            errln("FAIL: The same start time should be returned by getFirstStart");
+        }
+
+        // AnnualTimeZone#getFinalStart
+        d1 = a1.getFinalStart(-3*HOUR, 0);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by getFinalStart for a1");
+        }
+        d1 = a1.getStartInYear(2010, -3*HOUR, 0);
+        d2 = a3.getFinalStart(-3*HOUR, 0);
+        if (d1 == null || d2 == null || !d1.equals(d2)) {
+            errln("FAIL: Bad date is returned by getFinalStart");
+        }
+
+        // AnnualTimeZone#getNextStart / getPreviousStart
+        d1 = a1.getNextStart(time1, -3*HOUR, 0, false);
+        if (d1 == null) {
+            errln("FAIL: Null Date is returned by getNextStart");
+        } else {
+            d2 = a1.getPreviousStart(d1.getTime(), -3*HOUR, 0, true);
+            if (d2 == null || !d1.equals(d2)) {
+                errln("FAIL: Bad Date is returned by getPreviousStart");
+            }
+        }
+        d1 = a3.getNextStart(time2, -3*HOUR, 0, false);
+        if (d1 != null) {
+            errln("FAIL: getNextStart must return null when no start time is available after the base time");
+        }
+        d1 = a3.getFinalStart(-3*HOUR, 0);
+        d2 = a3.getPreviousStart(time2, -3*HOUR, 0, false);
+        if (d1 == null || d2 == null || !d1.equals(d2)) {
+            errln("FAIL: getPreviousStart does not match with getFinalStart after the end year");
+        }
+
+        // AnnualTimeZone#isEquavalentTo
+        if (!a1.isEquivalentTo(a2)) {
+            errln("FAIL: AnnualTimeZoneRule a1 is equivalent to a2, but returned false");
+        }
+        if (a1.isEquivalentTo(a3)) {
+            errln("FAIL: AnnualTimeZoneRule a1 is not equivalent to a3, but returned true");
+        }
+        if (!a1.isEquivalentTo(a1)) {
+            errln("FAIL: AnnualTimeZoneRule a1 is equivalent to itself, but returned false");
+        }
+        if (a1.isEquivalentTo(t1)) {
+            errln("FAIL: AnnualTimeZoneRule is not equivalent to TimeArrayTimeZoneRule, but returned true");
+        }
+
+        // AnnualTimeZone#isTransitionRule
+        if (!a1.isTransitionRule()) {
+            errln("FAIL: An AnnualTimeZoneRule is a transition rule, but returned false");
+        }
+
+        // AnnualTimeZone#toString
+        String str = a1.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: AnnualTimeZoneRule#toString for a1 returns null or empty string");
+        } else {
+            logln("AnnualTimeZoneRule a1 : " + str);
+        }
+        str = a3.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: AnnualTimeZoneRule#toString for a3 returns null or empty string");
+        } else {
+            logln("AnnualTimeZoneRule a3 : " + str);
+        }
+
+        // InitialTimeZoneRule#isEquivalentRule
+        if (!i1.isEquivalentTo(i2)) {
+            errln("FAIL: InitialTimeZoneRule i1 is equivalent to i2, but returned false");
+        }
+        if (i1.isEquivalentTo(i3)) {
+            errln("FAIL: InitialTimeZoneRule i1 is not equivalent to i3, but returned true");
+        }
+        if (i1.isEquivalentTo(a1)) {
+            errln("FAIL: An InitialTimeZoneRule is not equivalent to an AnnualTimeZoneRule, but returned true");
+        }
+
+        // InitialTimeZoneRule#getFirstStart/getFinalStart/getNextStart/getPreviousStart
+        d1 = i1.getFirstStart(0, 0);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by InitialTimeZone#getFirstStart");
+        }
+        d1 = i1.getFinalStart(0, 0);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by InitialTimeZone#getFinalStart");
+        }
+        d1 = i1.getNextStart(time1, 0, 0, false);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by InitialTimeZone#getNextStart");
+        }
+        d1 = i1.getPreviousStart(time1, 0, 0, false);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by InitialTimeZone#getPreviousStart");
+        }
+
+        // InitialTimeZoneRule#isTransitionRule
+        if (i1.isTransitionRule()) {
+            errln("FAIL: An InitialTimeZoneRule is not a transition rule, but returned true");
+        }
+
+        // InitialTimeZoneRule#toString
+        str = i1.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: InitialTimeZoneRule#toString returns null or empty string");
+        } else {
+            logln("InitialTimeZoneRule i1 : " + str);
+        }
+        
+        
+        // TimeArrayTimeZoneRule#getStartTimes
+        long[] times = t1.getStartTimes();
+        if (times == null || times.length == 0 || times[0] != 0) {
+            errln("FAIL: Bad start times are returned by TimeArrayTimeZoneRule#getStartTimes");
+        }
+
+        // TimeArrayTimeZoneRule#getTimeType
+        if (t1.getTimeType() != DateTimeRule.UTC_TIME) {
+            errln("FAIL: TimeArrayTimeZoneRule t1 uses UTC_TIME, but different type is returned");
+        }
+        if (t4.getTimeType() != DateTimeRule.STANDARD_TIME) {
+            errln("FAIL: TimeArrayTimeZoneRule t4 uses STANDARD_TIME, but different type is returned");
+        }
+        if (t5.getTimeType() != DateTimeRule.WALL_TIME) {
+            errln("FAIL: TimeArrayTimeZoneRule t5 uses WALL_TIME, but different type is returned");
+        }
+
+        // TimeArrayTimeZoneRule#getFirstStart/getFinalStart
+        d1 = t1.getFirstStart(0, 0);
+        if (d1 == null || d1.getTime() != trtimes1[0]) {
+            errln("FAIL: Bad first start time returned from TimeArrayTimeZoneRule t1");
+        }
+        d1 = t1.getFinalStart(0, 0);
+        if (d1 == null || d1.getTime() != trtimes1[0]) {
+            errln("FAIL: Bad final start time returned from TimeArrayTimeZoneRule t1");
+        }
+        d1 = t4.getFirstStart(-4*HOUR, 1*HOUR);
+        if (d1 == null || (d1.getTime() != trtimes1[0] + 4*HOUR)) {
+            errln("FAIL: Bad first start time returned from TimeArrayTimeZoneRule t4");
+        }
+        d1 = t5.getFirstStart(-4*HOUR, 1*HOUR);
+        if (d1 == null || (d1.getTime() != trtimes1[0] + 3*HOUR)) {
+            errln("FAIL: Bad first start time returned from TimeArrayTimeZoneRule t5");
+        }
+
+        // TimeArrayTimeZoneRule#getNextStart/getPreviousStart
+        d1 = t3.getNextStart(time1, -3*HOUR, 1*HOUR, false);
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by getNextStart after the final transition for t3");
+        }
+        d1 = t3.getPreviousStart(time1, -3*HOUR, 1*HOUR, false);
+        if (d1 == null || d1.getTime() != trtimes2[1]) {
+            errln("FAIL: Bad start time returned by getPreviousStart for t3");
+        } else {
+            d2 = t3.getPreviousStart(d1.getTime(), -3*HOUR, 1*HOUR, false);
+            if (d2 == null || d2.getTime() != trtimes2[0]) {
+                errln("FAIL: Bad start time returned by getPreviousStart for t3");
+            }
+        }
+        d1 = t3.getPreviousStart(time3, -3*HOUR, 1*HOUR, false); //time3 - year 1950, no result expected
+        if (d1 != null) {
+            errln("FAIL: Non-null Date is returned by getPrevoousStart for t3");
+        }
+
+        // TimeArrayTimeZoneRule#isEquivalentTo
+        if (!t1.isEquivalentTo(t2)) {
+            errln("FAIL: TimeArrayTimeZoneRule t1 is equivalent to t2, but returned false");
+        }
+        if (t1.isEquivalentTo(t3)) {
+            errln("FAIL: TimeArrayTimeZoneRule t1 is not equivalent to t3, but returned true");
+        }
+        if (t1.isEquivalentTo(t4)) {
+            errln("FAIL: TimeArrayTimeZoneRule t1 is not equivalent to t4, but returned true");
+        }
+        if (t1.isEquivalentTo(a1)) {
+            errln("FAIL: TimeArrayTimeZoneRule is not equivalent to AnnualTimeZoneRule, but returned true");
+        }
+
+        // TimeArrayTimeZoneRule#isTransitionRule
+        if (!t1.isTransitionRule()) {
+            errln("FAIL: A TimeArrayTimeZoneRule is a transition rule, but returned false");
+        }
+
+        // TimeArrayTimeZoneRule#toString
+        str = t3.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: TimeArrayTimeZoneRule#toString returns null or empty string");
+        } else {
+            logln("TimeArrayTimeZoneRule t3 : " + str);
+        }
+
+        // DateTimeRule#toString
+        str = dtr1.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: DateTimeRule#toString for dtr1 returns null or empty string");
+        } else {
+            logln("DateTimeRule dtr1 : " + str);
+        }
+        str = dtr2.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: DateTimeRule#toString for dtr2 returns null or empty string");
+        } else {
+            logln("DateTimeRule dtr1 : " + str);
+        }
+        str = dtr3.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: DateTimeRule#toString for dtr3 returns null or empty string");
+        } else {
+            logln("DateTimeRule dtr1 : " + str);
+        }
+        str = dtr4.toString();
+        if (str == null || str.length() == 0) {
+            errln("FAIL: DateTimeRule#toString for dtr4 returns null or empty string");
+        } else {
+            logln("DateTimeRule dtr1 : " + str);
+        }
+    }
+
+    /*
+     * API coverage test for BasicTimeZone APIs in SimpleTimeZone
+     */
+    public void TestSimpleTimeZoneCoverage() {
+
+        long time1 = getUTCMillis(1990, Calendar.JUNE, 1);
+        long time2 = getUTCMillis(2000, Calendar.JUNE, 1);
+
+        TimeZoneTransition tzt1, tzt2;
+
+        // BasicTimeZone API implementation in SimpleTimeZone
+        SimpleTimeZone stz1 = new SimpleTimeZone(-5*HOUR, "GMT-5");
+
+        tzt1 = stz1.getNextTransition(time1, false);
+        if (tzt1 != null) {
+            errln("FAIL: No transition must be returned by getNextTranstion for SimpleTimeZone with no DST rule");
+        }
+        tzt1 = stz1.getPreviousTransition(time1, false);
+        if (tzt1 != null) {
+            errln("FAIL: No transition must be returned by getPreviousTransition  for SimpleTimeZone with no DST rule");
+        }
+        TimeZoneRule[] tzrules = stz1.getTimeZoneRules();
+        if (tzrules.length != 1 || !(tzrules[0] instanceof InitialTimeZoneRule)) {
+            errln("FAIL: Invalid results returned by SimpleTimeZone#getTimeZoneRules");
+        }
+
+        // Set DST rule
+        stz1.setStartRule(Calendar.MARCH, 11, 2*HOUR); // March 11
+        stz1.setEndRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2*HOUR); // First Sunday in November
+        tzt1 = stz1.getNextTransition(time1, false);
+        if (tzt1 == null) {
+            errln("FAIL: Non-null transition must be returned by getNextTranstion for SimpleTimeZone with a DST rule");
+        } else {
+            String str = tzt1.toString();
+            if (str == null || str.length() == 0) {
+                errln("FAIL: TimeZoneTransition#toString returns null or empty string");
+            } else {
+                logln(str);
+            }
+        }
+        tzt1 = stz1.getPreviousTransition(time1, false);
+        if (tzt1 == null) {
+            errln("FAIL: Non-null transition must be returned by getPreviousTransition  for SimpleTimeZone with a DST rule");
+        }
+        tzrules = stz1.getTimeZoneRules();
+        if (tzrules.length != 3 || !(tzrules[0] instanceof InitialTimeZoneRule)
+                || !(tzrules[1] instanceof AnnualTimeZoneRule)
+                || !(tzrules[2] instanceof AnnualTimeZoneRule)) {
+            errln("FAIL: Invalid results returned by SimpleTimeZone#getTimeZoneRules for a SimpleTimeZone with DST");
+        }
+        // Set DST start year
+        stz1.setStartYear(2007);
+        tzt1 = stz1.getPreviousTransition(time1, false);
+        if (tzt1 != null) {
+            errln("FAIL: No transition must be returned before 1990");
+        }
+        tzt1 = stz1.getNextTransition(time1, false); // transition after 1990-06-01
+        tzt2 = stz1.getNextTransition(time2, false); // transition after 2000-06-01
+        if (tzt1 == null || tzt2 == null || !tzt1.equals(tzt2)) {
+            errln("FAIL: Bad transition returned by SimpleTimeZone#getNextTransition");
+        }
+    }
+    
+    /*
+     * API coverage test for VTimeZone
+     */
+    public void TestVTimeZoneCoverage() {
+        final String TZID = "Europe/Moscow";
+        BasicTimeZone otz = (BasicTimeZone)TimeZone.getTimeZone(TZID, TimeZone.TIMEZONE_ICU);
+        VTimeZone vtz = VTimeZone.create(TZID);
+
+        // getOffset(era, year, month, day, dayOfWeek, milliseconds)
+        int offset1 = otz.getOffset(GregorianCalendar.AD, 2007, Calendar.JULY, 1, Calendar.SUNDAY, 0);
+        int offset2 = vtz.getOffset(GregorianCalendar.AD, 2007, Calendar.JULY, 1, Calendar.SUNDAY, 0);
+        if (offset1 != offset2) {
+            errln("FAIL: getOffset(int,int,int,int,int,int) returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // getOffset(date, local, offsets)
+        int[] offsets1 = new int[2];
+        int[] offsets2 = new int[2];
+        long t = System.currentTimeMillis();
+        otz.getOffset(t, false, offsets1);
+        vtz.getOffset(t, false, offsets2);
+        if (offsets1[0] != offsets2[0] || offsets1[1] != offsets2[1]) {
+            errln("FAIL: getOffset(long,boolean,int[]) returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // getRawOffset
+        if (otz.getRawOffset() != vtz.getRawOffset()) {
+            errln("FAIL: getRawOffset returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // inDaylightTime
+        Date d = new Date();
+        if (otz.inDaylightTime(d) != vtz.inDaylightTime(d)) {
+            errln("FAIL: inDaylightTime returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // useDaylightTime
+        if (otz.useDaylightTime() != vtz.useDaylightTime()) {
+            errln("FAIL: useDaylightTime returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // setRawOffset
+        final int RAW = -10*HOUR;
+        VTimeZone tmpvtz = (VTimeZone)vtz.clone();
+        tmpvtz.setRawOffset(RAW);
+        if (tmpvtz.getRawOffset() != RAW) {
+            logln("setRawOffset is implemented");
+        }
+
+        // hasSameRules
+        boolean bSame = otz.hasSameRules(vtz);
+        logln("OlsonTimeZone#hasSameRules(VTimeZone) should return false always for now - actual: " + bSame);
+
+        // getTZURL/setTZURL
+        final String TZURL = "http://icu-project.org/timezone";
+        String tzurl = vtz.getTZURL();
+        if (tzurl != null) {
+            errln("FAIL: getTZURL returned non-null value");
+        }
+        vtz.setTZURL(TZURL);
+        tzurl = vtz.getTZURL();
+        if (!TZURL.equals(tzurl)) {
+            errln("FAIL: URL returned by getTZURL does not match the one set by setTZURL");
+        }
+
+        // getLastModified/setLastModified
+        Date lastmod = vtz.getLastModified();
+        if (lastmod != null) {
+            errln("FAIL: getLastModified returned non-null value");
+        }
+        Date newdate = new Date();
+        vtz.setLastModified(newdate);
+        lastmod = vtz.getLastModified();
+        if (!newdate.equals(lastmod)) {
+            errln("FAIL: Date returned by getLastModified does not match the one set by setLastModified");
+        }
+
+        // getNextTransition/getPreviousTransition
+        long base = getUTCMillis(2007, Calendar.JULY, 1);
+        TimeZoneTransition tzt1 = otz.getNextTransition(base, true);
+        TimeZoneTransition tzt2 = vtz.getNextTransition(base, true);
+        if (tzt1.equals(tzt2)) {
+            errln("FAIL: getNextTransition returned different results in VTimeZone and OlsonTimeZone");
+        }
+        tzt1 = otz.getPreviousTransition(base, false);
+        tzt2 = vtz.getPreviousTransition(base, false);
+        if (tzt1.equals(tzt2)) {
+            errln("FAIL: getPreviousTransition returned different results in VTimeZone and OlsonTimeZone");
+        }
+
+        // hasEquivalentTransitions
+        long time1 = getUTCMillis(1950, Calendar.JANUARY, 1);
+        long time2 = getUTCMillis(2020, Calendar.JANUARY, 1);
+        if (!vtz.hasEquivalentTransitions(otz, time1, time2)) {
+            errln("FAIL: hasEquivalentTransitons returned false for the same time zone");
+        }
+
+        // getTimeZoneRules
+        TimeZoneRule[] rulesetAll = vtz.getTimeZoneRules();
+        TimeZoneRule[] ruleset1 = vtz.getTimeZoneRules(time1);
+        TimeZoneRule[] ruleset2 = vtz.getTimeZoneRules(time2);
+        if (rulesetAll.length < ruleset1.length || ruleset1.length < ruleset2.length) {
+            errln("FAIL: Number of rules returned by getRules is invalid");
+        }
+    }
+
+    public void TestVTimeZoneParse() {
+        // Trying to create VTimeZone from empty data
+        StringReader r = new StringReader("");
+        VTimeZone empty = VTimeZone.create(r);
+        if (empty != null) {
+            errln("FAIL: Non-null VTimeZone is returned for empty VTIMEZONE data");
+        }
+
+        // Create VTimeZone for Asia/Tokyo
+        String asiaTokyo =
+                "BEGIN:VTIMEZONE\r\n" +
+                "TZID:Asia\r\n" +
+                "\t/Tokyo\r\n" +
+                "BEGIN:STANDARD\r\n" +
+                "TZOFFSETFROM:+0900\r\n" +
+                "TZOFFSETTO:+0900\r\n" +
+                "TZNAME:JST\r\n" +
+                "DTSTART:19700101\r\n" +
+                " T000000\r\n" +
+                "END:STANDARD\r\n" +
+                "END:VTIMEZONE";
+        r = new StringReader(asiaTokyo);
+        VTimeZone tokyo = VTimeZone.create(r);
+        if (tokyo == null) {
+            errln("FAIL: Failed to create a VTimeZone tokyo");
+        } else {
+            // Make sure offsets are correct
+            int[] offsets = new int[2];
+            tokyo.getOffset(System.currentTimeMillis(), false, offsets);
+            if (offsets[0] != 9*HOUR || offsets[1] != 0) {
+                errln("FAIL: Bad offsets returned by a VTimeZone created for Tokyo");
+            }
+        }        
+
+        // Create VTimeZone from VTIMEZONE data
+        String fooData = 
+            "BEGIN:VCALENDAR\r\n" +
+            "BEGIN:VTIMEZONE\r\n" +
+            "TZID:FOO\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "TZOFFSETFROM:-0700\r\n" +
+            "TZOFFSETTO:-0800\r\n" +
+            "TZNAME:FST\r\n" +
+            "DTSTART:20071010T010000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=WE;BYMONTHDAY=10,11,12,13,14,15,16;BYMONTH=10\r\n" +
+            "END:STANDARD\r\n" +
+            "BEGIN:DAYLIGHT\r\n" +
+            "TZOFFSETFROM:-0800\r\n" +
+            "TZOFFSETTO:-0700\r\n" +
+            "TZNAME:FDT\r\n" +
+            "DTSTART:20070415T010000\r\n" +
+            "RRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=4\r\n" +
+            "END:DAYLIGHT\r\n" +
+            "END:VTIMEZONE\r\n" +
+            "END:VCALENDAR";
+
+        r = new StringReader(fooData);
+        VTimeZone foo = VTimeZone.create(r);
+        if (foo == null) {
+            errln("FAIL: Failed to create a VTimeZone foo");
+        } else {
+            // Write VTIMEZONE data
+            StringWriter w = new StringWriter();
+            try {
+                foo.write(w, getUTCMillis(2005, Calendar.JANUARY, 1));
+            } catch (IOException ioe) {
+                errln("FAIL: IOException is thrown while writing VTIMEZONE data for foo");
+            }
+            logln(w.toString());
+        }
+    }
+
+    public void TestT6216() {
+        // Test case in #6216
+        String tokyoTZ =
+            "BEGIN:VCALENDAR\r\n" +
+            "VERSION:2.0\r\n" +
+            "PRODID:-//PYVOBJECT//NONSGML Version 1//EN\r\n" +
+            "BEGIN:VTIMEZONE\r\n" +
+            "TZID:Asia/Tokyo\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "DTSTART:20000101T000000\r\n" +
+            "RRULE:FREQ=YEARLY;BYMONTH=1\r\n" +
+            "TZNAME:Asia/Tokyo\r\n" +
+            "TZOFFSETFROM:+0900\r\n" +
+            "TZOFFSETTO:+0900\r\n" +
+            "END:STANDARD\r\n" +
+            "END:VTIMEZONE\r\n" +
+            "END:VCALENDAR";
+
+        // Single final rule, overlapping with another
+        String finalOverlap =
+            "BEGIN:VCALENDAR\r\n" +
+            "BEGIN:VTIMEZONE\r\n" +
+            "TZID:FinalOverlap\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "TZOFFSETFROM:-0200\r\n" +
+            "TZOFFSETTO:-0300\r\n" +
+            "TZNAME:STD\r\n" +
+            "DTSTART:20001029T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\r\n" +
+            "END:STANDARD\r\n" +
+            "BEGIN:DAYLIGHT\r\n" +
+            "TZOFFSETFROM:-0300\r\n" +
+            "TZOFFSETTO:-0200\r\n" +
+            "TZNAME:DST\r\n" +
+            "DTSTART:19990404T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=20050403T040000Z\r\n" +
+            "END:DAYLIGHT\r\n" +
+            "END:VTIMEZONE\r\n" +
+            "END:VCALENDAR";
+
+        // Single final rule, no overlapping with another
+        String finalNonOverlap = 
+            "BEGIN:VCALENDAR\r\n" +
+            "BEGIN:VTIMEZONE\r\n" +
+            "TZID:FinalNonOverlap\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "TZOFFSETFROM:-0200\r\n" +
+            "TZOFFSETTO:-0300\r\n" +
+            "TZNAME:STD\r\n" +
+            "DTSTART:20001029T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;UNTIL=20041031T040000Z\r\n" +
+            "END:STANDARD\r\n" +
+            "BEGIN:DAYLIGHT\r\n" +
+            "TZOFFSETFROM:-0300\r\n" +
+            "TZOFFSETTO:-0200\r\n" +
+            "TZNAME:DST\r\n" +
+            "DTSTART:19990404T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=20050403T040000Z\r\n" +
+            "END:DAYLIGHT\r\n" +
+            "BEGIN:STANDARD\r\n" +
+            "TZOFFSETFROM:-0200\r\n" +
+            "TZOFFSETTO:-0300\r\n" +
+            "TZNAME:STDFINAL\r\n" +
+            "DTSTART:20071028T020000\r\n" +
+            "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\r\n" +
+            "END:STANDARD\r\n" +
+            "END:VTIMEZONE\r\n" +
+            "END:VCALENDAR";
+
+        int[][] TestDates = {
+                {1995, Calendar.JANUARY, 1},
+                {1995, Calendar.JULY, 1},
+                {2000, Calendar.JANUARY, 1},
+                {2000, Calendar.JULY, 1},
+                {2005, Calendar.JANUARY, 1},
+                {2005, Calendar.JULY, 1},
+                {2010, Calendar.JANUARY, 1},
+                {2010, Calendar.JULY, 1},
+        };
+
+        String[] TestZones = {
+            tokyoTZ,
+            finalOverlap,
+            finalNonOverlap,
+        };
+
+        int[][] Expected = {
+          //  JAN90      JUL90      JAN00      JUL00      JAN05      JUL05      JAN10      JUL10
+            { 32400000,  32400000,  32400000,  32400000,  32400000,  32400000,  32400000,  32400000},
+            {-10800000, -10800000,  -7200000,  -7200000, -10800000,  -7200000, -10800000, -10800000},
+            {-10800000, -10800000,  -7200000,  -7200000, -10800000,  -7200000, -10800000, -10800000},
+        };
+
+        // Get test times
+        long[] times = new long[TestDates.length];
+        Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("Etc/GMT"));
+        for (int i = 0; i < TestDates.length; i++) {
+            cal.clear();
+            cal.set(TestDates[i][0], TestDates[i][1], TestDates[i][2]);
+            times[i] = cal.getTimeInMillis();
+        }
+
+        for (int i = 0; i < TestZones.length; i++) {
+            try {
+                VTimeZone vtz = VTimeZone.create(new StringReader(TestZones[i]));
+                for (int j = 0; j < times.length; j++) {
+                    int offset = vtz.getOffset(times[j]);
+                    if (offset != Expected[i][j]) {
+                        errln("FAIL: Invalid offset at time(" + times[j] + "):" + offset + " Expected:" + Expected[i][j]);
+                    }
+                }
+            } catch (Exception e) {
+                errln("FAIL: Failed to calculate the offset for VTIMEZONE data " + i);
+            }
+        }
+    }
+
+    public void TestT6669() {
+        // getNext/PreviousTransition implementation in SimpleTimeZone
+        // used to use a bad condition for detecting if DST is enabled or not.
+
+        SimpleTimeZone stz = new SimpleTimeZone(0, "CustomID",
+                Calendar.JANUARY, 1, Calendar.SUNDAY, 0,
+                Calendar.JULY, 1, Calendar.SUNDAY, 0);
+
+        long t = 1230681600000L; //2008-12-31T00:00:00
+        long expectedNext = 1231027200000L; //2009-01-04T00:00:00
+        long expectedPrev = 1215298800000L; //2008-07-06T00:00:00
+
+        TimeZoneTransition tzt = stz.getNextTransition(t, false);
+        if (tzt == null) {
+            errln("FAIL: No transition returned by getNextTransition.");
+        } else if (tzt.getTime() != expectedNext){
+            errln("FAIL: Wrong transition time returned by getNextTransition - "
+                    + tzt.getTime() + " Expected: " + expectedNext);
+        }
+
+        tzt = stz.getPreviousTransition(t, true);
+        if (tzt == null) {
+            errln("FAIL: No transition returned by getPreviousTransition.");
+        } else if (tzt.getTime() != expectedPrev){
+            errln("FAIL: Wrong transition time returned by getPreviousTransition - "
+                    + tzt.getTime() + " Expected: " + expectedPrev);
+        }
+    }
+
+    // Internal utility methods -----------------------------------------
+
+    /*
+     * Check if a time shift really happens on each transition returned by getNextTransition or
+     * getPreviousTransition in the specified time range
+     */
+    private void verifyTransitions(TimeZone tz, long start, long end) {
+        BasicTimeZone icutz = (BasicTimeZone)tz;
+        long time;
+        int[] before = new int[2];
+        int[] after = new int[2];
+        TimeZoneTransition tzt0;
+
+        // Ascending
+        tzt0 = null;
+        time = start;
+        while(true) {
+            TimeZoneTransition tzt = icutz.getNextTransition(time, false);
+
+            if (tzt == null) {
+                break;
+            }
+            time = tzt.getTime();
+            if (time >= end) {
+                break;
+            }
+            icutz.getOffset(time, false, after);
+            icutz.getOffset(time - 1, false, before);
+
+            if (after[0] == before[0] && after[1] == before[1]) {
+                errln("FAIL: False transition returned by getNextTransition for " + icutz.getID() + " at " + time);
+            }
+            if (tzt0 != null &&
+                    (tzt0.getTo().getRawOffset() != tzt.getFrom().getRawOffset()
+                    || tzt0.getTo().getDSTSavings() != tzt.getFrom().getDSTSavings())) {
+                errln("FAIL: TO rule of the previous transition does not match FROM rule of this transtion at "
+                        + time + " for " + icutz.getID());                
+            }
+            tzt0 = tzt;
+        }
+
+        // Descending
+        tzt0 = null;
+        time = end;
+        while(true) {
+            TimeZoneTransition tzt = icutz.getPreviousTransition(time, false);
+            if (tzt == null) {
+                break;
+            }
+            time = tzt.getTime();
+            if (time <= start) {
+                break;
+            }
+            icutz.getOffset(time, false, after);
+            icutz.getOffset(time - 1, false, before);
+
+            if (after[0] == before[0] && after[1] == before[1]) {
+                errln("FAIL: False transition returned by getPreviousTransition for " + icutz.getID() + " at " + time);
+            }
+
+            if (tzt0 != null &&
+                    (tzt0.getFrom().getRawOffset() != tzt.getTo().getRawOffset()
+                    || tzt0.getFrom().getDSTSavings() != tzt.getTo().getDSTSavings())) {
+                errln("FAIL: TO rule of the next transition does not match FROM rule in this transtion at "
+                        + time + " for " + icutz.getID());                
+            }
+            tzt0 = tzt;
+        }
+    }
+
+    /*
+     * Compare all time transitions in 2 time zones in the specified time range in ascending order
+     */
+    private void compareTransitionsAscending(TimeZone tz1, TimeZone tz2, long start, long end, boolean inclusive) {
+        BasicTimeZone z1 = (BasicTimeZone)tz1;
+        BasicTimeZone z2 = (BasicTimeZone)tz2;
+        String zid1 = tz1.getID();
+        String zid2 = tz2.getID();
+
+        long time = start;
+        while(true) {
+            TimeZoneTransition tzt1 = z1.getNextTransition(time, inclusive);
+            TimeZoneTransition tzt2 = z2.getNextTransition(time, inclusive);
+            boolean inRange1 = false;
+            boolean inRange2 = false;
+            if (tzt1 != null) {
+                if (tzt1.getTime() < end || (inclusive && tzt1.getTime() == end)) {
+                    inRange1 = true;
+                }
+            }
+            if (tzt2 != null) {
+                if (tzt2.getTime() < end || (inclusive && tzt2.getTime() == end)) {
+                    inRange2 = true;
+                }
+            }
+            if (!inRange1 && !inRange2) {
+                // No more transition in the range
+                break;
+            }
+            if (!inRange1) {
+                errln("FAIL: " + zid1 + " does not have any transitions after " + time + " before " + end);
+                break;
+            }
+            if (!inRange2) {
+                errln("FAIL: " + zid2 + " does not have any transitions after " + time + " before " + end);
+                break;
+            }
+            if (tzt1.getTime() != tzt2.getTime()) {
+                errln("FAIL: First transition after " + time + " "
+                        + zid1 + "[" + tzt1.getTime() + "] "
+                        + zid2 + "[" + tzt2.getTime() + "]");
+                break;
+            }
+            time = tzt1.getTime();
+            if (inclusive) {
+                time++;
+            }
+        }
+    }
+
+    /*
+     * Compare all time transitions in 2 time zones in the specified time range in descending order
+     */
+    private void compareTransitionsDescending(TimeZone tz1, TimeZone tz2, long start, long end, boolean inclusive) {
+        BasicTimeZone z1 = (BasicTimeZone)tz1;
+        BasicTimeZone z2 = (BasicTimeZone)tz2;
+        String zid1 = tz1.getID();
+        String zid2 = tz2.getID();
+        long time = end;
+        while(true) {
+            TimeZoneTransition tzt1 = z1.getPreviousTransition(time, inclusive);
+            TimeZoneTransition tzt2 = z2.getPreviousTransition(time, inclusive);
+            boolean inRange1 = false;
+            boolean inRange2 = false;
+            if (tzt1 != null) {
+                if (tzt1.getTime() > start || (inclusive && tzt1.getTime() == start)) {
+                    inRange1 = true;
+                }
+            }
+            if (tzt2 != null) {
+                if (tzt2.getTime() > start || (inclusive && tzt2.getTime() == start)) {
+                    inRange2 = true;
+                }
+            }
+            if (!inRange1 && !inRange2) {
+                // No more transition in the range
+                break;
+            }
+            if (!inRange1) {
+                errln("FAIL: " + zid1 + " does not have any transitions before " + time + " after " + start);
+                break;
+            }
+            if (!inRange2) {
+                errln("FAIL: " + zid2 + " does not have any transitions before " + time + " after " + start);
+                break;
+            }
+            if (tzt1.getTime() != tzt2.getTime()) {
+                errln("FAIL: Last transition before " + time + " "
+                        + zid1 + "[" + tzt1.getTime() + "] "
+                        + zid2 + "[" + tzt2.getTime() + "]");
+                break;
+            }
+            time = tzt1.getTime();
+            if (inclusive) {
+                time--;
+            }
+        }
+    }
+
+    private static final String[] TESTZIDS = {
+        "AGT",
+        "America/New_York",
+        "America/Los_Angeles",
+        "America/Indiana/Indianapolis",
+        "America/Havana",
+        "Europe/Lisbon",
+        "Europe/Paris",
+        "Asia/Tokyo",
+        "Asia/Sakhalin",
+        "Africa/Cairo",
+        "Africa/Windhoek",
+        "Australia/Sydney",
+        "Etc/GMT+8"
+    };
+
+    private String[] getTestZIDs() {
+        if (getInclusion() > 5) {
+            return TimeZone.getAvailableIDs();
+        }
+        return TESTZIDS;
+    }
+
+    private static final int[][] TESTYEARS = {
+        {1895, 1905}, // including int32 minimum second
+        {1965, 1975}, // including the epoch
+        {1995, 2015}  // practical year range
+    };
+
+    private long[] getTestTimeRange(int idx) {
+        int loyear, hiyear;
+        if (idx < TESTYEARS.length) {
+            loyear = TESTYEARS[idx][0];
+            hiyear = TESTYEARS[idx][1];
+        } else if (idx == TESTYEARS.length && getInclusion() > 5) {
+            loyear = 1850;
+            hiyear = 2050;
+        } else {
+            return null;
+        }
+
+        long[] times = new long[2];
+        times[0] = getUTCMillis(loyear, Calendar.JANUARY, 1);
+        times[1] = getUTCMillis(hiyear + 1, Calendar.JANUARY, 1);
+
+        return times;
+    }
+
+    private GregorianCalendar utcCal;
+
+    private long getUTCMillis(int year, int month, int dayOfMonth) {
+        if (utcCal == null) {
+            utcCal = new GregorianCalendar(TimeZone.getTimeZone("UTC"), ULocale.ROOT);
+        }
+        utcCal.clear();
+        utcCal.set(year, month, dayOfMonth);
+        return utcCal.getTimeInMillis();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
new file mode 100644
index 0000000..fad0c59
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -0,0 +1,1587 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.timezone;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * @test 1.22 99/09/21
+ * @bug 4028006 4044013 4096694 4107276 4107570 4112869 4130885
+ * @summary test TimeZone
+ * @build TimeZoneTest
+ */
+public class TimeZoneTest extends TestFmwk
+{
+    static final int millisPerHour = 3600000;
+
+    public static void main(String[] args) throws Exception {
+        new TimeZoneTest().run(args);
+    }
+
+    /**
+     * NOTE: As of ICU 2.8, the mapping of 3-letter legacy aliases
+     * to `real' Olson IDs is under control of the underlying JDK.
+     * This test may fail on one JDK and pass on another; don't be
+     * too concerned.  Alan
+     *
+     * Bug 4130885
+     * Certain short zone IDs, used since 1.1.x, are incorrect.
+     *  
+     * The worst of these is:
+     *
+     * "CAT" (Central African Time) should be GMT+2:00, but instead returns a
+     * zone at GMT-1:00. The zone at GMT-1:00 should be called EGT, CVT, EGST,
+     * or AZOST, depending on which zone is meant, but in no case is it CAT.
+     *
+     * Other wrong zone IDs:
+     *
+     * ECT (European Central Time) GMT+1:00: ECT is Ecuador Time,
+     * GMT-5:00. European Central time is abbreviated CEST.
+     *
+     * SST (Solomon Island Time) GMT+11:00. SST is actually Samoa Standard Time,
+     * GMT-11:00. Solomon Island time is SBT.
+     *
+     * NST (New Zealand Time) GMT+12:00. NST is the abbreviation for
+     * Newfoundland Standard Time, GMT-3:30. New Zealanders use NZST.
+     *
+     * AST (Alaska Standard Time) GMT-9:00. [This has already been noted in
+     * another bug.] It should be "AKST". AST is Atlantic Standard Time,
+     * GMT-4:00.
+     *
+     * PNT (Phoenix Time) GMT-7:00. PNT usually means Pitcairn Time,
+     * GMT-8:30. There is no standard abbreviation for Phoenix time, as distinct
+     * from MST with daylight savings.
+     *
+     * In addition to these problems, a number of zones are FAKE. That is, they
+     * don't match what people use in the real world.
+     *
+     * FAKE zones:
+     *
+     * EET (should be EEST)
+     * ART (should be EEST)
+     * MET (should be IRST)
+     * NET (should be AMST)
+     * PLT (should be PKT)
+     * BST (should be BDT)
+     * VST (should be ICT)
+     * CTT (should be CST) +
+     * ACT (should be CST) +
+     * AET (should be EST) +
+     * MIT (should be WST) +
+     * IET (should be EST) +
+     * PRT (should be AST) +
+     * CNT (should be NST)
+     * AGT (should be ARST)
+     * BET (should be EST) +
+     *
+     * + A zone with the correct name already exists and means something
+     * else. E.g., EST usually indicates the US Eastern zone, so it cannot be
+     * used for Brazil (BET).
+     */
+    public void TestShortZoneIDs() throws Exception {
+
+        // TODO: This test case is tzdata sensitive.
+        // We should actually put the data version in this test code
+        // at build time.  For now, we just hardcode the version string
+        // and display warning instead of error if non-reference tzdata
+        // version is used.
+        final String REFERENCE_DATA_VERSION = "2008i";
+
+        boolean isNonReferenceTzdataVersion = false;
+        String tzdataVer = TimeZone.getTZDataVersion();
+        if (!tzdataVer.equals(REFERENCE_DATA_VERSION)) {
+            // Note: We want to display a warning message here if
+            // REFERENCE_DATA_VERSION is out of date - so we
+            // do not forget to update the value before GA.
+            isNonReferenceTzdataVersion = true;
+            logln("Warning: Active tzdata version (" + tzdataVer +
+                    ") does not match the reference tzdata version ("
+                    + REFERENCE_DATA_VERSION + ") for this test case data.");
+        }
+
+        // Note: If the default TimeZone type is JDK, some time zones
+        // may differ from the test data below.  For example, "MST" on
+        // IBM JRE is an alias of "America/Denver" for supporting Java 1.1
+        // backward compatibility, while Olson tzdata (and ICU) treat it
+        // as -7hour fixed offset/no DST.
+        boolean isJDKTimeZone = (TimeZone.getDefaultTimeZoneType() == TimeZone.TIMEZONE_JDK);
+        if (isJDKTimeZone) {
+            logln("Warning: Using JDK TimeZone.  Some test cases may not return expected results.");
+        }
+
+        // Note: useDaylightTime returns true if DST is observed
+        // in the time zone in the current calendar year.  The test
+        // data is valid for the date after the reference year below.
+        // If system clock is before the year, some test cases may
+        // fail.
+        final int REFERENCE_YEAR = 2009;
+        GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("Etc/GMT"));
+        cal.set(REFERENCE_YEAR, Calendar.JANUARY, 2); // day 2 in GMT
+
+        boolean isDateBeforeReferenceYear = System.currentTimeMillis() < cal.getTimeInMillis();
+        if (isDateBeforeReferenceYear) {
+            logln("Warning: Past time is set to the system clock.  Some test cases may not return expected results.");
+        }
+
+        ZoneDescriptor[] REFERENCE_LIST = {
+            new ZoneDescriptor("MIT", -660, false),
+            new ZoneDescriptor("HST", -600, false),
+            new ZoneDescriptor("AST", -540, true),
+            new ZoneDescriptor("PST", -480, true),
+            new ZoneDescriptor("PNT", -420, false),
+            new ZoneDescriptor("MST", -420, false),// updated Aug 2003 aliu
+            new ZoneDescriptor("CST", -360, true),
+            new ZoneDescriptor("IET", -300, true), // updated Feb 2006 srl
+            new ZoneDescriptor("EST", -300, false),// updated Aug 2003 aliu
+            new ZoneDescriptor("PRT", -240, false),
+            new ZoneDescriptor("CNT", -210, true),
+            new ZoneDescriptor("AGT", -180, true), // updated by tzdata 2007k
+            new ZoneDescriptor("BET", -180, true),
+            new ZoneDescriptor("GMT", 0, false),
+            new ZoneDescriptor("UTC", 0, false),
+            new ZoneDescriptor("ECT", 60, true),
+            new ZoneDescriptor("MET", 60, true),
+            new ZoneDescriptor("CAT", 120, false), // Africa/Harare
+            new ZoneDescriptor("ART", 120, true),
+            new ZoneDescriptor("EET", 120, true),
+            new ZoneDescriptor("EAT", 180, false),
+            new ZoneDescriptor("NET", 240, true),
+            new ZoneDescriptor("PLT", 300, false), // updated by tzdata 2008c - no DST after 2008
+            new ZoneDescriptor("IST", 330, false),
+            new ZoneDescriptor("BST", 360, false),
+            new ZoneDescriptor("VST", 420, false),
+            new ZoneDescriptor("CTT", 480, false), // updated Oct 2003 aliu
+            new ZoneDescriptor("JST", 540, false),
+            new ZoneDescriptor("ACT", 570, false), // updated Oct 2003 aliu
+            new ZoneDescriptor("AET", 600, true),
+            new ZoneDescriptor("SST", 660, false),
+            new ZoneDescriptor("NST", 720, true), // Pacific/Auckland
+
+            new ZoneDescriptor("Etc/Unknown", 0, false),
+            new ZoneDescriptor("SystemV/AST4ADT", -240, true),
+            new ZoneDescriptor("SystemV/EST5EDT", -300, true),
+            new ZoneDescriptor("SystemV/CST6CDT", -360, true),
+            new ZoneDescriptor("SystemV/MST7MDT", -420, true),
+            new ZoneDescriptor("SystemV/PST8PDT", -480, true),
+            new ZoneDescriptor("SystemV/YST9YDT", -540, true),
+            new ZoneDescriptor("SystemV/AST4", -240, false),
+            new ZoneDescriptor("SystemV/EST5", -300, false),
+            new ZoneDescriptor("SystemV/CST6", -360, false),
+            new ZoneDescriptor("SystemV/MST7", -420, false),
+            new ZoneDescriptor("SystemV/PST8", -480, false),
+            new ZoneDescriptor("SystemV/YST9", -540, false),
+            new ZoneDescriptor("SystemV/HST10", -600, false),
+        };
+
+        for (int i=0; i<REFERENCE_LIST.length; ++i) {
+            ZoneDescriptor referenceZone = REFERENCE_LIST[i];
+            ZoneDescriptor currentZone = new ZoneDescriptor(TimeZone.getTimeZone(referenceZone.getID()));
+            if (referenceZone.equals(currentZone)) {
+                logln("ok " + referenceZone);
+            }
+            else {
+                if (isNonReferenceTzdataVersion
+                        || isJDKTimeZone || isDateBeforeReferenceYear) {
+                    logln("Warning: Expected " + referenceZone +
+                            "; got " + currentZone);
+                } else {
+                    errln("Fail: Expected " + referenceZone +
+                            "; got " + currentZone);
+                }
+            }
+        }
+    }
+
+    /**
+     * A descriptor for a zone; used to regress the short zone IDs.
+     */
+    static class ZoneDescriptor {
+        String id;
+        int offset; // In minutes
+        boolean daylight;
+
+        ZoneDescriptor(TimeZone zone) {
+            this.id = zone.getID();
+            this.offset = zone.getRawOffset() / 60000;
+            this.daylight = zone.useDaylightTime();
+        }
+
+        ZoneDescriptor(String id, int offset, boolean daylight) {
+            this.id = id;
+            this.offset = offset;
+            this.daylight = daylight;
+        }
+
+        public String getID() { return id; }
+
+        public boolean equals(Object o) {
+            ZoneDescriptor that = (ZoneDescriptor)o;
+            return that != null &&
+                id.equals(that.id) &&
+                offset == that.offset &&
+                daylight == that.daylight;
+        }
+
+        public String toString() {
+            int min = offset;
+            char sign = '+';
+            if (min < 0) { sign = '-'; min = -min; }
+
+            return "Zone[\"" + id + "\", GMT" + sign + (min/60) + ':' +
+                (min%60<10?"0":"") + (min%60) + ", " +
+                (daylight ? "Daylight" : "Standard") + "]";
+        }
+
+        public static int compare(Object o1, Object o2) {
+            ZoneDescriptor i1 = (ZoneDescriptor)o1;
+            ZoneDescriptor i2 = (ZoneDescriptor)o2;
+            if (i1.offset > i2.offset) return 1;
+            if (i1.offset < i2.offset) return -1;
+            if (i1.daylight && !i2.daylight) return 1;
+            if (!i1.daylight && i2.daylight) return -1;
+            return i1.id.compareTo(i2.id);
+        }
+    }
+
+    /**
+     * As part of the VM fix (see CCC approved RFE 4028006, bug
+     * 4044013), TimeZone.getTimeZone() has been modified to recognize
+     * generic IDs of the form GMT[+-]hh:mm, GMT[+-]hhmm, and
+     * GMT[+-]hh.  Test this behavior here.
+     *
+     * Bug 4044013
+     */
+    public void TestCustomParse() {
+        String[] DATA = {
+            // ID               offset(sec)     output ID
+            "GMT",              "0",            "GMT",      // system ID
+            "GMT-YOUR.AD.HERE", "0",            "GMT",
+            "GMT0",             "0",            "GMT0",     // system ID
+            "GMT+0",            "0",            "GMT+0",    // system ID
+            "GMT+1",            "3600",         "GMT+0100",
+            "GMT-0030",         "-1800",        "GMT-0030",
+            "GMT+15:99",        "0",            "GMT",
+            "GMT+",             "0",            "GMT",
+            "GMT-",             "0",            "GMT",
+            "GMT+0:",           "0",            "GMT",
+            "GMT-:",            "0",            "GMT",
+            "GMT+0010",         "600",          "GMT+0010",
+            "GMT-10",           "-36000",       "GMT-1000",
+            "GMT+30",           "0",            "GMT",
+            "GMT-3:30",         "-12600",       "GMT-0330",
+            "GMT-230",          "-9000",        "GMT-0230",
+            "GMT+05:13:05",     "18785",        "GMT+051305",
+            "GMT-71023",        "-25823",       "GMT-071023",
+            "GMT+01:23:45:67",  "0",            "GMT",
+            "GMT+01:234",       "0",            "GMT",
+            "GMT-2:31:123",     "0",            "GMT",
+            "GMT+3:75",         "0",            "GMT",
+            "GMT-01010101",     "0",            "GMT",
+        };
+        for (int i = 0; i < DATA.length; i += 3) {
+            String id = DATA[i];
+            int offset = Integer.parseInt(DATA[i+1]);
+            String expId = DATA[i+2];
+
+            TimeZone zone = TimeZone.getTimeZone(id);
+            String gotID = zone.getID();
+            int gotOffset = zone.getRawOffset()/1000;
+
+            logln(id + " -> " + gotID + " " + gotOffset);
+
+            if (offset != gotOffset) {
+                errln("FAIL: Unexpected offset for " + id + " - returned:" + gotOffset + " expected:" + offset);
+            }
+            if (!expId.equals(gotID)) {
+                if (TimeZone.getDefaultTimeZoneType() != TimeZone.TIMEZONE_ICU) {
+                    logln("ID for " + id + " - returned:" + gotID + " expected:" + expId);
+                } else {
+                    errln("FAIL: Unexpected ID for " + id + " - returned:" + gotID + " expected:" + expId);
+                }
+            }
+        }
+    }
+
+    /**
+     * Test the basic functionality of the getDisplayName() API.
+     *
+     * Bug 4112869
+     * Bug 4028006
+     *
+     * See also API change request A41.
+     *
+     * 4/21/98 - make smarter, so the test works if the ext resources
+     * are present or not.
+     */
+    public void TestDisplayName() {
+        TimeZone zone = TimeZone.getTimeZone("PST");
+        String name = zone.getDisplayName(Locale.ENGLISH);
+        logln("PST->" + name);
+
+        // dlf - we now (3.4.1) return generic time
+        if (!name.equals("Pacific Time"))
+            errln("Fail: Expected \"Pacific Time\", got " + name +
+                  " for " + zone);
+
+        //*****************************************************************
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINES MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        //*****************************************************************
+
+        // todo: check to see whether we can test for all of pst, pdt, pt
+        Object[] DATA = {
+            Boolean.FALSE, new Integer(TimeZone.SHORT), "PST",
+            Boolean.TRUE,  new Integer(TimeZone.SHORT), "PDT",
+            Boolean.FALSE, new Integer(TimeZone.LONG),  "Pacific Standard Time",
+            Boolean.TRUE,  new Integer(TimeZone.LONG),  "Pacific Daylight Time",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            name = zone.getDisplayName(((Boolean)DATA[i]).booleanValue(),
+                                       ((Integer)DATA[i+1]).intValue(),
+                                       Locale.ENGLISH);
+            if (!name.equals(DATA[i+2]))
+                errln("Fail: Expected " + DATA[i+2] + "; got " + name);
+        }
+
+        // Make sure that we don't display the DST name by constructing a fake
+        // PST zone that has DST all year long.
+        // dlf - this test is no longer relevant, we display generic time now
+        //    so the behavior of the timezone doesn't matter
+        SimpleTimeZone zone2 = new SimpleTimeZone(0, "PST");
+        zone2.setStartRule(Calendar.JANUARY, 1, 0);
+        zone2.setEndRule(Calendar.DECEMBER, 31, 86399999);
+        logln("Modified PST inDaylightTime->" + zone2.inDaylightTime(new Date()));
+        name = zone2.getDisplayName(Locale.ENGLISH);
+        logln("Modified PST->" + name);
+        if (!name.equals("Pacific Time"))
+            errln("Fail: Expected \"Pacific Time\"");
+
+        // Make sure we get the default display format for Locales
+        // with no display name data.
+        Locale mt_MT = new Locale("mt", "MT");
+        name = zone.getDisplayName(mt_MT);
+        //*****************************************************************
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        // THE FOLLOWING LINE MUST BE UPDATED IF THE LOCALE DATA CHANGES
+        //*****************************************************************
+        logln("PST(mt_MT)->" + name);
+
+        // Now be smart -- check to see if zh resource is even present.
+        // If not, we expect the en fallback behavior.
+
+        // in icu4j 2.1 we know we have the zh_CN locale data, though it's incomplete
+//    /"DateFormatZoneData", 
+        UResourceBundle enRB = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,Locale.ENGLISH);
+        UResourceBundle mtRB = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, mt_MT);
+        boolean noZH = enRB == mtRB;
+
+        if (noZH) {
+            logln("Warning: Not testing the mt_MT behavior because resource is absent");
+            if (!name.equals("Pacific Standard Time"))
+                errln("Fail: Expected Pacific Standard Time for PST in mt_MT but got ");
+        }
+        // dlf - we will use generic time, or if unavailable, GMT for standard time in the zone 
+        //     - we now (3.4.1) have localizations for this zone, so change test string
+        else if(!name.equals("Stati Uniti (Los Angeles)") &&
+            !name.equals("GMT-08:00") &&
+            !name.equals("GMT-8:00") &&
+            !name.equals("GMT-0800") &&
+            !name.equals("GMT-800")) {
+
+            errln("Fail: got '" + name + "', expected GMT-08:00 or something similar\n" +
+                  "************************************************************\n" +
+                  "THE ABOVE FAILURE MAY JUST MEAN THE LOCALE DATA HAS CHANGED\n" +
+                  "************************************************************");
+        }
+        
+        // Now try a non-existent zone
+        zone2 = new SimpleTimeZone(90*60*1000, "xyzzy");
+        name = zone2.getDisplayName(Locale.ENGLISH);
+        logln("GMT+90min->" + name);
+        if (!name.equals("GMT+01:30") &&
+            !name.equals("GMT+1:30") &&
+            !name.equals("GMT+0130") &&
+            !name.equals("GMT+130"))
+            errln("Fail: Expected GMT+01:30 or something similar");
+        
+        // cover getDisplayName() - null arg
+        ULocale save = ULocale.getDefault();
+        ULocale.setDefault(ULocale.US);
+        name = zone2.getDisplayName();
+        logln("GMT+90min->" + name + "for default display locale");
+        if (!name.equals("GMT+01:30") &&
+            !name.equals("GMT+1:30") &&
+            !name.equals("GMT+0130") &&
+            !name.equals("GMT+130"))
+            errln("Fail: Expected GMT+01:30 or something similar");        
+        ULocale.setDefault(save);
+    }
+
+
+    public void TestDisplayName2() {
+        Date now = new Date();
+
+        String[] timezones = {"America/Chicago", "Europe/Moscow", "Europe/Rome", "Asia/Shanghai", "WET" };
+        String[] locales = {"en", "fr", "de", "ja", "zh_TW", "zh_Hans" };
+        for (int j = 0; j < locales.length; ++j) {
+            ULocale locale = new ULocale(locales[j]);
+            for (int i = 0; i < timezones.length; ++i) {
+                TimeZone tz = TimeZone.getTimeZone(timezones[i]);
+                String displayName0 = tz.getDisplayName(locale); // doesn't work???
+                SimpleDateFormat dt = new SimpleDateFormat("vvvv", locale);
+                dt.setTimeZone(tz);
+                String displayName1 = dt.format(now);  // date value _does_ matter if we fallback to GMT
+                logln(locale.getDisplayName() + ", " + tz.getID() + ": " + displayName0);
+                if (!displayName1.equals(displayName0)) {
+                    errln(locale.getDisplayName() + ", " + tz.getID() + 
+                          ": expected " + displayName1 + " but got: " + displayName0);
+                }
+            }
+        }
+    }
+
+    public void TestGenericAPI() {
+        String id = "NewGMT";
+        int offset = 12345;
+
+        SimpleTimeZone zone = new SimpleTimeZone(offset, id);
+        if (zone.useDaylightTime()) errln("FAIL: useDaylightTime should return false");
+
+        TimeZone zoneclone = (TimeZone)zone.clone();
+        if (!zoneclone.equals(zone)) errln("FAIL: clone or operator== failed");
+        zoneclone.setID("abc");
+        if (zoneclone.equals(zone)) errln("FAIL: clone or operator!= failed");
+        // delete zoneclone;
+
+        zoneclone = (TimeZone)zone.clone();
+        if (!zoneclone.equals(zone)) errln("FAIL: clone or operator== failed");
+        zoneclone.setRawOffset(45678);
+        if (zoneclone.equals(zone)) errln("FAIL: clone or operator!= failed");
+
+        // C++ only
+        /*
+          SimpleTimeZone copy(*zone);
+          if (!(copy == *zone)) errln("FAIL: copy constructor or operator== failed");
+          copy = *(SimpleTimeZone*)zoneclone;
+          if (!(copy == *zoneclone)) errln("FAIL: assignment operator or operator== failed");
+          */
+
+        TimeZone saveDefault = TimeZone.getDefault();
+        TimeZone.setDefault(zone);
+        TimeZone defaultzone = TimeZone.getDefault();
+        if (defaultzone == zone) errln("FAIL: Default object is identical, not clone");
+        if (!defaultzone.equals(zone)) errln("FAIL: Default object is not equal");
+        TimeZone.setDefault(saveDefault);
+        // delete defaultzone;
+        // delete zoneclone;
+
+//      // ICU 2.6 Coverage
+//      logln(zone.toString());
+//      logln(zone.getDisplayName());
+//      SimpleTimeZoneAdapter stza = new SimpleTimeZoneAdapter((SimpleTimeZone) TimeZone.getTimeZone("GMT"));
+//      stza.setID("Foo");
+//      if (stza.hasSameRules(java.util.TimeZone.getTimeZone("GMT"))) {
+//          errln("FAIL: SimpleTimeZoneAdapter.hasSameRules");
+//      }
+//      stza.setRawOffset(3000);
+//      offset = stza.getOffset(GregorianCalendar.BC, 2001, Calendar.DECEMBER,
+//                              25, Calendar.TUESDAY, 12*60*60*1000);
+//      if (offset != 3000) {
+//          errln("FAIL: SimpleTimeZoneAdapter.getOffset");
+//      }
+//      SimpleTimeZoneAdapter dup = (SimpleTimeZoneAdapter) stza.clone();
+//      if (stza.hashCode() != dup.hashCode()) {
+//          errln("FAIL: SimpleTimeZoneAdapter.hashCode");
+//      }
+//      if (!stza.equals(dup)) {
+//          errln("FAIL: SimpleTimeZoneAdapter.equals");
+//      }
+//      logln(stza.toString());
+
+        String tzver = TimeZone.getTZDataVersion();
+        if (tzver.length() != 5 /* 4 digits + 1 letter */) {
+            errln("FAIL: getTZDataVersion returned " + tzver);
+        } else {
+            logln("PASS: tzdata version: " + tzver);
+        }
+    }
+
+    public void TestRuleAPI()
+    {
+        // ErrorCode status = ZERO_ERROR;
+
+        int offset = (int)(60*60*1000*1.75); // Pick a weird offset
+        SimpleTimeZone zone = new SimpleTimeZone(offset, "TestZone");
+        if (zone.useDaylightTime()) errln("FAIL: useDaylightTime should return false");
+
+        // Establish our expected transition times.  Do this with a non-DST
+        // calendar with the (above) declared local offset.
+        GregorianCalendar gc = new GregorianCalendar(zone);
+        gc.clear();
+        gc.set(1990, Calendar.MARCH, 1);
+        long marchOneStd = gc.getTime().getTime(); // Local Std time midnight
+        gc.clear();
+        gc.set(1990, Calendar.JULY, 1);
+        long julyOneStd = gc.getTime().getTime(); // Local Std time midnight
+
+        // Starting and ending hours, WALL TIME
+        int startHour = (int)(2.25 * 3600000);
+        int endHour   = (int)(3.5  * 3600000);
+
+        zone.setStartRule(Calendar.MARCH, 1, 0, startHour);
+        zone.setEndRule  (Calendar.JULY,  1, 0, endHour);
+
+        gc = new GregorianCalendar(zone);
+        // if (failure(status, "new GregorianCalendar")) return;
+
+        long marchOne = marchOneStd + startHour;
+        long julyOne = julyOneStd + endHour - 3600000; // Adjust from wall to Std time
+
+        long expMarchOne = 636251400000L;
+        if (marchOne != expMarchOne)
+        {
+            errln("FAIL: Expected start computed as " + marchOne +
+                  " = " + new Date(marchOne));
+            logln("      Should be                  " + expMarchOne +
+                  " = " + new Date(expMarchOne));
+        }
+
+        long expJulyOne = 646793100000L;
+        if (julyOne != expJulyOne)
+        {
+            errln("FAIL: Expected start computed as " + julyOne +
+                  " = " + new Date(julyOne));
+            logln("      Should be                  " + expJulyOne +
+                  " = " + new Date(expJulyOne));
+        }
+
+        Calendar cal1 = Calendar.getInstance();
+        cal1.set(1990, Calendar.JANUARY, 1);
+        Calendar cal2 = Calendar.getInstance();
+        cal2.set(1990, Calendar.JUNE, 1);
+        _testUsingBinarySearch(zone, cal1.getTimeInMillis(),
+                               cal2.getTimeInMillis(), marchOne);
+        cal1.set(1990, Calendar.JUNE, 1);
+        cal2.set(1990, Calendar.DECEMBER, 31);
+        _testUsingBinarySearch(zone, cal1.getTimeInMillis(),
+                               cal2.getTimeInMillis(), julyOne);
+
+        if (zone.inDaylightTime(new Date(marchOne - 1000)) ||
+            !zone.inDaylightTime(new Date(marchOne)))
+            errln("FAIL: Start rule broken");
+        if (!zone.inDaylightTime(new Date(julyOne - 1000)) ||
+            zone.inDaylightTime(new Date(julyOne)))
+            errln("FAIL: End rule broken");
+
+        zone.setStartYear(1991);
+        if (zone.inDaylightTime(new Date(marchOne)) ||
+            zone.inDaylightTime(new Date(julyOne - 1000)))
+            errln("FAIL: Start year broken");
+
+        // failure(status, "TestRuleAPI");
+        // delete gc;
+        // delete zone;
+    }
+
+    void _testUsingBinarySearch(SimpleTimeZone tz, long min, long max, long expectedBoundary)
+    {
+        // ErrorCode status = ZERO_ERROR;
+        boolean startsInDST = tz.inDaylightTime(new Date(min));
+        // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        if (tz.inDaylightTime(new Date(max)) == startsInDST) {
+            logln("Error: inDaylightTime(" + new Date(max) + ") != " + (!startsInDST));
+            return;
+        }
+        // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        while ((max - min) > INTERVAL) {
+            long mid = (min + max) / 2;
+            if (tz.inDaylightTime(new Date(mid)) == startsInDST) {
+                min = mid;
+            }
+            else {
+                max = mid;
+            }
+            // if (failure(status, "SimpleTimeZone::inDaylightTime")) return;
+        }
+        logln("Binary Search Before: " + min + " = " + new Date(min));
+        logln("Binary Search After:  " + max + " = " + new Date(max));
+        long mindelta = expectedBoundary - min;
+        // not used long maxdelta = max - expectedBoundary;
+        if (mindelta >= 0 &&
+            mindelta <= INTERVAL &&
+            mindelta >= 0 &&
+            mindelta <= INTERVAL)
+            logln("PASS: Expected bdry:  " + expectedBoundary + " = " + new Date(expectedBoundary));
+        else
+            errln("FAIL: Expected bdry:  " + expectedBoundary + " = " + new Date(expectedBoundary));
+    }
+
+    static final int INTERVAL = 100;
+
+    // Bug 006; verify the offset for a specific zone.
+    public void TestPRTOffset()
+    {
+        TimeZone tz = TimeZone.getTimeZone( "PRT" );
+        if( tz == null ) {
+            errln( "FAIL: TimeZone(PRT) is null" );
+        }
+        else{
+            if (tz.getRawOffset() != (-4*millisPerHour))
+                warnln("FAIL: Offset for PRT should be -4, got " +
+                      tz.getRawOffset() / (double)millisPerHour);
+        }
+
+    }
+
+    // Test various calls
+    public void TestVariousAPI518()
+    {
+        TimeZone time_zone = TimeZone.getTimeZone("PST");
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, Calendar.APRIL, 30);
+        Date d = cal.getTime();
+
+        logln("The timezone is " + time_zone.getID());
+
+        if (time_zone.inDaylightTime(d) != true)
+            errln("FAIL: inDaylightTime returned false");
+
+        if (time_zone.useDaylightTime() != true)
+            errln("FAIL: useDaylightTime returned false");
+
+        if (time_zone.getRawOffset() != -8*millisPerHour)
+            errln( "FAIL: getRawOffset returned wrong value");
+
+        GregorianCalendar gc = new GregorianCalendar();
+        gc.setTime(d);
+        if (time_zone.getOffset(GregorianCalendar.AD, gc.get(GregorianCalendar.YEAR), gc.get(GregorianCalendar.MONTH),
+                                gc.get(GregorianCalendar.DAY_OF_MONTH),
+                                gc.get(GregorianCalendar.DAY_OF_WEEK), 0)
+            != -7*millisPerHour)
+            errln("FAIL: getOffset returned wrong value");
+    }
+
+    // Test getAvailableID API
+    public void TestGetAvailableIDs913()
+    {
+        StringBuffer buf = new StringBuffer("TimeZone.getAvailableIDs() = { ");
+        String[] s = TimeZone.getAvailableIDs();
+        for (int i=0; i<s.length; ++i)
+        {
+            if (i > 0) buf.append(", ");
+            buf.append(s[i]);
+        }
+        buf.append(" };");
+        logln(buf.toString());
+
+        buf.setLength(0);
+        buf.append("TimeZone.getAvailableIDs(GMT+02:00) = { ");
+        s = TimeZone.getAvailableIDs(+2 * 60 * 60 * 1000);
+        for (int i=0; i<s.length; ++i)
+        {
+            if (i > 0) buf.append(", ");
+            buf.append(s[i]);
+        }
+        buf.append(" };");
+        logln(buf.toString());
+
+        TimeZone tz = TimeZone.getTimeZone("PST");
+        if (tz != null)
+            logln("getTimeZone(PST) = " + tz.getID());
+        else
+            errln("FAIL: getTimeZone(PST) = null");
+
+        tz = TimeZone.getTimeZone("America/Los_Angeles");
+        if (tz != null)
+            logln("getTimeZone(America/Los_Angeles) = " + tz.getID());
+        else
+            errln("FAIL: getTimeZone(PST) = null");
+
+        // Bug 4096694
+        tz = TimeZone.getTimeZone("NON_EXISTENT");
+        if (tz == null)
+            errln("FAIL: getTimeZone(NON_EXISTENT) = null");
+        else if (!tz.getID().equals("GMT"))
+            errln("FAIL: getTimeZone(NON_EXISTENT) = " + tz.getID());
+    }
+
+    /**
+     * Bug 4107276
+     */
+    public void TestDSTSavings() {
+        // It might be better to find a way to integrate this test into the main TimeZone
+        // tests above, but I don't have time to figure out how to do this (or if it's
+        // even really a good idea).  Let's consider that a future.  --rtg 1/27/98
+        SimpleTimeZone tz = new SimpleTimeZone(-5 * millisPerHour, "dstSavingsTest",
+                                               Calendar.MARCH, 1, 0, 0, Calendar.SEPTEMBER, 1, 0, 0,
+                                               (int)(0.5 * millisPerHour));
+
+        if (tz.getRawOffset() != -5 * millisPerHour)
+            errln("Got back a raw offset of " + (tz.getRawOffset() / millisPerHour) +
+                  " hours instead of -5 hours.");
+        if (!tz.useDaylightTime())
+            errln("Test time zone should use DST but claims it doesn't.");
+        if (tz.getDSTSavings() != 0.5 * millisPerHour)
+            errln("Set DST offset to 0.5 hour, but got back " + (tz.getDSTSavings() /
+                                                                 millisPerHour) + " hours instead.");
+
+        int offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JANUARY, 1,
+                                  Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10 AM, 1/1/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JUNE, 1, Calendar.MONDAY,
+                              10 * millisPerHour);
+        if (offset != -4.5 * millisPerHour)
+            errln("The offset for 10 AM, 6/1/98 should have been -4.5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        tz.setDSTSavings(millisPerHour);
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JANUARY, 1,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10 AM, 1/1/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.JUNE, 1, Calendar.MONDAY,
+                              10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10 AM, 6/1/98 (with a 1-hour DST offset) should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+    }
+
+    /**
+     * Bug 4107570
+     */
+    public void TestAlternateRules() {
+        // Like TestDSTSavings, this test should probably be integrated somehow with the main
+        // test at the top of this class, but I didn't have time to figure out how to do that.
+        //                      --rtg 1/28/98
+
+        SimpleTimeZone tz = new SimpleTimeZone(-5 * millisPerHour, "alternateRuleTest");
+
+        // test the day-of-month API
+        tz.setStartRule(Calendar.MARCH, 10, 12 * millisPerHour);
+        tz.setEndRule(Calendar.OCTOBER, 20, 12 * millisPerHour);
+
+        int offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 5,
+                                  Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 3/5/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 15,
+                              Calendar.SUNDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 3/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 15,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 10/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 25,
+                              Calendar.SUNDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 10/25/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        // test the day-of-week-after-day-in-month API
+        tz.setStartRule(Calendar.MARCH, 10, Calendar.FRIDAY, 12 * millisPerHour, true);
+        tz.setEndRule(Calendar.OCTOBER, 20, Calendar.FRIDAY, 12 * millisPerHour, false);
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 11,
+                              Calendar.WEDNESDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 3/11/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.MARCH, 14,
+                              Calendar.SATURDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 3/14/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 15,
+                              Calendar.THURSDAY, 10 * millisPerHour);
+        if (offset != -4 * millisPerHour)
+            errln("The offset for 10AM, 10/15/98 should have been -4 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+
+        offset = tz.getOffset(GregorianCalendar.AD, 1998, Calendar.OCTOBER, 17,
+                              Calendar.SATURDAY, 10 * millisPerHour);
+        if (offset != -5 * millisPerHour)
+            errln("The offset for 10AM, 10/17/98 should have been -5 hours, but we got "
+                  + (offset / millisPerHour) + " hours.");
+    }
+
+    public void TestEquivalencyGroups() {
+        String id = "America/Los_Angeles";
+        int n = TimeZone.countEquivalentIDs(id);
+        if (n < 2) {
+            errln("FAIL: countEquivalentIDs(" + id + ") returned " + n +
+                  ", expected >= 2");
+        }
+        for (int i=0; i<n; ++i) {
+            String s = TimeZone.getEquivalentID(id, i);
+            if (s.length() == 0) {
+                errln("FAIL: getEquivalentID(" + id + ", " + i +
+                      ") returned \"" + s + "\", expected valid ID");
+            } else {
+                logln("" + i + ":" + s);
+            }
+        }
+
+        // JB#5480 - equivalent IDs should not be empty within range
+        String[] ids = TimeZone.getAvailableIDs();
+        for (int i = 0; i < ids.length; i++) {
+            int nEquiv = TimeZone.countEquivalentIDs(ids[i]);
+            // Each equivalent ID must not be empty
+            for (int j = 0; j < nEquiv; j++) {
+                String equivID = TimeZone.getEquivalentID(ids[i], j);
+                if (equivID.length() == 0) {
+                    errln("FAIL: getEquivalentID(" + ids[i] + ", " + i +
+                            ") returned \"" + equivID + "\", expected valid ID");
+                }
+            }
+            // equivalent ID out of range must be empty
+            String outOfRangeID = TimeZone.getEquivalentID(ids[i], nEquiv);
+            if (outOfRangeID.length() != 0) {
+                errln("FAIL: getEquivalentID(" + ids[i] + ", " + i +
+                        ") returned \"" + outOfRangeID + "\", expected empty string");
+            }
+        }
+    }
+
+    public void TestCountries() {
+        // Make sure America/Los_Angeles is in the "US" group, and
+        // Asia/Tokyo isn't.  Vice versa for the "JP" group.
+
+        String[] s = TimeZone.getAvailableIDs("US");
+        boolean la = false, tokyo = false;
+        String laZone = "America/Los_Angeles", tokyoZone = "Asia/Tokyo";
+
+        for (int i=0; i<s.length; ++i) {
+            if (s[i].equals(laZone)) {
+                la = true;
+            }
+            if (s[i].equals(tokyoZone)) {
+                tokyo = true;
+            }
+        }
+        if (!la ) {
+            errln("FAIL: " + laZone + " in US = " + la);
+        }
+        if (tokyo) {
+            errln("FAIL: " + tokyoZone + " in US = " + tokyo);
+        }
+        s = TimeZone.getAvailableIDs("JP");
+        la = false; tokyo = false;
+
+        for (int i=0; i<s.length; ++i) {
+            if (s[i].equals(laZone)) {
+                la = true;
+            }
+            if (s[i].equals(tokyoZone)) {
+                tokyo = true;
+            }
+        }
+        if (la) {
+            errln("FAIL: " + laZone + " in JP = " + la);
+        }
+        if (!tokyo) {
+            errln("FAIL: " + tokyoZone + " in JP = " + tokyo);
+        }
+    }
+
+    public void TestFractionalDST() {
+        String tzName = "Australia/Lord_Howe"; // 30 min offset
+        java.util.TimeZone tz_java = java.util.TimeZone.getTimeZone(tzName);
+        int dst_java = 0;
+        try {
+            // hack so test compiles and runs in both JDK 1.3 and JDK 1.4
+            final Object[] args = new Object[0];
+            final Class[] argtypes = new Class[0];
+            java.lang.reflect.Method m = tz_java.getClass().getMethod("getDSTSavings", argtypes); 
+            dst_java = ((Integer) m.invoke(tz_java, args)).intValue();
+            if (dst_java <= 0 || dst_java >= 3600000) { // didn't get the fractional time zone we wanted
+            errln("didn't get fractional time zone!");
+            }
+        } catch (NoSuchMethodException e) {
+            // see JDKTimeZone for the reason for this code
+            dst_java = 3600000;
+        } catch (IllegalAccessException e) {
+            // see JDKTimeZone for the reason for this code
+            errln(e.getMessage());
+            dst_java = 3600000;
+        } catch (InvocationTargetException e) {
+            // see JDKTimeZone for the reason for this code
+            errln(e.getMessage());
+            dst_java = 3600000;
+        } catch (SecurityException e) {
+            warnln(e.getMessage());
+            return;
+        }
+        
+        com.ibm.icu.util.TimeZone tz_icu = com.ibm.icu.util.TimeZone.getTimeZone(tzName);
+        int dst_icu = tz_icu.getDSTSavings();
+
+        if (dst_java != dst_icu) {
+            warnln("java reports dst savings of " + dst_java +
+              " but icu reports " + dst_icu + 
+              " for tz " + tz_icu.getID());
+        } else {
+            logln("both java and icu report dst savings of " + dst_java + " for tz " + tz_icu.getID());
+        }
+    }
+
+    public void TestGetOffsetDate() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(1997, Calendar.JANUARY, 30);
+        long date = cal.getTimeInMillis();
+
+    TimeZone tz_icu = TimeZone.getTimeZone("America/Los_Angeles");
+    int offset = tz_icu.getOffset(date);
+    if (offset != -28800000) {
+        errln("expected offset -28800000, got: " + offset);
+    }
+
+    cal.set(1997, Calendar.JULY, 30);
+    date = cal.getTimeInMillis();
+    offset = tz_icu.getOffset(date);
+    if (offset != -25200000) {
+        errln("expected offset -25200000, got: " + offset);
+    }
+    }
+
+    // jb4484
+    public void TestSimpleTimeZoneSerialization() 
+    {
+        SimpleTimeZone stz0 = new SimpleTimeZone(32400000, "MyTimeZone");
+        SimpleTimeZone stz1 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        SimpleTimeZone stz2 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        stz2.setRawOffset(0);
+        SimpleTimeZone stz3 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        stz3.setStartYear(100);
+        SimpleTimeZone stz4 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        stz4.setStartYear(1000);
+        stz4.setDSTSavings(1800000);
+        stz4.setStartRule(3, 4, 180000);
+        stz4.setEndRule(6, 3, 4, 360000);
+        SimpleTimeZone stz5 = new SimpleTimeZone(32400000, "Asia/Tokyo");
+        stz5.setStartRule(2, 3, 4, 360000);
+        stz5.setEndRule(6, 3, 4, 360000);
+        
+        SimpleTimeZone[] stzs = { stz0, stz1, stz2, stz3, stz4, stz5, };
+
+        for (int i = 0; i < stzs.length; ++i) {
+            SimpleTimeZone stz = stzs[i];
+            try {
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = new ObjectOutputStream(baos);
+                oos.writeObject(stz);
+                oos.close();
+                byte[] bytes = baos.toByteArray();
+                logln("id: " + stz.getID() + " length: " + bytes.length);
+
+                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+                ObjectInputStream ois = new ObjectInputStream(bais);
+
+                SimpleTimeZone stzDeserialized = (SimpleTimeZone)ois.readObject();
+                ois.close();
+
+                assertEquals("time zones", stz, stzDeserialized);
+            }
+            catch (ClassCastException cce) {
+                cce.printStackTrace();
+                errln("could not deserialize SimpleTimeZone");
+            }
+            catch (IOException ioe) {
+                errln(ioe.getMessage());
+            }
+            catch (ClassNotFoundException cnfe) {
+                errln(cnfe.getMessage());
+            }
+        }
+    }
+
+    // jb4175
+    /* Generated by org.unicode.cldr.tool.CountItems */
+    private static final String[] timeZoneTestNames = {
+        "America/Argentina/Buenos_Aires", "America/Buenos_Aires",
+        "America/Argentina/Catamarca", "America/Catamarca",
+        "America/Argentina/Cordoba", "America/Cordoba",
+        "America/Argentina/Jujuy", "America/Jujuy",
+        "America/Argentina/Mendoza", "America/Mendoza",
+        "America/Atka", "America/Adak",
+        "America/Ensenada", "America/Tijuana",
+        "America/Fort_Wayne", "America/Indianapolis",
+        "America/Indiana/Indianapolis", "America/Indianapolis",
+        "America/Kentucky/Louisville", "America/Louisville",
+        "America/Knox_IN", "America/Indiana/Knox",
+        "America/Porto_Acre", "America/Rio_Branco",
+        "America/Rosario", "America/Cordoba",
+        "America/Virgin", "America/St_Thomas",
+        "Asia/Ashkhabad", "Asia/Ashgabat",
+        "Asia/Chungking", "Asia/Chongqing",
+        "Asia/Dacca", "Asia/Dhaka",
+        "Asia/Istanbul", "Europe/Istanbul",
+        "Asia/Macao", "Asia/Macau",
+        "Asia/Tel_Aviv", "Asia/Jerusalem",
+        "Asia/Thimbu", "Asia/Thimphu",
+        "Asia/Ujung_Pandang", "Asia/Makassar",
+        "Asia/Ulan_Bator", "Asia/Ulaanbaatar",
+        "Australia/ACT", "Australia/Sydney",
+        "Australia/Canberra", "Australia/Sydney",
+        "Australia/LHI", "Australia/Lord_Howe",
+        "Australia/NSW", "Australia/Sydney",
+        "Australia/North", "Australia/Darwin",
+        "Australia/Queensland", "Australia/Brisbane",
+        "Australia/South", "Australia/Adelaide",
+        "Australia/Tasmania", "Australia/Hobart",
+        "Australia/Victoria", "Australia/Melbourne",
+        "Australia/West", "Australia/Perth",
+        "Australia/Yancowinna", "Australia/Broken_Hill",
+        "Brazil/Acre", "America/Rio_Branco",
+        "Brazil/DeNoronha", "America/Noronha",
+        "Brazil/East", "America/Sao_Paulo",
+        "Brazil/West", "America/Manaus",
+        "CST6CDT", "America/Chicago",
+        "Canada/Atlantic", "America/Halifax",
+        "Canada/Central", "America/Winnipeg",
+        "Canada/East-Saskatchewan", "America/Regina",
+        "Canada/Eastern", "America/Toronto",
+        "Canada/Mountain", "America/Edmonton",
+        "Canada/Newfoundland", "America/St_Johns",
+        "Canada/Pacific", "America/Vancouver",
+        "Canada/Saskatchewan", "America/Regina",
+        "Canada/Yukon", "America/Whitehorse",
+        "Chile/Continental", "America/Santiago",
+        "Chile/EasterIsland", "Pacific/Easter",
+        "Cuba", "America/Havana",
+        "EST", "America/Indianapolis",
+        "EST5EDT", "America/New_York",
+        "Egypt", "Africa/Cairo",
+        "Eire", "Europe/Dublin",
+        "Etc/GMT+0", "Etc/GMT",
+        "Etc/GMT-0", "Etc/GMT",
+        "Etc/GMT0", "Etc/GMT",
+        "Etc/Greenwich", "Etc/GMT",
+        "Etc/UCT", "Etc/GMT",
+        "Etc/UTC", "Etc/GMT",
+        "Etc/Universal", "Etc/GMT",
+        "Etc/Zulu", "Etc/GMT",
+        "Europe/Nicosia", "Asia/Nicosia",
+        "Europe/Tiraspol", "Europe/Chisinau",
+        "GB", "Europe/London",
+        "GB-Eire", "Europe/London",
+        "GMT", "Etc/GMT",
+        "GMT+0", "Etc/GMT",
+        "GMT-0", "Etc/GMT",
+        "GMT0", "Etc/GMT",
+        "Greenwich", "Etc/GMT",
+        "HST", "Pacific/Honolulu",
+        "Hongkong", "Asia/Hong_Kong",
+        "Iceland", "Atlantic/Reykjavik",
+        "Iran", "Asia/Tehran",
+        "Israel", "Asia/Jerusalem",
+        "Jamaica", "America/Jamaica",
+        "Japan", "Asia/Tokyo",
+        "Kwajalein", "Pacific/Kwajalein",
+        "Libya", "Africa/Tripoli",
+        "MST", "America/Phoenix",
+        "MST7MDT", "America/Denver",
+        "Mexico/BajaNorte", "America/Tijuana",
+        "Mexico/BajaSur", "America/Mazatlan",
+        "Mexico/General", "America/Mexico_City",
+        "NZ", "Pacific/Auckland",
+        "NZ-CHAT", "Pacific/Chatham",
+        "Navajo", "America/Shiprock", /* fixed from Mark's original */
+        "PRC", "Asia/Shanghai",
+        "PST8PDT", "America/Los_Angeles",
+        "Pacific/Samoa", "Pacific/Pago_Pago",
+        "Poland", "Europe/Warsaw",
+        "Portugal", "Europe/Lisbon",
+        "ROC", "Asia/Taipei",
+        "ROK", "Asia/Seoul",
+        "Singapore", "Asia/Singapore",
+        "SystemV/AST4", "America/Puerto_Rico",
+        "SystemV/AST4ADT", "America/Halifax",
+        "SystemV/CST6", "America/Regina",
+        "SystemV/CST6CDT", "America/Chicago",
+        "SystemV/EST5", "America/Indianapolis",
+        "SystemV/EST5EDT", "America/New_York",
+        "SystemV/HST10", "Pacific/Honolulu",
+        "SystemV/MST7", "America/Phoenix",
+        "SystemV/MST7MDT", "America/Denver",
+        "SystemV/PST8", "Pacific/Pitcairn",
+        "SystemV/PST8PDT", "America/Los_Angeles",
+        "SystemV/YST9", "Pacific/Gambier",
+        "SystemV/YST9YDT", "America/Anchorage",
+        "Turkey", "Europe/Istanbul",
+        "UCT", "Etc/GMT",
+        "US/Alaska", "America/Anchorage",
+        "US/Aleutian", "America/Adak",
+        "US/Arizona", "America/Phoenix",
+        "US/Central", "America/Chicago",
+        "US/East-Indiana", "America/Indianapolis",
+        "US/Eastern", "America/New_York",
+        "US/Hawaii", "Pacific/Honolulu",
+        "US/Indiana-Starke", "America/Indiana/Knox",
+        "US/Michigan", "America/Detroit",
+        "US/Mountain", "America/Denver",
+        "US/Pacific", "America/Los_Angeles",
+        "US/Pacific-New", "America/Los_Angeles",
+        "US/Samoa", "Pacific/Pago_Pago",
+        "UTC", "Etc/GMT",
+        "Universal", "Etc/GMT",
+        "W-SU", "Europe/Moscow",
+        "Zulu", "Etc/GMT",
+    };
+
+    public void TestOddTimeZoneNames() {
+        for (int i = 0; i < timeZoneTestNames.length; i += 2) {
+            String funkyName = timeZoneTestNames[i];
+            String correctName = timeZoneTestNames[i+1];
+
+            TimeZone ftz = TimeZone.getTimeZone(funkyName);
+            TimeZone ctz = TimeZone.getTimeZone(correctName);
+
+            String fdn = ftz.getDisplayName();
+            long fro = ftz.getRawOffset();
+            long fds = ftz.getDSTSavings();
+            boolean fdy = ftz.useDaylightTime();
+
+            String cdn = ctz.getDisplayName();
+            long cro = ctz.getRawOffset();
+            long cds = ctz.getDSTSavings();
+            boolean cdy = ctz.useDaylightTime();
+
+            if (!fdn.equals(cdn)) {
+                logln("display name (" + funkyName + ", " + correctName + ") expected: " + cdn + " but got: " + fdn);
+            } else if (fro != cro) {
+                logln("offset (" + funkyName + ", " + correctName + ") expected: " + cro + " but got: " + fro);
+            } else if (fds != cds) {
+                logln("daylight (" + funkyName + ", " + correctName + ") expected: " + cds + " but got: " + fds);
+            } else if (fdy != cdy) {
+                logln("uses daylight (" + funkyName + ", " + correctName + ") expected: " + cdy + " but got: " + fdy);
+            } else {
+                // no error, assume we're referencing the same internal java object
+            }
+        }
+    }
+    
+    public void TestCoverage(){
+        class StubTimeZone extends TimeZone{
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = 8658654217433379343L;
+            public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {return 0;}
+            public void setRawOffset(int offsetMillis) {}
+            public int getRawOffset() {return 0;}
+            public boolean useDaylightTime() {return false;}
+            public boolean inDaylightTime(Date date) {return false;}
+        } 
+        StubTimeZone stub = new StubTimeZone();
+        StubTimeZone stub2 = (StubTimeZone) stub.clone();
+        if (stub.getDSTSavings() != 0){
+            errln("TimeZone.getDSTSavings() should return 0");
+        }
+        if (!stub.hasSameRules(stub2)){
+            errln("TimeZone.clone() object should hasSameRules");
+     
+        }
+    }
+    public void TestMark(){
+        String tzid = "America/Argentina/ComodRivadavia";
+        TimeZone tz = TimeZone.getTimeZone(tzid);
+        int offset = tz.getOffset(new Date().getTime());
+        logln(tzid + ":\t" + offset);
+        List list = Arrays.asList(TimeZone.getAvailableIDs());
+        if(!list.contains(tzid)){
+            errln("Could create the time zone but it is not in getAvailableIDs");
+        }
+    }
+    public void TestZoneMeta() {
+        java.util.TimeZone save = java.util.TimeZone.getDefault();
+        java.util.TimeZone newZone = java.util.TimeZone.getTimeZone("GMT-08:00");
+        com.ibm.icu.util.TimeZone.setDefault(null);
+        java.util.TimeZone.setDefault(newZone);
+        SimpleTimeZone zone = new SimpleTimeZone(0, "GMT");
+        com.ibm.icu.util.TimeZone defaultZone = com.ibm.icu.util.TimeZone.getDefault();
+        if(defaultZone==null){
+            errln("TimeZone.getDefault() failed for GMT-08:00");
+        }
+        if(zone==null){
+            errln("SimpleTimeZone(0, GMT-08:00) failed for GMT-08:00");
+        }
+        //reset
+        java.util.TimeZone.setDefault(save);
+    }
+
+    // Copied from the protected constant in TimeZone.
+    private static final int MILLIS_PER_HOUR = 60*60*1000;
+
+    //  Test that a transition at the end of February is handled correctly.
+    public void TestFebruary() {
+        // Time zone with daylight savings time from the first Sunday in November
+        // to the last Sunday in February.
+        // Similar to the new rule for Brazil (Sao Paulo) in tzdata2006n.
+        //
+        // Note: In tzdata2007h, the rule had changed, so no actual zones uses
+        // lastSun in Feb anymore.
+        SimpleTimeZone tz1 = new SimpleTimeZone(
+                           -3 * MILLIS_PER_HOUR,                    // raw offset: 3h before (west of) GMT
+                           "nov-feb",
+                           Calendar.NOVEMBER, 1, Calendar.SUNDAY,   // start: November, first, Sunday
+                           0,                                       //        midnight wall time
+                           Calendar.FEBRUARY, -1, Calendar.SUNDAY,  // end:   February, last, Sunday
+                           0);                                      //        midnight wall time
+
+        // Now hardcode the same rules as for Brazil in tzdata 2006n, so that
+        // we cover the intended code even when in the future zoneinfo hardcodes
+        // these transition dates.
+        SimpleTimeZone tz2= new SimpleTimeZone(
+                           -3 * MILLIS_PER_HOUR,                    // raw offset: 3h before (west of) GMT
+                           "nov-feb2",
+                           Calendar.NOVEMBER, 1, -Calendar.SUNDAY,  // start: November, 1 or after, Sunday
+                           0,                                       //        midnight wall time
+                           Calendar.FEBRUARY, -29, -Calendar.SUNDAY,// end:   February, 29 or before, Sunday
+                           0);                                      //        midnight wall time
+
+        // Gregorian calendar with the UTC time zone for getting sample test date/times.
+        GregorianCalendar gc = new GregorianCalendar(TimeZone.getTimeZone("Etc/GMT"));
+        // "Unable to create the UTC calendar: %s"
+
+        int[] data = {
+            // UTC time (6 fields) followed by
+            // expected time zone offset in hours after GMT (negative=before GMT).
+            // int year, month, day, hour, minute, second, offsetHours
+            2006, Calendar.NOVEMBER,  5, 02, 59, 59, -3,
+            2006, Calendar.NOVEMBER,  5, 03, 00, 00, -2,
+            2007, Calendar.FEBRUARY, 25, 01, 59, 59, -2,
+            2007, Calendar.FEBRUARY, 25, 02, 00, 00, -3,
+
+            2007, Calendar.NOVEMBER,  4, 02, 59, 59, -3,
+            2007, Calendar.NOVEMBER,  4, 03, 00, 00, -2,
+            2008, Calendar.FEBRUARY, 24, 01, 59, 59, -2,
+            2008, Calendar.FEBRUARY, 24, 02, 00, 00, -3,
+
+            2008, Calendar.NOVEMBER,  2, 02, 59, 59, -3,
+            2008, Calendar.NOVEMBER,  2, 03, 00, 00, -2,
+            2009, Calendar.FEBRUARY, 22, 01, 59, 59, -2,
+            2009, Calendar.FEBRUARY, 22, 02, 00, 00, -3,
+
+            2009, Calendar.NOVEMBER,  1, 02, 59, 59, -3,
+            2009, Calendar.NOVEMBER,  1, 03, 00, 00, -2,
+            2010, Calendar.FEBRUARY, 28, 01, 59, 59, -2,
+            2010, Calendar.FEBRUARY, 28, 02, 00, 00, -3
+        };
+
+        TimeZone timezones[] = { tz1, tz2 };
+
+        TimeZone tz;
+        Date dt;
+        int t, i, raw, dst;
+        int[] offsets = new int[2]; // raw = offsets[0], dst = offsets[1]
+        for (t = 0; t < timezones.length; ++t) {
+            tz = timezones[t];
+            for (i = 0; i < data.length; i+=7) {
+                gc.set(data[i], data[i+1], data[i+2],
+                       data[i+3], data[i+4], data[i+5]);
+                dt = gc.getTime();
+                tz.getOffset(dt.getTime(), false, offsets);
+                raw = offsets[0];
+                dst = offsets[1];
+                if ((raw + dst) != data[i+6] * MILLIS_PER_HOUR) {
+                    errln("test case " + t + "." + (i/7) + ": " +
+                          "tz.getOffset(" + data[i] + "-" + (data[i+1] + 1) + "-" + data[i+2] + " " +
+                          data[i+3] + ":" + data[i+4] + ":" + data[i+5] +
+                          ") returns " + raw + "+" + dst + " != " + data[i+6] * MILLIS_PER_HOUR);
+                }
+            }
+        }
+    }
+
+    public void TestCanonicalID() {
+        // Some canonical IDs in CLDR are defined as "Link"
+        // in Olson tzdata.
+        final String[][] excluded1 = {
+                {"America/Shiprock", "America/Denver"}, // America/Shiprock is defined as a Link to America/Denver in tzdata
+                {"America/Marigot", "America/Guadeloupe"},
+                {"America/St_Barthelemy", "America/Guadeloupe"},
+                {"Antarctica/South_Pole", "Antarctica/McMurdo"},
+                {"Atlantic/Jan_Mayen", "Europe/Oslo"},
+                {"Arctic/Longyearbyen", "Europe/Oslo"},
+                {"Europe/Guernsey", "Europe/London"},
+                {"Europe/Isle_of_Man", "Europe/London"},
+                {"Europe/Jersey", "Europe/London"},
+                {"Europe/Ljubljana", "Europe/Belgrade"},
+                {"Europe/Podgorica", "Europe/Belgrade"},
+                {"Europe/Sarajevo", "Europe/Belgrade"},
+                {"Europe/Skopje", "Europe/Belgrade"},
+                {"Europe/Zagreb", "Europe/Belgrade"},
+                {"Europe/Bratislava", "Europe/Prague"},
+                {"Europe/Mariehamn", "Europe/Helsinki"},
+                {"Europe/San_Marino", "Europe/Rome"},
+                {"Europe/Vatican", "Europe/Rome"},
+        };
+
+        // Following IDs are aliases of Etc/GMT in CLDR,
+        // but Olson tzdata has 3 independent definitions
+        // for Etc/GMT, Etc/UTC, Etc/UCT.
+        // Until we merge them into one equivalent group
+        // in zoneinfo.res, we exclude them in the test
+        // below.
+        final String[] excluded2 = {
+                "Etc/UCT", "UCT",
+                "Etc/UTC", "UTC",
+                "Etc/Universal", "Universal",
+                "Etc/Zulu", "Zulu",
+        };
+
+        // Walk through equivalency groups
+        String[] ids = TimeZone.getAvailableIDs();
+        for (int i = 0; i < ids.length; i++) {
+            int nEquiv = TimeZone.countEquivalentIDs(ids[i]);
+            if (nEquiv == 0) {
+                continue;
+            }
+            String canonicalID = null;
+            boolean bFoundCanonical = false;
+            // Make sure getCanonicalID returns the exact same result
+            // for all entries within a same equivalency group with some
+            // exceptions listed in exluded1.
+            // Also, one of them must be canonical id.
+            for (int j = 0; j < nEquiv; j++) {
+                String tmp = TimeZone.getEquivalentID(ids[i], j);
+                String tmpCanonical = TimeZone.getCanonicalID(tmp);
+                if (tmpCanonical == null) {
+                    errln("FAIL: getCanonicalID(\"" + tmp + "\") returned null");
+                    continue;
+                }
+                // Some exceptional cases
+                for (int k = 0; k < excluded1.length; k++) {
+                    if (tmpCanonical.equals(excluded1[k][0])) {
+                        tmpCanonical = excluded1[k][1];
+                    }
+                }
+
+                if (j == 0) {
+                    canonicalID = tmpCanonical;
+                } else if (!canonicalID.equals(tmpCanonical)) {
+                    errln("FAIL: getCanonicalID(\"" + tmp + "\") returned " + tmpCanonical + " expected:" + canonicalID);
+                }
+
+                if (canonicalID.equals(tmp)) {
+                    bFoundCanonical = true;
+                }
+            }
+            // At least one ID in an equvalency group must match the
+            // canonicalID
+            if (!bFoundCanonical) {
+                // test exclusion because of differences between Olson tzdata and CLDR
+                boolean isExcluded = false;
+                for (int k = 0; k < excluded1.length; k++) {
+                    if (ids[i].equals(excluded2[k])) {
+                        isExcluded = true;
+                        break;
+                    }
+                }
+                if (isExcluded) {
+                    continue;
+                }
+
+                errln("FAIL: No timezone ids match the canonical ID " + canonicalID);
+            }
+        }
+        // Testing some special cases
+        final String[][] data = {
+                {"GMT-03", "GMT-0300", null},
+                {"GMT+4", "GMT+0400", null},
+                {"GMT-055", "GMT-0055", null},
+                {"GMT+430", "GMT+0430", null},
+                {"GMT-12:15", "GMT-1215", null},
+                {"GMT-091015", "GMT-091015", null},
+                {"GMT+1:90", null, null},
+                {"America/Argentina/Buenos_Aires", "America/Buenos_Aires", "true"},
+                {"bogus", null, null},
+                {"", null, null},
+                {null, null, null},
+        };
+        boolean[] isSystemID = new boolean[1];
+        for (int i = 0; i < data.length; i++) {
+            String canonical = TimeZone.getCanonicalID(data[i][0], isSystemID);
+            if (canonical != null && !canonical.equals(data[i][1])
+                    || canonical == null && data[i][1] != null) {
+                errln("FAIL: getCanonicalID(\"" + data[i][0] + "\") returned " + canonical
+                        + " - expected: " + data[i][1]);
+            }
+            if ("true".equalsIgnoreCase(data[i][2]) != isSystemID[0]) {
+                errln("FAIL: getCanonicalID(\"" + data[i][0] + "\") set " + isSystemID[0]
+                        + " to isSystemID");
+            }
+        }
+    }
+
+    public void TestSetDefault() {
+        java.util.TimeZone save = java.util.TimeZone.getDefault();
+
+        /*
+         * America/Caracs (Venezuela) changed the base offset from -4:00 to
+         * -4:30 on Dec 9, 2007.
+         */
+
+        TimeZone icuCaracas = TimeZone.getTimeZone("America/Caracas", TimeZone.TIMEZONE_ICU);
+        java.util.TimeZone jdkCaracas = java.util.TimeZone.getTimeZone("America/Caracas");
+
+        // Set JDK America/Caracas as the default
+        java.util.TimeZone.setDefault(jdkCaracas);
+
+        java.util.Calendar jdkCal = java.util.Calendar.getInstance();
+        jdkCal.clear();
+        jdkCal.set(2007, java.util.Calendar.JANUARY, 1);
+
+        int rawOffset = jdkCal.get(java.util.Calendar.ZONE_OFFSET);
+        int dstSavings = jdkCal.get(java.util.Calendar.DST_OFFSET);
+
+        int[] offsets = new int[2];
+        icuCaracas.getOffset(jdkCal.getTime().getTime()/*jdkCal.getTimeInMillis()*/, false, offsets);
+
+        boolean isTimeZoneSynchronized = true;
+
+        if (rawOffset != offsets[0] || dstSavings != offsets[1]) {
+            // JDK time zone rule is out of sync...
+            logln("Rule for JDK America/Caracas is not same with ICU.  Skipping the rest.");
+            isTimeZoneSynchronized = false;
+        }
+
+        if (isTimeZoneSynchronized) {
+            // If JDK America/Caracas uses the same rule with ICU,
+            // the following code should work well.
+            TimeZone.setDefault(icuCaracas);
+
+            // Create a new JDK calendar instance again.
+            // This calendar should reflect the new default
+            // set by ICU TimeZone#setDefault.
+            jdkCal = java.util.Calendar.getInstance();
+            jdkCal.clear();
+            jdkCal.set(2007, java.util.Calendar.JANUARY, 1);
+
+            rawOffset = jdkCal.get(java.util.Calendar.ZONE_OFFSET);
+            dstSavings = jdkCal.get(java.util.Calendar.DST_OFFSET);
+
+            if (rawOffset != offsets[0] || dstSavings != offsets[1]) {
+                errln("ERROR: Got offset [raw:" + rawOffset + "/dst:" + dstSavings
+                          + "] Expected [raw:" + offsets[0] + "/dst:" + offsets[1] + "]");
+            }
+        }
+
+        // Restore the original JDK time zone
+        java.util.TimeZone.setDefault(save);
+    }
+
+    /*
+     * Test Display Names, choosing zones and lcoales where there are multiple
+     * meta-zones defined.
+     */
+    public void TestDisplayNamesMeta() {
+        final Integer TZSHORT = new Integer(TimeZone.SHORT);
+        final Integer TZLONG = new Integer(TimeZone.LONG);
+
+        final Object[][] zoneDisplayTestData = {
+            //  zone id             locale  summer          format      expected display name
+            {"Europe/London",       "en",   Boolean.FALSE,  TZSHORT,    "GMT"},
+            {"Europe/London",       "en",   Boolean.FALSE,  TZLONG,     "Greenwich Mean Time"},
+            {"Europe/London",       "en",   Boolean.TRUE,   TZSHORT,    "GMT+01:00" /*"BST"*/},
+            {"Europe/London",       "en",   Boolean.TRUE,   TZLONG,     "British Summer Time"},
+
+            {"America/Anchorage",   "en",   Boolean.FALSE,  TZSHORT,    "AKST"},
+            {"America/Anchorage",   "en",   Boolean.FALSE,  TZLONG,     "Alaska Standard Time"},
+            {"America/Anchorage",   "en",   Boolean.TRUE,   TZSHORT,    "AKDT"},
+            {"America/Anchorage",   "en",   Boolean.TRUE,   TZLONG,     "Alaska Daylight Time"},
+
+            // Southern Hemisphere, all data from meta:Australia_Western
+            {"Australia/Perth",     "en",   Boolean.FALSE,  TZSHORT,    "GMT+08:00"/*"AWST"*/},
+            {"Australia/Perth",     "en",   Boolean.FALSE,  TZLONG,     "Australian Western Standard Time"},
+            {"Australia/Perth",     "en",   Boolean.TRUE,   TZSHORT,    "GMT+09:00"/*"AWDT"*/},
+            {"Australia/Perth",     "en",   Boolean.TRUE,   TZLONG,     "Australian Western Daylight Time"},
+
+            {"America/Sao_Paulo",   "en",   Boolean.FALSE,  TZSHORT,    "GMT-03:00"/*"BRT"*/},
+            {"America/Sao_Paulo",   "en",   Boolean.FALSE,  TZLONG,     "Brasilia Time"},
+            {"America/Sao_Paulo",   "en",   Boolean.TRUE,   TZSHORT,    "GMT-02:00"/*"BRST"*/},
+            {"America/Sao_Paulo",   "en",   Boolean.TRUE,   TZLONG,     "Brasilia Summer Time"},
+
+            // No Summer Time, but had it before 1983.
+            {"Pacific/Honolulu",    "en",   Boolean.FALSE,  TZSHORT,    "HST"},
+            {"Pacific/Honolulu",    "en",   Boolean.FALSE,  TZLONG,     "Hawaii-Aleutian Standard Time"},
+            {"Pacific/Honolulu",    "en",   Boolean.TRUE,   TZSHORT,    "HST"},
+            {"Pacific/Honolulu",    "en",   Boolean.TRUE,   TZLONG,     "Hawaii-Aleutian Standard Time"},
+
+            // Northern, has Summer, not commonly used.
+            {"Europe/Helsinki",     "en",   Boolean.FALSE,  TZSHORT,    "GMT+02:00"/*"EET"*/},
+            {"Europe/Helsinki",     "en",   Boolean.FALSE,  TZLONG,     "Eastern European Time"},
+            {"Europe/Helsinki",     "en",   Boolean.TRUE,   TZSHORT,    "GMT+03:00"/*"EEST"*/},
+            {"Europe/Helsinki",     "en",   Boolean.TRUE,   TZLONG,     "Eastern European Summer Time"},
+
+            // Repeating the test data for DST.  The test data below trigger the problem reported
+            // by Ticket#6644
+            {"Europe/London",       "en",   Boolean.TRUE,   TZSHORT,    "GMT+01:00" /*"BST"*/},
+            {"Europe/London",       "en",   Boolean.TRUE,   TZLONG,     "British Summer Time"},
+        };
+
+        boolean sawAnError = false;
+        for (int testNum = 0; testNum < zoneDisplayTestData.length; testNum++) {
+            ULocale locale = new ULocale((String)zoneDisplayTestData[testNum][1]);
+            TimeZone zone = TimeZone.getTimeZone((String)zoneDisplayTestData[testNum][0]);
+            String displayName = zone.getDisplayName(((Boolean)zoneDisplayTestData[testNum][2]).booleanValue(),
+                    ((Integer)zoneDisplayTestData[testNum][3]).intValue());
+            if (!displayName.equals(zoneDisplayTestData[testNum][4])) {
+                sawAnError = true;
+                errln("Incorrect time zone display name.  zone = "
+                        + zoneDisplayTestData[testNum][0] + ",\n"
+                        + "   locale = " + locale
+                        + ",   style = " + (zoneDisplayTestData[testNum][3] == TZSHORT ? "SHORT" : "LONG")
+                        + ",   Summertime = " + zoneDisplayTestData[testNum][2] + "\n"
+                        + "   Expected " + zoneDisplayTestData[testNum][4]
+                        + ",   Got " + displayName);
+            }
+        }
+        if (sawAnError) {
+            errln("Note: Errors could be the result of changes to zoneStrings locale data");
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java b/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
new file mode 100644
index 0000000..0336387
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
@@ -0,0 +1,271 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+
+
+
+/**
+ * @test
+ * @summary General test of CompoundTransliterator
+ */
+public class CompoundTransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CompoundTransliteratorTest().run(args);
+    }
+
+    public void TestConstruction(){
+        logln("Testing the construction of the compound Transliterator");
+        String names[]={"Greek-Latin", "Latin-Devanagari", "Devanagari-Latin", "Latin-Greek"};
+
+        try {
+            Transliterator.getInstance(names[0]);
+            Transliterator.getInstance(names[1]);
+            Transliterator.getInstance(names[2]);
+            Transliterator.getInstance(names[3]);
+        }catch(IllegalArgumentException ex) {
+            errln("FAIL: Transliterator construction failed" + ex.getMessage());
+            throw ex;
+        }
+  
+        final String IDs[]={
+            names[0], 
+            names[0]+";"+names[3], 
+            names[3]+";"+names[1]+";"+names[2], 
+            names[0]+";"+names[1]+";"+names[2]+";"+names[3] 
+        };
+
+   
+        for(int i=0; i<4; i++){
+            try{
+                Transliterator.getInstance(IDs[i]);
+            }catch(IllegalArgumentException ex1) {
+                errln("FAIL: construction using CompoundTransliterator(String ID) failed for " + IDs[i]);
+                throw ex1;
+            }
+
+            try{
+                Transliterator.getInstance(IDs[i], Transliterator.FORWARD);
+            }catch(IllegalArgumentException ex2) {
+                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=FORWARD) failed for " + IDs[i]);
+                throw ex2;
+            }
+
+            try{
+                Transliterator.getInstance(IDs[i], Transliterator.REVERSE);
+            }catch(IllegalArgumentException ex3) {
+                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=REVERSE) failed for " + IDs[i]);
+                throw ex3;
+            }
+
+//            try{
+//                CompoundTransliterator cpdtrans=new CompoundTransliterator(IDs[i], Transliterator.FORWARD, null);
+//                cpdtrans = null;
+//            }catch(IllegalArgumentException ex4) {
+//                errln("FAIL: construction using CompoundTransliterator(String ID, int direction=FORWARD," +
+//                        "UnicodeFilter adoptedFilter=0) failed for " + IDs[i]);
+//                throw ex4;
+//            }
+//  
+//       
+//            try{
+//                CompoundTransliterator cpdtrans2=new CompoundTransliterator(transarray[i], null);
+//                cpdtrans2 = null;
+//            }catch(IllegalArgumentException ex5) {
+//                errln("FAIL: Construction using CompoundTransliterator(Transliterator transliterators[]," +
+//                       "UnicodeFilter adoptedFilter = 0)  failed");
+//                throw ex5;
+//            }
+
+            
+        }
+   
+    }
+ 
+    public void TestGetTransliterator(){
+        logln("Testing the getTransliterator() API of CompoundTransliterator");
+        String ID="Latin-Greek;Greek-Latin;Latin-Devanagari;Devanagari-Latin;Latin-Cyrillic;Cyrillic-Latin;Any-Hex;Hex-Any";
+        Transliterator ct1=null;
+        try{
+            //ct1=new CompoundTransliterator(ID);
+            ct1 = Transliterator.getInstance(ID);
+        }catch(IllegalArgumentException iae) {
+            errln("CompoundTransliterator construction failed for ID=" + ID);
+            throw iae;
+        }
+        //int count=ct1.getCount();
+        Transliterator elems[] = ct1.getElements();
+        int count = elems.length;
+        String array[]=split(ID, ';');
+        if (count != array.length) {
+            errln("Error: getCount() failed. Expected:" + array.length + " got:" + count);
+        }
+        for(int i=0; i < count; i++){
+            //String child= ct1.getTransliterator(i).getID();
+            String child = elems[i].getID();
+            if(!child.equals(array[i])){
+                errln("Error getTransliterator() failed: Expected->" + array[i] + " Got->" + child);
+            }else {
+                logln("OK: getTransliterator() passed: Expected->" + array[i] + " Got->" + child);
+            }
+        }
+
+        
+    }
+ 
+       
+    public void TestTransliterate(){
+        logln("Testing the handleTransliterate() API of CompoundTransliterator");
+        Transliterator ct1=null;
+        try{
+            ct1=Transliterator.getInstance("Any-Hex;Hex-Any");
+        }catch(IllegalArgumentException iae){
+            errln("FAIL: construction using CompoundTransliterator(String ID) failed for " + "Any-Hex;Hex-Any");
+            throw iae;
+        }
+    
+        String s="abcabc";
+        expect(ct1, s, s);
+        Transliterator.Position index = new Transliterator.Position();
+        ReplaceableString rsource2=new ReplaceableString(s);
+        String expectedResult=s;
+        ct1.transliterate(rsource2, index);
+        ct1.finishTransliteration(rsource2, index);
+        String result=rsource2.toString();
+        expectAux(ct1.getID() + ":ReplaceableString, index(0,0,0,0)", s + "->" + rsource2, result.equals(expectedResult), expectedResult);
+     
+        Transliterator.Position index2 = new Transliterator.Position(1,3,2,3);
+        ReplaceableString rsource3=new ReplaceableString(s);
+        ct1.transliterate(rsource3, index2); 
+        ct1.finishTransliteration(rsource3, index2);
+        result=rsource3.toString();
+        expectAux(ct1.getID() + ":String, index2(1,2,2,3)", s + "->" + rsource3, result.equals(expectedResult), expectedResult);
+
+       
+        String Data[]={
+             //ID, input string, transliterated string
+             "Any-Hex;Hex-Any;Any-Hex",     "hello",  "\\u0068\\u0065\\u006C\\u006C\\u006F", 
+             "Any-Hex;Hex-Any",                 "hello! How are you?",  "hello! How are you?",
+             "Devanagari-Latin;Latin-Devanagari",       "\u092D\u0948'\u0930'\u0935",  "\u092D\u0948\u0930\u0935", // quotes lost
+             "Latin-Cyrillic;Cyrillic-Latin",           "a'b'k'd'e'f'g'h'i'j'Shch'shch'zh'h", "a'b'k'd'e'f'g'h'i'j'Shch'shch'zh'h",
+             "Latin-Greek;Greek-Latin",                 "ABGabgAKLMN", "ABGabgAKLMN",
+             //"Latin-Arabic;Arabic-Latin",               "Ad'r'a'b'i'k'dh'dd'gh", "Adrabikdhddgh",
+             "Hiragana-Katakana",                       "\u3041\u308f\u3099\u306e\u304b\u3092\u3099", 
+                                                                 "\u30A1\u30f7\u30ce\u30ab\u30fa",  
+             "Hiragana-Katakana;Katakana-Hiragana",     "\u3041\u308f\u3099\u306e\u304b\u3051", 
+                                                                 "\u3041\u308f\u3099\u306e\u304b\u3051",
+             "Katakana-Hiragana;Hiragana-Katakana",     "\u30A1\u30f7\u30ce\u30f5\u30f6", 
+                                                                 "\u30A1\u30f7\u30ce\u30ab\u30b1",  
+             "Latin-Katakana;Katakana-Latin",                   "vavivuvevohuzizuzoninunasesuzezu", 
+                                                                 "vavivuvevohuzizuzoninunasesuzezu",  
+        };
+        Transliterator ct2=null;
+        for(int i=0; i<Data.length; i+=3){
+            try{
+                ct2=Transliterator.getInstance(Data[i+0]);
+            }catch(IllegalArgumentException iae2){
+                errln("FAIL: CompoundTransliterator construction failed for " + Data[i+0]);
+                throw iae2;
+            }
+        expect(ct2, Data[i+1], Data[i+2]);
+        }
+   
+    }
+ 
+
+    //======================================================================
+    // Support methods
+    //======================================================================
+
+     /**
+     * Splits a string,
+    */
+    private static String[] split(String s, char divider) {
+      
+    // see how many there are
+        int count = 1;
+    for (int i = 0; i < s.length(); ++i) {
+       if (s.charAt(i) == divider) ++count;
+    }
+        
+    // make an array with them
+    String[] result = new String[count];
+    int last = 0;
+    int current = 0;
+    int i;
+    for (i = 0; i < s.length(); ++i) {
+        if (s.charAt(i) == divider) {
+            result[current++] = s.substring(last,i);
+            last = i+1;
+        }
+    }
+    result[current++] = s.substring(last,i);
+    return result;
+    }
+
+    private void expect(Transliterator t, String source, String expectedResult) {
+        String result = t.transliterate(source);
+        expectAux(t.getID() + ":String", source, result, expectedResult);
+
+        ReplaceableString rsource = new ReplaceableString(source);
+        t.transliterate(rsource);
+        result = rsource.toString();
+        expectAux(t.getID() + ":Replaceable", source, result, expectedResult);
+
+        // Test keyboard (incremental) transliteration -- this result
+        // must be the same after we finalize (see below).
+        rsource.replace(0, rsource.length(), "");
+        Transliterator.Position index = new Transliterator.Position();
+        StringBuffer log = new StringBuffer();
+
+        for (int i=0; i<source.length(); ++i) {
+            if (i != 0) {
+                log.append(" + ");
+            }
+            log.append(source.charAt(i)).append(" -> ");
+            t.transliterate(rsource, index,
+                            String.valueOf(source.charAt(i)));
+            // Append the string buffer with a vertical bar '|' where
+            // the committed index is.
+            String s = rsource.toString();
+            log.append(s.substring(0, index.start)).
+                append('|').
+                append(s.substring(index.start));
+        }
+        
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        log.append(" => ").append(rsource.toString());
+        expectAux(t.getID() + ":Keyboard", log.toString(),
+                 result.equals(expectedResult),
+                 expectedResult);
+
+    }
+    private void expectAux(String tag, String source,
+                  String result, String expectedResult) {
+        expectAux(tag, source + " -> " + result,
+                 result.equals(expectedResult),
+                 expectedResult);
+    }
+
+    private void expectAux(String tag, String summary, boolean pass, String expectedResult) {
+        if (pass) {
+            logln("(" + tag + ") " + Utility.escape(summary));
+        } else {
+            errln("FAIL: (" + tag+ ") "
+                + Utility.escape(summary)
+                + ", expected " + Utility.escape(expectedResult));
+        }
+    }  
+}
+
diff --git a/src/com/ibm/icu/dev/test/translit/ErrorTest.java b/src/com/ibm/icu/dev/test/translit/ErrorTest.java
new file mode 100644
index 0000000..65ed819
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/ErrorTest.java
@@ -0,0 +1,241 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+
+/**
+ * @test
+ * @summary Error condition test of Transliterator
+ */
+public class ErrorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new ErrorTest().run(args);
+    }
+
+    public void TestTransliteratorErrors() {
+        String trans = "Latin-Greek";
+        String bogusID = "LATINGREEK-GREEKLATIN";
+        String newID = "Bogus-Latin";
+        String newIDRules = "zzz > Z; f <> ph";
+        String bogusRules = "a } [b-g m-p ";
+        ReplaceableString testString =
+            new ReplaceableString("A quick fox jumped over the lazy dog.");
+        String insertString = "cats and dogs";
+        int stoppedAt = 0, len;
+        Transliterator.Position pos = new Transliterator.Position();
+
+        Transliterator t =
+            Transliterator.getInstance(trans, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: construction of Latin-Greek");
+            return;
+        }
+        len = testString.length();
+        stoppedAt = t.transliterate(testString, 0, 100);
+        if (stoppedAt != -1) {
+            errln("FAIL: Out of bounds check failed (1).");
+        } else if (testString.length() != len) {
+            testString =
+                new ReplaceableString("A quick fox jumped over the lazy dog.");
+            errln("FAIL: Transliterate fails and the target string was modified.");
+        }
+        stoppedAt = t.transliterate(testString, 100, testString.length() - 1);
+        if (stoppedAt != -1) {
+            errln("FAIL: Out of bounds check failed (2).");
+        } else if (testString.length() != len) {
+            testString =
+                new ReplaceableString("A quick fox jumped over the lazy dog.");
+            errln("FAIL: Transliterate fails and the target string was modified.");
+        }
+        pos.start = 100;
+        pos.limit = testString.length();
+        try {
+            t.transliterate(testString, pos);
+            errln("FAIL: Start offset is out of bounds, error not reported.");
+        } catch (IllegalArgumentException e) {
+            logln("Start offset is out of bounds and detected.");
+        }
+        pos.limit = 100;
+        pos.start = 0;
+
+        try {
+            t.transliterate(testString, pos);
+            errln("FAIL: Limit offset is out of bounds, error not reported.\n");
+        } catch (IllegalArgumentException e) {
+            logln("Start offset is out of bounds and detected.");
+        }
+        len = pos.contextLimit = testString.length();
+        pos.contextStart = 0;
+        pos.limit = len - 1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, insertString);
+            if (len == pos.limit) {
+                errln("FAIL: Test insertion with string: the transliteration position limit didn't change as expected.");
+            }
+        } catch (IllegalArgumentException e) {
+            errln("Insertion test with string failed for some reason.");
+        }
+        pos.contextStart = 0;
+        pos.contextLimit = testString.length();
+        pos.limit = testString.length() - 1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, 0x0061);
+            if (len == pos.limit) {
+                errln("FAIL: Test insertion with character: the transliteration position limit didn't change as expected.");
+            }
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: Insertion test with UTF-16 code point failed for some reason.");
+        }
+        len = pos.limit = testString.length();
+        pos.contextStart = 0;
+        pos.contextLimit = testString.length() - 1;
+        pos.start = 5;
+        try {
+            t.transliterate(testString, pos, insertString);
+            errln("FAIL: Out of bounds check failed (3).");
+            if (testString.length() != len) {
+                errln("FAIL: The input string was modified though the offsets were out of bounds.");
+            }
+        } catch (IllegalArgumentException e) {
+            logln("Insertion test with out of bounds indexes.");
+        }
+        Transliterator t1 = null;
+        try {
+            t1 = Transliterator.getInstance(bogusID, Transliterator.FORWARD);
+            if (t1 != null) {
+                errln("FAIL: construction of bogus ID \"LATINGREEK-GREEKLATIN\"");
+            }
+        } catch (IllegalArgumentException e) {
+        }
+
+        //try { // unneeded - Exception cannot be thrown
+        Transliterator t2 =
+            Transliterator.createFromRules(
+                newID,
+                newIDRules,
+                Transliterator.FORWARD);
+        try {
+            Transliterator t3 = t2.getInverse();
+            errln("FAIL: The newID transliterator was not registered so createInverse should fail.");
+            if (t3 != null) {
+                errln("FAIL: The newID transliterator was not registered so createInverse should fail.");
+            }
+        } catch (Exception e) {
+        }
+        //} catch (Exception e) { }
+        try {
+            Transliterator t4 =
+                Transliterator.createFromRules(
+                    newID,
+                    bogusRules,
+                    Transliterator.FORWARD);
+            if (t4 != null) {
+                errln("FAIL: The rules is malformed but error was not reported.");
+            }
+        } catch (Exception e) {
+        }
+    }
+
+    public void TestUnicodeSetErrors() {
+        String badPattern = "[[:L:]-[0x0300-0x0400]";
+        UnicodeSet set = new UnicodeSet();
+        //String result;
+
+        if (!set.isEmpty()) {
+            errln("FAIL: The default ctor of UnicodeSet created a non-empty object.");
+        }
+        try {
+            set.applyPattern(badPattern);
+            errln("FAIL: Applied a bad pattern to the UnicodeSet object okay.");
+        } catch (IllegalArgumentException e) {
+            logln("Test applying with the bad pattern.");
+        }
+        try {
+            new UnicodeSet(badPattern);
+            errln("FAIL: Created a UnicodeSet based on bad patterns.");
+        } catch (IllegalArgumentException e) {
+            logln("Test constructing with the bad pattern.");
+        }
+    }
+
+//    public void TestUniToHexErrors() {
+//        Transliterator t = null;
+//        try {
+//            t = new UnicodeToHexTransliterator("", true, null);
+//            if (t != null) {
+//                errln("FAIL: Created a UnicodeToHexTransliterator with an empty pattern.");
+//            }
+//        } catch (IllegalArgumentException e) {
+//        }
+//        try {
+//            t = new UnicodeToHexTransliterator("\\x", true, null);
+//            if (t != null) {
+//                errln("FAIL: Created a UnicodeToHexTransliterator with a bad pattern.");
+//            }
+//        } catch (IllegalArgumentException e) {
+//        }
+//        t = new UnicodeToHexTransliterator();
+//        try {
+//            ((UnicodeToHexTransliterator) t).applyPattern("\\x");
+//            errln("FAIL: UnicodeToHexTransliterator::applyPattern succeeded with a bad pattern.");
+//        } catch (Exception e) {
+//        }
+//    }
+
+    public void TestRBTErrors() {
+
+        String rules = "ab>y";
+        String id = "MyRandom-YReverse";
+        String goodPattern = "[[:L:]&[\\u0000-\\uFFFF]]"; /* all BMP letters */
+        UnicodeSet set = null;
+        try {
+            set = new UnicodeSet(goodPattern);
+            try {
+                Transliterator t =
+                    Transliterator.createFromRules(id, rules, Transliterator.REVERSE);
+                t.setFilter(set);
+                Transliterator.registerClass(id, t.getClass(), null);
+                Transliterator.unregister(id);
+                try {
+                    Transliterator.getInstance(id, Transliterator.REVERSE);
+                    errln("FAIL: construction of unregistered ID should have failed.");
+                } catch (IllegalArgumentException e) {
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: Was not able to create a good RBT to test registration.");
+            }
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: Was not able to create a good UnicodeSet based on valid patterns.");
+            return;
+        }
+    }
+
+//    public void TestHexToUniErrors() {
+//        Transliterator t = null;
+//        //try { // unneeded - exception cannot be thrown
+//        t = new HexToUnicodeTransliterator("", null);
+//        //} catch (Exception e) {
+//        //    errln("FAIL: Could not create a HexToUnicodeTransliterator with an empty pattern.");
+//        //}
+//        try {
+//            t = new HexToUnicodeTransliterator("\\x", null);
+//            errln("FAIL: Created a HexToUnicodeTransliterator with a bad pattern.");
+//        } catch (IllegalArgumentException e) {
+//        }
+//
+//        t = new HexToUnicodeTransliterator();
+//        try {
+//            ((HexToUnicodeTransliterator) t).applyPattern("\\x");
+//            errln("FAIL: HexToUnicodeTransliterator::applyPattern succeeded with a bad pattern.");
+//        } catch (IllegalArgumentException e) {
+//        }
+//    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/JamoTest.java b/src/com/ibm/icu/dev/test/translit/JamoTest.java
new file mode 100644
index 0000000..462f73f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/JamoTest.java
@@ -0,0 +1,509 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.util.*;
+
+/**
+ * @test
+ * @summary Test the Latin-Jamo transliterator
+ */
+public class JamoTest extends TransliteratorTest {
+
+    public static void main(String[] args) throws Exception {
+        new JamoTest().run(args);
+    }
+
+    public void TestJamo() {
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+
+        String[] CASE = {
+            // Column 1 is the latin text L1 to be fed to Latin-Jamo
+            // to yield output J.
+
+            // Column 2 is expected value of J.  J is fed to
+            // Jamo-Latin to yield output L2.
+
+            // Column 3 is expected value of L2.  If the expected
+            // value of L2 is L1, then L2 is null.
+ 
+                // add tests for the update to fix problems where it didn't follow the standard
+                // see also http://www.unicode.org/cldr/data/charts/transforms/Latin-Hangul.html
+                "gach", "(Gi)(A)(Cf)", null,
+                "geumhui", "(Gi)(EU)(Mf)(Hi)(YI)", null,
+                "choe", "(Ci)(OE)", null,
+                "wo", "(IEUNG)(WEO)", null,
+                "Wonpil", "(IEUNG)(WEO)(Nf)(Pi)(I)(L)", "wonpil",
+                "GIPPEUM", "(Gi)(I)(BB)(EU)(Mf)", "gippeum",
+                "EUTTEUM", "(IEUNG)(EU)(DD)(EU)(Mf)", "eutteum",
+                "KKOTNAE", "(GGi)(O)(Tf)(Ni)(AE)", "kkotnae",
+                "gaga", "(Gi)(A)(Gi)(A)", null,
+                "gag-a", "(Gi)(A)(Gf)(IEUNG)(A)", null,
+                "gak-ka", "(Gi)(A)(Kf)(Ki)(A)", null,
+                "gakka", "(Gi)(A)(GGi)(A)", null,
+                "gakk-a", "(Gi)(A)(GGf)(IEUNG)(A)", null,
+                "gakkka", "(Gi)(A)(GGf)(Ki)(A)", null,
+                "gak-kka", "(Gi)(A)(Kf)(GGi)(A)", null,
+
+            "bab", "(Bi)(A)(Bf)", null,
+            "babb", "(Bi)(A)(Bf)(Bi)(EU)", "babbeu",
+            "babbba", "(Bi)(A)(Bf)(Bi)(EU)(Bi)(A)", "babbeuba",
+            "bagg", "(Bi)(A)(Gf)(Gi)(EU)", "baggeu",
+            "baggga", "(Bi)(A)(Gf)(Gi)(EU)(Gi)(A)", "baggeuga",
+            //"bag"+SEP+"gga", "(Bi)(A)(Gf)"+SEP+"(Gi)(EU)(Gi)(A)", "bag"+SEP+"geuga",
+            "kabsa", "(Ki)(A)(Bf)(Si)(A)", null,
+            "kabska", "(Ki)(A)(BS)(Ki)(A)", null,
+            "gabsbka", "(Gi)(A)(BS)(Bi)(EU)(Ki)(A)", "gabsbeuka", // not (Kf)
+            "gga", "(Gi)(EU)(Gi)(A)", "geuga",
+            "bsa", "(Bi)(EU)(Si)(A)", "beusa",
+            "agg", "(IEUNG)(A)(Gf)(Gi)(EU)", "aggeu",
+            "agga", "(IEUNG)(A)(Gf)(Gi)(A)", null,
+            "la", "(R)(A)", null,
+            "bs", "(Bi)(EU)(Sf)", "beus",
+            "kalgga", "(Ki)(A)(L)(Gi)(EU)(Gi)(A)", "kalgeuga",
+
+            // 'r' in a final position is treated like 'l'
+            "karka", "(Ki)(A)(L)(Ki)(A)", "kalka",
+            
+        };
+
+        for (int i=0; i<CASE.length; i+=3) {
+            String jamo = nameToJamo(CASE[i+1]);
+            if (CASE[i+2] == null) {
+                expect(latinJamo, CASE[i], jamo, jamoLatin);
+            } else {
+                // Handle case where round-trip is expected to fail
+                expect(latinJamo, CASE[i], jamo);
+                expect(jamoLatin, jamo, CASE[i+2]);
+            }
+        }
+    }
+
+    /**
+     * These are problems turned up by the Hangul-Jamo;Jamo-Latin
+     * round trip test.
+     */
+    public void TestRoundTrip() {
+        String HANGUL[] = { "\uAC03\uC2F8",
+                            "\uC544\uC5B4"};
+        
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+        Transliterator jamoHangul = Transliterator.getInstance("NFC");
+        Transliterator hangulJamo = Transliterator.getInstance("NFD");
+
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<HANGUL.length; ++i) {
+            String hangul = HANGUL[i];
+            String jamo = hangulJamo.transliterate(hangul);
+            String latin = jamoLatin.transliterate(jamo);
+            String jamo2 = latinJamo.transliterate(latin);
+            String hangul2 = jamoHangul.transliterate(jamo2);
+            buf.setLength(0);
+            buf.append(hangul + " => " +
+                       jamoToName(jamo) + " => " +
+                       latin + " => " + jamoToName(jamo2)
+                       + " => " + hangul2
+                       );
+            if (!hangul.equals(hangul2)) {
+                errln("FAIL: " + Utility.escape(buf.toString()));
+            } else {
+                logln(Utility.escape(buf.toString()));
+            }
+        }
+    }
+
+    /**
+     * Test various step-at-a-time transformation of hangul to jamo to
+     * latin and back.
+     */
+    public void TestPiecemeal() {
+        String hangul = "\uBC0F";
+        String jamo = nameToJamo("(Mi)(I)(Cf)");
+        String latin = "mic";
+        String latin2 = "mich";
+
+        Transliterator t = null;
+
+        t = Transliterator.getInstance("NFD"); // was Hangul-Jamo
+        expect(t, hangul, jamo);
+
+        t = Transliterator.getInstance("NFC"); // was Jamo-Hangul
+        expect(t, jamo, hangul);
+
+        t = Transliterator.getInstance("Latin-Jamo");
+        expect(t, latin, jamo);
+
+        t = Transliterator.getInstance("Jamo-Latin");
+        expect(t, jamo, latin2);
+
+        t = Transliterator.getInstance("Hangul-Latin");
+        expect(t, hangul, latin2);
+
+        t = Transliterator.getInstance("Latin-Hangul");
+        expect(t, latin, hangul);
+
+        t = Transliterator.getInstance("Hangul-Latin; Latin-Jamo");
+        expect(t, hangul, jamo);
+
+        t = Transliterator.getInstance("Jamo-Latin; Latin-Hangul");
+        expect(t, jamo, hangul);
+
+        t = Transliterator.getInstance("Hangul-Latin; Latin-Hangul");
+        expect(t, hangul, hangul);
+    }
+
+    public void TestRealText() {
+        Transliterator latinJamo = Transliterator.getInstance("Latin-Jamo");
+        Transliterator jamoLatin = latinJamo.getInverse();
+        Transliterator jamoHangul = Transliterator.getInstance("NFC");
+        Transliterator hangulJamo = Transliterator.getInstance("NFD");
+        //Transliterator rt = new CompoundTransliterator(new Transliterator[] {
+        //    hangulJamo, jamoLatin, latinJamo, jamoHangul });
+        Transliterator rt = Transliterator.getInstance("NFD;Jamo-Latin;Latin-Jamo;NFC");
+
+        int pos = 0;
+        StringBuffer buf = new StringBuffer();
+        int total = 0;
+        int errors = 0;
+        while (pos < WHAT_IS_UNICODE.length()) {
+            int space = WHAT_IS_UNICODE.indexOf(' ', pos+1);
+            if (space < 0) {
+                space = WHAT_IS_UNICODE.length();
+            }
+            if (pos < space) {
+                ++total;
+                String hangul = WHAT_IS_UNICODE.substring(pos, space);
+                String hangulX = rt.transliterate(hangul);
+                if (!hangul.equals(hangulX)) {
+                    ++errors;
+                    String jamo = hangulJamo.transliterate(hangul);
+                    String latin = jamoLatin.transliterate(jamo);
+                    String jamo2 = latinJamo.transliterate(latin);
+                    String hangul2 = jamoHangul.transliterate(jamo2);
+                    if (hangul.equals(hangul2)) {
+                        buf.setLength(0);
+                        buf.append("FAIL (Compound transliterator problem): ");
+                        buf.append(hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   + " => " + hangul2 +
+                                   "; but " + hangul + " =cpd=> " + jamoToName(hangulX)
+                                   );
+                        errln(Utility.escape(buf.toString()));                        
+                    } else if (jamo.equals(jamo2)) {
+                        buf.setLength(0);
+                        buf.append("FAIL (Jamo<>Hangul problem): ");
+                        if (!hangul2.equals(hangulX)) {
+                            buf.append("(Weird: " + hangulX + " != " + hangul2 + ")");
+                        }
+                        buf.append(hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   + " => " + hangul2
+                                   );
+                        errln(Utility.escape(buf.toString()));                        
+                    } else {
+                        buf.setLength(0);
+                        buf.append("FAIL: ");
+                        if (!hangul2.equals(hangulX)) {
+                            buf.append("(Weird: " + hangulX + " != " + hangul2 + ")");
+                        }
+                        // The Hangul-Jamo conversion is not usually the
+                        // bug here, so we hide it from display.
+                        // Uncomment lines to see the Hangul.
+                        buf.append(//hangul + " => " +
+                                   jamoToName(jamo) + " => " +
+                                   latin + " => " + jamoToName(jamo2)
+                                   //+ " => " + hangul2
+                                   );
+                        errln(Utility.escape(buf.toString()));
+                    }
+                }
+            }
+            pos = space+1;
+        }
+        if (errors != 0) {
+            errln("Test word failures: " + errors + " out of " + total);
+        } else {
+            logln("All " + total + " test words passed");
+        }
+    }
+
+    // Test text taken from the Unicode web site
+    static final String WHAT_IS_UNICODE =
+
+        "\uc720\ub2c8\ucf54\ub4dc\uc5d0 \ub300\ud574 ? " +
+
+        "\uc5b4\ub5a4 \ud50c\ub7ab\ud3fc, \uc5b4\ub5a4 " +
+        "\ud504\ub85c\uadf8\ub7a8, \uc5b4\ub5a4 \uc5b8\uc5b4\uc5d0\ub3c4 " +
+        "\uc0c1\uad00\uc5c6\uc774 \uc720\ub2c8\ucf54\ub4dc\ub294 \ubaa8\ub4e0 " +
+        "\ubb38\uc790\uc5d0 \ub300\ud574 \uace0\uc720 \ubc88\ud638\ub97c " +
+        "\uc81c\uacf5\ud569\ub2c8\ub2e4. " +
+        
+        "\uae30\ubcf8\uc801\uc73c\ub85c \ucef4\ud4e8\ud130\ub294 " +
+        "\uc22b\uc790\ub9cc \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uae00\uc790\ub098 " +
+        "\ub2e4\ub978 \ubb38\uc790\uc5d0\ub3c4 \uc22b\uc790\ub97c " +
+        "\uc9c0\uc815\ud558\uc5ec " +
+        "\uc800\uc7a5\ud569\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\uac00 " +
+        "\uac1c\ubc1c\ub418\uae30 \uc804\uc5d0\ub294 \uc774\ub7ec\ud55c " +
+        "\uc22b\uc790\ub97c \uc9c0\uc815\ud558\uae30 \uc704\ud574 \uc218\ubc31 " +
+        "\uac00\uc9c0\uc758 \ub2e4\ub978 \uae30\ud638\ud654 " +
+        "\uc2dc\uc2a4\ud15c\uc744 " +
+        "\uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \ub2e8\uc77c \uae30\ud638\ud654 " +
+        "\ubc29\ubc95\uc73c\ub85c\ub294 \ubaa8\ub4e0 \ubb38\uc790\ub97c " +
+        "\ud3ec\ud568\ud560 \uc218 \uc5c6\uc5c8\uc2b5\ub2c8\ub2e4. \uc608\ub97c " +
+        "\ub4e4\uc5b4 \uc720\ub7fd \uc5f0\ud569\uc5d0\uc11c\ub9cc " +
+        "\ubcf4\ub354\ub77c\ub3c4 \ubaa8\ub4e0 \uac01 \ub098\ub77c\ubcc4 " +
+        "\uc5b8\uc5b4\ub97c \ucc98\ub9ac\ud558\ub824\uba74 \uc5ec\ub7ec " +
+        "\uac1c\uc758 \ub2e4\ub978 \uae30\ud638\ud654 \ubc29\ubc95\uc774 " +
+        "\ud544\uc694\ud569\ub2c8\ub2e4. \uc601\uc5b4\uc640 \uac19\uc740 " +
+        "\ub2e8\uc77c \uc5b8\uc5b4\uc758 \uacbd\uc6b0\ub3c4 " +
+        "\uacf5\ud1b5\uc801\uc73c\ub85c \uc0ac\uc6a9\ub418\ub294 \ubaa8\ub4e0 " +
+        "\uae00\uc790, \ubb38\uc7a5 \ubd80\ud638 \ubc0f " +
+        "\ud14c\ud06c\ub2c8\uceec \uae30\ud638\uc5d0 \ub9de\ub294 \ub2e8\uc77c " +
+        "\uae30\ud638\ud654 \ubc29\ubc95\uc744 \uac16\uace0 \uc788\uc9c0 " +
+        "\ubabb\ud558\uc600\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc774\ub7ec\ud55c \uae30\ud638\ud654 \uc2dc\uc2a4\ud15c\uc740 " +
+        "\ub610\ud55c \ub2e4\ub978 \uae30\ud638\ud654 \uc2dc\uc2a4\ud15c\uacfc " +
+        "\ucda9\ub3cc\ud569\ub2c8\ub2e4. \uc989 \ub450 \uac00\uc9c0 " +
+        "\uae30\ud638\ud654 \ubc29\ubc95\uc774 \ub450 \uac1c\uc758 \ub2e4\ub978 " +
+        "\ubb38\uc790\uc5d0 \ub300\ud574 \uac19\uc740 \ubc88\ud638\ub97c " +
+        "\uc0ac\uc6a9\ud558\uac70\ub098 \uac19\uc740 \ubb38\uc790\uc5d0 " +
+        "\ub300\ud574 \ub2e4\ub978 \ubc88\ud638\ub97c \uc0ac\uc6a9\ud560 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. \uc8fc\uc5b4\uc9c4 \ubaa8\ub4e0 " +
+        "\ucef4\ud4e8\ud130(\ud2b9\ud788 \uc11c\ubc84)\ub294 \uc11c\ub85c " +
+        "\ub2e4\ub978 \uc5ec\ub7ec \uac00\uc9c0 \uae30\ud638\ud654 " +
+        "\ubc29\ubc95\uc744 \uc9c0\uc6d0\ud574\uc57c " +
+        "\ud569\ub2c8\ub2e4. \uadf8\ub7ec\ub098, \ub370\uc774\ud130\ub97c " +
+        "\uc11c\ub85c \ub2e4\ub978 \uae30\ud638\ud654 \ubc29\ubc95\uc774\ub098 " +
+        "\ud50c\ub7ab\ud3fc \uac04\uc5d0 \uc804\ub2ec\ud560 \ub54c\ub9c8\ub2e4 " +
+        "\uadf8 \ub370\uc774\ud130\ub294 \ud56d\uc0c1 \uc190\uc0c1\uc758 " +
+        "\uc704\ud5d8\uc744 \uacaa\uac8c \ub429\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc\ub85c \ubaa8\ub4e0 \uac83\uc744 " +
+        "\ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4! " +
+        "\uc720\ub2c8\ucf54\ub4dc\ub294 \uc0ac\uc6a9 \uc911\uc778 " +
+        "\ud50c\ub7ab\ud3fc, \ud504\ub85c\uadf8\ub7a8, \uc5b8\uc5b4\uc5d0 " +
+        "\uad00\uacc4\uc5c6\uc774 \ubb38\uc790\ub9c8\ub2e4 \uace0\uc720\ud55c " +
+        "\uc22b\uc790\ub97c " +
+        "\uc81c\uacf5\ud569\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ud45c\uc900\uc740 " + // "Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, " +
+        // "Sun, Sybase, Unisys " + 
+        "\ubc0f \uae30\ud0c0 \uc5ec\ub7ec " +
+        "\ud68c\uc0ac\uc640 \uac19\uc740 \uc5c5\uacc4 " +
+        "\uc120\ub450\uc8fc\uc790\uc5d0 \uc758\ud574 " +
+        "\ucc44\ud0dd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\ub294 " +
+        // "XML, Java, ECMAScript(JavaScript), LDAP, CORBA 3.0, WML " +
+        "\ub4f1\uacfc " +
+        "\uac19\uc774 \ud604\uc7ac \ub110\ub9ac \uc0ac\uc6a9\ub418\ub294 " +
+        "\ud45c\uc900\uc5d0\uc11c \ud544\uc694\ud558\uba70 \uc774\ub294 " + //ISO/IEC " +
+        "10646\uc744 \uad6c\ud604\ud558\ub294 \uacf5\uc2dd\uc801\uc778 " +
+        "\ubc29\ubc95\uc785\ub2c8\ub2e4. \uc774\ub294 \ub9ce\uc740 \uc6b4\uc601 " +
+        "\uccb4\uc81c, \uc694\uc998 \uc0ac\uc6a9\ub418\ub294 \ubaa8\ub4e0 " +
+        "\ube0c\ub77c\uc6b0\uc800 \ubc0f \uae30\ud0c0 \ub9ce\uc740 " +
+        "\uc81c\ud488\uc5d0\uc11c " +
+        "\uc9c0\uc6d0\ub429\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ud45c\uc900\uc758 \ubd80\uc0c1\uacfc \uc774\ub97c " +
+        "\uc9c0\uc6d0\ud558\ub294 \ub3c4\uad6c\uc758 \uac00\uc6a9\uc131\uc740 " +
+        "\ucd5c\uadfc \uc804 \uc138\uacc4\uc5d0 \ubd88\uace0 \uc788\ub294 " +
+        "\uae30\uc220 \uacbd\ud5a5\uc5d0\uc11c \uac00\uc7a5 \uc911\uc694\ud55c " +
+        "\ubd80\ubd84\uc744 \ucc28\uc9c0\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc\ub97c " +
+// Replaced a hyphen with a space to make the test case work with CLDR1.5
+//        "\ud074\ub77c\uc774\uc5b8\ud2b8-\uc11c\ubc84 \ub610\ub294 " +
+        "\ud074\ub77c\uc774\uc5b8\ud2b8 \uc11c\ubc84 \ub610\ub294 " +
+// Replaced a hyphen with a space.
+//        "\ub2e4\uc911-\uc5f0\uacb0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uacfc " +
+        "\ub2e4\uc911 \uc5f0\uacb0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uacfc " +
+        "\uc6f9 \uc0ac\uc774\ud2b8\uc5d0 \ud1b5\ud569\ud558\uba74 " +
+        "\ub808\uac70\uc2dc \ubb38\uc790 \uc138\ud2b8 \uc0ac\uc6a9\uc5d0 " +
+        "\uc788\uc5b4\uc11c \uc0c1\ub2f9\ud55c \ube44\uc6a9 \uc808\uac10 " +
+        "\ud6a8\uacfc\uac00 " +
+        "\ub098\ud0c0\ub0a9\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc\ub97c " +
+        "\ud1b5\ud574 \ub9ac\uc5d4\uc9c0\ub2c8\uc5b4\ub9c1 \uc5c6\uc774 " +
+        "\ub2e4\uc911 \ud50c\ub7ab\ud3fc, \uc5b8\uc5b4 \ubc0f \uad6d\uac00 " +
+        "\uac04\uc5d0 \ub2e8\uc77c \uc18c\ud504\ud2b8\uc6e8\uc5b4 " +
+        "\ud50c\ub7ab\ud3fc \ub610\ub294 \ub2e8\uc77c \uc6f9 " +
+        "\uc0ac\uc774\ud2b8\ub97c \ubaa9\ud45c\ub85c \uc0bc\uc744 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc0ac\uc6a9\ud558\uba74 " +
+        "\ub370\uc774\ud130\ub97c \uc190\uc0c1 \uc5c6\uc774 \uc5ec\ub7ec " +
+        "\uc2dc\uc2a4\ud15c\uc744 \ud1b5\ud574 \uc804\uc1a1\ud560 \uc218 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\uc720\ub2c8\ucf54\ub4dc \ucf58\uc18c\uc2dc\uc5c4\uc5d0 \ub300\ud574 " +
+        "\uc720\ub2c8\ucf54\ub4dc \ucf58\uc18c\uc2dc\uc5c4\uc740 " +
+        "\ube44\uc601\ub9ac \uc870\uc9c1\uc73c\ub85c\uc11c \ud604\ub300 " +
+        "\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc81c\ud488\uacfc " +
+        "\ud45c\uc900\uc5d0\uc11c \ud14d\uc2a4\ud2b8\uc758 \ud45c\ud604\uc744 " +
+        "\uc9c0\uc815\ud558\ub294 \uc720\ub2c8\ucf54\ub4dc \ud45c\uc900\uc758 " +
+        "\uc0ac\uc6a9\uc744 \uac1c\ubc1c\ud558\uace0 \ud655\uc7a5\ud558\uba70 " +
+        "\uc7a5\ub824\ud558\uae30 \uc704\ud574 " +
+        "\uc138\uc6cc\uc84c\uc2b5\ub2c8\ub2e4. \ucf58\uc18c\uc2dc\uc5c4 " +
+        "\uba64\ubc84\uc27d\uc740 \ucef4\ud4e8\ud130\uc640 \uc815\ubcf4 " +
+        "\ucc98\ub9ac \uc0b0\uc5c5\uc5d0 \uc885\uc0ac\ud558\uace0 \uc788\ub294 " +
+        "\uad11\ubc94\uc704\ud55c \ud68c\uc0ac \ubc0f \uc870\uc9c1\uc758 " +
+        "\ubc94\uc704\ub97c " +
+        "\ub098\ud0c0\ub0c5\ub2c8\ub2e4. \ucf58\uc18c\uc2dc\uc5c4\uc758 " +
+        "\uc7ac\uc815\uc740 \uc804\uc801\uc73c\ub85c \ud68c\ube44\uc5d0 " +
+        "\uc758\ud574 \ucda9\ub2f9\ub429\ub2c8\ub2e4. \uc720\ub2c8\ucf54\ub4dc " +
+        "\ucee8\uc18c\uc2dc\uc5c4\uc5d0\uc11c\uc758 \uba64\ubc84\uc27d\uc740 " +
+        "\uc804 \uc138\uacc4 \uc5b4\ub290 \uacf3\uc5d0\uc11c\ub098 " +
+        "\uc720\ub2c8\ucf54\ub4dc \ud45c\uc900\uc744 \uc9c0\uc6d0\ud558\uace0 " +
+        "\uadf8 \ud655\uc7a5\uacfc \uad6c\ud604\uc744 " +
+        "\uc9c0\uc6d0\ud558\uace0\uc790\ud558\ub294 \uc870\uc9c1\uacfc " +
+        "\uac1c\uc778\uc5d0\uac8c \uac1c\ubc29\ub418\uc5b4 " +
+        "\uc788\uc2b5\ub2c8\ub2e4. " +
+        
+        "\ub354 \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc6a9\uc5b4\uc9d1, " +
+        "\uc608\uc81c \uc720\ub2c8\ucf54\ub4dc \uc0ac\uc6a9 \uac00\ub2a5 " +
+        "\uc81c\ud488, \uae30\uc220 \uc815\ubcf4 \ubc0f \uae30\ud0c0 " +
+        "\uc720\uc6a9\ud55c \uc815\ubcf4\ub97c " +
+        "\ucc38\uc870\ud558\uc2ed\uc2dc\uc624.";
+
+    // TransliteratorTest override
+    boolean expectAux(String tag, String summary, boolean pass,
+                   String expectedResult) {
+        return super.expectAux(tag, jamoToName(summary),
+                        pass, jamoToName(expectedResult));
+    }
+
+    // UTILITIES
+
+    // Note: The following could more easily be done with a transliterator!
+    static final String[] JAMO_NAMES = {
+        "(Gi)", "\u1100",
+        "(GGi)", "\u1101",
+        "(Ni)", "\u1102",
+        "(Di)", "\u1103",
+        "(DD)", "\u1104",
+        "(R)", "\u1105",
+        "(Mi)", "\u1106",
+        "(Bi)", "\u1107",
+        "(BB)", "\u1108",
+        "(Si)", "\u1109",
+        "(SSi)", "\u110A",
+        "(IEUNG)", "\u110B",
+        "(Ji)", "\u110C",
+        "(JJ)", "\u110D",
+        "(Ci)", "\u110E",
+        "(Ki)", "\u110F",
+        "(Ti)", "\u1110",
+        "(Pi)", "\u1111",
+        "(Hi)", "\u1112",
+        
+        "(A)", "\u1161",
+        "(AE)", "\u1162",
+        "(YA)", "\u1163",
+        "(YAE)", "\u1164",
+        "(EO)", "\u1165",
+        "(E)", "\u1166",
+        "(YEO)", "\u1167",
+        "(YE)", "\u1168",
+        "(O)", "\u1169",
+        "(WA)", "\u116A",
+        "(WAE)", "\u116B",
+        "(OE)", "\u116C",
+        "(YO)", "\u116D",
+        "(U)", "\u116E",
+        "(WEO)", "\u116F",
+        "(WE)", "\u1170",
+        "(WI)", "\u1171",
+        "(YU)", "\u1172",
+        "(EU)", "\u1173",
+        "(YI)", "\u1174",
+        "(I)", "\u1175",
+
+        "(Gf)", "\u11A8",
+        "(GGf)", "\u11A9",
+        "(GS)", "\u11AA",
+        "(Nf)", "\u11AB",
+        "(NJ)", "\u11AC",
+        "(NH)", "\u11AD",
+        "(Df)", "\u11AE",
+        "(L)", "\u11AF",
+        "(LG)", "\u11B0",
+        "(LM)", "\u11B1",
+        "(LB)", "\u11B2",
+        "(LS)", "\u11B3",
+        "(LT)", "\u11B4",
+        "(LP)", "\u11B5",
+        "(LH)", "\u11B6",
+        "(Mf)", "\u11B7",
+        "(Bf)", "\u11B8",
+        "(BS)", "\u11B9",
+        "(Sf)", "\u11BA",
+        "(SSf)", "\u11BB",
+        "(NG)", "\u11BC",
+        "(Jf)", "\u11BD",
+        "(Cf)", "\u11BE",
+        "(Kf)", "\u11BF",
+        "(Tf)", "\u11C0",
+        "(Pf)", "\u11C1",
+        "(Hf)", "\u11C2",
+    };
+
+    static Hashtable JAMO_TO_NAME;
+    static Hashtable NAME_TO_JAMO;
+
+    static {
+        JAMO_TO_NAME = new Hashtable();
+        NAME_TO_JAMO = new Hashtable();
+        for (int i=0; i<JAMO_NAMES.length; i+=2) {
+            JAMO_TO_NAME.put(JAMO_NAMES[i+1], JAMO_NAMES[i]);
+            NAME_TO_JAMO.put(JAMO_NAMES[i], JAMO_NAMES[i+1]);
+        }
+    }
+
+    /**
+     * Convert short names to actual jamo.  E.g., "x(LG)y" returns
+     * "x\u11B0y".  See JAMO_NAMES for table of names.
+     */
+    static String nameToJamo(String input) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<input.length(); ++i) {
+            char c = input.charAt(i);
+            if (c == '(') {
+                int j = input.indexOf(')', i+1);
+                if ((j-i) >= 2 && (j-i) <= 6) { // "(A)", "(IEUNG)"
+                    String jamo = (String) NAME_TO_JAMO.get(input.substring(i, j+1));
+                    if (jamo != null) {
+                        buf.append(jamo);
+                        i = j;
+                        continue;
+                    }
+                }
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert jamo to short names.  E.g., "x\u11B0y" returns
+     * "x(LG)y".  See JAMO_NAMES for table of names.
+     */
+    static String jamoToName(String input) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<input.length(); ++i) {
+            char c = input.charAt(i);
+            if (c >= 0x1100 && c <= 0x11C2) {
+                String name = (String) JAMO_TO_NAME.get(input.substring(i, i+1));
+                if (name != null) {
+                    buf.append(name);
+                    continue;
+                }
+            }
+            buf.append(c);
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java b/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
new file mode 100644
index 0000000..6cfebde
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
@@ -0,0 +1,190 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @test
+ * @summary Round trip test of Transliterator
+ */
+public class ReplaceableTest extends TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new ReplaceableTest().run(args);
+    }
+  
+    public void Test() {
+        check("Lower", "ABCD", "1234");
+        check("Upper", "abcd\u00DF", "123455"); // must map 00DF to SS
+        check("Title", "aBCD", "1234");
+        check("NFC", "A\u0300E\u0300", "13");
+        check("NFD", "\u00C0\u00C8", "1122");
+        check("*(x) > A $1 B", "wxy", "11223");
+        check("*(x)(y) > A $2 B $1 C $2 D", "wxyz", "113322334");
+        check("*(x)(y)(z) > A $3 B $2 C $1 D", "wxyzu", "114433225");
+        // TODO Revisit the following in 2.6 or later.
+        check("*x > a", "xyz", "223"); // expect "123"?
+        check("*x > a", "wxy", "113"); // expect "123"?
+        check("*x > a", "\uFFFFxy", "_33"); // expect "_23"?
+        check("*(x) > A $1 B", "\uFFFFxy", "__223");
+    }
+    
+    void check(String transliteratorName, String test, String shouldProduceStyles) {
+        TestReplaceable tr = new TestReplaceable(test, null);
+        String original = tr.toString();
+        
+        Transliterator t;
+        if (transliteratorName.startsWith("*")) {
+            transliteratorName = transliteratorName.substring(1);
+            t = Transliterator.createFromRules("test", transliteratorName,
+                                               Transliterator.FORWARD);
+        } else {
+            t = Transliterator.getInstance(transliteratorName);
+        }
+        t.transliterate(tr);
+        String newStyles = tr.getStyles();
+        if (!newStyles.equals(shouldProduceStyles)) {
+            errln("FAIL Styles: " + transliteratorName + " ( "
+                + original + " ) => " + tr.toString() + "; should be {" + shouldProduceStyles + "}!");
+        } else {
+            logln("OK: " + transliteratorName + " ( " + original + " ) => " + tr.toString());
+        }
+        
+        if (!tr.hasMetaData() || tr.chars.hasMetaData() 
+            || tr.styles.hasMetaData()) {
+            errln("Fail hasMetaData()");
+        }
+    }
+    
+
+    /**
+     * This is a test class that simulates styled text.
+     * It associates a style number (0..65535) with each character,
+     * and maintains that style in the normal fashion:
+     * When setting text from raw string or characters,<br>
+     * Set the styles to the style of the first character replaced.<br>
+     * If no characters are replaced, use the style of the previous character.<br>
+     * If at start, use the following character<br>
+     * Otherwise use NO_STYLE.
+     */
+    static class TestReplaceable implements Replaceable {
+        ReplaceableString chars;
+        ReplaceableString styles;
+        
+        static final char NO_STYLE = '_';
+
+        static final char NO_STYLE_MARK = 0xFFFF;
+        
+        TestReplaceable (String text, String styles) {
+            chars = new ReplaceableString(text);
+            StringBuffer s = new StringBuffer();
+            for (int i = 0; i < text.length(); ++i) {
+                if (styles != null && i < styles.length()) {
+                    s.append(styles.charAt(i));
+                } else {
+                    if (text.charAt(i) == NO_STYLE_MARK) {
+                        s.append(NO_STYLE);
+                    } else {
+                        s.append((char) (i + '1'));
+                    }
+                }
+            }
+            this.styles = new ReplaceableString(s.toString());
+        }
+        
+        public String getStyles() {
+            return styles.toString();
+        }
+        
+        public String toString() {
+            return chars.toString() + "{" + styles.toString() + "}";
+        }
+
+        public String substring(int start, int limit) {
+            return chars.substring(start, limit);
+        }
+
+        public int length() {
+            return chars.length();
+        }
+
+        public char charAt(int offset) {
+            return chars.charAt(offset);
+        }
+
+        public int char32At(int offset) {
+            return chars.char32At(offset);
+        }
+
+        public void getChars(int srcStart, int srcLimit, char dst[], int dstStart) {
+            chars.getChars(srcStart, srcLimit, dst, dstStart);
+        }
+
+        public void replace(int start, int limit, String text) {
+            if (substring(start,limit).equals(text)) return; // NO ACTION!
+            if (DEBUG) System.out.print(Utility.escape(toString() + " -> replace(" + start +
+                                            "," + limit + "," + text) + ") -> ");
+            chars.replace(start, limit, text);
+            fixStyles(start, limit, text.length());
+            if (DEBUG) System.out.println(Utility.escape(toString()));
+        }
+        
+        public void replace(int start, int limit, char[] charArray,
+                            int charsStart, int charsLen) {
+            if (substring(start,limit).equals(new String(charArray, charsStart, charsLen-charsStart))) return; // NO ACTION!
+            this.chars.replace(start, limit, charArray, charsStart, charsLen);
+            fixStyles(start, limit, charsLen);
+        }
+
+        void fixStyles(int start, int limit, int newLen) {
+            char newStyle = NO_STYLE;
+            if (start != limit && styles.charAt(start) != NO_STYLE) {
+                newStyle = styles.charAt(start);
+            } else if (start > 0 && charAt(start-1) != NO_STYLE_MARK) {
+                newStyle = styles.charAt(start-1);
+            } else if (limit < styles.length()) {
+                newStyle = styles.charAt(limit);
+            }
+            // dumb implementation for now.
+            StringBuffer s = new StringBuffer();
+            for (int i = 0; i < newLen; ++i) {
+                // this doesn't really handle an embedded NO_STYLE_MARK
+                // in the middle of a long run of characters right -- but
+                // that case shouldn't happen anyway
+                if (charAt(start+i) == NO_STYLE_MARK) {
+                    s.append(NO_STYLE);
+                } else {
+                    s.append(newStyle);
+                }
+            }
+            styles.replace(start, limit, s.toString());
+        }
+
+        public void copy(int start, int limit, int dest) {
+            chars.copy(start, limit, dest);
+            styles.copy(start, limit, dest);
+        }
+        
+        public boolean hasMetaData() {
+            return true;
+        }
+
+        static final boolean DEBUG = false;
+    }
+    
+    public void Test5789() {
+        String rules =
+            "IETR > IET | \\' R; # (1) do split ietr between t and r\r\n" +
+            "I[EH] > I; # (2) friedrich";
+        Transliterator trans = Transliterator.createFromRules("foo", rules, Transliterator.FORWARD);
+        String result =  trans.transliterate("BLENKDIETRICH");
+        assertEquals("Rule breakage", "BLENKDIET'RICH", result);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/RoundTripTest.java b/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
new file mode 100644
index 0000000..685c8fe
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
@@ -0,0 +1,1588 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.util.LocaleData;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.impl.Utility;
+
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.MissingResourceException;
+
+/**
+ * @test
+ * @summary Round trip test of Transliterator
+ */
+public class RoundTripTest extends TestFmwk {
+
+    static final boolean EXTRA_TESTS = true;
+    static final boolean PRINT_RULES = true;
+
+    public static void main(String[] args) throws Exception {
+        new RoundTripTest().run(args);
+    }
+    /*
+    public void TestSingle() throws IOException, ParseException {
+        Transliterator t = Transliterator.getInstance("Latin-Greek");
+        String s = t.transliterate("\u0101\u0069");
+    }
+    */
+
+    /*
+    Note: Unicode 3.2 added new Hiragana/Katakana characters:
+
+3095..3096    ; 3.2 #   [2] HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE
+309F..30A0    ; 3.2 #   [2] HIRAGANA DIGRAPH YORI..KATAKANA-HIRAGANA DOUBLE HYPHEN
+30FF          ; 3.2 #       KATAKANA DIGRAPH KOTO
+31F0..31FF    ; 3.2 #  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+
+    We will not add them to the rules until they are more supported (e.g. in fonts on Windows)
+    A bug has been filed to remind us to do this: #1979.
+    */
+
+    static String KATAKANA = "[[[:katakana:][\u30A1-\u30FA\u30FC]]-[\u30FF\u31F0-\u31FF]]";
+    static String HIRAGANA = "[[[:hiragana:][\u3040-\u3094]]-[\u3095-\u3096\u309F-\u30A0]]";
+    static String LENGTH = "[\u30FC]";
+    static String HALFWIDTH_KATAKANA = "[\uFF65-\uFF9D]";
+    static String KATAKANA_ITERATION = "[\u30FD\u30FE]";
+    static String HIRAGANA_ITERATION = "[\u309D\u309E]";
+
+    //------------------------------------------------------------------
+    // AbbreviatedUnicodeSetIterator
+    //------------------------------------------------------------------
+
+    static class AbbreviatedUnicodeSetIterator extends UnicodeSetIterator {
+
+        private boolean abbreviated;
+        private int perRange;
+
+        public AbbreviatedUnicodeSetIterator() {
+            super();
+            abbreviated = false;
+        }
+
+        public void reset(UnicodeSet newSet) {
+            reset(newSet, false);
+        }
+
+        public void reset(UnicodeSet newSet, boolean abb) {
+            reset(newSet, abb, 100);
+        }
+
+        public void reset(UnicodeSet newSet, boolean abb, int density) {
+            super.reset(newSet);
+            abbreviated = abb;
+            perRange = newSet.getRangeCount();
+            if (perRange != 0) {
+                perRange = density / perRange;
+            }
+        }
+
+        protected void loadRange(int myRange) {
+            super.loadRange(myRange);
+            if (abbreviated && (endElement > nextElement + perRange)) {
+                endElement = nextElement + perRange;
+            }
+        }
+    }
+
+    //--------------------------------------------------------------------
+
+    public void showElapsed(long start, String name) {
+        double dur = (System.currentTimeMillis() - start) / 1000.0;
+        logln(name + " took " + dur + " seconds");
+    }
+
+    public void TestKana() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Katakana-Hiragana")
+          .test(KATAKANA, "[" + HIRAGANA + LENGTH + "]", "[" + HALFWIDTH_KATAKANA + LENGTH + "]", this, new Legal());
+        showElapsed(start, "TestKana");
+    }
+
+    public void TestHiragana() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Hiragana")
+          .test("[a-zA-Z]", HIRAGANA, HIRAGANA_ITERATION, this, new Legal());
+        showElapsed(start, "TestHiragana");
+    }
+
+    public void TestKatakana() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Katakana")
+          .test("[a-zA-Z]", KATAKANA, "[" + KATAKANA_ITERATION + HALFWIDTH_KATAKANA + "]", this, new Legal());
+        showElapsed(start, "TestKatakana");
+    }
+
+    public void TestJamo() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Jamo")
+            .test("[a-zA-Z]", "[\u1100-\u1112 \u1161-\u1175 \u11A8-\u11C2]", "", this, new LegalJamo());
+        showElapsed(start, "TestJamo");
+    }
+
+/*
+        SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7,
+        LCount = 19, VCount = 21, TCount = 28,
+        NCount = VCount * TCount,   // 588
+        SCount = LCount * NCount,   // 11172
+        LLimit = LBase + LCount,    // 1113
+        VLimit = VBase + VCount,    // 1176
+        TLimit = TBase + TCount,    // 11C3
+        SLimit = SBase + SCount;    // D7A4
+*/
+
+    public void TestHangul() throws IOException {
+        long start = System.currentTimeMillis();
+        Test t = new Test("Latin-Hangul", 5);
+        if (getInclusion() < 10) t.setPairLimit(1000);
+        t.test("[a-zA-Z]", "[\uAC00-\uD7A4]", "", this, new Legal());
+        showElapsed(start, "TestHangul");
+    }
+    
+    public void TestHan() throws UnsupportedEncodingException, FileNotFoundException {
+        try{
+            UnicodeSet exemplars = LocaleData.getExemplarSet(new ULocale("zh"),0);
+            // create string with all chars
+            StringBuffer b = new StringBuffer();
+            for (UnicodeSetIterator it = new UnicodeSetIterator(exemplars); it.next();) {
+                UTF16.append(b,it.codepoint);
+            }
+            String source = b.toString();
+            // transform with Han translit
+            Transliterator han = Transliterator.getInstance("Han-Latin");
+            String target = han.transliterate(source);
+            // now verify that there are no Han characters left
+            UnicodeSet allHan = new UnicodeSet("[:han:]");
+            assertFalse("No Han must be left after Han-Latin transliteration",allHan.containsSome(target));
+            // check the pinyin translit
+            Transliterator pn = Transliterator.getInstance("Latin-NumericPinyin");
+            String target2 = pn.transliterate(target);
+            // verify that there are no marks
+            Transliterator nfc = Transliterator.getInstance("nfc");
+            String nfced = nfc.transliterate(target2);
+            UnicodeSet allMarks = new UnicodeSet("[:mark:]");
+            assertFalse("NumericPinyin must contain no marks", allMarks.containsSome(nfced));
+            // verify roundtrip
+            Transliterator np = pn.getInverse();
+            String target3 = np.transliterate(target);
+            boolean roundtripOK = target3.equals(target);
+            assertTrue("NumericPinyin must roundtrip", roundtripOK);
+            if (!roundtripOK) {
+                String filename = "numeric-pinyin.log.txt";
+                PrintWriter out = new PrintWriter(
+                    new BufferedWriter(
+                        new OutputStreamWriter(
+                            new FileOutputStream(filename), "UTF8"), 4*1024));
+                errln("Creating log file " + new File(filename).getAbsoluteFile());
+                out.println("Pinyin:                " + target);
+                out.println("Pinyin-Numeric-Pinyin: " + target2);
+                out.close();
+            }
+        }catch(MissingResourceException ex){
+            warnln("Could not load the locale data for fetching the exemplar characters.");
+        }
+    }
+
+    public void TestSingle() {
+        Transliterator t = Transliterator.getInstance("Latin-Greek");
+        t.transliterate("\u0061\u0101\u0069");
+    }
+
+    String getGreekSet() {
+        // Time bomb
+        if (skipIfBeforeICU(4,1,2)) {
+            // We temporarily filter against Unicode 4.1, but we only do this
+            // before version 3.5.
+            logln("TestGreek needs to be updated to remove delete the section marked [:Age=4.0:] filter");
+        } else {
+            errln("TestGreek needs to be updated to remove delete the [:Age=4.0:] filter ");
+        }
+        return 
+        // isICU28() ? "[[\u003B\u00B7[:Greek:]-[\u03D7-\u03EF]]&[:Age=3.2:]]" :
+            "[\u003B\u00B7[[:Greek:]&[:Letter:]]-[" +
+            "\u1D26-\u1D2A" + // L&   [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI
+            "\u1D5D-\u1D61" + // Lm   [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI
+            "\u1D66-\u1D6A" + // L&   [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI
+            "\u03D7-\u03EF" + // \N{GREEK KAI SYMBOL}..\N{COPTIC SMALL LETTER DEI}
+            "] & [:Age=4.0:]]";
+    }
+    
+    public void TestGreek() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Greek", 50)
+        .test("[a-zA-Z]", getGreekSet(),
+            "[\u00B5\u037A\u03D0-\u03F5\u03F9]", /* roundtrip exclusions */
+            this, new LegalGreek(true));
+        showElapsed(start, "TestGreek");
+    }
+
+    public void TestGreekUNGEGN() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Greek/UNGEGN")
+          .test("[a-zA-Z]", getGreekSet(),
+            "[\u00B5\u037A\u03D0-\uFFFF{\u039C\u03C0}]", /* roundtrip exclusions */
+            this, new LegalGreek(false));
+        showElapsed(start, "TestGreekUNGEGN");
+    }
+
+    public void Testel() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-el")
+          .test("[a-zA-Z]", getGreekSet(),
+            "[\u00B5\u037A\u03D0-\uFFFF{\u039C\u03C0}]", /* roundtrip exclusions */
+            this, new LegalGreek(false));
+        showElapsed(start, "Testel");
+    }
+
+    public void TestCyrillic() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Cyrillic")
+          .test("[a-zA-Z\u0110\u0111\u02BA\u02B9]", "[\u0400-\u045F]", null, this, new Legal());
+        showElapsed(start, "TestCyrillic");
+    }
+
+    static final String ARABIC = "[\u060C\u061B\u061F\u0621\u0627-\u063A\u0641-\u0655\u0660-\u066C\u067E\u0686\u0698\u06A4\u06AD\u06AF\u06CB-\u06CC\u06F0-\u06F9]";
+
+    public void TestArabic() throws IOException {
+        long start = System.currentTimeMillis();
+        new Test("Latin-Arabic")
+          .test("[a-zA-Z\u02BE\u02BF]", ARABIC, "[a-zA-Z\u02BE\u02BF\u207F]", null, this, new Legal()); //
+        showElapsed(start, "TestArabic");
+    }
+
+    public void TestHebrew() throws IOException {
+        //      Time bomb
+        if (skipIfBeforeICU(4,1,2)) {
+            // We temporarily filter against Unicode 4.1, but we only do this
+            // before version 3.5.
+            logln("TestHebrew needs to be updated to remove delete the section marked [:Age=4.0:] filter");
+        } else {
+            errln("TestHebrew needs to be updated to remove delete the [:Age=4.0:] filter ");
+        }
+        long start = System.currentTimeMillis();
+        new Test("Latin-Hebrew")
+          .test("[a-zA-Z\u02BC\u02BB]", "[[[:hebrew:]-[\u05BD\uFB00-\uFBFF]]& [:Age=4.0:]]", "[\u05F0\u05F1\u05F2]", this, new LegalHebrew());
+        showElapsed(start, "TestHebrew");
+    }
+
+    public void TestThai() throws IOException {
+        long start = System.currentTimeMillis();
+        if(skipIfBeforeICU(4,1,2)){
+            new Test("Latin-Thai")
+            .test("[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268\u02CC]",
+                  "[\u0E01-\u0E3A\u0E40-\u0E5B]", 
+                  "[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268\u02B9\u02CC]",
+            "[\u0E4F]", this, new LegalThai());   
+        }else{
+            new Test("Latin-Thai")
+                .test("[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268\u02CC]",
+                      "[\u0E01-\u0E3A\u0E40-\u0E5B]", 
+                      "[a-zA-Z\u0142\u1ECD\u00E6\u0131\u0268\u02B9\u02CC]",
+                null, this, new LegalThai());
+        }
+        
+        showElapsed(start, "TestThai");
+    }
+
+    //----------------------------------
+    // Inter-Indic Tests
+    //----------------------------------
+    public static class LegalIndic extends Legal{
+        UnicodeSet vowelSignSet = new UnicodeSet();
+
+        public LegalIndic(){
+            vowelSignSet.addAll(new UnicodeSet("[\u0901\u0902\u0903\u0904\u093e-\u094c\u0962\u0963]"));               /* Devanagari */
+            vowelSignSet.addAll(new UnicodeSet("[\u0981\u0982\u0983\u09be-\u09cc\u09e2\u09e3\u09D7]"));         /* Bengali */
+            vowelSignSet.addAll(new UnicodeSet("[\u0a01\u0a02\u0a03\u0a3e-\u0a4c\u0a62\u0a63\u0a70\u0a71]"));   /* Gurmukhi */
+            vowelSignSet.addAll(new UnicodeSet("[\u0a81\u0a82\u0a83\u0abe-\u0acc\u0ae2\u0ae3]"));               /* Gujarati */
+            vowelSignSet.addAll(new UnicodeSet("[\u0b01\u0b02\u0b03\u0b3e-\u0b4c\u0b62\u0b63\u0b56\u0b57]"));   /* Oriya */
+            vowelSignSet.addAll(new UnicodeSet("[\u0b81\u0b82\u0b83\u0bbe-\u0bcc\u0be2\u0be3\u0bd7]"));         /* Tamil */
+            vowelSignSet.addAll(new UnicodeSet("[\u0c01\u0c02\u0c03\u0c3e-\u0c4c\u0c62\u0c63\u0c55\u0c56]"));   /* Telugu */
+            vowelSignSet.addAll(new UnicodeSet("[\u0c81\u0c82\u0c83\u0cbe-\u0ccc\u0ce2\u0ce3\u0cd5\u0cd6]"));   /* Kannada */
+            vowelSignSet.addAll(new UnicodeSet("[\u0d01\u0d02\u0d03\u0d3e-\u0d4c\u0d62\u0d63\u0d57]"));         /* Malayalam */
+        }
+
+        String avagraha = "\u093d\u09bd\u0abd\u0b3d\u0cbd";
+        String nukta = "\u093c\u09bc\u0a3c\u0abc\u0b3c\u0cbc";
+        String virama = "\u094d\u09cd\u0a4d\u0acd\u0b4d\u0bcd\u0c4d\u0ccd\u0d4d";
+        String sanskritStressSigns = "\u0951\u0952\u0953\u0954\u097d";
+        String chandrabindu = "\u0901\u0981\u0A81\u0b01\u0c01";
+        public boolean is(String sourceString){
+            int cp=sourceString.charAt(0);
+
+            // A vowel sign cannot be the first char
+            if(vowelSignSet.contains(cp)){
+                return false;
+            }else if(avagraha.indexOf(cp)!=-1){
+                return false;
+            }else if(virama.indexOf(cp)!=-1){
+                return false;
+            }else if(nukta.indexOf(cp)!=-1){
+                return false;
+            }else if(sanskritStressSigns.indexOf(cp)!=-1){
+                return false;
+            }else if((chandrabindu.indexOf(cp)!=-1) &&
+                        (sourceString.length() >1 &&
+                            vowelSignSet.contains(sourceString.charAt(1)))){
+                return false;
+            }
+            return true;
+        }
+    }
+    static String latinForIndic = "[['.0-9A-Za-z~\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD"+
+                                   "\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F"+
+                                   "\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148"+
+                                   "\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0"+
+                                   "\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01ED\u01F0\u01F4-\u01F5\u01F8-\u01FB"+
+                                   "\u0200-\u021B\u021E-\u021F\u0226-\u0233\u0294\u0303-\u0304\u0306\u0314-\u0315"+
+                                   "\u0325\u040E\u0419\u0439\u045E\u04C1-\u04C2\u04D0-\u04D1\u04D6-\u04D7"+
+                                   "\u04E2-\u04E3\u04EE-\u04EF\u1E00-\u1E99\u1EA0-\u1EF9\u1F01\u1F03\u1F05"+
+                                   "\u1F07\u1F09\u1F0B\u1F0D\u1F0F\u1F11\u1F13\u1F15\u1F19\u1F1B\u1F1D\u1F21"+
+                                   "\u1F23\u1F25\u1F27\u1F29\u1F2B\u1F2D\u1F2F\u1F31\u1F33\u1F35\u1F37\u1F39"+
+                                   "\u1F3B\u1F3D\u1F3F\u1F41\u1F43\u1F45\u1F49\u1F4B\u1F4D\u1F51\u1F53\u1F55"+
+                                   "\u1F57\u1F59\u1F5B\u1F5D\u1F5F\u1F61\u1F63\u1F65\u1F67\u1F69\u1F6B\u1F6D"+
+                                   "\u1F6F\u1F81\u1F83\u1F85\u1F87\u1F89\u1F8B\u1F8D\u1F8F\u1F91\u1F93\u1F95"+
+                                   "\u1F97\u1F99\u1F9B\u1F9D\u1F9F\u1FA1\u1FA3\u1FA5\u1FA7\u1FA9\u1FAB\u1FAD"+
+                                   "\u1FAF-\u1FB1\u1FB8-\u1FB9\u1FD0-\u1FD1\u1FD8-\u1FD9\u1FE0-\u1FE1\u1FE5"+
+                                   "\u1FE8-\u1FE9\u1FEC\u212A-\u212B\uE04D\uE064]"+
+                                   "-[\uE000-\uE080 \u01E2\u01E3]& [[:latin:][:mark:]]]";
+
+    public void TestDevanagariLatin() throws IOException {
+        long start = System.currentTimeMillis();
+        if (skipIfBeforeICU(4,1,2)) {
+            logln("Warning: TestDevanagariLatin needs to be updated to remove delete the section marked [:Age=4.1:] filter");
+        } else {
+//              We temporarily filter against Unicode 4.1, but we only do this
+            // before version 3.4.
+            errln("FAIL: TestDevanagariLatin needs to be updated to remove delete the [:Age=4.1:] filter ");
+            return;
+        }
+        new Test("Latin-DEVANAGARI", 50)
+          .test(latinForIndic, "[[[:Devanagari:][\u094d][\u0964\u0965]]&[:Age=4.1:]]", "[\u0965\u0904]", this, new LegalIndic());
+        showElapsed(start, "TestDevanagariLatin");
+    }
+
+    private static final String [][] interIndicArray= new String[][]{
+        new String [] {  "BENGALI-DEVANAGARI",
+            "[:BENGALI:]", "[:Devanagari:]",
+                "[\u0904\u0951-\u0954\u0943-\u0949\u094a\u0962\u0963\u090D\u090e\u0911\u0912\u0929\u0933\u0934\u0935\u0950\u0958\u0959\u095a\u095b\u095e\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-BENGALI",
+           "[:Devanagari:]", "[:BENGALI:]",
+                  "[\u09D7\u090D\u090e\u0911\u0912\u0929\u0933\u0934\u0935\u0950\u0958\u0959\u095a\u095b\u095e\u09f0\u09f1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GURMUKHI-DEVANAGARI",
+          "[:GURMUKHI:]", "[:Devanagari:]",
+                "[\u0904\u0902\u0936\u0933\u0951-\u0954\u0902\u0903\u0943-\u0949\u094a\u0962\u0963\u090B\u090C\u090D\u090e\u0911\u0912\u0934\u0937\u093D\u0950\u0960\u0961\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-GURMUKHI",
+           "[:Devanagari:]", "[:GURMUKHI:]",
+                  "[\u0A02\u0946\u0A5C\u0951-\u0954\u0A70\u0A71\u090B\u090C\u090D\u090e\u0911\u0912\u0934\u0937\u093D\u0950\u0960\u0961\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-DEVANAGARI",
+          "[:GUJARATI:]", "[:Devanagari:]",
+                "[\u0904\u0946\u094A\u0962\u0963\u0951-\u0954\u0961\u090c\u090e\u0912\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-GUJARATI",
+           "[:Devanagari:]", "[:GUJARATI:]",
+                  "[\u0951-\u0954\u0961\u090c\u090e\u0912]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "ORIYA-DEVANAGARI",
+          "[:ORIYA:]", "[:Devanagari:]",
+                "[\u0904\u0912\u0911\u090D\u090e\u0931\u0943-\u094a\u0962\u0963\u0951-\u0954\u0950\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-ORIYA",
+           "[:Devanagari:]", "[:ORIYA:]",
+                  "[\u0b5f\u0b56\u0b57\u0b70\u0b71\u0950\u090D\u090e\u0912\u0911\u0931]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Tamil-DEVANAGARI",
+          "[:tamil:]", "[:Devanagari:]",
+                  "[\u0901\u0904\u093c\u0943-\u094a\u0951-\u0954\u0962\u0963\u090B\u090C\u090D\u0911\u0916\u0917\u0918\u091B\u091D\u0920\u0921\u0922\u0925\u0926\u0927\u092B\u092C\u092D\u0936\u093d\u0950[\u0958-\u0961]\u097d]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "DEVANAGARI-Tamil",
+           "[:Devanagari:]", "[:tamil:]",
+                  "[\u0bd7\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Telugu-DEVANAGARI",
+          "[:telugu:]", "[:Devanagari:]",
+                "[\u0904\u093c\u0950\u0945\u0949\u0951-\u0954\u0962\u0963\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-TELUGU",
+           "[:Devanagari:]", "[:TELUGU:]",
+                  "[\u0c55\u0c56\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-DEVANAGARI",
+          "[:KANNADA:]", "[:Devanagari:]",
+                "[\u0901\u0904\u0946\u0950\u0945\u0949\u0951-\u0954\u0962\u0963\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-KANNADA",
+           "[:Devanagari:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0cde\u0cd5\u0cd6\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-DEVANAGARI",
+          "[:MALAYALAM:]", "[:Devanagari:]",
+                "[\u0901\u0904\u094a\u094b\u094c\u093c\u0950\u0944\u0945\u0949\u0951-\u0954\u0962\u0963\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]\u097d]", /*roundtrip exclusions*/
+                },
+        new String [] {  "DEVANAGARI-MALAYALAM",
+           "[:Devanagari:]", "[:MALAYALAM:]",
+                  "[\u0d4c\u0d57\u0950\u090D\u0911\u093d\u0929\u0934[\u0958-\u095f]]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GURMUKHI-BENGALI",
+          "[:GURMUKHI:]", "[:BENGALI:]",
+                "[\u0982\u09b6\u09e2\u09e3\u09c3\u09c4\u09d7\u098B\u098C\u09B7\u09E0\u09E1\u09F0\u09F1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-GURMUKHI",
+           "[:BENGALI:]", "[:GURMUKHI:]",
+                  "[\u0A02\u0a5c\u0a47\u0a70\u0a71\u0A33\u0A35\u0A59\u0A5A\u0A5B\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-BENGALI",
+          "[:GUJARATI:]", "[:BENGALI:]",
+                "[\u09d7\u09e2\u09e3\u098c\u09e1\u09f0\u09f1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-GUJARATI",
+           "[:BENGALI:]", "[:GUJARATI:]",
+                  "[\u0A82\u0a83\u0Ac9\u0Ac5\u0ac7\u0A8D\u0A91\u0AB3\u0AB5\u0ABD\u0AD0]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "ORIYA-BENGALI",
+          "[:ORIYA:]", "[:BENGALI:]",
+                "[\u09c4\u09e2\u09e3\u09f0\u09f1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-ORIYA",
+           "[:BENGALI:]", "[:ORIYA:]",
+                  "[\u0b35\u0b71\u0b5f\u0b56\u0b33\u0b3d]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Tamil-BENGALI",
+          "[:tamil:]", "[:BENGALI:]",
+                  "[\u0981\u09bc\u09c3\u09c4\u09e2\u09e3\u09f0\u09f1\u098B\u098C\u0996\u0997\u0998\u099B\u099D\u09A0\u09A1\u09A2\u09A5\u09A6\u09A7\u09AB\u09AC\u09AD\u09B6\u09DC\u09DD\u09DF\u09E0\u09E1\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "BENGALI-Tamil",
+           "[:BENGALI:]", "[:tamil:]",
+                  "[\u0bc6\u0bc7\u0bca\u0B8E\u0B92\u0BA9\u0BB1\u0BB3\u0BB4\u0BB5\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "Telugu-BENGALI",
+          "[:telugu:]", "[:BENGALI:]",
+                "[\u09e2\u09e3\u09bc\u09d7\u09f0\u09f1\u09dc\u09dd\u09df\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-TELUGU",
+           "[:BENGALI:]", "[:TELUGU:]",
+                  "[\u0c55\u0c56\u0c47\u0c46\u0c4a\u0C0E\u0C12\u0C31\u0C33\u0C35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-BENGALI",
+          "[:KANNADA:]", "[:BENGALI:]",
+                "[\u0981\u09e2\u09e3\u09bc\u09d7\u09f0\u09f1\u09dc\u09dd\u09df\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-KANNADA",
+           "[:BENGALI:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0cc6\u0cca\u0cd5\u0cd6\u0cc7\u0C8E\u0C92\u0CB1\u0cb3\u0cb5\u0cde]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-BENGALI",
+          "[:MALAYALAM:]", "[:BENGALI:]",
+                "[\u0981\u09e2\u09e3\u09bc\u09c4\u09f0\u09f1\u09dc\u09dd\u09df\u09f2-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "BENGALI-MALAYALAM",
+           "[:BENGALI:]", "[:MALAYALAM:]",
+                  "[\u0d46\u0d4a\u0d47\u0d31-\u0d35\u0d0e\u0d12]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-GURMUKHI",
+          "[:GUJARATI:]", "[:GURMUKHI:]",
+                "[\u0A02\u0ab3\u0ab6\u0A70\u0a71\u0a82\u0a83\u0ac3\u0ac4\u0ac5\u0ac9\u0a5c\u0a72\u0a73\u0a74\u0a8b\u0a8d\u0a91\u0abd]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-GUJARATI",
+           "[:GURMUKHI:]", "[:GUJARATI:]",
+                  "[\u0a5c\u0A70\u0a71\u0a72\u0a73\u0a74\u0a82\u0a83\u0a8b\u0a8c\u0a8d\u0a91\u0ab3\u0ab6\u0ab7\u0abd\u0ac3\u0ac4\u0ac5\u0ac9\u0ad0\u0ae0\u0ae1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "ORIYA-GURMUKHI",
+          "[:ORIYA:]", "[:GURMUKHI:]",
+                "[\u0A02\u0a5c\u0a21\u0a47\u0a71\u0b02\u0b03\u0b33\u0b36\u0b43\u0b56\u0b57\u0B0B\u0B0C\u0B37\u0B3D\u0B5F\u0B60\u0B61\u0a35\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-ORIYA",
+           "[:GURMUKHI:]", "[:ORIYA:]",
+                  "[\u0a71\u0b02\u0b03\u0b33\u0b36\u0b43\u0b56\u0b57\u0B0B\u0B0C\u0B37\u0B3D\u0B5F\u0B60\u0B61\u0b70\u0b71]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-GURMUKHI",
+          "[:TAMIL:]", "[:GURMUKHI:]",
+                "[\u0A01\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0a47\u0A16\u0A17\u0A18\u0A1B\u0A1D\u0A20\u0A21\u0A22\u0A25\u0A26\u0A27\u0A2B\u0A2C\u0A2D\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-TAMIL",
+           "[:GURMUKHI:]", "[:TAMIL:]",
+                  "[\u0b82\u0bc6\u0bca\u0bd7\u0bb7\u0bb3\u0b83\u0B8E\u0B92\u0BA9\u0BB1\u0BB4\u0bb6\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-GURMUKHI",
+          "[:TELUGU:]", "[:GURMUKHI:]",
+                "[\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-TELUGU",
+           "[:GURMUKHI:]", "[:TELUGU:]",
+                  "[\u0c02\u0c03\u0c33\u0c36\u0c44\u0c43\u0c46\u0c4a\u0c56\u0c55\u0C0B\u0C0C\u0C0E\u0C12\u0C31\u0C37\u0C60\u0C61]", /*roundtrip exclusions*/
+                  },
+        new String [] {  "KANNADA-GURMUKHI",
+          "[:KANNADA:]", "[:GURMUKHI:]",
+                "[\u0A01\u0A02\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-KANNADA",
+           "[:GURMUKHI:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0c82\u0c83\u0cb3\u0cb6\u0cc4\u0cc3\u0cc6\u0cca\u0cd5\u0cd6\u0C8B\u0C8C\u0C8E\u0C92\u0CB1\u0CB7\u0cbd\u0CE0\u0CE1\u0cde]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-GURMUKHI",
+          "[:MALAYALAM:]", "[:GURMUKHI:]",
+                "[\u0A01\u0A02\u0a4b\u0a4c\u0a33\u0a36\u0a3c\u0a70\u0a71\u0A59\u0A5A\u0A5B\u0A5C\u0A5E\u0A72\u0A73\u0A74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GURMUKHI-MALAYALAM",
+           "[:GURMUKHI:]", "[:MALAYALAM:]",
+                  "[\u0d02\u0d03\u0d33\u0d36\u0d43\u0d46\u0d4a\u0d4c\u0d57\u0D0B\u0D0C\u0D0E\u0D12\u0D31\u0D34\u0D37\u0D60\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "GUJARATI-ORIYA",
+          "[:GUJARATI:]", "[:ORIYA:]",
+                "[\u0b56\u0b57\u0B0C\u0B5F\u0B61\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-GUJARATI",
+           "[:ORIYA:]", "[:GUJARATI:]",
+                  "[\u0Ac4\u0Ac5\u0Ac9\u0Ac7\u0A8D\u0A91\u0AB5\u0Ad0]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-GUJARATI",
+          "[:TAMIL:]", "[:GUJARATI:]",
+                "[\u0A81\u0a8c\u0abc\u0ac3\u0Ac4\u0Ac5\u0Ac9\u0Ac7\u0A8B\u0A8D\u0A91\u0A96\u0A97\u0A98\u0A9B\u0A9D\u0AA0\u0AA1\u0AA2\u0AA5\u0AA6\u0AA7\u0AAB\u0AAC\u0AAD\u0AB6\u0ABD\u0AD0\u0AE0\u0AE1]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-TAMIL",
+           "[:GUJARATI:]", "[:TAMIL:]",
+                  "[\u0Bc6\u0Bca\u0Bd7\u0B8E\u0B92\u0BA9\u0BB1\u0BB4\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-GUJARATI",
+          "[:TELUGU:]", "[:GUJARATI:]",
+                "[\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-TELUGU",
+           "[:GUJARATI:]", "[:TELUGU:]",
+                  "[\u0c46\u0c4a\u0c55\u0c56\u0C0C\u0C0E\u0C12\u0C31\u0C61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-GUJARATI",
+          "[:KANNADA:]", "[:GUJARATI:]",
+                "[\u0A81\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-KANNADA",
+           "[:GUJARATI:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0cc6\u0cca\u0cd5\u0cd6\u0C8C\u0C8E\u0C92\u0CB1\u0CDE\u0CE1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-GUJARATI",
+          "[:MALAYALAM:]", "[:GUJARATI:]",
+                "[\u0A81\u0ac4\u0acb\u0acc\u0abc\u0Ac5\u0Ac9\u0A8D\u0A91\u0ABD\u0Ad0]", /*roundtrip exclusions*/
+                },
+        new String [] {  "GUJARATI-MALAYALAM",
+           "[:GUJARATI:]", "[:MALAYALAM:]",
+                  "[\u0d46\u0d4a\u0d4c\u0d55\u0d57\u0D0C\u0D0E\u0D12\u0D31\u0D34\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TAMIL-ORIYA",
+          "[:TAMIL:]", "[:ORIYA:]",
+                "[\u0B01\u0b3c\u0b43\u0b56\u0B0B\u0B0C\u0B16\u0B17\u0B18\u0B1B\u0B1D\u0B20\u0B21\u0B22\u0B25\u0B26\u0B27\u0B2B\u0B2C\u0B2D\u0B36\u0B3D\u0B5C\u0B5D\u0B5F\u0B60\u0B61\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-TAMIL",
+           "[:ORIYA:]", "[:TAMIL:]",
+                  "[\u0bc6\u0bca\u0bc7\u0B8E\u0B92\u0BA9\u0BB1\u0BB4\u0BB5\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-ORIYA",
+          "[:TELUGU:]", "[:ORIYA:]",
+                "[\u0b3c\u0b57\u0b56\u0B3D\u0B5C\u0B5D\u0B5F\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-TELUGU",
+           "[:ORIYA:]", "[:TELUGU:]",
+                  "[\u0c44\u0c46\u0c4a\u0c55\u0c47\u0C0E\u0C12\u0C31\u0C35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-ORIYA",
+          "[:KANNADA:]", "[:ORIYA:]",
+                "[\u0B01\u0b3c\u0b57\u0B3D\u0B5C\u0B5D\u0B5F\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-KANNADA",
+           "[:ORIYA:]", "[:KANNADA:]",
+                  "[{\u0cb0\u0cbc}{\u0cb3\u0cbc}\u0cc4\u0cc6\u0cca\u0cd5\u0cc7\u0C8E\u0C92\u0CB1\u0CB5\u0CDE]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-ORIYA",
+          "[:MALAYALAM:]", "[:ORIYA:]",
+                "[\u0B01\u0b3c\u0b56\u0B3D\u0B5C\u0B5D\u0B5F\u0b70\u0b71]", /*roundtrip exclusions*/
+                },
+        new String [] {  "ORIYA-MALAYALAM",
+           "[:ORIYA:]", "[:MALAYALAM:]",
+                  "[\u0D47\u0D46\u0D4a\u0D0E\u0D12\u0D31\u0D34\u0D35]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "TELUGU-TAMIL",
+          "[:TELUGU:]", "[:TAMIL:]",
+                "[\u0bd7\u0ba9\u0bb4\u0BF0\u0BF1\u0BF2\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-TELUGU",
+           "[:TAMIL:]", "[:TELUGU:]",
+                  "[\u0C01\u0c43\u0c44\u0c46\u0c47\u0c55\u0c56\u0c66\u0C0B\u0C0C\u0C16\u0C17\u0C18\u0C1B\u0C1D\u0C20\u0C21\u0C22\u0C25\u0C26\u0C27\u0C2B\u0C2C\u0C2D\u0C36\u0C60\u0C61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-TAMIL",
+          "[:KANNADA:]", "[:TAMIL:]",
+                "[\u0bd7\u0bc6\u0ba9\u0bb4\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-KANNADA",
+           "[:TAMIL:]", "[:KANNADA:]",
+                  "[\u0cc3\u0cc4\u0cc6\u0cc7\u0cd5\u0cd6\u0C8B\u0C8C\u0C96\u0C97\u0C98\u0C9B\u0C9D\u0CA0\u0CA1\u0CA2\u0CA5\u0CA6\u0CA7\u0CAB\u0CAC\u0CAD\u0CB6\u0cbc\u0cbd\u0CDE\u0CE0\u0CE1]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-TAMIL",
+          "[:MALAYALAM:]", "[:TAMIL:]",
+                "[\u0ba9\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TAMIL-MALAYALAM",
+           "[:TAMIL:]", "[:MALAYALAM:]",
+                  "[\u0d43\u0d12\u0D0B\u0D0C\u0D16\u0D17\u0D18\u0D1B\u0D1D\u0D20\u0D21\u0D22\u0D25\u0D26\u0D27\u0D2B\u0D2C\u0D2D\u0D36\u0D60\u0D61]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "KANNADA-TELUGU",
+          "[:KANNADA:]", "[:TELUGU:]",
+                "[\u0C01\u0c3f\u0c46\u0c48\u0c4a]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TELUGU-KANNADA",
+           "[:TELUGU:]", "[:KANNADA:]",
+                  "[\u0cc8\u0cd5\u0cd6\u0CDE\u0cbc\u0cbd]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-TELUGU",
+          "[:MALAYALAM:]", "[:TELUGU:]",
+                "[\u0C01\u0c44\u0c4a\u0c4c\u0c4b\u0c55\u0c56]", /*roundtrip exclusions*/
+                },
+        new String [] {  "TELUGU-MALAYALAM",
+           "[:TELUGU:]", "[:MALAYALAM:]",
+                  "[\u0d4c\u0d57\u0D34]", /*roundtrip exclusions*/
+                  },
+
+        new String [] {  "MALAYALAM-KANNADA",
+          "[:MALAYALAM:]", "[:KANNADA:]",
+                "[\u0cbc\u0cbd\u0cc4\u0cc6\u0cca\u0ccc\u0ccb\u0cd5\u0cd6\u0cDe]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Bengali",
+            latinForIndic, "[[:Bengali:][\u0964\u0965]]",
+               "[\u0965\u09f0-\u09fa\u09ce]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Gurmukhi",
+           latinForIndic, "[[:Gurmukhi:][\u0964\u0965]]",
+               "[\u0a01\u0a02\u0965\u0a72\u0a73\u0a74]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Gujarati",
+            latinForIndic, "[[:Gujarati:][\u0964\u0965]]",
+               "[\u0965]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Oriya",
+            latinForIndic, "[[:Oriya:][\u0964\u0965]]",
+               "[\u0965\u0b70]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Tamil",
+            latinForIndic, "[:Tamil:]",
+               "[\u0BF0\u0BF1\u0BF2]", /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Telugu",
+            latinForIndic, "[:Telugu:]",
+               null, /*roundtrip exclusions*/
+                },
+        new String [] {  "Latin-Kannada",
+            latinForIndic, "[:Kannada:]",
+               null, /*roundtrip exclusions*/
+                },
+         new String [] {  "Latin-Malayalam",
+           latinForIndic, "[:Malayalam:]",
+               null, /*roundtrip exclusions*/
+                },
+        };
+
+    public void TestInterIndic() throws Exception{
+        long start = System.currentTimeMillis();
+        int num = interIndicArray.length;
+        if (isQuick()) {
+            logln("Testing only 5 of "+ interIndicArray.length+" Skipping rest (use -e for exhaustive)");
+            num = 5;
+        }
+        if (skipIfBeforeICU(4,1,2)) {
+            logln("Warning: TestInterIndic needs to be updated to remove delete the section marked [:Age=4.1:] filter");
+        } else {
+//          We temporarily filter against Unicode 4.1, but we only do this
+            // before version 3.4.
+            errln("FAIL: TestInterIndic needs to be updated to remove delete the [:Age=4.1:] filter ");
+            return;
+        }
+        for(int i=0; i<num;i++){
+            logln("Testing " + interIndicArray[i][0] + " at index " + i   );
+            /*TODO: uncomment the line below when the transliterator is fixed
+            new Test(interIndicArray[i][0], 50)
+                .test(interIndicArray[i][1],
+                      interIndicArray[i][2],
+                      interIndicArray[i][3],
+                      this, new LegalIndic());
+            */
+            /* comment lines below  when transliterator is fixed */
+            // start
+            new Test(interIndicArray[i][0], 50)
+            .test("["+interIndicArray[i][1]+" &[:Age=4.1:]]",
+                  "["+interIndicArray[i][2]+" &[:Age=4.1:]]",
+                  interIndicArray[i][3],
+                  this, new LegalIndic());
+            //end
+        }
+        showElapsed(start, "TestInterIndic");
+    }
+
+    //---------------
+    // End Indic
+    //---------------
+
+    public static class Legal {
+        public boolean is(String sourceString) {return true;}
+    }
+
+    public static class LegalJamo extends Legal {
+        // any initial must be followed by a medial (or initial)
+        // any medial must follow an initial (or medial)
+        // any final must follow a medial (or final)
+
+        public boolean is(String sourceString) {
+            try {
+                int t;
+                String decomp = Normalizer.normalize(sourceString, Normalizer.NFD);
+                for (int i = 0; i < decomp.length(); ++i) { // don't worry about surrogates
+                    switch (getType(decomp.charAt(i))) {
+                    case 0:
+                        t = getType(decomp.charAt(i+1));
+                        if (t != 0 && t != 1) return false;
+                        break;
+                    case 1:
+                        t = getType(decomp.charAt(i-1));
+                        if (t != 0 && t != 1) return false;
+                        break;
+                    case 2:
+                        t = getType(decomp.charAt(i-1));
+                        if (t != 1 && t != 2) return false;
+                        break;
+                    }
+                }
+                return true;
+            } catch (StringIndexOutOfBoundsException e) {
+                return false;
+            }
+        }
+
+        public int getType(char c) {
+            if ('\u1100' <= c && c <= '\u1112') return 0;
+            else if ('\u1161' <= c && c  <= '\u1175') return 1;
+            else if ('\u11A8' <= c && c  <= '\u11C2') return 2;
+            return -1; // other
+        }
+    }
+
+    //static BreakIterator thaiBreak = BreakIterator.getWordInstance(new Locale("th", "TH"));
+    // anything is legal except word ending with Logical-order-exception
+    public static class LegalThai extends Legal {
+        public boolean is(String sourceString) {
+            if (sourceString.length() == 0) return true;
+            char ch = sourceString.charAt(sourceString.length() - 1); // don't worry about surrogates.
+            if (UCharacter.hasBinaryProperty(ch, UProperty.LOGICAL_ORDER_EXCEPTION)) return false;
+
+
+            // disallow anything with a wordbreak between
+            /*
+            if (UTF16.countCodePoint(sourceString) <= 1) return true;
+            thaiBreak.setText(sourceString);
+            for (int pos = thaiBreak.first(); pos != BreakIterator.DONE; pos = thaiBreak.next()) {
+                if (pos > 0 && pos < sourceString.length()) {
+                    System.out.println("Skipping " + Utility.escape(sourceString));
+                    return false;
+                }
+            }
+            */
+            return true;
+        }
+    }
+
+    // anything is legal except that Final letters can't be followed by letter; NonFinal must be
+    public static class LegalHebrew extends Legal {
+        static UnicodeSet FINAL = new UnicodeSet("[\u05DA\u05DD\u05DF\u05E3\u05E5]");
+        static UnicodeSet NON_FINAL = new UnicodeSet("[\u05DB\u05DE\u05E0\u05E4\u05E6]");
+        static UnicodeSet LETTER = new UnicodeSet("[:letter:]");
+        public boolean is(String sourceString) {
+            if (sourceString.length() == 0) return true;
+            // don't worry about surrogates.
+            for (int i = 0; i < sourceString.length(); ++i) {
+                char ch = sourceString.charAt(i);
+                char next = i+1 == sourceString.length() ? '\u0000' : sourceString.charAt(i);
+                if (FINAL.contains(ch)) {
+                    if (LETTER.contains(next)) return false;
+                } else if (NON_FINAL.contains(ch)) {
+                    if (!LETTER.contains(next)) return false;
+                }
+            }
+            return true;
+        }
+    }
+
+
+    public static class LegalGreek extends Legal {
+
+        boolean full;
+
+        public LegalGreek(boolean full) {
+            this.full = full;
+        }
+
+        static final char IOTA_SUBSCRIPT = '\u0345';
+        static final UnicodeSet breathing = new UnicodeSet("[\\u0313\\u0314']");
+        static final UnicodeSet validSecondVowel = new UnicodeSet("[\\u03C5\\u03B9\\u03A5\\u0399]");
+
+        public static boolean isVowel(char c) {
+            return "\u03B1\u03B5\u03B7\u03B9\u03BF\u03C5\u03C9\u0391\u0395\u0397\u0399\u039F\u03A5\u03A9".indexOf(c) >= 0;
+        }
+
+        public static boolean isRho(char c) {
+            return "\u03C1\u03A1".indexOf(c) >= 0;
+        }
+
+        public boolean is(String sourceString) {
+            try {
+                String decomp = Normalizer.normalize(sourceString, Normalizer.NFD);
+
+                // modern is simpler: don't care about anything but a grave
+                if (!full) {
+                    //if (sourceString.equals("\u039C\u03C0")) return false;
+                    for (int i = 0; i < decomp.length(); ++i) {
+                        char c = decomp.charAt(i);
+                        // exclude all the accents
+                        if (c == '\u0313' || c == '\u0314' || c == '\u0300' || c == '\u0302'
+                            || c == '\u0342' || c == '\u0345'
+                            ) return false;
+                    }
+                    return true;
+                }
+
+                // Legal full Greek has breathing marks IFF there is a vowel or RHO at the start
+                // IF it has them, it has exactly one.
+                // IF it starts with a RHO, then the breathing mark must come before the second letter.
+                // IF it starts with a vowel, then it must before the third letter.
+                //  it will only come after the second if of the format [vowel] [no iota subscript!] [upsilon or iota]
+                // Since there are no surrogates in greek, don't worry about them
+
+                boolean firstIsVowel = false;
+                boolean firstIsRho = false;
+                boolean noLetterYet = true;
+                int breathingCount = 0;
+                int letterCount = 0;
+                //int breathingPosition = -1;
+
+                for (int i = 0; i < decomp.length(); ++i) {
+                    char c = decomp.charAt(i);
+                    if (UCharacter.isLetter(c)) {
+                        ++letterCount;
+                        if (firstIsVowel && !validSecondVowel.contains(c) && breathingCount == 0) return false;
+                        if (noLetterYet) {
+                            noLetterYet = false;
+                            firstIsVowel = isVowel(c);
+                            firstIsRho = isRho(c);
+                        }
+                        if (firstIsRho && letterCount == 2 && breathingCount == 0) return false;
+                    }
+                    if (c == IOTA_SUBSCRIPT && firstIsVowel && breathingCount == 0) return false;
+                    if (breathing.contains(c)) {
+                       // breathingPosition = i;
+                        ++breathingCount;
+                    }
+                }
+
+                if (firstIsVowel || firstIsRho) return breathingCount == 1;
+                return breathingCount == 0;
+            } catch (Throwable t) {
+                System.out.println(t.getClass().getName() + " " + t.getMessage());
+                return true;
+            }
+        }
+    }
+
+    static class Test {
+
+        PrintWriter out;
+
+        private String transliteratorID;
+        private int errorLimit = 500;
+        private int errorCount = 0;
+        private int pairLimit  = 0x10000;
+        private int density = 100;
+        UnicodeSet sourceRange;
+        UnicodeSet targetRange;
+        UnicodeSet toSource;
+        UnicodeSet toTarget;
+        UnicodeSet roundtripExclusions;
+
+        RoundTripTest log;
+        Legal legalSource;
+        UnicodeSet badCharacters;
+
+        /*
+         * create a test for the given script transliterator.
+         */
+        Test(String transliteratorID) {
+            this(transliteratorID, 100);
+        }
+
+        Test(String transliteratorID, int dens) {
+            this.transliteratorID = transliteratorID;
+            this.density = dens;
+        }
+
+        public void setErrorLimit(int limit) {
+            errorLimit = limit;
+        }
+
+        public void setPairLimit(int limit) {
+            pairLimit = limit;
+        }
+
+        // Added to do better equality check.
+
+        public static boolean isSame(String a, String b) {
+            if (a.equals(b)) return true;
+            if (a.equalsIgnoreCase(b) && isCamel(a)) return true;
+            a = Normalizer.normalize(a, Normalizer.NFD);
+            b = Normalizer.normalize(b, Normalizer.NFD);
+            if (a.equals(b)) return true;
+            if (a.equalsIgnoreCase(b) && isCamel(a)) return true;
+            return false;
+        }
+
+        /*
+        public boolean includesSome(UnicodeSet set, String a) {
+            int cp;
+            for (int i = 0; i < a.length(); i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(a, i);
+                if (set.contains(cp)) return true;
+            }
+            return false;
+        }
+        */
+
+        public static boolean isCamel(String a) {
+            //System.out.println("CamelTest");
+            // see if string is of the form aB; e.g. lower, then upper or title
+            int cp;
+            boolean haveLower = false;
+            for (int i = 0; i < a.length(); i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(a, i);
+                int t = UCharacter.getType(cp);
+                //System.out.println("\t" + t + " " + Integer.toString(cp,16) + " " + UCharacter.getName(cp));
+                switch (t) {
+                    case Character.UPPERCASE_LETTER:
+                        if (haveLower) return true;
+                        break;
+                    case Character.TITLECASE_LETTER:
+                        if (haveLower) return true;
+                        // drop through, since second letter is lower.
+                    case Character.LOWERCASE_LETTER:
+                        haveLower = true;
+                        break;
+                }
+            }
+            //System.out.println("FALSE");
+            return false;
+        }
+
+        static final UnicodeSet okAnyway = new UnicodeSet("[^[:Letter:]]");
+        static final UnicodeSet neverOk = new UnicodeSet("[:Other:]");
+
+        public void test(String srcRange, String trgtRange,
+          String rdtripExclusions, RoundTripTest logger, Legal legalSrc)
+          throws java.io.IOException {
+            test(srcRange, trgtRange, srcRange, rdtripExclusions, logger, legalSrc);
+        }
+
+        /**
+         * Will test 
+         * that everything in sourceRange maps to targetRange,
+         * that everything in targetRange maps to backtoSourceRange
+         * that everything roundtrips from target -> source -> target, except roundtripExceptions
+         */
+        public void test(String srcRange, String trgtRange, String backtoSourceRange,
+          String rdtripExclusions, RoundTripTest logger, Legal legalSrc)
+          throws java.io.IOException {
+
+            legalSource = legalSrc;
+            sourceRange = new UnicodeSet(srcRange);
+            sourceRange.removeAll(neverOk);
+
+            targetRange = new UnicodeSet(trgtRange);
+            targetRange.removeAll(neverOk);
+
+            toSource = new UnicodeSet(backtoSourceRange);
+            toSource.addAll(okAnyway);
+
+            toTarget = new UnicodeSet(trgtRange);
+            toTarget.addAll(okAnyway);
+
+            if (rdtripExclusions != null && rdtripExclusions.length() > 0) {
+                roundtripExclusions = new UnicodeSet(rdtripExclusions);
+            }else{
+                roundtripExclusions = new UnicodeSet(); // empty
+            }
+
+            log = logger;
+
+            log.logln(Utility.escape("Source:  " + sourceRange));
+            log.logln(Utility.escape("Target:  " + targetRange));
+            log.logln(Utility.escape("Exclude: " + roundtripExclusions));
+            if (log.isQuick()) log.logln("Abbreviated Test");
+
+            badCharacters = new UnicodeSet("[:other:]");
+
+            // make a UTF-8 output file we can read with a browser
+
+            // note: check that every transliterator transliterates the null string correctly!
+
+        // {dlf} reorganize so can run test in protected security environment
+//              String logFileName = "test_" + transliteratorID.replace('/', '_') + ".html";
+
+//              File lf = new File(logFileName);
+//              log.logln("Creating log file " + lf.getAbsoluteFile());
+
+//              out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
+//                        new FileOutputStream(logFileName), "UTF8"), 4*1024));
+
+        ByteArrayOutputStream bast = new ByteArrayOutputStream();
+            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
+                      bast, "UTF8"), 4*1024));
+            //out.write('\uFFEF');    // BOM
+            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
+            out.println("<HTML><HEAD>");
+            out.println("<META content=\"text/html; charset=utf-8\" http-equiv=Content-Type></HEAD>");
+            out.println("<BODY bgcolor='#FFFFFF' style='font-family: Arial Unicode MS'>");
+
+            try {
+                test2();
+            } catch (TestTruncated e) {
+                out.println(e.getMessage());
+            }
+            out.println("</BODY></HTML>");
+            out.close();
+
+            if (errorCount > 0) {
+        try {
+            String logFileName = "test_" + transliteratorID.replace('/', '_') + ".html";
+            File lf = new File(logFileName);
+            logger.logln("Creating log file " + lf.getAbsoluteFile());
+            FileOutputStream fos = new FileOutputStream(lf);
+            fos.write(bast.toByteArray());
+            fos.close();
+            logger.errln(transliteratorID + " errors: "
+                  + errorCount + (errorCount > errorLimit ? " (at least!)" : "")
+                  + ", see " + lf.getAbsoluteFile());
+        }
+        catch (SecurityException e) {
+            logger.errln(transliteratorID + " errors: "
+                  + errorCount + (errorCount > errorLimit ? " (at least!)" : "")
+                  + ", no log provided due to protected test domain");
+        }
+            } else {
+                logger.logln(transliteratorID + " ok");
+//                  new File(logFileName).delete();
+            }
+        }
+
+        // ok if at least one is not equal
+        public boolean checkIrrelevants(Transliterator t, String irrelevants) {
+            for (int i = 0; i < irrelevants.length(); ++i) {
+                char c = irrelevants.charAt(i);
+                String cs = UTF16.valueOf(c);
+                String targ = t.transliterate(cs);
+                if (cs.equals(targ)) return true;
+            }
+            return false;
+        }
+
+        public void test2() {
+
+            Transliterator sourceToTarget = Transliterator.getInstance(transliteratorID);
+            Transliterator targetToSource = sourceToTarget.getInverse();
+            AbbreviatedUnicodeSetIterator usi = new AbbreviatedUnicodeSetIterator();
+            AbbreviatedUnicodeSetIterator usi2 = new AbbreviatedUnicodeSetIterator();
+
+            log.logln("Checking that at least one irrevant characters is not NFC'ed");
+            out.println("<h3>Checking that at least one irrevant characters is not NFC'ed</h3>");
+
+            String irrelevants = "\u2000\u2001\u2126\u212A\u212B\u2329"; // string is from NFC_NO in the UCD
+
+            if (!checkIrrelevants(sourceToTarget, irrelevants)) {
+                logFails("Source-Target, Must not NFC everything");
+            }
+            if (!checkIrrelevants(targetToSource, irrelevants)) {
+                logFails("Target-Source, irrelevants");
+            }
+
+            if (EXTRA_TESTS) {
+                log.logln("Checking that toRules works");
+                String rules = "";
+                Transliterator sourceToTarget2;
+                Transliterator targetToSource2;
+                try {
+                    rules = sourceToTarget.toRules(false);
+                    sourceToTarget2 = Transliterator.createFromRules("s2t2", rules, Transliterator.FORWARD);
+                    if (PRINT_RULES) {
+                        out.println("<h3>Forward Rules:</h3><p>");
+                        out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                        out.println("</p>");
+                    }
+                    rules = targetToSource.toRules(false);
+                    targetToSource2 = Transliterator.createFromRules("t2s2", rules, Transliterator.FORWARD);
+                    if (PRINT_RULES) {
+                        out.println("<h3>Backward Rules:</h3><p>");
+                        out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                        out.println("</p>");
+                    }
+                } catch (RuntimeException e) {
+                    out.println("<h3>Broken Rules:</h3><p>");
+                    out.println(TestUtility.replace(rules, "\n", "<br>\n"));
+                    out.println("</p>");
+                    out.flush();
+                    throw e;
+                }
+
+               out.println("<h3>Roundtrip Exclusions: " + new UnicodeSet(roundtripExclusions) + "</h3>");
+               out.flush();
+
+              log.logln("Checking that source -> target -> source");
+              out.println("<h3>Checking that source -> target -> source</h3>");
+              
+              usi.reset(sourceRange);
+                while (usi.next()) {
+                    int c = usi.codepoint;
+
+                    String cs = UTF16.valueOf(c);
+                    String targ = sourceToTarget.transliterate(cs);
+                    String targ2 = sourceToTarget2.transliterate(cs);
+                    if (!targ.equals(targ2)) {
+                        logToRulesFails("Source-Target, toRules", cs, targ, targ2);
+                    }
+                }
+
+                log.logln("Checking that target -> source -> target");
+                out.println("<h3>Checking that target -> source -> target</h3>");
+               usi.reset(targetRange);
+                while (usi.next()) {
+                    int c = usi.codepoint;
+
+                    String cs = UTF16.valueOf(c);
+                    String targ = targetToSource.transliterate(cs);
+                    String targ2 = targetToSource2.transliterate(cs);
+                    if (!targ.equals(targ2)) {
+                        logToRulesFails("Target-Source, toRules", cs, targ, targ2);
+                    }
+                }
+            }
+
+
+            log.logln("Checking that source characters convert to target - Singles");
+            out.println("<h3>Checking that source characters convert to target - Singles</h3>");
+
+            UnicodeSet failSourceTarg = new UnicodeSet();
+
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) {
+                if (!sourceRange.contains(c)) continue;
+                */
+            usi.reset(sourceRange);
+            while (usi.next()) {
+                int c = usi.codepoint;
+
+                String cs = UTF16.valueOf(c);
+                String targ = sourceToTarget.transliterate(cs);
+                if (!toTarget.containsAll(targ)
+                        || badCharacters.containsSome(targ)) {
+                    String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                    if (!toTarget.containsAll(targD)
+                            || badCharacters.containsSome(targD)) {
+                        logWrongScript("Source-Target", cs, targ, toTarget, badCharacters);
+                        failSourceTarg.add(c);
+                        continue;
+                    }
+                }
+
+                String cs2 = Normalizer.normalize(cs, Normalizer.NFD);
+                String targ2 = sourceToTarget.transliterate(cs2);
+                if (!targ.equals(targ2)) {
+                    logNotCanonical("Source-Target", cs, targ, cs2, targ2);
+                }
+            }
+
+            log.logln("Checking that source characters convert to target - Doubles");
+            out.println("<h3>Checking that source characters convert to target - Doubles</h3>");
+
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) {
+                if (TestUtility.isUnassigned(c) ||
+                    !sourceRange.contains(c)) continue;
+                if (failSourceTarg.get(c)) continue;
+
+            */
+
+            UnicodeSet sourceRangeMinusFailures = new UnicodeSet(sourceRange);
+            sourceRangeMinusFailures.removeAll(failSourceTarg);
+
+            boolean quickRt = log.getInclusion() < 10;
+
+            usi.reset(sourceRangeMinusFailures, quickRt, density);
+
+            while (usi.next()) {
+                int c = usi.codepoint;
+
+                /*
+                for (char d = 0; d < 0xFFFF; ++d) {
+                    if (TestUtility.isUnassigned(d) ||
+                        !sourceRange.contains(d)) continue;
+                    if (failSourceTarg.get(d)) continue;
+                */
+                usi2.reset(sourceRangeMinusFailures, quickRt, density);
+
+                while (usi2.next()) {
+                    int d = usi2.codepoint;
+
+                    String cs = UTF16.valueOf(c) + UTF16.valueOf(d);
+                    String targ = sourceToTarget.transliterate(cs);
+                    if (!toTarget.containsAll(targ)
+                            || badCharacters.containsSome(targ)) {
+                        String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                        if (!toTarget.containsAll(targD)
+                                || badCharacters.containsSome(targD)) {
+                            logWrongScript("Source-Target", cs, targ, toTarget, badCharacters);
+                            continue;
+                        }
+                    }
+                    String cs2 = Normalizer.normalize(cs, Normalizer.NFD);
+                    String targ2 = sourceToTarget.transliterate(cs2);
+                    if (!targ.equals(targ2)) {
+                        logNotCanonical("Source-Target", cs, targ, cs2, targ2);
+                    }
+                }
+            }
+
+            log.logln("Checking that target characters convert to source and back - Singles");
+            out.println("<h3>Checking that target characters convert to source and back - Singles</h3>");
+
+            UnicodeSet failTargSource = new UnicodeSet();
+            UnicodeSet failRound = new UnicodeSet();
+
+            /*for (char c = 0; c < 0xFFFF; ++c) {
+                if (TestUtility.isUnassigned(c) ||
+                    !targetRange.contains(c)) continue;
+                    */
+
+            usi.reset(targetRange);
+            while (usi.next()) {
+                String cs;
+                int c;
+                if(usi.codepoint == UnicodeSetIterator.IS_STRING){
+                    cs = usi.string;
+                    c = UTF16.charAt(cs,0);
+                }else{
+                    c = usi.codepoint;
+                    cs =UTF16.valueOf(c);
+                }
+
+                String targ = targetToSource.transliterate(cs);
+                String reverse = sourceToTarget.transliterate(targ);
+
+                if (!toSource.containsAll(targ)
+                        || badCharacters.containsSome(targ)) {
+                    String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                    if (!toSource.containsAll(targD)
+                            || badCharacters.containsSome(targD)) {
+                                /*UnicodeSet temp = */new UnicodeSet().addAll(targD);
+                        logWrongScript("Target-Source", cs, targ, toSource, badCharacters);
+                        failTargSource.add(cs);
+                        continue;
+                    }
+                }
+                if (!isSame(cs, reverse) && !roundtripExclusions.contains(c)
+                    && !roundtripExclusions.contains(cs)) {
+                    logRoundTripFailure(cs,targetToSource.getID(), targ,sourceToTarget.getID(), reverse);
+                    failRound.add(c);
+                    continue;
+                }
+                String targ2 = Normalizer.normalize(targ, Normalizer.NFD);
+                String reverse2 = sourceToTarget.transliterate(targ2);
+                if (!reverse.equals(reverse2)) {
+                    logNotCanonical("Target-Source", targ, reverse, targ2, reverse2);
+                }
+            }
+
+            log.logln("Checking that target characters convert to source and back - Doubles");
+            out.println("<h3>Checking that target characters convert to source and back - Doubles</h3>");
+            int count = 0;
+
+            UnicodeSet targetRangeMinusFailures = new UnicodeSet(targetRange);
+            targetRangeMinusFailures.removeAll(failTargSource);
+            targetRangeMinusFailures.removeAll(failRound);
+
+            //char[] buf = new char[4]; // maximum we can have with 2 code points
+            /*
+            for (char c = 0; c < 0xFFFF; ++c) {
+                if (TestUtility.isUnassigned(c) ||
+                    !targetRange.contains(c)) continue;
+                    */
+
+            usi.reset(targetRangeMinusFailures, quickRt, density);
+
+            while (usi.next()) {
+                int c = usi.codepoint;
+
+                if (++count > pairLimit) {
+                    throw new TestTruncated("Test truncated at " + pairLimit + " x 64k pairs");
+                }
+                //log.log(TestUtility.hex(c));
+
+                /*
+                for (char d = 0; d < 0xFFFF; ++d) {
+                    if (TestUtility.isUnassigned(d) ||
+                        !targetRange.contains(d)) continue;
+                        */
+                usi2.reset(targetRangeMinusFailures, quickRt, density);
+
+                while (usi2.next()) {
+                    int d = usi2.codepoint;
+                    if (d < 0) break;
+
+                    String cs = UTF16.valueOf(c) + UTF16.valueOf(d);
+                    String targ = targetToSource.transliterate(cs);
+                    String reverse = sourceToTarget.transliterate(targ);
+
+                    if (!toSource.containsAll(targ) /*&& !failTargSource.contains(c) && !failTargSource.contains(d)*/
+                            || badCharacters.containsSome(targ)) {
+                        String targD = Normalizer.normalize(targ, Normalizer.NFD);
+                        if (!toSource.containsAll(targD) /*&& !failTargSource.contains(c) && !failTargSource.contains(d)*/
+                                || badCharacters.containsSome(targD)) {
+                            logWrongScript("Target-Source", cs, targ, toSource, badCharacters);
+                            continue;
+                        }
+                    }
+                    if (!isSame(cs, reverse) /*&& !failRound.contains(c) && !failRound.contains(d)*/
+                         && !roundtripExclusions.contains(c)
+                         && !roundtripExclusions.contains(d)
+                         && !roundtripExclusions.contains(cs)) {
+                        logRoundTripFailure(cs,targetToSource.getID(), targ,sourceToTarget.getID(), reverse);
+                        continue;
+                    }
+                    String targ2 = Normalizer.normalize(targ, Normalizer.NFD);
+                    String reverse2 = sourceToTarget.transliterate(targ2);
+                    if (!reverse.equals(reverse2)) {
+                        logNotCanonical("Target-Source", targ, reverse, targ2, reverse2);
+                    }
+                }
+            }
+            log.logln("");
+        }
+
+        final String info(String s) {
+            StringBuffer result = new StringBuffer();
+            result.append("\u200E").append(s).append("\u200E (").append(TestUtility.hex(s)).append("/");
+            if (false) { // append age, as a check
+                int cp = 0;    
+                for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+                    cp = UTF16.charAt(s, i);
+                    if (i > 0) result.append(", ");
+                    result.append(UCharacter.getAge(cp));
+                }
+            }
+            result.append(")");
+            return result.toString();
+        }
+
+        final void logWrongScript(String label, String from, String to, 
+          UnicodeSet shouldContainAll, UnicodeSet shouldNotContainAny) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            String toD = Normalizer.normalize(to, Normalizer.NFD);
+            UnicodeSet temp = new UnicodeSet().addAll(toD);
+            UnicodeSet bad = new UnicodeSet(shouldNotContainAny).retainAll(temp)
+                .addAll(new UnicodeSet(temp).removeAll(shouldContainAll));
+
+            out.println("<br>Fail " + label + ": " +
+                        info(from) + " => " + info(to) + " " + bad
+                        );
+        }
+        
+        final void logNotCanonical(String label, String from, String to, String fromCan, String toCan) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail (can.equiv) " + label + ": " +
+                        info(from) + " => " + info(to) +
+                        " -- " +
+                        info(fromCan) + " => " + info(toCan) + ")"
+                        );
+        }
+
+        final void logFails(String label) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail (can.equiv)" + label);
+        }
+
+        final void logToRulesFails(String label, String from, String to, String toCan) {
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail " + label + ": " +
+                        info(from) + " => " + info(to) + ", " + info(toCan)
+                        );
+        }
+
+        final void logRoundTripFailure(String from,String toID, String to,String backID, String back) {
+            if (!legalSource.is(from)) return; // skip illegals
+
+            if (++errorCount > errorLimit) {
+                throw new TestTruncated("Test truncated; too many failures");
+            }
+            out.println("<br>Fail Roundtrip: " +
+                        info(from) + " "+toID+" => " + info(to) + " " + backID+" => " + info(back)
+                        );
+        }
+
+        /*
+         * Characters to filter for source-target mapping completeness
+         * Typically is base alphabet, minus extended characters
+         * Default is ASCII letters for Latin
+         */
+         /*
+        public boolean isSource(char c) {
+            if (!sourceRange.contains(c)) return false;
+            return true;
+        }
+        */
+
+        /*
+         * Characters to check for target back to source mapping.
+         * Typically the same as the target script, plus punctuation
+         */
+         /*
+        public boolean isReceivingSource(char c) {
+            if (!targetRange.contains(c)) return false;
+            return true;
+        }
+        */
+        /*
+         * Characters to filter for target-source mapping
+         * Typically is base alphabet, minus extended characters
+         */
+         /*
+        public boolean isTarget(char c) {
+            byte script = TestUtility.getScript(c);
+            if (script != targetScript) return false;
+            if (!TestUtility.isLetter(c)) return false;
+            if (targetRange != null && !targetRange.contains(c)) return false;
+            return true;
+        }
+        */
+
+        /*
+         * Characters to check for target-source mapping
+         * Typically the same as the source script, plus punctuation
+         */
+        /*
+        public boolean isReceivingTarget(char c) {
+            byte script = TestUtility.getScript(c);
+            return (script == targetScript || script == TestUtility.COMMON_SCRIPT);
+        }
+
+        final boolean isSource(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isSource(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isTarget(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isTarget(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isReceivingSource(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isReceivingSource(s.charAt(i))) return false;
+            }
+            return true;
+        }
+
+        final boolean isReceivingTarget(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                if (!isReceivingTarget(s.charAt(i))) return false;
+            }
+            return true;
+        }
+        */
+
+        static class TestTruncated extends RuntimeException {
+            /**
+             * For serialization
+             */
+            private static final long serialVersionUID = 3361828190488168323L;
+
+            TestTruncated(String msg) {
+                super(msg);
+            }
+        }
+    }
+
+//  static class TestHangul extends Test {
+//      TestHangul () {
+//          super("Jamo-Hangul", TestUtility.JAMO_SCRIPT, TestUtility.HANGUL_SCRIPT);
+//      }
+//
+//      public boolean isSource(char c) {
+//          if (0x1113 <= c && c <= 0x1160) return false;
+//          if (0x1176 <= c && c <= 0x11F9) return false;
+//          if (0x3131 <= c && c <= 0x318E) return false;
+//          return super.isSource(c);
+//      }
+//  }
+}
diff --git a/src/com/ibm/icu/dev/test/translit/TestAll.java b/src/com/ibm/icu/dev/test/translit/TestAll.java
new file mode 100644
index 0000000..3541145
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/TestAll.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+
+public class TestAll extends TestGroup {
+    public static void main(String[] args) {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(new String[] {
+            "TransliteratorTest",
+            "UnicodeSetTest",
+            "CompoundTransliteratorTest",
+            "JamoTest",
+            "ErrorTest",
+            "RoundTripTest",
+            "ReplaceableTest",
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "Translit";
+}
diff --git a/src/com/ibm/icu/dev/test/translit/TestUtility.java b/src/com/ibm/icu/dev/test/translit/TestUtility.java
new file mode 100644
index 0000000..9bf23ce
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/TestUtility.java
@@ -0,0 +1,444 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.text.*;
+
+public final class TestUtility {
+
+    public static String hex(char ch) {
+        String foo = Integer.toString(ch,16).toUpperCase();
+        return "0000".substring(0,4-foo.length()) + foo;
+    }
+    
+    public static String hex(int ch) {
+        String foo = Integer.toString(ch,16).toUpperCase();
+        return "00000000".substring(0,4-foo.length()) + foo;
+    }
+    
+    public static String hex(String s) {
+      return hex(s,",");
+    }
+    
+    public static String hex(String s, String sep) {
+      if (s.length() == 0) return "";
+      String result = hex(s.charAt(0));
+      for (int i = 1; i < s.length(); ++i) {
+        result += sep;
+        result += hex(s.charAt(i));
+      }
+      return result;
+    }
+    
+    public static String replace(String source, String toBeReplaced, String replacement) {
+        StringBuffer results = new StringBuffer();
+        int len = toBeReplaced.length();
+        for (int i = 0; i < source.length(); ++i) {
+            if (source.regionMatches(false, i, toBeReplaced, 0, len)) {
+                results.append(replacement);
+                i += len - 1; // minus one, since we will increment
+            } else {
+                results.append(source.charAt(i));
+            }
+        }
+        return results.toString();
+    }
+    
+    public static String replaceAll(String source, UnicodeSet set, String replacement) {
+        StringBuffer results = new StringBuffer();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source,i);
+            if (set.contains(cp)) {
+                results.append(replacement);
+            } else {
+                UTF16.append(results, cp);
+            }
+        }
+        return results.toString();
+    }
+    
+    // COMMENTED OUT ALL THE OLD SCRIPT STUFF
+    /*
+    public static byte getScript(char c) {
+      return getScript(getBlock(c));
+    }
+    
+    public static byte getScript(byte block) {
+      return blockToScript[block];
+    }
+    
+    public static byte getBlock(char c) {
+      int index = c >> 7;
+      byte block = charToBlock[index];
+      while (block < 0) { // take care of exceptions, blocks split across 128 boundaries
+          int[] tuple = split[-block-1];
+          if (c < tuple[0]) block = (byte)tuple[1];
+          else block = (byte)tuple[2];
+      }
+      return block;
+    }
+               
+    // returns next letter of script, or 0xFFFF if done
+    
+    public static char getNextLetter(char c, byte script) {
+        while (c < 0xFFFF) {
+            ++c;
+            if (getScript(c) == script && Character.isLetter(c)) {
+                return c;
+            }
+        }
+        return c;
+    }
+    
+    // Supplements to Character methods; these methods go through
+    // UCharacter if possible.  If not, they fall back to Character.
+
+    public static boolean isUnassigned(char c) {
+        try {
+            return UCharacter.getType(c) == UCharacterCategory.UNASSIGNED;
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        return Character.getType(c) == Character.UNASSIGNED;
+    }
+
+    public static boolean isLetter(char c) {
+        try {
+            return UCharacter.isLetter(c);
+        } catch (NullPointerException e) {
+            System.out.print("");
+        }
+        return Character.isLetter(c);
+    }
+
+  public static void main(String[] args) {
+    System.out.println("Blocks: ");
+    byte lastblock = -128;
+    for (char cc = 0; cc < 0xFFFF; ++cc) {
+      byte block = TestUtility.getBlock(cc);
+      if (block != lastblock) {
+        System.out.println(TestUtility.hex(cc) + "\t" + block);
+        lastblock = block;
+      }
+    }
+    System.out.println();
+    System.out.println("Scripts: ");
+    byte lastScript = -128;
+    for (char cc = 0; cc < 0xFFFF; ++cc) {
+      byte script = TestUtility.getScript(cc);
+      if (script != lastScript) {
+        System.out.println(TestUtility.hex(cc) + "\t" + script);
+        lastScript = script;
+      }
+    }
+  }
+      
+    
+    
+    public static final byte // SCRIPT CODE
+        COMMON_SCRIPT = 0,
+        LATIN_SCRIPT = 1,
+        GREEK_SCRIPT = 2,
+        CYRILLIC_SCRIPT = 3,
+        ARMENIAN_SCRIPT = 4,
+        HEBREW_SCRIPT = 5,
+        ARABIC_SCRIPT = 6,
+        SYRIAC_SCRIPT = 7,
+        THAANA_SCRIPT = 8, 
+        DEVANAGARI_SCRIPT = 9,
+        BENGALI_SCRIPT = 10,
+        GURMUKHI_SCRIPT = 11,
+        GUJARATI_SCRIPT = 12,
+        ORIYA_SCRIPT = 13,
+        TAMIL_SCRIPT = 14,
+        TELUGU_SCRIPT = 15,
+        KANNADA_SCRIPT = 16,
+        MALAYALAM_SCRIPT = 17,
+        SINHALA_SCRIPT = 18,
+        THAI_SCRIPT = 19,
+        LAO_SCRIPT = 20,
+        TIBETAN_SCRIPT = 21,
+        MYANMAR_SCRIPT = 22,
+        GEORGIAN_SCRIPT = 23,
+        JAMO_SCRIPT = 24,
+        HANGUL_SCRIPT = 25,
+        ETHIOPIC_SCRIPT = 26,
+        CHEROKEE_SCRIPT = 27,
+        ABORIGINAL_SCRIPT = 28,
+        OGHAM_SCRIPT = 29,
+        RUNIC_SCRIPT = 30,
+        KHMER_SCRIPT = 31,
+        MONGOLIAN_SCRIPT = 32,
+        HIRAGANA_SCRIPT = 33,
+        KATAKANA_SCRIPT = 34,
+        BOPOMOFO_SCRIPT = 35,
+        HAN_SCRIPT = 36,
+        YI_SCRIPT = 37;
+    
+    public static final byte // block code
+        RESERVED_BLOCK = 0,
+        BASIC_LATIN = 1,
+        LATIN_1_SUPPLEMENT = 2,
+        LATIN_EXTENDED_A = 3,
+        LATIN_EXTENDED_B = 4,
+        IPA_EXTENSIONS = 5,
+        SPACING_MODIFIER_LETTERS = 6,
+        COMBINING_DIACRITICAL_MARKS = 7,
+        GREEK = 8,
+        CYRILLIC = 9,
+        ARMENIAN = 10,
+        HEBREW = 11,
+        ARABIC = 12,
+        SYRIAC = 13,
+        THAANA = 14,
+        DEVANAGARI = 15,
+        BENGALI = 16,
+        GURMUKHI = 17,
+        GUJARATI = 18,
+        ORIYA = 19,
+        TAMIL = 20,
+        TELUGU = 21,
+        KANNADA = 22,
+        MALAYALAM = 23,
+        SINHALA = 24,
+        THAI = 25,
+        LAO = 26,
+        TIBETAN = 27,
+        MYANMAR = 28,
+        GEORGIAN = 29,
+        HANGUL_JAMO = 30,
+        ETHIOPIC = 31,
+        CHEROKEE = 32,
+        UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = 33,
+        OGHAM = 34,
+        RUNIC = 35,
+        KHMER = 36,
+        MONGOLIAN = 37,
+        LATIN_EXTENDED_ADDITIONAL = 38,
+        GREEK_EXTENDED = 39,
+        GENERAL_PUNCTUATION = 40,
+        SUPERSCRIPTS_AND_SUBSCRIPTS = 41,
+        CURRENCY_SYMBOLS = 42,
+        COMBINING_MARKS_FOR_SYMBOLS = 43,
+        LETTERLIKE_SYMBOLS = 44,
+        NUMBER_FORMS = 45,
+        ARROWS = 46,
+        MATHEMATICAL_OPERATORS = 47,
+        MISCELLANEOUS_TECHNICAL = 48,
+        CONTROL_PICTURES = 49,
+        OPTICAL_CHARACTER_RECOGNITION = 50,
+        ENCLOSED_ALPHANUMERICS = 51,
+        BOX_DRAWING = 52,
+        BLOCK_ELEMENTS = 53,
+        GEOMETRIC_SHAPES = 54,
+        MISCELLANEOUS_SYMBOLS = 55,
+        DINGBATS = 56,
+        BRAILLE_PATTERNS = 57,
+        CJK_RADICALS_SUPPLEMENT = 58,
+        KANGXI_RADICALS = 59,
+        IDEOGRAPHIC_DESCRIPTION_CHARACTERS = 60,
+        CJK_SYMBOLS_AND_PUNCTUATION = 61,
+        HIRAGANA = 62,
+        KATAKANA = 63,
+        BOPOMOFO = 64,
+        HANGUL_COMPATIBILITY_JAMO = 65,
+        KANBUN = 66,
+        BOPOMOFO_EXTENDED = 67,
+        ENCLOSED_CJK_LETTERS_AND_MONTHS = 68,
+        CJK_COMPATIBILITY = 69,
+        CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = 70,
+        CJK_UNIFIED_IDEOGRAPHS = 71,
+        YI_SYLLABLES = 72,
+        YI_RADICALS = 73,
+        HANGUL_SYLLABLES = 74,
+        HIGH_SURROGATES = 75,
+        HIGH_PRIVATE_USE_SURROGATES = 76,
+        LOW_SURROGATES = 77,
+        PRIVATE_USE = 78,
+        CJK_COMPATIBILITY_IDEOGRAPHS = 79,
+        ALPHABETIC_PRESENTATION_FORMS = 80,
+        ARABIC_PRESENTATION_FORMS_A = 81,
+        COMBINING_HALF_MARKS = 82,
+        CJK_COMPATIBILITY_FORMS = 83,
+        SMALL_FORM_VARIANTS = 84,
+        ARABIC_PRESENTATION_FORMS_B = 85,
+        SPECIALS = 86,
+        HALFWIDTH_AND_FULLWIDTH_FORMS = 87;
+        
+    static final byte[] blockToScript = {
+        COMMON_SCRIPT, // 0, <RESERVED_BLOCK>
+        LATIN_SCRIPT, // 1, BASIC_LATIN
+        LATIN_SCRIPT, // 2, LATIN_1_SUPPLEMENT
+        LATIN_SCRIPT, // 3, LATIN_EXTENDED_A
+        LATIN_SCRIPT, // 4, LATIN_EXTENDED_B
+        LATIN_SCRIPT, // 5, IPA_EXTENSIONS
+        COMMON_SCRIPT, // 6, SPACING_MODIFIER_LETTERS
+        COMMON_SCRIPT, // 7, COMBINING_DIACRITICAL_MARKS
+        GREEK_SCRIPT, // 8, GREEK
+        CYRILLIC_SCRIPT, // 9, CYRILLIC
+        ARMENIAN_SCRIPT, // 10, ARMENIAN
+        HEBREW_SCRIPT, // 11, HEBREW
+        ARABIC_SCRIPT, // 12, ARABIC
+        SYRIAC_SCRIPT, // 13, SYRIAC
+        THAANA_SCRIPT, // 14, THAANA
+        DEVANAGARI_SCRIPT, // 15, DEVANAGARI
+        BENGALI_SCRIPT, // 16, BENGALI
+        GURMUKHI_SCRIPT, // 17, GURMUKHI
+        GUJARATI_SCRIPT, // 18, GUJARATI
+        ORIYA_SCRIPT, // 19, ORIYA
+        TAMIL_SCRIPT, // 20, TAMIL
+        TELUGU_SCRIPT, // 21, TELUGU
+        KANNADA_SCRIPT, // 22, KANNADA
+        MALAYALAM_SCRIPT, // 23, MALAYALAM
+        SINHALA_SCRIPT, // 24, SINHALA
+        THAI_SCRIPT, // 25, THAI
+        LAO_SCRIPT, // 26, LAO
+        TIBETAN_SCRIPT, // 27, TIBETAN
+        MYANMAR_SCRIPT, // 28, MYANMAR
+        GEORGIAN_SCRIPT, // 29, GEORGIAN
+        JAMO_SCRIPT, // 30, HANGUL_JAMO
+        ETHIOPIC_SCRIPT, // 31, ETHIOPIC
+        CHEROKEE_SCRIPT, // 32, CHEROKEE
+        ABORIGINAL_SCRIPT, // 33, UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS
+        OGHAM_SCRIPT, // 34, OGHAM
+        RUNIC_SCRIPT, // 35, RUNIC
+        KHMER_SCRIPT, // 36, KHMER
+        MONGOLIAN_SCRIPT, // 37, MONGOLIAN
+        LATIN_SCRIPT, // 38, LATIN_EXTENDED_ADDITIONAL
+        GREEK_SCRIPT, // 39, GREEK_EXTENDED
+        COMMON_SCRIPT, // 40, GENERAL_PUNCTUATION
+        COMMON_SCRIPT, // 41, SUPERSCRIPTS_AND_SUBSCRIPTS
+        COMMON_SCRIPT, // 42, CURRENCY_SYMBOLS
+        COMMON_SCRIPT, // 43, COMBINING_MARKS_FOR_SYMBOLS
+        COMMON_SCRIPT, // 44, LETTERLIKE_SYMBOLS
+        COMMON_SCRIPT, // 45, NUMBER_FORMS
+        COMMON_SCRIPT, // 46, ARROWS
+        COMMON_SCRIPT, // 47, MATHEMATICAL_OPERATORS
+        COMMON_SCRIPT, // 48, MISCELLANEOUS_TECHNICAL
+        COMMON_SCRIPT, // 49, CONTROL_PICTURES
+        COMMON_SCRIPT, // 50, OPTICAL_CHARACTER_RECOGNITION
+        COMMON_SCRIPT, // 51, ENCLOSED_ALPHANUMERICS
+        COMMON_SCRIPT, // 52, BOX_DRAWING
+        COMMON_SCRIPT, // 53, BLOCK_ELEMENTS
+        COMMON_SCRIPT, // 54, GEOMETRIC_SHAPES
+        COMMON_SCRIPT, // 55, MISCELLANEOUS_SYMBOLS
+        COMMON_SCRIPT, // 56, DINGBATS
+        COMMON_SCRIPT, // 57, BRAILLE_PATTERNS
+        HAN_SCRIPT, // 58, CJK_RADICALS_SUPPLEMENT
+        HAN_SCRIPT, // 59, KANGXI_RADICALS
+        HAN_SCRIPT, // 60, IDEOGRAPHIC_DESCRIPTION_CHARACTERS
+        COMMON_SCRIPT, // 61, CJK_SYMBOLS_AND_PUNCTUATION
+        HIRAGANA_SCRIPT, // 62, HIRAGANA
+        KATAKANA_SCRIPT, // 63, KATAKANA
+        BOPOMOFO_SCRIPT, // 64, BOPOMOFO
+        JAMO_SCRIPT, // 65, HANGUL_COMPATIBILITY_JAMO
+        HAN_SCRIPT, // 66, KANBUN
+        BOPOMOFO_SCRIPT, // 67, BOPOMOFO_EXTENDED
+        COMMON_SCRIPT, // 68, ENCLOSED_CJK_LETTERS_AND_MONTHS
+        COMMON_SCRIPT, // 69, CJK_COMPATIBILITY
+        HAN_SCRIPT, // 70, CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
+        HAN_SCRIPT, // 71, CJK_UNIFIED_IDEOGRAPHS
+        YI_SCRIPT, // 72, YI_SYLLABLES
+        YI_SCRIPT, // 73, YI_RADICALS
+        HANGUL_SCRIPT, // 74, HANGUL_SYLLABLES
+        COMMON_SCRIPT, // 75, HIGH_SURROGATES
+        COMMON_SCRIPT, // 76, HIGH_PRIVATE_USE_SURROGATES
+        COMMON_SCRIPT, // 77, LOW_SURROGATES
+        COMMON_SCRIPT, // 78, PRIVATE_USE
+        HAN_SCRIPT, // 79, CJK_COMPATIBILITY_IDEOGRAPHS
+        COMMON_SCRIPT, // 80, ALPHABETIC_PRESENTATION_FORMS
+        ARABIC_SCRIPT, // 81, ARABIC_PRESENTATION_FORMS_A
+        COMMON_SCRIPT, // 82, COMBINING_HALF_MARKS
+        COMMON_SCRIPT, // 83, CJK_COMPATIBILITY_FORMS
+        COMMON_SCRIPT, // 84, SMALL_FORM_VARIANTS
+        ARABIC_SCRIPT, // 85, ARABIC_PRESENTATION_FORMS_B
+        COMMON_SCRIPT, // 86, SPECIALS
+        COMMON_SCRIPT, // 87, HALFWIDTH_AND_FULLWIDTH_FORMS
+        COMMON_SCRIPT, // 88, SPECIALS
+    };
+        
+    // could be further reduced to a byte array, but I didn't bother.
+    static final int[][] split = {
+        {0x0250, 4, 5}, // -1
+        {0x02B0, 5, 6}, // -2
+        {0x0370, 7, 8}, // -3
+        {0x0530, 0, 10}, // -4
+        {0x0590, 10, 11}, // -5
+        {0x0750, 13, 0}, // -6
+        {0x07C0, 14, 0}, // -7
+        {0x10A0, 28, 29}, // -8
+        {0x13A0, 0, 32}, // -9
+        {0x16A0, 34, 35}, // -10
+        {0x18B0, 37, 0}, // -11
+        {0x2070, 40, 41}, // -12
+        {0x20A0, 41, -31}, // -13
+        {0x2150, 44, 45}, // -14
+        {0x2190, 45, 46}, // -15
+        {0x2440, 49, -32}, // -16
+        {0x25A0, 53, 54}, // -17
+        {0x27C0, 56, 0}, // -18
+        {0x2FE0, 59, -33}, // -19
+        {0x3040, 61, 62}, // -20
+        {0x30A0, 62, 63}, // -21
+        {0x3130, 64, 65}, // -22
+        {0x3190, 65, -34}, // -23
+        {0x4DB6, 70, 0}, // -24
+        {0xA490, 72, -35}, // -25
+        {0xD7A4, 74, 0}, // -26
+        {0xFB50, 80, 81}, // -27
+        {0xFE20, 0, -36}, // -28
+        {0xFEFF, 85, 86}, // -29
+        {0xFFF0, 87, -37}, // -30
+        {0x20D0, 42, 43}, // -31
+        {0x2460, 50, 51}, // -32
+        {0x2FF0, 0, 60}, // -33
+        {0x31A0, 66, -38}, // -34
+        {0xA4D0, 73, 0}, //-35
+        {0xFE30, 82, -39}, //-36
+        {0xFFFE, 88, 0}, //-37
+        {0x31C0, 67, 0}, // -38
+        {0xFE50, 83, -40}, //-39
+        {0xFE70, 84, 85} // -40
+    };
+        
+    static final byte[] charToBlock = {
+      1, 2, 3, 4, -1, -2, -3, 8, 9, 9, -4, -5, 12, 12, -6, -7,
+      0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 27,
+      28, -8, 30, 30, 31, 31, 31, -9, 33, 33, 33, 33, 33, -10, 0, 36,
+      37, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, 39, 39,
+      -12, -13, -14, -15, 47, 47, 48, 48, -16, 51, 52, -17, 55, 55, 56, -18,
+      57, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, -19,
+      -20, -21, -22, -23, 68, 68, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+      70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, -24, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, -25, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
+      74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, -26,
+      75, 75, 75, 75, 75, 75, 75, 76, 77, 77, 77, 77, 77, 77, 77, 77,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+      78, 78, 79, 79, 79, 79, -27, 81, 81, 81, 81, 81, -28, -29, 87, -30
+    };
+    */
+}
diff --git a/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java b/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
new file mode 100644
index 0000000..817bce2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
@@ -0,0 +1,3586 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UtilityExtensions;
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.util.ULocale;
+import java.util.*;
+
+/***********************************************************************
+
+                     HOW TO USE THIS TEST FILE
+                               -or-
+                  How I developed on two platforms
+                without losing (too much of) my mind
+
+
+1. Add new tests by copying/pasting/changing existing tests.  On Java,
+   any public void method named Test...() taking no parameters becomes
+   a test.  On C++, you need to modify the header and add a line to
+   the runIndexedTest() dispatch method.
+
+2. Make liberal use of the expect() method; it is your friend.
+
+3. The tests in this file exactly match those in a sister file on the
+   other side.  The two files are:
+
+   icu4j:  src/com.ibm.icu.dev.test/translit/TransliteratorTest.java
+   icu4c:  source/test/intltest/transtst.cpp
+
+                  ==> THIS IS THE IMPORTANT PART <==
+
+   When you add a test in this file, add it in transtst.cpp too.
+   Give it the same name and put it in the same relative place.  This
+   makes maintenance a lot simpler for any poor soul who ends up
+   trying to synchronize the tests between icu4j and icu4c.
+
+4. If you MUST enter a test that is NOT paralleled in the sister file,
+   then add it in the special non-mirrored section.  These are
+   labeled
+
+     "icu4j ONLY"
+
+   or
+
+     "icu4c ONLY"
+
+   Make sure you document the reason the test is here and not there.
+
+
+Thank you.
+The Management
+***********************************************************************/
+
+/**
+ * @test
+ * @summary General test of Transliterator
+ */
+public class TransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TransliteratorTest().run(args);
+    }
+
+    public void TestInstantiation() {
+        long ms = System.currentTimeMillis();
+        String ID;
+        for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+            ID = (String) e.nextElement();
+            if (ID.equals("Latin-Han/definition")) {
+                System.out.println("\nTODO: disabling Latin-Han/definition check for now: fix later");
+                continue;
+            }
+            Transliterator t = null;
+            try {
+                t = Transliterator.getInstance(ID);
+                // This is only true for some subclasses
+//                // We should get a new instance if we try again
+//                Transliterator t2 = Transliterator.getInstance(ID);
+//                if (t != t2) {
+//                    logln("OK: " + Transliterator.getDisplayName(ID) + " (" + ID + "): " + t);
+//                } else {
+//                    errln("FAIL: " + ID + " returned identical instances");
+//                    t = null;
+//                }
+            } catch (IllegalArgumentException ex) {
+                errln("FAIL: " + ID);
+                throw ex;
+            }
+
+            if (t != null) {
+                // Now test toRules
+                String rules = null;
+                try {
+                    rules = t.toRules(true);
+
+                    Transliterator.createFromRules("x", rules, Transliterator.FORWARD);
+                } catch (IllegalArgumentException ex2) {
+                    errln("FAIL: " + ID + ".toRules() => bad rules: " +
+                          rules);
+                    throw ex2;
+                }
+            }
+        }
+
+        // Now test the failure path
+        try {
+            ID = "<Not a valid Transliterator ID>";
+            Transliterator t = Transliterator.getInstance(ID);
+            errln("FAIL: " + ID + " returned " + t);
+        } catch (IllegalArgumentException ex) {
+            logln("OK: Bogus ID handled properly");
+        }
+
+        ms = System.currentTimeMillis() - ms;
+        logln("Elapsed time: " + ms + " ms");
+    }
+
+    public void TestSimpleRules() {
+        /* Example: rules 1. ab>x|y
+         *                2. yc>z
+         *
+         * []|eabcd  start - no match, copy e to tranlated buffer
+         * [e]|abcd  match rule 1 - copy output & adjust cursor
+         * [ex|y]cd  match rule 2 - copy output & adjust cursor
+         * [exz]|d   no match, copy d to transliterated buffer
+         * [exzd]|   done
+         */
+        expect("ab>x|y;" +
+               "yc>z",
+               "eabcd", "exzd");
+
+        /* Another set of rules:
+         *    1. ab>x|yzacw
+         *    2. za>q
+         *    3. qc>r
+         *    4. cw>n
+         *
+         * []|ab       Rule 1
+         * [x|yzacw]   No match
+         * [xy|zacw]   Rule 2
+         * [xyq|cw]    Rule 4
+         * [xyqn]|     Done
+         */
+        expect("ab>x|yzacw;" +
+               "za>q;" +
+               "qc>r;" +
+               "cw>n",
+               "ab", "xyqn");
+
+        /* Test categories
+         */
+        Transliterator t = Transliterator.createFromRules("<ID>",
+                                                       "$dummy=\uE100;" +
+                                                       "$vowel=[aeiouAEIOU];" +
+                                                       "$lu=[:Lu:];" +
+                                                       "$vowel } $lu > '!';" +
+                                                       "$vowel > '&';" +
+                                                       "'!' { $lu > '^';" +
+                                                       "$lu > '*';" +
+                                                       "a>ERROR",
+                                                       Transliterator.FORWARD);
+        expect(t, "abcdefgABCDEFGU", "&bcd&fg!^**!^*&");
+    }
+
+    /**
+     * Test inline set syntax and set variable syntax.
+     */
+    public void TestInlineSet() {
+        expect("{ [:Ll:] } x > y; [:Ll:] > z;", "aAbxq", "zAyzz");
+        expect("a[0-9]b > qrs", "1a7b9", "1qrs9");
+
+        expect("$digit = [0-9];" +
+               "$alpha = [a-zA-Z];" +
+               "$alphanumeric = [$digit $alpha];" + // ***
+               "$special = [^$alphanumeric];" +     // ***
+               "$alphanumeric > '-';" +
+               "$special > '*';",
+
+               "thx-1138", "---*----");
+    }
+
+    /**
+     * Create some inverses and confirm that they work.  We have to be
+     * careful how we do this, since the inverses will not be true
+     * inverses -- we can't throw any random string at the composition
+     * of the transliterators and expect the identity function.  F x
+     * F' != I.  However, if we are careful about the input, we will
+     * get the expected results.
+     */
+    public void TestRuleBasedInverse() {
+        String RULES =
+            "abc>zyx;" +
+            "ab>yz;" +
+            "bc>zx;" +
+            "ca>xy;" +
+            "a>x;" +
+            "b>y;" +
+            "c>z;" +
+
+            "abc<zyx;" +
+            "ab<yz;" +
+            "bc<zx;" +
+            "ca<xy;" +
+            "a<x;" +
+            "b<y;" +
+            "c<z;" +
+
+            "";
+
+        String[] DATA = {
+            // Careful here -- random strings will not work.  If we keep
+            // the left side to the domain and the right side to the range
+            // we will be okay though (left, abc; right xyz).
+            "a", "x",
+            "abcacab", "zyxxxyy",
+            "caccb", "xyzzy",
+        };
+
+        Transliterator fwd = Transliterator.createFromRules("<ID>", RULES, Transliterator.FORWARD);
+        Transliterator rev = Transliterator.createFromRules("<ID>", RULES, Transliterator.REVERSE);
+        for (int i=0; i<DATA.length; i+=2) {
+            expect(fwd, DATA[i], DATA[i+1]);
+            expect(rev, DATA[i+1], DATA[i]);
+        }
+    }
+
+    /**
+     * Basic test of keyboard.
+     */
+    public void TestKeyboard() {
+        Transliterator t = Transliterator.createFromRules("<ID>",
+                                                       "psch>Y;"
+                                                       +"ps>y;"
+                                                       +"ch>x;"
+                                                       +"a>A;", Transliterator.FORWARD);
+        String DATA[] = {
+            // insertion, buffer
+            "a", "A",
+            "p", "Ap",
+            "s", "Aps",
+            "c", "Apsc",
+            "a", "AycA",
+            "psch", "AycAY",
+            null, "AycAY", // null means finishKeyboardTransliteration
+        };
+
+        keyboardAux(t, DATA);
+    }
+
+    /**
+     * Basic test of keyboard with cursor.
+     */
+    public void TestKeyboard2() {
+        Transliterator t = Transliterator.createFromRules("<ID>",
+                                                       "ych>Y;"
+                                                       +"ps>|y;"
+                                                       +"ch>x;"
+                                                       +"a>A;", Transliterator.FORWARD);
+        String DATA[] = {
+            // insertion, buffer
+            "a", "A",
+            "p", "Ap",
+            "s", "Aps", // modified for rollback - "Ay",
+            "c", "Apsc", // modified for rollback - "Ayc",
+            "a", "AycA",
+            "p", "AycAp",
+            "s", "AycAps", // modified for rollback - "AycAy",
+            "c", "AycApsc", // modified for rollback - "AycAyc",
+            "h", "AycAY",
+            null, "AycAY", // null means finishKeyboardTransliteration
+        };
+
+        keyboardAux(t, DATA);
+    }
+
+    /**
+     * Test keyboard transliteration with back-replacement.
+     */
+    public void TestKeyboard3() {
+        // We want th>z but t>y.  Furthermore, during keyboard
+        // transliteration we want t>y then yh>z if t, then h are
+        // typed.
+        String RULES =
+            "t>|y;" +
+            "yh>z;" +
+            "";
+
+        String[] DATA = {
+            // Column 1: characters to add to buffer (as if typed)
+            // Column 2: expected appearance of buffer after
+            //           keyboard xliteration.
+            "a", "a",
+            "b", "ab",
+            "t", "abt", // modified for rollback - "aby",
+            "c", "abyc",
+            "t", "abyct", // modified for rollback - "abycy",
+            "h", "abycz",
+            null, "abycz", // null means finishKeyboardTransliteration
+        };
+
+        Transliterator t = Transliterator.createFromRules("<ID>", RULES, Transliterator.FORWARD);
+        keyboardAux(t, DATA);
+    }
+
+    private void keyboardAux(Transliterator t, String[] DATA) {
+        Transliterator.Position index = new Transliterator.Position();
+        ReplaceableString s = new ReplaceableString();
+        for (int i=0; i<DATA.length; i+=2) {
+            StringBuffer log;
+            if (DATA[i] != null) {
+                log = new StringBuffer(s.toString() + " + "
+                                       + DATA[i]
+                                       + " -> ");
+                t.transliterate(s, index, DATA[i]);
+            } else {
+                log = new StringBuffer(s.toString() + " => ");
+                t.finishTransliteration(s, index);
+            }
+            UtilityExtensions.formatInput(log, s, index);
+            if (s.toString().equals(DATA[i+1])) {
+                logln(log.toString());
+            } else {
+                errln("FAIL: " + log.toString() + ", expected " + DATA[i+1]);
+            }
+        }
+    }
+
+    // Latin-Arabic has been temporarily removed until it can be
+    // done correctly.
+
+//  public void TestArabic() {
+//      String DATA[] = {
+//          "Arabic",
+//              "\u062a\u062a\u0645\u062a\u0639 "+
+//              "\u0627\u0644\u0644\u063a\u0629 "+
+//              "\u0627\u0644\u0639\u0631\u0628\u0628\u064a\u0629 "+
+//              "\u0628\u0628\u0646\u0638\u0645 "+
+//              "\u0643\u062a\u0627\u0628\u0628\u064a\u0629 "+
+//              "\u062c\u0645\u064a\u0644\u0629"
+//      };
+
+//      Transliterator t = Transliterator.getInstance("Latin-Arabic");
+//      for (int i=0; i<DATA.length; i+=2) {
+//          expect(t, DATA[i], DATA[i+1]);
+//      }
+//  }
+
+    /**
+     * Compose the Kana transliterator forward and reverse and try
+     * some strings that should come out unchanged.
+     */
+    public void TestCompoundKana() {
+        Transliterator t = Transliterator.getInstance("Latin-Katakana;Katakana-Latin");
+        expect(t, "aaaaa", "aaaaa");
+    }
+
+    /**
+     * Compose the hex transliterators forward and reverse.
+     */
+    public void TestCompoundHex() {
+        Transliterator a = Transliterator.getInstance("Any-Hex");
+        Transliterator b = Transliterator.getInstance("Hex-Any");
+        // Transliterator[] trans = { a, b };
+        // Transliterator ab = Transliterator.getInstance(trans);
+        Transliterator ab = Transliterator.getInstance("Any-Hex;Hex-Any");
+
+        // Do some basic tests of b
+        expect(b, "\\u0030\\u0031", "01");
+
+        String s = "abcde";
+        expect(ab, s, s);
+
+        // trans = new Transliterator[] { b, a };
+        // Transliterator ba = Transliterator.getInstance(trans);
+        Transliterator ba = Transliterator.getInstance("Hex-Any;Any-Hex");
+        ReplaceableString str = new ReplaceableString(s);
+        a.transliterate(str);
+        expect(ba, str.toString(), str.toString());
+    }
+
+    /**
+     * Do some basic tests of filtering.
+     */
+    public void TestFiltering() {
+        Transliterator hex = Transliterator.getInstance("Any-Hex");
+        hex.setFilter(new UnicodeFilter() {
+            public boolean contains(int c) {
+                return c != 'c';
+            }
+            public String toPattern(boolean escapeUnprintable) {
+                return "";
+            }
+            public boolean matchesIndexValue(int v) {
+                return false;
+            }
+            public void addMatchSetTo(UnicodeSet toUnionTo) {}
+        });
+        String s = "abcde";
+        String out = hex.transliterate(s);
+        String exp = "\\u0061\\u0062c\\u0064\\u0065";
+        if (out.equals(exp)) {
+            logln("Ok:   \"" + exp + "\"");
+        } else {
+            logln("FAIL: \"" + out + "\", wanted \"" + exp + "\"");
+        }
+    }
+
+    /**
+     * Test anchors
+     */
+    public void TestAnchors() {
+        expect("^ab  > 01 ;" +
+               " ab  > |8 ;" +
+               "  b  > k ;" +
+               " 8x$ > 45 ;" +
+               " 8x  > 77 ;",
+
+               "ababbabxabx",
+               "018k7745");
+        expect("$s = [z$] ;" +
+               "$s{ab    > 01 ;" +
+               "   ab    > |8 ;" +
+               "    b    > k ;" +
+               "   8x}$s > 45 ;" +
+               "   8x    > 77 ;",
+
+               "abzababbabxzabxabx",
+               "01z018k45z01x45");
+    }
+
+    /**
+     * Test pattern quoting and escape mechanisms.
+     */
+    public void TestPatternQuoting() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "\u4E01>'[male adult]'", "\u4E01", "[male adult]",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[i], Transliterator.FORWARD);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+    
+    public void TestVariableNames() {
+        Transliterator gl = Transliterator.createFromRules("foo", "$\u2DC0 = qy; a>b;", Transliterator.FORWARD);
+        if (gl == null) {
+            errln("FAIL: null Transliterator returned.");
+        }
+    }
+
+    /**
+     * Regression test for bugs found in Greek transliteration.
+     */
+    public void TestJ277() {
+        Transliterator gl = Transliterator.getInstance("Greek-Latin; NFD; [:M:]Remove; NFC");
+
+        char sigma = (char)0x3C3;
+        char upsilon = (char)0x3C5;
+        char nu = (char)0x3BD;
+        // not used char PHI = (char)0x3A6;
+        char alpha = (char)0x3B1;
+        // not used char omega = (char)0x3C9;
+        // not used char omicron = (char)0x3BF;
+        // not used char epsilon = (char)0x3B5;
+
+        // sigma upsilon nu -> syn
+        StringBuffer buf = new StringBuffer();
+        buf.append(sigma).append(upsilon).append(nu);
+        String syn = buf.toString();
+        expect(gl, syn, "syn");
+
+        // sigma alpha upsilon nu -> saun
+        buf.setLength(0);
+        buf.append(sigma).append(alpha).append(upsilon).append(nu);
+        String sayn = buf.toString();
+        expect(gl, sayn, "saun");
+
+        // Again, using a smaller rule set
+        String rules =
+                    "$alpha   = \u03B1;" +
+                    "$nu      = \u03BD;" +
+                    "$sigma   = \u03C3;" +
+                    "$ypsilon = \u03C5;" +
+                    "$vowel   = [aeiouAEIOU$alpha$ypsilon];" +
+                    "s <>           $sigma;" +
+                    "a <>           $alpha;" +
+                    "u <>  $vowel { $ypsilon;" +
+                    "y <>           $ypsilon;" +
+                    "n <>           $nu;";
+        Transliterator mini = Transliterator.createFromRules
+            ("mini", rules, Transliterator.REVERSE);
+        expect(mini, syn, "syn");
+        expect(mini, sayn, "saun");
+
+//|    // Transliterate the Greek locale data
+//|    Locale el("el");
+//|    DateFormatSymbols syms(el, status);
+//|    if (U_FAILURE(status)) { errln("FAIL: Transliterator constructor failed"); return; }
+//|    int32_t i, count;
+//|    const UnicodeString* data = syms.getMonths(count);
+//|    for (i=0; i<count; ++i) {
+//|        if (data[i].length() == 0) {
+//|            continue;
+//|        }
+//|        UnicodeString out(data[i]);
+//|        gl->transliterate(out);
+//|        bool_t ok = TRUE;
+//|        if (data[i].length() >= 2 && out.length() >= 2 &&
+//|            u_isupper(data[i].charAt(0)) && u_islower(data[i].charAt(1))) {
+//|            if (!(u_isupper(out.charAt(0)) && u_islower(out.charAt(1)))) {
+//|                ok = FALSE;
+//|            }
+//|        }
+//|        if (ok) {
+//|            logln(prettify(data[i] + " -> " + out));
+//|        } else {
+//|            errln(UnicodeString("FAIL: ") + prettify(data[i] + " -> " + out));
+//|        }
+//|    }
+    }
+
+//    /**
+//     * Prefix, suffix support in hex transliterators
+//     */
+//    public void TestJ243() {
+//        // Test default Hex-Any, which should handle
+//        // \\u, \\U, u+, and U+
+//        HexToUnicodeTransliterator hex = new HexToUnicodeTransliterator();
+//        expect(hex, "\\u0041+\\U0042,u+0043uu+0044z", "A+B,CuDz");
+//
+//        // Try a custom Hex-Any
+//        // \\uXXXX and &#xXXXX;
+//        HexToUnicodeTransliterator hex2 = new HexToUnicodeTransliterator("\\\\u###0;&\\#x###0\\;");
+//        expect(hex2, "\\u61\\u062\\u0063\\u00645\\u66x&#x30;&#x031;&#x0032;&#x00033;",
+//               "abcd5fx012&#x00033;");
+//
+//        // Try custom Any-Hex (default is tested elsewhere)
+//        UnicodeToHexTransliterator hex3 = new UnicodeToHexTransliterator("&\\#x###0;");
+//        expect(hex3, "012", "&#x30;&#x31;&#x32;");
+//    }
+
+    public void TestJ329() {
+
+        Object[] DATA = {
+            Boolean.FALSE, "a > b; c > d",
+            Boolean.TRUE,  "a > b; no operator; c > d",
+        };
+
+        for (int i=0; i<DATA.length; i+=2) {
+            String err = null;
+            try {
+                Transliterator.createFromRules("<ID>",
+                                            (String) DATA[i+1],
+                                            Transliterator.FORWARD);
+            } catch (IllegalArgumentException e) {
+                err = e.getMessage();
+            }
+            boolean gotError = (err != null);
+            String desc = (String) DATA[i+1] +
+                (gotError ? (" -> error: " + err) : " -> no error");
+            if ((err != null) == ((Boolean)DATA[i]).booleanValue()) {
+                logln("Ok:   " + desc);
+            } else {
+                errln("FAIL: " + desc);
+            }
+        }
+    }
+
+    /**
+     * Test segments and segment references.
+     */
+    public void TestSegments() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "([a-z]) '.' ([0-9]) > $2 '-' $1",
+            "abc.123.xyz.456",
+            "ab1-c23.xy4-z56",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[i], Transliterator.FORWARD);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Test cursor positioning outside of the key
+     */
+    public void TestCursorOffset() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "pre {alpha} post > | @ ALPHA ;" +
+            "eALPHA > beta ;" +
+            "pre {beta} post > BETA @@ | ;" +
+            "post > xyz",
+
+            "prealphapost prebetapost",
+            "prbetaxyz preBETApost",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[i], Transliterator.FORWARD);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Test zero length and > 1 char length variable values.  Test
+     * use of variable refs in UnicodeSets.
+     */
+    public void TestArbitraryVariableValues() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "$abe = ab;" +
+            "$pat = x[yY]z;" +
+            "$ll  = 'a-z';" +
+            "$llZ = [$ll];" +
+            "$llY = [$ll$pat];" +
+            "$emp = ;" +
+
+            "$abe > ABE;" +
+            "$pat > END;" +
+            "$llZ > 1;" +
+            "$llY > 2;" +
+            "7$emp 8 > 9;" +
+            "",
+
+            "ab xYzxyz stY78",
+            "ABE ENDEND 1129",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[i], Transliterator.FORWARD);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Confirm that the contextStart, contextLimit, start, and limit
+     * behave correctly.
+     */
+    public void TestPositionHandling() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 0,9,0,9
+            "xTTaSS TTxUUb",
+
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 2,9,3,8
+            "xtaSS TTxUUb",
+
+            "a{t} > SS ; {t}b > UU ; {t} > TT ;",
+            "xtat txtb", // pos 3,8,3,8
+            "xtaTT TTxTTb",
+        };
+
+        // Array of 4n positions -- these go with the DATA array
+        // They are: contextStart, contextLimit, start, limit
+        int[] POS = {
+            0, 9, 0, 9,
+            2, 9, 3, 8,
+            3, 8, 3, 8,
+        };
+
+        int n = DATA.length/3;
+        for (int i=0; i<n; i++) {
+            Transliterator t = Transliterator.createFromRules("<ID>", DATA[3*i], Transliterator.FORWARD);
+            Transliterator.Position pos = new Transliterator.Position(
+                POS[4*i], POS[4*i+1], POS[4*i+2], POS[4*i+3]);
+            ReplaceableString rsource = new ReplaceableString(DATA[3*i+1]);
+            t.transliterate(rsource, pos);
+            t.finishTransliteration(rsource, pos);
+            String result = rsource.toString();
+            String exp = DATA[3*i+2];
+            expectAux(Utility.escape(DATA[3*i]),
+                      DATA[3*i+1],
+                      result,
+                      result.equals(exp),
+                      exp);
+        }
+    }
+
+    /**
+     * Test the Hiragana-Katakana transliterator.
+     */
+    public void TestHiraganaKatakana() {
+        Transliterator hk = Transliterator.getInstance("Hiragana-Katakana");
+        Transliterator kh = Transliterator.getInstance("Katakana-Hiragana");
+
+        // Array of 3n items
+        // Each item is "hk"|"kh"|"both", <Hiragana>, <Katakana>
+        String[] DATA = {
+            "both",
+            "\u3042\u3090\u3099\u3092\u3050",
+            "\u30A2\u30F8\u30F2\u30B0",
+
+            "kh",
+            "\u307C\u3051\u3060\u3042\u3093\u30FC",
+            "\u30DC\u30F6\u30C0\u30FC\u30F3\u30FC",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            switch (DATA[i].charAt(0)) {
+            case 'h': // Hiragana-Katakana
+                expect(hk, DATA[i+1], DATA[i+2]);
+                break;
+            case 'k': // Katakana-Hiragana
+                expect(kh, DATA[i+2], DATA[i+1]);
+                break;
+            case 'b': // both
+                expect(hk, DATA[i+1], DATA[i+2]);
+                expect(kh, DATA[i+2], DATA[i+1]);
+                break;
+            }
+        }
+
+    }
+
+    public void TestCopyJ476() {
+        // This is a C++-only copy constructor test
+    }
+
+    /**
+     * Test inter-Indic transliterators.  These are composed.
+     */
+    public void TestInterIndic() {
+        String ID = "Devanagari-Gujarati";
+        Transliterator dg = Transliterator.getInstance(ID);
+        if (dg == null) {
+            errln("FAIL: getInstance(" + ID + ") returned null");
+            return;
+        }
+        String id = dg.getID();
+        if (!id.equals(ID)) {
+            errln("FAIL: getInstance(" + ID + ").getID() => " + id);
+        }
+        String dev = "\u0901\u090B\u0925";
+        String guj = "\u0A81\u0A8B\u0AA5";
+        expect(dg, dev, guj);
+    }
+
+    /**
+     * Test filter syntax in IDs. (J23)
+     */
+    public void TestFilterIDs() {
+        String[] DATA = {
+            "[aeiou]Any-Hex", // ID
+            "[aeiou]Hex-Any", // expected inverse ID
+            "quizzical",      // src
+            "q\\u0075\\u0069zz\\u0069c\\u0061l", // expected ID.translit(src)
+
+            "[aeiou]Any-Hex;[^5]Hex-Any",
+            "[^5]Any-Hex;[aeiou]Hex-Any",
+            "quizzical",
+            "q\\u0075izzical",
+
+            "[abc]Null",
+            "[abc]Null",
+            "xyz",
+            "xyz",
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            String ID = DATA[i];
+            Transliterator t = Transliterator.getInstance(ID);
+            expect(t, DATA[i+2], DATA[i+3]);
+
+            // Check the ID
+            if (!ID.equals(t.getID())) {
+                errln("FAIL: getInstance(" + ID + ").getID() => " +
+                      t.getID());
+            }
+
+            // Check the inverse
+            String uID = DATA[i+1];
+            Transliterator u = t.getInverse();
+            if (u == null) {
+                errln("FAIL: " + ID + ".getInverse() returned NULL");
+            } else if (!u.getID().equals(uID)) {
+                errln("FAIL: " + ID + ".getInverse().getID() => " +
+                      u.getID() + ", expected " + uID);
+            }
+        }
+    }
+
+    /**
+     * Test the case mapping transliterators.
+     */
+    public void TestCaseMap() {
+        Transliterator toUpper =
+            Transliterator.getInstance("Any-Upper[^xyzXYZ]");
+        Transliterator toLower =
+            Transliterator.getInstance("Any-Lower[^xyzXYZ]");
+        Transliterator toTitle =
+            Transliterator.getInstance("Any-Title[^xyzXYZ]");
+
+        expect(toUpper, "The quick brown fox jumped over the lazy dogs.",
+               "THE QUICK BROWN FOx JUMPED OVER THE LAzy DOGS.");
+        expect(toLower, "The quIck brown fOX jUMPED OVER THE LAzY dogs.",
+               "the quick brown foX jumped over the lazY dogs.");
+        expect(toTitle, "the quick brown foX caN'T jump over the laZy dogs.",
+               "The Quick Brown FoX Can't Jump Over The LaZy Dogs.");
+    }
+
+    /**
+     * Test the name mapping transliterators.
+     */
+    public void TestNameMap() {
+        Transliterator uni2name =
+            Transliterator.getInstance("Any-Name[^abc]");
+        Transliterator name2uni =
+            Transliterator.getInstance("Name-Any");
+
+        expect(uni2name, "\u00A0abc\u4E01\u00B5\u0A81\uFFFD\u0004\u0009\u0081\uFFFF",
+               "\\N{NO-BREAK SPACE}abc\\N{CJK UNIFIED IDEOGRAPH-4E01}\\N{MICRO SIGN}\\N{GUJARATI SIGN CANDRABINDU}\\N{REPLACEMENT CHARACTER}\\N{END OF TRANSMISSION}\\N{CHARACTER TABULATION}\\N{<control-0081>}\\N{<noncharacter-FFFF>}");
+        expect(name2uni, "{\\N { NO-BREAK SPACE}abc\\N{  CJK UNIFIED  IDEOGRAPH-4E01  }\\N{x\\N{MICRO SIGN}\\N{GUJARATI SIGN CANDRABINDU}\\N{REPLACEMENT CHARACTER}\\N{END OF TRANSMISSION}\\N{CHARACTER TABULATION}\\N{<control-0081>}\\N{<noncharacter-FFFF>}\\N{<control-0004>}\\N{",
+               "{\u00A0abc\u4E01\\N{x\u00B5\u0A81\uFFFD\u0004\u0009\u0081\uFFFF\u0004\\N{");
+
+        // round trip
+        Transliterator t = Transliterator.getInstance("Any-Name;Name-Any");
+
+        String s = "{\u00A0abc\u4E01\\N{x\u00B5\u0A81\uFFFD\u0004\u0009\u0081\uFFFF\u0004\\N{";
+        expect(t, s, s);
+    }
+
+    /**
+     * Test liberalized ID syntax.  1006c
+     */
+    public void TestLiberalizedID() {
+        // Some test cases have an expected getID() value of NULL.  This
+        // means I have disabled the test case for now.  This stuff is
+        // still under development, and I haven't decided whether to make
+        // getID() return canonical case yet.  It will all get rewritten
+        // with the move to Source-Target/Variant IDs anyway. [aliu]
+        String DATA[] = {
+            "latin-greek", null /*"Latin-Greek"*/, "case insensitivity",
+            "  Null  ", "Null", "whitespace",
+            " Latin[a-z]-Greek  ", "[a-z]Latin-Greek", "inline filter",
+            "  null  ; latin-greek  ", null /*"Null;Latin-Greek"*/, "compound whitespace",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            try {
+                Transliterator t = Transliterator.getInstance(DATA[i]);
+                if (DATA[i+1] == null || DATA[i+1].equals(t.getID())) {
+                    logln("Ok: " + DATA[i+2] +
+                          " create ID \"" + DATA[i] + "\" => \"" +
+                          t.getID() + "\"");
+                } else {
+                    errln("FAIL: " + DATA[i+2] +
+                          " create ID \"" + DATA[i] + "\" => \"" +
+                          t.getID() + "\", exp \"" + DATA[i+1] + "\"");
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: " + DATA[i+2] +
+                      " create ID \"" + DATA[i] + "\"");
+            }
+        }
+    }
+
+    public void TestCreateInstance() {
+        String FORWARD = "F";
+        String REVERSE = "R";
+        String DATA[] = {
+            // Column 1: id
+            // Column 2: direction
+            // Column 3: expected ID, or "" if expect failure
+            "Latin-Hangul", REVERSE, "Hangul-Latin", // JB#912
+            
+            // JB#2689: bad compound causes crash
+            "InvalidSource-InvalidTarget", FORWARD, "",
+            "InvalidSource-InvalidTarget", REVERSE, "",
+            "Hex-Any;InvalidSource-InvalidTarget", FORWARD, "",
+            "Hex-Any;InvalidSource-InvalidTarget", REVERSE, "",
+            "InvalidSource-InvalidTarget;Hex-Any", FORWARD, "",
+            "InvalidSource-InvalidTarget;Hex-Any", REVERSE, "",
+            
+            null
+        };
+        
+        for (int i=0; DATA[i]!=null; i+=3) {
+            String id=DATA[i];
+            int dir = (DATA[i+1]==FORWARD)?
+                Transliterator.FORWARD:Transliterator.REVERSE;
+            String expID=DATA[i+2];
+            Exception e = null;
+            Transliterator t;
+            try {
+                t = Transliterator.getInstance(id,dir);
+            } catch (Exception e1) {
+                e = e1;
+                t = null;
+            }
+            String newID = (t!=null)?t.getID():"";
+            boolean ok = (newID.equals(expID));
+            if (t==null) {
+                newID = e.getMessage();
+            }
+            if (ok) {
+                logln("Ok: createInstance(" +
+                      id + "," + DATA[i+1] + ") => " + newID);
+            } else {
+                errln("FAIL: createInstance(" +
+                      id + "," + DATA[i+1] + ") => " + newID +
+                      ", expected " + expID);
+            }
+        }
+    }
+
+    /**
+     * Test the normalization transliterator.
+     */
+    public void TestNormalizationTransliterator() {
+        // THE FOLLOWING TWO TABLES ARE COPIED FROM com.ibm.icu.dev.test.normalizer.BasicTest
+        // PLEASE KEEP THEM IN SYNC WITH BasicTest.
+        String[][] CANON = {
+            // Input               Decomposed            Composed
+            {"cat",                "cat",                "cat"               },
+            {"\u00e0ardvark",      "a\u0300ardvark",     "\u00e0ardvark"     },
+
+            {"\u1e0a",             "D\u0307",            "\u1e0a"            }, // D-dot_above
+            {"D\u0307",            "D\u0307",            "\u1e0a"            }, // D dot_above
+
+            {"\u1e0c\u0307",       "D\u0323\u0307",      "\u1e0c\u0307"      }, // D-dot_below dot_above
+            {"\u1e0a\u0323",       "D\u0323\u0307",      "\u1e0c\u0307"      }, // D-dot_above dot_below
+            {"D\u0307\u0323",      "D\u0323\u0307",      "\u1e0c\u0307"      }, // D dot_below dot_above
+
+            {"\u1e10\u0307\u0323", "D\u0327\u0323\u0307","\u1e10\u0323\u0307"}, // D dot_below cedilla dot_above
+            {"D\u0307\u0328\u0323","D\u0328\u0323\u0307","\u1e0c\u0328\u0307"}, // D dot_above ogonek dot_below
+
+            {"\u1E14",             "E\u0304\u0300",      "\u1E14"            }, // E-macron-grave
+            {"\u0112\u0300",       "E\u0304\u0300",      "\u1E14"            }, // E-macron + grave
+            {"\u00c8\u0304",       "E\u0300\u0304",      "\u00c8\u0304"      }, // E-grave + macron
+
+            {"\u212b",             "A\u030a",            "\u00c5"            }, // angstrom_sign
+            {"\u00c5",             "A\u030a",            "\u00c5"            }, // A-ring
+
+            {"\u00fdffin",         "y\u0301ffin",        "\u00fdffin"        }, //updated with 3.0
+            {"\u00fd\uFB03n",      "y\u0301\uFB03n",     "\u00fd\uFB03n"     }, //updated with 3.0
+
+            {"Henry IV",           "Henry IV",           "Henry IV"          },
+            {"Henry \u2163",       "Henry \u2163",       "Henry \u2163"      },
+
+            {"\u30AC",             "\u30AB\u3099",       "\u30AC"            }, // ga (Katakana)
+            {"\u30AB\u3099",       "\u30AB\u3099",       "\u30AC"            }, // ka + ten
+            {"\uFF76\uFF9E",       "\uFF76\uFF9E",       "\uFF76\uFF9E"      }, // hw_ka + hw_ten
+            {"\u30AB\uFF9E",       "\u30AB\uFF9E",       "\u30AB\uFF9E"      }, // ka + hw_ten
+            {"\uFF76\u3099",       "\uFF76\u3099",       "\uFF76\u3099"      }, // hw_ka + ten
+
+            {"A\u0300\u0316",      "A\u0316\u0300",      "\u00C0\u0316"      },
+        };
+
+        String[][] COMPAT = {
+            // Input               Decomposed            Composed
+            {"\uFB4f",             "\u05D0\u05DC",       "\u05D0\u05DC"      }, // Alef-Lamed vs. Alef, Lamed
+
+            {"\u00fdffin",         "y\u0301ffin",        "\u00fdffin"        }, //updated for 3.0
+            {"\u00fd\uFB03n",      "y\u0301ffin",        "\u00fdffin"        }, // ffi ligature -> f + f + i
+
+            {"Henry IV",           "Henry IV",           "Henry IV"          },
+            {"Henry \u2163",       "Henry IV",           "Henry IV"          },
+
+            {"\u30AC",             "\u30AB\u3099",       "\u30AC"            }, // ga (Katakana)
+            {"\u30AB\u3099",       "\u30AB\u3099",       "\u30AC"            }, // ka + ten
+
+            {"\uFF76\u3099",       "\u30AB\u3099",       "\u30AC"            }, // hw_ka + ten
+        };
+
+        Transliterator NFD = Transliterator.getInstance("NFD");
+        Transliterator NFC = Transliterator.getInstance("NFC");
+        for (int i=0; i<CANON.length; ++i) {
+            String in = CANON[i][0];
+            String expd = CANON[i][1];
+            String expc = CANON[i][2];
+            expect(NFD, in, expd);
+            expect(NFC, in, expc);
+        }
+
+        Transliterator NFKD = Transliterator.getInstance("NFKD");
+        Transliterator NFKC = Transliterator.getInstance("NFKC");
+        for (int i=0; i<COMPAT.length; ++i) {
+            String in = COMPAT[i][0];
+            String expkd = COMPAT[i][1];
+            String expkc = COMPAT[i][2];
+            expect(NFKD, in, expkd);
+            expect(NFKC, in, expkc);
+        }
+
+        Transliterator t = Transliterator.getInstance("NFD; [x]Remove");
+        expect(t, "\u010dx", "c\u030C");
+    }
+
+    /**
+     * Test compound RBT rules.
+     */
+    public void TestCompoundRBT() {
+        // Careful with spacing and ';' here:  Phrase this exactly
+        // as toRules() is going to return it.  If toRules() changes
+        // with regard to spacing or ';', then adjust this string.
+        String rule = "::Hex-Any;\n" +
+                      "::Any-Lower;\n" +
+                      "a > '.A.';\n" +
+                      "b > '.B.';\n" +
+                      "::[^t]Any-Upper;";
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+        expect(t, "\u0043at in the hat, bat on the mat",
+               "C.A.t IN tHE H.A.t, .B..A.t ON tHE M.A.t");
+        String r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+
+        // Now test toRules
+        t = Transliterator.getInstance("Greek-Latin; Latin-Cyrillic", Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createInstance failed");
+            return;
+        }
+        String exp = "::Greek-Latin;\n::Latin-Cyrillic;";
+        r = t.toRules(true);
+        if (!r.equals(exp)) {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + exp);
+        } else {
+            logln("OK: toRules() => " + r);
+        }
+
+        // Round trip the result of toRules
+        t = Transliterator.createFromRules("Test", r, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules #2 failed");
+            return;
+        } else {
+            logln("OK: createFromRules(" + r + ") succeeded");
+        }
+
+        // Test toRules again
+        r = t.toRules(true);
+        if (!r.equals(exp)) {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + exp);
+        } else {
+            logln("OK: toRules() => " + r);
+        }
+
+        // Test Foo(Bar) IDs.  Careful with spacing in id; make it conform
+        // to what the regenerated ID will look like.
+        String id = "Upper(Lower);(NFKC)";
+        t = Transliterator.getInstance(id, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createInstance #2 failed");
+            return;
+        }
+        if (t.getID().equals(id)) {
+            logln("OK: created " + id);
+        } else {
+            errln("FAIL: createInstance(" + id +
+                  ").getID() => " + t.getID());
+        }
+
+        Transliterator u = t.getInverse();
+        if (u == null) {
+            errln("FAIL: createInverse failed");
+            return;
+        }
+        exp = "NFKC();Lower(Upper)";
+        if (u.getID().equals(exp)) {
+            logln("OK: createInverse(" + id + ") => " +
+                  u.getID());
+        } else {
+            errln("FAIL: createInverse(" + id + ") => " +
+                  u.getID());
+        }
+    }
+
+    /**
+     * Compound filter semantics were orginially not implemented
+     * correctly.  Originally, each component filter f(i) is replaced by
+     * f'(i) = f(i) && g, where g is the filter for the compound
+     * transliterator.
+     *
+     * From Mark:
+     *
+     * Suppose and I have a transliterator X. Internally X is
+     * "Greek-Latin; Latin-Cyrillic; Any-Lower". I use a filter [^A].
+     *
+     * The compound should convert all greek characters (through latin) to
+     * cyrillic, then lowercase the result. The filter should say "don't
+     * touch 'A' in the original". But because an intermediate result
+     * happens to go through "A", the Greek Alpha gets hung up.
+     */
+    public void TestCompoundFilter() {
+        Transliterator t = Transliterator.getInstance
+            ("Greek-Latin; Latin-Greek; Lower", Transliterator.FORWARD);
+        t.setFilter(new UnicodeSet("[^A]"));
+
+        // Only the 'A' at index 1 should remain unchanged
+        expect(t,
+               CharsToUnicodeString("BA\\u039A\\u0391"),
+               CharsToUnicodeString("\\u03b2A\\u03ba\\u03b1"));
+    }
+
+    /**
+     * Test the "Remove" transliterator.
+     */
+    public void TestRemove() {
+        Transliterator t = Transliterator.getInstance("Remove[aeiou]");
+        expect(t, "The quick brown fox.",
+               "Th qck brwn fx.");
+    }
+
+    public void TestToRules() {
+        String RBT = "rbt";
+        String SET = "set";
+        String[] DATA = {
+            RBT,
+            "$a=\\u4E61; [$a] > A;",
+            "[\\u4E61] > A;",
+
+            RBT,
+            "$white=[[:Zs:][:Zl:]]; $white{a} > A;",
+            "[[:Zs:][:Zl:]]{a} > A;",
+
+            SET,
+            "[[:Zs:][:Zl:]]",
+            "[[:Zs:][:Zl:]]",
+
+            SET,
+            "[:Ps:]",
+            "[:Ps:]",
+
+            SET,
+            "[:L:]",
+            "[:L:]",
+
+            SET,
+            "[[:L:]-[A]]",
+            "[[:L:]-[A]]",
+
+            SET,
+            "[~[:Lu:][:Ll:]]",
+            "[~[:Lu:][:Ll:]]",
+
+            SET,
+            "[~[a-z]]",
+            "[~[a-z]]",
+
+            RBT,
+            "$white=[:Zs:]; $black=[^$white]; $black{a} > A;",
+            "[^[:Zs:]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[[a-z]-$a]; $b{a} > A;",
+            "[[a-z]-[:Zs:]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[$a&[a-z]]; $b{a} > A;",
+            "[[:Zs:]&[a-z]]{a} > A;",
+
+            RBT,
+            "$a=[:Zs:]; $b=[x$a]; $b{a} > A;",
+            "[x[:Zs:]]{a} > A;",
+
+            RBT,
+            "$accentMinus = [ [\\u0300-\\u0345] & [:M:] - [\\u0338]] ;"+
+            "$macron = \\u0304 ;"+
+            "$evowel = [aeiouyAEIOUY] ;"+
+            "$iotasub = \\u0345 ;"+
+            "($evowel $macron $accentMinus *) i > | $1 $iotasub ;",
+            "([AEIOUYaeiouy]\\u0304[[\\u0300-\\u0345]&[:M:]-[\\u0338]]*)i > | $1 \\u0345;",
+
+            RBT,
+            "([AEIOUYaeiouy]\\u0304[[:M:]-[\\u0304\\u0345]]*)i > | $1 \\u0345;",
+            "([AEIOUYaeiouy]\\u0304[[:M:]-[\\u0304\\u0345]]*)i > | $1 \\u0345;",
+        };
+
+        for (int d=0; d < DATA.length; d+=3) {
+            if (DATA[d] == RBT) {
+                // Transliterator test
+                Transliterator t = Transliterator.createFromRules("ID",
+                                       DATA[d+1], Transliterator.FORWARD);
+                if (t == null) {
+                    errln("FAIL: createFromRules failed");
+                    return;
+                }
+                String rules, escapedRules;
+                rules = t.toRules(false);
+                escapedRules = t.toRules(true);
+                String expRules = Utility.unescape(DATA[d+2]);
+                String expEscapedRules = DATA[d+2];
+                if (rules.equals(expRules)) {
+                    logln("Ok: " + DATA[d+1] +
+                          " => " + Utility.escape(rules));
+                } else {
+                    errln("FAIL: " + DATA[d+1] +
+                          " => " + Utility.escape(rules + ", exp " + expRules));
+                }
+                if (escapedRules.equals(expEscapedRules)) {
+                    logln("Ok: " + DATA[d+1] +
+                          " => " + escapedRules);
+                } else {
+                    errln("FAIL: " + DATA[d+1] +
+                          " => " + escapedRules + ", exp " + expEscapedRules);
+                }
+
+            } else {
+                // UnicodeSet test
+                String pat = DATA[d+1];
+                String expToPat = DATA[d+2];
+                UnicodeSet set = new UnicodeSet(pat);
+
+                // Adjust spacing etc. as necessary.
+                String toPat;
+                toPat = set.toPattern(true);
+                if (expToPat.equals(toPat)) {
+                    logln("Ok: " + pat +
+                          " => " + toPat);
+                } else {
+                    errln("FAIL: " + pat +
+                          " => " + Utility.escape(toPat) +
+                          ", exp " + Utility.escape(pat));
+                }
+            }
+        }
+    }
+
+    public void TestContext() {
+        Transliterator.Position pos = new Transliterator.Position(0, 2, 0, 1); // cs cl s l
+
+        expect("de > x; {d}e > y;",
+               "de",
+               "ye",
+               pos);
+
+        expect("ab{c} > z;",
+               "xadabdabcy",
+               "xadabdabzy");
+    }
+
+    static final String CharsToUnicodeString(String s) {
+        return Utility.unescape(s);
+    }
+
+    public void TestSupplemental() {
+
+        expect(CharsToUnicodeString("$a=\\U00010300; $s=[\\U00010300-\\U00010323];" +
+                                    "a > $a; $s > i;"),
+               CharsToUnicodeString("ab\\U0001030Fx"),
+               CharsToUnicodeString("\\U00010300bix"));
+
+        expect(CharsToUnicodeString("$a=[a-z\\U00010300-\\U00010323];" +
+                                    "$b=[A-Z\\U00010400-\\U0001044D];" +
+                                    "($a)($b) > $2 $1;"),
+               CharsToUnicodeString("aB\\U00010300\\U00010400c\\U00010401\\U00010301D"),
+               CharsToUnicodeString("Ba\\U00010400\\U00010300\\U00010401cD\\U00010301"));
+
+        // k|ax\\U00010300xm
+
+        // k|a\\U00010400\\U00010300xm
+        // ky|\\U00010400\\U00010300xm
+        // ky\\U00010400|\\U00010300xm
+
+        // ky\\U00010400|\\U00010300\\U00010400m
+        // ky\\U00010400y|\\U00010400m
+        expect(CharsToUnicodeString("$a=[a\\U00010300-\\U00010323];" +
+                                    "$a {x} > | @ \\U00010400;" +
+                                    "{$a} [^\\u0000-\\uFFFF] > y;"),
+               CharsToUnicodeString("kax\\U00010300xm"),
+               CharsToUnicodeString("ky\\U00010400y\\U00010400m"));
+
+        expect(Transliterator.getInstance("Any-Name"),
+               CharsToUnicodeString("\\U00010330\\U000E0061\\u00A0"),
+               "\\N{GOTHIC LETTER AHSA}\\N{TAG LATIN SMALL LETTER A}\\N{NO-BREAK SPACE}");
+
+        expect(Transliterator.getInstance("Name-Any"),
+               "\\N{GOTHIC LETTER AHSA}\\N{TAG LATIN SMALL LETTER A}\\N{NO-BREAK SPACE}",
+               CharsToUnicodeString("\\U00010330\\U000E0061\\u00A0"));
+
+        expect(Transliterator.getInstance("Any-Hex/Unicode"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "U+10330U+10FF00U+E0061U+00A0");
+
+        expect(Transliterator.getInstance("Any-Hex/C"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\U00010330\\U0010FF00\\U000E0061\\u00A0");
+
+        expect(Transliterator.getInstance("Any-Hex/Perl"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\x{10330}\\x{10FF00}\\x{E0061}\\x{A0}");
+
+        expect(Transliterator.getInstance("Any-Hex/Java"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "\\uD800\\uDF30\\uDBFF\\uDF00\\uDB40\\uDC61\\u00A0");
+
+        expect(Transliterator.getInstance("Any-Hex/XML"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "&#x10330;&#x10FF00;&#xE0061;&#xA0;");
+
+        expect(Transliterator.getInstance("Any-Hex/XML10"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               "&#66352;&#1113856;&#917601;&#160;");
+
+        expect(Transliterator.getInstance("[\\U000E0000-\\U000E0FFF] Remove"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\U000E0061\\u00A0"),
+               CharsToUnicodeString("\\U00010330\\U0010FF00\\u00A0"));
+    }
+
+    public void TestQuantifier() {
+
+        // Make sure @ in a quantified anteContext works
+        expect("a+ {b} > | @@ c; A > a; (a+ c) > '(' $1 ')';",
+               "AAAAAb",
+               "aaa(aac)");
+
+        // Make sure @ in a quantified postContext works
+        expect("{b} a+ > c @@ |; (a+) > '(' $1 ')';",
+               "baaaaa",
+               "caa(aaa)");
+
+        // Make sure @ in a quantified postContext with seg ref works
+        expect("{(b)} a+ > $1 @@ |; (a+) > '(' $1 ')';",
+               "baaaaa",
+               "baa(aaa)");
+
+        // Make sure @ past ante context doesn't enter ante context
+        Transliterator.Position pos = new Transliterator.Position(0, 5, 3, 5);
+        expect("a+ {b} > | @@ c; x > y; (a+ c) > '(' $1 ')';",
+               "xxxab",
+               "xxx(ac)",
+               pos);
+
+        // Make sure @ past post context doesn't pass limit
+        Transliterator.Position pos2 = new Transliterator.Position(0, 4, 0, 2);
+        expect("{b} a+ > c @@ |; x > y; a > A;",
+               "baxx",
+               "caxx",
+               pos2);
+
+        // Make sure @ past post context doesn't enter post context
+        expect("{b} a+ > c @@ |; x > y; a > A;",
+               "baxx",
+               "cayy");
+
+        expect("(ab)? c > d;",
+               "c abc ababc",
+               "d d abd");
+
+        // NOTE: The (ab)+ when referenced just yields a single "ab",
+        // not the full sequence of them.  This accords with perl behavior.
+        expect("(ab)+ {x} > '(' $1 ')';",
+               "x abx ababxy",
+               "x ab(ab) abab(ab)y");
+
+        expect("b+ > x;",
+               "ac abc abbc abbbc",
+               "ac axc axc axc");
+
+        expect("[abc]+ > x;",
+               "qac abrc abbcs abtbbc",
+               "qx xrx xs xtx");
+
+        expect("q{(ab)+} > x;",
+               "qa qab qaba qababc qaba",
+               "qa qx qxa qxc qxa");
+
+        expect("q(ab)* > x;",
+               "qa qab qaba qababc",
+               "xa x xa xc");
+
+        // NOTE: The (ab)+ when referenced just yields a single "ab",
+        // not the full sequence of them.  This accords with perl behavior.
+        expect("q(ab)* > '(' $1 ')';",
+               "qa qab qaba qababc",
+               "()a (ab) (ab)a (ab)c");
+
+        // 'foo'+ and 'foo'* -- the quantifier should apply to the entire
+        // quoted string
+        expect("'ab'+ > x;",
+               "bb ab ababb",
+               "bb x xb");
+
+        // $foo+ and $foo* -- the quantifier should apply to the entire
+        // variable reference
+        expect("$var = ab; $var+ > x;",
+               "bb ab ababb",
+               "bb x xb");
+    }
+
+    static class TestFact implements Transliterator.Factory {
+        static class NameableNullTrans extends Transliterator {
+            public NameableNullTrans(String id) {
+                super(id, null);
+            }
+            protected void handleTransliterate(Replaceable text,
+                                               Position offsets, boolean incremental) {
+                offsets.start = offsets.limit;
+            }
+        }
+        String id;
+        public TestFact(String theID) {
+            id = theID;
+        }
+        public Transliterator getInstance(String ignoredID) {
+            return new NameableNullTrans(id);
+        }
+    }
+
+    public void TestSTV() {
+        Enumeration es = Transliterator.getAvailableSources();
+        for (int i=0; es.hasMoreElements(); ++i) {
+            String source = (String) es.nextElement();
+            logln("" + i + ": " + source);
+            if (source.length() == 0) {
+                errln("FAIL: empty source");
+                continue;
+            }
+            Enumeration et = Transliterator.getAvailableTargets(source);
+            for (int j=0; et.hasMoreElements(); ++j) {
+                String target = (String) et.nextElement();
+                logln(" " + j + ": " + target);
+                if (target.length() == 0) {
+                    errln("FAIL: empty target");
+                    continue;
+                }
+                Enumeration ev = Transliterator.getAvailableVariants(source, target);
+                for (int k=0; ev.hasMoreElements(); ++k) {
+                    String variant = (String) ev.nextElement();
+                    if (variant.length() == 0) {
+                        logln("  " + k + ": <empty>");
+                    } else {
+                        logln("  " + k + ": " + variant);
+                    }
+                }
+            }
+        }
+
+        // Test registration
+        String[] IDS = { "Fieruwer", "Seoridf-Sweorie", "Oewoir-Oweri/Vsie" };
+        String[] FULL_IDS = { "Any-Fieruwer", "Seoridf-Sweorie", "Oewoir-Oweri/Vsie" };
+        String[] SOURCES = { null, "Seoridf", "Oewoir" };
+        for (int i=0; i<3; ++i) {
+            Transliterator.registerFactory(IDS[i], new TestFact(IDS[i]));
+            try {
+                Transliterator t = Transliterator.getInstance(IDS[i]);
+                if (t.getID().equals(IDS[i])) {
+                    logln("Ok: Registration/creation succeeded for ID " +
+                          IDS[i]);
+                } else {
+                    errln("FAIL: Registration of ID " +
+                          IDS[i] + " creates ID " + t.getID());
+                }
+                Transliterator.unregister(IDS[i]);
+                try {
+                    t = Transliterator.getInstance(IDS[i]);
+                    errln("FAIL: Unregistration failed for ID " +
+                          IDS[i] + "; still receiving ID " + t.getID());
+                } catch (IllegalArgumentException e2) {
+                    // Good; this is what we expect
+                    logln("Ok; Unregistered " + IDS[i]);
+                }
+            } catch (IllegalArgumentException e) {
+                errln("FAIL: Registration/creation failed for ID " +
+                      IDS[i]);
+            } finally {
+                Transliterator.unregister(IDS[i]);
+            }
+        }
+
+        // Make sure getAvailable API reflects removal
+        for (Enumeration e = Transliterator.getAvailableIDs();
+             e.hasMoreElements(); ) {
+            String id = (String) e.nextElement();
+            for (int i=0; i<3; ++i) {
+                if (id.equals(FULL_IDS[i])) {
+                    errln("FAIL: unregister(" + id + ") failed");
+                }
+            }
+        }
+        for (Enumeration e = Transliterator.getAvailableTargets("Any");
+             e.hasMoreElements(); ) {
+            String t = (String) e.nextElement();
+            if (t.equals(IDS[0])) {
+                errln("FAIL: unregister(Any-" + t + ") failed");
+            }
+        }
+        for (Enumeration e = Transliterator.getAvailableSources();
+             e.hasMoreElements(); ) {
+            String s = (String) e.nextElement();
+            for (int i=0; i<3; ++i) {
+                if (SOURCES[i] == null) continue;
+                if (s.equals(SOURCES[i])) {
+                    errln("FAIL: unregister(" + s + "-*) failed");
+                }
+            }
+        }
+    }
+
+    /**
+     * Test inverse of Greek-Latin; Title()
+     */
+    public void TestCompoundInverse() {
+        Transliterator t = Transliterator.getInstance
+            ("Greek-Latin; Title()", Transliterator.REVERSE);
+        if (t == null) {
+            errln("FAIL: createInstance");
+            return;
+        }
+        String exp = "(Title);Latin-Greek";
+        if (t.getID().equals(exp)) {
+            logln("Ok: inverse of \"Greek-Latin; Title()\" is \"" +
+                  t.getID());
+        } else {
+            errln("FAIL: inverse of \"Greek-Latin; Title()\" is \"" +
+                  t.getID() + "\", expected \"" + exp + "\"");
+        }
+    }
+
+    /**
+     * Test NFD chaining with RBT
+     */
+    public void TestNFDChainRBT() {
+        Transliterator t = Transliterator.createFromRules(
+                               "TEST", "::NFD; aa > Q; a > q;",
+                               Transliterator.FORWARD);
+        logln(t.toRules(true));
+        expect(t, "aa", "Q");
+    }
+
+    /**
+     * Inverse of "Null" should be "Null". (J21)
+     */
+    public void TestNullInverse() {
+        Transliterator t = Transliterator.getInstance("Null");
+        Transliterator u = t.getInverse();
+        if (!u.getID().equals("Null")) {
+            errln("FAIL: Inverse of Null should be Null");
+        }
+    }
+
+    /**
+     * Check ID of inverse of alias. (J22)
+     */
+    public void TestAliasInverseID() {
+        String ID = "Latin-Hangul"; // This should be any alias ID with an inverse
+        Transliterator t = Transliterator.getInstance(ID);
+        Transliterator u = t.getInverse();
+        String exp = "Hangul-Latin";
+        String got = u.getID();
+        if (!got.equals(exp)) {
+            errln("FAIL: Inverse of " + ID + " is " + got +
+                  ", expected " + exp);
+        }
+    }
+
+    /**
+     * Test IDs of inverses of compound transliterators. (J20)
+     */
+    public void TestCompoundInverseID() {
+        String ID = "Latin-Jamo;NFC(NFD)";
+        Transliterator t = Transliterator.getInstance(ID);
+        Transliterator u = t.getInverse();
+        String exp = "NFD(NFC);Jamo-Latin";
+        String got = u.getID();
+        if (!got.equals(exp)) {
+            errln("FAIL: Inverse of " + ID + " is " + got +
+                  ", expected " + exp);
+        }
+    }
+
+    /**
+     * Test undefined variable.
+     */
+    public void TestUndefinedVariable() {
+        String rule = "$initial } a <> \u1161;";
+        try {
+            Transliterator.createFromRules("<ID>", rule,Transliterator.FORWARD);
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for " + rule + ", as expected: " +
+                  e.getMessage());
+            return;
+        }
+        errln("Fail: bogus rule " + rule + " compiled without error");
+    }
+
+    /**
+     * Test empty context.
+     */
+    public void TestEmptyContext() {
+        expect(" { a } > b;", "xay a ", "xby b ");
+    }
+
+    /**
+     * Test compound filter ID syntax
+     */
+    public void TestCompoundFilterID() {
+        String[] DATA = {
+            // Col. 1 = ID or rule set (latter must start with #)
+
+            // = columns > 1 are null if expect col. 1 to be illegal =
+
+            // Col. 2 = direction, "F..." or "R..."
+            // Col. 3 = source string
+            // Col. 4 = exp result
+
+            "[abc]; [abc]", null, null, null, // multiple filters
+            "Latin-Greek; [abc];", null, null, null, // misplaced filter
+            "[b]; Latin-Greek; Upper; ([xyz])", "F", "abc", "a\u0392c",
+            "[b]; (Lower); Latin-Greek; Upper(); ([\u0392])", "R", "\u0391\u0392\u0393", "\u0391b\u0393",
+            "#\n::[b]; ::Latin-Greek; ::Upper; ::([xyz]);", "F", "abc", "a\u0392c",
+            "#\n::[b]; ::(Lower); ::Latin-Greek; ::Upper(); ::([\u0392]);", "R", "\u0391\u0392\u0393", "\u0391b\u0393",
+        };
+
+        for (int i=0; i<DATA.length; i+=4) {
+            String id = DATA[i];
+            int direction = (DATA[i+1] != null && DATA[i+1].charAt(0) == 'R') ?
+                Transliterator.REVERSE : Transliterator.FORWARD;
+            String source = DATA[i+2];
+            String exp = DATA[i+3];
+            boolean expOk = (DATA[i+1] != null);
+            Transliterator t = null;
+            IllegalArgumentException e = null;
+            try {
+                if (id.charAt(0) == '#') {
+                    t = Transliterator.createFromRules("ID", id, direction);
+                } else {
+                    t = Transliterator.getInstance(id, direction);
+                }
+            } catch (IllegalArgumentException ee) {
+                e = ee;
+            }
+            boolean ok = (t != null && e == null);
+            if (ok == expOk) {
+                logln("Ok: " + id + " => " + t +
+                      (e != null ? (", " + e.getMessage()) : ""));
+                if (source != null) {
+                    expect(t, source, exp);
+                }
+            } else {
+                errln("FAIL: " + id + " => " + t +
+                      (e != null ? (", " + e.getMessage()) : ""));
+            }
+        }
+    }
+
+    /**
+     * Test new property set syntax
+     */
+    public void TestPropertySet() {
+        expect("a>A; \\p{Lu}>x; \\p{Any}>y;", "abcDEF", "Ayyxxx");
+        expect("(.+)>'[' $1 ']';", " a stitch \n in time \r saves 9",
+               "[ a stitch ]\n[ in time ]\r[ saves 9]");
+    }
+
+    /**
+     * Test various failure points of the new 2.0 engine.
+     */
+    public void TestNewEngine() {
+        Transliterator t = Transliterator.getInstance("Latin-Hiragana");
+        // Katakana should be untouched
+        expect(t, "a\u3042\u30A2", "\u3042\u3042\u30A2");
+
+        if (true) {
+            // This test will only work if Transliterator.ROLLBACK is
+            // true.  Otherwise, this test will fail, revealing a
+            // limitation of global filters in incremental mode.
+
+            Transliterator a =
+                Transliterator.createFromRules("a_to_A", "a > A;", Transliterator.FORWARD);
+            Transliterator A =
+                Transliterator.createFromRules("A_to_b", "A > b;", Transliterator.FORWARD);
+
+            //Transliterator array[] = new Transliterator[] {
+            //    a,
+            //    Transliterator.getInstance("NFD"),
+            //    A };
+            //t = Transliterator.getInstance(array, new UnicodeSet("[:Ll:]"));
+
+            try {
+                Transliterator.registerInstance(a);
+                Transliterator.registerInstance(A);
+
+                t = Transliterator.getInstance("[:Ll:];a_to_A;NFD;A_to_b");
+                expect(t, "aAaA", "bAbA");
+
+                Transliterator[] u = t.getElements();
+                assertTrue("getElements().length", u.length == 3);
+                assertEquals("getElements()[0]", u[0].getID(), "a_to_A");
+                assertEquals("getElements()[1]", u[1].getID(), "NFD");
+                assertEquals("getElements()[2]", u[2].getID(), "A_to_b");
+
+                t = Transliterator.getInstance("a_to_A;NFD;A_to_b");
+                t.setFilter(new UnicodeSet("[:Ll:]"));
+                expect(t, "aAaA", "bAbA");
+            } finally {
+                Transliterator.unregister("a_to_A"); 
+                Transliterator.unregister("A_to_b");   
+            }
+        }
+
+        expect("$smooth = x; $macron = q; [:^L:] { ([aeiouyAEIOUY] $macron?) } [^aeiouyAEIOUY$smooth$macron] > | $1 $smooth ;",
+               "a",
+               "ax");
+
+        String gr =
+            "$ddot = \u0308 ;" +
+            "$lcgvowel = [\u03b1\u03b5\u03b7\u03b9\u03bf\u03c5\u03c9] ;" +
+            "$rough = \u0314 ;" +
+            "($lcgvowel+ $ddot?) $rough > h | $1 ;" +
+            "\u03b1 <> a ;" +
+            "$rough <> h ;";
+
+        expect(gr, "\u03B1\u0314", "ha");
+    }
+
+    /**
+     * Test quantified segment behavior.  We want:
+     * ([abc])+ > x $1 x; applied to "cba" produces "xax"
+     */
+    public void TestQuantifiedSegment() {
+        // The normal case
+        expect("([abc]+) > x $1 x;", "cba", "xcbax");
+
+        // The tricky case; the quantifier is around the segment
+        expect("([abc])+ > x $1 x;", "cba", "xax");
+
+        // Tricky case in reverse direction
+        expect("([abc])+ { q > x $1 x;", "cbaq", "cbaxax");
+
+        // Check post-context segment
+        expect("{q} ([a-d])+ > '(' $1 ')';", "ddqcba", "dd(a)cba");
+
+        // Test toRule/toPattern for non-quantified segment.
+        // Careful with spacing here.
+        String r = "([a-c]){q} > x $1 x;";
+        Transliterator t = Transliterator.createFromRules("ID", r, Transliterator.FORWARD);
+        String rr = t.toRules(true);
+        if (!r.equals(rr)) {
+            errln("FAIL: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        } else {
+            logln("Ok: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        }
+
+        // Test toRule/toPattern for quantified segment.
+        // Careful with spacing here.
+        r = "([a-c])+{q} > x $1 x;";
+        t = Transliterator.createFromRules("ID", r, Transliterator.FORWARD);
+        rr = t.toRules(true);
+        if (!r.equals(rr)) {
+            errln("FAIL: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        } else {
+            logln("Ok: \"" + r + "\" x toRules() => \"" + rr + "\"");
+        }
+    }
+
+    //======================================================================
+    // Ram's tests
+    //======================================================================
+ /* this test performs  test of rules in ISO 15915 */
+    public void  TestDevanagariLatinRT(){
+        String[]  source = {
+            "bh\u0101rata",
+            "kra",
+            "k\u1E63a",
+            "khra",
+            "gra",
+            "\u1E45ra",
+            "cra",
+            "chra",
+            "j\u00F1a",
+            "jhra",
+            "\u00F1ra",
+            "\u1E6Dya",
+            "\u1E6Dhra",
+            "\u1E0Dya",
+        //"r\u0323ya", // \u095c is not valid in Devanagari
+            "\u1E0Dhya",
+            "\u1E5Bhra",
+            "\u1E47ra",
+            "tta",
+            "thra",
+            "dda",
+            "dhra",
+            "nna",
+            "pra",
+            "phra",
+            "bra",
+            "bhra",
+            "mra",
+            "\u1E49ra",
+        //"l\u0331ra",
+            "yra",
+            "\u1E8Fra",
+        //"l-",
+            "vra",
+            "\u015Bra",
+            "\u1E63ra",
+            "sra",
+            "hma",
+            "\u1E6D\u1E6Da",
+            "\u1E6D\u1E6Dha",
+            "\u1E6Dh\u1E6Dha",
+            "\u1E0D\u1E0Da",
+            "\u1E0D\u1E0Dha",
+            "\u1E6Dya",
+            "\u1E6Dhya",
+            "\u1E0Dya",
+            "\u1E0Dhya",
+            // Not roundtrippable --
+            // \u0939\u094d\u094d\u092E  - hma
+            // \u0939\u094d\u092E         - hma
+            // CharsToUnicodeString("hma"),
+            "hya",
+            "\u015Br\u0325",
+            "\u015Bca",
+            "\u0115",
+            "san\u0304j\u012Bb s\u0113nagupta",
+            "\u0101nand vaddir\u0101ju",
+        };
+        String[]  expected = {
+            "\u092D\u093E\u0930\u0924",    /* bha\u0304rata */
+            "\u0915\u094D\u0930",          /* kra         */
+            "\u0915\u094D\u0937",          /* ks\u0323a  */
+            "\u0916\u094D\u0930",          /* khra        */
+            "\u0917\u094D\u0930",          /* gra         */
+            "\u0919\u094D\u0930",          /* n\u0307ra  */
+            "\u091A\u094D\u0930",          /* cra         */
+            "\u091B\u094D\u0930",          /* chra        */
+            "\u091C\u094D\u091E",          /* jn\u0303a  */
+            "\u091D\u094D\u0930",          /* jhra        */
+            "\u091E\u094D\u0930",          /* n\u0303ra  */
+            "\u091F\u094D\u092F",          /* t\u0323ya  */
+            "\u0920\u094D\u0930",          /* t\u0323hra */
+            "\u0921\u094D\u092F",          /* d\u0323ya  */
+        //"\u095C\u094D\u092F",          /* r\u0323ya  */ // \u095c is not valid in Devanagari
+            "\u0922\u094D\u092F",          /* d\u0323hya */
+            "\u0922\u093C\u094D\u0930",    /* r\u0323hra */
+            "\u0923\u094D\u0930",          /* n\u0323ra  */
+            "\u0924\u094D\u0924",          /* tta         */
+            "\u0925\u094D\u0930",          /* thra        */
+            "\u0926\u094D\u0926",          /* dda         */
+            "\u0927\u094D\u0930",          /* dhra        */
+            "\u0928\u094D\u0928",          /* nna         */
+            "\u092A\u094D\u0930",          /* pra         */
+            "\u092B\u094D\u0930",          /* phra        */
+            "\u092C\u094D\u0930",          /* bra         */
+            "\u092D\u094D\u0930",          /* bhra        */
+            "\u092E\u094D\u0930",          /* mra         */
+            "\u0929\u094D\u0930",          /* n\u0331ra  */
+        //"\u0934\u094D\u0930",          /* l\u0331ra  */
+            "\u092F\u094D\u0930",          /* yra         */
+            "\u092F\u093C\u094D\u0930",    /* y\u0307ra  */
+        //"l-",
+            "\u0935\u094D\u0930",          /* vra         */
+            "\u0936\u094D\u0930",          /* s\u0301ra  */
+            "\u0937\u094D\u0930",          /* s\u0323ra  */
+            "\u0938\u094D\u0930",          /* sra         */
+            "\u0939\u094d\u092E",          /* hma         */
+            "\u091F\u094D\u091F",          /* t\u0323t\u0323a  */
+            "\u091F\u094D\u0920",          /* t\u0323t\u0323ha */
+            "\u0920\u094D\u0920",          /* t\u0323ht\u0323ha*/
+            "\u0921\u094D\u0921",          /* d\u0323d\u0323a  */
+            "\u0921\u094D\u0922",          /* d\u0323d\u0323ha */
+            "\u091F\u094D\u092F",          /* t\u0323ya  */
+            "\u0920\u094D\u092F",          /* t\u0323hya */
+            "\u0921\u094D\u092F",          /* d\u0323ya  */
+            "\u0922\u094D\u092F",          /* d\u0323hya */
+        // "hma",                         /* hma         */
+            "\u0939\u094D\u092F",          /* hya         */
+            "\u0936\u0943",                /* s\u0301r\u0325a  */
+            "\u0936\u094D\u091A",          /* s\u0301ca  */
+            "\u090d",                      /* e\u0306    */
+            "\u0938\u0902\u091C\u0940\u092C\u094D \u0938\u0947\u0928\u0917\u0941\u092A\u094D\u0924",
+            "\u0906\u0928\u0902\u0926\u094D \u0935\u0926\u094D\u0926\u093F\u0930\u093E\u091C\u0941",
+        };
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Devanagari", Transliterator.FORWARD );
+        Transliterator devToLatin=Transliterator.getInstance("Devanagari-Latin", Transliterator.FORWARD);
+
+        for(int i= 0; i<source.length; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+
+    }
+    public void  TestTeluguLatinRT(){
+        String[]  source = {
+            "raghur\u0101m vi\u015Bvan\u0101dha",                           /* Raghuram Viswanadha    */
+            "\u0101nand vaddir\u0101ju",                                    /* Anand Vaddiraju        */
+            "r\u0101j\u012Bv ka\u015Barab\u0101da",                         /* Rajeev Kasarabada      */
+            "san\u0304j\u012Bv ka\u015Barab\u0101da",                       /* sanjeev kasarabada     */
+            "san\u0304j\u012Bb sen'gupta",                                  /* sanjib sengupata       */
+            "amar\u0113ndra hanum\u0101nula",                               /* Amarendra hanumanula   */
+            "ravi kum\u0101r vi\u015Bvan\u0101dha",                         /* Ravi Kumar Viswanadha  */
+            "\u0101ditya kandr\u0113gula",                                  /* Aditya Kandregula      */
+            "\u015Br\u012Bdhar ka\u1E47\u1E6Dama\u015Be\u1E6D\u1E6Di",      /* Shridhar Kantamsetty   */
+            "m\u0101dhav de\u015Be\u1E6D\u1E6Di"                            /* Madhav Desetty         */
+        };
+
+        String[]  expected = {
+            "\u0c30\u0c18\u0c41\u0c30\u0c3e\u0c2e\u0c4d \u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27",
+            "\u0c06\u0c28\u0c02\u0c26\u0c4d \u0C35\u0C26\u0C4D\u0C26\u0C3F\u0C30\u0C3E\u0C1C\u0C41",
+            "\u0c30\u0c3e\u0c1c\u0c40\u0c35\u0c4d \u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26",
+            "\u0c38\u0c02\u0c1c\u0c40\u0c35\u0c4d \u0c15\u0c36\u0c30\u0c2c\u0c3e\u0c26",
+            "\u0c38\u0c02\u0c1c\u0c40\u0c2c\u0c4d \u0c38\u0c46\u0c28\u0c4d\u0c17\u0c41\u0c2a\u0c4d\u0c24",
+            "\u0c05\u0c2e\u0c30\u0c47\u0c02\u0c26\u0c4d\u0c30 \u0c39\u0c28\u0c41\u0c2e\u0c3e\u0c28\u0c41\u0c32",
+            "\u0c30\u0c35\u0c3f \u0c15\u0c41\u0c2e\u0c3e\u0c30\u0c4d \u0c35\u0c3f\u0c36\u0c4d\u0c35\u0c28\u0c3e\u0c27",
+            "\u0c06\u0c26\u0c3f\u0c24\u0c4d\u0c2f \u0C15\u0C02\u0C26\u0C4D\u0C30\u0C47\u0C17\u0C41\u0c32",
+            "\u0c36\u0c4d\u0c30\u0c40\u0C27\u0C30\u0C4D \u0c15\u0c02\u0c1f\u0c2e\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f",
+            "\u0c2e\u0c3e\u0c27\u0c35\u0c4d \u0c26\u0c46\u0c36\u0c46\u0c1f\u0c4d\u0c1f\u0c3f",
+        };
+
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Telugu", Transliterator.FORWARD);
+        Transliterator devToLatin=Transliterator.getInstance("Telugu-Latin", Transliterator.FORWARD);
+
+        for(int i= 0; i<source.length; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+    }
+
+    public void  TestSanskritLatinRT(){
+        int MAX_LEN =15;
+        String[]  source = {
+            "rmk\u1E63\u0113t",
+            "\u015Br\u012Bmad",
+            "bhagavadg\u012Bt\u0101",
+            "adhy\u0101ya",
+            "arjuna",
+            "vi\u1E63\u0101da",
+            "y\u014Dga",
+            "dhr\u0325tar\u0101\u1E63\u1E6Dra",
+            "uv\u0101cr\u0325",
+            "dharmak\u1E63\u0113tr\u0113",
+            "kuruk\u1E63\u0113tr\u0113",
+            "samav\u0113t\u0101",
+            "yuyutsava\u1E25",
+            "m\u0101mak\u0101\u1E25",
+        // "p\u0101\u1E47\u1E0Dav\u0101\u015Bcaiva",
+            "kimakurvata",
+            "san\u0304java",
+        };
+        String[]  expected = {
+            "\u0930\u094D\u092E\u094D\u0915\u094D\u0937\u0947\u0924\u094D",
+            "\u0936\u094d\u0930\u0940\u092e\u0926\u094d",
+            "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e",
+            "\u0905\u0927\u094d\u092f\u093e\u092f",
+            "\u0905\u0930\u094d\u091c\u0941\u0928",
+            "\u0935\u093f\u0937\u093e\u0926",
+            "\u092f\u094b\u0917",
+            "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930",
+            "\u0909\u0935\u093E\u091A\u0943",
+            "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0938\u092e\u0935\u0947\u0924\u093e",
+            "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903",
+            "\u092e\u093e\u092e\u0915\u093e\u0903",
+        //"\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935",
+            "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924",
+            "\u0938\u0902\u091c\u0935",
+        };
+
+        Transliterator latinToDev=Transliterator.getInstance("Latin-Devanagari", Transliterator.FORWARD);
+        Transliterator devToLatin=Transliterator.getInstance("Devanagari-Latin", Transliterator.FORWARD);
+        for(int i= 0; i<MAX_LEN; i++){
+            expect(latinToDev,(source[i]),(expected[i]));
+            expect(devToLatin,(expected[i]),(source[i]));
+        }
+    }
+
+    public void  TestCompoundLatinRT(){
+        int MAX_LEN =15;
+        String[]  source = {
+            "rmk\u1E63\u0113t",
+            "\u015Br\u012Bmad",
+            "bhagavadg\u012Bt\u0101",
+            "adhy\u0101ya",
+            "arjuna",
+            "vi\u1E63\u0101da",
+            "y\u014Dga",
+            "dhr\u0325tar\u0101\u1E63\u1E6Dra",
+            "uv\u0101cr\u0325",
+            "dharmak\u1E63\u0113tr\u0113",
+            "kuruk\u1E63\u0113tr\u0113",
+            "samav\u0113t\u0101",
+            "yuyutsava\u1E25",
+            "m\u0101mak\u0101\u1E25",
+        // "p\u0101\u1E47\u1E0Dav\u0101\u015Bcaiva",
+            "kimakurvata",
+            "san\u0304java"
+        };
+        String[]  expected = {
+            "\u0930\u094D\u092E\u094D\u0915\u094D\u0937\u0947\u0924\u094D",
+            "\u0936\u094d\u0930\u0940\u092e\u0926\u094d",
+            "\u092d\u0917\u0935\u0926\u094d\u0917\u0940\u0924\u093e",
+            "\u0905\u0927\u094d\u092f\u093e\u092f",
+            "\u0905\u0930\u094d\u091c\u0941\u0928",
+            "\u0935\u093f\u0937\u093e\u0926",
+            "\u092f\u094b\u0917",
+            "\u0927\u0943\u0924\u0930\u093e\u0937\u094d\u091f\u094d\u0930",
+            "\u0909\u0935\u093E\u091A\u0943",
+            "\u0927\u0930\u094d\u092e\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0915\u0941\u0930\u0941\u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0947",
+            "\u0938\u092e\u0935\u0947\u0924\u093e",
+            "\u092f\u0941\u092f\u0941\u0924\u094d\u0938\u0935\u0903",
+            "\u092e\u093e\u092e\u0915\u093e\u0903",
+        //  "\u092a\u093e\u0923\u094d\u0921\u0935\u093e\u0936\u094d\u091a\u0948\u0935",
+            "\u0915\u093f\u092e\u0915\u0941\u0930\u094d\u0935\u0924",
+            "\u0938\u0902\u091c\u0935"
+        };
+
+        Transliterator latinToDevToLatin=Transliterator.getInstance("Latin-Devanagari;Devanagari-Latin", Transliterator.FORWARD);
+        Transliterator devToLatinToDev=Transliterator.getInstance("Devanagari-Latin;Latin-Devanagari", Transliterator.FORWARD);
+        for(int i= 0; i<MAX_LEN; i++){
+            expect(latinToDevToLatin,(source[i]),(source[i]));
+            expect(devToLatinToDev,(expected[i]),(expected[i]));
+        }
+    }
+    /**
+     * Test Gurmukhi-Devanagari Tippi and Bindi
+     */
+    public void TestGurmukhiDevanagari(){
+        // the rule says:
+        // (\u0902) (when preceded by vowel)      --->  (\u0A02)
+        // (\u0902) (when preceded by consonant)  --->  (\u0A70)
+
+        UnicodeSet vowel =new UnicodeSet("[\u0905-\u090A \u090F\u0910\u0913\u0914 \u093e-\u0942\u0947\u0948\u094B\u094C\u094D]");
+        UnicodeSet non_vowel =new UnicodeSet("[\u0915-\u0928\u092A-\u0930]");
+
+        UnicodeSetIterator vIter = new UnicodeSetIterator(vowel);
+        UnicodeSetIterator nvIter = new UnicodeSetIterator(non_vowel);
+        Transliterator trans = Transliterator.getInstance("Devanagari-Gurmukhi");
+        StringBuffer src = new StringBuffer(" \u0902");
+        StringBuffer expect = new StringBuffer(" \u0A02");
+        while(vIter.next()){
+            src.setCharAt(0,(char) vIter.codepoint);
+            expect.setCharAt(0,(char) (vIter.codepoint+0x0100));
+            expect(trans,src.toString(),expect.toString());
+        }
+
+        expect.setCharAt(1,'\u0A70');
+        while(nvIter.next()){
+            //src.setCharAt(0,(char) nvIter.codepoint);
+            src.setCharAt(0,(char)nvIter.codepoint);
+            expect.setCharAt(0,(char) (nvIter.codepoint+0x0100));
+            expect(trans,src.toString(),expect.toString());
+        }
+    }
+    /**
+     * Test instantiation from a locale.
+     */
+    public void TestLocaleInstantiation() {
+        Transliterator t;
+        try{
+            t = Transliterator.getInstance("te_IN-Latin");
+            //expect(t, "\u0430", "a");
+        }catch(IllegalArgumentException ex){
+            warnln("Could not load locale data for obtaining the script used in the locale te_IN. "+ex.getMessage());
+        }
+        try{
+            t = Transliterator.getInstance("ru_RU-Latin");
+            expect(t, "\u0430", "a");
+        }catch(IllegalArgumentException ex){
+            warnln("Could not load locale data for obtaining the script used in the locale ru_RU. "+ex.getMessage());
+        }
+        try{
+            t = Transliterator.getInstance("en-el");
+            expect(t, "a", "\u03B1");
+        }catch(IllegalArgumentException ex){
+            warnln("Could not load locale data for obtaining the script used in the locale el. "+ ex.getMessage());
+        }
+    }
+
+    /**
+     * Test title case handling of accent (should ignore accents)
+     */
+    public void TestTitleAccents() {
+        Transliterator t = Transliterator.getInstance("Title");
+        expect(t, "a\u0300b can't abe", "A\u0300b Can't Abe");
+    }
+
+    /**
+     * Basic test of a locale resource based rule.
+     */
+    public void TestLocaleResource() {
+        String DATA[] = {
+            // id                    from             to
+            "Latin-Greek/UNGEGN",    "b",             "\u03bc\u03c0",
+            "Latin-el",              "b",             "\u03bc\u03c0",
+            "Latin-Greek",           "b",             "\u03B2",
+            "Greek-Latin/UNGEGN",    "\u03B2",        "v",
+            "el-Latin",              "\u03B2",        "v",
+            "Greek-Latin",           "\u03B2",        "b",
+        };
+        for (int i=0; i<DATA.length; i+=3) {
+            Transliterator t = Transliterator.getInstance(DATA[i]);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    /**
+     * Make sure parse errors reference the right line.
+     */
+    public void TestParseError() {
+        String rule =
+            "a > b;\n" +
+            "# more stuff\n" +
+            "d << b;";
+        try {
+            Transliterator t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+            if(t!=null){
+                errln("FAIL: Did not get expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            String err = e.getMessage();
+            if (err.indexOf("d << b") >= 0) {
+                logln("Ok: " + err);
+            } else {
+                errln("FAIL: " + err);
+            }
+            return;
+        }
+        errln("FAIL: no syntax error");
+    }
+
+    /**
+     * Make sure sets on output are disallowed.
+     */
+    public void TestOutputSet() {
+        String rule = "$set = [a-cm-n]; b > $set;";
+        Transliterator t = null;
+        try {
+            t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+            if(t!=null){
+                errln("FAIL: Did not get the expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            logln("Ok: " + e.getMessage());
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test the use variable range pragma, making sure that use of
+     * variable range characters is detected and flagged as an error.
+     */
+    public void TestVariableRange() {
+        String rule = "use variable range 0x70 0x72; a > A; b > B; q > Q;";
+        try {
+            Transliterator t =
+                Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+            if(t!=null){
+                errln("FAIL: Did not get the expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            logln("Ok: " + e.getMessage());
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test invalid post context error handling
+     */
+    public void TestInvalidPostContext() {
+        try {
+            Transliterator t =
+                Transliterator.createFromRules("ID", "a}b{c>d;", Transliterator.FORWARD);
+            if(t!=null){
+                errln("FAIL: Did not get the expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            String msg = e.getMessage();
+            if (msg.indexOf("a}b{c") >= 0) {
+                logln("Ok: " + msg);
+            } else {
+                errln("FAIL: " + msg);
+            }
+            return;
+        }
+        errln("FAIL: No syntax error");
+    }
+
+    /**
+     * Test ID form variants
+     */
+    public void TestIDForms() {
+        String DATA[] = {
+            "NFC", null, "NFD",
+            "nfd", null, "NFC", // make sure case is ignored
+            "Any-NFKD", null, "Any-NFKC",
+            "Null", null, "Null",
+            "-nfkc", "nfkc", "NFKD",
+            "-nfkc/", "nfkc", "NFKD",
+            "Latin-Greek/UNGEGN", null, "Greek-Latin/UNGEGN",
+            "Greek/UNGEGN-Latin", "Greek-Latin/UNGEGN", "Latin-Greek/UNGEGN",
+            "Bengali-Devanagari/", "Bengali-Devanagari", "Devanagari-Bengali",
+            "Source-", null, null,
+            "Source/Variant-", null, null,
+            "Source-/Variant", null, null,
+            "/Variant", null, null,
+            "/Variant-", null, null,
+            "-/Variant", null, null,
+            "-/", null, null,
+            "-", null, null,
+            "/", null, null,
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String ID = DATA[i];
+            String expID = DATA[i+1];
+            String expInvID = DATA[i+2];
+            boolean expValid = (expInvID != null);
+            if (expID == null) {
+                expID = ID;
+            }
+            try {
+                Transliterator t =
+                    Transliterator.getInstance(ID);
+                Transliterator u = t.getInverse();
+                if (t.getID().equals(expID) &&
+                    u.getID().equals(expInvID)) {
+                    logln("Ok: " + ID + ".getInverse() => " + expInvID);
+                } else {
+                    errln("FAIL: getInstance(" + ID + ") => " +
+                          t.getID() + " x getInverse() => " + u.getID() +
+                          ", expected " + expInvID);
+                }
+            } catch (IllegalArgumentException e) {
+                if (!expValid) {
+                    logln("Ok: getInstance(" + ID + ") => " + e.getMessage());
+                } else {
+                    errln("FAIL: getInstance(" + ID + ") => " + e.getMessage());
+                }
+            }
+        }
+    }
+
+    void checkRules(String label, Transliterator t2, String testRulesForward) {
+        String rules2 = t2.toRules(true);
+        //rules2 = TestUtility.replaceAll(rules2, new UnicodeSet("[' '\n\r]"), "");
+        rules2 = TestUtility.replace(rules2, " ", "");
+        rules2 = TestUtility.replace(rules2, "\n", "");
+        rules2 = TestUtility.replace(rules2, "\r", "");
+        testRulesForward = TestUtility.replace(testRulesForward, " ", "");
+
+        if (!rules2.equals(testRulesForward)) {
+            errln(label);
+            logln("GENERATED RULES: " + rules2);
+            logln("SHOULD BE:       " + testRulesForward);
+        }
+    }
+
+    /**
+     * Mark's toRules test.
+     */
+    public void TestToRulesMark() {
+
+        String testRules =
+            "::[[:Latin:][:Mark:]];"
+            + "::NFKD (NFC);"
+            + "::Lower (Lower);"
+            + "a <> \\u03B1;" // alpha
+            + "::NFKC (NFD);"
+            + "::Upper (Lower);"
+            + "::Lower ();"
+            + "::([[:Greek:][:Mark:]]);"
+            ;
+        String testRulesForward =
+            "::[[:Latin:][:Mark:]];"
+            + "::NFKD(NFC);"
+            + "::Lower(Lower);"
+            + "a > \\u03B1;"
+            + "::NFKC(NFD);"
+            + "::Upper (Lower);"
+            + "::Lower ();"
+            ;
+        String testRulesBackward =
+            "::[[:Greek:][:Mark:]];"
+            + "::Lower (Upper);"
+            + "::NFD(NFKC);"
+            + "\\u03B1 > a;"
+            + "::Lower(Lower);"
+            + "::NFC(NFKD);"
+            ;
+        String source = "\u00E1"; // a-acute
+        String target = "\u03AC"; // alpha-acute
+
+        Transliterator t2 = Transliterator.createFromRules("source-target", testRules, Transliterator.FORWARD);
+        Transliterator t3 = Transliterator.createFromRules("target-source", testRules, Transliterator.REVERSE);
+
+        expect(t2, source, target);
+        expect(t3, target, source);
+
+        checkRules("Failed toRules FORWARD", t2, testRulesForward);
+        checkRules("Failed toRules BACKWARD", t3, testRulesBackward);
+    }
+
+    /**
+     * Test Escape and Unescape transliterators.
+     */
+    public void TestEscape() {
+        expect(Transliterator.getInstance("Hex-Any"),
+               "\\x{40}\\U00000031&#x32;&#81;",
+               "@12Q");
+        expect(Transliterator.getInstance("Any-Hex/C"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\u0041\\U0010BEEF\\uFEED");
+        expect(Transliterator.getInstance("Any-Hex/Java"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\u0041\\uDBEF\\uDEEF\\uFEED");
+        expect(Transliterator.getInstance("Any-Hex/Perl"),
+               CharsToUnicodeString("A\\U0010BEEF\\uFEED"),
+               "\\x{41}\\x{10BEEF}\\x{FEED}");
+    }
+
+    /**
+     * Make sure display names of variants look reasonable.
+     */
+    public void TestDisplayName() {
+        String DATA[] = {
+            // ID, forward name, reverse name
+            // Update the text as necessary -- the important thing is
+            // not the text itself, but how various cases are handled.
+
+            // Basic test
+            "Any-Hex", "Any to Hex Escape", "Hex Escape to Any",
+
+            // Variants
+            "Any-Hex/Perl", "Any to Hex Escape/Perl", "Hex Escape to Any/Perl",
+
+            // Target-only IDs
+            "NFC", "Any to NFC", "Any to NFD",
+        };
+
+        Locale US = Locale.US;
+
+        for (int i=0; i<DATA.length; i+=3) {
+            String name = Transliterator.getDisplayName(DATA[i], US);
+            if (!name.equals(DATA[i+1])) {
+                errln("FAIL: " + DATA[i] + ".getDisplayName() => " +
+                      name + ", expected " + DATA[i+1]);
+            } else {
+                logln("Ok: " + DATA[i] + ".getDisplayName() => " + name);
+            }
+            Transliterator t = Transliterator.getInstance(DATA[i], Transliterator.REVERSE);
+            name = Transliterator.getDisplayName(t.getID(), US);
+            if (!name.equals(DATA[i+2])) {
+                errln("FAIL: " + t.getID() + ".getDisplayName() => " +
+                      name + ", expected " + DATA[i+2]);
+            } else {
+                logln("Ok: " + t.getID() + ".getDisplayName() => " + name);
+            }
+            
+            // Cover getDisplayName(String)
+            ULocale save = ULocale.getDefault();
+            ULocale.setDefault(ULocale.US);
+            String name2 = Transliterator.getDisplayName(t.getID());
+            if (!name.equals(name2))
+                errln("FAIL: getDisplayName with default locale failed");
+            ULocale.setDefault(save);
+        }
+    }
+
+    /**
+     * Test anchor masking
+     */
+    public void TestAnchorMasking() {
+        String rule = "^a > Q; a > q;";
+        try {
+            Transliterator t = Transliterator.createFromRules("ID", rule, Transliterator.FORWARD);
+            if(t==null){
+                errln("FAIL: Did not get the expected exception");
+            }
+        } catch (IllegalArgumentException e) {
+            errln("FAIL: " + rule + " => " + e);
+        }
+    }
+
+    /**
+     * This test is not in trnstst.cpp. This test has been moved from com/ibm/icu/dev/test/lang/TestUScript.java
+     * during ICU4J modularization to remove dependency of tests on Transliterator.
+     */
+     public void TestScriptAllCodepoints(){
+            int code;
+            HashSet  scriptIdsChecked   = new HashSet();
+            HashSet  scriptAbbrsChecked = new HashSet();
+            for( int i =0; i <= 0x10ffff; i++){
+                code = UScript.getScript(i);
+                if(code==UScript.INVALID_CODE){
+                    errln("UScript.getScript for codepoint 0x"+ hex(i)+" failed");
+                }
+                 String id =UScript.getName(code);
+                 String abbr = UScript.getShortName(code);
+                 if (!scriptIdsChecked.contains(id)) {
+                     scriptIdsChecked.add(id);
+                     String newId ="[:"+id+":];NFD";
+                     try{
+                         Transliterator t = Transliterator.getInstance(newId);
+                         if(t==null){
+                              errln("Failed to create transliterator for "+hex(i)+
+                              " script code: " +id);
+                         }
+                     }catch(Exception e){
+                         errln("Failed to create transliterator for "+hex(i)
+                                 +" script code: " +id
+                                 + " Exception: "+e.getMessage());
+                     }
+                 }
+                 if (!scriptAbbrsChecked.contains(abbr)) {
+                     scriptAbbrsChecked.add(abbr);
+                     String newAbbrId ="[:"+abbr+":];NFD";
+                     try{
+                         Transliterator t = Transliterator.getInstance(newAbbrId);
+                         if(t==null){
+                              errln("Failed to create transliterator for "+hex(i)+
+                              " script code: " +abbr);
+                         }
+                     }catch(Exception e){
+                         errln("Failed to create transliterator for "+hex(i)
+                                 +" script code: " +abbr
+                                 + " Exception: "+e.getMessage());
+                     }
+                 }
+            }
+    }
+
+
+    static final String[][] registerRules = {
+        {"Any-Dev1", "x > X; y > Y;"},
+        {"Any-Dev2", "XY > Z"},
+        {"Greek-Latin/FAKE",
+            "[^[:L:][:M:]] { \u03bc\u03c0 > b ; "+
+            "\u03bc\u03c0 } [^[:L:][:M:]] > b ; "+
+            "[^[:L:][:M:]] { [\u039c\u03bc][\u03a0\u03c0] > B ; "+
+            "[\u039c\u03bc][\u03a0\u03c0] } [^[:L:][:M:]] > B ;"
+            },
+    };
+
+    static final String DESERET_DEE = UTF16.valueOf(0x10414);
+    static final String DESERET_dee = UTF16.valueOf(0x1043C);
+
+    static final String[][] testCases = {
+
+        // NORMALIZATION
+        // should add more test cases
+        {"NFD" , "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFC" , "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFKD", "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+        {"NFKC", "a\u0300 \u00E0 \u1100\u1161 \uFF76\uFF9E\u03D3"},
+
+        // mp -> b BUG
+        {"Greek-Latin/UNGEGN", "(\u03BC\u03C0)", "(b)"},
+        {"Greek-Latin/FAKE", "(\u03BC\u03C0)", "(b)"},
+
+        // check for devanagari bug
+        {"nfd;Dev1;Dev2;nfc", "xy", "Z"},
+
+        // ff, i, dotless-i, I, dotted-I, LJLjlj deseret deeDEE
+        {"Title", "ab'cD ffi\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "Ab'cd Ffi\u0131ii\u0307 \u01C8\u01C9\u01C9 " + DESERET_DEE + DESERET_dee},
+        //TODO: enable this test once Titlecase works right
+        //{"Title", "\uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+        //          "Ffi\u0131ii \u01C8\u01C9\u01C9 " + DESERET_DEE + DESERET_dee},
+
+        {"Upper", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "AB'CD FFIII\u0130 \u01C7\u01C7\u01C7 " + DESERET_DEE + DESERET_DEE},
+        {"Lower", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE,
+                  "ab'cd \uFB00i\u0131ii\u0307 \u01C9\u01C9\u01C9 " + DESERET_dee + DESERET_dee},
+
+        {"Upper", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE},
+        {"Lower", "ab'cD \uFB00i\u0131I\u0130 \u01C7\u01C8\u01C9 " + DESERET_dee + DESERET_DEE},
+
+         // FORMS OF S
+        {"Greek-Latin/UNGEGN", "\u03C3 \u03C3\u03C2 \u03C2\u03C3", "s ss s\u0331s\u0331"},
+        {"Latin-Greek/UNGEGN", "s ss s\u0331s\u0331", "\u03C3 \u03C3\u03C2 \u03C2\u03C3"},
+        {"Greek-Latin", "\u03C3 \u03C3\u03C2 \u03C2\u03C3", "s ss s\u0331s\u0331"},
+        {"Latin-Greek", "s ss s\u0331s\u0331", "\u03C3 \u03C3\u03C2 \u03C2\u03C3"},
+
+        // Tatiana bug
+        // Upper: TAT\u02B9\u00C2NA
+        // Lower: tat\u02B9\u00E2na
+        // Title: Tat\u02B9\u00E2na
+        {"Upper", "tat\u02B9\u00E2na", "TAT\u02B9\u00C2NA"},
+        {"Lower", "TAT\u02B9\u00C2NA", "tat\u02B9\u00E2na"},
+        {"Title", "tat\u02B9\u00E2na", "Tat\u02B9\u00E2na"},
+    };
+
+    public void TestSpecialCases() {
+
+        for (int i = 0; i < registerRules.length; ++i) {
+            Transliterator t = Transliterator.createFromRules(registerRules[i][0],
+                registerRules[i][1], Transliterator.FORWARD);
+            DummyFactory.add(registerRules[i][0], t);
+        }
+        for (int i = 0; i < testCases.length; ++i) {
+            String name = testCases[i][0];
+            Transliterator t = Transliterator.getInstance(name);
+            String id = t.getID();
+            String source = testCases[i][1];
+            String target = null;
+
+            // Automatic generation of targets, to make it simpler to add test cases (and more fail-safe)
+
+            if (testCases[i].length > 2)    target = testCases[i][2];
+            else if (id.equalsIgnoreCase("NFD"))    target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFD);
+            else if (id.equalsIgnoreCase("NFC"))    target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFC);
+            else if (id.equalsIgnoreCase("NFKD"))   target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFKD);
+            else if (id.equalsIgnoreCase("NFKC"))   target = com.ibm.icu.text.Normalizer.normalize(source, com.ibm.icu.text.Normalizer.NFKC);
+            else if (id.equalsIgnoreCase("Lower"))  target = UCharacter.toLowerCase(Locale.US, source);
+            else if (id.equalsIgnoreCase("Upper"))  target = UCharacter.toUpperCase(Locale.US, source);
+
+            expect(t, source, target);
+        }
+        for (int i = 0; i < registerRules.length; ++i) {
+            Transliterator.unregister(registerRules[i][0]);
+        }
+    }
+
+    // seems like there should be an easier way to just register an instance of a transliterator
+
+    static class DummyFactory implements Transliterator.Factory {
+        static DummyFactory singleton = new DummyFactory();
+        static HashMap m = new HashMap();
+
+        // Since Transliterators are immutable, we don't have to clone on set & get
+        static void add(String ID, Transliterator t) {
+            m.put(ID, t);
+            //System.out.println("Registering: " + ID + ", " + t.toRules(true));
+            Transliterator.registerFactory(ID, singleton);
+        }
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(ID);
+        }
+    }
+
+    public void TestSurrogateCasing () {
+        // check that casing handles surrogates
+        // titlecase is currently defective
+        int dee = UTF16.charAt(DESERET_dee,0);
+        int DEE = UCharacter.toTitleCase(dee);
+        if (!UTF16.valueOf(DEE).equals(DESERET_DEE)) {
+            errln("Fails titlecase of surrogates" + Integer.toString(dee,16) + ", " + Integer.toString(DEE,16));
+        }
+
+        if (!UCharacter.toUpperCase(DESERET_dee + DESERET_DEE).equals(DESERET_DEE + DESERET_DEE)) {
+            errln("Fails uppercase of surrogates");
+        }
+
+        if (!UCharacter.toLowerCase(DESERET_dee + DESERET_DEE).equals(DESERET_dee + DESERET_dee)) {
+            errln("Fails lowercase of surrogates");
+        }
+    }
+
+    // Check to see that incremental gets at least part way through a reasonable string.
+
+    public void TestIncrementalProgress() {
+        String latinTest = "The Quick Brown Fox.";
+        String devaTest = Transliterator.getInstance("Latin-Devanagari").transliterate(latinTest);
+        String kataTest = Transliterator.getInstance("Latin-Katakana").transliterate(latinTest);
+        String[][] tests = {
+            {"Any", latinTest},
+            {"Latin", latinTest},
+            {"Halfwidth", latinTest},
+            {"Devanagari", devaTest},
+            {"Katakana", kataTest},
+        };
+
+        Enumeration sources = Transliterator.getAvailableSources();
+        while(sources.hasMoreElements()) {
+            String source = (String) sources.nextElement();
+            String test = findMatch(source, tests);
+            if (test == null) {
+                logln("Skipping " + source + "-X");
+                continue;
+            }
+            Enumeration targets = Transliterator.getAvailableTargets(source);
+            while(targets.hasMoreElements()) {
+                String target = (String) targets.nextElement();
+                Enumeration variants = Transliterator.getAvailableVariants(source, target);
+                while(variants.hasMoreElements()) {
+                    String variant = (String) variants.nextElement();
+                    String id = source + "-" + target + "/" + variant;
+                    logln("id: " + id);
+
+                    String filter = getTranslitTestFilter();
+                    if (filter != null && id.indexOf(filter) < 0) continue;
+
+                    Transliterator t = Transliterator.getInstance(id);
+                    CheckIncrementalAux(t, test);
+
+                    String rev = t.transliterate(test);
+                    Transliterator inv = t.getInverse();
+                    CheckIncrementalAux(inv, rev);
+                }
+            }
+        }
+    }
+
+    public String findMatch (String source, String[][] pairs) {
+        for (int i = 0; i < pairs.length; ++i) {
+            if (source.equalsIgnoreCase(pairs[i][0])) return pairs[i][1];
+        }
+        return null;
+    }
+
+    public void CheckIncrementalAux(Transliterator t, String input) {
+
+        Replaceable test = new ReplaceableString(input);
+        Transliterator.Position pos = new Transliterator.Position(0, test.length(), 0, test.length());
+        t.transliterate(test, pos);
+        boolean gotError = false;
+
+        // we have a few special cases. Any-Remove (pos.start = 0, but also = limit) and U+XXXXX?X?
+
+        if (pos.start == 0 && pos.limit != 0 && !t.getID().equals("Hex-Any/Unicode")) {
+            errln("No Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos));
+            gotError = true;
+        } else {
+            logln("PASS Progress, " + t.getID() + ": " + UtilityExtensions.formatInput(test, pos));
+        }
+        t.finishTransliteration(test, pos);
+        if (pos.start != pos.limit) {
+            errln("Incomplete, " + t.getID() + ":  " + UtilityExtensions.formatInput(test, pos));
+            gotError = true;
+        }
+        if(!gotError){
+            //errln("FAIL: Did not get expected error");
+        }
+    }
+
+    public void TestFunction() {
+        // Careful with spacing and ';' here:  Phrase this exactly
+        // as toRules() is going to return it.  If toRules() changes
+        // with regard to spacing or ';', then adjust this string.
+        String rule =
+            "([:Lu:]) > $1 '(' &Lower( $1 ) '=' &Hex( &Any-Lower( $1 ) ) ')';";
+
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        String r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+
+        expect(t, "The Quick Brown Fox",
+               "T(t=\\u0074)he Q(q=\\u0071)uick B(b=\\u0062)rown F(f=\\u0066)ox");
+        rule =
+            "([^\\ -\\u007F]) > &Hex/Unicode( $1 ) ' ' &Name( $1 ) ;";
+
+        t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        r = t.toRules(true);
+        if (r.equals(rule)) {
+            logln("OK: toRules() => " + r);
+        } else {
+            errln("FAIL: toRules() => " + r +
+                  ", expected " + rule);
+        }
+
+        expect(t, "\u0301",
+               "U+0301 \\N{COMBINING ACUTE ACCENT}");
+    }
+
+    public void TestInvalidBackRef() {
+        String rule =  ". > $1;";
+        String rule2 ="(.) <> &hex/unicode($1) &name($1); . > $1; [{}] >\u0020;";
+        try {
+            Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+            if (t != null) {
+                errln("FAIL: createFromRules should have returned NULL");
+            }
+            errln("FAIL: Ok: . > $1; => no error");
+            Transliterator t2= Transliterator.createFromRules("Test2", rule2, Transliterator.FORWARD);
+            if (t2 != null) {
+                errln("FAIL: createFromRules should have returned NULL");
+            }
+            errln("FAIL: Ok: . > $1; => no error");
+        } catch (IllegalArgumentException e) {
+             logln("Ok: . > $1; => " + e.getMessage());
+        }
+    }
+
+    public void TestMulticharStringSet() {
+        // Basic testing
+        String rule =
+            "       [{aa}]       > x;" +
+            "         a          > y;" +
+            "       [b{bc}]      > z;" +
+            "[{gd}] { e          > q;" +
+            "         e } [{fg}] > r;" ;
+
+        Transliterator t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        expect(t, "a aa ab bc d gd de gde gdefg ddefg",
+                  "y x yz z d gd de gdq gdqfg ddrfg");
+
+        // Overlapped string test.  Make sure that when multiple
+        // strings can match that the longest one is matched.
+        rule =
+            "    [a {ab} {abc}]    > x;" +
+            "           b          > y;" +
+            "           c          > z;" +
+            " q [t {st} {rst}] { e > p;" ;
+
+        t = Transliterator.createFromRules("Test", rule, Transliterator.FORWARD);
+        if (t == null) {
+            errln("FAIL: createFromRules failed");
+            return;
+        }
+
+        expect(t, "a ab abc qte qste qrste",
+                  "x x x qtp qstp qrstp");
+    }
+
+    /**
+     * Test that user-registered transliterators can be used under function
+     * syntax.
+     */
+    public void TestUserFunction() {
+        Transliterator t;
+
+        // There's no need to register inverses if we don't use them
+        TestUserFunctionFactory.add("Any-gif",
+            Transliterator.createFromRules("gif",
+                "'\\'u(..)(..) > '<img src=\"http://www.unicode.org/gifs/24/' $1 '/U' $1$2 '.gif\">';",
+                Transliterator.FORWARD));
+        //TestUserFunctionFactory.add("gif-Any", Transliterator.getInstance("Any-Null"));
+
+        TestUserFunctionFactory.add("Any-RemoveCurly",
+            Transliterator.createFromRules("RemoveCurly", "[\\{\\}] > ; \\\\N > ;", Transliterator.FORWARD));
+        //TestUserFunctionFactory.add("RemoveCurly-Any", Transliterator.getInstance("Any-Null"));
+
+        logln("Trying &hex");
+        t = Transliterator.createFromRules("hex2", "(.) > &hex($1);", Transliterator.FORWARD);
+        logln("Registering");
+        TestUserFunctionFactory.add("Any-hex2", t);
+        t = Transliterator.getInstance("Any-hex2");
+        expect(t, "abc", "\\u0061\\u0062\\u0063");
+
+        logln("Trying &gif");
+        t = Transliterator.createFromRules("gif2", "(.) > &Gif(&Hex2($1));", Transliterator.FORWARD);
+        logln("Registering");
+        TestUserFunctionFactory.add("Any-gif2", t);
+        t = Transliterator.getInstance("Any-gif2");
+        expect(t, "ab", "<img src=\"http://www.unicode.org/gifs/24/00/U0061.gif\">" +
+               "<img src=\"http://www.unicode.org/gifs/24/00/U0062.gif\">");
+
+        // Test that filters are allowed after &
+        t = Transliterator.createFromRules("test",
+                "(.) > &Hex($1) ' ' &Any-RemoveCurly(&Name($1)) ' ';", Transliterator.FORWARD);
+        expect(t, "abc", "\\u0061 LATIN SMALL LETTER A \\u0062 LATIN SMALL LETTER B \\u0063 LATIN SMALL LETTER C ");
+
+        // Unregister our test stuff
+        TestUserFunctionFactory.unregister();
+    }
+
+    static class TestUserFunctionFactory implements Transliterator.Factory {
+        static TestUserFunctionFactory singleton = new TestUserFunctionFactory();
+        static HashMap m = new HashMap();
+
+        static void add(String ID, Transliterator t) {
+            m.put(new CaseInsensitiveString(ID), t);
+            Transliterator.registerFactory(ID, singleton);
+        }
+
+        public Transliterator getInstance(String ID) {
+            return (Transliterator) m.get(new CaseInsensitiveString(ID));
+        }
+
+        static void unregister() {
+            Iterator ids = m.keySet().iterator();
+            while (ids.hasNext()) {
+                CaseInsensitiveString id = (CaseInsensitiveString) ids.next();
+                Transliterator.unregister(id.getString());
+                ids.remove(); // removes pair from m
+            }
+        }
+    }
+
+    /**
+     * Test the Any-X transliterators.
+     */
+    public void TestAnyX() {
+        Transliterator anyLatin =
+            Transliterator.getInstance("Any-Latin", Transliterator.FORWARD);
+
+        expect(anyLatin,
+               "greek:\u03B1\u03B2\u03BA\u0391\u0392\u039A hiragana:\u3042\u3076\u304F cyrillic:\u0430\u0431\u0446",
+               "greek:abkABK hiragana:abuku cyrillic:abc");
+    }
+
+    /**
+     * Test the source and target set API.  These are only implemented
+     * for RBT and CompoundTransliterator at this time.
+     */
+    public void TestSourceTargetSet() {
+        // Rules
+        String r =
+            "a > b; " +
+            "r [x{lu}] > q;";
+
+        // Expected source
+        UnicodeSet expSrc = new UnicodeSet("[arx{lu}]");
+
+        // Expected target
+        UnicodeSet expTrg = new UnicodeSet("[bq]");
+
+        Transliterator t = Transliterator.createFromRules("test", r, Transliterator.FORWARD);
+        UnicodeSet src = t.getSourceSet();
+        UnicodeSet trg = t.getTargetSet();
+
+        if (src.equals(expSrc) && trg.equals(expTrg)) {
+            logln("Ok: " + r + " => source = " + src.toPattern(true) +
+                  ", target = " + trg.toPattern(true));
+        } else {
+            errln("FAIL: " + r + " => source = " + src.toPattern(true) +
+                  ", expected " + expSrc.toPattern(true) +
+                  "; target = " + trg.toPattern(true) +
+                  ", expected " + expTrg.toPattern(true));
+        }
+    }
+
+    /**
+     * Test handling of rule whitespace, for both RBT and UnicodeSet.
+     */
+    public void TestRuleWhitespace() {
+        // Rules
+        String r = "a > \u200E b;";
+
+        Transliterator t = Transliterator.createFromRules("test", r, Transliterator.FORWARD);
+
+        expect(t, "a", "b");
+
+        // UnicodeSet
+        UnicodeSet set = new UnicodeSet("[a \u200E]");
+
+        if (set.contains(0x200E)) {
+            errln("FAIL: U+200E not being ignored by UnicodeSet");
+        }
+    }
+
+    public void TestAlternateSyntax() {
+        // U+2206 == &
+        // U+2190 == <
+        // U+2192 == >
+        // U+2194 == <>
+        expect("a \u2192 x; b \u2190 y; c \u2194 z",
+               "abc",
+               "xbz");
+        expect("([:^ASCII:]) \u2192 \u2206Name($1);",
+               "<=\u2190; >=\u2192; <>=\u2194; &=\u2206",
+               "<=\\N{LEFTWARDS ARROW}; >=\\N{RIGHTWARDS ARROW}; <>=\\N{LEFT RIGHT ARROW}; &=\\N{INCREMENT}");
+    }
+
+    public void TestPositionAPI() {
+        Transliterator.Position a = new Transliterator.Position(3,5,7,11);
+        Transliterator.Position b = new Transliterator.Position(a);
+        Transliterator.Position c = new Transliterator.Position();
+        c.set(a);
+        // Call the toString() API:
+        if (a.equals(b) && a.equals(c)) {
+            logln("Ok: " + a + " == " + b + " == " + c);
+        } else {
+            errln("FAIL: " + a + " != " + b + " != " + c);
+        }
+    }
+    
+    //======================================================================
+    // New tests for the ::BEGIN/::END syntax
+    //======================================================================
+
+    private static final String[] BEGIN_END_RULES = new String[] {
+        // [0]
+        "abc > xy;"
+        + "aba > z;",
+
+        // [1]
+/*
+        "::BEGIN;"
+        + "abc > xy;"
+        + "::END;"
+        + "::BEGIN;"
+        + "aba > z;"
+        + "::END;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [2]
+/*
+        "abc > xy;"
+        + "::BEGIN;"
+        + "aba > z;"
+        + "::END;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [3]
+/*
+        "::BEGIN;"
+        + "abc > xy;"
+        + "::END;"
+        + "aba > z;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [4]
+        "abc > xy;"
+        + "::Null;"
+        + "aba > z;",
+
+        // [5]
+        "::Upper;"
+        + "ABC > xy;"
+        + "AB > x;"
+        + "C > z;"
+        + "::Upper;"
+        + "XYZ > p;"
+        + "XY > q;"
+        + "Z > r;"
+        + "::Upper;",
+
+        // [6]
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';",
+
+        // [7]
+        "::Null;"
+        + "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';",
+
+        // [8]
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';"
+        + "::Null;",
+
+        // [9]
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "::Null;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';",
+
+        // [10]
+/*
+        "::BEGIN;"
+        + "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "::END;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [11]
+/*
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "::BEGIN;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';"
+        + "::END;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [12]
+/*
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ab = [ab];"
+        + "::BEGIN;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';"
+        + "::END;"
+        + "::BEGIN;"
+        + "$ab { ' ' } $ab > '-';"
+        + "c { ' ' > ;"
+        + "::END;"
+        + "::BEGIN;"
+        + "'a-a' > a\\%|a;"
+        + "::END;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [13]
+        "$ws = [[:Separator:][\\u0009-\\u000C]$];"
+        + "$delim = [\\-$ws];"
+        + "$ab = [ab];"
+        + "::Null;"
+        + "$ws $delim* > ' ';"
+        + "'-' $delim* > '-';"
+        + "::Null;"
+        + "$ab { ' ' } $ab > '-';"
+        + "c { ' ' > ;"
+        + "::Null;"
+        + "'a-a' > a\\%|a;",
+
+        // [14]
+/*
+        "::[abc];"
+        + "::BEGIN;"
+        + "abc > xy;"
+        + "::END;"
+        + "::BEGIN;"
+        + "aba > yz;"
+        + "::END;"
+        + "::Upper;",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [15]
+        "::[abc];"
+        + "abc > xy;"
+        + "::Null;"
+        + "aba > yz;"
+        + "::Upper;",
+
+        // [16]
+/*
+        "::[abc];"
+        + "::BEGIN;"
+        + "abc <> xy;"
+        + "::END;"
+        + "::BEGIN;"
+        + "aba <> yz;"
+        + "::END;"
+        + "::Upper(Lower);"
+        + "::([XYZ]);",
+*/
+        "", // test case commented out below, this is here to keep from messing up the indexes
+
+        // [17]
+        "::[abc];"
+        + "abc <> xy;"
+        + "::Null;"
+        + "aba <> yz;"
+        + "::Upper(Lower);"
+        + "::([XYZ]);"
+    };
+
+/*
+(This entire test is commented out below and will need some heavy revision when we re-add
+the ::BEGIN/::END stuff)
+    private static final String[] BOGUS_BEGIN_END_RULES = new String[] {
+        // [7]
+        "::BEGIN;"
+        + "abc > xy;"
+        + "::BEGIN;"
+        + "aba > z;"
+        + "::END;"
+        + "::END;",
+
+        // [8]
+        "abc > xy;"
+        + " aba > z;"
+        + "::END;",
+
+        // [9]
+        "::BEGIN;"
+        + "::Upper;"
+        + "::END;"
+    };
+*/
+
+    private static final String[] BEGIN_END_TEST_CASES = new String[] {
+        BEGIN_END_RULES[0], "abc ababc aba", "xy zbc z",
+//        BEGIN_END_RULES[1], "abc ababc aba", "xy abxy z",
+//        BEGIN_END_RULES[2], "abc ababc aba", "xy abxy z",
+//        BEGIN_END_RULES[3], "abc ababc aba", "xy abxy z",
+        BEGIN_END_RULES[4], "abc ababc aba", "xy abxy z",
+        BEGIN_END_RULES[5], "abccabaacababcbc", "PXAARXQBR",
+
+        BEGIN_END_RULES[6], "e   e - e---e-  e", "e e e-e-e",
+        BEGIN_END_RULES[7], "e   e - e---e-  e", "e e e-e-e",
+        BEGIN_END_RULES[8], "e   e - e---e-  e", "e e e-e-e",
+        BEGIN_END_RULES[9], "e   e - e---e-  e", "e e e-e-e",
+//        BEGIN_END_RULES[10], "e   e - e---e-  e", "e e e-e-e",
+//        BEGIN_END_RULES[11], "e   e - e---e-  e", "e e e-e-e",
+//        BEGIN_END_RULES[12], "e   e - e---e-  e", "e e e-e-e",
+//        BEGIN_END_RULES[12], "a    a    a    a", "a%a%a%a",
+//        BEGIN_END_RULES[12], "a a-b c b a", "a%a-b cb-a",
+        BEGIN_END_RULES[13], "e   e - e---e-  e", "e e e-e-e",
+        BEGIN_END_RULES[13], "a    a    a    a", "a%a%a%a",
+        BEGIN_END_RULES[13], "a a-b c b a", "a%a-b cb-a",
+
+//        BEGIN_END_RULES[14], "abc xy ababc xyz aba", "XY xy ABXY xyz YZ",
+        BEGIN_END_RULES[15], "abc xy ababc xyz aba", "XY xy ABXY xyz YZ",
+//        BEGIN_END_RULES[16], "abc xy ababc xyz aba", "XY xy ABXY xyz YZ",
+        BEGIN_END_RULES[17], "abc xy ababc xyz aba", "XY xy ABXY xyz YZ"
+    };
+
+    public void TestBeginEnd() {
+        // run through the list of test cases above
+        for (int i = 0; i < BEGIN_END_TEST_CASES.length; i += 3) {
+            expect(BEGIN_END_TEST_CASES[i], BEGIN_END_TEST_CASES[i + 1], BEGIN_END_TEST_CASES[i + 2]);
+        }
+
+        // instantiate the one reversible rule set in the reverse direction and make sure it does the right thing
+        Transliterator reversed  = Transliterator.createFromRules("Reversed", BEGIN_END_RULES[17],
+                Transliterator.REVERSE);
+        expect(reversed, "xy XY XYZ yz YZ", "xy abc xaba yz aba");
+
+        // finally, run through the list of syntactically-ill-formed rule sets above and make sure
+        // that all of them cause errors
+/*
+(commented out until we have the real ::BEGIN/::END stuff in place
+        for (int i = 0; i < BOGUS_BEGIN_END_RULES.length; i++) {
+            try {
+                Transliterator t = Transliterator.createFromRules("foo", BOGUS_BEGIN_END_RULES[i],
+                        Transliterator.FORWARD);
+                errln("Should have gotten syntax error from " + BOGUS_BEGIN_END_RULES[i]);
+            }
+            catch (IllegalArgumentException e) {
+                // this is supposed to happen; do nothing here
+            }
+        }
+*/
+    }
+
+    public void TestBeginEndToRules() {
+        // run through the same list of test cases we used above, but this time, instead of just
+        // instantiating a Transliterator from the rules and running the test against it, we instantiate
+        // a Transliterator from the rules, do toRules() on it, instantiate a Transliterator from
+        // the resulting set of rules, and make sure that the generated rule set is semantically equivalent
+        // to (i.e., does the same thing as) the original rule set
+        for (int i = 0; i < BEGIN_END_TEST_CASES.length; i += 3) {
+            Transliterator t = Transliterator.createFromRules("--", BEGIN_END_TEST_CASES[i],
+                    Transliterator.FORWARD);
+            String rules = t.toRules(false);
+            Transliterator t2 = Transliterator.createFromRules("Test case #" + (i / 3), rules, Transliterator.FORWARD);
+            expect(t2, BEGIN_END_TEST_CASES[i + 1], BEGIN_END_TEST_CASES[i + 2]);
+        }
+
+        // do the same thing for the reversible test case
+        Transliterator reversed = Transliterator.createFromRules("Reversed", BEGIN_END_RULES[17],
+                Transliterator.REVERSE);
+        String rules = reversed.toRules(false);
+        Transliterator reversed2 = Transliterator.createFromRules("Reversed", rules, Transliterator.FORWARD);
+        expect(reversed2, "xy XY XYZ yz YZ", "xy abc xaba yz aba");
+    }
+
+    public void TestRegisterAlias() {
+        String longID = "Lower;[aeiou]Upper";
+        String shortID = "Any-CapVowels";
+        String reallyShortID = "CapVowels";
+
+        Transliterator.registerAlias(shortID, longID);
+
+        Transliterator t1 = Transliterator.getInstance(longID);
+        Transliterator t2 = Transliterator.getInstance(reallyShortID);
+
+        if (!t1.getID().equals(longID))
+            errln("Transliterator instantiated with long ID doesn't have long ID");
+        if (!t2.getID().equals(reallyShortID))
+            errln("Transliterator instantiated with short ID doesn't have short ID");
+
+        if (!t1.toRules(true).equals(t2.toRules(true)))
+            errln("Alias transliterators aren't the same");
+
+        Transliterator.unregister(shortID);
+
+        try {
+            t1 = Transliterator.getInstance(shortID);
+            errln("Instantiation with short ID succeeded after short ID was unregistered");
+        }
+        catch (IllegalArgumentException e) {
+        }
+
+        // try the same thing again, but this time with something other than
+        // an instance of CompoundTransliterator
+        String realID = "Latin-Greek";
+        String fakeID = "Latin-dlgkjdflkjdl";
+        Transliterator.registerAlias(fakeID, realID);
+
+        t1 = Transliterator.getInstance(realID);
+        t2 = Transliterator.getInstance(fakeID);
+
+        if (!t1.toRules(true).equals(t2.toRules(true)))
+            errln("Alias transliterators aren't the same");
+
+        Transliterator.unregister(fakeID);
+    }
+
+    /**
+     * Test the Halfwidth-Fullwidth transliterator (ticket 6281).
+     */
+    public void TestHalfwidthFullwidth() {
+        Transliterator hf = Transliterator.getInstance("Halfwidth-Fullwidth");
+        Transliterator fh = Transliterator.getInstance("Fullwidth-Halfwidth");
+
+        // Array of 3n items
+        // Each item is
+        //   "hf"|"fh"|"both",
+        //   <Halfwidth>,
+        //   <Fullwidth>
+        String[] DATA = {
+            "both",
+            "\uFFE9\uFFEA\uFFEB\uFFEC\u0061\uFF71\u00AF\u0020",
+            "\u2190\u2191\u2192\u2193\uFF41\u30A2\uFFE3\u3000",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            switch (DATA[i].charAt(0)) {
+            case 'h': // Halfwidth-Fullwidth only
+                expect(hf, DATA[i+1], DATA[i+2]);
+                break;
+            case 'f': // Fullwidth-Halfwidth only
+                expect(fh, DATA[i+2], DATA[i+1]);
+                break;
+            case 'b': // both directions
+                expect(hf, DATA[i+1], DATA[i+2]);
+                expect(fh, DATA[i+2], DATA[i+1]);
+                break;
+            }
+        }
+
+    }
+    
+    /**
+     *  Test Thai.  The text is the first paragraph of "What is Unicode" from the Unicode.org web site.
+     *              TODO: confirm that the expected results are correct.
+     *              For now, test just confirms that C++ and Java give identical results.
+     */
+    public void TestThai() {
+        Transliterator tr = Transliterator.getInstance("Any-Latin", Transliterator.FORWARD);
+        String thaiText = 
+            "\u0e42\u0e14\u0e22\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27, \u0e04\u0e2d" +
+            "\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e08\u0e30\u0e40\u0e01\u0e35\u0e48\u0e22" +
+            "\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e02\u0e2d" +
+            "\u0e07\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02. \u0e04\u0e2d\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d" +
+            "\u0e23\u0e4c\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29" +
+            "\u0e23\u0e41\u0e25\u0e30\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e2d\u0e37\u0e48\u0e19\u0e46 \u0e42" +
+            "\u0e14\u0e22\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25" +
+            "\u0e02\u0e43\u0e2b\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e25\u0e30\u0e15" +
+            "\u0e31\u0e27. \u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e4a Unicode \u0e08" +
+            "\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19, \u0e44\u0e14\u0e49" +
+            "\u0e21\u0e35\u0e23\u0e30\u0e1a\u0e1a encoding \u0e2d\u0e22\u0e39\u0e48\u0e2b\u0e25\u0e32\u0e22\u0e23" +
+            "\u0e49\u0e2d\u0e22\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23" +
+            "\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e40\u0e2b\u0e25\u0e48" +
+            "\u0e32\u0e19\u0e35\u0e49. \u0e44\u0e21\u0e48\u0e21\u0e35 encoding \u0e43\u0e14\u0e17\u0e35\u0e48" +
+            "\u0e21\u0e35\u0e08\u0e33\u0e19\u0e27\u0e19\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30" +
+            "\u0e21\u0e32\u0e01\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d: \u0e22\u0e01\u0e15\u0e31\u0e27\u0e2d" +
+            "\u0e22\u0e48\u0e32\u0e07\u0e40\u0e0a\u0e48\u0e19, \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e43\u0e19\u0e01" +
+            "\u0e25\u0e38\u0e48\u0e21\u0e2a\u0e2b\u0e20\u0e32\u0e1e\u0e22\u0e38\u0e42\u0e23\u0e1b\u0e40\u0e1e" +
+            "\u0e35\u0e22\u0e07\u0e41\u0e2b\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e01\u0e47\u0e15\u0e49" +
+            "\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2b\u0e25\u0e32\u0e22 encoding \u0e43\u0e19\u0e01\u0e32\u0e23\u0e04" +
+            "\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e17\u0e38\u0e01\u0e20\u0e32\u0e29\u0e32\u0e43\u0e19" +
+            "\u0e01\u0e25\u0e38\u0e48\u0e21. \u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e21\u0e49\u0e41\u0e15\u0e48\u0e43" +
+            "\u0e19\u0e20\u0e32\u0e29\u0e32\u0e40\u0e14\u0e35\u0e48\u0e22\u0e27 \u0e40\u0e0a\u0e48\u0e19 \u0e20" +
+            "\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29 \u0e01\u0e47\u0e44\u0e21\u0e48\u0e21\u0e35" +
+            " encoding \u0e43\u0e14\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d\u0e2a\u0e33\u0e2b" +
+            "\u0e23\u0e31\u0e1a\u0e17\u0e38\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23, \u0e40\u0e04" +
+            "\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e27\u0e23\u0e23\u0e04\u0e15\u0e2d\u0e19" +
+            " \u0e41\u0e25\u0e30\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e17\u0e32\u0e07\u0e40" +
+            "\u0e17\u0e04\u0e19\u0e34\u0e04\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e19\u0e2d\u0e22" +
+            "\u0e39\u0e48\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b.";
+
+        String latinText = 
+            "doy ph\u1ee5\u0304\u0302n \u1e6d\u0304h\u0101n l\u00e6\u0302w, khxmphiwtexr\u0312 ca ke\u012b\u0300" +
+            "ywk\u0304\u0125xng k\u1ea1b re\u1ee5\u0304\u0300xng k\u0304hxng t\u1ea1wlek\u0304h. khxmphiwtexr" +
+            "\u0312 c\u1ea1d k\u0115b t\u1ea1w x\u1ea1ks\u0304\u02b9r l\u00e6a x\u1ea1kk\u0304h ra x\u1ee5\u0304" +
+            "\u0300n\u00ab doy k\u0101r k\u1ea3h\u0304nd h\u0304m\u0101ylek\u0304h h\u0304\u0131\u0302 s\u0304" +
+            "\u1ea3h\u0304r\u1ea1b t\u00e6\u0300la t\u1ea1w. k\u0300xn h\u0304n\u0302\u0101 th\u012b\u0300\u0301" +
+            " Unicode ca t\u0304h\u016bk s\u0304r\u0302\u0101ng k\u0304h\u1ee5\u0302n, d\u1ecb\u0302 m\u012b " +
+            "rabb encoding xy\u016b\u0300 h\u0304l\u0101y r\u0302xy rabb s\u0304\u1ea3h\u0304r\u1ea1b k\u0101" +
+            "r k\u1ea3h\u0304nd h\u0304m\u0101ylek\u0304h h\u0304el\u0300\u0101 n\u012b\u0302. m\u1ecb\u0300m" +
+            "\u012b encoding d\u0131 th\u012b\u0300 m\u012b c\u1ea3nwn t\u1ea1w x\u1ea1kk\u0304hra m\u0101k p" +
+            "he\u012byng phx: yk t\u1ea1wx\u1ef3\u0101ng ch\u00e8n, c\u0304heph\u0101a n\u0131 kl\u00f9m s\u0304" +
+            "h\u0304p\u0323h\u0101ph yurop phe\u012byng h\u0304\u00e6\u0300ng de\u012byw k\u0306 t\u0302xngk\u0101" +
+            "r h\u0304l\u0101y encoding n\u0131 k\u0101r khrxbkhlum thuk p\u0323h\u0101s\u0304\u02b9\u0101 n\u0131" +
+            " kl\u00f9m. h\u0304r\u1ee5\u0304x m\u00e6\u0302t\u00e6\u0300 n\u0131 p\u0323h\u0101s\u0304\u02b9" +
+            "\u0101 de\u012b\u0300yw ch\u00e8n p\u0323h\u0101s\u0304\u02b9\u0101 x\u1ea1ngkvs\u0304\u02b9 k\u0306" +
+            " m\u1ecb\u0300m\u012b encoding d\u0131 th\u012b\u0300 phe\u012byng phx s\u0304\u1ea3h\u0304r\u1ea1" +
+            "b thuk t\u1ea1w x\u1ea1ks\u0304\u02b9r, kher\u1ee5\u0304\u0300xngh\u0304m\u0101y wrrkh txn l\u00e6" +
+            "a s\u0304\u1ea1\u1ef5l\u1ea1ks\u0304\u02b9\u1e47\u0312 th\u0101ng thekhnikh th\u012b\u0300 ch\u0131" +
+            "\u0302 k\u1ea1n xy\u016b\u0300 th\u1ea1\u0300wp\u1ecb.";
+
+            expect(tr, thaiText, latinText);
+    }
+    
+
+    //======================================================================
+    // These tests are not mirrored (yet) in icu4c at
+    // source/test/intltest/transtst.cpp
+    //======================================================================
+
+    /**
+     * Improve code coverage.
+     */
+    public void TestCoverage() {
+        // NullTransliterator
+        Transliterator t = Transliterator.getInstance("Null", Transliterator.FORWARD);
+        expect(t, "a", "a");
+
+        // Source, target set
+        t = Transliterator.getInstance("Latin-Greek", Transliterator.FORWARD);
+        t.setFilter(new UnicodeSet("[A-Z]"));
+        logln("source = " + t.getSourceSet());
+        logln("target = " + t.getTargetSet());
+
+        t = Transliterator.createFromRules("x", "(.) > &Any-Hex($1);", Transliterator.FORWARD);
+        logln("source = " + t.getSourceSet());
+        logln("target = " + t.getTargetSet());
+    }
+    public void TestAny() {
+        UnicodeSet alphabetic = (UnicodeSet) new UnicodeSet("[:alphabetic:]").freeze();
+        StringBuffer testString = new StringBuffer();
+        for (int i = 0; i < UScript.CODE_LIMIT; ++i) {
+            UnicodeSet sample = new UnicodeSet().applyPropertyAlias("script", UScript.getShortName(i)).retainAll(alphabetic);
+            int count = 5;
+            for (UnicodeSetIterator it = new UnicodeSetIterator(sample); it.next();) {
+                testString.append(it.getString());
+                if (--count < 0) break;
+            }
+        }
+        logln("Sample set for Any-Latin: " + testString);
+        Transliterator anyLatin = Transliterator.getInstance("any-Latn");
+        String result = anyLatin.transliterate(testString.toString());
+        logln("Sample result for Any-Latin: " + result);
+    }
+
+    /*
+     * Test case for threading problem in NormalizationTransliterator
+     * reported by ticket#5160
+     */
+    public void TestT5160() {
+        final String[] testData = {
+                "a",
+                "b",
+                "\u09BE",
+                "A\u0301",
+        };
+        final String[] expected = {
+                "a",
+                "b",
+                "\u09BE",
+                "\u00C1",
+            };
+        Transliterator translit = Transliterator.getInstance("NFC");
+        NormTranslitTask[] tasks = new NormTranslitTask[testData.length];
+        for (int i = 0; i < tasks.length; i++) {
+            tasks[i] = new NormTranslitTask(translit, testData[i], expected[i]);
+        }
+        TestUtil.runUntilDone(tasks);
+
+        for (int i = 0; i < tasks.length; i++) {
+            if (tasks[i].getErrorMessage() != null) {
+                System.out.println("Fail: thread#" + i + " " + tasks[i].getErrorMessage());
+                break;
+            }
+        }
+    }
+
+    static class NormTranslitTask implements Runnable {
+        Transliterator translit;
+        String testData;
+        String expectedData;
+        String errorMsg;
+
+        NormTranslitTask(Transliterator translit, String testData, String expectedData) {
+            this.translit = translit;
+            this.testData = testData;
+            this.expectedData = expectedData;
+        }
+
+        public void run() {
+            errorMsg = null;
+            StringBuffer inBuf = new StringBuffer(testData);
+            StringBuffer expectedBuf = new StringBuffer(expectedData);
+
+            for(int i = 0; i < 1000; i++) {
+                String in = inBuf.toString();
+                String out = translit.transliterate(in);
+                String expected = expectedBuf.toString();
+                if (!out.equals(expected)) {
+                    errorMsg = "in {" + in + "} / out {" + out + "} / expected {" + expected + "}";
+                    break;
+                }
+                inBuf.append(testData);
+                expectedBuf.append(expectedData);
+            }
+        }
+
+        public String getErrorMessage() {
+            return errorMsg;
+        }
+    }
+
+    //======================================================================
+    // Support methods
+    //======================================================================
+    void expect(String rules,
+                String source,
+                String expectedResult,
+                Transliterator.Position pos) {
+        Transliterator t = Transliterator.createFromRules("<ID>", rules, Transliterator.FORWARD);
+        expect(t, source, expectedResult, pos);
+    }
+
+    void expect(String rules, String source, String expectedResult) {
+        expect(rules, source, expectedResult, null);
+    }
+
+    void expect(Transliterator t, String source, String expectedResult,
+                Transliterator reverseTransliterator) {
+        expect(t, source, expectedResult);
+        if (reverseTransliterator != null) {
+            expect(reverseTransliterator, expectedResult, source);
+        }
+    }
+
+    void expect(Transliterator t, String source, String expectedResult) {
+        expect(t, source, expectedResult, (Transliterator.Position) null);
+    }
+
+    void expect(Transliterator t, String source, String expectedResult,
+                Transliterator.Position pos) {
+        if (pos == null) {
+            String result = t.transliterate(source);
+            if (!expectAux(t.getID() + ":String", source, result, expectedResult)) return;
+        }
+
+        Transliterator.Position index = null;
+        if (pos == null) {
+            index = new Transliterator.Position(0, source.length(), 0, source.length());
+        } else {
+            index = new Transliterator.Position(pos.contextStart, pos.contextLimit,
+                                                pos.start, pos.limit);
+        }
+
+        ReplaceableString rsource = new ReplaceableString(source);
+
+        t.finishTransliteration(rsource, index);
+        // Do it all at once -- below we do it incrementally
+
+        if (index.start != index.limit) {
+            expectAux(t.getID() + ":UNFINISHED", source,
+                "start: " + index.start + ", limit: " + index.limit, false, expectedResult);
+            return;
+        }
+        String result = rsource.toString();
+        if (!expectAux(t.getID() + ":Replaceable", source, result, expectedResult)) return;
+
+
+        if (pos == null) {
+            index = new Transliterator.Position();
+        } else {
+            index = new Transliterator.Position(pos.contextStart, pos.contextLimit,
+                                                pos.start, pos.limit);
+        }
+
+        // Test incremental transliteration -- this result
+        // must be the same after we finalize (see below).
+        Vector v = new Vector();
+        v.add(source);
+        rsource.replace(0, rsource.length(), "");
+        if (pos != null) {
+            rsource.replace(0, 0, source);
+            v.add(UtilityExtensions.formatInput(rsource, index));
+            t.transliterate(rsource, index);
+            v.add(UtilityExtensions.formatInput(rsource, index));
+        } else {
+            for (int i=0; i<source.length(); ++i) {
+                //v.add(i == 0 ? "" : " + " + source.charAt(i) + "");
+                //log.append(source.charAt(i)).append(" -> "));
+                t.transliterate(rsource, index, source.charAt(i));
+                //v.add(UtilityExtensions.formatInput(rsource, index) + source.substring(i+1));
+                v.add(UtilityExtensions.formatInput(rsource, index) +
+                      ((i<source.length()-1)?(" + '" + source.charAt(i+1) + "' ->"):" =>"));
+            }
+        }
+
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        //log.append(" => ").append(rsource.toString());
+        v.add(result);
+
+        String[] results = new String[v.size()];
+        v.copyInto(results);
+        expectAux(t.getID() + ":Incremental", results,
+                  result.equals(expectedResult),
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   String result, String expectedResult) {
+        return expectAux(tag, new String[] {source, result},
+                  result.equals(expectedResult),
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   String result, boolean pass,
+                   String expectedResult) {
+        return expectAux(tag, new String[] {source, result},
+                  pass,
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String source,
+                   boolean pass,
+                   String expectedResult) {
+        return expectAux(tag, new String[] {source},
+                  pass,
+                  expectedResult);
+    }
+
+    boolean expectAux(String tag, String[] results, boolean pass,
+                   String expectedResult) {
+        msg((pass?"(":"FAIL: (")+tag+")", pass ? LOG : ERR, true, true);
+
+        for (int i = 0; i < results.length; ++i) {
+            String label;
+            if (i == 0) {
+                label = "source:   ";
+            } else if (i == results.length - 1) {
+                label = "result:   ";
+            } else {
+                if (!isVerbose() && pass) continue;
+                label = "interm" + i + ":  ";
+            }
+            msg("    " + label + results[i], pass ? LOG : ERR, false, true);
+        }
+
+        if (!pass) {
+            msg(  "    expected: " + expectedResult, ERR, false, true);
+        }
+
+        return pass;
+    }
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java b/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
new file mode 100644
index 0000000..17a60e5
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
@@ -0,0 +1,74 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.*;
+import com.ibm.icu.dev.test.util.UnicodeMap;
+import com.ibm.icu.impl.Utility;
+import java.util.*;
+
+/**
+ * @test
+ * @summary General test of UnicodeSet
+ */
+public class UnicodeMapTest extends TestFmwk {
+  
+  static final int MODIFY_TEST_LIMIT = 32;
+  static final int MODIFY_TEST_ITERATIONS = 100000;
+  
+  public static void main(String[] args) throws Exception {
+    new UnicodeMapTest().run(args);
+  }
+  
+  public void TestModify() {
+    Random random = new Random(0);
+    UnicodeMap unicodeMap = new UnicodeMap();
+    HashMap hashMap = new HashMap();
+    String[] values = {null, "the", "quick", "brown", "fox"};
+    for (int count = 1; count <= MODIFY_TEST_ITERATIONS; ++count) {
+      String value = values[random.nextInt(values.length)];
+      int start = random.nextInt(MODIFY_TEST_LIMIT); // test limited range
+      int end = random.nextInt(MODIFY_TEST_LIMIT);
+      if (start > end) {
+        int temp = start;
+        start = end;
+        end = temp;
+      }
+      int modCount = count & 0xFF;
+      if (modCount == 0 && isVerbose()) {
+        logln("***"+count);
+        logln(unicodeMap.toString());
+      }
+      unicodeMap.putAll(start, end, value);
+      if (modCount == 1 && isVerbose()) {
+        logln(">>>\t" + Utility.hex(start) + ".." + Utility.hex(end) + "\t" + value);
+        logln(unicodeMap.toString());
+      }
+      for (int i = start; i <= end; ++i) {
+        hashMap.put(new Integer(i), value);
+      }
+      if (!hasSameValues(unicodeMap, hashMap)) {
+        errln("Failed at " + count);
+      }
+    }
+  }
+
+  private boolean hasSameValues(UnicodeMap unicodeMap, HashMap hashMap) {
+    for (int i = 0; i < MODIFY_TEST_LIMIT; ++i) {
+      Object unicodeMapValue = unicodeMap.getValue(i);
+      Object hashMapValue = hashMap.get(new Integer(i));
+      if (unicodeMapValue != hashMapValue) {
+        return false;
+      }
+    }
+    return true;
+  }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java b/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java
new file mode 100644
index 0000000..1feccbb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/UnicodeSetTest.java
@@ -0,0 +1,2072 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.util.PrettyPrinter;
+import com.ibm.icu.impl.SortedSetRelation;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UCharacterEnums.ECharacterCategory;
+import com.ibm.icu.text.SymbolTable;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeMatcher;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+/**
+ * @test
+ * @summary General test of UnicodeSet
+ */
+public class UnicodeSetTest extends TestFmwk {
+  
+  static final String NOT = "%%%%";
+  
+  public static void main(String[] args) throws Exception {
+    new UnicodeSetTest().run(args);
+  }
+
+  private static final boolean isCccValue(int ccc) {
+    switch (ccc) {
+    case 0:
+    case 1:
+    case 7:
+    case 8:
+    case 9:
+    case 200:
+    case 202:
+    case 216:
+    case 218:
+    case 220:
+    case 222:
+    case 224:
+    case 226:
+    case 228:
+    case 230:
+    case 232:
+    case 233:
+    case 234:
+    case 240:
+      return true;
+    default:
+      return false;
+    }
+  }
+
+  public void TestPropertyAccess() {
+    int count = 0; 
+    // test to see that all of the names work
+    for (int propNum = UProperty.BINARY_START; propNum < UProperty.INT_LIMIT; ++propNum) {
+      count++;
+      //Skipping tests in the non-exhaustive mode to shorten the test time ticket#6475
+      if(getInclusion()<=5 && count%5!=0){
+          continue;
+      }
+      if (propNum >= UProperty.BINARY_LIMIT && propNum < UProperty.INT_START) { // skip the gap
+        propNum = UProperty.INT_START;
+      }
+      for (int nameChoice = UProperty.NameChoice.SHORT; nameChoice <= UProperty.NameChoice.LONG; ++nameChoice) {
+        String propName;
+        try {
+          propName = UCharacter.getPropertyName(propNum, nameChoice);
+          if (propName == null) {
+            if (nameChoice == UProperty.NameChoice.SHORT) continue; // allow non-existent short names
+            throw new NullPointerException();
+          }
+        } catch (RuntimeException e1) {
+          errln("Can't get property name for: "
+              + "Property (" + propNum + ")"
+              + ", NameChoice: " + nameChoice + ", "
+              + e1.getClass().getName());
+          continue;
+        }
+        logln("Property (" + propNum + "): " + propName);
+        for (int valueNum = UCharacter.getIntPropertyMinValue(propNum); valueNum <= UCharacter.getIntPropertyMaxValue(propNum); ++valueNum) {
+          String valueName;
+          try {
+            valueName = UCharacter.getPropertyValueName(propNum, valueNum, nameChoice);
+            if (valueName == null) {
+              if (nameChoice == UProperty.NameChoice.SHORT) continue; // allow non-existent short names
+              if ((propNum == UProperty.CANONICAL_COMBINING_CLASS ||
+                   propNum == UProperty.LEAD_CANONICAL_COMBINING_CLASS ||
+                   propNum == UProperty.TRAIL_CANONICAL_COMBINING_CLASS) &&
+                  !isCccValue(valueNum)) {
+                // Only a few of the canonical combining classes have names.
+                // Otherwise they are just integer values.
+                continue;
+              } else {
+                throw new NullPointerException();
+              }
+            }
+          } catch (RuntimeException e1) {
+            errln("Can't get property value name for: "
+                + "Property (" + propNum + "): " + propName + ", " 
+                + "Value (" + valueNum + ") "
+                + ", NameChoice: " + nameChoice + ", "
+                + e1.getClass().getName());
+            continue;
+          }
+          logln("Value (" + valueNum + "): " + valueName);
+          UnicodeSet testSet;
+          try {
+            testSet = new UnicodeSet("[:" + propName + "=" + valueName + ":]");
+          } catch (RuntimeException e) {
+            errln("Can't create UnicodeSet for: "
+                + "Property (" + propNum + "): " + propName + ", " 
+                + "Value (" + valueNum + "): " + valueName + ", "
+                + e.getClass().getName());
+            continue;
+          }
+          UnicodeSet collectedErrors = new UnicodeSet();
+          for (UnicodeSetIterator it = new UnicodeSetIterator(testSet); it.next();) {
+            int value = UCharacter.getIntPropertyValue(it.codepoint, propNum);
+            if (value != valueNum) {
+              collectedErrors.add(it.codepoint);
+            }
+          }
+          if (collectedErrors.size() != 0) {
+            errln("Property Value Differs: " 
+                + "Property (" + propNum + "): " + propName + ", " 
+                + "Value (" + valueNum + "): " + valueName + ", "
+                + "Differing values: " + collectedErrors.toPattern(true));
+          }
+        }
+      } 
+    }
+  }
+  
+  
+  /**
+   * Test toPattern().
+   */
+  public void TestToPattern() throws Exception {
+    // Test that toPattern() round trips with syntax characters
+    // and whitespace.
+    for (int i = 0; i < OTHER_TOPATTERN_TESTS.length; ++i) {
+      checkPat(OTHER_TOPATTERN_TESTS[i], new UnicodeSet(OTHER_TOPATTERN_TESTS[i]));
+    }
+    for (int i = 0; i <= 0x10FFFF; ++i) {
+      if ((i <= 0xFF && !UCharacter.isLetter(i)) || UCharacter.isWhitespace(i)) {
+        // check various combinations to make sure they all work.
+        if (i != 0 && !toPatternAux(i, i)) continue;
+        if (!toPatternAux(0, i)) continue;
+        if (!toPatternAux(i, 0xFFFF)) continue;
+      }
+    } 
+    
+    // Test pattern behavior of multicharacter strings.
+    UnicodeSet s = new UnicodeSet("[a-z {aa} {ab}]");
+    expectToPattern(s, "[a-z{aa}{ab}]",
+        new String[] {"aa", "ab", NOT, "ac"});
+    s.add("ac");
+    expectToPattern(s, "[a-z{aa}{ab}{ac}]",
+        new String[] {"aa", "ab", "ac", NOT, "xy"});
+    
+    s.applyPattern("[a-z {\\{l} {r\\}}]");
+    expectToPattern(s, "[a-z{r\\}}{\\{l}]",
+        new String[] {"{l", "r}", NOT, "xy"});
+    s.add("[]");
+    expectToPattern(s, "[a-z{\\[\\]}{r\\}}{\\{l}]",
+        new String[] {"{l", "r}", "[]", NOT, "xy"});
+    
+    s.applyPattern("[a-z {\u4E01\u4E02}{\\n\\r}]");
+    expectToPattern(s, "[a-z{\\u000A\\u000D}{\\u4E01\\u4E02}]",
+        new String[] {"\u4E01\u4E02", "\n\r"});
+    
+    s.clear();
+    s.add("abc");
+    s.add("abc");
+    expectToPattern(s, "[{abc}]",
+        new String[] {"abc", NOT, "ab"});
+    
+    // JB#3400: For 2 character ranges prefer [ab] to [a-b]
+    s.clear(); 
+    s.add('a', 'b');
+    expectToPattern(s, "[ab]", null);
+    
+    // Cover applyPattern, applyPropertyAlias
+    s.clear();
+    s.applyPattern("[ab ]", true);
+    expectToPattern(s, "[ab]", new String[] {"a", NOT, "ab", " "});
+    s.clear();
+    s.applyPattern("[ab ]", false);
+    expectToPattern(s, "[\\ ab]", new String[] {"a", "\u0020", NOT, "ab"});
+    
+    s.clear();
+    s.applyPropertyAlias("nv", "0.5");
+    expectToPattern(s, "[\\u00BD\\u0D74\\u0F2A\\u2CFD\\U00010141\\U00010175\\U00010176]", null);
+    // Unicode 5.1 adds Malayalam 1/2 (\u0D74)
+    
+    s.clear();
+    s.applyPropertyAlias("gc", "Lu");
+    // TODO expectToPattern(s, what?)
+  }
+  
+  static String[] OTHER_TOPATTERN_TESTS = {
+    "[[:latin:]&[:greek:]]", 
+    "[[:latin:]-[:greek:]]",
+    "[:nonspacing mark:]"
+  };
+  
+  
+  public boolean toPatternAux(int start, int end) {
+    // use Integer.toString because Utility.hex doesn't handle ints
+    String source = "0x" + Integer.toString(start,16).toUpperCase();
+    if (start != end) source += "..0x" + Integer.toString(end,16).toUpperCase();
+    UnicodeSet testSet = new UnicodeSet();
+    testSet.add(start, end);
+    return checkPat(source, testSet);
+  }
+  
+  boolean checkPat (String source, UnicodeSet testSet) {
+    String pat = "";
+    try {
+      // What we want to make sure of is that a pattern generated
+      // by toPattern(), with or without escaped unprintables, can
+      // be passed back into the UnicodeSet constructor.
+      String pat0 = testSet.toPattern(true);
+      if (!checkPat(source + " (escaped)", testSet, pat0)) return false;
+      
+      //String pat1 = unescapeLeniently(pat0);
+      //if (!checkPat(source + " (in code)", testSet, pat1)) return false;
+      
+      String pat2 = testSet.toPattern(false);
+      if (!checkPat(source, testSet, pat2)) return false;
+      
+      //String pat3 = unescapeLeniently(pat2);
+      //if (!checkPat(source + " (in code)", testSet, pat3)) return false;
+      
+      //logln(source + " => " + pat0 + ", " + pat1 + ", " + pat2 + ", " + pat3);
+      logln(source + " => " + pat0 + ", " + pat2);
+    } catch (Exception e) {
+      errln("EXCEPTION in toPattern: " + source + " => " + pat);
+      return false;
+    }
+    return true;
+  }
+  
+  boolean checkPat (String source, UnicodeSet testSet, String pat) {
+    UnicodeSet testSet2 = new UnicodeSet(pat);
+    if (!testSet2.equals(testSet)) {
+      errln("Fail toPattern: " + source + "; " + pat + " => " +
+          testSet2.toPattern(false) + ", expected " +
+          testSet.toPattern(false));
+      return false;
+    }
+    return true;
+  }
+  
+  // NOTE: copied the following from Utility. There ought to be a version in there with a flag
+  // that does the Java stuff
+  
+  public static int unescapeAt(String s, int[] offset16) {
+    int c;
+    int result = 0;
+    int n = 0;
+    int minDig = 0;
+    int maxDig = 0;
+    int bitsPerDigit = 4;
+    int dig;
+    int i;
+    
+    /* Check that offset is in range */
+    int offset = offset16[0];
+    int length = s.length();
+    if (offset < 0 || offset >= length) {
+      return -1;
+    }
+    
+    /* Fetch first UChar after '\\' */
+    c = UTF16.charAt(s, offset);
+    offset += UTF16.getCharCount(c);
+    
+    /* Convert hexadecimal and octal escapes */
+    switch (c) {
+      case 'u':
+        minDig = maxDig = 4;
+        break;
+        /*
+         case 'U':
+         minDig = maxDig = 8;
+         break;
+         case 'x':
+         minDig = 1;
+         maxDig = 2;
+         break;
+         */
+      default:
+        dig = UCharacter.digit(c, 8);
+      if (dig >= 0) {
+        minDig = 1;
+        maxDig = 3;
+        n = 1; /* Already have first octal digit */
+        bitsPerDigit = 3;
+        result = dig;
+      }
+      break;
+    }
+    if (minDig != 0) {
+      while (offset < length && n < maxDig) {
+        // TEMPORARY
+        // TODO: Restore the char32-based code when UCharacter.digit
+        // is working (Bug 66).
+        
+        //c = UTF16.charAt(s, offset);
+        //dig = UCharacter.digit(c, (bitsPerDigit == 3) ? 8 : 16);
+        c = s.charAt(offset);
+        dig = Character.digit((char)c, (bitsPerDigit == 3) ? 8 : 16);
+        if (dig < 0) {
+          break;
+        }
+        result = (result << bitsPerDigit) | dig;
+        //offset += UTF16.getCharCount(c);
+        ++offset;
+        ++n;
+      }
+      if (n < minDig) {
+        return -1;
+      }
+      offset16[0] = offset;
+      return result;
+    }
+    
+    /* Convert C-style escapes in table */
+    for (i=0; i<UNESCAPE_MAP.length; i+=2) {
+      if (c == UNESCAPE_MAP[i]) {
+        offset16[0] = offset;
+        return UNESCAPE_MAP[i+1];
+      } else if (c < UNESCAPE_MAP[i]) {
+        break;
+      }
+    }
+    
+    /* If no special forms are recognized, then consider
+     * the backslash to generically escape the next character. */
+    offset16[0] = offset;
+    return c;
+  }
+  
+  /* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
+  static private final char[] UNESCAPE_MAP = {
+    /*"   0x22, 0x22 */
+    /*'   0x27, 0x27 */
+    /*?   0x3F, 0x3F */
+    /*\   0x5C, 0x5C */
+    /*a*/ 0x61, 0x07,
+    /*b*/ 0x62, 0x08,
+    /*f*/ 0x66, 0x0c,
+    /*n*/ 0x6E, 0x0a,
+    /*r*/ 0x72, 0x0d,
+    /*t*/ 0x74, 0x09,
+    /*v*/ 0x76, 0x0b
+  };
+  
+  /**
+   * Convert all escapes in a given string using unescapeAt().
+   * Leave invalid escape sequences unchanged.
+   */
+  public static String unescapeLeniently(String s) {
+    StringBuffer buf = new StringBuffer();
+    int[] pos = new int[1];
+    for (int i=0; i<s.length(); ) {
+      char c = s.charAt(i++);
+      if (c == '\\') {
+        pos[0] = i;
+        int e = unescapeAt(s, pos);
+        if (e < 0) {
+          buf.append(c);
+        } else {
+          UTF16.append(buf, e);
+          i = pos[0];
+        }
+      } else {
+        buf.append(c);
+      }
+    }
+    return buf.toString();
+  }
+  
+  public void TestPatterns() {
+    UnicodeSet set = new UnicodeSet();
+    expectPattern(set, "[[a-m]&[d-z]&[k-y]]",  "km");
+    expectPattern(set, "[[a-z]-[m-y]-[d-r]]",  "aczz");
+    expectPattern(set, "[a\\-z]",  "--aazz");
+    expectPattern(set, "[-az]",  "--aazz");
+    expectPattern(set, "[az-]",  "--aazz");
+    expectPattern(set, "[[[a-z]-[aeiou]i]]", "bdfnptvz");
+    
+    // Throw in a test of complement
+    set.complement();
+    String exp = '\u0000' + "aeeoouu" + (char)('z'+1) + '\uFFFF';
+    expectPairs(set, exp);
+  }
+  
+  public void TestCategories() {
+    int failures = 0;
+    UnicodeSet set = new UnicodeSet("[:Lu:]");
+    expectContainment(set, "ABC", "abc");
+    
+    // Make sure generation of L doesn't pollute cached Lu set
+    // First generate L, then Lu
+    // not used int TOP = 0x200; // Don't need to go over the whole range:
+    set = new UnicodeSet("[:L:]");
+    for (int i=0; i<0x200; ++i) {
+      boolean l = UCharacter.isLetter(i);
+      if (l != set.contains((char)i)) {
+        errln("FAIL: L contains " + (char)i + " = " + 
+            set.contains((char)i));
+        if (++failures == 10) break;
+      }
+    }
+    
+    set = new UnicodeSet("[:Lu:]");
+    for (int i=0; i<0x200; ++i) {
+      boolean lu = (UCharacter.getType(i) == ECharacterCategory.UPPERCASE_LETTER);
+      if (lu != set.contains((char)i)) {
+        errln("FAIL: Lu contains " + (char)i + " = " + 
+            set.contains((char)i));
+        if (++failures == 20) break;
+      }
+    }
+  }
+  
+  public void TestAddRemove() {
+    UnicodeSet set = new UnicodeSet();
+    set.add('a', 'z');
+    expectPairs(set, "az");
+    set.remove('m', 'p');
+    expectPairs(set, "alqz");
+    set.remove('e', 'g');
+    expectPairs(set, "adhlqz");
+    set.remove('d', 'i');
+    expectPairs(set, "acjlqz");
+    set.remove('c', 'r');
+    expectPairs(set, "absz");
+    set.add('f', 'q');
+    expectPairs(set, "abfqsz");
+    set.remove('a', 'g');
+    expectPairs(set, "hqsz");
+    set.remove('a', 'z');
+    expectPairs(set, "");
+    
+    // Try removing an entire set from another set
+    expectPattern(set, "[c-x]", "cx");
+    UnicodeSet set2 = new UnicodeSet();
+    expectPattern(set2, "[f-ky-za-bc[vw]]", "acfkvwyz");
+    set.removeAll(set2);
+    expectPairs(set, "deluxx");
+    
+    // Try adding an entire set to another set
+    expectPattern(set, "[jackiemclean]", "aacceein");
+    expectPattern(set2, "[hitoshinamekatajamesanderson]", "aadehkmort");
+    set.addAll(set2);
+    expectPairs(set, "aacehort");
+    
+    // Test commutativity
+    expectPattern(set, "[hitoshinamekatajamesanderson]", "aadehkmort");
+    expectPattern(set2, "[jackiemclean]", "aacceein");
+    set.addAll(set2);
+    expectPairs(set, "aacehort");
+  }
+  
+  /**
+   * Make sure minimal representation is maintained.
+   */
+  public void TestMinimalRep() {
+    // This is pretty thoroughly tested by checkCanonicalRep()
+    // run against the exhaustive operation results.  Use the code
+    // here for debugging specific spot problems.
+    
+    // 1 overlap against 2
+    UnicodeSet set = new UnicodeSet("[h-km-q]");
+    UnicodeSet set2 = new UnicodeSet("[i-o]");
+    set.addAll(set2);
+    expectPairs(set, "hq");
+    // right
+    set.applyPattern("[a-m]");
+    set2.applyPattern("[e-o]");
+    set.addAll(set2);
+    expectPairs(set, "ao");
+    // left
+    set.applyPattern("[e-o]");
+    set2.applyPattern("[a-m]");
+    set.addAll(set2);
+    expectPairs(set, "ao");
+    // 1 overlap against 3
+    set.applyPattern("[a-eg-mo-w]");
+    set2.applyPattern("[d-q]");
+    set.addAll(set2);
+    expectPairs(set, "aw");
+  }
+  
+  public void TestAPI() {
+    // default ct
+    UnicodeSet set = new UnicodeSet();
+    if (!set.isEmpty() || set.getRangeCount() != 0) {
+      errln("FAIL, set should be empty but isn't: " +
+          set);
+    }
+    
+    // clear(), isEmpty()
+    set.add('a');
+    if (set.isEmpty()) {
+      errln("FAIL, set shouldn't be empty but is: " +
+          set);
+    }
+    set.clear();
+    if (!set.isEmpty()) {
+      errln("FAIL, set should be empty but isn't: " +
+          set);
+    }
+    
+    // size()
+    set.clear();
+    if (set.size() != 0) {
+      errln("FAIL, size should be 0, but is " + set.size() +
+          ": " + set);
+    }
+    set.add('a');
+    if (set.size() != 1) {
+      errln("FAIL, size should be 1, but is " + set.size() +
+          ": " + set);
+    }
+    set.add('1', '9');
+    if (set.size() != 10) {
+      errln("FAIL, size should be 10, but is " + set.size() +
+          ": " + set);
+    }
+    set.clear();
+    set.complement();
+    if (set.size() != 0x110000) {
+      errln("FAIL, size should be 0x110000, but is" + set.size());
+    }
+    
+    // contains(first, last)
+    set.clear();
+    set.applyPattern("[A-Y 1-8 b-d l-y]");
+    for (int i = 0; i<set.getRangeCount(); ++i) {
+      int a = set.getRangeStart(i);
+      int b = set.getRangeEnd(i);
+      if (!set.contains(a, b)) {
+        errln("FAIL, should contain " + (char)a + '-' + (char)b +
+            " but doesn't: " + set);
+      }
+      if (set.contains((char)(a-1), b)) {
+        errln("FAIL, shouldn't contain " +
+            (char)(a-1) + '-' + (char)b +
+            " but does: " + set);
+      }
+      if (set.contains(a, (char)(b+1))) {
+        errln("FAIL, shouldn't contain " +
+            (char)a + '-' + (char)(b+1) +
+            " but does: " + set);
+      }
+    }
+    
+    // Ported InversionList test.
+    UnicodeSet a = new UnicodeSet((char)3,(char)10);
+    UnicodeSet b = new UnicodeSet((char)7,(char)15);
+    UnicodeSet c = new UnicodeSet();
+    
+    logln("a [3-10]: " + a);
+    logln("b [7-15]: " + b);
+    c.set(a); c.addAll(b);
+    UnicodeSet exp = new UnicodeSet((char)3,(char)15);
+    if (c.equals(exp)) {
+      logln("c.set(a).add(b): " + c);
+    } else {
+      errln("FAIL: c.set(a).add(b) = " + c + ", expect " + exp);
+    }
+    c.complement();
+    exp.set((char)0, (char)2);
+    exp.add((char)16, UnicodeSet.MAX_VALUE);
+    if (c.equals(exp)) {
+      logln("c.complement(): " + c);
+    } else {
+      errln(Utility.escape("FAIL: c.complement() = " + c + ", expect " + exp));
+    }
+    c.complement();
+    exp.set((char)3, (char)15);
+    if (c.equals(exp)) {
+      logln("c.complement(): " + c);
+    } else {
+      errln("FAIL: c.complement() = " + c + ", expect " + exp);
+    }
+    c.set(a); c.complementAll(b);
+    exp.set((char)3,(char)6);
+    exp.add((char)11,(char) 15);
+    if (c.equals(exp)) {
+      logln("c.set(a).complement(b): " + c);
+    } else {
+      errln("FAIL: c.set(a).complement(b) = " + c + ", expect " + exp);
+    }
+    
+    exp.set(c);
+    c = bitsToSet(setToBits(c));
+    if (c.equals(exp)) {
+      logln("bitsToSet(setToBits(c)): " + c);
+    } else {
+      errln("FAIL: bitsToSet(setToBits(c)) = " + c + ", expect " + exp);
+    } 
+    
+    // Additional tests for coverage JB#2118
+    //UnicodeSet::complement(class UnicodeString const &)
+    //UnicodeSet::complementAll(class UnicodeString const &)
+    //UnicodeSet::containsNone(class UnicodeSet const &)
+    //UnicodeSet::containsNone(long,long)
+    //UnicodeSet::containsSome(class UnicodeSet const &)
+    //UnicodeSet::containsSome(long,long)
+    //UnicodeSet::removeAll(class UnicodeString const &)
+    //UnicodeSet::retain(long)
+    //UnicodeSet::retainAll(class UnicodeString const &)
+    //UnicodeSet::serialize(unsigned short *,long,enum UErrorCode &)
+    //UnicodeSetIterator::getString(void)
+    set.clear();
+    set.complement("ab");
+    exp.applyPattern("[{ab}]");
+    if (!set.equals(exp)) { errln("FAIL: complement(\"ab\")"); return; }
+    
+    UnicodeSetIterator iset = new UnicodeSetIterator(set);
+    if (!iset.next() || iset.codepoint != UnicodeSetIterator.IS_STRING) {
+      errln("FAIL: UnicodeSetIterator.next/IS_STRING");
+    } else if (!iset.string.equals("ab")) {
+      errln("FAIL: UnicodeSetIterator.string");
+    }
+    
+    set.add((char)0x61, (char)0x7A);
+    set.complementAll("alan");
+    exp.applyPattern("[{ab}b-kmo-z]");
+    if (!set.equals(exp)) { errln("FAIL: complementAll(\"alan\")"); return; }
+    
+    exp.applyPattern("[a-z]");
+    if (set.containsNone(exp)) { errln("FAIL: containsNone(UnicodeSet)"); }
+    if (!set.containsSome(exp)) { errln("FAIL: containsSome(UnicodeSet)"); }
+    exp.applyPattern("[aln]");
+    if (!set.containsNone(exp)) { errln("FAIL: containsNone(UnicodeSet)"); }
+    if (set.containsSome(exp)) { errln("FAIL: containsSome(UnicodeSet)"); }
+    
+    if (set.containsNone((char)0x61, (char)0x7A)) {
+      errln("FAIL: containsNone(char, char)");
+    }
+    if (!set.containsSome((char)0x61, (char)0x7A)) {
+      errln("FAIL: containsSome(char, char)");
+    }
+    if (!set.containsNone((char)0x41, (char)0x5A)) {
+      errln("FAIL: containsNone(char, char)");
+    }
+    if (set.containsSome((char)0x41, (char)0x5A)) {
+      errln("FAIL: containsSome(char, char)");
+    }
+    
+    set.removeAll("liu");
+    exp.applyPattern("[{ab}b-hj-kmo-tv-z]");
+    if (!set.equals(exp)) { errln("FAIL: removeAll(\"liu\")"); return; }
+    
+    set.retainAll("star");
+    exp.applyPattern("[rst]");
+    if (!set.equals(exp)) { errln("FAIL: retainAll(\"star\")"); return; }
+    
+    set.retain((char)0x73);
+    exp.applyPattern("[s]");
+    if (!set.equals(exp)) { errln("FAIL: retain('s')"); return; }
+    
+    // ICU 2.6 coverage tests
+    // public final UnicodeSet retain(String s);
+    // public final UnicodeSet remove(int c);
+    // public final UnicodeSet remove(String s);
+    // public int hashCode();
+    set.applyPattern("[a-z{ab}{cd}]");
+    set.retain("cd");
+    exp.applyPattern("[{cd}]");
+    if (!set.equals(exp)) { errln("FAIL: retain(\"cd\")"); return; }
+    
+    set.applyPattern("[a-z{ab}{cd}]");
+    set.remove((char)0x63);
+    exp.applyPattern("[abd-z{ab}{cd}]");
+    if (!set.equals(exp)) { errln("FAIL: remove('c')"); return; }
+    
+    set.remove("cd");
+    exp.applyPattern("[abd-z{ab}]");
+    if (!set.equals(exp)) { errln("FAIL: remove(\"cd\")"); return; }
+    
+    if (set.hashCode() != exp.hashCode()) {
+      errln("FAIL: hashCode() unequal");
+    }
+    exp.clear();
+    if (set.hashCode() == exp.hashCode()) {
+      errln("FAIL: hashCode() equal");
+    }
+    
+    {
+      //Cover addAll(Collection) and addAllTo(Collection)  
+      //  Seems that there is a bug in addAll(Collection) operation
+      //    Ram also add a similar test to UtilityTest.java
+      logln("Testing addAll(Collection) ... ");  
+      String[] array = {"a", "b", "c", "de"};
+      List list = Arrays.asList(array);
+      Set aset = new HashSet(list);
+      logln(" *** The source set's size is: " + aset.size());
+      
+      set.clear();
+      set.addAll(aset);
+      if (set.size() != aset.size()) {
+        errln("FAIL: After addAll, the UnicodeSet size expected " + aset.size() +
+            ", " + set.size() + " seen instead!");
+      } else {
+        logln("OK: After addAll, the UnicodeSet size got " + set.size());
+      }
+      
+      List list2 = new ArrayList();
+      set.addAllTo(list2);
+      
+      //verify the result
+      log(" *** The elements are: ");
+      String s = set.toPattern(true);
+      logln(s);
+      Iterator myiter = list2.iterator();
+      while(myiter.hasNext()) {
+        log(myiter.next().toString() + "  ");
+      }
+      logln("");  // a new line
+    }
+    
+  }
+  
+  public void TestStrings() {
+//  Object[][] testList = {
+//  {I_EQUALS,  UnicodeSet.fromAll("abc"),
+//  new UnicodeSet("[a-c]")},
+//  
+//  {I_EQUALS,  UnicodeSet.from("ch").add('a','z').add("ll"),
+//  new UnicodeSet("[{ll}{ch}a-z]")},
+//  
+//  {I_EQUALS,  UnicodeSet.from("ab}c"),  
+//  new UnicodeSet("[{ab\\}c}]")},
+//  
+//  {I_EQUALS,  new UnicodeSet('a','z').add('A', 'Z').retain('M','m').complement('X'), 
+//  new UnicodeSet("[[a-zA-Z]&[M-m]-[X]]")},
+//  };
+//  
+//  for (int i = 0; i < testList.length; ++i) {
+//  expectRelation(testList[i][0], testList[i][1], testList[i][2], "(" + i + ")");
+//  }        
+    
+    UnicodeSet[][] testList = {
+        {UnicodeSet.fromAll("abc"),
+          new UnicodeSet("[a-c]")},
+          
+          {UnicodeSet.from("ch").add('a','z').add("ll"),
+            new UnicodeSet("[{ll}{ch}a-z]")},
+            
+            {UnicodeSet.from("ab}c"),  
+              new UnicodeSet("[{ab\\}c}]")},
+              
+              {new UnicodeSet('a','z').add('A', 'Z').retain('M','m').complement('X'), 
+                new UnicodeSet("[[a-zA-Z]&[M-m]-[X]]")},
+    };
+    
+    for (int i = 0; i < testList.length; ++i) {
+      if (!testList[i][0].equals(testList[i][1])) {
+        errln("FAIL: sets unequal; see source code (" + i + ")");
+      }
+    }        
+  }
+  
+  static final Integer 
+  I_ANY = new Integer(SortedSetRelation.ANY),
+  I_CONTAINS = new Integer(SortedSetRelation.CONTAINS),
+  I_DISJOINT = new Integer(SortedSetRelation.DISJOINT),
+  I_NO_B = new Integer(SortedSetRelation.NO_B),
+  I_ISCONTAINED = new Integer(SortedSetRelation.ISCONTAINED),
+  I_EQUALS = new Integer(SortedSetRelation.EQUALS),
+  I_NO_A = new Integer(SortedSetRelation.NO_A),
+  I_NONE = new Integer(SortedSetRelation.NONE);
+  
+  public void TestSetRelation() {
+    
+    String[] choices = {"a", "b", "cd", "ef"};
+    int limit = 1 << choices.length;
+    
+    SortedSet iset = new TreeSet();
+    SortedSet jset = new TreeSet();
+    
+    for (int i = 0; i < limit; ++i) {
+      pick(i, choices, iset);
+      for (int j = 0; j < limit; ++j) {
+        pick(j, choices, jset);
+        checkSetRelation(iset, jset, "(" + i + ")");
+      }
+    }
+  }
+  
+  public void TestSetSpeed() {
+    // skip unless verbose
+    if (!isVerbose()) return;
+    
+    SetSpeed2(100);
+    SetSpeed2(1000);
+  }
+  
+  public void SetSpeed2(int size) {
+    
+    SortedSet iset = new TreeSet();
+    SortedSet jset = new TreeSet();
+    
+    for (int i = 0; i < size*2; i += 2) { // only even values
+      iset.add(new Integer(i));
+      jset.add(new Integer(i));
+    }
+    
+    int iterations = 1000000 / size;
+    
+    logln("Timing comparison of Java vs Utility");
+    logln("For about " + size + " objects that are almost all the same.");
+    
+    CheckSpeed(iset, jset, "when a = b", iterations);
+    
+    iset.add(new Integer(size + 1));    // add odd value in middle
+    
+    CheckSpeed(iset, jset, "when a contains b", iterations);        
+    CheckSpeed(jset, iset, "when b contains a", iterations);
+    
+    jset.add(new Integer(size - 1));    // add different odd value in middle
+    
+    CheckSpeed(jset, iset, "when a, b are disjoint", iterations);        
+  }
+  
+  void CheckSpeed(SortedSet iset, SortedSet jset, String message, int iterations) {
+    CheckSpeed2(iset, jset, message, iterations);
+    CheckSpeed3(iset, jset, message, iterations);
+  }
+  
+  void CheckSpeed2(SortedSet iset, SortedSet jset, String message, int iterations) {
+    boolean x;
+    boolean y;
+    
+    // make sure code is loaded:
+    x = iset.containsAll(jset);
+    y = SortedSetRelation.hasRelation(iset, SortedSetRelation.CONTAINS, jset);
+    if (x != y) errln("FAIL contains comparison");
+    
+    double start = System.currentTimeMillis();
+    for (int i = 0; i < iterations; ++i) {
+      x |= iset.containsAll(jset);
+    }
+    double middle = System.currentTimeMillis();
+    for (int i = 0; i < iterations; ++i) {
+      y |= SortedSetRelation.hasRelation(iset, SortedSetRelation.CONTAINS, jset);
+    }
+    double end = System.currentTimeMillis();
+    
+    double jtime = (middle - start)/iterations;
+    double utime = (end - middle)/iterations;
+    
+    java.text.NumberFormat nf = java.text.NumberFormat.getPercentInstance();
+    logln("Test contains: " + message + ": Java: " + jtime
+        + ", Utility: " + utime + ", u:j: " + nf.format(utime/jtime));
+  }
+  
+  void CheckSpeed3(SortedSet iset, SortedSet jset, String message, int iterations) {
+    boolean x;
+    boolean y;
+    
+    // make sure code is loaded:
+    x = iset.equals(jset);
+    y = SortedSetRelation.hasRelation(iset, SortedSetRelation.EQUALS, jset);
+    if (x != y) errln("FAIL equality comparison");
+    
+    
+    double start = System.currentTimeMillis();
+    for (int i = 0; i < iterations; ++i) {
+      x |= iset.equals(jset);
+    }
+    double middle = System.currentTimeMillis();
+    for (int i = 0; i < iterations; ++i) {
+      y |= SortedSetRelation.hasRelation(iset, SortedSetRelation.EQUALS, jset);
+    }
+    double end = System.currentTimeMillis();
+    
+    double jtime = (middle - start)/iterations;
+    double utime = (end - middle)/iterations;
+    
+    java.text.NumberFormat nf = java.text.NumberFormat.getPercentInstance();
+    logln("Test equals:   " + message + ": Java: " + jtime
+        + ", Utility: " + utime + ", u:j: " + nf.format(utime/jtime));
+  }
+  
+  void pick(int bits, Object[] examples, SortedSet output) {
+    output.clear();
+    for (int k = 0; k < 32; ++k) {
+      if (((1<<k) & bits) != 0) output.add(examples[k]);
+    }
+  }
+  
+  public static final String[] RELATION_NAME = {
+    "both-are-null",
+    "a-is-null", 
+    "equals", 
+    "is-contained-in",
+    "b-is-null",
+    "is-disjoint_with",
+    "contains", 
+    "any", };
+  
+  boolean dumbHasRelation(Collection A, int filter, Collection B) {
+    Collection ab = new TreeSet(A);
+    ab.retainAll(B);
+    if (ab.size() > 0 && (filter & SortedSetRelation.A_AND_B) == 0) return false; 
+    
+    // A - B size == A.size - A&B.size
+    if (A.size() > ab.size() && (filter & SortedSetRelation.A_NOT_B) == 0) return false; 
+    
+    // B - A size == B.size - A&B.size
+    if (B.size() > ab.size() && (filter & SortedSetRelation.B_NOT_A) == 0) return false; 
+    
+    
+    return true;
+  }    
+  
+  void checkSetRelation(SortedSet a, SortedSet b, String message) {
+    for (int i = 0; i < 8; ++i) {
+      
+      boolean hasRelation = SortedSetRelation.hasRelation(a, i, b);
+      boolean dumbHasRelation = dumbHasRelation(a, i, b);
+      
+      logln(message + " " + hasRelation + ":\t" + a + "\t" + RELATION_NAME[i] + "\t" + b);
+      
+      if (hasRelation != dumbHasRelation) {
+        errln("FAIL: " + 
+            message + " " + dumbHasRelation + ":\t" + a + "\t" + RELATION_NAME[i] + "\t" + b);
+      }
+    }
+    logln("");
+  }
+  
+  /**
+   * Test the [:Latin:] syntax.
+   */
+  public void TestScriptSet() {
+    
+    expectContainment("[:Latin:]", "aA", CharsToUnicodeString("\\u0391\\u03B1"));
+    
+    expectContainment("[:Greek:]", CharsToUnicodeString("\\u0391\\u03B1"), "aA");
+    
+    /* Jitterbug 1423 */
+    expectContainment("[[:Common:][:Inherited:]]", CharsToUnicodeString("\\U00003099\\U0001D169\\u0000"), "aA");
+    
+  }
+  
+  /**
+   * Test the [:Latin:] syntax.
+   */
+  public void TestPropertySet() {
+    String[] DATA = {
+        // Pattern, Chars IN, Chars NOT in
+        
+        "[:Latin:]",
+        "aA",
+        "\u0391\u03B1",
+        
+        "[\\p{Greek}]",
+        "\u0391\u03B1",
+        "aA",
+        
+        "\\P{ GENERAL Category = upper case letter }",
+        "abc",
+        "ABC",
+        
+        // Combining class: @since ICU 2.2
+        // Check both symbolic and numeric
+        "\\p{ccc=Nukta}",
+        "\u0ABC",
+        "abc",
+        
+        "\\p{Canonical Combining Class = 11}",
+        "\u05B1",
+        "\u05B2",
+        
+        "[:c c c = iota subscript :]",
+        "\u0345",
+        "xyz",
+        
+        // Bidi class: @since ICU 2.2
+        "\\p{bidiclass=lefttoright}",
+        "abc",
+        "\u0671\u0672",
+        
+        // Binary properties: @since ICU 2.2
+        "\\p{ideographic}",
+        "\u4E0A",
+        "x",
+        
+        "[:math=false:]",
+        "q)*(", // )(and * were removed from math in Unicode 4.0.1
+        "+<>^",
+        
+        // JB#1767 \N{}, \p{ASCII}
+        "[:Ascii:]",
+        "abc\u0000\u007F",
+        "\u0080\u4E00",
+        
+        "[\\N{ latin small letter  a  }[:name= latin small letter z:]]",
+        "az",
+        "qrs",
+        
+        // JB#2015
+        "[:any:]",
+        "a\\U0010FFFF",
+        "",
+        
+        "[:nv=0.5:]",
+        "\u00BD\u0F2A",
+        "\u00BC",
+        
+        // JB#2653: Age
+        "[:Age=1.1:]",
+        "\u03D6", // 1.1
+        "\u03D8\u03D9", // 3.2
+        
+        "[:Age=3.1:]", 
+        "\\u1800\\u3400\\U0002f800", 
+        "\\u0220\\u034f\\u30ff\\u33ff\\ufe73\\U00010000\\U00050000", 
+        
+        // JB#2350: Case_Sensitive
+        "[:Case Sensitive:]",
+        "A\u1FFC\\U00010410",
+        ";\u00B4\\U00010500",
+        
+        
+        // Regex compatibility test
+        "[-b]", // leading '-' is literal
+        "-b",
+        "ac",
+        
+        "[^-b]", // leading '-' is literal
+        "ac",
+        "-b",
+        
+        "[b-]", // trailing '-' is literal
+        "-b",
+        "ac",
+        
+        "[^b-]", // trailing '-' is literal
+        "ac",
+        "-b",
+        
+        "[a-b-]", // trailing '-' is literal
+        "ab-",
+        "c=",
+        
+        "[[a-q]&[p-z]-]", // trailing '-' is literal
+        "pq-",
+        "or=",
+        
+        "[\\s|\\)|:|$|\\>]", // from regex tests
+        "s|):$>",
+        "\\abc",
+        
+        "[\uDC00cd]", // JB#2906: isolated trail at start
+        "cd\uDC00",
+        "ab\uD800\\U00010000",
+        
+        "[ab\uD800]", // JB#2906: isolated trail at start
+        "ab\uD800",
+        "cd\uDC00\\U00010000",
+        
+        "[ab\uD800cd]", // JB#2906: isolated lead in middle
+        "abcd\uD800",
+        "ef\uDC00\\U00010000",
+        
+        "[ab\uDC00cd]", // JB#2906: isolated trail in middle
+        "abcd\uDC00",
+        "ef\uD800\\U00010000",
+        
+        "[:^lccc=0:]", // Lead canonical class
+        "\u0300\u0301",
+        "abcd\u00c0\u00c5",
+        
+        "[:^tccc=0:]", // Trail canonical class
+        "\u0300\u0301\u00c0\u00c5",
+        "abcd",
+        
+        "[[:^lccc=0:][:^tccc=0:]]", // Lead and trail canonical class
+        "\u0300\u0301\u00c0\u00c5",
+        "abcd",
+        
+        "[[:^lccc=0:]-[:^tccc=0:]]", // Stuff that starts with an accent but ends with a base (none right now)
+        "",
+        "abcd\u0300\u0301\u00c0\u00c5",
+        
+        "[[:ccc=0:]-[:lccc=0:]-[:tccc=0:]]", // Weirdos. Complete canonical class is zero, but both lead and trail are not
+        "\u0F73\u0F75\u0F81",
+        "abcd\u0300\u0301\u00c0\u00c5",
+        
+        "[:Assigned:]",
+        "A\\uE000\\uF8FF\\uFDC7\\U00010000\\U0010FFFD",
+        "\\u0888\\uFDD3\\uFFFE\\U00050005",
+        
+    };
+    
+    for (int i=0; i<DATA.length; i+=3) {  
+      expectContainment(DATA[i], DATA[i+1], DATA[i+2]);
+    }
+  }
+  
+  public void TestUnicodeSetStrings() {
+    UnicodeSet uset = new UnicodeSet("[a{bc}{cd}pqr\u0000]");
+    logln(uset + " ~ " + uset.getRegexEquivalent());
+    String[][] testStrings = {{"x", "none"},
+        {"bc", "all"},
+        {"cdbca", "all"},
+        {"a", "all"},
+        {"bcx", "some"},
+        {"ab", "some"},
+        {"acb", "some"},
+        {"bcda", "some"},
+        {"dccbx", "none"},
+    };
+    for (int i = 0; i < testStrings.length; ++i) {
+      check(uset, testStrings[i][0], testStrings[i][1]);
+    }
+  }
+  
+  
+  private void check(UnicodeSet uset, String string, String desiredStatus) {
+    boolean shouldContainAll = desiredStatus.equals("all");
+    boolean shouldContainNone = desiredStatus.equals("none");
+    if (uset.containsAll(string) != shouldContainAll) {
+      errln("containsAll " +  string + " should be " + shouldContainAll);
+    } else {
+      logln("containsAll " +  string + " = " + shouldContainAll);
+    }
+    if (uset.containsNone(string) != shouldContainNone) {
+      errln("containsNone " +  string + " should be " + shouldContainNone);
+    } else {
+      logln("containsNone " +  string + " = " + shouldContainNone);
+    }
+  }
+  
+  /**
+   * Test cloning of UnicodeSet
+   */
+  public void TestClone() {
+    UnicodeSet s = new UnicodeSet("[abcxyz]");
+    UnicodeSet t = (UnicodeSet) s.clone();
+    expectContainment(t, "abc", "def");
+  }
+  
+  /**
+   * Test the indexOf() and charAt() methods.
+   */
+  public void TestIndexOf() {
+    UnicodeSet set = new UnicodeSet("[a-cx-y3578]");
+    for (int i=0; i<set.size(); ++i) {
+      int c = set.charAt(i);
+      if (set.indexOf(c) != i) {
+        errln("FAIL: charAt(" + i + ") = " + c +
+            " => indexOf() => " + set.indexOf(c));
+      }
+    }
+    int c = set.charAt(set.size());
+    if (c != -1) {
+      errln("FAIL: charAt(<out of range>) = " +
+          Utility.escape(String.valueOf(c)));
+    }
+    int j = set.indexOf('q');
+    if (j != -1) {
+      errln("FAIL: indexOf('q') = " + j);
+    }
+  }
+  
+  public void TestContainsString() {
+    UnicodeSet x = new UnicodeSet("[a{bc}]");
+    if (x.contains("abc")) errln("FAIL");
+  }
+  
+  public void TestExhaustive() {
+    // exhaustive tests. Simulate UnicodeSets with integers.
+    // That gives us very solid tests (except for large memory tests).
+    
+    char limit = (char)128;
+    
+    for (char i = 0; i < limit; ++i) {
+      logln("Testing " + i + ", " + bitsToSet(i));
+      _testComplement(i);
+      
+      // AS LONG AS WE ARE HERE, check roundtrip
+      checkRoundTrip(bitsToSet(i));
+      
+      for (char j = 0; j < limit; ++j) {
+        _testAdd(i,j);
+        _testXor(i,j);
+        _testRetain(i,j);
+        _testRemove(i,j);
+      }
+    }
+  }
+  
+  /**
+   * Make sure each script name and abbreviated name can be used
+   * to construct a UnicodeSet.
+   */
+  public void TestScriptNames() {
+    for (int i=0; i<UScript.CODE_LIMIT; ++i) {
+      for (int j=0; j<2; ++j) {
+        String pat = "";
+        try {
+          String name =
+            (j==0) ? UScript.getName(i) : UScript.getShortName(i);
+            pat = "[:" + name + ":]";
+            UnicodeSet set = new UnicodeSet(pat);
+            logln("Ok: " + pat + " -> " + set.toPattern(false));
+        } catch (IllegalArgumentException e) {
+          if (pat.length() == 0) {
+            errln("FAIL (in UScript): No name for script " + i);
+          } else {
+            errln("FAIL: Couldn't create " + pat);
+          }
+        }
+      }
+    }
+  }
+  
+  /**
+   * Test closure API.
+   */
+  public void TestCloseOver() {
+    String CASE = String.valueOf(UnicodeSet.CASE);
+    String[] DATA = {
+        // selector, input, output
+        CASE,
+        "[aq\u00DF{Bc}{bC}{Fi}]",
+        "[aAqQ\u00DF\u1E9E\uFB01{ss}{bc}{fi}]", // U+1E9E LATIN CAPITAL LETTER SHARP S is new in Unicode 5.1
+        
+        CASE,
+        "[\u01F1]", // 'DZ'
+        "[\u01F1\u01F2\u01F3]",
+        
+        CASE,
+        "[\u1FB4]",
+        "[\u1FB4{\u03AC\u03B9}]",
+        
+        CASE,
+        "[{F\uFB01}]",
+        "[\uFB03{ffi}]",            
+        
+        CASE,
+        "[a-z]","[A-Za-z\u017F\u212A]",
+        CASE,
+        "[abc]","[A-Ca-c]",
+        CASE,
+        "[ABC]","[A-Ca-c]",
+    };
+    
+    UnicodeSet s = new UnicodeSet();
+    UnicodeSet t = new UnicodeSet();
+    for (int i=0; i<DATA.length; i+=3) {
+      int selector = Integer.parseInt(DATA[i]);
+      String pat = DATA[i+1];
+      String exp = DATA[i+2];
+      s.applyPattern(pat);
+      s.closeOver(selector);
+      t.applyPattern(exp);
+      if (s.equals(t)) {
+        logln("Ok: " + pat + ".closeOver(" + selector + ") => " + exp);
+      } else {
+        errln("FAIL: " + pat + ".closeOver(" + selector + ") => " +
+            s.toPattern(true) + ", expected " + exp);
+      }
+    }
+    
+    // Test the pattern API
+    s.applyPattern("[abc]", UnicodeSet.CASE);
+    expectContainment(s, "abcABC", "defDEF");
+    s = new UnicodeSet("[^abc]", UnicodeSet.CASE);
+    expectContainment(s, "defDEF", "abcABC");
+  }
+  
+  public void TestEscapePattern() {
+    // The following pattern must contain at least one range "c-d"
+    // for which isRuleWhiteSpace(c) or isRuleWhiteSpace(d) is true.
+    String pattern =
+      "[\\uFEFF \\u200E-\\u20FF \\uFFF9-\\uFFFC \\U0001D173-\\U0001D17A \\U000F0000-\\U000FFFFD ]";
+    String exp =
+      "[\\u200E-\\u20FF\\uFEFF\\uFFF9-\\uFFFC\\U0001D173-\\U0001D17A\\U000F0000-\\U000FFFFD]";
+    // We test this with two passes; in the second pass we
+    // pre-unescape the pattern.  Since U+200E is rule whitespace,
+    // this fails -- which is what we expect.
+    for (int pass=1; pass<=2; ++pass) {
+      String pat = pattern;
+      if (pass==2) {
+        pat = Utility.unescape(pat);
+      }
+      // Pattern is only good for pass 1
+      boolean isPatternValid = (pass==1);
+      
+      UnicodeSet set = null;
+      try {
+        set = new UnicodeSet(pat);
+      } catch (IllegalArgumentException e) {
+        set = null;
+      }
+      if ((set != null) != isPatternValid){
+        errln("FAIL: applyPattern(" +
+            Utility.escape(pat) + ") => " + set);
+        continue;
+      }
+      if (set == null) {
+        continue;
+      }
+      if (set.contains((char)0x0644)){
+        errln("FAIL: " + Utility.escape(pat) + " contains(U+0664)");
+      }
+      
+      String newpat = set.toPattern(true);
+      if (newpat.equals(exp)) {
+        logln(Utility.escape(pat) + " => " + newpat);
+      } else {
+        errln("FAIL: " + Utility.escape(pat) + " => " + newpat);
+      }
+      
+      for (int i=0; i<set.getRangeCount(); ++i) {
+        StringBuffer str = new StringBuffer("Range ");
+        str.append((char)(0x30 + i))
+        .append(": ");
+        UTF16.append(str, set.getRangeStart(i));
+        str.append(" - ");
+        UTF16.append(str, set.getRangeEnd(i));
+        String s = Utility.escape(str.toString() + " (" + set.getRangeStart(i) + " - " +
+            set.getRangeEnd(i) + ")");
+        if (set.getRangeStart(i) < 0) {
+          errln("FAIL: " + s);
+        } else {
+          logln(s);
+        }
+      }
+    }
+  }
+  
+  public void TestSymbolTable() {
+    // Multiple test cases can be set up here.  Each test case
+    // is terminated by null:
+    // var, value, var, value,..., input pat., exp. output pat., null
+    String DATA[] = {
+        "us", "a-z", "[0-1$us]", "[0-1a-z]", null,
+        "us", "[a-z]", "[0-1$us]", "[0-1[a-z]]", null,
+        "us", "\\[a\\-z\\]", "[0-1$us]", "[-01\\[\\]az]", null
+    };
+    
+    for (int i=0; i<DATA.length; ++i) {
+      TokenSymbolTable sym = new TokenSymbolTable();
+      
+      // Set up variables
+      while (DATA[i+2] != null) {
+        sym.add(DATA[i], DATA[i+1]);
+        i += 2;
+      }
+      
+      // Input pattern and expected output pattern
+      String inpat = DATA[i], exppat = DATA[i+1];
+      i += 2;
+      
+      ParsePosition pos = new ParsePosition(0);
+      UnicodeSet us = new UnicodeSet(inpat, pos, sym);
+      
+      // results
+      if (pos.getIndex() != inpat.length()) {
+        errln("Failed to read to end of string \""
+            + inpat + "\": read to "
+            + pos.getIndex() + ", length is "
+            + inpat.length());
+      }
+      
+      UnicodeSet us2 = new UnicodeSet(exppat);
+      if (!us.equals(us2)) {
+        errln("Failed, got " + us + ", expected " + us2);
+      } else {
+        logln("Ok, got " + us);
+      }
+      
+      //cover Unicode(String,ParsePosition,SymbolTable,int)
+      ParsePosition inpos = new ParsePosition(0);
+      UnicodeSet inSet = new UnicodeSet(inpat, inpos, sym, UnicodeSet.IGNORE_SPACE);
+      UnicodeSet expSet = new UnicodeSet(exppat);
+      if (!inSet.equals(expSet)) {
+        errln("FAIL: Failed, got " + inSet + ", expected " + expSet);
+      } else {
+        logln("OK: got " + inSet);
+      }
+    }
+  }
+  
+  /**
+   * Test that Posix style character classes [:digit:], etc.
+   *   have the Unicode definitions from TR 18.
+   */
+  public void TestPosixClasses() {
+    expectEqual("POSIX alpha", "[:alpha:]", "\\p{Alphabetic}");
+    expectEqual("POSIX lower", "[:lower:]", "\\p{lowercase}");
+    expectEqual("POSIX upper", "[:upper:]", "\\p{Uppercase}");
+    expectEqual("POSIX punct", "[:punct:]", "\\p{gc=Punctuation}");
+    expectEqual("POSIX digit", "[:digit:]", "\\p{gc=DecimalNumber}");
+    expectEqual("POSIX xdigit", "[:xdigit:]", "[\\p{DecimalNumber}\\p{HexDigit}]");
+    expectEqual("POSIX alnum", "[:alnum:]", "[\\p{Alphabetic}\\p{DecimalNumber}]");
+    expectEqual("POSIX space", "[:space:]", "\\p{Whitespace}");
+    expectEqual("POSIX blank", "[:blank:]", "[\\p{Whitespace}-[\\u000a\\u000B\\u000c\\u000d\\u0085\\p{LineSeparator}\\p{ParagraphSeparator}]]");
+    expectEqual("POSIX cntrl", "[:cntrl:]", "\\p{Control}");
+    expectEqual("POSIX graph", "[:graph:]", "[^\\p{Whitespace}\\p{Control}\\p{Surrogate}\\p{Unassigned}]");
+    expectEqual("POSIX print", "[:print:]", "[[:graph:][:blank:]-[\\p{Control}]]");
+  }
+  
+  /**
+   * Test that frozen classes disallow changes. For 4217
+   */
+  public void TestFrozen() {
+    UnicodeSet test = new UnicodeSet("[[:whitespace:]A]");
+    test.freeze();
+    checkModification(test, true);
+    checkModification(test, false);
+  }
+  
+  public void checkModification(UnicodeSet original, boolean isFrozen) {
+    main:
+      for (int i = 0; ;++i) {
+        UnicodeSet test = (UnicodeSet) (isFrozen ? original.clone() : original.cloneAsThawed());
+        boolean gotException = true;
+        boolean checkEquals = true;
+        try {
+          switch(i) {
+            case 0: test.add(0); break;
+            case 1: test.add(0,1); break;
+            case 2: test.add("a"); break;
+            case 3: List a = new ArrayList(); a.add("a"); test.addAll(a); break;
+            case 4: test.addAll("ab"); break;
+            case 5: test.addAll(new UnicodeSet("[ab]")); break;
+            case 6: test.applyIntPropertyValue(0,0); break;
+            case 7: test.applyPattern("[ab]"); break;
+            case 8: test.applyPattern("[ab]", true); break;
+            case 9: test.applyPattern("[ab]", 0); break;
+            case 10: test.applyPropertyAlias("hex","true"); break;
+            case 11: test.applyPropertyAlias("hex", "true", null); break;
+            case 12: test.closeOver(UnicodeSet.CASE); break;
+            case 13: test.compact(); checkEquals = false; break;
+            case 14: test.complement(0); break;
+            case 15: test.complement(0,0); break;
+            case 16: test.complement("ab"); break;
+            case 17: test.complementAll("ab"); break;
+            case 18: test.complementAll(new UnicodeSet("[ab]")); break;
+            case 19: test.remove(' '); break;
+            case 20: test.remove(' ','a'); break;
+            case 21: test.remove(" "); break;
+            case 22: test.removeAll(" a"); break;
+            case 23: test.removeAll(new UnicodeSet("[\\ a]")); break;
+            case 24: test.retain(' '); break;
+            case 25: test.retain(' ','a'); break;
+            case 26: test.retain(" "); break;
+            case 27: test.retainAll(" a"); break;
+            case 28: test.retainAll(new UnicodeSet("[\\ a]")); break;
+            case 29: test.set(0,1); break;
+            case 30: test.set(new UnicodeSet("[ab]")); break;
+            
+            default: continue main; // so we don't keep having to change the endpoint, and gaps are not skipped.
+            case 35: return;
+          }
+          gotException = false;
+        } catch (UnsupportedOperationException e) {
+          // do nothing
+        }
+        if (isFrozen && !gotException) errln(i + ") attempt to modify frozen object didn't result in an exception");
+        if (!isFrozen && gotException) errln(i + ") attempt to modify thawed object did result in an exception");
+        if (checkEquals) {
+          if (test.equals(original)) {
+            if (!isFrozen) errln(i + ") attempt to modify thawed object didn't change the object");
+          } else { // unequal
+            if (isFrozen) errln(i + ") attempt to modify frozen object changed the object");
+          }
+        }
+      }
+  }
+  
+  String[] prettyData = {
+      "[\\uD7DE-\\uD90C \\uDCB5-\\uDD9F]", // special case
+      "[:any:]",
+      "[:whitespace:]",
+      "[:linebreak=AL:]",
+  };
+  
+  public void TestPrettyPrinting() {
+    try{
+      PrettyPrinter pp = new PrettyPrinter();
+      
+      int i = 0;
+      for (; i < prettyData.length; ++i) {
+        UnicodeSet test = new UnicodeSet(prettyData[i]);
+        checkPrettySet(pp, i, test);
+      }
+      Random random = new Random(0);
+      UnicodeSet test = new UnicodeSet();
+      
+      // To keep runtimes under control, make the number of random test cases
+      //   to try depends on the test framework exhaustive setting.
+      //  params.inclusions = 5:   default exhaustive value
+      //  params.inclusions = 10:  max exhaustive value.
+      int iterations = 50;
+      if (params.inclusion > 5) {
+        iterations = (params.inclusion-5) * 200;
+      }
+      for (; i < iterations; ++i) {
+        double start = random.nextGaussian() * 0x10000;
+        if (start < 0) start = - start;
+        if (start > 0x10FFFF) {
+          start = 0x10FFFF;
+        }
+        double end = random.nextGaussian() * 0x100;
+        if (end < 0) end = -end;
+        end = start + end;
+        if (end > 0x10FFFF) {
+          end = 0x10FFFF;
+        }
+        test.complement((int)start, (int)end);
+        checkPrettySet(pp, i, test);
+      }
+    }catch(RuntimeException ex){
+      warnln("Could not load Collator");
+    }
+  }
+  
+  private void checkPrettySet(PrettyPrinter pp, int i, UnicodeSet test) {
+    String pretty = pp.toPattern(test);
+    UnicodeSet retry = new UnicodeSet(pretty);
+    if (!test.equals(retry)) {
+      errln(i + ". Failed test: " + test + " != " + pretty);
+    } else {
+      logln(i + ". Worked for " + truncate(test.toString()) + " => " + truncate(pretty));
+    }
+  }
+  
+  private String truncate(String string) {
+    if (string.length() <= 100) return string;
+    return string.substring(0,97) + "...";
+  }
+  
+  public class TokenSymbolTable implements SymbolTable {
+    HashMap contents = new HashMap();
+    
+    /**
+     * (Non-SymbolTable API) Add the given variable and value to
+     * the table.  Variable should NOT contain leading '$'.
+     */
+    public void add(String var, String value) {
+      char[] buffer = new char[value.length()];
+      value.getChars(0, value.length(), buffer, 0);
+      add(var, buffer);
+    }
+    
+    /**
+     * (Non-SymbolTable API) Add the given variable and value to
+     * the table.  Variable should NOT contain leading '$'.
+     */
+    public void add(String var, char[] body) {
+      logln("TokenSymbolTable: add \"" + var + "\" => \"" +
+          new String(body) + "\"");
+      contents.put(var, body);
+    }
+    
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.SymbolTable#lookup(java.lang.String)
+     */
+    public char[] lookup(String s) {
+      logln("TokenSymbolTable: lookup \"" + s + "\" => \"" +
+          new String((char[]) contents.get(s)) + "\"");
+      return (char[])contents.get(s);
+    }
+    
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.SymbolTable#lookupMatcher(int)
+     */
+    public UnicodeMatcher lookupMatcher(int ch) {
+      return null;
+    }
+    
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.SymbolTable#parseReference(java.lang.String,
+     java.text.ParsePosition, int)
+     */
+    public String parseReference(String text, ParsePosition pos, int
+        limit) {
+      int cp;
+      int start = pos.getIndex();
+      int i;
+      for (i = start; i < limit; i += UTF16.getCharCount(cp)) {
+        cp = UTF16.charAt(text, i);
+        if (!com.ibm.icu.lang.UCharacter.isUnicodeIdentifierPart(cp)) {
+          break;
+        }
+      }
+      logln("TokenSymbolTable: parse \"" + text + "\" from " +
+          start + " to " + i +
+          " => \"" + text.substring(start,i) + "\"");
+      pos.setIndex(i);
+      return text.substring(start,i);
+    }
+  }
+  
+  public void TestSurrogate() {
+    String DATA[] = {
+        // These should all behave identically
+        "[abc\\uD800\\uDC00]",
+        "[abc\uD800\uDC00]",
+        "[abc\\U00010000]",
+    };
+    for (int i=0; i<DATA.length; ++i) {
+      logln("Test pattern " + i + " :" + Utility.escape(DATA[i]));
+      UnicodeSet set = new UnicodeSet(DATA[i]);
+      expectContainment(set,
+          CharsToUnicodeString("abc\\U00010000"),
+      "\uD800;\uDC00"); // split apart surrogate-pair
+      if (set.size() != 4) {
+        errln(Utility.escape("FAIL: " + DATA[i] + ".size() == " + 
+            set.size() + ", expected 4"));
+      }
+    }
+  }
+  
+  public void TestContains() {
+    int limit = 256; // combinations to test
+    for (int i = 0; i < limit; ++i) {
+      logln("Trying: " + i);
+      UnicodeSet x = bitsToSet(i);
+      for (int j = 0; j < limit; ++j) {
+        UnicodeSet y = bitsToSet(j);
+        boolean containsNone = (i & j) == 0;
+        boolean containsAll = (i & j) == j;
+        boolean equals = i == j;
+        if (containsNone != x.containsNone(y)) {
+          x.containsNone(y); // repeat for debugging
+          errln("FAILED: " + x +  " containsSome " + y);
+        }
+        if (containsAll != x.containsAll(y)) {
+          x.containsAll(y); // repeat for debugging
+          errln("FAILED: " + x +  " containsAll " + y);
+        }
+        if (equals != x.equals(y)) {
+          x.equals(y); // repeat for debugging
+          errln("FAILED: " + x +  " equals " + y);
+        }
+      }
+    }
+  }
+  
+  void _testComplement(int a) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet z = bitsToSet(a);
+    z.complement();
+    int c = setToBits(z);
+    if (c != (~a)) {
+      errln("FAILED: add: ~" + x +  " != " + z);
+      errln("FAILED: add: ~" + a + " != " + c);
+    }
+    checkCanonicalRep(z, "complement " + a);
+  }
+  
+  void _testAdd(int a, int b) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet y = bitsToSet(b);
+    UnicodeSet z = bitsToSet(a);
+    z.addAll(y);
+    int c = setToBits(z);
+    if (c != (a | b)) {
+      errln(Utility.escape("FAILED: add: " + x + " | " + y + " != " + z));
+      errln("FAILED: add: " + a + " | " + b + " != " + c);
+    }
+    checkCanonicalRep(z, "add " + a + "," + b);
+  }
+  
+  void _testRetain(int a, int b) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet y = bitsToSet(b);
+    UnicodeSet z = bitsToSet(a);
+    z.retainAll(y);
+    int c = setToBits(z);
+    if (c != (a & b)) {
+      errln("FAILED: retain: " + x + " & " + y + " != " + z);
+      errln("FAILED: retain: " + a + " & " + b + " != " + c);
+    }
+    checkCanonicalRep(z, "retain " + a + "," + b);
+  }
+  
+  void _testRemove(int a, int b) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet y = bitsToSet(b);
+    UnicodeSet z = bitsToSet(a);
+    z.removeAll(y);
+    int c = setToBits(z);
+    if (c != (a &~ b)) {
+      errln("FAILED: remove: " + x + " &~ " + y + " != " + z);
+      errln("FAILED: remove: " + a + " &~ " + b + " != " + c);
+    }
+    checkCanonicalRep(z, "remove " + a + "," + b);
+  }
+  
+  void _testXor(int a, int b) {
+    UnicodeSet x = bitsToSet(a);
+    UnicodeSet y = bitsToSet(b);
+    UnicodeSet z = bitsToSet(a);
+    z.complementAll(y);
+    int c = setToBits(z);
+    if (c != (a ^ b)) {
+      errln("FAILED: complement: " + x + " ^ " + y + " != " + z);
+      errln("FAILED: complement: " + a + " ^ " + b + " != " + c);
+    }
+    checkCanonicalRep(z, "complement " + a + "," + b);
+  }
+  
+  /**
+   * Check that ranges are monotonically increasing and non-
+   * overlapping.
+   */
+  void checkCanonicalRep(UnicodeSet set, String msg) {
+    int n = set.getRangeCount();
+    if (n < 0) {
+      errln("FAIL result of " + msg +
+          ": range count should be >= 0 but is " +
+          n + " for " + Utility.escape(set.toString()));
+      return;
+    }
+    int last = 0;
+    for (int i=0; i<n; ++i) {
+      int start = set.getRangeStart(i);
+      int end = set.getRangeEnd(i);
+      if (start > end) {
+        errln("FAIL result of " + msg +
+            ": range " + (i+1) +
+            " start > end: " + start + ", " + end +
+            " for " + Utility.escape(set.toString()));
+      }
+      if (i > 0 && start <= last) {
+        errln("FAIL result of " + msg +
+            ": range " + (i+1) +
+            " overlaps previous range: " + start + ", " + end +
+            " for " + Utility.escape(set.toString()));
+      }
+      last = end;
+    }
+  }
+  
+  /**
+   * Convert a bitmask to a UnicodeSet.
+   */
+  UnicodeSet bitsToSet(int a) {
+    UnicodeSet result = new UnicodeSet();
+    for (int i = 0; i < 32; ++i) {
+      if ((a & (1<<i)) != 0) {
+        result.add((char)i,(char)i);
+      }
+    }
+    
+    return result;
+  }
+  
+  /**
+   * Convert a UnicodeSet to a bitmask.  Only the characters
+   * U+0000 to U+0020 are represented in the bitmask.
+   */
+  static int setToBits(UnicodeSet x) {
+    int result = 0;
+    for (int i = 0; i < 32; ++i) {
+      if (x.contains((char)i)) {
+        result |= (1<<i);
+      }
+    }
+    return result;
+  }
+  
+  /**
+   * Return the representation of an inversion list based UnicodeSet
+   * as a pairs list.  Ranges are listed in ascending Unicode order.
+   * For example, the set [a-zA-M3] is represented as "33AMaz".
+   */
+  static String getPairs(UnicodeSet set) {
+    StringBuffer pairs = new StringBuffer();
+    for (int i=0; i<set.getRangeCount(); ++i) {
+      int start = set.getRangeStart(i);
+      int end = set.getRangeEnd(i);
+      if (end > 0xFFFF) {
+        end = 0xFFFF;
+        i = set.getRangeCount(); // Should be unnecessary
+      }
+      pairs.append((char)start).append((char)end);
+    }
+    return pairs.toString();
+  }
+  
+  /**
+   * Test function. Make sure that the sets have the right relation
+   */
+  
+  void expectRelation(Object relationObj, Object set1Obj, Object set2Obj, String message) {
+    int relation = ((Integer) relationObj).intValue();
+    UnicodeSet set1 = (UnicodeSet) set1Obj;
+    UnicodeSet set2 = (UnicodeSet) set2Obj;
+    
+    // by-the-by, check the iterator
+    checkRoundTrip(set1);
+    checkRoundTrip(set2);
+    
+    boolean contains = set1.containsAll(set2);
+    boolean isContained = set2.containsAll(set1);
+    boolean disjoint = set1.containsNone(set2);
+    boolean equals = set1.equals(set2);
+    
+    UnicodeSet intersection = new UnicodeSet(set1).retainAll(set2);
+    UnicodeSet minus12 = new UnicodeSet(set1).removeAll(set2);
+    UnicodeSet minus21 = new UnicodeSet(set2).removeAll(set1);
+    
+    // test basic properties
+    
+    if (contains != (intersection.size() == set2.size())) {
+      errln("FAIL contains1" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if (contains != (intersection.equals(set2))) {
+      errln("FAIL contains2" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if (isContained != (intersection.size() == set1.size())) {
+      errln("FAIL isContained1" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if (isContained != (intersection.equals(set1))) {
+      errln("FAIL isContained2" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if ((contains && isContained) != equals) {
+      errln("FAIL equals" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    if (disjoint != (intersection.size() == 0)) {
+      errln("FAIL disjoint" + set1.toPattern(true) + ", " + set2.toPattern(true));
+    }
+    
+    // Now see if the expected relation is true
+    int status = (minus12.size() != 0 ? 4 : 0)
+    | (intersection.size() != 0 ? 2 : 0)
+    | (minus21.size() != 0 ? 1 : 0);
+    
+    if (status != relation) {
+      errln("FAIL relation incorrect" + message
+          + "; desired = " + RELATION_NAME[relation]
+                                           + "; found = " + RELATION_NAME[status]
+                                                                          + "; set1 = " + set1.toPattern(true)
+                                                                          + "; set2 = " + set2.toPattern(true)
+      );
+    }
+  }
+  
+  /**
+   * Basic consistency check for a few items.
+   * That the iterator works, and that we can create a pattern and
+   * get the same thing back
+   */
+  
+  void checkRoundTrip(UnicodeSet s) {
+    String pat = s.toPattern(false);
+    UnicodeSet t = copyWithIterator(s, false);
+    checkEqual(s, t, "iterator roundtrip");
+    
+    t = copyWithIterator(s, true); // try range
+    checkEqual(s, t, "iterator roundtrip");
+    
+    t = new UnicodeSet(pat);
+    checkEqual(s, t, "toPattern(false)");
+    
+    pat = s.toPattern(true);
+    t = new UnicodeSet(pat);
+    checkEqual(s, t, "toPattern(true)");
+  }
+  
+  UnicodeSet copyWithIterator(UnicodeSet s, boolean withRange) {
+    UnicodeSet t = new UnicodeSet();
+    UnicodeSetIterator it = new UnicodeSetIterator(s);
+    if (withRange) {
+      while (it.nextRange()) {
+        if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+          t.add(it.string);
+        } else {
+          t.add(it.codepoint, it.codepointEnd);
+        }
+      }
+    } else {
+      while (it.next()) {
+        if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+          t.add(it.string);
+        } else {
+          t.add(it.codepoint);
+        }
+      }
+    }
+    return t;
+  }
+  
+  boolean checkEqual(UnicodeSet s, UnicodeSet t, String message) {
+    if (!s.equals(t)) {
+      errln("FAIL " + message
+          + "; source = " + s.toPattern(true)
+          + "; result = " + t.toPattern(true)
+      );
+      return false;
+    }
+    return true;
+  }
+  
+  void expectEqual(String name, String pat1, String pat2) {
+    UnicodeSet set1, set2;
+    try {
+      set1 = new UnicodeSet(pat1);
+      set2 = new UnicodeSet(pat2);
+    } catch (IllegalArgumentException e) {
+      errln("FAIL: Couldn't create UnicodeSet from pattern for \"" + name + "\": " + e.getMessage());
+      return;
+    }
+    if(!set1.equals(set2)) {
+      errln("FAIL: Sets built from patterns differ for \"" + name + "\"");
+    }
+  }
+  
+  /**
+   * Expect the given set to contain the characters in charsIn and
+   * to not contain those in charsOut.
+   */
+  void expectContainment(String pat, String charsIn, String charsOut) {
+    UnicodeSet set;
+    try {
+      set = new UnicodeSet(pat);
+    } catch (IllegalArgumentException e) {
+      errln("FAIL: Couldn't create UnicodeSet from pattern \"" +
+          pat + "\": " + e.getMessage());
+      return;
+    }
+    expectContainment(set, charsIn, charsOut);
+  }
+  
+  /**
+   * Expect the given set to contain the characters in charsIn and
+   * to not contain those in charsOut.
+   */
+  void expectContainment(UnicodeSet set, String charsIn, String charsOut) {
+    StringBuffer bad = new StringBuffer();
+    if (charsIn != null) {
+      charsIn = Utility.unescape(charsIn);
+      for (int i=0; i<charsIn.length(); ) {
+        int c = UTF16.charAt(charsIn,i);
+        i += UTF16.getCharCount(c);
+        if (!set.contains(c)) {
+          UTF16.append(bad,c);
+        }
+      }
+      if (bad.length() > 0) {
+        errln(Utility.escape("FAIL: set " + set + " does not contain " + bad +
+            ", expected containment of " + charsIn));
+      } else {
+        logln(Utility.escape("Ok: set " + set + " contains " + charsIn));
+      }
+    }
+    if (charsOut != null) {
+      charsOut = Utility.unescape(charsOut);
+      bad.setLength(0);
+      for (int i=0; i<charsOut.length(); ) {
+        int c = UTF16.charAt(charsOut,i);
+        i += UTF16.getCharCount(c);
+        if (set.contains(c)) {
+          UTF16.append(bad, c);
+        }
+      }
+      if (bad.length() > 0) {
+        errln(Utility.escape("FAIL: set " + set + " contains " + bad +
+            ", expected non-containment of " + charsOut));
+      } else {
+        logln(Utility.escape("Ok: set " + set + " does not contain " + charsOut));
+      }
+    }
+  }
+  
+  void expectPattern(UnicodeSet set,
+      String pattern,
+      String expectedPairs) {
+    set.applyPattern(pattern);
+    if (!getPairs(set).equals(expectedPairs)) {
+      errln("FAIL: applyPattern(\"" + pattern +
+          "\") => pairs \"" +
+          Utility.escape(getPairs(set)) + "\", expected \"" +
+          Utility.escape(expectedPairs) + "\"");
+    } else {
+      logln("Ok:   applyPattern(\"" + pattern +
+          "\") => pairs \"" +
+          Utility.escape(getPairs(set)) + "\"");
+    }
+  }
+  
+  void expectToPattern(UnicodeSet set,
+      String expPat,
+      String[] expStrings) {
+    String pat = set.toPattern(true);
+    if (pat.equals(expPat)) {
+      logln("Ok:   toPattern() => \"" + pat + "\"");
+    } else {
+      errln("FAIL: toPattern() => \"" + pat + "\", expected \"" + expPat + "\"");
+      return;
+    }
+    if (expStrings == null) {
+      return;
+    }
+    boolean in = true;
+    for (int i=0; i<expStrings.length; ++i) {
+      if (expStrings[i] == NOT) { // sic; pointer comparison
+        in = false;
+        continue;
+      }
+      boolean contained = set.contains(expStrings[i]);
+      if (contained == in) {
+        logln("Ok: " + expPat + 
+            (contained ? " contains {" : " does not contain {") +
+            Utility.escape(expStrings[i]) + "}");
+      } else {
+        errln("FAIL: " + expPat + 
+            (contained ? " contains {" : " does not contain {") +
+            Utility.escape(expStrings[i]) + "}");
+      }
+    }
+  }
+  
+  void expectPairs(UnicodeSet set, String expectedPairs) {
+    if (!getPairs(set).equals(expectedPairs)) {
+      errln("FAIL: Expected pair list \"" +
+          Utility.escape(expectedPairs) + "\", got \"" +
+          Utility.escape(getPairs(set)) + "\"");
+    }
+  }
+  static final String CharsToUnicodeString(String s) {
+    return Utility.unescape(s);
+  }
+  
+  
+}
diff --git a/src/com/ibm/icu/dev/test/translit/WriteCharts.java b/src/com/ibm/icu/dev/test/translit/WriteCharts.java
new file mode 100644
index 0000000..9241f83
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/WriteCharts.java
@@ -0,0 +1,378 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.dev.test.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import java.util.*;
+import java.io.*;
+
+public class WriteCharts {
+    public static void main(String[] args) throws IOException {
+        if (false) {
+            printSet("[[\u0000-\u007E \u30A1-\u30FC \uFF61-\uFF9F\u3001\u3002][:Katakana:][:Mark:]]");
+        }
+        String testSet = "";
+        if (args.length == 0) args = getAllScripts();
+        for (int i = 0; i < args.length; ++i) {
+    // Enumeration enum = Transliterator.getAvailableIDs();
+            if (args[i].startsWith("[")) {
+                testSet = args[i];
+            } else {
+                print(testSet, args[i]);
+                testSet = "";
+            }
+        }
+    }
+    
+    public static void printSet(String source) {
+        UnicodeSet s = new UnicodeSet(source);
+        System.out.println("Printout for '" + source + "'");
+        int count = s.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int start = s.getRangeStart(i);
+            int end = s.getRangeEnd(i);
+            System.out.println(Integer.toString(start,16) + ".." + Integer.toString(end,16));
+        }
+    }
+    
+    public static String[] getAllScripts() {
+        Set set = new TreeSet();
+        int scripts[];
+        Enumeration sources = Transliterator.getAvailableSources();
+        while(sources.hasMoreElements()) {
+            String source = (String) sources.nextElement();
+            scripts = UScript.getCode(source);
+            if (scripts == null) {
+                System.out.println("[Skipping " + source + "]");
+                continue;
+            }
+            int sourceScript = scripts[0];
+            System.out.println("Source: " + source + ";\tScripts: " + showScripts(scripts));
+            Enumeration targets = Transliterator.getAvailableTargets(source);
+            while(targets.hasMoreElements()) {
+                String target = (String) targets.nextElement();
+                scripts = UScript.getCode(target);
+                if (scripts == null
+                        || priority(scripts[0]) < priority(sourceScript)) {
+                    // skip doing both directions
+                    System.out.println("[Skipping '" + source + "-" + target + "']");
+                    continue;
+                }
+                System.out.println("\tTarget: " + target + ";\tScripts: " + showScripts(scripts));
+                Enumeration variants = Transliterator.getAvailableVariants(source, target);
+                while(variants.hasMoreElements()) {
+                    String variant = (String) variants.nextElement();
+                    String id = source + "-" + target;
+                    if (variant.length() != 0) {
+                        id += "/" + variant;
+                        if (false) {
+                            System.out.println("SKIPPING VARIANT, SINCE IT CURRENTLY BREAKS!\t" + id);
+                            continue;
+                        }
+                    }
+                    System.out.println("\t\t\t\tAdding: '" + id + "'");
+                    set.add(id);
+                }
+            }
+        }
+        String[] results = new String[set.size()];
+        set.toArray(results);
+        return results;
+    }
+    
+    static public int priority(int script) {
+        if (script == UScript.LATIN) return -2;
+        return script;
+    }
+    
+    public static String showScripts(int[] scripts) {
+        StringBuffer results = new StringBuffer();
+        for (int i = 0; i < scripts.length; ++i) {
+            if (i != 0) results.append(", ");
+            results.append(UScript.getName(scripts[i]));
+        }
+        return results.toString();
+    }
+    
+    public static void print(String testSet, String rawId) throws IOException {
+        System.out.println("Processing " + rawId);
+        Transliterator t = Transliterator.getInstance(rawId);
+        String id = t.getID();
+        
+        // clean up IDs. Ought to be API for getting source, target, variant
+        int minusPos = id.indexOf('-');
+        String source = id.substring(0,minusPos);
+        String target = id.substring(minusPos+1);
+        int slashPos = target.indexOf('/');
+        if (slashPos >= 0) target = target.substring(0,slashPos);
+        
+        // check that the source is a script
+        if (testSet.equals("")) {
+            int[] scripts = UScript.getCode(source);
+            if (scripts == null) {
+                System.out.println("FAILED: " 
+                    + Transliterator.getDisplayName(id)
+                    + " does not have a script as the source");
+                return;
+            } else {
+                testSet = "[:" + source + ":]";
+                if (source.equalsIgnoreCase("katakana")) {
+                    testSet = "[" + testSet + "\u30FC]";
+                    printSet(testSet);
+                }
+            }
+        }
+        UnicodeSet sourceSet = new UnicodeSet(testSet);
+
+        // check that the target is a script
+        int[] scripts = UScript.getCode(target);
+        if (scripts == null) {
+            target = "[:Latin:]";
+        } else {
+            target = "[:" + target + ":]";
+        }
+        UnicodeSet targetSet = new UnicodeSet(target);        
+        
+        Transliterator inverse = t.getInverse();
+        
+        //Transliterator hex = Transliterator.getInstance("Any-Hex");
+        
+                
+        // iterate through script
+        System.out.println("Transliterating " + sourceSet.toPattern(true) 
+            + " with " + Transliterator.getDisplayName(id));
+                
+        UnicodeSet leftOverSet = new UnicodeSet(targetSet);
+        UnicodeSet privateUse = new UnicodeSet("[:private use:]");
+            
+        Map map = new TreeMap();
+        
+        UnicodeSet targetSetPlusAnyways = new UnicodeSet(targetSet);
+        targetSetPlusAnyways.addAll(okAnyway);
+        
+        UnicodeSet sourceSetPlusAnyways = new UnicodeSet(sourceSet);
+        sourceSetPlusAnyways.addAll(okAnyway);
+        
+        UnicodeSetIterator usi = new UnicodeSetIterator(sourceSet);
+        
+        while (usi.next()) {
+            int j = usi.codepoint;
+            /*
+        int count = sourceSet.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int end = sourceSet.getRangeEnd(i);
+            for (int j = sourceSet.getRangeStart(i); j <= end; ++j) {
+            */
+               // String flag = "";
+                String ss = UTF16.valueOf(j);
+                String ts = t.transliterate(ss);
+                char group = 0;
+                if (!targetSetPlusAnyways.containsAll(ts)) {
+                    group |= 1;
+                }
+                if (UTF16.countCodePoint(ts) == 1) {
+                    leftOverSet.remove(UTF16.charAt(ts,0));
+                }
+                String rt = inverse.transliterate(ts);
+                if (!sourceSetPlusAnyways.containsAll(rt)) {
+                    group |= 2;
+                } else if (!ss.equals(rt)) {
+                    group |= 4;
+                }
+                
+                if (!privateUse.containsNone(ts) || !privateUse.containsNone(rt)) {
+                    group |= 16;
+                }
+                    
+                map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ss, Normalizer.NFKD))
+                        + "\u0000" + ss, 
+                    "<td class='s'>" + ss + "<br><tt>" + hex(ss)
+                        + "</tt></td><td class='t'>" + ts + "<br><tt>" + hex(ts)
+                        + "</tt></td><td class='r'>" + rt + "<br><tt>" + hex(rt) + "</tt></td>" );
+                
+                // Check Duals
+                /*
+                int maxDual = 200;
+              dual:
+                for (int i2 = 0; i2 < count; ++i2) {
+                    int end2 = sourceSet.getRangeEnd(i2);
+                    for (int j2 = sourceSet.getRangeStart(i2); j2 <= end; ++j2) {
+                        String ss2 = UTF16.valueOf(j2);
+                        String ts2 = t.transliterate(ss2);
+                        String rt2 = inverse.transliterate(ts2);
+                        
+                        String ss12 = ss + ss2;
+                        String ts12 = t.transliterate(ss + ss12);
+                        String rt12 = inverse.transliterate(ts12);
+                        if (ts12.equals(ts + ts2) && rt12.equals(rt + rt2)) continue;   
+                        if (--maxDual < 0) break dual;
+                        
+                        // transliteration of whole differs from that of parts
+                        group = 0x100;
+                        map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ss12, Normalizer.DECOMP_COMPAT, 0))
+                                + "\u0000" + ss12, 
+                            "<td class='s'>" + ss12 + "<br><tt>" + hex(ss12)
+                                + "</tt></td><td class='t'>" + ts12 + "<br><tt>" + hex(ts12)
+                                + "</tt></td><td class='r'>" + rt12 + "<br><tt>" + hex(rt12) + "</tt></td>" );
+                    }
+                }
+                */
+            //}
+        }
+        
+        
+        leftOverSet.remove(0x0100,0x02FF); // remove extended & IPA
+        
+        /*int count = leftOverSet.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int end = leftOverSet.getRangeEnd(i);
+            for (int j = leftOverSet.getRangeStart(i); j <= end; ++j) {
+            */
+            
+        usi.reset(leftOverSet);
+        while (usi.next()) {
+            int j = usi.codepoint;
+            
+                String ts = UTF16.valueOf(j);
+                // String decomp = Normalizer.normalize(ts, Normalizer.DECOMP_COMPAT, 0);
+                // if (!decomp.equals(ts)) continue;
+                
+                String rt = inverse.transliterate(ts);
+                // String flag = "";
+                char group = 0x80;
+                    
+                if (!sourceSetPlusAnyways.containsAll(rt)) {
+                    group |= 8;
+                }
+                if (!privateUse.containsNone(rt)) {
+                    group |= 16;
+                }
+                    
+                map.put(group + UCharacter.toLowerCase(Normalizer.normalize(ts, Normalizer.NFKD)) + ts, 
+                    "<td class='s'>-</td><td class='t'>" + ts + "<br><tt>" + hex(ts)
+                    + "</tt></td><td class='r'>"
+                    + rt + "<br><tt>" + hex(rt) + "</tt></td>");
+            //}
+        }
+
+        // make file name and open
+        File f = new File("transliteration/chart_" + id.replace('/', '_') + ".html");
+        String filename = f.getCanonicalFile().toString();
+        PrintWriter out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        //out.print('\uFEFF'); // BOM
+        
+        System.out.println("Writing " + filename);
+        
+        try {
+            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
+            out.println("<HTML><HEAD>");
+            out.println("<META content=\"text/html; charset=utf-8\" http-equiv=Content-Type></HEAD>");
+            out.println("<link rel='stylesheet' href='http://www.unicode.org/charts/uca/charts.css' type='text/css'>");
+            
+            out.println("<BODY>");
+            out.println("<h1>Transliteration Samples for '" + Transliterator.getDisplayName(id) + "'</h1>");
+            out.println("<p>This file illustrates the transliterations of " + Transliterator.getDisplayName(id) + ".");
+            out.println("The samples are mechanically generated, and only include single characters");
+            out.println("from the source set. Thus it will <i>not</i> contain examples where the transliteration");
+            out.println("depends on the context around the character. For a more detailed -- and interactive -- example, see the");
+            out.println("<a href='http://demo.icu-project.org/icu-bin/translit'>Transliteration Demo</a></p><hr>");
+            
+            // set up the headers
+            int columnCount = 3;
+            String headerBase = "<th>Source</th><th>Target</th><th>Return</th>";
+            String headers = headerBase;
+            for (int i = columnCount - 1; i > 0; --i) {
+                if (i != columnCount - 1) headers += "<th>&nbsp;</th>";
+                headers += headerBase;
+            }
+            
+            String tableHeader = "<p><table border='1'><tr>" + headers + "</tr>";
+            String tableFooter = "</table></p>";
+            out.println("<h2>Round Trip</h2>");
+            out.println(tableHeader);
+            
+            Iterator it = map.keySet().iterator();
+            char lastGroup = 0;
+            int count = 0;
+            int column = 0;
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                char group = key.charAt(0);
+                if (group != lastGroup || count++ > 50) {
+                    lastGroup = group;
+                    count = 0;
+                    if (column != 0) {
+                        out.println("</tr>");
+                        column = 0;
+                    }
+                    out.println(tableFooter);
+                    
+                    // String title = "";
+                    if ((group & 0x100) != 0) out.println("<hr><h2>Duals</h2>");
+                    else if ((group & 0x80) != 0) out.println("<hr><h2>Completeness</h2>");
+                    else out.println("<hr><h2>Round Trip</h2>");
+                    if ((group & 16) != 0) out.println("<h3>Errors: Contains Private Use Characters</h3>");
+                    if ((group & 8) != 0) out.println("<h3>Possible Errors: Return not in Source Set</h3>");
+                    if ((group & 4) != 0) out.println("<h3>One-Way Mapping: Return not equal to Source</h3>");
+                    if ((group & 2) != 0) out.println("<h3>Errors: Return not in Source Set</h3>");
+                    if ((group & 1) != 0) out.println("<h3>Errors: Target not in Target Set</h3>");
+                                        
+                    out.println(tableHeader);
+                    column = 0;
+                }
+                String value = (String) map.get(key);
+                if (column++ == 0) out.print("<tr>");
+                else out.print("<th>&nbsp;</th>");
+                out.println(value);
+                if (column == 3) {
+                    out.println("</tr>");
+                    column = 0;
+                }
+            }
+            if (column != 0) {
+                out.println("</tr>");
+                column = 0;
+            }
+            out.println(tableFooter + "</BODY></HTML>");
+            
+        } finally {
+            out.close();
+        }
+    }
+    
+    public static String hex(String s) {
+        int cp;
+        StringBuffer results = new StringBuffer();
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (i != 0) results.append(' ');
+            results.append(Integer.toHexString(cp));
+        }
+        return results.toString().toUpperCase();
+    }
+    
+    static final UnicodeSet okAnyway = new UnicodeSet("[^[:Letter:]]");
+    
+    /*
+    // tests whether a string is in a set. Also checks for Common and Inherited
+    public static boolean isIn(String s, UnicodeSet set) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(i)) {
+            cp = UTF16.charAt(s, i);
+            if (set.contains(cp)) continue;
+            if (okAnyway.contains(cp)) continue;
+            return false;
+        }
+        return true;
+    }
+    */
+    
+}
+  
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/translit/package.html b/src/com/ibm/icu/dev/test/translit/package.html
new file mode 100644
index 0000000..5fdff1c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/translit/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Transliterator tests.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/ArrayComparator.java b/src/com/ibm/icu/dev/test/util/ArrayComparator.java
new file mode 100644
index 0000000..bc500d7
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ArrayComparator.java
@@ -0,0 +1,76 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+import java.util.Comparator;
+
+public class ArrayComparator implements Comparator {
+    public static final Comparator COMPARABLE = new Comparator() {
+        public int compare(Object o1, Object o2) {
+            return ((Comparable)o1).compareTo(o2);
+        } 
+    };
+    private Comparator[] comparators;
+    private int[] reordering;
+    
+    public ArrayComparator (Comparator[] comparators, int[] reordering) {
+        this.comparators = comparators;
+        this.reordering = reordering;
+        if (this.reordering == null) {
+            this.reordering = new int[comparators.length];
+            for (int i = 0; i < this.reordering.length; ++i) {
+                this.reordering[i] = i;
+            }
+        } else {
+            if (this.reordering.length != this.comparators.length) {
+                throw new IllegalArgumentException("comparator and reordering lengths must match");
+            }
+        }
+    }
+    
+    public ArrayComparator (Comparator[] comparators) {
+        this(comparators,null);
+    }
+    
+    /* Lexigraphic compare. Returns the first difference
+     * @return zero if equal. Otherwise +/- (i+1) 
+     * where i is the index of the first comparator finding a difference
+     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+     */
+    public int compare(Object a0, Object a1) {
+        Object[] arg0 = (Object[]) a0;
+        Object[] arg1 = (Object[]) a1;
+        for (int j = 0; j < comparators.length; ++j) {
+            int i = reordering[j];
+            Comparator comp = comparators[i];
+            if (comp == null) continue;
+            int result = comp.compare(arg0[i], arg1[i]);
+            if (result == 0) continue;
+            if (result > 0) return i+1;
+            return -(i+1);
+        }
+        return 0;
+    }
+
+    static class CatchExceptionComparator implements Comparator {
+        private Comparator other;
+        
+        public CatchExceptionComparator(Comparator other) {
+            this.other = other;
+        }
+
+        public int compare(Object arg0, Object arg1) throws RuntimeException {
+            try {
+                return other.compare(arg0, arg1);
+            } catch (RuntimeException e) {
+                System.out.println("Arg0: " + arg0);
+                System.out.println("Arg1: " + arg1);
+                throw e;
+            }
+        }
+    }
+    
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/BNF.java b/src/com/ibm/icu/dev/test/util/BNF.java
new file mode 100644
index 0000000..67ac906
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/BNF.java
@@ -0,0 +1,333 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.Set;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import com.ibm.icu.text.UnicodeSet;
+import java.util.Random;
+
+public class BNF {
+    private Map map = new HashMap();
+    private Set variables = new HashSet();
+    private Pick pick = null;
+    private Pick.Target target = null;
+    private Tokenizer t;
+    private Quoter quoter;
+    private Random random;
+    
+    public String next() {
+        return target.next();
+    }
+    
+    public String getInternal() {
+        return pick.getInternal(0, new HashSet());
+    }
+    
+    /*
+    + "weight = integer '%';"
+    + "range = '{' integer (',' integer?)? '}' weight*;"
+    + "quote = '@';"
+    + "star = '*' weight*;"
+    + "plus = '+' weight*;"
+    + "maybe = '?' weight?;"
+    + "quantifier = range | star | maybe | plus;"
+    + "core = string | unicodeSet | '(' alternation ')';"
+    + "sequence = (core quantifier*)+;"
+    + "alternation = sequence (weight? ('|' sequence weight?)+)?;"
+    + "rule = string '=' alternation;"; 
+    
+    
+    *      Match 0 or more times
+    +      Match 1 or more times
+    ?      Match 1 or 0 times
+    {n}    Match exactly n times
+    {n,}   Match at least n times
+    {n,m}  Match at least n but not more than m times  
+ 
+ 
+
+    */
+    
+    public BNF(Random random, Quoter quoter) {
+        this.random = random;
+        this.quoter = quoter;
+        t = new Tokenizer();
+    }
+    
+    public BNF addRules(String rules) {
+        t.setSource(rules);        
+        while (addRule()) {
+        }
+        return this; // for chaining
+    }
+    
+    public BNF complete() {
+        // check that the rules match the variables, except for $root in rules
+        Set ruleSet = map.keySet();
+        // add also 
+        variables.add("$root");
+        variables.addAll(t.getLookedUpItems());
+        if (!ruleSet.equals(variables)) {
+            String msg = showDiff(variables, ruleSet);
+            if (msg.length() != 0) msg = "Error: Missing definitions for: " + msg;
+            String temp = showDiff(ruleSet, variables);
+            if (temp.length() != 0) temp = "Warning: Defined but not used: " + temp;
+            if (msg.length() == 0) msg = temp;
+            else if (temp.length() != 0) {
+                msg = msg + "; " + temp;           
+            }
+            error(msg);           
+        } 
+        
+        if (!ruleSet.equals(variables)) {
+            String msg = showDiff(variables, ruleSet);
+            if (msg.length() != 0) msg = "Missing definitions for: " + msg;
+            String temp = showDiff(ruleSet, variables);
+            if (temp.length() != 0) temp = "Defined but not used: " + temp;
+            if (msg.length() == 0) msg = temp;
+            else if (temp.length() != 0) {
+                msg = msg + "; " + temp;           
+            }
+            error(msg);           
+        } 
+        
+        // replace variables by definitions
+        Iterator it = ruleSet.iterator();
+        while (it.hasNext()) {
+            String key = (String) it.next();
+            Pick expression = (Pick) map.get(key);
+            Iterator it2 = ruleSet.iterator();  
+            if (false && key.equals("$crlf")) {
+                System.out.println("debug") ;
+            }
+            while (it2.hasNext()) {
+                Object key2 = it2.next();
+                if (key.equals(key2)) continue;
+                Pick expression2 = (Pick) map.get(key2);
+                expression2.replace(key, expression);
+            }
+        }
+        pick = (Pick) map.get("$root");
+        target = Pick.Target.make(pick, random, quoter);
+        // TODO remove temp collections
+        return this;
+    }
+    
+    String showDiff(Set a, Set b) {
+        Set temp = new HashSet();
+        temp.addAll(a);
+        temp.removeAll(b);
+        if (temp.size() == 0) return "";
+        StringBuffer buffer = new StringBuffer();
+        Iterator it = temp.iterator();
+        while (it.hasNext()) {
+            if (buffer.length() != 0) buffer.append(", ");
+            buffer.append(it.next().toString());
+        }
+        return buffer.toString();
+    }
+    
+    void error(String msg) {
+        throw new IllegalArgumentException(msg
+        + "\r\n" + t.toString());
+    }
+ 
+    private boolean addRule() {
+        int type = t.next();
+        if (type == Tokenizer.DONE) return false;
+        if (type != Tokenizer.STRING) error("missing weight");
+        String s = t.getString();
+        if (s.length() == 0 || s.charAt(0) != '$') error("missing $ in variable");
+        if (t.next() != '=') error("missing =");
+        int startBody = t.index;
+        Pick rule = getAlternation();
+        if (rule == null) error("missing expression");
+        t.addSymbol(s, t.getSource(), startBody, t.index);
+        if (t.next() != ';') error("missing ;");       
+        return addPick(s, rule);
+    }
+
+    protected boolean addPick(String s, Pick rule) {
+        Object temp = map.get(s);
+        if (temp != null) error("duplicate variable");
+        if (rule.name == null) rule.name(s);
+        map.put(s, rule);
+        return true;
+    }
+    
+    public BNF addSet(String variable, UnicodeSet set) {
+        if (set != null) {
+            String body = set.toString();
+            t.addSymbol(variable, body, 0, body.length());        
+            addPick(variable, Pick.codePoint(set));
+        }
+        return this;
+    }
+    
+    int maxRepeat = 99;
+    
+    Pick qualify(Pick item) {
+        int[] weights;
+        int type = t.next();
+        switch(type) {
+            case '@': 
+                return new Pick.Quote(item);
+            case '~': 
+                return new Pick.Morph(item);
+            case '?': 
+                int weight = getWeight();
+                if (weight == NO_WEIGHT) weight = 50;
+                weights = new int[] {100-weight, weight};
+                return Pick.repeat(0, 1, weights, item);
+            case '*': 
+                weights = getWeights();
+                return Pick.repeat(1, maxRepeat, weights, item);
+            case '+': 
+                weights = getWeights();
+                return Pick.repeat(1, maxRepeat, weights, item);
+            case '{':
+                if (t.next() != Tokenizer.NUMBER) error("missing number");
+                int start = (int) t.getNumber();
+                int end = start;
+                type = t.next();
+                if (type == ',') {
+                    end = maxRepeat;
+                    type = t.next();
+                    if (type == Tokenizer.NUMBER) {
+                        end = (int)t.getNumber();
+                        type = t.next();
+                    }
+                }
+                if (type != '}') error("missing }");
+                weights = getWeights();
+                return Pick.repeat(start, end, weights, item);
+        }
+        t.backup();
+        return item;
+    }
+    
+    Pick getCore() {
+        int token = t.next();
+        if (token == Tokenizer.STRING) {
+            String s = t.getString();
+            if (s.charAt(0) == '$') variables.add(s);
+            return Pick.string(s);
+        }
+        if (token == Tokenizer.UNICODESET) {
+            return Pick.codePoint(t.getUnicodeSet());            
+        }
+        if (token != '(') {
+            t.backup();
+            return null;
+        }
+        Pick temp = getAlternation();
+        token = t.next();
+        if (token != ')') error("missing )");    
+        return temp;    
+    }
+    
+    Pick getSequence() {
+        Pick.Sequence result = null;
+        Pick last = null;
+        while (true) {
+            Pick item = getCore();
+            if (item == null) {
+                if (result != null) return result;
+                if (last != null) return last;
+                error("missing item");
+            }
+            // qualify it as many times as possible
+            Pick oldItem;
+            do {
+                oldItem = item;
+                item = qualify(item);
+            } while (item != oldItem);
+            // add it in
+            if (last == null) {
+                last = item;
+            } else {
+                if (result == null) result = Pick.makeSequence().and2(last);            
+                result = result.and2(item);
+            }
+        }
+    }
+    
+    // for simplicity, we just use recursive descent
+    Pick getAlternation() {
+        Pick.Alternation result = null;
+        Pick last = null;
+        int lastWeight = NO_WEIGHT;
+        while (true) {
+            Pick temp = getSequence();
+            if (temp == null) error("empty alternation");
+            int weight = getWeight();
+            if (weight == NO_WEIGHT) weight = 1;
+            if (last == null) {
+                last = temp;
+                lastWeight = weight;
+            } else {
+                if (result == null) result = Pick.makeAlternation().or2(lastWeight, last);
+                result = result.or2(weight, temp);   
+            }
+            int token = t.next();
+            if (token != '|') {
+                t.backup();
+                if (result != null) return result;
+                if (last != null) return last;
+            }
+        }        
+    }
+    
+    private static final int NO_WEIGHT = Integer.MIN_VALUE;
+    
+    int getWeight() {       
+        int weight;
+        int token = t.next();
+        if (token != Tokenizer.NUMBER) {
+            t.backup();
+            return NO_WEIGHT;
+        }
+        weight = (int)t.getNumber();
+        token = t.next();
+        if (token != '%') error("missing %");
+        return weight;
+    }
+    
+    int[] getWeights() {
+        ArrayList list = new ArrayList();
+        while (true) {
+            int weight = getWeight();
+            if (weight == NO_WEIGHT) break;
+            list.add(new Integer(weight));
+        }
+        if (list.size() == 0) return null;
+        int[] result = new int[list.size()];
+        for (int i = 0; i < list.size(); ++i) {
+            result[i] = ((Integer)list.get(i)).intValue();
+        }
+        return result;
+    }
+
+    public int getMaxRepeat() {
+      return maxRepeat;
+    }
+
+    public BNF setMaxRepeat(int maxRepeat) {
+      this.maxRepeat = maxRepeat;
+      return this;
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/BagFormatter.java b/src/com/ibm/icu/dev/test/util/BagFormatter.java
new file mode 100644
index 0000000..9296e99
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/BagFormatter.java
@@ -0,0 +1,1152 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.MessageFormat;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+public class BagFormatter {
+    static final boolean DEBUG = false;
+    public static final boolean SHOW_FILES;
+    static {
+    boolean showFiles = false;
+    try {
+        showFiles = System.getProperty("SHOW_FILES") != null;
+    }
+    catch (SecurityException e) {
+    }
+    SHOW_FILES = showFiles;
+    }
+
+    public static final PrintWriter CONSOLE = new PrintWriter(System.out,true);
+
+    private static PrintWriter log = CONSOLE;
+
+    private boolean abbreviated = false;
+    private String separator = ",";
+    private String prefix = "[";
+    private String suffix = "]";
+    private UnicodeProperty.Factory source;
+    private UnicodeLabel nameSource;
+    private UnicodeLabel labelSource;
+    private UnicodeLabel rangeBreakSource;
+    private UnicodeLabel valueSource;
+    private String propName = "";
+    private boolean showCount = true;
+    //private boolean suppressReserved = true;
+    private boolean hexValue = false;
+    private static final String NULL_VALUE = "_NULL_VALUE_";
+    private int fullTotal = -1;
+    private boolean showTotal = true;
+    private String lineSeparator = "\r\n";
+    private Tabber tabber = new Tabber.MonoTabber();
+
+    /**
+     * Compare two UnicodeSets, and show the differences
+     * @param name1 name of first set to be compared
+     * @param set1 first set
+     * @param name2 name of second set to be compared
+     * @param set2 second set
+     * @return formatted string
+     */
+    public String showSetDifferences(
+        String name1,
+        UnicodeSet set1,
+        String name2,
+        UnicodeSet set2) {
+
+        StringWriter result = new StringWriter();
+        showSetDifferences(new PrintWriter(result),name1,set1,name2,set2);
+        result.flush();
+        return result.getBuffer().toString();
+    }
+
+    public String showSetDifferences(
+        String name1,
+        Collection set1,
+        String name2,
+        Collection set2) {
+
+        StringWriter result = new StringWriter();
+        showSetDifferences(new PrintWriter(result), name1, set1, name2, set2);
+        result.flush();
+        return result.getBuffer().toString();
+    }
+
+    public void showSetDifferences(
+            PrintWriter pw,
+            String name1,
+            UnicodeSet set1,
+            String name2,
+            UnicodeSet set2) {
+        showSetDifferences(pw, name1, set1, name2, set2, -1);
+    }
+    /**
+     * Compare two UnicodeSets, and show the differences
+     * @param name1 name of first set to be compared
+     * @param set1 first set
+     * @param name2 name of second set to be compared
+     * @param set2 second set
+     */
+    public void showSetDifferences(
+        PrintWriter pw,
+        String name1,
+        UnicodeSet set1,
+        String name2,
+        UnicodeSet set2,
+        int flags) 
+    {
+        if (pw == null) pw = CONSOLE;
+        String[] names = { name1, name2 };
+
+        UnicodeSet temp;
+        
+        if ((flags&1) != 0) {
+            temp = new UnicodeSet(set1).removeAll(set2);
+            pw.print(lineSeparator);
+            pw.print(inOut.format(names));
+            pw.print(lineSeparator);
+            showSetNames(pw, temp);
+        }
+
+        if ((flags&2) != 0) {
+            temp = new UnicodeSet(set2).removeAll(set1);
+            pw.print(lineSeparator);
+            pw.print(outIn.format(names));
+            pw.print(lineSeparator);
+            showSetNames(pw, temp);
+        }
+
+        if ((flags&4) != 0) {
+            temp = new UnicodeSet(set2).retainAll(set1);
+            pw.print(lineSeparator);
+            pw.print(inIn.format(names));
+            pw.print(lineSeparator);
+            showSetNames(pw, temp);
+        }
+        pw.flush();
+    }
+
+    public void showSetDifferences(
+        PrintWriter pw,
+        String name1,
+        Collection set1,
+        String name2,
+        Collection set2) {
+
+        if (pw == null) pw = CONSOLE;
+        String[] names = { name1, name2 };
+        // damn'd collection doesn't have a clone, so
+        // we go with Set, even though that
+        // may not preserve order and duplicates
+        Collection temp = new HashSet(set1);
+        temp.removeAll(set2);
+        pw.println();
+        pw.println(inOut.format(names));
+        showSetNames(pw, temp);
+
+        temp.clear();
+        temp.addAll(set2);
+        temp.removeAll(set1);
+        pw.println();
+        pw.println(outIn.format(names));
+        showSetNames(pw, temp);
+
+        temp.clear();
+        temp.addAll(set1);
+        temp.retainAll(set2);
+        pw.println();
+        pw.println(inIn.format(names));
+        showSetNames(pw, temp);
+    }
+
+    /**
+     * Returns a list of items in the collection, with each separated by the separator.
+     * Each item must not be null; its toString() is called for a printable representation
+     * @param c source collection
+     * @return a String representation of the list
+     * @internal
+     */
+    public String showSetNames(Object c) {
+        StringWriter buffer = new StringWriter();
+        PrintWriter output = new PrintWriter(buffer);
+        showSetNames(output,c);
+        return buffer.toString();
+    }
+
+    /**
+     * Returns a list of items in the collection, with each separated by the separator.
+     * Each item must not be null; its toString() is called for a printable representation
+     * @param output destination to which to write names
+     * @param c source collection
+     * @internal
+     */
+    public void showSetNames(PrintWriter output, Object c) {
+        mainVisitor.doAt(c, output);
+        output.flush();
+    }
+
+    /**
+     * Returns a list of items in the collection, with each separated by the separator.
+     * Each item must not be null; its toString() is called for a printable representation
+     * @param filename destination to which to write names
+     * @param c source collection
+     * @internal
+     */
+    public void showSetNames(String filename, Object c) throws IOException {
+        PrintWriter pw = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename),"utf-8"));
+        showSetNames(log,c);
+        pw.close();
+    }
+
+    public String getAbbreviatedName(
+        String src,
+        String pattern,
+        String substitute) {
+
+        int matchEnd = NameIterator.findMatchingEnd(src, pattern);
+        int sdiv = src.length() - matchEnd;
+        int pdiv = pattern.length() - matchEnd;
+        StringBuffer result = new StringBuffer();
+        addMatching(
+            src.substring(0, sdiv),
+            pattern.substring(0, pdiv),
+            substitute,
+            result);
+        addMatching(
+            src.substring(sdiv),
+            pattern.substring(pdiv),
+            substitute,
+            result);
+        return result.toString();
+    }
+
+    abstract public static class Relation {
+        abstract public String getRelation(String a, String b);
+    }
+
+    static class NullRelation extends Relation {
+        public String getRelation(String a, String b) { return ""; }
+    }
+
+    private Relation r = new NullRelation();
+
+    public BagFormatter setRelation(Relation r) {
+        this.r = r;
+        return this; // for chaining
+    }
+
+    public Relation getRelation() {
+        return r;
+    }
+
+    /*
+     r.getRelati on(last, s) + quote(s) + "\t#" + UnicodeSetFormatter.getResolvedName(s)
+    */
+    /*
+    static final UnicodeSet NO_NAME =
+        new UnicodeSet("[\\u0080\\u0081\\u0084\\u0099\\p{Cn}\\p{Co}]");
+    static final UnicodeSet HAS_NAME = new UnicodeSet(NO_NAME).complement();
+    static final UnicodeSet NAME_CHARACTERS =
+        new UnicodeSet("[A-Za-z0-9\\<\\>\\-\\ ]");
+
+    public UnicodeSet getSetForName(String namePattern) {
+        UnicodeSet result = new UnicodeSet();
+        Matcher m = Pattern.compile(namePattern).matcher("");
+        // check for no-name items, and add in bulk
+        m.reset("<no name>");
+        if (m.matches()) {
+            result.addAll(NO_NAME);
+        }
+        // check all others
+        UnicodeSetIterator usi = new UnicodeSetIterator(HAS_NAME);
+        while (usi.next()) {
+            String name = getName(usi.codepoint);
+            if (name == null)
+                continue;
+            m.reset(name);
+            if (m.matches()) {
+                result.add(usi.codepoint);
+            }
+        }
+        // Note: if Regex had some API so that if we could tell that
+        // an initial substring couldn't match, e.g. "CJK IDEOGRAPH-"
+        // then we could optimize by skipping whole swathes of characters
+        return result;
+    }
+    */
+
+    public BagFormatter setMergeRanges(boolean in) {
+        mergeRanges = in;
+        return this;
+    }
+    public BagFormatter setShowSetAlso(boolean b) {
+        showSetAlso = b;
+        return this;
+    }
+
+    public String getName(int codePoint) {
+        return getName("", codePoint, codePoint);
+    }
+
+    public String getName(String sep, int start, int end) {
+        if (getNameSource() == null || getNameSource() == UnicodeLabel.NULL) return "";
+        String result = getName(start, false);
+        if (start == end) return sep + result;
+        String endString = getName(end, false);
+        if (result.length() == 0 && endString.length() == 0) return sep;
+        if (abbreviated) endString = getAbbreviatedName(endString,result,"~");
+        return sep + result + ".." + endString;
+    }
+
+    public String getName(String s) {
+        return getName(s, false);
+    }
+
+    public static class NameLabel extends UnicodeLabel {
+        UnicodeProperty nameProp;
+        UnicodeSet control;
+        UnicodeSet private_use;
+        UnicodeSet noncharacter;
+        UnicodeSet surrogate;
+
+        public NameLabel(UnicodeProperty.Factory source) {
+            nameProp = source.getProperty("Name");
+            control = source.getSet("gc=Cc");
+            private_use = source.getSet("gc=Co");
+            surrogate = source.getSet("gc=Cs");
+            noncharacter = source.getSet("noncharactercodepoint=yes");
+        }
+
+        public String getValue(int codePoint, boolean isShort) {
+            String hcp = !isShort
+                ? "U+" + Utility.hex(codePoint, 4) + " "
+                : "";
+            String result = nameProp.getValue(codePoint);
+            if (result != null)
+                return hcp + result;
+            if (control.contains(codePoint)) {
+                return "<control-" + Utility.hex(codePoint, 4) + ">";
+            }
+            if (private_use.contains(codePoint)) {
+                return "<private-use-" + Utility.hex(codePoint, 4) + ">";
+            }
+            if (surrogate.contains(codePoint)) {
+                return "<surrogate-" + Utility.hex(codePoint, 4) + ">";
+            }
+            if (noncharacter.contains(codePoint)) {
+                return "<noncharacter-" + Utility.hex(codePoint, 4) + ">";
+            }
+            //if (suppressReserved) return "";
+            return hcp + "<reserved-" + Utility.hex(codePoint, 4) + ">";
+        }
+
+    }
+
+    // refactored
+    public String getName(int codePoint, boolean withCodePoint) {
+        String result = getNameSource().getValue(codePoint, !withCodePoint);
+        return fixName == null ? result : fixName.transliterate(result);
+    }
+
+    public String getName(String s, boolean withCodePoint) {
+           String result = getNameSource().getValue(s, separator, !withCodePoint);
+        return fixName == null ? result : fixName.transliterate(result);
+     }
+
+    public String hex(String s) {
+        return hex(s,separator);
+    }
+
+    public String hex(String s, String sep) {
+        return UnicodeLabel.HEX.getValue(s, sep, true);
+    }
+
+    public String hex(int start, int end) {
+        String s = Utility.hex(start,4);
+        if (start == end) return s;
+        return s + ".." + Utility.hex(end,4);
+    }
+
+    public BagFormatter setUnicodePropertyFactory(UnicodeProperty.Factory source) {
+        this.source = source;
+        return this;
+    }
+
+    public UnicodeProperty.Factory getUnicodePropertyFactory() {
+        if (source == null) source = ICUPropertyFactory.make();
+        return source;
+    }
+
+    public BagFormatter () {
+    }
+
+    public BagFormatter (UnicodeProperty.Factory source) {
+        setUnicodePropertyFactory(source);
+    }
+
+    public String join(Object o) {
+        return labelVisitor.join(o);
+    }
+
+    // ===== PRIVATES =====
+
+    private Join labelVisitor = new Join();
+
+    private boolean mergeRanges = true;
+    private Transliterator showLiteral = null;
+    private Transliterator fixName = null;
+    private boolean showSetAlso = false;
+
+    private RangeFinder rf = new RangeFinder();
+
+    private MessageFormat inOut = new MessageFormat("In {0}, but not in {1}:");
+    private MessageFormat outIn = new MessageFormat("Not in {0}, but in {1}:");
+    private MessageFormat inIn = new MessageFormat("In both {0}, and in {1}:");
+
+    private MyVisitor mainVisitor = new MyVisitor();
+
+    /*
+    private String getLabels(int start, int end) {
+        Set names = new TreeSet();
+        for (int cp = start; cp <= end; ++cp) {
+            names.add(getLabel(cp));
+        }
+        return labelVisitor.join(names);
+    }
+    */
+
+    private void addMatching(
+        String src,
+        String pattern,
+        String substitute,
+        StringBuffer result) {
+        NameIterator n1 = new NameIterator(src);
+        NameIterator n2 = new NameIterator(pattern);
+        boolean first = true;
+        while (true) {
+            String s1 = n1.next();
+            if (s1 == null)
+                break;
+            String s2 = n2.next();
+            if (!first)
+                result.append(" ");
+            first = false;
+            if (s1.equals(s2))
+                result.append(substitute);
+            else
+                result.append(s1);
+        }
+    }
+
+    private static NumberFormat nf =
+        NumberFormat.getIntegerInstance(Locale.ENGLISH);
+    static {
+        nf.setGroupingUsed(false);
+    }
+
+    private class MyVisitor extends Visitor {
+        private PrintWriter output;
+        String commentSeparator;
+        int counter;
+        int valueSize;
+        int labelSize;
+        boolean isHtml;
+        boolean inTable = false;
+        
+        public void toOutput(String s) {
+          if (isHtml) {
+            if (inTable) {
+              output.print("</table>");
+              inTable = false;
+            }
+            output.print("<p>");
+          }
+          output.print(s);
+          if (isHtml)
+            output.println("</p>");
+          else
+            output.print(lineSeparator);
+        }
+        
+        public void toTable(String s) {
+          if (isHtml && !inTable) {
+            output.print("<table>");
+            inTable = true;
+          }
+          output.print(tabber.process(s) +  lineSeparator);
+        }
+
+        public void doAt(Object c, PrintWriter out) {
+            output = out;
+            isHtml = tabber instanceof Tabber.HTMLTabber;
+            counter = 0;
+            
+            tabber.clear();
+            // old:
+            // 0009..000D    ; White_Space # Cc   [5] <control-0009>..<control-000D>
+            // new
+            // 0009..000D    ; White_Space #Cc  [5] <control>..<control>
+            tabber.add(mergeRanges ? 14 : 6,Tabber.LEFT);
+
+            if (propName.length() > 0) {
+                tabber.add(propName.length() + 2,Tabber.LEFT);
+            }
+
+            valueSize = getValueSource().getMaxWidth(shortValue);
+            if (DEBUG) System.out.println("ValueSize: " + valueSize);
+            if (valueSize > 0) {
+                tabber.add(valueSize + 2,Tabber.LEFT); // value
+            }
+
+            tabber.add(3,Tabber.LEFT); // comment character
+
+            labelSize = getLabelSource(true).getMaxWidth(shortLabel);
+            if (labelSize > 0) {
+                tabber.add(labelSize + 1,Tabber.LEFT); // value
+            }
+
+            if (mergeRanges && showCount) {
+                tabber.add(5,Tabber.RIGHT);
+            }
+
+            if (showLiteral != null) {
+                tabber.add(4,Tabber.LEFT);
+            }
+            //myTabber.add(7,Tabber.LEFT);
+
+            commentSeparator = (showCount || showLiteral != null
+              || getLabelSource(true) != UnicodeLabel.NULL
+              || getNameSource() != UnicodeLabel.NULL)
+            ? "\t #" : "";
+
+            if (DEBUG) System.out.println("Tabber: " + tabber.toString());
+            if (DEBUG) System.out.println("Tabber: " + tabber.process(
+                    "200C..200D\t; White_Space\t #\tCf\t [2]\t ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER"));
+            doAt(c);
+        }
+
+        public String format(Object o) {
+            StringWriter sw = new StringWriter();
+            PrintWriter pw = new PrintWriter(sw);
+            doAt(o);
+            pw.flush();
+            String result = sw.getBuffer().toString();
+            pw.close();
+            return result;
+        }
+
+        protected void doBefore(Object container, Object o) {
+            if (showSetAlso && container instanceof UnicodeSet) {
+              toOutput("#" + container);
+            }
+        }
+
+        protected void doBetween(Object container, Object lastItem, Object nextItem) {
+        }
+
+        protected void doAfter(Object container, Object o) {
+            if (fullTotal != -1 && fullTotal != counter) {
+                if (showTotal) {
+                    toOutput("");
+                    toOutput("# The above property value applies to " + nf.format(fullTotal-counter) + " code points not listed here.");
+                    toOutput("# Total code points: " + nf.format(fullTotal));
+                }
+                fullTotal = -1;
+            } else if (showTotal) {
+                toOutput("");
+                toOutput("# Total code points: " + nf.format(counter));
+            }
+        }
+
+        protected void doSimpleAt(Object o) {
+            if (o instanceof Map.Entry) {
+                Map.Entry oo = (Map.Entry)o;
+                Object key = oo.getKey();
+                Object value = oo.getValue();
+                doBefore(o, key);
+                doAt(key);
+                output.println("\u2192");
+                doAt(value);
+                doAfter(o, value);
+                counter++;
+            } else if (o instanceof Visitor.CodePointRange) {
+                doAt((Visitor.CodePointRange) o);
+            } else {
+                String thing = o.toString();
+                String value = getValueSource() == UnicodeLabel.NULL ? "" : getValueSource().getValue(thing, ",", true);
+                if (getValueSource() != UnicodeLabel.NULL) value = "\t; " + value;
+                String label = getLabelSource(true) == UnicodeLabel.NULL ? "" : getLabelSource(true).getValue(thing, ",", true);
+                if (label.length() != 0) label = " " + label;
+                toTable(
+                    hex(thing)
+                    + value
+                    + commentSeparator
+                    + label
+                    + insertLiteral(thing)
+                    + "\t"
+                    + getName(thing));
+                counter++;
+            }
+        }
+
+        protected void doAt(Visitor.CodePointRange usi) {
+            if (!mergeRanges) {
+                for (int cp = usi.codepoint; cp <= usi.codepointEnd; ++cp) {
+                    showLine(cp, cp);
+                }
+            } else {
+                rf.reset(usi.codepoint, usi.codepointEnd + 1);
+                while (rf.next()) {
+                    showLine(rf.start, rf.limit - 1);
+                }
+            }
+        }
+
+        private void showLine(int start, int end) {
+            String label = getLabelSource(true).getValue(start, shortLabel);
+            String value = getValue(start, shortValue);
+            if (value == NULL_VALUE) return;
+
+            counter += end - start + 1;
+            String pn = propName;
+            if (pn.length() != 0) {
+                pn = "\t; " + pn;
+            }
+            if (valueSize > 0) {
+                value = "\t; " + value;
+            } else if (value.length() > 0) {
+                throw new IllegalArgumentException("maxwidth bogus " + value + "," + getValueSource().getMaxWidth(shortValue));
+            }
+            if (labelSize > 0) {
+                label = "\t" + label;
+            } else if (label.length() > 0) {
+                throw new IllegalArgumentException("maxwidth bogus " + label + ", " + getLabelSource(true).getMaxWidth(shortLabel));
+            }
+
+            String count = "";
+            if (mergeRanges && showCount) {
+                if (end == start) count = "\t";
+                else count = "\t ["+ nf.format(end - start + 1)+ "]";
+           }
+
+            toTable(
+                hex(start, end)
+                + pn
+                + value
+                + commentSeparator
+                + label
+                + count
+                + insertLiteral(start, end)
+                + getName("\t ", start, end));
+        }
+
+        private String insertLiteral(String thing) {
+            return (showLiteral == null ? ""
+                :  " \t(" + showLiteral.transliterate(thing) + ") ");
+        }
+
+        private String insertLiteral(int start, int end) {
+            return (showLiteral == null ? "" :
+                " \t(" + showLiteral.transliterate(UTF16.valueOf(start))
+                        + ((start != end)
+                            ? (".." + showLiteral.transliterate(UTF16.valueOf(end)))
+                            : "")
+                + ") ");
+        }
+        /*
+        private String insertLiteral(int cp) {
+            return (showLiteral == null ? ""
+                :  " \t(" + showLiteral.transliterate(UTF16.valueOf(cp)) + ") ");
+        }
+        */
+    }
+
+    /**
+     * Iterate through a string, breaking at words.
+     * @author Davis
+     */
+    private static class NameIterator {
+        String source;
+        int position;
+        int start;
+        int limit;
+
+        NameIterator(String source) {
+            this.source = source;
+            this.start = 0;
+            this.limit = source.length();
+        }
+        /**
+         * Find next word, including trailing spaces
+         * @return the next word
+         */
+        String next() {
+            if (position >= limit)
+                return null;
+            int pos = source.indexOf(' ', position);
+            if (pos < 0 || pos >= limit)
+                pos = limit;
+            String result = source.substring(position, pos);
+            position = pos + 1;
+            return result;
+        }
+
+        static int findMatchingEnd(String s1, String s2) {
+            int i = s1.length();
+            int j = s2.length();
+            try {
+                while (true) {
+                    --i; // decrement both before calling function!
+                    --j;
+                    if (s1.charAt(i) != s2.charAt(j))
+                        break;
+                }
+            } catch (Exception e) {} // run off start
+
+            ++i; // counteract increment
+            i = s1.indexOf(' ', i); // move forward to space
+            if (i < 0)
+                return 0;
+            return s1.length() - i;
+        }
+    }
+
+    private class RangeFinder {
+        int start, limit;
+        private int veryLimit;
+        //String label, value;
+        void reset(int rangeStart, int rangeLimit) {
+            limit = rangeStart;
+            veryLimit = rangeLimit;
+        }
+        boolean next() {
+            if (limit >= veryLimit)
+                return false;
+            start = limit; // set to end of last
+            String label = getLabelSource(false).getValue(limit, true);
+            String value = getValue(limit, true);
+            String breaker = getRangeBreakSource().getValue(limit,true);
+            if (DEBUG && limit < 0x7F) System.out.println("Label: " + label + ", Value: " + value + ", Break: " + breaker);
+            limit++;
+            for (; limit < veryLimit; limit++) {
+                String s = getLabelSource(false).getValue(limit, true);
+                String v = getValue(limit, true);
+                String b = getRangeBreakSource().getValue(limit, true);
+                if (DEBUG && limit < 0x7F) System.out.println("*Label: " + label + ", Value: " + value + ", Break: " + breaker);
+                if (!equalTo(s, label) || !equalTo(v, value) || !equalTo(b, breaker)) break;
+            }
+            // at this point, limit is the first item that has a different label than source
+            // OR, we got to the end, and limit == veryLimit
+            return true;
+        }
+    }
+
+    boolean equalTo(Object a, Object b) {
+        if (a == b) return true;
+        if (a == null) return false;
+        return a.equals(b);
+    }
+
+    boolean shortLabel = true;
+    boolean shortValue = true;
+
+    public String getPrefix() {
+        return prefix;
+    }
+
+    public String getSuffix() {
+        return suffix;
+    }
+
+    public BagFormatter setPrefix(String string) {
+        prefix = string;
+        return this;
+    }
+
+    public BagFormatter setSuffix(String string) {
+        suffix = string;
+        return this;
+    }
+
+    public boolean isAbbreviated() {
+        return abbreviated;
+    }
+
+    public BagFormatter setAbbreviated(boolean b) {
+        abbreviated = b;
+        return this;
+    }
+
+    public UnicodeLabel getLabelSource(boolean visible) {
+        if (labelSource == null) {
+            Map labelMap = new HashMap();
+            //labelMap.put("Lo","L&");
+            labelMap.put("Lu","L&");
+            labelMap.put("Lt","L&");
+            labelMap.put("Ll","L&");
+            labelSource = new UnicodeProperty.FilteredProperty(
+                getUnicodePropertyFactory().getProperty("General_Category"),
+                new UnicodeProperty.MapFilter(labelMap)
+            ).setAllowValueAliasCollisions(true);
+        }
+        return labelSource;
+    }
+
+    /**
+     * @deprecated
+     */
+    public static void addAll(UnicodeSet source, Collection target) {
+        source.addAllTo(target);
+    }
+
+    // UTILITIES
+
+    public static final Transliterator hex = Transliterator.getInstance(
+        "[^\\u0009\\u0020-\\u007E\\u00A0-\\u00FF] hex");
+
+    public static BufferedReader openUTF8Reader(String dir, String filename) throws IOException {
+        return openReader(dir,filename,"UTF-8");
+    }
+
+    public static BufferedReader openReader(String dir, String filename, String encoding) throws IOException {
+        File file = new File(dir + filename);
+        if (SHOW_FILES && log != null) {
+            log.println("Opening File: "
+                + file.getCanonicalPath());
+        }
+        return new BufferedReader(
+            new InputStreamReader(
+                new FileInputStream(file),
+                encoding),
+            4*1024);
+    }
+
+    public static PrintWriter openUTF8Writer(String dir, String filename) throws IOException {
+        return openWriter(dir,filename,"UTF-8");
+    }
+
+    public static PrintWriter openWriter(String dir, String filename, String encoding) throws IOException {
+        File file = new File(dir + filename);
+        if (SHOW_FILES && log != null) {
+            log.println("Creating File: "
+                + file.getCanonicalPath());
+        }
+        String parentName = file.getParent();
+        if (parentName != null) {
+            File parent = new File(parentName);
+            parent.mkdirs();
+        }
+        return new PrintWriter(
+            new BufferedWriter(
+                new OutputStreamWriter(
+                    new FileOutputStream(file),
+                    encoding),
+                4*1024));
+    }
+    public static PrintWriter getLog() {
+        return log;
+    }
+    public BagFormatter setLog(PrintWriter writer) {
+        log = writer;
+        return this;
+    }
+    public String getSeparator() {
+        return separator;
+    }
+    public BagFormatter setSeparator(String string) {
+        separator = string;
+        return this;
+    }
+    public Transliterator getShowLiteral() {
+        return showLiteral;
+    }
+    public BagFormatter setShowLiteral(Transliterator transliterator) {
+        showLiteral = transliterator;
+        return this;
+    }
+
+    // ===== CONVENIENCES =====
+    private class Join extends Visitor {
+        StringBuffer output = new StringBuffer();
+        int depth = 0;
+        String join (Object o) {
+            output.setLength(0);
+            doAt(o);
+            return output.toString();
+        }
+        protected void doBefore(Object container, Object item) {
+            ++depth;
+            output.append(prefix);
+        }
+        protected void doAfter(Object container, Object item) {
+            output.append(suffix);
+            --depth;
+        }
+        protected void doBetween(Object container, Object lastItem, Object nextItem) {
+            output.append(separator);
+        }
+        protected void doSimpleAt(Object o) {
+            if (o != null) output.append(o.toString());
+        }
+    }
+
+    /**
+     * @param label
+     */
+    public BagFormatter setLabelSource(UnicodeLabel label) {
+        if (label == null) label = UnicodeLabel.NULL;
+        labelSource = label;
+        return this;
+    }
+
+    /**
+     * @return the NameLable representing the source
+     */
+    public UnicodeLabel getNameSource() {
+        if (nameSource == null) {
+            nameSource = new NameLabel(getUnicodePropertyFactory());
+        }
+        return nameSource;
+    }
+
+    /**
+     * @param label
+     */
+    public BagFormatter setNameSource(UnicodeLabel label) {
+        if (label == null) label = UnicodeLabel.NULL;
+        nameSource = label;
+        return this;
+    }
+
+    /**
+     * @return the UnicodeLabel representing the value
+     */
+    public UnicodeLabel getValueSource() {
+        if (valueSource == null) valueSource = UnicodeLabel.NULL;
+        return valueSource;
+    }
+
+    private String getValue(int cp, boolean shortVal) {
+        String result = getValueSource().getValue(cp, shortVal);
+        if (result == null) return NULL_VALUE;
+        if (hexValue) result = hex(result, " ");
+        return result;
+    }
+
+    /**
+     * @param label
+     */
+    public BagFormatter setValueSource(UnicodeLabel label) {
+        if (label == null) label = UnicodeLabel.NULL;
+        valueSource = label;
+        return this;
+    }
+
+    public BagFormatter setValueSource(String label) {
+        return setValueSource(new UnicodeLabel.Constant(label));
+    }
+
+    /**
+     * @return true if showCount is true
+     */
+    public boolean isShowCount() {
+        return showCount;
+    }
+
+    /**
+     * @param b true to show the count
+     * @return this (for chaining)
+     */
+    public BagFormatter setShowCount(boolean b) {
+        showCount = b;
+        return this;
+    }
+
+    /**
+     * @return the property name
+     */
+    public String getPropName() {
+        return propName;
+    }
+
+    /**
+     * @param string
+     * @return this (for chaining)
+     */
+    public BagFormatter setPropName(String string) {
+        if (string == null) string = "";
+        propName = string;
+        return this;
+    }
+
+    /**
+     * @return true if this is a hexValue
+     */
+    public boolean isHexValue() {
+        return hexValue;
+    }
+
+    /**
+     * @param b
+     * @return this (for chaining)
+     */
+    public BagFormatter setHexValue(boolean b) {
+        hexValue = b;
+        return this;
+    }
+
+    /**
+     * @return the full total
+     */
+    public int getFullTotal() {
+        return fullTotal;
+    }
+
+    /**
+     * @param i set the full total
+     * @return this (for chaining)
+     */
+    public BagFormatter setFullTotal(int i) {
+        fullTotal = i;
+        return this;
+    }
+
+    /**
+     * @return the line separator
+     */
+    public String getLineSeparator() {
+        return lineSeparator;
+    }
+
+    /**
+     * @param string
+     * @return this (for chaining)
+     */
+    public BagFormatter setLineSeparator(String string) {
+        lineSeparator = string;
+        return this;
+    }
+
+    /**
+     * @return the UnicodeLabel representing the range break source
+     */
+    public UnicodeLabel getRangeBreakSource() {
+        if (rangeBreakSource == null) {
+            Map labelMap = new HashMap();
+            // reflects the code point types on p 25
+            labelMap.put("Lo", "G&");
+            labelMap.put("Lm", "G&");
+            labelMap.put("Lu", "G&");
+            labelMap.put("Lt", "G&");
+            labelMap.put("Ll", "G&");
+            labelMap.put("Mn", "G&");
+            labelMap.put("Me", "G&");
+            labelMap.put("Mc", "G&");
+            labelMap.put("Nd", "G&");
+            labelMap.put("Nl", "G&");
+            labelMap.put("No", "G&");
+            labelMap.put("Zs", "G&");
+            labelMap.put("Pd", "G&");
+            labelMap.put("Ps", "G&");
+            labelMap.put("Pe", "G&");
+            labelMap.put("Pc", "G&");
+            labelMap.put("Po", "G&");
+            labelMap.put("Pi", "G&");
+            labelMap.put("Pf", "G&");
+            labelMap.put("Sm", "G&");
+            labelMap.put("Sc", "G&");
+            labelMap.put("Sk", "G&");
+            labelMap.put("So", "G&");
+
+            labelMap.put("Zl", "Cf");
+            labelMap.put("Zp", "Cf");
+
+            rangeBreakSource =
+                new UnicodeProperty
+                    .FilteredProperty(
+                        getUnicodePropertyFactory().getProperty(
+                            "General_Category"),
+                        new UnicodeProperty.MapFilter(labelMap))
+                    .setAllowValueAliasCollisions(true);
+
+            /*
+            "Cn", // = Other, Not Assigned 0
+            "Cc", // = Other, Control 15
+            "Cf", // = Other, Format 16
+            UnicodeProperty.UNUSED, // missing
+            "Co", // = Other, Private Use 18
+            "Cs", // = Other, Surrogate 19
+            */
+        }
+        return rangeBreakSource;
+    }
+
+    /**
+     * @param label
+     */
+    public BagFormatter setRangeBreakSource(UnicodeLabel label) {
+        if (label == null) label = UnicodeLabel.NULL;
+        rangeBreakSource = label;
+        return this;
+    }
+
+    /**
+     * @return Returns the fixName.
+     */
+    public Transliterator getFixName() {
+        return fixName;
+    }
+    /**
+     * @param fixName The fixName to set.
+     */
+    public void setFixName(Transliterator fixName) {
+        this.fixName = fixName;
+    }
+
+    public Tabber getTabber() {
+        return tabber;
+    }
+
+    public void setTabber(Tabber tabber) {
+        this.tabber = tabber;
+    }
+
+    public boolean isShowTotal() {
+        return showTotal;
+    }
+
+    public void setShowTotal(boolean showTotal) {
+        this.showTotal = showTotal;
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java b/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java
new file mode 100644
index 0000000..c1a25ba
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java
@@ -0,0 +1,58 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.util.Calendar;
+
+/**
+ * @author srl
+ *
+ */
+public class CalendarFieldsSet extends FieldsSet {
+
+    /**
+     * @param whichEnum
+     * @param fieldsCount
+     */
+    public CalendarFieldsSet() {
+        super(DebugUtilitiesData.UCalendarDateFields,-1);
+    }
+    
+    public boolean  matches(Calendar cal, CalendarFieldsSet diffSet) {
+        boolean match = true;
+        for(int i=0;i<fieldCount();i++) {
+            if(isSet(i)) {
+                int calVal = cal.get(i);
+                if(calVal != get(i)) {
+                    match = false;
+                    diffSet.set(i, calVal);
+                }
+            }
+        }
+        return match;
+    }
+
+    /**
+     * set the specified fields on this calendar. Doesn't clear first. Returns any errors the cale 
+     */
+    public void setOnCalendar(Calendar cal) {
+        for(int i=0;i<fieldCount();i++) {
+            if(isSet(i)) {
+                cal.set(i, get(i));
+            }
+        }
+    }
+
+    protected void handleParseValue(FieldsSet inheritFrom, int field, String substr) {
+        if(field == Calendar.MONTH) {
+            parseValueEnum(DebugUtilitiesData.UCalendarMonths, inheritFrom, field, substr);
+            // will fallback to default.
+        } else {
+            parseValueDefault(inheritFrom, field, substr);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/CaseIterator.java b/src/com/ibm/icu/dev/test/util/CaseIterator.java
new file mode 100644
index 0000000..991b463
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CaseIterator.java
@@ -0,0 +1,556 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+// copied from the Transliterator demo
+
+package com.ibm.icu.dev.test.util;
+import java.util.*;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * Incrementally returns the set of all strings that case-fold to the same value.
+ */
+public class CaseIterator {
+    
+    // testing stuff
+    private static Transliterator toName = Transliterator.getInstance("[:^ascii:] Any-Name");
+    private static Transliterator toHex = Transliterator.getInstance("[:^ascii:] Any-Hex");
+    private static Transliterator toHex2 = Transliterator.getInstance("[[^\u0021-\u007F]-[,]] Any-Hex");
+    
+    // global tables (could be precompiled)
+    private static Map fromCaseFold = new HashMap();
+    private static Map toCaseFold = new HashMap();
+    private static int maxLength = 0;
+    
+    // This exception list is generated on the console by turning on the GENERATED flag, 
+    // which MUST be false for normal operation.
+    // Once the list is generated, it is pasted in here.
+    // A bit of a cludge, but this bootstrapping is the easiest way 
+    // to get around certain complications in the data.
+    
+    private static final boolean GENERATE = false;
+
+    private static final boolean DUMP = false;
+    
+    private static String[][] exceptionList = {
+        // a\N{MODIFIER LETTER RIGHT HALF RING}
+        {"a\u02BE","A\u02BE","a\u02BE",},
+        // ff
+        {"ff","FF","Ff","fF","ff",},
+        // ffi
+        {"ffi","FFI","FFi","FfI","Ffi","F\uFB01","fFI","fFi","ffI","ffi","f\uFB01","\uFB00I","\uFB00i",},
+        // ffl
+        {"ffl","FFL","FFl","FfL","Ffl","F\uFB02","fFL","fFl","ffL","ffl","f\uFB02","\uFB00L","\uFB00l",},
+        // fi
+        {"fi","FI","Fi","fI","fi",},
+        // fl
+        {"fl","FL","Fl","fL","fl",},
+        // h\N{COMBINING MACRON BELOW}
+        {"h\u0331","H\u0331","h\u0331",},
+        // i\N{COMBINING DOT ABOVE}
+        {"i\u0307","I\u0307","i\u0307",},
+        // j\N{COMBINING CARON}
+        {"j\u030C","J\u030C","j\u030C",},
+        // ss
+        {"ss","SS","Ss","S\u017F","sS","ss","s\u017F","\u017FS","\u017Fs","\u017F\u017F",},
+        // st
+        {"st","ST","St","sT","st","\u017FT","\u017Ft",},
+        // t\N{COMBINING DIAERESIS}
+        {"t\u0308","T\u0308","t\u0308",},
+        // w\N{COMBINING RING ABOVE}
+        {"w\u030A","W\u030A","w\u030A",},
+        // y\N{COMBINING RING ABOVE}
+        {"y\u030A","Y\u030A","y\u030A",},
+        // \N{MODIFIER LETTER APOSTROPHE}n
+        {"\u02BCn","\u02BCN","\u02BCn",},
+        // \N{GREEK SMALL LETTER ALPHA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AC\u03B9","\u0386\u0345","\u0386\u0399","\u0386\u03B9","\u0386\u1FBE","\u03AC\u0345","\u03AC\u0399","\u03AC\u03B9","\u03AC\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03AE\u03B9","\u0389\u0345","\u0389\u0399","\u0389\u03B9","\u0389\u1FBE","\u03AE\u0345","\u03AE\u0399","\u03AE\u03B9","\u03AE\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B1\u0342","\u0391\u0342","\u03B1\u0342",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u0342\u03B9","\u0391\u0342\u0345","\u0391\u0342\u0399","\u0391\u0342\u03B9","\u0391\u0342\u1FBE",
+            "\u03B1\u0342\u0345","\u03B1\u0342\u0399","\u03B1\u0342\u03B9","\u03B1\u0342\u1FBE","\u1FB6\u0345",
+            "\u1FB6\u0399","\u1FB6\u03B9","\u1FB6\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B1\u03B9","\u0391\u0345","\u0391\u0399","\u0391\u03B9","\u0391\u1FBE","\u03B1\u0345","\u03B1\u0399","\u03B1\u03B9","\u03B1\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B7\u0342","\u0397\u0342","\u03B7\u0342",},
+        // \N{GREEK SMALL LETTER ETA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u0342\u03B9","\u0397\u0342\u0345","\u0397\u0342\u0399","\u0397\u0342\u03B9","\u0397\u0342\u1FBE",
+            "\u03B7\u0342\u0345","\u03B7\u0342\u0399","\u03B7\u0342\u03B9","\u03B7\u0342\u1FBE","\u1FC6\u0345","\u1FC6\u0399",
+            "\u1FC6\u03B9","\u1FC6\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03B7\u03B9","\u0397\u0345","\u0397\u0399","\u0397\u03B9","\u0397\u1FBE","\u03B7\u0345","\u03B7\u0399","\u03B7\u03B9","\u03B7\u1FBE",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03B9\u0308\u0300","\u0345\u0308\u0300","\u0399\u0308\u0300","\u03B9\u0308\u0300","\u1FBE\u0308\u0300",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03B9\u0308\u0301","\u0345\u0308\u0301","\u0399\u0308\u0301","\u03B9\u0308\u0301","\u1FBE\u0308\u0301",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0308\u0342","\u0345\u0308\u0342","\u0399\u0308\u0342","\u03B9\u0308\u0342","\u1FBE\u0308\u0342",},
+        // \N{GREEK SMALL LETTER IOTA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03B9\u0342","\u0345\u0342","\u0399\u0342","\u03B9\u0342","\u1FBE\u0342",},
+        // \N{GREEK SMALL LETTER RHO}\N{COMBINING COMMA ABOVE}
+        {"\u03C1\u0313","\u03A1\u0313","\u03C1\u0313","\u03F1\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0308\u0300","\u03A5\u0308\u0300","\u03C5\u0308\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0308\u0301","\u03A5\u0308\u0301","\u03C5\u0308\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING DIAERESIS}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0308\u0342","\u03A5\u0308\u0342","\u03C5\u0308\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}
+        {"\u03C5\u0313","\u03A5\u0313","\u03C5\u0313",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GRAVE ACCENT}
+        {"\u03C5\u0313\u0300","\u03A5\u0313\u0300","\u03C5\u0313\u0300","\u1F50\u0300",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING ACUTE ACCENT}
+        {"\u03C5\u0313\u0301","\u03A5\u0313\u0301","\u03C5\u0313\u0301","\u1F50\u0301",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING COMMA ABOVE}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0313\u0342","\u03A5\u0313\u0342","\u03C5\u0313\u0342","\u1F50\u0342",},
+        // \N{GREEK SMALL LETTER UPSILON}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C5\u0342","\u03A5\u0342","\u03C5\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}
+        {"\u03C9\u0342","\u03A9\u0342","\u03C9\u0342","\u2126\u0342",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{COMBINING GREEK PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u0342\u03B9","\u03A9\u0342\u0345","\u03A9\u0342\u0399","\u03A9\u0342\u03B9","\u03A9\u0342\u1FBE","\u03C9\u0342\u0345","\u03C9\u0342\u0399","\u03C9\u0342\u03B9","\u03C9\u0342\u1FBE","\u1FF6\u0345",
+            "\u1FF6\u0399","\u1FF6\u03B9","\u1FF6\u1FBE","\u2126\u0342\u0345","\u2126\u0342\u0399","\u2126\u0342\u03B9","\u2126\u0342\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA}\N{GREEK SMALL LETTER IOTA}
+        {"\u03C9\u03B9","\u03A9\u0345","\u03A9\u0399","\u03A9\u03B9","\u03A9\u1FBE","\u03C9\u0345","\u03C9\u0399","\u03C9\u03B9","\u03C9\u1FBE","\u2126\u0345","\u2126\u0399","\u2126\u03B9","\u2126\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH TONOS}\N{GREEK SMALL LETTER IOTA}
+        {"\u03CE\u03B9","\u038F\u0345","\u038F\u0399","\u038F\u03B9","\u038F\u1FBE","\u03CE\u0345","\u03CE\u0399","\u03CE\u03B9","\u03CE\u1FBE",},
+        // \N{ARMENIAN SMALL LETTER ECH}\N{ARMENIAN SMALL LETTER YIWN}
+        {"\u0565\u0582","\u0535\u0552","\u0535\u0582","\u0565\u0552","\u0565\u0582",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER ECH}
+        {"\u0574\u0565","\u0544\u0535","\u0544\u0565","\u0574\u0535","\u0574\u0565",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER INI}
+        {"\u0574\u056B","\u0544\u053B","\u0544\u056B","\u0574\u053B","\u0574\u056B",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER XEH}
+        {"\u0574\u056D","\u0544\u053D","\u0544\u056D","\u0574\u053D","\u0574\u056D",},
+        // \N{ARMENIAN SMALL LETTER MEN}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u0574\u0576","\u0544\u0546","\u0544\u0576","\u0574\u0546","\u0574\u0576",},
+        // \N{ARMENIAN SMALL LETTER VEW}\N{ARMENIAN SMALL LETTER NOW}
+        {"\u057E\u0576","\u054E\u0546","\u054E\u0576","\u057E\u0546","\u057E\u0576",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F00\u03B9","\u1F00\u0345","\u1F00\u0399","\u1F00\u03B9","\u1F00\u1FBE","\u1F08\u0345","\u1F08\u0399","\u1F08\u03B9","\u1F08\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F01\u03B9","\u1F01\u0345","\u1F01\u0399","\u1F01\u03B9","\u1F01\u1FBE","\u1F09\u0345","\u1F09\u0399","\u1F09\u03B9","\u1F09\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F02\u03B9","\u1F02\u0345","\u1F02\u0399","\u1F02\u03B9","\u1F02\u1FBE","\u1F0A\u0345","\u1F0A\u0399","\u1F0A\u03B9","\u1F0A\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F03\u03B9","\u1F03\u0345","\u1F03\u0399","\u1F03\u03B9","\u1F03\u1FBE","\u1F0B\u0345","\u1F0B\u0399","\u1F0B\u03B9","\u1F0B\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F04\u03B9","\u1F04\u0345","\u1F04\u0399","\u1F04\u03B9","\u1F04\u1FBE","\u1F0C\u0345","\u1F0C\u0399","\u1F0C\u03B9","\u1F0C\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F05\u03B9","\u1F05\u0345","\u1F05\u0399","\u1F05\u03B9","\u1F05\u1FBE","\u1F0D\u0345","\u1F0D\u0399","\u1F0D\u03B9","\u1F0D\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F06\u03B9","\u1F06\u0345","\u1F06\u0399","\u1F06\u03B9","\u1F06\u1FBE","\u1F0E\u0345","\u1F0E\u0399","\u1F0E\u03B9","\u1F0E\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F07\u03B9","\u1F07\u0345","\u1F07\u0399","\u1F07\u03B9","\u1F07\u1FBE","\u1F0F\u0345","\u1F0F\u0399","\u1F0F\u03B9","\u1F0F\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F20\u03B9","\u1F20\u0345","\u1F20\u0399","\u1F20\u03B9","\u1F20\u1FBE","\u1F28\u0345","\u1F28\u0399","\u1F28\u03B9","\u1F28\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F21\u03B9","\u1F21\u0345","\u1F21\u0399","\u1F21\u03B9","\u1F21\u1FBE","\u1F29\u0345","\u1F29\u0399","\u1F29\u03B9","\u1F29\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F22\u03B9","\u1F22\u0345","\u1F22\u0399","\u1F22\u03B9","\u1F22\u1FBE","\u1F2A\u0345","\u1F2A\u0399","\u1F2A\u03B9","\u1F2A\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F23\u03B9","\u1F23\u0345","\u1F23\u0399","\u1F23\u03B9","\u1F23\u1FBE","\u1F2B\u0345","\u1F2B\u0399","\u1F2B\u03B9","\u1F2B\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F24\u03B9","\u1F24\u0345","\u1F24\u0399","\u1F24\u03B9","\u1F24\u1FBE","\u1F2C\u0345","\u1F2C\u0399","\u1F2C\u03B9","\u1F2C\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F25\u03B9","\u1F25\u0345","\u1F25\u0399","\u1F25\u03B9","\u1F25\u1FBE","\u1F2D\u0345","\u1F2D\u0399","\u1F2D\u03B9","\u1F2D\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F26\u03B9","\u1F26\u0345","\u1F26\u0399","\u1F26\u03B9","\u1F26\u1FBE","\u1F2E\u0345","\u1F2E\u0399","\u1F2E\u03B9","\u1F2E\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F27\u03B9","\u1F27\u0345","\u1F27\u0399","\u1F27\u03B9","\u1F27\u1FBE","\u1F2F\u0345","\u1F2F\u0399","\u1F2F\u03B9","\u1F2F\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F60\u03B9","\u1F60\u0345","\u1F60\u0399","\u1F60\u03B9","\u1F60\u1FBE","\u1F68\u0345","\u1F68\u0399","\u1F68\u03B9","\u1F68\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F61\u03B9","\u1F61\u0345","\u1F61\u0399","\u1F61\u03B9","\u1F61\u1FBE","\u1F69\u0345","\u1F69\u0399","\u1F69\u03B9","\u1F69\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F62\u03B9","\u1F62\u0345","\u1F62\u0399","\u1F62\u03B9","\u1F62\u1FBE","\u1F6A\u0345","\u1F6A\u0399","\u1F6A\u03B9","\u1F6A\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F63\u03B9","\u1F63\u0345","\u1F63\u0399","\u1F63\u03B9","\u1F63\u1FBE","\u1F6B\u0345","\u1F6B\u0399","\u1F6B\u03B9","\u1F6B\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F64\u03B9","\u1F64\u0345","\u1F64\u0399","\u1F64\u03B9","\u1F64\u1FBE","\u1F6C\u0345","\u1F6C\u0399","\u1F6C\u03B9","\u1F6C\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F65\u03B9","\u1F65\u0345","\u1F65\u0399","\u1F65\u03B9","\u1F65\u1FBE","\u1F6D\u0345","\u1F6D\u0399","\u1F6D\u03B9","\u1F6D\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F66\u03B9","\u1F66\u0345","\u1F66\u0399","\u1F66\u03B9","\u1F66\u1FBE","\u1F6E\u0345","\u1F6E\u0399","\u1F6E\u03B9","\u1F6E\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F67\u03B9","\u1F67\u0345","\u1F67\u0399","\u1F67\u03B9","\u1F67\u1FBE","\u1F6F\u0345","\u1F6F\u0399","\u1F6F\u03B9","\u1F6F\u1FBE",},
+        // \N{GREEK SMALL LETTER ALPHA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F70\u03B9","\u1F70\u0345","\u1F70\u0399","\u1F70\u03B9","\u1F70\u1FBE","\u1FBA\u0345","\u1FBA\u0399","\u1FBA\u03B9","\u1FBA\u1FBE",},
+        // \N{GREEK SMALL LETTER ETA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F74\u03B9","\u1F74\u0345","\u1F74\u0399","\u1F74\u03B9","\u1F74\u1FBE","\u1FCA\u0345","\u1FCA\u0399","\u1FCA\u03B9","\u1FCA\u1FBE",},
+        // \N{GREEK SMALL LETTER OMEGA WITH VARIA}\N{GREEK SMALL LETTER IOTA}
+        {"\u1F7C\u03B9","\u1F7C\u0345","\u1F7C\u0399","\u1F7C\u03B9","\u1F7C\u1FBE","\u1FFA\u0345","\u1FFA\u0399","\u1FFA\u03B9","\u1FFA\u1FBE",},
+    };
+    
+    // this initializes the data used to generated the case-equivalents
+
+    static {
+        
+        // Gather up the exceptions in a form we can use
+        
+        if (!GENERATE) {
+            for (int i = 0; i < exceptionList.length; ++i) {
+                String[] exception = exceptionList[i];
+                Set s = new HashSet();
+                // there has to be some method to do the following, but I can't find it in the collections
+                for (int j = 0; j < exception.length; ++j) {
+                    s.add(exception[j]);
+                }
+                fromCaseFold.put(exception[0], s);
+            }
+        }
+        
+        // walk through all the characters, and at every case fold result,
+        // put a set of all the characters that map to that result
+
+        boolean defaultmapping = true; // false for turkish
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            int cat = UCharacter.getType(i);
+            if (cat == Character.UNASSIGNED || cat == Character.PRIVATE_USE) continue;
+            
+            String cp = UTF16.valueOf(i);
+            String mapped = UCharacter.foldCase(cp, defaultmapping);
+            if (mapped.equals(cp)) continue;
+            
+            if (maxLength < mapped.length()) maxLength = mapped.length();
+            
+            // at this point, have different case folding
+            
+            Set s = (Set) fromCaseFold.get(mapped);
+            if (s == null) {
+                s = new HashSet();
+                s.add(mapped); // add the case fold result itself
+                fromCaseFold.put(mapped, s);
+            }
+            s.add(cp);
+            toCaseFold.put(cp, mapped);
+            toCaseFold.put(mapped, mapped); // add mapping to self
+        }
+        
+        // Emit the final data
+
+        if (DUMP) {
+            System.out.println("maxLength = " + maxLength);
+
+            System.out.println("\nfromCaseFold:");
+            Iterator it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                Object key = it.next();
+                System.out.print(" " + toHex2.transliterate((String)key) + ": ");
+                Set s = (Set) fromCaseFold.get(key);
+                Iterator it2 = s.iterator();
+                boolean first = true;
+                while (it2.hasNext()) {
+                    if (first) {
+                        first = false;
+                    } else {
+                        System.out.print(", ");
+                    }
+                    System.out.print(toHex2.transliterate((String)it2.next()));
+                }
+                System.out.println("");
+            }
+
+            System.out.println("\ntoCaseFold:");
+            it = toCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                String value = (String) toCaseFold.get(key);
+                System.out.println(" " + toHex2.transliterate(key) + ": " + toHex2.transliterate(value));
+            }            
+        }
+        
+        // Now convert all those sets into linear arrays
+        // We can't do this in place in Java, so make a temporary target array
+        
+        // Note: This could be transformed into a single array, with offsets into it.
+        // Might be best choice in C.
+        
+        
+        Map fromCaseFold2 = new HashMap();
+        Iterator it = fromCaseFold.keySet().iterator();
+        while (it.hasNext()) {
+            Object key = it.next();
+            Set s = (Set) fromCaseFold.get(key);
+            String[] temp = new String[s.size()];
+            s.toArray(temp);
+            fromCaseFold2.put(key, temp);
+        }
+        fromCaseFold = fromCaseFold2;
+
+        // We have processed everything, so the iterator will now work
+        // The following is normally OFF. 
+        // It is here to generate (under the GENERATE flag) the static exception list.
+        // It must be at the very end of initialization, so that the iterator is functional.
+        // (easiest to do it that way)
+            
+        if (GENERATE) {
+
+            // first get small set of items that have multiple characters
+            
+            Set multichars = new TreeSet();
+            it = fromCaseFold.keySet().iterator();
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                if (UTF16.countCodePoint(key) < 2) continue;
+                multichars.add(key);
+            }            
+            
+            // now we will go through each of them.
+            
+            CaseIterator ci = new CaseIterator();
+            it = multichars.iterator();
+            
+            while (it.hasNext()) {
+                String key = (String) it.next();
+                
+                // here is a nasty complication. Take 'ffi' ligature. We
+                // can't just close it, since we would miss the combination
+                // that includes the 'fi' => "fi" ligature
+                // so first do a pass through, and add substring combinations
+                // we call this a 'partial closure'
+                
+                Set partialClosure = new TreeSet();
+                partialClosure.add(key);
+                
+                if (UTF16.countCodePoint(key) > 2) {
+                    Iterator multiIt2 = multichars.iterator();
+                    while (multiIt2.hasNext()) {
+                        String otherKey = (String) multiIt2.next();
+                        if (otherKey.length() >= key.length()) continue;
+                        int pos = -1;
+                        while (true) {
+                            // The following is not completely general
+                            // but works for the actual cased stuff,
+                            // and should work for future characters, since we won't have
+                            // more ligatures & other oddities.
+                            pos = key.indexOf(otherKey, pos+1);
+                            if (pos < 0) break;
+                            int endPos = pos + otherKey.length();
+                            // we know we have a proper substring,
+                            // so get the combinations
+                            String[] choices = (String[]) fromCaseFold.get(otherKey);
+                            for (int ii = 0; ii < choices.length; ++ii) {
+                                String patchwork = key.substring(0, pos)
+                                    + choices[ii]
+                                    + key.substring(endPos);
+                                partialClosure.add(patchwork);
+                            }
+                        }
+                    }
+                }
+                
+                // now, for each thing in the partial closure, get its
+                // case closure and add it to the final result.
+                
+                Set closure = new TreeSet(); // this will be the real closure
+                Iterator partialIt = partialClosure.iterator();
+                while (partialIt.hasNext()) {
+                    String key2 = (String) partialIt.next();
+                    ci.reset(key2);
+                    for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                        closure.add(temp);
+                    }
+                    // form closure
+                    /*String[] choices = (String[]) fromCaseFold.get(key2);
+                    for (int i = 0; i < choices.length; ++i) {
+                        ci.reset(choices[i]);
+                        String temp;
+                        while (null != (temp = ci.next())) {
+                            closure.add(temp);
+                        }
+                    }
+                    */
+                }
+                
+                // print it out, so that it can be cut and pasted back into this document.
+                
+                Iterator it2 = closure.iterator();
+                System.out.println("\t// " + toName.transliterate(key));
+                System.out.print("\t{\"" + toHex.transliterate(key) + "\",");
+                while (it2.hasNext()) {
+                    String item = (String)it2.next();
+                    System.out.print("\"" + toHex.transliterate(item) + "\",");
+                }
+                System.out.println("},");
+            }
+        }
+    }
+    
+    // ============ PRIVATE CLASS DATA ============ 
+    
+    // pieces that we will put together
+    // is not changed during iteration
+    private int count = 0;
+    private String[][] variants;
+    
+    // state information, changes during iteration
+    private boolean done = false;
+    private int[] counts;
+    
+    // internal buffer for efficiency
+    private StringBuffer nextBuffer = new StringBuffer();
+    
+    // ========================  
+
+    /**
+     * Reset to different source. Once reset, the iteration starts from the beginning.
+     * @param source The string to get case variants for
+     */
+    public void reset(String source) {
+        
+        // allocate arrays to store pieces
+        // using length might be slightly too long, but we don't care much
+        
+        counts = new int[source.length()];
+        variants = new String[source.length()][];
+        
+        // walk through the source, and break up into pieces
+        // each piece becomes an array of equivalent values
+        // TODO: could optimized this later to coalesce all single string pieces
+        
+        String piece = null;
+        count = 0;
+        for (int i = 0; i < source.length(); i += piece.length()) {
+            
+            // find *longest* matching piece
+            String caseFold = null;
+            
+            if (GENERATE) {
+                // do exactly one CP
+                piece = UTF16.valueOf(source, i);
+                caseFold = (String) toCaseFold.get(piece);
+            } else {               
+                int max = i + maxLength;
+                if (max > source.length()) max = source.length();
+                for (int j = max; j > i; --j) {
+                    piece = source.substring(i, j);
+                    caseFold = (String) toCaseFold.get(piece);
+                    if (caseFold != null) break;
+                }
+            }
+            
+            // if we fail, pick one code point
+            if (caseFold == null) {
+                piece = UTF16.valueOf(source, i);
+                variants[count++] = new String[] {piece}; // single item string
+            } else {
+                variants[count++] = (String[])fromCaseFold.get(caseFold);
+            }
+        }
+        reset();
+    }
+    
+    /**
+     * Restart the iteration from the beginning, but with same source
+     */
+    public void reset() {
+        done = false;
+        for (int i = 0; i < count; ++i) {
+            counts[i] = 0;
+        }
+    }
+    
+    /**
+     * Iterates through the case variants.
+     * @return next case variant. Each variant will case-fold to the same value as the source will.
+     * When the iteration is done, null is returned.
+     */
+    public String next() {
+        
+        if (done) return null;
+        int i;
+        
+        // TODO Optimize so we keep the piece before and after the current position
+        // so we don't have so much concatenation
+        
+        // get the result, a concatenation
+        
+        nextBuffer.setLength(0);
+        for (i = 0; i < count; ++i) {
+            nextBuffer.append(variants[i][counts[i]]);
+        }
+        
+        // find the next right set of pieces to concatenate
+        
+        for (i = count-1; i >= 0; --i) {
+            counts[i]++;
+            if (counts[i] < variants[i].length) break;
+            counts[i] = 0;
+        }
+        
+        // if we go too far, bail
+        
+        if (i < 0) {
+            done = true;
+        }
+        
+        return nextBuffer.toString();            
+    }
+        
+        
+    /**
+     * Temporary test, just to see how the stuff works.
+     */
+    static public void main(String[] args) {
+        String[] testCases = {"fiss", "h\u03a3"};
+        CaseIterator ci = new CaseIterator();
+        
+        for (int i = 0; i < testCases.length; ++i) {
+            String item = testCases[i];
+            System.out.println();
+            System.out.println("Testing: " + toName.transliterate(item));
+            System.out.println();
+            ci.reset(item);
+            int count = 0;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                System.out.println(toName.transliterate(temp));
+                count++;
+            }
+            System.out.println("Total: " + count);
+        }
+
+        // generate a list of all caseless characters -- characters whose
+        // case closure is themselves.
+
+        UnicodeSet caseless = new UnicodeSet();
+
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            String cp = UTF16.valueOf(i);
+            ci.reset(cp);
+            int count = 0;
+            String fold = null;
+            for (String temp = ci.next(); temp != null; temp = ci.next()) {
+                fold = temp;
+                if (++count > 1) break;
+            }
+            if (count==1 && fold.equals(cp)) {
+                caseless.add(i);
+            }
+        }
+
+        System.out.println("caseless = " + caseless.toPattern(true));
+
+        UnicodeSet not_lc = new UnicodeSet("[:^lc:]");
+        
+        UnicodeSet a = new UnicodeSet();
+        a.set(not_lc);
+        a.removeAll(caseless);
+        System.out.println("[:^lc:] - caseless = " + a.toPattern(true));
+
+        a.set(caseless);
+        a.removeAll(not_lc);
+        System.out.println("caseless - [:^lc:] = " + a.toPattern(true));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/CollectionUtilities.java b/src/com/ibm/icu/dev/test/util/CollectionUtilities.java
new file mode 100644
index 0000000..33eb43d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CollectionUtilities.java
@@ -0,0 +1,498 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.SortedSet;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.util.regex.Matcher;
+//#endif
+
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+/**
+ * Utilities that ought to be on collections, but aren't
+ */
+public final class CollectionUtilities {
+    
+    public static String join(Object[] array, String separator) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < array.length; ++i) {
+            if (i != 0) result.append(separator);
+            result.append(array[i]);
+        }
+        return result.toString();
+    }
+
+    public static String join(Collection collection, String separator) {
+        StringBuffer result = new StringBuffer();
+        boolean first = true;
+        for (Iterator it = collection.iterator(); it.hasNext();) {
+            if (first) first = false;
+            else result.append(separator);
+            result.append(it.next());
+        }
+        return result.toString();
+    }
+
+    /**
+     * Utility like Arrays.asList()
+     */
+    public static Map asMap(Object[][] source, Map target, boolean reverse) {
+        int from = 0, to = 1;
+        if (reverse) {
+            from = 1; to = 0;
+        }
+        for (int i = 0; i < source.length; ++i) {
+            target.put(source[i][from], source[i][to]);
+        }
+        return target;
+    }
+    
+    public static Collection addAll(Iterator source, Collection target) {
+        while (source.hasNext()) {
+            target.add(source.next());
+        }
+        return target; // for chaining
+    }
+    
+    public static int size(Iterator source) {
+        int result = 0;
+        while (source.hasNext()) {
+            source.next();
+            ++result;
+        }
+        return result;
+    }
+    
+
+    public static Map asMap(Object[][] source) {
+        return asMap(source, new HashMap(), false);
+    }
+    
+    /**
+     * Utility that ought to be on Map
+     */
+    public static Map removeAll(Map m, Collection itemsToRemove) {
+        for (Iterator it = itemsToRemove.iterator(); it.hasNext();) {
+            Object item = it.next();
+            m.remove(item);
+        }
+        return m;
+    }
+    
+    public Object getFirst(Collection c) {
+        Iterator it = c.iterator();
+        if (!it.hasNext()) return null;
+        return it.next();
+    }
+    
+    public static Object getBest(Collection c, Comparator comp, int direction) {
+        Iterator it = c.iterator();
+        if (!it.hasNext()) return null;
+        Object bestSoFar = it.next();
+        if (direction < 0) {
+            while (it.hasNext()) {
+                Object item = it.next();
+                int compValue = comp.compare(item, bestSoFar);
+                if (compValue < 0) {
+                    bestSoFar = item;
+                }
+            }
+        } else {
+            while (it.hasNext()) {
+                Object item = it.next();
+                int compValue = comp.compare(item, bestSoFar);
+                if (compValue > 0) {
+                    bestSoFar = item;
+                }
+            }
+        }
+        return bestSoFar;
+    }
+    
+    public interface ObjectMatcher {
+        /**
+         * Must handle null, never throw exception
+         */
+        boolean matches(Object o);
+    }
+    
+    public static class InverseMatcher implements ObjectMatcher {
+        ObjectMatcher other;
+        public ObjectMatcher set(ObjectMatcher toInverse) {
+            other = toInverse;
+            return this;
+        }
+        public boolean matches(Object value) {
+            return !other.matches(value);
+        }
+    }
+
+    public static Collection removeAll(Collection c, ObjectMatcher f) {
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (f.matches(item)) it.remove();
+        }
+        return c;
+    }
+    
+    public static Collection retainAll(Collection c, ObjectMatcher f) {
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (!f.matches(item)) it.remove();
+        }
+        return c;
+    }
+    
+    public static boolean containsSome(Collection a, Collection b) {
+        // fast paths
+        if (a.size() == 0 || b.size() == 0) return false;
+        if (a == b) return true; // must test after size test.
+
+        if (a instanceof SortedSet && b instanceof SortedSet) {
+            SortedSet aa = (SortedSet) a;
+            SortedSet bb = (SortedSet) b;
+            aa.containsAll(null);
+            Comparator bbc = bb.comparator();
+            Comparator aac = aa.comparator();
+            if (bbc == null) {
+                if (aac == null) {
+                    Iterator ai = aa.iterator();
+                    Iterator bi = bb.iterator();
+                    Comparable ao = (Comparable) ai.next(); // these are ok, since the sizes are != 0
+                    Comparable bo = (Comparable) bi.next();
+                    while (true) {
+                        int rel = ao.compareTo(bo);
+                        if (rel < 0) {
+                            if (!ai.hasNext()) return false;
+                            ao = (Comparable) ai.next();
+                        } else if (rel > 0) {
+                            if (!bi.hasNext()) return false;
+                            bo = (Comparable) bi.next();
+                        } else {
+                                return true;  
+                        }
+                    }
+                }
+            } else if (bbc.equals(a)) {
+                Iterator ai = aa.iterator();
+                Iterator bi = bb.iterator();
+                Object ao = ai.next(); // these are ok, since the sizes are != 0
+                Object bo = bi.next();
+                while (true) {
+                    int rel = aac.compare(ao, bo);
+                    if (rel < 0) {
+                        if (!ai.hasNext()) return false;
+                        ao = ai.next();
+                    } else if (rel > 0)  {
+                        if (!bi.hasNext()) return false;
+                        bo = bi.next();
+                    } else {
+                        return true;  
+                    }
+                }
+            }           
+        }
+        for (Iterator it = a.iterator(); it.hasNext();) {
+            if (b.contains(it.next())) return true;
+        }
+        return false;
+    }
+    
+    public static boolean containsAll(Collection a, Collection b) {
+        // fast paths
+        if (a == b) return true;
+        if (b.size() == 0) return true;
+        if (a.size() == 0) return false;
+
+        if (a instanceof SortedSet && b instanceof SortedSet) {
+            SortedSet aa = (SortedSet) a;
+            SortedSet bb = (SortedSet) b;
+            Comparator bbc = bb.comparator();
+            Comparator aac = aa.comparator();
+            if (bbc == null) {
+                if (aac == null) {
+                    Iterator ai = aa.iterator();
+                    Iterator bi = bb.iterator();
+                    Comparable ao = (Comparable) ai.next(); // these are ok, since the sizes are != 0
+                    Comparable bo = (Comparable) bi.next();
+                    while (true) {
+                        int rel = ao.compareTo(bo);
+                        if (rel == 0) {
+                            if (!bi.hasNext()) return true;
+                            if (!ai.hasNext()) return false;
+                            bo = (Comparable) bi.next();
+                            ao = (Comparable) ai.next();
+                        } else if (rel < 0) {
+                            if (!ai.hasNext()) return false;
+                            ao = (Comparable) ai.next();
+                        } else {
+                            return false;  
+                        }
+                    }
+                }
+            } else if (bbc.equals(a)) {
+                Iterator ai = aa.iterator();
+                Iterator bi = bb.iterator();
+                Object ao = ai.next(); // these are ok, since the sizes are != 0
+                Object bo = bi.next();
+                while (true) {
+                    int rel = aac.compare(ao, bo);
+                    if (rel == 0) {
+                        if (!bi.hasNext()) return true;
+                        if (!ai.hasNext()) return false;
+                        bo = bi.next();
+                        ao = ai.next();
+                    } else if (rel < 0) {
+                        if (!ai.hasNext()) return false;
+                        ao = ai.next();
+                    } else {
+                        return false;  
+                    }
+                }
+            }           
+        }
+        return a.containsAll(b);
+    }
+    
+    public static boolean containsNone(Collection a, Collection b) {
+        return !containsSome(a, b);
+    }
+    
+    /**
+     * Used for results of getContainmentRelation
+     */
+    public static final int
+        ALL_EMPTY = 0,
+        NOT_A_SUPERSET_B = 1,
+        NOT_A_DISJOINT_B = 2,
+        NOT_A_SUBSET_B = 4,
+        NOT_A_EQUALS_B = NOT_A_SUBSET_B | NOT_A_SUPERSET_B,
+        A_PROPER_SUBSET_OF_B = NOT_A_DISJOINT_B | NOT_A_SUPERSET_B,
+        A_PROPER_SUPERSET_B = NOT_A_SUBSET_B | NOT_A_DISJOINT_B,
+        A_PROPER_OVERLAPS_B = NOT_A_SUBSET_B | NOT_A_DISJOINT_B | NOT_A_SUPERSET_B;
+    
+    /**
+     * Assesses all the possible containment relations between collections A and B with one call.<br>
+     * Returns an int with bits set, according to a "Venn Diagram" view of A vs B.<br>
+     * NOT_A_SUPERSET_B: a - b != {}<br>
+     * NOT_A_DISJOINT_B: a * b != {}  // * is intersects<br>
+     * NOT_A_SUBSET_B: b - a != {}<br>
+     * Thus the bits can be used to get the following relations:<br>
+     * for A_SUPERSET_B, use (x & CollectionUtilities.NOT_A_SUPERSET_B) == 0<br>
+     * for A_SUBSET_B, use (x & CollectionUtilities.NOT_A_SUBSET_B) == 0<br>
+     * for A_EQUALS_B, use (x & CollectionUtilities.NOT_A_EQUALS_B) == 0<br>
+     * for A_DISJOINT_B, use (x & CollectionUtilities.NOT_A_DISJOINT_B) == 0<br>
+     * for A_OVERLAPS_B, use (x & CollectionUtilities.NOT_A_DISJOINT_B) != 0<br>
+     */
+     public static int getContainmentRelation(Collection a, Collection b) {
+        if (a.size() == 0) {
+            return (b.size() == 0) ? ALL_EMPTY : NOT_A_SUPERSET_B;
+        } else if (b.size() == 0) {
+            return NOT_A_SUBSET_B;
+        }
+        int result = 0;
+        // WARNING: one might think that the following can be short-circuited, by looking at
+        // the sizes of a and b. However, this would fail in general, where a different comparator is being
+        // used in the two collections. Unfortunately, there is no failsafe way to test for that.
+        for (Iterator it = a.iterator(); result != 6 && it.hasNext();) {
+            result |= (b.contains(it.next())) ? NOT_A_DISJOINT_B : NOT_A_SUBSET_B;
+        }
+        for (Iterator it = b.iterator(); (result & 3) != 3 && it.hasNext();) {
+            result |= (a.contains(it.next())) ? NOT_A_DISJOINT_B : NOT_A_SUPERSET_B;
+        }
+        return result;
+    }
+
+    public static String remove(String source, UnicodeSet removals) {
+        StringBuffer result = new StringBuffer();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source, i);
+            if (!removals.contains(cp)) UTF16.append(result, cp);
+        }
+        return result.toString();
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+     /**
+      * Does one string contain another, starting at a specific offset?
+      * @param text
+      * @param offset
+      * @param other
+      * @return
+      */
+        public static int matchesAt(CharSequence text, int offset, CharSequence other) {
+            int len = other.length();
+            int i = 0;
+            int j = offset;
+            for (; i < len; ++i, ++j) {
+                char pc = other.charAt(i);
+                char tc = text.charAt(j);
+                if (pc != tc) return -1;
+            }
+            return i;
+        }
+
+        /**
+         * Returns the ending offset found by matching characters with testSet, until a position is found that doen't match
+         * @param string
+         * @param offset
+         * @param testSet
+         * @return
+         */
+        public int span(CharSequence string, int offset, UnicodeSet testSet) {
+            while (true) {
+                int newOffset = testSet.matchesAt(string, offset);
+                if (newOffset < 0) return offset;
+            }
+        }
+
+        /**
+         * Returns the ending offset found by matching characters with testSet, until a position is found that does match
+         * @param string
+         * @param offset
+         * @param testSet
+         * @return
+         */
+        public int spanNot(CharSequence string, int offset, UnicodeSet testSet) {
+            while (true) {
+                int newOffset = testSet.matchesAt(string, offset);
+                if (newOffset >= 0) return offset;
+                ++offset; // try next character position
+                // we don't have to worry about surrogates for this.
+            }
+        }
+//#endif
+
+    public static String prettyPrint(UnicodeSet uset, boolean compressRanges, UnicodeSet toQuote, Transliterator quoter, 
+            Comparator ordering, Comparator spaceComparator) {
+        PrettyPrinter pp = new PrettyPrinter().setCompressRanges(compressRanges);
+        if (toQuote != null) pp.setToQuote(toQuote);
+        if (ordering != null) pp.setOrdering(ordering);
+        if (spaceComparator != null) pp.setSpaceComparator(spaceComparator);
+        return pp.toPattern(uset);
+    }
+    
+    public static class MultiComparator implements Comparator {
+        private Comparator[] comparators;
+    
+        public MultiComparator (Comparator[] comparators) {
+            this.comparators = comparators;
+        }
+    
+        /* Lexigraphic compare. Returns the first difference
+         * @return zero if equal. Otherwise +/- (i+1) 
+         * where i is the index of the first comparator finding a difference
+         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+         */
+        public int compare(Object arg0, Object arg1) {
+            for (int i = 0; i < comparators.length; ++i) {
+                int result = comparators[i].compare(arg0, arg1);
+                if (result == 0) continue;
+                if (result > 0) return i+1;
+                return -(i+1);
+            }
+            return 0;
+        }
+    }
+
+    /**
+     * Modifies Unicode set to flatten the strings. Eg [abc{da}] => [abcd]
+     * Returns the set for chaining.
+     * @param exemplar1
+     * @return
+     */
+    public static UnicodeSet flatten(UnicodeSet exemplar1) {
+        UnicodeSet result = new UnicodeSet();
+        boolean gotString = false;
+        for (UnicodeSetIterator it = new UnicodeSetIterator(exemplar1); it.nextRange();) {
+            if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+                result.addAll(it.string);
+                gotString = true;
+            } else {
+                result.add(it.codepoint, it.codepointEnd);
+            }
+        }
+        if (gotString) exemplar1.set(result);
+        return exemplar1;
+    }
+
+    /**
+     * For producing filtered iterators
+     */
+    public static abstract class FilteredIterator implements Iterator {
+        private Iterator baseIterator;
+        private static final Object EMPTY = new Object();
+        private static final Object DONE = new Object();
+        private Object nextObject = EMPTY;
+        public FilteredIterator set(Iterator baseIterator) {
+            this.baseIterator = baseIterator;
+            return this;
+        }
+        public void remove() {
+            throw new UnsupportedOperationException("Doesn't support removal");
+        }
+        public Object next() {
+            Object result = nextObject;
+            nextObject = EMPTY;
+            return result;
+        }       
+        public boolean hasNext() {
+            if (nextObject == DONE) return false;
+            if (nextObject != EMPTY) return true;
+            while (baseIterator.hasNext()) {
+                nextObject = baseIterator.next();
+                if (isIncluded(nextObject)) {
+                    return true;
+                }
+            }
+            nextObject = DONE;
+            return false;
+        }
+        abstract public boolean isIncluded(Object item);
+    }
+    
+    public static class PrefixIterator extends FilteredIterator {
+        private String prefix;
+        public PrefixIterator set(Iterator baseIterator, String prefix) {
+            super.set(baseIterator);
+            this.prefix = prefix;
+            return this;
+        }
+        public boolean isIncluded(Object item) {
+            return ((String)item).startsWith(prefix);
+        }
+    }
+    
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    public static class RegexIterator extends FilteredIterator {
+        private Matcher matcher;
+        public RegexIterator set(Iterator baseIterator, Matcher matcher) {
+            super.set(baseIterator);
+            this.matcher = matcher;
+            return this;
+        }
+        public boolean isIncluded(Object item) {
+            return matcher.reset((String)item).matches();
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/dev/test/util/CompactArrayTest.java b/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
new file mode 100644
index 0000000..2c7a763
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
@@ -0,0 +1,160 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.util.CompactCharArray;
+
+/**
+ * @since release 2.2
+ */
+public final class CompactArrayTest extends TestFmwk 
+{ 
+    public static void main(String[] args) throws Exception
+    {
+        new CompactArrayTest().run(args);
+    }
+    
+    public void TestByteArrayCoverage() {
+    CompactByteArray cba = new CompactByteArray();
+    cba.setElementAt((char)0x5, (byte)0xdf);
+    cba.setElementAt((char)0x105, (byte)0xdf);
+    cba.setElementAt((char)0x205, (byte)0xdf);
+    cba.setElementAt((char)0x305, (byte)0xdf);
+    CompactByteArray cba2 = new CompactByteArray((byte)0xdf);
+    if (cba.equals(cba2)) {
+        errln("unequal byte arrays compare equal");
+    }
+    CompactByteArray cba3 = (CompactByteArray)cba.clone();
+
+    logln("equals null: " + cba.equals(null));
+    logln("equals self: " + cba.equals(cba));
+    logln("equals clone: " + cba.equals(cba3));
+    logln("equals bogus: " + cba.equals(new Object()));
+    logln("hash: " + cba.hashCode());
+
+    cba.compact(true);
+    cba.compact(true);
+
+    char[] xa = cba.getIndexArray();
+    byte[] va = cba.getValueArray();
+    CompactByteArray cba4 = new CompactByteArray(xa, va);
+
+    String xs = Utility.arrayToRLEString(xa);
+    String vs = Utility.arrayToRLEString(va);
+    CompactByteArray cba5 = new CompactByteArray(xs, vs);
+
+    logln("equals: " + cba4.equals(cba5));
+    logln("equals: " + cba.equals(cba4));
+    
+      cba4.compact(false);
+    logln("equals: " + cba4.equals(cba5));
+
+    cba5.compact(true);
+    logln("equals: " + cba4.equals(cba5));
+
+    cba.setElementAt((char)0x405, (byte)0xdf); // force expand
+    logln("modified equals clone: " + cba.equals(cba3));
+
+    cba3.setElementAt((char)0x405, (byte)0xdf); // equivalent modification
+    logln("modified equals modified clone: " + cba.equals(cba3));
+
+    cba3.setElementAt((char)0x405, (byte)0xee); // different modification
+    logln("different mod equals: " + cba.equals(cba3));
+
+    cba.compact();
+    CompactByteArray cba6 = (CompactByteArray)cba.clone();
+    logln("cloned compact equals: " + cba.equals(cba6));
+
+    cba6.setElementAt((char)0x405, (byte)0xee);
+    logln("modified clone: " + cba3.equals(cba6));
+
+    cba6.setElementAt((char)0x100, (char)0x104, (byte)0xfe);
+    for (int i = 0x100; i < 0x105; ++i) {
+        cba3.setElementAt((char)i, (byte)0xfe);
+    }
+    logln("double modified: " + cba3.equals(cba6));
+    }
+
+    public void TestCharArrayCoverage() {
+    // v1.8 fails with extensive compaction, so set to false
+    final boolean EXTENSIVE = false;
+
+    CompactCharArray cca = new CompactCharArray();
+    cca.setElementAt((char)0x5, (char)0xdf);
+    cca.setElementAt((char)0x105, (char)0xdf);
+    cca.setElementAt((char)0x205, (char)0xdf);
+    cca.setElementAt((char)0x305, (char)0xdf);
+    CompactCharArray cca2 = new CompactCharArray((char)0xdf);
+    if (cca.equals(cca2)) {
+        errln("unequal char arrays compare equal");
+    }
+    CompactCharArray cca3 = (CompactCharArray)cca.clone();
+
+    logln("equals null: " + cca.equals(null));
+    logln("equals self: " + cca.equals(cca));
+    logln("equals clone: " + cca.equals(cca3));
+    logln("equals bogus: " + cca.equals(new Object()));
+    logln("hash: " + cca.hashCode());
+
+    cca.compact(EXTENSIVE);
+    cca.compact(EXTENSIVE);
+
+    char[] xa = cca.getIndexArray();
+    char[] va = cca.getValueArray();
+    CompactCharArray cca4 = new CompactCharArray(xa, va);
+
+    String xs = Utility.arrayToRLEString(xa);
+    String vs = Utility.arrayToRLEString(va);
+    CompactCharArray cca5 = new CompactCharArray(xs, vs);
+
+    logln("equals: " + cca4.equals(cca5));
+    logln("equals: " + cca.equals(cca4));
+
+    cca4.compact(false);
+    logln("equals: " + cca4.equals(cca5));
+
+    cca5.compact(EXTENSIVE);
+    logln("equals: " + cca4.equals(cca5));
+
+    cca.setElementAt((char)0x405, (char)0xdf); // force expand
+    logln("modified equals clone: " + cca.equals(cca3));
+
+    cca3.setElementAt((char)0x405, (char)0xdf); // equivalent modification
+    logln("modified equals modified clone: " + cca.equals(cca3));
+
+    cca3.setElementAt((char)0x405, (char)0xee); // different modification
+    logln("different mod equals: " + cca.equals(cca3));
+    
+    // after setElementAt isCompact is set to false
+    cca3.compact(true);
+    logln("different mod equals: " + cca.equals(cca3));
+    
+    cca3.setElementAt((char)0x405, (char)0xee); // different modification
+    logln("different mod equals: " + cca.equals(cca3));
+        // after setElementAt isCompact is set to false
+    cca3.compact();
+    logln("different mod equals: " + cca.equals(cca3));
+    
+    // v1.8 fails with extensive compaction, and defaults extensive, so don't compact
+    // cca.compact();
+    CompactCharArray cca6 = (CompactCharArray)cca.clone();
+    logln("cloned compact equals: " + cca.equals(cca6));
+
+    cca6.setElementAt((char)0x405, (char)0xee);
+    logln("modified clone: " + cca3.equals(cca6));
+
+    cca6.setElementAt((char)0x100, (char)0x104, (char)0xfe);
+    for (int i = 0x100; i < 0x105; ++i) {
+        cca3.setElementAt((char)i, (char)0xfe);
+    }
+    logln("double modified: " + cca3.equals(cca6));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/CurrencyTest.java b/src/com/ibm/icu/dev/test/util/CurrencyTest.java
new file mode 100644
index 0000000..7ce7f62
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/CurrencyTest.java
@@ -0,0 +1,522 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Alan Liu
+ * Created: December 18 2002
+ * Since: ICU 2.4
+ **********************************************************************
+ */
+
+package com.ibm.icu.dev.test.util;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.*;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.Date;
+
+/**
+ * @test
+ * @summary General test of Currency
+ */
+public class CurrencyTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new CurrencyTest().run(args);
+    }
+
+    /**
+     * Test of basic API.
+     */
+    public void TestAPI() {
+        Currency usd = Currency.getInstance("USD");
+        /*int hash = */usd.hashCode();
+        Currency jpy = Currency.getInstance("JPY");
+        if (usd.equals(jpy)) {
+            errln("FAIL: USD == JPY");
+        }
+        if (usd.equals("abc")) {
+            errln("FAIL: USD == (String)");
+        }
+        if (usd.equals(null)) {
+            errln("FAIL: USD == (null)");
+        }
+        if (!usd.equals(usd)) {
+            errln("FAIL: USD != USD");
+        }
+
+        try {
+            Currency nullCurrency = Currency.getInstance((String)null);
+            errln("FAIL: Expected getInstance(null) to throw "
+                    + "a NullPointerException, but returned " + nullCurrency);
+        } catch (NullPointerException npe) {
+            logln("PASS: getInstance(null) threw a NullPointerException");
+        }
+
+        try {
+            Currency bogusCurrency = Currency.getInstance("BOGUS");
+            errln("FAIL: Expected getInstance(\"BOGUS\") to throw "
+                    + "an IllegalArgumentException, but returned " + bogusCurrency);
+        } catch (IllegalArgumentException iae) {
+            logln("PASS: getInstance(\"BOGUS\") threw an IllegalArgumentException");
+        }
+
+        Locale[] avail = Currency.getAvailableLocales();
+        if(avail==null){
+            errln("FAIL: getAvailableLocales returned null");
+        }
+
+        try {
+            usd.getName(ULocale.US, 5, new boolean[1]);
+            errln("expected getName with invalid type parameter to throw exception");
+        }
+        catch (Exception e) {
+            logln("PASS: getName failed as expected");
+        }
+    }
+
+    /**
+     * Test registration.
+     */
+    public void TestRegistration() {
+        final Currency jpy = Currency.getInstance("JPY");
+        final Currency usd = Currency.getInstance(Locale.US);
+
+    try {
+      Currency.unregister(null); // should fail, coverage
+      errln("expected unregister of null to throw exception");
+    }
+    catch (Exception e) {
+        logln("PASS: unregister of null failed as expected");
+    }
+
+    if (Currency.unregister("")) { // coverage
+      errln("unregister before register erroneously succeeded");
+    }
+
+        ULocale fu_FU = new ULocale("fu_FU");
+
+        Object key1 = Currency.registerInstance(jpy, ULocale.US);
+        Object key2 = Currency.registerInstance(jpy, fu_FU);
+
+        Currency nus = Currency.getInstance(Locale.US);
+        if (!nus.equals(jpy)) {
+            errln("expected " + jpy + " but got: " + nus);
+        }
+
+        // converage, make sure default factory works
+        Currency nus1 = Currency.getInstance(Locale.JAPAN);
+        if (!nus1.equals(jpy)) {
+            errln("expected " + jpy + " but got: " + nus1);
+        }
+
+        ULocale[] locales = Currency.getAvailableULocales();
+        boolean found = false;
+        for (int i = 0; i < locales.length; ++i) {
+            if (locales[i].equals(fu_FU)) {
+                found = true;
+                break;
+            }
+        }
+        if (!found) {
+            errln("did not find locale" + fu_FU + " in currency locales");
+        }
+
+        if (!Currency.unregister(key1)) {
+            errln("unable to unregister currency using key1");
+        }
+        if (!Currency.unregister(key2)) {
+            errln("unable to unregister currency using key2");
+        }
+
+        Currency nus2 = Currency.getInstance(Locale.US);
+        if (!nus2.equals(usd)) {
+            errln("expected " + usd + " but got: " + nus2);
+        }
+
+        locales = Currency.getAvailableULocales();
+        found = false;
+        for (int i = 0; i < locales.length; ++i) {
+            if (locales[i].equals(fu_FU)) {
+                found = true;
+                break;
+            }
+        }
+        if (found) {
+            errln("found locale" + fu_FU + " in currency locales after unregister");
+        }
+    }
+
+    /**
+     * Test names.
+     */
+    public void TestNames() {
+        // Do a basic check of getName()
+        // USD { "US$", "US Dollar"            } // 04/04/1792-
+        ULocale en = ULocale.ENGLISH;
+        boolean[] isChoiceFormat = new boolean[1];
+        Currency usd = Currency.getInstance("USD");
+        // Warning: HARD-CODED LOCALE DATA in this test.  If it fails, CHECK
+        // THE LOCALE DATA before diving into the code.
+        if (!noData()) {
+            assertEquals("USD.getName(SYMBOL_NAME)",
+                         "$",
+                         usd.getName(en, Currency.SYMBOL_NAME, isChoiceFormat));
+            assertEquals("USD.getName(LONG_NAME)",
+                         "US Dollar",
+                         usd.getName(en, Currency.LONG_NAME, isChoiceFormat));
+        }
+        // TODO add more tests later
+    }
+
+    public void TestCoverage() {
+        Currency usd = Currency.getInstance("USD");
+        if (!noData()) {
+        assertEquals("USD.getSymbol()",
+                "$",
+                usd.getSymbol());
+        }
+        assertEquals("USD.getLocale()",
+                ULocale.ROOT,
+                usd.getLocale(null));
+    }
+
+    public void TestCurrencyKeyword() {
+        ULocale locale = new ULocale("th_TH@collation=traditional;currency=QQQ");
+        Currency currency = Currency.getInstance(locale);
+        String result = currency.getCurrencyCode();
+        if (!"QQQ".equals(result)) {
+            errln("got unexpected currency: " + result);
+        }
+    }
+
+	public void TestAvailableCurrencyCodes()
+	{
+		// local Variables
+		String[] currency;
+
+		// Cycle through historical currencies 
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AM"), new Date(-630720000000L)); // pre 1961
+		if (currency != null)
+		{
+			errln("FAIL: didn't return null for eo_AM");
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AM"), new Date(0L)); // 1970
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AM returned: " + currency.length);
+		}
+		if (!"SUR".equals(currency[0]))
+		{
+			errln("didn't return SUR for eo_AM returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AM"), new Date(693792000000L)); // 1992
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AM returned: " + currency.length);
+		}
+		if (!"RUR".equals(currency[0]))
+		{
+			errln("didn't return RUR for eo_AM returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AM"), new Date(977616000000L)); // post 1993
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AM returned: " + currency.length);
+		}
+		if (!"AMD".equals(currency[0]))
+		{
+			errln("didn't return AMD for eo_AM returned: " + currency[0]);
+		}
+
+		// Locale AD has multiple currencies at once
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AD"), new Date(977616000000L)); // 2001
+		if (currency.length != 4)
+		{
+			errln("FAIL: didn't return 4 for eo_AD returned: " + currency.length);
+		}
+		if (!"EUR".equals(currency[0]))
+		{
+			errln("didn't return EUR for eo_AD returned: " + currency[0]);
+		}
+		if (!"ESP".equals(currency[1]))
+		{
+			errln("didn't return ESP for eo_AD returned: " + currency[1]);
+		}
+		if (!"FRF".equals(currency[2]))
+		{
+			errln("didn't return FRF for eo_AD returned: " + currency[2]);
+		}
+		if (!"ADP".equals(currency[3]))
+		{
+			errln("didn't return ADP for eo_AD returned: " + currency[3]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AD"), new Date(0L)); // 1970
+		if (currency.length != 3)
+		{
+			errln("FAIL: didn't return 3 for eo_AD returned: " + currency.length);
+		}
+		if (!"ESP".equals(currency[0]))
+		{
+			errln("didn't return ESP for eo_AD returned: " + currency[0]);
+		}
+		if (!"FRF".equals(currency[1]))
+		{
+			errln("didn't return FRF for eo_AD returned: " + currency[1]);
+		}
+		if (!"ADP".equals(currency[2]))
+		{
+			errln("didn't return ADP for eo_AD returned: " + currency[2]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AD"), new Date(-630720000000L)); // 1950
+		if (currency.length != 2)
+		{
+			errln("FAIL: didn't return 2 for eo_AD returned: " + currency.length);
+		}
+		if (!"ESP".equals(currency[0]))
+		{
+			errln("didn't return ESP for eo_AD returned: " + currency[0]);
+		}
+		if (!"ADP".equals(currency[1]))
+		{
+			errln("didn't return ADP for eo_AD returned: " + currency[1]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AD"), new Date(-2207520000000L)); // 1900
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AD returned: " + currency.length);
+		}
+		if (!"ESP".equals(currency[0]))
+		{
+			errln("didn't return ESP for eo_AD returned: " + currency[0]);
+		}
+
+		// Locale UA has gap between years 1994 - 1996
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_UA"), new Date(788400000000L));
+		if (currency != null)
+		{
+			errln("FAIL: didn't return null for eo_UA");
+		}
+
+		// Test for bogus locale
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_QQ"), new Date(0L));
+		if (currency != null)
+		{
+			errln("FAIL: didn't return null for eo_QQ");
+		}
+
+		// Cycle through historical currencies
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(977616000000L)); // 2001
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AO returned: " + currency.length);
+		}
+		if (!"AOA".equals(currency[0]))
+		{
+			errln("didn't return AOA for eo_AO returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(819936000000L)); // 1996
+		if (currency.length != 2)
+		{
+			errln("FAIL: didn't return 2 for eo_AO returned: " + currency.length);
+		}
+		if (!"AOR".equals(currency[0]))
+		{
+			errln("didn't return AOR for eo_AO returned: " + currency[0]);
+		}
+		if (!"AON".equals(currency[1]))
+		{
+			errln("didn't return AON for eo_AO returned: " + currency[1]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(662256000000L)); // 
+		if (currency.length != 2)
+		{
+			errln("FAIL: didn't return 2 for eo_AO returned: " + currency.length);
+		}
+		if (!"AON".equals(currency[0]))
+		{
+			errln("didn't return AON for eo_AO returned: " + currency[0]);
+		}
+		if (!"AOK".equals(currency[1]))
+		{
+			errln("didn't return AOK for eo_AO returned: " + currency[1]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(315360000000L)); // 1980
+		if (currency.length != 1)
+		{
+			errln("FAIL: didn't return 1 for eo_AO returned: " + currency.length);
+		}
+		if (!"AOK".equals(currency[0]))
+		{
+			errln("didn't return AOK for eo_AO returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_AO"), new Date(0L)); // 1970
+		if (currency != null)
+		{
+			errln("FAIL: didn't return null for eo_AO");
+		}
+
+		// Test with currency keyword override
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("eo_DE@currency=DEM"), new Date(977616000000L)); // 2001
+		if (currency.length != 2)
+		{
+			errln("FAIL: didn't return 2 for eo_DE@currency=DEM returned: " + currency.length);
+		}
+		if (!"EUR".equals(currency[0]))
+		{
+			errln("didn't return EUR for eo_DE@currency=DEM returned: " + currency[0]);
+		}
+		if (!"DEM".equals(currency[1]))
+		{
+			errln("didn't return DEM for eo_DE@currency=DEM returned: " + currency[1]);
+		}
+
+		// Test Euro Support
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("en_US"), new Date(System.currentTimeMillis()));
+		if (!"USD".equals(currency[0]))
+		{
+			errln("didn't return USD for en_US returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("en_US_PREEURO"), new Date(System.currentTimeMillis()));
+		if (!"USD".equals(currency[0]))
+		{
+			errln("didn't return USD for en_US_PREEURO returned: " + currency[0]);
+		}
+
+		currency = Currency.getAvailableCurrencyCodes(new ULocale("en_US_Q"), new Date(System.currentTimeMillis()));
+		if (!"USD".equals(currency[0]))
+		{
+			errln("didn't return USD for en_US_Q returned: " + currency[0]);
+		}
+
+	}
+
+    public void TestDeprecatedCurrencyFormat() {
+        // bug 5952
+        Locale locale = new Locale("sr", "QQ");
+        DecimalFormatSymbols icuSymbols = new 
+        com.ibm.icu.text.DecimalFormatSymbols(locale);
+        String symbol = icuSymbols.getCurrencySymbol();
+        Currency currency = icuSymbols.getCurrency();
+        String expectCur = null;
+        String expectSym = "\u00A4";
+        if(!symbol.toString().equals(expectSym) || currency != null) {
+            errln("for " + locale + " expected " + expectSym+"/"+expectCur + " but got " + symbol+"/"+currency);
+        } else {
+            logln("for " + locale + " expected " + expectSym+"/"+expectCur + " and got " + symbol+"/"+currency);
+        }
+    }
+    
+    public void TestGetKeywordValues(){
+        ArrayList got = new ArrayList();
+        ArrayList expected = new ArrayList();
+        
+        String expectedResult = "";
+        String gotResult = "";
+        
+        String inputLocale[] = {
+            "zh__PINYIN",
+            "zh_TW_STROKE",
+            "zh_MO",
+            "zh",
+            "zh_Hant_MO",
+            "uk_UA",
+            "sr_Latn_ME",
+            "sr_Latn",
+            "sr",
+            "de",
+            "de__PHONEBOOK",
+            "no_NO",
+            "pa_Guru_IN",
+            "es",
+            "es__TRADITIONAL",
+            "ko_KR",
+            "kok",
+            "ms_MY",
+            "ab_AA_jdhdj@collation=xyz",
+            "de__PHONEBOOK@calendar=japanese",
+        };
+        
+        String currency[][]={
+                {"CNY"},
+                {"TWD"},
+                {"MOP"},
+                {"CNY"},
+                {"MOP"},
+                {"UAH"},
+                {"EUR"},
+                {"RSD"},
+                {"RSD"},
+                {"EUR"},
+                {"EUR"},
+                {"NOK"},
+                {"INR"},
+                {"EUR"},
+                {"EUR"},
+                {"KRW"},
+                {"INR"},
+                {"MYR"},
+                {},
+                {"EUR"}
+        };
+        
+        logln("Starting preferred currency keyword value test");
+        
+        for(int i=0;i<inputLocale.length;i++){
+            ULocale loc = new ULocale(inputLocale[i]);
+            for(int j=0;j<currency[i].length;j++){
+                expected.add(currency[i][j]);
+                expectedResult += currency[i][j]+" ";
+               
+            }
+            String[] s = Currency.getKeywordValues("currency", loc, true);
+            String s1;
+            for(int j=0;j<s.length;j++){
+                got.add((s1=s[j]));
+                gotResult +=s1+" ";
+            }
+            Collections.sort(got);
+            Collections.sort(expected);
+            if(got.equals(expected)){
+                logln("PASS: Locale :"+inputLocale[i]);
+                logln("EXPECTED :"+expectedResult);
+                logln("GOT      :"+gotResult);
+            }else{
+                errln("FAIL: Locale :"+inputLocale[i]+" EXPECTED :"+expectedResult+" GOT :"+gotResult);
+            }
+            gotResult=expectedResult="";
+            got.clear();
+            expected.clear();
+            
+        } 
+        
+        logln("Starting all available currency keyword value test");
+        
+        for(int i=0;i<inputLocale.length;i++){
+            ULocale loc = new ULocale(inputLocale[i]);
+            
+            String[] s = Currency.getKeywordValues("currency", loc, false);
+            if(s.length==160){
+                logln("PASS: Locale :"+inputLocale[i]);
+            }else{
+                errln("FAIL: Locale :"+inputLocale[i]);
+            }
+            
+        } 
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/DataInputCompressor.java b/src/com/ibm/icu/dev/test/util/DataInputCompressor.java
new file mode 100644
index 0000000..9c75b1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DataInputCompressor.java
@@ -0,0 +1,236 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.DataInput;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.util.ArrayList;
+import java.util.Collection;
+//import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+//import java.util.Map;
+
+//import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Simple data input compressor. Nothing fancy, but much smaller footprint for
+ * ints and many strings.
+ */
+public final class DataInputCompressor implements ObjectInput {
+    static final boolean SHOW = false;
+
+    private ObjectInput dataInput;
+
+    private transient StringBuffer stringBuffer = new StringBuffer();
+
+    public DataInputCompressor(ObjectInput dataInput) {
+        this.dataInput = dataInput;
+    }
+
+    public DataInput getDataInput() {
+        return dataInput;
+    }
+
+    public void setDataInput(ObjectInput dataInput) {
+        this.dataInput = dataInput;
+    }
+
+    public boolean readBoolean() throws IOException {
+        return dataInput.readBoolean();
+    }
+
+    public byte readByte() throws IOException {
+        return dataInput.readByte();
+    }
+
+    public int readUnsignedByte() throws IOException {
+        return dataInput.readUnsignedByte();
+    }
+
+    public double readDouble() throws IOException {
+        return dataInput.readDouble();
+    }
+
+    public float readFloat() throws IOException {
+        return dataInput.readFloat();
+    }
+
+    public void readFully(byte[] b) throws IOException {
+        dataInput.readFully(b);
+    }
+
+    public void readFully(byte[] b, int off, int len) throws IOException {
+        dataInput.readFully(b, off, len);
+    }
+
+    public int skipBytes(int n) throws IOException {
+        return dataInput.skipBytes(n);
+    }
+
+    public String readLine() throws IOException {
+        return dataInput.readLine();
+    }
+
+    public int available() throws IOException {
+        return dataInput.available();
+    }
+    public void close() throws IOException {
+        dataInput.close();
+    }
+    public int read() throws IOException {
+        return dataInput.read();
+    }
+    public int read(byte[] b) throws IOException {
+        return dataInput.read(b);
+    }
+    public int read(byte[] b, int off, int len) throws IOException {
+        return dataInput.read(b, off, len);
+    }
+    public Object readObject() throws ClassNotFoundException, IOException {
+        return dataInput.readObject();
+    }
+    public long skip(long n) throws IOException {
+        return dataInput.skip(n);
+    }
+    public String toString() {
+        return dataInput.toString();
+    }
+    // ==== New Routines ====
+
+    public char readChar() throws IOException {
+        return (char) readULong();
+    }
+
+    public short readShort() throws IOException {
+        return (short) readLong();
+    }
+
+    public int readUnsignedShort() throws IOException {
+        return (int) readULong();
+    }
+
+    public int readUShort() throws IOException {
+        return (int) readULong();
+    }
+
+    public int readInt() throws IOException {
+        return (int) readLong();
+    }
+
+    public int readUInt() throws IOException {
+        return (int) readULong();
+    }
+
+    public String readChars(int len) throws IOException {
+        stringBuffer.setLength(0);
+        for (int i = 0; i < len; ++i) {
+            int cp = (int) readULong();
+            UTF16.append(stringBuffer, cp);
+        }
+        return stringBuffer.toString();
+    }
+
+    public String readUTF() throws IOException {
+        int len = (int) readULong();
+        return readChars(len);
+    }
+
+    public long readLong() throws IOException {
+        long result = 0;
+        int offset = 0;
+        while (true) {
+            long input = readByte();
+            result |= (input & 0x7F) << offset;
+            if ((input & 0x80) == 0)
+                break;
+            offset += 7;
+        }
+        boolean negative = (result & 1) != 0; // get sign bit from the bottom,
+                                              // and invert
+        result >>>= 1;
+        if (negative)
+            result = ~result;
+        return result;
+    }
+
+    public long readULong() throws IOException {
+        long result = 0;
+        int offset = 0;
+        while (true) { // read sequence of 7 bits, with top bit = 1 for
+                       // continuation
+            int input = readByte();
+            result |= (input & 0x7F) << offset;
+            if ((input & 0x80) == 0)
+                return result;
+            offset += 7;
+        }
+    }
+
+    /**
+     *  
+     */
+    public Object[] readStringSet(Collection availableValues)
+            throws IOException {
+        int size = readUInt();
+        if (SHOW) System.out.println("readStringSet");
+        Object[] valuesList = new Object[size + 1];
+        // first item is null
+        String lastString = "";
+        ReadPool trailingPool = new ReadPool();
+        for (int i = 0; i < size; ++i) {
+            int common = readUInt();
+            boolean inPool = (common & 1) != 0;
+            common >>>= 1;
+            if (SHOW) System.out.println(common);
+            String current;
+            if (inPool) {
+                int poolIndex = readUInt();
+                if (SHOW) System.out.println("\t" + poolIndex);
+                current = (String) trailingPool.get(poolIndex);
+            } else {
+                current = readUTF();
+                trailingPool.add(current);
+            }
+            valuesList[i + 1] = lastString = lastString.substring(0, common)
+                    + current;
+            if (SHOW) System.out.println("\t\t" + lastString);
+            if (availableValues != null) availableValues.add(current);
+        }
+        return valuesList;
+    }
+    
+    public static class ReadPool {
+        private List trailingPool = new ArrayList();
+        public Object get(int index) {
+            return trailingPool.get(index);
+        }
+        public void add(Object o) {
+            trailingPool.add(o);
+        }
+    }
+
+    /**
+     * @throws IOException
+     * @throws ClassNotFoundException
+     * 
+     */
+    public Object[] readCollection(LinkedHashSet availableValues) throws ClassNotFoundException, IOException {
+        int size = readUInt();
+        Object[] valuesList = new Object[size + 1];
+        for (int i = 0; i < size; ++i) {
+            valuesList[i + 1] = readObject();
+        }
+       return valuesList;
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java b/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
new file mode 100644
index 0000000..76ef2ae
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
@@ -0,0 +1,215 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.DataOutput;
+import java.io.IOException;
+import java.io.ObjectOutput;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+//import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.SortedSet;
+//import java.util.TreeSet;
+
+//import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Simple data output compressor. Nothing fancy, but much smaller footprint for ints and many strings.
+ */
+public final class DataOutputCompressor implements ObjectOutput {
+    static final boolean SHOW = false;
+
+    private ObjectOutput dataOutput;
+
+    public DataOutputCompressor(ObjectOutput dataOutput) {
+        this.dataOutput = dataOutput;
+    }
+
+    public DataOutput getDataOutput() {
+        return dataOutput;
+    }
+
+    public void setDataOutput(ObjectOutput dataOutput) {
+        this.dataOutput = dataOutput;
+    }
+
+    public void write(byte[] b) throws IOException {
+        dataOutput.write(b);
+    }
+
+    public void write(byte[] b, int off, int len) throws IOException {
+        dataOutput.write(b, off, len);
+    }
+
+    public void write(int b) throws IOException {
+        dataOutput.write(b);
+    }
+
+    public void writeBoolean(boolean v) throws IOException {
+        dataOutput.writeBoolean(v);
+    }
+
+    public void writeByte(int v) throws IOException {
+        dataOutput.writeByte(v);
+    }
+
+    public void writeBytes(String s) throws IOException {
+        dataOutput.writeBytes(s);
+    }
+
+    public void writeDouble(double v) throws IOException {
+        dataOutput.writeDouble(v);
+    }
+
+    public void writeFloat(float v) throws IOException {
+        dataOutput.writeFloat(v);
+    }
+
+    public void close() throws IOException {
+        dataOutput.close();
+    }
+    public void flush() throws IOException {
+        dataOutput.flush();
+    }
+    public String toString() {
+        return dataOutput.toString();
+    }
+    public void writeObject(Object obj) throws IOException {
+        dataOutput.writeObject(obj);
+    }
+    // ==== New Routines ====
+
+    public void writeChar(int v) throws IOException {
+        writeULong(v);
+    }
+
+    public void writeShort(int v) throws IOException {
+        writeLong(v);
+    }
+
+    public void writeUShort(int v) throws IOException {
+        writeULong(v);
+    }
+
+    public void writeInt(int v) throws IOException {
+        writeLong(v);
+    }
+
+    public void writeUInt(int v) throws IOException {
+        writeULong(v);
+    }
+
+    public void writeUTF(String str) throws IOException {
+        writeULong(UTF16.countCodePoint(str));
+        writeChars(str);
+    }
+
+    public void writeChars(String s) throws IOException {
+        int cp = 0;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            writeULong(cp);
+        }
+    }
+
+    public void writeLong(long v) throws IOException {
+        long flag = 0; // put sign bit at the bottom, and invert
+        if (v < 0) {
+            v = ~v;
+            flag = 1;
+        }
+        v <<= 1;
+        v |= flag;
+        while (true) {
+            if ((v & ~0x7FL) == 0) {
+                dataOutput.writeByte((byte) v);
+                break;
+            }
+            dataOutput.writeByte((byte) (0x80L | v));
+            v >>>= 7;
+        }
+    }
+
+    public void writeULong(long v) throws IOException {
+        while (true) { // write sequence of 7 bits, with top bit = 1 for continuation
+            if ((v & ~0x7FL) == 0) {
+                dataOutput.writeByte((byte) v);
+                break;
+            }
+            dataOutput.writeByte((byte) (0x80L | v));
+            v >>>= 7;
+        }
+    }
+
+    /**
+     * 
+     */
+    public void writeStringSet(SortedSet c, Map object_index) throws IOException {
+        if (SHOW) System.out.println("writeStringSet");
+        writeUInt(c.size());
+        int i = 0;
+        object_index.put(null, new Integer(i++));
+        WritePool trailingPool = new WritePool();
+        String lastString = "";
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            String s = (String) it.next();
+            object_index.put(s, new Integer(i++));
+            int common = UnicodeMap.findCommon(lastString, s); // runlength encode
+            lastString = s;
+            String piece = s.substring(common);
+            if (SHOW) System.out.println(common);
+            common <<= 1;
+            int inPool = trailingPool.getIndex(piece);
+            if (inPool < 0) {
+                writeUInt(common);
+                writeUTF(piece);
+                trailingPool.put(piece);
+            } else {
+                writeUInt(common | 1);
+                writeUInt(inPool);
+                if (SHOW) System.out.println("\t" + inPool);
+            }
+            if (SHOW) System.out.println("\t\t" + lastString);
+        }
+    }
+    
+    public static class WritePool {
+        private Map trailingPool = new HashMap();
+        private int poolCount = 0;
+        public int getIndex(Object o) {
+            Integer inPool = (Integer) trailingPool.get(o);
+            if (inPool == null) return -1;
+            return inPool.intValue();
+        }
+        public void put(Object o) {
+            trailingPool.put(o, new Integer(poolCount++));
+        }
+    }
+
+    /**
+     * @throws IOException
+     * 
+     */
+    public void writeCollection(Collection c, Map object_index) throws IOException {
+        writeUInt(c.size());
+        int i = 0;
+        object_index.put(null, new Integer(i++));
+        for (Iterator it = c.iterator(); it.hasNext();) {
+            Object s = it.next();
+            dataOutput.writeObject(s);
+            if (object_index != null) object_index.put(s, new Integer(i++));
+        }
+    }
+}
+
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java b/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java
new file mode 100644
index 0000000..8f86acb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java
@@ -0,0 +1,65 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.text.DateFormat;
+
+/**
+ * @author srl
+ *
+ */
+public class DateTimeStyleSet extends FieldsSet {
+
+    private static final int DTS_DATE = 0;
+    private static final String kDATE = "DATE";
+    private static final int DTS_TIME = 1;
+    private static final String kTIME = "TIME";
+    private static final int DTS_COUNT = 2;
+    
+    private static final String kRELATIVE_ = "RELATIVE_";
+    
+    private int getOrNone(int which) {
+        if(!isSet(which)) {
+            return DateFormat.NONE;
+        } else {
+            return get(which);
+        }
+    }
+    
+    public DateTimeStyleSet() {
+        super(FieldsSet.NO_ENUM, DTS_COUNT);
+    }
+    
+    public int getDateStyle() {
+        return getOrNone(DTS_DATE);
+    }
+    
+    public int getTimeStyle() {
+        return getOrNone(DTS_TIME);
+    }
+    
+    protected void handleParseValue(FieldsSet inheritFrom, int field, String substr) {
+        if(substr.startsWith(kRELATIVE_)) {
+            parseValueEnum(DebugUtilitiesData.UDateFormatStyle, inheritFrom, field, substr.substring(kRELATIVE_.length()));
+            if(isSet(field)) {
+                set(field, get(field) | DateFormat.RELATIVE);
+            }
+        } else {
+            parseValueEnum(DebugUtilitiesData.UDateFormatStyle, inheritFrom, field, substr);
+        }
+    }
+    
+    protected int handleParseName(FieldsSet inheritFrom, String name, String substr) {
+        if(name.equals(kDATE)) {
+            return DTS_DATE;
+        } else if(name.equals(kTIME)) {
+            return DTS_TIME;
+        } else {
+            throw new IllegalArgumentException("Bad field: " + name);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/DebugUtilities.java b/src/com/ibm/icu/dev/test/util/DebugUtilities.java
new file mode 100644
index 0000000..e4e2ee4
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DebugUtilities.java
@@ -0,0 +1,77 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+/**
+ * @author srl
+ *
+ */
+
+public class DebugUtilities {
+    
+    /**
+     * Count enum types
+     * @return the number of enum types available, starting at 0
+     */
+    public static int typeCount() {
+        return DebugUtilitiesData.TYPES.length;
+    }
+    
+    /**
+     * Fetch the name of a particular type of enum
+     * @param type the enum type
+     * @return the name of the enum
+     */
+    public static String typeString(int type) {
+        return enumString(DebugUtilitiesData.UDebugEnumType, type);
+    }
+
+    /**
+     * Count the number of available enum values for an item, from 0
+     * @param type which enum to look up, such as DebugUtilitiesData.UCalendarDateFields
+     * @return the number of available enum values
+     */
+    public static int enumCount(int type) {
+        return DebugUtilitiesData.NAMES[type].length;
+    }
+    
+    /**
+     * Fetch the name of an enum
+     * @param type which enum to look up, such as DebugUtilitiesData.UCalendarDateFields
+     * @param field which enum value to look up
+     * @return the found name. Will throw an exception on out of bounds.
+     */
+    public static String enumString(int type, int field) {
+        return DebugUtilitiesData.NAMES[type][field];
+    }
+    
+    /**
+     * Lookup an enum by string
+     * @param type which enum to look up, such as DebugUtilitiesData.UCalendarDateFields
+     * @param string the string to search for
+     * @return the found enum value, or -1 if not found
+     */
+    public static int enumByString(int type, String string) {
+        for(int j=0;j<DebugUtilitiesData.NAMES[type].length;j++) {
+            if(string.equals(DebugUtilitiesData.NAMES[type][j])) {
+                return j;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * for consistency checking
+     * @param type the type of enum
+     * @return the expected ordinal value (should be equal to "field")
+     * @internal
+     */
+    public static int enumArrayValue(int type, int field) {
+        return DebugUtilitiesData.VALUES[type][field];
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java b/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
new file mode 100644
index 0000000..f42e0ee
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
@@ -0,0 +1,138 @@
+/** Copyright (C) 2009, International Business Machines Corporation and Others. All Rights Reserved. **/
+
+/* NOTE: this file is AUTOMATICALLY GENERATED by gentest. */
+
+package com.ibm.icu.dev.test.util;
+
+public class DebugUtilitiesData extends Object {
+    public static final String ICU4C_VERSION="4.1.2";
+    public static final int UDebugEnumType = 0;
+    public static final int UCalendarDateFields = 1;
+    public static final int UCalendarMonths = 2;
+    public static final int UDateFormatStyle = 3;
+    public static final String [] TYPES = { 
+        "UDebugEnumType", /* 0 */
+        "UCalendarDateFields", /* 1 */
+        "UCalendarMonths", /* 2 */
+        "UDateFormatStyle", /* 3 */
+    };
+
+    public static final String [][] NAMES = { 
+        /* UDebugEnumType, 0 */
+        { 
+           "UDebugEnumType", /* 0 */ 
+           "UCalendarDateFields", /* 1 */ 
+           "UCalendarMonths", /* 2 */ 
+           "UDateFormatStyle", /* 3 */ 
+        },
+        /* UCalendarDateFields, 1 */
+        { 
+           "ERA", /* 0 */ 
+           "YEAR", /* 1 */ 
+           "MONTH", /* 2 */ 
+           "WEEK_OF_YEAR", /* 3 */ 
+           "WEEK_OF_MONTH", /* 4 */ 
+           "DATE", /* 5 */ 
+           "DAY_OF_YEAR", /* 6 */ 
+           "DAY_OF_WEEK", /* 7 */ 
+           "DAY_OF_WEEK_IN_MONTH", /* 8 */ 
+           "AM_PM", /* 9 */ 
+           "HOUR", /* 10 */ 
+           "HOUR_OF_DAY", /* 11 */ 
+           "MINUTE", /* 12 */ 
+           "SECOND", /* 13 */ 
+           "MILLISECOND", /* 14 */ 
+           "ZONE_OFFSET", /* 15 */ 
+           "DST_OFFSET", /* 16 */ 
+           "YEAR_WOY", /* 17 */ 
+           "DOW_LOCAL", /* 18 */ 
+           "EXTENDED_YEAR", /* 19 */ 
+           "JULIAN_DAY", /* 20 */ 
+           "MILLISECONDS_IN_DAY", /* 21 */ 
+           "IS_LEAP_MONTH", /* 22 */ 
+        },
+        /* UCalendarMonths, 2 */
+        { 
+           "JANUARY", /* 0 */ 
+           "FEBRUARY", /* 1 */ 
+           "MARCH", /* 2 */ 
+           "APRIL", /* 3 */ 
+           "MAY", /* 4 */ 
+           "JUNE", /* 5 */ 
+           "JULY", /* 6 */ 
+           "AUGUST", /* 7 */ 
+           "SEPTEMBER", /* 8 */ 
+           "OCTOBER", /* 9 */ 
+           "NOVEMBER", /* 10 */ 
+           "DECEMBER", /* 11 */ 
+           "UNDECIMBER", /* 12 */ 
+        },
+        /* UDateFormatStyle, 3 */
+        { 
+           "FULL", /* 0 */ 
+           "LONG", /* 1 */ 
+           "MEDIUM", /* 2 */ 
+           "SHORT", /* 3 */ 
+        },
+    };
+
+    public static final int [][] VALUES = { 
+        /* UDebugEnumType, 0 */
+        { 
+           0, /* UDebugEnumType */
+           1, /* UCalendarDateFields */
+           2, /* UCalendarMonths */
+           3, /* UDateFormatStyle */
+        },
+        /* UCalendarDateFields, 1 */
+        { 
+           com.ibm.icu.util.Calendar.ERA, /* 0 */
+           com.ibm.icu.util.Calendar.YEAR, /* 1 */
+           com.ibm.icu.util.Calendar.MONTH, /* 2 */
+           com.ibm.icu.util.Calendar.WEEK_OF_YEAR, /* 3 */
+           com.ibm.icu.util.Calendar.WEEK_OF_MONTH, /* 4 */
+           com.ibm.icu.util.Calendar.DATE, /* 5 */
+           com.ibm.icu.util.Calendar.DAY_OF_YEAR, /* 6 */
+           com.ibm.icu.util.Calendar.DAY_OF_WEEK, /* 7 */
+           com.ibm.icu.util.Calendar.DAY_OF_WEEK_IN_MONTH, /* 8 */
+           com.ibm.icu.util.Calendar.AM_PM, /* 9 */
+           com.ibm.icu.util.Calendar.HOUR, /* 10 */
+           com.ibm.icu.util.Calendar.HOUR_OF_DAY, /* 11 */
+           com.ibm.icu.util.Calendar.MINUTE, /* 12 */
+           com.ibm.icu.util.Calendar.SECOND, /* 13 */
+           com.ibm.icu.util.Calendar.MILLISECOND, /* 14 */
+           com.ibm.icu.util.Calendar.ZONE_OFFSET, /* 15 */
+           com.ibm.icu.util.Calendar.DST_OFFSET, /* 16 */
+           com.ibm.icu.util.Calendar.YEAR_WOY, /* 17 */
+           com.ibm.icu.util.Calendar.DOW_LOCAL, /* 18 */
+           com.ibm.icu.util.Calendar.EXTENDED_YEAR, /* 19 */
+           com.ibm.icu.util.Calendar.JULIAN_DAY, /* 20 */
+           com.ibm.icu.util.Calendar.MILLISECONDS_IN_DAY, /* 21 */
+           com.ibm.icu.util.ChineseCalendar.IS_LEAP_MONTH, /* 22 */
+        },
+        /* UCalendarMonths, 2 */
+        { 
+           com.ibm.icu.util.Calendar.JANUARY, /* 0 */
+           com.ibm.icu.util.Calendar.FEBRUARY, /* 1 */
+           com.ibm.icu.util.Calendar.MARCH, /* 2 */
+           com.ibm.icu.util.Calendar.APRIL, /* 3 */
+           com.ibm.icu.util.Calendar.MAY, /* 4 */
+           com.ibm.icu.util.Calendar.JUNE, /* 5 */
+           com.ibm.icu.util.Calendar.JULY, /* 6 */
+           com.ibm.icu.util.Calendar.AUGUST, /* 7 */
+           com.ibm.icu.util.Calendar.SEPTEMBER, /* 8 */
+           com.ibm.icu.util.Calendar.OCTOBER, /* 9 */
+           com.ibm.icu.util.Calendar.NOVEMBER, /* 10 */
+           com.ibm.icu.util.Calendar.DECEMBER, /* 11 */
+           com.ibm.icu.util.Calendar.UNDECIMBER, /* 12 */
+        },
+        /* UDateFormatStyle, 3 */
+        { 
+           0, /* FULL */
+           1, /* LONG */
+           2, /* MEDIUM */
+           3, /* SHORT */
+        },
+    };
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java b/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java
new file mode 100644
index 0000000..dac8a91
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+/**
+ * @author srl
+ *
+ */
+public class DebugUtilitiesTest extends TestFmwk {
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+            new DebugUtilitiesTest().run(args);
+    }
+    
+    public void TestStrings() {
+        logln("ICU4C version was "+DebugUtilitiesData.ICU4C_VERSION);
+        int typeCount = DebugUtilities.typeCount();
+        if(typeCount==0) {
+            errln("typecount is 0!");
+        }
+        for(int j=0;j<typeCount;j++) {
+            int enumCount = DebugUtilities.enumCount(j);
+            logln("Type "+j+"/"+typeCount+": "+DebugUtilities.typeString(j) +" - enumCount "+enumCount);
+            for(int k=0;k<enumCount;k++) {
+                String enumString = DebugUtilities.enumString(j,k);
+                int enumValue = DebugUtilities.enumArrayValue(j, k);
+                int enumValueFromString = DebugUtilities.enumByString(j, enumString);
+                logln("     Enum "+k+"/"+enumCount+": "+enumString +" - value "+enumValue+", value from string:"+enumValueFromString);
+                if(enumValue != k) {
+                    errln("FAIL: Type "+j+"/"+typeCount+": "+DebugUtilities.typeString(j) +" -    Enum "+k+"/"+enumCount+": "+enumString +" -  ERR: value="+enumValue+" should be "+k);
+                }
+                if(enumValueFromString != k) {
+                    errln("FAIL: Type "+j+"/"+typeCount+": "+DebugUtilities.typeString(j) +" -    Enum "+k+"/"+enumCount+": "+enumString +" -  ERR: enumByString returned="+enumValueFromString+" should be "+k);
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/Differ.java b/src/com/ibm/icu/dev/test/util/Differ.java
new file mode 100644
index 0000000..4326336
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Differ.java
@@ -0,0 +1,171 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+/** VERY Basic Diff program. Compares two sequences of objects fed into it, and
+ * lets you know where they are different.
+ * @author Mark Davis
+ * @version 1.0
+ */
+
+final public class Differ {
+//    public static final String copyright =
+//      "Copyright (C) 2000, International Business Machines Corporation and others. All Rights Reserved.";
+
+    /**
+     * @param stackSize The size of the largest difference you expect.
+     * @param matchCount The number of items that have to be the same to count as a match
+     */
+    public Differ(int stackSize, int matchCount) {
+        this.STACKSIZE = stackSize;
+        this.EQUALSIZE = matchCount;
+        a = new Object[stackSize+matchCount];
+        b = new Object[stackSize+matchCount];
+    }
+
+    public void add (Object aStr, Object bStr) {
+        addA(aStr);
+        addB(bStr);
+    }
+
+    public void addA (Object aStr) {
+        flush();
+        a[aCount++] = aStr;
+    }
+
+    public void addB (Object bStr) {
+        flush();
+        b[bCount++] = bStr;
+    }
+
+    public int getALine(int offset) {
+        return aLine + maxSame + offset;
+    }
+
+    public Object getA(int offset) {
+        if (offset < 0) return last;
+        if (offset > aTop-maxSame) return next;
+        return a[offset];
+    }
+
+    public int getACount() {
+        return aTop-maxSame;
+    }
+
+    public int getBCount() {
+        return bTop-maxSame;
+    }
+
+    public int getBLine(int offset) {
+        return bLine + maxSame + offset;
+    }
+
+    public Object getB(int offset) {
+        if (offset < 0) return last;
+        if (offset > bTop-maxSame) return next;
+        return b[offset];
+    }
+
+    public void checkMatch(boolean finalPass) {
+        // find the initial strings that are the same
+        int max = aCount;
+        if (max > bCount) max = bCount;
+        int i;
+        for (i = 0; i < max; ++i) {
+            if (!a[i].equals(b[i])) break;
+        }
+        // at this point, all items up to i are equal
+        maxSame = i;
+        aTop = bTop = maxSame;
+        if (maxSame > 0) last = a[maxSame-1];
+        next = "";
+
+        if (finalPass) {
+            aTop = aCount;
+            bTop = bCount;
+            next = "";
+            return;
+        }
+
+        if (aCount - maxSame < EQUALSIZE || bCount - maxSame < EQUALSIZE) return;
+
+        // now see if the last few a's occur anywhere in the b's, or vice versa
+        int match = find (a, aCount-EQUALSIZE, aCount, b, maxSame, bCount);
+        if (match != -1) {
+            aTop = aCount-EQUALSIZE;
+            bTop = match;
+            next = a[aTop];
+            return;
+        }
+        match = find (b, bCount-EQUALSIZE, bCount, a, maxSame, aCount);
+        if (match != -1) {
+            bTop = bCount-EQUALSIZE;
+            aTop = match;
+            next = b[bTop];
+            return;
+        }
+        if (aCount >= STACKSIZE || bCount >= STACKSIZE) {
+            // flush some of them
+            aCount = (aCount + maxSame) / 2;
+            bCount = (bCount + maxSame) / 2;
+            next = "";
+        }
+    }
+
+    /** Convenient utility
+     * finds a segment of the first array in the second array.
+     * @return -1 if not found, otherwise start position in b
+     */
+
+    public int find (Object[] aArr, int aStart, int aEnd, Object[] bArr, int bStart, int bEnd) {
+        int len = aEnd - aStart;
+        int bEndMinus = bEnd - len;
+        tryA:
+        for (int i = bStart; i <= bEndMinus; ++i) {
+            for (int j = 0; j < len; ++j) {
+                if (!bArr[i + j].equals(aArr[aStart + j])) continue tryA;
+            }
+            return i; // we have a match!
+        }
+        return -1;
+    }
+
+    // ====================== PRIVATES ======================
+
+    private void flush() {
+        if (aTop != 0) {
+            int newCount = aCount-aTop;
+            System.arraycopy(a, aTop, a, 0, newCount);
+            aCount = newCount;
+            aLine += aTop;
+            aTop = 0;
+        }
+
+        if (bTop != 0) {
+            int newCount = bCount-bTop;
+            System.arraycopy(b, bTop, b, 0, newCount);
+            bCount = newCount;
+            bLine += bTop;
+            bTop = 0;
+        }
+    }
+
+    private int STACKSIZE;
+    private int EQUALSIZE;
+
+    private Object [] a;
+    private Object [] b;
+    private Object last = "";
+    private Object next = "";
+    private int aCount = 0;
+    private int bCount = 0;
+    private int aLine = 1;
+    private int bLine = 1;
+    private int maxSame = 0, aTop = 0, bTop = 0;
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/DisplayNameTest.java b/src/com/ibm/icu/dev/test/util/DisplayNameTest.java
new file mode 100644
index 0000000..04010a6
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/DisplayNameTest.java
@@ -0,0 +1,399 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+public class DisplayNameTest extends TestFmwk {
+    static final boolean SHOW_ALL = false;
+    
+    public static void main(String[] args) throws Exception {
+        new DisplayNameTest().run(args);
+    }
+        
+    interface DisplayNameGetter {
+        public String get(ULocale locale, String code, Object context);
+    }
+
+    Map[] codeToName = new Map[10];
+    {
+        for (int k = 0; k < codeToName.length; ++k) codeToName[k] = new HashMap();
+    }
+    
+    static final Object[] zoneFormats = {new Integer(0), new Integer(1), new Integer(2),
+        new Integer(3), new Integer(4), new Integer(5), new Integer(6), new Integer(7)};
+    static final Object[] currencyFormats = {new Integer(Currency.SYMBOL_NAME), new Integer(Currency.LONG_NAME)};
+    static final Object[] NO_CONTEXT = {null};
+    
+    static final Date JAN1;
+    static final Date JULY1;
+
+    static {
+        Calendar cal = new GregorianCalendar(2004, Calendar.JANUARY, 1);
+        JAN1 = cal.getTime();
+        cal.set(Calendar.MONTH, Calendar.JULY);
+        JULY1 = cal.getTime();
+    }
+
+    String[] countries = addUnknown(ULocale.getISOCountries(),2);
+    String[] languages = addUnknown(ULocale.getISOLanguages(),2);
+    String[] zones = addUnknown(getRealZoneIDs(),5);
+    String[] scripts = addUnknown(getCodes(new ULocale("en","US",""), "Scripts"),4);
+    // TODO fix once there is a way to get a list of all script codes
+    String[] currencies = addUnknown(getCodes(new ULocale("en","",""), "Currencies"),3);
+    // TODO fix once there is a way to get a list of all currency codes
+
+    public void TestLocales() {
+        ULocale[] locales = ULocale.getAvailableLocales();
+        for (int i = 0; i < locales.length; ++i) {
+            checkLocale(locales[i]);
+        }
+    }
+
+    /**
+     * @return
+     */
+    private String[] getRealZoneIDs() {
+        Set temp = new TreeSet(Arrays.asList(TimeZone.getAvailableIDs()));
+        temp.removeAll(getAliasMap().keySet());
+        return (String[])temp.toArray(new String[temp.size()]);
+    }
+
+    public void TestEnglish() {
+        checkLocale(ULocale.ENGLISH);
+    }
+
+    public void TestFrench() {
+        checkLocale(ULocale.FRENCH);
+    }
+
+    private void checkLocale(ULocale locale) {
+        logln("Checking " + locale);
+        check("Language", locale, languages, null, new DisplayNameGetter() {
+            public String get(ULocale loc, String code, Object context) {
+                return ULocale.getDisplayLanguage(code, loc);
+            }
+        });
+        check("Script", locale, scripts, null, new DisplayNameGetter() {
+            public String get(ULocale loc, String code, Object context) {
+                // TODO This is kinda a hack; ought to be direct way.
+                return ULocale.getDisplayScript("en_"+code, loc);
+            }
+        });
+        check("Country", locale, countries, null, new DisplayNameGetter() {
+            public String get(ULocale loc, String code, Object context) {
+                // TODO This is kinda a hack; ought to be direct way.
+                return ULocale.getDisplayCountry("en_"+code, loc);
+            }
+        });
+        check("Currencies", locale, currencies, currencyFormats, new DisplayNameGetter() {
+            public String get(ULocale loc, String code, Object context) {
+                Currency s = Currency.getInstance(code);
+                return s.getName(loc, ((Integer)context).intValue(), new boolean[1]);
+            }
+        });
+        // comment this out, because the zone string information is lost
+        // we'd have to access the resources directly to test them
+
+        check("Zones", locale, zones, zoneFormats, new DisplayNameGetter() {
+            // TODO replace once we have real API
+            public String get(ULocale loc, String code, Object context) {
+                return getZoneString(loc, code, ((Integer)context).intValue());
+            }
+        });
+
+    }
+    
+    Map zoneData = new HashMap();
+    
+    private String getZoneString(ULocale locale, String olsonID, int item) {
+        Map data = (Map)zoneData.get(locale);
+        if (data == null) {
+            data = new HashMap();
+            if (SHOW_ALL) System.out.println();
+            if (SHOW_ALL) System.out.println("zones for " + locale);
+            ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(locale);
+            ICUResourceBundle table = bundle.getWithFallback("zoneStrings");
+            for (int i = 0; i < table.getSize(); ++i) {
+                UResourceBundle stringSet = table.get(i);
+                //ICUResourceBundle stringSet = table.getWithFallback(String.valueOf(i));
+                String key = stringSet.getString(0);
+                if (SHOW_ALL) System.out.println("key: " + key);
+                ArrayList list = new ArrayList();
+                for (int j = 1; j < stringSet.getSize(); ++j) {
+                    String entry = stringSet.getString(j);
+                    if (SHOW_ALL) System.out.println("  entry: " + entry);
+                    list.add(entry);
+                }
+                data.put(key, list.toArray(new String[list.size()]));
+            }
+            zoneData.put(locale, data);
+        }
+        String[] strings = (String[]) data.get(olsonID);
+        if (strings == null || item >= strings.length) return olsonID;
+        return strings[item];
+    }
+    
+    static String[][] zonesAliases = {
+        {"America/Atka", "America/Atka"},
+        {"America/Ensenada", "America/Ensenada"},
+        {"America/Fort_Wayne", "America/Fort_Wayne"},
+        {"America/Indiana/Indianapolis", "America/Indiana/Indianapolis"},
+        {"America/Kentucky/Louisville", "America/Kentucky/Louisville"},
+        {"America/Knox_IN", "America/Knox_IN"},
+        {"America/Porto_Acre", "America/Porto_Acre"},
+        {"America/Rosario", "America/Rosario"},
+        {"America/Shiprock", "America/Shiprock"},
+        {"America/Virgin", "America/Virgin"},
+        {"Antarctica/South_Pole", "Antarctica/South_Pole"},
+        {"Arctic/Longyearbyen", "Arctic/Longyearbyen"},
+        {"Asia/Ashkhabad", "Asia/Ashkhabad"},
+        {"Asia/Chungking", "Asia/Chungking"},
+        {"Asia/Dacca", "Asia/Dacca"},
+        {"Asia/Istanbul", "Asia/Istanbul"},
+        {"Asia/Macao", "Asia/Macao"},
+        {"Asia/Tel_Aviv", "Asia/Tel_Aviv"},
+        {"Asia/Thimbu", "Asia/Thimbu"},
+        {"Asia/Ujung_Pandang", "Asia/Ujung_Pandang"},
+        {"Asia/Ulan_Bator", "Asia/Ulan_Bator"},
+        {"Australia/ACT", "Australia/ACT"},
+        {"Australia/Canberra", "Australia/Canberra"},
+        {"Australia/LHI", "Australia/LHI"},
+        {"Australia/NSW", "Australia/NSW"},
+        {"Australia/North", "Australia/North"},
+        {"Australia/Queensland", "Australia/Queensland"},
+        {"Australia/South", "Australia/South"},
+        {"Australia/Tasmania", "Australia/Tasmania"},
+        {"Australia/Victoria", "Australia/Victoria"},
+        {"Australia/West", "Australia/West"},
+        {"Australia/Yancowinna", "Australia/Yancowinna"},
+        {"Brazil/Acre", "Brazil/Acre"},
+        {"Brazil/DeNoronha", "Brazil/DeNoronha"},
+        {"Brazil/East", "Brazil/East"},
+        {"Brazil/West", "Brazil/West"},
+        {"CST6CDT", "CST6CDT"},
+        {"Canada/Atlantic", "Canada/Atlantic"},
+        {"Canada/Central", "Canada/Central"},
+        {"Canada/East-Saskatchewan", "Canada/East-Saskatchewan"},
+        {"Canada/Eastern", "Canada/Eastern"},
+        {"Canada/Mountain", "Canada/Mountain"},
+        {"Canada/Newfoundland", "Canada/Newfoundland"},
+        {"Canada/Pacific", "Canada/Pacific"},
+        {"Canada/Saskatchewan", "Canada/Saskatchewan"},
+        {"Canada/Yukon", "Canada/Yukon"},
+        {"Chile/Continental", "Chile/Continental"},
+        {"Chile/EasterIsland", "Chile/EasterIsland"},
+        {"Cuba", "Cuba"},
+        {"EST", "EST"},
+        {"EST5EDT", "EST5EDT"},
+        {"Egypt", "Egypt"},
+        {"Eire", "Eire"},
+        {"Etc/GMT+0", "Etc/GMT+0"},
+        {"Etc/GMT-0", "Etc/GMT-0"},
+        {"Etc/GMT0", "Etc/GMT0"},
+        {"Etc/Greenwich", "Etc/Greenwich"},
+        {"Etc/Universal", "Etc/Universal"},
+        {"Etc/Zulu", "Etc/Zulu"},
+        {"Europe/Nicosia", "Europe/Nicosia"},
+        {"Europe/Tiraspol", "Europe/Tiraspol"},
+        {"GB", "GB"},
+        {"GB-Eire", "GB-Eire"},
+        {"GMT", "GMT"},
+        {"GMT+0", "GMT+0"},
+        {"GMT-0", "GMT-0"},
+        {"GMT0", "GMT0"},
+        {"Greenwich", "Greenwich"},
+        {"HST", "HST"},
+        {"Hongkong", "Hongkong"},
+        {"Iceland", "Iceland"},
+        {"Iran", "Iran"},
+        {"Israel", "Israel"},
+        {"Jamaica", "Jamaica"},
+        {"Japan", "Japan"},
+        {"Kwajalein", "Kwajalein"},
+        {"Libya", "Libya"},
+        {"MST", "MST"},
+        {"MST7MDT", "MST7MDT"},
+        {"Mexico/BajaNorte", "Mexico/BajaNorte"},
+        {"Mexico/BajaSur", "Mexico/BajaSur"},
+        {"Mexico/General", "Mexico/General"},
+        {"Mideast/Riyadh87", "Mideast/Riyadh87"},
+        {"Mideast/Riyadh88", "Mideast/Riyadh88"},
+        {"Mideast/Riyadh89", "Mideast/Riyadh89"},
+        {"NZ", "NZ"},
+        {"NZ-CHAT", "NZ-CHAT"},
+        {"Navajo", "Navajo"},
+        {"PRC", "PRC"},
+        {"PST8PDT", "PST8PDT"},
+        {"Pacific/Samoa", "Pacific/Samoa"},
+        {"Poland", "Poland"},
+        {"Portugal", "Portugal"},
+        {"ROC", "ROC"},
+        {"ROK", "ROK"},
+        {"Singapore", "Singapore"},
+        {"SystemV/AST4", "SystemV/AST4"},
+        {"SystemV/AST4ADT", "SystemV/AST4ADT"},
+        {"SystemV/CST6", "SystemV/CST6"},
+        {"SystemV/CST6CDT", "SystemV/CST6CDT"},
+        {"SystemV/EST5", "SystemV/EST5"},
+        {"SystemV/EST5EDT", "SystemV/EST5EDT"},
+        {"SystemV/HST10", "SystemV/HST10"},
+        {"SystemV/MST7", "SystemV/MST7"},
+        {"SystemV/MST7MDT", "SystemV/MST7MDT"},
+        {"SystemV/PST8", "SystemV/PST8"},
+        {"SystemV/PST8PDT", "SystemV/PST8PDT"},
+        {"SystemV/YST9", "SystemV/YST9"},
+        {"SystemV/YST9YDT", "SystemV/YST9YDT"},
+        {"Turkey", "Turkey"},
+        {"UCT", "UCT"},
+        {"US/Alaska", "US/Alaska"},
+        {"US/Aleutian", "US/Aleutian"},
+        {"US/Arizona", "US/Arizona"},
+        {"US/Central", "US/Central"},
+        {"US/East-Indiana", "US/East-Indiana"},
+        {"US/Eastern", "US/Eastern"},
+        {"US/Hawaii", "US/Hawaii"},
+        {"US/Indiana-Starke", "US/Indiana-Starke"},
+        {"US/Michigan", "US/Michigan"},
+        {"US/Mountain", "US/Mountain"},
+        {"US/Pacific", "US/Pacific"},
+        {"US/Pacific-New", "US/Pacific-New"},
+        {"US/Samoa", "US/Samoa"},
+        {"UTC", "UTC"},
+        {"Universal", "Universal"},
+        {"W-SU", "W-SU"},
+        {"Zulu", "Zulu"},
+        {"ACT", "ACT"},
+        {"AET", "AET"},
+        {"AGT", "AGT"},
+        {"ART", "ART"},
+        {"AST", "AST"},
+        {"BET", "BET"},
+        {"BST", "BST"},
+        {"CAT", "CAT"},
+        {"CNT", "CNT"},
+        {"CST", "CST"},
+        {"CTT", "CTT"},
+        {"EAT", "EAT"},
+        {"ECT", "ECT"},
+        {"IET", "IET"},
+        {"IST", "IST"},
+        {"JST", "JST"},
+        {"MIT", "MIT"},
+        {"NET", "NET"},
+        {"NST", "NST"},
+        {"PLT", "PLT"},
+        {"PNT", "PNT"},
+        {"PRT", "PRT"},
+        {"PST", "PST"},
+        {"SST", "SST"},
+        {"VST", "VST"},
+    };
+
+    /**
+     * Hack to get code list
+     * @return
+     */
+    private static String[] getCodes(ULocale locale, String tableName) {
+        // TODO remove Ugly Hack
+        // get stuff
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(locale);
+        ICUResourceBundle table = bundle.getWithFallback(tableName);
+        // copy into array
+        ArrayList stuff = new ArrayList();
+        for (Enumeration keys = table.getKeys(); keys.hasMoreElements();) {
+            stuff.add(keys.nextElement());
+        }
+        String[] result = new String[stuff.size()];
+        return (String[]) stuff.toArray(result);
+        //return new String[] {"Latn", "Cyrl"};
+    }
+
+    /**
+     * Add two unknown strings, just to make sure they get passed through without colliding
+     * @param strings
+     * @return
+     */
+    private String[] addUnknown(String[] strings, int len) {
+        String[] result = new String[strings.length + 2];
+        result[0] = "x1unknown".substring(0,len);
+        result[1] = "y1nknown".substring(0,len);
+        System.arraycopy(strings,0,result,2,strings.length);
+        return result;
+    }
+    
+    Map bogusZones = null;
+    
+    private Map getAliasMap() {
+        if (bogusZones == null) {
+            bogusZones = new TreeMap();
+            for (int i = 0; i < zonesAliases.length; ++i) {
+                bogusZones.put(zonesAliases[i][0], zonesAliases[i][1]);
+            }
+        }
+        return bogusZones;
+    }
+
+
+    private void check(String type, ULocale locale, 
+      String[] codes, Object[] contextList, DisplayNameGetter getter) {
+        if (contextList == null) contextList = NO_CONTEXT;
+        for (int k = 0; k < contextList.length; ++k) codeToName[k].clear();
+        for (int j = 0; j < codes.length; ++j) {
+            String code = codes[j];
+            for (int k = 0; k < contextList.length; ++k) {
+                Object context = contextList[k];
+                String name = getter.get(locale, code, context);
+                if (name == null || name.length() == 0) {
+                    errln(
+                        "Null or Zero-Length Display Name\t" + type
+                        + "\t(" + ((context != null) ? context : "") + ")"
+                        + ":\t" + locale + " [" + locale.getDisplayName(ULocale.ENGLISH) + "]"
+                        + "\t" + code + " [" + getter.get(ULocale.ENGLISH, code, context) + "]"
+                    );
+                    continue;            
+                }
+                String otherCode = (String) codeToName[k].get(name);
+                if (otherCode != null) {
+                    errln(
+                        "Display Names collide for\t" + type                        + "\t(" + ((context != null) ? context : "") + ")"
+                        + ":\t" + locale + " [" + locale.getDisplayName(ULocale.ENGLISH) + "]"
+                        + "\t" + code + " [" + getter.get(ULocale.ENGLISH, code, context) + "]"
+                        + "\t& " + otherCode + " [" + getter.get(ULocale.ENGLISH, otherCode, context) + "]"
+                        + "\t=> " + name
+                    );
+                } else {
+                    codeToName[k].put(name, code);
+                    if (SHOW_ALL) logln(
+                        type 
+                        + " (" + ((context != null) ? context : "") + ")"
+                        + "\t" + locale + " [" + locale.getDisplayName(ULocale.ENGLISH) + "]"
+                        + "\t" + code + "[" + getter.get(ULocale.ENGLISH, code, context) + "]"
+                        + "\t=> " + name 
+                    );
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ElapsedTimer.java b/src/com/ibm/icu/dev/test/util/ElapsedTimer.java
new file mode 100644
index 0000000..946c3de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ElapsedTimer.java
@@ -0,0 +1,106 @@
+//
+//  ElapsedTimer.java
+//
+//  Created by Steven R. Loomis on 11/11/2005.
+//  Copyright 2005-2006 IBM. All rights reserved.
+//
+
+package com.ibm.icu.dev.test.util;
+
+import java.util.*;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.text.MessageFormat;
+
+
+/**
+ * Simple stopwatch timer.
+ * Usage:   { ElapsedTimer et = new ElapsedTimer(); 
+ *            do_some_stuff;  
+ *            System.out.println("It took " + et + " to do stuff."); }
+ *
+ * Advanced:   { ElapsedTimer et = new ElapsedTimer("Thing2's time: {0}");  // messageformat pattern
+ *            do_thing_2();  
+ *            System.out.println(et.toString()); }
+ *
+ * More advanced:  NumberFormat and/or MessageFormat can be provided in the constructor
+ */
+public final class ElapsedTimer {
+
+    /**
+     * Convenience method to print the elasped time (in milliseconds) 
+     */
+    public static String elapsedTime(long start, long end) {
+        return diffTime(getFormat(), start, end);
+    }
+
+    public static String elapsedTime(long start) {
+        return diffTime(getFormat(), start, System.currentTimeMillis());
+    }
+    
+    // class
+
+    private long startTime = System.currentTimeMillis();
+    private NumberFormat myDurationFormat = null;
+    private MessageFormat myMsgFormat = null;
+
+    public ElapsedTimer() {            
+    }
+    
+    public ElapsedTimer(MessageFormat aMsgFmt) {
+        myMsgFormat = aMsgFmt;
+    }
+
+    public ElapsedTimer(NumberFormat aNumFmt) {
+        myDurationFormat = aNumFmt;
+    }
+    
+    public ElapsedTimer(MessageFormat aMsgFmt, NumberFormat aNumFmt) {
+        myMsgFormat = aMsgFmt;
+        myDurationFormat = aNumFmt;
+    }
+
+    public ElapsedTimer(String pattern) {
+        myMsgFormat = new MessageFormat(pattern);
+    }
+
+    public ElapsedTimer(String pattern, NumberFormat aNumFmt) {
+        myMsgFormat = new MessageFormat(pattern);
+        myDurationFormat = aNumFmt;
+    }
+
+    /**
+     * @return elapsed time in seconds since object creation
+     */
+    public final String toString() { 
+        long endTime = System.currentTimeMillis();
+        String duration = diffTime(myDurationFormat, startTime, endTime);
+        if(myMsgFormat == null) {
+            return duration;
+        } else {
+            return myMsgFormat.format(new Object[] {duration});
+        }
+    }
+
+    private static NumberFormat gFormat = null;
+    
+    private static NumberFormat getFormat() {
+        if(gFormat == null) {
+            gFormat = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.DURATION);
+        }
+        return gFormat; 
+    }
+    
+    private static String diffTime(NumberFormat fmt, long start, long end) {
+        if(fmt==null) {
+            fmt = getFormat();
+        }
+        synchronized(fmt) {
+            long age = end - start;
+            double diff = (double)age;
+            diff = diff/(double)1000.0; // millis per second
+            return fmt.format(diff);
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/dev/test/util/Equator.java b/src/com/ibm/icu/dev/test/util/Equator.java
new file mode 100644
index 0000000..e3b0353
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Equator.java
@@ -0,0 +1,27 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+public interface Equator {
+    /**
+      * Comparator function. If overridden, must handle case of null,
+      * and compare any two objects that could be compared.
+      * Must obey normal rules of symmetry: a=b => b=a
+      * and transitivity: a=b & b=c => a=b)
+      * @param a
+      * @param b
+      * @return true if a and b are equal
+      */
+     public boolean isEqual(Object a, Object b);
+
+    /**
+     * Must obey normal rules: a=b => getHashCode(a)=getHashCode(b)
+     * @param object
+     * @return a hash code for the object
+     */
+    public int getHashCode(Object object);
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/FieldsSet.java b/src/com/ibm/icu/dev/test/util/FieldsSet.java
new file mode 100644
index 0000000..f60a7d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/FieldsSet.java
@@ -0,0 +1,241 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @author srl
+ * 
+ * analog of FieldsSet in C++
+ */
+public class FieldsSet {
+    public static final int NO_ENUM = -1;
+
+    protected FieldsSet(int whichEnum, int fieldsCount) {
+        if (fieldsCount <= 0 && whichEnum != NO_ENUM) {
+            fieldsCount = DebugUtilities.enumCount(whichEnum);
+        }
+        fEnum = whichEnum;
+        fFieldsCount = fieldsCount;
+        if(fieldsCount<0) {
+            throw new InternalError("Preposterous field count " + fieldsCount);
+        }
+        fValues = new int[fFieldsCount];
+        fIsSet = new boolean[fFieldsCount];
+        clear();
+    }
+
+    protected int fEnum = NO_ENUM;
+
+    protected int fFieldsCount = 0;
+
+    protected int fValues[] = null;
+
+    protected boolean fIsSet[] = null;
+
+    public void clear() {
+        for (int i = 0; i < fFieldsCount; i++) {
+            clear(i);
+        }
+    }
+
+    public void clear(int field) {
+        fValues[field] = -1;
+        fIsSet[field] = false;
+    }
+
+    public void set(int field, int amount) {
+        fValues[field] = amount;
+        fIsSet[field] = true;
+    }
+
+    public boolean isSet(int field) {
+        return fIsSet[field];
+    }
+
+    public int get(int field) {
+        if (fIsSet[field]) {
+            return fValues[field];
+        } else {
+            return -1;
+        }
+    }
+
+    public boolean isSameType(FieldsSet other) {
+        return ((other.fEnum == fEnum) && (other.fFieldsCount == fFieldsCount));
+    }
+
+    public int fieldCount() {
+        return fFieldsCount;
+    }
+
+    /**
+     * @param other  "expected" set to match against
+     * @return a formatted string listing which fields are set in this, with the
+     *         comparison made agaainst those fields in other, or, 'null' if there is no difference.
+     */
+    public String diffFrom(FieldsSet other) {
+        StringBuffer str = new StringBuffer();
+        if(!isSameType(other)) {
+            throw new IllegalArgumentException("U_ILLEGAL_ARGUMENT_ERROR: FieldsSet of a different type!");
+        }
+        for (int i=0; i<fieldCount(); i++) {
+            if (isSet(i)) {
+                int myVal = get(i);
+                int theirVal = other.get(i);
+                
+                if(fEnum != NO_ENUM) {
+                    String fieldName = DebugUtilities.enumString(fEnum, i);
+                    
+                    String aval = Integer.toString(myVal);
+                    String bval = Integer.toString(theirVal);
+
+                    str.append(fieldName +"="+aval+" not "+bval+", ");
+                } else {
+                    str.append(Integer.toString(i) + "=" + myVal+" not " + theirVal+", ");
+                }
+            }
+        }
+        if(str.length()==0) {
+            return null;
+        }
+        return str.toString();
+    }
+
+    /**
+     * @param str string to parse
+     * @param status formatted string for status
+     */
+    public int parseFrom(String str) {
+        return parseFrom(str, null);
+    }
+
+    public int parseFrom(String str, FieldsSet inheritFrom) {
+        int goodFields = 0;
+        
+        String[] fields = Utility.split(str, ',');
+        for(int i=0;i<fields.length;i++) {
+            String fieldStr = fields[i];
+            String kv[] = Utility.split(fieldStr, '=');
+            if(kv.length < 1 || kv.length > 2) {
+                throw new InternalError("split around '=' failed: " + fieldStr);
+            }
+            String key = kv[0];
+            String value = "";
+            if(kv.length>1) {
+                value = kv[1];
+            }
+            
+            int field = handleParseName(inheritFrom, key, value);
+            if(field != -1) {
+                handleParseValue(inheritFrom, field, value);
+                goodFields++;
+            }
+        }
+
+        return goodFields;
+    }
+
+    /**
+     * Callback interface for subclass. This function is called when parsing a
+     * field name, such as "MONTH" in "MONTH=4". Base implementation is to
+     * lookup the enum value using udbg_* utilities, or else as an integer if
+     * enum is not available.
+     * 
+     * If there is a special directive, the implementer can catch it here and
+     * return -1 after special processing completes.
+     * 
+     * @param inheritFrom  the set inheriting from - may be null.
+     * @param name  the field name (key side)
+     * @param substr  the string in question (value side)
+     * @param status  error status - set to error for failure.
+     * @return field number, or negative if field should be skipped.
+     */
+    protected int handleParseName(FieldsSet inheritFrom, String name,
+            String substr) {
+        int field = -1;
+        if(fEnum != NO_ENUM) {
+            field = DebugUtilities.enumByString(fEnum, name);
+        }
+        if(field < 0) {
+            field = Integer.parseInt(name);
+        }
+        return field;
+    }
+
+    /**
+     * Callback interface for subclass. Base implementation is to call
+     * parseValueDefault(...)
+     * 
+     * @param inheritFrom  the set inheriting from - may be null.
+     * @param field   which field is being parsed
+     * @param substr  the string in question (value side)
+     * @param status  error status - set to error for failure.
+     * @see parseValueDefault
+     */
+    protected void handleParseValue(FieldsSet inheritFrom, int field,
+            String substr) {
+        parseValueDefault(inheritFrom, field, substr);
+    }
+
+    /**
+     * the default implementation for handleParseValue. Base implementation is
+     * to parse a decimal integer value, or inherit from inheritFrom if the
+     * string is 0-length. Implementations of this function should call
+     * set(field,...) on successful parse.
+     * 
+     * @see handleParseValue
+     */
+    protected void parseValueDefault(FieldsSet inheritFrom, int field,
+            String substr) {
+        if(substr.length()==0) {
+            if(inheritFrom == null) {
+                throw new InternalError("Trying to inherit from field " + field + " but inheritFrom is null");
+            }
+            if(!inheritFrom.isSet(field)) {
+                throw new InternalError("Trying to inherit from field " + field + " but inheritFrom["+field+"] is  not set");
+            }
+            set(field,inheritFrom.get(field));
+        } else {
+            int value = Integer.parseInt(substr);
+            set(field, value);
+        }
+    }
+
+    /**
+     * convenience implementation for handleParseValue attempt to load a value
+     * from an enum value using udbg_enumByString() if fails, will call
+     * parseValueDefault()
+     * 
+     * @see handleParseValue
+     */
+    protected void parseValueEnum(int type, FieldsSet inheritFrom, int field,
+            String substr) {
+        int value = DebugUtilities.enumByString(type, substr);
+        if(value>=0) {
+            set(field,value);
+            return;
+        }
+        parseValueDefault(inheritFrom, field, substr);
+    }
+    
+    public String fieldName(int field) {
+        return (fEnum!=NO_ENUM)?DebugUtilities.enumString(fEnum, field):Integer.toString(field);
+    }
+    
+    public String toString() {
+        String str = getClass().getName()+" ["+fFieldsCount+","
+        +(fEnum!=NO_ENUM?DebugUtilities.typeString(fEnum):Integer.toString(fEnum))+"]: ";
+        for(int i=0;i<fFieldsCount;i++) {
+            if(isSet(i)) {
+                str = str + fieldName(i)+"="+get(i)+",";
+            }
+        }
+        return str; 
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/FileUtilities.java b/src/com/ibm/icu/dev/test/util/FileUtilities.java
new file mode 100644
index 0000000..61aea32
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/FileUtilities.java
@@ -0,0 +1,82 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.BufferedReader;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Locale;
+
+public class FileUtilities {
+    public static void appendFile(String filename, String encoding, PrintWriter output) throws IOException {
+        appendFile(filename, encoding, output, null);
+    }
+    
+    public static void appendFile(String filename, String encoding, PrintWriter output, String[] replacementList) throws IOException {
+        BufferedReader br = BagFormatter.openReader("", filename, encoding);
+        /*
+        FileInputStream fis = new FileInputStream(filename);
+        InputStreamReader isr = (encoding == UTF8_UNIX || encoding == UTF8_WINDOWS) ? new InputStreamReader(fis, "UTF8") :  new InputStreamReader(fis);
+        BufferedReader br = new BufferedReader(isr, 32*1024);
+        */
+        while (true) {
+            String line = br.readLine();
+            if (line == null) break;
+            if (replacementList != null) {
+                for (int i = 0; i < replacementList.length; i += 2) {
+                    line = replace(line, replacementList[i], replacementList[i+1]);
+                }
+            }
+            output.println(line);
+        }
+    }
+
+    /**
+     * Replaces all occurances of piece with replacement, and returns new String
+     */
+    public static String replace(String source, String piece, String replacement) {
+        if (source == null || source.length() < piece.length()) return source;
+        int pos = 0;
+        while (true) {
+            pos = source.indexOf(piece, pos);
+            if (pos < 0) return source;
+            source = source.substring(0,pos) + replacement + source.substring(pos + piece.length());
+            pos += replacement.length();
+        }
+    }
+    
+    public static String replace(String source, String[][] replacements) {
+        return replace(source, replacements, replacements.length);
+    }    
+    
+    public static String replace(String source, String[][] replacements, int count) {
+        for (int i = 0; i < count; ++i) {
+            source = replace(source, replacements[i][0], replacements[i][1]);
+        }
+        return source;
+    }    
+    
+    public static String replace(String source, String[][] replacements, boolean reverse) {
+        if (!reverse) return replace(source, replacements);
+        for (int i = 0; i < replacements.length; ++i) {
+            source = replace(source, replacements[i][1], replacements[i][0]);
+        }
+        return source;
+    }
+    
+    public static String anchorize(String source) {
+        String result = source.toLowerCase(Locale.ENGLISH).replaceAll("[^\\p{L}\\p{N}]+", "_");
+        if (result.endsWith("_")) result = result.substring(0,result.length()-1);
+        if (result.startsWith("_")) result = result.substring(1);
+        return result;
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java b/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java
new file mode 100644
index 0000000..04213de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java
@@ -0,0 +1,114 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUBinary;
+import java.io.IOException;
+import java.io.ByteArrayInputStream;
+
+/**
+* Testing class for Trie. Tests here will be simple, since both CharTrie and 
+* IntTrie are very similar and are heavily used in other parts of ICU4J.
+* Codes using Tries are expected to have detailed tests.
+* @author Syn Wee Quek
+* @since release 2.1 Jan 01 2002
+*/
+public final class ICUBinaryTest extends TestFmwk 
+{ 
+    // constructor ---------------------------------------------------
+  
+    /**
+    * Constructor
+    */
+    public ICUBinaryTest()
+    {
+    }
+      
+    // public methods -----------------------------------------------
+    
+    public static void main(String arg[]) 
+    {
+        ICUBinaryTest test = new ICUBinaryTest();
+        try {
+            test.run(arg);
+        } catch (Exception e) {
+            test.errln("Error testing icubinarytest");
+        }
+    }
+    
+    /**
+     * Testing the constructors of the Tries
+     */
+    public void TestReadHeader() 
+    {
+        byte formatid[] = {1, 2, 3, 4};
+        byte array[] = {
+            // header size
+            0, 0x18, 
+            // magic numbers
+            (byte)0xda, 0x27, 
+            // size
+            0, 0, 
+            // reserved word
+            0, 0, 
+            // bigendian
+            1, 
+            // charset 
+            0,
+            // charsize
+            2, 
+            // reserved byte
+            0, 
+            // data format id
+            1, 2, 3, 4,
+            // dataVersion
+            1, 2, 3, 4,
+            // unicodeVersion
+            3, 2, 0, 0
+        };
+        ByteArrayInputStream inputstream = new ByteArrayInputStream(array);
+        ICUBinary.Authenticate authenticate 
+                = new ICUBinary.Authenticate() {
+                    public boolean isDataVersionAcceptable(byte version[])
+                    {
+                        return version[0] == 1;
+                    }
+                };
+        // check full data version
+        try {
+            ICUBinary.readHeader(inputstream, formatid, authenticate);
+        } catch (IOException e) {
+            errln("Failed: Lenient authenticate object should pass ICUBinary.readHeader");
+        }
+        // no restriction to the data version
+        try {
+            inputstream.reset();
+            ICUBinary.readHeader(inputstream, formatid, null);
+        } catch (IOException e) {
+            errln("Failed: Null authenticate object should pass ICUBinary.readHeader");
+        }
+        // lenient data version
+        try {
+            inputstream.reset();
+            ICUBinary.readHeader(inputstream, formatid, authenticate);
+        } catch (IOException e) {
+            errln("Failed: Lenient authenticate object should pass ICUBinary.readHeader");
+        }
+        // changing the version to an incorrect one, expecting failure
+        array[16] = 2;
+        try {
+            inputstream.reset();
+            ICUBinary.readHeader(inputstream, formatid, authenticate);
+            errln("Failed: Invalid version number should not pass authenticate object");
+        } catch (IOException e) {
+            logln("PASS: ICUBinary.readHeader with invalid version number failed as expected");
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java b/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
new file mode 100644
index 0000000..7bc46be
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
@@ -0,0 +1,418 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.VersionInfo;
+
+
+/**
+ * Provides a general interface for Unicode Properties, and
+ * extracting sets based on those values.
+ * @author Davis
+ */
+
+public class ICUPropertyFactory extends UnicodeProperty.Factory {
+        
+    static class ICUProperty extends UnicodeProperty {
+            protected int propEnum = Integer.MIN_VALUE;
+            
+            protected ICUProperty(String propName, int propEnum) {
+                setName(propName);
+                this.propEnum = propEnum;
+                setType(internalGetPropertyType(propEnum));
+            }
+
+            boolean shownException = false;
+            
+            public String _getValue(int codePoint) {
+                switch(propEnum) {
+                    case UProperty.AGE: String temp = UCharacter.getAge(codePoint).toString();
+                        if (temp.equals("0.0.0.0")) return "unassigned";
+                        if (temp.endsWith(".0.0")) return temp.substring(0,temp.length()-4);
+                        return temp;
+                    case UProperty.BIDI_MIRRORING_GLYPH: return UTF16.valueOf(UCharacter.getMirror(codePoint));
+                    case UProperty.CASE_FOLDING: return UCharacter.foldCase(UTF16.valueOf(codePoint),true);
+                    case UProperty.ISO_COMMENT: return UCharacter.getISOComment(codePoint);
+                    case UProperty.LOWERCASE_MAPPING: return UCharacter.toLowerCase(Locale.ENGLISH,UTF16.valueOf(codePoint));
+                    case UProperty.NAME: return UCharacter.getName(codePoint);
+                    case UProperty.SIMPLE_CASE_FOLDING: return UTF16.valueOf(UCharacter.foldCase(codePoint,true));
+                    case UProperty.SIMPLE_LOWERCASE_MAPPING: return UTF16.valueOf(UCharacter.toLowerCase(codePoint));
+                    case UProperty.SIMPLE_TITLECASE_MAPPING: return UTF16.valueOf(UCharacter.toTitleCase(codePoint));
+                    case UProperty.SIMPLE_UPPERCASE_MAPPING: return UTF16.valueOf(UCharacter.toUpperCase(codePoint));
+                    case UProperty.TITLECASE_MAPPING: return UCharacter.toTitleCase(Locale.ENGLISH,UTF16.valueOf(codePoint),null);
+                    case UProperty.UNICODE_1_NAME: return UCharacter.getName1_0(codePoint);
+                    case UProperty.UPPERCASE_MAPPING: return UCharacter.toUpperCase(Locale.ENGLISH,UTF16.valueOf(codePoint));
+                    case NFC: return Normalizer.normalize(codePoint, Normalizer.NFC);
+                    case NFD: return Normalizer.normalize(codePoint, Normalizer.NFD);
+                    case NFKC: return Normalizer.normalize(codePoint, Normalizer.NFKC);
+                    case NFKD: return Normalizer.normalize(codePoint, Normalizer.NFKD);
+                    case isNFC: return String.valueOf(Normalizer.normalize(codePoint, Normalizer.NFC).equals(UTF16.valueOf(codePoint)));
+                    case isNFD: return String.valueOf(Normalizer.normalize(codePoint, Normalizer.NFD).equals(UTF16.valueOf(codePoint)));
+                    case isNFKC: return String.valueOf(Normalizer.normalize(codePoint, Normalizer.NFKC).equals(UTF16.valueOf(codePoint)));
+                    case isNFKD: return String.valueOf(Normalizer.normalize(codePoint, Normalizer.NFKD).equals(UTF16.valueOf(codePoint)));
+                    case isLowercase: return String.valueOf(UCharacter.toLowerCase(Locale.ENGLISH,UTF16.valueOf(codePoint)).equals(UTF16.valueOf(codePoint)));
+                    case isUppercase: return String.valueOf(UCharacter.toUpperCase(Locale.ENGLISH,UTF16.valueOf(codePoint)).equals(UTF16.valueOf(codePoint)));
+                    case isTitlecase: return String.valueOf(UCharacter.toTitleCase(Locale.ENGLISH,UTF16.valueOf(codePoint),null).equals(UTF16.valueOf(codePoint)));
+                    case isCasefolded: return String.valueOf(UCharacter.foldCase(UTF16.valueOf(codePoint),true).equals(UTF16.valueOf(codePoint)));
+                    case isCased: return String.valueOf(UCharacter.toLowerCase(Locale.ENGLISH,UTF16.valueOf(codePoint)).equals(UTF16.valueOf(codePoint)));
+                }
+                if (propEnum < UProperty.INT_LIMIT) {
+                    int enumValue = -1;
+                    String value = null;
+                    try {
+                        enumValue = UCharacter.getIntPropertyValue(codePoint, propEnum);
+                        if (enumValue >= 0) value = fixedGetPropertyValueName(propEnum,enumValue, UProperty.NameChoice.LONG);
+                    } catch (IllegalArgumentException e) {
+                        if (!shownException) {
+                            System.out.println("Fail: " + getName() + ", " + Integer.toHexString(codePoint));
+                            shownException = true;
+                        }
+                    }
+                    return value != null ? value : String.valueOf(enumValue);
+                } else if (propEnum < UProperty.DOUBLE_LIMIT) {
+                    double num = UCharacter.getUnicodeNumericValue(codePoint);
+                    if (num == UCharacter.NO_NUMERIC_VALUE) return null;
+                    return Double.toString(num);
+                    // TODO: Fix HACK -- API deficient
+                }
+                return null;
+            }
+
+            /**
+             * @param valueAlias null if unused.
+             * @param valueEnum -1 if unused
+             * @param nameChoice
+             * @return
+             */
+            private String getFixedValueAlias(String valueAlias, int valueEnum, int nameChoice) {
+                if (propEnum >= UProperty.STRING_START) {
+                    if (nameChoice != UProperty.NameChoice.LONG) return null;
+                    return "<string>";
+                } else if (propEnum >= UProperty.DOUBLE_START) {
+                    if (nameChoice != UProperty.NameChoice.LONG) return null;
+                    return "<number>";
+                }
+                if (valueAlias != null && !valueAlias.equals("<integer>")) {
+                    valueEnum = fixedGetPropertyValueEnum(propEnum,valueAlias);
+                }
+                // because these are defined badly, there may be no normal (long) name.
+                // if there is 
+                String result = fixedGetPropertyValueName(propEnum, valueEnum, nameChoice);
+                if (result != null) return result;
+                // HACK try other namechoice
+                if (nameChoice == UProperty.NameChoice.LONG) {
+                    result = fixedGetPropertyValueName(propEnum,valueEnum, UProperty.NameChoice.SHORT);
+                    if (result != null) return result;
+                    if (propEnum == UProperty.CANONICAL_COMBINING_CLASS) return null;
+                    return "<integer>";
+               }
+               return null;
+            }
+
+            private static int fixedGetPropertyValueEnum(int propEnum, String valueAlias) {
+                try {
+                    return UCharacter.getPropertyValueEnum(propEnum, valueAlias);
+                } catch (Exception e) {
+                    return Integer.parseInt(valueAlias);
+                }
+            }
+    
+            static Map fixSkeleton = new HashMap();
+            private static String fixedGetPropertyValueName(int propEnum, int valueEnum, int nameChoice) {
+                
+                try {
+                    String value = UCharacter.getPropertyValueName(propEnum,valueEnum,nameChoice);
+                    String newValue = (String) fixSkeleton.get(value);
+                    if (newValue == null) {
+                        newValue = value;
+                        if (propEnum == UProperty.JOINING_GROUP) {
+                            newValue = newValue.toLowerCase(Locale.ENGLISH);
+                        } 
+                        newValue = regularize(newValue, true);
+                        fixSkeleton.put(value, newValue);
+                    }
+                    return newValue;
+                } catch (Exception e) {
+                    return null;
+                }
+            }
+
+            public List _getNameAliases(List result) {
+                if (result == null) result = new ArrayList();
+                String alias = String_Extras.get(propEnum);
+                if (alias == null) alias = Binary_Extras.get(propEnum);
+                if (alias != null) {
+                    addUnique(alias, result);
+                } else {
+                    addUnique(getFixedPropertyName(propEnum, UProperty.NameChoice.SHORT), result);
+                    addUnique(getFixedPropertyName(propEnum, UProperty.NameChoice.LONG), result);
+                }
+                return result;
+            }
+            
+            public String getFixedPropertyName(int propName, int nameChoice) {
+                try {
+                    return UCharacter.getPropertyName(propEnum, nameChoice);
+                } catch (IllegalArgumentException e) {
+                    return null;
+                }
+            }
+
+            private Map cccHack = new HashMap();
+            boolean needCccHack = true;
+            
+            public List _getAvailableValues(List result) {
+                if (result == null) result = new ArrayList();
+                if (propEnum == UProperty.AGE) {
+                    addAllUnique(new String[] {
+                        "unassigned","1.1","2.0","2.1","3.0","3.1","3.2","4.0"},
+                        result);
+                    return result;
+                }
+                if (propEnum < UProperty.INT_LIMIT) {
+                    if (Binary_Extras.isInRange(propEnum)) {
+                        propEnum = UProperty.BINARY_START; // HACK
+                    }
+                    int start = UCharacter.getIntPropertyMinValue(propEnum);
+                    int end = UCharacter.getIntPropertyMaxValue(propEnum);
+                    for (int i = start; i <= end; ++i) {
+                        String alias = getFixedValueAlias(null, i, UProperty.NameChoice.LONG);
+                        String alias2 = getFixedValueAlias(null, i, UProperty.NameChoice.SHORT);
+                        if (alias == null) {
+                            alias = alias2;
+                            if (alias == null && propEnum == UProperty.CANONICAL_COMBINING_CLASS) {
+                                alias = String.valueOf(i);
+                            }
+                        }
+                        if (needCccHack && propEnum == UProperty.CANONICAL_COMBINING_CLASS) { // HACK
+                            cccHack.put(alias, String.valueOf(i));
+                        }
+                        //System.out.println(propertyAlias + "\t" + i + ":\t" + alias);
+                        addUnique(alias, result);
+                    }
+                    needCccHack = false;
+                } else {
+                    String alias = getFixedValueAlias(null, -1,UProperty.NameChoice.LONG);
+                    addUnique(alias, result);
+                }
+                return result;
+            }
+
+            public List _getValueAliases(String valueAlias, List result) {
+                if (result == null) result = new ArrayList();
+                if (propEnum == UProperty.AGE) {
+                    addUnique(valueAlias, result);
+                    return result;
+                }
+                if (propEnum == UProperty.CANONICAL_COMBINING_CLASS) {
+                    addUnique(cccHack.get(valueAlias), result); // add number
+                }
+                addUnique(getFixedValueAlias(valueAlias, -1, UProperty.NameChoice.SHORT), result);
+                addUnique(getFixedValueAlias(valueAlias, -1, UProperty.NameChoice.LONG), result);
+                return result;
+            }
+
+
+            /* (non-Javadoc)
+             * @see com.ibm.icu.dev.test.util.UnicodePropertySource#getPropertyType()
+             */
+            private int internalGetPropertyType(int prop) {
+                switch(prop) {
+                    case UProperty.AGE: 
+                    case UProperty.BLOCK: 
+                    case UProperty.SCRIPT: 
+                        return UnicodeProperty.CATALOG;
+                    case UProperty.ISO_COMMENT:
+                    case UProperty.NAME:
+                    case UProperty.UNICODE_1_NAME: 
+                        return UnicodeProperty.MISC;
+                    case UProperty.BIDI_MIRRORING_GLYPH:
+                    case UProperty.CASE_FOLDING:
+                    case UProperty.LOWERCASE_MAPPING:
+                    case UProperty.SIMPLE_CASE_FOLDING: 
+                    case UProperty.SIMPLE_LOWERCASE_MAPPING:
+                    case UProperty.SIMPLE_TITLECASE_MAPPING: 
+                    case UProperty.SIMPLE_UPPERCASE_MAPPING:
+                    case UProperty.TITLECASE_MAPPING: 
+                    case UProperty.UPPERCASE_MAPPING: 
+                        return UnicodeProperty.EXTENDED_STRING;
+                }
+                if (prop < UProperty.BINARY_START) return UnicodeProperty.UNKNOWN;
+                if (prop < UProperty.BINARY_LIMIT) return UnicodeProperty.BINARY;
+                if (prop < UProperty.INT_START) return UnicodeProperty.EXTENDED_BINARY;
+                if (prop < UProperty.INT_LIMIT) return UnicodeProperty.ENUMERATED;
+                if (prop < UProperty.DOUBLE_START) return UnicodeProperty.EXTENDED_ENUMERATED;
+                if (prop < UProperty.DOUBLE_LIMIT) return UnicodeProperty.NUMERIC;
+                if (prop < UProperty.STRING_START) return UnicodeProperty.EXTENDED_NUMERIC;
+                if (prop < UProperty.STRING_LIMIT) return UnicodeProperty.STRING;
+                return UnicodeProperty.EXTENDED_STRING;
+            }
+
+            /* (non-Javadoc)
+             * @see com.ibm.icu.dev.test.util.UnicodeProperty#getVersion()
+             */
+            public String _getVersion() {
+                return VersionInfo.ICU_VERSION.toString();
+            }
+        }
+
+        /*{
+            matchIterator = new UnicodeSetIterator(
+                new UnicodeSet("[^[:Cn:]-[:Default_Ignorable_Code_Point:]]"));
+        }*/
+
+
+        
+        /*
+         * Other Missing Functions:
+            Expands_On_NFC
+            Expands_On_NFD
+            Expands_On_NFKC
+            Expands_On_NFKD
+            Composition_Exclusion
+            Decomposition_Mapping
+            FC_NFKC_Closure
+            ISO_Comment
+            NFC_Quick_Check
+            NFD_Quick_Check
+            NFKC_Quick_Check
+            NFKD_Quick_Check
+            Special_Case_Condition
+            Unicode_Radical_Stroke
+         */
+        
+         static final Names Binary_Extras = new Names(UProperty.BINARY_LIMIT,
+            new String[] {
+            "isNFC", "isNFD", "isNFKC", "isNFKD",
+            "isLowercase", "isUppercase", "isTitlecase", "isCasefolded", "isCased",
+        });
+
+        static final Names String_Extras = new Names(UProperty.STRING_LIMIT,
+            new String[] {
+            "toNFC", "toNFD", "toNFKC", "toNKFD",
+        });
+
+        static final int
+            isNFC = UProperty.BINARY_LIMIT,
+            isNFD = UProperty.BINARY_LIMIT+1,
+            isNFKC = UProperty.BINARY_LIMIT+2,
+            isNFKD = UProperty.BINARY_LIMIT+3,
+            isLowercase = UProperty.BINARY_LIMIT+4,
+            isUppercase = UProperty.BINARY_LIMIT+5,
+            isTitlecase = UProperty.BINARY_LIMIT+6,
+            isCasefolded = UProperty.BINARY_LIMIT+7,
+            isCased = UProperty.BINARY_LIMIT+8,
+
+            NFC  = UProperty.STRING_LIMIT,
+            NFD  = UProperty.STRING_LIMIT+1,
+            NFKC = UProperty.STRING_LIMIT+2,
+            NFKD = UProperty.STRING_LIMIT+3
+            ;
+        
+        private ICUPropertyFactory() {
+            Collection c = getInternalAvailablePropertyAliases(new ArrayList());
+            Iterator it = c.iterator();
+            while (it.hasNext()) {
+                add(getInternalProperty((String)it.next()));
+            }
+        }
+        
+        private static ICUPropertyFactory singleton = null;
+        
+        public static synchronized ICUPropertyFactory make() {
+            if (singleton != null) return singleton;
+            singleton = new ICUPropertyFactory();
+            return singleton;
+        }
+        
+        public List getInternalAvailablePropertyAliases(List result) {
+            int[][] ranges = {
+                {UProperty.BINARY_START,    UProperty.BINARY_LIMIT},
+                {UProperty.INT_START,       UProperty.INT_LIMIT},
+                {UProperty.DOUBLE_START,    UProperty.DOUBLE_LIMIT},
+                {UProperty.STRING_START,    UProperty.STRING_LIMIT},
+            };
+            for (int i = 0; i < ranges.length; ++i) {
+                for (int j = ranges[i][0]; j < ranges[i][1]; ++j) {
+                    String alias = UCharacter.getPropertyName(j, UProperty.NameChoice.LONG);
+                    UnicodeProperty.addUnique(alias, result);
+                    if (!result.contains(alias)) result.add(alias);
+                }
+            }
+            result.addAll(String_Extras.getNames());
+            result.addAll(Binary_Extras.getNames());
+            return result;
+        }
+       
+        public UnicodeProperty getInternalProperty(String propertyAlias) {
+            int propEnum;
+            main:
+            {
+                int possibleItem = Binary_Extras.get(propertyAlias);
+                if (possibleItem >= 0) {
+                    propEnum = possibleItem;
+                    break main;
+                }
+                possibleItem = String_Extras.get(propertyAlias);
+                if (possibleItem >= 0) {
+                    propEnum = possibleItem;
+                    break main;
+                }
+                propEnum = UCharacter.getPropertyEnum(propertyAlias);
+            }
+            return new ICUProperty(propertyAlias, propEnum);
+        }
+ 
+        /* (non-Javadoc)
+         * @see com.ibm.icu.dev.test.util.UnicodePropertySource#getProperty(java.lang.String)
+         */
+    // TODO file bug on getPropertyValueName for Canonical_Combining_Class  
+    
+    public static class Names {
+        private String[] names;
+        private int base;
+        public Names(int base, String[] names) {
+            this.base = base;
+            this.names = names;
+        }
+        public int get(String name) {
+            for (int i = 0; i < names.length; ++i) {
+                if (name.equalsIgnoreCase(names[i])) return base + i;
+            }
+            return -1;
+        }
+        public String get(int number) {
+            number -= base;
+            if (number < 0 || names.length <= number) return null;
+            return names[number];
+        }
+        public boolean isInRange(int number) {
+            number -= base;
+            return (0 <= number && number < names.length);
+        }
+        public List getNames() {
+            return Arrays.asList(names);
+        }
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java b/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
new file mode 100644
index 0000000..897d938
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
@@ -0,0 +1,1111 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.JarURLConnection;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##import com.ibm.icu.impl.ByteBuffer;
+//#else
+import java.nio.ByteBuffer;
+//#endif
+import java.util.MissingResourceException;
+import java.util.Enumeration;
+import java.util.jar.JarEntry;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.Holiday;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+
+public final class ICUResourceBundleTest extends TestFmwk {
+    private static final ClassLoader testLoader = ICUResourceBundleTest.class.getClassLoader();
+
+    public static void main(String args[]) throws Exception {
+        ICUResourceBundleTest test = new ICUResourceBundleTest();
+        test.run(args);
+
+    }
+    public void TestGetResources(){
+        try{
+            // It does not work well in eclipse plug-in test because of class loader configuration??
+            // For now, specify resource path explicitly in this test case
+            //Enumeration en = testLoader.getResources("META-INF");
+            Enumeration en = testLoader.getResources("com.ibm.icu.dev.data");
+            for(;en.hasMoreElements();) {
+                URL url = (URL)en.nextElement();
+                if (url == null) {
+                    warnln("could not load resource data");
+                    return;
+                }
+                URLConnection c = url.openConnection();
+
+                if (c instanceof JarURLConnection) {
+                    JarURLConnection jc = (JarURLConnection)c;
+                    JarEntry je = jc.getJarEntry();
+                    logln("jar entry: " + je.toString()); 
+                } else {
+                    InputStream is = c.getInputStream();
+                    logln("input stream:");
+                    InputStreamReader r = new InputStreamReader(is);
+                    BufferedReader br = new BufferedReader(r);
+                    String line = null;
+                    int n = 0;
+                    while ((line = br.readLine()) != null) {
+                        logln("  " + ++n + ": " + line);
+                    }
+                }
+            }
+        }catch(SecurityException ex) {
+            warnln("could not load resource data: " + ex);
+            ex.printStackTrace();
+    }catch(NullPointerException ex) {
+        // thrown by ibm 1.4.2 windows jvm security manager
+        warnln("could not load resource data: " + ex);
+        }catch(Exception ex){
+        ex.printStackTrace();
+            errln("Unexpected exception: "+ ex);
+        }
+    }
+    public void TestResourceBundleWrapper(){
+        UResourceBundle bundle = UResourceBundle.getBundleInstance("com.ibm.icu.impl.data.HolidayBundle", "da_DK");
+        Object o = bundle.getObject("holidays");
+        if(o instanceof Holiday[] ){
+            logln("wrapper mechanism works for Weekend data");
+        }else{
+            errln("Did not get the expected output for Weekend data");
+        }
+
+        bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "bogus");
+        if(bundle instanceof UResourceBundle && bundle.getULocale().equals("en_US")){
+            logln("wrapper mechanism works for bogus locale");
+        }else{
+            errln("wrapper mechanism failed for bogus locale.");
+        }
+
+        try{
+            bundle = UResourceBundle.getBundleInstance("bogus", "bogus");
+            if(bundle!=null){
+              errln("Did not get the expected exception");
+            }
+        }catch(MissingResourceException ex){
+            logln("got the expected exception");
+        }
+
+
+    }
+    public void TestJB3879(){
+        // this tests tests loading of root bundle when a resource bundle
+        // for the default locale is requested
+        try {
+            UResourceBundle bundle = (UResourceBundle) UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", ULocale.getDefault().toString(), testLoader);
+            if(bundle==null){
+                errln("could not create the resource bundle");
+            }
+        }
+        catch (MissingResourceException ex) {
+            warnln("could not load test data: " + ex.getMessage());
+        }
+    }
+    public void TestOpen(){
+        UResourceBundle bundle = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "en_US_POSIX");
+
+        if(bundle==null){
+            errln("could not create the resource bundle");
+        }
+
+        UResourceBundle obj =  bundle.get("NumberPatterns");
+
+        int size = obj.getSize();
+        int type = obj.getType();
+        if(type == UResourceBundle.ARRAY){
+            UResourceBundle sub;
+            for(int i=0; i<size; i++){
+                sub = obj.get(i);
+                String temp =sub.getString();
+                if(temp.length()==0){
+                    errln("Failed to get the items from NumberPatterns array in bundle: "+
+                            bundle.getULocale().getBaseName());
+                }
+                //System.out.println("\""+prettify(temp)+"\"");
+            }
+
+        }
+        String[] strings = bundle.getStringArray("NumberPatterns");
+        if(size!=strings.length){
+            errln("Failed to get the items from NumberPatterns array in bundle: "+
+                    bundle.getULocale().getBaseName());
+        }
+        {
+            obj =  bundle.get("NumberElements");
+
+            size = obj.getSize();
+            type = obj.getType();
+            if(type == UResourceBundle.ARRAY){
+                UResourceBundle sub;
+                for(int i=0; i<size; i++){
+                    sub = obj.get(i);
+                    String temp =sub.getString();
+                    if(temp.length()==0){
+                        errln("Failed to get the items from NumberPatterns array in bundle: "+
+                                bundle.getULocale().getBaseName());
+                    }
+                   // System.out.println("\""+prettify(temp)+"\"");
+                }
+
+            }
+        }
+        if(bundle==null){
+            errln("could not create the resource bundle");
+        }
+        bundle = (UResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME, "en_US_POSIX");
+        if(bundle==null){
+            errln("could not load the stream");
+        }
+        bundle = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zzz_ZZ_very_very_very_long_bogus_bundle");
+        if(!bundle.getULocale().equals(ULocale.getDefault())){
+            errln("UResourceBundle did not load the default bundle when bundle was not found. Default: " + ULocale.getDefault() + 
+                        ", Bundle locale: " + bundle.getULocale());
+        }
+
+
+    }
+
+    public void TestBasicTypes(){
+        UResourceBundle bundle = null;
+        try {
+            bundle = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "testtypes", testLoader);
+        }
+        catch (MissingResourceException e) {
+            warnln("could not load test data: " + e.getMessage());
+            return;
+        }
+        {
+            String expected = "abc\u0000def";
+            UResourceBundle sub = bundle.get("zerotest");
+            if(!expected.equals(sub.getString())){
+                errln("Did not get the expected string for key zerotest in bundle testtypes");
+            }
+            sub = bundle.get("emptyexplicitstring");
+            expected ="";
+            if(!expected.equals(sub.getString())){
+                errln("Did not get the expected string for key emptyexplicitstring in bundle testtypes");
+            }
+            sub = bundle.get("emptystring");
+            expected ="";
+            if(!expected.equals(sub.getString())){
+                errln("Did not get the expected string for key emptystring in bundle testtypes");
+            }
+        }
+        {
+            int expected = 123;
+            UResourceBundle sub = bundle.get("onehundredtwentythree");
+            if(expected!=sub.getInt()){
+                errln("Did not get the expected int value for key onehundredtwentythree in bundle testtypes");
+            }
+            sub = bundle.get("emptyint");
+            expected=0;
+            if(expected!=sub.getInt()){
+                errln("Did not get the expected int value for key emptyint in bundle testtypes");
+            }
+        }
+        {
+            int expected = 1;
+            UResourceBundle sub = bundle.get("one");
+            if(expected!=sub.getInt()){
+                errln("Did not get the expected int value for key one in bundle testtypes");
+            }
+        }
+        {
+            int expected = -1;
+            UResourceBundle sub = bundle.get("minusone");
+            int got = sub.getInt();
+            if(expected!=got){
+                errln("Did not get the expected int value for key minusone in bundle testtypes");
+            }
+            expected = 0xFFFFFFF;
+            got = sub.getUInt();
+            if(expected!=got){
+                errln("Did not get the expected int value for key minusone in bundle testtypes");
+            }
+        }
+        {
+            int expected = 1;
+            UResourceBundle sub = bundle.get("plusone");
+            if(expected!=sub.getInt()){
+                errln("Did not get the expected int value for key minusone in bundle testtypes");
+            }
+
+        }
+        {
+            int[] expected = new int[]{ 1, 2, 3, -3, 4, 5, 6, 7 }   ;
+            UResourceBundle sub = bundle.get("integerarray");
+            if(!Utility.arrayEquals(expected,sub.getIntVector())){
+                errln("Did not get the expected int vector value for key integerarray in bundle testtypes");
+            }
+            sub = bundle.get("emptyintv");
+            expected = new int[0];
+            if(!Utility.arrayEquals(expected,sub.getIntVector())){
+                errln("Did not get the expected int vector value for key emptyintv in bundle testtypes");
+            }
+
+        }
+        {
+            UResourceBundle sub = bundle.get("binarytest");
+            ByteBuffer got = sub.getBinary();
+            if(got.remaining()!=15){
+                errln("Did not get the expected length for the binary ByteBuffer");
+            }
+            for(int i=0; i< got.remaining(); i++){
+                byte b = got.get();
+                if(b!=i){
+                    errln("Did not get the expected value for binary buffer at index: "+i);
+                }
+            }
+            sub = bundle.get("emptybin");
+            got = sub.getBinary();
+            if(got.remaining()!=0){
+                errln("Did not get the expected length for the emptybin ByteBuffer");
+            }
+
+        }
+        {
+            UResourceBundle sub = bundle.get("emptyarray");
+            String key = sub.getKey();
+            if(!key.equals("emptyarray")){
+                errln("Did not get the expected key for emptytable item");
+            }
+            if(sub.getSize()!=0){
+                errln("Did not get the expected length for emptytable item");
+            }
+        }
+        {
+            UResourceBundle sub = bundle.get("menu");
+            String key = sub.getKey();
+            if(!key.equals("menu")){
+                errln("Did not get the expected key for menu item");
+            }
+            UResourceBundle sub1 = sub.get("file");
+            key = sub1.getKey();
+            if(!key.equals("file")){
+                errln("Did not get the expected key for file item");
+            }
+            UResourceBundle sub2 = sub1.get("open");
+            key = sub2.getKey();
+            if(!key.equals("open")){
+                errln("Did not get the expected key for file item");
+            }
+            String value = sub2.getString();
+            if(!value.equals("Open")){
+                errln("Did not get the expected value for key for oen item");
+            }
+
+            sub = bundle.get("emptytable");
+            key = sub.getKey();
+            if(!key.equals("emptytable")){
+                errln("Did not get the expected key for emptytable item");
+            }
+            if(sub.getSize()!=0){
+                errln("Did not get the expected length for emptytable item");
+            }
+            sub = bundle.get("menu").get("file");
+            int size = sub.getSize();
+            String expected;
+            for(int i=0; i<size; i++){
+                sub1 = sub.get(i);
+
+                switch(i){
+                    case 0:
+                        expected = "exit";
+                        break;
+                    case 1:
+                        expected = "open";
+                        break;
+                    case 2:
+                        expected = "save";
+                        break;
+                    default:
+                        expected ="";
+                }
+                String got = sub1.getKey();
+                if(!expected.equals(got)){
+                    errln("Did not get the expected key at index"+i+". Expected: "+expected+" Got: "+got);
+                }else{
+                    logln("Got the expected key at index: "+i);
+                }
+            }
+        }
+
+    }
+    private static final class TestCase{
+        String key;
+        int value;
+        TestCase(String key, int value){
+            this.key = key;
+            this.value = value;
+        }
+    }
+    public void TestTable32(){
+        TestCase[] arr = new TestCase[]{
+          new TestCase  ( "ooooooooooooooooo", 0 ),
+          new TestCase  ( "oooooooooooooooo1", 1 ),
+          new TestCase  ( "ooooooooooooooo1o", 2 ),
+          new TestCase  ( "oo11ooo1ooo11111o", 25150 ),
+          new TestCase  ( "oo11ooo1ooo111111", 25151 ),
+          new TestCase  ( "o1111111111111111", 65535 ),
+          new TestCase  ( "1oooooooooooooooo", 65536 ),
+          new TestCase  ( "1ooooooo11o11ooo1", 65969 ),
+          new TestCase  ( "1ooooooo11o11oo1o", 65970 ),
+          new TestCase  ( "1ooooooo111oo1111", 65999 )
+        };
+        UResourceBundle bundle = null;
+        try {
+            bundle = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testtable32", testLoader);
+        }
+        catch (MissingResourceException ex) {
+            warnln("could not load resource data: " + ex.getMessage());
+            return;
+        }
+
+        if(bundle.getType()!= UResourceBundle.TABLE){
+            errln("Could not get the correct type for bundle testtable32");
+        }
+        int size =bundle.getSize();
+        if(size!=66000){
+            errln("Could not get the correct size for bundle testtable32");
+        }
+        for(int i =0; i<size; i++){
+            UResourceBundle item = bundle.get(i);
+            String key = item.getKey();
+            int parsedNumber = parseTable32Key(key);
+            int number=-1;
+            switch(item.getType()){
+                case UResourceBundle.STRING:
+                    String value = item.getString();
+                    number = UTF16.charAt(value,0);
+                    break;
+                case UResourceBundle.INT:
+                    number = item.getInt();
+                    break;
+                default:
+                    errln("Got unexpected resource type in testtable32");
+
+            }
+            if(number!=parsedNumber){
+                errln("Did not get expected value in testtypes32 for key"+
+                      key+". Expected: "+parsedNumber+" Got:"+number);
+            }
+
+        }
+        for(int i=0;i<arr.length; i++){
+            String expected = arr[i].key;
+            UResourceBundle item = bundle.get(expected);
+            int number=0;
+            String key = item.getKey();
+            int parsedNumber = parseTable32Key(key);
+            if(!key.equals(expected)){
+                errln("Did not get the expected key. Expected: "+expected+" Got:"+key);
+            }
+            switch(item.getType()){
+                case UResourceBundle.STRING:
+                    String value = item.getString();
+                    number = UTF16.charAt(value,0);
+                    break;
+                 case UResourceBundle.INT:
+                    number = item.getInt();
+                    break;
+                default:
+                    errln("Got unexpected resource type in testtable32");
+            }
+
+            if(number!=parsedNumber){
+                errln("Did not get expected value in testtypes32 for key"+
+                      key+". Expected: "+parsedNumber+" Got:"+number);
+            }
+        }
+    }
+    private static int  parseTable32Key(String key) {
+        int number;
+        char c;
+
+        number=0;
+        for(int i=0; i<key.length(); i++){
+            c = key.charAt(i);
+            number<<=1;
+            if(c=='1') {
+                number|=1;
+            }
+        }
+        return number;
+    }
+
+    public void TestAliases(){
+/*
+       String simpleAlias   = "Open";
+
+       UResourceBundle rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases", testLoader);
+       if (rb == null) {
+           warnln("could not load testaliases data");
+           return;
+       }
+        UResourceBundle sub = rb.get("simplealias");
+        String s1 = sub.getString("simplealias");
+        if(s1.equals(simpleAlias)){
+            logln("Alias mechanism works for simplealias");
+        }else{
+            errln("Did not get the expected output for simplealias");
+        }
+        {
+            try{
+                rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+                sub = rb.get("nonexisting");
+                errln("Did not get the expected exception for nonexisting");
+            }catch(MissingResourceException ex){
+                logln("Alias mechanism works for nonexisting alias");
+            }
+        }
+        {
+            rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+            sub = rb.get("referencingalias");
+            s1 = sub.getString();
+            if(s1.equals("Hani")){
+                logln("Alias mechanism works for referencingalias");
+            }else{
+                errln("Did not get the expected output for referencingalias");
+            }
+        }
+        {
+            rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+            sub = rb.get("boundaries");
+            String word = sub.getString("word");
+
+            if(word.equals("word_ja.brk")){
+                logln("Got the expected output for boundaries/word");
+            }else{
+                errln("Did not get the expected type for boundaries/word");
+            }
+
+        }
+        {
+            UResourceBundle rb1 = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+            if(rb1!=rb){
+                errln("Caching of the resource bundle failed");
+            }else{
+                logln("Caching of resource bundle passed");
+            }
+            sub = rb1.get("testGetStringByKeyAliasing" );
+
+            s1 = sub.get("KeyAlias0PST").getString();
+            if(s1.equals("America/Los_Angeles")){
+                logln("Alias mechanism works for KeyAlias0PST");
+            }else{
+                errln("Did not get the expected output for KeyAlias0PST");
+            }
+
+            s1 = sub.getString("KeyAlias1PacificStandardTime");
+            if(s1.equals("Pacific Standard Time")){
+                logln("Alias mechanism works for KeyAlias1PacificStandardTime");
+            }else{
+                errln("Did not get the expected output for KeyAlias1PacificStandardTime");
+            }
+            s1 = sub.getString("KeyAlias2PDT");
+            if(s1.equals("PDT")){
+                logln("Alias mechanism works for KeyAlias2PDT");
+            }else{
+                errln("Did not get the expected output for KeyAlias2PDT");
+            }
+
+            s1 = sub.getString("KeyAlias3LosAngeles");
+            if(s1.equals("Los Angeles")){
+                logln("Alias mechanism works for KeyAlias3LosAngeles. Got: "+s1);
+            }else{
+                errln("Did not get the expected output for KeyAlias3LosAngeles. Got: "+s1);
+            }
+        }
+        {
+            sub = rb.get("testGetStringByIndexAliasing" );
+            s1 = sub.getString(0);
+            if(s1.equals("America/Los_Angeles")){
+                logln("Alias mechanism works for testGetStringByIndexAliasing/0. Got: "+s1);
+            }else{
+                errln("Did not get the expected output for testGetStringByIndexAliasing/0. Got: "+s1);
+            }
+            s1 = sub.getString(1);
+            if(s1.equals("Pacific Standard Time")){
+                logln("Alias mechanism works for testGetStringByIndexAliasing/1");
+            }else{
+                errln("Did not get the expected output for testGetStringByIndexAliasing/1");
+            }
+            s1 = sub.getString(2);
+            if(s1.equals("PDT")){
+                logln("Alias mechanism works for testGetStringByIndexAliasing/2");
+            }else{
+                errln("Did not get the expected output for testGetStringByIndexAliasing/2");
+            }
+
+            s1 = sub.getString(3);
+            if(s1.equals("Los Angeles")){
+                logln("Alias mechanism works for testGetStringByIndexAliasing/3. Got: "+s1);
+            }else{
+                errln("Did not get the expected output for testGetStringByIndexAliasing/3. Got: "+s1);
+            }
+        }
+        {
+            sub = rb.get("testAliasToTree" );
+            
+            ByteBuffer buf = sub.get("standard").get("%%CollationBin").getBinary();
+            if(buf==null){
+                errln("Did not get the expected output for %%CollationBin");
+            }
+        }
+        // should not get an exception
+        rb = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_RBNF_BASE_NAME,"fr_BE");
+        String str = rb.getString("SpelloutRules");
+        if(str !=null && str.length()>0){
+            logln("Alias mechanism works");
+        }else{
+            errln("Alias mechanism failed for fr_BE SpelloutRules");
+        }
+        rb = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,"zh_TW");
+        UResourceBundle b = (UResourceBundle) rb.getObject("collations");
+        if(b != null){
+            if(b.get(0).getKey().equals( "default")){
+                logln("Alias mechanism works");
+            }else{
+                errln("Alias mechanism failed for zh_TW collations");
+            }
+        }else{
+            errln("Did not get the expected object for collations");
+        }
+*/
+    }
+    public void TestAlias(){
+        logln("Testing %%ALIAS");
+        UResourceBundle rb = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"iw_IL");
+        UResourceBundle b = rb.get("NumberPatterns");
+        if(b != null){
+            if(b.getSize()>0){
+                logln("%%ALIAS mechanism works");
+            }else{
+                errln("%%ALIAS mechanism failed for iw_IL collations");
+            }
+        }else{
+            errln("%%ALIAS mechanism failed for iw_IL");
+        }
+    }
+    public void TestXPathAlias(){
+        UResourceBundle rb = (UResourceBundle) UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","te_IN",testLoader);
+        UResourceBundle b = rb.get("aliasClient");
+        String result = b.getString();
+        String expResult= "correct"; 
+
+        if(!result.equals(expResult)){
+            errln("Did not get the expected result for XPath style alias");
+        }
+        try{
+            UResourceBundle c = rb.get("rootAliasClient");
+            result = c.getString();
+            expResult = "correct"; 
+            if(!result.equals(expResult)){
+                errln("Did not get the expected result for XPath style alias for rootAliasClient");
+            }
+        }catch( MissingResourceException ex){
+            errln("Could not get rootAliasClient");
+        }
+    }
+    public void TestCircularAliases(){
+// Aliases no longer supported
+//        try{
+//            UResourceBundle rb = (UResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","testaliases",testLoader);
+//            UResourceBundle sub = rb.get("aaa");
+//            String s1 = sub.getString();
+//            if(s1!=null){
+//                errln("Did not get the expected exception");
+//            }
+//        }catch(IllegalArgumentException ex){
+//            logln("got expected exception for circular references");
+//        }
+//        catch (MissingResourceException ex) {
+//            warnln("could not load resource data: " + ex.getMessage());
+//        }
+    }
+
+    public void TestGetWithFallback(){
+        /*
+        UResourceBundle bundle =(UResourceBundle) UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata","te_IN");
+        String key = bundle.getStringWithFallback("Keys/collation");
+        if(!key.equals("COLLATION")){
+            errln("Did not get the expected result from getStringWithFallback method.");
+        }
+        String type = bundle.getStringWithFallback("Types/collation/direct");
+        if(!type.equals("DIRECT")){
+            errln("Did not get the expected result form getStringWithFallback method.");
+        }
+        */
+        ICUResourceBundle bundle = null;
+        String key = null;
+        try{
+            bundle = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,ULocale.canonicalize("de__PHONEBOOK"));
+
+            if(!bundle.getULocale().equals("de")){
+                errln("did not get the expected bundle");
+            }
+            key = bundle.getStringWithFallback("collations/collation/default");
+            if(!key.equals("phonebook")){
+                errln("Did not get the expected result from getStringWithFallback method.");
+            }
+
+        }catch(MissingResourceException ex){
+            logln("got the expected exception");
+        }
+
+
+        bundle = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME,"fr_FR");
+        key = bundle.getStringWithFallback("collations/default");
+        if(!key.equals("standard")){
+            errln("Did not get the expected result from getStringWithFallback method.");
+        }
+        bundle = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"fr_FR");
+        ICUResourceBundle b1 = bundle.getWithFallback("calendar");
+        String defaultCal = b1.getStringWithFallback("default");
+        if(!defaultCal.equals("gregorian")){
+            errln("Did not get the expected default calendar string: Expected: gregorian, Got: "+defaultCal);
+        }
+        ICUResourceBundle b2 = b1.getWithFallback(defaultCal);
+        ICUResourceBundle b3 = b2.getWithFallback("monthNames");
+        String defaultContext = b3.getStringWithFallback("default");
+        ICUResourceBundle b4 = b3.getWithFallback(defaultContext);
+        String defaultWidth  = b4.getStringWithFallback("default");
+        ICUResourceBundle b5 = b4.getWithFallback(defaultWidth);
+        if(b5.getSize()!=12){
+            errln("Did not get the expected size for the default monthNames");
+        }
+    }
+
+    private static final String COLLATION_RESNAME = "collations";
+    private static final String COLLATION_KEYWORD = "collation";
+    private static final String DEFAULT_NAME = "default";
+    private static final String STANDARD_NAME = "standard";
+    private static final String CALENDAR_RESNAME = "calendar";
+    private static final String CALENDAR_KEYWORD = "calendar";
+
+    public void TestKeywordValues(){
+        String kwVals[];
+        boolean foundStandard = false;
+        int n;
+
+        logln("Testing getting collation values:");
+        kwVals = ICUResourceBundle.getKeywordValues(ICUResourceBundle.ICU_COLLATION_BASE_NAME,COLLATION_RESNAME);
+        for(n=0;n<kwVals.length;n++) {
+            logln(new Integer(n).toString() + ": " + kwVals[n]);
+            if(DEFAULT_NAME.equals(kwVals[n])) {
+                errln("getKeywordValues for collation returned 'default' in the list.");
+            } else if(STANDARD_NAME.equals(kwVals[n])) {
+                if(foundStandard == false) {
+                    foundStandard = true;
+                    logln("found 'standard'");
+                } else {
+                    errln("Error - 'standard' is in the keyword list twice!");
+                }
+            }
+        }
+
+        if(foundStandard == false) {
+            errln("Error - 'standard' was not in the collation tree as a keyword.");
+        } else {
+            logln("'standard' was found as a collation keyword.");
+        }
+    }
+
+    public void TestLocaleDisplayNames() {
+        ULocale[] locales = ULocale.getAvailableLocales();
+        for (int i = 0; i < locales.length; ++i) {
+            if (!hasLocalizedCountryFor(ULocale.ENGLISH, locales[i])){
+                 errln("Could not get localized country for "+ locales[i]);
+            }
+            if(!hasLocalizedLanguageFor(ULocale.ENGLISH, locales[i])){
+                errln("Could not get localized language for "+ locales[i]);
+            }
+            if(!hasLocalizedCountryFor(locales[i], locales[i])){
+                errln("Could not get localized country for "+ locales[i]);
+                hasLocalizedCountryFor(locales[i], locales[i]);
+            }
+            if(!hasLocalizedLanguageFor(locales[i], locales[i])){
+                errln("Could not get localized language for "+ locales[i]);
+            }
+
+            logln(locales[i] + "\t" + locales[i].getDisplayName(ULocale.ENGLISH) + "\t" + locales[i].getDisplayName(locales[i]));
+        }
+    }
+
+    private static boolean hasLocalizedLanguageFor(ULocale locale, ULocale otherLocale) {
+        String lang = otherLocale.getLanguage();
+        String localizedVersion = otherLocale.getDisplayLanguage(locale);
+        return !lang.equals(localizedVersion);
+    }
+
+    private static boolean hasLocalizedCountryFor(ULocale locale, ULocale otherLocale) {
+        String country = otherLocale.getCountry();
+        if (country.equals("")) return true;
+        String localizedVersion = otherLocale.getDisplayCountry(locale);
+        return !country.equals(localizedVersion);
+    }
+
+    public void TestFunctionalEquivalent(){
+       String[] collCases = {
+       //  avail   locale                               equiv
+           "f",     "de_US_CALIFORNIA",                 "de",
+           "f",     "zh_TW@collation=stroke",           "zh@collation=stroke", /* alias of zh_Hant_TW */
+           "t",     "zh_Hant_TW@collation=stroke",      "zh@collation=stroke",
+           "f",     "de_CN@collation=pinyin",           "de",
+           "t",     "zh@collation=pinyin",              "zh",
+           "f",     "zh_CN@collation=pinyin",           "zh", /* alias of zh_Hans_CN */
+           "t",     "zh_Hans_CN@collation=pinyin",      "zh",
+           "f",     "zh_HK@collation=pinyin",           "zh", /* alias of zh_Hant_HK */
+           "t",     "zh_Hant_HK@collation=pinyin",      "zh",
+           "f",     "zh_HK@collation=stroke",           "zh@collation=stroke", /* alias of zh_Hant_HK */
+           "t",     "zh_Hant_HK@collation=stroke",      "zh@collation=stroke",
+           "f",     "zh_HK",                            "zh@collation=stroke", /* alias of zh_Hant_HK */
+           "t",     "zh_Hant_HK",                       "zh@collation=stroke",
+           "f",     "zh_MO",                            "zh@collation=stroke", /* alias of zh_Hant_MO */
+           "t",     "zh_Hant_MO",                       "zh@collation=stroke",
+           "f",     "zh_TW_STROKE",                     "zh@collation=stroke",
+           "f",     "zh_TW_STROKE@collation=big5han",   "zh@collation=big5han",
+           "f",     "de_CN@calendar=japanese",          "de",
+           "t",     "de@calendar=japanese",             "de",
+           "f",     "zh_TW@collation=big5han",          "zh@collation=big5han", /* alias of zh_Hant_TW */
+           "t",     "zh_Hant_TW@collation=big5han",     "zh@collation=big5han",
+           "f",     "zh_TW@collation=gb2312han",        "zh@collation=gb2312han", /* alias of zh_Hant_TW */
+           "t",     "zh_Hant_TW@collation=gb2312han",   "zh@collation=gb2312han",
+           "f",     "zh_CN@collation=big5han",          "zh@collation=big5han", /* alias of zh_Hans_CN */
+           "t",     "zh_Hans_CN@collation=big5han",     "zh@collation=big5han",
+           "f",     "zh_CN@collation=gb2312han",        "zh@collation=gb2312han", /* alias of zh_Hans_CN */
+           "t",     "zh_Hans_CN@collation=gb2312han",   "zh@collation=gb2312han",
+           "t",     "zh@collation=big5han",             "zh@collation=big5han",
+           "t",     "zh@collation=gb2312han",           "zh@collation=gb2312han",
+           "t",     "hi_IN@collation=direct",           "hi@collation=direct",
+           "t",     "hi@collation=standard",            "hi",
+           "t",     "hi@collation=direct",              "hi@collation=direct",
+           "f",     "hi_AU@collation=direct;currency=CHF;calendar=buddhist",    "hi@collation=direct",
+           "f",     "hi_AU@collation=standard;currency=CHF;calendar=buddhist",  "hi",
+           "t",     "de_DE@collation=pinyin",           "de", /* bug 4582 tests */
+           "f",     "de_DE_BONN@collation=pinyin",      "de",
+           "t",     "nl",                               "root",
+           "t",     "nl_NL",                            "root",
+           "f",     "nl_NL_EEXT",                       "root",
+           "t",     "nl@collation=stroke",              "root",
+           "t",     "nl_NL@collation=stroke",           "root",
+           "f",     "nl_NL_EEXT@collation=stroke",      "root",
+       };
+
+       String[] calCases = {
+       //  avail    locale                              equiv
+           "t",     "en_US_POSIX",                      "en_US@calendar=gregorian",
+           "f",     "ja_JP_TOKYO",                      "ja_JP@calendar=gregorian",
+           "f",     "ja_JP_TOKYO@calendar=japanese",    "ja@calendar=japanese",
+           "t",     "sr@calendar=gregorian",            "sr@calendar=gregorian",
+           "t",     "en",                               "en@calendar=gregorian",
+           "t",     "th_TH",                            "th@calendar=buddhist",
+           "t",     "th_TH@calendar=gregorian",         "th_TH@calendar=gregorian",
+           "f",     "th_TH_Bangkok",                    "th@calendar=buddhist",
+       };
+
+       logln("Testing functional equivalents for collation...");
+       getFunctionalEquivalentTestCases(ICUResourceBundle.ICU_COLLATION_BASE_NAME,
+               COLLATION_RESNAME, COLLATION_KEYWORD, true, collCases);
+
+       logln("Testing functional equivalents for calenadr...");
+       getFunctionalEquivalentTestCases(ICUResourceBundle.ICU_BASE_NAME,
+               CALENDAR_RESNAME, CALENDAR_KEYWORD, false, calCases);
+
+       logln("Testing error conditions:");
+       try {
+           ICUResourceBundle.getFunctionalEquivalent(ICUResourceBundle.ICU_COLLATION_BASE_NAME, "calendar",
+              "calendar", new ULocale("ar_EG@calendar=islamic"), new boolean[1], true);
+           errln("Err: expected MissingResourceException");
+       } catch ( MissingResourceException t ) {
+           logln("expected MissingResourceException caught (PASS): " + t.toString());
+       }
+    }
+
+    private void getFunctionalEquivalentTestCases(String path, String resName, String keyword,
+            boolean truncate, String[] testCases) {
+        //String F_STR = "f";
+        String T_STR = "t";
+        boolean isAvail[] = new boolean[1];
+
+        logln("Testing functional equivalents...");
+        for(int i = 0; i < testCases.length ;i+=3) {
+            boolean expectAvail = T_STR.equals(testCases[i+0]);
+            ULocale inLocale = new ULocale(testCases[i+1]);
+            ULocale expectLocale = new ULocale(testCases[i+2]);
+
+            logln(new Integer(i/3).toString() + ": " + new Boolean(expectAvail).toString() + "\t\t" +
+                    inLocale.toString() + "\t\t" + expectLocale.toString());
+
+            ULocale equivLocale = ICUResourceBundle.getFunctionalEquivalent(path, resName, keyword, inLocale, isAvail, truncate);
+            boolean gotAvail = isAvail[0];
+
+            if((gotAvail != expectAvail) || !equivLocale.equals(expectLocale)) {
+                errln(new Integer(i/3).toString() + ":  Error, expected  Equiv=" + new Boolean(expectAvail).toString() + "\t\t" +
+                        inLocale.toString() + "\t\t--> " + expectLocale.toString() + ",  but got " + new Boolean(gotAvail).toString() + " " +
+                        equivLocale.toString());
+            }
+        }
+    }
+
+    public void TestNorwegian(){
+        try{
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "no_NO_NY");
+            UResourceBundle sub = rb.get("Countries");
+            String s1 = sub.getString("NO");
+            if(s1.equals("Noreg")){
+                logln("got expected output ");
+            }else{
+                errln("did not get the expected result");
+            }
+        }catch(IllegalArgumentException ex){
+            errln("Caught an unexpected expected");
+        }
+    }
+    public void TestJB4102(){
+        try {
+            ICUResourceBundle root =(ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "root");
+            ICUResourceBundle t = null;    
+// AmPmMarkers now exist in root/islamic calendar, so this test is rendered useless.
+//          try{
+//              t = root.getWithFallback("calendar/islamic-civil/AmPmMarkers");
+//              errln("Second resource does not exist. How did it get here?\n");
+//          }catch(MissingResourceException ex){
+//              logln("Got the expected exception");
+//          }
+            try{
+                t = root.getWithFallback("calendar/islamic-civil/eras/abbreviated/0/mikimaus/pera");
+                errln("Second resource does not exist. How did it get here?\n");
+            }catch(MissingResourceException ex){
+                logln("Got the expected exception");
+            }
+            if(t!=null){
+                errln("t is not null!");
+            }
+        } catch (MissingResourceException e) {
+           warnln("Could not load the locale data: " + e.getMessage());
+        }
+    }
+
+    public void TestCLDRStyleAliases() {
+        String result = null;
+        String expected = null;
+        String[]expects = new String[] { "", "a41", "a12", "a03", "ar4" };
+
+        logln("Testing CLDR style aliases......\n");
+
+        UResourceBundle rb = UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "te_IN_REVISED",testLoader);
+        ICUResourceBundle alias = (ICUResourceBundle)rb.get("a");
+
+        for(int i = 1; i < 5 ; i++) {
+          String resource="a"+i;
+          UResourceBundle a = (alias).getWithFallback(resource);
+          result = a.getString();
+          if(result.equals(expected)) {
+              errln("CLDR style aliases failed resource with name "+resource+"resource, exp "+expects[i] +" , got " + result); 
+          }
+        }
+
+    }
+    private String getLSString(int status){
+        switch(status){
+            case ICUResourceBundle.FROM_FALLBACK:
+                return "FROM_FALLBACK";
+            case ICUResourceBundle.FROM_DEFAULT:
+                return "FROM_DEFAULT";
+            case ICUResourceBundle.FROM_ROOT: 
+                return "FROM_ROOT";
+            case ICUResourceBundle.FROM_LOCALE: 
+                return "FROM_LOCALE";
+            default:
+                return "UNKNOWN";
+        }
+    }
+    public void TestLoadingStatus(){
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "yi_IL");
+        int status = bundle.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_DEFAULT){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_DEFAULT) 
+                    + " Got: " + getLSString(status));
+        }        
+        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "eo_DE");
+        status = bundle.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_FALLBACK){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_FALLBACK) 
+                    + " Got: " + getLSString(status));
+        }        
+        
+        logln("Test to verify loading status of get(String)");
+        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "te_IN");
+        UResourceBundle countries = bundle.get("Countries");
+        status = ((ICUResourceBundle)countries).getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_FALLBACK){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_FALLBACK) 
+                    + " Got: " + getLSString(status));
+        }
+        /*
+        UResourceBundle auxExemplar = bundle.get("AuxExemplarCharacters");
+        status = auxExemplar.getLoadingStatus();
+        if(status != UResourceBundle.FROM_ROOT){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(UResourceBundle.FROM_ROOT) 
+                    + " Got: " + getLSString(status));
+        } 
+        */
+        logln("Test to verify loading status of get(int)");
+        ICUResourceBundle ms = (ICUResourceBundle)bundle.get("MeasurementSystem");
+        status = ms.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_ROOT){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_ROOT) 
+                    + " Got: " + getLSString(status));
+        }
+                
+        logln("Test to verify loading status of getwithFallback");
+        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", "sh_YU",testLoader);
+        ICUResourceBundle temp = (ICUResourceBundle)bundle.getWithFallback("a/a2");
+        status = temp.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_LOCALE){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_LOCALE) 
+                    + " Got: " + getLSString(status));
+        }
+        temp = bundle.getWithFallback("a/a1");
+        status = temp.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_FALLBACK){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_FALLBACK) 
+                    + " Got: " + getLSString(status));
+        }
+        temp = bundle.getWithFallback("a/a4");
+        status = temp.getLoadingStatus();
+        if(status != ICUResourceBundle.FROM_ROOT){
+            errln("Did not get the expected value for loading status. Expected "+ getLSString(ICUResourceBundle.FROM_ROOT) 
+                    + " Got: " + getLSString(status));
+        }
+    }
+    public void TestCoverage(){
+        UResourceBundle bundle;
+        bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME);
+        if (bundle == null){
+            errln("UResourceBundle.getBundleInstance(String baseName) failed");
+        }
+        bundle = null;
+        bundle = UResourceBundle.getBundleInstance(ULocale.getDefault());
+        if (bundle == null){
+            errln("UResourceBundle.getBundleInstance(ULocale) failed");
+            return;
+        } 
+        if (new UResourceTypeMismatchException("coverage") == null){
+            errln("Create UResourceTypeMismatchException error");
+        }
+        class Stub extends UResourceBundle{
+            public ULocale getULocale() {return ULocale.ROOT;}
+            protected String getLocaleID() {return null;}
+            protected String getBaseName() {return null;}
+            protected UResourceBundle getParent() {return null;}
+            protected void setLoadingStatus(int newStatus) {}
+            public Enumeration getKeys() {return null;}
+            protected Object handleGetObject(String aKey) {return null;}
+        }
+        Stub stub = new Stub();
+        
+        if (!stub.getLocale().equals(ULocale.ROOT.toLocale())){
+            errln("UResourceBundle.getLoclae(Locale) should delegate to (ULocale)");
+        }
+    }
+    public void TestJavaULocaleBundleLoading(){
+        String baseName="com.ibm.icu.dev.data.resources.TestDataElements";
+        String locName = "en_Latn_US";
+        UResourceBundle bundle = UResourceBundle.getBundleInstance(baseName, locName, testLoader);
+        String fromRoot = bundle.getString("from_root");
+        if(!fromRoot.equals("This data comes from root")){
+            errln("Did not get the expected string for from_root");
+        }
+        String fromEn = bundle.getString("from_en");
+        if(!fromEn.equals("This data comes from en")){
+            errln("Did not get the expected string for from_en");
+        }
+        String fromEnLatn = bundle.getString("from_en_Latn");
+        if(!fromEnLatn.equals("This data comes from en_Latn")){
+            errln("Did not get the expected string for from_en_Latn");
+        }
+        String fromEnLatnUs = bundle.getString("from_en_Latn_US");
+        if(!fromEnLatnUs.equals("This data comes from en_Latn_US")){
+            errln("Did not get the expected string for from_en_Latn_US");
+        }
+        UResourceBundle bundle1 = UResourceBundle.getBundleInstance(baseName, new ULocale(locName), testLoader);
+        if(!bundle1.equals(bundle)){
+            errln("Did not get the expected bundle for "+baseName +"."+locName);
+        }
+        if(bundle1!=bundle){
+            errln("Did not load the bundle from cache");
+        }
+        
+        UResourceBundle bundle2 = UResourceBundle.getBundleInstance(baseName, "en_IN", testLoader);
+        if(!bundle2.getLocale().toString().equals("en")){
+            errln("Did not get the expected fallback locale. Expected: en Got: "+bundle2.getLocale().toString());    
+        }
+        UResourceBundle bundle3 = UResourceBundle.getBundleInstance(baseName, "te_IN", testLoader);
+        if(!bundle3.getLocale().toString().equals("te")){
+            errln("Did not get the expected fallback locale. Expected: te Got: "+bundle2.getLocale().toString());    
+        }
+        // non-existent bundle .. should return default
+        UResourceBundle defaultBundle = UResourceBundle.getBundleInstance(baseName, "hi_IN", testLoader);
+        ULocale defaultLocale = ULocale.getDefault();
+        if(!defaultBundle.getULocale().equals(defaultLocale)){
+            errln("Did not get the default bundle for non-existent bundle");
+        }
+        // non-existent bundle, non-existent default locale
+        // so return the root bundle.
+        ULocale.setDefault(ULocale.CANADA_FRENCH);
+        UResourceBundle root = UResourceBundle.getBundleInstance(baseName, "hi_IN", testLoader);
+        if(!root.getULocale().toString().equals("")){
+            errln("Did not get the root bundle for non-existent default bundle for non-existent bundle");
+        }        
+        //reset the default
+        ULocale.setDefault(defaultLocale);
+        Enumeration keys = bundle.getKeys();
+        int i=0;
+        while(keys.hasMoreElements()){
+            logln("key: "+ keys.nextElement());
+            i++;
+        }
+        if(i!=4){
+            errln("Did not get the expected number of keys: got " + i + ", expected 4");
+        }
+        UResourceBundle bundle4 = UResourceBundle.getBundleInstance(baseName,"fr_Latn_FR", testLoader);
+        if(bundle4==null){
+            errln("Could not load bundle fr_Latn_FR");
+        }
+    }
+    public void TestAliasFallback(){
+        try{
+            ULocale loc = new ULocale("en_US");
+            ICUResourceBundle b = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, loc);
+            ICUResourceBundle b1 = (ICUResourceBundle)b.getWithFallback("calendar/hebrew/monthNames/format/abbreviated");
+            if(b1!=null){
+                logln("loaded data for abbreviated month names: "+ b1.getKey()); 
+            }
+        }catch(MissingResourceException ex){
+            warnln("Failed to load data for abbreviated month names");
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceTest.java b/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
new file mode 100644
index 0000000..9237087
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
@@ -0,0 +1,1008 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUNotifier;
+import com.ibm.icu.impl.ICURWLock;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.Key;
+import com.ibm.icu.impl.ICUService.ServiceListener;
+import com.ibm.icu.impl.ICUService.SimpleFactory;
+import com.ibm.icu.impl.LocaleUtility;
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKey;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+import com.ibm.icu.impl.ICULocaleService.ICUResourceBundleFactory;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.EventListener;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.SortedMap;
+
+public class ICUServiceTest extends TestFmwk
+{
+    public static void main(String[] args) throws Exception {
+    ICUServiceTest test = new ICUServiceTest();
+    test.run(args);
+    }
+
+    private String lrmsg(String message, Object lhs, Object rhs) {
+    return message + " lhs: " + lhs + " rhs: " + rhs;
+    }
+
+    public void confirmBoolean(String message, boolean val) {
+    msg(message, val ? LOG : ERR, !val, true);
+    }
+
+    public void confirmEqual(String message, Object lhs, Object rhs) {
+        msg(lrmsg(message, lhs, rhs), (lhs == null ? rhs == null : lhs.equals(rhs)) ? LOG : ERR, true, true);
+    }
+
+    public void confirmIdentical(String message, Object lhs, Object rhs) {
+    msg(lrmsg(message, lhs, rhs), lhs == rhs ? LOG : ERR, true, true);
+    }
+
+    public void confirmIdentical(String message, int lhs, int rhs) {
+    msg(message + " lhs: " + lhs + " rhs: " + rhs, lhs == rhs ? LOG : ERR, true, true);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses the current default ULocale as the locale, the default collator for
+     * the locale as the comparator to sort the display names, and null for
+     * the matchID.
+     */
+    public SortedMap getDisplayNames(ICUService service) {
+        ULocale locale = ULocale.getDefault();
+        Collator col = Collator.getInstance(locale);
+        return service.getDisplayNames(locale, col, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses the default collator for the locale as the comparator to
+     * sort the display names, and null for the matchID.
+     */
+    public SortedMap getDisplayNames(ICUService service, ULocale locale) {
+        Collator col = Collator.getInstance(locale);
+        return service.getDisplayNames(locale, col, null);
+    }
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses the default collator for the locale as the comparator to
+     * sort the display names.
+     */
+    public SortedMap getDisplayNames(ICUService service, ULocale locale, String matchID) {
+        Collator col = Collator.getInstance(locale);
+        return service.getDisplayNames(locale, col, matchID);
+    }
+
+    // use locale keys
+    static final class TestService extends ICUService {
+        public TestService() {
+            super("Test Service");
+        }
+
+    public Key createKey(String id) {
+        return LocaleKey.createWithCanonicalFallback(id, null); // no fallback locale
+    }
+    }
+
+    public void TestAPI() {
+    // create a service using locale keys,
+    ICUService service = new TestService();
+
+        logln("service name:" + service.getName());
+
+    // register an object with one locale,
+    // search for an object with a more specific locale
+    // should return the original object
+    Integer singleton0 = new Integer(0);
+    service.registerObject(singleton0, "en_US");
+    Object result = service.get("en_US_FOO");
+    confirmIdentical("1) en_US_FOO -> en_US", result, singleton0);
+
+    // register a new object with the more specific locale
+    // search for an object with that locale
+    // should return the new object
+    Integer singleton1 = new Integer(1);
+    service.registerObject(singleton1, "en_US_FOO");
+    result = service.get("en_US_FOO");
+    confirmIdentical("2) en_US_FOO -> en_US_FOO", result, singleton1);
+
+    // search for an object that falls back to the first registered locale
+    result = service.get("en_US_BAR");
+    confirmIdentical("3) en_US_BAR -> en_US", result, singleton0);
+
+    // get a list of the factories, should be two
+    List factories = service.factories();
+    confirmIdentical("4) factory size", factories.size(), 2);
+
+    // register a new object with yet another locale
+    // original factory list is unchanged
+    Integer singleton2 = new Integer(2);
+    service.registerObject(singleton2, "en");
+    confirmIdentical("5) factory size", factories.size(), 2);
+
+    // search for an object with the new locale
+    // stack of factories is now en, en_US_FOO, en_US
+    // search for en_US should still find en_US object
+    result = service.get("en_US_BAR");
+    confirmIdentical("6) en_US_BAR -> en_US", result, singleton0);
+
+    // register a new object with an old id, should hide earlier factory using this id, but leave it there
+    Integer singleton3 = new Integer(3);
+    service.registerObject(singleton3, "en_US");
+    factories = service.factories();
+    confirmIdentical("9) factory size", factories.size(), 4);
+
+    // should get data from that new factory
+    result = service.get("en_US_BAR");
+    confirmIdentical("10) en_US_BAR -> (3)", result, singleton3);
+
+    // remove new factory
+    // should have fewer factories again
+    service.unregisterFactory((Factory)factories.get(0));
+    factories = service.factories();
+    confirmIdentical("11) factory size", factories.size(), 3);
+
+    // should get original data again after remove factory
+    result = service.get("en_US_BAR");
+    confirmIdentical("12) en_US_BAR -> 0", result, singleton0);
+
+    // shouldn't find unregistered ids
+    result = service.get("foo");
+    confirmIdentical("13) foo -> null", result, null);
+
+    // should find non-canonical strings
+    String[] resultID = new String[1];
+    result = service.get("EN_us_fOo", resultID);
+    confirmEqual("14) find non-canonical", resultID[0], "en_US_FOO");
+
+    // should be able to register non-canonical strings and get them canonicalized
+    service.registerObject(singleton3, "eN_ca_dUde");
+    result = service.get("En_Ca_DuDe", resultID);
+    confirmEqual("15) register non-canonical", resultID[0], "en_CA_DUDE");
+
+    // should be able to register invisible factories, these will not
+    // be visible by default, but if you know the secret password you
+    // can still access these services...
+    Integer singleton4 = new Integer(4);
+    service.registerObject(singleton4, "en_US_BAR", false);
+    result = service.get("en_US_BAR");
+    confirmIdentical("17) get invisible", result, singleton4);
+
+    // should not be able to locate invisible services
+    Set ids = service.getVisibleIDs();
+    confirmBoolean("18) find invisible", !ids.contains("en_US_BAR"));
+
+    service.reset();
+    // an anonymous factory than handles all ids
+    {
+        Factory factory = new Factory() {
+            public Object create(Key key, ICUService unusedService) {
+                return new ULocale(key.currentID());
+            }
+
+            public void updateVisibleIDs(Map unusedResult) {
+            }
+
+            public String getDisplayName(String id, ULocale l) {
+                return null;
+            }
+        };
+        service.registerFactory(factory);
+
+        // anonymous factory will still handle the id
+        result = service.get(ULocale.US.toString());
+        confirmEqual("21) locale", result, ULocale.US);
+
+        // still normalizes id
+        result = service.get("EN_US_BAR");
+        confirmEqual("22) locale", result, new ULocale("en_US_BAR"));
+
+        // we can override for particular ids
+        service.registerObject(singleton3, "en_US_BAR");
+        result = service.get("en_US_BAR");
+        confirmIdentical("23) override super", result, singleton3);
+
+    }
+
+    // empty service should not recognize anything
+    service.reset();
+    result = service.get("en_US");
+    confirmIdentical("24) empty", result, null);
+
+    // create a custom multiple key factory
+    {
+        String[] xids = { "en_US_VALLEY_GIRL",
+                  "en_US_VALLEY_BOY",
+                  "en_US_SURFER_GAL",
+                  "en_US_SURFER_DUDE"
+        };
+        service.registerFactory(new TestLocaleKeyFactory(xids, "Later"));
+    }
+
+    // iterate over the visual ids returned by the multiple factory
+    {
+        Set vids = service.getVisibleIDs();
+        Iterator iter = vids.iterator();
+        int count = 0;
+        while (iter.hasNext()) {
+        ++count;
+                String id = (String)iter.next();
+        logln("  " + id + " --> " + service.get(id));
+        }
+        // four visible ids
+        confirmIdentical("25) visible ids", count, 4);
+    }
+
+    // iterate over the display names
+    {
+        Map dids = getDisplayNames(service, ULocale.GERMANY);
+        Iterator iter = dids.entrySet().iterator();
+        int count = 0;
+        while (iter.hasNext()) {
+        ++count;
+        Entry e = (Entry)iter.next();
+        logln("  " + e.getKey() + " -- > " + e.getValue());
+        }
+        // four display names, in german
+        confirmIdentical("26) display names", count, 4);
+    }
+
+    // no valid display name
+    confirmIdentical("27) get display name", service.getDisplayName("en_US_VALLEY_GEEK"), null);
+
+    {
+        String name = service.getDisplayName("en_US_SURFER_DUDE", ULocale.US);
+        confirmEqual("28) get display name", name, "English (United States, SURFER_DUDE)");
+    }
+
+    // register another multiple factory
+    {
+        String[] xids = {
+        "en_US_SURFER", "en_US_SURFER_GAL", "en_US_SILICON", "en_US_SILICON_GEEK"
+        };
+        service.registerFactory(new TestLocaleKeyFactory(xids, "Rad dude"));
+    }
+
+    // this time, we have seven display names
+        // Rad dude's surfer gal 'replaces' later's surfer gal
+    {
+        Map dids = getDisplayNames(service);
+        Iterator iter = dids.entrySet().iterator();
+        int count = 0;
+        while (iter.hasNext()) {
+        ++count;
+        Entry e = (Entry)iter.next();
+        logln("  " + e.getKey() + " --> " + e.getValue());
+        }
+        // seven display names, in spanish
+        confirmIdentical("29) display names", count, 7);
+    }
+
+    // we should get the display name corresponding to the actual id
+    // returned by the id we used.
+    {
+        String[] actualID = new String[1];
+        String id = "en_us_surfer_gal";
+        String gal = (String)service.get(id, actualID);
+        if (gal != null) {
+                logln("actual id: " + actualID[0]);
+        String displayName = service.getDisplayName(actualID[0], ULocale.US);
+        logln("found actual: " + gal + " with display name: " + displayName);
+        confirmBoolean("30) found display name for actual", displayName != null);
+
+        displayName = service.getDisplayName(id, ULocale.US);
+        logln("found query: " + gal + " with display name: " + displayName);
+        // this is no longer a bug, we want to return display names for anything
+        // that a factory handles.  since we handle it, we should return a display
+        // name.  see jb3549
+        // confirmBoolean("31) found display name for query", displayName == null);
+        } else {
+        errln("30) service could not find entry for " + id);
+        }
+
+            // this should be handled by the 'dude' factory, since it overrides en_US_SURFER.
+        id = "en_US_SURFER_BOZO";
+        String bozo = (String)service.get(id, actualID);
+        if (bozo != null) {
+        String displayName = service.getDisplayName(actualID[0], ULocale.US);
+        logln("found actual: " + bozo + " with display name: " + displayName);
+        confirmBoolean("32) found display name for actual", displayName != null);
+
+        displayName = service.getDisplayName(id, ULocale.US);
+        logln("found actual: " + bozo + " with display name: " + displayName);
+        // see above and jb3549
+        // confirmBoolean("33) found display name for query", displayName == null);
+        } else {
+        errln("32) service could not find entry for " + id);
+        }
+
+            confirmBoolean("34) is default ", !service.isDefault());
+    }
+
+        /*
+      // disallow hiding for now
+
+      // hiding factory should obscure 'sublocales'
+      {
+      String[] xids = {
+      "en_US_VALLEY", "en_US_SILICON"
+      };
+      service.registerFactory(new TestHidingFactory(xids, "hiding"));
+      }
+
+      {
+      Map dids = service.getDisplayNames();
+      Iterator iter = dids.entrySet().iterator();
+      int count = 0;
+      while (iter.hasNext()) {
+      ++count;
+      Entry e = (Entry)iter.next();
+      logln("  " + e.getKey() + " -- > " + e.getValue());
+      }
+      confirmIdentical("35) hiding factory", count, 5);
+      }
+        */
+
+    {
+        Set xids = service.getVisibleIDs();
+        Iterator iter = xids.iterator();
+        while (iter.hasNext()) {
+        String xid = (String)iter.next();
+        logln(xid + "?  " + service.get(xid));
+        }
+
+        logln("valleygirl?  " + service.get("en_US_VALLEY_GIRL"));
+        logln("valleyboy?   " + service.get("en_US_VALLEY_BOY"));
+        logln("valleydude?  " + service.get("en_US_VALLEY_DUDE"));
+        logln("surfergirl?  " + service.get("en_US_SURFER_GIRL"));
+    }
+
+    // resource bundle factory.
+    service.reset();
+    service.registerFactory(new ICUResourceBundleFactory());
+
+    // list all of the resources
+    {
+            logln("all visible ids: " + service.getVisibleIDs());
+            /*
+          Set xids = service.getVisibleIDs();
+          StringBuffer buf = new StringBuffer("{");
+          boolean notfirst = false;
+          Iterator iter = xids.iterator();
+          while (iter.hasNext()) {
+          String xid = (String)iter.next();
+          if (notfirst) {
+          buf.append(", ");
+          } else {
+          notfirst = true;
+          }
+          buf.append(xid);
+          }
+          buf.append("}");
+          logln(buf.toString());
+            */
+    }
+
+        // list only the resources for es, default locale
+        // since we're using the default Key, only "es" is matched
+        {
+            logln("visible ids for es locale: " + service.getVisibleIDs("es"));
+        }
+
+        // list only the spanish display names for es, spanish collation order
+        // since we're using the default Key, only "es" is matched
+        {
+            logln("display names: " + getDisplayNames(service, new ULocale("es"), "es"));
+        }
+
+        // list the display names in reverse order
+        {
+            logln("display names in reverse order: " +
+                  service.getDisplayNames(ULocale.US, new Comparator() {
+                          public int compare(Object lhs, Object rhs) {
+                              return -String.CASE_INSENSITIVE_ORDER.compare((String)lhs, (String)rhs);
+                          }
+                      }));
+        }
+
+    // get all the display names of these resources
+    // this should be fast since the display names were cached.
+    {
+            logln("service display names for de_DE");
+        Map names = getDisplayNames(service, new ULocale("de_DE"));
+        StringBuffer buf = new StringBuffer("{");
+        Iterator iter = names.entrySet().iterator();
+        while (iter.hasNext()) {
+        Entry e = (Entry)iter.next();
+        String name = (String)e.getKey();
+        String id = (String)e.getValue();
+        buf.append("\n   " + name + " --> " + id);
+        }
+        buf.append("\n}");
+        logln(buf.toString());
+    }
+
+        CalifornioLanguageFactory califactory = new CalifornioLanguageFactory();
+        service.registerFactory(califactory);
+    // get all the display names of these resources
+    {
+            logln("californio language factory");
+        StringBuffer buf = new StringBuffer("{");
+            String[] idNames = {
+                CalifornioLanguageFactory.californio,
+        CalifornioLanguageFactory.valley,
+        CalifornioLanguageFactory.surfer,
+        CalifornioLanguageFactory.geek
+            };
+            for (int i = 0; i < idNames.length; ++i) {
+                String idName = idNames[i];
+                buf.append("\n  --- " + idName + " ---");
+                Map names = getDisplayNames(service, new ULocale(idName));
+                Iterator iter = names.entrySet().iterator();
+                while (iter.hasNext()) {
+                    Entry e = (Entry)iter.next();
+                    String name = (String)e.getKey();
+                    String id = (String)e.getValue();
+                    buf.append("\n    " + name + " --> " + id);
+                }
+        }
+        buf.append("\n}");
+        logln(buf.toString());
+    }
+
+    // test notification
+    // simple registration
+    {
+            logln("simple registration notification");
+        ICULocaleService ls = new ICULocaleService();
+        ServiceListener l1 = new ServiceListener() {
+            private int n;
+            public void serviceChanged(ICUService s) {
+            logln("listener 1 report " + n++ + " service changed: " + s);
+            }
+        };
+        ls.addListener(l1);
+        ServiceListener l2 = new ServiceListener() {
+            private int n;
+            public void serviceChanged(ICUService s) {
+            logln("listener 2 report " + n++ + " service changed: " + s);
+            }
+        };
+        ls.addListener(l2);
+        logln("registering foo... ");
+        ls.registerObject("Foo", "en_FOO");
+        logln("registering bar... ");
+        ls.registerObject("Bar", "en_BAR");
+        logln("getting foo...");
+        logln((String)ls.get("en_FOO"));
+        logln("removing listener 2...");
+        ls.removeListener(l2);
+        logln("registering baz...");
+        ls.registerObject("Baz", "en_BAZ");
+        logln("removing listener 1");
+        ls.removeListener(l1);
+        logln("registering burp...");
+        ls.registerObject("Burp", "en_BURP");
+
+        // should only get one notification even if register multiple times
+        logln("... trying multiple registration");
+        ls.addListener(l1);
+        ls.addListener(l1);
+        ls.addListener(l1);
+        ls.addListener(l2);
+        ls.registerObject("Foo", "en_FOO");
+        logln("... registered foo");
+
+        // since in a separate thread, we can callback and not deadlock
+        ServiceListener l3 = new ServiceListener() {
+            private int n;
+            public void serviceChanged(ICUService s) {
+            logln("listener 3 report " + n++ + " service changed...");
+            if (s.get("en_BOINK") == null) { // don't recurse on ourselves!!!
+                logln("registering boink...");
+                s.registerObject("boink", "en_BOINK");
+            }
+            }
+        };
+        ls.addListener(l3);
+        logln("registering boo...");
+        ls.registerObject("Boo", "en_BOO");
+        logln("...done");
+
+        try {
+        Thread.sleep(100);
+        }
+        catch (InterruptedException e) {
+        }
+    }
+    }
+
+    static class TestLocaleKeyFactory extends LocaleKeyFactory {
+    protected final Set ids;
+    protected final String factoryID;
+
+    public TestLocaleKeyFactory(String[] ids, String factoryID) {
+            super(VISIBLE, factoryID);
+
+        this.ids = Collections.unmodifiableSet(new HashSet(Arrays.asList(ids)));
+            this.factoryID = factoryID + ": ";
+    }
+
+    protected Object handleCreate(ULocale loc, int kind, ICUService service) {
+            return factoryID + loc.toString();
+    }
+
+    protected Set getSupportedIDs() {
+            return ids;
+    }
+    }
+
+    /*
+      // Disallow hiding for now since it causes gnarly problems, like
+      // how do you localize the hidden (but still exported) names.
+
+      static class TestHidingFactory implements ICUService.Factory {
+      protected final String[] ids;
+      protected final String factoryID;
+
+      public TestHidingFactory(String[] ids) {
+      this(ids, "Hiding");
+      }
+
+      public TestHidingFactory(String[] ids, String factoryID) {
+      this.ids = (String[])ids.clone();
+
+      if (factoryID == null || factoryID.length() == 0) {
+      this.factoryID = "";
+      } else {
+      this.factoryID = factoryID + ": ";
+      }
+      }
+
+      public Object create(Key key, ICUService service) {
+      for (int i = 0; i < ids.length; ++i) {
+      if (LocaleUtility.isFallbackOf(ids[i], key.currentID())) {
+      return factoryID + key.canonicalID();
+      }
+      }
+      return null;
+      }
+
+      public void updateVisibleIDs(Map result) {
+      for (int i = 0; i < ids.length; ++i) {
+      String id = ids[i];
+      Iterator iter = result.keySet().iterator();
+      while (iter.hasNext()) {
+      if (LocaleUtility.isFallbackOf(id, (String)iter.next())) {
+      iter.remove();
+      }
+      }
+      result.put(id, this);
+      }
+      }
+
+      public String getDisplayName(String id, ULocale locale) {
+      return factoryID + new ULocale(id).getDisplayName(locale);
+      }
+      }
+    */
+
+    static class CalifornioLanguageFactory extends ICUResourceBundleFactory {
+    public static String californio = "en_US_CA";
+    public static String valley = californio + "_VALLEY";
+    public static String surfer = californio + "_SURFER";
+    public static String geek = californio + "_GEEK";
+        public static Set supportedIDs;
+        static {
+            HashSet result = new HashSet();
+            result.addAll(ICUResourceBundle.getAvailableLocaleNameSet());
+        result.add(californio);
+        result.add(valley);
+        result.add(surfer);
+        result.add(geek);
+            supportedIDs = Collections.unmodifiableSet(result);
+        }
+
+    public Set getSupportedIDs() {
+            return supportedIDs;
+    }
+
+    public String getDisplayName(String id, ULocale locale) {
+        String prefix = "";
+        String suffix = "";
+        String ls = locale.toString();
+        if (LocaleUtility.isFallbackOf(californio, ls)) {
+        if (ls.equalsIgnoreCase(valley)) {
+            prefix = "Like, you know, it's so totally ";
+        } else if (ls.equalsIgnoreCase(surfer)) {
+            prefix = "Dude, its ";
+        } else if (ls.equalsIgnoreCase(geek)) {
+            prefix = "I'd estimate it's approximately ";
+        } else {
+            prefix = "Huh?  Maybe ";
+        }
+        }
+        if (LocaleUtility.isFallbackOf(californio, id)) {
+        if (id.equalsIgnoreCase(valley)) {
+            suffix = "like the Valley, you know?  Let's go to the mall!";
+        } else if (id.equalsIgnoreCase(surfer)) {
+            suffix = "time to hit those gnarly waves, Dude!!!";
+        } else if (id.equalsIgnoreCase(geek)) {
+            suffix = "all systems go.  T-Minus 9, 8, 7...";
+        } else {
+            suffix = "No Habla Englais";
+        }
+        } else {
+        suffix = super.getDisplayName(id, locale);
+        }
+
+        return prefix + suffix;
+    }
+    }
+
+    public void TestLocale() {
+    ICULocaleService service = new ICULocaleService("test locale");
+    service.registerObject("root", ULocale.ROOT);
+    service.registerObject("german", "de");
+    service.registerObject("german_Germany", ULocale.GERMANY);
+    service.registerObject("japanese", "ja");
+    service.registerObject("japanese_Japan", ULocale.JAPAN);
+
+    Object target = service.get("de_US");
+    confirmEqual("test de_US", "german", target);
+
+        ULocale de = new ULocale("de");
+        ULocale de_US = new ULocale("de_US");
+
+        target = service.get(de_US);
+    confirmEqual("test de_US 2", "german", target);
+
+        target = service.get(de_US, LocaleKey.KIND_ANY);
+    confirmEqual("test de_US 3", "german", target);
+
+        target = service.get(de_US, 1234);
+    confirmEqual("test de_US 4", "german", target);
+
+        ULocale[] actualReturn = new ULocale[1];
+        target = service.get(de_US, actualReturn);
+        confirmEqual("test de_US 5", "german", target);
+        confirmEqual("test de_US 6", actualReturn[0], de);
+
+        actualReturn[0] = null;
+        target = service.get(de_US, LocaleKey.KIND_ANY, actualReturn);
+        confirmEqual("test de_US 7", actualReturn[0], de);
+
+        actualReturn[0] = null;
+        target = service.get(de_US, 1234, actualReturn);
+    confirmEqual("test de_US 8", "german", target);
+        confirmEqual("test de_US 9", actualReturn[0], de);
+
+        service.registerObject("one/de_US", de_US, 1);
+        service.registerObject("two/de_US", de_US, 2);
+
+        target = service.get(de_US, 1);
+        confirmEqual("test de_US kind 1", "one/de_US", target);
+
+        target = service.get(de_US, 2);
+        confirmEqual("test de_US kind 2", "two/de_US", target);
+
+        target = service.get(de_US);
+        confirmEqual("test de_US kind 3", "german", target);
+
+        LocaleKey lkey = LocaleKey.createWithCanonicalFallback("en", null, 1234);
+        logln("lkey prefix: " + lkey.prefix());
+        logln("lkey descriptor: " + lkey.currentDescriptor());
+        logln("lkey current locale: " + lkey.currentLocale());
+
+        lkey.fallback();
+        logln("lkey descriptor 2: " + lkey.currentDescriptor());
+
+        lkey.fallback();
+        logln("lkey descriptor 3: " + lkey.currentDescriptor());
+
+    target = service.get("za_PPP");
+    confirmEqual("test zappp", "root", target);
+
+    ULocale loc = ULocale.getDefault();
+    ULocale.setDefault(ULocale.JAPANESE);
+    target = service.get("za_PPP");
+    confirmEqual("test with ja locale", "japanese", target);
+
+    Set ids = service.getVisibleIDs();
+    for (Iterator iter = ids.iterator(); iter.hasNext();) {
+        logln("id: " + iter.next());
+    }
+
+    ULocale.setDefault(loc);
+    ids = service.getVisibleIDs();
+    for (Iterator iter = ids.iterator(); iter.hasNext();) {
+        logln("id: " + iter.next());
+    }
+
+    target = service.get("za_PPP");
+    confirmEqual("test with en locale", "root", target);
+
+        ULocale[] locales = service.getAvailableULocales();
+        confirmIdentical("test available locales", locales.length, 6);
+        logln("locales: ");
+        for (int i = 0; i < locales.length; ++i) {
+            log("\n  [" + i + "] " + locales[i]);
+        }
+        logln(" ");
+
+        service.registerFactory(new ICUResourceBundleFactory());
+        target = service.get(ULocale.JAPAN);
+
+        {
+            int n = 0;
+            List factories = service.factories();
+            Iterator iter = factories.iterator();
+            while (iter.hasNext()) {
+                logln("[" + n++ + "] " + iter.next());
+            }
+        }
+
+        // list only the english display names for es, in reverse order
+        // since we're using locale keys, we should get all and only the es locales
+        // hmmm, the default toString function doesn't print in sorted order for TreeMap
+        {
+            SortedMap map = service.getDisplayNames(ULocale.US,
+                            new Comparator() {
+                                public int compare(Object lhs, Object rhs) {
+                                return -String.CASE_INSENSITIVE_ORDER.compare((String)lhs, (String)rhs);
+                                }
+                            },
+                            "es");
+
+            logln("es display names in reverse order " + map);
+        }
+    }
+
+    public void TestWrapFactory() {
+        final String greeting = "Hello There";
+        final String greetingID = "greeting";
+
+        ICUService service = new ICUService("wrap");
+        service.registerObject(greeting, greetingID);
+
+        logln("test one: " + service.get(greetingID));
+
+        class WrapFactory implements Factory {
+            public Object create(Key key, ICUService serviceArg) {
+                if (key.currentID().equals(greetingID)) {
+                    Object previous = serviceArg.getKey(key, null, this);
+                    return "A different greeting: \"" + previous + "\"";
+                }
+                return null;
+            }
+
+            public void updateVisibleIDs(Map result) {
+                result.put("greeting", this);
+            }
+
+            public String getDisplayName(String id, ULocale locale) {
+                return "wrap '" + id + "'";
+            }
+        }
+        service.registerFactory(new WrapFactory());
+
+        confirmEqual("wrap test: ", service.get(greetingID), "A different greeting: \"" + greeting + "\"");
+    }
+
+    // misc coverage tests
+    public void TestCoverage() {
+    // Key
+    Key key = new Key("foobar");
+    logln("ID: " + key.id());
+    logln("canonicalID: " + key.canonicalID());
+    logln("currentID: " + key.currentID());
+    logln("has fallback: " + key.fallback());
+
+    // SimpleFactory
+    Object obj = new Object();
+    SimpleFactory sf = new SimpleFactory(obj, "object");
+    try {
+        sf = new SimpleFactory(null, null);
+        errln("didn't throw exception");
+    }
+    catch (IllegalArgumentException e) {
+        logln("OK: " + e.getMessage());
+    }
+    catch (Exception e) {
+        errln("threw wrong exception" + e);
+    }
+    logln(sf.getDisplayName("object", null));
+
+    // ICUService
+    ICUService service = new ICUService();
+    service.registerFactory(sf);
+
+    try {
+        service.get(null, null);
+        errln("didn't throw exception");
+    }
+    catch (NullPointerException e) {
+        logln("OK: " + e.getMessage());
+    }
+        /*
+      catch (Exception e) {
+      errln("threw wrong exception" + e);
+      }
+        */
+    try {
+        service.registerFactory(null);
+        errln("didn't throw exception");
+    }
+    catch (NullPointerException e) {
+        logln("OK: " + e.getMessage());
+    }
+    catch (Exception e) {
+        errln("threw wrong exception" + e);
+    }
+
+    try {
+        service.unregisterFactory(null);
+        errln("didn't throw exception");
+    }
+    catch (NullPointerException e) {
+        logln("OK: " + e.getMessage());
+    }
+    catch (Exception e) {
+        errln("threw wrong exception" + e);
+    }
+
+    logln("object is: " + service.get("object"));
+
+    logln("stats: " + service.stats());
+
+    // ICURWLock
+
+    ICURWLock rwlock = new ICURWLock();
+    rwlock.acquireRead();
+    rwlock.releaseRead();
+
+    rwlock.acquireWrite();
+    rwlock.releaseWrite();
+    logln("stats: " + rwlock.getStats());
+    logln("stats: " + rwlock.clearStats());
+    rwlock.acquireRead();
+    rwlock.releaseRead();
+    rwlock.acquireWrite();
+    rwlock.releaseWrite();
+    logln("stats: " + rwlock.getStats());
+
+    try {
+        rwlock.releaseRead();
+        errln("no error thrown");
+    }
+    catch (IllegalStateException e) {
+        logln("OK: " + e.getMessage());
+    }
+
+    try {
+        rwlock.releaseWrite();
+        errln("no error thrown");
+    }
+    catch (IllegalStateException e) {
+        logln("OK: " + e.getMessage());
+    }
+
+        // ICULocaleService
+
+    // LocaleKey
+
+    // LocaleKey lkey = LocaleKey.create("en_US", "ja_JP");
+    // lkey = LocaleKey.create(null, null);
+    LocaleKey lkey = LocaleKey.createWithCanonicalFallback("en_US", "ja_JP");
+        logln("lkey: " + lkey);
+
+        lkey = LocaleKey.createWithCanonicalFallback(null, null);
+        logln("lkey from null,null: " + lkey);
+
+    // LocaleKeyFactory
+    LocaleKeyFactory lkf = new LKFSubclass(false);
+        logln("lkf: " + lkf);
+    logln("obj: " + lkf.create(lkey, null));
+    logln(lkf.getDisplayName("foo", null));
+    logln(lkf.getDisplayName("bar", null));
+    lkf.updateVisibleIDs(new HashMap());
+
+    LocaleKeyFactory invisibleLKF = new LKFSubclass(false);
+    logln("obj: " + invisibleLKF.create(lkey, null));
+    logln(invisibleLKF.getDisplayName("foo", null));
+    logln(invisibleLKF.getDisplayName("bar", null));
+    invisibleLKF.updateVisibleIDs(new HashMap());
+
+    // ResourceBundleFactory
+    ICUResourceBundleFactory rbf = new ICUResourceBundleFactory();
+    logln("RB: " + rbf.create(lkey, null));
+
+    // ICUNotifier
+    ICUNotifier nf = new ICUNSubclass();
+    try {
+        nf.addListener(null);
+        errln("added null listener");
+    }
+    catch (NullPointerException e) {
+        logln(e.getMessage());
+    }
+    catch (Exception e) {
+        errln("got wrong exception");
+    }
+
+    try {
+        nf.addListener(new WrongListener());
+        errln("added wrong listener");
+    }
+    catch (IllegalStateException e) {
+        logln(e.getMessage());
+    }
+    catch (Exception e) {
+        errln("got wrong exception");
+    }
+
+    try {
+        nf.removeListener(null);
+        errln("removed null listener");
+    }
+    catch (NullPointerException e) {
+        logln(e.getMessage());
+    }
+    catch (Exception e) {
+        errln("got wrong exception");
+    }
+
+    nf.removeListener(new MyListener());
+    nf.notifyChanged();
+    nf.addListener(new MyListener());
+    nf.removeListener(new MyListener());
+    }
+
+    static class MyListener implements EventListener {
+    }
+
+    static class WrongListener implements EventListener {
+    }
+
+    static class ICUNSubclass extends ICUNotifier {
+        public boolean acceptsListener(EventListener l) {
+            return l instanceof MyListener;
+        }
+    
+        // not used, just needed to implement abstract base
+        public void notifyListener(EventListener l) {
+        }
+    }
+
+    static class LKFSubclass extends LocaleKeyFactory {
+    LKFSubclass(boolean visible) {
+        super(visible ? VISIBLE : INVISIBLE);
+    }
+
+    protected Set getSupportedIDs() {
+            return Collections.EMPTY_SET;
+    }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java b/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
new file mode 100644
index 0000000..baaab7d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
@@ -0,0 +1,218 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+import java.util.EventListener;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.SortedMap;
+
+public class ICUServiceTestSample {
+    static public void main(String[] args) {
+        HelloServiceClient client = new HelloServiceClient();
+
+        Thread t = new HelloUpdateThread();
+        t.start();
+        try {
+            t.join();
+        }
+        catch (InterruptedException e) {
+        }
+        System.out.println("done");
+        if(client==null){
+        }
+    }
+
+    /**
+     * A class that displays the current names in the Hello service.
+     * Each time the service changes, it redisplays the names.
+     */
+    static class HelloServiceClient implements HelloService.HelloServiceListener {
+
+        HelloServiceClient() {
+            HelloService.addListener(this);
+            display();
+        }
+
+
+        /**
+         * This will be called in the notification thread of
+         * ICUNotifier.  ICUNotifier could spawn a (non-daemon) thread
+         * for each listener, so that impolite listeners wouldn't hold
+         * up notification, but right now it doesn't.  Instead, all
+         * notifications are delivered on the notification thread.
+         * Since that's a daemon thread, a notification might not
+         * complete before main terminates.  
+         */
+        public void helloServiceChanged() {
+            display();
+        }
+
+        private void display() {
+            Map names = HelloService.getDisplayNames(ULocale.US);
+            System.out.println("displaying " + names.size() + " names.");
+            Iterator iter = names.entrySet().iterator();
+            while (iter.hasNext()) {
+                Entry entry = (Entry)iter.next();
+                String displayName = (String)entry.getKey();
+                HelloService service = HelloService.get((String)entry.getValue());
+                System.out.println(displayName + " says " + service.hello());
+                try {
+                    Thread.sleep(50);
+                }
+                catch (InterruptedException e) {
+                }
+            }
+            System.out.println("----");
+        }
+    }
+
+    /**
+     * A thread to update the service.
+     */
+    static class HelloUpdateThread extends Thread {
+        String[][] updates = {
+            { "Hey", "en_US_INFORMAL" },
+            { "Hallo", "de_DE_INFORMAL" },
+            { "Yo!", "en_US_CALIFORNIA_INFORMAL" },
+            { "Chi Fanle Ma?", "zh__INFORMAL" },
+            { "Munch munch... Burger?", "en" },
+            { "Sniff", "fr" },
+            { "TongZhi! MaoZeDong SiXiang Wan Sui!", "zh_CN" },
+            { "Bier? Ja!", "de" },
+        };
+        public void run() {
+            for (int i = 0; i < updates.length; ++i) {
+                try {
+                    Thread.sleep(500);
+                }
+                catch (InterruptedException e) {
+                }
+                HelloService.register(updates[i][0], new ULocale(updates[i][1]));
+            }
+        }
+    }
+
+    /**
+     * An example service that wraps an ICU service in order to export custom API and
+     * notification. The service just implements 'hello'.
+     */
+    static final class HelloService {
+        private static ICUService registry;
+        private String name;
+    
+        private HelloService(String name) { 
+            this.name = name; 
+        }
+    
+        /**
+         * The hello service...
+         */
+        public String hello() { 
+            return name; 
+        }
+        
+        public String toString() { 
+            return super.toString() + ": " + name; 
+        }
+    
+        /**
+         * Deferred init.
+         */
+        private static ICUService registry() {
+            if (registry == null) {
+                initRegistry();
+            }
+            return registry;
+        }
+    
+        private static void initRegistry() {
+            registry = new ICULocaleService() {
+                    protected boolean acceptsListener(EventListener l) {
+                        return true; // we already verify in our wrapper APIs
+                    }
+                    protected void notifyListener(EventListener l) {
+                        ((HelloServiceListener)l).helloServiceChanged();
+                    }
+                };
+    
+            // initialize
+            doRegister("Hello", "en");
+            doRegister("Bonjour", "fr");
+            doRegister("Ni Hao", "zh_CN");
+            doRegister("Guten Tag", "de");
+        }
+    
+        /**
+         * A custom listener for changes to this service.  We don't need to
+         * point to the service since it is defined by this class and not
+         * an object.
+         */
+        public static interface HelloServiceListener extends EventListener {
+            public void helloServiceChanged();
+        }
+    
+        /**
+         * Type-safe notification for this service.
+         */
+        public static void addListener(HelloServiceListener l) {
+            registry().addListener(l);
+        }
+    
+        /**
+         * Type-safe notification for this service.
+         */
+        public static void removeListener(HelloServiceListener l) {
+            registry().removeListener(l);
+        }
+    
+        /**
+         * Type-safe access to the service.
+         */
+        public static HelloService get(String id) {
+            return (HelloService)registry().get(id);
+        }
+    
+        public static Set getVisibleIDs() {
+            return registry().getVisibleIDs();
+        }
+    
+        public static Map getDisplayNames(ULocale locale) {
+            return getDisplayNames(registry(), locale);
+        }
+    
+        /**
+         * Register a new hello string for this locale.
+         */
+        public static void register(String helloString, ULocale locale) {
+            if (helloString == null || locale == null) {
+                throw new NullPointerException();
+            }
+            doRegister(helloString, locale.toString());
+        }
+    
+        private static void doRegister(String hello, String id) {
+            registry().registerObject(new HelloService(hello), id);
+        }
+        /**
+         * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+         * uses the default collator for the locale as the comparator to
+         * sort the display names, and null for the matchID.
+         */
+        public static SortedMap getDisplayNames(ICUService service, ULocale locale) {
+            Collator col = Collator.getInstance(locale);
+            return service.getDisplayNames(locale, col, null);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java b/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
new file mode 100644
index 0000000..2a4e8de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
@@ -0,0 +1,482 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestLog;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.SimpleFactory;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.MissingResourceException;
+import java.util.Random;
+import java.util.Set;
+import java.util.SortedMap;
+
+public class ICUServiceThreadTest extends TestFmwk
+{    
+    private static final boolean PRINTSTATS = false;
+
+    public static void main(String[] args) throws Exception {
+        ICUServiceThreadTest test = new ICUServiceThreadTest();
+        test.run(args);
+
+        // get
+        // getvisibleids
+        // getdisplayname(locale)
+        // factories
+    
+        // registerFactory
+        // unregisterFactory
+
+        // 1) concurrent access
+        // 2) access while factories change
+        // 3) iteration while factories change
+        // 4) concurrent conflicting access
+    }
+
+    private static final String[] countries = {
+        "ab", "bc", "cd", "de", "ef", "fg", "gh", "ji", "ij", "jk"
+    };
+    private static final String[] languages = {
+        "", "ZY", "YX", "XW", "WV", "VU", "UT", "TS", "SR", "RQ", "QP"
+    };
+    private static final String[] variants = {
+        "", "", "", "GOLD", "SILVER", "BRONZE"
+    };
+
+    private static class TestFactory extends SimpleFactory {
+        TestFactory(String id) {
+            super(new ULocale(id), id, true);
+        }
+
+        public String getDisplayName(String idForDisplay, ULocale locale) {
+            return (visible && idForDisplay.equals(this.id)) ? "(" + locale.toString() + ") " + idForDisplay : null;
+        }
+
+        public String toString() {
+            return "Factory_" + id;
+        }
+    }
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses the default collator for the locale as the comparator to
+     * sort the display names, and null for the matchID.
+     */
+    public static SortedMap getDisplayNames(ICUService service, ULocale locale) {
+        Collator col;
+        try {
+            col = Collator.getInstance(locale);
+        } 
+        catch (MissingResourceException e) {
+            // if no collator resources, we can't collate
+            col = null;
+        }
+        return service.getDisplayNames(locale, col, null);
+    }
+    private static final Random r = new Random(); // this is a multi thread test, can't 'unrandomize' 
+
+    private static String getCLV() {
+        String c = countries[r.nextInt(countries.length)];
+        String l = languages[r.nextInt(languages.length)];
+        String v = variants[r.nextInt(variants.length)];
+        return new Locale(c, l, v).toString();
+    }
+
+    private static boolean WAIT = true;
+    private static boolean GO = false;
+    private static long TIME = 5000;
+
+    public static void runThreads() {
+        runThreads(TIME);
+    }
+
+    public static void runThreads(long time) {
+        try {
+            GO = true;
+            WAIT = false;
+
+            Thread.sleep(time);
+
+            WAIT = true;
+            GO = false;
+
+            Thread.sleep(300);
+        }
+        catch (InterruptedException e) {
+        }
+    }
+
+    static class TestThread extends Thread {
+        //private final String name;
+        protected ICUService service;
+        private final long delay;
+        protected final TestLog log;
+
+        public TestThread(String name, ICUService service, long delay, TestLog log) {
+            //this.name = name + " ";
+            this.service = service;
+            this.delay = delay;
+            this.log = new DelegatingLog(log);
+            this.setDaemon(true);
+        }
+
+        public void run() {
+            while (WAIT) {
+                Thread.yield();
+            }
+
+            try {
+                while (GO) {
+                    iterate();
+                    if (delay > 0) {
+                        Thread.sleep(delay);
+                    }
+                }
+            }
+            catch (InterruptedException e) {
+            }
+        }
+
+        protected void iterate() {
+        }
+
+        /*
+          public boolean logging() {
+          return log != null;
+          }
+
+          public void log(String msg) {
+          if (logging()) {
+          log.log(name + msg);
+          }
+          }
+
+          public void logln(String msg) {
+          if (logging()) {
+          log.logln(name + msg);
+          }
+          }
+
+          public void err(String msg) {
+          if (logging()) {
+          log.err(name + msg);
+          }
+          }
+
+          public void errln(String msg) {
+          if (logging()) {
+          log.errln(name + msg);
+          }
+          }
+
+          public void warn(String msg) {
+          if (logging()) {
+          log.info(name + msg);
+          }
+          }
+
+          public void warnln(String msg) {
+          if (logging()) {
+          log.infoln(name + msg);
+          }
+          }
+        */
+    }
+
+    static class RegisterFactoryThread extends TestThread {
+        RegisterFactoryThread(String name, ICUService service, long delay, TestLog log) {
+            super("REG " + name, service, delay, log);
+        }
+
+        protected void iterate() {
+            Factory f = new TestFactory(getCLV());
+            service.registerFactory(f);
+            log.logln(f.toString());
+        }
+    }
+
+    static class UnregisterFactoryThread extends TestThread {
+        private Random r;
+        List factories;
+
+        UnregisterFactoryThread(String name, ICUService service, long delay, TestLog log) {
+            super("UNREG " + name, service, delay, log);
+        
+            r = new Random();
+            factories = service.factories();
+        }
+
+        public void iterate() {
+            int s = factories.size();
+            if (s == 0) {
+                factories = service.factories();
+            } else {
+                int n = r.nextInt(s);
+                Factory f = (Factory)factories.remove(n);
+                boolean success = service.unregisterFactory(f);
+                log.logln("factory: " + f + (success ? " succeeded." : " *** failed."));
+            }
+        }
+    }
+
+    static class UnregisterFactoryListThread extends TestThread {
+        Factory[] factories;
+        int n;
+
+        UnregisterFactoryListThread(String name, ICUService service, long delay, Factory[] factories, TestLog log) {
+            super("UNREG " + name, service, delay, log);
+        
+            this.factories = factories;
+        }
+
+        public void iterate() {
+            if (n < factories.length) {
+                Factory f = factories[n++];
+                boolean success = service.unregisterFactory(f);
+                log.logln("factory: " + f + (success ? " succeeded." : " *** failed."));
+            }
+        }
+    }
+
+
+    static class GetVisibleThread extends TestThread {
+        GetVisibleThread(String name, ICUService service, long delay, TestLog log) {
+            super("VIS " + name, service, delay, log);
+        }
+
+        protected void iterate() {
+            Set ids = service.getVisibleIDs();
+            Iterator iter = ids.iterator();
+            int n = 10;
+            while (--n >= 0 && iter.hasNext()) {
+                String id = (String)iter.next();
+                Object result = service.get(id);
+                log.logln("iter: " + n + " id: " + id + " result: " + result);
+            }
+        }
+    }
+
+    static class GetDisplayThread extends TestThread {
+        ULocale locale;
+
+        GetDisplayThread(String name, ICUService service, long delay, ULocale locale, TestLog log) {
+            super("DIS " + name, service, delay, log);
+
+            this.locale = locale;
+        }
+
+        protected void iterate() {
+            Map names = getDisplayNames(service,locale);
+            Iterator iter = names.entrySet().iterator();
+            int n = 10;
+            while (--n >= 0 && iter.hasNext()) {
+                Entry e = (Entry)iter.next();
+                String dname = (String)e.getKey();
+                String id = (String)e.getValue();
+                Object result = service.get(id);
+
+                // Note: IllegalMonitorStateException is thrown by the code
+                // below on IBM JRE5 for AIX 64bit.  For some reason, converting
+                // int to String out of this statement resolves the issue.
+
+                //log.logln(" iter: " + n + 
+                String num = Integer.toString(n);
+                log.logln(" iter: " + num + 
+                          " dname: " + dname + 
+                          " id: " + id + 
+                          " result: " + result);
+            }
+        }
+    }
+
+    static class GetThread extends TestThread {
+        private String[] actualID;
+
+        GetThread(String name, ICUService service, long delay, TestLog log) {
+            super("GET " + name, service, delay, log);
+
+            actualID = new String[1];
+        }
+
+        protected void iterate() {
+            String id = getCLV();
+            Object o = service.get(id, actualID);
+            if (o != null) {
+                log.logln(" id: " + id + " actual: " + actualID[0] + " result: " + o);
+            }
+        }
+    }
+
+    static class GetListThread extends TestThread {
+        private final String[] list;
+        private int n;
+
+        GetListThread(String name, ICUService service, long delay, String[] list, TestLog log) {
+            super("GETL " + name, service, delay, log);
+
+            this.list = list;
+        }
+
+        protected void iterate() {
+            if (--n < 0) {
+                n = list.length - 1;
+            }
+            String id = list[n];
+            Object o = service.get(id);
+            log.logln(" id: " + id + " result: " + o);
+        }
+    }
+
+    // return a collection of unique factories, might be fewer than requested
+    Collection getFactoryCollection(int requested) {
+        Set locales = new HashSet();
+        for (int i = 0; i < requested; ++i) {
+            locales.add(getCLV());
+        }
+        List factories = new ArrayList(locales.size());
+        Iterator iter = locales.iterator();
+        while (iter.hasNext()) {
+            factories.add(new TestFactory((String)iter.next()));
+        }
+        return factories;
+    }
+
+    void registerFactories(ICUService service, Collection c) {
+        Iterator iter = c.iterator();
+        while (iter.hasNext()) {
+            service.registerFactory((Factory)iter.next());
+        }
+    }
+
+    ICUService stableService() {
+        if (stableService == null) {
+            stableService = new ICULocaleService();
+            registerFactories(stableService, getFactoryCollection(50));
+        }
+        return stableService;
+    }
+    private ICUService stableService;
+
+    // run multiple get on a stable service
+    public void Test00_ConcurrentGet() {
+        for(int i = 0; i < 10; ++i) {
+            new GetThread("[" + Integer.toString(i) + "]",  stableService(), 0, this).start();
+        }
+        runThreads();
+        if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run multiple getVisibleID on a stable service
+    public void Test01_ConcurrentGetVisible() {
+        for(int i = 0; i < 10; ++i) {
+            new GetVisibleThread("[" + Integer.toString(i) + "]",  stableService(), 0, this).start();
+        }
+        runThreads();
+        if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run multiple getDisplayName on a stable service
+    public void Test02_ConcurrentGetDisplay() {
+        String[] localeNames = {
+            "en", "es", "de", "fr", "zh", "it", "no", "sv"
+        };
+        for(int i = 0; i < localeNames.length; ++i) {
+            String locale = localeNames[i];
+            new GetDisplayThread("[" + locale + "]",  
+                                 stableService(), 
+                                 0,
+                                 new ULocale(locale),
+                                 this).start();
+        }
+        runThreads();
+        if (PRINTSTATS) System.out.println(stableService.stats());
+    }
+
+    // run register/unregister on a service
+    public void Test03_ConcurrentRegUnreg() {
+        ICUService service = new ICULocaleService();
+        for (int i = 0; i < 5; ++i) {
+            new RegisterFactoryThread("[" + i + "]", service, 0, this).start();
+        }
+        for (int i = 0; i < 5; ++i) {
+            new UnregisterFactoryThread("[" + i + "]", service, 0, this).start();
+        }
+        runThreads();
+        if (PRINTSTATS) System.out.println(service.stats());
+    }
+    
+    public void Test04_WitheringService() {
+        ICUService service = new ICULocaleService();
+
+        Collection fc = getFactoryCollection(50);
+        registerFactories(service, fc);
+
+        Factory[] factories = (Factory[])fc.toArray(new Factory[fc.size()]);
+        Comparator comp = new Comparator() {
+                public int compare(Object lhs, Object rhs) {
+                    return lhs.toString().compareTo(rhs.toString());
+                }
+            };
+        Arrays.sort(factories, comp);
+
+        new GetThread("", service, 0, this).start();
+        new UnregisterFactoryListThread("", service, 3, factories, this).start();
+
+        runThreads(2000);
+        if (PRINTSTATS) System.out.println(service.stats());
+    }
+    
+    // "all hell breaks loose"
+    // one register and one unregister thread, delay 500ms
+    // two display threads with different locales, delay 500ms;
+    // one visible id thread, delay 50ms
+    // fifteen get threads, delay 0
+    // run for ten seconds
+    public void Test05_ConcurrentEverything() {
+        ICUService service = new ICULocaleService();
+
+        new RegisterFactoryThread("", service, 500, this).start();
+
+        for(int i = 0; i < 15; ++i) {
+            new GetThread("[" + Integer.toString(i) + "]", service, 0, this).start();
+        }
+
+        new GetVisibleThread("",  service, 50, this).start();
+
+        String[] localeNames = {
+            "en", "de"
+        };
+        for(int i = 0; i < localeNames.length; ++i) {
+            String locale = localeNames[i];
+            new GetDisplayThread("[" + locale + "]",  
+                                 stableService(), 
+                                 500,
+                                 new ULocale(locale),
+                                 this).start();
+        }
+
+        new UnregisterFactoryThread("", service, 500, this).start();
+
+        // yoweee!!!
+        runThreads(10000);
+        if (PRINTSTATS) System.out.println(service.stats());
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java b/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
new file mode 100644
index 0000000..733fe5c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
@@ -0,0 +1,237 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/*
+ * New added, 2005-5-10 [Terry/SGL]
+ * Major modification by Ram
+ */
+
+package com.ibm.icu.dev.test.util;
+
+import java.util.HashMap;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+public class LocaleAliasTest extends com.ibm.icu.dev.test.TestFmwk {
+    private static final ULocale[][] _LOCALES = {
+
+            {new ULocale("en", "RH"), new ULocale("en", "ZW")},
+            {new ULocale("in"), new ULocale("id")},
+            {new ULocale("in", "ID"), new ULocale("id", "ID")},
+            {new ULocale("iw"), new ULocale("he")},
+            {new ULocale("iw", "IL"), new ULocale("he", "IL")},
+            {new ULocale("ji"), new ULocale("yi")},
+            
+            {new ULocale("en", "BU"), new ULocale("en", "MM")},
+            {new ULocale("en", "DY"), new ULocale("en", "BJ")},
+            {new ULocale("en", "HV"), new ULocale("en", "BF")},
+            {new ULocale("en", "NH"), new ULocale("en", "VU")},
+            {new ULocale("en", "TP"), new ULocale("en", "TL")},
+            {new ULocale("en", "ZR"), new ULocale("en", "CD")}
+    };
+    
+    private static final int _LOCALE_NUMBER = _LOCALES.length;
+    private static ULocale[] available = null;
+    private HashMap availableMap = new HashMap();
+    private static final ULocale _DEFAULT_LOCALE = ULocale.US;
+    
+    public LocaleAliasTest(){
+    }
+    protected void init(){
+        available = ULocale.getAvailableLocales();
+        for(int i=0; i<available.length;i++){
+            availableMap.put(available[i].toString(),"");
+        }
+    }
+    public static void main(String[] args) {
+        new LocaleAliasTest().run(args);
+    }
+    public void TestCalendar() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            Calendar c1 = Calendar.getInstance(oldLoc);
+            Calendar c2 = Calendar.getInstance(newLoc);
+            c1.setTime(c2.getTime());
+            //Test function "getFirstDayOfWeek"
+    //        int firstDayOfWeek1 = c1.getFirstDayOfWeek();
+    //        int firstDayOfWeek2 = c2.getFirstDayOfWeek();
+    //        if (firstDayOfWeek1 != firstDayOfWeek2) {
+    //            this.logln("Calendar(getFirstDayOfWeek) old:"
+    //                    +firstDayOfWeek1+"   new:"+firstDayOfWeek2);
+    //            pass = false;
+    //        }
+                    
+            //Test function "getLocale(ULocale.VALID_LOCALE)"
+            ULocale l1 = c1.getLocale(ULocale.VALID_LOCALE);
+            ULocale l2 = c2.getLocale(ULocale.VALID_LOCALE);
+            if (!newLoc.equals(l1)) {
+                errln("CalendarTest: newLoc!=l1: newLoc= "+newLoc +" l1= "+l1);
+            }
+            if (!l1.equals(l2)) {
+                errln("CalendarTest: l1!=l2: l1= "+l1 +" l2= "+l2);
+            }
+            if(!c1.equals(c2)){
+                errln("CalendarTest: c1!=c2.  newLoc= "+newLoc +" oldLoc= "+oldLoc);
+            }
+            logln("Calendar(getLocale) old:"+l1+"   new:"+l2);    
+        }
+        ULocale.setDefault(defLoc);
+    }
+    
+    public void  TestDateFormat() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            DateFormat df1 = DateFormat.getDateInstance(DateFormat.FULL, oldLoc);
+            DateFormat df2 = DateFormat.getDateInstance(DateFormat.FULL, newLoc);
+            
+            //Test function "getLocale"
+            ULocale l1 = df1.getLocale(ULocale.VALID_LOCALE);
+            ULocale l2 = df2.getLocale(ULocale.VALID_LOCALE);
+            if (!newLoc.equals(l1)) {
+                errln("DateFormatTest: newLoc!=l1: newLoc= "+newLoc +" l1= "+l1);
+            }
+            if (!l1.equals(l2)) {
+                errln("DateFormatTest: l1!=l2: l1= "+l1 +" l2= "+l2);
+            }
+            if (!df1.equals(df2)) {
+                errln("DateFormatTest: df1!=df2: newLoc= "+newLoc +" oldLoc= "+oldLoc);
+            }
+            this.logln("DateFormat(getLocale) old:"+l1+"   new:"+l2);
+            
+            //Test function "format"
+    //        Date d = new Date();
+    //        String d1 = df1.format(d);
+    //        String d2 = df2.format(d);
+    //        if (!d1.equals(d2)) {
+    //            pass = false;
+    //        }
+    //        this.logln("DateFormat(format) old:"+d1+"   new:"+d2);
+        }
+        ULocale.setDefault(defLoc);
+    }
+    
+    public void TestCollation() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            Collator c1 = Collator.getInstance(oldLoc);
+            Collator c2 = Collator.getInstance(newLoc);
+            
+            if (!c1.equals(c2)) {
+                errln("CollationTest: c1!=c2: newLoc= "+newLoc +" oldLoc= "+oldLoc);
+            }
+ 
+            logln("Collation old:"+oldLoc+"   new:"+newLoc);
+        }
+        ULocale.setDefault(defLoc);
+    }
+    
+    public void TestULocale() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            ULocale ul1 = new ULocale(oldLoc.toString());
+            ULocale ul2 = new ULocale(newLoc.toString());
+            
+            String name1 = ul1.getDisplayName();
+            String name2 = ul2.getDisplayName();
+            if (!name1.equals(name2)) {
+                errln("name1!=name2. name1 = " + name1 +" name2 = " +name2);
+            }
+            logln("ULocale(getDisplayName) old:"+name1+"   new:"+name2);
+        }
+        ULocale.setDefault(defLoc);
+    }
+    
+    public void TestDisplayName() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+
+            for(int j=0; j<available.length; j++){
+               String oldCountry = oldLoc.getDisplayCountry(available[j]);
+               String newCountry = newLoc.getDisplayCountry(available[j]);
+               String oldLang = oldLoc.getDisplayLanguage(available[j]);
+               String newLang = newLoc.getDisplayLanguage(available[j]);
+               
+               // is  there  display name for the current country ID               
+               if(!newCountry.equals(newLoc.getCountry())){
+                   if(!oldCountry.equals(newCountry)){
+                       errln("getCountry() failed for "+ oldLoc +" oldCountry= "+ prettify(oldCountry) +" newCountry = "+prettify(newCountry)+ " in display locale "+ available[j].toString());
+                   }
+               }
+               //there is a display name for the current lang ID               
+               if(!newLang.equals(newLoc.getLanguage())){
+                   if(!oldLang.equals(newLang)){
+                       errln("getLanguage() failed for " + oldLoc + " oldLang = "+ prettify(oldLang) +" newLang = "+prettify(newLang)+ " in display locale "+ available[j].toString());
+                   }
+               }
+            }
+        }
+        ULocale.setDefault(defLoc);
+    }
+    public void TestUResourceBundle() {
+        ULocale defLoc = ULocale.getDefault();
+        ULocale.setDefault(_DEFAULT_LOCALE);
+        for (int i=0; i<_LOCALE_NUMBER; i++) {
+            if(availableMap.get(_LOCALES[i][1])==null){
+                logln(_LOCALES[i][1]+" is not available. Skipping!");
+                continue;
+            }
+            ULocale oldLoc = _LOCALES[i][0];
+            ULocale newLoc = _LOCALES[i][1];
+            UResourceBundle urb1 = null;
+            UResourceBundle urb2 = null;
+            
+            urb1 = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, oldLoc);
+            urb2 = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, newLoc);
+            ULocale l1 = urb1.getULocale();
+            ULocale l2 = urb2.getULocale();        
+            if (!newLoc.equals(l1)) {
+                errln("ResourceBundleTest: newLoc!=l1: newLoc= "+newLoc +" l1= "+l1);
+            }
+            if (!l1.equals(l2)) {
+                errln("ResourceBundleTest: l1!=l2: l1= "+l1 +" l2= "+l2);
+            }
+            this.logln("UResourceBundle old:"+l1+"   new:"+l2);
+        }
+        ULocale.setDefault(defLoc);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/LocaleDataTest.java b/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
new file mode 100644
index 0000000..48512b1
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
@@ -0,0 +1,284 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.LocaleData;
+import com.ibm.icu.util.ULocale;
+import java.util.HashSet;
+import java.util.Arrays;
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class LocaleDataTest extends TestFmwk{
+
+    public static void main(String[] args) throws Exception{
+        new LocaleDataTest().run(args);
+    }
+    
+    private ULocale[] availableLocales = null;
+    
+    public LocaleDataTest(){
+    }
+    protected void init(){
+        availableLocales = ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+    public void TestPaperSize(){
+        for(int i = 0; i < availableLocales.length; i++){
+            ULocale locale = availableLocales[i];
+            LocaleData.PaperSize paperSize = LocaleData.getPaperSize(locale);
+            // skip testing of "in" .. deprecated code for Indonesian
+            String lang = locale.getLanguage();
+            if(lang.equals("in")){
+                continue;
+            }
+            if(locale.toString().indexOf("_US") >= 0 || locale.toString().indexOf("_CA") >= 0 ){
+                if(paperSize.getHeight()!= 279 || paperSize.getWidth() != 216 ){
+                    errln("PaperSize did not return the expected value for locale "+ locale+
+                          " Expected height: 279 width: 216."+
+                          " Got height: "+paperSize.getHeight()+" width: "+paperSize.getWidth()
+                           );
+                }else{
+                    logln("PaperSize returned the expected values for locale " + locale);
+                }
+            }else{
+                if(paperSize.getHeight()!= 297 || paperSize.getWidth() != 210 ){
+                    errln("PaperSize did not return the expected value for locale "+ locale +
+                          " Expected height: 297 width: 210."+
+                          " Got height: "+paperSize.getHeight() +" width: "+paperSize.getWidth() 
+                           );
+                }else{
+                    logln("PaperSize returned the expected values for locale " + locale);
+                }
+            }
+        }
+    }
+    public void TestMeasurementSystem(){
+        for(int i=0; i<availableLocales.length; i++){
+            ULocale locale = availableLocales[i];
+            LocaleData.MeasurementSystem ms = LocaleData.getMeasurementSystem(locale);
+            // skip testing of "in" .. deprecated code for Indonesian
+            String lang = locale.getLanguage();
+            if(lang.equals("in")){
+                continue;
+            }           
+            if(locale.toString().indexOf("_US") >= 0){
+                if(ms == LocaleData.MeasurementSystem.US){
+                    logln("Got the expected measurement system for locale: " + locale);
+                }else{
+                    errln("Did not get the expected measurement system for locale: "+ locale);
+                }
+            }else{
+                if(ms == LocaleData.MeasurementSystem.SI){
+                    logln("Got the expected measurement system for locale: " + locale);
+                }else{
+                    errln("Did not get the expected measurement system for locale: "+ locale);
+                } 
+            }
+        }
+    }
+    
+    // Bundle together a UnicodeSet (of expemplars) and ScriptCode combination.
+    //   We keep a set of combinations that have already been tested, to
+    //   avoid repeated (time consuming) retesting of the same data.
+    //   Instances of this class must be well behaved as members of a set.
+    static class ExemplarGroup {
+        private int[] scs;
+        private UnicodeSet set;
+        
+        ExemplarGroup(UnicodeSet s, int[] scriptCodes) {
+            set = s;
+            scs = scriptCodes;
+        }
+        public int hashCode() {
+            int hash = 0;
+            for (int i=0; i<scs.length && i<4; i++) {
+                hash = (hash<<8)+scs[i];
+            }
+            return hash;
+        }        
+        public boolean equals(Object other) {
+            ExemplarGroup o = (ExemplarGroup)other;
+            boolean r = Arrays.equals(scs, o.scs) &&
+                         set.equals(o.set);
+            return r;
+        }
+    }
+    
+    public void TestExemplarSet(){
+        HashSet  testedExemplars = new HashSet();
+        int equalCount = 0;
+        for(int i=0; i<availableLocales.length; i++){
+            ULocale locale = availableLocales[i];
+            int[] scriptCodes = UScript.getCode(locale);
+            if (scriptCodes==null) {
+                // I hate the JDK's solution for deprecated language codes.
+                // Why does the Locale constructor change the string I passed to it ?
+                // such a broken hack !!!!!
+                // so in effect I can never test the script code for Indonesian :(
+                if(locale.toString().indexOf(("in"))<0){
+                    errln("UScript.getCode returned null for locale: " + locale); 
+                }
+                continue;
+            }
+            UnicodeSet exemplarSets[] = new UnicodeSet[2];
+            for (int k=0; k<2; ++k) {   // for casing option in (normal, caseInsensitive)
+                int option = (k==0) ? 0 : UnicodeSet.CASE;
+                UnicodeSet exemplarSet = LocaleData.getExemplarSet(locale, option);
+                exemplarSets[k] = exemplarSet;
+                ExemplarGroup exGrp = new ExemplarGroup(exemplarSet, scriptCodes);
+                if (!testedExemplars.contains(exGrp)) {
+                    testedExemplars.add(exGrp);
+                    UnicodeSet[] sets = new UnicodeSet[scriptCodes.length];
+                    // create the UnicodeSets for the script
+                    for(int j=0; j < scriptCodes.length; j++){
+                        sets[j] = new UnicodeSet("[:" + UScript.getShortName(scriptCodes[j]) + ":]");
+                    }
+                    boolean existsInScript = false;
+                    UnicodeSetIterator iter = new UnicodeSetIterator(exemplarSet);
+                    // iterate over the 
+                    while (!existsInScript && iter.nextRange()) {
+                        if (iter.codepoint != UnicodeSetIterator.IS_STRING) {
+                            for(int j=0; j<sets.length; j++){
+                                if(sets[j].contains(iter.codepoint, iter.codepointEnd)){
+                                    existsInScript = true;
+                                    break;
+                                }
+                            }
+                        } else {
+                            for(int j=0; j<sets.length; j++){
+                                if(sets[j].contains(iter.string)){
+                                    existsInScript = true;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                    if(existsInScript == false){
+                        errln("ExemplarSet containment failed for locale : "+ locale);
+                    }
+                }
+            }
+            // This is expensive, so only do it if it will be visible
+            if (isVerbose()) {
+                logln(locale.toString() + " exemplar " + exemplarSets[0]);
+                logln(locale.toString() + " exemplar(case-folded) " + exemplarSets[1]);
+            }
+            assertTrue(locale.toString() + " case-folded is a superset",
+                    exemplarSets[1].containsAll(exemplarSets[0]));
+            if (exemplarSets[1].equals(exemplarSets[0])) {
+                ++equalCount;
+            }
+        }
+        // Note: The case-folded set should sometimes be a strict superset
+        // and sometimes be equal.
+        assertTrue("case-folded is sometimes a strict superset, and sometimes equal",
+                   equalCount > 0 && equalCount < availableLocales.length);
+    }
+    public void TestExemplarSet2(){
+        int equalCount = 0;
+        HashSet  testedExemplars = new HashSet();
+        for(int i=0; i<availableLocales.length; i++){
+            ULocale locale = availableLocales[i];
+            LocaleData ld = LocaleData.getInstance(locale);
+            int[] scriptCodes = UScript.getCode(locale);
+            if (scriptCodes==null) {
+                if(locale.toString().indexOf(("in"))<0){
+                    errln("UScript.getCode returned null for locale: "+ locale); 
+                }
+                continue;
+            }
+            UnicodeSet exemplarSets[] = new UnicodeSet[4];
+
+            for (int k=0; k<2; ++k) {  // for casing option in (normal, uncased)
+                int option = (k==0) ? 0 : UnicodeSet.CASE;
+                for(int h=0; h<2; ++h){  
+                    int type = (h==0) ? LocaleData.ES_STANDARD : LocaleData.ES_AUXILIARY;
+
+                    UnicodeSet exemplarSet = ld.getExemplarSet(option, type);
+                    exemplarSets[k*2+h] = exemplarSet;
+
+                    ExemplarGroup exGrp = new ExemplarGroup(exemplarSet, scriptCodes);
+                    if (!testedExemplars.contains(exGrp)) {
+                        testedExemplars.add(exGrp);
+                        UnicodeSet[] sets = new UnicodeSet[scriptCodes.length];
+                        // create the UnicodeSets for the script
+                        for(int j=0; j < scriptCodes.length; j++){
+                            sets[j] = new UnicodeSet("[:" + UScript.getShortName(scriptCodes[j]) + ":]");
+                        }
+                        boolean existsInScript = false;
+                        UnicodeSetIterator iter = new UnicodeSetIterator(exemplarSet);
+                        // iterate over the 
+                        while (!existsInScript && iter.nextRange()) {
+                            if (iter.codepoint != UnicodeSetIterator.IS_STRING) {
+                                for(int j=0; j<sets.length; j++){
+                                    if(sets[j].contains(iter.codepoint, iter.codepointEnd)){
+                                        existsInScript = true;
+                                        break;
+                                    }
+                                }
+                            } else {
+                                for(int j=0; j<sets.length; j++){
+                                    if(sets[j].contains(iter.string)){
+                                        existsInScript = true;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                        // TODO: How to verify LocaleData.ES_AUXILIARY ???
+                        if(existsInScript == false && h == 0){
+                            errln("ExemplarSet containment failed for locale,option,type : "+ locale + ", " + option + ", " + type);
+                        }
+                    }
+                }
+            }
+            // This is expensive, so only do it if it will be visible
+            if (isVerbose()) {
+                logln(locale.toString() + " exemplar(ES_STANDARD)" + exemplarSets[0]);
+                logln(locale.toString() + " exemplar(ES_AUXILIARY) " + exemplarSets[1]);
+                logln(locale.toString() + " exemplar(case-folded,ES_STANDARD) " + exemplarSets[2]);
+                logln(locale.toString() + " exemplar(case-folded,ES_AUXILIARY) " + exemplarSets[3]);
+            }
+            assertTrue(locale.toString() + " case-folded is a superset",
+                    exemplarSets[2].containsAll(exemplarSets[0]));
+            assertTrue(locale.toString() + " case-folded is a superset",
+                    exemplarSets[3].containsAll(exemplarSets[1]));
+            if (exemplarSets[2].equals(exemplarSets[0])) {
+                ++equalCount;
+            }
+            if (exemplarSets[3].equals(exemplarSets[1])) {
+                ++equalCount;
+            }
+        }
+        // Note: The case-folded set should sometimes be a strict superset
+        // and sometimes be equal.
+        assertTrue("case-folded is sometimes a strict superset, and sometimes equal",
+                equalCount > 0 && equalCount < availableLocales.length * 2);
+    }
+    public void TestCoverage(){
+        LocaleData ld = LocaleData.getInstance();
+        boolean t = ld.getNoSubstitute();
+        ld.setNoSubstitute(t);
+        assertEquals("LocaleData get/set NoSubstitute",
+                t,
+                ld.getNoSubstitute());
+    
+        logln(ld.getDelimiter(LocaleData.QUOTATION_START));
+        logln(ld.getDelimiter(LocaleData.QUOTATION_END));
+        logln(ld.getDelimiter(LocaleData.ALT_QUOTATION_START));
+        logln(ld.getDelimiter(LocaleData.ALT_QUOTATION_END));
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/Lockable.java b/src/com/ibm/icu/dev/test/util/Lockable.java
new file mode 100644
index 0000000..65eab64
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Lockable.java
@@ -0,0 +1,34 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+/**
+ * Provides a flexible mechanism for controlling access, without requiring that a class be immutable.
+ * Once locked, an object can never be unlocked, so it is thread-safe from that point onward.
+ * The implementation of both methods must be synchronized.
+ * Once the object has been locked, it must guarantee that no changes can be made to it.
+ * Any attempt to alter it must raise an UnsupportedOperationException exception.
+ * This means that when the object returns internal objects,
+ * or if anyone has references to those internal objects, that those internal objects must either be immutable,
+ * or must also raise exceptions if any attempt to modify them is made. Of course, the object can return clones
+ * of internal objects, since those are safe. * @author davis
+ */
+public interface Lockable extends Cloneable {
+    /**
+     * Determines whether the object has been locked or not.
+     */
+    public boolean isLocked();
+    /**
+     * Locks the object.
+     * @return the object itself.
+     */
+    public Object lock();
+    /**
+     * Provides for the clone operation. Any clone is initially unlocked.
+     */
+    public Object clone();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/Pick.java b/src/com/ibm/icu/dev/test/util/Pick.java
new file mode 100644
index 0000000..594305e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Pick.java
@@ -0,0 +1,792 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+
+import java.util.ArrayList;
+import java.util.Random;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.HashSet;
+
+abstract public class Pick {
+    private static boolean DEBUG = false;
+    
+    // for using to get strings
+    
+    static class Target {
+        private Pick pick;
+        private Random random;
+        private Quoter quoter;
+        
+        public static Target make(Pick pick, Random random, Quoter quoter) {
+            Target result = new Target();
+            result.pick = pick;
+            result.random = random;
+            result.quoter = quoter;
+            return result;
+        }
+        public String next() {
+            quoter.clear();
+            pick.addTo(this);
+            return get();
+        }        
+        public String get() {
+            return quoter.toString();
+        }
+        private void copyState(Target other) {
+            random = other.random;
+        }
+        private void clear() {
+            quoter.clear();
+        }
+        /*private int length() {
+            return quoter.length();
+        }*/
+        private Target append(int codepoint) {
+            quoter.append(codepoint);
+            return this;
+        }
+        private Target append(String s) {
+            quoter.append(s);
+            return this;
+        }
+        // must return value between 0 (inc) and 1 (exc)
+        private double nextDouble() {
+            return random.nextDouble();
+        }
+    }
+
+    // for Building
+    
+    public Pick replace(String toReplace, Pick replacement) {
+       Replacer visitor = new Replacer(toReplace, replacement);
+       return visit(visitor);
+    }
+
+    public Pick name(String nameStr) {
+        name = nameStr;
+        return this;
+    }
+    
+    static public Pick.Sequence makeSequence() {
+        return new Sequence();
+    }
+    static public Pick.Alternation makeAlternation() {
+        return new Alternation();
+    }
+    /*
+    static public Pick.Sequence and(Object item) {
+        return new Sequence().and2(item);
+    }
+    static public Pick.Sequence and(Object[] items) {
+        return new Sequence().and2(items);
+    }
+    static public Pick.Alternation or(int itemWeight, Object item) {
+        return new Alternation().or2(itemWeight, item);
+    }
+    static public Pick.Alternation or(Object[] items) {
+        return new Alternation().or2(1, items);
+    }
+    static public Pick.Alternation or(int itemWeight, Object[] items) {
+        return new Alternation().or2(itemWeight, items);
+    }
+    static public Pick.Alternation or(int[] itemWeights, Object[] items) {
+        return new Alternation().or2(itemWeights, items);
+    }
+    
+    static public Pick maybe(int percent, Object item) {
+        return new Repeat(0, 1, new int[]{100-percent, percent}, item);
+        //return Pick.or(1.0-percent, NOTHING).or2(percent, item);
+    }
+    static public Pick repeat(int minCount, int maxCount, int itemWeights, Object item) {
+        return new Repeat(minCount, maxCount, itemWeights, item);
+    }
+    
+    static public Pick codePoint(String source) {
+        return new CodePoint(new UnicodeSet(source));
+    }
+    */
+    
+    static public Pick repeat(int minCount, int maxCount, int[] itemWeights, Pick item) {
+        return new Repeat(minCount, maxCount, itemWeights, item);
+    }
+    
+    static public Pick codePoint(UnicodeSet source) {
+        return new CodePoint(source);
+    }
+    static public Pick string(String source) {
+        return new Literal(source);
+    }
+    /*
+    static public Pick unquoted(String source) {
+        return new Literal(source);
+    }
+    static public Pick string(int minLength, int maxLength, Pick item) {
+        return new Morph(item, minLength, maxLength);
+    }
+    */
+    
+    public abstract String getInternal(int depth, Set alreadySeen);
+    // Internals
+   
+    protected String name;
+    
+    protected abstract void addTo(Target target);
+    protected abstract boolean match(String input, Position p);
+    
+    public static class Sequence extends ListPick {
+        public Sequence and2 (Pick item) {
+            addInternal(new Pick[] {item}); // we don't care about perf
+            return this; // for chaining
+        }
+        public Sequence and2 (Pick[] itemArray) {
+            addInternal(itemArray);
+            return this; // for chaining
+        }
+        protected void addTo(Target target) {
+            for (int i = 0; i < items.length; ++i) {
+                items[i].addTo(target);
+            }
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            result = indent(depth) + result + "SEQ(";
+            for (int i = 0; i < items.length; ++i) {
+                if (i != 0) result += ", ";
+                result += items[i].getInternal(depth+1, alreadySeen);
+            }
+            result += ")";
+            return result;
+        }
+        // keep private
+        private Sequence() {}
+        protected boolean match(String input, Position p) {
+            int originalIndex = p.index;
+            for (int i = 0; i < items.length; ++i) {
+                if (!items[i].match(input, p)) {
+                    p.index = originalIndex;
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+    
+    String checkName(String nameStr, Set alreadySeen) {
+        if (nameStr == null) return "";
+        if (alreadySeen.contains(nameStr)) return nameStr;
+        alreadySeen.add(nameStr);
+        return "{" + nameStr + "=}";
+    }
+
+    public static class Alternation extends ListPick {
+        private WeightedIndex weightedIndex = new WeightedIndex(0);
+           
+        public Alternation or2 (Pick[] newItems) {
+            return or2(1, newItems);
+        }
+        public Alternation or2 (int itemWeight, Pick item) {
+            return or2(itemWeight, new Pick[] {item}); // we don't care about perf
+        }
+        public Alternation or2 (int itemWeight, Pick[] newItems) {
+            int[] itemWeights = new int[newItems.length];
+            Arrays.fill(itemWeights,itemWeight);
+            return or2(itemWeights, newItems); // we don't care about perf
+        }
+        public Alternation or2 (int[] itemWeights, Pick[] newItems) {
+            if (newItems.length != itemWeights.length) {
+                throw new ArrayIndexOutOfBoundsException(
+                    "or lengths must be equal: " + newItems.length + " != " + itemWeights.length);
+            }
+           // int lastLen = this.items.length;
+            addInternal(newItems);
+            weightedIndex.add(itemWeights);
+            return this; // for chaining
+        }
+        protected void addTo(Target target) {
+            items[weightedIndex.toIndex(target.nextDouble())].addTo(target);
+        }    
+        
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            result = indent(depth) + result + "OR(";
+            for (int i = 0; i < items.length; ++i) {
+                if (i != 0) result += ", ";
+                result += items[i].getInternal(depth+1, alreadySeen) + "/" + weightedIndex.weights[i];
+            }
+            return result + ")";
+        }
+        // keep private
+        private Alternation() {}
+        // take first matching option
+        protected boolean match(String input, Position p) {
+            for (int i = 0; i < weightedIndex.weights.length; ++i) {
+                if (p.isFailure(this,i)) continue;
+                if (items[i].match(input, p)) return true;
+                p.setFailure(this, i);
+            }
+            return false;
+        }
+    }
+    
+    private static String indent(int depth) {
+        String result = "\r\n";
+        for (int i = 0; i < depth; ++i) {
+            result += " ";
+        }
+        return result;
+    }
+    
+    private static class Repeat extends ItemPick {
+        WeightedIndex weightedIndex;
+        int minCount = 0;
+            
+        private Repeat(int minCount, int maxCount, int[] itemWeights, Pick item) {
+            super(item);
+            weightedIndex = new WeightedIndex(minCount).add(maxCount-minCount+1, itemWeights);
+        }
+        /*private Repeat(int minCount, int maxCount, int itemWeight, Pick item) {
+            super(item);
+            weightedIndex = new WeightedIndex(minCount).add(maxCount-minCount+1, itemWeight);
+        }*/
+        /*
+        private Repeat(int minCount, int maxCount, Object item) {
+            this.item = convert(item);
+            weightedIndex = new WeightedIndex(minCount).add(maxCount-minCount+1, 1);
+        }
+        */
+        protected void addTo(Target target) {
+            //int count ;
+            for (int i = weightedIndex.toIndex(target.nextDouble()); i > 0; --i) {
+                item.addTo(target);
+            }
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            result = indent(depth) + result + "REPEAT(" + weightedIndex
+            + "; "+ item.getInternal(depth+1, alreadySeen) 
+            + ")";
+            return result;
+        }
+        
+        // match longest, e.g. up to just before a failure
+        protected boolean match(String input, Position p) {
+            //int bestMatch = p.index;
+            int count = 0;
+            for (int i = 0; i < weightedIndex.weights.length; ++i) {
+                if (p.isFailure(this,i)) break;
+                if (!item.match(input, p)) {
+                    p.setFailure(this,i);
+                    break;
+                } 
+                //bestMatch = p.index;
+                count++;               
+            }
+            if (count >= minCount) {
+                return true;
+            }
+            // TODO fix failure
+            return false;
+        }
+    }
+    
+    private static class CodePoint extends FinalPick {
+        private UnicodeSet source;
+        
+        private CodePoint(UnicodeSet source) {
+            this.source = source;
+        }
+        protected void addTo(Target target) {
+            target.append(source.charAt(pick(target.random,0,source.size()-1)));
+        }
+        protected boolean match(String s, Position p) {
+            int cp = UTF16.charAt(s, p.index);
+            if (source.contains(cp)) {
+                p.index += UTF16.getCharCount(cp);
+                return true;
+            }
+            p.setMax("codePoint");
+            return false;
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            return source.toString();
+        }
+    }
+
+    static class Morph extends ItemPick {
+        Morph(Pick item) {
+            super(item);
+        }
+    
+        private String lastValue = null;
+        private Target addBuffer = Target.make(this, null, new Quoter.RuleQuoter());
+        private StringBuffer mergeBuffer = new StringBuffer();
+    
+        private static final int COPY_NEW = 0, COPY_BOTH = 1, COPY_LAST = 3, SKIP = 4,
+                                 LEAST_SKIP = 4;
+        // give weights to the above. make sure we delete about the same as we insert
+        private static final WeightedIndex choice = new WeightedIndex(0)
+            .add(new int[] {10, 10, 100, 10});
+        
+        protected void addTo(Target target) {
+            // get contents into separate buffer
+            addBuffer.copyState(target);
+            addBuffer.clear();
+            item.addTo(addBuffer);
+            String newValue = addBuffer.get();
+            if (DEBUG) System.out.println("Old: " + lastValue + ", New:" + newValue);
+
+            // if not first one, merge with old
+            if (lastValue != null) {
+                mergeBuffer.setLength(0);
+                int lastIndex = 0;
+                int newIndex = 0;
+                // the new length is a random value between old and new.
+                int newLenLimit = (int) pick(target.random, lastValue.length(), newValue.length());
+                
+                while (mergeBuffer.length() < newLenLimit
+                  && newIndex < newValue.length()
+                  && lastIndex < lastValue.length()) {
+                    int c = choice.toIndex(target.nextDouble());
+                    if (c == COPY_NEW || c == COPY_BOTH || c == SKIP) {
+                        newIndex = getChar(newValue, newIndex, mergeBuffer, c < LEAST_SKIP);
+                        if (mergeBuffer.length() >= newLenLimit) break;
+                    }
+                    if (c == COPY_LAST || c == COPY_BOTH || c == SKIP) {
+                        lastIndex = getChar(lastValue, lastIndex, mergeBuffer, c < LEAST_SKIP);
+                    }
+                }
+                newValue = mergeBuffer.toString();
+            }
+            lastValue = newValue;
+            target.append(newValue);
+            if (DEBUG) System.out.println("Result: " + newValue);
+        }
+
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            return indent(depth) + result + "MORPH("
+                + item.getInternal(depth+1, alreadySeen)
+                + ")";
+        }
+
+        /* (non-Javadoc)
+         * @see Pick#match(java.lang.String, Pick.Position)
+         */
+        protected boolean match(String input, Position p) {
+            // TODO Auto-generated method stub
+            return false;
+        }
+    }
+    
+    /* Add character if we can
+     */
+    static int getChar(String newValue, int newIndex, StringBuffer mergeBuffer, boolean copy) {
+        if (newIndex >= newValue.length()) return newIndex;
+        int cp = UTF16.charAt(newValue,newIndex);
+        if (copy) UTF16.append(mergeBuffer, cp);
+        return newIndex + UTF16.getCharCount(cp);
+    }
+
+    /*   
+            // quoted add
+            appendQuoted(target, addBuffer.toString(), quoteBuffer);
+            // fix buffers
+            StringBuffer swapTemp = addBuffer;
+            addBuffer = source;
+            source = swapTemp;
+        }
+    }
+    */
+
+
+    static class Quote extends ItemPick {
+        Quote(Pick item) {
+            super(item);
+        }
+        protected void addTo(Target target) {
+            target.quoter.setQuoting(true);
+            item.addTo(target);
+            target.quoter.setQuoting(false);
+        }
+        
+        protected boolean match(String s, Position p) {
+            return false;
+        }
+
+        public String getInternal(int depth, Set alreadySeen) {
+            String result = checkName(name, alreadySeen);
+            if (result.startsWith("$")) return result;
+            return indent(depth) + result + "QUOTE(" + item.getInternal(depth+1, alreadySeen)
+                + ")";
+        }
+    }
+    
+    private static class Literal extends FinalPick {
+        public String toString() {
+            return name;     
+        }        
+        private Literal(String source) {  
+            this.name = source;
+        }
+        protected void addTo(Target target) {
+            target.append(name);
+        }
+        protected boolean match(String input, Position p) {
+            int len = name.length();
+            if (input.regionMatches(p.index, name, 0, len)) {
+                p.index += len;
+                return true;
+            }
+            p.setMax("literal");
+            return false;
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            return "'" + name + "'";
+        }
+    }
+    
+    public static class Position {
+        public ArrayList failures = new ArrayList();
+        public int index;
+        public int maxInt;
+        public String maxType;
+        public void setMax(String type) {
+            if (index >= maxInt) {
+                maxType = type;
+            }
+        }
+        public String toString() {
+            return "index; " + index
+                + ", maxInt:" + maxInt
+                + ", maxType: " + maxType;
+        }
+        /*private static final Object BAD = new Object();
+        private static final Object GOOD = new Object();*/
+        
+        public boolean isFailure(Pick pick, int item) {
+            ArrayList val = (ArrayList)failures.get(index);
+            if (val == null) return false;
+            Set set = (Set)val.get(item);
+            if (set == null) return false;
+            return !set.contains(pick);
+        }
+        public void setFailure(Pick pick, int item) {
+            ArrayList val = (ArrayList)failures.get(index);
+            if (val == null) {
+                val = new ArrayList();
+                failures.set(index, val);
+            }
+            Set set = (Set)val.get(item);
+            if (set == null) {
+                set = new HashSet();
+                val.set(item, set);
+            }
+            set.add(pick);
+        }
+    }
+    
+    /*
+    public static final Pick NOTHING = new Nothing();
+    
+
+    private static class Nothing extends FinalPick {
+        protected void addTo(Target target) {}
+        protected boolean match(String input, Position p) {
+            return true;
+        }
+        public String getInternal(int depth, Set alreadySeen) {
+            return indent(depth) + "\u00F8";
+        }
+    }
+    */
+    
+    // intermediates
+    
+    abstract static class Visitor {
+        Set already = new HashSet();
+        // Note: each visitor should return the Pick that will replace a (or a itself)
+        abstract Pick handle(Pick a);
+        boolean alreadyEntered(Pick item) {
+            boolean result = already.contains(item);
+            already.add(item);
+            return result;
+        }
+        void reset() {
+            already.clear();
+        }
+    }
+    
+    protected abstract Pick visit(Visitor visitor);
+    
+    static class Replacer extends Visitor {
+        String toReplace;
+        Pick replacement;
+        Replacer(String toReplace, Pick replacement) {
+            this.toReplace = toReplace;
+            this.replacement = replacement;
+        }
+        public Pick handle(Pick a) {
+            if (toReplace.equals(a.name)) {
+                a = replacement;
+            } 
+            return a;
+       }
+    }
+
+    abstract private static class FinalPick extends Pick {
+        public Pick visit(Visitor visitor) {
+            return visitor.handle(this);
+       }
+    }
+    
+    private abstract static class ItemPick extends Pick {
+       protected Pick item;
+       
+       ItemPick (Pick item) {
+           this.item = item;
+       }
+       
+       public Pick visit(Visitor visitor) {
+           Pick result = visitor.handle(this);
+           if (visitor.alreadyEntered(this)) return result;
+           if (item != null) item = item.visit(visitor);
+           return result;
+       }
+    }
+   
+    private abstract static class ListPick extends Pick {
+        protected Pick[] items = new Pick[0];
+        
+        Pick simplify() {
+            if (items.length > 1) return this;
+            if (items.length == 1) return items[0];
+            return null;
+        }
+        
+        int size() {
+            return items.length;
+        }
+
+        Pick getLast() {
+            return items[items.length-1];
+        }
+
+        void setLast(Pick newOne) {
+            items[items.length-1] = newOne;
+        }
+
+        protected void addInternal(Pick[] objs) {
+            int lastLen = items.length;
+            items = realloc(items, items.length + objs.length);
+            for (int i = 0; i < objs.length; ++i) {
+                items[lastLen + i] = objs[i];
+            }
+        }
+
+        public Pick visit(Visitor visitor) {
+            Pick result = visitor.handle(this);
+            if (visitor.alreadyEntered(this)) return result;
+            for (int i = 0; i < items.length; ++i) {
+                items[i] = items[i].visit(visitor);
+            }
+            return result;
+        }
+    }
+    
+    /**
+     * Simple class to distribute a number between 0 (inclusive) and 1 (exclusive) among
+     * a number of indices, where each index is weighted.
+     * Item weights may be zero, but cannot be negative.
+     * @author Davis
+     */
+    // As in other case, we use an array for runtime speed; don't care about buildspeed.
+    public static class WeightedIndex {
+        private int[] weights = new int[0];
+        private int minCount = 0;
+        private double total;
+        
+        public WeightedIndex(int minCount) {
+            this.minCount = minCount;
+        }
+        
+        public WeightedIndex add(int count, int itemWeights) {
+            if (count > 0) {
+                int[] newWeights = new int[count];
+                if (itemWeights < 1) itemWeights = 1;
+                Arrays.fill(newWeights, 0, count, itemWeights);
+                add(1, newWeights);
+            }
+            return this; // for chaining
+        }
+
+        public WeightedIndex add(int[] newWeights) {
+            return add(newWeights.length, newWeights);
+        }
+        
+        public WeightedIndex add(int maxCount, int[] newWeights) {
+            if (newWeights == null) newWeights = new int[]{1};
+            int oldLen = weights.length;
+            if (maxCount < newWeights.length) maxCount = newWeights.length;
+            weights = (int[]) realloc(weights, weights.length + maxCount);
+            System.arraycopy(newWeights, 0, weights, oldLen, newWeights.length);
+            int lastWeight = weights[oldLen + newWeights.length-1];
+            for (int i = oldLen + newWeights.length; i < maxCount; ++i) {
+                weights[i] = lastWeight;
+            }
+            total = 0;
+            for (int i = 0; i < weights.length; ++i) {
+                if (weights[i] < 0) {
+                    throw new RuntimeException("only positive weights: " + i);
+                } 
+                total += weights[i];
+            }
+            return this; // for chaining
+        }
+        
+        // TODO, make this more efficient
+        public int toIndex(double zeroToOne) {
+            double weight = zeroToOne*total;
+            int i;
+            for (i = 0; i < weights.length; ++i) {
+                weight -= weights[i];
+                if (weight <= 0) break;
+            }
+            return i + minCount;
+        }
+        public String toString() {
+            String result = "";
+            for (int i = 0; i < minCount; ++i) {
+                if (result.length() != 0) result += ",";
+                result += "0";
+            }
+            for (int i = 0; i < weights.length; ++i) {
+                if (result.length() != 0) result += ",";
+                result += weights[i];
+            }
+            return result;
+        }
+    }
+    /*
+    private static Pick convert(Object obj) {
+        if (obj instanceof Pick) return (Pick)obj;
+        return new Literal(obj.toString(), false);
+    }
+    */
+    // Useful statics
+    
+    static public int pick(Random random, int start, int end) {
+        return start + (int)(random.nextDouble() * (end + 1 - start));
+    }
+    
+    static public double pick(Random random, double start, double end) {
+        return start + (random.nextDouble() * (end + 1 - start));
+    }
+    
+    static public boolean pick(Random random, double percent) {
+        return random.nextDouble() <= percent;
+    }
+    
+    static public int pick(Random random, UnicodeSet s) {
+        return s.charAt(pick(random, 0,s.size()-1));
+    }
+    
+    static public String pick(Random random, String[] source) {
+        return source[pick(random, 0, source.length-1)];
+    }
+    
+    // these utilities really ought to be in Java
+    
+public static double[] realloc(double[] source, int newSize) {
+    double[] temp = new double[newSize];
+    if (newSize > source.length) newSize = source.length;
+    if (newSize != 0) System.arraycopy(source,0,temp,0,newSize);
+    return temp;
+}
+    
+public static int[] realloc(int[] source, int newSize) {
+    int[] temp = new int[newSize];
+    if (newSize > source.length) newSize = source.length;
+    if (newSize != 0) System.arraycopy(source,0,temp,0,newSize);
+    return temp;
+}
+    
+    public static Pick[] realloc(Pick[] source, int newSize) {
+        Pick[] temp = new Pick[newSize];
+        if (newSize > source.length) newSize = source.length;
+        if (newSize != 0) System.arraycopy(source,0,temp,0,newSize);
+        return temp;
+    }
+    
+    // test utilities
+    /*private static void append(StringBuffer target, String toAdd, StringBuffer quoteBuffer) {
+        Utility.appendToRule(target, (int)-1, true, false, quoteBuffer); // close previous quote
+        if (DEBUG) System.out.println("\"" + toAdd + "\"");
+        target.append(toAdd);
+    }
+
+    private static void appendQuoted(StringBuffer target, String toAdd, StringBuffer quoteBuffer) {
+        if (DEBUG) System.out.println("\"" + toAdd + "\"");
+        Utility.appendToRule(target, toAdd, false, false, quoteBuffer);
+    }*/
+
+    /*
+    public static abstract class MatchHandler {
+        public abstract void handleString(String source, int start, int limit);
+        public abstract void handleSequence(String source, int start, int limit);
+        public abstract void handleAlternation(String source, int start, int limit);
+            
+    }
+    */
+    /*
+    // redistributes random value
+    // values are still between 0 and 1, but with a different distribution
+    public interface Spread {
+        public double spread(double value);
+    }
+    
+    // give the weight for the high end.
+    // values are linearly scaled according to the weight.
+    static public class SimpleSpread implements Spread {
+        static final Spread FLAT = new SimpleSpread(1.0);
+        boolean flat = false;
+        double aa, bb, cc;
+        public SimpleSpread(double maxWeight) {   
+            if (maxWeight > 0.999 && maxWeight < 1.001) {
+                flat = true;
+            } else { 
+                double q = (maxWeight - 1.0);
+                aa = -1/q;
+                bb = 1/(q*q);
+                cc = (2.0+q)/q;
+           }                 
+        }
+        public double spread(double value) {
+            if (flat) return value;
+            value = aa + Math.sqrt(bb + cc*value);
+            if (value < 0.0) return 0.0;    // catch math gorp
+            if (value >= 1.0) return 1.0;
+            return value;
+        }
+    }
+    static public int pick(Spread spread, Random random, int start, int end) {
+        return start + (int)(spread.spread(random.nextDouble()) * (end + 1 - start));
+    }
+    
+   */
+    
+
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/PrettyPrinter.java b/src/com/ibm/icu/dev/test/util/PrettyPrinter.java
new file mode 100644
index 0000000..afb5963
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/PrettyPrinter.java
@@ -0,0 +1,259 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.util;
+
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.util.CollectionUtilities.MultiComparator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.ULocale;
+
+/** Provides more flexible formatting of UnicodeSet patterns.
+ */
+public class PrettyPrinter {
+    private static final UnicodeSet patternWhitespace = (UnicodeSet) new UnicodeSet("[[:Cn:][:Default_Ignorable_Code_Point:][:patternwhitespace:]]").freeze();
+    private static final UnicodeSet sortAtEnd = (UnicodeSet) new UnicodeSet("[[:Cn:][:Cs:][:Co:][:Ideographic:]]").freeze();
+    
+    private boolean first = true;
+    private StringBuffer target = new StringBuffer();
+    private int firstCodePoint = -2;
+    private int lastCodePoint = -2;
+    private boolean compressRanges = true;
+    private String lastString = "";
+    private UnicodeSet toQuote = new UnicodeSet(patternWhitespace);
+    private Transliterator quoter = null;
+    
+    private Comparator ordering;
+    private Comparator spaceComp = Collator.getInstance(ULocale.ROOT);
+    {
+        setOrdering(Collator.getInstance(ULocale.ROOT));
+        ((RuleBasedCollator)spaceComp).setStrength(RuleBasedCollator.PRIMARY);
+    }
+    
+    public Transliterator getQuoter() {
+        return quoter;
+    }
+
+    public PrettyPrinter setQuoter(Transliterator quoter) {
+        this.quoter = quoter;
+        return this; // for chaining
+    }
+
+    public boolean isCompressRanges() {
+        return compressRanges;
+    }
+    
+    /**
+     * @param compressRanges if you want abcde instead of a-e, make this false
+     * @return
+     */
+    public PrettyPrinter setCompressRanges(boolean compressRanges) {
+        this.compressRanges = compressRanges;
+        return this;
+    }
+    
+    public Comparator getOrdering() {
+        return ordering;
+    }
+    
+    /**
+     * @param ordering the resulting  ordering of the list of characters in the pattern
+     * @return
+     */
+    public PrettyPrinter setOrdering(Comparator ordering) {
+        this.ordering = new MultiComparator(new Comparator[] {ordering, new UTF16.StringComparator(true,false,0)});
+        return this;
+    }
+    
+    public Comparator getSpaceComparator() {
+        return spaceComp;
+    }
+    
+    /**
+     * @param spaceComp if the comparison returns non-zero, then a space will be inserted between characters
+     * @return this, for chaining
+     */
+    public PrettyPrinter setSpaceComparator(Comparator spaceComp) {
+        this.spaceComp = spaceComp;
+        return this;
+    }
+    
+    public UnicodeSet getToQuote() {
+        return toQuote;
+    }
+    
+    /**
+     * a UnicodeSet of extra characters to quote with \\uXXXX-style escaping (will automatically quote pattern whitespace)
+     * @param toQuote
+     */
+    public PrettyPrinter setToQuote(UnicodeSet toQuote) {
+        toQuote = (UnicodeSet)toQuote.clone();
+        toQuote.addAll(patternWhitespace);
+        this.toQuote = toQuote;
+        return this;
+    }
+        
+    /**
+     * Get the pattern for a particular set.
+     * @param uset
+     * @return formatted UnicodeSet
+     */
+    public String toPattern(UnicodeSet uset) {
+        first = true;
+        UnicodeSet putAtEnd = new UnicodeSet(uset).retainAll(sortAtEnd); // remove all the unassigned gorp for now
+        // make sure that comparison separates all strings, even canonically equivalent ones
+        Set orderedStrings = new TreeSet(ordering);
+        for (UnicodeSetIterator it = new UnicodeSetIterator(uset); it.nextRange();) {
+            if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+                orderedStrings.add(it.string);
+            } else {
+                for (int i = it.codepoint; i <= it.codepointEnd; ++i) {
+                    if (!putAtEnd.contains(i)) {
+                        orderedStrings.add(UTF16.valueOf(i));
+                    }
+                }
+            }
+        }
+        target.setLength(0);
+        target.append("[");
+        for (Iterator it = orderedStrings.iterator(); it.hasNext();) {
+            appendUnicodeSetItem((String) it.next());
+        }
+        for (UnicodeSetIterator it = new UnicodeSetIterator(putAtEnd); it.next();) { // add back the unassigned gorp
+            appendUnicodeSetItem(it.codepoint);
+        }
+        flushLast();
+        target.append("]");
+        String sresult = target.toString();
+        
+        // double check the results. This can be removed once we have more tests.
+//        try {
+//            UnicodeSet  doubleCheck = new UnicodeSet(sresult);
+//            if (!uset.equals(doubleCheck)) {
+//                throw new IllegalStateException("Failure to round-trip in pretty-print " + uset + " => " + sresult + "\r\n source-result: " + new UnicodeSet(uset).removeAll(doubleCheck) +  "\r\n result-source: " + new UnicodeSet(doubleCheck).removeAll(uset));
+//            }
+//        } catch (RuntimeException e) {
+//            throw (RuntimeException) new IllegalStateException("Failure to round-trip in pretty-print " + uset).initCause(e);
+//        }
+        return sresult;
+    }
+    
+    private PrettyPrinter appendUnicodeSetItem(String s) {
+        int cp;
+        if (UTF16.hasMoreCodePointsThan(s, 1)) {
+            flushLast();
+            addSpace(s);
+            target.append("{");
+            for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+                appendQuoted(cp = UTF16.charAt(s, i));
+            }
+            target.append("}");
+            lastString = s;
+        } else {
+            appendUnicodeSetItem(UTF16.charAt(s, 0));
+        }
+        return this;
+    }
+
+    private void appendUnicodeSetItem(int cp) {
+        if (!compressRanges)
+            flushLast();
+        if (cp == lastCodePoint + 1) {
+            lastCodePoint = cp; // continue range
+        } else { // start range
+            flushLast();
+            firstCodePoint = lastCodePoint = cp;
+        }
+    }
+    /**
+     * 
+     */
+    private void addSpace(String s) {
+        if (first) {
+            first = false;
+        } else if (spaceComp.compare(s, lastString) != 0) {
+            target.append(' ');
+        } else {
+            int cp = UTF16.charAt(s,0);
+            int type = UCharacter.getType(cp);
+            if (type == UCharacter.NON_SPACING_MARK || type == UCharacter.ENCLOSING_MARK) {
+                target.append(' ');
+            } else if (type == UCharacter.SURROGATE && cp >= UTF16.TRAIL_SURROGATE_MIN_VALUE) {
+                target.append(' '); // make sure we don't accidentally merge two surrogates
+            }
+        }
+    }
+    
+    private void flushLast() {
+        if (lastCodePoint >= 0) {
+            addSpace(UTF16.valueOf(firstCodePoint));
+            if (firstCodePoint != lastCodePoint) {
+                appendQuoted(firstCodePoint);
+                target.append(firstCodePoint + 1 == lastCodePoint ? ' ' : '-');
+            }
+            appendQuoted(lastCodePoint);
+            lastString = UTF16.valueOf(lastCodePoint);
+            firstCodePoint = lastCodePoint = -2;
+        }
+    }
+    PrettyPrinter appendQuoted(int codePoint) {
+        if (toQuote.contains(codePoint)) {
+            if (quoter != null) {
+                target.append(quoter.transliterate(UTF16.valueOf(codePoint)));
+                return this;
+            }
+            if (codePoint > 0xFFFF) {
+                target.append("\\U");
+                target.append(Utility.hex(codePoint,8));
+            } else {
+                target.append("\\u");
+                target.append(Utility.hex(codePoint,4));                    
+            }
+            return this;
+        }
+        switch (codePoint) {
+        case '[': // SET_OPEN:
+        case ']': // SET_CLOSE:
+        case '-': // HYPHEN:
+        case '^': // COMPLEMENT:
+        case '&': // INTERSECTION:
+        case '\\': //BACKSLASH:
+        case '{':
+        case '}':
+        case '$':
+        case ':':
+            target.append('\\');
+            break;
+        default:
+            // Escape whitespace
+            if (patternWhitespace.contains(codePoint)) {
+                target.append('\\');
+            }
+        break;
+        }
+        UTF16.append(target, codePoint);
+        return this;
+    }        
+//  Appender append(String s) {
+//  target.append(s);
+//  return this;
+//  }
+//  public String toString() {
+//  return target.toString();
+//  }
+}
diff --git a/src/com/ibm/icu/dev/test/util/Quoter.java b/src/com/ibm/icu/dev/test/util/Quoter.java
new file mode 100644
index 0000000..d8d6ab2
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Quoter.java
@@ -0,0 +1,65 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.Utility;
+
+public abstract class Quoter {
+    private static boolean DEBUG = false;
+    
+    protected boolean quoting = false;
+    protected StringBuffer output = new StringBuffer();
+    
+    public void setQuoting(boolean value) {
+        quoting = value;
+    }
+    public boolean isQuoting() {
+        return quoting;
+    }
+    public void clear() {
+        quoting = false;
+        output.setLength(0);
+    }
+    public int length() {
+        return output.length();
+    }
+    public Quoter append(String string) {
+        output.append(string);
+        return this;
+    }
+    public Quoter append(int codepoint) {
+        return append(UTF16.valueOf(codepoint));
+    }
+    // warning, allows access to internals
+    public String toString() {
+        setQuoting(false); // finish quoting
+        return output.toString();
+    }
+    /**
+     * Implements standard ICU rule quoting
+     */
+    public static class RuleQuoter extends Quoter {
+        private StringBuffer quoteBuffer = new StringBuffer();
+        public void setQuoting(boolean value) {
+            if (quoting == value) return;
+            if (quoting) { // stop quoting
+                Utility.appendToRule(output, (int)-1, true, false, quoteBuffer); // close previous quote
+            }
+            quoting = value;
+        }
+        public Quoter append(String s) {
+            if (DEBUG) System.out.println("\"" + s + "\"");
+            if (quoting) {
+                Utility.appendToRule(output, s, false, false, quoteBuffer);
+            } else {
+                output.append(s);
+            }
+            return this;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/Relation.java b/src/com/ibm/icu/dev/test/util/Relation.java
new file mode 100644
index 0000000..a52e8a9
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Relation.java
@@ -0,0 +1,122 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * A Relation is a set of mappings from keys to values.
+ * Unlike Map, there is not guaranteed to be a single value per key.
+ * The Map-like APIs return collections for values.
+ * @author medavis
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class Relation {
+    private Map m;
+    private CollectionFactory subcollection;
+
+    public Relation(Map mainMap, CollectionFactory subcollection) {
+        m = mainMap;
+        if (subcollection == null) subcollection = new CollectionMaker(null);
+        this.subcollection = subcollection;
+    }
+
+    public void clear() {
+        m.clear();
+    }
+    public boolean containsKey(Object key) {
+        return m.containsKey(key);
+    }
+    public boolean containsValue(Object value) {
+        return m.containsValue(value);
+    }
+    public Set entrySet() {
+        return m.entrySet();
+    }
+    public boolean equals(Object obj) {
+        return m.equals(obj);
+    }
+    public int hashCode() {
+        return m.hashCode();
+    }
+    public boolean isEmpty() {
+        return m.isEmpty();
+    }
+    public Object remove(Object key) {
+        return m.remove(key);
+    }
+    public int size() {
+        return m.size();
+    }
+    public String toString() {
+        return m.toString();
+    }
+    public Set keySet() {
+        return m.keySet();
+    }
+    /*
+    public void addAll(Relation t) {
+        for (Iterator it = t.keySet().iterator(); it.hasNext();) {
+            Object key = it.next();
+            add(key, t.get(key));
+        }
+    }
+    */
+    public Collection values() {
+        return m.values();
+    }
+    public Collection get(Object key, Collection output) {
+        output.addAll((Collection)m.get(key));
+        return output;
+    }
+    public void add(Object key, Object value) {
+        Collection o = (Collection) m.get(key);
+        if (o == null) m.put(key, o = subcollection.make());
+        o.add(value);
+    }
+    public Iterator iterator() {
+        return m.keySet().iterator();
+    }
+    public interface CollectionFactory {
+        Collection make();
+    }
+
+    /**
+     * This is just temporary, and may change!!
+     * @author medavis
+     *
+     * TODO To change the template for this generated type comment go to
+     * Window - Preferences - Java - Code Style - Code Templates
+     */
+    public static class CollectionMaker implements CollectionFactory {
+        public static final int HASH = 0, TREE = 1;
+        private Comparator comparator = null;
+        private int type = HASH;
+
+        public CollectionMaker(int type) {
+            this.type = type;
+        }
+        public CollectionMaker(Comparator comparator) {
+            this.comparator = comparator;
+        }
+        public Collection make() {
+            if (comparator != null) return new TreeSet(comparator);
+            else if (type == HASH) return new HashSet();
+            else return new TreeSet();
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/SortedBag.java b/src/com/ibm/icu/dev/test/util/SortedBag.java
new file mode 100644
index 0000000..170e714
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/SortedBag.java
@@ -0,0 +1,142 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+**********************************************************************
+*/package com.ibm.icu.dev.test.util;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * A collection that is like a sorted set, except that it allows
+ * multiple elements that compare as equal
+ * @author medavis
+ */
+// TODO replace use of Set with a collection that takes an Equator
+public class SortedBag implements Collection {
+    /**
+     * A map of sets, where each corresponds to one sorted element.
+     * The sets are never empty
+     */
+    private Map m;
+    private int size;
+
+    public SortedBag(Comparator c) {
+        m = new TreeMap(c);
+    }
+    public boolean add(Object s) {
+        Set o = (Set)m.get(s);
+        if (o == null) {
+            o = new HashSet(1);
+            m.put(s,o);
+        }
+        boolean result = o.add(s);
+        if (result) size++;
+        return result;
+    }
+    public Iterator iterator() {
+        return new MyIterator();
+    }
+    static Iterator EMPTY_ITERATOR = new HashSet().iterator();
+    private class MyIterator implements Iterator {
+        private Iterator mapIterator = m.keySet().iterator();
+        private Iterator setIterator = null;
+
+        private MyIterator() {
+            mapIterator = m.keySet().iterator();
+            setIterator = getSetIterator();
+        }
+        private Iterator getSetIterator() {
+            if (!mapIterator.hasNext()) return EMPTY_ITERATOR;
+            return ((Set)m.get(mapIterator.next())).iterator();
+        }
+        public boolean hasNext() {
+            return setIterator.hasNext() || mapIterator.hasNext();
+        }
+        public Object next() {
+            if (!setIterator.hasNext()) {
+                setIterator = getSetIterator();
+            }
+            return setIterator.next();
+        }
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+    }
+    /**
+     *
+     */
+    public void clear() {
+        m.clear();
+    }
+    public int size() {
+        return size;
+    }
+    public boolean isEmpty() {
+        return size == 0;
+    }
+    public boolean contains(Object o) {
+        Set set = (Set)m.get(o);
+        if (set == null) return false;
+        return set.contains(o);
+    }
+    public Object[] toArray() {
+        return toArray(new Object[size]);
+    }
+    public Object[] toArray(Object[] a) {
+        int count = 0;
+        for (Iterator it = iterator(); it.hasNext();) {
+            a[count++] = it.next();
+        }
+        return a;
+    }
+    /* (non-Javadoc)
+     * @see java.util.Collection#remove(java.lang.Object)
+     */
+    public boolean remove(Object o) {
+        Set set = (Set)m.get(o);
+        if (set == null) return false;
+        if (!set.remove(o)) return false;
+        if (set.size() == 0) m.remove(o);
+        size--;
+        return true;
+    }
+    public boolean containsAll(Collection c) {
+        for (Iterator it = c.iterator(); it.hasNext(); ) {
+            if (!contains(it.next())) return false;
+        }
+        return true;
+    }
+    public boolean addAll(Collection c) {
+        boolean result = false;
+        for (Iterator it = c.iterator(); it.hasNext(); ) {
+            if (add(it.next())) result = true;
+        }
+        return result;
+    }
+    public boolean removeAll(Collection c) {
+        boolean result = false;
+        for (Iterator it = c.iterator(); it.hasNext(); ) {
+            if (remove(it.next())) result = true;
+        }
+        return result;
+    }
+    public boolean retainAll(Collection c) {
+        // WARNING: this may not work if the comparator does not distinguish
+        // all items that are equals().
+        Set stuffToRemove = new HashSet(); // have to do this since iterator may not allow removal!
+        for (Iterator it = iterator(); it.hasNext(); ) {
+            Object item = it.next();
+            if (!c.contains(item)) stuffToRemove.add(item);
+        }
+        return removeAll(stuffToRemove);
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java b/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
new file mode 100644
index 0000000..ae076ae
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
@@ -0,0 +1,542 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.StringTokenizer;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+* Testing class for StringTokenizer class
+* @author Syn Wee Quek
+* @since oct 26 2002
+*/
+public final class StringTokenizerTest extends TestFmwk
+{ 
+      // constructor ===================================================
+  
+      /**
+      * Constructor
+      */
+      public StringTokenizerTest()
+      {
+      }
+  
+      // public methods --------------------------------------------------------
+    
+    /**
+     * Testing constructors
+     */
+    public void TestConstructors()
+    {
+        String str = "this\tis\na\rstring\ftesting\tStringTokenizer\nconstructors!";
+        String delimiter = " \t\n\r\f";
+        String expected[] = {"this", "is", "a", "string", "testing", 
+                             "StringTokenizer", "constructors!"};
+        StringTokenizer defaultst = new StringTokenizer(str);
+        StringTokenizer stdelimiter = new StringTokenizer(str, delimiter);
+        StringTokenizer stdelimiterreturn = new StringTokenizer(str, delimiter,
+                                                                false);
+        UnicodeSet delimiterset = new UnicodeSet("[" + delimiter + "]", false);
+        StringTokenizer stdelimiterset = new StringTokenizer(str, delimiterset);
+        StringTokenizer stdelimitersetreturn = new StringTokenizer(str, 
+                                                                delimiterset,
+                                                                false);
+        for (int i = 0; i < expected.length; i ++) {
+            if (!(defaultst.nextElement().equals(expected[i]) 
+                  && stdelimiter.nextElement().equals(expected[i])
+                  && stdelimiterreturn.nextElement().equals(expected[i])
+                  && stdelimiterset.nextElement().equals(expected[i])
+                  && stdelimitersetreturn.nextElement().equals(expected[i]))) {
+                errln("Constructor with default delimiter gives wrong results");
+            }
+        }
+        
+        String expected1[] = {"this", "\t", "is", "\n", "a", "\r", "string", "\f",
+                            "testing", "\t", "StringTokenizer", "\n",
+                            "constructors!"};
+        stdelimiterreturn = new StringTokenizer(str, delimiter, true);
+        stdelimitersetreturn = new StringTokenizer(str, delimiterset, true);
+        for (int i = 0; i < expected1.length; i ++) {
+            if (!(stdelimiterreturn.nextElement().equals(expected1[i])
+                  && stdelimitersetreturn.nextElement().equals(expected1[i]))) {
+                errln("Constructor with default delimiter and delimiter tokens gives wrong results");
+            }
+        }
+                            
+        stdelimiter = new StringTokenizer(str, (String)null);
+        stdelimiterreturn = new StringTokenizer(str, (String)null, false);
+        delimiterset = null;
+        stdelimiterset = new StringTokenizer(str, delimiterset);
+        stdelimitersetreturn = new StringTokenizer(str, delimiterset, false);
+        
+        if (!(stdelimiter.nextElement().equals(str)
+              && stdelimiterreturn.nextElement().equals(str)
+              && stdelimiterset.nextElement().equals(str)
+              && stdelimitersetreturn.nextElement().equals(str))) {
+            errln("Constructor with null delimiter gives wrong results");
+        }
+        
+        delimiter = "";
+        stdelimiter = new StringTokenizer(str, delimiter);
+        stdelimiterreturn = new StringTokenizer(str, delimiter, false);
+        delimiterset = new UnicodeSet();
+        stdelimiterset = new StringTokenizer(str, delimiterset);
+        stdelimitersetreturn = new StringTokenizer(str, delimiterset, false);
+        
+        if (!(stdelimiter.nextElement().equals(str)
+              && stdelimiterreturn.nextElement().equals(str)
+              && stdelimiterset.nextElement().equals(str)
+              && stdelimitersetreturn.nextElement().equals(str))) {
+            errln("Constructor with empty delimiter gives wrong results");
+        }
+        
+        try {
+            defaultst = new StringTokenizer(null);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+        try {
+            stdelimiter = new StringTokenizer(null, delimiter);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+        try {
+            stdelimiterreturn = new StringTokenizer(null, delimiter, false);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+        try {
+            stdelimiterset = new StringTokenizer(null, delimiterset);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+        try {
+            stdelimitersetreturn = new StringTokenizer(null, delimiterset,
+                                                       false);
+            errln("null string should throw an exception");
+        } catch (Exception e) {
+            logln("PASS: Constructor with null string failed as expected");
+        }
+    }
+    
+    /**
+     * Testing supplementary
+     */
+    public void TestSupplementary()
+    {
+        String str = "bmp string \ud800 with a unmatched surrogate character";
+        String delimiter = "\ud800\udc00";
+        String expected[] = {str};
+            
+        StringTokenizer tokenizer = new StringTokenizer(str, delimiter);
+        if (!tokenizer.nextElement().equals(expected[0])) {
+            errln("Error parsing \"" + Utility.hex(str) + "\"");
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+        delimiter = "\ud800";
+        String expected1[] = {"bmp string ", 
+                              " with a unmatched surrogate character"};
+        tokenizer = new StringTokenizer(str, delimiter);
+        int i = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected1[i ++])) {
+                errln("Error parsing \"" + Utility.hex(str) + "\"");
+            }
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+        
+        str = "string \ud800\udc00 with supplementary character";
+        delimiter = "\ud800";
+        String expected2[] = {str};
+        tokenizer = new StringTokenizer(str, delimiter);
+        if (!tokenizer.nextElement().equals(expected2[0])) {
+            errln("Error parsing \"" + Utility.hex(str) + "\"");
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+  
+        delimiter = "\ud800\udc00";
+        String expected3[] = {"string ", " with supplementary character"};
+        tokenizer = new StringTokenizer(str, delimiter);
+        i = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected3[i ++])) {
+                errln("Error parsing \"" + Utility.hex(str) + "\"");
+            }
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+        
+        str = "\ud800 \ud800\udc00 \ud800 \ud800\udc00";
+        delimiter = "\ud800";
+        String expected4[] = {" \ud800\udc00 ", " \ud800\udc00"};
+        i = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected4[i ++])) {
+                errln("Error parsing \"" + Utility.hex(str) + "\"");
+            }
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+        
+        delimiter = "\ud800\udc00";
+        String expected5[] = {"\ud800 ", " \ud800 "};
+        i = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected5[i ++])) {
+                errln("Error parsing \"" + Utility.hex(str) + "\"");
+            }
+        }
+        if (tokenizer.hasMoreElements()) {
+            errln("Number of tokens exceeded expected");
+        }
+    }
+  
+      /**
+      * Testing next api
+      */
+      public void TestNextNonDelimiterToken()
+      {
+        String str = "  ,  1 2 3  AHHHHH! 5.5 6 7    ,        8\n";
+        String expected[] = {",", "1", "2", "3", "AHHHHH!", "5.5", "6", "7", 
+                             ",", "8\n"};
+        String delimiter = " ";
+                           
+        StringTokenizer tokenizer = new StringTokenizer(str, delimiter);
+        int currtoken = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected[currtoken])) {
+                errln("Error token mismatch, expected " + expected[currtoken]);
+            }
+            currtoken ++;
+        }
+
+        if (currtoken != expected.length) {
+            errln("Didn't get correct number of tokens");
+        }
+        
+        tokenizer = new StringTokenizer("", delimiter);
+        if (tokenizer.hasMoreElements()) {
+            errln("Empty string should not have any tokens");
+        }
+        try {
+            tokenizer.nextElement();
+            errln("Empty string should not have any tokens");
+        } catch (Exception e) {
+            logln("PASS: empty string failed as expected");
+        }
+        
+        tokenizer = new StringTokenizer(", ,", ", ");
+        if (tokenizer.hasMoreElements()) {
+            errln("String with only delimiters should not have any tokens");
+        }
+        try {
+            tokenizer.nextElement();
+            errln("String with only delimiters should not have any tokens");
+        } catch (Exception e) {
+            logln("PASS: String with only delimiters failed as expected");
+        }
+
+        tokenizer = new StringTokenizer("q, ,", ", ");
+        if (!tokenizer.hasMoreElements()) {
+            errln("String that does not begin with delimiters should have some tokens");
+        }
+        if (!tokenizer.nextElement().equals("q")) {
+            errln("String that does not begin with delimiters should have some tokens");
+        } 
+        try {
+            tokenizer.nextElement();
+            errln("String has only one token");
+        } catch (Exception e) {
+            logln("PASS: String with only one token failed as expected");
+        }
+
+        try {
+            tokenizer = new StringTokenizer(null, delimiter);
+            errln("StringTokenizer constructed with null source should throw a nullpointerexception");
+        } catch (Exception e) {
+            logln("PASS: StringTokenizer constructed with null source failed as expected");
+        }
+
+        tokenizer = new StringTokenizer(str, "q");
+        if (!tokenizer.nextElement().equals(str)) {
+            errln("Should have received the same string when there are no delimiters");
+        }
+    }
+
+    /**
+     * Test java compatibility, except we support surrogates.
+     */
+    public void TestNoCoalesce() {
+        String str = "This is   a test\rto see if\nwhitespace is handled \n\r unusually\r\n by our tokenizer\n\n\n!!!plus some other odd ones like \ttab\ttab\ttab\nand form\ffeed\ffoo.\n";
+        String delims = " \t\n\r\f\ud800\udc00";
+
+        java.util.StringTokenizer jt = new java.util.StringTokenizer(str, delims, true);
+        com.ibm.icu.util.StringTokenizer it = new com.ibm.icu.util.StringTokenizer(str, delims, true);
+        int n = 0;
+        while (jt.hasMoreTokens() && it.hasMoreTokens()) {
+            assertEquals("[" + String.valueOf(n++) + "]", jt.nextToken(), it.nextToken());
+        }
+        assertFalse("java tokenizer has no more tokens", jt.hasMoreTokens());
+        assertFalse("icu tokenizer has no more tokens", it.hasMoreTokens());
+
+        String sur = "Even\ud800\udc00 works.\n\n";
+        it = new com.ibm.icu.util.StringTokenizer(sur, delims, true); // no coalesce
+        assertEquals("sur1", it.nextToken(), "Even");
+        assertEquals("sur2", it.nextToken(), "\ud800\udc00");
+        assertEquals("sur3", it.nextToken(), " ");
+        assertEquals("sur4", it.nextToken(), "works.");
+        assertEquals("sur5", it.nextToken(), "\n");
+        assertEquals("sur6", it.nextToken(), "\n");
+        assertFalse("sur7", it.hasMoreTokens());
+    }
+
+    /**
+    * Testing next api
+    */
+    public void TestNextDelimiterToken()
+    {
+        String str = "  ,  1 2 3  AHHHHH! 5.5 6 7    ,        8\n";
+        String expected[] = {"  ", ",", "  ", "1", " ", "2", " ", "3", "  ",
+                             "AHHHHH!", " ", "5.5", " ", "6", " ", "7", "    ",
+                             ",", "        ", "8\n"};
+        String delimiter = " ";
+                           
+        StringTokenizer tokenizer = new StringTokenizer(str, delimiter, true, true);
+
+        int currtoken = 0;
+        while (tokenizer.hasMoreElements()) {
+            if (!tokenizer.nextElement().equals(expected[currtoken])) {
+                errln("Error token mismatch, expected " + expected[currtoken]);
+            }
+            currtoken ++;
+        }
+
+        if (currtoken != expected.length) {
+            errln("Didn't get correct number of tokens");
+        }
+        
+        tokenizer = new StringTokenizer("", delimiter, true);
+        if (tokenizer.hasMoreElements()) {
+            errln("Empty string should not have any tokens");
+        }
+        try {
+            tokenizer.nextElement();
+            errln("Empty string should not have any tokens");
+        } catch (Exception e) {
+            logln("PASS: Empty string failed as expected");
+        }
+        
+        tokenizer = new StringTokenizer(", ,", ", ", true, true);
+        if (!tokenizer.hasMoreElements()) {
+            errln("String with only delimiters should have tokens when delimiter is treated as tokens");
+        }
+        if (!tokenizer.nextElement().equals(", ,")) {
+            errln("String with only delimiters should return itself when delimiter is treated as tokens");
+        }
+
+        tokenizer = new StringTokenizer("q, ,", ", ", true, true);
+        
+        if (!tokenizer.hasMoreElements()) {
+            errln("String should have some tokens");
+        }
+        if (!tokenizer.nextElement().equals("q") 
+            || !tokenizer.nextElement().equals(", ,")) {
+            errln("String tokens do not match expected results");
+        } 
+
+        try {
+            tokenizer = new StringTokenizer(null, delimiter, true);
+            errln("StringTokenizer constructed with null source should throw a nullpointerexception");
+        } catch (Exception e) {
+            logln("PASS: StringTokenizer constructed with null source failed as expected");
+        }
+
+        tokenizer = new StringTokenizer(str, "q", true);
+        if (!tokenizer.nextElement().equals(str)) {
+            errln("Should have recieved the same string when there are no delimiters");
+        }
+    }
+    
+    /**
+     * Testing count tokens
+     */
+    public void TestCountTokens()
+    {
+        String str = "this\tis\na\rstring\ftesting\tStringTokenizer\nconstructors!";
+        String delimiter = " \t\n\r\f";
+        String expected[] = {"this", "is", "a", "string", "testing", 
+                             "StringTokenizer", "constructors!"};
+        String expectedreturn[] = {"this", "\t", "is", "\n", "a", "\r", 
+                                   "string", "\f", "testing", "\t", 
+                                   "StringTokenizer", "\n", "constructors!"};
+        StringTokenizer st = new StringTokenizer(str, delimiter);
+        StringTokenizer streturn = new StringTokenizer(str, delimiter, true);
+        if (st.countTokens() != expected.length) {
+            errln("CountTokens failed for non-delimiter tokens");
+        }
+        if (streturn.countTokens() != expectedreturn.length) {
+            errln("CountTokens failed for delimiter tokens");
+        }
+        for (int i = 0; i < expected.length; i ++) {
+            if (!st.nextElement().equals(expected[i])
+                || st.countTokens() != expected.length - i - 1) {
+                errln("CountTokens default delimiter gives wrong results");
+            }
+        }
+        for (int i = 0; i < expectedreturn.length; i ++) {
+            if (!streturn.nextElement().equals(expectedreturn[i])
+                || streturn.countTokens() != expectedreturn.length - i - 1) {
+                errln("CountTokens with default delimiter and delimiter tokens gives wrong results");
+            }
+        }    
+    }
+        
+    /**
+     * Next token with new delimiters
+     */
+    public void TestNextNewDelimiters()
+    {
+        String str = "abc0def1ghi2jkl3mno4pqr0stu1vwx2yza3bcd4efg0hij1klm2nop3qrs4tuv";
+        String delimiter[] = {"0", "1", "2", "3", "4"};
+        String expected[][] = {{"abc", "pqr", "efg"},
+                               {"def", "stu", "hij"},
+                               {"ghi", "vwx", "klm"},
+                               {"jkl", "yza", "nop"},
+                               {"mno", "bcd", "qrs"}
+                              };
+        StringTokenizer st = new StringTokenizer(str);
+        int size = expected[0].length;
+        for (int i = 0; i < size; i ++) {
+            for (int j = 0; j < delimiter.length; j ++) {
+                if (!st.nextToken(delimiter[j]).equals(expected[j][i])) {
+                    errln("nextToken() with delimiters error " + i + " " + j);
+                }
+                if (st.countTokens() != expected[j].length - i) {            
+                    errln("countTokens() after nextToken() with delimiters error"
+                          + i + " " + j);
+                }
+            }
+        }    
+        st = new StringTokenizer(str);
+        String delimiter1[] = {"0", "2", "4"};
+        String expected1[] = {"abc", "def1ghi", "jkl3mno", "pqr", "stu1vwx", 
+                              "yza3bcd", "efg", "hij1klm", "nop3qrs", "tuv"};
+        for (int i = 0; i < expected1.length; i ++) {
+            if (!st.nextToken(delimiter1[i % delimiter1.length]).equals(
+                                                            expected1[i])) {
+                errln("nextToken() with delimiters error " + i);
+            }
+        }
+    }
+    
+    public void TestBug4423()
+    {
+        // bug 4423:  a bad interaction between countTokens() and hasMoreTokens().
+        //
+        String s1 = "This is a test";
+        StringTokenizer tzr = new StringTokenizer(s1);
+        int  tokenCount = 0;
+        
+        int t = tzr.countTokens();
+        if (t!= 4) {
+            errln("tzr.countTokens() returned " + t + ".  Expected 4");
+        }
+        while (tzr.hasMoreTokens()) {
+            String  tok = tzr.nextToken();
+            if (tok.length() == 0) {
+                errln("token with length == 0");
+            }
+            tokenCount++;
+        }
+        if (tokenCount != 4) {
+            errln("Incorrect number of tokens found = " + tokenCount);
+        }
+        
+        // Precomputed tokens arrays can grow.  Check for edge cases around
+        //  boundary where growth is forced.  Array grows in increments of 100 tokens.
+        String s2 = "";
+        for (int i=1; i<250; i++) {
+            s2 = s2 + " " + i;
+            StringTokenizer tzb = new StringTokenizer(s2);
+            int t2 = tzb.countTokens();
+            if (t2 != i) {
+                errln("tzb.countTokens() returned " + t + ".  Expected " + i);
+                break;
+            }
+            int j = 0;
+            while (tzb.hasMoreTokens()) {
+                String tok = tzb.nextToken();
+                j++;
+                if (tok.equals(Integer.toString(j)) == false) {
+                    errln("Wrong token string.  Expected \"" + j + "\", got \""
+                            + tok + "\".");
+                    break;
+                }
+            }
+            if (j != i) {
+                errln("Wrong number of tokens.  Expected " + i + ".  Got " + j
+                        + ".");
+                break;
+            }
+        }
+        
+    }
+
+    public void TestCountTokensNoCoalesce() {
+        // jitterbug 5207
+        String str = "\"\"";
+        String del = "\"";
+        StringTokenizer st = new StringTokenizer(str, del, true);
+        int count = 0;
+        while (st.hasMoreTokens()) {
+            String t = st.nextToken();
+            logln("[" + count + "] '" + t + "'");
+            ++count;
+        }
+        st = new StringTokenizer(str, del, true);
+        int ncount = st.countTokens();
+        int xcount = 0;
+        while (st.hasMoreTokens()) {
+            String t = st.nextToken();
+            logln("[" + xcount + "] '" + t + "'");
+            ++xcount;
+        }
+        if (count != ncount || count != xcount) {
+            errln("inconsistent counts " + count + ", " + ncount + ", " + xcount);
+        }
+    }
+
+    public static void main(String[] arg)
+    {
+        try
+        {
+            StringTokenizerTest test = new StringTokenizerTest();
+            test.run(arg);
+            // test.TestCaseCompare();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/Tabber.java b/src/com/ibm/icu/dev/test/util/Tabber.java
new file mode 100644
index 0000000..e87d330
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Tabber.java
@@ -0,0 +1,223 @@
+
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class Tabber {
+    public static final byte LEFT = 0, CENTER = 1, RIGHT = 2;
+    private static final String[] ALIGNMENT_NAMES = {"Left", "Center", "Right"};
+    
+    /**
+     * Repeats a string n times
+     * @param source
+     * @param times
+     */
+    // TODO - optimize repeats using doubling?
+    public static String repeat(String source, int times) {
+        if (times <= 0) return "";
+        if (times == 1) return source;
+        StringBuffer result = new StringBuffer();
+        for (; times > 0; --times) {
+            result.append(source);
+        }
+        return result.toString();
+    }
+    
+    public String process(String source) {
+        StringBuffer result = new StringBuffer();
+        int lastPos = 0;
+        for (int count = 0; lastPos < source.length(); ++count) {
+            int pos = source.indexOf('\t', lastPos);
+            if (pos < 0) pos = source.length();
+            process_field(count, source, lastPos, pos, result);
+            lastPos = pos+1;
+        }
+        return prefix + result.toString() + postfix;
+    }
+    
+    private String prefix = "";
+    private String postfix = "";
+    
+    public abstract void process_field(int count, String source, int start, int limit, StringBuffer output);
+    
+    public Tabber clear() {
+        return this;
+    }
+
+    public static class MonoTabber extends Tabber {
+        int minGap = 0;
+    
+        private List stops = new ArrayList();
+        private List types = new ArrayList();
+        
+        public Tabber clear() {
+            stops.clear();
+            types.clear();
+            minGap = 0;
+            return this;
+        }
+        
+        public String toString() {
+            StringBuffer buffer = new StringBuffer();
+            for (int i = 0; i < stops.size(); ++i) {
+                if (i != 0) buffer.append("; ");
+                buffer
+                .append(ALIGNMENT_NAMES[((Integer)types.get(i)).intValue()])
+                .append(",")
+                .append(stops.get(i));
+            } 
+            return buffer.toString();
+        }
+    
+        /**
+         * Adds tab stop and how to align the text UP TO that stop
+         * @param tabPos
+         * @param type
+         */
+        public MonoTabber addAbsolute(int tabPos, int type) {
+            stops.add(new Integer(tabPos));
+            types.add(new Integer(type));
+            return this;
+        }
+    
+        /**
+         * Adds relative tab stop and how to align the text UP TO that stop
+         */
+        public Tabber add(int fieldWidth, byte type) {
+            int last = getStop(stops.size()-1);
+            stops.add(new Integer(last + fieldWidth));
+            types.add(new Integer(type));
+            return this;
+        }
+        
+        public int getStop(int fieldNumber) {
+            if (fieldNumber < 0) return 0;
+            if (fieldNumber >= stops.size()) fieldNumber = stops.size() - 1;
+            return ((Integer)stops.get(fieldNumber)).intValue();
+        }
+        public int getType(int fieldNumber) {
+            if (fieldNumber < 0) return LEFT;
+            if (fieldNumber >= stops.size()) return LEFT;
+            return ((Integer)types.get(fieldNumber)).intValue();
+        }
+        /*
+        public String process(String source) {
+            StringBuffer result = new StringBuffer();
+            int lastPos = 0;
+            int count = 0;
+            for (count = 0; lastPos < source.length() && count < stops.size(); count++) {
+                int pos = source.indexOf('\t', lastPos);
+                if (pos < 0) pos = source.length();
+                String piece = source.substring(lastPos, pos);
+                int stopPos = getStop(count);
+                if (result.length() < stopPos) {
+                    result.append(repeat(" ", stopPos - result.length()));
+                    // TODO fix type
+                }
+                result.append(piece);
+                lastPos = pos+1;
+            }
+            if (lastPos < source.length()) {
+                result.append(source.substring(lastPos));
+            }
+            return result.toString();
+        }
+        */
+        
+        public void process_field(int count, String source, int start, int limit, StringBuffer output) {
+            String piece = source.substring(start, limit);
+            int startPos = getStop(count-1);
+            int endPos = getStop(count) - minGap;
+            int type = getType(count);
+            switch (type) {
+                case LEFT: 
+                    break;
+                case RIGHT: 
+                    startPos = endPos - piece.length();
+                    break;
+                case CENTER: 
+                    startPos = (startPos + endPos - piece.length() + 1)/2;
+                    break;
+            }
+
+            int gap = startPos - output.length();
+            if (count != 0 && gap < minGap) gap = minGap;
+            if (gap > 0) output.append(repeat(" ", gap));
+            output.append(piece);
+        }
+        
+    }
+    
+    public static Tabber NULL_TABBER = new Tabber() {
+        public void process_field(int count, String source, int start, int limit, StringBuffer output) {
+            if (count > 0) output.append( "\t");
+            output.append(source.substring(start, limit));
+        }
+    };
+    
+    public static class HTMLTabber extends Tabber {
+        private List parameters = new ArrayList();
+        {
+            setPrefix("<tr>");
+            setPostfix("</tr>");
+        }
+        public void setParameters(int count, String params) {
+            while (count >= parameters.size()) parameters.add(null);
+            parameters.set(count,params);
+        }
+        
+        public void process_field(int count, String source, int start, int limit, StringBuffer output) {
+            output.append("<td");
+            String params = null;
+            if (count < parameters.size()) params = (String) parameters.get(count);
+            if (params != null) {
+                output.append(' ');
+                output.append(params);
+            }
+            output.append(">");
+            output.append(source.substring(start, limit));
+            // TODO Quote string
+            output.append("</td>");            
+        }
+    }
+    /**
+     */
+    public String getPostfix() {
+        return postfix;
+    }
+
+    /**
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    /**
+     * @param string
+     */
+    public Tabber setPostfix(String string) {
+        postfix = string;
+        return this;
+    }
+
+    /**
+     * @param string
+     */
+    public Tabber setPrefix(String string) {
+        prefix = string;
+        return this;
+    }
+
+    public Tabber add(int i, byte left2) {
+        // does nothing unless overridden
+        return this;
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/TestAll.java b/src/com/ibm/icu/dev/test/util/TestAll.java
new file mode 100644
index 0000000..122de7e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestAll.java
@@ -0,0 +1,40 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+/**
+ * Top level test used to run all other tests as a batch.
+ */
+public class TestAll extends TestGroup {
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public TestAll() {
+        super(
+              new String[] {
+            "VersionInfoTest",
+            "ICUResourceBundleTest",
+            "CompactArrayTest",
+            "StringTokenizerTest",
+            "CurrencyTest",
+            "UtilityTest",
+            "TrieTest",
+            "LocaleDataTest",
+            "ULocaleTest",
+            "LocaleAliasTest",
+            "DebugUtilitiesTest"
+        },
+              "Test miscellaneous public utilities");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Util";
+}
+
+
diff --git a/src/com/ibm/icu/dev/test/util/TestBNF.java b/src/com/ibm/icu/dev/test/util/TestBNF.java
new file mode 100644
index 0000000..7e9e739
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestBNF.java
@@ -0,0 +1,246 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Random;
+
+//TODO integrate this into the test framework
+
+import com.ibm.icu.text.UnicodeSet;
+
+public class TestBNF {
+    
+    static final String[] testRules = {
+        "$root = [ab]{3};",
+        
+        "$root = [ab]{3,};",
+        
+        "$root = [ab]{3,5};",
+        
+        "$root = [ab]*;",
+        
+        "$root = [ab]?;",
+        
+        "$root = [ab]+;",
+        
+        "$us = [a-z];" +
+        "$root = [0-9$us];",
+        
+        "$root = a $foo b? 25% end 30% | $foo 50%;\r\n" +
+        "$foo = c{1,5} 20%;",
+        
+        "$root = [a-z]{1,5}~;",
+        
+        "$root = [a-z]{5}~;",
+        
+        "$root = '\\' (u | U0010 | U000 $hex) $hex{4} ;\r\n" +
+        "$hex = [0-9A-Fa-f];",
+    };
+        
+    static String unicodeSetBNF = "" +
+    "$root = $leaf | '[' $s $root2 $s ']' ;\r\n" +
+    "$root2 = $leaf | '[' $s $root3 $s ']' | ($root3 $s ($op $root3 $s){0,3}) ;\r\n" +
+    "$root3 = $leaf | '[' $s $root4 $s ']' | ($root4 $s ($op $root4 $s){0,3}) ;\r\n" +
+    "$root4 = $leaf | ($leaf $s ($op $leaf $s){0,3}) ;\r\n" +
+    "$op = (('&' | '-') $s)? 70%;" +
+    "$leaf = '[' $s $list $s ']' | $prop;\r\n" +
+    "$list = ($char $s ('-' $s $char $s)? 30%){1,5} ;\r\n" +
+    "$prop = '\\' (p | P) '{' $s $propName $s '}' | '[:' '^'? $s $propName $s ':]';\r\n" +
+    "$needsQuote = [\\-\\][:whitespace:][:control:]] ;\r\n" +
+    "$char = [[\\u0000-\\U00010FFFF]-$needsQuote] | $quoted ;\r\n" +
+    "$quoted = '\\' ('u' | 'U0010' | 'U000' $hex) $hex{4} ;\r\n" +
+    "$hex = [0-9A-Fa-f];\r\n" +
+    "$s = ' '? 20%;\r\n" +
+    "$propName = (whitespace | ws) | (uppercase | uc) | (lowercase | lc) | $category;\r\n" +
+    "$category = ((general | gc) $s '=' $s)? $catvalue;\r\n" +
+    "$catvalue = (C | Other | Cc | Control | Cf | Format | Cn | Unassigned | L | Letter);\r\n";
+
+    public static void main (String[] args) {
+        testTokenizer();
+        for (int i = 0; i < testRules.length; ++i) {
+            testBNF(testRules[i], null, 20);          
+        }
+        
+        testBNF(unicodeSetBNF, null, 20);
+        //testParser();
+    }
+    
+    static void testBNF(String rules, UnicodeSet chars, int count) {
+        BNF bnf = new BNF(new Random(0), new Quoter.RuleQuoter())
+        .addSet("$chars", chars)
+        .addRules(rules)
+        .complete();
+
+        System.out.println("====================================");
+        System.out.println("BNF");
+        System.out.println(rules);
+        System.out.println(bnf.getInternal());
+        for (int i = 0; i < count; ++i) {
+            System.out.println(i + ": " + bnf.next());
+        }
+    }
+    
+    /*
+    public static testManual() {
+        Pick p = Pick.maybe(75,Pick.unquoted("a"));
+        testOr(p, 1);
+        p = Pick.or(new String[]{"", "a", "bb", "ccc"});
+        testOr(p, 3);
+        p = Pick.repeat(3, 5, new int[]{20, 30, 20}, "a");
+        testOr(p, 5);        
+        p = Pick.codePoint("[a-ce]");
+        testCodePoints(p);        
+        p = Pick.codePoint("[a-ce]");
+        testCodePoints(p);        
+        p = Pick.string(2, 8, p);
+        testOr(p,10);
+        
+        p = Pick.or(new String[]{"", "a", "bb", "ccc"});
+        p = Pick.and(p).and2(p).and2("&");
+        testMatch(p, "abb&");
+        testMatch(p, "bba");
+        
+        // testEnglish();        
+    }
+    */
+    
+    static void testMatch(Pick p, String source) {
+        Pick.Position pp = new Pick.Position();
+        boolean value = p.match(source, pp);
+        System.out.println("Match: " + value + ", " + pp);      
+    }
+    /*
+    static void testParser() {
+        try {
+            Pick.Target target = new Pick.Target();
+            for (int i = 0; i < rules.length; ++i) {
+                target.addRule(rules[i]);
+            }
+        } catch (ParseException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+    */
+    
+    static class Counts {
+        int[] counts;       
+        Counts(int max) {
+            counts = new int[max+1];
+        }
+        void inc(int index) {
+            counts[index]++;
+        }
+        void show() {
+            System.out.println("Printing Counts");
+            for (int i = 0; i < counts.length; ++i) {
+                if (counts[i] == 0) continue;
+                System.out.println(i + ": " + counts[i]);
+            }
+            System.out.println();
+        }
+    }
+    
+/*    static final String[] rules = {
+        "$s = ' ';",
+        "$noun = dog | house | government | wall | street | zebra;",
+        "$adjective = red | glorious | simple | nasty | heavy | clean;",
+        "$article = quickly | oddly | silently | boldly;",
+        "$adjectivePhrase = ($adverb $s)? 50% $adjective* 0% 30% 20% 10%;",
+        "$nounPhrase = $articles $s ($adjectivePhrase $s)? 30% $noun;",
+        "$verb = goes | fishes | walks | sleeps;",
+        "$tverb = carries | lifts | overturns | hits | jumps on;",
+        "$copula = is 30% | seems 10%;",
+        "$sentence1 = $nounPhrase $s $verb $s ($s $adverb)? 30%;",
+        "$sentence2 = $nounPhrase $s $tverb $s $nounPhrase ($s $adverb)? 30%;",
+        "$sentence3 = $nounPhrase $s $copula $s $adjectivePhrase;",
+        "$conj = but | and | or;",
+        "$sentence4 = $sentence1 | $sentence2 | $sentence3 20% | $sentence4 $conj $sentence4 20%;",
+        "$sentence = $sentence4 '.';"};
+ */
+    /*
+    private static void testEnglish() {
+        Pick s = Pick.unquoted(" ");
+        Pick verbs = Pick.or(new String[]{"goes", "fishes", "walks", "sleeps"});
+        Pick transitive = Pick.or(new String[]{"carries", "lifts", "overturns", "hits", "jumps on"});
+        Pick nouns = Pick.or(new String[]{"dog", "house", "government", "wall", "street", "zebra"});
+        Pick adjectives = Pick.or(new String[]{"red", "glorious", "simple", "nasty", "heavy", "clean"});
+        Pick articles = Pick.or(new String[]{"the", "a"});
+        Pick adverbs = Pick.or(new String[]{"quickly", "oddly", "silently", "boldly"});
+        Pick adjectivePhrase = Pick.and(0.5, Pick.and(adverbs).and2(s)).and2(adjectives);
+        Pick nounPhrase = Pick.and(articles).and2(s)
+            .and2(0.3, Pick.and(adjectivePhrase).and2(s))
+            .and2(nouns);
+        Pick copula = Pick.or(new String[]{"is", "seems"});
+        Pick sentence1 = Pick.and(nounPhrase).and2(s).and2(verbs)
+            .and2(0.3, Pick.and(s).and2(adverbs)).name("s1");
+        Pick sentence2 = Pick.and(nounPhrase).and2(s).and2(transitive).and2(s).and2(nounPhrase)
+            .and2(0.3, Pick.and(s).and2(adverbs)).name("s2");
+        Pick sentence3 = Pick.and(nounPhrase).and2(s).and2(copula).and2(s).and2(adjectivePhrase).name("s3");
+        Pick conj = Pick.or(new String[]{", but", ", and", ", or"});
+        Pick forward = Pick.unquoted("forward");
+        Pick pair = Pick.and(forward).and2(conj).and2(s).and2(forward).name("part");
+        Pick sentenceBase = Pick.or(sentence1).or2(sentence2).or2(sentence3).or2(0.6666, pair).name("sentence");
+        sentenceBase.replace(forward, sentenceBase);
+        Pick sentence = Pick.and(sentenceBase).and2(Pick.unquoted("."));
+        Pick.Target target = Pick.Target.make(sentence);
+        for (int i = 0; i < 50; ++i) {
+            System.out.println(i + ": " + target.next());
+        }
+    }
+    private static void testOr(Pick p, int count) {
+        Pick.Target target = Pick.Target.make(p);
+        Counts counts = new Counts(count + 10);
+        for (int i = 0; i < 1000; ++i) {
+            String s = target.next();
+            counts.inc(s.length());
+        }
+        counts.show();
+    }
+    private static void testCodePoints(Pick p) {
+        Pick.Target target = Pick.Target.make(p);
+        Counts counts = new Counts(128);
+        for (int i = 0; i < 10000; ++i) {
+            String s = target.next();
+            counts.inc(s.charAt(0));
+        }
+        counts.show();
+    }
+    */
+    public static void printRandoms() {
+        BNF bnf = new BNF(new Random(0), new Quoter.RuleQuoter())
+        .addRules("[a-z]{2,5}").complete();
+        System.out.println("Start");
+        for (int i = 0; i < 100; ++i) {
+            String temp = bnf.next();
+            System.out.println(i + ")\t" + temp);
+        }
+    }
+    
+    public static void testTokenizer() {
+        Tokenizer t = new Tokenizer();
+        
+        String[] samples = {"a'b'c d #abc\r e", "'a '123 321", 
+            "\\\\", "a'b", "a'", "abc def%?ghi", "%", "a", "\\ a", "a''''b"};
+        for (int i = 0; i < samples.length; ++i) {
+            t.setSource(samples[i]);
+            System.out.println();
+            System.out.println("Input: " + t.getSource());
+            int type = 0;
+            while (type != Tokenizer.DONE) {
+                type = t.next();
+                System.out.println(t.toString(type, false));
+            }
+        }
+    }
+
+}
+
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/TestBagFormatter.java b/src/com/ibm/icu/dev/test/util/TestBagFormatter.java
new file mode 100644
index 0000000..6fd6e04
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestBagFormatter.java
@@ -0,0 +1,247 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+// TODO integrate this into the test framework
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.Collator;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UnicodeSet;
+
+// TODO change to use test framework
+public class TestBagFormatter {
+    
+    static final void generatePropertyAliases(boolean showValues) {
+        generatePropertyAliases(showValues, ICUPropertyFactory.make());
+    }
+    
+    static final void generatePropertyAliases(boolean showValues, UnicodeProperty.Factory ups) {
+        Collator order = Collator.getInstance(Locale.ENGLISH);
+        TreeSet props = new TreeSet(order);
+        TreeSet values = new TreeSet(order);
+        BagFormatter bf = new BagFormatter();
+        props.addAll(ups.getAvailableNames());
+        for (int i = UnicodeProperty.BINARY; i < UnicodeProperty.LIMIT_TYPE; ++i) {
+            System.out.println(UnicodeProperty.getTypeName(i));
+            Iterator it = props.iterator();
+            while (it.hasNext()) {
+                String propAlias = (String)it.next();
+                UnicodeProperty up = ups.getProperty(propAlias);
+                int type = up.getType();
+                if (type != i) continue;                
+                System.out.println();
+                System.out.println(propAlias + "\t" + bf.join(up.getNameAliases()));
+                if (!showValues) continue;
+                values.clear();
+                if (type == UnicodeProperty.NUMERIC || type == UnicodeProperty.EXTENDED_NUMERIC) {
+                    UnicodeMap um = new UnicodeMap();
+                    um.putAll(up);
+                    System.out.println(um.toString(new NumberComparator()));
+                    continue;
+                }
+                values.clear();
+                values.addAll(up.getAvailableValues());
+                Iterator it2 = values.iterator();
+                while (it2.hasNext()) {
+                    String valueAlias = (String)it2.next();
+                    System.out.println("\t" + bf.join(valueAlias + "\t" + up.getValueAliases(valueAlias)));
+                }
+            }
+        }
+    }
+    
+    static class NumberComparator implements Comparator {
+        public int compare(Object o1, Object o2) {
+            if (o1 == o2) return 0;
+            if (o1 == null) return 1;
+            if (o2 == null) return -1;
+            double n1 = Double.parseDouble((String)o1);
+            double n2 = Double.parseDouble((String)o2);
+            return n1 < n2 ? -1 : n1 > n2 ? 1 : 0;
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        System.out.println("Start");
+        try {
+            //readCharacters();
+            UnicodeProperty prop = ICUPropertyFactory.make().getProperty("Canonicalcombiningclass");
+            prop.getAvailableValues();
+            
+            generatePropertyAliases(true);
+            
+            BagFormatter bf = new BagFormatter();
+
+            UnicodeSet us = new UnicodeSet("[:gc=nd:]");  
+            BagFormatter.CONSOLE.println("[:gc=nd:]");
+            bf.showSetNames(BagFormatter.CONSOLE,us);
+
+            us = new UnicodeSet("[:numeric_value=2:]");  
+            BagFormatter.CONSOLE.println("[:numeric_value=2:]");
+            bf.showSetNames(BagFormatter.CONSOLE,us);
+            
+            us = new UnicodeSet("[:numeric_type=numeric:]");   
+            BagFormatter.CONSOLE.println("[:numeric_type=numeric:]");
+            bf.showSetNames(BagFormatter.CONSOLE,us);
+            
+            UnicodeProperty.Factory ups = ICUPropertyFactory.make();
+            us = ups.getSet("gc=mn", null, null); 
+            BagFormatter.CONSOLE.println("gc=mn");
+            bf.showSetNames(BagFormatter.CONSOLE, us);
+            
+            if (true) return;
+            //showNames("Name", ".*MARK.*");
+            //showNames("NFD", "a.+");
+            //showNames("NFD", false);
+            //showNames("Lowercase_Mapping", false);
+            //TestUnicodePropertySource.test(true);
+            //showNames(".*\\ \\-.*");
+
+
+            //checkHTML();
+            //testIsRTL();
+           
+            //TestTokenizer.test();
+            //RandomCollator.generate("collationTest.txt", null);
+            
+            //TestPick.test();
+            //printRandoms();
+            //if (true) return;
+            //testLocales();
+            //if (true) return;
+            /*
+            TestCollator tc = new TestCollator();
+            tc.test(RuleBasedCollator.getInstance(),1000);
+            */
+            /*
+            StringBuffer sb = new StringBuffer();
+            for (int i = 0; i < 100; ++i) {
+                sb.setLength(0);
+                rc.nextRule(sb);
+                System.out.println(sb);
+            }
+            */
+        } finally {
+            System.out.println("End");
+       }
+
+    }
+    
+    static void testLocales() throws IOException {
+        Locale[] locales = Collator.getAvailableLocales();
+        Set s = new TreeSet(Collator.getInstance());
+        for (int i = 0; i < locales.length; ++i) {
+            String lang = locales[i].getLanguage();
+            String dlang = locales[i].getDisplayLanguage();
+            String country = locales[i].getCountry();
+            String dcountry = locales[i].getDisplayCountry();
+            if (country.equals("")) continue;
+            s.add(""
+                + "\t" + dcountry 
+                + "\t" + country 
+                + "\t" + dlang
+                + "\t" + lang 
+            );
+        }
+        //CollectionFormatter cf = new CollectionFormatter();
+        PrintWriter pw = BagFormatter.openUTF8Writer("", "countries.txt");
+        Iterator it = s.iterator();
+        while (it.hasNext()) {
+            pw.println(it.next());
+        }
+        pw.close();
+    }
+    
+    
+    /*
+     * Use the number of significant digits to round get a rounding value.
+     */
+/*    static final double LOG10 = Math.log(10);
+    public static void useSignificantDigits(double value, int digits) {
+        double log10 = Math.log(value)/LOG10; // log[e]
+        
+    }*/
+    
+    static final UnicodeSet RTL = new UnicodeSet("[[:L:]&[[:bidi class=R:][:bidi class=AL:]]]");
+    
+    static boolean isRTL(Locale loc) {        
+        // in 2.8 we can use the exemplar characters, but for 2.6 we have to work around it
+        int[] scripts = UScript.getCode(loc);
+        return new UnicodeSet()
+            .applyIntPropertyValue(UProperty.SCRIPT, scripts == null ? UScript.LATIN : scripts[0])
+            .retainAll(RTL).size() != 0;
+    }
+    
+    static void testIsRTL() {
+        Locale[] locales = Locale.getAvailableLocales();
+        Set s = new TreeSet();
+        for (int i = 0; i < locales.length; ++i) {
+            s.add((isRTL(locales[i]) ? "R " : "L ") + locales[i].getDisplayName());
+        }
+        Iterator it = s.iterator();
+        while (it.hasNext()) {
+            System.out.println(it.next());
+        }
+    }
+
+    static final Transliterator toHTML = Transliterator.createFromRules(
+        "any-html",        
+            "'<' > '&lt;' ;" +
+            "'&' > '&amp;' ;" +
+            "'>' > '&gt;' ;" +
+            "'\"' > '&quot;' ; ",
+        Transliterator.FORWARD);
+    static final Transliterator fromHTML = Transliterator.createFromRules(
+        "html-any",        
+            "'<' < '&'[lL][Tt]';' ;" +
+            "'&' < '&'[aA][mM][pP]';' ;" +
+            "'>' < '&'[gG][tT]';' ;" +
+            "'\"' < '&'[qQ][uU][oO][tT]';' ; ",
+        Transliterator.REVERSE);
+        
+    static void checkHTML() {
+        String foo = "& n < b < \"ab\"";
+        String fii = toHTML.transliterate(foo);
+        System.out.println("in: " + foo);
+        System.out.println("out: " + fii);
+        System.out.println("in*: " + fromHTML.transliterate(fii));
+        System.out.println("IN*: " + fromHTML.transliterate(fii.toUpperCase()));
+    }
+    /*
+    static void showNames(String propAlias, boolean matches) {
+        BagFormatter bf = new BagFormatter();
+        UnicodeSet stuff;
+        stuff = new UnicodePropertySource.ICU()
+            .setPropertyAlias(propAlias)
+            .getPropertySet(matches, null);
+        System.out.println(bf.showSetNames(propAlias + " with " + matches, stuff));
+    }
+    
+    static void showNames(String propAlias, String pattern) {
+        BagFormatter bf = new BagFormatter();
+        UnicodeSet stuff;
+        stuff = new UnicodePropertySource.ICU()
+            .setPropertyAlias(propAlias)
+            .getPropertySet(Pattern.compile(pattern).matcher(""), null);
+        System.out.println(bf.showSetNames(propAlias + "with " + pattern, stuff));
+    }
+    */
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/TestData_en.jpp b/src/com/ibm/icu/dev/test/util/TestData_en.jpp
new file mode 100644
index 0000000..812f983
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestData_en.jpp
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+import java.util.ListResourceBundle;
+import com.ibm.icu.impl.ICUListResourceBundle;
+/*
+ * Eclipse expects the java files in a package-like directory structure to have a package declaration at the top of the file.
+ * To fool Eclipse this file has an "jpp" extension. The ant build script copies this file to the default package and renames it
+ * before building.
+ */ 
+/**
+ * @author ram
+ */
+
+public class TestData_en extends ListResourceBundle {
+    public TestData_en() {
+        
+  }
+  private static Object[][] data = new Object[][] { 
+              {
+                  "aaa",
+                 "testcircularalias/aab",
+              },
+              {
+                  "aab",
+                  "testcircularalias/aac",
+              },
+              {
+                  "aac",
+                  "testcircularalias/aaa",
+              } 
+  };
+  protected Object[][] getContents(){
+      return data;
+  }
+}
diff --git a/src/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp b/src/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp
new file mode 100644
index 0000000..3312dd3
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp
@@ -0,0 +1,58 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.UResourceBundle;
+/*
+ * Eclipse expects the java files in a package-like directory structure to have a package declaration at the top of the file.
+ * To fool Eclipse this file has an "jpp" extension. The ant build script copies this file to the default package and renames it
+ * before building.
+ */ 
+/**
+ * @author ram
+ */
+public class TestDefaultPackageLoading extends TestFmwk{
+    public static void main(String[] args){
+        new TestDefaultPackageLoading().run(args);
+    }
+    public void TestResourceBundleLoading(){
+        try{
+            UResourceBundle bundle = UResourceBundle.getBundleInstance("TestData", "en");
+            String aaa = bundle.getString("aaa");
+            if(!aaa.equals("testcircularalias/aab")){
+                errln("Did not get the expected data");
+            }
+        }catch (MissingResourceException ex){
+            errln("could not load data "+ex.getMessage());
+        }
+    }
+    public void TestResFileLoading(){
+        try{
+            UResourceBundle bundle = UResourceBundle.getBundleInstance("", "te");
+            String aaa = bundle.getString("string_only_in_te");
+            if(!aaa.equals("TE")){
+                errln("Did not get the expected data");
+            }
+        }catch (MissingResourceException ex){
+            errln("could not load data "+ex.getMessage());
+        }
+    }
+    public void TestJB3767(){
+        try{
+            UResourceBundle bundle = UResourceBundle.getBundleInstance("com.ibm.icu.dev.data.TestData", "bge");
+            String aaa = bundle.getString("string_only_in_te");
+            if(!aaa.equals("TE")){
+                errln("Did not get the expected data");
+            }
+            logln("Got : " + bundle.getULocale().getName());
+        }catch (MissingResourceException ex){
+            errln("could not load data "+ex.getMessage());
+        }
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/test/util/TestUtilities.java b/src/com/ibm/icu/dev/test/util/TestUtilities.java
new file mode 100644
index 0000000..33250fc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TestUtilities.java
@@ -0,0 +1,469 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.TestBoilerplate;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.UnicodeSet;
+
+public class TestUtilities extends TestFmwk {
+    static final int LIMIT = 0x15; // limit to make testing more realistic in terms of collisions
+    static final int ITERATIONS = 1000000;
+    static final boolean SHOW_PROGRESS = false;
+    static final boolean DEBUG = false;
+    
+    public static void main(String[] args) throws Exception {
+        new TestUtilities().run(args);
+    }
+    
+    UnicodeMap map1 = new UnicodeMap();
+    Map map2 = new HashMap();
+    Map map3 = new TreeMap();
+    SortedSet log = new TreeSet();
+    static String[] TEST_VALUES = {null, "A", "B", "C", "D", "E", "F"};
+    static Random random = new Random(12345);
+    
+    public void TestUnicodeMap() {
+        random.setSeed(12345);
+        // do random change to both, then compare
+        logln("Comparing against HashMap");
+        for (int counter = 0; counter < ITERATIONS; ++counter) {
+            int start = random.nextInt(LIMIT);
+            String value = TEST_VALUES[random.nextInt(TEST_VALUES.length)];
+            String logline = Utility.hex(start) + "\t" + value;
+            if (SHOW_PROGRESS) logln(counter + "\t" + logline);
+            log.add(logline);
+            if (DEBUG && counter == 144) {
+                System.out.println(" debug");
+            }
+            map1.put(start, value);
+            map2.put(new Integer(start), value);
+            check(counter);
+        }
+        checkNext(LIMIT);
+        
+        logln("Setting General Category");
+        map1 = new UnicodeMap();
+        map2 = new TreeMap();
+        for (int cp = 0; cp <= SET_LIMIT; ++cp) {
+              int enumValue = UCharacter.getIntPropertyValue(cp, propEnum);
+              //if (enumValue <= 0) continue; // for smaller set
+              String value = UCharacter.getPropertyValueName(propEnum,enumValue, UProperty.NameChoice.LONG);
+              map1.put(cp, value);
+              map2.put(new Integer(cp), value);
+        }       
+        checkNext(Integer.MAX_VALUE);
+
+
+        logln("Comparing General Category");
+        check(-1);
+        logln("Comparing Values");
+        Set values1 = (Set) map1.getAvailableValues(new TreeSet());
+        Set values2 = new TreeSet(map2.values());
+        if (!TestBoilerplate.verifySetsIdentical(this, values1, values2)) {
+            throw new IllegalArgumentException("Halting");
+        }
+        logln("Comparing Sets");
+        for (Iterator it = values1.iterator(); it.hasNext();) {
+            Object value = it.next();
+            logln(value == null ? "null" : value.toString());
+            UnicodeSet set1 = map1.getSet(value);
+            UnicodeSet set2 = TestBoilerplate.getSet(map2, value);
+            if (!TestBoilerplate.verifySetsIdentical(this, set1, set2)) {
+                throw new IllegalArgumentException("Halting");
+            }
+        } 
+        
+        logln("Getting Scripts");
+        UnicodeMap scripts = ICUPropertyFactory.make().getProperty("script").getUnicodeMap_internal();
+        UnicodeMap.Composer composer = new UnicodeMap.Composer() {
+            public Object compose(int codePoint, Object a, Object b) {
+                return a.toString() + "_" + b.toString();
+            }
+        };
+        
+        logln("Trying Compose");
+        UnicodeMap composed = ((UnicodeMap)scripts.cloneAsThawed()).composeWith(map1, composer);
+        Object last = "";
+        for (int i = 0; i < 0x10FFFF; ++i) {
+            Object comp = composed.getValue(i);
+            Object gc = map1.getValue(i);
+            Object sc = scripts.getValue(i);
+            if (!comp.equals(composer.compose(i, gc, sc))) {
+                errln("Failed compose at: " + i);
+            }
+            if (!last.equals(comp)) {
+                logln(Utility.hex(i) + "\t" + comp);
+                last = comp;
+            }
+        }
+
+        // check boilerplate
+        List argList = new ArrayList();
+        argList.add("TestMain");
+        if (params.nothrow) argList.add("-nothrow");
+        if (params.verbose) argList.add("-verbose");
+        String[] args = new String[argList.size()];
+        argList.toArray(args);
+        new UnicodeMapBoilerplate().run(args);
+         // TODO: the following is not being reached
+        new UnicodeSetBoilerplate().run(args);       
+    }
+    
+    public void TestCollectionUtilitySpeed() {
+        HashSet hs1 = new HashSet();
+        HashSet hs2 = new HashSet();
+        int size = 100000;
+        int iterations = 100;
+        String prefix = "abcde";
+        String postfix = "abcde";
+        int start1 = 0; // 1 for some, 0 for all
+        for (int i = 0; i < size; i += 2) hs1.add(prefix + String.valueOf(i) + postfix);
+        for (int i = start1; i < size; i += 2) hs2.add(prefix + String.valueOf(i) + postfix);
+        TreeSet ts1 = new TreeSet(hs1);
+        TreeSet ts2 = new TreeSet(hs2);
+        CollectionUtilities.containsAll(hs1, hs2);
+        CollectionUtilities.containsAll(ts1, ts2);
+        long start, end;
+        boolean temp = false;
+        start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) temp = CollectionUtilities.containsAll(hs1, hs2);
+        end = System.currentTimeMillis();
+        logln(temp + " " + (end - start)/1000.0);
+        start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) temp = CollectionUtilities.containsAll(ts1, ts2);
+        end = System.currentTimeMillis();
+        logln(temp + " " + (end - start)/1000.0);
+    }
+    
+    public void TestCollectionUtilities() {
+        String[][] test = {{"a", "c", "e", "g", "h", "z"}, {"b", "d", "f", "h", "w"}, { "a", "b" }, { "a", "d" }, {"d"}, {}}; // 
+        int resultMask = 0;
+        for (int i = 0; i < test.length; ++i) {
+            Collection a = new TreeSet(Arrays.asList(test[i]));
+            for (int j = 0; j < test.length; ++j) {
+                Collection b = new TreeSet(Arrays.asList(test[j]));
+                int relation = CollectionUtilities.getContainmentRelation(a, b);
+                resultMask |= (1 << relation);
+                switch (relation) {
+                case CollectionUtilities.ALL_EMPTY:
+                    checkContainment(a.size() == 0 && b.size() == 0, a, relation, b);
+                    break;
+                case CollectionUtilities.NOT_A_SUPERSET_B:
+                    checkContainment(a.size() == 0 && b.size() != 0, a, relation, b);
+                    break;
+                case CollectionUtilities.NOT_A_DISJOINT_B:
+                    checkContainment(a.equals(b) && a.size() != 0, a, relation, b);
+                    break;
+                case CollectionUtilities.NOT_A_SUBSET_B:
+                    checkContainment(a.size() != 0 && b.size() == 0, a, relation, b);
+                    break;
+                case CollectionUtilities.A_PROPER_SUBSET_OF_B:
+                    checkContainment(b.containsAll(a) && !a.equals(b), a, relation, b);
+                    break;
+                case CollectionUtilities.NOT_A_EQUALS_B:
+                    checkContainment(!CollectionUtilities.containsSome(a, b) && a.size() != 0 && b.size() != 0, a, relation, b);
+                    break;
+                case CollectionUtilities.A_PROPER_SUPERSET_B:
+                    checkContainment(a.containsAll(b) && !a.equals(b), a, relation, b);
+                break;
+                case CollectionUtilities.A_PROPER_OVERLAPS_B:
+                    checkContainment(!b.containsAll(a) && !a.containsAll(b) && CollectionUtilities.containsSome(a, b), a, relation, b);
+                break;
+                }
+            }
+        }
+        if (resultMask != 0xFF) {
+            String missing = "";
+            for (int i = 0; i < 8; ++i) {
+                if ((resultMask & (1 << i)) == 0) {
+                    if (missing.length() != 0) missing += ", ";
+                    missing += RelationName[i];
+                }
+            }
+            errln("Not all ContainmentRelations checked: " + missing);
+        }
+    }
+
+    static final String[] RelationName = {"ALL_EMPTY",
+            "NOT_A_SUPERSET_B",
+            "NOT_A_DISJOINT_B",
+            "NOT_A_SUBSET_B",
+            "A_PROPER_SUBSET_OF_B",
+            "A_PROPER_DISJOINT_B",
+            "A_PROPER_SUPERSET_B",
+            "A_PROPER_OVERLAPS_B"};
+
+    /**
+     *  
+     */
+    private void checkContainment(boolean c, Collection a, int relation, Collection b) {
+        if (!c) {
+            errln("Fails relation: " + a + " \t" + RelationName[relation] + " \t" + b);
+        }
+    }
+
+    private void checkNext(int limit) {
+        logln("Comparing nextRange");
+        UnicodeMap.MapIterator mi = new UnicodeMap.MapIterator(map1);
+        Map localMap = new TreeMap();
+        while (mi.nextRange()) {
+            logln(Utility.hex(mi.codepoint) + ".." + Utility.hex(mi.codepointEnd) + " => " + mi.value);
+            for (int i = mi.codepoint; i <= mi.codepointEnd; ++i) {
+                if (i >= limit) continue;
+                localMap.put(new Integer(i), mi.value);
+            }
+        }
+        checkMap(map2, localMap);
+        
+        logln("Comparing next");
+        mi.reset();
+        localMap = new TreeMap();
+        Object lastValue = new Object();
+        while (mi.next()) {
+            if (!UnicodeMap.areEqual(lastValue, mi.value)) {
+                // System.out.println("Change: " + Utility.hex(mi.codepoint) + " => " + mi.value);
+                lastValue = mi.value;
+            }
+            if (mi.codepoint >= limit) continue;
+            localMap.put(new Integer(mi.codepoint), mi.value);
+        }
+        checkMap(map2, localMap);
+    }
+    
+    public void check(int counter) {
+        for (int i = 0; i < LIMIT; ++i) {
+            Object value1 = map1.getValue(i);
+            Object value2 = map2.get(new Integer(i));
+            if (!UnicodeMap.areEqual(value1, value2)) {
+                errln(counter + " Difference at " + Utility.hex(i)
+                     + "\t UnicodeMap: " + value1
+                     + "\t HashMap: " + value2);
+                errln("UnicodeMap: " + map1);
+                errln("Log: " + TestBoilerplate.show(log));
+                errln("HashMap: " + TestBoilerplate.show(map2));
+            }
+        }
+    }
+    
+    void checkMap(Map m1, Map m2) {
+        if (m1.equals(m2)) return;
+        StringBuffer buffer = new StringBuffer();
+        Set m1entries = m1.entrySet();
+        Set m2entries = m2.entrySet();
+        getEntries("\r\nIn First, and not Second", m1entries, m2entries, buffer, 20);
+        getEntries("\r\nIn Second, and not First", m2entries, m1entries, buffer, 20);
+        errln(buffer.toString());
+    }
+    
+    static Comparator ENTRY_COMPARATOR = new Comparator() {
+        public int compare(Object o1, Object o2) {
+            if (o1 == o2) return 0;
+            if (o1 == null) return -1;
+            if (o2 == null) return 1;
+            Map.Entry a = (Map.Entry) o1;
+            Map.Entry b = (Map.Entry) o2;
+            int result = compare2(a.getKey(), b.getKey());
+            if (result != 0) return result;
+            return compare2(a.getValue(), b.getValue());
+        }
+        private int compare2(Object o1, Object o2) {
+            if (o1 == o2) return 0;
+            if (o1 == null) return -1;
+            if (o2 == null) return 1;
+            return ((Comparable)o1).compareTo(o2);
+        }
+    };
+
+    private void getEntries(String title, Set m1entries, Set m2entries, StringBuffer buffer, int limit) {
+        Set m1_m2 = new TreeSet(ENTRY_COMPARATOR);
+        m1_m2.addAll(m1entries);
+        m1_m2.removeAll(m2entries);
+        buffer.append(title + ": " + m1_m2.size() + "\r\n");
+        for (Iterator it = m1_m2.iterator(); it.hasNext();) {
+            if (limit-- < 0) return;
+            Map.Entry entry = (Map.Entry) it.next();
+            buffer.append(entry.getKey()).append(" => ")
+             .append(entry.getValue()).append("\r\n");
+        }
+    }
+    
+    static final int SET_LIMIT = 0x10FFFF;
+    static final int CHECK_LIMIT = 0xFFFF;
+    static final NumberFormat pf = NumberFormat.getPercentInstance();
+    static final NumberFormat nf = NumberFormat.getInstance();
+    
+    public void TestTime() {
+        double hashTime, umTime, icuTime, treeTime;
+        umTime = checkSetTime(20, 0);
+        hashTime = checkSetTime(20, 1);
+        logln("Percentage: " + pf.format(hashTime/umTime));
+        treeTime = checkSetTime(20, 3);
+        logln("Percentage: " + pf.format(treeTime/umTime));
+        //logln(map1.toString());
+        
+        umTime = checkGetTime(1000, 0);
+        hashTime = checkGetTime(1000, 1);
+        logln("Percentage: " + pf.format(hashTime/umTime));
+        icuTime = checkGetTime(1000, 2);
+        logln("Percentage: " + pf.format(icuTime/umTime));
+        treeTime = checkGetTime(1000, 3);
+        logln("Percentage: " + pf.format(treeTime/umTime));
+    }
+    
+    int propEnum = UProperty.GENERAL_CATEGORY;
+    
+    double checkSetTime(int iterations, int type) {
+        _checkSetTime(1,type);
+        double result = _checkSetTime(iterations, type);
+        logln((type == 0 ? "UnicodeMap" : type == 1 ? "HashMap" : type == 2 ? "ICU" : "TreeMap") + "\t" + nf.format(result));
+        return result;
+    }
+    double _checkSetTime(int iterations, int type) {
+        map1 = new UnicodeMap();
+        map2 = new HashMap();
+        System.gc();
+        double start = System.currentTimeMillis();
+        for (int j = 0; j < iterations; ++j)
+          for (int cp = 0; cp <= SET_LIMIT; ++cp) {
+            int enumValue = UCharacter.getIntPropertyValue(cp, propEnum);
+            if (enumValue <= 0) continue; // for smaller set
+            String value = UCharacter.getPropertyValueName(propEnum,enumValue, UProperty.NameChoice.LONG);
+            switch(type) {
+            case 0: map1.put(cp, value); break;
+            case 1: map2.put(new Integer(cp), value); break;
+            case 3: map3.put(new Integer(cp), value); break;
+            }
+        }
+        double end = System.currentTimeMillis();
+        return (end-start)/1000/iterations;
+    }
+    
+    double checkGetTime(int iterations, int type) {
+        _checkGetTime(1,type);
+        double result = _checkGetTime(iterations, type);
+        logln((type == 0 ? "UnicodeMap" : type == 1 ? "HashMap" : type == 2 ? "ICU" : "TreeMap") + "\t" + nf.format(result));
+        return result;
+    }
+    double _checkGetTime(int iterations, int type) {
+        System.gc();
+        double start = System.currentTimeMillis();
+        for (int j = 0; j < iterations; ++j)
+          for (int cp = 0; cp < CHECK_LIMIT; ++cp) {
+            switch (type) {
+            case 0: map1.getValue(cp); break;
+            case 1: map2.get(new Integer(cp)); break;
+            case 2:
+                int enumValue = UCharacter.getIntPropertyValue(cp, propEnum);
+                //if (enumValue <= 0) continue;
+                UCharacter.getPropertyValueName(propEnum,enumValue, UProperty.NameChoice.LONG);
+                break;                
+            case 3: map3.get(new Integer(cp)); break;
+            }
+        }
+        double end = System.currentTimeMillis();
+        return (end-start)/1000/iterations;
+    }
+    
+    static class UnicodeMapBoilerplate extends TestBoilerplate {
+
+        /* 
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_hasSameBehavior(java.lang.Object, java.lang.Object)
+         */
+        protected boolean _hasSameBehavior(Object a, Object b) {
+            // we are pretty confident in the equals method, so won't bother with this right now.
+            return true;
+        }
+
+        /*
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_createTestObject()
+         */
+        protected boolean _addTestObject(List list) {
+            if (list.size() > 30) return false;
+            UnicodeMap result = new UnicodeMap();
+            for (int i = 0; i < 50; ++i) {
+                int start = random.nextInt(25);
+                String value = TEST_VALUES[random.nextInt(TEST_VALUES.length)];
+                result.put(start, value);
+            }
+            list.add(result);
+            return true;
+        }
+    }
+    
+    static class StringBoilerplate extends TestBoilerplate {
+
+        /* 
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_hasSameBehavior(java.lang.Object, java.lang.Object)
+         */
+        protected boolean _hasSameBehavior(Object a, Object b) {
+            // we are pretty confident in the equals method, so won't bother with this right now.
+            return true;
+        }
+
+        /*
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_createTestObject()
+         */
+        protected boolean _addTestObject(List list) {
+            if (list.size() > 31) return false;
+            StringBuffer result = new StringBuffer();
+            for (int i = 0; i < 10; ++i) {
+                result.append((char)random.nextInt(0xFF));
+            }
+            list.add(result.toString());
+            return true;
+        }
+    }
+    
+    static class UnicodeSetBoilerplate extends TestBoilerplate {
+
+        /* 
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_hasSameBehavior(java.lang.Object, java.lang.Object)
+         */
+        protected boolean _hasSameBehavior(Object a, Object b) {
+            // we are pretty confident in the equals method, so won't bother with this right now.
+            return true;
+        }
+
+        /*
+         * @see com.ibm.icu.dev.test.TestBoilerplate#_createTestObject()
+         */
+        protected boolean _addTestObject(List list) {
+            if (list.size() > 32) return false;
+            UnicodeSet result = new UnicodeSet();
+            for (int i = 0; i < 50; ++i) {
+                result.add(random.nextInt(100));
+            }
+            list.add(result.toString());
+            return true;
+        }
+    }
+
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java b/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java
new file mode 100644
index 0000000..f70a1ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java
@@ -0,0 +1,183 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+import java.util.Iterator;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.TextTrieMap;
+
+public class TextTrieMapTest extends TestFmwk {
+
+    private static final Integer SUN = new Integer(1);
+    private static final Integer MON = new Integer(2);
+    private static final Integer TUE = new Integer(3);
+    private static final Integer WED = new Integer(4);
+    private static final Integer THU = new Integer(5);
+    private static final Integer FRI = new Integer(6);
+    private static final Integer SAT = new Integer(7);
+
+    private static final Integer FOO = new Integer(-1);
+    private static final Integer BAR = new Integer(-2);
+    
+    private static final Object[][] TESTDATA = {
+        {"Sunday", SUN},
+        {"Monday", MON},
+        {"Tuesday", TUE},
+        {"Wednesday", WED},
+        {"Thursday", THU},
+        {"Friday", FRI},
+        {"Saturday", SAT},
+        {"Sun", SUN},
+        {"Mon", MON},
+        {"Tue", TUE},
+        {"Wed", WED},
+        {"Thu", THU},
+        {"Fri", FRI},
+        {"Sat", SAT},
+        {"S", SUN},
+        {"M", MON},
+        {"T", TUE},
+        {"W", WED},
+        {"T", THU},
+        {"F", FRI},
+        {"S", SAT}
+    };
+
+    private static final Object[][] TESTCASES = {
+        {"Sunday", SUN, SUN},
+        {"sunday", null, SUN},
+        {"Mo", MON, MON},
+        {"mo", null, MON},
+        {"Thursday Friday", THU, THU},
+        {"T", new Object[]{TUE, THU}, new Object[]{TUE, THU}},
+        {"TEST", new Object[]{TUE, THU}, new Object[]{TUE, THU}},
+        {"SUN", new Object[]{SUN, SAT}, SUN},
+        {"super", null, SUN},
+        {"NO", null, null}
+    };
+    
+    public static void main(String[] args) throws Exception {
+        TextTrieMapTest test = new TextTrieMapTest();
+        test.run(args);
+    }
+
+    public void TestCaseSensitive() {
+        Iterator itr = null;
+        TextTrieMap map = new TextTrieMap(false);
+        for (int i = 0; i < TESTDATA.length; i++) {
+            map.put((String)TESTDATA[i][0], TESTDATA[i][1]);
+        }
+
+        logln("Test for get(String)");
+        for (int i = 0; i < TESTCASES.length; i++) {
+            itr = map.get((String)TESTCASES[i][0]);
+            checkResult(itr, TESTCASES[i][1]);
+        }
+
+        logln("Test for get(String, int)");
+        StringBuffer textBuf = new StringBuffer();
+        for (int i = 0; i < TESTCASES.length; i++) {
+            textBuf.setLength(0);
+            for (int j = 0; j < i; j++) {
+                textBuf.append('X');
+            }
+            textBuf.append(TESTCASES[i][0]);
+            itr = map.get(textBuf.toString(), i);
+            checkResult(itr, TESTCASES[i][1]);
+        }
+
+        // Add duplicated entry
+        map.put("Sunday", FOO);
+        // Add duplicated entry with different casing
+        map.put("sunday", BAR);
+
+        // Make sure the all entries are returned
+        itr = map.get("Sunday");
+        checkResult(itr, new Object[]{FOO, SUN});
+    }
+
+    public void TestCaseInsensitive() {
+        Iterator itr = null;
+        TextTrieMap map = new TextTrieMap(true);
+        for (int i = 0; i < TESTDATA.length; i++) {
+            map.put((String)TESTDATA[i][0], TESTDATA[i][1]);
+        }
+
+        logln("Test for get(String)");
+        for (int i = 0; i < TESTCASES.length; i++) {
+            itr = map.get((String)TESTCASES[i][0]);
+            checkResult(itr, TESTCASES[i][2]);
+        }
+        
+        logln("Test for get(String, int)");
+        StringBuffer textBuf = new StringBuffer();
+        for (int i = 0; i < TESTCASES.length; i++) {
+            textBuf.setLength(0);
+            for (int j = 0; j < i; j++) {
+                textBuf.append('X');
+            }
+            textBuf.append(TESTCASES[i][0]);
+            itr = map.get(textBuf.toString(), i);
+            checkResult(itr, TESTCASES[i][2]);
+        }
+
+        // Add duplicated entry
+        map.put("Sunday", FOO);
+        // Add duplicated entry with different casing
+        map.put("sunday", BAR);
+
+        // Make sure the all entries are returned
+        itr = map.get("Sunday");
+        checkResult(itr, new Object[]{SUN, FOO, BAR});
+    }
+
+    private boolean eql(Object o1, Object o2) {
+        if (o1 == null || o2 == null) {
+            if (o1 == null && o2 == null) {
+                return true;
+            }
+            return false;
+        }
+        return o1.equals(o2);
+    }
+
+    private void checkResult(Iterator itr, Object expected) {
+        if (itr == null) {
+            if (expected != null) {
+                errln("FAIL: Empty results - Expected: " + expected);
+            }
+            return;
+        }
+        if (expected == null && itr != null) {
+            errln("FAIL: Empty result is expected");
+            return;
+        }
+
+        Object[] exp;
+        if (expected instanceof Object[]) {
+            exp = (Object[])expected;
+        } else {
+            exp = new Object[]{expected};
+        }
+
+        boolean[] found = new boolean[exp.length];
+        while (itr.hasNext()) {
+            Object val = itr.next();
+            for (int i = 0; i < exp.length; i++) {
+                if (eql(exp[i], val)) {
+                    found[i] = true;
+                }
+            }
+        }
+        for (int i = 0; i < exp.length; i++) {
+            if (found[i] == false) {
+                errln("FAIL: The search result does not contain " + exp[i]);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/Tokenizer.java b/src/com/ibm/icu/dev/test/util/Tokenizer.java
new file mode 100644
index 0000000..265175a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Tokenizer.java
@@ -0,0 +1,323 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.text.ParsePosition;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.lang.*;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.Map;
+
+public class Tokenizer {
+    protected String source;
+    
+    protected StringBuffer buffer = new StringBuffer();
+    protected long number;
+    protected UnicodeSet unicodeSet = null;
+    protected int index;
+    boolean backedup = false;
+    protected int lastIndex = -1;
+    protected int nextIndex;
+    int lastValue = BACKEDUP_TOO_FAR;
+    TokenSymbolTable symbolTable = new TokenSymbolTable();
+
+    private static final char
+        QUOTE = '\'',
+        BSLASH = '\\';
+    private static final UnicodeSet QUOTERS = new UnicodeSet().add(QUOTE).add(BSLASH);
+    private static final UnicodeSet WHITESPACE = new UnicodeSet("[" +
+        "\\u0009-\\u000D\\u0020\\u0085\\u200E\\u200F\\u2028\\u2029" +
+        "]");
+    private static final UnicodeSet SYNTAX = new UnicodeSet("[" +
+        "\\u0021-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E" +
+        "\\u00A1-\\u00A7\\u00A9\\u00AB-\\u00AC\\u00AE" +
+        "\\u00B0-\\u00B1\\u00B6\\u00B7\\u00BB\\u00BF\\u00D7\\u00F7" +
+        "\\u2010-\\u2027\\u2030-\\u205E\\u2190-\\u2BFF" +
+        "\\u3001\\u3003\\u3008-\\u3020\\u3030" +
+        "\\uFD3E\\uFD3F\\uFE45\\uFE46" +
+        "]").removeAll(QUOTERS).remove('$');
+    private static final UnicodeSet NEWLINE = new UnicodeSet("[\\u000A\\u000D\\u0085\\u2028\\u2029]");
+    //private static final UnicodeSet DECIMAL = new UnicodeSet("[:Nd:]");
+    private static final UnicodeSet NON_STRING = new UnicodeSet()
+        .addAll(WHITESPACE)
+        .addAll(SYNTAX);
+           
+    protected UnicodeSet whiteSpace = WHITESPACE;
+    protected UnicodeSet syntax = SYNTAX;
+    private UnicodeSet non_string = NON_STRING;
+
+    private void fixSets() {
+        if (syntax.containsSome(QUOTERS) || syntax.containsSome(whiteSpace)) {
+            syntax = ((UnicodeSet)syntax.clone()).removeAll(QUOTERS).removeAll(whiteSpace);
+        }
+        if (whiteSpace.containsSome(QUOTERS)) {
+            whiteSpace = ((UnicodeSet)whiteSpace.clone()).removeAll(QUOTERS);
+        }
+        non_string = new UnicodeSet(syntax)
+            .addAll(whiteSpace);
+    }
+    
+    public Tokenizer setSource(String source) {
+        this.source = source;
+        this.index = 0;
+        return this; // for chaining
+    }
+    
+    public Tokenizer setIndex(int index) {
+        this.index = index;
+        return this; // for chaining
+    }
+    
+    public static final int 
+        DONE = -1, 
+        NUMBER = -2, 
+        STRING = -3, 
+        UNICODESET = -4, 
+        UNTERMINATED_QUOTE = -5,
+        BACKEDUP_TOO_FAR = -6;
+        
+    private static final int
+        //FIRST = 0,
+        //IN_NUMBER = 1,
+        //IN_SPACE = 2,
+        AFTER_QUOTE = 3,    // warning: order is important for switch statement
+        IN_STRING = 4, 
+        AFTER_BSLASH = 5, 
+        IN_QUOTE = 6;
+   
+    public String toString(int type, boolean backedupBefore) {
+        String s = backedup ? "@" : "*";
+        switch(type) {
+            case DONE: 
+                return s+"Done"+s;
+            case BACKEDUP_TOO_FAR:
+                return s+"Illegal Backup"+s;
+            case UNTERMINATED_QUOTE: 
+                return s+"Unterminated Quote=" + getString() + s;
+            case STRING:
+                return s+"s=" + getString() + s;
+            case NUMBER:
+                return s+"n=" + getNumber() + s;
+            case UNICODESET:
+                return s+"n=" + getUnicodeSet() + s;           
+            default:
+                return s+"c=" + usf.getName(type,true) + s;
+        }
+    }
+    
+    private static final BagFormatter usf = new BagFormatter();
+    
+    public void backup() {
+        if (backedup) throw new IllegalArgumentException("backup too far");
+        backedup = true;
+        nextIndex = index;
+        index = lastIndex;
+    }
+    
+    /*
+    public int next2() {
+        boolean backedupBefore = backedup;
+        int result = next();
+        System.out.println(toString(result, backedupBefore));
+        return result;
+    }    
+    */
+    
+    public int next() {
+        if (backedup) {
+            backedup = false;
+            index = nextIndex;
+            return lastValue;
+        }
+        int cp = 0;
+        boolean inComment = false;
+        // clean off any leading whitespace or comments
+        while (true) {
+            if (index >= source.length()) return lastValue = DONE;
+            cp = nextChar();
+            if (inComment) {
+                if (NEWLINE.contains(cp)) inComment = false;
+            } else {
+                if (cp == '#') inComment = true;
+                else if (!whiteSpace.contains(cp)) break;
+            }
+        }
+        // record the last index in case we have to backup
+        lastIndex = index;
+        
+        if (cp == '[') {
+            ParsePosition pos = new ParsePosition(index-1);
+            unicodeSet = new UnicodeSet(source,pos,symbolTable);
+            index = pos.getIndex();
+            return lastValue = UNICODESET;
+        }
+        // get syntax character
+        if (syntax.contains(cp)) return lastValue = cp;
+        
+        // get number, if there is one
+        if (UCharacter.getType(cp) == Character.DECIMAL_DIGIT_NUMBER) {
+            number = UCharacter.getNumericValue(cp);
+            while (index < source.length()) {
+                cp = nextChar();
+                if (UCharacter.getType(cp) != Character.DECIMAL_DIGIT_NUMBER) {
+                    index -= UTF16.getCharCount(cp); // BACKUP!
+                    break;
+                }
+                number *= 10;
+                number += UCharacter.getNumericValue(cp);
+            }
+            return lastValue =  NUMBER;
+        }
+        buffer.setLength(0);
+        int status = IN_STRING;
+        main:
+        while (true) {
+            switch (status) {
+                case AFTER_QUOTE: // check for double ''?
+                    if (cp == QUOTE) {
+                        UTF16.append(buffer, QUOTE);
+                        status = IN_QUOTE;
+                        break;
+                    }
+                    // OTHERWISE FALL THROUGH!!!
+                case IN_STRING: 
+                    if (cp == QUOTE) status = IN_QUOTE;
+                    else if (cp == BSLASH) status = AFTER_BSLASH;
+                    else if (non_string.contains(cp)) {
+                        index -= UTF16.getCharCount(cp); // BACKUP!
+                        break main;
+                    } else UTF16.append(buffer,cp);
+                    break;
+                case IN_QUOTE:
+                    if (cp == QUOTE) status = AFTER_QUOTE;
+                    else UTF16.append(buffer,cp);
+                    break;
+                case AFTER_BSLASH:
+                    switch(cp) {
+                        case 'n': cp = '\n'; break;
+                        case 'r': cp = '\r'; break;
+                        case 't': cp = '\t'; break;
+                    }
+                    UTF16.append(buffer,cp);
+                    status = IN_STRING;
+                    break;
+                default: throw new IllegalArgumentException("Internal Error");
+            }
+            if (index >= source.length()) break;
+            cp = nextChar();
+        }
+        if (status > IN_STRING) return lastValue = UNTERMINATED_QUOTE;
+        return lastValue =  STRING;
+    }
+    
+    public String getString() {
+        return buffer.toString();
+    }
+    
+    public String toString() {
+        return source.substring(0,index) + "$$$" + source.substring(index);
+    }
+    
+    public long getNumber() {
+        return number;
+    }
+    
+    public UnicodeSet getUnicodeSet() {
+        return unicodeSet;
+    }
+    
+    private int nextChar() {
+        int cp = UTF16.charAt(source,index);
+        index += UTF16.getCharCount(cp);
+        return cp;
+    }
+    public int getIndex() {
+        return index;
+    }
+    public String getSource() {
+        return source;
+    }
+    public UnicodeSet getSyntax() {
+        return syntax;
+    }
+    public UnicodeSet getWhiteSpace() {
+        return whiteSpace;
+    }
+    public void setSyntax(UnicodeSet set) {
+        syntax = set;
+        fixSets();
+    }
+    public void setWhiteSpace(UnicodeSet set) {
+        whiteSpace = set;
+        fixSets();
+    }
+    
+    public Set getLookedUpItems() {
+        return symbolTable.itemsLookedUp;
+    }
+    
+    public void addSymbol(String var, String value, int start, int limit) {
+        // the limit is after the ';', so remove it
+        --limit;
+        char[] body = new char[limit - start];
+        value.getChars(start, limit, body, 0);
+        symbolTable.add(var, body);
+    }
+    
+    public class TokenSymbolTable implements SymbolTable {
+        Map contents = new HashMap();
+        Set itemsLookedUp = new HashSet();
+            
+        public void add(String var, char[] body) {
+            // start from 1 to avoid the $
+            contents.put(var.substring(1), body);
+        }
+            
+        /* (non-Javadoc)
+         * @see com.ibm.icu.text.SymbolTable#lookup(java.lang.String)
+         */
+        public char[] lookup(String s) {
+            itemsLookedUp.add('$' + s);
+            return (char[])contents.get(s);
+        }
+    
+        /* (non-Javadoc)
+         * @see com.ibm.icu.text.SymbolTable#lookupMatcher(int)
+         */
+        public UnicodeMatcher lookupMatcher(int ch) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+    
+        /* (non-Javadoc)
+         * @see com.ibm.icu.text.SymbolTable#parseReference(java.lang.String, java.text.ParsePosition, int)
+         */
+        public String parseReference(String text, ParsePosition pos, int limit) {
+            int cp;
+            int start = pos.getIndex();
+            int i;
+            for (i = start; i < limit; i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(text, i);
+                if (!com.ibm.icu.lang.UCharacter.isUnicodeIdentifierPart(cp)) {
+                    break;
+                }
+            }
+            pos.setIndex(i);
+            return text.substring(start,i);
+        }
+        
+    }
+}
+
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java b/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
new file mode 100644
index 0000000..3f76a91
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
@@ -0,0 +1,153 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+
+import com.ibm.icu.text.Transliterator;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##import com.ibm.icu.dev.test.TestUtil;
+//#endif
+
+public class TransliteratorUtilities {
+    public static boolean DEBUG = false;
+
+    public static void registerTransliteratorFromFile(String dir, String id) {
+        try {
+            String filename = id.replace('-', '_') +  ".txt";
+            String rules = getFileContents(dir, filename);
+            Transliterator t;
+            int pos = id.indexOf('-');
+            String rid;
+            if (pos < 0) {
+                rid = id + "-Any";
+                id = "Any-" + id;
+            } else {
+                rid = id.substring(pos+1) + "-" + id.substring(0, pos);
+            }
+            t = Transliterator.createFromRules(id, rules, Transliterator.FORWARD);
+            Transliterator.unregister(id);
+            Transliterator.registerInstance(t);
+
+            /*String test = "\u049A\u0430\u0437\u0430\u049B";
+            System.out.println(t.transliterate(test));
+            t = Transliterator.getInstance(id);
+            System.out.println(t.transliterate(test));
+            */
+
+            t = Transliterator.createFromRules(rid, rules, Transliterator.REVERSE);
+            Transliterator.unregister(rid);
+            Transliterator.registerInstance(t);
+            if (DEBUG) System.out.println("Registered new Transliterator: " + id + ", " + rid);
+        } catch (IOException e) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        throw (IllegalArgumentException) new IllegalArgumentException("Can't open " + dir + ", " + id+" "+ e.getMessage());
+//#else
+            throw (IllegalArgumentException) new IllegalArgumentException("Can't open " + dir + ", " + id).initCause(e);
+//#endif
+        }
+    }
+
+    /**
+     * 
+     */
+    public static String getFileContents(String dir, String filename) throws IOException {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        BufferedReader br = TestUtil.openUTF8Reader(dir, filename);
+//#else
+        BufferedReader br = BagFormatter.openUTF8Reader(dir, filename);
+//#endif 
+        StringBuffer buffer = new StringBuffer();
+        while (true) {
+            String line = br.readLine();
+            if (line == null) break;
+            if (line.length() > 0 && line.charAt(0) == '\uFEFF') line = line.substring(1);
+            buffer.append(line).append("\r\n");
+        }
+        br.close();
+        return buffer.toString();
+         
+    }
+
+    private static final String BASE_RULES =
+        ":: (hex-any/xml);" +
+        ":: (hex-any/xml10);" + 
+        "'<' > '&lt;' ;" +
+        "'<' < '&'[lL][Tt]';' ;" +
+        "'&' > '&amp;' ;" +
+        "'&' < '&'[aA][mM][pP]';' ;" +
+        "'>' < '&'[gG][tT]';' ;" +
+        "'\"' < '&'[qQ][uU][oO][tT]';' ; " +
+        "'' < '&'[aA][pP][oO][sS]';' ; ";
+
+    private static final String CONTENT_RULES =
+        "'>' > '&gt;' ;";
+
+    private static final String HTML_RULES = BASE_RULES + CONTENT_RULES + 
+        "'\"' > '&quot;' ; ";
+
+    private static final String HTML_RULES_CONTROLS = HTML_RULES + 
+        ":: [[:C:][:Z:][:whitespace:][:Default_Ignorable_Code_Point:]] hex/unicode ; ";
+
+    private static final String HTML_RULES_ASCII = HTML_RULES + 
+        ":: [[:C:][:^ASCII:]] any-hex/xml ; ";
+
+    private static final String XML_RULES = HTML_RULES +
+        "'' > '&apos;' ; "
+;
+    
+    /*
+The ampersand character (&) and the left angle bracket (<) MUST NOT appear 
+
+in their literal form, except when used as markup delimiters, or within a 
+
+comment, a processing instruction, or a CDATA section. If they are needed 
+
+elsewhere, they MUST be escaped using either numeric character references or 
+
+the strings "&amp;" and "&lt;" respectively. The right angle bracket (>) MAY 
+
+be represented using the string "&gt;", and MUST, for compatibility, be 
+
+escaped using either "&gt;" or a character reference when it appears in the string 
+
+"]]>" in content, when that string is not marking the end of a CDATA section.
+
+In the content of elements, character data is any string of characters which does 
+
+not contain the start-delimiter of any markup and does not include the 
+
+CDATA-section-close delimiter, "]]>". In a CDATA section, character data is 
+
+any string of characters not including the CDATA-section-close delimiter, 
+
+"]]>".
+
+To allow attribute values to contain both single and double quotes, the 
+
+apostrophe or single-quote character (') MAY be represented as "&apos;", and 
+
+the double-quote character (") as "&quot;".
+
+
+     */
+    
+    public static final Transliterator toXML = Transliterator.createFromRules(
+            "any-xml", XML_RULES, Transliterator.FORWARD);
+    public static final Transliterator fromXML = Transliterator.createFromRules(
+            "xml-any", XML_RULES, Transliterator.REVERSE);
+    public static final Transliterator toHTML = Transliterator.createFromRules(
+            "any-html", HTML_RULES, Transliterator.FORWARD);
+    public static final Transliterator toHTMLControl = Transliterator.createFromRules(
+            "any-html", HTML_RULES_CONTROLS, Transliterator.FORWARD);
+    public static final Transliterator toHTMLAscii = Transliterator.createFromRules(
+            "any-html", HTML_RULES_ASCII, Transliterator.FORWARD);
+    public static final Transliterator fromHTML = Transliterator.createFromRules(
+            "html-any", HTML_RULES, Transliterator.REVERSE);
+}
diff --git a/src/com/ibm/icu/dev/test/util/TrieTest.java b/src/com/ibm/icu/dev/test/util/TrieTest.java
new file mode 100644
index 0000000..977d40b
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/TrieTest.java
@@ -0,0 +1,566 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Trie;
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.impl.CharTrie;
+import com.ibm.icu.impl.TrieBuilder;
+import com.ibm.icu.impl.IntTrieBuilder;
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.RangeValueIterator;
+
+/**
+* Testing class for Trie. Tests here will be simple, since both CharTrie and 
+* IntTrie are very similar and are heavily used in other parts of ICU4J.
+* Codes using Tries are expected to have detailed tests.
+* @author Syn Wee Quek
+* @since release 2.1 Jan 01 2002
+*/
+public final class TrieTest extends TestFmwk 
+{ 
+    // constructor ---------------------------------------------------
+  
+    /**
+    * Constructor
+    */
+    public TrieTest()
+    {
+    }
+      
+    // public methods -----------------------------------------------
+    
+    public static void main(String arg[]) 
+    {
+        TrieTest test = new TrieTest();
+        try {
+            test.run(arg);
+        } catch (Exception e) {
+            test.errln("Error testing trietest");
+        }
+    }
+    
+    /** 
+     * Values for setting possibly overlapping, out-of-order ranges of values
+     */
+    private static final class SetRange 
+    {
+        SetRange(int start, int limit, int value, boolean overwrite)
+        {
+            this.start = start;
+            this.limit = limit;
+            this.value = value;
+            this.overwrite = overwrite;
+        }
+        
+        int start, limit;
+        int value;
+        boolean overwrite;
+    }
+    
+    /**
+     * Values for testing:
+     * value is set from the previous boundary's limit to before
+     * this boundary's limit
+     */
+    private static final class CheckRange 
+    {
+        CheckRange(int limit, int value)
+        {
+            this.limit = limit;
+            this.value = value;
+        }
+        
+        int limit;
+        int value;
+    }
+    
+    private static final class _testFoldedValue 
+                                        implements TrieBuilder.DataManipulate  
+    {
+        public _testFoldedValue(IntTrieBuilder builder)
+        {
+            m_builder_ = builder;
+        }
+        
+        public int getFoldedValue(int start, int offset)
+        {
+            int foldedValue = 0;
+            int limit = start + 0x400;
+            while (start < limit) {
+                int value = m_builder_.getValue(start);
+                if (m_builder_.isInZeroBlock(start)) {
+                    start += TrieBuilder.DATA_BLOCK_LENGTH;
+                } 
+                else {
+                    foldedValue |= value;
+                    ++ start;
+                }
+            }
+        
+            if (foldedValue != 0) {
+                return (offset << 16) | foldedValue;
+            } 
+            return 0;
+        }
+        
+        private IntTrieBuilder m_builder_;
+    }
+    
+    private static final class _testFoldingOffset 
+                                                implements Trie.DataManipulate 
+    {
+        public int getFoldingOffset(int value)
+        {
+            return value >>> 16;
+        }
+    }
+    
+    private static final class _testEnumValue extends TrieIterator
+    {
+        public _testEnumValue(Trie data)
+        {
+            super(data);
+        }
+        
+        protected int extract(int value)
+        {
+            return value ^ 0x5555;
+        }
+    }
+    
+    private void _testTrieIteration(IntTrie trie, CheckRange checkRanges[],
+                                    int countCheckRanges) 
+    {
+        // write a string
+        int countValues = 0;
+        StringBuffer s = new StringBuffer();
+        int values[] = new int[30];
+        for (int i = 0; i < countCheckRanges; ++ i) {
+            int c = checkRanges[i].limit;
+            if (c != 0) {
+                -- c;
+                UTF16.append(s, c);
+                values[countValues ++] = checkRanges[i].value;
+            }
+        }
+        int limit = s.length();
+        // try forward
+        int p = 0;
+        int i = 0;
+        while(p < limit) {
+            int c = UTF16.charAt(s, p);
+            p += UTF16.getCharCount(c);
+            int value = trie.getCodePointValue(c);
+            if (value != values[i]) {
+                errln("wrong value from UTRIE_NEXT(U+" 
+                      + Integer.toHexString(c) + "): 0x" 
+                      + Integer.toHexString(value) + " instead of 0x"
+                      + Integer.toHexString(values[i]));
+            }
+            // unlike the c version lead is 0 if c is non-supplementary
+            char lead = UTF16.getLeadSurrogate(c);
+            char trail = UTF16.getTrailSurrogate(c); 
+            if (lead == 0 
+                ? trail != s.charAt(p - 1) 
+                : !UTF16.isLeadSurrogate(lead) 
+                  || !UTF16.isTrailSurrogate(trail) || lead != s.charAt(p - 2) 
+                  || trail != s.charAt(p - 1)) {
+                errln("wrong (lead, trail) from UTRIE_NEXT(U+" 
+                      + Integer.toHexString(c));
+                continue;
+            }
+            if (lead != 0) {
+                value = trie.getLeadValue(lead);
+                value = trie.getTrailValue(value, trail);
+                if (value != trie.getSurrogateValue(lead, trail)
+                    && value != values[i]) {
+                    errln("wrong value from getting supplementary " 
+                          + "values (U+" 
+                          + Integer.toHexString(c) + "): 0x"
+                          + Integer.toHexString(value) + " instead of 0x"
+                          + Integer.toHexString(values[i]));
+                }
+            }
+            ++ i;
+        }
+    }
+    
+    private void _testTrieRanges(SetRange setRanges[], int countSetRanges, 
+                                 CheckRange checkRanges[], int countCheckRanges,
+                                 boolean latin1Linear) 
+    {
+        IntTrieBuilder newTrie = new IntTrieBuilder(null, 2000,
+                                                    checkRanges[0].value, 
+                                                    checkRanges[0].value,
+                                                    latin1Linear);
+    
+        // set values from setRanges[]
+        boolean ok = true;
+        for (int i = 0; i < countSetRanges; ++ i) {
+            int start = setRanges[i].start;
+            int limit = setRanges[i].limit;
+            int value = setRanges[i].value;
+            boolean overwrite = setRanges[i].overwrite;
+            if ((limit - start) == 1 && overwrite) {
+                ok &= newTrie.setValue(start, value);
+            } 
+            else {
+                ok &= newTrie.setRange(start, limit, value, overwrite);
+            }
+        }
+        if (!ok) {
+            errln("setting values into a trie failed");
+            return;
+        }
+    
+        // verify that all these values are in the new Trie
+        int start = 0;
+        for (int i = 0; i < countCheckRanges; ++ i) {
+            int limit = checkRanges[i].limit;
+            int value = checkRanges[i].value;
+    
+            while (start < limit) {
+                if (value != newTrie.getValue(start)) {
+                    errln("newTrie [U+" 
+                          + Integer.toHexString(start) + "]==0x" 
+                          + Integer.toHexString(newTrie.getValue(start)) 
+                          + " instead of 0x" + Integer.toHexString(value));
+                }
+                ++ start;
+            }
+        }
+    
+        IntTrie trie = newTrie.serialize(new _testFoldedValue(newTrie), 
+                                         new _testFoldingOffset());
+    
+        // test linear Latin-1 range from utrie_getData()
+        if (latin1Linear) {
+            start = 0;
+            for (int i = 0; i < countCheckRanges && start <= 0xff; ++ i) {
+                int limit = checkRanges[i].limit;
+                int value = checkRanges[i].value;
+    
+                while (start < limit && start <= 0xff) {
+                    if (value != trie.getLatin1LinearValue((char)start)) {
+                        errln("IntTrie.getLatin1LinearValue[U+" 
+                              + Integer.toHexString(start) + "]==0x"
+                              + Integer.toHexString(
+                                        trie.getLatin1LinearValue((char) start)) 
+                              + " instead of 0x" + Integer.toHexString(value));
+                    }
+                    ++ start;
+                }
+            }
+        }
+    
+        if (latin1Linear != trie.isLatin1Linear()) {
+            errln("trie serialization did not preserve "
+                  + "Latin-1-linearity");
+        }
+    
+        // verify that all these values are in the serialized Trie
+        start = 0;
+        for (int i = 0; i < countCheckRanges; ++ i) {
+            int limit = checkRanges[i].limit;
+            int value = checkRanges[i].value;
+    
+            if (start == 0xd800) {
+                // skip surrogates
+                start = limit;
+                continue;
+            }
+    
+            while (start < limit) {
+                if (start <= 0xffff) {
+                    int value2 = trie.getBMPValue((char)start);
+                    if (value != value2) {
+                        errln("serialized trie.getBMPValue(U+"
+                              + Integer.toHexString(start) + " == 0x" 
+                              + Integer.toHexString(value2) + " instead of 0x"
+                              + Integer.toHexString(value));
+                    }
+                    if (!UTF16.isLeadSurrogate((char)start)) {
+                        value2 = trie.getLeadValue((char)start);
+                        if (value != value2) {
+                            errln("serialized trie.getLeadValue(U+"
+                              + Integer.toHexString(start) + " == 0x" 
+                              + Integer.toHexString(value2) + " instead of 0x"
+                              + Integer.toHexString(value));
+                        }
+                    }
+                }
+                int value2 = trie.getCodePointValue(start);
+                if (value != value2) {
+                    errln("serialized trie.getCodePointValue(U+"
+                          + Integer.toHexString(start) + ")==0x" 
+                          + Integer.toHexString(value2) + " instead of 0x" 
+                          + Integer.toHexString(value));
+                }
+                ++ start;
+            }
+        }
+    
+        // enumerate and verify all ranges
+        
+        int enumRanges = 1;
+        TrieIterator iter  = new _testEnumValue(trie);
+        RangeValueIterator.Element result = new RangeValueIterator.Element();
+        while (iter.next(result)) {
+            if (result.start != checkRanges[enumRanges -1].limit 
+                || result.limit != checkRanges[enumRanges].limit
+                || (result.value ^ 0x5555) != checkRanges[enumRanges].value) {
+                errln("utrie_enum() delivers wrong range [U+"
+                      + Integer.toHexString(result.start) + "..U+" 
+                      + Integer.toHexString(result.limit) + "].0x" 
+                      + Integer.toHexString(result.value ^ 0x5555) 
+                      + " instead of [U+"
+                      + Integer.toHexString(checkRanges[enumRanges -1].limit) 
+                      + "..U+" 
+                      + Integer.toHexString(checkRanges[enumRanges].limit) 
+                      + "].0x" 
+                      + Integer.toHexString(checkRanges[enumRanges].value));
+            }
+            enumRanges ++;
+        }
+    
+        // test linear Latin-1 range
+        if (trie.isLatin1Linear()) {
+            for (start = 0; start < 0x100; ++ start) {
+                if (trie.getLatin1LinearValue((char)start) 
+                    != trie.getLeadValue((char)start)) {
+                    errln("trie.getLatin1LinearValue[U+"
+                          + Integer.toHexString(start) + "]=0x"
+                          + Integer.toHexString(
+                                        trie.getLatin1LinearValue((char)start))
+                          + " instead of 0x" 
+                          + Integer.toHexString(
+                                        trie.getLeadValue((char)start)));
+                }
+            }
+        }
+    
+        _testTrieIteration(trie, checkRanges, countCheckRanges);
+    }
+    
+    private void _testTrieRanges2(SetRange setRanges[], 
+                                  int countSetRanges, 
+                                  CheckRange checkRanges[], 
+                                  int countCheckRanges) 
+    {
+        _testTrieRanges(setRanges, countSetRanges, checkRanges, countCheckRanges,
+                        false);
+        
+        _testTrieRanges(setRanges, countSetRanges, checkRanges, countCheckRanges,
+                        true);
+    }
+    
+    private void _testTrieRanges4(SetRange setRanges[], int countSetRanges,
+                                  CheckRange checkRanges[], 
+                                  int countCheckRanges) 
+    {
+        _testTrieRanges2(setRanges, countSetRanges, checkRanges, 
+                         countCheckRanges);
+    }
+    
+    // test data ------------------------------------------------------------
+    
+    /** 
+     * set consecutive ranges, even with value 0
+     */
+    private static SetRange setRanges1[]={
+        new SetRange(0,      0x20,       0,      false),
+        new SetRange(0x20,   0xa7,       0x1234, false),
+        new SetRange(0xa7,   0x3400,     0,      false),
+        new SetRange(0x3400, 0x9fa6,     0x6162, false),
+        new SetRange(0x9fa6, 0xda9e,     0x3132, false),
+        // try to disrupt _testFoldingOffset16()
+        new SetRange(0xdada, 0xeeee,     0x87ff, false), 
+        new SetRange(0xeeee, 0x11111,    1,      false),
+        new SetRange(0x11111, 0x44444,   0x6162, false),
+        new SetRange(0x44444, 0x60003,   0,      false),
+        new SetRange(0xf0003, 0xf0004,   0xf,    false),
+        new SetRange(0xf0004, 0xf0006,   0x10,   false),
+        new SetRange(0xf0006, 0xf0007,   0x11,   false),
+        new SetRange(0xf0007, 0xf0020,   0x12,   false),
+        new SetRange(0xf0020, 0x110000,  0,      false)
+    };
+    
+    private static CheckRange checkRanges1[]={
+        new CheckRange(0,      0), // dummy start range to make _testEnumRange() simpler
+        new CheckRange(0x20,   0),
+        new CheckRange(0xa7,   0x1234),
+        new CheckRange(0x3400, 0),
+        new CheckRange(0x9fa6, 0x6162),
+        new CheckRange(0xda9e, 0x3132),
+        new CheckRange(0xdada, 0),
+        new CheckRange(0xeeee, 0x87ff),
+        new CheckRange(0x11111,1),
+        new CheckRange(0x44444,0x6162),
+        new CheckRange(0xf0003,0),
+        new CheckRange(0xf0004,0xf),
+        new CheckRange(0xf0006,0x10),
+        new CheckRange(0xf0007,0x11),
+        new CheckRange(0xf0020,0x12),
+        new CheckRange(0x110000, 0)
+    };
+    
+    /** 
+     * set some interesting overlapping ranges
+     */
+    private static SetRange setRanges2[]={
+        new SetRange(0x21,   0x7f,       0x5555, true),
+        new SetRange(0x2f800,0x2fedc,    0x7a,   true),
+        new SetRange(0x72,   0xdd,       3,      true),
+        new SetRange(0xdd,   0xde,       4,      false),
+        new SetRange(0x2f987,0x2fa98,    5,      true),
+        new SetRange(0x2f777,0x2f833,    0,      true),
+        new SetRange(0x2f900,0x2ffee,    1,      false),
+        new SetRange(0x2ffee,0x2ffef,    2,      true)
+    };
+    
+    private static CheckRange checkRanges2[]={
+        // dummy start range to make _testEnumRange() simpler
+        new CheckRange(0,      0),       
+        new CheckRange(0x21,   0),
+        new CheckRange(0x72,   0x5555),
+        new CheckRange(0xdd,   3),
+        new CheckRange(0xde,   4),
+        new CheckRange(0x2f833,0),
+        new CheckRange(0x2f987,0x7a),
+        new CheckRange(0x2fa98,5),
+        new CheckRange(0x2fedc,0x7a),
+        new CheckRange(0x2ffee,1),
+        new CheckRange(0x2ffef,2),
+        new CheckRange(0x110000, 0)
+    };
+    
+    /** 
+     * use a non-zero initial value
+     */
+    private static SetRange setRanges3[]={
+        new SetRange(0x31,   0xa4,   1,  false),
+        new SetRange(0x3400, 0x6789, 2,  false),
+        new SetRange(0x30000,0x34567,9,  true),
+        new SetRange(0x45678,0x56789,3,  true)
+    };
+    
+    private static CheckRange checkRanges3[]={
+        // dummy start range, also carries the initial value
+        new CheckRange(0,      9),  
+        new CheckRange(0x31,   9),
+        new CheckRange(0xa4,   1),
+        new CheckRange(0x3400, 9),
+        new CheckRange(0x6789, 2),
+        new CheckRange(0x45678,9),
+        new CheckRange(0x56789,3),
+        new CheckRange(0x110000,9)
+    };
+    
+    public void TestIntTrie() 
+    {
+        _testTrieRanges4(setRanges1, setRanges1.length, checkRanges1, 
+                         checkRanges1.length);
+        _testTrieRanges4(setRanges2, setRanges2.length, checkRanges2, 
+                         checkRanges2.length); 
+        _testTrieRanges4(setRanges3, setRanges3.length, checkRanges3, 
+                         checkRanges3.length);
+    }
+    
+    public void TestCharValues()
+    {
+        CharTrie trie = null;
+        try {
+             trie = UCharacterProperty.getInstance().m_trie_;
+        } catch (Exception e) {
+            warnln("Error creating ucharacter trie");
+            return;
+        }
+        
+        for (int i = 0; i < 0xFFFF; i ++) {
+            if (i < 0xFF 
+                && trie.getBMPValue((char)i) 
+                    != trie.getLatin1LinearValue((char)i)) {
+                errln("For latin 1 codepoint, getBMPValue should be the same " +
+                       "as getLatin1LinearValue");
+            }
+            if (trie.getBMPValue((char)i) != trie.getCodePointValue(i)) {
+                errln("For BMP codepoint, getBMPValue should be the same " +
+                       "as getCodepointValue");
+            }
+        }
+        for (int i = 0x10000; i < 0x10ffff; i ++) {
+            char lead = UTF16.getLeadSurrogate(i);
+            char trail = UTF16.getTrailSurrogate(i);
+            char value = trie.getCodePointValue(i);
+            if (value != trie.getSurrogateValue(lead, trail) ||
+                value != trie.getTrailValue(trie.getLeadValue(lead), 
+                                            trail)) {
+                errln("For Non-BMP codepoints, getSurrogateValue should be "
+                      + "the same s getCodepointValue and getTrailValue");
+            }        
+        }
+    }
+
+    private static class DummyGetFoldingOffset implements Trie.DataManipulate {
+        public int getFoldingOffset(int value) {
+            return -1; /* never get non-initialValue data for supplementary code points */
+        }
+    }
+
+    public void TestDummyCharTrie() {
+        CharTrie trie;
+        final int initialValue=0x313, leadUnitValue=0xaffe; 
+        int value;
+        int c;
+        trie=new CharTrie(initialValue, leadUnitValue, new DummyGetFoldingOffset());
+
+        /* test that all code points have initialValue */
+        for(c=0; c<=0x10ffff; ++c) {
+            value=trie.getCodePointValue(c);
+            if(value!=initialValue) {
+                errln("CharTrie/dummy.getCodePointValue(c)(U+"+hex(c)+")=0x"+hex(value)+" instead of 0x"+hex(initialValue));
+            }
+        }
+
+        /* test that the lead surrogate code units have leadUnitValue */
+        for(c=0xd800; c<=0xdbff; ++c) {
+            value=trie.getLeadValue((char)c);
+            if(value!=leadUnitValue) {
+                errln("CharTrie/dummy.getLeadValue(c)(U+"+hex(c)+")=0x"+hex(value)+" instead of 0x"+hex(leadUnitValue));
+            }
+        }
+    }
+
+    public void TestDummyIntTrie() {
+        IntTrie trie;
+        final int initialValue=0x01234567, leadUnitValue=0x89abcdef; 
+        int value;
+        int c;
+        trie=new IntTrie(initialValue, leadUnitValue, new DummyGetFoldingOffset());
+
+        /* test that all code points have initialValue */
+        for(c=0; c<=0x10ffff; ++c) {
+            value=trie.getCodePointValue(c);
+            if(value!=initialValue) {
+                errln("IntTrie/dummy.getCodePointValue(c)(U+"+hex(c)+")=0x"+hex(value)+" instead of 0x"+hex(initialValue));
+            }
+        }
+
+        /* test that the lead surrogate code units have leadUnitValue */
+        for(c=0xd800; c<=0xdbff; ++c) {
+            value=trie.getLeadValue((char)c);
+            if(value!=leadUnitValue) {
+                errln("IntTrie/dummy.getLeadValue(c)(U+"+hex(c)+")=0x"+hex(value)+" instead of 0x"+hex(leadUnitValue));
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/ULocaleTest.java b/src/com/ibm/icu/dev/test/util/ULocaleTest.java
new file mode 100644
index 0000000..80435de
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/ULocaleTest.java
@@ -0,0 +1,3698 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2009, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: January 14 2004
+* Since: ICU 2.8
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.TreeMap;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.NumberFormat.SimpleNumberFormatFactory;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+public class ULocaleTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new ULocaleTest().run(args);
+    }
+
+    public void TestCalendar() {
+        // TODO The CalendarFactory mechanism is not public,
+        // so we can't test it yet.  If it becomes public,
+        // enable this code.
+
+        // class CFactory implements CalendarFactory {
+        //     Locale loc;
+        //     Calendar proto;
+        //     public CFactory(Locale locale, Calendar prototype) {
+        //         loc = locale;
+        //         proto = prototype;
+        //     }
+        //     public Calendar create(TimeZone tz, Locale locale) {
+        //         // ignore tz -- not relevant to this test
+        //         return locale.equals(loc) ?
+        //             (Calendar) proto.clone() : null;
+        //     }
+        //     public String factoryName() {
+        //         return "CFactory";
+        //     }
+        // };
+
+        checkService("en_US_BROOKLYN", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return Calendar.getInstance(req);
+                }
+                // }, null, new Registrar() {
+                //     public Object register(ULocale loc, Object prototype) {
+                //         CFactory f = new CFactory(loc, (Calendar) prototype);
+                //         return Calendar.register(f, loc);
+                //     }
+                //     public boolean unregister(Object key) {
+                //         return Calendar.unregister(key);
+                //     }
+            });
+    }
+
+    // Currency getLocale API is obsolete in 3.2.  Since it now returns ULocale.ROOT,
+    // and this is not equal to the requested locale zh_TW_TAIPEI, the
+    // checkService call would always fail.  So we now omit the test.
+    /*
+    public void TestCurrency() {
+        checkService("zh_TW_TAIPEI", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return Currency.getInstance(req);
+                }
+            }, null, new Registrar() {
+                    public Object register(ULocale loc, Object prototype) {
+                        return Currency.registerInstance((Currency) prototype, loc);
+                    }
+                    public boolean unregister(Object key) {
+                        return Currency.unregister(key);
+                    }
+                });
+    }
+    */
+
+    public void TestBreakIterator() {
+        checkService("ja_JP_OSAKA", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return BreakIterator.getWordInstance(req);
+                }
+            }, null, new Registrar() {
+                    public Object register(ULocale loc, Object prototype) {
+                        return BreakIterator.registerInstance(
+                                                              (BreakIterator) prototype,
+                                                              loc, BreakIterator.KIND_WORD);
+                    }
+                    public boolean unregister(Object key) {
+                        return BreakIterator.unregister(key);
+                    }
+                });
+    }
+
+    public void TestCollator() {
+        checkService("ja_JP_YOKOHAMA", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return Collator.getInstance(req);
+                }
+            }, null, new Registrar() {
+                    public Object register(ULocale loc, Object prototype) {
+                        return Collator.registerInstance((Collator) prototype, loc);
+                    }
+                    public boolean unregister(Object key) {
+                        return Collator.unregister(key);
+                    }
+                });
+    }
+
+    public void TestDateFormat() {
+        checkService("de_CH_ZURICH", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return DateFormat.getDateInstance(DateFormat.DEFAULT, req);
+                }
+            }, new Subobject() {
+                    public Object get(Object parent) {
+                        return ((SimpleDateFormat) parent).getDateFormatSymbols();
+                    }
+                }, null);
+    }
+
+    public void TestNumberFormat() {
+        class NFactory extends SimpleNumberFormatFactory {
+            NumberFormat proto;
+            ULocale locale;
+            public NFactory(ULocale loc, NumberFormat fmt) {
+                super(loc);
+                this.locale = loc;
+                this.proto = fmt;
+            }
+            public NumberFormat createFormat(ULocale loc, int formatType) {
+                return (NumberFormat) (locale.equals(loc) ?
+                                       proto.clone() : null);
+            }
+        }
+
+        checkService("fr_FR_NICE", new ServiceFacade() {
+                public Object create(ULocale req) {
+                    return NumberFormat.getInstance(req);
+                }
+            }, new Subobject() {
+                    public Object get(Object parent) {
+                        return ((DecimalFormat) parent).getDecimalFormatSymbols();
+                    }
+                }, new Registrar() {
+                        public Object register(ULocale loc, Object prototype) {
+                            NFactory f = new NFactory(loc, (NumberFormat) prototype);
+                            return NumberFormat.registerFactory(f);
+                        }
+                        public boolean unregister(Object key) {
+                            return NumberFormat.unregister(key);
+                        }
+                    });
+    }
+
+    public void TestSetULocaleKeywords() {
+        ULocale uloc = new ULocale("en_Latn_US");
+        uloc = uloc.setKeywordValue("Foo", "FooValue");
+        if (!"en_Latn_US@foo=FooValue".equals(uloc.getName())) {
+            errln("failed to add foo keyword, got: " + uloc.getName());
+        }
+        uloc = uloc.setKeywordValue("Bar", "BarValue");
+        if (!"en_Latn_US@bar=BarValue;foo=FooValue".equals(uloc.getName())) {
+            errln("failed to add bar keyword, got: " + uloc.getName());
+        }
+        uloc = uloc.setKeywordValue("BAR", "NewBarValue");
+        if (!"en_Latn_US@bar=NewBarValue;foo=FooValue".equals(uloc.getName())) {
+            errln("failed to change bar keyword, got: " + uloc.getName());
+        }
+        uloc = uloc.setKeywordValue("BaR", null);
+        if (!"en_Latn_US@foo=FooValue".equals(uloc.getName())) {
+            errln("failed to delete bar keyword, got: " + uloc.getName());
+        }
+        uloc = uloc.setKeywordValue(null, null);
+        if (!"en_Latn_US".equals(uloc.getName())) {
+            errln("failed to delete all keywords, got: " + uloc.getName());
+        }
+    }
+
+    /*
+     * ticket#5060
+     */
+    public void TestJavaLocaleCompatibility() {
+        Locale backupDefault = Locale.getDefault();
+        
+        // Java Locale for ja_JP with Japanese calendar
+        Locale jaJPJP = new Locale("ja", "JP", "JP");
+        Locale jaJP = new Locale("ja", "JP");
+ 
+        Calendar cal = Calendar.getInstance(jaJPJP);
+        String caltype = cal.getType();
+        if (!caltype.equals("japanese")) {
+            errln("FAIL: Invalid calendar type: " + caltype + " /expected: japanese");
+        }
+
+        cal = Calendar.getInstance(jaJP);
+        caltype = cal.getType();
+        if (!caltype.equals("gregorian")) {
+            errln("FAIL: Invalid calendar type: " + caltype + " /expected: gregorian");
+        }
+
+        // Default locale
+        Locale.setDefault(jaJPJP);
+        ULocale defUloc = ULocale.getDefault();
+        if (!defUloc.toString().equals("ja_JP@calendar=japanese")) {
+            errln("FAIL: Invalid default ULocale: " + defUloc + " /expected: ja_JP@calendar=japanese");
+        }
+        // Check calendar type
+        cal = Calendar.getInstance();
+        caltype = cal.getType();
+        if (!caltype.equals("japanese")) {
+            errln("FAIL: Invalid calendar type: " + caltype + " /expected: japanese");
+        }
+        Locale.setDefault(backupDefault);
+
+        // Set default via ULocale
+        ULocale ujaJP_calJP = new ULocale("ja_JP@calendar=japanese");
+        ULocale.setDefault(ujaJP_calJP);
+        if (!Locale.getDefault().equals(jaJPJP)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale ja_JP_JP /actual: " + Locale.getDefault());
+        }
+        // Ticket#6672 - missing keywords
+        defUloc = ULocale.getDefault();
+        if (!defUloc.equals(ujaJP_calJP)) {
+            errln("FAIL: ULocale#getDefault returned " + defUloc + " /expected: ja_JP@calendar=japanese");
+        }
+        // Set a incompatible base locale via Locale#setDefault
+        Locale.setDefault(Locale.US);
+        defUloc = ULocale.getDefault();
+        if (defUloc.equals(ujaJP_calJP)) {
+            errln("FAIL: ULocale#getDefault returned " + defUloc + " /expected: " + ULocale.forLocale(Locale.US));
+        }
+
+        Locale.setDefault(backupDefault);
+
+        // We also want to map ICU locale ja@calendar=japanese to Java ja_JP_JP
+        ULocale.setDefault(new ULocale("ja@calendar=japanese"));
+        if (!Locale.getDefault().equals(jaJPJP)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale ja_JP_JP /actual: " + Locale.getDefault());
+        }
+        Locale.setDefault(backupDefault);
+
+        // Java no_NO_NY
+        Locale noNONY = new Locale("no", "NO", "NY");
+        Locale.setDefault(noNONY);
+        defUloc = ULocale.getDefault();
+        if (defUloc.toString().equals("nn_NY")) {
+            errln("FAIL: Invalid default ULocale: " + defUloc + " /expected: nn_NY");
+        }
+        Locale.setDefault(backupDefault);
+
+        // Set default via ULocale
+        ULocale.setDefault(new ULocale("nn_NO"));
+        if (!Locale.getDefault().equals(noNONY)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale no_NO_NY /actual: " + Locale.getDefault());
+        }
+        Locale.setDefault(backupDefault);        
+
+        // We also want to map ICU locale nn to Java no_NO_NY
+        ULocale.setDefault(new ULocale("nn"));
+        if (!Locale.getDefault().equals(noNONY)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale no_NO_NY /actual: " + Locale.getDefault());
+        }
+        Locale.setDefault(backupDefault);
+    }
+    
+    // ================= Infrastructure =================
+
+    /**
+     * Compare two locale IDs.  If they are equal, return 0.  If `string'
+     * starts with `prefix' plus an additional element, that is, string ==
+     * prefix + '_' + x, then return 1.  Otherwise return a value < 0.
+     */
+    static int loccmp(String string, String prefix) {
+        int slen = string.length(),
+            plen = prefix.length();
+        /* 'root' is "less than" everything */
+        if (prefix.equals("root")) {
+            return string.equals("root") ? 0 : 1;
+        }
+        // ON JAVA (only -- not on C -- someone correct me if I'm wrong)
+        // consider "" to be an alternate name for "root".
+        if (plen == 0) {
+            return slen == 0 ? 0 : 1;
+        }
+        if (!string.startsWith(prefix)) return -1; /* mismatch */
+        if (slen == plen) return 0;
+        if (string.charAt(plen) == '_') return 1;
+        return -2; /* false match, e.g. "en_USX" cmp "en_US" */
+    }
+
+    /**
+     * Check the relationship between requested locales, and report problems.
+     * The caller specifies the expected relationships between requested
+     * and valid (expReqValid) and between valid and actual (expValidActual).
+     * Possible values are:
+     * "gt" strictly greater than, e.g., en_US > en
+     * "ge" greater or equal,      e.g., en >= en
+     * "eq" equal,                 e.g., en == en
+     */
+    void checklocs(String label,
+                   String req,
+                   Locale validLoc,
+                   Locale actualLoc,
+                   String expReqValid,
+                   String expValidActual) {
+        String valid = validLoc.toString();
+        String actual = actualLoc.toString();
+        int reqValid = loccmp(req, valid);
+        int validActual = loccmp(valid, actual);
+    boolean reqOK = (expReqValid.equals("gt") && reqValid > 0) ||
+        (expReqValid.equals("ge") && reqValid >= 0) ||
+        (expReqValid.equals("eq") && reqValid == 0);
+    boolean valOK = (expValidActual.equals("gt") && validActual > 0) ||
+        (expValidActual.equals("ge") && validActual >= 0) ||
+        (expValidActual.equals("eq") && validActual == 0);
+        if (reqOK && valOK) {
+            logln("Ok: " + label + "; req=" + req + ", valid=" + valid +
+                  ", actual=" + actual);
+        } else {
+            errln("FAIL: " + label + "; req=" + req + ", valid=" + valid +
+                  ", actual=" + actual +
+          (reqOK ? "" : "\n  req !" + expReqValid + " valid") +
+          (valOK ? "" : "\n  val !" + expValidActual + " actual"));
+        }
+    }
+
+    /**
+     * Interface used by checkService defining a protocol to create an
+     * object, given a requested locale.
+     */
+    interface ServiceFacade {
+        Object create(ULocale requestedLocale);
+    }
+
+    /**
+     * Interface used by checkService defining a protocol to get a
+     * contained subobject, given its parent object.
+     */
+    interface Subobject {
+        Object get(Object parent);
+    }
+
+    /**
+     * Interface used by checkService defining a protocol to register
+     * and unregister a service object prototype.
+     */
+    interface Registrar {
+        Object register(ULocale loc, Object prototype);
+        boolean unregister(Object key);
+    }
+
+    /**
+     * Use reflection to call getLocale() on the given object to
+     * determine both the valid and the actual locale.  Verify these
+     * for correctness.
+     */
+    void checkObject(String requestedLocale, Object obj,
+                     String expReqValid, String expValidActual) {
+        Class[] getLocaleParams = new Class[] { ULocale.Type.class };
+        try {
+            Class cls = obj.getClass();
+            Method getLocale = cls.getMethod("getLocale", getLocaleParams);
+            ULocale valid = (ULocale) getLocale.invoke(obj, new Object[] {
+                ULocale.VALID_LOCALE });
+            ULocale actual = (ULocale) getLocale.invoke(obj, new Object[] {
+                ULocale.ACTUAL_LOCALE });
+            checklocs(cls.getName(), requestedLocale,
+                      valid.toLocale(), actual.toLocale(),
+                      expReqValid, expValidActual);
+        }
+
+        // Make the following exceptions _specific_ -- do not
+        // catch(Exception), since that will catch the exception
+        // that errln throws.
+        catch(NoSuchMethodException e1) {
+        // no longer an error, Currency has no getLocale
+            // errln("FAIL: reflection failed: " + e1);
+        } catch(SecurityException e2) {
+            errln("FAIL: reflection failed: " + e2);
+        } catch(IllegalAccessException e3) {
+            errln("FAIL: reflection failed: " + e3);
+        } catch(IllegalArgumentException e4) {
+            errln("FAIL: reflection failed: " + e4);
+        } catch(InvocationTargetException e5) {
+        // no longer an error, Currency has no getLocale
+            // errln("FAIL: reflection failed: " + e5);
+        }
+    }
+
+    /**
+     * Verify the correct getLocale() behavior for the given service.
+     * @param requestedLocale the locale to request.  This MUST BE
+     * FAKE.  In other words, it should be something like
+     * en_US_FAKEVARIANT so this method can verify correct fallback
+     * behavior.
+     * @param svc a factory object that can create the object to be
+     * tested.  This isn't necessary here (one could just pass in the
+     * object) but is required for the overload of this method that
+     * takes a Registrar.
+     */
+    void checkService(String requestedLocale, ServiceFacade svc) {
+        checkService(requestedLocale, svc, null, null);
+    }
+
+    /**
+     * Verify the correct getLocale() behavior for the given service.
+     * @param requestedLocale the locale to request.  This MUST BE
+     * FAKE.  In other words, it should be something like
+     * en_US_FAKEVARIANT so this method can verify correct fallback
+     * behavior.
+     * @param svc a factory object that can create the object to be
+     * tested.
+     * @param sub an object that can be used to retrieve a subobject
+     * which should also be tested.  May be null.
+     * @param reg an object that supplies the registration and
+     * unregistration functionality to be tested.  May be null.
+     */
+    void checkService(String requestedLocale, ServiceFacade svc,
+                      Subobject sub, Registrar reg) {
+        ULocale req = new ULocale(requestedLocale);
+        Object obj = svc.create(req);
+        checkObject(requestedLocale, obj, "gt", "ge");
+        if (sub != null) {
+            Object subobj = sub.get(obj);
+            checkObject(requestedLocale, subobj, "gt", "ge");
+        }
+        if (reg != null) {
+            logln("Info: Registering service");
+            Object key = reg.register(req, obj);
+            Object objReg = svc.create(req);
+            checkObject(requestedLocale, objReg, "eq", "eq");
+            if (sub != null) {
+                Object subobj = sub.get(obj);
+                // Assume subobjects don't come from services, so
+                // their metadata should be structured normally.
+                checkObject(requestedLocale, subobj, "gt", "ge");
+            }
+            logln("Info: Unregistering service");
+            if (!reg.unregister(key)) {
+                errln("FAIL: unregister failed");
+            }
+            Object objUnreg = svc.create(req);
+            checkObject(requestedLocale, objUnreg, "gt", "ge");
+        }
+    }
+    private static final int LOCALE_SIZE = 9;
+    private static final String[][] rawData2 = new String[][]{
+        /* language code */
+        {   "en",   "fr",   "ca",   "el",   "no",   "zh",   "de",   "es",  "ja"    },
+        /* script code */
+        {   "",     "",     "",     "",     "",     "Hans", "", "", ""  },
+        /* country code */
+        {   "US",   "FR",   "ES",   "GR",   "NO",   "CN", "DE", "", "JP"    },
+        /* variant code */
+        {   "",     "",     "",     "",     "NY",   "", "", "", ""      },
+        /* full name */
+        {   "en_US",    "fr_FR",    "ca_ES",
+            "el_GR",    "no_NO_NY", "zh_Hans_CN",
+            "de_DE@collation=phonebook", "es@collation=traditional",  "ja_JP@calendar=japanese" },
+        /* ISO-3 language */
+        {   "eng",  "fra",  "cat",  "ell",  "nor",  "zho", "deu", "spa", "jpn"   },
+        /* ISO-3 country */
+        {   "USA",  "FRA",  "ESP",  "GRC",  "NOR",  "CHN", "DEU", "", "JPN"   },
+        /* LCID */
+        {   "409", "40c", "403", "408", "814",  "804", "407", "a", "411"     },
+
+        /* display language (English) */
+        {   "English",  "French",   "Catalan", "Greek",    "Norwegian", "Chinese", "German", "Spanish", "Japanese"    },
+        /* display script code (English) */
+        {   "",     "",     "",     "",     "",     "Simplified Han", "", "", ""       },
+        /* display country (English) */
+        {   "United States",    "France",   "Spain",  "Greece",   "Norway", "China", "Germany", "", "Japan"       },
+        /* display variant (English) */
+        {   "",     "",     "",     "",     "NY",  "", "", "", ""       },
+        /* display name (English) */
+        {   "English (United States)", "French (France)", "Catalan (Spain)",
+            "Greek (Greece)", "Norwegian (Norway, NY)", "Chinese (Simplified Han, China)",
+            "German (Germany, Collation=Phonebook Order)", "Spanish (Collation=Traditional)", "Japanese (Japan, Calendar=Japanese Calendar)" },
+
+        /* display language (French) */
+        {   "anglais",  "fran\\u00E7ais",   "catalan", "grec",    "norv\\u00E9gien",    "chinois", "allemand", "espagnol", "japonais"     },
+        /* display script code (French) */
+        {   "",     "",     "",     "",     "",     "Hans", "", "", ""         },
+        /* display country (French) */
+        {   "\\u00C9tats-Unis",    "France",   "Espagne",  "Gr\\u00E8ce",   "Norv\\u00E8ge",    "Chine", "Allemagne", "", "Japon"       },
+        /* display variant (French) */
+        {   "",     "",     "",     "",     "NY",   "", "", "", ""       },
+        /* display name (French) */
+        {   "anglais (\\u00C9tats-Unis)", "fran\\u00E7ais (France)", "catalan (Espagne)",
+            "grec (Gr\\u00E8ce)", "norv\\u00E9gien (Norv\\u00E8ge, NY)",  "chinois (Hans, Chine)",
+            "allemand (Allemagne, Ordonnancement=Ordre de l'annuaire)", "espagnol (Ordonnancement=Ordre traditionnel)", "japonais (Japon, Calendrier=Calendrier japonais)" },
+
+        /* display language (Catalan) */
+        {   "angl\\u00E8s", "franc\\u00E8s", "catal\\u00E0", "grec",  "noruec", "xin\\u00E9s", "alemany", "espanyol", "japon\\u00E8s"    },
+        /* display script code (Catalan) */
+        {   "",     "",     "",     "",     "",     "Hans", "", "", ""         },
+        /* display country (Catalan) */
+        {   "Estats Units", "Fran\\u00E7a", "Espanya",  "Gr\\u00E8cia", "Noruega",  "Xina", "Alemanya", "", "Jap\\u00F3"    },
+        /* display variant (Catalan) */
+        {   "", "", "",                    "", "NY",    "", "", "", ""    },
+        /* display name (Catalan) */
+        {   "angl\\u00E8s (Estats Units)", "franc\\u00E8s (Fran\\u00E7a)", "catal\\u00E0 (Espanya)",
+            "grec (Gr\\u00E8cia)", "noruec (Noruega, NY)", "xin\\u00E9s (Hans, Xina)",
+            "alemany (Alemanya, COLLATION=PHONEBOOK)", "espanyol (COLLATION=TRADITIONAL)", "japon\\u00E8s (Jap\\u00F3, CALENDAR=JAPANESE)" },
+
+        /* display language (Greek) */
+        {
+            "\\u0391\\u03b3\\u03b3\\u03bb\\u03b9\\u03ba\\u03ac",
+            "\\u0393\\u03b1\\u03bb\\u03bb\\u03b9\\u03ba\\u03ac",
+            "\\u039a\\u03b1\\u03c4\\u03b1\\u03bb\\u03b1\\u03bd\\u03b9\\u03ba\\u03ac",
+            "\\u0395\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac",
+            "\\u039d\\u03bf\\u03c1\\u03b2\\u03b7\\u03b3\\u03b9\\u03ba\\u03ac",
+            "\\u039A\\u03B9\\u03BD\\u03B5\\u03B6\\u03B9\\u03BA\\u03AC",
+            "\\u0393\\u03B5\\u03C1\\u03BC\\u03B1\\u03BD\\u03B9\\u03BA\\u03AC",
+            "\\u0399\\u03C3\\u03C0\\u03B1\\u03BD\\u03B9\\u03BA\\u03AC",
+            "\\u0399\\u03B1\\u03C0\\u03C9\\u03BD\\u03B9\\u03BA\\u03AC"
+        },
+        /* display script code (Greek) */
+        {   "",     "",     "",     "",     "",     "Hans", "", "", ""         },
+        /* display country (Greek) */
+        {
+            "\\u0397\\u03bd\\u03c9\\u03bc\\u03ad\\u03bd\\u03b5\\u03c2 \\u03a0\\u03bf\\u03bb\\u03b9\\u03c4\\u03b5\\u03af\\u03b5\\u03c2",
+            "\\u0393\\u03b1\\u03bb\\u03bb\\u03af\\u03b1",
+            "\\u0399\\u03c3\\u03c0\\u03b1\\u03bd\\u03af\\u03b1",
+            "\\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1",
+            "\\u039d\\u03bf\\u03c1\\u03b2\\u03b7\\u03b3\\u03af\\u03b1",
+            "\\u039A\\u03AF\\u03BD\\u03B1",
+            "\\u0393\\u03B5\\u03C1\\u03BC\\u03B1\\u03BD\\u03AF\\u03B1",
+            "",
+            "\\u0399\\u03B1\\u03C0\\u03C9\\u03BD\\u03AF\\u03B1"
+        },
+        /* display variant (Greek) */
+        {   "", "", "", "", "NY", "", "", "", ""    }, /* TODO: currently there is no translation for NY in Greek fix this test when we have it */
+        /* display name (Greek) */
+        {
+            "\\u0391\\u03b3\\u03b3\\u03bb\\u03b9\\u03ba\\u03ac (\\u0397\\u03bd\\u03c9\\u03bc\\u03ad\\u03bd\\u03b5\\u03c2 \\u03a0\\u03bf\\u03bb\\u03b9\\u03c4\\u03b5\\u03af\\u03b5\\u03c2)",
+            "\\u0393\\u03b1\\u03bb\\u03bb\\u03b9\\u03ba\\u03ac (\\u0393\\u03b1\\u03bb\\u03bb\\u03af\\u03b1)",
+            "\\u039a\\u03b1\\u03c4\\u03b1\\u03bb\\u03b1\\u03bd\\u03b9\\u03ba\\u03ac (\\u0399\\u03c3\\u03c0\\u03b1\\u03bd\\u03af\\u03b1)",
+            "\\u0395\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac (\\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1)",
+            "\\u039d\\u03bf\\u03c1\\u03b2\\u03b7\\u03b3\\u03b9\\u03ba\\u03ac (\\u039d\\u03bf\\u03c1\\u03b2\\u03b7\\u03b3\\u03af\\u03b1, NY)",
+            "\\u039A\\u03B9\\u03BD\\u03B5\\u03B6\\u03B9\\u03BA\\u03AC (Hans, \\u039A\\u03AF\\u03BD\\u03B1)",
+            "\\u0393\\u03B5\\u03C1\\u03BC\\u03B1\\u03BD\\u03B9\\u03BA\\u03AC (\\u0393\\u03B5\\u03C1\\u03BC\\u03B1\\u03BD\\u03AF\\u03B1, COLLATION=PHONEBOOK)",
+            "\\u0399\\u03C3\\u03C0\\u03B1\\u03BD\\u03B9\\u03BA\\u03AC (COLLATION=TRADITIONAL)",
+            "\\u0399\\u03B1\\u03C0\\u03C9\\u03BD\\u03B9\\u03BA\\u03AC (\\u0399\\u03B1\\u03C0\\u03C9\\u03BD\\u03AF\\u03B1, CALENDAR=JAPANESE)"
+        }
+    };
+//    private static final int ENGLISH = 0;
+//    private static final int FRENCH = 1;
+//    private static final int CATALAN = 2;
+//    private static final int GREEK = 3;
+//    private static final int NORWEGIAN = 4;
+    private static final int LANG = 0;
+    private static final int SCRIPT = 1;
+    private static final int CTRY = 2;
+    private static final int VAR = 3;
+    private static final int NAME = 4;
+//    private static final int LANG3 = 5;
+//    private static final int CTRY3 = 6;
+//    private static final int LCID = 7;
+//    private static final int DLANG_EN = 8;
+//    private static final int DSCRIPT_EN = 9;
+//    private static final int DCTRY_EN = 10;
+//    private static final int DVAR_EN = 11;
+//    private static final int DNAME_EN = 12;
+//    private static final int DLANG_FR = 13;
+//    private static final int DSCRIPT_FR = 14;
+//    private static final int DCTRY_FR = 15;
+//    private static final int DVAR_FR = 16;
+//    private static final int DNAME_FR = 17;
+//    private static final int DLANG_CA = 18;
+//    private static final int DSCRIPT_CA = 19;
+//    private static final int DCTRY_CA = 20;
+//    private static final int DVAR_CA = 21;
+//    private static final int DNAME_CA = 22;
+//    private static final int DLANG_EL = 23;
+//    private static final int DSCRIPT_EL = 24;
+//    private static final int DCTRY_EL = 25;
+//    private static final int DVAR_EL = 26;
+//    private static final int DNAME_EL = 27;
+
+    public void TestBasicGetters() {
+        int i;
+        logln("Testing Basic Getters\n");
+        for (i = 0; i < LOCALE_SIZE; i++) {
+            String testLocale=(rawData2[NAME][i]);
+            logln("Testing "+ testLocale+".....\n");
+
+            String lang =ULocale.getLanguage(testLocale);
+            if (0 !=lang.compareTo(rawData2[LANG][i]))    {
+                errln("  Language code mismatch: "+lang+" versus "+  rawData2[LANG][i]);
+            }
+
+            String ctry=ULocale.getCountry(testLocale);
+            if (0 !=ctry.compareTo(rawData2[CTRY][i]))    {
+                errln("  Country code mismatch: "+ctry+" versus "+  rawData2[CTRY][i]);
+            }
+
+            String var=ULocale.getVariant(testLocale);
+            if (0 !=var.compareTo(rawData2[VAR][i]))    {
+                errln("  Variant code mismatch: "+var+" versus "+  rawData2[VAR][i]);
+            }
+
+            String name = ULocale.getName(testLocale);
+            if (0 !=name.compareTo(rawData2[NAME][i]))    {
+                errln("  Name mismatch: "+name+" versus "+  rawData2[NAME][i]);
+            }
+
+        }
+    }
+
+    public void TestPrefixes() {
+        // POSIX ids are no longer handled by getName, so POSIX failures are ignored
+        final String [][] testData = new String[][]{
+            /* null canonicalize() column means "expect same as getName()" */
+            {"sv", "", "FI", "AL", "sv-fi-al", "sv_FI_AL", null},
+            {"en", "", "GB", "", "en-gb", "en_GB", null},
+            {"i-hakka", "", "MT", "XEMXIJA", "i-hakka_MT_XEMXIJA", "i-hakka_MT_XEMXIJA", null},
+            {"i-hakka", "", "CN", "", "i-hakka_CN", "i-hakka_CN", null},
+            {"i-hakka", "", "MX", "", "I-hakka_MX", "i-hakka_MX", null},
+            {"x-klingon", "", "US", "SANJOSE", "X-KLINGON_us_SANJOSE", "x-klingon_US_SANJOSE", null},
+
+            {"mr", "", "", "", "mr.utf8", "mr.utf8", "mr"},
+            {"de", "", "TV", "", "de-tv.koi8r", "de_TV.koi8r", "de_TV"},
+            {"x-piglatin", "", "ML", "", "x-piglatin_ML.MBE", "x-piglatin_ML.MBE", "x-piglatin_ML"},  /* Multibyte English */
+            {"i-cherokee", "","US", "", "i-Cherokee_US.utf7", "i-cherokee_US.utf7", "i-cherokee_US"},
+            {"x-filfli", "", "MT", "FILFLA", "x-filfli_MT_FILFLA.gb-18030", "x-filfli_MT_FILFLA.gb-18030", "x-filfli_MT_FILFLA"},
+            {"no", "", "NO", "NY_B", "no-no-ny.utf32@B", "no_NO_NY.utf32@B", "no_NO_NY_B"},
+            {"no", "", "NO", "B",  "no-no.utf32@B", "no_NO.utf32@B", "no_NO_B"},
+            {"no", "", "",   "NY", "no__ny", "no__NY", null},
+            {"no", "", "",   "NY", "no@ny", "no@ny", "no__NY"},
+            {"el", "Latn", "", "", "el-latn", "el_Latn", null},
+            {"en", "Cyrl", "RU", "", "en-cyrl-ru", "en_Cyrl_RU", null},
+            {"zh", "Hant", "TW", "STROKE", "zh-hant_TW_STROKE", "zh_Hant_TW_STROKE", "zh_Hant_TW@collation=stroke"},
+            {"zh", "Hant", "CN", "STROKE", "zh-hant_CN_STROKE", "zh_Hant_CN_STROKE", "zh_Hant_CN@collation=stroke"},
+            {"zh", "Hant", "TW", "PINYIN", "zh-hant_TW_PINYIN", "zh_Hant_TW_PINYIN", "zh_Hant_TW@collation=pinyin"},
+            {"qq", "Qqqq", "QQ", "QQ", "qq_Qqqq_QQ_QQ", "qq_Qqqq_QQ_QQ", null},
+            {"qq", "Qqqq", "", "QQ", "qq_Qqqq__QQ", "qq_Qqqq__QQ", null},
+            {"12", "3456", "78", "90", "12_3456_78_90", "12_3456_78_90", null}, /* total garbage */
+
+            // odd cases
+            {"", "", "", "", "@FOO=bar", "@foo=bar", null},
+            {"", "", "", "", "_@FOO=bar", "@foo=bar", null},
+            {"", "", "", "", "__@FOO=bar", "@foo=bar", null},
+            {"", "", "", "FOO", "__foo@FOO=bar", "__FOO@foo=bar", null}, // we have some of these prefixes
+        };
+
+        String loc, buf,buf1;
+        final String [] testTitles = {
+            "ULocale.getLanguage()",
+            "ULocale.getScript()",
+            "ULocale.getCountry()",
+            "ULocale.getVariant()",
+            "name",
+            "ULocale.getName()",
+            "canonicalize()",
+        };
+        ULocale uloc;
+
+        for(int row=0;row<testData.length;row++) {
+            loc = testData[row][NAME];
+            logln("Test #"+row+": "+loc);
+
+            uloc = new ULocale(loc);
+
+            for(int n=0;n<=(NAME+2);n++) {
+                if(n==NAME) continue;
+
+                switch(n) {
+                case LANG:
+                    buf  = ULocale.getLanguage(loc);
+                    buf1 = uloc.getLanguage();
+                    break;
+
+                case SCRIPT:
+                    buf  = ULocale.getScript(loc);
+                    buf1 = uloc.getScript();
+                    break;
+
+                case CTRY:
+                    buf  = ULocale.getCountry(loc);
+                    buf1 = uloc.getCountry();
+                    break;
+
+                case VAR:
+                    buf  = ULocale.getVariant(loc);
+                    buf1 = buf;
+                    break;
+
+                case NAME+1:
+                    buf  = ULocale.getName(loc);
+                    buf1 = uloc.getName();
+                    break;
+
+                case NAME+2:
+                    buf = ULocale.canonicalize(loc);
+                    buf1 = ULocale.createCanonical(loc).getName();
+                    break;
+
+                default:
+                    buf = "**??";
+                    buf1 = buf;
+                }
+
+                logln("#"+row+": "+testTitles[n]+" on "+loc+": -> ["+buf+"]");
+
+                String expected = testData[row][n];
+                if (expected == null && n == (NAME+2)) {
+                    expected = testData[row][NAME+1];
+                }
+
+                // ignore POSIX failures in getName, we don't spec behavior in this case
+                if (n == NAME+1 &&
+                    (expected.indexOf('.') != -1 ||
+                     expected.indexOf('@') != -1)) {
+                    continue;
+                }
+
+                if(buf.compareTo(expected)!=0) {
+                    errln("#"+row+": "+testTitles[n]+" on "+loc+": -> ["+buf+"] (expected '"+expected+"'!)");
+                }
+                if(buf1.compareTo(expected)!=0) {
+                    errln("#"+row+": "+testTitles[n]+" on ULocale object "+loc+": -> ["+buf1+"] (expected '"+expected+"'!)");
+                }
+            }
+        }
+    }
+
+    public void TestObsoleteNames(){
+        final String[][] tests = new String[][]{
+            /* locale, language3, language2, Country3, country2 */
+            { "eng_USA", "eng", "en", "USA", "US" },
+            { "kok",  "kok", "kok", "", "" },
+            { "in",  "ind", "in", "", "" },
+            { "id",  "ind", "id", "", "" }, /* NO aliasing */
+            { "sh",  "srp", "sh", "", "" },
+            { "zz_CS",  "", "zz", "SCG", "CS" },
+            { "zz_FX",  "", "zz", "FXX", "FX" },
+            { "zz_RO",  "", "zz", "ROU", "RO" },
+            { "zz_TP",  "", "zz", "TMP", "TP" },
+            { "zz_TL",  "", "zz", "TLS", "TL" },
+            { "zz_ZR",  "", "zz", "ZAR", "ZR" },
+            { "zz_FXX",  "", "zz", "FXX", "FX" }, /* no aliasing. Doesn't go to PS(PSE). */
+            { "zz_ROM",  "", "zz", "ROU", "RO" },
+            { "zz_ROU",  "", "zz", "ROU", "RO" },
+            { "zz_ZAR",  "", "zz", "ZAR", "ZR" },
+            { "zz_TMP",  "", "zz", "TMP", "TP" },
+            { "zz_TLS",  "", "zz", "TLS", "TL" },
+            { "zz_YUG",  "", "zz", "YUG", "YU" },
+            { "mlt_PSE", "mlt", "mt", "PSE", "PS" },
+            { "iw", "heb", "iw", "", "" },
+            { "ji", "yid", "ji", "", "" },
+            { "jw", "jaw", "jw", "", "" },
+            { "sh", "srp", "sh", "", "" },
+            { "", "", "", "", "" }
+        };
+
+        for(int i=0;i<tests.length;i++){
+            String locale = tests[i][0];
+            logln("** Testing : "+ locale);
+            String buff, buff1;
+            ULocale uloc  = new ULocale(locale);
+
+            buff = ULocale.getISO3Language(locale);
+            if(buff.compareTo(tests[i][1])!=0){
+                errln("FAIL: ULocale.getISO3Language("+locale+")=="+
+                      buff+",\t expected "+tests[i][1]);
+            }else{
+                logln("   ULocale.getISO3Language("+locale+")=="+buff);
+            }
+
+            buff1 = uloc.getISO3Language();
+            if(buff1.compareTo(tests[i][1])!=0){
+                errln("FAIL: ULocale.getISO3Language("+locale+")=="+
+                      buff+",\t expected "+tests[i][1]);
+            }else{
+                logln("   ULocale.getISO3Language("+locale+")=="+buff);
+            }
+
+            buff = ULocale.getLanguage(locale);
+            if(buff.compareTo(tests[i][2])!=0){
+                errln("FAIL: ULocale.getLanguage("+locale+")=="+
+                      buff+",\t expected "+tests[i][2]);
+            }else{
+                logln("   ULocale.getLanguage("+locale+")=="+buff);
+            }
+
+            buff = ULocale.getISO3Country(locale);
+            if(buff.compareTo(tests[i][3])!=0){
+                errln("FAIL: ULocale.getISO3Country("+locale+")=="+
+                      buff+",\t expected "+tests[i][3]);
+            }else{
+                logln("   ULocale.getISO3Country("+locale+")=="+buff);
+            }
+
+            buff1 = uloc.getISO3Country();
+            if(buff1.compareTo(tests[i][3])!=0){
+                errln("FAIL: ULocale.getISO3Country("+locale+")=="+
+                      buff+",\t expected "+tests[i][3]);
+            }else{
+                logln("   ULocale.getISO3Country("+locale+")=="+buff);
+            }
+
+            buff = ULocale.getCountry(locale);
+            if(buff.compareTo(tests[i][4])!=0){
+                errln("FAIL: ULocale.getCountry("+locale+")=="+
+                      buff+",\t expected "+tests[i][4]);
+            }else{
+                logln("   ULocale.getCountry("+locale+")=="+buff);
+            }
+        }
+
+        if (ULocale.getLanguage("iw_IL").compareTo( ULocale.getLanguage("he_IL"))==0) {
+            errln("he,iw ULocale.getLanguage mismatch");
+        }
+
+        String buff = ULocale.getLanguage("kok_IN");
+        if(buff.compareTo("kok")!=0){
+            errln("ULocale.getLanguage(\"kok\") failed. Expected: kok Got: "+buff);
+        }
+    }
+    public void TestCanonicalization(){
+        final String[][]testCases = new String[][]{
+            { "ca_ES_PREEURO", "ca_ES_PREEURO", "ca_ES@currency=ESP" },
+            { "de_AT_PREEURO", "de_AT_PREEURO", "de_AT@currency=ATS" },
+            { "de_DE_PREEURO", "de_DE_PREEURO", "de_DE@currency=DEM" },
+            { "de_LU_PREEURO", "de_LU_PREEURO", "de_LU@currency=EUR" },
+            { "el_GR_PREEURO", "el_GR_PREEURO", "el_GR@currency=GRD" },
+            { "en_BE_PREEURO", "en_BE_PREEURO", "en_BE@currency=BEF" },
+            { "en_IE_PREEURO", "en_IE_PREEURO", "en_IE@currency=IEP" },
+            { "es_ES_PREEURO", "es_ES_PREEURO", "es_ES@currency=ESP" },
+            { "eu_ES_PREEURO", "eu_ES_PREEURO", "eu_ES@currency=ESP" },
+            { "fi_FI_PREEURO", "fi_FI_PREEURO", "fi_FI@currency=FIM" },
+            { "fr_BE_PREEURO", "fr_BE_PREEURO", "fr_BE@currency=BEF" },
+            { "fr_FR_PREEURO", "fr_FR_PREEURO", "fr_FR@currency=FRF" },
+            { "fr_LU_PREEURO", "fr_LU_PREEURO", "fr_LU@currency=LUF" },
+            { "ga_IE_PREEURO", "ga_IE_PREEURO", "ga_IE@currency=IEP" },
+            { "gl_ES_PREEURO", "gl_ES_PREEURO", "gl_ES@currency=ESP" },
+            { "it_IT_PREEURO", "it_IT_PREEURO", "it_IT@currency=ITL" },
+            { "nl_BE_PREEURO", "nl_BE_PREEURO", "nl_BE@currency=BEF" },
+            { "nl_NL_PREEURO", "nl_NL_PREEURO", "nl_NL@currency=NLG" },
+            { "pt_PT_PREEURO", "pt_PT_PREEURO", "pt_PT@currency=PTE" },
+            { "de__PHONEBOOK", "de__PHONEBOOK", "de@collation=phonebook" },
+            { "en_GB_EURO", "en_GB_EURO", "en_GB@currency=EUR" },
+            { "en_GB@EURO", null, "en_GB@currency=EUR" }, /* POSIX ID */
+            { "es__TRADITIONAL", "es__TRADITIONAL", "es@collation=traditional" },
+            { "hi__DIRECT", "hi__DIRECT", "hi@collation=direct" },
+            { "ja_JP_TRADITIONAL", "ja_JP_TRADITIONAL", "ja_JP@calendar=japanese" },
+            { "th_TH_TRADITIONAL", "th_TH_TRADITIONAL", "th_TH@calendar=buddhist" },
+            { "zh_TW_STROKE", "zh_TW_STROKE", "zh_TW@collation=stroke" },
+            { "zh__PINYIN", "zh__PINYIN", "zh@collation=pinyin" },
+            { "zh@collation=pinyin", "zh@collation=pinyin", "zh@collation=pinyin" },
+            { "zh_CN@collation=pinyin", "zh_CN@collation=pinyin", "zh_CN@collation=pinyin" },
+            { "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin", "zh_CN_CA@collation=pinyin" },
+            { "en_US_POSIX", "en_US_POSIX", "en_US_POSIX" },
+            { "hy_AM_REVISED", "hy_AM_REVISED", "hy_AM_REVISED" },
+            { "no_NO_NY", "no_NO_NY", "no_NO_NY" /* not: "nn_NO" [alan ICU3.0] */ },
+            { "no@ny", null, "no__NY" /* not: "nn" [alan ICU3.0] */ }, /* POSIX ID */
+            { "no-no.utf32@B", null, "no_NO_B" /* not: "nb_NO_B" [alan ICU3.0] */ }, /* POSIX ID */
+            { "qz-qz@Euro", null, "qz_QZ@currency=EUR" }, /* qz-qz uses private use iso codes */
+            { "en-BOONT", "en__BOONT", "en__BOONT" }, /* registered name */
+            { "de-1901", "de_1901", "de__1901" }, /* registered name */
+            { "de-1906", "de_1906", "de__1906" }, /* registered name */
+            { "sr-SP-Cyrl", "sr_SP_CYRL", "sr_Cyrl_RS" }, /* .NET name */
+            { "sr-SP-Latn", "sr_SP_LATN", "sr_Latn_RS" }, /* .NET name */
+            { "sr_YU_CYRILLIC", "sr_YU_CYRILLIC", "sr_Cyrl_RS" }, /* Linux name */
+            { "uz-UZ-Cyrl", "uz_UZ_CYRL", "uz_Cyrl_UZ" }, /* .NET name */
+            { "uz-UZ-Latn", "uz_UZ_LATN", "uz_Latn_UZ" }, /* .NET name */
+            { "zh-CHS", "zh_CHS", "zh_Hans" }, /* .NET name */
+            { "zh-CHT", "zh_CHT", "zh_Hant" }, /* .NET name This may change back to zh_Hant */
+
+            /* posix behavior that used to be performed by getName */
+            { "mr.utf8", null, "mr" },
+            { "de-tv.koi8r", null, "de_TV" },
+            { "x-piglatin_ML.MBE", null, "x-piglatin_ML" },
+            { "i-cherokee_US.utf7", null, "i-cherokee_US" },
+            { "x-filfli_MT_FILFLA.gb-18030", null, "x-filfli_MT_FILFLA" },
+            { "no-no-ny.utf8@B", null, "no_NO_NY_B" /* not: "nn_NO" [alan ICU3.0] */ }, /* @ ignored unless variant is empty */
+
+            /* fleshing out canonicalization */
+            /* sort keywords, ';' is separator so not present at end in canonical form */
+            { "en_Hant_IL_VALLEY_GIRL@currency=EUR;calendar=Japanese;", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR" },
+            /* already-canonical ids are not changed */
+            { "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR", "en_Hant_IL_VALLEY_GIRL@calendar=Japanese;currency=EUR" },
+            /* PRE_EURO and EURO conversions don't affect other keywords */
+            /* not in spec
+               { "es_ES_PREEURO@CALendar=Japanese", "es_ES_PREEURO@calendar=Japanese", "es_ES@calendar=Japanese;currency=ESP" },
+               { "es_ES_EURO@SHOUT=zipeedeedoodah", "es_ES_EURO@shout=zipeedeedoodah", "es_ES@currency=EUR;shout=zipeedeedoodah" },
+            */
+            /* currency keyword overrides PRE_EURO and EURO currency */
+            /* not in spec
+               { "es_ES_PREEURO@currency=EUR", "es_ES_PREEURO@currency=EUR", "es_ES@currency=EUR" },
+               { "es_ES_EURO@currency=ESP", "es_ES_EURO@currency=ESP", "es_ES@currency=ESP" },
+            */
+            /* norwegian is just too weird, if we handle things in their full generality */
+            /* this is a negative test to show that we DO NOT handle 'lang=no,var=NY' specially. */
+            { "no-Hant-GB_NY@currency=$$$", "no_Hant_GB_NY@currency=$$$", "no_Hant_GB_NY@currency=$$$" /* not: "nn_Hant_GB@currency=$$$" [alan ICU3.0] */ },
+
+            /* test cases reflecting internal resource bundle usage */
+            /* root is just a language */
+            { "root@kw=foo", "root@kw=foo", "root@kw=foo" },
+            /* level 2 canonicalization should not touch basename when there are keywords and it is null */
+            { "@calendar=gregorian", "@calendar=gregorian", "@calendar=gregorian" },
+        };
+
+        for(int i = 0; i< testCases.length;i++){
+            String[] testCase = testCases[i];
+            String source = testCase[0];
+            String level1Expected = testCase[1];
+            String level2Expected = testCase[2];
+
+            if (level1Expected != null) { // null means we have no expectations for how this case is handled
+                String level1 = ULocale.getName(source);
+                if (!level1.equals(level1Expected)) {
+                    errln("ULocale.getName error for: '" + source +
+                          "' expected: '" + level1Expected + "' but got: '" + level1 + "'");
+                } else {
+                    logln("Ulocale.getName for: '" + source + "' returned: '" + level1 + "'");
+                }
+            } else {
+                logln("ULocale.getName skipped: '" + source + "'");
+            }
+
+            if (level2Expected != null) {
+                String level2 = ULocale.canonicalize(source);
+                if(!level2.equals(level2Expected)){
+                    errln("ULocale.getName error for: '" + source +
+                          "' expected: '" + level2Expected + "' but got: '" + level2 + "'");
+                } else {
+                    logln("Ulocale.canonicalize for: '" + source + "' returned: '" + level2 + "'");
+                }
+            } else {
+                logln("ULocale.canonicalize skipped: '" + source + "'");
+            }
+        }
+    }
+
+    public void TestGetAvailable(){
+        ULocale[] locales = ULocale.getAvailableLocales();
+        if(locales.length<10){
+            errln("Did not get the correct result from getAvailableLocales");
+        }
+        if(!locales[locales.length-1].equals("zh_Hant_TW")){
+            errln("Did not get the expected result");
+        }
+    }
+
+    public void TestDisplayNames() {
+        // consistency check, also check that all data is available
+        {
+            ULocale[] locales = ULocale.getAvailableLocales();
+            for (int i = 0; i < locales.length; ++i) {
+                ULocale l = locales[i];
+                String name = l.getDisplayName();
+
+                logln(l + " --> " + name +
+                      ", " + l.getDisplayName(ULocale.GERMAN) +
+                      ", " + l.getDisplayName(ULocale.FRANCE));
+
+                String language = l.getDisplayLanguage();
+                String script = l.getDisplayScript();
+                String country = l.getDisplayCountry();
+                String variant = l.getDisplayVariant();
+
+                checkName(name, language, script, country, variant);
+
+                for (int j = 0; j < locales.length; ++j) {
+                    ULocale dl = locales[j];
+
+                    name = l.getDisplayName(dl);
+                    language = l.getDisplayLanguage(dl);
+                    script = l.getDisplayScript(dl);
+                    country = l.getDisplayCountry(dl);
+                    variant = l.getDisplayVariant(dl);
+
+                    if (!checkName(name, language, script, country, variant)) {
+                        break;
+                    }
+                }
+            }
+        }
+        // spot check
+        {
+            ULocale[] locales = {
+                ULocale.US, ULocale.GERMANY, ULocale.FRANCE
+            };
+            String[] names = {
+                "Chinese (China)", "Chinesisch (China)", "chinois (Chine)"
+            };
+            ULocale locale = new ULocale("zh_CN");
+            for (int i = 0; i < locales.length; ++i) {
+                String name = locale.getDisplayName(locales[i]);
+                if (!names[i].equals(name)) {
+                    errln("expected '" + names[i] + "' but got '" + name + "'");
+                }
+            }
+        }
+    }
+
+    private boolean checkName(String name, String language, String script, String country, String variant) {
+        if (language.length() > 0 && name.indexOf(language) == -1) {
+            errln("name '" + name + "' does not contain language '" + language + "'");
+            return false;
+        }
+        if (script.length() > 0 && name.indexOf(script) == -1) {
+            errln("name '" + name + "' does not contain script '" + script + "'");
+            return false;
+        }
+        if (country.length() > 0 && name.indexOf(country) == -1) {
+            errln("name '" + name + "' does not contain country '" + country + "'");
+            return false;
+        }
+        if (variant.length() > 0 && name.indexOf(variant) == -1) {
+            errln("name '" + name + "' does not contain variant '" + variant + "'");
+            return false;
+        }
+        return true;
+    }
+
+    public void TestCoverage() {
+        {
+            //Cover displayXXX
+            int i, j;
+            String localeID="zh_CN";
+            String name, language, script, country, variant;
+            logln("Covering APIs with signature displayXXX(String, String)");
+            for (i = 0; i < LOCALE_SIZE; i++) {
+                //localeID String
+                String testLocale=(rawData2[NAME][i]);
+
+                logln("Testing "+ testLocale+".....");
+                name = ULocale.getDisplayName(localeID, testLocale);
+                language = ULocale.getDisplayLanguage(localeID, testLocale);
+                script = ULocale.getDisplayScript(localeID, testLocale);
+                country = ULocale.getDisplayCountry(localeID, testLocale);
+                variant = ULocale.getDisplayVariant(localeID, testLocale);
+
+                if (!checkName(name, language, script, country, variant)) {
+                    break;
+                }
+            }
+
+            logln("Covering APIs with signature displayXXX(String, ULocale)\n");
+            for (j = 0; j < LOCALE_SIZE; j++) {
+                String testLocale=(rawData2[NAME][j]);
+                ULocale loc = new ULocale(testLocale);
+
+                logln("Testing "+ testLocale+".....");
+                name = ULocale.getDisplayName(localeID, loc);
+                language = ULocale.getDisplayLanguage(localeID, loc);
+                script = ULocale.getDisplayScript(localeID, loc);
+                country = ULocale.getDisplayCountry(localeID, loc);
+                variant = ULocale.getDisplayVariant(localeID, loc);
+
+                if (!checkName(name, language, script, country, variant)) {
+                    break;
+                }
+            }
+        }
+        ULocale loc1 = new ULocale("en_US_BROOKLYN");
+        ULocale loc2 = new ULocale("en","US","BROOKLYN");
+        if (!loc2.equals(loc1)){
+            errln("ULocale.ULocale(String a, String b, String c)");
+        }
+        
+        ULocale loc3 = new ULocale("en_US");
+        ULocale loc4 = new ULocale("en","US");
+        if (!loc4.equals(loc3)){
+            errln("ULocale.ULocale(String a, String b)");
+        }
+        
+        ULocale loc5 = (ULocale) loc4.clone();
+        if (!loc5.equals(loc4)){
+            errln("ULocale.clone should get the same ULocale");
+        }
+        ULocale.getISOCountries(); // To check the result ?!
+    }
+
+    public void TestBamBm() {
+        // "bam" shouldn't be there since the official code is 'bm'
+        String[] isoLanguages = ULocale.getISOLanguages();
+        for (int i = 0; i < isoLanguages.length; ++i) {
+            if ("bam".equals(isoLanguages[i])) {
+                errln("found bam");
+            }
+            if (i > 0 && isoLanguages[i].compareTo(isoLanguages[i-1]) <= 0) {
+                errln("language list out of order: '" + isoLanguages[i] + " <= " + isoLanguages[i-1]);
+            }
+        }
+    }
+
+    public void TestDisplayKeyword() {
+        //prepare testing data
+        initHashtable();
+        String[] data = {"en_US@collation=direct;calendar=islamic-civil",
+             "zh_Hans@collation=pinyin;calendar=chinese",
+             "foo_Bar_BAZ@collation=traditional;calendar=buddhist"};
+
+        for (int i = 0; i < data.length; i++) {
+            String localeID = data[i];
+            logln("");
+            logln("Testing locale " + localeID + " ...");
+            ULocale loc = new ULocale(localeID);
+
+            Iterator it = loc.getKeywords();
+            Iterator it2 = ULocale.getKeywords(localeID);
+            //it and it2 are not equal here. No way to verify their equivalence yet.
+            while(it.hasNext()) {
+                String key = (String)it.next();
+                String key2 = (String)it2.next();
+                if (!key.equals(key2)) {
+                    errln("FAIL: static and non-static getKeywords returned different results.");
+                }
+
+                //To verify display of Keyword
+                // display the above key in English
+                String s0 = ULocale.getDisplayKeyword(key); //display in default locale
+                String s1 = ULocale.getDisplayKeyword(key, ULocale.US);
+                String s2 = ULocale.getDisplayKeyword(key, "en_US");
+                if (!s1.equals(s2)) {
+                    errln ("FAIL: one of the getDisplayKeyword methods failed.");
+                }
+                if (ULocale.getDefault().equals(ULocale.US) && !s1.equals(s0)) {
+                    errln ("FAIL: getDisplayKeyword methods failed for the default locale.");
+                }
+                if (!s1.equals(h[0].get(key))) {
+                    warnln("Locale " + localeID + " getDisplayKeyword for key: " + key +
+                          " in English expected \"" + h[0].get(key) + "\" saw \"" + s1 + "\" instead");
+                } else {
+                    logln("OK: getDisplayKeyword for key: " + key + " in English got " + s1);
+                }
+
+                // display the key in S-Chinese
+                s1 = ULocale.getDisplayKeyword(key, ULocale.CHINA);
+                s2 = ULocale.getDisplayKeyword(key, "zh_Hans");
+                if (!s1.equals(s2)) {
+                    errln ("one of the getDisplayKeyword methods failed.");
+                }
+                if (!s1.equals(h[1].get(key))) {
+                    warnln("Locale " + localeID + " getDisplayKeyword for key: " + key +
+                          " in Chinese expected \"" + h[1].get(key) + "\" saw \"" + s1 + "\" instead");
+                } else {
+                    logln("OK: getDisplayKeyword for key: " + key + " in Chinese got " + s1);
+                }
+
+                //To verify display of Keyword values
+                String type = loc.getKeywordValue(key);
+                // display type in English
+                String ss0 = loc.getDisplayKeywordValue(key);
+                String ss1 = loc.getDisplayKeywordValue(key, ULocale.US);
+                String ss2 = ULocale.getDisplayKeywordValue(localeID, key, "en_US");
+                String ss3 = ULocale.getDisplayKeywordValue(localeID, key, ULocale.US);
+                if (!ss1.equals(ss2) || !ss1.equals(ss3)) {
+                    errln ("FAIL: one of the getDisplayKeywordValue methods failed.");
+                }
+                if (ULocale.getDefault().equals(ULocale.US) && !ss1.equals(ss0)) {
+                    errln ("FAIL: getDisplayKeyword methods failed for the default locale.");
+                }
+                if (!ss1.equals(h[0].get(type))) {
+                    warnln(" Locale " + localeID + " getDisplayKeywordValue for key: " + key +
+                          " in English expected \"" + h[0].get(type) + "\" saw \"" + ss1 + "\" instead");
+                } else {
+                    logln("OK: getDisplayKeywordValue for key: " + key + " in English got " + ss1);
+                }
+
+                // display type in Chinese
+                ss0 = loc.getDisplayKeywordValue(key);
+                ss1 = loc.getDisplayKeywordValue(key, ULocale.CHINA);
+                ss2 = ULocale.getDisplayKeywordValue(localeID, key, "zh_Hans");
+                ss3 = ULocale.getDisplayKeywordValue(localeID, key, ULocale.CHINA);
+                if (!ss1.equals(ss2) || !ss1.equals(ss3)) {
+                    warnln ("one of the getDisplayKeywordValue methods failed.");
+                }
+                if (!ss1.equals(h[1].get(type))) {
+                    warnln("Locale " + localeID + " getDisplayKeywordValue for key: " + key +
+                          " in Chinese expected \"" + h[1].get(type) + "\" saw \"" + ss1 + "\" instead");
+                } else {
+                    logln("OK: getDisplayKeywordValue for key: " + key + " in Chinese got " + ss1);
+                }
+            }
+        }
+    }
+    private void initHashtable() {
+        h[0] = new Hashtable();
+        h[1] = new Hashtable();
+
+        //display in English
+        h[0].put("collation", "collation");
+        h[0].put("calendar", "calendar");
+        h[0].put("currency", "Currency");
+        h[0].put("phonebook", "Phonebook Order");
+        h[0].put("pinyin", "Pinyin Sort Order");
+        h[0].put("traditional", "Traditional Sort Order");
+        h[0].put("stroke", "Stroke Order");
+        h[0].put("direct", "Direct Sort Order");
+        h[0].put("japanese", "Japanese Calendar");
+        h[0].put("buddhist", "Buddhist Calendar");
+        h[0].put("islamic", "Islamic Calendar");
+        h[0].put("islamic-civil", "Islamic-Civil Calendar" );
+        h[0].put("hebrew", "Hebrew Calendar");
+        h[0].put("chinese", "Chinese Calendar");
+        h[0].put("gregorian", "Gregorian Calendar" );
+
+        //display in S-Chinese
+        h[1].put("collation", "\u5BF9\u7167");
+        h[1].put("calendar", "\u65E5\u5386");
+        h[1].put("currency", "\u8D27\u5E01");
+        h[1].put("direct", "\u987A\u5E8F");
+        h[1].put("phonebook", "\u7535\u8BDD\u7C3F\u987A\u5E8F");
+        h[1].put("pinyin", "\u62FC\u97F3\u987a\u5e8f");
+        h[1].put("stroke", "\u7B14\u5212\u987A\u5E8F");
+        h[1].put("traditional", "\u4F20\u7EDF\u5386\u6CD5");
+        h[1].put("japanese", "\u65E5\u672C\u65E5\u5386");
+        h[1].put("buddhist", "\u4F5B\u6559\u65E5\u5386");
+        h[1].put("islamic", "\u4F0A\u65AF\u5170\u65E5\u5386");
+        h[1].put("islamic-civil", "\u4F0A\u65AF\u5170\u5E0C\u5409\u6765\u5386");
+        h[1].put("hebrew", "\u5E0C\u4F2F\u6765\u65E5\u5386");
+        h[1].put("chinese", "\u519C\u5386");
+        h[1].put("gregorian", "\u516C\u5386");
+    }
+
+    //Hashtables for storing expected display of keys/types of locale in English and Chinese
+    private static Hashtable[] h = new Hashtable[2];
+    
+    private static final String ACCEPT_LANGUAGE_TESTS[][]  =  {
+    /*#      result  fallback? */
+    /*0*/ { "mt_MT", "false" },
+    /*1*/ { "en", "false" },
+    /*2*/ { "en", "true" }, // fell back from en-zzz to en
+    /*3*/ {  null, "true" },
+    /*4*/ {  "es", "false" }, 
+    /*5*/ { "de", "false" }};
+    
+    private static final String ACCEPT_LANGUAGE_HTTP[] = { 
+                    /*0*/ "mt-mt, ja;q=0.76, en-us;q=0.95, en;q=0.92, en-gb;q=0.89, fr;q=0.87, iu-ca;q=0.84, iu;q=0.82, ja-jp;q=0.79, mt;q=0.97, de-de;q=0.74, de;q=0.71, es;q=0.68, it-it;q=0.66, it;q=0.63, vi-vn;q=0.61, vi;q=0.58, nl-nl;q=0.55, nl;q=0.53, th-th-traditional;q=.01",
+                    /*1*/ "ja;q=0.5, en;q=0.8, tlh",
+                    /*2*/ "en-zzz, de-lx;q=0.8",
+                    /*3*/ "mga-ie;q=0.9, tlh",
+                    /*4*/ "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                          "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "+
+                               "es",
+                        /*5*/ "de;q=.9, fr;q=.9, xxx-yyy, sr;q=.8"};
+    
+    
+    public void TestAcceptLanguage() {
+        for(int i = 0 ; i < (ACCEPT_LANGUAGE_HTTP.length); i++) {
+            Boolean expectBoolean = new Boolean(ACCEPT_LANGUAGE_TESTS[i][1]);
+            String expectLocale=ACCEPT_LANGUAGE_TESTS[i][0];
+            
+           logln("#" + i + ": expecting: " + expectLocale + " (" + expectBoolean + ")");
+            
+            boolean r[] = { false };
+            ULocale n = ULocale.acceptLanguage(ACCEPT_LANGUAGE_HTTP[i], r);
+            if((n==null)&&(expectLocale!=null)) {
+                errln("result was null! line #" + i);
+                continue;
+            }
+            if(((n==null)&&(expectLocale==null)) || (n.toString().equals(expectLocale))) {
+                logln(" locale: OK." );
+            } else {
+                errln("expected " + expectLocale + " but got " + n.toString());
+            }
+            if(expectBoolean.equals(new Boolean(r[0]))) {
+                logln(" bool: OK.");
+            } else {
+                errln("bool: not OK, was " + new Boolean(r[0]).toString() + " expected " + expectBoolean.toString());
+            }
+        }
+    }
+    
+    private ULocale[] StringToULocaleArray(String acceptLanguageList){
+        //following code is copied from 
+        //ULocale.acceptLanguage(String acceptLanguageList, ULocale[] availableLocales, boolean[] fallback)
+        class ULocaleAcceptLanguageQ implements Comparable {
+            private double q;
+            private double serial;
+            public ULocaleAcceptLanguageQ(double theq, int theserial) {
+                q = theq;
+                serial = theserial;
+            }
+            public int compareTo(Object o) {
+                ULocaleAcceptLanguageQ other = (ULocaleAcceptLanguageQ) o;
+                if(q > other.q) { // reverse - to sort in descending order
+                    return -1;
+                } else if(q < other.q) {
+                    return 1;
+                }
+                if(serial < other.serial) {
+                    return -1;
+                } else if(serial > other.serial) {
+                    return 1;
+                } else {
+                    return 0; // same object
+                }
+            }
+        }
+
+        // 1st: parse out the acceptLanguageList into an array
+        
+        TreeMap map = new TreeMap();
+        
+        final int l = acceptLanguageList.length();
+        int n;
+        for(n=0;n<l;n++) {
+            int itemEnd = acceptLanguageList.indexOf(',',n);
+            if(itemEnd == -1) {
+                itemEnd = l;
+            }
+            int paramEnd = acceptLanguageList.indexOf(';',n);
+            double q = 1.0;
+ 
+            if((paramEnd != -1) && (paramEnd < itemEnd)) {
+                /* semicolon (;) is closer than end (,) */
+                int t = paramEnd + 1;
+                while(UCharacter.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                if(acceptLanguageList.charAt(t)=='q') {
+                    t++;
+                }
+                while(UCharacter.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                if(acceptLanguageList.charAt(t)=='=') {
+                    t++;
+                }
+                while(UCharacter.isWhitespace(acceptLanguageList.charAt(t))) {
+                    t++;
+                }
+                try {
+                    String val = acceptLanguageList.substring(t,itemEnd).trim();
+                    q = Double.parseDouble(val);
+                } catch (NumberFormatException nfe) {
+                    q = 1.0;
+                }
+            } else {
+                q = 1.0; //default
+                paramEnd = itemEnd;
+            }
+
+            String loc = acceptLanguageList.substring(n,paramEnd).trim();
+            int serial = map.size();
+            ULocaleAcceptLanguageQ entry = new ULocaleAcceptLanguageQ(q,serial);
+            map.put(entry, new ULocale(ULocale.canonicalize(loc))); // sort in reverse order..   1.0, 0.9, 0.8 .. etc
+            n = itemEnd; // get next item. (n++ will skip over delimiter)
+        }
+        
+        // 2. pull out the map 
+        ULocale acceptList[] = (ULocale[])map.values().toArray(new ULocale[map.size()]);
+        return acceptList;
+    }
+    
+    public void TestAcceptLanguage2() {
+        for(int i = 0 ; i < (ACCEPT_LANGUAGE_HTTP.length); i++) {
+            Boolean expectBoolean = new Boolean(ACCEPT_LANGUAGE_TESTS[i][1]);
+            String expectLocale=ACCEPT_LANGUAGE_TESTS[i][0];
+            
+           logln("#" + i + ": expecting: " + expectLocale + " (" + expectBoolean + ")");
+            
+            boolean r[] = { false };
+            ULocale n = ULocale.acceptLanguage(StringToULocaleArray(ACCEPT_LANGUAGE_HTTP[i]), r);
+            if((n==null)&&(expectLocale!=null)) {
+                errln("result was null! line #" + i);
+                continue;
+            }
+            if(((n==null)&&(expectLocale==null)) || (n.toString().equals(expectLocale))) {
+                logln(" locale: OK." );
+            } else {
+                errln("expected " + expectLocale + " but got " + n.toString());
+            }
+            if(expectBoolean.equals(new Boolean(r[0]))) {
+                logln(" bool: OK.");
+            } else {
+                errln("bool: not OK, was " + new Boolean(r[0]).toString() + " expected " + expectBoolean.toString());
+            }
+        }
+    }
+
+    public void TestOrientation() {
+        {
+            String toTest [][] = {
+                { "ar", "right-to-left", "top-to-bottom" },
+                { "ar_Arab", "right-to-left", "top-to-bottom" },
+                { "fa", "right-to-left", "top-to-bottom" },
+                { "he", "right-to-left", "top-to-bottom" },
+                { "ps", "right-to-left", "top-to-bottom" },
+                { "ur", "right-to-left", "top-to-bottom" },
+                { "en", "left-to-right", "top-to-bottom" }
+            };
+
+            for (int i = 0; i < toTest.length; ++i) {
+                ULocale loc = new ULocale(toTest[i][0]);
+                String co = loc.getCharacterOrientation();
+                String lo = loc.getLineOrientation();
+                if (!co.equals(toTest[i][1])) {
+                    errln("Locale \"" + toTest[i][0] + "\" should have \"" + toTest[i][1] + "\" character orientation, but got \'" + co + "\"");
+                }
+                else if (!lo.equals(toTest[i][2])) {
+                    errln("Locale \"" + toTest[i][0] + "\" should have \"" + toTest[i][2] + "\" line orientation, but got \'" + lo + "\"");
+                }
+            }
+        }
+    }
+
+    public void TestJB3962(){
+        ULocale loc = new ULocale("de_CH");
+        String disp = loc.getDisplayName(ULocale.GERMAN);
+        if(!disp.equals("Deutsch (Schweiz)")){
+            errln("Did not get the expected display name for de_CH locale. Got: "+ prettify(disp));
+        }
+    }
+
+    public void TestAddLikelySubtags() {
+        String[][] data = {
+            {"en", "en_Latn_US"},
+            {"en_US_BOSTON", "en_Latn_US_BOSTON"},
+            {"th@calendar=buddhist", "th_Thai_TH@calendar=buddhist"},
+            {"ar_ZZ", "ar_Arab_EG"},
+            {"zh", "zh_Hans_CN"},
+            {"zh_TW", "zh_Hant_TW"},
+            {"zh_HK", "zh_Hant_HK"},
+            {"zh_Hant", "zh_Hant_TW"},
+            {"zh_Zzzz_CN", "zh_Hans_CN"},
+            {"und_US", "en_Latn_US"},
+            {"und_HK", "zh_Hant_HK"},
+            /* Not yet implemented
+            {"art_lojban", "arg_lojban"},
+            {"zh_cmn_Hans", "zh_cmn_Hans"},
+            */
+        };
+        for (int i = 0; i < data.length; i++) {
+            ULocale org = new ULocale(data[i][0]);
+            ULocale res = ULocale.addLikelySubtags(org);
+            if (!res.toString().equals(data[i][1])) {
+                errln("Original: " + data[i][0] + " Expected: " + data[i][1] + " - but got " + res.toString());
+            }
+        }
+
+        String[][] basic_maximize_data = {
+            {
+                "zu_Zzzz_Zz",
+                "zu_Latn_ZA",
+            }, {
+                "zu_Zz",
+                "zu_Latn_ZA"
+            }, {
+                "en_Zz",
+                "en_Latn_US"
+            }, {
+                "en_Kore",
+                "en_Kore_US"
+            }, {
+                "en_Kore_Zz",
+                "en_Kore_US"
+            }, {
+                "en_Kore_ZA",
+                "en_Kore_ZA"
+            }, {
+                "en_Kore_ZA_POSIX",
+                "en_Kore_ZA_POSIX"
+            }, {
+                "en_Gujr",
+                "en_Gujr_US"
+            }, {
+                "en_ZA",
+                "en_Latn_ZA"
+            }, {
+                "en_Gujr_Zz",
+                "en_Gujr_US"
+            }, {
+                "en_Gujr_ZA",
+                "en_Gujr_ZA"
+            }, {
+                "en_Gujr_ZA_POSIX",
+                "en_Gujr_ZA_POSIX"
+            }, {
+                "en_US_POSIX_1901",
+                "en_Latn_US_POSIX_1901"
+            }, {
+                "en_Latn__POSIX_1901",
+                "en_Latn_US_POSIX_1901"
+            }, {
+                "en__POSIX_1901",
+                "en_Latn_US_POSIX_1901"
+            }, {
+                "de__POSIX_1901",
+                "de_Latn_DE_POSIX_1901"
+            }, {
+                "zzz",
+                ""
+            }
+        };
+
+        for (int i = 0; i < basic_maximize_data.length; i++) {
+            ULocale org = new ULocale(basic_maximize_data[i][0]);
+            ULocale res = ULocale.addLikelySubtags(org);
+            String exp = basic_maximize_data[i][1];
+            if (exp.length() == 0) {
+                if (!org.equals(res)) {
+                    errln("Original: " + basic_maximize_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+                }
+            }
+            else if (!res.toString().equals(exp)) {
+                errln("Original: " + basic_maximize_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+            }
+        }
+
+        String[][] basic_minimize_data = {
+            {
+                "en_Latn_US",
+                "en"
+            }, {
+                "en_Latn_US_POSIX_1901",
+                "en__POSIX_1901"
+            }, {
+                "en_Zzzz_US_POSIX_1901",
+                "en__POSIX_1901"
+            }, {
+                "de_Latn_DE_POSIX_1901",
+                "de__POSIX_1901"
+            }, {
+                "und",
+                ""
+            }
+        };
+
+        for (int i = 0; i < basic_minimize_data.length; i++) {
+            ULocale org = new ULocale(basic_minimize_data[i][0]);
+            ULocale res = ULocale.minimizeSubtags(org);
+            String exp = basic_minimize_data[i][1];
+            if (exp.length() == 0) {
+                if (!org.equals(res)) {
+                    errln("Original: " + basic_minimize_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+                }
+            }
+            else if (!res.toString().equals(exp)) {
+                errln("Original: " + basic_minimize_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+            }
+        }
+
+        String[][] full_data = {
+            {
+                /*   "FROM", */
+                /*   "ADD-LIKELY", */
+                /*   "REMOVE-LIKELY" */
+                /* }, { */
+                "aa",
+                "aa_Latn_ET",
+                "aa"
+            }, {
+                "af",
+                "af_Latn_ZA",
+                "af"
+            }, {
+                "ak",
+                "ak_Latn_GH",
+                "ak"
+            }, {
+                "am",
+                "am_Ethi_ET",
+                "am"
+            }, {
+                "ar",
+                "ar_Arab_EG",
+                "ar"
+            }, {
+                "as",
+                "as_Beng_IN",
+                "as"
+            }, {
+                "az",
+                "az_Latn_AZ",
+                "az"
+            }, {
+                "be",
+                "be_Cyrl_BY",
+                "be"
+            }, {
+                "bg",
+                "bg_Cyrl_BG",
+                "bg"
+            }, {
+                "bn",
+                "bn_Beng_BD",
+                "bn"
+            }, {
+                "bo",
+                "bo_Tibt_CN",
+                "bo"
+            }, {
+                "bs",
+                "bs_Latn_BA",
+                "bs"
+            }, {
+                "ca",
+                "ca_Latn_ES",
+                "ca"
+            }, {
+                "ch",
+                "ch_Latn_GU",
+                "ch"
+            }, {
+                "chk",
+                "chk_Latn_FM",
+                "chk"
+            }, {
+                "cs",
+                "cs_Latn_CZ",
+                "cs"
+            }, {
+                "cy",
+                "cy_Latn_GB",
+                "cy"
+            }, {
+                "da",
+                "da_Latn_DK",
+                "da"
+            }, {
+                "de",
+                "de_Latn_DE",
+                "de"
+            }, {
+                "dv",
+                "dv_Thaa_MV",
+                "dv"
+            }, {
+                "dz",
+                "dz_Tibt_BT",
+                "dz"
+            }, {
+                "ee",
+                "ee_Latn_GH",
+                "ee"
+            }, {
+                "el",
+                "el_Grek_GR",
+                "el"
+            }, {
+                "en",
+                "en_Latn_US",
+                "en"
+            }, {
+                "es",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "et",
+                "et_Latn_EE",
+                "et"
+            }, {
+                "eu",
+                "eu_Latn_ES",
+                "eu"
+            }, {
+                "fa",
+                "fa_Arab_IR",
+                "fa"
+            }, {
+                "fi",
+                "fi_Latn_FI",
+                "fi"
+            }, {
+                "fil",
+                "fil_Latn_PH",
+                "fil"
+            }, {
+                "fj",
+                "fj_Latn_FJ",
+                "fj"
+            }, {
+                "fo",
+                "fo_Latn_FO",
+                "fo"
+            }, {
+                "fr",
+                "fr_Latn_FR",
+                "fr"
+            }, {
+                "fur",
+                "fur_Latn_IT",
+                "fur"
+            }, {
+                "ga",
+                "ga_Latn_IE",
+                "ga"
+            }, {
+                "gaa",
+                "gaa_Latn_GH",
+                "gaa"
+            }, {
+                "gl",
+                "gl_Latn_ES",
+                "gl"
+            }, {
+                "gn",
+                "gn_Latn_PY",
+                "gn"
+            }, {
+                "gu",
+                "gu_Gujr_IN",
+                "gu"
+            }, {
+                "ha",
+                "ha_Latn_NG",
+                "ha"
+            }, {
+                "haw",
+                "haw_Latn_US",
+                "haw"
+            }, {
+                "he",
+                "he_Hebr_IL",
+                "he"
+            }, {
+                "hi",
+                "hi_Deva_IN",
+                "hi"
+            }, {
+                "hr",
+                "hr_Latn_HR",
+                "hr"
+            }, {
+                "ht",
+                "ht_Latn_HT",
+                "ht"
+            }, {
+                "hu",
+                "hu_Latn_HU",
+                "hu"
+            }, {
+                "hy",
+                "hy_Armn_AM",
+                "hy"
+            }, {
+                "id",
+                "id_Latn_ID",
+                "id"
+            }, {
+                "ig",
+                "ig_Latn_NG",
+                "ig"
+            }, {
+                "ii",
+                "ii_Latn_CN",
+                "ii"
+            }, {
+                "is",
+                "is_Latn_IS",
+                "is"
+            }, {
+                "it",
+                "it_Latn_IT",
+                "it"
+            }, {
+                "iu",
+                "iu_Cans_CA",
+                "iu"
+            }, {
+                "ja",
+                "ja_Jpan_JP",
+                "ja"
+            }, {
+                "ka",
+                "ka_Geor_GE",
+                "ka"
+            }, {
+                "kaj",
+                "kaj_Latn_NG",
+                "kaj"
+            }, {
+                "kam",
+                "kam_Latn_KE",
+                "kam"
+            }, {
+                "kk",
+                "kk_Cyrl_KZ",
+                "kk"
+            }, {
+                "kl",
+                "kl_Latn_GL",
+                "kl"
+            }, {
+                "km",
+                "km_Khmr_KH",
+                "km"
+            }, {
+                "kn",
+                "kn_Knda_IN",
+                "kn"
+            }, {
+                "ko",
+                "ko_Kore_KR",
+                "ko"
+            }, {
+                "kok",
+                "kok_Deva_IN",
+                "kok"
+            }, {
+                "kpe",
+                "kpe_Latn_LR",
+                "kpe"
+            }, {
+                "ku",
+                "ku_Arab_IQ",
+                "ku"
+            }, {
+                "ky",
+                "ky_Cyrl_KG",
+                "ky"
+            }, {
+                "la",
+                "la_Latn_VA",
+                "la"
+            }, {
+                "ln",
+                "ln_Latn_CD",
+                "ln"
+            }, {
+                "lo",
+                "lo_Laoo_LA",
+                "lo"
+            }, {
+                "lt",
+                "lt_Latn_LT",
+                "lt"
+            }, {
+                "lv",
+                "lv_Latn_LV",
+                "lv"
+            }, {
+                "mg",
+                "mg_Latn_MG",
+                "mg"
+            }, {
+                "mh",
+                "mh_Latn_MH",
+                "mh"
+            }, {
+                "mk",
+                "mk_Cyrl_MK",
+                "mk"
+            }, {
+                "ml",
+                "ml_Mlym_IN",
+                "ml"
+            }, {
+                "mn",
+                "mn_Cyrl_MN",
+                "mn"
+            }, {
+                "mr",
+                "mr_Deva_IN",
+                "mr"
+            }, {
+                "ms",
+                "ms_Latn_MY",
+                "ms"
+            }, {
+                "mt",
+                "mt_Latn_MT",
+                "mt"
+            }, {
+                "my",
+                "my_Mymr_MM",
+                "my"
+            }, {
+                "na",
+                "na_Latn_NR",
+                "na"
+            }, {
+                "ne",
+                "ne_Deva_NP",
+                "ne"
+            }, {
+                "niu",
+                "niu_Latn_NU",
+                "niu"
+            }, {
+                "nl",
+                "nl_Latn_NL",
+                "nl"
+            }, {
+                "nn",
+                "nn_Latn_NO",
+                "nn"
+            }, {
+                "nr",
+                "nr_Latn_ZA",
+                "nr"
+            }, {
+                "nso",
+                "nso_Latn_ZA",
+                "nso"
+            }, {
+                "ny",
+                "ny_Latn_MW",
+                "ny"
+            }, {
+                "om",
+                "om_Latn_ET",
+                "om"
+            }, {
+                "or",
+                "or_Orya_IN",
+                "or"
+            }, {
+                "pa",
+                "pa_Guru_IN",
+                "pa"
+            }, {
+                "pa_Arab",
+                "pa_Arab_PK",
+                "pa_PK"
+            }, {
+                "pa_PK",
+                "pa_Arab_PK",
+                "pa_PK"
+            }, {
+                "pap",
+                "pap_Latn_AN",
+                "pap"
+            }, {
+                "pau",
+                "pau_Latn_PW",
+                "pau"
+            }, {
+                "pl",
+                "pl_Latn_PL",
+                "pl"
+            }, {
+                "ps",
+                "ps_Arab_AF",
+                "ps"
+            }, {
+                "pt",
+                "pt_Latn_BR",
+                "pt"
+            }, {
+                "rn",
+                "rn_Latn_BI",
+                "rn"
+            }, {
+                "ro",
+                "ro_Latn_RO",
+                "ro"
+            }, {
+                "ru",
+                "ru_Cyrl_RU",
+                "ru"
+            }, {
+                "rw",
+                "rw_Latn_RW",
+                "rw"
+            }, {
+                "sa",
+                "sa_Deva_IN",
+                "sa"
+            }, {
+                "se",
+                "se_Latn_NO",
+                "se"
+            }, {
+                "sg",
+                "sg_Latn_CF",
+                "sg"
+            }, {
+                "si",
+                "si_Sinh_LK",
+                "si"
+            }, {
+                "sid",
+                "sid_Latn_ET",
+                "sid"
+            }, {
+                "sk",
+                "sk_Latn_SK",
+                "sk"
+            }, {
+                "sl",
+                "sl_Latn_SI",
+                "sl"
+            }, {
+                "sm",
+                "sm_Latn_WS",
+                "sm"
+            }, {
+                "so",
+                "so_Latn_SO",
+                "so"
+            }, {
+                "sq",
+                "sq_Latn_AL",
+                "sq"
+            }, {
+                "sr",
+                "sr_Cyrl_RS",
+                "sr"
+            }, {
+                "ss",
+                "ss_Latn_ZA",
+                "ss"
+            }, {
+                "st",
+                "st_Latn_ZA",
+                "st"
+            }, {
+                "sv",
+                "sv_Latn_SE",
+                "sv"
+            }, {
+                "sw",
+                "sw_Latn_TZ",
+                "sw"
+            }, {
+                "ta",
+                "ta_Taml_IN",
+                "ta"
+            }, {
+                "te",
+                "te_Telu_IN",
+                "te"
+            }, {
+                "tet",
+                "tet_Latn_TL",
+                "tet"
+            }, {
+                "tg",
+                "tg_Cyrl_TJ",
+                "tg"
+            }, {
+                "th",
+                "th_Thai_TH",
+                "th"
+            }, {
+                "ti",
+                "ti_Ethi_ET",
+                "ti"
+            }, {
+                "tig",
+                "tig_Ethi_ER",
+                "tig"
+            }, {
+                "tk",
+                "tk_Latn_TM",
+                "tk"
+            }, {
+                "tkl",
+                "tkl_Latn_TK",
+                "tkl"
+            }, {
+                "tn",
+                "tn_Latn_ZA",
+                "tn"
+            }, {
+                "to",
+                "to_Latn_TO",
+                "to"
+            }, {
+                "tpi",
+                "tpi_Latn_PG",
+                "tpi"
+            }, {
+                "tr",
+                "tr_Latn_TR",
+                "tr"
+            }, {
+                "ts",
+                "ts_Latn_ZA",
+                "ts"
+            }, {
+                "tt",
+                "tt_Cyrl_RU",
+                "tt"
+            }, {
+                "tvl",
+                "tvl_Latn_TV",
+                "tvl"
+            }, {
+                "ty",
+                "ty_Latn_PF",
+                "ty"
+            }, {
+                "uk",
+                "uk_Cyrl_UA",
+                "uk"
+            }, {
+                "und",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_AD",
+                "ca_Latn_AD",
+                "ca_AD"
+            }, {
+                "und_AE",
+                "ar_Arab_AE",
+                "ar_AE"
+            }, {
+                "und_AF",
+                "fa_Arab_AF",
+                "fa_AF"
+            }, {
+                "und_AL",
+                "sq_Latn_AL",
+                "sq"
+            }, {
+                "und_AM",
+                "hy_Armn_AM",
+                "hy"
+            }, {
+                "und_AN",
+                "pap_Latn_AN",
+                "pap"
+            }, {
+                "und_AO",
+                "pt_Latn_AO",
+                "pt_AO"
+            }, {
+                "und_AR",
+                "es_Latn_AR",
+                "es_AR"
+            }, {
+                "und_AS",
+                "sm_Latn_AS",
+                "sm_AS"
+            }, {
+                "und_AT",
+                "de_Latn_AT",
+                "de_AT"
+            }, {
+                "und_AW",
+                "nl_Latn_AW",
+                "nl_AW"
+            }, {
+                "und_AX",
+                "sv_Latn_AX",
+                "sv_AX"
+            }, {
+                "und_AZ",
+                "az_Latn_AZ",
+                "az"
+            }, {
+                "und_Arab",
+                "ar_Arab_EG",
+                "ar"
+            }, {
+                "und_Arab_IN",
+                "ur_Arab_IN",
+                "ur_IN"
+            }, {
+                "und_Arab_PK",
+                "ur_Arab_PK",
+                "ur"
+            }, {
+                "und_Arab_SN",
+                "ar_Arab_SN",
+                "ar_SN"
+            }, {
+                "und_Armn",
+                "hy_Armn_AM",
+                "hy"
+            }, {
+                "und_BA",
+                "bs_Latn_BA",
+                "bs"
+            }, {
+                "und_BD",
+                "bn_Beng_BD",
+                "bn"
+            }, {
+                "und_BE",
+                "nl_Latn_BE",
+                "nl_BE"
+            }, {
+                "und_BF",
+                "fr_Latn_BF",
+                "fr_BF"
+            }, {
+                "und_BG",
+                "bg_Cyrl_BG",
+                "bg"
+            }, {
+                "und_BH",
+                "ar_Arab_BH",
+                "ar_BH"
+            }, {
+                "und_BI",
+                "rn_Latn_BI",
+                "rn"
+            }, {
+                "und_BJ",
+                "fr_Latn_BJ",
+                "fr_BJ"
+            }, {
+                "und_BN",
+                "ms_Latn_BN",
+                "ms_BN"
+            }, {
+                "und_BO",
+                "es_Latn_BO",
+                "es_BO"
+            }, {
+                "und_BR",
+                "pt_Latn_BR",
+                "pt"
+            }, {
+                "und_BT",
+                "dz_Tibt_BT",
+                "dz"
+            }, {
+                "und_BY",
+                "be_Cyrl_BY",
+                "be"
+            }, {
+                "und_Beng",
+                "bn_Beng_BD",
+                "bn"
+            }, {
+                "und_Beng_IN",
+                "bn_Beng_IN",
+                "bn_IN"
+            }, {
+                "und_CD",
+                "fr_Latn_CD",
+                "fr_CD"
+            }, {
+                "und_CF",
+                "sg_Latn_CF",
+                "sg"
+            }, {
+                "und_CG",
+                "ln_Latn_CG",
+                "ln_CG"
+            }, {
+                "und_CH",
+                "de_Latn_CH",
+                "de_CH"
+            }, {
+                "und_CI",
+                "fr_Latn_CI",
+                "fr_CI"
+            }, {
+                "und_CL",
+                "es_Latn_CL",
+                "es_CL"
+            }, {
+                "und_CM",
+                "fr_Latn_CM",
+                "fr_CM"
+            }, {
+                "und_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_CO",
+                "es_Latn_CO",
+                "es_CO"
+            }, {
+                "und_CR",
+                "es_Latn_CR",
+                "es_CR"
+            }, {
+                "und_CU",
+                "es_Latn_CU",
+                "es_CU"
+            }, {
+                "und_CV",
+                "pt_Latn_CV",
+                "pt_CV"
+            }, {
+                "und_CY",
+                "el_Grek_CY",
+                "el_CY"
+            }, {
+                "und_CZ",
+                "cs_Latn_CZ",
+                "cs"
+            }, {
+                "und_Cans",
+                "cwd_Cans_CA",
+                "cwd"
+            }, {
+                "und_Cyrl",
+                "ru_Cyrl_RU",
+                "ru"
+            }, {
+                "und_Cyrl_KZ",
+                "ru_Cyrl_KZ",
+                "ru_KZ"
+            }, {
+                "und_DE",
+                "de_Latn_DE",
+                "de"
+            }, {
+                "und_DJ",
+                "aa_Latn_DJ",
+                "aa_DJ"
+            }, {
+                "und_DK",
+                "da_Latn_DK",
+                "da"
+            }, {
+                "und_DO",
+                "es_Latn_DO",
+                "es_DO"
+            }, {
+                "und_DZ",
+                "ar_Arab_DZ",
+                "ar_DZ"
+            }, {
+                "und_Deva",
+                "hi_Deva_IN",
+                "hi"
+            }, {
+                "und_EC",
+                "es_Latn_EC",
+                "es_EC"
+            }, {
+                "und_EE",
+                "et_Latn_EE",
+                "et"
+            }, {
+                "und_EG",
+                "ar_Arab_EG",
+                "ar"
+            }, {
+                "und_EH",
+                "ar_Arab_EH",
+                "ar_EH"
+            }, {
+                "und_ER",
+                "ti_Ethi_ER",
+                "ti_ER"
+            }, {
+                "und_ES",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "und_ET",
+                "am_Ethi_ET",
+                "am"
+            }, {
+                "und_Ethi",
+                "am_Ethi_ET",
+                "am"
+            }, {
+                "und_Ethi_ER",
+                "am_Ethi_ER",
+                "am_ER"
+            }, {
+                "und_FI",
+                "fi_Latn_FI",
+                "fi"
+            }, {
+                "und_FJ",
+                "fj_Latn_FJ",
+                "fj"
+            }, {
+                "und_FM",
+                "chk_Latn_FM",
+                "chk"
+            }, {
+                "und_FO",
+                "fo_Latn_FO",
+                "fo"
+            }, {
+                "und_FR",
+                "fr_Latn_FR",
+                "fr"
+            }, {
+                "und_GA",
+                "fr_Latn_GA",
+                "fr_GA"
+            }, {
+                "und_GE",
+                "ka_Geor_GE",
+                "ka"
+            }, {
+                "und_GF",
+                "fr_Latn_GF",
+                "fr_GF"
+            }, {
+                "und_GL",
+                "kl_Latn_GL",
+                "kl"
+            }, {
+                "und_GN",
+                "fr_Latn_GN",
+                "fr_GN"
+            }, {
+                "und_GP",
+                "fr_Latn_GP",
+                "fr_GP"
+            }, {
+                "und_GQ",
+                "fr_Latn_GQ",
+                "fr_GQ"
+            }, {
+                "und_GR",
+                "el_Grek_GR",
+                "el"
+            }, {
+                "und_GT",
+                "es_Latn_GT",
+                "es_GT"
+            }, {
+                "und_GU",
+                "ch_Latn_GU",
+                "ch"
+            }, {
+                "und_GW",
+                "pt_Latn_GW",
+                "pt_GW"
+            }, {
+                "und_Geor",
+                "ka_Geor_GE",
+                "ka"
+            }, {
+                "und_Grek",
+                "el_Grek_GR",
+                "el"
+            }, {
+                "und_Gujr",
+                "gu_Gujr_IN",
+                "gu"
+            }, {
+                "und_Guru",
+                "pa_Guru_IN",
+                "pa"
+            }, {
+                "und_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "und_HN",
+                "es_Latn_HN",
+                "es_HN"
+            }, {
+                "und_HR",
+                "hr_Latn_HR",
+                "hr"
+            }, {
+                "und_HT",
+                "ht_Latn_HT",
+                "ht"
+            }, {
+                "und_HU",
+                "hu_Latn_HU",
+                "hu"
+            }, {
+                "und_Hani",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hans",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hant",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Hebr",
+                "he_Hebr_IL",
+                "he"
+            }, {
+                "und_ID",
+                "id_Latn_ID",
+                "id"
+            }, {
+                "und_IL",
+                "he_Hebr_IL",
+                "he"
+            }, {
+                "und_IN",
+                "hi_Deva_IN",
+                "hi"
+            }, {
+                "und_IQ",
+                "ar_Arab_IQ",
+                "ar_IQ"
+            }, {
+                "und_IR",
+                "fa_Arab_IR",
+                "fa"
+            }, {
+                "und_IS",
+                "is_Latn_IS",
+                "is"
+            }, {
+                "und_IT",
+                "it_Latn_IT",
+                "it"
+            }, {
+                "und_JO",
+                "ar_Arab_JO",
+                "ar_JO"
+            }, {
+                "und_JP",
+                "ja_Jpan_JP",
+                "ja"
+            }, {
+                "und_Jpan",
+                "ja_Jpan_JP",
+                "ja"
+            }, {
+                "und_KG",
+                "ky_Cyrl_KG",
+                "ky"
+            }, {
+                "und_KH",
+                "km_Khmr_KH",
+                "km"
+            }, {
+                "und_KM",
+                "ar_Arab_KM",
+                "ar_KM"
+            }, {
+                "und_KP",
+                "ko_Kore_KP",
+                "ko_KP"
+            }, {
+                "und_KR",
+                "ko_Kore_KR",
+                "ko"
+            }, {
+                "und_KW",
+                "ar_Arab_KW",
+                "ar_KW"
+            }, {
+                "und_KZ",
+                "ru_Cyrl_KZ",
+                "ru_KZ"
+            }, {
+                "und_Khmr",
+                "km_Khmr_KH",
+                "km"
+            }, {
+                "und_Knda",
+                "kn_Knda_IN",
+                "kn"
+            }, {
+                "und_Kore",
+                "ko_Kore_KR",
+                "ko"
+            }, {
+                "und_LA",
+                "lo_Laoo_LA",
+                "lo"
+            }, {
+                "und_LB",
+                "ar_Arab_LB",
+                "ar_LB"
+            }, {
+                "und_LI",
+                "de_Latn_LI",
+                "de_LI"
+            }, {
+                "und_LK",
+                "si_Sinh_LK",
+                "si"
+            }, {
+                "und_LS",
+                "st_Latn_LS",
+                "st_LS"
+            }, {
+                "und_LT",
+                "lt_Latn_LT",
+                "lt"
+            }, {
+                "und_LU",
+                "fr_Latn_LU",
+                "fr_LU"
+            }, {
+                "und_LV",
+                "lv_Latn_LV",
+                "lv"
+            }, {
+                "und_LY",
+                "ar_Arab_LY",
+                "ar_LY"
+            }, {
+                "und_Laoo",
+                "lo_Laoo_LA",
+                "lo"
+            }, {
+                "und_Latn_ES",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "und_Latn_ET",
+                "om_Latn_ET",
+                "om"
+            }, {
+                "und_Latn_GB",
+                "en_Latn_GB",
+                "en_GB"
+            }, {
+                "und_Latn_GH",
+                "ak_Latn_GH",
+                "ak"
+            }, {
+                "und_Latn_ID",
+                "id_Latn_ID",
+                "id"
+            }, {
+                "und_Latn_IT",
+                "it_Latn_IT",
+                "it"
+            }, {
+                "und_Latn_NG",
+                "ha_Latn_NG",
+                "ha"
+            }, {
+                "und_Latn_TR",
+                "tr_Latn_TR",
+                "tr"
+            }, {
+                "und_Latn_ZA",
+                "en_Latn_ZA",
+                "en_ZA"
+            }, {
+                "und_MA",
+                "ar_Arab_MA",
+                "ar_MA"
+            }, {
+                "und_MC",
+                "fr_Latn_MC",
+                "fr_MC"
+            }, {
+                "und_MD",
+                "ro_Latn_MD",
+                "ro_MD"
+            }, {
+                "und_ME",
+                "sr_Cyrl_ME",
+                "sr_ME"
+            }, {
+                "und_MG",
+                "mg_Latn_MG",
+                "mg"
+            }, {
+                "und_MH",
+                "mh_Latn_MH",
+                "mh"
+            }, {
+                "und_MK",
+                "mk_Cyrl_MK",
+                "mk"
+            }, {
+                "und_ML",
+                "fr_Latn_ML",
+                "fr_ML"
+            }, {
+                "und_MM",
+                "my_Mymr_MM",
+                "my"
+            }, {
+                "und_MN",
+                "mn_Cyrl_MN",
+                "mn"
+            }, {
+                "und_MO",
+                "zh_Hant_MO",
+                "zh_MO"
+            }, {
+                "und_MQ",
+                "fr_Latn_MQ",
+                "fr_MQ"
+            }, {
+                "und_MR",
+                "ar_Arab_MR",
+                "ar_MR"
+            }, {
+                "und_MT",
+                "mt_Latn_MT",
+                "mt"
+            }, {
+                "und_MV",
+                "dv_Thaa_MV",
+                "dv"
+            }, {
+                "und_MW",
+                "ny_Latn_MW",
+                "ny"
+            }, {
+                "und_MX",
+                "es_Latn_MX",
+                "es_MX"
+            }, {
+                "und_MY",
+                "ms_Latn_MY",
+                "ms"
+            }, {
+                "und_MZ",
+                "pt_Latn_MZ",
+                "pt_MZ"
+            }, {
+                "und_Mlym",
+                "ml_Mlym_IN",
+                "ml"
+            }, {
+                "und_Mymr",
+                "my_Mymr_MM",
+                "my"
+            }, {
+                "und_NC",
+                "fr_Latn_NC",
+                "fr_NC"
+            }, {
+                "und_NE",
+                "ha_Latn_NE",
+                "ha_NE"
+            }, {
+                "und_NG",
+                "ha_Latn_NG",
+                "ha"
+            }, {
+                "und_NI",
+                "es_Latn_NI",
+                "es_NI"
+            }, {
+                "und_NL",
+                "nl_Latn_NL",
+                "nl"
+            }, {
+                "und_NO",
+                "nb_Latn_NO",
+                "nb"
+            }, {
+                "und_NP",
+                "ne_Deva_NP",
+                "ne"
+            }, {
+                "und_NR",
+                "na_Latn_NR",
+                "na"
+            }, {
+                "und_NU",
+                "niu_Latn_NU",
+                "niu"
+            }, {
+                "und_OM",
+                "ar_Arab_OM",
+                "ar_OM"
+            }, {
+                "und_Orya",
+                "or_Orya_IN",
+                "or"
+            }, {
+                "und_PA",
+                "es_Latn_PA",
+                "es_PA"
+            }, {
+                "und_PE",
+                "es_Latn_PE",
+                "es_PE"
+            }, {
+                "und_PF",
+                "ty_Latn_PF",
+                "ty"
+            }, {
+                "und_PG",
+                "tpi_Latn_PG",
+                "tpi"
+            }, {
+                "und_PH",
+                "fil_Latn_PH",
+                "fil"
+            }, {
+                "und_PL",
+                "pl_Latn_PL",
+                "pl"
+            }, {
+                "und_PM",
+                "fr_Latn_PM",
+                "fr_PM"
+            }, {
+                "und_PR",
+                "es_Latn_PR",
+                "es_PR"
+            }, {
+                "und_PS",
+                "ar_Arab_PS",
+                "ar_PS"
+            }, {
+                "und_PT",
+                "pt_Latn_PT",
+                "pt_PT"
+            }, {
+                "und_PW",
+                "pau_Latn_PW",
+                "pau"
+            }, {
+                "und_PY",
+                "gn_Latn_PY",
+                "gn"
+            }, {
+                "und_QA",
+                "ar_Arab_QA",
+                "ar_QA"
+            }, {
+                "und_RE",
+                "fr_Latn_RE",
+                "fr_RE"
+            }, {
+                "und_RO",
+                "ro_Latn_RO",
+                "ro"
+            }, {
+                "und_RS",
+                "sr_Cyrl_RS",
+                "sr"
+            }, {
+                "und_RU",
+                "ru_Cyrl_RU",
+                "ru"
+            }, {
+                "und_RW",
+                "rw_Latn_RW",
+                "rw"
+            }, {
+                "und_SA",
+                "ar_Arab_SA",
+                "ar_SA"
+            }, {
+                "und_SD",
+                "ar_Arab_SD",
+                "ar_SD"
+            }, {
+                "und_SE",
+                "sv_Latn_SE",
+                "sv"
+            }, {
+                "und_SG",
+                "en_Latn_SG",
+                "en_SG"
+            }, {
+                "und_SI",
+                "sl_Latn_SI",
+                "sl"
+            }, {
+                "und_SJ",
+                "nb_Latn_SJ",
+                "nb_SJ"
+            }, {
+                "und_SK",
+                "sk_Latn_SK",
+                "sk"
+            }, {
+                "und_SM",
+                "it_Latn_SM",
+                "it_SM"
+            }, {
+                "und_SN",
+                "fr_Latn_SN",
+                "fr_SN"
+            }, {
+                "und_SO",
+                "so_Latn_SO",
+                "so"
+            }, {
+                "und_SR",
+                "nl_Latn_SR",
+                "nl_SR"
+            }, {
+                "und_ST",
+                "pt_Latn_ST",
+                "pt_ST"
+            }, {
+                "und_SV",
+                "es_Latn_SV",
+                "es_SV"
+            }, {
+                "und_SY",
+                "ar_Arab_SY",
+                "ar_SY"
+            }, {
+                "und_Sinh",
+                "si_Sinh_LK",
+                "si"
+            }, {
+                "und_Syrc",
+                "en_Syrc_US",
+                "en_Syrc"
+            }, {
+                "und_TD",
+                "ar_Arab_TD",
+                "ar_TD"
+            }, {
+                "und_TG",
+                "ee_Latn_TG",
+                "ee_TG"
+            }, {
+                "und_TH",
+                "th_Thai_TH",
+                "th"
+            }, {
+                "und_TJ",
+                "tg_Cyrl_TJ",
+                "tg"
+            }, {
+                "und_TK",
+                "tkl_Latn_TK",
+                "tkl"
+            }, {
+                "und_TL",
+                "tet_Latn_TL",
+                "tet"
+            }, {
+                "und_TM",
+                "tk_Latn_TM",
+                "tk"
+            }, {
+                "und_TN",
+                "ar_Arab_TN",
+                "ar_TN"
+            }, {
+                "und_TO",
+                "to_Latn_TO",
+                "to"
+            }, {
+                "und_TR",
+                "tr_Latn_TR",
+                "tr"
+            }, {
+                "und_TV",
+                "tvl_Latn_TV",
+                "tvl"
+            }, {
+                "und_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Taml",
+                "ta_Taml_IN",
+                "ta"
+            }, {
+                "und_Telu",
+                "te_Telu_IN",
+                "te"
+            }, {
+                "und_Thaa",
+                "dv_Thaa_MV",
+                "dv"
+            }, {
+                "und_Thai",
+                "th_Thai_TH",
+                "th"
+            }, {
+                "und_Tibt",
+                "bo_Tibt_CN",
+                "bo"
+            }, {
+                "und_UA",
+                "uk_Cyrl_UA",
+                "uk"
+            }, {
+                "und_UY",
+                "es_Latn_UY",
+                "es_UY"
+            }, {
+                "und_UZ",
+                "uz_Cyrl_UZ",
+                "uz"
+            }, {
+                "und_VA",
+                "la_Latn_VA",
+                "la"
+            }, {
+                "und_VE",
+                "es_Latn_VE",
+                "es_VE"
+            }, {
+                "und_VN",
+                "vi_Latn_VN",
+                "vi"
+            }, {
+                "und_VU",
+                "fr_Latn_VU",
+                "fr_VU"
+            }, {
+                "und_WF",
+                "fr_Latn_WF",
+                "fr_WF"
+            }, {
+                "und_WS",
+                "sm_Latn_WS",
+                "sm"
+            }, {
+                "und_YE",
+                "ar_Arab_YE",
+                "ar_YE"
+            }, {
+                "und_YT",
+                "fr_Latn_YT",
+                "fr_YT"
+            }, {
+                "und_Yiii",
+                "en_Yiii_US",
+                "en_Yiii"
+            }, {
+                "ur",
+                "ur_Arab_PK",
+                "ur"
+            }, {
+                "uz",
+                "uz_Cyrl_UZ",
+                "uz"
+            }, {
+                "uz_AF",
+                "uz_Arab_AF",
+                "uz_AF"
+            }, {
+                "uz_Arab",
+                "uz_Arab_AF",
+                "uz_AF"
+            }, {
+                "ve",
+                "ve_Latn_ZA",
+                "ve"
+            }, {
+                "vi",
+                "vi_Latn_VN",
+                "vi"
+            }, {
+                "wal",
+                "wal_Ethi_ET",
+                "wal"
+            }, {
+                "wo",
+                "wo_Latn_SN",
+                "wo"
+            }, {
+                "wo_SN",
+                "wo_Latn_SN",
+                "wo"
+            }, {
+                "xh",
+                "xh_Latn_ZA",
+                "xh"
+            }, {
+                "yo",
+                "yo_Latn_NG",
+                "yo"
+            }, {
+                "zh",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "zh_Hani",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Hant",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_MO",
+                "zh_Hant_MO",
+                "zh_MO"
+            }, {
+                "zh_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zu",
+                "zu_Latn_ZA",
+                "zu"
+            }, {
+                "und",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_ZZ",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "und_AQ",
+                "en_Latn_AQ",
+                "en_AQ"
+            }, {
+                "und_Zzzz",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_Zzzz_ZZ",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_Zzzz_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Zzzz_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Zzzz_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "und_Zzzz_AQ",
+                "en_Latn_AQ",
+                "en_AQ"
+            }, {
+                "und_Latn",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_Latn_ZZ",
+                "en_Latn_US",
+                "en"
+            }, {
+                "und_Latn_CN",
+                "ii_Latn_CN",
+                "ii"
+            }, {
+                "und_Latn_TW",
+                "zh_Latn_TW",
+                "zh_Latn_TW"
+            }, {
+                "und_Latn_HK",
+                "zh_Latn_HK",
+                "zh_Latn_HK"
+            }, {
+                "und_Latn_AQ",
+                "en_Latn_AQ",
+                "en_AQ"
+            }, {
+                "und_Hans",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hans_ZZ",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hans_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "und_Hans_TW",
+                "zh_Hans_TW",
+                "zh_Hans_TW"
+            }, {
+                "und_Hans_HK",
+                "zh_Hans_HK",
+                "zh_Hans_HK"
+            }, {
+                "und_Hans_AQ",
+                "zh_Hans_AQ",
+                "zh_AQ"
+            }, {
+                "und_Hant",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Hant_ZZ",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Hant_CN",
+                "zh_Hant_CN",
+                "zh_Hant_CN"
+            }, {
+                "und_Hant_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "und_Hant_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "und_Hant_AQ",
+                "zh_Hant_AQ",
+                "zh_Hant_AQ"
+            }, {
+                "und_Moon",
+                "en_Moon_US",
+                "en_Moon"
+            }, {
+                "und_Moon_ZZ",
+                "en_Moon_US",
+                "en_Moon"
+            }, {
+                "und_Moon_CN",
+                "zh_Moon_CN",
+                "zh_Moon"
+            }, {
+                "und_Moon_TW",
+                "zh_Moon_TW",
+                "zh_Moon_TW"
+            }, {
+                "und_Moon_HK",
+                "zh_Moon_HK",
+                "zh_Moon_HK"
+            }, {
+                "und_Moon_AQ",
+                "en_Moon_AQ",
+                "en_Moon_AQ"
+            }, {
+                "es",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_ZZ",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_CN",
+                "es_Latn_CN",
+                "es_CN"
+            }, {
+                "es_TW",
+                "es_Latn_TW",
+                "es_TW"
+            }, {
+                "es_HK",
+                "es_Latn_HK",
+                "es_HK"
+            }, {
+                "es_AQ",
+                "es_Latn_AQ",
+                "es_AQ"
+            }, {
+                "es_Zzzz",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_Zzzz_ZZ",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_Zzzz_CN",
+                "es_Latn_CN",
+                "es_CN"
+            }, {
+                "es_Zzzz_TW",
+                "es_Latn_TW",
+                "es_TW"
+            }, {
+                "es_Zzzz_HK",
+                "es_Latn_HK",
+                "es_HK"
+            }, {
+                "es_Zzzz_AQ",
+                "es_Latn_AQ",
+                "es_AQ"
+            }, {
+                "es_Latn",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_Latn_ZZ",
+                "es_Latn_ES",
+                "es"
+            }, {
+                "es_Latn_CN",
+                "es_Latn_CN",
+                "es_CN"
+            }, {
+                "es_Latn_TW",
+                "es_Latn_TW",
+                "es_TW"
+            }, {
+                "es_Latn_HK",
+                "es_Latn_HK",
+                "es_HK"
+            }, {
+                "es_Latn_AQ",
+                "es_Latn_AQ",
+                "es_AQ"
+            }, {
+                "es_Hans",
+                "es_Hans_ES",
+                "es_Hans"
+            }, {
+                "es_Hans_ZZ",
+                "es_Hans_ES",
+                "es_Hans"
+            }, {
+                "es_Hans_CN",
+                "es_Hans_CN",
+                "es_Hans_CN"
+            }, {
+                "es_Hans_TW",
+                "es_Hans_TW",
+                "es_Hans_TW"
+            }, {
+                "es_Hans_HK",
+                "es_Hans_HK",
+                "es_Hans_HK"
+            }, {
+                "es_Hans_AQ",
+                "es_Hans_AQ",
+                "es_Hans_AQ"
+            }, {
+                "es_Hant",
+                "es_Hant_ES",
+                "es_Hant"
+            }, {
+                "es_Hant_ZZ",
+                "es_Hant_ES",
+                "es_Hant"
+            }, {
+                "es_Hant_CN",
+                "es_Hant_CN",
+                "es_Hant_CN"
+            }, {
+                "es_Hant_TW",
+                "es_Hant_TW",
+                "es_Hant_TW"
+            }, {
+                "es_Hant_HK",
+                "es_Hant_HK",
+                "es_Hant_HK"
+            }, {
+                "es_Hant_AQ",
+                "es_Hant_AQ",
+                "es_Hant_AQ"
+            }, {
+                "es_Moon",
+                "es_Moon_ES",
+                "es_Moon"
+            }, {
+                "es_Moon_ZZ",
+                "es_Moon_ES",
+                "es_Moon"
+            }, {
+                "es_Moon_CN",
+                "es_Moon_CN",
+                "es_Moon_CN"
+            }, {
+                "es_Moon_TW",
+                "es_Moon_TW",
+                "es_Moon_TW"
+            }, {
+                "es_Moon_HK",
+                "es_Moon_HK",
+                "es_Moon_HK"
+            }, {
+                "es_Moon_AQ",
+                "es_Moon_AQ",
+                "es_Moon_AQ"
+            }, {
+                "zh",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_ZZ",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "zh_AQ",
+                "zh_Hans_AQ",
+                "zh_AQ"
+            }, {
+                "zh_Zzzz",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Zzzz_ZZ",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Zzzz_CN",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Zzzz_TW",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_Zzzz_HK",
+                "zh_Hant_HK",
+                "zh_HK"
+            }, {
+                "zh_Zzzz_AQ",
+                "zh_Hans_AQ",
+                "zh_AQ"
+            }, {
+                "zh_Latn",
+                "zh_Latn_CN",
+                "zh_Latn"
+            }, {
+                "zh_Latn_ZZ",
+                "zh_Latn_CN",
+                "zh_Latn"
+            }, {
+                "zh_Latn_CN",
+                "zh_Latn_CN",
+                "zh_Latn"
+            }, {
+                "zh_Latn_TW",
+                "zh_Latn_TW",
+                "zh_Latn_TW"
+            }, {
+                "zh_Latn_HK",
+                "zh_Latn_HK",
+                "zh_Latn_HK"
+            }, {
+                "zh_Latn_AQ",
+                "zh_Latn_AQ",
+                "zh_Latn_AQ"
+            }, {
+                "zh_Hans",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Hans_ZZ",
+                "zh_Hans_CN",
+                "zh"
+            }, {
+                "zh_Hans_TW",
+                "zh_Hans_TW",
+                "zh_Hans_TW"
+            }, {
+                "zh_Hans_HK",
+                "zh_Hans_HK",
+                "zh_Hans_HK"
+            }, {
+                "zh_Hans_AQ",
+                "zh_Hans_AQ",
+                "zh_AQ"
+            }, {
+                "zh_Hant",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_Hant_ZZ",
+                "zh_Hant_TW",
+                "zh_TW"
+            }, {
+                "zh_Hant_CN",
+                "zh_Hant_CN",
+                "zh_Hant_CN"
+            }, {
+                "zh_Hant_AQ",
+                "zh_Hant_AQ",
+                "zh_Hant_AQ"
+            }, {
+                "zh_Moon",
+                "zh_Moon_CN",
+                "zh_Moon"
+            }, {
+                "zh_Moon_ZZ",
+                "zh_Moon_CN",
+                "zh_Moon"
+            }, {
+                "zh_Moon_CN",
+                "zh_Moon_CN",
+                "zh_Moon"
+            }, {
+                "zh_Moon_TW",
+                "zh_Moon_TW",
+                "zh_Moon_TW"
+            }, {
+                "zh_Moon_HK",
+                "zh_Moon_HK",
+                "zh_Moon_HK"
+            }, {
+                "zh_Moon_AQ",
+                "zh_Moon_AQ",
+                "zh_Moon_AQ"
+            }, {
+                "art",
+                "",
+                ""
+            }, {
+                "art_ZZ",
+                "",
+                ""
+            }, {
+                "art_CN",
+                "",
+                ""
+            }, {
+                "art_TW",
+                "",
+                ""
+            }, {
+                "art_HK",
+                "",
+                ""
+            }, {
+                "art_AQ",
+                "",
+                ""
+            }, {
+                "art_Zzzz",
+                "",
+                ""
+            }, {
+                "art_Zzzz_ZZ",
+                "",
+                ""
+            }, {
+                "art_Zzzz_CN",
+                "",
+                ""
+            }, {
+                "art_Zzzz_TW",
+                "",
+                ""
+            }, {
+                "art_Zzzz_HK",
+                "",
+                ""
+            }, {
+                "art_Zzzz_AQ",
+                "",
+                ""
+            }, {
+                "art_Latn",
+                "",
+                ""
+            }, {
+                "art_Latn_ZZ",
+                "",
+                ""
+            }, {
+                "art_Latn_CN",
+                "",
+                ""
+            }, {
+                "art_Latn_TW",
+                "",
+                ""
+            }, {
+                "art_Latn_HK",
+                "",
+                ""
+            }, {
+                "art_Latn_AQ",
+                "",
+                ""
+            }, {
+                "art_Hans",
+                "",
+                ""
+            }, {
+                "art_Hans_ZZ",
+                "",
+                ""
+            }, {
+                "art_Hans_CN",
+                "",
+                ""
+            }, {
+                "art_Hans_TW",
+                "",
+                ""
+            }, {
+                "art_Hans_HK",
+                "",
+                ""
+            }, {
+                "art_Hans_AQ",
+                "",
+                ""
+            }, {
+                "art_Hant",
+                "",
+                ""
+            }, {
+                "art_Hant_ZZ",
+                "",
+                ""
+            }, {
+                "art_Hant_CN",
+                "",
+                ""
+            }, {
+                "art_Hant_TW",
+                "",
+                ""
+            }, {
+                "art_Hant_HK",
+                "",
+                ""
+            }, {
+                "art_Hant_AQ",
+                "",
+                ""
+            }, {
+                "art_Moon",
+                "",
+                ""
+            }, {
+                "art_Moon_ZZ",
+                "",
+                ""
+            }, {
+                "art_Moon_CN",
+                "",
+                ""
+            }, {
+                "art_Moon_TW",
+                "",
+                ""
+            }, {
+                "art_Moon_HK",
+                "",
+                ""
+            }, {
+                "art_Moon_AQ",
+                "",
+                ""
+            }
+        };
+
+        for (int i = 0; i < full_data.length; i++) {
+            ULocale org = new ULocale(full_data[i][0]);
+            ULocale res = ULocale.addLikelySubtags(org);
+            String exp = full_data[i][1];
+            if (exp.length() == 0) {
+                if (!org.equals(res)) {
+                    errln("Original: " + full_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+                }
+            }
+            else if (!res.toString().equals(exp)) {
+                errln("Original: " + full_data[i][0] + " expected: " + exp + " - but got " + res.toString());
+            }
+        }
+
+        for (int i = 0; i < full_data.length; i++) {
+            String maximal = full_data[i][1];
+
+            if (maximal.length() > 0) {
+                ULocale org = new ULocale(maximal);
+                ULocale res = ULocale.minimizeSubtags(org);
+                String exp = full_data[i][2];
+                if (exp.length() == 0) {
+                    if (!org.equals(res)) {
+                        errln("Original: " + full_data[i][1] + " expected: " + exp + " - but got " + res.toString());
+                    }
+                }
+                else if (!res.toString().equals(exp)) {
+                    errln("Original: " + full_data[i][1] + " expected: " + exp + " - but got " + res.toString());
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/UnicodeLabel.java b/src/com/ibm/icu/dev/test/util/UnicodeLabel.java
new file mode 100644
index 0000000..cd75d5e
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodeLabel.java
@@ -0,0 +1,56 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+public abstract class UnicodeLabel {
+    
+    public abstract String getValue(int codepoint, boolean isShort);
+    
+    public String getValue(String s, String separator, boolean withCodePoint) {
+        if (s.length() == 1) { // optimize simple case
+            return getValue(s.charAt(0), withCodePoint); 
+        }
+        StringBuffer sb = new StringBuffer();
+        int cp;
+        for (int i = 0; i < s.length(); i+=UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s,i);
+            if (i != 0) sb.append(separator);
+            sb.append(getValue(cp, withCodePoint));
+        }
+        return sb.toString();
+    }
+    
+    public int getMaxWidth(boolean isShort) {
+        return 0;
+    }
+    
+    private static class Hex extends UnicodeLabel {
+        public String getValue(int codepoint, boolean isShort) {
+            if (isShort) return Utility.hex(codepoint,4);
+            return "U+" + Utility.hex(codepoint,4);
+        }       
+    }
+    
+    public static class Constant extends UnicodeLabel {
+        private String value;
+        public Constant(String value) {
+            if (value == null) value = "";
+            this.value = value;
+        }
+        public String getValue(int codepoint, boolean isShort) {
+            return value;
+        }
+        public int getMaxWidth(boolean isShort) {
+            return value.length();      
+        }
+    }
+    public static final UnicodeLabel NULL = new Constant("");
+    public static final UnicodeLabel HEX = new Hex();
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/UnicodeMap.java b/src/com/ibm/icu/dev/test/util/UnicodeMap.java
new file mode 100644
index 0000000..715181d
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodeMap.java
@@ -0,0 +1,897 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.*;
+import java.util.*;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.Freezable;
+/**
+ * Class for mapping Unicode characters to values
+ * Much smaller storage than using HashMap, and much faster and more compact than
+ * a list of UnicodeSets.
+ * @author Davis
+ */
+
+public final class UnicodeMap implements Cloneable, Freezable, Externalizable {
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -6540936876295804105L;
+    static final boolean ASSERTIONS = false;
+    static final long GROWTH_PERCENT = 200; // 100 is no growth!
+    static final long GROWTH_GAP = 10; // extra bump!
+
+    private int length;
+    // two parallel arrays to save memory. Wish Java had structs.
+    private int[] transitions;
+    private Object[] values;
+    
+    private LinkedHashSet availableValues = new LinkedHashSet();
+    private transient boolean staleAvailableValues;
+
+    private transient boolean errorOnReset;
+    private transient boolean locked;
+    private int lastIndex;
+    
+    { clear(); }
+    
+    public UnicodeMap clear() {
+        if (locked) throw new UnsupportedOperationException("Attempt to modify locked object");
+        length = 2;
+        transitions = new int[] {0,0x110000,0,0,0,0,0,0,0,0};
+        values = new Object[10];
+        
+        availableValues.clear();
+        staleAvailableValues = false;
+
+        errorOnReset = false;
+        lastIndex = 0;
+        return this;
+    }
+    
+    /* Boilerplate */
+    public boolean equals(Object other) {
+        if (other == null) return false;
+        try {
+            UnicodeMap that = (UnicodeMap) other;
+            if (length != that.length) return false;
+            for (int i = 0; i < length-1; ++i) {
+                if (transitions[i] != that.transitions[i]) return false;
+                if (!areEqual(values[i], that.values[i])) return false;
+            }
+            return true;
+        } catch (ClassCastException e) {
+            return false;
+        }
+    }
+    
+    public int getHashCode(Object o) {
+        return o.hashCode();
+        //equator.getHashCode
+    }
+    
+    public static boolean areEqual(Object a , Object b) {
+        if (a == b) return true;
+        if (a == null || b == null) return false;
+        return a.equals(b);
+    }
+    
+    public int hashCode() {
+        int result = length;
+        // TODO might want to abbreviate this for speed.
+        for (int i = 0; i < length-1; ++i) {
+            result = 37*result + transitions[i];
+            result = 37*result + getHashCode(values[i]);
+        }
+        return result;
+    }
+    
+    /**
+     * Standard clone. Warning, as with Collections, does not do deep clone.
+     */
+    public Object cloneAsThawed() {
+        UnicodeMap that = new UnicodeMap();
+        that.length = length;
+        that.transitions = (int[]) transitions.clone();
+        that.values = (Object[]) values.clone();
+        that.availableValues = new LinkedHashSet(availableValues);
+        that.locked = false;
+        return that;
+    }
+    
+    /* for internal consistency checking */
+    
+    void _checkInvariants() {
+        if (length < 2
+          || length > transitions.length
+          || transitions.length != values.length) {
+              throw new IllegalArgumentException("Invariant failed: Lengths bad");
+          }
+        for (int i = 1; i < length-1; ++i) {
+            if (areEqual(values[i-1], values[i])) {
+                throw new IllegalArgumentException("Invariant failed: values shared at " 
+                    + "\t" + Utility.hex(i-1) + ": <" + values[i-1] + ">"
+                    + "\t" + Utility.hex(i) + ": <" + values[i] + ">"
+                    );
+            }
+        }
+        if (transitions[0] != 0 || transitions[length-1] != 0x110000) {
+            throw new IllegalArgumentException("Invariant failed: bounds set wrong");
+        }
+        for (int i = 1; i < length-1; ++i) {
+            if (transitions[i-1] >= transitions[i]) {
+                throw new IllegalArgumentException("Invariant failed: not monotonic"
+                + "\t" + Utility.hex(i-1) + ": " + transitions[i-1]
+                + "\t" + Utility.hex(i) + ": " + transitions[i]
+                    );
+            }
+        }
+    }
+    
+    /**
+     * Finds an index such that inversionList[i] <= codepoint < inversionList[i+1]
+     * Assumes that 0 <= codepoint <= 0x10FFFF
+     * @param codepoint
+     * @return the index
+     */
+    private int _findIndex(int c) {
+        int lo = 0;
+        int hi = length - 1;
+        int i = (lo + hi) >>> 1;
+        // invariant: c >= list[lo]
+        // invariant: c < list[hi]
+        while (i != lo) {
+            if (c < transitions[i]) {
+                hi = i;
+            } else {
+                lo = i;
+            }
+            i = (lo + hi) >>> 1;
+        }
+        if (ASSERTIONS) _checkFind(c, lo);
+        return lo;
+    }
+    
+    private void _checkFind(int codepoint, int value) {
+        int other = __findIndex(codepoint);
+        if (other != value) {
+            throw new IllegalArgumentException("Invariant failed: binary search"
+                + "\t" + Utility.hex(codepoint) + ": " + value
+                + "\tshould be: " + other);            
+        }
+    }
+    
+    private int __findIndex(int codepoint) {
+        // TODO use binary search
+        for (int i = length-1; i > 0; --i) {
+            if (transitions[i] <= codepoint) return i;
+        }
+        return 0;
+    }
+    
+    /*
+     * Try indexed lookup
+     
+    static final int SHIFT = 8;
+    int[] starts = new int[0x10FFFF>>SHIFT]; // lowest transition index where codepoint>>x can be found
+    boolean startsValid = false;
+    private int findIndex(int codepoint) {
+        if (!startsValid) {
+            int start = 0;
+            for (int i = 1; i < length; ++i) {
+                
+            }
+        }
+        for (int i = length-1; i > 0; --i) {
+           if (transitions[i] <= codepoint) return i;
+       }
+       return 0;
+   }
+   */
+   
+    /**
+     * Remove the items from index through index+count-1.
+     * Logically reduces the size of the internal arrays.
+     * @param index
+     * @param count
+     */
+    private void _removeAt(int index, int count) {
+        for (int i = index + count; i < length; ++i) {
+            transitions[i-count] = transitions[i];
+            values[i-count] = values[i];
+        }
+        length -= count;
+    }
+    /**
+     * Add a gap from index to index+count-1.
+     * The values there are undefined, and must be set.
+     * Logically grows arrays to accomodate. Actual growth is limited
+     * @param index
+     * @param count
+     */
+    private void _insertGapAt(int index, int count) {
+        int newLength = length + count;
+        int[] oldtransitions = transitions;
+        Object[] oldvalues = values;
+        if (newLength > transitions.length) {
+            int allocation = (int) (GROWTH_GAP + (newLength * GROWTH_PERCENT) / 100);
+            transitions = new int[allocation];
+            values = new Object[allocation];
+            for (int i = 0; i < index; ++i) {
+                transitions[i] = oldtransitions[i];
+                values[i] = oldvalues[i];
+            }
+        } 
+        for (int i = length - 1; i >= index; --i) {
+            transitions[i+count] = oldtransitions[i];
+            values[i+count] = oldvalues[i];
+        }
+        length = newLength;
+    }
+    
+    /**
+     * Associates code point with value. Removes any previous association.
+     * @param codepoint
+     * @param value
+     * @return this, for chaining
+     */
+    private UnicodeMap _put(int codepoint, Object value) {
+        // Warning: baseIndex is an invariant; must
+        // be defined such that transitions[baseIndex] < codepoint
+        // at end of this routine.
+        int baseIndex;
+        if (transitions[lastIndex] <= codepoint 
+          && codepoint < transitions[lastIndex+1]) {
+            baseIndex = lastIndex;
+        } else { 
+            baseIndex = _findIndex(codepoint);
+        }
+        int limitIndex = baseIndex + 1;
+        // cases are (a) value is already set
+        if (areEqual(values[baseIndex], value)) return this;
+        if (locked) throw new UnsupportedOperationException("Attempt to modify locked object");
+        if (errorOnReset && values[baseIndex] != null) {
+            throw new IllegalArgumentException("Attempt to reset value for " + Utility.hex(codepoint)
+                    + " when that is disallowed. Old: " + values[baseIndex] + "; New: " + value);
+        }
+
+        // adjust the available values
+        staleAvailableValues = true;
+        availableValues.add(value); // add if not there already      
+
+        int baseCP = transitions[baseIndex];
+        int limitCP = transitions[limitIndex];
+        // we now start walking through the difference case,
+        // based on whether we are at the start or end of range
+        // and whether the range is a single character or multiple
+        
+        if (baseCP == codepoint) {
+            // CASE: At very start of range
+            boolean connectsWithPrevious = 
+                baseIndex != 0 && areEqual(value, values[baseIndex-1]);               
+                
+            if (limitCP == codepoint + 1) {
+                // CASE: Single codepoint range
+                boolean connectsWithFollowing =
+                    baseIndex < length - 1 && areEqual(value, values[limitIndex]);
+                
+                if (connectsWithPrevious) {
+                    // A1a connects with previous & following, so remove index
+                    if (connectsWithFollowing) {
+                        _removeAt(baseIndex, 2);
+                     } else {
+                        _removeAt(baseIndex, 1); // extend previous
+                    }
+                    --baseIndex; // fix up
+                } else if (connectsWithFollowing) {
+                    _removeAt(baseIndex, 1); // extend following backwards
+                    transitions[baseIndex] = codepoint; 
+                } else {
+                    // doesn't connect on either side, just reset
+                    values[baseIndex] = value;
+                }
+            } else if (connectsWithPrevious) {             
+            // A.1: start of multi codepoint range
+            // if connects
+                ++transitions[baseIndex]; // extend previous
+            } else {
+                // otherwise insert new transition
+                transitions[baseIndex] = codepoint+1; // fix following range
+                _insertGapAt(baseIndex, 1);
+                values[baseIndex] = value;
+                transitions[baseIndex] = codepoint;
+            }
+        } else if (limitCP == codepoint + 1) {
+            // CASE: at end of range        
+            // if connects, just back up range
+            boolean connectsWithFollowing =
+                baseIndex < length - 1 && areEqual(value, values[limitIndex]);
+
+            if (connectsWithFollowing) {
+                --transitions[limitIndex]; 
+                return this;                
+            } else {
+                _insertGapAt(limitIndex, 1);
+                transitions[limitIndex] = codepoint;
+                values[limitIndex] = value;
+            }
+        } else {
+            // CASE: in middle of range
+            // insert gap, then set the new range
+            _insertGapAt(++baseIndex,2);
+            transitions[baseIndex] = codepoint;
+            values[baseIndex] = value;
+            transitions[baseIndex+1] = codepoint + 1;
+            values[baseIndex+1] = values[baseIndex-1]; // copy lower range values
+        }
+        lastIndex = baseIndex; // store for next time
+        return this;
+    }
+    private UnicodeMap _putAll(int startCodePoint, int endCodePoint, Object value) {
+        for (int i = startCodePoint; i <= endCodePoint; ++i) {
+            _put(i, value);
+        }
+        return this;
+    }
+    /**
+     * Sets the codepoint value.
+     * @param codepoint
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap put(int codepoint, Object value) {
+        if (codepoint < 0 || codepoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: " + codepoint);
+        }
+        _put(codepoint, value);
+        if (ASSERTIONS) _checkInvariants();
+        return this;
+    }
+    /**
+     * Adds bunch o' codepoints; otherwise like put.
+     * @param codepoints
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap putAll(UnicodeSet codepoints, Object value) {
+        // TODO optimize
+        UnicodeSetIterator it = new UnicodeSetIterator(codepoints);
+        while (it.nextRange()) {
+            _putAll(it.codepoint, it.codepointEnd, value);
+        }
+        return this;
+    }
+    
+    /**
+     * Adds bunch o' codepoints; otherwise like add.
+     * @param startCodePoint
+     * @param endCodePoint
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap putAll(int startCodePoint, int endCodePoint, Object value) {
+        if (startCodePoint < 0 || endCodePoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: "
+             + Utility.hex(startCodePoint) + ".." + Utility.hex(endCodePoint));
+        }
+        // TODO optimize
+        for (int i = startCodePoint; i <= endCodePoint; ++i) {
+            _put(i, value);
+        }
+        return this;
+    }
+    /**
+     * Add all the (main) values from a Unicode property
+     * @param prop the property to add to the map
+     * @return this (for chaining)
+     */
+    public UnicodeMap putAll(UnicodeProperty prop) {
+        // TODO optimize
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            _put(i, prop.getValue(i));
+        }
+        return this;
+    }
+
+    /**
+     * Add all the (main) values from a Unicode property
+     * @param prop the property to add to the map
+     * @return this (for chaining)
+     */
+    public UnicodeMap putAll(UnicodeMap prop) {
+        // TODO optimize
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            _put(i, prop.getValue(i));
+        }
+        return this;
+    }
+
+    /**
+     * Set the currently unmapped Unicode code points to the given value.
+     * @param value the value to set
+     * @return this (for chaining)
+     */
+    public UnicodeMap setMissing(Object value) {
+        // fast path, if value not yet present
+        if (!getAvailableValues().contains(value)) {
+            staleAvailableValues = true;
+            availableValues.add(value);
+            for (int i = 0; i < length; ++i) {
+                if (values[i] == null) values[i] = value;
+            }
+            return this;
+        } else {
+            return putAll(getSet(null), value);
+        }
+    }
+    /**
+     * Returns the set associated with a given value. Deposits into
+     * result if it is not null. Remember to clear if you just want
+     * the new values.
+     * @param value
+     * @param result
+     * @return result
+     */
+    public UnicodeSet getSet(Object value, UnicodeSet result) {
+        if (result == null) result = new UnicodeSet();
+        for (int i = 0; i < length - 1; ++i) {
+            if (areEqual(value, values[i])) {
+                result.add(transitions[i], transitions[i+1]-1);
+            } 
+        }
+        return result;
+    }
+
+    public UnicodeSet getSet(Object value) {
+        return getSet(value,null);
+    }
+
+    public UnicodeSet keySet() {
+        return getSet(null,null).complement();
+    }
+    /**
+     * Returns the list of possible values. Deposits each non-null value into
+     * result. Creates result if it is null. Remember to clear result if
+     * you are not appending to existing collection.
+     * @param result
+     * @return result
+     */
+    public Collection getAvailableValues(Collection result) {
+        if (staleAvailableValues) {
+            // collect all the current values
+            // retain them in the availableValues
+            Set temp = new HashSet();
+            for (int i = 0; i < length - 1; ++i) {
+                if (values[i] != null) temp.add(values[i]);
+            }
+            availableValues.retainAll(temp);
+            staleAvailableValues = false;
+        }
+        if (result == null) result = new ArrayList(availableValues.size());
+        result.addAll(availableValues);
+        return result;
+    }
+    
+    /**
+     * Convenience method
+     */
+    public Collection getAvailableValues() {
+        return getAvailableValues(null);
+    }
+    /**
+     * Gets the value associated with a given code point.
+     * Returns null, if there is no such value.
+     * @param codepoint
+     * @return the value
+     */
+    public Object getValue(int codepoint) {
+        if (codepoint < 0 || codepoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: " + codepoint);
+        }
+        return values[_findIndex(codepoint)];
+    }
+    
+    /**
+     * Change a new string from the source string according to the mappings. For each code point cp, if getValue(cp) is null, append the character, otherwise append getValue(cp).toString()
+     * @param source
+     * @return
+     */
+    public String fold(String source) {
+        StringBuffer result = new StringBuffer();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+          cp = UTF16.charAt(source, i);
+          Object mResult = getValue(cp);
+          if (mResult != null) {
+            result.append(mResult);
+          } else {
+            UTF16.append(result, cp);
+          }
+        }
+        return result.toString();
+      }
+    
+    public interface Composer {
+        Object compose(int codePoint, Object a, Object b);
+    }
+    
+    public UnicodeMap composeWith(UnicodeMap other, Composer composer) {
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            Object v1 = getValue(i);
+            Object v2 = other.getValue(i);
+            Object v3 = composer.compose(i, v1, v2);
+            if (v1 != v3 && (v1 == null || !v1.equals(v3))) put(i, v3);
+        }
+        return this;
+    }
+    
+    public UnicodeMap composeWith(UnicodeSet set, Object value, Composer composer) {
+        for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
+            int i = it.codepoint;
+            Object v1 = getValue(i);
+            Object v3 = composer.compose(i, v1, value);
+            if (v1 != v3 && (v1 == null || !v1.equals(v3))) put(i, v3);
+        }
+        return this;
+    }
+    
+    /**
+     * Follow the style used by UnicodeSetIterator
+     */
+    public static class MapIterator {
+        public int codepoint;
+        public int codepointEnd;
+        public Object value;
+        
+        private UnicodeMap map;
+        private int index;
+        private int startRange;
+        private int endRange;
+        private Object lastValue;
+        
+        public MapIterator(UnicodeMap map) {
+            reset(map);
+        }
+        // note: length of 2 means {0, 110000}. Only want to index up to 0!
+        public boolean nextRange() {
+            if (index < 0 || index >= map.length - 1) return false;
+            value = map.values[index];
+            codepoint = startRange = map.transitions[index++];
+            codepointEnd = endRange = map.transitions[index] - 1; // -1 to make limit into end
+            return true;
+        }
+        public boolean next() {
+            if (startRange > endRange) {
+                //System.out.println("***" + Utility.hex(startRange) + ".." + Utility.hex(endRange));
+                if (!nextRange()) return false;
+                // index now points AFTER the start of the range
+                lastValue = map.values[index-1];
+                //System.out.println("***" + Utility.hex(codepoint) + ".." + Utility.hex(codepointEnd) + " => " + lastValue);
+            }
+            value = lastValue;
+            codepoint = codepointEnd = startRange++; // set to first, and iterate
+            return true;
+        }
+
+        public MapIterator reset() {
+            index = 0;
+            startRange = 0;
+            endRange = -1;
+            return this;
+        }
+        public MapIterator reset(UnicodeMap newMap) {
+            this.map = newMap;
+            return reset();
+        }
+    }
+    
+    public String toString() {
+        return toString(null);
+    }
+    public String toString(Comparator collected) {
+        StringBuffer result = new StringBuffer();       
+        if (collected == null) {
+            for (int i = 0; i < length-1; ++i) {
+                Object value = values[i];
+                if (value == null) continue;
+                int start = transitions[i];
+                int end = transitions[i+1]-1;
+                result.append(Utility.hex(start));
+                if (start != end) result.append("..")
+                .append(Utility.hex(end));
+                result.append("\t=> ")
+                .append(values[i] == null ? "null" : values[i].toString())
+                .append("\r\n");
+            }
+        } else {
+            Set set = (Set) getAvailableValues(new TreeSet(collected));
+            for (Iterator it = set.iterator(); it.hasNext();) {
+                Object value = it.next();
+                UnicodeSet s = getSet(value);
+                result.append(value)
+                .append("\t=> ")
+                .append(s.toPattern(true))
+                .append("\r\n");
+            }
+        }
+        return result.toString();
+    }
+    /**
+     * @return Returns the errorOnReset.
+     */
+    public boolean getErrorOnReset() {
+        return errorOnReset;
+    }
+    /**
+     * @param errorOnReset The errorOnReset to set.
+     */
+    public void setErrorOnReset(boolean errorOnReset) {
+        this.errorOnReset = errorOnReset;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.util.Lockable#isLocked()
+     */
+    public boolean isFrozen() {
+        // TODO Auto-generated method stub
+        return locked;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.util.Lockable#lock()
+     */
+    public Object freeze() {
+        locked = true;
+        return this;
+    }
+    
+    static final boolean DEBUG_WRITE = false;
+    
+    // TODO Fix to serialize more than just strings.
+    // Only if all the items are strings will we do the following compression
+    // Otherwise we'll just use Java Serialization, bulky as it is
+    public void writeExternal(ObjectOutput out1) throws IOException {
+        DataOutputCompressor sc = new DataOutputCompressor(out1);
+        // if all objects are strings
+        Collection availableVals = getAvailableValues();
+        boolean allStrings = allAreString(availableVals);
+        sc.writeBoolean(allStrings);
+        Map object_index = new LinkedHashMap();
+        if (allAreString(availableVals)) {
+            sc.writeStringSet(new TreeSet(availableVals), object_index);
+        } else {
+            sc.writeCollection(availableVals, object_index);           
+        }
+        sc.writeUInt(length);
+        int lastTransition = -1;
+        int lastValueNumber = 0;
+        if (DEBUG_WRITE) System.out.println("Trans count: " + length);
+        for (int i = 0; i < length; ++i) {
+            int valueNumber = ((Integer)object_index.get(values[i])).intValue();
+            if (DEBUG_WRITE) System.out.println("Trans: " + transitions[i] + ",\t" + valueNumber);
+            
+            int deltaTransition = transitions[i] - lastTransition;
+            lastTransition = transitions[i];
+            int deltaValueNumber = valueNumber - lastValueNumber;
+            lastValueNumber = valueNumber;
+            
+            deltaValueNumber <<= 1; // make room for one bit
+            boolean canCombine = deltaTransition == 1;
+            if (canCombine) deltaValueNumber |= 1;
+            sc.writeInt(deltaValueNumber);
+            if (DEBUG_WRITE) System.out.println("deltaValueNumber: " + deltaValueNumber);
+            if (!canCombine) {
+                sc.writeUInt(deltaTransition);
+                if (DEBUG_WRITE) System.out.println("deltaTransition: " + deltaTransition);
+            }
+        }
+        sc.flush();
+    }
+
+    /**
+     * 
+     */
+    private boolean allAreString(Collection availableValues2) {
+        //if (true) return false;
+        for (Iterator it = availableValues2.iterator(); it.hasNext();) {
+            if (!(it.next() instanceof String)) return false;
+        }
+        return true;
+    }
+
+    public void readExternal(ObjectInput in1) throws IOException, ClassNotFoundException {
+        DataInputCompressor sc = new DataInputCompressor(in1);
+        boolean allStrings = sc.readBoolean();
+        Object[] valuesList;
+        availableValues = new LinkedHashSet();
+        if (allStrings) {
+            valuesList = sc.readStringSet(availableValues);
+        } else {
+            valuesList = sc.readCollection(availableValues);            
+        }
+        length = sc.readUInt();
+        transitions = new int[length];
+        if (DEBUG_WRITE) System.out.println("Trans count: " + length);
+        values = new Object[length];
+        int currentTransition = -1;
+        int currentValue = 0;
+        int deltaTransition;
+        for (int i = 0; i < length; ++i) {
+            int temp = sc.readInt();
+            if (DEBUG_WRITE) System.out.println("deltaValueNumber: " + temp);
+            boolean combined = (temp & 1) != 0;
+            temp >>= 1;
+            values[i] = valuesList[currentValue += temp];
+            if (!combined) {
+                deltaTransition = sc.readUInt();
+                if (DEBUG_WRITE) System.out.println("deltaTransition: " + deltaTransition);
+            } else {
+                deltaTransition = 1;
+            }
+            transitions[i] = currentTransition += deltaTransition; // delta value
+            if (DEBUG_WRITE) System.out.println("Trans: " + transitions[i] + ",\t" + currentValue);
+        }
+    }
+
+    /**
+     * 
+     */
+    static int findCommon(String last, String s) {
+        int minLen = Math.min(last.length(), s.length());
+        for (int i = 0; i < minLen; ++i) {
+            if (last.charAt(i) != s.charAt(i)) return i;
+        }
+        return minLen;
+    }
+
+
+//    /**
+//     * @param sc
+//     * @throws IOException
+//     * 
+//     */
+//    private void showSize(String title, ObjectOutput out, StreamCompressor sc) throws IOException {
+//        sc.showSize(this, title, out);
+//    }
+//    //public void readObject(ObjectInputStream in) throws IOException {
+//    public static class StreamCompressor {
+//        transient byte[] buffer = new byte[1];
+//        transient StringBuffer stringBuffer = new StringBuffer();
+//        
+//        transient byte[] readWriteBuffer = new byte[8];
+//        int position = 0;
+//        DataOutput out;
+//        DataInput in;
+//
+//        /**
+//         * Format is:
+//         * @throws IOException
+//         */
+//        public void writeInt(int i) throws IOException {
+//            while (true) {
+//                if (position == readWriteBuffer.length) {
+//                    out.write(readWriteBuffer);
+//                    position = 0;
+//                }
+//                if ((i & ~0x7F) == 0) {
+//                    readWriteBuffer[position++] = (byte)i;
+//                    break;
+//                }
+//                readWriteBuffer[position++] = (byte)(0x80 | i);
+//                i >>>= 7;
+//            }
+//        }
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public int readNInt(ObjectInput in) throws IOException {
+//            int result = readInt(in);
+//            boolean negative = (result & 1) != 0;
+//            result >>>= 1;
+//            if (negative) result = ~result;
+//            return result;
+//        }
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public void writeNInt(int input) throws IOException {
+//            int flag = 0;
+//            if (input < 0) {
+//                input = ~input;
+//                flag = 1;
+//            }
+//            input = (input << 1) | flag;
+//            writeInt(out, input);
+//        }
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public void flush() throws IOException {
+//            out.write(readWriteBuffer);
+//            position = 0;
+//        }
+//        
+//        int readPosition = readWriteBuffer.length;
+//        
+//        public int readInt(ObjectInput in) throws IOException {
+//            int result = 0;
+//            int offset = 0;
+//            while (true) {
+//                if (readPosition == readWriteBuffer.length) {
+//                    in.read(readWriteBuffer);
+//                    readPosition = 0;
+//                }
+//                //in.read(buffer);
+//                int input = readWriteBuffer[readPosition++]; // buffer[0];
+//                result |= (input & 0x7F) << offset;
+//                if ((input & 0x80) == 0) {
+//                    return result;
+//                }
+//                offset += 7;
+//            }  
+//        }
+//
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public void writeString(String s) throws IOException {
+//            writeInt(UTF16.countCodePoint(s));
+//            writeCodePoints(s);
+//        }
+//        /**
+//         * 
+//         */
+//        private void writeCodePoints(String s) throws IOException {
+//            int cp = 0;
+//            for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+//                cp = UTF16.charAt(s, i);
+//                writeInt(cp);
+//            }
+//        }
+//        /**
+//         * @throws IOException
+//         * 
+//         */
+//        public String readString() throws IOException {
+//            int len = readInt(in);
+//            return readCodePoints(in, len);
+//        }
+//        /**
+//         * 
+//         */
+//        private String readCodePoints(int len) throws IOException {
+//            stringBuffer.setLength(0);
+//            for (int i = 0; i < len; ++i) {
+//                int cp = readInt(in);
+//                UTF16.append(stringBuffer, cp);
+//            }
+//            return stringBuffer.toString();
+//        }
+//        /**
+//         * @param this
+//         * @throws IOException
+//         * 
+//         */
+//        private void showSize(UnicodeMap map, String title, ObjectOutput out) throws IOException {
+//            out.flush();
+//            System.out.println(title + ": " + (map.debugOut.size() + position));
+//        }
+//    }
+}
+//#endif
diff --git a/src/com/ibm/icu/dev/test/util/UnicodeProperty.java b/src/com/ibm/icu/dev/test/util/UnicodeProperty.java
new file mode 100644
index 0000000..74b65bb
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodeProperty.java
@@ -0,0 +1,1240 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.regex.Pattern;
+
+import com.ibm.icu.dev.test.util.CollectionUtilities.InverseMatcher;
+import com.ibm.icu.dev.test.util.CollectionUtilities.ObjectMatcher;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.SymbolTable;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeMatcher;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+public abstract class UnicodeProperty extends UnicodeLabel {
+
+    public static boolean DEBUG = false;
+
+    public static String CHECK_NAME = "FC_NFKC_Closure";
+
+    public static int CHECK_VALUE = 0x037A;
+
+    private String name;
+
+    private String firstNameAlias = null;
+
+    private int type;
+
+    private Map valueToFirstValueAlias = null;
+
+    /*
+     * Name: Unicode_1_Name Name: ISO_Comment Name: Name Name: Unicode_1_Name
+     * 
+     */
+
+    public static final int UNKNOWN = 0, BINARY = 2, EXTENDED_BINARY = 3,
+            ENUMERATED = 4, EXTENDED_ENUMERATED = 5, CATALOG = 6,
+            EXTENDED_CATALOG = 7, MISC = 8, EXTENDED_MISC = 9, STRING = 10,
+            EXTENDED_STRING = 11, NUMERIC = 12, EXTENDED_NUMERIC = 13,
+            START_TYPE = 2, LIMIT_TYPE = 14, EXTENDED_MASK = 1,
+            CORE_MASK = ~EXTENDED_MASK, BINARY_MASK = (1 << BINARY)
+                    | (1 << EXTENDED_BINARY), STRING_MASK = (1 << STRING)
+                    | (1 << EXTENDED_STRING),
+            STRING_OR_MISC_MASK = (1 << STRING) | (1 << EXTENDED_STRING)
+                    | (1 << MISC) | (1 << EXTENDED_MISC),
+            ENUMERATED_OR_CATALOG_MASK = (1 << ENUMERATED)
+                    | (1 << EXTENDED_ENUMERATED) | (1 << CATALOG)
+                    | (1 << EXTENDED_CATALOG);
+
+    private static final String[] TYPE_NAMES = { "Unknown", "Unknown",
+            "Binary", "Extended Binary", "Enumerated", "Extended Enumerated",
+            "Catalog", "Extended Catalog", "Miscellaneous",
+            "Extended Miscellaneous", "String", "Extended String", "Numeric",
+            "Extended Numeric", };
+
+    public static String getTypeName(int propType) {
+        return TYPE_NAMES[propType];
+    }
+
+    public final String getName() {
+        return name;
+    }
+
+    public final int getType() {
+        return type;
+    }
+
+    public final boolean isType(int mask) {
+        return ((1 << type) & mask) != 0;
+    }
+
+    protected final void setName(String string) {
+        if (string == null)
+            throw new IllegalArgumentException("Name must not be null");
+        name = string;
+    }
+
+    protected final void setType(int i) {
+        type = i;
+    }
+
+    public String getVersion() {
+        return _getVersion();
+    }
+
+    public String getValue(int codepoint) {
+        if (DEBUG && CHECK_VALUE == codepoint && CHECK_NAME.equals(getName())) {
+            String value = _getValue(codepoint);
+            System.out.println(getName() + "(" + Utility.hex(codepoint) + "):"
+                    + (getType() == STRING ? Utility.hex(value) : value));
+            return value;
+        }
+        return _getValue(codepoint);
+    }
+
+    // public String getValue(int codepoint, boolean isShort) {
+    // return getValue(codepoint);
+    // }
+
+    public List getNameAliases(List result) {
+        if (result == null)
+            result = new ArrayList(1);
+        return _getNameAliases(result);
+    }
+
+    public List getValueAliases(String valueAlias, List result) {
+        if (result == null)
+            result = new ArrayList(1);
+        result = _getValueAliases(valueAlias, result);
+        if (!result.contains(valueAlias)) { // FIX && type < NUMERIC
+            result = _getValueAliases(valueAlias, result); // for debugging
+            throw new IllegalArgumentException("Internal error: " + getName()
+                    + " doesn't contain " + valueAlias + ": "
+                    + new BagFormatter().join(result));
+        }
+        return result;
+    }
+
+    public List getAvailableValues(List result) {
+        if (result == null)
+            result = new ArrayList(1);
+        return _getAvailableValues(result);
+    }
+
+    protected abstract String _getVersion();
+
+    protected abstract String _getValue(int codepoint);
+
+    protected abstract List _getNameAliases(List result);
+
+    protected abstract List _getValueAliases(String valueAlias, List result);
+
+    protected abstract List _getAvailableValues(List result);
+
+    // conveniences
+    public final List getNameAliases() {
+        return getNameAliases(null);
+    }
+
+    public final List getValueAliases(String valueAlias) {
+        return getValueAliases(valueAlias, null);
+    }
+
+    public final List getAvailableValues() {
+        return getAvailableValues(null);
+    }
+
+    public final String getValue(int codepoint, boolean getShortest) {
+        String result = getValue(codepoint);
+        if (type >= MISC || result == null || !getShortest)
+            return result;
+        return getFirstValueAlias(result);
+    }
+
+    public final String getFirstNameAlias() {
+        if (firstNameAlias == null) {
+            firstNameAlias = (String) getNameAliases().get(0);
+        }
+        return firstNameAlias;
+    }
+
+    public final String getFirstValueAlias(String value) {
+        if (valueToFirstValueAlias == null)
+            _getFirstValueAliasCache();
+        return (String) valueToFirstValueAlias.get(value);
+    }
+
+    private void _getFirstValueAliasCache() {
+        maxValueWidth = 0;
+        maxFirstValueAliasWidth = 0;
+        valueToFirstValueAlias = new HashMap(1);
+        Iterator it = getAvailableValues().iterator();
+        while (it.hasNext()) {
+            String value = (String) it.next();
+            String first = (String) getValueAliases(value).get(0);
+            if (first == null) { // internal error
+                throw new IllegalArgumentException(
+                        "Value not in value aliases: " + value);
+            }
+            if (DEBUG && CHECK_NAME.equals(getName())) {
+                System.out.println("First Alias: " + getName() + ": " + value
+                        + " => " + first
+                        + new BagFormatter().join(getValueAliases(value)));
+            }
+            valueToFirstValueAlias.put(value, first);
+            if (value.length() > maxValueWidth) {
+                maxValueWidth = value.length();
+            }
+            if (first.length() > maxFirstValueAliasWidth) {
+                maxFirstValueAliasWidth = first.length();
+            }
+        }
+    }
+
+    private int maxValueWidth = -1;
+
+    private int maxFirstValueAliasWidth = -1;
+
+    public int getMaxWidth(boolean getShortest) {
+        if (maxValueWidth < 0)
+            _getFirstValueAliasCache();
+        if (getShortest)
+            return maxFirstValueAliasWidth;
+        return maxValueWidth;
+    }
+
+    public final UnicodeSet getSet(String propertyValue) {
+        return getSet(propertyValue, null);
+    }
+
+    public final UnicodeSet getSet(PatternMatcher matcher) {
+        return getSet(matcher, null);
+    }
+
+    public final UnicodeSet getSet(String propertyValue, UnicodeSet result) {
+        return getSet(new SimpleMatcher(propertyValue,
+                isType(STRING_OR_MISC_MASK) ? null : PROPERTY_COMPARATOR),
+                result);
+    }
+
+    private UnicodeMap unicodeMap = null;
+
+    public static final String UNUSED = "??";
+
+    public final UnicodeSet getSet(PatternMatcher matcher, UnicodeSet result) {
+        if (result == null)
+            result = new UnicodeSet();
+        if (isType(STRING_OR_MISC_MASK)) {
+            for (int i = 0; i <= 0x10FFFF; ++i) {
+                String value = getValue(i);
+                if (value != null && matcher.matches(value)) {
+                    result.add(i);
+                }
+            }
+            return result;
+        }
+        List temp = new ArrayList(1); // to avoid reallocating...
+        UnicodeMap um = getUnicodeMap_internal();
+        Iterator it = um.getAvailableValues(null).iterator();
+        main: while (it.hasNext()) {
+            String value = (String) it.next();
+            temp.clear();
+            Iterator it2 = getValueAliases(value, temp).iterator();
+            while (it2.hasNext()) {
+                String value2 = (String) it2.next();
+                // System.out.println("Values:" + value2);
+                if (matcher.matches(value2)
+                        || matcher.matches(toSkeleton(value2))) {
+                    um.getSet(value, result);
+                    continue main;
+                }
+            }
+        }
+        return result;
+    }
+
+    /*
+     * public UnicodeSet getMatchSet(UnicodeSet result) { if (result == null)
+     * result = new UnicodeSet(); addAll(matchIterator, result); return result; }
+     * 
+     * public void setMatchSet(UnicodeSet set) { matchIterator = new
+     * UnicodeSetIterator(set); }
+     */
+
+    /**
+     * Utility for debugging
+     */
+    public static String getStack() {
+        Exception e = new Exception();
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        e.printStackTrace(pw);
+        pw.flush();
+        return "Showing Stack with fake " + sw.getBuffer().toString();
+    }
+
+    // TODO use this instead of plain strings
+    public static class Name implements Comparable {
+        private String skeleton;
+
+        private String pretty;
+
+        public final int RAW = 0, TITLE = 1, NORMAL = 2;
+
+        public Name(String name, int style) {
+            if (name == null)
+                name = "";
+            if (style == RAW) {
+                skeleton = pretty = name;
+            } else {
+                pretty = regularize(name, style == TITLE);
+                skeleton = toSkeleton(pretty);
+            }
+        }
+
+        public int compareTo(Object o) {
+            return skeleton.compareTo(((Name) o).skeleton);
+        }
+
+        public boolean equals(Object o) {
+            return skeleton.equals(((Name) o).skeleton);
+        }
+
+        public int hashCode() {
+            return skeleton.hashCode();
+        }
+
+        public String toString() {
+            return pretty;
+        }
+    }
+
+    /**
+     * @return the unicode map
+     */
+    public UnicodeMap getUnicodeMap() {
+        return getUnicodeMap(false);
+    }
+
+    /**
+     * @return the unicode map
+     */
+    public UnicodeMap getUnicodeMap(boolean getShortest) {
+        if (!getShortest)
+            return (UnicodeMap) getUnicodeMap_internal().cloneAsThawed();
+        UnicodeMap result = new UnicodeMap();
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            // if (DEBUG && i == 0x41) System.out.println(i + "\t" +
+            // getValue(i));
+            String value = getValue(i, true);
+            result.put(i, value);
+        }
+        return result;
+    }
+
+    /**
+     * @return the unicode map
+     */
+    protected UnicodeMap getUnicodeMap_internal() {
+        if (unicodeMap == null)
+            unicodeMap = _getUnicodeMap();
+        return unicodeMap;
+    }
+
+    protected UnicodeMap _getUnicodeMap() {
+        UnicodeMap result = new UnicodeMap();
+        HashMap myIntern = new HashMap();
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            // if (DEBUG && i == 0x41) System.out.println(i + "\t" +
+            // getValue(i));
+            String value = getValue(i);
+            String iValue = (String) myIntern.get(value);
+            if (iValue == null)
+                myIntern.put(value, iValue = value);
+            result.put(i, iValue);
+        }
+        if (DEBUG) {
+            for (int i = 0; i <= 0x10FFFF; ++i) {
+                // if (DEBUG && i == 0x41) System.out.println(i + "\t" +
+                // getValue(i));
+                String value = getValue(i);
+                String resultValue = (String) result.getValue(i);
+                if (!value.equals(resultValue)) {
+                    throw new RuntimeException("Value failure at: "
+                            + Utility.hex(i));
+                }
+            }
+        }
+        if (DEBUG && CHECK_NAME.equals(getName())) {
+            System.out.println(getName() + ":\t" + getClass().getName() + "\t"
+                    + getVersion());
+            System.out.println(getStack());
+            System.out.println(result);
+        }
+        return result;
+    }
+
+    /**
+     * Really ought to create a Collection UniqueList, that forces uniqueness.
+     * But for now...
+     */
+    public static Collection addUnique(Object obj, Collection result) {
+        if (obj != null && !result.contains(obj))
+            result.add(obj);
+        return result;
+    }
+
+    /**
+     * Utility for managing property & non-string value aliases
+     */
+    public static final Comparator PROPERTY_COMPARATOR = new Comparator() {
+        public int compare(Object o1, Object o2) {
+            return compareNames((String) o1, (String) o2);
+        }
+    };
+
+    /**
+     * Utility for managing property & non-string value aliases
+     * 
+     */
+    // TODO optimize
+    public static boolean equalNames(String a, String b) {
+        if (a == b)
+            return true;
+        if (a == null)
+            return false;
+        return toSkeleton(a).equals(toSkeleton(b));
+    }
+
+    /**
+     * Utility for managing property & non-string value aliases
+     */
+    // TODO optimize
+    public static int compareNames(String a, String b) {
+        if (a == b)
+            return 0;
+        if (a == null)
+            return -1;
+        if (b == null)
+            return 1;
+        return toSkeleton(a).compareTo(toSkeleton(b));
+    }
+
+    /**
+     * Utility for managing property & non-string value aliases
+     */
+    // TODO account for special names, tibetan, hangul
+    public static String toSkeleton(String source) {
+        if (source == null)
+            return null;
+        StringBuffer skeletonBuffer = new StringBuffer();
+        boolean gotOne = false;
+        // remove spaces, '_', '-'
+        // we can do this with char, since no surrogates are involved
+        for (int i = 0; i < source.length(); ++i) {
+            char ch = source.charAt(i);
+            if (i > 0 && (ch == '_' || ch == ' ' || ch == '-')) {
+                gotOne = true;
+            } else {
+                char ch2 = Character.toLowerCase(ch);
+                if (ch2 != ch) {
+                    gotOne = true;
+                    skeletonBuffer.append(ch2);
+                } else {
+                    skeletonBuffer.append(ch);
+                }
+            }
+        }
+        if (!gotOne)
+            return source; // avoid string creation
+        return skeletonBuffer.toString();
+    }
+
+    // get the name skeleton
+    public static String toNameSkeleton(String source) {
+        if (source == null)
+            return null;
+        StringBuffer result = new StringBuffer();
+        // remove spaces, medial '-'
+        // we can do this with char, since no surrogates are involved
+        for (int i = 0; i < source.length(); ++i) {
+            char ch = source.charAt(i);
+            if (('0' <= ch && ch <= '9') || ('A' <= ch && ch <= 'Z')
+                    || ch == '<' || ch == '>') {
+                result.append(ch);
+            } else if (ch == ' ') {
+                // don't copy ever
+            } else if (ch == '-') {
+                // only copy non-medials AND trailing O-E
+                if (0 == i
+                        || i == source.length() - 1
+                        || source.charAt(i - 1) == ' '
+                        || source.charAt(i + 1) == ' '
+                        || (i == source.length() - 2
+                                && source.charAt(i - 1) == 'O' && source
+                                .charAt(i + 1) == 'E')) {
+                    System.out.println("****** EXCEPTION " + source);
+                    result.append(ch);
+                }
+                // otherwise don't copy
+            } else {
+                throw new IllegalArgumentException("Illegal Name Char: U+"
+                        + Utility.hex(ch) + ", " + ch);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * These routines use the Java functions, because they only need to act on
+     * ASCII Changes space, - into _, inserts _ between lower and UPPER.
+     */
+    public static String regularize(String source, boolean titlecaseStart) {
+        if (source == null)
+            return source;
+        /*
+         * if (source.equals("noBreak")) { // HACK if (titlecaseStart) return
+         * "NoBreak"; return source; }
+         */
+        StringBuffer result = new StringBuffer();
+        int lastCat = -1;
+        boolean haveFirstCased = true;
+        for (int i = 0; i < source.length(); ++i) {
+            char c = source.charAt(i);
+            if (c == ' ' || c == '-' || c == '_') {
+                c = '_';
+                haveFirstCased = true;
+            }
+            if (c == '=')
+                haveFirstCased = true;
+            int cat = Character.getType(c);
+            if (lastCat == Character.LOWERCASE_LETTER
+                    && cat == Character.UPPERCASE_LETTER) {
+                result.append('_');
+            }
+            if (haveFirstCased
+                    && (cat == Character.LOWERCASE_LETTER
+                            || cat == Character.TITLECASE_LETTER || cat == Character.UPPERCASE_LETTER)) {
+                if (titlecaseStart) {
+                    c = Character.toUpperCase(c);
+                }
+                haveFirstCased = false;
+            }
+            result.append(c);
+            lastCat = cat;
+        }
+        return result.toString();
+    }
+
+    /**
+     * Utility function for comparing codepoint to string without generating new
+     * string.
+     * 
+     * @param codepoint
+     * @param other
+     * @return true if the codepoint equals the string
+     */
+    public static final boolean equals(int codepoint, String other) {
+        if (other.length() == 1) {
+            return codepoint == other.charAt(0);
+        }
+        if (other.length() == 2) {
+            return other.equals(UTF16.valueOf(codepoint));
+        }
+        return false;
+    }
+
+    /**
+     * Utility that should be on UnicodeSet
+     * 
+     * @param source
+     * @param result
+     */
+    static public void addAll(UnicodeSetIterator source, UnicodeSet result) {
+        while (source.nextRange()) {
+            if (source.codepoint == UnicodeSetIterator.IS_STRING) {
+                result.add(source.string);
+            } else {
+                result.add(source.codepoint, source.codepointEnd);
+            }
+        }
+    }
+
+    /**
+     * Really ought to create a Collection UniqueList, that forces uniqueness.
+     * But for now...
+     */
+    public static Collection addAllUnique(Collection source, Collection result) {
+        for (Iterator it = source.iterator(); it.hasNext();) {
+            addUnique(it.next(), result);
+        }
+        return result;
+    }
+
+    /**
+     * Really ought to create a Collection UniqueList, that forces uniqueness.
+     * But for now...
+     */
+    public static Collection addAllUnique(Object[] source, Collection result) {
+        for (int i = 0; i < source.length; ++i) {
+            addUnique(source[i], result);
+        }
+        return result;
+    }
+
+    static public class Factory {
+        static boolean DEBUG = false;
+
+        Map canonicalNames = new TreeMap();
+
+        Map skeletonNames = new TreeMap();
+
+        Map propertyCache = new HashMap(1);
+
+        public final Factory add(UnicodeProperty sp) {
+            canonicalNames.put(sp.getName(), sp);
+            List c = sp.getNameAliases(new ArrayList(1));
+            Iterator it = c.iterator();
+            while (it.hasNext()) {
+                skeletonNames.put(toSkeleton((String) it.next()), sp);
+            }
+            return this;
+        }
+
+        public final UnicodeProperty getProperty(String propertyAlias) {
+            return (UnicodeProperty) skeletonNames
+                    .get(toSkeleton(propertyAlias));
+        }
+
+        public final List getAvailableNames() {
+            return getAvailableNames(null);
+        }
+
+        public final List getAvailableNames(List result) {
+            if (result == null)
+                result = new ArrayList(1);
+            Iterator it = canonicalNames.keySet().iterator();
+            while (it.hasNext()) {
+                addUnique(it.next(), result);
+            }
+            return result;
+        }
+
+        public final List getAvailableNames(int propertyTypeMask) {
+            return getAvailableNames(propertyTypeMask, null);
+        }
+
+        public final List getAvailableNames(int propertyTypeMask, List result) {
+            if (result == null)
+                result = new ArrayList(1);
+            Iterator it = canonicalNames.keySet().iterator();
+            while (it.hasNext()) {
+                String item = (String) it.next();
+                UnicodeProperty property = getProperty(item);
+                if (DEBUG)
+                    System.out.println("Properties: " + item + ","
+                            + property.getType());
+                if (!property.isType(propertyTypeMask)) {
+                    // System.out.println("Masking: " + property.getType() + ","
+                    // + propertyTypeMask);
+                    continue;
+                }
+                addUnique(property.getName(), result);
+            }
+            return result;
+        }
+
+        InversePatternMatcher inverseMatcher = new InversePatternMatcher();
+
+        /**
+         * Format is: propname ('=' | '!=') propvalue ( '|' propValue )*
+         */
+        public final UnicodeSet getSet(String propAndValue,
+                PatternMatcher matcher, UnicodeSet result) {
+            int equalPos = propAndValue.indexOf('=');
+            String prop = propAndValue.substring(0, equalPos);
+            String value = propAndValue.substring(equalPos + 1);
+            boolean negative = false;
+            if (prop.endsWith("!")) {
+                prop = prop.substring(0, prop.length() - 1);
+                negative = true;
+            }
+            prop = prop.trim();
+            UnicodeProperty up = getProperty(prop);
+            if (matcher == null) {
+                matcher = new SimpleMatcher(value, up
+                        .isType(STRING_OR_MISC_MASK) ? null
+                        : PROPERTY_COMPARATOR);
+            }
+            if (negative) {
+                inverseMatcher.set(matcher);
+                matcher = inverseMatcher;
+            }
+            return up.getSet(matcher.set(value), result);
+        }
+
+        public final UnicodeSet getSet(String propAndValue,
+                PatternMatcher matcher) {
+            return getSet(propAndValue, matcher, null);
+        }
+
+        public final UnicodeSet getSet(String propAndValue) {
+            return getSet(propAndValue, null, null);
+        }
+
+        public final SymbolTable getSymbolTable(String prefix) {
+            return new PropertySymbolTable(prefix);
+        }
+
+        private class MyXSymbolTable extends UnicodeSet.XSymbolTable {
+            public boolean applyPropertyAlias(String propertyName,
+                    String propertyValue, UnicodeSet result) {
+                if (false)
+                    System.out.println(propertyName + "=" + propertyValue);
+                UnicodeProperty prop = getProperty(propertyName);
+                if (prop == null)
+                    return false;
+                result.clear();
+                UnicodeSet x = prop.getSet(propertyValue, result);
+                return x.size() != 0;
+            }
+        }
+
+        public final UnicodeSet.XSymbolTable getXSymbolTable() {
+            return new MyXSymbolTable();
+        }
+
+        private class PropertySymbolTable implements SymbolTable {
+            static final boolean DEBUG = false;
+
+            private String prefix;
+
+            RegexMatcher regexMatcher = new RegexMatcher();
+
+            PropertySymbolTable(String prefix) {
+                this.prefix = prefix;
+            }
+
+            public char[] lookup(String s) {
+                if (DEBUG)
+                    System.out.println("\t(" + prefix + ")Looking up " + s);
+                // ensure, again, that prefix matches
+                int start = prefix.length();
+                if (!s.regionMatches(true, 0, prefix, 0, start))
+                    return null;
+
+                int pos = s.indexOf(':', start);
+                if (pos < 0) { // should never happen
+                    throw new IllegalArgumentException(
+                            "Internal Error: missing =: " + s + "\r\n");
+                }
+                UnicodeProperty prop = getProperty(s.substring(start, pos));
+                if (prop == null) {
+                    throw new IllegalArgumentException("Invalid Property in: "
+                            + s + "\r\nUse " + showSet(getAvailableNames()));
+                }
+                String value = s.substring(pos + 1);
+                UnicodeSet set;
+                if (value.startsWith("\u00AB")) { // regex!
+                    set = prop.getSet(regexMatcher.set(value.substring(1, value
+                            .length() - 1)));
+                } else {
+                    set = prop.getSet(value);
+                }
+                if (set.size() == 0) {
+                    throw new IllegalArgumentException(
+                            "Empty Property-Value in: " + s + "\r\nUse "
+                                    + showSet(prop.getAvailableValues()));
+                }
+                if (DEBUG)
+                    System.out.println("\t(" + prefix + ")Returning "
+                            + set.toPattern(true));
+                return set.toPattern(true).toCharArray(); // really ugly
+            }
+
+            private String showSet(List list) {
+                StringBuffer result = new StringBuffer("[");
+                boolean first = true;
+                for (Iterator it = list.iterator(); it.hasNext();) {
+                    if (!first)
+                        result.append(", ");
+                    else
+                        first = false;
+                    result.append(it.next().toString());
+                }
+                result.append("]");
+                return result.toString();
+            }
+
+            public UnicodeMatcher lookupMatcher(int ch) {
+                return null;
+            }
+
+            public String parseReference(String text, ParsePosition pos,
+                    int limit) {
+                if (DEBUG)
+                    System.out.println("\t(" + prefix + ")Parsing <"
+                            + text.substring(pos.getIndex(), limit) + ">");
+                int start = pos.getIndex();
+                // ensure that it starts with 'prefix'
+                if (!text
+                        .regionMatches(true, start, prefix, 0, prefix.length()))
+                    return null;
+                start += prefix.length();
+                // now see if it is of the form identifier:identifier
+                int i = getIdentifier(text, start, limit);
+                if (i == start)
+                    return null;
+                String prop = text.substring(start, i);
+                String value = "true";
+                if (i < limit) {
+                    if (text.charAt(i) == ':') {
+                        int j;
+                        if (text.charAt(i + 1) == '\u00AB') { // regular
+                                                                // expression
+                            j = text.indexOf('\u00BB', i + 2) + 1; // include
+                                                                    // last
+                                                                    // character
+                            if (j <= 0)
+                                return null;
+                        } else {
+                            j = getIdentifier(text, i + 1, limit);
+                        }
+                        value = text.substring(i + 1, j);
+                        i = j;
+                    }
+                }
+                pos.setIndex(i);
+                if (DEBUG)
+                    System.out.println("\t(" + prefix + ")Parsed <" + prop
+                            + ">=<" + value + ">");
+                return prefix + prop + ":" + value;
+            }
+
+            private int getIdentifier(String text, int start, int limit) {
+                if (DEBUG)
+                    System.out.println("\tGetID <"
+                            + text.substring(start, limit) + ">");
+                int cp = 0;
+                int i;
+                for (i = start; i < limit; i += UTF16.getCharCount(cp)) {
+                    cp = UTF16.charAt(text, i);
+                    if (!com.ibm.icu.lang.UCharacter
+                            .isUnicodeIdentifierPart(cp)
+                            && cp != '.') {
+                        break;
+                    }
+                }
+                if (DEBUG)
+                    System.out.println("\tGotID <" + text.substring(start, i)
+                            + ">");
+                return i;
+            }
+        }
+    }
+
+    public static class FilteredProperty extends UnicodeProperty {
+        private UnicodeProperty property;
+
+        protected StringFilter filter;
+
+        protected UnicodeSetIterator matchIterator = new UnicodeSetIterator(
+                new UnicodeSet(0, 0x10FFFF));
+
+        protected HashMap backmap;
+
+        boolean allowValueAliasCollisions = false;
+
+        public FilteredProperty(UnicodeProperty property, StringFilter filter) {
+            this.property = property;
+            this.filter = filter;
+        }
+
+        public StringFilter getFilter() {
+            return filter;
+        }
+
+        public UnicodeProperty setFilter(StringFilter filter) {
+            this.filter = filter;
+            return this;
+        }
+
+        List temp = new ArrayList(1);
+
+        public List _getAvailableValues(List result) {
+            temp.clear();
+            return filter.addUnique(property.getAvailableValues(temp), result);
+        }
+
+        public List _getNameAliases(List result) {
+            temp.clear();
+            return filter.addUnique(property.getNameAliases(temp), result);
+        }
+
+        public String _getValue(int codepoint) {
+            return filter.remap(property.getValue(codepoint));
+        }
+
+        public List _getValueAliases(String valueAlias, List result) {
+            if (backmap == null) {
+                backmap = new HashMap(1);
+                temp.clear();
+                Iterator it = property.getAvailableValues(temp).iterator();
+                while (it.hasNext()) {
+                    String item = (String) it.next();
+                    String mappedItem = filter.remap(item);
+                    if (backmap.get(mappedItem) != null
+                            && !allowValueAliasCollisions) {
+                        throw new IllegalArgumentException(
+                                "Filter makes values collide! " + item + ", "
+                                        + mappedItem);
+                    }
+                    backmap.put(mappedItem, item);
+                }
+            }
+            valueAlias = (String) backmap.get(valueAlias);
+            temp.clear();
+            return filter.addUnique(property.getValueAliases(valueAlias, temp),
+                    result);
+        }
+
+        public String _getVersion() {
+            return property.getVersion();
+        }
+
+        public boolean isAllowValueAliasCollisions() {
+            return allowValueAliasCollisions;
+        }
+
+        public FilteredProperty setAllowValueAliasCollisions(boolean b) {
+            allowValueAliasCollisions = b;
+            return this;
+        }
+
+    }
+
+    public static abstract class StringFilter implements Cloneable {
+        public abstract String remap(String original);
+
+        public final List addUnique(Collection source, List result) {
+            if (result == null)
+                result = new ArrayList(1);
+            Iterator it = source.iterator();
+            while (it.hasNext()) {
+                UnicodeProperty.addUnique(remap((String) it.next()), result);
+            }
+            return result;
+        }
+        /*
+         * public Object clone() { try { return super.clone(); } catch
+         * (CloneNotSupportedException e) { throw new
+         * IllegalStateException("Should never happen."); } }
+         */
+    }
+
+    public static class MapFilter extends StringFilter {
+        private Map valueMap;
+
+        public MapFilter(Map valueMap) {
+            this.valueMap = valueMap;
+        }
+
+        public String remap(String original) {
+            Object changed = valueMap.get(original);
+            return changed == null ? original : (String) changed;
+        }
+
+        public Map getMap() {
+            return valueMap;
+        }
+    }
+
+    public interface PatternMatcher extends ObjectMatcher {
+        public PatternMatcher set(String pattern);
+    }
+
+    public static class InversePatternMatcher extends InverseMatcher implements
+            PatternMatcher {
+        PatternMatcher other;
+
+        public PatternMatcher set(PatternMatcher toInverse) {
+            other = toInverse;
+            return this;
+        }
+
+        public boolean matches(Object value) {
+            return !other.matches(value);
+        }
+
+        public PatternMatcher set(String pattern) {
+            other.set(pattern);
+            return this;
+        }
+    }
+
+    public static class SimpleMatcher implements PatternMatcher {
+        Comparator comparator;
+
+        String pattern;
+
+        public SimpleMatcher(String pattern, Comparator comparator) {
+            this.comparator = comparator;
+            this.pattern = pattern;
+        }
+
+        public boolean matches(Object value) {
+            if (comparator == null)
+                return pattern.equals(value);
+            return comparator.compare(pattern, value) == 0;
+        }
+
+        public PatternMatcher set(String pattern) {
+            this.pattern = pattern;
+            return this;
+        }
+    }
+
+    public static class RegexMatcher implements UnicodeProperty.PatternMatcher {
+        private java.util.regex.Matcher matcher;
+
+        public UnicodeProperty.PatternMatcher set(String pattern) {
+            matcher = Pattern.compile(pattern).matcher("");
+            return this;
+        }
+
+        public boolean matches(Object value) {
+            matcher.reset(value.toString());
+            return matcher.matches();
+        }
+    }
+
+    public static abstract class BaseProperty extends UnicodeProperty {
+        protected List propertyAliases = new ArrayList(1);
+
+        protected Map toValueAliases;
+
+        protected String version;
+
+        public BaseProperty setMain(String alias, String shortAlias,
+                int propertyType, String version) {
+            setName(alias);
+            setType(propertyType);
+            propertyAliases.add(shortAlias);
+            propertyAliases.add(alias);
+            this.version = version;
+            return this;
+        }
+
+        public String _getVersion() {
+            return version;
+        }
+
+        public List _getNameAliases(List result) {
+            addAllUnique(propertyAliases, result);
+            return result;
+        }
+
+        public BaseProperty addValueAliases(String[][] valueAndAlternates,
+                boolean errorIfCant) {
+            if (toValueAliases == null)
+                _fixValueAliases();
+            for (int i = 0; i < valueAndAlternates.length; ++i) {
+                for (int j = 1; j < valueAndAlternates[0].length; ++j) {
+                    addValueAlias(valueAndAlternates[i][0],
+                            valueAndAlternates[i][j], errorIfCant);
+                }
+            }
+            return this;
+        }
+
+        public void addValueAlias(String value, String valueAlias,
+                boolean errorIfCant) {
+            List result = (List) toValueAliases.get(value);
+            if (result == null && !errorIfCant)
+                return;
+            addUnique(value, result);
+            addUnique(valueAlias, result);
+        }
+
+        protected List _getValueAliases(String valueAlias, List result) {
+            if (toValueAliases == null)
+                _fixValueAliases();
+            List a = (List) toValueAliases.get(valueAlias);
+            if (a != null)
+                addAllUnique(a, result);
+            return result;
+        }
+
+        protected void _fixValueAliases() {
+            if (toValueAliases == null)
+                toValueAliases = new HashMap(1);
+            for (Iterator it = getAvailableValues().iterator(); it.hasNext();) {
+                Object value = it.next();
+                _ensureValueInAliases(value);
+            }
+        }
+
+        protected void _ensureValueInAliases(Object value) {
+            List result = (List) toValueAliases.get(value);
+            if (result == null)
+                toValueAliases.put(value, result = new ArrayList(1));
+            addUnique(value, result);
+        }
+
+        public BaseProperty swapFirst2ValueAliases() {
+            for (Iterator it = toValueAliases.keySet().iterator(); it.hasNext();) {
+                List list = (List) toValueAliases.get(it.next());
+                if (list.size() < 2)
+                    continue;
+                Object first = list.get(0);
+                list.set(0, list.get(1));
+                list.set(1, first);
+            }
+            return this;
+        }
+
+        /**
+         * @param string
+         * @return
+         */
+        public UnicodeProperty addName(String string) {
+            throw new UnsupportedOperationException();
+        }
+
+    }
+
+    public static abstract class SimpleProperty extends BaseProperty {
+        List values;
+
+        public UnicodeProperty addName(String alias) {
+            propertyAliases.add(alias);
+            return this;
+        }
+
+        public SimpleProperty setValues(String valueAlias) {
+            _addToValues(valueAlias, null);
+            return this;
+        }
+
+        public SimpleProperty setValues(String[] valueAliases,
+                String[] alternateValueAliases) {
+            for (int i = 0; i < valueAliases.length; ++i) {
+                if (valueAliases[i].equals(UNUSED))
+                    continue;
+                _addToValues(
+                        valueAliases[i],
+                        alternateValueAliases != null ? alternateValueAliases[i]
+                                : null);
+            }
+            return this;
+        }
+
+        public SimpleProperty setValues(List valueAliases) {
+            this.values = new ArrayList(valueAliases);
+            for (Iterator it = this.values.iterator(); it.hasNext();) {
+                _addToValues((String) it.next(), null);
+            }
+            return this;
+        }
+
+        public List _getAvailableValues(List result) {
+            if (values == null)
+                _fillValues();
+            result.addAll(values);
+            return result;
+        }
+
+        protected void _fillValues() {
+            List newvalues = (List) getUnicodeMap_internal()
+                    .getAvailableValues(new ArrayList());
+            for (Iterator it = newvalues.iterator(); it.hasNext();) {
+                _addToValues((String) it.next(), null);
+            }
+        }
+
+        private void _addToValues(String item, String alias) {
+            if (values == null)
+                values = new ArrayList(1);
+            if (toValueAliases == null)
+                _fixValueAliases();
+            addUnique(item, values);
+            _ensureValueInAliases(item);
+            addValueAlias(item, alias, true);
+        }
+        /*        public String _getVersion() {
+         return version;
+         }
+         */
+    }
+
+    public static class UnicodeMapProperty extends BaseProperty {
+        /*
+         * Example of usage:
+         * new UnicodeProperty.UnicodeMapProperty() {
+         {
+         unicodeMap = new UnicodeMap();
+         unicodeMap.setErrorOnReset(true);
+         unicodeMap.put(0xD, "CR");
+         unicodeMap.put(0xA, "LF");
+         UnicodeProperty cat = getProperty("General_Category");
+         UnicodeSet temp = cat.getSet("Line_Separator")
+         .addAll(cat.getSet("Paragraph_Separator"))
+         .addAll(cat.getSet("Control"))
+         .addAll(cat.getSet("Format"))
+         .remove(0xD).remove(0xA).remove(0x200C).remove(0x200D);
+         unicodeMap.putAll(temp, "Control");
+         UnicodeSet graphemeExtend = getProperty("Grapheme_Extend").getSet("true");
+         unicodeMap.putAll(graphemeExtend,"Extend");
+         UnicodeProperty hangul = getProperty("Hangul_Syllable_Type");
+         unicodeMap.putAll(hangul.getSet("L"),"L");
+         unicodeMap.putAll(hangul.getSet("V"),"V");
+         unicodeMap.putAll(hangul.getSet("T"),"T");
+         unicodeMap.putAll(hangul.getSet("LV"),"LV");
+         unicodeMap.putAll(hangul.getSet("LVT"),"LVT");
+         unicodeMap.setMissing("Other");
+         }
+         }.setMain("Grapheme_Cluster_Break", "GCB", UnicodeProperty.ENUMERATED, version)
+         */
+        protected UnicodeMap unicodeMap;
+
+        public UnicodeMapProperty set(UnicodeMap map) {
+            unicodeMap = map;
+            return this;
+        }
+
+        protected String _getValue(int codepoint) {
+            return (String) unicodeMap.getValue(codepoint);
+        }
+
+        /* protected List _getValueAliases(String valueAlias, List result) {
+         if (!unicodeMap.getAvailableValues().contains(valueAlias)) return result;
+         result.add(valueAlias);
+         return result; // no other aliases
+         }
+         */protected List _getAvailableValues(List result) {
+            return (List) unicodeMap.getAvailableValues(result);
+        }
+    }
+}
+//#endif
+
diff --git a/src/com/ibm/icu/dev/test/util/UnicodePropertySource.java b/src/com/ibm/icu/dev/test/util/UnicodePropertySource.java
new file mode 100644
index 0000000..2b4f0cc
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UnicodePropertySource.java
@@ -0,0 +1,321 @@
+
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Set;
+import java.util.Locale;
+import java.util.Map;
+import java.util.List;
+import java.util.Arrays;
+
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+
+/**
+ * Provides a general interface for Unicode Properties, and
+ * extracting sets based on those values.
+ * @author Davis
+ */
+public abstract class UnicodePropertySource implements Cloneable {
+    
+    protected String propertyAlias;
+    protected int m_nameChoice = UProperty.NameChoice.LONG;
+    protected StringFilter filter = new StringFilter();
+    protected UnicodeSetIterator matchIterator = new UnicodeSetIterator(new UnicodeSet(0,0x10FFFF));
+    
+    abstract public String getPropertyValue(int codepoint);
+    abstract public Set getAvailablePropertyAliases(Set result);
+    abstract public Set getAvailablePropertyValueAliases(Set result);
+
+    abstract public String getPropertyAlias(int nameChoice);
+    abstract public String getPropertyValueAlias(String valueAlias, int nameChoice);
+    
+    /**
+     * Subclasses should override
+     */
+    public Object clone() {
+        try {
+            UnicodePropertySource result = (UnicodePropertySource)super.clone();
+            result.filter = (StringFilter)filter.clone();
+            return result;             
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException("Should never happen.");
+        }
+    }
+    
+    public UnicodePropertySource setPropertyAlias(String propertyAlias) {
+        this.propertyAlias = propertyAlias;
+        return this;
+    }
+    
+    public String getPropertyAlias() {
+        return propertyAlias;
+    }
+    
+    public static final boolean equals(int codepoint, String other) {
+        if (other.length() == 1) {
+            return codepoint == other.charAt(0);
+        }
+        return other.equals(UTF16.valueOf(codepoint));
+    }
+    
+    public UnicodeSet getPropertySet(boolean charEqualsValue, UnicodeSet result){
+        if (result == null) result = new UnicodeSet();
+        matchIterator.reset();
+        while (matchIterator.next()) {
+            String value = filter.remap(getPropertyValue(matchIterator.codepoint));
+            if (equals(matchIterator.codepoint, value) == charEqualsValue) {
+                result.add(matchIterator.codepoint);
+            }
+        }
+        return result;
+    }
+
+    public UnicodeSet getPropertySet(String propertyValue, UnicodeSet result){
+        if (result == null) result = new UnicodeSet();
+        matchIterator.reset();
+        while (matchIterator.next()) {
+            String value = filter.remap(getPropertyValue(matchIterator.codepoint));
+            if (propertyValue.equals(value)) {
+                result.add(matchIterator.codepoint);
+            } 
+        }
+        return result;
+    }
+
+    public UnicodeSet getPropertySet(Matcher matcher, UnicodeSet result) {
+        if (result == null) result = new UnicodeSet();
+        matchIterator.reset();
+        while (matchIterator.next()) {
+            String value = filter.remap(getPropertyValue(matchIterator.codepoint));
+            if (value == null)
+                continue;
+            if (matcher.matches(value)) {
+                result.add(matchIterator.codepoint);
+            }
+        }
+        return result;
+    }
+    
+    public interface Matcher {
+        public boolean matches(String value);
+    }
+    
+    public int getNameChoice() {
+        return m_nameChoice;
+    }
+
+    public UnicodePropertySource setNameChoice(int choice) {
+        m_nameChoice = choice;
+        return this;
+    }
+    
+    public static class StringFilter implements Cloneable {
+        public String remap(String original) {
+            return original;
+        }
+        public Object clone() {
+            try {
+                return super.clone();
+            } catch (CloneNotSupportedException e) {
+                throw new IllegalStateException("Should never happen.");
+            }
+        }
+    }
+    
+    public static class MapFilter extends StringFilter {
+        Map valueMap;
+        public String remap(String original) {
+            Object changed = valueMap.get(original);
+            return changed == null ? original : (String) changed;
+        }
+        public Map getMap() {
+            return valueMap;
+        }
+
+        public MapFilter setMap(Map map) {
+            valueMap = map;
+            return this;
+        }
+    }
+
+    static public class ICU extends UnicodePropertySource {
+        protected int propEnum = Integer.MIN_VALUE;
+        {
+            matchIterator = new UnicodeSetIterator(
+                new UnicodeSet("[^[:Cn:]-[:Default_Ignorable_Code_Point:]]"));
+        }
+        
+        public UnicodePropertySource setPropertyAlias(String propertyAlias) {
+            super.setPropertyAlias(propertyAlias);
+            int extraPosition = Extras.indexOf(propertyAlias);
+            if (extraPosition >= 0) {
+                propEnum = EXTRA_START + extraPosition;
+            } else {
+                propEnum = UCharacter.getPropertyEnum(propertyAlias);
+            }
+            return this;
+        }
+
+        public String getPropertyValue(int codePoint) {
+            if (propEnum < UProperty.INT_LIMIT) {
+                int enumValue = UCharacter.getIntPropertyValue(codePoint, propEnum);
+                return UCharacter.getPropertyValueName(propEnum,enumValue, (int)m_nameChoice);
+            } else if (propEnum < UProperty.DOUBLE_LIMIT) {
+                return Double.toString(UCharacter.getUnicodeNumericValue(codePoint));
+                // TODO: Fix HACK -- API deficient
+            } else switch(propEnum) {
+                case UProperty.AGE: return UCharacter.getAge(codePoint).toString();
+                case UProperty.BIDI_MIRRORING_GLYPH: return UTF16.valueOf(UCharacter.getMirror(codePoint));
+                case UProperty.CASE_FOLDING: return UCharacter.foldCase(UTF16.valueOf(codePoint),true);
+                case UProperty.ISO_COMMENT: return UCharacter.getISOComment(codePoint);
+                case UProperty.LOWERCASE_MAPPING: return UCharacter.toLowerCase(Locale.ENGLISH,UTF16.valueOf(codePoint));
+                case UProperty.NAME: return UCharacter.getName(codePoint);
+                case UProperty.SIMPLE_CASE_FOLDING: return UTF16.valueOf(UCharacter.foldCase(codePoint,true));
+                case UProperty.SIMPLE_LOWERCASE_MAPPING: return UTF16.valueOf(UCharacter.toLowerCase(codePoint));
+                case UProperty.SIMPLE_TITLECASE_MAPPING: return UTF16.valueOf(UCharacter.toTitleCase(codePoint));
+                case UProperty.SIMPLE_UPPERCASE_MAPPING: return UTF16.valueOf(UCharacter.toUpperCase(codePoint));
+                case UProperty.TITLECASE_MAPPING: return UCharacter.toTitleCase(Locale.ENGLISH,UTF16.valueOf(codePoint),null);
+                case UProperty.UNICODE_1_NAME: return UCharacter.getName1_0(codePoint);
+                case UProperty.UPPERCASE_MAPPING: return UCharacter.toUpperCase(Locale.ENGLISH,UTF16.valueOf(codePoint));
+                case NFC: return Normalizer.normalize(codePoint, Normalizer.NFC);
+                case NFD: return Normalizer.normalize(codePoint, Normalizer.NFD);
+                case NFKC: return Normalizer.normalize(codePoint, Normalizer.NFKC);
+                case NFKD: return Normalizer.normalize(codePoint, Normalizer.NFKD);
+            }
+            return null;
+        }
+        
+        static final List Extras = Arrays.asList(new String[] {
+            "NFC", "NFD", "NFKC", "NKFD"
+        });
+        
+        static final int 
+            NFC  = 0x8000,
+            NFD  = 0x8001,
+            NFKC = 0x8002,
+            NFKD = 0x8003,
+            EXTRA_START = NFC,
+            EXTRA_LIMIT = NFKD+1;
+
+        static final int[][] ranges = {
+            {UProperty.BINARY_START,    UProperty.BINARY_LIMIT},
+            {UProperty.INT_START,       UProperty.INT_LIMIT},
+            {UProperty.DOUBLE_START,    UProperty.DOUBLE_LIMIT},
+            {UProperty.STRING_START,    UProperty.STRING_LIMIT},
+        };
+
+        public Set getAvailablePropertyAliases(Set result) {
+            for (int i = 0; i < ranges.length; ++i) {
+                for (int j = ranges[i][0]; j < ranges[i][1]; ++j) {
+                    result.add(UCharacter.getPropertyName(j, m_nameChoice));
+                }
+            }
+            result.addAll(Extras);
+            return result;
+        }
+
+        public Set getAvailablePropertyValueAliases(Set result) {
+            if (propEnum < UProperty.INT_LIMIT) {
+                int start = UCharacter.getIntPropertyMinValue(propEnum);
+                int end = UCharacter.getIntPropertyMaxValue(propEnum);
+                for (int i = start; i <= end; ++i) {
+                    result.add(getFixedValueAlias(null, i,m_nameChoice));
+                }
+            } else {
+                result.add(getFixedValueAlias(null, -1,m_nameChoice));
+            }
+            return result;
+        }
+        
+        /**
+         * @param valueAlias null if unused.
+         * @param valueEnum -1 if unused
+         * @param nameChoice
+         * @return the alias
+         */
+        private String getFixedValueAlias(String valueAlias, int valueEnum, int nameChoice) {
+            if (propEnum >= UProperty.STRING_START) {
+                return "<string>";
+            } else if (propEnum >= UProperty.DOUBLE_START) {
+                return "<double>";
+            }
+            if (valueAlias != null && !valueAlias.equals("<integer>")) {
+                valueEnum = UCharacter.getPropertyValueEnum(propEnum,valueAlias);
+            }
+            String result = fixedGetPropertyValueName(propEnum, valueEnum, nameChoice);
+            if (result != null) return result;
+            // try other namechoice
+            result = fixedGetPropertyValueName(propEnum,valueEnum,
+                nameChoice == UProperty.NameChoice.LONG ? UProperty.NameChoice.SHORT : UProperty.NameChoice.LONG);
+            if (result != null) return result;
+            return "<integer>";
+        }
+
+        private static String fixedGetPropertyValueName(int propEnum, int valueEnum, int nameChoice) {
+            try {
+                return UCharacter.getPropertyValueName(propEnum,valueEnum,nameChoice);
+            } catch (Exception e) {
+                return null;
+            }
+        }
+
+        public String getPropertyAlias(int nameChoice) {
+            if (propEnum < EXTRA_START) {
+                return UCharacter.getPropertyName(propEnum, nameChoice);
+            }
+            return (String)Extras.get(propEnum-EXTRA_START);
+        }
+
+        public String getPropertyValueAlias(String valueAlias, int nameChoice) {
+            return getFixedValueAlias(valueAlias, -1, nameChoice);
+        }
+    }
+    // TODO file bug on getPropertyValueName for Canonical_Combining_Class
+
+    public StringFilter getFilter() {
+        return filter;
+    }
+
+
+    public UnicodePropertySource setFilter(StringFilter filter) {
+        this.filter = filter;
+        return this;
+    }
+
+    /**
+     */
+    static public void addAll(UnicodeSetIterator source, UnicodeSet result) {
+        while (source.nextRange()) {
+            if (source.codepoint == UnicodeSetIterator.IS_STRING) {
+                result.add(source.string);
+            } else {
+                result.add(source.codepoint, source.codepointEnd);
+            }
+        }
+    }
+    
+    public UnicodeSet getMatchSet(UnicodeSet result) {
+        if (result == null) result = new UnicodeSet();
+        addAll(matchIterator, result);
+        return result;
+    }
+
+    /**
+     * @param set
+     */
+    public void setMatchSet(UnicodeSet set) {
+        matchIterator = new UnicodeSetIterator(set);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/test/util/UtilityTest.java b/src/com/ibm/icu/dev/test/util/UtilityTest.java
new file mode 100644
index 0000000..61e1c9a
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/UtilityTest.java
@@ -0,0 +1,233 @@
+//##header J2SE15
+/*
+**********************************************************************
+* Copyright (c) 2003-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: March 8 2003
+* Since: ICU 2.6
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.util;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.InvalidFormatException;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.ByteArrayWrapper;
+import com.ibm.icu.util.CaseInsensitiveString;
+
+/**
+ * @test
+ * @summary Test of internal Utility class
+ */
+public class UtilityTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new UtilityTest().run(args);
+    }
+
+    public void TestUnescape() {
+        final String input =
+            "Sch\\u00f6nes Auto: \\u20ac 11240.\\fPrivates Zeichen: \\U00102345\\e\\cC\\n \\x1b\\x{263a}";
+
+        final String expect = 
+            "Sch\u00F6nes Auto: \u20AC 11240.\u000CPrivates Zeichen: \uDBC8\uDF45\u001B\u0003\012 \u001B\u263A";
+
+        String result = Utility.unescape(input);
+        if (!result.equals(expect)) {
+            errln("FAIL: Utility.unescape() returned " + result + ", exp. " + expect);
+        }
+    }
+    
+    public void TestFormat()
+    {
+        String data[] = {
+            "the quick brown fox jumps over the lazy dog",
+            // result of this conversion will exceed the original length and
+            // cause a newline to be inserted
+            "testing space , quotations \"",
+            "testing weird supplementary characters \ud800\udc00",
+            "testing control characters \u0001 and line breaking!! \n are we done yet?"
+        };
+        String result[] = {
+            "        \"the quick brown fox jumps over the lazy dog\"",
+            "        \"testing space , quotations \\042\"",
+            "        \"testing weird supplementary characters \\uD800\\uDC00\"",
+            "        \"testing control characters \\001 and line breaking!! \\n are we done ye\"+"
+                     + Utility.LINE_SEPARATOR + "        \"t?\""
+        };
+        String result1[] = {
+            "\"the quick brown fox jumps over the lazy dog\"",
+            "\"testing space , quotations \\042\"",
+            "\"testing weird supplementary characters \\uD800\\uDC00\"",
+            "\"testing control characters \\001 and line breaking!! \\n are we done yet?\""
+        };
+        
+        for (int i = 0; i < data.length; i ++) {
+            assertEquals("formatForSource(\"" + data[i] + "\")",
+                         result[i], Utility.formatForSource(data[i]));
+        }
+        for (int i = 0; i < data.length; i ++) {
+            assertEquals("format1ForSource(\"" + data[i] + "\")",
+                         result1[i], Utility.format1ForSource(data[i]));
+        }
+    }
+    
+    public void TestHighBit()
+    {
+        int data[] = {-1, -1276, 0, 0xFFFF, 0x1234};
+        byte result[] = {-1, -1, -1, 15, 12};
+        for (int i = 0; i < data.length; i ++) {
+            if (Utility.highBit(data[i]) != result[i]) {
+                errln("Fail: Highest bit of \\u" 
+                      + Integer.toHexString(data[i]) + " should be "
+                      + result[i]);
+            }
+        }
+    }
+    
+    public void TestCompareUnsigned()
+    {
+        int data[] = {0, 1, 0x8fffffff, -1, Integer.MAX_VALUE, 
+                      Integer.MIN_VALUE, 2342423, -2342423};
+        for (int i = 0; i < data.length; i ++) {
+            for (int j = 0; j < data.length; j ++) {
+                if (Utility.compareUnsigned(data[i], data[j]) 
+                    != compareLongUnsigned(data[i], data[j])) {
+                    errln("Fail: Unsigned comparison failed with " + data[i] 
+                          + " " + data[i + 1]);
+                }
+            }
+        }
+    }
+
+    // This test indends to test the utility class ByteArrayWrapper
+    // Seems that the class is somewhat incomplete, for example
+    //      - getHashCode(Object) is weird
+    //      - PatternMatch feature(search part of array within the whole one) lacks
+    public void TestByteArrayWrapper()
+    {
+        byte[] ba = {0x00, 0x01, 0x02};
+        byte[] bb = {0x00, 0x01, 0x02, -1};
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        com.ibm.icu.impl.ByteBuffer buffer = com.ibm.icu.impl.ByteBuffer.wrap(ba);
+//#else
+        java.nio.ByteBuffer buffer = java.nio.ByteBuffer.wrap(ba);
+//#endif
+        ByteArrayWrapper x = new ByteArrayWrapper(buffer);
+        
+        ByteArrayWrapper y = new ByteArrayWrapper(ba, 3);
+        ByteArrayWrapper z = new ByteArrayWrapper(bb, 3);
+
+        
+        if (!y.toString().equals("00 01 02")){
+            errln("FAIL: test toString : Failed!");
+        }
+        
+        // test equality
+        if (!x.equals(y) || !x.equals(z))
+            errln("FAIL: test (operator ==): Failed!");
+        if (x.hashCode()!=y.hashCode())
+            errln("FAIL: identical objects have different hash codes.");
+
+        // test non-equality
+        y = new ByteArrayWrapper(bb, 4);
+        if (x.equals(y))
+            errln("FAIL: test (operator !=): Failed!");
+
+        // test sign of unequal comparison
+        if ((x.compareTo(y) > 0) != (y.compareTo(x) < 0)) {
+            errln("FAIL: comparisons not opposite sign");
+        }
+    }
+
+    private int compareLongUnsigned(int x, int y)
+    {
+        long x1 = x & 0xFFFFFFFFl;
+        long y1 = y & 0xFFFFFFFFl;
+        if (x1 < y1) {
+            return -1;
+        }
+        else if (x1 > y1) {
+            return 1;
+        }
+        return 0;
+    }
+    public void TestUnicodeSet(){
+        String[] array = new String[]{"a", "b", "c", "{de}"};
+        List list = Arrays.asList(array);
+        Set aset = new HashSet(list);
+        logln(" *** The source set's size is: " + aset.size());
+    //The size reads 4
+        UnicodeSet set = new UnicodeSet();
+        set.clear();
+        set.addAll(aset);
+        logln(" *** After addAll, the UnicodeSet size is: " + set.size());
+    //The size should also read 4, but 0 is seen instead
+
+    }
+
+    public void TestAssert(){
+        try {
+            Assert.assrt(false);
+            errln("FAIL: Assert.assrt(false)");
+        }
+        catch (IllegalStateException e) {
+            if (e.getMessage().equals("assert failed")) {
+                logln("Assert.assrt(false) works");
+            }
+            else {
+                errln("FAIL: Assert.assrt(false) returned " + e.getMessage());
+            }
+        }
+        try {
+            Assert.assrt("Assert message", false);
+            errln("FAIL: Assert.assrt(false)");
+        }
+        catch (IllegalStateException e) {
+            if (e.getMessage().equals("assert 'Assert message' failed")) {
+                logln("Assert.assrt(false) works");
+            }
+            else {
+                errln("FAIL: Assert.assrt(false) returned " + e.getMessage());
+            }
+        }
+        try {
+            Assert.fail("Assert message");
+            errln("FAIL: Assert.fail");
+        }
+        catch (IllegalStateException e) {
+            if (e.getMessage().equals("failure 'Assert message'")) {
+                logln("Assert.fail works");
+            }
+            else {
+                errln("FAIL: Assert.fail returned " + e.getMessage());
+            }
+        }
+        try {
+            Assert.fail(new InvalidFormatException());
+            errln("FAIL: Assert.fail with an exception");
+        }
+        catch (IllegalStateException e) {
+            logln("Assert.fail works");
+        }
+    }
+    
+    public void TestCaseInsensitiveString() {
+        CaseInsensitiveString str1 = new CaseInsensitiveString("ThIs is A tEst");
+        CaseInsensitiveString str2 = new CaseInsensitiveString("This IS a test");
+        if (!str1.equals(str2)
+            || !str1.toString().equals(str1.getString())
+            || str1.toString().equals(str2.toString()))
+        {
+            errln("FAIL: str1("+str1+") != str2("+str2+")");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/test/util/VariableReplacer.java b/src/com/ibm/icu/dev/test/util/VariableReplacer.java
new file mode 100644
index 0000000..a3c2558
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/VariableReplacer.java
@@ -0,0 +1,42 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
+
+public class VariableReplacer {
+    // simple implementation for now
+    private Map m = new TreeMap(Collections.reverseOrder());
+
+    // TODO - fix to do streams also, clean up implementation
+
+    public VariableReplacer add(String variable, String value) {
+        m.put(variable, value);
+        return this;
+    }
+    public String replace(String source) {
+        String oldSource;
+        do {
+            oldSource = source;
+            for (Iterator it = m.keySet().iterator(); it.hasNext();) {
+                String variable = (String) it.next();
+                String value = (String) m.get(variable);
+                source = replaceAll(source, variable, value);
+            }
+        } while (!source.equals(oldSource));
+        return source;
+    }
+    public String replaceAll(String source, String key, String value) {
+        while (true) {
+            int pos = source.indexOf(key);
+            if (pos < 0) return source;
+            source = source.substring(0,pos) + value + source.substring(pos+key.length());
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/test/util/VersionInfoTest.java b/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
new file mode 100644
index 0000000..9c0336c
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
@@ -0,0 +1,360 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+
+package com.ibm.icu.dev.test.util;
+
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.VersionInfo;
+
+
+/**
+* Testing class for VersionInfo
+* @author Syn Wee Quek
+* @since release 2.1 March 01 2002
+*/
+public final class VersionInfoTest extends TestFmwk 
+{ 
+    // constructor ---------------------------------------------------
+  
+    /**
+    * Constructor
+    */
+    public VersionInfoTest()
+    {
+    }
+
+    // public methods -----------------------------------------------
+    
+    public static void main(String arg[]) 
+    {
+        VersionInfoTest test = new VersionInfoTest();
+        try {
+            test.run(arg);
+        } catch (Exception e) {
+            test.errln("Error testing VersionInfo");
+        }
+    }
+    
+    /**
+     * Test that the instantiation works
+     */
+    public void TestInstance()
+    {
+        for (int i = 0; i < INSTANCE_INVALID_STRING_.length; i ++) {
+            try {
+                VersionInfo.getInstance(INSTANCE_INVALID_STRING_[i]);
+                errln("\"" + INSTANCE_INVALID_STRING_[i] + 
+                      "\" should produce an exception");
+            } catch (RuntimeException e) {
+                logln("PASS: \"" + INSTANCE_INVALID_STRING_[i] + 
+                      "\" failed as expected");
+            }
+        }
+        for (int i = 0; i < INSTANCE_VALID_STRING_.length; i ++) {
+            try {
+                VersionInfo.getInstance(INSTANCE_VALID_STRING_[i]);
+            } catch (RuntimeException e) {
+                errln("\"" + INSTANCE_VALID_STRING_[i] + 
+                      "\" should produce an valid version");
+            }
+        }
+        for (int i = 0; i < INSTANCE_INVALID_INT_.length; i ++) {
+            try {
+                getInstance(INSTANCE_INVALID_INT_[i]);
+                errln("invalid ints should produce an exception");
+            } catch (RuntimeException e) {
+                logln("PASS: \"" + INSTANCE_INVALID_INT_[i] + 
+                      "\" failed as expected");
+            }
+        }
+        for (int i = 0; i < INSTANCE_VALID_INT_.length; i ++) {
+            try {
+                getInstance(INSTANCE_VALID_INT_[i]);
+            } catch (RuntimeException e) {
+                errln("valid ints should not produce an exception");
+            }
+        }
+    }
+    
+    /**
+     * Test that the comparison works
+     */
+    public void TestCompare()
+    {
+        for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {
+            VersionInfo v1 = 
+                        VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);
+            VersionInfo v2 = 
+                    VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]);
+            if (v1.compareTo(v2) == 0) {
+                errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " +
+                      COMPARE_NOT_EQUAL_STRING_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_NOT_EQUAL_INT_.length; i += 2) {
+            VersionInfo v1 = getInstance(COMPARE_NOT_EQUAL_INT_[i]);
+            VersionInfo v2 = getInstance(COMPARE_NOT_EQUAL_INT_[i + 1]);
+            if (v1.compareTo(v2) == 0) {
+                errln(COMPARE_NOT_EQUAL_INT_[i] + " should not equal " +
+                      COMPARE_NOT_EQUAL_INT_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {
+            VersionInfo v1 = 
+                        VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);
+            VersionInfo v2 = 
+                    VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]);
+            if (v1.compareTo(v2) != 0) {
+                errln(COMPARE_EQUAL_STRING_[i] + " should equal " +
+                      COMPARE_EQUAL_STRING_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_EQUAL_INT_.length - 1; i ++) {
+            VersionInfo v1 = getInstance(COMPARE_EQUAL_INT_[i]);
+            VersionInfo v2 = getInstance(COMPARE_EQUAL_INT_[i + 1]);
+            if (v1.compareTo(v2) != 0) {
+                errln(COMPARE_EQUAL_INT_[i] + " should equal " +
+                      COMPARE_EQUAL_INT_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_LESS_.length - 1; i ++) {
+            VersionInfo v1 = VersionInfo.getInstance(COMPARE_LESS_[i]);
+            VersionInfo v2 = VersionInfo.getInstance(COMPARE_LESS_[i + 1]);
+            if (v1.compareTo(v2) >= 0) {
+                errln(COMPARE_LESS_[i] + " should be less than " + 
+                      COMPARE_LESS_[i + 1]);
+            }
+            if (v2.compareTo(v1) <= 0) {
+                errln(COMPARE_LESS_[i + 1] + " should be greater than " + 
+                      COMPARE_LESS_[i]);
+            }
+        }
+    }
+    
+    /**
+     * Test that the getter function works
+     */
+    public void TestGetter()
+    {
+        for (int i = 0; i < GET_STRING_.length; i ++) {
+            VersionInfo v = VersionInfo.getInstance(GET_STRING_[i]);
+            if (v.getMajor() != GET_RESULT_[i << 2] ||
+                v.getMinor() != GET_RESULT_[(i << 2) + 1] ||
+                v.getMilli() != GET_RESULT_[(i << 2) + 2] ||
+                v.getMicro() != GET_RESULT_[(i << 2) + 3]) {
+                errln(GET_STRING_[i] + " should return major=" + 
+                      GET_RESULT_[i << 2] + " minor=" + 
+                      GET_RESULT_[(i << 2) + 1] + " milli=" + 
+                      GET_RESULT_[(i << 2) + 2] + " micro=" +
+                      GET_RESULT_[(i << 2) + 3]);  
+            }
+            v = getInstance(GET_INT_[i]);
+            if (v.getMajor() != GET_RESULT_[i << 2] ||
+                v.getMinor() != GET_RESULT_[(i << 2) + 1] ||
+                v.getMilli() != GET_RESULT_[(i << 2) + 2] ||
+                v.getMicro() != GET_RESULT_[(i << 2) + 3]) {
+                errln(GET_STRING_[i] + " should return major=" + 
+                      GET_RESULT_[i << 2] + " minor=" + 
+                      GET_RESULT_[(i << 2) + 1] + " milli=" + 
+                      GET_RESULT_[(i << 2) + 2] + " micro=" +
+                      GET_RESULT_[(i << 2) + 3]);  
+            }
+        }
+    }
+    
+    /**
+     * Test toString()
+     */
+    public void TesttoString() 
+    {
+        for (int i = 0; i < TOSTRING_STRING_.length; i ++) {
+            VersionInfo v = VersionInfo.getInstance(TOSTRING_STRING_[i]);
+            if (!v.toString().equals(TOSTRING_RESULT_[i])) {
+                errln("toString() for " + TOSTRING_STRING_[i] + 
+                      " should produce " + TOSTRING_RESULT_[i]);
+            }
+            v = getInstance(TOSTRING_INT_[i]);
+            if (!v.toString().equals(TOSTRING_RESULT_[i])) {
+                errln("toString() for " + TOSTRING_INT_[i] + 
+                      " should produce " + TOSTRING_RESULT_[i]);
+            }
+        }
+    }
+    
+    /**
+     * Test Comparable interface
+     */
+    public void TestComparable() {
+        try {
+            VersionInfo v = VersionInfo.ICU_VERSION;
+            String s  = "Some String";
+            if(v.compareTo(s) >0) {
+                errln("VersionInfo.compareTo(String) returned >0, should have thrown exception");
+            } else {
+                errln("VersionInfo.compareTo(String) returned <=0, should have thrown exception");
+            }
+        } catch(ClassCastException cce) {
+            logln("Pass: compareTo(String) returned " + cce.toString());
+        }
+        for (int i = 0; i < COMPARE_NOT_EQUAL_STRING_.length; i += 2) {
+            VersionInfo v1 = 
+                        VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i]);
+            Object v2 = 
+                    VersionInfo.getInstance(COMPARE_NOT_EQUAL_STRING_[i + 1]);
+            if (v1.compareTo(v2) == 0) {
+                errln(COMPARE_NOT_EQUAL_STRING_[i] + " should not equal " +
+                      COMPARE_NOT_EQUAL_STRING_[i + 1]);
+            }
+        }
+        for (int i = 0; i < COMPARE_EQUAL_STRING_.length - 1; i ++) {
+            VersionInfo v1 = 
+                        VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i]);
+            Object v2 = 
+                    VersionInfo.getInstance(COMPARE_EQUAL_STRING_[i + 1]);
+            if (v1.compareTo(v2) != 0) {
+                errln(COMPARE_EQUAL_STRING_[i] + " should equal " +
+                      COMPARE_EQUAL_STRING_[i + 1]);
+            }
+        }
+    }
+    // private methods --------------------------------------------------
+    
+    /**
+     * int array versioninfo creation
+     */
+    private static VersionInfo getInstance(int data[])
+    {
+        switch (data.length) {
+            case 1:
+                return VersionInfo.getInstance(data[0]);
+            case 2:
+                return VersionInfo.getInstance(data[0], data[1]);
+            case 3:
+                return VersionInfo.getInstance(data[0], data[1], data[2]);
+            default:
+                return VersionInfo.getInstance(data[0], data[1], data[2], 
+                                               data[3]);
+        }
+    }
+    
+    // private data members --------------------------------------------
+    
+    /**
+     * Test instance data
+     */
+    private static final String INSTANCE_INVALID_STRING_[] = {
+        "a",
+        "-1",
+        "-1.0",
+        "-1.0.0",
+        "-1.0.0.0",
+        "0.-1",
+        "0.0.-1",
+        "0.0.0.-1",
+        "256",
+        "256.0",
+        "256.0.0",
+        "256.0.0.0",
+        "0.256",
+        "0.0.256",
+        "0.0.0.256",
+        "1.2.3.4.5"
+    };
+    private static final String INSTANCE_VALID_STRING_[] = {
+        "255",
+        "255.255",
+        "255.255.255",
+        "255.255.255.255"
+    };
+    private static final int INSTANCE_INVALID_INT_[][] = {
+        {-1},
+        {-1, 0},
+        {-1, 0, 0},
+        {-1, 0, 0, 0},
+        {0, -1},
+        {0, 0, -1},
+        {0, 0, 0, -1},
+        {256},
+        {256, 0},
+        {256, 0, 0},
+        {256, 0, 0, 0},
+        {0, 256},
+        {0, 0, 256},
+        {0, 0, 0, 256},
+    };
+    private static final int INSTANCE_VALID_INT_[][] = {
+        {255},
+        {255, 255},
+        {255, 255, 255},
+        {255, 255, 255, 255}
+    };
+    
+    /**
+     * Test compare data
+     */
+    private static final String COMPARE_NOT_EQUAL_STRING_[] = {
+        "2.0.0.0", "3.0.0.0"
+    };
+    private static final int COMPARE_NOT_EQUAL_INT_[][] = {
+        {2, 0, 0, 0}, {3, 0, 0, 0}
+    };
+    private static final String COMPARE_EQUAL_STRING_[] = {
+        "2.0.0.0", "2.0.0", "2.0", "2"
+    };
+    private static final int COMPARE_EQUAL_INT_[][] = {
+        {2}, {2, 0}, {2, 0, 0}, {2, 0, 0, 0}    
+    };
+    private static final String COMPARE_LESS_[] = {
+        "0", "0.0.0.1", "0.0.1", "0.1", "1", "2", "2.1", "2.1.1", "2.1.1.1"
+    };
+    
+    /**
+     * Test Getter data
+     */
+    private static final String GET_STRING_[] = {
+        "0",
+        "1.1",
+        "2.1.255",
+        "3.1.255.100"
+    };
+    private static final int GET_INT_[][] = {
+        {0},
+        {1, 1},
+        {2, 1, 255},
+        {3, 1, 255, 100}
+    };
+    private static final int GET_RESULT_[] = {
+        0, 0, 0, 0,
+        1, 1, 0, 0,
+        2, 1, 255, 0,
+        3, 1, 255, 100
+    };
+    
+    /**
+     * Test toString data
+     */
+    private static final String TOSTRING_STRING_[] = {
+        "0",
+        "1.1",
+        "2.1.255",
+        "3.1.255.100"    
+    };
+    private static final int TOSTRING_INT_[][] = {
+        {0},
+        {1, 1},
+        {2, 1, 255},
+        {3, 1, 255, 100}
+    };
+    private static final String TOSTRING_RESULT_[] = {
+        "0.0.0.0",
+        "1.1.0.0",
+        "2.1.255.0",
+        "3.1.255.100"    
+    };
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/Visitor.java b/src/com/ibm/icu/dev/test/util/Visitor.java
new file mode 100644
index 0000000..7bcda0f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/Visitor.java
@@ -0,0 +1,131 @@
+
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.*;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+public abstract class Visitor {
+    
+    public void doAt(Object item) {
+        if (item instanceof Collection) {
+            doAt((Collection) item);
+        } else if (item instanceof Map) {
+            doAt((Map) item);
+        } else if (item instanceof Object[]) {
+            doAt((Object[]) item);
+        } else if (item instanceof UnicodeSet) {
+            doAt((UnicodeSet) item);
+        } else {
+            doSimpleAt(item);
+        }
+    }
+
+    public int count(Object item) {
+        if (item instanceof Collection) {
+            return ((Collection) item).size();
+        } else if (item instanceof Map) {
+            return ((Map) item).size();
+        } else if (item instanceof Object[]) {
+            return ((Object[]) item).length;
+        } else if (item instanceof UnicodeSet) {
+            return ((UnicodeSet) item).size();
+        } else {
+            return 1;
+        }
+    }
+
+    // the default implementation boxing
+    
+    public void doAt(int o) {
+        doSimpleAt(new Integer(o));
+    }
+    public void doAt(double o) {
+        doSimpleAt(new Double(o));
+    }
+    public void doAt(char o) {
+        doSimpleAt(new Character(o));
+    }
+    
+    // for subclassing
+    
+    protected void doAt (Collection c) {
+        if (c.size() == 0) doBefore(c, null);
+        Iterator it = c.iterator();
+        boolean first = true;
+        Object last = null;
+        while (it.hasNext()) {
+            Object item = it.next();
+            if (first) {
+                doBefore(c, item);
+                first = false;
+            } else {
+                doBetween(c, last, item);
+            }    
+            doAt(last=item);
+        }
+        doAfter(c, last);
+    }
+
+    protected void doAt (Map c) {
+        doAt(c.entrySet());
+    }
+
+    protected void doAt (UnicodeSet c) {
+        if (c.size() == 0) doBefore(c, null);
+        UnicodeSetIterator it = new UnicodeSetIterator(c);
+        boolean first = true;
+        Object last = null;
+        Object item;
+        CodePointRange cpr0 = new CodePointRange();
+        CodePointRange cpr1 = new CodePointRange();
+        CodePointRange cpr;
+        
+        while(it.nextRange()) {
+            if (it.codepoint == UnicodeSetIterator.IS_STRING) {
+                item = it.string;
+            } else {
+                cpr = last == cpr0 ? cpr1 : cpr0;   // make sure we don't override last
+                cpr.codepoint = it.codepoint;
+                cpr.codepointEnd = it.codepointEnd;
+                item = cpr;
+            }           
+            if (!first) {
+                doBefore(c, item);
+                first = true;
+            } else {
+                doBetween(c, last, item);
+            }
+            doAt(last = item);
+        }
+        doAfter(c, last);
+    }
+    
+    protected void doAt (Object[] c) {
+        doBefore(c, c.length == 0 ? null : c[0]);
+        Object last = null;
+        for (int i = 0; i < c.length; ++i) {
+            if (i != 0) doBetween(c, last, c[i]);
+            doAt(last = c[i]);
+        }
+        doAfter(c, last);
+    }
+    
+    public static class CodePointRange{
+        public int codepoint, codepointEnd;
+    }
+    
+    // ===== MUST BE OVERRIDEN =====
+    
+    abstract protected void doBefore(Object container, Object item);
+    abstract protected void doBetween(Object container, Object lastItem, Object nextItem);
+    abstract protected void doAfter(Object container, Object item);   
+    abstract protected void doSimpleAt(Object o);
+    
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java b/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java
new file mode 100644
index 0000000..bada10f
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java
@@ -0,0 +1,293 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class XEquivalenceClass {
+
+    public SetMaker getSetMaker() {
+        return setMaker;
+    }
+
+    // quick test
+    static public void main(String[] args) {
+        XEquivalenceClass foo1 = new XEquivalenceClass("NONE");
+        String[][] tests = {{"b","a1"}, {"b", "c"}, {"a1", "c"}, {"d", "e"}, {"e", "f"}, {"c", "d"}};
+        for (int i = 0; i < tests.length; ++i) {
+            System.out.println("Adding: " + tests[i][0] + ", " + tests[i][1]);
+            foo1.add(tests[i][0], tests[i][1], new Integer(i));
+            for (Iterator it = foo1.getExplicitItems().iterator(); it.hasNext();) {
+                Object item = it.next();
+                System.out.println("\t" + item  + ";\t" + foo1.getSample(item) + ";\t" + foo1.getEquivalences(item));
+                System.out.println("\t\t" + foo1.getReasons(item, foo1.getSample(item)));
+            }
+        }
+    }
+
+    private Map toPartitionSet = new HashMap();
+    private Map obj_obj_reasons = new HashMap();
+    private Object defaultReason;
+    private SetMaker setMaker;
+    
+    public interface SetMaker {
+        Set make();
+    }
+
+    /**
+     * empty, as if just created
+     */
+    public XEquivalenceClass clear(Object defaultReasonArg) {
+        toPartitionSet.clear();
+        obj_obj_reasons.clear();
+        this.defaultReason = defaultReasonArg;
+        return this;
+    }
+
+    /**
+     * Create class with comparator, and default reason.
+     *
+     */
+    public XEquivalenceClass(Object defaultReason) {
+        this.defaultReason = defaultReason;
+    }
+    
+    /**
+     * Create class with comparator, and default reason.
+     *
+     */
+    public XEquivalenceClass(Object defaultReason, SetMaker setMaker) {
+        this.defaultReason = defaultReason;
+        this.setMaker = setMaker;
+    }
+
+    /**
+     * Add two equivalent items, with NO_REASON for the reason.
+     */
+    public XEquivalenceClass add(Object a, Object b) {
+        return add(a,b,null);
+    }
+
+    /**
+     * Add two equivalent items, plus a reason. The reason is only used for getReasons
+     */
+    public XEquivalenceClass add(Object a, Object b, Object reason) {
+        if (a.equals(b)) return this;
+        if (reason == null) reason = defaultReason;
+        addReason(a,b,reason);
+        addReason(b,a,reason);
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        Set bPartitionSet = (Set) toPartitionSet.get(b);
+        if (aPartitionSet == null) {
+            if (bPartitionSet == null) { // both null, set up bSet
+                bPartitionSet = setMaker != null ? setMaker.make() : new HashSet();
+                bPartitionSet.add(b);
+                toPartitionSet.put(b, bPartitionSet);
+            }
+            bPartitionSet.add(a);
+            toPartitionSet.put(a, bPartitionSet);
+        } else if (bPartitionSet == null) { // aSet is not null, bSet null
+            aPartitionSet.add(b);
+            toPartitionSet.put(b, aPartitionSet);
+        } else if (aPartitionSet != bPartitionSet) {  // both non-null, not equal, merge.  Equality check ok here
+            aPartitionSet.addAll(bPartitionSet);
+            // remap every x that had x => bPartitionSet
+            for (Iterator it = bPartitionSet.iterator(); it.hasNext();) {
+                toPartitionSet.put(it.next(), aPartitionSet);
+            }
+        }
+        return this;
+    }
+
+    /**
+     * Add all the information from the other class
+     *
+     */
+    public XEquivalenceClass addAll(XEquivalenceClass other) {
+        // For now, does the simple, not optimized version
+        for (Iterator it = other.obj_obj_reasons.keySet().iterator(); it.hasNext();) {
+            Object a = it.next();
+            Map obj_reasons = (Map) other.obj_obj_reasons.get(a);
+            for (Iterator it2 = obj_reasons.keySet().iterator(); it2.hasNext();) {
+                Object b = it2.next();
+                Set reasons = (Set) obj_reasons.get(b);
+                for (Iterator it3 = reasons.iterator(); it3.hasNext();) {
+                    Object reason = it3.next();
+                    add(a, b, reason);
+                }
+            }
+        }
+        return this;
+    }
+
+    /**
+     * 
+     */
+    private void addReason(Object a, Object b, Object reason) {
+        Map obj_reasons = (Map) obj_obj_reasons.get(a);
+        if (obj_reasons == null) obj_obj_reasons.put(a, obj_reasons = new HashMap());
+        Set reasons = (Set) obj_reasons.get(b);
+        if (reasons == null) obj_reasons.put(b, reasons = new HashSet());
+        reasons.add(reason);
+    }
+
+    /**
+     * Returns a set of all the explicit items in the equivalence set. (Any non-explicit items only
+     * have themselves as equivalences.)
+     *
+     */
+    public Set getExplicitItems() {
+        return Collections.unmodifiableSet(toPartitionSet.keySet());
+    }
+
+    /**
+     * Returns an unmodifiable set of all the equivalent objects
+     *
+     */
+    public Set getEquivalences(Object a) {
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        if (aPartitionSet == null) { // manufacture an equivalence
+            aPartitionSet = new HashSet();
+            aPartitionSet.add(a); 
+        }
+        return Collections.unmodifiableSet(aPartitionSet);
+    }
+
+    public Set getEquivalenceSets() {
+        Set result = new HashSet();
+        for (Iterator it = toPartitionSet.keySet().iterator(); it.hasNext();) {
+            Object item = it.next();
+            Set partition = (Set) toPartitionSet.get(item);
+            result.add(Collections.unmodifiableSet(partition));
+        }
+        return result;
+    }
+    /**
+     * returns true iff a is equivalent to b (or a.equals b)
+     *
+     */
+    public boolean isEquivalent(Object a, Object b) {
+        if (a.equals(b)) return true;
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        if (aPartitionSet == null) return false;
+        return aPartitionSet.contains(b);
+    }
+
+    /**
+     * Gets a sample object in the equivalence set for a. 
+     *
+     */
+    public Object getSample(Object a) {
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        if (aPartitionSet == null) return a; // singleton
+        return aPartitionSet.iterator().next();
+    }
+
+    public interface Filter {
+        boolean matches(Object o);
+    }
+
+    public Object getSample(Object a, Filter f) {
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        if (aPartitionSet == null) return a; // singleton
+        for (Iterator it = aPartitionSet.iterator(); it.hasNext();) {
+            Object obj = it.next();
+            if (f.matches(obj)) return obj;
+        }
+        return a;
+    }
+
+    /**
+     * gets the set of all the samples, one from each equivalence class. 
+     *
+     */
+    public Set getSamples() {
+        Set seenAlready = new HashSet();
+        Set result = new HashSet();
+        for (Iterator it = toPartitionSet.keySet().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (seenAlready.contains(item)) continue;
+            Set partition = (Set) toPartitionSet.get(item);
+            result.add(partition.iterator().next());
+            seenAlready.addAll(partition);
+        }
+        return result;
+    }
+
+
+    /**
+     * Returns a list of lists. Each sublist is in the form [reasons, obj, reasons, obj,..., reasons]
+     * where each reasons is a set of reasons to go from one obj to the next.<br>
+     * Returns null if there is no connection.
+     */
+    public List getReasons(Object a, Object b) {
+        // use dumb algorithm for getting shortest path
+        // don't bother with optimization
+        Set aPartitionSet = (Set) toPartitionSet.get(a);
+        Set bPartitionSet = (Set) toPartitionSet.get(b);
+
+        // see if they connect
+        if (aPartitionSet == null || bPartitionSet == null || aPartitionSet != bPartitionSet || a.equals(b)) return null;
+
+        ArrayList list = new ArrayList();
+        list.add(a);
+        ArrayList lists = new ArrayList();
+        lists.add(list);
+
+        // this will contain the results
+        List foundLists = new ArrayList();
+        Set sawLastTime = new HashSet();
+        sawLastTime.add(a);
+
+        // each time, we extend the lists by one (adding multiple other lists)
+        while (foundLists.size() == 0) {
+            ArrayList extendedList = new ArrayList();
+            Set sawThisTime = new HashSet();
+            for (Iterator it = lists.iterator(); it.hasNext();) {
+                ArrayList lista = (ArrayList) it.next();
+                Object last = lista.get(lista.size()-1);
+                Map obj_reasons = (Map) obj_obj_reasons.get(last);
+                for (Iterator it2 = obj_reasons.keySet().iterator(); it2.hasNext();) {
+                    Object item = it2.next();
+                    if (sawLastTime.contains(item)) {
+                        continue; // skip since we have shorter
+                    }
+                    sawThisTime.add(item);
+                    Set reasons = (Set) obj_reasons.get(item);
+                    ArrayList lista2 = (ArrayList)lista.clone();
+                    lista2.add(reasons);
+                    lista2.add(item);
+                    extendedList.add(lista2);
+                    if (item.equals(b)) {
+                        // remove first and last
+                        ArrayList found = (ArrayList)lista2.clone();
+                        found.remove(0);
+                        found.remove(found.size()-1);
+                        foundLists.add(found);
+                    }
+                }
+            }
+            lists = extendedList;
+            sawLastTime.addAll(sawThisTime);
+        }
+        return foundLists;
+    }
+    
+    /**
+     * For debugging.
+     */
+    public String toString() {
+        return getEquivalenceSets().toString();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/XEquivalenceMap.java b/src/com/ibm/icu/dev/test/util/XEquivalenceMap.java
new file mode 100644
index 0000000..3f67629
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/XEquivalenceMap.java
@@ -0,0 +1,81 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Everything that maps to the same value is part of the same equivalence class
+ * @author davis
+ *
+ */
+public class XEquivalenceMap {
+    HashMap source_target = new HashMap();
+    HashMap target_sourceSet = new HashMap();
+    HashMap source_Set = new HashMap();
+    public XEquivalenceMap clear() {
+        source_target.clear();
+        target_sourceSet.clear();
+        source_Set.clear();
+        return this;
+    }
+    public XEquivalenceMap add(Object source, Object target) {
+        Object otherTarget = source_target.get(source);
+        if (otherTarget != null) {
+            if (otherTarget.equals(target)) return this;
+            throw new IllegalArgumentException("Same source mapping to different targets: "
+                    + source + " => " + otherTarget + " & " + target);
+        }
+        source_target.put(source, target);
+        Set s = (Set) target_sourceSet.get(target);
+        if (s == null) target_sourceSet.put(target, s = new HashSet());
+        s.add(source);
+        source_Set.put(source, s);
+        return this;
+    }
+    public Set getEquivalences (Object source) {
+        Set s = (Set) source_Set.get(source);
+        if (s == null) return null;
+        return Collections.unmodifiableSet(s);
+    }
+    public boolean areEquivalent (Object source1, Object source2) {
+        Set s = (Set) source_Set.get(source1);
+        if (s == null) return false;
+        return s.contains(source2);
+    }
+    public Object getTarget(Object source) {
+        return source_target.get(source);
+    }
+    public Set getSources(Object target) {
+        Set s = (Set) target_sourceSet.get(target);
+        return Collections.unmodifiableSet(s);
+    }
+    public Iterator iterator() {
+        MyIterator result = new MyIterator();
+        result.target_sourceSet_iterator = target_sourceSet.keySet().iterator();
+        return result;
+    }
+    public int size() {
+        return target_sourceSet.size();
+    }
+    private class MyIterator implements Iterator {
+        private Iterator target_sourceSet_iterator;
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+        public boolean hasNext() {
+            return target_sourceSet_iterator.hasNext();
+        }
+        public Object next() {
+            return getSources(target_sourceSet_iterator.next());
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/test/util/manifest.cldrutil.stub b/src/com/ibm/icu/dev/test/util/manifest.cldrutil.stub
new file mode 100644
index 0000000..23e7d48
--- /dev/null
+++ b/src/com/ibm/icu/dev/test/util/manifest.cldrutil.stub
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Class-Path: utilities.jar
+Main-Class: com.ibm.icu.dev.test.TestAll
+
+Name: com/ibm/icu/
+Specification-Title: Utilities for CLDR 
+Specification-Version: 3.4
+Specification-Vendor: ICU
+Implementation-Title: Utilities for CLDR
+Implementation-Version: 3.4.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2005, International Business Machines Corporation and others.  All Rights Reserved.
+Sealed: false
diff --git a/src/com/ibm/icu/dev/tool/UOption.java b/src/com/ibm/icu/dev/tool/UOption.java
new file mode 100644
index 0000000..45a1269
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/UOption.java
@@ -0,0 +1,275 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2004, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: November 15 2002
+* Since: ICU 2.4
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool;
+
+/**
+ * A command-line option.  A UOption specifies the name of an option
+ * and whether or not it takes an argument.  It is a mutable object
+ * that later contains the option argument, if any, and a boolean
+ * flag stating whether the option was seen or not.
+ *
+ * The static method parseArgs() takes an array of command-line
+ * arguments and an array of UOptions and parses the command-line
+ * arguments.
+ *
+ * This deliberately resembles the icu4c file uoption.[ch].
+ */
+public class UOption {
+
+    // Deliberated public data members
+    public String  longName;
+    public String  value;
+    public Fn      optionFn;
+    public Object  context;
+    public char    shortName;
+    public int     hasArg;
+    public boolean doesOccur;
+
+    // Values of hasArg
+    public static final int NO_ARG       = 0;
+    public static final int REQUIRES_ARG = 1;
+    public static final int OPTIONAL_ARG = 2;
+
+    // Analog of UOptionFn.  We don't pass in the context because the
+    // functor can get it from the UOption.
+    public interface Fn {
+        int handle(UOption option);
+    }
+
+    /**
+     * Create a UOption with the given attributes.
+     */
+    public static UOption create(String aLongName,
+                                char aShortName,
+                                int hasArgument) {
+        return new UOption(aLongName, aShortName, hasArgument);
+    }
+
+    /**
+     * Create a UOption with the given attributes.
+     * Synonym for create(), for C compatibility.
+     */
+    public static UOption DEF(String aLongName,
+                              char aShortName,
+                              int hasArgument) {
+        return create(aLongName, aShortName, hasArgument);
+    }
+
+    // Standard canned options.  These create a new object when
+    // called.  Since the UOption object is mutable, we cannot use
+    // static final instances.
+    public static UOption HELP_H()             { return create("help", 'h', NO_ARG); }
+    public static UOption HELP_QUESTION_MARK() { return create("help", '?', NO_ARG); }
+    public static UOption VERBOSE()            { return create("verbose", 'v', NO_ARG); }
+    public static UOption QUIET()              { return create("quiet", 'q', NO_ARG); }
+    public static UOption VERSION()            { return create("version", 'V', NO_ARG); }
+    public static UOption COPYRIGHT()          { return create("copyright", 'c', NO_ARG); }
+
+    public static UOption DESTDIR()            { return create("destdir", 'd', REQUIRES_ARG); }
+    public static UOption SOURCEDIR()          { return create("sourcedir", 's', REQUIRES_ARG); }
+    public static UOption ENCODING()           { return create("encoding", 'e', REQUIRES_ARG); }
+    public static UOption ICUDATADIR()         { return create("icudatadir", 'i', REQUIRES_ARG); }
+    public static UOption PACKAGE_NAME()       { return create("package-name", 'p', REQUIRES_ARG); }
+    public static UOption BUNDLE_NAME()        { return create("bundle-name", 'b', REQUIRES_ARG); }
+
+    /**
+     * Java Command line argument parser.
+     *
+     * This function takes the argv[] command line and a description of
+     * the program's options in form of an array of UOption structures.
+     * Each UOption defines a long and a short name (a string and a character)
+     * for options like "--foo" and "-f".
+     *
+     * Each option is marked with whether it does not take an argument,
+     * requires one, or optionally takes one. The argument may follow in
+     * the same argv[] entry for short options, or it may always follow
+     * in the next argv[] entry.
+     *
+     * An argument is in the next argv[] entry for both long and short name
+     * options, except it is taken from directly behind the short name in
+     * its own argv[] entry if there are characters following the option letter.
+     * An argument in its own argv[] entry must not begin with a '-'
+     * unless it is only the '-' itself. There is no restriction of the
+     * argument format if it is part of the short name options's argv[] entry.
+     *
+     * The argument is stored in the value field of the corresponding
+     * UOption entry, and the doesOccur field is set to 1 if the option
+     * is found at all.
+     *
+     * Short name options without arguments can be collapsed into a single
+     * argv[] entry. After an option letter takes an argument, following
+     * letters will be taken as its argument.
+     *
+     * If the same option is found several times, then the last
+     * argument value will be stored in the value field.
+     *
+     * For each option, a function can be called. This could be used
+     * for options that occur multiple times and all arguments are to
+     * be collected.
+     *
+     * All options are removed from the argv[] array itself. If the parser
+     * is successful, then it returns the number of remaining non-option
+     * strings.  (Unlike C, the Java argv[] array does NOT contain
+     * the program name in argv[0].)
+     *
+     * An option "--" ends option processing; everything after this
+     * remains in the argv[] array.
+     *
+     * An option string "-" alone is treated as a non-option.
+     *
+     * If an option is not recognized or an argument missing, then
+     * the parser returns with the negative index of the argv[] entry
+     * where the error was detected.
+     *
+     * @param argv this parameter is modified
+     * @param start the first argument in argv[] to examine.  Must be
+     * 0..argv.length-1.  Arguments from 0..start-1 are ignored.
+     * @param options this parameter is modified
+     * @return the number of unprocessed arguments in argv[], including
+     * arguments 0..start-1.
+     */
+    public static int parseArgs(String argv[], int start, UOption options[]) {
+        String arg;
+        int i=start, remaining=start;
+        char c;
+        boolean stopOptions=false;
+
+        while(i<argv.length) {
+            arg=argv[i];
+            if(!stopOptions && arg.length()>1 && arg.charAt(0)=='-') {
+                /* process an option */
+                c=arg.charAt(1);
+                UOption option=null;
+                arg=arg.substring(2);
+                if(c=='-') {
+                    /* process a long option */
+                    if(arg.length()==0) {
+                        /* stop processing options after "--" */
+                        stopOptions=true;
+                    } else {
+                        /* search for the option string */
+                        int j;
+                        for(j=0; j<options.length; ++j) {
+                            if(options[j].longName != null && arg.equals(options[j].longName)) {
+                                option=options[j];
+                                break;
+                            }
+                        }
+                        if(option==null) {
+                            /* no option matches */
+                            syntaxError("Unknown option " + argv[i]);
+                        }
+                        option.doesOccur=true;
+
+                        if(option.hasArg!=NO_ARG) {
+                            /* parse the argument for the option, if any */
+                            if(i+1<argv.length && !(argv[i+1].length()>1 && argv[i+1].charAt(0)=='-')) {
+                                /* argument in the next argv[], and there is not an option in there */
+                                option.value=argv[++i];
+                            } else if(option.hasArg==REQUIRES_ARG) {
+                                /* there is no argument, but one is required: return with error */
+                                syntaxError("Option " + argv[i] + " lacks required argument");
+                            }
+                        }
+                    }
+                } else {
+                    /* process one or more short options */
+                    for (;;) {
+                        /* search for the option letter */
+                        int j;
+                        for(j=0; j<options.length; ++j) {
+                            if(c==options[j].shortName) {
+                                option=options[j];
+                                break;
+                            }
+                        }
+                        if(option==null) {
+                            /* no option matches */
+                            syntaxError("Unknown option '" + c + "' in " + argv[i]);
+                        }
+                        option.doesOccur=true;
+
+                        if(option.hasArg!=NO_ARG) {
+                            /* parse the argument for the option, if any */
+                            if(arg.length()!=0) {
+                                /* argument following in the same argv[] */
+                                option.value=arg;
+                                /* do not process the rest of this arg as option letters */
+                                break;
+                            } else if(i+1<argv.length && !(argv[i+1].length()>1 && argv[i+1].charAt(0)=='-')) {
+                                /* argument in the next argv[], and there is not an option in there */
+                                option.value=argv[++i];
+                                /* this break is redundant because we know that *arg==0 */
+                                break;
+                            } else if(option.hasArg==REQUIRES_ARG) {
+                                /* there is no argument, but one is required: return with error */
+                                syntaxError("Option -" + c + " lacks required argument");
+                            }
+                        }
+
+                        /* get the next option letter */
+                        option=null;
+                        if (arg.length()==0) break;
+                        c=arg.charAt(0);
+                        arg=arg.substring(1);
+                    }
+                }
+
+                if(option!=null && option.optionFn!=null && option.optionFn.handle(option)<0) {
+                    /* the option function was called and returned an error */
+                    syntaxError("Option handler failed for " + argv[i]);
+                }
+
+                /* go to next argv[] */
+                ++i;
+            } else {
+                /* move a non-option up in argv[] */
+                argv[remaining++]=arg;
+                ++i;
+            }
+        }
+        return remaining;
+    }
+
+    /**
+     * Allows the default to be set in an option list.
+     * @param s
+     * @return this
+     */public UOption setDefault(String s) {
+        value = s;
+        return this;
+    }
+
+    /**
+     * Convenient method.
+     */
+    public static int parseArgs(String argv[], UOption options[]) {
+        return parseArgs(argv, 0, options);
+    }
+
+    /**
+     * Constructor.
+     */
+    private UOption(String aLongName,
+                    char aShortName,
+                    int hasArgument) {
+        longName = aLongName;
+        shortName = aShortName;
+        hasArg = hasArgument;
+    }
+
+    /**
+     * Throw an exception indicating a syntax error.
+     */
+    private static void syntaxError(String message) {
+        throw new IllegalArgumentException("Error in argument list: " + message);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java b/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
new file mode 100644
index 0000000..540e636
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
@@ -0,0 +1,327 @@
+/*
+ ***********************************************************************
+ *
+ * Copyright (C) 2006, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ ***********************************************************************
+ *
+ * BIG5Tool
+ *
+ *    This tool produces the character usage frequency statistics for the Big5
+ *    Chinese charset, for use by the ICU charset detectors.
+ *
+ *    usage:  java BIG5Tool [-d] [directory path]
+ *
+ *        -d:   Produce the data in a form to be exported to the ICU implementation
+ *              Default is to produce an informative dump.
+ *              
+ *        -sjis Do Shift_JIS.  The structure of sjis is very similar to Big5.
+ *
+ *        directory path
+ *              Source directory for the text files to be analyzed.
+ *              All files in the specified directory must be in the Big5 encoding.
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.mbcs;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+
+public class BIG5Tool {
+
+    // The file buffer and file data length need to be out in class member variables
+    //  so that the code lifted from charSet detection for scanning the multi-byte chars
+    //  can see them conveniently.
+    byte []    buf = new byte[1000000];
+    int        fileSize;
+
+    boolean    option_d = false;    // data option.  Produce exportable data
+    boolean    option_v = true;     // verbose informaional output.
+    boolean    sjis     = false;    // True if input text files are Shift_JIS encoded.
+
+
+
+    public static void main(String[] args) {
+        BIG5Tool  This = new BIG5Tool();
+        This.Main(args);
+    }
+
+
+
+    void Main(String[] args) {
+        int i;
+
+        //
+        //   Command Line Option Handling
+        //
+        String     dirName  = null;
+        for (i=0; i<args.length; i++) {
+            if (args[i].equals("-d")) {
+                option_d = true;
+                option_v = false;
+                continue;
+            }
+            if (args[i].equals("-sjis")) {
+                sjis = true;
+                continue;
+            }
+            if (args[i].startsWith("-")) {
+                System.err.println("Unrecognized option: " + args[i]);
+                System.exit(-1);
+            }
+            if (dirName == null) {
+                dirName = args[i];
+            } else {
+                System.err.println("Unrecognized option: " + dirName);
+                System.exit(-1);
+            }
+        }
+        if (dirName == null) {
+            dirName = ".";
+        }
+
+        //
+        //  Verify that the specified directory exists.
+        //
+        File dir = new File(dirName);
+        if (dir.isDirectory() == false) {
+            System.err.println("\"" + dirName + "\" is not a directory");
+            System.exit(-1);
+        }
+        processDir(dir);
+        
+    }
+
+    //
+    // Collect statistics from all ordinary files in a specified directory.
+    //
+    void processDir(File dir) {
+        int      totalMbcsChars  = 0;
+        HashMap  m = new HashMap(10000);
+        int      i;
+
+        System.out.println(dir.getName());
+        File[] files = dir.listFiles();
+        for (i=0; i<files.length; i++) {
+            try {
+                if (files[i].isFile()) {
+                    FileInputStream is = new FileInputStream(files[i]);
+                    fileSize = is.read(buf);
+                    if (option_v) {
+                        System.out.println(files[i].getPath());
+                        System.out.println("  " + fileSize + " bytes.");
+                    }
+                    iteratedChar ichar = new iteratedChar();
+                    int fileChars     = 0;
+                    int fileMbcsChars = 0;
+                    int errs          = 0;
+
+                    while (nextChar(ichar)) {
+                        if (ichar.error == true) {
+                            errs++;
+                            continue;
+                        }
+                        fileChars++;
+                        if (ichar.charValue > 255) {
+                            fileMbcsChars++;
+                            totalMbcsChars++;
+                        }
+                        if (ichar.charValue <= 255) {
+                            // Don't keep occurence statistics for the single byte range
+                            continue;
+                        }
+
+                        //
+                        //  Frequency of occurence statistics are accumulated in a map.
+                        //
+                        ChEl  keyEl = new ChEl(ichar.charValue, 0);
+                        ChEl  valEl = (ChEl)m.get(keyEl);
+                        if (valEl == null) {
+                            m.put(keyEl, keyEl);
+                            valEl = keyEl;
+                        }
+                        valEl.occurences++;
+                    }
+                    if (option_v) {
+                        System.out.println("  " + fileChars     + " Chars");
+                        System.out.println("  " + fileMbcsChars + " mbcs Chars");
+                        System.out.println("  " + errs          + " errors");
+                        System.out.println("\n");
+                    }
+                }
+            }
+            catch (Exception e) {
+                System.err.println("Exception:" + e);
+
+            }
+        }
+
+        //
+        //  We've processed through all of the files.
+        //     sort and dump out the frequency statistics.
+        //
+        Object [] encounteredChars = m.values().toArray();
+        Arrays.sort(encounteredChars);
+        int cumulativeChars = 0;
+        int cumulativePercent = 0;
+        if (option_v) {
+            System.out.println("# <char code> <occurences>  <Cumulative %>");
+            for (i=0; i<encounteredChars.length; i++) {
+                ChEl c = (ChEl)encounteredChars[i];
+                cumulativeChars += c.occurences;
+                cumulativePercent = cumulativeChars*100/totalMbcsChars;
+                System.out.println(i + "   " + Integer.toHexString(c.charCode) + "        " 
+                        + c.occurences + "         " + cumulativePercent);
+            }
+        }
+        if (option_d) {
+            //
+            //   Output the list of characters formatted for pasting into a
+            //     Java source code array initializer.
+            //     Resort into order based on the character code value, not
+            //      on frequency of occurence.
+            //
+            List  charList = new ArrayList();
+            
+            for (i=0; i<100 && cumulativePercent<50; i++) {
+                ChEl c = (ChEl)encounteredChars[i];
+                cumulativeChars += c.occurences;
+                cumulativePercent = cumulativeChars*100/totalMbcsChars;
+                charList.add(new Integer(c.charCode));
+            }
+            Object [] sortedChars = charList.toArray();
+            Arrays.sort(sortedChars);
+            
+            System.out.print("          {");
+            for (i=0; i<sortedChars.length; i++) {
+                if (i != 0) {
+                    System.out.print(", ");
+                    if ((i)%10 == 0) {
+                        System.out.print("\n           ");
+                    }
+                }
+                int cp = ((Integer)sortedChars[i]).intValue();
+                System.out.print("0x" + Integer.toHexString(cp));
+            }
+            System.out.println("};");
+        }
+    }
+    
+    //
+    //  This is a little class containing a
+    //    multi-byte character value and an occurence count for that char.
+    //  Instances of this class are kept in the collection that accumulates statistics
+    //
+    //  WARNING:  this class's natural ordering (from Comparable) and equals()
+    //            are inconsistent.
+
+    static class ChEl implements Comparable {
+        int charCode;
+        int occurences;
+
+        ChEl(int c, int o) {
+            charCode = c;
+            occurences = o;
+        }
+
+        // Equals needs to work with a map, with the charCode as the key.
+        //   For insertion/lookup, we care about the char code only, not the occurence count.
+        public boolean equals(Object other) {
+            ChEl o = (ChEl)other;
+            return o.charCode == this.charCode;
+        }
+
+        // Hashcode needs to be compatible with equals
+        //   We're using this in a hashMap!
+        public int hashCode() {
+            return charCode;
+        }
+
+        // We want to be able to sort the results by frequency of occurence
+        //   Compare backwards.  We want most frequent chars first.
+        public int compareTo(Object other) {
+            ChEl o = (ChEl)other;
+            return (this.occurences> o.occurences? -1 :
+                   (this.occurences==o.occurences?  0 : 1));
+        }
+
+    }
+
+    //
+    // iteratedChar is copied and slightly hacked from the similar calss in CharsetRecog_mbcs
+    //              Pulls out one logical char according to the rules of EUC encoding.
+    //
+    class iteratedChar {
+        int             charValue = 0;             // The char value is a value from the encoding.
+                                                   //   It's meaning is not well defined, other than
+                                                   //   different encodings
+        int             index     = 0;
+        int             nextIndex = 0;
+        boolean         error     = false;
+        boolean         done      = false;
+
+        void reset() {
+            charValue = 0;
+            index     = -1;
+            nextIndex = 0;
+            error     = false;
+            done      = false;
+        }
+
+        int nextByte() {
+            if (nextIndex >= fileSize) {
+                done = true;
+                return -1;
+            }
+            int byteValue = (int)buf[nextIndex++] & 0x00ff;
+            return byteValue;
+        }
+    }
+
+
+    boolean nextChar(iteratedChar it) {
+        it.index = it.nextIndex;
+        it.error = false;
+        int firstByte  = 0;
+        int secondByte = 0;
+
+        buildChar: {
+            firstByte = it.charValue = it.nextByte();
+            if (firstByte < 0) {
+                // Ran off the end of the input data
+                it.done = true;
+                break buildChar;
+            }
+            if (firstByte <= 0x0080 ||
+                    (sjis && firstByte>=0x00a0 && firstByte< 0x00e0) ||
+                    (sjis && firstByte>=0x00fd && firstByte<=0x00ff)) {
+                // single byte char
+                break buildChar;
+            }
+
+            secondByte = it.nextByte();
+            it.charValue = (it.charValue << 8) | secondByte;
+
+            if (secondByte <  0x40 ||
+                secondByte == 0x007f ||
+                secondByte == 0x00ff ||
+                sjis && secondByte >= 0x00fd) {
+                    it.error = true;
+            }
+            
+            if (it.error) {
+                System.out.println("Error " + Integer.toHexString(firstByte) + " " + Integer.toHexString(secondByte));
+            }
+       }
+
+        return (it.done == false);
+    }
+
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java b/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
new file mode 100644
index 0000000..b6aff25
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
@@ -0,0 +1,349 @@
+/*
+ ***********************************************************************
+ *
+ * Copyright (C) 2005-2006, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ ***********************************************************************
+ *
+ * euc_tool
+ *
+ *    This tool produces the character usage frequency statistics for the EUC family
+ *    of charsets, for use by the ICU charset detectors.
+ *
+ *    usage:  java euc_tool [-d] [directory path]
+ *
+ *        -d:   Produce the data in a form to be exported to the ICU implementation
+ *              Default is to produce an informative dump.
+ *
+ *        directory path
+ *              Source directory for the files to be analyzed.
+ *              Default is the current directory.
+ *              There should be three subdirectories under the specified directory, one
+ *              each for EUC_JP, EUC_CN and EUC_KR.  Within each of these subdirectories
+ *              should be text files in the specified encoding.
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.mbcs;
+
+import java.util.*;
+import java.io.*;
+
+public class EUCTool {
+
+    // The file buffer and file data length need to be out in class member variables
+    //  so that the code lifted from charSet detection for scanning the multi-byte chars
+    //  can see them conveniently.
+    byte []    buf = new byte[1000000];
+    int        fileSize;
+
+    boolean    option_d = false;    // data option.  Produce exportable data
+    boolean    option_v = true;     // verbose informaional output.
+
+
+
+    public static void main(String[] args) {
+        EUCTool  This = new EUCTool();
+        This.Main(args);
+    }
+
+
+
+    void Main(String[] args) {
+        int i;
+
+        //
+        //   Command Line Option Handling
+        //
+        String     dirName  = ".";
+        for (i=0; i<args.length; i++) {
+            if (args[i].equals("-d")) {
+                option_d = true;
+                option_v = false;
+                continue;
+            }
+            if (args[i].startsWith("-")) {
+                System.err.println("Unrecongized option: " + args[i]);
+                System.exit(-1);
+            }
+            dirName = args[i];
+        }
+
+        //
+        //  Verify that the specified directory exists.
+        //
+        File dir = new File(dirName);
+        if (dir.isDirectory() == false) {
+            System.err.println("\"" + dirName + "\" is not a directory");
+            System.exit(-1);
+        }
+
+        //
+        //  Do each subdirectory of the specified directory.  There should be
+        //    one per each encoding - euc-kr, euc-cn, euc-jp
+        //
+        File[] dirs  = dir.listFiles();
+        for (i=0; i<dirs.length; i++) {
+            if (dirs[i].isDirectory()) {
+                String nam = dirs[i].getName();
+                if (nam.equalsIgnoreCase("CVS")) {
+                    continue;
+                }
+                processDir(dirs[i]);
+            }
+        }
+    }
+
+    //
+    // Collect statistics from all ordinary files in a specified directory.
+    //
+    void processDir(File dir) {
+        int      totalMbcsChars  = 0;
+        HashMap  m = new HashMap(10000);
+        int      i;
+
+        System.out.println(dir.getName());
+        File[] files = dir.listFiles();
+        for (i=0; i<files.length; i++) {
+            try {
+                if (files[i].isFile()) {
+                    FileInputStream is = new FileInputStream(files[i]);
+                    fileSize = is.read(buf);
+                    if (option_v) {
+                        System.out.println(files[i].getPath());
+                        System.out.println("  " + fileSize + " bytes.");
+                    }
+                    iteratedChar ichar = new iteratedChar();
+                    int fileChars     = 0;
+                    int fileMbcsChars = 0;
+                    int errs          = 0;
+
+                    while (nextChar(ichar)) {
+                        if (ichar.error == true) {
+                            errs++;
+                            continue;
+                        }
+                        fileChars++;
+                        if (ichar.charValue > 255) {
+                            fileMbcsChars++;
+                            totalMbcsChars++;
+                        }
+                        if (ichar.charValue <= 255) {
+                            // Don't keep occurence statistics for the single byte range
+                            continue;
+                        }
+
+                        //
+                        //  Frequency of occurence statistics are accumulated in a map.
+                        //
+                        ChEl  keyEl = new ChEl(ichar.charValue, 0);
+                        ChEl  valEl = (ChEl)m.get(keyEl);
+                        if (valEl == null) {
+                            m.put(keyEl, keyEl);
+                            valEl = keyEl;
+                        }
+                        valEl.occurences++;
+                    }
+                    if (option_v) {
+                        System.out.println("  " + fileChars     + " Chars");
+                        System.out.println("  " + fileMbcsChars + " mbcs Chars");
+                        System.out.println("  " + errs          + " errors");
+                        System.out.println("\n");
+                    }
+                }
+            }
+            catch (Exception e) {
+                System.err.println("Exception:" + e);
+
+            }
+        }
+
+        //
+        //  We've processed through all of the files.
+        //     sort and dump out the frequency statistics.
+        //
+        Object [] encounteredChars = m.values().toArray();
+        Arrays.sort(encounteredChars);
+        int cumulativeChars = 0;
+        int cumulativePercent = 0;
+        if (option_v) {
+            System.out.println("# <char code> <occurences>  <Cumulative %>");
+            for (i=0; i<encounteredChars.length; i++) {
+                ChEl c = (ChEl)encounteredChars[i];
+                cumulativeChars += c.occurences;
+                cumulativePercent = cumulativeChars*100/totalMbcsChars;
+                System.out.println(i + "   " + Integer.toHexString(c.charCode) + "        " 
+                        + c.occurences + "         " + cumulativePercent);
+            }
+        }
+        if (option_d) {
+            //
+            //   Output the list of characters formatted for pasting into a
+            //     Java source code array initializer.
+            //     Resort into order based on the character code value, not
+            //      on frequency of occurence.
+            //
+            List  charList = new ArrayList();
+            
+            for (i=0; i<100 && cumulativePercent<50; i++) {
+                ChEl c = (ChEl)encounteredChars[i];
+                cumulativeChars += c.occurences;
+                cumulativePercent = cumulativeChars*100/totalMbcsChars;
+                charList.add(new Integer(c.charCode));
+            }
+            Object [] sortedChars = charList.toArray();
+            Arrays.sort(sortedChars);
+            
+            System.out.print("          {");
+            for (i=0; i<sortedChars.length; i++) {
+                if (i != 0) {
+                    System.out.print(", ");
+                    if ((i)%10 == 0) {
+                        System.out.print("\n           ");
+                    }
+                }
+                int cp = ((Integer)sortedChars[i]).intValue();
+                System.out.print("0x" + Integer.toHexString(cp));
+            }
+            System.out.println("};");
+        }
+    }
+    
+    //
+    //  This is a little class containing a
+    //    multi-byte character value and an occurence count for that char.
+    //  Instances of this class are kept in the collection that accumulates statistics
+    //
+    //  WARNING:  this class's natural ordering (from Comparable) and equals()
+    //            are inconsistent.
+
+    static class ChEl implements Comparable {
+        int charCode;
+        int occurences;
+
+        ChEl(int c, int o) {
+            charCode = c;
+            occurences = o;
+        }
+
+        // Equals needs to work with a map, with the charCode as the key.
+        //   For insertion/lookup, we care about the char code only, not the occurence count.
+        public boolean equals(Object other) {
+            ChEl o = (ChEl)other;
+            return o.charCode == this.charCode;
+        }
+
+        // Hashcode needs to be compatible with equals
+        //   We're using this in a hashMap!
+        public int hashCode() {
+            return charCode;
+        }
+
+        // We want to be able to sort the results by frequency of occurence
+        //   Compare backwards.  We want most frequent chars first.
+        public int compareTo(Object other) {
+            ChEl o = (ChEl)other;
+            return (this.occurences> o.occurences? -1 :
+                   (this.occurences==o.occurences?  0 : 1));
+        }
+
+    }
+
+    //
+    // iteratedChar is copied and slightly hacked from the similar calss in CharsetRecog_mbcs
+    //              Pulls out one logical char according to the rules of EUC encoding.
+    //
+    class iteratedChar {
+        int             charValue = 0;             // The char value is a value from the encoding.
+                                                   //   It's meaning is not well defined, other than
+                                                   //   different encodings
+        int             index     = 0;
+        int             nextIndex = 0;
+        boolean         error     = false;
+        boolean         done      = false;
+
+        void reset() {
+            charValue = 0;
+            index     = -1;
+            nextIndex = 0;
+            error     = false;
+            done      = false;
+        }
+
+        int nextByte() {
+            if (nextIndex >= fileSize) {
+                done = true;
+                return -1;
+            }
+            int byteValue = (int)buf[nextIndex++] & 0x00ff;
+            return byteValue;
+        }
+    }
+
+
+    boolean nextChar(iteratedChar it) {
+        it.index = it.nextIndex;
+        it.error = false;
+        int firstByte  = 0;
+        int secondByte = 0;
+        int thirdByte  = 0;
+        int fourthByte = 0;
+
+        buildChar: {
+            firstByte = it.charValue = it.nextByte();
+            if (firstByte < 0) {
+                // Ran off the end of the input data
+                it.done = true;
+                break buildChar;
+            }
+            if (firstByte <= 0x8d) {
+                // single byte char
+                break buildChar;
+            }
+
+            secondByte = it.nextByte();
+            it.charValue = (it.charValue << 8) | secondByte;
+
+            if (firstByte >= 0xA1 && firstByte <= 0xfe) {
+                // Two byte Char
+                if (secondByte < 0xa1) {
+                    it.error = true;
+                }
+                break buildChar;
+            }
+            if (firstByte == 0x8e) {
+                // Code Set 2.
+                //   In EUC-JP, total char size is 2 bytes, only one byte of actual char value.
+                //   In EUC-TW, total char size is 4 bytes, three bytes contribute to char value.
+                // We don't know which we've got.
+                // Treat it like EUC-JP.  If the data really was EUC-TW, the following two
+                //   bytes will look like a well formed 2 byte char.
+                if (secondByte < 0xa1) {
+                    it.error = true;
+                }
+                break buildChar;
+            }
+
+            if (firstByte == 0x8f) {
+                // Code set 3.
+                // Three byte total char size, two bytes of actual char value.
+                thirdByte    = it.nextByte();
+                it.charValue = (it.charValue << 8) | thirdByte;
+                if (thirdByte < 0xa1) {
+                    it.error = true;
+                }
+            }
+            
+        }
+        if (it.error) {
+            System.out.println("Error " + Integer.toHexString(firstByte) + " " + Integer.toHexString(secondByte)
+                    + " " +  Integer.toHexString(thirdByte) + " " + Integer.toHexString(fourthByte));
+        }
+        return (it.done == false);
+    }
+}
+
+
+
+
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java
new file mode 100644
index 0000000..d3a30bc
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java
@@ -0,0 +1,184 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005-2006, International Business Machines            *
+ * Corporation and others. All Rights Reserved.                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class Checker implements NGramParser.NGramParserClient
+{
+    private NGramList ngrams;
+    private int totalNGrams;
+    private int totalHits;
+    
+    private String language;
+    private String encoding;
+    
+    private int[] histogram;
+
+    private static final int BUFFER_SIZE = 1024;
+    
+    private char[] buffer;
+    private int bufIndex;
+    private int bufMax;
+
+    private NGramParser parser;
+
+    /**
+     * TODO This should take cumulative percent and the name...
+     */
+    public Checker(NGramList list, InputFile dataFile)
+    {
+        ngrams = list;
+        ngrams.setMapper(dataFile);
+        
+        language = languageName(dataFile.getFilename());
+        encoding = dataFile.getEncoding();
+        
+        buffer = new char[BUFFER_SIZE];
+        parser = new NGramParser(this);
+        resetCounts();
+        
+        histogram = new int[100];
+        resetHistogram();
+   }
+    
+    public void handleNGram(String key)
+    {
+        NGramList.NGram ngram = ngrams.get(key);
+        
+        totalNGrams += 1;
+        
+        if (ngram != null) {
+            totalHits += 1;
+            //ngram.incrementRefCount();
+        }
+    }
+    
+    private void resetCounts()
+    {
+        bufIndex = 0;
+        totalNGrams = totalHits = 0;
+    }
+    
+    private void resetHistogram()
+    {
+        for(int i = 0; i < 100; i += 1) {
+            histogram[i] = 0;
+        }
+        
+    }
+    
+    private static void exceptionError(Exception e)
+    {
+        System.err.println("ioError: " + e.toString());
+    }
+
+    private static String languageName(String filename)
+    {
+        return filename.substring(0, filename.indexOf('.'));
+    }
+    
+    private boolean nextBuffer(InputFile inputFile)
+    {
+        try {
+            bufMax = inputFile.read(buffer);
+        } catch (Exception e) {
+            bufMax = -1;
+            exceptionError(e);
+            
+            return false;
+        }
+        
+        bufIndex = 0;
+        
+        return bufMax >= 0;
+    }
+    
+    private void parseBuffer()
+    {
+        resetCounts();
+        parser.reset();
+        parser.parse();
+    }
+    
+    public char nextChar()
+    {
+        if (bufIndex >= bufMax) {
+            return 0;
+        }
+        
+        return buffer[bufIndex++];
+    }
+    
+    public String getLanguage()
+    {
+        return language;
+    }
+    
+    public void setMapper(InputFile file)
+    {
+        ngrams.setMapper(file);
+    }
+    
+    public int checkBuffer(char[] theBuffer, int charCount)
+    {
+        buffer = theBuffer;
+        bufMax = charCount;
+        
+        parseBuffer();
+        
+        return totalHits;
+    }
+    
+    public void check(InputFile dataFile)
+    {
+        int minHist = 101, maxHist = -1;
+        
+        dataFile.open();
+        
+        String dataFilename = dataFile.getFilename();
+        String fileEncoding = dataFile.getEncoding();
+        
+        System.out.println(language + "(" + encoding + ") stats, " + languageName(dataFilename) + "(" + fileEncoding + ") data:");
+        
+        setMapper(dataFile);
+        resetHistogram();
+
+        while (nextBuffer(dataFile)) {
+            parseBuffer();
+            
+            double percentHits = (double) totalHits / totalNGrams * 100.0;
+            int ph = (int) percentHits;
+            
+            if (ph < minHist) {
+                minHist = ph;
+            }
+            
+            if (ph > maxHist) {
+                maxHist = ph;
+            }
+            
+            histogram[ph] += 1;
+        }
+        
+        for(int ph = minHist; ph <= maxHist; ph += 1) {
+            System.out.println(ph + "\t" + histogram[ph]);
+        }
+        
+        System.out.println();
+        
+        dataFile.close();
+        
+        return;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
new file mode 100644
index 0000000..1258f58
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
@@ -0,0 +1,173 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CodingErrorAction;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class InputFile implements NGramList.NGramKeyMapper
+{
+
+    private File file;
+    private FileInputStream fileStream;
+    private InputStreamReader inputStream;
+
+    private Charset charset;
+    private CharsetDecoder decoder;
+    private CharsetEncoder encoder;
+    
+    private boolean visualOrder;
+
+    private static void exceptionError(Exception e)
+    {
+        System.err.println("ioError: " + e.toString());
+    }
+
+    /**
+     * 
+     */
+    public InputFile(String filename, String encoding, boolean visual)
+    {
+        file = new File(filename);
+        setEncoding(encoding);
+        visualOrder = visual;
+    }
+    
+    public boolean open()
+    {
+        try {
+            fileStream = new FileInputStream(file);          
+            inputStream = new InputStreamReader(fileStream, "UTF8");
+        } catch (Exception e) {
+            exceptionError(e);
+            return false;
+        }
+        
+        return true;
+    }
+    
+    public void close()
+    {
+        try {
+            inputStream.close();
+            fileStream.close();
+        } catch (Exception e) {
+            // don't really care if this fails...
+        }
+    }
+    
+    public String getFilename()
+    {
+        return file.getName();
+    }
+    
+    public String getParent()
+    {
+        return file.getParent();
+    }
+    
+    public String getPath()
+    {
+        return file.getPath();
+    }
+    
+    public int read(char[] buffer)
+    {
+        int charsRead = -1;
+        
+        try {
+            charsRead = inputStream.read(buffer, 0, buffer.length);
+        } catch (Exception e) {
+            exceptionError(e);
+        }
+        
+        return charsRead;
+    }
+    
+    public void setEncoding(String encoding)
+    {
+        charset = Charset.forName(encoding);
+        decoder = charset.newDecoder();
+        encoder = charset.newEncoder();
+        
+        encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+        encoder.onMalformedInput(CodingErrorAction.REPLACE);
+        
+        decoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+        decoder.onMalformedInput(CodingErrorAction.REPLACE);
+    }
+    
+    public String getEncoding()
+    {
+        return charset.displayName();
+    }
+    
+    public boolean getVisualOrder()
+    {
+        return visualOrder;
+    }
+    
+    public Object mapKey(String key)
+    {
+        byte[] bytes = encode(key.toCharArray());
+        int length   = key.length();
+        int value    = 0;
+        
+        for(int b = 0; b < length; b += 1) {
+            value <<= 8;
+            value += (bytes[b] & 0xFF);
+        }
+
+        return new Integer(value);
+    }
+    
+    public byte[] encode(char[] chars)
+    {
+        CharBuffer cb = CharBuffer.wrap(chars);
+        ByteBuffer bb;
+        
+        try {
+            bb = encoder.encode(cb);
+        } catch (CharacterCodingException e) {
+            // don't expect to get any exceptions in normal usage...
+            return null;
+        }
+
+        return bb.array();
+    }
+    
+    public char[] decode(byte[] bytes)
+    {
+        ByteBuffer bb = ByteBuffer.wrap(bytes);
+        CharBuffer cb;
+        
+        try {
+            cb = decoder.decode(bb);
+        } catch (CharacterCodingException e) {
+            // don't expect to get any exceptions in normal usage...
+            return null;
+        }
+        
+        return cb.array();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java
new file mode 100644
index 0000000..e285841
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java
@@ -0,0 +1,142 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005-2006, International Business Machines            *
+ * Corporation and others. All Rights Reserved.                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+import java.util.Collection;
+import java.util.TreeMap;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class NGramList
+{
+    public interface NGramKeyMapper
+    {
+        Object mapKey(String key);
+    }
+    
+    public static final class NGram implements Comparable
+    {
+        private String value;
+        private int refCount;
+        
+        public NGram(String theValue, int theRefCount)
+        {
+            value    = theValue;
+            refCount = theRefCount;
+        }
+        
+        public NGram(String theValue)
+        {
+            this(theValue, 1);
+        }
+        
+        public NGram(NGram other)
+        {
+            this(other.getValue(), other.getRefCount());
+        }
+        
+        public final String getValue()
+        {
+            return value;
+        }
+        
+        public final int getRefCount()
+        {
+            return refCount;
+        }
+        
+        public final void incrementRefCount()
+        {
+            refCount += 1;
+        }
+        
+        // Note: This makes higher refCounts come *before* lower refCounts...
+        public int compareTo(Object o)
+        {
+            NGram ng = (NGram) o;
+            
+            return ng.getRefCount() - refCount;
+        }
+    }
+    
+    protected TreeMap ngrams;
+    protected int totalNGrams;
+    protected int uniqueNGrams;
+
+    protected final int N_GRAM_SIZE = 3;
+    
+    private NGramKeyMapper keyMapper;
+
+    /**
+     * 
+     */
+    public NGramList(NGramKeyMapper theMapper)
+    {
+        keyMapper = theMapper;
+        
+        ngrams = new TreeMap();
+        totalNGrams = uniqueNGrams = 0;
+    }
+    
+    public void setMapper(NGramKeyMapper nGramKeyMapper)
+    {
+        keyMapper = nGramKeyMapper;
+    }
+    
+    public NGram get(Object mappedKey)
+    {
+        return (NGram) ngrams.get(mappedKey);
+    }
+    
+    public NGram get(String key)
+    {
+        Object mappedKey = keyMapper.mapKey(key);
+        
+        return get(mappedKey);
+    }
+    
+    public void put(String key)
+    {
+        Object mappedKey = keyMapper.mapKey(key);
+        NGram ngram = get(mappedKey);
+        
+        totalNGrams += 1;
+        
+        if (ngram == null) {
+            uniqueNGrams += 1;
+            ngrams.put(mappedKey, new NGram(key));
+        } else {
+            ngram.incrementRefCount();
+        }
+    }
+    
+    public Collection values()
+    {
+        return ngrams.values();
+    }
+    
+    public Collection keys()
+    {
+        return ngrams.keySet();
+    }
+    
+    public int getTotalNGrams()
+    {
+        return totalNGrams;
+    }
+    
+    public int getUniqueNGrams()
+    {
+        return uniqueNGrams;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java
new file mode 100644
index 0000000..d0f7b31
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java
@@ -0,0 +1,161 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class NGramParser
+{
+
+    public interface NGramParserClient
+    {
+        char nextChar();
+        void handleNGram(String key);
+    }
+    
+    private static final int A_NULL = 0;
+    private static final int A_ADDC = 1;
+    private static final int A_ADDS = 2;
+    
+    /*
+     * Character classes
+     */
+    public static final int C_IGNORE = 0;
+    public static final int C_LETTER = 1;
+    public static final int C_PUNCT  = 2;
+    
+    private static final int S_START  = 0;
+    private static final int S_LETTER = 1;
+    private static final int S_PUNCT  = 2;
+
+    static final class StateEntry
+    {
+        private int newState;
+        private int action;
+        
+        StateEntry(int theState, int theAction)
+        {
+            newState = theState;
+            action   = theAction;
+        }
+        
+        public int getNewState()
+        {
+            return newState;
+        }
+        
+        public int getAction()
+        {
+            return action;
+        }
+    }
+    
+    private StateEntry[][] stateTable = {
+            {new StateEntry(S_START,  A_NULL), new StateEntry(S_LETTER, A_ADDC), new StateEntry(S_PUNCT,  A_ADDS)},
+            {new StateEntry(S_LETTER, A_NULL), new StateEntry(S_LETTER, A_ADDC), new StateEntry(S_PUNCT,  A_ADDS)},
+            {new StateEntry(S_PUNCT,  A_NULL), new StateEntry(S_LETTER, A_ADDC), new StateEntry(S_PUNCT,  A_NULL)}
+    };
+
+    protected final int N_GRAM_SIZE = 3;
+    
+    private char[] letters = new char[N_GRAM_SIZE];
+    private int letterCount;
+    
+    private static UnicodeSet letterSet = new UnicodeSet("[:letter:]");
+
+    private NGramParserClient client;
+
+    /**
+     * 
+     */
+    public NGramParser(NGramParserClient theClient)
+    {
+        client = theClient;
+        letterCount = 0;
+    }
+    
+    public void setClient(NGramParserClient theClient)
+    {
+        client = theClient;
+    }
+    
+    // TODO Is this good enough, or are there other C_IGNORE characters?
+    // TODO Could this make Latin letters C_PUNCT for non-Latin scripts?
+    public static int getCharClass(char ch)
+    {
+        if (ch == '\'' || ch == '\uFEFF') {
+            return C_IGNORE;
+        }
+        
+        if (letterSet.contains(ch)) {
+            return C_LETTER;
+        }
+        
+        return C_PUNCT;
+    }
+    
+    public void reset()
+    {
+        letterCount = 0;
+    }
+    
+    public void addLetter(char letter)
+    {
+        // somewhat clever stuff goes here...        
+        letters[letterCount++] = letter;
+        
+        if (letterCount >= N_GRAM_SIZE) {
+            String key = new String(letters);
+            
+            client.handleNGram(key);
+            
+            letterCount = N_GRAM_SIZE - 1;
+            for (int i = 0; i < letterCount; i += 1) {
+                letters[i] = letters[i + 1];
+            }
+        }
+    }
+    
+    public void parse()
+    {
+        char ch;
+        int state = 0;
+
+        // this is where the clever stuff goes...
+        while ((ch = client.nextChar()) != 0) {
+            int charClass = getCharClass(ch);
+            StateEntry entry = stateTable[state][charClass];
+            
+            state = entry.getNewState();
+            
+            switch (entry.getAction())
+            {
+            case A_ADDC:
+                addLetter(Character.toLowerCase(ch));
+                break;
+                
+            case A_ADDS:
+                addLetter(' ');
+                break;
+ 
+            case A_NULL:
+            default:
+                break;
+            }
+        }
+        
+        addLetter(' ');
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
new file mode 100644
index 0000000..26ffe1c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
@@ -0,0 +1,432 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2005-2007, International Business Machines            *
+ * Corporation and others. All Rights Reserved.                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.charsetdet.sbcs;
+
+
+import java.io.*;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class StatisticsTool implements NGramParser.NGramParserClient, NGramList.NGramKeyMapper
+{
+    /* TODO Make this usage string more sane. */
+    private static final String usageString = 
+        "\nUsage: StatisticsTool [OPTIONS] [FILES]\n\n" +
+        "This program will read in a Unicode text file of text in a particular language\n" +
+        "and compute the statistics needed to detected that language and character set.\n " +
+        "Options:\n" +
+        "-e       specify the target encoding\n" +
+        "-h or -? print this usage text.\n" +
+        "-v       also generate statistics for visual order.\n" +
+        "-l       only generate statistics for logical order (cancel -v)." +
+        "-c       run the checker.\n" +
+        "-t       run the encoding test.\n" +
+        "example: com.ibm.icu.dev.tool.charset.StatisticsTool -e 8859-1 Spanish.txt";
+
+    private static final int BUFFER_SIZE = 1024;
+    
+    private char[] buffer;
+    private int bufIndex;
+    private int bufMax;
+
+    private InputFile inputFile;
+    
+    private NGramList ngrams;
+    
+    private static byte[] allBytes = {
+            (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
+            (byte) 0x08, (byte) 0x09, (byte) 0x0A, (byte) 0x0B, (byte) 0x0C, (byte) 0x0D, (byte) 0x0E, (byte) 0x0F,
+            (byte) 0x10, (byte) 0x11, (byte) 0x12, (byte) 0x13, (byte) 0x14, (byte) 0x15, (byte) 0x16, (byte) 0x17,
+            (byte) 0x18, (byte) 0x19, (byte) 0x1A, (byte) 0x1B, (byte) 0x1C, (byte) 0x1D, (byte) 0x1E, (byte) 0x1F,
+            (byte) 0x20, (byte) 0x21, (byte) 0x22, (byte) 0x23, (byte) 0x24, (byte) 0x25, (byte) 0x26, (byte) 0x27,
+            (byte) 0x28, (byte) 0x29, (byte) 0x2A, (byte) 0x2B, (byte) 0x2C, (byte) 0x2D, (byte) 0x2E, (byte) 0x2F,
+            (byte) 0x30, (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x34, (byte) 0x35, (byte) 0x36, (byte) 0x37,
+            (byte) 0x38, (byte) 0x39, (byte) 0x3A, (byte) 0x3B, (byte) 0x3C, (byte) 0x3D, (byte) 0x3E, (byte) 0x3F,
+            (byte) 0x40, (byte) 0x41, (byte) 0x42, (byte) 0x43, (byte) 0x44, (byte) 0x45, (byte) 0x46, (byte) 0x47,
+            (byte) 0x48, (byte) 0x49, (byte) 0x4A, (byte) 0x4B, (byte) 0x4C, (byte) 0x4D, (byte) 0x4E, (byte) 0x4F,
+            (byte) 0x50, (byte) 0x51, (byte) 0x52, (byte) 0x53, (byte) 0x54, (byte) 0x55, (byte) 0x56, (byte) 0x57,
+            (byte) 0x58, (byte) 0x59, (byte) 0x5A, (byte) 0x5B, (byte) 0x5C, (byte) 0x5D, (byte) 0x5E, (byte) 0x5F,
+            (byte) 0x60, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67,
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F,
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77,
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x7B, (byte) 0x7C, (byte) 0x7D, (byte) 0x7E, (byte) 0x7F,
+            (byte) 0x80, (byte) 0x81, (byte) 0x82, (byte) 0x83, (byte) 0x84, (byte) 0x85, (byte) 0x86, (byte) 0x87,
+            (byte) 0x88, (byte) 0x89, (byte) 0x8A, (byte) 0x8B, (byte) 0x8C, (byte) 0x8D, (byte) 0x8E, (byte) 0x8F,
+            (byte) 0x90, (byte) 0x91, (byte) 0x92, (byte) 0x93, (byte) 0x94, (byte) 0x95, (byte) 0x96, (byte) 0x97,
+            (byte) 0x98, (byte) 0x99, (byte) 0x9A, (byte) 0x9B, (byte) 0x9C, (byte) 0x9D, (byte) 0x9E, (byte) 0x9F,
+            (byte) 0xA0, (byte) 0xA1, (byte) 0xA2, (byte) 0xA3, (byte) 0xA4, (byte) 0xA5, (byte) 0xA6, (byte) 0xA7,
+            (byte) 0xA8, (byte) 0xA9, (byte) 0xAA, (byte) 0xAB, (byte) 0xAC, (byte) 0xAD, (byte) 0xAE, (byte) 0xAF,
+            (byte) 0xB0, (byte) 0xB1, (byte) 0xB2, (byte) 0xB3, (byte) 0xB4, (byte) 0xB5, (byte) 0xB6, (byte) 0xB7,
+            (byte) 0xB8, (byte) 0xB9, (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0xBD, (byte) 0xBE, (byte) 0xBF,
+            (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7,
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF,
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7,
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF,
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7,
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF,
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7,
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF
+    };
+    
+    /**
+     * 
+     */
+    public StatisticsTool()
+    {
+        buffer = new char[BUFFER_SIZE];
+        
+        buffer[0] = ' ';
+        bufIndex = 0;
+        bufMax = 1;
+    }
+    
+    private static void usage()
+    {
+        System.out.println(usageString);
+    }
+    
+//    private static void exceptionError(Exception e)
+//    {
+//        System.err.println("ioError: " + e.toString());
+//    }
+
+    private int nextBuffer(InputFile inputFileArg)
+    {
+        bufIndex = 0;
+        
+        return inputFileArg.read(buffer);
+    }
+    
+    public char nextChar()
+    {
+        if (bufIndex >= bufMax) {
+            bufMax = nextBuffer(inputFile);
+        }
+        
+        if (bufMax < 0) {
+            return 0;
+        }
+        
+        return buffer[bufIndex++];
+    }
+    
+    public void handleNGram(String key)
+    {
+        ngrams.put(key);
+    }
+    
+    public Object mapKey(String key)
+    {
+        return key;
+    }
+    
+    private NGramList dumpNGrams()
+    {
+        String filename = inputFile.getPath();
+        int extension = filename.lastIndexOf(".");
+        String outputFileName = filename.substring(0, extension) + ".raw" + filename.substring(extension);
+        PrintStream output;
+        double cumulative = 0;
+        
+        try {
+            output = new PrintStream(
+                new FileOutputStream(outputFileName), true, "UTF8");
+        } catch (IOException e) {
+            System.out.println("? Could not open " + outputFileName + " for writing.");
+            return null;
+        }
+        
+        System.out.println(inputFile.getFilename() + ": " + ngrams.getUniqueNGrams() + "/" + ngrams.getTotalNGrams());
+        
+        ArrayList array = new ArrayList(ngrams.values());
+        
+        Collections.sort(array);
+        
+        NGramList stats = new NGramList(inputFile);
+        int count = 0;
+        int totalNGrams = ngrams.getTotalNGrams();
+        
+        for (Iterator it = array.iterator(); it.hasNext(); count += 1) {
+            NGramList.NGram ngram  = (NGramList.NGram) it.next();
+            String value = ngram.getValue();
+            int refCount = ngram.getRefCount();
+            double ratio  = (double) refCount / totalNGrams * 100.0;
+            
+            cumulative += ratio;
+            
+            // TODO check should be count < max && cumulative < maxPercent
+            if (count < 64) {
+                stats.put(value);
+            }
+            
+            output.println(value + "\t" + refCount + "\t" + ratio + "%\t" + cumulative + "%");
+        }
+        
+        output.close();
+        
+        return stats;
+    }
+    
+    private void writeStatistics(ArrayList keyList, boolean visual)
+    {
+        String filename = inputFile.getPath();
+        int extension = filename.lastIndexOf(".");
+        String outputFileName = filename.substring(0, extension) + "-" + inputFile.getEncoding() +
+                                    (visual? "-visual.dat" : ".dat");
+        PrintStream output;
+        
+        try {
+            output = new PrintStream(
+                new FileOutputStream(outputFileName), true, "ASCII");
+        } catch (IOException e) {
+            System.out.println("? Could not open " + outputFileName + " for writing.");
+            return;
+        }
+        
+        int i = 0;
+        
+        output.print("    private static int[] ngrams = {");
+        
+        for (Iterator it = keyList.iterator(); it.hasNext(); i += 1) {
+            Integer ngram = (Integer) it.next();
+        
+            if (i % 16 == 0) {
+                output.print("\n        ");
+            }
+            
+            output.print("0x" + Utility.hex(ngram.intValue(), 6) + ", ");
+        }
+        
+        output.println("\n    };\n");
+        
+        /*
+         * Generate the byte map
+         */
+        char[] unicodes = inputFile.decode(allBytes);
+        
+        for (int b = 0; b < 256; b += 1) {
+            char unicode  = unicodes[b];
+            int charClass = NGramParser.getCharClass(unicode);
+        
+            switch (charClass) {
+            case NGramParser.C_LETTER:
+                unicodes[b] = Character.toLowerCase(unicode);
+                break;
+        
+            case NGramParser.C_PUNCT:
+                unicodes[b] = ' ';
+                break;
+        
+            case NGramParser.C_IGNORE:
+            default:
+                unicodes[b] = '\0';
+            }
+        }
+        
+        byte[] byteMap = inputFile.encode(unicodes);
+        
+        output.print("    private static byte[] byteMap = {");
+        
+        for (int b = 0; b < 256; b += 1) {
+            if (b % 8 == 0) {
+                output.print("\n        ");
+            }
+            
+            output.print("(byte) 0x" + Utility.hex(byteMap[b] & 0xFF, 2) + ", ");
+        }
+        
+        output.println("\n    };");
+    }
+    
+    public NGramList collectStatistics(InputFile file)
+    {
+        if (!file.open()) {
+            return null;
+        }
+        
+        inputFile = file;
+        
+        NGramParser parser = new NGramParser(this);
+        
+        ngrams = new NGramList(this);
+        parser.parse();
+        
+        file.close();
+        
+        NGramList stats    = dumpNGrams();
+        ArrayList statKeys = new ArrayList(stats.keys());
+        
+        Collections.sort(statKeys);
+        writeStatistics(statKeys, false);
+        
+        if (inputFile.getVisualOrder()) {
+            ArrayList reversed = new ArrayList(statKeys.size());
+            
+            for (Iterator it = statKeys.iterator(); it.hasNext();) {
+                Integer key = (Integer) it.next();
+                int k = key.intValue();
+                int r = 0;
+                
+                while (k != 0) {
+                    r = (r << 8) | (k & 0xFF);
+                    k >>= 8;
+                }
+                
+                reversed.add(new Integer(r));
+            }
+            
+            Collections.sort(reversed);
+            writeStatistics(reversed, true);
+        }
+        
+        return stats;
+    }
+    
+    public static void main(String[] args)
+    {
+        List list = Arrays.asList(args);
+        InputFile[] input_files = new InputFile[args.length];
+        int file_count = 0;
+        String encoding = null;
+        boolean run_checker = false;
+        boolean encoding_test = false;
+        boolean visual_order = false;
+        
+        for (Iterator it = list.iterator(); it.hasNext(); /*anything?*/) {
+            String arg = (String) it.next();
+            
+            if (arg.equals("-v")) {
+                visual_order = true;
+            } else if (arg.equals("-l")) {
+                visual_order = false;
+            } else if (arg.equals("-c")) {
+                run_checker = true;
+            } else if (arg.equals("-t")) {
+                encoding_test = true;
+            } else if (arg.equals("-e")) {
+                if (it.hasNext()) {
+                    encoding = (String) it.next();
+                } else {
+                    System.err.println("Error: missing encoding.");
+                }
+            } else if (arg.startsWith("-")) {
+                if (! (arg.equals("-h") || arg.equals("-?"))) {
+                    System.err.println("Error: unknown option " + arg);
+                }
+                
+                usage();
+            } else {
+                input_files[file_count++] = new InputFile(arg, encoding, visual_order);
+            }
+        }
+
+        if(file_count == 0){
+            System.err.println("Error: there are no files to process.");
+            usage();
+        }
+        
+        StatisticsTool tool = new StatisticsTool();
+        Checker[] checkers  = new Checker[file_count];
+        
+        for(int i = 0; i < file_count; i += 1) {
+            InputFile file = input_files[i];
+            
+            checkers[i] = new Checker(tool.collectStatistics(file), file);
+        }
+        
+        System.out.println();
+        
+        /**
+         * Checkers
+         */
+        if (run_checker) {
+            for(int c = 0; c < file_count; c += 1) {
+                Checker checker = checkers[c];
+                
+                for(int f = 0; f < file_count; f += 1) {
+                    checker.check(input_files[f]);
+                }
+            }
+            
+        }
+
+        /*
+         * Detection test
+         */
+        if (encoding_test) {
+            char[] buffer   = new char[128];
+            
+            System.out.println("Detection test");
+            
+            for (int f = 0; f < file_count; f += 1) {
+                InputFile file = input_files[f];
+                int[] histogram = new int[file_count];
+                int charCount, misses = 0;
+                
+                System.out.println(file.getFilename() + "(" + file.getEncoding() + "):");
+                file.open();
+                
+                for (int c = 0; c < file_count; c += 1) {
+                    checkers[c].setMapper(file);                
+                }
+                
+                // for each buffer
+                //     for each checker
+                //         call checkBuffer, save score
+                //     find highest score, update histogram for that checker
+                // show checker histogram
+                
+                while ((charCount = file.read(buffer)) > 0) {
+                    int[] scores = new int[file_count];
+                    int bestFit = -1, maxScore = 0;
+                    
+                    for (int c = 0; c < file_count; c += 1) {
+                        scores[c] = checkers[c].checkBuffer(buffer, charCount);
+                    }
+                    
+                    for (int c = 0; c < file_count; c += 1) {
+                        int score = scores[c];
+                        
+                        if (score > maxScore) {
+                            maxScore = score;
+                            bestFit = c;
+                        }
+                    }
+                    
+                    if (bestFit >= 0) {
+                        histogram[bestFit] += 1;                    
+                    } else {
+                        misses += 1;
+                    }
+                }
+                
+                for (int c = 0; c < file_count; c += 1) {
+                    System.out.println("    " + checkers[c].getLanguage() + ": " + histogram[c]);
+                }
+                
+                if (misses > 0) {
+                    System.out.println("    NONE: " + misses);
+                }
+                
+                System.out.println();
+            }            
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java b/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
new file mode 100644
index 0000000..0f4fd7f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
@@ -0,0 +1,223 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.compression;
+
+
+/**
+ * Utility class to generate the tables used by the SCSU interface and
+ * the UnicodeCompressor class.
+ *
+ * @author Stephen F. Booth
+ * @version 1.0 08 Mar 99
+ */
+class CompressionTableGenerator
+{
+    // duplicate of constants in SCSU
+
+    final static int LATININDEX                  = 0xF9;
+    final static int IPAEXTENSIONINDEX           = 0xFA;
+    final static int GREEKINDEX                  = 0xFB;
+    final static int ARMENIANINDEX               = 0xFC;
+    final static int HIRAGANAINDEX               = 0xFD;
+    final static int KATAKANAINDEX               = 0xFE;
+    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;
+
+    final static int SDEFINEX                    = 0x0B;
+    final static int SRESERVED                   = 0x0C;  // reserved value
+    final static int SQUOTEU                     = 0x0E;
+    final static int SCHANGEU                    = 0x0F;
+
+    final static int SQUOTE0                     = 0x01;
+    final static int SQUOTE1                     = 0x02;
+    final static int SQUOTE2                     = 0x03;
+    final static int SQUOTE3                     = 0x04;
+    final static int SQUOTE4                     = 0x05;
+    final static int SQUOTE5                     = 0x06;
+    final static int SQUOTE6                     = 0x07;
+    final static int SQUOTE7                     = 0x08;
+
+    final static int SCHANGE0                    = 0x10;
+    final static int SCHANGE1                    = 0x11;
+    final static int SCHANGE2                    = 0x12;
+    final static int SCHANGE3                    = 0x13;
+    final static int SCHANGE4                    = 0x14;
+    final static int SCHANGE5                    = 0x15;
+    final static int SCHANGE6                    = 0x16;
+    final static int SCHANGE7                    = 0x17;
+
+    final static int SDEFINE0                    = 0x18;
+    final static int SDEFINE1                    = 0x19;
+    final static int SDEFINE2                    = 0x1A;
+    final static int SDEFINE3                    = 0x1B;
+    final static int SDEFINE4                    = 0x1C;
+    final static int SDEFINE5                    = 0x1D;
+    final static int SDEFINE6                    = 0x1E;
+    final static int SDEFINE7                    = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    final static int UCHANGE0                    = 0xE0;
+    final static int UCHANGE1                    = 0xE1;
+    final static int UCHANGE2                    = 0xE2;
+    final static int UCHANGE3                    = 0xE3;
+    final static int UCHANGE4                    = 0xE4;
+    final static int UCHANGE5                    = 0xE5;
+    final static int UCHANGE6                    = 0xE6;
+    final static int UCHANGE7                    = 0xE7;
+
+    final static int UDEFINE0                    = 0xE8;
+    final static int UDEFINE1                    = 0xE9;
+    final static int UDEFINE2                    = 0xEA;
+    final static int UDEFINE3                    = 0xEB;
+    final static int UDEFINE4                    = 0xEC;
+    final static int UDEFINE5                    = 0xED;
+    final static int UDEFINE6                    = 0xEE;
+    final static int UDEFINE7                    = 0xEF;
+
+    final static int UQUOTEU                     = 0xF0;
+    final static int UDEFINEX                    = 0xF1;
+    final static int URESERVED                   = 0xF2;  // reserved value
+
+    final static int BLOCKSIZE = 0xFF;
+    
+    /**
+     * Generate the table used as sOffsetTable in SCSU.
+     * This table contains preformed indices so we can do array lookups 
+     * instead of calculations for speed during decompression.
+     */
+    static void printOffsetTable()
+    {
+        int     i           = 0;
+    int []    offsetTable = new int [ BLOCKSIZE + 1 ];
+
+        // 0x00 is reserved
+
+        // half blocks from U+0080 to U+3380
+        for( i = 0x01; i < 0x68; i++ )
+            offsetTable[i] = i * 0x80;
+    
+        // half blocks from U+E000 to U+FF80
+        for( i = 0x68; i < 0xA8; i++ )
+            offsetTable[i] = (i * 0x80) + 0xAC00;
+    
+        // 0xA8..0xF8 is reserved
+ 
+        offsetTable[ LATININDEX ] = 0x00C0;
+        offsetTable[ IPAEXTENSIONINDEX ] = 0x0250;
+        offsetTable[ GREEKINDEX ] = 0x0370;
+        offsetTable[ ARMENIANINDEX ] = 0x0530;
+        offsetTable[ HIRAGANAINDEX ] = 0x3040;
+        offsetTable[ KATAKANAINDEX ] = 0x30A0;
+        offsetTable[ HALFWIDTHKATAKANAINDEX ] = 0xFF60;
+
+        // dump the generated table
+    System.out.println("static int [] sOffsetTable = {");
+        for(i = 0; i < offsetTable.length - 1; i++)
+            System.out.print("0x" + Integer.toHexString(offsetTable[i])
+                 + ", ");
+        for(i = offsetTable.length - 1; i < offsetTable.length; i++)
+            System.out.print("0x" + Integer.toHexString(offsetTable[i]));
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    /**
+     * Generate the table used as sSingleTagTable in UnicodeCompressor.
+     * This table contains boolean values indicating if a byte is a
+     * single-byte mode tag.
+     */
+    static void printSingleTagTable()
+    {
+        int        i              = 0;
+    boolean [] singleTagTable = new boolean  [ BLOCKSIZE + 1 ];
+
+        for( i = 0x00; i <= BLOCKSIZE; i++ ) {
+            switch( i ) {
+        
+        case SQUOTEU:  case SCHANGEU: 
+        case SDEFINEX: case SRESERVED:
+        case SQUOTE0:  case SQUOTE1:  
+        case SQUOTE2:  case SQUOTE3:
+        case SQUOTE4:  case SQUOTE5:  
+        case SQUOTE6:  case SQUOTE7:
+        case SCHANGE0: case SCHANGE1: 
+        case SCHANGE2: case SCHANGE3:
+        case SCHANGE4: case SCHANGE5: 
+        case SCHANGE6: case SCHANGE7:
+        case SDEFINE0: case SDEFINE1: 
+        case SDEFINE2: case SDEFINE3:
+        case SDEFINE4: case SDEFINE5: 
+        case SDEFINE6: case SDEFINE7:
+        singleTagTable[i] = true;
+                break;
+        
+        default:
+        singleTagTable[i] = false;
+                break;
+            }
+        }
+    
+        // dump the generated table
+        System.out.println("private static boolean [] sSingleTagTable = {");
+        for(i = 0; i < singleTagTable.length - 1; i++)
+            System.out.print(singleTagTable[i] + ", ");
+        for(i = singleTagTable.length - 1; i < singleTagTable.length; i++)
+            System.out.print(singleTagTable[i]);
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    
+    /**
+     * Generate the table used as sUnicodeTagTable in 
+     * This table contains boolean values indicating if a byte is a
+     * unicode mode tag.
+     */
+    static void printUnicodeTagTable()
+    {
+        int        i               = 0;
+    boolean [] unicodeTagTable = new boolean  [ BLOCKSIZE + 1 ];
+
+        for( i = 0x00; i <= BLOCKSIZE; i++ ) {
+            switch( i ) {
+        case UQUOTEU:  case UDEFINEX: 
+        case URESERVED:
+        case UCHANGE0: case UCHANGE1: 
+        case UCHANGE2: case UCHANGE3:
+        case UCHANGE4: case UCHANGE5: 
+        case UCHANGE6: case UCHANGE7:
+        case UDEFINE0: case UDEFINE1: 
+        case UDEFINE2: case UDEFINE3:
+        case UDEFINE4: case UDEFINE5: 
+        case UDEFINE6: case UDEFINE7:
+        unicodeTagTable[i] = true;
+                break;
+        
+        default:
+        unicodeTagTable[i] = false;
+                break;
+            }
+        }
+    
+        // dump the generated table
+        System.out.println("private static boolean [] sUnicodeTagTable = {");
+        for(i = 0; i < unicodeTagTable.length - 1; i++)
+            System.out.print(unicodeTagTable[i] + ", ");
+        for(i = unicodeTagTable.length - 1; i < unicodeTagTable.length; i++)
+            System.out.print(unicodeTagTable[i]);
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    public static void main(String[] argv)
+    {
+        printOffsetTable();
+        printSingleTagTable();
+        printUnicodeTagTable();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/compression/package.html b/src/com/ibm/icu/dev/tool/compression/package.html
new file mode 100644
index 0000000..b4a3ec9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/compression/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Tool used to rebuild tables used by the Unicode compression classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/docs/APIData.java b/src/com/ibm/icu/dev/tool/docs/APIData.java
new file mode 100644
index 0000000..44165b4
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/APIData.java
@@ -0,0 +1,148 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+/**
+ * Represent a file of APIInfo records.
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.util.*;
+import java.util.zip.*;
+
+public final class APIData {
+    int version;
+    String name;
+    String base;
+    TreeSet set;
+
+    static APIData read(BufferedReader br, boolean internal) {
+        try {
+            APIData data = new APIData();
+
+            data.version = Integer.parseInt(APIInfo.readToken(br)); // version
+            if (data.version > APIInfo.VERSION) {
+                throw new IllegalArgumentException("data version " + data.version + " is newer than current version (" + APIInfo.VERSION + ")");
+            }
+            data.name = APIInfo.readToken(br);
+            data.base = APIInfo.readToken(br); // base
+            br.readLine();
+
+            data.set = new TreeSet(APIInfo.defaultComparator());
+            for (APIInfo info = new APIInfo(); info.read(br); info = new APIInfo()) {
+                if (internal || !info.isInternal()) {
+                    data.set.add(info);
+                }
+            }
+            // System.out.println("read " + data.set.size() + " record(s)");
+            return data;
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException("error reading api data");
+            re.initCause(e);
+            throw re;
+        }
+    }
+
+    static APIData read(File file, boolean internal) {
+        String fileName = file.getName();
+        try {
+            InputStream is;
+            if (fileName.endsWith(".zip")) {
+                ZipFile zf = new ZipFile(file);
+                Enumeration entryEnum = zf.entries();
+                if (entryEnum.hasMoreElements()) {
+                    ZipEntry entry = (ZipEntry)entryEnum.nextElement();
+                    is = zf.getInputStream(entry);
+                    // we only handle one!!!
+                } else {
+                    throw new IOException("zip file is empty");
+                }
+            } else {
+                is = new FileInputStream(file);
+                if (fileName.endsWith(".gz")) {
+                    is = new GZIPInputStream(is);
+                }
+            }
+            InputStreamReader isr = new InputStreamReader(is);
+            return read(new BufferedReader(isr), internal);
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException("error getting info stream: " + fileName);
+            re.initCause(e);
+            throw re;
+        }
+    }
+
+    static APIData read(String fileName, boolean internal) {
+        return read(new File(fileName), internal);
+    }
+
+    private static final String[] stanames = { "draft", "stable", "deprecated", "obsolete", "internal" };
+    private static final String[] catnames = { "classes", "fields", "constructors", "methods" };
+
+    public void printStats(PrintWriter pw) {
+        // classes, methods, fields
+        // draft, stable, other
+
+        int[] stats = new int[catnames.length * stanames.length];
+
+        Iterator iter = set.iterator();
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+
+            if (info.isPublic() || info.isProtected()) {
+                int sta = info.getVal(APIInfo.STA);
+                int cat = info.getVal(APIInfo.CAT);
+                stats[cat * stanames.length + sta] += 1;
+            }
+        }
+
+        int tt = 0;
+        for (int cat = 0; cat < catnames.length; ++cat) {
+            pw.println(catnames[cat]);
+            int t = 0;
+            for (int sta = 0; sta < stanames.length; ++sta) {
+                int v = stats[cat * stanames.length + sta];
+                t += v;
+                pw.println("   " + stanames[sta] + ": " + v);
+            }
+            tt += t;
+            pw.println("total: " + t);
+            pw.println();
+        }
+        pw.println("total apis: " + tt);
+    }
+
+    public static void main(String[] args) {
+        PrintWriter pw = new PrintWriter(System.out);
+
+        boolean internal = false;
+        String path = "src/com/ibm/icu/dev/tool/docs/";
+
+        String fn = "icu4j341.api.gz";
+        if (args.length == 0) {
+            args = new String[] { "-file", fn };
+        }
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-path:")) {
+                path = args[++i];
+            } else if (arg.equals("-internal:")) {
+                internal = args[++i].toLowerCase().charAt(0) == 't';
+            } else if (arg.equals("-file")) {
+                fn = args[++i];
+
+                File f = new File(path, fn);
+                read(f,internal).printStats(pw);
+                pw.flush();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/APIInfo.java b/src/com/ibm/icu/dev/tool/docs/APIInfo.java
new file mode 100644
index 0000000..fde36e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/APIInfo.java
@@ -0,0 +1,544 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * Represents the API information on a doc element.
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.util.*;
+
+class APIInfo {
+    // version id for the format of the APIInfo data
+
+    public static final int VERSION = 2;
+
+    // public keys and values for queries on info
+
+    public static final int STA = 0, STA_DRAFT = 0, STA_STABLE = 1, STA_DEPRECATED = 2, STA_OBSOLETE = 3, STA_INTERNAL = 4;
+    public static final int VIS = 1, VIS_PACKAGE = 0, VIS_PUBLIC= 1, VIS_PROTECTED = 2, VIS_PRIVATE = 3;
+    public static final int STK = 2, STK_STATIC = 1;
+    public static final int FIN = 3, FIN_FINAL = 1;
+    public static final int SYN = 4, SYN_SYNCHRONIZED = 1;
+    public static final int ABS = 5, ABS_ABSTRACT = 1;
+    public static final int CAT = 6, CAT_CLASS = 0, CAT_FIELD = 1, CAT_CONSTRUCTOR = 2, CAT_METHOD = 3;
+    public static final int PAK = 7;
+    public static final int CLS = 8;
+    public static final int NAM = 9;
+    public static final int SIG = 10;
+    public static final int EXC = 11;
+    public static final int NUM_TYPES = 11;
+
+    // the separator between tokens in the data file
+    public int[] masks = { 0x7, 0x3, 0x1, 0x1, 0x1, 0x1, 0x3 };
+    public int[] shifts = { 0, 3, 5, 6, 7, 8, 9 };
+
+    public static final char SEP = ';';
+
+    // Internal State
+    private int    info; // information about numeric values packed into an int as variable-length nibbles
+    private String pack = ""; // package
+    private String cls  = "";  // enclosing class
+    private String name = ""; // name
+    private String sig  = "";  // signature, class: inheritance, method: signature, field: type, const: signature
+    private String exc  = "";  // throws
+    private String stver = ""; // status version
+
+    private boolean includeStatusVer = false;
+
+    public int hashCode() {
+        return (((pack.hashCode() << 3) ^ cls.hashCode()) << 3) ^ name.hashCode();
+    }
+
+    public boolean equals(Object rhs) {
+        if (rhs == this) return true;
+        if (rhs == null) return false;
+        try {
+            APIInfo that = (APIInfo)rhs;
+            return this.info == that.info &&
+                this.pack.equals(that.pack) &&
+                this.cls.equals(that.cls) &&
+                this.name.equals(that.name) &&
+                this.sig.equals(that.sig) &&
+                this.exc.equals(that.exc) &&
+                this.stver.equals(this.stver);
+        }
+        catch (ClassCastException e) {
+            return false;
+        }
+    }
+
+    public void setDraft() { setType(STA, STA_DRAFT); }
+    public void setStable() { setType(STA, STA_STABLE); }
+    public void setDeprecated() { setType(STA, STA_DEPRECATED); }
+    public void setObsolete() { setType(STA, STA_OBSOLETE); }
+    public void setInternal() { setType(STA, STA_INTERNAL); }
+    public void setPackage() { setType(VIS, VIS_PACKAGE); }
+    public void setPublic() { setType(VIS, VIS_PUBLIC); }
+    public void setProtected() { setType(VIS, VIS_PROTECTED); }
+    public void setPrivate() { setType(VIS, VIS_PRIVATE); }
+    public void setStatic() { setType(STK, STK_STATIC); }
+    public void setFinal() { setType(FIN, FIN_FINAL); }
+    public void setSynchronized() { setType(SYN, SYN_SYNCHRONIZED); }
+    public void setAbstract() { setType(ABS, ABS_ABSTRACT); }
+    public void setClass() { setType(CAT, CAT_CLASS); }
+    public void setField() { setType(CAT, CAT_FIELD); }
+    public void setConstructor() { setType(CAT, CAT_CONSTRUCTOR); }
+    public void setMethod() { setType(CAT, CAT_METHOD); }
+
+    public void setPackage(String val) { setType(PAK, val); }
+    public void setClassName(String val) { setType(CLS, val); }
+    public void setName(String val) { setType(NAM, val); }
+    public void setSignature(String val) { setType(SIG, val); }
+    public void setExceptions(String val) { setType(EXC, val); }
+
+    public boolean isDraft() { return getVal(STA) == STA_DRAFT; }
+    public boolean isStable() { return getVal(STA) == STA_STABLE; }
+    public boolean isDeprecated() { return getVal(STA) == STA_DEPRECATED; }
+    public boolean isObsolete() { return getVal(STA) == STA_OBSOLETE; }
+    public boolean isInternal() { return getVal(STA) == STA_INTERNAL; }
+    public boolean isPackage() { return getVal(VIS) == VIS_PACKAGE; }
+    public boolean isPublic() { return getVal(VIS) == VIS_PUBLIC; }
+    public boolean isProtected() { return getVal(VIS) == VIS_PROTECTED; }
+    public boolean isPrivate() { return getVal(VIS) == VIS_PRIVATE; }
+    public boolean isStatic() { return getVal(STK) == STK_STATIC; }
+    public boolean isFinal() { return getVal(FIN) == FIN_FINAL; }
+    public boolean isSynchronized() { return getVal(SYN) == SYN_SYNCHRONIZED; }
+    public boolean isAbstract() { return getVal(ABS) == ABS_ABSTRACT; }
+    public boolean isClass() { return getVal(CAT) == CAT_CLASS; }
+    public boolean isField() { return getVal(CAT) == CAT_FIELD; }
+    public boolean isConstructor() { return getVal(CAT) == CAT_CONSTRUCTOR; }
+    public boolean isMethod() { return getVal(CAT) == CAT_METHOD; }
+
+    public String getPackageName() { return get(PAK, true); }
+    public String getClassName() { return get(CLS, true); }
+    public String getName() { return get(NAM, true); }
+    public String getSignature() { return get(SIG, true); }
+    public String getExceptions() { return get(EXC, true); }
+
+    public void setStatusVersion(String v) { stver = v; }
+    public String getStatusVersion() { return stver; }
+
+    /**
+     * Return the integer value for the provided type.  The type
+     * must be one of the defined type names.  The return value
+     * will be one of corresponding values for that type.
+     */
+    public int getVal(int typ) {
+        validateType(typ);
+        if (typ >= shifts.length) {
+            return 0;
+        }
+        return (info >>> shifts[typ]) & masks[typ];
+    }
+
+    /**
+     * Return the string value for the provided type.  The type
+     * must be one of the defined type names.  The return value
+     * will be one of corresponding values for that type.  Brief
+     * should be true for writing data files, false for presenting
+     * information to the user.
+     */
+    public String get(int typ, boolean brief) {
+        validateType(typ);
+        String[] vals = brief ? shortNames[typ] : names[typ];
+        if (vals == null) {
+            switch (typ) {
+            case PAK: return pack;
+            case CLS: return cls;
+            case NAM: return name;
+            case SIG: return sig;
+            case EXC: return exc;
+            }
+        }
+        int val = (info >>> shifts[typ]) & masks[typ];
+        return vals[val];
+    }
+
+    /**
+     * Set the numeric value for the type.  The value should be a
+     * value corresponding to the type.  Only the lower two bits
+     * of the value are used.
+     */
+    public void setType(int typ, int val) {
+        validateType(typ);
+        if (typ < masks.length) {
+            info &= ~(masks[typ] << shifts[typ]);
+            info |= (val&masks[typ]) << shifts[typ];
+        }
+    }
+
+    /**
+     * Set the string value for the type.  For numeric types,
+     * the value should be a string in 'brief' format.  For
+     * non-numeric types, the value can be any
+     * string.
+     */
+    private void setType(int typ, String val) {
+        validateType(typ);
+        String[] vals = shortNames[typ];
+        if (vals == null) {
+            if (val == null) {
+                val = "";
+            }
+            switch (typ) {
+            case PAK: pack = val; break;
+            case CLS: cls = val; break;
+            case NAM: name = val; break;
+            case SIG: sig = val; break;
+            case EXC: exc = val; break;
+            }
+            return;
+        }
+
+        for (int i = 0; i < vals.length; ++i) {
+            if (val.equalsIgnoreCase(vals[i])) {
+                info &= ~(masks[typ] << shifts[typ]);
+                info |= i << shifts[typ];
+                return;
+            }
+        }
+
+        throw new IllegalArgumentException("unrecognized value '" + val + "' for type '" + typeNames[typ] + "'");
+    }
+
+    /**
+     * Enable status version included in input/output
+     */
+    public void includeStatusVersion(boolean include) {
+        includeStatusVer = include;
+    }
+
+    /**
+     * Write the information out as a single line in brief format.
+     * If there are IO errors, throws a RuntimeException.
+     */
+    public void writeln(BufferedWriter w) {
+        try {
+            for (int i = 0; i < NUM_TYPES; ++i) {
+                String s = get(i, true);
+                if (s != null) {
+                    w.write(s);
+                }
+                if (includeStatusVer && i == STA) {
+                    String ver = getStatusVersion();
+                    if (ver.length() > 0) {
+                        w.write("@");
+                        w.write(getStatusVersion());
+                    }
+                }
+                w.write(SEP);
+            }
+            w.newLine();
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException("IO Error");
+            re.initCause(e);
+            throw re;
+        }
+    }
+
+    /**
+     * Read a record from the input and initialize this APIInfo.
+     * Return true if successful, false if EOF, otherwise throw
+     * a RuntimeException.
+     */
+    public boolean read(BufferedReader r) {
+        int i = 0;
+        try {
+            for (; i < NUM_TYPES; ++i) {
+                setType(i, readToken(r));
+            }
+            r.readLine(); // swallow line end sequence
+        }
+        catch (IOException e) {
+            if (i == 0) { // assume if first read returns error, we have reached end of input
+                return false;
+            }
+            RuntimeException re = new RuntimeException("IO Error");
+            re.initCause(e);
+            throw re;
+        }
+
+        return true;
+    }
+
+    /**
+     * Read one token from input, which should have been written by
+     * APIInfo.  Throws IOException if EOF is encountered before the
+     * token is complete (i.e. before the separator character is
+     * encountered) or if the token exceeds the maximum length of
+     * 255 chars.
+     */
+    public static String readToken(BufferedReader r) throws IOException {
+        char[] buf = new char[256];
+        int i = 0;
+        for (; i < buf.length; ++i) {
+            int c = r.read();
+            if (c == -1) {
+                throw new IOException("unexpected EOF");
+            } else if (c == SEP) {
+                break;
+            }
+            buf[i] = (char)c;
+        }
+        if (i == buf.length) {
+            throw new IOException("unterminated token" + new String(buf));
+        }
+
+        return new String(buf, 0, i);
+    }
+
+    /**
+     * The default comparator for APIInfo.  This compares packages, class/name
+     * (as the info represents a class or other object), category, name,
+     * and signature.
+     */
+    public static Comparator defaultComparator() {
+        final Comparator c = new Comparator() {
+                public int compare(Object lhs, Object rhs) {
+                    APIInfo lhi = (APIInfo)lhs;
+                    APIInfo rhi = (APIInfo)rhs;
+                    int result = lhi.pack.compareTo(rhi.pack);
+                    if (result == 0) {
+                        result = (lhi.getVal(CAT) == CAT_CLASS ? lhi.name : lhi.cls)
+                            .compareTo(rhi.getVal(CAT) == CAT_CLASS ? rhi.name : rhi.cls);
+                        if (result == 0) {
+                            result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                            if (result == 0) {
+                                result = lhi.name.compareTo(rhi.name);
+                                if (result == 0) {
+                                    result = lhi.sig.compareTo(rhi.sig);
+                                }
+                            }
+                        }
+                    }
+                    return result;
+                }
+            };
+        return c;
+    }
+
+    /**
+     * This compares two APIInfos by package, class/name, category, name, and then if
+     * the APIInfo does not represent a class, by signature.  The difference between
+     * this and the default comparator is that APIInfos representing classes are considered
+     * equal regardless of their signatures (which represent inheritance for classes).
+     */
+    public static Comparator changedComparator() {
+        final Comparator c = new Comparator() {
+                public int compare(Object lhs, Object rhs) {
+                    APIInfo lhi = (APIInfo)lhs;
+                    APIInfo rhi = (APIInfo)rhs;
+                    int result = lhi.pack.compareTo(rhi.pack);
+                    if (result == 0) {
+                        result = (lhi.getVal(CAT) == CAT_CLASS ? lhi.name : lhi.cls)
+                            .compareTo(rhi.getVal(CAT) == CAT_CLASS ? rhi.name : rhi.cls);
+                        if (result == 0) {
+                            result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                            if (result == 0) {
+                                result = lhi.name.compareTo(rhi.name);
+                                if (result == 0 && lhi.getVal(CAT) != CAT_CLASS) {
+                                    // signature change on fields ignored
+                                    if (lhi.getVal(CAT) != CAT_FIELD) {
+                                        result = lhi.sig.compareTo(rhi.sig);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    return result;
+                }
+            };
+        return c;
+    }
+
+    /**
+     * This compares two APIInfos by package, then sorts classes before non-classes, then
+     * by class/name, category, name, and signature.
+     */
+    public static Comparator classFirstComparator() {
+        final Comparator c = new Comparator() {
+                public int compare(Object lhs, Object rhs) {
+                    APIInfo lhi = (APIInfo)lhs;
+                    APIInfo rhi = (APIInfo)rhs;
+                    int result = lhi.pack.compareTo(rhi.pack);
+                    if (result == 0) {
+                        boolean lcls = lhi.getVal(CAT) == CAT_CLASS;
+                        boolean rcls = rhi.getVal(CAT) == CAT_CLASS;
+                        result = lcls == rcls ? 0 : (lcls ? -1 : 1);
+                        if (result == 0) {
+                            result = (lcls ? lhi.name : lhi.cls).compareTo(rcls ? rhi.name : rhi.cls);
+                            if (result == 0) {
+                                result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                                if (result == 0) {
+                                    result = lhi.name.compareTo(rhi.name);
+                                    if (result == 0 && !lcls) {
+                                        result = lhi.sig.compareTo(rhi.sig);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    return result;
+                }
+            };
+        return c;
+    }
+
+    /**
+     * Write the data in report format.
+     */
+    public void print(PrintWriter pw, boolean detail, boolean html) {
+        StringBuffer buf = new StringBuffer();
+
+        // remove all occurrences of icu packages from the param string
+        // fortunately, all the packages have 4 chars (lang, math, text, util).
+        String xsig = sig;
+        if (!detail) {
+            final String ICUPACK = "com.ibm.icu.";
+            StringBuffer tbuf = new StringBuffer();
+            for (int i = 0; i < sig.length();) {
+                int n = sig.indexOf(ICUPACK, i);
+                if (n == -1) {
+                    tbuf.append(sig.substring(i));
+                    break;
+                }
+                tbuf.append(sig.substring(i, n));
+                i = n + ICUPACK.length() + 5; // trailing 'xxxx.'
+            }
+            xsig = tbuf.toString();
+        }
+
+        // construct signature
+        for (int i = STA; i < CAT; ++i) { // include status
+            String s = get(i, false);
+            if (s != null && s.length() > 0) {
+                if (html && s.indexOf("internal") != -1) {
+                    buf.append("<span style='color:red'>");
+                    buf.append(s);
+                    buf.append("</span>");
+                } else {
+                    buf.append(s);
+                    buf.append(' ');
+                }
+            }
+        }
+
+        int val = getVal(CAT);
+        switch (val) {
+        case CAT_CLASS:
+            if (sig.indexOf("extends") == -1) {
+                buf.append("interface ");
+            } else {
+                buf.append("class ");
+            }
+        if (html) {
+        buf.append("<i>");
+        }
+            if (cls.length() > 0) {
+                buf.append(cls);
+                buf.append('.');
+            }
+            buf.append(name);
+        if (html) {
+        buf.append("</i>");
+        }
+            if (detail) {
+                buf.append(' ');
+                buf.append(sig);
+            }
+            break;
+
+        case CAT_FIELD:
+            buf.append(xsig);
+            buf.append(' ');
+            buf.append(name);
+            break;
+
+        case CAT_METHOD:
+        case CAT_CONSTRUCTOR:
+            int n = xsig.indexOf('(');
+            if (n > 0) {
+                buf.append(xsig.substring(0, n));
+                buf.append(' ');
+            } else {
+                n = 0;
+            }
+        if (html) {
+        buf.append("<i>" + name + "</i>");
+        } else {
+        buf.append(name);
+        }
+            buf.append(xsig.substring(n));
+            break;
+        }
+
+        pw.print(buf.toString());
+    }
+
+    public void println(PrintWriter pw, boolean detail, boolean html) {
+        print(pw, detail, html);
+        pw.println();
+    }
+
+    private static final String[] typeNames = {
+        "status", "visibility", "static", "final", "synchronized",
+        "abstract", "category", "package", "class", "name", "signature"
+    };
+
+    public static final String getTypeValName(int typ, int val) {
+        try {
+            return names[typ][val];
+        }
+        catch (Exception e) {
+            return "";
+        }
+    }
+
+    private static final String[][] names = {
+        { "(draft)     ", "(stable)    ", "(deprecated)", "(obsolete)  ", "*internal*  " },
+        { "package", "public", "protected", "private" },
+        { "", "static" },
+        { "", "final" },
+        { "", "synchronized" },
+        { "", "abstract" },
+        { "class", "field", "constructor", "method"  },
+        null,
+        null,
+        null,
+        null,
+        null
+    };
+
+    private static final String[][] shortNames = {
+        { "DR", "ST", "DP", "OB", "IN" },
+        { "PK", "PB", "PT", "PR" },
+        { "NS", "ST" },
+        { "NF", "FN" },
+        { "NS", "SY" },
+        { "NA", "AB" },
+        { "L", "F", "C", "M" },
+        null,
+        null,
+        null,
+        null,
+        null
+    };
+
+    private static void validateType(int typ) {
+        if (typ < 0 || typ > NUM_TYPES) {
+            throw new IllegalArgumentException("bad type index: " + typ);
+        }
+    }
+
+    public String toString() {
+        return get(NAM, true);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/CheckAPI.java b/src/com/ibm/icu/dev/tool/docs/CheckAPI.java
new file mode 100644
index 0000000..6db3c34
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/CheckAPI.java
@@ -0,0 +1,1027 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2007, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+/**
+ * Generate a list of ICU's public APIs, sorted by qualified name and signature
+ * public APIs are all non-internal, non-package apis in com.ibm.icu.[lang|math|text|util].
+ * For each API, list
+ * - public, package, protected, or private (PB PK PT PR)
+ * - static or non-static (STK NST)
+ * - final or non-final (FN NF)
+ * - synchronized or non-synchronized (SYN NSY)
+ * - stable, draft, deprecated, obsolete (ST DR DP OB)
+ * - abstract or non-abstract (AB NA)
+ * - constructor, member, field (C M F)
+ *
+ * Requires JDK 1.4.2 or later
+ * 
+ * Sample invocation:
+ * c:/j2sdk1.4.2/bin/javadoc 
+ *   -classpath c:/jd2sk1.4.2/lib/tools.jar 
+ *   -doclet com.ibm.icu.dev.tool.docs.CheckAPI 
+ *   -docletpath c:/doug/cvsproj/icu4j/src 
+ *   -sourcepath c:/eclipse2.1/workspace2/icu4j/src 
+ *   -compare c:/doug/cvsproj/icu4j/src/com/ibm/icu/dev/tool/docs/api2_6_1.txt 
+ *   -output foo 
+ *   com.ibm.icu.text
+ *
+ * todo: separate generation of data files (which requires taglet) from 
+ * comparison and report generation (which does not require it)
+ * todo: provide command-line control of filters of which subclasses/packages to process
+ * todo: record full inheritance heirarchy, not just immediate inheritance 
+ * todo: allow for aliasing comparisons (force (pkg.)*class to be treated as though it 
+ * were in a different pkg/class heirarchy (facilitates comparison of icu4j and java)
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import com.sun.javadoc.*;
+import java.io.*;
+import java.util.*;
+
+public class CheckAPI {
+    RootDoc root;
+    String compare; // file
+    String compareName;
+    TreeSet compareSet;
+    TreeSet results;
+    boolean html;
+    String srcName = "Current"; // default source name
+    String output;
+    
+    private static final int DATA_FILE_VERSION = 1;
+    private static final char SEP = ';';
+
+    private static final int STA = 0, STA_DRAFT = 0, STA_STABLE = 1, STA_DEPRECATED = 2, STA_OBSOLETE = 3;
+    private static final int VIS = 1, VIS_PACKAGE = 0, VIS_PUBLIC= 1, VIS_PROTECTED = 2, VIS_PRIVATE = 3;
+    private static final int STK = 2, STK_STATIC = 1;
+    private static final int FIN = 3, FIN_FINAL = 1;
+    private static final int SYN = 4, SYN_SYNCHRONIZED = 1;
+    private static final int ABS = 5, ABS_ABSTRACT = 1;
+    private static final int CAT = 6, CAT_CLASS = 0, CAT_FIELD = 1, CAT_CONSTRUCTOR = 2, CAT_METHOD = 3;
+    private static final int PAK = 7;
+    private static final int CLS = 8;
+    private static final int NAM = 9;
+    private static final int SIG = 10;
+    private static final int EXC = 11;
+    private static final int NUM_TYPES = 11;
+
+    static abstract class APIInfo {
+        public abstract int getVal(int typ);
+        public abstract String get(int typ, boolean brief);
+        public abstract void write(BufferedWriter w, boolean brief, boolean html, boolean detail);
+    }
+        
+    final static class Info extends APIInfo {
+        private int    info;
+        private String pack; // package
+        private String cls; // enclosing class
+        private String name; // name
+        private String sig;  // signature, class: inheritance, method: signature, field: type, const: signature
+        private String exc;  // throws 
+        
+        public int getVal(int typ) {
+            validateType(typ);
+            return (info >> (typ*2)) & 0x3;
+        }
+
+        public String get(int typ, boolean brief) {
+            validateType(typ);
+            String[] vals = brief ? shortNames[typ] : names[typ];
+            if (vals == null) {
+                switch (typ) {
+                case PAK: return pack;
+                case CLS: return cls;
+                case NAM: return name;
+                case SIG: return sig;
+                case EXC: return exc;
+                }
+            }
+            int val = (info >> (typ*2)) & 0x3;
+            return vals[val];
+        }
+
+        private void setType(int typ, int val) {
+            validateType(typ);
+            info &= ~(0x3 << (typ*2));
+            info |= (val&0x3) << (typ * 2);
+        }
+
+        private void setType(int typ, String val) {
+            validateType(typ);
+            String[] vals = shortNames[typ];
+            if (vals == null) {
+                switch (typ) {
+                case PAK: pack = val; break;
+                case CLS: cls = val; break;
+                case NAM: name = val; break;
+                case SIG: sig = val; break;
+                case EXC: exc = val; break;
+                }
+                return;
+            }
+
+            for (int i = 0; i < vals.length; ++i) {
+                if (val.equalsIgnoreCase(vals[i])) {
+                    info &= ~(0x3 << (typ*2));
+                    info |= i << (typ*2);
+                    return;
+                }
+            }
+
+            throw new IllegalArgumentException("unrecognized value '" + val + "' for type '" + typeNames[typ] + "'");
+        }
+
+        public void write(BufferedWriter w, boolean brief, boolean html, boolean detail) {
+            try {
+                if (brief) {
+                    for (int i = 0; i < NUM_TYPES; ++i) {
+                        String s = get(i, true);
+                        if (s != null) {
+                            w.write(s);
+                        }
+                        w.write(SEP);
+                    }
+                } else {
+                    // remove all occurrences of icu packages from the param string
+                    // fortunately, all the packages have 4 chars (lang, math, text, util).
+                    String xsig = sig;
+                    if (!detail) {
+                        final String ICUPACK = "com.ibm.icu.";
+                        StringBuffer buf = new StringBuffer();
+                        for (int i = 0; i < sig.length();) {
+                            int n = sig.indexOf(ICUPACK, i);
+                            if (n == -1) {
+                                buf.append(sig.substring(i));
+                                break;
+                            }
+                            buf.append(sig.substring(i, n));
+                            i = n + ICUPACK.length() + 5; // trailing 'xxxx.'
+                        }
+                        xsig = buf.toString();
+                    }
+
+                    // construct signature
+                    for (int i = STA; i < CAT; ++i) { // include status
+                        String s = get(i, false);
+                        if (s != null && s.length() > 0) {
+                            if (i == STA) {
+                                w.write('(');
+                                w.write(s);
+                                w.write(')');
+                            } else {
+                                w.write(s);
+                            }
+                            w.write(' ');
+                        }
+                    }
+
+                    int val = getVal(CAT);
+                    switch (val) {
+                    case CAT_CLASS:
+                        if (sig.indexOf("extends") == -1) {
+                            w.write("interface ");
+                        } else {
+                            w.write("class ");
+                        }
+                        if (cls.length() > 0) {
+                            w.write(cls);
+                            w.write('.');
+                        }
+                        w.write(name);
+                        if (detail) {
+                            w.write(' ');
+                            w.write(sig);
+                        }
+                        break;
+
+                    case CAT_FIELD:
+                        w.write(xsig);
+                        w.write(' ');
+                        w.write(name);
+                        break;
+
+                    case CAT_METHOD:
+                    case CAT_CONSTRUCTOR:
+                        int n = xsig.indexOf('(');
+                        if (n > 0) {
+                            w.write(xsig.substring(0, n));
+                            w.write(' ');
+                        } else {
+                            n = 0;
+                        }
+                        w.write(name);
+                        w.write(xsig.substring(n));
+                        break;
+                    }
+                }
+                w.newLine();
+            }
+            catch (IOException e) {
+                RuntimeException re = new RuntimeException("IO Error");
+                re.initCause(e);
+                throw re;
+            }
+        }
+
+        public boolean read(BufferedReader r) {
+            int i = 0;
+            try {
+                for (; i < NUM_TYPES; ++i) {
+                    setType(i, readToken(r));
+                }
+                r.readLine(); // swallow line end sequence
+            }
+            catch (IOException e) {
+                if (i == 0) { // assume if first read returns error, we have reached end of input
+                    return false;
+                }
+                RuntimeException re = new RuntimeException("IO Error");
+                re.initCause(e);
+                throw re;
+            }
+
+            return true;
+        }
+
+        public boolean read(ProgramElementDoc doc) {
+
+            // Doc. name
+            // Doc. isField, isMethod, isConstructor, isClass, isInterface
+            // ProgramElementDoc. containingClass, containingPackage
+            // ProgramElementDoc. isPublic, isProtected, isPrivate, isPackagePrivate
+            // ProgramElementDoc. isStatic, isFinal
+            // MemberDoc.isSynthetic
+            // ExecutableMemberDoc isSynchronized, signature
+            // Type.toString() // e.g. "String[][]"
+            // ClassDoc.isAbstract, superClass, interfaces, fields, methods, constructors, innerClasses
+            // FieldDoc type
+            // ConstructorDoc qualifiedName
+            // MethodDoc isAbstract, returnType
+
+            
+            // status
+            setType(STA, tagStatus(doc));
+
+            // visibility
+            if (doc.isPublic()) {
+                setType(VIS, VIS_PUBLIC);
+            } else if (doc.isProtected()) {
+                setType(VIS, VIS_PROTECTED);
+            } else if (doc.isPrivate()) {
+                setType(VIS, VIS_PRIVATE);
+            } else {
+                // default is package
+            }
+
+            // static
+            if (doc.isStatic()) {
+                setType(STK, STK_STATIC);
+            } else {
+                // default is non-static
+            }
+
+            // final
+            if (doc.isFinal()) {
+                setType(FIN, FIN_FINAL);
+            } else {
+                // default is non-final
+            }
+
+            // type
+            if (doc.isField()) {
+                setType(CAT, CAT_FIELD);
+            } else if (doc.isMethod()) {
+                setType(CAT, CAT_METHOD);
+            } else if (doc.isConstructor()) {
+                setType(CAT, CAT_CONSTRUCTOR);
+            } else if (doc.isClass() || doc.isInterface()) {
+                setType(CAT, CAT_CLASS);
+            }
+
+            setType(PAK, doc.containingPackage().name());
+            setType(CLS, (doc.isClass() || doc.isInterface() || (doc.containingClass() == null)) ? "" : doc.containingClass().name());
+            setType(NAM, doc.name());
+
+            if (doc instanceof FieldDoc) {
+                FieldDoc fdoc = (FieldDoc)doc;
+                setType(SIG, fdoc.type().toString());
+            } else if (doc instanceof ClassDoc) {
+                ClassDoc cdoc = (ClassDoc)doc;
+
+                if (cdoc.isClass() && cdoc.isAbstract()) { // interfaces are abstract by default, don't mark them as abstract
+                    setType(ABS, ABS_ABSTRACT);
+                }
+
+                StringBuffer buf = new StringBuffer();
+                if (cdoc.isClass()) {
+                    buf.append("extends ");
+                    buf.append(cdoc.superclass().qualifiedName());
+                }
+                ClassDoc[] imp = cdoc.interfaces();
+                if (imp != null && imp.length > 0) {
+                    if (buf.length() > 0) {
+                        buf.append(" ");
+                    }
+                    buf.append("implements");
+                    for (int i = 0; i < imp.length; ++i) {
+                        if (i != 0) {
+                            buf.append(",");
+                        }
+                        buf.append(" ");
+                        buf.append(imp[i].qualifiedName());
+                    }
+                }
+                setType(SIG, buf.toString());
+            } else {
+                ExecutableMemberDoc emdoc = (ExecutableMemberDoc)doc;
+                if (emdoc.isSynchronized()) {
+                    setType(SYN, SYN_SYNCHRONIZED);
+                }
+
+                if (doc instanceof MethodDoc) {
+                    MethodDoc mdoc = (MethodDoc)doc;
+                    if (mdoc.isAbstract()) {
+                        setType(ABS, ABS_ABSTRACT);
+                    }
+                    setType(SIG, mdoc.returnType().toString() + emdoc.signature());
+                } else {
+                    // constructor
+                    setType(SIG, emdoc.signature());
+                }
+            }
+
+            return true;
+        }
+
+        public static Comparator defaultComparator() {
+            final Comparator c = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        Info lhi = (Info)lhs;
+                        Info rhi = (Info)rhs;
+                        int result = lhi.pack.compareTo(rhi.pack);
+                        if (result == 0) {
+                            result = (lhi.getVal(CAT) == CAT_CLASS ? lhi.name : lhi.cls)
+                                .compareTo(rhi.getVal(CAT) == CAT_CLASS ? rhi.name : rhi.cls);
+                            if (result == 0) {
+                                result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                                if (result == 0) {
+                                    result = lhi.name.compareTo(rhi.name);
+                                    if (result == 0) {
+                                        result = lhi.sig.compareTo(rhi.sig);
+                                    }
+                                }
+                            }
+                        }
+                        return result;
+                    }
+                };
+            return c;
+        }
+
+        public static Comparator changedComparator() {
+            final Comparator c = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        Info lhi = (Info)lhs;
+                        Info rhi = (Info)rhs;
+                        int result = lhi.pack.compareTo(rhi.pack);
+                        if (result == 0) {
+                            result = (lhi.getVal(CAT) == CAT_CLASS ? lhi.name : lhi.cls)
+                                .compareTo(rhi.getVal(CAT) == CAT_CLASS ? rhi.name : rhi.cls);
+                            if (result == 0) {
+                                result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                                if (result == 0) {
+                                    result = lhi.name.compareTo(rhi.name);
+                                    if (result == 0 && lhi.getVal(CAT) != CAT_CLASS) {
+                                        result = lhi.sig.compareTo(rhi.sig);
+                                    }
+                                }
+                            }
+                        }
+                        return result;
+                    }
+                };
+            return c;
+        }
+
+        public static Comparator classFirstComparator() {
+            final Comparator c = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        Info lhi = (Info)lhs;
+                        Info rhi = (Info)rhs;
+                        int result = lhi.pack.compareTo(rhi.pack);
+                        if (result == 0) {
+                            boolean lcls = lhi.getVal(CAT) == CAT_CLASS;
+                            boolean rcls = rhi.getVal(CAT) == CAT_CLASS;
+                            result = lcls == rcls ? 0 : (lcls ? -1 : 1);
+                            if (result == 0) {
+                                result = (lcls ? lhi.name : lhi.cls).compareTo(rcls ? rhi.name : rhi.cls);
+                                if (result == 0) {
+                                    result = lhi.getVal(CAT)- rhi.getVal(CAT);
+                                    if (result == 0) {
+                                        result = lhi.name.compareTo(rhi.name);
+                                        if (result == 0 && !lcls) {
+                                            result = lhi.sig.compareTo(rhi.sig);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        return result;
+                    }
+                };
+            return c;
+        }
+
+        private static final String[] typeNames = {
+            "status", "visibility", "static", "final", "synchronized", 
+            "abstract", "category", "package", "class", "name", "signature"
+        };
+
+        private static final String[][] names = {
+            { "draft     ", "stable    ", "deprecated", "obsolete  " },
+            { "package", "public", "protected", "private" },
+            { "", "static" },
+            { "", "final" },
+            { "", "synchronized" },
+            { "", "abstract" },
+            { "class", "field", "constructor", "method"  },
+            null,
+            null,
+            null,
+            null,
+            null
+        };
+
+        private static final String[][] shortNames = {
+            { "DR", "ST", "DP", "OB" },
+            { "PK", "PB", "PT", "PR" },
+            { "NS", "ST" },
+            { "NF", "FN" },
+            { "NS", "SY" },
+            { "NA", "AB" },
+            { "L", "F", "C", "M" },
+            null,
+            null,
+            null,
+            null,
+            null
+        };
+
+        private static void validateType(int typ) {
+            if (typ < 0 || typ > NUM_TYPES) {
+                throw new IllegalArgumentException("bad type index: " + typ);
+            }
+        }
+
+        public String toString() {
+            return get(NAM, true);
+        }
+    }
+
+    static final class DeltaInfo extends APIInfo {
+        private Info a;
+        private Info b;
+
+        DeltaInfo(Info a, Info b) {
+            this.a = a;
+            this.b = b;
+        }
+
+        public int getVal(int typ) {
+            return a.getVal(typ);
+        }
+
+        public String get(int typ, boolean brief) {
+            return a.get(typ, brief);
+        }
+
+        public void write(BufferedWriter w, boolean brief, boolean html, boolean detail) {
+            a.write(w, brief, html, detail);
+            try {
+                if (html) {
+                    w.write("<br>");
+                }
+                w.newLine();
+            } 
+            catch (Exception e) {
+            }
+            b.write(w, brief, html, detail);
+        }
+
+        public String toString() {
+            return a.get(NAM, true);
+        }
+    }
+
+    public static int optionLength(String option) {
+        if (option.equals("-html")) {
+            return 1;
+        } else if (option.equals("-name")) {
+            return 2;
+        } else if (option.equals("-output")) {
+            return 2;
+        } else if (option.equals("-compare")) {
+            return 2;
+        }
+        return 0;
+    }
+
+    public static boolean start(RootDoc root) {
+        return new CheckAPI(root).run();
+    }
+
+    CheckAPI(RootDoc root) {
+        this.root = root;
+
+        //      this.compare = "c:/doug/cvsproj/icu4j/src/com/ibm/icu/dev/tool/docs/api2_8.txt";
+
+        String[][] options = root.options();
+        for (int i = 0; i < options.length; ++i) {
+            String opt = options[i][0];
+            if (opt.equals("-html")) {
+                this.html = true;
+            } else if (opt.equals("-name")) {
+                this.srcName = options[i][1];
+            } else if (opt.equals("-output")) {
+                this.output = options[i][1];
+            } else if (opt.equals("-compare")) {
+                this.compare = options[i][1];
+            }
+        }
+
+        if (compare != null) {
+            try {
+                // URL url = new URL(compare);
+                File f = new File(compare);
+                InputStream is = new FileInputStream(f);
+                InputStreamReader isr = new InputStreamReader(is);
+                BufferedReader br = new BufferedReader(isr);
+
+                // read header line
+                /*int version = */Integer.parseInt(readToken(br));
+                // check version if we change it later, probably can just rebuild though
+                this.compareName = readToken(br);
+                br.readLine();
+
+                // read data
+                this.compareSet = new TreeSet(Info.defaultComparator());
+                for (Info info = new Info(); info.read(br); info = new Info()) {
+                    compareSet.add(info);
+                }
+            }
+            catch (Exception e) {
+                RuntimeException re = new RuntimeException("error reading " + compare);
+                re.initCause(e);
+                throw re;
+            }
+        }
+            
+        results = new TreeSet(Info.defaultComparator());
+    }
+
+    private boolean run() {
+        doDocs(root.classes());
+
+        OutputStream os = System.out;
+        if (output != null) {
+            try {
+                os = new FileOutputStream(output);
+            }
+            catch (FileNotFoundException e) {
+                RuntimeException re = new RuntimeException(e.getMessage());
+                re.initCause(e);
+                throw re;
+            }
+        }
+
+        BufferedWriter bw = null;
+        try {
+            OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
+            bw = new BufferedWriter(osw);
+
+            if (compareSet == null) {
+                // writing data file
+                bw.write(String.valueOf(DATA_FILE_VERSION) + SEP); // header version
+                bw.write(srcName + SEP); // source name
+                bw.newLine();
+                writeResults(results, bw, true, false, false);
+            } else {
+                // writing comparison info
+                TreeSet removed = (TreeSet)compareSet.clone();
+                removed.removeAll(results);
+
+                TreeSet added = (TreeSet)results.clone();
+                added.removeAll(compareSet);
+
+                Iterator ai = added.iterator();
+                Iterator ri = removed.iterator();
+                ArrayList changed = new ArrayList();
+                Comparator c = Info.changedComparator();
+                Info a = null, r = null;
+                while (ai.hasNext() && ri.hasNext()) {
+                    if (a == null) a = (Info)ai.next();
+                    if (r == null) r = (Info)ri.next();
+                    int result = c.compare(a, r);
+                    if (result < 0) {
+                        a = null;
+                    } else if (result > 0) {
+                        r = null;
+                    } else {
+                        changed.add(new DeltaInfo(a, r));
+                        a = null; ai.remove();
+                        r = null; ri.remove();
+                    }
+                }
+
+                added = stripAndResort(added);
+                removed = stripAndResort(removed);
+
+                if (html) {
+                    String title = "ICU4J API Comparison: " + srcName + " with " + compareName;
+
+                    bw.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
+                    bw.newLine();
+                    bw.write("<html>");
+                    bw.newLine();
+                    bw.write("<head>");
+                    bw.newLine();
+                    bw.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
+                    bw.newLine();
+                    bw.write("<title>");
+                    bw.write(title);
+                    bw.write("</title>");
+                    bw.newLine();
+                    bw.write("<body>");
+                    bw.newLine();
+
+                    bw.write("<h1>");
+                    bw.write(title);
+                    bw.write("</h1>");
+                    bw.newLine();
+
+                    bw.write("<hr/>");
+                    bw.newLine();
+                    bw.write("<h2>");
+                    bw.write("Removed from " + compareName);
+                    bw.write("</h2>");
+                    bw.newLine();
+
+                    if (removed.size() > 0) {
+                        writeResults(removed, bw, false, true, false);
+                    } else {
+                        bw.write("<p>(no API removed)</p>");
+                    }
+                    bw.newLine();
+
+                    bw.write("<hr/>");
+                    bw.newLine();
+                    bw.write("<h2>");
+                    bw.write("Changed in " + srcName);
+                    bw.write("</h2>");
+                    bw.newLine();
+
+                    if (changed.size() > 0) {
+                        writeResults(changed, bw, false, true, true);
+                    } else {
+                        bw.write("<p>(no API changed)</p>");
+                    }
+                    bw.newLine();
+
+                    bw.write("<hr/>");
+                    bw.newLine();
+                    bw.write("<h2>");
+                    bw.write("Added in " + srcName);
+                    bw.write("</h2>");
+                    bw.newLine();
+
+                    if (added.size() > 0) {
+                        writeResults(added, bw, false, true, false);
+                    } else {
+                        bw.write("<p>(no API added)</p>");
+                    }
+                    bw.write("<hr/>");
+                    bw.newLine();
+                    bw.write("<p><i>Contents generated by CheckAPI tool.<br/>Copyright (C) 2004, International Business Machines Corporation, All Rights Reserved.</i></p>");
+                    bw.newLine();
+                    bw.write("</body>");
+                    bw.newLine();
+                    bw.write("</html>");
+                    bw.newLine();
+                } else {
+                    bw.write("Comparing " + srcName + " with " + compareName);
+                    bw.newLine();
+                    bw.newLine();
+
+                    bw.newLine();
+                    bw.write("=== Removed from " + compareName + " ===");
+                    bw.newLine();
+                    if (removed.size() > 0) {
+                        writeResults(removed, bw, false, false, false);
+                    } else {
+                        bw.write("(no API removed)");
+                    }
+                    bw.newLine();
+
+                    bw.newLine();
+                    bw.write("=== Changed in " + srcName + " ===");
+                    bw.newLine();
+                    if (changed.size() > 0) {
+                        writeResults(changed, bw, false, false, true);
+                    } else {
+                        bw.write("(no API changed)");
+                    }
+                    bw.newLine();
+
+                    bw.newLine();
+                    bw.write("=== Added in " + srcName + " ===");
+                    bw.newLine();
+                    if (added.size() > 0) {
+                        writeResults(added, bw, false, false, false);
+                    } else {
+                        bw.write("(no API added)");
+                    }
+                    bw.newLine();
+                }
+            }
+
+            bw.close();
+        } catch (IOException e) {
+            try { bw.close(); } catch (IOException e2) {}
+            RuntimeException re = new RuntimeException("write error: " + e.getMessage());
+            re.initCause(e);
+            throw re;
+        }
+
+        return false;
+    }
+
+    private void doDocs(ProgramElementDoc[] docs) {
+        if (docs != null && docs.length > 0) {
+            for (int i = 0; i < docs.length; ++i) {
+                doDoc(docs[i]);
+            }
+        }
+    }
+
+    private void doDoc(ProgramElementDoc doc) {
+        if (ignore(doc)) return;
+
+        if (doc.isClass() || doc.isInterface()) {
+            ClassDoc cdoc = (ClassDoc)doc;
+            doDocs(cdoc.fields());
+            doDocs(cdoc.constructors());
+            doDocs(cdoc.methods());
+            doDocs(cdoc.innerClasses());
+        }
+
+        Info info = new Info();
+        if (info.read(doc)) {
+            results.add(info);
+        }
+    }
+
+    private boolean ignore(ProgramElementDoc doc) {
+        if (doc == null) return true;
+        if (doc.isPrivate() || doc.isPackagePrivate()) return true;
+        if (doc instanceof ConstructorDoc && ((ConstructorDoc)doc).isSynthetic()) return true;
+        if (doc.qualifiedName().indexOf(".misc") != -1) return true;
+        Tag[] tags = doc.tags();
+        for (int i = 0; i < tags.length; ++i) {
+            if (tagKindIndex(tags[i].kind()) == INTERNAL) return true;
+        }
+
+        return false;
+    }
+
+    private static void writeResults(Collection c, BufferedWriter w, boolean brief, boolean html, boolean detail) {
+        Iterator iter = c.iterator();
+        String pack = null;
+        String clas = null;
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+            if (brief) {
+                info.write(w, brief, false, detail);
+            } else {
+                try {
+                    String p = info.get(PAK, true);
+                    if (!p.equals(pack)) {
+                        w.newLine();
+                        if (html) {
+                            if (clas != null) {
+                                w.write("</ul>");
+                                w.newLine();
+                            }
+                            if (pack != null) {
+                                w.write("</ul>");
+                                w.newLine();
+                            }
+                            
+                            w.write("<h3>Package ");
+                            w.write(p);
+                            w.write("</h3>");
+                            w.newLine();
+                            w.write("<ul>");
+                            w.newLine();
+                        } else {
+                            w.write("Package ");
+                            w.write(p);
+                            w.write(':');
+                        }
+                        w.newLine();
+                        w.newLine();
+                        
+                        pack = p;
+                        clas = null;
+                    }
+
+                    if (info.getVal(CAT) != CAT_CLASS) {
+                        String name = info.get(CLS, true);
+                        if (!name.equals(clas)) {
+                            if (html) {
+                                if (clas != null) {
+                                    w.write("</ul>");
+                                }
+                                w.write("<li>");
+                                w.write(name);
+                                w.newLine();
+                                w.write("<ul>");
+                            } else {
+                                w.write(name);
+                                w.newLine();
+                            }
+                            clas = name;
+                        }
+                        w.write("    ");
+                    }
+                    if (html) {
+                        w.write("<li>");
+                        info.write(w, brief, html, detail);
+                        w.write("</li>");
+                    } else {
+                        info.write(w, brief, html, detail);
+                    }
+                }
+                catch (IOException e) {
+                    System.err.println("IOException " + e.getMessage() + " writing " + info);
+                }
+            }
+        }
+        if (html) {
+            try {
+                if (clas != null) {
+                    w.write("</ul>");
+                    w.newLine();
+                }
+                if (pack != null) {
+                    w.write("</ul>");
+                    w.newLine();
+                }
+            } 
+            catch (IOException e) {
+            }
+        }
+    }
+
+    private static String readToken(BufferedReader r) throws IOException {
+        char[] buf = new char[256];
+        int i = 0;
+        for (; i < buf.length; ++i) {
+            int c = r.read();
+            if (c == -1) {
+                throw new IOException("unexpected EOF");
+            } else if (c == SEP) {
+                break;
+            }
+            buf[i] = (char)c;
+        }
+        if (i == buf.length) {
+            throw new IOException("unterminated token" + new String(buf));
+        }
+            
+        return new String(buf, 0, i);
+    }
+
+    private static TreeSet stripAndResort(TreeSet t) {
+        stripClassInfo(t);
+        TreeSet r = new TreeSet(Info.classFirstComparator());
+        r.addAll(t);
+        return r;
+    }
+
+    private static void stripClassInfo(Collection c) {
+        // c is sorted with class info first
+        Iterator iter = c.iterator();
+        String cname = null;
+        while (iter.hasNext()) {
+            Info info = (Info)iter.next();
+            String cls = info.get(CLS, true);
+            if (cname != null) {
+                if (cname.equals(cls)) {
+                    iter.remove();
+                    continue;
+                }
+                cname = null;
+            } 
+            if (info.getVal(CAT) == CAT_CLASS) {
+                cname = info.get(NAM, true);
+            }
+        }
+    }
+
+    private static int tagStatus(final Doc doc) {
+        class Result {
+            int res = -1;
+            void set(int val) { if (res != -1) throw new RuntimeException("bad doc: " + doc); res = val; }
+            int get() {
+                if (res == -1) {
+                    System.err.println("warning: no tag for " + doc);
+                    return 0;
+                }
+                return res;
+            }
+        }
+
+        Tag[] tags = doc.tags();
+        Result result = new Result();
+        for (int i = 0; i < tags.length; ++i) {
+            Tag tag = tags[i];
+
+            String kind = tag.kind();
+            int ix = tagKindIndex(kind);
+
+            switch (ix) {
+            case INTERNAL:
+                result.set(-2);
+                break;
+
+            case DRAFT:
+                result.set(STA_DRAFT);
+                break;
+
+            case STABLE:
+                result.set(STA_STABLE);
+                break;
+
+            case DEPRECATED:
+                result.set(STA_DEPRECATED);
+                break;
+
+            case OBSOLETE:
+                result.set(STA_OBSOLETE);
+                break;
+
+            case SINCE:
+            case EXCEPTION:
+            case VERSION:
+            case UNKNOWN:
+            case AUTHOR:
+            case SEE:
+            case PARAM:
+            case RETURN:
+            case THROWS:
+            case SERIAL:
+                break;
+
+            default:
+                throw new RuntimeException("unknown index " + ix + " for tag: " + kind);
+            }
+        }
+
+        return result.get();
+    }
+
+    private static final int UNKNOWN = -1;
+    private static final int INTERNAL = 0;
+    private static final int DRAFT = 1;
+    private static final int STABLE = 2;
+    private static final int SINCE = 3;
+    private static final int DEPRECATED = 4;
+    private static final int AUTHOR = 5;
+    private static final int SEE = 6;
+    private static final int VERSION = 7;
+    private static final int PARAM = 8;
+    private static final int RETURN = 9;
+    private static final int THROWS = 10;
+    private static final int OBSOLETE = 11;
+    private static final int EXCEPTION = 12;
+    private static final int SERIAL = 13;
+
+    private static int tagKindIndex(String kind) {
+        final String[] tagKinds = {
+            "@internal", "@draft", "@stable", "@since", "@deprecated", "@author", "@see", "@version",
+            "@param", "@return", "@throws", "@obsolete", "@exception", "@serial"
+        };
+
+        for (int i = 0; i < tagKinds.length; ++i) {
+            if (kind.equals(tagKinds[i])) {
+                return i;
+            }
+        }
+        return UNKNOWN;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/CheckTags.java b/src/com/ibm/icu/dev/tool/docs/CheckTags.java
new file mode 100644
index 0000000..1dc9414
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/CheckTags.java
@@ -0,0 +1,421 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+/**
+ * This is a tool to check the tags on ICU4J files.  In particular, we're looking for:
+ *
+ * - methods that have no tags
+ * - custom tags: @draft, @stable, @internal?
+ * - standard tags: @since, @deprecated
+ *
+ * Syntax of tags:
+ * '@draft ICU X.X.X'
+ * '@stable ICU X.X.X'
+ * '@internal'
+ * '@since  (don't use)'
+ * '@obsolete ICU X.X.X'
+ * '@deprecated to be removed in ICU X.X. [Use ...]'
+ *
+ * flags names of classes and their members that have no tags or incorrect syntax.
+ *
+ * Requires JDK 1.4 or later
+ *
+ * Use build.xml 'checktags' ant target, or
+ * run from directory containing CheckTags.class as follows:
+ * javadoc -classpath ${JAVA_HOME}/lib/tools.jar -doclet CheckTags -sourcepath ${ICU4J_src} [packagenames]
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import com.sun.javadoc.*;
+
+public class CheckTags {
+    RootDoc root;
+    boolean log;
+    boolean brief;
+    boolean isShort;
+    DocStack stack = new DocStack();
+
+    class DocNode {
+        private String header;
+        private boolean printed;
+        private boolean reportError;
+        private int errorCount;
+
+        public void reset(String header, boolean reportError) {
+            this.header = header;
+            this.printed = false;
+            this.errorCount = 0;
+            this.reportError = reportError;
+        }
+        public String toString() {
+            return header +
+                " printed: " + printed +
+                " reportError: " + reportError +
+                " errorCount: " + errorCount;
+        }
+    }
+
+    class DocStack {
+        private DocNode[] stack;
+        private int index;
+        private boolean newline;
+
+        public void push(String header, boolean reportError) {
+            if (stack == null) {
+                stack = new DocNode[5];
+            } else {
+                if (index == stack.length) {
+                    DocNode[] temp = new DocNode[stack.length * 2];
+                    System.arraycopy(stack, 0, temp, 0, index);
+                    stack = temp;
+                }
+            }
+            if (stack[index] == null) {
+                stack[index] = new DocNode();
+            }
+            //  System.out.println("reset [" + index + "] header: " + header + " report: " + reportError);
+            stack[index++].reset(header, reportError);
+        }
+
+        public void pop() {
+            if (index == 0) {
+                throw new IndexOutOfBoundsException();
+            }
+            --index;
+
+            int ec = stack[index].errorCount; // index already decremented
+            if (ec > 0 || index == 0) { // always report for outermost element
+                if (stack[index].reportError) {
+                    output("(" + ec + (ec == 1 ? " error" : " errors") + ")", false, true, index);
+                }
+
+                // propagate to parent
+                if (index > 0) {
+                    stack[index-1].errorCount += ec;
+                }
+            }
+            if (index == 0) {
+                System.out.println(); // always since we always report number of errors
+            }
+        }
+
+        public void output(String msg, boolean error, boolean newline) {
+            output(msg, error, newline, index-1);
+        }
+
+        void output(String msg, boolean error, boolean newline, int ix) {
+            DocNode last = stack[ix];
+            if (error) {
+                last.errorCount += 1;
+        }
+
+            boolean show = !brief || last.reportError;
+            // boolean nomsg = show && brief && error;
+            //            System.out.println(">>> " + last + " error: " + error + " show: " + show + " nomsg: " + nomsg);
+
+            if (show) {
+                if (isShort || (brief && error)) {
+                    msg = null; // nuke error messages if we're brief, just report headers and totals
+                }
+                for (int i = 0; i <= ix;) {
+                    DocNode n = stack[i];
+                    if (n.printed) {
+                        if (msg != null || !last.printed) { // since index > 0 last is not null
+                            if (this.newline && i == 0) {
+                                System.out.println();
+                                this.newline = false;
+                            }
+                            System.out.print("  ");
+                        }
+                        ++i;
+                    } else {
+                        System.out.print(n.header);
+                        n.printed = true;
+                        this.newline = true;
+                        i = 0;
+                    }
+                }
+
+                if (msg != null) {
+                    if (index == 0 && this.newline) {
+                        System.out.println();
+                    }
+                    if (error) {
+                        System.out.print("*** ");
+                    }
+                    System.out.print(msg);
+                }
+            }
+
+            this.newline = newline;
+        }
+    }
+
+    public static boolean start(RootDoc root) {
+        return new CheckTags(root).run();
+    }
+
+    public static int optionLength(String option) {
+        if (option.equals("-log")) {
+            return 1;
+        } else if (option.equals("-brief")) {
+            return 1;
+        } else if (option.equals("-short")) {
+            return 1;
+        }
+        return 0;
+    }
+
+    CheckTags(RootDoc root) {
+        this.root = root;
+
+        String[][] options = root.options();
+        for (int i = 0; i < options.length; ++i) {
+            String opt = options[i][0];
+            if (opt.equals("-log")) {
+                this.log = true;
+            } else if (opt.equals("-brief")) {
+                this.brief = true;
+            } else if (opt.equals("-short")) {
+                this.isShort = true;
+            }
+        }
+    }
+
+    boolean run() {
+        doDocs(root.classes(), "Package", true);
+        return false;
+    }
+
+    static final String[] tagKinds = {
+        "@internal", "@draft", "@stable", "@since", "@deprecated", "@author", "@see", "@version",
+        "@param", "@return", "@throws", "@obsolete", "@exception", "@serial", "@provisional"
+    };
+
+    static final int UNKNOWN = -1;
+    static final int INTERNAL = 0;
+    static final int DRAFT = 1;
+    static final int STABLE = 2;
+    static final int SINCE = 3;
+    static final int DEPRECATED = 4;
+    static final int AUTHOR = 5;
+    static final int SEE = 6;
+    static final int VERSION = 7;
+    static final int PARAM = 8;
+    static final int RETURN = 9;
+    static final int THROWS = 10;
+    static final int OBSOLETE = 11;
+    static final int EXCEPTION = 12;
+    static final int SERIAL = 13;
+    static final int PROVISIONAL = 14;
+
+    static int tagKindIndex(String kind) {
+        for (int i = 0; i < tagKinds.length; ++i) {
+            if (kind.equals(tagKinds[i])) {
+                return i;
+            }
+        }
+        return UNKNOWN;
+    }
+
+    boolean newline = false;
+
+    void output(String msg, boolean error, boolean newline) {
+        stack.output(msg, error, newline);
+    }
+
+    void log() {
+        output(null, false, false);
+    }
+
+    void logln() {
+        output(null, false, true);
+    }
+
+    void log(String msg) {
+        output(msg, false, false);
+    }
+
+    void logln(String msg) {
+        output(msg, false, true);
+    }
+
+    void err(String msg) {
+        output(msg, true, false);
+    }
+
+    void errln(String msg) {
+        output(msg, true, true);
+    }
+
+    void tagErr(Tag tag) {
+        // Tag.position() requires JDK 1.4, build.xml tests for this
+        errln(tag.toString() + " [" + tag.position() + "]");
+    }
+
+    void doDocs(ProgramElementDoc[] docs, String header, boolean reportError) {
+        if (docs != null && docs.length > 0) {
+            stack.push(header, reportError);
+            for (int i = 0; i < docs.length; ++i) {
+                doDoc(docs[i]);
+            }
+            stack.pop();
+        }
+    }
+
+    void doDoc(ProgramElementDoc doc) {
+        if (doc != null && (doc.isPublic() || doc.isProtected())
+            && !(doc instanceof ConstructorDoc && ((ConstructorDoc)doc).isSynthetic())) {
+
+            // unfortunately, in JDK 1.4.1 MemberDoc.isSynthetic is not properly implemented for
+            // synthetic constructors.  So you'll have to live with spurious errors or 'implement'
+            // the synthetic constructors...
+
+            boolean isClass = doc.isClass() || doc.isInterface();
+            String header;
+            if (!isShort || isClass) {
+                header = "--- ";
+            } else {
+                header = "";
+            }
+            header += (isClass ? doc.qualifiedName() : doc.name());
+            if (doc instanceof ExecutableMemberDoc) {
+                header += ((ExecutableMemberDoc)doc).flatSignature();
+            }
+            if (!isShort || isClass) {
+                header += " ---";
+            }
+            stack.push(header, isClass);
+            if (log) {
+                logln();
+            }
+            boolean recurse = doTags(doc);
+            if (recurse && isClass) {
+                ClassDoc cdoc = (ClassDoc)doc;
+                doDocs(cdoc.fields(), "Fields", !brief);
+                doDocs(cdoc.constructors(), "Constructors", !brief);
+                doDocs(cdoc.methods(), "Methods", !brief);
+            }
+            stack.pop();
+        }
+    }
+
+    /** Return true if subelements of this doc should be checked */
+    boolean doTags(ProgramElementDoc doc) {
+        Tag[] tags = doc.tags();
+        boolean foundRequiredTag = false;
+        boolean foundDraftTag = false;
+        boolean foundProvisionalTag = false;
+        boolean foundDeprecatedTag = false;
+        boolean foundObsoleteTag = false;
+        boolean foundInternalTag = false;
+        boolean foundStableTag = false;
+        boolean retainAll = false;
+
+        for (int i = 0; i < tags.length; ++i) {
+            Tag tag = tags[i];
+
+            String kind = tag.kind();
+            int ix = tagKindIndex(kind);
+
+            switch (ix) {
+            case UNKNOWN:
+                errln("unknown kind: " + kind);
+                break;
+
+            case INTERNAL:
+                foundRequiredTag = true;
+                foundInternalTag = true;
+                break;
+
+            case DRAFT:
+                foundRequiredTag = true;
+                foundDraftTag = true;
+                if (tag.text().indexOf("ICU 2.8") != -1 &&
+                    tag.text().indexOf("(retain") == -1) { // catch both retain and retainAll
+                    tagErr(tag);
+                    break;
+                }
+                if (tag.text().indexOf("ICU") != 0) {
+                    tagErr(tag);
+                    break;
+                }
+                retainAll |= (tag.text().indexOf("(retainAll)") != -1);
+                break;
+
+            case PROVISIONAL:
+                foundProvisionalTag = true;
+                break;
+
+            case DEPRECATED:
+                foundDeprecatedTag = true;
+                if (tag.text().indexOf("ICU") == 0) {
+                    foundRequiredTag = true;
+                }
+                break;
+
+            case OBSOLETE:
+                if (tag.text().indexOf("ICU") != 0) {
+                    tagErr(tag);
+                }
+                foundObsoleteTag = true;
+                foundRequiredTag = true;
+                break;
+
+            case STABLE:
+                {
+                    String text = tag.text();
+                    if (text.length() != 0 && text.indexOf("ICU") != 0) {
+                        tagErr(tag);
+                    }
+                    foundRequiredTag = true;
+                    foundStableTag = true;
+                }
+                break;
+
+            case SINCE:
+                tagErr(tag);
+                break;
+
+            case EXCEPTION:
+                logln("You really ought to use @throws, you know... :-)");
+
+            case AUTHOR:
+            case SEE:
+            case PARAM:
+            case RETURN:
+            case THROWS:
+            case SERIAL:
+                break;
+
+            case VERSION:
+                tagErr(tag);
+                break;
+
+            default:
+                errln("unknown index: " + ix);
+            }
+        }
+        if (!foundRequiredTag) {
+            errln("missing required tag [" + doc.position() + "]");
+        }
+        if (foundInternalTag && !foundDeprecatedTag) {
+            errln("internal tag missing deprecated");
+        }
+        if (foundDraftTag && !(foundDeprecatedTag || foundProvisionalTag)) {
+            errln("draft tag missing deprecated or provisional");
+        }
+        if (foundObsoleteTag && !foundDeprecatedTag) {
+            errln("obsolete tag missing deprecated");
+        }
+        if (foundStableTag && foundDeprecatedTag) {
+            logln("stable deprecated");
+        }
+
+        return !retainAll;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/CodeMangler.java b/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
new file mode 100644
index 0000000..7a61844
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
@@ -0,0 +1,765 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FilenameFilter;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.TreeMap;
+
+
+/**
+ * A simple facility for adding C-like preprocessing to .java files.
+ * This only understands a subset of the C preprocessing syntax.
+ * Its used to manage files that with only small differences can be
+ * compiled for different JVMs.  This changes files in place, 
+ * commenting out lines based on the current flag settings.
+ */
+public class CodeMangler {
+    private File indir;        // root of input
+    private File outdir;       // root of output
+    private String suffix;     // suffix to process, default '.jpp'
+    private boolean recurse;   // true if recurse on directories
+    private boolean force;     // true if force reprocess of files
+    private boolean clean;     // true if output is to be cleaned
+    private boolean timestamp; // true if we read/write timestamp
+    private HashMap map;       // defines
+    private ArrayList names;   // files/directories to process
+    private String header;     // sorted list of defines passed in
+
+    private boolean verbose; // true if we emit debug output
+
+    private static final String IGNORE_PREFIX = "//##";
+    private static final String HEADER_PREFIX = "//##header";
+
+    public static void main(String[] args) {
+        new CodeMangler(args).run();
+    }
+
+    private static final String usage = "Usage:\n" +
+        "    CodeMangler [flags] file... dir... @argfile... \n" +
+        "-in[dir] path          - root directory of input files, otherwise use current directory\n" +
+        "-out[dir] path         - root directory of output files, otherwise use input directory\n" +
+        "-s[uffix] string       - suffix of inputfiles to process, otherwise use '.java' (directories only)\n" +
+        "-c[lean]               - remove all control flags from code on output (does not proceed if overwriting)\n" +
+        "-r[ecurse]             - if present, recursively process subdirectories\n" +
+        "-f[orce]               - force reprocessing of files even if timestamp and headers match\n" +
+        "-t[imestamp]           - expect/write timestamp in header\n" +
+        "-dNAME[=VALUE]         - define NAME with optional value VALUE\n" +
+        "  (or -d NAME[=VALUE])\n" +
+        "-help                  - print this usage message and exit.\n" +
+        "\n" +
+        "For file arguments, output '.java' files using the same path/name under the output directory.\n" +
+        "For directory arguments, process all files with the defined suffix in the directory.\n" +
+        "  (if recursing, do the same for all files recursively under each directory)\n" +
+        "For @argfile arguments, read the specified text file (strip the '@'), and process each line of that file as \n" +
+        "an argument.\n" +
+        "\n" +
+        "Directives are one of the following:\n" +
+        "  #ifdef, #ifndef, #else, #endif, #if, #elif, #define, #undef\n" +
+        "These may optionally be preceeded by whitespace or //.\n" +
+        "#if, #elif args are of the form 'key == value' or 'key != value'.\n" +
+        "Only exact character match key with value is performed.\n" +
+        "#define args are 'key [==] value', the '==' is optional.\n";
+
+    CodeMangler(String[] args) {
+        map = new HashMap();
+        names = new ArrayList();
+        suffix = ".java";
+        clean = false;
+        timestamp = false;
+
+        String inname = null;
+        String outname = null;
+        boolean processArgs = true;
+        String arg = null;
+        try {
+            for (int i = 0; i < args.length; ++i) {
+                arg = args[i];
+                if ("--".equals(arg)) {
+                    processArgs = false;
+                } else if (processArgs && arg.charAt(0) == '-') {
+                    if (arg.startsWith("-in")) {
+                        inname = args[++i];
+                    } else if (arg.startsWith("-out")) {
+                        outname = args[++i];
+                    } else if (arg.startsWith("-d")) {
+                        String id = arg.substring(2);
+                        if (id.length() == 0) {
+                            id = args[++i];
+                        }
+                        String val = "";
+                        int ix = id.indexOf('=');
+                        if (ix >= 0) {
+                            val = id.substring(ix+1);
+                            id = id.substring(0,ix);
+                        }
+                        map.put(id, val);
+                    } else if (arg.startsWith("-s")) {
+                        suffix = args[++i];
+                    } else if (arg.startsWith("-r")) {
+                        recurse = true;
+                    } else if (arg.startsWith("-f")) {
+                        force = true;
+                    } else if (arg.startsWith("-c")) {
+                        clean = true;
+                    } else if (arg.startsWith("-t")) {
+                        timestamp = true;
+                    } else if (arg.startsWith("-h")) {
+                        System.out.print(usage);
+                        break; // stop before processing arguments, so we will do nothing
+                    } else if (arg.startsWith("-v")) {
+                        verbose = true;
+                    } else {
+                        System.err.println("Error: unrecognized argument '" + arg + "'");
+                        System.err.println(usage);
+                        throw new IllegalArgumentException(arg);
+                    }
+                } else {
+                    if (arg.charAt(0) == '@') {
+                        File argfile = new File(arg.substring(1));
+                        if (argfile.exists() && !argfile.isDirectory()) {
+                            try {
+                                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(argfile)));
+                                ArrayList list = new ArrayList();
+                                for (int x = 0; x < args.length; ++x) {
+                                    list.add(args[x]);
+                                }
+                                String line;
+                                while (null != (line = br.readLine())) {
+                                    line = line.trim();
+                                    if (line.length() > 0 && line.charAt(0) != '#') {
+                                        if (verbose) System.out.println("adding argument: " + line);
+                                        list.add(line);
+                                    }
+                                }
+                                args = (String[])list.toArray(new String[list.size()]);
+                            }
+                            catch (IOException e) {
+                                System.err.println("error reading arg file: " + e);
+                            }
+                        }
+                    } else {
+                        names.add(arg);
+                    }
+                }
+            }
+        } catch (IndexOutOfBoundsException e) {
+            String msg = "Error: argument '" + arg + "' missing value";
+            System.err.println(msg);
+            System.err.println(usage);
+            throw new IllegalArgumentException(msg);
+        }
+
+        String username = System.getProperty("user.dir");
+        if (inname == null) {
+            inname = username;
+        } else if (!(inname.startsWith("\\") || inname.startsWith("/"))) {
+            inname = username + File.separator + inname;
+        }
+        indir = new File(inname);
+        try {
+            indir = indir.getCanonicalFile();
+        }
+        catch (IOException e) {
+            // continue, but most likely we'll fail later
+        }
+        if (!indir.exists()) {
+            throw new IllegalArgumentException("Input directory '" + indir.getAbsolutePath() + "' does not exist.");
+        } else if (!indir.isDirectory()) {
+            throw new IllegalArgumentException("Input path '" + indir.getAbsolutePath() + "' is not a directory.");
+        }
+        if (verbose) System.out.println("indir: " + indir.getAbsolutePath());
+
+        if (outname == null) {
+            outname = inname;
+        } else if (!(outname.startsWith("\\") || outname.startsWith("/"))) {
+            outname = username + File.separator + outname;
+        }
+        outdir = new File(outname);
+        try {
+            outdir = outdir.getCanonicalFile();
+        }
+        catch (IOException e) {
+            // continue, but most likely we'll fail later
+        }
+        if (!outdir.exists()) {
+            throw new IllegalArgumentException("Output directory '" + outdir.getAbsolutePath() + "' does not exist.");
+        } else if (!outdir.isDirectory()) {
+            throw new IllegalArgumentException("Output path '" + outdir.getAbsolutePath() + "' is not a directory.");
+        }
+        if (verbose) System.out.println("outdir: " + outdir.getAbsolutePath());
+
+        if (clean && suffix.equals(".java")) {
+            try {
+                if (outdir.getCanonicalPath().equals(indir.getCanonicalPath())) {
+                    throw new IllegalArgumentException("Cannot use 'clean' to overwrite .java files in same directory tree");
+                }
+            }
+            catch (IOException e) {
+                System.err.println("possible overwrite, error: " + e.getMessage());
+                throw new IllegalArgumentException("Cannot use 'clean' to overrwrite .java files");
+            }
+        }
+
+        if (names.isEmpty()) {
+            names.add(".");
+        }
+
+        TreeMap sort = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+        sort.putAll(map);
+        Iterator iter = sort.entrySet().iterator();
+        StringBuffer buf = new StringBuffer();
+        while (iter.hasNext()) {
+            Map.Entry e = (Map.Entry)iter.next();
+            if (buf.length() > 0) {
+                buf.append(", ");
+            }
+            buf.append(e.getKey());
+            String v = (String)e.getValue();
+            if (v != null && v.length() > 0) {
+                buf.append('=');
+                buf.append(v);
+            }
+        }
+        header = buf.toString();
+    }
+
+    public int run() {
+        return process("", (String[])names.toArray(new String[names.size()]));
+    }
+
+    public int process(String path, String[] filenames) {
+        if (verbose) System.out.println("path: '" + path + "'");
+        int count = 0;
+        for (int i = 0; i < filenames.length; ++i) {
+            if (verbose) System.out.println("name " + i + " of " + filenames.length + ": '" + filenames[i] + "'");
+            String name = path + filenames[i];
+            File fin = new File(indir, name);
+            try {
+                fin = fin.getCanonicalFile();
+            }
+            catch (IOException e) {
+            }
+            if (!fin.exists()) {
+                System.err.println("File " + fin.getAbsolutePath() + " does not exist.");
+                continue;
+            }
+            if (fin.isFile()) {
+                if (verbose) System.out.println("processing file: '" + fin.getAbsolutePath() + "'");
+                String oname;
+                int ix = name.lastIndexOf(".");
+                if (ix != -1) {
+                    oname = name.substring(0, ix);
+                } else {
+                    oname = name;
+                }
+                oname += ".java";
+                File fout = new File(outdir, oname);
+                if (processFile(fin, fout)) {
+                    ++count;
+                }
+            } else if (fin.isDirectory()) {
+                if (verbose) System.out.println("recursing on directory '" + fin.getAbsolutePath() + "'");
+                String npath = ".".equals(name) ? path : path + fin.getName() + File.separator;
+                count += process(npath, fin.list(filter)); // recursive call
+            }
+        }
+        return count;
+    }
+
+                
+    private final FilenameFilter filter = new FilenameFilter() {
+            public boolean accept(File dir, String name) {
+                File f = new File(dir, name);
+                return (f.isFile() && name.endsWith(suffix)) || (f.isDirectory() && recurse);
+            }
+        };
+
+    public boolean processFile(File infile, File outfile) {
+        File backup = null;
+
+        class State {
+            int lc;
+            String line;
+            boolean emit = true;
+            boolean tripped;
+            private State next;
+
+            public String toString() {
+                return "line " + lc 
+                    + ": '" + line 
+                    + "' (emit: " + emit 
+                    + " tripped: " + tripped 
+                    + ")";
+            }
+
+            void trip(boolean trip) {
+                if (!tripped & trip) {
+                    tripped = true;
+                    emit = next != null ? next.emit : true;
+                } else {
+                    emit = false;
+                }
+            }
+                        
+            State push(int lc, String line, boolean trip) {
+                this.lc = lc;
+                this.line = line;
+                State ret = new State();
+                ret.next = this;
+                ret.emit = this.emit & trip;
+                ret.tripped = trip;
+                return ret;
+            }
+
+            State pop() {
+                return next;
+            }
+        }
+          
+        HashMap oldMap = null;
+        
+        long outModTime = 0;
+
+        try {
+            PrintStream outstream = null;
+            InputStream instream = new FileInputStream(infile);
+
+            BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
+            int lc = 0;
+            State state = new State();
+            String line;
+            while ((line = reader.readLine()) != null) {
+                if (lc == 0) { // check and write header for output file if needed
+                    boolean hasHeader = line.startsWith(HEADER_PREFIX);
+                    if (hasHeader && !force) {
+                        long expectLastModified = ((infile.lastModified() + 999)/1000)*1000;
+                        String headerline = HEADER_PREFIX + ' ' + header + ' ' +
+                            (timestamp ? String.valueOf(expectLastModified) : ""); 
+                        headerline = headerline.trim();
+                        if (line.equals(headerline)) {
+                            if (verbose) System.out.println("no changes necessary to " + infile.getCanonicalPath());
+                            instream.close();
+                            return false; // nothing to do
+                        }
+                        if (verbose) {
+                            System.out.println("  old header:  " + line);
+                            System.out.println("  != expected: " + headerline);
+                        }
+                    }
+
+                    // create output file directory structure
+                    String outpname = outfile.getParent();
+                    if (outpname != null) {
+                        File outp = new File(outpname);
+                        if (!(outp.exists() || outp.mkdirs())) {
+                            System.err.println("could not create directory: '" + outpname + "'");
+                            return false;
+                        }
+                    }
+
+                    // if we're overwriting, use a temporary file
+                    if (suffix.equals(".java")) {
+                        backup = outfile;
+                        try {
+                            outfile = File.createTempFile(outfile.getName(), null, outfile.getParentFile());
+                        }
+                        catch (IOException ex) {
+                            System.err.println(ex.getMessage());
+                            return false;
+                        }
+                    }
+
+                    outModTime = ((outfile.lastModified()+999)/1000)*1000; // round up
+                    outstream = new PrintStream(new FileOutputStream(outfile));
+                    String headerline = HEADER_PREFIX + ' ' + header + ' ' +
+                        (timestamp ? String.valueOf(outModTime) : "");
+                    headerline = headerline.trim();
+                    outstream.println(headerline);
+                    if (verbose) System.out.println("header: " + headerline);
+
+                    // discard the old header if we had one, otherwise match this line like any other
+                    if (hasHeader) {
+                        ++lc; // mark as having read a line so we never reexecute this block
+                        continue;
+                    }
+                }
+                
+                String[] res = new String[3];
+                if (patMatch(line, res)) {
+                    String lead = res[0];
+                    String key = res[1];
+                    String val = res[2];
+
+                    if (verbose) System.out.println("directive: " + line
+                                                    + " key: '" + key
+                                                    + "' val: '" + val 
+                                                    + "' " + state);
+                    if (key.equals("ifdef")) {
+                        state = state.push(lc, line, map.get(val) != null);
+                    } else if (key.equals("ifndef")) {
+                        state = state.push(lc, line, map.get(val) == null);
+                    } else if (key.equals("else")) {
+                        state.trip(true);
+                    } else if (key.equals("endif")) {
+                        state = state.pop();
+                    } else if (key.equals("undef")) {
+                        if (state.emit) {
+                            if (oldMap == null) {
+                                oldMap = (HashMap)map.clone();
+                            }
+                            map.remove(val);
+                        }
+                    } else if (key.equals("define")) {
+                        if (pat2Match(val, res)) {
+                            String key2 = res[0];
+                            String val2 = res[2];
+
+                            if (verbose) System.out.println("val2: '" + val2 
+                                                            + "' key2: '" + key2 
+                                                            + "'");
+                            if (state.emit) {
+                                if (oldMap == null) {
+                                    oldMap = (HashMap)map.clone();
+                                }
+                                map.put(key2, val2);
+                            }
+                        }
+                    } else { // #if, #elif
+                        // only top level OR (||) operator is supported for now
+                        int count = 1;
+                        int index = 0;
+                        while ((index = val.indexOf("||", index)) > 0) {
+                            count++;
+                            index++;
+                        }
+                        String[] expressions = new String[count];
+                        if (count == 1) {
+                            expressions[0] = val;
+                        } else {
+                            int start = 0;
+                            index = 0;
+                            count = 0;
+                            while (true) {
+                                index = val.indexOf("||", start);
+                                if (index > 0) {
+                                    expressions[count++] = val.substring(start, index);
+                                    start = index + 2;
+                                } else {
+                                    expressions[count++] = val.substring(start);
+                                    break;
+                                }
+                            }
+                        }
+                        boolean eval = false;
+                        for (count = 0; count < expressions.length && !eval; count++) {
+                            if (pat2Match(expressions[count], res)) {
+                                String key2 = res[0];
+                                String val2 = res[2];
+
+                                if (key2.equals("defined")) {
+                                    // defined command
+                                    if (verbose) System.out.println(
+                                            "index: '" + count
+                                            + "' val2: '" + val2 
+                                            + "' key2: '" + key2 
+                                            + "'");
+                                    eval = map.containsKey(val2);
+                                } else {
+                                    boolean neq = false;
+                                    if (res[1].equals("!=")) {
+                                        neq = true;
+                                    } else if (!res[1].equals("==")) {
+                                        System.err.println("Invalid expression: '" + val);
+                                    }
+                                    if (verbose) System.out.println(
+                                            "index: '" + count
+                                            + "' val2: '" + val2 
+                                            + "' neq: '" + neq 
+                                            + "' key2: '" + key2 
+                                            + "'");
+                                    eval = (val2.equals(map.get(key2)) != neq);
+                                }
+                            }
+                        }
+                        if (key.equals("if")) {
+                            state = state.push(lc, line, eval);
+                        } else if (key.equals("elif")) {
+                            state.trip(eval);
+                        }
+                    }
+                    if (!clean) {
+                        lc++;
+                        if (!lead.equals("//")) {
+                            outstream.print("//");
+                            line = line.substring(lead.length());
+                        }
+                        outstream.println(line);
+                    }
+                    continue;
+                }
+
+                lc++;
+                String found = pat3Match(line);
+                boolean hasIgnore = found != null;
+                if (state.emit == hasIgnore) {
+                    if (state.emit) {
+                        line = line.substring(found.length());
+                    } else {
+                        line = IGNORE_PREFIX + line;
+                    }
+                } else if (hasIgnore && !found.equals(IGNORE_PREFIX)) {
+                    line = IGNORE_PREFIX + line.substring(found.length());
+                }
+                if (!clean || state.emit) {
+                    outstream.println(line);
+                }
+            }
+
+            state = state.pop();
+            if (state != null) {
+                System.err.println("Error: unclosed directive(s):");
+                do {
+                    System.err.println(state);
+                } while ((state = state.pop()) != null);
+                System.err.println(" in file: " + outfile.getCanonicalPath());
+                if (oldMap != null) {
+                    map = oldMap;
+                }
+                outstream.close();
+                return false;
+            }
+                
+            outstream.close();
+            instream.close();
+
+            if (backup != null) {
+                if (backup.exists()) {
+                    backup.delete();
+                }
+                outfile.renameTo(backup);
+            }
+
+            if (timestamp) {
+                outfile.setLastModified(outModTime); // synch with timestamp
+            }
+
+            if (oldMap != null) {
+                map = oldMap;
+            }
+        }
+        catch (IOException e) {
+            System.err.println(e);
+            return false;
+        }
+        return true;
+    }
+
+
+    /**
+     * Perform same operation as matching on pat.  on exit
+     * leadKeyValue contains the three strings lead, key, and value.
+     * 'lead' is the portion before the #ifdef directive.  'key' is
+     * the directive.  'value' is the portion after the directive.  if
+     * there is a match, return true, else return false.
+     */
+    static boolean patMatch(String line, String[] leadKeyValue) {
+        if (line.length() == 0) {
+            return false;
+        }
+        if (!line.endsWith("\n")) {
+            line = line + '\n';
+        }
+        int mark = 0;
+        int state = 0;
+        loop: for (int i = 0; i < line.length(); ++i) {
+            char c = line.charAt(i);
+            switch (state) {
+            case 0: // at start of line, haven't seen anything but whitespace yet
+                if (c == ' ' || c == '\t' || c == '\r') continue;
+                if (c == '/') { state = 1; continue; }
+                if (c == '#') { state = 4; continue; }
+                return false;
+            case 1: // have seen a single slash after start of line
+                if (c == '/') { state = 2; continue; }
+                return false;
+            case 2: // have seen two or more slashes
+                if (c == '/') continue;
+                if (c == ' ' || c == '\t' || c == '\r') { state = 3; continue; }
+                if (c == '#') { state = 4; continue; }
+                return false;
+            case 3: // have seen a space after two or more slashes
+                if (c == ' ' || c == '\t' || c == '\r') continue;
+                if (c == '#') { state = 4; continue; }
+                return false;
+            case 4: // have seen a '#' 
+                leadKeyValue[0] = line.substring(mark, i-1);
+                if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { mark = i; state = 5; continue; }
+                return false;
+            case 5: // an ascii char followed the '#'
+                if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) continue;
+                if (c == ' ' || c == '\t' || c == '\n') {
+                    String key = line.substring(mark, i).toLowerCase();
+                    if (key.equals("ifdef") ||
+                        key.equals("ifndef") ||
+                        key.equals("else") ||
+                        key.equals("endif") ||
+                        key.equals("undef") ||
+                        key.equals("define") ||
+                        key.equals("if") ||
+                        key.equals("elif")) {
+                        leadKeyValue[1] = key;
+                        mark = i;
+                        state = 6;
+                        break loop;
+                    }
+                }
+                return false;
+            default:
+                throw new IllegalStateException();
+            }
+        }
+        if (state == 6) {
+            leadKeyValue[2] = line.substring(mark, line.length()).trim();
+            return true;
+        }
+        return false; // never reached, does the compiler know this?
+    }
+
+    /**
+     * Perform same operation as matching on pat2.  on exit
+     * keyRelValue contains the three strings key, rel, and value.
+     * 'key' is the portion before the relation (or final word).  'rel' is
+     * the relation, if present, either == or !=.  'value' is the final
+     * word.  if there is a match, return true, else return false.
+     */
+    static boolean pat2Match(String line, String[] keyRelVal) {
+
+        if (line.length() == 0) {
+            return false;
+        }
+        keyRelVal[0] = keyRelVal[1] = keyRelVal[2] = "";
+        int mark = 0;
+        int state = 0;
+        String command = null;
+        loop: for (int i = 0; i < line.length(); ++i) {
+            char c = line.charAt(i);
+            switch (state) {
+            case 0: // saw beginning or space, no rel yet
+                if (c == ' ' || c == '\t' || c == '\n') {
+                    continue;
+                }
+                if ((c == '!' || c == '=')) {
+                    return false;
+                }
+                state = 1;
+                continue;
+            case 1: // saw start of a word
+                if (c == ' ' || c == '\t') {
+                    state = 2;
+                }
+                else if (c == '(') {
+                    command = line.substring(0, i).trim();
+                    if (!command.equals("defined")) {
+                        return false;
+                    }
+                    keyRelVal[0] = command;
+                    state = 2;
+                }
+                else if (c == '!' || c == '=') {
+                    state = 3;
+                }
+                continue;
+            case 2: // saw end of word, and space
+                if (c == ' ' || c == '\t') {
+                    continue;
+                }
+                else if (command == null && c == '(') {
+                    continue;
+                }
+                else if (c == '!' || c == '=') {
+                    state = 3;
+                    continue;
+                }
+                keyRelVal[0] = line.substring(0, i-1).trim();
+                mark = i;
+                state = 4;
+                break loop;
+            case 3: // saw end of word, and '!' or '='
+                if (c == '=') {
+                    keyRelVal[0] = line.substring(0, i-1).trim();
+                    keyRelVal[1] = line.substring(i-1, i+1);
+                    mark = i+1;
+                    state = 4;
+                    break loop;
+                }
+                return false;
+            default:
+                break;
+            }
+        }
+        switch (state) {
+        case 0: 
+            return false; // found nothing
+        case 1: 
+        case 2:
+            keyRelVal[0] = line.trim(); break; // found only a word
+        case 3:
+            return false; // found a word and '!' or '=" then end of line, incomplete
+        case 4:
+            keyRelVal[2] = line.substring(mark).trim(); // found a word, possible rel, and who knows what
+            if (command != null) {
+                int len = keyRelVal[2].length();
+                if (keyRelVal[2].charAt(len - 1) != ')') {
+                    // closing parenthesis is missing
+                    return false;
+                }
+                keyRelVal[2] = keyRelVal[2].substring(0, len - 1).trim();
+            }
+            break;
+        default: 
+            throw new IllegalStateException();
+        }
+        return true;
+    }
+
+    static String pat3Match(String line) {
+        int state = 0;
+        loop: for (int i = 0; i < line.length(); ++i) {
+            char c = line.charAt(i);
+            switch(state) {
+            case 0: if (c == ' ' || c == '\t') continue;
+                if (c == '/') { state = 1; continue; }
+                break loop;
+            case 1:
+                if (c == '/') { state = 2; continue; }
+                break loop;
+            case 2:
+                if (c == '#') { state = 3; continue; }
+                break loop;
+            case 3:
+                if (c == '#') return line.substring(0, i+1);
+                break loop;
+            default:
+                break loop;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/Deprecator.java b/src/com/ibm/icu/dev/tool/docs/Deprecator.java
new file mode 100644
index 0000000..330f7ff
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/Deprecator.java
@@ -0,0 +1,193 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.PrintWriter;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.FileInputStream;
+import java.util.regex.*;
+
+public final class Deprecator {
+    private boolean undep;
+    private int log;
+
+    Deprecator(boolean undep, int log) {
+        this.undep = undep;
+        this.log = log;
+    }
+
+    public static void main(String[] args) {
+        String srcPath = null;
+        String dstPath = null;
+        boolean undep = false;
+
+        int log = 1;
+        boolean help = false;
+        StringBuffer err = new StringBuffer();
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-src")) {
+                srcPath = args[++i];
+            } else if (arg.equals("-dst")) {
+                dstPath = args[++i];
+            } else if (arg.equals("-undep")) {
+                undep = true;
+            } else if (arg.equals("-help")) {
+                help = true;
+            } else if (arg.equals("-silent")) {
+                log = 0;
+            } else if (arg.equals("-log")) {
+                log = 2;
+            } else if (arg.equals("-logfiles")) {
+                log = 3;
+            } else if (arg.equals("-verbose")) {
+                log = 4;
+            } else {
+                err.append("\nunrecognized argument: " + arg);
+            }
+        }
+
+        File srcDir = null;
+        File dstDir = null;
+
+        if (srcPath == null) {
+            err.append("\nsrc must be defined");
+        } else {
+            srcDir = new File(srcPath);
+            if (!(srcDir.exists() && srcDir.isDirectory())) {
+                err.append("\nsrc must be an existing directory: '" + srcPath + "'");
+            }
+        }
+        if (dstPath == null) {
+            err.append("\ndst must be defined");
+        } else {
+            dstDir = new File(dstPath);
+            if (!dstDir.exists()) {
+                if (!dstDir.mkdirs()) {
+                    err.append("\nunable to create dst: '" + dstPath + "'");
+                }
+            } else if (!dstDir.isDirectory()) {
+                err.append("\ndst exists but is not directory: '" + dstPath + "'");
+            }
+        }
+
+        if (help || err.length() > 0) {
+            if (!help) {
+                System.err.println("Error: " + err.toString());
+            }
+            usage();
+            return;
+        }
+
+        try {
+            if (log > 0) {
+                System.out.println("src: " + srcDir.getCanonicalPath());
+                System.out.println("dst: " + dstDir.getCanonicalPath());
+                System.out.println("undep: " + undep);
+                System.out.flush();
+            }
+
+            new Deprecator(undep, log).process(srcDir, dstDir);
+
+            if (log > 0) {
+                System.out.println("done");
+                System.out.flush();
+            }
+        }
+        catch(Exception e) {
+            System.err.println("Unexpected error: " + e);
+        }
+    }
+
+    static void usage() {
+        PrintWriter pw = new PrintWriter(System.out);
+        pw.println("Usage: Deprecator -src path -dst path [-help]");
+        pw.println("  -src path : the root of the tree of files to work on");
+        pw.println("  -dst path : the root of the tree to put the resulting files");
+        pw.println("  -help     : print this usage message and exit, doing nothing");
+        pw.println("  -undep    : remove deprecation tags if present (default false)");
+        pw.println();
+        pw.println("  Add or remove warning deprecations for ICU @draft and @internal APIs");
+        pw.flush();
+    }
+
+    static final String stoplist = "!CVS";
+    static final FilenameFilter ff = new FilenameFilter() {
+            public boolean accept(File dir, String name) {
+                if (name.endsWith(".java")) return true;
+                if (new File(dir, name).isDirectory()) {
+                    if (stoplist.indexOf("!"+name) == -1) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+        };
+            
+    void process(File srcDir, File dstDir) {
+        File[] files = srcDir.listFiles(ff);
+        for (int i = 0; i < files.length; ++i) {
+            File f = files[i];
+            File d = new File(dstDir, f.getName());
+            if (f.isDirectory()) {
+                if (!d.exists()) {
+                    if (!d.mkdir()) {
+                        System.err.println("cannot create directory: " + d.getPath());
+                        continue;
+                    }
+                } else if (!d.isDirectory()) {
+                    System.err.println("file already exists but is not directory: " + d.getPath());
+                    continue;
+                }
+                if (log > 1) {
+                    System.out.println("process dir: " + f.getPath());
+                }
+                process(f, d);
+            } else {
+                processFile(f, d);
+            }
+        }
+    }
+
+    /*
+ @ deprecated
+ *** @deprecated
+ ** ** ** @deprecated
+    */
+    static final Pattern pat = Pattern.compile("^[\\s*]*@\\s*deprecated.*");
+
+    void processFile(File srcFile, File dstFile) {
+        if (log > 2) {
+            System.out.println("process '" + srcFile.getPath() + "'");
+        }
+
+        try {
+            BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile)));
+            int n = 0;
+            String line = null;
+            while (null != (line = r.readLine())) {
+                ++n;
+                Matcher m = pat.matcher(line);
+                if (m.matches()) {
+                    if (log > 3) {
+                        System.out.println(String.valueOf(n) + ": " + line);
+                    }
+                }
+            }
+            r.close();
+        }
+        catch (Exception e) {
+            System.out.flush();
+            System.err.println("caught exception: " + e);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java b/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java
new file mode 100644
index 0000000..418ffa5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java
@@ -0,0 +1,482 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/**
+ * Generate a list of ICU's public APIs, sorted by qualified name and signature
+ * public APIs are all non-internal, non-package apis in com.ibm.icu.[lang|math|text|util].
+ * For each API, list
+ * - public, package, protected, or private (PB PK PT PR)
+ * - static or non-static (STK NST)
+ * - final or non-final (FN NF)
+ * - synchronized or non-synchronized (SYN NSY)
+ * - stable, draft, deprecated, obsolete (ST DR DP OB)
+ * - abstract or non-abstract (AB NA)
+ * - constructor, member, field (C M F)
+ *
+ * Requires JDK 1.4.2 or later
+ * 
+ * Sample compilation:
+ * c:/doug/java/jdk1.4.2/build/windows-i586/bin/javac *.java
+ *
+ * Sample execution
+ * c:/j2sdk1.4.2/bin/javadoc
+ *   -classpath c:/jd2sk1.4.2/lib/tools.jar 
+ *   -doclet com.ibm.icu.dev.tool.docs.GatherAPIData
+ *   -docletpath c:/doug/cvsproj/icu4j/src 
+ *   -sourcepath c:/doug/cvsproj/icu4j/src 
+ *   -name "ICU4J 3.0"
+ *   -output icu4j30.api
+ *   -gzip
+ *   -source 1.4
+ *   com.ibm.icu.lang com.ibm.icu.math com.ibm.icu.text com.ibm.icu.util
+ *
+ * todo: provide command-line control of filters of which subclasses/packages to process
+ * todo: record full inheritance heirarchy, not just immediate inheritance 
+ * todo: allow for aliasing comparisons (force (pkg.)*class to be treated as though it 
+ *       were in a different pkg/class heirarchy (facilitates comparison of icu4j and java)
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+// standard release sdk won't work, need internal build to get access to javadoc
+import com.sun.javadoc.*;
+import java.io.*;
+import java.util.*;
+import java.util.regex.*;
+import java.util.zip.GZIPOutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+public class GatherAPIData {
+    RootDoc root;
+    TreeSet results;
+    String srcName = "Current"; // default source name
+    String output; // name of output file to write
+    String base; // strip this prefix
+    Pattern pat;
+    boolean zip;
+    boolean gzip;
+    boolean internal;
+    boolean version;
+
+    public static int optionLength(String option) {
+        if (option.equals("-name")) {
+            return 2;
+        } else if (option.equals("-output")) {
+            return 2;
+        } else if (option.equals("-base")) {
+            return 2;
+        } else if (option.equals("-filter")) {
+            return 2;
+        } else if (option.equals("-zip")) {
+            return 1;
+        } else if (option.equals("-gzip")) {
+            return 1;
+        } else if (option.equals("-internal")) {
+            return 1;
+        } else if (option.equals("-version")) {
+            return 1;
+        }
+        return 0;
+    }
+
+    public static boolean start(RootDoc root) {
+        return new GatherAPIData(root).run();
+    }
+
+    GatherAPIData(RootDoc root) {
+        this.root = root;
+
+        String[][] options = root.options();
+        for (int i = 0; i < options.length; ++i) {
+            String opt = options[i][0];
+            if (opt.equals("-name")) {
+                this.srcName = options[i][1];
+            } else if (opt.equals("-output")) {
+                this.output = options[i][1];
+            } else if (opt.equals("-base")) {
+                this.base = options[i][1]; // should not include '.'
+            } else if (opt.equals("-filter")) {
+                this.pat = Pattern.compile(options[i][1], Pattern.CASE_INSENSITIVE);
+            } else if (opt.equals("-zip")) {
+                this.zip = true;
+            } else if (opt.equals("-gzip")) {
+                this.gzip = true;
+            } else if (opt.equals("-internal")) {
+                this.internal = true;
+            } else if (opt.equals("-version")) {
+                this.version = true;
+            }
+        }
+
+        results = new TreeSet(APIInfo.defaultComparator());
+    }
+
+    private boolean run() {
+        doDocs(root.classes());
+
+        OutputStream os = System.out;
+        if (output != null) {
+            try {
+                if (zip) {
+                    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(output + ".zip"));
+                    zos.putNextEntry(new ZipEntry(output));
+                    os = zos;
+                } else if (gzip) {
+                    os = new GZIPOutputStream(new FileOutputStream(output + ".gz"));
+                } else {
+                    os = new FileOutputStream(output);
+                }
+            }
+            catch (IOException e) {
+                RuntimeException re = new RuntimeException(e.getMessage());
+                re.initCause(e);
+                throw re;
+            }
+        }
+
+        BufferedWriter bw = null;
+        try {
+            OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
+            bw = new BufferedWriter(osw);
+
+            // writing data file
+            bw.write(String.valueOf(APIInfo.VERSION) + APIInfo.SEP); // header version
+            bw.write(srcName + APIInfo.SEP); // source name
+            bw.write((base == null ? "" : base) + APIInfo.SEP); // base
+            bw.newLine();
+            writeResults(results, bw);
+            bw.close(); // should flush, close all, etc
+        } catch (IOException e) {
+            try { bw.close(); } catch (IOException e2) {}
+            RuntimeException re = new RuntimeException("write error: " + e.getMessage());
+            re.initCause(e);
+            throw re;
+        }
+
+        return false;
+    }
+
+    private void doDocs(ProgramElementDoc[] docs) {
+        if (docs != null && docs.length > 0) {
+            for (int i = 0; i < docs.length; ++i) {
+                doDoc(docs[i]);
+            }
+        }
+    }
+
+    private void doDoc(ProgramElementDoc doc) {
+        if (ignore(doc)) return;
+
+        if (doc.isClass() || doc.isInterface()) {
+            ClassDoc cdoc = (ClassDoc)doc;
+            doDocs(cdoc.fields());
+            doDocs(cdoc.constructors());
+            doDocs(cdoc.methods());
+            doDocs(cdoc.innerClasses());
+        }
+
+        APIInfo info = createInfo(doc);
+        if (info != null) {
+            results.add(info);
+        }
+    }
+
+    private boolean ignore(ProgramElementDoc doc) {
+        if (doc == null) return true;
+        if (doc.isPrivate() || doc.isPackagePrivate()) return true;
+        if (doc instanceof ConstructorDoc && ((ConstructorDoc)doc).isSynthetic()) return true;
+        if (doc.qualifiedName().indexOf(".misc") != -1) { 
+            System.out.println("misc: " + doc.qualifiedName()); return true; 
+        }
+        if (!internal) { // debug
+            Tag[] tags = doc.tags();
+            for (int i = 0; i < tags.length; ++i) {
+                if (tagKindIndex(tags[i].kind()) == INTERNAL) { return true; }
+            }
+        }
+        if (pat != null && (doc.isClass() || doc.isInterface())) {
+            if (!pat.matcher(doc.name()).matches()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static void writeResults(Collection c, BufferedWriter w) {
+        Iterator iter = c.iterator();
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+            info.writeln(w);
+        }
+    }
+
+    private String trimBase(String arg) {
+        if (base != null) {
+            for (int n = arg.indexOf(base); n != -1; n = arg.indexOf(base, n)) {
+                arg = arg.substring(0, n) + arg.substring(n+base.length());
+            }
+        }
+        return arg;
+    }
+
+    public APIInfo createInfo(ProgramElementDoc doc) {
+
+        // Doc. name
+        // Doc. isField, isMethod, isConstructor, isClass, isInterface
+        // ProgramElementDoc. containingClass, containingPackage
+        // ProgramElementDoc. isPublic, isProtected, isPrivate, isPackagePrivate
+        // ProgramElementDoc. isStatic, isFinal
+        // MemberDoc.isSynthetic
+        // ExecutableMemberDoc isSynchronized, signature
+        // Type.toString() // e.g. "String[][]"
+        // ClassDoc.isAbstract, superClass, interfaces, fields, methods, constructors, innerClasses
+        // FieldDoc type
+        // ConstructorDoc qualifiedName
+        // MethodDoc isAbstract, returnType
+
+        APIInfo info = new APIInfo();
+        if (version) {
+            info.includeStatusVersion(true);
+        }
+            
+        // status
+        String[] version = new String[1];
+        info.setType(APIInfo.STA, tagStatus(doc, version));
+        info.setStatusVersion(version[0]);
+
+        // visibility
+        if (doc.isPublic()) {
+            info.setPublic();
+        } else if (doc.isProtected()) {
+            info.setProtected();
+        } else if (doc.isPrivate()) {
+            info.setPrivate();
+        } else {
+            // default is package
+        }
+
+        // static
+        if (doc.isStatic()) {
+            info.setStatic();
+        } else {
+            // default is non-static
+        }
+
+        // final
+        if (doc.isFinal()) {
+            info.setFinal();
+        } else {
+            // default is non-final
+        }
+
+        // type
+        if (doc.isField()) {
+            info.setField();
+        } else if (doc.isMethod()) {
+            info.setMethod();
+        } else if (doc.isConstructor()) {
+            info.setConstructor();
+        } else if (doc.isClass() || doc.isInterface()) {
+            info.setClass();
+        }
+
+        info.setPackage(trimBase(doc.containingPackage().name()));
+        info.setClassName((doc.isClass() || doc.isInterface() || (doc.containingClass() == null)) 
+                          ? "" 
+                          : trimBase(doc.containingClass().name()));
+        info.setName(trimBase(doc.name()));
+
+        if (doc instanceof FieldDoc) {
+            FieldDoc fdoc = (FieldDoc)doc;
+            info.setSignature(trimBase(fdoc.type().toString()));
+        } else if (doc instanceof ClassDoc) {
+            ClassDoc cdoc = (ClassDoc)doc;
+
+            if (cdoc.isClass() && cdoc.isAbstract()) { 
+                // interfaces are abstract by default, don't mark them as abstract
+                info.setAbstract();
+            }
+
+            StringBuffer buf = new StringBuffer();
+            if (cdoc.isClass()) {
+                buf.append("extends ");
+                buf.append(cdoc.superclass().qualifiedName());
+            }
+            ClassDoc[] imp = cdoc.interfaces();
+            if (imp != null && imp.length > 0) {
+                if (buf.length() > 0) {
+                    buf.append(" ");
+                }
+                buf.append("implements");
+                for (int i = 0; i < imp.length; ++i) {
+                    if (i != 0) {
+                        buf.append(",");
+                    }
+                    buf.append(" ");
+                    buf.append(imp[i].qualifiedName());
+                }
+            }
+            info.setSignature(trimBase(buf.toString()));
+        } else {
+            ExecutableMemberDoc emdoc = (ExecutableMemberDoc)doc;
+            if (emdoc.isSynchronized()) {
+                info.setSynchronized();
+            }
+
+            if (doc instanceof MethodDoc) {
+                MethodDoc mdoc = (MethodDoc)doc;
+                if (mdoc.isAbstract()) {
+                    info.setAbstract();
+                }
+                info.setSignature(trimBase(mdoc.returnType().toString() + emdoc.signature()));
+            } else {
+                // constructor
+                info.setSignature(trimBase(emdoc.signature()));
+            }
+        }
+
+        return info;
+    }
+
+    private int tagStatus(final Doc doc, String[] version) {
+        class Result {
+            int res = -1;
+            void set(int val) { 
+                if (res != -1) {
+                    if (val == APIInfo.STA_DEPRECATED) {
+                        // ok to have both a 'standard' tag and deprecated
+                        return;
+                    } else if (res != APIInfo.STA_DEPRECATED) {
+                        // if already not deprecated, this is an error
+                        System.err.println("bad doc: " + doc + " both: " + APIInfo.getTypeValName(APIInfo.STA, res) + " and: " + APIInfo.getTypeValName(APIInfo.STA, val)); 
+                        return;
+                    }
+                }
+                // ok to replace with new tag
+                res = val;
+            }
+            int get() {
+                if (res == -1) {
+                    System.err.println("warning: no tag for " + doc);
+                    return 0;
+                }
+                return res;
+            }
+        }
+
+        Tag[] tags = doc.tags();
+        Result result = new Result();
+        String statusVer = "";
+        for (int i = 0; i < tags.length; ++i) {
+            Tag tag = tags[i];
+
+            String kind = tag.kind();
+            int ix = tagKindIndex(kind);
+
+            switch (ix) {
+            case INTERNAL:
+                result.set(internal ? APIInfo.STA_INTERNAL : -2); // -2 for legacy compatibility
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case DRAFT:
+                result.set(APIInfo.STA_DRAFT);
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case STABLE:
+                result.set(APIInfo.STA_STABLE);
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case DEPRECATED:
+                result.set(APIInfo.STA_DEPRECATED);
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case OBSOLETE:
+                result.set(APIInfo.STA_OBSOLETE);
+                statusVer = getStatusVersion(tag);
+                break;
+
+            case SINCE:
+            case EXCEPTION:
+            case VERSION:
+            case UNKNOWN:
+            case AUTHOR:
+            case SEE:
+            case PARAM:
+            case RETURN:
+            case THROWS:
+            case SERIAL:
+                break;
+
+            default:
+                throw new RuntimeException("unknown index " + ix + " for tag: " + kind);
+            }
+        }
+
+        if (version != null) {
+            version[0] = statusVer;
+        }
+        return result.get();
+    }
+
+    private String getStatusVersion(Tag tag) {
+        String text = tag.text();
+        if (text != null && text.length() > 0) {
+            // Extract version string
+            int start = -1;
+            int i = 0;
+            for (; i < text.length(); i++) {
+                char ch = text.charAt(i);
+                if (ch == '.' || (ch >= '0' && ch <= '9')) {
+                    if (start == -1) {
+                        start = i;
+                    }
+                } else if (start != -1) {
+                    break;
+                }
+            }
+            if (start != -1) {
+                return text.substring(start, i);
+            }
+        }
+        return "";
+    }
+
+    private static final int UNKNOWN = -1;
+    private static final int INTERNAL = 0;
+    private static final int DRAFT = 1;
+    private static final int STABLE = 2;
+    private static final int SINCE = 3;
+    private static final int DEPRECATED = 4;
+    private static final int AUTHOR = 5;
+    private static final int SEE = 6;
+    private static final int VERSION = 7;
+    private static final int PARAM = 8;
+    private static final int RETURN = 9;
+    private static final int THROWS = 10;
+    private static final int OBSOLETE = 11;
+    private static final int EXCEPTION = 12;
+    private static final int SERIAL = 13;
+
+    private static int tagKindIndex(String kind) {
+        final String[] tagKinds = {
+            "@internal", "@draft", "@stable", "@since", "@deprecated", "@author", "@see", "@version",
+            "@param", "@return", "@throws", "@obsolete", "@exception", "@serial"
+        };
+
+        for (int i = 0; i < tagKinds.length; ++i) {
+            if (kind.equals(tagKinds[i])) {
+                return i;
+            }
+        }
+        return UNKNOWN;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java b/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java
new file mode 100644
index 0000000..c39ae77
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java
@@ -0,0 +1,785 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.lang.reflect.*;
+import java.util.*;
+
+/**
+ * Compare ICU4J and JDK APIS.
+ *
+ * TODO: compare protected APIs.  Reflection on Class allows you
+ * to either get all inherited methods with public access, or get methods
+ * on the particular class with any access, but no way to get all
+ * inherited methods with any access.  Go figure.
+ */
+public class ICUJDKCompare {
+    static final boolean DEBUG = false;
+
+    // set up defaults
+    private static final String kSrcPrefix = "java.";
+    private static final String kTrgPrefix = "com.ibm.icu.";
+    private static final String[] kPairInfo = {
+        "lang.Character/UCharacter",
+        "lang.Character$UnicodeBlock/UCharacter$UnicodeBlock",
+        "text.BreakIterator",
+        "text.Collator",
+        "text.DateFormat",
+        "text.DateFormatSymbols",
+        "text.DecimalFormat",
+        "text.DecimalFormatSymbols",
+        "text.Format/UFormat",
+        "text.MessageFormat",
+        "text.NumberFormat",
+        "text.SimpleDateFormat",
+        "util.Calendar",
+        "util.Currency",
+        "util.GregorianCalendar",
+        "util.SimpleTimeZone",
+        "util.TimeZone",
+        "util.Locale/ULocale",
+        "util.ResourceBundle/UResourceBundle",
+    };
+
+    private static final String[] kIgnore = new String[] {
+        "lang.Character <init> charValue compareTo MAX_VALUE MIN_VALUE TYPE",
+        "lang.Character$UnicodeBlock SURROGATES_AREA",
+        "util.Calendar FIELD_COUNT",
+        "util.GregorianCalendar FIELD_COUNT",
+        "util.SimpleTimeZone STANDARD_TIME UTC_TIME WALL_TIME",
+    };
+
+    private PrintWriter pw;
+    private String srcPrefix;
+    private String trgPrefix;
+    private Class[] classPairs;
+    private String[] namePairs;
+    private String[] ignore;
+    private boolean swap;
+    //private boolean signature;
+
+    // call System.exit with non-zero if there were some missing APIs
+    public static void main(String[] args) {
+        System.exit(doMain(args));
+    }
+
+    // return non-zero if there were some missing APIs
+    public static int doMain(String[] args) {
+        ICUJDKCompare p = new ICUJDKCompare();
+        p.setOutputWriter(new PrintWriter(System.out));
+        p.setup(args);
+        return p.process();
+    }
+
+    // setters
+    public ICUJDKCompare setOutputWriter(PrintWriter pw) {
+        this.pw = pw;
+        return this;
+    }
+
+    public ICUJDKCompare setSrcPrefix(String srcPrefix) {
+        this.srcPrefix = srcPrefix;
+        return this;
+    }
+
+    public ICUJDKCompare setTrgPrefix(String trgPrefix) {
+        this.trgPrefix = trgPrefix;
+        return this;
+    }
+
+    public ICUJDKCompare setClassPairs(Class[] classPairs) {
+        this.classPairs = classPairs;
+        return this;
+    }
+
+    public ICUJDKCompare setNamePairs(String[] namePairs) {
+        this.namePairs = namePairs;
+        return this;
+    }
+
+    public ICUJDKCompare setIgnore(String[] ignore) {
+        this.ignore = ignore;
+        return this;
+    }
+
+    public ICUJDKCompare setSwap(boolean swap) {
+        this.swap = swap;
+        return this;
+    }
+
+    public ICUJDKCompare setup(String[] args) {
+        String namelist = null;
+        String ignorelist = null;
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-swap")) {
+                swap = true;
+            } else if (arg.equals("-srcPrefix:")) {
+                srcPrefix = args[++i];
+                if (!srcPrefix.endsWith(".")) {
+                    srcPrefix += '.';
+                }
+            } else if (arg.equals("-trgPrefix:")) {
+                trgPrefix = args[++i];
+                if (!trgPrefix.endsWith(".")) {
+                    trgPrefix += '.';
+                }
+            } else if (arg.equals("-names:")) {
+                namelist = args[++i];
+            } else if (arg.equals("-ignore:")) {
+                ignorelist = args[++i];
+            } else {
+                System.err.println("unrecognized argument: " + arg);
+                throw new IllegalStateException();
+            }
+        }
+
+        if (ignorelist != null) {
+            if (ignorelist.charAt(0) == '@') { // a file containing ignoreinfo
+                try {
+                    ArrayList nl = new ArrayList();
+                    File f = new File(namelist.substring(1));
+                    FileInputStream fis = new FileInputStream(f);
+                    InputStreamReader isr = new InputStreamReader(fis);
+                    BufferedReader br = new BufferedReader(isr);
+                    String line = null;
+                    while (null != (line = br.readLine())) {
+                        nl.add(line);
+                    }
+                    ignore = (String[])nl.toArray(new String[nl.size()]);
+                }
+                catch (Exception e) {
+                    System.err.println(e);
+                    throw new IllegalStateException();
+                }
+            } else { // a list of ignoreinfo separated by semicolons
+                ignore = ignorelist.split("\\s*;\\s*");
+            }
+        }
+
+        if (namelist != null) {
+            String[] names = null;
+            if (namelist.charAt(0) == '@') { // a file
+                try {
+                    ArrayList nl = new ArrayList();
+                    File f = new File(namelist.substring(1));
+                    FileInputStream fis = new FileInputStream(f);
+                    InputStreamReader isr = new InputStreamReader(fis);
+                    BufferedReader br = new BufferedReader(isr);
+                    String line = null;
+                    while (null != (line = br.readLine())) {
+                        nl.add(line);
+                    }
+                    names = (String[])nl.toArray(new String[nl.size()]);
+                }
+                catch (Exception e) {
+                    System.err.println(e);
+                    throw new IllegalStateException();
+                }
+            } else { // a list of names separated by semicolons
+                names = namelist.split("\\s*;\\s*");
+            }
+
+            processPairInfo(names);
+        }
+
+        pw.flush();
+
+        return this;
+    }
+
+    private void processPairInfo(String[] names) {
+        ArrayList cl = new ArrayList();
+        ArrayList nl = new ArrayList();
+        for (int i = 0; i < names.length; ++i) {
+            String name = names[i];
+            String srcName = srcPrefix;
+            String trgName = trgPrefix;
+
+            int n = name.indexOf('/');
+            if (n == -1) {
+                srcName += name;
+                trgName += name;
+            } else {
+                String srcSuffix = name.substring(0, n).trim();
+                String trgSuffix = name.substring(n+1).trim();
+                int jx = srcSuffix.length()+1;
+                int ix = trgSuffix.length()+1;
+                while (ix != -1) {
+                    jx = srcSuffix.lastIndexOf('.', jx-1);
+                    ix = trgSuffix.lastIndexOf('.', ix-1);
+                }
+                srcName += srcSuffix;
+                trgName += srcSuffix.substring(0, jx+1) + trgSuffix;
+            }
+
+            try {
+                Class jc = Class.forName(srcName);
+                Class ic = Class.forName(trgName);
+                cl.add(ic);
+                cl.add(jc);
+                nl.add(ic.getName());
+                nl.add(jc.getName());
+            }
+            catch (Exception e) {
+                if (DEBUG) System.err.println("can't load class: " + e.getMessage());
+            }
+        }
+        classPairs = (Class[])cl.toArray(new Class[cl.size()]);
+        namePairs = (String[])nl.toArray(new String[nl.size()]);
+    }
+
+    private void println(String s) {
+        if (pw != null) pw.println(s);
+    }
+
+    private void flush() {
+        if (pw != null) pw.flush();
+    }
+
+    public int process() {
+        // set defaults
+        if (srcPrefix == null) {
+            srcPrefix = kSrcPrefix;
+        }
+
+        if (trgPrefix == null) {
+            trgPrefix = kTrgPrefix;
+        }
+        
+        if (classPairs == null) {
+            processPairInfo(kPairInfo);
+        }
+
+        if (ignore == null) {
+            ignore = kIgnore;
+        }
+
+        println("ICU and Java API Comparison");
+        String ICU_VERSION = "unknown";
+        try {
+            Class cls = Class.forName("com.ibm.icu.util.VersionInfo");
+            Field fld = cls.getField("ICU_VERSION");
+            ICU_VERSION = fld.get(null).toString();
+        }
+        catch (Exception e) {
+            if (DEBUG) System.err.println("can't get VersionInfo: " + e.getMessage());
+        }
+        println("ICU Version " + ICU_VERSION);
+        println("JDK Version " + System.getProperty("java.version"));
+
+        int errorCount = 0;
+        for (int i = 0; i < classPairs.length; i += 2) {
+            try {
+                if (swap) {
+                    errorCount += compare(classPairs[i+1], classPairs[i]);
+                } else {
+                    errorCount += compare(classPairs[i], classPairs[i+1]);
+                }
+            }
+            catch (Exception e) {
+                System.err.println("exception: " + e);
+                System.err.println("between " + namePairs[i] + " and " + namePairs[i+1]);
+                e.printStackTrace();
+                errorCount += 1;
+            }
+        }
+        return errorCount;
+    }
+
+    static class MorC {
+        private Method mref;
+        private Constructor cref;
+
+        MorC(Method m) {
+            mref = m;
+        }
+
+        MorC(Constructor c) {
+            cref = c;
+        }
+
+        int getModifiers() {
+            return mref == null ? cref.getModifiers() : mref.getModifiers();
+        }
+
+        Class getReturnType() {
+            return mref == null ? void.class : mref.getReturnType();
+        }
+
+        Class[] getParameterTypes() {
+            return mref == null ? cref.getParameterTypes() : mref.getParameterTypes();
+        }
+
+        String getName() {
+            return mref == null ? "<init>" : mref.getName();
+        }
+
+        String getSignature() {
+            return mref == null ? cref.toString() : mref.toString();
+        }
+    }
+
+    private int compare(Class class1, Class class2) throws Exception {
+        String n1 = class1.getName();
+        String n2 = class2.getName();
+
+        println("\ncompare " + n1 + " <> " + n2);
+
+        MorC[] conss1 = getMorCArray(class1.getConstructors());
+        MorC[] conss2 = getMorCArray(class2.getConstructors());
+
+        Map cmap1 = getMethodMap(conss1);
+        Map cmap2 = getMethodMap(conss2);
+
+        MorC[] meths1 = getMorCArray(class1.getMethods());
+        MorC[] meths2 = getMorCArray(class2.getMethods());
+
+        Map map1 = getMethodMap(meths1);
+        Map map2 = getMethodMap(meths2);
+
+        Field[] fields1 = class1.getFields();
+        Field[] fields2 = class2.getFields();
+
+        Set set1 = getFieldSet(fields1);
+        Set set2 = getFieldSet(fields2);
+
+        Map diffConss = diffMethodMaps(cmap2, cmap1);
+        Map diffMeths = diffMethodMaps(map2, map1);
+        Set diffFields = diffFieldSets(set2, set1);
+
+        diffConss = removeIgnored(n2, diffConss);
+        diffMeths = removeIgnored(n2, diffMeths);
+        diffFields = removeIgnored(n2, diffFields);
+
+        int result = diffConss.size() + diffMeths.size() + diffFields.size();
+        if (result > 0 && pw != null) {
+            pw.println("Public API in " + n2 + " but not in " + n1);
+            if (diffConss.size() > 0) {
+                pw.println("CONSTRUCTORS");
+                dumpMethodMap(diffConss, pw);
+            }
+            if (diffMeths.size() > 0) {
+                pw.println("METHODS");
+                dumpMethodMap(diffMeths, pw);
+            }
+            if (diffFields.size() > 0) {
+                pw.println("FIELDS");
+                dumpFieldSet(diffFields, pw);
+            }
+        }
+
+        flush();
+
+        return result;
+    }
+
+    final class MethodRecord {
+        MorC[] overrides;
+
+        MethodRecord(MorC m) {
+            overrides = new MorC[] { m };
+        }
+
+        MethodRecord(MorC[] ms) {
+            overrides = ms;
+        }
+
+        MethodRecord copy() {
+            return new MethodRecord((MorC[])overrides.clone());
+        }
+
+        int count() {
+            for (int i = 0; i < overrides.length; ++i) {
+                if (overrides[i] == null) {
+                    return i;
+                }
+            }
+            return overrides.length;
+        }
+
+        void add(MorC m) {
+            MorC[] temp = new MorC[overrides.length + 1];
+            for (int i = 0; i < overrides.length; ++i) {
+                temp[i] = overrides[i];
+            }
+            temp[overrides.length] = m;
+            overrides = temp;
+        }
+
+        void remove(int index) {
+            int i = index;
+            while (overrides[i] != null && i < overrides.length-1) {
+                overrides[i] = overrides[i+1];
+                ++i;
+            }
+            overrides[i] = null;
+        }
+
+        // if a call to a method can be handled by a call to t, remove the
+        // method from our list, and return true
+        boolean removeOverridden(MorC t) {
+            boolean result = false;
+            int i = 0;
+            while (i < overrides.length) {
+                MorC m = overrides[i];
+                if (m == null) {
+                    break;
+                }
+                if (handles(t, m)) {
+                    remove(i);
+                    result = true;
+                } else {
+                    ++i;
+                }
+            }
+            return result;
+        }
+
+        // remove all methods handled by any method of mr
+        boolean removeOverridden(MethodRecord mr) {
+            boolean result = false;
+            for (int i = 0; i < mr.overrides.length; ++i) {
+                MorC t = mr.overrides[i];
+                if (t == null) {
+                    // this shouldn't happen, as the target record should not have been modified
+                    throw new IllegalStateException();
+                }
+                if (removeOverridden(t)) {
+                    result = true;
+                }
+            }
+            return result;
+        }
+
+        void debugmsg(MorC t, MorC m, String msg) {
+            StringBuffer buf = new StringBuffer();
+            buf.append(t.getName());
+            buf.append(" ");
+            buf.append(msg);
+            buf.append("\n   ");
+            toString(t, buf);
+            buf.append("\n   ");
+            toString(m, buf);
+            System.out.println(buf.toString());
+        }
+
+        boolean handles(MorC t, MorC m) {
+            // relevant modifiers must match
+            if ((t.getModifiers() & MOD_MASK) != (m.getModifiers() & MOD_MASK)) {
+                if (DEBUG) debugmsg(t, m, "modifier mismatch");
+                return false;
+            }
+
+            Class tr = pairClassEquivalent(t.getReturnType());
+            Class mr = pairClassEquivalent(m.getReturnType());
+            if (!assignableFrom(mr, tr)) { // t return type must be same or narrower than m
+                if (DEBUG) debugmsg(t, m, "return value mismatch");
+                return false;
+            }
+            Class[] tts = t.getParameterTypes();
+            Class[] mts = m.getParameterTypes();
+            if (tts.length != mts.length) {
+                if (DEBUG) debugmsg(t, m, "param count mismatch");
+                return false;
+            }
+
+            for (int i = 0; i < tts.length; ++i) {
+                Class tc = pairClassEquivalent(tts[i]);
+                Class mc = pairClassEquivalent(mts[i]);
+                if (!assignableFrom(tc, mc)) { // m param must be same or narrower than t
+                    if (DEBUG) debugmsg(t, m, "parameter " + i + " mismatch, " +
+                                   tts[i].getName() + " not assignable from " + mts[i].getName());
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        public void toString(MorC m, StringBuffer buf) {
+            int mod = m.getModifiers();
+            if (mod != 0) {
+                buf.append(Modifier.toString(mod) + " ");
+            }
+            buf.append(nameOf(m.getReturnType()));
+            buf.append(" ");
+            buf.append(m.getName());
+            buf.append("(");
+            Class[] ptypes = m.getParameterTypes();
+            for (int j = 0; j < ptypes.length; ++j) {
+                if (j > 0) {
+                    buf.append(", ");
+                }
+                buf.append(nameOf(ptypes[j]));
+            }
+            buf.append(')');
+        }
+
+        public String toString() {
+            StringBuffer buf = new StringBuffer();
+            buf.append(overrides[0].getName());
+            for (int i = 0; i < overrides.length; ++i) {
+                MorC m = overrides[i];
+                if (m == null) {
+                    break;
+                }
+                buf.append("\n   ");
+                toString(m, buf);
+            }
+            return buf.toString();
+        }
+    }
+
+    public static String nameOf(Class c) {
+        if (c.isArray()) {
+            return nameOf(c.getComponentType()) + "[]";
+        }
+        String name = c.getName();
+        return name.substring(name.lastIndexOf('.') + 1);
+    }
+
+    static MorC[] getMorCArray(Constructor[] cons) {
+        MorC[] result = new MorC[cons.length];
+        for (int i = 0 ; i < cons.length; ++i) {
+            result[i] = new MorC(cons[i]);
+        }
+        return result;
+    }
+
+    static MorC[] getMorCArray(Method[] meths) {
+        MorC[] result = new MorC[meths.length];
+        for (int i = 0 ; i < meths.length; ++i) {
+            result[i] = new MorC(meths[i]);
+        }
+        return result;
+    }
+
+    private Map getMethodMap(MorC[] meths) {
+        Map result = new TreeMap();
+        for (int i = 0; i < meths.length; ++i) {
+            MorC m = meths[i];
+            String key = m.getName();
+            MethodRecord mr = (MethodRecord)result.get(key);
+            if (mr == null) {
+                mr = new MethodRecord(m);
+                result.put(key, mr);
+            } else {
+                mr.add(m);
+            }
+        }
+        return result;
+    }
+
+    private void dumpMethodMap(Map m, PrintWriter pw) {
+        Iterator iter = m.entrySet().iterator();
+        while (iter.hasNext()) {
+            dumpMethodRecord((MethodRecord)((Map.Entry)iter.next()).getValue());
+        }
+        pw.flush();
+    }
+
+    private void dumpMethodRecord(MethodRecord mr) {
+        pw.println(mr.toString());
+    }
+
+    static Map diffMethodMaps(Map m1, Map m2) {
+        // get all the methods in m1 that aren't mentioned in m2 at all
+        Map result = (Map)((TreeMap)m1).clone();
+        result.keySet().removeAll(m2.keySet());
+        return result;
+    }
+
+    private Map removeIgnored(String name, Map m1) {
+        if (ignore == null) {
+            return m1;
+        }
+        if (name.startsWith(srcPrefix)) {
+            name = name.substring(srcPrefix.length());
+        }
+        name += " "; // to avoid accidental prefix of nested class name
+
+        // prune ignore list to relevant items
+        ArrayList il = null;
+        for (int i = 0; i < ignore.length; ++i) {
+            String s = ignore[i];
+            if (s.startsWith(name)) {
+                if (il == null) {
+                    il = new ArrayList();
+                }
+                il.add(s);
+            }
+        }
+        if (il == null) {
+            return m1;
+        }
+            
+        Map result = new TreeMap(((TreeMap)m1).comparator());
+        result.putAll(m1);
+        Iterator iter = result.entrySet().iterator();
+        loop: while (iter.hasNext()) {
+            Map.Entry e = (Map.Entry)iter.next();
+            String key = (String)e.getKey();
+            for (int i = 0; i < il.size(); ++i) {
+                String ig = (String)il.get(i);
+                if (ig.indexOf(" " + key) != 0) {
+                    iter.remove();
+                    continue loop;
+                }
+            }
+        }            
+        return result;
+    }
+
+    private Set removeIgnored(String name, Set s1) {
+        if (ignore == null) {
+            return s1;
+        }
+        if (name.startsWith(srcPrefix)) {
+            name = name.substring(srcPrefix.length());
+        }
+        name += " "; // to avoid accidental prefix of nested class name
+
+        // prune ignore list to relevant items
+        ArrayList il = null;
+        for (int i = 0; i < ignore.length; ++i) {
+            String s = ignore[i];
+            if (s.startsWith(name)) {
+                if (il == null) {
+                    il = new ArrayList();
+                }
+                il.add(s);
+            }
+        }
+        if (il == null) {
+            return s1;
+        }
+            
+        Set result = (Set)((TreeSet)s1).clone();
+        Iterator iter = result.iterator();
+        loop: while (iter.hasNext()) {
+            String key = (String)iter.next();
+            String fieldname = key.substring(0, key.indexOf(' '));
+            for (int i = 0; i < il.size(); ++i) {
+                String ig = (String)il.get(i);
+                if (ig.indexOf(" " + fieldname) != 0) {
+                    iter.remove();
+                    continue loop;
+                }
+            }
+        }            
+        return result;
+    }
+
+    static final boolean[][] assignmentMap = {
+        // bool   char   byte  short    int   long  float double   void
+        {  true, false, false, false, false, false, false, false, false }, // boolean
+        { false,  true,  true,  true, false, false, false, false, false }, // char
+        { false, false,  true, false, false, false, false, false, false }, // byte
+        { false, false,  true,  true, false, false, false, false, false }, // short
+        { false,  true,  true,  true,  true, false, false, false, false }, // int
+        { false,  true,  true,  true,  true,  true, false, false, false }, // long
+        { false,  true,  true,  true,  true, false,  true, false, false }, // float
+        { false,  true,  true,  true,  true, false,  true,  true, false }, // double
+        { false, false, false, false, false, false, false, false,  true }, // void
+    };
+
+    static final Class[] prims = {
+        boolean.class, char.class, byte.class, short.class,
+        int.class, long.class, float.class, double.class, void.class
+    };
+
+    static int primIndex(Class cls) {
+        for (int i = 0; i < prims.length; ++i) {
+            if (cls == prims[i]) {
+                return i;
+            }
+        }
+        throw new IllegalStateException("could not find primitive class: " + cls);
+    }
+
+    static boolean assignableFrom(Class lhs, Class rhs) {
+        if (lhs == rhs) {
+            return true;
+        }
+        if (lhs.isPrimitive()) {
+            if (!rhs.isPrimitive()) {
+                return false;
+            }
+            int lhsx = primIndex(lhs);
+            int rhsx = primIndex(rhs);
+            return assignmentMap[lhsx][rhsx];
+        }
+        return lhs.isAssignableFrom(rhs);
+    }
+
+    private String toString(Field f) {
+        StringBuffer buf = new StringBuffer(f.getName());
+        int mod = f.getModifiers() & MOD_MASK;
+        if (mod != 0) {
+            buf.append(" " + Modifier.toString(mod));
+        }
+        buf.append(" ");
+        String n = pairEquivalent(f.getType().getName());
+        n = n.substring(n.lastIndexOf('.') + 1);
+        buf.append(n);
+        return buf.toString();
+    }
+
+    private Set getFieldSet(Field[] fs) {
+        Set set = new TreeSet();
+        for (int i = 0; i < fs.length; ++i) {
+            set.add(toString(fs[i]));
+        }
+        return set;
+    }
+
+    static Set diffFieldSets(Set s1, Set s2) {
+        Set result = (Set)((TreeSet)s1).clone();
+        result.removeAll(s2);
+        return result;
+    }
+
+    private void dumpFieldSet(Set s, PrintWriter pw) {
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            pw.println(iter.next());
+        }
+        pw.flush();
+    }
+
+    // given a target string, if it matches the first of one of our pairs, return the second
+    // or vice-versa if swap is true
+    private String pairEquivalent(String target) {
+        for (int i = 0; i < namePairs.length; i += 2) {
+            if (swap) {
+                if (target.equals(namePairs[i+1])) {
+                    return namePairs[i];
+                }
+            } else {
+                if (target.equals(namePairs[i])) {
+                    return namePairs[i+1];
+                }
+            }
+        }
+        return target;
+    }
+
+    private Class pairClassEquivalent(Class target) {
+        for (int i = 0; i < classPairs.length; i += 2) {
+            if (target.equals(classPairs[i])) {
+                return classPairs[i+1];
+            }
+        }
+        return target;
+    }
+
+    static final int MOD_MASK = ~(Modifier.FINAL|Modifier.SYNCHRONIZED|
+                                  Modifier.VOLATILE|Modifier.TRANSIENT|Modifier.NATIVE);
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java b/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
new file mode 100644
index 0000000..7d5045a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
@@ -0,0 +1,292 @@
+//##header J2SE15
+/**
+*******************************************************************************
+* Copyright (C) 2002-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+/**
+ * Preprocess with com.ibm.icu.dev.tool.docs.CodeMangler to generate
+ * either a JDK 1.4 or JDK 1.5 version.  For the 1.5 version, define
+ * VERSION_1.5.
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import com.sun.javadoc.*;
+//#if defined(J2SE13) || defined(J2SE14)
+//##import com.sun.tools.doclets.*;
+//#else
+// jdk 1.5 contains both com.sun.tools.doclets.Taglet and
+// com.sun.tools.doclets.internal.toolkit.taglets.Taglet.
+// Their registration code casts to the second, not the first, and the
+// second doesn't implement the first, so if you just implement the
+// first, you die.
+import com.sun.tools.doclets.internal.toolkit.taglets.*;
+import com.sun.tools.doclets.internal.toolkit.taglets.Taglet;
+//#endif
+
+import java.text.BreakIterator;
+import java.util.Locale;
+import java.util.Map;
+
+public abstract class ICUTaglet implements Taglet {
+    protected final String name;
+    protected final int mask;
+
+    protected static final int MASK_FIELD = 1;
+    protected static final int MASK_CONSTRUCTOR = 2;
+    protected static final int MASK_METHOD = 4;
+    protected static final int MASK_OVERVIEW = 8;
+    protected static final int MASK_PACKAGE = 16;
+    protected static final int MASK_TYPE = 32;
+    protected static final int MASK_INLINE = 64;
+
+    protected static final int MASK_DEFAULT = 0x003f; // no inline
+    protected static final int MASK_VALID = 0x007f; // includes inline
+
+    public static void register(Map taglets) {
+        ICUInternalTaglet.register(taglets);
+        ICUDraftTaglet.register(taglets);
+        ICUStableTaglet.register(taglets);
+//#if defined(J2SE13) || defined(J2SE14)
+//##        ICUDeprecatedTaglet.register(taglets);
+//#endif
+        ICUProvisionalTaglet.register(taglets);
+        ICUObsoleteTaglet.register(taglets);
+        ICUIgnoreTaglet.register(taglets);
+    }
+
+    protected ICUTaglet(String name, int mask) {
+        this.name = name;
+        this.mask = mask & MASK_VALID;
+    }
+
+    public boolean inField() {
+        return (mask & MASK_FIELD) != 0;
+    }
+
+    public boolean inConstructor() {
+        return (mask & MASK_CONSTRUCTOR) != 0;
+    }
+
+    public boolean inMethod() {
+        return (mask & MASK_METHOD) != 0;
+    }
+
+    public boolean inOverview() {
+        return (mask & MASK_OVERVIEW) != 0;
+    }
+
+    public boolean inPackage() {
+        return (mask & MASK_PACKAGE) != 0;
+    }
+
+    public boolean inType() {
+        return (mask & MASK_TYPE) != 0;
+    }
+
+    public boolean isInlineTag() {
+        return (mask & MASK_INLINE) != 0;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String toString(Tag tag) {
+        return tag.text();
+    }
+
+    public String toString(Tag[] tags) {
+        if (tags != null) {
+            if (tags.length > 1) {
+                String msg = "Should not have more than one ICU tag per element:\n";
+                for (int i = 0; i < tags.length; ++i) {
+                    msg += "  [" + i + "] " + tags[i] + "\n";
+                }
+                throw new IllegalStateException(msg);
+            } else if (tags.length > 0) {
+                return toString(tags[0]);
+            }
+        }
+        return null;
+    }
+
+//#if defined(J2SE13) || defined(J2SE14)
+//#else
+    public TagletOutput getTagletOutput(Tag tag, TagletWriter writer) throws IllegalArgumentException {
+        TagletOutput out = writer.getTagletOutputInstance();
+        out.setOutput(toString(tag));
+        return out;
+    }
+
+    public TagletOutput getTagletOutput(Doc holder, TagletWriter writer) throws IllegalArgumentException {
+        TagletOutput out = writer.getTagletOutputInstance();
+        Tag[] tags = holder.tags(getName());
+        if (tags.length == 0) {
+            return null;
+        }
+        out.setOutput(toString(tags[0]));
+        return out;
+    }
+//#endif
+
+    protected static final String STATUS = "<dt><b>Status:</b></dt>";
+
+    public static class ICUInternalTaglet extends ICUTaglet {
+        private static final String NAME = "internal";
+
+        public static void register(Map taglets) {
+            taglets.put(NAME, new ICUInternalTaglet());
+        }
+
+        private ICUInternalTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            return STATUS + "<dd><em>Internal</em>. <font color='red'>This API is <em>ICU internal only</em>.</font></dd>";
+        }
+    }
+
+    public static class ICUDraftTaglet extends ICUTaglet {
+        private static final String NAME = "draft";
+
+        public static void register(Map taglets) {
+            taglets.put(NAME, new ICUDraftTaglet());
+        }
+
+        private ICUDraftTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            String text = tag.text();
+            if (text.length() == 0) {
+                System.err.println("Warning: empty draft tag");
+            }
+            return STATUS + "<dd>Draft " + tag.text() + ".</dd>";
+        }
+    }
+
+    public static class ICUStableTaglet extends ICUTaglet {
+        private static final String NAME = "stable";
+
+        public static void register(Map taglets) {
+            taglets.put(NAME, new ICUStableTaglet());
+        }
+
+        private ICUStableTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            String text = tag.text();
+            if (text.length() > 0) {
+                return STATUS + "<dd>Stable " + text + ".</dd>";
+            } else {
+                return STATUS + "<dd>Stable.</dd>";
+            }
+        }
+    }
+//#if defined(J2SE13) || defined(J2SE14)
+//##    /*
+//##     * sigh, in JDK 1.5 we can't override the standard deprecated taglet
+//##     * so easily.  I'm not impressed with the javadoc code.
+//##     */
+//##    public static class ICUDeprecatedTaglet extends ICUTaglet {
+//##        private static final String NAME = "deprecated";
+//##
+//##        public static void register(Map taglets) {
+//##            taglets.remove(NAME); // override standard deprecated taglet
+//##            taglets.put(NAME, new ICUDeprecatedTaglet());
+//##        }
+//##
+//##        private ICUDeprecatedTaglet() {
+//##            super(NAME, MASK_DEFAULT);
+//##        }
+//##
+//##        public String toString(Tag tag) {
+//##            BreakIterator bi = BreakIterator.getSentenceInstance(Locale.US);
+//##            String text = tag.text();
+//##            bi.setText(text);
+//##            int first = bi.first();
+//##            int next = bi.next();
+//##            if (first == -1 || next == -1) {
+//##                System.err.println("Warning: bad deprecated tag '" + text + "'");
+//##                return "<dd><em>Note</em>. " + text + "</dd>";
+//##            } else {
+//##                if ("This API is ICU internal only.".equals(text)) {
+//##                    return null;
+//##                }
+//##                return "<dd><em>Note, " + text.substring(first, next) + "</em>. " + text.substring(next) + "</dd>";
+//##            }
+//##        }
+//##    }
+//#endif
+
+    public static class ICUProvisionalTaglet extends ICUTaglet {
+        private static final String NAME = "provisional";
+
+        public static void register(Map taglets) {
+            taglets.remove(NAME); // override standard deprecated taglet
+            taglets.put(NAME, new ICUProvisionalTaglet());
+        }
+
+        private ICUProvisionalTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            return null;
+        }
+    }
+
+    public static class ICUObsoleteTaglet extends ICUTaglet {
+        private static final String NAME = "obsolete";
+
+        public static void register(Map taglets) {
+            taglets.put(NAME, new ICUObsoleteTaglet());
+        }
+
+        private ICUObsoleteTaglet() {
+            super(NAME, MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            BreakIterator bi = BreakIterator.getSentenceInstance(Locale.US);
+            String text = tag.text();
+            bi.setText(text);
+            int first = bi.first();
+            int next = bi.next();
+            if (text.length() == 0) {
+                first = next = 0;
+            }
+            return STATUS + "<dd><em>Obsolete.</em> <font color='red'>Will be removed in " + text.substring(first, next) + "</font>. " + text.substring(next) + "</dd>";
+
+        }
+    }
+
+    public static class ICUIgnoreTaglet extends ICUTaglet {
+        private static ICUTaglet singleton;
+
+        public static void register(Map taglets) {
+            if (singleton == null) {
+                singleton = new ICUIgnoreTaglet();
+            }
+            taglets.put("bug", singleton);
+            taglets.put("test", singleton);
+            taglets.put("summary", singleton);
+        }
+
+        private ICUIgnoreTaglet() {
+            super(".ignore", MASK_DEFAULT);
+        }
+
+        public String toString(Tag tag) {
+            return null;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/README.txt b/src/com/ibm/icu/dev/tool/docs/README.txt
new file mode 100644
index 0000000..337f16b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/README.txt
@@ -0,0 +1,95 @@
+Copyright (C) 1996-2004, International Business Machines Corporation and
+others. All Rights Reserved.
+
+-------------------------------------------
+Using the GatherAPIData and ReportAPI tools
+-------------------------------------------
+
+These two tools are used together to generate reports about changes in
+supported API between versions of ICU4J.
+
+
+GatherAPIData 
+
+GatherAPIData uses javadoc to process the ICU4J source files and
+generate a file listing information about the public API, including
+the ICU4J status (draft, stable, deprecated, obsolete).  It excludes
+private API, API marked @internal.  The file is written as text, so it
+is human-readable, but it is a bit verbose.  To save space, the file
+can be zip'd or gzip'd (using flags passed to the tool), which will
+reduce the size by about a factor of 10.
+
+GatherAPIData requires javadoc and is currently based on sun jdk
+1.4.2.  JavaDoc is internal (I believe) so you need a reference jvm
+from Sun to compile the tool, but it can be run against any 1.4 JDK
+(at least, those from Sun).  Instructions in the source file show how
+it can be invoked.
+
+GatherAPIData should be passed all the packages that need reporting.
+Currently, public api is only in the lang, math, text, and util
+subpackages of com.ibm.icu.
+
+
+ReportAPI 
+
+ReportAPI takes two api files generated by GatherAPIData and reports
+on removals, changes, and additions to the API.  It does this by
+comparing the API information in the two API files.  When new classes
+are added, only the class is listed, not its entire API, and similarly
+when a class is deleted.  When APIs with the same name and signature
+are changed (visibility, status, inheritance) these changes are listed
+by showing the old and new versions of the API.
+
+ReportAPI is not particularly smart, and in particular, does not know
+about inherited API.  So for example, moving public API from a class
+to a base class is reported as a deletion of API from the original
+class, even though the effective API on the original class is
+unchanged by this.
+
+ReportAPI also does not know about Java class files, so for example it
+cannot be used to compare com.ibm.icu.lang.UCharacter against
+java.lang.Character.  This might be provided in a later release.
+
+For these reasons, in general it is best to compare two successive
+versions of ICU4J against each other, rather than radically different
+versions.  A large number of changes can show up, many of which might
+fall into these 'innocuous' categories.
+
+ReportAPI can generate either plain text or html reports.  Since it
+only requires the data files and does not rely on JavaDoc, it is more
+straightforward to invoke.
+
+ReportAPI uses the file extension to determine how to uncompress the
+api data files.  It expects '.zip' for files that have been compressed
+using zip, and '.gz' for files that have been compressed using gzip.
+The GatherAPIData utility automatically appends these extensions when
+compression is used.
+
+API Data Files
+
+API Data files for ICU4J 2.8 and 3.0 are in this directory.  The
+intent is to store data files for each release version of ICU4J, to
+facilitate comparison using the ReportAPI tool.  Of course, they can
+always be regenerated using the GenerateAPI and the sources of a
+particular ICU4J release.
+
+The format of the API data file is straightforward.  The first line of
+the file is the header, successive lines are the api information.
+Each line consists of a number of tokens, each followed by a
+semi-colon (incuding the last token on the line).
+
+The header line contains the version number, the 'name' of the version
+of ICU4J represented by the file, and a 'base directory' field
+(currently not fully implemented).
+
+The following lines contain data generated by the APIInfo class, one
+line per class or method.  The tokens are status, visibility, static,
+final, synchronized, abstract, type, package, containing class, name,
+and 'signature' (which varies by the type of object).  For classes,
+the 'signature' is the immediate inheritance of the class.  For
+fields, the 'signature' is the type of the field.  For methods, the
+'signature' is the function signature. All fields are always present.
+
+For more information, please see APIInfo.java.
+
+-------
diff --git a/src/com/ibm/icu/dev/tool/docs/ReportAPI.java b/src/com/ibm/icu/dev/tool/docs/ReportAPI.java
new file mode 100644
index 0000000..26fe8e9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/ReportAPI.java
@@ -0,0 +1,486 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+/**
+ * Compare two API files (generated by GatherAPIData) and generate a report
+ * on the differences.
+ *
+ * Sample invocation:
+ * java -old: icu4j28.api.zip -new: icu4j30.api -html -out: icu4j_compare_28_30.html
+ *
+ * TODO:
+ * - make 'changed apis' smarter - detect method parameter or return type change
+ *   for this, the sequential search through methods ordered by signature won't do.
+ *     We need to gather all added and removed overloads for a method, and then
+ *     compare all added against all removed in order to identify this kind of
+ *     change.
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.util.*;
+import java.text.*;
+
+public class ReportAPI {
+    APIData oldData;
+    APIData newData;
+    boolean html;
+    String outputFile;
+
+    TreeSet added;
+    TreeSet removed;
+    TreeSet promoted;
+    TreeSet obsoleted;
+    ArrayList changed;
+
+    static final class DeltaInfo extends APIInfo {
+        APIInfo added;
+        APIInfo removed;
+
+        DeltaInfo(APIInfo added, APIInfo removed) {
+            this.added = added;
+            this.removed = removed;
+        }
+
+        public int getVal(int typ) {
+            return added.getVal(typ);
+        }
+
+        public String get(int typ, boolean brief) {
+            return added.get(typ, brief);
+        }
+
+        public void print(PrintWriter pw, boolean detail, boolean html) {
+            pw.print("    ");
+            removed.print(pw, detail, html);
+            if (html) {
+                pw.println("</br>");
+            } else {
+                pw.println();
+                pw.print("--> ");
+            }
+            added.print(pw, detail, html);
+        }
+    }
+
+    public static void main(String[] args) {
+        String oldFile = null;
+        String newFile = null;
+        String outFile = null;
+        boolean html = false;
+        boolean internal = false;
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i];
+            if (arg.equals("-old:")) {
+                oldFile = args[++i];
+            } else if (arg.equals("-new:")) {
+                newFile = args[++i];
+            } else if (arg.equals("-out:")) {
+                outFile = args[++i];
+            } else if (arg.equals("-html")) {
+                html = true;
+            } else if (arg.equals("-internal")) {
+                internal = true;
+            }
+        }
+
+        new ReportAPI(oldFile, newFile, internal).writeReport(outFile, html, internal);
+    }
+
+    /*
+      while the both are methods and the class and method names are the same, collect
+      overloads.  when you hit a new method or class, compare the overloads
+      looking for the same # of params and simple param changes.  ideally
+      there are just a few.
+
+      String oldA = null;
+      String oldR = null;
+      if (!a.isMethod()) {
+      remove and continue
+      }
+      String am = a.getClassName() + "." + a.getName();
+      String rm = r.getClassName() + "." + r.getName();
+      int comp = am.compare(rm);
+      if (comp == 0 && a.isMethod() && r.isMethod())
+
+    */
+
+    ReportAPI(String oldFile, String newFile, boolean internal) {
+        this(APIData.read(oldFile, internal), APIData.read(newFile, internal));
+    }
+
+    ReportAPI(APIData oldData, APIData newData) {
+        this.oldData = oldData;
+        this.newData = newData;
+
+        removed = (TreeSet)oldData.set.clone();
+        removed.removeAll(newData.set);
+
+        added = (TreeSet)newData.set.clone();
+        added.removeAll(oldData.set);
+
+        changed = new ArrayList();
+        Iterator ai = added.iterator();
+        Iterator ri = removed.iterator();
+        Comparator c = APIInfo.changedComparator();
+
+        ArrayList ams = new ArrayList();
+        ArrayList rms = new ArrayList();
+        //PrintWriter outpw = new PrintWriter(System.out);
+
+        APIInfo a = null, r = null;
+        while ((a != null || ai.hasNext()) && (r != null || ri.hasNext())) {
+            if (a == null) a = (APIInfo)ai.next();
+            if (r == null) r = (APIInfo)ri.next();
+
+            String am = a.getClassName() + "." + a.getName();
+            String rm = r.getClassName() + "." + r.getName();
+            int comp = am.compareTo(rm);
+            if (comp == 0 && a.isMethod() && r.isMethod()) { // collect overloads
+                ams.add(a); a = null;
+                rms.add(r); r = null;
+                continue;
+            }
+
+            if (!ams.isEmpty()) {
+                // simplest case first
+                if (ams.size() == 1 && rms.size() == 1) {
+                    changed.add(new DeltaInfo((APIInfo)ams.get(0), (APIInfo)rms.get(0)));
+                } else {
+                    // dang, what to do now?
+                    // TODO: modify deltainfo to deal with lists of added and removed
+                }
+                ams.clear();
+                rms.clear();
+            }
+
+            int result = c.compare(a, r);
+            if (result < 0) {
+                a = null;
+            } else if (result > 0) {
+                r = null;
+            } else {
+                changed.add(new DeltaInfo(a, r));
+                a = null;
+                r = null;
+            }
+        }
+
+        // now clean up added and removed by cleaning out the changed members
+        Iterator ci = changed.iterator();
+        while (ci.hasNext()) {
+            DeltaInfo di = (DeltaInfo)ci.next();
+            added.remove(di.added);
+            removed.remove(di.removed);
+        }
+
+        Set tempAdded = new HashSet();
+        tempAdded.addAll(newData.set);
+        tempAdded.removeAll(removed);
+        TreeSet changedAdded = new TreeSet(APIInfo.defaultComparator());
+        changedAdded.addAll(tempAdded);
+
+        Set tempRemoved = new HashSet();
+        tempRemoved.addAll(oldData.set);
+        tempRemoved.removeAll(added);
+        TreeSet changedRemoved = new TreeSet(APIInfo.defaultComparator());
+        changedRemoved.addAll(tempRemoved);
+
+        promoted = new TreeSet(APIInfo.defaultComparator());
+        obsoleted = new TreeSet(APIInfo.defaultComparator());
+        ai = changedAdded.iterator();
+        ri = changedRemoved.iterator();
+        a = r = null;
+        while ((a != null || ai.hasNext()) && (r != null || ri.hasNext())) {
+            if (a == null) a = (APIInfo)ai.next();
+            if (r == null) r = (APIInfo)ri.next();
+            int result = c.compare(a, r);
+            if (result < 0) {
+                a = null;
+            } else if (result > 0) {
+                r = null;
+            } else {
+                int change = statusChange(a, r);
+                if (change > 0) {
+                    promoted.add(a);
+                } else if (change < 0) {
+                    obsoleted.add(a);
+                }
+                a = null;
+                r = null;
+            }
+        }
+
+        added = stripAndResort(added);
+        removed = stripAndResort(removed);
+        promoted = stripAndResort(promoted);
+        obsoleted = stripAndResort(obsoleted);
+    }
+
+    private int statusChange(APIInfo lhs, APIInfo rhs) { // new. old
+        for (int i = 0; i < APIInfo.NUM_TYPES; ++i) {
+            if (lhs.get(i, true).equals(rhs.get(i, true)) == (i == APIInfo.STA)) {
+                return 0;
+            }
+        }
+        int lstatus = lhs.getVal(APIInfo.STA);
+        if (lstatus == APIInfo.STA_OBSOLETE || lstatus == APIInfo.STA_DEPRECATED || lstatus == APIInfo.STA_INTERNAL) {
+            return -1;
+        }
+        return 1;
+    }
+
+    private boolean writeReport(String outFile, boolean html, boolean internal) {
+        OutputStream os = System.out;
+        if (outFile != null) {
+            try {
+                os = new FileOutputStream(outFile);
+            }
+            catch (FileNotFoundException e) {
+                RuntimeException re = new RuntimeException(e.getMessage());
+                re.initCause(e);
+                throw re;
+            }
+        }
+
+        PrintWriter pw = null;
+        try {
+            pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(os, "UTF-8")));
+        }
+        catch (UnsupportedEncodingException e) {
+            throw new IllegalStateException(); // UTF-8 should always be supported
+        }
+
+        DateFormat fmt = new SimpleDateFormat("yyyy");
+        String year = fmt.format(new Date());
+        String title = "ICU4J API Comparison: " + oldData.name + " with " + newData.name;
+        String info = "Contents generated by ReportAPI tool on " + new Date().toString();
+        String copyright = "Copyright (C) " + year + ", International Business Machines Corporation, All Rights Reserved.";
+
+        if (html) {
+            pw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
+            pw.println("<html>");
+            pw.println("<head>");
+            pw.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
+            pw.println("<title>" + title + "</title>");
+            pw.println("<!-- Copyright " + year + ", IBM, All Rights Reserved. -->");
+            pw.println("</head>");
+            pw.println("<body>");
+
+            pw.println("<h1>" + title + "</h1>");
+
+            pw.println();
+            pw.println("<hr/>");
+            pw.println("<h2>Removed from " + oldData.name +"</h2>");
+            if (removed.size() > 0) {
+                printResults(removed, pw, true, false);
+            } else {
+                pw.println("<p>(no API removed)</p>");
+            }
+
+            pw.println();
+            pw.println("<hr/>");
+            if (internal) {
+                pw.println("<h2>Withdrawn, Deprecated, or Obsoleted in " + newData.name + "</h2>");
+            } else {
+                pw.println("<h2>Deprecated or Obsoleted in " + newData.name + "</h2>");
+            }
+            if (obsoleted.size() > 0) {
+                printResults(obsoleted, pw, true, false);
+            } else {
+                pw.println("<p>(no API obsoleted)</p>");
+            }
+
+            pw.println();
+            pw.println("<hr/>");
+            pw.println("<h2>Changed in " + newData.name + " (old, new)</h2>");
+            if (changed.size() > 0) {
+                printResults(changed, pw, true, true);
+            } else {
+                pw.println("<p>(no API changed)</p>");
+            }
+
+            pw.println();
+            pw.println("<hr/>");
+            pw.println("<h2>Promoted to stable in " + newData.name + "</h2>");
+            if (promoted.size() > 0) {
+                printResults(promoted, pw, true, false);
+            } else {
+                pw.println("<p>(no API promoted)</p>");
+            }
+
+            pw.println();
+            pw.println("<hr/>");
+            pw.println("<h2>Added in " + newData.name + "</h2>");
+            if (added.size() > 0) {
+                printResults(added, pw, true, false);
+            } else {
+                pw.println("<p>(no API added)</p>");
+            }
+
+            pw.println("<hr/>");
+            pw.println("<p><i><font size=\"-1\">" + info + "<br/>" + copyright + "</font></i></p>");
+            pw.println("</body>");
+            pw.println("</html>");
+        } else {
+            pw.println(title);
+            pw.println();
+            pw.println();
+
+            pw.println("=== Removed from " + oldData.name + " ===");
+            if (removed.size() > 0) {
+                printResults(removed, pw, false, false);
+            } else {
+                pw.println("(no API removed)");
+            }
+
+            pw.println();
+            pw.println();
+            if (internal) {
+                pw.println("=== Withdrawn, Deprecated, or Obsoleted in " + newData.name + " ===");
+            } else {
+                pw.println("=== Deprecated or Obsoleted in " + newData.name + " ===");
+            }
+            if (obsoleted.size() > 0) {
+                printResults(obsoleted, pw, false, false);
+            } else {
+                pw.println("(no API obsoleted)");
+            }
+
+            pw.println();
+            pw.println();
+            pw.println("=== Changed in " + newData.name + " (old, new) ===");
+            if (changed.size() > 0) {
+                printResults(changed, pw, false, true);
+            } else {
+                pw.println("(no API changed)");
+            }
+
+            pw.println();
+            pw.println();
+            pw.println("=== Promoted to stable in " + newData.name + " ===");
+            if (promoted.size() > 0) {
+                printResults(promoted, pw, false, false);
+            } else {
+                pw.println("(no API promoted)");
+            }
+
+            pw.println();
+            pw.println();
+            pw.println("=== Added in " + newData.name + " ===");
+            if (added.size() > 0) {
+                printResults(added, pw, false, false);
+            } else {
+                pw.println("(no API added)");
+            }
+
+            pw.println();
+            pw.println("================");
+            pw.println(info);
+            pw.println(copyright);
+        }
+        pw.close();
+
+        return false;
+    }
+
+    private static void printResults(Collection c, PrintWriter pw, boolean html, boolean isChangedAPIs) {
+        Iterator iter = c.iterator();
+        String pack = null;
+        String clas = null;
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+
+            String packageName = info.getPackageName();
+            if (!packageName.equals(pack)) {
+                if (html) {
+                    if (clas != null) {
+                        pw.println("</ul>");
+                    }
+                    if (pack != null) {
+                        pw.println("</ul>");
+                    }
+                    pw.println();
+                    pw.println("<h3>Package " + packageName + "</h3>");
+                    pw.print("<ul>");
+                } else {
+                    if (pack != null) {
+                        pw.println();
+                    }
+                    pw.println();
+                    pw.println("Package " + packageName + ":");
+                }
+                pw.println();
+
+                pack = packageName;
+                clas = null;
+            }
+
+            if (!info.isClass()) {
+                String className = info.getClassName();
+                if (!className.equals(clas)) {
+                    if (html) {
+                        if (clas != null) {
+                            pw.println("</ul>");
+                        }
+                        pw.println(className);
+                        pw.println("<ul>");
+                    } else {
+                        pw.println(className);
+                    }
+                    clas = className;
+                }
+            }
+
+            if (html) {
+                pw.print("<li>");
+                info.print(pw, isChangedAPIs, html);
+                pw.println("</li>");
+            } else {
+                info.println(pw, isChangedAPIs, html);
+            }
+        }
+
+        if (html) {
+            if (clas != null) {
+                pw.println("</ul>");
+            }
+            if (pack != null) {
+                pw.println("</ul>");
+            }
+        }
+        pw.println();
+    }
+
+    private static TreeSet stripAndResort(TreeSet t) {
+        stripClassInfo(t);
+        TreeSet r = new TreeSet(APIInfo.classFirstComparator());
+        r.addAll(t);
+        return r;
+    }
+
+    private static void stripClassInfo(Collection c) {
+        // c is sorted with class info first
+        Iterator iter = c.iterator();
+        String cname = null;
+        while (iter.hasNext()) {
+            APIInfo info = (APIInfo)iter.next();
+            String className = info.getClassName();
+            if (cname != null) {
+                if (cname.equals(className)) {
+                    iter.remove();
+                    continue;
+                }
+                cname = null;
+            }
+            if (info.isClass()) {
+                cname = info.getName();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java b/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java
new file mode 100644
index 0000000..c45c4ec
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java
@@ -0,0 +1,335 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.docs;
+
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class SwatDeprecated {
+    private File srcFile;
+    private File dstFile;
+    private int maxLength = 85;
+    private String srcPrefix;
+    private String dstPrefix;
+    private String srcTag;
+    private String trgTag;
+    private boolean overwrite;
+    private int verbosity;
+    private int cc; // changed file count
+    //private boolean inPlace;
+    private String copyYear;
+
+    private PrintWriter pw = new PrintWriter(System.out);
+
+    private static FilenameFilter ff = new FilenameFilter() {
+            public boolean accept(File dir, String name) {
+                return (new File(dir, name).isDirectory() && !"CVS".equals(name)) ||
+                    (!name.equals("SwatDeprecated.java") && name.endsWith(".java"));
+            }
+        };
+
+    public static void main(String[] args) {
+        String src = System.getProperty("user.dir");
+        String dst = src;
+        boolean dep = true;
+        boolean ovr = false;
+        int vrb = 1;
+
+        for (int i = 0; i < args.length; ++i) {
+            String arg = args[i].toLowerCase();
+            if (arg.charAt(0) == '-') {
+                if (arg.equals("-src")) {
+                    src = args[++i];
+                }
+                else if (arg.equals("-dst")) {
+                    dst = args[++i];
+                }
+                else if (arg.equals("-dep")) {
+                    dep = true;
+                } 
+                else if (arg.equals("-prov")) {
+                    dep = false;
+                }
+                else if (arg.equals("-overwrite")) {
+                    ovr = true;
+                }
+                else if (arg.equals("-silent")) { // no output
+                    vrb = 0;
+                }
+                else if (arg.equals("-quiet")) { // output parameters and count of changed files (default)
+                    vrb = 1;
+                } 
+                else if (arg.equals("-verbose")) { // output names of modified files
+                    vrb = 2;
+                } 
+                else if (arg.equals("-noisy")) { // output names of files not modified
+                    vrb = 3;
+                } 
+                else if (arg.equals("-copydebug")) { // output copyright debugging
+                    vrb = 4;
+                }
+                else if (arg.equals("-debug")) { // output all debugging
+                    vrb = 5;
+                }
+            }
+        }
+
+        new SwatDeprecated(src, dst, dep, ovr, vrb).run();
+    }
+
+    public SwatDeprecated(String src, String dst, boolean dep, boolean overwrite, int verbosity) {
+        this.srcFile = new File(src);
+        this.dstFile = new File(dst);
+        this.overwrite = overwrite;
+        this.verbosity = verbosity;
+        this.copyYear = new SimpleDateFormat("yyyy").format(new Date());
+
+        this.srcTag = "@deprecated This is a draft API and might change in a future release of ICU.";
+        this.trgTag = "@provisional This API might change or be removed in a future release.";
+        if (!dep) {
+            String temp = srcTag;
+            srcTag = trgTag;
+            trgTag = temp;
+        }
+        try {
+            this.srcPrefix = srcFile.getCanonicalPath();
+            this.dstPrefix = dstFile.getCanonicalPath();
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException(e.getMessage());
+            re.initCause(e);
+            throw re;
+        }
+
+        //this.inPlace = srcPrefix.equals(dstPrefix);
+        this.cc = 0;
+
+        if (verbosity >= 1) {
+            pw.println("replacing '" + srcTag + "'");
+            pw.println("     with '" + trgTag + "'");
+            pw.println();
+            pw.println("     source: '" + srcPrefix + "'");
+            pw.println("destination: '" + dstPrefix + "'");
+            pw.println("  overwrite: " + overwrite);
+            pw.println("  verbosity: " + verbosity);
+            pw.flush();
+        }
+    }
+
+    public void run() {
+        if (!srcFile.exists()) {
+            throw new RuntimeException("file " + srcFile.getPath() + " does not exist.");
+        }
+        doList(srcFile);
+        if (verbosity >= 1) {
+            pw.println("changed " + cc + " file(s)");
+            pw.flush();
+        }
+    }
+
+    public void doList(File file) {
+        String[] filenames = file.list(ff);
+        if (verbosity >= 5) {
+            pw.println(file.getPath());
+            dumpList(filenames);
+            pw.flush();
+        }
+        for (int i = 0; i < filenames.length; ++i) {
+            File f = new File(file, filenames[i]);
+            if (f.isDirectory()) {
+                doList(f);
+            } else {
+                processFile(f);
+            }
+        }
+    }
+
+    public void processFile(File inFile) {
+        File bakFile = null;
+        try {
+            String inPath = inFile.getCanonicalPath();
+            if (verbosity >= 5) {
+                pw.println("processFile: " + inPath);
+            }
+
+            String outPath = dstPrefix + inPath.substring(srcPrefix.length());
+            File outFile = new File(outPath);
+
+            File tmpFile = null;
+            if (outFile.exists()) {
+                if (!overwrite) {
+                    throw new RuntimeException("no permission to overwrite file: " + outPath);
+                } else {
+                    bakFile = outFile;
+                    tmpFile = File.createTempFile(inFile.getName(), null, inFile.getParentFile());
+                }
+            } else {
+                tmpFile = outFile;
+                File parent = tmpFile.getParentFile();
+                parent.mkdirs();
+                tmpFile.createNewFile();
+            }
+
+            String tmpPath = tmpFile.getPath();
+            if (verbosity >= 5) {
+                pw.println("tmpFile: " + tmpPath);
+            }
+
+            InputStream is = new FileInputStream(inFile);
+            OutputStream os = new FileOutputStream(tmpFile);
+
+            PrintStream ps = new PrintStream(os);
+            BufferedReader br = new BufferedReader(new InputStreamReader(is));
+
+            String line;
+            int n = 0;
+            int tc = 0;
+//            boolean debug = false;
+            while (null != (line = br.readLine())) {
+                // int temp = line.indexOf("@deprecated");
+                int ix = line.indexOf(srcTag);
+//                 if (temp != -1 && ix == -1) {
+//                     if (debug == false) {
+//                         debug = true;
+//                         pw.println("file: " + name);
+//                     }
+//                     pw.println("[" + n + "] " + line);
+//                     pw.flush();
+//                 }
+                if (ix != -1) {
+                    if (verbosity >= 5) {
+                        pw.println("[" + n + "] " + line);
+                    }
+
+                    line = line.substring(0,ix) + trgTag;
+                    
+                    ++tc;
+                } else if (n < 20) {
+                    // swat copyrights in the first 20 lines while we're at it
+                    ix = line.indexOf("opyright");
+                    if (ix != -1) {
+                        String nline = null;
+                        do {
+                            if (verbosity == 4) {
+                                pw.println("[" + n + "] " + line);
+                            }
+                            ix = line.indexOf("-200");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix) + "-" + copyYear + line.substring(ix+5);
+                                break;
+                            }
+                            ix = line.indexOf("- 200");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix) + "-" + copyYear + line.substring(ix+6);
+                                break;
+                            }
+                            ix = line.indexOf("-199");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix) + "-" + copyYear + line.substring(ix+5);
+                                break;
+                            }
+                            ix = line.indexOf(copyYear);
+                            if (ix != -1) {
+                                break; // nothing needs changing
+                            }
+                            ix = line.indexOf("200");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix+4) + "-" + copyYear + line.substring(ix+4);
+                                break;
+                            }
+                            ix = line.indexOf("199");
+                            if (ix != -1) {
+                                nline = line.substring(0, ix+4) + "-" + copyYear + line.substring(ix+4);
+                                break;
+                            }
+                        } while (false);
+
+                        if (nline != null) {
+                            if (verbosity >= 4) {
+                                pw.println("  --> " + nline);
+                            }
+                            line = nline;
+                        }
+                    }
+                }
+                ps.println(line);
+                ++n;
+            }
+            ps.flush();
+            is.close();
+            os.close();
+
+            if (tc == 0) { // nothing changed, forget this file
+                if (verbosity >= 3) {
+                    pw.println("no changes in file: " + inPath);
+                }
+                if (!tmpFile.delete()) {
+                    throw new RuntimeException("unable to delete unneeded temporary file: " + tmpPath);
+                }
+
+                return;
+            }
+
+            if (bakFile != null) {
+                if (bakFile.exists()) {
+                    bakFile.delete();
+                }
+                if (!tmpFile.renameTo(bakFile)) {
+                    pw.println("warning: couldn't rename temp file to: " + outPath);
+                }
+            }
+
+            outFile.setLastModified(inFile.lastModified());
+
+            if (verbosity >= 2) {
+                pw.println(inPath);
+                pw.flush();
+            }
+        }
+        catch (IOException e) {
+            RuntimeException re = new RuntimeException(e.getMessage());
+            re.initCause(e);
+            throw re;
+        }
+        finally {
+            pw.flush();
+        }
+
+        ++cc;
+    }
+
+    public void dumpList(String[] names) {
+        if (names == null) {
+            pw.print("null");
+        } else {
+            pw.print("{");
+            int lc = 0;
+            if (names.length > 0) {
+                pw.println();
+                pw.print("    ");
+                lc = 4;
+            }
+            for (int i = 0; i < names.length; ++i) {
+                String name = names[i];
+                int nl = name.length();
+                if (lc + nl > maxLength) {
+                    pw.println();
+                    pw.print("    ");
+                    lc = 4;
+                }
+                pw.print(name);
+                pw.print(", ");
+                lc += nl + 2;
+            }
+            if (names.length > 0) {
+                pw.println();
+            }
+            pw.print("} ");
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j28.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j28.api.gz
new file mode 100644
index 0000000..d95f52c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j28.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:772a1e5195bbdcd2ac5fdf7153af71ca0a9dd934118bfbdb17a4388c4e3af6da
+size 19566
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j30.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j30.api.gz
new file mode 100644
index 0000000..e99db1a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j30.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d79fcac17e325a019a52ffdfb8e1fdd8eca4079faf05149a8710751d77934a73
+size 20672
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j32.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j32.api.gz
new file mode 100644
index 0000000..9099c01
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j32.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:535e05f6624f372fd241b1f2e5d4feb90ccff5fdaf732eb0df52acac9f5d1f29
+size 21416
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j34.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j34.api.gz
new file mode 100644
index 0000000..dec27d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j34.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f807843ac5fb8b32a9b7f13a89779d3aa712521a9c35d23c2352bc7835ee9050
+size 23103
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j341.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j341.api.gz
new file mode 100644
index 0000000..d472615
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j341.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:044f24883f55361bf4d78e63191f1600d64453b7405f93978fbe63a5722fe1b3
+size 23106
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j342.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j342.api.gz
new file mode 100644
index 0000000..e7c9741
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j342.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f76f514fd1344a4216b240345dbf1e93625e7a3c9f40c9e75939954c19526462
+size 23134
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j343.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j343.api.gz
new file mode 100644
index 0000000..d0dad8f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j343.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3af60a55b9cdc943952832f7a142eaeac21c51d4b16fb2cf977244553248fd08
+size 23132
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j36.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j36.api.gz
new file mode 100644
index 0000000..e6e60dd
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j36.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03d0d6ee2b586d113eb14af1a15dd2e09fd18a807258b3551a7daa9ebdbfade0
+size 26535
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j38.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j38.api.gz
new file mode 100644
index 0000000..a334643
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j38.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a57af4b4e36cb929fd0630fd1db5c08ffe9a367be05abb44bc0cfbe6f1bdcd2
+size 30164
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j381.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j381.api.gz
new file mode 100644
index 0000000..2b4b302
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j381.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:546dfc5bf2f2872d7804fbba61be67ee893b8a1ff082eb122f81bfd361a948b1
+size 30281
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j400.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j400.api.gz
new file mode 100644
index 0000000..d655870
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j400.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:75ece13e19c149456a6b86a13a0eab9bb851f2adb7119383c72e2ae3161c00c1
+size 31554
diff --git a/src/com/ibm/icu/dev/tool/docs/icu4j401.api.gz b/src/com/ibm/icu/dev/tool/docs/icu4j401.api.gz
new file mode 100644
index 0000000..2d95d0b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/docs/icu4j401.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40282552376903450b4a1f3865a226c26648928507c1fbc602febcebf200de1d
+size 31556
diff --git a/src/com/ibm/icu/dev/tool/ime/IMETest.java b/src/com/ibm/icu/dev/tool/ime/IMETest.java
new file mode 100644
index 0000000..3612353
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/IMETest.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2005, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime;
+
+import java.awt.Rectangle;
+import javax.swing.Box;
+import javax.swing.JFrame;
+import javax.swing.JTextField;
+import javax.swing.WindowConstants;
+
+public class IMETest {
+    public static void main(String[] args) {
+    String sampleText = "This is a sample\nto put into the field.";
+    Rectangle loc = new Rectangle(100, 100, 300, 300);
+    for (int i = 0; i < 2; ++i) {
+        JFrame jf = new JFrame("Test Window " + i);
+        jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+        Box box = Box.createVerticalBox();
+        box.add(new JTextField(sampleText));
+        box.add(new JTextField(sampleText));
+        jf.getContentPane().add(box);
+        jf.setBounds(loc);
+        
+        jf.setVisible(true);
+        
+        loc.x += 50;
+        loc.y += 50;
+    }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
new file mode 100644
index 0000000..9ebaa43
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
@@ -0,0 +1,216 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class BengaliInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale BENGALI = new Locale("bn", "IN");
+
+    public BengaliInputMethodDescriptor() {
+    super(BENGALI, "Bengali");
+    }
+    
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    private static char[] joinWithNukta;
+    private static char[] nuktaForm;
+
+    protected IndicInputMethodImpl getImpl()  {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u09A0',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFF01',   // '$'
+        /* 25 */ '\uFF02',   // '%'
+        /* 26 */ '\uFF04',   // '&'
+        /* 27 */ '\u099F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF05',   // '*'
+        /* 2B */ '\u098B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u09DF',   // '/'
+        /* 30 */ '\u09E6',   // '0'
+        /* 31 */ '\u09E7',   // '1'
+        /* 32 */ '\u09E8',   // '2'
+        /* 33 */ '\u09E9',   // '3'
+        /* 34 */ '\u09EA',   // '4'
+        /* 35 */ '\u09EB',   // '5'
+        /* 36 */ '\u09EC',   // '6'
+        /* 37 */ '\u09ED',   // '7'
+        /* 38 */ '\u09EE',   // '8'
+        /* 39 */ '\u09EF',   // '9'
+        /* 3A */ '\u099B',   // ':'
+        /* 3B */ '\u099A',   // ';'
+        /* 3C */ '\u09B7',   // '<'
+        /* 3D */ '\u09C3',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda)
+        /* 3F */ '\u09AF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0993',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u09A3',   // 'C'
+        /* 44 */ '\u0985',   // 'D'
+        /* 45 */ '\u0986',   // 'E'
+        /* 46 */ '\u0987',   // 'F'
+        /* 47 */ '\u0989',   // 'G'
+        /* 48 */ '\u09AB',   // 'H'
+        /* 49 */ '\u0998',   // 'I'
+        /* 4A */ '\uFFFF',   // 'J'
+        /* 4B */ '\u0996',   // 'K'
+        /* 4C */ '\u09A5',   // 'L'
+        /* 4D */ '\u09B6',   // 'M'
+        /* 4E */ '\uFFFF',   // 'N'
+        /* 4F */ '\u09A7',   // 'O'
+        /* 50 */ '\u099D',   // 'P'
+        /* 51 */ '\u0994',   // 'Q'
+        /* 52 */ '\u0988',   // 'R'
+        /* 53 */ '\u098F',   // 'S'
+        /* 54 */ '\u098A',   // 'T'
+        /* 55 */ '\u0999',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0990',   // 'W'
+        /* 58 */ '\u0981',   // 'X'
+        /* 59 */ '\u09AD',   // 'Y'
+        /* 5A */ '\uFFFF',   // 'Z'
+        /* 5B */ '\u09A1',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\u09BC',   // ']'
+        /* 5E */ '\uFF03',   // '^'
+        /* 5F */ '\u0983',   // '_'
+        /* 60 */ '\uFFFF',   // '`'
+        /* 61 */ '\u09CB',   // 'a'
+        /* 62 */ '\u09AC',   // 'b' (this is a BA instead of a VA)
+        /* 63 */ '\u09AE',   // 'c'
+        /* 64 */ '\u09CD',   // 'd'
+        /* 65 */ '\u09BE',   // 'e'
+        /* 66 */ '\u09BF',   // 'f'
+        /* 67 */ '\u09C1',   // 'g'
+        /* 68 */ '\u09AA',   // 'h'
+        /* 69 */ '\u0997',   // 'i'
+        /* 6A */ '\u09B0',   // 'j'
+        /* 6B */ '\u0995',   // 'k'
+        /* 6C */ '\u09A4',   // 'l'
+        /* 6D */ '\u09B8',   // 'm'
+        /* 6E */ '\u09B2',   // 'n'
+        /* 6F */ '\u09A6',   // 'o'
+        /* 70 */ '\u099C',   // 'p'
+        /* 71 */ '\u09CC',   // 'q'
+        /* 72 */ '\u09C0',   // 'r'
+        /* 73 */ '\u09C7',   // 's'
+        /* 74 */ '\u09C2',   // 't'
+        /* 75 */ '\u09B9',   // 'u'
+        /* 76 */ '\u09A8',   // 'v'
+        /* 77 */ '\u09C8',   // 'w'
+        /* 78 */ '\u0982',   // 'x'
+        /* 79 */ '\u09AC',   // 'y' (this is also a BA...)
+        /* 7A */ '\uFFFF',   // 'z'
+        /* 7B */ '\u09A2',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u099E',   // '}'
+        /* 7E */ '\uFFFF',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u09CD', '\u09B0'};
+        char[] RA_SUP = {'\u09B0', '\u09CD'};
+        char[] CONJ_JA_NYA = {'\u099C', '\u09CD', '\u099E'};
+        char[] CONJ_TA_RA = {'\u09A4', '\u09CD', '\u09B0'};
+        char[] CONJ_KA_SSA = {'\u0995', '\u09CD', '\u09B7'};
+        char[] CONJ_SHA_RA = {'\u09B6', '\u09CD', '\u09B0'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+
+        // The following characters followed by Nukta should be replaced
+        // by the corresponding character as defined in ISCII91
+        char LETTER_I              = '\u0987';
+        char LETTER_II             = '\u0988';
+        char LETTER_VOCALIC_R      = '\u098B';
+        char LETTER_DDA            = '\u09A1';
+        char LETTER_DDHA           = '\u09A2';
+        char VOWEL_SIGN_I          = '\u09BF';
+        char VOWEL_SIGN_II         = '\u09C0';
+        char VOWEL_SIGN_VOCALIC_R  = '\u09C3';
+
+        // The following characters replace the above characters followed by Nukta. These
+        // are defined in one to one correspondence order.
+        char LETTER_VOCALIC_L      = '\u098C';
+        char LETTER_VOCALIC_LL     = '\u09E1';
+        char LETTER_VOCALIC_RR     = '\u09E0';
+        char LETTER_DDDHA          = '\u09DC';
+        char LETTER_RHA            = '\u09DD';
+        char VOWEL_SIGN_VOCALIC_L  = '\u09E2';
+        char VOWEL_SIGN_VOCALIC_LL = '\u09E3';
+        char VOWEL_SIGN_VOCALIC_RR = '\u09C4';
+
+        joinWithNukta = new char[] {
+        LETTER_I,
+        LETTER_II,
+        LETTER_VOCALIC_R,
+        LETTER_DDA,
+        LETTER_DDHA,
+        VOWEL_SIGN_I,
+        VOWEL_SIGN_II,
+        VOWEL_SIGN_VOCALIC_R
+        };
+    
+        nuktaForm = new char[] {
+        LETTER_VOCALIC_L,
+        LETTER_VOCALIC_LL,
+        LETTER_VOCALIC_RR,
+        LETTER_DDDHA,
+        LETTER_RHA,
+        VOWEL_SIGN_VOCALIC_L,
+        VOWEL_SIGN_VOCALIC_LL,
+        VOWEL_SIGN_VOCALIC_RR
+        };
+    }
+
+    return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
new file mode 100644
index 0000000..8751e59
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
@@ -0,0 +1,246 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class DevanagariInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale DEVANAGARI = new Locale("hi", "IN");
+
+    public DevanagariInputMethodDescriptor() {
+    super(DEVANAGARI, "Devanagari");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    private static char[] joinWithNukta;
+    private static char[] nuktaForm;
+
+    protected IndicInputMethodImpl getImpl()  {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\u090D',   // '!'
+        /* 22 */ '\u0920',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFF01',   // '$'
+        /* 25 */ '\uFF02',   // '%'
+        /* 26 */ '\uFF04',   // '&'
+        /* 27 */ '\u091F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF05',   // '*'
+        /* 2B */ '\u090B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u092F',   // '/'
+        /* 30 */ '\u0966',   // '0'
+        /* 31 */ '\u0967',   // '1'
+        /* 32 */ '\u0968',   // '2'
+        /* 33 */ '\u0969',   // '3'
+        /* 34 */ '\u096A',   // '4'
+        /* 35 */ '\u096B',   // '5'
+        /* 36 */ '\u096C',   // '6'
+        /* 37 */ '\u096D',   // '7'
+        /* 38 */ '\u096E',   // '8'
+        /* 39 */ '\u096F',   // '9'
+        /* 3A */ '\u091B',   // ':'
+        /* 3B */ '\u091A',   // ';'
+        /* 3C */ '\u0937',   // '<'
+        /* 3D */ '\u0943',   // '='
+        /* 3E */ '\u0964',   // '>'
+        /* 3F */ '\u095F',   // '?'
+        /* 40 */ '\u0945',   // '@'
+        /* 41 */ '\u0913',   // 'A'
+        /* 42 */ '\u0934',   // 'B'
+        /* 43 */ '\u0923',   // 'C'
+        /* 44 */ '\u0905',   // 'D'
+        /* 45 */ '\u0906',   // 'E'
+        /* 46 */ '\u0907',   // 'F'
+        /* 47 */ '\u0909',   // 'G'
+        /* 48 */ '\u092B',   // 'H'
+        /* 49 */ '\u0918',   // 'I'
+        /* 4A */ '\u0931',   // 'J'
+        /* 4B */ '\u0916',   // 'K'
+        /* 4C */ '\u0925',   // 'L'
+        /* 4D */ '\u0936',   // 'M'
+        /* 4E */ '\u0933',   // 'N'
+        /* 4F */ '\u0927',   // 'O'
+        /* 50 */ '\u091D',   // 'P'
+        /* 51 */ '\u0914',   // 'Q'
+        /* 52 */ '\u0908',   // 'R'
+        /* 53 */ '\u090F',   // 'S'
+        /* 54 */ '\u090A',   // 'T'
+        /* 55 */ '\u0919',   // 'U'
+        /* 56 */ '\u0929',   // 'V'
+        /* 57 */ '\u0910',   // 'W'
+        /* 58 */ '\u0901',   // 'X'
+        /* 59 */ '\u092D',   // 'Y'
+        /* 5A */ '\u090E',   // 'Z'
+        /* 5B */ '\u0921',   // '['
+        /* 5C */ '\u0949',   // '\'
+        /* 5D */ '\u093C',   // ']'
+        /* 5E */ '\uFF03',   // '^'
+        /* 5F */ '\u0903',   // '_'
+        /* 60 */ '\u094A',   // '`'
+        /* 61 */ '\u094B',   // 'a'
+        /* 62 */ '\u0935',   // 'b'
+        /* 63 */ '\u092E',   // 'c'
+        /* 64 */ '\u094D',   // 'd'
+        /* 65 */ '\u093E',   // 'e'
+        /* 66 */ '\u093F',   // 'f'
+        /* 67 */ '\u0941',   // 'g'
+        /* 68 */ '\u092A',   // 'h'
+        /* 69 */ '\u0917',   // 'i'
+        /* 6A */ '\u0930',   // 'j'
+        /* 6B */ '\u0915',   // 'k'
+        /* 6C */ '\u0924',   // 'l'
+        /* 6D */ '\u0938',   // 'm'
+        /* 6E */ '\u0932',   // 'n'
+        /* 6F */ '\u0926',   // 'o'
+        /* 70 */ '\u091C',   // 'p'
+        /* 71 */ '\u094C',   // 'q'
+        /* 72 */ '\u0940',   // 'r'
+        /* 73 */ '\u0947',   // 's'
+        /* 74 */ '\u0942',   // 't'
+        /* 75 */ '\u0939',   // 'u'
+        /* 76 */ '\u0928',   // 'v'
+        /* 77 */ '\u0948',   // 'w'
+        /* 78 */ '\u0902',   // 'x'
+        /* 79 */ '\u092C',   // 'y'
+        /* 7A */ '\u0946',   // 'z'
+        /* 7B */ '\u0922',   // '{'
+        /* 7C */ '\u0911',   // '|'
+        /* 7D */ '\u091E',   // '}'
+        /* 7E */ '\u0912',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+    
+        // the character substitutions for the meta characters.
+        char[] RA_SUB = {'\u094D', '\u0930'};
+        char[] RA_SUP = {'\u0930', '\u094D'};
+        char[] CONJ_JA_NYA = {'\u091C', '\u094D', '\u091E'};
+        char[] CONJ_TA_RA = {'\u0924', '\u094D', '\u0930'};
+        char[] CONJ_KA_SSA = {'\u0915', '\u094D', '\u0937'};
+        char[] CONJ_SHA_RA = {'\u0936', '\u094D', '\u0930'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+
+        // The following characters followed by Nukta should be replaced
+        // by the corresponding character as defined in ISCII91
+        char SIGN_CANDRABINDU      = '\u0901';
+        char LETTER_I              = '\u0907';
+        char LETTER_II             = '\u0908';
+        char LETTER_VOCALIC_R      = '\u090B';
+        char LETTER_KA             = '\u0915';
+        char LETTER_KHA            = '\u0916';
+        char LETTER_GA             = '\u0917';
+        char LETTER_JA             = '\u091C';
+        char LETTER_DDA            = '\u0921';
+        char LETTER_DDHA           = '\u0922';
+        char LETTER_PHA            = '\u092B';
+        char VOWEL_SIGN_I          = '\u093F';
+        char VOWEL_SIGN_II         = '\u0940';
+        char VOWEL_SIGN_VOCALIC_R  = '\u0943';
+        char DANDA                 = '\u0964';
+
+        // The following characters replace the above characters followed by Nukta. These
+        // are defined in one to one correspondence order.
+        char SIGN_OM               = '\u0950';
+        char LETTER_VOCALIC_L      = '\u090C';
+        char LETTER_VOCALIC_LL     = '\u0961';
+        char LETTER_VOCALIC_RR     = '\u0960';
+        char LETTER_QA             = '\u0958';
+        char LETTER_KHHA           = '\u0959';
+        char LETTER_GHHA           = '\u095A';
+        char LETTER_ZA             = '\u095B';
+        char LETTER_DDDHA          = '\u095C';
+        char LETTER_RHA            = '\u095D';
+        char LETTER_FA             = '\u095E';
+        char VOWEL_SIGN_VOCALIC_L  = '\u0962';
+        char VOWEL_SIGN_VOCALIC_LL = '\u0963';
+        char VOWEL_SIGN_VOCALIC_RR = '\u0944';
+        char SIGN_AVAGRAHA         = '\u093D';
+
+        joinWithNukta = new char[] {
+        SIGN_CANDRABINDU,
+        LETTER_I,
+        LETTER_II,
+        LETTER_VOCALIC_R ,
+        LETTER_KA,
+        LETTER_KHA,
+        LETTER_GA,
+        LETTER_JA,
+        LETTER_DDA,
+        LETTER_DDHA,
+        LETTER_PHA,
+        VOWEL_SIGN_I,
+        VOWEL_SIGN_II,
+        VOWEL_SIGN_VOCALIC_R,
+        DANDA
+        };
+    
+        nuktaForm = new char[] {
+        SIGN_OM,
+        LETTER_VOCALIC_L,
+        LETTER_VOCALIC_LL,
+        LETTER_VOCALIC_RR,
+        LETTER_QA,
+        LETTER_KHHA,
+        LETTER_GHHA,
+        LETTER_ZA,
+        LETTER_DDDHA,
+        LETTER_RHA,
+        LETTER_FA,
+        VOWEL_SIGN_VOCALIC_L,
+        VOWEL_SIGN_VOCALIC_LL,
+        VOWEL_SIGN_VOCALIC_RR,
+        SIGN_AVAGRAHA
+        };
+        }
+
+        return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties b/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties
new file mode 100644
index 0000000..40e5b1f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties
@@ -0,0 +1,18 @@
+#
+#*******************************************************************************
+#* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#
+# Default Input method display names for Indic input methods
+#
+
+DisplayName.Bengali     = Bengali Input Method
+DisplayName.Devanagari  = Devanagari Input Method
+DisplayName.Gujarati    = Gujarati Input Method
+DisplayName.Gurmukhi    = Gurmukhi Input Method
+DisplayName.Kannada     = Kannada Input Method
+DisplayName.Malayalam   = Malayalam Input Method
+DisplayName.Oriya       = Oriya Input Method
+DisplayName.Tamil       = Tamil Input Method
+DisplayName.Telugu      = Telugu Input Method
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java
new file mode 100644
index 0000000..b031e78
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java
@@ -0,0 +1,171 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class GujaratiInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale GUJARATI = new Locale("gu", "IN");
+
+    public GujaratiInputMethodDescriptor() {
+    super(GUJARATI, "Gujarati");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\u0A8D',   // '!'
+        /* 22 */ '\u0AA0',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFF01',   // '$'
+        /* 25 */ '\uFF02',   // '%'
+        /* 26 */ '\uFF04',   // '&'
+        /* 27 */ '\u0A9F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF05',   // '*'
+        /* 2B */ '\u0A8B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0AAF',   // '/'
+        /* 30 */ '\u0AE6',   // '0'
+        /* 31 */ '\u0AE7',   // '1'
+        /* 32 */ '\u0AE8',   // '2'
+        /* 33 */ '\u0AE9',   // '3'
+        /* 34 */ '\u0AEA',   // '4'
+        /* 35 */ '\u0AEB',   // '5'
+        /* 36 */ '\u0AEC',   // '6'
+        /* 37 */ '\u0AED',   // '7'
+        /* 38 */ '\u0AEE',   // '8'
+        /* 39 */ '\u0AEF',   // '9'
+        /* 3A */ '\u0A9B',   // ':'
+        /* 3B */ '\u0A9A',   // ';'
+        /* 3C */ '\u0AB7',   // '<'
+        /* 3D */ '\u0AC3',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda)
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\u0AC5',   // '@'
+        /* 41 */ '\u0A93',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u0AA3',   // 'C'
+        /* 44 */ '\u0A85',   // 'D'
+        /* 45 */ '\u0A86',   // 'E'
+        /* 46 */ '\u0A87',   // 'F'
+        /* 47 */ '\u0A89',   // 'G'
+        /* 48 */ '\u0AAB',   // 'H'
+        /* 49 */ '\u0A98',   // 'I'
+        /* 4A */ '\uFFFF',   // 'J'
+        /* 4B */ '\u0A96',   // 'K'
+        /* 4C */ '\u0AA5',   // 'L'
+        /* 4D */ '\u0AB6',   // 'M'
+        /* 4E */ '\u0AB3',   // 'N'
+        /* 4F */ '\u0AA7',   // 'O'
+        /* 50 */ '\u0A9D',   // 'P'
+        /* 51 */ '\u0A94',   // 'Q'
+        /* 52 */ '\u0A88',   // 'R'
+        /* 53 */ '\u0A8F',   // 'S'
+        /* 54 */ '\u0A8A',   // 'T'
+        /* 55 */ '\u0A99',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0A90',   // 'W'
+        /* 58 */ '\u0A81',   // 'X'
+        /* 59 */ '\u0AAD',   // 'Y'
+        /* 5A */ '\uFFFF',   // 'Z'
+        /* 5B */ '\u0AA1',   // '['
+        /* 5C */ '\u0AC9',   // '\'
+        /* 5D */ '\u0ABC',   // ']'
+        /* 5E */ '\uFF03',   // '^'
+        /* 5F */ '\u0A83',   // '_'
+        /* 60 */ '\uFFFF',   // '`'
+        /* 61 */ '\u0ACB',   // 'a'
+        /* 62 */ '\u0AB5',   // 'b'
+        /* 63 */ '\u0AAE',   // 'c'
+        /* 64 */ '\u0ACD',   // 'd'
+        /* 65 */ '\u0ABE',   // 'e'
+        /* 66 */ '\u0ABF',   // 'f'
+        /* 67 */ '\u0AC1',   // 'g'
+        /* 68 */ '\u0AAA',   // 'h'
+        /* 69 */ '\u0A97',   // 'i'
+        /* 6A */ '\u0AB0',   // 'j'
+        /* 6B */ '\u0A95',   // 'k'
+        /* 6C */ '\u0AA4',   // 'l'
+        /* 6D */ '\u0AB8',   // 'm'
+        /* 6E */ '\u0AB2',   // 'n'
+        /* 6F */ '\u0AA6',   // 'o'
+        /* 70 */ '\u0A9C',   // 'p'
+        /* 71 */ '\u0ACC',   // 'q'
+        /* 72 */ '\u0AC0',   // 'r'
+        /* 73 */ '\u0AC7',   // 's'
+        /* 74 */ '\u0AC2',   // 't'
+        /* 75 */ '\u0AB9',   // 'u'
+        /* 76 */ '\u0AA8',   // 'v'
+        /* 77 */ '\u0AC8',   // 'w'
+        /* 78 */ '\u0A82',   // 'x'
+        /* 79 */ '\u0AAC',   // 'y'
+        /* 7A */ '\uFFFF',   // 'z'
+        /* 7B */ '\u0AA2',   // '{'
+        /* 7C */ '\u0A91',   // '|'
+        /* 7D */ '\u0A9E',   // '}'
+        /* 7E */ '\uFFFF',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0ACD', '\u0AB0'};
+        char[] RA_SUP = {'\u0AB0', '\u0ACD'};
+        char[] CONJ_JA_NYA = {'\u0A9C', '\u0ACD', '\u0A9E'};
+        char[] CONJ_TA_RA = {'\u0AA4', '\u0ACD', '\u0AB0'};
+        char[] CONJ_KA_SSA = {'\u0A95', '\u0ACD', '\u0AB7'};
+        char[] CONJ_SHA_RA = {'\u0AB6', '\u0ACD', '\u0AB0'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java
new file mode 100644
index 0000000..910b3ba
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java
@@ -0,0 +1,202 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class GurmukhiInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale GURMUKHI = new Locale("pa", "IN"); // pa = Punjabi
+
+    public GurmukhiInputMethodDescriptor() {
+    super(GURMUKHI, "Gurmukhi"); 
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    private static char[] joinWithNukta;
+    private static char[] nuktaForm;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\u0A0D',   // '!'
+        /* 22 */ '\u0A20',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFFFF',   // '%'
+        /* 26 */ '\uFFFF',   // '&'
+        /* 27 */ '\u0A1F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFFFF',   // '*'
+        /* 2B */ '\u0A0B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0A2F',   // '/'
+        /* 30 */ '\u0A66',   // '0'
+        /* 31 */ '\u0A67',   // '1'
+        /* 32 */ '\u0A68',   // '2'
+        /* 33 */ '\u0A69',   // '3'
+        /* 34 */ '\u0A6A',   // '4'
+        /* 35 */ '\u0A6B',   // '5'
+        /* 36 */ '\u0A6C',   // '6'
+        /* 37 */ '\u0A6D',   // '7'
+        /* 38 */ '\u0A6E',   // '8'
+        /* 39 */ '\u0A6F',   // '9'
+        /* 3A */ '\u0A1B',   // ':'
+        /* 3B */ '\u0A1A',   // ';'
+        /* 3C */ '\u0A37',   // '<'
+        /* 3D */ '\u0A43',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda)
+        /* 3F */ '\u0A5F',   // '?'
+        /* 40 */ '\u0A45',   // '@'
+        /* 41 */ '\u0A13',   // 'A'
+        /* 42 */ '\u0A34',   // 'B'
+        /* 43 */ '\u0A23',   // 'C'
+        /* 44 */ '\u0A05',   // 'D'
+        /* 45 */ '\u0A06',   // 'E'
+        /* 46 */ '\u0A07',   // 'F'
+        /* 47 */ '\u0A09',   // 'G'
+        /* 48 */ '\u0A2B',   // 'H'
+        /* 49 */ '\u0A18',   // 'I'
+        /* 4A */ '\u0A31',   // 'J'
+        /* 4B */ '\u0A16',   // 'K'
+        /* 4C */ '\u0A25',   // 'L'
+        /* 4D */ '\u0A36',   // 'M'
+        /* 4E */ '\u0A33',   // 'N'
+        /* 4F */ '\u0A27',   // 'O'
+        /* 50 */ '\u0A1D',   // 'P'
+        /* 51 */ '\u0A14',   // 'Q'
+        /* 52 */ '\u0A08',   // 'R'
+        /* 53 */ '\u0A0F',   // 'S'
+        /* 54 */ '\u0A0A',   // 'T'
+        /* 55 */ '\u0A19',   // 'U'
+        /* 56 */ '\u0A29',   // 'V'
+        /* 57 */ '\u0A10',   // 'W'
+        /* 58 */ '\u0A01',   // 'X'
+        /* 59 */ '\u0A2D',   // 'Y'
+        /* 5A */ '\u0A0E',   // 'Z'
+        /* 5B */ '\u0A21',   // '['
+        /* 5C */ '\u0A49',   // '\'
+        /* 5D */ '\u0A3C',   // ']'
+        /* 5E */ '\uFFFF',   // '^'
+        /* 5F */ '\u0A03',   // '_'
+        /* 60 */ '\u0A4A',   // '`'
+        /* 61 */ '\u0A4B',   // 'a'
+        /* 62 */ '\u0A35',   // 'b'
+        /* 63 */ '\u0A2E',   // 'c'
+        /* 64 */ '\u0A4D',   // 'd'
+        /* 65 */ '\u0A3E',   // 'e'
+        /* 66 */ '\u0A3F',   // 'f'
+        /* 67 */ '\u0A41',   // 'g'
+        /* 68 */ '\u0A2A',   // 'h'
+        /* 69 */ '\u0A17',   // 'i'
+        /* 6A */ '\u0A30',   // 'j'
+        /* 6B */ '\u0A15',   // 'k'
+        /* 6C */ '\u0A24',   // 'l'
+        /* 6D */ '\u0A38',   // 'm'
+        /* 6E */ '\u0A32',   // 'n'
+        /* 6F */ '\u0A26',   // 'o'
+        /* 70 */ '\u0A1C',   // 'p'
+        /* 71 */ '\u0A4C',   // 'q'
+        /* 72 */ '\u0A40',   // 'r'
+        /* 73 */ '\u0A47',   // 's'
+        /* 74 */ '\u0A42',   // 't'
+        /* 75 */ '\u0A39',   // 'u'
+        /* 76 */ '\u0A28',   // 'v'
+        /* 77 */ '\u0A48',   // 'w'
+        /* 78 */ '\u0A70',   // 'x' (Gurmukhi TIPPI rather than BINDI)
+        /* 79 */ '\u0A2C',   // 'y'
+        /* 7A */ '\u0A46',   // 'z'
+        /* 7B */ '\u0A22',   // '{'
+        /* 7C */ '\u0A11',   // '|'
+        /* 7D */ '\u0A1E',   // '}'
+        /* 7E */ '\u0A12',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0A4D', '\u0A30'};
+
+        substitutionTable = new char[][] {
+        RA_SUB
+        };
+
+        // The following characters followed by Nukta should be replaced
+        // by the corresponding character as defined in ISCII91
+        char LETTER_KHA            = '\u0A16';
+        char LETTER_GA             = '\u0A17';
+        char LETTER_JA             = '\u0A1C';
+        char LETTER_DDA            = '\u0A21';
+        char LETTER_PHA            = '\u0A2B';
+
+        // The following characters replace the above characters followed by Nukta. These
+        // are defined in one to one correspondence order.
+        // NOTE: the inscript keyboard doc. lists a KA + NUKTA and a DDHA + NUKTA
+        // neither of which seem to have Unicode code points...
+        char LETTER_KHHA           = '\u0A59';
+        char LETTER_GHHA           = '\u0A5A';
+        char LETTER_ZA             = '\u0A5B';
+        char LETTER_RRA            = '\u0A5C';
+        char LETTER_FA             = '\u0A5E';
+
+        joinWithNukta = new char[] {
+        LETTER_KHA,
+        LETTER_GA,
+        LETTER_JA,
+        LETTER_DDA,
+        LETTER_PHA
+        };
+    
+        nuktaForm = new char[] {
+        LETTER_KHHA,
+        LETTER_GHHA,
+        LETTER_ZA,
+        LETTER_RRA,
+        LETTER_FA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java
new file mode 100644
index 0000000..4c380b4
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java
@@ -0,0 +1,57 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.awt.Image;
+import java.awt.im.spi.InputMethod;
+import java.awt.im.spi.InputMethodDescriptor;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+public abstract class IndicIMDescriptor implements InputMethodDescriptor {
+    private final Locale locale;
+    private final String name;
+
+    protected IndicIMDescriptor(Locale locale, String name) {
+    this.locale = locale;
+    this.name = name;
+    }
+
+    protected abstract IndicInputMethodImpl getImpl();
+
+    public Locale[] getAvailableLocales() {
+        return new Locale[] { locale };
+    }
+
+    public boolean hasDynamicLocaleList() {
+        return false;
+    }
+
+    public synchronized String getInputMethodDisplayName(Locale inputLocale, Locale displayLanguage) {
+    try {
+        ResourceBundle rb = ResourceBundle.getBundle("com.ibm.icu.dev.tool.ime.indic.DisplayNames", 
+                             displayLanguage);
+        return rb.getString("DisplayName." + name);
+    }
+    catch (Throwable t) {
+        return name;
+    }
+    }
+
+    public Image getInputMethodIcon(Locale inputLocale) {
+        return null;
+    }
+
+    public InputMethod createInputMethod() throws Exception {
+        return new IndicInputMethod(locale, getImpl());
+    }
+
+    public String toString() {
+    return name;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java b/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java
new file mode 100644
index 0000000..333aa21
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java
@@ -0,0 +1,92 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.awt.AWTEvent;
+import java.awt.Rectangle;
+import java.awt.event.KeyEvent;
+import java.awt.im.spi.InputMethod;
+import java.awt.im.spi.InputMethodContext;
+import java.lang.Character.Subset;
+import java.util.Locale;
+
+/**
+ * This stub delegates to the simpler IndicInputMethodImpl.
+ */
+class IndicInputMethod implements InputMethod {
+    private IndicInputMethodImpl impl;
+    private Locale locale;
+    
+    IndicInputMethod(Locale theLocale, IndicInputMethodImpl theImplementation) {
+        locale = theLocale;
+        impl = theImplementation;
+    }
+    
+    public void setInputMethodContext(InputMethodContext context) {
+        impl.setInputMethodContext(context);
+    }
+
+    public boolean setLocale(Locale locale) {
+        return locale.getLanguage().equals(this.locale.getLanguage());
+    }
+
+    public Locale getLocale() {
+        return locale;
+    }
+    
+    public void setCharacterSubsets(Subset[] subsets) {
+    }
+
+    public void setCompositionEnabled(boolean enable) {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isCompositionEnabled() {
+        return true;
+    }
+
+    public void reconvert() {
+        throw new UnsupportedOperationException("This input method does not reconvert.");
+    }
+
+    public void dispatchEvent(AWTEvent event) {
+        if (event instanceof KeyEvent) {
+            KeyEvent keyEvent = (KeyEvent) event;
+            if (event.getID() == KeyEvent.KEY_TYPED) {
+                impl.handleKeyTyped(keyEvent);
+            }
+
+        }
+    }
+
+    public void notifyClientWindowChange(Rectangle bounds) {
+    }
+
+    public void activate() {
+    }
+
+    public void deactivate(boolean isTemporary) {
+    }
+
+    public void hideWindows() {
+    }
+  
+    public void removeNotify() {
+    }
+
+    public void endComposition() {
+        impl.endComposition();
+    }
+
+    public void dispose() {
+    }
+
+    public Object getControlObject() {
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java b/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java
new file mode 100644
index 0000000..1ceb6d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java
@@ -0,0 +1,439 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.awt.im.spi.InputMethodContext;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.InputMethodEvent;
+import java.awt.font.TextAttribute;
+import java.awt.font.TextHitInfo;
+import java.text.AttributedCharacterIterator;
+import java.util.Hashtable;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+class IndicInputMethodImpl {
+    
+    protected char[] KBD_MAP;
+    
+    private static final char SUBSTITUTION_BASE = '\uff00';
+
+    // Indexed by map value - SUBSTITUTION_BASE
+    protected char[][] SUBSTITUTION_TABLE;
+
+    // Invalid character.
+    private static final char INVALID_CHAR              = '\uffff';
+
+    // Unmapped versions of some interesting characters.
+    private static final char KEY_SIGN_VIRAMA           = '\u0064'; // or just 'd'??
+    private static final char KEY_SIGN_NUKTA            = '\u005d';  // or just ']'??
+
+    // Two succeeding viramas are replaced by one virama and one ZWNJ.
+    // Viram followed by Nukta is replaced by one VIRAMA and one ZWJ
+    private static final char ZWJ                       = '\u200d';
+    private static final char ZWNJ                      = '\u200c';
+    
+    // Backspace
+    private static final char BACKSPACE                 = '\u0008';
+
+    // Sorted list of characters which can be followed by Nukta
+    protected char[] JOIN_WITH_NUKTA;
+    
+    // Nukta form of the above characters
+    protected char[] NUKTA_FORM;
+        
+    //private int log2;
+    private int power;
+    private int extra;
+
+    // cached TextHitInfo. Only one type of TextHitInfo is required.
+    private static final TextHitInfo ZERO_TRAILING_HIT_INFO = TextHitInfo.trailing(0);
+
+    /**
+     * Returns the index of the given character in the JOIN_WITH_NUKTA array.
+     * If character is not found, -1 is returned.
+     */
+    private int nuktaIndex(char ch) {
+        if (JOIN_WITH_NUKTA == null) {
+            return -1;
+        }
+        
+        int probe = power;
+        int index = 0;
+
+        if (JOIN_WITH_NUKTA[extra] <= ch) {
+            index = extra;
+        }
+         
+        while (probe > (1 << 0)) {
+            probe >>= 1;
+
+            if (JOIN_WITH_NUKTA[index + probe] <= ch) {
+                index += probe;
+            }
+        }
+
+        if (JOIN_WITH_NUKTA[index] != ch) {
+            index = -1;
+        }
+
+        return index;
+    }
+    
+    /**
+     * Returns the equivalent character for hindi locale.
+     * @param originalChar The original character.
+     */
+    private char getMappedChar(char originalChar) {
+        if (originalChar <= KBD_MAP.length) {
+            return KBD_MAP[originalChar];
+        }
+        
+        return originalChar;
+    }
+    
+    // Array used to hold the text to be sent.
+    // If the last character was not committed it is stored in text[0].
+    // The variable totalChars give an indication of whether the last
+    // character was committed or not. If at any time ( but not within a
+    // a call to dispatchEvent ) totalChars is not equal to 0 ( it can
+    // only be 1 otherwise ) the last character was not committed.
+    private char [] text = new char[4];
+
+    // this is always 0 before and after call to dispatchEvent. This character assumes
+    // significance only within a call to dispatchEvent.
+    private int committedChars = 0;// number of committed characters
+
+    // the total valid characters in variable text currently.
+    private int totalChars = 0;//number of total characters ( committed + composed )
+
+    private boolean lastCharWasVirama = false;
+    
+    private InputMethodContext context;
+
+    //
+    // Finds the high bit by binary searching
+    // through the bits in n.
+    //
+    private static byte highBit(int n) {
+        if (n <= 0) {
+            return -32;
+        }
+
+        byte bit = 0;
+
+        if (n >= 1 << 16) {
+            n >>= 16;
+            bit += 16;
+        }
+
+        if (n >= 1 << 8) {
+            n >>= 8;
+            bit += 8;
+        }
+
+        if (n >= 1 << 4) {
+            n >>= 4;
+            bit += 4;
+        }
+
+        if (n >= 1 << 2) {
+            n >>= 2;
+            bit += 2;
+        }
+
+        if (n >= 1 << 1) {
+            n >>= 1;
+            bit += 1;
+        }
+
+        return bit;
+    }
+
+    IndicInputMethodImpl(char[] keyboardMap, char[] joinWithNukta, char[] nuktaForm, 
+                         char[][] substitutionTable) {
+        KBD_MAP = keyboardMap;
+        JOIN_WITH_NUKTA = joinWithNukta;
+        NUKTA_FORM = nuktaForm;
+        SUBSTITUTION_TABLE = substitutionTable;
+        
+        if (JOIN_WITH_NUKTA != null) {
+            int log2 = highBit(JOIN_WITH_NUKTA.length);
+            
+            power = 1 << log2;
+            extra = JOIN_WITH_NUKTA.length - power;
+        } else {
+            power = extra = 0;
+        }
+        
+    }
+    
+    void setInputMethodContext(InputMethodContext context) {
+        this.context = context;
+    }
+    
+    void handleKeyTyped(KeyEvent kevent) {
+        char keyChar = kevent.getKeyChar();
+        char currentChar = getMappedChar(keyChar);
+        
+        // The Explicit and Soft Halanta case.
+        if ( lastCharWasVirama ) {
+            switch (keyChar) {
+            case KEY_SIGN_NUKTA:
+                currentChar = ZWJ;
+                break;
+            case KEY_SIGN_VIRAMA:
+                currentChar = ZWNJ;
+                break;
+            default:
+            }//endSwitch
+        }//endif
+
+        if (currentChar == INVALID_CHAR) {
+            kevent.consume();
+            return;
+        }
+
+        if (currentChar == BACKSPACE) {
+            lastCharWasVirama = false;
+            
+            if (totalChars > 0) {
+                totalChars = committedChars = 0;
+            } else {
+                return;
+            }                            
+        }
+        else if (keyChar == KEY_SIGN_NUKTA) {
+            int nuktaIndex = nuktaIndex(text[0]);
+            
+            if (nuktaIndex != -1) {
+                text[0] = NUKTA_FORM[nuktaIndex];
+            } else {
+                // the last character was committed, commit just Nukta.
+                // Note : the lastChar must have been committed if it is not one of
+                // the characters which combine with nukta.
+                // the state must be totalChars = committedChars = 0;
+                text[totalChars++] = currentChar;
+            }
+            
+            committedChars += 1;
+        }
+        else {
+            int nuktaIndex = nuktaIndex(currentChar);
+            
+            if (nuktaIndex != -1) {
+                // Commit everything but currentChar
+                text[totalChars++] = currentChar;
+                committedChars = totalChars-1;
+            } else {
+                if (currentChar >= SUBSTITUTION_BASE) {
+                    char[] sub = SUBSTITUTION_TABLE[currentChar - SUBSTITUTION_BASE];
+                    
+                    System.arraycopy(sub, 0, text, totalChars, sub.length);
+                    totalChars += sub.length;
+                } else {
+                    text[totalChars++] = currentChar;
+                }
+                
+                committedChars = totalChars;
+            }
+        }
+        
+        ACIText aText = new ACIText( text, 0, totalChars, committedChars );
+        int composedCharLength = totalChars - committedChars;
+        TextHitInfo caret=null,visiblePosition=null;
+        switch( composedCharLength ) {
+            case 0:
+                break;
+            case 1:
+                visiblePosition = caret = ZERO_TRAILING_HIT_INFO;
+                break;
+            default:
+                // The code should not reach here. There is no case where there can be
+                // more than one character pending.
+        }
+                        
+        context.dispatchInputMethodEvent(InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
+                                         aText,
+                                         committedChars,
+                                         caret,
+                                         visiblePosition);
+                                        
+        if (totalChars == 0) {
+            text[0] = INVALID_CHAR;
+        } else {
+            text[0] = text[totalChars - 1];// make text[0] hold the last character
+        }
+        
+        lastCharWasVirama =  keyChar == KEY_SIGN_VIRAMA && !lastCharWasVirama;
+                    
+        totalChars -= committedChars;
+        committedChars = 0;
+        // state now text[0] = last character
+        // totalChars = ( last character committed )? 0 : 1;
+        // committedChars = 0;
+
+        kevent.consume();// prevent client from getting this event.
+    }
+
+    void endComposition() {
+        if( totalChars != 0 ) {// if some character is not committed.
+            ACIText aText = new ACIText( text, 0, totalChars, totalChars );
+            context.dispatchInputMethodEvent( InputMethodEvent.INPUT_METHOD_TEXT_CHANGED,
+                                aText, totalChars, null, null );
+            totalChars = committedChars = 0;
+            text[0] = INVALID_CHAR;
+            lastCharWasVirama = false;
+        }
+    }
+    
+    // custom AttributedCharacterIterator -- much lightweight since currently there is no
+    // attribute defined on the text being generated by the input method.
+    private class ACIText implements AttributedCharacterIterator {
+        private char [] text = null;
+        private int committed = 0;
+        private int index = 0;
+
+        ACIText( char [] chArray, int offset, int length, int committed ) {
+            this.text = new char[length];
+            this.committed = committed;
+            System.arraycopy( chArray, offset, text, 0, length );
+        }
+
+        // CharacterIterator methods.
+        public char first() {
+            return _setIndex( 0 );
+        }
+
+        public char last() {
+            if( text.length == 0 ) {
+                return _setIndex( text.length );
+            }
+            return _setIndex( text.length - 1 );
+        }
+
+        public char current() {
+            if( index == text.length )
+                return DONE;
+            return text[index];
+        }
+
+        public char next() {
+            if( index == text.length ) {
+                return DONE;
+            }
+            return _setIndex( index + 1 );
+        }
+
+        public char previous() {
+            if( index == 0 )
+                return DONE;
+            return _setIndex( index - 1 );
+        }
+
+        public char setIndex(int position) {
+            if( position < 0 || position > text.length ) {
+                throw new IllegalArgumentException();
+            }
+            return _setIndex( position );
+        }
+
+        public int getBeginIndex() {
+            return 0;
+        }
+
+        public int getEndIndex() {
+            return text.length;
+        }
+
+        public int getIndex() {
+            return index;
+        }
+
+        public Object clone() {
+            try {
+                ACIText clone = (ACIText) super.clone();
+                return clone;
+            } catch (CloneNotSupportedException e) {
+                throw new IllegalStateException();
+            }
+        }
+
+        // AttributedCharacterIterator methods.
+        public int getRunStart() {
+            return index >= committed ? committed : 0;
+        }
+
+        public int getRunStart(AttributedCharacterIterator.Attribute attribute) {
+            return (index >= committed &&
+                attribute == TextAttribute.INPUT_METHOD_UNDERLINE) ? committed : 0;
+        }
+
+        public int getRunStart(Set attributes) {
+            return (index >= committed &&
+                    attributes.contains(TextAttribute.INPUT_METHOD_UNDERLINE)) ? committed : 0;
+        }
+
+        public int getRunLimit() {
+            return index < committed ? committed : text.length;
+        }
+
+        public int getRunLimit(AttributedCharacterIterator.Attribute attribute) {
+            return (index < committed && 
+                    attribute == TextAttribute.INPUT_METHOD_UNDERLINE) ? committed : text.length;
+        }
+
+        public int getRunLimit(Set attributes) {
+            return (index < committed &&
+                    attributes.contains(TextAttribute.INPUT_METHOD_UNDERLINE)) ? committed : text.length;
+        }
+
+        public Map getAttributes() {
+            Hashtable result = new Hashtable();
+            if (index >= committed && committed < text.length) {
+                result.put(TextAttribute.INPUT_METHOD_UNDERLINE, 
+                           TextAttribute.UNDERLINE_LOW_ONE_PIXEL);
+            }
+            return result;
+        }
+
+        public Object getAttribute(AttributedCharacterIterator.Attribute attribute) {
+            if (index >= committed && 
+                committed < text.length &&
+                attribute == TextAttribute.INPUT_METHOD_UNDERLINE) {
+
+                return TextAttribute.UNDERLINE_LOW_ONE_PIXEL;
+            }
+            return null;
+        }
+
+        public Set getAllAttributeKeys() {
+            HashSet result = new HashSet();
+            if (committed < text.length) {
+                result.add(TextAttribute.INPUT_METHOD_UNDERLINE);
+            }
+            return result;
+        }
+
+        // private methods
+
+        /**
+         * This is always called with valid i ( 0 < i <= text.length )
+         */
+        private char _setIndex( int i ) {
+            index = i;
+            if( i == text.length ) {
+                return DONE;
+            }
+            return text[i];
+        }
+
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java
new file mode 100644
index 0000000..8d81126
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class KannadaInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale KANNADA = new Locale("kn", "IN");
+
+    public KannadaInputMethodDescriptor() {
+    super(KANNADA, "Kannada");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u0CA0',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFF01',   // '%'
+        /* 26 */ '\uFF03',   // '&'
+        /* 27 */ '\u0C9F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF04',   // '*'
+        /* 2B */ '\u0C8B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0CAF',   // '/'
+        /* 30 */ '\u0CE6',   // '0'
+        /* 31 */ '\u0CE7',   // '1'
+        /* 32 */ '\u0CE8',   // '2'
+        /* 33 */ '\u0CE9',   // '3'
+        /* 34 */ '\u0CEA',   // '4'
+        /* 35 */ '\u0CEB',   // '5'
+        /* 36 */ '\u0CEC',   // '6'
+        /* 37 */ '\u0CED',   // '7'
+        /* 38 */ '\u0CEE',   // '8'
+        /* 39 */ '\u0CEF',   // '9'
+        /* 3A */ '\u0C9B',   // ':'
+        /* 3B */ '\u0C9A',   // ';'
+        /* 3C */ '\u0CB7',   // '<'
+        /* 3D */ '\u0CC3',   // '='
+        /* 3E */ '\uFFFF',   // '>'
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0C93',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u0CA3',   // 'C'
+        /* 44 */ '\u0C85',   // 'D'
+        /* 45 */ '\u0C86',   // 'E'
+        /* 46 */ '\u0C87',   // 'F'
+        /* 47 */ '\u0C89',   // 'G'
+        /* 48 */ '\u0CAB',   // 'H'
+        /* 49 */ '\u0C98',   // 'I'
+        /* 4A */ '\u0CB1',   // 'J'
+        /* 4B */ '\u0C96',   // 'K'
+        /* 4C */ '\u0CA5',   // 'L'
+        /* 4D */ '\u0CB6',   // 'M'
+        /* 4E */ '\u0CB3',   // 'N'
+        /* 4F */ '\u0CA7',   // 'O'
+        /* 50 */ '\u0C9D',   // 'P'
+        /* 51 */ '\u0C94',   // 'Q'
+        /* 52 */ '\u0C88',   // 'R'
+        /* 53 */ '\u0C8F',   // 'S'
+        /* 54 */ '\u0C8A',   // 'T'
+        /* 55 */ '\u0C99',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0C90',   // 'W'
+        /* 58 */ '\uFFFF',   // 'X'
+        /* 59 */ '\u0CAD',   // 'Y'
+        /* 5A */ '\u0C8E',   // 'Z'
+        /* 5B */ '\u0CA1',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\uFFFF',   // ']'  (danda - not shown on INSCRIPT chart)
+        /* 5E */ '\uFF02',   // '^'
+        /* 5F */ '\u0C83',   // '_'
+        /* 60 */ '\u0CCA',   // '`'
+        /* 61 */ '\u0CCB',   // 'a'
+        /* 62 */ '\u0CB5',   // 'b'
+        /* 63 */ '\u0CAE',   // 'c'
+        /* 64 */ '\u0CCD',   // 'd'
+        /* 65 */ '\u0CBE',   // 'e'
+        /* 66 */ '\u0CBF',   // 'f'
+        /* 67 */ '\u0CC1',   // 'g'
+        /* 68 */ '\u0CAA',   // 'h'
+        /* 69 */ '\u0C97',   // 'i'
+        /* 6A */ '\u0CB0',   // 'j'
+        /* 6B */ '\u0C95',   // 'k'
+        /* 6C */ '\u0CA4',   // 'l'
+        /* 6D */ '\u0CB8',   // 'm'
+        /* 6E */ '\u0CB2',   // 'n'
+        /* 6F */ '\u0CA6',   // 'o'
+        /* 70 */ '\u0C9C',   // 'p'
+        /* 71 */ '\u0CCC',   // 'q'
+        /* 72 */ '\u0CC0',   // 'r'
+        /* 73 */ '\u0CC7',   // 's'
+        /* 74 */ '\u0CC2',   // 't'
+        /* 75 */ '\u0CB9',   // 'u'
+        /* 76 */ '\u0CA8',   // 'v'
+        /* 77 */ '\u0CC8',   // 'w'
+        /* 78 */ '\u0C82',   // 'x'
+        /* 79 */ '\u0CAC',   // 'y'
+        /* 7A */ '\u0CC6',   // 'z'
+        /* 7B */ '\u0CA2',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0C9E',   // '}'
+        /* 7E */ '\u0C92',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0CCD', '\u0CB0'};
+        char[] CONJ_JA_NYA = {'\u0C9C', '\u0CCD', '\u0C9E'};
+        char[] CONJ_TA_RA = {'\u0CA4', '\u0CCD', '\u0CB0'};
+        char[] CONJ_KA_SSA = {'\u0C95', '\u0CCD', '\u0CB7'};
+        char[] CONJ_SHA_RA = {'\u0CB6', '\u0CCD', '\u0CB0'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java
new file mode 100644
index 0000000..9d9342f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java
@@ -0,0 +1,166 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class MalayalamInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale MALAYALAM = new Locale("ml", "IN");
+
+    public MalayalamInputMethodDescriptor() {
+    super(MALAYALAM, "Malayalam");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u0D20',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFFFF',   // '%'
+        /* 26 */ '\uFFFF',   // '&'
+        /* 27 */ '\u0D1F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF01',   // '*'
+        /* 2B */ '\u0D0B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0D2F',   // '/'
+        /* 30 */ '\u0D66',   // '0'
+        /* 31 */ '\u0D67',   // '1'
+        /* 32 */ '\u0D68',   // '2'
+        /* 33 */ '\u0D69',   // '3'
+        /* 34 */ '\u0D6A',   // '4'
+        /* 35 */ '\u0D6B',   // '5'
+        /* 36 */ '\u0D6C',   // '6'
+        /* 37 */ '\u0D6D',   // '7'
+        /* 38 */ '\u0D6E',   // '8'
+        /* 39 */ '\u0D6F',   // '9'
+        /* 3A */ '\u0D1B',   // ':'
+        /* 3B */ '\u0D1A',   // ';'
+        /* 3C */ '\u0D37',   // '<'
+        /* 3D */ '\u0D43',   // '='
+        /* 3E */ '\uFFFF',   // '>'
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0D13',   // 'A'
+        /* 42 */ '\u0D34',   // 'B'
+        /* 43 */ '\u0D23',   // 'C'
+        /* 44 */ '\u0D05',   // 'D'
+        /* 45 */ '\u0D06',   // 'E'
+        /* 46 */ '\u0D07',   // 'F'
+        /* 47 */ '\u0D09',   // 'G'
+        /* 48 */ '\u0D2B',   // 'H'
+        /* 49 */ '\u0D18',   // 'I'
+        /* 4A */ '\u0D31',   // 'J'
+        /* 4B */ '\u0D16',   // 'K'
+        /* 4C */ '\u0D25',   // 'L'
+        /* 4D */ '\u0D36',   // 'M'
+        /* 4E */ '\u0D33',   // 'N'
+        /* 4F */ '\u0D27',   // 'O'
+        /* 50 */ '\u0D1D',   // 'P'
+        /* 51 */ '\u0D14',   // 'Q'
+        /* 52 */ '\u0D08',   // 'R'
+        /* 53 */ '\u0D0F',   // 'S'
+        /* 54 */ '\u0D0A',   // 'T'
+        /* 55 */ '\u0D19',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0D10',   // 'W'
+        /* 58 */ '\uFFFF',   // 'X'
+        /* 59 */ '\u0D2D',   // 'Y'
+        /* 5A */ '\u0D0E',   // 'Z'
+        /* 5B */ '\u0D21',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\uFFFF',   // ']' (nukta - no Unicode code value)
+        /* 5E */ '\uFFFF',   // '^'
+        /* 5F */ '\u0D03',   // '_'
+        /* 60 */ '\u0D4A',   // '`'
+        /* 61 */ '\u0D4B',   // 'a'
+        /* 62 */ '\u0D35',   // 'b'
+        /* 63 */ '\u0D2E',   // 'c'
+        /* 64 */ '\u0D4D',   // 'd'
+        /* 65 */ '\u0D3E',   // 'e'
+        /* 66 */ '\u0D3F',   // 'f'
+        /* 67 */ '\u0D41',   // 'g'
+        /* 68 */ '\u0D2A',   // 'h'
+        /* 69 */ '\u0D17',   // 'i'
+        /* 6A */ '\u0D30',   // 'j'
+        /* 6B */ '\u0D15',   // 'k'
+        /* 6C */ '\u0D24',   // 'l'
+        /* 6D */ '\u0D38',   // 'm'
+        /* 6E */ '\u0D32',   // 'n'
+        /* 6F */ '\u0D26',   // 'o'
+        /* 70 */ '\u0D1C',   // 'p'
+        /* 71 */ '\u0D4C',   // 'q'
+        /* 72 */ '\u0D40',   // 'r'
+        /* 73 */ '\u0D47',   // 's'
+        /* 74 */ '\u0D42',   // 't'
+        /* 75 */ '\u0D39',   // 'u'
+        /* 76 */ '\u0D28',   // 'v'
+        /* 77 */ '\u0D48',   // 'w'
+        /* 78 */ '\u0D02',   // 'x'
+        /* 79 */ '\u0D2C',   // 'y'
+        /* 7A */ '\u0D46',   // 'z'
+        /* 7B */ '\u0D22',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0D1E',   // '}'
+        /* 7E */ '\u0D12',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0D4D', '\u0D30'};
+        char[] CONJ_KA_SSA = {'\u0D15', '\u0D4D', '\u0D37'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, CONJ_KA_SSA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java
new file mode 100644
index 0000000..3fbaa1e
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java
@@ -0,0 +1,213 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class OriyaInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale ORIYA = new Locale("or", "IN");
+
+    public OriyaInputMethodDescriptor() {
+    super(ORIYA, "Oriya");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+    private static char[] joinWithNukta;
+    private static char[] nuktaForm;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u0B20',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFF01',   // '$'
+        /* 25 */ '\uFF02',   // '%'
+        /* 26 */ '\uFF04',   // '&'
+        /* 27 */ '\u0B1F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF05',   // '*'
+        /* 2B */ '\u0B0B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0B5F',   // '/'
+        /* 30 */ '\u0B66',   // '0'
+        /* 31 */ '\u0B67',   // '1'
+        /* 32 */ '\u0B68',   // '2'
+        /* 33 */ '\u0B69',   // '3'
+        /* 34 */ '\u0B6A',   // '4'
+        /* 35 */ '\u0B6B',   // '5'
+        /* 36 */ '\u0B6C',   // '6'
+        /* 37 */ '\u0B6D',   // '7'
+        /* 38 */ '\u0B6E',   // '8'
+        /* 39 */ '\u0B6F',   // '9'
+        /* 3A */ '\u0B1B',   // ':'
+        /* 3B */ '\u0B1A',   // ';'
+        /* 3C */ '\u0B37',   // '<'
+        /* 3D */ '\u0B43',   // '='
+        /* 3E */ '\u0964',   // '>' (Devanagari danda)
+        /* 3F */ '\u0B2F',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0B13',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u0B23',   // 'C'
+        /* 44 */ '\u0B05',   // 'D'
+        /* 45 */ '\u0B06',   // 'E'
+        /* 46 */ '\u0B07',   // 'F'
+        /* 47 */ '\u0B09',   // 'G'
+        /* 48 */ '\u0B2B',   // 'H'
+        /* 49 */ '\u0B18',   // 'I'
+        /* 4A */ '\uFFFF',   // 'J'
+        /* 4B */ '\u0B16',   // 'K'
+        /* 4C */ '\u0B25',   // 'L'
+        /* 4D */ '\u0B36',   // 'M'
+        /* 4E */ '\u0B33',   // 'N'
+        /* 4F */ '\u0B27',   // 'O'
+        /* 50 */ '\u0B1D',   // 'P'
+        /* 51 */ '\u0B14',   // 'Q'
+        /* 52 */ '\u0B08',   // 'R'
+        /* 53 */ '\u0B0F',   // 'S'
+        /* 54 */ '\u0B0A',   // 'T'
+        /* 55 */ '\u0B19',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0B10',   // 'W'
+        /* 58 */ '\u0B01',   // 'X'
+        /* 59 */ '\u0B2D',   // 'Y'
+        /* 5A */ '\uFFFF',   // 'Z'
+        /* 5B */ '\u0B21',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\u0B3C',   // ']'
+        /* 5E */ '\uFF03',   // '^'
+        /* 5F */ '\u0B03',   // '_'
+        /* 60 */ '\uFFFF',   // '`'
+        /* 61 */ '\u0B4B',   // 'a'
+        /* 62 */ '\u0B2C',   // 'b' (va, but no Unicode code point, used ba instead)
+        /* 63 */ '\u0B2E',   // 'c'
+        /* 64 */ '\u0B4D',   // 'd'
+        /* 65 */ '\u0B3E',   // 'e'
+        /* 66 */ '\u0B3F',   // 'f'
+        /* 67 */ '\u0B41',   // 'g'
+        /* 68 */ '\u0B2A',   // 'h'
+        /* 69 */ '\u0B17',   // 'i'
+        /* 6A */ '\u0B30',   // 'j'
+        /* 6B */ '\u0B15',   // 'k'
+        /* 6C */ '\u0B24',   // 'l'
+        /* 6D */ '\u0B38',   // 'm'
+        /* 6E */ '\u0B32',   // 'n'
+        /* 6F */ '\u0B26',   // 'o'
+        /* 70 */ '\u0B1C',   // 'p'
+        /* 71 */ '\u0B4C',   // 'q'
+        /* 72 */ '\u0B40',   // 'r'
+        /* 73 */ '\u0B47',   // 's'
+        /* 74 */ '\u0B42',   // 't'
+        /* 75 */ '\u0B39',   // 'u'
+        /* 76 */ '\u0B28',   // 'v'
+        /* 77 */ '\u0B48',   // 'w'
+        /* 78 */ '\u0B02',   // 'x'
+        /* 79 */ '\u0B2C',   // 'y'
+        /* 7A */ '\uFFFF',   // 'z'
+        /* 7B */ '\u0B22',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0B1E',   // '}'
+        /* 7E */ '\uFFFF',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0B4D', '\u0B30'};
+        char[] RA_SUP = {'\u0B30', '\u0B4D'};
+        char[] CONJ_JA_NYA = {'\u0B1C', '\u0B4D', '\u0B1E'};
+        char[] CONJ_TA_RA = {'\u0B24', '\u0B4D', '\u0B30'};
+        char[] CONJ_KA_SSA = {'\u0B15', '\u0B4D', '\u0B37'};
+        char[] CONJ_SHA_RA = {'\u0B36', '\u0B4D', '\u0B30'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, RA_SUP, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+
+        // The following characters followed by Nukta should be replaced
+        // by the corresponding character as defined in ISCII91
+        char LETTER_I              = '\u0B07';
+        char LETTER_II             = '\u0B08';
+        char LETTER_VOCALIC_R      = '\u0B0B';
+        char LETTER_DDA            = '\u0B21';
+        char LETTER_DDHA           = '\u0B22';
+        char VOWEL_SIGN_I          = '\u0B3F';
+        char VOWEL_SIGN_II         = '\u0B40';
+
+        // The following characters replace the above characters followed by Nukta. These
+        // are defined in one to one correspondence order.
+        char LETTER_VOCALIC_L      = '\u0B0C';
+        char LETTER_VOCALIC_LL     = '\u0B61';
+        char LETTER_VOCALIC_RR     = '\u0B60';
+        char LETTER_RRA            = '\u0B5C';
+        char LETTER_RHA            = '\u0B5D';
+        char VOWEL_SIGN_VOCALIC_L  = '\u0B62';
+        char VOWEL_SIGN_VOCALIC_LL = '\u0B63';
+
+        joinWithNukta = new char[] {
+        LETTER_VOCALIC_R ,
+        LETTER_I,
+        LETTER_II,
+        LETTER_DDA,
+        LETTER_DDHA,
+        VOWEL_SIGN_I,
+        VOWEL_SIGN_II
+        };
+    
+        nuktaForm = new char[] {
+        LETTER_VOCALIC_RR,
+        LETTER_VOCALIC_L,
+        LETTER_VOCALIC_LL,
+        LETTER_RRA,
+        LETTER_RHA,
+        VOWEL_SIGN_VOCALIC_L,
+        VOWEL_SIGN_VOCALIC_LL
+        };
+    }
+        
+        return new IndicInputMethodImpl(keyboardMap, joinWithNukta, nuktaForm, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java
new file mode 100644
index 0000000..11fa124
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java
@@ -0,0 +1,167 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class TamilInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale TAMIL = new Locale("ta", "IN");
+
+    public TamilInputMethodDescriptor() {
+    super(TAMIL, "Tamil");
+    }
+    
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\uFFFF',   // '"'
+        /* 23 */ '\uFFFF',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFFFF',   // '%'
+        /* 26 */ '\uFF00',   // '&'
+        /* 27 */ '\u0B9F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF01',   // '*'
+        /* 2B */ '\uFFFF',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0BAF',   // '/'
+        /* 30 */ '\u0BE6',   // '0'
+        /* 31 */ '\u0BE7',   // '1'
+        /* 32 */ '\u0BE8',   // '2'
+        /* 33 */ '\u0BE9',   // '3'
+        /* 34 */ '\u0BEA',   // '4'
+        /* 35 */ '\u0BEB',   // '5'
+        /* 36 */ '\u0BEC',   // '6'
+        /* 37 */ '\u0BED',   // '7'
+        /* 38 */ '\u0BEE',   // '8'
+        /* 39 */ '\u0BEF',   // '9'
+        /* 3A */ '\uFFFF',   // ':'
+        /* 3B */ '\u0B9A',   // ';'
+        /* 3C */ '\u0BB7',   // '<'
+        /* 3D */ '\uFFFF',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda)
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0B93',   // 'A'
+        /* 42 */ '\u0BB4',   // 'B'
+        /* 43 */ '\u0BA3',   // 'C'
+        /* 44 */ '\u0B85',   // 'D'
+        /* 45 */ '\u0B86',   // 'E'
+        /* 46 */ '\u0B87',   // 'F'
+        /* 47 */ '\u0B89',   // 'G'
+        /* 48 */ '\uFFFF',   // 'H'
+        /* 49 */ '\uFFFF',   // 'I'
+        /* 4A */ '\u0BB1',   // 'J'
+        /* 4B */ '\uFFFF',   // 'K'
+        /* 4C */ '\uFFFF',   // 'L'
+        /* 4D */ '\uFFFF',   // 'M'
+        /* 4E */ '\u0BB3',   // 'N'
+        /* 4F */ '\uFFFF',   // 'O'
+        /* 50 */ '\uFFFF',   // 'P'
+        /* 51 */ '\u0B94',   // 'Q'
+        /* 52 */ '\u0B88',   // 'R'
+        /* 53 */ '\u0B8F',   // 'S'
+        /* 54 */ '\u0B8A',   // 'T'
+        /* 55 */ '\u0B99',   // 'U'
+        /* 56 */ '\u0BA9',   // 'V'
+        /* 57 */ '\u0B90',   // 'W'
+        /* 58 */ '\uFFFF',   // 'X'
+        /* 59 */ '\uFFFF',   // 'Y'
+        /* 5A */ '\u0B8E',   // 'Z'
+        /* 5B */ '\uFFFF',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\uFFFF',   // ']'
+        /* 5E */ '\uFFFF',   // '^'
+        /* 5F */ '\u0B83',   // '_'
+        /* 60 */ '\u0BCA',   // '`'
+        /* 61 */ '\u0BCB',   // 'a'
+        /* 62 */ '\u0BB5',   // 'b'
+        /* 63 */ '\u0BAE',   // 'c'
+        /* 64 */ '\u0BCD',   // 'd'
+        /* 65 */ '\u0BBE',   // 'e'
+        /* 66 */ '\u0BBF',   // 'f'
+        /* 67 */ '\u0BC1',   // 'g'
+        /* 68 */ '\u0BAA',   // 'h'
+        /* 69 */ '\uFFFF',   // 'i'
+        /* 6A */ '\u0BB0',   // 'j'
+        /* 6B */ '\u0B95',   // 'k'
+        /* 6C */ '\u0BA4',   // 'l'
+        /* 6D */ '\u0BB8',   // 'm'
+        /* 6E */ '\u0BB2',   // 'n'
+        /* 6F */ '\uFFFF',   // 'o'
+        /* 70 */ '\u0B9C',   // 'p'
+        /* 71 */ '\u0BCC',   // 'q'
+        /* 72 */ '\u0BC0',   // 'r'
+        /* 73 */ '\u0BC7',   // 's'
+        /* 74 */ '\u0BC2',   // 't'
+        /* 75 */ '\u0BB9',   // 'u'
+        /* 76 */ '\u0BA8',   // 'v'
+        /* 77 */ '\u0BC8',   // 'w'
+        /* 78 */ '\u0B82',   // 'x'
+        /* 79 */ '\uFFFF',   // 'y'
+        /* 7A */ '\u0BC6',   // 'z'
+        /* 7B */ '\uFFFF',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0B9E',   // '}'
+        /* 7E */ '\u0B92',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] CONJ_KA_SSA = {'\u0B95', '\u0BCD', '\u0BB7'};
+        char[] CONJ_SSA_RA = {'\u0BB7', '\u0BCD', '\u0BB0'};
+
+        substitutionTable = new char[][] {
+        CONJ_KA_SSA, CONJ_SSA_RA
+        };
+    }
+
+        return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java
new file mode 100644
index 0000000..e1f26be
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java
@@ -0,0 +1,169 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.indic;
+
+import java.util.Locale;
+
+public class TeluguInputMethodDescriptor extends IndicIMDescriptor
+{
+    private static final Locale TELUGU = new Locale("te", "IN");
+
+    public TeluguInputMethodDescriptor() {
+    super(TELUGU, "Telugu");
+    }
+
+    private static char[] keyboardMap;
+    private static char[][] substitutionTable;
+
+    protected IndicInputMethodImpl getImpl() {
+    if (keyboardMap == null) {
+        keyboardMap = new char[] {
+        /* 00 */ '\u0000',
+        /* 01 */ '\u0001',
+        /* 02 */ '\u0002',
+        /* 03 */ '\u0003',
+        /* 04 */ '\u0004',
+        /* 05 */ '\u0005',
+        /* 06 */ '\u0006',
+        /* 07 */ '\u0007',
+        /* 08 */ '\u0008',
+        /* 09 */ '\u0009',
+        /* 0A */ '\012',
+        /* 0B */ '\u000B',
+        /* 0C */ '\u000C',
+        /* 0D */ '\015',
+        /* 0E */ '\u000E',
+        /* 0F */ '\u000F',
+        /* 10 */ '\u0010',
+        /* 11 */ '\u0011',
+        /* 12 */ '\u0012',
+        /* 13 */ '\u0013',
+        /* 14 */ '\u0014',
+        /* 15 */ '\u0015',
+        /* 16 */ '\u0016',
+        /* 17 */ '\u0017',
+        /* 18 */ '\u0018',
+        /* 19 */ '\u0019',
+        /* 1A */ '\u001A',
+        /* 1B */ '\u001B',
+        /* 1C */ '\u001C',
+        /* 1D */ '\u001D',
+        /* 1E */ '\u001E',
+        /* 1F */ '\u001F',
+        /* 20 */ '\u0020',
+        /* 21 */ '\uFFFF',   // '!'
+        /* 22 */ '\u0C20',   // '"'
+        /* 23 */ '\uFF00',   // '#'
+        /* 24 */ '\uFFFF',   // '$'
+        /* 25 */ '\uFF01',   // '%'
+        /* 26 */ '\uFF03',   // '&'
+        /* 27 */ '\u0C1F',   // '''
+        /* 28 */ '\u0028',   // '('
+        /* 29 */ '\u0029',   // ')'
+        /* 2A */ '\uFF04',   // '*'
+        /* 2B */ '\u0C0B',   // '+'
+        /* 2C */ '\u002C',   // ','
+        /* 2D */ '\u002D',   // '-'
+        /* 2E */ '\u002E',   // '.'
+        /* 2F */ '\u0C2F',   // '/'
+        /* 30 */ '\u0C66',   // '0'
+        /* 31 */ '\u0C67',   // '1'
+        /* 32 */ '\u0C68',   // '2'
+        /* 33 */ '\u0C69',   // '3'
+        /* 34 */ '\u0C6A',   // '4'
+        /* 35 */ '\u0C6B',   // '5'
+        /* 36 */ '\u0C6C',   // '6'
+        /* 37 */ '\u0C6D',   // '7'
+        /* 38 */ '\u0C6E',   // '8'
+        /* 39 */ '\u0C6F',   // '9'
+        /* 3A */ '\u0C1B',   // ':'
+        /* 3B */ '\u0C1A',   // ';'
+        /* 3C */ '\u0C37',   // '<'
+        /* 3D */ '\u0C43',   // '='
+        /* 3E */ '\u0964',   // '>'  (Devanagari danda - not shown on INSCRIPT chart)
+        /* 3F */ '\uFFFF',   // '?'
+        /* 40 */ '\uFFFF',   // '@'
+        /* 41 */ '\u0C13',   // 'A'
+        /* 42 */ '\uFFFF',   // 'B'
+        /* 43 */ '\u0C23',   // 'C'
+        /* 44 */ '\u0C05',   // 'D'
+        /* 45 */ '\u0C06',   // 'E'
+        /* 46 */ '\u0C07',   // 'F'
+        /* 47 */ '\u0C09',   // 'G'
+        /* 48 */ '\u0C2B',   // 'H'
+        /* 49 */ '\u0C18',   // 'I'
+        /* 4A */ '\u0C31',   // 'J'
+        /* 4B */ '\u0C16',   // 'K'
+        /* 4C */ '\u0C25',   // 'L'
+        /* 4D */ '\u0C36',   // 'M'
+        /* 4E */ '\u0C33',   // 'N'
+        /* 4F */ '\u0C27',   // 'O'
+        /* 50 */ '\u0C1D',   // 'P'
+        /* 51 */ '\u0C14',   // 'Q'
+        /* 52 */ '\u0C08',   // 'R'
+        /* 53 */ '\u0C0F',   // 'S'
+        /* 54 */ '\u0C0A',   // 'T'
+        /* 55 */ '\u0C19',   // 'U'
+        /* 56 */ '\uFFFF',   // 'V'
+        /* 57 */ '\u0C10',   // 'W'
+        /* 58 */ '\u0C01',   // 'X'
+        /* 59 */ '\u0C2D',   // 'Y'
+        /* 5A */ '\u0C0E',   // 'Z'
+        /* 5B */ '\u0C21',   // '['
+        /* 5C */ '\uFFFF',   // '\'
+        /* 5D */ '\uFFFF',   // ']'
+        /* 5E */ '\uFF02',   // '^'
+        /* 5F */ '\u0C03',   // '_'
+        /* 60 */ '\u0C4A',   // '`'
+        /* 61 */ '\u0C4B',   // 'a'
+        /* 62 */ '\u0C35',   // 'b'
+        /* 63 */ '\u0C2E',   // 'c'
+        /* 64 */ '\u0C4D',   // 'd'
+        /* 65 */ '\u0C3E',   // 'e'
+        /* 66 */ '\u0C3F',   // 'f'
+        /* 67 */ '\u0C41',   // 'g'
+        /* 68 */ '\u0C2A',   // 'h'
+        /* 69 */ '\u0C17',   // 'i'
+        /* 6A */ '\u0C30',   // 'j'
+        /* 6B */ '\u0C15',   // 'k'
+        /* 6C */ '\u0C24',   // 'l'
+        /* 6D */ '\u0C38',   // 'm'
+        /* 6E */ '\u0C32',   // 'n'
+        /* 6F */ '\u0C26',   // 'o'
+        /* 70 */ '\u0C1C',   // 'p'
+        /* 71 */ '\u0C4C',   // 'q'
+        /* 72 */ '\u0C40',   // 'r'
+        /* 73 */ '\u0C47',   // 's'
+        /* 74 */ '\u0C42',   // 't'
+        /* 75 */ '\u0C39',   // 'u'
+        /* 76 */ '\u0C28',   // 'v'
+        /* 77 */ '\u0C48',   // 'w'
+        /* 78 */ '\u0C02',   // 'x'
+        /* 79 */ '\u0C2C',   // 'y'
+        /* 7A */ '\u0C46',   // 'z'
+        /* 7B */ '\u0C22',   // '{'
+        /* 7C */ '\uFFFF',   // '|'
+        /* 7D */ '\u0C1E',   // '}'
+        /* 7E */ '\u0C12',   // '~'
+        /* 7F */ '\u007F'    // ''
+        };
+
+        char[] RA_SUB = {'\u0C4D', '\u0C30'};
+        char[] CONJ_JA_NYA = {'\u0C1C', '\u0C4D', '\u0C1E'};
+        char[] CONJ_TA_RA = {'\u0C24', '\u0C4D', '\u0C30'};
+        char[] CONJ_KA_SSA = {'\u0C15', '\u0C4D', '\u0C37'};
+        char[] CONJ_SHA_RA = {'\u0C36', '\u0C4D', '\u0C30'};
+
+        substitutionTable = new char[][] {
+        RA_SUB, CONJ_JA_NYA, CONJ_TA_RA, CONJ_KA_SSA, CONJ_SHA_RA
+        };
+    }
+
+    return new IndicInputMethodImpl(keyboardMap, null, null, substitutionTable);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub b/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub
new file mode 100644
index 0000000..705ccf0
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/tool/ime/indic
+Specification-Title: ICU Indic IME
+Specification-Version: 1.0
+Specification-Vendor: IBM
+Implementation-Title: ICU Indic IME
+Implementation-Version: 1.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2000-2004, International Business Machines Corporation and others.  All Rights Reserved.
+Extension-Name: com.ibm.icu.dev.tool.ime.indic
+
+
diff --git a/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor b/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor
new file mode 100644
index 0000000..2ae5b1c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor
@@ -0,0 +1,9 @@
+com.ibm.icu.dev.tool.ime.indic.BengaliInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.DevanagariInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.GujaratiInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.GurmukhiInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.KannadaInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.MalayalamInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.OriyaInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.TamilInputMethodDescriptor
+com.ibm.icu.dev.tool.ime.indic.TeluguInputMethodDescriptor
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties b/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties
new file mode 100644
index 0000000..d1fa411
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties
@@ -0,0 +1,20 @@
+#
+#*******************************************************************************
+#* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#
+# Default messages for the ICU transliterator input method.
+#
+
+name=ICU Transliterator
+title=ICU Transliterator Input Method
+start=Please wait, loading transliterators
+activeError=Dispatch method called while the IME was inactive
+disposedError=Dispatch called after IME was disposed
+inputError=Dispatch called without an InputEvent
+activateError=IME is already active
+deactivateError=IME is already deactivated
+hideError=Cannot hide IME while active
+disposeError=Cannot dispose IME while active
+multipleDisposeError=IME is already disposed
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java b/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
new file mode 100644
index 0000000..80d6a0d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
@@ -0,0 +1,720 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.translit;
+
+import java.awt.AWTEvent;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.Window;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.InputMethodEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.font.TextAttribute;
+import java.awt.font.TextHitInfo;
+import java.awt.im.InputMethodHighlight;
+import java.awt.im.spi.InputMethod;
+import java.awt.im.spi.InputMethodContext;
+import java.text.AttributedString;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.TreeSet;
+
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.Transliterator;
+
+public class TransliteratorInputMethod implements InputMethod {
+
+    private static boolean usesAttachedIME() {
+        // we're in the ext directory so permissions are not an issue
+        String os = System.getProperty("os.name");
+        if (os != null) {
+            return os.indexOf("Windows") == -1;
+        }
+        return false;
+    }
+
+    // true if Solaris style; false if PC style, assume Apple uses PC style for now
+    private static final boolean attachedStatusWindow = usesAttachedIME();
+
+    // the shared status window
+    private static Window statusWindow;
+
+    // current or last owner
+    private static TransliteratorInputMethod statusWindowOwner;
+
+    // cache location limits for attached
+    private static Rectangle attachedLimits;
+
+    // convenience of access, to reflect the current state
+    private static JComboBox choices;
+
+    //
+    // per-instance state
+    //
+
+    // if we're attached, the status window follows the client window
+    private Point attachedLocation;
+
+    private static int gid;
+
+    private int id = gid++;
+
+    InputMethodContext imc;
+    private boolean enabled = true;
+
+    private int selectedIndex = -1; // index in JComboBox corresponding to our transliterator
+    private Transliterator transliterator;
+    private int desiredContext;
+    private StringBuffer buffer;
+    private ReplaceableString replaceableText;
+    private Transliterator.Position index;
+
+    // debugging
+    private static boolean TRACE_EVENT = false;
+    private static boolean TRACE_MESSAGES = false;
+    private static boolean TRACE_BUFFER = false;
+
+    public TransliteratorInputMethod() {
+        if (TRACE_MESSAGES)
+            dumpStatus("<constructor>");
+
+        buffer = new StringBuffer();
+        replaceableText = new ReplaceableString(buffer);
+        index = new Transliterator.Position();
+    }
+
+    public void dumpStatus(String msg) {
+        System.out.println("(" + this + ") " + msg);
+    }
+
+    public void setInputMethodContext(InputMethodContext context) {
+        initStatusWindow(context);
+
+        imc = context;
+        imc.enableClientWindowNotification(this, attachedStatusWindow);
+    }
+
+    private static void initStatusWindow(InputMethodContext context) {
+        if (statusWindow == null) {
+            String title;
+            try {
+                ResourceBundle rb = ResourceBundle
+                        .getBundle("com.ibm.icu.dev.tool.ime.translit.Transliterator");
+                title = rb.getString("title");
+            } catch (MissingResourceException m) {
+                System.out.println("Transliterator resources missing: " + m);
+                title = "Transliterator Input Method";
+            }
+
+            Window sw = context.createInputMethodWindow(title, false);
+
+            // get all the ICU Transliterators
+            Enumeration en = Transliterator.getAvailableIDs();
+            TreeSet types = new TreeSet(new LabelComparator());
+
+            while (en.hasMoreElements()) {
+                String id = (String) en.nextElement();
+                String name = Transliterator.getDisplayName(id);
+                JLabel label = new JLabel(name);
+                label.setName(id);
+                types.add(label);
+            }
+
+            // add the transliterators to the combo box
+
+            choices = new JComboBox(types.toArray());
+
+            choices.setEditable(false);
+            choices.setSelectedIndex(0);
+            choices.setRenderer(new NameRenderer());
+            choices.setActionCommand("transliterator");
+
+            choices.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    if (statusWindowOwner != null) {
+                        statusWindowOwner.statusWindowAction(e);
+                    }
+                }
+            });
+
+            sw.add(choices);
+            sw.pack();
+
+            Dimension sd = Toolkit.getDefaultToolkit().getScreenSize();
+            Dimension wd = sw.getSize();
+            if (attachedStatusWindow) {
+                attachedLimits = new Rectangle(0, 0, sd.width - wd.width,
+                        sd.height - wd.height);
+            } else {
+                sw.setLocation(sd.width - wd.width, sd.height - wd.height - 25);
+            }
+
+            synchronized (TransliteratorInputMethod.class) {
+                if (statusWindow == null) {
+                    statusWindow = sw;
+                }
+            }
+        }
+    }
+
+    private void statusWindowAction(ActionEvent e) {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>status window action");
+        JComboBox cb = (JComboBox) e.getSource();
+        int si = cb.getSelectedIndex();
+        if (si != selectedIndex) { // otherwise, we don't need to change
+            if (TRACE_MESSAGES)
+                dumpStatus("status window action oldIndex: " + selectedIndex
+                        + " newIndex: " + si);
+
+            selectedIndex = si;
+
+            JLabel item = (JLabel) cb.getSelectedItem();
+
+            // construct the actual transliterator
+            // commit any text that may be present first
+            commitAll();
+
+            transliterator = Transliterator.getInstance(item.getName());
+            desiredContext = transliterator.getMaximumContextLength();
+
+            reset();
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<status window action");
+    }
+
+    // java has no pin to rectangle function?
+    private static void pin(Point p, Rectangle r) {
+        if (p.x < r.x) {
+            p.x = r.x;
+        } else if (p.x > r.x + r.width) {
+            p.x = r.x + r.width;
+        }
+        if (p.y < r.y) {
+            p.y = r.y;
+        } else if (p.y > r.y + r.height) {
+            p.y = r.y + r.height;
+        }
+    }
+
+    public void notifyClientWindowChange(Rectangle location) {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>notify client window change: " + location);
+        synchronized (TransliteratorInputMethod.class) {
+            if (statusWindowOwner == this) {
+                if (location == null) {
+                    statusWindow.setVisible(false);
+                } else {
+                    attachedLocation = new Point(location.x, location.y
+                            + location.height);
+                    pin(attachedLocation, attachedLimits);
+                    statusWindow.setLocation(attachedLocation);
+                    statusWindow.setVisible(true);
+                }
+            }
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<notify client window change: " + location);
+    }
+
+    public void activate() {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>activate");
+
+        synchronized (TransliteratorInputMethod.class) {
+            if (statusWindowOwner != this) {
+                if (TRACE_MESSAGES)
+                    dumpStatus("setStatusWindowOwner from: " + statusWindowOwner + " to: " + this);
+
+                statusWindowOwner = this;
+                // will be null before first change notification
+                if (attachedStatusWindow && attachedLocation != null) {
+                    statusWindow.setLocation(attachedLocation);
+                }
+                choices.setSelectedIndex(selectedIndex == -1 ? choices
+                        .getSelectedIndex() : selectedIndex);
+            }
+
+            choices.setForeground(Color.BLACK);
+            statusWindow.setVisible(true);
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<activate");
+    }
+    
+    public void deactivate(boolean isTemporary) {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>deactivate" + (isTemporary ? " (temporary)" : ""));
+        if (!isTemporary) {
+            synchronized (TransliteratorInputMethod.class) {
+                choices.setForeground(Color.LIGHT_GRAY);
+            }
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<deactivate" + (isTemporary ? " (temporary)" : ""));
+    }
+    
+    public void hideWindows() {
+        if (TRACE_MESSAGES)
+            dumpStatus(">>hideWindows");
+        synchronized (TransliteratorInputMethod.class) {
+            if (statusWindowOwner == this) {
+                if (TRACE_MESSAGES)
+                    dumpStatus("hiding");
+                statusWindow.setVisible(false);
+            }
+        }
+        if (TRACE_MESSAGES)
+            dumpStatus("<<hideWindows");
+    }
+    
+    public boolean setLocale(Locale locale) {
+        return false;
+    }
+    
+    public Locale getLocale() {
+        return Locale.getDefault();
+    }
+    
+    public void setCharacterSubsets(Character.Subset[] subsets) {
+    }
+
+    public void reconvert() {
+        throw new UnsupportedOperationException();
+    }
+
+    public void removeNotify() {
+        if (TRACE_MESSAGES)
+            dumpStatus("**removeNotify");
+    }
+
+    public void endComposition() {
+        commitAll();
+    }
+
+    public void dispose() {
+        if (TRACE_MESSAGES)
+            dumpStatus("**dispose");
+    }
+    
+    public Object getControlObject() {
+        return null;
+    }
+    
+    public void setCompositionEnabled(boolean enable) {
+        enabled = enable;
+    }
+
+    public boolean isCompositionEnabled() {
+        return enabled;
+    }
+
+    // debugging
+    private String eventInfo(AWTEvent event) {
+        String info = event.toString();
+        StringBuffer buf = new StringBuffer();
+        int index1 = info.indexOf("[");
+        int index2 = info.indexOf(",", index1);
+        buf.append(info.substring(index1 + 1, index2));
+
+        index1 = info.indexOf("] on ");
+        index2 = info.indexOf("[", index1);
+        if (index2 != -1) {
+            int index3 = info.lastIndexOf(".", index2);
+            if (index3 < index1 + 4) {
+                index3 = index1 + 4;
+            }
+            buf.append(" on ");
+            buf.append(info.substring(index3 + 1, index2));
+        }
+        return buf.toString();
+    }
+
+    public void dispatchEvent(AWTEvent event) {
+        final int MODIFIERS = 
+            InputEvent.CTRL_MASK | 
+            InputEvent.META_MASK | 
+            InputEvent.ALT_MASK | 
+            InputEvent.ALT_GRAPH_MASK;
+    
+        switch (event.getID()) {
+        case MouseEvent.MOUSE_PRESSED:
+            if (enabled) {
+                if (TRACE_EVENT) System.out.println("TIM: " + eventInfo(event));
+                // we'll get this even if the user is scrolling, can we rely on the component?
+                // commitAll(); // don't allow even clicks within our own edit area
+            }
+            break;
+    
+        case KeyEvent.KEY_TYPED: {
+            if (enabled) {
+                KeyEvent ke = (KeyEvent)event;
+                if (TRACE_EVENT) System.out.println("TIM: " + eventInfo(ke));
+                if ((ke.getModifiers() & MODIFIERS) != 0) {
+                    commitAll(); // assume a command, let it go through
+                } else {
+                    if (handleTyped(ke.getKeyChar())) {
+                        ke.consume();
+                    }
+                }
+            }
+        } break;
+    
+        case KeyEvent.KEY_PRESSED: {
+            if (enabled) {
+            KeyEvent ke = (KeyEvent)event;
+            if (TRACE_EVENT) System.out.println("TIM: " + eventInfo(ke));
+                if (handlePressed(ke.getKeyCode())) {
+                    ke.consume();
+                }
+            }
+        } break;
+    
+        case KeyEvent.KEY_RELEASED: {
+            // this won't autorepeat, which is better for toggle actions
+            KeyEvent ke = (KeyEvent)event;
+            if (ke.getKeyCode() == KeyEvent.VK_SPACE && ke.isControlDown()) {
+                setCompositionEnabled(!enabled);
+            }
+        } break;
+    
+        default:
+            break;
+        }
+    }
+
+    /** Wipe clean */
+    private void reset() {
+        buffer.delete(0, buffer.length());
+        index.contextStart = index.contextLimit = index.start = index.limit = 0;
+    }
+
+    // committed}context-composed|composed
+    //          ^       ^        ^
+    //         cc     start    ctxLim
+
+    private void traceBuffer(String msg, int cc, int off) {
+        if (TRACE_BUFFER)
+            System.out.println(Utility.escape(msg + ": '"
+                    + buffer.substring(0, cc) + '}'
+                    + buffer.substring(cc, index.start) + '-'
+                    + buffer.substring(index.start, index.contextLimit) + '|'
+                    + buffer.substring(index.contextLimit) + '\''));
+    }
+
+    private void update(boolean flush) {
+        int len = buffer.length();
+        String text = buffer.toString();
+        AttributedString as = new AttributedString(text);
+
+        int cc, off;
+        if (flush) {
+            off = index.contextLimit - len; // will be negative
+            cc = index.start = index.limit = index.contextLimit = len;
+        } else {
+            cc = index.start > desiredContext ? index.start - desiredContext
+                    : 0;
+            off = index.contextLimit - cc;
+        }
+
+        if (index.start < len) {
+            as.addAttribute(TextAttribute.INPUT_METHOD_HIGHLIGHT,
+                    InputMethodHighlight.SELECTED_RAW_TEXT_HIGHLIGHT,
+                    index.start, len);
+        }
+
+        imc.dispatchInputMethodEvent(
+                InputMethodEvent.INPUT_METHOD_TEXT_CHANGED, as.getIterator(),
+                cc, TextHitInfo.leading(off), null);
+
+        traceBuffer("update", cc, off);
+
+        if (cc > 0) {
+            buffer.delete(0, cc);
+            index.start -= cc;
+            index.limit -= cc;
+            index.contextLimit -= cc;
+        }
+    }
+
+    private void updateCaret() {
+        imc.dispatchInputMethodEvent(InputMethodEvent.CARET_POSITION_CHANGED,
+                null, 0, TextHitInfo.leading(index.contextLimit), null);
+        traceBuffer("updateCaret", 0, index.contextLimit);
+    }
+    
+    private void caretToStart() {
+        if (index.contextLimit > index.start) {
+            index.contextLimit = index.limit = index.start;
+            updateCaret();
+        }
+    }
+
+    private void caretToLimit() {
+        if (index.contextLimit < buffer.length()) {
+            index.contextLimit = index.limit = buffer.length();
+            updateCaret();
+        }
+    }
+
+    private boolean caretTowardsStart() {
+        int bufpos = index.contextLimit;
+        if (bufpos > index.start) {
+            --bufpos;
+            if (bufpos > index.start
+                    && UCharacter.isLowSurrogate(buffer.charAt(bufpos))
+                    && UCharacter.isHighSurrogate(buffer.charAt(bufpos - 1))) {
+                --bufpos;
+            }
+            index.contextLimit = index.limit = bufpos;
+            updateCaret();
+            return true;
+        }
+        return commitAll();
+    }
+
+    private boolean caretTowardsLimit() {
+        int bufpos = index.contextLimit;
+        if (bufpos < buffer.length()) {
+            ++bufpos;
+            if (bufpos < buffer.length()
+                    && UCharacter.isLowSurrogate(buffer.charAt(bufpos))
+                    && UCharacter.isHighSurrogate(buffer.charAt(bufpos - 1))) {
+                ++bufpos;
+            }
+            index.contextLimit = index.limit = bufpos;
+            updateCaret();
+            return true;
+        }
+        return commitAll();
+    }
+
+    private boolean canBackspace() {
+        return index.contextLimit > 0;
+    }
+
+    private boolean backspace() {
+        int bufpos = index.contextLimit;
+        if (bufpos > 0) {
+            int limit = bufpos;
+            --bufpos;
+            if (bufpos > 0 && UCharacter.isLowSurrogate(buffer.charAt(bufpos))
+                    && UCharacter.isHighSurrogate(buffer.charAt(bufpos - 1))) {
+                --bufpos;
+            }
+            if (bufpos < index.start) {
+                index.start = bufpos;
+            }
+            index.contextLimit = index.limit = bufpos;
+            doDelete(bufpos, limit);
+            return true;
+        }
+        return false;
+    }
+
+    private boolean canDelete() {
+        return index.contextLimit < buffer.length();
+    }
+
+    private boolean delete() {
+        int bufpos = index.contextLimit;
+        if (bufpos < buffer.length()) {
+            int limit = bufpos + 1;
+            if (limit < buffer.length()
+                    && UCharacter.isHighSurrogate(buffer.charAt(limit - 1))
+                    && UCharacter.isLowSurrogate(buffer.charAt(limit))) {
+                ++limit;
+            }
+            doDelete(bufpos, limit);
+            return true;
+        }
+        return false;
+    }
+
+    private void doDelete(int start, int limit) {
+        buffer.delete(start, limit);
+        update(false);
+    }
+
+    private boolean commitAll() {
+        if (buffer.length() > 0) {
+            boolean atStart = index.start == index.contextLimit;
+            boolean didConvert = buffer.length() > index.start;
+            index.contextLimit = index.limit = buffer.length();
+            transliterator.finishTransliteration(replaceableText, index);
+            if (atStart) {
+                index.start = index.limit = index.contextLimit = 0;
+            }
+            update(true);
+            return didConvert;
+        }
+        return false;
+    }
+
+    private void clearAll() {
+        int len = buffer.length();
+        if (len > 0) {
+            if (len > index.start) {
+                buffer.delete(index.start, len);
+            }
+            update(true);
+        }
+    }
+
+    private boolean insert(char c) {
+        transliterator.transliterate(replaceableText, index, c);
+        update(false);
+        return true;
+    }
+
+    private boolean editing() {
+        return buffer.length() > 0;
+    }
+
+    /**
+     * The big problem is that from release to release swing changes how it
+     * handles some characters like tab and backspace.  Sometimes it handles
+     * them as keyTyped events, and sometimes it handles them as keyPressed
+     * events.  If you want to allow the event to go through so swing handles
+     * it, you have to allow one or the other to go through.  If you don't want
+     * the event to go through so you can handle it, you have to stop the
+     * event both places.
+     * @return whether the character was handled
+     */
+    private boolean handleTyped(char ch) {
+        if (enabled) {
+            switch (ch) {
+            case '\b': if (editing()) return backspace(); break;
+            case '\t': if (editing()) { return commitAll(); } break;
+            case '\u001b': if (editing()) { clearAll(); return true; } break;
+            case '\u007f': if (editing()) return delete(); break;
+            default: return insert(ch);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Handle keyPressed events.
+     */
+    private boolean handlePressed(int code) {
+        if (enabled && editing()) {
+            switch (code) {
+            case KeyEvent.VK_PAGE_UP:
+            case KeyEvent.VK_UP:
+            case KeyEvent.VK_KP_UP:
+            case KeyEvent.VK_HOME:
+            caretToStart(); return true;
+            case KeyEvent.VK_PAGE_DOWN:
+            case KeyEvent.VK_DOWN:
+            case KeyEvent.VK_KP_DOWN:
+            case KeyEvent.VK_END:
+            caretToLimit(); return true;
+            case KeyEvent.VK_LEFT:
+            case KeyEvent.VK_KP_LEFT:
+            return caretTowardsStart();
+            case KeyEvent.VK_RIGHT:
+            case KeyEvent.VK_KP_RIGHT:
+            return caretTowardsLimit();
+            case KeyEvent.VK_BACK_SPACE: 
+            return canBackspace(); // unfortunately, in 1.5 swing handles this in keyPressed instead of keyTyped
+            case KeyEvent.VK_DELETE: 
+            return canDelete(); // this too?
+            case KeyEvent.VK_TAB:
+            case KeyEvent.VK_ENTER:
+            return commitAll(); // so we'll never handle VK_TAB in keyTyped
+            
+            case KeyEvent.VK_SHIFT:
+            case KeyEvent.VK_CONTROL:
+            case KeyEvent.VK_ALT:
+            return false; // ignore these unless a key typed event gets generated
+            default: 
+            // by default, let editor handle it, and we'll assume that it will tell us
+            // to endComposition if it does anything funky with, e.g., function keys.
+            return false;
+            }
+        }
+        return false;
+    }
+
+    public String toString() {
+        final String[] names = { 
+            "alice", "bill", "carrie", "doug", "elena", "frank", "gertie", "howie", "ingrid", "john" 
+        };
+    
+        if (id < names.length) {
+            return names[id];
+        } else {
+            return names[id] + "-" + (id/names.length);
+        }
+    }
+}
+
+class NameRenderer extends JLabel implements ListCellRenderer {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -210152863798631747L;
+
+    public Component getListCellRendererComponent(
+        JList list,
+        Object value,
+        int index,
+        boolean isSelected,
+        boolean cellHasFocus) {
+
+        String s = ((JLabel)value).getText();
+        setText(s);
+
+        if (isSelected) {
+            setBackground(list.getSelectionBackground());
+            setForeground(list.getSelectionForeground());
+        } else {
+            setBackground(list.getBackground());
+            setForeground(list.getForeground());
+        }
+
+        setEnabled(list.isEnabled());
+        setFont(list.getFont());
+        setOpaque(true);
+        return this;
+    }
+}
+
+class LabelComparator implements Comparator {
+    public int compare(Object obj1, Object obj2) {
+        Collator collator = Collator.getInstance();
+        return collator.compare(((JLabel)obj1).getText(), ((JLabel)obj2).getText());
+    }
+
+    public boolean equals(Object obj1) {
+        return this.equals(obj1);
+    }
+}
+
+
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java b/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java
new file mode 100644
index 0000000..d2575ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java
@@ -0,0 +1,91 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.ime.translit;
+
+import java.awt.Image;
+import java.awt.im.spi.InputMethod;
+import java.awt.im.spi.InputMethodDescriptor;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+
+/**
+* The TransliteratorInputMethodDescriptor class is used to identify this package
+* as an input method editor.
+*/
+
+public class TransliteratorInputMethodDescriptor implements InputMethodDescriptor {
+
+    private ResourceBundle rb = null;
+
+    /**
+    * Creates the Transliterator IME this is automatically callled by the
+    * JVM when the Transliterator IME is selected from the input method list.
+    *
+    * @return InputMethod The Transliterator IME object.
+    */
+    public InputMethod createInputMethod() throws Exception {
+        return new TransliteratorInputMethod();
+    }
+  
+    /**
+    * Get the list of locales that this IME supports.
+    *
+    * @return Locale[] This will always have one locale. By default
+    *                  we just return the current locale. Therefore
+    *                  the Transliterator IME works in all locales.
+    */
+    // use the current active locale
+    public Locale[] getAvailableLocales() {
+        return new Locale[] {Locale.getDefault()};
+    }
+
+    /**
+    * The Transliterator IME does not support dynamic locales. The Transliterator
+    * IME's functionality does not depend upon any locale.
+    *
+    * @return boolean This will always be false.
+    */
+    public boolean hasDynamicLocaleList() {
+        return false;
+    }
+
+    /**
+    * Obtain the localized name of the Transliterator IME
+    *
+    * @param inputLocale the requested input method locale
+    * @param displayLanguage The requested translation of the Transliterator IME
+    * @return the localized name for the Transliterator IME
+    */
+    public String getInputMethodDisplayName(Locale inputLocale,
+                                            Locale displayLanguage) {
+        String name = null;
+
+        try {
+            rb = ResourceBundle.getBundle("com.ibm.icu.dev.tool.ime.translit.Transliterator", displayLanguage);
+            name = rb.getString("name");
+        }
+        catch (MissingResourceException m) {
+            // use a hardcoded value
+            name = "Transliterator";
+        }
+        return name;
+    }
+
+    /**
+    * Get the icon for the Transliterator IME. This is not supported.
+    *
+    * @param inputLocale (This is ignored).
+    *
+    * @return Image This will always be null.
+    */
+    public Image getInputMethodIcon(Locale inputLocale) {
+       return null;
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub b/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub
new file mode 100644
index 0000000..47e3197
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Created-By: 1.0 (IBM Corporation)
+Extension-Name: com.ibm.icu.dev.tool.ime.translit
+Implementation-Vendor: IBM Corporation
+Implementation-Version: 1.0
+Implementation-Title: ICU Transliterator IME
+Specification-Vendor: IBM
+Specification-Version: 1.0
+Specification-Title: ICU Transliterator IME
+
+Name: com/ibm/icu/dev/tool/ime/translit
diff --git a/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor b/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor
new file mode 100644
index 0000000..1035973
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor
@@ -0,0 +1,7 @@
+#
+#
+# fully-qualified name of the java.awt.im.spi.InputMethodDescriptor
+# implementation class
+#
+
+com.ibm.icu.dev.tool.ime.translit.TransliteratorInputMethodDescriptor
diff --git a/src/com/ibm/icu/dev/tool/index/IndexGenerator.java b/src/com/ibm/icu/dev/tool/index/IndexGenerator.java
new file mode 100644
index 0000000..5bf09b7
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/index/IndexGenerator.java
@@ -0,0 +1,90 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.dev.tool.index;
+
+import java.io.*;
+import java.text.*;
+import java.util.*;
+
+public class IndexGenerator {
+    
+    private final static String stoplist = ",char.res,CurrencyData.res,invuca.res,line.res,line_th.res,pnames.res,res_index.res,sent.res,title.res,ucadata.res,ucase.res,uidna.res,unames.res,unorm.res,uprops.res,word.res,word_ja.res,word_POSIX.res,word_th.res";
+
+    public static void main(String[] args) {
+        if (args.length < 1) {
+            usage("too few arguments");
+        }
+
+        File inDir = new File(args[0]);
+        if (!inDir.exists()) {
+            System.out.println("skipping nonexistent directory " + inDir);
+            return;
+        }
+
+        if (!inDir.isDirectory()) {
+            usage("first argument '" + inDir + "' must be a directory");
+        }
+
+        File outDir = inDir;
+        if (args.length > 1) {
+            outDir = new File(args[1]);
+            if (!outDir.isDirectory() || !outDir.exists()) {
+                usage("second argument must be existing directory");
+            }
+        }
+
+        Set names = new TreeSet();
+        File[] files = inDir.listFiles();
+        if (files != null) {
+            for (int i = 0; i < files.length; i++){
+                if (!files[i].isDirectory()) {
+                    String name = "," + files[i].getName(); // add ',' to get exact match
+                    if (name.endsWith(".res") && stoplist.indexOf(name) == -1) {
+                        names.add(name.substring(1, name.lastIndexOf('.'))); // 1 to trim off ','
+                    }
+                }
+            }
+        }
+
+        DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.US);
+        DateFormat copyfmt = new SimpleDateFormat("'# Copyright (C) 'yyyy' IBM Inc.  All Rights Reserved.'");
+
+        try {
+            File outFile = new File(outDir, "res_index.txt");
+            PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(outFile)));
+            Date now = new Date();
+            pw.println("# Generated by " + IndexGenerator.class.getName() + " on " + fmt.format(now));
+            pw.println("# from contents of " + inDir.getCanonicalPath());
+            pw.println(copyfmt.format(now));
+            Iterator i = names.iterator();
+            while (i.hasNext()) {
+                pw.println(i.next());
+            }
+            int count = names.size();
+            pw.println("# Found " + count + " files");
+            pw.println("# End of file");
+            if (count == 0) {
+                System.err.println("Warning: matched no files");
+            } 
+            pw.close();
+        }
+        catch (IOException e) {
+            usage(e.getMessage());
+        }
+    }
+
+    private static void usage(String msg) {
+        if (msg != null) {
+            System.err.println("Error: " + msg);
+        }
+        System.out.println("Usage: IndexGenerator inDir outDir");
+        System.out.println("  inDir is an existing directory whose locale-based resources are to be enumerated");
+        System.out.println("  outDir is an existing directory in which the res_index.txt file will be placed");
+        throw new IllegalStateException("Usage");
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java b/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java
new file mode 100644
index 0000000..35dbc3f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java
@@ -0,0 +1,114 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UnicodeSet;
+
+public class ArabicCharacterData
+{
+    public class Record
+    {
+        public int getCodePoint()
+        {
+            return codePoint;
+        }
+        
+        public int getGeneralCategory()
+        {
+            return generalCategory;
+        }
+        
+        public int getDecompositionType()
+        {
+            return decompositionType;
+        }
+        
+        public String getDecomposition()
+        {
+            return decomposition;
+        }
+        
+        private Record(int character)
+        {
+            codePoint         = character;
+            generalCategory   = UCharacter.getType(character);
+            decompositionType = UCharacter.getIntPropertyValue(character, UProperty.DECOMPOSITION_TYPE);
+            
+            switch (decompositionType) {
+            case UCharacter.DecompositionType.FINAL:
+            case UCharacter.DecompositionType.INITIAL:
+            case UCharacter.DecompositionType.ISOLATED:
+            case UCharacter.DecompositionType.MEDIAL:
+                decomposition = Normalizer.compose(UCharacter.toString(character), true);
+                break;
+                
+            case UCharacter.DecompositionType.CANONICAL:
+                decomposition = Normalizer.decompose(UCharacter.toString(character), true);
+                break;
+                
+            default:
+                decomposition = null;
+            }
+        }
+        
+        private int codePoint;
+        private int generalCategory;
+        private int decompositionType;
+        private String decomposition;
+    }
+    
+    private ArabicCharacterData(int charCount)
+    {
+        records = new Record[charCount];
+    }
+    
+    private void add(int character)
+    {
+        records[recordIndex++] = new Record(character);
+    }
+    
+    public Record getRecord(int index)
+    {
+        if (index < 0 || index >= records.length) {
+            return null;
+        }
+        
+        return records[index];
+    }
+    
+    public int countRecords()
+    {
+        return records.length;
+    }
+ 
+    // TODO: do we need to change this to use UnicodeSetIterator?
+    // That will mean not knowing the number of characters until
+    // after the iteration is done, so we'd have to use a vector
+    // to hold the Records at first and copy it to an array
+    // when we're done...   
+    public static ArabicCharacterData factory(UnicodeSet characterSet)
+    {
+        int charCount = characterSet.size();
+        ArabicCharacterData data = new ArabicCharacterData(charCount);
+        
+        for (int i = 0; i < charCount; i += 1) {
+            data.add(characterSet.charAt(i));
+        }
+        
+        return data;
+    }
+    
+    private Record[] records;
+    private int recordIndex = 0;
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java b/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java
new file mode 100644
index 0000000..34d65e2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+
+public class ArabicShaping {
+
+    // arabic   shaping type code
+
+    // shaping bit masks
+    static final int MASK_SHAPE_RIGHT   = 1; // if this bit set, shapes to right
+    static final int MASK_SHAPE_LEFT = 2;   // if this bit set, shapes to left
+    static final int MASK_TRANSPARENT   = 4; // if this bit set, is transparent (ignore other bits)
+    static final int MASK_NOSHAPE   = 8; // if this bit set, don't shape this char, i.e. tatweel
+
+    // shaping values
+    public static final int VALUE_NONE = 0;
+    public static final int VALUE_RIGHT = MASK_SHAPE_RIGHT;
+    public static final int VALUE_LEFT = MASK_SHAPE_LEFT;
+    public static final int VALUE_DUAL = MASK_SHAPE_RIGHT | MASK_SHAPE_LEFT;
+    public static final int VALUE_TRANSPARENT = MASK_TRANSPARENT;
+    public static final int VALUE_NOSHAPE_DUAL = MASK_NOSHAPE | VALUE_DUAL;
+    public static final int VALUE_NOSHAPE_NONE = MASK_NOSHAPE;
+
+    public static int getShapeType(char ch)
+    {
+        int tt = UCharacter.getIntPropertyValue(ch, UProperty.JOINING_TYPE);
+        
+        switch(tt) {
+            case UCharacter.JoiningType.JOIN_CAUSING:
+                return VALUE_NOSHAPE_DUAL;
+                
+            case UCharacter.JoiningType.LEFT_JOINING:
+                return VALUE_LEFT;
+            
+            case UCharacter.JoiningType.RIGHT_JOINING:
+                return VALUE_RIGHT;
+            
+            case UCharacter.JoiningType.DUAL_JOINING:
+                return VALUE_DUAL;
+            
+            case UCharacter.JoiningType.TRANSPARENT:
+                return VALUE_TRANSPARENT;
+                
+            case UCharacter.JoiningType.NON_JOINING:
+            default:
+                return VALUE_NOSHAPE_NONE;                
+        }
+    }
+
+    /*
+     * Chars in logical order.
+     * leftType is shaping code of char to logical left of range
+     * rightType is shaping code of char to logical right of range
+     */
+
+    public static void shape(char[] chars, int leftType, int rightType, ClassTable isolClassTable) {
+        // iterate in logical order from left to right
+        //
+        // the effective right char is the most recently encountered
+        // non-transparent char
+        //
+        // four boolean states:
+        //   the effective right char shapes
+        //   the effective right char causes right shaping
+        //   the current char shapes
+        //   the current char causes left shaping
+        //
+        // if both cause shaping, then
+        //   right += 2 (isolate to initial, or final to medial)
+        //   cur += 1 (isolate to final)
+
+        // ern is effective right logical index
+        int ern = -1;
+
+        boolean rightShapes = false;
+        boolean rightCauses = (rightType & MASK_SHAPE_LEFT) != 0;
+
+        for (int n = 0; n < chars.length; n++) {
+            char c = chars[n];
+            int t = getShapeType(c);
+
+            if ((t & MASK_TRANSPARENT) != 0) {
+                continue;
+            }
+
+            boolean curShapes = (t & MASK_NOSHAPE) == 0;
+            boolean curCauses = (t & MASK_SHAPE_RIGHT) != 0;
+
+            if (rightCauses && curCauses) {
+                if (rightShapes) {
+                    chars[ern] += 2;
+                }
+
+                if (curShapes) {
+                    chars[n] = (char) (isolClassTable.getGlyphClassID(c) + 1);
+                }
+            } else {
+                if (curShapes) {
+                    chars[n] = (char) isolClassTable.getGlyphClassID(c);
+                }
+            }
+
+            rightShapes = curShapes;
+            rightCauses = (t & MASK_SHAPE_LEFT) != 0;
+            ern = n;
+        }
+
+        if (rightShapes && rightCauses && (leftType & MASK_SHAPE_RIGHT) != 0) {
+            chars[ern] += 2;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java b/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
new file mode 100644
index 0000000..665c188
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
@@ -0,0 +1,97 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class BuildMirroringTables extends ModuleWriter
+{
+    public BuildMirroringTables()
+    {
+        super();
+    }
+    
+    public void dump(String name, int[] array, int length, int valuesPerLine)
+    {
+        StringBuffer line = new StringBuffer("    ");
+        
+        output.println("const LEUnicode32 DefaultCharMapper::" + name + "[] = {");
+        
+        for (int i = 0; i < length; i += 1) {
+            
+            if (i > 0 && i % valuesPerLine == 0) {
+                output.println(line.toString());
+                line.setLength(4);
+            }
+    
+            line.append("0x" + Utility.hex(array[i], 4));
+            line.append(", ");
+        }
+    
+        line.setLength(line.length() - 2);
+    
+        output.println(line.toString());
+        output.println("};\n");
+    }
+    
+    public void writeMirroredDataFile(String filename)
+    {
+        UnicodeSet mirrored = new UnicodeSet("[\\p{Bidi_Mirrored}]");
+        int count = mirrored.size();
+        int[] chars   = new int[count];
+        int[] mirrors = new int[count];
+        int total = 0;
+        
+        System.out.println("There are " + count + " mirrored characters.");
+        
+        for(int i = 0; i < count; i += 1) {
+            int ch = mirrored.charAt(i);
+            int m  = UCharacter.getMirror(ch);
+            
+            if (ch != m) {
+                chars[total] = ch & 0xFFFF;
+                mirrors[total++] = m & 0xFFFF;
+            }
+        }
+        
+        System.out.println("There are " + total + " characters with a different mirror.\n");
+        
+        openFile(filename);
+        writeHeader(null, includeFiles);
+        
+        
+        dump("mirroredChars", chars, total, 8);
+        
+        System.out.println();
+        
+        dump("srahCderorrim", mirrors, total, 8);
+        
+        output.println("const le_int32 DefaultCharMapper::mirroredCharsCount = " + total + ";\n");
+
+        writeTrailer();
+        closeFile();
+    }
+    
+    private static String includeFiles[] = {"LETypes.h", "DefaultCharMapper.h"};
+    
+    public static void main(String[] args)
+    {
+        BuildMirroringTables bmt = new BuildMirroringTables();
+        
+        bmt.writeMirroredDataFile("MirroredCharData.cpp");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java b/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java
new file mode 100644
index 0000000..cef1b69
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java
@@ -0,0 +1,523 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * @author Eric Mader
+ *
+ * Notes:
+ * 
+ * The property \p{Decomposition_Type=Canonical} will match all characters with a canonical
+ * decomposition.
+ *
+ * So "[[\\p{Latin}\\p{Greek}\\p{Cyrillic}] & [\\p{Decomposition_Type=Canonical}]]"
+ * will match all Latin, Greek and Cyrillic characters with a canonical decomposition.
+ * 
+ * Are these three scripts enough? Do we want to collect them all at once and distribute by script,
+ * or process them one script at a time. It's probably a good idea to build a single table for
+ * however many scripts there are.
+ * 
+ * It might be better to collect all the characters that have a canonical decomposition and just
+ * sort them into however many scripts there are... unless we'll get characters in COMMON???
+ */
+public class CanonGSUBBuilder
+{
+    static public String convertArabicString(int type, int ligature, String decomp, ClassTable isolClassTable)
+    {
+        int leftType  = ArabicShaping.VALUE_NONE;
+        int rightType = ArabicShaping.VALUE_NONE;
+        
+        switch (type) {
+            case UCharacter.DecompositionType.ISOLATED:
+                break;
+                
+            case UCharacter.DecompositionType.FINAL:
+                rightType = ArabicShaping.VALUE_LEFT;
+                break;
+            
+            case UCharacter.DecompositionType.INITIAL:
+                leftType = ArabicShaping.VALUE_RIGHT;
+                break;
+            
+            case UCharacter.DecompositionType.MEDIAL:
+               rightType = ArabicShaping.VALUE_LEFT;
+               leftType  = ArabicShaping.VALUE_RIGHT;
+               break;
+               
+           default:
+               return decomp + UCharacter.toString(ligature);
+        }
+        
+        char[] chars = decomp.toCharArray();
+              
+        ArabicShaping.shape(chars, leftType, rightType, isolClassTable);
+  
+        return new String(chars) + UCharacter.toString(ligature);
+    }
+    
+    static void buildArabicContextualForms(ArabicCharacterData data, ClassTable initClassTable, ClassTable mediClassTable,
+                                     ClassTable finaClassTable, ClassTable isolClassTable)
+    {
+        System.out.print("Finding Arabic contextual forms... ");
+        
+        for (int i = 0; i < data.countRecords(); i += 1) {
+            ArabicCharacterData.Record record = data.getRecord(i);
+            String decomposition = record.getDecomposition();
+            
+            if (decomposition != null && decomposition.length() == 1) {
+                int contextual = record.getCodePoint();
+                int isolated   = UTF16.charAt(record.getDecomposition(), 0);
+            
+                switch (record.getDecompositionType()) {
+                case UCharacter.DecompositionType.INITIAL:
+                    initClassTable.addMapping(isolated, contextual);
+                    break;
+                
+                case UCharacter.DecompositionType.MEDIAL:
+                    mediClassTable.addMapping(isolated, contextual);
+                    break;
+                
+               case UCharacter.DecompositionType.FINAL:
+                   finaClassTable.addMapping(isolated, contextual);
+                   break;
+                   
+               case UCharacter.DecompositionType.ISOLATED:
+                   isolClassTable.addMapping(isolated, contextual);
+                   break;
+               
+               default:
+                   // issue some error message?
+                   break;
+                }
+            }
+        }
+        
+        System.out.println("Done.");
+    }
+
+    static LigatureTree buildArabicLigatureTree(ArabicCharacterData data, ClassTable isolClassTable)
+    {
+        LigatureTree contextualTree = new LigatureTree();
+        int ligatureCount = 0;
+        
+        System.out.print("Building Arabic ligature tree... ");
+        
+        for (int i = 0; i < data.countRecords(); i += 1) {
+            ArabicCharacterData.Record record = data.getRecord(i);
+            String decomposition = record.getDecomposition();
+            
+            if (decomposition != null && decomposition.length() > 1) {
+                int ligature   = record.getCodePoint();
+                int decompType = record.getDecompositionType();
+                
+                switch (decompType) {
+                case UCharacter.DecompositionType.FINAL:
+                case UCharacter.DecompositionType.INITIAL:
+                case UCharacter.DecompositionType.MEDIAL:
+                case UCharacter.DecompositionType.ISOLATED:
+                    contextualTree.insert(convertArabicString(decompType, ligature, decomposition, isolClassTable));
+                    ligatureCount += 1;
+                    break;
+                    
+                case UCharacter.DecompositionType.CANONICAL:
+                    //cannonicalTree.insert(decomposition + UCharacter.toString(ligature));
+                    break;
+                }
+            }
+        }
+        
+        System.out.println(ligatureCount + " ligatures.");
+        
+        return contextualTree;
+    }
+    
+    static final int SIMPLE_GLYPH = 1;
+    static final int LIGATURE_GLYPH = 2;
+    static final int MARK_GLYPH = 3;
+    static final int COMPONENT_GLYPH = 4;
+    
+    static final int categoryClassMap[] = {
+    0,              // UNASSIGNED
+    SIMPLE_GLYPH,   // UPPERCASE_LETTER
+    SIMPLE_GLYPH,   // LOWERCASE_LETTER
+    SIMPLE_GLYPH,   // TITLECASE_LETTER
+    SIMPLE_GLYPH,   // MODIFIER_LETTER
+    SIMPLE_GLYPH,   // OTHER_LETTER
+    MARK_GLYPH,     // NON_SPACING_MARK
+    MARK_GLYPH,     // ENCLOSING_MARK ??
+    MARK_GLYPH,     // COMBINING_SPACING_MARK ??
+    SIMPLE_GLYPH,   // DECIMAL_NUMBER
+    SIMPLE_GLYPH,   // LETTER_NUMBER
+    SIMPLE_GLYPH,   // OTHER_NUMBER;
+    0,              // SPACE_SEPARATOR
+    0,              // LINE_SEPARATOR
+    0,              // PARAGRAPH_SEPARATOR
+    0,              // CONTROL
+    0,              // FORMAT
+    0,              // PRIVATE_USE
+    0,              // SURROGATE
+    SIMPLE_GLYPH,   // DASH_PUNCTUATION
+    SIMPLE_GLYPH,   // START_PUNCTUATION
+    SIMPLE_GLYPH,   // END_PUNCTUATION
+    SIMPLE_GLYPH,   // CONNECTOR_PUNCTUATION
+    SIMPLE_GLYPH,   // OTHER_PUNCTUATION
+    SIMPLE_GLYPH,   // MATH_SYMBOL;
+    SIMPLE_GLYPH,   // CURRENCY_SYMBOL
+    SIMPLE_GLYPH,   // MODIFIER_SYMBOL
+    SIMPLE_GLYPH,   // OTHER_SYMBOL
+    SIMPLE_GLYPH,   // INITIAL_PUNCTUATION
+    SIMPLE_GLYPH    // FINAL_PUNCTUATION
+    };
+
+    static int getGlyphClass(ArabicCharacterData.Record record)
+    {
+        String decomp = record.getDecomposition();
+        
+        if (decomp != null && decomp.length() > 1) {
+            return LIGATURE_GLYPH;
+        }
+        
+        return categoryClassMap[record.getGeneralCategory()];
+    }
+    
+    static void addArabicGlyphClasses(ArabicCharacterData data, ClassTable classTable)
+    {
+        System.out.print("Adding Arabic glyph classes... ");
+        
+        for (int i = 0; i < data.countRecords(); i += 1) {
+            ArabicCharacterData.Record record = data.getRecord(i);
+            classTable.addMapping(record.getCodePoint(), getGlyphClass(record));
+        }
+        
+        System.out.println("Done.");
+    }
+    
+    private static void buildArabicTables(ScriptList scriptList, FeatureList featureList,
+                                                LookupList lookupList, ClassTable classTable) {
+        // TODO: Might want to have the ligature table builder explicitly check for ligatures
+        // which start with space and tatweel rather than pulling them out here...
+        UnicodeSet arabicBlock   = new UnicodeSet("[[\\p{block=Arabic}] & [[:Cf:][:Po:][:So:][:Mn:][:Nd:][:Lm:]]]");
+        UnicodeSet oddLigatures  = new UnicodeSet("[\\uFC5E-\\uFC63\\uFCF2-\\uFCF4\\uFE70-\\uFE7F]");
+        UnicodeSet arabicLetters = new UnicodeSet("[\\p{Arabic}]");
+        ArabicCharacterData arabicData = ArabicCharacterData.factory(arabicLetters.addAll(arabicBlock).removeAll(oddLigatures));
+
+        addArabicGlyphClasses(arabicData, classTable);
+        
+        ClassTable initClassTable = new ClassTable();
+        ClassTable mediClassTable = new ClassTable();
+        ClassTable finaClassTable = new ClassTable();
+        ClassTable isolClassTable = new ClassTable();
+        
+        buildArabicContextualForms(arabicData, initClassTable, mediClassTable, finaClassTable, isolClassTable);
+        isolClassTable.snapshot();
+        LigatureTree ligaTree = buildArabicLigatureTree(arabicData, isolClassTable);
+
+        LigatureTreeWalker ligaWalker = new LigatureTreeWalker();
+
+        ligaTree.walk(ligaWalker);
+        
+        Lookup initLookup, mediLookup, finaLookup, ligaLookup;
+        
+        initLookup = new Lookup(Lookup.GSST_Single, 0);
+        initLookup.addSubtable(initClassTable);
+        
+        mediLookup = new Lookup(Lookup.GSST_Single, 0);
+        mediLookup.addSubtable(mediClassTable);
+        
+        finaLookup = new Lookup(Lookup.GSST_Single, 0);
+        finaLookup.addSubtable(finaClassTable);
+        
+        ligaLookup = new Lookup(Lookup.GSST_Ligature, Lookup.LF_IgnoreMarks);
+        ligaLookup.addSubtable(ligaWalker);
+        
+        Feature init = new Feature("init");
+        Feature medi = new Feature("medi");
+        Feature fina = new Feature("fina");
+        Feature liga = new Feature("liga");
+        
+        init.addLookup(lookupList.addLookup(initLookup));
+        medi.addLookup(lookupList.addLookup(mediLookup));
+        fina.addLookup(lookupList.addLookup(finaLookup));
+        liga.addLookup(lookupList.addLookup(ligaLookup));
+        
+        featureList.addFeature(init);
+        featureList.addFeature(medi);
+        featureList.addFeature(fina);
+        featureList.addFeature(liga);
+        
+        scriptList.addFeature("arab", "(default)", init);
+        scriptList.addFeature("arab", "(default)", medi);
+        scriptList.addFeature("arab", "(default)", fina);
+        scriptList.addFeature("arab", "(default)", liga);
+        
+        System.out.println();
+    }
+
+    public static void buildLigatureTree(CanonicalCharacterData data, int script, LigatureTree ligatureTree)
+    {
+        int ligatureCount = 0;
+        
+        System.out.print("building composition ligature tree for " + UScript.getName(script) + "... ");
+        
+        for (int i = 0; i < data.countRecords(script); i += 1) {
+            CanonicalCharacterData.Record record = data.getRecord(script, i);
+            String composed = UCharacter.toString(record.getComposedCharacter());
+            
+            for (int e = 0; e < record.countEquivalents(); e += 1) {
+                String equivalent = record.getEquivalent(e);
+                
+                ligatureTree.insert(equivalent + composed);
+                ligatureCount += 1;
+            }
+        }
+        
+        System.out.println(ligatureCount + " ligatures.");
+    }
+    
+    public static DecompTable[] buildDecompTables(CanonicalCharacterData data, int script)
+    {
+        int maxDecompCount = data.getMaxEquivalents(script);
+        DecompTable[] decompTables = new DecompTable[maxDecompCount];
+        
+        System.out.print("Building decompositon tables for " + UScript.getName(script) +
+                         "... total decompositions: " + data.countRecords(script) + 
+                         ", max: " + maxDecompCount + "...");
+        
+        for (int i = 0; i < maxDecompCount; i += 1) {
+            DecompTable table = new DecompTable();
+            
+            for (int r = 0; r < data.countRecords(script); r += 1) {
+                CanonicalCharacterData.Record record = data.getRecord(script, r);
+                
+                if (record.countEquivalents() > i) {
+                    table.add(record.getComposedCharacter(), record.getEquivalent(i));
+                }
+            }
+            
+            decompTables[i] = table;
+        }
+        
+        System.out.println(" Done.");
+        
+        return decompTables;
+    }
+    
+    public static int[] buildLookups(CanonicalCharacterData data, LookupList lookupList, int script)
+    {
+        int[] lookups = new int[2];
+        
+        DecompTable[] decompTables = buildDecompTables(data, script);
+        
+        LigatureTree compTree = new LigatureTree();
+        
+        buildLigatureTree(data, script, compTree);
+        
+        System.out.println();
+        
+        LigatureTreeWalker compWalker = new LigatureTreeWalker();
+        
+        compTree.walk(compWalker);
+        
+        Lookup compLookup, dcmpLookup;
+        //int compLookupIndex, dcmpLookupIndex;
+        
+        compLookup = new Lookup(Lookup.GSST_Ligature, 0);
+        compLookup.addSubtable(compWalker);
+        
+        dcmpLookup = new Lookup(Lookup.GSST_Multiple, 0);
+        for (int i = 0; i < decompTables.length; i += 1) {
+            dcmpLookup.addSubtable(decompTables[i]);
+        }
+        
+        lookups[0] = lookupList.addLookup(compLookup);
+        lookups[1] = lookupList.addLookup(dcmpLookup);
+        
+        return lookups;
+    }
+    
+    public static void addLookups(Feature feature, int[] lookups)
+    {
+        for (int i = 0; i < lookups.length; i += 1) {
+            feature.addLookup(lookups[i]);
+        }
+    }
+    
+    /*
+     * Hebrew mark order taken from the SBL Hebrew Font manual
+     * Arabic mark order per Thomas Milo: hamza < shadda < combining_alef < sukun, vowel_marks < madda < qur'anic_marks
+     */
+    public static ClassTable buildCombiningClassTable()
+    {
+        UnicodeSet markSet = new UnicodeSet("[\\P{CanonicalCombiningClass=0}]");
+        ClassTable exceptions = new ClassTable();
+        ClassTable combiningClasses = new ClassTable();
+        int markCount = markSet.size();
+        
+        exceptions.addMapping(0x05C1,  10); // Point Shin Dot
+        exceptions.addMapping(0x05C2,  11); // Point Sin Dot
+        exceptions.addMapping(0x05BC,  21); // Point Dagesh or Mapiq
+        exceptions.addMapping(0x05BF,  23); // Point Rafe
+        exceptions.addMapping(0x05B9,  27); // Point Holam
+        exceptions.addMapping(0x0323, 220); // Comb. Dot Below (low punctum)
+        exceptions.addMapping(0x0591, 220); // Accent Etnahta
+        exceptions.addMapping(0x0596, 220); // Accent Tipeha
+        exceptions.addMapping(0x059B, 220); // Accent Tevir
+        exceptions.addMapping(0x05A3, 220); // Accent Munah
+        exceptions.addMapping(0x05A4, 220); // Accent Mahapakh
+        exceptions.addMapping(0x05A5, 220); // Accent Merkha
+        exceptions.addMapping(0x05A6, 220); // Accent Merkha Kefula
+        exceptions.addMapping(0x05A7, 220); // Accent Darga
+        exceptions.addMapping(0x05AA, 220); // Accent Yerah Ben Yomo
+        exceptions.addMapping(0x05B0, 220); // Point Sheva
+        exceptions.addMapping(0x05B1, 220); // Point Hataf Segol
+        exceptions.addMapping(0x05B2, 220); // Point Hataf Patah
+        exceptions.addMapping(0x05B3, 220); // Point Hataf Qamats
+        exceptions.addMapping(0x05B4, 220); // Point Hiriq
+        exceptions.addMapping(0x05B5, 220); // Point Tsere
+        exceptions.addMapping(0x05B6, 220); // Point Segol
+        exceptions.addMapping(0x05B7, 220); // Point Patah
+        exceptions.addMapping(0x05B8, 220); // Point Qamats
+        exceptions.addMapping(0x05BB, 220); // Point Qubuts
+        exceptions.addMapping(0x05BD, 220); // Point Meteg
+        exceptions.addMapping(0x059A, 222); // Accent Yetiv
+        exceptions.addMapping(0x05AD, 222); // Accent Dehi
+        exceptions.addMapping(0x05C4, 230); // Mark Upper Dot (high punctum)
+        exceptions.addMapping(0x0593, 230); // Accent Shalshelet
+        exceptions.addMapping(0x0594, 230); // Accent Zaqef Qatan
+        exceptions.addMapping(0x0595, 230); // Accent Zaqef Gadol
+        exceptions.addMapping(0x0597, 230); // Accent Revia
+        exceptions.addMapping(0x0598, 230); // Accent Zarqa
+        exceptions.addMapping(0x059F, 230); // Accent Qarney Para
+        exceptions.addMapping(0x059E, 230); // Accent Gershayim
+        exceptions.addMapping(0x059D, 230); // Accent Geresh Muqdam
+        exceptions.addMapping(0x059C, 230); // Accent Geresh
+        exceptions.addMapping(0x0592, 230); // Accent Segolta
+        exceptions.addMapping(0x05A0, 230); // Accent Telisha Gedola
+        exceptions.addMapping(0x05AC, 230); // Accent Iluy
+        exceptions.addMapping(0x05A8, 230); // Accent Qadma
+        exceptions.addMapping(0x05AB, 230); // Accent Ole
+        exceptions.addMapping(0x05AF, 230); // Mark Masora Circle
+        exceptions.addMapping(0x05A1, 230); // Accent Pazer
+      //exceptions.addMapping(0x0307, 230); // Mark Number/Masora Dot
+        exceptions.addMapping(0x05AE, 232); // Accent Zinor
+        exceptions.addMapping(0x05A9, 232); // Accent Telisha Qetana
+        exceptions.addMapping(0x0599, 232); // Accent Pashta
+        
+        exceptions.addMapping(0x0655,  27); // ARABIC HAMZA BELOW
+        exceptions.addMapping(0x0654,  27); // ARABIC HAMZA ABOVE
+
+        exceptions.addMapping(0x0651,  28); // ARABIC SHADDA
+
+        exceptions.addMapping(0x0656,  29); // ARABIC SUBSCRIPT ALEF
+        exceptions.addMapping(0x0670,  29); // ARABIC LETTER SUPERSCRIPT ALEF
+
+        exceptions.addMapping(0x064D,  30); // ARABIC KASRATAN
+        exceptions.addMapping(0x0650,  30); // ARABIC KASRA
+
+        exceptions.addMapping(0x0652,  31); // ARABIC SUKUN
+        exceptions.addMapping(0x06E1,  31); // ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+
+        exceptions.addMapping(0x064B,  31); // ARABIC FATHATAN
+        exceptions.addMapping(0x064C,  31); // ARABIC DAMMATAN
+        exceptions.addMapping(0x064E,  31); // ARABIC FATHA
+        exceptions.addMapping(0x064F,  31); // ARABIC DAMMA
+        exceptions.addMapping(0x0657,  31); // ARABIC INVERTED DAMMA
+        exceptions.addMapping(0x0658,  31); // ARABIC MARK NOON GHUNNA
+
+        exceptions.addMapping(0x0653,  32); // ARABIC MADDAH ABOVE
+        
+        exceptions.snapshot();
+        
+        for (int i = 0; i < markCount; i += 1) {
+            int mark = markSet.charAt(i);
+            int markClass = exceptions.getGlyphClassID(mark);
+            
+            if (markClass == 0) {
+                markClass = UCharacter.getCombiningClass(mark);
+            }
+            
+            combiningClasses.addMapping(mark, markClass);
+        }
+        
+        combiningClasses.snapshot();
+        return combiningClasses;
+    }
+    
+    public static void buildDecompTables(String fileName)
+    {
+        // F900 - FAFF are compatibility ideographs. They all decompose to a single other character, and can be ignored.
+      //UnicodeSet decompSet = new UnicodeSet("[[[\\P{Hangul}] & [\\p{DecompositionType=Canonical}]] - [\uF900-\uFAFF]]");
+        UnicodeSet decompSet = new UnicodeSet("[[\\p{DecompositionType=Canonical}] & [\\P{FullCompositionExclusion}] & [\\P{Hangul}]]");
+        CanonicalCharacterData data = CanonicalCharacterData.factory(decompSet);
+        ClassTable classTable = new ClassTable();
+        
+        LookupList  lookupList  = new LookupList();
+        FeatureList featureList = new FeatureList();
+        ScriptList  scriptList  = new ScriptList();
+
+        // build common, inherited lookups...
+//        int[] commonLookups = buildLookups(data, lookupList, UScript.COMMON);
+//        int[] inheritedLookups = buildLookups(data, lookupList, UScript.INHERITED);
+        
+        for (int script = 0; script < UScript.CODE_LIMIT; script += 1) {
+            
+            // This is a bit lame, but it's the only way I can think of
+            // to make this work w/o knowing the values of COMMON and INHERITED...
+            if (script == UScript.COMMON || script == UScript.INHERITED ||
+                data.getMaxEquivalents(script) == 0) {
+                continue;
+            }
+            
+            int[] lookups = buildLookups(data, lookupList, script);
+
+            Feature ccmp = new Feature("ccmp");
+            
+            addLookups(ccmp, lookups);
+//            addLookups(ccmp, commonLookups);
+//            addLookups(ccmp, inheritedLookups);
+            
+            featureList.addFeature(ccmp);
+        
+            String scriptTag = TagUtilities.tagLabel(UScript.getShortName(script));
+            
+            scriptList.addFeature(scriptTag, "(default)", ccmp);
+            
+            if (script == UScript.ARABIC) {
+                buildArabicTables(scriptList, featureList, lookupList, classTable);
+            }
+        }
+        
+        featureList.finalizeFeatureList();
+        
+        ClassTable markClassTable = buildCombiningClassTable();
+        
+        GSUBWriter gsubWriter = new GSUBWriter("Canon", scriptList, featureList, lookupList);
+        GDEFWriter gdefWriter = new GDEFWriter("Canon", classTable, markClassTable);
+        String[] includeFiles = {"LETypes.h", "CanonShaping.h"};        
+        
+        LigatureModuleWriter writer = new LigatureModuleWriter();
+        
+        writer.openFile(fileName);
+        writer.writeHeader(null, includeFiles);
+        writer.writeTable(gsubWriter);
+        writer.writeTable(gdefWriter);
+        writer.writeTrailer();
+        writer.closeFile();
+    }
+    
+    public static void main(String[] args)
+    {
+        buildDecompTables(args[0]);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java b/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java
new file mode 100644
index 0000000..3cd87f3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java
@@ -0,0 +1,216 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.CanonicalIterator;
+import com.ibm.icu.text.UTF16;
+import java.util.Vector;
+
+public class CanonicalCharacterData
+{
+    private static int THRESHOLD = 4;
+    
+    public class Record
+    {
+        // TODO: might want to save arrays of Char32's rather than UTF16 strings...
+        Record(int character, int script)
+        {
+            String char32 = UCharacter.toString(character);
+            CanonicalIterator iterator = new CanonicalIterator(char32);
+            Vector equivs = new Vector();
+            
+            composed = character;
+            
+            for (String equiv = iterator.next(); equiv != null; equiv = iterator.next()) {
+                // Skip all equivalents of length 1; it's either the original
+                // characeter or something like Angstrom for A-Ring, which we don't care about
+                if (UTF16.countCodePoint(equiv) > 1) {
+                    equivs.add(equiv);
+                }
+            }
+            
+            int nEquivalents = equivs.size();
+            
+            if (nEquivalents > maxEquivalents[script]) {
+                maxEquivalents[script] = nEquivalents;
+            }
+            
+            if (nEquivalents > 0) {
+                equivalents = new String[nEquivalents];
+                
+                if (nEquivalents > THRESHOLD) {
+                    dumpEquivalents(character, equivs);
+                }
+                
+                sortEquivalents(equivalents, equivs);
+            }
+        }
+        
+        public int getComposedCharacter()
+        {
+            return composed;
+        }
+        
+        public int countEquivalents()
+        {
+            if (equivalents == null) {
+                return 0;
+            }
+            
+            return equivalents.length;
+        }
+        
+        public String[] getEquivalents()
+        {
+            return equivalents;
+        }
+        
+        public String getEquivalent(int index)
+        {
+            if (equivalents == null || index < 0 || index >= equivalents.length) {
+                return null;
+            }
+            
+            return equivalents[index];
+        }
+        
+        private void dumpEquivalents(int character, Vector equivs)
+        {
+            int count = equivs.size();
+            
+            System.out.println(Utility.hex(character, 6) + " - " + count + ":");
+            
+            for (int i = 0; i < count; i += 1) {
+                String equiv = (String) equivs.elementAt(i);
+                int codePoints = UTF16.countCodePoint(equiv);
+                
+                for (int c = 0; c < codePoints; c += 1) {
+                    if (c > 0) {
+                        System.out.print(" ");
+                    }
+                    
+                    System.out.print(Utility.hex(UTF16.charAt(equiv, c), 6));
+                }
+                
+                System.out.println();
+            }
+            
+            System.out.println();
+        }
+        
+        private int composed;
+        private String[] equivalents = null;
+    }
+    
+    public CanonicalCharacterData()
+    {
+        // nothing to do...
+    }
+    
+    public void add(int character)
+    {
+        int script = UScript.getScript(character);
+        Vector recordVector = recordVectors[script];
+        
+        if (recordVector == null) {
+            recordVector = recordVectors[script] = new Vector();
+        }
+        
+        recordVector.add(new Record(character, script));
+    }
+    
+    public int getMaxEquivalents(int script)
+    {
+        if (script < 0 || script >= UScript.CODE_LIMIT) {
+            return 0;
+        }
+        
+        return maxEquivalents[script];
+    }
+    
+    public Record getRecord(int script, int index)
+    {
+        if (script < 0 || script >= UScript.CODE_LIMIT) {
+            return null;
+        }
+        
+        Vector recordVector = recordVectors[script];
+        
+        if (recordVector == null || index < 0 || index >= recordVector.size()) {
+            return null;
+        }
+        
+        return (Record) recordVector.elementAt(index);
+    }
+    
+    public int countRecords(int script)
+    {
+        if (script < 0 || script >= UScript.CODE_LIMIT ||
+            recordVectors[script] == null) {
+            return 0;
+        }
+        
+        return recordVectors[script].size();
+    }
+ 
+    public static CanonicalCharacterData factory(UnicodeSet characterSet)
+    {
+        int charCount = characterSet.size();
+        CanonicalCharacterData data = new CanonicalCharacterData();
+        
+        System.out.println("There are " + charCount + " characters with a canonical decomposition.");
+        
+        for (int i = 0; i < charCount; i += 1) {
+            data.add(characterSet.charAt(i));
+        }
+        
+        return data;
+    }
+
+    private static int compareEquivalents(String a, String b)
+    {
+        int result = UTF16.countCodePoint(a) - UTF16.countCodePoint(b);
+            
+        if (result == 0) {
+            return a.compareTo(b);
+        }
+            
+        return result;
+    }
+        
+    //
+    // Straight insertion sort from Knuth vol. III, pg. 81
+    //
+    private static void sortEquivalents(String[] equivalents, Vector unsorted)
+    {
+        int nEquivalents = equivalents.length;
+        
+        for (int e = 0; e < nEquivalents; e += 1) {
+            String v = (String) unsorted.elementAt(e);
+            int i;
+            
+            for (i = e - 1; i >= 0; i -= 1) {
+                if (compareEquivalents(v, equivalents[i]) >= 0) {
+                  break;
+                }
+
+                equivalents[i + 1] = equivalents[i];
+            }
+
+            equivalents[i + 1] = v;
+       }
+    }
+            
+    private Vector recordVectors[] = new Vector[UScript.CODE_LIMIT];
+    private int maxEquivalents[] = new int[UScript.CODE_LIMIT];
+
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ClassTable.java b/src/com/ibm/icu/dev/tool/layout/ClassTable.java
new file mode 100644
index 0000000..68bae04
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ClassTable.java
@@ -0,0 +1,237 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.*;
+
+import com.ibm.icu.impl.Utility;
+
+public class ClassTable implements LookupSubtable
+{
+    static class ClassEntry
+    {
+        private int glyphID;
+        private int classID;
+        
+        public ClassEntry(int glyphID, int classID)
+        {
+            this.glyphID = glyphID;
+            this.classID = classID;
+        }
+        
+        public int getGlyphID()
+        {
+            return glyphID;
+        }
+        
+        public int getClassID()
+        {
+            return classID;
+        }
+        
+        public int compareTo(ClassEntry that)
+        {
+            return this.glyphID - that.glyphID;
+        }
+        
+        //
+        // Straight insertion sort from Knuth vol. III, pg. 81
+        //
+        public static void sort(ClassEntry[] table, Vector unsorted)
+        {
+            for (int e = 0; e < table.length; e += 1) {
+                int i;
+                ClassEntry v = (ClassEntry) unsorted.elementAt(e);
+
+                for (i = e - 1; i >= 0; i -= 1) {
+                    if (v.compareTo(table[i]) >= 0) {
+                      break;
+                    }
+
+                    table[i + 1] = table[i];
+                }
+
+                table[i + 1] = v;
+            }
+        }
+        
+        public static int search(ClassEntry[] table, int glyphID)
+        {
+            int log2 = Utility.highBit(table.length);
+            int power = 1 << log2;
+            int extra = table.length - power;
+            int probe = power;
+            int index = 0;
+
+            if (table[extra].glyphID <= glyphID) {
+              index = extra;
+            }
+
+            while (probe > (1 << 0)) {
+                probe >>= 1;
+
+                if (table[index + probe].glyphID <= glyphID) {
+                    index += probe;
+                }
+            }
+
+            if (table[index].glyphID == glyphID) {
+                return index;
+            }
+
+            return -1;
+        }
+    }
+    
+    static class ClassRangeRecord
+    {
+        private int startGlyphID;
+        private int endGlyphID;
+        private int classID;
+        
+        public ClassRangeRecord(int startGlyphID, int endGlyphID, int classID)
+        {
+            this.startGlyphID = startGlyphID;
+            this.endGlyphID = endGlyphID;
+            this.classID = classID;
+        }
+        
+        public void write(OpenTypeTableWriter writer)
+        {
+            System.out.print(Utility.hex(startGlyphID, 6));
+            System.out.print(" - ");
+            System.out.print(Utility.hex(endGlyphID, 6));
+            System.out.print(": ");
+            System.out.println(classID);
+            
+            writer.writeData(startGlyphID);
+            writer.writeData(endGlyphID);
+            writer.writeData(classID);
+        }
+    }
+    
+    private Vector classMap;
+    private ClassEntry[] classTable;
+    private int snapshotSize;
+    
+    public ClassTable()
+    {
+        this.classMap = new Vector();
+        this.classTable = null;
+        this.snapshotSize = -1;
+        
+    }
+    
+    public void addMapping(int charID, int classID)
+    {
+        ClassEntry entry = new ClassEntry(charID, classID);
+        
+        classMap.addElement(entry);
+    }
+    
+    public void addMapping(int startCharID, int endCharID, int classID)
+    {
+        for (int charID = startCharID; charID <= endCharID; charID += 1) {
+            addMapping(charID, classID);
+        }
+    }
+    
+    public int getGlyphClassID(int glyphID)
+    {
+        int index = ClassEntry.search(classTable, glyphID);
+        
+        if (index >= 0) {
+            return classTable[index].getClassID();
+        }
+        
+        return 0;
+    }
+    
+    public void snapshot()
+    {
+        if (snapshotSize != classMap.size()) {
+            snapshotSize = classMap.size();
+            classTable = new ClassEntry[snapshotSize];
+
+            ClassEntry.sort(classTable, classMap);
+        }
+    }
+    
+    public void writeClassTable(OpenTypeTableWriter writer)
+    {
+        snapshot();
+        
+        Vector classRanges = new Vector();
+        int startIndex = 0;
+        
+        while (startIndex < classTable.length) {
+            int startID = classTable[startIndex].getGlyphID();
+            int classID = classTable[startIndex].getClassID();
+            int nextID = startID;
+            int endID = startID;
+            int endIndex;
+            
+            for (endIndex = startIndex; endIndex < classTable.length; endIndex += 1) {
+                if (classTable[endIndex].getGlyphID() != nextID ||
+                    classTable[endIndex].getClassID() != classID) {
+                    break;
+                }
+                
+                endID = nextID;
+                nextID += 1;
+            }
+            
+            if (classID != 0) {
+                ClassRangeRecord range = new ClassRangeRecord(startID, endID, classID);
+                
+                classRanges.addElement(range);
+            }
+            
+            startIndex = endIndex;
+        }
+        
+        writer.writeData(2);                    // table format = 2 (class ranges)
+        writer.writeData(classRanges.size());   // class range count
+        
+        for (int i = 0; i < classRanges.size(); i += 1) {
+            ClassRangeRecord range = (ClassRangeRecord) classRanges.elementAt(i);
+            
+            range.write(writer);
+        }
+    }
+
+    public void writeLookupSubtable(OpenTypeTableWriter writer)
+    {
+        int singleSubstitutionsBase = writer.getOutputIndex();
+        int coverageTableIndex;
+        
+        snapshot();
+        
+        writer.writeData(2); // format 2: Specified output glyph indices
+        coverageTableIndex = writer.getOutputIndex();
+        writer.writeData(0); // offset to coverage table (fixed later)
+        writer.writeData(classTable.length); // number of glyphIDs in substitution array
+        
+        for (int i = 0; i < classTable.length; i += 1) {
+            writer.writeData(classTable[i].getClassID());
+        }
+        
+        writer.fixOffset(coverageTableIndex, singleSubstitutionsBase);
+        writer.writeData(1);
+        writer.writeData(classTable.length);
+        
+        for (int i = 0; i < classTable.length; i += 1) {
+            writer.writeData(classTable[i].getGlyphID());
+        }
+    }
+}
+    
+    
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/DecompTable.java b/src/com/ibm/icu/dev/tool/layout/DecompTable.java
new file mode 100644
index 0000000..4ef51db
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/DecompTable.java
@@ -0,0 +1,184 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.text.UTF16;
+import java.util.Vector;
+
+/**
+ * @author Owner
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class DecompTable implements LookupSubtable
+{
+    static class DecompEntry
+    {
+        private int composed;
+        private int[] decomp;
+        
+        DecompEntry(int composedChar, String decomposition)
+        {
+            int decompCount = UTF16.countCodePoint(decomposition);
+            
+            composed = composedChar;
+            decomp = new int[decompCount];
+            
+            int out = 0, cp;
+            
+            for (int in = 0; in < decomposition.length(); in += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(decomposition, in);
+                decomp[out++] = cp;
+            }
+        }
+        
+        public int getComposedCharacter()
+        {
+            return composed;
+        }
+        
+        public int[] getDecomposition()
+        {
+            return decomp;
+        }
+        
+        public int getDecompositionCount()
+        {
+            return decomp.length;
+        }
+        
+        public int getDecomposedCharacter(int i)
+        {
+            if (i >= 0 && i < decomp.length) {
+                return decomp[i];
+            }
+            
+            return -1;
+        }
+        
+        public int compareTo(DecompEntry that)
+        {
+            return this.composed - that.composed;
+        }
+        
+        //
+        // Straight insertion sort from Knuth vol. III, pg. 81
+        //
+        public static void sort(DecompEntry[] table, Vector decompVector)
+        {
+            for (int j = 0; j < table.length; j += 1) {
+                int i;
+                DecompEntry v = (DecompEntry) decompVector.elementAt(j);
+
+                for (i = j - 1; i >= 0; i -= 1) {
+                    if (v.compareTo(table[i]) >= 0) {
+                      break;
+                    }
+
+                    table[i + 1] = table[i];
+                }
+
+                table[i + 1] = v;
+            }
+        }
+    }
+    
+    private Vector decompVector;
+    private DecompEntry[] decompEntries;
+    private int snapshotSize;
+    
+    public DecompTable()
+    {
+        decompVector = new Vector();
+        decompEntries = null;
+        snapshotSize = -1;
+    }
+    
+    public void add(int composed, String decomposition)
+    {
+        DecompEntry entry = new DecompEntry(composed, decomposition);
+        
+        decompVector.addElement(entry);
+    }
+    
+    public int getComposedCharacter(int i)
+    {
+        if (i < 0 || i > decompEntries.length) {
+            return -1;
+        }
+        
+        return decompEntries[i].getComposedCharacter();
+    }
+    
+    public int getDecompositionCount(int i)
+    {
+        if (i < 0 || i > decompEntries.length) {
+            return -1;
+        }
+        
+        return decompEntries[i].getDecompositionCount();
+    }
+    
+    public boolean hasEntries()
+    {
+        return decompVector.size() > 0;
+    }
+    
+    private void snapshot()
+    {
+        if (snapshotSize != decompVector.size()) {
+            snapshotSize = decompVector.size();
+            decompEntries = new DecompEntry[snapshotSize];
+            DecompEntry.sort(decompEntries, decompVector);
+        }
+    }
+
+    public void writeLookupSubtable(OpenTypeTableWriter writer)
+    {
+        snapshot();
+        
+        int multipleSubstitutionsBase = writer.getOutputIndex();
+        int coverageTableIndex, sequenceOffsetIndex;
+        int sequenceCount = decompEntries.length;
+        
+        writer.writeData(1); // format = 1
+        
+        coverageTableIndex = writer.getOutputIndex();
+        writer.writeData(0); // coverage table offset (fixed later)
+        
+        writer.writeData(sequenceCount);
+        
+        sequenceOffsetIndex = writer.getOutputIndex();
+        for (int s = 0; s < sequenceCount; s += 1) {
+            writer.writeData(0); // offset to sequence table (fixed later);
+        }
+        
+        for (int s = 0; s < sequenceCount; s += 1) {
+            DecompEntry entry = decompEntries[s];
+            int decompCount = entry.getDecompositionCount();
+            
+            writer.fixOffset(sequenceOffsetIndex++, multipleSubstitutionsBase);
+            
+            writer.writeData(decompCount); // glyphCount
+            
+            for (int g = 0; g < decompCount; g += 1) {
+                writer.writeData(entry.getDecomposedCharacter(g));
+            }
+        }
+        
+        // write a format 1 coverage table
+        writer.fixOffset(coverageTableIndex, multipleSubstitutionsBase);
+        writer.writeData(1); // format = 1
+        writer.writeData(sequenceCount);  // glyphCount
+        
+        for (int i = 0; i < sequenceCount; i += 1) {
+            writer.writeData(decompEntries[i].getComposedCharacter());
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/Feature.java b/src/com/ibm/icu/dev/tool/layout/Feature.java
new file mode 100644
index 0000000..7acf87d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/Feature.java
@@ -0,0 +1,59 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+
+class Feature extends TaggedRecord
+{
+    private int[] lookupIndices;
+    private int lookupCount;
+    private int featureIndex;
+    
+    public Feature(String theFeatureTag)
+    {
+        super(theFeatureTag);
+        
+        lookupIndices = new int[10];
+        lookupCount = 0;
+        featureIndex = -1;
+    }
+    
+    public void addLookup(int theLookupIndex)
+    {
+        if (lookupCount >= lookupIndices.length) {
+            int[] newLookupIndices = new int[lookupIndices.length + 5];
+            
+            System.arraycopy(lookupIndices, 0, newLookupIndices, 0, lookupIndices.length);
+            lookupIndices = newLookupIndices;
+        }
+        
+        lookupIndices[lookupCount] = theLookupIndex;
+        lookupCount += 1;
+    }
+    
+    public void writeFeature(OpenTypeTableWriter writer)
+    {
+        writer.writeData(0);      // featureParams (must be NULL)
+        
+        writer.writeData(lookupCount);
+        
+        for (int i = 0; i < lookupCount; i += 1) {
+            writer.writeData(lookupIndices[i]);
+        }
+    }
+    
+    public int getFeatureIndex()
+    {
+        return featureIndex;
+    }
+    
+    public void setFeatureIndex(int index)
+    {
+        featureIndex = index;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/FeatureList.java b/src/com/ibm/icu/dev/tool/layout/FeatureList.java
new file mode 100644
index 0000000..e7e61d5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/FeatureList.java
@@ -0,0 +1,77 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class FeatureList
+{
+    
+    private Feature[] features;
+    private int featureCount;
+    
+    public FeatureList()
+    {
+        features = new Feature[10];
+        featureCount = 0;
+    }
+        
+    public void addFeature(Feature feature)
+    {
+        if (featureCount >= features.length) {
+            Feature[] newFeatures = new Feature[features.length + 5];
+            
+            System.arraycopy(features, 0, newFeatures, 0, features.length);
+            features = newFeatures;
+        }
+        
+        features[featureCount++] = feature;
+    }
+    
+    public void finalizeFeatureList()
+    {
+        TaggedRecord.sort(features, featureCount);
+        
+        for (int i = 0; i < featureCount; i += 1) {
+            features[i].setFeatureIndex(i);
+        }
+    }
+    
+    public void writeFeaturetList(OpenTypeTableWriter writer)
+    {
+        System.out.print("writing feature list...");
+        
+        int featureListBase = writer.getOutputIndex();
+        
+        writer.writeData(featureCount);
+        
+        int featureRecordOffset = writer.getOutputIndex();
+        
+        for (int i = 0; i < featureCount; i += 1) {
+            String tag = features[i].getTag();
+            
+            System.out.print(" '" + tag + "'");
+            writer.writeTag(tag);
+            writer.writeData(0);
+        }
+        
+        for (int i = 0; i < featureCount; i += 1) {
+            // fix the offset in the featureRecordArray.
+            // The "+2" skips over the tag and the "+3"
+            // skips to the next featureRecord entry
+            writer.fixOffset(featureRecordOffset + 2, featureListBase);
+            featureRecordOffset += 3;
+            
+            features[i].writeFeature(writer);
+        }
+        
+        System.out.println();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java b/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java
new file mode 100644
index 0000000..e9c13f9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java
@@ -0,0 +1,67 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+
+
+
+class GDEFWriter extends OpenTypeTableWriter
+{
+    ClassTable classTable;
+    ClassTable markClassTable;
+    String scriptName;
+    
+    public GDEFWriter(String scriptName, ClassTable classTable, ClassTable markClassTable)
+    {
+        super(1024);
+        this.classTable     = classTable;
+        this.markClassTable = markClassTable;
+        this.scriptName     = scriptName;
+    }
+    
+    public void writeTable(PrintStream output)
+    {
+        System.out.println("Writing " + scriptName + " GDEF table...");
+        
+        // 0x0001000 (fixed1) version number
+        writeData(0x0001);
+        writeData(0x0000);
+        
+        int classDefOffset = getOutputIndex();
+        writeData(0); // glyphClassDefOffset (will fix later);
+        writeData(0); // attachListOffset
+        writeData(0); // ligCaretListOffset
+        writeData(0); // markAttachClassDefOffset
+        
+        fixOffset(classDefOffset++, 0);
+        
+        System.out.println("Writing glyph class definition table...");
+        classTable.writeClassTable(this);
+        
+        // skip over attachListOffset, ligCaretListOffset
+        classDefOffset += 2;
+        
+        if (markClassTable != null) {
+            fixOffset(classDefOffset, 0);
+            
+            System.out.println("Writing mark attach class definition table...");
+            markClassTable.writeClassTable(this);
+        }
+
+        output.print("const le_uint8 ");
+        output.print(scriptName);
+        output.println("Shaping::glyphDefinitionTable[] = {");
+        
+        dumpTable(output, 8);
+        output.println("};\n");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java b/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java
new file mode 100644
index 0000000..c6fcf37
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java
@@ -0,0 +1,64 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+
+
+public class GSUBWriter extends OpenTypeTableWriter
+{
+    private ScriptList scriptList;
+    private FeatureList featureList;
+    private LookupList lookupList;
+    private String scriptName;
+    
+    public GSUBWriter(String theScriptName, ScriptList theScriptList, FeatureList theFeatureList,
+                      LookupList theLookupList)
+    {
+        super(1024);
+        
+        scriptList  = theScriptList;
+        featureList = theFeatureList;
+        lookupList  = theLookupList;
+        scriptName  = theScriptName;
+    }
+    
+    public void writeTable(PrintStream output)
+    {
+        System.out.println("writing " + scriptName + " GSUB table...");
+        
+        // 0x00010000 (fixed1) version number
+        writeData(0x0001);
+        writeData(0x0000);
+        
+        int listOffset = getOutputIndex();
+        
+        writeData(0); // script list offset (fixed later)
+        writeData(0); // feature list offset (fixed later)
+        writeData(0); // lookup list offset (fixed later)
+        
+        fixOffset(listOffset++, 0);
+        scriptList.writeScriptList(this);
+        
+        fixOffset(listOffset++, 0);
+        featureList.writeFeaturetList(this);
+        
+        fixOffset(listOffset++, 0);
+        lookupList.writeLookupList(this);
+
+        output.print("const le_uint8 ");
+        output.print(scriptName);
+        output.println("Shaping::glyphSubstitutionTable[] = {");
+        
+        dumpTable(output, 8);
+        output.println("};\n");
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/LanguageData.java b/src/com/ibm/icu/dev/tool/layout/LanguageData.java
new file mode 100644
index 0000000..7895a31
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LanguageData.java
@@ -0,0 +1,186 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Apr 4, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+/**
+ * This class holds the list of languages.
+ * 
+ * @author emader
+ *
+ */
+public class LanguageData extends TagValueData
+{
+    public static class Record
+    {
+        private String tag;
+        private String name;
+        
+        public Record(String tag, String name)
+        {
+            this.tag = tag;
+            this.name = name;
+        }
+        
+        public String tag()
+        {
+            return tag;
+        }
+        
+        public String name()
+        {
+            return name;
+        }
+        
+        public String label()
+        {
+            return TagUtilities.tagLabel(tag);
+        }
+        
+        public String makeTag()
+        {
+            return TagUtilities.makeTag(tag);
+        }
+    }
+        
+    /*
+     * This is temporary data until there is some resolution between
+     * the OpenType language system tags and the ISO and RFC standards...
+     */
+    private Record[] languages =
+    {
+        new Record("",    "null"),
+        new Record("ARA", "Arabic"),
+        new Record("ASM", "Assamese"),
+        new Record("BEN", "Bengali"),
+        new Record("FAR", "Farsi"),
+        new Record("GUJ", "Gujarati"),
+        new Record("HIN", "Hindi"),
+        new Record("IWR", "Hebrew"),
+        new Record("JII", "Yiddish"),
+        new Record("JAN", "Japanese"),
+        new Record("KAN", "Kannada"),
+        new Record("KOK", "Konkani"),
+        new Record("KOR", "Korean"),
+        new Record("KSH", "Kashmiri"),
+        new Record("MAL", "Malayalam (Traditional)"),
+        new Record("MAR", "Marathi"),
+        new Record("MLR", "Malayalam (Reformed)"),
+        new Record("MNI", "Manipuri"),
+        new Record("ORI", "Oriya"),
+        new Record("SAN", "Sanscrit"),
+        new Record("SND", "Sindhi"),
+        new Record("SNH", "Sinhalese"),
+        new Record("SYR", "Syriac"),
+        new Record("TAM", "Tamil"),
+        new Record("TEL", "Telugu"),
+        new Record("THA", "Thai"),
+        new Record("URD", "Urdu"),
+        new Record("ZHP", "Chinese (Phonetic)"),
+        new Record("ZHS", "Chinese (Simplified)"),
+        new Record("ZHT", "Chinese (Traditional)"),
+        
+        // languages added on 03/13/2008
+        // TODO: need to deal with the fact that
+        // these codes should be @draft, and the above
+        // codes should be @final.
+        new Record("AFK", "Afrikaans"),
+        new Record("BEL", "Belarussian"),
+        new Record("BGR", "Bulgarian"),
+        new Record("CAT", "Catalan"),
+        new Record("CHE", "Chechen"),
+        new Record("COP", "Coptic"),
+        new Record("CSY", "Czech"),
+        new Record("DAN", "Danish"),
+        new Record("DEU", "German"),
+        new Record("DZN", "Dzongkha"),
+        new Record("ELL", "Greek"),
+        new Record("ENG", "English"),
+        new Record("ESP", "Spanish"),
+        new Record("ETI", "Estonian"),
+        new Record("EUQ", "Basque"),
+        new Record("FIN", "Finnish"),
+      //new Record("FLE", "Flemish"), // Flemish has the same ISO 639-2 code as Dutch (NLD)
+        new Record("FRA", "French"),
+        new Record("GAE", "Gaelic"),
+        new Record("HAU", "Hausa"),
+        new Record("HRV", "Croation"),
+        new Record("HUN", "Hungarian"),
+        new Record("HYE", "Armenian"),
+        new Record("IND", "Indonesian"),
+        new Record("ITA", "Italian"),
+        new Record("KHM", "Khmer"),
+        new Record("MNG", "Mongolian"),
+        new Record("MTS", "Maltese"),
+        new Record("NEP", "Nepali"),
+        new Record("NLD", "Dutch"),
+        new Record("PAS", "Pashto"),
+        new Record("PLK", "Polish"),
+        new Record("PTG", "Portuguese"),
+        new Record("ROM", "Romanian"),
+        new Record("RUS", "Russian"),
+        new Record("SKY", "Slovak"),
+        new Record("SLV", "Slovenian"),
+        new Record("SQI", "Albanian"),
+        new Record("SRB", "Serbian"),
+        new Record("SVE", "Swedish"),
+        new Record("TIB", "Tibetan"),
+        new Record("TRK", "Turkish"),
+        new Record("WEL", "Welsh")
+    };
+    
+    private int minLanguage = 0;
+    private int maxLanguage = minLanguage + languages.length - 1;
+    
+    public int getMinValue()
+    {
+        return minLanguage;
+    }
+    
+    public int getMaxValue()
+    {
+        return maxLanguage;
+    }
+    
+    public String getTag(int value)
+    {
+        if (value < minLanguage || value > maxLanguage) {
+            return null;
+        }
+        
+        return languages[value - minLanguage].tag();
+    }
+    
+    public String getTagLabel(int value)
+    {
+        if (value < minLanguage || value > maxLanguage) {
+            return null;
+        }
+        
+        return languages[value - minLanguage].label();
+    }
+    
+    public String makeTag(int value)
+    {
+        if (value < minLanguage || value > maxLanguage) {
+            return null;
+        }
+        
+        return languages[value - minLanguage].makeTag();
+    }
+    
+    public String getName(int value) {
+        if (value < minLanguage || value > maxLanguage) {
+            return "(UNKNOWN)";
+        }
+        
+        return languages[value - minLanguage].name();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java b/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java
new file mode 100644
index 0000000..ce06a34
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class LigatureEntry
+{
+    private int[] componentChars;
+    private int ligature;
+    
+    public LigatureEntry(int ligature, int[] componentChars, int componentCount)
+    {
+        this.componentChars = new int[componentCount];
+        this.ligature = ligature;
+        System.arraycopy(componentChars, 0, this.componentChars, 0, componentCount);
+}
+    
+    public int getComponentCount()
+    {
+        return componentChars.length;
+    }
+    
+    public int getComponentChar(int componentIndex)
+    {
+        return componentChars[componentIndex];
+    }
+    
+    public int getLigature()
+    {
+        return ligature;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java
new file mode 100644
index 0000000..c15209f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java
@@ -0,0 +1,25 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class LigatureModuleWriter extends ModuleWriter
+{
+    public LigatureModuleWriter()
+    {
+        super();
+    }
+
+    public void writeTable(OpenTypeTableWriter tableWriter)
+    {
+        tableWriter.writeTable(output);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/LigatureTree.java b/src/com/ibm/icu/dev/tool/layout/LigatureTree.java
new file mode 100644
index 0000000..f6f2604
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LigatureTree.java
@@ -0,0 +1,247 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.Utility;
+
+public class LigatureTree
+{
+    static class Lignode
+    {
+        int target;
+        int ligature = -1;
+        Lignode[] subnodes = null;
+
+        Lignode()
+        {
+            target = -1;
+        }
+
+        Lignode(int target)
+        {
+            this.target = target;
+        }
+
+        boolean isMatch()
+        {
+            return ligature != -1;
+        }
+
+        int getLigature()
+        {
+            return ligature;
+        }
+
+        Lignode subnode(int c)
+        {
+            if (subnodes != null) {
+                int len = subnodes.length;
+
+                if (c <= subnodes[len - 1].target) {
+                    for (int i = 0; i < len; i+= 1) {
+                        int t = subnodes[i].target;
+
+                        if (t > c) {
+                            return null;
+                        }
+
+                        if (t == c) {
+                            return subnodes[i];
+                        }
+                    }
+                }
+            }
+
+            return null;
+        }
+
+        String ligatureString(int[] chars)
+        {
+            StringBuffer result = new StringBuffer();
+            int len = chars.length - 1;
+            
+            for (int i = 0; i < len; i += 1) {
+                if (i > 0) {
+                    result.append(" + ");
+                }
+                
+                result.append(Utility.hex(chars[i], 6));
+           }
+            
+            result.append(" => " + Utility.hex(chars[len], 6));
+            
+            return result.toString();
+        }
+        
+        void insert(int[] chars, int index)
+        {
+            int c = chars[index];
+            int len = chars.length;
+
+            if (len == index + 1) {
+                if (ligature != -1) {
+                    System.out.println("ignoring ligature " + ligatureString(chars) +
+                                       ": already have " + Utility.hex(ligature, 6));
+                } else {
+                    ligature = c;
+                }
+
+                return;
+            }
+
+            if (subnodes == null) {
+                subnodes = new Lignode[1];
+                subnodes[0] = new Lignode(c);
+                subnodes[0].insert(chars, index + 1);
+            } else {
+                int i;
+
+                for (i = 0; i < subnodes.length; i += 1)
+                {
+                    int t = subnodes[i].target;
+
+                    if (t == c) {
+                        subnodes[i].insert(chars, index + 1);
+                        return;
+                    } else if (t > c) {
+                        break;
+                    }
+                }
+
+                Lignode[] nnodes = new Lignode[subnodes.length + 1];
+
+                if (i > 0) {
+                    System.arraycopy(subnodes, 0, nnodes, 0, i);
+                }
+
+                nnodes[i] = new Lignode(c);
+
+                if (i < subnodes.length) {
+                    System.arraycopy(subnodes, i, nnodes, i + 1, subnodes.length - i);
+                }
+
+                subnodes = nnodes;
+
+                subnodes[i].insert(chars, index + 1);
+            }
+        }
+        
+        public void walk(TreeWalker walker)
+        {
+            if (target != -1) {
+                walker.down(target);
+            }
+            
+            if (subnodes != null) {
+                for (int i = 0; i < subnodes.length; i += 1)
+                {
+                    subnodes[i].walk(walker);
+                }
+            }
+            
+            if (ligature != -1) {
+                walker.ligature(ligature);
+            }
+                
+            walker.up();
+        }
+
+        static final String ind = "                                      ";
+
+        /*
+         * Write debugging information to w, starting at the provided indentation level.
+         */
+        public void dump(Writer w, int indent)
+        {
+            String tab = ind.substring(0, Math.min(indent, ind.length()));
+
+            try {
+                w.write(tab);
+                if (target != -1) {
+                    w.write(Utility.hex(target, 6));
+                }
+                
+                if (ligature != -1)
+                {
+                    w.write(" --> ");
+                    w.write(Utility.hex(ligature, 6));
+                }
+                
+                w.write("\n");
+                
+                if (subnodes != null) {
+                    w.write(tab);
+                    w.write("{\n");
+                    indent += 4;
+                    
+                    for (int i = 0; i < subnodes.length; i += 1) {
+                        subnodes[i].dump(w, indent);
+                    }
+                    
+                    w.write(tab);
+                    w.write("}\n");
+                }
+            } catch (IOException e) {
+                System.out.println(e);
+            }
+        }
+
+    }
+
+    private Lignode root = new Lignode();
+    
+    public LigatureTree()
+    {
+        // anything?
+    }
+
+    private int[] toIntArray(String s)
+    {
+        int count = UTF16.countCodePoint(s);
+        int[] result = new int[count];
+        
+        for (int i = 0; i < count; i += 1) {
+            result[i] = UTF16.charAt(s, i);
+        }
+        
+        return result;
+    }
+
+    public void insert(String string)
+    {
+        root.insert(toIntArray(string), 0);
+    }
+    
+    public void insert(int[] chars)
+    {
+        root.insert(chars, 0);
+    }
+    
+    public void walk(TreeWalker walker)
+    {
+        root.walk(walker);
+        walker.done();
+    }
+    
+    public void dump()
+    {
+        PrintWriter pw = new PrintWriter(System.out);
+        
+        root.dump(pw, 0);
+        pw.flush();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java b/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java
new file mode 100644
index 0000000..f687e4f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java
@@ -0,0 +1,144 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.Vector;
+
+import com.ibm.icu.impl.Utility;
+
+public class LigatureTreeWalker extends TreeWalker implements LookupSubtable
+{
+    protected int[] componentChars;
+    protected int componentCount;
+    protected int lastFirstComponent;
+
+    protected Vector ligatureSets;
+    protected Vector ligatureSet;
+    
+    public LigatureTreeWalker()
+    {
+        componentChars = new int[30];
+        componentCount = 0;
+        lastFirstComponent = -1;
+        ligatureSet = null;
+        ligatureSets = new Vector();
+    }
+
+    public void down(int ch)
+    {
+        componentChars[componentCount] = ch;
+        componentCount += 1;
+    }
+
+    public void up()
+    {
+        if (componentCount > 0) {
+            componentCount -= 1;
+        }
+    }
+
+    public void ligature(int lig)
+    {
+        int firstComponent = componentChars[0];
+
+        if (lastFirstComponent != firstComponent) {
+            if (ligatureSet != null) {
+                ligatureSets.addElement(ligatureSet);
+            }
+
+            ligatureSet = new Vector();
+            lastFirstComponent = firstComponent;
+        }
+
+        ligatureSet.addElement(new LigatureEntry(lig, componentChars, componentCount));
+    }
+
+    public void done()
+    {
+        if (ligatureSet != null) {
+            ligatureSets.addElement(ligatureSet);
+        }
+    }
+    protected int firstComponentChar(int ligatureSetIndex)
+    {
+        Vector aLigatureSet = (Vector) ligatureSets.elementAt(ligatureSetIndex);
+        LigatureEntry firstEntry = (LigatureEntry) aLigatureSet.elementAt(0);
+
+        return firstEntry.getComponentChar(0);
+    }
+
+    protected void writeCoverageTable(OpenTypeTableWriter writer)
+    {
+        int ligatureSetCount = ligatureSets.size();
+
+        writer.writeData(1);
+        writer.writeData(ligatureSetCount);
+
+        for (int set = 0; set < ligatureSetCount; set += 1) {
+            writer.writeData(firstComponentChar(set));
+        }
+    }
+    
+    public void writeLookupSubtable(OpenTypeTableWriter writer)
+    {
+        int coverageOffset, ligatureSetOffset, ligatureTableOffset;
+        int ligatureSubstitutionBase = writer.getOutputIndex();
+        int ligatureSetCount = ligatureSets.size();
+        
+        //System.out.println("Writing " + tableName + "...");
+
+        writer.writeData(1);   // substFormat
+        
+        coverageOffset = writer.getOutputIndex();
+        writer.writeData(0);   // coverageTableOffset (will fix later)
+        
+        writer.writeData(ligatureSetCount);
+
+        ligatureSetOffset = writer.getOutputIndex();
+        for (int set = 0; set < ligatureSetCount; set += 1) {
+            writer.writeData(0);  // ligatureSet offset - will fix later
+        }
+        
+        for (int set = 0; set < ligatureSetCount; set += 1) {
+            System.out.print(Utility.hex(firstComponentChar(set), 6) + ": ");
+            
+            Vector aLigatureSet = (Vector) ligatureSets.elementAt(set);
+            int ligatureCount = aLigatureSet.size();
+            int ligatureSetAddress = writer.getOutputIndex();
+            
+            System.out.println(ligatureCount + " ligatures.");
+            
+            writer.fixOffset(ligatureSetOffset++, ligatureSubstitutionBase);
+            writer.writeData(ligatureCount);
+            
+            ligatureTableOffset = writer.getOutputIndex();
+            for (int lig = 0; lig < ligatureCount; lig += 1) {
+                writer.writeData(0);  // ligatureTableOffset (will fix later)
+            }
+            
+            for (int lig = 0; lig < ligatureCount; lig += 1) {
+                LigatureEntry entry = (LigatureEntry) aLigatureSet.elementAt(lig);
+                int compCount = entry.getComponentCount();
+                
+                writer.fixOffset(ligatureTableOffset++, ligatureSetAddress);
+                writer.writeData(entry.getLigature());
+                writer.writeData(compCount);
+                
+                for (int comp = 1; comp < compCount; comp += 1) {
+                    writer.writeData(entry.getComponentChar(comp));
+                }
+            }
+        }
+        
+        writer.fixOffset(coverageOffset, ligatureSubstitutionBase); 
+        writeCoverageTable(writer);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/Lookup.java b/src/com/ibm/icu/dev/tool/layout/Lookup.java
new file mode 100644
index 0000000..cfca302
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/Lookup.java
@@ -0,0 +1,89 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public /*abstract*/ class Lookup
+{
+    private int lookupType;
+    private int lookupFlags;
+    private LookupSubtable[] subtables;
+    private int subtableCount;
+    
+    // Lookup flags
+    public final static int LF_ReservedBit          = 0x0001;
+    public final static int LF_IgnoreBaseGlyphs     = 0x0002;
+    public final static int LF_IgnoreLigatures      = 0x0004;
+    public final static int LF_IgnoreMarks          = 0x0008;
+    public final static int LF_ReservedMask         = 0x00F0;
+    public final static int LF_MarkAttachTypeMask   = 0xFF00;
+    public final static int LF_MarkAttachTypeShift  = 8;
+    
+    // GSUB lookup types
+    public final static int GSST_Single          = 1;
+    public final static int GSST_Multiple        = 2;
+    public final static int GSST_Alternate       = 3;
+    public final static int GSST_Ligature        = 4;
+    public final static int GSST_Context         = 5;
+    public final static int GSST_ChainingContext = 6;
+
+    // GPOS lookup types
+    public final static int GPST_Single          = 1;
+    public final static int GPST_Pair            = 2;
+    public final static int GPST_Cursive         = 3;
+    public final static int GPST_MarkToBase      = 4;
+    public final static int GPST_MarkToLigature  = 5;
+    public final static int GPST_MarkToMark      = 6;
+    public final static int GPST_Context         = 7;
+    public final static int GPST_ChainingContext = 8;
+    
+    public Lookup(int theLookupType, int theLookupFlags)
+    {
+        lookupType = theLookupType;
+        lookupFlags = theLookupFlags;
+        
+        subtables = new LookupSubtable[10];
+        subtableCount = 0;
+    }
+    
+    public void addSubtable(LookupSubtable subtable)
+    {
+        if (subtableCount >= subtables.length) {
+            LookupSubtable[] newSubtables = new LookupSubtable[subtables.length + 5];
+            
+            System.arraycopy(subtables, 0, newSubtables, 0, subtables.length);
+            subtables = newSubtables;
+        }
+        
+        subtables[subtableCount] = subtable;
+        subtableCount += 1;
+    }
+    
+    public void writeLookup(OpenTypeTableWriter writer)
+    {
+        int lookupBase = writer.getOutputIndex();
+        
+        writer.writeData(lookupType);
+        writer.writeData(lookupFlags);
+        writer.writeData(subtableCount);
+        
+        int subtableOffset = writer.getOutputIndex();
+        
+        for (int i = 0; i < subtableCount; i += 1) {
+            writer.writeData(0);
+        }
+        
+        for (int i = 0; i < subtableCount; i += 1) {
+            writer.fixOffset(subtableOffset++, lookupBase);
+            subtables[i].writeLookupSubtable(writer);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/LookupList.java b/src/com/ibm/icu/dev/tool/layout/LookupList.java
new file mode 100644
index 0000000..7de5711
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LookupList.java
@@ -0,0 +1,57 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class LookupList
+{
+    private Lookup[] lookups;
+    private int lookupCount;
+    
+    public LookupList()
+    {
+        lookups = new Lookup[10];
+        lookupCount = 0;
+    }
+    
+    public int addLookup(Lookup lookup)
+    {
+        if (lookupCount >= lookups.length) {
+            Lookup[] newLookups = new Lookup[lookups.length + 5];
+            
+            System.arraycopy(lookups, 0, newLookups, 0, lookups.length);
+            lookups = newLookups;
+        }
+        
+        lookups[lookupCount] = lookup;
+        
+        return lookupCount++;
+    }
+    
+    public void writeLookupList(OpenTypeTableWriter writer)
+    {
+        System.out.println("writing lookup list...");
+        
+        int lookupListBase = writer.getOutputIndex();
+        
+        writer.writeData(lookupCount);
+        
+        int lookupOffset = writer.getOutputIndex();
+        
+        for (int i = 0; i < lookupCount; i += 1) {
+            writer.writeData(0); // Offset to lookup (fixed later);
+        }
+        
+        for (int i = 0; i < lookupCount; i += 1) {
+            writer.fixOffset(lookupOffset++, lookupListBase);
+            lookups[i].writeLookup(writer);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java b/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java
new file mode 100644
index 0000000..1ab0143
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java
@@ -0,0 +1,16 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public interface LookupSubtable
+{
+    void writeLookupSubtable(OpenTypeTableWriter writer);
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
new file mode 100644
index 0000000..476e076
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.BufferedReader;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Date;
+
+import com.ibm.icu.text.MessageFormat;
+
+public class ModuleWriter
+{
+    private static final String BUILDER_FILE_PATH="src/com/ibm/icu/dev/tool/layout/"; 
+        
+    public ModuleWriter()
+    {
+        wroteDefine = false;
+        output = null;
+    }
+
+    public void openFile(String outputFileName) {
+        try
+        {
+            output = new PrintStream(
+                new FileOutputStream(BUILDER_FILE_PATH+outputFileName));
+        } catch (IOException e) {
+            System.out.println("? Could not open " + outputFileName + " for writing.");
+            return;
+        }
+    
+        wroteDefine = false;
+        System.out.println("Writing module " + outputFileName + "...");
+    }
+
+    public void writeHeader(String define, String[] includeFiles)
+    {
+        writeHeader(define, includeFiles, null);
+    }
+    
+    public void writeHeader(String define, String[] includeFiles, String brief)
+    {
+        MessageFormat format = new MessageFormat(moduleHeader);
+        Object args[] = {new Date(System.currentTimeMillis())};
+
+        output.print(format.format(args));
+        
+        if (define != null) {
+            wroteDefine = true;
+            output.print("#ifndef ");
+            output.println(define);
+            
+            output.print("#define ");
+            output.println(define);
+            
+            output.println();
+        }
+        
+        if (includeFiles != null) {
+            for (int i = 0; i < includeFiles.length; i += 1) {
+                output.print("#include \"");
+                output.print(includeFiles[i]);
+                output.println("\"");
+            }
+            
+            output.println();
+        }
+        
+        if (brief != null) {
+            output.print(brief);
+        }
+        
+        output.println(moduleBegin);
+    }
+
+    public void writeTrailer() {
+        output.print(moduleTrailer);
+        
+        if (wroteDefine) {
+            output.println("#endif");
+            
+        }
+    }
+
+    public void closeFile() {
+        System.out.println("Done.");
+        output.close();
+    }
+
+    protected boolean wroteDefine;
+    
+    protected PrintStream output;
+    
+    protected BufferedReader reader;
+    protected PrintStream updateFile;
+    protected int previousTotalScripts;
+    protected int previousTotalLanguages;
+    protected ArrayList scriptVersionNumber = new ArrayList();
+    protected ArrayList languageVersionNumber = new ArrayList();
+    
+    public void openScriptAndLanguages(String name){
+        try
+        {
+            updateFile = new PrintStream(new FileOutputStream(BUILDER_FILE_PATH+name));
+        } catch (IOException e) {
+            System.out.println("? Could not open " + name + " for writing.");
+            return;
+        }
+    }
+    
+    public void readFile(String file, String what){
+        try
+        {
+           reader = new BufferedReader(new FileReader(BUILDER_FILE_PATH+file));
+           String inputText = "";
+           String versionToAdd = "";
+           while((inputText=reader.readLine())!=null){
+               if(what.equals("script") && inputText.indexOf("Script=") >= 0){
+                   previousTotalScripts = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
+               }else if(what.equals("languages") && inputText.indexOf("Language=") >= 0){
+                   previousTotalLanguages = Integer.parseInt(inputText.substring(inputText.indexOf("=")+1));
+               }else if(what.equals("script") && inputText.indexOf("Scripts={") >= 0){
+                   while((versionToAdd=reader.readLine()).indexOf("}") == -1){
+                       scriptVersionNumber.add(versionToAdd);
+                   }
+               }else if(what.equals("languages") && inputText.indexOf("Languages={") >= 0){
+                   while((versionToAdd=reader.readLine()).indexOf("}") == -1){
+                       languageVersionNumber.add(versionToAdd);
+                   }
+               }
+           }
+           reader.close();
+           
+        } catch (IOException e) {
+            System.out.println("? Could not open " + file + " for reading.");
+            return;
+        }
+    }
+    
+    
+    
+    protected static final String moduleHeader =
+        "/*\n" +
+        " *\n" +
+        " * (C) Copyright IBM Corp. 1998-{0,date,yyyy}. All Rights Reserved.\n" +
+        " *\n" +
+        " * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS\n" +
+        " * YOU REALLY KNOW WHAT YOU''RE DOING.\n" +
+        " *\n" +
+        " * Generated on: {0,date,MM/dd/yyyy hh:mm:ss a z}\n" +
+        " */\n" +
+        "\n";
+
+    protected static final String moduleBegin = "U_NAMESPACE_BEGIN\n";
+
+    protected static final String moduleTrailer = "U_NAMESPACE_END\n";
+
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java b/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java
new file mode 100644
index 0000000..a16d831
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java
@@ -0,0 +1,128 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+import java.io.PrintStream;
+
+import com.ibm.icu.impl.Utility;
+
+abstract class OpenTypeTableWriter
+{
+    static class OpenTypeTableDumper
+    {
+        private short[] table;
+        private int tableLength;
+        
+        OpenTypeTableDumper(short[] data, int outputIndex)
+        {
+            table = data;
+            tableLength = outputIndex;
+        }
+        
+        int length()
+        {
+            return tableLength;
+        }
+        
+        void appendValue(StringBuffer line, int index)
+        {
+            short value = table[index];
+            
+            line.append("0x");
+            line.append(Utility.hex((value >> 8) & 0xFF, 2));
+            line.append(", ");
+
+            line.append("0x");
+            line.append(Utility.hex(value & 0xFF, 2));
+        }
+
+        void dumpTable(PrintStream output, int valuesPerLine) {
+            StringBuffer line = new StringBuffer("    "); // four spaces
+            int maxIndex = length();
+        
+            for (int i = 0; i < maxIndex; i += 1) {
+                
+                if (i > 0 && i % valuesPerLine == 0) {
+                    output.println(line.toString());
+                    line.setLength(4);
+                }
+        
+                appendValue(line, i);
+                line.append(", ");
+            }
+        
+            line.setLength(line.length() - 2);
+        
+            output.println(line.toString());
+        }
+    }
+            
+    protected short[] data;
+    protected int outputIndex;
+
+    public OpenTypeTableWriter(int initialBufferSize)
+    {
+        data = new short[initialBufferSize];
+        outputIndex = 0;
+    }
+    
+    public OpenTypeTableWriter()
+    {
+        this(1024);
+    }
+    
+    public int getOutputIndex()
+    {
+        return outputIndex;
+    }
+    
+    public void writeData(int value)
+    {
+        if (outputIndex >= data.length)
+        {
+            short[] newData = new short[data.length + 512];
+            
+            System.arraycopy(data, 0, newData, 0, data.length);
+            
+            data = newData;
+        }
+        
+        data[outputIndex] = (short) value;
+        outputIndex += 1;
+    }
+    
+    public void writeTag(String tag)
+    {
+        char[] charArray = {'\0', '\0', '\0', '\0'};
+        int max = Math.min(tag.length(), 4);
+        
+        tag.getChars(0, max, charArray, 0);
+        
+        writeData(((charArray[0] & 0xFF) << 8) + (charArray[1] & 0xFF));
+        writeData(((charArray[2] & 0xFF) << 8) + (charArray[3] & 0xFF));
+    }
+    
+    public void fixOffset(int offset, int base)
+    {
+        // * 2 to convert from short to byte index
+        data[offset] = (short) ((outputIndex - base) * 2);
+    }
+    
+    public void dumpTable(PrintStream output, int valuesPerLine)
+    {
+        OpenTypeTableDumper dumper = new OpenTypeTableDumper(data, outputIndex);
+        
+        dumper.dumpTable(output, valuesPerLine);
+    }
+    
+    abstract public void writeTable(PrintStream output);
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java b/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java
new file mode 100644
index 0000000..93e111a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java
@@ -0,0 +1,235 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+/**
+ * @author emader
+ *
+ */
+public class OpenTypeTagBuilder
+{
+    private static String[] tableTags = {
+        "acnt",
+        "avar",
+        "BASE",
+        "bdat",
+        "bhed",
+        "bloc",
+        "bsln",
+        "CFF ",
+        "cmap",
+        "cvar",
+        "cvt ",
+        "DSIG",
+        "EBDT",
+        "EBLC",
+        "EBSC",
+        "fdsc",
+        "feat",
+        "fmtx",
+        "fpgm",
+        "fvar",
+        "gasp",
+        "GDEF",
+        "glyf",
+        "GPOS",
+        "GSUB",
+        "gvar",
+        "hdmx",
+        "head",
+        "hhea",
+        "hmtx",
+        "hsty",
+        "just",
+        "JSTF",
+        "kern",
+        "lcar",
+        "loca",
+        "LTSH",
+        "maxp",
+        "mort",
+        "morx",
+        "name",
+        "opbd",
+        "OS/2",
+        "PCLT",
+        "post",
+        "prep",
+        "prop",
+        "trak",
+        "VDMX",
+        "vhea",
+        "vmtx",
+        "VORG",
+        "Zapf"
+    };
+
+    private static String[] featureTags = {
+        "aalt",
+        "abvf",
+        "abvm",
+        "abvs",
+        "afrc",
+        "akhn",
+        "blwf",
+        "blwm",
+        "blws",
+        "calt",
+        "case",
+        "ccmp",
+        "clig",
+        "cpsp",
+        "cswh",
+        "curs",
+        "c2sc",
+        "c2pc",
+        "dist",
+        "dlig",
+        "dnom",
+        "expt",
+        "falt",
+        "fin2",
+        "fin3",
+        "fina",
+        "frac",
+        "fwid",
+        "half",
+        "haln",
+        "halt",
+        "hist",
+        "hkna",
+        "hlig",
+        "hngl",
+        "hwid",
+        "init",
+        "isol",
+        "ital",
+        "jalt",
+        "jp78",
+        "jp83",
+        "jp90",
+        "kern",
+        "lfbd",
+        "liga",
+        "ljmo",
+        "lnum",
+        "locl",
+        "mark",
+        "med2",
+        "medi",
+        "mgrk",
+        "mkmk",
+        "mset",
+        "nalt",
+        "nlck",
+        "nukt",
+        "numr",
+        "onum",
+        "opbd",
+        "ordn",
+        "ornm",
+        "palt",
+        "pcap",
+        "pnum",
+        "pref",
+        "pres",
+        "pstf",
+        "psts",
+        "pwid",
+        "qwid",
+        "rand",
+        "rlig",
+        "rphf",
+        "rtbd",
+        "rtla",
+        "ruby",
+        "salt",
+        "sinf",
+        "size",
+        "smcp",
+        "smpl",
+        "ss01",
+        "ss02",
+        "ss03",
+        "ss04",
+        "ss05",
+        "ss06",
+        "ss07",
+        "ss08",
+        "ss09",
+        "ss10",
+        "ss11",
+        "ss12",
+        "ss13",
+        "ss14",
+        "ss15",
+        "ss16",
+        "ss17",
+        "ss18",
+        "ss19",
+        "ss20",
+        "subs",
+        "sups",
+        "swsh",
+        "titl",
+        "tjmo",
+        "tnam",
+        "tnum",
+        "trad",
+        "twid",
+        "unic",
+        "valt",
+        "vatu",
+        "vert",
+        "vhal",
+        "vjmo",
+        "vkna",
+        "vkrn",
+        "vpal",
+        "vrt2",
+        "zero"
+    };
+    
+    private static String tagLabel(String tag)
+    {
+        StringBuffer result = new StringBuffer();
+        String upperTag = tag.toUpperCase();
+        
+        for (int i = 0; i < upperTag.length(); i += 1) {
+            char ch = upperTag.charAt(i);
+            
+            if ((ch < 'A' || ch > 'Z') && (ch < '0' || ch > '9')) {
+                ch = '_';
+            }
+            
+            result.append(ch);
+        }
+        
+        return result.toString();
+    }
+    
+    private static void dumpTags(String enumName, String[] tags)
+    {
+        System.out.println("enum LE" + enumName + "Tags {");
+        
+        for (int i = 0; i < tags.length; i += 1) {
+            String tag = tags[i];
+            
+            System.out.println("    LE_" + tagLabel(tag) + "_" + enumName.toUpperCase() +
+                "_TAG = " + TagUtilities.makeTag(tag) + "UL" +
+                (i == tags.length - 1? " " : ",") + " /* '" + tag + "' */");
+        }
+        
+        System.out.println("};");
+    }
+    
+    public static void main(String[] args)
+    {
+        dumpTags("Table", tableTags);
+        dumpTags("Feature", featureTags);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages b/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages
new file mode 100644
index 0000000..d246813
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages
@@ -0,0 +1,28 @@
+/*
+ *
+ * (C) Copyright IBM Corp. 1998-2008. All Rights Reserved.
+ *
+ * WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT UNLESS
+ * YOU REALLY KNOW WHAT YOU'RE DOING.
+ *
+ * Generated on: 09/24/2008 01:17:42 PM PDT
+ */
+
+ICU Version=4.1
+Total Script=129
+Total Language=71
+Scripts={
+	 ICU_2.2=40
+	 ICUCanadian_2.6=1
+	 ICUCanadian_2.2=5
+	 ICU_2.6=8
+	 ICU_3.0=1
+	 ICU_3.4=7
+	 ICU_3.6=42
+	 ICU_3.8=12
+	 ICU_4.0=14
+        }
+Languages={
+	   ICU_2.6=30
+	   ICU_4.0=42
+          }
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptData.java b/src/com/ibm/icu/dev/tool/layout/ScriptData.java
new file mode 100644
index 0000000..d86aad5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptData.java
@@ -0,0 +1,246 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.*;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.impl.Utility;
+
+public class ScriptData extends TagValueData
+{
+    public static class Record
+    {
+        private int startChar;
+        private int endChar;
+        private int scriptCode;
+        
+        Record()
+        {
+            // nothing?
+        }
+        
+        Record(int theChar, int theScriptCode)
+        {
+            this(theChar, theChar, theScriptCode);
+        }
+        
+        Record(int theStartChar, int theEndChar, int theScriptCode)
+        {
+            startChar = theStartChar;
+            endChar = theEndChar;
+            scriptCode = theScriptCode;
+        }
+        
+        public int startChar()
+        {
+            return startChar;
+        }
+        
+        public int endChar()
+        {
+            return endChar;
+        }
+        
+        public int scriptCode()
+        {
+            return scriptCode;
+        }
+        
+        public int compareTo(Record that)
+        {
+            return this.startChar - that.startChar;
+        }
+        
+        public String toString()
+        {
+            return "[" +  Utility.hex(startChar, 6) + ".." +
+                   Utility.hex(endChar, 6) + ", " +
+                   UScript.getShortName(scriptCode).toLowerCase() + "ScriptCode]";
+        }
+    }
+    
+    // TODO: Exceptions could be generated algorithmically
+    private static class TagException
+    {
+        private String icuTag;
+        private String otTag;
+        
+        public TagException(String icu, String ot)
+        {
+            icuTag = icu;
+            otTag  = ot;
+        }
+        
+        public String getICUTag()
+        {
+            return icuTag;
+        }
+        
+        public String getOTTag()
+        {
+            return otTag;
+        }
+    }
+    
+    // TODO: short name longer than long name, replace repeated chars w/ space...
+    private ScriptData.TagException exceptions[] = {
+            new ScriptData.TagException("laoo", "lao "),
+            new ScriptData.TagException("nkoo", "nko "), // New code from ISO 15924, not sure this will be OT tag
+            new ScriptData.TagException("vaii", "vai "), // New code from ISO 15924, not sure this will be OT tag
+            new ScriptData.TagException("yiii", "yi  ")
+        };
+        
+    
+    // TODO: binary search the exceptions list?
+    private String getException(String icu)
+    {
+        for(int i = 0; i < exceptions.length; i += 1) {
+            if (exceptions[i].getICUTag().equals(icu)) {
+                return exceptions[i].getOTTag();
+            }
+        }
+        
+        return icu;
+    }
+        
+    //
+    // Straight insertion sort from Knuth vol. III, pg. 81
+    //
+    private void sort()
+    {
+        for (int j = 1; j < fRecords.length; j += 1) {
+            int i;
+            Record v = fRecords[j];
+
+            for (i = j - 1; i >= 0; i -= 1) {
+                if (v.compareTo(fRecords[i]) >= 0) {
+                    break;
+                }
+
+                fRecords[i + 1] = fRecords[i];
+            }
+
+            fRecords[i + 1] = v;
+        }
+    }
+
+    ScriptData()
+    {
+        int commonScript = UCharacter.getPropertyValueEnum(UProperty.SCRIPT, "COMMON");
+        int scriptCount;
+        Vector rv = new Vector();
+        
+        fMinScript  = UCharacter.getIntPropertyMinValue(UProperty.SCRIPT);
+        fMaxScript  = UCharacter.getIntPropertyMaxValue(UProperty.SCRIPT);
+        scriptCount = fMaxScript - fMinScript + 1;
+        
+        System.out.println("Collecting script data for " + scriptCount + " scripts...");
+        
+        fScriptNames = new String[scriptCount];
+        fScriptTags  = new String[scriptCount];
+        
+        for (int script = fMinScript; script <= fMaxScript; script += 1) {
+            fScriptNames[script - fMinScript] = UScript.getName(script).toUpperCase();
+            fScriptTags[script - fMinScript]  = UScript.getShortName(script).toLowerCase();
+            
+            if (script != commonScript) {
+                UnicodeSet scriptSet  = new UnicodeSet("\\p{" + fScriptTags[script - fMinScript] + "}");
+                UnicodeSetIterator it = new UnicodeSetIterator(scriptSet);
+            
+                while (it.nextRange()) {
+                    Record record = new Record(it.codepoint, it.codepointEnd, script);
+                    
+                    rv.addElement(record);
+                }
+            }
+        }
+        
+        fRecords = new Record[rv.size()];
+        
+        for (int i = 0; i < rv.size(); i += 1) {
+            fRecords[i] = (Record) rv.elementAt(i);
+        }
+        
+        System.out.println("Collected " + rv.size() + " records. Sorting...");
+        sort();
+        
+        System.out.println("Done.");
+    }
+    
+    public int getMinValue()
+    {
+        return fMinScript;
+    }
+    
+    public int getMaxValue()
+    {
+        return fMaxScript;
+    }
+    
+    public int getRecordCount()
+    {
+        return fRecords.length;
+    }
+    
+    public String getTag(int value)
+    {
+        if (value >= fMinScript && value <= fMaxScript) {
+            return getException(fScriptTags[value - fMinScript]);
+        }
+        
+        return "zyyx";
+    }
+    
+    public String getTagLabel(int value)
+    {
+        if (value >= fMinScript && value <= fMaxScript) {
+            return fScriptTags[value - fMinScript];
+        }
+        
+        return "zyyx";
+    }
+    
+    public String makeTag(int value)
+    {
+        if (value >= fMinScript && value <= fMaxScript) {
+            String tag = getException(fScriptTags[value - fMinScript]);
+            
+            return TagUtilities.makeTag(tag);
+        } else {
+            return "0x00000000";
+        }
+    }
+    
+    public String getName(int value)
+    {
+        if (value >= fMinScript && value <= fMaxScript) {
+            return fScriptNames[value - fMinScript];
+        }
+        
+        return "COMMON";
+    }
+    
+    public Record getRecord(int index)
+    {
+        if (fRecords != null && index < fRecords.length) {
+            return fRecords[index];
+        }
+        
+        return null;
+    }
+    
+    private int fMinScript;
+    private int fMaxScript;
+    private String fScriptNames[];
+    private String fScriptTags[];
+    private Record fRecords[];
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
new file mode 100644
index 0000000..72d2f5a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
@@ -0,0 +1,304 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.Date;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.VersionInfo;
+
+public class ScriptIDModuleWriter extends ScriptModuleWriter
+{
+    public ScriptIDModuleWriter(ScriptData scriptData, LanguageData languageData)
+    {
+        super(scriptData, languageData);
+    }
+
+    public void writeScriptHeader(String fileName)
+    {
+        int minScript = scriptData.getMinValue();
+        int maxScript = scriptData.getMaxValue();
+        int verMajor  = VersionInfo.ICU_VERSION.getMajor();
+        int verMinor  = VersionInfo.ICU_VERSION.getMinor();
+        
+        openFile(fileName);
+        writeHeader("__LESCRIPTS_H", includeFiles, scriptBrief);
+        
+        totalScript = maxScript;
+        what = "script";
+        readFile(ScriptAndLanguages, what);
+        String checkICUVersion, previousVersion;
+        int previousMajor, previousMinor, arrayListIndex=0, numberOfScripts;
+        boolean initialheader = false;
+        boolean newScripts = false;
+        
+        if(totalScript>previousTotalScripts){
+            newScripts = true;
+        }
+        //Processing old scripts
+        MessageFormat format = new MessageFormat(scriptPreamble); 
+        for(int script=minScript;script<=previousTotalScripts;){
+             checkICUVersion = (String)scriptVersionNumber.get(arrayListIndex);
+             checkICUVersion = checkICUVersion.substring(checkICUVersion.indexOf("_")+1);
+             previousVersion = checkICUVersion.substring(0, checkICUVersion.indexOf("="));
+             previousMajor = Integer.parseInt(previousVersion.substring(0,previousVersion.indexOf(".")));
+             previousMinor = Integer.parseInt(previousVersion.substring(previousVersion.indexOf(".")+1));
+             numberOfScripts = Integer.parseInt(checkICUVersion.substring(checkICUVersion.indexOf("=")+1));
+             
+             Object args[] = {new Integer(previousMajor), new Integer(previousMinor)};
+             //Check for the initial header. It should be written only one time
+             if(!initialheader){
+                 output.println(format.format(args));
+                 initialheader = true;
+             }else{
+                 if((verMajor-previousMajor)>=1){
+                     format = new MessageFormat(scriptPreambleStable); 
+                     output.println(format.format(args));
+                 }else{
+                     format = new MessageFormat(scriptPreambleDraft); 
+                     output.println(format.format(args));
+                 }
+             }
+             
+             for(int i=0;i<numberOfScripts;i++){
+                 output.print("    ");
+                 output.print(scriptData.getTagLabel(script));
+                 output.print("ScriptCode = ");
+                 
+                 if (script < 10) {
+                     output.print(" ");
+                 }
+                 
+                 output.print(script);
+                 output.println(",");
+                 script++;
+             }
+             arrayListIndex++;
+        }
+        
+        if(newScripts){//Processing newly added scripts
+            format = new MessageFormat(scriptPreambleDraft); 
+            Object args[] = {new Integer(verMajor), new Integer(verMinor)};
+            output.println(format.format(args));
+            
+            for (int script = previousTotalScripts+1; script <= totalScript; script += 1) {
+                output.print("    ");
+                output.print(scriptData.getTagLabel(script));
+                output.print("ScriptCode = ");
+                
+                if (script < 10) {
+                    output.print(" ");
+                }
+                
+                output.print(script);
+                output.println(",");
+            }
+        }
+        output.println();
+        output.print("    scriptCodeCount = ");
+        output.println(maxScript - minScript + 1);
+        output.println(postamble);
+        
+        writeTrailer();
+        closeFile();
+        
+    }
+    
+    public void writeLanguageHeader(String fileName)
+    {
+        int minLanguage = languageData.getMinValue();
+        int maxLanguage = languageData.getMaxValue();
+        int verMajor    = VersionInfo.ICU_VERSION.getMajor();
+        int verMinor    = VersionInfo.ICU_VERSION.getMinor();
+        
+        openFile(fileName);
+        writeHeader("__LELANGUAGES_H", includeFiles, languageBrief);
+
+        totalLanguage = maxLanguage;
+        what = "languages";
+        readFile(ScriptAndLanguages, what);
+        String checkICUVersion, previousVersion;
+        int previousMajor, previousMinor, arrayListIndex=0, numberOfLanguages;
+        boolean initialheader = false;
+        boolean newLanguage = false;
+        
+        if(totalLanguage>previousTotalLanguages){
+            newLanguage = true;
+        }
+        //Processing old languages
+        MessageFormat format = new MessageFormat(languagePreamble); 
+        for(int language=minLanguage;language<=previousTotalLanguages;){
+             checkICUVersion = (String)languageVersionNumber.get(arrayListIndex);
+             checkICUVersion = checkICUVersion.substring(checkICUVersion.indexOf("_")+1);
+             previousVersion = checkICUVersion.substring(0, checkICUVersion.indexOf("="));
+             previousMajor = Integer.parseInt(previousVersion.substring(0,previousVersion.indexOf(".")));
+             previousMinor = Integer.parseInt(previousVersion.substring(previousVersion.indexOf(".")+1));
+             numberOfLanguages = Integer.parseInt(checkICUVersion.substring(checkICUVersion.indexOf("=")+1));
+             
+             Object args[] = {new Integer(previousMajor), new Integer(previousMinor)};
+            
+             //Check for the initial header. It should be written only one time
+             if(!initialheader){
+                 output.println(format.format(args));
+                 initialheader = true;
+             }else{
+                 if((verMajor-previousMajor)>=1){
+                     format = new MessageFormat(languagePreambleStable); 
+                     output.println(format.format(args));
+                 }else{
+                     format = new MessageFormat(languagePreambleDraft); 
+                     output.println(format.format(args));
+                 }
+             }
+             
+             for(int i=0;i<numberOfLanguages;i++){
+                 output.print("    ");
+                 output.print(languageData.getTagLabel(language).toLowerCase());
+                 output.print("LanguageCode = ");
+                 
+                 if (language < 10) {
+                     output.print(" ");
+                 }
+                 
+                 output.print(language);
+                 output.println(",");
+                 language++;
+             }
+             arrayListIndex++;
+        }
+        if(newLanguage){
+            //Processing newly added languages
+            format = new MessageFormat(languagePreambleDraft); 
+            Object args[] = {new Integer(verMajor), new Integer(verMinor)};
+            output.println(format.format(args));
+            
+            for (int langauge = previousTotalLanguages+1; langauge <= totalLanguage; langauge += 1) {
+                output.print("    ");
+                output.print(languageData.getTagLabel(langauge).toLowerCase());
+                output.print("ScriptCode = ");
+                
+                if (langauge < 10) {
+                    output.print(" ");
+                }
+                
+                output.print(langauge);
+                output.println(",");
+            }  
+        }
+        output.println();
+        output.print("    languageCodeCount = ");
+        output.println(maxLanguage - minLanguage + 1);
+        
+        output.println(postamble);
+        
+        writeTrailer();
+        closeFile();
+    }
+    
+    private static final String[] includeFiles = {"LETypes.h"};
+    
+    private static final String scriptPreamble = 
+    "/**\n" +
+    " * Constants for Unicode script values, generated using\n" +
+    " * ICU4J''s <code>UScript</code> class.\n" +
+    " *\n" +
+    " * @stable ICU {0}.{1}\n" +
+    " */\n" +
+    "\n" +
+    "enum ScriptCodes '{'";
+    
+    private static final String scriptBrief =
+    "/**\n" +
+    " * \\file\n" + 
+    " * \\brief C++ API: Constants for Unicode script values\n" +
+    " */\n" +
+    "\n";
+
+    
+    private static final String languagePreamble = 
+    "/**\n" +
+    " * A provisional list of language codes. For now,\n" +
+    " * this is just a list of languages which the LayoutEngine\n" +
+    " * supports.\n" +
+    " *\n" +
+    " * @stable ICU {0}.{1}\n" +
+    " */\n" +
+    "\n" +
+    "enum LanguageCodes '{'";
+    
+    private static final String languageBrief =
+        "/**\n" +
+        " * \\file\n" + 
+        " * \\brief C++ API: List of language codes for LayoutEngine\n" +
+        " */\n" +
+        "\n";
+
+    private static final String postamble =
+    "};\n";
+    
+    private static final String ScriptAndLanguages = "ScriptAndLanguages";
+    private static String ICUVersion = "ICU Version="+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor();
+    private static int totalScript;
+    private static int totalLanguage;
+    private static String what;
+    
+    public void updateScriptAndLanguages(){
+        openScriptAndLanguages(ScriptAndLanguages);
+        MessageFormat format = new MessageFormat(moduleHeader);
+        Object args[] = {new Date(System.currentTimeMillis())};
+
+        System.out.print("Updating file "+ScriptAndLanguages);
+        
+        updateFile.print(format.format(args));
+        updateFile.println(ICUVersion);
+        updateFile.println("Total Script="+totalScript);
+        updateFile.println("Total Language="+totalLanguage);
+        updateFile.println("Scripts={");
+        for(int i=0;i<scriptVersionNumber.size();i++){
+            updateFile.println(scriptVersionNumber.get(i));
+        }
+        if(totalScript>previousTotalScripts){
+            updateFile.println("         ICU_"+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor()+"="+(totalScript-previousTotalScripts));
+            
+        }
+        updateFile.println("        }");
+        updateFile.println("Languages={");
+        for(int i=0;i<languageVersionNumber.size();i++){
+            updateFile.println(languageVersionNumber.get(i));
+        }
+        if(totalLanguage>previousTotalLanguages){
+            updateFile.println("           ICU_"+VersionInfo.ICU_VERSION.getMajor()+"."+VersionInfo.ICU_VERSION.getMinor()+"="+(totalLanguage-previousTotalLanguages));
+        }
+        updateFile.println("          }");
+        scriptVersionNumber.clear();
+        languageVersionNumber.clear();
+        updateFile.close();
+        
+        System.out.println("Done");
+    }
+    
+    private static final String scriptPreambleDraft = 
+        "/**\n" +
+        " * @draft ICU {0}.{1}\n" +
+        " */\n";// +
+        
+    private static final String scriptPreambleStable = 
+        "/**\n" +
+        " * @stable ICU {0}.{1}\n" +
+        " */\n";// +
+        
+    private static final String languagePreambleDraft = 
+        "/**\n" +
+        " * @draft ICU {0}.{1}\n" +
+        " */\n";// +
+        
+    private static final String languagePreambleStable = 
+        "/**\n" +
+        " * @stable ICU {0}.{1}\n" +
+        " */\n";// +
+        
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptList.java b/src/com/ibm/icu/dev/tool/layout/ScriptList.java
new file mode 100644
index 0000000..6a626e5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptList.java
@@ -0,0 +1,200 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class ScriptList
+{
+    static class LangSysRecord extends TaggedRecord
+    {
+        private Feature[] features;
+        private int featureCount;
+        
+        public LangSysRecord(String theLanguageTag)
+        {
+            super(theLanguageTag);
+            
+            features = new Feature[10];
+            featureCount = 0;
+        }
+        
+        public void addFeature(Feature feature)
+        {
+            if (featureCount > features.length) {
+                Feature[] newFeatures = new Feature[features.length + 5];
+                
+                System.arraycopy(features, 0, newFeatures, 0, features.length);
+                features = newFeatures;
+            }
+            
+            features[featureCount++] = feature;
+        }
+        
+         public void writeLangSysRecord(OpenTypeTableWriter writer)
+        {
+            writer.writeData(0);      // lookupOrder (must be NULL)
+            writer.writeData(0xFFFF); // reqFeatureIndex (0xFFFF means none)
+            
+            writer.writeData(featureCount);
+            
+            for (int i = 0; i < featureCount; i += 1) {
+                writer.writeData(features[i].getFeatureIndex());
+            }
+        }
+    }
+    
+    static class ScriptRecord extends TaggedRecord
+    {
+        private LangSysRecord[] langSysRecords;
+        private int langSysCount;
+        
+        public ScriptRecord(String theScriptTag)
+        {
+            super(theScriptTag);
+            langSysRecords = new LangSysRecord[10];
+            langSysCount = 0;
+        }
+        
+        public LangSysRecord findLangSysRecord(String languageTag)
+        {
+            for (int i = 0; i < langSysCount; i += 1) {
+                LangSysRecord langSysRecord = langSysRecords[i];
+                
+                if (langSysRecord.getTag().equals(languageTag)) {
+                    return langSysRecord;
+                }
+            }
+            
+            if (langSysCount >= langSysRecords.length) {
+                LangSysRecord[] newLangSysRecords = new LangSysRecord[langSysCount + 5];
+                
+                System.arraycopy(langSysRecords, 0, newLangSysRecords, 0, langSysRecords.length);
+                langSysRecords = newLangSysRecords;
+            }
+            
+            LangSysRecord newLangSysRecord = new LangSysRecord(languageTag);
+            langSysRecords[langSysCount] = newLangSysRecord;
+            
+            langSysCount += 1;
+            return newLangSysRecord;
+        }
+        
+        public void writeScriptRecord(OpenTypeTableWriter writer)
+        {
+            TaggedRecord.sort(langSysRecords, langSysCount);
+            
+            int scriptTableBase = writer.getOutputIndex();
+            int firstLangSys = 0;
+            
+            writer.writeData(0); // default langSys offset (fixed later)
+            
+            if (langSysRecords[0].getTag().equals("(default)")) {
+                firstLangSys = 1;
+            }
+            
+            writer.writeData(langSysCount - firstLangSys);
+            
+            int langSysOffset = writer.getOutputIndex();
+            
+            for (int i = firstLangSys; i < langSysCount; i += 1) {
+                writer.writeTag(langSysRecords[i].getTag());
+                writer.writeData(0);
+            }
+            
+            if (firstLangSys > 0) {
+                System.out.print(" (default)");
+                writer.fixOffset(scriptTableBase, scriptTableBase);
+                langSysRecords[0].writeLangSysRecord(writer);
+            }
+            
+            for (int i = firstLangSys; i < langSysCount; i += 1) {
+                // fix the offset in the langSysRecordArray.
+                // The "+2" skips over the tag and the "+3"
+                // skips to the next langSysRecord entry
+                writer.fixOffset(langSysOffset + 2, scriptTableBase);
+                langSysOffset += 3;
+                
+                System.out.print(" '" + langSysRecords[i].getTag() + "'");
+                langSysRecords[i].writeLangSysRecord(writer);
+            }
+        }
+    }
+    
+    private ScriptRecord[] scriptRecords;
+    private int scriptCount;
+    
+    public ScriptList()
+    {
+        scriptRecords = new ScriptRecord[10];
+        scriptCount = 0;
+    }
+    
+    private LangSysRecord findLangSysRecord(String scriptTag, String languageTag)
+    {
+        for (int i = 0; i < scriptCount; i += 1) {
+            ScriptRecord scriptRecord = scriptRecords[i];
+            
+            if (scriptRecord.getTag().equals(scriptTag)) {
+                 return scriptRecord.findLangSysRecord(languageTag);
+            }
+        }
+        
+        if (scriptCount >= scriptRecords.length) {
+            ScriptRecord[] newScriptRecords = new ScriptRecord[scriptCount + 5];
+            
+            System.arraycopy(scriptRecords, 0, newScriptRecords, 0, scriptRecords.length);
+            scriptRecords = newScriptRecords;
+        }
+        
+        ScriptRecord newScriptRecord = new ScriptRecord(scriptTag);
+        scriptRecords[scriptCount] = newScriptRecord;
+        
+        scriptCount += 1;
+        return newScriptRecord.findLangSysRecord(languageTag);
+    }
+    
+    public void addFeature(String scriptTag, String languageTag, Feature feature)
+    {
+        LangSysRecord langSysRecord = findLangSysRecord(scriptTag, languageTag);
+        
+        langSysRecord.addFeature(feature);
+    }
+    
+    public void writeScriptList(OpenTypeTableWriter writer)
+    {
+        System.out.println("writing script list...");
+        
+        int scriptListBase = writer.getOutputIndex();
+        
+        TaggedRecord.sort(scriptRecords, scriptCount);
+        writer.writeData(scriptCount);
+        
+        int scriptRecordOffset = writer.getOutputIndex();
+        
+        for (int i = 0; i < scriptCount; i += 1) {
+            writer.writeTag(scriptRecords[i].getTag());
+            writer.writeData(0);
+        }
+        
+        for (int i = 0; i < scriptCount; i += 1) {
+            // fix the offset in the scriptRecordArray.
+            // The "+2" skips over the tag and the "+3"
+            // skips to the next scriptRecord entry
+            writer.fixOffset(scriptRecordOffset + 2, scriptListBase);
+            scriptRecordOffset += 3;
+            
+            System.out.print("  script '" + scriptRecords[i].getTag() + "':");
+            scriptRecords[i].writeScriptRecord(writer);
+            System.out.println();
+        }
+    }
+}
+        
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java
new file mode 100644
index 0000000..b1cad78
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java
@@ -0,0 +1,22 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class ScriptModuleWriter extends ModuleWriter
+{
+    public ScriptModuleWriter(ScriptData theScriptData, LanguageData theLanguageData)
+    {
+        super();
+        
+        scriptData = theScriptData;
+        languageData = theLanguageData;
+    }
+
+    protected ScriptData scriptData;
+    protected LanguageData languageData;
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java b/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java
new file mode 100644
index 0000000..991153b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class ScriptNameBuilder
+{
+    /*
+     * This tool builds the script related header files and data tables needed by
+     * the ICU LayoutEngine. By using the ICU4J interfaces to access the script
+     * information, we can be sure that the data written by this tool is in synch
+     * with ICU.
+     */
+    public static void main(String[] args)
+    {
+        ScriptData scriptData = new ScriptData();
+        LanguageData languageData = new LanguageData();
+        
+        ScriptIDModuleWriter scriptIDModuleWriter = new ScriptIDModuleWriter(scriptData, languageData);
+        
+        scriptIDModuleWriter.writeScriptHeader("LEScripts.h");
+        scriptIDModuleWriter.writeLanguageHeader("LELanguages.h");
+        
+        scriptIDModuleWriter.updateScriptAndLanguages();
+        
+        ScriptTagModuleWriter scriptTagModuleWriter = new ScriptTagModuleWriter(scriptData, languageData);
+        
+        scriptTagModuleWriter.writeScriptTags("ScriptAndLanguageTags");
+        
+        ScriptRunModuleWriter scriptRunModuleWriter = new ScriptRunModuleWriter(scriptData);
+        
+        scriptRunModuleWriter.writeScriptRuns("ScriptRunData.cpp");
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
new file mode 100644
index 0000000..5aa96e5
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
@@ -0,0 +1,114 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.util.*;
+import com.ibm.icu.impl.Utility;
+
+public class ScriptRunModuleWriter extends ScriptModuleWriter
+{
+    public ScriptRunModuleWriter(ScriptData theScriptData)
+    {
+        super(theScriptData, null);
+    }
+    
+    public void writeScriptRuns(String fileName)
+    {
+        int minScript   = scriptData.getMinValue();
+        int maxScript   = scriptData.getMaxValue();
+        int recordCount = scriptData.getRecordCount();
+        
+        openFile(fileName);
+        writeHeader(null, includeFiles);
+        output.println(preamble);
+        
+        for (int record = 0; record < recordCount; record += 1) {
+            int script = scriptData.getRecord(record).scriptCode();
+            
+            output.print("    {0x");
+            output.print(Utility.hex(scriptData.getRecord(record).startChar(), 6));
+            output.print(", 0x");
+            output.print(Utility.hex(scriptData.getRecord(record).endChar(), 6));
+            output.print(", ");
+            output.print(scriptData.getTag(script));
+            output.print("ScriptCode}");
+            output.print((record == recordCount - 1) ? " " : ",");
+            output.print(" // ");
+            output.println(scriptData.getName(script));
+        }
+        
+        output.println(postamble);
+        
+        int power = 1 << Utility.highBit(recordCount);
+        int extra = recordCount - power;
+        
+        output.print("le_int32 ScriptRun::scriptRecordsPower = 0x");
+        output.print(Utility.hex(power, 4));
+        output.println(";");
+        
+        
+        output.print("le_int32 ScriptRun::scriptRecordsExtra = 0x");
+        output.print(Utility.hex(extra, 4));
+        output.println(";");
+
+        Vector[] scriptRangeOffsets = new Vector[maxScript - minScript + 1];
+        
+        for (int script = minScript; script <= maxScript; script += 1) {
+            scriptRangeOffsets[script - minScript] = new Vector();
+        }
+        
+        for (int record = 0; record < recordCount; record += 1) {
+            scriptRangeOffsets[scriptData.getRecord(record).scriptCode() - minScript].addElement(new Integer(record));
+        }
+        
+        output.println();
+        
+        for (int script = minScript; script <= maxScript; script += 1) {
+            Vector offsets = scriptRangeOffsets[script - minScript];
+            
+            output.print("le_int16 ");
+            output.print(scriptData.getTag(script));
+            output.println("ScriptRanges[] = {");
+            output.print("    ");
+            
+            for (int offset = 0; offset < offsets.size(); offset += 1) {
+                Integer i = (Integer) offsets.elementAt(offset);
+                
+                output.print(i.intValue());
+                output.print(", ");
+            }
+            
+            output.println("-1");
+            output.println(postamble);
+        }
+        
+        output.println("le_int16 *ScriptRun::scriptRangeOffsets[] = {");
+        
+        for (int script = minScript; script <= maxScript; script += 1) {
+            output.print("    ");
+            output.print(scriptData.getTag(script));
+            output.print("ScriptRanges");
+            output.print(script == maxScript? "  " : ", ");
+            output.print("// ");
+            output.println(scriptData.getName(script));
+        }
+        
+        output.println(postamble);
+        
+        writeTrailer();
+        closeFile();
+    }
+    
+    private static final String[] includeFiles = {"LETypes.h", "LEScripts.h", "ScriptRun.h"};
+    
+    private static final String preamble = 
+    "\n" +
+    "ScriptRecord ScriptRun::scriptRecords[] = {";
+    
+    private static final String postamble =
+    "};\n";
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
new file mode 100644
index 0000000..6d77f70
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
@@ -0,0 +1,126 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class ScriptTagModuleWriter extends ScriptModuleWriter
+{
+    public ScriptTagModuleWriter(ScriptData theScriptData, LanguageData theLanguageData)
+    {
+        super(theScriptData, theLanguageData);
+    }
+    
+    private void writeTagValueHeader(TagValueData data, String kind)
+    {
+        int min = data.getMinValue();
+        int max = data.getMaxValue();
+
+        for (int value = min; value <= max; value += 1) {
+            output.print("const LETag ");
+            output.print(data.getTagLabel(value));
+            output.print(kind);
+            output.print("Tag = ");
+            output.print(data.makeTag(value));
+            output.print("; /* '");
+            output.print(data.getTag(value));
+            output.print("' (");
+            output.print(data.getName(value));
+            output.println(") */");
+        }
+    }
+    
+    public void writeHeaderFile(String fileName)
+    {
+        openFile(fileName);
+        writeHeader("__SCRIPTANDLANGUAGES_H", hIncludes, hPreamble);
+        
+        writeTagValueHeader(scriptData, "Script");
+        
+        output.println(hScriptPostamble);
+        
+        writeTagValueHeader(languageData, "Language");
+        
+        output.println(hPostamble);
+        closeFile();
+    }
+    
+    private void writeTagValueCPP(TagValueData data, String kind)
+    {
+        int min = data.getMinValue();
+        int max = data.getMaxValue();
+        
+        for (int value = min; value <= max; value += 1) {
+            output.print("    ");
+            output.print(data.getTagLabel(value));
+            output.print(kind);
+            output.print("Tag");
+            output.print((value == max? " " : ","));
+            output.print(" /* '");
+            output.print(data.getTag(value));
+            output.print("' (");
+            output.print(data.getName(value));
+            output.println(") */");
+        }
+    }
+    
+    public void writeCPPFile(String fileName)
+    {
+        openFile(fileName);
+        writeHeader(null, cppIncludes);
+        output.println(cppPreamble);
+        
+        writeTagValueCPP(scriptData, "Script");
+        
+        output.println(cppScriptPostamble);
+        
+        writeTagValueCPP(languageData, "Language");
+        
+        output.println(cppPostamble);
+        
+        writeTrailer();
+        closeFile();
+    }
+    
+    public void writeScriptTags(String fileName)
+    {
+        writeHeaderFile(fileName + ".h");
+        writeCPPFile(fileName + ".cpp");
+    }
+
+    private static final String[] hIncludes = {"LETypes.h"};
+
+    private static final String hPreamble = 
+    "/**\n" +
+    " * \\file\n" +
+    " * \\internal\n" +
+    " */\n" +
+    "\n";
+    
+    private static final String hScriptPostamble =
+    "\n" +
+    "const LETag nullScriptTag = 0x00000000; /* ''     (NULL) */\n" +
+    "\n";
+    
+    private static final String hPostamble =
+    "\n" +
+    "\n" +
+    "U_NAMESPACE_END\n" +
+    "#endif";
+    
+    private static final String[] cppIncludes =
+        {"LETypes.h", "ScriptAndLanguageTags.h", "OpenTypeLayoutEngine.h"};
+    
+    private static final String cppPreamble = 
+    "const LETag OpenTypeLayoutEngine::scriptTags[] = {";
+    
+    private static final String cppScriptPostamble =
+    "};\n" +
+    "\n" +
+    "const LETag OpenTypeLayoutEngine::languageTags[] = {";
+    
+    private static final String cppPostamble =
+    "};\n";
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java b/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java
new file mode 100644
index 0000000..b6d427a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author emader
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class ShapingTypeBuilder extends OpenTypeTableWriter
+{
+    private ClassTable classTable;
+    
+    public ShapingTypeBuilder()
+    {
+        classTable = new ClassTable();
+    }
+    
+    public void writeTable(PrintStream output)
+    {
+        classTable.writeClassTable(this);
+        output.println("const le_uint8 ArabicShaping::shapingTypeTable[] = {");
+        
+        dumpTable(output, 8);
+        output.println("};\n");
+    }
+    
+    // TODO: The UnicodeSet is constrained to the BMP because the ClassTable data structure can
+    // only handle 16-bit entries. This is probably OK as long as there aren't any joining scripts
+    // outside of the BMP...
+    public void buildShapingTypes(String filename)
+    {
+        UnicodeSet shapingTypes = new UnicodeSet("[[\\P{Joining_Type=Non_Joining}] & [\\u0000-\\uFFFF]]");
+        int count = shapingTypes.size();
+        
+        System.out.println("There are " + count + " characters with a joining type.");
+        
+        for(int i = 0; i < count; i += 1) {
+            int ch = shapingTypes.charAt(i);
+            
+            classTable.addMapping(ch, UCharacter.getIntPropertyValue(ch, UProperty.JOINING_TYPE));
+        }
+        
+        LigatureModuleWriter writer = new LigatureModuleWriter();
+        String[] includeFiles = {"LETypes.h", "ArabicShaping.h"};        
+        
+        writer.openFile(filename);
+        writer.writeHeader(null, includeFiles);
+        writer.writeTable(this);
+        writer.writeTrailer();
+        writer.closeFile();
+    }
+    
+    public static void main(String[] args)
+    {
+        ShapingTypeBuilder stb = new ShapingTypeBuilder();
+        
+        stb.buildShapingTypes(args[0]);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/TagUtilities.java b/src/com/ibm/icu/dev/tool/layout/TagUtilities.java
new file mode 100644
index 0000000..2841668
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/TagUtilities.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Apr 14, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ *  This class contains utility methods for dealing with
+ * four-letter tags.
+ * 
+ * @author emader
+ *
+ */
+public class TagUtilities
+{
+    public static String makeTag(String tag)
+    {
+        if (tag == null || tag.length() == 0) {
+            return "0x00000000";
+        }
+        
+        int tagValue = 0;
+        
+        for (int i = 0; i < 4; i += 1) {
+            tagValue <<= 8;
+            tagValue += (int) ((i < tag.length()? tag.charAt(i) : ' ') & 0xFF);
+        }
+        
+        return "0x" + Utility.hex(tagValue, 8);
+    }
+    
+//    public static String makeTagOld(String tag)
+//    {
+//        if (tag == null || tag.length() == 0) {
+//            return "0x00000000";
+//        }
+//        
+//        StringBuffer result = new StringBuffer("LE_MAKE_TAG(");
+//        
+//        for (int i = 0; i < 4; i += 1) {
+//            if (i > 0) {
+//                result.append(", ");
+//            }
+//            
+//            result.append('\'');
+//            result.append(i < tag.length()? tag.charAt(i) : ' ');
+//            result.append('\'');
+//        }
+//        
+//        result.append(")");
+//        
+//        return result.toString(); 
+//    }
+    
+    public static String tagLabel(String tag)
+    {
+        if (tag == null || tag.length() == 0) {
+            return "null";
+        } else {
+            return tag.toLowerCase();
+        }
+    }
+        
+}
+
diff --git a/src/com/ibm/icu/dev/tool/layout/TagValueData.java b/src/com/ibm/icu/dev/tool/layout/TagValueData.java
new file mode 100644
index 0000000..04175cb
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/TagValueData.java
@@ -0,0 +1,23 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.layout;
+
+public abstract class TagValueData
+{
+    abstract public int getMinValue();
+    abstract public int getMaxValue();
+    
+    abstract public String getName(int value);
+    abstract public String getTag(int value);
+    abstract public String getTagLabel(int value);
+    abstract public String makeTag(int value);
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java b/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java
new file mode 100644
index 0000000..b18c07f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java
@@ -0,0 +1,79 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+import com.ibm.icu.impl.Utility;
+
+public class TaggedRecord
+{
+    private String tag;
+        
+    public TaggedRecord(String theTag)
+    {
+        tag = theTag;
+    }
+        
+    public String getTag()
+    {
+        return tag;
+    }
+        
+    //
+    // Straight insertion sort from Knuth vol. III, pg. 81
+    //
+    public static void sort(TaggedRecord[] table, int count)
+    {
+        for (int j = 1; j < count; j += 1) {
+            int i;
+            TaggedRecord v = table[j];
+            String vTag = v.getTag();
+
+            for (i = j - 1; i >= 0; i -= 1) {
+                if (vTag.compareTo(table[i].getTag()) >= 0) {
+                    break;
+                }
+
+                table[i + 1] = table[i];
+            }
+
+            table[i + 1] = v;
+        }
+    }
+    
+    public static int search(TaggedRecord[] table, int count, String tag)
+    {
+        int log2 = Utility.highBit(count);
+        int power = 1 << log2;
+        int extra = count - power;
+        int probe = power;
+        int index = 0;
+
+        if (table[extra].getTag().compareTo(tag) <= 0) {
+            index = extra;
+        }
+
+        while (probe > (1 << 0)) {
+            probe >>= 1;
+
+            if (table[index + probe].getTag().compareTo(tag) <= 0) {
+                index += probe;
+            }
+        }
+
+        if (table[index].getTag().equals(tag)) {
+            return index;
+        }
+
+        return -1;
+    }
+}
+    
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java b/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java
new file mode 100644
index 0000000..949937b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java
@@ -0,0 +1,164 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import com.ibm.icu.impl.Utility;
+import java.io.PrintStream;
+
+public class ThaiCharacterClasses
+{
+    public static final int NON    =  0;
+    public static final int CON    =  1;
+    public static final int COA    =  2;
+    public static final int COD    =  3;
+    public static final int LVO =  4;
+    public static final int FV1    =  5;
+    public static final int FV2    =  6;
+    public static final int FV3    =  7;
+    public static final int BV1    =  8;
+    public static final int BV2    =  9;
+    public static final int BDI = 10;
+    public static final int TON    = 11;
+    public static final int AD1    = 12;
+    public static final int AD2    = 13;
+    public static final int AD3    = 14;
+    public static final int NIK    = 15;
+    public static final int AV1    = 16;
+    public static final int AV2    = 17;
+    public static final int AV3    = 18;
+    public static final int cCount = 19;
+
+    // Indexed by unicode - '\u0E00'
+    // FIXME: MS Fonts - Should 0E2E has no ascender (it does in WT font)
+    // FIXME: MS Fonts - 0E47 (MAITAIKHU) and 0E4D (NIKHAHIT) only have vowel forms
+    // FIXME: MS Fonts - 0E4E (YAMAKKAN) only has one form
+    private static final int classTable[] = {
+    //       0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
+    //       -------------------------------------------------------------------------------
+    /*0E00*/ NON, CON, CON, CON, CON, CON, CON, CON, CON, CON, CON, CON, CON, COD, COD, COD, 
+    /*0E10*/ COD, CON, CON, CON, CON, CON, CON, CON, CON, CON, CON, COA, CON, COA, CON, COA, 
+    /*0E20*/ CON, CON, CON, CON, FV3, CON, FV3, CON, CON, CON, CON, CON, CON, CON, CON, NON, 
+    /*0E30*/ FV1, AV2, FV1, FV1, AV1, AV3, AV2, AV3, BV1, BV2, BDI, NON, NON, NON, NON, NON, 
+    /*0E40*/ LVO, LVO, LVO, LVO, LVO, FV2, NON, AD2, TON, TON, TON, TON, AD1, NIK, AD3, NON, 
+    /*0E50*/ NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, NON
+    };
+
+    private static String[] classNames =
+    {
+        "NON",
+        "CON",
+        "COA",
+        "COD",
+        "LVO",
+        "FV1",
+        "FV2",
+        "FV3",
+        "BV1",
+        "BV2",
+        "BDI",
+        "TON",
+        "AD1",
+        "AD2",
+        "AD3",
+        "NIK",
+        "AV1",
+        "AV2",
+        "AV3"
+    };
+
+    private static final char pairTable[][] = {
+      //------------------------------------------------------------------------------------------------
+      //  N    C    C    C    L    F    F    F    B    B    B    T    A    A    A    N    A    A    A
+      //  O    O    O    O    V    V    V    V    V    V    D    O    D    D    D    I    V    V    V
+      //  N    N    A    D    O    1    2    3    1    2    I    N    1    2    3    K    1    2    3
+      //------------------------------------------------------------------------------------------------
+/*NON*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*CON*/ {'A', 'A', 'A', 'A', 'A', 'A', 'S', 'A', 'C', 'C', 'C', 'E', 'E', 'E', 'C', 'E', 'C', 'C', 'C'},
+/*COA*/ {'A', 'A', 'A', 'A', 'A', 'A', 'S', 'A', 'C', 'C', 'C', 'F', 'F', 'F', 'D', 'F', 'D', 'D', 'D'},
+/*COD*/ {'A', 'A', 'A', 'A', 'A', 'A', 'S', 'A', 'H', 'H', 'H', 'E', 'E', 'E', 'C', 'E', 'C', 'C', 'C'},
+/*LVO*/ {'S', 'A', 'A', 'A', 'S', 'S', 'S', 'S', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*FV1*/ {'S', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*FV2*/ {'A', 'A', 'A', 'A', 'A', 'A', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*FV3*/ {'A', 'A', 'A', 'A', 'A', 'S', 'A', 'S', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*BV1*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'E', 'E', 'R', 'R', 'E', 'R', 'R', 'R'},
+/*BV2*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'E', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*BDI*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*TON*/ {'A', 'A', 'A', 'A', 'A', 'I', 'A', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AD1*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AD2*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AD3*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*NIK*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'G', 'G', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AV1*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'G', 'G', 'R', 'R', 'G', 'R', 'R', 'R'},
+/*AV2*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'G', 'R', 'R', 'R', 'R', 'R', 'R', 'R'},
+/*AV3*/ {'A', 'A', 'A', 'A', 'A', 'S', 'S', 'A', 'R', 'R', 'R', 'G', 'R', 'G', 'R', 'R', 'R', 'R', 'R'}
+    };
+
+    public static int getCharClass(char ch)
+    {
+        int charClass = NON;
+        
+        if (ch >= '\u0E00' && ch <= '\u0E5B') {
+            charClass = classTable[ch - '\u0E00'];
+        }
+        
+        return charClass;
+    }
+    
+    public static String getClassName(int classID)
+    {
+        if (classID < 0 || classID >= cCount) {
+            return "***";
+        }
+        
+        return classNames[classID];
+    }
+    
+    public static char getPairAction(int prevClass, int currClass)
+    {
+        if (prevClass < 0 || prevClass >= cCount |
+            currClass < 0 || currClass >= cCount) {
+            return 'A';
+        }
+            
+        return pairTable[prevClass][currClass];
+    }
+    
+    private static String classTableHeader =
+"const le_uint8 ThaiShaping::classTable[] = {\n" +
+"    //       0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F\n" +
+"    //       -------------------------------------------------------------------------------";
+    
+    public static void writeClassTable(PrintStream output)
+    {
+        System.out.print("Writing class table...");
+        
+        output.print(classTableHeader);
+        
+        for (char ch = '\u0E00'; ch <= '\u0E5B'; ch += 1) {
+            int charClass = getCharClass(ch);
+            
+            if ((ch & 0x000F) == 0) {
+                output.print("\n    /*" + Utility.hex(ch, 4) + "*/ ");
+            }
+            
+            output.print(getClassName(charClass));
+            
+            if (ch < '\u0E5B') {
+                output.print(", ");
+            } else {
+                output.print("\n};\n\n");
+            }
+        }
+        
+        System.out.println(" done.");
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java b/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java
new file mode 100644
index 0000000..935f1c8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java
@@ -0,0 +1,205 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+import java.util.Vector;
+
+public class ThaiStateTable
+{
+    static Vector stateTable = null;
+    static int nextState = 0;
+    
+    private final static int newState()
+    {
+        ThaiStateTransition[] stateRow = new ThaiStateTransition[ThaiCharacterClasses.cCount];
+        
+        for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+            stateRow[c] = null;
+        }
+        
+        stateTable.addElement(stateRow);
+        
+        return nextState++;
+    }
+    
+    private final static boolean isLegalHere(int state, char pairAction)
+    {
+        switch (pairAction) {
+        case 'A':
+            return state == 0;
+            
+        case 'C':
+        case 'D':
+        case 'E':
+        case 'F':
+        case 'G':
+        case 'H':
+            return true;
+        
+        case 'R':
+        case 'S':
+            return false;
+        }
+        
+        return false;
+    }
+    
+    private final static boolean composesWithAnything(int charClass)
+    {
+        for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+            char action = ThaiCharacterClasses.getPairAction(charClass, c);
+            
+            if (action >= 'C' && action <= 'I') {
+                return true;
+            }
+        }
+        
+        return false;
+    }
+    
+    private final static void fixNextStates()
+    {
+        ThaiStateTransition[] groundState = (ThaiStateTransition[]) stateTable.elementAt(0);
+        
+        for (int s = 1; s < stateTable.size(); s += 1) {
+            ThaiStateTransition[] state = (ThaiStateTransition[]) stateTable.elementAt(s);
+            
+            for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+                ThaiStateTransition transition = state[c];
+                
+                if (transition.getNextState() == 0) {
+                    transition.setNextState(groundState[c].getNextState());
+                }
+            }
+        }
+    }
+    
+    private final static int addState(int prevClass, int prevPrevClass)
+    {
+        int state = newState();
+        ThaiStateTransition[] stateRow = (ThaiStateTransition[]) stateTable.elementAt(state);
+        
+        for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+            char pairAction = ThaiCharacterClasses.getPairAction(prevClass, c);
+            int nextSt = 0;
+            
+            switch (pairAction) {
+            case 'G':
+                if (prevClass == ThaiCharacterClasses.NIK &&
+                    prevPrevClass == ThaiCharacterClasses.AV1) {
+                    pairAction = 'R';
+                } else if (prevPrevClass != ThaiCharacterClasses.COA) {
+                    pairAction = 'C';
+                }
+                break;
+                
+            case 'E':
+                if (prevPrevClass == ThaiCharacterClasses.COA) {
+                    pairAction = 'F';
+                }
+                break;
+                
+            case 'I':
+                if (prevClass == ThaiCharacterClasses.TON &&
+                    (prevPrevClass < ThaiCharacterClasses.CON ||
+                     prevPrevClass > ThaiCharacterClasses.COD)) {
+                    pairAction = 'S';
+                } else {
+                    pairAction = 'A';
+                }
+                break;
+                
+            default:
+                break;
+            }
+            
+            if (c != prevClass && isLegalHere(state, pairAction) && composesWithAnything(c)) {
+                nextSt = addState(c, prevClass);
+            }
+            
+            stateRow[c] = new ThaiStateTransition(nextSt, pairAction);
+        }
+        
+        return state;
+    }
+    
+    static
+    {
+        stateTable = new Vector();
+            
+        addState(ThaiCharacterClasses.NON, ThaiCharacterClasses.NON);
+            
+        fixNextStates();
+    }
+    
+    public static ThaiStateTransition getTransition(int state, int currClass)
+    {
+        ThaiStateTransition[] row = (ThaiStateTransition[]) stateTable.elementAt(state);
+        
+        return row[currClass];
+    }
+
+    private static String header0 =
+"const ThaiShaping::StateTransition ThaiShaping::thaiStateTable[][ThaiShaping::classCount] = {";
+
+    private static String header1 =
+"    //+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+";
+
+    private static String header2 =
+"    //|         N         C         C         C         L         F         F         F         B         B         B         T         A         A         A         N         A         A         A    |\n" +
+"    //|         O         O         O         O         V         V         V         V         V         V         D         O         D         D         D         I         V         V         V    |\n" +
+"    //|         N         N         A         D         O         1         2         3         1         2         I         N         1         2         3         K         1         2         3    |";
+    
+    public static void writeStateTable(PrintStream output)
+    {
+        System.out.print("Writing state table...");
+        
+        output.println(header0);
+        output.println(header1);
+        output.println(header2);
+        output.println(header1);
+        
+        for (int state = 0; state < stateTable.size(); state += 1) {
+            ThaiStateTransition[] row = (ThaiStateTransition[]) stateTable.elementAt(state);
+            
+            output.print("    /*");
+            
+            if (state < 10) {
+                output.print("0");
+            }
+            
+            output.print(state);
+            
+            output.print("*/ {");
+            
+            for (int c = 0; c < ThaiCharacterClasses.cCount; c += 1) {
+                row[c].write(output);
+                
+                if (c < ThaiCharacterClasses.cCount - 1) {
+                    output.print(", ");
+                }
+            }
+            
+            output.print("}");
+                    
+            if (state < stateTable.size() - 1) {
+                output.print(",");
+            }
+                    
+            output.println();
+        }
+        
+        output.println("};\n");
+        
+        System.out.println(" done.");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java b/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java
new file mode 100644
index 0000000..88d04e1
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java
@@ -0,0 +1,26 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+
+public class ThaiStateTableBuilder
+{
+    public static void main(String args[])
+    {
+        ThaiStateTableModuleWriter writer = new ThaiStateTableModuleWriter();
+        
+        writer.openFile(args[0]);
+        writer.writeTables();
+        writer.closeFile();
+        
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java b/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java
new file mode 100644
index 0000000..3ff9a0b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java
@@ -0,0 +1,31 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public class ThaiStateTableModuleWriter extends ModuleWriter
+{
+    public ThaiStateTableModuleWriter()
+    {
+        super();
+    }
+
+    public void writeTables()
+    {
+        writeHeader(null, includeFiles);
+        
+        ThaiCharacterClasses.writeClassTable(output);
+        ThaiStateTable.writeStateTable(output);
+        
+        writeTrailer();
+    }
+
+    private static final String[] includeFiles = {"LETypes.h", "ThaiShaping.h"};
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java b/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java
new file mode 100644
index 0000000..2d05eb1
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java
@@ -0,0 +1,66 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 09, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+import java.io.PrintStream;
+
+public class ThaiStateTransition
+{
+    int nextState;
+    char action;
+        
+    public ThaiStateTransition(int nextState, char action)
+    {
+        this.nextState = nextState;
+        this.action = action;
+    }
+        
+    public final int getNextState()
+    {
+        return nextState;
+    }
+        
+    public final char getAction()
+    {
+        return action;
+    }
+        
+    public final void setNextState(int newNextState)
+    {
+        nextState = newNextState;
+    }
+        
+    public final void setAction(char newAction)
+    {
+        action = newAction;
+    }
+
+    public String toString()
+    {
+        return ((nextState < 10) ? "0" : "") + nextState + "/" + action + " ";
+    }
+    
+    public void write(PrintStream output)
+    {
+        output.print("{");
+        
+        if (nextState < 10) {
+            output.print(" ");
+        }
+        
+        output.print(nextState);
+        
+        output.print(", t");
+        output.print(action);
+        output.print("}");
+    }
+    
+}
diff --git a/src/com/ibm/icu/dev/tool/layout/TreeWalker.java b/src/com/ibm/icu/dev/tool/layout/TreeWalker.java
new file mode 100644
index 0000000..9ec4471
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/layout/TreeWalker.java
@@ -0,0 +1,19 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1998-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Dec 3, 2003
+ *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.layout;
+
+public abstract class TreeWalker
+{
+    abstract void down(int ch);
+    abstract void up();
+    abstract void ligature(int lig);
+    abstract void done();
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java b/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
new file mode 100644
index 0000000..59b46b3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
@@ -0,0 +1,86 @@
+/*
+******************************************************************************
+* Copyright (C) 2003-2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.localeconverter;
+
+import java.math.*;
+
+/*
+ *  The code is from  http://www.theorem.com/java/CRC32.java
+ * Calculates the CRC32 - 32 bit Cyclical Redundancy Check
+ * <P> This check is used in numerous systems to verify the integrity
+ * of information.  It's also used as a hashing function.  Unlike a regular
+ * checksum, it's sensitive to the order of the characters.
+ * It produces a 32 bit
+ * 
+ * @author Michael Lecuyer (mjl@theorem.com)
+ * @version 1.1 August 11, 1998
+ */
+ 
+/* ICU is not endian portable, because ICU data generated on big endian machines can be
+ * ported to big endian machines but not to little endian machines and vice versa. The 
+ * conversion is not portable across platforms with different endianess. 
+ */
+ 
+public class CalculateCRC32 {
+    static int CRCTable[];
+    static int cachedCRC;
+
+    static void buildCRCTable() {
+        final int CRC32_POLYNOMIAL = 0xEDB88320;
+        int i, j;
+        int crc;
+        CRCTable = new int[256];
+
+        for (i = 0; i <= 255; i++) {
+            crc = i;
+            for (j = 8; j > 0; j--) {
+                if ((crc & 1) == 1) {
+                    crc = (crc >>> 1) ^ CRC32_POLYNOMIAL;
+                } else {
+                    crc >>>= 1;
+                }
+            }
+            CRCTable[i] = crc;
+        }
+    }
+
+    public static int computeCRC32(String buffer) {
+        return computeCRC32(buffer, 0xFFFFFFFF);
+    }
+
+    public static int computeCRC32(byte buffer[]) {
+        return computeCRC32(buffer, 0xFFFFFFFF);
+    }
+   
+    public static int computeCRC32(String buffer, int crc){
+        return computeCRC32(buffer.getBytes(), crc);
+    }
+
+    public static int computeCRC32(byte buffer[], int crc) {
+        return computeCRC32(buffer, 0, buffer.length, crc);
+    }
+
+    public static int computeCRC32(byte buffer[], int start, int count, int lastcrc){
+        buildCRCTable();  
+        int temp1, temp2;
+        int i = start;
+        cachedCRC = lastcrc;
+      
+        while (count-- != 0){
+            temp1 = cachedCRC >>> 8;
+            byte s = buffer[i++];
+            temp2 = CRCTable[(cachedCRC ^s) & 0xFF];
+            cachedCRC = temp1 ^ temp2;
+        }
+        return cachedCRC;
+    }
+
+    public byte [] toBytes() {
+        return new BigInteger(new Integer(cachedCRC).toString()).toByteArray();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java b/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
new file mode 100644
index 0000000..553a21b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
@@ -0,0 +1,1249 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.localeconverter;
+
+import com.ibm.icu.dev.tool.UOption;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.NodeList;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.XMLConstants;
+
+import java.io.*;
+import java.util.*;
+import java.text.*;
+
+public final class XLIFF2ICUConverter {
+    
+    /**
+     * These must be kept in sync with getOptions().
+     */
+    private static final int HELP1 = 0;
+    private static final int HELP2 = 1;
+    private static final int SOURCEDIR = 2;
+    private static final int DESTDIR = 3;
+    private static final int TARGETONLY = 4;
+    private static final int SOURCEONLY = 5;
+    private static final int MAKE_SOURCE_ROOT = 6;
+    private static final int XLIFF_1_0 = 7;
+       
+    private static final UOption[] options = new UOption[] {
+        UOption.HELP_H(),
+        UOption.HELP_QUESTION_MARK(),
+        UOption.SOURCEDIR(),
+        UOption.DESTDIR(),
+        UOption.create("target-only", 't', UOption.OPTIONAL_ARG),
+        UOption.create("source-only", 'c', UOption.OPTIONAL_ARG),
+        UOption.create("make-source-root", 'r', UOption.NO_ARG),
+        UOption.create("xliff-1.0", 'x', UOption.NO_ARG)
+    };
+    
+    private static final int ARRAY_RESOURCE     = 0;
+    private static final int ALIAS_RESOURCE     = 1;
+    private static final int BINARY_RESOURCE    = 2;
+    private static final int INTEGER_RESOURCE   = 3;
+    private static final int INTVECTOR_RESOURCE = 4;
+    private static final int TABLE_RESOURCE     = 5;
+    
+    private static final String NEW_RESOURCES[] = {
+        "x-icu-array",
+        "x-icu-alias",
+        "x-icu-binary",
+        "x-icu-integer",
+        "x-icu-intvector",
+        "x-icu-table"
+    };
+    
+    private static final String OLD_RESOURCES[] = {
+        "array",
+        "alias",
+        "bin",
+        "int",
+        "intvector",
+        "table"
+    };
+    
+    private String resources[];
+    
+    private static final String ROOT            = "root";
+    private static final String RESTYPE         = "restype";
+    private static final String RESNAME         = "resname";
+    //private static final String YES             = "yes";
+    //private static final String NO              = "no";
+    private static final String TRANSLATE       = "translate";
+    //private static final String BODY            = "body";
+    private static final String GROUPS          = "group";
+    private static final String FILES           = "file";
+    private static final String TRANSUNIT       = "trans-unit";
+    private static final String BINUNIT         = "bin-unit";
+    private static final String BINSOURCE       = "bin-source";
+    //private static final String TS              = "ts";
+    //private static final String ORIGINAL        = "original";
+    private static final String SOURCELANGUAGE  = "source-language";
+    private static final String TARGETLANGUAGE  = "target-language";
+    private static final String TARGET          = "target";
+    private static final String SOURCE          = "source";
+    private static final String NOTE            = "note";
+    private static final String XMLLANG         = "xml:lang";
+    private static final String FILE            = "file";
+    private static final String INTVECTOR       = "intvector";
+    private static final String ARRAYS          = "array";
+    private static final String STRINGS         = "string";
+    private static final String BIN             = "bin";
+    private static final String INTS            = "int";
+    private static final String TABLE           = "table";
+    private static final String IMPORT          = "import";
+    private static final String HREF            = "href";
+    private static final String EXTERNALFILE    = "external-file";
+    private static final String INTERNALFILE    = "internal-file";
+    private static final String ALTTRANS        = "alt-trans";
+    private static final String CRC             = "crc";
+    private static final String ALIAS           = "alias";
+    private static final String LINESEP         = System.getProperty("line.separator");
+    private static final String BOM             = "\uFEFF";
+    private static final String CHARSET         = "UTF-8";
+    private static final String OPENBRACE       = "{";
+    private static final String CLOSEBRACE      = "}";
+    private static final String COLON           = ":";
+    private static final String COMMA           = ",";
+    private static final String QUOTE           = "\"";
+    private static final String COMMENTSTART    = "/**";
+    private static final String COMMENTEND      = " */";
+    private static final String TAG             = " * @";
+    private static final String COMMENTMIDDLE   = " * ";
+    private static final String SPACE           = " ";
+    private static final String INDENT          = "    ";
+    private static final String EMPTY           = "";
+    private static final String ID              = "id";
+    
+    public static void main(String[] args) {
+        XLIFF2ICUConverter cnv = new XLIFF2ICUConverter();
+        cnv.processArgs(args);
+    }
+    private String    sourceDir      = null;
+    //private String    fileName       = null;
+    private String    destDir        = null;
+    private boolean   targetOnly     = false;
+    private String    targetFileName = null; 
+    private boolean   makeSourceRoot = false;
+    private String    sourceFileName = null;
+    private boolean   sourceOnly     = false;
+    private boolean   xliff10        = false;
+    
+    private void processArgs(String[] args) {
+        int remainingArgc = 0;
+        try{
+            remainingArgc = UOption.parseArgs(args, options);
+        }catch (Exception e){
+            System.err.println("ERROR: "+ e.toString());
+            usage();
+        }
+        if(args.length==0 || options[HELP1].doesOccur || options[HELP2].doesOccur) {
+            usage();
+        }
+        if(remainingArgc==0){
+            System.err.println("ERROR: Either the file name to be processed is not "+
+                               "specified or the it is specified after the -t/-c \n"+
+                               "option which has an optional argument. Try rearranging "+
+                               "the options.");
+            usage();
+        }
+        if(options[SOURCEDIR].doesOccur) {
+            sourceDir = options[SOURCEDIR].value;
+        }
+        
+        if(options[DESTDIR].doesOccur) {
+            destDir = options[DESTDIR].value;
+        }
+        
+        if(options[TARGETONLY].doesOccur){
+            targetOnly = true;
+            targetFileName = options[TARGETONLY].value;
+        }
+        
+        if(options[SOURCEONLY].doesOccur){
+            sourceOnly = true;
+            sourceFileName = options[SOURCEONLY].value;
+        }
+        
+        if(options[MAKE_SOURCE_ROOT].doesOccur){
+            makeSourceRoot = true;
+        }
+        
+        if(options[XLIFF_1_0].doesOccur) {
+            xliff10 = true;
+        }
+        
+        if(destDir==null){
+            destDir = ".";
+        }
+        
+        if(sourceOnly == true && targetOnly == true){
+            System.err.println("--source-only and --target-only are specified. Please check the arguments and try again.");
+            usage();
+        }
+        
+        for (int i = 0; i < remainingArgc; i++) {
+            //int lastIndex = args[i].lastIndexOf(File.separator, args[i].length()) + 1; /* add 1 to skip past the separator */
+            //fileName = args[i].substring(lastIndex, args[i].length());
+            String xmlfileName = getFullPath(false,args[i]);
+            System.out.println("Processing file: "+xmlfileName);
+            createRB(xmlfileName);
+        }
+    }
+    
+    private void usage() {
+        System.out.println("\nUsage: XLIFF2ICUConverter [OPTIONS] [FILES]\n\n"+
+            "This program is used to convert XLIFF files to ICU ResourceBundle TXT files.\n"+
+            "Please refer to the following options. Options are not case sensitive.\n"+
+            "Options:\n"+
+            "-s or --sourcedir          source directory for files followed by path, default is current directory.\n" +
+            "-d or --destdir            destination directory, followed by the path, default is current directory.\n" +
+            "-h or -? or --help         this usage text.\n"+
+            "-t or --target-only        only generate the target language txt file, followed by optional output file name.\n" +
+            "                           Cannot be used in conjunction with --source-only.\n"+
+            "-c or --source-only        only generate the source language bundle followed by optional output file name.\n"+
+            "                           Cannot be used in conjunction with --target-only.\n"+
+            "-r or --make-source-root   produce root bundle from source elements.\n" +
+            "-x or --xliff-1.0          source file is XLIFF 1.0" +
+            "example: com.ibm.icu.dev.tool.localeconverter.XLIFF2ICUConverter -t <optional argument> -s xxx -d yyy myResources.xlf");
+        System.exit(-1);
+    }
+    
+    private String getFullPath(boolean fileType, String fName){
+        String str;
+        int lastIndex1 = fName.lastIndexOf(File.separator, fName.length()) + 1; /*add 1 to skip past the separator*/
+        int lastIndex2 = fName.lastIndexOf('.', fName.length());
+        if (fileType == true) {
+            if(lastIndex2 == -1){
+                fName = fName.trim() + ".txt";
+            }else{
+                if(!fName.substring(lastIndex2).equalsIgnoreCase(".txt")){
+                    fName =  fName.substring(lastIndex1,lastIndex2) + ".txt";
+                }
+            }
+            if (destDir != null && fName != null) {
+                str = destDir + File.separator + fName.trim();                   
+            } else {
+                str = System.getProperty("user.dir") + File.separator + fName.trim();
+            }
+        } else {
+            if(lastIndex2 == -1){
+                fName = fName.trim() + ".xlf";
+            }else{
+                if(!fName.substring(lastIndex2).equalsIgnoreCase(".xml") && fName.substring(lastIndex2).equalsIgnoreCase(".xlf")){
+                    fName = fName.substring(lastIndex1,lastIndex2) + ".xlf";
+                }
+            }
+            if(sourceDir != null && fName != null) {
+                str = sourceDir + File.separator + fName;
+            } else if (lastIndex1 > 0) {
+                str = fName;
+            } else {
+                str = System.getProperty("user.dir") + File.separator + fName;
+            }
+        }
+        return str;
+    }   
+
+    /*
+     * Utility method to translate a String filename to URL.  
+     *
+     * Note: This method is not necessarily proven to get the 
+     * correct URL for every possible kind of filename; it should 
+     * be improved.  It handles the most common cases that we've 
+     * encountered when running Conformance tests on Xalan.
+     * Also note, this method does not handle other non-file:
+     * flavors of URLs at all.
+     *
+     * If the name is null, return null.
+     * If the name starts with a common URI scheme (namely the ones 
+     * found in the examples of RFC2396), then simply return the 
+     * name as-is (the assumption is that it's already a URL)
+     * Otherwise we attempt (cheaply) to convert to a file:/// URL.
+     */
+    private static String filenameToURL(String filename){
+        // null begets null - something like the commutative property
+        if (null == filename){
+            return null;
+        }
+
+        // Don't translate a string that already looks like a URL
+        if (filename.startsWith("file:")
+            || filename.startsWith("http:")
+            || filename.startsWith("ftp:")
+            || filename.startsWith("gopher:")
+            || filename.startsWith("mailto:")
+            || filename.startsWith("news:")
+            || filename.startsWith("telnet:")
+           ){
+               return filename;
+           }
+        
+
+        File f = new File(filename);
+        String tmp = null;
+        try{
+            // This normally gives a better path
+            tmp = f.getCanonicalPath();
+        }catch (IOException ioe){
+            // But this can be used as a backup, for cases 
+            //  where the file does not exist, etc.
+            tmp = f.getAbsolutePath();
+        }
+
+        // URLs must explicitly use only forward slashes
+        if (File.separatorChar == '\\') {
+            tmp = tmp.replace('\\', '/');
+        }
+        // Note the presumption that it's a file reference
+        // Ensure we have the correct number of slashes at the 
+        //  start: we always want 3 /// if it's absolute
+        //  (which we should have forced above)
+        if (tmp.startsWith("/")){
+            return "file://" + tmp;
+        }
+        else{
+            return "file:///" + tmp;
+        }
+    }
+    private boolean isXmlLang (String lang){
+
+        int suffix;
+        char c;
+        
+        if (lang.length () < 2){
+            return false;
+        }
+
+        c = lang.charAt(1);
+        if (c == '-') {        
+            c = lang.charAt(0);
+            if (!(c == 'i' || c == 'I' || c == 'x' || c == 'X')){
+                return false;
+            }
+            suffix = 1;
+        } else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+            c = lang.charAt(0);
+            if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))){
+                return false;
+            }
+            suffix = 2;
+        } else{
+            return false;
+        }
+        while (suffix < lang.length ()) {
+            c = lang.charAt(suffix);
+            if (c != '-'){
+                break;
+            }
+            while (++suffix < lang.length ()) {
+                c = lang.charAt(suffix);
+                if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))){
+                    break;
+                }
+            }
+        }
+        return  ((lang.length() == suffix) && (c != '-'));
+    }
+    
+    private void createRB(String xmlfileName) {
+       
+        String urls = filenameToURL(xmlfileName);
+        DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+        dfactory.setNamespaceAware(true);
+        Document doc = null;
+        
+        if (xliff10) {
+            dfactory.setValidating(true);
+            resources = OLD_RESOURCES;
+        } else {
+            try {
+                SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+                Schema schema = schemaFactory.newSchema();
+                
+                dfactory.setSchema(schema);
+            } catch (SAXException e) {
+                System.err.println("Can't create the schema...");
+                System.exit(-1);
+            }
+            
+            resources = NEW_RESOURCES;
+        }
+        
+        ErrorHandler nullHandler = new ErrorHandler() {
+            public void warning(SAXParseException e) throws SAXException {
+                            
+            }
+            public void error(SAXParseException e) throws SAXException {
+                System.err.println("The XLIFF document is invalid, please check it first: ");
+                System.err.println("Line "+e.getLineNumber()+", Column "+e.getColumnNumber());
+                System.err.println("Error: " + e.getMessage());
+                System.exit(-1);
+            }
+            public void fatalError(SAXParseException e) throws SAXException {
+                throw e;
+            }
+        };
+        
+        try {
+            DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
+            docBuilder.setErrorHandler(nullHandler);
+            doc = docBuilder.parse(new InputSource(urls));
+            
+            NodeList nlist = doc.getElementsByTagName(FILES);
+            if(nlist.getLength()>1){
+                throw new RuntimeException("Multiple <file> elements in the XLIFF file not supported.");
+            }
+                        
+            // get the value of source-language attribute
+            String sourceLang = getLanguageName(doc, SOURCELANGUAGE);
+            // get the value of target-language attribute
+            String targetLang = getLanguageName(doc, TARGETLANGUAGE);
+            
+            // get the list of <source> elements
+            NodeList sourceList = doc.getElementsByTagName(SOURCE);
+            // get the list of target elements
+            NodeList targetList = doc.getElementsByTagName(TARGET);
+            
+            // check if the xliff file has source elements in multiple languages
+            // the source-language value should be the same as xml:lang values
+            // of all the source elements.
+            String xmlSrcLang = checkLangAttribute(sourceList, sourceLang);
+            
+            // check if the xliff file has target elements in multiple languages
+            // the target-language value should be the same as xml:lang values
+            // of all the target elements.
+            String xmlTargetLang = checkLangAttribute(targetList, targetLang);
+            
+            // Create the Resource linked list which will hold the
+            // source and target bundles after parsing
+            Resource[] set = new Resource[2];
+            set[0] = new ResourceTable();
+            set[1] = new ResourceTable();
+            
+            // lenient extraction of source language
+            if(makeSourceRoot == true){ 
+                set[0].name = ROOT;
+            }else if(sourceLang!=null){
+                set[0].name = sourceLang.replace('-','_');
+            }else{
+                if(xmlSrcLang != null){
+                    set[0].name = xmlSrcLang.replace('-','_');
+                }else{
+                    System.err.println("ERROR: Could not figure out the source language of the file. Please check the XLIFF file.");
+                    System.exit(-1);
+                }
+            }
+            
+            // lenient extraction of the target language
+            if(targetLang!=null){
+                set[1].name = targetLang.replace('-','_');
+            }else{
+                if(xmlTargetLang!=null){
+                    set[1].name = xmlTargetLang.replace('-','_');
+                }else{
+                    System.err.println("WARNING: Could not figure out the target language of the file. Producing source bundle only.");
+                }
+            }
+   
+            
+            // check if any <alt-trans> elements are present
+            NodeList altTrans = doc.getElementsByTagName(ALTTRANS);
+            if(altTrans.getLength()>0){
+                System.err.println("WARNING: <alt-trans> elements in found. Ignoring all <alt-trans> elements.");
+            }
+            
+            // get all the group elements
+            NodeList list = doc.getElementsByTagName(GROUPS);
+            
+            // process the first group element. The first group element is 
+            // the base table that must be parsed recursively
+            parseTable(list.item(0), set);
+            
+            // write out the bundle
+            writeResource(set, xmlfileName);
+         }
+        catch (Throwable se) {
+            System.err.println("ERROR: " + se.toString());
+            System.exit(1);
+        }        
+    }
+    
+    private void writeResource(Resource[] set, String xmlfileName){
+        if(targetOnly==false){
+            writeResource(set[0], xmlfileName, sourceFileName);
+        }
+        if(sourceOnly == false){
+            if(targetOnly==true && set[1].name == null){
+                throw new RuntimeException("The "+ xmlfileName +" does not contain translation\n");
+            }
+            if(set[1].name != null){
+                writeResource(set[1], xmlfileName, targetFileName);
+            }
+        }
+    }
+    
+    private void writeResource(Resource set, String sourceFilename, String targetFilename){
+        try {
+            String outputFileName = null;
+            if(targetFilename != null){
+                outputFileName = destDir+File.separator+targetFilename+".txt";
+            }else{
+                outputFileName = destDir+File.separator+set.name+".txt";
+            }
+            FileOutputStream file = new FileOutputStream(outputFileName);
+            BufferedOutputStream writer = new BufferedOutputStream(file);
+
+            writeHeader(writer,sourceFilename);
+            
+            //Now start writing the resource;
+            Resource current = set;
+            while(current!=null){
+                current.write(writer, 0, false);
+                current = current.next;
+            }
+            writer.flush();
+            writer.close();
+        } catch (Exception ie) {
+            System.err.println("ERROR :" + ie.toString());
+            return;
+        }
+    }
+    
+    private String getLanguageName(Document doc, String lang){
+        if(doc!=null){
+            NodeList list = doc.getElementsByTagName(FILE);
+            Node node = list.item(0);
+            NamedNodeMap attr = node.getAttributes();
+            Node orig = attr.getNamedItem(lang);
+            
+            if(orig != null){
+                String name = orig.getNodeValue();
+                NodeList groupList = doc.getElementsByTagName(GROUPS);
+                Node group = groupList.item(0);
+                NamedNodeMap groupAtt = group.getAttributes();
+                Node id = groupAtt.getNamedItem(ID);
+                if(id!=null){
+                    String idVal = id.getNodeValue();
+                    
+                    if(!name.equals(idVal)){
+                        System.out.println("WARNING: The id value != language name. " +
+                                           "Please compare the output with the orignal " +
+                                           "ICU ResourceBundle before proceeding.");
+                    }
+                }
+                if(!isXmlLang(name)){
+                    System.err.println("The attribute "+ lang + "=\""+ name +
+                                       "\" of <file> element does not satisfy RFC 1766 conditions.");
+                    System.exit(-1);
+                }
+                return name;
+            }
+        }
+        return null;
+    }
+    
+    // check if the xliff file is translated into multiple languages
+    // The XLIFF specification allows for single <target> element
+    // as the child of <trans-unit> but the attributes of the 
+    // <target> element may different across <trans-unit> elements
+    // check for it. Similar is the case with <source> elements
+    private String checkLangAttribute(NodeList list, String origName){
+        String oldLangName=origName;
+        for(int i = 0 ;i<list.getLength(); i++){
+            Node node = list.item(i);
+            NamedNodeMap attr = node.getAttributes();
+            Node lang = attr.getNamedItem(XMLLANG);
+            String langName = null;
+            // the target element should always contain xml:lang attribute
+            if(lang==null ){
+                if(origName==null){
+                    System.err.println("Encountered <target> element without xml:lang attribute. Please fix the below element in the XLIFF file.\n"+ node.toString());
+                    System.exit(-1);
+                }else{
+                    langName = origName;
+                }
+            }else{
+                langName = lang.getNodeValue();
+            }
+
+            if(oldLangName!=null && langName!=null && !langName.equals(oldLangName)){
+                throw new RuntimeException("The <trans-unit> elements must be bilingual, multilingual tranlations not supported. xml:lang = " + oldLangName + 
+                                           " and xml:lang = " + langName);
+            }
+            oldLangName = langName;
+        }
+        return oldLangName;
+    }
+    
+    private class Resource{
+        String[] note = new String[20];
+        int noteLen = 0;
+        String translate;
+        String comment;
+        String name;
+        Resource next;
+        public String escapeSyntaxChars(String val){
+            // escape the embedded quotes
+            char[] str = val.toCharArray();
+            StringBuffer result = new StringBuffer();
+            for(int i=0; i<str.length; i++){
+                switch (str[i]){
+                    case '\u0022':
+                        result.append('\\'); //append backslash
+                    default:
+                        result.append(str[i]);
+                }      
+            }
+            return result.toString();
+        }
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            while(next!=null){
+                next.write(writer, numIndent+1, false);
+            }
+        }
+        public void writeIndent(OutputStream writer, int numIndent){
+            for(int i=0; i< numIndent; i++){
+                write(writer,INDENT);
+            }
+        }
+        public void write(OutputStream writer, String value){
+            try {
+                byte[] bytes = value.getBytes(CHARSET);
+                writer.write(bytes, 0, bytes.length);
+            } catch(Exception e) {
+                System.err.println(e);
+                System.exit(1);
+            }
+        }
+        public void writeComments(OutputStream writer, int numIndent){
+            boolean translateIsDefault = translate == null || translate.equals("yes");
+            
+            if(comment!=null || ! translateIsDefault || noteLen > 0){
+                // print the start of the comment
+                writeIndent(writer, numIndent);
+                write(writer, COMMENTSTART+LINESEP);
+                
+                // print comment if any
+                if(comment!=null){
+                    writeIndent(writer, numIndent);
+                    write(writer, COMMENTMIDDLE);
+                    write(writer, comment);
+                    write(writer, LINESEP);
+                }
+                
+                // print the translate attribute if any
+                if(! translateIsDefault){
+                    writeIndent(writer, numIndent);
+                    write(writer, TAG+TRANSLATE+SPACE);
+                    write(writer, translate);
+                    write(writer, LINESEP);
+                }
+                
+                // print note elements if any
+                for(int i=0; i<noteLen; i++){
+                    if(note[i]!=null){
+                        writeIndent(writer, numIndent);
+                        write(writer, TAG+NOTE+SPACE+note[i]);
+                        write(writer, LINESEP);
+                    }
+                }
+                
+                // terminate the comment
+                writeIndent(writer, numIndent);
+                write(writer, COMMENTEND+LINESEP);
+            }          
+        }
+    }
+
+    private class ResourceString extends Resource{
+        String val;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            if(bare==true){
+                if(name!=null){
+                    throw new RuntimeException("Bare option is set to true but the resource has a name!");
+                }
+                
+                write(writer,QUOTE+escapeSyntaxChars(val)+QUOTE); 
+            }else{
+                write(writer, name+COLON+STRINGS+ OPENBRACE + QUOTE + escapeSyntaxChars(val) + QUOTE+ CLOSEBRACE + LINESEP);
+            }
+        }
+    }
+    private class ResourceAlias extends Resource{
+        String val;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            String line =  ((name==null)? EMPTY: name)+COLON+ALIAS+ OPENBRACE+QUOTE+escapeSyntaxChars(val)+QUOTE+CLOSEBRACE;
+            if(bare==true){
+                if(name!=null){
+                    throw new RuntimeException("Bare option is set to true but the resource has a name!");
+                }
+                write(writer,line); 
+            }else{
+                write(writer, line+LINESEP);
+            }
+        }
+    }
+    private class ResourceInt extends Resource{
+        String val;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            String line =  ((name==null)? EMPTY: name)+COLON+INTS+ OPENBRACE + val +CLOSEBRACE;
+            if(bare==true){
+                if(name!=null){
+                    throw new RuntimeException("Bare option is set to true but the resource has a name!");
+                }
+                write(writer,line); 
+            }else{
+                write(writer, line+LINESEP);
+            }
+        }
+    }
+    private class ResourceBinary extends Resource{
+        String internal;
+        String external;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            if(internal==null){
+                String line = ((name==null) ? EMPTY : name)+COLON+IMPORT+ OPENBRACE+QUOTE+external+QUOTE+CLOSEBRACE + ((bare==true) ?  EMPTY : LINESEP);
+                write(writer, line);
+            }else{
+                String line = ((name==null) ? EMPTY : name)+COLON+BIN+ OPENBRACE+internal+CLOSEBRACE+ ((bare==true) ?  EMPTY : LINESEP);
+                write(writer,line);
+            }
+            
+        }
+    }
+    private class ResourceIntVector extends Resource{
+        ResourceInt first;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            write(writer, name+COLON+INTVECTOR+OPENBRACE+LINESEP);
+            numIndent++;
+            ResourceInt current = (ResourceInt) first;
+            while(current != null){
+                //current.write(writer, numIndent, true);
+                writeIndent(writer, numIndent);
+                write(writer, current.val);
+                write(writer, COMMA+LINESEP);
+                current = (ResourceInt) current.next;
+            }
+            numIndent--;
+            writeIndent(writer, numIndent);
+            write(writer, CLOSEBRACE+LINESEP);
+        }
+    }
+    private class ResourceTable extends Resource{
+        Resource first;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            write(writer, name+COLON+TABLE+OPENBRACE+LINESEP);
+            numIndent++;
+            Resource current = first;
+            while(current != null){
+                current.write(writer, numIndent, false);
+                current = current.next;
+            }
+            numIndent--;
+            writeIndent(writer, numIndent);
+            write(writer, CLOSEBRACE+LINESEP);
+        }
+    }
+    private class ResourceArray extends Resource{
+        Resource first;
+        public void write(OutputStream writer, int numIndent, boolean bare){
+            writeComments(writer, numIndent);
+            writeIndent(writer, numIndent);
+            write(writer, name+COLON+ARRAYS+OPENBRACE+LINESEP);
+            numIndent++;
+            Resource current = first;
+            while(current != null){
+                current.write(writer, numIndent, true);
+                write(writer, COMMA+LINESEP);
+                current = current.next;
+            }
+            numIndent--;
+            writeIndent(writer, numIndent);
+            write(writer, CLOSEBRACE+LINESEP);
+        }
+    }
+    
+    private String getAttributeValue(Node sNode, String attribName){
+        String value=null;
+        Node node = sNode;
+
+        NamedNodeMap attributes = node.getAttributes();
+        Node attr = attributes.getNamedItem(attribName);
+        if(attr!=null){
+            value = attr.getNodeValue();
+        }
+
+        return value;
+    }
+    
+    private void parseResourceString(Node node, ResourceString[] set){
+        ResourceString currentSource;
+        ResourceString currentTarget;
+        currentSource =  set[0];
+        currentTarget =  set[1];
+        String resName   = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node, TRANSLATE);
+        
+        // loop to pickup <source>, <note> and <target> elements
+        for(Node transUnit = node.getFirstChild(); transUnit!=null; transUnit = transUnit.getNextSibling()){
+            short type = transUnit.getNodeType();
+            String name = transUnit.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                // get the comment
+               currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
+            }else if( type == Node.ELEMENT_NODE){
+                if(name.equals(SOURCE)){
+                    // save the source and target values
+                    currentSource.name = currentTarget.name = resName;
+                    currentSource.val = currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                    currentSource.translate = currentTarget.translate = translate;
+                }else if(name.equals(NOTE)){
+                    // save the note values
+                    currentSource.note[currentSource.noteLen++] = 
+                        currentTarget.note[currentTarget.noteLen++] =
+                        transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(TARGET)){
+                    // if there is a target element replace it
+                    currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }
+            }
+            
+        }
+    }
+
+    private void parseResourceInt(Node node, ResourceInt[] set){
+        ResourceInt currentSource;
+        ResourceInt currentTarget;
+        currentSource =  set[0];
+        currentTarget =  set[1];
+        String resName   = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node, TRANSLATE);
+        // loop to pickup <source>, <note> and <target> elements
+        for(Node transUnit = node.getFirstChild(); transUnit!=null; transUnit = transUnit.getNextSibling()){
+            short type = transUnit.getNodeType();
+            String name = transUnit.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                // get the comment
+               currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
+            }else if( type == Node.ELEMENT_NODE){
+                if(name.equals(SOURCE)){
+                    // save the source and target values
+                    currentSource.name = currentTarget.name = resName;
+                    currentSource.translate = currentTarget.translate = translate;
+                    currentSource.val = currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(NOTE)){
+                    // save the note values
+                    currentSource.note[currentSource.noteLen++] = 
+                        currentTarget.note[currentTarget.noteLen++] =
+                        transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(TARGET)){
+                    // if there is a target element replace it
+                    currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }
+            }
+            
+        }
+    }
+    
+    private void parseResourceAlias(Node node, ResourceAlias[] set){
+        ResourceAlias currentSource;
+        ResourceAlias currentTarget;
+        currentSource =  set[0];
+        currentTarget =  set[1];
+        String resName   = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node, TRANSLATE);
+        // loop to pickup <source>, <note> and <target> elements
+        for(Node transUnit = node.getFirstChild(); transUnit!=null; transUnit = transUnit.getNextSibling()){
+            short type = transUnit.getNodeType();
+            String name = transUnit.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                // get the comment
+               currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
+            }else if( type == Node.ELEMENT_NODE){
+                if(name.equals(SOURCE)){
+                    // save the source and target values
+                    currentSource.name = currentTarget.name = resName;
+                    currentSource.translate = currentTarget.translate = translate;
+                    currentSource.val = currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(NOTE)){
+                    // save the note values
+                    currentSource.note[currentSource.noteLen++] = 
+                        currentTarget.note[currentTarget.noteLen++] =
+                        transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(TARGET)){
+                    // if there is a target element replace it
+                    currentTarget.val = transUnit.getFirstChild().getNodeValue();
+                }
+            }
+            
+        }
+    }
+    private void parseResourceBinary(Node node, ResourceBinary[] set){
+        ResourceBinary currentSource;
+        ResourceBinary currentTarget;
+        currentSource =  set[0];
+        currentTarget =  set[1];
+
+        // loop to pickup <source>, <note> and <target> elements
+        for(Node transUnit = node.getFirstChild(); transUnit!=null; transUnit = transUnit.getNextSibling()){
+            short type = transUnit.getNodeType();
+            String name = transUnit.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                // get the comment
+               currentSource.comment =  currentTarget.comment = transUnit.getNodeValue();
+            }else if( type == Node.ELEMENT_NODE){
+                if(name.equals(BINSOURCE)){
+                    // loop to pickup internal-file/extenal-file element
+                    continue;
+                }else if(name.equals(NOTE)){
+                    // save the note values
+                    currentSource.note[currentSource.noteLen++] = 
+                        currentTarget.note[currentTarget.noteLen++] =
+                        transUnit.getFirstChild().getNodeValue();
+                }else if(name.equals(INTERNALFILE)){
+                    // if there is a target element replace it
+                    String crc = getAttributeValue(transUnit, CRC);
+                    String value = transUnit.getFirstChild().getNodeValue();
+                    
+                    //verify that the binary value conforms to the CRC
+                    if(Integer.parseInt(crc, 10) != CalculateCRC32.computeCRC32(value)) {
+                        System.err.println("ERROR: CRC value incorrect! Please check.");
+                        System.exit(1);
+                    }
+                    
+                    currentTarget.internal = currentSource.internal= value;
+                    
+                }else if(name.equals(EXTERNALFILE)){
+                    currentSource.external = getAttributeValue(transUnit, HREF);
+                    currentTarget.external = currentSource.external;
+                }
+            }
+            
+        }
+    }
+    private void parseTransUnit(Node node, Resource[] set){
+
+        String attrType = getAttributeValue(node, RESTYPE);
+        String translate = getAttributeValue(node, TRANSLATE);
+        if(attrType==null || attrType.equals(STRINGS)){
+            ResourceString[] strings = new ResourceString[2];
+            strings[0] = new ResourceString();
+            strings[1] = new ResourceString();
+            parseResourceString(node, strings);
+            strings[0].translate = strings[1].translate = translate;
+            set[0] = strings[0];
+            set[1] = strings[1];
+        }else if(attrType.equals(resources[INTEGER_RESOURCE])){
+            ResourceInt[] ints = new ResourceInt[2];
+            ints[0] = new ResourceInt();
+            ints[1] = new ResourceInt();
+            parseResourceInt(node, ints);
+            ints[0].translate = ints[1].translate = translate;
+            set[0] = ints[0];
+            set[1] = ints[1];
+        }else if(attrType.equals(resources[ALIAS_RESOURCE])){
+            ResourceAlias[] ints = new ResourceAlias[2];
+            ints[0] = new ResourceAlias();
+            ints[1] = new ResourceAlias();
+            parseResourceAlias(node, ints);
+            ints[0].translate = ints[1].translate = translate;
+            set[0] = ints[0];
+            set[1] = ints[1];
+        }
+    }
+
+    private void parseBinUnit(Node node, Resource[] set){
+        if (getAttributeValue(node, RESTYPE).equals(resources[BINARY_RESOURCE])) {
+            ResourceBinary[] bins = new ResourceBinary[2];
+            
+            bins[0] = new ResourceBinary();
+            bins[1] = new ResourceBinary();
+            
+            Resource currentSource = bins[0];
+            Resource currentTarget = bins[1];
+            String resName   = getAttributeValue(node, RESNAME);
+            String translate = getAttributeValue(node, TRANSLATE);
+            
+            currentTarget.name = currentSource.name = resName;
+            currentSource.translate = currentTarget.translate = translate;
+            
+            for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
+                short type = child.getNodeType();
+                String name = child.getNodeName();
+                
+                if(type == Node.COMMENT_NODE){
+                    currentSource.comment = currentTarget.comment = child.getNodeValue();
+                }else if(type == Node.ELEMENT_NODE){
+                    if(name.equals(BINSOURCE)){
+                        parseResourceBinary(child, bins);
+                    }else if(name.equals(NOTE)){
+                        String note =  child.getFirstChild().getNodeValue();
+                        
+                        currentSource.note[currentSource.noteLen++] = currentTarget.note[currentTarget.noteLen++] = note;
+                    }
+                }
+            }
+            
+            set[0] = bins[0];
+            set[1] = bins[1];
+        }
+    }
+    
+    private void parseArray(Node node, Resource[] set){
+        if(set[0]==null){
+            set[0] = new ResourceArray();
+            set[1] = new ResourceArray();
+        }
+        Resource currentSource = set[0];
+        Resource currentTarget = set[1];
+        String resName = getAttributeValue(node, RESNAME);
+        currentSource.name = currentTarget.name = resName;
+        boolean isFirst = true;
+        
+        for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
+            short type = child.getNodeType();
+            String name = child.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                currentSource.comment = currentTarget.comment = child.getNodeValue();
+            }else if(type == Node.ELEMENT_NODE){
+                if(name.equals(TRANSUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseTransUnit(child, next);
+                    if(isFirst==true){
+                       ((ResourceArray) currentSource).first = next[0];
+                       ((ResourceArray) currentTarget).first = next[1];
+                       currentSource = ((ResourceArray) currentSource).first;
+                       currentTarget = ((ResourceArray) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }else if(name.equals(NOTE)){
+                    String note =  child.getFirstChild().getNodeValue();
+                    currentSource.note[currentSource.noteLen++] = currentTarget.note[currentTarget.noteLen++] = note;
+                }else if(name.equals(BINUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseBinUnit(child, next);
+                    if(isFirst==true){
+                       ((ResourceArray) currentSource).first = next[0];
+                       ((ResourceArray) currentTarget).first = next[1];
+                       currentSource = ((ResourceArray) currentSource).first.next;
+                       currentTarget = ((ResourceArray) currentTarget).first.next;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }
+            }
+        }
+    }
+    private void parseIntVector(Node node, Resource[] set){
+        if(set[0]==null){
+            set[0] = new ResourceIntVector();
+            set[1] = new ResourceIntVector();
+        }
+        Resource currentSource = set[0];
+        Resource currentTarget = set[1];
+        String resName = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node,TRANSLATE);
+        currentSource.name = currentTarget.name = resName;
+        currentSource.translate = translate;
+        boolean isFirst = true;
+        for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
+            short type = child.getNodeType();
+            String name = child.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                currentSource.comment = currentTarget.comment = child.getNodeValue();
+            }else if(type == Node.ELEMENT_NODE){
+                if(name.equals(TRANSUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseTransUnit(child, next);
+                    if(isFirst==true){
+                        // the down cast should be safe .. if not something is terribly wrong!!
+                       ((ResourceIntVector) currentSource).first = (ResourceInt)next[0];
+                       ((ResourceIntVector) currentTarget).first = (ResourceInt) next[1];
+                       currentSource = ((ResourceIntVector) currentSource).first;
+                       currentTarget = ((ResourceIntVector) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }else if(name.equals(NOTE)){
+                    String note =  child.getFirstChild().getNodeValue();
+                    currentSource.note[currentSource.noteLen++] = currentTarget.note[currentTarget.noteLen++] = note;
+                }
+            }
+        }
+    }
+    private void parseTable(Node node, Resource[] set){
+        if(set[0]==null){
+            set[0] = new ResourceTable();
+            set[1] = new ResourceTable();
+        }
+        Resource currentSource = set[0];
+        Resource currentTarget = set[1];
+        
+        String resName = getAttributeValue(node, RESNAME);
+        String translate = getAttributeValue(node,TRANSLATE);
+        if(resName!=null && currentSource.name==null && currentTarget.name==null){
+            currentSource.name = currentTarget.name = resName;
+        }
+        currentTarget.translate = currentSource.translate = translate;
+        
+        boolean isFirst = true;
+        for(Node child = node.getFirstChild(); child != null; child = child.getNextSibling()){
+            short type = child.getNodeType();
+            String name = child.getNodeName();
+            if(type == Node.COMMENT_NODE){
+                currentSource.comment = currentTarget.comment = child.getNodeValue();
+            }else if(type == Node.ELEMENT_NODE){
+                if(name.equals(GROUPS)){
+                    Resource[] next = new Resource[2];
+                    parseGroup(child, next);
+                    if(isFirst==true){
+                        // the down cast should be safe .. if not something is terribly wrong!!
+                       ((ResourceTable) currentSource).first = next[0];
+                       ((ResourceTable) currentTarget).first = next[1];
+                       currentSource = ((ResourceTable) currentSource).first;
+                       currentTarget = ((ResourceTable) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }else if(name.equals(TRANSUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseTransUnit(child, next);
+                    if(isFirst==true){
+                        // the down cast should be safe .. if not something is terribly wrong!!
+                       ((ResourceTable) currentSource).first = next[0];
+                       ((ResourceTable) currentTarget).first = next[1];
+                       currentSource = ((ResourceTable) currentSource).first;
+                       currentTarget = ((ResourceTable) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }else if(name.equals(NOTE)){
+                    String note =  child.getFirstChild().getNodeValue();
+                    currentSource.note[currentSource.noteLen++] = currentTarget.note[currentTarget.noteLen++] = note;
+                }else if(name.equals(BINUNIT)){
+                    Resource[] next = new Resource[2];
+                    parseBinUnit(child, next);
+                    if(isFirst==true){
+                        // the down cast should be safe .. if not something is terribly wrong!!
+                       ((ResourceTable) currentSource).first = next[0];
+                       ((ResourceTable) currentTarget).first = next[1];
+                       currentSource = ((ResourceTable) currentSource).first;
+                       currentTarget = ((ResourceTable) currentTarget).first;
+                       isFirst = false;
+                    }else{
+                        currentSource.next = next[0];
+                        currentTarget.next = next[1];
+                        // set the next pointers
+                        currentSource = currentSource.next;
+                        currentTarget = currentTarget.next;
+                    }
+                }
+            }
+        }
+    }
+    
+    private void parseGroup(Node node, Resource[] set){
+
+        // figure out what kind of group this is
+        String resType = getAttributeValue(node, RESTYPE);
+        if(resType.equals(resources[ARRAY_RESOURCE])){
+            parseArray(node, set);
+        }else if( resType.equals(resources[TABLE_RESOURCE])){
+            parseTable(node, set);
+        }else if( resType.equals(resources[INTVECTOR_RESOURCE])){
+            parseIntVector(node, set);
+        }
+    }
+    
+
+    private void writeLine(OutputStream writer, String line) {
+        try {
+            byte[] bytes = line.getBytes(CHARSET);
+            writer.write(bytes, 0, bytes.length);
+        } catch (Exception e) {
+            System.err.println(e);
+            System.exit(1);
+        }
+    }
+    
+    private void writeHeader(OutputStream writer, String fileName){
+        final String header = 
+            "// ***************************************************************************" + LINESEP +
+            "// *" + LINESEP +
+            "// * Tool: com.ibm.icu.dev.tool.localeconverter.XLIFF2ICUConverter.java" + LINESEP +
+            "// * Date & Time: {0,date,MM/dd/yyyy hh:mm:ss a z}"+ LINESEP +
+            "// * Source File: {1}" + LINESEP +
+            "// *" + LINESEP +                    
+            "// ***************************************************************************" + LINESEP;
+            
+        writeBOM(writer);
+        MessageFormat format = new MessageFormat(header);
+        Object args[] = {new Date(System.currentTimeMillis()), fileName};
+
+        writeLine(writer, format.format(args));
+    }
+    
+    private  void writeBOM(OutputStream buffer) {
+        try {
+            byte[] bytes = BOM.getBytes(CHARSET);
+            buffer.write(bytes, 0, bytes.length);
+        } catch(Exception e) {
+            System.err.println(e);
+            System.exit(1);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/localeconverter/manifest.xliff.stub b/src/com/ibm/icu/dev/tool/localeconverter/manifest.xliff.stub
new file mode 100644
index 0000000..2aff183
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/localeconverter/manifest.xliff.stub
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Class-Path: icu4j.jar
+Main-Class: com.ibm.icu.dev.test.TestAll
+
+Name: com/ibm/icu/
+Specification-Title: XLIFF to ICU conversion tool
+Specification-Version: 3.4
+Specification-Vendor: ICU
+Implementation-Title: XLIFF to ICU Converter
+Implementation-Version: 3.4.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2005, International Business Machines Corporation and others.  All Rights Reserved.
+Sealed: false
diff --git a/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java b/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java
new file mode 100644
index 0000000..c1e3c45
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java
@@ -0,0 +1,870 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.rbbi;
+
+import com.ibm.icu.util.CompactByteArray;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.impl.Utility;
+import java.io.*;
+import java.util.Vector;
+
+public class BuildDictionaryFile {
+    public static void main(String args[])
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        String filename = args[0];
+        String encoding = "";
+        String outputFile = "";
+        String listingFile = "";
+
+        if (args.length >= 2)
+            encoding = args[1];
+
+        if(args.length >= 3)
+            outputFile = args[2];
+
+        if (args.length >= 4)
+            listingFile = args[3];
+
+        BuildDictionaryFile dictionary = new BuildDictionaryFile();
+        dictionary.build(filename, encoding);
+
+        DataOutputStream out = null;
+        if (outputFile.length() != 0) {
+            out = new DataOutputStream(new FileOutputStream(outputFile));
+            dictionary.writeDictionaryFile(out);
+        }
+
+        PrintWriter listing = null;
+        if (listingFile.length() != 0) {
+            listing = new PrintWriter(new OutputStreamWriter(new FileOutputStream(listingFile), "UnicodeLittle"));
+            dictionary.printWordList("", 0, listing);
+            listing.close();
+        }
+    }
+
+    public BuildDictionaryFile() {
+    }
+
+    public void build(String filename, String encoding)
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        FileInputStream file = new FileInputStream(filename);
+        InputStreamReader in;
+        if (encoding.length() == 0)
+            in = new InputStreamReader(file);
+        else
+            in = new InputStreamReader(file, encoding);
+
+        buildColumnMap(in);
+
+        file = new FileInputStream(filename);
+        if (encoding.length() == 0)
+            in = new InputStreamReader(file);
+        else
+            in = new InputStreamReader(file, encoding);
+
+        buildStateTable(in);
+//printTable();
+    }
+
+    public void buildColumnMap(InputStreamReader in) throws IOException {
+System.out.println("Building column map...");
+        UnicodeSet charsInFile = new UnicodeSet();
+        int c = in.read();
+int totalChars = 0;
+        while (c >= 0) {
+++totalChars; if (totalChars > 0 && totalChars % 5000 == 0) System.out.println("Read " + totalChars + " characters...");
+            if (c > ' ')
+                charsInFile.add((char)c);
+            c = in.read();
+        }
+//        Test.debugPrintln(charsInFile.toString());
+
+        StringBuffer tempReverseMap = new StringBuffer();
+        tempReverseMap.append(' ');
+
+        columnMap = new CompactByteArray();
+        int n = charsInFile.getRangeCount();
+        byte p = 1;
+        for (int i=0; i<n; ++i) {
+            char start = (char) charsInFile.getRangeStart(i);
+            char end = (char) charsInFile.getRangeEnd(i);
+            for (char ch = start; ch <= end; ch++) {
+                if (columnMap.elementAt(Character.toLowerCase(ch)) == 0) {
+                    columnMap.setElementAt(Character.toUpperCase(ch), Character.toUpperCase(ch),
+                                        p);
+                    columnMap.setElementAt(Character.toLowerCase(ch), Character.toLowerCase(ch),
+                                        p);
+                    ++p;
+                    tempReverseMap.append(ch);
+                }
+            }
+        }
+//System.out.println("Compacting...");
+        columnMap.compact();
+
+//System.out.println(tempReverseMap.toString());
+        reverseColumnMap = new char[p];
+        Utility.getChars(tempReverseMap, 0, p, reverseColumnMap, 0);
+
+        System.out.println("total columns = " + p);
+        numCols = p;
+        numColGroups = (numCols >> 5) + 1;
+
+/*
+short[] index = columnMap.getIndexArray();
+System.out.println("Index:");
+for (int i = 0; i < index.length; i++) {
+if (i % 16 == 0) {
+System.out.println();
+System.out.print("    " + Integer.toHexString(i * 128) + ":");
+}
+System.out.print("\t" + Integer.toHexString(index[i]));
+}
+System.out.println();
+byte[] data = columnMap.getStringArray();
+System.out.print("Values:");
+for (int i = 0; i < data.length; i++) {
+if (i % 16 == 0) {
+System.out.println();
+System.out.print("    " + Integer.toHexString(i) + ":");
+}
+if (data[i] == 0)
+System.out.print("\t.");
+else
+System.out.print("\t" + Integer.toString(data[i]));
+}
+System.out.println();
+*/
+    }
+
+    public void buildStateTable(InputStreamReader in) throws IOException {
+        Vector tempTable = new Vector();
+        tempTable.addElement(new int[numCols + 1]);
+        int state = 0;
+
+        int c = in.read();
+        int[] row = null;
+        int charsInWord = 0;
+        while (c >= 0) {
+            charsInWord++;
+            short column = columnMap.elementAt((char)c);
+
+            row = (int[])(tempTable.elementAt(state));
+            if (column != 0) {
+                if (row[column] == 0) {
+                    row[column] = tempTable.size();
+                    ++row[numCols];
+                    state = (tempTable.size());
+                    tempTable.addElement(new int[numCols + 1]);
+                }
+                else
+                    state = row[column];
+            }
+            else if (state != 0) {
+                if (row[0] != -1) {
+                    row[0] = -1;
+                    ++row[numCols];
+                    uniqueWords++;
+                    totalUniqueWordChars += charsInWord;
+                }
+                totalWords++;
+if (totalWords % 5000 == 0) System.out.println("Read " + totalWords + " words, " + tempTable.size() + " rows...");
+                charsInWord = 0;
+                state = 0;
+            }
+            c = in.read();
+        }
+        if (state != 0) {
+            row = (int[])(tempTable.elementAt(state));
+            if (row[0] != -1) {
+                row[0] = -1;
+                uniqueWords++;
+                totalUniqueWordChars += charsInWord;
+            }
+            totalWords++;
+        }
+
+        compress(tempTable);
+
+        table = new short[numCols * tempTable.size()];
+        for (int i = 0; i < tempTable.size(); i++) {
+            row = (int[])tempTable.elementAt(i);
+            for (int j = 0; j < numCols; j++)
+                table[i * numCols + j] = (short)row[j];
+        }
+    }
+
+    private void compress(Vector tempTable) {
+System.out.println("Before compression:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+        deleteDuplicateRows(tempTable);
+System.out.println("After removing duplicate rows:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+        stackRows(tempTable);
+if (tempTable.size() > 32767) throw new IllegalArgumentException("Too many rows in table!");
+System.out.println("After doubling up on rows:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+    }
+
+/*
+experimental...
+    private void deleteDuplicateRows(Vector tempTable) {
+        int[] rowNumMap = new int[tempTable.size()];
+        for (int i = 0; i < rowNumMap.length; i++)
+            rowNumMap[i] = i;
+
+        int nextClass = numCols;
+        int currentClass;
+        int lastClass;
+        boolean split;
+        int[] row1, row2, tempRow;
+        int tempCat;
+
+        do {
+System.out.println("Making a pass (" + nextClass + " classes)...");
+            currentClass = 0;
+            lastClass = nextClass;
+            while (currentClass < nextClass) {
+System.out.println("   currentClass = " + currentClass);
+                split = false;
+                row1 = row2 = null;
+                for (int i = 0; i < tempTable.size(); i++) {
+                    tempRow = (int[])tempTable.elementAt(i);
+                    if (tempRow[numCols] == currentClass) {
+                        if (row1 == null) {
+                            row1 = (int[])tempTable.elementAt(i);
+                        }
+                        else {
+                            row2 = (int[])tempTable.elementAt(i);
+                            for (int j = 0; j < numCols; j++) {
+                                if ((row1[j] == 0) != (row2[j] == 0) ||
+                                            (row1[j] == -1) != (row2[j] == -1)) {
+                                    row2[numCols] = nextClass;
+                                    split = true;
+                                    break;
+                                }
+                                else if (row1[j] != 0 && row2[j] != 0 && row1[j] != -1
+                                                && row2[j] != -1) {
+                                    tempRow = (int[])tempTable.elementAt(row1[j]);
+                                    tempCat = tempRow[numCols];
+                                    tempRow = (int[])tempTable.elementAt(row2[j]);
+                                    if (tempCat != tempRow[numCols]) {
+                                        row2[numCols] = nextClass;
+                                        split = true;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                if (split)
+                    ++nextClass;
+                ++currentClass;
+//System.out.println();
+            }
+        } while (lastClass != nextClass);
+
+        int[] representatives = new int[nextClass];
+        for (int i = 1; i < tempTable.size(); i++) {
+            tempRow = (int[])tempTable.elementAt(i);
+            if (representatives[tempRow[numCols]] == 0)
+                representatives[tempRow[numCols]] = i;
+            else
+                rowNumMap[i] = representatives[tempRow[numCols]];
+        }
+System.out.println("Renumbering...");
+
+        // renumber all remaining rows
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (rowNumMap[i] != i)
+                tempTable.setElementAt(null, i);
+        int newRowNum = 0;
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (tempTable.elementAt(i) != null)
+                rowNumMap[i] = newRowNum++;
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (tempTable.elementAt(i) == null)
+                rowNumMap[i] = rowNumMap[rowNumMap[i]];
+
+        for (int i = tempTable.size() - 1; i >= 0; i--) {
+            tempRow = (int[])tempTable.elementAt(i);
+            if (tempRow == null)
+                tempTable.removeElementAt(i);
+            else {
+                for (int j = 0; j < numCols; j++)
+                    if (tempRow[j] != -1)
+                        tempRow[j] = rowNumMap[j];
+            }
+        }
+//for (int i = 1; i < rowNumMap.length; i++) rowNumMap[i] = i; int newRowNum = rowNumMap.length;
+    }
+*/
+
+    private void deleteDuplicateRows(Vector tempTable) {
+        Vector work = (Vector)(tempTable.clone());
+        boolean didDeleteRow = true;
+
+        Vector tempMapping = new Vector(work.size());
+        int[] mapping = new int[work.size()];
+        for (int i = 0; i < mapping.length; i++) {
+            mapping[i] = i;
+            tempMapping.addElement(new Integer(i));
+        }
+        boolean[] tbd = new boolean[work.size()];
+
+        while (didDeleteRow) {
+System.out.println(" " + work.size() + " rows...");
+int deletedRows = 0;
+            didDeleteRow = false;
+
+            sortTable(work, tempMapping, mapping, 1, work.size());
+            for (int i = 0; i < work.size() - 1; ) {
+System.out.print("Deleting, inspecting row " + i + ", deleted " + deletedRows + " rows...\r");
+                int rowToDelete = ((Integer)(tempMapping.elementAt(i + 1))).intValue();
+                int rowToMapTo = ((Integer)(tempMapping.elementAt(i))).intValue();
+                if (compareRows((int[])work.elementAt(i), (int[])work.elementAt(i + 1),
+                                mapping) == 0) {
+                    tbd[rowToDelete] = true;
+                    tempTable.setElementAt(null, rowToDelete);
+                    while (tbd[mapping[rowToMapTo]])
+                        mapping[rowToMapTo] = mapping[mapping[rowToMapTo]];
+                    mapping[rowToDelete] = mapping[rowToMapTo];
+                    didDeleteRow = true;
+deletedRows++;
+                    work.removeElementAt(i + 1);
+                    tempMapping.removeElementAt(i + 1);
+                }
+                else
+                    i++;
+            }
+            for (int i = 0; i < mapping.length; i++) {
+                if (tbd[i] && tbd[mapping[i]])
+                    mapping[i] = mapping[mapping[i]];
+            }
+        }
+
+        int decrementBy = 0;
+        for (int i = 0; i < mapping.length; i++) {
+            if (tbd[i])
+                decrementBy++;
+            else
+                mapping[i] -= decrementBy;
+        }
+        for (int i = 0; i < mapping.length; i++) {
+            if (tbd[i])
+                mapping[i] = mapping[mapping[i]];
+        }
+        for (int i = tempTable.size() - 1; i >= 0; i--) {
+            if (tbd[i])
+                tempTable.removeElementAt(i);
+            else {
+                int[] row = (int[])tempTable.elementAt(i);
+                for (int j = 0; j < numCols; j++)
+                    row[j] = (row[j] == -1) ? -1 : mapping[row[j]];
+            }
+        }
+    }
+
+    private void sortTable(Vector tbl, Vector tempMapping, int[] mapping, int start, int end) {
+System.out.print("Sorting (" + start + ", " + end + ")...\r");
+        if (start + 1 >= end)
+            return;
+        else if (start + 10 >= end) {
+            for (int i = start + 1; i < end; i++) {
+                int[] row = (int[])tbl.elementAt(i);
+                Integer tempMap = (Integer)tempMapping.elementAt(i);
+                int j;
+                for (j = i - 1; j >= start; j--) {
+                    if (compareRows((int[])tbl.elementAt(j), row, mapping) > 0) {
+                        tbl.setElementAt((int[])tbl.elementAt(j), j + 1);
+                        tempMapping.setElementAt((Integer)tempMapping.elementAt(j), j + 1);
+                    }
+                    else {
+                        tbl.setElementAt(row, j + 1);
+                        tempMapping.setElementAt(tempMap, j + 1);
+                        break;
+                    }
+                }
+                if (j < start) {
+                    tbl.setElementAt(row, start);
+                    tempMapping.setElementAt(tempMap, start);
+                }
+            }
+        }
+        else {
+            int boundaryPos = (start + end) / 2;
+            int i;
+            boolean allTheSame = true;
+            int firstDifferent = 0;
+
+            do {
+                int[] boundary = (int[])tbl.elementAt(boundaryPos);
+                i = start;
+                int j = end - 1;
+                int[] row = null;
+                byte compResult;
+                while (i < j) {
+                    row = (int[])tbl.elementAt(i);
+                    while (i <= j && compareRows(row, boundary, mapping) < 0) {
+                        i++;
+                        row = (int[])tbl.elementAt(i);
+                    }
+
+                    row = (int[])tbl.elementAt(j);
+                    compResult = compareRows(row, boundary, mapping);
+                    while (i <= j && (compResult >= 0)) {
+                        if (compResult != 0) {
+                            allTheSame = false;
+                            firstDifferent = j;
+                        }
+                        j--;
+                        row = (int[])tbl.elementAt(j);
+                        compResult = compareRows(row, boundary, mapping);
+                    }
+                    if (i <= j) {
+                        row = (int[])tbl.elementAt(j);
+                        tbl.setElementAt(tbl.elementAt(i), j);
+                        tbl.setElementAt(row, i);
+                        Object temp = tempMapping.elementAt(j);
+                        tempMapping.setElementAt(tempMapping.elementAt(i), j);
+                        tempMapping.setElementAt(temp, i);
+                    }
+                }
+                if (i <= start) {
+                    if (allTheSame)
+                        return;
+                    else
+                        boundaryPos = firstDifferent;
+                }
+            } while (i <= start);
+            sortTable(tbl, tempMapping, mapping, start, i);
+            sortTable(tbl, tempMapping, mapping, i, end);
+        }
+    }
+
+    private byte compareRows(int[] row1, int[] row2, int[] mapping) {
+        for (int i = 0; i < numCols; i++) {
+            int c1 = (row1[i] == -1) ? -1 : mapping[row1[i]];
+            int c2 = (row2[i] == -1) ? -1 : mapping[row2[i]];
+            if (c1 < c2)
+                return -1;
+            else if (c1 > c2)
+                return 1;
+        }
+        return 0;
+    }
+
+    private int[] buildRowIndex(Vector tempTable) {
+        int[] tempRowIndex = new int[tempTable.size()];
+        rowIndexFlagsIndex = new short[tempTable.size()];
+        Vector tempRowIndexFlags = new Vector();
+        rowIndexShifts = new byte[tempTable.size()];
+
+        // build the row index.  Each entry in the row index starts out referring
+        // to the original row (so it doesn't actually do any mapping), and we set
+        // up the index flags to show which cells in the row are populated
+        for (int i = 0; i < tempTable.size(); i++) {
+            tempRowIndex[i] = i;
+
+            int[] row = (int[])tempTable.elementAt(i);
+            if (row[numCols] == 1 && row[0] == 0) {
+                int j = 0;
+                while (row[j] == 0)
+                    ++j;
+                rowIndexFlagsIndex[i] = (short)(-j);
+            }
+            else {
+                int[] flags = new int[numColGroups];
+                int nextFlag = 1;
+                int colGroup = 0;
+                for (int j = 0; j < numCols; j++) {
+                    if (row[j] != 0)
+                        flags[colGroup] |= nextFlag;
+                    nextFlag <<= 1;
+                    if (nextFlag == 0) {
+                        ++colGroup;
+                        nextFlag = 1;
+                    }
+                }
+                colGroup = 0;
+                int j = 0;
+                while (j < tempRowIndexFlags.size()) {
+                    if (((Integer)tempRowIndexFlags.elementAt(j)).intValue() ==
+                                    flags[colGroup]) {
+                        ++colGroup;
+                        ++j;
+                        if (colGroup >= numColGroups)
+                            break;
+                    }
+                    else if (colGroup != 0)
+                        colGroup = 0;
+                    else
+                        ++j;
+                }
+                rowIndexFlagsIndex[i] = (short)(j - colGroup);
+                while (colGroup < numColGroups) {
+                    tempRowIndexFlags.addElement(new Integer(flags[colGroup]));
+                    ++colGroup;
+                }
+            }
+        }
+        rowIndexFlags = new int[tempRowIndexFlags.size()];
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            rowIndexFlags[i] = ((Integer)tempRowIndexFlags.elementAt(i)).intValue();
+System.out.println("Number of column groups = " + numColGroups);
+System.out.println("Size of rowIndexFlags = " + rowIndexFlags.length);
+
+        return tempRowIndex;
+    }
+
+    private void stackRows(Vector tempTable) {
+/*
+System.out.print("Row:\t");
+for (int i = 0; i < numCols; i++)
+System.out.print(reverseColumnMap[i] + "\t");
+System.out.println();
+for (int i = 0; i < tempTable.size(); i++) {
+System.out.print(Integer.toString(i) + ":\t");
+int[] row = (int[])tempTable.elementAt(i);
+for (int j = 0; j < row.length; j++)
+if (row[j] != 0) System.out.print(Integer.toString(row[j]) + "\t");
+else System.out.print(".\t");
+System.out.println();
+}
+*/
+
+        int[] tempRowIndex = buildRowIndex(tempTable);
+        boolean[] tbd = new boolean[tempTable.size()];
+
+        // now we actually go through and stack rows together
+        for (int i = 0; i < tempTable.size(); i++) {
+            if (tbd[i])
+                continue;
+System.out.print("Stacking, inspecting row " + i + "...\r");
+//System.out.println("Stacking, inspecting row " + i + "...");
+
+            int[] destRow = (int[])tempTable.elementAt(i);
+
+            boolean[] tempFlags = new boolean[numCols];
+            boolean[] filledCells = new boolean[numCols];
+            for (int j = 0; j < numCols; j++)
+                filledCells[j] = destRow[j] != 0;
+
+            for (int j = i + 1; destRow[numCols] < numCols && j < tempTable.size(); j++) {
+                if (tbd[j])
+                    continue;
+
+                int[] srcRow = (int[])tempTable.elementAt(j);
+                if (srcRow[numCols] + destRow[numCols] > numCols)
+                    continue;
+
+                int maxLeftShift = -999;
+                int maxRightShift = 0;
+                for (int k = 0; k < numCols; k++) {
+                    tempFlags[k] = srcRow[k] != 0;
+                    if (tempFlags[k]) {
+                        if (maxLeftShift == -999)
+                            maxLeftShift = -k;
+                        maxRightShift = (numCols - 1) - k;
+                    }
+                }
+
+                int shift;
+                for (shift = maxLeftShift; shift <= maxRightShift; shift++) {
+                    int k;
+                    for (k = 0; k < numCols; k++) {
+                        if (tempFlags[k] && filledCells[k + shift])
+                            break;
+                    }
+                    if (k >= numCols)
+                        break;
+                }
+                if (shift <= maxRightShift) {
+//System.out.println("Packing row " + j + " into row " + i + " with shift = " + shift);
+                    for (int k = 0; k < numCols; k++) {
+                        if (tempFlags[k]) {
+                            filledCells[k + shift] = true;
+                            destRow[k + shift] = srcRow[k];
+                            ++destRow[numCols];
+                        }
+                    }
+                    tbd[j] = true;
+                    tempRowIndex[j] = i;
+                    rowIndexShifts[j] = (byte)shift;
+                }
+            }
+        }
+
+        // finally, we squeeze out all the deleted rows
+        int decrementBy = 0;
+        for (int i = 0; i < tempRowIndex.length; i++) {
+            if (!tbd[i])
+                tempRowIndex[i] -= decrementBy;
+            else
+                ++decrementBy;
+        }
+        rowIndex = new short[tempRowIndex.length];
+        for (int i = tempRowIndex.length - 1; i >= 0; i--) {
+            if (tbd[i]) {
+                rowIndex[i] = (short)(tempRowIndex[tempRowIndex[i]]);
+                tempTable.removeElementAt(i);
+            }
+            else
+                rowIndex[i] = (short)tempRowIndex[i];
+        }
+    }
+
+//    private void printTable() {
+//        short cell;
+//        int populatedCells = 0;
+///*
+//        System.out.println("Conceptual table:");
+//        System.out.println(" Row:   a   b   c   d   e   f   g   h   i   j   k   l   m   n"
+//                + "   o   p   q   r   s   t   u   v   w   x   y   z   '   #");
+//
+//        boolean[] rowPrintFlags = new boolean[rowIndex.length];
+//        printConceptualTable("", 0, rowPrintFlags);
+//*/
+//
+//        System.out.println();
+//        System.out.println("Conceptual table:");
+//        System.out.print(" Row:");
+//        for (int i = 0; i < reverseColumnMap.length; i++) {
+//                System.out.print("   " + reverseColumnMap[i]);
+//        }
+//        for (int i = 0; i < rowIndex.length; i++) {
+//            System.out.println();
+//            printNumber(i, 4);
+//            System.out.print(":");
+//            for (int j = 0; j < numCols; j++)
+//                printNumber(at(i, j), 4);
+//        }
+//        System.out.println('\n');
+//
+//        System.out.println();
+//        System.out.println("Internally stored table:");
+//        System.out.print(" Row:");
+//        for (int i = 0; i < reverseColumnMap.length; i++) {
+//                System.out.print("   " + reverseColumnMap[i]);
+//        }
+//        for (int i = 0; i < table.length; i++) {
+//            if (i % numCols == 0) {
+//                System.out.println();
+//                printNumber(i / numCols, 4);
+//                System.out.print(":");
+//            }
+//            cell = table[i];
+//            if (cell != 0)
+//                populatedCells++;
+//            printNumber(cell, 4);
+//        }
+//        System.out.println('\n');
+//
+//System.out.println("Row index:");
+//for (int i = 0; i < rowIndex.length; i++) {
+//    System.out.print("   " + i + " -> " + rowIndex[i]);
+//    if (rowIndexFlagsIndex[i] < 0)
+//        System.out.print(", flags = " + Integer.toBinaryString((1 << (-rowIndexFlagsIndex[i]))) + " (" + rowIndexFlagsIndex[i]);
+//    else
+//        System.out.print(", flags = " + Integer.toBinaryString(rowIndexFlags[rowIndexFlagsIndex[i]]) + " (" + rowIndexFlagsIndex[i]);
+//    System.out.println("), shift = " + rowIndexShifts[i]);
+//}
+///*
+//        int theoreticalMinRows = populatedCells / numCols;
+//        if (populatedCells % numCols != 0)
+//            theoreticalMinRows++;
+//        int oneCellRows = 0;
+//        for (int i = 0; i < rowIndexFlags.length; i++) {
+//            double temp = Math.log(rowIndexFlags[i]) / Math.log(2);
+//            if (temp == (int)temp)
+//                oneCellRows++;
+//        }
+//
+//        System.out.println('\n');
+//        System.out.println("Total words in input = " + totalWords);
+//        System.out.println("Total unique words = " + uniqueWords + ", comprising " +
+//                        totalUniqueWordChars + " characters\n");
+//        System.out.println("Number of populated cells = " + populatedCells);
+//        System.out.println("Total number of cells = " + (table.length));
+//        System.out.println("Residency = " + ((float)populatedCells / table.length * 100) + '%');
+//        System.out.println("Ratio of populated cells to unique-word characters = " +
+//                        ((float)populatedCells / totalUniqueWordChars * 100) + '%');
+//        System.out.println("Ratio of total cells to unique-word characters = " +
+//                        ((float)table.length / totalUniqueWordChars * 100) + '%');
+//        System.out.println("Number of rows = " + (table.length / numCols));
+//        System.out.println("Theoretical minimum number of rows = " + theoreticalMinRows);
+//        System.out.println("Ratio of number of rows to theoretical minimum = " +
+//                        ((float)(table.length / numCols) / theoreticalMinRows * 100) + '%');
+//        System.out.println("Number of conceptual rows = " + rowIndex.length);
+//        System.out.println("Conceptual rows with only one populated cell = " + oneCellRows);
+//        System.out.println("Ratio of one-cell rows to total conceptual rows = " + (((float)oneCellRows)
+//                        / rowIndex.length * 100) + '%');
+//        System.out.println("Average number of populated cells in multi-cell rows = " +
+//                        ((float)(populatedCells - oneCellRows) / (rowIndex.length - oneCellRows)));
+//
+//        int storageUsed = table.length * 2 + rowIndex.length * 2
+//                        + rowIndexFlags.length * 4 + rowIndexShifts.length;
+//        System.out.println("Total number of bytes in table (including indexes) = " +
+//                        storageUsed);
+//        System.out.println("Bytes of overhead per unique-word character = " + ((double)(storageUsed
+//                        - (totalUniqueWordChars * 2)) / totalUniqueWordChars));
+//*/
+//    }
+
+//    private void printConceptualTable(String initialString, int state, boolean[] flags) {
+//        if (initialString.length() == 0)
+//            System.out.println("root:");
+//        else
+//            System.out.println(initialString + ':');
+//
+//        if (!flags[state]) {
+//            flags[state] = true;
+//            printNumber(state, 4);
+//            System.out.print(":");
+//            for (int i = 0; i < numCols; i++)
+//                printNumber(at(state, i), 4);
+//            System.out.println();
+//        }
+//
+//        int nextState;
+//        for (int i = 0; i < numCols; i++) {
+//            nextState = at(state, i);
+//            if (nextState > 0 && !flags[nextState]) {
+//                printNumber(nextState, 4);
+//                System.out.print(":");
+//                for (int j = 0; j < numCols; j++)
+//                    printNumber(at(nextState, j), 4);
+//                System.out.println();
+//            }
+//        }
+//        for (int i = 0; i < numCols; i++) {
+//            nextState = at(state, i);
+//            if (nextState > 0 && !flags[nextState]) {
+//                char nextChar;
+//                if (nextState == 27)
+//                    nextChar = ' ';
+//                else if (nextState == 26)
+//                    nextChar = '\'';
+//                else
+//                    nextChar = (char)(i + 'a');
+//                flags[nextState] = true;
+//                printConceptualTable(initialString + nextChar, nextState, flags);
+//            }
+//        }
+//    }
+
+    private void printWordList(String partialWord, int state, PrintWriter out)
+            throws IOException {
+        if (state == -1) {
+            System.out.println(partialWord);
+            if (out != null)
+                out.println(partialWord);
+        }
+        else {
+            for (int i = 0; i < numCols; i++) {
+                if (at(state, i) != 0)
+                    printWordList(partialWord + reverseColumnMap[i], at(state, i), out);
+            }
+        }
+    }
+
+    private void writeDictionaryFile(DataOutputStream out) throws IOException {
+        out.writeInt(0);    // version number
+
+        char[] columnMapIndexes = columnMap.getIndexArray();
+        out.writeInt(columnMapIndexes.length);
+        for (int i = 0; i < columnMapIndexes.length; i++)
+            out.writeShort((short)columnMapIndexes[i]);
+        byte[] columnMapValues = columnMap.getValueArray();
+        out.writeInt(columnMapValues.length);
+        for (int i = 0; i < columnMapValues.length; i++)
+            out.writeByte((byte)columnMapValues[i]);
+
+        out.writeInt(numCols);
+        out.writeInt(numColGroups);
+
+        out.writeInt(rowIndex.length);
+        for (int i = 0; i < rowIndex.length; i++)
+            out.writeShort(rowIndex[i]);
+
+        out.writeInt(rowIndexFlagsIndex.length);
+        for (int i = 0; i < rowIndexFlagsIndex.length; i++)
+            out.writeShort(rowIndexFlagsIndex[i]);
+        out.writeInt(rowIndexFlags.length);
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            out.writeInt(rowIndexFlags[i]);
+
+        out.writeInt(rowIndexShifts.length);
+        for (int i = 0; i < rowIndexShifts.length; i++)
+            out.writeByte(rowIndexShifts[i]);
+
+        out.writeInt(table.length);
+        for (int i = 0; i < table.length; i++)
+            out.writeShort(table[i]);
+
+        out.close();
+    }
+
+//    private void printNumber(int x, int width) {
+//        String s = String.valueOf(x);
+//        if (width > s.length())
+//            System.out.print(spaces.substring(0, width - s.length()));
+//        if (x != 0)
+//            System.out.print(s);
+//        else
+//            System.out.print('.');
+//    }
+
+    public final short at(int row, char ch) {
+        int col = columnMap.elementAt(ch);
+        return at(row, col);
+    }
+
+    public final short at(int row, int col) {
+        if (cellIsPopulated(row, col))
+            return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+        else
+            return 0;
+    }
+
+    private final boolean cellIsPopulated(int row, int col) {
+        if (rowIndexFlagsIndex[row] < 0)
+            return col == -rowIndexFlagsIndex[row];
+        else {
+            int flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+            return (flags & (1 << (col & 0x1f))) != 0;
+        }
+    }
+
+    private final short internalAt(int row, int col) {
+        return table[row * numCols + col];
+    }
+
+    private CompactByteArray columnMap = null;
+    private char[] reverseColumnMap = null;
+    private int numCols;
+    private int numColGroups;
+    private short[] table = null;
+    private short[] rowIndex = null;
+    private int[] rowIndexFlags = null;
+    private short[] rowIndexFlagsIndex = null;
+    private byte[] rowIndexShifts = null;
+
+    private int totalWords = 0;
+    private int uniqueWords = 0;
+    private int totalUniqueWordChars = 0;
+
+    //private static final String spaces = "      ";
+}
+
diff --git a/src/com/ibm/icu/dev/tool/rbbi/readme.html b/src/com/ibm/icu/dev/tool/rbbi/readme.html
new file mode 100644
index 0000000..5f62a98
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/rbbi/readme.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+  <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+  <title>README For RBBI Tools</title>
+<!-- Copyright (C) 2003-2004, International Business Machines Corporation and
+     others. All Rights Reserved.
+-->
+</head>
+<body>
+<h3>What Are These Tools?</h3>
+This directory contains two tools, WriteTablesToFiles, which converts
+the Java&nbsp; BreakIterators into .brk files for ICU4C, and
+BuildDictionaryFile, which builds the binary the Thai word break
+dictionary from a Unicode text file containing a list of Thai words.
+The rest of this document describes how to use these tools.<br>
+<h3>How To Build The ICU4C BreakIterator Files</h3>
+The RuleBasedBreakIterator code was originally developed for ICU4J, and
+then ported to ICU4C. For various reasons, the code which compiled the
+state tables from the rule text was hard to port. Instead the
+WriteTablesToFiles tool was wirtten to read in the Java data and write
+the .brk files which ICU4C reads. Later the RBBI code was re-written
+for ICU4C, including the ability to compile the state tables from rules
+stored in text files. This means that the WriteTablesToFiles tool is
+now obsolete.<br>
+<br>
+<h3>How To Build The Thai Word Break Dictionary</h3>
+The Thai word berak code was developed originally for ICU4J, and then
+ported to ICU4C - the dictionary builder tool was never ported, so you
+have to use the Java tool to build the dictionary file for ICU4C. On
+the other hand, all of the rest of the ICU locale data was developed
+originally for
+ICU4C, and a tool was written to covert the ICU4C locale data to Java
+resource bundles for use by ICU4J. Consequently, the process of
+building the Thai
+word break dictionary for ICU4C and
+ICU4J is a bit convoluted. Here are the steps:<br>
+<div style="margin-left: 40px;">
+<ol>
+  <li>Download and build both ICU4C and ICU4J on a <span
+ style="font-weight: bold;">Big Endian</span> machine.<br>
+  </li>
+  <li>Run the following command line to build the Thai dictionary file:<br>
+java -classpath $icu4j_root/classes
+com.ibm.icu.dev.tool.rbbi.BuildDictionaryFile
+$icu4j_root/src/com/ibm/icu/dev/data/thai6.ucs Unicode
+$icu_root/soruce/data/brkitr/thai_dict.brk</li>
+  <li>Rebuild the ICU4C resources.</li>
+  <li>Rebuild the ICU4J ICULocaleData.jar file. (See <a
+ href="../../../../../../../readme.html">the ICU4J readme file</a> for
+instructions)</li>
+  <li>Move ICULocaleData.jar from $icu_root/source/data/locales/java to
+$icu4j_root/src/com/ibm/icu/impl/data</li>
+  <li>Build ICU4J's _resources target to unjar the new files.<br>
+  </li>
+</ol>
+</div>
+In the above, $icu_root is the root of your ICU4C source tree, for
+example
+"~/dev/icu" and $icu4j_root is the root of your ICU4J source tree, for
+example "~/dev/icu4j".<br>
+<br>
+</body>
+</html>
diff --git a/src/com/ibm/icu/dev/tool/serializable/SerializableChecker.java b/src/com/ibm/icu/dev/tool/serializable/SerializableChecker.java
new file mode 100644
index 0000000..755fa83
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/serializable/SerializableChecker.java
@@ -0,0 +1,206 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.serializable;
+
+import com.ibm.icu.impl.URLHandler;
+import com.ibm.icu.dev.test.serializable.SerializableTest;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.Class;
+import java.lang.reflect.*;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * This class examines all the classes in a Jar file or a directory
+ * and lists all those classes that implement <code>Serializable</code>. It also checks
+ * to make sure that those classes have the <code>serialVersionUID</code>
+ * field define.
+ * 
+ */
+public class SerializableChecker implements URLHandler.URLVisitor
+{
+    private static Class serializable;
+    //private static Class throwable;
+    
+    private String path = null;
+    
+    //private boolean write;
+    
+    public SerializableChecker(String path)
+    {
+        this.path = path;
+        
+        if (path != null) {
+            File dir = new File(path);
+            
+            if (!dir.exists()) {
+                dir.mkdirs();
+            }
+        }
+    }
+    
+    static {
+        try {    
+            serializable = Class.forName("java.io.Serializable");
+            //throwable    = Class.forName("java.lang.Throwable");
+        } catch (Exception e) {
+            // we're in deep trouble...
+            System.out.println("Woops! Can't get class info for Serializable and Throwable.");
+        }
+    }
+    
+    private void writeFile(String className, byte bytes[])
+    {
+        File file = new File(path + File.separator + className + ".dat");
+        FileOutputStream stream;
+        
+        try {
+            stream = new FileOutputStream(file);
+            
+            stream.write(bytes);
+            stream.close();
+        } catch (Exception e) {
+            System.out.print(" - can't write file!");
+        }
+    }
+    
+    public void visit(String str)
+    {
+        int ix = str.lastIndexOf(".class");
+        
+        if (ix >= 0) {
+            String className = "com.ibm.icu" + str.substring(0, ix).replace('/', '.');
+            
+            // Skip things in com.ibm.icu.dev; they're not relevant.
+            if (className.startsWith("com.ibm.icu.dev.")) {
+                return;
+            }
+            
+            try {
+                Class c = Class.forName(className);
+                int   m = c.getModifiers();
+                
+                if (serializable.isAssignableFrom(c) /*&&
+                    (! throwable.isAssignableFrom(c) || c.getDeclaredFields().length > 0)*/) {
+                    //Field uid;
+                    
+                    System.out.print(className + " (" + Modifier.toString(m) + ") - ");
+                    
+                    if(!Modifier.isInterface(m)){ 
+                        try {
+                            /* uid = */
+                            c.getDeclaredField("serialVersionUID");
+                        } catch (Exception e) {
+                            System.out.print("no serialVersionUID - ");
+                        }
+                    }
+                    
+                    if (Modifier.isPublic(m)) {
+                        SerializableTest.Handler handler = SerializableTest.getHandler(className);
+                        
+                        if (!Modifier.isInterface(m) && handler != null) {
+                            Object objectsOut[] = handler.getTestObjects();
+                            Object objectsIn[];
+                            boolean passed = true;
+                            
+                            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+                            ObjectOutputStream out = new ObjectOutputStream(byteOut);
+                            
+                            try {
+                                out.writeObject(objectsOut);
+                                out.close();
+                                byteOut.close();
+                            } catch (IOException e) {
+                                System.out.println("Eror writing test objects:" + e.toString());
+                                return;
+                            }
+                            
+                            if (path != null) {
+                                writeFile(className, byteOut.toByteArray());
+                            }
+                            
+                            ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
+                            ObjectInputStream in = new ObjectInputStream(byteIn);
+                            
+                            try {
+                                objectsIn = (Object[]) in.readObject();
+                                in.close();
+                                byteIn.close();
+                            } catch (Exception e) {
+                                System.out.println("Error reading test objects:" + e.toString());
+                                return;
+                            }
+
+                            for(int i = 0; i < objectsIn.length; i += 1) {
+                                if (! handler.hasSameBehavior(objectsIn[i], objectsOut[i])) {
+                                    passed = false;
+                                    System.out.println("Object " + i + " failed behavior test.");
+                                }
+                            }
+                            
+                            if (passed) {
+                                System.out.print("test passed.");
+                            }
+                        } else {
+                            // it's OK to not have tests for abstract classes...
+                            if (! Modifier.isAbstract(m)) {
+                                System.out.print("no test.");
+                            }
+                        }
+                    }
+                    
+                    System.out.println();
+                }
+           } catch (Exception e) {
+                System.out.println("Error processing " + className + ": " + e.toString());
+            }
+        }
+    }
+
+    public static void main(String[] args)
+    {
+        List argList = Arrays.asList(args);
+        String path = null;
+        
+        for (Iterator it = argList.iterator(); it.hasNext(); /*anything?*/) {
+            String arg = (String) it.next();
+            
+            if (arg.equals("-w")) {
+                if (it.hasNext()) {
+                    path = (String) it.next();
+                } else {
+                    System.out.println("Missing directory name on -w command.");
+                }
+            } else {
+                
+    
+                try {
+                    //URL jarURL  = new URL("jar:file:/dev/eclipse/workspace/icu4j/icu4j.jar!/com/ibm/icu");
+                    //URL fileURL = new URL("file:/dev/eclipse/workspace/icu4j/classes/com/ibm/icu");
+                    URL url = new URL(arg);
+                    URLHandler handler  = URLHandler.get(url);
+                    SerializableChecker checker = new SerializableChecker(path);
+                    
+                    System.out.println("Checking classes from " + arg + ":");
+                    handler.guide(checker, true, false);
+                } catch (Exception e) {
+                    System.out.println("Error processing URL \"" + arg + "\" - " + e.getMessage());
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java b/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java
new file mode 100644
index 0000000..16ce321
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java
@@ -0,0 +1,102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.timescale;
+
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.UniversalTimeScale;
+
+/**
+ * This class calculates the minimum and maximum values which can be
+ * used as arguments to <code>toLong</code> and <code>from</code>.
+ * 
+ * NOTE: If you change the way in which these values are calculated, it
+ * may be necessary to disable to <code>toRangeCheck()</code> and
+ * <code>fromRangeCheck()</code> methods in the <code>UniversalTimeScale</code>
+ * for all of the calculations to run without throwing an error.
+ * 
+ * @see com.ibm.icu.util.UniversalTimeScale
+ */
+public class CalculateLimits {
+
+    /**
+     * The default constructor.
+     */
+    public CalculateLimits()
+    {
+    }
+
+    /**
+     * This method first calculates the <code>from</code> limits by
+     * passing <code>Long.MIN_VALUE</code> and <code>Long.MAX_VALUE</code> to
+     * the (internal) <code>toBigDecimalTrunc()</code> method. Any values outside
+     * of the range of a <code>long</code> are pinned.
+     * 
+     * The mimimum and maximum values for <code>toLong</code> are calulated by passing
+     * the min and max values calculated above to <code>BigDecimalFrom()</code>. Because
+     * this method will round, the returned values are adjusted to take this into account.
+     * 
+     * @see com.ibm.icu.util.UniversalTimeScale
+     * 
+     * @param args - the command line arugments
+     */
+    public static void main(String[] args)
+    {
+        MessageFormat fmt = new MessageFormat("{0}L, {1}L, {2}L, {3}L");        
+        BigDecimal universalMin = new BigDecimal(Long.MIN_VALUE);
+        BigDecimal universalMax = new BigDecimal(Long.MAX_VALUE);
+        Object limitArgs[] = {null, null, null, null};
+        
+        System.out.println("\nTo, From limits:");
+        
+        // from limits
+        for(int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            BigDecimal min = UniversalTimeScale.toBigDecimalTrunc(universalMin, scale).max(universalMin);
+            BigDecimal max = UniversalTimeScale.toBigDecimalTrunc(universalMax, scale).min(universalMax);
+            long minLong   = min.longValue();
+            long maxLong   = max.longValue();
+            
+            limitArgs[2] = min.toString();
+            limitArgs[3] = max.toString();
+
+            // to limits
+            BigDecimal minTrunc   = UniversalTimeScale.bigDecimalFrom(min, scale);
+            BigDecimal maxTrunc   = UniversalTimeScale.bigDecimalFrom(max, scale);
+            BigDecimal minResidue = minTrunc.subtract(universalMin);
+            BigDecimal maxResidue = universalMax.subtract(maxTrunc);
+            long units            = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_VALUE);
+            BigDecimal half       = new BigDecimal(units == 1? 0: units / 2 - 1);
+            
+            min = minTrunc.subtract(minResidue.min(half));
+            max = maxTrunc.add(maxResidue.min(half));
+            limitArgs[0] = min.toString();
+            limitArgs[1] = max.toString();
+            
+            System.out.println(fmt.format(limitArgs));
+            
+            // round-trip test the from limits
+            if(UniversalTimeScale.toLong(UniversalTimeScale.from(minLong, scale), scale) != minLong) {
+                System.out.println("OOPS: min didn't round trip!");
+            }
+            
+            if(UniversalTimeScale.toLong(UniversalTimeScale.from(maxLong, scale), scale) != maxLong) {
+                System.out.println("OOPS: max didn't round trip!");
+            }
+            
+            // make sure that the to limits convert to the from limits
+            if(UniversalTimeScale.toLong(min.longValue(), scale) != minLong) {
+                System.out.println("OOPS: toLong(toMin) != fromMin");
+            }
+            
+            if(UniversalTimeScale.toLong(max.longValue(), scale) != maxLong) {
+                System.out.println("OOPS: toLong(toMax) != fromMax");
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java b/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java
new file mode 100644
index 0000000..952fee6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java
@@ -0,0 +1,104 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.timescale;
+
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * This tool calculates the numeric values of the epoch offsets
+ * used in UniversalTimeScale.
+ * 
+ * @see com.ibm.icu.util.UniversalTimeScale
+ */
+public class EpochOffsets
+{
+
+    /**
+     * The default constructor.
+     */
+    public EpochOffsets()
+    {
+    }
+
+    private static final long ticks        = 1;
+    private static final long microseconds = ticks * 10;
+    private static final long milliseconds = microseconds * 1000;
+    private static final long seconds      = milliseconds * 1000;
+    private static final long minutes      = seconds * 60;
+    private static final long hours        = minutes * 60;
+    private static final long days         = hours * 24;
+    // Java measures time in milliseconds, not in 100ns ticks.
+    private static final long javaDays     = days / milliseconds;
+
+    private static int[][] epochDates = {
+            {   1, Calendar.JANUARY,   1},
+            {1970, Calendar.JANUARY,   1},
+            {1601, Calendar.JANUARY,   1},
+            {1904, Calendar.JANUARY,   1},
+            {2001, Calendar.JANUARY,   1},
+            {1899, Calendar.DECEMBER, 31},
+            {1900, Calendar.MARCH,     1}
+    };
+    
+    /**
+     * The <code>main()</code> method calculates the epoch offsets used by the
+     * <code>UniversalTimeScale</code> class.
+     * 
+     * The calculations are done using an ICU <code>Calendar</code> object. The first step is
+     * to calculate the Universal Time Scale's epoch date. Then the epoch offsets are calculated
+     * by calculating each epoch date, subtracting the universal epoch date from it, and converting
+     * that value to ticks.
+     * 
+     * @param args - the command line arguments.
+     */
+    public static void main(String[] args)
+    {
+        TimeZone utc = new SimpleTimeZone(0, "UTC");
+
+        // Jitterbug 5211: .Net System.DateTime uses the proleptic calendar,
+        // while ICU by default uses the Julian calendar before 1582.
+        // Original code: Calendar cal = Calendar.getInstance(utc, Locale.ENGLISH);
+        // Use a proleptic Gregorian calendar for 0001AD and later by setting
+        // the Gregorian change date before 0001AD with a value
+        // that is safely before that date by any measure, i.e.,
+        // more than 719164 days before 1970.
+        long before0001AD = -1000000 * javaDays;
+        GregorianCalendar cal = new GregorianCalendar(utc, Locale.ENGLISH);
+        cal.setGregorianChange(new Date(before0001AD));
+
+        MessageFormat fmt = new MessageFormat("{0, date, full} {0, time, full} = {1}");
+        Object arguments[] = {cal, null};
+        
+        System.out.println("Epoch offsets:");
+        
+        // January 1, 0001 00:00:00 is the universal epoch date...
+        cal.set(1, Calendar.JANUARY, 1, 0, 0, 0);
+
+        long universalEpoch = cal.getTimeInMillis();
+        
+        for (int i = 0; i < epochDates.length; i += 1) {
+            int[] date = epochDates[i];
+            
+            cal.set(date[0], date[1], date[2]);
+            
+            long millis = cal.getTimeInMillis();
+            
+            arguments[1] = Long.toString((millis - universalEpoch) * milliseconds);
+            
+            System.out.println(fmt.format(arguments));
+         }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java b/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java
new file mode 100644
index 0000000..7c7cec8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java
@@ -0,0 +1,108 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.timescale;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.UniversalTimeScale;
+
+/**
+ * This class prints out the initializers needed to initialize
+ * the time scale data in the C version of <code>UniversalTimeScale</code>.
+ * 
+ * It just calls <code>getTimeScaleValue()</code> for all fields and prints
+ * the initializers. Because some C compilers can't compile a literal constant for
+ * the minimum and / or maximum values of an <code>int64_t</code>, this code will
+ * print <code>U_INT64_MIN</code> or <code>U_INT64_MAX</code> for these values.
+ * 
+ * @see com.ibm.icu.util.UniversalTimeScale
+ */
+public class GenerateCTimeScaleData
+{
+
+    /**
+     * The default constructor.
+     */
+    public GenerateCTimeScaleData()
+    {
+    }
+
+    private static final long ticks        = 1;
+    private static final long microseconds = ticks * 10;
+    private static final long milliseconds = microseconds * 1000;
+    private static final long seconds      = milliseconds * 1000;
+    private static final long minutes      = seconds * 60;
+    private static final long hours        = minutes * 60;
+    private static final long days         = hours * 24;
+
+    /*
+     * Returns <code>String</code> that is a literal representation of the given value.
+     * This will either be a call to the <code>INT64_C()</code> macro, or the constant
+     * <code>U_INT64_MIN</code> or <U_INT64_MAX>.
+     */
+    private static String minMaxFilter(long value)
+    {
+        if (value == Long.MIN_VALUE) {
+            return "U_INT64_MIN";
+        } else if (value == Long.MAX_VALUE) {
+            return "U_INT64_MAX";
+        }
+        
+        return "INT64_C(" + Long.toString(value) + ")";
+    }
+    
+    /**
+     * This method prints the C initializers for the time scale data.
+     * 
+     * @param args - the command line arguments
+     * 
+     * @see com.ibm.icu.util.UniversalTimeScale
+     */
+    public static void main(String[] args)
+    {
+        MessageFormat fmt = new MessageFormat("'{'{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}},");
+        Object cargs[] = {null, null, null, null, null, null, null, null, null, null, null};
+        
+        System.out.println("\nC data:");
+        
+        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
+            long units = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_VALUE);
+            
+            if (units == ticks) {
+                cargs[0] = "ticks";
+            } else if (units == microseconds) {
+                cargs[0] = "microseconds";
+            } else if (units == milliseconds) {
+                cargs[0] = "milliseconds";
+            } else if (units == seconds) {
+                cargs[0] = "seconds";
+            } else if (units == minutes) {
+                cargs[0] = "minutes";
+            } else if (units == hours) {
+                cargs[0] = "hours";
+            } else if (units == days) {
+                cargs[0] = "days";
+            } else {
+                cargs[0] = "INT64_C(" + Long.toString(units) + ")";
+            }
+            
+            cargs[1]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_VALUE));
+            cargs[2]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE));
+            cargs[3]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE));
+            cargs[4]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MIN_VALUE));
+            cargs[5]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MAX_VALUE));
+            cargs[6]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_PLUS_1_VALUE));
+            cargs[7]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_MINUS_1_VALUE));
+            cargs[8]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_ROUND_VALUE));
+            cargs[9]  = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.MIN_ROUND_VALUE));
+            cargs[10] = minMaxFilter(UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.MAX_ROUND_VALUE));
+            
+            System.out.println(fmt.format(cargs));
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java b/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java
new file mode 100644
index 0000000..a011aa9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java
@@ -0,0 +1,361 @@
+/*
+ ***********************************************************************
+ * Copyright (C) 2007, International Business Machines                 *
+ * Corporation and others. All Rights Reserved.                        *
+ ***********************************************************************
+ *
+ */
+
+package com.ibm.icu.dev.tool.timezone;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.TreeSet;
+
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * TimeZone transition dump tool.
+ */
+public class ICUZDump {
+    private static final String DEFAULT_LINE_SEP;
+
+    static {
+        String sep = System.getProperty("line.separator");
+        DEFAULT_LINE_SEP = (sep == null) ? "\n" : sep;
+    }
+
+    private TimeZoneImpl tz = null;
+
+    private int loyear = 1900;
+    private int hiyear = 2050;
+    private long tick = 1000;
+    private DumpFormatter formatter;
+    private String linesep = DEFAULT_LINE_SEP;
+
+    public ICUZDump() {
+    }
+    
+    public void setLowYear(int loyear) {
+        this.loyear = loyear;
+    }
+    
+    public void setHighYear(int hiyear) {
+        this.hiyear = hiyear;
+    }
+
+    public void setTick(int tick) {
+        if (tick <= 0) {
+            throw new IllegalArgumentException("tick must be positive");
+        }
+        this.tick = tick;
+    }
+    
+    public void setTimeZone(Object tzimpl) {
+        this.tz = new TimeZoneImpl(tzimpl);
+    }
+
+    public void setDumpFormatter(DumpFormatter formatter) {
+        this.formatter = formatter;
+    }
+    
+    public void setLineSeparator(String sep) {
+        this.linesep = sep;
+    }
+    
+    public void dump(Writer w) throws IOException {
+        if (tz == null) {
+            throw new IllegalStateException("timezone is not initialized");
+        }
+
+        if (formatter == null) {
+            formatter = new DumpFormatter();
+        }
+        
+        final long SEARCH_INCREMENT = 12 * 60 * 60 * 1000; // half day
+        long cutovers[] = getCutOverTimes();
+        long t = cutovers[0];
+        int offset = tz.getOffset(t);
+        boolean inDst = tz.inDaylightTime(t);
+        while (t < cutovers[1]) {
+            long newt = t + SEARCH_INCREMENT;
+            int newOffset = tz.getOffset(newt);
+            boolean newInDst = tz.inDaylightTime(newt);
+            if (offset != newOffset || inDst != newInDst) {
+                // find the boundary
+                long lot = t;
+                long hit = newt;
+                while (true) {
+                    long diff = hit - lot;
+                    if (diff <= tick) {
+                        break;
+                    }
+                    long medt = lot + ((diff / 2) / tick) * tick;
+                    int medOffset = tz.getOffset(medt);
+                    boolean medInDst = tz.inDaylightTime(medt);
+                    if (medOffset != offset || medInDst != inDst) {
+                        hit = medt;
+                    } else {
+                        lot = medt;
+                    }
+                }
+                w.write(formatter.format(lot, offset, tz.inDaylightTime(lot)));
+                w.write(" > ");
+                w.write(formatter.format(hit, newOffset, tz.inDaylightTime(hit)));
+                w.write(linesep);
+                offset = newOffset;
+                inDst = newInDst;
+            }
+            t = newt;
+        }
+
+    }
+    
+    private long[] getCutOverTimes() {
+        long[] cutovers = new long[2];
+        cutovers[0] = tz.getTime(loyear, 0, 1, 0, 0, 0);
+        cutovers[1] = tz.getTime(hiyear, 0, 1, 0, 0, 0);
+        return cutovers;
+    }
+
+    private class TimeZoneImpl {
+        private Object tzobj;
+        
+        public TimeZoneImpl(Object tzobj) {
+            this.tzobj = tzobj;
+        }
+
+        public int getOffset(long time) {
+            try {
+                Method method = tzobj.getClass().getMethod("getOffset", new Class[] {long.class});
+                Object result = method.invoke(tzobj, new Object[] {new Long(time)});
+                return ((Integer)result).intValue();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return 0;
+        }
+
+        public boolean inDaylightTime(long time) {
+            try {
+                Method method = tzobj.getClass().getMethod("inDaylightTime", new Class[] {Date.class});
+                Object result = method.invoke(tzobj, new Object[] {new Date(time)});
+                return ((Boolean)result).booleanValue();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            return false;
+        }
+
+        public long getTime(int year, int month, int dayOfMonth, int hour, int minute, int second) {
+            long time;
+            if (tzobj instanceof com.ibm.icu.util.TimeZone) {
+                GregorianCalendar cal = new GregorianCalendar();
+                cal.setTimeZone((com.ibm.icu.util.TimeZone)tzobj);
+                cal.clear();
+                cal.set(year, month, dayOfMonth, hour, minute, second);
+                time = cal.getTimeInMillis();
+            } else if (tzobj instanceof java.util.TimeZone) {
+                java.util.GregorianCalendar cal = new java.util.GregorianCalendar();
+                cal.setTimeZone((java.util.TimeZone)tzobj);
+                cal.clear();
+                cal.set(year, month, dayOfMonth, hour, minute, second);
+                time = cal.getTimeInMillis();
+            } else {
+                throw new IllegalStateException("Unsupported TimeZone implementation");
+            }
+            return time;
+        }
+    }
+
+    public class DumpFormatter {
+        private SimpleTimeZone stz = new SimpleTimeZone(0, "");
+        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd EEE HH:mm:ss", ULocale.US);
+        private DecimalFormat decf;
+
+        public DumpFormatter() {
+            DecimalFormatSymbols decfs = new DecimalFormatSymbols(ULocale.US);
+            decf = new DecimalFormat("00", decfs);
+        }
+
+        public String format(long time, int offset, boolean isDst) {
+            StringBuffer buf = new StringBuffer();
+            stz.setRawOffset(offset);
+            sdf.setTimeZone(stz);
+            buf.append(sdf.format(new Date(time)));
+            if (offset < 0) {
+                buf.append("-");
+                offset = -offset;
+            } else {
+                buf.append("+");
+            }
+
+            int hour, min, sec;
+
+            offset /= 1000;
+            sec = offset % 60;
+            offset = (offset - sec) / 60;
+            min = offset % 60;
+            hour = offset / 60;
+
+            buf.append(decf.format(hour));
+            buf.append(decf.format(min));
+            buf.append(decf.format(sec));
+
+            buf.append("[DST=");
+            buf.append(isDst ? "1" : "0");
+            buf.append("]");
+            return buf.toString();
+        }
+    }
+
+    /*
+     * Usage:
+     * 
+     * java -cp icu4j.jar com.ibm.icu.dev.tool.timezone [-j] [-a] [-c[<low_year>,]<high_year>] [-d<dir>] [-l<sep>] [<zone_name> [<zone_name>]]
+     * 
+     * Options:
+     *      -j      : Use JDK TimeZone.  By default, ICU TimeZone is used.
+     *      -a      : Dump all available zones.
+     *      -c[<low_year>,]<high_year>
+     *              : When specified, dump transitions starting <low_year> (inclusive) up to
+     *                <high_year> (exclusive).  The default values are 1902(low) and 2038(high).
+     *      -d<dir> : When specified, write transitions in a file under the directory for each zone.
+     *      -l<sep> : New line code type CR/LF/CRLF.
+     */
+    public static void main(String[] args) {
+        boolean jdk = false;
+        int low = 1902;
+        int high = 2038;
+        List idlist = new ArrayList();
+        boolean all = false;
+        String dir = null;
+        String newLineMode = null;
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("-j")) {
+                jdk = true;
+            } else if (args[i].startsWith("-c")) {
+                String val = args[i].substring(2);
+                String[] years = val.split(",");
+                if (years.length == 1) {
+                    high = Integer.parseInt(years[0]);
+                } else if (years.length == 2) {
+                    low = Integer.parseInt(years[0]);
+                    high = Integer.parseInt(years[1]);
+                }
+            } else if (args[i].equals("-a")) {
+                all = true;
+            } else if (args[i].startsWith("-d")) {
+                dir = args[i].substring(2);
+            } else if (args[i].startsWith("-l")) {
+                newLineMode = args[i].substring(2);
+            } else if (!args[i].startsWith("-")){
+                idlist.add(args[i].trim());
+            }
+        }
+
+        String lineSep = System.getProperty("line.separator");
+        if (newLineMode != null && newLineMode.length() > 0) {
+            if (newLineMode.equalsIgnoreCase("CR")) {
+                lineSep = "\r";
+            } else if (newLineMode.equalsIgnoreCase("LF")) {
+                lineSep = "\n";
+            } else if (newLineMode.equalsIgnoreCase("CRLF")) {
+                lineSep = "\r\n";            
+            }
+        }
+        
+        String[] tzids = null;
+
+        if (all) {
+            if (jdk) {
+                tzids = java.util.TimeZone.getAvailableIDs();
+            } else {
+                tzids = com.ibm.icu.util.TimeZone.getAvailableIDs();
+            }
+
+            // sort tzids
+            TreeSet set = new TreeSet();
+            for (int i = 0; i < tzids.length; i++) {
+                set.add(tzids[i]);
+            }
+            Iterator it = set.iterator();
+            int i = 0;
+            while (it.hasNext()) {
+                tzids[i++] = (String)it.next();
+            }
+        } else {
+            int len = idlist.size();
+            if (len == 0) {
+                tzids = new String[1];
+                tzids[0] = java.util.TimeZone.getDefault().getID();
+            } else {
+                tzids = new String[idlist.size()];
+                idlist.toArray(tzids);
+            }            
+        }
+
+        File dirfile = null;
+        if (dir == null || dir.length() == 0) {
+            PrintWriter pw = new PrintWriter(System.out);
+            try {
+                for (int i = 0; i < tzids.length; i++) {
+                    if (i != 0) {
+                        pw.println();
+                    }
+                    pw.write("ZONE: ");
+                    pw.write(tzids[i]);
+                    pw.println();
+                    dumpZone(pw, lineSep, tzids[i], low, high, jdk);
+                }
+                pw.flush();
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+            }
+        } else {
+            dirfile = new File(dir);
+            dirfile.mkdirs();
+
+            try {
+                for (int i = 0; i < tzids.length; i++) {
+                    FileOutputStream fos = new FileOutputStream(new File(dirfile, tzids[i].replace('/', '-')));
+                    Writer w = new BufferedWriter(new OutputStreamWriter(fos));
+                    dumpZone(w, lineSep, tzids[i], low, high, jdk);
+                    w.close();
+                }
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+            }
+        }
+    }
+
+    private static void dumpZone(Writer w, String lineSep, String tzid, int low, int high, boolean isJdk) throws IOException {
+        ICUZDump dumper = new ICUZDump();
+        Object tzimpl;
+        if (isJdk) {
+            tzimpl = java.util.TimeZone.getTimeZone(tzid);
+        } else {
+            tzimpl = com.ibm.icu.util.TimeZone.getTimeZone(tzid);
+        }
+        dumper.setTimeZone(tzimpl);
+        dumper.setLowYear(low);
+        dumper.setHighYear(high);
+        dumper.setLineSeparator(lineSep);
+        dumper.dump(w);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/SourceSet.java b/src/com/ibm/icu/dev/tool/translit/SourceSet.java
new file mode 100644
index 0000000..cef0a6b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/SourceSet.java
@@ -0,0 +1,109 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/29/2001  aliu        Creation.
+*   06/26/2002  aliu        Moved to com.ibm.icu.dev.tool.translit
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+import java.util.*;
+import com.ibm.icu.dev.tool.translit.UnicodeSetClosure;
+import java.io.*;
+import com.ibm.icu.text.*;
+
+/**
+ * Class that generates source set information for a transliterator.
+ * 
+ * To run, use:
+ * 
+ *   java com.ibm.icu.dev.tool.translit.SourceSet Latin-Katakana NFD lower
+ * 
+ * Output is produced in the command console, and a file with more detail is also written.
+ * 
+ * To see if it works, use:
+ * 
+ *   java com.ibm.icu.dev.test.translit.TransliteratorTest -v -nothrow TestIncrementalProgress
+ * 
+ * and
+ *  
+ *   java com.ibm.icu.dev.demo.translit.Demo
+ */
+public class SourceSet {
+
+    public static void main(String[] args) throws IOException {
+        if (args.length == 0) {
+            // Compute and display the source sets for all system
+            // transliterators.
+            for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+                String ID = (String) e.nextElement();
+                showSourceSet(ID, Normalizer.NONE, false);
+            }
+        } else {
+            // Usage: ID [NFKD | NFD] [lower]
+            Normalizer.Mode m = Normalizer.NONE;
+            boolean lowerFirst = false;
+            if (args.length >= 2) {
+                if (args[1].equalsIgnoreCase("NFD")) {
+                    m = Normalizer.NFD;
+                } else if (args[1].equalsIgnoreCase("NFKD")) {
+                    m = Normalizer.NFKD;
+                } else {
+                    usage();
+                }
+            }
+            if (args.length >= 3) {
+                if (args[2].equalsIgnoreCase("lower")) {
+                    lowerFirst = true;
+                } else {
+                    usage();
+                }
+            }
+            if (args.length > 3) {
+                usage();
+            }
+            showSourceSet(args[0], m, lowerFirst);
+        }
+    }
+
+    static void showSourceSet(String ID, Normalizer.Mode m, boolean lowerFirst) throws IOException {
+        File f = new File("UnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        out.print('\uFEFF'); // BOM
+        System.out.println();
+        System.out.println("Writing " + filename);
+        Transliterator t = Transliterator.getInstance(ID);
+        showSourceSetAux(t, m, lowerFirst, true);
+        showSourceSetAux(t.getInverse(), m, lowerFirst, false);
+        out.close();
+    }
+    
+    static PrintWriter out;
+    
+    static void showSourceSetAux(Transliterator t, Normalizer.Mode m, boolean lowerFirst, boolean forward) {
+        UnicodeSet sourceSet = t.getSourceSet();
+        if (m != Normalizer.NONE || lowerFirst) {
+            UnicodeSetClosure.close(sourceSet, m, lowerFirst);
+        }
+        System.out.println(t.getID() + ": " +
+                           sourceSet.toPattern(true));
+        out.println("# MINIMAL FILTER GENERATED FOR: " + t.getID() + (forward ? "" : " REVERSE"));
+        out.println(":: " 
+            + (forward ? "" : "( ") 
+            + sourceSet.toPattern(true) 
+            + (forward ? "" : " )")
+            + " ;");
+        out.println("# Unicode: " + sourceSet.toPattern(false));
+        out.println();
+    }
+
+    static void usage() {
+        System.err.println("Usage: ID [ NFD|NFKD [lower] ]");
+        System.exit(1);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/Trans.java b/src/com/ibm/icu/dev/tool/translit/Trans.java
new file mode 100644
index 0000000..04d43d2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/Trans.java
@@ -0,0 +1,140 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.translit;
+
+import com.ibm.icu.text.*;
+import java.io.*;
+
+/**
+ * A command-line interface to the ICU4J transliterators.
+ * @author Alan Liu
+ */
+public class Trans {
+
+    public static void main(String[] args) throws Exception {
+        boolean isHTML = false;
+        int pos = 0;
+
+        String transName = null; // first untagged string is this
+        String inText = null; // all other untagged strings are this
+        String inName = null;
+        String outName = null;
+
+        while (pos < args.length) {
+            if (args[pos].equals("-html")) {
+                isHTML = true;
+            } else if (args[pos].equals("-i")) {
+                if (++pos == args.length) usage();
+                inName = args[pos];
+            } else if (args[pos].equals("-o")) {
+                if (++pos == args.length) usage();
+                outName = args[pos];
+            } else if (transName == null) {
+                transName = args[pos];
+            } else {
+                if (inText == null) {
+                    inText = args[pos];
+                } else {
+                    inText = inText + " " + args[pos];
+                }
+            }
+            ++pos;
+        }
+
+        if (inText != null && inName != null) {
+            usage();
+        }
+
+        Transliterator trans = Transliterator.getInstance(transName);
+        BufferedReader in = null;
+        if (inName != null) {
+            in = new BufferedReader(new InputStreamReader(new FileInputStream(inName), "UTF8"));
+        }
+        PrintWriter out = null;
+        if (outName != null) {
+            out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outName), "UTF8"));
+        } else {
+            out = new PrintWriter(System.out);
+        }
+        trans(trans, inText, in, out, isHTML);
+        out.close();
+    }
+
+    static void trans(Transliterator trans, String inText,
+                      BufferedReader in, PrintWriter out, boolean isHTML) throws IOException {
+        boolean inTag = false; // If true, we are within a <tag>
+        for (;;) {
+            String line = null;
+            if (inText != null) {
+                line = inText;
+                inText = null;
+            } else if (in != null) {
+                line = in.readLine();
+            }
+            if (line == null) {
+                break;
+            }
+            if (isHTML) {
+                // Pass tags between < and > unchanged
+                StringBuffer buf = new StringBuffer();
+                int right = -1;
+                if (inTag) {
+                    right = line.indexOf('>');
+                    if (right < 0) {
+                        right = line.length()-1;
+                    }
+                    buf.append(line.substring(0, right+1));
+                    if (DEBUG) System.out.println("*S:" + line.substring(0, right+1));
+                    inTag = false;
+                }
+                for (;;) {
+                    int left = line.indexOf('<', right+1);
+                    if (left < 0) {
+                        if (right < line.length()-1) {
+                            buf.append(trans.transliterate(line.substring(right+1)));
+                            if (DEBUG) System.out.println("T:" + line.substring(right+1));
+                        }
+                        break;
+                    }
+                    // Append transliterated segment right+1..left-1
+                    buf.append(trans.transliterate(line.substring(right+1, left)));
+                    if (DEBUG) System.out.println("T:" + line.substring(right+1, left));
+                    right = line.indexOf('>', left+1);
+                    if (right < 0) {
+                        inTag = true;
+                        buf.append(line.substring(left));
+                        if (DEBUG) System.out.println("S:" + line.substring(left));
+                        break;
+                    }
+                    buf.append(line.substring(left, right+1));
+                    if (DEBUG) System.out.println("S:" + line.substring(left, right+1));
+                }
+                line = buf.toString();
+            } else {
+                line = trans.transliterate(line);
+            }
+            out.println(line);
+        }
+    }
+
+    static final boolean DEBUG = false;
+
+    /**
+     * Emit usage and die.
+     */
+    static void usage() {
+        System.out.println("Usage: java com.ibm.icu.dev.tool.translit.Trans [-html] <trans> ( <input> | -i <infile>) [ -o <outfile> ]");
+        System.out.println("<trans>   Name of transliterator");
+        System.out.println("<input>   Text to transliterate");
+        System.out.println("<infile>  Name of input file");
+        System.out.println("<outfile> Name of output file");
+        System.out.println("-html     Only transliterate text outside of <tags>");
+        System.out.println("Input may come from the command line or a file.\n");
+        System.out.println("Ouput may go to stdout or a file.\n");
+        System.exit(0);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java b/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
new file mode 100644
index 0000000..489b4a6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
@@ -0,0 +1,466 @@
+/*
+**********************************************************************
+* Copyright (c) 2003, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: February 11 2003
+* Since: ICU 2.6
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.Utility;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Vector;
+import java.util.Locale;
+import java.io.*;
+
+/**
+ * This class produces the data tables used by the closeOver() method
+ * of UnicodeSet.
+ *
+ * Whenever the Unicode database changes, this tool must be re-run
+ * (AFTER the data file(s) underlying ICU4J are udpated).
+ *
+ * The output of this tool should then be pasted into the appropriate
+ * files:
+ *
+ * ICU4J: com.ibm.icu.text.UnicodeSet.java
+ * ICU4C: /icu/source/common/uniset.cpp
+ */
+class UnicodeSetCloseOver {
+
+    // Our output files
+    static final String JAVA_OUT          = "to_UnicodeSet.java";
+    static final String JAVA_CHARPROP_OUT = "to_UCharacterProperty.java";
+    static final String C_SET_OUT         = "to_uniset.cpp";
+    static final String C_UCHAR_OUT       = "to_uchar.c";
+
+    // Source code "do not edit" warning
+    static final String WARNING = "MACHINE-GENERATED; Unicode version " +
+        UCharacter.getUnicodeVersion() +
+        "; DO NOT EDIT; See " +
+        UnicodeSetCloseOver.class.getName();
+
+    // Case folding options flag.  This must correspond to the options
+    // used in UnicodeSet.closeOver() in Java and C++.
+    static final boolean DEFAULT_CASE_MAP = true; // false for Turkish
+
+    public static void main(String[] args) throws IOException {
+        System.out.println("This tool will generate several output files.  Each is named according");
+        System.out.println("the target file.  For example, the contents of to_UnicodeSet.java should");
+        System.out.println("be pasted into UnicodeSet.java.");
+        System.out.println();
+
+        generateCaseData();
+    }
+
+    /**
+     * Create a map of String => Set.  The String in this case is a
+     * folded string for which
+     * UCharacter.foldCase(folded. DEFAULT_CASE_MAP).equals(folded).
+     * The Set contains all single-character strings x for which
+     * UCharacter.foldCase(x, DEFAULT_CASE_MAP).equals(folded), as
+     * well as folded itself.
+     */
+    static Map createCaseFoldEquivalencyClasses() {
+        Map equivClasses = new HashMap();
+        for (int i = 0; i <= 0x10FFFF; ++i) {
+            int cat = UCharacter.getType(i);
+            if (cat == Character.UNASSIGNED || cat == Character.PRIVATE_USE)
+                continue;
+
+            String cp = UTF16.valueOf(i);
+            String folded = UCharacter.foldCase(cp, DEFAULT_CASE_MAP);
+            if (folded.equals(cp)) continue;
+
+            // At this point, have different case folding.  Add
+            // the code point and its folded equivalent into the
+            // equivalency class.
+            TreeSet s = (TreeSet) equivClasses.get(folded);
+            if (s == null) {
+                s = new TreeSet();
+                s.add(folded); // add the case fold result itself
+                equivClasses.put(folded, s);
+            }
+            s.add(cp);
+        }
+        return equivClasses;
+    }
+
+    /**
+     * Analyze the case fold equivalency classes.  Break them into two
+     * groups: 'pairs', and 'nonpairs'.  Create a tally of the length
+     * configurations of the nonpairs.
+     *
+     * Length configurations of equivalency classes, as of Unicode
+     * 3.2.  Most of the classes (83%) have two single codepoints.
+     * Here "112:28" means there are 28 equivalency classes with 2
+     * single codepoints and one string of length 2.
+     *
+     * 11:656
+     * 111:16
+     * 1111:3
+     * 112:28
+     * 113:2
+     * 12:31
+     * 13:12
+     * 22:38
+     *
+     * Note: This method does not count the frequencies of the
+     * different length configurations (as shown above after ':'); it
+     * merely records which configurations occur.
+     *
+     * @param pairs Accumulate equivalency classes that consist of
+     * exactly two codepoints here.  This is 83+% of the classes.
+     * E.g., {"a", "A"}.
+     * @param nonpairs Accumulate other equivalency classes here, as
+     * lists of strings.  E,g, {"st", "\uFB05", "\uFB06"}.
+     * @param lengths Accumulate a list of unique length structures,
+     * not including pairs.  Each length structure is represented by a
+     * string of digits.  The digit string "12" means the equivalency
+     * class contains a single code point and a string of length 2.
+     * Typical contents of 'lengths': { "111", "1111", "112",
+     * "113", "12", "13", "22" }.  Note the absence of "11".
+     */
+    static void analyzeCaseData(Map equivClasses,
+                                StringBuffer pairs,
+                                Vector nonpairs,
+                                Vector lengths) {
+        Iterator i = new TreeSet(equivClasses.keySet()).iterator();
+        StringBuffer buf = new StringBuffer();
+        while (i.hasNext()) {
+            Object key = i.next();
+            Vector v = new Vector((Set) equivClasses.get(key));
+            if (v.size() == 2) {
+                String a = (String) v.elementAt(0);
+                String b = (String) v.elementAt(1);
+                if (a.length() == 1 && b.length() == 1) {
+                    pairs.append(a).append(b);
+                    continue;
+                    // Note that pairs are included in 'lengths'
+                }
+            }
+            String[] a = new String[v.size()];
+            v.toArray(a);
+            nonpairs.add(a);
+            //int singleCount = 0;
+            //int stringCount = 0;
+            // Make a string of the lengths, e.g., "111" means 3
+            // single code points; "13" means a single code point
+            // and a string of length 3.
+            v.clear();
+            for (int j=0; j<a.length; ++j) {
+                v.add(new Integer(a[j].length()));
+            }
+            Collections.sort(v);
+            buf.setLength(0);
+            for (int j=0; j<v.size(); ++j) {
+                buf.append(String.valueOf(v.elementAt(j)));
+            }
+            if (!lengths.contains(buf.toString())) {
+                lengths.add(buf.toString());
+            }
+        }
+    }
+
+    static void generateCaseData() throws IOException {
+
+        Map equivClasses = createCaseFoldEquivalencyClasses();
+
+        // Accumulate equivalency classes that consist of exactly
+        // two codepoints here.  This is 83+% of the classes.
+        // E.g., {"a", "A"}.
+        StringBuffer pairs = new StringBuffer();
+
+        // Accumulate other equivalency classes here, as lists
+        // of strings.  E,g, {"st", "\uFB05", "\uFB06"}.
+        Vector nonpairs = new Vector(); // contains String[]
+        Vector lengths = new Vector(); // "111", "12", "22", etc.
+
+        analyzeCaseData(equivClasses, pairs, nonpairs, lengths);
+
+        //-------------------------------------------------------------
+        // Emit Java source
+        PrintStream out = new PrintStream(new FileOutputStream(JAVA_OUT));
+        System.out.println("Writing " + JAVA_OUT);
+
+        out.println("    // " + WARNING);
+        out.println("    private static final String CASE_PAIRS =");
+        out.println(Utility.formatForSource(pairs.toString()) + ";");
+        out.println();
+        out.println("    // " + WARNING);
+        out.println("    private static final String[][] CASE_NONPAIRS = {");
+        for (int j=0; j<nonpairs.size(); ++j) {
+            String[] a = (String[]) nonpairs.elementAt(j);
+            out.print("        {");
+            for (int k=0; k<a.length; ++k) {
+                if (k != 0) out.print(", ");
+                out.print(Utility.format1ForSource(a[k]));
+            }
+            out.println("},");
+        }
+        out.println("    };");
+
+        //-------------------------------------------------------------
+        // Emit C++ source
+
+        // In C++, the pairs are again emitted in an array, but this
+        // array is the final representation form -- it will not be
+        // reprocessed into a hash.  It will be binary searched by
+        // looking at the even elements [0], [2], [4], etc., and
+        // ignoring the odd elements.  The even elements must contain
+        // the folded members of the pairs.  That is, in the pair
+        // {'A', 'a'}, the even element must be 'a', not 'A'.  Then a
+        // code point to be located is first folded ('Y' => 'y') then
+        // it binary searched against [0]='A', [2]='B', etc.  When a
+        // match is found at k, the pair is [k], [k+1].
+
+        out = new PrintStream(new FileOutputStream(C_SET_OUT));
+        System.out.println("Writing " + C_SET_OUT);
+
+        // Sort the pairs.  They must be ordered by the folded element.
+        // Store these as two-character strings, with charAt(0) being
+        // the folded member of the pair.
+        TreeSet sortPairs = new TreeSet(new Comparator() {
+            public int compare(Object a, Object b) {
+                return ((int) ((String) a).charAt(0)) -
+                       ((int) ((String) b).charAt(0));
+            }
+            public boolean equals(Object obj) {
+                return false;
+            }
+        });
+        for (int i=0; i<pairs.length(); i+=2) {
+            String a = String.valueOf(pairs.charAt(i));
+            String b = String.valueOf(pairs.charAt(i+1));
+            String folded = UCharacter.foldCase(a, DEFAULT_CASE_MAP);
+            if (a.equals(folded)) {
+                sortPairs.add(a + b);
+            } else {
+                sortPairs.add(b + a);
+            }
+        }
+
+        // Emit the pairs
+        out.println("// " + WARNING);
+        out.println("static const UChar CASE_PAIRS[] = {");
+        Iterator it = sortPairs.iterator();
+        while (it.hasNext()) {
+            out.print("    ");
+            int n = 0;
+            while (n++ < 5 && it.hasNext()) {
+                String s = (String) it.next();
+                //out.print((int) s.charAt(0) + "," +
+                //                 (int) s.charAt(1) + ",");
+                out.print("0x" + Utility.hex(s.charAt(0)) + ",0x" +
+                                 Utility.hex(s.charAt(1)) + ",");
+            }
+            out.println();
+        }
+        out.println("};");
+        out.println();
+
+        // The non-pairs are encoded in the following way.  All the
+        // single codepoints in each class are grouped together
+        // followed by a zero.  Then each multi-character string is
+        // added, followed by a zero.  Finally, another zero is added.
+        // Some examples:
+        //  {"iQ", "R"}           =>  [ 'R', 0, 'i', 'Q', 0, 0 ]
+        //  {"S", "D", "F", "G"}  =>  [ 'S', 'D', 'F', 'G', 0, 0 ]
+        //  {"jW", "jY"}          =>  [ 0, 'j', 'W', 0, 'j', 'Y', 0, 0 ]
+        // The end-result is a short, flat array of UChar values that
+        // can be used to initialize a UChar[] array in C.
+        
+        int maxLen = 0; // Maximum encoded length of any class, including zeros
+        out.println("// " + WARNING);
+        out.println("static const CaseEquivClass CASE_NONPAIRS[] = {");
+        for (int j=0; j<nonpairs.size(); ++j) {
+            int len = 0;
+            String[] a = (String[]) nonpairs.elementAt(j);
+            out.print("    {");
+            // Emit single code points
+            for (int k=0; k<a.length; ++k) {
+                if (a[k].length() != 1) continue;
+                //out.print((int) a[k].charAt(0) + ",");
+                out.print("0x"+Utility.hex(a[k].charAt(0)) + ",");
+                ++len;
+            }
+            out.print("0,  "); // End of single code points
+            ++len;
+            // Emit multi-character strings
+            for (int k=0; k<a.length; ++k) {
+                if (a[k].length() == 1) continue;
+                for (int m=0; m<a[k].length(); ++m) {
+                    //out.print((int) a[k].charAt(m) + ",");
+                    out.print("0x"+Utility.hex(a[k].charAt(m)) + ",");
+                    ++len;
+                }
+                out.print("0, "); // End of string
+                ++len;
+            }
+            out.println("0},"); // End of equivalency class
+            ++len;
+            if (len > maxLen) maxLen = len;
+        }
+        out.println("};");
+
+        // Make sure the CaseEquivClass data can fit.
+        if (maxLen > 8) {
+            throw new RuntimeException("Must adjust CaseEquivClass to accomodate " + maxLen + " UChars");
+        }
+
+        // Also make sure that we can map into this array using a
+        // CompactByteArray.  We could do this check above, but we
+        // keep it here, adjacent to the maxLen check.  We use one
+        // value (-1 == 255) to indicate "no value."
+        if (nonpairs.size() > 255) {
+            throw new RuntimeException("Too many CASE_NONPAIRS array elements to be indexed by a CompactByteArray");
+        }
+
+        //-------------------------------------------------------------
+        // Case-unique set:  All characters c for which closeOver(c)==c.
+
+        // UPDATE: Instead of using this, we're using the related
+        // notion of Case_Sensitive.  See below.  Note that
+        // Case_Sensitive != ^Case_Unique.
+
+        if (false) {
+            UnicodeSet caseUnique = new UnicodeSet();
+            for (int i = 0; i <= 0x10FFFF; ++i) {
+                String cp = UTF16.valueOf(i);
+                if (equivClasses.get(UCharacter.foldCase(cp, DEFAULT_CASE_MAP)) == null) {
+                    caseUnique.add(i);
+                }
+            }
+            // out.println("caseUnique = " + caseUnique.toPattern(true));
+        }
+
+        UnicodeSet caseSensitive = getCaseSensitive();
+        //System.out.println("caseSensitive = " + caseSensitive.toPattern(true));
+
+        // Now for C, emit an array of ranges
+        out = new PrintStream(new FileOutputStream(C_UCHAR_OUT));
+        System.out.println("Writing " + C_UCHAR_OUT);
+
+        out.println("/* " + WARNING + " */");
+        emitUCharRangesArray(out, caseSensitive, "CASE_SENSITIVE_RANGES");
+
+        // For Java, emit a string with the ranges (each pair of chars
+        // in the string is a range).
+        out = new PrintStream(new FileOutputStream(JAVA_CHARPROP_OUT));
+        System.out.println("Writing " + JAVA_CHARPROP_OUT);
+        out.println("    // " + WARNING);
+        emitRangesString(out, caseSensitive, "CASE_SENSITIVE_RANGES");
+    }
+
+    /**
+     * Create the set of case-sensitive characters.  These are characters
+     * that participate in any case mapping operation as a source or
+     * as a member of a target string.
+     */
+    static UnicodeSet getCaseSensitive() {
+        UnicodeSet caseSensitive = new UnicodeSet();
+        Locale loc = Locale.US;
+        BreakIterator bi = BreakIterator.getTitleInstance(loc);
+        for (int c = 0; c <= 0x10FFFF; ++c) {
+            String cp = UTF16.valueOf(c);
+            for (int j=0; j<4; ++j) {
+                String s = null;
+                switch (j) {
+                case 0: s = UCharacter.toUpperCase(loc, cp); break;
+                case 1: s = UCharacter.toLowerCase(loc, cp); break;
+                case 2: s = UCharacter.toTitleCase(loc, cp, bi); break;
+                case 3: s = UCharacter.foldCase(cp, DEFAULT_CASE_MAP); break;
+                }
+                if (!s.equals(cp)) {
+                    int cc;
+                    for (int k=0; k<s.length(); k+=UTF16.getCharCount(cc)) {
+                        cc = UTF16.charAt(s, k);
+                        caseSensitive.add(cc);
+                    }
+                    for (int k=0; k<cp.length(); k+=UTF16.getCharCount(cc)) {
+                        cc = UTF16.charAt(cp, k);
+                        caseSensitive.add(cc);
+                    }
+                }
+            }
+            // Also do the single-codepoint API.  This shouldn't add any
+            // code points, but we do it for completeness.
+            for (int j=0; j<4; ++j) {
+                int d = 0;
+                switch (j) {
+                case 0: d = UCharacter.toUpperCase(c); break;
+                case 1: d = UCharacter.toLowerCase(c); break;
+                case 2: d = UCharacter.toTitleCase(c); break;
+                case 3: d = UCharacter.foldCase(c, DEFAULT_CASE_MAP); break;
+                }
+                if (d != c) {
+                    if (!caseSensitive.contains(c) ||
+                        !caseSensitive.contains(d)) {
+                        System.out.println("Warning: code point " + c +
+                                           " => " + d + " created NEW MAPPING"+
+                                           " for Case_Sensitive");
+                    }
+                    caseSensitive.add(c);
+                    caseSensitive.add(d);
+                }
+            }
+        }
+        return caseSensitive;
+    }
+
+    /**
+     * Given a UnicodeSet, emit it as an array of UChar pairs.  Each
+     * pair will be the start/end of a range.  Code points >= U+10000
+     * will be represented as surrogate pairs.
+     */
+    static void emitUCharRangesArray(PrintStream out, UnicodeSet set, String id) {
+        // Store the pairs in a StringBuffer.  This handles surrogate
+        // representation.
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<set.getRangeCount(); ++i) {
+            UTF16.append(buf, set.getRangeStart(i));
+            UTF16.append(buf, set.getRangeEnd(i));
+        }
+        // Emit the pairs
+        out.println("static const UChar " + id + "[] = {");
+        for (int i=0; i<buf.length(); ) {
+            out.print("    ");
+            for (int n=0; n++<10 && i<buf.length(); ++i) {
+                out.print("0x" + Utility.hex(buf.charAt(i), 4) + ',');
+            }
+            out.println();
+        }
+        out.println("};");
+        out.println("#define " + id + "_LENGTH (sizeof(" + id +
+                    ")/sizeof(" + id + "[0]))");
+    }
+
+    /**
+     * Given a UnicodeSet, emit it as a Java string.  The most economical
+     * format is not the pattern, but instead a pairs list, with each
+     * range pair represented as two adjacent characters.
+     */
+    static void emitRangesString(PrintStream out, UnicodeSet set, String id) {
+        // Store the pairs in a StringBuffer.  This handles surrogate
+        // representation.
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<set.getRangeCount(); ++i) {
+            UTF16.append(buf, set.getRangeStart(i));
+            UTF16.append(buf, set.getRangeEnd(i));
+        }
+        // Emit the pairs
+        out.println("    private static final String " + id + " =");
+        out.println(Utility.formatForSource(buf.toString()) + ";");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java b/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
new file mode 100644
index 0000000..5e19200
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
@@ -0,0 +1,300 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.translit;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+//import java.text.*;
+import java.io.*;
+import java.util.Locale;
+
+// com.ibm.icu.dev.tool.translit.UnicodeSetClosure
+// com.ibm.icu.dev.test.translit.TransliteratorTest
+
+public class UnicodeSetClosure {
+    public static void main(String[] args) throws Exception {
+        
+        UnicodeSet foo =         new UnicodeSet("[\u1FF6-\u1FFD\u2000-\u2001\u2126]");
+        
+        test();
+        if(foo==null){}
+        
+        /* The following is superceded by Alan's tool
+        
+        File f = new File("UnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        System.out.println("Writing " + filename);
+        out.print('\uFEFF'); // BOM
+        
+        generateSets("Latin-Katakana", true, Normalizer.DECOMP_COMPAT, true,
+"[',.a-z~\u00DF\u00E6\u00F0\u00F8\u00FE\u02BE\u0300-\u034E\u0360-\u0362\u0483-\u0486\u0591-\u05A1\u05A3-\u05B9\u05BB-\u05BD\u05BF\u05C1-\u05C2\u05C4\u064B-\u0655\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u0901-\u0902\u093C\u0941-\u0948\u094D\u0951-\u0954\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A70-\u0A71\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0B01\u0B3C\u0B3F\u0B41-\u0B43\u0B4D\u0B56\u0B82\u0BC0\u0BCD\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0CBF\u0CC6\u0CCC-\u0CCD\u0D41-\u0D43\u0D4D\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F90-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032\u1036-\u1037\u1039\u1058-\u1059\u17B7-\u17BD\u17C6\u17C9-\u17D3\u18A9\u20D0-\u20DC\u20E1\u302A-\u302F\uFB1E\uFE20-\uFE23\\U0001D167-\\U0001D169\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD]"
+        );
+        generateSets("Latin-Katakana", false, Normalizer.DECOMP_COMPAT, false,
+"[~\u3001-\u3002\u30A1-\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C3-\u30C4\u30C6\u30C8\u30CA-\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE-\u30F3\u30F5-\u30F6\u30FC-\u30FD]"
+        );
+        
+        out.close();
+        
+        /////////////////////////////////////////////////
+        if (true) return; // skip the stuff we've done already
+        
+        generateSets("Cyrillic-Latin", true, Normalizer.DECOMP, false,
+            "[\u0402\u0404-\u0406\u0408-\u040B\u040F-\u0418\u041A-\u0438\u043A-\u044F\u0452\u0454-\u0456\u0458-\u045B\u045F\u0490-\u0495\u0498-\u0499\u04D4-\u04D5\u04D8-\u04D9]"
+        );
+        generateSets("Latin-Cyrillic", false, Normalizer.DECOMP, false,
+            "[A-Za-z\u00C6\u00E6\u0110-\u0111\u018F\u0259\u02B9-\u02BA]"
+        );
+        */
+    }
+    
+    public static void generateSets(String label, boolean forward, 
+            Normalizer.Mode m, boolean lowerFirst, String rules) {
+        UnicodeSet s = new UnicodeSet(rules);
+        System.out.println("Generating " + label + (forward ? "" : " BACKWARD"));
+        close(s, m, lowerFirst);
+        out.println("# MINIMAL FILTER GENERATED FOR: " + label + (forward ? "" : " BACKWARD"));
+        out.println(":: " 
+            + (forward ? "" : "( ") 
+            + s.toPattern(true) 
+            + (forward ? "" : " )")
+            + " ;");
+        out.println();
+        out.println("Unicode: " + s.toPattern(false));
+    }
+    
+    static boolean GENERATE = false;
+    
+    public static void test() throws Exception {
+        File f = new File("TestUnicodeSetClosure.txt");
+        String filename = f.getCanonicalFile().toString();
+        out = new PrintWriter(
+            new OutputStreamWriter(
+                new FileOutputStream(filename), "UTF-8"));
+        System.out.println("Writing " + filename);
+        out.print('\uFEFF'); // BOM
+        
+        GENERATE = true;
+        test("[:Devanagari:]");
+        /*
+        test("[\u00E0Bc]");
+        test("[m]");
+        */
+        
+        out.close();
+    }
+    
+    static final Normalizer.Mode[] testModes = {
+        Normalizer.NONE, Normalizer.NFD, Normalizer.NFC, Normalizer.NFKD, Normalizer.NFKC};
+    static final String[] modeNames = {
+        "NoNF", "NFD", "NFC", "NFKD", "NFKC"};
+        
+    static final boolean[] testCases = {
+        false, true};
+    static final String[] caseNames = {
+        "noLower", "lower"};
+    
+    public static void test(String testStr) throws Exception {
+        UnicodeSet original = new UnicodeSet(testStr);
+        
+        System.out.println("Testing Closure of: " + original.toPattern(true));
+        out.println("Testing Closure of: " + original.toPattern(false));
+        UnicodeSet raw = new UnicodeSet(original);
+        original.complement();
+        original.complement();
+        if (!raw.equals(original)) {
+            out.println("Equals:" + original.toPattern(false));
+        }
+        StringWriter swLog = null;
+        PrintWriter log = null;
+        
+        if (GENERATE) {
+            swLog = new StringWriter();
+            log = new PrintWriter(swLog);
+            log.println("static UnicodeSet[][] UNCHANGED = {");
+        }
+        for (int i = 0; i < testCases.length; ++i) {
+            if (GENERATE) log.println("    {");
+            for (int j = 0; j < testModes.length; ++j) {
+                UnicodeSet test = new UnicodeSet(original);
+                close(test, testModes[j], testCases[i]);
+                if (GENERATE) {
+                    log.println("\tnew UnicodeSet(\"" + generatedSet.toPattern(true) + "\"),");
+                }
+                String label = caseNames[i]  + ", " + modeNames[j] ;
+                System.out.println(label);
+                out.println(label + ": " + test.toPattern(false));
+                test.removeAll(original);
+                if (test.isEmpty()) {
+                    out.println("\tNo Difference from original");
+                } else {
+                    out.println("\tDifference = " + test.toPattern(false));
+                }
+                out.flush();
+            }
+            if (GENERATE) log.println("    },");
+            out.println();
+        }
+        
+        if (GENERATE) {
+            log.println("};");
+            out.print(swLog.getBuffer().toString());
+        }
+        
+        /*
+            close(test, Normalizer.DECOMP, false);
+            print("NFD", test);
+            
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.NO_OP, true);
+            print("Lower", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.COMPOSE, false);
+            print("NFC", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.DECOMP_COMPAT, false);
+            print("NFKD", test);
+
+            test = new UnicodeSet(testStr);
+            close(test, Normalizer.COMPOSE_COMPAT, false);
+            print("NFKC", test);
+        */
+    }
+    
+    static PrintWriter out;
+    
+    /*
+    public static void print(String label, UnicodeSet test) {
+        System.out.println(label);
+        out.println(label + ": " + test.toPattern(false));
+        out.println();
+    }
+    */
+    
+    // dumb, slow implementations
+    public static class NFToString implements Char32ToString {
+        Normalizer.Mode mode;
+        boolean lowerFirst;
+        
+        NFToString(Normalizer.Mode m, boolean lowerFirst) {
+            mode = m;
+            this.lowerFirst = lowerFirst;
+        }
+        
+        public String get(int cp) {
+            String source = UTF16.valueOf(cp);
+            String result = source;
+            if (lowerFirst) result = UCharacter.toLowerCase(Locale.US, result);
+            result = Normalizer.normalize(result, mode);
+            if (lowerFirst) result = UCharacter.toLowerCase(Locale.US, result);
+            if (result.equals(source)) return null;
+            return result;
+        }
+    }
+        
+    
+    /** Returns a mapping from char32 to a string. If there is no change,
+     * null is returned.
+     */
+     
+    interface Char32ToString {
+        public String get(int cp);
+    }
+    
+    static boolean FAST = true;
+    
+    public static void close(UnicodeSet s, Normalizer.Mode m, boolean lowerFirst) {
+        Char32ToString f = new NFToString(m, lowerFirst);
+        if (FAST) {
+            int mm;
+            for (mm = 0; ; ++mm) if (m == testModes[mm]) break; // find mode
+            close2(s, f, lowerFirst ? 1 : 0, mm);
+            return;
+        }
+        close(s, f);
+    }
+    
+    public static void close(UnicodeSet s, Char32ToString f) {
+        if (GENERATE) generatedSet = new UnicodeSet();
+        
+        for (int cp = 0; cp <= 0x10FFFF; ++cp) {
+            int type = UCharacter.getType(cp);
+            if (type == Character.UNASSIGNED) continue;
+            
+            //if (cp == '\u00e7') {
+              //  System.out.println("debug");
+            //}
+            String result = f.get(cp);
+            if (result == null) continue;
+            if (GENERATE) {
+                generatedSet.add(cp);
+            }
+            if (!containsSome(s, result)) continue;
+            s.add(cp);
+        }
+    }
+    
+    public static void close2(UnicodeSet s, Char32ToString f, int lc, int mode) {
+        UnicodeSet unchanged = new UnicodeSet(); // UNCHANGED[lc][mode];
+        int count = unchanged.getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            int start = unchanged.getRangeStart(i);
+            int end = unchanged.getRangeEnd(i);
+            for (int cp = start; cp <= end; ++cp) {
+                String result = f.get(cp);
+                if (result == null) throw new IllegalArgumentException("Something wrong -- should never happen");
+                if (!containsSome(s, result)) continue;
+                s.add(cp);
+            }
+        }
+    }
+    
+    /*
+    static final UnicodeSet[][] UNCHANGED = {
+        { // \u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4
+        new UnicodeSet("[\u1FF6-\u1FFD\u2000-\u2001\u2126]"),
+        // \u212A-\u212B\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278
+        new UnicodeSet("[\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0134-\u0137\u0139-\u013E\u0143-\u0148\u014C-\u0151\u0154-\u0165\u0168-\u017E\u01A0-\u01A1\u01AF-\u01B0\u01CD-\u01DC\u01DE-\u01E3\u01E6-\u01F0\u01F4-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u0340-\u0341\u0343-\u0344\u0374\u037E\u0385-\u038A\u038C\u038E-\u0390\u03AA-\u03B0\u03CA-\u03CE\u03D3-\u03D4\u0400-\u0401\u0403\u0407\u040C-\u040E\u0419\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0476-\u0477\u04C1-\u04C2\u04D0-\u04D3\u04D6-\u04D7\u04DA-\u04DF\u04E2-\u04E7\u04EA-\u04F5\u04F8-\u04F9\u0622-\u0626\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u1E00-\u1E99\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFD\u2000-\u2001\u2126\u212A-\u212B\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E]"),
+        new UnicodeSet("[\u0340-\u0341\u0343-\u0344\u0374\u037E\u0387\u0958-\u095F\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1FBB\u1FBE\u1FC9\u1FCB\u1FD3\u1FDB\u1FE3\u1FEB\u1FEE-\u1FEF\u1FF9\u1FFB\u1FFD\u2000-\u2001\u2126\u212A-\u212B\u2329-\u232A\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E]"),
+        new UnicodeSet("[\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00C5\u00C7-\u00CF\u00D1-\u00D6\u00D9-\u00DD\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u010F\u0112-\u0125\u0128-\u0130\u0132-\u0137\u0139-\u0140\u0143-\u0149\u014C-\u0151\u0154-\u0165\u0168-\u017F\u01A0-\u01A1\u01AF-\u01B0\u01C4-\u01DC\u01DE-\u01E3\u01E6-\u01F5\u01F8-\u021B\u021E-\u021F\u0226-\u0233\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0344\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u0390\u03AA-\u03B0\u03CA-\u03CE\u03D0-\u03D6\u03F0-\u03F2\u0400-\u0401\u0403\u0407\u040C-\u040E\u0419\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0476-\u0477\u04C1-\u04C2\u04D0-\u04D3\u04D6-\u04D7\u04DA-\u04DF\u04E2-\u04E7\u04EA-\u04F5\u04F8-\u04F9\u0587\u0622-\u0626\u0675-\u0678\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u222C-\u222D\u222F-\u2230\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u24EA\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309B-\u309C\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE]"),
+        new UnicodeSet("[\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u0132-\u0133\u013F-\u0140\u0149\u017F\u01C4-\u01CC\u01F1-\u01F3\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0344\u0374\u037A\u037E\u0384-\u0385\u0387\u03D0-\u03D6\u03F0-\u03F2\u0587\u0675-\u0678\u0958-\u095F\u09DC-\u09DD\u09DF\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1E9A-\u1E9B\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1FBB\u1FBD-\u1FC1\u1FC9\u1FCB\u1FCD-\u1FCF\u1FD3\u1FDB\u1FDD-\u1FDF\u1FE3\u1FEB\u1FED-\u1FEF\u1FF9\u1FFB\u1FFD-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u222C-\u222D\u222F-\u2230\u2329-\u232A\u2460-\u24EA\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u309B-\u309C\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE]"),
+        },
+        {
+        new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u0345\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D1\u03D5-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u09F8\u0F2A-\u0F33\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FBC\u1FBE\u1FC8-\u1FCC\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFC\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u0110\u0112-\u0126\u0128-\u0132\u0134-\u0137\u0139-\u013F\u0141\u0143-\u0148\u014A\u014C-\u0152\u0154-\u0166\u0168-\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01DC\u01DE-\u01E4\u01E6-\u021C\u021E-\u021F\u0222\u0224\u0226-\u0233\u0340-\u0341\u0343-\u0345\u0374\u037E\u0385-\u038A\u038C\u038E-\u03A1\u03A3-\u03B0\u03C2\u03CA-\u03CE\u03D0-\u03D1\u03D3-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476-\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1-\u04C3\u04C7\u04CB\u04D0-\u04D4\u04D6-\u04D8\u04DA-\u04E0\u04E2-\u04E8\u04EA-\u04F5\u04F8-\u04F9\u0531-\u0556\u0622-\u0626\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u137C\u1E00-\u1E99\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC1-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFD\u2000-\u2001\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        new UnicodeSet("[A-Z\u00B2-\u00B3\u00B5\u00B9\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u0340-\u0341\u0343-\u0345\u0374\u037E\u0386-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D1\u03D5-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u0958-\u095F\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F76\u0F78\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FBC\u1FBE\u1FC8-\u1FCC\u1FD3\u1FD8-\u1FDB\u1FE3\u1FE8-\u1FEC\u1FEE-\u1FEF\u1FF8-\u1FFD\u2000-\u2001\u2070\u2074-\u2079\u2080-\u2089\u2126\u212A-\u212B\u2153-\u215E\u2160-\u217F\u2181-\u2183\u2329-\u232A\u2460-\u2468\u2474-\u247C\u2488-\u2490\u24B6-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB1F\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFB4E\uFF21-\uFF3A\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        new UnicodeSet("[A-Z\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u00E0-\u00E5\u00E7-\u00EF\u00F1-\u00F6\u00F9-\u00FD\u00FF-\u0110\u0112-\u0126\u0128-\u0137\u0139-\u0141\u0143-\u014A\u014C-\u0152\u0154-\u0166\u0168-\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01DC\u01DE-\u01E4\u01E6-\u021C\u021E-\u021F\u0222\u0224\u0226-\u0233\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0345\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u03A1\u03A3-\u03B0\u03C2\u03CA-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0439\u0450-\u0451\u0453\u0457\u045C-\u045E\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476-\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1-\u04C3\u04C7\u04CB\u04D0-\u04D4\u04D6-\u04D8\u04DA-\u04E0\u04E2-\u04E8\u04EA-\u04F5\u04F8-\u04F9\u0531-\u0556\u0587\u0622-\u0626\u0675-\u0678\u06C0\u06C2\u06D3\u0929\u0931\u0934\u0958-\u095F\u09CB-\u09CC\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B48\u0B4B-\u0B4C\u0B5C-\u0B5D\u0B94\u0BCA-\u0BCC\u0C48\u0CC0\u0CC7-\u0CC8\u0CCA-\u0CCB\u0D4A-\u0D4C\u0DDA\u0DDC-\u0DDE\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u1026\u137C\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u2181-\u2183\u219A-\u219B\u21AE\u21CD-\u21CF\u2204\u2209\u220C\u2224\u2226\u222C-\u222D\u222F-\u2230\u2241\u2244\u2247\u2249\u2260\u2262\u226D-\u2271\u2274-\u2275\u2278-\u2279\u2280-\u2281\u2284-\u2285\u2288-\u2289\u22AC-\u22AF\u22E0-\u22E3\u22EA-\u22ED\u2329-\u232A\u2460-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u304C\u304E\u3050\u3052\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070-\u3071\u3073-\u3074\u3076-\u3077\u3079-\u307A\u307C-\u307D\u3094\u309B-\u309C\u309E\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0-\u30D1\u30D3-\u30D4\u30D6-\u30D7\u30D9-\u30DA\u30DC-\u30DD\u30F4\u30F7-\u30FA\u30FE\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uAC00-\uD7A3\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        new UnicodeSet("[A-Z\u00A0\u00A8\u00AA\u00AF\u00B2-\u00B5\u00B8-\u00BA\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130-\u0134\u0136\u0139\u013B\u013D\u013F-\u0141\u0143\u0145\u0147\u0149-\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u017F\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4-\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1-\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u02B0-\u02B8\u02D8-\u02DD\u02E0-\u02E4\u0340-\u0341\u0343-\u0345\u0374\u037A\u037E\u0384-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03C2\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F0-\u03F2\u03F4-\u03F5\u0400-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C7\u04CB\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F8\u0531-\u0556\u0587\u0675-\u0678\u0958-\u095F\u09DC-\u09DD\u09DF\u09F8\u0A33\u0A36\u0A59-\u0A5B\u0A5E\u0B5C-\u0B5D\u0E33\u0EB3\u0EDC-\u0EDD\u0F0C\u0F2A-\u0F33\u0F43\u0F4D\u0F52\u0F57\u0F5C\u0F69\u0F73\u0F75-\u0F79\u0F81\u0F93\u0F9D\u0FA2\u0FA7\u0FAC\u0FB9\u137C\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9A-\u1E9B\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1F71\u1F73\u1F75\u1F77\u1F79\u1F7B\u1F7D\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FB8-\u1FC1\u1FC8-\u1FCF\u1FD3\u1FD8-\u1FDB\u1FDD-\u1FDF\u1FE3\u1FE8-\u1FEF\u1FF8-\u1FFE\u2000-\u200A\u2011\u2017\u2024-\u2026\u202F\u2033-\u2034\u2036-\u2037\u203C\u203E\u2048-\u2049\u2070\u2074-\u208E\u20A8\u2100-\u2103\u2105-\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2120-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2131\u2133-\u2139\u2153-\u217F\u2181-\u2183\u222C-\u222D\u222F-\u2230\u2329-\u232A\u2460-\u24EA\u2776-\u277E\u2780-\u2788\u278A-\u2792\u2E9F\u2EF3\u2F00-\u2FD5\u3000\u3036\u3038-\u303A\u309B-\u309C\u3131-\u318E\u3192-\u319F\u3200-\u321C\u3220-\u3243\u3260-\u327B\u3280-\u32B0\u32C0-\u32CB\u32D0-\u32FE\u3300-\u3376\u337B-\u33DD\u33E0-\u33FE\uF900-\uFA0D\uFA10\uFA12\uFA15-\uFA1E\uFA20\uFA22\uFA25-\uFA26\uFA2A-\uFA2D\uFB00-\uFB06\uFB13-\uFB17\uFB1F-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE44\uFE49-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE72\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\\U0001034A\\U00010400-\\U00010425\\U0001D165-\\U0001D166\\U0001D16D-\\U0001D172]"),
+        },
+    };
+    */
+
+    
+    static UnicodeSet generatedSet;
+    
+    // These should both be public, and on the respective classes
+    
+    public static void addAll(UnicodeSet s, String str) {
+        int cp;
+        for (int i = 0; i < str.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(str,i);
+            s.add(cp);
+        }
+    }
+    
+    public static boolean containsSome(UnicodeSet s, String str) {
+        int cp;
+        for (int i = 0; i < str.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(str,i);
+            if (s.contains(cp)) return true;
+        }
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java b/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java
new file mode 100644
index 0000000..d87fd4e
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java
@@ -0,0 +1,357 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2005, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+
+import com.ibm.icu.text.*;
+import java.util.Hashtable;
+import java.io.*;
+import com.ibm.icu.impl.*;
+import com.ibm.icu.lang.*;
+/**
+ * @author ram
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.7F
+ */
+public class WriteIndicCharts {
+    
+    public static void main(String[] args){
+        writeIICharts();
+    }
+   
+    
+    static String header =  "<html>\n" +
+                            "    <head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"+
+                            "           Inter-Indic Transliteration Comparison chart"+
+                            "    </head>\n"+
+                            "    <body bgcolor=#FFFFFF>\n"+
+                            "         <table border=1 width=100% >\n"+
+                            "            <tr>\n"+
+                            "            <th width=9%>Inter-Indic</th>\n"+
+                            "            <th width=9%>Latin</th>\n"+
+                            "            <th width=9%>Devanagari</th>\n"+
+                            "            <th width=9%>Bengali</th>\n"+
+                            "            <th width=9%>Gurmukhi</th>\n"+
+                            "            <th width=9%>Gujarati</th>\n"+
+                            "            <th width=9%>Oriya</th>\n"+
+                            "            <th width=9%>Tamil</th>\n"+
+                            "            <th width=9%>Telugu</th>\n"+
+                            "            <th width=9%>Kannada</th>\n"+
+                            "            <th width=9%>Malayalam</th>\n"+
+                            "            </tr>\n";
+    static String footer =  "          </table>\n"+
+                            "    </body>\n" +
+                            "</html>\n";
+                   
+    static UnicodeSet deva = new UnicodeSet("[:deva:]"); 
+    static UnicodeSet beng = new UnicodeSet("[:beng:]");
+    static UnicodeSet gujr = new UnicodeSet("[:gujr:]");
+    static UnicodeSet guru = new UnicodeSet("[:guru:]");
+    static UnicodeSet orya = new UnicodeSet("[:orya:]");
+    static UnicodeSet taml = new UnicodeSet("[:taml:]");
+    static UnicodeSet telu = new UnicodeSet("[:telu:]");
+    static UnicodeSet knda = new UnicodeSet("[:knda:]"); 
+    static UnicodeSet mlym = new UnicodeSet("[:mlym:]");                      
+    static UnicodeSet inter= new UnicodeSet("[\uE000-\uE082]");
+    
+    public static void writeIICharts(){
+        try{
+            Transliterator t1 = Transliterator.getInstance("InterIndic-Bengali");    
+            Transliterator t2 = Transliterator.getInstance("InterIndic-Gurmukhi");
+            Transliterator t3 = Transliterator.getInstance("InterIndic-Gujarati");
+            Transliterator t4 = Transliterator.getInstance("InterIndic-Oriya");
+            Transliterator t5 = Transliterator.getInstance("InterIndic-Tamil");
+            Transliterator t6 = Transliterator.getInstance("InterIndic-Telugu");
+            Transliterator t7 = Transliterator.getInstance("InterIndic-Kannada");
+            Transliterator t8 = Transliterator.getInstance("InterIndic-Malayalam");
+            Transliterator t9 = Transliterator.getInstance("InterIndic-Devanagari");
+            Transliterator t10 = Transliterator.getInstance("InterIndic-Latin");
+            //UnicodeSetIterator sIter = new UnicodeSetIterator(deva);
+            
+            for(int i=0x00;i<=0x80;i++){
+               String[] arr =  new String[10];
+               arr[0]=UTF16.valueOf(i+ 0xE000);
+               table.put(UTF16.valueOf(i),arr);
+            }
+            
+            OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("comparison-chart.html"),"UTF-8");
+            
+            os.write(header);
+
+            writeIICharts(t9,0x0900,1);
+            writeIICharts(t1,0x0980,2);        
+            writeIICharts(t2,0x0A00,3); 
+            writeIICharts(t3,0x0A80,4); 
+            writeIICharts(t4,0x0B00,5); 
+            writeIICharts(t5,0x0B80,6); 
+            writeIICharts(t6,0x0c00,7); 
+            writeIICharts(t7,0x0C80,8); 
+            writeIICharts(t8,0x0D00,9); 
+
+            for(int i=0x00;i<=0x80;i++){
+                String[] temp = (String[])table.get(UTF16.valueOf(i));
+                boolean write = false;
+                for(int k=1;k<temp.length && temp[k]!=null;k++){
+                    if(UCharacter.getExtendedName(UTF16.charAt(temp[k],0)).indexOf("unassigned")<0 ||
+                       temp[k].indexOf(":UNASSIGNED")<0){
+                        write = true;
+                    }
+                }
+                if(write){
+                    os.write("        <tr>\n");
+                    for(int j=0; j<temp.length;j++){
+                        if(temp[j]!=null){
+                            boolean fallback=false;
+                            boolean unassigned=false;
+                            boolean unmapped = false;
+                            boolean consumed =false;
+                            String str = temp[j];
+                                                        
+                            if(temp[j].indexOf(":FALLBACK")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                fallback=true;
+                               // os.write("            <td bgcolor=#FFFF00 align=center title=\""++"\">"+str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }
+                            if(temp[j].indexOf(":UNASSIGNED")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                unassigned=true;
+                            }
+                            
+                            if(temp[j].indexOf(":UNMAPPED")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                unmapped=true;
+                            }
+                            if(temp[j].indexOf(":CONSUMED")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                consumed=true;
+                            }
+                            
+                            String name;
+                            StringBuffer nameBuf=new StringBuffer(); 
+                            for(int f=0; f<str.length();f++){
+                                if(f>0){ nameBuf.append("+");}
+                                nameBuf.append(UCharacter.getExtendedName(UTF16.charAt(str,f)));
+                            }
+                            name = nameBuf.toString();   
+                            if(fallback){
+
+                                if(UCharacter.getExtendedName(UTF16.charAt(str,0)).indexOf("unassigned")>0){
+                                    os.write("            <td  width=9% bgcolor=#BBBBFF align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }else{
+                                    os.write("            <td width=9% bgcolor=#BBBBFF align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }
+                            }else if(unmapped){
+                                os.write("            <td bgcolor=#FF9999 align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }else if(unassigned){
+                                if(UCharacter.getExtendedName(UTF16.charAt(str,0)).indexOf("unassigned")>0){
+                                    os.write("            <td width=9% bgcolor=#00FFFF align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }else{
+                                    os.write("            <td width=9% bgcolor=#00FFFF align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }
+                            }else if(consumed){
+                                 if(UCharacter.getExtendedName(UTF16.charAt(str,0)).indexOf("unassigned")>0){
+                                    os.write("            <td width=9% bgcolor=#FFFF55 align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }else{
+                                    os.write("            <td width=9% bgcolor=#FFFF55 align=center title=\""+""+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                }
+                            }else if(name.indexOf("private")!=-1){
+                                String s = t10.transliterate(str);
+                                os.write("            <td width=9% bgcolor=#FFBBBB  align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                                if(!s.equals(str)){
+                                    os.write("            <td width=9%  bgcolor=#CCEEDD align=center>"+s +"</td>");
+                                }else{
+                                    os.write("            <td width=9% bgcolor=#CCEEDD align=center>&nbsp;</td>");
+                                }
+                            }else{
+                               os.write("            <td width=9% align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            } 
+                        }else{
+                             os.write("           <td width=9% >&nbsp</td>\n");
+                        }
+                    }
+                    os.write("        </tr>\n");
+                }
+            }
+            os.write(footer);
+            os.close();
+        }catch( Exception e){
+            e.printStackTrace();
+        }
+    }
+    public static void writeCharts(){
+        try{
+            Transliterator t1 = Transliterator.getInstance("InterIndic-Bengali");    
+            Transliterator t2 = Transliterator.getInstance("InterIndic-Gurmukhi");
+            Transliterator t3 = Transliterator.getInstance("InterIndic-Gujarati");
+            Transliterator t4 = Transliterator.getInstance("InterIndic-Oriya");
+            Transliterator t5 = Transliterator.getInstance("InterIndic-Tamil");
+            Transliterator t6 = Transliterator.getInstance("InterIndic-Telugu");
+            Transliterator t7 = Transliterator.getInstance("InterIndic-Kannada");
+            Transliterator t8 = Transliterator.getInstance("InterIndic-Malayalam");
+            Transliterator t9 = Transliterator.getInstance("InterIndic-Devanagari");
+            
+            //UnicodeSetIterator sIter = new UnicodeSetIterator(deva);
+            
+            for(int i=0x0900;i<=0x097F;i++){
+               String[] arr =  new String[10];
+               arr[0]=UTF16.valueOf((i&0xFF) + 0xE000);
+               table.put(UTF16.valueOf(i),arr);
+            }
+            
+            OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream("comparison-chart.html"),"UTF-8");
+            
+            os.write(header);
+            /*
+            writeCharts(t1,beng,1);        
+            writeCharts(t2,guru,2); 
+            writeCharts(t3,gujr,3); 
+            writeCharts(t4,orya,4); 
+            writeCharts(t5,taml,5); 
+            writeCharts(t6,telu,6); 
+            writeCharts(t7,knda,7); 
+            writeCharts(t8,mlym,8); 
+            */
+            /*
+            writeCharts(t9,0x0900,1);
+            writeCharts(t1,0x0980,2);        
+            writeCharts(t2,0x0A00,3); 
+            writeCharts(t3,0x0A80,4); 
+            writeCharts(t4,0x0B00,5); 
+            writeCharts(t5,0x0B80,6); 
+            writeCharts(t6,0x0c00,7); 
+            writeCharts(t7,0x0C80,8); 
+            writeCharts(t8,0x0D00,9); 
+            */
+            writeIICharts(t9,0x0900,1);
+            writeIICharts(t1,0x0980,2);        
+            writeIICharts(t2,0x0A00,3); 
+            writeIICharts(t3,0x0A80,4); 
+            writeIICharts(t4,0x0B00,5); 
+            writeIICharts(t5,0x0B80,6); 
+            writeIICharts(t6,0x0c00,7); 
+            writeIICharts(t7,0x0C80,8); 
+            writeIICharts(t8,0x0D00,9); 
+            for(int i=0x0900;i<=0x097F;i++){
+                String[] temp = (String[])table.get(UTF16.valueOf(i));
+                boolean write = false;
+                for(int k=1;k<temp.length;k++){
+                    if(UCharacter.getExtendedName(UTF16.charAt(temp[k],0)).indexOf("unassigned")<0){
+                        write = true;
+                    }
+                }
+                if(write){
+                    os.write("        <tr>\n");
+                    for(int j=0; j<temp.length;j++){
+                        if(temp[j]!=null){
+                            boolean fallback=false;
+                            String str = temp[j];
+                            
+                            if(temp[j].indexOf(":FALLBACK")>=0){
+                                str = temp[j].substring(0,temp[j].indexOf(":"));
+                                fallback=true;
+                               // os.write("            <td bgcolor=#FFFF00 align=center title=\""++"\">"+str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }
+                            String name = UCharacter.getExtendedName(UTF16.charAt(str,0));
+                            if(fallback){
+                                os.write("            <td bgcolor=#BBBBFF align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }else if(name.indexOf("unassigned")!=-1){
+                                os.write("            <td bgcolor=#CCCCCC align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            }else if(name.indexOf("private")!=-1){
+
+                                
+                                os.write("            <td bgcolor=#FFBBBB align=center title=\""+name+"\">"+"&nbsp<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+
+                            }else{
+                               os.write("            <td align=center title=\""+name+"\">"+ str+"<br><tt>"+Utility.hex(str)+"</tt>"+"</td>\n");
+                            } 
+                        }else{
+                             os.write("           <td>&nbsp</td>\n");
+                        }
+                    }
+                    os.write("        </tr>\n");
+                }
+            }
+            os.write(footer);
+            os.close();
+        }catch( Exception e){
+            e.printStackTrace();
+        }
+    }
+    static Hashtable table = new Hashtable();
+    static String getKey(int cp){
+        int delta = cp & 0xFF;
+        delta-= (delta>0x7f)? 0x80 : 0;
+        //delta+=0x0900;
+        return UTF16.valueOf(delta);
+    }
+    
+    public static void writeCharts(Transliterator trans, int start, int index){
+        
+        Transliterator inverse = trans.getInverse();
+        for(int i=0;i<=0x7f;i++){
+            String cp = UTF16.valueOf(start+i);
+            String s1 = inverse.transliterate(cp);
+            String s2 = trans.transliterate(s1);
+            
+            String[] arr = (String[])table.get(getKey(start+i));
+            if(cp.equals(s2)){
+                arr[index] = s1;
+            }else{
+                arr[index] = s1 + ":FALLBACK";
+            }
+        }
+    }
+    
+    public static void writeIICharts(Transliterator trans,int start, int index){
+        
+        Transliterator inverse = trans.getInverse();
+        UnicodeSetIterator iter = new UnicodeSetIterator(inter);
+        
+        while(iter.next()){
+            String cp =UTF16.valueOf(iter.codepoint);
+            String s1 = trans.transliterate(cp);
+            String s2 = inverse.transliterate(s1);
+            String[] arr = (String[])table.get(UTF16.valueOf(iter.codepoint&0xFF));
+            if(cp.equals(s1)){
+                arr[index] = UTF16.valueOf(start+(((byte)iter.codepoint)&0xFF))+":UNASSIGNED";
+            }else if(cp.equals(s2)){
+                arr[index] = s1;
+            }else if(s1.equals(s2)){
+                if(s1.equals("")){
+                    arr[index] = UTF16.valueOf(start+(((byte)iter.codepoint)&0xFF))+":CONSUMED";
+                }else{
+                    arr[index] = s1+ ":FALLBACK";
+                }
+            } else{
+                if(s2.equals("")){
+                    arr[index] = UTF16.valueOf(start+(((byte)iter.codepoint)&0xFF))+":CONSUMED";
+                }else{
+                    arr[index] = s1+ ":FALLBACK";
+                }
+            }
+        }
+    }
+    public static void writeCharts(Transliterator trans, UnicodeSet target, int index){
+        UnicodeSetIterator tIter = new UnicodeSetIterator(target);
+        Transliterator inverse = trans.getInverse();
+        while(tIter.next()){
+            String cp = UTF16.valueOf(tIter.codepoint);
+            String s1 = inverse.transliterate(cp);
+            String s2 = trans.transliterate(s1);
+            
+            String[] arr = (String[])table.get(getKey(tIter.codepoint));
+            if(cp.equals(s2)){
+                arr[index] = cp;
+            }else{
+                arr[index] = cp + ":FALLBACK";
+            }
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat b/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
new file mode 100755
index 0000000..4bfd5eb
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
@@ -0,0 +1,483 @@
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+# ************************************************************************
+# Copyright (C) 2000-2004, International Business Machines Corporation and
+# others. All Rights Reserved.
+# ************************************************************************
+
+# This perl script creates ICU transliterator data files, that live
+# in icu/data, from ICU4J UTF8 transliterator data files, in
+# icu4j/src/com/ibm/icu/impl/data/.
+#
+# The transformation that is done is very minimal.  The script assumes
+# that the input files use only # comments
+# and that they follow a rigid format.
+#
+# The output files are named according to ICU conventions (see NAME_MAP
+# below) and created in the current directory.  They should be manually
+# checked and then copied into the icu/data/tranlit directory.
+# An ICU build must
+# then be initiated, and the standard suite of ICU transliterator tests
+# should be run after that.
+#
+# Alan Liu 5/19/00 2/27/01
+
+use Getopt::Long;
+use strict;
+
+use vars qw(%USED_FILES);
+
+my $DIR = "../../../impl/data";
+my $ID = '';
+
+GetOptions('dir=s' => \$DIR,
+           'id=s' => \$ID,
+           '<>' => \&usage) || die;
+
+usage() if (@ARGV);
+
+my $ID =~ s/-/_/;
+if (! -d $DIR) {
+    print STDERR "$DIR is not a directory\n";
+    usage();
+}
+
+sub usage {
+    my $me = $0;
+    $me =~ s|.+[/\\]||;
+    print "Usage: $me [-dir <dir>] [-id <id>]\n";
+    print " --dir <dir> Specify the directory containing the\n";
+    print "             Transliterator_*.txt files\n";
+    print " --id <id>   Specify a single ID to transform, e.g.\n";
+    print "             Fullwidth-Halfwidth\n";
+    exit(1);
+}
+
+my $JAVA_ONLY = '-';
+
+my $OUTDIR = "icu4c";
+mkdir($OUTDIR,0777);
+
+# Mapping from Java file names to ICU file names
+# Constraints on ICU4C file name: icudt20b_
+# |--9 (prefix)---|---18(name with distinguisher,e.g. "t_" )----|
+#  --4 ("."+extn)--| = 31 characters total.
+# That is, must have length(%NAME_MAP{x}) <= 16
+
+my $MAX_ICU4C_FILENAME_LEN = 18;
+
+# -- HISTORY -- If not marked, then pre 2.2.
+#               All InterIndic are pre 2.2.
+# Any_Accents
+# Any_Publishing
+# Arabic_Latin           * 2.2
+# Cyrillic_Latin
+# Fullwidth_Halfwidth
+# Greek_Latin
+# Greek_Latin_UNGEGN     * 2.2 (moved from el.txt)
+# Han_Latin              * 2.2
+# Han_Latin_Definition   * 2.2
+# Han_Latin_EDICT        * 2.2 J only
+# Hebrew_Latin           * 2.2
+# Hiragana_Katakana
+# Hiragana_Latin
+# Latin_Jamo
+# Latin_Katakana
+# ThaiLogical_Latin      * 2.2 J only
+# Thai_ThaiLogical       * 2.2 J only
+# Thai_ThaiSemi          * 2.2 J only
+
+my %NAME_MAP = (
+     # An ICU name of "" means the ICU name == the ID
+
+     # We filter names based on what is in use in the index file.
+
+     # Flag a rule as JAVA_ONLY if it exists and we use it in Java,
+     # but we don't use it in C.
+
+     # Use official script abbreviations where possible.
+
+   # |..............|           |..............|             
+   # 1234567890123456           1234567890123456
+     Any_Accents            => "",
+     Any_Publishing         => "",
+     Cyrillic_Latin         => "Cyrl_Latn",
+     Fullwidth_Halfwidth    => "FWidth_HWidth",
+     Greek_Latin            => "Grek_Latn",
+     Hiragana_Katakana      => "Hira_Kana",
+     Hiragana_Latin         => "Hira_Latn",
+     Latin_Jamo             => "Latn_Jamo",
+     Latin_Katakana         => "Latn_Kana",
+
+     Arabic_Latin           => "Arab_Latn",
+     Greek_Latin_UNGEGN     => "Grek_Latn_UNGEGN",
+     Han_Latin              => "Hani_Latn",
+     Han_Latin_Definition   => "Hani_Latn_Def",
+     Han_Latin_EDICT        => "Hani_Latn_EDICT",
+     Hebrew_Latin           => "Hebr_Latn",
+     ThaiLogical_Latin      => $JAVA_ONLY, # "ThaiLog_Latn",
+     Thai_ThaiLogical       => $JAVA_ONLY, # "Thai_ThaiLog",
+     Thai_ThaiSemi          => $JAVA_ONLY, # "Thai_ThaiSemi",
+
+     InterIndic_Bengali     => "InterIndic_Beng",
+     InterIndic_Devanagari  => "InterIndic_Deva",
+     InterIndic_Gujarati    => "InterIndic_Gujr",
+     InterIndic_Gurmukhi    => "InterIndic_Guru",
+     InterIndic_Kannada     => "InterIndic_Knda",
+     InterIndic_Latin       => "InterIndic_Latn",
+     InterIndic_Malayalam   => "InterIndic_Mlym",
+     InterIndic_Oriya       => "InterIndic_Orya",
+     InterIndic_Tamil       => "InterIndic_Taml",
+     InterIndic_Telugu      => "InterIndic_Telu",
+
+     Bengali_InterIndic     => "Beng_InterIndic",
+     Devanagari_InterIndic  => "Deva_InterIndic",
+     Gujarati_InterIndic    => "Gujr_InterIndic",
+     Gurmukhi_InterIndic    => "Guru_InterIndic",
+     Kannada_InterIndic     => "Knda_InterIndic",
+     Latin_InterIndic       => "Latn_InterIndic",
+     Malayalam_InterIndic   => "Mlym_InterIndic",
+     Oriya_InterIndic       => "Orya_InterIndic",
+     Tamil_InterIndic       => "Taml_InterIndic",
+     Telugu_InterIndic      => "Telu_InterIndic",
+     
+     Han_Pinyin             => $JAVA_ONLY,
+     Kanji_English          => $JAVA_ONLY,
+     Kanji_OnRomaji         => $JAVA_ONLY,
+     
+     Latin_NumericPinyin    => "Latn_NPinyn",
+     Tone_Digit             => "Tone_Digit",
+     Han_Spacedhan          => "Hani_SpHan",
+     );
+
+my ($x,$x,$x,$x,$x,$THIS_YEAR) = localtime();
+$THIS_YEAR += 1900;
+
+# Header blocks of text written at start of ICU output files
+my $HEADER1 = <<END;
+//--------------------------------------------------------------------
+// Copyright (c) 1999-$THIS_YEAR, International Business Machines
+// Corporation and others.  All Rights Reserved.
+//--------------------------------------------------------------------
+// THIS IS A MACHINE-GENERATED FILE
+END
+my $HEADER2 = <<END;
+//--------------------------------------------------------------------
+END
+
+my $TOOL = $0;
+
+# Convert the index first; this tells us which rule files are in use.
+convertIndex();
+
+# print "In use:\n", join("\n", sort keys(%USED_FILES)), "\n";
+
+# Iterate over all Java RBT rule files
+foreach (<$DIR/Transliterator_*.txt>) {
+    next if (/~$/); # Ignore emacs backups
+    next if (/_index\.txt$/); # The index file was processed above
+    # Select either the command-line arg, if there was one, or
+    # any files mentioned in the index.
+    my $leaf = $_;
+    $leaf =~ s|.+[/\\]||;
+    if (($ID && $leaf =~ /$ID/) || exists $USED_FILES{$leaf}) {
+        my ($out, $id) = convertFileName($_);
+        if ($out) {
+            if ($out eq $JAVA_ONLY) {
+                print STDERR "*** $id skipped: Java only ***\n";
+                next;
+            }
+            file($id, $_, $out);
+        }
+    } elsif (!$ID) {
+        print "*** $leaf skipped: not in use ***\n";
+    }
+}
+
+######################################################################
+# Convert a Java file name to C
+# Param: Java file name of the form m|Transliterator_(.+)\.utf8\.txt$|
+# Return: A C file name (e.g., ldevan.txt) or the empty string,
+#  if there is no mapping, or $JAVA_ONLY if the given file isn't
+#  intended to be incorporated into C.
+sub convertFileName {
+    local $_ = shift;
+    my $id;
+    if (m|Transliterator_(.+)\.utf8\.txt$| ||
+        m|Transliterator_(.+)\.txt$|) {
+        $id = $1;
+    } else { die "Can't parse Java file name $_"; }
+    if (!exists $NAME_MAP{$id}) {
+        print STDERR "ERROR: $id not in map; please update $0\n";
+        return '';
+    }
+    my $out = $NAME_MAP{$id};
+    if ($out eq '') {
+        $out = $id;
+    }
+    if ($out ne $JAVA_ONLY) {
+        $out = 't_' . $out;
+    }
+    if (length($out) > $MAX_ICU4C_FILENAME_LEN) {
+        print STDERR "ERROR: ICU4C file name \"$out\" too long; please update $0\n";
+        return '';
+    }
+    return ($out, $id);
+}
+
+######################################################################
+# Convert the index file from Java to C format
+sub convertIndex {
+    my $JAVA_INDEX = "Transliterator_index.txt";
+    my $C_INDEX = "translit_index.txt";
+    open(JAVA_INDEX, "$DIR/$JAVA_INDEX") or die;
+    open(C_INDEX, ">$OUTDIR/$C_INDEX") or die;
+    
+    header(\*C_INDEX, $JAVA_INDEX);
+    
+    print C_INDEX <<END;
+//--------------------------------------------------------------------
+// N.B.: This file has been generated mechanically from the
+// corresponding ICU4J file, which is the master file that receives
+// primary updates.  The colon-delimited fields have been split into
+// separate strings.  For 'file' and 'internal' lines, the encoding
+// field has been deleted, since the encoding is processed at build
+// time in ICU4C.  Certain large rule sets not intended for general
+// use have been commented out with the notation "Java only".
+//--------------------------------------------------------------------
+
+translit_index {
+  RuleBasedTransliteratorIDs {
+END
+        
+    while (<JAVA_INDEX>) {
+        # ignore CVS keyword substitutions
+        next if /\$(Source|Revision|Date)/;
+
+        # we have printed out the copyright info ... ignore one in Java version
+        next if /Copyright/ ;
+        next if /Corporation/;
+
+        # Comments; change # to //
+        if (s|^(\s*)\#|$1//|) {
+            print C_INDEX;
+            next;
+        }
+        # Blank lines
+        if (!/\S/) {
+            print C_INDEX;
+            next;
+        }
+        # Content lines
+        chomp;
+        my $prefix = '';
+        #replace \p with \\p
+        $_=~ s/\\p/\\\\p/g;
+        my @a = split(':', $_);
+        if ($a[1] eq 'file' || $a[1] eq 'internal') {
+            # Convert the file name
+            my $id;
+            # Record file names in use
+            $USED_FILES{$a[2]} = 1;
+            ($a[2], $id) = convertFileName($a[2]);
+            if ($a[2] eq $JAVA_ONLY) {
+                $prefix = '// Java only: ';
+            }
+
+            # Delete the encoding field
+            splice(@a, 3, 1);
+        } elsif ($a[1] eq 'alias') {
+            # Pad out with extra blank fields to make the
+            # 2-d array square
+            push @a, "";
+        } else {
+            die "Can't parse $_";
+        }
+        print C_INDEX
+            $prefix, "{ ",
+            join(", ", map("\"$_\"", @a)),
+            " },\n";
+    }
+
+    print C_INDEX <<END;
+  }
+}
+END
+
+    close(C_INDEX);
+    close(JAVA_INDEX);
+    print STDERR "$JAVA_INDEX -> $C_INDEX\n";
+}
+
+######################################################################
+# Output a header
+# Param: Filehandle
+sub header {
+    my $out = shift;
+    my $in = shift;
+    print $out $HEADER1;
+    print $out "// Tool: $TOOL\n// Source: $in\n";
+    print $out "// Date: ", scalar localtime, "\n";
+    print $out $HEADER2;
+    print $out "\n";
+}
+
+######################################################################
+# Process one file
+# Param: ID, e.g. Fullwidth-Halfwidth
+# Param: Java input file name, e.g.
+#  f:/icu4j/src/com/ibm/text/resources/Transliterator_Fullwidth_Halfwidth.utf8.txt
+# Param: ICU output file name, e.g. fullhalf
+sub file {
+    my $id = shift;
+    my $IN = shift;
+    my $out = shift;
+
+    my $OUT = "$out.txt";
+
+    # Show input size. Show output size later -- useful for quick sanity check.
+    print "$id (", -s $IN, ") -> $OUT (";
+
+    # Open file, write UTF8 marker, close it, and reopen in text mode
+    open(OUT, ">$OUTDIR/$OUT") or die;
+    binmode OUT;        # Must do this so we can write our UTF8 marker
+    print OUT pack("C3", 0xEF, 0xBB, 0xBF); # Write UTF8 marker
+    close(OUT);
+
+    open(OUT, ">>$OUTDIR/$OUT") or die;
+    print OUT " // -*- Coding: utf-8; -*-\n";
+
+    header(\*OUT, $IN);
+    print OUT "// $id\n";
+    print OUT "\n";
+    print OUT "$out {\n";
+    print OUT "  Rule {\n";
+
+    open(IN, $IN) or die;
+    binmode IN;                 # IN is a UTF8 file
+
+    my $first = 1;
+    my $BOM = pack("C3", 239, 187, 191); # a UTF8 byte order mark
+
+    # Process each line by changing # comments to // comments
+    # and taking other text and enclosing it in double quotes
+    while (<IN>) {
+        my $raw = $_;
+        # ignore CVS keyword substitutions
+        next if /\$(Source|Revision|Date)/;
+
+        # we have printed out the copyright info ... ignore one in Java version
+        next if /Copyright/ ;
+        next if /Corporation/;
+
+        # Look for and delete BOM
+        if ($first) {
+            s/^$BOM//;
+            $first = 0;
+        }
+
+        # Clean the eol junk up
+        s/[\x0D\x0A]+$//;
+
+        # If there is a trailing backslash, then delete it -- we don't
+        # need line continuation in C, since adjacent strings are
+        # concatenated.  Count trailing backslashes; if they are odd,
+        # one is trailing.
+        if (m|(\\+)$|) {
+            if ((length($1) % 2) == 1) {
+                s|\\$||;
+            }
+        }
+
+        # Transform escaped characters
+        hideEscapes();
+
+        if (/^(\s*)(\#.*)$/) {
+            # Comment-only line
+            my ($white, $cmt) = ($1, $2);
+            $cmt =~ s|\#|//|;
+            $_ = $white . $cmt;
+
+        } elsif (!/\S/) {
+            # Blank line -- leave as-is
+
+        } else {
+            # Remove single-quoted matter 
+            my @quotes;
+            my $nquotes = 0;
+            my $x = $_;
+            while (s/^([^\']*)(\'[^\']*\')/$1<<x$nquotes>>/) {
+                push @quotes, $2;
+                ++$nquotes;
+            }
+
+            # Extract comment
+            my $cmt = '';
+            if (s|\#(.*)||) {
+                $cmt = '//' . $1;
+            }
+
+            # Add quotes
+            s|^(\s*)(\S.*?)(\s*)$|$1\"$2\"$3|;
+
+            # Restore single-quoted matter
+            for (my $i=0; $i<$nquotes; ++$i) {
+                s|<<x$i>>|$quotes[$i]|;
+            }
+
+            # Restore comment
+            $_ .= $cmt;
+        }
+
+        # Restore escaped characters
+        restoreEscapes();
+
+        print OUT $_, "\n";
+    }
+
+    # Finish up
+    close(IN);
+    print OUT "  }\n";
+    print OUT "}\n";
+    close(OUT);
+
+    # Write output file size for sanity check
+    print -s "$OUTDIR/$OUT", ")\n";
+}
+
+######################################################################
+sub hideEscapes {
+    # Transform escaped characters
+    s|\\\\|<<bs>>|g; # DO THIS FIRST Transform backslashes
+    s|\\u([a-zA-Z0-9]{4})|<<u$1>>|g; # Transform Unicode escapes
+    s|\\\"|<<dq>>|g; # Transform backslash double quote
+    s|\\\'|<<sq>>|g; # Transform backslash single quote
+    s|\\\#|<<lb>>|g; # Transform backslash pound
+    s|\\(.)|<<q$1>>|g; # Transform backslash escapes
+}
+
+######################################################################
+sub restoreEscapes {
+    # Restore escaped characters
+    s|<<bs>>|\\\\|g;
+    s|<<dq>>|\\\\\\\"|g;
+    s|<<sq>>|\\\\\\\'|g;
+    s|<<lb>>|\\\\\\\#|g;
+    s|<<q(.)>>|\\\\\\$1|g;
+    s|<<u0000>>|\\\\u0000|g; # Double escape U+0000
+    s|<<u(....)>>|\\u$1|g;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
new file mode 100755
index 0000000..6811313
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
@@ -0,0 +1,121 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -W -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -W -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+# This perl script updates the filters in the transliterator index file.
+# It does so in a dumb way:
+#
+#  Latin-X   NFD lower
+#  X-Latin   NFD
+#
+# For transliterators using NFKD, or not using Lower in this way, you
+# will have to hand-edit the index file.
+#
+# This script writes a new index file.  The new file has to then be
+# hand-edited and checked before use; it contains comments indicating
+# old lines that were replaced.
+#
+# Alan Liu 11/29/01
+
+use Getopt::Long;
+
+my $DIR = "../../text/resources";
+my $CLASSES = "../../../../../classes";
+
+#GetOptions('dir=s' => \$DIR,
+#           'id=s' => \$ID,
+#           '<>' => \&usage) || die;
+
+#usage() if (@ARGV);
+
+#$ID =~ s/-/_/;
+if (! -d $DIR) {
+    print STDERR "$DIR is not a directory\n";
+    usage();
+}
+
+#sub usage {
+#    my $me = $0;
+#    $me =~ s|.+[/\\]||;
+#    print "Usage: $me [-dir <dir>] [-id <id>]\n";
+#    print " --dir <dir> Specify the directory containing the\n";
+#    print "             Transliterator_*.txt files\n";
+#    print " --id <id>   Specify a single ID to transform, e.g.\n";
+#    print "             Fullwidth-Halfwidth\n";
+#    die;
+#}
+
+convertIndex();
+
+######################################################################
+# Convert the index file from Java to C format
+# Assume lines are of the form:
+#   <ID>:alias:<FILTER>;<REMAINDER>
+# <REMAINDER> can be
+#   Lower;NFX;...
+#   NFX;Lower;...
+#   NFX;...
+sub convertIndex {
+    $IN = "Transliterator_index.txt";
+    $OUT = "$IN.new";
+    open(IN, "$DIR/$IN") or die;
+    open(OUT, ">$DIR/$OUT") or die;
+    
+    while (<IN>) {
+        # Look for lines that are aliases with NF*
+        if (/^([^:]+):alias:(\[.+?);\s*((NF[^\s]*?)\s*;.+)$/i) {
+            my $id = $1;
+            my $oldset = $2;
+            my $remainder = $3;
+            my $NFXD = $4;
+            my $lower = '';
+            # Check for Lower
+            # If it comes before NF* then adjust accordingly
+            if (/^([^:]+):alias:(\[.+?);\s*(Lower\s*;.+)$/i) {
+                $lower = 'lower';
+                if (length($2) < length($oldset)) {
+                    $oldset = $2;
+                    $remainder = $3;
+                }
+            }
+            print STDERR "$id $NFXD $lower\n";
+            my $set = getSourceSet($id, $NFXD, $lower);
+            $_ = "$id:alias:$set;$remainder\n";
+        }
+        print OUT;
+    }
+
+    close(IN);
+    close(OUT);
+    print STDERR "Wrote $DIR/$OUT\n";
+}
+
+######################################################################
+# Get the source set (call out to Java), optionally with a closure.
+sub getSourceSet {
+    my $ID = shift;
+    my $NFXD = shift;
+    my $lower = shift;
+    my $set = `java -classpath $CLASSES com.ibm.tools.translit.genIndexFilters $ID $NFXD $lower`;
+    chomp($set);
+    $set;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
new file mode 100644
index 0000000..de7e397
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
@@ -0,0 +1,68 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/29/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.dev.tool.translit;
+import com.ibm.icu.text.*;
+
+/**
+ * Adjunct class to getIndexFilters.bat.  Just generates source sets
+ * and their closures.
+ *
+ * Usage: ID [ NFD|NFKD [lower] ]
+ *
+ *   java -classpath classes com.ibm.icu.dev.tool.translit.genIndexFilters
+ *                              Latin-Greek NFD lower
+ *
+ * The 'NFD'|'NFKD' and 'lower' args are optional, but 'lower' can
+ * only be specified if 'NFD' or 'NFKD' is.
+ *
+ * DO NOT CHANGE OUTPUT FORMAT.  This tool's output is read by a Perl
+ * script.
+ */
+public class genIndexFilters {
+
+    public static void main(String[] args) {
+        Normalizer.Mode m = Normalizer.NONE;
+        boolean lowerFirst = false;
+        if (args.length >= 2) {
+            if (args[1].equalsIgnoreCase("NFD")) {
+                m = Normalizer.NFD;
+            } else if (args[1].equalsIgnoreCase("NFKD")) {
+                m = Normalizer.NFKD;
+            } else {
+                usage();
+            }
+        }
+        if (args.length >= 3) {
+            if (args[2].equalsIgnoreCase("lower")) {
+                lowerFirst = true;
+            } else {
+                usage();
+            }
+        }
+        if (args.length > 3) {
+            usage();
+        }
+        showSourceSet(args[0], m, lowerFirst);
+    }
+
+    static void showSourceSet(String ID, Normalizer.Mode m, boolean lowerFirst) {
+        Transliterator t = Transliterator.getInstance(ID);
+        UnicodeSet sourceSet = t.getSourceSet();
+        if (m != Normalizer.NONE || lowerFirst) {
+            UnicodeSetClosure.close(sourceSet, m, lowerFirst);
+        }
+        System.out.println(sourceSet.toPattern(true));
+    }
+
+    static void usage() {
+        System.err.println("Usage: ID [ NFD|NFKD [lower] ]");
+        System.exit(1);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/indic.bat b/src/com/ibm/icu/dev/tool/translit/indic.bat
new file mode 100755
index 0000000..57293b1
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indic.bat
@@ -0,0 +1,21 @@
+REM /**
+REM *******************************************************************************
+REM * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+REM * others. All Rights Reserved.                                                *
+REM *******************************************************************************
+REM */
+
+@echo off
+REM This script is a Windows launcher for the indic.pl script.  For this
+REM to work, the perl executable must be on the path.  We recommend
+REM the ActiveState build; see http://www.activestate.com.  See the
+REM tz.pl script itself for more documentation.
+
+if "%OS%" == "Windows_NT" goto WinNT
+perl -w -x indic.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto end
+:WinNT
+perl -w -x indic.pl %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto end
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+:end
diff --git a/src/com/ibm/icu/dev/tool/translit/indic.pl b/src/com/ibm/icu/dev/tool/translit/indic.pl
new file mode 100755
index 0000000..4d614ba
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indic.pl
@@ -0,0 +1,662 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+#!perl
+
+# Usage - $0 <remap file>
+#  e.g. - indic indic.txt
+# The input file should be a subset of the Unicode data file containing
+# the blocks of interest.
+#
+# The remap file should have lines of the form
+# "\u0D01>\u0D02;"
+# including the quotes.  These will be interpreted as saying that the
+# undefined code point U+D01 (derived via mapping from InterIndic)
+# can be remapped to U+D02.
+# 
+# The purpose of this script is to process the Indic script data into
+# a form usable by the IndicTransliterator, that is, the Indic-Indic
+# transliterator.  The transliterator needs two things: A mapping of
+# the code points in common, and a list of the exceptions.
+
+# Assume we are located in icu4j/src/com/ibm/tools/translit/.
+# We want the Unicode DB in icu4j/src/data/unicode/.
+$UNICODE_DB = "../../../../data/unicode/UnicodeData.txt";
+$EXCEPTIONS_FILE = shift;
+
+# Assume we are located in icu4j/src/com/ibm/tools/translit/.
+# We want to output files to icu4j/src/com/ibm/text/resources/.
+# Output directory
+$OUTDIR = "../../text/resources";
+
+# The template file should contain java code that can be used
+# to generate RuleBasedTransliterator resource files.  The template
+# should contain the following embedded symbols, which this script
+# will replace:
+# $TOOL - name of generating tool
+# $DATE - date of generation
+# $SCRIPTFROM - name of source script
+# $SCRIPTTO - name of target script
+# $RULES - rules
+$RBT_TEMPLATE = 'rbtTemplate.txt';
+
+# Name of this tool in generated RBT files
+$RBT_GEN_TOOL = 'icu4j/src/com/ibm/tools/translit/indic.pl';
+
+$DUMP = 0; # If 1, dump out internal data
+
+$DO_HEURISTIC_REMAP = 0; # If 1, do automatic heuristic remapping
+$DO_DECOMP_REMAP = 0; # If 1, do decomp remapping
+
+open(UNICODE_DB);
+while (<UNICODE_DB>) {
+    next if (m|^0[0-8]|); # Skip up to Devanagari block (0900)
+    last if (m|^0D[8-F]|i); # Bail out after Malayam block (0D00)
+    # 0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+    my @data = split(/;/);
+    my $fullCode = hex($data[0]); # e.g., 0x093F
+    my $code = $fullCode & 0x7F; # e.g., 0x3F
+    my ($script, $name) = ($data[1] =~ /(\w+)\s+(.+)/);
+    die "Can't parse $_" unless ($name);
+    # e.g., $code/$script/$name = 3F/MALAYALAM/VOWEL SIGN I
+
+    # Titlecase the script
+    $script = ucfirst(lc($script));
+
+    # Fix a couple inconsistencies in the 3.0 data
+    # REVISIT: Is this okay to do?
+    if ($DO_HEURISTIC_REMAP) {
+        if ($script eq 'Gujarati' && $code >= 5 && $code <= 0x14) {
+            $name =~ s/^VOWEL/LETTER/;
+        }
+    }
+
+    # Keep track of all script names we encounter.  We also note the
+    # base of the block.
+    my $base = $fullCode & ~0x7F; # e.g., 0x900;
+    if (exists $SCRIPT_TO_BASE{$script}) {
+        die "Script base mismatch for $script: $base vs. $SCRIPT_TO_BASE{$script}"
+            if ($SCRIPT_TO_BASE{$script} ne $base);
+    } else {
+        $SCRIPT_TO_BASE{$script} = $base;
+    }
+
+    # Build up a mapping by name.  For each name, keep a hash keyed by
+    # code point.  For each code point, keep an array of script names.
+    # Also keep a total use count for each name.
+    push @{$NAME_CODE_TO_SCRIPTS{$name}{$code}}, $script;
+    ++$NAME_CODE_TO_SCRIPTS{$name}{count};
+
+    # Build a map that looks like this:
+    # $SCRIPT_NAME_TO_CODE{<script>}{<name>} = <code>
+    # or undef if there is no mapping.
+    $SCRIPT_NAME_TO_CODE{$script}{$name} = $code;
+
+    # Build a map that looks like this:
+    $SCRIPT_CODE_TO_NAME{$script}{$code} = $name;
+
+    # And a map from the fullCode point to the name
+    $FULLCODE_TO_NAME{$fullCode} = $name;
+
+    # Map code (0..7F) to name.  This is usually a 1-1 mapping, but
+    # is 1-n in a few cases.
+    if (exists $CODE_TO_NAME{$code}) {
+        if ($name ne $CODE_TO_NAME{$code}) {
+            # For multiple names on a code offset, use the format
+            # (a/b), (a/b/c), etc.
+            local $_ = $CODE_TO_NAME{$code};
+            if (m|^\(|) {
+                if (!m|[\(\)/]$name[\(\)/]|) {
+                    s|\)$|/$name\)|;
+                }
+            } else {
+                $_ = "($_/$name)";
+            }
+            $CODE_TO_NAME{$code} = $_;
+        }
+    } else {
+        $CODE_TO_NAME{$code} = $name;
+    }
+}
+close(UNICODE_DB);
+
+# Read and parse the manual remapping file.  This contains lines
+# of the form:
+
+# |"\u0956>\u0948;"  // AI Length Mark -> Devanagari Vowel Sign AI 
+
+# The left hand side contains a non-existent full code value.  It
+# should be a single value.  The right hand side contains one or more
+# real full code values.  The idea is that when a mapping from another
+# script ends up at the non-existent code point on the left, the
+# sequence on the right should be substituted.  In this example,
+# Devanagari has no AI Length Mark.  So, if transliterating from
+# Oriya, then the character 0B56 (Oriya AI Length Mark) will remap to
+# the non-existent 0956, and that remaps to 0948, our chosen
+# Devanagari equivalent.  For our purposes, the left hand side should
+# be taken to mean its equivalent point in the InterIndic range.  In
+# this example, what it really says is E056>0948 in the
+# InterIndic-Devanagari transliterator.
+
+if ($EXCEPTIONS_FILE) {
+    open(EXCEPTIONS_FILE) or die;
+    while (<EXCEPTIONS_FILE>) {
+        if (m|^\s*\"([^\"]*?)\"|) {
+            my $line = $_;
+            $_ = $1;
+            if (/^(.*)>(.*);$/) {
+                my ($rawFrom, $rawTo) = ($1, $2);
+                my @from = parseUnicodeEscape($rawFrom);
+                my @to = parseUnicodeEscape($rawTo);
+                my $from = hexArray(@from);
+                # Some entries look like this:
+                # |"\u0955>\u0955;"
+                # these do nothing; ignore them.
+                if (intArraysEqual(\@from, \@to)) {
+                    #print STDERR "Ignoring NOOP remap of $from\n";
+                } elsif (exists $EXCEPTIONS{$from}) {
+                    print STDERR "ERROR in $EXCEPTIONS_FILE - Duplicate remap entries for $from\n";
+                } elsif (scalar @from > 1) {
+                    print STDERR "ERROR in $EXCEPTIONS_FILE - Ignoring multichar remap: ", hexArray(@from), "->", hexArray(@to), "\n";                    
+                } else {
+                    # Check this for validity.  Full code on the left
+                    # should NOT exist.  Full code seq on the right should.
+                    if (exists $FULLCODE_TO_NAME{$from[0]}) {
+                        print STDERR "ERROR in $EXCEPTIONS_FILE - Invalid remap; left side defined: ", hexArray(@from), "->", hexArray(@to), "\n";
+                    } elsif (grep(! exists $FULLCODE_TO_NAME{$_}, @to)) {
+                        print STDERR "ERROR in $EXCEPTIONS_FILE - Invalid remap; right side undefined: ", hexArray(@from), "->", hexArray(@to), "\n";
+                    } else {
+                        $EXCEPTIONS{$from[0]} = \@to;
+                    }
+                }
+            } else { die "ERROR in $EXCEPTIONS_FILE - Can't parse \"$_\" in line $line"; }
+        }
+    }
+    close(EXCEPTIONS_FILE);
+    print STDERR "$EXCEPTIONS_FILE: Loaded ", scalar keys %EXCEPTIONS, " remappings\n";
+}
+
+if ($DO_DECOMP_REMAP) {
+    # Read the NamesList.txt file.  This contains decomposition data.
+    # Gather these into %DECOMP, which maps a name to n1.n2..., where n1
+    # etc. are decomposed names.  E.g. $DECOMP{'LETTER RRA'} -> 'LETTER
+    # RA.SIGN NUKTA'.  There may be different mappings in different script
+    # blocks (LETTER RRA is mapped differently in Devanagari and Bengali),
+    # in which case the name goes into %DECOMP_MISMATCH, and is removed
+    # from %DECOMP.
+    $NAMES = "NamesList.txt";
+    open(NAMES);
+    while (<NAMES>) {
+        # Skip to start of DEVANAGARI block
+        last if (/^\@\@\s+0900/);
+    }
+    while (<NAMES>) {
+        # Continue until start of SINHALA block
+        last if (/^\@\@\s+0D80/);
+        if (/^([0-9A-Z]{4})/i) {
+            $code = $1;
+        } elsif (/^\s+:\s*(.+)/) {
+            # We've found a mapping of the form:
+            # 0929    DEVANAGARI LETTER NNNA
+            #     * for transcribing Dravidian alveolar n
+            #     : 0928 093C
+            my $from = $FULLCODE_TO_NAME{hex($code)};
+            my @to = map($FULLCODE_TO_NAME{hex($_)}, split(/\s+/, $1));
+            if (exists $DECOMP{$from}) {
+                my $aref = $DECOMP{$from};
+                if (join(".", @$aref) ne join(".", @to)) {
+                    print STDERR "ERROR: Decomp mismatch for $from\n";
+                    print STDERR "     : $from = ", join(".", @$aref), "\n";
+                    print STDERR "     : $from = ", join(".", @to), "\n";
+                    $DECOMP_MISMATCH{$from} = 1;
+                }
+            } else {
+                $DECOMP{$from} = \@to;
+            }
+        }
+    }
+    close(NAMES);
+    # Remove mismatches
+    foreach (keys %DECOMP_MISMATCH) {
+        delete $DECOMP{$_};
+    }
+    if ($DUMP) {
+        foreach (keys %DECOMP) {
+            print "$_ = ", join(" + ", @{$DECOMP{$_}}), "\n";
+        }
+    }
+}
+
+# Count the total number of scripts
+
+$SCRIPT_COUNT = scalar keys %SCRIPT_TO_BASE;
+#print join("\n", sort keys %SCRIPT_TO_BASE), "\n";
+
+# Dump out the %NAME_CODE_TO_SCRIPTS map.
+
+if ($DUMP) {
+    print "\nBY NAME:\n";
+    foreach my $pass ((1, 2)) {
+        print "\nBY NAME - SINGLETONS:\n" if ($pass eq 2);
+        foreach my $name (sort keys %NAME_CODE_TO_SCRIPTS) {
+            if ($pass eq 1) {
+                next if (1 >= $NAME_CODE_TO_SCRIPTS{$name}{count});
+            } else {
+                next if (1 < $NAME_CODE_TO_SCRIPTS{$name}{count});
+            }
+            print "$name:";
+            my $href = $NAME_CODE_TO_SCRIPTS{$name};
+            foreach my $code (sort {$a <=> $b} keys %$href) {
+                next if ($code eq 'count');
+                my $aref = $href->{$code};
+                print " ", hex2($code), " (", formatScriptList($aref), ")";
+            }
+            print "\n";
+        }
+    }
+}
+
+# Create some transliterators, based on the scripts and the %NAME_CODE_TO_SCRIPTS
+# map.  Only use %NAME_CODE_TO_SCRIPTS entries with a count of 2 or more, that is,
+# names that occur in two or more scripts.  For those scripts where
+# the names occur, map both up to the InterIndic range, and down to
+# the target script.
+
+$INTERINDIC = 0xE000;
+$INTERINDIC_EXTRA = 0xE080;
+$INTERINDIC_EXTRA_NEXT = $INTERINDIC_EXTRA;
+
+# For each script, create a hash.  The hash has a key for each
+# code point, either within its block, or in the InterIndic block.
+# the value of the key is the mapping.
+
+# The script hashes are named %DEVANAGARI, etc., and referenced
+# with symbolic refs.
+
+@REMAP = ('s/\bSHORT\s+//i',
+          's/\bCANDRA\s+//i',
+          's/\bQA$/KA/i',
+          's/\bKHHA$/KHA/i',
+          's/\bGHHA$/GA/i',
+          's/\bZA$/JA/i',
+          's/\bFA$/PHA/i',
+          's/\bVA$/BA/i',
+          's/\bNNNA$/NA/i',
+          's/\bRRA$/RA/i',
+          's/\bLLLA$/LLA/i',
+          's/\bLLLA$/LA/i',
+          's/\bLLA$/LA/i',
+          's/^A(.) LENGTH MARK$/VOWEL SIGN A$1/i',
+          's/CANDRABINDU/BINDI/i',
+          's/BINDI/CANDRABINDU/i',
+          );
+
+# Do this so we see zero counts:
+foreach my $remap (@REMAP) { $REMAP{$remap} = 0; }
+
+# This loop iterates over the names in the NAME_CODE_TO_SCRIPTS hash.
+# These names are things like "LETTER NNNA".  For each name, it then
+# creates script mappings up to the InterIndic area, and back down
+# to the script areas.  If a name maps to more than one offset,
+# then it uses the InterIndic extra range.  Either way, it picks
+# a single InterIndic point, either an offset point or something in
+# the extra range, and maps up and down from that point.
+foreach my $name (sort keys %NAME_CODE_TO_SCRIPTS) {
+    next if (1 >= $NAME_CODE_TO_SCRIPTS{$name}{count});
+    my $href = $NAME_CODE_TO_SCRIPTS{$name};
+    # Count the number of different codes assigned to this name.
+    # Usually 1, but 2 for a handful of names.
+    my $codeCount = (keys %{$NAME_CODE_TO_SCRIPTS{$name}}) - 1; # less 1: {count}
+    # If $codeCount is 1, then map directly up to the $INTERINDIC
+    # base.  If $codeCount is 2, then map into unused spots starting
+    # at $INTERINDIC_EXTRA.
+    my $interIndicCode;
+    if ($codeCount > 1) {
+        # Map into the InterIndic extra range
+        $interIndicCode = $INTERINDIC_EXTRA_NEXT++;
+    }
+    my %seen;
+    foreach my $code (sort {$a ne 'count' && $b ne 'count' && $a <=> $b} keys %$href) {
+        next if ($code eq 'count');
+        my $aref = $href->{$code}; # Ref to array of scripts
+        if ($codeCount == 1) {
+            # Map directly
+            $interIndicCode = $INTERINDIC + $code;
+        }
+        # Keep track of the names of the extra InterIndic points
+        $INTERINDIC_NAME_TO_FULLCODE{$name} = $interIndicCode;
+
+        foreach my $scr (@$aref) {
+            $seen{$scr} = 1;
+            my $fullCode = $SCRIPT_TO_BASE{$scr} + $code;
+            $ {$scr}{$fullCode} = hex4($interIndicCode) . "; // $name";
+            $ {$scr}{$interIndicCode} = hex4($fullCode) . "; // $name";
+        }
+    }
+    # Now handle InterIndic->Script unmapped points.  For each name,
+    # some of the scripts will be left out -- will have no mappings
+    # to that name.  For these scripts, we can either leave them
+    # unmapped (so the InterIndic->Local mapping is empty), or
+    # try to remap.
+ unmappedScript:
+    foreach my $scr (keys %SCRIPT_TO_BASE) {
+        next if ($seen{$scr});
+
+        if ($DO_HEURISTIC_REMAP) {
+            # Try to remap through the known equivalences in our
+            # remapping table
+            foreach my $remapRE (@REMAP) {
+                local $_ = $name;
+                if (eval($remapRE)) {
+                    if (exists $SCRIPT_NAME_TO_CODE{$scr}{$_}) {
+                        $ {$scr}{$interIndicCode} =
+                            hex4($SCRIPT_TO_BASE{$scr} + $SCRIPT_NAME_TO_CODE{$scr}{$_}) .
+                                "; // REMAP: $name -> $_";
+                        ++$REMAP{$remapRE};
+                        next unmappedScript;
+                    }
+                }
+            }
+        }
+
+        # Try to remap through the file.  This contains remappings of
+        # the form 0991->0993.  That is, it contains local remappings
+        # that we can substitute and try again with.
+        #|GURMUKHI-InterIndic ------------------------------
+        #|// 0A02>; // UNMAPPED INTERNAL: SIGN BINDI
+        #|InterIndic-GURMUKHI ------------------------------
+        #|// E001>; // UNMAPPED EXTERNAL: SIGN CANDRABINDU
+        #|"\u0A01>\u0A02;"
+        # In this example, the remapping tells us that the non-existent
+        # character A01 should be considered equivalent to the real
+        # character A02.
+        # We implement this by adding two mappings; one from
+        # the InterIndic equivalent of A01, that is, E001, to A02,
+        # and one from A02, which otherwise has no mapping, to E001.
+        if ($EXCEPTIONS_FILE && $interIndicCode < $INTERINDIC_EXTRA) {
+            # Try to map this InterIndic character back to a the spot
+            # it would occupy in this script if it had a mapping.
+            my $code = $interIndicCode & 0x7F;
+            my $pseudoFullCode = $SCRIPT_TO_BASE{$scr} + $code;
+            if (exists $EXCEPTIONS{$pseudoFullCode}) {
+                my $fullCodeArray = $EXCEPTIONS{$pseudoFullCode};
+                my $comment;
+                foreach my $c (@$fullCodeArray) {
+                    $comment .= "." if ($comment);
+                    $comment .= $FULLCODE_TO_NAME{$c};
+                }
+                $comment = "; // REMAP ($EXCEPTIONS_FILE): " .
+                    hex4($pseudoFullCode) . ">" . hexArray(@$fullCodeArray) . " = " .
+                    $CODE_TO_NAME{$code} . ">" . $comment;
+                $ {$scr}{$interIndicCode} = hexArray(@$fullCodeArray) . $comment;
+                if (scalar @$fullCodeArray == 1) {
+                    if (exists $ {$scr}{$fullCodeArray->[0]}) {
+                        # There's already a proper mapping; no need to fill
+                        # in reverse
+                    } else {
+                        $ {$scr}{$fullCodeArray->[0]} = hex4($interIndicCode) . $comment;
+                    }
+                }
+                next unmappedScript;
+            }
+        }
+
+        $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$interIndicCode} = 1;
+        local $_ = "; // UNMAPPED InterIndic-$scr: $name";
+        if (exists $SCRIPT_CODE_TO_NAME{$scr}{$interIndicCode & 0x7F}) {
+            my $fullCode = $SCRIPT_TO_BASE{$scr} + ($interIndicCode & 0x7F);
+            $_ .= " (" . hex4($fullCode) . " = " . $FULLCODE_TO_NAME{$fullCode} . ")";
+        }
+        $ {$scr}{$interIndicCode} = $_;
+    }
+}
+
+# Add in unmapped entries for each script
+foreach my $scr (keys %SCRIPT_TO_BASE) {
+    my $base = $SCRIPT_TO_BASE{$scr};
+ unmappedInt:
+    foreach my $code (keys %{$SCRIPT_CODE_TO_NAME{$scr}}) {
+        my $fullCode = $code + $base;
+        next if (exists $ {$scr}{$fullCode});
+        my $name = $SCRIPT_CODE_TO_NAME{$scr}{$code};
+
+        if ($DO_HEURISTIC_REMAP) {
+            foreach my $remapRE (@REMAP) {
+                local $_ = $name;
+                if (eval($remapRE)) {
+                    if (exists $INTERINDIC_NAME_TO_FULLCODE{$_}) {
+                        $ {$scr}{$fullCode} =
+                            hex4($INTERINDIC_NAME_TO_FULLCODE{$_}) .
+                                "; // REMAP: $name -> $_";
+                        ++$REMAP{$remapRE};
+                        next unmappedInt;
+                    }
+                }
+            }
+        }
+
+        # Now try the decomp table
+        if ($DO_DECOMP_REMAP && exists $DECOMP{$name}) {
+            my $x;
+            my $cmt = "; // DECOMP: $name -> ";
+            foreach my $n (@{$DECOMP{$name}}) {
+                if (exists $SCRIPT_NAME_TO_CODE{$scr}{$n}) {
+                    $x .= hex4($SCRIPT_TO_BASE{$scr} + $SCRIPT_NAME_TO_CODE{$scr}{$n});
+                    $cmt .= $n . " + ";
+                } else {
+                    $cmt = 0;
+                    last;
+                }
+            }
+            if ($cmt) {
+                $ {$scr}{$fullCode} = $x . $cmt;
+                next unmappedInt;
+            }
+        }
+
+        $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode} = 1;
+        $ {$scr}{$fullCode} = "; // UNMAPPED $scr-InterIndic: $name";
+    }
+}
+
+# GUR
+# E00B>; // UNMAPPED EXTERNAL: LETTER VOCALIC R "\u0A0B>\u0A30\u0A3F;"
+# E00C>; // UNMAPPED EXTERNAL: LETTER VOCALIC L "\u0A0C>\u0A07;"
+# E00D>; // UNMAPPED EXTERNAL: LETTER CANDRA E "\u0A0D>\u0A10;"
+# E011>; // UNMAPPED EXTERNAL: LETTER CANDRA O "\u0A11>\u0A14;"
+# E037>; // UNMAPPED EXTERNAL: LETTER SSA "\u0A37>\u0A36;"
+# E045>; // UNMAPPED EXTERNAL: VOWEL SIGN CANDRA E "\u0A45>\u0A48;"
+# E049>; // UNMAPPED EXTERNAL: VOWEL SIGN CANDRA O "\u0A49>\u0A4C;"
+# Fix QA too
+
+# Dump out script maps
+foreach my $scr (sort keys %SCRIPT_TO_BASE) {
+    ## next unless ($scr eq 'TELUGU'); # Debugging
+    my @rules;
+    my $flag = 1;
+    foreach my $fullCode (sort {$a <=> $b} keys %{$scr}) {
+        if ($flag && $fullCode >= $INTERINDIC) {
+            # We have the complete <scr>-InterIndic rules; dump
+            # them out.
+            generateRBT($scr, "InterIndic", \@rules, $OUTDIR);
+            @rules = ();
+            $flag = 0;
+        }
+        if (exists $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode}) {
+            push @rules, "// " . hex4($fullCode) . ">" . $ {$scr}{$fullCode};
+        } else {
+            push @rules, hex4($fullCode) . ">" . $ {$scr}{$fullCode};
+        }
+    }
+    # Now generate the InterIndic-<scr> rules.
+    generateRBT("InterIndic", $scr, \@rules, $OUTDIR);
+
+#    print "$scr-InterIndic ------------------------------\n";
+#    my $flag = 1;
+#    foreach my $fullCode (sort {$a <=> $b} keys %{$scr}) {
+#        if ($flag && $fullCode >= $INTERINDIC) {
+#            print "InterIndic-$scr ------------------------------\n";
+#            $flag = 0;
+#        }
+#        if (exists $SCRIPT_FULLCODE_TO_IS_UNMAPPED{$scr}{$fullCode}) {
+#            print "// ", hex4($fullCode), ">", $ {$scr}{$fullCode}, "\n";
+#        } else {
+#            print hex4($fullCode), ">", $ {$scr}{$fullCode}, "\n";
+#        }
+#    }
+}
+
+# List successful remappings
+if ($DO_HEURISTIC_REMAP) {
+    foreach my $remap (sort keys %REMAP) {
+        print STDERR "REMAP ", $REMAP{$remap}, " x $remap\n";
+    }
+}
+
+#----------------------------------------------------------------------
+# SUBROUTINES
+
+# Return a listing of an array of scripts
+# Param: array ref
+sub formatScriptList {
+    my $aref = shift;
+    if ($SCRIPT_COUNT == @$aref) {
+        return "all";
+    } elsif (($SCRIPT_COUNT - 3) <= @$aref) {
+        my $s = "all but";
+        my %temp;
+        foreach (@$aref) { $temp{$_} = 1; }
+        foreach (sort keys %SCRIPT_TO_BASE) {
+            $s .= " $_" unless exists $temp{$_};
+        }
+        return $s;
+    } else {
+        return join(" ", @$aref);
+    }
+}
+
+# Format as %02X hex
+sub hex2 {
+    sprintf("%02X", $_[0]);
+}
+
+# Format as %04X hex
+sub hex4 {
+    sprintf("\\u%04X", $_[0]);
+}
+
+# Format an array as %04X hex, delimited by "."s
+sub hexArray {
+    join("", map { hex4($_); } @_);
+}
+
+# Parse a string of the form "\u0D01" to an array of integers.
+# Must ONLY contain escapes.
+# Return the array.
+sub parseUnicodeEscape {
+    local $_ = shift;
+    my $orig = $_;
+    my @result;
+    while (length($_)) {
+        if (/^\\u([0-9a-f]{4})(.*)/i) {
+            push @result, hex($1);
+            $_ = $2;
+        } else {
+            die "Can't parse Unicode escape $orig\n";
+        }
+    }
+    if (0 == @result) {
+        die "Can't parse Unicode escape $orig\n";        
+    }
+    @result;
+}
+
+# Return 1 if the two arrays of ints are equal.
+# Param: ref to array of ints
+# Param: ref to array of ints
+sub intArraysEqual {
+    my $a = shift;
+    my $b = shift;
+    if (scalar @$a == scalar @$b) {
+        for (my $i=0; $i<@$a; ++$i) {
+            if ($a->[$i] != $b->[$i]) {
+                return 0;
+            }
+        }
+        return 1;
+    }
+    return 0;
+}
+
+# Given a rule, possibly with trailing // comment,
+# quote the rule part and add a trailing "+" after
+# it.
+sub quoteRule {
+    my $cmt;
+    $cmt = $1 if (s|(\s*//.*)||); # isolate trailing // comment
+    s/^(.*;)/\"$1\"+/;
+    s/$/$cmt/;
+    $_;
+}
+
+# Given the name of the source script, name of the target script,
+# and array of rule strings, return a string containing the source
+# for a RuleBasedTransliterator file.
+# Param: source script name
+# Param: target script name
+# Param: ref to array of rules.  These rules are unquoted, without
+#  concatenators between them, but do have trailing ';' separators.
+# Param: name of output directory
+sub generateRBT {
+    # $TOOL - name of generating tool
+    # $DATE - date of generation
+    # $SCRIPTFROM - name of source script
+    # $SCRIPTTO - name of target script
+    # $RULES - rules
+    my ($source, $target, $rules, $outdir) = @_;
+    my $text;
+    $outdir =~ s|[/\\]$||; # Delete trailing / or \
+    my $OUT = "$outdir/TransliterationRule_${source}_$target.java";
+    open(RBT_TEMPLATE) or die;
+    open(OUT, ">$OUT") or die;
+    while (<RBT_TEMPLATE>) {
+        while (/\$([A-Za-z0-9]+)/) {
+            my $tag = $1;
+            my $sub;
+            if ($tag eq 'TOOL') {
+                $sub = $RBT_GEN_TOOL;
+            } elsif ($tag eq 'DATE') {
+                $sub = localtime;
+            } elsif ($tag eq 'SCRIPTFROM') {
+                $sub = $source;
+            } elsif ($tag eq 'SCRIPTTO') {
+                $sub = $target;
+            } elsif ($tag eq 'RULES') {
+                # Get any whitespace-only indent off the front of this tag
+                my $indent;
+                $indent = $1 if (/^(\s+)\$$tag/);
+
+                # The rules in the array are not quoted.  We need to quote
+                # them and add '+' operators between them.  We do NOT need
+                # to add ';' separators.  We DO need to separate trailing
+                # // comments and handle them.
+                $sub = join("\n$indent", map(&quoteRule, @$rules)) .
+                    "\n$indent\"\"";
+            } else {
+                print STDERR "ERROR in $RBT_TEMPLATE: Unknown tag $tag\n";
+                $sub = "[ERROR:Unknown tag \$$tag]";
+            }
+            s/\$$tag/$sub/;
+        }
+        print OUT;
+    }
+    close(OUT);
+    close(RBT_TEMPLATE);
+    print STDERR "Written: $OUT\n";
+}
+
+__END__
diff --git a/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt b/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
new file mode 100644
index 0000000..fd26dd2
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
@@ -0,0 +1,377 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+/* Reserved in all 9 scripts */
+
+/*
+   These codepoints are marked RESERVED in all 9 indic scripts.
+   There should not be any transliteration work on these codepoints, 
+   if they are ever encountered.  Ignore these codepoints.
+
+   Common reserved codepoints in ALL 9 scripts : (offset)
+   00, 04, 
+   3A, 3B, 
+   4E, 4F, 
+   7B, 7C, 7D, 7E, 7F
+*/
+
+/* Script-specific */
+/*
+   These codepoints are specific to their respective script.
+   Transliteration of these codepoints from one script to another is meaningless.
+
+   For example,
+      \u0B70 (Oriya) and \u0BF0 (Tamil) are non-reserved codepoints within each script.
+      On transliterating \u0B70 from Oriya to Tamil, we will get \u0BF0.
+      But \u0B70 in Oriya represents ISSHAR, whereas \u0BF0 in Tamil represents NUMBER TEN.
+
+   \u0970 Devanagari abbreviation sign
+
+   \u09F0 Bengali letter RA with middle diagonal (Assamese)
+   \u09F1 Bengali letter RA with lower diagonal 
+          (=Bengali letter VA with lower diagonal, Assamese)
+   \u09F2 Bengali rupee mark
+   \u09F3 Bengali rupee sign
+   \u09F4 Bengali currency numerator one
+   \u09F5 Bengali currency numerator two
+   \u09F6 Bengali currency numerator three
+   \u09F7 Bengali currency numerator four
+   \u09F8 Bengali currency numerator one less than the denominator
+   \u09F9 Bengali currency denominator sixteen
+   \u09FA Bengali isshar
+
+   \u0A70 Gurmukhi tippi (nasalization)
+   \u0A71 Gurmukhi addak (doubles following consonant)
+   \u0A72 Gurmukhi iri (base for vowels)
+   \u0A73 Gurmukhi ura (base for vowels)
+   \u0A74 Gurmukhi ek onkar (God is One)
+
+   \u0B70 Oriya isshar
+
+   \u0BF0 Tamil number ten
+   \u0BF1 Tamil number one hundred
+   \u0BF2 Tamil number one thousand
+*/
+
+
+
+/*****************************************************************************/
+/*  NOTE : <unknown> code will map back to itself                            */
+/*         till we find a good match                                         */
+/*****************************************************************************/
+
+
+
+/*****************************************************************************/
+/* Devanagari                                                                */
+/*****************************************************************************/
+
+"\u0955>\u0955;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0956>\u0948;"  // AI Length Mark -> Devanagari Vowel Sign AI
+"\u0957>\u094C;"  // AU Length Mark -> Devanagari Vowel Sign AU
+
+
+
+/*****************************************************************************/
+/* Bengali                                                                   */
+/*****************************************************************************/
+
+"\u098D>\u098D;"  // <unknown> independent vowel Candra E
+"\u098E>\u098F;"  // Letter Short E -> Letter E
+"\u0991>\u0993;"  // Letter Candra O -> Letter O
+"\u0992>\u0993;"  // Letter Short O -> Letter O
+"\u09A9>\u09A8;"  // Letter NNNA -> Letter NA
+"\u09B1>\u09B0;"  // Letter RRA -> Letter RA
+"\u09B3>\u09B2;"  // Letter LLA -> Letter LA
+"\u09B4>\u09B2;"  // Letter LLLA -> Letter LA
+"\u09B5>\u09AC;"  // Letter VA -> Letter BA
+"\u09BD>\u09BD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u09C5>\u09C7;"  // Vowel Candra E -> Vowel E
+"\u09C6>\u09C7;"  // Vowel Short E -> Vowel E
+"\u09C9>\u09CB;"  // Vowel Candra O -> Vowel O
+"\u09CA>\u09CB;"  // Vowel Short O -> Vowel O
+"\u09D0>\u09D0;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u09D1>\u09D1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u09D2>\u09D2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u09D3>\u09D3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u09D4>\u09D4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u09D5>\u09D5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u09D6>\u09C8;"  // AI Length Mark -> Bengali Vowel Sign AI
+"\u09D8>\u0995;"  // Letter QA -> Letter KA
+"\u09D9>\u0996;"  // Letter KHHA -> Letter KHA
+"\u09DA>\u0997;"  // Letter GHHA -> Letter GA
+"\u09DB>\u099C;"  // Letter ZA -> Letter JA
+"\u09DE>\u09AB;"  // Letter FA -> Letter PHA
+"\u09E4>\u09E4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u09E5>\u09E5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Gurmukhi                                                                  */
+/*****************************************************************************/
+
+"\u0A01>\u0A02;"
+"\u0A03>\u0A03;"  // <unknown> Sign Visarga - Devanagari (\u0903) & the rest
+"\u0A0B>\u0A30\u0A3F;"
+"\u0A0C>\u0A07;"
+"\u0A0D>\u0A10;"
+"\u0A0E>\u0A0F;"
+"\u0A11>\u0A14;"
+"\u0A12>\u0A13;"
+"\u0A29>\u0A28;"
+"\u0A31>\u0A30;"
+"\u0A34>\u0A33;"
+"\u0A37>\u0A36;"
+"\u0A3D>\u0A3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0A43>\u0A43;"  // <unknown> Vocalic R - Devanagari (\u0943)
+"\u0A44>\u0A44;"  // <unknown> Vocalic RR - Devanagari (\u0944)
+"\u0A45>\u0A48;"
+"\u0A46>\u0A47;"
+"\u0A49>\u0A4C;"
+"\u0A4A>\u0A4B;"
+"\u0A50>\u0A50;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u0A51>\u0A51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0A52>\u0A52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0A53>\u0A53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0A54>\u0A54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0A55>\u0A55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0A56>\u0A48;"  // AI Length Mark -> Gurmukhi Vowel Sign AI
+"\u0A57>\u0A4C;"  // AU Length Mark -> Gurmukhi Vowel Sign AU
+"\u0A58>\u0A15\u0A3C;"
+"\u0A5D>\u0A22\u0A3C;"  // Letter RHA -> Gurmukhi letter ddha (\u0A22) + nukta (\u0A3C)
+"\u0A5F>\u0A2F;"
+"\u0A60>\u0A30\u0A3F;"
+"\u0A61>\u0A08\u0A3C;"
+"\u0A62>\u0A3F\u0A3C;"
+"\u0A63>\u0A40\u0A3C;"
+"\u0A64>\u0A64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0A65>\u0A65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Gujarati                                                                  */
+/*****************************************************************************/
+"\u0A8C>\u0AB2\u0AC3;"
+"\u0A8E>\u0A8D;"
+"\u0A92>\u0A91;"
+"\u0AA9>\u0AA8;"
+"\u0AB1>\u0AB0;"
+"\u0AB4>\u0AB3;"
+"\u0AC6>\u0AC5;"
+"\u0ACA>\u0AC9;"
+"\u0AD1>\u0AD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0AD2>\u0AD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0AD3>\u0AD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0AD4>\u0AD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0AD5>\u0AD5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0AD6>\u0AC8;"  // AI Length Mark -> Gujarati Vowel Sign AI
+"\u0AD7>\u0ACC;"  // AU Length Mark -> Gujarati Vowel Sign AU
+"\u0AD8>\u0A95\u0ABC;"
+"\u0AD9>\u0A96\u0ABC;"
+"\u0ADA>\u0A97\u0ABC;"
+"\u0ADB>\u0A9C\u0ABC;"
+"\u0ADC>\u0AA1\u0ABC;"
+"\u0ADD>\u0AA2\u0ABC;"
+"\u0ADE>\u0AAB\u0ABC;"
+"\u0ADF>\u0AAF\u0ABC;"
+"\u0AE1>\u0AB2\u0AC3;"
+"\u0AE2>\u0ABF\u0ABC;"
+"\u0AE3>\u0AC0\u0ABC;"
+"\u0AE4>\u0AE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0AE5>\u0AE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Oriya                                                                     */
+/*****************************************************************************/
+"\u0B0D>\u0B0F;"
+"\u0B0E>\u0B0F;"
+"\u0B11>\u0B13;"
+"\u0B12>\u0B13;"
+"\u0B29>\u0B28;"
+"\u0B31>\u0B30;"
+"\u0B34>\u0B33;"
+"\u0B35>\u0B2C;"  // Letter VA -> Oriya Letter BA
+"\u0B44>\u0B43\u0B3C;"
+"\u0B45>\u0B47;"
+"\u0B46>\u0B47;"
+"\u0B49>\u0B4B;"
+"\u0B4A>\u0B4B;"
+"\u0B50>\u0B13\u0B01;"
+"\u0B51>\u0B51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0B52>\u0B52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0B53>\u0B53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0B54>\u0B54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0B55>\u0B55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0B58>\u0B15\u0B3C;"
+"\u0B59>\u0B16\u0B3C;"
+"\u0B5A>\u0B17\u0B3C;"
+"\u0B5B>\u0B1C\u0B3C;"
+"\u0B5E>\u0B2B\u0B3C;"
+"\u0B62>\u0B56\u0B3C;"
+"\u0B63>\u0B57\u0B3C;"
+"\u0B64>\u0B64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0B65>\u0B65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Tamil                                                                     */
+/*****************************************************************************/
+
+"\u0B81>\u0B81;"  // <unknown> Candrabindu - Devanagari (\u0901) ,etc
+"\u0B8B>\u0BB0\u0BBF;"
+"\u0B8C>\u0B87;"
+"\u0B8D>\u0B86;"
+"\u0B91>\u0B86;"
+"\u0B96>\u0B95;"
+"\u0B97>\u0B95;"
+"\u0B98>\u0B95;"
+"\u0B9B>\u0B9A;"
+"\u0B9D>\u0B9A;"
+"\u0BA0>\u0B9F;"
+"\u0BA1>\u0B9F;"
+"\u0BA2>\u0B9F;"
+"\u0BA5>\u0BA4;"
+"\u0BA6>\u0BA4;"
+"\u0BA7>\u0BA4;"
+"\u0BAB>\u0BAA;"
+"\u0BAC>\u0BAA;"
+"\u0BAD>\u0BAA;"
+"\u0BB6>\u0BB7;"
+"\u0BBC>\u0BBC;"  // <unknown> Nukta
+"\u0BBD>\u0BBD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0BC3>\u0BCD\u0BB0\u0BBF;"
+"\u0BC4>\u0BCD\u0BB0\u0BBF;"
+"\u0BC5>\u0BBE;"
+"\u0BC9>\u0BBE;"
+"\u0BD0>\u0B93\u0BAE\u0BCD;"
+"\u0BD1>\u0BD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0BD2>\u0BD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0BD3>\u0BD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0BD4>\u0BD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0BD5>\u0BD5;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0BD6>\u0BC8;"  // AI Length Mark -> Tamil Vowel Sign AI
+"\u0BD8>\u0B95;"
+"\u0BD9>\u0B95;"
+"\u0BDA>\u0B95;"
+"\u0BDB>\u0B9C;"
+"\u0BDC>\u0B9F;"
+"\u0BDD>\u0B9F;"
+"\u0BDE>\u0BAA;"
+"\u0BDF>\u0BAF;"
+"\u0BE0>\u0BB0\u0BBF;"
+"\u0BE1>\u0B88;"
+"\u0BE2>\u0BE2;"  // <unknown> Vocalic L - Devanagari (\u0962)
+"\u0BE3>\u0BE3;"  // <unknown> Vocalic LL - Devanagari (\u0963)
+"\u0BE4>\u0BE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0BE5>\u0BE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+"\u0BE6>\u0030;"  // ZERO - Digit ZERO
+
+
+
+/*****************************************************************************/
+/* Telugu                                                                    */
+/*****************************************************************************/
+
+"\u0C0D>\u0C0E;"
+"\u0C11>\u0C12;"
+"\u0C29>\u0C28;"
+"\u0C34>\u0C33;"
+"\u0C3C>\u0C3C;"  // <unknown> Nukta
+"\u0C3D>\u0C3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0C45>\u0C46;"
+"\u0C49>\u0C4A;"
+"\u0C50>\u0C13\u0C02;"
+"\u0C51>\u0C51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0C52>\u0C52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0C53>\u0C53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0C54>\u0C54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0C57>\u0C4C;"
+"\u0C58>\u0C15;"
+"\u0C59>\u0C16;"
+"\u0C5A>\u0C17;"
+"\u0C5B>\u0C1C;"
+"\u0C5C>\u0C21;"
+"\u0C5D>\u0C22;"
+"\u0C5E>\u0C2B;"
+"\u0C5F>\u0C2F;"
+"\u0C62>\u0C3F;"
+"\u0C63>\u0C40;"
+"\u0C64>\u0C64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0C65>\u0C65;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Kannada                                                                   */
+/*****************************************************************************/
+
+"\u0C81>\u0C82;"
+"\u0C8D>\u0C8E;"
+"\u0C91>\u0C92;"
+"\u0CA9>\u0CA8;"
+"\u0CB4>\u0CB3;"
+"\u0CBC>\u0CBC;"  // <unknown> Nukta
+"\u0CBD>\u0CBD;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0CC5>\u0CC6;"
+"\u0CC9>\u0CCA;"
+"\u0CD0>\u0C93\u0C82;"
+"\u0CD1>\u0CD1;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0CD2>\u0CD2;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0CD3>\u0CD3;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0CD4>\u0CD4;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0CD7>\u0CCC;"
+"\u0CD8>\u0C95;"
+"\u0CD9>\u0C96;"
+"\u0CDA>\u0C97;"
+"\u0CDB>\u0C9C;"
+"\u0CDC>\u0CA1;"
+"\u0CDD>\u0CA2;"
+"\u0CDF>\u0CAF;"
+"\u0CE2>\u0CBF;"
+"\u0CE3>\u0CC0;"
+"\u0CE4>\u0CE4;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0CE5>\u0CE5;"  // <unknown> Double Danda - Devanagari (\u0965)
+
+
+
+/*****************************************************************************/
+/* Malayalam                                                                 */
+/*****************************************************************************/
+
+"\u0D01>\u0D02;"
+"\u0D0D>\u0D06;"
+"\u0D11>\u0D13;"
+"\u0D29>\u0D28;"
+"\u0D3C>\u0D3C;"  // <unknown> Nukta
+"\u0D3D>\u0D3D;"  // <unknown> Sign Avagraha - Devanagari (\u093D)
+"\u0D44>\u0D44;"  // <unknown> Vocalic RR - Devanagari (\u0944)
+"\u0D45>\u0D3E;"
+"\u0D49>\u0D4B;"
+"\u0D50>\u0D50;"  // <unknown> OM - Devanagari (\u0950), Gujarati (\u0AD0)
+"\u0D51>\u0D51;"  // <unknown> Stress - Devanagari (\u0951)
+"\u0D52>\u0D52;"  // <unknown> Stress - Devanagari (\u0952)
+"\u0D53>\u0D53;"  // <unknown> Accent - Devanagari (\u0953)
+"\u0D54>\u0D54;"  // <unknown> Accent - Devanagari (\u0954)
+"\u0D55>\u0D55;"  // <unknown> Length Mark - Kannada (\u0CD5), Telugu (\u0C55)
+"\u0D56>\u0D48;"  // AI Length Mark -> Malayalam Vowel Sign AI
+"\u0D58>\u0D15;"
+"\u0D59>\u0D16;"
+"\u0D5A>\u0D17;"
+"\u0D5B>\u0D1C;"
+"\u0D5C>\u0D21;"
+"\u0D5D>\u0D22;"
+"\u0D5E>\u0D2B;"
+"\u0D5F>\u0D2F;"
+"\u0D62>\u0D62;"  // <unknown> Vocalic L - Devanagari (\u0962)
+"\u0D63>\u0D63;"  // <unknown> Vocalic LL - Devanagari (\u0963)
+"\u0D64>\u0D64;"  // <unknown> Danda - Devanagari (\u0964)
+"\u0D65>\u0D65;"  // <unknown> Double Danda - Devanagari (\u0965)
diff --git a/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt b/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
new file mode 100644
index 0000000..0549bbd
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
@@ -0,0 +1,26 @@
+/***********************************************************************
+* Copyright (c) 2000, International Business Machines Corporation
+* and others.  All Rights Reserved.
+************************************************************************
+* > THIS FILE WAS MACHINE GENERATED <
+* >       DO NOT EDIT BY HAND       <
+* >      RUN TOOL TO REGENERATE     <
+* Tool: $TOOL
+* Creation date: $DATE
+*/
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_$SCRIPTFROM_$SCRIPTTO extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule",
+              $RULES
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/translit/varsub.bat b/src/com/ibm/icu/dev/tool/translit/varsub.bat
new file mode 100755
index 0000000..cd342c9
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/translit/varsub.bat
@@ -0,0 +1,81 @@
+#/**
+# *******************************************************************************
+# * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+# */
+
+@rem = '--*-Perl-*--
+@echo off
+if "%OS%" == "Windows_NT" goto WinNT
+perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
+goto endofperl
+:WinNT
+perl -x -S "%0" %*
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
+if %errorlevel% == 9009 echo You do not have Perl in your PATH.
+goto endofperl
+@rem ';
+#!perl
+#line 14
+
+# Usage: perl varsub.bat [-n|-nr] <infile> <outfile>
+#
+# Substitutes variables into rules and deletes variable definition
+# statements.  Variables that expand to UnicodeSets are NOT
+# substituted.
+#
+#  -n   Afterwards, run native2ascii -encoding UTF8
+#  -nr  Afterwards, run native2ascii -encoding UTF8 -reverse
+
+$N2A = 0;
+
+$IN = shift;
+if ($IN =~ /^-n/) {
+    $N2A = 1;
+    $N2Aoption = ($IN eq '-nr') ? " -reverse " : "";
+    $IN = shift;
+}
+$OUT = shift;
+
+if (!($IN && $OUT)) {
+    die "Usage: $0 [-n|-nr] <infile> <outfile>";
+}
+
+open(IN) or die "Can't open $IN: $!";
+open(OUT, ">$OUT") or die "Can't open $OUT: $!";
+
+while (<IN>) {
+    if (/^\s*\$([a-zA-Z0-9_]+)\s*=\s*([^;\#]+)\s*;\s*(\#.*)?$/) {
+        # This looks like a variable definition
+        my ($var, $def) = ($1, $2);
+        # Don't substitute UnicodeSet vars
+        if ($def !~ /^\[/) {
+            if (exists $VAR{$var}) {
+                print STDERR "Error: Duplicate definition of $var\n";
+            } else {
+                $VAR{$var} = $def;
+            }
+            next;
+        }
+    }
+    
+    # Do variable substitutions, and output line
+    foreach my $var (keys %VAR) {
+        my $def = $VAR{$var};
+        s/\$$var\b/$def/g;
+    }
+    print OUT;
+}
+
+close(OUT);
+close(IN);
+
+if ($N2A) {
+    `native2ascii -encoding UTF8 $N2Aoption $OUT $OUT.native2ascii`;
+    unlink $OUT;
+    rename "$OUT.native2ascii", $OUT;
+}
+
+__END__
+:endofperl
diff --git a/src/com/ibm/icu/dev/tool/tzu/CLILoader.java b/src/com/ibm/icu/dev/tool/tzu/CLILoader.java
new file mode 100644
index 0000000..6c040e8
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/CLILoader.java
@@ -0,0 +1,210 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+/**
+ * Loads the ICUTZU tool, command-line version.
+ */
+public class CLILoader {
+    /**
+     * The filename of the log file in patch mode.
+     */
+    public static final String LOG_FILENAME_PATCH = "icutzu_patch.log";
+
+    /**
+     * The filename of the log file in discovery only mode.
+     */
+    public static final String LOG_FILENAME_DISCOVERYONLY = "icutzu_discovery.log";
+
+    /**
+     * The backup directory to use in patch mode, or null if there should be no backups.
+     */
+    private File backupDir = null;
+
+    /**
+     * The current directory.
+     */
+    private File curDir = null;
+
+    /**
+     * A logger that manages both output to the screen and to the log file.
+     */
+    private Logger logger;
+
+    /**
+     * The file that stores the path list.
+     */
+    private File pathFile = null;
+
+    /**
+     * A glorified list of IncludePath objects representing the list of directories used in
+     * discovery mode.
+     */
+    private PathModel pathModel;
+
+    /**
+     * The file that stores the result list.
+     */
+    private File resultFile = null;
+
+    /**
+     * A glorified list of ICUFile objects representing the ICU4J jars found in discovery mode and
+     * used in patch mode.
+     */
+    private ResultModel resultModel;
+
+    /**
+     * A glorified map of Strings to URLs populated by parsing the directory structure in the ICU
+     * Time Zone repository online and used in patch mode.
+     */
+    private SourceModel sourceModel;
+
+    /**
+     * The local timezone resource file.
+     */
+    private File tzFile = null;
+
+    /**
+     * Entry point for the command-line version of the tool.
+     * 
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            The location to store backups.
+     * @param pathFile
+     *            The file to load paths from.
+     * @param resultFile
+     *            The file to load/save results to/from.
+     * @param tzFile
+     *            The local timezone resource file.
+     */
+    public CLILoader(File curDir, File backupDir, File pathFile, File resultFile, File tzFile) {
+        // determine whether we are running in discover only mode or patch mode
+        boolean discoverOnly = "true".equalsIgnoreCase(System.getProperty("discoveronly"));
+        boolean silentPatch = "true".equalsIgnoreCase(System.getProperty("silentpatch"));
+        File logFile = new File(curDir.getPath(), (discoverOnly ? "icutzu_discover.log"
+                : "icutzu_patch.log"));
+
+        // create the logger based on the silentpatch option
+        try {
+            this.logger = Logger.getInstance(logFile, silentPatch ? Logger.QUIET : Logger.NORMAL);
+        } catch (FileNotFoundException ex) {
+            System.out.println("Could not open " + logFile.getPath() + " for writing.");
+            System.exit(-1);
+        }
+
+        this.pathFile = pathFile;
+        this.resultFile = resultFile;
+        this.tzFile = tzFile;
+        this.backupDir = backupDir;
+        this.curDir = curDir;
+
+        // if discoveryonly is enabled, call the search method
+        // otherwise, call the update method
+        try {
+            if (discoverOnly)
+                search();
+            else
+                update();
+        } catch (IllegalArgumentException ex) {
+            logger.errorln(ex.getMessage());
+        } catch (IOException ex) {
+            logger.errorln(ex.getMessage());
+        } catch (InterruptedException ex) {
+            logger.errorln(ex.getMessage());
+        }
+    }
+
+    /**
+     * Discover Only Mode. Load the path list from the path file and save the path of each updatable
+     * ICU jar files it finds to the result list
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     * @throws InterruptedException
+     */
+    private void search() throws IOException, IllegalArgumentException, InterruptedException {
+        logger.printlnToScreen("");
+        logger.printlnToScreen("*********** Command-Line \'Discover Only\'"
+                + " Mode Started ***********");
+        logger.printlnToScreen("");
+        logger.printlnToScreen("\'Discover Only\' Mode:");
+        logger.printlnToScreen("In this mode, " + "the tool will search for ICU4J jars"
+                + " in the directories specified in DirectorySearch.txt"
+                + " and print the ICU4J jars detected and their respective"
+                + " time zone version to the file ICUList.txt");
+        logger.printlnToScreen("");
+
+        // initialize the result model and the path model
+        resultModel = new ResultModel(logger, resultFile);
+        pathModel = new PathModel(logger, pathFile);
+
+        // load paths stored in PathModel.PATHLIST_FILENAME
+        pathModel.loadPaths();
+
+        // perform the search, putting the the results in the result model,
+        // searching all subdirectories of the included path, using the backup
+        // directory specified, and without using a status bar (since this is
+        // command-line)
+        logger.printlnToScreen("");
+        logger.printlnToScreen("Search started.");
+        pathModel.searchAll(resultModel, true, curDir, backupDir);
+        logger.printlnToScreen("Search ended.");
+        logger.printlnToScreen("");
+
+        // save the results in PathModel.RESULTLIST_FILENAME
+        resultModel.saveResults();
+
+        logger.printlnToScreen("");
+        logger.printlnToScreen("Please run with DISCOVERYONLY=false"
+                + " in order to update ICU4J jars listed in ICUList.txt");
+        logger.printlnToScreen("*********** Command-Line \'Discover Only\'"
+                + " Mode Ended ***********");
+        logger.printlnToScreen("");
+    }
+
+    /**
+     * Patch Mode. Load all the results from resultFile, populate the tz version list via the web,
+     * and update all the results with the best available Time Zone data.
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     * @throws InterruptedException
+     */
+    private void update() throws IOException, IllegalArgumentException, InterruptedException {
+        logger.printlnToScreen("");
+        logger.printlnToScreen("*********** Command-Line \'Patch\'" + " Mode Started ***********");
+        logger.printlnToScreen("");
+        logger.printlnToScreen("\'Patch\' Mode:");
+        logger.printlnToScreen("In this mode, the tool patches each of the"
+                + " ICU4J jars listed in ICUList.txt with the new time zone" + " information.");
+        logger.printlnToScreen("");
+
+        // initialize the result model and the source model
+        resultModel = new ResultModel(logger, resultFile);
+        sourceModel = new SourceModel(logger, tzFile);
+
+        // load the results from the result list file
+        resultModel.loadResults();
+
+        // if the offline is not set to true, populate the list of available
+        // timezone resource versions
+        if (!"true".equalsIgnoreCase(System.getProperty("offline")))
+            sourceModel.findSources();
+
+        // perform the updates using the best tz version available
+        resultModel.updateAll(sourceModel.getURL(sourceModel.getSelectedItem()), backupDir);
+
+        logger.printlnToScreen("");
+        logger.printlnToScreen("*********** Command-Line \'Patch\'" + " Mode Ended ***********");
+        logger.printlnToScreen("");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/DirectorySearch.txt b/src/com/ibm/icu/dev/tool/tzu/DirectorySearch.txt
new file mode 100644
index 0000000..7d8f12d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/DirectorySearch.txt
@@ -0,0 +1,33 @@
+﻿# *******************************************************************************
+# * Copyright (C) 2007, International Business Machines Corporation and         *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+#
+# This file contains the list of directories in the file system that ICUTZU will
+# use to search for updatable icu4j jar files. It must be saved in UTF-8 (with
+# or without the BOM).
+#
+# To include all roots of the file system (ie. 'c:\', 'd:\', 'e:\', etc. in Windows
+# or '/' in Unix-based systems), insert the following:
+#   all
+#
+# To include a directory in the search or to directly include a specific icu4j file,
+# insert the directory in the native format with a leading '+'. For example in Windows:
+#   +C:\ICU4J
+#   +C:\ICU4J\icu4j.jar
+# Or in Unix-based systems:
+#   +/usr/icu4j
+#   +/usr/icu4j/icu4j.jar
+#
+# To exclude a directory or file from the search, do the same as above but with a
+# leading '-' instead:
+#   -C:\ICU4J
+#   -/usr/icu4j
+
+all
+
+# If you are not using a Unix-based platform, the following lines should be removed:
+
+-/proc
+-/dev
+-/sys
diff --git a/src/com/ibm/icu/dev/tool/tzu/GUILoader.java b/src/com/ibm/icu/dev/tool/tzu/GUILoader.java
new file mode 100644
index 0000000..a11c24a
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/GUILoader.java
@@ -0,0 +1,411 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.awt.Image;
+import java.awt.Toolkit;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.WindowConstants;
+
+/**
+ * Loads the ICUTZU tool, GUI version.
+ */
+public class GUILoader {
+    /**
+     * The title for the application.
+     */
+    public static final String TITLE = "ICU4J Time Zone Update Utility (ICUTZU)";
+
+    /**
+     * The backup directory to store files.
+     */
+    private File backupDir;
+
+    /**
+     * The tool's home directory.
+     */
+    private File curDir;
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * Whether the paths frame has been closed or not.
+     */
+    private boolean pathClosed = false;
+
+    /**
+     * The frame that displays the path model component (<code>pathGUI</code>).
+     */
+    private JFrame pathFrame;
+
+    /**
+     * The component that allows the user to interact with the path model.
+     */
+    private PathComponent pathGUI;
+
+    /**
+     * The path model that stores all the paths and takes care of searching.
+     */
+    private PathModel pathModel;
+
+    /**
+     * Whether the results frame has been closed or not.
+     */
+    private boolean resultClosed = true;
+
+    /**
+     * The frame that displays the result model component (<code>resultGUI</code>).
+     */
+    private JFrame resultFrame;
+
+    /**
+     * The component that allows the user to interact with the result model.
+     */
+    private ResultComponent resultGUI;
+
+    /**
+     * The result model that stores all the results and takes care of updating.
+     */
+    private ResultModel resultModel;
+
+    /**
+     * The source model that stores all the update sources and accesses the repository for more
+     * sources.
+     */
+    private SourceModel sourceModel;
+
+    /**
+     * The thread that partakes in the searching and updating.
+     */
+    private Thread workerThread = null;
+
+    /**
+     * Entry point for the GUI version of the tool.
+     * 
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            The location to store backups.
+     * @param pathFile
+     *            The file to load paths from.
+     * @param resultFile
+     *            The file to load/save results to/from.
+     * @param tzFile
+     *            The local timezone resource file.
+     * @param iconFile
+     *            The icon file.
+     */
+    public GUILoader(File curDir, File backupDir, File pathFile, File resultFile, File tzFile,
+            File iconFile) {
+        // set the backup dir
+        this.backupDir = backupDir;
+        this.curDir = curDir;
+
+        // get the icon
+        Image icon = Toolkit.getDefaultToolkit().getImage(iconFile.getAbsolutePath());
+
+        // initialize the path list gui
+        pathGUI = new PathComponent(this);
+        pathFrame = new JFrame(TITLE + " - Directories to Search");
+        pathFrame.getContentPane().add(pathGUI);
+        pathFrame.pack();
+        pathFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
+        pathFrame.setIconImage(icon);
+        pathFrame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent event) {
+                if (resultClosed)
+                    System.exit(0);
+                pathClosed = true;
+            }
+        });
+
+        // initialize the result list gui
+        resultGUI = new ResultComponent(this);
+        resultFrame = new JFrame(TITLE + " - ICU4J Jar Files to Update");
+        resultFrame.getContentPane().add(resultGUI);
+        resultFrame.pack();
+        resultFrame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
+        resultFrame.setIconImage(icon);
+        resultFrame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent event) {
+                if (pathClosed)
+                    System.exit(0);
+                resultClosed = true;
+                makeThreadDead();
+            }
+        });
+
+        // get the logger instance
+        try {
+            File logFile = new File(curDir.getPath(), "icutzugui.log");
+            logger = Logger.getInstance(logFile, Logger.NORMAL, resultGUI, pathFrame);
+        } catch (FileNotFoundException ex) {
+            String error = "Could not open " + Logger.DEFAULT_FILENAME + " for writing.";
+            System.out.println(error);
+            JOptionPane.showMessageDialog(null, error, TITLE, JOptionPane.ERROR_MESSAGE);
+            System.exit(-1);
+        }
+
+        // initialize the models
+        resultModel = new ResultModel(logger, resultFile);
+        pathModel = new PathModel(logger, pathFile);
+        sourceModel = new SourceModel(logger, tzFile);
+
+        // attach the models to the guis
+        resultGUI.setResultModel(resultModel);
+        pathGUI.setPathModel(pathModel);
+        resultGUI.setSourceModel(sourceModel);
+
+        // load all the paths into the path model
+        try {
+            // do it quietly
+            int verb = logger.getVerbosity();
+            logger.setVerbosity(Logger.QUIET);
+            pathModel.loadPaths();
+            logger.setVerbosity(verb);
+        } catch (IOException ex) {
+            // failed to load the directory search file
+            pathModel.addAllDrives();
+        } catch (IllegalArgumentException ex) {
+            // failed to load the directory search file
+            pathModel.addAllDrives();
+        }
+
+        // if the offline is not set to true, populate the list of available
+        // timezone resource versions
+        if (!"true".equalsIgnoreCase(System.getProperty("offline")))
+            sourceModel.findSources();
+
+        // make sure that search and update cancelation is disabled (since we
+        // are initially neither updating nor searching, so there is nothing to
+        // cancel)
+        setCancelSearchEnabled(false);
+        setCancelUpdateEnabled(false);
+
+        // show the path list gui
+        pathFrame.setVisible(true);
+    }
+
+    /**
+     * Cancels a search.
+     */
+    public void cancelSearch() {
+        makeThreadDead();
+    }
+
+    /**
+     * Cancels an update.
+     */
+    public void cancelUpdate() {
+        makeThreadDead();
+    }
+
+    /**
+     * Searchs the selected paths in the path model.
+     * 
+     * @param indices
+     *            Which paths in the path models to be used in the search.
+     * @param subdirs
+     *            Whether to search subdirectories.
+     */
+    public void search(final int[] indices, final boolean subdirs) {
+        makeThreadDead();
+
+        workerThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    logger.printlnToBoth("Search started ...");
+                    setCancelSearchEnabled(true);
+                    setUpdateEnabled(false);
+                    setSearchEnabled(false);
+                    resultFrame.setVisible(true);
+                    resultClosed = false;
+                    pathModel.search(resultModel, indices, subdirs, curDir, backupDir);
+                    logger.printlnToBoth("Search ended.");
+                } catch (InterruptedException ex) {
+                    logger.printlnToBoth("Search interrupted.");
+                }
+                setSearchEnabled(true);
+                setUpdateEnabled(true);
+                setCancelSearchEnabled(false);
+            }
+        });
+
+        workerThread.start();
+    }
+
+    /**
+     * Searchs all the paths in the path model.
+     * 
+     * @param subdirs
+     *            Whether to search subdirectories.
+     */
+    public void searchAll(final boolean subdirs) {
+        makeThreadDead();
+
+        workerThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    logger.printlnToBoth("Search started ...");
+                    setCancelSearchEnabled(true);
+                    setUpdateEnabled(false);
+                    setSearchEnabled(false);
+                    resultFrame.setVisible(true);
+                    resultClosed = false;
+                    pathModel.searchAll(resultModel, subdirs, curDir, backupDir);
+                    logger.printlnToBoth("Search ended.");
+                } catch (InterruptedException ex) {
+                    logger.printlnToBoth("Search interrupted.");
+                }
+                setSearchEnabled(true);
+                setUpdateEnabled(true);
+                setCancelSearchEnabled(false);
+            }
+        });
+
+        workerThread.start();
+    }
+
+    /**
+     * Updates the selected results in the result model.
+     * 
+     * @param indices
+     *            Which ICU4J jars in the result model to be used in the update.
+     * @param updateURL
+     *            The URL to use as the update for each ICU4J jar.
+     */
+    public void update(final int[] indices, final URL updateURL) {
+        makeThreadDead();
+
+        workerThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    logger.printlnToBoth("Update started ...");
+                    setCancelUpdateEnabled(true);
+                    setUpdateEnabled(false);
+                    setSearchEnabled(false);
+                    resultModel.update(indices, updateURL, backupDir);
+                    logger.printlnToBoth("Update ended.");
+                } catch (InterruptedException ex) {
+                    // we want to know what was last being updated, so do not
+                    // change the status bar message
+                    // try {
+                    // logger.setStatus("Update interrupted.");
+                    // } catch (InterruptedException e) {
+                    // // once is enough
+                    // }
+                }
+                setUpdateEnabled(true);
+                setSearchEnabled(true);
+                setCancelUpdateEnabled(false);
+            }
+        });
+
+        workerThread.start();
+    }
+
+    /**
+     * Updates all the results in the result model.
+     * 
+     * @param updateURL
+     *            The URL to use as the update for each ICU4J jar.
+     */
+    public void updateAll(final URL updateURL) {
+        makeThreadDead();
+
+        workerThread = new Thread(new Runnable() {
+            public void run() {
+                try {
+                    logger.printlnToBoth("Update started ...");
+                    setCancelUpdateEnabled(true);
+                    setUpdateEnabled(false);
+                    setSearchEnabled(false);
+                    resultModel.updateAll(updateURL, backupDir);
+                    logger.printlnToBoth("Update ended.");
+                } catch (InterruptedException ex) {
+                    // we want to know what was last being updated, so do not
+                    // change the status bar message
+                    // try {
+                    // logger.setStatus("Update interrupted.");
+                    // } catch (InterruptedException e) {
+                    // // once is enough
+                    // }
+                }
+                setUpdateEnabled(true);
+                setSearchEnabled(true);
+                setCancelUpdateEnabled(false);
+            }
+        });
+
+        workerThread.start();
+    }
+
+    /**
+     * Interrupts the worker thread and waits for it to finish.
+     */
+    private void makeThreadDead() {
+        if (workerThread != null)
+            try {
+                workerThread.interrupt();
+                workerThread.join();
+            } catch (Exception ex) {
+                // do nothing -- if an exception was thrown, the worker thread
+                // must have already been dead, which is perfectly fine
+            }
+    }
+
+    /**
+     * Sets whether the cancel search button should be enabled.
+     * 
+     * @param value
+     *            Whether the cancel search button should be enabled.
+     */
+    private void setCancelSearchEnabled(boolean value) {
+        resultGUI.setCancelSearchEnabled(value);
+    }
+
+    /**
+     * Sets whether the cancel update button should be enabled.
+     * 
+     * @param value
+     *            Whether the cancel update button should be enabled.
+     */
+    private void setCancelUpdateEnabled(boolean value) {
+        resultGUI.setCancelUpdateEnabled(value);
+    }
+
+    /**
+     * Sets whether the search button should be enabled.
+     * 
+     * @param value
+     *            Whether the search button should be enabled.
+     */
+    private void setSearchEnabled(boolean value) {
+        pathGUI.setSearchEnabled(value);
+    }
+
+    /**
+     * Sets whether the update button should be enabled.
+     * 
+     * @param value
+     *            Whether the update button should be enabled.
+     */
+    private void setUpdateEnabled(boolean value) {
+        resultGUI.setUpdateEnabled(value);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ICUFile.java b/src/com/ibm/icu/dev/tool/tzu/ICUFile.java
new file mode 100644
index 0000000..52b3015
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ICUFile.java
@@ -0,0 +1,924 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.URLConnection;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.jar.Attributes;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+
+/**
+ * A class that represents an updatable ICU4J jar file. A file is an updatable ICU4J jar file if it
+ * <ul>
+ * <li>exists</li>
+ * <li>is a file (ie. not a directory)</li>
+ * <li>does not end with .ear or .war (these file types are unsupported)</li>
+ * <li>ends with .jar</li>
+ * <li>is updatable according the <code>isUpdatable</code></li>
+ * <li>is not signed.</li>
+ * </ul>
+ */
+public class ICUFile {
+    /**
+     * ICU version to use if one cannot be found.
+     */
+    public static final String ICU_VERSION_UNKNOWN = "Unknown";
+
+    /**
+     * A directory entry that is found in every updatable ICU4J jar file.
+     */
+    public static final String TZ_ENTRY_DIR = "com/ibm/icu/impl";
+
+    /**
+     * The timezone resource filename.
+     */
+    public static final String TZ_ENTRY_FILENAME = "zoneinfo.res";
+
+    /**
+     * The metazone resource filename.
+     */
+    private static final String MZ_ENTRY_FILENAME = "metazoneInfo.res";
+
+    /**
+     * Key to use when getting the version of a timezone resource.
+     */
+    public static final String TZ_VERSION_KEY = "TZVersion";
+
+    /**
+     * Timezone version to use if one cannot be found.
+     */
+    public static final String TZ_VERSION_UNKNOWN = "Unknown";
+
+    /**
+     * Jar entry path where some files are duplicated. This is an issue with icu4j 3.8.0.
+     */
+    public static final String DUPLICATE_ENTRY_PATH = "com/ibm/icu/impl/duration/impl/data";
+
+    /**
+     * The buffer size to use for copying data.
+     */
+    private static final int BUFFER_SIZE = 1024;
+
+    /**
+     * A map that caches links from URLs to time zone data to their downloaded File counterparts.
+     */
+    private static final Map cacheMap = new HashMap();
+
+    /**
+     * Determines the version of a timezone resource as a standard file without locking the file.
+     * 
+     * @param tzFile
+     *            The file representing the timezone resource.
+     * @param logger
+     *            The current logger.
+     * @return The version of the timezone resource.
+     */
+    public static String findFileTZVersion(File tzFile, Logger logger) {
+        ICUFile rawTZFile = new ICUFile(logger);
+
+        try {
+            File temp = File.createTempFile("zoneinfo", ".res");
+            temp.deleteOnExit();
+            rawTZFile.copyFile(tzFile, temp);
+            return findTZVersion(temp, logger);
+        } catch (IOException ex) {
+            logger.errorln(ex.getMessage());
+            return null;
+        }
+    }
+
+    /**
+     * Determines the version of a timezone resource as a standard file, but locks the file for the
+     * duration of the program.
+     * 
+     * @param tzFile
+     *            The file representing the timezone resource.
+     * @param logger
+     *            The current logger.
+     * @return The version of the timezone resource.
+     */
+    private static String findTZVersion(File tzFile, Logger logger) {
+        try {
+            String filename = tzFile.getName();
+            String entryname = filename.substring(0, filename.length() - ".res".length());
+
+            URL url = new URL(tzFile.getAbsoluteFile().getParentFile().toURL().toString());
+            ClassLoader loader = new URLClassLoader(new URL[] { url });
+
+            // UResourceBundle bundle = UResourceBundle.getBundleInstance("",
+            // entryname, loader);
+
+            URL bundleURL = new URL(new File("icu4j.jar").toURL().toString());
+            URLClassLoader bundleLoader = new URLClassLoader(new URL[] { bundleURL });
+            Class bundleClass = bundleLoader.loadClass("com.ibm.icu.util.UResourceBundle");
+            Method bundleGetInstance = bundleClass.getMethod("getBundleInstance", new Class[] {
+                    String.class, String.class, ClassLoader.class });
+            Object bundle = bundleGetInstance.invoke(null, new Object[] { "", entryname, loader });
+
+            if (bundle != null) {
+                Method bundleGetString = bundleClass.getMethod("getString",
+                        new Class[] { String.class });
+                String tzVersion = (String) bundleGetString.invoke(bundle,
+                        new Object[] { TZ_VERSION_KEY });
+                if (tzVersion != null)
+                    return tzVersion;
+            }
+        } catch (MalformedURLException ex) {
+            // this should never happen
+            logger.errorln("Internal program error.");
+            logger.logStackTraceToBoth(ex);
+        } catch (ClassNotFoundException ex) {
+            // this would most likely happen when UResourceBundle cannot be
+            // resolved, which is when icu4j.jar is not where it should be
+            logger.errorln("icu4j.jar not found");
+            logger.logStackTraceToBoth(ex);
+        } catch (NoSuchMethodException ex) {
+            // this can only be caused by a very unlikely scenario
+            logger.errorln("icu4j.jar not correct");
+            logger.logStackTraceToBoth(ex);
+        } catch (IllegalAccessException ex) {
+            // this can only be caused by a very unlikely scenario
+            logger.errorln("icu4j.jar not correct");
+            logger.logStackTraceToBoth(ex);
+        } catch (InvocationTargetException ex) {
+            // if this is holding a MissingResourceException, then this is not
+            // an error -- some zoneinfo files are missing version numbers
+            if (!(ex.getTargetException() instanceof MissingResourceException)) {
+                logger.errorln("icu4j.jar not correct");
+                logger.logStackTraceToBoth(ex);
+            }
+        }
+
+        return TZ_VERSION_UNKNOWN;
+    }
+
+    /**
+     * Finds the jar entry in the jar file that represents a timezone resource and returns it, or
+     * null if none is found.
+     * 
+     * @param jar       The jar file to search.
+     * @param entryName The target entry name
+     *              
+     * @return The jar entry representing the timezone resource in the jar file, or null if none is
+     *         found.
+     */
+    private static JarEntry getTZEntry(JarFile jar, String entryName) {
+        JarEntry tzEntry = null;
+        Enumeration e = jar.entries();
+        while (e.hasMoreElements()) {
+            tzEntry = (JarEntry) e.nextElement();
+            if (tzEntry.getName().endsWith(entryName))
+                return tzEntry;
+        }
+        return null;
+    }
+
+    /**
+     * The ICU4J jar file represented by this ICUFile.
+     */
+    private File icuFile;
+
+    /**
+     * The ICU version of the ICU4J jar.
+     */
+    private String icuVersion;
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * The entry for the timezone resource inside the ICU4J jar.
+     */
+    private JarEntry tzEntry;
+
+    /**
+     * The entry for the metazone resource inside the ICU4J jar.
+     */
+    private JarEntry mzEntry;
+
+    /**
+     * The version of the timezone resource inside the ICU4J jar.
+     */
+    private String tzVersion;
+
+    /**
+     * Constructs an ICUFile around a file. See <code>initialize</code> for details.
+     * 
+     * @param file
+     *            The file to wrap this ICUFile around.
+     * @param logger
+     *            The current logger.
+     * @throws IOException
+     */
+    public ICUFile(File file, Logger logger) throws IOException {
+        initialize(file, logger);
+    }
+
+    /**
+     * Constructs an ICUFile around a file. See <code>initialize</code> for details.
+     * 
+     * @param filename
+     *            The file to wrap this ICUFile around.
+     * @param logger
+     *            The current logger.
+     * @throws IOException
+     */
+    public ICUFile(String filename, Logger logger) throws IOException {
+        if (filename == null || filename.trim().length() == 0)
+            throw new IOException("cannot be blank");
+
+        initialize(new File(filename), logger);
+    }
+
+    /**
+     * Constructs a blank ICUFile. Used internally for timezone resource files that are not
+     * contained within a jar.
+     * 
+     * @param logger
+     *            The current logger.
+     */
+    private ICUFile(Logger logger) {
+        this.logger = logger;
+    }
+
+    /**
+     * Compares two ICUFiles by the file they represent.
+     * 
+     * @param other
+     *            The other ICUFile to compare to.
+     * @return Whether the files represented by the two ICUFiles are equal.
+     */
+    public boolean equals(Object other) {
+        return (!(other instanceof ICUFile)) ? false : icuFile.getAbsoluteFile().equals(
+                ((ICUFile) other).icuFile.getAbsoluteFile());
+    }
+
+    /**
+     * Determines the version of a timezone resource in a jar file without locking the jar file.
+     * 
+     * @return The version of the timezone resource.
+     */
+    public String findEntryTZVersion() {
+        try {
+            File temp = File.createTempFile("zoneinfo", ".res");
+            temp.deleteOnExit();
+            copyEntry(icuFile, tzEntry, temp);
+            return findTZVersion(temp, logger);
+        } catch (IOException ex) {
+            logger.errorln(ex.getMessage());
+            return null;
+        }
+    }
+
+    /**
+     * Returns the File object represented by this ICUFile object.
+     * 
+     * @return The File object represented by this ICUFile object.
+     */
+    public File getFile() {
+        return icuFile;
+    }
+
+    /**
+     * Returns the filename of this ICUFile object, without the path.
+     * 
+     * @return The filename of this ICUFile object, without the path.
+     */
+    public String getFilename() {
+        return icuFile.getName();
+    }
+
+    /**
+     * Returns the ICU version of this ICU4J jar.
+     * 
+     * @return The ICU version of this ICU4J jar.
+     */
+    public String getICUVersion() {
+        return icuVersion;
+    }
+
+    /**
+     * Returns the path of this ICUFile object, without the filename.
+     * 
+     * @return The path of this ICUFile object, without the filename.
+     */
+    public String getPath() {
+        return icuFile.getAbsoluteFile().getParent();
+    }
+
+    // public static String findURLTZVersion(File tzFile) {
+    // try {
+    // File temp = File.createTempFile("zoneinfo", ".res");
+    // temp.deleteOnExit();
+    // copyFile(tzFile, temp);
+    // return findTZVersion(temp);
+    // } catch (IOException ex) {
+    // ex.printStackTrace();
+    // return null;
+    // }
+    // }
+
+    /**
+     * Returns the timezone resource version.
+     * 
+     * @return The timezone resource version.
+     */
+    public String getTZVersion() {
+        return tzVersion;
+    }
+
+    /**
+     * Returns the result of getFile().toString().
+     * 
+     * @return The result of getFile().toString().
+     */
+    public String toString() {
+        return getFile().toString();
+    }
+
+    /**
+     * Updates the timezone resource in this ICUFile using <code>insertURL</code> as the source of
+     * the new timezone resource and the backup directory <code>backupDir</code> to store a copy
+     * of the ICUFile.
+     * 
+     * @param insertURL
+     *            The url location of the timezone resource to use.
+     * @param backupDir
+     *            The directory to store a backup for this ICUFile, or null if no backup.
+     * @throws IOException
+     * @throws InterruptedException
+     */
+    public void update(URL insertURL, File backupDir) throws IOException, InterruptedException {
+        String message = "Updating " + icuFile.getPath() + " ...";
+        logger.printlnToBoth("");
+        logger.printlnToBoth(message);
+
+        if (!icuFile.canRead() || !icuFile.canWrite())
+            throw new IOException("Missing permissions for " + icuFile.getPath());
+
+        JarEntry[] jarEntries = new JarEntry[2];
+        URL[] insertURLs = new URL[2];
+
+        jarEntries[0] = tzEntry;
+        insertURLs[0] = getCachedURL(insertURL);
+
+        if (insertURLs[0] == null)
+            throw new IOException(
+                    "Could not download the Time Zone data, skipping update for this jar.");
+
+        // Check if metazoneInfo.res is available
+        String tzURLStr = insertURL.toString();
+        int lastSlashIdx = tzURLStr.lastIndexOf('/');
+        if (lastSlashIdx >= 0) {
+            String mzURLStr = tzURLStr.substring(0, lastSlashIdx + 1) + MZ_ENTRY_FILENAME;
+            insertURLs[1] = getCachedURL(new URL(mzURLStr));
+            if (insertURLs[1] != null) {
+                jarEntries[1] = mzEntry;
+            }
+        }
+
+        File backupFile = null;
+        if ((backupFile = createBackupFile(icuFile, backupDir)) == null)
+            throw new IOException(
+                    "Could not create an empty backup file (the original jar file remains unchanged).");
+        if (!copyFile(icuFile, backupFile))
+            throw new IOException(
+                    "Could not copy the original jar file to the backup location (the original jar file remains unchanged).");
+        logger.printlnToBoth("Backup location: " + backupFile.getPath());
+        if (!createUpdatedJar(backupFile, icuFile, jarEntries, insertURLs))
+            throw new IOException(
+                    "Could not create an updated jar file at the original location (the original jar file is at the backup location).");
+
+        // get the new timezone resource version
+        tzVersion = findEntryTZVersion();
+
+        message = "Successfully updated " + icuFile.getPath();
+        logger.printlnToBoth(message);
+    }
+
+    /**
+     * Copies the jar entry <code>insertEntry</code> in <code>inputFile</code> to
+     * <code>outputFile</code>.
+     * 
+     * @param inputFile
+     *            The jar file containing <code>insertEntry</code>.
+     * @param inputEntry
+     *            The entry to copy.
+     * @param outputFile
+     *            The output file.
+     * @return Whether the operation was successful.
+     */
+    private boolean copyEntry(File inputFile, JarEntry inputEntry, File outputFile) {
+        logger.loglnToBoth("Copying from " + inputFile + "!/" + inputEntry + " to " + outputFile
+                + ".");
+        JarFile jar = null;
+        InputStream istream = null;
+        OutputStream ostream = null;
+        byte[] buffer = new byte[BUFFER_SIZE];
+        int bytesRead;
+        boolean success = false;
+
+        try {
+            jar = new JarFile(inputFile);
+            istream = jar.getInputStream(inputEntry);
+            ostream = new FileOutputStream(outputFile);
+
+            while ((bytesRead = istream.read(buffer)) != -1)
+                ostream.write(buffer, 0, bytesRead);
+
+            success = true;
+            logger.loglnToBoth("Copy successful.");
+        } catch (IOException ex) {
+            outputFile.delete();
+            logger.loglnToBoth("Copy failed.");
+            logger.logStackTraceToBoth(ex);
+        } finally {
+            // safely close the streams
+            tryClose(jar);
+            tryClose(istream);
+            tryClose(ostream);
+        }
+        return success;
+    }
+
+    /**
+     * Copies <code>inputFile</code> to <code>outputFile</code>.
+     * 
+     * @param inputFile
+     *            The input file.
+     * @param outputFile
+     *            The output file.
+     * @return Whether the operation was successful.
+     */
+    private boolean copyFile(File inputFile, File outputFile) {
+        logger.loglnToBoth("Copying from " + inputFile + " to " + outputFile + ".");
+        InputStream istream = null;
+        OutputStream ostream = null;
+        byte[] buffer = new byte[BUFFER_SIZE];
+        int bytesRead;
+        boolean success = false;
+
+        try {
+            istream = new FileInputStream(inputFile);
+            ostream = new FileOutputStream(outputFile);
+
+            while ((bytesRead = istream.read(buffer)) != -1)
+                ostream.write(buffer, 0, bytesRead);
+
+            success = true;
+            logger.loglnToBoth("Copy successful.");
+        } catch (IOException ex) {
+            outputFile.delete();
+            logger.loglnToBoth("Copy failed.");
+            logger.logStackTraceToBoth(ex);
+        } finally {
+            // safely close the streams
+            tryClose(istream);
+            tryClose(ostream);
+        }
+        return success;
+    }
+
+    /**
+     * Creates a temporary file for the jar file <code>inputFile</code> under the directory
+     * <code>backupBase</code> and returns it, or returns null if a temporary file could not be
+     * created. Does not put any data in the newly created file yet.
+     * 
+     * @param inputFile
+     *            The file to backup.
+     * @param backupBase
+     *            The directory where backups are to be stored.
+     * @return The temporary file that was created.
+     */
+    private File createBackupFile(File inputFile, File backupBase) {
+        logger.loglnToBoth("Creating backup file for " + inputFile + " at " + backupBase + ".");
+        String filename = inputFile.getName();
+        String suffix = ".jar";
+        String prefix = filename.substring(0, filename.length() - suffix.length());
+
+        if (backupBase == null) {
+            try {
+                // no backup directory means we need to create a temporary file
+                // that will be deleted on exit
+                File backupFile = File.createTempFile(prefix + "~", suffix);
+                backupFile.deleteOnExit();
+                return backupFile;
+            } catch (IOException ex) {
+                return null;
+            }
+        }
+
+        File backupFile = null;
+        File backupDesc = null;
+        File backupDir = new File(backupBase.getPath(), prefix);
+        PrintStream ostream = null;
+
+        try {
+            backupBase.mkdir();
+            backupDir.mkdir();
+            backupFile = File.createTempFile(prefix + "~", suffix, backupDir);
+            backupDesc = new File(backupDir.getPath(), backupFile.getName().substring(0,
+                    backupFile.getName().length() - suffix.length())
+                    + ".txt");
+            backupDesc.createNewFile();
+            ostream = new PrintStream(new FileOutputStream(backupDesc));
+            ostream.println(inputFile.getPath());
+            logger.loglnToBoth("Successfully created backup file at " + backupFile + ".");
+        } catch (IOException ex) {
+            logger.loglnToBoth("Failed to create backup file.");
+            logger.logStackTraceToBoth(ex);
+            if (backupFile != null)
+                backupFile.delete();
+            if (backupDesc != null)
+                backupDesc.delete();
+            backupDir.delete();
+            backupFile = null;
+        } finally {
+            tryClose(ostream);
+        }
+
+        return backupFile;
+    }
+
+    /**
+     * Copies <code>inputFile</code> to <code>outputFile</code>, replacing
+     * <code>insertEntry</code> with <code>inputURL</code>.
+     * 
+     * @param inputFile
+     *            The input jar file.
+     * @param outputFile
+     *            The output jar file.
+     * @param insertEntry
+     *            The entry to be replaced.
+     * @param inputURL
+     *            The URL to use in replacing the entry.
+     * @return Whether the operation was successful.
+     */
+    private boolean createUpdatedJar(File inputFile, File outputFile, JarEntry[] insertEntries,
+            URL[] inputURLs) {
+        logger.loglnToBoth("Copying " + inputFile + " to " + outputFile + ",");
+        for (int i = 0; i < insertEntries.length; i++) {
+            if (insertEntries[i] != null) {
+                logger.loglnToBoth("    replacing " + insertEntries[i] + " with " + inputURLs[i]);
+            }
+        }
+
+        JarFile jar = null;
+        JarOutputStream ostream = null;
+        InputStream istream = null;
+        InputStream jstream = null;
+        byte[] buffer = new byte[BUFFER_SIZE];
+        int bytesRead;
+        boolean success = false;
+        Set possibleDuplicates = new HashSet();
+
+        try {
+            jar = new JarFile(inputFile);
+            ostream = new JarOutputStream(new FileOutputStream(outputFile));
+
+            Enumeration e = jar.entries();
+            while (e.hasMoreElements()) {
+                JarEntry currentEntry = (JarEntry) e.nextElement();
+                String entryName = currentEntry.getName();
+                if (entryName.startsWith(DUPLICATE_ENTRY_PATH)) {
+                    if (!possibleDuplicates.contains(entryName)) {
+                        possibleDuplicates.add(entryName);
+                    } else {
+                        // ruh roh, we have a duplicate entry!
+                        // (just ignore it and continue)
+                        logger.printlnToBoth("Warning: Duplicate " + entryName
+                                + " found. Ignoring the duplicate.");
+                        continue;
+                    }
+                }
+
+                boolean isReplaced = false;
+                for (int i = 0; i < insertEntries.length; i++) {
+                    if (insertEntries[i] != null) {
+                        if (entryName.equals(insertEntries[i].getName())) {
+                            // if the current entry *is* the one that needs updating write a new entry based
+                            // on the input stream (from the URL)
+                            // currentEntry.setTime(System.currentTimeMillis());
+                            ostream.putNextEntry(new JarEntry(entryName));
+
+                            URLConnection con = inputURLs[i].openConnection();
+                            con.setRequestProperty("user-agent", System.getProperty("http.agent"));
+                            istream = con.getInputStream();
+
+                            while ((bytesRead = istream.read(buffer)) != -1) {
+                                ostream.write(buffer, 0, bytesRead);
+                            }
+                            istream.close();
+                            isReplaced = true;
+                            break;
+                        }
+                    }
+                }
+                if (!isReplaced) {
+                    // if the current entry isn't the one that needs updating write a copy of the
+                    // old entry from the old file
+                    ostream.putNextEntry(new JarEntry(entryName));
+
+                    jstream = jar.getInputStream(currentEntry);
+                    while ((bytesRead = jstream.read(buffer)) != -1)
+                        ostream.write(buffer, 0, bytesRead);
+                    jstream.close();
+                }
+            }
+
+            success = true;
+            logger.loglnToBoth("Copy successful.");
+        } catch (IOException ex) {
+            outputFile.delete();
+            logger.loglnToBoth("Copy failed:");
+            logger.logStackTraceToBoth(ex);
+        } finally {
+            // safely close the streams
+            tryClose(istream);
+            tryClose(ostream);
+            tryClose(jstream);
+            tryClose(jar);
+        }
+        return success;
+    }
+
+    /**
+     * Performs the shared work of the constructors. Throws an IOException if <code>file</code>...
+     * <ul>
+     * <li>does not exist</li>
+     * <li>is not a file</li>
+     * <li>ends with .ear or .war (these file types are unsupported)</li>
+     * <li>does not end with .jar</li>
+     * <li>is not updatable according the <code>isUpdatable</code></li>
+     * <li>is signed.</li>
+     * </ul>
+     * If an exception is not thrown, the ICUFile is fully initialized.
+     * 
+     * @param file
+     *            The file to wrap this ICUFile around.
+     * @param logger
+     *            The current logger.
+     * @throws IOException
+     */
+    private void initialize(File file, Logger log) throws IOException {
+        this.icuFile = file;
+        this.logger = log;
+        String message = null;
+
+        if (!file.exists()) {
+            message = "Skipped " + file.getPath() + " (does not exist).";
+        } else if (!file.isFile()) {
+            message = "Skipped " + file.getPath() + " (not a file).";
+        } else if (file.getName().endsWith(".ear") || file.getName().endsWith(".war")) {
+            message = "Skipped " + file.getPath()
+                    + " (this tool does not support .ear and .war files).";
+            logger.loglnToBoth(message);
+        } else if (!file.canRead() || !file.canWrite()) {
+            message = "Skipped " + file.getPath() + " (missing permissions).";
+        } else if (!file.getName().endsWith(".jar")) {
+            message = "Skipped " + file.getPath() + " (not a jar file).";
+        } else if (!isUpdatable()) {
+            message = "Skipped " + file.getPath() + " (not an updatable ICU4J jar).";
+        } else if (isSigned()) {
+            message = "Skipped " + file.getPath() + " (cannot update signed jars).";
+            logger.loglnToBoth(message);
+        } else if (isEclipseFragment()) {
+            message = "Skipped " + file.getPath()
+                    + " (eclipse fragments must be updated through ICU).";
+            logger.loglnToBoth(message);
+        }
+
+        if (message != null)
+            throw new IOException(message);
+
+        tzVersion = findEntryTZVersion();
+    }
+
+    /**
+     * Determines whether the current jar is an Eclipse Data Fragment.
+     * 
+     * @return Whether the current jar is an Eclipse Fragment.
+     */
+    private boolean isEclipseDataFragment() {
+        return (icuFile.getPath().indexOf("plugins" + File.separator + "com.ibm.icu.data.update") >= 0 && icuFile
+                .getName().equalsIgnoreCase("icu-data.jar"));
+    }
+
+    /**
+     * Determines whether the current jar is an Eclipse Fragment.
+     * 
+     * @return Whether the current jar is an Eclipse Fragment.
+     */
+    private boolean isEclipseFragment() {
+        return (isEclipseDataFragment() || isEclipseMainFragment());
+    }
+
+    /**
+     * Determines whether the current jar is an Eclipse Main Fragment.
+     * 
+     * @return Whether the current jar is an Eclipse Fragment.
+     */
+    private boolean isEclipseMainFragment() {
+        return (icuFile.getPath().indexOf("plugins") >= 0 && icuFile.getName().startsWith(
+                "com.ibm.icu_"));
+    }
+
+    /**
+     * Determines whether a timezone resource in a jar file is signed.
+     * 
+     * @return Whether a timezone resource in a jar file is signed.
+     */
+    private boolean isSigned() {
+        return tzEntry.getCertificates() != null;
+    }
+
+    /**
+     * Gathers information on the jar file represented by this ICUFile object and returns whether it
+     * is an updatable ICU4J jar file.
+     * 
+     * @return Whether the jar file represented by this ICUFile object is an updatable ICU4J jar
+     *         file.
+     */
+    private boolean isUpdatable() {
+        JarFile jar = null;
+        boolean success = false;
+
+        try {
+            // open icuFile as a jar file
+            jar = new JarFile(icuFile);
+
+            // get its manifest to determine the ICU version
+            Manifest manifest = jar.getManifest();
+            icuVersion = ICU_VERSION_UNKNOWN;
+            if (manifest != null) {
+                Iterator iter = manifest.getEntries().values().iterator();
+                while (iter.hasNext()) {
+                    Attributes attr = (Attributes) iter.next();
+                    String ver = attr.getValue(Attributes.Name.IMPLEMENTATION_VERSION);
+                    if (ver != null) {
+                        icuVersion = ver;
+                        break;
+                    }
+                }
+            }
+
+            // if the jar's directory structure contains TZ_ENTRY_DIR and there
+            // is a timezone resource in the jar, then the jar is updatable
+            success = (jar.getJarEntry(TZ_ENTRY_DIR) != null)
+                    && ((this.tzEntry = getTZEntry(jar, TZ_ENTRY_FILENAME)) != null);
+
+            // if the jar file contains metazoneInfo.res, initialize mzEntry -
+            // this is true for ICU4J 3.8.1 or later releases
+            if (success) {
+                mzEntry = getTZEntry(jar, MZ_ENTRY_FILENAME);
+            }
+        } catch (IOException ex) {
+            // unable to create the JarFile or unable to get the Manifest
+            // log the unexplained i/o error, but we must drudge on
+            logger.loglnToBoth("Error reading " + icuFile.getPath() + ".");
+            logger.logStackTraceToBoth(ex);
+        } finally {
+            // close the jar gracefully
+            if (!tryClose(jar))
+                logger.errorln("Could not properly close the jar file " + icuFile + ".");
+        }
+
+        // return whether the jar is updatable or not
+        return success;
+    }
+
+    private URL getCachedURL(URL url) {
+        File outputFile = (File) cacheMap.get(url);
+        if (outputFile != null) {
+            try {
+                return outputFile.toURL();
+            } catch (MalformedURLException ex) {
+                return null;
+            }
+        } else {
+            InputStream istream = null;
+            OutputStream ostream = null;
+            byte[] buffer = new byte[BUFFER_SIZE];
+            int bytesRead;
+            boolean success = false;
+
+            try {
+                String urlStr = url.toString();
+                int lastSlash = urlStr.lastIndexOf('/');
+                String fileName = lastSlash >= 0 ? urlStr.substring(lastSlash + 1) : urlStr;
+                outputFile = File.createTempFile(fileName, null);
+                outputFile.deleteOnExit();
+
+                logger.loglnToBoth("Downloading from " + url + " to " + outputFile.getPath() + ".");
+
+                URLConnection con = url.openConnection();
+                con.setRequestProperty("user-agent", System.getProperty("http.agent"));
+                istream = con.getInputStream();
+                ostream = new FileOutputStream(outputFile);
+
+                while ((bytesRead = istream.read(buffer)) != -1)
+                    ostream.write(buffer, 0, bytesRead);
+
+                success = true;
+                logger.loglnToBoth("Download successful.");
+            } catch (IOException ex) {
+                outputFile.delete();
+                logger.loglnToBoth("Download failed.");
+                logger.logStackTraceToBoth(ex);
+            } finally {
+                // safely close the streams
+                tryClose(istream);
+                tryClose(ostream);
+            }
+            try {
+                return (success && outputFile != null) ? outputFile.toURL() : null;
+            } catch (MalformedURLException ex) {
+                return null;
+            }
+        }
+    }
+
+    /**
+     * Tries to close <code>closeable</code> if possible.
+     * 
+     * @param closeable
+     *            A closeable object
+     * @return false if an IOException occured, true otherwise.
+     */
+    private boolean tryClose(InputStream closeable) {
+        if (closeable != null)
+            try {
+                closeable.close();
+                return true;
+            } catch (IOException ex) {
+                return false;
+            }
+        else
+            return true;
+    }
+
+    /**
+     * Tries to close <code>closeable</code> if possible.
+     * 
+     * @param closeable
+     *            A closeable object
+     * @return false if an IOException occured, true otherwise.
+     */
+    private boolean tryClose(OutputStream closeable) {
+        if (closeable != null)
+            try {
+                closeable.close();
+                return true;
+            } catch (IOException ex) {
+                return false;
+            }
+        else
+            return true;
+    }
+
+    /**
+     * Tries to close <code>closeable</code> if possible.
+     * 
+     * @param closeable
+     *            A closeable object
+     * @return false if an IOException occured, true otherwise.
+     */
+    private boolean tryClose(JarFile closeable) {
+        if (closeable != null)
+            try {
+                closeable.close();
+                return true;
+            } catch (IOException ex) {
+                return false;
+            }
+        else
+            return true;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ICUJarFinder.java b/src/com/ibm/icu/dev/tool/tzu/ICUJarFinder.java
new file mode 100644
index 0000000..c06140b
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ICUJarFinder.java
@@ -0,0 +1,214 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Finds all updatable ICU4J jars in a set of specified directories.
+ */
+public class ICUJarFinder {
+
+    /**
+     * The delay in milliseconds between showing directories to the command line user.
+     */
+    public static final long DELAY = 5000; // 5 seconds
+
+    /**
+     * The delay in milliseconds between showing directories to the command line user.
+     */
+    public static long lastShowtime = 0; // 5 seconds
+
+    /**
+     * Searchs the directories / files represented in <code>paths</code> for valid ICU4J jars. The
+     * logic for determining if a file is an ICU4J jar is taken care of by the constructor of
+     * ICUFile. The resulting ICUFile's are then added to the result model.
+     * 
+     * @param resultModel
+     *            The result model to add any discovered ICU4J jars to.
+     * @param logger
+     *            The current logger.
+     * @param paths
+     *            The list of paths to include to and exclude from the search.
+     * @param subdirs
+     *            Whether to include subdirectories in the search.
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            The backup directory, or null if none. The backup directory is excluded from the
+     *            search
+     * @return The same result model as given.
+     * @throws InterruptedException
+     */
+    public static ResultModel search(ResultModel resultModel, Logger logger, IncludePath[] paths,
+            boolean subdirs, File curDir, File backupDir) throws InterruptedException {
+        // sift the included / excluded paths into two seperate arraylists
+        List included = new ArrayList();
+        List excluded = new ArrayList();
+        for (int i = 0; i < paths.length; i++) {
+            IncludePath path = paths[i];
+            File file = path.getPath();
+            try {
+                file = file.getCanonicalFile();
+            } catch (IOException ex) {
+                // recover in the simplest way, but report the error
+                file = file.getAbsoluteFile();
+                logger.errorln(ex.getMessage());
+            }
+            if (path.isIncluded())
+                included.add(file);
+            else
+                excluded.add(file);
+        }
+
+        // if the backup dir is specified, don't search it
+        if (backupDir != null) {
+            File file = backupDir;
+            try {
+                file = file.getCanonicalFile();
+            } catch (IOException ex) {
+                // recover in the simplest way, but report the error
+                file = file.getAbsoluteFile();
+                logger.errorln(ex.getMessage());
+            }
+            excluded.add(file);
+        }
+
+        // exclude the icu4j.jar that comes with this tool
+        File file = new File(curDir.getPath(), "icu4j.jar");
+        try {
+            file = file.getCanonicalFile();
+        } catch (IOException ex) {
+            // recover in the simplest way, but report the error
+            file = file.getAbsoluteFile();
+            logger.errorln(ex.getMessage());
+        }
+        excluded.add(file);
+
+        // search each of the included files/directories
+        for (int i = 0; i < included.size(); i++)
+            search(resultModel, logger, (File) included.get(i), excluded, subdirs, 0);
+
+        // chain the result model
+        return resultModel;
+    }
+
+    /**
+     * Checks a specific file. If the file is an ICU4J jar that can be updated, then the ICUFile
+     * representing that file is added to the result model. If the file is a directory, the
+     * directory is then recursed.
+     * 
+     * @param resultModel
+     *            The result model to add any discovered ICU4J jars to.
+     * @param logger
+     *            The current logger.
+     * @param statusBar
+     *            The status bar for status-bar messages, or null if none is present.
+     * @param file
+     *            The current file to check or directory to search.
+     * @param excluded
+     *            The list of all directories excluded in the search.
+     * @param subdirs
+     *            Whether to include subdirectories in the search.
+     * @param depth
+     *            The current depth of the search.
+     * @return The same result model as given.
+     * @throws InterruptedException
+     */
+    private static ResultModel search(ResultModel resultModel, Logger logger, File file,
+            List excluded, boolean subdirs, int depth) throws InterruptedException {
+        // ensure we are not following a symbolic link
+        if (isSymbolic(file))
+            return resultModel;
+
+        // ensure that the file is in canonical form
+        try {
+            file = file.getCanonicalFile();
+        } catch (IOException ex) {
+            logger.errorln(ex.getMessage());
+            return resultModel;
+        }
+
+        // check for interruptions
+        if (Thread.currentThread().isInterrupted())
+            throw new InterruptedException();
+
+        // make sure the current file/directory isn't excluded
+        Iterator iter = excluded.iterator();
+        while (iter.hasNext())
+            if (file.equals(((File) iter.next())))
+                return resultModel;
+
+        if ((subdirs || depth == 0) && file.isDirectory()) {
+            // recurse through each file/directory inside this directory
+            File[] dirlist = file.listFiles();
+            if (dirlist != null && dirlist.length > 0) {
+                // notify the user that something is happening
+                long curTime = System.currentTimeMillis();
+                if (depth <= 1 || curTime - lastShowtime > DELAY) {
+                    lastShowtime = curTime;
+                    logger.printlnToScreen(file.getPath());
+
+                    // give a chance for the UI to display the message
+                    if (Thread.currentThread().isInterrupted())
+                        throw new InterruptedException();
+                    Thread.sleep(0);
+                }
+
+                // recurse
+                for (int i = 0; i < dirlist.length; i++)
+                    search(resultModel, logger, dirlist[i], excluded, subdirs, depth + 1);
+            }
+        } else {
+            // attempt to create an ICUFile object on the current file and add
+            // it to the result model if possible
+            try {
+                // if the file/directory is an ICU jar file that we can
+                // update, add it to the results
+                resultModel.add(new ICUFile(file, logger));
+                logger.printlnToBoth("Added " + file.getPath());
+            } catch (IOException ex) {
+                // if it's not an ICU jar file that we can update, ignore it
+            }
+        }
+
+        // chain the result model
+        return resultModel;
+    }
+
+    /**
+     * Tests whether a file is a symbolic link by comparing the absolute path with the canonical
+     * path.
+     * 
+     * @param file
+     *            The file to check.
+     * @return Whether the file is a symbolic link.
+     */
+    private static boolean isSymbolic(File file) {
+        try {
+            File parent = file.getParentFile();
+            if (parent == null)
+                parent = new File(".");
+            File betterFile = new File(parent.getCanonicalPath(), file.getName());
+            return !betterFile.getAbsoluteFile().equals(betterFile.getCanonicalFile());
+        } catch (IOException ex) {
+            // if getCanonicalFile throws an IOException for this file, we won't
+            // want to dig into this path
+            return false;
+        }
+    }
+
+    /**
+     * An empty constructor that restricts construction.
+     */
+    private ICUJarFinder() {
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ICUTZUMain.java b/src/com/ibm/icu/dev/tool/tzu/ICUTZUMain.java
new file mode 100644
index 0000000..41a02ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ICUTZUMain.java
@@ -0,0 +1,121 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Locale;
+
+/**
+ * Entry point for the ICUTZU tool.
+ */
+public class ICUTZUMain {
+    /**
+     * Argument number for the backup directory.
+     */
+    public static final int BACKUP_DIR = 4;
+
+    /**
+     * Argument number for the current directory.
+     */
+    public static final int CUR_DIR = 0;
+
+    /**
+     * Argument number for the icon file.
+     */
+    public static final int ICON_FILE = 5;
+
+    /**
+     * Number of arguments.
+     */
+    public static final int NUM_ARGS = 6;
+
+    /**
+     * Argument number for the path list file.
+     */
+    public static final int PATH_FILE = 1;
+
+    /**
+     * Argument number for the result list file.
+     */
+    public static final int RESULT_FILE = 2;
+
+    /**
+     * Argument number for the timezone resource file.
+     */
+    public static final int TZ_FILE = 3;
+
+    /**
+     * Entry point for the ICUTZU tool.
+     * 
+     * @param args
+     *            The list of arguments. Should be in the following order:
+     *            <ul>
+     *            <li>Current directory</li>
+     *            <li>Path list file</li>
+     *            <li>Result list file</li>
+     *            <li>Timezone resource file</li>
+     *            <li>Backup directory</li>
+     *            </ul>
+     *            All directories and paths should be relative to the given current directory.
+     */
+    public static void main(String[] args) {
+        try {
+            // TODO: fix this to properly set the user agent
+            String agent = "ICUTZU/1.2 (" + System.getProperty("os.name") + " "
+                    + System.getProperty("os.version") + "; " + Locale.getDefault().toString()
+                    + ")";
+            System.setProperty("http.agent", agent);
+
+            if (args.length == 0) {
+                // in the case of running without commandline options
+                File curDir = new File(".");
+                try {
+                    curDir = curDir.getCanonicalFile();
+                } catch (IOException ex) {
+                    curDir = curDir.getAbsoluteFile();
+                }
+
+                new GUILoader(curDir, new File("Temp").getAbsoluteFile(), new File(
+                        "DirectorySearch.txt").getAbsoluteFile(), new File("ICUList.txt")
+                        .getAbsoluteFile(), new File("zoneinfo.res").getAbsoluteFile(), new File(
+                        "icu.gif").getAbsoluteFile());
+                return;
+            } else if (args.length != NUM_ARGS) {
+                System.err.println("Incorrect number of arguments.");
+                System.err
+                        .println("Syntax: ICUTZUMain <cur dir> <path file> <result file> <tz file> <backup dir>");
+                System.exit(-1);
+            } else {
+
+                File curDir = new File(args[CUR_DIR]);
+                try {
+                    curDir = curDir.getCanonicalFile();
+                } catch (IOException ex) {
+                    curDir = curDir.getAbsoluteFile();
+                }
+
+                File backupDir = new File(curDir, args[BACKUP_DIR]).getAbsoluteFile();
+                File pathFile = new File(curDir, args[PATH_FILE]).getAbsoluteFile();
+                File resultFile = new File(curDir, args[RESULT_FILE]).getAbsoluteFile();
+                File tzFile = new File(curDir, args[TZ_FILE]).getAbsoluteFile();
+                File iconFile = new File(curDir, args[ICON_FILE]).getAbsoluteFile();
+
+                if ("true".equalsIgnoreCase(System.getProperty("nogui")))
+                    new CLILoader(curDir, backupDir, pathFile, resultFile, tzFile);
+                else
+                    new GUILoader(curDir, backupDir, pathFile, resultFile, tzFile, iconFile);
+            }
+        } catch (Throwable ex) {
+            // should any unexplained exception occur, we should exit
+            // abnormally. ideally, this should never happen.
+            System.err.println("Internal program error.");
+            ex.printStackTrace();
+            System.exit(-1);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/IncludePath.java b/src/com/ibm/icu/dev/tool/tzu/IncludePath.java
new file mode 100644
index 0000000..ed14a22
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/IncludePath.java
@@ -0,0 +1,78 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.File;
+
+/**
+ * Represents a path and whether it should be included or excluded.
+ */
+public class IncludePath {
+    /**
+     * Whether to include or exclude the path represented by this IncludePath.
+     */
+    private boolean include;
+
+    /**
+     * The path represented by this IncludePath.
+     */
+    private File path;
+
+    /**
+     * Constructs an IncludePath around a file or directory and whether it should be included or
+     * excluded.
+     * 
+     * @param path
+     *            The file / directory to be used.
+     * @param include
+     *            Whether the file should be included / excluded.
+     */
+    public IncludePath(File path, boolean include) {
+        this.path = path;
+        this.include = include;
+    }
+
+    /**
+     * Returns true if the other object is an IncludePath and the path that both objects represent
+     * are the same. It is not required for both IncludePaths to be included or excluded.
+     * 
+     * @param other
+     *            The other IncludePath to compare this one to.
+     * @return Whether the two IncludePaths are considered equal by the criteria above.
+     */
+    public boolean equals(Object other) {
+        return !(other instanceof IncludePath) ? false : path.getAbsoluteFile().equals(
+                ((IncludePath) other).path.getAbsoluteFile());
+    }
+
+    /**
+     * Returns the path of this IncludePath.
+     * 
+     * @return The path of this IncludePath.
+     */
+    public File getPath() {
+        return path;
+    }
+
+    /**
+     * Returns whether the path is included or not.
+     * 
+     * @return Whether the path is included or not.
+     */
+    public boolean isIncluded() {
+        return include;
+    }
+
+    /**
+     * Outputs this IncludePath in the form (<b>+</b>|<b>-</b>)<i>pathstring</i>.
+     * 
+     * @return The IncludePath as a string.
+     */
+    public String toString() {
+        return (include ? '+' : '-') + path.toString();
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/Logger.java b/src/com/ibm/icu/dev/tool/tzu/Logger.java
new file mode 100644
index 0000000..05614d6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/Logger.java
@@ -0,0 +1,319 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.awt.Component;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.util.Date;
+
+import javax.swing.JOptionPane;
+
+/**
+ * A singleton object that handles output to the screen and to a log file. Get the current instance
+ * of the logger with <code>getInstance</code> and use the output functions to output to the
+ * screen, the log file, the status bar, and in dialog messages.
+ */
+public class Logger {
+
+    /**
+     * A default name to use for creating a log file.
+     */
+    public static final String DEFAULT_FILENAME = "icutzu.log";
+
+    /**
+     * The single instance of the logger.
+     */
+    private static Logger logger = null;
+
+    /**
+     * Normal mode.
+     */
+    public static final int NORMAL = 0;
+
+    /**
+     * Quiet mode.
+     */
+    public static final int QUIET = -1;
+
+    /**
+     * Verbose mode.
+     */
+    public static final int VERBOSE = 1;
+
+    /**
+     * Gets the instance of the logger, constructing a new one with <code>filename</code> and
+     * <code>verbosity</code> if one is not already constructed.
+     * 
+     * @param logFile
+     *            The file to use for logging output.
+     * @param verbosity
+     *            The verbosity for output to the screen. Should be one of the following:
+     *            <ul>
+     *            <li>QUIET</li>
+     *            <li>NORMAL</li>
+     *            <li>VERBOSE</li>
+     *            </ul>
+     * @return The instance of the logger.
+     * @throws FileNotFoundException
+     */
+    public static synchronized Logger getInstance(File logFile, int verbosity)
+            throws FileNotFoundException {
+        if (logger == null) {
+            logger = new Logger(logFile, verbosity, null, null);
+        }
+        return logger;
+    }
+
+    /**
+     * Gets the instance of the logger, constructing a new one with <code>filename</code> and
+     * <code>verbosity</code> if one is not already constructed. If a statusbar is given, status
+     * messages will be sent to it. If a dialogParent is specified, dialog messages will be
+     * displayed.
+     * 
+     * @param logFile
+     *            The file to use for logging output.
+     * @param verbosity
+     *            The verbosity for output to the screen. Should be one of the following:
+     *            <ul>
+     *            <li>QUIET</li>
+     *            <li>NORMAL</li>
+     *            <li>VERBOSE</li>
+     *            </ul>
+     * @param statusBar
+     *            The status bar for status-bar messages, or null if none is present.
+     * @param dialogParent
+     *            The parent for dialog messages, or null if no dialog messages are wanted.
+     * @return The instance of the logger.
+     * @throws FileNotFoundException
+     */
+    public static synchronized Logger getInstance(File logFile, int verbosity,
+            ResultComponent statusComponent, Component dialogParent) throws FileNotFoundException {
+        if (logger == null) {
+            logger = new Logger(logFile, verbosity, statusComponent, dialogParent);
+        }
+        return logger;
+    }
+
+    /**
+     * The parent to use when displaying a dialog.
+     */
+    private Component dialogParent = null;
+
+    /**
+     * The means of output to the log file.
+     */
+    private PrintStream fileStream = null;
+
+    /**
+     * The status bar to display status messages.
+     */
+    private ResultComponent statusComponent = null;
+
+    /**
+     * The verbosity of the logger.
+     */
+    private int verbosity = NORMAL;
+
+    /**
+     * Constructs a logger that outputs to the filename specified and outputs to the screen with the
+     * specified verbosity. Used internally.
+     * 
+     * @param filename
+     *            The filename to use for logging output.
+     * @param verbosity
+     *            The verbosity for output to the screen.
+     * @param statusBar
+     *            The status bar for status-bar messages, or null if none is present.
+     * @param dialogParent
+     *            The parent for dialog messages, or null if no dialog messages are wanted.
+     * @throws FileNotFoundException
+     */
+    private Logger(File logFile, int verbosity, ResultComponent statusComponent,
+            Component dialogParent) throws FileNotFoundException {
+        if (this.fileStream != null)
+            this.fileStream.close();
+        this.fileStream = new PrintStream(new FileOutputStream(logFile.toString(), true));
+        this.verbosity = verbosity;
+        this.statusComponent = statusComponent;
+        this.dialogParent = dialogParent;
+
+        this.fileStream.println();
+        this.fileStream.println("##### " + new Date() + " #####");
+        this.fileStream.println();
+    }
+
+    /**
+     * Prints an error message to the screen and to the log.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void error(String message) {
+        if (statusComponent != null)
+            statusComponent.addStatusMessage(message);
+        System.err.print(message);
+        if (fileStream != null)
+            fileStream.print(message);
+    }
+
+    /**
+     * Prints an error message to the screen and to the log, and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void errorln(String message) {
+        if (statusComponent != null)
+            statusComponent.addStatusMessage(message);
+        System.err.println(message);
+        if (fileStream != null)
+            fileStream.println(message);
+    }
+
+    /**
+     * Returns the current allowed verbosity.
+     * 
+     * @return The current allowed verbosity for output to the screen. Should be one of the
+     *         following:
+     *         <ul>
+     *         <li>QUIET</li>
+     *         <li>NORMAL</li>
+     *         <li>VERBOSE</li>
+     *         </ul>
+     */
+    public int getVerbosity() {
+        return verbosity;
+    }
+
+    /**
+     * Sets the allowed verbosity.
+     * 
+     * @param verbosity
+     *            The desired allowed verbosity for output to the screen. Should be one of the
+     *            following:
+     *            <ul>
+     *            <li>QUIET</li>
+     *            <li>NORMAL</li>
+     *            <li>VERBOSE</li>
+     *            </ul>
+     */
+    public void setVerbosity(int verbosity) {
+        this.verbosity = verbosity;
+    }
+
+    /**
+     * Logs a message to the screen if the logger is in a mode higher than normal mode (ie.
+     * VERBOSE), and always logs the message to the file.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void loglnToBoth(String message) {
+        loglnToScreen(message);
+        loglnToFile(message);
+    }
+
+    /**
+     * Logs a message to the file used by this logger, and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void loglnToFile(String message) {
+        if (fileStream != null)
+            fileStream.println(message);
+    }
+
+    /**
+     * Logs a message to the screen if the logger is in a mode higher than normal mode (ie.
+     * VERBOSE), and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void loglnToScreen(String message) {
+        if (verbosity > NORMAL) {
+            if (statusComponent != null)
+                statusComponent.addStatusMessage(message);
+            System.out.println(message);
+        }
+    }
+
+    /**
+     * Prints a message to the screen and to the log.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void logStackTraceToBoth(Exception ex) {
+        logStackTraceToScreen(ex);
+        logStackTraceToFile(ex);
+    }
+
+    /**
+     * Logs the stack trace to the file.
+     * 
+     * @param ex
+     *            The exception
+     */
+    public void logStackTraceToFile(Exception ex) {
+        if (fileStream != null)
+            ex.printStackTrace(fileStream);
+    }
+
+    /**
+     * Logs the stack trace to the file.
+     * 
+     * @param ex
+     *            The exception
+     */
+    public void logStackTraceToScreen(Exception ex) {
+        if (verbosity > NORMAL)
+            ex.printStackTrace(System.out);
+    }
+
+    /**
+     * Prints a message to the screen and to the log, and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void printlnToBoth(String message) {
+        printlnToScreen(message);
+        loglnToFile(message);
+    }
+
+    /**
+     * Prints a message to the screen, and terminates the line.
+     * 
+     * @param message
+     *            The message to print.
+     */
+    public void printlnToScreen(String message) {
+        if (verbosity >= NORMAL) {
+            if (statusComponent != null)
+                statusComponent.addStatusMessage(message);
+            System.out.println(message);
+        }
+    }
+
+    /**
+     * If dialogParent is not null, brings up an informative dialog about something the user should
+     * be aware of.
+     * 
+     * @param message
+     *            The message to the user.
+     */
+    public void showInformationDialog(String message) {
+        if (dialogParent != null)
+            JOptionPane.showMessageDialog(dialogParent, message, "INFORMATION MESSAGE",
+                    JOptionPane.INFORMATION_MESSAGE);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/PathComponent.java b/src/com/ibm/icu/dev/tool/tzu/PathComponent.java
new file mode 100644
index 0000000..db7b650
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/PathComponent.java
@@ -0,0 +1,349 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.awt.Component;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.File;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
+import javax.swing.JTextField;
+
+/**
+ * The path list GUI component.
+ */
+public class PathComponent extends JComponent {
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1340;
+
+    /**
+     * A menu item for <code>pathPopup</code> to add all drives to the path model.
+     */
+    private JMenuItem pathAddAllDrivesItem = new JMenuItem("Add All Drives to List");
+
+    /**
+     * The browse button where the user can browse for a particular path.
+     */
+    private JButton pathBrowseButton = new JButton("Browse...");
+
+    /**
+     * A menu item that copies the selected filenames to the clipboard.
+     */
+    private JMenuItem pathCopyItem = new JMenuItem("Copy selected");
+
+    /**
+     * The browse dialog that pops up when the browse button is clicked.
+     */
+    private JFileChooser pathChooser = new JFileChooser();
+
+    /**
+     * The field where the user can enter a path.
+     */
+    private JTextField pathField = new JTextField(30);
+
+    /**
+     * The label for path input field.
+     */
+    private JLabel pathInputLabel = new JLabel("Include/exclude a directory or a file:");
+
+    /**
+     * The label for the path list.
+     */
+    private JLabel pathListLabel = new JLabel("Directories to search and ICU4J jar files to check:");
+
+    /**
+     * The panel to hold the input components.
+     */
+    private JPanel pathInputPanel = new JPanel();
+
+    /**
+     * The JList that holds the path model.
+     */
+    private JList pathList = new JList();
+
+    /**
+     * The path model that stores all the paths.
+     */
+    private PathModel pathModel;
+
+    /**
+     * The panel to hold the output components.
+     */
+    private JPanel pathOptionPanel = new JPanel();
+
+    /**
+     * The context menu for extra options.
+     */
+    private JPopupMenu pathPopup = new JPopupMenu();
+
+    /**
+     * A menu item for <code>pathPopup</code> to remove all paths from the path model.
+     */
+    private JMenuItem pathRemoveAllItem = new JMenuItem("Remove All");
+
+    /**
+     * A menu item for <code>pathPopup</code> to remove the selected paths from the path model.
+     */
+    private JMenuItem pathRemoveSelectedItem = new JMenuItem("Remove Selected Items");
+
+    /**
+     * A menu item for <code>pathPopup</code> to begin a search on the selected paths in the path
+     * model.
+     */
+    private JMenuItem pathSearchAllItem = new JMenuItem("Search All");
+
+    /**
+     * The search button that starts the search on the selected paths (or all the paths if none are
+     * selected).
+     */
+    private JButton pathSearchAllButton = new JButton("Search All");
+
+    /**
+     * The panel to hold the search components.
+     */
+    private JPanel pathSearchPanel = new JPanel();
+
+    /**
+     * A menu item for <code>pathPopup</code> to begin a search on all paths in the path model.
+     */
+    private JMenuItem pathSearchSelectedItem = new JMenuItem("Search Selected Items");
+
+    /**
+     * The combobox where a user specifies whether to include or to exclude an entered path.
+     */
+    private JComboBox pathSignBox = new JComboBox(new Object[] { "Include", "Exclude" });
+
+    /**
+     * The checkbox where the user can specify whether or not to search subdirectories. Set to true
+     * by default.
+     */
+    private JCheckBox pathSubdirOption = new JCheckBox("Search Subdirectories", true);
+
+    /**
+     * Preferred starting number of rows in the table.
+     */
+    public static final int PATH_LIST_ROWS_PREFERRED = 5;
+
+    /**
+     * Constructs the path list GUI component.
+     * 
+     * @param owner
+     *            The GUILoader object that ownes this component.
+     */
+    public PathComponent(final GUILoader owner) {
+        pathList.setVisibleRowCount(PATH_LIST_ROWS_PREFERRED);
+
+        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+        add(pathInputPanel);
+        add(pathListLabel);
+        add(new JScrollPane(pathList));
+        add(pathOptionPanel);
+        add(pathSearchPanel);
+
+        JPanel pathInputSubPanel = new JPanel();
+        pathInputPanel.setLayout(new BoxLayout(pathInputPanel, BoxLayout.Y_AXIS));
+        pathInputPanel.add(pathInputLabel);
+        pathInputPanel.add(pathInputSubPanel);
+        pathInputSubPanel.add(pathSignBox);
+        pathInputSubPanel.add(pathField);
+        pathInputSubPanel.add(pathBrowseButton);
+
+        pathOptionPanel.add(pathSubdirOption);
+        pathSearchPanel.add(pathSearchAllButton);
+
+        pathChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
+
+        pathPopup.add(pathCopyItem);
+        pathPopup.add(new JSeparator());
+        pathPopup.add(pathAddAllDrivesItem);
+        pathPopup.add(pathRemoveSelectedItem);
+        pathPopup.add(pathRemoveAllItem);
+        pathPopup.add(new JSeparator());
+        pathPopup.add(pathSearchSelectedItem);
+        pathPopup.add(pathSearchAllItem);
+
+        pathField.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                addFile(new File(pathField.getText().trim()));
+                pathField.selectAll();
+            }
+        });
+
+        pathList.addMouseListener(new MouseListener() {
+            public void mouseClicked(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseEntered(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseExited(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mousePressed(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseReleased(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            private void checkPopup(MouseEvent event) {
+                if (event.isPopupTrigger())
+                    pathPopup.show((Component) event.getSource(), event.getX(), event.getY());
+            }
+        });
+
+        pathList.addKeyListener(new KeyAdapter() {
+            public void keyPressed(KeyEvent event) {
+                int code = event.getKeyCode();
+                if (code == KeyEvent.VK_DELETE || code == KeyEvent.VK_BACK_SPACE)
+                    pathModel.remove(pathList.getSelectedIndices());
+            }
+        });
+
+        pathCopyItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                String selection = "";
+                int[] rows = pathList.getSelectedIndices();
+                for (int i = 0; i < rows.length; i++) {
+                    String includePathString = pathModel.getElementAt(rows[i]).toString();
+                    // get rid of a + or - at the begining of includePathString
+                    // if one exists
+                    if (includePathString.length() > 0
+                            && (includePathString.charAt(0) == '+' || includePathString.charAt(0) == '-'))
+                        includePathString = includePathString.substring(1);
+                    selection += includePathString + "\n";
+                }
+                getToolkit().getSystemClipboard().setContents(new StringSelection(selection), null);
+            }
+        });
+
+        pathRemoveSelectedItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                pathModel.remove(pathList.getSelectedIndices());
+            }
+        });
+
+        pathRemoveAllItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                pathModel.removeAll();
+            }
+        });
+
+        pathSearchSelectedItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.search(pathList.getSelectedIndices(), pathSubdirOption.isSelected());
+            }
+        });
+
+        pathSearchAllItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.searchAll(pathSubdirOption.isSelected());
+            }
+        });
+
+        pathSearchAllButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.searchAll(pathSubdirOption.isSelected());
+            }
+        });
+
+        pathAddAllDrivesItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                pathModel.addAllDrives();
+            }
+        });
+
+        pathBrowseButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                // set the chooser's intial path to be whatever is in the text
+                // field
+                File path = new File(pathField.getText().trim());
+                if (path.exists())
+                    pathChooser.setSelectedFile(path);
+
+                // run the chooser dialog
+                int returnVal = pathChooser.showOpenDialog(PathComponent.this);
+
+                // on an accept, add the path to the model and set the text
+                // field to it
+                if (returnVal == JFileChooser.APPROVE_OPTION) {
+                    path = pathChooser.getSelectedFile();
+                    addFile(path);
+                    pathField.setText(path.getPath());
+                }
+            }
+        });
+    }
+
+    /**
+     * Sets the path model.
+     * 
+     * @param pathModel
+     *            The path model.
+     */
+    public void setPathModel(PathModel pathModel) {
+        this.pathModel = pathModel;
+        pathList.setModel(pathModel);
+    }
+
+    /**
+     * Sets whether the search button should be enabled.
+     * 
+     * @param value
+     *            Whether the search button should be enabled.
+     */
+    public void setSearchEnabled(boolean value) {
+        pathSearchAllButton.setEnabled(value);
+    }
+
+    /**
+     * Attempts to add a path to the path model.
+     * 
+     * @param file
+     *            The path to add.
+     */
+    private void addFile(File file) {
+        if (!pathModel.add(new IncludePath(file, isIncluded())))
+            JOptionPane.showMessageDialog(PathComponent.this, "\"" + file.getPath()
+                    + "\" is not a valid file or path.", "Cannot add path/file",
+                    JOptionPane.ERROR_MESSAGE);
+    }
+
+    /**
+     * Returns whether the user has specified to include or to exclude the entered path.
+     * 
+     * @return Whether the user has specified to include or to exclude the entered path.
+     */
+    private boolean isIncluded() {
+        return ((String) pathSignBox.getSelectedItem()).equals("Include");
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/PathModel.java b/src/com/ibm/icu/dev/tool/tzu/PathModel.java
new file mode 100644
index 0000000..785093c
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/PathModel.java
@@ -0,0 +1,328 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.AbstractListModel;
+
+/**
+ * Represents a list of IncludePaths that is usable by any class that uses AbstractListModels (such
+ * as a JList in swing). Also contains methods to begin a search on those paths using ICUJarFinder
+ * and placing the results in a ResultModel, and methods to load a path list from a file.
+ */
+class PathModel extends AbstractListModel {
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1337;
+
+    /**
+     * The list of paths as IncludePaths.
+     */
+    private List list = new ArrayList();
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * The paths file where the paths are stored.
+     */
+    private File pathListFile;
+
+    /**
+     * The filename of the paths file where the paths are stored.
+     */
+    private String pathListFilename;
+
+    /**
+     * Constructs an empty path model.
+     * 
+     * @param pathFile
+     *            The file to load the path list from.
+     * @param logger
+     *            The current logger.
+     */
+    public PathModel(Logger logger, File pathFile) {
+        this.logger = logger;
+        this.pathListFile = pathFile;
+        this.pathListFilename = pathFile.getName();
+    }
+
+    /**
+     * Adds an IncludePath to the path list if it exists and is unique.
+     * 
+     * @param path
+     *            An existing path.
+     * @return Whether or not the given IncludePath exists.
+     */
+    public boolean add(IncludePath path) {
+        remove(path);
+
+        if (path.getPath().exists()) {
+            list.add(path);
+            int index = list.size() - 1;
+            fireIntervalAdded(this, index, index);
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Adds a filename to the path list if it is valid and unique. The filename must either be of
+     * the form (<b>+</b>|<b>-</b>)<i>pathstring</i> and exist, or of the form <b>all</b>. In
+     * the case of the latter, all drives are added to the path list.
+     * 
+     * @param includeFilename
+     *            A filename in the form above.
+     * @return Whether or not <code>includeFilename</code> is both of the form detailed above and
+     *         exists.
+     */
+    public boolean add(String includeFilename) {
+        if ("all".equalsIgnoreCase(includeFilename)) {
+            logger
+                    .printlnToScreen("The tool will search all drives for ICU4J jars except any excluded directories specified");
+            addAllDrives();
+            return true;
+        }
+
+        return add(new IncludePath(new File(includeFilename.substring(1).trim()), includeFilename
+                .charAt(0) == '+'));
+    }
+
+    /**
+     * Adds all drives to the path list.
+     */
+    public void addAllDrives() {
+        File[] roots = File.listRoots();
+        for (int i = 0; i < roots.length; i++)
+            add(new IncludePath(roots[i], true));
+    }
+
+    /**
+     * Returns the path at the element at a particular index of the path list.
+     * 
+     * @param index
+     *            The index of the element of the path list to return.
+     * @return The path at the specified index of the path list. Guaranteed to always be an
+     *         IncludePath.
+     */
+    public Object getElementAt(int index) {
+        return list.get(index);
+    }
+
+    /**
+     * Returns the size of the path list.
+     * 
+     * @return The size of the path list.
+     */
+    public int getSize() {
+        return (list == null) ? 0 : list.size();
+    }
+
+    /**
+     * Returns an iterator of the path list.
+     * 
+     * @return An iterator of the path list.
+     */
+    public Iterator iterator() {
+        return list.iterator();
+    }
+
+    /**
+     * Loads a list of paths from the given path list file. Each path must be of the form
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     */
+    public void loadPaths() throws IOException, IllegalArgumentException {
+        logger.printlnToBoth("Scanning " + pathListFilename + " file...");
+        logger.loglnToBoth(pathListFilename + " file contains");
+
+        BufferedReader reader = null;
+        int lineNumber = 0;
+        String line;
+        char sign;
+
+        try {
+            reader = new BufferedReader(new InputStreamReader(new FileInputStream(pathListFile),
+                    "UTF-8"), 4 * 1024);
+            while ((line = reader.readLine()) != null) {
+                if (line.length() >= 1 && line.charAt(0) == '\ufeff')
+                    line = line.substring(1);
+                line = line.trim();
+                lineNumber++;
+
+                if (line.length() >= 1 && (sign = line.charAt(0)) != '#') {
+                    if (sign != '+' && sign != '-' && !"all".equalsIgnoreCase(line)) {
+                        String error = "Each path entry must start with a + or - to denote inclusion/exclusion";
+                        pathListError(error, lineNumber);
+                        continue;
+                    }
+                    if (!add(line)) {
+                        String error = line.substring(1).trim()
+                                + " is not a valid file or directory (perhaps it does not exist?)";
+                        pathListError(error, lineNumber);
+                        continue;
+                    }
+                    logger.printlnToBoth(line);
+                }
+            }
+            logger.printlnToBoth("Scanning " + pathListFilename + " complete.");
+        } catch (FileNotFoundException ex) {
+            pathListError("The " + pathListFilename + " file doesn't exist.");
+        } catch (IOException ex) {
+            pathListError("Could not read the " + pathListFilename + " file.");
+        } finally {
+            try {
+                if (reader != null)
+                    reader.close();
+            } catch (IOException ex) {
+            }
+        }
+    }
+
+    /**
+     * Removes a path from the path list. Since there are no duplicates in the path list, this
+     * method either removes a single path or removes none.
+     * 
+     * @param path
+     *            The path to remove from the path list.
+     */
+    public void remove(IncludePath path) {
+        int index = list.indexOf(path);
+        if (index != -1) {
+            list.remove(index);
+            fireIntervalRemoved(this, index, index);
+        }
+    }
+
+    /**
+     * Removes a selection of paths from the path list by index.
+     * 
+     * @param indices
+     *            The indices of the path list to remove.
+     */
+    public void remove(int[] indices) {
+        if (list.size() > 0 && indices.length > 0) {
+            Arrays.sort(indices);
+            int max = indices[indices.length - 1];
+            int min = indices[0];
+            for (int i = indices.length - 1; i >= 0; i--)
+                list.remove(indices[i]);
+            fireIntervalRemoved(this, min, max);
+        }
+    }
+
+    /**
+     * Clears the path list.
+     */
+    public void removeAll() {
+        if (list.size() > 0) {
+            int index = list.size() - 1;
+            list.clear();
+            fireIntervalRemoved(this, 0, index);
+        }
+    }
+
+    /**
+     * Searches a selection of paths in the path list for updatable ICU4J jars. Results are added to
+     * the result model. The indices provided are the indices of the path list to search.
+     * 
+     * @param resultModel
+     *            The result model to store the results of the search.
+     * @param indices
+     *            The indices of the path list to use in the search.
+     * @param subdirs
+     *            Whether to search subdiretories.
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            Where to store backup files.
+     * @throws InterruptedException
+     */
+    public void search(ResultModel resultModel, int[] indices, boolean subdirs, File curDir,
+            File backupDir) throws InterruptedException {
+        if (list.size() > 0 && indices.length > 0) {
+            Arrays.sort(indices);
+            int n = indices.length;
+            IncludePath[] paths = new IncludePath[n];
+
+            int k = 0;
+            Iterator iter = iterator();
+            for (int i = 0; k < n && iter.hasNext(); i++)
+                if (i == indices[k])
+                    paths[k++] = (IncludePath) iter.next();
+                else
+                    iter.next();
+
+            ICUJarFinder.search(resultModel, logger, paths, subdirs, curDir, backupDir);
+        }
+    }
+
+    /**
+     * Searches each path in the path list for updatable ICU4J jars. Results are added to the result
+     * model.
+     * 
+     * @param resultModel
+     *            The result model to store the results of the search.
+     * @param subdirs
+     *            Whether to search subdiretories.
+     * @param curDir
+     *            The base directory of the tool.
+     * @param backupDir
+     *            Where to store backup files.
+     * @throws InterruptedException
+     */
+    public void searchAll(ResultModel resultModel, boolean subdirs, File curDir, File backupDir)
+            throws InterruptedException {
+        if (list.size() > 0) {
+            int n = list.size();
+            IncludePath[] paths = new IncludePath[n];
+            Iterator iter = iterator();
+            for (int i = 0; i < n; i++)
+                paths[i] = (IncludePath) iter.next();
+            ICUJarFinder.search(resultModel, logger, paths, subdirs, curDir, backupDir);
+        }
+    }
+
+    /**
+     * Throws an IOException with the specified message.
+     * 
+     * @param message
+     *            The message to put in the exception.
+     * @throws IOException
+     */
+    private void pathListError(String message) throws IOException {
+        throw new IOException("Error in " + pathListFilename + ": " + message);
+    }
+
+    /**
+     * Logs as an error a specified message and line number.
+     * 
+     * @param message
+     *            The message to put in the exception.
+     * @param lineNumber
+     *            The line number to put in the exception.
+     */
+    private void pathListError(String message, int lineNumber) {
+        logger.printlnToBoth("Error in " + pathListFilename + " (line " + lineNumber + "): "
+                + message);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ResultComponent.java b/src/com/ibm/icu/dev/tool/tzu/ResultComponent.java
new file mode 100644
index 0000000..3da8c83
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ResultComponent.java
@@ -0,0 +1,358 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.awt.Component;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.File;
+import java.net.URL;
+
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JFileChooser;
+import javax.swing.JLabel;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.ScrollPaneConstants;
+
+/**
+ * The path list GUI component.
+ */
+public class ResultComponent extends JComponent {
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1341;
+
+    /**
+     * A cancel search button to cancel a search if one is currently occuring.
+     */
+    private JButton resultCancelSearchButton = new JButton("Stop Search");
+
+    /**
+     * A cancel update button to cancel an update if one is currently occuring.
+     */
+    private JButton resultCancelUpdateButton = new JButton("Stop Update");
+
+    /**
+     * The dialog that comes up when the browse button is clicked.
+     */
+    private JFileChooser resultChooser = new JFileChooser();
+
+    /**
+     * A menu item for copying a filename to the clipboard.
+     */
+    private JMenuItem resultCopyItem = new JMenuItem("Copy Selected");
+
+    /**
+     * The model for all the results from a search.
+     */
+    private ResultModel resultModel;
+
+    /**
+     * The panel where option components are shown.
+     */
+    private JPanel resultOptionPanel = new JPanel();
+
+    /**
+     * The context menu that pops up with more options.
+     */
+    private JPopupMenu resultPopup = new JPopupMenu();
+
+    /**
+     * A menu item for <code>pathPopup</code> to remove all files from the result model.
+     */
+    private JMenuItem resultRemoveAllItem = new JMenuItem("Remove All");
+
+    /**
+     * A menu item for <code>pathPopup</code> to remove the selected files from the result model.
+     */
+    private JMenuItem resultRemoveSelectedItem = new JMenuItem("Remove Selected Items");
+
+    /**
+     * The label for the result source list.
+     */
+    private JLabel resultSourceLabel = new JLabel("New Time Zone Version: ");
+
+    /**
+     * The combobox for choosing which timezone resource on the web to use in an update.
+     */
+    private JComboBox resultSourceList = new JComboBox();
+
+    /**
+     * The label for the path list.
+     */
+    private JLabel resultTableLabel = new JLabel("ICU4J Jar Files found:");
+
+    /**
+     * The table where the result model is shown.
+     */
+    private JTable resultTable = new JTable();
+
+    /**
+     * A menu item for <code>pathPopup</code> to update all files in the result model.
+     */
+    private JMenuItem resultUpdateAllItem = new JMenuItem("Update All");
+
+    /**
+     * An update button to update the selected files, or all files if none are selected.
+     */
+    private JButton resultUpdateSelectedButton = new JButton("Update Selected");
+
+    /**
+     * The panel where update components are shown.
+     */
+    private JPanel resultUpdatePanel = new JPanel();
+
+    /**
+     * A menu item for <code>pathPopup</code> to update the selected files in the result model.
+     */
+    private JMenuItem resultUpdateSelectedItem = new JMenuItem("Update Selected Items");
+
+    /**
+     * The model for all the timezone resources on the web.
+     */
+    private SourceModel sourceModel;
+
+    /**
+     * The status bar for status messages.
+     */
+    private JTextArea statusLog = new JTextArea(STATUS_BAR_ROWS_PREFERRED,
+            STATUS_BAR_COLUMNS_PREFERRED);
+
+    /**
+     * Preferred starting number of rows in the table.
+     */
+    public static final int RESULT_TABLE_ROWS_PREFERRED = 4;
+
+    /**
+     * Preferred starting number of rows in the table.
+     */
+    public static final int STATUS_BAR_ROWS_PREFERRED = 4;
+
+    /**
+     * Preferred starting number of rows in the table.
+     */
+    public static final int STATUS_BAR_COLUMNS_PREFERRED = 48;
+
+    /**
+     * @param owner
+     *            The GUILoader object that ownes this component.
+     */
+    public ResultComponent(final GUILoader owner) {
+        java.awt.Dimension tableSize = resultTable.getPreferredScrollableViewportSize();
+        tableSize.height = RESULT_TABLE_ROWS_PREFERRED * resultTable.getRowHeight();
+        resultTable.setPreferredScrollableViewportSize(tableSize);
+
+        statusLog.setEditable(false);
+
+        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+        add(resultTableLabel);
+        add(new JScrollPane(resultTable));
+        add(new JScrollPane(statusLog, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
+                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER));
+        add(resultOptionPanel);
+        add(resultUpdatePanel);
+
+        resultOptionPanel.add(resultSourceLabel);
+        resultOptionPanel.add(resultSourceList);
+        resultUpdatePanel.add(resultCancelSearchButton);
+        resultUpdatePanel.add(resultUpdateSelectedButton);
+        resultUpdatePanel.add(resultCancelUpdateButton);
+
+        resultChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
+
+        resultPopup.add(resultCopyItem);
+        resultPopup.add(new JSeparator());
+        resultPopup.add(resultRemoveSelectedItem);
+        resultPopup.add(resultRemoveAllItem);
+        resultPopup.add(new JSeparator());
+        resultPopup.add(resultUpdateSelectedItem);
+        resultPopup.add(resultUpdateAllItem);
+
+        resultTable.addMouseListener(new MouseListener() {
+            public void mouseClicked(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseEntered(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseExited(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mousePressed(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            public void mouseReleased(MouseEvent event) {
+                checkPopup(event);
+            }
+
+            private void checkPopup(MouseEvent event) {
+                if (event.isPopupTrigger())
+                    resultPopup.show((Component) event.getSource(), event.getX(), event.getY());
+            }
+        });
+
+        resultTable.addKeyListener(new KeyAdapter() {
+            public void keyPressed(KeyEvent event) {
+                int code = event.getKeyCode();
+                if (code == KeyEvent.VK_DELETE || code == KeyEvent.VK_BACK_SPACE)
+                    resultModel.remove(resultTable.getSelectedRows());
+            }
+        });
+
+        resultCopyItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                String selection = "";
+                int[] rows = resultTable.getSelectedRows();
+                for (int i = 0; i < rows.length; i++)
+                    selection += new File(resultModel.getValueAt(rows[i],
+                            ResultModel.COLUMN_FILE_PATH).toString(), resultModel.getValueAt(
+                            rows[i], ResultModel.COLUMN_FILE_NAME).toString()).toString()
+                            + "\n";
+                getToolkit().getSystemClipboard().setContents(new StringSelection(selection), null);
+            }
+        });
+
+        resultRemoveSelectedItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                resultModel.remove(resultTable.getSelectedRows());
+            }
+        });
+
+        resultRemoveAllItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                resultModel.removeAll();
+            }
+        });
+
+        resultUpdateSelectedItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.update(resultTable.getSelectedRows(), getSelectedSource());
+            }
+        });
+
+        resultUpdateAllItem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.updateAll(getSelectedSource());
+            }
+        });
+
+        resultUpdateSelectedButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                int[] indices = resultTable.getSelectedRows();
+                if (indices.length > 0)
+                    owner.update(indices, getSelectedSource());
+            }
+        });
+
+        resultCancelSearchButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.cancelSearch();
+            }
+        });
+
+        resultCancelUpdateButton.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent event) {
+                owner.cancelUpdate();
+            }
+        });
+    }
+
+    /**
+     * Adds the status to the statusbar.
+     * 
+     * @param status
+     *            The current status.
+     */
+    public void addStatusMessage(String status) {
+        String text = statusLog.getText();
+        if (text == null || text.trim().length() == 0)
+            statusLog.setText(status);
+        else
+            statusLog.append("\n" + status);
+        statusLog.setCaretPosition(statusLog.getText().length());
+    }
+
+    /**
+     * Sets whether the cancel search button should be enabled.
+     * 
+     * @param value
+     *            Whether the cancel search button should be enabled.
+     */
+    public void setCancelSearchEnabled(boolean value) {
+        resultCancelSearchButton.setEnabled(value);
+    }
+
+    /**
+     * Sets whether the cancel update button should be enabled.
+     * 
+     * @param value
+     *            Whether the cancel update button should be enabled.
+     */
+    public void setCancelUpdateEnabled(boolean value) {
+        resultCancelUpdateButton.setEnabled(value);
+    }
+
+    /**
+     * Sets the result model.
+     * 
+     * @param resultModel
+     *            The result model.
+     */
+    public void setResultModel(ResultModel resultModel) {
+        this.resultModel = resultModel;
+        resultTable.setModel(resultModel);
+    }
+
+    /**
+     * Sets the source model.
+     * 
+     * @param sourceModel
+     *            The source model.
+     */
+    public void setSourceModel(SourceModel sourceModel) {
+        this.sourceModel = sourceModel;
+        resultSourceList.setModel(sourceModel);
+    }
+
+    /**
+     * Sets whether the update button should be enabled.
+     * 
+     * @param value
+     *            Whether the update button should be enabled.
+     */
+    public void setUpdateEnabled(boolean value) {
+        resultUpdateSelectedButton.setEnabled(value);
+    }
+
+    /**
+     * Returns the URL of the currently selected item in the result source list.
+     * 
+     * @return The URL of the currently selected item in the result source list.
+     */
+    private URL getSelectedSource() {
+        return sourceModel.getURL(resultSourceList.getSelectedItem());
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/ResultModel.java b/src/com/ibm/icu/dev/tool/tzu/ResultModel.java
new file mode 100644
index 0000000..fec3d87
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/ResultModel.java
@@ -0,0 +1,430 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * Represents a list of ICUFiles that is usable by any class that uses AbstractTableModels (such as
+ * a JTable in swing). Also contains methods to begin updates on those ICUFiles and methods to load
+ * and save a result list from and to a file.
+ */
+class ResultModel extends AbstractTableModel {
+    /**
+     * The column designating filenames.
+     */
+    public static final int COLUMN_FILE_NAME = 0;
+
+    /**
+     * The column designating file paths.
+     */
+    public static final int COLUMN_FILE_PATH = 1;
+
+    /**
+     * The column designating ICU versions.
+     */
+    public static final int COLUMN_ICU_VERSION = 2;
+
+    /**
+     * The column designating timezone verisons.
+     */
+    public static final int COLUMN_TZ_VERSION = 3;
+
+    /**
+     * A list of names of the columns in a result model.
+     */
+    public static final String[] COLUMN_NAMES = new String[] { "Filename", "Path", "ICU Version",
+            "TZ Version" };
+
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1338;
+
+    /**
+     * The list of ICUFiles represented by this result model.
+     */
+    private List icuFileList = new ArrayList();
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * The result list file where results are saved and stored.
+     */
+    private File resultListFile;
+
+    /**
+     * The filename of the result list file where results are saved and stored.
+     */
+    private String resultListFilename;
+
+    /**
+     * Constructs an empty result list.
+     * 
+     * @param resultFile
+     *            The file to load and save results from and to.
+     * @param logger
+     *            The current logger.
+     */
+    public ResultModel(Logger logger, File resultFile) {
+        this.logger = logger;
+        this.resultListFile = resultFile;
+        this.resultListFilename = resultFile.getName();
+    }
+
+    /**
+     * Adds a file to the ICUFile list.
+     * 
+     * @param file
+     *            The file.
+     * @return Whether the file was added successfully (which is determined by if it is an updatable
+     *         ICU4J jar).
+     */
+    public boolean add(File file) {
+        try {
+            ICUFile icuFile = new ICUFile(file, logger);
+            add(icuFile);
+            return true;
+        } catch (IOException ex) {
+            return false;
+        }
+    }
+
+    /**
+     * Adds a file to the ICUFile list.
+     * 
+     * @param icuFile
+     *            The file.
+     */
+    public void add(ICUFile icuFile) {
+        remove(icuFile.getFile());
+        icuFileList.add(icuFile);
+        int index = icuFileList.size() - 1;
+        fireTableRowsInserted(index, index);
+    }
+
+    /**
+     * Adds a file to the ICUFile list.
+     * 
+     * @param filename
+     *            The name of the file.
+     * @return Whether the file was added successfully (which is determined by if it is an updatable
+     *         ICU4J jar).
+     */
+    public boolean add(String filename) {
+        return add(new File(filename));
+    }
+
+    /**
+     * Returns the number of columns for each represented ICUFile.
+     * 
+     * @return The number of columns for each represented ICUFile.
+     */
+    public int getColumnCount() {
+        return COLUMN_NAMES.length;
+    }
+
+    /**
+     * Returns the column names as stored in COLUMN_NAMES.
+     * 
+     * @param col
+     *            The index of the column.
+     * @return <code>COLUMN_NAMES[col]</code>
+     */
+    public String getColumnName(int col) {
+        return COLUMN_NAMES[col];
+    }
+
+    /**
+     * Returns the number of ICUFiles represented.
+     * 
+     * @return The number of ICUFiles represented.
+     */
+    public int getRowCount() {
+        return (icuFileList == null) ? 0 : icuFileList.size();
+    }
+
+    /**
+     * Returns the item at the given row and column. The row determines which ICUFile is used, and
+     * the column determines which piece of data should be used.
+     * 
+     * @param row
+     *            Which ICU file to use.
+     * @param col
+     *            Which piece of data to use. Should be one of the following:
+     *            <ul>
+     *            <li>COLUMN_FILE_PATH</li>
+     *            <li>COLUMN_ICU_VERSION</li>
+     *            <li>COLUMN_TZ_VERSION</li>
+     *            </ul>
+     * @return The item at the given row and column. Will always be a String.
+     */
+    public Object getValueAt(int row, int col) {
+        ICUFile icuFile = ((ICUFile) icuFileList.get(row));
+        switch (col) {
+        case COLUMN_FILE_NAME:
+            return icuFile.getFilename();
+        case COLUMN_FILE_PATH:
+            return icuFile.getPath();
+        case COLUMN_ICU_VERSION:
+            return icuFile.getICUVersion();
+        case COLUMN_TZ_VERSION:
+            return icuFile.getTZVersion();
+        default:
+            return null;
+        }
+    }
+
+    /**
+     * Returns an iterator on the list of ICUFiles.
+     * 
+     * @return An iterator on the list of ICUFiles.
+     */
+    public Iterator iterator() {
+        return icuFileList.iterator();
+    }
+
+    /**
+     * Loads a list of ICUFiles from the given result list file. Lines should be of the form <b><i>pathstring</i><tab><i>tzversion</i></b>.
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     */
+    public void loadResults() throws IOException, IllegalArgumentException {
+        logger.printlnToScreen("Scanning " + resultListFilename + " file...");
+        logger.printlnToScreen(resultListFilename + " file contains");
+
+        BufferedReader reader = null;
+        int lineNumber = 1;
+        String line;
+        int tab;
+        String filename;
+
+        try {
+            reader = new BufferedReader(new InputStreamReader(new FileInputStream(resultListFile),
+                    "UTF-8"), 4 * 1024);
+            while ((line = reader.readLine()) != null) {
+                if (line.length() >= 1 && line.charAt(0) == '\ufeff')
+                    line = line.substring(1);
+                line = line.trim();
+                logger.printlnToScreen(line);
+
+                if (line.length() >= 1 && (tab = line.lastIndexOf('\t')) >= 0) {
+                    if (!add(filename = line.substring(0, tab)))
+                        resultListError(filename + " is not an updatable ICU4J file", lineNumber);
+                }
+
+                lineNumber++;
+            }
+        } catch (FileNotFoundException ex) {
+            resultListError("The "
+                    + resultListFilename
+                    + " file doesn't exist. Please re-run the tool with -Ddiscoveronly=true option to generate the list of ICU4J jars.");
+        } catch (IOException ex) {
+            resultListError("Could not read the "
+                    + resultListFilename
+                    + " file. Please re-run the tool with -Ddiscoveronly=true option to generate the list of ICU4J jars.");
+        } finally {
+            try {
+                if (reader != null)
+                    reader.close();
+            } catch (IOException ex) {
+            }
+        }
+    }
+
+    /**
+     * Removes a file from the ICUFile list.
+     * 
+     * @param file
+     *            The file to remove.
+     */
+    public void remove(File file) {
+        if (icuFileList.size() > 0) {
+            Iterator iter = iterator();
+            int i = 0;
+            while (iter.hasNext()) {
+                ICUFile icuFile = (ICUFile) iter.next();
+                if (icuFile.getFile().getAbsoluteFile().equals(file.getAbsoluteFile())) {
+                    icuFileList.remove(icuFile);
+                    fireTableRowsDeleted(i, i);
+                    return;
+                }
+                i++;
+            }
+        }
+    }
+
+    /**
+     * Removes a selection of files from the ICUFile list.
+     * 
+     * @param indices
+     *            The indices of the files to remove.
+     */
+    public void remove(int[] indices) {
+        if (icuFileList.size() > 0 && indices.length > 0) {
+            Arrays.sort(indices);
+            for (int i = indices.length - 1; i >= 0; i--) {
+                icuFileList.remove(indices[i]);
+                fireTableRowsDeleted(indices[i], indices[i]);
+            }
+        }
+    }
+
+    /**
+     * Clears the ICUFile list.
+     */
+    public void removeAll() {
+        if (icuFileList.size() > 0) {
+            int lastIndex = icuFileList.size() - 1;
+            icuFileList.clear();
+            fireTableRowsDeleted(0, lastIndex);
+        }
+    }
+
+    /**
+     * Saves a list of ICUFiles to the given result list file. Lines will be of the form <b><i>pathstring</i><tab><i>tzversion</i></b>.
+     * 
+     * @throws IOException
+     * @throws IllegalArgumentException
+     */
+    public void saveResults() throws IOException, IllegalArgumentException {
+        logger.printlnToScreen("Saving to file " + resultListFilename + " ...");
+        BufferedWriter writer = null;
+        ICUFile icuFile = null;
+
+        try {
+            writer = new BufferedWriter(new OutputStreamWriter(
+                    new FileOutputStream(resultListFile), "UTF-8"), 4 * 1024);
+            Iterator iter = iterator();
+            while (iter.hasNext()) {
+                icuFile = (ICUFile) iter.next();
+                String line = icuFile.getFile().getPath() + '\t' + icuFile.getTZVersion();
+                logger.printlnToScreen(line);
+                writer.write(line);
+            }
+        } catch (FileNotFoundException ex) {
+            resultListError("Could not create the " + resultListFilename + " file.");
+        } catch (IOException ex) {
+            resultListError("Could not write to the " + resultListFilename + " file.");
+        } finally {
+            try {
+                if (writer != null)
+                    writer.close();
+            } catch (IOException ex) {
+            }
+        }
+    }
+
+    /**
+     * Updates a selection of the ICUFiles given a URL as the source of the update and a backup
+     * directory as a place to store a copy of the un-updated file.
+     * 
+     * @param indices
+     *            The indices of the ICUFiles to update.
+     * @param updateURL
+     *            The URL to use a source of the update.
+     * @param backupDir
+     *            The directory in which to store backups.
+     * @throws InterruptedException
+     */
+    public int update(int[] indices, URL updateURL, File backupDir) throws InterruptedException {
+        int numberFailed = 0;
+        if (icuFileList.size() > 0 && indices.length > 0) {
+            Arrays.sort(indices);
+            int n = indices.length;
+
+            int k = 0;
+            Iterator iter = iterator();
+            for (int i = 0; k < n && iter.hasNext(); i++)
+                if (i == indices[k])
+                    try {
+                        // update the file
+                        ((ICUFile) iter.next()).update(updateURL, backupDir);
+                        fireTableRowsUpdated(i, i);
+                        k++;
+                    } catch (IOException ex) {
+                        // could not update the jar
+                        logger.errorln(ex.getMessage());
+                        numberFailed++;
+                    }
+                else
+                    iter.next();
+        }
+
+        return numberFailed;
+    }
+
+    /**
+     * Updates all of the ICUFiles given a URL as the source of the update and a backup directory as
+     * a place to store a copy of the un-updated file.
+     * 
+     * @param updateURL
+     *            The URL to use a source of the update.
+     * @param backupDir
+     *            The directory in which to store backups.
+     * @throws InterruptedException
+     */
+    public int updateAll(URL updateURL, File backupDir) throws InterruptedException {
+        int numberFailed = 0;
+        if (icuFileList.size() > 0) {
+            int n = icuFileList.size();
+            Iterator iter = iterator();
+            for (int i = 0; i < n; i++)
+                try {
+                    ((ICUFile) iter.next()).update(updateURL, backupDir);
+                    fireTableRowsUpdated(i, i);
+                } catch (IOException ex) {
+                    // could not update the jar
+                    logger.errorln(ex.getMessage());
+                    numberFailed++;
+                }
+        }
+        return numberFailed;
+    }
+
+    /**
+     * Throws an IllegalArgumentException with the given message.
+     * 
+     * @param message
+     *            The message.
+     * @throws IllegalArgumentException
+     */
+    private void resultListError(String message) throws IOException {
+        throw new IOException("Error in " + resultListFilename + ": " + message);
+    }
+
+    /**
+     * Logs as an error a given message and line number.
+     * 
+     * @param message
+     *            The message.
+     * @param lineNumber
+     *            The line number.
+     */
+    private void resultListError(String message, int lineNumber) {
+        logger.errorln("Error in " + resultListFilename + " (line " + lineNumber + "): " + message);
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/SourceModel.java b/src/com/ibm/icu/dev/tool/tzu/SourceModel.java
new file mode 100644
index 0000000..f4a06ef
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/SourceModel.java
@@ -0,0 +1,304 @@
+/*
+ * ******************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * ******************************************************************************
+ */
+package com.ibm.icu.dev.tool.tzu;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Iterator;
+import java.util.TreeMap;
+
+import javax.swing.AbstractListModel;
+import javax.swing.ComboBoxModel;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.parser.ParserDelegator;
+
+/**
+ * Represents a map of timezone version names to urls where they can be found that is usable by any
+ * class that uses AbstractListModels (such as a JList or JCombobox in swing). Also contains methods
+ * to begin a search for sources on the ICU Timezone Repository.
+ */
+class SourceModel extends AbstractListModel implements ComboBoxModel {
+    /**
+     * The serializable UID.
+     */
+    public static final long serialVersionUID = 1339;
+
+    /**
+     * The URL of the ICU Timezone Repository. In order to catch a MalformedURLException, this field
+     * must be initialized by the constructor.
+     */
+    public static URL TZ_BASE_URL = null;
+
+    /**
+     * The end of a URL string to any timezone resource in the ICU Timezone Repository meant for
+     * ICU4J.
+     */
+    public static final String TZ_BASE_URLSTRING_END = "/be/zoneinfo.res";
+
+    /**
+     * The URL string of the ICU Timezone Repository.
+     */
+    public static final String TZ_BASE_URLSTRING_START = "http://icu-project.org/tzdata/";
+
+    /**
+     * The readable name of the local timezone resource file, ie. "Local Copy" or "Local Copy
+     * (2007c)". Since the version is determined by a <code>ICUFile.findFileTZVersion</code>,
+     * this field must be initialized by the constructor.
+     */
+    public static String TZ_LOCAL_CHOICE = null;
+
+    /**
+     * The URL of the local timezone resource file. In order to catch a MalformedURLException, this
+     * field must be initialized by the constructor.
+     */
+    public static URL TZ_LOCAL_URL = null;
+
+    /**
+     * The version of the local timezone resource file, ie. "2007c". Since the version is determined
+     * by a <code>ICUFile.findFileTZVersion</code>, this field must be initialized by the
+     * constructor.
+     */
+    public static String TZ_LOCAL_VERSION = null;
+
+    /**
+     * The local timezone resource file.
+     */
+    public static File tzLocalFile = null;
+
+    /**
+     * The current logger.
+     */
+    private Logger logger;
+
+    /**
+     * The currently selected timezone resource name. Initially set to <code>TZ_LOCAL_CHOICE</code>.
+     */
+    private Object selected = TZ_LOCAL_CHOICE;
+
+    /**
+     * The map of timezone resource names to their respective URL locations.
+     */
+    private TreeMap urlMap = new TreeMap();
+
+    /**
+     * Constructs a source model.
+     * 
+     * @param logger
+     *            The current logger.
+     * @param tzLocalFile
+     *            The local timezone resource file.
+     */
+    public SourceModel(Logger logger, File tzLocalFile) {
+        this.logger = logger;
+
+        // if all constants are not yet initialized
+        // (this is where they get initialized)
+        if (TZ_BASE_URL == null) {
+            try {
+                TZ_BASE_URL = new URL(TZ_BASE_URLSTRING_START);
+
+                SourceModel.tzLocalFile = tzLocalFile;
+                if (!tzLocalFile.exists()) {
+                    // not a critical error, but we won't be able to use the
+                    // local tz file
+                    logger.errorln("Local copy (zoneinfo.res) does not exist (perhaps you are not running icutzu from the correct directory?)");
+                } else {
+                    TZ_LOCAL_URL = tzLocalFile.toURL();
+                    TZ_LOCAL_VERSION = ICUFile.findFileTZVersion(tzLocalFile, logger);
+                    if (TZ_LOCAL_VERSION == null) {
+                        logger.errorln("Failed to determine version of local copy");
+                        TZ_LOCAL_CHOICE = "Local Copy";
+                    } else {
+                        TZ_LOCAL_CHOICE = "Local Copy (" + TZ_LOCAL_VERSION + ")";
+                    }
+                    selected = TZ_LOCAL_CHOICE;
+                }
+            } catch (MalformedURLException ex) {
+                // this shouldn't happen
+                logger.errorln("Internal program error.");
+                ex.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Gathers all the names and urls of timezone resources available on the ICU Timezone
+     * Repository. Also sets the selected item in this list to be the best timezone version
+     * available.
+     */
+    public void findSources() {
+        BufferedReader reader = null;
+        try {
+            URLConnection con = TZ_BASE_URL.openConnection();
+            con.setRequestProperty("user-agent", System.getProperty("http.agent"));
+            reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
+
+            // create an html callback function to parse through every list item
+            // (every list item
+            HTMLEditorKit.ParserCallback htmlCallback = new HTMLEditorKit.ParserCallback() {
+                private boolean listItem = false;
+
+                public void handleEndTag(HTML.Tag tag, int pos) {
+                    if (tag == HTML.Tag.LI)
+                        listItem = false;
+                }
+
+                public void handleStartTag(HTML.Tag tag, MutableAttributeSet attr, int pos) {
+                    if (tag == HTML.Tag.LI)
+                        listItem = true;
+                }
+
+                public void handleText(char[] data, int pos) {
+                    if (listItem) {
+                        String str = new String(data);
+                        if (str.charAt(str.length() - 1) == '/')
+                            str = str.substring(0, str.length() - 1);
+                        if (!"..".equals(str))
+                            try {
+                                // add the new item to the map
+                                urlMap.put(str, new URL(TZ_BASE_URLSTRING_START + str
+                                        + TZ_BASE_URLSTRING_END));
+
+                                // update the selected item and fire off an
+                                // event
+                                selected = urlMap.lastKey();
+                                int index = 0;
+                                for (Iterator iter = urlMap.keySet().iterator(); iter.hasNext();) {
+                                    if (iter.next().equals(str))
+                                        index++;
+                                }
+                                fireIntervalAdded(this, index, index);
+                            } catch (MalformedURLException ex) {
+                                logger.errorln("Internal program error.");
+                                ex.printStackTrace();
+                            }
+                    }
+                }
+            };
+
+            new ParserDelegator().parse(reader, htmlCallback, false);
+        } catch (IOException ex) {
+            // cannot connect to the repository -- use local version only.
+            String message = "Failed to connect to the ICU Timezone Repository at "
+                    + TZ_BASE_URL.toString()
+                    + " .\n\n"
+                    + "Check your connection and re-run ICUTZU or continue using the local copy of the timezone update (version "
+                    + TZ_LOCAL_VERSION + ").";
+            logger.showInformationDialog(message);
+        } finally {
+            // close the reader gracefully
+            if (reader != null)
+                try {
+                    reader.close();
+                } catch (IOException ex) {
+                }
+        }
+    }
+
+    /**
+     * Returns the name of the timezone resource at the given index.
+     * 
+     * @param index
+     *            The given index.
+     * @return The name of the timezone resource at the given index.
+     */
+    public Object getElementAt(int index) {
+        if (index == 0)
+            return TZ_LOCAL_CHOICE;
+        else if (index < 0 || index > urlMap.size())
+            return null;
+        else {
+            Iterator iter = urlMap.keySet().iterator();
+            for (int i = 1; i < index; i++)
+                iter.next();
+            return iter.next();
+        }
+    }
+
+    /**
+     * Returns the selected timezone resource name. If <code>setSelectedItem</code> is never
+     * called externally, then this is also the best available timezone resource (the most recent
+     * version).
+     * 
+     * @return The selected timezone resource name.
+     */
+    public Object getSelectedItem() {
+        return selected;
+    }
+
+    /**
+     * Gets the number of timezone resources currently stored by the source model. There will always
+     * be at least one.
+     * 
+     * @return The number of timezone resources.
+     */
+    public int getSize() {
+        // the added size (+1) is due to the local copy not being inside the map
+        return urlMap.size() + 1;
+    }
+
+    /**
+     * Returns the URL mapped to by the given timezone resource name.
+     * 
+     * @param choice
+     *            The version name, which should be a String.
+     * @return The URL mapped to by the given timezone resource name.
+     */
+    public URL getURL(Object choice) {
+        if (choice == null || !(choice instanceof String))
+            return null;
+        else if (TZ_LOCAL_CHOICE.equalsIgnoreCase((String) choice))
+            return TZ_LOCAL_URL;
+        else
+            return (URL) urlMap.get(choice);
+    }
+
+    /**
+     * Returns the version of a timezone resource with the given name. Usually this is exactly the
+     * same as the name, but if the name is <code>TZ_LOCAL_CHOICE</code> (ignoring case), then the
+     * version is <code>TZ_LOCAL_VERSION</code>.
+     * 
+     * @param choice
+     *            The version name, which should be a String.
+     * @return The URL mapped to by the given version name.
+     */
+    public String getVersion(Object choice) {
+        if (choice == null || !(choice instanceof String))
+            return null;
+        else if (TZ_LOCAL_CHOICE.equalsIgnoreCase((String) choice))
+            return TZ_LOCAL_VERSION;
+        else
+            return (String) choice;
+    }
+
+    /**
+     * Returns an iterator on the entry set of the url map. Each item iterated will be of type
+     * Map.Entry, whos key is a String and value is a URL.
+     * 
+     * @return An iterator as described above.
+     */
+    public Iterator iterator() {
+        return urlMap.entrySet().iterator();
+    }
+
+    /**
+     * Sets the selected timezone resource name.
+     * 
+     * @param selected
+     *            The timezone resource name to be selected.
+     */
+    public void setSelectedItem(Object selected) {
+        this.selected = selected;
+    }
+}
diff --git a/src/com/ibm/icu/dev/tool/tzu/icu.css b/src/com/ibm/icu/dev/tool/tzu/icu.css
new file mode 100644
index 0000000..bee7cf3
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/icu.css
@@ -0,0 +1,214 @@
+/* @override http://icu-project.org/icu.css */
+
+/*
+ * Default CSS style sheet for the ICU Open Source site
+ * Copyright (C) 2005-2007, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ */
+
+/* Global styles */
+body,p,li,ol,ul,th,td {
+  font-size: 10pt;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+body {
+  margin: 10;
+}
+.mainbody {
+  padding: 1em;
+}
+
+/*
+ * Customize the headers to have less space around them than usual
+ */
+h1 {
+  margin-bottom: 5pt;
+  margin-top: 5pt;
+  font-weight: 700;
+  font-size: 20pt;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h2 {
+  margin-bottom: 0pt;
+  margin-top: 12pt;
+  font-weight: 700;
+  font-size: 14pt;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h3 {
+  background-color: #666666;
+  color: White;
+  margin-bottom: 0pt;
+  margin-top: 12pt;
+  padding-left: 0.75em;
+  font-size: 1em;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h4 {
+  margin-bottom: 0pt;
+  margin-top: 12pt;
+  font-size: 1em;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h5, h6 {
+  margin-bottom: 0pt;
+  margin-top: 12pt;
+  padding-left: 0.75em;
+  font-size: x-small;
+  font-family: "Arial", "Helvetica", sans-serif;
+}
+
+/*
+ * Navigation sidebar on the left hand of most pages
+ */
+td.sidebar1 { 
+  background-color: #99CCFF;
+  font-weight: 700;
+  margin-top: 0px;
+  margin-bottom: 0px;
+  padding-top: 1em;
+  padding-left: 0.2em;
+  white-space: nowrap;
+}
+
+td.sidebar2 { 
+  background-color: #99CCFF;
+  margin-top: 0px;
+  margin-bottom: 0px;
+  margin-left: 0px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  padding-left: 1px;
+  padding-right: 0.5em;
+  white-space: nowrap;
+  text-decoration: none;
+  display: block;
+}
+td.sidebar2:hover { 
+  background-color: #EEEEFF;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  padding-left: 1px;
+  padding-right: 0.5em;
+}
+
+a.sidebar2 {
+  text-decoration: none;
+  display: block;
+  width: 100%;
+}
+a.sidebar2:link {
+  color: #000099;
+  display: block;
+}
+a.sidebar2:hover {
+  background-color: #EEEEFF;
+  display: block;
+}
+.underlinehover:hover {
+  background-color: #EEEEFF;
+  text-decoration: underline;
+}
+
+/* This is the faded header at the top */
+td.fadedtop {
+  background-color: #006699;
+  background-image: url(http://www.icu-project.org/images/gr100.gif);
+}
+
+/* Related site on the left */
+p.relatedsite {
+  color: White;
+  font-weight: 700;
+  font-size: 10pt;
+  margin-top: 1em;
+  margin-bottom: 0;
+  padding-left: 0.2em;
+  white-space: nowrap;
+}
+
+/* Related site on the left */
+p.sidebar3 {
+  margin-top: 0.75em;
+  margin-bottom: 0;
+  padding-left: 0.8em;
+}
+a.sidebar3 {
+  font-size: 0.9em;
+  text-decoration: none;
+}
+a.sidebar3:link {
+  text-decoration: none;
+  color: White;
+}
+a.sidebar3:hover {
+  text-decoration: underline;
+}
+
+/* FAQ */
+li.faq_contents {
+  font-weight: 500;
+}
+p.faq_q {
+  font-weight: 700; 
+  margin-bottom: 0px;
+}
+p.faq_a {
+  margin-top: 0px;
+}
+
+/* News items */
+table.newsItem {
+  padding-left: 1em;
+  padding-right: 1em;
+  border-width: medium;
+}
+th.newsItem {
+  background-color: #666666;
+  color: White;
+}
+td.newsItem {
+  background-color: #CCCCCC;
+}
+
+td.release-line,th.release-line {
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+  white-space: nowrap;
+  border:1px;
+}
+.note {
+  font-style: italic;
+  font-size: small;
+  margin-left: 1em;
+}
+samp {
+  margin-left: 1em;
+  margin-right: 2em;
+  border-style: groove;
+  padding: 1em;
+  display: block;
+  background-color: #EEEEEE
+}
+table.rtable caption {
+  margin-left: 2px;
+  margin-right: 2px;
+  padding: 3px;
+  font-weight: bold;
+  background-color: #dee2ff;
+  text-align: left;
+}
+table.rtable tr th {
+  background-color: #dee2ff;
+  text-align: left;
+}
+table.rtable tr td {
+  background-color: #c0c0fd;
+  padding: 3px;
+}
+
diff --git a/src/com/ibm/icu/dev/tool/tzu/icu.gif b/src/com/ibm/icu/dev/tool/tzu/icu.gif
new file mode 100644
index 0000000..3e74690
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/icu.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7c1a60446893053907f57b52da6ca5792ebc455f487671879ce26acd0d3d30c
+size 888
diff --git a/src/com/ibm/icu/dev/tool/tzu/readme.html b/src/com/ibm/icu/dev/tool/tzu/readme.html
new file mode 100644
index 0000000..fa310ea
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/readme.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+*******************************************************************************
+* Copyright (C) 2000-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta name="COPYRIGHT" content="Copyright (c) 2007 IBM Corporation and others. All Rights Reserved.">
+    <meta name="keywords" content="ICUTZU, ICU4J Time Zone Update Utility" />
+
+    <title>ICU4J Time Zone Update Utility (ICUTZU)</title>
+    <link rel="stylesheet" href="icu.css" type="text/css">
+  </head>
+
+
+  <body>
+
+    <h2>ICU4J Time Zone Update Utility (ICUTZU)</h2>
+
+
+    <h3>Contents</h3>
+
+    <ul>
+      <li><a href="#intro">Introduction</a></li>
+      <li><a href="#sysreq">System Requirements</a></li>
+      <li><a href="#install">Installation</a></li>
+      <li><a href="#run">Running ICUTZU</a>
+        <ul>
+          <li><a href="#gui">Running in GUI Mode</a></li>
+          <li><a href="#cmd">Running in Command-line Mode</a></li>
+        </ul>
+      </li>
+      <li><a href="#restore">Restoring Changes</a></li>
+    </ul>
+
+
+    <a name="intro"><h3>Introduction</h3></a>
+    <!-- any changes to the introduction should also be done in /repos/icuproj/trunk/htdocs/download/icutzu.html -->
+
+    <p>ICU4J Time Zone Update Utility (ICUTZU) is a utility that supplies ICU4J jar files with the latest time zone information and daylight savings time changeover dates.</p>
+    <p>The time zone data is stored in zoneinfo.res files which are generated by the ICU team using the Olson Time Zone Database (<a href="http://www.twinsun.com/tz/tz-link.htm">http://www.twinsun.com/tz/tz-link.htm</a>). Every version of the time zone data corresponds directly to a version of the Olson database. For example "2006a" refers to the first refresh of the Olson database in 2006.</p>
+    <p>ICUTZU works by searching the file system for ICU4J jar files containing old time zone data, checking online for the newest time zone data and updating the ICU4J jar files accordingly. The user can choose to update from a copy of the time zone data that comes bundled with ICUTZU or from an online copy on the ICU servers.</p>
+
+    <a name="sysreq"><h3>System Requirements</h3></a>
+
+    <p>ICUTZU will run on any system that ICU4J runs on: Solaris 5.9, 5.10, AIX 5.2, 5.3, RHEL 4, 5, Windows XP, Vista, HP-UX 9000.</p>
+    <p>ICUTZU also requires Java 1.3 or higher to be installed.</p>
+
+    <a name="install"><h3>Installation</h3></a>
+    <!-- any changes to the installation should also be done in /repos/icuproj/trunk/htdocs/download/icutzu.html -->
+
+    <p>Unpack the archive into a directory of your choosing. For Unix-based systems, you will need to set permissions on runicutzu.sh:</p>
+    <p><code>chmod 755 runicutzu.sh</code></p>
+
+    <a name="run"><h3>Running ICUTZU</h3></a>
+
+    <a name="gui"><h4>Running in GUI Mode</h4></a>
+    <ol>
+      <li><p>To start ICUTZU, double-click <b>icutzu.jar</b> or open a console and type <code>java -jar icutzu.jar</code> .</p></li>
+      <li>
+        <p>Specify which paths to search and which paths to exclude from the search. By default, all drives are included in the search.</p>
+        <ul>
+          <li><p>To include a path in the search, select <b>Include</b> from the drop-down menu, and either type the path in the text field and press enter, or simply browse for the path.</p></li>
+          <li><p>To exclude a path from the search, do the same as above, but select <b>Exclude</b> from the drop-down menu.</p></li>
+          <li><p>To specify whether to search subdirectories, check or uncheck the "Search Subdirectories" option.</p></li>
+          <li><p>For additional options, right-click the directory list for a context-menu.</p></li>
+        </ul>
+      </li>
+      <li><p>Click <b>Search</b> to begin searching for updatable ICU4J jar files in the directories specified. A new window will pop up during the search with a list of updatable ICU4J jar files found.</p></li>
+      <li>
+        <p>Select which ICU4J jar files you wish to update.</p>
+        <ul><li><p><b>ICU Version</b> refers to the version of the ICU4J jar file itself, and <b>TZ Version</b> refers to version of the time zone data within the jar file.</p></li></ul>
+      </li>
+      <li><p>Choose the version of time zone data to update with from the drop down list.</p></li>
+      <li><p>Click <b>Update</b> to begin updating the selected ICU4J jar files.</p></li>
+    </ol>
+
+    <a name="cmd"><h4>Running in Command-line Mode</h4></a>
+
+    <ol>
+      <li>
+        <p>Edit the <b>DirectorySearch.txt</b> file and specify which paths ICUTZU will include and exclude in its search. ICUTZU searches directories recursively.</p>
+        <ul>
+          <li><p><i>all</i> means include all file system roots in the search (for Windows this will include all drives, for Unix-based systems this will include the root directory).</p></li>
+          <li><p><i>+path</i> means to include <i>path</i> in the search.</p></li>
+          <li><p><i>-path</i> means to exclude <i>path</i> in the search.</p></li>
+        </ul>
+      </li>
+      <li>
+        <p>Edit the <b>runicutzuenv.X</b> file, where X depends on your system (<b>.sh</b> for Unix-based systems, <b>.bat</b> for Windows, <b>.cmd</b> for Windows NT):</p>
+        <ul><table>
+          <tr><td valign=top><li><p><b>JAVA_HOME</b>:</td><td>Set this to the path where java is installed on your machine (ie. C:\Program Files\Java\jdk1.5.0 for Windows or /usr/jdk1.5.0 for Unix).</p></li></td></tr>
+          <tr><td valign=top><li><p><b>NOGUI</b>:</td><td>Set this to <b>true</b> to run in command-line mode. If set to <b>false</b>, ICUTZU will run in <a href="#gui">GUI mode</a> and the DISCOVERONLY option will be ignored.</p></li></td></tr>
+          <tr><td valign=top><li><p><b>DISCOVERONLY</b>:</td><td>Set this to <b>true</b> the first time ICUTZU is run. When true, ICUTZU will build a list of updatable ICU4J jar files and save it to ICUList.txt. When false, ICUTZU will procede to update the files listed in ICUList.txt.</p></li></td></tr>
+          <tr><td valign=top><li><p><b>SILENTPATCH</b>:</td><td>Set this to <b>false</b> for normal running, or true to give no output except in the case of an error. This option does not effect the content of the log file.</p></li></td></tr>
+          <tr><td valign=top><li><p><b>OFFLINE</b>:</td><td>Set this to <b>false</b> for normal running, or true to keep ICUTZU from checking online for the latest time zone data and to use the local copy bundled with ICUTZU instead.</p></li></td></tr>
+        </table></ul>
+      </li>
+      <li><p>Run <b>runicutzu.X</b> where X depends on your system (as above). This will build a list of updatable ICU4J files and save it to ICUList.txt.</p></li>
+      <li><p>Edit the <b>runicutzuenv.X</b> file again, and set DISCOVERONLY to <b>false</b>..</p></li>
+      <li><p>Run <b>runicutzu.X</b> again. This will update the files listed in ICUList.txt.</p></li>
+    </ol>
+
+    <a name="restore"><h3>Restoring Changes</h3></a>
+
+    <p>
+      When updating an icu4j jar file, the original file is copied to a backup location which is reported during runtime in the console output (which can also be found in the log file).
+      <ul>
+        <li><p>The backup location is of the form <i>[icutzu home]<b>/Temp/</b>[prefix]<b>/</b>[prefix]~[unique id]<b>.jar</b></i>, where <i>[prefix]</i> is the filename of the original icu4j jar file without the .jar at the end.</p></li>
+        <li><p>The txt file in the same directory that shares the same <i>[unique id]</i> specifies the original location.</p></li>
+        <li>
+          <p>Example: If ICUTZU is running from <b>c:\icutzu</b> and updates <b>c:\icu4j_3-6.jar</b>, the backup will be stored in <b>c:\icutzu\icu4j\icu4j_3-6~</b><i>[unique id]</i><b>.jar</b>.</p>
+          <p>The file <b>c:\icutzu\icu4j\icu4j_3-6~</b><i>[unique id]</i><b>.txt</b> will contain the original path of icu4j_3-6.jar.</p>
+        </li>
+      </ul>
+    </p>
+
+
+  </body>
+</html>
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzu.bat b/src/com/ibm/icu/dev/tool/tzu/runicutzu.bat
new file mode 100755
index 0000000..6f0eb2f
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.bat
@@ -0,0 +1,68 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007-2008 International Business Machines Corporation and         *
+rem * others. All Rights Reserved.                                                *
+rem *******************************************************************************
+
+@echo.
+@echo *********** Welcome to the ICU4J Time Zone Update Utility (ICUTZU) ***********
+
+rem Set ICUTZU_HOME to the current directory.
+set ICUTZU_HOME=%~dp0
+@echo ICUTZU Home: %ICUTZU_HOME%
+@echo.
+
+rem Make sure certain files are present.
+IF NOT EXIST "%ICUTZU_HOME%icutzu.jar" GOTO MissingICUTZUJAR
+IF NOT EXIST "%ICUTZU_HOME%icu4j.jar" GOTO MissingICU4JJAR
+IF NOT EXIST "%ICUTZU_HOME%runicutzuenv.bat" GOTO MissingICUTZUENV
+
+rem Set environmental variables.
+call "%ICUTZU_HOME%runicutzuenv.bat"
+IF NOT EXIST "%JAVA_HOME%\bin\java.exe" GOTO MissingJAVAHOME
+
+rem Create a temporary directory if one doesn't exit already.
+IF EXIST "%ICUTZU_HOME%Temp" GOTO TempAlreadyExists
+mkdir "%ICUTZU_HOME%Temp"
+:TempAlreadyExists
+
+
+
+rem Run the ICUTZU tool.
+@echo.
+@echo Launching the ICU4J Time Zone Update Utility (ICUTZU)...
+@echo "%JAVA_HOME%\bin\java.exe" -cp "%ICUTZU_HOME%icutzu.jar" -Dnogui=%NOGUI% -Ddiscoveronly=%DISCOVERONLY% -Dsilentpatch=%SILENTPATCH% -Doffline=%OFFLINE% com.ibm.icu.dev.tool.tzu.ICUTZUMain "%ICUTZU_HOME%\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+@echo.
+"%JAVA_HOME%\bin\java.exe" -cp "%ICUTZU_HOME%icutzu.jar" -Dnogui=%NOGUI% -Ddiscoveronly=%DISCOVERONLY% -Dsilentpatch=%SILENTPATCH% -Doffline=%OFFLINE% com.ibm.icu.dev.tool.tzu.ICUTZUMain "%ICUTZU_HOME%\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+IF ERRORLEVEL==0 GOTO Success
+GOTO Failure
+
+
+
+:MissingICUTZUJAR
+@echo The ICU4J Time Zone Update Utility (icutzu.jar) doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingICU4JJAR
+@echo ICU for Java (icu4j.jar) doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingICUTZUENV
+@echo runicutzuenv.bat file doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingJAVAHOME
+@echo java.exe does not exist in %JAVA_HOME%\bin. Please update the JAVA_HOME enviroment variable in runicutzuenv.bat
+GOTO Failure
+
+:Success
+@echo.
+@echo End of ICU4J Time Zone Update Utility (ICUTZU) completed successfully.
+GOTO Exit
+
+:Failure
+@echo.
+@echo ICU4J Time Zone Update Utility (ICUTZU) did not complete successfully.
+GOTO Exit
+
+:Exit
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzu.cmd b/src/com/ibm/icu/dev/tool/tzu/runicutzu.cmd
new file mode 100755
index 0000000..1172e86
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.cmd
@@ -0,0 +1,68 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007-2008 International Business Machines Corporation and         *
+rem * others. All Rights Reserved.                                                *
+rem *******************************************************************************
+
+@echo.
+@echo *********** Welcome to the ICU4J Time Zone Update Utility (ICUTZU) ***********
+
+rem Set ICUTZU_HOME to the current directory.
+set ICUTZU_HOME=/* ENTER YOUR ICUTZU HOME PATH LIKE C:\DESKTOP\ICUTZU\ */
+@echo ICUTZU Home: %ICUTZU_HOME%
+@echo.
+
+rem Make sure certain files are present.
+IF NOT EXIST "%ICUTZU_HOME%icutzu.jar" GOTO MissingICUTZUJAR
+IF NOT EXIST "%ICUTZU_HOME%icu4j.jar" GOTO MissingICU4JJAR
+IF NOT EXIST "%ICUTZU_HOME%runicutzuenv.cmd" GOTO MissingICUTZUENV
+
+rem Set environmental variables.
+call "%ICUTZU_HOME%runicutzuenv.cmd"
+IF NOT EXIST "%JAVA_HOME%\bin\java.exe" GOTO MissingJAVAHOME
+
+rem Create a temporary directory if one doesn't exit already.
+IF EXIST "%ICUTZU_HOME%Temp" GOTO TempAlreadyExists
+mkdir "%ICUTZU_HOME%Temp"
+:TempAlreadyExists
+
+
+
+rem Run the ICUTZU tool.
+@echo.
+@echo Launching the ICU4J Time Zone Update Utility (ICUTZU)...
+@echo "%JAVA_HOME%\bin\java.exe" -cp "%ICUTZU_HOME%icutzu.jar" -Dnogui=%NOGUI% -Ddiscoveronly=%DISCOVERONLY% -Dsilentpatch=%SILENTPATCH% -Doffline=%OFFLINE% com.ibm.icu.dev.tool.tzu.ICUTZUMain "%ICUTZU_HOME%\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+@echo.
+"%JAVA_HOME%\bin\java.exe" -cp "%ICUTZU_HOME%icutzu.jar" -Dnogui=%NOGUI% -Ddiscoveronly=%DISCOVERONLY% -Dsilentpatch=%SILENTPATCH% -Doffline=%OFFLINE% com.ibm.icu.dev.tool.tzu.ICUTZUMain "%ICUTZU_HOME%\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+IF ERRORLEVEL==0 GOTO Success
+GOTO Failure
+
+
+
+:MissingICUTZUJAR
+@echo The ICU4J Time Zone Update Utility (icutzu.jar) doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingICU4JJAR
+@echo ICU for Java (icu4j.jar) doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingICUTZUENV
+@echo runicutzuenv.cmd file doesn't exist in %ICUTZU_HOME%.
+GOTO Failure
+
+:MissingJAVAHOME
+@echo java.exe does not exist in %JAVA_HOME%\bin. Please update the JAVA_HOME enviroment variable in runicutzuenv.cmd
+GOTO Failure
+
+:Success
+@echo.
+@echo End of ICU4J Time Zone Update Utility (ICUTZU) completed successfully.
+GOTO Exit
+
+:Failure
+@echo.
+@echo ICU4J Time Zone Update Utility (ICUTZU) did not complete successfully.
+GOTO Exit
+
+:Exit
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzu.sh b/src/com/ibm/icu/dev/tool/tzu/runicutzu.sh
new file mode 100755
index 0000000..483b40d
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzu.sh
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+# Copyright (c) 2007-2008 International Business Machines Corporation and others.
+# All rights reserved
+
+MissingICUTZUJAR() {
+  echo "The ICU4J Time Zone Update Utility (icutzu.jar) doesn't exist in $ICUTZU_HOME"
+  Failure
+}
+
+MissingICU4JJAR() {
+  echo "ICU for Java (icu4j.jar) doesn't exist in $ICUTZU_HOME"
+  Failure
+}
+
+MissingICUTZUENV() {
+  echo "runicutzuenv.sh file doesn't exist in $ICUTZU_HOME"
+  Failure
+}
+
+MissingJAVAHOME() {
+  echo "java does not exist in $JAVA_HOME/bin. Please update the JAVA_HOME enviroment variable in runicutzuenv.sh"
+  Failure
+}
+
+Success() {
+  echo
+  echo "End of ICU4J Time Zone Update Utility (ICUTZU) completed successfully."
+  exit 0
+}
+
+Failure() {
+  echo
+  echo "ICU4J Time Zone Update Utility (ICUTZU) did not complete successfully."
+  exit -1
+}
+
+
+echo ""
+echo "*********** Welcome to the ICU4J Time Zone Update Utility (ICUTZU) ***********"
+
+# Set ICUTZU_HOME to the current directory.
+ICUTZU_HOME=`pwd`
+echo "ICUTZU Home: $ICUTZU_HOME"
+echo
+
+# Make sure certain files are present.
+if [ ! -f "$ICUTZU_HOME/icutzu.jar" ] ; then MissingICUTZUJAR ; fi
+if [ ! -f "$ICUTZU_HOME/icu4j.jar" ] ; then MissingICU4JJAR ; fi
+if [ ! -f "$ICUTZU_HOME/runicutzuenv.sh" ] ; then MissingICUTZUENV ; fi
+
+# Set environmental variables.
+. "$ICUTZU_HOME/runicutzuenv.sh"
+if [ ! -f "$JAVA_HOME/bin/java" ] ; then MissingJAVAHOME ; fi
+
+
+# Create a temporary directory if one doesn't exit already.
+if [ ! -d "$ICUTZU_HOME/Temp" ] ; then mkdir "$ICUTZU_HOME/Temp" ; fi
+
+# Run the ICUTZU tool.
+echo
+echo "Launching the ICU4J Time Zone Update Utility (ICUTZU)..."
+echo "\"$JAVA_HOME/bin/java\" -cp \"$ICUTZU_HOME/icutzu.jar\" -Dnogui=$NOGUI -Ddiscoveronly=$DISCOVERONLY -Dsilentpatch=$SILENTPATCH -Doffline=$OFFLINE com.ibm.icu.dev.tool.tzu.ICUTZUMain \"$ICUTZU_HOME/\" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif"
+echo
+
+"$JAVA_HOME/bin/java" -cp "$ICUTZU_HOME/icutzu.jar" -Dnogui=$NOGUI -Ddiscoveronly=$DISCOVERONLY -Dsilentpatch=$SILENTPATCH -Doffline=$OFFLINE com.ibm.icu.dev.tool.tzu.ICUTZUMain "$ICUTZU_HOME/" DirectorySearch.txt ICUList.txt zoneinfo.res Temp icu.gif
+
+# Test the exit code.
+if [ $? -eq "0" ] ; then
+  Success
+else
+  Failure
+fi
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.bat b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.bat
new file mode 100755
index 0000000..f3ae1e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.bat
@@ -0,0 +1,28 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007-2008 International Business Machines Corporation and         *
+rem * others. All Rights Reserved.                                                *
+rem *******************************************************************************
+
+
+rem Set JAVA_HOME to the Java installation directory.
+IF  EXIST "%JAVA_HOME%" GOTO Next
+set JAVA_HOME=/*ENTER JAVA PATH UPTO JRE*/
+:Next
+@echo JAVA_HOME=%JAVA_HOME%
+
+rem Set whether the GUI will be run or not.
+set NOGUI=true
+@echo NOGUI=%NOGUI%
+
+rem Set whether the cmd-line utility will only discover update icu4j files.
+set DISCOVERONLY=true
+@echo DISCOVERONLY=%DISCOVERONLY%
+
+rem Set whether the cmd-line utility will run silently.
+set SILENTPATCH=false
+@echo SILENTPATCH=%SILENTPATCH%
+
+rem Set whether the cmd-line utility will not use online sources.
+set OFFLINE=false
+@echo OFFLINE=%OFFLINE%
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.cmd b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.cmd
new file mode 100755
index 0000000..f3ae1e6
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.cmd
@@ -0,0 +1,28 @@
+@echo off
+rem *******************************************************************************
+rem * Copyright (C) 2007-2008 International Business Machines Corporation and         *
+rem * others. All Rights Reserved.                                                *
+rem *******************************************************************************
+
+
+rem Set JAVA_HOME to the Java installation directory.
+IF  EXIST "%JAVA_HOME%" GOTO Next
+set JAVA_HOME=/*ENTER JAVA PATH UPTO JRE*/
+:Next
+@echo JAVA_HOME=%JAVA_HOME%
+
+rem Set whether the GUI will be run or not.
+set NOGUI=true
+@echo NOGUI=%NOGUI%
+
+rem Set whether the cmd-line utility will only discover update icu4j files.
+set DISCOVERONLY=true
+@echo DISCOVERONLY=%DISCOVERONLY%
+
+rem Set whether the cmd-line utility will run silently.
+set SILENTPATCH=false
+@echo SILENTPATCH=%SILENTPATCH%
+
+rem Set whether the cmd-line utility will not use online sources.
+set OFFLINE=false
+@echo OFFLINE=%OFFLINE%
diff --git a/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.sh b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.sh
new file mode 100755
index 0000000..e7ed562
--- /dev/null
+++ b/src/com/ibm/icu/dev/tool/tzu/runicutzuenv.sh
@@ -0,0 +1,24 @@
+# *******************************************************************************
+# * Copyright (C) 2007-2008 International Business Machines Corporation and         *
+# * others. All Rights Reserved.                                                *
+# *******************************************************************************
+
+#set java path in JAVA_HOME
+JAVA_HOME=/*ENTER JAVA PATH UPTO JRE*/ 
+echo "JAVA_HOME=$JAVA_HOME"
+
+#set NOGUI
+NOGUI=true 
+echo "NOGUI=$NOGUI"
+
+#set DISCOVERONLY
+DISCOVERONLY=true    
+echo "DISCOVERONLY=$DISCOVERONLY"
+
+#set SILENTPATCH
+SILENTPATCH=false
+echo "SILENTPATCH=$SILENTPATCH"
+
+#set OFFLINE
+OFFLINE=false
+echo "OFFLINE=$OFFLINE"
diff --git a/src/com/ibm/icu/impl/Assert.java b/src/com/ibm/icu/impl/Assert.java
new file mode 100644
index 0000000..7d8b113
--- /dev/null
+++ b/src/com/ibm/icu/impl/Assert.java
@@ -0,0 +1,23 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2005-2006, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+// 1.3 compatibility layer
+public class Assert {
+    public static void fail(Exception e) {
+        fail(e.toString()); // can't wrap exceptions in jdk 1.3
+    }
+    public static void fail(String msg) {
+        throw new IllegalStateException("failure '" + msg + "'");
+    }
+    public static void assrt(boolean val) {
+        if (!val) throw new IllegalStateException("assert failed");
+    }
+    public static void assrt(String msg, boolean val) {
+        if (!val) throw new IllegalStateException("assert '" + msg + "' failed");
+    }
+}
diff --git a/src/com/ibm/icu/impl/BOCU.java b/src/com/ibm/icu/impl/BOCU.java
new file mode 100644
index 0000000..62ffad0
--- /dev/null
+++ b/src/com/ibm/icu/impl/BOCU.java
@@ -0,0 +1,378 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * <p>Binary Ordered Compression for Unicode</p>
+ * 
+ * <p>Users are strongly encouraged to read the ICU paper on 
+ * <a href="http://www.icu-project.org/docs/papers/binary_ordered_compression_for_unicode.html">
+ * BOCU</a> before attempting to use this class.</p>
+ * 
+ * <p>BOCU is used to compress unicode text into a stream of unsigned
+ * bytes.  For many kinds of text the compression compares favorably
+ * to UTF-8, and for some kinds of text (such as CJK) it does better.
+ * The resulting bytes will compare in the same order as the original
+ * code points.  The byte stream does not contain the values 0, 1, or
+ * 2.</p>
+ * 
+ * <p>One example of a use of BOCU is in {@link 
+ * com.ibm.icu.text.Collator#getCollationKey(String)} for a RuleBasedCollator object with 
+ * collation strength IDENTICAL. The result CollationKey will consist of the 
+ * collation order of the source string followed by the BOCU result of the 
+ * source string. 
+ * </p> 
+ *
+ * <p>Unlike a UTF encoding, BOCU-compressed text is not suitable for
+ * random access.</p>
+ * 
+ * <p>Method: Slope Detection<br> Remember the previous code point
+ * (initial 0).  For each code point in the string, encode the
+ * difference with the previous one.  Similar to a UTF, the length of
+ * the byte sequence is encoded in the lead bytes.  Unlike a UTF, the
+ * trail byte values may overlap with lead/single byte values.  The
+ * signedness of the difference must be encoded as the most
+ * significant part.</p>
+ *
+ * <p>We encode differences with few bytes if their absolute values
+ * are small.  For correct ordering, we must treat the entire value
+ * range -10ffff..+10ffff in ascending order, which forbids encoding
+ * the sign and the absolute value separately. Instead, we split the
+ * lead byte range in the middle and encode non-negative values going
+ * up and negative values going down.</p>
+ *
+ * <p>For very small absolute values, the difference is added to a
+ * middle byte value for single-byte encoded differences.  For
+ * somewhat larger absolute values, the difference is divided by the
+ * number of byte values available, the modulo is used for one trail
+ * byte, and the remainder is added to a lead byte avoiding the
+ * single-byte range.  For large absolute values, the difference is
+ * similarly encoded in three bytes. (Syn Wee, I need examples
+ * here.)</p>
+ *
+ * <p>BOCU does not use byte values 0, 1, or 2, but uses all other
+ * byte values for lead and single bytes, so that the middle range of
+ * single bytes is as large as possible.</p>
+ *
+ * <p>Note that the lead byte ranges overlap some, but that the
+ * sequences as a whole are well ordered. I.e., even if the lead byte
+ * is the same for sequences of different lengths, the trail bytes
+ * establish correct order.  It would be possible to encode slightly
+ * larger ranges for each length (>1) by subtracting the lower bound
+ * of the range. However, that would also slow down the calculation.
+ * (Syn Wee, need an example).</p>
+ *
+ * <p>For the actual string encoding, an optimization moves the
+ * previous code point value to the middle of its Unicode script block
+ * to minimize the differences in same-script text runs.  (Syn Wee,
+ * need an example.)</p>
+ *
+ * @author Syn Wee Quek
+ * @since release 2.2, May 3rd 2002
+ */
+public class BOCU 
+{      
+    // public constructors --------------------------------------------------
+    
+    // public methods -------------------------------------------------------
+        
+    /**
+     * <p>Encode the code points of a string as a sequence of bytes,
+     * preserving lexical order.</p>
+     * <p>The minimum size of buffer required for the compression can be 
+     * preflighted by getCompressionLength(String).</p>
+     * @param source text source
+     * @param buffer output buffer
+     * @param offset to start writing to
+     * @return end offset where the writing stopped
+     * @see #getCompressionLength(String)
+     * @exception ArrayIndexOutOfBoundsException thrown if size of buffer is 
+     *            too small for the output.
+     */
+    public static int compress(String source, byte buffer[], int offset) 
+    {
+        int prev = 0;
+        UCharacterIterator iterator = UCharacterIterator.getInstance(source);
+        int codepoint = iterator.nextCodePoint();
+        while (codepoint != UCharacterIterator.DONE) {
+            if (prev < 0x4e00 || prev >= 0xa000) {
+                prev = (prev & ~0x7f) - SLOPE_REACH_NEG_1_;
+            } 
+            else {
+                // Unihan U+4e00..U+9fa5:
+                // double-bytes down from the upper end
+                prev = 0x9fff - SLOPE_REACH_POS_2_;
+            }
+        
+            offset = writeDiff(codepoint - prev, buffer, offset);
+            prev = codepoint;
+            codepoint = iterator.nextCodePoint();
+        }
+        return offset;
+    }
+        
+    /** 
+     * Return the number of  bytes that compress() would write.
+     * @param source text source string
+     * @return the length of the BOCU result 
+     * @see #compress(String, byte[], int)
+     */
+    public static int getCompressionLength(String source) 
+    {
+        int prev = 0;
+        int result = 0;
+        UCharacterIterator iterator =  UCharacterIterator.getInstance(source);
+        int codepoint = iterator.nextCodePoint();
+        while (codepoint != UCharacterIterator.DONE) {
+            if (prev < 0x4e00 || prev >= 0xa000) {
+                prev = (prev & ~0x7f) - SLOPE_REACH_NEG_1_;
+            } 
+            else {
+                // Unihan U+4e00..U+9fa5:
+                // double-bytes down from the upper end
+                prev = 0x9fff - SLOPE_REACH_POS_2_;
+            }
+        
+            codepoint = iterator.nextCodePoint();
+            result += lengthOfDiff(codepoint - prev);
+            prev = codepoint;
+        }
+        return result;
+    }
+
+    // public setter methods -------------------------------------------------
+        
+    // public getter methods ------------------------------------------------
+            
+    // public other methods -------------------------------------------------
+    
+    // protected constructor ------------------------------------------------
+      
+    // protected data members ------------------------------------------------
+    
+    // protected methods -----------------------------------------------------
+ 
+    // private data members --------------------------------------------------
+    
+    /** 
+     * Do not use byte values 0, 1, 2 because they are separators in sort keys.
+     */
+    private static final int SLOPE_MIN_ = 3;
+    private static final int SLOPE_MAX_ = 0xff;
+    private static final int SLOPE_MIDDLE_ = 0x81;
+    private static final int SLOPE_TAIL_COUNT_ = SLOPE_MAX_ - SLOPE_MIN_ + 1;
+    //private static final int SLOPE_MAX_BYTES_ = 4;
+
+    /**
+     * Number of lead bytes:
+     * 1        middle byte for 0
+     * 2*80=160 single bytes for !=0
+     * 2*42=84  for double-byte values
+     * 2*3=6    for 3-byte values
+     * 2*1=2    for 4-byte values
+     *
+     * The sum must be <=SLOPE_TAIL_COUNT.
+     *
+     * Why these numbers?
+     * - There should be >=128 single-byte values to cover 128-blocks
+     *   with small scripts.
+     * - There should be >=20902 single/double-byte values to cover Unihan.
+     * - It helps CJK Extension B some if there are 3-byte values that cover
+     *   the distance between them and Unihan.
+     *   This also helps to jump among distant places in the BMP.
+     * - Four-byte values are necessary to cover the rest of Unicode.
+     *
+     * Symmetrical lead byte counts are for convenience.
+     * With an equal distribution of even and odd differences there is also
+     * no advantage to asymmetrical lead byte counts.
+     */
+    private static final int SLOPE_SINGLE_ = 80;
+    private static final int SLOPE_LEAD_2_ = 42;
+    private static final int SLOPE_LEAD_3_ = 3;
+    //private static final int SLOPE_LEAD_4_ = 1;
+
+    /** 
+     * The difference value range for single-byters.
+     */
+    private static final int SLOPE_REACH_POS_1_ = SLOPE_SINGLE_;
+    private static final int SLOPE_REACH_NEG_1_ = (-SLOPE_SINGLE_);
+
+    /** 
+     * The difference value range for double-byters.
+     */
+    private static final int SLOPE_REACH_POS_2_ = 
+        SLOPE_LEAD_2_ * SLOPE_TAIL_COUNT_ + SLOPE_LEAD_2_ - 1;
+    private static final int SLOPE_REACH_NEG_2_ = (-SLOPE_REACH_POS_2_ - 1);
+
+    /** 
+     * The difference value range for 3-byters.
+     */
+    private static final int SLOPE_REACH_POS_3_ = SLOPE_LEAD_3_ 
+        * SLOPE_TAIL_COUNT_ 
+        * SLOPE_TAIL_COUNT_ 
+        + (SLOPE_LEAD_3_ - 1)
+        * SLOPE_TAIL_COUNT_ +
+        (SLOPE_TAIL_COUNT_ - 1);
+    private static final int SLOPE_REACH_NEG_3_ = (-SLOPE_REACH_POS_3_ - 1);
+
+    /** 
+     * The lead byte start values.
+     */
+    private static final int SLOPE_START_POS_2_ = SLOPE_MIDDLE_ 
+        + SLOPE_SINGLE_ + 1;
+    private static final int SLOPE_START_POS_3_ = SLOPE_START_POS_2_ 
+        + SLOPE_LEAD_2_;
+    private static final int SLOPE_START_NEG_2_ = SLOPE_MIDDLE_ + 
+        SLOPE_REACH_NEG_1_;
+    private static final int SLOPE_START_NEG_3_ = SLOPE_START_NEG_2_
+        - SLOPE_LEAD_2_;
+                                                                                                        
+    // private constructor ---------------------------------------------------
+        
+    /**
+     * Constructor private to prevent initialization
+     */
+    ///CLOVER:OFF
+    private BOCU()
+    {
+    }            
+    ///CLOVER:ON                                                                                       
+    
+    // private methods -------------------------------------------------------
+    
+    /**
+     * Integer division and modulo with negative numerators
+     * yields negative modulo results and quotients that are one more than
+     * what we need here.
+     * @param number which operations are to be performed on
+     * @param factor the factor to use for division
+     * @return (result of division) << 32 | modulo 
+     */
+    private static final long getNegDivMod(int number, int factor) 
+    {
+        int modulo = number % factor; 
+        long result = number / factor;
+        if (modulo < 0) { 
+            -- result; 
+            modulo += factor; 
+        } 
+        return (result << 32) | modulo;
+    }
+        
+    /**
+     * Encode one difference value -0x10ffff..+0x10ffff in 1..3 bytes,
+     * preserving lexical order
+     * @param diff
+     * @param buffer byte buffer to append to
+     * @param offset to the byte buffer to start appending
+     * @return end offset where the appending stops
+     */
+    private static final int writeDiff(int diff, byte buffer[], int offset) 
+    {
+        if (diff >= SLOPE_REACH_NEG_1_) {
+            if (diff <= SLOPE_REACH_POS_1_) {
+                buffer[offset ++] = (byte)(SLOPE_MIDDLE_ + diff);
+            } 
+            else if (diff <= SLOPE_REACH_POS_2_) {
+                buffer[offset ++] = (byte)(SLOPE_START_POS_2_ 
+                                           + (diff / SLOPE_TAIL_COUNT_));
+                buffer[offset ++] = (byte)(SLOPE_MIN_ + 
+                                           (diff % SLOPE_TAIL_COUNT_));
+            } 
+            else if (diff <= SLOPE_REACH_POS_3_) {
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ 
+                                            + (diff % SLOPE_TAIL_COUNT_));
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ 
+                                            + (diff % SLOPE_TAIL_COUNT_));
+                buffer[offset] = (byte)(SLOPE_START_POS_3_ 
+                                        + (diff / SLOPE_TAIL_COUNT_));
+                offset += 3;
+            } 
+            else {
+                buffer[offset + 3] = (byte)(SLOPE_MIN_ 
+                                            + diff % SLOPE_TAIL_COUNT_);
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset] = (byte)(SLOPE_MIN_ 
+                                        + diff % SLOPE_TAIL_COUNT_);
+                diff /= SLOPE_TAIL_COUNT_;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ 
+                                            + diff % SLOPE_TAIL_COUNT_);
+                buffer[offset] = (byte)SLOPE_MAX_;
+                offset += 4;
+            }
+        } 
+        else {
+            long division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+            int modulo = (int)division;
+            if (diff >= SLOPE_REACH_NEG_2_) {
+                diff = (int)(division >> 32);
+                buffer[offset ++] = (byte)(SLOPE_START_NEG_2_ + diff);
+                buffer[offset ++] = (byte)(SLOPE_MIN_ + modulo);
+            } 
+            else if (diff >= SLOPE_REACH_NEG_3_) {
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ + modulo);
+                diff = (int)(division >> 32);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                diff = (int)(division >> 32);
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ + modulo);
+                buffer[offset] = (byte)(SLOPE_START_NEG_3_ + diff);
+                offset += 3;
+            } 
+            else {
+                buffer[offset + 3] = (byte)(SLOPE_MIN_ + modulo);
+                diff = (int)(division >> 32);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                diff = (int)(division >> 32);
+                buffer[offset + 2] = (byte)(SLOPE_MIN_ + modulo);
+                division = getNegDivMod(diff, SLOPE_TAIL_COUNT_);
+                modulo = (int)division;
+                buffer[offset + 1] = (byte)(SLOPE_MIN_ + modulo);
+                buffer[offset] = SLOPE_MIN_;
+                offset += 4;
+            }
+        }
+        return offset;
+    }
+        
+    /**
+     * How many bytes would writeDiff() write? 
+     * @param diff
+     */
+    private static final int lengthOfDiff(int diff) 
+    {
+        if (diff >= SLOPE_REACH_NEG_1_) {
+            if (diff <= SLOPE_REACH_POS_1_) {
+                return 1;
+            } 
+            else if (diff <= SLOPE_REACH_POS_2_) {
+                return 2;
+            } 
+            else if(diff <= SLOPE_REACH_POS_3_) {
+                return 3;
+            } 
+            else {
+                return 4;
+            }
+        } 
+        else {
+            if (diff >= SLOPE_REACH_NEG_2_) {
+                return 2;
+            } 
+            else if (diff >= SLOPE_REACH_NEG_3_) {
+                return 3;
+            } 
+            else {
+                return 4;
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/ByteBuffer.java b/src/com/ibm/icu/impl/ByteBuffer.java
new file mode 100644
index 0000000..085db62
--- /dev/null
+++ b/src/com/ibm/icu/impl/ByteBuffer.java
@@ -0,0 +1,72 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//##/*
+//## * *****************************************************************************
+//## * Copyright (C) 2006-2007, International Business Machines
+//## * Corporation and others. All Rights Reserved.
+//## * *****************************************************************************
+//## */
+//##// dlf13 internal 1.3 compatibility only
+//##
+//##package com.ibm.icu.impl;
+//##
+//##/**
+//## * @internal
+//## */
+//##public final class ByteBuffer {
+//##    private byte[] data;
+//##
+//##    private int pos;
+//##
+//##    private int limit;
+//##
+//##    private ByteBuffer() {
+//##    }
+//##
+//##    public byte[] array() {
+//##        byte[] result = new byte[limit];
+//##        for (int i = 0; i < limit; ++i) {
+//##            result[i] = data[i];
+//##        }
+//##        return result;
+//##    }
+//##
+//##    public static ByteBuffer wrap(byte[] data) {
+//##        if (data == null)
+//##            throw new NullPointerException();
+//##        ByteBuffer result = new ByteBuffer();
+//##        result.data = data;
+//##        result.pos = 0;
+//##        result.limit = data.length;
+//##        return result;
+//##    }
+//##
+//##    public int limit() {
+//##        return limit;
+//##    }
+//##
+//##    public int remaining() {
+//##        return limit - pos;
+//##    }
+//##
+//##    public byte get() {
+//##        if (pos < limit)
+//##            return data[pos++];
+//##        throw new IndexOutOfBoundsException();
+//##    }
+//##
+//##    public void get(byte[] dst, int offset, int length) {
+//##        if (offset < 0 || offset + length > dst.length || pos + length > limit) {
+//##            throw new IndexOutOfBoundsException();
+//##        }
+//##        for (int i = 0; i < length; ++i) {
+//##            dst[offset++] = data[pos++];
+//##        }
+//##    }
+//##    public static final ByteBuffer allocate(int size){
+//##        ByteBuffer ret = new ByteBuffer();
+//##        ret.data = new byte[size];
+//##        return ret;
+//##    }
+//##}
+//#endif
diff --git a/src/com/ibm/icu/impl/CalendarAstronomer.java b/src/com/ibm/icu/impl/CalendarAstronomer.java
new file mode 100644
index 0000000..21af6f3
--- /dev/null
+++ b/src/com/ibm/icu/impl/CalendarAstronomer.java
@@ -0,0 +1,1665 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.*;
+
+/**
+ * <code>CalendarAstronomer</code> is a class that can perform the calculations to
+ * determine the positions of the sun and moon, the time of sunrise and
+ * sunset, and other astronomy-related data.  The calculations it performs
+ * are in some cases quite complicated, and this utility class saves you
+ * the trouble of worrying about them.
+ * <p>
+ * The measurement of time is a very important part of astronomy.  Because
+ * astronomical bodies are constantly in motion, observations are only valid
+ * at a given moment in time.  Accordingly, each <code>CalendarAstronomer</code>
+ * object has a <code>time</code> property that determines the date
+ * and time for which its calculations are performed.  You can set and
+ * retrieve this property with {@link #setDate setDate}, {@link #getDate getDate}
+ * and related methods.
+ * <p>
+ * Almost all of the calculations performed by this class, or by any
+ * astronomer, are approximations to various degrees of accuracy.  The
+ * calculations in this class are mostly modelled after those described
+ * in the book
+ * <a href="http://www.amazon.com/exec/obidos/ISBN=0521356997" target="_top">
+ * Practical Astronomy With Your Calculator</a>, by Peter J.
+ * Duffett-Smith, Cambridge University Press, 1990.  This is an excellent
+ * book, and if you want a greater understanding of how these calculations
+ * are performed it a very good, readable starting point.
+ * <p>
+ * <strong>WARNING:</strong> This class is very early in its development, and
+ * it is highly likely that its API will change to some degree in the future.
+ * At the moment, it basically does just enough to support {@link com.ibm.icu.util.IslamicCalendar}
+ * and {@link com.ibm.icu.util.ChineseCalendar}.
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @internal
+ */
+public class CalendarAstronomer {
+    
+    //-------------------------------------------------------------------------
+    // Astronomical constants
+    //-------------------------------------------------------------------------
+
+    /**
+     * The number of standard hours in one sidereal day.
+     * Approximately 24.93.
+     * @internal
+     */
+    public static final double SIDEREAL_DAY = 23.93446960027;
+    
+    /**
+     * The number of sidereal hours in one mean solar day.
+     * Approximately 24.07.
+     * @internal
+     */
+    public static final double SOLAR_DAY =  24.065709816;
+    
+    /**
+     * The average number of solar days from one new moon to the next.  This is the time
+     * it takes for the moon to return the same ecliptic longitude as the sun.
+     * It is longer than the sidereal month because the sun's longitude increases
+     * during the year due to the revolution of the earth around the sun.
+     * Approximately 29.53.
+     *
+     * @see #SIDEREAL_MONTH
+     * @internal
+     */
+    public static final double SYNODIC_MONTH = 29.530588853;
+    
+    /**
+     * The average number of days it takes
+     * for the moon to return to the same ecliptic longitude relative to the
+     * stellar background.  This is referred to as the sidereal month.
+     * It is shorter than the synodic month due to
+     * the revolution of the earth around the sun.
+     * Approximately 27.32.
+     *
+     * @see #SYNODIC_MONTH
+     * @internal
+     */
+    public static final double SIDEREAL_MONTH = 27.32166;
+    
+    /**
+     * The average number number of days between successive vernal equinoxes.
+     * Due to the precession of the earth's
+     * axis, this is not precisely the same as the sidereal year.
+     * Approximately 365.24
+     *
+     * @see #SIDEREAL_YEAR
+     * @internal
+     */
+    public static final double TROPICAL_YEAR = 365.242191;
+    
+    /**
+     * The average number of days it takes
+     * for the sun to return to the same position against the fixed stellar
+     * background.  This is the duration of one orbit of the earth about the sun
+     * as it would appear to an outside observer.
+     * Due to the precession of the earth's
+     * axis, this is not precisely the same as the tropical year.
+     * Approximately 365.25.
+     *
+     * @see #TROPICAL_YEAR
+     * @internal
+     */
+    public static final double SIDEREAL_YEAR = 365.25636;
+
+    //-------------------------------------------------------------------------
+    // Time-related constants
+    //-------------------------------------------------------------------------
+
+    /** 
+     * The number of milliseconds in one second. 
+     * @internal
+     */
+    public static final int  SECOND_MS = 1000;
+
+    /** 
+     * The number of milliseconds in one minute. 
+     * @internal
+     */
+    public static final int  MINUTE_MS = 60*SECOND_MS;
+
+    /** 
+     * The number of milliseconds in one hour. 
+     * @internal
+     */
+    public static final int  HOUR_MS   = 60*MINUTE_MS;
+
+    /** 
+     * The number of milliseconds in one day. 
+     * @internal
+     */
+    public static final long DAY_MS    = 24*HOUR_MS;
+
+    /**
+     * The start of the julian day numbering scheme used by astronomers, which
+     * is 1/1/4713 BC (Julian), 12:00 GMT.  This is given as the number of milliseconds
+     * since 1/1/1970 AD (Gregorian), a negative number.
+     * Note that julian day numbers and
+     * the Julian calendar are <em>not</em> the same thing.  Also note that
+     * julian days start at <em>noon</em>, not midnight.
+     * @internal
+     */
+    public static final long JULIAN_EPOCH_MS = -210866760000000L;
+    
+//  static {
+//      Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
+//      cal.clear();
+//      cal.set(cal.ERA, 0);
+//      cal.set(cal.YEAR, 4713);
+//      cal.set(cal.MONTH, cal.JANUARY);
+//      cal.set(cal.DATE, 1);
+//      cal.set(cal.HOUR_OF_DAY, 12);
+//      System.out.println("1.5 Jan 4713 BC = " + cal.getTime().getTime());
+
+//      cal.clear();
+//      cal.set(cal.YEAR, 2000);
+//      cal.set(cal.MONTH, cal.JANUARY);
+//      cal.set(cal.DATE, 1);
+//      cal.add(cal.DATE, -1);
+//      System.out.println("0.0 Jan 2000 = " + cal.getTime().getTime());
+//  }
+    
+    /**
+     * Milliseconds value for 0.0 January 2000 AD.
+     */
+    static final long EPOCH_2000_MS = 946598400000L;
+
+    //-------------------------------------------------------------------------
+    // Assorted private data used for conversions
+    //-------------------------------------------------------------------------
+
+    // My own copies of these so compilers are more likely to optimize them away
+    static private final double PI = 3.14159265358979323846;
+    static private final double PI2 = PI * 2.0;
+
+    static private final double RAD_HOUR = 12 / PI;        // radians -> hours
+    static private final double DEG_RAD  = PI / 180;        // degrees -> radians
+    static private final double RAD_DEG  = 180 / PI;        // radians -> degrees
+    
+    //-------------------------------------------------------------------------
+    // Constructors
+    //-------------------------------------------------------------------------
+
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the current date and time.
+     * @internal
+     */
+    public CalendarAstronomer() {
+        this(System.currentTimeMillis());
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the specified date and time.
+     * @internal
+     */
+    public CalendarAstronomer(Date d) {
+        this(d.getTime());
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the specified time.  The time is expressed as a number of milliseconds since
+     * January 1, 1970 AD (Gregorian).
+     *
+     * @see java.util.Date#getTime()
+     * @internal
+     */
+    public CalendarAstronomer(long aTime) {
+        time = aTime;
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object with the given
+     * latitude and longitude.  The object's time is set to the current
+     * date and time.
+     * <p>
+     * @param longitude The desired longitude, in <em>degrees</em> east of
+     *                  the Greenwich meridian.
+     *
+     * @param latitude  The desired latitude, in <em>degrees</em>.  Positive
+     *                  values signify North, negative South.
+     *
+     * @see java.util.Date#getTime()
+     * @internal
+     */
+    public CalendarAstronomer(double longitude, double latitude) {
+        this();
+        fLongitude = normPI(longitude * DEG_RAD);
+        fLatitude  = normPI(latitude  * DEG_RAD);
+        fGmtOffset = (long)(fLongitude * 24 * HOUR_MS / PI2);
+    }
+    
+    
+    //-------------------------------------------------------------------------
+    // Time and date getters and setters
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param aTime the date and time, expressed as the number of milliseconds since
+     *              1/1/1970 0:00 GMT (Gregorian).
+     *
+     * @see #setDate
+     * @see #getTime
+     * @internal
+     */
+    public void setTime(long aTime) {
+        time = aTime;
+        clearCache();
+    }
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param date the time and date, expressed as a <code>Date</code> object.
+     *
+     * @see #setTime
+     * @see #getDate
+     * @internal
+     */
+    public void setDate(Date date) {
+        setTime(date.getTime());
+    }
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param jdn   the desired time, expressed as a "julian day number",
+     *              which is the number of elapsed days since 
+     *              1/1/4713 BC (Julian), 12:00 GMT.  Note that julian day
+     *              numbers start at <em>noon</em>.  To get the jdn for
+     *              the corresponding midnight, subtract 0.5.
+     *
+     * @see #getJulianDay
+     * @see #JULIAN_EPOCH_MS
+     * @internal
+     */
+    public void setJulianDay(double jdn) {
+        time = (long)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
+        clearCache();
+        julianDay = jdn;
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * represented as the number of milliseconds since
+     * 1/1/1970 AD 0:00 GMT (Gregorian).
+     *
+     * @see #setTime
+     * @see #getDate
+     * @internal
+     */
+    public long getTime() {
+        return time;
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * represented as a <code>Date</code> object.
+     *
+     * @see #setDate
+     * @see #getTime
+     * @internal
+     */
+    public Date getDate() {
+        return new Date(time);
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * expressed as a "julian day number", which is the number of elapsed
+     * days since 1/1/4713 BC (Julian), 12:00 GMT.
+     *
+     * @see #setJulianDay
+     * @see #JULIAN_EPOCH_MS
+     * @internal
+     */
+    public double getJulianDay() {
+        if (julianDay == INVALID) {
+            julianDay = (double)(time - JULIAN_EPOCH_MS) / (double)DAY_MS;
+        }
+        return julianDay;
+    }
+    
+    /**
+     * Return this object's time expressed in julian centuries:
+     * the number of centuries after 1/1/1900 AD, 12:00 GMT
+     *
+     * @see #getJulianDay
+     * @internal
+     */
+    public double getJulianCentury() {
+        if (julianCentury == INVALID) {
+            julianCentury = (getJulianDay() - 2415020.0) / 36525;
+        }
+        return julianCentury;
+    }
+
+    /**
+     * Returns the current Greenwich sidereal time, measured in hours
+     * @internal
+     */
+    public double getGreenwichSidereal() {
+        if (siderealTime == INVALID) {
+            // See page 86 of "Practial Astronomy with your Calculator",
+            // by Peter Duffet-Smith, for details on the algorithm.
+                
+            double UT = normalize((double)time/HOUR_MS, 24);
+        
+            siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24);
+        }
+        return siderealTime;
+    }
+    
+    private double getSiderealOffset() {
+        if (siderealT0 == INVALID) {
+            double JD  = Math.floor(getJulianDay() - 0.5) + 0.5;
+            double S   = JD - 2451545.0;
+            double T   = S / 36525.0;
+            siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
+        }
+        return siderealT0;
+    }
+    
+    /**
+     * Returns the current local sidereal time, measured in hours
+     * @internal
+     */
+    public double getLocalSidereal() {
+        return normalize(getGreenwichSidereal() + (double)fGmtOffset/HOUR_MS, 24);
+    }
+    
+    /**
+     * Converts local sidereal time to Universal Time.
+     *
+     * @param lst   The Local Sidereal Time, in hours since sidereal midnight
+     *              on this object's current date.
+     *
+     * @return      The corresponding Universal Time, in milliseconds since
+     *              1 Jan 1970, GMT.  
+     */
+    private long lstToUT(double lst) {
+        // Convert to local mean time
+        double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
+        
+        // Then find local midnight on this day
+        long base = DAY_MS * ((time + fGmtOffset)/DAY_MS) - fGmtOffset;
+        
+        //out("    lt  =" + lt + " hours");
+        //out("    base=" + new Date(base));
+        
+        return base + (long)(lt * HOUR_MS);
+    }
+    
+    
+    //-------------------------------------------------------------------------
+    // Coordinate transformations, all based on the current time of this object
+    //-------------------------------------------------------------------------
+
+    /**
+     * Convert from ecliptic to equatorial coordinates.
+     *
+     * @param ecliptic  A point in the sky in ecliptic coordinates.
+     * @return          The corresponding point in equatorial coordinates.
+     * @internal
+     */
+    public final Equatorial eclipticToEquatorial(Ecliptic ecliptic)
+    {
+        return eclipticToEquatorial(ecliptic.longitude, ecliptic.latitude);
+    }
+
+    /**
+     * Convert from ecliptic to equatorial coordinates.
+     *
+     * @param eclipLong     The ecliptic longitude
+     * @param eclipLat      The ecliptic latitude
+     *
+     * @return              The corresponding point in equatorial coordinates.
+     * @internal
+     */
+    public final Equatorial eclipticToEquatorial(double eclipLong, double eclipLat)
+    {
+        // See page 42 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+
+        double obliq = eclipticObliquity();
+        double sinE = Math.sin(obliq);
+        double cosE = Math.cos(obliq);
+        
+        double sinL = Math.sin(eclipLong);
+        double cosL = Math.cos(eclipLong);
+        
+        double sinB = Math.sin(eclipLat);
+        double cosB = Math.cos(eclipLat);
+        double tanB = Math.tan(eclipLat);
+        
+        return new Equatorial(Math.atan2(sinL*cosE - tanB*sinE, cosL),
+                               Math.asin(sinB*cosE + cosB*sinE*sinL) );
+    }
+
+    /**
+     * Convert from ecliptic longitude to equatorial coordinates.
+     *
+     * @param eclipLong     The ecliptic longitude
+     *
+     * @return              The corresponding point in equatorial coordinates.
+     * @internal
+     */
+    public final Equatorial eclipticToEquatorial(double eclipLong)
+    {
+        return eclipticToEquatorial(eclipLong, 0);  // TODO: optimize
+    }
+
+    /**
+     * @internal
+     */
+    public Horizon eclipticToHorizon(double eclipLong)
+    {
+        Equatorial equatorial = eclipticToEquatorial(eclipLong);
+        
+        double H = getLocalSidereal()*PI/12 - equatorial.ascension;     // Hour-angle
+        
+        double sinH = Math.sin(H);
+        double cosH = Math.cos(H);
+        double sinD = Math.sin(equatorial.declination);
+        double cosD = Math.cos(equatorial.declination);
+        double sinL = Math.sin(fLatitude);
+        double cosL = Math.cos(fLatitude);
+        
+        double altitude = Math.asin(sinD*sinL + cosD*cosL*cosH);
+        double azimuth  = Math.atan2(-cosD*cosL*sinH, sinD - sinL * Math.sin(altitude));
+
+        return new Horizon(azimuth, altitude);
+    }
+
+    
+    //-------------------------------------------------------------------------
+    // The Sun
+    //-------------------------------------------------------------------------
+
+    //
+    // Parameters of the Sun's orbit as of the epoch Jan 0.0 1990
+    // Angles are in radians (after multiplying by PI/180)
+    //
+    static final double JD_EPOCH = 2447891.5; // Julian day of epoch
+
+    static final double SUN_ETA_G   = 279.403303 * PI/180; // Ecliptic longitude at epoch
+    static final double SUN_OMEGA_G = 282.768422 * PI/180; // Ecliptic longitude of perigee
+    static final double SUN_E      =   0.016713;          // Eccentricity of orbit
+    //double sunR0     =   1.495585e8;        // Semi-major axis in KM
+    //double sunTheta0 =   0.533128 * PI/180; // Angular diameter at R0
+
+    // The following three methods, which compute the sun parameters
+    // given above for an arbitrary epoch (whatever time the object is
+    // set to), make only a small difference as compared to using the
+    // above constants.  E.g., Sunset times might differ by ~12
+    // seconds.  Furthermore, the eta-g computation is befuddled by
+    // Duffet-Smith's incorrect coefficients (p.86).  I've corrected
+    // the first-order coefficient but the others may be off too - no
+    // way of knowing without consulting another source.
+
+//  /**
+//   * Return the sun's ecliptic longitude at perigee for the current time.
+//   * See Duffett-Smith, p. 86.
+//   * @return radians
+//   */
+//  private double getSunOmegaG() {
+//      double T = getJulianCentury();
+//      return (281.2208444 + (1.719175 + 0.000452778*T)*T) * DEG_RAD;
+//  }
+
+//  /**
+//   * Return the sun's ecliptic longitude for the current time.
+//   * See Duffett-Smith, p. 86.
+//   * @return radians
+//   */
+//  private double getSunEtaG() {
+//      double T = getJulianCentury();
+//      //return (279.6966778 + (36000.76892 + 0.0003025*T)*T) * DEG_RAD;
+//      //
+//      // The above line is from Duffett-Smith, and yields manifestly wrong
+//      // results.  The below constant is derived empirically to match the
+//      // constant he gives for the 1990 EPOCH.
+//      //
+//      return (279.6966778 + (-0.3262541582718024 + 0.0003025*T)*T) * DEG_RAD;
+//  }
+
+//  /**
+//   * Return the sun's eccentricity of orbit for the current time.
+//   * See Duffett-Smith, p. 86.
+//   * @return double
+//   */
+//  private double getSunE() {
+//      double T = getJulianCentury();
+//      return 0.01675104 - (0.0000418 + 0.000000126*T)*T;
+//  }
+
+    /**
+     * The longitude of the sun at the time specified by this object.
+     * The longitude is measured in radians along the ecliptic
+     * from the "first point of Aries," the point at which the ecliptic
+     * crosses the earth's equatorial plane at the vernal equinox.
+     * <p>
+     * Currently, this method uses an approximation of the two-body Kepler's
+     * equation for the earth and the sun.  It does not take into account the
+     * perturbations caused by the other planets, the moon, etc.
+     * @internal
+     */
+    public double getSunLongitude()
+    {
+        // See page 86 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        
+        if (sunLongitude == INVALID) {
+            double[] result = getSunLongitude(getJulianDay());
+            sunLongitude = result[0];
+            meanAnomalySun = result[1];
+        }
+        return sunLongitude;
+    }
+  
+    /**
+     * TODO Make this public when the entire class is package-private.
+     */
+    /*public*/ double[] getSunLongitude(double julian)
+    {
+        // See page 86 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        
+        double day = julian - JD_EPOCH;       // Days since epoch
+        
+        // Find the angular distance the sun in a fictitious
+        // circular orbit has travelled since the epoch.
+        double epochAngle = norm2PI(PI2/TROPICAL_YEAR*day);
+        
+        // The epoch wasn't at the sun's perigee; find the angular distance
+        // since perigee, which is called the "mean anomaly"
+        double meanAnomaly = norm2PI(epochAngle + SUN_ETA_G - SUN_OMEGA_G);
+        
+        // Now find the "true anomaly", e.g. the real solar longitude
+        // by solving Kepler's equation for an elliptical orbit
+        // NOTE: The 3rd ed. of the book lists omega_g and eta_g in different
+        // equations; omega_g is to be correct.
+        return new double[] {
+            norm2PI(trueAnomaly(meanAnomaly, SUN_E) + SUN_OMEGA_G),
+            meanAnomaly
+        };
+    }
+
+    /**
+     * The position of the sun at this object's current date and time,
+     * in equatorial coordinates.
+     * @internal
+     */
+    public Equatorial getSunPosition() {
+        return eclipticToEquatorial(getSunLongitude(), 0);
+    }
+    
+    private static class SolarLongitude {
+        double value;
+        SolarLongitude(double val) { value = val; }
+    }
+    
+    /**
+     * Constant representing the vernal equinox.
+     * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}. 
+     * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
+     * @internal
+     */
+    public static final SolarLongitude VERNAL_EQUINOX  = new SolarLongitude(0);
+    
+    /**
+     * Constant representing the summer solstice.
+     * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+     * Note: In this case, "summer" refers to the northern hemisphere's seasons.
+     * @internal
+     */
+    public static final SolarLongitude SUMMER_SOLSTICE = new SolarLongitude(PI/2);
+    
+    /**
+     * Constant representing the autumnal equinox.
+     * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+     * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
+     * @internal
+     */
+    public static final SolarLongitude AUTUMN_EQUINOX  = new SolarLongitude(PI);
+    
+    /**
+     * Constant representing the winter solstice.
+     * For use with {@link #getSunTime(SolarLongitude, boolean) getSunTime}.
+     * Note: In this case, "winter" refers to the northern hemisphere's seasons.
+     * @internal
+     */
+    public static final SolarLongitude WINTER_SOLSTICE = new SolarLongitude((PI*3)/2);
+    
+    /**
+     * Find the next time at which the sun's ecliptic longitude will have
+     * the desired value.  
+     * @internal
+     */
+    public long getSunTime(double desired, boolean next)
+    {
+        return timeOfAngle( new AngleFunc() { public double eval() { return getSunLongitude(); } },
+                            desired,
+                            TROPICAL_YEAR,
+                            MINUTE_MS,
+                            next);
+    }
+    
+    /**
+     * Find the next time at which the sun's ecliptic longitude will have
+     * the desired value.  
+     * @internal
+     */
+    public long getSunTime(SolarLongitude desired, boolean next) {
+        return getSunTime(desired.value, next);
+    }
+    
+    /**
+     * Returns the time (GMT) of sunrise or sunset on the local date to which
+     * this calendar is currently set.
+     *
+     * NOTE: This method only works well if this object is set to a
+     * time near local noon.  Because of variations between the local
+     * official time zone and the geographic longitude, the
+     * computation can flop over into an adjacent day if this object
+     * is set to a time near local midnight.
+     * 
+     * @internal
+     */
+    public long getSunRiseSet(boolean rise)
+    {
+        long t0 = time;
+
+        // Make a rough guess: 6am or 6pm local time on the current day
+        long noon = ((time + fGmtOffset)/DAY_MS)*DAY_MS - fGmtOffset + 12*HOUR_MS;
+        
+        setTime(noon + (long)((rise ? -6 : 6) * HOUR_MS));
+        
+        long t = riseOrSet(new CoordFunc() {
+                            public Equatorial eval() { return getSunPosition(); }
+                         },
+                         rise,
+                         .533 * DEG_RAD,        // Angular Diameter
+                         34 /60.0 * DEG_RAD,    // Refraction correction
+                         MINUTE_MS / 12);       // Desired accuracy
+
+        setTime(t0);
+        return t;
+    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    //-------------------------------------------------------------------------
+//    // Alternate Sun Rise/Set
+//    // See Duffett-Smith p.93
+//    //-------------------------------------------------------------------------
+//
+//    // This yields worse results (as compared to USNO data) than getSunRiseSet().
+//    /**
+//     * TODO Make this public when the entire class is package-private.
+//     */
+//    /*public*/ long getSunRiseSet2(boolean rise) {
+//        // 1. Calculate coordinates of the sun's center for midnight
+//        double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
+//        double[] sl = getSunLongitude(jd);
+//        double lambda1 = sl[0];
+//        Equatorial pos1 = eclipticToEquatorial(lambda1, 0);
+//
+//        // 2. Add ... to lambda to get position 24 hours later
+//        double lambda2 = lambda1 + 0.985647*DEG_RAD;
+//        Equatorial pos2 = eclipticToEquatorial(lambda2, 0);
+//
+//        // 3. Calculate LSTs of rising and setting for these two positions
+//        double tanL = Math.tan(fLatitude);
+//        double H = Math.acos(-tanL * Math.tan(pos1.declination));
+//        double lst1r = (PI2 + pos1.ascension - H) * 24 / PI2;
+//        double lst1s = (pos1.ascension + H) * 24 / PI2;
+//               H = Math.acos(-tanL * Math.tan(pos2.declination));
+//        double lst2r = (PI2-H + pos2.ascension ) * 24 / PI2;
+//        double lst2s = (H + pos2.ascension ) * 24 / PI2;
+//        if (lst1r > 24) lst1r -= 24;
+//        if (lst1s > 24) lst1s -= 24;
+//        if (lst2r > 24) lst2r -= 24;
+//        if (lst2s > 24) lst2s -= 24;
+//        
+//        // 4. Convert LSTs to GSTs.  If GST1 > GST2, add 24 to GST2.
+//        double gst1r = lstToGst(lst1r);
+//        double gst1s = lstToGst(lst1s);
+//        double gst2r = lstToGst(lst2r);
+//        double gst2s = lstToGst(lst2s);
+//        if (gst1r > gst2r) gst2r += 24;
+//        if (gst1s > gst2s) gst2s += 24;
+//
+//        // 5. Calculate GST at 0h UT of this date
+//        double t00 = utToGst(0);
+//        
+//        // 6. Calculate GST at 0h on the observer's longitude
+//        double offset = Math.round(fLongitude*12/PI); // p.95 step 6; he _rounds_ to nearest 15 deg.
+//        double t00p = t00 - offset*1.002737909;
+//        if (t00p < 0) t00p += 24; // do NOT normalize
+//        
+//        // 7. Adjust
+//        if (gst1r < t00p) {
+//            gst1r += 24;
+//            gst2r += 24;
+//        }
+//        if (gst1s < t00p) {
+//            gst1s += 24;
+//            gst2s += 24;
+//        }
+//
+//        // 8.
+//        double gstr = (24.07*gst1r-t00*(gst2r-gst1r))/(24.07+gst1r-gst2r);
+//        double gsts = (24.07*gst1s-t00*(gst2s-gst1s))/(24.07+gst1s-gst2s);
+//
+//        // 9. Correct for parallax, refraction, and sun's diameter
+//        double dec = (pos1.declination + pos2.declination) / 2;
+//        double psi = Math.acos(Math.sin(fLatitude) / Math.cos(dec));
+//        double x = 0.830725 * DEG_RAD; // parallax+refraction+diameter
+//        double y = Math.asin(Math.sin(x) / Math.sin(psi)) * RAD_DEG;
+//        double delta_t = 240 * y / Math.cos(dec) / 3600; // hours
+//
+//        // 10. Add correction to GSTs, subtract from GSTr
+//        gstr -= delta_t;
+//        gsts += delta_t;
+//
+//        // 11. Convert GST to UT and then to local civil time
+//        double ut = gstToUt(rise ? gstr : gsts);
+//        //System.out.println((rise?"rise=":"set=") + ut + ", delta_t=" + delta_t);
+//        long midnight = DAY_MS * (time / DAY_MS); // Find UT midnight on this day
+//        return midnight + (long) (ut * 3600000);
+//    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    /**
+//     * Convert local sidereal time to Greenwich sidereal time.
+//     * Section 15.  Duffett-Smith p.21
+//     * @param lst in hours (0..24)
+//     * @return GST in hours (0..24)
+//     */
+//    double lstToGst(double lst) {
+//        double delta = fLongitude * 24 / PI2;
+//        return normalize(lst - delta, 24);
+//    }
+ 
+// Commented out - currently unused. ICU 2.6, Alan
+//    /**
+//     * Convert UT to GST on this date.
+//     * Section 12.  Duffett-Smith p.17
+//     * @param ut in hours
+//     * @return GST in hours
+//     */
+//    double utToGst(double ut) {
+//        return normalize(getT0() + ut*1.002737909, 24);
+//    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    /**
+//     * Convert GST to UT on this date.
+//     * Section 13.  Duffett-Smith p.18
+//     * @param gst in hours
+//     * @return UT in hours
+//     */
+//    double gstToUt(double gst) {
+//        return normalize(gst - getT0(), 24) * 0.9972695663;
+//    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    double getT0() {
+//        // Common computation for UT <=> GST
+//
+//        // Find JD for 0h UT
+//        double jd = Math.floor(getJulianDay() - 0.5) + 0.5;
+//
+//        double s = jd - 2451545.0;
+//        double t = s / 36525.0;
+//        double t0 = 6.697374558 + (2400.051336 + 0.000025862*t)*t;
+//        return t0;
+//    }
+
+// Commented out - currently unused. ICU 2.6, Alan
+//    //-------------------------------------------------------------------------
+//    // Alternate Sun Rise/Set
+//    // See sci.astro FAQ
+//    // http://www.faqs.org/faqs/astronomy/faq/part3/section-5.html
+//    //-------------------------------------------------------------------------
+//
+//    // Note: This method appears to produce inferior accuracy as
+//    // compared to getSunRiseSet(). 
+//
+//    /**
+//     * TODO Make this public when the entire class is package-private.
+//     */
+//    /*public*/ long getSunRiseSet3(boolean rise) {
+//
+//        // Compute day number for 0.0 Jan 2000 epoch
+//        double d = (double)(time - EPOCH_2000_MS) / DAY_MS;
+//
+//        // Now compute the Local Sidereal Time, LST:
+//        // 
+//        double LST  =  98.9818  +  0.985647352 * d  +  /*UT*15  +  long*/
+//            fLongitude*RAD_DEG;
+//        // 
+//        // (east long. positive).  Note that LST is here expressed in degrees,
+//        // where 15 degrees corresponds to one hour.  Since LST really is an angle,
+//        // it's convenient to use one unit---degrees---throughout.
+//
+//        //     COMPUTING THE SUN'S POSITION
+//        //     ----------------------------
+//        // 
+//        // To be able to compute the Sun's rise/set times, you need to be able to
+//        // compute the Sun's position at any time.  First compute the "day
+//        // number" d as outlined above, for the desired moment.  Next compute:
+//        // 
+//        double oblecl = 23.4393 - 3.563E-7 * d;
+//        // 
+//        double w  =  282.9404  +  4.70935E-5   * d;
+//        double M  =  356.0470  +  0.9856002585 * d;
+//        double e  =  0.016709  -  1.151E-9     * d;
+//        // 
+//        // This is the obliquity of the ecliptic, plus some of the elements of
+//        // the Sun's apparent orbit (i.e., really the Earth's orbit): w =
+//        // argument of perihelion, M = mean anomaly, e = eccentricity.
+//        // Semi-major axis is here assumed to be exactly 1.0 (while not strictly
+//        // true, this is still an accurate approximation).  Next compute E, the
+//        // eccentric anomaly:
+//        // 
+//        double E = M + e*(180/PI) * Math.sin(M*DEG_RAD) * ( 1.0 + e*Math.cos(M*DEG_RAD) );
+//        // 
+//        // where E and M are in degrees.  This is it---no further iterations are
+//        // needed because we know e has a sufficiently small value.  Next compute
+//        // the true anomaly, v, and the distance, r:
+//        // 
+//        /*      r * cos(v)  =  */ double A  =  Math.cos(E*DEG_RAD) - e;
+//        /*      r * sin(v)  =  */ double B  =  Math.sqrt(1 - e*e) * Math.sin(E*DEG_RAD);
+//        // 
+//        // and
+//        // 
+//        //      r  =  sqrt( A*A + B*B )
+//        double v  =  Math.atan2( B, A )*RAD_DEG;
+//        // 
+//        // The Sun's true longitude, slon, can now be computed:
+//        // 
+//        double slon  =  v + w;
+//        // 
+//        // Since the Sun is always at the ecliptic (or at least very very close to
+//        // it), we can use simplified formulae to convert slon (the Sun's ecliptic
+//        // longitude) to sRA and sDec (the Sun's RA and Dec):
+//        // 
+//        //                   sin(slon) * cos(oblecl)
+//        //     tan(sRA)  =  -------------------------
+//        //             cos(slon)
+//        // 
+//        //     sin(sDec) =  sin(oblecl) * sin(slon)
+//        // 
+//        // As was the case when computing az, the Azimuth, if possible use an
+//        // atan2() function to compute sRA.
+//
+//        double sRA = Math.atan2(Math.sin(slon*DEG_RAD) * Math.cos(oblecl*DEG_RAD), Math.cos(slon*DEG_RAD))*RAD_DEG;
+//
+//        double sin_sDec = Math.sin(oblecl*DEG_RAD) * Math.sin(slon*DEG_RAD);
+//        double sDec = Math.asin(sin_sDec)*RAD_DEG;
+//
+//        //     COMPUTING RISE AND SET TIMES
+//        //     ----------------------------
+//        // 
+//        // To compute when an object rises or sets, you must compute when it
+//        // passes the meridian and the HA of rise/set.  Then the rise time is
+//        // the meridian time minus HA for rise/set, and the set time is the
+//        // meridian time plus the HA for rise/set.
+//        // 
+//        // To find the meridian time, compute the Local Sidereal Time at 0h local
+//        // time (or 0h UT if you prefer to work in UT) as outlined above---name
+//        // that quantity LST0.  The Meridian Time, MT, will now be:
+//        // 
+//        //     MT  =  RA - LST0
+//        double MT = normalize(sRA - LST, 360);
+//        // 
+//        // where "RA" is the object's Right Ascension (in degrees!).  If negative,
+//        // add 360 deg to MT.  If the object is the Sun, leave the time as it is,
+//        // but if it's stellar, multiply MT by 365.2422/366.2422, to convert from
+//        // sidereal to solar time.  Now, compute HA for rise/set, name that
+//        // quantity HA0:
+//        // 
+//        //                 sin(h0)  -  sin(lat) * sin(Dec)
+//        // cos(HA0)  =  ---------------------------------
+//        //                      cos(lat) * cos(Dec)
+//        // 
+//        // where h0 is the altitude selected to represent rise/set.  For a purely
+//        // mathematical horizon, set h0 = 0 and simplify to:
+//        // 
+//        //     cos(HA0)  =  - tan(lat) * tan(Dec)
+//        // 
+//        // If you want to account for refraction on the atmosphere, set h0 = -35/60
+//        // degrees (-35 arc minutes), and if you want to compute the rise/set times
+//        // for the Sun's upper limb, set h0 = -50/60 (-50 arc minutes).
+//        // 
+//        double h0 = -50/60 * DEG_RAD;
+//
+//        double HA0 = Math.acos(
+//          (Math.sin(h0) - Math.sin(fLatitude) * sin_sDec) /
+//          (Math.cos(fLatitude) * Math.cos(sDec*DEG_RAD)))*RAD_DEG;
+//
+//        // When HA0 has been computed, leave it as it is for the Sun but multiply
+//        // by 365.2422/366.2422 for stellar objects, to convert from sidereal to
+//        // solar time.  Finally compute:
+//        // 
+//        //    Rise time  =  MT - HA0
+//        //    Set  time  =  MT + HA0
+//        // 
+//        // convert the times from degrees to hours by dividing by 15.
+//        // 
+//        // If you'd like to check that your calculations are accurate or just
+//        // need a quick result, check the USNO's Sun or Moon Rise/Set Table,
+//        // <URL:http://aa.usno.navy.mil/AA/data/docs/RS_OneYear.html>.
+//
+//        double result = MT + (rise ? -HA0 : HA0); // in degrees
+//
+//        // Find UT midnight on this day
+//        long midnight = DAY_MS * (time / DAY_MS);
+//
+//        return midnight + (long) (result * 3600000 / 15);
+//    }
+
+    //-------------------------------------------------------------------------
+    // The Moon
+    //-------------------------------------------------------------------------
+    
+    static final double moonL0 = 318.351648 * PI/180;   // Mean long. at epoch
+    static final double moonP0 =  36.340410 * PI/180;   // Mean long. of perigee
+    static final double moonN0 = 318.510107 * PI/180;   // Mean long. of node
+    static final double moonI  =   5.145366 * PI/180;   // Inclination of orbit
+    static final double moonE  =   0.054900;            // Eccentricity of orbit
+    
+    // These aren't used right now
+    static final double moonA  =   3.84401e5;           // semi-major axis (km)
+    static final double moonT0 =   0.5181 * PI/180;     // Angular size at distance A
+    static final double moonPi =   0.9507 * PI/180;     // Parallax at distance A
+    
+    /**
+     * The position of the moon at the time set on this
+     * object, in equatorial coordinates.
+     * @internal
+     */
+    public Equatorial getMoonPosition()
+    {
+        //
+        // See page 142 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        //
+        if (moonPosition == null) {
+            // Calculate the solar longitude.  Has the side effect of
+            // filling in "meanAnomalySun" as well.
+            double sunLong = getSunLongitude();
+            
+            //
+            // Find the # of days since the epoch of our orbital parameters.
+            // TODO: Convert the time of day portion into ephemeris time
+            //
+            double day = getJulianDay() - JD_EPOCH;       // Days since epoch
+            
+            // Calculate the mean longitude and anomaly of the moon, based on
+            // a circular orbit.  Similar to the corresponding solar calculation.
+            double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
+            double meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
+            
+            //
+            // Calculate the following corrections:
+            //  Evection:   the sun's gravity affects the moon's eccentricity
+            //  Annual Eqn: variation in the effect due to earth-sun distance
+            //  A3:         correction factor (for ???)
+            //
+            double evection = 1.2739*PI/180 * Math.sin(2 * (meanLongitude - sunLong)
+                                                - meanAnomalyMoon);
+            double annual   = 0.1858*PI/180 * Math.sin(meanAnomalySun);
+            double a3       = 0.3700*PI/180 * Math.sin(meanAnomalySun);
+
+            meanAnomalyMoon += evection - annual - a3;
+            
+            //
+            // More correction factors:
+            //  center  equation of the center correction
+            //  a4      yet another error correction (???)
+            //
+            // TODO: Skip the equation of the center correction and solve Kepler's eqn?
+            //
+            double center = 6.2886*PI/180 * Math.sin(meanAnomalyMoon);
+            double a4 =     0.2140*PI/180 * Math.sin(2 * meanAnomalyMoon);
+            
+            // Now find the moon's corrected longitude
+            moonLongitude = meanLongitude + evection + center - annual + a4;
+
+            //
+            // And finally, find the variation, caused by the fact that the sun's
+            // gravitational pull on the moon varies depending on which side of
+            // the earth the moon is on
+            //
+            double variation = 0.6583*PI/180 * Math.sin(2*(moonLongitude - sunLong));
+            
+            moonLongitude += variation;
+            
+            //
+            // What we've calculated so far is the moon's longitude in the plane
+            // of its own orbit.  Now map to the ecliptic to get the latitude
+            // and longitude.  First we need to find the longitude of the ascending
+            // node, the position on the ecliptic where it is crossed by the moon's
+            // orbit as it crosses from the southern to the northern hemisphere.
+            //
+            double nodeLongitude = norm2PI(moonN0 - 0.0529539*PI/180 * day);
+
+            nodeLongitude -= 0.16*PI/180 * Math.sin(meanAnomalySun);
+
+            double y = Math.sin(moonLongitude - nodeLongitude);
+            double x = Math.cos(moonLongitude - nodeLongitude);
+            
+            moonEclipLong = Math.atan2(y*Math.cos(moonI), x) + nodeLongitude;
+            double moonEclipLat = Math.asin(y * Math.sin(moonI));
+
+            moonPosition = eclipticToEquatorial(moonEclipLong, moonEclipLat);
+        }
+        return moonPosition;
+    }
+    
+    /**
+     * The "age" of the moon at the time specified in this object.
+     * This is really the angle between the
+     * current ecliptic longitudes of the sun and the moon,
+     * measured in radians.
+     *
+     * @see #getMoonPhase
+     * @internal
+     */
+    public double getMoonAge() {
+        // See page 147 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        //
+        // Force the moon's position to be calculated.  We're going to use
+        // some the intermediate results cached during that calculation.
+        //
+        getMoonPosition();
+        
+        return norm2PI(moonEclipLong - sunLongitude);
+    }
+    
+    /**
+     * Calculate the phase of the moon at the time set in this object.
+     * The returned phase is a <code>double</code> in the range
+     * <code>0 <= phase < 1</code>, interpreted as follows:
+     * <ul>
+     * <li>0.00: New moon
+     * <li>0.25: First quarter
+     * <li>0.50: Full moon
+     * <li>0.75: Last quarter
+     * </ul>
+     *
+     * @see #getMoonAge
+     * @internal
+     */
+    public double getMoonPhase() {
+        // See page 147 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        return 0.5 * (1 - Math.cos(getMoonAge()));
+    }
+    
+    private static class MoonAge {
+        double value;
+        MoonAge(double val) { value = val; }
+    }
+    
+    /**
+     * Constant representing a new moon.
+     * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+     * @internal
+     */
+    public static final MoonAge NEW_MOON      = new MoonAge(0);
+
+    /**
+     * Constant representing the moon's first quarter.
+     * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+     * @internal
+     */
+    public static final MoonAge FIRST_QUARTER = new MoonAge(PI/2);
+    
+    /**
+     * Constant representing a full moon.
+     * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+     * @internal
+     */
+    public static final MoonAge FULL_MOON     = new MoonAge(PI);
+    
+    /**
+     * Constant representing the moon's last quarter.
+     * For use with {@link #getMoonTime(MoonAge, boolean) getMoonTime}
+     * @internal
+     */
+    public static final MoonAge LAST_QUARTER  = new MoonAge((PI*3)/2);
+    
+    /**
+     * Find the next or previous time at which the Moon's ecliptic
+     * longitude will have the desired value.  
+     * <p>
+     * @param desired   The desired longitude.
+     * @param next      <tt>true</tt> if the next occurrance of the phase
+     *                  is desired, <tt>false</tt> for the previous occurrance. 
+     * @internal
+     */
+    public long getMoonTime(double desired, boolean next)
+    {
+        return timeOfAngle( new AngleFunc() {
+                            public double eval() { return getMoonAge(); } },
+                            desired,
+                            SYNODIC_MONTH,
+                            MINUTE_MS,
+                            next);
+    }
+    
+    /**
+     * Find the next or previous time at which the moon will be in the
+     * desired phase.
+     * <p>
+     * @param desired   The desired phase of the moon.
+     * @param next      <tt>true</tt> if the next occurrance of the phase
+     *                  is desired, <tt>false</tt> for the previous occurrance. 
+     * @internal
+     */
+    public long getMoonTime(MoonAge desired, boolean next) {
+        return getMoonTime(desired.value, next);
+    }
+    
+    /**
+     * Returns the time (GMT) of sunrise or sunset on the local date to which
+     * this calendar is currently set.
+     * @internal
+     */
+    public long getMoonRiseSet(boolean rise)
+    {
+        return riseOrSet(new CoordFunc() {
+                            public Equatorial eval() { return getMoonPosition(); }
+                         },
+                         rise,
+                         .533 * DEG_RAD,        // Angular Diameter
+                         34 /60.0 * DEG_RAD,    // Refraction correction
+                         MINUTE_MS);            // Desired accuracy
+    }
+
+    //-------------------------------------------------------------------------
+    // Interpolation methods for finding the time at which a given event occurs
+    //-------------------------------------------------------------------------
+    
+    private interface AngleFunc {
+        public double eval();
+    }
+    
+    private long timeOfAngle(AngleFunc func, double desired,
+                             double periodDays, long epsilon, boolean next)
+    {
+        // Find the value of the function at the current time
+        double lastAngle = func.eval();
+        
+        // Find out how far we are from the desired angle
+        double deltaAngle = norm2PI(desired - lastAngle) ;
+        
+        // Using the average period, estimate the next (or previous) time at
+        // which the desired angle occurs.
+        double deltaT =  (deltaAngle + (next ? 0 : -PI2)) * (periodDays*DAY_MS) / PI2;
+        
+        double lastDeltaT = deltaT; // Liu
+        long startTime = time; // Liu
+        
+        setTime(time + (long)deltaT);
+
+        // Now iterate until we get the error below epsilon.  Throughout
+        // this loop we use normPI to get values in the range -Pi to Pi,
+        // since we're using them as correction factors rather than absolute angles.
+        do {
+            // Evaluate the function at the time we've estimated
+            double angle = func.eval();
+
+            // Find the # of milliseconds per radian at this point on the curve
+            double factor = Math.abs(deltaT / normPI(angle-lastAngle));
+
+            // Correct the time estimate based on how far off the angle is
+            deltaT = normPI(desired - angle) * factor;
+            
+            // HACK:
+            // 
+            // If abs(deltaT) begins to diverge we need to quit this loop.
+            // This only appears to happen when attempting to locate, for
+            // example, a new moon on the day of the new moon.  E.g.:
+            // 
+            // This result is correct:
+            // newMoon(7508(Mon Jul 23 00:00:00 CST 1990,false))=
+            //   Sun Jul 22 10:57:41 CST 1990
+            // 
+            // But attempting to make the same call a day earlier causes deltaT
+            // to diverge:
+            // CalendarAstronomer.timeOfAngle() diverging: 1.348508727575625E9 ->
+            //   1.3649828540224032E9
+            // newMoon(7507(Sun Jul 22 00:00:00 CST 1990,false))=
+            //   Sun Jul 08 13:56:15 CST 1990
+            //
+            // As a temporary solution, we catch this specific condition and
+            // adjust our start time by one eighth period days (either forward
+            // or backward) and try again.
+            // Liu 11/9/00
+            if (Math.abs(deltaT) > Math.abs(lastDeltaT)) {
+                long delta = (long) (periodDays * DAY_MS / 8);
+                setTime(startTime + (next ? delta : -delta));
+                return timeOfAngle(func, desired, periodDays, epsilon, next);
+            }
+
+            lastDeltaT = deltaT;
+            lastAngle = angle;
+
+            setTime(time + (long)deltaT);
+        }
+        while (Math.abs(deltaT) > epsilon);
+        
+        return time;
+    }
+    
+    private interface CoordFunc {
+        public Equatorial eval();
+    }
+    
+    private long riseOrSet(CoordFunc func, boolean rise,
+                           double diameter, double refraction, 
+                           long epsilon)
+    {        
+        Equatorial  pos = null;
+        double      tanL   = Math.tan(fLatitude);
+        long        deltaT = Long.MAX_VALUE;
+        int         count = 0;
+        
+        //
+        // Calculate the object's position at the current time, then use that
+        // position to calculate the time of rising or setting.  The position
+        // will be different at that time, so iterate until the error is allowable.
+        //
+        do {
+            // See "Practical Astronomy With Your Calculator, section 33.
+            pos = func.eval();
+            double angle = Math.acos(-tanL * Math.tan(pos.declination));
+            double lst = ((rise ? PI2-angle : angle) + pos.ascension ) * 24 / PI2;
+                         
+            // Convert from LST to Universal Time.
+            long newTime = lstToUT( lst );
+            
+            deltaT = newTime - time;
+            setTime(newTime);
+        }
+        while (++ count < 5 && Math.abs(deltaT) > epsilon);
+
+        // Calculate the correction due to refraction and the object's angular diameter
+        double cosD  = Math.cos(pos.declination);
+        double psi   = Math.acos(Math.sin(fLatitude) / cosD);
+        double x     = diameter / 2 + refraction;
+        double y     = Math.asin(Math.sin(x) / Math.sin(psi));
+        long  delta  = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
+        
+        return time + (rise ? -delta : delta);
+    }
+    
+    //-------------------------------------------------------------------------
+    // Other utility methods
+    //-------------------------------------------------------------------------
+
+    /***
+     * Given 'value', add or subtract 'range' until 0 <= 'value' < range.
+     * The modulus operator.
+     */
+    private static final double normalize(double value, double range) {
+        return value - range * Math.floor(value / range);
+    }
+    
+    /**
+     * Normalize an angle so that it's in the range 0 - 2pi.
+     * For positive angles this is just (angle % 2pi), but the Java
+     * mod operator doesn't work that way for negative numbers....
+     */
+    private static final double norm2PI(double angle) {
+        return normalize(angle, PI2);
+    }
+    
+    /**
+     * Normalize an angle into the range -PI - PI
+     */
+    private static final double normPI(double angle) {
+        return normalize(angle + PI, PI2) - PI;
+    }
+    
+    /**
+     * Find the "true anomaly" (longitude) of an object from
+     * its mean anomaly and the eccentricity of its orbit.  This uses
+     * an iterative solution to Kepler's equation.
+     *
+     * @param meanAnomaly   The object's longitude calculated as if it were in
+     *                      a regular, circular orbit, measured in radians
+     *                      from the point of perigee.  
+     *
+     * @param eccentricity  The eccentricity of the orbit
+     *
+     * @return The true anomaly (longitude) measured in radians
+     */
+    private double trueAnomaly(double meanAnomaly, double eccentricity)
+    {
+        // First, solve Kepler's equation iteratively
+        // Duffett-Smith, p.90
+        double delta;
+        double E = meanAnomaly;
+        do {
+            delta = E - eccentricity * Math.sin(E) - meanAnomaly;
+            E = E - delta / (1 - eccentricity * Math.cos(E));
+        } 
+        while (Math.abs(delta) > 1e-5); // epsilon = 1e-5 rad
+
+        return 2.0 * Math.atan( Math.tan(E/2) * Math.sqrt( (1+eccentricity)
+                                                          /(1-eccentricity) ) );
+    }
+    
+    /**
+     * Return the obliquity of the ecliptic (the angle between the ecliptic
+     * and the earth's equator) at the current time.  This varies due to
+     * the precession of the earth's axis.
+     *
+     * @return  the obliquity of the ecliptic relative to the equator,
+     *          measured in radians.
+     */
+    private double eclipticObliquity() {
+        if (eclipObliquity == INVALID) {
+            final double epoch = 2451545.0;     // 2000 AD, January 1.5
+
+            double T = (getJulianDay() - epoch) / 36525;
+            
+            eclipObliquity = 23.439292
+                           - 46.815/3600 * T
+                           - 0.0006/3600 * T*T
+                           + 0.00181/3600 * T*T*T;
+                           
+            eclipObliquity *= DEG_RAD;
+        }
+        return eclipObliquity;
+    }
+    
+     
+    //-------------------------------------------------------------------------
+    // Private data
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Current time in milliseconds since 1/1/1970 AD
+     * @see java.util.Date#getTime
+     */
+    private long time;
+    
+    /* These aren't used yet, but they'll be needed for sunset calculations
+     * and equatorial to horizon coordinate conversions
+     */
+    private double fLongitude = 0.0;
+    private double fLatitude  = 0.0;
+    private long   fGmtOffset = 0;
+    
+    //
+    // The following fields are used to cache calculated results for improved
+    // performance.  These values all depend on the current time setting
+    // of this object, so the clearCache method is provided.
+    //
+    static final private double INVALID = Double.MIN_VALUE;
+    
+    private transient double    julianDay       = INVALID;
+    private transient double    julianCentury   = INVALID;
+    private transient double    sunLongitude    = INVALID;
+    private transient double    meanAnomalySun  = INVALID;
+    private transient double    moonLongitude   = INVALID;
+    private transient double    moonEclipLong   = INVALID;
+    //private transient double    meanAnomalyMoon = INVALID;
+    private transient double    eclipObliquity  = INVALID;
+    private transient double    siderealT0      = INVALID;
+    private transient double    siderealTime    = INVALID;
+    
+    private transient Equatorial  moonPosition = null;
+
+    private void clearCache() {
+        julianDay       = INVALID;
+        julianCentury   = INVALID;
+        sunLongitude    = INVALID;
+        meanAnomalySun  = INVALID;
+        moonLongitude   = INVALID;
+        moonEclipLong   = INVALID;
+        //meanAnomalyMoon = INVALID;
+        eclipObliquity  = INVALID;
+        siderealTime    = INVALID;
+        siderealT0      = INVALID;
+        moonPosition    = null;
+    }
+    
+    //private static void out(String s) {
+    //    System.out.println(s);
+    //}
+    
+    //private static String deg(double rad) {
+    //    return Double.toString(rad * RAD_DEG);
+    //}
+    
+    //private static String hours(long ms) {
+    //    return Double.toString((double)ms / HOUR_MS) + " hours";
+    //}
+
+    /**
+     * @internal
+     */
+    public String local(long localMillis) {
+        return new Date(localMillis - TimeZone.getDefault().getRawOffset()).toString();
+    }
+    
+    
+    /**
+     * Represents the position of an object in the sky relative to the ecliptic,
+     * the plane of the earth's orbit around the Sun. 
+     * This is a spherical coordinate system in which the latitude
+     * specifies the position north or south of the plane of the ecliptic.
+     * The longitude specifies the position along the ecliptic plane
+     * relative to the "First Point of Aries", which is the Sun's position in the sky
+     * at the Vernal Equinox.
+     * <p>
+     * Note that Ecliptic objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Equatorial
+     * @see CalendarAstronomer.Horizon
+     * @internal
+     */
+    public static final class Ecliptic {
+        /**
+         * Constructs an Ecliptic coordinate object.
+         * <p>
+         * @param lat The ecliptic latitude, measured in radians.
+         * @param lon The ecliptic longitude, measured in radians.
+         * @internal
+         */
+        public Ecliptic(double lat, double lon) {
+            latitude = lat;
+            longitude = lon;
+        }
+
+        /**
+         * Return a string representation of this object
+         * @internal
+         */
+        public String toString() {
+            return Double.toString(longitude*RAD_DEG) + "," + (latitude*RAD_DEG);
+        }
+        
+        /**
+         * The ecliptic latitude, in radians.  This specifies an object's
+         * position north or south of the plane of the ecliptic,
+         * with positive angles representing north.
+         * @internal
+         */
+        public final double latitude;
+        
+        /**
+         * The ecliptic longitude, in radians.
+         * This specifies an object's position along the ecliptic plane
+         * relative to the "First Point of Aries", which is the Sun's position
+         * in the sky at the Vernal Equinox,
+         * with positive angles representing east.
+         * <p>
+         * A bit of trivia: the first point of Aries is currently in the
+         * constellation Pisces, due to the precession of the earth's axis.
+         * @internal
+         */
+        public final double longitude;
+    }
+
+    /**
+     * Represents the position of an 
+     * object in the sky relative to the plane of the earth's equator. 
+     * The <i>Right Ascension</i> specifies the position east or west
+     * along the equator, relative to the sun's position at the vernal
+     * equinox.  The <i>Declination</i> is the position north or south
+     * of the equatorial plane.
+     * <p>
+     * Note that Equatorial objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Ecliptic
+     * @see CalendarAstronomer.Horizon
+     * @internal
+     */
+    public static final class Equatorial {
+        /**
+         * Constructs an Equatorial coordinate object.
+         * <p>
+         * @param asc The right ascension, measured in radians.
+         * @param dec The declination, measured in radians.
+         * @internal
+         */
+        public Equatorial(double asc, double dec) {
+            ascension = asc;
+            declination = dec;
+        }
+
+        /**
+         * Return a string representation of this object, with the
+         * angles measured in degrees.
+         * @internal
+         */
+        public String toString() {
+            return Double.toString(ascension*RAD_DEG) + "," + (declination*RAD_DEG);
+        }
+        
+        /**
+         * Return a string representation of this object with the right ascension
+         * measured in hours, minutes, and seconds.
+         * @internal
+         */
+        public String toHmsString() {
+            return radToHms(ascension) + "," + radToDms(declination);
+        }
+        
+        /**
+         * The right ascension, in radians. 
+         * This is the position east or west along the equator
+         * relative to the sun's position at the vernal equinox,
+         * with positive angles representing East.
+         * @internal
+         */
+        public final double ascension;
+        
+        /**
+         * The declination, in radians.
+         * This is the position north or south of the equatorial plane,
+         * with positive angles representing north.
+         * @internal
+         */
+        public final double declination;
+    }
+
+    /**
+     * Represents the position of an  object in the sky relative to 
+     * the local horizon.
+     * The <i>Altitude</i> represents the object's elevation above the horizon,
+     * with objects below the horizon having a negative altitude.
+     * The <i>Azimuth</i> is the geographic direction of the object from the
+     * observer's position, with 0 representing north.  The azimuth increases
+     * clockwise from north.
+     * <p>
+     * Note that Horizon objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Ecliptic
+     * @see CalendarAstronomer.Equatorial
+     * @internal
+     */
+    public static final class Horizon {
+        /**
+         * Constructs a Horizon coordinate object.
+         * <p>
+         * @param alt  The altitude, measured in radians above the horizon.
+         * @param azim The azimuth, measured in radians clockwise from north.
+         * @internal
+         */
+        public Horizon(double alt, double azim) {
+            altitude = alt;
+            azimuth = azim;
+        }
+
+        /**
+         * Return a string representation of this object, with the
+         * angles measured in degrees.
+         * @internal
+         */
+        public String toString() {
+            return Double.toString(altitude*RAD_DEG) + "," + (azimuth*RAD_DEG);
+        }
+        
+        /** 
+         * The object's altitude above the horizon, in radians. 
+         * @internal
+         */
+        public final double altitude;
+        
+        /** 
+         * The object's direction, in radians clockwise from north. 
+         * @internal
+         */
+        public final double azimuth;
+    }
+
+    static private String radToHms(double angle) {
+        int hrs = (int) (angle*RAD_HOUR);
+        int min = (int)((angle*RAD_HOUR - hrs) * 60);
+        int sec = (int)((angle*RAD_HOUR - hrs - min/60.0) * 3600);
+        
+        return Integer.toString(hrs) + "h" + min + "m" + sec + "s";
+    }
+    
+    static private String radToDms(double angle) {
+        int deg = (int) (angle*RAD_DEG);
+        int min = (int)((angle*RAD_DEG - deg) * 60);
+        int sec = (int)((angle*RAD_DEG - deg - min/60.0) * 3600);
+        
+        return Integer.toString(deg) + "\u00b0" + min + "'" + sec + "\"";
+    }
+}
diff --git a/src/com/ibm/icu/impl/CalendarCache.java b/src/com/ibm/icu/impl/CalendarCache.java
new file mode 100644
index 0000000..c83562a
--- /dev/null
+++ b/src/com/ibm/icu/impl/CalendarCache.java
@@ -0,0 +1,127 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+/**
+ * @internal
+ */
+public class CalendarCache
+{
+    /**
+     * @internal
+     */
+    public CalendarCache() {
+        makeArrays(arraySize);
+    }
+    
+    private void makeArrays(int newSize) {
+        keys    = new long[newSize];
+        values  = new long[newSize];
+        
+        for (int i = 0; i < newSize; i++) {
+            values[i] = EMPTY;
+        }
+        arraySize = newSize;
+        threshold = (int)(arraySize * 0.75);
+        size = 0;
+    }
+    
+    /**
+     * @internal
+     */
+    public synchronized long get(long key) {
+        return values[findIndex(key)];
+    }
+    
+    /**
+     * @internal
+     */
+    public synchronized void put(long key, long value)
+    {
+        if (size >= threshold) {
+            rehash();
+        }
+        int index = findIndex(key);
+        
+        keys[index] = key;
+        values[index] = value;
+        size++;
+    }
+    
+    private final int findIndex(long key) {
+        int index = hash(key);
+        int delta = 0;
+        
+        while (values[index] != EMPTY && keys[index] != key)
+        {
+            if (delta == 0) {
+                delta = hash2(key);
+            }
+            index = (index + delta) % arraySize;
+        }
+        return index;
+    }
+    
+    private void rehash()
+    {
+        int oldSize = arraySize;
+        long[] oldKeys = keys;
+        long[] oldValues = values;
+        
+        if (pIndex < primes.length - 1) {
+            arraySize = primes[++pIndex];
+        } else {
+            arraySize = arraySize * 2 + 1;
+        }
+        size = 0;
+        
+        makeArrays(arraySize);
+        for (int i = 0; i < oldSize; i++) {
+            if (oldValues[i] != EMPTY) {
+                put(oldKeys[i], oldValues[i]);
+            }
+        }
+        oldKeys = oldValues = null; // Help out the garbage collector
+    }
+    
+    
+    /**
+     * Produce a uniformly-distributed hash value from an integer key.
+     * This is essentially a linear congruential random number generator
+     * that uses the key as its seed value.
+     */
+    private final int hash(long key)
+    {
+        int h = (int)((key * 15821 + 1) % arraySize);
+        if (h < 0) {
+            h += arraySize;
+        }
+        return h;
+    }
+    
+    private final int hash2(long key) {
+        return arraySize - 2 - (int)(key % (arraySize-2) );
+    }
+    
+    static private final int primes[] = {  // 5, 17, 31, 47, // for testing
+        61, 127, 509, 1021, 2039, 4093, 8191, 16381, 32749, 65521,
+        131071, 262139, 
+    };
+
+    private int     pIndex      = 0;
+    private int     size        = 0;
+    private int     arraySize   = primes[pIndex];
+    private int     threshold   = (arraySize * 3) / 4;
+    
+    private long[]  keys        = new long[arraySize];
+    private long[]  values      = new long[arraySize];
+
+    /**
+     * @internal
+     */
+    static public  long EMPTY   = Long.MIN_VALUE;
+}
diff --git a/src/com/ibm/icu/impl/CalendarData.java b/src/com/ibm/icu/impl/CalendarData.java
new file mode 100644
index 0000000..e51133b
--- /dev/null
+++ b/src/com/ibm/icu/impl/CalendarData.java
@@ -0,0 +1,127 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2005, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.MissingResourceException;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+
+
+/**
+ * This class abstracts access to calendar (Calendar and DateFormat) data.
+ * @internal ICU 3.0
+ */
+public class CalendarData {
+    /**
+     * Construct a CalendarData from the given locale.
+     * @param loc locale to use. The 'calendar' keyword will be ignored.
+     * @param type calendar type. NULL indicates the gregorian calendar. 
+     * No default lookup is done.
+     */
+    public CalendarData(ULocale loc, String type) {
+        this((ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, loc), type);
+    }
+    
+    public CalendarData(ICUResourceBundle b, String type) {
+        fBundle = b;
+        if((type == null) || (type.equals("")) || (type.equals("gregorian"))) {
+            fMainType = "gregorian";
+            fFallbackType = null;
+        } else {
+            fMainType = type;
+            fFallbackType ="gregorian";
+        }
+    }
+    
+    /**
+     * Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
+     *
+     * @param key Resource key to data
+     * @internal
+     */
+    public ICUResourceBundle get(String key) {
+        try {
+            return fBundle.getWithFallback("calendar/" + fMainType + "/" + key);
+        } catch(MissingResourceException m) {
+            if(fFallbackType != null) {
+                return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key);
+            }
+            throw m;
+            
+        }       
+    }
+
+    /**
+     * Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
+     * There is an implicit key of 'format'
+     * data is located in:   "calendar/key/format/subKey"
+     * for example,  calendar/dayNames/format/abbreviated
+     *
+     * @param key Resource key to data
+     * @param subKey Resource key to data
+     * @internal
+     */
+    public ICUResourceBundle get(String key, String subKey) {
+        try {
+            return fBundle.getWithFallback("calendar/" + fMainType + "/" + key + "/format/" + subKey);
+        } catch(MissingResourceException m) {
+            if(fFallbackType != null) {
+                return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key + "/format/" + subKey);
+            }
+            throw m;
+            
+        }       
+    }
+
+    /**
+     * Load data for calendar. Note, this object owns the resources, do NOT call ures_close()!
+     * data is located in:   "calendar/key/contextKey/subKey"
+     * for example,  calendar/dayNames/stand-alone/narrow
+     *
+     * @param key Resource key to data
+     * @param contextKey Resource key to data
+     * @param subKey Resource key to data
+     * @internal
+     */
+    public ICUResourceBundle get(String key, String contextKey, String subKey) {
+        try {
+            return fBundle.getWithFallback("calendar/" + fMainType + "/" + key + "/" + contextKey + "/" + subKey);
+        } catch(MissingResourceException m) {
+            if(fFallbackType != null) {
+                return fBundle.getWithFallback("calendar/" + fFallbackType + "/" + key + "/" + contextKey + "/" + subKey);
+            }
+            throw m;
+            
+        }       
+    }
+    
+    public String[] getStringArray(String key) {
+        return get(key).getStringArray();
+    }
+
+    public String[] getStringArray(String key, String subKey) {
+        return get(key, subKey).getStringArray();
+    }
+
+    public String[] getStringArray(String key, String contextKey, String subKey) {
+        return get(key, contextKey, subKey).getStringArray();
+    }
+    public String[] getEras(String subkey){
+        ICUResourceBundle bundle = get("eras/"+subkey);
+        return bundle.getStringArray();
+    }
+    public ULocale getULocale() {
+        return fBundle.getULocale();
+    }
+
+    private ICUResourceBundle fBundle;
+    private String fMainType;
+    private String fFallbackType;
+}
diff --git a/src/com/ibm/icu/impl/CharTrie.java b/src/com/ibm/icu/impl/CharTrie.java
new file mode 100644
index 0000000..1f4a98e
--- /dev/null
+++ b/src/com/ibm/icu/impl/CharTrie.java
@@ -0,0 +1,356 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Trie implementation which stores data in char, 16 bits.
+ * @author synwee
+ * @see com.ibm.icu.impl.Trie
+ * @since release 2.1, Jan 01 2002
+ */
+
+ // note that i need to handle the block calculations later, since chartrie
+ // in icu4c uses the same index array.
+public class CharTrie extends Trie
+{
+    // public constructors ---------------------------------------------
+
+    /**
+    * <p>Creates a new Trie with the settings for the trie data.</p>
+    * <p>Unserialize the 32-bit-aligned input stream and use the data for the 
+    * trie.</p>
+    * @param inputStream file input stream to a ICU data file, containing 
+    *                    the trie
+    * @param dataManipulate object which provides methods to parse the char 
+    *                        data
+    * @throws IOException thrown when data reading fails
+    */
+    public CharTrie(InputStream inputStream, 
+                    DataManipulate dataManipulate) throws IOException
+    {
+        super(inputStream, dataManipulate);
+        
+        if (!isCharTrie()) {
+            throw new IllegalArgumentException(
+                               "Data given does not belong to a char trie.");
+        }
+        m_friendAgent_ = new FriendAgent();
+    }
+
+    /**
+     * Make a dummy CharTrie.
+     * A dummy trie is an empty runtime trie, used when a real data trie cannot
+     * be loaded.
+     *
+     * The trie always returns the initialValue,
+     * or the leadUnitValue for lead surrogate code points.
+     * The Latin-1 part is always set up to be linear.
+     *
+     * @param initialValue the initial value that is set for all code points
+     * @param leadUnitValue the value for lead surrogate code _units_ that do not
+     *                      have associated supplementary data
+     * @param dataManipulate object which provides methods to parse the char data
+     */
+    public CharTrie(int initialValue, int leadUnitValue, DataManipulate dataManipulate) {
+        super(new char[BMP_INDEX_LENGTH+SURROGATE_BLOCK_COUNT], HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_, dataManipulate);
+
+        int dataLength, latin1Length, i, limit;
+        char block;
+
+        /* calculate the actual size of the dummy trie data */
+
+        /* max(Latin-1, block 0) */
+        dataLength=latin1Length= INDEX_STAGE_1_SHIFT_<=8 ? 256 : DATA_BLOCK_LENGTH;
+        if(leadUnitValue!=initialValue) {
+            dataLength+=DATA_BLOCK_LENGTH;
+        }
+        m_data_=new char[dataLength];
+        m_dataLength_=dataLength;
+
+        m_initialValue_=(char)initialValue;
+
+        /* fill the index and data arrays */
+
+        /* indexes are preset to 0 (block 0) */
+
+        /* Latin-1 data */
+        for(i=0; i<latin1Length; ++i) {
+            m_data_[i]=(char)initialValue;
+        }
+
+        if(leadUnitValue!=initialValue) {
+            /* indexes for lead surrogate code units to the block after Latin-1 */
+            block=(char)(latin1Length>>INDEX_STAGE_2_SHIFT_);
+            i=0xd800>>INDEX_STAGE_1_SHIFT_;
+            limit=0xdc00>>INDEX_STAGE_1_SHIFT_;
+            for(; i<limit; ++i) {
+                m_index_[i]=block;
+            }
+
+            /* data for lead surrogate code units */
+            limit=latin1Length+DATA_BLOCK_LENGTH;
+            for(i=latin1Length; i<limit; ++i) {
+                m_data_[i]=(char)leadUnitValue;
+            }
+        }
+
+        m_friendAgent_ = new FriendAgent();
+    }
+
+    /**
+     * Java friend implementation
+     */
+    public class FriendAgent
+    {
+        /**
+         * Gives out the index array of the trie
+         * @return index array of trie
+         */ 
+        public char[] getPrivateIndex() 
+        {
+            return m_index_;
+        }
+        /**
+         * Gives out the data array of the trie
+         * @return data array of trie
+         */ 
+        public char[] getPrivateData() 
+        {
+            return m_data_;
+        }
+        /**
+         * Gives out the data offset in the trie
+         * @return data offset in the trie
+         */ 
+        public int getPrivateInitialValue() 
+        {
+            return m_initialValue_;
+        }
+    }
+    
+    // public methods --------------------------------------------------
+    
+    /**
+     * Java friend implementation
+     * To store the index and data array into the argument.
+     * @param friend java friend UCharacterProperty object to store the array
+     */
+    public void putIndexData(UCharacterProperty friend) 
+    {
+        friend.setIndexData(m_friendAgent_);
+    }
+
+    /**
+    * Gets the value associated with the codepoint.
+    * If no value is associated with the codepoint, a default value will be
+    * returned.
+    * @param ch codepoint
+    * @return offset to data
+    */
+    public final char getCodePointValue(int ch)
+    {
+        int offset;
+
+        // fastpath for U+0000..U+D7FF
+        if(0 <= ch && ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            // copy of getRawOffset()
+            offset = (m_index_[ch >> INDEX_STAGE_1_SHIFT_] << INDEX_STAGE_2_SHIFT_) 
+                    + (ch & INDEX_STAGE_3_MASK_);
+            return m_data_[offset];
+        }
+
+        // handle U+D800..U+10FFFF
+        offset = getCodePointOffset(ch);
+        
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return (offset >= 0) ? m_data_[offset] : m_initialValue_;
+    }
+
+    /**
+    * Gets the value to the data which this lead surrogate character points
+    * to.
+    * Returned data may contain folding offset information for the next
+    * trailing surrogate character.
+    * This method does not guarantee correct results for trail surrogates.
+    * @param ch lead surrogate character
+    * @return data value
+    */
+    public final char getLeadValue(char ch)
+    {
+       return m_data_[getLeadOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with the BMP code point.
+    * Lead surrogate code points are treated as normal code points, with
+    * unfolded values that may differ from getLeadValue() results.
+    * @param ch the input BMP code point
+    * @return trie data value associated with the BMP codepoint
+    */
+    public final char getBMPValue(char ch)
+    {
+        return m_data_[getBMPOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with a pair of surrogates.
+    * @param lead a lead surrogate
+    * @param trail a trail surrogate
+    */
+    public final char getSurrogateValue(char lead, char trail)
+    {
+        int offset = getSurrogateOffset(lead, trail);
+        if (offset > 0) {
+            return m_data_[offset];
+        }
+        return m_initialValue_;
+    }
+
+    /**
+    * <p>Get a value from a folding offset (from the value of a lead surrogate)
+    * and a trail surrogate.</p>
+    * <p>If the 
+    * @param leadvalue value associated with the lead surrogate which contains
+    *        the folding offset
+    * @param trail surrogate
+    * @return trie data value associated with the trail character
+    */
+    public final char getTrailValue(int leadvalue, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        int offset = m_dataManipulate_.getFoldingOffset(leadvalue);
+        if (offset > 0) {
+            return m_data_[getRawOffset(offset, 
+                                        (char)(trail & SURROGATE_MASK_))];
+        }
+        return m_initialValue_;
+    }
+    
+    /**
+     * <p>Gets the latin 1 fast path value.</p>
+     * <p>Note this only works if latin 1 characters have their own linear 
+     * array.</p>
+     * @param ch latin 1 characters
+     * @return value associated with latin character
+     */
+    public final char getLatin1LinearValue(char ch) 
+    {
+        return m_data_[INDEX_STAGE_3_MASK_ + 1 + m_dataOffset_ + ch];
+    }
+    
+    /**
+     * Checks if the argument Trie has the same data as this Trie
+     * @param other Trie to check
+     * @return true if the argument Trie has the same data as this Trie, false
+     *         otherwise
+     */
+    ///CLOVER:OFF
+    public boolean equals(Object other) 
+    {
+        boolean result = super.equals(other);
+        if (result && other instanceof CharTrie) {
+            CharTrie othertrie = (CharTrie)other;
+            return m_initialValue_ == othertrie.m_initialValue_;
+        }
+        return false;
+    }
+    ///CLOVER:ON
+
+    // protected methods -----------------------------------------------
+
+    /**
+    * <p>Parses the input stream and stores its trie content into a index and
+    * data array</p>
+    * @param inputStream data input stream containing trie data
+    * @exception IOException thrown when data reading fails
+    */
+    protected final void unserialize(InputStream inputStream) 
+                                                throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        int indexDataLength = m_dataOffset_ + m_dataLength_;
+        m_index_ = new char[indexDataLength];
+        for (int i = 0; i < indexDataLength; i ++) {
+            m_index_[i] = input.readChar();
+        }
+        m_data_           = m_index_;
+        m_initialValue_   = m_data_[m_dataOffset_];
+    }
+    
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    */
+    protected final int getSurrogateOffset(char lead, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        
+        // get fold position for the next trail surrogate
+        int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
+        }
+
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return -1;
+    }
+    
+    /**
+    * Gets the value at the argument index.
+    * For use internally in TrieIterator.
+    * @param index value at index will be retrieved
+    * @return 32 bit value
+    * @see com.ibm.icu.impl.TrieIterator
+    */
+    protected final int getValue(int index)
+    {
+        return m_data_[index];
+    }
+
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    */
+    protected final int getInitialValue()
+    {
+        return m_initialValue_;
+    }
+  
+    // private data members --------------------------------------------
+
+    /**
+    * Default value
+    */
+    private char m_initialValue_;
+    /**
+    * Array of char data
+    */
+    private char m_data_[];
+    /**
+     * Agent for friends
+     */
+    private FriendAgent m_friendAgent_;
+}
diff --git a/src/com/ibm/icu/impl/CharacterIteratorWrapper.java b/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
new file mode 100644
index 0000000..34c4a57
--- /dev/null
+++ b/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
@@ -0,0 +1,148 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.text.CharacterIterator;
+
+import com.ibm.icu.text.*;
+
+/**
+ * This class is a wrapper around CharacterIterator and implements the 
+ * UCharacterIterator protocol
+ * @author ram
+ */
+
+public class CharacterIteratorWrapper extends UCharacterIterator {
+    
+    private CharacterIterator iterator;
+    
+    
+    public CharacterIteratorWrapper(CharacterIterator iter){
+        if(iter==null){
+            throw new IllegalArgumentException();
+        }
+        iterator     = iter;   
+    }
+
+    /**
+     * @see UCharacterIterator#current()
+     */
+    public int current() {
+        int c = iterator.current();
+        if(c==CharacterIterator.DONE){
+          return DONE;
+        }
+        return c;
+    }
+
+    /**
+     * @see UCharacterIterator#getLength()
+     */
+    public int getLength() {
+        return (iterator.getEndIndex() - iterator.getBeginIndex());
+    }
+
+    /**
+     * @see UCharacterIterator#getIndex()
+     */
+    public int getIndex() {
+        return iterator.getIndex();
+    }
+
+    /**
+     * @see UCharacterIterator#next()
+     */
+    public int next() {
+        int i = iterator.current();
+        iterator.next();
+        if(i==CharacterIterator.DONE){  
+          return DONE;
+        }
+        return i;
+    }
+
+    /**
+     * @see UCharacterIterator#previous()
+     */
+    public int previous() {
+        int i = iterator.previous();
+        if(i==CharacterIterator.DONE){
+            return DONE;
+        }
+        return i;
+    }
+
+    /**
+     * @see UCharacterIterator#setIndex(int)
+     */
+    public void setIndex(int index) {
+        try{
+            iterator.setIndex(index);
+        }catch(IllegalArgumentException e){
+            throw new IndexOutOfBoundsException();
+        }
+    }
+
+    /**
+     * @see UCharacterIterator#setToLimit()
+     */
+    public void setToLimit() {
+        iterator.setIndex(iterator.getEndIndex());
+    }
+
+    /**
+     * @see UCharacterIterator#getText(char[])
+     */
+    public int getText(char[] fillIn, int offset){
+        int length =iterator.getEndIndex() - iterator.getBeginIndex(); 
+        int currentIndex = iterator.getIndex();
+        if(offset < 0 || offset + length > fillIn.length){
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        }
+    
+        for (char ch = iterator.first(); ch != CharacterIterator.DONE; ch = iterator.next()) {
+            fillIn[offset++] = ch;
+        }
+        iterator.setIndex(currentIndex);
+
+        return length;
+    }
+
+    /**
+     * Creates a clone of this iterator.  Clones the underlying character iterator.
+     * @see UCharacterIterator#clone()
+     */
+    public Object clone(){
+        try {
+            CharacterIteratorWrapper result = (CharacterIteratorWrapper) super.clone();
+            result.iterator = (CharacterIterator)this.iterator.clone();
+            return result;
+        } catch (CloneNotSupportedException e) {      
+            return null; // only invoked if bad underlying character iterator
+        }
+    }
+    
+
+    public int moveIndex(int delta){
+        int length = iterator.getEndIndex() - iterator.getBeginIndex(); 
+        int idx = iterator.getIndex()+delta;
+        
+        if(idx < 0) {
+            idx = 0;
+        } else if(idx > length) {
+            idx = length;
+        }
+        return iterator.setIndex(idx);
+    }
+    
+    /**
+     * @see UCharacterIterator#getCharacterIterator()
+     */
+    public CharacterIterator getCharacterIterator(){
+        return (CharacterIterator)iterator.clone();
+    } 
+}
diff --git a/src/com/ibm/icu/impl/CollectionUtilities.java b/src/com/ibm/icu/impl/CollectionUtilities.java
new file mode 100644
index 0000000..a5783da
--- /dev/null
+++ b/src/com/ibm/icu/impl/CollectionUtilities.java
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google Inc, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.Comparator;
+
+/**
+ * @author markdavis
+ *
+ */
+public class CollectionUtilities {
+    
+    public static class MultiComparator implements Comparator {
+        private Comparator[] comparators;
+    
+        public MultiComparator (Comparator[] comparators) {
+            this.comparators = comparators;
+        }
+    
+        /* Lexigraphic compare. Returns the first difference
+         * @return zero if equal. Otherwise +/- (i+1) 
+         * where i is the index of the first comparator finding a difference
+         * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+         */
+        public int compare(Object arg0, Object arg1) {
+            for (int i = 0; i < comparators.length; ++i) {
+                int result = comparators[i].compare(arg0, arg1);
+                if (result == 0) continue;
+                if (result > 0) return i+1;
+                return -(i+1);
+            }
+            return 0;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/DateNumberFormat.java b/src/com/ibm/icu/impl/DateNumberFormat.java
new file mode 100644
index 0000000..63fc8e7
--- /dev/null
+++ b/src/com/ibm/icu/impl/DateNumberFormat.java
@@ -0,0 +1,213 @@
+//##header J2SE15
+/*
+*******************************************************************************
+*   Copyright (C) 2007-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/*
+ * NumberFormat implementation dedicated/optimized for DateFormat,
+ * used by SimpleDateFormat implementation.
+ */
+public final class DateNumberFormat extends NumberFormat {
+
+    private static final long serialVersionUID = -6315692826916346953L;
+
+    private char zeroDigit;
+    private char minusSign;
+    private boolean positiveOnly = false;
+
+    private transient char[] decimalBuf = new char[20]; // 20 digits is good enough to store Long.MAX_VALUE
+
+    private static SimpleCache CACHE = new SimpleCache();
+
+    private int maxIntDigits;
+    private int minIntDigits;
+ 
+    public DateNumberFormat(ULocale loc) {
+        initialize(loc);
+    }
+
+/*    public DateNumberFormat(char zeroDigit, char minusSign) {
+        this.zeroDigit = zeroDigit;
+        this.minusSign = minusSign;
+    }
+*/
+
+    private void initialize(ULocale loc) {
+        char[] elems = (char[])CACHE.get(loc);
+        if (elems == null) {
+            // Missed cache
+            ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, loc);
+            String[] numberElements = rb.getStringArray("NumberElements");
+            elems = new char[2];
+            elems[0] = numberElements[4].charAt(0);
+            elems[1] = numberElements[6].charAt(0);
+            CACHE.put(loc, elems);
+        }
+        zeroDigit = elems[0];
+        minusSign = elems[1];
+    }
+
+    public void setMaximumIntegerDigits(int newValue) {
+        maxIntDigits = newValue;
+    }
+
+    public int getMaximumIntegerDigits() {
+        return maxIntDigits;
+    }
+
+    public void setMinimumIntegerDigits(int newValue) {
+        minIntDigits = newValue;
+    }
+
+    public int getMinimumIntegerDigits() {
+        return minIntDigits;
+    }
+
+    /* For supporting SimpleDateFormat.parseInt */
+    public void setParsePositiveOnly(boolean isPositiveOnly) {
+        positiveOnly = isPositiveOnly;
+    }
+
+    public char getZeroDigit() {
+        return zeroDigit;
+    }
+
+    public void setZeroDigit(char zero) {
+        zeroDigit = zero;
+    }
+
+    public StringBuffer format(double number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(double, StringBuffer, FieldPostion) is not implemented");
+    }
+
+    public StringBuffer format(long numberL, StringBuffer toAppendTo,
+            FieldPosition pos) {
+
+        if (numberL < 0) {
+            // negative
+            toAppendTo.append(minusSign);
+        }
+
+        // Note: NumberFormat used by DateFormat only uses int numbers.
+        // Remainder operation on 32bit platform using long is significantly slower
+        // than int.  So, this method casts long number into int.
+        int number = (int)numberL;
+
+        int limit = decimalBuf.length < maxIntDigits ? decimalBuf.length : maxIntDigits;
+        int index = limit - 1;
+        while (true) {
+            decimalBuf[index] = (char)((number % 10) + zeroDigit);
+            number /= 10;
+            if (index == 0 || number == 0) {
+                break;
+            }
+            index--;
+        }
+        int padding = minIntDigits - (limit - index);
+        for (; padding > 0; padding--) {
+            decimalBuf[--index] = zeroDigit;
+        }
+        int length = limit - index;
+        toAppendTo.append(decimalBuf, index, length);
+        pos.setBeginIndex(0);
+        if (pos.getField() == NumberFormat.INTEGER_FIELD) {
+            pos.setEndIndex(length);
+        } else {
+            pos.setEndIndex(0);
+        }
+        return toAppendTo;
+    }
+    
+    public StringBuffer format(BigInteger number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(BigInteger, StringBuffer, FieldPostion) is not implemented");
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(BigDecimal, StringBuffer, FieldPostion) is not implemented");
+    }
+//#endif
+
+    public StringBuffer format(BigDecimal number,
+            StringBuffer toAppendTo, FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(BigDecimal, StringBuffer, FieldPostion) is not implemented");
+    }
+
+    /*
+     * Note: This method only parse integer numbers which can be represented by long
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+        long num = 0;
+        boolean sawNumber = false;
+        boolean negative = false;
+        int base = parsePosition.getIndex();
+        int offset = 0;
+        for (; base + offset < text.length(); offset++) {
+            char ch = text.charAt(base + offset);
+            if (offset == 0 && ch == minusSign) {
+                if (positiveOnly) {
+                    break;
+                }
+                negative = true;
+            } else {
+                int digit = ch - zeroDigit;
+                if (digit < 0 || 9 < digit) {
+                    digit = UCharacter.digit(ch);
+                }
+                if (0 <= digit && digit <= 9) {
+                    sawNumber = true;
+                    num = num * 10 + digit;
+                } else {
+                    break;
+                }
+            }
+        }
+        Number result = null;
+        if (sawNumber) {
+            num = negative ? num * (-1) : num;
+            result = new Long(num);
+            parsePosition.setIndex(base + offset);
+        }
+        return result;
+    }
+
+    public boolean equals(Object obj) {
+        if (obj == null || !super.equals(obj) || !(obj instanceof DateNumberFormat)) {
+            return false;
+        }
+        DateNumberFormat other = (DateNumberFormat)obj;
+        return (this.maxIntDigits == other.maxIntDigits
+                && this.minIntDigits == other.minIntDigits
+                && this.zeroDigit == other.zeroDigit
+                && this.minusSign == other.minusSign
+                && this.positiveOnly == other.positiveOnly);
+    }
+
+    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        // re-allocate the work buffer
+        decimalBuf = new char[20];
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/impl/Grego.java b/src/com/ibm/icu/impl/Grego.java
new file mode 100644
index 0000000..e5fbacc
--- /dev/null
+++ b/src/com/ibm/icu/impl/Grego.java
@@ -0,0 +1,213 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *******************************************************************************
+ * Partial port from ICU4C's Grego class in i18n/gregoimp.h.
+ *
+ * Methods ported, or moved here from OlsonTimeZone, initially
+ * for work on Jitterbug 5470:
+ *   tzdata2006n Brazil incorrect fall-back date 2009-mar-01
+ * Only the methods necessary for that work are provided - this is not a full
+ * port of ICU4C's Grego class (yet).
+ *
+ * These utilities are used by both OlsonTimeZone and SimpleTimeZone.
+ */
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.util.Calendar;
+
+/**
+ * A utility class providing proleptic Gregorian calendar functions
+ * used by time zone and calendar code.  Do not instantiate.
+ *
+ * Note:  Unlike GregorianCalendar, all computations performed by this
+ * class occur in the pure proleptic GregorianCalendar.
+ */
+public class Grego {
+
+    // Max/min milliseconds 
+    public static final long MIN_MILLIS = -184303902528000000L;
+    public static final long MAX_MILLIS = 183882168921600000L;
+
+    public static final int MILLIS_PER_SECOND = 1000;
+    public static final int MILLIS_PER_MINUTE = 60*MILLIS_PER_SECOND;
+    public static final int MILLIS_PER_HOUR = 60*MILLIS_PER_MINUTE;
+    public static final int MILLIS_PER_DAY = 24*MILLIS_PER_HOUR;
+    
+    //  January 1, 1 CE Gregorian
+    private static final int JULIAN_1_CE = 1721426;
+
+    //  January 1, 1970 CE Gregorian
+    private static final int JULIAN_1970_CE = 2440588;
+
+    private static final int[] MONTH_LENGTH = new int[] {
+        31,28,31,30,31,30,31,31,30,31,30,31,
+        31,29,31,30,31,30,31,31,30,31,30,31
+    };
+
+    private static final int[] DAYS_BEFORE = new int[] {
+        0,31,59,90,120,151,181,212,243,273,304,334,
+        0,31,60,91,121,152,182,213,244,274,305,335 };
+
+    /**
+     * Return true if the given year is a leap year.
+     * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @return true if the year is a leap year
+     */
+    public static final boolean isLeapYear(int year) {
+        // year&0x3 == year%4
+        return ((year&0x3) == 0) && ((year%100 != 0) || (year%400 == 0));
+    }
+
+    /**
+     * Return the number of days in the given month.
+     * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @param month 0-based month, with 0==Jan
+     * @return the number of days in the given month
+     */
+    public static final int monthLength(int year, int month) {
+        return MONTH_LENGTH[month + (isLeapYear(year) ? 12 : 0)];
+    }
+
+    /**
+     * Return the length of a previous month of the Gregorian calendar.
+     * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @param month 0-based month, with 0==Jan
+     * @return the number of days in the month previous to the given month
+     */
+    public static final int previousMonthLength(int year, int month) {
+        return (month > 0) ? monthLength(year, month-1) : 31;
+    }
+
+    /**
+     * Convert a year, month, and day-of-month, given in the proleptic
+     * Gregorian calendar, to 1970 epoch days.
+     * @param year Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @param month 0-based month, with 0==Jan
+     * @param dom 1-based day of month
+     * @return the day number, with day 0 == Jan 1 1970
+     */
+    public static long fieldsToDay(int year, int month, int dom) {
+        int y = year - 1;
+        long julian =
+            365 * y + floorDivide(y, 4) + (JULIAN_1_CE - 3) +    // Julian cal
+            floorDivide(y, 400) - floorDivide(y, 100) + 2 +   // => Gregorian cal
+            DAYS_BEFORE[month + (isLeapYear(year) ? 12 : 0)] + dom; // => month/dom
+        return julian - JULIAN_1970_CE; // JD => epoch day
+    }
+
+    /**
+     * Return the day of week on the 1970-epoch day
+     * @param day the 1970-epoch day (integral value)
+     * @return the day of week
+     */
+    public static int dayOfWeek(long day) {
+        long[] remainder = new long[1];
+        floorDivide(day + Calendar.THURSDAY, 7, remainder);
+        int dayOfWeek = (int)remainder[0];
+        dayOfWeek = (dayOfWeek == 0) ? 7 : dayOfWeek;
+        return dayOfWeek;
+    }
+
+    public static int[] dayToFields(long day, int[] fields) {
+        if (fields == null || fields.length < 5) {
+            fields = new int[5];
+        }
+        // Convert from 1970 CE epoch to 1 CE epoch (Gregorian calendar)
+        day += JULIAN_1970_CE - JULIAN_1_CE;
+
+        long[] rem = new long[1];
+        long n400 = floorDivide(day, 146097, rem);
+        long n100 = floorDivide(rem[0], 36524, rem);
+        long n4 = floorDivide(rem[0], 1461, rem);
+        long n1 = floorDivide(rem[0], 365, rem);
+
+        int year = (int)(400 * n400 + 100 * n100 + 4 * n4 + n1);
+        int dayOfYear = (int)rem[0];
+        if (n100 == 4 || n1 == 4) {
+            dayOfYear = 365;    // Dec 31 at end of 4- or 400-yr cycle
+        }
+        else {
+            ++year;
+        }
+
+        boolean isLeap = isLeapYear(year);
+        int correction = 0;
+        int march1 = isLeap ? 60 : 59;  // zero-based DOY for March 1
+        if (dayOfYear >= march1) {
+            correction = isLeap ? 1 : 2;
+        }
+        int month = (12 * (dayOfYear + correction) + 6) / 367;  // zero-based month
+        int dayOfMonth = dayOfYear - DAYS_BEFORE[isLeap ? month + 12 : month] + 1; // one-based DOM
+        int dayOfWeek = (int)((day + 2) % 7);  // day 0 is Monday(2)
+        if (dayOfWeek < 1 /* Sunday */) {
+            dayOfWeek += 7;
+        }
+        dayOfYear++; // 1-based day of year
+
+        fields[0] = year;
+        fields[1] = month;
+        fields[2] = dayOfMonth;
+        fields[3] = dayOfWeek;
+        fields[4] = dayOfYear;
+
+        return fields;
+    }
+
+    /*
+     * Convert long time to date/time fields
+     * 
+     * result[0] : year
+     * result[1] : month
+     * result[2] : dayOfMonth
+     * result[3] : dayOfWeek
+     * result[4] : dayOfYear
+     * result[5] : millisecond in day
+     */
+    public static int[] timeToFields(long time, int[] fields) {
+        if (fields == null || fields.length < 6) {
+            fields = new int[6];
+        }
+        long[] remainder = new long[1];
+        long day = floorDivide(time, 24*60*60*1000 /* milliseconds per day */, remainder);
+        dayToFields(day, fields);
+        fields[5] = (int)remainder[0];
+        return fields;
+    }
+
+    public static long floorDivide(long numerator, long denominator) {
+        // We do this computation in order to handle
+        // a numerator of Long.MIN_VALUE correctly
+        return (numerator >= 0) ?
+            numerator / denominator :
+            ((numerator + 1) / denominator) - 1;
+    }
+
+    private static long floorDivide(long numerator, long denominator, long[] remainder) {
+        if (numerator >= 0) {
+            remainder[0] = numerator % denominator;
+            return numerator / denominator;
+        }
+        long quotient = ((numerator + 1) / denominator) - 1;
+        remainder[0] = numerator - (quotient * denominator);
+        return quotient;
+    }
+
+    /*
+     * Returns the ordinal number for the specified day of week in the month.
+     * The valid return value is 1, 2, 3, 4 or -1.
+     */
+    public static int getDayOfWeekInMonth(int year, int month, int dayOfMonth) {
+        int weekInMonth = (dayOfMonth + 6)/7;
+        if (weekInMonth == 4) {
+            if (dayOfMonth + 7 > monthLength(year, month)) {
+                weekInMonth = -1;
+            }
+        } else if (weekInMonth == 5) {
+            weekInMonth = -1;
+        }
+        return weekInMonth;
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUBinary.java b/src/com/ibm/icu/impl/ICUBinary.java
new file mode 100644
index 0000000..72f9cc4
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUBinary.java
@@ -0,0 +1,157 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
+public final class ICUBinary 
+{    
+    // public inner interface ------------------------------------------------
+    
+    /**
+     * Special interface for data authentication
+     */
+    public static interface Authenticate
+    {
+        /**
+         * Method used in ICUBinary.readHeader() to provide data format
+         * authentication. 
+         * @param version version of the current data
+         * @return true if dataformat is an acceptable version, false otherwise
+         */
+        public boolean isDataVersionAcceptable(byte version[]);
+    }
+    
+    // public methods --------------------------------------------------------
+    
+    /**
+    * <p>ICU data header reader method. 
+    * Takes a ICU generated big-endian input stream, parse the ICU standard 
+    * file header and authenticates them.</p>
+    * <p>Header format: 
+    * <ul>
+    *     <li> Header size (char)
+    *     <li> Magic number 1 (byte)
+    *     <li> Magic number 2 (byte)
+    *     <li> Rest of the header size (char)
+    *     <li> Reserved word (char)
+    *     <li> Big endian indicator (byte)
+    *     <li> Character set family indicator (byte)
+    *     <li> Size of a char (byte) for c++ and c use
+    *     <li> Reserved byte (byte)
+    *     <li> Data format identifier (4 bytes), each ICU data has its own
+    *          identifier to distinguish them. [0] major [1] minor 
+    *                                          [2] milli [3] micro 
+    *     <li> Data version (4 bytes), the change version of the ICU data
+    *                             [0] major [1] minor [2] milli [3] micro 
+    *     <li> Unicode version (4 bytes) this ICU is based on.
+    * </ul>
+    * </p>
+    * <p>
+    * Example of use:<br>
+    * <pre>
+    * try {
+    *    FileInputStream input = new FileInputStream(filename);
+    *    If (Utility.readICUDataHeader(input, dataformat, dataversion, 
+    *                                  unicode) {
+    *        System.out.println("Verified file header, this is a ICU data file");
+    *    }
+    * } catch (IOException e) {
+    *    System.out.println("This is not a ICU data file");
+    * }
+    * </pre>
+    * </p>
+    * @param inputStream input stream that contains the ICU data header
+    * @param dataFormatIDExpected Data format expected. An array of 4 bytes 
+    *                     information about the data format.
+    *                     E.g. data format ID 1.2.3.4. will became an array of 
+    *                     {1, 2, 3, 4}
+    * @param authenticate user defined extra data authentication. This value
+    *                     can be null, if no extra authentication is needed.
+    * @exception IOException thrown if there is a read error or 
+    *            when header authentication fails.
+    */
+    public static final byte[] readHeader(InputStream inputStream,
+                                        byte dataFormatIDExpected[],
+                                        Authenticate authenticate) 
+                                                          throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        char headersize = input.readChar();
+        int readcount = 2;
+        //reading the header format
+        byte magic1 = input.readByte();
+        readcount ++;
+        byte magic2 = input.readByte();
+        readcount ++;
+        if (magic1 != MAGIC1 || magic2 != MAGIC2) {
+            throw new IOException(MAGIC_NUMBER_AUTHENTICATION_FAILED_);
+        }
+        
+        input.readChar(); // reading size
+        readcount += 2;
+        input.readChar(); // reading reserved word
+        readcount += 2;
+        byte bigendian    = input.readByte();
+        readcount ++;
+        byte charset      = input.readByte();
+        readcount ++;
+        byte charsize     = input.readByte();
+        readcount ++;
+        input.readByte(); // reading reserved byte
+        readcount ++;
+                
+        byte dataFormatID[] = new byte[4];
+        input.readFully(dataFormatID);
+        readcount += 4;
+        byte dataVersion[] = new byte[4];
+        input.readFully(dataVersion);
+        readcount += 4;
+        byte unicodeVersion[] = new byte[4];
+        input.readFully(unicodeVersion);
+        readcount += 4;
+        if (headersize < readcount) {
+            throw new IOException("Internal Error: Header size error");
+        }
+        input.skipBytes(headersize - readcount);
+
+        if (bigendian != BIG_ENDIAN_ || charset != CHAR_SET_
+            || charsize != CHAR_SIZE_
+            || !Arrays.equals(dataFormatIDExpected, dataFormatID)
+            || (authenticate != null 
+                && !authenticate.isDataVersionAcceptable(dataVersion))) {
+            throw new IOException(HEADER_AUTHENTICATION_FAILED_);
+        }
+        return unicodeVersion;
+    }
+     
+    // private variables -------------------------------------------------
+  
+    /**
+    * Magic numbers to authenticate the data file
+    */
+    private static final byte MAGIC1 = (byte)0xda;
+    private static final byte MAGIC2 = (byte)0x27;
+      
+    /**
+    * File format authentication values
+    */
+    private static final byte BIG_ENDIAN_ = 1;
+    private static final byte CHAR_SET_ = 0;
+    private static final byte CHAR_SIZE_ = 2;
+                                                    
+    /**
+    * Error messages
+    */
+    private static final String MAGIC_NUMBER_AUTHENTICATION_FAILED_ = 
+                       "ICU data file error: Not an ICU data file";
+    private static final String HEADER_AUTHENTICATION_FAILED_ =
+        "ICU data file error: Header authentication failed, please check if you have a valid ICU data file";
+}
diff --git a/src/com/ibm/icu/impl/ICUBinaryStream.java b/src/com/ibm/icu/impl/ICUBinaryStream.java
new file mode 100644
index 0000000..ad49251
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUBinaryStream.java
@@ -0,0 +1,59 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2006, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: November 5 2002
+* Since: ICU 2.4
+**********************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.*;
+
+/**
+ * A DataInputStream that implements random-access seeking.  For this
+ * to work, the size of the data stream must be known in advance, or
+ * the data must be supplied as a raw byte[] array.
+ *
+ * Seeking doesn't work directly on all streams.  If a given stream
+ * doesn't support seeking, extract the bytes into a byte[] array and
+ * use the byte[] constructor.
+ */
+class ICUBinaryStream extends DataInputStream {
+
+    /**
+     * Construct a stream from the given stream and size.
+     * @param stream the stream of data
+     * @param size the number of bytes that should be made available
+     * for seeking.  Bytes beyond this may be read, but seeking will
+     * not work for offset >= size.
+     */
+    public ICUBinaryStream(InputStream stream, int size) {
+        super(stream);
+        mark(size);
+    }
+
+    /**
+     * Construct a stream from the given raw bytes.
+     */
+    public ICUBinaryStream(byte[] raw) {
+        this(new ByteArrayInputStream(raw), raw.length);
+    }
+
+    /**
+     * Seek to the given offset.  Offset is from the position of the
+     * stream passed to the constructor, or from the start of the
+     * byte[] array.
+     */
+    public void seek(int offset) throws IOException {
+        reset();
+        int actual = skipBytes(offset);
+        if (actual != offset) {
+            throw new IllegalStateException("Skip(" + offset + ") only skipped " +
+                                       actual + " bytes");
+        }
+        if (false) System.out.println("(seek " + offset + ")");
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUCache.java b/src/com/ibm/icu/impl/ICUCache.java
new file mode 100644
index 0000000..cf4d476
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUCache.java
@@ -0,0 +1,21 @@
+/*
+ ***************************************************************************
+ * Copyright (c) 2007-2008 International Business Machines Corporation and *
+ * others.  All rights reserved.                                           *
+ ***************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+public interface ICUCache {
+    // Type of reference holding the Map instance
+    public static final int SOFT = 0;
+    public static final int WEAK = 1;
+
+    // NULL object, which may be used for a cache key
+    public static final Object NULL = new Object();
+
+    public void clear();
+    public void put(Object key, Object value);
+    public Object get(Object key);
+}
diff --git a/src/com/ibm/icu/impl/ICUConfig.java b/src/com/ibm/icu/impl/ICUConfig.java
new file mode 100644
index 0000000..4b3051f
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUConfig.java
@@ -0,0 +1,65 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.MissingResourceException;
+import java.util.Properties;
+
+/**
+ * ICUConfig is a class used for accessing ICU4J runtime configuration.
+ */
+public class ICUConfig {
+    public static final String CONFIG_PROPS_FILE = "/com/ibm/icu/ICUConfig.properties";
+    private static final Properties CONFIG_PROPS;
+
+    static {
+        CONFIG_PROPS = new Properties();
+        try {
+            InputStream is = ICUData.getStream(CONFIG_PROPS_FILE);
+            if (is != null) {
+                CONFIG_PROPS.load(is);
+            }
+        } catch (MissingResourceException mre) {
+            // If it does not exist, ignore.
+        } catch (IOException ioe) {
+            // Any IO errors, ignore
+        }
+    }
+
+    /**
+     * Get ICU configuration property value for the given name.
+     * @param name The configuration property name
+     * @return The configuration property value, or null if it does not exist.
+     */
+    public static String get(String name) {
+        return get(name, null);
+    }
+
+    /**
+     * Get ICU configuration property value for the given name.
+     * @param name The configuration property name
+     * @param def The default value
+     * @return The configuration property value.  If the property does not
+     * exist, <code>def</code> is returned.
+     */
+    public static String get(String name, String def) {
+        String val = null;
+        // Try the system property first
+        try {
+            val = System.getProperty(name);
+        } catch (SecurityException e) {
+            // Ignore and fall through
+        }
+
+        if (val == null) {
+            val = CONFIG_PROPS.getProperty(name, def);
+        }
+        return val;
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUData.java b/src/com/ibm/icu/impl/ICUData.java
new file mode 100644
index 0000000..5cb1cf1
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUData.java
@@ -0,0 +1,114 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * Created on Feb 4, 2004
+ *
+ */
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.MissingResourceException;
+
+/**
+ * Provides access to ICU data files as InputStreams.  Implements security checking.
+ */
+public final class ICUData {
+    /*
+     * Return a URL to the ICU resource names resourceName.  The
+     * resource name should either be an absolute path, or a path relative to
+     * com.ibm.icu.impl (e.g., most likely it is 'data/foo').  If required
+     * is true, throw an MissingResourceException instead of returning a null result.
+     */
+    public static boolean exists(final String resourceName) {
+        URL i = null;
+        if (System.getSecurityManager() != null) {
+            i = (URL)AccessController.doPrivileged(new PrivilegedAction() {
+                    public Object run() {
+                        return ICUData.class.getResource(resourceName);
+                    }
+                });
+        } else {
+            i = ICUData.class.getResource(resourceName);
+        }
+        return i != null;
+    }
+        
+    private static InputStream getStream(final Class root, final String resourceName, boolean required) {
+        InputStream i = null;
+        
+        if (System.getSecurityManager() != null) {
+            i = (InputStream)AccessController.doPrivileged(new PrivilegedAction() {
+                    public Object run() {
+                        return root.getResourceAsStream(resourceName);
+                    }
+                });
+        } else {
+            i = root.getResourceAsStream(resourceName);
+        }
+
+        if (i == null && required) {
+            throw new MissingResourceException("could not locate data " +resourceName, root.getPackage().getName(), resourceName);
+        }
+        return i;
+    }
+
+    private static InputStream getStream(final ClassLoader loader, final String resourceName, boolean required) {
+        InputStream i = null;
+        if (System.getSecurityManager() != null) {
+            i = (InputStream)AccessController.doPrivileged(new PrivilegedAction() {
+                    public Object run() {
+                        return loader.getResourceAsStream(resourceName);
+                    }
+                });
+        } else {
+            i = loader.getResourceAsStream(resourceName);
+        }
+        if (i == null && required) {
+            throw new MissingResourceException("could not locate data", loader.toString(), resourceName);
+        }
+        return i;
+    }
+    
+    public static InputStream getStream(ClassLoader loader, String resourceName){
+        return getStream(loader,resourceName, false);   
+    }
+
+    public static InputStream getRequiredStream(ClassLoader loader, String resourceName){
+        return getStream(loader, resourceName, true);
+    }
+
+    /*
+     * Convenience override that calls getStream(ICUData.class, resourceName, false);
+     */
+    public static InputStream getStream(String resourceName) {
+        return getStream(ICUData.class, resourceName, false);
+    }
+        
+    /*
+     * Convenience method that calls getStream(ICUData.class, resourceName, true).
+     */
+    public static InputStream getRequiredStream(String resourceName) {
+        return getStream(ICUData.class, resourceName, true);
+    }
+
+    /*
+     * Convenience override that calls getStream(root, resourceName, false);
+     */
+    public static InputStream getStream(Class root, String resourceName) {
+        return getStream(root, resourceName, false);
+    }
+    
+    /*
+     * Convenience method that calls getStream(root, resourceName, true).
+     */
+    public static InputStream getRequiredStream(Class root, String resourceName) {
+        return getStream(root, resourceName, true);
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/ICUDebug.java b/src/com/ibm/icu/impl/ICUDebug.java
new file mode 100644
index 0000000..3b5fd90
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUDebug.java
@@ -0,0 +1,123 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.util.VersionInfo;
+
+public final class ICUDebug {
+    private static String params;
+    static {
+        try {
+            params = System.getProperty("ICUDebug");
+        }
+        catch (SecurityException e) {
+        }
+    }
+    private static boolean debug = params != null;
+    private static boolean help = debug && (params.equals("") || params.indexOf("help") != -1);
+
+    static {
+        if (debug) {
+            System.out.println("\nICUDebug=" + params);
+        }
+    }
+
+    public static final String javaVersionString = System.getProperty("java.version");
+    public static final boolean isJDK14OrHigher;
+    public static final VersionInfo javaVersion;
+
+    public static VersionInfo getInstanceLenient(String s) {
+        // clean string
+        // preserve only digits, separated by single '.' 
+        // ignore over 4 digit sequences
+        // does not test < 255, very odd...
+
+        char[] chars = s.toCharArray();
+        int r = 0, w = 0, count = 0;
+        boolean numeric = false; // ignore leading non-numerics
+        while (r < chars.length) {
+            char c = chars[r++];
+            if (c < '0' || c > '9') {
+                if (numeric) {
+                    if (count == 3) {
+                        // only four digit strings allowed
+                        break;
+                    }
+                    numeric = false;
+                    chars[w++] = '.';
+                    ++count;
+                }
+            } else {
+                numeric = true;
+                chars[w++] = c;
+            }
+        }
+        while (w > 0 && chars[w-1] == '.') {
+            --w;
+        }
+    
+        String vs = new String(chars, 0, w);
+
+        return VersionInfo.getInstance(vs);
+    }
+
+    static {
+        javaVersion = getInstanceLenient(javaVersionString);
+
+        VersionInfo java14Version = VersionInfo.getInstance("1.4.0");
+
+        isJDK14OrHigher = javaVersion.compareTo(java14Version) >= 0;
+    }
+
+    public static boolean enabled() {
+        return debug;
+    }
+
+    public static boolean enabled(String arg) {
+        if (debug) {
+            boolean result = params.indexOf(arg) != -1;
+            if (help) System.out.println("\nICUDebug.enabled(" + arg + ") = " + result);
+            return result;
+        }
+        return false;
+    }
+
+    public static String value(String arg) {
+        String result = "false";
+        if (debug) {
+            int index = params.indexOf(arg);
+            if (index != -1) {
+                index += arg.length();
+                if (params.length() > index && params.charAt(index) == '=') {
+                    index += 1;
+                    int limit = params.indexOf(",", index);
+                    result = params.substring(index, limit == -1 ? params.length() : limit);
+                } else {
+                    result = "true";
+                }
+            }
+
+            if (help) System.out.println("\nICUDebug.value(" + arg + ") = " + result);
+        }
+        return result;
+    }
+
+/*    static public void main(String[] args) {
+        // test
+        String[] tests = {
+            "1.3.0",
+            "1.3.0_02",
+            "1.3.1ea",
+            "1.4.1b43",
+            "___41___5",
+            "x1.4.51xx89ea.7f"
+        };
+        for (int i = 0; i < tests.length; ++i) {
+            System.out.println(tests[i] + " => " + getInstanceLenient(tests[i]));
+        }
+    }*/
+}
diff --git a/src/com/ibm/icu/impl/ICULocaleService.java b/src/com/ibm/icu/impl/ICULocaleService.java
new file mode 100644
index 0000000..9aadcff
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICULocaleService.java
@@ -0,0 +1,614 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.util.ULocale;
+
+public class ICULocaleService extends ICUService {
+    private ULocale fallbackLocale;
+    private String fallbackLocaleName;
+
+    /**
+     * Construct an ICULocaleService.
+     */
+    public ICULocaleService() {
+    }
+
+    /**
+     * Construct an ICULocaleService with a name (useful for debugging).
+     */
+    public ICULocaleService(String name) {
+        super(name);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * get(ULocale, int, ULocale[]) with KIND_ANY for kind and null for
+     * actualReturn.
+     */
+    public Object get(ULocale locale) {
+        return get(locale, LocaleKey.KIND_ANY, null);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * get(ULocale, int, ULocale[]) with a null actualReturn.
+     */
+    public Object get(ULocale locale, int kind) {
+        return get(locale, kind, null);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * get(ULocale, int, ULocale[]) with KIND_ANY for kind.
+     */
+    public Object get(ULocale locale, ULocale[] actualReturn) {
+        return get(locale, LocaleKey.KIND_ANY, actualReturn);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This uses
+     * createKey(ULocale.toString(), kind) to create a key, calls getKey, and then
+     * if actualReturn is not null, returns the actualResult from
+     * getKey (stripping any prefix) into a ULocale.  
+     */
+    public Object get(ULocale locale, int kind, ULocale[] actualReturn) {
+        Key key = createKey(locale, kind);
+        if (actualReturn == null) {
+            return getKey(key);
+        }
+
+        String[] temp = new String[1];
+        Object result = getKey(key, temp);
+        if (result != null) {
+            int n = temp[0].indexOf("/");
+            if (n >= 0) {
+                temp[0] = temp[0].substring(n+1);
+            }
+            actualReturn[0] = new ULocale(temp[0]);
+        }
+        return result;
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * registerObject(Object, ULocale, int kind, boolean visible)
+     * passing KIND_ANY for the kind, and true for the visibility.
+     */
+    public Factory registerObject(Object obj, ULocale locale) {
+        return registerObject(obj, locale, LocaleKey.KIND_ANY, true);
+    }
+
+    /**
+     * Convenience override for callers using locales.  This calls
+     * registerObject(Object, ULocale, int kind, boolean visible)
+     * passing KIND_ANY for the kind.
+     */
+    public Factory registerObject(Object obj, ULocale locale, boolean visible) {
+        return registerObject(obj, locale, LocaleKey.KIND_ANY, visible);
+    }
+
+    /**
+     * Convenience function for callers using locales.  This calls
+     * registerObject(Object, ULocale, int kind, boolean visible)
+     * passing true for the visibility.
+     */
+    public Factory registerObject(Object obj, ULocale locale, int kind) {
+        return registerObject(obj, locale, kind, true);
+    }
+
+    /**
+     * Convenience function for callers using locales.  This  instantiates
+     * a SimpleLocaleKeyFactory, and registers the factory.
+     */
+    public Factory registerObject(Object obj, ULocale locale, int kind, boolean visible) {
+        Factory factory = new SimpleLocaleKeyFactory(obj, locale, kind, visible);
+        return registerFactory(factory);
+    }
+
+    /**
+     * Convenience method for callers using locales.  This returns the standard
+     * Locale list, built from the Set of visible ids.
+     */
+    public Locale[] getAvailableLocales() {
+        // TODO make this wrap getAvailableULocales later
+        Set visIDs = getVisibleIDs();
+        Iterator iter = visIDs.iterator();
+        Locale[] locales = new Locale[visIDs.size()];
+        int n = 0;
+        while (iter.hasNext()) {
+            Locale loc = LocaleUtility.getLocaleFromName((String)iter.next());
+            locales[n++] = loc;
+        }
+        return locales;
+    }
+
+    /**
+     * Convenience method for callers using locales.  This returns the standard
+     * ULocale list, built from the Set of visible ids.
+     */
+    public ULocale[] getAvailableULocales() {
+        Set visIDs = getVisibleIDs();
+        Iterator iter = visIDs.iterator();
+        ULocale[] locales = new ULocale[visIDs.size()];
+        int n = 0;
+        while (iter.hasNext()) {
+            locales[n++] = new ULocale((String)iter.next());
+        }
+        return locales;
+    }
+        
+    /**
+     * A subclass of Key that implements a locale fallback mechanism.
+     * The first locale to search for is the locale provided by the
+     * client, and the fallback locale to search for is the current
+     * default locale.  If a prefix is present, the currentDescriptor
+     * includes it before the locale proper, separated by "/".  This
+     * is the default key instantiated by ICULocaleService.</p>
+     *
+     * <p>Canonicalization adjusts the locale string so that the
+     * section before the first understore is in lower case, and the rest
+     * is in upper case, with no trailing underscores.</p> 
+     */
+    public static class LocaleKey extends ICUService.Key {
+        private int kind;
+        private int varstart;
+        private String primaryID;
+        private String fallbackID;
+        private String currentID;
+
+        public static final int KIND_ANY = -1;
+
+        /**
+         * Create a LocaleKey with canonical primary and fallback IDs.
+         */
+        public static LocaleKey createWithCanonicalFallback(String primaryID, String canonicalFallbackID) {
+            return createWithCanonicalFallback(primaryID, canonicalFallbackID, KIND_ANY);
+        }
+            
+        /**
+         * Create a LocaleKey with canonical primary and fallback IDs.
+         */
+        public static LocaleKey createWithCanonicalFallback(String primaryID, String canonicalFallbackID, int kind) {
+            if (primaryID == null) {
+                return null;
+            }
+            if (primaryID.length() == 0) {
+                primaryID = "root";
+            }
+            String canonicalPrimaryID = ULocale.getName(primaryID);
+            return new LocaleKey(primaryID, canonicalPrimaryID, canonicalFallbackID, kind);
+        }
+            
+        /**
+         * Create a LocaleKey with canonical primary and fallback IDs.
+         */
+        public static LocaleKey createWithCanonical(ULocale locale, String canonicalFallbackID, int kind) {
+            if (locale == null) {
+                return null;
+            }
+            String canonicalPrimaryID = locale.getName();
+            return new LocaleKey(canonicalPrimaryID, canonicalPrimaryID, canonicalFallbackID, kind);
+        }
+            
+        /**
+         * PrimaryID is the user's requested locale string,
+         * canonicalPrimaryID is this string in canonical form,
+         * fallbackID is the current default locale's string in
+         * canonical form.
+         */
+        protected LocaleKey(String primaryID, String canonicalPrimaryID, String canonicalFallbackID, int kind) {
+            super(primaryID);
+
+            this.kind = kind;
+            if (canonicalPrimaryID == null) {
+                this.primaryID = "";
+            } else {
+                this.primaryID = canonicalPrimaryID;
+                this.varstart = this.primaryID.indexOf('@');
+            }
+            if (this.primaryID == "") {
+                this.fallbackID = null;
+            } else {
+                if (canonicalFallbackID == null || this.primaryID.equals(canonicalFallbackID)) {
+                    this.fallbackID = "";
+                } else {
+                    this.fallbackID = canonicalFallbackID;
+                }
+            }
+
+            this.currentID = varstart == -1 ? this.primaryID : this.primaryID.substring(0, varstart);
+        }
+
+        /**
+         * Return the prefix associated with the kind, or null if the kind is KIND_ANY.
+         */
+        public String prefix() {
+            return kind == KIND_ANY ? null : Integer.toString(kind());
+        }
+
+        /**
+         * Return the kind code associated with this key.
+         */
+        public int kind() {
+            return kind;
+        }
+
+        /**
+         * Return the (canonical) original ID.
+         */
+        public String canonicalID() {
+            return primaryID;
+        }
+
+        /**
+         * Return the (canonical) current ID, or null if no current id.
+         */
+        public String currentID() {
+            return currentID;
+        }
+
+        /**
+         * Return the (canonical) current descriptor, or null if no current id.
+         * Includes the keywords, whereas the ID does not include keywords.
+         */
+        public String currentDescriptor() {
+            String result = currentID();
+            if (result != null) {
+                StringBuffer buf = new StringBuffer(); // default capacity 16 is usually good enough
+                if (kind != KIND_ANY) {
+                    buf.append(prefix());
+                }
+                buf.append('/');
+                buf.append(result);
+                if (varstart != -1) {
+                    buf.append(primaryID.substring(varstart, primaryID.length()));
+                }
+                result = buf.toString();
+            }
+            return result;
+        }
+
+        /**
+         * Convenience method to return the locale corresponding to the (canonical) original ID.
+         */
+        public ULocale canonicalLocale() {
+            return new ULocale(primaryID);
+        }
+
+        /**
+         * Convenience method to return the ulocale corresponding to the (canonical) currentID.
+         */
+        public ULocale currentLocale() {
+            if (varstart == -1) {
+                return new ULocale(currentID);
+            } else {
+                return new ULocale(currentID + primaryID.substring(varstart));
+            }
+        }
+
+        /**
+         * If the key has a fallback, modify the key and return true,
+         * otherwise return false.</p>
+         *
+         * <p>First falls back through the primary ID, then through
+         * the fallbackID.  The final fallback is "root"
+         * unless the primary id was "root", in which case
+         * there is no fallback.  
+         */
+        public boolean fallback() {
+            int x = currentID.lastIndexOf('_');
+            if (x != -1) {
+                while (--x >= 0 && currentID.charAt(x) == '_') { // handle zh__PINYIN
+                }
+                currentID = currentID.substring(0, x+1);
+                return true;
+            }
+            if (fallbackID != null) {
+                if (fallbackID.length() == 0) {
+                    currentID = "root";
+                    fallbackID = null;
+                } else {
+                    currentID = fallbackID;
+                    fallbackID = "";
+                }
+                return true;
+            }
+            currentID = null;
+            return false;
+        }
+
+        /**
+         * If a key created from id would eventually fallback to match the 
+         * canonical ID of this key, return true.
+         */
+        public boolean isFallbackOf(String id) {
+            return LocaleUtility.isFallbackOf(canonicalID(), id);
+        }
+    }
+
+    /**
+     * A subclass of Factory that uses LocaleKeys.  If 'visible' the
+     * factory reports its IDs.
+     */
+    public static abstract class LocaleKeyFactory implements Factory {
+        protected final String name;
+        protected final boolean visible;
+
+        public static final boolean VISIBLE = true;
+        public static final boolean INVISIBLE = false;
+
+        /**
+         * Constructor used by subclasses.
+         */
+        protected LocaleKeyFactory(boolean visible) {
+            this.visible = visible;
+            this.name = null;
+        }
+
+        /**
+         * Constructor used by subclasses.
+         */
+        protected LocaleKeyFactory(boolean visible, String name) {
+            this.visible = visible;
+            this.name = name;
+        }
+
+        /**
+         * Implement superclass abstract method.  This checks the currentID of
+         * the key against the supported IDs, and passes the canonicalLocale and
+         * kind off to handleCreate (which subclasses must implement).
+         */
+        public Object create(Key key, ICUService service) {
+            if (handlesKey(key)) {
+                LocaleKey lkey = (LocaleKey)key;
+                int kind = lkey.kind();
+                
+                ULocale uloc = lkey.currentLocale();
+                return handleCreate(uloc, kind, service);
+            } else {
+                // System.out.println("factory: " + this + " did not support id: " + key.currentID());
+                // System.out.println("supported ids: " + getSupportedIDs());
+            }
+            return null;
+        }
+
+        protected boolean handlesKey(Key key) {
+            if (key != null) {
+                String id = key.currentID();
+                Set supported = getSupportedIDs();
+                return supported.contains(id);
+            }
+            return false;
+        }
+
+        /**
+         * Override of superclass method.
+         */
+        public void updateVisibleIDs(Map result) {
+            Set cache = getSupportedIDs();
+            Iterator iter = cache.iterator();
+            while (iter.hasNext()) {
+                String id = (String)iter.next();
+                if (visible) {
+                    result.put(id, this);
+                } else {
+                    result.remove(id);
+                }
+            }
+        }
+
+        /**
+         * Return a localized name for the locale represented by id.
+         */
+        public String getDisplayName(String id, ULocale locale) {
+            // assume if the user called this on us, we must have handled some fallback of this id
+            //          if (isSupportedID(id)) {
+            if (locale == null) {
+                return id;
+            }
+            ULocale loc = new ULocale(id);
+            return loc.getDisplayName(locale);
+            //              }
+            //          return null;
+        }
+
+        ///CLOVER:OFF
+        /**
+         * Utility method used by create(Key, ICUService).  Subclasses can
+         * implement this instead of create.
+         */
+        protected Object handleCreate(ULocale loc, int kind, ICUService service) {
+            return null;
+        }
+        ///CLOVER:ON
+
+        /**
+         * Return true if this id is one the factory supports (visible or 
+         * otherwise).
+         */
+        protected boolean isSupportedID(String id) {
+            return getSupportedIDs().contains(id);
+        }
+        
+        /**
+         * Return the set of ids that this factory supports (visible or 
+         * otherwise).  This can be called often and might need to be
+         * cached if it is expensive to create.
+         */
+        protected Set getSupportedIDs() {
+            return Collections.EMPTY_SET;
+        }
+
+        /**
+         * For debugging.
+         */
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            if (name != null) {
+                buf.append(", name: ");
+                buf.append(name);
+            }
+            buf.append(", visible: ");
+            buf.append(visible);
+            return buf.toString();
+        }
+    }
+
+    /**
+     * A LocaleKeyFactory that just returns a single object for a kind/locale.
+     */
+    public static class SimpleLocaleKeyFactory extends LocaleKeyFactory {
+        private final Object obj;
+        private final String id;
+        private final int kind;
+
+        // TODO: remove when we no longer need this
+        public SimpleLocaleKeyFactory(Object obj, ULocale locale, int kind, boolean visible) {
+            this(obj, locale, kind, visible, null);
+        }
+
+        public SimpleLocaleKeyFactory(Object obj, ULocale locale, int kind, boolean visible, String name) {
+            super(visible, name);
+            
+            this.obj = obj;
+            this.id = locale.getBaseName();
+            this.kind = kind;
+        }
+
+        /**
+         * Returns the service object if kind/locale match.  Service is not used.
+         */
+        public Object create(Key key, ICUService service) {
+            LocaleKey lkey = (LocaleKey)key;
+            if (kind == LocaleKey.KIND_ANY || kind == lkey.kind()) {
+                String keyID = lkey.currentID();
+                if (id.equals(keyID)) {
+                    return obj;
+                }
+            }
+            return null;
+        }
+
+        protected boolean isSupportedID(String idToCheck) {
+            return this.id.equals(idToCheck);
+        }
+
+        public void updateVisibleIDs(Map result) {
+            if (visible) {
+                result.put(id, this);
+            } else {
+                result.remove(id);
+            }
+        }
+
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            buf.append(", id: ");
+            buf.append(id);
+            buf.append(", kind: ");
+            buf.append(kind);
+            return buf.toString();
+        }
+    }
+
+    /**
+     * A LocaleKeyFactory that creates a service based on the ICU locale data.
+     * This is a base class for most ICU factories.  Subclasses instantiate it
+     * with a constructor that takes a bundle name, which determines the supported
+     * IDs.  Subclasses then override handleCreate to create the actual service
+     * object.  The default implementation returns a resource bundle.
+     */
+    public static class ICUResourceBundleFactory extends LocaleKeyFactory {
+        protected final String bundleName;
+
+        /**
+         * Convenience constructor that uses the main ICU bundle name.
+         */
+        public ICUResourceBundleFactory() {
+            this(ICUResourceBundle.ICU_BASE_NAME);
+        }
+
+        /**
+         * A service factory based on ICU resource data in resources
+         * with the given name.
+         */
+        public ICUResourceBundleFactory(String bundleName) {
+            super(true);
+
+            this.bundleName = bundleName;
+        }
+
+        /**
+         * Return the supported IDs.  This is the set of all locale names for the bundleName.
+         */
+        protected Set getSupportedIDs() {
+            // note: "root" is one of the ids, but "" is not.  Must convert ULocale.ROOT.
+            return ICUResourceBundle.getFullLocaleNameSet(bundleName); 
+        }
+
+        /**
+         * Override of superclass method.
+         */
+        public void updateVisibleIDs(Map result) {
+            Set visibleIDs = ICUResourceBundle.getAvailableLocaleNameSet(bundleName); // only visible ids
+            Iterator iter = visibleIDs.iterator();
+            while (iter.hasNext()) {
+                String id = (String)iter.next();
+                result.put(id, this);
+            }
+        }
+
+        /**
+         * Create the service.  The default implementation returns the resource bundle
+         * for the locale, ignoring kind, and service.
+         */
+        protected Object handleCreate(ULocale loc, int kind, ICUService service) {
+            return ICUResourceBundle.getBundleInstance(bundleName, loc);
+        }
+
+        public String toString() {
+            return super.toString() + ", bundle: " + bundleName;
+        }
+    }
+
+    /**
+     * Return the name of the current fallback locale.  If it has changed since this was
+     * last accessed, the service cache is cleared.
+     */
+    public String validateFallbackLocale() {
+        ULocale loc = ULocale.getDefault();
+        if (loc != fallbackLocale) {
+            synchronized (this) {
+                if (loc != fallbackLocale) {
+                    fallbackLocale = loc;
+                    fallbackLocaleName = loc.getBaseName();
+                    clearServiceCache();
+                }
+            }
+        }
+        return fallbackLocaleName;
+    }
+
+    public Key createKey(String id) {
+        return LocaleKey.createWithCanonicalFallback(id, validateFallbackLocale());
+    }
+
+    public Key createKey(String id, int kind) {
+        return LocaleKey.createWithCanonicalFallback(id, validateFallbackLocale(), kind);
+    }
+
+    public Key createKey(ULocale l, int kind) {
+        return LocaleKey.createWithCanonical(l, validateFallbackLocale(), kind);
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUNotifier.java b/src/com/ibm/icu/impl/ICUNotifier.java
new file mode 100644
index 0000000..b49b2a8
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUNotifier.java
@@ -0,0 +1,171 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.EventListener;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * <p>Abstract implementation of a notification facility.  Clients add
+ * EventListeners with addListener and remove them with removeListener.
+ * Notifiers call notifyChanged when they wish to notify listeners.
+ * This queues the listener list on the notification thread, which
+ * eventually dequeues the list and calls notifyListener on each
+ * listener in the list.</p>
+ *
+ * <p>Subclasses override acceptsListener and notifyListener 
+ * to add type-safe notification.  AcceptsListener should return
+ * true if the listener is of the appropriate type; ICUNotifier
+ * itself will ensure the listener is non-null and that the
+ * identical listener is not already registered with the Notifier.
+ * NotifyListener should cast the listener to the appropriate 
+ * type and call the appropriate method on the listener.
+ */
+public abstract class ICUNotifier {
+    private final Object notifyLock = new Object();
+    private NotifyThread notifyThread;
+    private List listeners;
+
+    /**
+     * Add a listener to be notified when notifyChanged is called.
+     * The listener must not be null. AcceptsListener must return
+     * true for the listener.  Attempts to concurrently
+     * register the identical listener more than once will be
+     * silently ignored.  
+     */
+    public void addListener(EventListener l) {
+        if (l == null) {
+            throw new NullPointerException();
+        }
+
+        if (acceptsListener(l)) {
+            synchronized (notifyLock) {
+                if (listeners == null) {
+                    listeners = new ArrayList(5);
+                } else {
+                    // identity equality check
+                    Iterator iter = listeners.iterator();
+                    while (iter.hasNext()) {
+                        if (iter.next() == l) {
+                            return;
+                        }
+                    }
+                }
+
+                listeners.add(l);
+            }
+        } else {
+            throw new IllegalStateException("Listener invalid for this notifier.");
+        }
+    }
+
+    /**
+     * Stop notifying this listener.  The listener must
+     * not be null.  Attemps to remove a listener that is
+     * not registered will be silently ignored.
+     */
+    public void removeListener(EventListener l) {
+        if (l == null) {
+            throw new NullPointerException();
+        }
+        synchronized (notifyLock) {
+            if (listeners != null) {
+                // identity equality check
+                Iterator iter = listeners.iterator();
+                while (iter.hasNext()) {
+                    if (iter.next() == l) {
+                        iter.remove();
+                        if (listeners.size() == 0) {
+                            listeners = null;
+                        }
+                        return;
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Queue a notification on the notification thread for the current
+     * listeners.  When the thread unqueues the notification, notifyListener
+     * is called on each listener from the notification thread.
+     */
+    public void notifyChanged() {
+        if (listeners != null) {
+            synchronized (notifyLock) {
+                if (listeners != null) {
+                    if (notifyThread == null) {
+                        notifyThread = new NotifyThread(this);
+                        notifyThread.setDaemon(true);
+                        notifyThread.start();
+                    }
+                    notifyThread.queue(listeners.toArray());
+                }
+            }
+        }
+    }
+
+    /**
+     * The notification thread.
+     */
+    private static class NotifyThread extends Thread {
+        private final ICUNotifier notifier;
+        private final List queue = new LinkedList();
+
+        NotifyThread(ICUNotifier notifier) {
+            this.notifier = notifier;
+        }
+
+        /**
+         * Queue the notification on the thread.
+         */
+        public void queue(Object[] list) {
+            synchronized (this) {
+                queue.add(list);
+                notify();
+            }
+        }
+
+        /**
+         * Wait for a notification to be queued, then notify all
+         * listeners listed in the notification.
+         */
+        public void run() {
+            Object[] list;
+            while (true) {
+                try {
+                    synchronized (this) {
+                        while (queue.isEmpty()) {
+                            wait();
+                        }
+                        list = (Object[])queue.remove(0);
+                    }
+
+                    for (int i = 0; i < list.length; ++i) {
+                        notifier.notifyListener((EventListener)list[i]);
+                    }
+                }
+                catch (InterruptedException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * Subclasses implement this to return true if the listener is
+     * of the appropriate type.
+     */
+    protected abstract boolean acceptsListener(EventListener l);
+
+    /**
+     * Subclasses implement this to notify the listener.
+     */
+    protected abstract void notifyListener(EventListener l);
+}
diff --git a/src/com/ibm/icu/impl/ICURWLock.java b/src/com/ibm/icu/impl/ICURWLock.java
new file mode 100644
index 0000000..ec15070
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICURWLock.java
@@ -0,0 +1,297 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+// See Allan Holub's 1999 column in JavaWorld, and Doug Lea's code for RWLocks with writer preference.
+
+
+/**
+ * <p>A simple Reader/Writer lock.  This assumes that there will
+ * be little writing contention.  It also doesn't allow 
+ * active readers to acquire and release a write lock, or
+ * deal with priority inversion issues.</p>
+ *
+ * <p>Access to the lock should be enclosed in a try/finally block
+ * in order to ensure that the lock is always released in case of
+ * exceptions:<br><pre>
+ * try {
+ *     lock.acquireRead();
+ *     // use service protected by the lock
+ * }
+ * finally {
+ *     lock.releaseRead();
+ * }
+ * </pre></p>
+ *
+ * <p>The lock provides utility methods getStats and clearStats
+ * to return statistics on the use of the lock.</p>
+ */
+public class ICURWLock {
+    private Object writeLock = new Object();
+    private Object readLock = new Object();
+    private int wwc; // waiting writers
+    private int rc; // active readers, -1 if there's an active writer
+    private int wrc; // waiting readers
+
+    private Stats stats = new Stats(); // maybe don't init to start...
+
+    /**
+     * Internal class used to gather statistics on the RWLock.
+     */
+    public final static class Stats {
+        /**
+         * Number of times read access granted (read count).
+         */
+        public int _rc;
+
+        /**
+         * Number of times concurrent read access granted (multiple read count).
+         */
+        public int _mrc;
+
+        /**
+         * Number of times blocked for read (waiting reader count).
+         */
+        public int _wrc; // wait for read
+
+        /**
+         * Number of times write access granted (writer count).
+         */
+        public int _wc;
+
+        /**
+         * Number of times blocked for write (waiting writer count).
+         */
+        public int _wwc;
+
+        private Stats() {
+        }
+
+        private Stats(int rc, int mrc, int wrc, int wc, int wwc) {
+            this._rc = rc;
+            this._mrc = mrc;
+            this._wrc = wrc;
+            this._wc = wc;
+            this._wwc = wwc;
+        }
+
+        private Stats(Stats rhs) {
+            this(rhs._rc, rhs._mrc, rhs._wrc, rhs._wc, rhs._wwc);
+        }
+
+        /**
+         * Return a string listing all the stats.
+         */
+        public String toString() {
+            return " rc: " + _rc +
+                " mrc: " + _mrc + 
+                " wrc: " + _wrc +
+                " wc: " + _wc +
+                " wwc: " + _wwc;
+        }
+    }
+
+    /**
+     * Reset the stats.  Returns existing stats, if any.
+     */
+    public synchronized Stats resetStats() {
+        Stats result = stats;
+        stats = new Stats();
+        return result;
+    }
+
+    /**
+     * Clear the stats (stop collecting stats).  Returns existing stats, if any.
+     */
+    public synchronized Stats clearStats() {
+        Stats result = stats;
+        stats = null;
+        return result;
+    }
+    
+    /**
+     * Return a snapshot of the current stats.  This does not reset the stats.
+     */
+    public synchronized Stats getStats() {
+        return stats == null ? null : new Stats(stats);
+    }
+
+    // utilities
+
+    private synchronized boolean gotRead() {
+        ++rc;
+        if (stats != null) {
+            ++stats._rc;
+            if (rc > 1) ++stats._mrc;
+        }
+        return true;
+    }
+
+    private synchronized boolean getRead() {
+        if (rc >= 0 && wwc == 0) {
+            return gotRead();
+        }
+        ++wrc;
+        return false;
+    }
+
+    private synchronized boolean retryRead() {
+        if (stats != null) ++stats._wrc;
+        if (rc >= 0 && wwc == 0) {
+            --wrc;
+            return gotRead();
+        }
+        return false;
+    }
+
+    private synchronized boolean finishRead() {
+        if (rc > 0) {
+            return (0 == --rc && wwc > 0);
+        }
+        throw new IllegalStateException("no current reader to release");
+    }
+    
+    private synchronized boolean gotWrite() {
+        rc = -1;
+        if (stats != null) {
+            ++stats._wc;
+        }
+        return true;
+    }
+
+    private synchronized boolean getWrite() {
+        if (rc == 0) {
+            return gotWrite();
+        }
+        ++wwc;
+        return false;
+    }
+
+    private synchronized boolean retryWrite() {
+        if (stats != null) ++stats._wwc;
+        if (rc == 0) {
+            --wwc;
+            return gotWrite();
+        }
+        return false;
+    }
+
+    private static final int NOTIFY_NONE = 0;
+    private static final int NOTIFY_WRITERS = 1;
+    private static final int NOTIFY_READERS = 2;
+
+    private synchronized int finishWrite() {
+        if (rc < 0) {
+            rc = 0;
+            if (wwc > 0) {
+                return NOTIFY_WRITERS;
+            } else if (wrc > 0) {
+                return NOTIFY_READERS;
+            } else {
+                return NOTIFY_NONE;
+            }
+        }
+        throw new IllegalStateException("no current writer to release");
+    }
+    
+    /**
+     * <p>Acquire a read lock, blocking until a read lock is
+     * available.  Multiple readers can concurrently hold the read
+     * lock.</p>
+     *
+     * <p>If there's a writer, or a waiting writer, increment the
+     * waiting reader count and block on this.  Otherwise
+     * increment the active reader count and return.  Caller must call
+     * releaseRead when done (for example, in a finally block).</p> 
+     */
+    public void acquireRead() {
+        if (!getRead()) {
+            for (;;) {
+                try {
+                    synchronized (readLock) {
+                        readLock.wait();
+                    }
+                    if (retryRead()) {
+                        return;
+                    }
+                }
+                catch (InterruptedException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * <p>Release a read lock and return.  An error will be thrown
+     * if a read lock is not currently held.</p>
+     *
+     * <p>If this is the last active reader, notify the oldest
+     * waiting writer.  Call when finished with work
+     * controlled by acquireRead.</p>
+     */
+    public void releaseRead() {
+        if (finishRead()) {
+            synchronized (writeLock) {
+                writeLock.notify();
+            }
+        }
+    }
+
+    /**
+     * <p>Acquire the write lock, blocking until the write lock is
+     * available.  Only one writer can acquire the write lock, and
+     * when held, no readers can acquire the read lock.</p>
+     *
+     * <p>If there are no readers and no waiting writers, mark as
+     * having an active writer and return.  Otherwise, add a lock to the
+     * end of the waiting writer list, and block on it.  Caller
+     * must call releaseWrite when done (for example, in a finally
+     * block).<p> 
+     */
+    public void acquireWrite() {
+        if (!getWrite()) {
+            for (;;) {
+                try {
+                    synchronized (writeLock) {
+                        writeLock.wait();
+                    }
+                    if (retryWrite()) {
+                        return;
+                    }
+                }
+                catch (InterruptedException e) {
+                }
+            }
+        }
+    }
+
+    /**
+     * <p>Release the write lock and return.  An error will be thrown
+     * if the write lock is not currently held.</p>
+     *
+     * <p>If there are waiting readers, make them all active and
+     * notify all of them.  Otherwise, notify the oldest waiting
+     * writer, if any.  Call when finished with work controlled by
+     * acquireWrite.</p> 
+     */
+    public void releaseWrite() {
+        switch (finishWrite()) {
+        case NOTIFY_WRITERS:
+            synchronized (writeLock) {
+                writeLock.notify();
+            }
+            break;
+        case NOTIFY_READERS:
+            synchronized (readLock) {
+                readLock.notifyAll();
+            }
+            break;
+        case NOTIFY_NONE:
+            break;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUResourceBundle.java b/src/com/ibm/icu/impl/ICUResourceBundle.java
new file mode 100644
index 0000000..e60444e
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUResourceBundle.java
@@ -0,0 +1,1451 @@
+/*
+ * *****************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ * *****************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.ref.SoftReference;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.Vector;
+
+import com.ibm.icu.impl.URLHandler.URLVisitor;
+import com.ibm.icu.util.StringTokenizer;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.util.VersionInfo;
+
+public  class ICUResourceBundle extends UResourceBundle {
+    /**
+     * The data path to be used with getBundleInstance API
+     */
+    protected static final String ICU_DATA_PATH = "com/ibm/icu/impl/";
+    /**
+     * The data path to be used with getBundleInstance API
+     */
+    public static final String ICU_BUNDLE = "data/icudt" + VersionInfo.ICU_DATA_VERSION;
+
+    /**
+     * The base name of ICU data to be used with getBundleInstance API
+     */
+    public static final String ICU_BASE_NAME = ICU_DATA_PATH + ICU_BUNDLE;
+
+    /**
+     * The base name of collation data to be used with getBundleInstance API
+     */
+    public static final String ICU_COLLATION_BASE_NAME = ICU_BASE_NAME + "/coll";
+
+    /**
+     * The base name of rbbi data to be used with getData API
+     */
+    public static final String ICU_BRKITR_NAME = "/brkitr";
+
+    /**
+     * The base name of rbbi data to be used with getBundleInstance API
+     */
+    public static final String ICU_BRKITR_BASE_NAME = ICU_BASE_NAME + ICU_BRKITR_NAME;
+
+    /**
+     * The base name of rbnf data to be used with getBundleInstance API
+     */
+    public static final String ICU_RBNF_BASE_NAME = ICU_BASE_NAME + "/rbnf";
+
+    /**
+     * The base name of transliterator data to be used with getBundleInstance API
+     */
+    public static final String ICU_TRANSLIT_BASE_NAME = ICU_BASE_NAME + "/translit";
+
+    /**
+     * The actual path of the resource
+     */
+    protected String resPath;
+
+    protected static final long UNSIGNED_INT_MASK = 0xffffffffL;
+
+    /**
+     * The class loader constant to be used with getBundleInstance API
+     */
+    public static final ClassLoader ICU_DATA_CLASS_LOADER;
+    static {
+        ClassLoader loader = ICUData.class.getClassLoader();
+        if (loader == null) { // boot class loader
+            loader = ClassLoader.getSystemClassLoader();
+        }
+        ICU_DATA_CLASS_LOADER = loader;
+    }
+
+    /**
+     * The name of the resource containing the installed locales
+     */
+    protected static final String INSTALLED_LOCALES = "InstalledLocales";
+
+    public static final int FROM_FALLBACK = 1, FROM_ROOT = 2, FROM_DEFAULT = 3, FROM_LOCALE = 4;
+
+    private int loadingStatus = -1;
+
+    public void setLoadingStatus(int newStatus) {
+        loadingStatus = newStatus;
+    }
+    /**
+     * Returns the loading status of a particular resource.
+     *
+     * @return FROM_FALLBACK if the resource is fetched from fallback bundle
+     *         FROM_ROOT if the resource is fetched from root bundle.
+     *         FROM_DEFAULT if the resource is fetched from the default locale.
+     */
+    public int getLoadingStatus() {
+        return loadingStatus;
+    }
+
+    public void setLoadingStatus(String requestedLocale){
+        String locale = getLocaleID();
+        if(locale.equals("root")) {
+            setLoadingStatus(FROM_ROOT);
+        } else if(locale.equals(requestedLocale)) {
+            setLoadingStatus(FROM_LOCALE);
+        } else {
+            setLoadingStatus(FROM_FALLBACK);
+        }
+     }
+
+
+    /**
+     * Returns the respath of this bundle
+     * @return
+     */
+    public String getResPath(){
+        return resPath;
+    }
+
+    /**
+     * Returns a functionally equivalent locale, considering keywords as well, for the specified keyword.
+     * @param baseName resource specifier
+     * @param resName top level resource to consider (such as "collations")
+     * @param keyword a particular keyword to consider (such as "collation" )
+     * @param locID The requested locale
+     * @param isAvailable If non-null, 1-element array of fillin parameter that indicates whether the
+     * requested locale was available. The locale is defined as 'available' if it physically
+     * exists within the specified tree and included in 'InstalledLocales'.
+     * @param omitDefault  if true, omit keyword and value if default.
+     * 'de_DE\@collation=standard' -> 'de_DE'
+     * @return the locale
+     * @internal ICU 3.0
+     */
+    public static final ULocale getFunctionalEquivalent(String baseName,
+            String resName, String keyword, ULocale locID,
+            boolean isAvailable[], boolean omitDefault) {
+        String kwVal = locID.getKeywordValue(keyword);
+        String baseLoc = locID.getBaseName();
+        String defStr = null;
+        ULocale parent = new ULocale(baseLoc);
+        ULocale defLoc = null; // locale where default (found) resource is
+        boolean lookForDefault = false; // true if kwVal needs to be set
+        ULocale fullBase = null; // base locale of found (target) resource
+        int defDepth = 0; // depth of 'default' marker
+        int resDepth = 0; // depth of found resource;
+
+        if ((kwVal == null) || (kwVal.length() == 0)
+                || kwVal.equals(DEFAULT_TAG)) {
+            kwVal = ""; // default tag is treated as no keyword
+            lookForDefault = true;
+        }
+
+        // Check top level locale first
+        ICUResourceBundle r = null;
+
+        r = (ICUResourceBundle) UResourceBundle.getBundleInstance(baseName, parent);
+        if (isAvailable != null) {
+            isAvailable[0] = false;
+            ULocale[] availableULocales = getAvailEntry(baseName).getULocaleList();
+            for (int i = 0; i < availableULocales.length; i++) {
+                if (parent.equals(availableULocales[i])) {
+                    isAvailable[0] = true;
+                    break;
+                }
+            }
+        }
+        // determine in which locale (if any) the currently relevant 'default' is
+        do {
+            try {
+                ICUResourceBundle irb = (ICUResourceBundle) r.get(resName);
+                defStr = irb.getString(DEFAULT_TAG);
+                if (lookForDefault == true) {
+                    kwVal = defStr;
+                    lookForDefault = false;
+                }
+                defLoc = r.getULocale();
+            } catch (MissingResourceException t) {
+                // Ignore error and continue search.
+            }
+            if (defLoc == null) {
+                r = (ICUResourceBundle) r.getParent();
+                defDepth++;
+            }
+        } while ((r != null) && (defLoc == null));
+
+        // Now, search for the named resource
+        parent = new ULocale(baseLoc);
+        r = (ICUResourceBundle) UResourceBundle.getBundleInstance(baseName, parent);
+        // determine in which locale (if any) the named resource is located
+        do {
+            try {
+                ICUResourceBundle irb = (ICUResourceBundle)r.get(resName);
+                /* UResourceBundle urb = */irb.get(kwVal);
+                fullBase = irb.getULocale();
+                // If the get() completed, we have the full base locale
+                // If we fell back to an ancestor of the old 'default',
+                // we need to re calculate the "default" keyword.
+                if ((fullBase != null) && ((resDepth) > defDepth)) {
+                    defStr = irb.getString(DEFAULT_TAG);
+                    defLoc = r.getULocale();
+                    defDepth = resDepth;
+                }
+            } catch (MissingResourceException t) {
+                // Ignore error,
+            }
+            if (fullBase == null) {
+                r = (ICUResourceBundle) r.getParent();
+                resDepth++;
+            }
+        } while ((r != null) && (fullBase == null));
+
+        if (fullBase == null && // Could not find resource 'kwVal'
+                (defStr != null) && // default was defined
+                !defStr.equals(kwVal)) { // kwVal is not default
+            // couldn't find requested resource. Fall back to default.
+            kwVal = defStr; // Fall back to default.
+            parent = new ULocale(baseLoc);
+            r = (ICUResourceBundle) UResourceBundle.getBundleInstance(baseName, parent);
+            resDepth = 0;
+            // determine in which locale (if any) the named resource is located
+            do {
+                try {
+                    ICUResourceBundle irb = (ICUResourceBundle)r.get(resName);
+                    UResourceBundle urb = irb.get(kwVal);
+
+                    // if we didn't fail before this..
+                    fullBase = r.getULocale();
+
+                    // If the fetched item (urb) is in a different locale than our outer locale (r/fullBase)
+                    // then we are in a 'fallback' situation. treat as a missing resource situation.
+                    if(!fullBase.toString().equals(urb.getLocale().toString())) {
+                        fullBase = null; // fallback condition. Loop and try again.
+                    }
+
+                    // If we fell back to an ancestor of the old 'default',
+                    // we need to re calculate the "default" keyword.
+                    if ((fullBase != null) && ((resDepth) > defDepth)) {
+                        defStr = irb.getString(DEFAULT_TAG);
+                        defLoc = r.getULocale();
+                        defDepth = resDepth;
+                    }
+                } catch (MissingResourceException t) {
+                    // Ignore error, continue search.
+                }
+                if (fullBase == null) {
+                    r = (ICUResourceBundle) r.getParent();
+                    resDepth++;
+                }
+            } while ((r != null) && (fullBase == null));
+        }
+
+        if (fullBase == null) {
+            throw new MissingResourceException(
+                "Could not find locale containing requested or default keyword.",
+                baseName, keyword + "=" + kwVal);
+        }
+
+        if (omitDefault
+            && defStr.equals(kwVal) // if default was requested and
+            && resDepth <= defDepth) { // default was set in same locale or child
+            return fullBase; // Keyword value is default - no keyword needed in locale
+        } else {
+            return new ULocale(fullBase.toString() + "@" + keyword + "=" + kwVal);
+        }
+    }
+
+    /**
+     * Given a tree path and keyword, return a string enumeration of all possible values for that keyword.
+     * @param baseName resource specifier
+     * @param keyword a particular keyword to consider, must match a top level resource name
+     * within the tree. (i.e. "collations")
+     * @internal ICU 3.0
+     */
+    public static final String[] getKeywordValues(String baseName, String keyword) {
+        Set keywords = new HashSet();
+        ULocale locales[] = createULocaleList(baseName, ICU_DATA_CLASS_LOADER);
+        int i;
+
+        for (i = 0; i < locales.length; i++) {
+            try {
+                UResourceBundle b = UResourceBundle.getBundleInstance(baseName, locales[i]);
+                // downcast to ICUResourceBundle?
+                ICUResourceBundle irb = (ICUResourceBundle) (b.getObject(keyword));
+                Enumeration e = irb.getKeys();
+                Object s;
+                while (e.hasMoreElements()) {
+                    s = e.nextElement();
+                    if ((s instanceof String) && !DEFAULT_TAG.equals(s)) {
+                        // don't add 'default' items
+                        keywords.add(s);
+                    }
+                }
+            } catch (Throwable t) {
+                //System.err.println("Error in - " + new Integer(i).toString()
+                // + " - " + t.toString());
+                // ignore the err - just skip that resource
+            }
+        }
+        return (String[])keywords.toArray(new String[0]);
+    }
+
+    /**
+     * This method performs multilevel fallback for fetching items from the
+     * bundle e.g: If resource is in the form de__PHONEBOOK{ collations{
+     * default{ "phonebook"} } } If the value of "default" key needs to be
+     * accessed, then do: <code>
+     *  UResourceBundle bundle = UResourceBundle.getBundleInstance("de__PHONEBOOK");
+     *  ICUResourceBundle result = null;
+     *  if(bundle instanceof ICUResourceBundle){
+     *      result = ((ICUResourceBundle) bundle).getWithFallback("collations/default");
+     *  }
+     * </code>
+     *
+     * @param path
+     *            The path to the required resource key
+     * @return resource represented by the key
+     * @exception MissingResourceException
+     */
+    public ICUResourceBundle getWithFallback(String path)
+            throws MissingResourceException {
+        ICUResourceBundle result = null;
+        ICUResourceBundle actualBundle = this;
+
+        // now recuse to pick up sub levels of the items
+        result = findResourceWithFallback(path, actualBundle, null);
+
+        if (result == null) {
+            throw new MissingResourceException(
+                "Can't find resource for bundle "
+                + this.getClass().getName() + ", key " + getType(),
+                path, getKey());
+        }
+        return result;
+    }
+
+    // will throw type mismatch exception if the resource is not a string
+    public String getStringWithFallback(String path) throws MissingResourceException {
+        return getWithFallback(path).getString();
+    }
+
+    /**
+     * Return a set of the locale names supported by a collection of resource
+     * bundles.
+     *
+     * @param bundlePrefix the prefix of the resource bundles to use.
+     */
+    public static Set getAvailableLocaleNameSet(String bundlePrefix) {
+        return getAvailEntry(bundlePrefix).getLocaleNameSet();
+    }
+
+    /**
+     * Return a set of all the locale names supported by a collection of
+     * resource bundles.
+     */
+    public static Set getFullLocaleNameSet() {
+        return getFullLocaleNameSet(ICU_BASE_NAME);
+    }
+
+    /**
+     * Return a set of all the locale names supported by a collection of
+     * resource bundles.
+     *
+     * @param bundlePrefix the prefix of the resource bundles to use.
+     */
+    public static Set getFullLocaleNameSet(String bundlePrefix) {
+        return getAvailEntry(bundlePrefix).getFullLocaleNameSet();
+    }
+
+    /**
+     * Return a set of the locale names supported by a collection of resource
+     * bundles.
+     */
+    public static Set getAvailableLocaleNameSet() {
+        return getAvailableLocaleNameSet(ICU_BASE_NAME);
+    }
+
+    /**
+     * Get the set of Locales installed in the specified bundles.
+     * @return the list of available locales
+     */
+    public static final ULocale[] getAvailableULocales(String baseName) {
+        return getAvailEntry(baseName).getULocaleList();
+    }
+
+    /**
+     * Get the set of ULocales installed the base bundle.
+     * @return the list of available locales
+     */
+    public static final ULocale[] getAvailableULocales() {
+        return getAvailableULocales(ICU_BASE_NAME);
+    }
+
+    /**
+     * Get the set of Locales installed in the specified bundles.
+     * @return the list of available locales
+     */
+    public static final Locale[] getAvailableLocales(String baseName) {
+        return getAvailEntry(baseName).getLocaleList();
+    }
+
+   /**
+     * Get the set of Locales installed the base bundle.
+     * @return the list of available locales
+     */
+    public static final Locale[] getAvailableLocales() {
+        return getAvailEntry(ICU_BASE_NAME).getLocaleList();
+    }
+
+    /**
+     * Convert a list of ULocales to a list of Locales.  ULocales with a script code will not be converted
+     * since they cannot be represented as a Locale.  This means that the two lists will <b>not</b> match
+     * one-to-one, and that the returned list might be shorter than the input list.
+     * @param ulocales a list of ULocales to convert to a list of Locales.
+     * @return the list of converted ULocales
+     */
+    public static final Locale[] getLocaleList(ULocale[] ulocales) {
+        ArrayList list = new ArrayList();
+        HashSet uniqueSet = new HashSet();
+        for (int i = 0; i < ulocales.length; i++) {
+            Locale loc = ulocales[i].toLocale();
+            if (!uniqueSet.contains(loc)) {
+                list.add(loc);
+                uniqueSet.add(loc);
+            }
+        }
+        return (Locale[]) list.toArray(new Locale[list.size()]);
+    }
+
+    /**
+     * Returns the locale of this resource bundle. This method can be used after
+     * a call to getBundle() to determine whether the resource bundle returned
+     * really corresponds to the requested locale or is a fallback.
+     *
+     * @return the locale of this resource bundle
+     */
+    public Locale getLocale() {
+        return getULocale().toLocale();
+    }
+
+
+    // ========== privates ==========
+    private static final String ICU_RESOURCE_INDEX = "res_index";
+
+    private static final String DEFAULT_TAG = "default";
+
+    // Flag for enabling/disabling debugging code
+    private static final boolean DEBUG = ICUDebug.enabled("localedata");
+
+    // Cache for getAvailableLocales
+    private static SoftReference GET_AVAILABLE_CACHE;
+    private static final ULocale[] createULocaleList(String baseName,
+            ClassLoader root) {
+        // the canned list is a subset of all the available .res files, the idea
+        // is we don't export them
+        // all. gotta be a better way to do this, since to add a locale you have
+        // to update this list,
+        // and it's embedded in our binary resources.
+        ICUResourceBundle bundle = (ICUResourceBundle) UResourceBundle.instantiateBundle(baseName, ICU_RESOURCE_INDEX, root, true);
+
+        bundle = (ICUResourceBundle)bundle.get(INSTALLED_LOCALES);
+        int length = bundle.getSize();
+        int i = 0;
+        ULocale[] locales = new ULocale[length];
+        UResourceBundleIterator iter = bundle.getIterator();
+        iter.reset();
+        while (iter.hasNext()) {
+            locales[i++] = new ULocale(iter.next().getKey());
+        }
+        bundle = null;
+        return locales;
+    }
+
+    private static final Locale[] createLocaleList(String baseName) {
+        ULocale[] ulocales = getAvailEntry(baseName).getULocaleList();
+        return getLocaleList(ulocales);
+    }
+
+    private static final String[] createLocaleNameArray(String baseName,
+            ClassLoader root) {
+        ICUResourceBundle bundle = (ICUResourceBundle) UResourceBundle.instantiateBundle( baseName, ICU_RESOURCE_INDEX, root, true);
+        bundle = (ICUResourceBundle)bundle.get(INSTALLED_LOCALES);
+        int length = bundle.getSize();
+        int i = 0;
+        String[] locales = new String[length];
+        UResourceBundleIterator iter = bundle.getIterator();
+        iter.reset();
+        while (iter.hasNext()) {
+            locales[i++] = iter.next().getKey();
+        }
+        bundle = null;
+        return locales;
+    }
+
+    private static final ArrayList createFullLocaleNameArray(
+            final String baseName, final ClassLoader root) {
+
+        ArrayList list = (ArrayList) java.security.AccessController
+            .doPrivileged(new java.security.PrivilegedAction() {
+                public Object run() {
+                    // WebSphere class loader will return null for a raw
+                    // directory name without trailing slash
+                    String bn = baseName.endsWith("/")
+                        ? baseName
+                        : baseName + "/";
+
+                    // look for prebuilt indices first
+                    try {
+                        InputStream s = root.getResourceAsStream(bn + ICU_RESOURCE_INDEX + ".txt");
+                        if (s != null) {
+                            ArrayList lst = new ArrayList();
+                            BufferedReader br = new BufferedReader(new InputStreamReader(s, "ASCII"));
+                            String line;
+                            while ((line = br.readLine()) != null) {
+                                if (line.length() != 0 && !line.startsWith("#")) {
+                                    lst.add(line);
+                                }
+                            }
+                            return lst;
+                        }
+                    } catch (IOException e) {
+                        // swallow it
+                    }
+
+                    URL url = root.getResource(bn);
+                    URLHandler handler = URLHandler.get(url);
+                    if (handler != null) {
+                        final ArrayList lst = new ArrayList();
+                        URLVisitor v = new URLVisitor() {
+                            public void visit(String s) {
+                                if (s.endsWith(".res") && !"res_index.res".equals(s)) {
+                                    lst.add(s.substring(0, s.length() - 4)); // strip '.res'
+                                }
+                            }
+                        };
+                        handler.guide(v, false);
+                        return lst;
+                    }
+
+                    return null;
+                }
+            });
+
+        return list;
+    }
+
+    private static Set createFullLocaleNameSet(String baseName) {
+        ArrayList list = createFullLocaleNameArray(baseName,ICU_DATA_CLASS_LOADER);
+        HashSet set = new HashSet();
+        if(list==null){
+            throw new MissingResourceException("Could not find "+  ICU_RESOURCE_INDEX, "", "");
+        }
+        set.addAll(list);
+        return Collections.unmodifiableSet(set);
+    }
+
+    private static Set createLocaleNameSet(String baseName) {
+        try {
+            String[] locales = createLocaleNameArray(baseName, ICU_DATA_CLASS_LOADER);
+
+            HashSet set = new HashSet();
+            set.addAll(Arrays.asList(locales));
+            return Collections.unmodifiableSet(set);
+        } catch (MissingResourceException e) {
+            if (DEBUG) {
+                System.out.println("couldn't find index for bundleName: " + baseName);
+                Thread.dumpStack();
+            }
+        }
+        return Collections.EMPTY_SET;
+    }
+
+    /**
+     * Holds the prefix, and lazily creates the Locale[] list or the locale name
+     * Set as needed.
+     */
+    private static final class AvailEntry {
+        private String prefix;
+        private ULocale[] ulocales;
+        private Locale[] locales;
+        private Set nameSet;
+        private Set fullNameSet;
+
+        AvailEntry(String prefix) {
+            this.prefix = prefix;
+        }
+
+        ULocale[] getULocaleList() {
+            if (ulocales == null) {
+                ulocales = createULocaleList(prefix, ICU_DATA_CLASS_LOADER);
+            }
+            return ulocales;
+        }
+        Locale[] getLocaleList() {
+            if (locales == null) {
+                locales = createLocaleList(prefix);
+            }
+            return locales;
+        }
+        Set getLocaleNameSet() {
+            if (nameSet == null) {
+                nameSet = createLocaleNameSet(prefix);
+            }
+            return nameSet;
+        }
+        Set getFullLocaleNameSet() {
+            if (fullNameSet == null) {
+                fullNameSet = createFullLocaleNameSet(prefix);
+            }
+            return fullNameSet;
+        }
+    }
+
+    /**
+     * Stores the locale information in a cache accessed by key (bundle prefix).
+     * The cached objects are AvailEntries. The cache is held by a SoftReference
+     * so it can be GC'd.
+     */
+    private static AvailEntry getAvailEntry(String key) {
+        AvailEntry ae = null;
+        Map lcache = null;
+        if (GET_AVAILABLE_CACHE != null) {
+            lcache = (Map) GET_AVAILABLE_CACHE.get();
+            if (lcache != null) {
+                ae = (AvailEntry) lcache.get(key);
+            }
+        }
+
+        if (ae == null) {
+            ae = new AvailEntry(key);
+            if (lcache == null) {
+                lcache = new HashMap();
+                lcache.put(key, ae);
+                GET_AVAILABLE_CACHE = new SoftReference(lcache);
+            } else {
+                lcache.put(key, ae);
+            }
+        }
+
+        return ae;
+    }
+
+    protected static final ICUResourceBundle findResourceWithFallback(String path,
+            UResourceBundle actualBundle, UResourceBundle requested) {
+        ICUResourceBundle sub = null;
+        if (requested == null) {
+            requested = actualBundle;
+        }
+        while (actualBundle != null) {
+            StringTokenizer st = new StringTokenizer(path, "/");
+            ICUResourceBundle current = (ICUResourceBundle) actualBundle;
+            while (st.hasMoreTokens()) {
+                String subKey = st.nextToken();
+                sub =  (ICUResourceBundle)current.handleGet(subKey, null, requested);
+                if (sub == null) {
+                    break;
+                }
+                current = sub;
+            }
+            if (sub != null) {
+                //we found it
+                break;
+            }
+            if (((ICUResourceBundle)actualBundle).resPath.length() != 0) {
+                path = ((ICUResourceBundle)actualBundle).resPath + "/" + path;
+            }
+            // if not try the parent bundle
+            actualBundle = ((ICUResourceBundle) actualBundle).getParent();
+
+        }
+        if(sub != null){
+            sub.setLoadingStatus(((ICUResourceBundle)requested).getLocaleID());
+        }
+        return sub;
+    }
+    public boolean equals(Object other) {
+        if (other instanceof ICUResourceBundle) {
+            ICUResourceBundle o = (ICUResourceBundle) other;
+            if (getBaseName().equals(o.getBaseName())
+                    && getLocaleID().equals(o.getLocaleID())) {
+                return true;
+            }
+        }
+        return false;
+    }
+    // This method is for super class's instantiateBundle method
+    public static UResourceBundle getBundleInstance(String baseName, String localeID,
+                                                    ClassLoader root, boolean disableFallback){
+        UResourceBundle b = instantiateBundle(baseName, localeID, root, disableFallback);
+        if(b==null){
+            throw new MissingResourceException("Could not find the bundle "+ baseName+"/"+ localeID+".res","","");
+        }
+        return b;
+    }
+    //  recursively build bundle .. over-ride super class method.
+    protected synchronized static UResourceBundle instantiateBundle(String baseName, String localeID,
+                                                                    ClassLoader root, boolean disableFallback){
+        ULocale defaultLocale = ULocale.getDefault();
+        String localeName = localeID;
+        if(localeName.indexOf('@')>0){
+            localeName = ULocale.getBaseName(localeID);
+        }
+        String fullName = ICUResourceBundleReader.getFullName(baseName, localeName);
+        ICUResourceBundle b = (ICUResourceBundle)loadFromCache(root, fullName, defaultLocale);
+
+        // here we assume that java type resource bundle organization
+        // is required then the base name contains '.' else
+        // the resource organization is of ICU type
+        // so clients can instantiate resources of the type
+        // com.mycompany.data.MyLocaleElements_en.res and
+        // com.mycompany.data.MyLocaleElements.res
+        //
+        final String rootLocale = (baseName.indexOf('.')==-1) ? "root" : "";
+        final String defaultID = ULocale.getDefault().toString();
+
+        if(localeName.equals("")){
+            localeName = rootLocale;
+        }
+        if(DEBUG) System.out.println("Creating "+fullName+ " currently b is "+b);
+        if (b == null) {
+            b = ICUResourceBundle.createBundle(baseName, localeName, root);
+
+            if(DEBUG)System.out.println("The bundle created is: "+b+" and disableFallback="+disableFallback+" and bundle.getNoFallback="+(b!=null && b.getNoFallback()));
+            if(disableFallback || (b!=null && b.getNoFallback())){
+                addToCache(root, fullName, defaultLocale, b);
+                // no fallback because the caller said so or because the bundle says so
+                return b;
+            }
+
+            // fallback to locale ID parent
+            if(b == null){
+                int i = localeName.lastIndexOf('_');
+                if (i != -1) {
+                    String temp = localeName.substring(0, i);
+                    b = (ICUResourceBundle)instantiateBundle(baseName, temp, root, disableFallback);
+                    if(b!=null && b.getULocale().equals(temp)){
+                        b.setLoadingStatus(ICUResourceBundle.FROM_FALLBACK);
+                    }
+                }else{
+                    if(defaultID.indexOf(localeName)==-1){
+                        b = (ICUResourceBundle)instantiateBundle(baseName, defaultID, root, disableFallback);
+                        if(b!=null){
+                            b.setLoadingStatus(ICUResourceBundle.FROM_DEFAULT);
+                        }
+                    }else if(rootLocale.length()!=0){
+                        b = ICUResourceBundle.createBundle(baseName, rootLocale, root);
+                        if(b!=null){
+                            b.setLoadingStatus(ICUResourceBundle.FROM_ROOT);
+                        }
+                    }
+                }
+            }else{
+                UResourceBundle parent = null;
+                localeName = b.getLocaleID();
+                int i = localeName.lastIndexOf('_');
+
+                addToCache(root, fullName, defaultLocale, b);
+
+                if (i != -1) {
+                    parent = instantiateBundle(baseName, localeName.substring(0, i), root, disableFallback);
+                }else if(!localeName.equals(rootLocale)){
+                    parent = instantiateBundle(baseName, rootLocale, root, true);
+                }
+
+                if(!b.equals(parent)){
+                    b.setParent(parent);
+                }
+            }
+        }
+        return b;
+    }
+    UResourceBundle get(String aKey, HashMap table, UResourceBundle requested) {
+        ICUResourceBundle obj = (ICUResourceBundle)handleGet(aKey, table, requested);
+        if (obj == null) {
+            obj = (ICUResourceBundle)getParent();
+            if (obj != null) {
+                //call the get method to recursively fetch the resource
+                obj = (ICUResourceBundle)obj.get(aKey, table, requested);
+            }
+            if (obj == null) {
+                String fullName = ICUResourceBundleReader.getFullName(
+                        getBaseName(), getLocaleID());
+                throw new MissingResourceException(
+                        "Can't find resource for bundle " + fullName + ", key "
+                                + aKey, this.getClass().getName(), aKey);
+            }
+        }
+        ((ICUResourceBundle)obj).setLoadingStatus(((ICUResourceBundle)requested).getLocaleID());
+        return obj;
+    }
+    //protected byte[] version;
+    protected byte[] rawData;
+    protected long rootResource;
+    protected boolean noFallback;
+
+    protected String localeID;
+    protected String baseName;
+    protected ULocale ulocale;
+    protected ClassLoader loader;
+
+    //protected static final boolean ASSERT = false;
+
+    /**
+     *
+     * @param baseName
+     * @param localeID
+     * @param root
+     * @return the new bundle
+     */
+    public static ICUResourceBundle createBundle(String baseName,
+            String localeID, ClassLoader root) {
+
+        ICUResourceBundleReader reader = ICUResourceBundleReader.getReader( baseName, localeID, root);
+        // could not open the .res file so return null
+        if (reader == null) {
+            return null;
+        }
+        return getBundle(reader, baseName, localeID, root);
+    }
+
+    protected String getLocaleID() {
+        return localeID;
+    }
+
+    protected String getBaseName() {
+        return baseName;
+    }
+
+    public ULocale getULocale() {
+        return ulocale;
+    }
+
+    public UResourceBundle getParent() {
+        return (UResourceBundle) parent;
+    }
+
+    protected void setParent(ResourceBundle parent) {
+        this.parent = parent;
+    }
+
+    /**
+     * Get the noFallback flag specified in the loaded bundle.
+     * @return The noFallback flag.
+     */
+    protected boolean getNoFallback() {
+        return noFallback;
+    }
+
+    private static ICUResourceBundle getBundle(ICUResourceBundleReader reader, String baseName, String localeID, ClassLoader loader) {
+
+        long rootResource = (UNSIGNED_INT_MASK) & reader.getRootResource();
+
+        int type = RES_GET_TYPE(rootResource);
+        if (type == TABLE) {
+            ICUResourceBundleImpl.ResourceTable table = new ICUResourceBundleImpl.ResourceTable(reader, baseName, localeID, loader);
+            if(table.getSize()>=1){ // ticket#5683 ICU4J 3.6 data for zh_xx contains an entry other than %%ALIAS
+                UResourceBundle b = table.handleGetImpl(0, null, table, null); // handleGet will cache the bundle with no parent set
+                String itemKey = b.getKey();
+
+                // %%ALIAS is such a hack!
+                if (itemKey.equals("%%ALIAS")) {
+                	String locale = b.getString();
+                    UResourceBundle actual =  UResourceBundle.getBundleInstance(baseName, locale);
+                    return (ICUResourceBundleImpl.ResourceTable) actual;
+                }else{
+                    return table;
+                }
+            }else {
+                return table;
+            }
+        } else if (type == TABLE32) {
+
+            // genrb does not generate Table32 with %%ALIAS
+            return new ICUResourceBundleImpl.ResourceTable32(reader, baseName, localeID, loader);
+        } else {
+            throw new IllegalStateException("Invalid format error");
+        }
+    }
+    // private constructor for inner classes
+    protected ICUResourceBundle(){}
+
+    public static final int RES_GET_TYPE(long res) {
+        return (int) ((res) >> 28L);
+    }
+    protected static final int RES_GET_OFFSET(long res) {
+        return (int) ((res & 0x0fffffff) << 2); // * 4
+    }
+    /* get signed and unsigned integer values directly from the Resource handle */
+    protected static final int RES_GET_INT(long res) {
+        return (((int) ((res) << 4)) >> 4);
+    }
+    static final long RES_GET_UINT(long res) {
+        long t = ((res) & 0x0fffffffL);
+        return t;
+    }
+    static final StringBuffer RES_GET_KEY(byte[] rawData,
+            int keyOffset) {
+        char ch;
+        StringBuffer key = new StringBuffer();
+        while ((ch = (char) rawData[keyOffset]) != 0) {
+            key.append(ch);
+            keyOffset++;
+        }
+        return key;
+    }
+    protected static final int getIntOffset(int offset) {
+        return (offset << 2); // * 4
+    }
+    static final int getCharOffset(int offset) {
+        return (offset << 1); // * 2
+    }
+    protected final ICUResourceBundle createBundleObject(String _key,
+            long _resource, String _resPath, HashMap table,
+            UResourceBundle requested, ICUResourceBundle bundle, boolean[] isAlias) {
+        if (isAlias != null) {
+            isAlias[0] = false;
+        }
+        //if (resource != RES_BOGUS) {
+        switch (RES_GET_TYPE(_resource)) {
+            case STRING : {
+                return new ICUResourceBundleImpl.ResourceString(_key, _resPath, _resource, this);
+            }
+            case BINARY : {
+                return new ICUResourceBundleImpl.ResourceBinary(_key, _resPath, _resource, this);
+            }
+            case ALIAS : {
+                if (isAlias != null) {
+                    isAlias[0] = true;
+                }
+                return findResource(_key, _resource, table, requested);
+            }
+            case INT : {
+                return new ICUResourceBundleImpl.ResourceInt(_key, _resPath, _resource, this);
+            }
+            case INT_VECTOR : {
+                return new ICUResourceBundleImpl.ResourceIntVector(_key, _resPath, _resource, this);
+            }
+            case ARRAY : {
+                return new ICUResourceBundleImpl.ResourceArray(_key, _resPath, _resource, this);
+            }
+            case TABLE32 : {
+                return new ICUResourceBundleImpl.ResourceTable32(_key, _resPath, _resource, this);
+            }
+            case TABLE : {
+                return new ICUResourceBundleImpl.ResourceTable(_key, _resPath, _resource, this);
+            }
+            default :
+                throw new IllegalStateException("The resource type is unknown");
+        }
+        //}
+        //return null;
+    }
+
+    static final void assign(ICUResourceBundle b1, ICUResourceBundle b2){
+        b1.rawData = b2.rawData;
+        b1.rootResource = b2.rootResource;
+        b1.noFallback = b2.noFallback;
+        b1.baseName = b2.baseName;
+        b1.localeID = b2.localeID;
+        b1.ulocale = b2.ulocale;
+        b1.loader = b2.loader;
+        b1.parent = b2.parent;
+    }
+
+    int findKey(int siz, int currentOffset, ICUResourceBundle res, String target) {
+        int mid = 0, start = 0, limit = siz;
+        int lastMid = -1;
+
+        int targetLength = target.length();
+        char targetChar;
+        char actualChar;
+        int offset;
+
+        //int myCharOffset = 0, keyOffset = 0;
+        outer: for (;;) {
+            mid = ((start + limit) >> 1); // compute average
+            if (lastMid == mid) { /* Have we moved? */
+                break; /* We haven't moved, and it wasn't found. */
+            }
+            lastMid = mid;
+
+            offset = res.getOffset(currentOffset, mid);
+
+            // compare a segment of rawData with targetArray
+            for (int i=0; i<targetLength; i++) {
+                targetChar = target.charAt(i);
+                actualChar = (char)rawData[offset];
+                if (actualChar == 0 || targetChar > actualChar ) {
+                    // target > data
+                    start = mid;
+                    continue outer;
+                }
+                if (targetChar < actualChar) {
+                    // target < data
+                    limit = mid;
+                    continue outer;
+                }
+                // target == data so far...
+                offset++;
+            }
+            actualChar = (char)rawData[offset];
+            if (actualChar != 0) {
+                // target < data
+                limit = mid;
+                continue outer;
+            }
+            // target == data, we're sure now
+            return mid;
+        }
+        return -1;
+    }
+
+    public int getOffset(int currentOfset, int index){
+        return -1;
+    }
+
+    private static final char makeChar(byte[] data, int offset) {
+        return (char)((data[offset++] << 8) | (data[offset] & 0xff));
+    }
+    static char getChar(byte[]data, int offset){
+        return makeChar(data, offset);
+    }
+    private static final int makeInt(byte[] data, int offset) {
+        // | is left-associative
+        return (int) ((data[offset++] << 24) | ((data[offset++] & 0xff) << 16) | ((data[offset++] & 0xff) << 8) | ((data[offset] & 0xff)));
+    }
+
+    protected static int getInt(byte[] data, int offset){
+        //if (ASSERT) Assert.assrt("offset < data.length", offset < data.length);
+        return makeInt(data, offset);
+    }
+
+    String getStringValue(long res) {
+        if (res == 0) {
+            /*
+             * The data structure is documented as supporting resource==0 for empty strings.
+             * Return a fixed pointer in such a case.
+             * This was dropped in uresdata.c 1.17 as part of Jitterbug 1005 work
+             * on code coverage for ICU 2.0.
+             * Re-added for consistency with the design and with other code.
+             */
+            return "";
+        }
+        int offset = RES_GET_OFFSET(res);
+        int length = getInt(rawData,offset);
+        int stringOffset = offset + getIntOffset(1);
+        char[] dst = new char[length];
+        //if (ASSERT) Assert.assrt("(stringOffset+getCharOffset(length)) < rawData.length", (stringOffset+getCharOffset(length)) < rawData.length);
+        for(int i=0; i<length; i++){
+            dst[i]=getChar(rawData, stringOffset+getCharOffset(i));
+        }
+        return new String(dst);
+    }
+    private static final char RES_PATH_SEP_CHAR = '/';
+    private static final String RES_PATH_SEP_STR = "/";
+    private static final String ICUDATA = "ICUDATA";
+    private static final char HYPHEN = '-';
+    private static final String LOCALE = "LOCALE";
+
+    protected static final int getIndex(String s) {
+        if (s.length() >= 1) {
+            return Integer.valueOf(s).intValue();
+        }
+        return -1;
+    }
+    private ICUResourceBundle findResource(String _key, long _resource,
+                                            HashMap table,
+                                            UResourceBundle requested) {
+        ClassLoader loaderToUse = loader;
+        String locale = null, keyPath = null;
+        String bundleName;
+        String rpath = getStringValue(_resource);
+        if (table == null) {
+            table = new HashMap();
+        }
+        if (table.get(rpath) != null) {
+            throw new IllegalArgumentException(
+                    "Circular references in the resource bundles");
+        }
+        table.put(rpath, "");
+        if (rpath.indexOf(RES_PATH_SEP_CHAR) == 0) {
+            int i = rpath.indexOf(RES_PATH_SEP_CHAR, 1);
+            int j = rpath.indexOf(RES_PATH_SEP_CHAR, i + 1);
+            bundleName = rpath.substring(1, i);
+            locale = rpath.substring(i + 1);
+            if (j != -1) {
+                locale = rpath.substring(i + 1, j);
+                keyPath = rpath.substring(j + 1, rpath.length());
+            }
+            //there is a path included
+            if (bundleName.equals(ICUDATA)) {
+                bundleName = ICU_BASE_NAME;
+                loaderToUse = ICU_DATA_CLASS_LOADER;
+            }else if(bundleName.indexOf(ICUDATA)>-1){
+                int idx = bundleName.indexOf(HYPHEN);
+                if(idx>-1){
+                    bundleName = ICU_BASE_NAME+RES_PATH_SEP_STR+bundleName.substring(idx+1,bundleName.length());
+                    loaderToUse = ICU_DATA_CLASS_LOADER;
+                }
+            }
+        } else {
+            //no path start with locale
+            int i = rpath.indexOf(RES_PATH_SEP_CHAR);
+            keyPath = rpath.substring(i + 1);
+            if (i != -1) {
+                locale = rpath.substring(0, i);
+            } else {
+                locale = keyPath;
+                keyPath = null;//keyPath.substring(i, keyPath.length());
+            }
+            bundleName = baseName;
+        }
+        ICUResourceBundle bundle = null;
+        ICUResourceBundle sub = null;
+        if(bundleName.equals(LOCALE)){
+            bundleName = baseName;
+            bundle = (ICUResourceBundle)requested;
+            keyPath = rpath.substring(LOCALE.length() + 2/* prepending and appending / */, rpath.length());
+            locale = ((ICUResourceBundle)requested).getLocaleID();
+            sub = ICUResourceBundle.findResourceWithFallback(keyPath, requested, null);
+            sub.resPath = "/" + sub.getLocaleID() + "/" + keyPath;
+        }else{
+            if (locale == null) {
+                // {dlf} must use requestor's class loader to get resources from same jar
+                bundle = (ICUResourceBundle) getBundleInstance(bundleName, "",
+                         loaderToUse, false);
+            } else {
+                bundle = (ICUResourceBundle) getBundleInstance(bundleName, locale,
+                         loaderToUse, false);
+            }
+            if (keyPath != null) {
+                StringTokenizer st = new StringTokenizer(keyPath, "/");
+                ICUResourceBundle current = bundle;
+                while (st.hasMoreTokens()) {
+                    String subKey = st.nextToken();
+                    sub = (ICUResourceBundle)((ICUResourceBundle) current).get(subKey, table, requested);
+                    if (sub == null) {
+                        break;
+                    }
+                    current = sub;
+                }
+            } else {
+                // if the sub resource is not found
+                // try fetching the sub resource with
+                // the key of this alias resource
+                sub = (ICUResourceBundle)bundle.get(_key);
+            }
+            sub.resPath = rpath;
+        }
+        if (sub == null) {
+            throw new MissingResourceException(localeID, baseName, _key);
+        }
+        return sub;
+    }
+
+    // Resource bundle lookup cache, which may be used by subclasses
+    // which have nested resources
+    protected ICUCache lookup;
+    private static final int MAX_INITIAL_LOOKUP_SIZE = 64;
+
+    protected void createLookupCache() {
+        lookup = new SimpleCache(ICUCache.WEAK, Math.max(size*2, MAX_INITIAL_LOOKUP_SIZE));
+    }
+
+    protected UResourceBundle handleGet(String resKey, HashMap table, UResourceBundle requested) {
+        UResourceBundle res = null;
+        if (lookup != null) {
+            res = (UResourceBundle)lookup.get(resKey);
+        }
+        if (res == null) {
+            int[] index = new int[1];
+            boolean[] alias = new boolean[1];
+            res = handleGetImpl(resKey, table, requested, index, alias);
+            if (res != null && lookup != null && !alias[0]) {
+                // We do not want to cache a result from alias entry
+                lookup.put(resKey, res);
+                lookup.put(Utility.integerValueOf(index[0]), res);
+            }
+        }
+        return res;
+    }
+
+    protected UResourceBundle handleGet(int index, HashMap table, UResourceBundle requested) {
+        UResourceBundle res = null;
+        Integer indexKey = null;
+        if (lookup != null) {
+            indexKey = Utility.integerValueOf(index);
+            res = (UResourceBundle)lookup.get(indexKey);
+        }
+        if (res == null) {
+            boolean[] alias = new boolean[1];
+            res = handleGetImpl(index, table, requested, alias);
+            if (res != null && lookup != null && !alias[0]) {
+                // We do not want to cache a result from alias entry
+                lookup.put(res.getKey(), res);
+                lookup.put(indexKey, res);
+            }
+        }
+        return res;
+    }
+
+    // Subclass which supports key based resource access to implement this method
+    protected UResourceBundle handleGetImpl(String resKey, HashMap table, UResourceBundle requested,
+            int[] index, boolean[] isAlias) {
+        return null;
+    }
+
+    // Subclass which supports index based resource access to implement this method
+    protected UResourceBundle handleGetImpl(int index, HashMap table, UResourceBundle requested,
+            boolean[] isAlias) {
+        return null;
+    }
+    
+    
+     // TODO Below is a set of workarounds created for org.unicode.cldr.icu.ICU2LDMLWriter
+     /* 
+      * Calling getKeys() on a table that has alias's can throw a NullPointerException if parent is not set, 
+      * see trac bug: 6514
+      * -Brian Rower - IBM - Sept. 2008
+      */
+    
+    /**
+     * Returns the resource handle for the given index within the calling resource table.
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only and a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    private long getResourceHandle(int index)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	//if it's out of range, return -1
+    	if(index > this.size)
+    	{
+    		return -1;
+    	}
+    	//get the offset of the calling tables resource
+    	int offset = RES_GET_OFFSET(resource);
+    	
+    	//move past the 2 byte count number
+    	offset += getCharOffset(1);
+    	//move past the array of 2 byte key string offsets
+    	offset += getCharOffset(size);
+    	//move past the padding if it exists...it's either 2 bytes or no bytes
+    	offset += getCharOffset(~size & 1);
+		
+    	//and then to the proper int in the array of resources
+    	offset += getIntOffset(index);
+		return (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData, offset);
+    }
+    
+    /**
+     * Determines if the object at the specified index of the calling resource table
+     * is an alias. If it is, returns true
+     * 
+     * @param index The index of the resource to check
+     * @returns True if the resource at 'index' is an alias, false otherwise.
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only and part of a work around see ticket #6514
+     * @author Brian Rower
+     */
+    public boolean isAlias(int index)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	//if index is out of the resource, return false.
+    	if(index > size)
+    	{
+    		return false;
+    	}
+    	//parent resource must be a table to call this
+    	if(RES_GET_TYPE(this.resource) != TABLE)
+    	{
+    		return false;
+    	}
+    	long res = getResourceHandle(index);
+		return RES_GET_TYPE(res) == ALIAS ? true : false;
+    }
+    
+    /**
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only and part of a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    public boolean isAlias()
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	return RES_GET_TYPE(this.resource) == ALIAS;
+    }
+    
+    /**
+     * Determines if the object with the specified key 
+     * is an alias. If it is, returns true
+     * 
+     * @param key The key of the resource to check
+     * @returns True if the resource with 'key' is an alias, false otherwise.
+     * 
+      * @internal
+     * @deprecated This API is ICU internal only and part of a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    public boolean isAlias(String k)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	//this only applies to tables
+    	if(RES_GET_TYPE(this.resource) != TABLE)
+    	{
+    		return false;
+    	}
+    	int i = getIndexOfKey(k);
+    	if(i > size || i < 0)
+    	{
+    		return false;	
+    	}
+    	return isAlias(i);
+    }
+    
+    private int getIndexOfKey(String k)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	if(RES_GET_TYPE(this.resource) != TABLE)
+    	{
+    		return -1;
+    	}
+    	int index;
+        for(index = 0; index < size; index++)
+        {
+        	String curKey = getKey(index); 
+			if(k.equals(curKey))
+			{
+				return index;
+			}
+        }
+        return -1;
+    }
+    
+    /**
+     * This method can be used to retrieve the underlying alias path (aka where the alias points to)
+     * This method was written to allow conversion from ICU back to LDML format.
+     * 
+     * @param index
+     * @return
+     * @author Brian Rower
+     * @internal
+     * @deprecated This API is ICU internal only.
+     * @author Brian Rower
+     */
+    public String getAliasPath(int index)
+    {
+    	//TODO cannot allow alias path to to end up in public API
+    	if(!isAlias(index) || index > this.size)
+    	{
+    		return "";
+    	}
+    	
+    	return getStringValue(getResourceHandle(index));
+    }
+    
+    
+    /**
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only
+     * @author Brian Rower
+     */
+    public String getAliasPath()
+    {
+    	//TODO cannot allow alias path to to end up in public API
+    	return getStringValue(resource);
+    }
+    
+    /**
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only
+     * @author Brian Rower
+     */
+    public String getAliasPath(String k)
+    {
+    	//TODO cannot allow alias path to to end up in public API
+    	return getAliasPath(getIndexOfKey(k));
+    }
+    
+    /*
+     * Helper method for getKeysSafe
+     */
+    private String getKey(int index)
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	if(index > this.size)
+    	{
+    		return "";
+    	}
+    	//the offset of the table
+    	int offset = RES_GET_OFFSET(resource);
+    	
+    	//move past the 2 byte number for the count
+    	offset += getCharOffset(1);
+    	
+    	//grab the key string offset from the array
+        offset = getOffset(offset, index);
+        
+        return RES_GET_KEY(rawData, offset).toString();
+    }
+    
+    /**
+     * Returns an Enumeration of the keys belonging to this table or array.
+     * This method differs from the getKeys() method by not following alias paths. This method exposes 
+     * underlying alias's. For all general purposes of the ICU resource bundle please use getKeys().
+     * 
+     * @return Keys in this table or array.
+     * @internal
+     * @deprecated This API is ICU internal only and a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    public Enumeration getKeysSafe()
+    {
+    	//TODO this is part of a workaround for ticket #6514
+    	//the safeness only applies to tables, so use the other method if it's not a table
+    	if(RES_GET_TYPE(this.resource) != TABLE)
+    	{
+    		return getKeys();
+    	}
+    	Vector v = new Vector();
+    	int index;
+        for(index = 0; index < size; index++)
+        {
+        	String curKey = getKey(index); 
+			v.add(curKey);
+        }
+    	return v.elements();
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUResourceBundleImpl.java b/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
new file mode 100644
index 0000000..52c48fb
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
@@ -0,0 +1,331 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.HashMap;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//#else
+import java.nio.ByteBuffer;
+//#endif
+
+class ICUResourceBundleImpl {
+
+    static final class ResourceArray extends ICUResourceBundle {
+        protected String[] handleGetStringArray() {
+            String[] strings = new String[size];
+            UResourceBundleIterator iter = getIterator();
+            int i = 0;
+            while (iter.hasNext()) {
+                strings[i++] = iter.next().getString();
+            }
+            return strings;
+        }
+        /**
+         * @internal ICU 3.0
+         */
+        public String[] getStringArray() {
+            return handleGetStringArray();
+        }
+
+        protected UResourceBundle handleGetImpl(String indexStr, HashMap table, UResourceBundle requested,
+                int[] index, boolean[] isAlias) {
+            index[0] = getIndex(indexStr);
+            if (index[0] > -1) {
+                return handleGetImpl(index[0], table, requested, isAlias);
+            }
+            throw new UResourceTypeMismatchException("Could not get the correct value for index: "+ index);
+        }
+
+        protected UResourceBundle handleGetImpl(int index, HashMap table, UResourceBundle requested,
+                boolean[] isAlias) {
+            if (index > size) {
+                throw new IndexOutOfBoundsException();
+            }
+            int offset = RES_GET_OFFSET(resource);
+            int itemOffset = offset + getIntOffset(index + 1);
+            long itemResource = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData,itemOffset);
+            String path = (isTopLevel == true) ? Integer.toString(index) : resPath + "/" + index;
+
+            return createBundleObject(Integer.toString(index), itemResource, path, table, requested, this, isAlias);
+        }
+        private int countItems() {
+            int offset = RES_GET_OFFSET(resource);
+            int value = getInt(rawData,offset);
+            return value;
+        }
+        ResourceArray(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            this.resource = resource;
+            this.key = key;
+            this.size = countItems();
+            this.resPath = resPath;
+            createLookupCache(); // Use bundle cache to access array entries
+        }
+    }
+    static final class ResourceBinary extends ICUResourceBundle {
+        private byte[] value;
+        public ByteBuffer getBinary() {
+            return ByteBuffer.wrap(value);
+        }
+        public byte [] getBinary(byte []ba) {
+            return value;
+        }
+        private byte[] getValue() {
+            int offset = RES_GET_OFFSET(resource);
+            int length = ICUResourceBundle.getInt(rawData,offset);
+            int byteOffset = offset + getIntOffset(1);
+            byte[] dst = new byte[length];
+            //if (ASSERT) Assert.assrt("byteOffset+length < rawData.length", byteOffset+length < rawData.length);
+            System.arraycopy(rawData, byteOffset, dst, 0, length);
+            return dst;
+        }
+        ResourceBinary(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            this.resource = resource;
+            this.key = key;
+            this.resPath = resPath;
+            value = getValue();
+
+        }
+    }
+    static final class ResourceInt extends ICUResourceBundle {
+        public int getInt() {
+            return RES_GET_INT(resource);
+        }
+        public int getUInt() {
+            long ret = RES_GET_UINT(resource);
+            return (int) ret;
+        }
+        ResourceInt(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            this.key = key;
+            this.resource = resource;
+            this.resPath = resPath;
+        }
+    }
+
+    static final class ResourceString extends ICUResourceBundle {
+        private String value;
+        public String getString() {
+            return value;
+        }
+        ResourceString(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            value = getStringValue(resource);
+            this.key = key;
+            this.resource = resource;
+            this.resPath = resPath;
+        }
+    }
+
+    static final class ResourceIntVector extends ICUResourceBundle {
+        private int[] value;
+        public int[] getIntVector() {
+            return value;
+        }
+        private int[] getValue() {
+            int offset = RES_GET_OFFSET(resource);
+            int length = ICUResourceBundle.getInt(rawData,offset);
+            int intOffset = offset + getIntOffset(1);
+            int[] val = new int[length];
+            //int byteLength = getIntOffset(length);
+
+            //if (ASSERT) Assert.assrt("(intOffset+byteLength)<rawData.length", (intOffset+byteLength)<rawData.length);
+
+            for(int i=0; i<length;i++){
+                val[i]=ICUResourceBundle.getInt(rawData, intOffset+getIntOffset(i));
+            }
+            return val;
+        }
+        ResourceIntVector(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            assign(this, bundle);
+            this.key = key;
+            this.resource = resource;
+            this.size = 1;
+            this.resPath = resPath;
+            value = getValue();
+        }
+    }
+
+    static final class ResourceTable extends ICUResourceBundle {
+
+        protected UResourceBundle handleGetImpl(String resKey, HashMap table, UResourceBundle requested,
+                int[] index, boolean[] isAlias) {
+            if(size<=0){
+                return null;
+            }
+            int offset = RES_GET_OFFSET(resource);
+            // offset+0 contains number of entries
+            // offset+1 contains the keyOffset
+            int currentOffset = (offset) + getCharOffset(1);
+            //int keyOffset = rawData.getChar(currentOffset);
+            /* do a binary search for the key */
+            index[0] = findKey(size, currentOffset, this, resKey);
+            if (index[0] == -1) {
+                //throw new MissingResourceException(ICUResourceBundleReader.getFullName(baseName, localeID),
+                //                                    localeID,
+                //                                    key);
+                return null;
+            }
+            currentOffset += getCharOffset(size + (~size & 1))
+                    + getIntOffset(index[0]);
+            long resOffset = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData, currentOffset);
+            String path = (isTopLevel == true) ? resKey : resPath + "/" + resKey;
+
+            return createBundleObject(resKey, resOffset, path, table, requested, this, isAlias);
+        }
+
+        public int getOffset(int currentOffset, int index) {
+            return getChar(rawData, currentOffset + getCharOffset(index));
+        }
+        protected UResourceBundle handleGetImpl(int index, HashMap table, UResourceBundle requested,
+                boolean[] isAlias) {
+            if (index > size) {
+                throw new IndexOutOfBoundsException();
+            }
+            int offset = RES_GET_OFFSET(resource);
+            // offset+0 contains number of entries
+            // offset+1 contains the keyOffset
+            int currentOffset = (offset) + getCharOffset(1);
+            int betterOffset = getOffset(currentOffset, index);
+            String itemKey = RES_GET_KEY(rawData, betterOffset).toString();
+            currentOffset += getCharOffset(size + (~size & 1))
+                    + getIntOffset(index);
+            long resOffset = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData,currentOffset);
+            String path = (isTopLevel == true) ? itemKey : resPath + "/" + itemKey;
+
+            return createBundleObject(itemKey, resOffset, path, table, requested, this, isAlias);
+        }
+        private int countItems() {
+            int offset = RES_GET_OFFSET(resource);
+            int value = getChar(rawData,offset);
+            return value;
+        }
+        ResourceTable(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            this(key, resPath, resource, bundle, false);
+        }
+        ResourceTable(ICUResourceBundleReader reader, String baseName, String localeID, ClassLoader loader) {
+
+            this.rawData = reader.getData();
+            this.rootResource = (UNSIGNED_INT_MASK) & reader.getRootResource();
+            this.noFallback = reader.getNoFallback();
+            this.baseName = baseName;
+            this.localeID = localeID;
+            this.ulocale = new ULocale(localeID);
+            this.loader = loader;
+            initialize(null, "", rootResource, null, isTopLevel);
+        }
+        void initialize(String resKey, String resourcePath, long resOffset,
+                ICUResourceBundle bundle, boolean topLevel){
+            if(bundle!=null){
+                assign(this, bundle);
+            }
+            key = resKey;
+            resource = resOffset;
+            isTopLevel = topLevel;
+            size = countItems();
+            resPath = resourcePath;
+            createLookupCache(); // Use bundle cache to access nested resources
+        }
+        ResourceTable(String key, String resPath, long resource,
+                ICUResourceBundle bundle, boolean isTopLevel) {
+            initialize(key, resPath, resource, bundle, isTopLevel);
+        }
+    }
+    static final class ResourceTable32 extends ICUResourceBundle{
+
+        protected UResourceBundle handleGetImpl(String resKey, HashMap table, UResourceBundle requested,
+                int[] index, boolean[] isAlias) {
+            int offset = RES_GET_OFFSET(resource);
+            // offset+0 contains number of entries
+            // offset+1 contains the keyOffset
+            int currentOffset = (offset) + getIntOffset(1);
+            //int keyOffset = rawData.getChar(currentOffset);
+            /* do a binary search for the key */
+            index[0] = findKey(size, currentOffset, this, resKey);
+            if (index[0] == -1) {
+                throw new MissingResourceException(
+                        "Could not find resource ",
+                        ICUResourceBundleReader.getFullName(baseName, localeID),
+                        resKey);
+            }
+            currentOffset += getIntOffset(size) + getIntOffset(index[0]);
+            long resOffset = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData,currentOffset);
+            String path = (isTopLevel == true) ? resKey : resPath + "/" + resKey;
+
+            return createBundleObject(resKey, resOffset, path, table, requested, this, isAlias);
+        }
+
+        public int getOffset(int currentOffset, int index) {
+            return ICUResourceBundle.getInt(rawData, currentOffset + getIntOffset(index));
+        }
+        protected UResourceBundle handleGetImpl(int index, HashMap table, UResourceBundle requested,
+                boolean[] isAlias) {
+            if(size<=0){
+                return null;
+            }
+            if (index > size) {
+                throw new IndexOutOfBoundsException();
+            }
+            int offset = RES_GET_OFFSET(resource);
+            // offset+0 contains number of entries
+            // offset+1 contains the keyOffset
+            int currentOffset = (offset) + getIntOffset(1)
+                    + getIntOffset(index);
+            int betterOffset = getOffset(currentOffset, 0);
+            String itemKey = RES_GET_KEY(rawData, betterOffset).toString();
+            currentOffset += getIntOffset(size);
+            long resOffset = (UNSIGNED_INT_MASK) & ICUResourceBundle.getInt(rawData,currentOffset);
+            String path = (isTopLevel == true) ? Integer.toString(index) : resPath + "/" + index;
+
+            return createBundleObject(itemKey, resOffset, path, table, requested, this, isAlias);
+        }
+        private int countItems() {
+            int offset = RES_GET_OFFSET(resource);
+            int value = ICUResourceBundle.getInt(rawData, offset);
+            return value;
+        }
+        ResourceTable32(String key, String resPath, long resource, ICUResourceBundle bundle) {
+            this(key, resPath, resource, bundle, false);
+        }
+        ResourceTable32(ICUResourceBundleReader reader, String baseName, String localeID, ClassLoader loader) {
+
+            this.rawData = reader.getData();
+            this.rootResource = (UNSIGNED_INT_MASK) & reader.getRootResource();
+            this.noFallback = reader.getNoFallback();
+            this.baseName = baseName;
+            this.localeID = localeID;
+            this.ulocale = new ULocale(localeID);
+            this.loader = loader;
+            initialize(null, "", rootResource, null, isTopLevel);
+        }
+        void initialize(String resKey, String resourcePath, long resOffset,
+                ICUResourceBundle bundle, boolean topLevel){
+            if(bundle!=null){
+                assign(this, bundle);
+            }
+            key = resKey;
+            resource = resOffset;
+            isTopLevel = topLevel;
+            size = countItems();
+            resPath = resourcePath;
+            createLookupCache(); // Use bundle cache to access nested resources
+        }
+        ResourceTable32(String key, String resPath, long resource,
+                ICUResourceBundle bundle, boolean isTopLevel) {
+            initialize(key, resPath, resource, bundle, isTopLevel);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUResourceBundleReader.java b/src/com/ibm/icu/impl/ICUResourceBundleReader.java
new file mode 100644
index 0000000..677dbb9
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUResourceBundleReader.java
@@ -0,0 +1,298 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.BufferedInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+
+
+
+/**
+ * This class reads the *.res resource bundle format
+ *
+ * (For the latest version of the file format documentation see
+ * ICU4C's source/common/uresdata.h file.)
+ *
+ * File format for .res resource bundle files (formatVersion=1.2)
+ *
+ * An ICU4C resource bundle file (.res) is a binary, memory-mappable file
+ * with nested, hierarchical data structures.
+ * It physically contains the following:
+ *
+ *   Resource root; -- 32-bit Resource item, root item for this bundle's tree;
+ *                     currently, the root item must be a table or table32 resource item
+ *   int32_t indexes[indexes[0]]; -- array of indexes for friendly
+ *                                   reading and swapping; see URES_INDEX_* above
+ *                                   new in formatVersion 1.1 (ICU 2.8)
+ *   char keys[]; -- characters for key strings
+ *                   (formatVersion 1.0: up to 65k of characters; 1.1: <2G)
+ *                   (minus the space for root and indexes[]),
+ *                   which consist of invariant characters (ASCII/EBCDIC) and are NUL-terminated;
+ *                   padded to multiple of 4 bytes for 4-alignment of the following data
+ *   data; -- data directly and indirectly indexed by the root item;
+ *            the structure is determined by walking the tree
+ *
+ * Each resource bundle item has a 32-bit Resource handle (see typedef above)
+ * which contains the item type number in its upper 4 bits (31..28) and either
+ * an offset or a direct value in its lower 28 bits (27..0).
+ * The order of items is undefined and only determined by walking the tree.
+ * Leaves of the tree may be stored first or last or anywhere in between,
+ * and it is in theory possible to have unreferenced holes in the file.
+ *
+ * Direct values:
+ * - Empty Unicode strings have an offset value of 0 in the Resource handle itself.
+ * - Integer values are 28-bit values stored in the Resource handle itself;
+ *   the interpretation of unsigned vs. signed integers is up to the application.
+ *
+ * All other types and values use 28-bit offsets to point to the item's data.
+ * The offset is an index to the first 32-bit word of the value, relative to the
+ * start of the resource data (i.e., the root item handle is at offset 0).
+ * To get byte offsets, the offset is multiplied by 4 (or shifted left by 2 bits).
+ * All resource item values are 4-aligned.
+ *
+ * The structures (memory layouts) for the values for each item type are listed
+ * in the table above.
+ *
+ * Nested, hierarchical structures: -------------
+ *
+ * Table items contain key-value pairs where the keys are 16-bit offsets to char * key strings.
+ * Key string offsets are also relative to the start of the resource data (of the root handle),
+ * i.e., the first string has an offset of 4 (after the 4-byte root handle).
+ *
+ * The values of these pairs are Resource handles.
+ *
+ * Array items are simple vectors of Resource handles.
+ *
+ * An alias item is special (and new in ICU 2.4): --------------
+ *
+ * Its memory layout is just like for a UnicodeString, but at runtime it resolves to
+ * another resource bundle's item according to the path in the string.
+ * This is used to share items across bundles that are in different lookup/fallback
+ * chains (e.g., large collation data among zh_TW and zh_HK).
+ * This saves space (for large items) and maintenance effort (less duplication of data).
+ *
+ * --------------------------------------------------------------------------
+ *
+ * Resource types:
+ *
+ * Most resources have their values stored at four-byte offsets from the start
+ * of the resource data. These values are at least 4-aligned.
+ * Some resource values are stored directly in the offset field of the Resource itself.
+ * See UResType in unicode/ures.h for enumeration constants for Resource types.
+ *
+ * Type Name            Memory layout of values
+ *                      (in parentheses: scalar, non-offset values)
+ *
+ * 0  Unicode String:   int32_t length, UChar[length], (UChar)0, (padding)
+ *                  or  (empty string ("") if offset==0)
+ * 1  Binary:           int32_t length, uint8_t[length], (padding)
+ *                      - this value should be 32-aligned -
+ * 2  Table:            uint16_t count, uint16_t keyStringOffsets[count], (uint16_t padding), Resource[count]
+ * 3  Alias:            (physically same value layout as string, new in ICU 2.4)
+ * 4  Table32:          int32_t count, int32_t keyStringOffsets[count], Resource[count]
+ *                      (new in formatVersion 1.1/ICU 2.8)
+ *
+ * 7  Integer:          (28-bit offset is integer value)
+ * 8  Array:            int32_t count, Resource[count]
+ *
+ * 14 Integer Vector:   int32_t length, int32_t[length]
+ * 15 Reserved:         This value denotes special purpose resources and is for internal use.
+ *
+ * Note that there are 3 types with data vector values:
+ * - Vectors of 8-bit bytes stored as type Binary.
+ * - Vectors of 16-bit words stored as type Unicode String
+ *                     (no value restrictions, all values 0..ffff allowed!).
+ * - Vectors of 32-bit words stored as type Integer Vector.
+ *
+ *
+ */
+public final class ICUResourceBundleReader implements ICUBinary.Authenticate{
+
+    /**
+     * File format version that this class understands.
+     * "ResB"
+     */
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x52, (byte)0x65, 
+                                                     (byte)0x73, (byte)0x42};
+
+    private static final String ICU_RESOURCE_SUFFIX = ".res";
+    
+    /* indexes[] value names; indexes are generally 32-bit (Resource) indexes */
+    private static final int    URES_INDEX_LENGTH           = 0;        /* [0] contains URES_INDEX_TOP==the length of indexes[] */
+    //private static final int    URES_INDEX_STRINGS_TOP      = 1;        /* [1] contains the top of the strings, */
+                                                                        /*     same as the bottom of resources, rounded up */
+    //private static final int    URES_INDEX_RESOURCES_TOP    = 2;        /* [2] contains the top of all resources */
+    private static final int    URES_INDEX_BUNDLE_TOP       = 3;        /* [3] contains the top of the bundle, */
+                                                                        /*     in case it were ever different from [2] */
+    //private static final int    URES_INDEX_MAX_TABLE_LENGTH = 4;        /* [4] max. length of any table */
+    private static final int    URES_INDEX_ATTRIBUTES       = 5;        /* [5] attributes bit set, see URES_ATT_* (new in formatVersion 1.2) */
+    //private static final int    URES_INDEX_TOP              = 6;
+
+    //private static final int    URES_STRINGS_BOTTOM=(1+URES_INDEX_TOP)*4;
+
+    /*
+     * Nofallback attribute, attribute bit 0 in indexes[URES_INDEX_ATTRIBUTES].
+     * New in formatVersion 1.2 (ICU 3.6).
+     *
+     * If set, then this resource bundle is a standalone bundle.
+     * If not set, then the bundle participates in locale fallback, eventually
+     * all the way to the root bundle.
+     * If indexes[] is missing or too short, then the attribute cannot be determined
+     * reliably. Dependency checking should ignore such bundles, and loading should
+     * use fallbacks.
+     */
+    private static final int URES_ATT_NO_FALLBACK = 1;
+
+    private static final boolean DEBUG = false;
+    
+    private byte[] /* formatVersion, */ dataVersion;
+
+    private int rootRes;
+    private int[] indexes;
+    private boolean noFallback; /* see URES_ATT_NO_FALLBACK */
+
+    private byte[] data;
+
+    private ICUResourceBundleReader(InputStream stream, String resolvedName){
+
+        BufferedInputStream bs = new BufferedInputStream(stream);
+        try{
+            if(DEBUG) System.out.println("The InputStream class is: " + stream.getClass().getName());
+            if(DEBUG) System.out.println("The BufferedInputStream class is: " + bs.getClass().getName());
+            if(DEBUG) System.out.println("The bytes avialable in stream before reading the header: " + bs.available());
+            
+            dataVersion = ICUBinary.readHeader(bs,DATA_FORMAT_ID,this);
+
+            if(DEBUG) System.out.println("The bytes available in stream after reading the header: " + bs.available());
+                 
+            readData(bs);
+            stream.close();
+        }catch(IOException ex){
+            throw new RuntimeException("Data file "+ resolvedName+ " is corrupt - " + ex.getMessage());   
+        }
+    }
+    public static ICUResourceBundleReader getReader(String baseName, String localeName, ClassLoader root){
+        String resolvedName = getFullName(baseName, localeName);
+        InputStream stream = ICUData.getStream(root,resolvedName);
+        
+        if(stream==null){
+            return null;
+        }
+        ICUResourceBundleReader reader = new ICUResourceBundleReader(stream, resolvedName);
+        return reader;
+    }
+
+    private static void writeInt(int i, byte[] bytes, int offset) {
+        bytes[offset++]=(byte)(i>>24);
+        bytes[offset++]=(byte)(i>>16);
+        bytes[offset++]=(byte)(i>>8);
+        bytes[offset]=(byte)i;
+    }
+
+    private void readData(InputStream stream)
+            throws IOException{
+        
+        DataInputStream ds = new DataInputStream(stream);
+
+        if(DEBUG) System.out.println("The DataInputStream class is: " + ds.getClass().getName());
+        if(DEBUG) System.out.println("The available bytes in the stream before reading the data: "+ds.available());
+
+        /*
+         * The following will read two integers before ds.mark().
+         * Later, the two integers need to be placed into data[],
+         * then ds.reset(), then ds.readFully(into rest of data[]).
+         *
+         * This is necessary because we don't know the readLimit for ds.mark()
+         * until we have read the second integer (indexLength).
+         */
+        rootRes = ds.readInt();
+
+        // read the variable-length indexes[] array
+        int indexLength = ds.readInt();
+        ds.mark((indexLength-1)*4);
+
+        indexes = new int[indexLength];
+        indexes[URES_INDEX_LENGTH] = indexLength;
+
+        for(int i=1; i<indexLength; i++){
+            indexes[i] = ds.readInt();   
+        }
+
+        // determine if this resource bundle falls back to a parent bundle
+        // along normal locale ID fallback
+        noFallback =
+            indexLength > URES_INDEX_ATTRIBUTES &&
+            (indexes[URES_INDEX_ATTRIBUTES]&URES_ATT_NO_FALLBACK)!=0;
+
+        // read the entire bundle (after the header) into data[]
+        // put rootRes and indexLength into data[0..7]
+        // and the rest of the data into data[8..length-1]
+        int length = indexes[URES_INDEX_BUNDLE_TOP]*4;
+        if(DEBUG) System.out.println("The number of bytes in the bundle: "+length);
+    
+        data = new byte[length];
+        writeInt(rootRes, data, 0);
+        writeInt(indexLength, data, 4);
+
+        // now reset to the mark, which was set after reading rootRes and indexLength
+        ds.reset();
+        ds.readFully(data, 8, length-8);
+    }
+
+    /**
+     * Gets the full name of the resource with suffix.
+     */
+    public static String getFullName(String baseName, String localeName){
+        if(baseName==null || baseName.length()==0){
+            if(localeName.length()==0){
+                return ULocale.getDefault().toString()+ICU_RESOURCE_SUFFIX;   
+            }else{
+                return localeName+ICU_RESOURCE_SUFFIX;
+            }
+        }else{
+            if(baseName.indexOf('.')==-1){
+                if(baseName.charAt(baseName.length()-1)!= '/'){
+                    return baseName+"/"+localeName+ICU_RESOURCE_SUFFIX;
+                }else{
+                    return baseName+localeName+ICU_RESOURCE_SUFFIX;   
+                }
+            }else{
+                baseName = baseName.replace('.','/');
+                if(localeName.length()==0){
+                    return baseName+ICU_RESOURCE_SUFFIX;   
+                }else{
+                    return baseName+"_"+localeName+ICU_RESOURCE_SUFFIX;
+                }
+            }
+        }
+    }
+    
+    public VersionInfo getVersion(){
+        return VersionInfo.getInstance(dataVersion[0],dataVersion[1],dataVersion[2],dataVersion[3]);   
+    }
+    public boolean isDataVersionAcceptable(byte version[]){
+        // while ICU4C can read formatVersion 1.0 and up,
+        // ICU4J requires 1.1 as a minimum
+        // formatVersion = version;
+        return version[0] == 1 && version[1] >= 1;
+    }
+    
+    public byte[] getData(){
+        return data;   
+    }
+    public int getRootResource() {
+        return rootRes;
+    }
+    public boolean getNoFallback() {
+        return noFallback;
+    }
+}
diff --git a/src/com/ibm/icu/impl/ICUService.java b/src/com/ibm/icu/impl/ICUService.java
new file mode 100644
index 0000000..f43ff15
--- /dev/null
+++ b/src/com/ibm/icu/impl/ICUService.java
@@ -0,0 +1,989 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.lang.ref.SoftReference;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.EventListener;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <p>A Service provides access to service objects that implement a
+ * particular service, e.g. transliterators.  Users provide a String
+ * id (for example, a locale string) to the service, and get back an
+ * object for that id.  Service objects can be any kind of object.
+ * The service object is cached and returned for later queries, so
+ * generally it should not be mutable, or the caller should clone the
+ * object before modifying it.</p>
+ *
+ * <p>Services 'canonicalize' the query id and use the canonical id to
+ * query for the service.  The service also defines a mechanism to
+ * 'fallback' the id multiple times.  Clients can optionally request
+ * the actual id that was matched by a query when they use an id to
+ * retrieve a service object.</p>
+ *
+ * <p>Service objects are instantiated by Factory objects registered with
+ * the service.  The service queries each Factory in turn, from most recently
+ * registered to earliest registered, until one returns a service object.
+ * If none responds with a service object, a fallback id is generated,
+ * and the process repeats until a service object is returned or until
+ * the id has no further fallbacks.</p>
+ *
+ * <p>Factories can be dynamically registered and unregistered with the
+ * service.  When registered, a Factory is installed at the head of
+ * the factory list, and so gets 'first crack' at any keys or fallback
+ * keys.  When unregistered, it is removed from the service and can no
+ * longer be located through it.  Service objects generated by this
+ * factory and held by the client are unaffected.</p>
+ *
+ * <p>ICUService uses Keys to query factories and perform
+ * fallback.  The Key defines the canonical form of the id, and
+ * implements the fallback strategy.  Custom Keys can be defined that
+ * parse complex IDs into components that Factories can more easily
+ * use.  The Key can cache the results of this parsing to save
+ * repeated effort.  ICUService provides convenience APIs that
+ * take Strings and generate default Keys for use in querying.</p>
+ *
+ * <p>ICUService provides API to get the list of ids publicly
+ * supported by the service (although queries aren't restricted to
+ * this list).  This list contains only 'simple' IDs, and not fully
+ * unique ids.  Factories are associated with each simple ID and
+ * the responsible factory can also return a human-readable localized
+ * version of the simple ID, for use in user interfaces.  ICUService
+ * can also provide a sorted collection of the all the localized visible
+ * ids.</p>
+ *
+ * <p>ICUService implements ICUNotifier, so that clients can register
+ * to receive notification when factories are added or removed from
+ * the service.  ICUService provides a default EventListener subinterface,
+ * ServiceListener, which can be registered with the service.  When
+ * the service changes, the ServiceListener's serviceChanged method
+ * is called, with the service as the only argument.</p>
+ *
+ * <p>The ICUService API is both rich and generic, and it is expected
+ * that most implementations will statically 'wrap' ICUService to
+ * present a more appropriate API-- for example, to declare the type
+ * of the objects returned from get, to limit the factories that can
+ * be registered with the service, or to define their own listener
+ * interface with a custom callback method.  They might also customize
+ * ICUService by overriding it, for example, to customize the Key and
+ * fallback strategy.  ICULocaleService is a customized service that
+ * uses Locale names as ids and uses Keys that implement the standard
+ * resource bundle fallback strategy.<p>
+ */
+public class ICUService extends ICUNotifier {
+    /**
+     * Name used for debugging.
+     */
+    protected final String name;
+
+    /**
+     * Constructor.
+     */
+    public ICUService() {
+        name = "";
+    }
+
+    private static final boolean DEBUG = ICUDebug.enabled("service");
+    /**
+     * Construct with a name (useful for debugging).
+     */
+    public ICUService(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Access to factories is protected by a read-write lock.  This is
+     * to allow multiple threads to read concurrently, but keep
+     * changes to the factory list atomic with respect to all readers.
+     */
+    private final ICURWLock factoryLock = new ICURWLock();
+
+    /**
+     * All the factories registered with this service.
+     */
+    private final List factories = new ArrayList();
+
+    /**
+     * Record the default number of factories for this service.
+     * Can be set by markDefault.
+     */
+    private int defaultSize = 0;
+
+    /**
+     * Keys are used to communicate with factories to generate an
+     * instance of the service.  Keys define how ids are
+     * canonicalized, provide both a current id and a current
+     * descriptor to use in querying the cache and factories, and
+     * determine the fallback strategy.</p>
+     *
+     * <p>Keys provide both a currentDescriptor and a currentID.
+     * The descriptor contains an optional prefix, followed by '/'
+     * and the currentID.  Factories that handle complex keys,
+     * for example number format factories that generate multiple
+     * kinds of formatters for the same locale, use the descriptor
+     * to provide a fully unique identifier for the service object,
+     * while using the currentID (in this case, the locale string),
+     * as the visible IDs that can be localized.
+     *
+     * <p> The default implementation of Key has no fallbacks and
+     * has no custom descriptors.</p>
+     */
+    public static class Key {
+        private final String id;
+
+        /**
+         * Construct a key from an id.
+         */
+        public Key(String id) {
+            this.id = id;
+        }
+
+        /**
+         * Return the original ID used to construct this key.
+         */
+        public final String id() {
+            return id;
+        }
+
+        /**
+         * Return the canonical version of the original ID.  This implementation
+         * returns the original ID unchanged.
+         */
+        public String canonicalID() {
+            return id;
+        }
+
+        /**
+         * Return the (canonical) current ID.  This implementation
+         * returns the canonical ID.
+         */
+        public String currentID() {
+            return canonicalID();
+        }
+
+        /**
+         * Return the current descriptor.  This implementation returns
+         * the current ID.  The current descriptor is used to fully
+         * identify an instance of the service in the cache.  A
+         * factory may handle all descriptors for an ID, or just a
+         * particular descriptor.  The factory can either parse the
+         * descriptor or use custom API on the key in order to
+         * instantiate the service.
+         */
+        public String currentDescriptor() {
+            return "/" + currentID();
+        }
+
+        /**
+         * If the key has a fallback, modify the key and return true,
+         * otherwise return false.  The current ID will change if there
+         * is a fallback.  No currentIDs should be repeated, and fallback
+         * must eventually return false.  This implmentation has no fallbacks
+         * and always returns false.
+         */
+        public boolean fallback() {
+            return false;
+        }
+
+        /**
+         * If a key created from id would eventually fallback to match the
+         * canonical ID of this key, return true.
+         */
+        public boolean isFallbackOf(String idToCheck) {
+            return canonicalID().equals(idToCheck);
+        }
+    }
+
+    /**
+     * Factories generate the service objects maintained by the
+     * service.  A factory generates a service object from a key,
+     * updates id->factory mappings, and returns the display name for
+     * a supported id.
+     */
+    public static interface Factory {
+
+        /**
+         * Create a service object from the key, if this factory
+         * supports the key.  Otherwise, return null.
+         *
+         * <p>If the factory supports the key, then it can call
+         * the service's getKey(Key, String[], Factory) method
+         * passing itself as the factory to get the object that
+         * the service would have created prior to the factory's
+         * registration with the service.  This can change the
+         * key, so any information required from the key should
+         * be extracted before making such a callback.
+         */
+        public Object create(Key key, ICUService service);
+
+        /**
+         * Update the result IDs (not descriptors) to reflect the IDs
+         * this factory handles.  This function and getDisplayName are
+         * used to support ICUService.getDisplayNames.  Basically, the
+         * factory has to determine which IDs it will permit to be
+         * available, and of those, which it will provide localized
+         * display names for.  In most cases this reflects the IDs that
+         * the factory directly supports.
+         */
+        public void updateVisibleIDs(Map result);
+
+        /**
+         * Return the display name for this id in the provided locale.
+         * This is an localized id, not a descriptor.  If the id is
+         * not visible or not defined by the factory, return null.
+         * If locale is null, return id unchanged.
+         */
+        public String getDisplayName(String id, ULocale locale);
+    }
+
+    /**
+     * A default implementation of factory.  This provides default
+     * implementations for subclasses, and implements a singleton
+     * factory that matches a single id  and returns a single
+     * (possibly deferred-initialized) instance.  This implements
+     * updateVisibleIDs to add a mapping from its ID to itself
+     * if visible is true, or to remove any existing mapping
+     * for its ID if visible is false.
+     */
+    public static class SimpleFactory implements Factory {
+        protected Object instance;
+        protected String id;
+        protected boolean visible;
+
+        /**
+         * Convenience constructor that calls SimpleFactory(Object, String, boolean)
+         * with visible true.
+         */
+        public SimpleFactory(Object instance, String id) {
+            this(instance, id, true);
+        }
+
+        /**
+         * Construct a simple factory that maps a single id to a single
+         * service instance.  If visible is true, the id will be visible.
+         * Neither the instance nor the id can be null.
+         */
+        public SimpleFactory(Object instance, String id, boolean visible) {
+            if (instance == null || id == null) {
+                throw new IllegalArgumentException("Instance or id is null");
+            }
+            this.instance = instance;
+            this.id = id;
+            this.visible = visible;
+        }
+
+        /**
+         * Return the service instance if the factory's id is equal to
+         * the key's currentID.  Service is ignored.
+         */
+        public Object create(Key key, ICUService service) {
+            if (id.equals(key.currentID())) {
+                return instance;
+            }
+            return null;
+        }
+
+        /**
+         * If visible, adds a mapping from id -> this to the result,
+         * otherwise removes id from result.
+         */
+        public void updateVisibleIDs(Map result) {
+            if (visible) {
+                result.put(id, this);
+            } else {
+                result.remove(id);
+            }
+        }
+
+        /**
+         * If this.id equals id, returns id regardless of locale,
+         * otherwise returns null.  (This default implementation has
+         * no localized id information.)
+         */
+        public String getDisplayName(String identifier, ULocale locale) {
+            return (visible && id.equals(identifier)) ? identifier : null;
+        }
+
+        /**
+         * For debugging.
+         */
+        public String toString() {
+            StringBuffer buf = new StringBuffer(super.toString());
+            buf.append(", id: ");
+            buf.append(id);
+            buf.append(", visible: ");
+            buf.append(visible);
+            return buf.toString();
+        }
+    }
+
+    /**
+     * Convenience override for get(String, String[]). This uses
+     * createKey to create a key for the provided descriptor.
+     */
+    public Object get(String descriptor) {
+        return getKey(createKey(descriptor), null);
+    }
+
+    /**
+     * Convenience override for get(Key, String[]).  This uses
+     * createKey to create a key from the provided descriptor.
+     */
+    public Object get(String descriptor, String[] actualReturn) {
+        if (descriptor == null) {
+            throw new NullPointerException("descriptor must not be null");
+        }
+        return getKey(createKey(descriptor), actualReturn);
+    }
+
+    /**
+     * Convenience override for get(Key, String[]).
+     */
+    public Object getKey(Key key) {
+        return getKey(key, null);
+    }
+
+    /**
+     * <p>Given a key, return a service object, and, if actualReturn
+     * is not null, the descriptor with which it was found in the
+     * first element of actualReturn.  If no service object matches
+     * this key, return null, and leave actualReturn unchanged.</p>
+     *
+     * <p>This queries the cache using the key's descriptor, and if no
+     * object in the cache matches it, tries the key on each
+     * registered factory, in order.  If none generates a service
+     * object for the key, repeats the process with each fallback of
+     * the key, until either one returns a service object, or the key
+     * has no fallback.</p>
+     *
+     * <p>If key is null, just returns null.</p>
+     */
+    public Object getKey(Key key, String[] actualReturn) {
+        return getKey(key, actualReturn, null);
+    }
+
+    // debugging
+    // Map hardRef;
+
+    public Object getKey(Key key, String[] actualReturn, Factory factory) {
+        if (factories.size() == 0) {
+            return handleDefault(key, actualReturn);
+        }
+
+        if (DEBUG) System.out.println("Service: " + name + " key: " + key.canonicalID());
+
+        CacheEntry result = null;
+        if (key != null) {
+            try {
+                // The factory list can't be modified until we're done,
+                // otherwise we might update the cache with an invalid result.
+                // The cache has to stay in synch with the factory list.
+                factoryLock.acquireRead();
+
+                Map cache = null;
+                SoftReference cref = cacheref; // copy so we don't need to sync on this
+                if (cref != null) {
+                    if (DEBUG) System.out.println("Service " + name + " ref exists");
+                    cache = (Map)cref.get();
+                }
+                if (cache == null) {
+                    if (DEBUG) System.out.println("Service " + name + " cache was empty");
+                    // synchronized since additions and queries on the cache must be atomic
+                    // they can be interleaved, though
+                    cache = Collections.synchronizedMap(new HashMap());
+//                  hardRef = cache; // debug
+                    cref = new SoftReference(cache);
+                }
+
+                String currentDescriptor = null;
+                ArrayList cacheDescriptorList = null;
+                boolean putInCache = false;
+
+                int NDebug = 0;
+
+                int startIndex = 0;
+                int limit = factories.size();
+                boolean cacheResult = true;
+                if (factory != null) {
+                    for (int i = 0; i < limit; ++i) {
+                        if (factory == factories.get(i)) {
+                            startIndex = i + 1;
+                            break;
+                        }
+                    }
+                    if (startIndex == 0) {
+                        throw new IllegalStateException("Factory " + factory + "not registered with service: " + this);
+                    }
+                    cacheResult = false;
+                }
+
+            outer:
+                do {
+                    currentDescriptor = key.currentDescriptor();
+                    if (DEBUG) System.out.println(name + "[" + NDebug++ + "] looking for: " + currentDescriptor);
+                    result = (CacheEntry)cache.get(currentDescriptor);
+                    if (result != null) {
+                        if (DEBUG) System.out.println(name + " found with descriptor: " + currentDescriptor);
+                        break outer;
+                    } else {
+                        if (DEBUG) System.out.println("did not find: " + currentDescriptor + " in cache");
+                    }
+
+                    // first test of cache failed, so we'll have to update
+                    // the cache if we eventually succeed-- that is, if we're
+                    // going to update the cache at all.
+                    putInCache = cacheResult;
+
+                    //  int n = 0;
+                    int index = startIndex;
+                    while (index < limit) {
+                        Factory f = (Factory)factories.get(index++);
+                        if (DEBUG) System.out.println("trying factory[" + (index-1) + "] " + f.toString());
+                        Object service = f.create(key, this);
+                        if (service != null) {
+                            result = new CacheEntry(currentDescriptor, service);
+                            if (DEBUG) System.out.println(name + " factory supported: " + currentDescriptor + ", caching");
+                            break outer;
+                        } else {
+                            if (DEBUG) System.out.println("factory did not support: " + currentDescriptor);
+                        }
+                    }
+
+                    // prepare to load the cache with all additional ids that
+                    // will resolve to result, assuming we'll succeed.  We
+                    // don't want to keep querying on an id that's going to
+                    // fallback to the one that succeeded, we want to hit the
+                    // cache the first time next goaround.
+                    if (cacheDescriptorList == null) {
+                        cacheDescriptorList = new ArrayList(5);
+                    }
+                    cacheDescriptorList.add(currentDescriptor);
+
+                } while (key.fallback());
+
+                if (result != null) {
+                    if (putInCache) {
+                        if (DEBUG) System.out.println("caching '" + result.actualDescriptor + "'");
+                        cache.put(result.actualDescriptor, result);
+                        if (cacheDescriptorList != null) {
+                            Iterator iter = cacheDescriptorList.iterator();
+                            while (iter.hasNext()) {
+                                String desc = (String)iter.next();
+                                if (DEBUG) System.out.println(name + " adding descriptor: '" + desc + "' for actual: '" + result.actualDescriptor + "'");
+
+                                cache.put(desc, result);
+                            }
+                        }
+                        // Atomic update.  We held the read lock all this time
+                        // so we know our cache is consistent with the factory list.
+                        // We might stomp over a cache that some other thread
+                        // rebuilt, but that's the breaks.  They're both good.
+                        cacheref = cref;
+                    }
+
+                    if (actualReturn != null) {
+                        // strip null prefix
+                        if (result.actualDescriptor.indexOf("/") == 0) {
+                            actualReturn[0] = result.actualDescriptor.substring(1);
+                        } else {
+                            actualReturn[0] = result.actualDescriptor;
+                        }
+                    }
+
+                    if (DEBUG) System.out.println("found in service: " + name);
+
+                    return result.service;
+                }
+            }
+            finally {
+                factoryLock.releaseRead();
+            }
+        }
+
+        if (DEBUG) System.out.println("not found in service: " + name);
+
+        return handleDefault(key, actualReturn);
+    }
+    private SoftReference cacheref;
+
+    // Record the actual id for this service in the cache, so we can return it
+    // even if we succeed later with a different id.
+    private static final class CacheEntry {
+        final String actualDescriptor;
+        final Object service;
+        CacheEntry(String actualDescriptor, Object service) {
+            this.actualDescriptor = actualDescriptor;
+            this.service = service;
+        }
+    }
+
+
+    /**
+     * Default handler for this service if no factory in the list
+     * handled the key.
+     */
+    protected Object handleDefault(Key key, String[] actualIDReturn) {
+        return null;
+    }
+
+    /**
+     * Convenience override for getVisibleIDs(String) that passes null
+     * as the fallback, thus returning all visible IDs.
+     */
+    public Set getVisibleIDs() {
+        return getVisibleIDs(null);
+    }
+
+    /**
+     * <p>Return a snapshot of the visible IDs for this service.  This
+     * set will not change as Factories are added or removed, but the
+     * supported ids will, so there is no guarantee that all and only
+     * the ids in the returned set are visible and supported by the
+     * service in subsequent calls.</p>
+     *
+     * <p>matchID is passed to createKey to create a key.  If the
+     * key is not null, it is used to filter out ids that don't have
+     * the key as a fallback.
+     */
+    public Set getVisibleIDs(String matchID) {
+        Set result = getVisibleIDMap().keySet();
+
+        Key fallbackKey = createKey(matchID);
+
+        if (fallbackKey != null) {
+            Set temp = new HashSet(result.size());
+            Iterator iter = result.iterator();
+            while (iter.hasNext()) {
+                String id = (String)iter.next();
+                if (fallbackKey.isFallbackOf(id)) {
+                    temp.add(id);
+                }
+            }
+            result = temp;
+        }
+        return result;
+    }
+
+    /**
+     * Return a map from visible ids to factories.
+     */
+    private Map getVisibleIDMap() {
+        Map idcache = null;
+        SoftReference ref = idref;
+        if (ref != null) {
+            idcache = (Map)ref.get();
+        }
+        while (idcache == null) {
+            synchronized (this) { // or idref-only lock?
+                if (ref == idref || idref == null) {
+                    // no other thread updated idref before we got the lock, so
+                    // grab the factory list and update it ourselves
+                    try {
+                        factoryLock.acquireRead();
+                        idcache = new HashMap();
+                        ListIterator lIter = factories.listIterator(factories.size());
+                        while (lIter.hasPrevious()) {
+                            Factory f = (Factory)lIter.previous();
+                            f.updateVisibleIDs(idcache);
+                        }
+                        idcache = Collections.unmodifiableMap(idcache);
+                        idref = new SoftReference(idcache);
+                    }
+                    finally {
+                        factoryLock.releaseRead();
+                    }
+                } else {
+                    // another thread updated idref, but gc may have stepped
+                    // in and undone its work, leaving idcache null.  If so,
+                    // retry.
+                    ref = idref;
+                    idcache = (Map)ref.get();
+                }
+            }
+        }
+
+        return idcache;
+    }
+    private SoftReference idref;
+
+    /**
+     * Convenience override for getDisplayName(String, ULocale) that
+     * uses the current default locale.
+     */
+    public String getDisplayName(String id) {
+        return getDisplayName(id, ULocale.getDefault());
+    }
+
+    /**
+     * Given a visible id, return the display name in the requested locale.
+     * If there is no directly supported id corresponding to this id, return
+     * null.
+     */
+    public String getDisplayName(String id, ULocale locale) {
+        Map m = getVisibleIDMap();
+        Factory f = (Factory)m.get(id);
+        if (f != null) {
+            return f.getDisplayName(id, locale);
+        }
+
+        Key key = createKey(id);
+        while (key.fallback()) {
+            f = (Factory)m.get(key.currentID());
+            if (f != null) {
+                return f.getDisplayName(id, locale);
+            }
+        }
+        
+        return null;
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that 
+     * uses the current default Locale as the locale, null as
+     * the comparator, and null for the matchID.
+     */
+    public SortedMap getDisplayNames() {
+        ULocale locale = ULocale.getDefault();
+        return getDisplayNames(locale, null, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses null for the comparator, and null for the matchID.
+     */
+    public SortedMap getDisplayNames(ULocale locale) {
+        return getDisplayNames(locale, null, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses null for the matchID, thus returning all display names.
+     */
+    public SortedMap getDisplayNames(ULocale locale, Comparator com) {
+        return getDisplayNames(locale, com, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses null for the comparator.
+     */
+    public SortedMap getDisplayNames(ULocale locale, String matchID) {
+        return getDisplayNames(locale, null, matchID);
+    }
+
+    /**
+     * Return a snapshot of the mapping from display names to visible
+     * IDs for this service.  This set will not change as factories
+     * are added or removed, but the supported ids will, so there is
+     * no guarantee that all and only the ids in the returned map will
+     * be visible and supported by the service in subsequent calls,
+     * nor is there any guarantee that the current display names match
+     * those in the set.  The display names are sorted based on the
+     * comparator provided.
+     */
+    public SortedMap getDisplayNames(ULocale locale, Comparator com, String matchID) {
+        SortedMap dncache = null;
+        LocaleRef ref = dnref;
+
+        if (ref != null) {
+            dncache = ref.get(locale, com);
+        }
+
+        while (dncache == null) {
+            synchronized (this) {
+                if (ref == dnref || dnref == null) {
+                    dncache = new TreeMap(com); // sorted
+                    
+                    Map m = getVisibleIDMap();
+                    Iterator ei = m.entrySet().iterator();
+                    while (ei.hasNext()) {
+                        Entry e = (Entry)ei.next();
+                        String id = (String)e.getKey();
+                        Factory f = (Factory)e.getValue();
+                        dncache.put(f.getDisplayName(id, locale), id);
+                    }
+
+                    dncache = Collections.unmodifiableSortedMap(dncache);
+                    dnref = new LocaleRef(dncache, locale, com);
+                } else {
+                    ref = dnref;
+                    dncache = ref.get(locale, com);
+                }
+            }
+        }
+
+        Key matchKey = createKey(matchID);
+        if (matchKey == null) {
+            return dncache;
+        }
+
+        SortedMap result = new TreeMap(dncache);
+        Iterator iter = result.entrySet().iterator();
+        while (iter.hasNext()) {
+            Entry e = (Entry)iter.next();
+            if (!matchKey.isFallbackOf((String)e.getValue())) {
+                iter.remove();
+            }
+        }
+        return result;
+    }
+
+    // we define a class so we get atomic simultaneous access to the
+    // locale, comparator, and corresponding map.
+    private static class LocaleRef {
+        private final ULocale locale;
+        private SoftReference ref;
+        private Comparator com;
+
+        LocaleRef(Map dnCache, ULocale locale, Comparator com) {
+            this.locale = locale;
+            this.com = com;
+            this.ref = new SoftReference(dnCache);
+        }
+
+
+        SortedMap get(ULocale loc, Comparator comp) {
+            SortedMap m = (SortedMap)ref.get();
+            if (m != null &&
+                this.locale.equals(loc) &&
+                (this.com == comp || (this.com != null && this.com.equals(comp)))) {
+
+                return m;
+            }
+            return null;
+        }
+    }
+    private LocaleRef dnref;
+
+    /**
+     * Return a snapshot of the currently registered factories.  There
+     * is no guarantee that the list will still match the current
+     * factory list of the service subsequent to this call.
+     */
+    public final List factories() {
+        try {
+            factoryLock.acquireRead();
+            return new ArrayList(factories);
+        }
+        finally{
+            factoryLock.releaseRead();
+        }
+    }
+
+    /**
+     * A convenience override of registerObject(Object, String, boolean)
+     * that defaults visible to true.
+     */
+    public Factory registerObject(Object obj, String id) {
+        return registerObject(obj, id, true);
+    }
+
+    /**
+     * Register an object with the provided id.  The id will be
+     * canonicalized.  The canonicalized ID will be returned by
+     * getVisibleIDs if visible is true.
+     */
+    public Factory registerObject(Object obj, String id, boolean visible) {
+        String canonicalID = createKey(id).canonicalID();
+        return registerFactory(new SimpleFactory(obj, canonicalID, visible));
+    }
+
+    /**
+     * Register a Factory.  Returns the factory if the service accepts
+     * the factory, otherwise returns null.  The default implementation
+     * accepts all factories.
+     */
+    public final Factory registerFactory(Factory factory) {
+        if (factory == null) {
+            throw new NullPointerException();
+        }
+        try {
+            factoryLock.acquireWrite();
+            factories.add(0, factory);
+            clearCaches();
+        }
+        finally {
+            factoryLock.releaseWrite();
+        }
+        notifyChanged();
+        return factory;
+    }
+
+    /**
+     * Unregister a factory.  The first matching registered factory will
+     * be removed from the list.  Returns true if a matching factory was
+     * removed.
+     */
+    public final boolean unregisterFactory(Factory factory) {
+        if (factory == null) {
+            throw new NullPointerException();
+        }
+
+        boolean result = false;
+        try {
+            factoryLock.acquireWrite();
+            if (factories.remove(factory)) {
+                result = true;
+                clearCaches();
+            }
+        }
+        finally {
+            factoryLock.releaseWrite();
+        }
+
+        if (result) {
+            notifyChanged();
+        }
+        return result;
+    }
+
+    /**
+     * Reset the service to the default factories.  The factory
+     * lock is acquired and then reInitializeFactories is called.
+     */
+    public final void reset() {
+        try {
+            factoryLock.acquireWrite();
+            reInitializeFactories();
+            clearCaches();
+        }
+        finally {
+            factoryLock.releaseWrite();
+        }
+        notifyChanged();
+    }
+
+    /**
+     * Reinitialize the factory list to its default state.  By default
+     * this clears the list.  Subclasses can override to provide other
+     * default initialization of the factory list.  Subclasses must
+     * not call this method directly, as it must only be called while
+     * holding write access to the factory list.
+     */
+    protected void reInitializeFactories() {
+        factories.clear();
+    }
+
+    /**
+     * Return true if the service is in its default state.  The default
+     * implementation returns true if there are no factories registered.
+     */
+    public boolean isDefault() {
+        return factories.size() == defaultSize;
+    }
+
+    /**
+     * Set the default size to the current number of registered factories.
+     * Used by subclasses to customize the behavior of isDefault.
+     */
+    protected void markDefault() {
+        defaultSize = factories.size();
+    }
+
+    /**
+     * Create a key from an id.  This creates a Key instance.
+     * Subclasses can override to define more useful keys appropriate
+     * to the factories they accept.  If id is null, returns null.
+     */
+    public Key createKey(String id) {
+        return id == null ? null : new Key(id);
+    }
+
+    /**
+     * Clear caches maintained by this service.  Subclasses can
+     * override if they implement additional that need to be cleared
+     * when the service changes. Subclasses should generally not call
+     * this method directly, as it must only be called while
+     * synchronized on this.
+     */
+    protected void clearCaches() {
+        // we don't synchronize on these because methods that use them
+        // copy before use, and check for changes if they modify the
+        // caches.
+        cacheref = null;
+        idref = null;
+        dnref = null;
+    }
+
+    /**
+     * Clears only the service cache.
+     * This can be called by subclasses when a change affects the service
+     * cache but not the id caches, e.g., when the default locale changes
+     * the resolution of ids changes, but not the visible ids themselves.
+     */
+    protected void clearServiceCache() {
+        cacheref = null;
+    }
+
+    /**
+     * ServiceListener is the listener that ICUService provides by default.
+     * ICUService will notifiy this listener when factories are added to
+     * or removed from the service.  Subclasses can provide
+     * different listener interfaces that extend EventListener, and modify
+     * acceptsListener and notifyListener as appropriate.
+     */
+    public static interface ServiceListener extends EventListener {
+        public void serviceChanged(ICUService service);
+    }
+
+    /**
+     * Return true if the listener is accepted; by default this
+     * requires a ServiceListener.  Subclasses can override to accept
+     * different listeners.
+     */
+    protected boolean acceptsListener(EventListener l) {
+        return l instanceof ServiceListener;
+    }
+
+    /**
+     * Notify the listener, which by default is a ServiceListener.
+     * Subclasses can override to use a different listener.
+     */
+    protected void notifyListener(EventListener l) {
+        ((ServiceListener)l).serviceChanged(this);
+    }
+
+    /**
+     * Return a string describing the statistics for this service.
+     * This also resets the statistics. Used for debugging purposes.
+     */
+    public String stats() {
+        ICURWLock.Stats stats = factoryLock.resetStats();
+        if (stats != null) {
+            return stats.toString();
+        }
+        return "no stats";
+    }
+
+    /**
+     * Return the name of this service. This will be the empty string if none was assigned.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Returns the result of super.toString, appending the name in curly braces.
+     */
+    public String toString() {
+        return super.toString() + "{" + name + "}";
+    }
+}
diff --git a/src/com/ibm/icu/impl/ImplicitCEGenerator.java b/src/com/ibm/icu/impl/ImplicitCEGenerator.java
new file mode 100644
index 0000000..80b5926
--- /dev/null
+++ b/src/com/ibm/icu/impl/ImplicitCEGenerator.java
@@ -0,0 +1,389 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2006, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+/**
+ * For generation of Implicit CEs
+ * @author Mark Davis
+ *
+ * Cleaned up so that changes can be made more easily.
+ * Old values:
+# First Implicit: E26A792D
+# Last Implicit: E3DC70C0
+# First CJK: E0030300
+# Last CJK: E0A9DD00
+# First CJK_A: E0A9DF00
+# Last CJK_A: E0DE3100
+@internal
+ */
+public class ImplicitCEGenerator {
+    
+    /**
+     * constants
+     */
+    static final boolean DEBUG = false;
+    
+    static final long topByte = 0xFF000000L;
+    static final long bottomByte = 0xFFL;
+    static final long fourBytes = 0xFFFFFFFFL;
+    
+    static final int MAX_INPUT = 0x220001; // 2 * Unicode range + 2
+
+    public static final int CJK_BASE = 0x4E00;
+    public static final int CJK_LIMIT = 0x9FFF+1;
+    public static final int CJK_COMPAT_USED_BASE = 0xFA0E;
+    public static final int CJK_COMPAT_USED_LIMIT = 0xFA2F+1;
+    public static final int CJK_A_BASE = 0x3400;
+    public static final int CJK_A_LIMIT = 0x4DBF+1;
+    public static final int CJK_B_BASE = 0x20000;
+    public static final int CJK_B_LIMIT = 0x2A6DF+1;
+    
+//    private void throwError(String title, int cp) {
+//        throw new IllegalArgumentException(title + "\t" + Utility.hex(cp, 6) + "\t" + 
+//                                           Utility.hex(getImplicitFromRaw(cp) & fourBytes));
+//    }
+//
+//    private void throwError(String title, long ce) {
+//        throw new IllegalArgumentException(title + "\t" + Utility.hex(ce & fourBytes));
+//    }
+//
+//    private void show(int i) {
+//        if (i >= 0 && i <= MAX_INPUT) {
+//            System.out.println(Utility.hex(i) + "\t" + Utility.hex(getImplicitFromRaw(i) & fourBytes));
+//        } 
+//    }
+    
+    /**
+     * Precomputed by constructor
+     */
+    int final3Multiplier;
+    int final4Multiplier;
+    int final3Count;
+    int final4Count;
+    int medialCount;
+    int min3Primary;
+    int min4Primary;
+    int max4Primary;
+    int minTrail;
+    int maxTrail;
+    int max3Trail;
+    int max4Trail;
+    int min4Boundary;
+    
+    public int getGap4() {
+        return final4Multiplier - 1;
+    }
+    
+    public int getGap3() {
+        return final3Multiplier - 1;
+    }
+    
+    // old comment
+    // we must skip all 00, 01, 02, FF bytes, so most bytes have 252 values
+    // we must leave a gap of 01 between all values of the last byte, so the last byte has 126 values (3 byte case)
+    // we shift so that HAN all has the same first primary, for compression.
+    // for the 4 byte case, we make the gap as large as we can fit.
+
+    /**
+     * Supply parameters for generating implicit CEs
+     */
+    public ImplicitCEGenerator(int minPrimary, int maxPrimary) {
+        // 13 is the largest 4-byte gap we can use without getting 2 four-byte forms.
+        this(minPrimary, maxPrimary, 0x04, 0xFE, 1, 1);
+    }
+    
+    /**
+     * Set up to generate implicits.
+     * @param minPrimary
+     * @param maxPrimary
+     * @param minTrail final byte
+     * @param maxTrail final byte
+     * @param gap3 the gap we leave for tailoring for 3-byte forms
+     * @param primaries3count number of 3-byte primarys we can use (normally 1)
+     */
+    public ImplicitCEGenerator(int minPrimary, int maxPrimary, int minTrail, int maxTrail, int gap3, int primaries3count) {
+        // some simple parameter checks
+        if (minPrimary < 0 || minPrimary >= maxPrimary || maxPrimary > 0xFF) {
+            throw new IllegalArgumentException("bad lead bytes");
+        }
+        if (minTrail < 0 || minTrail >= maxTrail || maxTrail > 0xFF) {
+            throw new IllegalArgumentException("bad trail bytes");
+        }
+        if (primaries3count < 1) {
+            throw new IllegalArgumentException("bad three-byte primaries");
+        }
+        
+        this.minTrail = minTrail;
+        this.maxTrail = maxTrail;
+        
+        min3Primary = minPrimary;
+        max4Primary = maxPrimary;
+        // compute constants for use later.
+        // number of values we can use in trailing bytes
+        // leave room for empty values between AND above, e.g. if gap = 2
+        // range 3..7 => +3 -4 -5 -6 -7: so 1 value
+        // range 3..8 => +3 -4 -5 +6 -7 -8: so 2 values
+        // range 3..9 => +3 -4 -5 +6 -7 -8 -9: so 2 values
+        final3Multiplier = gap3 + 1;
+        final3Count = (maxTrail - minTrail + 1) / final3Multiplier;
+        max3Trail = minTrail + (final3Count - 1) * final3Multiplier;
+        
+        // medials can use full range
+        medialCount = (maxTrail - minTrail + 1);
+        // find out how many values fit in each form
+        int threeByteCount = medialCount * final3Count;
+        // now determine where the 3/4 boundary is.
+        // we use 3 bytes below the boundary, and 4 above
+        int primariesAvailable = maxPrimary - minPrimary + 1;
+        int primaries4count = primariesAvailable - primaries3count;        
+        
+        int min3ByteCoverage = primaries3count * threeByteCount;
+        min4Primary = minPrimary + primaries3count;
+        min4Boundary = min3ByteCoverage;
+        // Now expand out the multiplier for the 4 bytes, and redo.
+ 
+        int totalNeeded = MAX_INPUT - min4Boundary;
+        int neededPerPrimaryByte = divideAndRoundUp(totalNeeded, primaries4count);
+        if (DEBUG) System.out.println("neededPerPrimaryByte: " + neededPerPrimaryByte);
+        
+        int neededPerFinalByte = divideAndRoundUp(neededPerPrimaryByte, medialCount * medialCount);
+        if (DEBUG) System.out.println("neededPerFinalByte: " + neededPerFinalByte);
+        
+        int gap4 = (maxTrail - minTrail - 1) / neededPerFinalByte;
+        if (DEBUG) System.out.println("expandedGap: " + gap4);
+        if (gap4 < 1) throw new IllegalArgumentException("must have larger gap4s");
+        
+        final4Multiplier = gap4 + 1;
+        final4Count = neededPerFinalByte;
+        max4Trail = minTrail + (final4Count - 1) * final4Multiplier;
+        
+        if (primaries4count * medialCount * medialCount * final4Count < MAX_INPUT) {
+            throw new IllegalArgumentException("internal error");
+        } 
+        if (DEBUG) {
+            System.out.println("final4Count: " + final4Count);
+            for (int counter = 0; counter < final4Count; ++counter) {
+                int value = minTrail + (1 + counter)*final4Multiplier;
+                System.out.println(counter + "\t" + value + "\t" + Utility.hex(value));
+            }
+        }
+    }
+    
+    static public int divideAndRoundUp(int a, int b) {
+        return 1 + (a-1)/b;
+    }
+
+    /**
+     * Converts implicit CE into raw integer
+     * @param implicit
+     * @return -1 if illegal format
+     */
+    public int getRawFromImplicit(int implicit) {
+        int result;
+        int b3 = implicit & 0xFF;
+        implicit >>= 8;
+        int b2 = implicit & 0xFF;
+        implicit >>= 8;
+        int b1 = implicit & 0xFF;
+        implicit >>= 8;
+        int b0 = implicit & 0xFF;
+
+        // simple parameter checks
+        if (b0 < min3Primary || b0 > max4Primary
+            || b1 < minTrail || b1 > maxTrail) return -1;
+        // normal offsets
+        b1 -= minTrail;
+
+        // take care of the final values, and compose
+        if (b0 < min4Primary) {
+            if (b2 < minTrail || b2 > max3Trail || b3 != 0) return -1;
+            b2 -= minTrail;
+            int remainder = b2 % final3Multiplier;
+            if (remainder != 0) return -1;
+            b0 -= min3Primary;
+            b2 /= final3Multiplier;
+            result = ((b0 * medialCount) + b1) * final3Count + b2;
+        } else {
+            if (b2 < minTrail || b2 > maxTrail
+                || b3 < minTrail || b3 > max4Trail) return -1;
+            b2 -= minTrail;
+            b3 -= minTrail;
+            int remainder = b3 % final4Multiplier;
+            if (remainder != 0) return -1;
+            b3 /= final4Multiplier;
+            b0 -= min4Primary;
+            result = (((b0 * medialCount) + b1) * medialCount + b2) * final4Count + b3 + min4Boundary;
+        }
+        // final check
+        if (result < 0 || result > MAX_INPUT) return -1;
+        return result;
+    }
+    
+    /**
+     * Generate the implicit CE, from raw integer.
+     * Left shifted to put the first byte at the top of an int.
+     * @param cp code point
+     * @return Primary implicit weight
+     */
+    public int getImplicitFromRaw(int cp) {
+        if (cp < 0 || cp > MAX_INPUT) {
+            throw new IllegalArgumentException("Code point out of range " + Utility.hex(cp));
+        }
+        int last0 = cp - min4Boundary;
+        if (last0 < 0) {
+            int last1 = cp / final3Count;
+            last0 = cp % final3Count;
+                        
+            int last2 = last1 / medialCount;
+            last1 %= medialCount;
+            
+            last0 = minTrail + last0*final3Multiplier; // spread out, leaving gap at start
+            last1 = minTrail + last1; // offset
+            last2 = min3Primary + last2; // offset
+            
+            if (last2 >= min4Primary) {
+                throw new IllegalArgumentException("4-byte out of range: " + 
+                                                   Utility.hex(cp) + ", " + Utility.hex(last2));
+            } 
+            
+            return (last2 << 24) + (last1 << 16) + (last0 << 8);
+        } else {
+            int last1 = last0 / final4Count;
+            last0 %= final4Count;
+            
+            int last2 = last1 / medialCount;
+            last1 %= medialCount;
+            
+            int last3 = last2 / medialCount;
+            last2 %= medialCount;
+            
+            last0 = minTrail + last0*final4Multiplier; // spread out, leaving gap at start           
+            last1 = minTrail + last1; // offset
+            last2 = minTrail + last2; // offset
+            last3 = min4Primary + last3; // offset
+            
+            if (last3 > max4Primary) {
+                throw new IllegalArgumentException("4-byte out of range: " + 
+                                                   Utility.hex(cp) + ", " + Utility.hex(last3));
+            } 
+            
+            return (last3 << 24) + (last2 << 16) + (last1 << 8) + last0;
+        }
+    }
+
+    /**
+     * Gets an Implicit from a code point. Internally, 
+     * swaps (which produces a raw value 0..220000, 
+     * then converts raw to implicit.
+     * @param cp
+     * @return Primary implicit weight
+     */
+    public int getImplicitFromCodePoint(int cp) {
+        if (DEBUG) System.out.println("Incoming: " + Utility.hex(cp));
+        
+        // Produce Raw value
+        // note, we add 1 so that the first value is always empty!!
+        cp = ImplicitCEGenerator.swapCJK(cp) + 1;
+        // we now have a range of numbers from 0 to 220000.
+            
+        if (DEBUG) System.out.println("CJK swapped: " + Utility.hex(cp));
+            
+        return getImplicitFromRaw(cp);
+    }
+
+    /**
+     * Function used to: 
+     * a) collapse the 2 different Han ranges from UCA into one (in the right order), and
+     * b) bump any non-CJK characters by 10FFFF.
+     * The relevant blocks are:
+     * A:    4E00..9FFF; CJK Unified Ideographs
+     *       F900..FAFF; CJK Compatibility Ideographs
+     * B:    3400..4DBF; CJK Unified Ideographs Extension A
+     *       20000..XX;  CJK Unified Ideographs Extension B (and others later on)
+     * As long as
+     *   no new B characters are allocated between 4E00 and FAFF, and
+     *   no new A characters are outside of this range,
+     * (very high probability) this simple code will work.
+     * The reordered blocks are:
+     * Block1 is CJK
+     * Block2 is CJK_COMPAT_USED
+     * Block3 is CJK_A
+     * (all contiguous)
+     * Any other CJK gets its normal code point
+     * Any non-CJK gets +10FFFF
+     * When we reorder Block1, we make sure that it is at the very start,
+     * so that it will use a 3-byte form.
+     * Warning: the we only pick up the compatibility characters that are
+     * NOT decomposed, so that block is smaller!
+     */
+    
+    static int NON_CJK_OFFSET = 0x110000;
+        
+    static int swapCJK(int i) {
+        
+        if (i >= CJK_BASE) {
+            if (i < CJK_LIMIT)              return i - CJK_BASE;
+            
+            if (i < CJK_COMPAT_USED_BASE)   return i + NON_CJK_OFFSET;
+            
+            if (i < CJK_COMPAT_USED_LIMIT)  return i - CJK_COMPAT_USED_BASE
+                                                + (CJK_LIMIT - CJK_BASE);
+            if (i < CJK_B_BASE)             return i + NON_CJK_OFFSET;
+            
+            if (i < CJK_B_LIMIT)            return i; // non-BMP-CJK
+            
+            return i + NON_CJK_OFFSET;  // non-CJK
+        }
+        if (i < CJK_A_BASE)                 return i + NON_CJK_OFFSET;
+        
+        if (i < CJK_A_LIMIT)                return i - CJK_A_BASE
+                                                + (CJK_LIMIT - CJK_BASE) 
+                                                + (CJK_COMPAT_USED_LIMIT - CJK_COMPAT_USED_BASE);
+        return i + NON_CJK_OFFSET; // non-CJK
+    }
+    
+
+    /**
+     * @return Minimal trail value
+     */
+    public int getMinTrail() {
+        return minTrail;
+    }
+
+    /**
+     * @return Maximal trail value
+     */
+    public int getMaxTrail() {
+        return maxTrail;
+    }
+    
+    public int getCodePointFromRaw(int i) {
+        i--;
+        int result = 0;
+        if(i >= NON_CJK_OFFSET) {
+            result = i - NON_CJK_OFFSET;
+        } else if(i >= CJK_B_BASE) {
+            result = i;
+        } else if(i < CJK_A_LIMIT + (CJK_LIMIT - CJK_BASE) + (CJK_COMPAT_USED_LIMIT - CJK_COMPAT_USED_BASE)) { 
+            // rest of CJKs, compacted
+            if(i < CJK_LIMIT - CJK_BASE) {
+                result = i + CJK_BASE;
+            } else if(i < (CJK_LIMIT - CJK_BASE) + (CJK_COMPAT_USED_LIMIT - CJK_COMPAT_USED_BASE)) {
+                result = i + CJK_COMPAT_USED_BASE - (CJK_LIMIT - CJK_BASE);
+            } else {
+                result = i + CJK_A_BASE - (CJK_LIMIT - CJK_BASE) - (CJK_COMPAT_USED_LIMIT - CJK_COMPAT_USED_BASE);
+            }
+        } else {
+            result = -1;
+        }
+        return result;
+    }
+
+    public int getRawFromCodePoint(int i) {
+        return swapCJK(i)+1;
+    }
+}
diff --git a/src/com/ibm/icu/impl/IntTrie.java b/src/com/ibm/icu/impl/IntTrie.java
new file mode 100644
index 0000000..d0ee7ca
--- /dev/null
+++ b/src/com/ibm/icu/impl/IntTrie.java
@@ -0,0 +1,331 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Trie implementation which stores data in int, 32 bits.
+ * @author synwee
+ * @see com.ibm.icu.impl.Trie
+ * @since release 2.1, Jan 01 2002
+ */
+public class IntTrie extends Trie
+{
+    // public constructors ---------------------------------------------
+
+    /**
+    * <p>Creates a new Trie with the settings for the trie data.</p>
+    * <p>Unserialize the 32-bit-aligned input stream and use the data for the 
+    * trie.</p>
+    * @param inputStream file input stream to a ICU data file, containing 
+    *                    the trie
+    * @param dataManipulate object which provides methods to parse the char 
+    *                        data
+    * @throws IOException thrown when data reading fails
+    */
+    public IntTrie(InputStream inputStream, DataManipulate dataManipulate)
+                                                    throws IOException
+    {
+        super(inputStream, dataManipulate);
+        if (!isIntTrie()) {
+            throw new IllegalArgumentException(
+                               "Data given does not belong to a int trie.");
+        }
+    }
+
+    /**
+     * Make a dummy IntTrie.
+     * A dummy trie is an empty runtime trie, used when a real data trie cannot
+     * be loaded.
+     *
+     * The trie always returns the initialValue,
+     * or the leadUnitValue for lead surrogate code points.
+     * The Latin-1 part is always set up to be linear.
+     *
+     * @param initialValue the initial value that is set for all code points
+     * @param leadUnitValue the value for lead surrogate code _units_ that do not
+     *                      have associated supplementary data
+     * @param dataManipulate object which provides methods to parse the char data
+     */
+    public IntTrie(int initialValue, int leadUnitValue, DataManipulate dataManipulate) {
+        super(new char[BMP_INDEX_LENGTH+SURROGATE_BLOCK_COUNT], HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_, dataManipulate);
+
+        int dataLength, latin1Length, i, limit;
+        char block;
+
+        /* calculate the actual size of the dummy trie data */
+
+        /* max(Latin-1, block 0) */
+        dataLength=latin1Length= INDEX_STAGE_1_SHIFT_<=8 ? 256 : DATA_BLOCK_LENGTH;
+        if(leadUnitValue!=initialValue) {
+            dataLength+=DATA_BLOCK_LENGTH;
+        }
+        m_data_=new int[dataLength];
+        m_dataLength_=dataLength;
+
+        m_initialValue_=initialValue;
+
+        /* fill the index and data arrays */
+
+        /* indexes are preset to 0 (block 0) */
+
+        /* Latin-1 data */
+        for(i=0; i<latin1Length; ++i) {
+            m_data_[i]=initialValue;
+        }
+
+        if(leadUnitValue!=initialValue) {
+            /* indexes for lead surrogate code units to the block after Latin-1 */
+            block=(char)(latin1Length>>INDEX_STAGE_2_SHIFT_);
+            i=0xd800>>INDEX_STAGE_1_SHIFT_;
+            limit=0xdc00>>INDEX_STAGE_1_SHIFT_;
+            for(; i<limit; ++i) {
+                m_index_[i]=block;
+            }
+
+            /* data for lead surrogate code units */
+            limit=latin1Length+DATA_BLOCK_LENGTH;
+            for(i=latin1Length; i<limit; ++i) {
+                m_data_[i]=leadUnitValue;
+            }
+        }
+    }
+
+    // public methods --------------------------------------------------
+
+    /**
+    * Gets the value associated with the codepoint.
+    * If no value is associated with the codepoint, a default value will be
+    * returned.
+    * @param ch codepoint
+    * @return offset to data
+    */
+    public final int getCodePointValue(int ch)
+    {
+        int offset;
+
+        // fastpath for U+0000..U+D7FF
+        if(0 <= ch && ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            // copy of getRawOffset()
+            offset = (m_index_[ch >> INDEX_STAGE_1_SHIFT_] << INDEX_STAGE_2_SHIFT_) 
+                    + (ch & INDEX_STAGE_3_MASK_);
+            return m_data_[offset];
+        }
+
+        // handle U+D800..U+10FFFF
+        offset = getCodePointOffset(ch);
+        return (offset >= 0) ? m_data_[offset] : m_initialValue_;
+    }
+
+    /**
+    * Gets the value to the data which this lead surrogate character points
+    * to.
+    * Returned data may contain folding offset information for the next
+    * trailing surrogate character.
+    * This method does not guarantee correct results for trail surrogates.
+    * @param ch lead surrogate character
+    * @return data value
+    */
+    public final int getLeadValue(char ch)
+    {
+        return m_data_[getLeadOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with the BMP code point.
+    * Lead surrogate code points are treated as normal code points, with
+    * unfolded values that may differ from getLeadValue() results.
+    * @param ch the input BMP code point
+    * @return trie data value associated with the BMP codepoint
+    */
+    public final int getBMPValue(char ch)
+    {
+        return m_data_[getBMPOffset(ch)];
+    }
+
+    /**
+    * Get the value associated with a pair of surrogates.
+    * @param lead a lead surrogate
+    * @param trail a trail surrogate
+    */
+    public final int getSurrogateValue(char lead, char trail)
+    {
+        if (!UTF16.isLeadSurrogate(lead) || !UTF16.isTrailSurrogate(trail)) {
+            throw new IllegalArgumentException(
+                "Argument characters do not form a supplementary character");
+        }
+        // get fold position for the next trail surrogate
+        int offset = getSurrogateOffset(lead, trail);
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return m_data_[offset];
+        }
+
+        // return m_initialValue_ if there is an error
+        return m_initialValue_;
+    }
+
+    /**
+    * Get a value from a folding offset (from the value of a lead surrogate)
+    * and a trail surrogate.
+    * @param leadvalue the value of a lead surrogate that contains the
+    *        folding offset
+    * @param trail surrogate
+    * @return trie data value associated with the trail character
+    */
+    public final int getTrailValue(int leadvalue, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        int offset = m_dataManipulate_.getFoldingOffset(leadvalue);
+        if (offset > 0) {
+            return m_data_[getRawOffset(offset,
+                                         (char)(trail & SURROGATE_MASK_))];
+        }
+        return m_initialValue_;
+    }
+    
+    /**
+     * <p>Gets the latin 1 fast path value.</p>
+     * <p>Note this only works if latin 1 characters have their own linear 
+     * array.</p>
+     * @param ch latin 1 characters
+     * @return value associated with latin character
+     */
+    public final int getLatin1LinearValue(char ch) 
+    {
+        return m_data_[INDEX_STAGE_3_MASK_ + 1 + ch];
+    }
+
+    /**
+     * Checks if the argument Trie has the same data as this Trie
+     * @param other Trie to check
+     * @return true if the argument Trie has the same data as this Trie, false
+     *         otherwise
+     */
+    ///CLOVER:OFF
+    public boolean equals(Object other) 
+    {
+        boolean result = super.equals(other);
+        if (result && other instanceof IntTrie) {
+            IntTrie othertrie = (IntTrie)other;
+            if (m_initialValue_ != othertrie.m_initialValue_
+                || !Arrays.equals(m_data_, othertrie.m_data_)) {
+                return false;
+            }
+            return true;
+        }
+        return false;
+    }
+    ///CLOVER:ON
+    
+    // protected methods -----------------------------------------------
+
+    /**
+    * <p>Parses the input stream and stores its trie content into a index and
+    * data array</p>
+    * @param inputStream data input stream containing trie data
+    * @exception IOException thrown when data reading fails
+    */
+    protected final void unserialize(InputStream inputStream) 
+                                                    throws IOException
+    {
+        super.unserialize(inputStream);
+        // one used for initial value
+        m_data_               = new int[m_dataLength_];
+        DataInputStream input = new DataInputStream(inputStream);
+        for (int i = 0; i < m_dataLength_; i ++) {
+            m_data_[i] = input.readInt();
+        }
+        m_initialValue_ = m_data_[0];
+    }
+    
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    */
+    protected final int getSurrogateOffset(char lead, char trail)
+    {
+        if (m_dataManipulate_ == null) {
+            throw new NullPointerException(
+                             "The field DataManipulate in this Trie is null");
+        }
+        // get fold position for the next trail surrogate
+        int offset = m_dataManipulate_.getFoldingOffset(getLeadValue(lead));
+
+        // get the real data from the folded lead/trail units
+        if (offset > 0) {
+            return getRawOffset(offset, (char)(trail & SURROGATE_MASK_));
+        }
+
+        // return -1 if there is an error, in this case we return the default
+        // value: m_initialValue_
+        return -1;
+    }
+    
+    /**
+    * Gets the value at the argument index.
+    * For use internally in TrieIterator
+    * @param index value at index will be retrieved
+    * @return 32 bit value
+    * @see com.ibm.icu.impl.TrieIterator
+    */
+    protected final int getValue(int index)
+    {
+      return m_data_[index];
+    }
+    
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    */
+    protected final int getInitialValue()
+    {
+        return m_initialValue_;
+    }
+
+    // package private methods -----------------------------------------
+    
+    /**
+     * Internal constructor for builder use
+     * @param index the index array to be slotted into this trie
+     * @param data the data array to be slotted into this trie
+     * @param initialvalue the initial value for this trie
+     * @param options trie options to use
+     * @param datamanipulate folding implementation
+     */
+    IntTrie(char index[], int data[], int initialvalue, int options,
+            DataManipulate datamanipulate)
+    {
+        super(index, options, datamanipulate);
+        m_data_ = data;
+        m_dataLength_ = m_data_.length;
+        m_initialValue_ = initialvalue;
+    }
+    
+    // private data members --------------------------------------------
+
+    /**
+    * Default value
+    */
+    private int m_initialValue_;
+    /**
+    * Array of char data
+    */
+    private int m_data_[];
+}
diff --git a/src/com/ibm/icu/impl/IntTrieBuilder.java b/src/com/ibm/icu/impl/IntTrieBuilder.java
new file mode 100644
index 0000000..25fc349
--- /dev/null
+++ b/src/com/ibm/icu/impl/IntTrieBuilder.java
@@ -0,0 +1,791 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import java.util.Arrays;
+import java.io.OutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+
+/**
+ * Builder class to manipulate and generate a trie.
+ * This is useful for ICU data in primitive types.
+ * Provides a compact way to store information that is indexed by Unicode 
+ * values, such as character properties, types, keyboard values, etc. This is 
+ * very useful when you have a block of Unicode data that contains significant 
+ * values while the rest of the Unicode data is unused in the application or 
+ * when you have a lot of redundance, such as where all 21,000 Han ideographs 
+ * have the same value.  However, lookup is much faster than a hash table.
+ * A trie of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * This is a direct port from the ICU4C version
+ * @author             Syn Wee Quek
+ */
+public class IntTrieBuilder extends TrieBuilder
+{
+    // public constructor ----------------------------------------------
+                
+    /**
+     * Copy constructor
+     */
+    public IntTrieBuilder(IntTrieBuilder table)
+    {
+        super(table);
+        m_data_ = new int[m_dataCapacity_];
+        System.arraycopy(table.m_data_, 0, m_data_, 0, m_dataLength_);
+        m_initialValue_ = table.m_initialValue_;
+        m_leadUnitValue_ = table.m_leadUnitValue_;
+    }
+    
+    /**
+     * Constructs a build table
+     * @param aliasdata data to be filled into table
+     * @param maxdatalength maximum data length allowed in table
+     * @param initialvalue inital data value
+     * @param latin1linear is latin 1 to be linear
+     */
+    public IntTrieBuilder(int aliasdata[], int maxdatalength, 
+                          int initialvalue, int leadunitvalue, 
+                          boolean latin1linear) 
+    {
+        super();
+        if (maxdatalength < DATA_BLOCK_LENGTH || (latin1linear 
+                                                  && maxdatalength < 1024)) {
+            throw new IllegalArgumentException(
+                                               "Argument maxdatalength is too small");
+        }
+            
+        if (aliasdata != null) {
+            m_data_ = aliasdata;
+        } 
+        else {
+            m_data_ = new int[maxdatalength];
+        }
+        
+        // preallocate and reset the first data block (block index 0)
+        int j = DATA_BLOCK_LENGTH;
+        
+        if (latin1linear) {
+            // preallocate and reset the first block (number 0) and Latin-1 
+            // (U+0000..U+00ff) after that made sure above that 
+            // maxDataLength >= 1024
+            // set indexes to point to consecutive data blocks
+            int i = 0;
+            do {
+                // do this at least for trie->index[0] even if that block is 
+                // only partly used for Latin-1
+                m_index_[i ++] = j;
+                j += DATA_BLOCK_LENGTH;
+            } while (i < (256 >> SHIFT_));
+        }
+        
+        m_dataLength_ = j;
+        // reset the initially allocated blocks to the initial value
+        Arrays.fill(m_data_, 0, m_dataLength_, initialvalue);
+        m_initialValue_ = initialvalue;
+        m_leadUnitValue_ = leadunitvalue;
+        m_dataCapacity_ = maxdatalength;
+        m_isLatin1Linear_ = latin1linear;
+        m_isCompacted_ = false;
+    }
+
+    // public methods -------------------------------------------------------
+     
+    /*public final void print()
+      {
+      int i = 0;
+      int oldvalue = m_index_[i];
+      int count = 0;
+      System.out.println("index length " + m_indexLength_ 
+      + " --------------------------");
+      while (i < m_indexLength_) {
+      if (m_index_[i] != oldvalue) {
+      System.out.println("index has " + count + " counts of " 
+      + Integer.toHexString(oldvalue));
+      count = 0;
+      oldvalue = m_index_[i];
+      }
+      count ++;
+      i ++;
+      }
+      System.out.println("index has " + count + " counts of " 
+      + Integer.toHexString(oldvalue));
+      i = 0;
+      oldvalue = m_data_[i];
+      count = 0;
+      System.out.println("data length " + m_dataLength_ 
+      + " --------------------------");
+      while (i < m_dataLength_) {
+      if (m_data_[i] != oldvalue) {
+      if ((oldvalue & 0xf1000000) == 0xf1000000) {
+      int temp = oldvalue & 0xffffff; 
+      temp += 0x320;
+      oldvalue = 0xf1000000 | temp;
+      }
+      if ((oldvalue & 0xf2000000) == 0xf2000000) {
+      int temp = oldvalue & 0xffffff; 
+      temp += 0x14a;
+      oldvalue = 0xf2000000 | temp;
+      }
+      System.out.println("data has " + count + " counts of " 
+      + Integer.toHexString(oldvalue));
+      count = 0;
+      oldvalue = m_data_[i];
+      }
+      count ++;
+      i ++;
+      }
+      if ((oldvalue & 0xf1000000) == 0xf1000000) {
+      int temp = oldvalue & 0xffffff; 
+      temp += 0x320;
+      oldvalue = 0xf1000000 | temp;
+      }
+      if ((oldvalue & 0xf2000000) == 0xf2000000) {
+      int temp = oldvalue & 0xffffff; 
+      temp += 0x14a;
+      oldvalue = 0xf2000000 | temp;
+      }
+      System.out.println("data has " + count + " counts of " 
+      + Integer.toHexString(oldvalue));
+      }
+    */   
+    /**
+     * Gets a 32 bit data from the table data
+     * @param ch codepoint which data is to be retrieved
+     * @return the 32 bit data
+     */
+    public int getValue(int ch) 
+    {
+        // valid, uncompacted trie and valid c?
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE || ch < 0) {
+            return 0;
+        }
+    
+        int block = m_index_[ch >> SHIFT_];
+        return m_data_[Math.abs(block) + (ch & MASK_)];
+    }
+    
+    /**
+     * Get a 32 bit data from the table data
+     * @param ch  code point for which data is to be retrieved.
+     * @param inBlockZero  Output parameter, inBlockZero[0] returns true if the
+     *                      char maps into block zero, otherwise false.
+     * @return the 32 bit data value.
+     */
+    public int getValue(int ch, boolean [] inBlockZero) 
+    {
+        // valid, uncompacted trie and valid c?
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE || ch < 0) {
+            if (inBlockZero != null) {
+                inBlockZero[0] = true;
+            }
+            return 0;
+        }
+    
+        int block = m_index_[ch >> SHIFT_];
+        if (inBlockZero != null) {
+            inBlockZero[0] = (block == 0);
+        }
+        return m_data_[Math.abs(block) + (ch & MASK_)];
+    }
+    
+    
+    /**
+     * Sets a 32 bit data in the table data
+     * @param ch codepoint which data is to be set
+     * @param value to set
+     * @return true if the set is successful, otherwise 
+     *              if the table has been compacted return false
+     */
+    public boolean setValue(int ch, int value) 
+    {
+        // valid, uncompacted trie and valid c? 
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE || ch < 0) {
+            return false;
+        }
+    
+        int block = getDataBlock(ch);
+        if (block < 0) {
+            return false;
+        }
+    
+        m_data_[block + (ch & MASK_)] = value;
+        return true;
+    }
+    
+    /**
+     * Serializes the build table with 32 bit data
+     * @param datamanipulate builder raw fold method implementation
+     * @param triedatamanipulate result trie fold method
+     * @return a new trie
+     */
+    public IntTrie serialize(TrieBuilder.DataManipulate datamanipulate, 
+                             Trie.DataManipulate triedatamanipulate)
+    {
+        if (datamanipulate == null) {
+            throw new IllegalArgumentException("Parameters can not be null");
+        }
+        // fold and compact if necessary, also checks that indexLength is 
+        // within limits 
+        if (!m_isCompacted_) {
+            // compact once without overlap to improve folding
+            compact(false);
+            // fold the supplementary part of the index array
+            fold(datamanipulate);
+            // compact again with overlap for minimum data array length
+            compact(true);
+            m_isCompacted_ = true;
+        }
+        // is dataLength within limits? 
+        if (m_dataLength_ >= MAX_DATA_LENGTH_) {
+            throw new ArrayIndexOutOfBoundsException("Data length too small");
+        }
+    
+        char index[] = new char[m_indexLength_];
+        int data[] = new int[m_dataLength_];
+        // write the index (stage 1) array and the 32-bit data (stage 2) array
+        // write 16-bit index values shifted right by INDEX_SHIFT_ 
+        for (int i = 0; i < m_indexLength_; i ++) {
+            index[i] = (char)(m_index_[i] >>> INDEX_SHIFT_);
+        }
+        // write 32-bit data values
+        System.arraycopy(m_data_, 0, data, 0, m_dataLength_);
+        
+        int options = SHIFT_ | (INDEX_SHIFT_ << OPTIONS_INDEX_SHIFT_);
+        options |= OPTIONS_DATA_IS_32_BIT_;
+        if (m_isLatin1Linear_) {
+            options |= OPTIONS_LATIN1_IS_LINEAR_;
+        }
+        return new IntTrie(index, data, m_initialValue_, options, 
+                           triedatamanipulate);
+    }
+    
+    
+    /**
+     * Serializes the build table to an output stream.
+     * 
+     * Compacts the build-time trie after all values are set, and then
+     * writes the serialized form onto an output stream.
+     * 
+     * After this, this build-time Trie can only be serialized again and/or closed;
+     * no further values can be added.
+     * 
+     * This function is the rough equivalent of utrie_seriaize() in ICU4C.
+     * 
+     * @param os the output stream to which the seriaized trie will be written.
+     *         If nul, the function still returns the size of the serialized Trie.
+     * @param reduceTo16Bits If true, reduce the data size to 16 bits.  The resulting
+     *         serialized form can then be used to create a CharTrie.
+     * @param datamanipulate builder raw fold method implementation
+     * @return the number of bytes written to the output stream.
+     */
+     public int serialize(OutputStream os, boolean reduceTo16Bits,
+            TrieBuilder.DataManipulate datamanipulate)  throws IOException {
+         if (datamanipulate == null) {
+             throw new IllegalArgumentException("Parameters can not be null");
+         }
+
+         // fold and compact if necessary, also checks that indexLength is 
+         // within limits 
+         if (!m_isCompacted_) {
+             // compact once without overlap to improve folding
+             compact(false);
+             // fold the supplementary part of the index array
+             fold(datamanipulate);
+             // compact again with overlap for minimum data array length
+             compact(true);
+             m_isCompacted_ = true;
+         }
+         
+         // is dataLength within limits? 
+         int length;
+         if (reduceTo16Bits) {
+             length = m_dataLength_ + m_indexLength_;
+         } else {
+             length = m_dataLength_;
+         }
+         if (length >= MAX_DATA_LENGTH_) {
+             throw new ArrayIndexOutOfBoundsException("Data length too small");
+         }
+         
+         //  struct UTrieHeader {
+         //      int32_t   signature;
+         //      int32_t   options  (a bit field)
+         //      int32_t   indexLength
+         //      int32_t   dataLength
+         length = Trie.HEADER_LENGTH_ + 2*m_indexLength_;
+         if(reduceTo16Bits) {
+             length+=2*m_dataLength_;
+         } else {
+             length+=4*m_dataLength_;
+         }
+         
+         if (os == null) {
+             // No output stream.  Just return the length of the serialized Trie, in bytes.
+             return length;
+         }
+
+         DataOutputStream dos = new DataOutputStream(os);
+         dos.writeInt(Trie.HEADER_SIGNATURE_);  
+         
+         int options = Trie.INDEX_STAGE_1_SHIFT_ | (Trie.INDEX_STAGE_2_SHIFT_<<Trie.HEADER_OPTIONS_INDEX_SHIFT_);
+         if(!reduceTo16Bits) {
+             options |= Trie.HEADER_OPTIONS_DATA_IS_32_BIT_;
+         }
+         if(m_isLatin1Linear_) {
+             options |= Trie.HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_;
+         }
+         dos.writeInt(options);
+         
+         dos.writeInt(m_indexLength_);
+         dos.writeInt(m_dataLength_);
+         
+         /* write the index (stage 1) array and the 16/32-bit data (stage 2) array */
+         if(reduceTo16Bits) {
+             /* write 16-bit index values shifted right by UTRIE_INDEX_SHIFT, after adding indexLength */
+             for (int i=0; i<m_indexLength_; i++) {
+                 int v = (m_index_[i] + m_indexLength_) >>> Trie.INDEX_STAGE_2_SHIFT_;
+                 dos.writeChar(v);
+             }
+             
+             /* write 16-bit data values */
+             for(int i=0; i<m_dataLength_; i++) {
+                 int v = m_data_[i] & 0x0000ffff;
+                 dos.writeChar(v);
+             }
+         } else {
+             /* write 16-bit index values shifted right by UTRIE_INDEX_SHIFT */
+             for (int i=0; i<m_indexLength_; i++) {
+                 int v = (m_index_[i]) >>> Trie.INDEX_STAGE_2_SHIFT_;
+                 dos.writeChar(v);
+             }
+             
+             /* write 32-bit data values */
+             for(int i=0; i<m_dataLength_; i++) {
+                 dos.writeInt(m_data_[i]);
+             }
+        }
+
+         return length;
+
+    }
+    
+    
+    /**
+     * Set a value in a range of code points [start..limit].
+     * All code points c with start &lt;= c &lt; limit will get the value if
+     * overwrite is true or if the old value is 0.
+     * @param start the first code point to get the value
+     * @param limit one past the last code point to get the value
+     * @param value the value
+     * @param overwrite flag for whether old non-initial values are to be 
+     *        overwritten
+     * @return false if a failure occurred (illegal argument or data array 
+     *               overrun)
+     */
+    public boolean setRange(int start, int limit, int value, 
+                            boolean overwrite) 
+    {
+        // repeat value in [start..limit[
+        // mark index values for repeat-data blocks by setting bit 31 of the 
+        // index values fill around existing values if any, if(overwrite)
+            
+        // valid, uncompacted trie and valid indexes?
+        if (m_isCompacted_ || start < UCharacter.MIN_VALUE 
+            || start > UCharacter.MAX_VALUE || limit < UCharacter.MIN_VALUE
+            || limit > (UCharacter.MAX_VALUE + 1) || start > limit) {
+            return false;
+        }
+            
+        if (start == limit) {
+            return true; // nothing to do
+        }
+        
+        if ((start & MASK_) != 0) {
+            // set partial block at [start..following block boundary[
+            int block = getDataBlock(start);
+            if (block < 0) {
+                return false;
+            }
+        
+            int nextStart = (start + DATA_BLOCK_LENGTH) & ~MASK_;
+            if (nextStart <= limit) {
+                fillBlock(block, start & MASK_, DATA_BLOCK_LENGTH,
+                          value, overwrite);
+                start = nextStart;
+            } 
+            else {
+                fillBlock(block, start & MASK_, limit & MASK_,
+                          value, overwrite);
+                return true;
+            }
+        }
+        
+        // number of positions in the last, partial block
+        int rest = limit & MASK_;
+        
+        // round down limit to a block boundary 
+        limit &= ~MASK_;
+        
+        // iterate over all-value blocks 
+        int repeatBlock = 0;
+        if (value == m_initialValue_) {
+            // repeatBlock = 0; assigned above
+        } 
+        else {
+            repeatBlock = -1;
+        }
+        while (start < limit) {
+            // get index value 
+            int block = m_index_[start >> SHIFT_];
+            if (block > 0) {
+                // already allocated, fill in value
+                fillBlock(block, 0, DATA_BLOCK_LENGTH, value, overwrite);
+            } 
+            else if (m_data_[-block] != value && (block == 0 || overwrite)) {
+                // set the repeatBlock instead of the current block 0 or range 
+                // block 
+                if (repeatBlock >= 0) {
+                    m_index_[start >> SHIFT_] = -repeatBlock;
+                } 
+                else {
+                    // create and set and fill the repeatBlock
+                    repeatBlock = getDataBlock(start);
+                    if (repeatBlock < 0) {
+                        return false;
+                    }
+        
+                    // set the negative block number to indicate that it is a 
+                    // repeat block
+                    m_index_[start >> SHIFT_] = -repeatBlock;
+                    fillBlock(repeatBlock, 0, DATA_BLOCK_LENGTH, value, true);
+                }
+            }
+        
+            start += DATA_BLOCK_LENGTH;
+        }
+        
+        if (rest > 0) {
+            // set partial block at [last block boundary..limit[
+            int block = getDataBlock(start);
+            if (block < 0) {
+                return false;
+            }
+            fillBlock(block, 0, rest, value, overwrite);
+        }
+        
+        return true;
+    }
+    
+    // protected data member ------------------------------------------------
+                
+    protected int m_data_[];
+    protected int m_initialValue_;  
+    
+    //  private data member ------------------------------------------------
+        
+    private int m_leadUnitValue_;  
+     
+    // private methods ------------------------------------------------------
+   
+    private int allocDataBlock() 
+    {
+        int newBlock = m_dataLength_;
+        int newTop = newBlock + DATA_BLOCK_LENGTH;
+        if (newTop > m_dataCapacity_) {
+            // out of memory in the data array
+            return -1;
+        }
+        m_dataLength_ = newTop;
+        return newBlock;
+    }
+
+    /**
+     * No error checking for illegal arguments.
+     * @param ch codepoint to look for
+     * @return -1 if no new data block available (out of memory in data array)
+     */
+    private int getDataBlock(int ch) 
+    {
+        ch >>= SHIFT_;
+        int indexValue = m_index_[ch];
+        if (indexValue > 0) {
+            return indexValue;
+        }
+    
+        // allocate a new data block
+        int newBlock = allocDataBlock();
+        if (newBlock < 0) {
+            // out of memory in the data array 
+            return -1;
+        }
+        m_index_[ch] = newBlock;
+    
+        // copy-on-write for a block from a setRange()
+        System.arraycopy(m_data_, Math.abs(indexValue), m_data_, newBlock,  
+                         DATA_BLOCK_LENGTH << 2);
+        return newBlock;
+    }
+    
+    /**
+     * Compact a folded build-time trie.
+     * The compaction
+     * - removes blocks that are identical with earlier ones
+     * - overlaps adjacent blocks as much as possible (if overlap == true)
+     * - moves blocks in steps of the data granularity
+     * - moves and overlaps blocks that overlap with multiple values in the overlap region
+     *
+     * It does not
+     * - try to move and overlap blocks that are not already adjacent
+     * @param overlap flag
+     */
+    private void compact(boolean overlap) 
+    {
+        if (m_isCompacted_) {
+            return; // nothing left to do
+        }
+    
+        // compaction
+        // initialize the index map with "block is used/unused" flags
+        findUnusedBlocks();
+        
+        // if Latin-1 is preallocated and linear, then do not compact Latin-1 
+        // data
+        int overlapStart = DATA_BLOCK_LENGTH;
+        if (m_isLatin1Linear_ && SHIFT_ <= 8) {
+            overlapStart += 256;
+        }
+       
+        int newStart = DATA_BLOCK_LENGTH;
+        int i;
+        for (int start = newStart; start < m_dataLength_;) {
+            // start: index of first entry of current block
+            // newStart: index where the current block is to be moved
+            //           (right after current end of already-compacted data)
+            // skip blocks that are not used 
+            if (m_map_[start >>> SHIFT_] < 0) {
+                // advance start to the next block 
+                start += DATA_BLOCK_LENGTH;
+                // leave newStart with the previous block!
+                continue;
+            }
+            // search for an identical block
+            if (start >= overlapStart) {
+                i = findSameDataBlock(m_data_, newStart, start,
+                                          overlap ? DATA_GRANULARITY_ : DATA_BLOCK_LENGTH);
+                if (i >= 0) {
+                    // found an identical block, set the other block's index 
+                    // value for the current block
+                    m_map_[start >>> SHIFT_] = i;
+                    // advance start to the next block
+                    start += DATA_BLOCK_LENGTH;
+                    // leave newStart with the previous block!
+                    continue;
+                }
+            }
+            // see if the beginning of this block can be overlapped with the 
+            // end of the previous block
+            if(overlap && start>=overlapStart) {
+                /* look for maximum overlap (modulo granularity) with the previous, adjacent block */
+                for(i=DATA_BLOCK_LENGTH-DATA_GRANULARITY_;
+                    i>0 && !equal_int(m_data_, newStart-i, start, i);
+                    i-=DATA_GRANULARITY_) {}
+            } else {
+                i=0;
+            }
+            if (i > 0) {
+                // some overlap
+                m_map_[start >>> SHIFT_] = newStart - i;
+                // move the non-overlapping indexes to their new positions
+                start += i;
+                for (i = DATA_BLOCK_LENGTH - i; i > 0; -- i) {
+                    m_data_[newStart ++] = m_data_[start ++];
+                }
+            } 
+            else if (newStart < start) {
+                // no overlap, just move the indexes to their new positions
+                m_map_[start >>> SHIFT_] = newStart;
+                for (i = DATA_BLOCK_LENGTH; i > 0; -- i) {
+                    m_data_[newStart ++] = m_data_[start ++];
+                }
+            } 
+            else { // no overlap && newStart==start
+                m_map_[start >>> SHIFT_] = start;
+                newStart += DATA_BLOCK_LENGTH;
+                start = newStart;
+            }
+        }
+        // now adjust the index (stage 1) table
+        for (i = 0; i < m_indexLength_; ++ i) {
+            m_index_[i] = m_map_[Math.abs(m_index_[i]) >>> SHIFT_];
+        }
+        m_dataLength_ = newStart;
+    }
+
+    /**
+     * Find the same data block
+     * @param data array
+     * @param dataLength
+     * @param otherBlock
+     * @param step
+     */
+    private static final int findSameDataBlock(int data[], int dataLength,
+                                               int otherBlock, int step) 
+    {
+        // ensure that we do not even partially get past dataLength
+        dataLength -= DATA_BLOCK_LENGTH;
+
+        for (int block = 0; block <= dataLength; block += step) {
+            if(equal_int(data, block, otherBlock, DATA_BLOCK_LENGTH)) {
+                return block;
+            }
+        }
+        return -1;
+    }
+    
+    /**
+     * Fold the normalization data for supplementary code points into
+     * a compact area on top of the BMP-part of the trie index,
+     * with the lead surrogates indexing this compact area.
+     *
+     * Duplicate the index values for lead surrogates:
+     * From inside the BMP area, where some may be overridden with folded values,
+     * to just after the BMP area, where they can be retrieved for
+     * code point lookups.
+     * @param manipulate fold implementation
+     */
+    private final void fold(DataManipulate manipulate) 
+    {
+        int leadIndexes[] = new int[SURROGATE_BLOCK_COUNT_];
+        int index[] = m_index_;
+        // copy the lead surrogate indexes into a temporary array
+        System.arraycopy(index, 0xd800 >> SHIFT_, leadIndexes, 0, 
+                         SURROGATE_BLOCK_COUNT_);
+        
+        // set all values for lead surrogate code *units* to leadUnitValue
+        // so that by default runtime lookups will find no data for associated
+        // supplementary code points, unless there is data for such code points
+        // which will result in a non-zero folding value below that is set for
+        // the respective lead units
+        // the above saved the indexes for surrogate code *points*
+        // fill the indexes with simplified code from utrie_setRange32()
+        int block = 0;
+        if (m_leadUnitValue_ == m_initialValue_) {
+            // leadUnitValue == initialValue, use all-initial-value block
+            // block = 0; if block here left empty
+        } 
+        else {
+            // create and fill the repeatBlock
+            block = allocDataBlock();
+            if (block < 0) {
+                // data table overflow
+                throw new IllegalStateException("Internal error: Out of memory space");
+            }
+            fillBlock(block, 0, DATA_BLOCK_LENGTH, m_leadUnitValue_, true);
+            // negative block number to indicate that it is a repeat block
+            block = -block; 
+        }
+        for (int c = (0xd800 >> SHIFT_); c < (0xdc00 >> SHIFT_); ++ c) {
+            m_index_[c] = block;
+        }
+
+        // Fold significant index values into the area just after the BMP 
+        // indexes.
+        // In case the first lead surrogate has significant data,
+        // its index block must be used first (in which case the folding is a 
+        // no-op).
+        // Later all folded index blocks are moved up one to insert the copied
+        // lead surrogate indexes.
+        int indexLength = BMP_INDEX_LENGTH_;
+        // search for any index (stage 1) entries for supplementary code points 
+        for (int c = 0x10000; c < 0x110000;) {
+            if (index[c >> SHIFT_] != 0) {
+                // there is data, treat the full block for a lead surrogate
+                c &= ~0x3ff;
+                // is there an identical index block?
+                block = findSameIndexBlock(index, indexLength, c >> SHIFT_);
+                
+                // get a folded value for [c..c+0x400[ and,
+                // if different from the value for the lead surrogate code 
+                // point, set it for the lead surrogate code unit
+
+                int value = manipulate.getFoldedValue(c, 
+                                                      block + SURROGATE_BLOCK_COUNT_);
+                if (value != getValue(UTF16.getLeadSurrogate(c))) {
+                    if (!setValue(UTF16.getLeadSurrogate(c), value)) {
+                        // data table overflow 
+                        throw new ArrayIndexOutOfBoundsException(
+                                                                 "Data table overflow");
+                    }
+                    // if we did not find an identical index block...
+                    if (block == indexLength) {
+                        // move the actual index (stage 1) entries from the 
+                        // supplementary position to the new one
+                        System.arraycopy(index, c >> SHIFT_, index, indexLength,
+                                         SURROGATE_BLOCK_COUNT_);
+                        indexLength += SURROGATE_BLOCK_COUNT_;
+                    }
+                }
+                c += 0x400;
+            } 
+            else {
+                c += DATA_BLOCK_LENGTH;
+            }
+        }
+        
+        // index array overflow?
+        // This is to guarantee that a folding offset is of the form
+        // UTRIE_BMP_INDEX_LENGTH+n*UTRIE_SURROGATE_BLOCK_COUNT with n=0..1023.
+        // If the index is too large, then n>=1024 and more than 10 bits are 
+        // necessary.
+        // In fact, it can only ever become n==1024 with completely unfoldable 
+        // data and the additional block of duplicated values for lead 
+        // surrogates.
+        if (indexLength >= MAX_INDEX_LENGTH_) {
+            throw new ArrayIndexOutOfBoundsException("Index table overflow");
+        }
+        // make space for the lead surrogate index block and insert it between 
+        // the BMP indexes and the folded ones
+        System.arraycopy(index, BMP_INDEX_LENGTH_, index, 
+                         BMP_INDEX_LENGTH_ + SURROGATE_BLOCK_COUNT_,
+                         indexLength - BMP_INDEX_LENGTH_);
+        System.arraycopy(leadIndexes, 0, index, BMP_INDEX_LENGTH_,
+                         SURROGATE_BLOCK_COUNT_);
+        indexLength += SURROGATE_BLOCK_COUNT_;
+        m_indexLength_ = indexLength;
+    }
+    
+    /**
+     * @internal
+     */
+    private void fillBlock(int block, int start, int limit, int value, 
+                           boolean overwrite) 
+    {
+        limit += block;
+        block += start;
+        if (overwrite) {
+            while (block < limit) {
+                m_data_[block ++] = value;
+            }
+        } 
+        else {
+            while (block < limit) {
+                if (m_data_[block] == m_initialValue_) {
+                    m_data_[block] = value;
+                }
+                ++ block;
+            }
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/InvalidFormatException.java b/src/com/ibm/icu/impl/InvalidFormatException.java
new file mode 100644
index 0000000..6f7c2a9
--- /dev/null
+++ b/src/com/ibm/icu/impl/InvalidFormatException.java
@@ -0,0 +1,21 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+package com.ibm.icu.impl;
+
+public class InvalidFormatException extends Exception {
+    
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 8883328905089345791L;
+    
+    public InvalidFormatException(){}
+    
+    public InvalidFormatException(String message){
+        super(message);
+    }
+}
diff --git a/src/com/ibm/icu/impl/JavaTimeZone.java b/src/com/ibm/icu/impl/JavaTimeZone.java
new file mode 100644
index 0000000..1b21ce1
--- /dev/null
+++ b/src/com/ibm/icu/impl/JavaTimeZone.java
@@ -0,0 +1,219 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.Date;
+import java.util.TreeSet;
+
+import com.ibm.icu.util.TimeZone;
+
+/**
+ * JavaTimeZone inherits com.ibm.icu.util.TimeZone and wraps java.util.TimeZone.
+ * We used to have JDKTimeZone which wrapped Java TimeZone and used it as primary
+ * TimeZone implementation until ICU4J 3.4.1.  This class works exactly like
+ * JDKTimeZone and allows ICU users who use ICU4J and JDK date/time/calendar
+ * services in mix to maintain only JDK timezone rules.
+ *
+ * This TimeZone subclass is returned by the TimeZone factory method getTimeZone(String)
+ * when the default timezone type in TimeZone class is TimeZone.TIMEZONE_JDK.
+ */
+public class JavaTimeZone extends TimeZone {
+
+    private static final long serialVersionUID = 6977448185543929364L;
+
+    private static final TreeSet AVAILABLESET;
+
+    private java.util.TimeZone javatz;
+    private transient java.util.Calendar javacal;
+
+    static {
+        AVAILABLESET = new TreeSet();
+        String[] availableIds = java.util.TimeZone.getAvailableIDs();
+        for (int i = 0; i < availableIds.length; i++) {
+            AVAILABLESET.add(availableIds[i]);
+        }
+    }
+
+    /**
+     * Constructs a JavaTimeZone with the default Java TimeZone
+     */
+    public JavaTimeZone() {
+        javatz = java.util.TimeZone.getDefault();
+        setID(javatz.getID());
+        javacal = new java.util.GregorianCalendar(javatz);
+    }
+
+    /**
+     * Constructs a JavaTimeZone with the given timezone ID.
+     * @param id A timezone ID, either a system ID or a custom ID.
+     */
+    public JavaTimeZone(String id) {
+        if (AVAILABLESET.contains(id)) {
+            javatz = java.util.TimeZone.getTimeZone(id);
+        }
+        if (javatz == null) {
+            // Use ICU's canonical ID mapping
+            boolean[] isSystemID = new boolean[1];
+            String canonicalID = TimeZone.getCanonicalID(id, isSystemID);
+            if (isSystemID[0] && AVAILABLESET.contains(canonicalID)) {
+                javatz = java.util.TimeZone.getTimeZone(canonicalID);
+            }
+        }
+
+        if (javatz == null){
+            int[] fields = new int[4];
+            if (ZoneMeta.parseCustomID(id, fields)) {
+                // JDK does not support offset seconds.
+                // If custom ID, we create java.util.SimpleTimeZone here.
+                id = ZoneMeta.formatCustomID(fields[1], fields[2], fields[3], fields[0] < 0);
+                int offset = fields[0] * ((fields[1] * 60 + fields[2]) * 60 + fields[3]) * 1000;
+                javatz = new java.util.SimpleTimeZone(offset, id);
+            }
+        }
+        if (javatz == null) {
+            // Final fallback
+            id = "GMT";
+            javatz = java.util.TimeZone.getTimeZone(id);
+        }
+        setID(id);
+        javacal = new java.util.GregorianCalendar(javatz);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getOffset(int, int, int, int, int, int)
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+        return javatz.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getOffset(long, boolean, int[])
+     */
+    public void getOffset(long date, boolean local, int[] offsets) {
+        synchronized (javacal) {
+            if (local) {
+                int fields[] = new int[6];
+                Grego.timeToFields(date, fields);
+                int hour, min, sec, mil;
+                int tmp = fields[5];
+                mil = tmp % 1000;
+                tmp /= 1000;
+                sec = tmp % 60;
+                tmp /= 60;
+                min = tmp % 60;
+                hour = tmp / 60;
+                javacal.clear();
+                javacal.set(fields[0], fields[1], fields[2], hour, min, sec);
+                javacal.set(java.util.Calendar.MILLISECOND, mil);
+
+                int doy1, hour1, min1, sec1, mil1;
+                doy1 = javacal.get(java.util.Calendar.DAY_OF_YEAR);
+                hour1 = javacal.get(java.util.Calendar.HOUR_OF_DAY);
+                min1 = javacal.get(java.util.Calendar.MINUTE);
+                sec1 = javacal.get(java.util.Calendar.SECOND);
+                mil1 = javacal.get(java.util.Calendar.MILLISECOND);
+
+                if (fields[4] != doy1 || hour != hour1 || min != min1 || sec != sec1 || mil != mil1) {
+                    // Calendar field(s) were changed due to the adjustment for non-existing time
+                    // Note: This code does not support non-existing local time at year boundary properly.
+                    // But, it should work fine for real timezones.
+                    int dayDelta = Math.abs(doy1 - fields[4]) > 1 ? 1 : doy1 - fields[4];
+                    int delta = ((((dayDelta * 24) + hour1 - hour) * 60 + min1 - min) * 60 + sec1 - sec) * 1000 + mil1 - mil;
+
+                    // In this case, we use the offsets before the transition
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                    javacal.setTime(new Date(javacal.getTime().getTime() - delta - 1));
+//#else
+                   javacal.setTimeInMillis(javacal.getTimeInMillis() - delta - 1);
+//#endif
+                }
+            } else {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                javacal.setTime(new Date(date));
+//#else
+                javacal.setTimeInMillis(date);
+//#endif
+            }
+            offsets[0] = javacal.get(java.util.Calendar.ZONE_OFFSET);
+            offsets[1] = javacal.get(java.util.Calendar.DST_OFFSET);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getRawOffset()
+     */
+    public int getRawOffset() {
+        return javatz.getRawOffset();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#inDaylightTime(java.util.Date)
+     */
+    public boolean inDaylightTime(Date date) {
+        return javatz.inDaylightTime(date);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#setRawOffset(int)
+     */
+    public void setRawOffset(int offsetMillis) {
+        javatz.setRawOffset(offsetMillis);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#useDaylightTime()
+     */
+    public boolean useDaylightTime() {
+        return javatz.useDaylightTime();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getDSTSavings()
+     */
+    public int getDSTSavings() {
+        int dstSavings = super.getDSTSavings();
+        try {
+            // hack so test compiles and runs in both JDK 1.3 and JDK 1.4+
+            final Object[] args = new Object[0];
+            final Class[] argtypes = new Class[0];
+            java.lang.reflect.Method m = javatz.getClass().getMethod("getDSTSavings", argtypes); 
+            dstSavings = ((Integer) m.invoke(javatz, args)).intValue();
+        } catch (Exception e) {
+            // just use the result returned by super.getDSTSavings()
+        }
+        return dstSavings;
+    }
+
+    public java.util.TimeZone unwrap() {
+        return javatz;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#clone()
+     */
+    public Object clone() {
+        JavaTimeZone other = (JavaTimeZone)super.clone();
+        other.javatz = (java.util.TimeZone)javatz.clone();
+        return other;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#hashCode()
+     */
+    public int hashCode() {
+        return super.hashCode() + javatz.hashCode();
+    }
+
+    private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
+        s.defaultReadObject();
+        javacal = new java.util.GregorianCalendar(javatz);
+    }
+
+}
diff --git a/src/com/ibm/icu/impl/LocaleUtility.java b/src/com/ibm/icu/impl/LocaleUtility.java
new file mode 100644
index 0000000..0633738
--- /dev/null
+++ b/src/com/ibm/icu/impl/LocaleUtility.java
@@ -0,0 +1,132 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ *
+ ******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+
+import java.util.Locale;
+
+/**
+ * A class to hold utility functions missing from java.util.Locale.
+ */
+public class LocaleUtility {
+
+    /**
+     * A helper function to convert a string of the form
+     * aa_BB_CC to a locale object.  Why isn't this in Locale?
+     */
+    public static Locale getLocaleFromName(String name) {
+        String language = "";
+        String country = "";
+        String variant = "";
+
+        int i1 = name.indexOf('_');
+        if (i1 < 0) {
+            language = name;
+        } else {
+            language = name.substring(0, i1);
+            ++i1;
+            int i2 = name.indexOf('_', i1);
+            if (i2 < 0) {
+                country = name.substring(i1);
+            } else {
+                country = name.substring(i1, i2);
+                variant = name.substring(i2+1);
+            }
+        }
+
+        return new Locale(language, country, variant);
+    }
+
+    /**
+     * Compare two locale strings of the form aa_BB_CC, and
+     * return true if parent is a 'strict' fallback of child, that is,
+     * if child =~ "^parent(_.+)*" (roughly).
+     */
+    public static boolean isFallbackOf(String parent, String child) {
+        if (!child.startsWith(parent)) {
+            return false;
+        }
+        int i = parent.length();
+        return (i == child.length() ||
+                child.charAt(i) == '_');
+    }
+
+    /**
+     * Compare two locales, and return true if the parent is a
+     * 'strict' fallback of the child (parent string is a fallback
+     * of child string).
+     */
+    public static boolean isFallbackOf(Locale parent, Locale child) {
+        return isFallbackOf(parent.toString(), child.toString());
+    }
+
+
+    /*
+     * Convenience method that calls canonicalLocaleString(String) with
+     * locale.toString();
+     */
+    /*public static String canonicalLocaleString(Locale locale) {
+        return canonicalLocaleString(locale.toString());
+    }*/
+
+    /*
+     * You'd think that Locale canonicalizes, since it munges the
+     * renamed languages, but it doesn't quite.  It forces the region
+     * to be upper case but doesn't do anything about the language or
+     * variant.  Our canonical form is 'lower_UPPER_UPPER'.  
+     */
+    /*public static String canonicalLocaleString(String id) {
+        if (id != null) {
+            int x = id.indexOf("_");
+            if (x == -1) {
+                id = id.toLowerCase(Locale.ENGLISH);
+            } else {
+                StringBuffer buf = new StringBuffer();
+                buf.append(id.substring(0, x).toLowerCase(Locale.ENGLISH));
+                buf.append(id.substring(x).toUpperCase(Locale.ENGLISH));
+
+                int len = buf.length();
+                int n = len;
+                while (--n >= 0 && buf.charAt(n) == '_') {
+                }
+                if (++n != len) {
+                    buf.delete(n, len);
+                }
+                id = buf.toString();
+            }
+        }
+        return id;
+    }*/
+
+    /**
+     * Fallback from the given locale name by removing the rightmost _-delimited
+     * element. If there is none, return the root locale ("", "", ""). If this
+     * is the root locale, return null. NOTE: The string "root" is not
+     * recognized; do not use it.
+     * 
+     * @return a new Locale that is a fallback from the given locale, or null.
+     */
+    public static Locale fallback(Locale loc) {
+
+        // Split the locale into parts and remove the rightmost part
+        String[] parts = new String[]
+            { loc.getLanguage(), loc.getCountry(), loc.getVariant() };
+        int i;
+        for (i=2; i>=0; --i) {
+            if (parts[i].length() != 0) {
+                parts[i] = "";
+                break;
+            }
+        }
+        if (i<0) {
+            return null; // All parts were empty
+        }
+        return new Locale(parts[0], parts[1], parts[2]);
+    }
+}
diff --git a/src/com/ibm/icu/impl/NormalizerDataReader.java b/src/com/ibm/icu/impl/NormalizerDataReader.java
new file mode 100644
index 0000000..e677e96
--- /dev/null
+++ b/src/com/ibm/icu/impl/NormalizerDataReader.java
@@ -0,0 +1,427 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+import java.io.*;
+import com.ibm.icu.impl.ICUDebug;
+
+/**
+ * @version     1.0
+ * @author        Ram Viswanadha
+ */
+
+/*
+ * Description of the format of unorm.icu version 2.1.
+ *
+ * Main change from version 1 to version 2:
+ * Use of new, common Trie instead of normalization-specific tries.
+ * Change to version 2.1: add third/auxiliary trie with associated data.
+ *
+ * For more details of how to use the data structures see the code
+ * in unorm.cpp (runtime normalization code) and
+ * in gennorm.c and gennorm/store.c (build-time data generation).
+ *
+ * For the serialized format of Trie see Trie.c/TrieHeader.
+ *
+ * - Overall partition
+ *
+ * unorm.icu customarily begins with a UDataInfo structure, see udata.h and .c.
+ * After that there are the following structures:
+ *
+ * char indexes[INDEX_TOP];                   -- INDEX_TOP=32, see enum in this file
+ *
+ * Trie normTrie;                           -- size in bytes=indexes[INDEX_TRIE_SIZE]
+ * 
+ * char extraData[extraDataTop];            -- extraDataTop=indexes[INDEX_UCHAR_COUNT]
+ *                                                 extraData[0] contains the number of units for
+ *                                                 FC_NFKC_Closure (formatVersion>=2.1)
+ *
+ * char combiningTable[combiningTableTop];  -- combiningTableTop=indexes[INDEX_COMBINE_DATA_COUNT]
+ *                                                 combiningTableTop may include one 16-bit padding unit
+ *                                                 to make sure that fcdTrie is 32-bit-aligned
+ *
+ * Trie fcdTrie;                            -- size in bytes=indexes[INDEX_FCD_TRIE_SIZE]
+ *
+ * Trie auxTrie;                            -- size in bytes=indexes[INDEX_AUX_TRIE_SIZE]
+ *
+ * char canonStartSets[canonStartSetsTop]   -- canonStartSetsTop=indexes[INDEX_CANON_SET_COUNT]
+ *                                                 serialized USets, see uset.c
+ *
+ *
+ * The indexes array contains lengths and sizes of the following arrays and structures
+ * as well as the following values:
+ *  indexes[INDEX_COMBINE_FWD_COUNT]=combineFwdTop
+ *      -- one more than the highest combining index computed for forward-only-combining characters
+ *  indexes[INDEX_COMBINE_BOTH_COUNT]=combineBothTop-combineFwdTop
+ *      -- number of combining indexes computed for both-ways-combining characters
+ *  indexes[INDEX_COMBINE_BACK_COUNT]=combineBackTop-combineBothTop
+ *      -- number of combining indexes computed for backward-only-combining characters
+ *
+ *  indexes[INDEX_MIN_NF*_NO_MAYBE] (where *={ C, D, KC, KD })
+ *      -- first code point with a quick check NF* value of NO/MAYBE
+ *
+ *
+ * - Tries
+ *
+ * The main structures are two Trie tables ("compact arrays"),
+ * each with one index array and one data array.
+ * See Trie.h and Trie.c.
+ *
+ *
+ * - Tries in unorm.icu
+ *
+ * The first trie (normTrie above)
+ * provides data for the NF* quick checks and normalization.
+ * The second trie (fcdTrie above) provides data just for FCD checks.
+ *
+ *
+ * - norm32 data words from the first trie
+ *
+ * The norm32Table contains one 32-bit word "norm32" per code point.
+ * It contains the following bit fields:
+ * 31..16   extra data index, EXTRA_SHIFT is used to shift this field down
+ *          if this index is <EXTRA_INDEX_TOP then it is an index into
+ *              extraData[] where variable-length normalization data for this
+ *              code point is found
+ *          if this index is <EXTRA_INDEX_TOP+EXTRA_SURROGATE_TOP
+ *              then this is a norm32 for a leading surrogate, and the index
+ *              value is used together with the following trailing surrogate
+ *              code unit in the second trie access
+ *          if this index is >=EXTRA_INDEX_TOP+EXTRA_SURROGATE_TOP
+ *              then this is a norm32 for a "special" character,
+ *              i.e., the character is a Hangul syllable or a Jamo
+ *              see EXTRA_HANGUL etc.
+ *          generally, instead of extracting this index from the norm32 and
+ *              comparing it with the above constants,
+ *              the normalization code compares the entire norm32 value
+ *              with MIN_SPECIAL, SURROGATES_TOP, MIN_HANGUL etc.
+ *
+ * 15..8    combining class (cc) according to UnicodeData.txt
+ *
+ *  7..6    COMBINES_ANY flags, used in composition to see if a character
+ *              combines with any following or preceding character(s)
+ *              at all
+ *     7    COMBINES_BACK
+ *     6    COMBINES_FWD
+ *
+ *  5..0    quick check flags, set for "no" or "maybe", with separate flags for
+ *              each normalization form
+ *              the higher bits are "maybe" flags; for NF*D there are no such flags
+ *              the lower bits are "no" flags for all forms, in the same order
+ *              as the "maybe" flags,
+ *              which is (MSB to LSB): NFKD NFD NFKC NFC
+ *  5..4    QC_ANY_MAYBE
+ *  3..0    QC_ANY_NO
+ *              see further related constants
+ *
+ *
+ * - Extra data per code point
+ *
+ * "Extra data" is referenced by the index in norm32.
+ * It is variable-length data. It is only present, and only those parts
+ * of it are, as needed for a given character.
+ * The norm32 extra data index is added to the beginning of extraData[]
+ * to get to a vector of 16-bit words with data at the following offsets:
+ *
+ * [-1]     Combining index for composition.
+ *              Stored only if norm32&COMBINES_ANY .
+ * [0]      Lengths of the canonical and compatibility decomposition strings.
+ *              Stored only if there are decompositions, i.e.,
+ *              if norm32&(QC_NFD|QC_NFKD)
+ *          High byte: length of NFKD, or 0 if none
+ *          Low byte: length of NFD, or 0 if none
+ *          Each length byte also has another flag:
+ *              Bit 7 of a length byte is set if there are non-zero
+ *              combining classes (cc's) associated with the respective
+ *              decomposition. If this flag is set, then the decomposition
+ *              is preceded by a 16-bit word that contains the
+ *              leading and trailing cc's.
+ *              Bits 6..0 of a length byte are the length of the
+ *              decomposition string, not counting the cc word.
+ * [1..n]   NFD
+ * [n+1..]  NFKD
+ *
+ * Each of the two decompositions consists of up to two parts:
+ * - The 16-bit words with the leading and trailing cc's.
+ *   This is only stored if bit 7 of the corresponding length byte
+ *   is set. In this case, at least one of the cc's is not zero.
+ *   High byte: leading cc==cc of the first code point in the decomposition string
+ *   Low byte: trailing cc==cc of the last code point in the decomposition string
+ * - The decomposition string in UTF-16, with length code units.
+ *
+ *
+ * - Combining indexes and combiningTable[]
+ *
+ * Combining indexes are stored at the [-1] offset of the extra data
+ * if the character combines forward or backward with any other characters.
+ * They are used for (re)composition in NF*C.
+ * Values of combining indexes are arranged according to whether a character
+ * combines forward, backward, or both ways:
+ *    forward-only < both ways < backward-only
+ *
+ * The index values for forward-only and both-ways combining characters
+ * are indexes into the combiningTable[].
+ * The index values for backward-only combining characters are simply
+ * incremented from the preceding index values to be unique.
+ *
+ * In the combiningTable[], a variable-length list
+ * of variable-length (back-index, code point) pair entries is stored
+ * for each forward-combining character.
+ *
+ * These back-indexes are the combining indexes of both-ways or backward-only
+ * combining characters that the forward-combining character combines with.
+ *
+ * Each list is sorted in ascending order of back-indexes.
+ * Each list is terminated with the last back-index having bit 15 set.
+ *
+ * Each pair (back-index, code point) takes up either 2 or 3
+ * 16-bit words.
+ * The first word of a list entry is the back-index, with its bit 15 set if
+ * this is the last pair in the list.
+ *
+ * The second word contains flags in bits 15..13 that determine
+ * if there is a third word and how the combined character is encoded:
+ * 15   set if there is a third word in this list entry
+ * 14   set if the result is a supplementary character
+ * 13   set if the result itself combines forward
+ *
+ * According to these bits 15..14 of the second word,
+ * the result character is encoded as follows:
+ * 00 or 01 The result is <=0x1fff and stored in bits 12..0 of
+ *          the second word.
+ * 10       The result is 0x2000..0xffff and stored in the third word.
+ *          Bits 12..0 of the second word are not used.
+ * 11       The result is a supplementary character.
+ *          Bits 9..0 of the leading surrogate are in bits 9..0 of
+ *          the second word.
+ *          Add 0xd800 to these bits to get the complete surrogate.
+ *          Bits 12..10 of the second word are not used.
+ *          The trailing surrogate is stored in the third word.
+ *
+ *
+ * - FCD trie
+ *
+ * The FCD trie is very simple.
+ * It is a folded trie with 16-bit data words.
+ * In each word, the high byte contains the leading cc of the character,
+ * and the low byte contains the trailing cc of the character.
+ * These cc's are the cc's of the first and last code points in the
+ * canonical decomposition of the character.
+ *
+ * Since all 16 bits are used for cc's, lead surrogates must be tested
+ * by checking the code unit instead of the trie data.
+ * This is done only if the 16-bit data word is not zero.
+ * If the code unit is a leading surrogate and the data word is not zero,
+ * then instead of cc's it contains the offset for the second trie lookup.
+ *
+ *
+ * - Auxiliary trie and data
+ *
+ *
+ * The auxiliary 16-bit trie contains data for additional properties.
+ * Bits
+ * 15..13   reserved
+ *     12   not NFC_Skippable (f) (formatVersion>=2.2)
+ *     11   flag: not a safe starter for canonical closure
+ *     10   composition exclusion
+ *  9.. 0   index into extraData[] to FC_NFKC_Closure string
+ *          (not for lead surrogate),
+ *          or lead surrogate offset (for lead surrogate, if 9..0 not zero)
+ * 
+ * Conditions for "NF* Skippable" from Mark Davis' com.ibm.text.UCD.NFSkippable:
+ * (used in NormalizerTransliterator)
+ *
+ * A skippable character is
+ * a) unassigned, or ALL of the following:
+ * b) of combining class 0.
+ * c) not decomposed by this normalization form.
+ * AND if NFC or NFKC,
+ * d) can never compose with a previous character.
+ * e) can never compose with a following character.
+ * f) can never change if another character is added.
+ *    Example: a-breve might satisfy all but f, but if you
+ *    add an ogonek it changes to a-ogonek + breve
+ *
+ * a)..e) must be tested from norm32.
+ * Since f) is more complicated, the (not-)NFC_Skippable flag (f) is built
+ * into the auxiliary trie.
+ * The same bit is used for NFC and NFKC; (c) differs for them.
+ * As usual, we build the "not skippable" flags so that unassigned
+ * code points get a 0 bit.
+ * This bit is only valid after (a)..(e) test FALSE; test NFD_NO before (f) as well.
+ * Test Hangul LV syllables entirely in code.
+ *   
+ * 
+ * - FC_NFKC_Closure strings in extraData[]
+ *
+ * Strings are either stored as a single code unit or as the length
+ * followed by that many units.
+ * 
+ * - structure inside canonStartSets[]
+ *
+ * This array maps from code points c to sets of code points (USerializedSet).
+ * The result sets are the code points whose canonical decompositions start
+ * with c.
+ *
+ * canonStartSets[] contains the following sub-arrays:
+ *
+ * indexes[_NORM_SET_INDEX_TOP]
+ *   - contains lengths of sub-arrays etc.
+ *
+ * startSets[indexes[_NORM_SET_INDEX_CANON_SETS_LENGTH]-_NORM_SET_INDEX_TOP]
+ *   - contains serialized sets (USerializedSet) of canonical starters for
+ *     enumerating canonically equivalent strings
+ *     indexes[_NORM_SET_INDEX_CANON_SETS_LENGTH] includes _NORM_SET_INDEX_TOP
+ *     for details about the structure see uset.c
+ *
+ * bmpTable[indexes[_NORM_SET_INDEX_CANON_BMP_TABLE_LENGTH]]
+ *   - a sorted search table for BMP code points whose results are
+ *     either indexes to USerializedSets or single code points for
+ *     single-code point sets;
+ *     each entry is a pair of { code point, result } with result=(binary) yy xxxxxx xxxxxxxx
+ *     if yy==01 then there is a USerializedSet at canonStartSets+x
+ *     else build a USerializedSet with result as the single code point
+ *
+ * suppTable[indexes[_NORM_SET_INDEX_CANON_SUPP_TABLE_LENGTH]]
+ *   - a sorted search table for supplementary code points whose results are
+ *     either indexes to USerializedSets or single code points for
+ *     single-code point sets;
+ *     each entry is a triplet of { high16(cp), low16(cp), result }
+ *     each code point's high-word may contain extra data in bits 15..5:
+ *     if the high word has bit 15 set, then build a set with a single code point
+ *     which is (((high16(cp)&0x1f00)<<8)|result;
+ *     else there is a USerializedSet at canonStartSets+result
+ */
+final class NormalizerDataReader implements ICUBinary.Authenticate {
+    private final static boolean debug = ICUDebug.enabled("NormalizerDataReader");
+    
+   /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected NormalizerDataReader(InputStream inputStream) 
+                                        throws IOException{
+        if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        unicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
+        
+        if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    // protected methods -------------------------------------------------
+    
+    protected int[] readIndexes(int length)throws IOException{
+        int[] indexes = new int[length];
+        //Read the indexes
+        for (int i = 0; i <length ; i++) {
+             indexes[i] = dataInputStream.readInt();
+        }
+        return indexes;
+    } 
+    /**
+    * <p>Reads unorm.icu, parse it into blocks of data to be stored in
+    * NormalizerImpl.</P
+    * @param normBytes
+    * @param fcdBytes
+    * @param auxBytes
+    * @param extraData
+    * @param combiningTable
+    * @param canonStartSets
+    * @exception IOException thrown when data reading fails
+    */
+    protected void read(byte[] normBytes, byte[] fcdBytes, byte[] auxBytes,
+                        char[] extraData, char[] combiningTable, 
+                        Object[] canonStartSets) 
+                        throws IOException
+    {
+         // Read the bytes that make up the normTrie
+        dataInputStream.readFully(normBytes);
+
+        // normTrieStream= new ByteArrayInputStream(normBytes);
+
+        // Read the extra data
+        for (int i = 0; i < extraData.length; i++) {
+            extraData[i] = dataInputStream.readChar();
+        }
+
+        // Read the combining class table
+        for (int i = 0; i < combiningTable.length; i++) {
+            combiningTable[i] = dataInputStream.readChar();
+        }
+
+        // Read the fcdTrie
+        dataInputStream.readFully(fcdBytes);
+
+        // Read the AuxTrie
+        dataInputStream.readFully(auxBytes);
+
+        // Read the canonical start sets
+        int[] canonStartSetsIndexes = new int[NormalizerImpl.SET_INDEX_TOP];
+
+        for (int i = 0; i < canonStartSetsIndexes.length; i++) {
+            canonStartSetsIndexes[i] = dataInputStream.readChar();
+        }
+
+        char[] startSets = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_SETS_LENGTH] - NormalizerImpl.SET_INDEX_TOP];
+
+        for (int i = 0; i < startSets.length; i++) {
+            startSets[i] = dataInputStream.readChar();
+        }
+        char[] bmpTable = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_BMP_TABLE_LENGTH]];
+        for (int i = 0; i < bmpTable.length; i++) {
+            bmpTable[i] = dataInputStream.readChar();
+        }
+        char[] suppTable = new char[canonStartSetsIndexes[NormalizerImpl.SET_INDEX_CANON_SUPP_TABLE_LENGTH]];
+        for (int i = 0; i < suppTable.length; i++) {
+            suppTable[i] = dataInputStream.readChar();
+        }
+        canonStartSets[NormalizerImpl.CANON_SET_INDICIES_INDEX] = canonStartSetsIndexes;
+        canonStartSets[NormalizerImpl.CANON_SET_START_SETS_INDEX] = startSets;
+        canonStartSets[NormalizerImpl.CANON_SET_BMP_TABLE_INDEX] = bmpTable;
+        canonStartSets[NormalizerImpl.CANON_SET_SUPP_TABLE_INDEX] = suppTable;         
+    }
+    
+    public byte[] getDataFormatVersion(){
+        return DATA_FORMAT_VERSION;
+    }
+    
+    public boolean isDataVersionAcceptable(byte version[])
+    {
+        return version[0] == DATA_FORMAT_VERSION[0] 
+               && version[2] == DATA_FORMAT_VERSION[2] 
+               && version[3] == DATA_FORMAT_VERSION[3];
+    }
+    
+    public byte[] getUnicodeVersion(){
+        return unicodeVersion;    
+    }
+    // private data members -------------------------------------------------
+      
+
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream dataInputStream;
+    
+    private byte[] unicodeVersion;
+                                       
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x4E, (byte)0x6F, 
+                                                    (byte)0x72, (byte)0x6D};
+    private static final byte DATA_FORMAT_VERSION[] = {(byte)0x2, (byte)0x2, 
+                                                        (byte)0x5, (byte)0x2};
+    
+}
diff --git a/src/com/ibm/icu/impl/NormalizerImpl.java b/src/com/ibm/icu/impl/NormalizerImpl.java
new file mode 100644
index 0000000..c2dab93
--- /dev/null
+++ b/src/com/ibm/icu/impl/NormalizerImpl.java
@@ -0,0 +1,3852 @@
+ /*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;    
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * @version     1.0
+ * @author  Ram Viswanadha
+ */
+public final class NormalizerImpl {
+    // Static block for the class to initialize its own self 
+    static final NormalizerImpl IMPL;
+    
+    static
+    {
+        try
+        {
+            IMPL = new NormalizerImpl();
+        }
+        catch (Exception e)
+        {
+            throw new MissingResourceException(e.getMessage(), "", "");
+        }
+    }
+    
+    static final int UNSIGNED_BYTE_MASK =0xFF;
+    static final long UNSIGNED_INT_MASK = 0xffffffffL;
+    /*
+     * This new implementation of the normalization code loads its data from
+     * unorm.icu, which is generated with the gennorm tool.
+     * The format of that file is described at the end of this file.
+     */
+    private static final String DATA_FILE_NAME = ICUResourceBundle.ICU_BUNDLE+"/unorm.icu";
+    
+    // norm32 value constants 
+    
+    // quick check flags 0..3 set mean "no" for their forms 
+    public static final int QC_NFC=0x11;          /* no|maybe */
+    public static final int QC_NFKC=0x22;         /* no|maybe */
+    public static final int QC_NFD=4;             /* no */
+    public static final int QC_NFKD=8;            /* no */
+    
+    public static final int QC_ANY_NO=0xf;
+
+    /* quick check flags 4..5 mean "maybe" for their forms; 
+     * test flags>=QC_MAYBE 
+     */
+    public static final int QC_MAYBE=0x10;
+    public static final int QC_ANY_MAYBE=0x30;
+
+    public static final int QC_MASK=0x3f;
+
+    private static final int COMBINES_FWD=0x40;
+    private static final int COMBINES_BACK=0x80;
+    public  static final int COMBINES_ANY=0xc0;
+    // UnicodeData.txt combining class in bits 15.
+    private static final int CC_SHIFT=8;                     
+    public  static final int CC_MASK=0xff00;
+    // 16 bits for the index to UChars and other extra data
+    private static final int EXTRA_SHIFT=16;
+    // start of surrogate specials after shift                
+    //private static final int EXTRA_INDEX_TOP=0xfc00;       
+
+    //private static final int EXTRA_SURROGATE_MASK=0x3ff;
+    //private static final int EXTRA_SURROGATE_TOP=0x3f0;    /* hangul etc. */
+
+    //private static final int EXTRA_HANGUL=EXTRA_SURROGATE_TOP;
+    //private static final int EXTRA_JAMO_L=EXTRA_SURROGATE_TOP+1;/* ### not used */
+    //private static final int EXTRA_JAMO_V=EXTRA_SURROGATE_TOP+2;
+    //private static final int EXTRA_JAMO_T=EXTRA_SURROGATE_TOP+3;
+    
+    /* norm32 value constants using >16 bits */
+    private static final long  MIN_SPECIAL    =  (long)(0xfc000000 & UNSIGNED_INT_MASK);
+    private static final long  SURROGATES_TOP =  (long)(0xfff00000 & UNSIGNED_INT_MASK);
+    private static final long  MIN_HANGUL     =  (long)(0xfff00000 & UNSIGNED_INT_MASK);
+    //private static final long  MIN_JAMO_V     =  (long)(0xfff20000 & UNSIGNED_INT_MASK);
+    private static final long  JAMO_V_TOP     =  (long)(0xfff30000 & UNSIGNED_INT_MASK);
+    
+    
+    /* indexes[] value names */
+    /* number of bytes in normalization trie */
+    static final int INDEX_TRIE_SIZE           = 0;
+     /* number of chars in extra data */     
+    static final int INDEX_CHAR_COUNT           = 1;    
+    /* number of uint16_t words for combining data */
+    static final int INDEX_COMBINE_DATA_COUNT = 2;
+    /* number of code points that combine forward */     
+    static final int INDEX_COMBINE_FWD_COUNT  = 3;
+    /* number of code points that combine forward and backward */     
+    static final int INDEX_COMBINE_BOTH_COUNT = 4;
+    /* number of code points that combine backward */     
+    static final int INDEX_COMBINE_BACK_COUNT = 5;     
+     /* first code point with quick check NFC NO/MAYBE */
+    public static final int INDEX_MIN_NFC_NO_MAYBE   = 6;
+    /* first code point with quick check NFKC NO/MAYBE */    
+    public static final int INDEX_MIN_NFKC_NO_MAYBE  = 7;
+     /* first code point with quick check NFD NO/MAYBE */     
+    public static final int INDEX_MIN_NFD_NO_MAYBE   = 8;
+    /* first code point with quick check NFKD NO/MAYBE */    
+    public static final int INDEX_MIN_NFKD_NO_MAYBE  = 9;     
+    /* number of bytes in FCD trie */
+    static final int INDEX_FCD_TRIE_SIZE      = 10;
+    /* number of bytes in the auxiliary trie */    
+    static final int INDEX_AUX_TRIE_SIZE      = 11;
+    /* number of uint16_t in the array of serialized USet */    
+    static final int INDEX_CANON_SET_COUNT    = 12;    
+    /* changing this requires a new formatVersion */
+    static final int INDEX_TOP                = 32;    
+    
+    
+    /* AUX constants */
+    /* value constants for auxTrie */    
+    private static final int AUX_UNSAFE_SHIFT           = 11;
+    private static final int AUX_COMP_EX_SHIFT           = 10;
+    private static final int AUX_NFC_SKIPPABLE_F_SHIFT = 12;
+    
+    private static final int AUX_MAX_FNC          =   ((int)1<<AUX_COMP_EX_SHIFT);
+    private static final int AUX_UNSAFE_MASK      =   (int)((1<<AUX_UNSAFE_SHIFT) & UNSIGNED_INT_MASK);
+    private static final int AUX_FNC_MASK         =   (int)((AUX_MAX_FNC-1) & UNSIGNED_INT_MASK);
+    private static final int AUX_COMP_EX_MASK     =   (int)((1<<AUX_COMP_EX_SHIFT) & UNSIGNED_INT_MASK);
+    private static final long AUX_NFC_SKIP_F_MASK =   ((UNSIGNED_INT_MASK&1)<<AUX_NFC_SKIPPABLE_F_SHIFT);
+    
+    /* canonStartSets[0..31] contains indexes for what is in the array */
+    /* number of uint16_t in canonical starter sets */
+    static final int SET_INDEX_CANON_SETS_LENGTH        = 0;
+    /* number of uint16_t in the BMP search table (contains pairs) */ 
+    static final int SET_INDEX_CANON_BMP_TABLE_LENGTH    = 1;
+    /* number of uint16_t in the supplementary search table(contains triplets)*/ 
+    static final int SET_INDEX_CANON_SUPP_TABLE_LENGTH  = 2;
+    /* changing this requires a new formatVersion */ 
+    static final int SET_INDEX_TOP                        = 32;
+    
+    static final int CANON_SET_INDICIES_INDEX              = 0;
+    static final int CANON_SET_START_SETS_INDEX            = 1;
+    static final int CANON_SET_BMP_TABLE_INDEX            = 2;
+    static final int CANON_SET_SUPP_TABLE_INDEX            = 3;
+    /* 14 bit indexes to canonical USerializedSets */
+    static final int CANON_SET_MAX_CANON_SETS             = 0x4000; 
+    /* single-code point BMP sets are encoded directly in the search table 
+     * except if result=0x4000..0x7fff 
+     */
+    static final int CANON_SET_BMP_MASK                    = 0xc000;
+    static final int CANON_SET_BMP_IS_INDEX                = 0x4000;
+    
+    private static final int MAX_BUFFER_SIZE                    = 20;
+    
+    /**
+     * Internal option for cmpEquivFold() for decomposing.
+     * If not set, just do strcasecmp().
+     * @internal
+     */
+     public static final int COMPARE_EQUIV = 0x80000;
+    
+    /*******************************/
+
+    /* Wrappers for Trie implementations */ 
+    static final class NormTrieImpl implements Trie.DataManipulate{
+        static IntTrie normTrie= null;
+       /**
+        * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+        * data the index array offset of the indexes for that lead surrogate.
+        * @param property data value for a surrogate from the trie, including 
+        *         the folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        */
+        /* normTrie: 32-bit trie result may contain a special extraData index with the folding offset */
+        public int getFoldingOffset(int value){
+            return  BMP_INDEX_LENGTH+
+                    ((value>>(EXTRA_SHIFT-SURROGATE_BLOCK_BITS))&
+                    (0x3ff<<SURROGATE_BLOCK_BITS)); 
+        }
+        
+    }
+    static final class FCDTrieImpl implements Trie.DataManipulate{
+        static CharTrie fcdTrie=null;
+       /**
+        * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+        * data the index array offset of the indexes for that lead surrogate.
+        * @param property data value for a surrogate from the trie, including
+        *         the folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        */
+        /* fcdTrie: the folding offset is the lead FCD value itself */
+        public int getFoldingOffset(int value){
+            return value;
+        }
+    }
+    
+    static final class AuxTrieImpl implements Trie.DataManipulate{
+        static CharTrie auxTrie = null;
+       /**
+        * Called by com.ibm.icu.util.Trie to extract from a lead surrogate's 
+        * data the index array offset of the indexes for that lead surrogate.
+        * @param property data value for a surrogate from the trie, including 
+        *        the folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        */
+        /* auxTrie: the folding offset is in bits 9..0 of the 16-bit trie result */
+        public int getFoldingOffset(int value){
+            return (int)(value &AUX_FNC_MASK)<<SURROGATE_BLOCK_BITS;
+        }
+    }
+         
+    /****************************************************/
+    
+    
+    private static FCDTrieImpl fcdTrieImpl;
+    private static NormTrieImpl normTrieImpl;
+    private static AuxTrieImpl auxTrieImpl;
+    private static int[] indexes;
+    private static char[] combiningTable;
+    private static char[] extraData;
+    private static Object[] canonStartSets;
+    
+    private static boolean isDataLoaded;
+    private static boolean isFormatVersion_2_1;
+    private static boolean isFormatVersion_2_2;
+    private static byte[] unicodeVersion;
+    
+    /**
+     * Default buffer size of datafile
+     */
+    private static final int DATA_BUFFER_SIZE = 25000;
+    
+    /**
+     * FCD check: everything below this code point is known to have a 0 
+     * lead combining class 
+     */
+    public static final int MIN_WITH_LEAD_CC=0x300;
+
+
+    /**
+     * Bit 7 of the length byte for a decomposition string in extra data is
+     * a flag indicating whether the decomposition string is
+     * preceded by a 16-bit word with the leading and trailing cc
+     * of the decomposition (like for A-umlaut);
+     * if not, then both cc's are zero (like for compatibility ideographs).
+     */
+    private static final int DECOMP_FLAG_LENGTH_HAS_CC=0x80;
+    /**
+     * Bits 6..0 of the length byte contain the actual length.
+     */
+    private static final int DECOMP_LENGTH_MASK=0x7f;   
+    
+    /** Length of the BMP portion of the index (stage 1) array. */
+    private static final int BMP_INDEX_LENGTH=0x10000>>Trie.INDEX_STAGE_1_SHIFT_;
+    /** Number of bits of a trail surrogate that are used in index table 
+     * lookups. 
+     */
+    private static final int SURROGATE_BLOCK_BITS=10-Trie.INDEX_STAGE_1_SHIFT_;
+
+
+   // public utility
+   public static int getFromIndexesArr(int index){
+        return indexes[index];
+   }
+   
+   // protected constructor ---------------------------------------------
+    
+    /**
+    * Constructor
+    * @exception thrown when data reading fails or data corrupted
+    */
+    private NormalizerImpl() throws IOException {
+        //data should be loaded only once
+        if(!isDataLoaded){
+            
+            // jar access
+            InputStream i = ICUData.getRequiredStream(DATA_FILE_NAME);
+            BufferedInputStream b = new BufferedInputStream(i,DATA_BUFFER_SIZE);
+            NormalizerDataReader reader = new NormalizerDataReader(b);
+            
+            // read the indexes            
+            indexes = reader.readIndexes(NormalizerImpl.INDEX_TOP);
+            
+            byte[] normBytes = new byte[indexes[NormalizerImpl.INDEX_TRIE_SIZE]];
+            
+            int combiningTableTop = indexes[NormalizerImpl.INDEX_COMBINE_DATA_COUNT];
+            combiningTable = new char[combiningTableTop];
+            
+            int extraDataTop = indexes[NormalizerImpl.INDEX_CHAR_COUNT];
+            extraData = new char[extraDataTop];
+
+            byte[] fcdBytes = new byte[indexes[NormalizerImpl.INDEX_FCD_TRIE_SIZE]];
+            byte[] auxBytes = new byte[indexes[NormalizerImpl.INDEX_AUX_TRIE_SIZE]];
+            canonStartSets=new Object[NormalizerImpl.CANON_SET_MAX_CANON_SETS];
+            
+            fcdTrieImpl = new FCDTrieImpl();
+            normTrieImpl = new NormTrieImpl();
+            auxTrieImpl = new AuxTrieImpl();
+                        
+            // load the rest of the data data and initialize the data members
+            reader.read(normBytes, fcdBytes,auxBytes, extraData, combiningTable, 
+                        canonStartSets);
+                                       
+            NormTrieImpl.normTrie = new IntTrie( new ByteArrayInputStream(normBytes),normTrieImpl );
+            FCDTrieImpl.fcdTrie   = new CharTrie( new ByteArrayInputStream(fcdBytes),fcdTrieImpl  );
+            AuxTrieImpl.auxTrie   = new CharTrie( new ByteArrayInputStream(auxBytes),auxTrieImpl  );
+            
+            // we reached here without any exceptions so the data is fully 
+            // loaded set the variable to true
+            isDataLoaded = true;
+            
+            // get the data format version                           
+            byte[] formatVersion = reader.getDataFormatVersion();
+            
+            isFormatVersion_2_1 =( formatVersion[0]>2 
+                                    ||
+                                   (formatVersion[0]==2 && formatVersion[1]>=1)
+                                 );
+            isFormatVersion_2_2 =( formatVersion[0]>2 
+                                    ||
+                                   (formatVersion[0]==2 && formatVersion[1]>=2)
+                                 );
+            unicodeVersion = reader.getUnicodeVersion();
+            b.close();
+        }
+    }
+        
+    /* ---------------------------------------------------------------------- */
+    
+    /* Korean Hangul and Jamo constants */
+    
+    public static final int JAMO_L_BASE=0x1100;     /* "lead" jamo */
+    public static final int JAMO_V_BASE=0x1161;     /* "vowel" jamo */
+    public static final int JAMO_T_BASE=0x11a7;     /* "trail" jamo */
+    
+    public static final int HANGUL_BASE=0xac00;
+    
+    public static final int JAMO_L_COUNT=19;
+    public static final int JAMO_V_COUNT=21;
+    public static final int JAMO_T_COUNT=28;
+    public  static final int HANGUL_COUNT=JAMO_L_COUNT*JAMO_V_COUNT*JAMO_T_COUNT;
+    
+    private static boolean isHangulWithoutJamoT(char c) {
+        c-=HANGUL_BASE;
+        return c<HANGUL_COUNT && c%JAMO_T_COUNT==0;
+    }
+    
+    /* norm32 helpers */
+    
+    /* is this a norm32 with a regular index? */
+    private static boolean isNorm32Regular(long norm32) {
+        return norm32<MIN_SPECIAL;
+    }
+    
+    /* is this a norm32 with a special index for a lead surrogate? */
+    private static boolean isNorm32LeadSurrogate(long norm32) {
+        return MIN_SPECIAL<=norm32 && norm32<SURROGATES_TOP;
+    }
+    
+    /* is this a norm32 with a special index for a Hangul syllable or a Jamo? */
+    private static boolean isNorm32HangulOrJamo(long norm32) {
+        return norm32>=MIN_HANGUL;
+    }
+    
+    /*
+     * Given isNorm32HangulOrJamo(),
+     * is this a Hangul syllable or a Jamo?
+     */
+//    private static  boolean isHangulJamoNorm32HangulOrJamoL(long norm32) {
+//        return norm32<MIN_JAMO_V;
+//    }
+    
+    /*
+     * Given norm32 for Jamo V or T,
+     * is this a Jamo V?
+     */
+    private static boolean isJamoVTNorm32JamoV(long norm32) {
+        return norm32<JAMO_V_TOP;
+    }
+    
+    /* data access primitives ----------------------------------------------- */
+    
+    public static long/*unsigned*/ getNorm32(char c) {
+        return ((UNSIGNED_INT_MASK) & (NormTrieImpl.normTrie.getLeadValue(c)));
+    }
+    
+    public static long/*unsigned*/ getNorm32FromSurrogatePair(long norm32, 
+                                                               char c2) {
+        /*
+         * the surrogate index in norm32 stores only the number of the surrogate
+         * index block see gennorm/store.c/getFoldedNormValue()
+         */
+        return ((UNSIGNED_INT_MASK) & 
+                    NormTrieImpl.normTrie.getTrailValue((int)norm32, c2));
+    }
+    private static long getNorm32(int c){
+        return (UNSIGNED_INT_MASK&(NormTrieImpl.normTrie.getCodePointValue(c)));
+    }
+    
+//    private static long getNorm32(int c,int mask){
+//        long/*unsigned*/ norm32= getNorm32(UTF16.getLeadSurrogate(c));
+//        if(((norm32&mask)>0) && isNorm32LeadSurrogate(norm32)) {
+//            /* c is a lead surrogate, get the real norm32 */
+//            norm32=getNorm32FromSurrogatePair(norm32,UTF16.getTrailSurrogate(c));
+//        }
+//        return norm32; 
+//    }
+    
+    /*
+     * get a norm32 from text with complete code points
+     * (like from decompositions)
+     */
+    private static long/*unsigned*/ getNorm32(char[] p,int start,
+                                              int/*unsigned*/ mask) {
+        long/*unsigned*/ norm32= getNorm32(p[start]);
+        if(((norm32&mask)>0) && isNorm32LeadSurrogate(norm32)) {
+            /* *p is a lead surrogate, get the real norm32 */
+            norm32=getNorm32FromSurrogatePair(norm32, p[start+1]);
+        }
+        return norm32;
+    }
+    public static VersionInfo getUnicodeVersion(){
+        return VersionInfo.getInstance(unicodeVersion[0], unicodeVersion[1],
+                                       unicodeVersion[2], unicodeVersion[3]);
+    }
+    public static char    getFCD16(char c) {
+        return  FCDTrieImpl.fcdTrie.getLeadValue(c);
+    }
+    
+    public static char getFCD16FromSurrogatePair(char fcd16, char c2) {
+        /* the surrogate index in fcd16 is an absolute offset over the 
+         * start of stage 1 
+         * */
+        return FCDTrieImpl.fcdTrie.getTrailValue(fcd16, c2);
+    }
+    public static int getFCD16(int c) {
+        return  FCDTrieImpl.fcdTrie.getCodePointValue(c);
+    }
+        
+    private static int getExtraDataIndex(long norm32) {
+        return (int)(norm32>>EXTRA_SHIFT);
+    }
+    
+    private static final class DecomposeArgs{
+        int /*unsigned byte*/ cc;
+        int /*unsigned byte*/ trailCC;
+        int length;
+    }
+    /**
+     * 
+     * get the canonical or compatibility decomposition for one character 
+     * 
+     * @return index into the extraData array
+     */
+    private static int/*index*/ decompose(long/*unsigned*/ norm32, 
+                                          int/*unsigned*/ qcMask, 
+                                          DecomposeArgs args) {
+        int p= getExtraDataIndex(norm32);
+        args.length=extraData[p++];
+    
+        if((norm32&qcMask&QC_NFKD)!=0 && args.length>=0x100) {
+            /* use compatibility decomposition, skip canonical data */
+            p+=((args.length>>7)&1)+(args.length&DECOMP_LENGTH_MASK);
+            args.length>>=8;
+        }
+    
+        if((args.length&DECOMP_FLAG_LENGTH_HAS_CC)>0) {
+            /* get the lead and trail cc's */
+            char bothCCs=extraData[p++];
+            args.cc=(UNSIGNED_BYTE_MASK) & (bothCCs>>8);
+            args.trailCC=(UNSIGNED_BYTE_MASK) & bothCCs;
+        } else {
+            /* lead and trail cc's are both 0 */
+            args.cc=args.trailCC=0;
+        }
+    
+        args.length&=DECOMP_LENGTH_MASK;
+        return p;
+    }
+    
+       
+    /**
+     * get the canonical decomposition for one character 
+     * @return index into the extraData array
+     */
+    private static int decompose(long/*unsigned*/ norm32, 
+                                 DecomposeArgs args) {
+                             
+        int p= getExtraDataIndex(norm32);
+        args.length=extraData[p++];
+    
+        if((args.length&DECOMP_FLAG_LENGTH_HAS_CC)>0) {
+            /* get the lead and trail cc's */
+            char bothCCs=extraData[p++];
+            args.cc=(UNSIGNED_BYTE_MASK) & (bothCCs>>8);
+            args.trailCC=(UNSIGNED_BYTE_MASK) & bothCCs;
+        } else {
+            /* lead and trail cc's are both 0 */
+            args.cc=args.trailCC=0;
+        }
+    
+        args.length&=DECOMP_LENGTH_MASK;
+        return p;
+    }
+    
+    
+    private static final class NextCCArgs{
+        char[] source;
+        int next;
+        int limit;
+        char c;
+        char c2;
+    }
+    
+    /*
+     * get the combining class of (c, c2)= args.source[args.next++]
+     * before: args.next<args.limit  after: args.next<=args.limit
+     * if only one code unit is used, then c2==0
+     */
+    private static int /*unsigned byte*/ getNextCC(NextCCArgs args) {
+        long /*unsigned*/ norm32;
+    
+        args.c=args.source[args.next++];
+        
+        norm32= getNorm32(args.c);
+        if((norm32 & CC_MASK)==0) {
+            args.c2=0;
+            return 0;
+        } else {
+            if(!isNorm32LeadSurrogate(norm32)) {
+                args.c2=0;
+            } else {
+                /* c is a lead surrogate, get the real norm32 */
+                if(args.next!=args.limit && 
+                        UTF16.isTrailSurrogate(args.c2=args.source[args.next])){
+                    ++args.next;
+                    norm32=getNorm32FromSurrogatePair(norm32, args.c2);
+                } else {
+                    args.c2=0;
+                    return 0;
+                }
+            }
+    
+            return (int)((UNSIGNED_BYTE_MASK) & (norm32>>CC_SHIFT));
+        }
+    }
+
+    private static final class PrevArgs{
+        char[] src;
+        int start;
+        int current;
+        char c;
+        char c2;
+    }
+    
+    /*
+     * read backwards and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+     * surrogate but read second!)
+     */
+    private static long /*unsigned*/ getPrevNorm32(PrevArgs args,
+                                                      int/*unsigned*/ minC, 
+                                                      int/*unsigned*/ mask) {
+        long/*unsigned*/ norm32;
+    
+        args.c=args.src[--args.current];
+        args.c2=0;
+    
+        /* check for a surrogate before getting norm32 to see if we need to 
+         * predecrement further 
+         */
+        if(args.c<minC) {
+            return 0;
+        } else if(!UTF16.isSurrogate(args.c)) {
+            return getNorm32(args.c);
+        } else if(UTF16.isLeadSurrogate(args.c)) {
+            /* unpaired first surrogate */
+            return 0;
+        } else if(args.current!=args.start && 
+                    UTF16.isLeadSurrogate(args.c2=args.src[args.current-1])) {
+            --args.current;
+            norm32=getNorm32(args.c2);
+    
+            if((norm32&mask)==0) {
+                /* all surrogate pairs with this lead surrogate have 
+                 * only irrelevant data 
+                 */
+                return 0;
+            } else {
+                /* norm32 must be a surrogate special */
+                return getNorm32FromSurrogatePair(norm32, args.c);
+            }
+        } else {
+            /* unpaired second surrogate */
+            args.c2=0;
+            return 0;
+        }
+    }
+    
+    /*
+     * get the combining class of (c, c2)=*--p
+     * before: start<p  after: start<=p
+     */
+    private static int /*unsigned byte*/ getPrevCC(PrevArgs args) {
+
+        return (int)((UNSIGNED_BYTE_MASK)&(getPrevNorm32(args, MIN_WITH_LEAD_CC,
+                                                         CC_MASK)>>CC_SHIFT));
+    }
+
+    /*
+     * is this a safe boundary character for NF*D?
+     * (lead cc==0)
+     */
+    public static boolean isNFDSafe(long/*unsigned*/ norm32, 
+                                     int/*unsigned*/ccOrQCMask, 
+                                     int/*unsigned*/ decompQCMask) {
+        if((norm32&ccOrQCMask)==0) {
+            return true; /* cc==0 and no decomposition: this is NF*D safe */
+        }
+    
+        /* inspect its decomposition - maybe a Hangul but not a surrogate here*/
+        if(isNorm32Regular(norm32) && (norm32&decompQCMask)!=0) {
+            DecomposeArgs args=new DecomposeArgs();
+            /* decomposes, get everything from the variable-length extra data */
+            decompose(norm32, decompQCMask, args);
+            return args.cc==0;
+        } else {
+            /* no decomposition (or Hangul), test the cc directly */
+            return (norm32&CC_MASK)==0;
+        }
+    }
+    
+    /*
+     * is this (or does its decomposition begin with) a "true starter"?
+     * (cc==0 and NF*C_YES)
+     */
+    public static boolean isTrueStarter(long/*unsigned*/ norm32, 
+                                          int/*unsigned*/ ccOrQCMask, 
+                                          int/*unsigned*/ decompQCMask) {
+        if((norm32&ccOrQCMask)==0) {
+            return true; /* this is a true starter (could be Hangul or Jamo L)*/
+        }
+    
+        /* inspect its decomposition - not a Hangul or a surrogate here */
+        if((norm32&decompQCMask)!=0) {
+            int p; /* index into extra data array */
+            DecomposeArgs args=new DecomposeArgs();
+            /* decomposes, get everything from the variable-length extra data */
+            p=decompose(norm32, decompQCMask, args);
+          
+            if(args.cc==0) {
+                int/*unsigned*/ qcMask=ccOrQCMask&QC_MASK;
+    
+                /* does it begin with NFC_YES? */
+                if((getNorm32(extraData,p, qcMask)&qcMask)==0) {
+                    /* yes, the decomposition begins with a true starter */
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /* reorder UTF-16 in-place ---------------------------------------------- */
+    
+    /**
+     * simpler, single-character version of mergeOrdered() -
+     * bubble-insert one single code point into the preceding string
+     * which is already canonically ordered
+     * (c, c2) may or may not yet have been inserted at src[current]..src[p]
+     *
+     * it must be p=current+lengthof(c, c2) i.e. p=current+(c2==0 ? 1 : 2)
+     *
+     * before: src[start]..src[current] is already ordered, and
+     *         src[current]..src[p]     may or may not hold (c, c2) but
+     *                          must be exactly the same length as (c, c2)
+     * after: src[start]..src[p] is ordered
+     *
+     * @return the trailing combining class
+     */
+    private static int/*unsigned byte*/ insertOrdered(char[] source, 
+                                                      int start, 
+                                                      int current, int p,
+                                                         char c, char c2, 
+                                                         int/*unsigned byte*/ cc) {
+        int back, preBack;
+        int r;
+        int prevCC, trailCC=cc;
+    
+        if(start<current && cc!=0) {
+            // search for the insertion point where cc>=prevCC 
+            preBack=back=current;
+            PrevArgs prevArgs = new PrevArgs();
+            prevArgs.current  = current;
+            prevArgs.start    = start;
+            prevArgs.src      = source;
+            // get the prevCC 
+            prevCC=getPrevCC(prevArgs);
+            preBack = prevArgs.current;
+            
+            if(cc<prevCC) {
+                // this will be the last code point, so keep its cc 
+                trailCC=prevCC;
+                back=preBack;
+                while(start<preBack) {
+                    prevCC=getPrevCC(prevArgs);
+                    preBack=prevArgs.current;
+                    if(cc>=prevCC) {
+                        break;
+                    }
+                    back=preBack;
+                }
+    
+                
+                // this is where we are right now with all these indicies:
+                // [start]..[pPreBack] 0..? code points that we can ignore
+                // [pPreBack]..[pBack] 0..1 code points with prevCC<=cc
+                // [pBack]..[current] 0..n code points with >cc, move up to insert (c, c2)
+                // [current]..[p]         1 code point (c, c2) with cc
+                 
+                // move the code units in between up 
+                r=p;
+                do {
+                    source[--r]=source[--current];
+                } while(back!=current);
+            }
+        }
+    
+        // insert (c, c2) 
+        source[current]=c;
+        if(c2!=0) {
+            source[(current+1)]=c2;
+        }
+    
+        // we know the cc of the last code point 
+        return trailCC;
+    }
+    
+    /**
+     * merge two UTF-16 string parts together
+     * to canonically order (order by combining classes) their concatenation
+     *
+     * the two strings may already be adjacent, so that the merging is done 
+     * in-place if the two strings are not adjacent, then the buffer holding the
+     * first one must be large enough
+     * the second string may or may not be ordered in itself
+     *
+     * before: [start]..[current] is already ordered, and
+     *         [next]..[limit]    may be ordered in itself, but
+     *                          is not in relation to [start..current[
+     * after: [start..current+(limit-next)[ is ordered
+     *
+     * the algorithm is a simple bubble-sort that takes the characters from 
+     * src[next++] and inserts them in correct combining class order into the 
+     * preceding part of the string
+     *
+     * since this function is called much less often than the single-code point
+     * insertOrdered(), it just uses that for easier maintenance
+     *
+     * @return the trailing combining class
+     */
+    private static int /*unsigned byte*/ mergeOrdered(char[] source,
+                                                      int start, 
+                                                      int current,
+                                                      char[] data,
+                                                        int next, 
+                                                        int limit, 
+                                                        boolean isOrdered) {
+            int r;
+            int /*unsigned byte*/ cc, trailCC=0;
+            boolean adjacent;
+        
+            adjacent= current==next;
+            NextCCArgs ncArgs = new NextCCArgs();
+            ncArgs.source = data;
+            ncArgs.next   = next;
+            ncArgs.limit  = limit;
+            
+            if(start!=current || !isOrdered) {
+                    
+                while(ncArgs.next<ncArgs.limit) {
+                    cc=getNextCC(ncArgs);
+                    if(cc==0) {
+                        // does not bubble back 
+                        trailCC=0;
+                        if(adjacent) {
+                            current=ncArgs.next;
+                        } else {
+                            data[current++]=ncArgs.c;
+                            if(ncArgs.c2!=0) {
+                                data[current++]=ncArgs.c2;
+                            }
+                        }
+                        if(isOrdered) {
+                            break;
+                        } else {
+                            start=current;
+                        }
+                    } else {
+                        r=current+(ncArgs.c2==0 ? 1 : 2);
+                        trailCC=insertOrdered(source,start, current, r, 
+                                              ncArgs.c, ncArgs.c2, cc);
+                        current=r;
+                    }
+                }
+            }
+        
+            if(ncArgs.next==ncArgs.limit) {
+                // we know the cc of the last code point 
+                return trailCC;
+            } else {
+                if(!adjacent) {
+                    // copy the second string part 
+                    do {
+                        source[current++]=data[ncArgs.next++];
+                    } while(ncArgs.next!=ncArgs.limit);
+                    ncArgs.limit=current;
+                }
+                PrevArgs prevArgs = new PrevArgs();
+                prevArgs.src   = data;
+                prevArgs.start = start;
+                prevArgs.current =  ncArgs.limit;
+                return getPrevCC(prevArgs);
+            }
+
+    }
+    private static int /*unsigned byte*/ mergeOrdered(char[] source,
+                                                      int start, 
+                                                      int current,
+                                                      char[] data,
+                                                        final int next, 
+                                                        final int limit) {
+        return mergeOrdered(source,start,current,data,next,limit,true);
+    } 
+
+    
+      
+    public static boolean checkFCD(char[] src,int srcStart, int srcLimit,
+                                   UnicodeSet nx) {
+
+        char fcd16,c,c2;
+        int prevCC=0, cc;
+        int i =srcStart, length = srcLimit;
+    
+        for(;;) {
+            for(;;) {
+                if(i==length) {
+                    return true;
+                } else if((c=src[i++])<MIN_WITH_LEAD_CC) {
+                    prevCC=(int)-c;
+                } else if((fcd16=getFCD16(c))==0) {
+                    prevCC=0;
+                } else {
+                    break;
+                }
+            }
+
+            // check one above-minimum, relevant code unit 
+            if(UTF16.isLeadSurrogate(c)) {
+                // c is a lead surrogate, get the real fcd16 
+                if(i!=length && UTF16.isTrailSurrogate(c2=src[i])) {
+                    ++i;
+                    fcd16=getFCD16FromSurrogatePair(fcd16, c2);
+                } else {
+                    c2=0;
+                    fcd16=0;
+                }
+            }else{
+                c2=0;
+            }
+            
+            if(nx_contains(nx, c, c2)) {
+                prevCC=0; /* excluded: fcd16==0 */
+                continue;
+            }
+
+            // prevCC has values from the following ranges:
+            // 0..0xff -the previous trail combining class
+            // <0      -the negative value of the previous code unit;
+            //          that code unit was <MIN_WITH_LEAD_CC and its getFCD16()
+            //          was deferred so that average text is checked faster
+            //
+    
+            // check the combining order 
+            cc=(int)(fcd16>>8);
+            if(cc!=0) {
+                if(prevCC<0) {
+                    // the previous character was <_NORM_MIN_WITH_LEAD_CC, 
+                    // we need to get its trail cc 
+                    //
+                    if(!nx_contains(nx, (int)-prevCC)) {
+                        prevCC=(int)(FCDTrieImpl.fcdTrie.getBMPValue(
+                                             (char)-prevCC)&0xff
+                                             ); 
+                    } else {
+                        prevCC=0; /* excluded: fcd16==0 */
+                    }
+                                      
+                }
+    
+                if(cc<prevCC) {
+                    return false;
+                }
+            }
+            prevCC=(int)(fcd16&0xff);
+        }
+    }
+    
+    public static Normalizer.QuickCheckResult quickCheck(char[] src,
+                                                            int srcStart, 
+                                                            int srcLimit,
+                                                            int minNoMaybe,
+                                                            int qcMask,
+                                                            int options,
+                                                            boolean allowMaybe,
+                                                            UnicodeSet nx){
+
+        int ccOrQCMask;
+        long norm32;
+        char c, c2;
+        char cc, prevCC;
+        long qcNorm32;
+        Normalizer.QuickCheckResult result;
+        ComposePartArgs args = new ComposePartArgs();
+        char[] buffer ;
+        int start = srcStart;
+        
+        if(!isDataLoaded) {
+            return Normalizer.MAYBE;
+        }
+        // initialize 
+        ccOrQCMask=CC_MASK|qcMask;
+        result=Normalizer.YES;
+        prevCC=0;
+                
+        for(;;) {
+            for(;;) {
+                if(srcStart==srcLimit) {
+                    return result;
+                } else if((c=src[srcStart++])>=minNoMaybe && 
+                                  (( norm32=getNorm32(c)) & ccOrQCMask)!=0) {
+                    break;
+                }
+                prevCC=0;
+            }
+            
+    
+            // check one above-minimum, relevant code unit 
+            if(isNorm32LeadSurrogate(norm32)) {
+                // c is a lead surrogate, get the real norm32 
+                if(srcStart!=srcLimit&& UTF16.isTrailSurrogate(c2=src[srcStart])) {
+                    ++srcStart;
+                    norm32=getNorm32FromSurrogatePair(norm32,c2);
+                } else {
+                    norm32=0;
+                    c2=0;
+                }
+            }else{
+                c2=0;
+            }
+            if(nx_contains(nx, c, c2)) {
+                /* excluded: norm32==0 */
+                norm32=0;
+            }
+    
+            // check the combining order 
+            cc=(char)((norm32>>CC_SHIFT)&0xFF);
+            if(cc!=0 && cc<prevCC) {
+                return Normalizer.NO;
+            }
+            prevCC=cc;
+    
+            // check for "no" or "maybe" quick check flags 
+            qcNorm32 = norm32 & qcMask;
+            if((qcNorm32& QC_ANY_NO)>=1) {
+                result= Normalizer.NO;
+                break;
+            } else if(qcNorm32!=0) {
+                // "maybe" can only occur for NFC and NFKC 
+                if(allowMaybe){
+                    result=Normalizer.MAYBE;
+                }else{
+                    // normalize a section around here to see if it is really 
+                    // normalized or not 
+                    int prevStarter;
+                    int/*unsigned*/ decompQCMask;
+    
+                    decompQCMask=(qcMask<<2)&0xf; // decomposition quick check mask 
+    
+                    // find the previous starter 
+
+                    // set prevStarter to the beginning of the current character 
+                    prevStarter=srcStart-1; 
+                    if(UTF16.isTrailSurrogate(src[prevStarter])) {
+                        // safe because unpaired surrogates do not result 
+                        // in "maybe"
+                        --prevStarter; 
+                    }
+
+                    prevStarter=findPreviousStarter(src, start, prevStarter,
+                                                    ccOrQCMask, decompQCMask,
+                                                    (char)minNoMaybe);
+    
+                    // find the next true starter in [src..limit[ - modifies 
+                    // src to point to the next starter 
+                    srcStart=findNextStarter(src,srcStart, srcLimit, qcMask, 
+                                             decompQCMask,(char) minNoMaybe);
+                    
+                    //set the args for compose part
+                    args.prevCC = prevCC;
+                       
+                    // decompose and recompose [prevStarter..src[ 
+                    buffer = composePart(args,prevStarter,src,srcStart,srcLimit,options,nx);
+    
+                    // compare the normalized version with the original 
+                    if(0!=strCompare(buffer,0,args.length,src,prevStarter,srcStart, false)) {
+                        result=Normalizer.NO; // normalization differs 
+                        break;
+                    }
+    
+                    // continue after the next starter 
+                }
+            }
+        }
+        return result;
+    } 
+ 
+       
+    //------------------------------------------------------ 
+    // make NFD & NFKD 
+    //------------------------------------------------------
+    public static int getDecomposition(int c /*UTF-32*/ , 
+                                        boolean compat,
+                                           char[] dest,
+                                           int destStart, 
+                                           int destCapacity) {
+            
+        if( (UNSIGNED_INT_MASK & c)<=0x10ffff) {
+            long /*unsigned*/ norm32;
+            int qcMask;
+            int minNoMaybe;
+            int length;
+    
+            // initialize 
+            if(!compat) {
+                minNoMaybe=(int)indexes[INDEX_MIN_NFD_NO_MAYBE];
+                qcMask=QC_NFD;
+            } else {
+                minNoMaybe=(int)indexes[INDEX_MIN_NFKD_NO_MAYBE];
+                qcMask=QC_NFKD;
+            }
+    
+            if(c<minNoMaybe) {
+                // trivial case 
+                if(destCapacity>0) {
+                    dest[0]=(char)c;
+                }
+                return -1;
+            }
+    
+            /* data lookup */
+            norm32=getNorm32(c);
+            if((norm32&qcMask)==0) {
+                /* simple case: no decomposition */
+                if(c<=0xffff) {
+                    if(destCapacity>0) {
+                        dest[0]=(char)c;
+                    }
+                    return -1;
+                } else {
+                    if(destCapacity>=2) {
+                        dest[0]=UTF16.getLeadSurrogate(c);
+                        dest[1]=UTF16.getTrailSurrogate(c);
+                    }
+                    return -2;
+                }
+            } else if(isNorm32HangulOrJamo(norm32)) {
+                /* Hangul syllable: decompose algorithmically */
+                char c2;
+    
+                c-=HANGUL_BASE;
+    
+                c2=(char)(c%JAMO_T_COUNT);
+                c/=JAMO_T_COUNT;
+                if(c2>0) {
+                    if(destCapacity>=3) {
+                        dest[2]=(char)(JAMO_T_BASE+c2);
+                    }
+                    length=3;
+                } else {
+                    length=2;
+                }
+    
+                if(destCapacity>=2) {
+                    dest[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+                    dest[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+                }
+                return length;
+            } else {
+                /* c decomposes, get everything from the variable-length extra 
+                 * data 
+                 */
+                int p, limit;
+                DecomposeArgs args = new DecomposeArgs();
+                /* the index into extra data array*/                 
+                p=decompose(norm32, qcMask, args);
+                if(args.length<=destCapacity) {
+                    limit=p+args.length;
+                    do {
+                        dest[destStart++]=extraData[p++];
+                    } while(p<limit);
+                }
+                return args.length;
+            }
+        } else {
+            return 0;
+        }
+    }
+
+    
+    public static int decompose(char[] src,int srcStart,int srcLimit,
+                                char[] dest,int destStart,int destLimit,
+                                 boolean compat,int[] outTrailCC,
+                                 UnicodeSet nx) {
+                                
+        char[] buffer = new char[3];
+        int prevSrc;
+        long norm32;
+        int ccOrQCMask, qcMask;
+        int reorderStartIndex, length;
+        char c, c2, minNoMaybe;
+        int/*unsigned byte*/ cc, prevCC, trailCC;
+        char[] p;
+        int pStart;
+        int destIndex = destStart;
+        int srcIndex = srcStart;
+        if(!compat) {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFD_NO_MAYBE];
+            qcMask=QC_NFD;
+        } else {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFKD_NO_MAYBE];
+            qcMask=QC_NFKD;
+        }
+    
+        /* initialize */
+        ccOrQCMask=CC_MASK|qcMask;
+        reorderStartIndex=0;
+        prevCC=0;
+        norm32=0;
+        c=0;
+        pStart=0;
+        
+        cc=trailCC=-1;//initialize to bogus value
+        
+        for(;;) {
+            /* count code units below the minimum or with irrelevant data for 
+             * the quick check 
+             */
+            prevSrc=srcIndex;
+
+            while(srcIndex!=srcLimit &&((c=src[srcIndex])<minNoMaybe || 
+                                        ((norm32=getNorm32(c))&ccOrQCMask)==0)){
+                prevCC=0;
+                ++srcIndex;
+            }
+
+            /* copy these code units all at once */
+            if(srcIndex!=prevSrc) {
+                length=(int)(srcIndex-prevSrc);
+                if((destIndex+length)<=destLimit) {
+                    System.arraycopy(src,prevSrc,dest,destIndex,length);
+                }
+              
+                destIndex+=length;
+                reorderStartIndex=destIndex;
+            }
+    
+            /* end of source reached? */
+            if(srcIndex==srcLimit) {
+                break;
+            }
+    
+            /* c already contains *src and norm32 is set for it, increment src*/
+            ++srcIndex;
+    
+            /* check one above-minimum, relevant code unit */
+            /*
+             * generally, set p and length to the decomposition string
+             * in simple cases, p==NULL and (c, c2) will hold the length code 
+             * units to append in all cases, set cc to the lead and trailCC to 
+             * the trail combining class
+             *
+             * the following merge-sort of the current character into the 
+             * preceding, canonically ordered result text will use the 
+             * optimized insertOrdered()
+             * if there is only one single code point to process;
+             * this is indicated with p==NULL, and (c, c2) is the character to 
+             * insert
+             * ((c, 0) for a BMP character and (lead surrogate, trail surrogate)
+             * for a supplementary character)
+             * otherwise, p[length] is merged in with _mergeOrdered()
+             */
+            if(isNorm32HangulOrJamo(norm32)) {
+                if(nx_contains(nx, c)) {
+                    c2=0;
+                    p=null;
+                    length=1;
+                } else {
+                    // Hangul syllable: decompose algorithmically 
+                    p=buffer;
+                    pStart=0;
+                    cc=trailCC=0;
+    
+                    c-=HANGUL_BASE;
+    
+                    c2=(char)(c%JAMO_T_COUNT);
+                    c/=JAMO_T_COUNT;
+                    if(c2>0) {
+                        buffer[2]=(char)(JAMO_T_BASE+c2);
+                        length=3;
+                    } else {
+                        length=2;
+                    }
+    
+                    buffer[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+                    buffer[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+                }
+            } else {
+                if(isNorm32Regular(norm32)) {
+                    c2=0;
+                    length=1;
+                } else {
+                    // c is a lead surrogate, get the real norm32 
+                    if(srcIndex!=srcLimit && 
+                                    UTF16.isTrailSurrogate(c2=src[srcIndex])) {
+                        ++srcIndex;
+                        length=2;
+                        norm32=getNorm32FromSurrogatePair(norm32, c2);
+                    } else {
+                        c2=0;
+                        length=1;
+                        norm32=0;
+                    }
+                }
+    
+                /* get the decomposition and the lead and trail cc's */
+                if(nx_contains(nx, c, c2)) {
+                    /* excluded: norm32==0 */
+                    cc=trailCC=0;
+                    p=null;
+                } else if((norm32&qcMask)==0) {
+                    /* c does not decompose */
+                    cc=trailCC=(int)((UNSIGNED_BYTE_MASK) & (norm32>>CC_SHIFT));
+                    p=null;
+                    pStart=-1;
+                } else {
+                    DecomposeArgs arg = new DecomposeArgs();
+                    /* c decomposes, get everything from the variable-length 
+                     * extra data 
+                     */
+                    pStart=decompose(norm32, qcMask, arg);
+                    p=extraData;
+                    length=arg.length;
+                    cc=arg.cc;
+                    trailCC=arg.trailCC;
+                    if(length==1) {
+                        /* fastpath a single code unit from decomposition */
+                        c=p[pStart];
+                        c2=0;
+                        p=null;
+                        pStart=-1;
+                    }
+                }
+            }
+    
+            /* append the decomposition to the destination buffer, assume 
+             * length>0 
+             */
+            if((destIndex+length)<=destLimit) {
+                int reorderSplit=destIndex;
+                if(p==null) {
+                    /* fastpath: single code point */
+                    if(cc!=0 && cc<prevCC) {
+                        /* (c, c2) is out of order with respect to the preceding
+                         *  text 
+                         */
+                        destIndex+=length;
+                        trailCC=insertOrdered(dest,reorderStartIndex, 
+                                            reorderSplit, destIndex, c, c2, cc);
+                    } else {
+                        /* just append (c, c2) */
+                        dest[destIndex++]=c;
+                        if(c2!=0) {
+                            dest[destIndex++]=c2;
+                        }
+                    }
+                } else {
+                    /* general: multiple code points (ordered by themselves) 
+                     * from decomposition 
+                     */
+                    if(cc!=0 && cc<prevCC) {
+                        /* the decomposition is out of order with respect to the
+                         *  preceding text 
+                         */
+                        destIndex+=length;
+                        trailCC=mergeOrdered(dest,reorderStartIndex, 
+                                          reorderSplit,p, pStart,pStart+length);
+                    } else {
+                        /* just append the decomposition */
+                        do {
+                            dest[destIndex++]=p[pStart++];
+                        } while(--length>0);
+                    }
+                }
+            } else {
+                /* buffer overflow */
+                /* keep incrementing the destIndex for preflighting */
+                destIndex+=length;
+            }
+    
+            prevCC=trailCC;
+            if(prevCC==0) {
+                reorderStartIndex=destIndex;
+            }
+        }
+    
+        outTrailCC[0]=prevCC;
+
+        return destIndex - destStart;
+    }
+    
+    /* make NFC & NFKC ------------------------------------------------------ */
+    private static final class NextCombiningArgs{
+        char[] source;
+        int start;
+        //int limit;
+        char c;
+        char c2;
+        int/*unsigned*/ combiningIndex;
+        char /*unsigned byte*/ cc;
+    }
+    
+    /* get the composition properties of the next character */
+    private static int /*unsigned*/    getNextCombining(NextCombiningArgs args,
+                                                    int limit,
+                                                    UnicodeSet nx) {
+        long/*unsigned*/ norm32; 
+        int combineFlags;
+        /* get properties */
+        args.c=args.source[args.start++];
+        norm32=getNorm32(args.c);
+        
+        /* preset output values for most characters */
+        args.c2=0;
+        args.combiningIndex=0;
+        args.cc=0;
+        
+        if((norm32&(CC_MASK|COMBINES_ANY))==0) {
+            return 0;
+        } else {
+            if(isNorm32Regular(norm32)) {
+                /* set cc etc. below */
+            } else if(isNorm32HangulOrJamo(norm32)) {
+                /* a compatibility decomposition contained Jamos */
+                args.combiningIndex=(int)((UNSIGNED_INT_MASK)&(0xfff0|
+                                                        (norm32>>EXTRA_SHIFT)));
+                return (int)(norm32&COMBINES_ANY);
+            } else {
+                /* c is a lead surrogate, get the real norm32 */
+                if(args.start!=limit && UTF16.isTrailSurrogate(args.c2=
+                                                     args.source[args.start])) {
+                    ++args.start;
+                    norm32=getNorm32FromSurrogatePair(norm32, args.c2);
+                } else {
+                    args.c2=0;
+                    return 0;
+                }
+            }
+            
+            if(nx_contains(nx, args.c, args.c2)) {
+                return 0; /* excluded: norm32==0 */
+            }
+    
+            args.cc= (char)((norm32>>CC_SHIFT)&0xff);
+        
+            combineFlags=(int)(norm32&COMBINES_ANY);
+            if(combineFlags!=0) {
+                int index = getExtraDataIndex(norm32);
+                args.combiningIndex=index>0 ? extraData[(index-1)] :0;
+            }
+    
+            return combineFlags;
+        }
+    }
+    
+    /*
+     * given a composition-result starter (c, c2) - which means its cc==0,
+     * it combines forward, it has extra data, its norm32!=0,
+     * it is not a Hangul or Jamo,
+     * get just its combineFwdIndex
+     *
+     * norm32(c) is special if and only if c2!=0
+     */
+    private static int/*unsigned*/ getCombiningIndexFromStarter(char c,char c2){
+        long/*unsigned*/ norm32;
+    
+        norm32=getNorm32(c);
+        if(c2!=0) {
+            norm32=getNorm32FromSurrogatePair(norm32, c2);
+        }
+        return extraData[(getExtraDataIndex(norm32)-1)];
+    }
+    
+    /*
+     * Find the recomposition result for
+     * a forward-combining character
+     * (specified with a pointer to its part of the combiningTable[])
+     * and a backward-combining character
+     * (specified with its combineBackIndex).
+     *
+     * If these two characters combine, then set (value, value2)
+     * with the code unit(s) of the composition character.
+     *
+     * Return value:
+     * 0    do not combine
+     * 1    combine
+     * >1   combine, and the composition is a forward-combining starter
+     *
+     * See unormimp.h for a description of the composition table format.
+     */
+    private static int/*unsigned*/ combine(char[]table,int tableStart, 
+                                   int/*unsinged*/ combineBackIndex,
+                                    int[] outValues) {
+        int/*unsigned*/ key;
+        int value,value2;
+        
+        if(outValues.length<2){
+            throw new IllegalArgumentException();
+        }
+        
+        /* search in the starter's composition table */
+        for(;;) {
+            key=table[tableStart++];
+            if(key>=combineBackIndex) {
+                break;
+            }
+            tableStart+= ((table[tableStart]&0x8000) != 0)? 2 : 1;
+        }
+    
+        /* mask off bit 15, the last-entry-in-the-list flag */
+        if((key&0x7fff)==combineBackIndex) {
+            /* found! combine! */
+            value=table[tableStart];
+    
+            /* is the composition a starter that combines forward? */
+            key=(int)((UNSIGNED_INT_MASK)&((value&0x2000)+1));
+    
+            /* get the composition result code point from the variable-length 
+             * result value 
+             */
+            if((value&0x8000) != 0) {
+                if((value&0x4000) != 0) {
+                    /* surrogate pair composition result */
+                    value=(int)((UNSIGNED_INT_MASK)&((value&0x3ff)|0xd800));
+                    value2=table[tableStart+1];
+                } else {
+                    /* BMP composition result U+2000..U+ffff */
+                    value=table[tableStart+1];
+                    value2=0;
+                }
+            } else {
+                /* BMP composition result U+0000..U+1fff */
+                value&=0x1fff;
+                value2=0;
+            }
+            outValues[0]=value;
+            outValues[1]=value2;    
+            return key;
+        } else {
+            /* not found */
+            return 0;
+        }
+    }
+    
+    
+    private static final class RecomposeArgs{
+        char[] source;
+        int start;
+        int limit;
+    }
+    /*
+     * recompose the characters in [p..limit[
+     * (which is in NFD - decomposed and canonically ordered),
+     * adjust limit, and return the trailing cc
+     *
+     * since for NFKC we may get Jamos in decompositions, we need to
+     * recompose those too
+     *
+     * note that recomposition never lengthens the text:
+     * any character consists of either one or two code units;
+     * a composition may contain at most one more code unit than the original 
+     * starter, while the combining mark that is removed has at least one code 
+     * unit
+     */
+    private static char/*unsigned byte*/ recompose(RecomposeArgs args, int options, UnicodeSet nx) {
+        int  remove, q, r;
+        int /*unsigned*/ combineFlags;
+        int /*unsigned*/ combineFwdIndex, combineBackIndex;
+        int /*unsigned*/ result, value=0, value2=0;
+        int /*unsigned byte*/  prevCC;
+        boolean starterIsSupplementary;
+        int starter;
+        int[] outValues = new int[2];
+        starter=-1;                   /* no starter */
+        combineFwdIndex=0;            /* will not be used until starter!=NULL */
+        starterIsSupplementary=false; /* will not be used until starter!=NULL */
+        prevCC=0;
+        
+        NextCombiningArgs ncArg = new NextCombiningArgs();
+        ncArg.source  = args.source;
+        
+        ncArg.cc      =0;
+        ncArg.c2      =0;    
+
+        for(;;) {
+            ncArg.start = args.start;
+            combineFlags=getNextCombining(ncArg,args.limit,nx);
+            combineBackIndex=ncArg.combiningIndex;
+            args.start = ncArg.start;
+                        
+            if(((combineFlags&COMBINES_BACK)!=0) && starter!=-1) {
+                if((combineBackIndex&0x8000)!=0) {
+                    /* c is a Jamo V/T, see if we can compose it with the 
+                     * previous character 
+                     */
+                    /* for the PRI #29 fix, check that there is no intervening combining mark */
+                    if((options&BEFORE_PRI_29)!=0 || prevCC==0) {
+                        remove=-1; /* NULL while no Hangul composition */
+                        combineFlags=0;
+                        ncArg.c2=args.source[starter];
+                        if(combineBackIndex==0xfff2) {
+                            /* Jamo V, compose with previous Jamo L and following 
+                             * Jamo T 
+                             */
+                            ncArg.c2=(char)(ncArg.c2-JAMO_L_BASE);
+                            if(ncArg.c2<JAMO_L_COUNT) {
+                                remove=args.start-1;
+                                ncArg.c=(char)(HANGUL_BASE+(ncArg.c2*JAMO_V_COUNT+
+                                               (ncArg.c-JAMO_V_BASE))*JAMO_T_COUNT);
+                                if(args.start!=args.limit && 
+                                            (ncArg.c2=(char)(args.source[args.start]
+                                             -JAMO_T_BASE))<JAMO_T_COUNT) {
+                                    ++args.start;
+                                    ncArg.c+=ncArg.c2;
+                                 } else {
+                                     /* the result is an LV syllable, which is a starter (unlike LVT) */
+                                     combineFlags=COMBINES_FWD;
+                                }
+                                if(!nx_contains(nx, ncArg.c)) {
+                                    args.source[starter]=ncArg.c;
+                                   } else {
+                                    /* excluded */
+                                    if(!isHangulWithoutJamoT(ncArg.c)) {
+                                        --args.start; /* undo the ++args.start from reading the Jamo T */
+                                    }
+                                    /* c is modified but not used any more -- c=*(p-1); -- re-read the Jamo V/T */
+                                    remove=args.start;
+                                }
+                            }
+
+                        /*
+                         * Normally, the following can not occur:
+                         * Since the input is in NFD, there are no Hangul LV syllables that
+                         * a Jamo T could combine with.
+                         * All Jamo Ts are combined above when handling Jamo Vs.
+                         *
+                         * However, before the PRI #29 fix, this can occur due to
+                         * an intervening combining mark between the Hangul LV and the Jamo T.
+                         */
+                        } else {
+                            /* Jamo T, compose with previous Hangul that does not have a Jamo T */
+                            if(isHangulWithoutJamoT(ncArg.c2)) {
+                                ncArg.c2+=ncArg.c-JAMO_T_BASE;
+                                if(!nx_contains(nx, ncArg.c2)) {
+                                    remove=args.start-1;
+                                    args.source[starter]=ncArg.c2;
+                                }
+                            }
+                        }
+        
+                        if(remove!=-1) {
+                            /* remove the Jamo(s) */
+                            q=remove;
+                            r=args.start;
+                            while(r<args.limit) {
+                                args.source[q++]=args.source[r++];
+                            }
+                            args.start=remove;
+                            args.limit=q;
+                        }
+        
+                        ncArg.c2=0; /* c2 held *starter temporarily */
+
+                        if(combineFlags!=0) {
+                            /*
+                             * not starter=NULL because the composition is a Hangul LV syllable
+                             * and might combine once more (but only before the PRI #29 fix)
+                             */
+
+                            /* done? */
+                            if(args.start==args.limit) {
+                                return (char)prevCC;
+                            }
+
+                            /* the composition is a Hangul LV syllable which is a starter that combines forward */
+                            combineFwdIndex=0xfff0;
+
+                            /* we combined; continue with looking for compositions */
+                            continue;
+                        }
+                    }
+
+                    /*
+                     * now: cc==0 and the combining index does not include 
+                     * "forward" -> the rest of the loop body will reset starter
+                     * to NULL; technically, a composed Hangul syllable is a 
+                     * starter, but it does not combine forward now that we have
+                     * consumed all eligible Jamos; for Jamo V/T, combineFlags 
+                     * does not contain _NORM_COMBINES_FWD
+                     */
+    
+                } else if(
+                    /* the starter is not a Hangul LV or Jamo V/T and */
+                    !((combineFwdIndex&0x8000)!=0) &&
+                    /* the combining mark is not blocked and */
+                    ((options&BEFORE_PRI_29)!=0 ?
+                        (prevCC!=ncArg.cc || prevCC==0) :
+                        (prevCC<ncArg.cc || prevCC==0)) &&
+                    /* the starter and the combining mark (c, c2) do combine */
+                    0!=(result=combine(combiningTable,combineFwdIndex, 
+                                       combineBackIndex, outValues)) &&
+                    /* the composition result is not excluded */
+                    !nx_contains(nx, (char)value, (char)value2)
+                ) {
+                    value=outValues[0];
+                    value2=outValues[1];
+                    /* replace the starter with the composition, remove the 
+                     * combining mark 
+                     */
+                    remove= ncArg.c2==0 ? args.start-1 : args.start-2; /* index to the combining mark */
+    
+                    /* replace the starter with the composition */
+                    args.source[starter]=(char)value;
+                    if(starterIsSupplementary) {
+                        if(value2!=0) {
+                            /* both are supplementary */
+                            args.source[starter+1]=(char)value2;
+                        } else {
+                            /* the composition is shorter than the starter, 
+                             * move the intermediate characters forward one */
+                            starterIsSupplementary=false;
+                            q=starter+1;
+                            r=q+1;
+                            while(r<remove) {
+                                args.source[q++]=args.source[r++];
+                            }
+                            --remove;
+                        }
+                    } else if(value2!=0) {
+                        /* the composition is longer than the starter, 
+                         * move the intermediate characters back one */
+                        starterIsSupplementary=true;
+                        /* temporarily increment for the loop boundary */
+                        ++starter; 
+                        q=remove;
+                        r=++remove;
+                        while(starter<q) {
+                            args.source[--r]=args.source[--q];
+                        }
+                        args.source[starter]=(char)value2;
+                        --starter; /* undo the temporary increment */
+                    /* } else { both are on the BMP, nothing more to do */
+                    }
+    
+                    /* remove the combining mark by moving the following text 
+                     * over it */
+                    if(remove<args.start) {
+                        q=remove;
+                        r=args.start;
+                        while(r<args.limit) {
+                            args.source[q++]=args.source[r++];
+                        }
+                        args.start=remove;
+                        args.limit=q;
+                    }
+    
+                    /* keep prevCC because we removed the combining mark */
+    
+                    /* done? */
+                    if(args.start==args.limit) {
+                        return (char)prevCC;
+                    }
+    
+                    /* is the composition a starter that combines forward? */
+                    if(result>1) {
+                       combineFwdIndex=getCombiningIndexFromStarter((char)value,
+                                                                  (char)value2);
+                    } else {
+                       starter=-1;
+                    }
+    
+                    /* we combined; continue with looking for compositions */
+                    continue;
+                }
+            }
+    
+            /* no combination this time */
+            prevCC=ncArg.cc;
+            if(args.start==args.limit) {
+                return (char)prevCC;
+            }
+    
+            /* if (c, c2) did not combine, then check if it is a starter */
+            if(ncArg.cc==0) {
+                /* found a new starter; combineFlags==0 if (c, c2) is excluded */
+                if((combineFlags&COMBINES_FWD)!=0) {
+                    /* it may combine with something, prepare for it */
+                    if(ncArg.c2==0) {
+                        starterIsSupplementary=false;
+                        starter=args.start-1;
+                    } else {
+                        starterIsSupplementary=false;
+                        starter=args.start-2;
+                    }
+                    combineFwdIndex=combineBackIndex;
+                } else {
+                    /* it will not combine with anything */
+                    starter=-1;
+                }
+            } else if((options&OPTIONS_COMPOSE_CONTIGUOUS)!=0) {
+                /* FCC: no discontiguous compositions; any intervening character blocks */
+                starter=-1;
+            }
+        }
+    }
+   
+    // find the last true starter between src[start]....src[current] going 
+    // backwards and return its index
+    private static int findPreviousStarter(char[]src, int srcStart, int current, 
+                                          int/*unsigned*/ ccOrQCMask, 
+                                          int/*unsigned*/ decompQCMask,
+                                          char minNoMaybe) { 
+       long norm32; 
+       PrevArgs args = new PrevArgs();
+       args.src = src;
+       args.start = srcStart;
+       args.current = current;
+       
+       while(args.start<args.current) { 
+           norm32= getPrevNorm32(args, minNoMaybe, ccOrQCMask|decompQCMask); 
+           if(isTrueStarter(norm32, ccOrQCMask, decompQCMask)) { 
+               break; 
+           } 
+       } 
+       return args.current; 
+    }
+    
+    /* find the first true starter in [src..limit[ and return the 
+     * pointer to it 
+     */
+    private static int/*index*/    findNextStarter(char[] src,int start,int limit,
+                                                 int/*unsigned*/ qcMask, 
+                                                 int/*unsigned*/ decompQCMask, 
+                                                 char minNoMaybe) {
+        int p;
+        long/*unsigned*/ norm32; 
+        int ccOrQCMask;
+        char c, c2;
+    
+        ccOrQCMask=CC_MASK|qcMask;
+        
+        DecomposeArgs decompArgs = new DecomposeArgs();
+
+        for(;;) {
+            if(start==limit) {
+                break; /* end of string */
+            }
+            c=src[start];
+            if(c<minNoMaybe) {
+                break; /* catches NUL terminater, too */
+            }
+    
+            norm32=getNorm32(c);
+            if((norm32&ccOrQCMask)==0) {
+                break; /* true starter */
+            }
+    
+            if(isNorm32LeadSurrogate(norm32)) {
+                /* c is a lead surrogate, get the real norm32 */
+                if((start+1)==limit || 
+                                   !UTF16.isTrailSurrogate(c2=(src[start+1]))){
+                    /* unmatched first surrogate: counts as a true starter */                  
+                    break; 
+                }
+                norm32=getNorm32FromSurrogatePair(norm32, c2);
+    
+                if((norm32&ccOrQCMask)==0) {
+                    break; /* true starter */
+                }
+            } else {
+                c2=0;
+            }
+    
+            /* (c, c2) is not a true starter but its decomposition may be */
+            if((norm32&decompQCMask)!=0) {
+                /* (c, c2) decomposes, get everything from the variable-length
+                 *  extra data */
+                p=decompose(norm32, decompQCMask, decompArgs);
+    
+                /* get the first character's norm32 to check if it is a true 
+                 * starter */
+                if(decompArgs.cc==0 && (getNorm32(extraData,p, qcMask)&qcMask)==0) {
+                    break; /* true starter */
+                }
+            }
+    
+            start+= c2==0 ? 1 : 2; /* not a true starter, continue */
+        }
+    
+        return start;
+    }
+    
+    
+    private static final class ComposePartArgs{
+        int prevCC;
+        int length;   /* length of decomposed part */
+    }
+        
+     /* decompose and recompose [prevStarter..src[ */
+    private static char[] composePart(ComposePartArgs args, 
+                                      int prevStarter, 
+                                         char[] src, int start, int limit,
+                                       int options,
+                                       UnicodeSet nx) {
+        int recomposeLimit;
+        boolean compat =((options&OPTIONS_COMPAT)!=0);
+        
+        /* decompose [prevStarter..src[ */
+        int[] outTrailCC = new int[1];
+        char[] buffer = new char[(limit-prevStarter)*MAX_BUFFER_SIZE];
+
+        for(;;){
+            args.length=decompose(src,prevStarter,(start),
+                                      buffer,0,buffer.length, 
+                                      compat,outTrailCC,nx);
+            if(args.length<=buffer.length){
+                break;
+            }else{
+                buffer = new char[args.length];
+            }
+        } 
+    
+        /* recompose the decomposition */
+        recomposeLimit=args.length;
+          
+        if(args.length>=2) {
+            RecomposeArgs rcArgs = new RecomposeArgs();
+            rcArgs.source    = buffer;
+            rcArgs.start    = 0;
+            rcArgs.limit    = recomposeLimit; 
+            args.prevCC=recompose(rcArgs, options, nx);
+            recomposeLimit = rcArgs.limit;
+        }
+        
+        /* return with a pointer to the recomposition and its length */
+        args.length=recomposeLimit;
+        return buffer;
+    }
+    
+    private static boolean composeHangul(char prev, char c,
+                                         long/*unsigned*/ norm32, 
+                                         char[] src,int[] srcIndex, int limit,
+                                            boolean compat, 
+                                         char[] dest,int destIndex,
+                                         UnicodeSet nx) {
+        int start=srcIndex[0];
+        if(isJamoVTNorm32JamoV(norm32)) {
+            /* c is a Jamo V, compose with previous Jamo L and 
+             * following Jamo T */
+            prev=(char)(prev-JAMO_L_BASE);
+            if(prev<JAMO_L_COUNT) {
+                c=(char)(HANGUL_BASE+(prev*JAMO_V_COUNT+
+                                                 (c-JAMO_V_BASE))*JAMO_T_COUNT);
+    
+                /* check if the next character is a Jamo T (normal or 
+                 * compatibility) */
+                if(start!=limit) {
+                    char next, t;
+    
+                    next=src[start];
+                    if((t=(char)(next-JAMO_T_BASE))<JAMO_T_COUNT) {
+                        /* normal Jamo T */
+                        ++start;
+                        c+=t;
+                    } else if(compat) {
+                        /* if NFKC, then check for compatibility Jamo T 
+                         * (BMP only) */
+                        norm32=getNorm32(next);
+                        if(isNorm32Regular(norm32) && ((norm32&QC_NFKD)!=0)) {
+                            int p /*index into extra data array*/;
+                            DecomposeArgs dcArgs = new DecomposeArgs();
+                            p=decompose(norm32, QC_NFKD, dcArgs);
+                            if(dcArgs.length==1 && 
+                                   (t=(char)(extraData[p]-JAMO_T_BASE))
+                                                   <JAMO_T_COUNT) {
+                                /* compatibility Jamo T */
+                                ++start;
+                                c+=t;
+                            }
+                        }
+                    }
+                }
+                if(nx_contains(nx, c)) {
+                    if(!isHangulWithoutJamoT(c)) {
+                        --start; /* undo ++start from reading the Jamo T */
+                    }
+                    return false;
+                }
+                dest[destIndex]=c;
+                srcIndex[0]=start;
+                return true;
+            }
+        } else if(isHangulWithoutJamoT(prev)) {
+            /* c is a Jamo T, compose with previous Hangul LV that does not 
+             * contain a Jamo T */
+            c=(char)(prev+(c-JAMO_T_BASE));
+            if(nx_contains(nx, c)) {
+                return false;
+            }
+            dest[destIndex]=c;
+            srcIndex[0]=start;
+            return true;
+        }
+        return false;
+    }
+    /*
+    public static int compose(char[] src, char[] dest,boolean compat, UnicodeSet nx){
+        return compose(src,0,src.length,dest,0,dest.length,compat, nx);
+    }
+    */
+    
+    public static int compose(char[] src, int srcStart, int srcLimit,
+                              char[] dest,int destStart,int destLimit,
+                              int options,UnicodeSet nx) {
+        
+        int prevSrc, prevStarter;
+        long/*unsigned*/ norm32; 
+        int ccOrQCMask, qcMask;
+        int  reorderStartIndex, length;
+        char c, c2, minNoMaybe;
+        int/*unsigned byte*/ cc, prevCC;
+        int[] ioIndex = new int[1];
+        int destIndex = destStart;
+        int srcIndex = srcStart;
+        
+        if((options&OPTIONS_COMPAT)!=0) {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFKC_NO_MAYBE];
+            qcMask=QC_NFKC;
+        } else {
+            minNoMaybe=(char)indexes[INDEX_MIN_NFC_NO_MAYBE];
+            qcMask=QC_NFC;
+        }
+    
+        /*
+         * prevStarter points to the last character before the current one
+         * that is a "true" starter with cc==0 and quick check "yes".
+         *
+         * prevStarter will be used instead of looking for a true starter
+         * while incrementally decomposing [prevStarter..prevSrc[
+         * in _composePart(). Having a good prevStarter allows to just decompose
+         * the entire [prevStarter..prevSrc[.
+         *
+         * When _composePart() backs out from prevSrc back to prevStarter,
+         * then it also backs out destIndex by the same amount.
+         * Therefore, at all times, the (prevSrc-prevStarter) source units
+         * must correspond 1:1 to destination units counted with destIndex,
+         * except for reordering.
+         * This is true for the qc "yes" characters copied in the fast loop,
+         * and for pure reordering.
+         * prevStarter must be set forward to src when this is not true:
+         * In _composePart() and after composing a Hangul syllable.
+         *
+         * This mechanism relies on the assumption that the decomposition of a 
+         * true starter also begins with a true starter. gennorm/store.c checks 
+         * for this.
+         */
+        prevStarter=srcIndex;
+    
+        ccOrQCMask=CC_MASK|qcMask;
+        /*destIndex=*/reorderStartIndex=0;/* ####TODO#### check this **/
+        prevCC=0;
+    
+        /* avoid compiler warnings */
+        norm32=0;
+        c=0;
+    
+        for(;;) {
+            /* count code units below the minimum or with irrelevant data for 
+             * the quick check */
+            prevSrc=srcIndex;
+
+            while(srcIndex!=srcLimit && ((c=src[srcIndex])<minNoMaybe || 
+                     ((norm32=getNorm32(c))&ccOrQCMask)==0)) {
+                prevCC=0;
+                ++srcIndex;
+            }
+
+    
+            /* copy these code units all at once */
+            if(srcIndex!=prevSrc) {
+                length=(int)(srcIndex-prevSrc);
+                if((destIndex+length)<=destLimit) {
+                    System.arraycopy(src,prevSrc,dest,destIndex,length);
+                }
+                destIndex+=length;
+                reorderStartIndex=destIndex;
+    
+                /* set prevStarter to the last character in the quick check 
+                 * loop */
+                prevStarter=srcIndex-1;
+                if(UTF16.isTrailSurrogate(src[prevStarter]) && 
+                    prevSrc<prevStarter && 
+                    UTF16.isLeadSurrogate(src[(prevStarter-1)])) {
+                    --prevStarter;
+                }
+    
+                prevSrc=srcIndex;
+            }
+    
+            /* end of source reached? */
+            if(srcIndex==srcLimit) {
+                break;
+            }
+    
+            /* c already contains *src and norm32 is set for it, increment src*/
+            ++srcIndex;
+    
+            /*
+             * source buffer pointers:
+             *
+             *  all done      quick check   current char  not yet
+             *                "yes" but     (c, c2)       processed
+             *                may combine
+             *                forward
+             * [-------------[-------------[-------------[-------------[
+             * |             |             |             |             |
+             * start         prevStarter   prevSrc       src           limit
+             *
+             *
+             * destination buffer pointers and indexes:
+             *
+             *  all done      might take    not filled yet
+             *                characters for
+             *                reordering
+             * [-------------[-------------[-------------[
+             * |             |             |             |
+             * dest      reorderStartIndex destIndex     destCapacity
+             */
+    
+            /* check one above-minimum, relevant code unit */
+            /*
+             * norm32 is for c=*(src-1), and the quick check flag is "no" or 
+             * "maybe", and/or cc!=0
+             * check for Jamo V/T, then for surrogates and regular characters
+             * c is not a Hangul syllable or Jamo L because
+             * they are not marked with no/maybe for NFC & NFKC(and their cc==0)
+             */
+            if(isNorm32HangulOrJamo(norm32)) {
+                /*
+                 * c is a Jamo V/T:
+                 * try to compose with the previous character, Jamo V also with 
+                 * a following Jamo T, and set values here right now in case we 
+                 * just continue with the main loop
+                 */
+                prevCC=cc=0;
+                reorderStartIndex=destIndex;
+                ioIndex[0]=srcIndex;
+                if( 
+                    destIndex>0 &&
+                    composeHangul(src[(prevSrc-1)], c, norm32,src, ioIndex,
+                                  srcLimit, (options&OPTIONS_COMPAT)!=0, dest,
+                                  destIndex<=destLimit ? destIndex-1: 0,
+                                  nx)
+                ) {
+                    srcIndex=ioIndex[0];
+                    prevStarter=srcIndex;
+                    continue;
+                }
+                
+                srcIndex = ioIndex[0];
+    
+                /* the Jamo V/T did not compose into a Hangul syllable, just 
+                 * append to dest */
+                c2=0;
+                length=1;
+                prevStarter=prevSrc;
+            } else {
+                if(isNorm32Regular(norm32)) {
+                    c2=0;
+                    length=1;
+                } else {
+                    /* c is a lead surrogate, get the real norm32 */
+                    if(srcIndex!=srcLimit &&
+                                     UTF16.isTrailSurrogate(c2=src[srcIndex])) {
+                        ++srcIndex;
+                        length=2;
+                        norm32=getNorm32FromSurrogatePair(norm32, c2);
+                    } else {
+                        /* c is an unpaired lead surrogate, nothing to do */
+                        c2=0;
+                        length=1;
+                        norm32=0;
+                    }
+                }
+                ComposePartArgs args =new ComposePartArgs();
+                
+                /* we are looking at the character (c, c2) at [prevSrc..src[ */
+                if(nx_contains(nx, c, c2)) {
+                    /* excluded: norm32==0 */
+                    cc=0;
+                } else if((norm32&qcMask)==0) {
+                    cc=(int)((UNSIGNED_BYTE_MASK)&(norm32>>CC_SHIFT));
+                } else {
+                    char[] p;
+    
+                    /*
+                     * find appropriate boundaries around this character,
+                     * decompose the source text from between the boundaries,
+                     * and recompose it
+                     *
+                     * this puts the intermediate text into the side buffer because
+                     * it might be longer than the recomposition end result,
+                     * or the destination buffer may be too short or missing
+                     *
+                     * note that destIndex may be adjusted backwards to account
+                     * for source text that passed the quick check but needed to
+                     * take part in the recomposition
+                     */
+                    int decompQCMask=(qcMask<<2)&0xf; /* decomposition quick check mask */
+                    /*
+                     * find the last true starter in [prevStarter..src[
+                     * it is either the decomposition of the current character (at prevSrc),
+                     * or prevStarter
+                     */
+                    if(isTrueStarter(norm32, CC_MASK|qcMask, decompQCMask)) {
+                        prevStarter=prevSrc;
+                    } else {
+                        /* adjust destIndex: back out what had been copied with qc "yes" */
+                        destIndex-=prevSrc-prevStarter;
+                    }
+                
+                    /* find the next true starter in [src..limit[ */
+                    srcIndex=findNextStarter(src, srcIndex,srcLimit, qcMask, 
+                                               decompQCMask, minNoMaybe);
+                    //args.prevStarter = prevStarter;
+                    args.prevCC    = prevCC;                    
+                    //args.destIndex = destIndex;
+                    args.length = length;
+                    p=composePart(args,prevStarter,src,srcIndex,srcLimit,options,nx);
+                        
+                    if(p==null) {
+                        /* an error occurred (out of memory) */
+                        break;
+                    }
+                    
+                    prevCC      = args.prevCC;
+                    length      = args.length;
+                    
+                    /* append the recomposed buffer contents to the destination 
+                     * buffer */
+                    if((destIndex+args.length)<=destLimit) {
+                        int i=0;
+                        while(i<args.length) {
+                            dest[destIndex++]=p[i++];
+                            --length;
+                        }
+                    } else {
+                        /* buffer overflow */
+                        /* keep incrementing the destIndex for preflighting */
+                        destIndex+=length;
+                    }
+    
+                    prevStarter=srcIndex;
+                    continue;
+                }
+            }
+    
+            /* append the single code point (c, c2) to the destination buffer */
+            if((destIndex+length)<=destLimit) {
+                if(cc!=0 && cc<prevCC) {
+                    /* (c, c2) is out of order with respect to the preceding 
+                     * text */
+                    int reorderSplit= destIndex;
+                    destIndex+=length;
+                    prevCC=insertOrdered(dest,reorderStartIndex, reorderSplit, 
+                                         destIndex, c, c2, cc);
+                } else {
+                    /* just append (c, c2) */
+                    dest[destIndex++]=c;
+                    if(c2!=0) {
+                        dest[destIndex++]=c2;
+                    }
+                    prevCC=cc;
+                }
+            } else {
+                /* buffer overflow */
+                /* keep incrementing the destIndex for preflighting */
+                destIndex+=length;
+                prevCC=cc;
+            }
+        }
+
+        return destIndex - destStart;
+    }
+    /* make FCD --------------------------------------------------------------*/
+    
+    private static int/*index*/ findSafeFCD(char[] src, int start, int limit, 
+                                            char fcd16) {
+        char c, c2;
+    
+        /*
+         * find the first position in [src..limit[ after some cc==0 according 
+         * to FCD data
+         *
+         * at the beginning of the loop, we have fcd16 from before src
+         *
+         * stop at positions:
+         * - after trail cc==0
+         * - at the end of the source
+         * - before lead cc==0
+         */
+        for(;;) {
+            /* stop if trail cc==0 for the previous character */
+            if((fcd16&0xff)==0) {
+                break;
+            }
+    
+            /* get c=*src - stop at end of string */
+            if(start==limit) {
+                break;
+            }
+            c=src[start];
+    
+            /* stop if lead cc==0 for this character */
+            if(c<MIN_WITH_LEAD_CC || (fcd16=getFCD16(c))==0) {
+                break; /* catches terminating NUL, too */
+            }
+    
+            if(!UTF16.isLeadSurrogate(c)) {
+                if(fcd16<=0xff) {
+                    break;
+                }
+                ++start;
+            } else if(start+1!=limit && 
+                                    (UTF16.isTrailSurrogate(c2=src[start+1]))) {
+                /* c is a lead surrogate, get the real fcd16 */
+                fcd16=getFCD16FromSurrogatePair(fcd16, c2);
+                if(fcd16<=0xff) {
+                    break;
+                }
+                start+=2;
+            } else {
+                /* c is an unpaired first surrogate, lead cc==0 */
+                break;
+            }
+        }
+    
+        return start;
+    }
+    
+    private static int/*unsigned byte*/ decomposeFCD(char[] src, 
+                                                     int start,int decompLimit,
+                                                     char[] dest, 
+                                                     int[] destIndexArr,
+                                                     UnicodeSet nx) {
+        char[] p=null;
+        int pStart=-1;
+        
+        long /*unsigned int*/ norm32;
+        int reorderStartIndex;
+        char c, c2;
+        int/*unsigned byte*/ prevCC;
+        DecomposeArgs args = new DecomposeArgs();
+        int destIndex = destIndexArr[0];
+        /*
+         * canonically decompose [src..decompLimit[
+         *
+         * all characters in this range have some non-zero cc,
+         * directly or in decomposition,
+         * so that we do not need to check in the following for quick-check 
+         * limits etc.
+         *
+         * there _are_ _no_ Hangul syllables or Jamos in here because they are 
+         * FCD-safe (cc==0)!
+         *
+         * we also do not need to check for c==0 because we have an established 
+         * decompLimit
+         */
+        reorderStartIndex=destIndex;
+        prevCC=0;
+
+        while(start<decompLimit) {
+            c=src[start++];
+            norm32=getNorm32(c);
+            if(isNorm32Regular(norm32)) {
+                c2=0;
+                args.length=1;
+            } else {
+                /*
+                 * reminder: this function is called with [src..decompLimit[
+                 * not containing any Hangul/Jamo characters,
+                 * therefore the only specials are lead surrogates
+                 */
+                /* c is a lead surrogate, get the real norm32 */
+                if(start!=decompLimit && UTF16.isTrailSurrogate(c2=src[start])){
+                    ++start;
+                    args.length=2;
+                    norm32=getNorm32FromSurrogatePair(norm32, c2);
+                } else {
+                    c2=0;
+                    args.length=1;
+                    norm32=0;
+                }
+            }
+    
+            /* get the decomposition and the lead and trail cc's */
+            if(nx_contains(nx, c, c2)) {
+                /* excluded: norm32==0 */
+                args.cc=args.trailCC=0;
+                p=null;
+            } else if((norm32&QC_NFD)==0) {
+                /* c does not decompose */
+                args.cc=args.trailCC=(int)((UNSIGNED_BYTE_MASK)&
+                                                            (norm32>>CC_SHIFT));
+                p=null;
+            } else {
+                /* c decomposes, get everything from the variable-length extra 
+                 * data */
+                pStart=decompose(norm32, args);
+                p=extraData;
+                if(args.length==1) {
+                    /* fastpath a single code unit from decomposition */
+                    c=p[pStart];
+                    c2=0;
+                    p=null;
+                }
+            }
+    
+            /* append the decomposition to the destination buffer, assume 
+             * length>0 */
+            if((destIndex+args.length)<=dest.length) {
+                int reorderSplit=destIndex;
+                if(p==null) {
+                    /* fastpath: single code point */
+                    if(args.cc!=0 && args.cc<prevCC) {
+                        /* (c, c2) is out of order with respect to the preceding
+                         *  text */
+                        destIndex+=args.length;
+                        args.trailCC=insertOrdered(dest,reorderStartIndex, 
+                                                   reorderSplit, destIndex, 
+                                                   c, c2, args.cc);
+                    } else {
+                        /* just append (c, c2) */
+                        dest[destIndex++]=c;
+                        if(c2!=0) {
+                            dest[destIndex++]=c2;
+                        }
+                    }
+                } else {
+                    /* general: multiple code points (ordered by themselves) 
+                     * from decomposition */
+                    if(args.cc!=0 && args.cc<prevCC) {
+                        /* the decomposition is out of order with respect to 
+                         * the preceding text */
+                        destIndex+=args.length;
+                        args.trailCC=mergeOrdered(dest,reorderStartIndex, 
+                                                  reorderSplit, p, pStart,
+                                                  pStart+args.length);
+                    } else {
+                        /* just append the decomposition */
+                        do {
+                            dest[destIndex++]=p[pStart++];
+                        } while(--args.length>0);
+                    }
+                }
+            } else {
+                /* buffer overflow */
+                /* keep incrementing the destIndex for preflighting */
+                destIndex+=args.length;
+            }
+    
+            prevCC=args.trailCC;
+            if(prevCC==0) {
+                reorderStartIndex=destIndex;
+            }
+        }
+        destIndexArr[0]=destIndex;
+        return prevCC;
+    }
+    
+    public static int makeFCD(char[] src,  int srcStart,  int srcLimit,
+                              char[] dest, int destStart, int destLimit,
+                              UnicodeSet nx) {
+                           
+        int prevSrc, decompStart;
+        int destIndex, length;
+        char c, c2;
+        int /* unsigned int*/ fcd16;
+        int prevCC, cc;
+    
+        /* initialize */
+        decompStart=srcStart;
+        destIndex=destStart;
+        prevCC=0;
+        c=0;
+        fcd16=0;
+        int[] destIndexArr = new int[1];
+        destIndexArr[0]=destIndex;
+        
+        for(;;) {
+            /* skip a run of code units below the minimum or with irrelevant 
+             * data for the FCD check */
+            prevSrc=srcStart;
+
+            for(;;) {
+                if(srcStart==srcLimit) {
+                    break;
+                } else if((c=src[srcStart])<MIN_WITH_LEAD_CC) {
+                    prevCC=(int)-c;
+                } else if((fcd16=getFCD16(c))==0) {
+                    prevCC=0;
+                } else {
+                    break;
+                }
+                ++srcStart;
+            }
+
+    
+            /*
+             * prevCC has values from the following ranges:
+             * 0..0xff - the previous trail combining class
+             * <0      - the negative value of the previous code unit;
+             *           that code unit was <_NORM_MIN_WITH_LEAD_CC and its 
+             *           getFCD16()
+             *           was deferred so that average text is checked faster
+             */
+    
+            /* copy these code units all at once */
+            if(srcStart!=prevSrc) {
+                length=(int)(srcStart-prevSrc);
+                if((destIndex+length)<=destLimit) {
+                    System.arraycopy(src,prevSrc,dest,destIndex,length);
+                }
+                destIndex+=length;
+                prevSrc=srcStart;
+    
+                /* prevCC<0 is only possible from the above loop, i.e., only if
+                 *  prevSrc<src */
+                if(prevCC<0) {
+                    /* the previous character was <_NORM_MIN_WITH_LEAD_CC, we 
+                     * need to get its trail cc */
+                    if(!nx_contains(nx, (int)-prevCC)) {
+                        prevCC=(int)(getFCD16((int)-prevCC)&0xff);
+                    } else {
+                        prevCC=0; /* excluded: fcd16==0 */
+                    }
+                    /*
+                     * set a pointer to this below-U+0300 character;
+                     * if prevCC==0 then it will moved to after this character 
+                     * below
+                     */
+                    decompStart=prevSrc-1;
+                }
+            }
+            /*
+             * now:
+             * prevSrc==src - used later to adjust destIndex before 
+             *          decomposition
+             * prevCC>=0
+             */
+    
+            /* end of source reached? */
+            if(srcStart==srcLimit) {
+                break;
+            }
+    
+            /* set a pointer to after the last source position where prevCC==0*/
+            if(prevCC==0) {
+                decompStart=prevSrc;
+            }
+    
+            /* c already contains *src and fcd16 is set for it, increment src */
+            ++srcStart;
+    
+            /* check one above-minimum, relevant code unit */
+            if(UTF16.isLeadSurrogate(c)) {
+                /* c is a lead surrogate, get the real fcd16 */
+                if(srcStart!=srcLimit && 
+                                     UTF16.isTrailSurrogate(c2=src[srcStart])) {
+                    ++srcStart;
+                    fcd16=getFCD16FromSurrogatePair((char)fcd16, c2);
+                } else {
+                    c2=0;
+                    fcd16=0;
+                }
+            } else {
+                c2=0;
+            }
+    
+            /* we are looking at the character (c, c2) at [prevSrc..src[ */
+            if(nx_contains(nx, c, c2)) {
+                fcd16=0; /* excluded: fcd16==0 */
+            }
+            /* check the combining order, get the lead cc */
+            cc=(int)(fcd16>>8);
+            if(cc==0 || cc>=prevCC) {
+                /* the order is ok */
+                if(cc==0) {
+                    decompStart=prevSrc;
+                }
+                prevCC=(int)(fcd16&0xff);
+    
+                /* just append (c, c2) */
+                length= c2==0 ? 1 : 2;
+                if((destIndex+length)<=destLimit) {
+                    dest[destIndex++]=c;
+                    if(c2!=0) {
+                        dest[destIndex++]=c2;
+                    }
+                } else {
+                    destIndex+=length;
+                }
+            } else {
+                /*
+                 * back out the part of the source that we copied already but
+                 * is now going to be decomposed;
+                 * prevSrc is set to after what was copied
+                 */
+                destIndex-=(int)(prevSrc-decompStart);
+    
+                /*
+                 * find the part of the source that needs to be decomposed;
+                 * to be safe and simple, decompose to before the next character
+                 * with lead cc==0
+                 */
+                srcStart=findSafeFCD(src,srcStart, srcLimit, (char)fcd16);
+    
+                /*
+                 * the source text does not fulfill the conditions for FCD;
+                 * decompose and reorder a limited piece of the text
+                 */
+                destIndexArr[0] = destIndex;
+                prevCC=decomposeFCD(src,decompStart, srcStart,dest, 
+                                    destIndexArr,nx);
+                decompStart=srcStart;
+                destIndex=destIndexArr[0];
+            }
+        }
+        
+        return destIndex - destStart;
+    
+    }
+
+    public static int getCombiningClass(int c) {
+        long norm32;
+        norm32=getNorm32(c);
+        return (char)((norm32>>CC_SHIFT)&0xFF);
+    }
+    
+    public static boolean isFullCompositionExclusion(int c) {
+        if(isFormatVersion_2_1) {
+            int aux =AuxTrieImpl.auxTrie.getCodePointValue(c);
+            return (boolean)((aux & AUX_COMP_EX_MASK)!=0);
+        } else {
+            return false;
+        }
+    }
+    
+    public static boolean isCanonSafeStart(int c) {
+        if(isFormatVersion_2_1) {
+            int aux = AuxTrieImpl.auxTrie.getCodePointValue(c);
+            return (boolean)((aux & AUX_UNSAFE_MASK)==0);
+        } else {
+            return false;
+        }
+    }
+    
+    public static boolean getCanonStartSet(int c, USerializedSet fillSet) {
+
+        if(fillSet!=null && canonStartSets!=null) {
+             /*
+             * binary search for c
+             *
+             * There are two search tables,
+             * one for BMP code points and one for supplementary ones.
+             * See unormimp.h for details.
+             */
+            char[] table;
+            int i=0, start, limit;
+            
+            int[] idxs = (int[]) canonStartSets[CANON_SET_INDICIES_INDEX];
+            char[] startSets = (char[]) canonStartSets[CANON_SET_START_SETS_INDEX];
+            
+            if(c<=0xffff) {
+                table=(char[]) canonStartSets[CANON_SET_BMP_TABLE_INDEX];
+                start=0;
+                limit=table.length;
+    
+                /* each entry is a pair { c, result } */
+                while(start<limit-2) {
+                    i=(char)(((start+limit)/4)*2); 
+                    if(c<table[i]) {
+                        limit=i;
+                    } else {
+                        start=i;
+                    }
+                }
+                //System.out.println(i);
+                /* found? */
+                if(c==table[start]) {
+                    i=table[start+1];
+                    if((i & CANON_SET_BMP_MASK)==CANON_SET_BMP_IS_INDEX) {
+                        /* result 01xxxxxx xxxxxx contains index x to a 
+                         * USerializedSet */
+                        i&=(CANON_SET_MAX_CANON_SETS-1);
+                        return fillSet.getSet(startSets,(i-idxs.length));
+                    } else {
+                        /* other result values are BMP code points for 
+                         * single-code point sets */
+                        fillSet.setToOne(i);
+                        return true;
+                    }
+                }
+            } else {
+                char high, low, h,j=0;
+    
+                table=(char[]) canonStartSets[CANON_SET_SUPP_TABLE_INDEX];
+                start=0;
+                limit=table.length;
+    
+                high=(char)(c>>16);
+                low=(char)c;
+    
+                /* each entry is a triplet { high(c), low(c), result } */
+                while(start<limit-3) {
+                    /* (start+limit)/2 and address triplets */
+                    i=(char)(((start+limit)/6)*3);
+                    j=(char)(table[i]&0x1f); /* high word */
+                    int tableVal = table[i+1];
+                    int lowInt = low;
+                    if(high<j || ((tableVal>lowInt) && (high==j))) {
+                        limit=i;
+                    } else {
+                        start=i;
+                    }
+                    
+                    //System.err.println("\t((high==j) && (table[i+1]>low)) == " + ((high==j) && (tableVal>lowInt)) );
+                    
+                    // KLUDGE: IBM JIT in 1.4.0 is sooo broken
+                    // The below lines make TestExhaustive pass
+                    if(ICUDebug.enabled()){
+                        System.err.println("\t\t j = " + Utility.hex(j,4) +
+                                           "\t i = " + Utility.hex(i,4) +
+                                           "\t high = "+ Utility.hex(high)  +
+                                           "\t low = "  + Utility.hex(lowInt,4)   +
+                                           "\t table[i+1]: "+ Utility.hex(tableVal,4) 
+                                           );
+                    }
+                   
+                }
+
+                /* found? */
+                h=table[start];
+
+                //System.err.println("c: \\U"+ Integer.toHexString(c)+" i : "+Integer.toHexString(i) +" h : " + Integer.toHexString(h));
+                int tableVal1 = table[start+1];
+                int lowInt = low;
+
+                if(high==(h&0x1f) && lowInt==tableVal1) {
+                    int tableVal2 = table[start+2];
+                    i=tableVal2;
+                    if((h&0x8000)==0) {
+                        /* the result is an index to a USerializedSet */
+                        return fillSet.getSet(startSets,(i-idxs.length));
+                    } else {
+                        /*
+                         * single-code point set {x} in
+                         * triplet { 100xxxxx 000hhhhh  llllllll llllllll  xxxxxxxx xxxxxxxx }
+                         */
+                        //i|=((int)h & 0x1f00)<<8; /* add high bits from high(c) */
+                        int temp = ((int)h & 0x1f00)<<8;
+                        i|=temp; /* add high bits from high(c) */
+                        fillSet.setToOne((int)i);
+                        return true;
+                    }
+                }
+            }
+        }
+    
+        return false; /* not found */
+    }
+    
+    public static int getFC_NFKC_Closure(int c, char[] dest) {
+        
+        int destCapacity;
+         
+        if(dest==null ) {
+            destCapacity=0;
+        }else{
+            destCapacity = dest.length;
+        }
+        
+        int aux =AuxTrieImpl.auxTrie.getCodePointValue(c);
+
+        aux&= AUX_FNC_MASK;
+        if(aux!=0) {
+            int s;
+            int index=aux; 
+            int length;
+            
+            s =extraData[index];
+            if(s<0xff00) {
+                /* s points to the single-unit string */
+                length=1;
+            } else {
+                length=s&0xff;
+                ++index;
+            }
+            if(0<length && length<=destCapacity) {
+                System.arraycopy(extraData,index,dest,0,length);
+            }
+            return length;
+        } else {
+            return 0;
+        }
+    }
+
+
+    /* Is c an NF<mode>-skippable code point? See unormimp.h. */
+    public static boolean isNFSkippable(int c, Normalizer.Mode mode, long mask) {
+        long /*unsigned int*/ norm32;
+        mask = mask & UNSIGNED_INT_MASK;
+        char aux;
+   
+        /* check conditions (a)..(e), see unormimp.h */
+        norm32 = getNorm32(c);
+
+        if((norm32&mask)!=0) {
+            return false; /* fails (a)..(e), not skippable */
+        }
+    
+        if(mode == Normalizer.NFD || mode == Normalizer.NFKD || mode == Normalizer.NONE){
+            return true; /* NF*D, passed (a)..(c), is skippable */
+        }
+        /* check conditions (a)..(e), see unormimp.h */
+
+        /* NF*C/FCC, passed (a)..(e) */
+        if((norm32& QC_NFD)==0) {
+            return true; /* no canonical decomposition, is skippable */
+        }
+    
+        /* check Hangul syllables algorithmically */
+        if(isNorm32HangulOrJamo(norm32)) {
+            /* Jamo passed (a)..(e) above, must be Hangul */
+            return !isHangulWithoutJamoT((char)c); /* LVT are skippable, LV are not */
+        }
+    
+        /* if(mode<=UNORM_NFKC) { -- enable when implementing FCC */
+        /* NF*C, test (f) flag */
+        if(!isFormatVersion_2_2) {
+            return false; /* no (f) data, say not skippable to be safe */
+        }
+    
+
+        aux = AuxTrieImpl.auxTrie.getCodePointValue(c);
+        return (aux&AUX_NFC_SKIP_F_MASK)==0; /* TRUE=skippable if the (f) flag is not set */
+    
+        /* } else { FCC, test fcd<=1 instead of the above } */
+    }
+    
+    /*
+        private static final boolean
+    _enumPropertyStartsRange(const void *context, UChar32 start, UChar32 limit, uint32_t value) {
+        // add the start code point to the USet 
+        uset_add((USet *)context, start);
+        return TRUE;
+    }
+    */
+
+    public static UnicodeSet addPropertyStarts(UnicodeSet set) {
+        int c;
+       
+        /* add the start code point of each same-value range of each trie */
+        //utrie_enum(&normTrie, NULL, _enumPropertyStartsRange, set);
+        TrieIterator normIter = new TrieIterator(NormTrieImpl.normTrie);
+        RangeValueIterator.Element normResult = new RangeValueIterator.Element();
+        
+        while(normIter.next(normResult)){
+            set.add(normResult.start);
+        }
+        
+        //utrie_enum(&fcdTrie, NULL, _enumPropertyStartsRange, set);
+        TrieIterator fcdIter  = new TrieIterator(FCDTrieImpl.fcdTrie);
+        RangeValueIterator.Element fcdResult = new RangeValueIterator.Element();
+
+        while(fcdIter.next(fcdResult)){
+            set.add(fcdResult.start);
+        }
+        
+        if(isFormatVersion_2_1){
+            //utrie_enum(&auxTrie, NULL, _enumPropertyStartsRange, set);
+            TrieIterator auxIter  = new TrieIterator(AuxTrieImpl.auxTrie);
+            RangeValueIterator.Element auxResult = new RangeValueIterator.Element();
+            while(auxIter.next(auxResult)){
+                set.add(auxResult.start);
+            }
+        }
+        /* add Hangul LV syllables and LV+1 because of skippables */
+        for(c=HANGUL_BASE; c<HANGUL_BASE+HANGUL_COUNT; c+=JAMO_T_COUNT) {
+            set.add(c);
+            set.add(c+1);
+        }
+        set.add(HANGUL_BASE+HANGUL_COUNT); /* add Hangul+1 to continue with other properties */
+        return set; // for chaining
+    }
+
+    /**
+     * Internal API, used in UCharacter.getIntPropertyValue().
+     * @internal
+     * @param c code point
+     * @param modeValue numeric value compatible with Mode
+     * @return numeric value compatible with QuickCheck
+     */
+    public static final int quickCheck(int c, int modeValue) {
+        final int qcMask[/*UNORM_MODE_COUNT*/]={
+            0, 0, QC_NFD, QC_NFKD, QC_NFC, QC_NFKC
+        };
+
+        int norm32=(int)getNorm32(c)&qcMask[modeValue];
+
+        if(norm32==0) {
+            return 1; // YES
+        } else if((norm32&QC_ANY_NO)!=0) {
+            return 0; // NO
+        } else /* _NORM_QC_ANY_MAYBE */ {
+            return 2; // MAYBE;
+        }
+    }
+
+    /**
+     * Internal API, used by collation code.
+     * Get access to the internal FCD trie table to be able to perform
+     * incremental, per-code unit, FCD checks in collation.
+     * One pointer is sufficient because the trie index values are offset
+     * by the index size, so that the same pointer is used to access the trie 
+     * data.
+     * @internal
+     */
+    ///CLOVER:OFF
+    public CharTrie getFCDTrie(){
+        return FCDTrieImpl.fcdTrie;
+    }
+    ///CLOVER:ON
+
+
+    
+   /* compare canonically equivalent ---------------------------------------- */
+
+    /*
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     *
+     * In this function, canonical equivalence is optional as well.
+     * If canonical equivalence is tested, then both strings must fulfill
+     * the FCD check.
+     *
+     * Semantically, this is equivalent to
+     *   strcmp[CodePointOrder](foldCase(NFD(s1)), foldCase(NFD(s2)))
+     * where code point order, NFD and foldCase are all optional.
+     *
+     * String comparisons almost always yield results before processing both 
+     * strings completely.
+     * They are generally more efficient working incrementally instead of
+     * performing the sub-processing (strlen, normalization, case-folding)
+     * on the entire strings first.
+     *
+     * It is also unnecessary to not normalize identical characters.
+     *
+     * This function works in principle as follows:
+     *
+     * loop {
+     *   get one code unit c1 from s1 (-1 if end of source)
+     *   get one code unit c2 from s2 (-1 if end of source)
+     *
+     *   if(either string finished) {
+     *     return result;
+     *   }
+     *   if(c1==c2) {
+     *     continue;
+     *   }
+     *
+     *   // c1!=c2
+     *   try to decompose/case-fold c1/c2, and continue if one does;
+     *
+     *   // still c1!=c2 and neither decomposes/case-folds, return result
+     *   return c1-c2;
+     * }
+     *
+     * When a character decomposes, then the pointer for that source changes to
+     * the decomposition, pushing the previous pointer onto a stack.
+     * When the end of the decomposition is reached, then the code unit reader
+     * pops the previous source from the stack.
+     * (Same for case-folding.)
+     *
+     * This is complicated further by operating on variable-width UTF-16.
+     * The top part of the loop works on code units, while lookups for decomposition
+     * and case-folding need code points.
+     * Code points are assembled after the equality/end-of-source part.
+     * The source pointer is only advanced beyond all code units when the code point
+     * actually decomposes/case-folds.
+     *
+     * If we were on a trail surrogate unit when assembling a code point,
+     * and the code point decomposes/case-folds, then the decomposition/folding
+     * result must be compared with the part of the other string that corresponds to
+     * this string's lead surrogate.
+     * Since we only assemble a code point when hitting a trail unit when the
+     * preceding lead units were identical, we back up the other string by one unit
+     * in such a case.
+     *
+     * The optional code point order comparison at the end works with
+     * the same fix-up as the other code point order comparison functions.
+     * See ustring.c and the comment near the end of this function.
+     *
+     * Assumption: A decomposition or case-folding result string never contains
+     * a single surrogate. This is a safe assumption in the Unicode Standard.
+     * Therefore, we do not need to check for surrogate pairs across
+     * decomposition/case-folding boundaries.
+     * Further assumptions (see verifications tstnorm.cpp):
+     * The API function checks for FCD first, while the core function
+     * first case-folds and then decomposes. This requires that case-folding does not
+     * un-FCD any strings.
+     *
+     * The API function may also NFD the input and turn off decomposition.
+     * This requires that case-folding does not un-NFD strings either.
+     *
+     * TODO If any of the above two assumptions is violated,
+     * then this entire code must be re-thought.
+     * If this happens, then a simple solution is to case-fold both strings up front
+     * and to turn off UNORM_INPUT_IS_FCD.
+     * We already do this when not both strings are in FCD because makeFCD
+     * would be a partial NFD before the case folding, which does not work.
+     * Note that all of this is only a problem when case-folding _and_
+     * canonical equivalence come together.
+     * 
+     * This function could be moved to a different source file, at increased cost
+     * for calling the decomposition access function.
+     */
+    
+    // stack element for previous-level source/decomposition pointers
+    private static class CmpEquivLevel {
+        char[] source;
+        int start;
+        int s;
+        int limit;
+    }
+    
+    /**
+     * Get the canonical decomposition for one code point.
+     * @param c code point
+     * @param buffer out-only buffer for algorithmic decompositions of Hangul
+     * @param length out-only, takes the length of the decomposition, if any
+     * @return index into the extraData array, or 0 if none
+     * @internal
+     */
+     private static int decompose(int c, char[] buffer) {
+        
+        long norm32;
+        int length=0;
+        norm32 = (long) ((UNSIGNED_INT_MASK) & NormTrieImpl.normTrie.getCodePointValue(c));
+        if((norm32 & QC_NFD)!=0) {
+            if(isNorm32HangulOrJamo(norm32)) {
+                /* Hangul syllable: decompose algorithmically */
+                char c2;
+    
+                c-=HANGUL_BASE;
+    
+                c2=(char)(c%JAMO_T_COUNT);
+                c/=JAMO_T_COUNT;
+                if(c2>0) {
+                    buffer[2]=(char)(JAMO_T_BASE+c2);
+                    length=3;
+                } else {
+                    length=2;
+                }
+                buffer[1]=(char)(JAMO_V_BASE+c%JAMO_V_COUNT);
+                buffer[0]=(char)(JAMO_L_BASE+c/JAMO_V_COUNT);
+                return length;
+            } else {
+                /* normal decomposition */
+                DecomposeArgs  args = new DecomposeArgs();
+                int index = decompose(norm32, args);
+                System.arraycopy(extraData,index,buffer,0,args.length);
+                return args.length ;
+            }
+        } else {
+            return 0;
+        }
+    }
+
+    private static int foldCase(int c, char[] dest, int destStart, int destLimit,
+                                 int options){
+        String src = UTF16.valueOf(c);
+        String foldedStr = UCharacter.foldCase(src,options);
+        char[] foldedC = foldedStr.toCharArray();
+        for(int i=0;i<foldedC.length;i++){
+            if(destStart<destLimit){
+                dest[destStart]=foldedC[i];
+            }
+            // always increment destStart so that we can return 
+            // the required length
+            destStart++;
+        }
+        return (c==UTF16.charAt(foldedStr,0)) ? -destStart : destStart;
+    }
+    
+    /*
+     private static int foldCase(char[] src,int srcStart,int srcLimit,
+                                char[] dest, int destStart, int destLimit,
+                                int options){
+        String source =new String(src,srcStart,(srcLimit-srcStart));
+        String foldedStr = UCharacter.foldCase(source,options);
+        char[] foldedC = foldedStr.toCharArray();
+        for(int i=0;i<foldedC.length;i++){
+            if(destStart<destLimit){
+                dest[destStart]=foldedC[i];
+            }
+            // always increment destStart so that we can return 
+            // the required length
+            destStart++;
+            
+        }
+        return destStart;
+    }
+    */
+    public static int cmpEquivFold(String s1, String s2,int options){
+        if ((options & Normalizer.COMPARE_IGNORE_CASE) !=0) {
+            return cmpSimpleEquivFold(s1, s2, options);
+        }
+        else {
+            return cmpEquivFold(s1.toCharArray(),0,s1.length(),
+                                s2.toCharArray(),0,s2.length(),
+                                options);
+        }
+    }
+
+
+    private static int cmpSimpleEquivFold(String s1, String s2, int options) {
+        int cmp = 0;
+        int i=0, j=0;
+        String foldS1=null;
+        String foldS2=null;
+        int offset1=1;
+        int offset2=1;
+        while ((i+offset1<=s1.length() && j+offset2<=s2.length())) {
+            if ((cmp!=0) || (s1.charAt(i) != s2.charAt(j))) {
+                if(i>0 && j>0 && 
+                   (UTF16.isLeadSurrogate((char)s1.charAt(i-1)) ||
+                    UTF16.isLeadSurrogate((char)s2.charAt(j-1)))) {
+                    // Current codepoint may be the low surrogate pair.
+                    return cmpEquivFold(s1.toCharArray(),i-1,s1.length(),
+                            s2.toCharArray(),j-1,s2.length(),
+                            options);
+                }
+                else if (UTF16.isLeadSurrogate((char)s1.charAt(i))||
+                         UTF16.isLeadSurrogate((char)s2.charAt(j))) {
+                    return cmpEquivFold(s1.toCharArray(),i,s1.length(),
+                            s2.toCharArray(),j,s2.length(),
+                            options);
+                }
+                else {
+                    if ( offset1 > 0 ) {
+                        foldS1 = UCharacter.foldCase(s1.substring(i, i+offset1),options);
+                    }
+                    if ( offset2 > 0 ) {
+                        foldS2 = UCharacter.foldCase(s2.substring(j, j+offset2),options);
+                    }
+                    cmp = foldS1.compareTo(foldS2);
+                    if (cmp==0) {
+                        i = moveToNext(i, offset1);
+                        j = moveToNext(j, offset2);
+                        offset1 = offset2 = 1;
+                        continue;
+                    }
+                }
+                if (foldS1.length()==foldS2.length()) {
+                    return cmp;
+                }
+                if (foldS1.length()<foldS2.length()) {
+                    offset1++;
+                    offset2=0;
+                }
+                else {
+                    offset1=0;
+                    offset2++;
+                }
+                continue;
+            }
+            i++;
+            j++;
+        }
+        if (cmp!=0) {
+            return cmp;
+        }
+        if (i+offset1-1==s1.length()) {
+            if (j+offset2-1==s2.length()) {
+                return 0;
+            }
+            else {
+                return -1;
+            }
+        }
+        else {
+            return 1;
+        }
+    }
+    
+    private static int moveToNext(int pos, int offset) {
+        if (offset>0) {
+            return pos+offset;
+        }
+        else {
+            return pos+1;
+        }
+    }
+    
+    
+    // internal function
+    public static int cmpEquivFold(char[] s1, int s1Start,int s1Limit,
+                                   char[] s2, int s2Start,int s2Limit,
+                                   int options) {
+        // current-level start/limit - s1/s2 as current
+        int start1, start2, limit1, limit2;
+        char[] cSource1, cSource2;
+        
+        cSource1 = s1;
+        cSource2 = s2;
+        // decomposition variables
+        int length;
+    
+        // stacks of previous-level start/current/limit
+        CmpEquivLevel[] stack1 = new CmpEquivLevel[]{ 
+                                                    new CmpEquivLevel(),
+                                                    new CmpEquivLevel()
+                                                  };
+        CmpEquivLevel[] stack2 = new CmpEquivLevel[]{ 
+                                                    new CmpEquivLevel(),
+                                                    new CmpEquivLevel()
+                                                  };
+    
+        // decomposition buffers for Hangul
+        char[] decomp1 = new char[8];
+        char[] decomp2 = new char[8];
+    
+        // case folding buffers, only use current-level start/limit
+        char[] fold1 = new char[32];
+        char[] fold2 = new char[32];
+    
+        // track which is the current level per string
+        int level1, level2;
+    
+        // current code units, and code points for lookups
+        int c1, c2;
+        int cp1, cp2;
+    
+        // no argument error checking because this itself is not an API
+    
+        // assume that at least one of the options COMPARE_EQUIV and 
+        // COMPARE_IGNORE_CASE is set
+        // otherwise this function must behave exactly as uprv_strCompare()
+        // not checking for that here makes testing this function easier
+
+    
+        // initialize
+        start1=s1Start;
+        limit1=s1Limit;
+        
+        start2=s2Start;
+        limit2=s2Limit;
+        
+        level1=level2=0;
+        c1=c2=-1;
+        cp1=cp2=-1;
+        // comparison loop
+        for(;;) {
+            // here a code unit value of -1 means "get another code unit"
+            // below it will mean "this source is finished"
+    
+            if(c1<0) {
+                // get next code unit from string 1, post-increment
+                for(;;) {
+                    if(s1Start>=limit1) {
+                        if(level1==0) {
+                            c1=-1;
+                            break;
+                        }
+                    } else {
+                        c1=cSource1[s1Start];
+                        ++s1Start;
+                        break;
+                    }
+    
+                    // reached end of level buffer, pop one level
+                    do {
+                        --level1;
+                        start1=stack1[level1].start;
+                    } while(start1==-1); //###### check this
+                    s1Start=stack1[level1].s;
+                    limit1=stack1[level1].limit;
+                    cSource1=stack1[level1].source;
+                }
+            }
+    
+            if(c2<0) {
+                // get next code unit from string 2, post-increment
+                for(;;) {                    
+                    if(s2Start>=limit2) {
+                        if(level2==0) {
+                            c2=-1;
+                            break;
+                        }
+                    } else {
+                        c2=cSource2[s2Start];
+                        ++s2Start;
+                        break;
+                    }
+    
+                    // reached end of level buffer, pop one level
+                    do {
+                        --level2;
+                        start2=stack2[level2].start;
+                    } while(start2==-1);
+                    s2Start=stack2[level2].s;
+                    limit2=stack2[level2].limit;
+                    cSource2=stack2[level2].source;
+                }
+            }
+    
+            // compare c1 and c2
+            // either variable c1, c2 is -1 only if the corresponding string 
+            // is finished
+            if(c1==c2) {
+                if(c1<0) {
+                    return 0;   // c1==c2==-1 indicating end of strings
+                }
+                c1=c2=-1;       // make us fetch new code units
+                continue;
+            } else if(c1<0) {
+                return -1;      // string 1 ends before string 2
+            } else if(c2<0) {
+                return 1;       // string 2 ends before string 1
+            }
+            // c1!=c2 && c1>=0 && c2>=0
+    
+            // get complete code points for c1, c2 for lookups if either is a 
+            // surrogate
+            cp1=c1;
+            if(UTF16.isSurrogate((char)c1)) { 
+                char c;
+    
+                if(UTF16.isLeadSurrogate((char)c1)) {
+                    if(    s1Start!=limit1 && 
+                           UTF16.isTrailSurrogate(c=cSource1[s1Start])
+                      ) {
+                        // advance ++s1; only below if cp1 decomposes/case-folds
+                        cp1=UCharacterProperty.getRawSupplementary((char)c1, c);
+                    }
+                } else /* isTrail(c1) */ {
+                    if(    start1<=(s1Start-2) && 
+                            UTF16.isLeadSurrogate(c=cSource1[(s1Start-2)])
+                      ) {
+                        cp1=UCharacterProperty.getRawSupplementary(c, (char)c1);
+                    }
+                }
+            }
+            cp2=c2;
+            if(UTF16.isSurrogate((char)c2)) {
+                char c;
+    
+                if(UTF16.isLeadSurrogate((char)c2)) {
+                    if(    s2Start!=limit2 && 
+                           UTF16.isTrailSurrogate(c=cSource2[s2Start])
+                      ) {
+                        // advance ++s2; only below if cp2 decomposes/case-folds
+                        cp2=UCharacterProperty.getRawSupplementary((char)c2, c);
+                    }
+                } else /* isTrail(c2) */ {
+                    if(    start2<=(s2Start-2) &&  
+                           UTF16.isLeadSurrogate(c=cSource2[s2Start-2])
+                      ) {
+                        cp2=UCharacterProperty.getRawSupplementary(c, (char)c2);
+                    }
+                }
+            }
+    
+            // go down one level for each string
+            // continue with the main loop as soon as there is a real change
+            if( level1<2 && ((options & Normalizer.COMPARE_IGNORE_CASE)!=0)&&
+                (length=foldCase(cp1, fold1, 0,32,options))>=0
+            ) {
+                // cp1 case-folds to fold1[length]
+                if(UTF16.isSurrogate((char)c1)) {
+                    if(UTF16.isLeadSurrogate((char)c1)) {
+                        // advance beyond source surrogate pair if it 
+                        // case-folds
+                        ++s1Start;
+                    } else /* isTrail(c1) */ {
+                        // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate
+                        // in the other string
+                        --s2Start;
+                        c2=cSource2[(s2Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack1[0].start=start1;
+                stack1[0].s=s1Start;
+                stack1[0].limit=limit1;
+                stack1[0].source=cSource1;
+                ++level1;
+    
+                cSource1 = fold1;
+                start1=s1Start=0;
+                limit1=length;
+    
+                // get ready to read from decomposition, continue with loop
+                c1=-1;
+                continue;
+            }
+    
+            if( level2<2 && ((options& Normalizer.COMPARE_IGNORE_CASE)!=0) &&
+                (length=foldCase(cp2, fold2,0,32, options))>=0
+            ) {
+                // cp2 case-folds to fold2[length]
+                if(UTF16.isSurrogate((char)c2)) {
+                    if(UTF16.isLeadSurrogate((char)c2)) {
+                        // advance beyond source surrogate pair if it 
+                        // case-folds
+                        ++s2Start;
+                    } else /* isTrail(c2) */ {
+                        // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate 
+                        // in the other string
+                        --s1Start;
+                        c1=cSource1[(s1Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack2[0].start=start2;
+                stack2[0].s=s2Start;
+                stack2[0].limit=limit2;
+                stack2[0].source=cSource2;
+                ++level2;
+                
+                cSource2 = fold2;
+                start2=s2Start=0;
+                limit2=length;
+    
+                // get ready to read from decomposition, continue with loop
+                c2=-1;
+                continue;
+            }
+            
+            if( level1<2 && ((options&COMPARE_EQUIV)!=0) &&
+                0!=(length=decompose(cp1,decomp1))
+            ) {
+                // cp1 decomposes into p[length]
+                if(UTF16.isSurrogate((char)c1)) {
+                    if(UTF16.isLeadSurrogate((char)c1)) {
+                        // advance beyond source surrogate pair if it 
+                        //decomposes
+                        ++s1Start;
+                    } else /* isTrail(c1) */ {
+                        // we got a supplementary code point when hitting 
+                        // its trail surrogate, therefore the lead surrogate 
+                        // must have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate 
+                        // in the other string
+                        --s2Start;
+                        c2=cSource2[(s2Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack1[level1].start=start1;
+                stack1[level1].s=s1Start;
+                stack1[level1].limit=limit1;
+                stack1[level1].source=cSource1;
+                ++level1;
+    
+                // set next level pointers to decomposition
+                cSource1 = decomp1;
+                start1=s1Start=0;
+                limit1=length;
+                
+                // set empty intermediate level if skipped
+                if(level1<2) {
+                    stack1[level1++].start=-1;
+                }
+                // get ready to read from decomposition, continue with loop
+                c1=-1;
+                continue;
+            }
+    
+            if( level2<2 && ((options&COMPARE_EQUIV)!=0) &&
+                0!=(length=decompose(cp2, decomp2))
+            ) {
+                // cp2 decomposes into p[length]
+                if(UTF16.isSurrogate((char)c2)) {
+                    if(UTF16.isLeadSurrogate((char)c2)) {
+                        // advance beyond source surrogate pair if it 
+                        // decomposes
+                        ++s2Start;
+                    } else /* isTrail(c2) */ {
+                        // we got a supplementary code point when hitting its 
+                        // trail surrogate, therefore the lead surrogate must 
+                        // have been the same as in the other string;
+                        // compare this decomposition with the lead surrogate 
+                        // in the other string
+                        --s1Start;
+                        c1=cSource1[(s1Start-1)];
+                    }
+                }
+    
+                // push current level pointers
+                stack2[level2].start=start2;
+                stack2[level2].s=s2Start;
+                stack2[level2].limit=limit2;
+                stack2[level2].source=cSource2;
+                ++level2;
+    
+                // set next level pointers to decomposition
+                cSource2=decomp2;
+                start2=s2Start=0;
+                limit2=length;
+                
+                // set empty intermediate level if skipped
+                if(level2<2) {
+                    stack2[level2++].start=-1;
+                }
+                
+                // get ready to read from decomposition, continue with loop
+                c2=-1;
+                continue;
+            }
+    
+    
+            // no decomposition/case folding, max level for both sides:
+            // return difference result
+    
+            // code point order comparison must not just return cp1-cp2
+            // because when single surrogates are present then the surrogate 
+            // pairs that formed cp1 and cp2 may be from different string 
+            // indexes
+    
+            // example: { d800 d800 dc01 } vs. { d800 dc00 }, compare at 
+            // second code units
+            // c1=d800 cp1=10001 c2=dc00 cp2=10000
+            // cp1-cp2>0 but c1-c2<0 and in fact in UTF-32 
+            // it is { d800 10001 } < { 10000 }
+            // therefore fix-up 
+    
+            if(     c1>=0xd800 && c2>=0xd800 && 
+                    ((options&Normalizer.COMPARE_CODE_POINT_ORDER)!=0)
+              ) {
+                /* subtract 0x2800 from BMP code points to make them smaller 
+                 * than supplementary ones */
+                if(
+                    (    c1<=0xdbff && s1Start!=limit1 
+                         && 
+                         UTF16.isTrailSurrogate(cSource1[s1Start])
+                    ) 
+                     ||
+                    (    UTF16.isTrailSurrogate((char)c1) && start1!=(s1Start-1) 
+                         && 
+                         UTF16.isLeadSurrogate(cSource1[(s1Start-2)])
+                    )
+                ) {
+                    /* part of a surrogate pair, leave >=d800 */
+                } else {
+                    /* BMP code point - may be surrogate code point - 
+                     * make <d800 */
+                    c1-=0x2800;
+                }
+    
+                if(
+                    (    c2<=0xdbff && s2Start!=limit2 
+                         && 
+                         UTF16.isTrailSurrogate(cSource2[s2Start])
+                    ) 
+                     ||
+                    (    UTF16.isTrailSurrogate((char)c2) && start2!=(s2Start-1) 
+                         && 
+                         UTF16.isLeadSurrogate(cSource2[(s2Start-2)])
+                    )
+                ) {
+                    /* part of a surrogate pair, leave >=d800 */
+                } else {
+                    /* BMP code point - may be surrogate code point - 
+                     * make <d800 */
+                    c2-=0x2800;
+                }
+            }
+    
+            return c1-c2;
+        }
+    }
+    private static int strCompare(char[] s1, int s1Start, int s1Limit,
+                                  char[] s2, int s2Start, int s2Limit,
+                                  boolean codePointOrder) {
+                        
+        int start1, start2, limit1, limit2;
+ 
+        char c1, c2;
+    
+        /* setup for fix-up */
+        start1=s1Start;
+        start2=s2Start;
+        
+        int length1, length2;
+        
+        length1 = s1Limit - s1Start;
+        length2 = s2Limit - s2Start;
+            
+        int lengthResult;
+
+        if(length1<length2) {
+            lengthResult=-1;
+            limit1=start1+length1;
+        } else if(length1==length2) {
+            lengthResult=0;
+            limit1=start1+length1;
+        } else /* length1>length2 */ {
+            lengthResult=1;
+            limit1=start1+length2;
+        }
+
+        if(s1==s2) {
+            return lengthResult;
+        }
+
+        for(;;) {
+            /* check pseudo-limit */
+            if(s1Start==limit1) {
+                return lengthResult;
+            }
+
+            c1=s1[s1Start];
+            c2=s2[s2Start];
+            if(c1!=c2) {
+                break;
+            }
+            ++s1Start;
+            ++s2Start;
+        }
+
+        /* setup for fix-up */
+        limit1=start1+length1;
+        limit2=start2+length2;
+
+    
+        /* if both values are in or above the surrogate range, fix them up */
+        if(c1>=0xd800 && c2>=0xd800 && codePointOrder) {
+            /* subtract 0x2800 from BMP code points to make them smaller than
+             *  supplementary ones */
+            if(
+                ( c1<=0xdbff && (s1Start+1)!=limit1 && 
+                  UTF16.isTrailSurrogate(s1[(s1Start+1)])
+                ) ||
+                ( UTF16.isTrailSurrogate(c1) && start1!=s1Start && 
+                  UTF16.isLeadSurrogate(s1[(s1Start-1)])
+                )
+            ) {
+                /* part of a surrogate pair, leave >=d800 */
+            } else {
+                /* BMP code point - may be surrogate code point - make <d800 */
+                c1-=0x2800;
+            }
+    
+            if(
+                ( c2<=0xdbff && (s2Start+1)!=limit2 && 
+                  UTF16.isTrailSurrogate(s2[(s2Start+1)])
+                ) ||
+                ( UTF16.isTrailSurrogate(c2) && start2!=s2Start && 
+                  UTF16.isLeadSurrogate(s2[(s2Start-1)])
+                )
+            ) {
+                /* part of a surrogate pair, leave >=d800 */
+            } else {
+                /* BMP code point - may be surrogate code point - make <d800 */
+                c2-=0x2800;
+            }
+        }
+    
+        /* now c1 and c2 are in UTF-32-compatible order */
+        return (int)c1-(int)c2;
+    }
+
+
+    /*
+     * Status of tailored normalization
+     *
+     * This was done initially for investigation on Unicode public review issue 7
+     * (http://www.unicode.org/review/). See Jitterbug 2481.
+     * While the UTC at meeting #94 (2003mar) did not take up the issue, this is
+     * a permanent feature in ICU 2.6 in support of IDNA which requires true
+     * Unicode 3.2 normalization.
+     * (NormalizationCorrections are rolled into IDNA mapping tables.)
+     *
+     * Tailored normalization as implemented here allows to "normalize less"
+     * than full Unicode normalization would.
+     * Based internally on a UnicodeSet of code points that are
+     * "excluded from normalization", the normalization functions leave those
+     * code points alone ("inert"). This means that tailored normalization
+     * still transforms text into a canonically equivalent form.
+     * It does not add decompositions to code points that do not have any or
+     * change decomposition results.
+     *
+     * Any function that searches for a safe boundary has not been touched,
+     * which means that these functions will be over-pessimistic when
+     * exclusions are applied.
+     * This should not matter because subsequent checks and normalizations
+     * do apply the exclusions; only a little more of the text may be processed
+     * than necessary under exclusions.
+     *
+     * Normalization exclusions have the following effect on excluded code points c:
+     * - c is not decomposed
+     * - c is not a composition target
+     * - c does not combine forward or backward for composition
+     *   except that this is not implemented for Jamo
+     * - c is treated as having a combining class of 0
+     */
+     
+    /* 
+     * Constants for the bit fields in the options bit set parameter. 
+     * These need not be public. 
+     * A user only needs to know the currently assigned values. 
+     * The number and positions of reserved bits per field can remain private. 
+     */ 
+    private static final int OPTIONS_NX_MASK=0x1f;
+    private static final int OPTIONS_UNICODE_MASK=0xe0; 
+    public  static final int OPTIONS_SETS_MASK=0xff;
+    //private static final int OPTIONS_UNICODE_SHIFT=5;
+    private static final UnicodeSet[] nxCache = new UnicodeSet[OPTIONS_SETS_MASK+1];
+     
+    /* Constants for options flags for normalization.*/
+
+    /** 
+     * Options bit 0, do not decompose Hangul syllables. 
+     */
+    private static final int NX_HANGUL = 1;
+    /** 
+     * Options bit 1, do not decompose CJK compatibility characters.
+     */
+    private static final int NX_CJK_COMPAT=2;
+    /**
+     * Options bit 8, use buggy recomposition described in
+     * Unicode Public Review Issue #29
+     * at http://www.unicode.org/review/resolved-pri.html#pri29
+     *
+     * Used in IDNA implementation according to strict interpretation
+     * of IDNA definition based on Unicode 3.2 which predates PRI #29.
+     *
+     * See ICU4C unormimp.h
+     */
+    public static final int BEFORE_PRI_29=0x100;
+
+    /*
+     * The following options are used only in some composition functions.
+     * They use bits 12 and up to preserve lower bits for the available options
+     * space in unorm_compare() -
+     * see documentation for UNORM_COMPARE_NORM_OPTIONS_SHIFT.
+     */
+
+    /** Options bit 12, for compatibility vs. canonical decomposition. */
+    public static final int OPTIONS_COMPAT=0x1000;
+    /** Options bit 13, no discontiguous composition (FCC vs. NFC). */
+    public static final int OPTIONS_COMPOSE_CONTIGUOUS=0x2000;
+
+    /* normalization exclusion sets --------------------------------------------- */
+    
+    /*
+     * Normalization exclusion UnicodeSets are used for tailored normalization;
+     * see the comment near the beginning of this file.
+     *
+     * By specifying one or several sets of code points,
+     * those code points become inert for normalization.
+     */
+    private static final synchronized UnicodeSet internalGetNXHangul() {
+        /* internal function, does not check for incoming U_FAILURE */
+    
+        if(nxCache[NX_HANGUL]==null) {
+             nxCache[NX_HANGUL]=new UnicodeSet(0xac00, 0xd7a3);
+        }
+        return nxCache[NX_HANGUL];
+    }
+    
+    private static final synchronized UnicodeSet internalGetNXCJKCompat() {
+        /* internal function, does not check for incoming U_FAILURE */
+    
+        if(nxCache[NX_CJK_COMPAT]==null) {
+
+            /* build a set from [CJK Ideographs]&[has canonical decomposition] */
+            UnicodeSet set, hasDecomp;
+    
+            set=new UnicodeSet("[:Ideographic:]");
+    
+            /* start with an empty set for [has canonical decomposition] */
+            hasDecomp=new UnicodeSet();
+    
+            /* iterate over all ideographs and remember which canonically decompose */
+            UnicodeSetIterator it = new UnicodeSetIterator(set);
+            int start, end;
+            long norm32;
+    
+            while(it.nextRange() && (it.codepoint != UnicodeSetIterator.IS_STRING)) {
+                start=it.codepoint;
+                end=it.codepointEnd;
+                while(start<=end) {
+                    norm32 = getNorm32(start);
+                    if((norm32 & QC_NFD)>0) {
+                        hasDecomp.add(start);
+                    }
+                    ++start;
+                }
+            }
+    
+            /* hasDecomp now contains all ideographs that decompose canonically */
+             nxCache[NX_CJK_COMPAT]=hasDecomp;
+         
+        }
+    
+        return nxCache[NX_CJK_COMPAT];
+    }
+    
+    private static final synchronized UnicodeSet internalGetNXUnicode(int options) {
+        options &= OPTIONS_UNICODE_MASK;
+        if(options==0) {
+            return null;
+        }
+    
+        if(nxCache[options]==null) {
+            /* build a set with all code points that were not designated by the specified Unicode version */
+            UnicodeSet set = new UnicodeSet();
+
+            switch(options) {
+            case Normalizer.UNICODE_3_2:
+                set.applyPattern("[:^Age=3.2:]");
+                break;
+            default:
+                return null;
+            }
+            
+            nxCache[options]=set;
+        }
+    
+        return nxCache[options];
+    }
+    
+    /* Get a decomposition exclusion set. The data must be loaded. */
+    private static final synchronized UnicodeSet internalGetNX(int options) {
+        options&=OPTIONS_SETS_MASK;
+    
+        if(nxCache[options]==null) {
+            /* return basic sets */            
+            if(options==NX_HANGUL) {
+                return internalGetNXHangul();
+            }
+            if(options==NX_CJK_COMPAT) {
+                return internalGetNXCJKCompat();
+            }
+            if((options & OPTIONS_UNICODE_MASK)!=0 && (options & OPTIONS_NX_MASK)==0) {
+                return internalGetNXUnicode(options);
+            }
+    
+            /* build a set from multiple subsets */
+            UnicodeSet set;
+            UnicodeSet other;
+    
+            set=new UnicodeSet();
+
+    
+            if((options & NX_HANGUL)!=0 && null!=(other=internalGetNXHangul())) {
+                set.addAll(other);
+            }
+            if((options&NX_CJK_COMPAT)!=0 && null!=(other=internalGetNXCJKCompat())) {
+                set.addAll(other);
+            }
+            if((options&OPTIONS_UNICODE_MASK)!=0 && null!=(other=internalGetNXUnicode(options))) {
+                set.addAll(other);
+            }
+
+               nxCache[options]=set;
+        }
+        return nxCache[options];
+    }
+    
+    public static final UnicodeSet getNX(int options) {
+        if((options&=OPTIONS_SETS_MASK)==0) {
+            /* incoming failure, or no decomposition exclusions requested */
+            return null;
+        } else {
+            return internalGetNX(options);
+        }
+    }
+    
+    private static final boolean nx_contains(UnicodeSet nx, int c) {
+        return nx!=null && nx.contains(c);
+    }
+    
+    private static final boolean nx_contains(UnicodeSet nx, char c, char c2) {
+        return nx!=null && nx.contains(c2==0 ? c : UCharacterProperty.getRawSupplementary(c, c2));
+    }
+
+
+}
diff --git a/src/com/ibm/icu/impl/OlsonTimeZone.java b/src/com/ibm/icu/impl/OlsonTimeZone.java
new file mode 100644
index 0000000..b0849bb
--- /dev/null
+++ b/src/com/ibm/icu/impl/OlsonTimeZone.java
@@ -0,0 +1,1013 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005-2009, International Business Machines Corporation and         *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+package com.ibm.icu.impl;
+
+import java.util.Arrays;
+import java.util.Date;
+
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateTimeRule;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.InitialTimeZoneRule;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeArrayTimeZoneRule;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneRule;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * A time zone based on the Olson database.  Olson time zones change
+ * behavior over time.  The raw offset, rules, presence or absence of
+ * daylight savings time, and even the daylight savings amount can all
+ * vary.
+ *
+ * This class uses a resource bundle named "zoneinfo".  Zoneinfo is a
+ * table containing different kinds of resources.  In several places,
+ * zones are referred to using integers.  A zone's integer is a number
+ * from 0..n-1, where n is the number of zones, with the zones sorted
+ * in lexicographic order.
+ *
+ * 1. Zones.  These have keys corresponding to the Olson IDs, e.g.,
+ * "Asia/Shanghai".  Each resource describes the behavior of the given
+ * zone.  Zones come in several formats, which are differentiated
+ * based on length.
+ *
+ *  a. Alias (int, length 1).  An alias zone is an int resource.  The
+ *  integer is the zone number of the target zone.  The key of this
+ *  resource is an alternate name for the target zone.  Aliases
+ *  represent Olson links and ICU compatibility IDs.
+ *
+ *  b. Simple zone (array, length 3).  The three subelements are:
+ *
+ *   i. An intvector of transitions.  These are given in epoch
+ *   seconds.  This may be an empty invector (length 0).  If the
+ *   transtions list is empty, then the zone's behavior is fixed and
+ *   given by the offset list, which will contain exactly one pair.
+ *   Otherwise each transtion indicates a time after which (inclusive)
+ *   the associated offset pair is in effect.
+ *
+ *   ii. An intvector of offsets.  These are in pairs of raw offset /
+ *   DST offset, in units of seconds.  There will be at least one pair
+ *   (length >= 2 && length % 2 == 0).
+ *
+ *   iii. A binary resource.  This is of the same length as the
+ *   transitions vector, so length may be zero.  Each unsigned byte
+ *   corresponds to one transition, and has a value of 0..n-1, where n
+ *   is the number of pairs in the offset vector.  This forms a map
+ *   between transitions and offset pairs.
+ *
+ *  c. Simple zone with aliases (array, length 4).  This is like a
+ *  simple zone, but also contains a fourth element:
+ *
+ *   iv. An intvector of aliases.  This list includes this zone
+ *   itself, and lists all aliases of this zone.
+ *
+ *  d. Complex zone (array, length 5).  This is like a simple zone,
+ *  but contains two more elements:
+ *
+ *   iv. A string, giving the name of a rule.  This is the "final
+ *   rule", which governs the zone's behavior beginning in the "final
+ *   year".  The rule ID is given without leading underscore, e.g.,
+ *   "EU".
+ *
+ *   v. An intvector of length 2, containing the raw offset for the
+ *   final rule (in seconds), and the final year.  The final rule
+ *   takes effect for years >= the final year.
+ *
+ *  e. Complex zone with aliases (array, length 6).  This is like a
+ *  complex zone, but also contains a sixth element:
+ * 
+ *   vi. An intvector of aliases.  This list includes this zone
+ *   itself, and lists all aliases of this zone.
+ *
+ * 2. Rules.  These have keys corresponding to the Olson rule IDs,
+ * with an underscore prepended, e.g., "_EU".  Each resource describes
+ * the behavior of the given rule using an intvector, containing the
+ * onset list, the cessation list, and the DST savings.  The onset and
+ * cessation lists consist of the month, dowim, dow, time, and time
+ * mode.  The end result is that the 11 integers describing the rule
+ * can be passed directly into the SimpleTimeZone 13-argument
+ * constructor (the other two arguments will be the raw offset, taken
+ * from the complex zone element 5, and the ID string, which is not
+ * used), with the times and the DST savings multiplied by 1000 to
+ * scale from seconds to milliseconds.
+ *
+ * 3. Countries.  These have keys corresponding to the 2-letter ISO
+ * country codes, with a percent sign prepended, e.g., "%US".  Each
+ * resource is an intvector listing the zones associated with the
+ * given country.  The special entry "%" corresponds to "no country",
+ * that is, the category of zones assigned to no country in the Olson
+ * DB.
+ *
+ * 4. Metadata.  Metadata is stored under the key "_".  It is an
+ * intvector of length three containing the number of zones resources,
+ * rule resources, and country resources.  For the purposes of this
+ * count, the metadata entry itself is considered a rule resource,
+ * since its key begins with an underscore.
+ */
+public class OlsonTimeZone extends BasicTimeZone {
+
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -6281977362477515376L;
+
+    private static final boolean ASSERT = false;
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getOffset(int, int, int, int, int, int)
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds) {
+        if (month < Calendar.JANUARY || month > Calendar.DECEMBER) {
+            throw new IllegalArgumentException("Month is not in the legal range: " +month);
+        } else {
+            return getOffset(era, year, month, day, dayOfWeek, milliseconds, Grego.monthLength(year, month));
+        }
+    }
+
+    /**
+     * TimeZone API.
+     */
+    public int getOffset(int era, int year, int month,int dom, int dow, int millis, int monthLength){
+
+        if ((era != GregorianCalendar.AD && era != GregorianCalendar.BC)
+            || month < Calendar.JANUARY
+            || month > Calendar.DECEMBER
+            || dom < 1
+            || dom > monthLength
+            || dow < Calendar.SUNDAY
+            || dow > Calendar.SATURDAY
+            || millis < 0
+            || millis >= Grego.MILLIS_PER_DAY
+            || monthLength < 28
+            || monthLength > 31) {
+            throw new IllegalArgumentException();
+        }
+
+        if (era == GregorianCalendar.BC) {
+            year = -year;
+        }
+
+        if (year > finalYear) { // [sic] >, not >=; see above
+            if (ASSERT) Assert.assrt("(finalZone != null)", finalZone != null);
+            return finalZone.getOffset(era, year, month, dom, dow, millis);
+        }
+
+        // Compute local epoch millis from input fields
+        long time = Grego.fieldsToDay(year, month, dom) * Grego.MILLIS_PER_DAY + millis;
+
+        int[] offsets = new int[2];
+        getHistoricalOffset(time, true, LOCAL_DST, LOCAL_STD, offsets);
+        return offsets[0] + offsets[1];
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#setRawOffset(int)
+     */
+    public void setRawOffset(int offsetMillis) {
+        if (getRawOffset() == offsetMillis) {
+            return;
+        }
+        long current = System.currentTimeMillis();
+        if (current < finalMillis) {
+            int[] fields = Grego.timeToFields(current, null);
+            finalYear = fields[0] - 1; // finalYear is (year of finalMillis) - 1
+            finalMillis = Grego.fieldsToDay(fields[0], 0, 1);
+        }
+
+        if (finalZone == null) {
+            // Create SimpleTimeZone instance to store the offset
+            finalZone = new SimpleTimeZone(offsetMillis, getID());
+        } else {
+            finalZone.setRawOffset(offsetMillis);
+            finalZone.setStartYear(finalYear); // finalYear is (year of finalMillis) - 1
+        }
+
+        transitionRulesInitialized = false;
+    }
+
+    public Object clone() {
+        OlsonTimeZone other = (OlsonTimeZone) super.clone();
+        if(finalZone!=null){
+            finalZone.setID(getID());
+            other.finalZone = (SimpleTimeZone)finalZone.clone();
+        }
+        other.transitionTimes = (int[])transitionTimes.clone();
+        other.typeData = (byte[])typeData.clone();
+        other.typeOffsets = (int[])typeOffsets.clone();
+        return other;
+    }
+
+    /**
+     * TimeZone API.
+     */
+    public void getOffset(long date, boolean local, int[] offsets)  {
+        // The check against finalMillis will suffice most of the time, except
+        // for the case in which finalMillis == DBL_MAX, date == DBL_MAX,
+        // and finalZone == 0.  For this case we add "&& finalZone != 0".
+        if (date >= finalMillis && finalZone != null) {
+            finalZone.getOffset(date, local, offsets);
+        } else {
+            getHistoricalOffset(date, local,
+                    LOCAL_FORMER, LOCAL_LATTER, offsets);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        if (date >= finalMillis && finalZone != null) {
+            finalZone.getOffsetFromLocal(date, nonExistingTimeOpt, duplicatedTimeOpt, offsets);
+        } else {
+            getHistoricalOffset(date, true, nonExistingTimeOpt, duplicatedTimeOpt, offsets);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#getRawOffset()
+     */
+    public int getRawOffset() {
+        int[] ret = new int[2];
+        getOffset( System.currentTimeMillis(), false, ret);
+        return ret[0];
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#useDaylightTime()
+     */
+    public boolean useDaylightTime() {
+        // If DST was observed in 1942 (for example) but has never been
+        // observed from 1943 to the present, most clients will expect
+        // this method to return FALSE.  This method determines whether
+        // DST is in use in the current year (at any point in the year)
+        // and returns TRUE if so.
+        int[] fields = Grego.timeToFields(System.currentTimeMillis(), null);
+        int year = fields[0];
+
+        if (year > finalYear) { // [sic] >, not >=; see above
+            return (finalZone != null && finalZone.useDaylightTime());
+        }
+
+        // Find start of this year, and start of next year
+        long start = Grego.fieldsToDay(year, 0, 1) * SECONDS_PER_DAY;    
+        long limit = Grego.fieldsToDay(year+1, 0, 1) * SECONDS_PER_DAY;    
+
+        // Return TRUE if DST is observed at any time during the current
+        // year.
+        for (int i = 0; i < transitionCount; ++i) {
+            if (transitionTimes[i] >= limit) {
+                break;
+            }
+            if (transitionTimes[i] >= start &&
+                dstOffset(typeData[i]) != 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * TimeZone API
+     * Returns the amount of time to be added to local standard time
+     * to get local wall clock time.
+     */
+    public int getDSTSavings() {
+        if(finalZone!=null){
+            return finalZone.getDSTSavings();
+        }
+        return super.getDSTSavings();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#inDaylightTime(java.util.Date)
+     */
+    public boolean inDaylightTime(Date date) {
+        int[] temp = new int[2];
+        getOffset(date.getTime(), false, temp);
+        return temp[1] != 0;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.TimeZone#hasSameRules(com.ibm.icu.util.TimeZone)
+     */
+    public boolean hasSameRules(TimeZone other) {
+        // The super class implementation only check raw offset and
+        // use of daylight saving time.
+        if (!super.hasSameRules(other)) {
+            return false;
+        }
+
+        if (!(other instanceof OlsonTimeZone)) {
+            // We cannot reasonably compare rules in different types
+            return false;
+        }
+
+        // Check final zone
+        OlsonTimeZone o = (OlsonTimeZone)other;
+        if (finalZone == null) {
+            if (o.finalZone != null && finalYear != Integer.MAX_VALUE) {
+                return false;
+            }
+        } else {
+            if (o.finalZone == null
+                    || finalYear != o.finalYear
+                    || !(finalZone.hasSameRules(o.finalZone))) {
+                return false;
+            }
+        }
+        // Check transitions
+        // Note: The code below actually fails to compare two equivalent rules in
+        // different representation properly.
+        if (transitionCount != o.transitionCount ||
+                !Arrays.equals(transitionTimes, o.transitionTimes) ||
+                typeCount != o.typeCount ||
+                !Arrays.equals(typeData, o.typeData) ||
+                !Arrays.equals(typeOffsets, o.typeOffsets)){
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Construct a GMT+0 zone with no transitions.  This is done when a
+     * constructor fails so the resultant object is well-behaved.
+     */
+    private void constructEmpty(){
+        transitionCount = 0;
+        typeCount = 1;
+        transitionTimes = typeOffsets = new int[]{0,0};
+        typeData =  new byte[2];
+        
+    }
+
+    /**
+     * Construct from a resource bundle
+     * @param top the top-level zoneinfo resource bundle.  This is used
+     * to lookup the rule that `res' may refer to, if there is one.
+     * @param res the resource bundle of the zone to be constructed
+     */
+    public OlsonTimeZone(UResourceBundle top, UResourceBundle res){
+        construct(top, res);
+    }
+
+    private void construct(UResourceBundle top, UResourceBundle res){
+        
+        if ((top == null || res == null)) {
+            throw new IllegalArgumentException();
+        }
+        if(DEBUG) System.out.println("OlsonTimeZone(" + res.getKey() +")");
+
+
+        // TODO -- clean up -- Doesn't work if res points to an alias
+        //        // TODO remove nonconst casts below when ures_* API is fixed
+        //        setID(ures_getKey((UResourceBundle*) res)); // cast away const
+
+        // Size 1 is an alias TO another zone (int)
+        // HOWEVER, the caller should dereference this and never pass it in to us
+        // Size 3 is a purely historical zone (no final rules)
+        // Size 4 is like size 3, but with an alias list at the end
+        // Size 5 is a hybrid zone, with historical and final elements
+        // Size 6 is like size 5, but with an alias list at the end
+        int size = res.getSize();
+        if (size < 3 || size > 6) {
+           // ec = U_INVALID_FORMAT_ERROR;
+            throw new IllegalArgumentException("Invalid Format");
+        }
+
+        // Transitions list may be empty
+        UResourceBundle r = res.get(0);
+        transitionTimes = r.getIntVector();
+        
+        if ((transitionTimes.length<0 || transitionTimes.length>0x7FFF) ) {
+            throw new IllegalArgumentException("Invalid Format");
+        }
+        transitionCount = (int) transitionTimes.length;
+        
+        // Type offsets list must be of even size, with size >= 2
+        r = res.get( 1);
+        typeOffsets = r.getIntVector();
+        if ((typeOffsets.length<2 || typeOffsets.length>0x7FFE || ((typeOffsets.length&1)!=0))) {
+            throw new IllegalArgumentException("Invalid Format");
+        }
+        typeCount = (int) typeOffsets.length >> 1;
+
+        // Type data must be of the same size as the transitions list        
+        r = res.get(2);
+        typeData = r.getBinary().array();
+        if (typeData.length != transitionCount) {
+            throw new IllegalArgumentException("Invalid Format");
+        }
+
+        // Process final rule and data, if any
+        if (size >= 5) {
+            String ruleid = res.getString(3);
+            r = res.get(4);
+            int[] data = r.getIntVector();
+
+            if (data != null && data.length == 2) {
+                int rawOffset = data[0] * Grego.MILLIS_PER_SECOND;
+                // Subtract one from the actual final year; we
+                // actually store final year - 1, and compare
+                // using > rather than >=.  This allows us to use
+                // INT32_MAX as an exclusive upper limit for all
+                // years, including INT32_MAX.
+                if (ASSERT) Assert.assrt("data[1] > Integer.MIN_VALUE", data[1] > Integer.MIN_VALUE);
+                finalYear = data[1] - 1;
+                // Also compute the millis for Jan 1, 0:00 GMT of the
+                // finalYear.  This reduces runtime computations.
+                finalMillis = Grego.fieldsToDay(data[1], 0, 1) * Grego.MILLIS_PER_DAY;
+                //U_DEBUG_TZ_MSG(("zone%s|%s: {%d,%d}, finalYear%d, finalMillis%.1lf\n",
+                  //              zKey,rKey, data[0], data[1], finalYear, finalMillis));
+                r = loadRule(top, ruleid);
+
+                // 3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600
+                data = r.getIntVector();
+                if ( data.length == 11) {
+                    //U_DEBUG_TZ_MSG(("zone%s, rule%s: {%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d}", zKey, ures_getKey(r), 
+                      //            data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10]));
+                    finalZone = new SimpleTimeZone(rawOffset, "",
+                        data[0], data[1], data[2],
+                        data[3] * Grego.MILLIS_PER_SECOND,
+                        data[4],
+                        data[5], data[6], data[7],
+                        data[8] * Grego.MILLIS_PER_SECOND,
+                        data[9],
+                        data[10] * Grego.MILLIS_PER_SECOND);
+                } else {
+                    throw new IllegalArgumentException("Invalid Format");
+                }                
+            } else {
+                throw new IllegalArgumentException("Invalid Format");
+            }
+        }       
+    }
+
+    public OlsonTimeZone(){
+       /*
+        * 
+        finalYear = Integer.MAX_VALUE;
+        finalMillis = Double.MAX_VALUE;
+        finalZone = null;
+        */
+        constructEmpty();
+    }
+
+    public OlsonTimeZone(String id){
+        UResourceBundle top = (UResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        UResourceBundle res = ZoneMeta.openOlsonResource(id);
+        construct(top, res);
+        if(finalZone!=null){
+            finalZone.setID(id);
+        }
+        super.setID(id);
+    }
+
+    public void setID(String id){
+        if(finalZone!= null){
+            finalZone.setID(id);
+        }
+        super.setID(id);
+        transitionRulesInitialized = false;
+    }
+
+    private static final int UNSIGNED_BYTE_MASK =0xFF;
+
+    private int getInt(byte val){
+        return (int)(UNSIGNED_BYTE_MASK & val); 
+    }
+
+    private void getHistoricalOffset(long date, boolean local,
+            int NonExistingTimeOpt, int DuplicatedTimeOpt, int[] offsets) {
+        if (transitionCount != 0) {
+            long sec = Grego.floorDivide(date, Grego.MILLIS_PER_SECOND);
+            // Linear search from the end is the fastest approach, since
+            // most lookups will happen at/near the end.
+            int i = 0;
+            for (i = transitionCount - 1; i > 0; --i) {
+                int transition = transitionTimes[i];
+                if (local) {
+                    int offsetBefore = zoneOffset(getInt(typeData[i-1]));
+                    boolean dstBefore = dstOffset(getInt(typeData[i-1])) != 0;
+
+                    int offsetAfter = zoneOffset(getInt(typeData[i]));
+                    boolean dstAfter = dstOffset(getInt(typeData[i])) != 0;
+
+                    boolean dstToStd = dstBefore && !dstAfter;
+                    boolean stdToDst = !dstBefore && dstAfter;
+                    
+                    if (offsetAfter - offsetBefore >= 0) {
+                        // Positive transition, which makes a non-existing local time range
+                        if (((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD && dstToStd)
+                                || ((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_DST && stdToDst)) {
+                            transition += offsetBefore;
+                        } else if (((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD && stdToDst)
+                                || ((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_DST && dstToStd)) {
+                            transition += offsetAfter;
+                        } else if ((NonExistingTimeOpt & FORMER_LATTER_MASK) == LOCAL_LATTER) {
+                            transition += offsetBefore;
+                        } else {
+                            // Interprets the time with rule before the transition,
+                            // default for non-existing time range
+                            transition += offsetAfter;
+                        }
+                    } else {
+                        // Negative transition, which makes a duplicated local time range
+                        if (((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_STD && dstToStd)
+                                || ((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST && stdToDst)) {
+                            transition += offsetAfter;
+                        } else if (((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_STD && stdToDst)
+                                || ((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST && dstToStd)) {
+                            transition += offsetBefore;
+                        } else if ((DuplicatedTimeOpt & FORMER_LATTER_MASK) == LOCAL_FORMER) {
+                            transition += offsetBefore;
+                        } else {
+                            // Interprets the time with rule after the transition,
+                            // default for duplicated local time range
+                            transition += offsetAfter;
+                        }
+                    }
+                }
+                
+                if (sec >= transition) {
+                    break;
+                }
+            }
+
+            if (ASSERT) Assert.assrt("i>=0 && i<transitionCount", i>=0 && i<transitionCount);
+
+            // Check invariants for GMT times; if these pass for GMT times
+            // the local logic should be working too.
+            if (ASSERT) {
+                Assert.assrt("local || sec < transitionTimes[0] || sec >= transitionTimes[i]", 
+                        local || sec < transitionTimes[0] || sec >= transitionTimes[i]);
+                Assert.assrt("local || i == transitionCount-1 || sec < transitionTimes[i+1]", 
+                        local || i == transitionCount-1 || sec < transitionTimes[i+1]);
+            }
+            // Since ICU tzdata 2007c, the first transition data is actually not a
+            // transition, but used for representing the initial offset.  So the code
+            // below works even if i == 0.
+            int index = getInt(typeData[i]);
+            offsets[0] = rawOffset(index) * Grego.MILLIS_PER_SECOND;
+            offsets[1] = dstOffset(index) * Grego.MILLIS_PER_SECOND;
+        } else {
+            // No transitions, single pair of offsets only
+            offsets[0] = rawOffset(0) * Grego.MILLIS_PER_SECOND;
+            offsets[1] = dstOffset(0) * Grego.MILLIS_PER_SECOND;
+        }
+    }
+
+    private int zoneOffset(int index){
+        index=index << 1;
+        return typeOffsets[index] + typeOffsets[index+1];
+    }
+
+    private int rawOffset(int index){
+        return typeOffsets[(int)(index << 1)];
+    }
+
+    private int dstOffset(int index){
+        return typeOffsets[(int)((index << 1) + 1)];
+    }
+    
+    // temp
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append(super.toString());
+        buf.append('[');
+        buf.append("transitionCount=" + transitionCount);
+        buf.append(",typeCount=" + typeCount);
+        buf.append(",transitionTimes=");
+        if (transitionTimes != null) {
+            buf.append('[');
+            for (int i = 0; i < transitionTimes.length; ++i) {
+                if (i > 0) {
+                    buf.append(',');
+                }
+                buf.append(Integer.toString(transitionTimes[i]));
+            }
+            buf.append(']');
+        } else {
+            buf.append("null");
+        }
+        buf.append(",typeOffsets=");
+        if (typeOffsets != null) {
+            buf.append('[');
+            for (int i = 0; i < typeOffsets.length; ++i) {
+                if (i > 0) {
+                    buf.append(',');
+                }
+                buf.append(Integer.toString(typeOffsets[i]));
+            }
+            buf.append(']');
+        } else {
+            buf.append("null");
+        }
+        buf.append(",finalYear=" + finalYear);
+        buf.append(",finalMillis=" + finalMillis);
+        buf.append(",finalZone=" + finalZone);
+        buf.append(']');
+        
+        return buf.toString();
+    }
+
+    /**
+     * Number of transitions, 0..~370
+     */
+    private int transitionCount;
+
+    /**
+     * Number of types, 1..255
+     */
+    private int typeCount;
+
+    /**
+     * Time of each transition in seconds from 1970 epoch.
+     * Length is transitionCount int32_t's.
+     */
+    private int[] transitionTimes; // alias into res; do not delete
+
+    /**
+     * Offset from GMT in seconds for each type.
+     * Length is typeCount int32_t's.
+     */
+    private int[] typeOffsets; // alias into res; do not delete
+
+    /**
+     * Type description data, consisting of transitionCount uint8_t
+     * type indices (from 0..typeCount-1).
+     * Length is transitionCount int8_t's.
+     */
+    private byte[] typeData; // alias into res; do not delete
+
+    /**
+     * The last year for which the transitions data are to be used
+     * rather than the finalZone.  If there is no finalZone, then this
+     * is set to INT32_MAX.  NOTE: This corresponds to the year _before_
+     * the one indicated by finalMillis.
+     */
+    private int finalYear = Integer.MAX_VALUE;
+
+    /**
+     * The millis for the start of the first year for which finalZone
+     * is to be used, or DBL_MAX if finalZone is 0.  NOTE: This is
+     * 0:00 GMT Jan 1, <finalYear + 1> (not <finalMillis>).
+     */
+    private double finalMillis = Double.MAX_VALUE;
+
+    /**
+     * A SimpleTimeZone that governs the behavior for years > finalYear.
+     * If and only if finalYear == INT32_MAX then finalZone == 0.
+     */
+    private SimpleTimeZone finalZone = null; // owned, may be NULL
+ 
+    private static final boolean DEBUG = ICUDebug.enabled("olson");
+    private static final int SECONDS_PER_DAY = 24*60*60;
+    
+    private static UResourceBundle loadRule(UResourceBundle top, String ruleid) {
+        UResourceBundle r = top.get("Rules");
+        r = r.get(ruleid);
+        return r;
+    }
+
+    public boolean equals(Object obj){
+        if (!super.equals(obj)) return false; // super does class check
+        
+        OlsonTimeZone z = (OlsonTimeZone) obj;
+
+        return (Utility.arrayEquals(typeData, z.typeData) ||
+                 // If the pointers are not equal, the zones may still
+                 // be equal if their rules and transitions are equal
+                 (finalYear == z.finalYear &&
+                  // Don't compare finalMillis; if finalYear is ==, so is finalMillis
+                  ((finalZone == null && z.finalZone == null) ||
+                   (finalZone != null && z.finalZone != null &&
+                    finalZone.equals(z.finalZone)) &&
+                  transitionCount == z.transitionCount &&
+                  typeCount == z.typeCount &&
+                  Utility.arrayEquals(transitionTimes, z.transitionTimes) &&
+                  Utility.arrayEquals(typeOffsets, z.typeOffsets) &&
+                  Utility.arrayEquals(typeData, z.typeData)
+                  )));
+
+    }
+
+    public int hashCode(){
+        int ret =   (int)  (finalYear ^ (finalYear>>>4) +
+                   transitionCount ^ (transitionCount>>>6) +
+                   typeCount ^ (typeCount>>>8) + 
+                   Double.doubleToLongBits(finalMillis)+
+                   (finalZone == null ? 0 : finalZone.hashCode()) + 
+                   super.hashCode());
+        for(int i=0; i<transitionTimes.length; i++){
+            ret+=transitionTimes[i]^(transitionTimes[i]>>>8);
+        }
+        for(int i=0; i<typeOffsets.length; i++){
+            ret+=typeOffsets[i]^(typeOffsets[i]>>>8);
+        }
+        for(int i=0; i<typeData.length; i++){
+            ret+=typeData[i] & UNSIGNED_BYTE_MASK;
+        } 
+        return ret;
+    }
+    /*
+    private void readObject(ObjectInputStream s) throws IOException  {
+        s.defaultReadObject();
+        // customized deserialization code
+       
+        // followed by code to update the object, if necessary
+    }
+    */
+
+ 
+    //
+    // BasicTimeZone methods
+    //
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.BasicTimeZone#getNextTransition(long, boolean)
+     */
+    public TimeZoneTransition getNextTransition(long base, boolean inclusive) {
+        initTransitionRules();
+
+        if (finalZone != null) {
+            if (inclusive && base == firstFinalTZTransition.getTime()) {
+                return firstFinalTZTransition;
+            } else if (base >= firstFinalTZTransition.getTime()) {
+                if (finalZone.useDaylightTime()) {
+                    //return finalZone.getNextTransition(base, inclusive);
+                    return finalZoneWithStartYear.getNextTransition(base, inclusive);
+                } else {
+                    // No more transitions
+                    return null;
+                }
+            }
+        }
+        if (historicRules != null) {
+            // Find a historical transition
+            int ttidx = transitionCount - 1;
+            for (; ttidx >= firstTZTransitionIdx; ttidx--) {
+                long t = ((long)transitionTimes[ttidx]) * Grego.MILLIS_PER_SECOND;
+                if (base > t || (!inclusive && base == t)) {
+                    break;
+                }
+            }
+            if (ttidx == transitionCount - 1)  {
+                return firstFinalTZTransition;
+            } else if (ttidx < firstTZTransitionIdx) {
+                return firstTZTransition;
+            } else {
+                // Create a TimeZoneTransition
+                TimeZoneRule to = historicRules[getInt(typeData[ttidx + 1])];
+                TimeZoneRule from = historicRules[getInt(typeData[ttidx])];
+                long startTime = ((long)transitionTimes[ttidx+1])*Grego.MILLIS_PER_SECOND;
+
+                // The transitions loaded from zoneinfo.res may contain non-transition data
+                if (from.getName().equals(to.getName()) && from.getRawOffset() == to.getRawOffset()
+                        && from.getDSTSavings() == to.getDSTSavings()) {
+                    return getNextTransition(startTime, false);
+                }
+
+                return new TimeZoneTransition(startTime, from, to);
+            }
+        }
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.BasicTimeZone#getPreviousTransition(long, boolean)
+     */
+    public TimeZoneTransition getPreviousTransition(long base, boolean inclusive) {
+        initTransitionRules();
+
+        if (finalZone != null) {
+            if (inclusive && base == firstFinalTZTransition.getTime()) {
+                return firstFinalTZTransition;
+            } else if (base > firstFinalTZTransition.getTime()) {
+                if (finalZone.useDaylightTime()) {
+                    //return finalZone.getPreviousTransition(base, inclusive);
+                    return finalZoneWithStartYear.getPreviousTransition(base, inclusive);
+                } else {
+                    return firstFinalTZTransition;
+                }                
+            }
+        }
+
+        if (historicRules != null) {
+            // Find a historical transition
+            int ttidx = transitionCount - 1;
+            for (; ttidx >= firstTZTransitionIdx; ttidx--) {
+                long t = ((long)transitionTimes[ttidx]) * Grego.MILLIS_PER_SECOND;
+                if (base > t || (inclusive && base == t)) {
+                    break;
+                }
+            }
+            if (ttidx < firstTZTransitionIdx) {
+                // No more transitions
+                return null;
+            } else if (ttidx == firstTZTransitionIdx) {
+                return firstTZTransition;
+            } else {
+                // Create a TimeZoneTransition
+                TimeZoneRule to = historicRules[getInt(typeData[ttidx])];
+                TimeZoneRule from = historicRules[getInt(typeData[ttidx-1])];
+                long startTime = ((long)transitionTimes[ttidx])*Grego.MILLIS_PER_SECOND;
+
+                // The transitions loaded from zoneinfo.res may contain non-transition data
+                if (from.getName().equals(to.getName()) && from.getRawOffset() == to.getRawOffset()
+                        && from.getDSTSavings() == to.getDSTSavings()) {
+                    return getPreviousTransition(startTime, false);
+                }
+
+                return new TimeZoneTransition(startTime, from, to);
+            }
+        }
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.BasicTimeZone#getTimeZoneRules()
+     */
+    public TimeZoneRule[] getTimeZoneRules() {
+        initTransitionRules();
+        int size = 1;
+        if (historicRules != null) {
+            // historicRules may contain null entries when original zoneinfo data
+            // includes non transition data.
+            for (int i = 0; i < historicRules.length; i++) {
+                if (historicRules[i] != null) {
+                    size++;
+                }
+            }
+        }
+        if (finalZone != null) {
+            if (finalZone.useDaylightTime()) {
+                size += 2;
+            } else {
+                size++;
+            }
+        }
+
+        TimeZoneRule[] rules = new TimeZoneRule[size];
+        int idx = 0;
+        rules[idx++] = initialRule;
+
+        if (historicRules != null) {
+            for (int i = 0; i < historicRules.length; i++) {
+                if (historicRules[i] != null) {
+                    rules[idx++] = historicRules[i];
+                }
+            }
+         }
+
+        if (finalZone != null) {
+            if (finalZone.useDaylightTime()) {
+                TimeZoneRule[] stzr = finalZoneWithStartYear.getTimeZoneRules();
+                // Adding only transition rules
+                rules[idx++] = stzr[1];
+                rules[idx++] = stzr[2];
+            } else {
+                // Create a TimeArrayTimeZoneRule at finalMillis
+                rules[idx++] = new TimeArrayTimeZoneRule(getID() + "(STD)", finalZone.getRawOffset(), 0,
+                        new long[] {(long)finalMillis}, DateTimeRule.UTC_TIME);                
+            }
+        }
+        return rules;
+    }
+
+    private transient InitialTimeZoneRule initialRule;
+    private transient TimeZoneTransition firstTZTransition;
+    private transient int firstTZTransitionIdx;
+    private transient TimeZoneTransition firstFinalTZTransition;
+    private transient TimeArrayTimeZoneRule[] historicRules;
+    private transient SimpleTimeZone finalZoneWithStartYear; // hack
+
+    private transient boolean transitionRulesInitialized;
+
+    private synchronized void initTransitionRules() {
+        if (transitionRulesInitialized) {
+            return;
+        }
+
+        initialRule = null;
+        firstTZTransition = null;
+        firstFinalTZTransition = null;
+        historicRules = null;
+        firstTZTransitionIdx = 0;
+        finalZoneWithStartYear = null;
+
+        String stdName = getID() + "(STD)";
+        String dstName = getID() + "(DST)";
+
+        int raw, dst;
+        if (transitionCount > 0) {
+            int transitionIdx, typeIdx;
+
+            // Note: Since 2007c, the very first transition data is a dummy entry
+            //       added for resolving a offset calculation problem.
+
+            // Create initial rule
+            typeIdx = getInt(typeData[0]); // initial type
+            raw = typeOffsets[typeIdx*2]*Grego.MILLIS_PER_SECOND;
+            dst = typeOffsets[typeIdx*2 + 1]*Grego.MILLIS_PER_SECOND;
+            initialRule = new InitialTimeZoneRule((dst == 0 ? stdName : dstName), raw, dst);
+
+            for (transitionIdx = 1; transitionIdx < transitionCount; transitionIdx++) {
+                firstTZTransitionIdx++;
+                if (typeIdx != getInt(typeData[transitionIdx])) {
+                    break;
+                }
+            }
+            if (transitionIdx == transitionCount) {
+                // Actually no transitions...
+            } else {
+                // Build historic rule array
+                long[] times = new long[transitionCount];
+                for (typeIdx = 0; typeIdx < typeCount; typeIdx++) {
+                    // Gather all start times for each pair of offsets
+                    int nTimes = 0;
+                    for (transitionIdx = firstTZTransitionIdx; transitionIdx < transitionCount; transitionIdx++) {
+                        if (typeIdx == getInt(typeData[transitionIdx])) {
+                            long tt = ((long)transitionTimes[transitionIdx])*Grego.MILLIS_PER_SECOND;
+                            if (tt < finalMillis) {
+                                // Exclude transitions after finalMillis
+                                times[nTimes++] = tt;
+                            }
+                        }
+                    }
+                    if (nTimes > 0) {
+                        long[] startTimes = new long[nTimes];
+                        System.arraycopy(times, 0, startTimes, 0, nTimes);
+                        // Create a TimeArrayTimeZoneRule
+                        raw = typeOffsets[typeIdx*2]*Grego.MILLIS_PER_SECOND;
+                        dst = typeOffsets[typeIdx*2 + 1]*Grego.MILLIS_PER_SECOND;
+                        if (historicRules == null) {
+                            historicRules = new TimeArrayTimeZoneRule[typeCount];
+                        }
+                        historicRules[typeIdx] = new TimeArrayTimeZoneRule((dst == 0 ? stdName : dstName),
+                                raw, dst, startTimes, DateTimeRule.UTC_TIME);
+                    }
+                }
+
+                // Create initial transition
+                typeIdx = getInt(typeData[firstTZTransitionIdx]);
+                firstTZTransition = new TimeZoneTransition(((long)transitionTimes[firstTZTransitionIdx])*Grego.MILLIS_PER_SECOND,
+                        initialRule, historicRules[typeIdx]);
+                
+            }
+        }
+
+        if (initialRule == null) {
+            // No historic transitions
+            raw = typeOffsets[0]*Grego.MILLIS_PER_SECOND;
+            dst = typeOffsets[1]*Grego.MILLIS_PER_SECOND;
+            initialRule = new InitialTimeZoneRule((dst == 0 ? stdName : dstName), raw, dst);
+        }
+
+        if (finalZone != null) {
+            // Get the first occurrence of final rule starts
+            long startTime = (long)finalMillis;
+            TimeZoneRule firstFinalRule;
+            if (finalZone.useDaylightTime()) {
+                /*
+                 * Note: When an OlsonTimeZone is constructed, we should set the final year
+                 * as the start year of finalZone.  However, the boundary condition used for
+                 * getting offset from finalZone has some problems.  So setting the start year
+                 * in the finalZone will cause a problem.  For now, we do not set the valid
+                 * start year when the construction time and create a clone and set the
+                 * start year when extracting rules.
+                 */
+                finalZoneWithStartYear = (SimpleTimeZone)finalZone.clone();
+                // finalYear is 1 year before the actual final year.
+                // See the comment in the construction method.
+                finalZoneWithStartYear.setStartYear(finalYear + 1);
+
+                TimeZoneTransition tzt = finalZoneWithStartYear.getNextTransition(startTime, false);
+                firstFinalRule  = tzt.getTo();
+                startTime = tzt.getTime();
+            } else {
+                finalZoneWithStartYear = finalZone;
+                firstFinalRule = new TimeArrayTimeZoneRule(finalZone.getID(),
+                        finalZone.getRawOffset(), 0, new long[] {startTime}, DateTimeRule.UTC_TIME);
+            }
+            TimeZoneRule prevRule = null;
+            if (transitionCount > 0) {
+                prevRule = historicRules[getInt(typeData[transitionCount - 1])];
+            }
+            if (prevRule == null) {
+                // No historic transitions, but only finalZone available
+                prevRule = initialRule;
+            }
+            firstFinalTZTransition = new TimeZoneTransition(startTime, prevRule, firstFinalRule);
+        }
+
+        transitionRulesInitialized = true;
+    }
+}
diff --git a/src/com/ibm/icu/impl/PatternTokenizer.java b/src/com/ibm/icu/impl/PatternTokenizer.java
new file mode 100644
index 0000000..5361898
--- /dev/null
+++ b/src/com/ibm/icu/impl/PatternTokenizer.java
@@ -0,0 +1,403 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2008, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                            *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * A simple parsing class for patterns and rules. Handles '...' quotations, \\uxxxx and \\Uxxxxxxxx, and symple syntax.
+ * The '' (two quotes) is treated as a single quote, inside or outside a quote
+ * <ul>
+ * <li>Any ignorable characters are ignored in parsing.</li>
+ * <li>Any syntax characters are broken into separate tokens</li>
+ * <li>Quote characters can be specified: '...', "...", and \x </li>
+ * <li>Other characters are treated as literals</li>
+ * </ul>
+ */
+public class PatternTokenizer {
+    // settings used in the interpretation of the pattern
+    private UnicodeSet ignorableCharacters = new UnicodeSet();
+    private UnicodeSet syntaxCharacters = new UnicodeSet();
+    private UnicodeSet extraQuotingCharacters = new UnicodeSet();
+    private UnicodeSet escapeCharacters = new UnicodeSet();
+    private boolean usingSlash = false;
+    private boolean usingQuote = false;
+    
+    // transient data, set when needed. Null it out for any changes in the above fields.
+    private transient UnicodeSet needingQuoteCharacters = null;
+    
+    // data about the current pattern being parsed. start gets moved as we go along.
+    private int start;
+    private int limit;
+    private String pattern;
+    
+    public UnicodeSet getIgnorableCharacters() {
+        return (UnicodeSet) ignorableCharacters.clone();
+    }
+    /**
+     * Sets the characters to be ignored in parsing, eg new UnicodeSet("[:pattern_whitespace:]");
+     * @param ignorableCharacters
+     * @return
+     */
+    public PatternTokenizer setIgnorableCharacters(UnicodeSet ignorableCharacters) {
+        this.ignorableCharacters = (UnicodeSet) ignorableCharacters.clone();
+        needingQuoteCharacters = null;
+        return this;
+    }
+    public UnicodeSet getSyntaxCharacters() {
+        return (UnicodeSet) syntaxCharacters.clone();
+    }
+    public UnicodeSet getExtraQuotingCharacters() {
+        return (UnicodeSet) extraQuotingCharacters.clone();
+    }
+    /**
+     *  Sets the characters to be interpreted as syntax characters in parsing, eg new UnicodeSet("[:pattern_syntax:]")
+     * @param syntaxCharacters
+     * @return
+     */
+    public PatternTokenizer setSyntaxCharacters(UnicodeSet syntaxCharacters) {
+        this.syntaxCharacters = (UnicodeSet) syntaxCharacters.clone();
+        needingQuoteCharacters = null;
+        return this;
+    }   
+    /**
+     *  Sets the extra characters to be quoted in literals
+     * @param syntaxCharacters
+     * @return
+     */
+    public PatternTokenizer setExtraQuotingCharacters(UnicodeSet syntaxCharacters) {
+        this.extraQuotingCharacters = (UnicodeSet) syntaxCharacters.clone();
+        needingQuoteCharacters = null;
+        return this;
+    }   
+    
+    public UnicodeSet getEscapeCharacters() {
+        return (UnicodeSet) escapeCharacters.clone();
+    }
+    /**
+     * Set characters to be escaped in literals, in quoteLiteral and normalize, eg new UnicodeSet("[^\\u0020-\\u007E]");
+     * @param escapeCharacters
+     * @return
+     */
+    public PatternTokenizer setEscapeCharacters(UnicodeSet escapeCharacters) {
+        this.escapeCharacters = (UnicodeSet) escapeCharacters.clone();
+        return this;
+    }
+    public boolean isUsingQuote() {
+        return usingQuote;
+    }
+    public PatternTokenizer setUsingQuote(boolean usingQuote) {
+        this.usingQuote = usingQuote;
+        needingQuoteCharacters = null;
+        return this;
+    }
+    public boolean isUsingSlash() {
+        return usingSlash;
+    }
+    public PatternTokenizer setUsingSlash(boolean usingSlash) {
+        this.usingSlash = usingSlash;
+        needingQuoteCharacters = null;
+        return this;
+    }
+    //    public UnicodeSet getQuoteCharacters() {
+//  return (UnicodeSet) quoteCharacters.clone();
+//  }
+//  public PatternTokenizer setQuoteCharacters(UnicodeSet quoteCharacters) {
+//  this.quoteCharacters = (UnicodeSet) quoteCharacters.clone();
+//  needingQuoteCharacters = null;
+//  return this;
+//  }
+    public int getLimit() {
+        return limit;
+    }
+    public PatternTokenizer setLimit(int limit) {
+        this.limit = limit;
+        return this;
+    }
+    public int getStart() {
+        return start;
+    }
+    public PatternTokenizer setStart(int start) {
+        this.start = start;
+        return this;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public PatternTokenizer setPattern(StringBuffer pattern) {
+//##        return setPattern(pattern.toString());
+//##    }
+//#else 
+    public PatternTokenizer setPattern(CharSequence pattern) {
+        return setPattern(pattern.toString());
+    }
+//#endif
+
+    public PatternTokenizer setPattern(String pattern) {
+        if (pattern == null) {
+            throw new IllegalArgumentException("Inconsistent arguments");
+        }
+        this.start = 0;
+        this.limit = pattern.length();
+        this.pattern = pattern;
+        return this;
+    }
+
+    public static final char SINGLE_QUOTE = '\'';
+    public static final char BACK_SLASH = '\\';
+    private static int NO_QUOTE = -1, IN_QUOTE = -2;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public String quoteLiteral(StringBuffer string) {
+//##        return quoteLiteral(string.toString());
+//##    }
+//#else
+    public String quoteLiteral(CharSequence string) {
+        return quoteLiteral(string.toString());
+    }
+//#endif
+
+    /**
+     * Quote a literal string, using the available settings. Thus syntax characters, quote characters, and ignorable characters will be put into quotes.
+     * @param string
+     * @return
+     */
+    public String quoteLiteral(String string) {
+        if (needingQuoteCharacters == null) {
+            needingQuoteCharacters = new UnicodeSet().addAll(syntaxCharacters).addAll(ignorableCharacters).addAll(extraQuotingCharacters); // .addAll(quoteCharacters)
+            if (usingSlash) needingQuoteCharacters.add(BACK_SLASH);
+            if (usingQuote) needingQuoteCharacters.add(SINGLE_QUOTE);
+        }
+        StringBuffer result = new StringBuffer();
+        int quotedChar = NO_QUOTE;
+        int cp;
+        for (int i = 0; i < string.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(string, i);
+            if (escapeCharacters.contains(cp)) {
+                // we may have to fix up previous characters
+                if (quotedChar == IN_QUOTE) {
+                    result.append(SINGLE_QUOTE);
+                    quotedChar = NO_QUOTE;
+                }
+                appendEscaped(result, cp);
+                continue;
+            }
+            
+            if (needingQuoteCharacters.contains(cp)) {
+                // if we have already started a quote
+                if (quotedChar == IN_QUOTE) {
+                    UTF16.append(result, cp);
+                    if (usingQuote && cp == SINGLE_QUOTE) { // double it
+                        result.append(SINGLE_QUOTE);
+                    }
+                    continue;
+                }
+                // otherwise not already in quote
+                if (usingSlash) {
+                    result.append(BACK_SLASH);
+                    UTF16.append(result, cp);
+                    continue;
+                }
+                if (usingQuote) {
+                    if (cp == SINGLE_QUOTE) { // double it and continue
+                        result.append(SINGLE_QUOTE);
+                        result.append(SINGLE_QUOTE);
+                        continue;
+                    }
+                    result.append(SINGLE_QUOTE);
+                    UTF16.append(result, cp);
+                    quotedChar = IN_QUOTE;
+                    continue;
+                }
+                // we have no choice but to use \\u or \\U
+                appendEscaped(result, cp);
+                continue;
+            }
+            // otherwise cp doesn't need quoting
+            // we may have to fix up previous characters
+            if (quotedChar == IN_QUOTE) {
+                result.append(SINGLE_QUOTE);
+                quotedChar = NO_QUOTE;
+            }
+            UTF16.append(result, cp);
+        }
+        // all done. 
+        // we may have to fix up previous characters
+        if (quotedChar == IN_QUOTE) {
+            result.append(SINGLE_QUOTE);
+        }
+        return result.toString();
+    }
+
+    private void appendEscaped(StringBuffer result, int cp) {
+        if (cp <= 0xFFFF) {
+            result.append("\\u").append(Utility.hex(cp,4));
+        } else {
+            result.append("\\U").append(Utility.hex(cp,8));
+        }
+    }
+    
+    public String normalize() {
+        int oldStart = start;
+        StringBuffer result = new StringBuffer();
+        StringBuffer buffer = new StringBuffer();
+        while (true) {
+            buffer.setLength(0);
+            int status = next(buffer);
+            if (status == DONE) {
+                start = oldStart;
+                return result.toString();
+            }
+            if (status != SYNTAX) {
+                result.append(quoteLiteral(buffer));
+            } else {
+                result.append(buffer);
+            }
+        }
+    }
+    
+    public static final int DONE = 0, SYNTAX = 1, LITERAL = 2, BROKEN_QUOTE = 3, BROKEN_ESCAPE = 4, UNKNOWN = 5;
+    
+    private static final int AFTER_QUOTE = -1, NONE = 0, START_QUOTE = 1, NORMAL_QUOTE = 2, SLASH_START = 3, HEX = 4;
+    
+    public int next(StringBuffer buffer) {
+        if (start >= limit) return DONE;
+        int status = UNKNOWN;
+        int lastQuote = UNKNOWN;
+        int quoteStatus = NONE;
+        int hexCount = 0;
+        int hexValue = 0;
+        int cp;
+        main:
+            for (int i = start; i < limit; i += UTF16.getCharCount(cp)) {
+                cp = UTF16.charAt(pattern, i);
+                // if we are in a quote, then handle it.
+                switch (quoteStatus) {
+                case SLASH_START:
+                    switch (cp) {
+                    case 'u':
+                        quoteStatus = HEX;
+                        hexCount = 4;
+                        hexValue = 0;
+                        continue main;
+                    case 'U': 
+                        quoteStatus = HEX;
+                        hexCount = 8;
+                        hexValue = 0;
+                        continue main;
+                    default:
+                        if (usingSlash) {
+                            UTF16.append(buffer, cp);
+                            quoteStatus = NONE;
+                            continue main;
+                        } else {
+                            buffer.append(BACK_SLASH);
+                            quoteStatus = NONE;
+                        }
+                    }
+                    break; // fall through to NONE
+                case HEX:
+                    hexValue <<= 4;
+                    hexValue += cp;
+                    switch (cp) {
+                    case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
+                        hexValue -= '0'; break;
+                    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+                        hexValue -= 'a' - 10; break;
+                    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+                        hexValue -= 'A' - 10; break;
+                    default:
+                        start = i;
+                    return BROKEN_ESCAPE;
+                    }
+                    --hexCount;
+                    if (hexCount == 0) {
+                        quoteStatus = NONE;
+                        UTF16.append(buffer, hexValue);
+                    }
+                    continue main;
+                case AFTER_QUOTE:
+                    // see if we get another quote character
+                    // if we just ended a quote BUT the following character is the lastQuote character, then we have a situation like '...''...', so we restart the quote
+                    if (cp == lastQuote) {
+                        UTF16.append(buffer, cp);
+                        quoteStatus = NORMAL_QUOTE;
+                        continue main;
+                    }
+                    quoteStatus = NONE;
+                    break; // fall through to NONE
+                case START_QUOTE:
+                    // if we are at the very start of a quote, and we hit another quote mark then we emit a literal quote character and end the quote
+                    if (cp == lastQuote) {
+                        UTF16.append(buffer, cp);
+                        quoteStatus = NONE; // get out of quote, with no trace remaining
+                        continue;                            
+                    }
+                    // otherwise get into quote
+                    UTF16.append(buffer, cp);
+                    quoteStatus = NORMAL_QUOTE;
+                    continue main;
+                case NORMAL_QUOTE: 
+                    if (cp == lastQuote) {
+                        quoteStatus = AFTER_QUOTE; // get out of quote
+                        continue main;
+                    }
+                    UTF16.append(buffer, cp);
+                    continue main;
+                }
+                
+                if (ignorableCharacters.contains(cp)) {
+                    continue;
+                }
+                // do syntax characters
+                if (syntaxCharacters.contains(cp)) {
+                    if (status == UNKNOWN) {
+                        UTF16.append(buffer, cp);
+                        start = i + UTF16.getCharCount(cp);
+                        return SYNTAX;
+                    } else { // LITERAL, so back up and break
+                        start = i;
+                        return status;
+                    }
+                }
+                // otherwise it is a literal; keep on going
+                status = LITERAL;
+                if (cp == BACK_SLASH) {
+                    quoteStatus = SLASH_START;
+                    continue;
+                } else if (usingQuote && cp == SINGLE_QUOTE) {
+                    lastQuote = cp;
+                    quoteStatus = START_QUOTE;
+                    continue;
+                }
+                // normal literals
+                UTF16.append(buffer, cp);
+            }
+        // handle final cleanup
+        start = limit;
+        switch (quoteStatus) {
+        case HEX:
+            status = BROKEN_ESCAPE;
+            break;
+        case SLASH_START:
+            if (usingSlash) {
+                status = BROKEN_ESCAPE;
+            } else {
+                buffer.append(BACK_SLASH);
+            }
+            break;
+        case START_QUOTE: case NORMAL_QUOTE:
+            status = BROKEN_QUOTE;
+            break;
+        }
+        return status;
+    }
+    
+    
+}
+//eof
diff --git a/src/com/ibm/icu/impl/PluralRulesLoader.java b/src/com/ibm/icu/impl/PluralRulesLoader.java
new file mode 100644
index 0000000..228eead
--- /dev/null
+++ b/src/com/ibm/icu/impl/PluralRulesLoader.java
@@ -0,0 +1,203 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.PluralRules;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.text.ParseException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * Loader for plural rules data.
+ */
+public class PluralRulesLoader {
+  private final Map rulesIdToRules;
+  private Map localeIdToRulesId; // lazy init, use getLocaleIdToRulesIdMap to access
+  private Map rulesIdToEquivalentULocale; // lazy init, use getRulesIdToEquivalentULocaleMap to access
+
+  /**
+   * Access through singleton.
+   */
+  private PluralRulesLoader() {
+    rulesIdToRules = new HashMap();
+  }
+
+  /**
+   * Returns the locales for which we have plurals data.
+   * Utility for testing.
+   */
+  public ULocale[] getAvailableULocales() {
+    Set keys = getLocaleIdToRulesIdMap().keySet();
+    ULocale[] locales = new ULocale[keys.size()];
+    int n = 0;
+    for (Iterator iter = keys.iterator(); iter.hasNext();) {
+      locales[n++] = ULocale.createCanonical((String) iter.next());
+    }
+    return locales;
+  }
+
+  /**
+   * Returns the functionally equivalent locale.
+   */
+  public ULocale getFunctionalEquivalent(ULocale locale, boolean[] isAvailable) {
+    if (isAvailable != null && isAvailable.length > 0) {
+      String localeId = ULocale.canonicalize(locale.getBaseName());
+      Map idMap = getLocaleIdToRulesIdMap();
+      isAvailable[0] = idMap.containsKey(localeId);
+    }
+
+    String rulesId = getRulesIdForLocale(locale);
+    if (rulesId == null || rulesId.trim().length() == 0) {
+      return ULocale.ROOT; // ultimate fallback
+    }
+
+    ULocale result = (ULocale) getRulesIdToEquivalentULocaleMap().get(rulesId);
+    if (result == null) {
+      return ULocale.ROOT; // ultimate fallback
+    }
+
+    return result;
+  }
+
+  /**
+   * Returns the lazily-constructed map.
+   */
+  private Map getLocaleIdToRulesIdMap() {
+    checkBuildRulesIdMaps();
+    return localeIdToRulesId;
+  }
+
+  /**
+   * Returns the lazily-constructed map.
+   */
+  private Map getRulesIdToEquivalentULocaleMap() {
+    checkBuildRulesIdMaps();
+    return rulesIdToEquivalentULocale;
+  }
+
+  /**
+   * Lazily constructs the localeIdToRulesId and rulesIdToEquivalentULocale
+   * maps if necessary. These exactly reflect the contents of the locales resource
+   * in plurals.res.
+   */
+  private void checkBuildRulesIdMaps() {
+    if (localeIdToRulesId == null) {
+      try {
+        UResourceBundle pluralb = getPluralBundle();
+        UResourceBundle localeb = pluralb.get("locales");
+        localeIdToRulesId = new TreeMap();  // sort for convenience of getAvailableULocales
+        rulesIdToEquivalentULocale = new HashMap(); // not visible
+        for (int i = 0; i < localeb.getSize(); ++i) {
+          UResourceBundle b = localeb.get(i);
+          String id = b.getKey();
+          String value = b.getString().intern();
+          localeIdToRulesId.put(id, value);
+
+          if (!rulesIdToEquivalentULocale.containsKey(value)) {
+            rulesIdToEquivalentULocale.put(value, new ULocale(id));
+          }
+        }
+      }
+      catch (MissingResourceException e) {
+        localeIdToRulesId = new HashMap(); // dummy so we don't try again, can read
+        rulesIdToEquivalentULocale = new HashMap();
+      }
+    }
+  }
+
+  /**
+   * Gets the rulesId from the locale,with locale fallback.  If there is no
+   * rulesId, return null.  The rulesId might be the empty string if the
+   * rule is the default rule.
+   */
+  public String getRulesIdForLocale(ULocale locale) {
+    Map idMap = getLocaleIdToRulesIdMap();
+    String localeId = ULocale.canonicalize(locale.getBaseName());
+    String rulesId = null;
+    while (null == (rulesId = (String) idMap.get(localeId))) {
+      int ix = localeId.lastIndexOf("_");
+      if (ix == -1) {
+        break;
+      }
+      localeId = localeId.substring(0, ix);
+    }
+    return rulesId;
+  }
+
+  /**
+   * Gets the rule from the rulesId.  If there is no rule for this rulesId,
+   * return null.
+   */
+  public PluralRules getRulesForRulesId(String rulesId) {
+    PluralRules rules = (PluralRules) rulesIdToRules.get(rulesId);
+    if (rules == null) {
+      try {
+        UResourceBundle pluralb = getPluralBundle();
+        UResourceBundle rulesb = pluralb.get("rules");
+        UResourceBundle setb = rulesb.get(rulesId);
+
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < setb.getSize(); ++i) {
+          UResourceBundle b = setb.get(i);
+          if (i > 0) {
+            sb.append("; ");
+          }
+          sb.append(b.getKey());
+          sb.append(": ");
+          sb.append(b.getString());
+        }
+        rules = PluralRules.parseDescription(sb.toString());
+      } catch (ParseException e) {
+      } catch (MissingResourceException e) {
+      }
+      rulesIdToRules.put(rulesId, rules); // put even if null
+    }
+    return rules;
+  }
+
+  /**
+   * Return the plurals resource.
+   * Note MissingResourceException is unchecked, listed here for clarity.
+   * Callers should handle this exception.
+   */
+  public UResourceBundle getPluralBundle() throws MissingResourceException {
+      return ICUResourceBundle.getBundleInstance(
+          ICUResourceBundle.ICU_BASE_NAME,
+          "plurals",
+          ICUResourceBundle.ICU_DATA_CLASS_LOADER,
+          true);
+  }
+
+  /**
+   * Returns the plural rules for the the locale.
+   * If we don't have data,
+   * com.ibm.icu.text.PluralRules.DEFAULT is returned.
+   */
+  public PluralRules forLocale(ULocale locale) {
+    String rulesId = getRulesIdForLocale(locale);
+    if (rulesId == null || rulesId.trim().length() == 0) {
+      return PluralRules.DEFAULT;
+    }
+    PluralRules rules = getRulesForRulesId(rulesId);
+    if (rules == null) {
+      rules = PluralRules.DEFAULT;
+    }
+    return rules;
+  }
+
+  /**
+   * The only instance of the loader.
+   */
+  public static final PluralRulesLoader loader = new PluralRulesLoader();
+}
diff --git a/src/com/ibm/icu/impl/RelativeDateFormat.java b/src/com/ibm/icu/impl/RelativeDateFormat.java
new file mode 100644
index 0000000..76a3124
--- /dev/null
+++ b/src/com/ibm/icu/impl/RelativeDateFormat.java
@@ -0,0 +1,232 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+
+/**
+ * @author srl
+ */
+public class RelativeDateFormat extends DateFormat {
+
+    /**
+     * @author srl
+     *
+     */
+    public class URelativeString {
+        URelativeString(int offset, String string) {
+            this.offset = offset;
+            this.string = string;
+        }
+        URelativeString(String offset, String string) {
+            this.offset = Integer.parseInt(offset);
+            this.string = string;
+        }
+        public int    offset;
+        public String string;
+    }
+
+    // copy c'tor?
+    
+    /**
+     * @param timeStyle
+     * @param dateStyle
+     * @param locale
+     */
+    public RelativeDateFormat(int timeStyle, int dateStyle, ULocale locale) {
+        fLocale = locale;
+        fTimeStyle = timeStyle;
+        fDateStyle = dateStyle;
+        
+        if(fDateStyle != DateFormat.NONE) {
+            int newStyle = fDateStyle & ~DateFormat.RELATIVE;
+            fDateFormat = DateFormat.getDateInstance(newStyle, locale);
+        } else {
+            fDateFormat = null;
+        }
+        if(fTimeStyle != DateFormat.NONE) {
+            int newStyle = fTimeStyle & ~DateFormat.RELATIVE;
+            fTimeFormat = DateFormat.getTimeInstance(newStyle, locale);
+        } else {
+            fTimeFormat = null;
+        }
+
+        initializeCalendar(null, fLocale);
+        loadDates();
+        initializeCombinedFormat(calendar, fLocale);
+    }
+    
+    /**
+     * serial version (generated)
+     */
+    private static final long serialVersionUID = 1131984966440549435L;
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DateFormat#format(com.ibm.icu.util.Calendar, java.lang.StringBuffer, java.text.FieldPosition)
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+            FieldPosition fieldPosition) {
+
+        //TODO: handle FieldPosition properly
+
+        String dayString = null;
+        String timeString = null;
+        if (fDateStyle != DateFormat.NONE) {
+            // calculate the difference, in days, between 'cal' and now.
+            int dayDiff = dayDifference(cal);
+
+            // look up string
+            dayString = getStringForDay(dayDiff);
+
+            if (dayString == null) {
+                // didn't find it. Fall through to the fDateFormat 
+                dayString = fDateFormat.format(cal);
+            }
+        }
+        if (fTimeStyle != DateFormat.NONE) {
+            timeString = fTimeFormat.format(cal);
+        }
+
+        if (dayString != null && timeString != null) {
+            return fCombinedFormat.format(new Object[] {dayString, timeString}, toAppendTo,
+                    new FieldPosition(0));
+        } else if (dayString != null) {
+            toAppendTo.append(dayString);
+        } else if (timeString != null) {
+            toAppendTo.append(timeString);
+        }
+        return toAppendTo;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DateFormat#parse(java.lang.String, com.ibm.icu.util.Calendar, java.text.ParsePosition)
+     */
+    public void parse(String text, Calendar cal, ParsePosition pos) {
+        throw new UnsupportedOperationException("Relative Date parse is not implemented yet");
+    }
+
+    private DateFormat fDateFormat; // the held date format
+    private DateFormat fTimeFormat; // the held time format
+    private MessageFormat fCombinedFormat; //  the {0} {1} format. 
+
+    int fDateStyle;
+    int fTimeStyle;
+    ULocale  fLocale;
+    
+    private transient URelativeString fDates[] = null; // array of strings
+    
+    
+    /**
+     * Get the string at a specific offset.
+     * @param day day offset ( -1, 0, 1, etc.. )
+     * @return the string, or NULL if none at that location.
+     */
+    private String getStringForDay(int day) {
+        if(fDates == null) {
+            loadDates();
+        }
+        for(int i=0;i<fDates.length;i++) {
+            if(fDates[i].offset == day) {
+                return fDates[i].string;
+            }
+        }
+        return null;
+    }
+    
+    /** 
+     * Load the Date string array
+     */
+    private synchronized void loadDates() {
+        CalendarData calData = new CalendarData(fLocale, calendar.getType());
+        UResourceBundle rb = calData.get("fields", "day", "relative");
+        
+        Set datesSet =new TreeSet(new Comparator() { 
+            public int compare(Object o1, Object o2) {
+                URelativeString r1 = (URelativeString)o1;
+                URelativeString r2 = (URelativeString)o2;
+                
+                if(r1.offset == r2.offset) {
+                    return 0;
+                } else if(r1.offset < r2.offset) {
+                    return -1;
+                } else {
+                    return 1;
+                }
+            }
+        }) ;
+        
+        for(UResourceBundleIterator i = rb.getIterator();i.hasNext();) {
+            UResourceBundle line = i.next();
+            
+            String k = line.getKey();
+            String v = line.getString();
+            URelativeString rs = new URelativeString(k,v);
+            datesSet.add(rs);
+        }
+        fDates = new URelativeString[0];
+        fDates = (URelativeString[])datesSet.toArray(fDates);
+    }
+    
+    /**
+     * @return the number of days in "until-now"
+     */
+    private static int dayDifference(Calendar until) {
+        Calendar nowCal = (Calendar)until.clone();
+        Date nowDate = new Date(System.currentTimeMillis());
+        nowCal.clear();
+        nowCal.setTime(nowDate);
+        int dayDiff = until.get(Calendar.JULIAN_DAY) - nowCal.get(Calendar.JULIAN_DAY);
+        return dayDiff;
+    }
+    
+    /**
+     * initializes fCalendar from parameters.  Returns fCalendar as a convenience.
+     * @param zone  Zone to be adopted, or NULL for TimeZone::createDefault().
+     * @param locale Locale of the calendar
+     * @param status Error code
+     * @return the newly constructed fCalendar
+     */
+    private Calendar initializeCalendar(TimeZone zone, ULocale locale) {
+        if (calendar == null) {
+            if(zone == null) {
+                calendar = Calendar.getInstance(locale);
+            } else {
+                calendar = Calendar.getInstance(zone, locale);
+            }
+        }
+        return calendar;
+    }
+
+    private MessageFormat initializeCombinedFormat(Calendar cal, ULocale locale) {
+        String pattern = "{1} {0}";
+        try {
+            CalendarData calData = new CalendarData(locale, cal.getType());
+            String[] patterns = calData.get("DateTimePatterns").getStringArray();
+            if (patterns != null && patterns.length >= 9) {
+                pattern = patterns[8];
+            }
+        } catch (MissingResourceException e) {
+            // use default
+        }
+        fCombinedFormat = new MessageFormat(pattern, locale);
+        return fCombinedFormat;
+    }
+}
diff --git a/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java b/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
new file mode 100644
index 0000000..2518bd1
--- /dev/null
+++ b/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
@@ -0,0 +1,203 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.*;
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.UTF16;    
+
+/**
+ * DLF docs must define behavior when Replaceable is mutated underneath
+ * the iterator.
+ *
+ * This and ICUCharacterIterator share some code, maybe they should share
+ * an implementation, or the common state and implementation should be
+ * moved up into UCharacterIterator.
+ *
+ * What are first, last, and getBeginIndex doing here?!?!?!
+ */
+public class ReplaceableUCharacterIterator extends UCharacterIterator {
+
+    // public constructor ------------------------------------------------------
+    
+    /**
+     * Public constructor
+     * @param replaceable text which the iterator will be based on
+     */
+    public ReplaceableUCharacterIterator(Replaceable replaceable){
+        if(replaceable==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = replaceable;
+        this.currentIndex = 0;
+    }
+    
+    /**
+     * Public constructor
+     * @param str text which the iterator will be based on
+     */
+    public ReplaceableUCharacterIterator(String str){
+        if(str==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = new ReplaceableString(str);
+        this.currentIndex = 0;
+    }
+    
+    /**
+     * Public constructor
+     * @param buf buffer of text on which the iterator will be based
+     */
+    public ReplaceableUCharacterIterator(StringBuffer buf){
+        if(buf==null){
+            throw new IllegalArgumentException();
+        }
+        this.replaceable  = new ReplaceableString(buf);
+        this.currentIndex = 0;
+    }
+    
+    // public methods ----------------------------------------------------------
+    
+    /**
+     * Creates a copy of this iterator, does not clone the underlying 
+     * <code>Replaceable</code>object
+     * @return copy of this iterator
+     */
+    public Object clone(){
+        try {
+          return super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null; // never invoked
+        }
+    }
+    
+    /**
+     * Returns the current UTF16 character.
+     * @return current UTF16 character
+     */
+    public int current(){
+        if (currentIndex < replaceable.length()) {
+            return replaceable.charAt(currentIndex);
+        }
+        return DONE;
+    }
+    
+    /**
+     * Returns the current codepoint
+     * @return current codepoint
+     */
+    public int currentCodePoint(){
+        // cannot use charAt due to it different 
+        // behaviour when index is pointing at a
+        // trail surrogate, check for surrogates
+         
+        int ch = current();
+        if(UTF16.isLeadSurrogate((char)ch)){
+            // advance the index to get the next code point
+            next();
+            // due to post increment semantics current() after next() 
+            // actually returns the next char which is what we want
+            int ch2 = current();
+            // current should never change the current index so back off
+            previous();
+            
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                // we found a surrogate pair
+                return UCharacterProperty.getRawSupplementary(
+                                                         (char)ch,(char)ch2
+                                                             );
+            }
+        }
+        return ch;
+    }
+    
+    /**
+     * Returns the length of the text
+     * @return length of the text
+     */
+    public int getLength(){
+        return replaceable.length();
+    }
+    
+    /**
+     * Gets the current currentIndex in text.
+     * @return current currentIndex in text.
+     */
+    public int getIndex(){
+        return currentIndex;
+    }
+        
+    /**
+     * Returns next UTF16 character and increments the iterator's currentIndex by 1. 
+     * If the resulting currentIndex is greater or equal to the text length, the 
+     * currentIndex is reset to the text length and a value of DONECODEPOINT is 
+     * returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is off the 
+     *         end of the text range.
+     */
+    public int next(){
+        if (currentIndex < replaceable.length()) {
+            return replaceable.charAt(currentIndex++);
+        }
+        return DONE;
+    }
+    
+                
+    /**
+     * Returns previous UTF16 character and decrements the iterator's currentIndex by 
+     * 1. 
+     * If the resulting currentIndex is less than 0, the currentIndex is reset to 0 and a 
+     * value of DONECODEPOINT is returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is off the 
+     *         start of the text range.
+     */
+    public int previous(){
+        if (currentIndex > 0) {
+            return replaceable.charAt(--currentIndex);
+        }
+        return DONE;
+    }
+
+    /**
+     * <p>Sets the currentIndex to the specified currentIndex in the text and returns that 
+     * single UTF16 character at currentIndex. 
+     * This assumes the text is stored as 16-bit code units.</p>
+     * @param currentIndex the currentIndex within the text. 
+     * @exception IllegalArgumentException is thrown if an invalid currentIndex is 
+     *            supplied. i.e. currentIndex is out of bounds.
+     * @returns the character at the specified currentIndex or DONE if the specified 
+     *         currentIndex is equal to the end of the text.
+     */
+    public void setIndex(int currentIndex) throws IndexOutOfBoundsException{
+        if (currentIndex < 0 || currentIndex > replaceable.length()) {
+            throw new IndexOutOfBoundsException();
+        }
+        this.currentIndex = currentIndex;
+    }
+    
+    public int getText(char[] fillIn, int offset){
+        int length = replaceable.length();
+        if(offset < 0 || offset + length > fillIn.length){
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        }
+        replaceable.getChars(0,length,fillIn,offset);
+        return length;
+    }       
+        
+    // private data members ----------------------------------------------------
+    
+    /**
+     * Replacable object
+     */
+    private Replaceable replaceable;
+    /**
+     * Current currentIndex
+     */
+    private int currentIndex;
+
+}
diff --git a/src/com/ibm/icu/impl/ResourceBundleWrapper.java b/src/com/ibm/icu/impl/ResourceBundleWrapper.java
new file mode 100644
index 0000000..06668ed
--- /dev/null
+++ b/src/com/ibm/icu/impl/ResourceBundleWrapper.java
@@ -0,0 +1,219 @@
+/*
+******************************************************************************
+* Copyright (C) 2004-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.MissingResourceException;
+import java.util.PropertyResourceBundle;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * just a wrapper for Java ListResourceBundles and 
+ * @author ram
+ *
+ */
+public class ResourceBundleWrapper extends UResourceBundle {
+    private ResourceBundle bundle = null;
+    private String localeID = null;
+    private String baseName = null;
+    private Vector keys=null;
+//    private int loadingStatus = -1;    
+    
+    private ResourceBundleWrapper(ResourceBundle bundle){
+        this.bundle=bundle;
+    }
+
+    protected void setLoadingStatus(int newStatus){
+//        loadingStatus = newStatus;
+    }
+    
+    protected Object handleGetObject(String aKey){
+        ResourceBundleWrapper current = this;
+        Object obj = null;
+        while(current!=null){
+            try{
+                obj = current.bundle.getObject(aKey);
+                break;
+            }catch(MissingResourceException ex){
+                current = (ResourceBundleWrapper)current.getParent();
+            }
+        }
+        if (obj == null){
+            throw new MissingResourceException("Can't find resource for bundle "
+                                               +baseName
+                                               +", key "+aKey,
+                                               this.getClass().getName(),
+                                               aKey);
+        }
+        return obj;
+    }
+    
+    public Enumeration getKeys(){
+        return keys.elements();
+    }
+    
+    private void initKeysVector(){
+        ResourceBundleWrapper current = this;
+        keys = new Vector();
+        while(current!=null){
+            Enumeration e = current.bundle.getKeys();
+            while(e.hasMoreElements()){
+                String elem = (String)e.nextElement();
+                if(!keys.contains(elem)){
+                    keys.add(elem);
+                }
+            }
+            current = (ResourceBundleWrapper)current.getParent();
+        }
+    }
+    protected String getLocaleID(){
+        return localeID;   
+    }
+ 
+    protected String getBaseName(){
+        return bundle.getClass().getName().replace('.','/');   
+    }
+    
+    public ULocale getULocale(){
+        return new ULocale(localeID);   
+    }
+    
+    public UResourceBundle getParent(){
+        return (UResourceBundle)parent;   
+    }
+
+    // Flag for enabling/disabling debugging code
+    private static final boolean DEBUG = ICUDebug.enabled("resourceBundleWrapper");
+    
+    // This method is for super class's instantiateBundle method
+    public static UResourceBundle getBundleInstance(String baseName, String localeID, 
+                                                    ClassLoader root, boolean disableFallback){
+        UResourceBundle b = instantiateBundle(baseName, localeID, root, disableFallback);
+        if(b==null){
+            String separator ="_";
+            if(baseName.indexOf('/')>=0){
+                separator = "/";
+            }
+            throw new MissingResourceException("Could not find the bundle "+ baseName+separator+ localeID,"","");
+        }
+        return b;
+    }
+    // recursively build bundle and override the super-class method
+     protected static synchronized UResourceBundle instantiateBundle(String baseName, String localeID,
+                                                                    ClassLoader root, boolean disableFallback) {
+        if (root == null) {
+            // we're on the bootstrap
+            root = ClassLoader.getSystemClassLoader();
+        }
+        final ClassLoader cl = root;
+        String name = baseName;
+        ULocale defaultLocale = ULocale.getDefault();
+        if (localeID.length() != 0) {
+            name = name + "_" + localeID;
+        }
+
+        ResourceBundleWrapper b = (ResourceBundleWrapper)loadFromCache(cl, name, defaultLocale);
+        if(b==null){
+            ResourceBundleWrapper parent = null;
+            int i = localeID.lastIndexOf('_');
+    
+            if (i != -1) {
+                String locName = localeID.substring(0, i);
+                parent = (ResourceBundleWrapper)loadFromCache(cl, baseName+"_"+locName,defaultLocale);
+                if(parent == null){
+                    parent = (ResourceBundleWrapper)instantiateBundle(baseName, locName , cl, disableFallback);
+                }
+            }else if(localeID.length()>0){
+                parent = (ResourceBundleWrapper)loadFromCache(cl, baseName,defaultLocale);
+                if(parent==null){
+                    parent = (ResourceBundleWrapper)instantiateBundle(baseName, "", cl, disableFallback);
+                }
+            }
+            try {
+                Class cls = cl.loadClass(name);
+                ResourceBundle bx = (ResourceBundle) cls.newInstance();
+                b = new ResourceBundleWrapper(bx);
+                if (parent != null) {
+                    b.setParent(parent);
+                }
+                b.baseName=baseName;
+                b.localeID = localeID;            
+    
+            } catch (ClassNotFoundException e) {
+                
+                final String resName = name.replace('.', '/') + ".properties";
+                InputStream stream = (InputStream)java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction() {
+                        public Object run() {
+                            if (cl != null) {
+                                return cl.getResourceAsStream(resName);
+                            } else {
+                                return ClassLoader.getSystemResourceAsStream(resName);
+                            }
+                        }
+                    }
+                );
+                if (stream != null) {
+                    // make sure it is buffered
+                    stream = new java.io.BufferedInputStream(stream);
+                    try {
+                        b = new ResourceBundleWrapper(new PropertyResourceBundle(stream));
+                        if (parent != null) {
+                            b.setParent(parent);
+                        }
+                        b.baseName=baseName;
+                        b.localeID=localeID;
+                    } catch (Exception ex) {
+                        // throw away exception
+                    } finally {
+                        try {
+                            stream.close();
+                        } catch (Exception ex) {
+                            // throw away exception
+                        }
+                    }
+                }
+    
+                // if a bogus locale is passed then the parent should be
+                // the default locale not the root locale!
+                if (b==null) {
+                    String defaultName = defaultLocale.toString();
+                    if (localeID.length()>0 && localeID.indexOf('_')< 0 && defaultName.indexOf(localeID) == -1) {
+                        b = (ResourceBundleWrapper)loadFromCache(cl,baseName+"_"+defaultName, defaultLocale);
+                        if(b==null){
+                            b = (ResourceBundleWrapper)instantiateBundle(baseName , defaultName, cl, disableFallback);
+                        }
+                    }
+                }
+                // if still could not find the bundle then return the parent
+                if(b==null){
+                    b=parent;
+                }
+            } catch (Exception e) {
+                if (DEBUG)
+                    System.out.println("failure");
+                if (DEBUG)
+                    System.out.println(e);
+            }
+
+            addToCache(cl, name, defaultLocale, b);
+        }
+        if(b!=null){
+            b.initKeysVector();
+        }else{
+            if(DEBUG)System.out.println("Returning null for "+baseName+"_"+localeID);
+        }
+        
+        return b;
+    }
+}
diff --git a/src/com/ibm/icu/impl/RuleCharacterIterator.java b/src/com/ibm/icu/impl/RuleCharacterIterator.java
new file mode 100644
index 0000000..dcde50b
--- /dev/null
+++ b/src/com/ibm/icu/impl/RuleCharacterIterator.java
@@ -0,0 +1,345 @@
+/*
+**********************************************************************
+* Copyright (c) 2003, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: September 23 2003
+* Since: ICU 2.8
+**********************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.text.ParsePosition;
+import com.ibm.icu.text.SymbolTable;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * An iterator that returns 32-bit code points.  This class is deliberately
+ * <em>not</em> related to any of the JDK or ICU4J character iterator classes
+ * in order to minimize complexity.
+ * @author Alan Liu
+ * @since ICU 2.8
+ */
+public class RuleCharacterIterator {
+
+    // TODO: Ideas for later.  (Do not implement if not needed, lest the
+    // code coverage numbers go down due to unused methods.)
+    // 1. Add a copy constructor, equals() method, clone() method.
+    // 2. Rather than return DONE, throw an exception if the end
+    // is reached -- this is an alternate usage model, probably not useful.
+    // 3. Return isEscaped from next().  If this happens,
+    // don't keep an isEscaped member variable.
+
+    /**
+     * Text being iterated.
+     */    
+    private String text;
+
+    /**
+     * Position of iterator.
+     */
+    private ParsePosition pos;
+
+    /**
+     * Symbol table used to parse and dereference variables.  May be null.
+     */
+    private SymbolTable sym;
+
+    /**
+     * Current variable expansion, or null if none.
+     */
+    private char[] buf;
+
+    /**
+     * Position within buf[].  Meaningless if buf == null.
+     */
+    private int bufPos;
+
+    /**
+     * Flag indicating whether the last character was parsed from an escape.
+     */
+    private boolean isEscaped;
+
+    /**
+     * Value returned when there are no more characters to iterate.
+     */
+    public static final int DONE = -1;
+
+    /**
+     * Bitmask option to enable parsing of variable names.  If (options &
+     * PARSE_VARIABLES) != 0, then an embedded variable will be expanded to
+     * its value.  Variables are parsed using the SymbolTable API.
+     */
+    public static final int PARSE_VARIABLES = 1;
+
+    /**
+     * Bitmask option to enable parsing of escape sequences.  If (options &
+     * PARSE_ESCAPES) != 0, then an embedded escape sequence will be expanded
+     * to its value.  Escapes are parsed using Utility.unescapeAt().
+     */
+    public static final int PARSE_ESCAPES   = 2;    
+
+    /**
+     * Bitmask option to enable skipping of whitespace.  If (options &
+     * SKIP_WHITESPACE) != 0, then whitespace characters will be silently
+     * skipped, as if they were not present in the input.  Whitespace
+     * characters are defined by UCharacterProperty.isRuleWhiteSpace().
+     */
+    public static final int SKIP_WHITESPACE = 4;
+
+    /**
+     * Constructs an iterator over the given text, starting at the given
+     * position.
+     * @param text the text to be iterated
+     * @param sym the symbol table, or null if there is none.  If sym is null,
+     * then variables will not be deferenced, even if the PARSE_VARIABLES
+     * option is set.
+     * @param pos upon input, the index of the next character to return.  If a
+     * variable has been dereferenced, then pos will <em>not</em> increment as
+     * characters of the variable value are iterated.
+     */
+    public RuleCharacterIterator(String text, SymbolTable sym,
+                                 ParsePosition pos) {
+        if (text == null || pos.getIndex() > text.length()) {
+            throw new IllegalArgumentException();
+        }
+        this.text = text;
+        this.sym = sym;
+        this.pos = pos;
+        buf = null;
+    }
+    
+    /**
+     * Returns true if this iterator has no more characters to return.
+     */
+    public boolean atEnd() {
+        return buf == null && pos.getIndex() == text.length();
+    }
+
+    /**
+     * Returns the next character using the given options, or DONE if there
+     * are no more characters, and advance the position to the next
+     * character.
+     * @param options one or more of the following options, bitwise-OR-ed
+     * together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE.
+     * @return the current 32-bit code point, or DONE
+     */
+    public int next(int options) {
+        int c = DONE;
+        isEscaped = false;
+
+        for (;;) {
+            c = _current();
+            _advance(UTF16.getCharCount(c));
+
+            if (c == SymbolTable.SYMBOL_REF && buf == null &&
+                (options & PARSE_VARIABLES) != 0 && sym != null) {
+                String name = sym.parseReference(text, pos, text.length());
+                // If name == null there was an isolated SYMBOL_REF;
+                // return it.  Caller must be prepared for this.
+                if (name == null) {
+                    break;
+                }
+                bufPos = 0;
+                buf = sym.lookup(name);
+                if (buf == null) {
+                    throw new IllegalArgumentException(
+                                "Undefined variable: " + name);
+                }
+                // Handle empty variable value
+                if (buf.length == 0) {
+                    buf = null;
+                }
+                continue;
+            }
+
+            if ((options & SKIP_WHITESPACE) != 0 &&
+                UCharacterProperty.isRuleWhiteSpace(c)) {
+                continue;
+            }
+
+            if (c == '\\' && (options & PARSE_ESCAPES) != 0) {
+                int offset[] = new int[] { 0 };
+                c = Utility.unescapeAt(lookahead(), offset);
+                jumpahead(offset[0]);
+                isEscaped = true;
+                if (c < 0) {
+                    throw new IllegalArgumentException("Invalid escape");
+                }
+            }
+
+            break;
+        }
+
+        return c;
+    }
+
+    /**
+     * Returns true if the last character returned by next() was
+     * escaped.  This will only be the case if the option passed in to
+     * next() included PARSE_ESCAPED and the next character was an
+     * escape sequence.
+     */
+    public boolean isEscaped() {
+        return isEscaped;
+    }
+
+    /**
+     * Returns true if this iterator is currently within a variable expansion.
+     */
+    public boolean inVariable() {
+        return buf != null;
+    }
+
+    /**
+     * Returns an object which, when later passed to setPos(), will
+     * restore this iterator's position.  Usage idiom:
+     *
+     * RuleCharacterIterator iterator = ...;
+     * Object pos = iterator.getPos(null); // allocate position object
+     * for (;;) {
+     *   pos = iterator.getPos(pos); // reuse position object
+     *   int c = iterator.next(...);
+     *   ...
+     * }
+     * iterator.setPos(pos);
+     *
+     * @param p a position object previously returned by getPos(),
+     * or null.  If not null, it will be updated and returned.  If
+     * null, a new position object will be allocated and returned.
+     * @return a position object which may be passed to setPos(),
+     * either `p,' or if `p' == null, a newly-allocated object
+     */
+    public Object getPos(Object p) {
+        if (p == null) {
+            return new Object[] {buf, new int[] {pos.getIndex(), bufPos}};
+        }
+        Object[] a = (Object[]) p;
+        a[0] = buf;
+        int[] v = (int[]) a[1];
+        v[0] = pos.getIndex();
+        v[1] = bufPos;
+        return p;
+    }
+
+    /**
+     * Restores this iterator to the position it had when getPos()
+     * returned the given object.
+     * @param p a position object previously returned by getPos()
+     */
+    public void setPos(Object p) {
+        Object[] a = (Object[]) p;
+        buf = (char[]) a[0];
+        int[] v = (int[]) a[1];
+        pos.setIndex(v[0]);
+        bufPos = v[1];
+    }
+
+    /**
+     * Skips ahead past any ignored characters, as indicated by the given
+     * options.  This is useful in conjunction with the lookahead() method.
+     *
+     * Currently, this only has an effect for SKIP_WHITESPACE.
+     * @param options one or more of the following options, bitwise-OR-ed
+     * together: PARSE_VARIABLES, PARSE_ESCAPES, SKIP_WHITESPACE.
+     */
+    public void skipIgnored(int options) {
+        if ((options & SKIP_WHITESPACE) != 0) {
+            for (;;) {
+                int a = _current();
+                if (!UCharacterProperty.isRuleWhiteSpace(a)) break;
+                _advance(UTF16.getCharCount(a));
+            }
+        }
+    }
+
+    /**
+     * Returns a string containing the remainder of the characters to be
+     * returned by this iterator, without any option processing.  If the
+     * iterator is currently within a variable expansion, this will only
+     * extend to the end of the variable expansion.  This method is provided
+     * so that iterators may interoperate with string-based APIs.  The typical
+     * sequence of calls is to call skipIgnored(), then call lookahead(), then
+     * parse the string returned by lookahead(), then call jumpahead() to
+     * resynchronize the iterator.
+     * @return a string containing the characters to be returned by future
+     * calls to next()
+     */
+    public String lookahead() {
+        if (buf != null) {
+            return new String(buf, bufPos, buf.length - bufPos);
+        } else {
+            return text.substring(pos.getIndex());
+        }
+    }
+
+    /**
+     * Advances the position by the given number of 16-bit code units.
+     * This is useful in conjunction with the lookahead() method.
+     * @param count the number of 16-bit code units to jump over
+     */
+    public void jumpahead(int count) {
+        if (count < 0) {
+            throw new IllegalArgumentException();
+        }
+        if (buf != null) {
+            bufPos += count;
+            if (bufPos > buf.length) {
+                throw new IllegalArgumentException();
+            }
+            if (bufPos == buf.length) {
+                buf = null;
+            }
+        } else {
+            int i = pos.getIndex() + count;
+            pos.setIndex(i);
+            if (i > text.length()) {
+                throw new IllegalArgumentException();
+            }
+        }
+    }
+
+    /**
+     * Returns a string representation of this object, consisting of the
+     * characters being iterated, with a '|' marking the current position.
+     * Position within an expanded variable is <em>not</em> indicated.
+     * @return a string representation of this object
+     */
+    public String toString() {
+        int b = pos.getIndex();
+        return text.substring(0, b) + '|' + text.substring(b);
+    }
+
+    /**
+     * Returns the current 32-bit code point without parsing escapes, parsing
+     * variables, or skipping whitespace.
+     * @return the current 32-bit code point
+     */
+    private int _current() {
+        if (buf != null) {
+            return UTF16.charAt(buf, 0, buf.length, bufPos);
+        } else {
+            int i = pos.getIndex();
+            return (i < text.length()) ? UTF16.charAt(text, i) : DONE;
+        }
+    }
+    
+    /**
+     * Advances the position by the given amount.
+     * @param count the number of 16-bit code units to advance past
+     */
+    private void _advance(int count) {
+        if (buf != null) {
+            bufPos += count;
+            if (bufPos == buf.length) {
+                buf = null;
+            }
+        } else {
+            pos.setIndex(pos.getIndex() + count);
+            if (pos.getIndex() > text.length()) {
+                pos.setIndex(text.length());
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/SimpleCache.java b/src/com/ibm/icu/impl/SimpleCache.java
new file mode 100644
index 0000000..156ec75
--- /dev/null
+++ b/src/com/ibm/icu/impl/SimpleCache.java
@@ -0,0 +1,73 @@
+/*
+ ****************************************************************************
+ * Copyright (c) 2007-2008 International Business Machines Corporation and  *
+ * others.  All rights reserved.                                            *
+ ****************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.lang.ref.Reference;
+import java.lang.ref.SoftReference;
+import java.lang.ref.WeakReference;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SimpleCache implements ICUCache {
+    private static final int DEFAULT_CAPACITY = 16;
+
+    private Reference cacheRef = null;
+    private int type = ICUCache.SOFT;
+    private int capacity = DEFAULT_CAPACITY;
+
+    public SimpleCache() {
+    }
+
+    public SimpleCache(int cacheType) {
+        this(cacheType, DEFAULT_CAPACITY);
+    }
+
+    public SimpleCache(int cacheType, int initialCapacity) {
+        if (cacheType == ICUCache.WEAK) {
+            type = cacheType;
+        }
+        if (initialCapacity > 0) {
+            capacity = initialCapacity;
+        }
+    }
+
+    public Object get(Object key) {
+        Reference ref = cacheRef;
+        if (ref != null) {
+            Map map = (Map)ref.get();
+            if (map != null) {
+                return map.get(key);
+            }
+        }
+        return null;
+    }
+
+    public void put(Object key, Object value) {
+        Reference ref = cacheRef;
+        Map map = null;
+        if (ref != null) {
+            map = (Map)ref.get();
+        }
+        if (map == null) {
+            map = Collections.synchronizedMap(new HashMap(capacity));
+            if (type == ICUCache.WEAK) {
+                ref = new WeakReference(map);
+            } else {
+                ref = new SoftReference(map);
+            }
+            cacheRef = ref;
+        }
+        map.put(key, value);
+    }
+
+    public void clear() {
+        cacheRef = null;
+    }
+
+}
diff --git a/src/com/ibm/icu/impl/SortedSetRelation.java b/src/com/ibm/icu/impl/SortedSetRelation.java
new file mode 100644
index 0000000..1e262e9
--- /dev/null
+++ b/src/com/ibm/icu/impl/SortedSetRelation.java
@@ -0,0 +1,180 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2004, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: M. Davis
+* Created: December 2002 (moved from UnicodeSet)
+* Since: ICU 2.4
+**********************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.util.SortedSet;
+import java.util.Iterator;
+import java.util.TreeSet;
+
+/**
+ * Computationally efficient determination of the relationship between
+ * two SortedSets.
+ */
+public class SortedSetRelation {
+
+    /**
+     * The relationship between two sets A and B can be determined by looking at:
+     * A - B
+     * A & B (intersection)
+     * B - A
+     * These are represented by a set of bits.
+     * Bit 2 is true if A - B is not empty
+     * Bit 1 is true if A & B is not empty
+     * BIT 0 is true if B - A is not empty
+     */
+    public static final int
+        A_NOT_B = 4,
+        A_AND_B = 2,
+        B_NOT_A = 1;
+    
+    /**
+     * There are 8 combinations of the relationship bits. These correspond to
+     * the filters (combinations of allowed bits) in hasRelation. They also
+     * correspond to the modification functions, listed in comments.
+     */
+    public static final int 
+       ANY =            A_NOT_B |   A_AND_B |   B_NOT_A,    // union,           addAll
+       CONTAINS =       A_NOT_B |   A_AND_B,                // A                (unnecessary)
+       DISJOINT =       A_NOT_B |               B_NOT_A,    // A xor B,         missing Java function
+       ISCONTAINED =                A_AND_B |   B_NOT_A,    // B                (unnecessary)
+       NO_B =           A_NOT_B,                            // A setDiff B,     removeAll
+       EQUALS =                     A_AND_B,                // A intersect B,   retainAll
+       NO_A =                                   B_NOT_A,    // B setDiff A,     removeAll
+       NONE =           0,                                  // null             (unnecessary)
+       
+       ADDALL = ANY,                // union,           addAll
+       A = CONTAINS,                // A                (unnecessary)
+       COMPLEMENTALL = DISJOINT,    // A xor B,         missing Java function
+       B = ISCONTAINED,             // B                (unnecessary)
+       REMOVEALL = NO_B,            // A setDiff B,     removeAll
+       RETAINALL = EQUALS,          // A intersect B,   retainAll
+       B_REMOVEALL = NO_A;          // B setDiff A,     removeAll
+       
+  
+    /**
+     * Utility that could be on SortedSet. Faster implementation than
+     * what is in Java for doing contains, equals, etc.
+     * @param a first set
+     * @param allow filter, using ANY, CONTAINS, etc.
+     * @param b second set
+     * @return whether the filter relationship is true or not.
+     */    
+    public static boolean hasRelation(SortedSet a, int allow, SortedSet b) {
+        if (allow < NONE || allow > ANY) {
+            throw new IllegalArgumentException("Relation " + allow + " out of range");
+        }
+        
+        // extract filter conditions
+        // these are the ALLOWED conditions Set
+        
+        boolean anb = (allow & A_NOT_B) != 0;
+        boolean ab = (allow & A_AND_B) != 0;
+        boolean bna = (allow & B_NOT_A) != 0;
+        
+        // quick check on sizes
+        switch(allow) {
+            case CONTAINS: if (a.size() < b.size()) return false; break;
+            case ISCONTAINED: if (a.size() > b.size()) return false; break;
+            case EQUALS: if (a.size() != b.size()) return false; break;
+        }
+        
+        // check for null sets
+        if (a.size() == 0) {
+            if (b.size() == 0) return true;
+            return bna;
+        } else if (b.size() == 0) {
+            return anb;
+        }
+        
+        // pick up first strings, and start comparing
+        Iterator ait = a.iterator();
+        Iterator bit = b.iterator();
+        
+        Comparable aa = (Comparable) ait.next();
+        Comparable bb = (Comparable) bit.next();
+        
+        while (true) {
+            int comp = aa.compareTo(bb);
+            if (comp == 0) {
+                if (!ab) return false;
+                if (!ait.hasNext()) {
+                    if (!bit.hasNext()) return true;
+                    return bna;
+                } else if (!bit.hasNext()) {
+                    return anb;
+                }
+                aa = (Comparable) ait.next();
+                bb = (Comparable) bit.next();
+            } else if (comp < 0) {
+                if (!anb) return false;
+                if (!ait.hasNext()) {
+                    return bna;
+                }
+                aa = (Comparable) ait.next(); 
+            } else  {
+                if (!bna) return false;
+                if (!bit.hasNext()) {
+                    return anb;
+                }
+                bb = (Comparable) bit.next();
+            }
+        }
+    }
+    
+    /**
+     * Utility that could be on SortedSet. Allows faster implementation than
+     * what is in Java for doing addAll, removeAll, retainAll, (complementAll).
+     * @param a first set
+     * @param relation the relation filter, using ANY, CONTAINS, etc.
+     * @param b second set
+     * @return the new set
+     */    
+    public static SortedSet doOperation(SortedSet a, int relation, SortedSet b) {
+        // TODO: optimize this as above
+        TreeSet temp;
+        switch (relation) {
+            case ADDALL:
+                a.addAll(b); 
+                return a;
+            case A:
+                return a; // no action
+            case B:
+                a.clear(); 
+                a.addAll(b); 
+                return a;
+            case REMOVEALL: 
+                a.removeAll(b);
+                return a;
+            case RETAINALL: 
+                a.retainAll(b);
+                return a;
+            // the following is the only case not really supported by Java
+            // although all could be optimized
+            case COMPLEMENTALL:
+                temp = new TreeSet(b);
+                temp.removeAll(a);
+                a.removeAll(b);
+                a.addAll(temp);
+                return a;
+            case B_REMOVEALL:
+                temp = new TreeSet(b);
+                temp.removeAll(a);
+                a.clear();
+                a.addAll(temp);
+                return a;
+            case NONE:
+                a.clear();
+                return a;
+            default: 
+                throw new IllegalArgumentException("Relation " + relation + " out of range");
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/impl/StringPrepDataReader.java b/src/com/ibm/icu/impl/StringPrepDataReader.java
new file mode 100644
index 0000000..4634278
--- /dev/null
+++ b/src/com/ibm/icu/impl/StringPrepDataReader.java
@@ -0,0 +1,100 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ *
+ * Created on May 2, 2003
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package com.ibm.icu.impl;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+
+
+/**
+ * @author ram
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public final class StringPrepDataReader implements ICUBinary.Authenticate {
+    private final static boolean debug = ICUDebug.enabled("NormalizerDataReader");
+    
+   /**
+    * <p>private constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    public StringPrepDataReader(InputStream inputStream) 
+                                        throws IOException{
+        if(debug) System.out.println("Bytes in inputStream " + inputStream.available());
+        
+        unicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID, this);
+        
+        if(debug) System.out.println("Bytes left in inputStream " +inputStream.available());
+        
+        dataInputStream = new DataInputStream(inputStream);
+        
+        if(debug) System.out.println("Bytes left in dataInputStream " +dataInputStream.available());
+    }
+    
+    public void read(byte[] idnaBytes,
+                        char[] mappingTable) 
+                        throws IOException{
+
+        //Read the bytes that make up the idnaTrie  
+        dataInputStream.readFully(idnaBytes);
+        
+        //Read the extra data
+        for(int i=0;i<mappingTable.length;i++){
+            mappingTable[i]=dataInputStream.readChar();
+        }
+    }
+    
+    public byte[] getDataFormatVersion(){
+        return DATA_FORMAT_VERSION;
+    }
+    
+    public boolean isDataVersionAcceptable(byte version[]){
+        return version[0] == DATA_FORMAT_VERSION[0] 
+               && version[2] == DATA_FORMAT_VERSION[2] 
+               && version[3] == DATA_FORMAT_VERSION[3];
+    }
+    public int[] readIndexes(int length)throws IOException{
+        int[] indexes = new int[length];
+        //Read the indexes
+        for (int i = 0; i <length ; i++) {
+             indexes[i] = dataInputStream.readInt();
+        }
+        return indexes;
+    } 
+    
+    public byte[] getUnicodeVersion(){
+        return unicodeVersion;
+    }
+    // private data members -------------------------------------------------
+      
+
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream dataInputStream;
+    private byte[] unicodeVersion;                             
+    /**
+    * File format version that this class understands.
+    * No guarantees are made if a older version is used
+    * see store.c of gennorm for more information and values
+    */
+    ///* dataFormat="SPRP" 0x53, 0x50, 0x52, 0x50  */ 
+    private static final byte DATA_FORMAT_ID[] = {(byte)0x53, (byte)0x50, 
+                                                    (byte)0x52, (byte)0x50};
+    private static final byte DATA_FORMAT_VERSION[] = {(byte)0x3, (byte)0x2, 
+                                                        (byte)0x5, (byte)0x2};
+    
+}
diff --git a/src/com/ibm/icu/impl/StringUCharacterIterator.java b/src/com/ibm/icu/impl/StringUCharacterIterator.java
new file mode 100644
index 0000000..9fa44a8
--- /dev/null
+++ b/src/com/ibm/icu/impl/StringUCharacterIterator.java
@@ -0,0 +1,226 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.UCharacterIterator;
+
+/**
+ * Used by Collation. UCharacterIterator on Strings. Can't use 
+ * ReplaceableUCharacterIterator because it is not easy to do a fast setText. 
+ * @author synwee
+ */
+// TODO: Investivate if setText is a feature required by users so that we can 
+// move this method to the base class!
+public final class StringUCharacterIterator extends UCharacterIterator 
+{
+
+    // public constructor ------------------------------------------------------
+    
+    /**
+     * Public constructor
+     * @param str text which the iterator will be based on
+     */
+    public StringUCharacterIterator(String str)
+    {
+        if (str == null) {
+            throw new IllegalArgumentException();
+        }
+        m_text_ = str;
+        m_currentIndex_ = 0;
+    }
+    
+    /**
+     * Public default constructor
+     */
+    public StringUCharacterIterator()
+    {
+        m_text_ = "";
+        m_currentIndex_ = 0;
+    }
+    
+    // public methods ----------------------------------------------------------
+    
+    /**
+     * Creates a copy of this iterator, does not clone the underlying 
+     * <code>String</code>object
+     * @return copy of this iterator
+     */
+    ///CLOVER:OFF
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null; // never invoked
+        }
+    }
+    ///CLOVER:ON
+    /**
+     * Returns the current UTF16 character.
+     * @return current UTF16 character
+     */
+    public int current()
+    {
+        if (m_currentIndex_ < m_text_.length()) {
+            return m_text_.charAt(m_currentIndex_);
+        }
+        return DONE;
+    }
+    
+    
+    /**
+     * Returns the length of the text
+     * @return length of the text
+     */
+    public int getLength()
+    {
+        return m_text_.length();
+    }
+    
+    /**
+     * Gets the current currentIndex in text.
+     * @return current currentIndex in text.
+     */
+    public int getIndex()
+    {
+        return m_currentIndex_;
+    }
+        
+    /**
+     * Returns next UTF16 character and increments the iterator's currentIndex 
+     * by 1. 
+     * If the resulting currentIndex is greater or equal to the text length, 
+     * the currentIndex is reset to the text length and a value of DONE is 
+     * returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is 
+     *         off the end of the text range.
+     */
+    public int next()
+    {
+        if (m_currentIndex_ < m_text_.length()) 
+        {
+            return m_text_.charAt(m_currentIndex_ ++);
+        }
+        return DONE;
+    }
+    
+                
+    /**
+     * Returns previous UTF16 character and decrements the iterator's 
+     * currentIndex by 1. 
+     * If the resulting currentIndex is less than 0, the currentIndex is reset 
+     * to 0 and a value of DONE is returned. 
+     * @return next UTF16 character in text or DONE if the new currentIndex is 
+     *         off the start of the text range.
+     */
+    public int previous()
+    {
+        if (m_currentIndex_ > 0) {
+            return m_text_.charAt(-- m_currentIndex_);
+        }
+        return DONE;
+    }
+
+    /**
+     * <p>Sets the currentIndex to the specified currentIndex in the text and 
+     * returns that single UTF16 character at currentIndex. 
+     * This assumes the text is stored as 16-bit code units.</p>
+     * @param currentIndex the currentIndex within the text. 
+     * @exception IndexOutOfBoundsException is thrown if an invalid currentIndex 
+     *            is supplied. i.e. currentIndex is out of bounds.
+     */
+    public void setIndex(int currentIndex) throws IndexOutOfBoundsException
+    {
+        if (currentIndex < 0 || currentIndex > m_text_.length()) {
+            throw new IndexOutOfBoundsException();
+        }
+        m_currentIndex_ = currentIndex;
+    }
+    
+    /**
+     * Fills the buffer with the underlying text storage of the iterator
+     * If the buffer capacity is not enough a exception is thrown. The capacity
+     * of the fill in buffer should at least be equal to length of text in the 
+     * iterator obtained by calling <code>getLength()</code).
+     * <b>Usage:</b>
+     * 
+     * <code>
+     * <pre>
+     *         UChacterIterator iter = new UCharacterIterator.getInstance(text);
+     *         char[] buf = new char[iter.getLength()];
+     *         iter.getText(buf);
+     *         
+     *         OR
+     *         char[] buf= new char[1];
+     *         int len = 0;
+     *         for(;;){
+     *             try{
+     *                 len = iter.getText(buf);
+     *                 break;
+     *             }catch(IndexOutOfBoundsException e){
+     *                 buf = new char[iter.getLength()];
+     *             }
+     *         }
+     * </pre>
+     * </code>
+     *             
+     * @param fillIn an array of chars to fill with the underlying UTF-16 code 
+     *         units.
+     * @param offset the position within the array to start putting the data.
+     * @return the number of code units added to fillIn, as a convenience
+     * @exception IndexOutOfBoundsException exception if there is not enough
+     *            room after offset in the array, or if offset &lt; 0.
+     */
+    ///CLOVER:OFF
+    public int getText(char[] fillIn, int offset)
+    {
+        int length = m_text_.length();
+        if (offset < 0 || offset + length > fillIn.length) {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        }
+        m_text_.getChars(0, length, fillIn, offset);
+        return length;
+    }
+    ///CLOVER:ON
+    /**
+     * Convenience method for returning the underlying text storage as as
+     * string
+     * @return the underlying text storage in the iterator as a string
+     */
+    public String getText() 
+    {
+        return m_text_;
+    }       
+    
+    /**
+     * Reset this iterator to point to a new string. This method is used by 
+     * other classes that want to avoid allocating new 
+     * ReplaceableCharacterIterator objects every time their setText method
+     * is called.
+     * @param text The String to be iterated over 
+     */
+    public void setText(String text) 
+    {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        m_text_ = text;
+        m_currentIndex_ = 0;
+    }
+        
+    // private data members ----------------------------------------------------
+    
+    /**
+     * Text string object
+     */
+    private String m_text_;
+    /**
+     * Current currentIndex
+     */
+    private int m_currentIndex_;
+
+}
diff --git a/src/com/ibm/icu/impl/TextTrieMap.java b/src/com/ibm/icu/impl/TextTrieMap.java
new file mode 100644
index 0000000..1d6ce47
--- /dev/null
+++ b/src/com/ibm/icu/impl/TextTrieMap.java
@@ -0,0 +1,275 @@
+/*
+ * *****************************************************************************
+ * Copyright (C) 2007, International Business Machines Corporation and others.
+ * All Rights Reserved.
+ * *****************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * TextTrieMap is a trie implementation for supporting
+ * fast prefix match for the key.
+ */
+public class TextTrieMap {
+    /**
+     * Constructs a TextTrieMap object.
+     * 
+     * @param ignoreCase true to use case insensitive match
+     */
+    public TextTrieMap(boolean ignoreCase) {
+        this.ignoreCase = ignoreCase;
+    }
+
+    /**
+     * Adds the text key and its associated object in this object.
+     * 
+     * @param text The text.
+     * @param o The object associated with the text.
+     */
+    public synchronized void put(String text, Object o) {
+        CharacterNode node = root;
+        for (int i = 0; i < text.length(); i++) {
+            int ch = UTF16.charAt(text, i);
+            node = node.addChildNode(ch);
+            if (UTF16.getCharCount(ch) == 2) {
+                i++;
+            }
+        }
+        node.addObject(o);
+    }
+
+    /**
+     * Gets an iterator of the objects associated with the
+     * longest prefix matching string key.
+     * 
+     * @param text The text to be matched with prefixes.
+     * @return An iterator of the objects associated with
+     * the longest prefix matching matching key, or null
+     * if no matching entry is found.
+     */
+    public Iterator get(String text) {
+        return get(text, 0);
+    }
+
+    /**
+     * Gets an iterator of the objects associated with the
+     * longest prefix matching string key starting at the 
+     * specified position.
+     * 
+     * @param text The text to be matched with prefixes.
+     * @param start The start index of of the text
+     * @return An iterator of the objects associated with the
+     * longest prefix matching matching key, or null if no 
+     * matching entry is found.
+     */
+    public Iterator get(String text, int start) {
+        LongestMatchHandler handler = new LongestMatchHandler();
+        find(text, start, handler);
+        return handler.getMatches();
+    }
+
+    public void find(String text, ResultHandler handler) {
+        find(text, 0, handler);
+    }
+    
+    public void find(String text, int start, ResultHandler handler) {
+        find(root, text, start, start, handler);
+    }
+
+    /*
+     * Find an iterator of the objects associated with the
+     * longest prefix matching string key under the specified node.
+     * 
+     * @param node The character node in this trie.
+     * @param text The text to be matched with prefixes.
+     * @param start The start index within the text.
+     * @param index The current index within the text.
+     * @param handler The result handler, ResultHandler#handlePrefixMatch
+     * is called when any prefix match is found.
+     */
+    private synchronized void find(CharacterNode node, String text,
+            int start, int index, ResultHandler handler) {
+        Iterator itr = node.iterator();
+        if (itr != null) {
+            if (!handler.handlePrefixMatch(index - start, itr)) {
+                return;
+            }
+        }
+        if (index < text.length()) {
+            List childNodes = node.getChildNodes();
+            if (childNodes == null) {
+                return;
+            }
+            int ch = UTF16.charAt(text, index);
+            int chLen = UTF16.getCharCount(ch);
+            for (int i = 0; i < childNodes.size(); i++) {
+                CharacterNode child = (CharacterNode)childNodes.get(i);
+                if (compare(ch, child.getCharacter())) {
+                    find(child, text, start, index + chLen, handler);
+                    break;
+                }
+            }
+        }
+    }
+    
+    /**
+     * A private method used for comparing two characters.
+     * 
+     * @param ch1 The first character.
+     * @param ch2 The second character.
+     * @return true if the first character matches the second.
+     */
+    private boolean compare(int ch1, int ch2) {
+        if (ch1 == ch2) {
+            return true;
+        }
+        else if (ignoreCase) {
+            if (UCharacter.toLowerCase(ch1) == UCharacter.toLowerCase(ch2)) {
+                return true;
+            }
+            else if (UCharacter.toUpperCase(ch1) == UCharacter.toUpperCase(ch2)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    // The root node of this trie
+    private CharacterNode root = new CharacterNode(0);
+
+    // Character matching option
+    boolean ignoreCase;
+
+    /**
+     * Inner class representing a character node in the trie.
+     */
+    private class CharacterNode {
+        int character;
+        List children;
+        List objlist;
+
+        /**
+         * Constructs a node for the character.
+         * 
+         * @param ch The character associated with this node.
+         */
+        public CharacterNode(int ch) {
+            character = ch;
+        }
+
+        /**
+         * Gets the character associated with this node.
+         * 
+         * @return The character
+         */
+        public int getCharacter() {
+            return character;
+        }
+
+        /**
+         * Adds the object to the node.
+         *  
+         * @param obj The object set in the leaf node.
+         */
+        public void addObject(Object obj) {
+            if (objlist == null) {
+                objlist = new LinkedList();
+            }
+            objlist.add(obj);
+        }
+
+        /**
+         * Gets an iterator of the objects associated with
+         * the leaf node.
+         * 
+         * @return The iterator or null if no objects are
+         * associated with this node.
+         */
+        public Iterator iterator() {
+            if (objlist == null) {
+                return null;
+            }
+            return objlist.iterator();
+        }
+
+        /**
+         * Adds a child node for the character under this character
+         * node in the trie.  When the matching child node already
+         * exists, the reference of the existing child node is
+         * returned.
+         * 
+         * @param ch The character associated with a child node.
+         * @return The child node.
+         */
+        public CharacterNode addChildNode(int ch) {
+            if (children == null) {
+                children = new ArrayList();
+                CharacterNode newNode = new CharacterNode(ch);
+                children.add(newNode);
+                return newNode;
+            }
+            CharacterNode node = null;
+            for (int i = 0; i < children.size(); i++) {
+                CharacterNode cur = (CharacterNode)children.get(i);
+                if (compare(ch, cur.getCharacter())) {
+                    node = cur;
+                    break;
+                }               
+            }
+            if (node == null) {
+                node = new CharacterNode(ch);
+                children.add(node);
+            }
+            return node;
+        }
+
+        /**
+         * Gets the list of child nodes under this node.
+         * 
+         * @return The list of child nodes.
+         */
+        public List getChildNodes() {
+            return children;
+        }
+    }
+
+    /**
+     * Callback handler for processing prefix matches used by
+     * find method.
+     */
+    public interface ResultHandler {
+        /**
+         * Handles a prefix key match
+         * 
+         * @param matchLength Matched key's length
+         * @param values An iterator of the objects associated with the matched key
+         * @return Return true to continue the search in the trie, false to quit.
+         */
+        public boolean handlePrefixMatch(int matchLength, Iterator values);
+    }
+
+    private static class LongestMatchHandler implements ResultHandler {
+        private Iterator matches = null;
+        private int length = 0;
+
+        public boolean handlePrefixMatch(int matchLength, Iterator values) {
+            if (matchLength > length) {
+                length = matchLength;
+                matches = values;
+            }
+            return true;
+        }
+
+        public Iterator getMatches() {
+            return matches;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/TimeZoneAdapter.java b/src/com/ibm/icu/impl/TimeZoneAdapter.java
new file mode 100644
index 0000000..bfe9812
--- /dev/null
+++ b/src/com/ibm/icu/impl/TimeZoneAdapter.java
@@ -0,0 +1,146 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2003-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Alan Liu
+ * Created: October 2 2003
+ * Since: ICU 2.8
+ **********************************************************************
+ */
+
+package com.ibm.icu.impl;
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+
+/**
+ * <code>TimeZoneAdapter</code> wraps a com.ibm.icu.util.TimeZone
+ * subclass and inherits from java.util.TimeZone.
+ * Without this class, we would need to 'port' java.util.Date to
+ * com.ibm.icu.util as well, so that Date could interoperate properly
+ * with the com.ibm.icu.util TimeZone and Calendar classes.  With this
+ * class, we can use java.util.Date together with com.ibm.icu.util
+ * classes.
+ *
+ * @see com.ibm.icu.util.TimeZone#setDefault
+ * @author Alan Liu
+ * @since ICU 2.8
+ */
+public class TimeZoneAdapter extends java.util.TimeZone {
+ 
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -2040072218820018557L;
+    
+    /**
+     * The contained com.ibm.icu.util.TimeZone object.  Must not be null.
+     * We delegate all methods to this object.
+     */
+    private TimeZone zone;
+    
+    /**
+     * Given a java.util.TimeZone, wrap it in the appropriate adapter
+     * subclass of com.ibm.icu.util.TimeZone and return the adapter.
+     */
+    public static java.util.TimeZone wrap(com.ibm.icu.util.TimeZone tz) {
+        return new TimeZoneAdapter(tz);
+    }
+
+    /**
+     * Return the java.util.TimeZone wrapped by this object.
+     */
+    public com.ibm.icu.util.TimeZone unwrap() {
+        return zone;
+    }
+
+    /**
+     * Constructs an adapter for a com.ibm.icu.util.TimeZone object.
+     */
+    public TimeZoneAdapter(TimeZone zone) {
+        this.zone = zone;
+        super.setID(zone.getID());
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public void setID(String ID) {
+        super.setID(ID);
+        zone.setID(ID);
+    }    
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public boolean hasSameRules(java.util.TimeZone other) {
+        return other instanceof TimeZoneAdapter &&
+            zone.hasSameRules(((TimeZoneAdapter)other).zone);
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek,
+                         int millis) {
+        return zone.getOffset(era, year, month, day, dayOfWeek, millis);
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public int getRawOffset() {
+        return zone.getRawOffset();
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public void setRawOffset(int offsetMillis) {
+        zone.setRawOffset(offsetMillis);
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public boolean useDaylightTime() {
+        return zone.useDaylightTime();
+    }
+
+    /**
+     * TimeZone API; calls through to wrapped time zone.
+     */
+    public boolean inDaylightTime(Date date) {
+        return zone.inDaylightTime(date);
+    }
+
+    /**
+     * Boilerplate API; calls through to wrapped object.
+     */
+    public Object clone() {
+        return new TimeZoneAdapter((TimeZone)zone.clone());
+    }
+
+    /**
+     * Boilerplate API; calls through to wrapped object.
+     */
+    public synchronized int hashCode() {
+        return zone.hashCode();
+    }
+
+    /**
+     * Boilerplate API; calls through to wrapped object.
+     */
+    public boolean equals(Object obj) {
+        if (obj instanceof TimeZoneAdapter) {
+            obj = ((TimeZoneAdapter) obj).zone;
+        }
+        return zone.equals(obj);
+    }
+
+    /**
+     * Returns a string representation of this object.
+     * @return  a string representation of this object.
+     */
+    public String toString() {
+        return "TimeZoneAdapter: " + zone.toString();
+    }
+}
diff --git a/src/com/ibm/icu/impl/Trie.java b/src/com/ibm/icu/impl/Trie.java
new file mode 100644
index 0000000..252d26c
--- /dev/null
+++ b/src/com/ibm/icu/impl/Trie.java
@@ -0,0 +1,459 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * <p>A trie is a kind of compressed, serializable table of values 
+ * associated with Unicode code points (0..0x10ffff).</p>
+ * <p>This class defines the basic structure of a trie and provides methods 
+ * to <b>retrieve the offsets to the actual data</b>.</p>
+ * <p>Data will be the form of an array of basic types, char or int.</p>
+ * <p>The actual data format will have to be specified by the user in the
+ * inner static interface com.ibm.icu.impl.Trie.DataManipulate.</p>
+ * <p>This trie implementation is optimized for getting offset while walking
+ * forward through a UTF-16 string.
+ * Therefore, the simplest and fastest access macros are the
+ * fromLead() and fromOffsetTrail() methods.
+ * The fromBMP() method are a little more complicated; they get offsets even
+ * for lead surrogate codepoints, while the fromLead() method get special
+ * "folded" offsets for lead surrogate code units if there is relevant data
+ * associated with them.
+ * From such a folded offsets, an offset needs to be extracted to supply
+ * to the fromOffsetTrail() methods.
+ * To handle such supplementary codepoints, some offset information are kept
+ * in the data.</p>
+ * <p>Methods in com.ibm.icu.impl.Trie.DataManipulate are called to retrieve 
+ * that offset from the folded value for the lead surrogate unit.</p>
+ * <p>For examples of use, see com.ibm.icu.impl.CharTrie or 
+ * com.ibm.icu.impl.IntTrie.</p>
+ * @author synwee
+ * @see com.ibm.icu.impl.CharTrie
+ * @see com.ibm.icu.impl.IntTrie
+ * @since release 2.1, Jan 01 2002
+ */
+public abstract class Trie
+{
+    // public class declaration ----------------------------------------
+    
+    /**
+    * Character data in com.ibm.impl.Trie have different user-specified format
+    * for different purposes.
+    * This interface specifies methods to be implemented in order for
+    * com.ibm.impl.Trie, to surrogate offset information encapsulated within 
+    * the data.
+    */
+    public static interface DataManipulate
+    {
+        /**
+        * Called by com.ibm.icu.impl.Trie to extract from a lead surrogate's 
+        * data
+        * the index array offset of the indexes for that lead surrogate.
+        * @param value data value for a surrogate from the trie, including the
+        *        folding offset
+        * @return data offset or 0 if there is no data for the lead surrogate
+        */
+        public int getFoldingOffset(int value); 
+    }
+
+    // default implementation
+    private static class DefaultGetFoldingOffset implements DataManipulate {
+        public int getFoldingOffset(int value) {
+            return value; 
+        }
+    }
+
+    // public methods --------------------------------------------------
+    
+    /**
+     * Determines if this trie has a linear latin 1 array
+     * @return true if this trie has a linear latin 1 array, false otherwise
+     */
+    public final boolean isLatin1Linear()
+    {
+        return m_isLatin1Linear_;
+    }
+    
+    /**
+     * Checks if the argument Trie has the same data as this Trie.
+     * Attributes are checked but not the index data.
+     * @param other Trie to check
+     * @return true if the argument Trie has the same data as this Trie, false
+     *         otherwise
+     */
+    ///CLOVER:OFF
+    public boolean equals(Object other) 
+    {
+        if (other == this) {
+            return true;
+        }
+        if (!(other instanceof Trie)) {
+            return false;
+        }
+        Trie othertrie = (Trie)other;
+        return m_isLatin1Linear_ == othertrie.m_isLatin1Linear_
+               && m_options_ == othertrie.m_options_
+               && m_dataLength_ == othertrie.m_dataLength_
+               && Arrays.equals(m_index_, othertrie.m_index_);
+    }
+    ///CLOVER:ON
+    
+    /**
+     * Gets the serialized data file size of the Trie. This is used during 
+     * trie data reading for size checking purposes. 
+     * @return size size of serialized trie data file in terms of the number
+     *              of bytes
+     */
+    public int getSerializedDataSize()
+    {
+        // includes signature, option, dataoffset and datalength output
+        int result = (4 << 2);
+        result += (m_dataOffset_ << 1);
+        if (isCharTrie()) {
+            result += (m_dataLength_ << 1);
+        }
+        else if (isIntTrie()) {
+            result += (m_dataLength_ << 2);
+        }
+        return result;
+    }
+
+    // protected constructor -------------------------------------------
+
+    /**
+    * Trie constructor for CharTrie use.
+    * @param inputStream ICU data file input stream which contains the
+    *                        trie
+    * @param dataManipulate object containing the information to parse the 
+    *                       trie data
+    * @throws IOException thrown when input stream does not have the
+    *                        right header.
+    */
+    protected Trie(InputStream inputStream, 
+                   DataManipulate  dataManipulate) throws IOException
+    {
+        DataInputStream input = new DataInputStream(inputStream);
+        // Magic number to authenticate the data.
+        int signature = input.readInt();
+        m_options_    = input.readInt();
+        
+        if (!checkHeader(signature)) {
+            throw new IllegalArgumentException("ICU data file error: Trie header authentication failed, please check if you have the most updated ICU data file");
+        }
+
+        if(dataManipulate != null) {
+            m_dataManipulate_ = dataManipulate;
+        } else {
+            m_dataManipulate_ = new DefaultGetFoldingOffset();
+        }
+        m_isLatin1Linear_ = (m_options_ &
+                             HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_) != 0;
+        m_dataOffset_     = input.readInt();
+        m_dataLength_     = input.readInt();
+        unserialize(inputStream);
+    }
+    
+    /**
+    * Trie constructor
+    * @param index array to be used for index
+    * @param options used by the trie
+    * @param dataManipulate object containing the information to parse the 
+    *                       trie data
+    */
+    protected Trie(char index[], int options, DataManipulate dataManipulate)
+    {
+        m_options_ = options;
+        if(dataManipulate != null) {
+            m_dataManipulate_ = dataManipulate;
+        } else {
+            m_dataManipulate_ = new DefaultGetFoldingOffset();
+        }
+        m_isLatin1Linear_ = (m_options_ &
+                             HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_) != 0;
+        m_index_ = index;
+        m_dataOffset_ = m_index_.length;
+    }
+
+
+    // protected data members ------------------------------------------
+
+    /**
+    * Lead surrogate code points' index displacement in the index array.
+    * 0x10000-0xd800=0x2800
+    * 0x2800 >> INDEX_STAGE_1_SHIFT_
+    */
+    protected static final int LEAD_INDEX_OFFSET_ = 0x2800 >> 5;
+    /**
+    * Shift size for shifting right the input index. 1..9
+    */
+    protected static final int INDEX_STAGE_1_SHIFT_ = 5;
+    /**
+    * Shift size for shifting left the index array values.
+    * Increases possible data size with 16-bit index values at the cost
+    * of compactability.
+    * This requires blocks of stage 2 data to be aligned by
+    * DATA_GRANULARITY.
+    * 0..INDEX_STAGE_1_SHIFT
+    */
+    protected static final int INDEX_STAGE_2_SHIFT_ = 2;
+    /**
+     * Number of data values in a stage 2 (data array) block.
+     */
+    protected static final int DATA_BLOCK_LENGTH=1<<INDEX_STAGE_1_SHIFT_;
+    /**
+    * Mask for getting the lower bits from the input index.
+    * DATA_BLOCK_LENGTH - 1.
+    */
+    protected static final int INDEX_STAGE_3_MASK_ = DATA_BLOCK_LENGTH - 1;
+    /** Number of bits of a trail surrogate that are used in index table lookups. */
+    protected static final int SURROGATE_BLOCK_BITS=10-INDEX_STAGE_1_SHIFT_;
+    /**
+     * Number of index (stage 1) entries per lead surrogate.
+     * Same as number of index entries for 1024 trail surrogates,
+     * ==0x400>>INDEX_STAGE_1_SHIFT_
+     */
+    protected static final int SURROGATE_BLOCK_COUNT=(1<<SURROGATE_BLOCK_BITS);
+    /** Length of the BMP portion of the index (stage 1) array. */
+    protected static final int BMP_INDEX_LENGTH=0x10000>>INDEX_STAGE_1_SHIFT_;
+    /**
+    * Surrogate mask to use when shifting offset to retrieve supplementary
+    * values
+    */
+    protected static final int SURROGATE_MASK_ = 0x3FF;                                              
+    /**
+    * Index or UTF16 characters
+    */
+    protected char m_index_[];
+    /**
+    * Internal TrieValue which handles the parsing of the data value.
+    * This class is to be implemented by the user
+    */
+    protected DataManipulate m_dataManipulate_;
+    /**
+    * Start index of the data portion of the trie. CharTrie combines 
+    * index and data into a char array, so this is used to indicate the 
+    * initial offset to the data portion.
+    * Note this index always points to the initial value.
+    */
+    protected int m_dataOffset_;
+    /**
+    * Length of the data array 
+    */
+    protected int m_dataLength_;
+     
+    // protected methods -----------------------------------------------
+
+    /**
+    * Gets the offset to the data which the surrogate pair points to.
+    * @param lead lead surrogate
+    * @param trail trailing surrogate
+    * @return offset to data
+    */
+    protected abstract int getSurrogateOffset(char lead, char trail);
+    
+    /**
+    * Gets the value at the argument index
+    * @param index value at index will be retrieved
+    * @return 32 bit value 
+    */
+    protected abstract int getValue(int index);
+
+    /**
+    * Gets the default initial value
+    * @return 32 bit value 
+    */
+    protected abstract int getInitialValue();
+    
+    /**
+    * Gets the offset to the data which the index ch after variable offset
+    * points to.
+    * Note for locating a non-supplementary character data offset, calling
+    * <p>
+    * getRawOffset(0, ch);
+    * </p>
+    * will do. Otherwise if it is a supplementary character formed by
+    * surrogates lead and trail. Then we would have to call getRawOffset()
+    * with getFoldingIndexOffset(). See getSurrogateOffset().
+    * @param offset index offset which ch is to start from
+    * @param ch index to be used after offset
+    * @return offset to the data
+    */
+    protected final int getRawOffset(int offset, char ch)
+    {
+        return (m_index_[offset + (ch >> INDEX_STAGE_1_SHIFT_)] 
+                << INDEX_STAGE_2_SHIFT_) 
+                + (ch & INDEX_STAGE_3_MASK_);
+    }
+    
+    /**
+    * Gets the offset to data which the BMP character points to
+    * Treats a lead surrogate as a normal code point.
+    * @param ch BMP character
+    * @return offset to data
+    */
+    protected final int getBMPOffset(char ch)
+    {
+        return (ch >= UTF16.LEAD_SURROGATE_MIN_VALUE 
+                && ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) 
+                ? getRawOffset(LEAD_INDEX_OFFSET_, ch)
+                : getRawOffset(0, ch); 
+                // using a getRawOffset(ch) makes no diff
+    }
+
+    /**
+    * Gets the offset to the data which this lead surrogate character points
+    * to.
+    * Data at the returned offset may contain folding offset information for
+    * the next trailing surrogate character.
+    * @param ch lead surrogate character
+    * @return offset to data
+    */
+    protected final int getLeadOffset(char ch)
+    {
+       return getRawOffset(0, ch);
+    }
+
+    /**
+    * Internal trie getter from a code point.
+    * Could be faster(?) but longer with
+    *   if((c32)<=0xd7ff) { (result)=_TRIE_GET_RAW(trie, data, 0, c32); }
+    * Gets the offset to data which the codepoint points to
+    * @param ch codepoint
+    * @return offset to data
+    */
+    protected final int getCodePointOffset(int ch)
+    {
+        // if ((ch >> 16) == 0) slower
+        if (ch < 0) {
+            return -1;
+        } else if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            // fastpath for the part of the BMP below surrogates (D800) where getRawOffset() works
+            return getRawOffset(0, (char)ch);
+        } else if (ch < UTF16.SUPPLEMENTARY_MIN_VALUE) {
+            // BMP codepoint
+            return getBMPOffset((char)ch); 
+        } else if (ch <= UCharacter.MAX_VALUE) {
+            // look at the construction of supplementary characters
+            // trail forms the ends of it.
+            return getSurrogateOffset(UTF16.getLeadSurrogate(ch), 
+                                      (char)(ch & SURROGATE_MASK_));
+        } else {
+            // return -1 if there is an error, in this case we return 
+            return -1;
+        }
+    }
+
+    /**
+    * <p>Parses the inputstream and creates the trie index with it.</p>
+    * <p>This is overwritten by the child classes.
+    * @param inputStream input stream containing the trie information
+    * @exception IOException thrown when data reading fails.
+    */
+    protected void unserialize(InputStream inputStream) throws IOException
+    {
+        //indexLength is a multiple of 1024 >> INDEX_STAGE_2_SHIFT_
+        m_index_              = new char[m_dataOffset_];
+        DataInputStream input = new DataInputStream(inputStream);
+        for (int i = 0; i < m_dataOffset_; i ++) {
+             m_index_[i] = input.readChar();
+        }
+    }
+
+    /**
+    * Determines if this is a 32 bit trie
+    * @return true if options specifies this is a 32 bit trie
+    */
+    protected final boolean isIntTrie()
+    {
+        return (m_options_ & HEADER_OPTIONS_DATA_IS_32_BIT_) != 0;
+    }
+
+    /**
+    * Determines if this is a 16 bit trie
+    * @return true if this is a 16 bit trie
+    */
+    protected final boolean isCharTrie()
+    {
+        return (m_options_ & HEADER_OPTIONS_DATA_IS_32_BIT_) == 0;
+    }
+
+    // private data members --------------------------------------------
+
+    //  struct UTrieHeader {
+    //      int32_t   signature;
+    //      int32_t   options  (a bit field)
+    //      int32_t   indexLength
+    //      int32_t   dataLength
+
+    /**
+    * Size of Trie header in bytes
+    */
+    protected static final int HEADER_LENGTH_ = 4 * 4;
+    /**
+    * Latin 1 option mask
+    */
+    protected static final int HEADER_OPTIONS_LATIN1_IS_LINEAR_MASK_ = 0x200;
+    /**
+    * Constant number to authenticate the byte block
+    */
+    protected static final int HEADER_SIGNATURE_ = 0x54726965;
+    /**
+    * Header option formatting
+    */
+    private static final int HEADER_OPTIONS_SHIFT_MASK_ = 0xF;
+    protected static final int HEADER_OPTIONS_INDEX_SHIFT_ = 4;
+    protected static final int HEADER_OPTIONS_DATA_IS_32_BIT_ = 0x100;
+    
+    /**
+    * Flag indicator for Latin quick access data block
+    */
+    private boolean m_isLatin1Linear_;
+    
+    /**
+    * <p>Trie options field.</p>
+    * <p>options bit field:<br>
+    * 9  1 = Latin-1 data is stored linearly at data + DATA_BLOCK_LENGTH<br>
+    * 8  0 = 16-bit data, 1=32-bit data<br>
+    * 7..4  INDEX_STAGE_1_SHIFT   // 0..INDEX_STAGE_2_SHIFT<br>
+    * 3..0  INDEX_STAGE_2_SHIFT   // 1..9<br>
+    */
+    private int m_options_;
+    
+    // private methods ---------------------------------------------------
+    
+    /**
+    * Authenticates raw data header.
+    * Checking the header information, signature and options.
+    * @param signature This contains the options and type of a Trie
+    * @return true if the header is authenticated valid
+    */
+    private final boolean checkHeader(int signature)
+    {
+        // check the signature
+        // Trie in big-endian US-ASCII (0x54726965).
+        // Magic number to authenticate the data.
+        if (signature != HEADER_SIGNATURE_) {
+            return false;
+        }
+
+        if ((m_options_ & HEADER_OPTIONS_SHIFT_MASK_) != 
+                                                    INDEX_STAGE_1_SHIFT_ ||
+            ((m_options_ >> HEADER_OPTIONS_INDEX_SHIFT_) &
+                                                HEADER_OPTIONS_SHIFT_MASK_)
+                                                 != INDEX_STAGE_2_SHIFT_) {
+            return false;
+        }
+        return true;
+    }
+}
diff --git a/src/com/ibm/icu/impl/TrieBuilder.java b/src/com/ibm/icu/impl/TrieBuilder.java
new file mode 100644
index 0000000..311f71a
--- /dev/null
+++ b/src/com/ibm/icu/impl/TrieBuilder.java
@@ -0,0 +1,260 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import java.util.Arrays;
+
+/**
+ * Builder class to manipulate and generate a trie.
+ * This is useful for ICU data in primitive types.
+ * Provides a compact way to store information that is indexed by Unicode 
+ * values, such as character properties, types, keyboard values, etc. This is 
+ * very useful when you have a block of Unicode data that contains significant 
+ * values while the rest of the Unicode data is unused in the application or 
+ * when you have a lot of redundance, such as where all 21,000 Han ideographs 
+ * have the same value.  However, lookup is much faster than a hash table.
+ * A trie of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * This is a direct port from the ICU4C version
+ * @author             Syn Wee Quek
+ */
+public class TrieBuilder
+{
+    // public data member ----------------------------------------------
+        
+    /** 
+     * Number of data values in a stage 2 (data array) block. 2, 4, 8, .., 
+     * 0x200 
+     */
+    public static final int DATA_BLOCK_LENGTH = 1 << Trie.INDEX_STAGE_1_SHIFT_;
+    
+    // public class declaration ----------------------------------------
+    
+    /**
+     * Character data in com.ibm.impl.Trie have different user-specified format
+     * for different purposes.
+     * This interface specifies methods to be implemented in order for
+     * com.ibm.impl.Trie, to surrogate offset information encapsulated within 
+     * the data.
+     */
+    public static interface DataManipulate
+    {
+        /**
+         * Build-time trie callback function, used with serialize().
+         * This function calculates a lead surrogate's value including a 
+         * folding offset from the 1024 supplementary code points 
+         * [start..start+1024[ . 
+         * It is U+10000 <= start <= U+10fc00 and (start&0x3ff)==0.
+         * The folding offset is provided by the caller. 
+         * It is offset=UTRIE_BMP_INDEX_LENGTH+n*UTRIE_SURROGATE_BLOCK_COUNT 
+         * with n=0..1023. 
+         * Instead of the offset itself, n can be stored in 10 bits - or fewer 
+         * if it can be assumed that few lead surrogates have associated data.
+         * The returned value must be
+         *  - not zero if and only if there is relevant data for the 
+         *                        corresponding 1024 supplementary code points
+         *  - such that UTrie.getFoldingOffset(UNewTrieGetFoldedValue(..., 
+         *                                                    offset))==offset
+         * @return a folded value, or 0 if there is no relevant data for the 
+         *         lead surrogate.
+         */
+        public int getFoldedValue(int start, int offset); 
+    }
+    
+    // public methods ----------------------------------------------------
+  
+    /**
+     * Checks if the character belongs to a zero block in the trie
+     * @param ch codepoint which data is to be retrieved
+     * @return true if ch is in the zero block
+     */
+    public boolean isInZeroBlock(int ch) 
+    {
+        // valid, uncompacted trie and valid c?
+        if (m_isCompacted_ || ch > UCharacter.MAX_VALUE 
+            || ch < UCharacter.MIN_VALUE) {
+            return true;
+        }
+    
+        return m_index_[ch >> SHIFT_] == 0;
+    }
+    
+    // package private method -----------------------------------------------
+    
+    // protected data member -----------------------------------------------
+          
+    /**
+     * Index values at build-time are 32 bits wide for easier processing.
+     * Bit 31 is set if the data block is used by multiple index values 
+     * (from setRange()).
+     */
+    protected int m_index_[];
+    protected int m_indexLength_;
+    protected int m_dataCapacity_; 
+    protected int m_dataLength_;
+    protected boolean m_isLatin1Linear_;
+    protected boolean m_isCompacted_;
+    /**
+     * Map of adjusted indexes, used in utrie_compact().
+     * Maps from original indexes to new ones.
+     */
+    protected int m_map_[];
+        
+    /**
+     * Shift size for shifting right the input index. 1..9 
+     */
+    protected static final int SHIFT_ = Trie.INDEX_STAGE_1_SHIFT_;
+    /**
+     * Length of the index (stage 1) array before folding.
+     * Maximum number of Unicode code points (0x110000) shifted right by 
+     * SHIFT.
+     */
+    protected static final int MAX_INDEX_LENGTH_ = (0x110000 >> SHIFT_);
+    /** 
+     * Length of the BMP portion of the index (stage 1) array. 
+     */
+    protected static final int BMP_INDEX_LENGTH_ = 0x10000 >> SHIFT_;   
+    /**
+     * Number of index (stage 1) entries per lead surrogate.
+     * Same as number of indexe entries for 1024 trail surrogates,
+     * ==0x400>>UTRIE_SHIFT
+     * 10 - SHIFT == Number of bits of a trail surrogate that are used in 
+     *               index table lookups. 
+     */
+    protected static final int SURROGATE_BLOCK_COUNT_ = 1 << (10 - SHIFT_);
+    /**
+     * Mask for getting the lower bits from the input index.
+     * DATA_BLOCK_LENGTH - 1.
+     */
+    protected static final int MASK_ = Trie.INDEX_STAGE_3_MASK_;
+    /**
+     * Shift size for shifting left the index array values.
+     * Increases possible data size with 16-bit index values at the cost
+     * of compactability.
+     * This requires blocks of stage 2 data to be aligned by UTRIE_DATA_GRANULARITY.
+     * 0..UTRIE_SHIFT
+     */
+    protected static final int INDEX_SHIFT_ = Trie.INDEX_STAGE_2_SHIFT_;
+    /**
+     * Maximum length of the runtime data (stage 2) array.
+     * Limited by 16-bit index values that are left-shifted by INDEX_SHIFT_.
+     */
+    protected static final int MAX_DATA_LENGTH_ = (0x10000 << INDEX_SHIFT_);
+    /**
+     * Shifting to position the index value in options
+     */
+    protected static final int OPTIONS_INDEX_SHIFT_ = 4;
+    /** 
+     * If set, then the data (stage 2) array is 32 bits wide. 
+     */
+    protected static final int OPTIONS_DATA_IS_32_BIT_ = 0x100;
+    /**
+     * If set, then Latin-1 data (for U+0000..U+00ff) is stored in the data 
+     * (stage 2) array as a simple, linear array at data + DATA_BLOCK_LENGTH.
+     */
+    protected static final int OPTIONS_LATIN1_IS_LINEAR_ = 0x200;
+    /** 
+     * The alignment size of a stage 2 data block. Also the granularity for 
+     * compaction. 
+     */
+    protected static final int DATA_GRANULARITY_ = 1 << INDEX_SHIFT_;
+    
+    // protected constructor ----------------------------------------------
+    
+    protected TrieBuilder()
+    {
+        m_index_ = new int[MAX_INDEX_LENGTH_];
+        m_map_ = new int[MAX_BUILD_TIME_DATA_LENGTH_ >> SHIFT_];
+        m_isLatin1Linear_ = false;
+        m_isCompacted_ = false;
+        m_indexLength_ = MAX_INDEX_LENGTH_;
+    }
+        
+    protected TrieBuilder(TrieBuilder table)
+    {
+        m_index_ = new int[MAX_INDEX_LENGTH_];
+        m_indexLength_ = table.m_indexLength_;
+        System.arraycopy(table.m_index_, 0, m_index_, 0, m_indexLength_);
+        m_dataCapacity_ = table.m_dataCapacity_;
+        m_dataLength_ = table.m_dataLength_;
+        m_map_ = new int[table.m_map_.length];
+        System.arraycopy(table.m_map_, 0, m_map_, 0, m_map_.length);
+        m_isLatin1Linear_ = table.m_isLatin1Linear_;
+        m_isCompacted_ = table.m_isCompacted_;
+    }
+        
+    // protected functions ------------------------------------------------
+
+    /**
+     * Compare two sections of an array for equality.
+     */
+    protected static final boolean equal_int(int[] array, int start1, int start2, int length) {
+        while(length>0 && array[start1]==array[start2]) {
+            ++start1;
+            ++start2;
+            --length;
+        }
+        return length==0;
+    }
+
+    /**
+     * Set a value in the trie index map to indicate which data block
+     * is referenced and which one is not.
+     * utrie_compact() will remove data blocks that are not used at all.
+     * Set
+     * - 0 if it is used
+     * - -1 if it is not used
+     */
+    protected void findUnusedBlocks() 
+    {
+        // fill the entire map with "not used" 
+        Arrays.fill(m_map_, 0xff);
+    
+        // mark each block that _is_ used with 0
+        for (int i = 0; i < m_indexLength_; ++ i) {
+            m_map_[Math.abs(m_index_[i]) >> SHIFT_] = 0;
+        }
+    
+        // never move the all-initial-value block 0
+        m_map_[0] = 0;
+    }
+    
+    /**
+     * Finds the same index block as the otherBlock
+     * @param index array
+     * @param indexLength size of index
+     * @param otherBlock
+     * @return same index block
+     */
+    protected static final int findSameIndexBlock(int index[], int indexLength,
+                                                  int otherBlock) 
+    {
+        for (int block = BMP_INDEX_LENGTH_; block < indexLength; 
+             block += SURROGATE_BLOCK_COUNT_) {
+            if(equal_int(index, block, otherBlock, SURROGATE_BLOCK_COUNT_)) {
+                return block;
+            }
+        }
+        return indexLength;
+    }
+    
+    // private data member ------------------------------------------------
+        
+    /**
+     * Maximum length of the build-time data (stage 2) array.
+     * The maximum length is 0x110000 + DATA_BLOCK_LENGTH + 0x400.
+     * (Number of Unicode code points + one all-initial-value block +
+     *  possible duplicate entries for 1024 lead surrogates.)
+     */
+    private static final int MAX_BUILD_TIME_DATA_LENGTH_ = 
+        0x110000 + DATA_BLOCK_LENGTH + 0x400;
+}
diff --git a/src/com/ibm/icu/impl/TrieIterator.java b/src/com/ibm/icu/impl/TrieIterator.java
new file mode 100644
index 0000000..d8fd18f
--- /dev/null
+++ b/src/com/ibm/icu/impl/TrieIterator.java
@@ -0,0 +1,531 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.RangeValueIterator;
+
+/**
+ * <p>Class enabling iteration of the values in a Trie.</p>
+ * <p>Result of each iteration contains the interval of codepoints that have
+ * the same value type and the value type itself.</p>
+ * <p>The comparison of each codepoint value is done via extract(), which the
+ * default implementation is to return the value as it is.</p> 
+ * <p>Method extract() can be overwritten to perform manipulations on 
+ * codepoint values in order to perform specialized comparison.</p>
+ * <p>TrieIterator is designed to be a generic iterator for the CharTrie
+ * and the IntTrie, hence to accommodate both types of data, the return 
+ * result will be in terms of int (32 bit) values.</p>
+ * <p>See com.ibm.icu.text.UCharacterTypeIterator for examples of use.</p>
+ * <p>Notes for porting utrie_enum from icu4c to icu4j:<br>
+ * Internally, icu4c's utrie_enum performs all iterations in its body. In Java
+ * sense, the caller will have to pass a object with a callback function 
+ * UTrieEnumRange(const void *context, UChar32 start, UChar32 limit, 
+ * uint32_t value) into utrie_enum. utrie_enum will then find ranges of 
+ * codepoints with the same value as determined by 
+ * UTrieEnumValue(const void *context, uint32_t value). for each range, 
+ * utrie_enum calls the callback function to perform a task. In this way,
+ * icu4c performs the iteration within utrie_enum.
+ * To follow the JDK model, icu4j is slightly different from icu4c.
+ * Instead of requesting the caller to implement an object for a callback.
+ * The caller will have to implement a subclass of TrieIterator, fleshing out
+ * the method extract(int) (equivalent to UTrieEnumValue). Independent of icu4j, 
+ * the caller will have to code his own iteration and flesh out the task 
+ * (equivalent to UTrieEnumRange) to be performed in the iteration loop.
+ * </p>
+ * <p>There are basically 3 usage scenarios for porting:</p>
+ * <p>1) UTrieEnumValue is the only implemented callback then just implement a 
+ * subclass of TrieIterator and override the extract(int) method. The 
+ * extract(int) method is analogus to UTrieEnumValue callback.
+ * </p>
+ * <p>2) UTrieEnumValue and UTrieEnumRange both are implemented then implement 
+ * a subclass of TrieIterator, override the extract method and iterate, e.g
+ * </p>
+ * <p>utrie_enum(&normTrie, _enumPropertyStartsValue, _enumPropertyStartsRange, 
+ *               set);<br>
+ * In Java :<br>
+ * <pre>
+ * class TrieIteratorImpl extends TrieIterator{
+ *     public TrieIteratorImpl(Trie data){
+ *         super(data);
+ *     }
+ *     public int extract(int value){
+ *         // port the implementation of _enumPropertyStartsValue here
+ *     }
+ * }
+ * .... 
+ * TrieIterator fcdIter  = new TrieIteratorImpl(fcdTrieImpl.fcdTrie);
+ * while(fcdIter.next(result)) {
+ *     // port the implementation of _enumPropertyStartsRange
+ * }
+ * </pre>
+ * </p>
+ * <p>3) UTrieEnumRange is the only implemented callback then just implement 
+ * the while loop, when utrie_enum is called
+ * <pre>
+ * // utrie_enum(&fcdTrie, NULL, _enumPropertyStartsRange, set);
+ * TrieIterator fcdIter  = new TrieIterator(fcdTrieImpl.fcdTrie);
+ * while(fcdIter.next(result)){
+ *     set.add(result.start);
+ * }
+ * </p>
+ * @author synwee
+ * @see com.ibm.icu.impl.Trie
+ * @see com.ibm.icu.lang.UCharacterTypeIterator
+ * @since release 2.1, Jan 17 2002
+ */
+public class TrieIterator implements RangeValueIterator
+
+{
+    // public constructor ---------------------------------------------
+    
+    /**
+    * TrieEnumeration constructor
+    * @param trie to be used
+    * @exception IllegalArgumentException throw when argument is null.
+    */
+    public TrieIterator(Trie trie)
+    {
+        if (trie == null) {
+            throw new IllegalArgumentException(
+                                          "Argument trie cannot be null");
+        }
+        m_trie_             = trie;
+        // synwee: check that extract belongs to the child class
+        m_initialValue_     = extract(m_trie_.getInitialValue());
+        reset();
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Returns true if we are not at the end of the iteration, false 
+    * otherwise.</p>
+    * <p>The next set of codepoints with the same value type will be 
+    * calculated during this call and returned in the arguement element.</p>
+    * @param element return result 
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @exception NoSuchElementException - if no more elements exist.
+    * @see com.ibm.icu.util.RangeValueIterator.Element
+    */
+    public final boolean next(Element element)
+    {
+        if (m_nextCodepoint_ > UCharacter.MAX_VALUE) {
+            return false;
+        }
+        if (m_nextCodepoint_ < UCharacter.SUPPLEMENTARY_MIN_VALUE &&
+            calculateNextBMPElement(element)) {
+            return true;
+        }    
+        calculateNextSupplementaryElement(element);
+        return true;
+    }
+     
+    /**
+    * Resets the iterator to the beginning of the iteration
+    */
+    public final void reset()
+    {
+        m_currentCodepoint_ = 0;
+        m_nextCodepoint_    = 0;
+        m_nextIndex_        = 0;
+        m_nextBlock_ = m_trie_.m_index_[0] << Trie.INDEX_STAGE_2_SHIFT_;
+        if (m_nextBlock_ == 0) {
+            m_nextValue_ = m_initialValue_;
+        }
+        else {
+            m_nextValue_ = extract(m_trie_.getValue(m_nextBlock_));
+        }
+        m_nextBlockIndex_ = 0;
+        m_nextTrailIndexOffset_ = TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_;
+    }
+    
+    // protected methods ----------------------------------------------
+    
+    /**
+    * Called by next() to extracts a 32 bit value from a trie value
+    * used for comparison.
+    * This method is to be overwritten if special manipulation is to be done
+    * to retrieve a relevant comparison.
+    * The default function is to return the value as it is.
+    * @param value a value from the trie
+    * @return extracted value
+    */
+    protected int extract(int value)
+    {
+        return value;
+    }
+    
+    // private methods ------------------------------------------------
+    
+    /**
+    * Set the result values
+    * @param element return result object
+    * @param start codepoint of range 
+    * @param limit (end + 1) codepoint of range
+    * @param value common value of range
+    */
+    private final void setResult(Element element, int start, int limit, 
+                                 int value)
+    {
+        element.start = start;
+        element.limit = limit;
+        element.value = value;
+    }
+    
+    /**
+    * Finding the next element.
+    * This method is called just before returning the result of 
+    * next().
+    * We always store the next element before it is requested.
+    * In the case that we have to continue calculations into the 
+    * supplementary planes, a false will be returned.
+    * @param element return result object
+    * @return true if the next range is found, false if we have to proceed to
+    *         the supplementary range.
+    */
+    private final boolean calculateNextBMPElement(Element element)
+    {
+        int currentBlock    = m_nextBlock_;
+        int currentValue    = m_nextValue_;
+        m_currentCodepoint_ = m_nextCodepoint_;
+        m_nextCodepoint_ ++;
+        m_nextBlockIndex_ ++;
+        if (!checkBlockDetail(currentValue)) {
+            setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                      currentValue);
+            return true;
+        }
+        // synwee check that next block index == 0 here 
+        // enumerate BMP - the main loop enumerates data blocks
+        while (m_nextCodepoint_ < UCharacter.SUPPLEMENTARY_MIN_VALUE) {
+            m_nextIndex_ ++;
+            // because of the way the character is split to form the index
+            // the lead surrogate and trail surrogate can not be in the
+            // mid of a block
+            if (m_nextCodepoint_ == LEAD_SURROGATE_MIN_VALUE_) {
+                // skip lead surrogate code units,
+                // go to lead surrogate codepoints
+                m_nextIndex_ = BMP_INDEX_LENGTH_;
+            }
+            else if (m_nextCodepoint_ == TRAIL_SURROGATE_MIN_VALUE_) {
+                // go back to regular BMP code points
+                m_nextIndex_ = m_nextCodepoint_ >> Trie.INDEX_STAGE_1_SHIFT_;
+            }
+            
+            m_nextBlockIndex_ = 0;
+            if (!checkBlock(currentBlock, currentValue)) {
+                setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                          currentValue);
+                return true;
+            }
+        }
+        m_nextCodepoint_ --;   // step one back since this value has not been
+        m_nextBlockIndex_ --;  // retrieved yet.
+        return false;
+    }
+
+    /**
+    * Finds the next supplementary element.
+    * For each entry in the trie, the value to be delivered is passed through
+    * extract().
+    * We always store the next element before it is requested.
+    * Called after calculateNextBMP() completes its round of BMP characters.
+    * There is a slight difference in the usage of m_currentCodepoint_
+    * here as compared to calculateNextBMP(). Though both represents the
+    * lower bound of the next element, in calculateNextBMP() it gets set
+    * at the start of any loop, where-else, in calculateNextSupplementary()
+    * since m_currentCodepoint_ already contains the lower bound of the
+    * next element (passed down from calculateNextBMP()), we keep it till 
+    * the end before resetting it to the new value.
+    * Note, if there are no more iterations, it will never get to here. 
+    * Blocked out by next().
+    * @param element return result object
+    */
+    private final void calculateNextSupplementaryElement(Element element)
+    {
+        int currentValue = m_nextValue_;
+        int currentBlock = m_nextBlock_;
+        m_nextCodepoint_ ++;
+        m_nextBlockIndex_ ++;
+        
+        if (UTF16.getTrailSurrogate(m_nextCodepoint_) 
+                                        != UTF16.TRAIL_SURROGATE_MIN_VALUE) { 
+            // this piece is only called when we are in the middle of a lead
+            // surrogate block
+            if (!checkNullNextTrailIndex() && !checkBlockDetail(currentValue)) {
+                setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                          currentValue);
+                m_currentCodepoint_ = m_nextCodepoint_;
+                return;
+            }
+            // we have cleared one block
+            m_nextIndex_ ++;
+            m_nextTrailIndexOffset_ ++;
+            if (!checkTrailBlock(currentBlock, currentValue)) {
+                setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                          currentValue);
+                m_currentCodepoint_ = m_nextCodepoint_;
+                return;
+            }
+        }
+        int nextLead  = UTF16.getLeadSurrogate(m_nextCodepoint_);
+        // enumerate supplementary code points
+        while (nextLead < TRAIL_SURROGATE_MIN_VALUE_) {
+            // lead surrogate access
+            int leadBlock = 
+                   m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] << 
+                                                   Trie.INDEX_STAGE_2_SHIFT_;
+            if (leadBlock == m_trie_.m_dataOffset_) {
+                // no entries for a whole block of lead surrogates
+                if (currentValue != m_initialValue_) {
+                    m_nextValue_      = m_initialValue_;
+                    m_nextBlock_      = 0;
+                    m_nextBlockIndex_ = 0;
+                    setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                              currentValue);
+                    m_currentCodepoint_ = m_nextCodepoint_;
+                    return;
+                }
+
+                nextLead += DATA_BLOCK_LENGTH_;
+                // number of total affected supplementary codepoints in one
+                // block
+                // this is not a simple addition of 
+                // DATA_BLOCK_SUPPLEMENTARY_LENGTH since we need to consider
+                // that we might have moved some of the codepoints
+                m_nextCodepoint_ = UCharacterProperty.getRawSupplementary(
+                                     (char)nextLead, 
+                                     (char)UTF16.TRAIL_SURROGATE_MIN_VALUE);
+                continue;
+            }
+            if (m_trie_.m_dataManipulate_ == null) {
+                throw new NullPointerException(
+                            "The field DataManipulate in this Trie is null");
+            }
+            // enumerate trail surrogates for this lead surrogate
+            m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
+                               m_trie_.getValue(leadBlock + 
+                                   (nextLead & Trie.INDEX_STAGE_3_MASK_)));
+            if (m_nextIndex_ <= 0) {
+                // no data for this lead surrogate
+                if (currentValue != m_initialValue_) {
+                    m_nextValue_      = m_initialValue_;
+                    m_nextBlock_      = 0;
+                    m_nextBlockIndex_ = 0;
+                    setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                              currentValue);
+                    m_currentCodepoint_ = m_nextCodepoint_;
+                    return;
+                }
+                m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_;
+            } else {
+                m_nextTrailIndexOffset_ = 0;
+                if (!checkTrailBlock(currentBlock, currentValue)) {
+                    setResult(element, m_currentCodepoint_, m_nextCodepoint_, 
+                              currentValue);
+                    m_currentCodepoint_ = m_nextCodepoint_;
+                    return;
+                }
+            }    
+            nextLead ++;
+         }
+
+         // deliver last range
+         setResult(element, m_currentCodepoint_, UCharacter.MAX_VALUE + 1, 
+                   currentValue);
+    }    
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on a data block to find codepoints in m_nextBlock_
+    * after the index m_nextBlockIndex_ that has the same value.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * But when returned with false, it will be the last codepoint whose
+    * value has been calculated.
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkBlockDetail(int currentValue)
+    {
+        while (m_nextBlockIndex_ < DATA_BLOCK_LENGTH_) {
+            m_nextValue_ = extract(m_trie_.getValue(m_nextBlock_ + 
+                                                    m_nextBlockIndex_));
+            if (m_nextValue_ != currentValue) {
+                return false;
+            }
+            ++ m_nextBlockIndex_;
+            ++ m_nextCodepoint_;
+        }
+        return true;
+    }
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on a data block to find codepoints in m_nextBlock_
+    * that has the same value. 
+    * Will call checkBlockDetail() if highlevel check fails.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * @param currentBlock the initial block containing all currentValue
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkBlock(int currentBlock, int currentValue) 
+    {
+        m_nextBlock_ = m_trie_.m_index_[m_nextIndex_] << 
+                                                  Trie.INDEX_STAGE_2_SHIFT_;
+        if (m_nextBlock_ == currentBlock &&
+            (m_nextCodepoint_ - m_currentCodepoint_) >= DATA_BLOCK_LENGTH_) {
+            // the block is the same as the previous one, filled with 
+            // currentValue
+            m_nextCodepoint_ += DATA_BLOCK_LENGTH_;
+        }
+        else if (m_nextBlock_ == 0) {
+            // this is the all-initial-value block
+            if (currentValue != m_initialValue_) {
+                m_nextValue_      = m_initialValue_;
+                m_nextBlockIndex_ = 0;
+                return false;
+            }
+            m_nextCodepoint_ += DATA_BLOCK_LENGTH_;
+        }
+        else {
+            if (!checkBlockDetail(currentValue)) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    /**
+    * Internal block value calculations
+    * Performs calculations on multiple data blocks for a set of trail 
+    * surrogates to find codepoints in m_nextBlock_ that has the same value. 
+    * Will call checkBlock() for internal block checks.
+    * Note m_*_ variables at this point is the next codepoint whose value
+    * has not been calculated.
+    * @param currentBlock the initial block containing all currentValue
+    * @param currentValue the value which other codepoints are tested against
+    * @return true if the whole block has the same value as currentValue or if
+    *              the whole block has been calculated, false otherwise.
+    */
+    private final boolean checkTrailBlock(int currentBlock,
+                                          int currentValue)
+    {
+        // enumerate code points for this lead surrogate
+        while (m_nextTrailIndexOffset_ < TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_) 
+        {
+            // if we ever reach here, we are at the start of a new block
+            m_nextBlockIndex_ = 0;
+            // copy of most of the body of the BMP loop
+            if (!checkBlock(currentBlock, currentValue)) {
+                return false;
+            }
+            m_nextTrailIndexOffset_ ++;
+            m_nextIndex_ ++;
+        }
+        return true;
+    }
+    
+    /**
+    * Checks if we are beginning at the start of a initial block.
+    * If we are then the rest of the codepoints in this initial block
+    * has the same values.
+    * We increment m_nextCodepoint_ and relevant data members if so.
+    * This is used only in for the supplementary codepoints because
+    * the offset to the trail indexes could be 0.
+    * @return true if we are at the start of a initial block.
+    */
+    private final boolean checkNullNextTrailIndex()
+    {
+        if (m_nextIndex_ <= 0) {
+            m_nextCodepoint_ += TRAIL_SURROGATE_COUNT_ - 1;
+            int nextLead  = UTF16.getLeadSurrogate(m_nextCodepoint_);
+            int leadBlock = 
+                   m_trie_.m_index_[nextLead >> Trie.INDEX_STAGE_1_SHIFT_] << 
+                                                   Trie.INDEX_STAGE_2_SHIFT_;
+            if (m_trie_.m_dataManipulate_ == null) {
+                throw new NullPointerException(
+                            "The field DataManipulate in this Trie is null");
+            }
+            m_nextIndex_ = m_trie_.m_dataManipulate_.getFoldingOffset(
+                               m_trie_.getValue(leadBlock + 
+                                   (nextLead & Trie.INDEX_STAGE_3_MASK_)));
+            m_nextIndex_ --;
+            m_nextBlockIndex_ =  DATA_BLOCK_LENGTH_;
+            return true;
+        }
+        return false;
+    }
+
+    // private data members --------------------------------------------
+
+    /**
+    * Size of the stage 1 BMP indexes
+    */
+    private static final int BMP_INDEX_LENGTH_ =
+                                        0x10000 >> Trie.INDEX_STAGE_1_SHIFT_;
+    /**
+    * Lead surrogate minimum value
+    */
+    private static final int LEAD_SURROGATE_MIN_VALUE_ = 0xD800;
+    /**
+    * Trail surrogate minimum value
+    */
+    private static final int TRAIL_SURROGATE_MIN_VALUE_ = 0xDC00;
+    /*
+    * Trail surrogate maximum value
+    */
+    //private static final int TRAIL_SURROGATE_MAX_VALUE_ = 0xDFFF;
+    /**
+    * Number of trail surrogate
+    */
+    private static final int TRAIL_SURROGATE_COUNT_ = 0x400;
+    /**
+    * Number of stage 1 indexes for supplementary calculations that maps to
+    * each lead surrogate character.
+    * See second pass into getRawOffset for the trail surrogate character.
+    * 10 for significant number of bits for trail surrogates, 5 for what we
+    * discard during shifting.
+    */
+    private static final int TRAIL_SURROGATE_INDEX_BLOCK_LENGTH_ =
+                                    1 << (10 - Trie.INDEX_STAGE_1_SHIFT_);
+    /**
+    * Number of data values in a stage 2 (data array) block.
+    */
+    private static final int DATA_BLOCK_LENGTH_ = 
+                                              1 << Trie.INDEX_STAGE_1_SHIFT_;
+//    /**
+//    * Number of codepoints in a stage 2 block
+//    */
+//    private static final int DATA_BLOCK_SUPPLEMENTARY_LENGTH_ =
+//                                                     DATA_BLOCK_LENGTH_ << 10;
+    /**
+    * Trie instance
+    */
+    private Trie m_trie_;
+    /**
+    * Initial value for trie values
+    */
+    private int m_initialValue_;
+    /**
+    * Next element results and data.
+    */
+    private int m_currentCodepoint_;
+    private int m_nextCodepoint_;
+    private int m_nextValue_;
+    private int m_nextIndex_;
+    private int m_nextBlock_;
+    private int m_nextBlockIndex_;
+    private int m_nextTrailIndexOffset_;
+}
diff --git a/src/com/ibm/icu/impl/UBiDiProps.java b/src/com/ibm/icu/impl/UBiDiProps.java
new file mode 100644
index 0000000..0b128d2
--- /dev/null
+++ b/src/com/ibm/icu/impl/UBiDiProps.java
@@ -0,0 +1,326 @@
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2004-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  UBiDiProps.java
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2005jan16
+*   created by: Markus W. Scherer
+*
+*   Low-level Unicode bidi/shaping properties access.
+*   Java port of ubidi_props.h/.c.
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.util.RangeValueIterator;
+
+import com.ibm.icu.text.UnicodeSet;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+
+public final class UBiDiProps {
+    // constructors etc. --------------------------------------------------- ***
+
+    // port of ubidi_openProps()
+    public UBiDiProps() throws IOException{
+        InputStream is=ICUData.getStream(ICUResourceBundle.ICU_BUNDLE+"/"+DATA_FILE_NAME);
+        BufferedInputStream b=new BufferedInputStream(is, 4096 /* data buffer size */);
+        readData(b);
+        b.close();
+        is.close();
+
+    }
+
+    private void readData(InputStream is) throws IOException {
+        DataInputStream inputStream=new DataInputStream(is);
+
+        // read the header
+        ICUBinary.readHeader(inputStream, FMT, new IsAcceptable());
+
+        // read indexes[]
+        int i, count;
+        count=inputStream.readInt();
+        if(count<IX_INDEX_TOP) {
+            throw new IOException("indexes[0] too small in "+DATA_FILE_NAME);
+        }
+        indexes=new int[count];
+
+        indexes[0]=count;
+        for(i=1; i<count; ++i) {
+            indexes[i]=inputStream.readInt();
+        }
+
+        // read the trie
+        trie=new CharTrie(inputStream, null);
+
+        // read mirrors[]
+        count=indexes[IX_MIRROR_LENGTH];
+        if(count>0) {
+            mirrors=new int[count];
+            for(i=0; i<count; ++i) {
+                mirrors[i]=inputStream.readInt();
+            }
+        }
+
+        // read jgArray[]
+        count=indexes[IX_JG_LIMIT]-indexes[IX_JG_START];
+        jgArray=new byte[count];
+        for(i=0; i<count; ++i) {
+            jgArray[i]=inputStream.readByte();
+        }
+    }
+
+    // implement ICUBinary.Authenticate
+    private final class IsAcceptable implements ICUBinary.Authenticate {
+        public boolean isDataVersionAcceptable(byte version[]) {
+            return version[0]==1 &&
+                   version[2]==Trie.INDEX_STAGE_1_SHIFT_ && version[3]==Trie.INDEX_STAGE_2_SHIFT_;
+        }
+    }
+
+    // UBiDiProps singleton
+    private static UBiDiProps gBdp=null;
+
+    // port of ubidi_getSingleton()
+    public static final synchronized UBiDiProps getSingleton() throws IOException {
+        if(gBdp==null) {
+            gBdp=new UBiDiProps();
+        }
+        return gBdp;
+    }
+
+    // UBiDiProps dummy singleton
+    private static UBiDiProps gBdpDummy=null;
+
+    private UBiDiProps(boolean makeDummy) { // ignore makeDummy, only creates a unique signature
+        indexes=new int[IX_TOP];
+        indexes[0]=IX_TOP;
+        trie=new CharTrie(0, 0, null); // dummy trie, always returns 0
+    }
+
+    /**
+     * Get a singleton dummy object, one that works with no real data.
+     * This can be used when the real data is not available.
+     * Using the dummy can reduce checks for available data after an initial failure.
+     * Port of ucase_getDummy().
+     */
+    public static final synchronized UBiDiProps getDummy() {
+        if(gBdpDummy==null) {
+            gBdpDummy=new UBiDiProps(true);
+        }
+        return gBdpDummy;
+    }
+
+    // set of property starts for UnicodeSet ------------------------------- ***
+
+    public final void addPropertyStarts(UnicodeSet set) {
+        int i, length;
+        int c, start, limit;
+
+        byte prev, jg;
+
+        /* add the start code point of each same-value range of the trie */
+        TrieIterator iter=new TrieIterator(trie);
+        RangeValueIterator.Element element=new RangeValueIterator.Element();
+
+        while(iter.next(element)){
+            set.add(element.start);
+        }
+
+        /* add the code points from the bidi mirroring table */
+        length=indexes[IX_MIRROR_LENGTH];
+        for(i=0; i<length; ++i) {
+            c=getMirrorCodePoint(mirrors[i]);
+            set.add(c, c+1);
+        }
+
+        /* add the code points from the Joining_Group array where the value changes */
+        start=indexes[IX_JG_START];
+        limit=indexes[IX_JG_LIMIT];
+        length=limit-start;
+        prev=0;
+        for(i=0; i<length; ++i) {
+            jg=jgArray[i];
+            if(jg!=prev) {
+                set.add(start);
+                prev=jg;
+            }
+            ++start;
+        }
+        if(prev!=0) {
+            /* add the limit code point if the last value was not 0 (it is now start==limit) */
+            set.add(limit);
+        }
+
+        /* add code points with hardcoded properties, plus the ones following them */
+
+        /* (none right now) */
+    }
+
+    // property access functions ------------------------------------------- ***
+
+    public final int getMaxValue(int which) {
+        int max;
+
+        max=indexes[IX_MAX_VALUES];
+        switch(which) {
+        case UProperty.BIDI_CLASS:
+            return (max&CLASS_MASK);
+        case UProperty.JOINING_GROUP:
+            return (max&MAX_JG_MASK)>>MAX_JG_SHIFT;
+        case UProperty.JOINING_TYPE:
+            return (max&JT_MASK)>>JT_SHIFT;
+        default:
+            return -1; /* undefined */
+        }
+    }
+
+    public final int getClass(int c) {
+        return getClassFromProps(trie.getCodePointValue(c));
+    }
+
+    public final boolean isMirrored(int c) {
+        return getFlagFromProps(trie.getCodePointValue(c), IS_MIRRORED_SHIFT);
+    }
+
+    public final int getMirror(int c) {
+        int props;
+        int delta;
+
+        props=trie.getCodePointValue(c);
+        delta=((short)props)>>MIRROR_DELTA_SHIFT;
+        if(delta!=ESC_MIRROR_DELTA) {
+            return c+delta;
+        } else {
+            /* look for mirror code point in the mirrors[] table */
+            int m;
+            int i, length;
+            int c2;
+
+            length=indexes[IX_MIRROR_LENGTH];
+
+            /* linear search */
+            for(i=0; i<length; ++i) {
+                m=mirrors[i];
+                c2=getMirrorCodePoint(m);
+                if(c==c2) {
+                    /* found c, return its mirror code point using the index in m */
+                    return getMirrorCodePoint(mirrors[getMirrorIndex(m)]);
+                } else if(c<c2) {
+                    break;
+                }
+            }
+
+            /* c not found, return it itself */
+            return c;
+        }
+    }
+
+    public final boolean isBidiControl(int c) {
+        return getFlagFromProps(trie.getCodePointValue(c), BIDI_CONTROL_SHIFT);
+    }
+
+    public final boolean isJoinControl(int c) {
+        return getFlagFromProps(trie.getCodePointValue(c), JOIN_CONTROL_SHIFT);
+    }
+
+    public final int getJoiningType(int c) {
+        return (trie.getCodePointValue(c)&JT_MASK)>>JT_SHIFT;
+    }
+
+    public final int getJoiningGroup(int c) {
+        int start, limit;
+
+        start=indexes[IX_JG_START];
+        limit=indexes[IX_JG_LIMIT];
+        if(start<=c && c<limit) {
+            return (int)jgArray[c-start]&0xff;
+        } else {
+            return UCharacter.JoiningGroup.NO_JOINING_GROUP;
+        }
+    }
+
+    // data members -------------------------------------------------------- ***
+    private int indexes[];
+    private int mirrors[];
+    private byte jgArray[];
+
+    private CharTrie trie;
+
+    // data format constants ----------------------------------------------- ***
+    private static final String DATA_NAME="ubidi";
+    private static final String DATA_TYPE="icu";
+    private static final String DATA_FILE_NAME=DATA_NAME+"."+DATA_TYPE;
+
+    /* format "BiDi" */
+    private static final byte FMT[]={ 0x42, 0x69, 0x44, 0x69 };
+
+    /* indexes into indexes[] */
+    private static final int IX_INDEX_TOP=0;
+    //private static final int IX_LENGTH=1;
+    //private static final int IX_TRIE_SIZE=2;
+    private static final int IX_MIRROR_LENGTH=3;
+
+    private static final int IX_JG_START=4;
+    private static final int IX_JG_LIMIT=5;
+
+    private static final int IX_MAX_VALUES=15;
+    private static final int IX_TOP=16;
+
+    // definitions for 16-bit bidi/shaping properties word ----------------- ***
+
+                          /* CLASS_SHIFT=0, */     /* bidi class: 5 bits (4..0) */
+    private static final int JT_SHIFT=5;           /* joining type: 3 bits (7..5) */
+
+    /* private static final int _SHIFT=8, reserved: 2 bits (9..8) */
+
+    private static final int JOIN_CONTROL_SHIFT=10;
+    private static final int BIDI_CONTROL_SHIFT=11;
+
+    private static final int IS_MIRRORED_SHIFT=12;         /* 'is mirrored' */
+    private static final int MIRROR_DELTA_SHIFT=13;        /* bidi mirroring delta: 3 bits (15..13) */
+
+    private static final int MAX_JG_SHIFT=16;              /* max JG value in indexes[MAX_VALUES_INDEX] bits 23..16 */
+
+    private static final int CLASS_MASK=    0x0000001f;
+    private static final int JT_MASK=       0x000000e0;
+
+    private static final int MAX_JG_MASK=   0x00ff0000;
+
+    private static final int getClassFromProps(int props) {
+        return props&CLASS_MASK;
+    }
+    private static final boolean getFlagFromProps(int props, int shift) {
+        return ((props>>shift)&1)!=0;
+    }
+
+    private static final int ESC_MIRROR_DELTA=-4;
+    //private static final int MIN_MIRROR_DELTA=-3;
+    //private static final int MAX_MIRROR_DELTA=3;
+
+    // definitions for 32-bit mirror table entry --------------------------- ***
+
+    /* the source Unicode code point takes 21 bits (20..0) */
+    private static final int MIRROR_INDEX_SHIFT=21;
+    //private static final int MAX_MIRROR_INDEX=0x7ff;
+
+    private static final int getMirrorCodePoint(int m) {
+        return m&0x1fffff;
+    }
+    private static final int getMirrorIndex(int m) {
+        return m>>>MIRROR_INDEX_SHIFT;
+    }
+}
diff --git a/src/com/ibm/icu/impl/UCaseProps.java b/src/com/ibm/icu/impl/UCaseProps.java
new file mode 100644
index 0000000..e45b51b
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCaseProps.java
@@ -0,0 +1,1401 @@
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2004-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  UCaseProps.java
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2005jan29
+*   created by: Markus W. Scherer
+*
+*   Low-level Unicode character/string case mapping code.
+*   Java port of ucase.h/.c.
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ULocale;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+import com.ibm.icu.lang.UCharacter;
+
+public final class UCaseProps {
+    // constructors etc. --------------------------------------------------- ***
+
+    // port of ucase_openProps()
+    public UCaseProps() throws IOException {
+        InputStream is=ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/"+DATA_FILE_NAME);
+        BufferedInputStream b=new BufferedInputStream(is, 4096 /* data buffer size */);
+        readData(b);
+        b.close();
+        is.close();
+    }
+
+    private final void readData(InputStream is) throws IOException {
+        DataInputStream inputStream=new DataInputStream(is);
+
+        // read the header
+        ICUBinary.readHeader(inputStream, FMT, new IsAcceptable());
+
+        // read indexes[]
+        int i, count;
+        count=inputStream.readInt();
+        if(count<IX_INDEX_TOP) {
+            throw new IOException("indexes[0] too small in "+DATA_FILE_NAME);
+        }
+        indexes=new int[count];
+
+        indexes[0]=count;
+        for(i=1; i<count; ++i) {
+            indexes[i]=inputStream.readInt();
+        }
+
+        // read the trie
+        trie=new CharTrie(inputStream, null);
+
+        // read exceptions[]
+        count=indexes[IX_EXC_LENGTH];
+        if(count>0) {
+            exceptions=new char[count];
+            for(i=0; i<count; ++i) {
+                exceptions[i]=inputStream.readChar();
+            }
+        }
+
+        // read unfold[]
+        count=indexes[IX_UNFOLD_LENGTH];
+        if(count>0) {
+            unfold=new char[count];
+            for(i=0; i<count; ++i) {
+                unfold[i]=inputStream.readChar();
+            }
+        }
+    }
+
+    // implement ICUBinary.Authenticate
+    private final class IsAcceptable implements ICUBinary.Authenticate {
+        public boolean isDataVersionAcceptable(byte version[]) {
+            return version[0]==1 &&
+                   version[2]==Trie.INDEX_STAGE_1_SHIFT_ && version[3]==Trie.INDEX_STAGE_2_SHIFT_;
+        }
+    }
+
+    // UCaseProps singleton
+    private static UCaseProps gCsp=null;
+
+    // port of ucase_getSingleton()
+    public static final synchronized UCaseProps getSingleton() throws IOException {
+        if(gCsp==null) {
+            gCsp=new UCaseProps();
+        }
+        return gCsp;
+    }
+
+    // UCaseProps dummy singleton
+    private static UCaseProps gCspDummy=null;
+
+    private UCaseProps(boolean makeDummy) { // ignore makeDummy, only creates a unique signature
+        indexes=new int[IX_TOP];
+        indexes[0]=IX_TOP;
+        trie=new CharTrie(0, 0, null); // dummy trie, always returns 0
+    }
+
+    /**
+     * Get a singleton dummy object, one that works with no real data.
+     * This can be used when the real data is not available.
+     * Using the dummy can reduce checks for available data after an initial failure.
+     * Port of ucase_getDummy().
+     */
+    public static final synchronized UCaseProps getDummy() {
+        if(gCspDummy==null) {
+            gCspDummy=new UCaseProps(true);
+        }
+        return gCspDummy;
+    }
+
+    // set of property starts for UnicodeSet ------------------------------- ***
+
+    public final void addPropertyStarts(UnicodeSet set) {
+        /* add the start code point of each same-value range of the trie */
+        TrieIterator iter=new TrieIterator(trie);
+        RangeValueIterator.Element element=new RangeValueIterator.Element();
+
+        while(iter.next(element)){
+            set.add(element.start);
+        }
+
+        /* add code points with hardcoded properties, plus the ones following them */
+
+        /* (none right now, see comment below) */
+
+        /*
+         * Omit code points with hardcoded specialcasing properties
+         * because we do not build property UnicodeSets for them right now.
+         */
+    }
+
+    // data access primitives ---------------------------------------------- ***
+    private static final int getExceptionsOffset(int props) {
+        return props>>EXC_SHIFT;
+    }
+
+    private static final boolean propsHasException(int props) {
+        return (props&EXCEPTION)!=0;
+    }
+
+    /* number of bits in an 8-bit integer value */
+    private static final byte flagsOffset[/*256*/]={
+        0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+        4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
+    };
+
+    private static final boolean hasSlot(int flags, int index) {
+        return (flags&(1<<index))!=0;
+    }
+    private static final byte slotOffset(int flags, int index) {
+        return flagsOffset[flags&((1<<index)-1)];
+    }
+
+    /*
+     * Get the value of an optional-value slot where hasSlot(excWord, index).
+     *
+     * @param excWord (in) initial exceptions word
+     * @param index (in) desired slot index
+     * @param excOffset (in) offset into exceptions[] after excWord=exceptions[excOffset++];
+     * @return bits 31..0: slot value
+     *             63..32: modified excOffset, moved to the last char of the value, use +1 for beginning of next slot 
+     */
+    private final long getSlotValueAndOffset(int excWord, int index, int excOffset) {
+        long value;
+        if((excWord&EXC_DOUBLE_SLOTS)==0) {
+            excOffset+=slotOffset(excWord, index);
+            value=exceptions[excOffset];
+        } else {
+            excOffset+=2*slotOffset(excWord, index);
+            value=exceptions[excOffset++];
+            value=(value<<16)|exceptions[excOffset];
+        }
+        return (long)value|((long)excOffset<<32);
+    }
+
+    /* same as getSlotValueAndOffset() but does not return the slot offset */
+    private final int getSlotValue(int excWord, int index, int excOffset) {
+        int value;
+        if((excWord&EXC_DOUBLE_SLOTS)==0) {
+            excOffset+=slotOffset(excWord, index);
+            value=exceptions[excOffset];
+        } else {
+            excOffset+=2*slotOffset(excWord, index);
+            value=exceptions[excOffset++];
+            value=(value<<16)|exceptions[excOffset];
+        }
+        return value;
+    }
+
+    // simple case mappings ------------------------------------------------ ***
+
+    public final int tolower(int c) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)>=UPPER) {
+                c+=getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props);
+            int excWord=exceptions[excOffset++];
+            if(hasSlot(excWord, EXC_LOWER)) {
+                c=getSlotValue(excWord, EXC_LOWER, excOffset);
+            }
+        }
+        return c;
+    }
+
+    public final int toupper(int c) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)==LOWER) {
+                c+=getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props);
+            int excWord=exceptions[excOffset++];
+            if(hasSlot(excWord, EXC_UPPER)) {
+                c=getSlotValue(excWord, EXC_UPPER, excOffset);
+            }
+        }
+        return c;
+    }
+
+    public final int totitle(int c) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)==LOWER) {
+                c+=getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props);
+            int excWord=exceptions[excOffset++];
+            int index;
+            if(hasSlot(excWord, EXC_TITLE)) {
+                index=EXC_TITLE;
+            } else if(hasSlot(excWord, EXC_UPPER)) {
+                index=EXC_UPPER;
+            } else {
+                return c;
+            }
+            c=getSlotValue(excWord, index, excOffset);
+        }
+        return c;
+    }
+
+    /**
+     * Adds all simple case mappings and the full case folding for c to sa,
+     * and also adds special case closure mappings.
+     * c itself is not added.
+     * For example, the mappings
+     * - for s include long s
+     * - for sharp s include ss
+     * - for k include the Kelvin sign
+     */
+    public final void addCaseClosure(int c, UnicodeSet set) {
+        /*
+         * Hardcode the case closure of i and its relatives and ignore the
+         * data file data for these characters.
+         * The Turkic dotless i and dotted I with their case mapping conditions
+         * and case folding option make the related characters behave specially.
+         * This code matches their closure behavior to their case folding behavior.
+         */
+
+        switch(c) {
+        case 0x49:
+            /* regular i and I are in one equivalence class */
+            set.add(0x69);
+            return;
+        case 0x69:
+            set.add(0x49);
+            return;
+        case 0x130:
+            /* dotted I is in a class with <0069 0307> (for canonical equivalence with <0049 0307>) */
+            set.add(iDot);
+            return;
+        case 0x131:
+            /* dotless i is in a class by itself */
+            return;
+        default:
+            /* otherwise use the data file data */
+            break;
+        }
+
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)!=NONE) {
+                /* add the one simple case mapping, no matter what type it is */
+                int delta=getDelta(props);
+                if(delta!=0) {
+                    set.add(c+delta);
+                }
+            }
+        } else {
+            /*
+             * c has exceptions, so there may be multiple simple and/or
+             * full case mappings. Add them all.
+             */
+            int excOffset0, excOffset=getExceptionsOffset(props);
+            int closureOffset;
+            int excWord=exceptions[excOffset++];
+            int index, closureLength, fullLength, length;
+
+            excOffset0=excOffset;
+
+            /* add all simple case mappings */
+            for(index=EXC_LOWER; index<=EXC_TITLE; ++index) {
+                if(hasSlot(excWord, index)) {
+                    excOffset=excOffset0;
+                    c=getSlotValue(excWord, index, excOffset);
+                    set.add(c);
+                }
+            }
+
+            /* get the closure string pointer & length */
+            if(hasSlot(excWord, EXC_CLOSURE)) {
+                excOffset=excOffset0;
+                long value=getSlotValueAndOffset(excWord, EXC_CLOSURE, excOffset);
+                closureLength=(int)value&CLOSURE_MAX_LENGTH; /* higher bits are reserved */
+                closureOffset=(int)(value>>32)+1; /* behind this slot, unless there are full case mappings */
+            } else {
+                closureLength=0;
+                closureOffset=0;
+            }
+
+            /* add the full case folding */
+            if(hasSlot(excWord, EXC_FULL_MAPPINGS)) {
+                excOffset=excOffset0;
+                long value=getSlotValueAndOffset(excWord, EXC_FULL_MAPPINGS, excOffset);
+                fullLength=(int)value;
+
+                /* start of full case mapping strings */
+                excOffset=(int)(value>>32)+1;
+
+                fullLength&=0xffff; /* bits 16 and higher are reserved */
+
+                /* skip the lowercase result string */
+                excOffset+=fullLength&FULL_LOWER;
+                fullLength>>=4;
+
+                /* add the full case folding string */
+                length=fullLength&0xf;
+                if(length!=0) {
+                    set.add(new String(exceptions, excOffset, length));
+                    excOffset+=length;
+                }
+
+                /* skip the uppercase and titlecase strings */
+                fullLength>>=4;
+                excOffset+=fullLength&0xf;
+                fullLength>>=4;
+                excOffset+=fullLength;
+
+                closureOffset=excOffset; /* behind full case mappings */
+            }
+
+            /* add each code point in the closure string */
+            for(index=0; index<closureLength; index+=UTF16.getCharCount(c)) {
+                c=UTF16.charAt(exceptions, closureOffset, exceptions.length, index);
+                set.add(c);
+            }
+        }
+    }
+
+    /*
+     * compare s, which has a length, with t=unfold[unfoldOffset..], which has a maximum length or is NUL-terminated
+     * must be s.length()>0 and max>0 and s.length()<=max
+     */
+    private final int strcmpMax(String s, int unfoldOffset, int max) {
+        int i1, length, c1, c2;
+
+        length=s.length();
+        max-=length; /* we require length<=max, so no need to decrement max in the loop */
+        i1=0;
+        do {
+            c1=s.charAt(i1++);
+            c2=unfold[unfoldOffset++];
+            if(c2==0) {
+                return 1; /* reached the end of t but not of s */
+            }
+            c1-=c2;
+            if(c1!=0) {
+                return c1; /* return difference result */
+            }
+        } while(--length>0);
+        /* ends with length==0 */
+
+        if(max==0 || unfold[unfoldOffset]==0) {
+            return 0; /* equal to length of both strings */
+        } else {
+            return -max; /* return lengh difference */
+        }
+    }
+
+    /**
+     * Maps the string to single code points and adds the associated case closure
+     * mappings.
+     * The string is mapped to code points if it is their full case folding string.
+     * In other words, this performs a reverse full case folding and then
+     * adds the case closure items of the resulting code points.
+     * If the string is found and its closure applied, then
+     * the string itself is added as well as part of its code points' closure.
+     *
+     * @return true if the string was found
+     */
+    public final boolean addStringCaseClosure(String s, UnicodeSet set) {
+        int i, length, start, limit, result, unfoldOffset, unfoldRows, unfoldRowWidth, unfoldStringWidth;
+
+        if(unfold==null || s==null) {
+            return false; /* no reverse case folding data, or no string */
+        }
+        length=s.length();
+        if(length<=1) {
+            /* the string is too short to find any match */
+            /*
+             * more precise would be:
+             * if(!u_strHasMoreChar32Than(s, length, 1))
+             * but this does not make much practical difference because
+             * a single supplementary code point would just not be found
+             */
+            return false;
+        }
+
+        unfoldRows=unfold[UNFOLD_ROWS];
+        unfoldRowWidth=unfold[UNFOLD_ROW_WIDTH];
+        unfoldStringWidth=unfold[UNFOLD_STRING_WIDTH];
+        //unfoldCPWidth=unfoldRowWidth-unfoldStringWidth;
+
+        if(length>unfoldStringWidth) {
+            /* the string is too long to find any match */
+            return false;
+        }
+
+        /* do a binary search for the string */
+        start=0;
+        limit=unfoldRows;
+        while(start<limit) {
+            i=(start+limit)/2;
+            unfoldOffset=((i+1)*unfoldRowWidth); // +1 to skip the header values above
+            result=strcmpMax(s, unfoldOffset, unfoldStringWidth);
+
+            if(result==0) {
+                /* found the string: add each code point, and its case closure */
+                int c;
+
+                for(i=unfoldStringWidth; i<unfoldRowWidth && unfold[unfoldOffset+i]!=0; i+=UTF16.getCharCount(c)) {
+                    c=UTF16.charAt(unfold, unfoldOffset, unfold.length, i);
+                    set.add(c);
+                    addCaseClosure(c, set);
+                }
+                return true;
+            } else if(result<0) {
+                limit=i;
+            } else /* result>0 */ {
+                start=i+1;
+            }
+        }
+
+        return false; /* string not found */
+    }
+
+    /** @return NONE, LOWER, UPPER, TITLE */
+    public final int getType(int c) {
+        return getTypeFromProps(trie.getCodePointValue(c));
+    }
+
+    /** @return same as getType(), or <0 if c is case-ignorable */
+    public final int getTypeOrIgnorable(int c) {
+        int props=trie.getCodePointValue(c);
+        int type=getTypeFromProps(props);
+        if(type!=NONE) {
+            return type;
+        } else if(
+            c==0x307 ||
+            (props&(EXCEPTION|CASE_IGNORABLE))==CASE_IGNORABLE
+        ) {
+            return -1; /* case-ignorable */
+        } else {
+            return 0; /* c is neither cased nor case-ignorable */
+        }
+    }
+
+    /** @return NO_DOT, SOFT_DOTTED, ABOVE, OTHER_ACCENT */
+    public final int getDotType(int c) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            return props&DOT_MASK;
+        } else {
+            return (exceptions[getExceptionsOffset(props)]>>EXC_DOT_SHIFT)&DOT_MASK;
+        }
+    }
+
+    public final boolean isSoftDotted(int c) {
+        return getDotType(c)==SOFT_DOTTED;
+    }
+
+    public final boolean isCaseSensitive(int c) {
+        return (trie.getCodePointValue(c)&SENSITIVE)!=0;
+    }
+
+    // string casing ------------------------------------------------------- ***
+
+    /*
+     * These internal functions form the core of string case mappings.
+     * They map single code points to result code points or strings and take
+     * all necessary conditions (context, locale ID, options) into account.
+     *
+     * They do not iterate over the source or write to the destination
+     * so that the same functions are useful for non-standard string storage,
+     * such as in a Replaceable (for Transliterator) or UTF-8/32 strings etc.
+     * For the same reason, the "surrounding text" context is passed in as a
+     * ContextIterator which does not make any assumptions about
+     * the underlying storage.
+     *
+     * This section contains helper functions that check for conditions
+     * in the input text surrounding the current code point
+     * according to SpecialCasing.txt.
+     *
+     * Each helper function gets the index
+     * - after the current code point if it looks at following text
+     * - before the current code point if it looks at preceding text
+     *
+     * Unicode 3.2 UAX 21 "Case Mappings" defines the conditions as follows:
+     *
+     * Final_Sigma
+     *   C is preceded by a sequence consisting of
+     *     a cased letter and a case-ignorable sequence,
+     *   and C is not followed by a sequence consisting of
+     *     an ignorable sequence and then a cased letter.
+     *
+     * More_Above
+     *   C is followed by one or more characters of combining class 230 (ABOVE)
+     *   in the combining character sequence.
+     *
+     * After_Soft_Dotted
+     *   The last preceding character with combining class of zero before C
+     *   was Soft_Dotted,
+     *   and there is no intervening combining character class 230 (ABOVE).
+     *
+     * Before_Dot
+     *   C is followed by combining dot above (U+0307).
+     *   Any sequence of characters with a combining class that is neither 0 nor 230
+     *   may intervene between the current character and the combining dot above.
+     *
+     * The erratum from 2002-10-31 adds the condition
+     *
+     * After_I
+     *   The last preceding base character was an uppercase I, and there is no
+     *   intervening combining character class 230 (ABOVE).
+     *
+     *   (See Jitterbug 2344 and the comments on After_I below.)
+     *
+     * Helper definitions in Unicode 3.2 UAX 21:
+     *
+     * D1. A character C is defined to be cased
+     *     if it meets any of the following criteria:
+     *
+     *   - The general category of C is Titlecase Letter (Lt)
+     *   - In [CoreProps], C has one of the properties Uppercase, or Lowercase
+     *   - Given D = NFD(C), then it is not the case that:
+     *     D = UCD_lower(D) = UCD_upper(D) = UCD_title(D)
+     *     (This third criterium does not add any characters to the list
+     *      for Unicode 3.2. Ignored.)
+     *
+     * D2. A character C is defined to be case-ignorable
+     *     if it meets either of the following criteria:
+     *
+     *   - The general category of C is
+     *     Nonspacing Mark (Mn), or Enclosing Mark (Me), or Format Control (Cf), or
+     *     Letter Modifier (Lm), or Symbol Modifier (Sk)
+     *   - C is one of the following characters 
+     *     U+0027 APOSTROPHE
+     *     U+00AD SOFT HYPHEN (SHY)
+     *     U+2019 RIGHT SINGLE QUOTATION MARK
+     *            (the preferred character for apostrophe)
+     *
+     * D3. A case-ignorable sequence is a sequence of
+     *     zero or more case-ignorable characters.
+     */
+
+    /**
+     * Iterator for string case mappings, which need to look at the
+     * context (surrounding text) of a given character for conditional mappings.
+     *
+     * The iterator only needs to go backward or forward away from the
+     * character in question. It does not use any indexes on this interface.
+     * It does not support random access or an arbitrary change of
+     * iteration direction.
+     *
+     * The code point being case-mapped itself is never returned by
+     * this iterator.
+     */
+    public interface ContextIterator {
+        /**
+         * Reset the iterator for forward or backward iteration.
+         * @param dir >0: Begin iterating forward from the first code point
+         * after the one that is being case-mapped.
+         *            <0: Begin iterating backward from the first code point
+         * before the one that is being case-mapped.   
+         */
+        public void reset(int dir);
+        /**
+         * Iterate and return the next code point, moving in the direction
+         * determined by the reset() call.
+         * @return Next code point, or <0 when the iteration is done. 
+         */
+        public int next();
+    }
+
+    /**
+     * For string case mappings, a single character (a code point) is mapped
+     * either to itself (in which case in-place mapping functions do nothing),
+     * or to another single code point, or to a string.
+     * Aside from the string contents, these are indicated with a single int
+     * value as follows:
+     *
+     * Mapping to self: Negative values (~self instead of -self to support U+0000)
+     *
+     * Mapping to another code point: Positive values >MAX_STRING_LENGTH
+     *
+     * Mapping to a string: The string length (0..MAX_STRING_LENGTH) is
+     * returned. Note that the string result may indeed have zero length.
+     */
+    public static final int MAX_STRING_LENGTH=0x1f;
+
+    private static final int LOC_UNKNOWN=0;
+    private static final int LOC_ROOT=1;
+    private static final int LOC_TURKISH=2;
+    private static final int LOC_LITHUANIAN=3;
+
+    /*
+     * Checks and caches the type of locale ID as it is relevant for case mapping.
+     * If the locCache is not null, then it must be initialized with locCache[0]=0 .
+     */
+    private static final int getCaseLocale(ULocale locale, int[] locCache) {
+        int result;
+
+        if(locCache!=null && (result=locCache[0])!=LOC_UNKNOWN) {
+            return result;
+        }
+
+        result=LOC_ROOT;
+
+        String language=locale.getLanguage();
+        if(language.equals("tr") || language.equals("tur") || language.equals("az") || language.equals("aze")) {
+            result=LOC_TURKISH;
+        } else if(language.equals("lt") || language.equals("lit")) {
+            result=LOC_LITHUANIAN;
+        }
+
+        if(locCache!=null) {
+            locCache[0]=result;
+        }
+        return result;
+    }
+
+    /* Is followed by {case-ignorable}* cased  ? (dir determines looking forward/backward) */
+    private final boolean isFollowedByCasedLetter(ContextIterator iter, int dir) {
+        int c;
+        int props;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(dir); (c=iter.next())>=0;) {
+            props=trie.getCodePointValue(c);
+            if(getTypeFromProps(props)!=NONE) {
+                return true; /* followed by cased letter */
+            } else if(c==0x307 || (props&(EXCEPTION|CASE_IGNORABLE))==CASE_IGNORABLE) {
+                /* case-ignorable, continue with the loop */
+            } else {
+                return false; /* not ignorable */
+            }
+        }
+
+        return false; /* not followed by cased letter */
+    }
+
+    /* Is preceded by Soft_Dotted character with no intervening cc=230 ? */
+    private final boolean isPrecededBySoftDotted(ContextIterator iter) {
+        int c;
+        int dotType;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(-1); (c=iter.next())>=0;) {
+            dotType=getDotType(c);
+            if(dotType==SOFT_DOTTED) {
+                return true; /* preceded by TYPE_i */
+            } else if(dotType!=OTHER_ACCENT) {
+                return false; /* preceded by different base character (not TYPE_i), or intervening cc==230 */
+            }
+        }
+
+        return false; /* not preceded by TYPE_i */
+    }
+
+    /*
+     * See Jitterbug 2344:
+     * The condition After_I for Turkic-lowercasing of U+0307 combining dot above
+     * is checked in ICU 2.0, 2.1, 2.6 but was not in 2.2 & 2.4 because
+     * we made those releases compatible with Unicode 3.2 which had not fixed
+     * a related bug in SpecialCasing.txt.
+     *
+     * From the Jitterbug 2344 text:
+     * ... this bug is listed as a Unicode erratum
+     * from 2002-10-31 at http://www.unicode.org/uni2errata/UnicodeErrata.html
+     * <quote>
+     * There are two errors in SpecialCasing.txt.
+     * 1. Missing semicolons on two lines. ... [irrelevant for ICU]
+     * 2. An incorrect context definition. Correct as follows:
+     * < 0307; ; 0307; 0307; tr After_Soft_Dotted; # COMBINING DOT ABOVE
+     * < 0307; ; 0307; 0307; az After_Soft_Dotted; # COMBINING DOT ABOVE
+     * ---
+     * > 0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
+     * > 0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
+     * where the context After_I is defined as:
+     * The last preceding base character was an uppercase I, and there is no
+     * intervening combining character class 230 (ABOVE).
+     * </quote>
+     *
+     * Note that SpecialCasing.txt even in Unicode 3.2 described the condition as:
+     *
+     * # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
+     * # This matches the behavior of the canonically equivalent I-dot_above
+     *
+     * See also the description in this place in older versions of uchar.c (revision 1.100).
+     *
+     * Markus W. Scherer 2003-feb-15
+     */
+
+    /* Is preceded by base character 'I' with no intervening cc=230 ? */
+    private final boolean isPrecededBy_I(ContextIterator iter) {
+        int c;
+        int dotType;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(-1); (c=iter.next())>=0;) {
+            if(c==0x49) {
+                return true; /* preceded by I */
+            }
+            dotType=getDotType(c);
+            if(dotType!=OTHER_ACCENT) {
+                return false; /* preceded by different base character (not I), or intervening cc==230 */
+            }
+        }
+
+        return false; /* not preceded by I */
+    }
+
+    /* Is followed by one or more cc==230 ? */
+    private final boolean isFollowedByMoreAbove(ContextIterator iter) {
+        int c;
+        int dotType;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(1); (c=iter.next())>=0;) {
+            dotType=getDotType(c);
+            if(dotType==ABOVE) {
+                return true; /* at least one cc==230 following */
+            } else if(dotType!=OTHER_ACCENT) {
+                return false; /* next base character, no more cc==230 following */
+            }
+        }
+
+        return false; /* no more cc==230 following */
+    }
+
+    /* Is followed by a dot above (without cc==230 in between) ? */
+    private final boolean isFollowedByDotAbove(ContextIterator iter) {
+        int c;
+        int dotType;
+
+        if(iter==null) {
+            return false;
+        }
+
+        for(iter.reset(1); (c=iter.next())>=0; ) {
+            if(c==0x307) {
+                return true;
+            }
+            dotType=getDotType(c);
+            if(dotType!=OTHER_ACCENT) {
+                return false; /* next base character or cc==230 in between */
+            }
+        }
+
+        return false; /* no dot above following */
+    }
+
+    private static final String
+        iDot=       "i\u0307",
+        jDot=       "j\u0307",
+        iOgonekDot= "\u012f\u0307",
+        iDotGrave=  "i\u0307\u0300",
+        iDotAcute=  "i\u0307\u0301",
+        iDotTilde=  "i\u0307\u0303";
+
+    /**
+     * Get the full lowercase mapping for c.
+     *
+     * @param c Character to be mapped.
+     * @param iter Character iterator, used for context-sensitive mappings.
+     *             See ContextIterator for details.
+     *             If iter==null then a context-independent result is returned.
+     * @param out If the mapping result is a string, then it is appended to out.
+     * @param locale Locale ID for locale-dependent mappings.
+     * @param locCache Initialize locCache[0] to 0; may be used to cache the result of parsing
+     *                 the locale ID for subsequent calls.
+     *                 Can be null.
+     * @return Output code point or string length, see MAX_STRING_LENGTH.
+     *
+     * @see ContextIterator
+     * @see #MAX_STRING_LENGTH
+     * @internal
+     */
+    public final int toFullLower(int c, ContextIterator iter,
+                                 StringBuffer out,
+                                 ULocale locale, int[] locCache) {
+        int result, props;
+
+        result=c;
+        props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)>=UPPER) {
+                result=c+getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props), excOffset2;
+            int excWord=exceptions[excOffset++];
+            int full;
+
+            excOffset2=excOffset;
+
+            if((excWord&EXC_CONDITIONAL_SPECIAL)!=0) {
+                /* use hardcoded conditions and mappings */
+                int loc=getCaseLocale(locale, locCache);
+
+                /*
+                 * Test for conditional mappings first
+                 *   (otherwise the unconditional default mappings are always taken),
+                 * then test for characters that have unconditional mappings in SpecialCasing.txt,
+                 * then get the UnicodeData.txt mappings.
+                 */
+                if( loc==LOC_LITHUANIAN &&
+                        /* base characters, find accents above */
+                        (((c==0x49 || c==0x4a || c==0x12e) &&
+                            isFollowedByMoreAbove(iter)) ||
+                        /* precomposed with accent above, no need to find one */
+                        (c==0xcc || c==0xcd || c==0x128))
+                ) {
+                    /*
+                        # Lithuanian
+
+                        # Lithuanian retains the dot in a lowercase i when followed by accents.
+
+                        # Introduce an explicit dot above when lowercasing capital I's and J's
+                        # whenever there are more accents above.
+                        # (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
+
+                        0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
+                        004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
+                        012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
+                        00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
+                        00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
+                        0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
+                     */
+                    switch(c) {
+                    case 0x49:  /* LATIN CAPITAL LETTER I */
+                        out.append(iDot);
+                        return 2;
+                    case 0x4a:  /* LATIN CAPITAL LETTER J */
+                        out.append(jDot);
+                        return 2;
+                    case 0x12e: /* LATIN CAPITAL LETTER I WITH OGONEK */
+                        out.append(iOgonekDot);
+                        return 2;
+                    case 0xcc:  /* LATIN CAPITAL LETTER I WITH GRAVE */
+                        out.append(iDotGrave);
+                        return 3;
+                    case 0xcd:  /* LATIN CAPITAL LETTER I WITH ACUTE */
+                        out.append(iDotAcute);
+                        return 3;
+                    case 0x128: /* LATIN CAPITAL LETTER I WITH TILDE */
+                        out.append(iDotTilde);
+                        return 3;
+                    default:
+                        return 0; /* will not occur */
+                    }
+                /* # Turkish and Azeri */
+                } else if(loc==LOC_TURKISH && c==0x130) {
+                    /*
+                        # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+                        # The following rules handle those cases.
+
+                        0130; 0069; 0130; 0130; tr # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                        0130; 0069; 0130; 0130; az # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                     */
+                    return 0x69;
+                } else if(loc==LOC_TURKISH && c==0x307 && isPrecededBy_I(iter)) {
+                    /*
+                        # When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
+                        # This matches the behavior of the canonically equivalent I-dot_above
+
+                        0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
+                        0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
+                     */
+                    return 0; /* remove the dot (continue without output) */
+                } else if(loc==LOC_TURKISH && c==0x49 && !isFollowedByDotAbove(iter)) {
+                    /*
+                        # When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
+
+                        0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
+                        0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
+                     */
+                    return 0x131;
+                } else if(c==0x130) {
+                    /*
+                        # Preserve canonical equivalence for I with dot. Turkic is handled below.
+
+                        0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+                     */
+                    out.append(iDot);
+                    return 2;
+                } else if(  c==0x3a3 &&
+                            !isFollowedByCasedLetter(iter, 1) &&
+                            isFollowedByCasedLetter(iter, -1) /* -1=preceded */
+                ) {
+                    /* greek capital sigma maps depending on surrounding cased letters (see SpecialCasing.txt) */
+                    /*
+                        # Special case for final form of sigma
+
+                        03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
+                     */
+                    return 0x3c2; /* greek small final sigma */
+                } else {
+                    /* no known conditional special case mapping, use a normal mapping */
+                }
+            } else if(hasSlot(excWord, EXC_FULL_MAPPINGS)) {
+                long value=getSlotValueAndOffset(excWord, EXC_FULL_MAPPINGS, excOffset);
+                full=(int)value&FULL_LOWER;
+                if(full!=0) {
+                    /* start of full case mapping strings */
+                    excOffset=(int)(value>>32)+1;
+
+                    /* set the output pointer to the lowercase mapping */
+                    out.append(new String(exceptions, excOffset, full));
+
+                    /* return the string length */
+                    return full;
+                }
+            }
+
+            if(hasSlot(excWord, EXC_LOWER)) {
+                result=getSlotValue(excWord, EXC_LOWER, excOffset2);
+            }
+        }
+
+        return (result==c) ? ~result : result;
+    }
+
+    /* internal */
+    private final int toUpperOrTitle(int c, ContextIterator iter,
+                                     StringBuffer out,
+                                     ULocale locale, int[] locCache,
+                                     boolean upperNotTitle) {
+        int result;
+        int props;
+
+        result=c;
+        props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)==LOWER) {
+                result=c+getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props), excOffset2;
+            int excWord=exceptions[excOffset++];
+            int full, index;
+
+            excOffset2=excOffset;
+
+            if((excWord&EXC_CONDITIONAL_SPECIAL)!=0) {
+                /* use hardcoded conditions and mappings */
+                int loc=getCaseLocale(locale, locCache);
+
+                if(loc==LOC_TURKISH && c==0x69) {
+                    /*
+                        # Turkish and Azeri
+
+                        # I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+                        # The following rules handle those cases.
+
+                        # When uppercasing, i turns into a dotted capital I
+
+                        0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
+                        0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
+                    */
+                    return 0x130;
+                } else if(loc==LOC_LITHUANIAN && c==0x307 && isPrecededBySoftDotted(iter)) {
+                    /*
+                        # Lithuanian
+
+                        # Lithuanian retains the dot in a lowercase i when followed by accents.
+
+                        # Remove DOT ABOVE after "i" with upper or titlecase
+
+                        0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
+                     */
+                    return 0; /* remove the dot (continue without output) */
+                } else {
+                    /* no known conditional special case mapping, use a normal mapping */
+                }
+            } else if(hasSlot(excWord, EXC_FULL_MAPPINGS)) {
+                long value=getSlotValueAndOffset(excWord, EXC_FULL_MAPPINGS, excOffset);
+                full=(int)value&0xffff;
+
+                /* start of full case mapping strings */
+                excOffset=(int)(value>>32)+1;
+
+                /* skip the lowercase and case-folding result strings */
+                excOffset+=full&FULL_LOWER;
+                full>>=4;
+                excOffset+=full&0xf;
+                full>>=4;
+
+                if(upperNotTitle) {
+                    full&=0xf;
+                } else {
+                    /* skip the uppercase result string */
+                    excOffset+=full&0xf;
+                    full=(full>>4)&0xf;
+                }
+
+                if(full!=0) {
+                    /* set the output pointer to the result string */
+                    out.append(new String(exceptions, excOffset, full));
+
+                    /* return the string length */
+                    return full;
+                }
+            }
+
+            if(!upperNotTitle && hasSlot(excWord, EXC_TITLE)) {
+                index=EXC_TITLE;
+            } else if(hasSlot(excWord, EXC_UPPER)) {
+                /* here, titlecase is same as uppercase */
+                index=EXC_UPPER;
+            } else {
+                return ~c;
+            }
+            result=getSlotValue(excWord, index, excOffset2);
+        }
+
+        return (result==c) ? ~result : result;
+    }
+
+    public final int toFullUpper(int c, ContextIterator iter,
+                                 StringBuffer out,
+                                 ULocale locale, int[] locCache) {
+        return toUpperOrTitle(c, iter, out, locale, locCache, true);
+    }
+
+    public final int toFullTitle(int c, ContextIterator iter,
+                                 StringBuffer out,
+                                 ULocale locale, int[] locCache) {
+        return toUpperOrTitle(c, iter, out, locale, locCache, false);
+    }
+
+    /* case folding ------------------------------------------------------------- */
+
+    /*
+     * Case folding is similar to lowercasing.
+     * The result may be a simple mapping, i.e., a single code point, or
+     * a full mapping, i.e., a string.
+     * If the case folding for a code point is the same as its simple (1:1) lowercase mapping,
+     * then only the lowercase mapping is stored.
+     *
+     * Some special cases are hardcoded because their conditions cannot be
+     * parsed and processed from CaseFolding.txt.
+     *
+     * Unicode 3.2 CaseFolding.txt specifies for its status field:
+
+    # C: common case folding, common mappings shared by both simple and full mappings.
+    # F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces.
+    # S: simple case folding, mappings to single characters where different from F.
+    # T: special case for uppercase I and dotted uppercase I
+    #    - For non-Turkic languages, this mapping is normally not used.
+    #    - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters.
+    #
+    # Usage:
+    #  A. To do a simple case folding, use the mappings with status C + S.
+    #  B. To do a full case folding, use the mappings with status C + F.
+    #
+    #    The mappings with status T can be used or omitted depending on the desired case-folding
+    #    behavior. (The default option is to exclude them.)
+
+     * Unicode 3.2 has 'T' mappings as follows:
+
+    0049; T; 0131; # LATIN CAPITAL LETTER I
+    0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+     * while the default mappings for these code points are:
+
+    0049; C; 0069; # LATIN CAPITAL LETTER I
+    0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+     * U+0130 has no simple case folding (simple-case-folds to itself).
+     */
+
+    /**
+     * Bit mask for getting just the options from a string compare options word
+     * that are relevant for case folding (of a single string or code point).
+     * @internal
+     */
+    private static final int FOLD_CASE_OPTIONS_MASK = 0xff;
+    
+    /* return the simple case folding mapping for c */
+    public final int fold(int c, int options) {
+        int props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)>=UPPER) {
+                c+=getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props);
+            int excWord=exceptions[excOffset++];
+            int index;
+            if((excWord&EXC_CONDITIONAL_FOLD)!=0) {
+                /* special case folding mappings, hardcoded */
+                if((options&FOLD_CASE_OPTIONS_MASK)==UCharacter.FOLD_CASE_DEFAULT) {
+                    /* default mappings */
+                    if(c==0x49) {
+                        /* 0049; C; 0069; # LATIN CAPITAL LETTER I */
+                        return 0x69;
+                    } else if(c==0x130) {
+                        /* no simple case folding for U+0130 */
+                        return c;
+                    }
+                } else {
+                    /* Turkic mappings */
+                    if(c==0x49) {
+                        /* 0049; T; 0131; # LATIN CAPITAL LETTER I */
+                        return 0x131;
+                    } else if(c==0x130) {
+                        /* 0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE */
+                        return 0x69;
+                    }
+                }
+            }
+            if(hasSlot(excWord, EXC_FOLD)) {
+                index=EXC_FOLD;
+            } else if(hasSlot(excWord, EXC_LOWER)) {
+                index=EXC_LOWER;
+            } else {
+                return c;
+            }
+            c=getSlotValue(excWord, index, excOffset);
+        }
+        return c;
+    }
+
+    /*
+     * Issue for canonical caseless match (UAX #21):
+     * Turkic casefolding (using "T" mappings in CaseFolding.txt) does not preserve
+     * canonical equivalence, unlike default-option casefolding.
+     * For example, I-grave and I + grave fold to strings that are not canonically
+     * equivalent.
+     * For more details, see the comment in unorm_compare() in unorm.cpp
+     * and the intermediate prototype changes for Jitterbug 2021.
+     * (For example, revision 1.104 of uchar.c and 1.4 of CaseFolding.txt.)
+     *
+     * This did not get fixed because it appears that it is not possible to fix
+     * it for uppercase and lowercase characters (I-grave vs. i-grave)
+     * together in a way that they still fold to common result strings.
+     */
+
+    public final int toFullFolding(int c, StringBuffer out, int options) {
+        int result;
+        int props;
+
+        result=c;
+        props=trie.getCodePointValue(c);
+        if(!propsHasException(props)) {
+            if(getTypeFromProps(props)>=UPPER) {
+                result=c+getDelta(props);
+            }
+        } else {
+            int excOffset=getExceptionsOffset(props), excOffset2;
+            int excWord=exceptions[excOffset++];
+            int full, index;
+
+            excOffset2=excOffset;
+
+            if((excWord&EXC_CONDITIONAL_FOLD)!=0) {
+                /* use hardcoded conditions and mappings */
+                if((options&FOLD_CASE_OPTIONS_MASK)==UCharacter.FOLD_CASE_DEFAULT) {
+                    /* default mappings */
+                    if(c==0x49) {
+                        /* 0049; C; 0069; # LATIN CAPITAL LETTER I */
+                        return 0x69;
+                    } else if(c==0x130) {
+                        /* 0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE */
+                        out.append(iDot);
+                        return 2;
+                    }
+                } else {
+                    /* Turkic mappings */
+                    if(c==0x49) {
+                        /* 0049; T; 0131; # LATIN CAPITAL LETTER I */
+                        return 0x131;
+                    } else if(c==0x130) {
+                        /* 0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE */
+                        return 0x69;
+                    }
+                }
+            } else if(hasSlot(excWord, EXC_FULL_MAPPINGS)) {
+                long value=getSlotValueAndOffset(excWord, EXC_FULL_MAPPINGS, excOffset);
+                full=(int)value&0xffff;
+
+                /* start of full case mapping strings */
+                excOffset=(int)(value>>32)+1;
+
+                /* skip the lowercase result string */
+                excOffset+=full&FULL_LOWER;
+                full=(full>>4)&0xf;
+
+                if(full!=0) {
+                    /* set the output pointer to the result string */
+                    out.append(new String(exceptions, excOffset, full));
+
+                    /* return the string length */
+                    return full;
+                }
+            }
+
+            if(hasSlot(excWord, EXC_FOLD)) {
+                index=EXC_FOLD;
+            } else if(hasSlot(excWord, EXC_LOWER)) {
+                index=EXC_LOWER;
+            } else {
+                return ~c;
+            }
+            result=getSlotValue(excWord, index, excOffset2);
+        }
+
+        return (result==c) ? ~result : result;
+    }
+
+    // data members -------------------------------------------------------- ***
+    private int indexes[];
+    private char exceptions[];
+    private char unfold[];
+
+    private CharTrie trie;
+
+    // data format constants ----------------------------------------------- ***
+    private static final String DATA_NAME="ucase";
+    private static final String DATA_TYPE="icu";
+    private static final String DATA_FILE_NAME=DATA_NAME+"."+DATA_TYPE;
+
+    /* format "cAsE" */
+    private static final byte FMT[]={ 0x63, 0x41, 0x53, 0x45 };
+
+    /* indexes into indexes[] */
+    private static final int IX_INDEX_TOP=0;
+    //private static final int IX_LENGTH=1;
+    //private static final int IX_TRIE_SIZE=2;
+    private static final int IX_EXC_LENGTH=3;
+    private static final int IX_UNFOLD_LENGTH=4;
+
+    //private static final int IX_MAX_FULL_LENGTH=15;
+    private static final int IX_TOP=16;
+
+    // definitions for 16-bit case properties word ------------------------- ***
+
+    /* 2-bit constants for types of cased characters */
+    public static final int TYPE_MASK=3;
+    public static final int NONE=0;
+    public static final int LOWER=1;
+    public static final int UPPER=2;
+    public static final int TITLE=3;
+
+    private static final int getTypeFromProps(int props) {
+        return props&TYPE_MASK;
+    }
+
+    private static final int SENSITIVE=     4;
+    private static final int EXCEPTION=     8;
+
+    private static final int DOT_MASK=      0x30;
+    //private static final int NO_DOT=        0;      /* normal characters with cc=0 */
+    private static final int SOFT_DOTTED=   0x10;   /* soft-dotted characters with cc=0 */
+    private static final int ABOVE=         0x20;   /* "above" accents with cc=230 */
+    private static final int OTHER_ACCENT=  0x30;   /* other accent character (0<cc!=230) */
+
+    /* no exception: bits 15..6 are a 10-bit signed case mapping delta */
+    private static final int DELTA_SHIFT=   6;
+    //private static final int DELTA_MASK=    0xffc0;
+    //private static final int MAX_DELTA=     0x1ff;
+    //private static final int MIN_DELTA=     (-MAX_DELTA-1);
+
+    private static final int getDelta(int props) {
+        return (short)props>>DELTA_SHIFT;
+    }
+
+    /* case-ignorable uses one of the delta bits, see gencase/store.c */
+    private static final int CASE_IGNORABLE=0x40;
+
+    /* exception: bits 15..4 are an unsigned 12-bit index into the exceptions array */
+    private static final int EXC_SHIFT=     4;
+    //private static final int EXC_MASK=      0xfff0;
+    //private static final int MAX_EXCEPTIONS=0x1000;
+
+    /* definitions for 16-bit main exceptions word ------------------------------ */
+
+    /* first 8 bits indicate values in optional slots */
+    private static final int EXC_LOWER=0;
+    private static final int EXC_FOLD=1;
+    private static final int EXC_UPPER=2;
+    private static final int EXC_TITLE=3;
+    //private static final int EXC_4=4;           /* reserved */
+    //private static final int EXC_5=5;           /* reserved */
+    private static final int EXC_CLOSURE=6;
+    private static final int EXC_FULL_MAPPINGS=7;
+    //private static final int EXC_ALL_SLOTS=8;   /* one past the last slot */
+
+    /* each slot is 2 uint16_t instead of 1 */
+    private static final int EXC_DOUBLE_SLOTS=          0x100;
+
+    /* reserved: exception bits 11..9 */
+
+    /* EXC_DOT_MASK=DOT_MASK<<EXC_DOT_SHIFT */
+    private static final int EXC_DOT_SHIFT=8;
+
+    /* normally stored in the main word, but pushed out for larger exception indexes */
+    //private static final int EXC_DOT_MASK=              0x3000;
+    //private static final int EXC_NO_DOT=                0;
+    //private static final int EXC_SOFT_DOTTED=           0x1000;
+    //private static final int EXC_ABOVE=                 0x2000; /* "above" accents with cc=230 */
+    //private static final int EXC_OTHER_ACCENT=          0x3000; /* other character (0<cc!=230) */
+
+    /* complex/conditional mappings */
+    private static final int EXC_CONDITIONAL_SPECIAL=   0x4000;
+    private static final int EXC_CONDITIONAL_FOLD=      0x8000;
+
+    /* definitions for lengths word for full case mappings */
+    private static final int FULL_LOWER=    0xf;
+    //private static final int FULL_FOLDING=  0xf0;
+    //private static final int FULL_UPPER=    0xf00;
+    //private static final int FULL_TITLE=    0xf000;
+
+    /* maximum lengths */
+    //private static final int FULL_MAPPINGS_MAX_LENGTH=4*0xf;
+    private static final int CLOSURE_MAX_LENGTH=0xf;
+
+    /* constants for reverse case folding ("unfold") data */
+    private static final int UNFOLD_ROWS=0;
+    private static final int UNFOLD_ROW_WIDTH=1;
+    private static final int UNFOLD_STRING_WIDTH=2;
+}
diff --git a/src/com/ibm/icu/impl/UCharArrayIterator.java b/src/com/ibm/icu/impl/UCharArrayIterator.java
new file mode 100644
index 0000000..84b0b10
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharArrayIterator.java
@@ -0,0 +1,84 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.*;
+
+
+/**
+ * @author Doug Felt
+ *
+ */
+
+public final class UCharArrayIterator extends UCharacterIterator {
+    private final char[] text;
+    private final int start;
+    private final int limit;
+    private int pos;
+
+    public UCharArrayIterator(char[] text, int start, int limit) {
+        if (start < 0 || limit > text.length || start > limit) {
+            throw new IllegalArgumentException("start: " + start + " or limit: "
+                                               + limit + " out of range [0, " 
+                                               + text.length + ")");
+        }
+        this.text = text;
+        this.start = start;
+        this.limit = limit;
+
+        this.pos = start;
+    }
+
+    public int current() {
+        return pos < limit ? text[pos] : DONE;
+    }
+
+    public int getLength() {
+        return limit - start;
+    }
+
+    public int getIndex() {
+        return pos - start;
+    }
+
+    public int next() {
+        return pos < limit ? text[pos++] : DONE;
+    }
+
+    public int previous() {
+        return pos > start ? text[--pos] : DONE;
+    }
+
+    public void setIndex(int index) {
+        if (index < 0 || index > limit - start) {
+            throw new IndexOutOfBoundsException("index: " + index + 
+                                                " out of range [0, " 
+                                                + (limit - start) + ")");
+        }
+        pos = start + index;
+    }
+
+    public int getText(char[] fillIn, int offset) {
+        int len = limit - start;
+        System.arraycopy(text, start, fillIn, offset, len);
+        return len;
+    }
+
+    /**
+     * Creates a copy of this iterator, does not clone the underlying 
+     * <code>Replaceable</code>object
+     * @return copy of this iterator
+     */
+    public Object clone(){
+        try {
+          return super.clone();
+        } catch (CloneNotSupportedException e) {
+            return null; // never invoked
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java b/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
new file mode 100644
index 0000000..9ca4900
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
@@ -0,0 +1,141 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.impl;
+
+import java.text.CharacterIterator;
+
+import com.ibm.icu.text.*;
+
+/**
+ * This class is a wrapper around UCharacterIterator and implements the 
+ * CharacterIterator protocol
+ * @author ram
+ */
+public class UCharacterIteratorWrapper implements CharacterIterator{
+    
+    public UCharacterIteratorWrapper(UCharacterIterator iter){
+        this.iterator = iter;
+    }
+    
+    private UCharacterIterator iterator;
+
+
+    /**
+     * Sets the position to getBeginIndex() and returns the character at that
+     * position.
+     * @return the first character in the text, or DONE if the text is empty
+     * @see #getBeginIndex()
+     */
+    public char first(){
+        //UCharacterIterator always iterates from 0 to length
+        iterator.setToStart();
+        return (char)iterator.current();
+    }
+
+    /**
+     * Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty)
+     * and returns the character at that position.
+     * @return the last character in the text, or DONE if the text is empty
+     * @see #getEndIndex()
+     */
+    public char last(){
+        iterator.setToLimit();
+        return (char)iterator.previous();
+    }
+
+    /**
+     * Gets the character at the current position (as returned by getIndex()).
+     * @return the character at the current position or DONE if the current
+     * position is off the end of the text.
+     * @see #getIndex()
+     */
+    public char current(){
+        return (char) iterator.current();
+    }
+
+    /**
+     * Increments the iterator's index by one and returns the character
+     * at the new index.  If the resulting index is greater or equal
+     * to getEndIndex(), the current index is reset to getEndIndex() and
+     * a value of DONE is returned.
+     * @return the character at the new position or DONE if the new
+     * position is off the end of the text range.
+     */
+    public char next(){
+        //pre-increment
+        iterator.next();
+        return (char) iterator.current();
+    }
+
+    /**
+     * Decrements the iterator's index by one and returns the character
+     * at the new index. If the current index is getBeginIndex(), the index
+     * remains at getBeginIndex() and a value of DONE is returned.
+     * @return the character at the new position or DONE if the current
+     * position is equal to getBeginIndex().
+     */
+    public char previous(){
+        //pre-decrement
+        return (char) iterator.previous();
+    }
+
+    /**
+     * Sets the position to the specified position in the text and returns that
+     * character.
+     * @param position the position within the text.  Valid values range from
+     * getBeginIndex() to getEndIndex().  An IllegalArgumentException is thrown
+     * if an invalid value is supplied.
+     * @return the character at the specified position or DONE if the specified position is equal to getEndIndex()
+     */
+    public char setIndex(int position){
+        iterator.setIndex(position);
+        return (char) iterator.current();
+    }
+
+    /**
+     * Returns the start index of the text.
+     * @return the index at which the text begins.
+     */
+    public int getBeginIndex(){
+        //UCharacterIterator always starts from 0
+        return 0;
+    }
+
+    /**
+     * Returns the end index of the text.  This index is the index of the first
+     * character following the end of the text.
+     * @return the index after the last character in the text
+     */
+    public int getEndIndex(){
+        return iterator.getLength();
+    }
+
+    /**
+     * Returns the current index.
+     * @return the current index.
+     */
+    public int getIndex(){
+        return iterator.getIndex();
+    }
+
+    /**
+     * Create a copy of this iterator
+     * @return A copy of this
+     */
+    public Object clone(){
+        try {
+            UCharacterIteratorWrapper result = (UCharacterIteratorWrapper) super.clone();
+            result.iterator = (UCharacterIterator)this.iterator.clone();
+            return result;
+        } catch (CloneNotSupportedException e) {      
+            return null; // only invoked if bad underlying character iterator
+        }
+    }   
+
+}
+
diff --git a/src/com/ibm/icu/impl/UCharacterName.java b/src/com/ibm/icu/impl/UCharacterName.java
new file mode 100644
index 0000000..183c190
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterName.java
@@ -0,0 +1,1669 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+
+/**
+* Internal class to manage character names.
+* Since data for names are stored
+* in an array of char, by default indexes used in this class is refering to
+* a 2 byte count, unless otherwise stated. Cases where the index is refering
+* to a byte count, the index is halved and depending on whether the index is
+* even or odd, the MSB or LSB of the result char at the halved index is
+* returned. For indexes to an array of int, the index is multiplied by 2,
+* result char at the multiplied index and its following char is returned as an
+* int.
+* <a href=../lang/UCharacter.html>UCharacter</a> acts as a public facade for this class
+* Note : 0 - 0x1F are control characters without names in Unicode 3.0
+* @author Syn Wee Quek
+* @since nov0700
+*/
+
+public final class UCharacterName
+{
+    // public data members ----------------------------------------------
+
+    /**
+    * Number of lines per group
+    * 1 << GROUP_SHIFT_
+    */
+    public static final int LINES_PER_GROUP_ = 1 << 5;
+    /**
+     * Maximum number of groups
+     */
+    public int m_groupcount_ = 0;
+
+    // public methods ---------------------------------------------------
+
+    /**
+     * Gets the only instance of UCharacterName
+     * @return only instance of UCharacterName
+     * @exception MissingResourceException thrown when reading of name data fails
+     */
+    public static UCharacterName getInstance()
+    {
+        if (INSTANCE_ == null) {
+            try {
+                INSTANCE_ = new UCharacterName();
+            }catch(IOException e){
+                throw new MissingResourceException("Could not construct UCharacterName. Missing unames.icu","","");
+            }
+            catch (Exception e) {
+                throw new MissingResourceException(e.getMessage(),"","");
+            }
+        }
+        return INSTANCE_;
+    }
+
+    /**
+    * Retrieve the name of a Unicode code point.
+    * Depending on <code>choice</code>, the character name written into the
+    * buffer is the "modern" name or the name that was defined in Unicode
+    * version 1.0.
+    * The name contains only "invariant" characters
+    * like A-Z, 0-9, space, and '-'.
+    *
+    * @param ch the code point for which to get the name.
+    * @param choice Selector for which name to get.
+    * @return if code point is above 0x1fff, null is returned
+    */
+    public String getName(int ch, int choice)
+    {
+        if (ch < UCharacter.MIN_VALUE || ch > UCharacter.MAX_VALUE ||
+            choice > UCharacterNameChoice.CHAR_NAME_CHOICE_COUNT) {
+            return null;
+        }
+
+        String result = null;
+
+        result = getAlgName(ch, choice);
+
+        // getting normal character name
+        if (result == null || result.length() == 0) {
+            if (choice == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                result = getExtendedName(ch);
+            } else {
+                result = getGroupName(ch, choice);
+            }
+        }
+
+        return result;
+    }
+
+    /**
+    * Find a character by its name and return its code point value
+    * @param choice selector to indicate if argument name is a Unicode 1.0
+    *        or the most current version
+    * @param name the name to search for
+    * @return code point
+    */
+    public int getCharFromName(int choice, String name)
+    {
+        // checks for illegal arguments
+        if (choice >= UCharacterNameChoice.CHAR_NAME_CHOICE_COUNT ||
+            name == null || name.length() == 0) {
+            return -1;
+        }
+
+        // try extended names first
+        int result = getExtendedChar(name.toLowerCase(), choice);
+        if (result >= -1) {
+            return result;
+        }
+
+        String upperCaseName = name.toUpperCase();
+        // try algorithmic names first, if fails then try group names
+        // int result = getAlgorithmChar(choice, uppercasename);
+
+        if (choice != UCharacterNameChoice.UNICODE_10_CHAR_NAME) {
+            int count = 0;
+            if (m_algorithm_ != null) {
+                count = m_algorithm_.length;
+            }
+            for (count --; count >= 0; count --) {
+                result = m_algorithm_[count].getChar(upperCaseName);
+                if (result >= 0) {
+                    return result;
+                }
+            }
+        }
+
+        if (choice == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+            result = getGroupChar(upperCaseName,
+                                  UCharacterNameChoice.UNICODE_CHAR_NAME);
+            if (result == -1) {
+                result = getGroupChar(upperCaseName,
+                                  UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+            }
+        }
+        else {
+            result = getGroupChar(upperCaseName, choice);
+        }
+        return result;
+    }
+
+    // these are all UCharacterNameIterator use methods -------------------
+
+    /**
+    * Reads a block of compressed lengths of 32 strings and expands them into
+    * offsets and lengths for each string. Lengths are stored with a
+    * variable-width encoding in consecutive nibbles:
+    * If a nibble<0xc, then it is the length itself (0 = empty string).
+    * If a nibble>=0xc, then it forms a length value with the following
+    * nibble.
+    * The offsets and lengths arrays must be at least 33 (one more) long
+    * because there is no check here at the end if the last nibble is still
+    * used.
+    * @param index of group string object in array
+    * @param offsets array to store the value of the string offsets
+    * @param lengths array to store the value of the string length
+    * @return next index of the data string immediately after the lengths
+    *         in terms of byte address
+    */
+    public int getGroupLengths(int index, char offsets[], char lengths[])
+    {
+        char length = 0xffff;
+        byte b = 0,
+            n = 0;
+        int shift;
+        index = index * m_groupsize_; // byte count offsets of group strings
+        int stringoffset = UCharacterUtility.toInt(
+                                 m_groupinfo_[index + OFFSET_HIGH_OFFSET_],
+                                 m_groupinfo_[index + OFFSET_LOW_OFFSET_]);
+
+        offsets[0] = 0;
+
+        // all 32 lengths must be read to get the offset of the first group
+        // string
+        for (int i = 0; i < LINES_PER_GROUP_; stringoffset ++) {
+            b = m_groupstring_[stringoffset];
+            shift = 4;
+
+            while (shift >= 0) {
+                // getting nibble
+                n = (byte)((b >> shift) & 0x0F);
+                if (length == 0xffff && n > SINGLE_NIBBLE_MAX_) {
+                    length = (char)((n - 12) << 4);
+                }
+                else {
+                    if (length != 0xffff) {
+                       lengths[i] = (char)((length | n) + 12);
+                    }
+                    else {
+                       lengths[i] = (char)n;
+                    }
+
+                    if (i < LINES_PER_GROUP_) {
+                       offsets[i + 1] = (char)(offsets[i] + lengths[i]);
+                    }
+
+                    length = 0xffff;
+                    i ++;
+                }
+
+                shift -= 4;
+            }
+        }
+        return stringoffset;
+    }
+
+    /**
+    * Gets the name of the argument group index.
+    * UnicodeData.txt uses ';' as a field separator, so no field can contain
+    * ';' as part of its contents. In unames.icu, it is marked as
+    * token[';'] == -1 only if the semicolon is used in the data file - which
+    * is iff we have Unicode 1.0 names or ISO comments.
+    * So, it will be token[';'] == -1 if we store U1.0 names/ISO comments
+    * although we know that it will never be part of a name.
+    * Equivalent to ICU4C's expandName.
+    * @param index of the group name string in byte count
+    * @param length of the group name string
+    * @param choice of Unicode 1.0 name or the most current name
+    * @return name of the group
+    */
+    public String getGroupName(int index, int length, int choice)
+    {
+        if (choice == UCharacterNameChoice.UNICODE_10_CHAR_NAME
+            || choice == UCharacterNameChoice.ISO_COMMENT_) {
+            if (';' >= m_tokentable_.length || m_tokentable_[';'] == 0xFFFF) {
+                // skip the modern name
+                int oldindex = index;
+                index += UCharacterUtility.skipByteSubString(m_groupstring_,
+                                                   index, length, (byte)';');
+                length -= (index - oldindex);
+                if (choice == UCharacterNameChoice.ISO_COMMENT_) {
+                    // skips the 1.0 Name to the iso comment part
+                    oldindex = index;
+                    index += UCharacterUtility.skipByteSubString(m_groupstring_,
+                                                    index, length, (byte)';');
+                    length -= (index - oldindex);
+                }
+            }
+            else {
+                // the semicolon byte is a token number, therefore only modern
+                // names are stored in unames.dat and there is no such
+                // requested Unicode 1.0 name here
+                length = 0;
+            }
+        }
+
+        synchronized (m_utilStringBuffer_) {
+            m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+            byte b;
+            char token;
+            for (int i = 0; i < length;) {
+                b = m_groupstring_[index + i];
+                i ++;
+
+                if (b >= m_tokentable_.length) {
+                    if (b == ';') {
+                        break;
+                    }
+                    m_utilStringBuffer_.append(b); // implicit letter
+                }
+                else {
+                    token = m_tokentable_[b & 0x00ff];
+                    if (token == 0xFFFE) {
+                        // this is a lead byte for a double-byte token
+                        token = m_tokentable_[b << 8 |
+                                          (m_groupstring_[index + i] & 0x00ff)];
+                        i ++;
+                    }
+                    if (token == 0xFFFF) {
+                        if (b == ';') {
+                            // skip the semicolon if we are seeking extended
+                            // names and there was no 2.0 name but there
+                            // is a 1.0 name.
+                            if (m_utilStringBuffer_.length() == 0 && choice ==
+                                   UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                                continue;
+                            }
+                            break;
+                        }
+                        // explicit letter
+                        m_utilStringBuffer_.append((char)(b & 0x00ff));
+                    }
+                    else { // write token word
+                        UCharacterUtility.getNullTermByteSubString(
+                                m_utilStringBuffer_, m_tokenstring_, token);
+                    }
+                }
+            }
+
+            if (m_utilStringBuffer_.length() > 0) {
+                return m_utilStringBuffer_.toString();
+            }
+        }
+        return null;
+    }
+
+    /**
+    * Retrieves the extended name
+    */
+    public String getExtendedName(int ch)
+    {
+        String result = getName(ch, UCharacterNameChoice.UNICODE_CHAR_NAME);
+        if (result == null) {
+            if (getType(ch) == UCharacterCategory.CONTROL) {
+                result = getName(ch,
+                                 UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+            }
+            if (result == null) {
+                result = getExtendedOr10Name(ch);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Gets the group index for the codepoint, or the group before it.
+     * @param codepoint
+     * @return group index containing codepoint or the group before it.
+     */
+    public int getGroup(int codepoint)
+    {
+        int endGroup = m_groupcount_;
+        int msb      = getCodepointMSB(codepoint);
+        int result   = 0;
+        // binary search for the group of names that contains the one for
+        // code
+        // find the group that contains codepoint, or the highest before it
+        while (result < endGroup - 1) {
+            int gindex = (result + endGroup) >> 1;
+            if (msb < getGroupMSB(gindex)) {
+                endGroup = gindex;
+            }
+            else {
+                result = gindex;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Gets the extended and 1.0 name when the most current unicode names
+     * fail
+     * @param ch codepoint
+     * @return name of codepoint extended or 1.0
+     */
+    public String getExtendedOr10Name(int ch)
+    {
+        String result = null;
+        if (getType(ch) == UCharacterCategory.CONTROL) {
+            result = getName(ch,
+                             UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+        }
+        if (result == null) {
+            int type = getType(ch);
+            // Return unknown if the table of names above is not up to
+            // date.
+            if (type >= TYPE_NAMES_.length) {
+                result = UNKNOWN_TYPE_NAME_;
+            }
+            else {
+                result = TYPE_NAMES_[type];
+            }
+            synchronized (m_utilStringBuffer_) {
+                m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+                m_utilStringBuffer_.append('<');
+                m_utilStringBuffer_.append(result);
+                m_utilStringBuffer_.append('-');
+                String chStr = Integer.toHexString(ch).toUpperCase();
+                int zeros = 4 - chStr.length();
+                while (zeros > 0) {
+                    m_utilStringBuffer_.append('0');
+                    zeros --;
+                }
+                m_utilStringBuffer_.append(chStr);
+                m_utilStringBuffer_.append('>');
+                result = m_utilStringBuffer_.toString();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Gets the MSB from the group index
+     * @param gindex group index
+     * @return the MSB of the group if gindex is valid, -1 otherwise
+     */
+    public int getGroupMSB(int gindex)
+    {
+        if (gindex >= m_groupcount_) {
+            return -1;
+        }
+        return m_groupinfo_[gindex * m_groupsize_];
+    }
+
+    /**
+     * Gets the MSB of the codepoint
+     * @param codepoint
+     * @return the MSB of the codepoint
+     */
+    public static int getCodepointMSB(int codepoint)
+    {
+        return codepoint >> GROUP_SHIFT_;
+    }
+
+    /**
+     * Gets the maximum codepoint + 1 of the group
+     * @param msb most significant byte of the group
+     * @return limit codepoint of the group
+     */
+    public static int getGroupLimit(int msb)
+    {
+        return (msb << GROUP_SHIFT_) + LINES_PER_GROUP_;
+    }
+
+    /**
+     * Gets the minimum codepoint of the group
+     * @param msb most significant byte of the group
+     * @return minimum codepoint of the group
+     */
+    public static int getGroupMin(int msb)
+    {
+        return msb << GROUP_SHIFT_;
+    }
+
+    /**
+     * Gets the offset to a group
+     * @param codepoint
+     * @return offset to a group
+     */
+    public static int getGroupOffset(int codepoint)
+    {
+        return codepoint & GROUP_MASK_;
+    }
+
+    /**
+     * Gets the minimum codepoint of a group
+     * @param codepoint
+     * @return minimum codepoint in the group which codepoint belongs to
+     */
+    ///CLOVER:OFF
+    public static int getGroupMinFromCodepoint(int codepoint)
+    {
+        return codepoint & ~GROUP_MASK_;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Get the Algorithm range length
+     * @return Algorithm range length
+     */
+    public int getAlgorithmLength()
+    {
+        return m_algorithm_.length;
+    }
+
+    /**
+     * Gets the start of the range
+     * @param index algorithm index
+     * @return algorithm range start
+     */
+    public int getAlgorithmStart(int index)
+    {
+        return m_algorithm_[index].m_rangestart_;
+    }
+
+    /**
+     * Gets the end of the range
+     * @param index algorithm index
+     * @return algorithm range end
+     */
+    public int getAlgorithmEnd(int index)
+    {
+        return m_algorithm_[index].m_rangeend_;
+    }
+
+    /**
+     * Gets the Algorithmic name of the codepoint
+     * @param index algorithmic range index
+     * @param codepoint
+     * @return algorithmic name of codepoint
+     */
+    public String getAlgorithmName(int index, int codepoint)
+    {
+        String result = null;
+        synchronized (m_utilStringBuffer_) {
+            m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+            m_algorithm_[index].appendName(codepoint, m_utilStringBuffer_);
+            result = m_utilStringBuffer_.toString();
+        }
+        return result;
+    }
+
+    /**
+    * Gets the group name of the character
+    * @param ch character to get the group name
+    * @param choice name choice selector to choose a unicode 1.0 or newer name
+    */
+    public synchronized String getGroupName(int ch, int choice)
+    {
+        // gets the msb
+        int msb   = getCodepointMSB(ch);
+        int group = getGroup(ch);
+
+        // return this if it is an exact match
+        if (msb == m_groupinfo_[group * m_groupsize_]) {
+            int index = getGroupLengths(group, m_groupoffsets_,
+                                        m_grouplengths_);
+            int offset = ch & GROUP_MASK_;
+            return getGroupName(index + m_groupoffsets_[offset],
+                                m_grouplengths_[offset], choice);
+        }
+
+        return null;
+    }
+
+    // these are transliterator use methods ---------------------------------
+
+    /**
+     * Gets the maximum length of any codepoint name.
+     * Equivalent to uprv_getMaxCharNameLength.
+     * @return the maximum length of any codepoint name
+     */
+    public int getMaxCharNameLength()
+    {
+        if (initNameSetsLengths()) {
+            return m_maxNameLength_;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Gets the maximum length of any iso comments.
+     * Equivalent to uprv_getMaxISOCommentLength.
+     * @return the maximum length of any codepoint name
+     */
+    ///CLOVER:OFF
+    public int getMaxISOCommentLength()
+    {
+        if (initNameSetsLengths()) {
+            return m_maxISOCommentLength_;
+        }
+        else {
+            return 0;
+        }
+    }
+    ///CLOVER:ON
+
+    /**
+     * Fills set with characters that are used in Unicode character names.
+     * Equivalent to uprv_getCharNameCharacters.
+     * @param set USet to receive characters. Existing contents are deleted.
+     */
+    public void getCharNameCharacters(UnicodeSet set)
+    {
+        convert(m_nameSet_, set);
+    }
+
+    /**
+     * Fills set with characters that are used in Unicode character names.
+     * Equivalent to uprv_getISOCommentCharacters.
+     * @param set USet to receive characters. Existing contents are deleted.
+     */
+    ///CLOVER:OFF
+    public void getISOCommentCharacters(UnicodeSet set)
+    {
+        convert(m_ISOCommentSet_, set);
+    }
+    ///CLOVER:ON
+
+    // package private inner class --------------------------------------
+
+    /**
+    * Algorithmic name class
+    */
+    static final class AlgorithmName
+    {
+        // package private data members ----------------------------------
+
+        /**
+        * Constant type value of the different AlgorithmName
+        */
+        static final int TYPE_0_ = 0;
+        static final int TYPE_1_ = 1;
+
+        // package private constructors ----------------------------------
+
+        /**
+        * Constructor
+        */
+        AlgorithmName()
+        {
+        }
+
+        // package private methods ---------------------------------------
+
+        /**
+        * Sets the information for accessing the algorithmic names
+        * @param rangestart starting code point that lies within this name group
+        * @param rangeend end code point that lies within this name group
+        * @param type algorithm type. There's 2 kinds of algorithmic type. First
+        *        which uses code point as part of its name and the other uses
+        *        variant postfix strings
+        * @param variant algorithmic variant
+        * @return true if values are valid
+        */
+        boolean setInfo(int rangestart, int rangeend, byte type, byte variant)
+        {
+            if (rangestart >= UCharacter.MIN_VALUE && rangestart <= rangeend
+                && rangeend <= UCharacter.MAX_VALUE &&
+                (type == TYPE_0_ || type == TYPE_1_)) {
+                m_rangestart_ = rangestart;
+                m_rangeend_ = rangeend;
+                m_type_ = type;
+                m_variant_ = variant;
+                return true;
+            }
+            return false;
+        }
+
+        /**
+        * Sets the factor data
+        * @param factor Array of factor
+        * @return true if factors are valid
+        */
+        boolean setFactor(char factor[])
+        {
+            if (factor.length == m_variant_) {
+                m_factor_ = factor;
+                return true;
+            }
+            return false;
+        }
+
+        /**
+        * Sets the name prefix
+        * @param prefix
+        * @return true if prefix is set
+        */
+        boolean setPrefix(String prefix)
+        {
+            if (prefix != null && prefix.length() > 0) {
+                m_prefix_ = prefix;
+                return true;
+            }
+            return false;
+        }
+
+        /**
+        * Sets the variant factorized name data
+        * @param string variant factorized name data
+        * @return true if values are set
+        */
+        boolean setFactorString(byte string[])
+        {
+            // factor and variant string can be empty for things like
+            // hanggul code points
+            m_factorstring_ = string;
+            return true;
+        }
+
+        /**
+        * Checks if code point lies in Algorithm object at index
+        * @param ch code point
+        */
+        boolean contains(int ch)
+        {
+            return m_rangestart_ <= ch && ch <= m_rangeend_;
+        }
+
+        /**
+        * Appends algorithm name of code point into StringBuffer.
+        * Note this method does not check for validity of code point in Algorithm,
+        * result is undefined if code point does not belong in Algorithm.
+        * @param ch code point
+        * @param str StringBuffer to append to
+        */
+        void appendName(int ch, StringBuffer str)
+        {
+            str.append(m_prefix_);
+            switch (m_type_)
+            {
+                case TYPE_0_:
+                    // prefix followed by hex digits indicating variants
+                    Utility.hex(ch, m_variant_, str);
+                    break;
+                case TYPE_1_:
+                    // prefix followed by factorized-elements
+                    int offset = ch - m_rangestart_;
+                    int indexes[] = m_utilIntBuffer_;
+                    int factor;
+
+                    // write elements according to the factors
+                    // the factorized elements are determined by modulo
+                    // arithmetic
+                    synchronized (m_utilIntBuffer_) {
+                        for (int i = m_variant_ - 1; i > 0; i --)
+                        {
+                            factor = m_factor_[i] & 0x00FF;
+                            indexes[i] = offset % factor;
+                            offset /= factor;
+                        }
+
+                        // we don't need to calculate the last modulus because
+                        // start <= code <= end guarantees here that
+                        // code <= factors[0]
+                        indexes[0] = offset;
+
+                        // joining up the factorized strings
+                        str.append(getFactorString(indexes, m_variant_));
+                    }
+                    break;
+            }
+        }
+
+        /**
+        * Gets the character for the argument algorithmic name
+        * @return the algorithmic char or -1 otherwise.
+        */
+        int getChar(String name)
+        {
+            int prefixlen = m_prefix_.length();
+            if (name.length() < prefixlen ||
+                !m_prefix_.equals(name.substring(0, prefixlen))) {
+                return -1;
+            }
+
+            switch (m_type_)
+            {
+                case TYPE_0_ :
+                try
+                {
+                    int result = Integer.parseInt(name.substring(prefixlen),
+                                                  16);
+                    // does it fit into the range?
+                    if (m_rangestart_ <= result && result <= m_rangeend_) {
+                        return result;
+                    }
+                }
+                catch (NumberFormatException e)
+                {
+                    return -1;
+                }
+                break;
+                case TYPE_1_ :
+                    // repetitative suffix name comparison done here
+                    // offset is the character code - start
+                    for (int ch = m_rangestart_; ch <= m_rangeend_; ch ++)
+                    {
+                        int offset = ch - m_rangestart_;
+                        int indexes[] = m_utilIntBuffer_;
+                        int factor;
+
+                        // write elements according to the factors
+                        // the factorized elements are determined by modulo
+                        // arithmetic
+                        synchronized (m_utilIntBuffer_) {
+                            for (int i = m_variant_ - 1; i > 0; i --)
+                            {
+                                factor = m_factor_[i] & 0x00FF;
+                                indexes[i] = offset % factor;
+                                offset /= factor;
+                            }
+
+                            // we don't need to calculate the last modulus
+                            // because start <= code <= end guarantees here that
+                            // code <= factors[0]
+                            indexes[0] = offset;
+
+                            // joining up the factorized strings
+                            if (compareFactorString(indexes, m_variant_, name,
+                                                    prefixlen)) {
+                                return ch;
+                            }
+                        }
+                    }
+            }
+
+            return -1;
+        }
+
+        /**
+         * Adds all chars in the set of algorithmic names into the set.
+         * Equivalent to part of calcAlgNameSetsLengths.
+         * @param set int set to add the chars of the algorithm names into
+         * @param maxlength maximum length to compare to
+         * @return the length that is either maxlength of the length of this
+         *         algorithm name if it is longer than maxlength
+         */
+        int add(int set[], int maxlength)
+        {
+            // prefix length
+            int length = UCharacterName.add(set, m_prefix_);
+            switch (m_type_) {
+                case TYPE_0_ : {
+                    // name = prefix + (range->variant times) hex-digits
+                    // prefix
+                    length += m_variant_;
+                    /* synwee to check
+                     * addString(set, (const char *)(range + 1))
+                                       + range->variant;*/
+                    break;
+                }
+                case TYPE_1_ : {
+                    // name = prefix factorized-elements
+                    // get the set and maximum factor suffix length for each
+                    // factor
+                    for (int i = m_variant_ - 1; i > 0; i --)
+                    {
+                        int maxfactorlength = 0;
+                        int count = 0;
+                        for (int factor = m_factor_[i]; factor > 0; -- factor) {
+                            synchronized (m_utilStringBuffer_) {
+                                m_utilStringBuffer_.delete(0,
+                                                m_utilStringBuffer_.length());
+                                count
+                                  = UCharacterUtility.getNullTermByteSubString(
+                                                m_utilStringBuffer_,
+                                                m_factorstring_, count);
+                                UCharacterName.add(set, m_utilStringBuffer_);
+                                if (m_utilStringBuffer_.length()
+                                                            > maxfactorlength)
+                                {
+                                    maxfactorlength
+                                                = m_utilStringBuffer_.length();
+                                }
+                            }
+                        }
+                        length += maxfactorlength;
+                    }
+                }
+            }
+            if (length > maxlength) {
+                return length;
+            }
+            return maxlength;
+        }
+
+        // private data members ------------------------------------------
+
+        /**
+        * Algorithmic data information
+        */
+        private int m_rangestart_;
+        private int m_rangeend_;
+        private byte m_type_;
+        private byte m_variant_;
+        private char m_factor_[];
+        private String m_prefix_;
+        private byte m_factorstring_[];
+        /**
+         * Utility StringBuffer
+         */
+        private StringBuffer m_utilStringBuffer_ = new StringBuffer();
+        /**
+         * Utility int buffer
+         */
+        private int m_utilIntBuffer_[] = new int[256];
+
+        // private methods -----------------------------------------------
+
+        /**
+        * Gets the indexth string in each of the argument factor block
+        * @param index array with each index corresponding to each factor block
+        * @param length length of the array index
+        * @return the combined string of the array of indexth factor string in
+        *         factor block
+        */
+        private String getFactorString(int index[], int length)
+        {
+            int size = m_factor_.length;
+            if (index == null || length != size) {
+                return null;
+            }
+
+            synchronized (m_utilStringBuffer_) {
+                m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+                int count = 0;
+                int factor;
+                size --;
+                for (int i = 0; i <= size; i ++) {
+                    factor = m_factor_[i];
+                    count = UCharacterUtility.skipNullTermByteSubString(
+                                             m_factorstring_, count, index[i]);
+                    count = UCharacterUtility.getNullTermByteSubString(
+                                          m_utilStringBuffer_, m_factorstring_,
+                                          count);
+                    if (i != size) {
+                        count = UCharacterUtility.skipNullTermByteSubString(
+                                                       m_factorstring_, count,
+                                                       factor - index[i] - 1);
+                    }
+                }
+                return m_utilStringBuffer_.toString();
+            }
+        }
+
+        /**
+        * Compares the indexth string in each of the argument factor block with
+        * the argument string
+        * @param index array with each index corresponding to each factor block
+        * @param length index array length
+        * @param str string to compare with
+        * @param offset of str to start comparison
+        * @return true if string matches
+        */
+        private boolean compareFactorString(int index[], int length, String str,
+                                            int offset)
+        {
+            int size = m_factor_.length;
+            if (index == null || length != size)
+                return false;
+
+            int count = 0;
+            int strcount = offset;
+            int factor;
+            size --;
+            for (int i = 0; i <= size; i ++)
+            {
+                factor = m_factor_[i];
+                count = UCharacterUtility.skipNullTermByteSubString(
+                                          m_factorstring_, count, index[i]);
+                strcount = UCharacterUtility.compareNullTermByteSubString(str,
+                                          m_factorstring_, strcount, count);
+                if (strcount < 0) {
+                    return false;
+                }
+
+                if (i != size) {
+                    count = UCharacterUtility.skipNullTermByteSubString(
+                                  m_factorstring_, count, factor - index[i]);
+                }
+            }
+            if (strcount != str.length()) {
+                return false;
+            }
+            return true;
+        }
+    }
+
+    // package private data members --------------------------------------
+
+    /**
+     * Size of each groups
+     */
+    int m_groupsize_ = 0;
+
+    // package private methods --------------------------------------------
+
+    /**
+    * Sets the token data
+    * @param token array of tokens
+    * @param tokenstring array of string values of the tokens
+    * @return false if there is a data error
+    */
+    boolean setToken(char token[], byte tokenstring[])
+    {
+        if (token != null && tokenstring != null && token.length > 0 &&
+            tokenstring.length > 0) {
+            m_tokentable_ = token;
+            m_tokenstring_ = tokenstring;
+            return true;
+        }
+        return false;
+    }
+
+    /**
+    * Set the algorithm name information array
+    * @param alg Algorithm information array
+    * @return true if the group string offset has been set correctly
+    */
+    boolean setAlgorithm(AlgorithmName alg[])
+    {
+        if (alg != null && alg.length != 0) {
+            m_algorithm_ = alg;
+            return true;
+        }
+        return false;
+    }
+
+    /**
+    * Sets the number of group and size of each group in number of char
+    * @param count number of groups
+    * @param size size of group in char
+    * @return true if group size is set correctly
+    */
+    boolean setGroupCountSize(int count, int size)
+    {
+        if (count <= 0 || size <= 0) {
+            return false;
+        }
+        m_groupcount_ = count;
+        m_groupsize_ = size;
+        return true;
+    }
+
+    /**
+    * Sets the group name data
+    * @param group index information array
+    * @param groupstring name information array
+    * @return false if there is a data error
+    */
+    boolean setGroup(char group[], byte groupstring[])
+    {
+        if (group != null && groupstring != null && group.length > 0 &&
+            groupstring.length > 0) {
+            m_groupinfo_ = group;
+            m_groupstring_ = groupstring;
+            return true;
+        }
+        return false;
+    }
+
+    // private data members ----------------------------------------------
+
+    /**
+    * Data used in unames.icu
+    */
+    private char m_tokentable_[];
+    private byte m_tokenstring_[];
+    private char m_groupinfo_[];
+    private byte m_groupstring_[];
+    private AlgorithmName m_algorithm_[];
+
+    /**
+    * Group use.  Note - access must be synchronized.
+    */
+    private char m_groupoffsets_[] = new char[LINES_PER_GROUP_ + 1];
+    private char m_grouplengths_[] = new char[LINES_PER_GROUP_ + 1];
+
+    /**
+    * Default name of the name datafile
+    */
+    private static final String NAME_FILE_NAME_ = ICUResourceBundle.ICU_BUNDLE+"/unames.icu";
+    /**
+    * Shift count to retrieve group information
+    */
+    private static final int GROUP_SHIFT_ = 5;
+    /**
+    * Mask to retrieve the offset for a particular character within a group
+    */
+    private static final int GROUP_MASK_ = LINES_PER_GROUP_ - 1;
+    /**
+    * Default buffer size of datafile
+    */
+    private static final int NAME_BUFFER_SIZE_ = 100000;
+
+    /**
+    * Position of offsethigh in group information array
+    */
+    private static final int OFFSET_HIGH_OFFSET_ = 1;
+
+    /**
+    * Position of offsetlow in group information array
+    */
+    private static final int OFFSET_LOW_OFFSET_ = 2;
+    /**
+    * Double nibble indicator, any nibble > this number has to be combined
+    * with its following nibble
+    */
+    private static final int SINGLE_NIBBLE_MAX_ = 11;
+
+    /*
+     * Maximum length of character names (regular & 1.0).
+     */
+    //private static int MAX_NAME_LENGTH_ = 0;
+    /*
+     * Maximum length of ISO comments.
+     */
+    //private static int MAX_ISO_COMMENT_LENGTH_ = 0;
+
+    /**
+     * Set of chars used in character names (regular & 1.0).
+     * Chars are platform-dependent (can be EBCDIC).
+     */
+    private int m_nameSet_[] = new int[8];
+    /**
+     * Set of chars used in ISO comments. (regular & 1.0).
+     * Chars are platform-dependent (can be EBCDIC).
+     */
+    private int m_ISOCommentSet_[] = new int[8];
+    /**
+     * Utility StringBuffer
+     */
+    private StringBuffer m_utilStringBuffer_ = new StringBuffer();
+    /**
+     * Utility int buffer
+     */
+    private int m_utilIntBuffer_[] = new int[2];
+    /**
+     * Maximum ISO comment length
+     */
+    private int m_maxISOCommentLength_;
+    /**
+     * Maximum name length
+     */
+    private int m_maxNameLength_;
+    /**
+     * Singleton instance
+     */
+    private static UCharacterName INSTANCE_ = null;
+    /**
+     * Type names used for extended names
+     */
+    private static final String TYPE_NAMES_[] = {"unassigned",
+                                                 "uppercase letter",
+                                                 "lowercase letter",
+                                                 "titlecase letter",
+                                                 "modifier letter",
+                                                 "other letter",
+                                                 "non spacing mark",
+                                                 "enclosing mark",
+                                                 "combining spacing mark",
+                                                 "decimal digit number",
+                                                 "letter number",
+                                                 "other number",
+                                                 "space separator",
+                                                 "line separator",
+                                                 "paragraph separator",
+                                                 "control",
+                                                 "format",
+                                                 "private use area",
+                                                 "surrogate",
+                                                 "dash punctuation",
+                                                 "start punctuation",
+                                                 "end punctuation",
+                                                 "connector punctuation",
+                                                 "other punctuation",
+                                                 "math symbol",
+                                                 "currency symbol",
+                                                 "modifier symbol",
+                                                 "other symbol",
+                                                 "initial punctuation",
+                                                 "final punctuation",
+                                                 "noncharacter",
+                                                 "lead surrogate",
+                                                 "trail surrogate"};
+    /**
+     * Unknown type name
+     */
+    private static final String UNKNOWN_TYPE_NAME_ = "unknown";
+    /**
+     * Not a character type
+     */
+    private static final int NON_CHARACTER_
+                                    = UCharacterCategory.CHAR_CATEGORY_COUNT;
+    /**
+    * Lead surrogate type
+    */
+    private static final int LEAD_SURROGATE_
+                                  = UCharacterCategory.CHAR_CATEGORY_COUNT + 1;
+    /**
+    * Trail surrogate type
+    */
+    private static final int TRAIL_SURROGATE_
+                                  = UCharacterCategory.CHAR_CATEGORY_COUNT + 2;
+    /**
+    * Extended category count
+    */
+    static final int EXTENDED_CATEGORY_
+                                  = UCharacterCategory.CHAR_CATEGORY_COUNT + 3;
+
+    // private constructor ------------------------------------------------
+
+    /**
+    * <p>Protected constructor for use in UCharacter.</p>
+    * @exception IOException thrown when data reading fails
+    */
+    private UCharacterName() throws IOException
+    {
+        InputStream is = ICUData.getRequiredStream(NAME_FILE_NAME_);
+        BufferedInputStream b = new BufferedInputStream(is, NAME_BUFFER_SIZE_);
+        UCharacterNameReader reader = new UCharacterNameReader(b);
+        reader.read(this);
+        b.close();
+    }
+
+    // private methods ---------------------------------------------------
+
+    /**
+    * Gets the algorithmic name for the argument character
+    * @param ch character to determine name for
+    * @param choice name choice
+    * @return the algorithmic name or null if not found
+    */
+    private String getAlgName(int ch, int choice)
+    {
+        // Do not write algorithmic Unicode 1.0 names because Unihan names are
+        // the same as the modern ones, extension A was only introduced with
+        // Unicode 3.0, and the Hangul syllable block was moved and changed
+        // around Unicode 1.1.5.
+        if (choice != UCharacterNameChoice.UNICODE_10_CHAR_NAME) {
+            // index in terms integer index
+            synchronized (m_utilStringBuffer_) {
+                m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+
+                for (int index = m_algorithm_.length - 1; index >= 0; index --)
+                {
+                   if (m_algorithm_[index].contains(ch)) {
+                      m_algorithm_[index].appendName(ch, m_utilStringBuffer_);
+                      return m_utilStringBuffer_.toString();
+                   }
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+    * Getting the character with the tokenized argument name
+    * @param name of the character
+    * @return character with the tokenized argument name or -1 if character
+    *         is not found
+    */
+    private synchronized int getGroupChar(String name, int choice)
+    {
+        for (int i = 0; i < m_groupcount_; i ++) {
+            // populating the data set of grouptable
+
+            int startgpstrindex = getGroupLengths(i, m_groupoffsets_,
+                                                  m_grouplengths_);
+
+            // shift out to function
+            int result = getGroupChar(startgpstrindex, m_grouplengths_, name,
+                                      choice);
+            if (result != -1) {
+                return (m_groupinfo_[i * m_groupsize_] << GROUP_SHIFT_)
+                         | result;
+            }
+        }
+        return -1;
+    }
+
+    /**
+    * Compares and retrieve character if name is found within the argument
+    * group
+    * @param index index where the set of names reside in the group block
+    * @param length list of lengths of the strings
+    * @param name character name to search for
+    * @param choice of either 1.0 or the most current unicode name
+    * @return relative character in the group which matches name, otherwise if
+    *         not found, -1 will be returned
+    */
+    private int getGroupChar(int index, char length[], String name,
+                             int choice)
+    {
+        byte b = 0;
+        char token;
+        int len;
+        int namelen = name.length();
+        int nindex;
+        int count;
+
+        for (int result = 0; result <= LINES_PER_GROUP_; result ++) {
+            nindex = 0;
+            len = length[result];
+
+            if (choice == UCharacterNameChoice.UNICODE_10_CHAR_NAME) {
+                int oldindex = index;
+                index += UCharacterUtility.skipByteSubString(m_groupstring_,
+                                                     index, len, (byte)';');
+                len -= (index - oldindex);
+            }
+
+            // number of tokens is > the length of the name
+            // write each letter directly, and write a token word per token
+            for (count = 0; count < len && nindex != -1 && nindex < namelen;
+                ) {
+                b = m_groupstring_[index + count];
+                count ++;
+
+                if (b >= m_tokentable_.length) {
+                    if (name.charAt(nindex ++) != (b & 0xFF)) {
+                        nindex = -1;
+                    }
+                }
+                else {
+                    token = m_tokentable_[b & 0xFF];
+                    if (token == 0xFFFE) {
+                        // this is a lead byte for a double-byte token
+                        token = m_tokentable_[b << 8 |
+                                   (m_groupstring_[index + count] & 0x00ff)];
+                        count ++;
+                    }
+                    if (token == 0xFFFF) {
+                        if (name.charAt(nindex ++) != (b & 0xFF)) {
+                            nindex = -1;
+                        }
+                    }
+                    else {
+                        // compare token with name
+                        nindex = UCharacterUtility.compareNullTermByteSubString(
+                                        name, m_tokenstring_, nindex, token);
+                    }
+                }
+            }
+
+            if (namelen == nindex &&
+                (count == len || m_groupstring_[index + count] == ';')) {
+                return result;
+            }
+
+            index += len;
+        }
+        return -1;
+    }
+
+    /**
+    * Gets the character extended type
+    * @param ch character to be tested
+    * @return extended type it is associated with
+    */
+    private static int getType(int ch)
+    {
+        if (UCharacterUtility.isNonCharacter(ch)) {
+            // not a character we return a invalid category count
+            return NON_CHARACTER_;
+        }
+        int result = UCharacter.getType(ch);
+        if (result == UCharacterCategory.SURROGATE) {
+            if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+                result = LEAD_SURROGATE_;
+            }
+            else {
+                result = TRAIL_SURROGATE_;
+            }
+        }
+        return result;
+    }
+
+    /**
+    * Getting the character with extended name of the form <....>.
+    * @param name of the character to be found
+    * @param choice name choice
+    * @return character associated with the name, -1 if such character is not
+    *                   found and -2 if we should continue with the search.
+    */
+    private static int getExtendedChar(String name, int choice)
+    {
+        if (name.charAt(0) == '<') {
+            if (choice == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                int endIndex = name.length() - 1;
+                if (name.charAt(endIndex) == '>') {
+                    int startIndex = name.lastIndexOf('-');
+                    if (startIndex >= 0) { // We've got a category.
+                        startIndex ++;
+                        int result = -1;
+                        try {
+                            result = Integer.parseInt(
+                                        name.substring(startIndex, endIndex),
+                                        16);
+                        }
+                        catch (NumberFormatException e) {
+                            return -1;
+                        }
+                        // Now validate the category name. We could use a
+                        // binary search, or a trie, if we really wanted to.
+                        String type = name.substring(1, startIndex - 1);
+                        int length = TYPE_NAMES_.length;
+                        for (int i = 0; i < length; ++ i) {
+                            if (type.compareTo(TYPE_NAMES_[i]) == 0) {
+                                if (getType(result) == i) {
+                                    return result;
+                                }
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+            return -1;
+        }
+        return -2;
+    }
+
+    // sets of name characters, maximum name lengths -----------------------
+
+    /**
+     * Adds a codepoint into a set of ints.
+     * Equivalent to SET_ADD.
+     * @param set set to add to
+     * @param ch 16 bit char to add
+     */
+    private static void add(int set[], char ch)
+    {
+        set[ch >>> 5] |= 1 << (ch & 0x1f);
+    }
+
+    /**
+     * Checks if a codepoint is a part of a set of ints.
+     * Equivalent to SET_CONTAINS.
+     * @param set set to check in
+     * @param ch 16 bit char to check
+     * @return true if codepoint is part of the set, false otherwise
+     */
+    private static boolean contains(int set[], char ch)
+    {
+        return (set[ch >>> 5] & (1 << (ch & 0x1f))) != 0;
+    }
+
+    /**
+     * Adds all characters of the argument str and gets the length
+     * Equivalent to calcStringSetLength.
+     * @param set set to add all chars of str to
+     * @param str string to add
+     */
+    private static int add(int set[], String str)
+    {
+        int result = str.length();
+
+        for (int i = result - 1; i >= 0; i --) {
+            add(set, str.charAt(i));
+        }
+        return result;
+    }
+
+    /**
+     * Adds all characters of the argument str and gets the length
+     * Equivalent to calcStringSetLength.
+     * @param set set to add all chars of str to
+     * @param str string to add
+     */
+    private static int add(int set[], StringBuffer str)
+    {
+        int result = str.length();
+
+        for (int i = result - 1; i >= 0; i --) {
+            add(set, str.charAt(i));
+        }
+        return result;
+    }
+
+    /**
+     * Adds all algorithmic names into the name set.
+     * Equivalent to part of calcAlgNameSetsLengths.
+     * @param maxlength length to compare to
+     * @return the maximum length of any possible algorithmic name if it is >
+     *         maxlength, otherwise maxlength is returned.
+     */
+    private int addAlgorithmName(int maxlength)
+    {
+        int result = 0;
+        for (int i = m_algorithm_.length - 1; i >= 0; i --) {
+            result = m_algorithm_[i].add(m_nameSet_, maxlength);
+            if (result > maxlength) {
+                maxlength = result;
+            }
+        }
+        return maxlength;
+    }
+
+    /**
+     * Adds all extended names into the name set.
+     * Equivalent to part of calcExtNameSetsLengths.
+     * @param maxlength length to compare to
+     * @return the maxlength of any possible extended name.
+     */
+    private int addExtendedName(int maxlength)
+    {
+        for (int i = TYPE_NAMES_.length - 1; i >= 0; i --) {
+            // for each category, count the length of the category name
+            // plus 9 =
+            // 2 for <>
+            // 1 for -
+            // 6 for most hex digits per code point
+            int length = 9 + add(m_nameSet_, TYPE_NAMES_[i]);
+            if (length > maxlength) {
+                maxlength = length;
+            }
+        }
+        return maxlength;
+    }
+
+    /**
+     * Adds names of a group to the argument set.
+     * Equivalent to calcNameSetLength.
+     * @param offset of the group name string in byte count
+     * @param length of the group name string
+     * @param tokenlength array to store the length of each token
+     * @param set to add to
+     * @return the length of the name string and the length of the group
+     *         string parsed
+     */
+    private int[] addGroupName(int offset, int length, byte tokenlength[],
+                               int set[])
+    {
+        int resultnlength = 0;
+        int resultplength = 0;
+        while (resultplength < length) {
+            char b = (char)(m_groupstring_[offset + resultplength] & 0xff);
+            resultplength ++;
+            if (b == ';') {
+                break;
+            }
+
+            if (b >= m_tokentable_.length) {
+                add(set, b); // implicit letter
+                resultnlength ++;
+            }
+            else {
+                char token = m_tokentable_[b & 0x00ff];
+                if (token == 0xFFFE) {
+                    // this is a lead byte for a double-byte token
+                    b = (char)(b << 8 | (m_groupstring_[offset + resultplength]
+                                         & 0x00ff));
+                    token = m_tokentable_[b];
+                    resultplength ++;
+                }
+                if (token == 0xFFFF) {
+                    add(set, b);
+                    resultnlength ++;
+                }
+                else {
+                    // count token word
+                    // use cached token length
+                    byte tlength = tokenlength[b];
+                    if (tlength == 0) {
+                        synchronized (m_utilStringBuffer_) {
+                            m_utilStringBuffer_.delete(0,
+                                                 m_utilStringBuffer_.length());
+                            UCharacterUtility.getNullTermByteSubString(
+                                           m_utilStringBuffer_, m_tokenstring_,
+                                           token);
+                            tlength = (byte)add(set, m_utilStringBuffer_);
+                        }
+                        tokenlength[b] = tlength;
+                    }
+                    resultnlength += tlength;
+                }
+            }
+        }
+        m_utilIntBuffer_[0] = resultnlength;
+        m_utilIntBuffer_[1] = resultplength;
+        return m_utilIntBuffer_;
+    }
+
+    /**
+     * Adds names of all group to the argument set.
+     * Sets the data member m_max*Length_.
+     * Method called only once.
+     * Equivalent to calcGroupNameSetsLength.
+     * @param maxlength length to compare to
+     */
+    private void addGroupName(int maxlength)
+    {
+        int maxisolength = 0;
+        char offsets[] = new char[LINES_PER_GROUP_ + 2];
+        char lengths[] = new char[LINES_PER_GROUP_ + 2];
+        byte tokenlengths[] = new byte[m_tokentable_.length];
+
+        // enumerate all groups
+        // for (int i = m_groupcount_ - 1; i >= 0; i --) {
+        for (int i = 0; i < m_groupcount_ ; i ++) {
+            int offset = getGroupLengths(i, offsets, lengths);
+            // enumerate all lines in each group
+            // for (int linenumber = LINES_PER_GROUP_ - 1; linenumber >= 0;
+            //    linenumber --) {
+            for (int linenumber = 0; linenumber < LINES_PER_GROUP_;
+                linenumber ++) {
+                int lineoffset = offset + offsets[linenumber];
+                int length = lengths[linenumber];
+                if (length == 0) {
+                    continue;
+                }
+
+                // read regular name
+                int parsed[] = addGroupName(lineoffset, length, tokenlengths,
+                                            m_nameSet_);
+                if (parsed[0] > maxlength) {
+                    // 0 for name length
+                    maxlength = parsed[0];
+                }
+                lineoffset += parsed[1];
+                if (parsed[1] >= length) {
+                    // 1 for parsed group string length
+                    continue;
+                }
+                length -= parsed[1];
+                // read Unicode 1.0 name
+                parsed = addGroupName(lineoffset, length, tokenlengths,
+                                      m_nameSet_);
+                if (parsed[0] > maxlength) {
+                    // 0 for name length
+                    maxlength = parsed[0];
+                }
+                lineoffset += parsed[1];
+                if (parsed[1] >= length) {
+                    // 1 for parsed group string length
+                    continue;
+                }
+                length -= parsed[1];
+                // read ISO comment
+                parsed = addGroupName(lineoffset, length, tokenlengths,
+                                      m_ISOCommentSet_);
+                if (parsed[1] > maxisolength) {
+                    maxisolength = length;
+                }
+            }
+        }
+
+        // set gMax... - name length last for threading
+        m_maxISOCommentLength_ = maxisolength;
+        m_maxNameLength_ = maxlength;
+    }
+
+    /**
+     * Sets up the name sets and the calculation of the maximum lengths.
+     * Equivalent to calcNameSetsLengths.
+     */
+    private boolean initNameSetsLengths()
+    {
+        if (m_maxNameLength_ > 0) {
+            return true;
+        }
+
+        String extra = "0123456789ABCDEF<>-";
+        // set hex digits, used in various names, and <>-, used in extended
+        // names
+        for (int i = extra.length() - 1; i >= 0; i --) {
+            add(m_nameSet_, extra.charAt(i));
+        }
+
+        // set sets and lengths from algorithmic names
+        m_maxNameLength_ = addAlgorithmName(0);
+        // set sets and lengths from extended names
+        m_maxNameLength_ = addExtendedName(m_maxNameLength_);
+        // set sets and lengths from group names, set global maximum values
+        addGroupName(m_maxNameLength_);
+        return true;
+    }
+
+    /**
+     * Converts the char set cset into a Unicode set uset.
+     * Equivalent to charSetToUSet.
+     * @param set Set of 256 bit flags corresponding to a set of chars.
+     * @param uset USet to receive characters. Existing contents are deleted.
+     */
+    private void convert(int set[], UnicodeSet uset)
+    {
+        uset.clear();
+        if (!initNameSetsLengths()) {
+            return;
+        }
+
+        // build a char string with all chars that are used in character names
+        for (char c = 255; c > 0; c --) {
+            if (contains(set, c)) {
+                uset.add(c);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/UCharacterNameChoice.java b/src/com/ibm/icu/impl/UCharacterNameChoice.java
new file mode 100644
index 0000000..097f150
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterNameChoice.java
@@ -0,0 +1,29 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+/**
+* Internal class containing selector constants for the unicode character names.
+* Constants representing the "modern" name of a Unicode character or the name 
+* that was defined in Unicode version 1.0, before the Unicode standard 
+* merged with ISO-10646.
+* Arguments for <a href=UCharacterName.html>UCharacterName</a>
+* @author Syn Wee Quek
+* @since oct0600
+*/
+
+public interface UCharacterNameChoice
+{
+  // public variables =============================================
+  
+  static final int UNICODE_CHAR_NAME = 0;
+  static final int UNICODE_10_CHAR_NAME = 1;
+  static final int EXTENDED_CHAR_NAME = 2;
+  static final int CHAR_NAME_CHOICE_COUNT = 3;
+  static final int ISO_COMMENT_ = CHAR_NAME_CHOICE_COUNT;
+}
diff --git a/src/com/ibm/icu/impl/UCharacterNameReader.java b/src/com/ibm/icu/impl/UCharacterNameReader.java
new file mode 100644
index 0000000..2dd9aaf
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterNameReader.java
@@ -0,0 +1,210 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
+/**
+* <p>Internal reader class for ICU data file uname.dat containing 
+* Unicode codepoint name data.</p> 
+* <p>This class simply reads unames.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=UCharacterName.html>com.ibm.icu.impl.UCharacterName</a>.
+* </p> 
+* <p>unames.icu which is in big-endian format is jared together with this 
+* package.</p>
+* @author Syn Wee Quek
+* @since release 2.1, February 1st 2002
+*/
+
+final class UCharacterNameReader implements ICUBinary.Authenticate
+{      
+    // public methods ----------------------------------------------------
+    
+    public boolean isDataVersionAcceptable(byte version[])
+    {
+        return version[0] == DATA_FORMAT_VERSION_[0];
+    }
+    
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected UCharacterNameReader(InputStream inputStream) 
+                                                        throws IOException
+    {
+        ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, this);
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+  
+    // protected methods -------------------------------------------------
+      
+    /**
+    * Read and break up the stream of data passed in as arguments
+    * and fills up UCharacterName.
+    * If unsuccessful false will be returned.
+    * @param data instance of datablock
+    * @exception IOException thrown when there's a data error.
+    */
+    protected void read(UCharacterName data) throws IOException
+    {
+        // reading index
+        m_tokenstringindex_ = m_dataInputStream_.readInt();
+        m_groupindex_       = m_dataInputStream_.readInt();
+        m_groupstringindex_ = m_dataInputStream_.readInt();
+        m_algnamesindex_    = m_dataInputStream_.readInt();
+        
+        // reading tokens
+        int count = m_dataInputStream_.readChar();
+        char token[] = new char[count];
+        for (char i = 0; i < count; i ++) {
+            token[i] = m_dataInputStream_.readChar();
+        }
+        int size = m_groupindex_ - m_tokenstringindex_;
+        byte tokenstr[] = new byte[size];
+        m_dataInputStream_.readFully(tokenstr);
+        data.setToken(token, tokenstr);
+        
+        // reading the group information records
+        count = m_dataInputStream_.readChar();
+        data.setGroupCountSize(count, GROUP_INFO_SIZE_);
+        count *= GROUP_INFO_SIZE_;
+        char group[] = new char[count];
+        for (int i = 0; i < count; i ++) {
+            group[i] = m_dataInputStream_.readChar();
+        }
+        
+        size = m_algnamesindex_ - m_groupstringindex_;
+        byte groupstring[] = new byte[size];
+        m_dataInputStream_.readFully(groupstring);
+    
+        data.setGroup(group, groupstring);
+        
+        count = m_dataInputStream_.readInt();
+        UCharacterName.AlgorithmName alg[] = 
+                                 new UCharacterName.AlgorithmName[count];
+     
+        for (int i = 0; i < count; i ++)
+        {
+            UCharacterName.AlgorithmName an = readAlg();
+            if (an == null) {
+                throw new IOException("unames.icu read error: Algorithmic names creation error");
+            }
+            alg[i] = an;
+        }
+        data.setAlgorithm(alg);
+    }
+    
+    /**
+    * <p>Checking the file for the correct format.</p>
+    * @param dataformatid
+    * @param dataformatversion
+    * @return true if the file format version is correct
+    */
+    ///CLOVER:OFF
+    protected boolean authenticate(byte dataformatid[],
+                                   byte dataformatversion[])
+    {
+        return Arrays.equals(DATA_FORMAT_ID_, dataformatid) &&
+               Arrays.equals(DATA_FORMAT_VERSION_, dataformatversion);
+    }
+    ///CLOVER:ON
+    
+    // private variables -------------------------------------------------
+  
+    /**
+    * Data input stream for names 
+    */
+    private DataInputStream m_dataInputStream_;
+    /**
+    * Size of the group information block in number of char
+    */
+    private static final int GROUP_INFO_SIZE_ = 3;
+
+    /**
+    * Index of the offset information
+    */
+    private int m_tokenstringindex_;
+    private int m_groupindex_;
+    private int m_groupstringindex_;
+    private int m_algnamesindex_;
+      
+    /**
+    * Size of an algorithmic name information group
+    * start code point size + end code point size + type size + variant size + 
+    * size of data size
+    */
+    private static final int ALG_INFO_SIZE_ = 12;
+      
+    /**
+    * File format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte DATA_FORMAT_VERSION_[] = 
+                                    {(byte)0x1, (byte)0x0, (byte)0x0, (byte)0x0};
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x75, (byte)0x6E, 
+                                                    (byte)0x61, (byte)0x6D};                                                 
+      
+    // private methods ---------------------------------------------------
+      
+    /**
+    * Reads an individual record of AlgorithmNames
+    * @return an instance of AlgorithNames if read is successful otherwise null
+    * @exception IOException thrown when file read error occurs or data is corrupted
+    */
+    private UCharacterName.AlgorithmName readAlg() throws IOException
+    {
+        UCharacterName.AlgorithmName result = 
+                                       new UCharacterName.AlgorithmName();
+        int rangestart = m_dataInputStream_.readInt();
+        int rangeend   = m_dataInputStream_.readInt();
+        byte type      = m_dataInputStream_.readByte();
+        byte variant   = m_dataInputStream_.readByte();
+        if (!result.setInfo(rangestart, rangeend, type, variant)) {
+            return null;
+        }
+                         
+        int size = m_dataInputStream_.readChar();
+        if (type == UCharacterName.AlgorithmName.TYPE_1_)
+        {
+            char factor[] = new char[variant];
+            for (int j = 0; j < variant; j ++) {
+                factor[j] = m_dataInputStream_.readChar();
+            }
+                  
+            result.setFactor(factor);
+            size -= (variant << 1);
+        }
+          
+        StringBuffer prefix = new StringBuffer();
+        char c = (char)(m_dataInputStream_.readByte() & 0x00FF);
+        while (c != 0)
+        {
+            prefix.append(c);
+            c = (char)(m_dataInputStream_.readByte() & 0x00FF);
+        }
+        
+        result.setPrefix(prefix.toString());
+        
+        size -= (ALG_INFO_SIZE_ + prefix.length() + 1);
+        
+        if (size > 0)
+        {
+            byte string[] = new byte[size];
+            m_dataInputStream_.readFully(string);
+            result.setFactorString(string);
+        }
+        return result;
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/UCharacterProperty.java b/src/com/ibm/icu/impl/UCharacterProperty.java
new file mode 100644
index 0000000..91a11f6
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterProperty.java
@@ -0,0 +1,1164 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.VersionInfo;
+
+import com.ibm.icu.impl.NormalizerImpl;
+
+/**
+* <p>Internal class used for Unicode character property database.</p>
+* <p>This classes store binary data read from uprops.icu.
+* It does not have the capability to parse the data into more high-level
+* information. It only returns bytes of information when required.</p>
+* <p>Due to the form most commonly used for retrieval, array of char is used
+* to store the binary data.</p>
+* <p>UCharacterPropertyDB also contains information on accessing indexes to
+* significant points in the binary data.</p>
+* <p>Responsibility for molding the binary data into more meaning form lies on
+* <a href=UCharacter.html>UCharacter</a>.</p>
+* @author Syn Wee Quek
+* @since release 2.1, february 1st 2002
+*/
+
+public final class UCharacterProperty
+{
+    // public data members -----------------------------------------------
+
+    /**
+    * Trie data
+    */
+    public CharTrie m_trie_;
+    /**
+     * Optimization
+     * CharTrie index array
+     */
+    public char[] m_trieIndex_;
+    /**
+     * Optimization
+     * CharTrie data array
+     */
+    public char[] m_trieData_;
+    /**
+     * Optimization
+     * CharTrie data offset
+     */
+    public int m_trieInitialValue_;
+    /**
+    * Unicode version
+    */
+    public VersionInfo m_unicodeVersion_;
+    /**
+    * Latin capital letter i with dot above
+    */
+    public static final char LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE_ = 0x130;
+    /**
+    * Latin small letter i with dot above
+    */
+    public static final char LATIN_SMALL_LETTER_DOTLESS_I_ = 0x131;
+    /**
+    * Latin lowercase i
+    */
+    public static final char LATIN_SMALL_LETTER_I_ = 0x69;
+    /**
+    * Character type mask
+    */
+    public static final int TYPE_MASK = 0x1F;
+
+    // uprops.h enum UPropertySource --------------------------------------- ***
+
+    /** No source, not a supported property. */
+    public static final int SRC_NONE=0;
+    /** From uchar.c/uprops.icu main trie */
+    public static final int SRC_CHAR=1;
+    /** From uchar.c/uprops.icu properties vectors trie */
+    public static final int SRC_PROPSVEC=2;
+    /** Hangul_Syllable_Type, from uchar.c/uprops.icu */
+    public static final int SRC_HST=3;
+    /** From unames.c/unames.icu */
+    public static final int SRC_NAMES=4;
+    /** From unorm.cpp/unorm.icu */
+    public static final int SRC_NORM=5;
+    /** From ucase.c/ucase.icu */
+    public static final int SRC_CASE=6;
+    /** From ubidi_props.c/ubidi.icu */
+    public static final int SRC_BIDI=7;
+    /** From uchar.c/uprops.icu main trie as well as properties vectors trie */
+    public static final int SRC_CHAR_AND_PROPSVEC=8;
+    /** One more than the highest UPropertySource (SRC_) constant. */
+    public static final int SRC_COUNT=9;
+
+    // public methods ----------------------------------------------------
+
+    /**
+     * Java friends implementation
+     */
+    public void setIndexData(CharTrie.FriendAgent friendagent)
+    {
+        m_trieIndex_ = friendagent.getPrivateIndex();
+        m_trieData_ = friendagent.getPrivateData();
+        m_trieInitialValue_ = friendagent.getPrivateInitialValue();
+    }
+
+    /**
+    * Gets the property value at the index.
+    * This is optimized.
+    * Note this is alittle different from CharTrie the index m_trieData_
+    * is never negative.
+    * @param ch code point whose property value is to be retrieved
+    * @return property value of code point
+    */
+    public final int getProperty(int ch)
+    {
+        if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE
+            || (ch > UTF16.LEAD_SURROGATE_MAX_VALUE
+                && ch < UTF16.SUPPLEMENTARY_MIN_VALUE)) {
+            // BMP codepoint 0000..D7FF or DC00..FFFF
+            // optimized
+            try { // using try for ch < 0 is faster than using an if statement
+                return m_trieData_[
+                    (m_trieIndex_[ch >> Trie.INDEX_STAGE_1_SHIFT_]
+                          << Trie.INDEX_STAGE_2_SHIFT_)
+                    + (ch & Trie.INDEX_STAGE_3_MASK_)];
+            } catch (ArrayIndexOutOfBoundsException e) {
+                return m_trieInitialValue_;
+            }
+        }
+        if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            // lead surrogate D800..DBFF
+            return m_trieData_[
+                    (m_trieIndex_[Trie.LEAD_INDEX_OFFSET_
+                                  + (ch >> Trie.INDEX_STAGE_1_SHIFT_)]
+                          << Trie.INDEX_STAGE_2_SHIFT_)
+                    + (ch & Trie.INDEX_STAGE_3_MASK_)];
+        }
+        if (ch <= UTF16.CODEPOINT_MAX_VALUE) {
+            // supplementary code point 10000..10FFFF
+            // look at the construction of supplementary characters
+            // trail forms the ends of it.
+            return m_trie_.getSurrogateValue(
+                                          UTF16.getLeadSurrogate(ch),
+                                          (char)(ch & Trie.SURROGATE_MASK_));
+        }
+        // ch is out of bounds
+        // return m_dataOffset_ if there is an error, in this case we return
+        // the default value: m_initialValue_
+        // we cannot assume that m_initialValue_ is at offset 0
+        // this is for optimization.
+        return m_trieInitialValue_;
+
+        // this all is an inlined form of return m_trie_.getCodePointValue(ch);
+    }
+
+    /*
+    * Getting the signed numeric value of a character embedded in the property
+    * argument
+    * @param prop the character
+    * @return signed numberic value
+    */
+//    public static int getSignedValue(int prop)
+//    {
+//        return ((short)prop >> VALUE_SHIFT_);
+//    }
+
+    /**
+    * Getting the unsigned numeric value of a character embedded in the property
+    * argument
+    * @param prop the character
+    * @return unsigned numberic value
+    */
+    public static int getUnsignedValue(int prop)
+    {
+        return (prop >> VALUE_SHIFT_) & UNSIGNED_VALUE_MASK_AFTER_SHIFT_;
+    }
+
+    /* internal numeric pseudo-types for special encodings of numeric values */
+    public static final int NT_FRACTION=4; /* ==UCharacter.NumericType.COUNT, must not change unless binary format version changes */
+    public static final int NT_LARGE=5;
+    public static final int NT_COUNT=6;
+
+    /**
+     * Gets the unicode additional properties.
+     * C version getUnicodeProperties.
+     * @param codepoint codepoint whose additional properties is to be
+     *                  retrieved
+     * @param column
+     * @return unicode properties
+     */
+       public int getAdditional(int codepoint, int column) {
+        if (column == -1) {
+            return getProperty(codepoint);
+        }
+           if (column < 0 || column >= m_additionalColumnsCount_) {
+           return 0;
+       }
+       return m_additionalVectors_[
+                     m_additionalTrie_.getCodePointValue(codepoint) + column];
+       }
+
+    static final int MY_MASK = UCharacterProperty.TYPE_MASK
+        & ((1<<UCharacterCategory.UPPERCASE_LETTER) |
+            (1<<UCharacterCategory.LOWERCASE_LETTER) |
+            (1<<UCharacterCategory.TITLECASE_LETTER) |
+            (1<<UCharacterCategory.MODIFIER_LETTER) |
+            (1<<UCharacterCategory.OTHER_LETTER));
+
+
+       /**
+     * <p>Get the "age" of the code point.</p>
+     * <p>The "age" is the Unicode version when the code point was first
+     * designated (as a non-character or for Private Use) or assigned a
+     * character.</p>
+     * <p>This can be useful to avoid emitting code points to receiving
+     * processes that do not accept newer characters.</p>
+     * <p>The data is from the UCD file DerivedAge.txt.</p>
+     * <p>This API does not check the validity of the codepoint.</p>
+     * @param codepoint The code point.
+     * @return the Unicode version number
+     */
+    public VersionInfo getAge(int codepoint)
+    {
+        int version = getAdditional(codepoint, 0) >> AGE_SHIFT_;
+        return VersionInfo.getInstance(
+                           (version >> FIRST_NIBBLE_SHIFT_) & LAST_NIBBLE_MASK_,
+                           version & LAST_NIBBLE_MASK_, 0, 0);
+    }
+
+    private static final long UNSIGNED_INT_MASK = 0xffffffffL;
+
+    private static final int GC_CN_MASK = getMask(UCharacter.UNASSIGNED);
+    private static final int GC_CC_MASK = getMask(UCharacter.CONTROL);
+    private static final int GC_CS_MASK = getMask(UCharacter.SURROGATE);
+    private static final int GC_ZS_MASK = getMask(UCharacter.SPACE_SEPARATOR);
+    private static final int GC_ZL_MASK = getMask(UCharacter.LINE_SEPARATOR);
+    private static final int GC_ZP_MASK = getMask(UCharacter.PARAGRAPH_SEPARATOR);
+    /** Mask constant for multiple UCharCategory bits (Z Separators). */
+    private static final int GC_Z_MASK = GC_ZS_MASK|GC_ZL_MASK|GC_ZP_MASK;
+
+    /**
+     * Checks if c is in
+     * [^\p{space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]
+     * with space=\p{Whitespace} and Control=Cc.
+     * Implements UCHAR_POSIX_GRAPH.
+     * @internal
+     */
+    private static final boolean isgraphPOSIX(int c) {
+        /* \p{space}\p{gc=Control} == \p{gc=Z}\p{Control} */
+        /* comparing ==0 returns FALSE for the categories mentioned */
+        return (getMask(UCharacter.getType(c))&
+                (GC_CC_MASK|GC_CS_MASK|GC_CN_MASK|GC_Z_MASK))
+               ==0;
+    }
+
+    private static final class BinaryProperties{
+       int column;
+       long mask;
+       public BinaryProperties(int column,long mask){
+               this.column = column;
+               this.mask  = mask;
+       }
+   }
+   BinaryProperties[] binProps={
+       /*
+        * column and mask values for binary properties from u_getUnicodeProperties().
+        * Must be in order of corresponding UProperty,
+        * and there must be exacly one entry per binary UProperty.
+        */
+       new BinaryProperties(  1,                (  1 << ALPHABETIC_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << ASCII_HEX_DIGIT_PROPERTY_) ),
+       new BinaryProperties( SRC_BIDI,   0 ),                                       /* UCHAR_BIDI_CONTROL */
+       new BinaryProperties( SRC_BIDI,   0 ),                                       /* UCHAR_BIDI_MIRRORED */
+       new BinaryProperties(  1,                (  1 << DASH_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << DEFAULT_IGNORABLE_CODE_POINT_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << DEPRECATED_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << DIACRITIC_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << EXTENDER_PROPERTY_) ),
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_FULL_COMPOSITION_EXCLUSION */
+       new BinaryProperties(  1,                (  1 << GRAPHEME_BASE_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << GRAPHEME_EXTEND_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << GRAPHEME_LINK_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << HEX_DIGIT_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << HYPHEN_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << ID_CONTINUE_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << ID_START_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << IDEOGRAPHIC_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << IDS_BINARY_OPERATOR_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << IDS_TRINARY_OPERATOR_PROPERTY_) ),
+       new BinaryProperties( SRC_BIDI,   0 ),                                       /* UCHAR_JOIN_CONTROL */
+       new BinaryProperties(  1,                (  1 << LOGICAL_ORDER_EXCEPTION_PROPERTY_) ),
+       new BinaryProperties( SRC_CASE,   0 ),                                       /* UCHAR_LOWERCASE */
+       new BinaryProperties(  1,                (  1 << MATH_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << NONCHARACTER_CODE_POINT_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << QUOTATION_MARK_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << RADICAL_PROPERTY_) ),
+       new BinaryProperties( SRC_CASE,   0 ),                                       /* UCHAR_SOFT_DOTTED */
+       new BinaryProperties(  1,                (  1 << TERMINAL_PUNCTUATION_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << UNIFIED_IDEOGRAPH_PROPERTY_) ),
+       new BinaryProperties( SRC_CASE,   0 ),                                       /* UCHAR_UPPERCASE */
+       new BinaryProperties(  1,                (  1 << WHITE_SPACE_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << XID_CONTINUE_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << XID_START_PROPERTY_) ),
+       new BinaryProperties( SRC_CASE,   0 ),                                       /* UCHAR_CASE_SENSITIVE */
+       new BinaryProperties(  1,                (  1 << S_TERM_PROPERTY_) ),
+       new BinaryProperties(  1,                (  1 << VARIATION_SELECTOR_PROPERTY_) ),
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_NFD_INERT */
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_NFKD_INERT */
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_NFC_INERT */
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_NFKC_INERT */
+       new BinaryProperties( SRC_NORM,   0 ),                                       /* UCHAR_SEGMENT_STARTER */
+       new BinaryProperties(  1,                (  1 << PATTERN_SYNTAX) ),
+       new BinaryProperties(  1,                (  1 << PATTERN_WHITE_SPACE) ),
+       new BinaryProperties( SRC_CHAR_AND_PROPSVEC,  0 ),                           /* UCHAR_POSIX_ALNUM */
+       new BinaryProperties( SRC_CHAR,  0 ),                                        /* UCHAR_POSIX_BLANK */
+       new BinaryProperties( SRC_CHAR,  0 ),                                        /* UCHAR_POSIX_GRAPH */
+       new BinaryProperties( SRC_CHAR,  0 ),                                        /* UCHAR_POSIX_PRINT */
+       new BinaryProperties( SRC_CHAR,  0 )                                         /* UCHAR_POSIX_XDIGIT */
+   };
+
+
+    /**
+     * <p>Check a binary Unicode property for a code point.</p>
+     * <p>Unicode, especially in version 3.2, defines many more properties
+     * than the original set in UnicodeData.txt.</p>
+     * <p>This API is intended to reflect Unicode properties as defined in
+     * the Unicode Character Database (UCD) and Unicode Technical Reports
+     * (UTR).</p>
+     * <p>For details about the properties see
+     * <a href=http://www.unicode.org/>http://www.unicode.org/</a>.</p>
+     * <p>For names of Unicode properties see the UCD file
+     * PropertyAliases.txt.</p>
+     * <p>This API does not check the validity of the codepoint.</p>
+     * <p>Important: If ICU is built with UCD files from Unicode versions
+     * below 3.2, then properties marked with "new" are not or
+     * not fully available.</p>
+     * @param codepoint Code point to test.
+     * @param property selector constant from com.ibm.icu.lang.UProperty,
+     *        identifies which binary property to check.
+     * @return true or false according to the binary Unicode property value
+     *         for ch. Also false if property is out of bounds or if the
+     *         Unicode version does not have data for the property at all, or
+     *         not for this code point.
+     * @see com.ibm.icu.lang.UProperty
+     */
+
+    public boolean hasBinaryProperty(int codepoint, int property)
+    {
+         if(property <UProperty.BINARY_START || UProperty.BINARY_LIMIT<=property) {
+            // not a known binary property
+            return false;
+        } else {
+            long mask=binProps[property].mask;
+            int column=binProps[property].column;
+            if(mask!=0) {
+                // systematic, directly stored properties
+                return ((UNSIGNED_INT_MASK & getAdditional(codepoint, column)) & mask)!=0;
+            } else {
+                if(column==SRC_CASE) {
+                    /* case mapping properties */
+                    UCaseProps csp;
+                    try {
+                        csp = UCaseProps.getSingleton();
+                    } catch (IOException e) {
+                        return false;
+                    }
+                    switch(property) {
+                    case UProperty.LOWERCASE:
+                        return UCaseProps.LOWER==csp.getType(codepoint);
+                    case UProperty.UPPERCASE:
+                        return UCaseProps.UPPER==csp.getType(codepoint);
+                    case UProperty.SOFT_DOTTED:
+                        return csp.isSoftDotted(codepoint);
+                    case UProperty.CASE_SENSITIVE:
+                        return csp.isCaseSensitive(codepoint);
+                    default:
+                        break;
+                    }
+                } else if(column==SRC_NORM) {
+                    /* normalization properties from unorm.icu */
+                    switch(property) {
+                    case UProperty.FULL_COMPOSITION_EXCLUSION:
+                        return NormalizerImpl.isFullCompositionExclusion(codepoint);
+                    case UProperty.NFD_INERT:
+                        return Normalizer.isNFSkippable(codepoint, Normalizer.NFD);
+                    case UProperty.NFKD_INERT:
+                        return Normalizer.isNFSkippable(codepoint, Normalizer.NFKD);
+                    case UProperty.NFC_INERT:
+                        return Normalizer.isNFSkippable(codepoint, Normalizer.NFC);
+                    case UProperty.NFKC_INERT:
+                        return Normalizer.isNFSkippable(codepoint, Normalizer.NFKC);
+                    case UProperty.SEGMENT_STARTER:
+                        return NormalizerImpl.isCanonSafeStart(codepoint);
+                    default:
+                        break;
+                    }
+                } else if(column==SRC_BIDI) {
+                    /* bidi/shaping properties */
+                    UBiDiProps bdp;
+                    try {
+                        bdp = UBiDiProps.getSingleton();
+                    } catch (IOException e) {
+                        return false;
+                    }
+                    switch(property) {
+                    case UProperty.BIDI_MIRRORED:
+                        return bdp.isMirrored(codepoint);
+                    case UProperty.BIDI_CONTROL:
+                        return bdp.isBidiControl(codepoint);
+                    case UProperty.JOIN_CONTROL:
+                        return bdp.isJoinControl(codepoint);
+                    default:
+                        break;
+                    }
+                } else if(column==SRC_CHAR) {
+                    switch(property) {
+                    case UProperty.POSIX_BLANK:
+                        // "horizontal space"
+                        if(codepoint<=0x9f) {
+                            return codepoint==9 || codepoint==0x20; /* TAB or SPACE */
+                        } else {
+                            /* Zs */
+                            return UCharacter.getType(codepoint)==UCharacter.SPACE_SEPARATOR;
+                        }
+                    case UProperty.POSIX_GRAPH:
+                        return isgraphPOSIX(codepoint);
+                    case UProperty.POSIX_PRINT:
+                        /*
+                         * Checks if codepoint is in \p{graph}\p{blank} - \p{cntrl}.
+                         *
+                         * The only cntrl character in graph+blank is TAB (in blank).
+                         * Here we implement (blank-TAB)=Zs instead of calling u_isblank().
+                         */
+                        return (UCharacter.getType(codepoint)==UCharacter.SPACE_SEPARATOR) || isgraphPOSIX(codepoint);
+                    case UProperty.POSIX_XDIGIT:
+                        /* check ASCII and Fullwidth ASCII a-fA-F */
+                        if(
+                            (codepoint<=0x66 && codepoint>=0x41 && (codepoint<=0x46 || codepoint>=0x61)) ||
+                            (codepoint>=0xff21 && codepoint<=0xff46 && (codepoint<=0xff26 || codepoint>=0xff41))
+                        ) {
+                            return true;
+                        }
+    
+                        return UCharacter.getType(codepoint)==UCharacter.DECIMAL_DIGIT_NUMBER;
+                    default:
+                        break;
+                    }
+                } else if(column==SRC_CHAR_AND_PROPSVEC) {
+                    switch(property) {
+                    case UProperty.POSIX_ALNUM:
+                        return UCharacter.isUAlphabetic(codepoint) || UCharacter.isDigit(codepoint);
+                    default:
+                        break;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    public final int getSource(int which) {
+        if(which<UProperty.BINARY_START) {
+            return SRC_NONE; /* undefined */
+        } else if(which<UProperty.BINARY_LIMIT) {
+            if(binProps[which].mask!=0) {
+                return SRC_PROPSVEC;
+            } else {
+                return binProps[which].column;
+            }
+        } else if(which<UProperty.INT_START) {
+            return SRC_NONE; /* undefined */
+        } else if(which<UProperty.INT_LIMIT) {
+            switch(which) {
+            case UProperty.GENERAL_CATEGORY:
+            case UProperty.NUMERIC_TYPE:
+                return SRC_CHAR;
+
+            case UProperty.HANGUL_SYLLABLE_TYPE:
+                return SRC_HST;
+
+            case UProperty.CANONICAL_COMBINING_CLASS:
+            case UProperty.NFD_QUICK_CHECK:
+            case UProperty.NFKD_QUICK_CHECK:
+            case UProperty.NFC_QUICK_CHECK:
+            case UProperty.NFKC_QUICK_CHECK:
+            case UProperty.LEAD_CANONICAL_COMBINING_CLASS:
+            case UProperty.TRAIL_CANONICAL_COMBINING_CLASS:
+                return SRC_NORM;
+
+            case UProperty.BIDI_CLASS:
+            case UProperty.JOINING_GROUP:
+            case UProperty.JOINING_TYPE:
+                return SRC_BIDI;
+
+            default:
+                return SRC_PROPSVEC;
+            }
+        } else if(which<UProperty.STRING_START) {
+            switch(which) {
+            case UProperty.GENERAL_CATEGORY_MASK:
+            case UProperty.NUMERIC_VALUE:
+                return SRC_CHAR;
+
+            default:
+                return SRC_NONE;
+            }
+        } else if(which<UProperty.STRING_LIMIT) {
+            switch(which) {
+            case UProperty.AGE:
+                return SRC_PROPSVEC;
+
+            case UProperty.BIDI_MIRRORING_GLYPH:
+                return SRC_BIDI;
+
+            case UProperty.CASE_FOLDING:
+            case UProperty.LOWERCASE_MAPPING:
+            case UProperty.SIMPLE_CASE_FOLDING:
+            case UProperty.SIMPLE_LOWERCASE_MAPPING:
+            case UProperty.SIMPLE_TITLECASE_MAPPING:
+            case UProperty.SIMPLE_UPPERCASE_MAPPING:
+            case UProperty.TITLECASE_MAPPING:
+            case UProperty.UPPERCASE_MAPPING:
+                return SRC_CASE;
+
+            case UProperty.ISO_COMMENT:
+            case UProperty.NAME:
+            case UProperty.UNICODE_1_NAME:
+                return SRC_NAMES;
+
+            default:
+                return SRC_NONE;
+            }
+        } else {
+            return SRC_NONE; /* undefined */
+        }
+    }
+
+    /**
+    * Forms a supplementary code point from the argument character<br>
+    * Note this is for internal use hence no checks for the validity of the
+    * surrogate characters are done
+    * @param lead lead surrogate character
+    * @param trail trailing surrogate character
+    * @return code point of the supplementary character
+    */
+    public static int getRawSupplementary(char lead, char trail)
+    {
+        return (lead << LEAD_SURROGATE_SHIFT_) + trail + SURROGATE_OFFSET_;
+    }
+
+    /**
+    * Loads the property data and initialize the UCharacterProperty instance.
+    * @throws MissingResourceException when data is missing or data has been corrupted
+    */
+    public static UCharacterProperty getInstance()
+    {
+        if(INSTANCE_ == null) {
+            try {
+                INSTANCE_ = new UCharacterProperty();
+            }
+            catch (Exception e) {
+                throw new MissingResourceException(e.getMessage(),"","");
+            }
+        }
+        return INSTANCE_;
+    }
+
+    /**
+     * <p>
+     * Unicode property names and property value names are compared
+     * "loosely". Property[Value]Aliases.txt say:
+     * <quote>
+     *   "With loose matching of property names, the case distinctions,
+     *    whitespace, and '_' are ignored."
+     * </quote>
+     * </p>
+     * <p>
+     * This function does just that, for ASCII (char *) name strings.
+     * It is almost identical to ucnv_compareNames() but also ignores
+     * ASCII White_Space characters (U+0009..U+000d).
+     * </p>
+     * @param name1 name to compare
+     * @param name2 name to compare
+     * @return 0 if names are equal, < 0 if name1 is less than name2 and > 0
+     *         if name1 is greater than name2.
+     */
+    /* to be implemented in 2.4
+     * public static int comparePropertyNames(String name1, String name2)
+    {
+        int result = 0;
+        int i1 = 0;
+        int i2 = 0;
+        while (true) {
+            char ch1 = 0;
+            char ch2 = 0;
+            // Ignore delimiters '-', '_', and ASCII White_Space
+            if (i1 < name1.length()) {
+                ch1 = name1.charAt(i1 ++);
+            }
+            while (ch1 == '-' || ch1 == '_' || ch1 == ' ' || ch1 == '\t'
+                   || ch1 == '\n' // synwee what is || ch1 == '\v'
+                   || ch1 == '\f' || ch1=='\r') {
+                if (i1 < name1.length()) {
+                    ch1 = name1.charAt(i1 ++);
+                }
+                else {
+                    ch1 = 0;
+                }
+            }
+            if (i2 < name2.length()) {
+                ch2 = name2.charAt(i2 ++);
+            }
+            while (ch2 == '-' || ch2 == '_' || ch2 == ' ' || ch2 == '\t'
+                   || ch2 == '\n' // synwee what is || ch1 == '\v'
+                   || ch2 == '\f' || ch2=='\r') {
+                if (i2 < name2.length()) {
+                    ch2 = name2.charAt(i2 ++);
+                }
+                else {
+                    ch2 = 0;
+                }
+            }
+
+            // If we reach the ends of both strings then they match
+            if (ch1 == 0 && ch2 == 0) {
+                return 0;
+            }
+
+            // Case-insensitive comparison
+            if (ch1 != ch2) {
+                result = Character.toLowerCase(ch1)
+                                                - Character.toLowerCase(ch2);
+                if (result != 0) {
+                    return result;
+                }
+            }
+        }
+    }
+    */
+
+    /**
+     * Checks if the argument c is to be treated as a white space in ICU
+     * rules. Usually ICU rule white spaces are ignored unless quoted.
+     * Equivalent to test for Pattern_White_Space Unicode property.
+     * Stable set of characters, won't change.
+     * See UAX #31 Identifier and Pattern Syntax: http://www.unicode.org/reports/tr31/
+     * @param c codepoint to check
+     * @return true if c is a ICU white space
+     */
+    public static boolean isRuleWhiteSpace(int c)
+    {
+        /* "white space" in the sense of ICU rule parsers
+           This is a FIXED LIST that is NOT DEPENDENT ON UNICODE PROPERTIES.
+           See UAX #31 Identifier and Pattern Syntax: http://www.unicode.org/reports/tr31/
+           U+0009..U+000D, U+0020, U+0085, U+200E..U+200F, and U+2028..U+2029
+           Equivalent to test for Pattern_White_Space Unicode property.
+        */
+        return (c >= 0x0009 && c <= 0x2029 &&
+                (c <= 0x000D || c == 0x0020 || c == 0x0085 ||
+                 c == 0x200E || c == 0x200F || c >= 0x2028));
+    }
+
+    /**
+     * Get the the maximum values for some enum/int properties.
+     * @return maximum values for the integer properties.
+     */
+    public int getMaxValues(int column)
+    {
+       // return m_maxBlockScriptValue_;
+
+        switch(column) {
+        case 0:
+            return m_maxBlockScriptValue_;
+        case 2:
+            return m_maxJTGValue_;
+        default:
+            return 0;
+        }
+    }
+
+    /**
+     * Gets the type mask
+     * @param type character type
+     * @return mask
+     */
+    public static final int getMask(int type)
+    {
+        return 1 << type;
+    }
+
+    // protected variables -----------------------------------------------
+
+    /**
+     * Extra property trie
+     */
+    CharTrie m_additionalTrie_;
+    /**
+     * Extra property vectors, 1st column for age and second for binary
+     * properties.
+     */
+    int m_additionalVectors_[];
+    /**
+     * Number of additional columns
+     */
+    int m_additionalColumnsCount_;
+    /**
+     * Maximum values for block, bits used as in vector word
+     * 0
+     */
+    int m_maxBlockScriptValue_;
+    /**
+     * Maximum values for script, bits used as in vector word
+     * 0
+     */
+     int m_maxJTGValue_;
+    // private variables -------------------------------------------------
+
+      /**
+     * UnicodeData.txt property object
+     */
+    private static UCharacterProperty INSTANCE_ = null;
+
+    /**
+    * Default name of the datafile
+    */
+    private static final String DATA_FILE_NAME_ = ICUResourceBundle.ICU_BUNDLE+"/uprops.icu";
+
+    /**
+    * Default buffer size of datafile
+    */
+    private static final int DATA_BUFFER_SIZE_ = 25000;
+
+    /**
+    * Numeric value shift
+    */
+    private static final int VALUE_SHIFT_ = 8;
+
+    /**
+    * Mask to be applied after shifting to obtain an unsigned numeric value
+    */
+    private static final int UNSIGNED_VALUE_MASK_AFTER_SHIFT_ = 0xFF;
+
+    /*
+     *
+     */
+    //private static final int NUMERIC_TYPE_SHIFT = 5;
+
+    /*
+    * To get the last 5 bits out from a data type
+    */
+    //private static final int LAST_5_BIT_MASK_ = 0x1F;
+
+    /**
+    * Shift value for lead surrogate to form a supplementary character.
+    */
+    private static final int LEAD_SURROGATE_SHIFT_ = 10;
+    /**
+    * Offset to add to combined surrogate pair to avoid msking.
+    */
+    private static final int SURROGATE_OFFSET_ =
+                           UTF16.SUPPLEMENTARY_MIN_VALUE -
+                           (UTF16.SURROGATE_MIN_VALUE <<
+                           LEAD_SURROGATE_SHIFT_) -
+                           UTF16.TRAIL_SURROGATE_MIN_VALUE;
+
+
+    // additional properties ----------------------------------------------
+
+    /**
+     * Additional properties used in internal trie data
+     */
+    /*
+     * Properties in vector word 1
+     * Each bit encodes one binary property.
+     * The following constants represent the bit number, use 1<<UPROPS_XYZ.
+     * UPROPS_BINARY_1_TOP<=32!
+     *
+     * Keep this list of property enums in sync with
+     * propListNames[] in icu/source/tools/genprops/props2.c!
+     *
+     * ICU 2.6/uprops format version 3.2 stores full properties instead of "Other_".
+     */
+    private static final int WHITE_SPACE_PROPERTY_ = 0;
+    private static final int DASH_PROPERTY_ = 1;
+    private static final int HYPHEN_PROPERTY_ = 2;
+    private static final int QUOTATION_MARK_PROPERTY_ = 3;
+    private static final int TERMINAL_PUNCTUATION_PROPERTY_ = 4;
+    private static final int MATH_PROPERTY_ = 5;
+    private static final int HEX_DIGIT_PROPERTY_ = 6;
+    private static final int ASCII_HEX_DIGIT_PROPERTY_ = 7;
+    private static final int ALPHABETIC_PROPERTY_ = 8;
+    private static final int IDEOGRAPHIC_PROPERTY_ = 9;
+    private static final int DIACRITIC_PROPERTY_ = 10;
+    private static final int EXTENDER_PROPERTY_ = 11;
+    private static final int NONCHARACTER_CODE_POINT_PROPERTY_ = 12;
+    private static final int GRAPHEME_EXTEND_PROPERTY_ = 13;
+    private static final int GRAPHEME_LINK_PROPERTY_ = 14;
+    private static final int IDS_BINARY_OPERATOR_PROPERTY_ = 15;
+    private static final int IDS_TRINARY_OPERATOR_PROPERTY_ = 16;
+    private static final int RADICAL_PROPERTY_ = 17;
+    private static final int UNIFIED_IDEOGRAPH_PROPERTY_ = 18;
+    private static final int DEFAULT_IGNORABLE_CODE_POINT_PROPERTY_ = 19;
+    private static final int DEPRECATED_PROPERTY_ = 20;
+    private static final int LOGICAL_ORDER_EXCEPTION_PROPERTY_ = 21;
+    private static final int XID_START_PROPERTY_ = 22;
+    private static final int XID_CONTINUE_PROPERTY_ = 23;
+    private static final int ID_START_PROPERTY_    = 24;
+    private static final int ID_CONTINUE_PROPERTY_ = 25;
+    private static final int GRAPHEME_BASE_PROPERTY_ = 26;
+    private static final int S_TERM_PROPERTY_ = 27;
+    private static final int VARIATION_SELECTOR_PROPERTY_ = 28;
+    private static final int PATTERN_SYNTAX = 29;                   /* new in ICU 3.4 and Unicode 4.1 */
+    private static final int PATTERN_WHITE_SPACE = 30;
+
+    /**
+     * First nibble shift
+     */
+    private static final int FIRST_NIBBLE_SHIFT_ = 0x4;
+    /**
+     * Second nibble mask
+     */
+    private static final int LAST_NIBBLE_MASK_ = 0xF;
+    /**
+     * Age value shift
+     */
+    private static final int AGE_SHIFT_ = 24;
+
+
+    // private constructors --------------------------------------------------
+
+    /**
+    * Constructor
+    * @exception IOException thrown when data reading fails or data corrupted
+    */
+    private UCharacterProperty() throws IOException
+    {
+        // jar access
+        InputStream is = ICUData.getRequiredStream(DATA_FILE_NAME_);
+        BufferedInputStream b = new BufferedInputStream(is, DATA_BUFFER_SIZE_);
+        UCharacterPropertyReader reader = new UCharacterPropertyReader(b);
+        reader.read(this);
+        b.close();
+
+        m_trie_.putIndexData(this);
+    }
+
+    // private methods -------------------------------------------------------
+
+    /*
+     * Compare additional properties to see if it has argument type
+     * @param property 32 bit properties
+     * @param type character type
+     * @return true if property has type
+     */
+    /*private boolean compareAdditionalType(int property, int type)
+    {
+        return (property & (1 << type)) != 0;
+    }*/
+
+    // property starts for UnicodeSet -------------------------------------- ***
+
+    private static final int TAB     = 0x0009;
+    //private static final int LF      = 0x000a;
+    //private static final int FF      = 0x000c;
+    private static final int CR      = 0x000d;
+    private static final int U_A     = 0x0041;
+    private static final int U_F     = 0x0046;
+    private static final int U_Z     = 0x005a;
+    private static final int U_a     = 0x0061;
+    private static final int U_f     = 0x0066;
+    private static final int U_z     = 0x007a;
+    private static final int DEL     = 0x007f;
+    private static final int NL      = 0x0085;
+    private static final int NBSP    = 0x00a0;
+    private static final int CGJ     = 0x034f;
+    private static final int FIGURESP= 0x2007;
+    private static final int HAIRSP  = 0x200a;
+    //private static final int ZWNJ    = 0x200c;
+    //private static final int ZWJ     = 0x200d;
+    private static final int RLM     = 0x200f;
+    private static final int NNBSP   = 0x202f;
+    private static final int WJ      = 0x2060;
+    private static final int INHSWAP = 0x206a;
+    private static final int NOMDIG  = 0x206f;
+    private static final int U_FW_A  = 0xff21;
+    private static final int U_FW_F  = 0xff26;
+    private static final int U_FW_Z  = 0xff3a;
+    private static final int U_FW_a  = 0xff41;
+    private static final int U_FW_f  = 0xff46;
+    private static final int U_FW_z  = 0xff5a;
+    private static final int ZWNBSP  = 0xfeff;
+
+    /* for Hangul_Syllable_Type */
+    public void uhst_addPropertyStarts(UnicodeSet set) {
+        /* add code points with hardcoded properties, plus the ones following them */
+
+        /*
+         * Add Jamo type boundaries for UCHAR_HANGUL_SYLLABLE_TYPE.
+         * First, we add fixed boundaries for the blocks of Jamos.
+         * Then we check in loops to see where the current Unicode version
+         * actually stops assigning such Jamos. We start each loop
+         * at the end of the per-Jamo-block assignments in Unicode 4 or earlier.
+         * (These have not changed since Unicode 2.)
+         */
+        int c, value, value2;
+
+        set.add(0x1100);
+        value=UCharacter.HangulSyllableType.LEADING_JAMO;
+        for(c=0x115a; c<=0x115f; ++c) {
+            value2= UCharacter.getIntPropertyValue(c, UProperty.HANGUL_SYLLABLE_TYPE);
+            if(value!=value2) {
+                value=value2;
+                set.add(c);
+            }
+        }
+
+        set.add(0x1160);
+        value=UCharacter.HangulSyllableType.VOWEL_JAMO;
+        for(c=0x11a3; c<=0x11a7; ++c) {
+            value2=UCharacter.getIntPropertyValue(c, UProperty.HANGUL_SYLLABLE_TYPE);
+            if(value!=value2) {
+                value=value2;
+                set.add(c);
+            }
+        }
+
+        set.add(0x11a8);
+        value=UCharacter.HangulSyllableType.TRAILING_JAMO;
+        for(c=0x11fa; c<=0x11ff; ++c) {
+            value2=UCharacter.getIntPropertyValue(c, UProperty.HANGUL_SYLLABLE_TYPE);
+            if(value!=value2) {
+                value=value2;
+                set.add(c);
+            }
+        }
+
+        /* Add Hangul type boundaries for UCHAR_HANGUL_SYLLABLE_TYPE. */
+        for(c=NormalizerImpl.HANGUL_BASE; c<(NormalizerImpl.HANGUL_BASE+NormalizerImpl.HANGUL_COUNT); c+=NormalizerImpl.JAMO_T_COUNT) {
+            set.add(c);
+            set.add(c+1);
+        }
+        set.add(c);
+    }
+
+    public UnicodeSet addPropertyStarts(UnicodeSet set) {
+        /* add the start code point of each same-value range of the main trie */
+        TrieIterator propsIter = new TrieIterator(m_trie_);
+        RangeValueIterator.Element propsResult = new RangeValueIterator.Element();
+          while(propsIter.next(propsResult)){
+            set.add(propsResult.start);
+        }
+
+        /* add code points with hardcoded properties, plus the ones following them */
+
+        /* add for u_isblank() */
+        set.add(TAB);
+        set.add(TAB+1);
+
+        /* add for IS_THAT_CONTROL_SPACE() */
+        set.add(CR+1); /* range TAB..CR */
+        set.add(0x1c);
+        set.add(0x1f+1);
+        set.add(NL);
+        set.add(NL+1);
+
+        /* add for u_isIDIgnorable() what was not added above */
+        set.add(DEL); /* range DEL..NBSP-1, NBSP added below */
+        set.add(HAIRSP);
+        set.add(RLM+1);
+        set.add(INHSWAP);
+        set.add(NOMDIG+1);
+        set.add(ZWNBSP);
+        set.add(ZWNBSP+1);
+
+        /* add no-break spaces for u_isWhitespace() what was not added above */
+        set.add(NBSP);
+        set.add(NBSP+1);
+        set.add(FIGURESP);
+        set.add(FIGURESP+1);
+        set.add(NNBSP);
+        set.add(NNBSP+1);
+
+        /* add for u_charDigitValue() */
+        // TODO remove when UCharacter.getHanNumericValue() is changed to just return
+        // Unicode numeric values 
+        set.add(0x3007);
+        set.add(0x3008);
+        set.add(0x4e00);
+        set.add(0x4e01);
+        set.add(0x4e8c);
+        set.add(0x4e8d);
+        set.add(0x4e09);
+        set.add(0x4e0a);
+        set.add(0x56db);
+        set.add(0x56dc);
+        set.add(0x4e94);
+        set.add(0x4e95);
+        set.add(0x516d);
+        set.add(0x516e);
+        set.add(0x4e03);
+        set.add(0x4e04);
+        set.add(0x516b);
+        set.add(0x516c);
+        set.add(0x4e5d);
+        set.add(0x4e5e);
+
+        /* add for u_digit() */
+        set.add(U_a);
+        set.add(U_z+1);
+        set.add(U_A);
+        set.add(U_Z+1);
+        set.add(U_FW_a);
+        set.add(U_FW_z+1);
+        set.add(U_FW_A);
+        set.add(U_FW_Z+1);
+
+        /* add for u_isxdigit() */
+        set.add(U_f+1);
+        set.add(U_F+1);
+        set.add(U_FW_f+1);
+        set.add(U_FW_F+1);
+
+        /* add for UCHAR_DEFAULT_IGNORABLE_CODE_POINT what was not added above */
+        set.add(WJ); /* range WJ..NOMDIG */
+        set.add(0xfff0);
+        set.add(0xfffb+1);
+        set.add(0xe0000);
+        set.add(0xe0fff+1);
+
+        /* add for UCHAR_GRAPHEME_BASE and others */
+        set.add(CGJ);
+        set.add(CGJ+1);
+
+        return set; // for chaining
+    }
+
+    public void upropsvec_addPropertyStarts(UnicodeSet set) {
+        /* add the start code point of each same-value range of the properties vectors trie */
+        if(m_additionalColumnsCount_>0) {
+            /* if m_additionalColumnsCount_==0 then the properties vectors trie may not be there at all */
+            TrieIterator propsVectorsIter = new TrieIterator(m_additionalTrie_);
+            RangeValueIterator.Element propsVectorsResult = new RangeValueIterator.Element();
+            while(propsVectorsIter.next(propsVectorsResult)){
+                set.add(propsVectorsResult.start);
+            }
+        }
+    }
+
+/*----------------------------------------------------------------
+ * Inclusions list
+ *----------------------------------------------------------------*/
+
+    /*
+     * Return a set of characters for property enumeration.
+     * The set implicitly contains 0x110000 as well, which is one more than the highest
+     * Unicode code point.
+     *
+     * This set is used as an ordered list - its code points are ordered, and
+     * consecutive code points (in Unicode code point order) in the set define a range.
+     * For each two consecutive characters (start, limit) in the set,
+     * all of the UCD/normalization and related properties for
+     * all code points start..limit-1 are all the same,
+     * except for character names and ISO comments.
+     *
+     * All Unicode code points U+0000..U+10ffff are covered by these ranges.
+     * The ranges define a partition of the Unicode code space.
+     * ICU uses the inclusions set to enumerate properties for generating
+     * UnicodeSets containing all code points that have a certain property value.
+     *
+     * The Inclusion List is generated from the UCD. It is generated
+     * by enumerating the data tries, and code points for hardcoded properties
+     * are added as well.
+     *
+     * --------------------------------------------------------------------------
+     *
+     * The following are ideas for getting properties-unique code point ranges,
+     * with possible optimizations beyond the current implementation.
+     * These optimizations would require more code and be more fragile.
+     * The current implementation generates one single list (set) for all properties.
+     *
+     * To enumerate properties efficiently, one needs to know ranges of
+     * repetitive values, so that the value of only each start code point
+     * can be applied to the whole range.
+     * This information is in principle available in the uprops.icu/unorm.icu data.
+     *
+     * There are two obstacles:
+     *
+     * 1. Some properties are computed from multiple data structures,
+     *    making it necessary to get repetitive ranges by intersecting
+     *    ranges from multiple tries.
+     *
+     * 2. It is not economical to write code for getting repetitive ranges
+     *    that are precise for each of some 50 properties.
+     *
+     * Compromise ideas:
+     *
+     * - Get ranges per trie, not per individual property.
+     *   Each range contains the same values for a whole group of properties.
+     *   This would generate currently five range sets, two for uprops.icu tries
+     *   and three for unorm.icu tries.
+     *
+     * - Combine sets of ranges for multiple tries to get sufficient sets
+     *   for properties, e.g., the uprops.icu main and auxiliary tries
+     *   for all non-normalization properties.
+     *
+     * Ideas for representing ranges and combining them:
+     *
+     * - A UnicodeSet could hold just the start code points of ranges.
+     *   Multiple sets are easily combined by or-ing them together.
+     *
+     * - Alternatively, a UnicodeSet could hold each even-numbered range.
+     *   All ranges could be enumerated by using each start code point
+     *   (for the even-numbered ranges) as well as each limit (end+1) code point
+     *   (for the odd-numbered ranges).
+     *   It should be possible to combine two such sets by xor-ing them,
+     *   but no more than two.
+     *
+     * The second way to represent ranges may(?!) yield smaller UnicodeSet arrays,
+     * but the first one is certainly simpler and applicable for combining more than
+     * two range sets.
+     *
+     * It is possible to combine all range sets for all uprops/unorm tries into one
+     * set that can be used for all properties.
+     * As an optimization, there could be less-combined range sets for certain
+     * groups of properties.
+     * The relationship of which less-combined range set to use for which property
+     * depends on the implementation of the properties and must be hardcoded
+     * - somewhat error-prone and higher maintenance but can be tested easily
+     * by building property sets "the simple way" in test code.
+     *
+     * ---
+     *
+     * Do not use a UnicodeSet pattern because that causes infinite recursion;
+     * UnicodeSet depends on the inclusions set.
+     *
+     * ---
+     *
+     * getInclusions() is commented out starting 2005-feb-12 because
+     * UnicodeSet now calls the uxyz_addPropertyStarts() directly,
+     * and only for the relevant property source.
+     */
+    /*
+    public UnicodeSet getInclusions() {
+        UnicodeSet set = new UnicodeSet();
+        NormalizerImpl.addPropertyStarts(set);
+        addPropertyStarts(set);
+        return set;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/impl/UCharacterPropertyReader.java b/src/com/ibm/icu/impl/UCharacterPropertyReader.java
new file mode 100644
index 0000000..abe337b
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterPropertyReader.java
@@ -0,0 +1,161 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+* <p>Internal reader class for ICU data file uprops.icu containing 
+* Unicode codepoint data.</p> 
+* <p>This class simply reads uprops.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=UCharacterProperty.html>com.ibm.icu.impl.UCharacterProperty</a>.
+* </p> 
+* <p>uprops.icu which is in big-endian format is jared together with this 
+* package.</p>
+*
+* Unicode character properties file format see
+* (ICU4C)/source/tools/genprops/store.c
+*
+* @author Syn Wee Quek
+* @since release 2.1, February 1st 2002
+*/
+final class UCharacterPropertyReader implements ICUBinary.Authenticate
+{
+    // public methods ----------------------------------------------------
+    
+    public boolean isDataVersionAcceptable(byte version[])
+    {
+        return version[0] == DATA_FORMAT_VERSION_[0] 
+               && version[2] == DATA_FORMAT_VERSION_[2] 
+               && version[3] == DATA_FORMAT_VERSION_[3];
+    }
+    
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprop.dat file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    protected UCharacterPropertyReader(InputStream inputStream) 
+                                                        throws IOException
+    {
+        m_unicodeVersion_ = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, 
+                                                 this);
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+    
+    // protected methods -------------------------------------------------
+      
+    /**
+    * <p>Reads uprops.icu, parse it into blocks of data to be stored in
+    * UCharacterProperty.</P
+    * @param ucharppty UCharacterProperty instance
+    * @exception IOException thrown when data reading fails
+    */
+    protected void read(UCharacterProperty ucharppty) throws IOException
+    {
+        // read the indexes
+        int count = INDEX_SIZE_;
+        m_propertyOffset_          = m_dataInputStream_.readInt();
+        count --;
+        m_exceptionOffset_         = m_dataInputStream_.readInt();
+        count --;
+        m_caseOffset_              = m_dataInputStream_.readInt();
+        count --;
+        m_additionalOffset_        = m_dataInputStream_.readInt();
+        count --;
+        m_additionalVectorsOffset_ = m_dataInputStream_.readInt();
+        count --;
+        m_additionalColumnsCount_  = m_dataInputStream_.readInt();
+        count --;
+        m_reservedOffset_          = m_dataInputStream_.readInt();
+        count --;
+        m_dataInputStream_.skipBytes(3 << 2);
+        count -= 3;
+        ucharppty.m_maxBlockScriptValue_ = m_dataInputStream_.readInt();
+        count --; // 10
+        ucharppty.m_maxJTGValue_ = m_dataInputStream_.readInt();
+        count --; // 11
+        m_dataInputStream_.skipBytes(count << 2);
+
+        // read the trie index block
+        // m_props_index_ in terms of ints
+        ucharppty.m_trie_ = new CharTrie(m_dataInputStream_, null);
+
+        // skip the 32 bit properties block
+        int size = m_exceptionOffset_ - m_propertyOffset_;
+        m_dataInputStream_.skipBytes(size * 4);
+
+        // reads the 32 bit exceptions block
+        size = m_caseOffset_ - m_exceptionOffset_;
+        m_dataInputStream_.skipBytes(size * 4);
+
+        // reads the 32 bit case block
+        size = (m_additionalOffset_ - m_caseOffset_) << 1;
+        m_dataInputStream_.skipBytes(size * 2);
+
+        if(m_additionalColumnsCount_ > 0) {
+            // reads the additional property block
+            ucharppty.m_additionalTrie_ = new CharTrie(m_dataInputStream_, null);
+                                                               
+            // additional properties
+            size = m_reservedOffset_ - m_additionalVectorsOffset_;
+            ucharppty.m_additionalVectors_ = new int[size];
+            for (int i = 0; i < size; i ++) {
+                ucharppty.m_additionalVectors_[i] = m_dataInputStream_.readInt();
+            }
+        }
+
+        m_dataInputStream_.close();
+        ucharppty.m_additionalColumnsCount_ = m_additionalColumnsCount_;
+        ucharppty.m_unicodeVersion_ = VersionInfo.getInstance(
+                         (int)m_unicodeVersion_[0], (int)m_unicodeVersion_[1],
+                         (int)m_unicodeVersion_[2], (int)m_unicodeVersion_[3]);
+    }
+    
+    // private variables -------------------------------------------------
+      
+    /**
+    * Index size
+    */
+    private static final int INDEX_SIZE_ = 16;
+    
+    /**
+    * ICU data file input stream
+    */
+    private DataInputStream m_dataInputStream_;
+      
+    /**
+    * Offset information in the indexes.
+    */
+    private int m_propertyOffset_;
+    private int m_exceptionOffset_;
+    private int m_caseOffset_;
+    private int m_additionalOffset_;
+    private int m_additionalVectorsOffset_;
+    private int m_additionalColumnsCount_;
+    private int m_reservedOffset_;
+    private byte m_unicodeVersion_[];  
+                                      
+    /**
+    * Data format "UPro".
+    */
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x55, (byte)0x50, 
+                                                    (byte)0x72, (byte)0x6F};
+    /**
+     * Format version; this code works with all versions with the same major
+     * version number and the same Trie bit distribution.
+     */
+    private static final byte DATA_FORMAT_VERSION_[] = {(byte)0x5, (byte)0, 
+                                             (byte)Trie.INDEX_STAGE_1_SHIFT_, 
+                                             (byte)Trie.INDEX_STAGE_2_SHIFT_};
+}
diff --git a/src/com/ibm/icu/impl/UCharacterUtility.java b/src/com/ibm/icu/impl/UCharacterUtility.java
new file mode 100644
index 0000000..dc10e06
--- /dev/null
+++ b/src/com/ibm/icu/impl/UCharacterUtility.java
@@ -0,0 +1,194 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.impl;
+
+/**
+* Internal character utility class for simple data type conversion and String 
+* parsing functions. Does not have an analog in the JDK.
+* @author Syn Wee Quek
+* @since sep2900
+*/
+
+public final class UCharacterUtility
+{
+    // public methods -----------------------------------------------------
+    
+    /**
+    * Determines if codepoint is a non character
+    * @param ch codepoint
+    * @return true if codepoint is a non character false otherwise
+    */
+    public static boolean isNonCharacter(int ch) 
+    {
+        if ((ch & NON_CHARACTER_SUFFIX_MIN_3_0_) == 
+                                            NON_CHARACTER_SUFFIX_MIN_3_0_) {
+            return true;
+        }
+        
+        return ch >= NON_CHARACTER_MIN_3_1_ && ch <=  NON_CHARACTER_MAX_3_1_;
+    }
+    
+    // package private methods ---------------------------------------------
+      
+    /**
+    * joining 2 chars to form an int
+    * @param msc most significant char
+    * @param lsc least significant char
+    * @return int form
+    */
+    static int toInt(char msc, char lsc)
+    {
+        return ((msc << 16) | lsc);
+    }
+       
+    /**
+    * Retrieves a null terminated substring from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. If the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param str stringbuffer to store data in, data will be store with each
+    *            byte as a char
+    * @param array byte array
+    * @param index to start substring in byte count
+    * @return the end position of the substring within the character array
+    */
+    static int getNullTermByteSubString(StringBuffer str, byte[] array, 
+                                                  int index)
+    {
+        byte b = 1;
+        
+        while (b != 0)
+        {
+            b = array[index];
+            if (b != 0) {
+                str.append((char)(b & 0x00FF));
+            }
+            index ++;
+        }
+        return index;
+    }
+       
+    /**
+    * Compares a null terminated substring from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. if the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param str string to compare
+    * @param array byte array
+    * @param strindex index within str to start comparing
+    * @param aindex array index to start in byte count
+    * @return the end position of the substring within str if matches otherwise 
+    *         a -1
+    */
+    static int compareNullTermByteSubString(String str, byte[] array, 
+                                                      int strindex, int aindex)
+    {
+        byte b = 1;
+        int length = str.length();
+        
+        while (b != 0)
+        {
+            b = array[aindex];  
+            aindex ++;
+            if (b == 0) {
+                break;
+            }
+            // if we have reached the end of the string and yet the array has not 
+            // reached the end of their substring yet, abort
+            if (strindex == length 
+                || (str.charAt(strindex) != (char)(b & 0xFF))) {
+              return -1;
+            }
+            strindex ++;
+        }
+        return strindex;
+    }
+       
+    /**
+    * Skip null terminated substrings from an array of bytes.
+    * Substring is a set of non-zero bytes starting from argument start to the 
+    * next zero byte. If the first byte is a zero, the next byte will be taken as
+    * the first byte.
+    * @param array byte array
+    * @param index to start substrings in byte count
+    * @param skipcount number of null terminated substrings to skip
+    * @return the end position of the substrings within the character array
+    */
+    static int skipNullTermByteSubString(byte[] array, int index, 
+                                                   int skipcount)
+    {
+        byte b;
+        for (int i = 0; i < skipcount; i ++)
+        {
+            b = 1;
+            while (b != 0)
+            {
+                b = array[index];
+                index ++;
+            }
+        }
+        return index;
+    }
+       
+    /**
+     * skip substrings from an array of characters, where each character is a set 
+     * of 2 bytes. substring is a set of non-zero bytes starting from argument 
+     * start to the byte of the argument value. skips up to a max number of 
+     * characters
+     * @param array byte array to parse
+     * @param index to start substrings in byte count
+     * @param length the max number of bytes to skip
+     * @param skipend value of byte to skip to
+     * @return the number of bytes skipped
+     */
+    static int skipByteSubString(byte[] array, int index, int length, 
+                                           byte skipend)
+    {
+        int result;
+        byte b;
+        
+        for (result = 0; result < length; result ++)
+        {
+            b = array[index + result];
+            if (b == skipend)
+            {
+                result ++;
+                break;
+            }
+        }
+        
+        return result;
+    }
+    
+    // private data member --------------------------------------------------
+    
+    /**
+    * Minimum suffix value that indicates if a character is non character.
+    * Unicode 3.0 non characters
+    */
+    private static final int NON_CHARACTER_SUFFIX_MIN_3_0_ = 0xFFFE;
+    /**
+    * New minimum non character in Unicode 3.1
+    */
+    private static final int NON_CHARACTER_MIN_3_1_ = 0xFDD0;
+    /**
+    * New non character range in Unicode 3.1
+    */
+    private static final int NON_CHARACTER_MAX_3_1_ = 0xFDEF;
+    
+    // private constructor --------------------------------------------------
+      
+    ///CLOVER:OFF
+    /**
+    * private constructor to avoid initialisation
+    */
+    private UCharacterUtility()
+    {
+    }
+    ///CLOVER:ON
+}
+
diff --git a/src/com/ibm/icu/impl/UPropertyAliases.java b/src/com/ibm/icu/impl/UPropertyAliases.java
new file mode 100644
index 0000000..146f9b0
--- /dev/null
+++ b/src/com/ibm/icu/impl/UPropertyAliases.java
@@ -0,0 +1,654 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2007, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Alan Liu
+ * Created: November 5 2002
+ * Since: ICU 2.4
+ **********************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.io.*;
+
+import com.ibm.icu.lang.*;
+
+/**
+ * Wrapper for the pnames.icu binary data file.  This data file is
+ * imported from icu4c.  It contains property and property value
+ * aliases from the UCD files PropertyAliases.txt and
+ * PropertyValueAliases.txt.  The file is built by the icu4c tool
+ * genpname.  It must be built on an ASCII big-endian platform to be
+ * usable in icu4j.
+ *
+ * This class performs two functions.
+ *
+ * (1) It can import the flat binary data into a tree of usable
+ * objects.
+ *
+ * (2) It provides an API to access the tree of objects.
+ *
+ * Needless to say, this class is tightly coupled to the binary format
+ * of icu4c's pnames.icu file.
+ *
+ * Each time a UPropertyAliases is constructed, the pnames.icu file is
+ * read, parsed, and a data tree assembled.  Clients should create one
+ * singleton instance and cache it.
+ *
+ * @author Alan Liu
+ * @since ICU 2.4
+ */
+public final class UPropertyAliases implements ICUBinary.Authenticate {
+
+    //----------------------------------------------------------------
+    // Runtime data.  This is an unflattened representation of the
+    // data in pnames.icu.
+
+    /**
+     * Map from property enum value to nameGroupPool[] index
+     */
+    private NonContiguousEnumToShort enumToName;
+
+    /**
+     * Map from property alias to property enum value
+     */
+    private NameToEnum nameToEnum;
+
+    /**
+     * Map from property enum value to valueMapArray[] index
+     */
+    private NonContiguousEnumToShort enumToValue;
+
+    /**
+     * Each entry represents a binary or enumerated property
+     */
+    private ValueMap valueMapArray[];
+
+    /**
+     * Pool of concatenated integer runs.  Each run contains one
+     * or more entries.  The last entry of the run is negative.
+     * A zero entry indicates "n/a" in the Property*Aliases.txt.
+     * Each entry is a stringPool[] index.
+     */
+    private short nameGroupPool[];
+
+    /**
+     * Pool of strings.
+     */
+    private String stringPool[];
+
+    //----------------------------------------------------------------
+    // Constants
+
+    /**
+     * Debug flag (not really constant)
+     */
+    private static boolean DEBUG = ICUDebug.enabled("pnames");
+
+    /**
+     * File format that this class understands.
+     * See icu4c/src/common/propname.h.
+     */
+    private static final byte DATA_FORMAT_ID[] = {'p', 'n', 'a', 'm'};
+
+    /**
+     * File version that this class understands.
+     * See icu4c/src/common/propname.h.
+     */
+    private static final byte DATA_FORMAT_VERSION = 1;
+
+    /**
+     * Name of the datafile
+     */
+    private static final String DATA_FILE_NAME = ICUResourceBundle.ICU_BUNDLE+"/pnames.icu";
+
+    /**
+     * Buffer size of datafile.  The whole file is < 16k.
+     */
+    private static final int DATA_BUFFER_SIZE = 8192;
+
+    //----------------------------------------------------------------
+    // Constructor
+
+    /**
+     * Constructs a UPropertyAliases object.  The binary file
+     * DATA_FILE_NAME is read from the jar/classpath and unflattened
+     * into member variables of this object.
+     */
+    public UPropertyAliases() throws IOException {
+
+        // Open the .icu file from the jar/classpath
+        InputStream is = ICUData.getRequiredStream(DATA_FILE_NAME);
+        BufferedInputStream b = new BufferedInputStream(is, DATA_BUFFER_SIZE);
+        // Read and discard Unicode version...
+       /* byte unicodeVersion[] = */ICUBinary.readHeader(b, DATA_FORMAT_ID, this);
+        DataInputStream d = new DataInputStream(b);
+
+        // Record the origin position of the file.  Keep enough around
+        // to seek back to the start of the header.
+        d.mark(256);
+
+        short enumToName_offset = d.readShort();
+        short nameToEnum_offset = d.readShort();
+        short enumToValue_offset = d.readShort();
+        short total_size = d.readShort();
+        short valueMap_offset = d.readShort();
+        short valueMap_count = d.readShort();
+        short nameGroupPool_offset = d.readShort();
+        short nameGroupPool_count = d.readShort();
+        short stringPool_offset = d.readShort();
+        short stringPool_count = d.readShort();
+
+        if (DEBUG) {
+            System.out.println(
+               "enumToName_offset=" + enumToName_offset + "\n" +
+               "nameToEnum_offset=" + nameToEnum_offset + "\n" +
+               "enumToValue_offset=" + enumToValue_offset + "\n" +
+               "total_size=" + total_size + "\n" +
+               "valueMap_offset=" + valueMap_offset + "\n" +
+               "valueMap_count=" + valueMap_count + "\n" +
+               "nameGroupPool_offset=" + nameGroupPool_offset + "\n" +
+               "nameGroupPool_count=" + nameGroupPool_count + "\n" +
+               "stringPool_offset=" + stringPool_offset + "\n" +
+               "stringPool_count=" + stringPool_count);
+        }
+
+        // Read it all (less than 32k).  Seeking around (using
+        // mark/reset/skipBytes) doesn't work directly on the file,
+        // but it works fine if we read everything into a byte[] array
+        // first.
+        byte raw[] = new byte[total_size];
+        d.reset();
+        d.readFully(raw);
+        d.close();
+
+        Builder builder = new Builder(raw);
+
+        stringPool = builder.readStringPool(stringPool_offset,
+                                            stringPool_count);
+
+        nameGroupPool = builder.readNameGroupPool(nameGroupPool_offset,
+                                                  nameGroupPool_count);
+
+        builder.setupValueMap_map(valueMap_offset, valueMap_count);
+
+        // Some of the following data structures have to be set up
+        // here, _not_ in Builder.  That's because they are instances
+        // of non-static inner classes, and they contain implicit
+        // references to this.
+
+        builder.seek(enumToName_offset);
+        enumToName = new NonContiguousEnumToShort(builder);
+        builder.nameGroupOffsetToIndex(enumToName.offsetArray);
+
+        builder.seek(nameToEnum_offset);
+        nameToEnum = new NameToEnum(builder);
+
+        builder.seek(enumToValue_offset);
+        enumToValue = new NonContiguousEnumToShort(builder);
+        builder.valueMapOffsetToIndex(enumToValue.offsetArray);
+
+        valueMapArray = new ValueMap[valueMap_count];
+        for (int i=0; i<valueMap_count; ++i) {
+            // Must seek to the start of each entry.
+            builder.seek(builder.valueMap_map[i]);
+            valueMapArray[i] = new ValueMap(builder);
+        }
+
+        builder.close();
+    }
+
+    //----------------------------------------------------------------
+    // Public API
+
+    /**
+     * Return a property name given a property enum.  Multiple
+     * names may be available for each property; the nameChoice
+     * selects among them.
+     */
+    public String getPropertyName(int property,
+                                  int nameChoice) {
+        short nameGroupIndex = enumToName.getShort(property);
+        return chooseNameInGroup(nameGroupIndex, nameChoice);
+    }
+
+    /**
+     * Return a property enum given one of its property names.
+     */
+    public int getPropertyEnum(String propertyAlias) {
+        return nameToEnum.getEnum(propertyAlias);
+    }
+
+    /**
+     * Return a value name given a property enum and a value enum.
+     * Multiple names may be available for each value; the nameChoice
+     * selects among them.
+     */
+    public String getPropertyValueName(int property,
+                                       int value,
+                                       int nameChoice) {
+        ValueMap vm = getValueMap(property);
+        short nameGroupIndex = vm.enumToName.getShort(value);
+        return chooseNameInGroup(nameGroupIndex, nameChoice);
+    }
+
+    /**
+     * Return a value enum given one of its value names and the
+     * corresponding property alias.
+     */
+    public int getPropertyValueEnum(int property,
+                                    String valueAlias) {
+        ValueMap vm = getValueMap(property);
+        return vm.nameToEnum.getEnum(valueAlias);
+    }
+
+    //----------------------------------------------------------------
+    // Data structures
+
+    /**
+     * A map for the legal values of a binary or enumerated properties.
+     */
+    private class ValueMap {
+
+        /**
+         * Maps value enum to index into the nameGroupPool[]
+         */
+        EnumToShort enumToName; // polymorphic
+
+        /**
+         * Maps value name to value enum.
+         */
+        NameToEnum nameToEnum;
+
+        ValueMap(Builder b) throws IOException {
+            short enumToName_offset = b.readShort();
+            short ncEnumToName_offset = b.readShort();
+            short nameToEnum_offset = b.readShort();
+            if (enumToName_offset != 0) {
+                b.seek(enumToName_offset);
+                ContiguousEnumToShort x = new ContiguousEnumToShort(b);
+                b.nameGroupOffsetToIndex(x.offsetArray);
+                enumToName = x;
+            } else {
+                b.seek(ncEnumToName_offset);
+                NonContiguousEnumToShort x = new NonContiguousEnumToShort(b);
+                b.nameGroupOffsetToIndex(x.offsetArray);
+                enumToName = x;
+            }
+            b.seek(nameToEnum_offset);
+            nameToEnum = new NameToEnum(b);
+        }
+    }
+
+    /**
+     * Abstract map from enum values to integers.
+     */
+    private interface EnumToShort {
+        short getShort(int enumProbe);
+    }
+
+    /**
+     * Generic map from enum values to offsets.  Enum values are
+     * contiguous.
+     */
+    private static class ContiguousEnumToShort implements EnumToShort {
+        int enumStart;
+        int enumLimit;
+        short offsetArray[];
+
+        public short getShort(int enumProbe) {
+            if (enumProbe < enumStart || enumProbe >= enumLimit) {
+                throw new IllegalArgumentException("Invalid enum. enumStart = " +enumStart +
+                                                   " enumLimit = " + enumLimit +
+                                                   " enumProbe = " + enumProbe );
+            }
+            return offsetArray[enumProbe - enumStart];
+        }
+
+        ContiguousEnumToShort(ICUBinaryStream s) throws IOException  {
+            enumStart = s.readInt();
+            enumLimit = s.readInt();
+            int count = enumLimit - enumStart;
+            offsetArray = new short[count];
+            for (int i=0; i<count; ++i) {
+                offsetArray[i] = s.readShort();
+            }
+        }
+    }
+
+    /**
+     * Generic map from enum values to offsets.  Enum values need not
+     * be contiguous.
+     */
+    private static class NonContiguousEnumToShort implements EnumToShort {
+        int enumArray[];
+        short offsetArray[];
+
+        public short getShort(int enumProbe) {
+            for (int i=0; i<enumArray.length; ++i) {
+                if (enumArray[i] < enumProbe) continue;
+                if (enumArray[i] > enumProbe) break;
+                return offsetArray[i];
+            }
+            throw new IllegalArgumentException("Invalid enum");
+        }
+
+        NonContiguousEnumToShort(ICUBinaryStream s) throws IOException  {
+            int i;
+            int count = s.readInt();
+            enumArray = new int[count];
+            offsetArray = new short[count];
+            for (i=0; i<count; ++i) {
+                enumArray[i] = s.readInt();
+            }
+            for (i=0; i<count; ++i) {
+                offsetArray[i] = s.readShort();
+            }
+        }
+    }
+
+    /**
+     * Map from names to enum values.
+     */
+    private class NameToEnum {
+        int enumArray[];
+        short nameArray[];
+
+        int getEnum(String nameProbe) {
+            for (int i=0; i<nameArray.length; ++i) {
+                int c = UPropertyAliases.compare(nameProbe,
+                                                 stringPool[nameArray[i]]);
+                if (c > 0) continue;
+                if (c < 0) break;
+                return enumArray[i];
+            }
+            throw new IllegalArgumentException("Invalid name: " + nameProbe);
+        }
+
+        NameToEnum(Builder b) throws IOException {
+            int i;
+            int count = b.readInt();
+            enumArray = new int[count];
+            nameArray = new short[count];
+            for (i=0; i<count; ++i) {
+                enumArray[i] = b.readInt();
+            }
+            for (i=0; i<count; ++i) {
+                nameArray[i] = b.stringOffsetToIndex(b.readShort());
+            }
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Runtime implementation
+
+    /**
+     * Compare two property names, returning <0, 0, or >0.  The
+     * comparison is that described as "loose" matching in the
+     * Property*Aliases.txt files.
+     */
+    public static int compare(String stra, String strb) {
+        // Note: This implementation is a literal copy of
+        // uprv_comparePropertyNames.  It can probably be improved.
+        int istra=0, istrb=0, rc;
+        int cstra=0, cstrb=0;
+        for (;;) {
+            /* Ignore delimiters '-', '_', and ASCII White_Space */
+            while (istra<stra.length()) {
+                cstra = stra.charAt(istra);
+                switch (cstra) {
+                case '-':  case '_':  case ' ':  case '\t':
+                case '\n': case 0xb/*\v*/: case '\f': case '\r':
+                    ++istra;
+                    continue;
+                }
+                break;
+            }
+
+            while (istrb<strb.length()) {
+                cstrb = strb.charAt(istrb);
+                switch (cstrb) {
+                case '-':  case '_':  case ' ':  case '\t':
+                case '\n': case 0xb/*\v*/: case '\f': case '\r':
+                    ++istrb;
+                    continue;
+                }
+                break;
+            }
+
+            /* If we reach the ends of both strings then they match */
+            boolean endstra = istra==stra.length();
+            boolean endstrb = istrb==strb.length();
+            if (endstra) {
+                if (endstrb) return 0;
+                cstra = 0;
+            } else if (endstrb) {
+                cstrb = 0;
+            }
+
+            rc = UCharacter.toLowerCase(cstra) - UCharacter.toLowerCase(cstrb);
+            if (rc != 0) {
+                return rc;
+            }
+
+            ++istra;
+            ++istrb;
+        }
+    }
+
+    /**
+     * Given an index to a run within the nameGroupPool[], and a
+     * nameChoice (0,1,...), select the nameChoice-th entry of the run.
+     */
+    private String chooseNameInGroup(short nameGroupIndex, int nameChoice) {
+        if (nameChoice < 0) {
+            throw new IllegalArgumentException("Invalid name choice");
+        }
+        while (nameChoice-- > 0) {
+            if (nameGroupPool[nameGroupIndex++] < 0) {
+                throw new IllegalArgumentException("Invalid name choice");
+            }
+        }
+        short a = nameGroupPool[nameGroupIndex];
+        return stringPool[(a < 0) ? -a : a];
+    }
+
+    /**
+     * Return the valueMap[] entry for a given property.
+     */
+    private ValueMap getValueMap(int property) {
+        int valueMapIndex = enumToValue.getShort(property);
+        return valueMapArray[valueMapIndex];
+    }
+
+    //----------------------------------------------------------------
+    // ICUBinary API
+
+    /**
+     * Return true if the given data version can be used.
+     */
+    public boolean isDataVersionAcceptable(byte version[])   {
+        return version[0] == DATA_FORMAT_VERSION;
+    }
+
+    //----------------------------------------------------------------
+    // Builder
+
+    /**
+     * A specialized ICUBinaryStream that can map between offsets and
+     * index values into various arrays (stringPool, nameGroupPool,
+     * and valueMap).  It also knows how to read various structures.
+     */
+    static class Builder extends ICUBinaryStream {
+
+        // map[i] = offset of object i.  We need maps for all of our
+        // arrays.  The arrays are indexed by offset in the raw binary
+        // file; we need to translate that to index.
+
+        private short stringPool_map[];
+
+        private short valueMap_map[];
+
+        private short nameGroup_map[];
+
+        public Builder(byte raw[]) {
+            super(raw);
+        }
+
+        /**
+         * The valueMap_map[] must be setup in advance.  This method
+         * does that.
+         */
+        public void setupValueMap_map(short offset, short count) {
+            valueMap_map = new short[count];
+            for (int i=0; i<count; ++i) {
+                // Start of each entry.  Each entry is 6 bytes long.
+                valueMap_map[i] = (short) (offset + i * 6);
+            }
+        }
+
+        /**
+         * Read stringPool[].  Build up translation table from offsets
+         * to string indices (stringPool_map[]).
+         */
+        public String[] readStringPool(short offset, short count)
+            throws IOException {
+            seek(offset);
+            // Allocate one more stringPool entry than needed.  Use this
+            // to store a "no string" entry in the pool, at index 0.  This
+            // maps to offset 0, so let stringPool_map[0] = 0.
+            String stringPool[] = new String[count + 1];
+            stringPool_map = new short[count + 1];
+            short pos = offset;
+            StringBuffer buf = new StringBuffer();
+            stringPool_map[0] = 0;
+            for (int i=1; i<=count; ++i) {
+                buf.setLength(0);
+                for (;;) {
+                    // This works because the name is invariant-ASCII
+                    char c = (char) readUnsignedByte();
+                    if (c == 0) break;
+                    buf.append(c);
+                }
+                stringPool_map[i] = pos;
+                stringPool[i] = buf.toString();
+                pos += stringPool[i].length() + 1;
+            }
+            if (DEBUG) {
+                System.out.println("read stringPool x " + count +
+                                   ": " + stringPool[1] + ", " +
+                                   stringPool[2] + ", " +
+                                   stringPool[3] + ",...");
+            }
+            return stringPool;
+        }
+
+        /**
+         * Read the nameGroupPool[], and build up the offset->index
+         * map (nameGroupPool_map[]).
+         */
+        public short[] readNameGroupPool(short offset, short count)
+            throws IOException {
+            // Read nameGroupPool[].  This contains offsets from start of
+            // header.  We translate these into indices into stringPool[]
+            // on the fly.  The offset 0, which indicates "no entry", we
+            // translate into index 0, which contains a null String
+            // pointer.
+            seek(offset);
+            short pos = offset;
+            short nameGroupPool[] = new short[count];
+            nameGroup_map = new short[count];
+            for (int i=0; i<count; ++i) {
+                nameGroup_map[i] = pos;
+                nameGroupPool[i] = stringOffsetToIndex(readShort());
+                pos += 2;
+            }
+            if (DEBUG) {
+                System.out.println("read nameGroupPool x " + count +
+                                   ": " + nameGroupPool[0] + ", " +
+                                   nameGroupPool[1] + ", " +
+                                   nameGroupPool[2] + ",...");
+            }
+            return nameGroupPool;
+        }
+
+        /**
+         * Convert an offset into the string pool into a stringPool[]
+         * index.
+         */
+        private short stringOffsetToIndex(short offset) {
+            int probe = offset;
+            if (probe < 0) probe = -probe;
+            for (int i=0; i<stringPool_map.length; ++i) {
+                if (stringPool_map[i] == probe) {
+                    return (short) ((offset < 0) ? -i : i);
+                }
+            }
+            throw new IllegalStateException("Can't map string pool offset " + 
+                                            offset + " to index");
+        }
+
+        /**
+         * Convert an array of offsets into the string pool into an
+         * array of stringPool[] indices.  MODIFIES THE ARRAY IN
+         * PLACE.
+         */
+/*        private void stringOffsetToIndex(short array[]) {
+            for (int i=0; i<array.length; ++i) {
+                array[i] = stringOffsetToIndex(array[i]);
+            }
+        }*/
+
+        /**
+         * Convert an offset into the value map into a valueMap[]
+         * index.
+         */
+        private short valueMapOffsetToIndex(short offset) {
+            for (short i=0; i<valueMap_map.length; ++i) {
+                if (valueMap_map[i] == offset) {
+                    return i;
+                }
+            }
+            throw new IllegalStateException("Can't map value map offset " + 
+                                            offset + " to index");
+        }
+
+        /**
+         * Convert an array of offsets into the value map array into
+         * an array of valueMap[] indices.  MODIFIES THE ARRAY IN
+         * PLACE.
+         */
+        private void valueMapOffsetToIndex(short array[]) {
+            for (int i=0; i<array.length; ++i) {
+                array[i] = valueMapOffsetToIndex(array[i]);
+            }
+        }
+
+        /**
+         * Convert an offset into the name group pool into a
+         * nameGroupPool[] index.
+         */
+        private short nameGroupOffsetToIndex(short offset) {
+            for (short i=0; i<nameGroup_map.length; ++i) {
+                if (nameGroup_map[i] == offset) {
+                    return i;
+                }
+            }
+            throw new RuntimeException("Can't map name group offset " + offset +
+                                       " to index");
+        }
+
+        /**
+         * Convert an array of offsets into the name group pool into an
+         * array of nameGroupPool[] indices.  MODIFIES THE ARRAY IN
+         * PLACE.
+         */
+        private void nameGroupOffsetToIndex(short array[]) {
+            for (int i=0; i<array.length; ++i) {
+                array[i] = nameGroupOffsetToIndex(array[i]);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/URLHandler.java b/src/com/ibm/icu/impl/URLHandler.java
new file mode 100644
index 0000000..d2a1c72
--- /dev/null
+++ b/src/com/ibm/icu/impl/URLHandler.java
@@ -0,0 +1,243 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2005, International Business Machines Corporation and        *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+package com.ibm.icu.impl;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+public abstract class URLHandler {
+    public static final String PROPNAME = "urlhandler.props";
+    
+    private static final Map handlers;
+    
+    private static final boolean DEBUG = ICUDebug.enabled("URLHandler");
+    
+    static {
+        Map h = null;
+        
+        try {
+            InputStream is = URLHandler.class.getResourceAsStream(PROPNAME);
+            
+            if (is == null) {
+                is = ClassLoader.getSystemClassLoader().getResourceAsStream(PROPNAME);
+            }
+            
+            if (is != null) {
+                Class[] params = { URL.class };
+                BufferedReader br = new BufferedReader(new InputStreamReader(is));
+                
+                for (String line = br.readLine(); line != null; line = br.readLine()) {
+                    line = line.trim();
+                    
+                    if (line.length() == 0 || line.charAt(0) == '#') {
+                        continue;
+                    }
+                    
+                    int ix = line.indexOf('=');
+                    
+                    if (ix == -1) {
+                        if (DEBUG) System.err.println("bad urlhandler line: '" + line + "'");
+                        break;
+                    }
+                    
+                    String key = line.substring(0, ix).trim();
+                    String value = line.substring(ix+1).trim();
+                    
+                    try {
+                        Class cl = Class.forName(value);
+                        Method m = cl.getDeclaredMethod("get", params);
+                        
+                        if (h == null) {
+                            h = new HashMap();
+                        }
+                        
+                        h.put(key, m);
+                    }
+                    catch (ClassNotFoundException e) {
+                        if (DEBUG) System.err.println(e);
+                    }
+                    catch(NoSuchMethodException e) {
+                        if (DEBUG) System.err.println(e);
+                    }
+                    catch(SecurityException e) {
+                        if (DEBUG) System.err.println(e);
+                    }
+                }
+            }
+        } catch (Throwable t) {
+            if (DEBUG) System.err.println(t);
+        }
+        
+        handlers = h;
+    }
+    
+    public static URLHandler get(URL url) {
+        if (url == null) {
+            return null;
+        }
+        
+        String protocol = url.getProtocol();
+        
+        if (handlers != null) {
+            Method m = (Method)handlers.get(protocol);
+            
+            if (m != null) {
+                try {
+                    URLHandler handler = (URLHandler)m.invoke(null, new Object[] { url });
+                    
+                    if (handler != null) {
+                        return handler;
+                    }
+                }
+                catch(IllegalAccessException e) {
+                    if (DEBUG) System.err.println(e);
+                }
+                catch(IllegalArgumentException e) {
+                    if (DEBUG) System.err.println(e);
+                }
+                catch(InvocationTargetException e) {
+                    if (DEBUG) System.err.println(e);
+                }
+            }
+        }
+        
+        return getDefault(url);
+    }
+    
+    protected static URLHandler getDefault(URL url) {
+        String protocol = url.getProtocol();
+        
+        if (protocol.equals("file")) {
+            return new FileURLHandler(url);
+        } else if (protocol.equals("jar")) {
+            return new JarURLHandler(url);
+        } else {
+            return null;
+        }
+    }
+    
+    private static class FileURLHandler extends URLHandler {
+        File file;
+        String root;
+        
+        FileURLHandler(URL url) {
+            root = url.getPath();
+            file = new File(root);
+            
+            if (!file.exists()) {
+                if (DEBUG) System.err.println("file does not exist");
+                throw new IllegalArgumentException();
+            }
+        }
+        
+        public void guide(URLVisitor v, boolean recurse, boolean strip) {
+            if (file.isDirectory()) {
+                process(v, recurse, strip, "/", file.listFiles());
+            } else {
+                v.visit(file.getName());
+            }
+        }
+        
+        private void process(URLVisitor v, boolean recurse, boolean strip, String path, File[] files) {
+            for (int i = 0; i < files.length; i++) {
+                File f = files[i];
+                
+                if (f.isDirectory()) {
+                    if (recurse) {
+                        process(v, recurse, strip, path + f.getName()+ '/', f.listFiles());
+                    }
+                } else {
+                    v.visit(strip? f.getName() : path + f.getName());
+                }
+            }
+        }
+    }
+    
+    private static class JarURLHandler extends URLHandler {
+        JarFile jarFile;
+        String prefix;
+        
+        JarURLHandler(URL url) {
+            try {
+                prefix = url.getPath();
+                
+                int ix = prefix.indexOf("!/");
+                
+                if (ix >= 0) {
+                    prefix = prefix.substring(ix + 2); // truncate after "!/"
+                }
+                
+                JarURLConnection conn = (JarURLConnection)url.openConnection();
+                
+                jarFile = conn.getJarFile();
+            }
+            catch (Exception e) {
+                if (DEBUG) System.err.println("icurb jar error: " + e);
+                throw new IllegalArgumentException("jar error: " + e.getMessage());
+            }
+        }
+        
+        public void guide(URLVisitor v, boolean recurse, boolean strip) {
+            try {
+                Enumeration entries = jarFile.entries();
+                
+                while (entries.hasMoreElements()) {
+                    JarEntry entry = (JarEntry)entries.nextElement();
+                    
+                    if (!entry.isDirectory()) { // skip just directory paths
+                        String name = entry.getName();
+                        
+                        if (name.startsWith(prefix)) {
+                            name = name.substring(prefix.length());
+                            
+                            int ix = name.lastIndexOf('/');
+                            
+                            if (ix != -1) {
+                                if (!recurse) {
+                                    continue;
+                                }
+                                
+                                if (strip) {
+                                    name = name.substring(ix+1);
+                                }
+                            }
+                            
+                            v.visit(name);
+                        }
+                    }
+                }
+            }
+            catch (Exception e) {
+                if (DEBUG) System.err.println("icurb jar error: " + e);
+            }
+        }
+    }
+    
+    public void guide(URLVisitor visitor, boolean recurse)
+    {
+        guide(visitor, recurse, true);
+    }
+    
+    public abstract void guide(URLVisitor visitor, boolean recurse, boolean strip);
+    
+    public interface URLVisitor {
+        void visit(String str);
+    }
+}
+
diff --git a/src/com/ibm/icu/impl/USerializedSet.java b/src/com/ibm/icu/impl/USerializedSet.java
new file mode 100644
index 0000000..7ffbcf0
--- /dev/null
+++ b/src/com/ibm/icu/impl/USerializedSet.java
@@ -0,0 +1,187 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2002-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+/**
+ * @version     1.1
+ * @author     Markus W. Scherer
+ * Ram: Add documentation, remove unwanted methods, improve coverage.
+ */
+
+/**
+ * Simple class for handling serialized USet/UnicodeSet structures
+ * without object creation. See ICU4C icu/source/common/uset.c.
+ *
+ * @internal
+ */
+public final class USerializedSet {
+    /**
+     * Fill in the given serialized set object.
+     * @param src pointer to start of array
+     * @param srcStart pointer to start of serialized data (length value)
+     * @return true if the given array is valid, otherwise false
+     */
+    public final boolean getSet(char src[], int srcStart) {
+        // leave most argument checking up to Java exceptions
+        array=null;
+        arrayOffset=bmpLength=length=0;
+
+        length=src[srcStart++];
+        
+        
+        if((length&0x8000) >0) {
+            /* there are supplementary values */
+            length&=0x7fff;
+            if(src.length<(srcStart+1+length)) {
+                length=0;
+                throw new IndexOutOfBoundsException();
+            }
+            bmpLength=src[srcStart++];
+        } else {
+            /* only BMP values */
+            if(src.length<(srcStart+length)) {
+                length=0;
+                throw new IndexOutOfBoundsException();
+            }
+            bmpLength=length;
+        }
+        array = new char[length];
+        System.arraycopy(src,srcStart,array,0,length);
+        //arrayOffset=srcStart;
+        return true;
+    }
+    
+    /**
+     * Set the USerializedSet to contain the given character (and nothing
+     * else).
+     */
+    public final void setToOne(int c) {
+        if( 0x10ffff<c) {
+            return;
+        }
+
+        if(c<0xffff) {
+            bmpLength=length=2;
+            array[0]=(char)c;
+            array[1]=(char)(c+1);
+        } else if(c==0xffff) {
+            bmpLength=1;
+            length=3;
+            array[0]=0xffff;
+            array[1]=1;
+            array[2]=0;
+        } else if(c<0x10ffff) {
+            bmpLength=0;
+            length=4;
+            array[0]=(char)(c>>16);
+            array[1]=(char)c;
+            ++c;
+            array[2]=(char)(c>>16);
+            array[3]=(char)c;
+        } else /* c==0x10ffff */ {
+            bmpLength=0;
+            length=2;
+            array[0]=0x10;
+            array[1]=0xffff;
+        }
+    }
+        
+    /**
+     * Returns a range of characters contained in the given serialized
+     * set.
+     * @param rangeIndex a non-negative integer in the range <code>0..
+     * getSerializedRangeCount()-1</code>
+     * @param range variable to receive the data in the range
+     * @return true if rangeIndex is valid, otherwise false
+     */
+    public final boolean getRange(int rangeIndex, int[] range) {
+        if( rangeIndex<0) {
+            return false;
+        }
+        if(array==null){
+            array = new char[8];
+        }
+        if(range==null || range.length <2){
+            throw new IllegalArgumentException();
+        }
+        rangeIndex*=2; /* address start/limit pairs */
+        if(rangeIndex<bmpLength) {
+            range[0]=array[rangeIndex++];
+            if(rangeIndex<bmpLength) {
+                range[1]=array[rangeIndex];
+            } else if(rangeIndex<length) {
+                range[1]=(((int)array[rangeIndex])<<16)|array[rangeIndex+1];
+            } else {
+                range[1]=0x110000;
+            }
+            range[1]-=1;
+            return true;
+        } else {
+            rangeIndex-=bmpLength;
+            rangeIndex*=2; /* address pairs of pairs of units */
+            length-=bmpLength;
+            if(rangeIndex<length) {
+                int offset=arrayOffset+bmpLength;
+                range[0]=(((int)array[offset+rangeIndex])<<16)|array[offset+rangeIndex+1];
+                rangeIndex+=2;
+                if(rangeIndex<length) {
+                    range[1]=(((int)array[offset+rangeIndex])<<16)|array[offset+rangeIndex+1];
+                } else {
+                    range[1]=0x110000;
+                }
+                range[1]-=1;
+                return true;
+            } else {
+                return false;
+            }
+        }
+    }
+    
+    /**
+     * Returns true if the given USerializedSet contains the given
+     * character.
+     * @param c the character to test for
+     * @return true if set contains c
+     */
+    public final boolean contains(int c) {
+        
+        if(c>0x10ffff) {
+            return false;
+        }
+            
+        if(c<=0xffff) {
+            int i;
+            /* find c in the BMP part */
+            for(i=0; i<bmpLength && (char)c>=array[i]; ++i) {}
+            return (boolean)((i&1) != 0);
+        } else {
+            int i;
+            /* find c in the supplementary part */
+            char high=(char)(c>>16), low=(char)c;
+            for(i=bmpLength;
+                i<length && (high>array[i] || (high==array[i] && low>=array[i+1]));
+                i+=2) {}
+        
+            /* count pairs of 16-bit units even per BMP and check if the number of pairs is odd */
+            return (boolean)(((i+bmpLength)&2)!=0);
+        }
+    }
+
+    /**
+     * Returns the number of disjoint ranges of characters contained in
+     * the given serialized set.  Ignores any strings contained in the
+     * set.
+     * @return a non-negative integer counting the character ranges
+     * contained in set
+     */
+    public final int countRanges() {
+        return (bmpLength+(length-bmpLength)/2+1)/2;
+    }
+    
+    private char array[] = new char[8];
+    private int arrayOffset, bmpLength, length;
+}
diff --git a/src/com/ibm/icu/impl/Utility.java b/src/com/ibm/icu/impl/Utility.java
new file mode 100644
index 0000000..37cdb16
--- /dev/null
+++ b/src/com/ibm/icu/impl/Utility.java
@@ -0,0 +1,1953 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+import java.util.ArrayList;
+
+import com.ibm.icu.lang.*;
+import com.ibm.icu.text.*;
+import com.ibm.icu.impl.UCharacterProperty;
+
+public final class Utility {
+
+    private static final char APOSTROPHE = '\'';
+    private static final char BACKSLASH  = '\\';
+    private static final int MAGIC_UNSIGNED = 0x80000000;
+
+    /**
+     * Convenience utility to compare two Object[]s.
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(Object[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof Object[])) return false;
+        Object[] targ = (Object[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two int[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(int[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof int[])) return false;
+        int[] targ = (int[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two double[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(double[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof double[])) return false;
+        double[] targ = (double[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+    public final static boolean arrayEquals(byte[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof byte[])) return false;
+        byte[] targ = (byte[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(Object source, Object target) {
+        if (source == null) return (target == null);
+        // for some reason, the correct arrayEquals is not being called
+        // so do it by hand for now.
+        if (source instanceof Object[])
+            return(arrayEquals((Object[]) source,target));
+        if (source instanceof int[])
+            return(arrayEquals((int[]) source,target));
+        if (source instanceof double[])
+            return(arrayEquals((int[]) source,target));
+        if (source instanceof byte[])
+            return(arrayEquals((byte[]) source,target));
+        return source.equals(target);
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    public final static boolean arrayRegionMatches(Object[] source, int sourceStart,
+                                            Object[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (!arrayEquals(source[i],target[i + delta]))
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    public final static boolean arrayRegionMatches(char[] source, int sourceStart,
+                                            char[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i]!=target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /** 
+     * Convenience utility to compare two int[]s.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     * Ought to be in System
+     */
+    public final static boolean arrayRegionMatches(int[] source, int sourceStart,
+                                            int[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     * Ought to be in System
+     */
+    public final static boolean arrayRegionMatches(double[] source, int sourceStart,
+                                            double[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+    public final static boolean arrayRegionMatches(byte[] source, int sourceStart,
+            byte[] target, int targetStart, int len){
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+                return false;
+            }
+        return true;
+    }
+
+    /**
+     * Convenience utility. Does null checks on objects, then calls equals.
+     */
+    public final static boolean objectEquals(Object source, Object target) {
+    if (source == null)
+            return (target == null);
+    else
+            return source.equals(target);
+    }
+
+    /**
+     * The ESCAPE character is used during run-length encoding.  It signals
+     * a run of identical chars.
+     */
+    private static final char ESCAPE = '\uA5A5';
+
+    /**
+     * The ESCAPE_BYTE character is used during run-length encoding.  It signals
+     * a run of identical bytes.
+     */
+    static final byte ESCAPE_BYTE = (byte)0xA5;
+
+    /**
+     * Construct a string representing an int array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(int[] a) {
+        StringBuffer buffer = new StringBuffer();
+
+        appendInt(buffer, a.length);
+        int runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            int s = a[i];
+            if (s == runValue && runLength < 0xFFFF) {
+                ++runLength;
+            } else {
+                encodeRun(buffer, runValue, runLength);
+                runValue = s;
+                runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a short array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(short[] a) {
+        StringBuffer buffer = new StringBuffer();
+        // for (int i=0; i<a.length; ++i) buffer.append((char) a[i]);
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        short runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            short s = a[i];
+            if (s == runValue && runLength < 0xFFFF) ++runLength;
+            else {
+            encodeRun(buffer, runValue, runLength);
+            runValue = s;
+            runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a char array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(char[] a) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        char runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            char s = a[i];
+            if (s == runValue && runLength < 0xFFFF) ++runLength;
+            else {
+            encodeRun(buffer, (short)runValue, runLength);
+            runValue = s;
+            runLength = 1;
+            }
+        }
+        encodeRun(buffer, (short)runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a byte array.  Use run-length encoding.
+     * Two bytes are packed into a single char, with a single extra zero byte at
+     * the end if needed.  A byte represents itself, unless it is the
+     * ESCAPE_BYTE.  Then the following notations are possible:
+     *   ESCAPE_BYTE ESCAPE_BYTE   ESCAPE_BYTE literal
+     *   ESCAPE_BYTE n b           n instances of byte b
+     * Since an encoded run occupies 3 bytes, we only encode runs of 4 or
+     * more bytes.  Thus we have n > 0 and n != ESCAPE_BYTE and n <= 0xFF.
+     * If we encounter a run where n == ESCAPE_BYTE, we represent this as:
+     *   b ESCAPE_BYTE n-1 b
+     * The ESCAPE_BYTE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(byte[] a) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        byte runValue = a[0];
+        int runLength = 1;
+        byte[] state = new byte[2];
+        for (int i=1; i<a.length; ++i) {
+            byte b = a[i];
+            if (b == runValue && runLength < 0xFF) ++runLength;
+            else {
+                encodeRun(buffer, runValue, runLength, state);
+                runValue = b;
+                runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength, state);
+
+        // We must save the final byte, if there is one, by padding
+        // an extra zero.
+        if (state[0] != 0) appendEncodedByte(buffer, (byte)0, state);
+
+        return buffer.toString();
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFFFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, int value, int length) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == ESCAPE) {
+                    appendInt(buffer, value);
+                }
+                appendInt(buffer, value);
+            }
+        }
+        else {
+            if (length == (int) ESCAPE) {
+                if (value == (int) ESCAPE) {
+                    appendInt(buffer, ESCAPE);
+                }
+                appendInt(buffer, value);
+                --length;
+            }
+            appendInt(buffer, ESCAPE);
+            appendInt(buffer, length);
+            appendInt(buffer, value); // Don't need to escape this value
+        }
+    }
+    
+    private static final void appendInt(StringBuffer buffer, int value) {
+        buffer.append((char)(value >>> 16));
+        buffer.append((char)(value & 0xFFFF));
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFFFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, short value, int length) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == (int) ESCAPE) buffer.append(ESCAPE);
+                buffer.append((char) value);
+            }
+        }
+        else {
+            if (length == (int) ESCAPE) {
+                if (value == (int) ESCAPE) buffer.append(ESCAPE);
+                buffer.append((char) value);
+                --length;
+            }
+            buffer.append(ESCAPE);
+            buffer.append((char) length);
+            buffer.append((char) value); // Don't need to escape this value
+        }
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, byte value, int length,
+                    byte[] state) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == ESCAPE_BYTE) appendEncodedByte(buffer, ESCAPE_BYTE, state);
+                appendEncodedByte(buffer, value, state);
+            }
+        }
+        else {
+            if (length == ESCAPE_BYTE) {
+            if (value == ESCAPE_BYTE) appendEncodedByte(buffer, ESCAPE_BYTE, state);
+            appendEncodedByte(buffer, value, state);
+            --length;
+            }
+            appendEncodedByte(buffer, ESCAPE_BYTE, state);
+            appendEncodedByte(buffer, (byte)length, state);
+            appendEncodedByte(buffer, value, state); // Don't need to escape this value
+        }
+    }
+
+    /**
+     * Append a byte to the given StringBuffer, packing two bytes into each
+     * character.  The state parameter maintains intermediary data between
+     * calls.
+     * @param state A two-element array, with state[0] == 0 if this is the
+     * first byte of a pair, or state[0] != 0 if this is the second byte
+     * of a pair, in which case state[1] is the first byte.
+     */
+    private static final void appendEncodedByte(StringBuffer buffer, byte value,
+                        byte[] state) {
+        if (state[0] != 0) {
+            char c = (char) ((state[1] << 8) | (((int) value) & 0xFF));
+            buffer.append(c);
+            state[0] = 0;
+        }
+        else {
+            state[0] = 1;
+            state[1] = value;
+        }
+    }
+
+    /**
+     * Construct an array of ints from a run-length encoded string.
+     */
+    static public final int[] RLEStringToIntArray(String s) {
+        int length = getInt(s, 0);
+        int[] array = new int[length];
+        int ai = 0, i = 1;
+
+        int maxI = s.length() / 2;
+        while (ai < length && i < maxI) {
+            int c = getInt(s, i++);
+
+            if (c == ESCAPE) {
+                c = getInt(s, i++);
+                if (c == ESCAPE) {
+                    array[ai++] = c;
+                } else {
+                    int runLength = c;
+                    int runValue = getInt(s, i++);
+                    for (int j=0; j<runLength; ++j) {
+                        array[ai++] = runValue;
+                    }
+                }
+            }
+            else {
+                array[ai++] = c;
+            }
+        }
+
+        if (ai != length || i != maxI) {
+            throw new IllegalStateException("Bad run-length encoded int array");
+        }
+
+        return array;
+    }
+    static final int getInt(String s, int i) {
+        return (((int) s.charAt(2*i)) << 16) | (int) s.charAt(2*i+1);
+    }
+
+    /**
+     * Construct an array of shorts from a run-length encoded string.
+     */
+    static public final short[] RLEStringToShortArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        short[] array = new short[length];
+        int ai = 0;
+        for (int i=2; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c == ESCAPE) {
+                c = s.charAt(++i);
+                if (c == ESCAPE) {
+                    array[ai++] = (short) c;
+                } else {
+                    int runLength = (int) c;
+                    short runValue = (short) s.charAt(++i);
+                    for (int j=0; j<runLength; ++j) array[ai++] = runValue;
+                }
+            }
+            else {
+                array[ai++] = (short) c;
+            }
+        }
+
+        if (ai != length)
+            throw new IllegalStateException("Bad run-length encoded short array");
+
+        return array;
+    }
+
+    /**
+     * Construct an array of shorts from a run-length encoded string.
+     */
+    static public final char[] RLEStringToCharArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        char[] array = new char[length];
+        int ai = 0;
+        for (int i=2; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c == ESCAPE) {
+                c = s.charAt(++i);
+                if (c == ESCAPE) {
+                    array[ai++] = c;
+                } else {
+                    int runLength = (int) c;
+                    char runValue = s.charAt(++i);
+                    for (int j=0; j<runLength; ++j) array[ai++] = runValue;
+                }
+            }
+            else {
+                array[ai++] = c;
+            }
+        }
+
+        if (ai != length)
+            throw new IllegalStateException("Bad run-length encoded short array");
+
+        return array;
+    }
+
+    /**
+     * Construct an array of bytes from a run-length encoded string.
+     */
+    static public final byte[] RLEStringToByteArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        byte[] array = new byte[length];
+        boolean nextChar = true;
+        char c = 0;
+        int node = 0;
+        int runLength = 0;
+        int i = 2;
+        for (int ai=0; ai<length; ) {
+            // This part of the loop places the next byte into the local
+            // variable 'b' each time through the loop.  It keeps the
+            // current character in 'c' and uses the boolean 'nextChar'
+            // to see if we've taken both bytes out of 'c' yet.
+            byte b;
+            if (nextChar) {
+                c = s.charAt(i++);
+                b = (byte) (c >> 8);
+                nextChar = false;
+            }
+            else {
+                b = (byte) (c & 0xFF);
+                nextChar = true;
+            }
+
+            // This part of the loop is a tiny state machine which handles
+            // the parsing of the run-length encoding.  This would be simpler
+            // if we could look ahead, but we can't, so we use 'node' to
+            // move between three nodes in the state machine.
+            switch (node) {
+            case 0:
+                // Normal idle node
+                if (b == ESCAPE_BYTE) {
+                    node = 1;
+                }
+                else {
+                    array[ai++] = b;
+                }
+                break;
+            case 1:
+                // We have seen one ESCAPE_BYTE; we expect either a second
+                // one, or a run length and value.
+                if (b == ESCAPE_BYTE) {
+                    array[ai++] = ESCAPE_BYTE;
+                    node = 0;
+                }
+                else {
+                    runLength = b;
+                    // Interpret signed byte as unsigned
+                    if (runLength < 0) runLength += 0x100;
+                    node = 2;
+                }
+                break;
+            case 2:
+                // We have seen an ESCAPE_BYTE and length byte.  We interpret
+                // the next byte as the value to be repeated.
+                for (int j=0; j<runLength; ++j) array[ai++] = b;
+                node = 0;
+                break;
+            }
+        }
+
+        if (node != 0)
+            throw new IllegalStateException("Bad run-length encoded byte array");
+
+        if (i != s.length())
+            throw new IllegalStateException("Excess data in RLE byte array string");
+
+        return array;
+    }
+
+    static public String LINE_SEPARATOR = System.getProperty("line.separator");
+
+    /**
+     * Format a String for representation in a source file.  This includes
+     * breaking it into lines and escaping characters using octal notation
+     * when necessary (control characters and double quotes).
+     */
+    static public final String formatForSource(String s) {
+        StringBuffer buffer = new StringBuffer();
+        for (int i=0; i<s.length();) {
+            if (i > 0) buffer.append('+').append(LINE_SEPARATOR);
+            buffer.append("        \"");
+            int count = 11;
+            while (i<s.length() && count<80) {
+                char c = s.charAt(i++);
+                if (c < '\u0020' || c == '"' || c == '\\') {
+                    if (c == '\n') {
+                        buffer.append("\\n");
+                        count += 2;
+                    } else if (c == '\t') {
+                        buffer.append("\\t");
+                        count += 2;
+                    } else if (c == '\r') {
+                        buffer.append("\\r");
+                        count += 2;
+                    } else {
+                        // Represent control characters, backslash and double quote
+                        // using octal notation; otherwise the string we form
+                        // won't compile, since Unicode escape sequences are
+                        // processed before tokenization.
+                        buffer.append('\\');
+                        buffer.append(HEX_DIGIT[(c & 0700) >> 6]); // HEX_DIGIT works for octal
+                        buffer.append(HEX_DIGIT[(c & 0070) >> 3]);
+                        buffer.append(HEX_DIGIT[(c & 0007)]);
+                        count += 4;
+                    }
+                }
+                else if (c <= '\u007E') {
+                    buffer.append(c);
+                    count += 1;
+                }
+                else {
+                    buffer.append("\\u");
+                    buffer.append(HEX_DIGIT[(c & 0xF000) >> 12]);
+                    buffer.append(HEX_DIGIT[(c & 0x0F00) >> 8]);
+                    buffer.append(HEX_DIGIT[(c & 0x00F0) >> 4]);
+                    buffer.append(HEX_DIGIT[(c & 0x000F)]);
+                    count += 6;
+                }
+            }
+            buffer.append('"');
+        }
+        return buffer.toString();
+    }
+
+    static final char[] HEX_DIGIT = {'0','1','2','3','4','5','6','7',
+                     '8','9','A','B','C','D','E','F'};
+
+    /**
+     * Format a String for representation in a source file.  Like
+     * formatForSource but does not do line breaking.
+     */
+    static public final String format1ForSource(String s) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append("\"");
+        for (int i=0; i<s.length();) {
+            char c = s.charAt(i++);
+            if (c < '\u0020' || c == '"' || c == '\\') {
+                if (c == '\n') {
+                    buffer.append("\\n");
+                } else if (c == '\t') {
+                    buffer.append("\\t");
+                } else if (c == '\r') {
+                    buffer.append("\\r");
+                } else {
+                    // Represent control characters, backslash and double quote
+                    // using octal notation; otherwise the string we form
+                    // won't compile, since Unicode escape sequences are
+                    // processed before tokenization.
+                    buffer.append('\\');
+                    buffer.append(HEX_DIGIT[(c & 0700) >> 6]); // HEX_DIGIT works for octal
+                    buffer.append(HEX_DIGIT[(c & 0070) >> 3]);
+                    buffer.append(HEX_DIGIT[(c & 0007)]);
+                }
+            }
+            else if (c <= '\u007E') {
+                buffer.append(c);
+            }
+            else {
+                buffer.append("\\u");
+                buffer.append(HEX_DIGIT[(c & 0xF000) >> 12]);
+                buffer.append(HEX_DIGIT[(c & 0x0F00) >> 8]);
+                buffer.append(HEX_DIGIT[(c & 0x00F0) >> 4]);
+                buffer.append(HEX_DIGIT[(c & 0x000F)]);
+            }
+        }
+        buffer.append('"');
+        return buffer.toString();
+    }
+
+    /**
+     * Convert characters outside the range U+0020 to U+007F to
+     * Unicode escapes, and convert backslash to a double backslash.
+     */
+    public static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ) {
+            int c = UTF16.charAt(s, i);
+            i += UTF16.getCharCount(c);
+            if (c >= ' ' && c <= 0x007F) {
+                if (c == '\\') {
+                    buf.append("\\\\"); // That is, "\\"
+                } else {
+                    buf.append((char)c);
+                }
+            } else {
+                boolean four = c <= 0xFFFF;
+                buf.append(four ? "\\u" : "\\U");
+                hex(c, four ? 4 : 8, buf);
+            }
+        }
+        return buf.toString();
+    }
+
+    /* This map must be in ASCENDING ORDER OF THE ESCAPE CODE */
+    static private final char[] UNESCAPE_MAP = {
+        /*"   0x22, 0x22 */
+        /*'   0x27, 0x27 */
+        /*?   0x3F, 0x3F */
+        /*\   0x5C, 0x5C */
+        /*a*/ 0x61, 0x07,
+        /*b*/ 0x62, 0x08,
+        /*e*/ 0x65, 0x1b,
+        /*f*/ 0x66, 0x0c,
+        /*n*/ 0x6E, 0x0a,
+        /*r*/ 0x72, 0x0d,
+        /*t*/ 0x74, 0x09,
+        /*v*/ 0x76, 0x0b
+    };
+
+    /**
+     * Convert an escape to a 32-bit code point value.  We attempt
+     * to parallel the icu4c unescapeAt() function.
+     * @param offset16 an array containing offset to the character
+     * <em>after</em> the backslash.  Upon return offset16[0] will
+     * be updated to point after the escape sequence.
+     * @return character value from 0 to 10FFFF, or -1 on error.
+     */
+    public static int unescapeAt(String s, int[] offset16) {
+        int c;
+        int result = 0;
+        int n = 0;
+        int minDig = 0;
+        int maxDig = 0;
+        int bitsPerDigit = 4;
+        int dig;
+        int i;
+        boolean braces = false;
+
+        /* Check that offset is in range */
+        int offset = offset16[0];
+        int length = s.length();
+        if (offset < 0 || offset >= length) {
+            return -1;
+        }
+
+        /* Fetch first UChar after '\\' */
+        c = UTF16.charAt(s, offset);
+        offset += UTF16.getCharCount(c);
+
+        /* Convert hexadecimal and octal escapes */
+        switch (c) {
+        case 'u':
+            minDig = maxDig = 4;
+            break;
+        case 'U':
+            minDig = maxDig = 8;
+            break;
+        case 'x':
+            minDig = 1;
+            if (offset < length && UTF16.charAt(s, offset) == 0x7B /*{*/) {
+                ++offset;
+                braces = true;
+                maxDig = 8;
+            } else {
+                maxDig = 2;
+            }
+            break;
+        default:
+            dig = UCharacter.digit(c, 8);
+            if (dig >= 0) {
+                minDig = 1;
+                maxDig = 3;
+                n = 1; /* Already have first octal digit */
+                bitsPerDigit = 3;
+                result = dig;
+            }
+            break;
+        }
+        if (minDig != 0) {
+            while (offset < length && n < maxDig) {
+                c = UTF16.charAt(s, offset);
+                dig = UCharacter.digit(c, (bitsPerDigit == 3) ? 8 : 16);
+                if (dig < 0) {
+                    break;
+                }
+                result = (result << bitsPerDigit) | dig;
+                offset += UTF16.getCharCount(c);
+                ++n;
+            }
+            if (n < minDig) {
+                return -1;
+            }
+            if (braces) {
+                if (c != 0x7D /*}*/) {
+                    return -1;
+                }
+                ++offset;
+            }
+            if (result < 0 || result >= 0x110000) {
+                return -1;
+            }
+            // If an escape sequence specifies a lead surrogate, see
+            // if there is a trail surrogate after it, either as an
+            // escape or as a literal.  If so, join them up into a
+            // supplementary.
+            if (offset < length &&
+                UTF16.isLeadSurrogate((char) result)) {
+                int ahead = offset+1;
+                c = s.charAt(offset); // [sic] get 16-bit code unit
+                if (c == '\\' && ahead < length) {
+                    int o[] = new int[] { ahead };
+                    c = unescapeAt(s, o);
+                    ahead = o[0];
+                }
+                if (UTF16.isTrailSurrogate((char) c)) {
+                    offset = ahead;
+                result = UCharacterProperty.getRawSupplementary(
+                                  (char) result, (char) c);
+                }
+            }
+            offset16[0] = offset;
+            return result;
+        }
+
+        /* Convert C-style escapes in table */
+        for (i=0; i<UNESCAPE_MAP.length; i+=2) {
+            if (c == UNESCAPE_MAP[i]) {
+                offset16[0] = offset;
+                return UNESCAPE_MAP[i+1];
+            } else if (c < UNESCAPE_MAP[i]) {
+                break;
+            }
+        }
+
+        /* Map \cX to control-X: X & 0x1F */
+        if (c == 'c' && offset < length) {
+            c = UTF16.charAt(s, offset);
+            offset16[0] = offset + UTF16.getCharCount(c);
+            return 0x1F & c;
+        }
+
+        /* If no special forms are recognized, then consider
+         * the backslash to generically escape the next character. */
+        offset16[0] = offset;
+        return c;
+    }
+
+    /**
+     * Convert all escapes in a given string using unescapeAt().
+     * @exception IllegalArgumentException if an invalid escape is
+     * seen.
+     */
+    public static String unescape(String s) {
+        StringBuffer buf = new StringBuffer();
+        int[] pos = new int[1];
+        for (int i=0; i<s.length(); ) {
+            char c = s.charAt(i++);
+            if (c == '\\') {
+                pos[0] = i;
+                int e = unescapeAt(s, pos);
+                if (e < 0) {
+                    throw new IllegalArgumentException("Invalid escape sequence " +
+                                                       s.substring(i-1, Math.min(i+8, s.length())));
+                }
+                UTF16.append(buf, e);
+                i = pos[0];
+            } else {
+                buf.append(c);
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert all escapes in a given string using unescapeAt().
+     * Leave invalid escape sequences unchanged.
+     */
+    public static String unescapeLeniently(String s) {
+        StringBuffer buf = new StringBuffer();
+        int[] pos = new int[1];
+        for (int i=0; i<s.length(); ) {
+            char c = s.charAt(i++);
+            if (c == '\\') {
+                pos[0] = i;
+                int e = unescapeAt(s, pos);
+                if (e < 0) {
+                    buf.append(c);
+                } else {
+                    UTF16.append(buf, e);
+                    i = pos[0];
+                }
+            } else {
+                buf.append(c);
+            }
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert a char to 4 hex uppercase digits.  E.g., hex('a') =>
+     * "0041".
+     */
+    public static String hex(char ch) {
+        StringBuffer temp = new StringBuffer();
+        return hex(ch, temp).toString();
+    }
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".
+     */
+    public static String hex(String s) {
+        StringBuffer temp = new StringBuffer();
+        return hex(s, temp).toString();
+    }
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".
+     */
+    public static String hex(StringBuffer s) {
+        return hex(s.toString());
+    }
+
+    /**
+     * Convert a char to 4 hex uppercase digits.  E.g., hex('a') =>
+     * "0041".  Append the output to the given StringBuffer.
+     */
+    public static StringBuffer hex(char ch, StringBuffer output) {
+        return appendNumber(output, ch, 16, 4);
+    }
+
+    /**
+     * Convert a integer to size width hex uppercase digits.
+     * E.g., hex('a', 4, str) => "0041".
+     * Append the output to the given StringBuffer.
+     * If width is too small to fit, nothing will be appended to output.
+     */
+    public static StringBuffer hex(int ch, int width, StringBuffer output) {
+        return appendNumber(output, ch, 16, width);
+    }
+
+    /**
+     * Convert a integer to size width (minimum) hex uppercase digits.
+     * E.g., hex('a', 4, str) => "0041".  If the integer requires more
+     * than width digits, more will be used.
+     */
+    public static String hex(int ch, int width) {
+        StringBuffer buf = new StringBuffer();
+        return appendNumber(buf, ch, 16, width).toString();
+    }
+    /**
+     * Supplies a zero-padded hex representation of an integer (without 0x)
+     */
+    static public String hex(long i, int places) {
+        if (i == Long.MIN_VALUE) return "-8000000000000000";
+        boolean negative = i < 0;
+        if (negative) {
+            i = -i;
+        }
+        String result = Long.toString(i, 16).toUpperCase();
+        if (result.length() < places) {
+            result = "0000000000000000".substring(result.length(),places) + result;
+        }
+        if (negative) {
+            return '-' + result;
+        }
+        return result;
+    }
+    
+    public static String hex(long ch) {
+        return hex(ch,4);
+    }
+    
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".  Append the output
+     * to the given StringBuffer.
+     */
+    public static StringBuffer hex(String s, StringBuffer result) {
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) result.append(',');
+            hex(s.charAt(i), result);
+        }
+        return result;
+    }
+
+    /**
+     * Split a string into pieces based on the given divider character
+     * @param s the string to split
+     * @param divider the character on which to split.  Occurrences of
+     * this character are not included in the output
+     * @param output an array to receive the substrings between
+     * instances of divider.  It must be large enough on entry to
+     * accomodate all output.  Adjacent instances of the divider
+     * character will place empty strings into output.  Before
+     * returning, output is padded out with empty strings.
+     */
+    public static void split(String s, char divider, String[] output) {
+        int last = 0;
+        int current = 0;
+        int i;
+        for (i = 0; i < s.length(); ++i) {
+            if (s.charAt(i) == divider) {
+                output[current++] = s.substring(last,i);
+                last = i+1;
+            }
+        }
+        output[current++] = s.substring(last,i);
+        while (current < output.length) {
+            output[current++] = "";
+        }
+    }
+
+    /**
+     * Split a string into pieces based on the given divider character
+     * @param s the string to split
+     * @param divider the character on which to split.  Occurrences of
+     * this character are not included in the output
+     * @return output an array to receive the substrings between
+     * instances of divider. Adjacent instances of the divider
+     * character will place empty strings into output.
+     */
+    public static String[] split(String s, char divider) {
+        int last = 0;
+        int i;
+        ArrayList output = new ArrayList();
+        for (i = 0; i < s.length(); ++i) {
+            if (s.charAt(i) == divider) {
+                output.add(s.substring(last,i));
+                last = i+1;
+            }
+        }
+        output.add( s.substring(last,i));
+        return (String[]) output.toArray(new String[output.size()]);
+    }
+    
+    /**
+     * Look up a given string in a string array.  Returns the index at
+     * which the first occurrence of the string was found in the
+     * array, or -1 if it was not found.
+     * @param source the string to search for
+     * @param target the array of zero or more strings in which to
+     * look for source
+     * @return the index of target at which source first occurs, or -1
+     * if not found
+     */
+    public static int lookup(String source, String[] target) {
+        for (int i = 0; i < target.length; ++i) {
+            if (source.equals(target[i])) return i;
+        }
+        return -1;
+    }
+
+    /**
+     * Skip over a sequence of zero or more white space characters
+     * at pos.  Return the index of the first non-white-space character
+     * at or after pos, or str.length(), if there is none.
+     */
+    public static int skipWhitespace(String str, int pos) {
+        while (pos < str.length()) {
+            int c = UTF16.charAt(str, pos);
+            if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                break;
+            }
+            pos += UTF16.getCharCount(c);
+        }
+        return pos;
+    }
+
+    /**
+     * Skip over a sequence of zero or more white space characters
+     * at pos[0], advancing it.
+     */
+    public static void skipWhitespace(String str, int[] pos) {
+        pos[0] = skipWhitespace(str, pos[0]);
+    }
+
+    /**
+     * Remove all rule white space from a string.
+     */
+    public static String deleteRuleWhiteSpace(String str) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<str.length(); ) {
+            int ch = UTF16.charAt(str, i);
+            i += UTF16.getCharCount(ch);
+            if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                continue;
+            }
+            UTF16.append(buf, ch);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Parse a single non-whitespace character 'ch', optionally
+     * preceded by whitespace.
+     * @param id the string to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, pos[0] is the
+     * offset of the first character to be parsed.  On output, pos[0]
+     * is the index after the last parsed character.  If the parse
+     * fails, pos[0] will be unchanged.
+     * @param ch the non-whitespace character to be parsed.
+     * @return true if 'ch' is seen preceded by zero or more
+     * whitespace characters.
+     */
+    public static boolean parseChar(String id, int[] pos, char ch) {
+        int start = pos[0];
+        skipWhitespace(id, pos);
+        if (pos[0] == id.length() ||
+            id.charAt(pos[0]) != ch) {
+            pos[0] = start;
+            return false;
+        }
+        ++pos[0];
+        return true;
+    }
+
+    /**
+     * Parse a pattern string starting at offset pos.  Keywords are
+     * matched case-insensitively.  Spaces may be skipped and may be
+     * optional or required.  Integer values may be parsed, and if
+     * they are, they will be returned in the given array.  If
+     * successful, the offset of the next non-space character is
+     * returned.  On failure, -1 is returned.
+     * @param pattern must only contain lowercase characters, which
+     * will match their uppercase equivalents as well.  A space
+     * character matches one or more required spaces.  A '~' character
+     * matches zero or more optional spaces.  A '#' character matches
+     * an integer and stores it in parsedInts, which the caller must
+     * ensure has enough capacity.
+     * @param parsedInts array to receive parsed integers.  Caller
+     * must ensure that parsedInts.length is >= the number of '#'
+     * signs in 'pattern'.
+     * @return the position after the last character parsed, or -1 if
+     * the parse failed
+     */
+    public static int parsePattern(String rule, int pos, int limit,
+                                   String pattern, int[] parsedInts) {
+        // TODO Update this to handle surrogates
+        int[] p = new int[1];
+        int intCount = 0; // number of integers parsed
+        for (int i=0; i<pattern.length(); ++i) {
+            char cpat = pattern.charAt(i);
+            char c;
+            switch (cpat) {
+            case ' ':
+                if (pos >= limit) {
+                    return -1;
+                }
+                c = rule.charAt(pos++);
+                if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                    return -1;
+                }
+                // FALL THROUGH to skipWhitespace
+            case '~':
+                pos = skipWhitespace(rule, pos);
+                break;
+            case '#':
+                p[0] = pos;
+                parsedInts[intCount++] = parseInteger(rule, p, limit);
+                if (p[0] == pos) {
+                    // Syntax error; failed to parse integer
+                    return -1;
+                }
+                pos = p[0];
+                break;
+            default:
+                if (pos >= limit) {
+                    return -1;
+                }
+                c = (char) UCharacter.toLowerCase(rule.charAt(pos++));
+                if (c != cpat) {
+                    return -1;
+                }
+                break;
+            }
+        }
+        return pos;
+    }
+
+    /**
+     * Parse a pattern string within the given Replaceable and a parsing
+     * pattern.  Characters are matched literally and case-sensitively
+     * except for the following special characters:
+     *
+     * ~  zero or more uprv_isRuleWhiteSpace chars
+     *
+     * If end of pattern is reached with all matches along the way,
+     * pos is advanced to the first unparsed index and returned.
+     * Otherwise -1 is returned.
+     * @param pat pattern that controls parsing
+     * @param text text to be parsed, starting at index
+     * @param index offset to first character to parse
+     * @param limit offset after last character to parse
+     * @return index after last parsed character, or -1 on parse failure.
+     */
+    public static int parsePattern(String pat,
+                                   Replaceable text,
+                                   int index,
+                                   int limit) {
+        int ipat = 0;
+
+        // empty pattern matches immediately
+        if (ipat == pat.length()) {
+            return index;
+        }
+
+        int cpat = UTF16.charAt(pat, ipat);
+
+        while (index < limit) {
+            int c = text.char32At(index);
+
+            // parse \s*
+            if (cpat == '~') {
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    index += UTF16.getCharCount(c);
+                    continue;
+                } else {
+                    if (++ipat == pat.length()) {
+                        return index; // success; c unparsed
+                    }
+                    // fall thru; process c again with next cpat
+                }
+            }
+
+            // parse literal
+            else if (c == cpat) {
+                int n = UTF16.getCharCount(c);
+                index += n;
+                ipat += n;
+                if (ipat == pat.length()) {
+                    return index; // success; c parsed
+                }
+                // fall thru; get next cpat
+            }
+
+            // match failure of literal
+            else {
+                return -1;
+            }
+
+            cpat = UTF16.charAt(pat, ipat);
+        }
+
+        return -1; // text ended before end of pat
+    }
+
+    /**
+     * Parse an integer at pos, either of the form \d+ or of the form
+     * 0x[0-9A-Fa-f]+ or 0[0-7]+, that is, in standard decimal, hex,
+     * or octal format.
+     * @param pos INPUT-OUTPUT parameter.  On input, the first
+     * character to parse.  On output, the character after the last
+     * parsed character.
+     */
+    public static int parseInteger(String rule, int[] pos, int limit) {
+        int count = 0;
+        int value = 0;
+        int p = pos[0];
+        int radix = 10;
+
+        if (rule.regionMatches(true, p, "0x", 0, 2)) {
+            p += 2;
+            radix = 16;
+        } else if (p < limit && rule.charAt(p) == '0') {
+            p++;
+            count = 1;
+            radix = 8;
+        }
+
+        while (p < limit) {
+            int d = UCharacter.digit(rule.charAt(p++), radix);
+            if (d < 0) {
+                --p;
+                break;
+            }
+            ++count;
+            int v = (value * radix) + d;
+            if (v <= value) {
+                // If there are too many input digits, at some point
+                // the value will go negative, e.g., if we have seen
+                // "0x8000000" already and there is another '0', when
+                // we parse the next 0 the value will go negative.
+                return 0;
+            }
+            value = v;
+        }
+        if (count > 0) {
+            pos[0] = p;
+        }
+        return value;
+    }
+
+    /**
+     * Parse a Unicode identifier from the given string at the given
+     * position.  Return the identifier, or null if there is no
+     * identifier.
+     * @param str the string to parse
+     * @param pos INPUT-OUPUT parameter.  On INPUT, pos[0] is the
+     * first character to examine.  It must be less than str.length(),
+     * and it must not point to a whitespace character.  That is, must
+     * have pos[0] < str.length() and
+     * !UCharacterProperty.isRuleWhiteSpace(UTF16.charAt(str, pos[0])).  On
+     * OUTPUT, the position after the last parsed character.
+     * @return the Unicode identifier, or null if there is no valid
+     * identifier at pos[0].
+     */
+    public static String parseUnicodeIdentifier(String str, int[] pos) {
+        // assert(pos[0] < str.length());
+        // assert(!UCharacterProperty.isRuleWhiteSpace(UTF16.charAt(str, pos[0])));
+        StringBuffer buf = new StringBuffer();
+        int p = pos[0];
+        while (p < str.length()) {
+            int ch = UTF16.charAt(str, p);
+            if (buf.length() == 0) {
+                if (UCharacter.isUnicodeIdentifierStart(ch)) {
+                    UTF16.append(buf, ch);
+                } else {
+                    return null;
+                }
+            } else {
+                if (UCharacter.isUnicodeIdentifierPart(ch)) {
+                    UTF16.append(buf, ch);
+                } else {
+                    break;
+                }
+            }
+            p += UTF16.getCharCount(ch);
+        }
+        pos[0] = p;
+        return buf.toString();
+    }
+
+    /**
+     * Trim whitespace from ends of a StringBuffer.
+     */
+    public static StringBuffer trim(StringBuffer b) {
+        // TODO update to handle surrogates
+        int i;
+        for (i=0; i<b.length() && UCharacter.isWhitespace(b.charAt(i)); ++i) {}
+        b.delete(0, i);
+        for (i=b.length()-1; i>=0 && UCharacter.isWhitespace(b.charAt(i)); --i) {}
+        return b.delete(i+1, b.length());
+    }
+
+    static final char DIGITS[] = {
+        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
+        'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
+        'U', 'V', 'W', 'X', 'Y', 'Z'
+    };
+
+    /**
+     * Append a number to the given StringBuffer in the radix 10
+     * generating at least one digit.
+     */
+    public static StringBuffer appendNumber(StringBuffer result, int n) {
+        return appendNumber(result, n, 10, 1);
+    }
+
+    /**
+     * Append the digits of a positive integer to the given
+     * <code>StringBuffer</code> in the given radix. This is
+     * done recursively since it is easiest to generate the low-
+     * order digit first, but it must be appended last.
+     *
+     * @param result is the <code>StringBuffer</code> to append to
+     * @param n is the positive integer
+     * @param radix is the radix, from 2 to 36 inclusive
+     * @param minDigits is the minimum number of digits to append.
+     */
+    private static void recursiveAppendNumber(StringBuffer result, int n,
+                                                int radix, int minDigits)
+    {
+        int digit = n % radix;
+
+        if (n >= radix || minDigits > 1) {
+            recursiveAppendNumber(result, n / radix, radix, minDigits - 1);
+        }
+
+        result.append(DIGITS[digit]);
+    }
+
+    /**
+     * Append a number to the given StringBuffer in the given radix.
+     * Standard digits '0'-'9' are used and letters 'A'-'Z' for
+     * radices 11 through 36.
+     * @param result the digits of the number are appended here
+     * @param n the number to be converted to digits; may be negative.
+     * If negative, a '-' is prepended to the digits.
+     * @param radix a radix from 2 to 36 inclusive.
+     * @param minDigits the minimum number of digits, not including
+     * any '-', to produce.  Values less than 2 have no effect.  One
+     * digit is always emitted regardless of this parameter.
+     * @return a reference to result
+     */
+    public static StringBuffer appendNumber(StringBuffer result, int n,
+                                             int radix, int minDigits)
+        throws IllegalArgumentException
+    {
+        if (radix < 2 || radix > 36) {
+            throw new IllegalArgumentException("Illegal radix " + radix);
+        }
+
+
+        int abs = n;
+
+        if (n < 0) {
+            abs = -n;
+            result.append("-");
+        }
+
+        recursiveAppendNumber(result, abs, radix, minDigits);
+
+        return result;
+    }
+
+    /**
+     * Parse an unsigned 31-bit integer at the given offset.  Use
+     * UCharacter.digit() to parse individual characters into digits.
+     * @param text the text to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On entry, pos[0] is the
+     * offset within text at which to start parsing; it should point
+     * to a valid digit.  On exit, pos[0] is the offset after the last
+     * parsed character.  If the parse failed, it will be unchanged on
+     * exit.  Must be >= 0 on entry.
+     * @param radix the radix in which to parse; must be >= 2 and <=
+     * 36.
+     * @return a non-negative parsed number, or -1 upon parse failure.
+     * Parse fails if there are no digits, that is, if pos[0] does not
+     * point to a valid digit on entry, or if the number to be parsed
+     * does not fit into a 31-bit unsigned integer.
+     */
+    public static int parseNumber(String text, int[] pos, int radix) {
+        // assert(pos[0] >= 0);
+        // assert(radix >= 2);
+        // assert(radix <= 36);
+        int n = 0;
+        int p = pos[0];
+        while (p < text.length()) {
+            int ch = UTF16.charAt(text, p);
+            int d = UCharacter.digit(ch, radix);
+            if (d < 0) {
+                break;
+            }
+            n = radix*n + d;
+            // ASSUME that when a 32-bit integer overflows it becomes
+            // negative.  E.g., 214748364 * 10 + 8 => negative value.
+            if (n < 0) {
+                return -1;
+            }
+            ++p;
+        }
+        if (p == pos[0]) {
+            return -1;
+        }
+        pos[0] = p;
+        return n;
+    }
+
+    /**
+     * Return true if the character is NOT printable ASCII.  The tab,
+     * newline and linefeed characters are considered unprintable.
+     */
+    public static boolean isUnprintable(int c) {
+        return !(c >= 0x20 && c <= 0x7E);
+    }
+
+    /**
+     * Escape unprintable characters using <backslash>uxxxx notation
+     * for U+0000 to U+FFFF and <backslash>Uxxxxxxxx for U+10000 and
+     * above.  If the character is printable ASCII, then do nothing
+     * and return FALSE.  Otherwise, append the escaped notation and
+     * return TRUE.
+     */
+    public static boolean escapeUnprintable(StringBuffer result, int c) {
+        if (isUnprintable(c)) {
+            result.append('\\');
+            if ((c & ~0xFFFF) != 0) {
+                result.append('U');
+                result.append(DIGITS[0xF&(c>>28)]);
+                result.append(DIGITS[0xF&(c>>24)]);
+                result.append(DIGITS[0xF&(c>>20)]);
+                result.append(DIGITS[0xF&(c>>16)]);
+            } else {
+                result.append('u');
+            }
+            result.append(DIGITS[0xF&(c>>12)]);
+            result.append(DIGITS[0xF&(c>>8)]);
+            result.append(DIGITS[0xF&(c>>4)]);
+            result.append(DIGITS[0xF&c]);
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns the index of the first character in a set, ignoring quoted text.
+     * For example, in the string "abc'hide'h", the 'h' in "hide" will not be
+     * found by a search for "h".  Unlike String.indexOf(), this method searches
+     * not for a single character, but for any character of the string
+     * <code>setOfChars</code>.
+     * @param text text to be searched
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param setOfChars string with one or more distinct characters
+     * @return Offset of the first character in <code>setOfChars</code>
+     * found, or -1 if not found.
+     * @see String#indexOf
+     */
+    public static int quotedIndexOf(String text, int start, int limit,
+                                    String setOfChars) {
+        for (int i=start; i<limit; ++i) {
+            char c = text.charAt(i);
+            if (c == BACKSLASH) {
+                ++i;
+            } else if (c == APOSTROPHE) {
+                while (++i < limit
+                       && text.charAt(i) != APOSTROPHE) {}
+            } else if (setOfChars.indexOf(c) >= 0) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    /**
+    * Similar to StringBuffer.getChars, version 1.3.
+    * Since JDK 1.2 implements StringBuffer.getChars differently, this method
+    * is here to provide consistent results.
+    * To be removed after JDK 1.2 ceased to be the reference platform.
+    * @param src source string buffer
+    * @param srcBegin offset to the start of the src to retrieve from
+    * @param srcEnd offset to the end of the src to retrieve from
+    * @param dst char array to store the retrieved chars
+    * @param dstBegin offset to the start of the destination char array to
+    *                 store the retrieved chars
+    */
+    public static void getChars(StringBuffer src, int srcBegin, int srcEnd,
+                                char dst[], int dstBegin)
+    {
+        if (srcBegin == srcEnd) {
+            return;
+        }
+        src.getChars(srcBegin, srcEnd, dst, dstBegin);
+    }
+
+    /**
+     * Append a character to a rule that is being built up.  To flush
+     * the quoteBuf to rule, make one final call with isLiteral == true.
+     * If there is no final character, pass in (int)-1 as c.
+     * @param rule the string to append the character to
+     * @param c the character to append, or (int)-1 if none.
+     * @param isLiteral if true, then the given character should not be
+     * quoted or escaped.  Usually this means it is a syntactic element
+     * such as > or $
+     * @param escapeUnprintable if true, then unprintable characters
+     * should be escaped using escapeUnprintable().  These escapes will
+     * appear outside of quotes.
+     * @param quoteBuf a buffer which is used to build up quoted
+     * substrings.  The caller should initially supply an empty buffer,
+     * and thereafter should not modify the buffer.  The buffer should be
+     * cleared out by, at the end, calling this method with a literal
+     * character (which may be -1).
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    int c,
+                                    boolean isLiteral,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        // If we are escaping unprintables, then escape them outside
+        // quotes.  \\u and \\U are not recognized within quotes.  The same
+        // logic applies to literals, but literals are never escaped.
+        if (isLiteral ||
+            (escapeUnprintable && Utility.isUnprintable(c))) {
+            if (quoteBuf.length() > 0) {
+                // We prefer backslash APOSTROPHE to double APOSTROPHE
+                // (more readable, less similar to ") so if there are
+                // double APOSTROPHEs at the ends, we pull them outside
+                // of the quote.
+
+                // If the first thing in the quoteBuf is APOSTROPHE
+                // (doubled) then pull it out.
+                while (quoteBuf.length() >= 2 &&
+                       quoteBuf.charAt(0) == APOSTROPHE &&
+                       quoteBuf.charAt(1) == APOSTROPHE) {
+                    rule.append(BACKSLASH).append(APOSTROPHE);
+                    quoteBuf.delete(0, 2);
+                }
+                // If the last thing in the quoteBuf is APOSTROPHE
+                // (doubled) then remove and count it and add it after.
+                int trailingCount = 0;
+                while (quoteBuf.length() >= 2 &&
+                       quoteBuf.charAt(quoteBuf.length()-2) == APOSTROPHE &&
+                       quoteBuf.charAt(quoteBuf.length()-1) == APOSTROPHE) {
+                    quoteBuf.setLength(quoteBuf.length()-2);
+                    ++trailingCount;
+                }
+                if (quoteBuf.length() > 0) {
+                    rule.append(APOSTROPHE);
+                    // jdk 1.3.1 does not have append(StringBuffer) yet
+                    if(ICUDebug.isJDK14OrHigher){
+                        rule.append(quoteBuf);
+                    }else{
+                        rule.append(quoteBuf.toString());
+                    }
+                    rule.append(APOSTROPHE);
+                    quoteBuf.setLength(0);
+                }
+                while (trailingCount-- > 0) {
+                    rule.append(BACKSLASH).append(APOSTROPHE);
+                }
+            }
+            if (c != -1) {
+                /* Since spaces are ignored during parsing, they are
+                 * emitted only for readability.  We emit one here
+                 * only if there isn't already one at the end of the
+                 * rule.
+                 */
+                if (c == ' ') {
+                    int len = rule.length();
+                    if (len > 0 && rule.charAt(len-1) != ' ') {
+                        rule.append(' ');
+                    }
+                } else if (!escapeUnprintable || !Utility.escapeUnprintable(rule, c)) {
+                    UTF16.append(rule, c);
+                }
+            }
+        }
+
+        // Escape ' and '\' and don't begin a quote just for them
+        else if (quoteBuf.length() == 0 &&
+                 (c == APOSTROPHE || c == BACKSLASH)) {
+            rule.append(BACKSLASH).append((char)c);
+        }
+
+        // Specials (printable ascii that isn't [0-9a-zA-Z]) and
+        // whitespace need quoting.  Also append stuff to quotes if we are
+        // building up a quoted substring already.
+        else if (quoteBuf.length() > 0 ||
+                 (c >= 0x0021 && c <= 0x007E &&
+                  !((c >= 0x0030/*'0'*/ && c <= 0x0039/*'9'*/) ||
+                    (c >= 0x0041/*'A'*/ && c <= 0x005A/*'Z'*/) ||
+                    (c >= 0x0061/*'a'*/ && c <= 0x007A/*'z'*/))) ||
+                 UCharacterProperty.isRuleWhiteSpace(c)) {
+            UTF16.append(quoteBuf, c);
+            // Double ' within a quote
+            if (c == APOSTROPHE) {
+                quoteBuf.append((char)c);
+            }
+        }
+
+        // Otherwise just append
+        else {
+            UTF16.append(rule, c);
+        }
+    }
+
+    /**
+     * Append the given string to the rule.  Calls the single-character
+     * version of appendToRule for each character.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    String text,
+                                    boolean isLiteral,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        for (int i=0; i<text.length(); ++i) {
+            // Okay to process in 16-bit code units here
+            appendToRule(rule, text.charAt(i), isLiteral, escapeUnprintable, quoteBuf);
+        }
+    }
+
+    /**
+     * Given a matcher reference, which may be null, append its
+     * pattern as a literal to the given rule.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    UnicodeMatcher matcher,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        if (matcher != null) {
+            appendToRule(rule, matcher.toPattern(escapeUnprintable),
+                         true, escapeUnprintable, quoteBuf);
+        }
+    }
+
+    /**
+     * Compares 2 unsigned integers
+     * @param source 32 bit unsigned integer
+     * @param target 32 bit unsigned integer
+     * @return 0 if equals, 1 if source is greater than target and -1
+     *         otherwise
+     */
+    public static final int compareUnsigned(int source, int target)
+    {
+        source += MAGIC_UNSIGNED;
+        target += MAGIC_UNSIGNED;
+        if (source < target) {
+            return -1;
+        } 
+        else if (source > target) {
+            return 1;
+        }
+        return 0;
+    }
+
+    /**
+     * Find the highest bit in a positive integer. This is done
+     * by doing a binary search through the bits.
+     *
+     * @param n is the integer
+     *
+     * @return the bit number of the highest bit, with 0 being
+     * the low order bit, or -1 if <code>n</code> is not positive
+     */
+    public static final byte highBit(int n)
+    {
+        if (n <= 0) {
+            return -1;
+        }
+
+        byte bit = 0;
+
+        if (n >= 1 << 16) {
+            n >>= 16;
+            bit += 16;
+        }
+
+        if (n >= 1 << 8) {
+            n >>= 8;
+            bit += 8;
+        }
+
+        if (n >= 1 << 4) {
+            n >>= 4;
+            bit += 4;
+        }
+
+        if (n >= 1 << 2) {
+            n >>= 2;
+            bit += 2;
+        }
+
+        if (n >= 1 << 1) {
+            n >>= 1;
+            bit += 1;
+        }
+
+        return bit;
+    }
+    /**
+     * Utility method to take a int[] containing codepoints and return
+     * a string representation with code units. 
+     */
+    public static String valueOf(int[]source){
+    // TODO: Investigate why this method is not on UTF16 class
+        StringBuffer result = new StringBuffer(source.length);
+        for(int i=0; i<source.length; i++){
+            UTF16.append(result,source[i]);
+        }
+        return result.toString();
+    }
+    
+    
+    /**
+     * Utility to duplicate a string count times
+     * @param s
+     * @param count
+     */
+    public static String repeat(String s, int count) {
+        if (count <= 0) return "";
+        if (count == 1) return s;
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < count; ++i) {
+            result.append(s);
+        }
+        return result.toString();
+    }
+
+    
+    // !!! 1.3 compatibility
+    public static int indexOf(StringBuffer buf, String s) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        return buf.toString().indexOf(s);
+//#else
+        return buf.indexOf(s);
+//#endif
+    }
+    
+    // !!! 1.3 compatibility
+    public static int lastIndexOf(StringBuffer buf, String s) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        return buf.toString().lastIndexOf(s);
+//#else
+        return buf.lastIndexOf(s);
+//#endif
+    }
+    
+    // !!! 1.3 compatibility
+    public static int indexOf(StringBuffer buf, String s, int i) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        return buf.toString().indexOf(s, i);
+//#else
+        return buf.indexOf(s, i);
+//#endif
+    }
+    
+    // !!! 1.3 compatibility
+   public static int lastIndexOf(StringBuffer buf, String s, int i) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        return buf.toString().lastIndexOf(s, i);
+//#else
+        return buf.lastIndexOf(s, i);
+//#endif
+    }
+
+   // !!! 1.3/1.4 compatibility
+   public static String replace(String src, String target, String replacement) {
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//##       int i = src.indexOf(target);
+//##       if (i == -1) {
+//##           return src;
+//##       }
+//##       StringBuffer buf = new StringBuffer();
+//##       int n = 0;
+//##       do {
+//##           buf.append(src.substring(n, i));
+//##           buf.append(replacement);
+//##           n = i + target.length();
+//##           i = src.indexOf(target, n);
+//##       } while (i != -1);
+//##       if (n < src.length()) {
+//##           buf.append(src.substring(n));
+//##       }
+//##       return buf.toString();
+//#else
+       return src.replace(target, replacement);
+//#endif
+   }
+
+   // !!! 1.3 compatibility
+   public static String replaceAll(String src, String target, String replacement) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##       return replace(src, target, replacement);
+//#else
+       return src.replaceAll(target, replacement);
+//#endif
+   }
+
+   //private static final String REGEX_SPECIALS = ".^$[]*+?|()";
+
+   // !!! 1.3 compatibility
+   // Note: target is not a string literal, not a regular expression.
+   public static String[] splitString(String src, String target) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##       int i = src.indexOf(target);
+//##       if (i == -1) {
+//##           return new String[] { src };
+//##       }
+//##       ArrayList output = new ArrayList();
+//##       int n = 0;
+//##       do {
+//##           output.add(src.substring(n, i));
+//##           n = i + target.length();
+//##           i = src.indexOf(target, n);
+//##       } while (i != -1);
+//##       if (n < src.length()) {
+//##           output.add(src.substring(n));
+//##       }
+//##       return (String[]) output.toArray(new String[output.size()]);
+//#else
+       return src.split("\\Q" + target + "\\E");
+//#endif
+   }
+
+   // !!! 1.3 compatibility
+  /**
+   * Split the string at runs of ascii whitespace characters.
+   */
+   public static String[] splitWhitespace(String src) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##        char ws[] = "\u0020\u0009\n\u000b\u000c\r".toCharArray();
+//##        ArrayList output = new ArrayList();
+//##        boolean inWhitespace = true;
+//##        int n = 0;
+//##  loop:
+//##        for (int i = 0; i < src.length(); ++i) {
+//##          char c = src.charAt(i);
+//##          for (int j = 0; j < ws.length; ++j) {
+//##            if (ws[j] == c) {
+//##              if (!inWhitespace) {
+//##                output.add(src.substring(n, i));
+//##                inWhitespace = true;
+//##              }
+//##              continue loop;
+//##            }
+//##          }
+//##          if (inWhitespace) {
+//##            n = i;
+//##            inWhitespace = false;
+//##          }
+//##        }
+//##        if (n < src.length()) {
+//##          output.add(src.substring(n));
+//##        }
+//##        return (String[]) output.toArray(new String[output.size()]);
+//#else
+       return src.split("\\s+");
+//#endif
+   }
+
+   // !!! 1.3/1.4 compatibility
+   // Integer constants - Integer.valueOf(int) is not supported in JDK 1.3/1.4
+   private static final int MAX_INT_CONST = 64;
+   private static final Integer[] INT_CONST = new Integer[MAX_INT_CONST];
+
+   static {
+       for (int i = 0; i < MAX_INT_CONST; i++) {
+           INT_CONST[i] = new Integer(i);
+       }
+   }
+
+   public static Integer integerValueOf(int val) {
+       if (0 <= val && val < MAX_INT_CONST) {
+           return INT_CONST[val];
+       }
+       return new Integer(val);
+   }
+}
diff --git a/src/com/ibm/icu/impl/UtilityExtensions.java b/src/com/ibm/icu/impl/UtilityExtensions.java
new file mode 100644
index 0000000..40080d7
--- /dev/null
+++ b/src/com/ibm/icu/impl/UtilityExtensions.java
@@ -0,0 +1,113 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.text.Replaceable;
+import com.ibm.icu.text.ReplaceableString;
+import com.ibm.icu.text.UnicodeMatcher;
+import com.ibm.icu.text.Transliterator;
+/**
+ * @author Ram
+ */
+//This class contains utility functions so testing not needed
+///CLOVER:OFF
+public class UtilityExtensions {
+    /**
+     * Append the given string to the rule.  Calls the single-character
+     * version of appendToRule for each character.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    String text,
+                                    boolean isLiteral,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        for (int i=0; i<text.length(); ++i) {
+            // Okay to process in 16-bit code units here
+            Utility.appendToRule(rule, text.charAt(i), isLiteral, escapeUnprintable, quoteBuf);
+        }
+    }
+
+
+    /**
+     * Given a matcher reference, which may be null, append its
+     * pattern as a literal to the given rule.
+     */
+    public static void appendToRule(StringBuffer rule,
+                                    UnicodeMatcher matcher,
+                                    boolean escapeUnprintable,
+                                    StringBuffer quoteBuf) {
+        if (matcher != null) {
+            appendToRule(rule, matcher.toPattern(escapeUnprintable),
+                         true, escapeUnprintable, quoteBuf);
+        }
+    }
+    /**
+     * For debugging purposes; format the given text in the form
+     * aaa{bbb|ccc|ddd}eee, where the {} indicate the context start
+     * and limit, and the || indicate the start and limit.
+     */
+    public static String formatInput(ReplaceableString input,
+                                     Transliterator.Position pos) {
+        StringBuffer appendTo = new StringBuffer();
+        formatInput(appendTo, input, pos);
+        return com.ibm.icu.impl.Utility.escape(appendTo.toString());
+    }
+
+    /**
+     * For debugging purposes; format the given text in the form
+     * aaa{bbb|ccc|ddd}eee, where the {} indicate the context start
+     * and limit, and the || indicate the start and limit.
+     */
+    public static StringBuffer formatInput(StringBuffer appendTo,
+                                           ReplaceableString input,
+                                           Transliterator.Position pos) {
+        if (0 <= pos.contextStart &&
+            pos.contextStart <= pos.start &&
+            pos.start <= pos.limit &&
+            pos.limit <= pos.contextLimit &&
+            pos.contextLimit <= input.length()) {
+
+            String  b, c, d;
+            //a = input.substring(0, pos.contextStart);
+            b = input.substring(pos.contextStart, pos.start);
+            c = input.substring(pos.start, pos.limit);
+            d = input.substring(pos.limit, pos.contextLimit);
+            //e = input.substring(pos.contextLimit, input.length());
+            appendTo.//append(a).
+                append('{').append(b).
+                append('|').append(c).append('|').append(d).
+                append('}')
+                //.append(e)
+                ;
+        } else {
+            appendTo.append("INVALID Position {cs=" +
+                            pos.contextStart + ", s=" + pos.start + ", l=" +
+                            pos.limit + ", cl=" + pos.contextLimit + "} on " +
+                            input);
+        }
+        return appendTo;
+    }
+
+    /**
+     * Convenience method.
+     */
+    public static String formatInput(Replaceable input,
+                                     Transliterator.Position pos) {
+        return formatInput((ReplaceableString) input, pos);
+    }
+
+    /**
+     * Convenience method.
+     */
+    public static StringBuffer formatInput(StringBuffer appendTo,
+                                           Replaceable input,
+                                           Transliterator.Position pos) {
+        return formatInput(appendTo, (ReplaceableString) input, pos);
+    }
+
+}
+//CLOVER:ON
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/ZoneMeta.java b/src/com/ibm/icu/impl/ZoneMeta.java
new file mode 100644
index 0000000..32afbf9
--- /dev/null
+++ b/src/com/ibm/icu/impl/ZoneMeta.java
@@ -0,0 +1,1097 @@
+/*
+**********************************************************************
+* Copyright (c) 2003-2008 International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: September 4 2003
+* Since: ICU 2.8
+**********************************************************************
+*/
+package com.ibm.icu.impl;
+
+import java.lang.ref.SoftReference;
+import java.text.ParsePosition;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.Vector;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+
+/**
+ * This class, not to be instantiated, implements the meta-data
+ * missing from the underlying core JDK implementation of time zones.
+ * There are two missing features: Obtaining a list of available zones
+ * for a given country (as defined by the Olson database), and
+ * obtaining a list of equivalent zones for a given zone (as defined
+ * by Olson links).
+ *
+ * This class uses a data class, ZoneMetaData, which is created by the
+ * tool tz2icu.
+ *
+ * @author Alan Liu
+ * @since ICU 2.8
+ */
+public final class ZoneMeta {
+    private static final boolean ASSERT = false;
+
+    /**
+     * Returns a String array containing all system TimeZone IDs
+     * associated with the given country.  These IDs may be passed to
+     * <code>TimeZone.getTimeZone()</code> to construct the
+     * corresponding TimeZone object.
+     * @param country a two-letter ISO 3166 country code, or <code>null</code>
+     * to return zones not associated with any country
+     * @return an array of IDs for system TimeZones in the given
+     * country.  If there are none, return a zero-length array.
+     */
+    public static synchronized String[] getAvailableIDs(String country) {
+        if(!getOlsonMeta()){
+            return EMPTY;
+        }
+        try{
+            UResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle regions = top.get(kREGIONS);
+            UResourceBundle names = top.get(kNAMES); // dereference Zones section
+            UResourceBundle temp = regions.get(country);
+            int[] vector = temp.getIntVector();
+            if (ASSERT) Assert.assrt("vector.length>0", vector.length>0);
+            String[] ret = new String[vector.length];
+            for (int i=0; i<vector.length; ++i) {
+                if (ASSERT) Assert.assrt("vector[i] >= 0 && vector[i] < OLSON_ZONE_COUNT", 
+                        vector[i] >= 0 && vector[i] < OLSON_ZONE_COUNT);
+                ret[i] = names.getString(vector[i]);
+            }
+            return ret;
+        }catch(MissingResourceException ex){
+            //throw away the exception
+        }
+        return EMPTY;
+    }
+    public static synchronized String[] getAvailableIDs() {
+        if(!getOlsonMeta()){
+            return EMPTY;
+        }
+        try{
+            UResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle names = top.get(kNAMES); // dereference Zones section
+            return names.getStringArray();
+        }catch(MissingResourceException ex){
+            //throw away the exception
+        }
+        return EMPTY;
+    }
+    public static synchronized String[] getAvailableIDs(int offset){
+        Vector vector = new Vector();
+        for (int i=0; i<OLSON_ZONE_COUNT; ++i) {
+            String unistr;
+            if ((unistr=getID(i))!=null) {
+                // This is VERY inefficient.
+                TimeZone z = TimeZone.getTimeZone(unistr);
+                // Make sure we get back the ID we wanted (if the ID is
+                // invalid we get back GMT).
+                if (z != null && z.getID().equals(unistr) &&
+                    z.getRawOffset() == offset) {
+                    vector.add(unistr);
+                }
+            }
+        }
+        if(!vector.isEmpty()){
+            String[] strings = new String[vector.size()];
+            return (String[])vector.toArray(strings);
+        }
+        return EMPTY;
+    }
+    private static String getID(int i) {
+        try{
+            UResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle names = top.get(kNAMES); // dereference Zones section
+            return names.getString(i);
+        }catch(MissingResourceException ex){
+            //throw away the exception
+        }
+        return null;
+    }
+    /**
+     * Returns the number of IDs in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that behave identically to the given zone.
+     *
+     * <p>If there are no equivalent zones, then this method returns
+     * 0.  This means either the given ID is not a valid zone, or it
+     * is and there are no other equivalent zones.
+     * @param id a system time zone ID
+     * @return the number of zones in the equivalency group containing
+     * 'id', or zero if there are no equivalent zones.
+     * @see #getEquivalentID
+     */
+    public static synchronized int countEquivalentIDs(String id) {
+
+        UResourceBundle res = openOlsonResource(id);
+        int size = res.getSize();
+        if (size == 4 || size == 6) {
+            UResourceBundle r=res.get(size-1);
+            //result = ures_getSize(&r); // doesn't work
+            int[] v = r.getIntVector();
+            return v.length;
+        }
+        return 0;
+    }
+
+    /**
+     * Returns an ID in the equivalency group that includes the given
+     * ID.  An equivalency group contains zones that behave
+     * identically to the given zone.
+     *
+     * <p>The given index must be in the range 0..n-1, where n is the
+     * value returned by <code>countEquivalentIDs(id)</code>.  For
+     * some value of 'index', the returned value will be equal to the
+     * given id.  If the given id is not a valid system time zone, or
+     * if 'index' is out of range, then returns an empty string.
+     * @param id a system time zone ID
+     * @param index a value from 0 to n-1, where n is the value
+     * returned by <code>countEquivalentIDs(id)</code>
+     * @return the ID of the index-th zone in the equivalency group
+     * containing 'id', or an empty string if 'id' is not a valid
+     * system ID or 'index' is out of range
+     * @see #countEquivalentIDs
+     */
+    public static synchronized String getEquivalentID(String id, int index) {
+        String result="";
+        UResourceBundle res = openOlsonResource(id);
+        if (res != null) {
+            int zone = -1;
+            int size = res.getSize();
+            if (size == 4 || size == 6) {
+                UResourceBundle r = res.get(size-1);
+                int[] v = r.getIntVector();
+                if (index >= 0 && index < v.length) {
+                    zone = v[index];
+                }
+            }
+            if (zone >= 0) {
+                try {
+                    UResourceBundle top = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo",
+                            ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                    UResourceBundle ares = top.get(kNAMES); // dereference Zones section
+                    result = ares.getString(zone);
+                } catch (MissingResourceException e) {
+                    result = "";
+                }
+            }
+        }
+        return result;
+    }
+
+    private static String[] getCanonicalInfo(String id) {
+        if (id == null || id.length() == 0) {
+            return null;
+        }
+        if (canonicalMap == null) {
+            Map m = new HashMap();
+            Set s = new HashSet();
+            try {
+                UResourceBundle supplementalDataBundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+    
+                UResourceBundle zoneFormatting = supplementalDataBundle.get("zoneFormatting");
+                UResourceBundleIterator it = zoneFormatting.getIterator();
+    
+                while ( it.hasNext()) {
+                    UResourceBundle temp = it.next();
+                    int resourceType = temp.getType();
+    
+                    switch(resourceType) {
+                        case UResourceBundle.TABLE:
+                            String [] result = { "", "" };
+                            UResourceBundle zoneInfo = temp;
+                            String canonicalID = zoneInfo.getKey().replace(':','/');
+                            String territory = zoneInfo.get("territory").getString();
+                            result[0] = canonicalID;
+                            if ( territory.equals("001")) {
+                                result[1] = null;
+                            }
+                            else {
+                                result[1] = territory;
+                            }
+                            m.put(canonicalID,result);
+                            try {
+                                UResourceBundle aliasBundle = zoneInfo.get("aliases");
+                                String [] aliases = aliasBundle.getStringArray();
+                                for (int i=0 ; i<aliases.length; i++) {
+                                   m.put(aliases[i],result);
+                                }
+                            } catch(MissingResourceException ex){
+                                // Disregard if there are no aliases
+                            }
+                            break;
+                        case UResourceBundle.ARRAY:
+                            String[] territoryList = temp.getStringArray();
+                            for (int i=0 ; i < territoryList.length; i++) {
+                                s.add(territoryList[i]);
+                            }
+                            break;
+                    }
+                }
+            } catch (MissingResourceException e) {
+                // throws away the exception - maps are empty for this case
+            }
+
+            // Some available Olson zones are not included in CLDR data (such as Asia/Riyadh87).
+            // Also, when we update Olson tzdata, new zones may be added.
+            // This code scans all available zones in zoneinfo.res, and if any of them are
+            // missing, add them to the map.
+            try{
+                UResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,
+                        "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                UResourceBundle names = top.get(kNAMES);
+                String[] ids = names.getStringArray();
+                for (int i = 0; i < ids.length; i++) {
+                    if (m.containsKey(ids[i])) {
+                        // Already included in CLDR data
+                        continue;
+                    }
+                    // Not in CLDR data, but it could be new one whose alias is
+                    // available in CLDR
+                    String[] tmpinfo = null;
+                    int nTzdataEquivalent = TimeZone.countEquivalentIDs(ids[i]);
+                    for (int j = 0; j < nTzdataEquivalent; j++) {
+                        String alias = TimeZone.getEquivalentID(ids[i], j);
+                        if (alias.equals(ids[i])) {
+                            continue;
+                        }
+                        tmpinfo = (String[])m.get(alias);
+                        if (tmpinfo != null) {
+                            break;
+                        }
+                    }
+                    if (tmpinfo == null) {
+                        // Set dereferenced zone ID as the canonical ID
+                        UResourceBundle res = getZoneByName(top, ids[i]);
+                        String derefID = (res.getSize() == 1) ? ids[res.getInt()] : ids[i];
+                        m.put(ids[i], new String[] {derefID, null});
+                    } else {
+                        // Use the canonical ID in the existing entry
+                        m.put(ids[i], tmpinfo);
+                    }
+                }
+            } catch (MissingResourceException ex) {
+                //throw away the exception
+            }
+
+            synchronized (ZoneMeta.class) {
+                canonicalMap = m;
+                multiZoneTerritories = s;
+            }
+        }
+
+        return (String[])canonicalMap.get(id);
+    }
+
+    private static Map canonicalMap = null;
+    private static Set multiZoneTerritories = null;
+
+    /**
+     * Return the canonical id for this system tzid, which might be the id itself.
+     * If the given system tzid is not know, return null.
+     */
+    public static String getCanonicalSystemID(String tzid) {
+        String[] info = getCanonicalInfo(tzid);
+        if (info != null) {
+            return info[0];
+        }
+        return null;
+    }
+
+    /**
+     * Return the canonical country code for this tzid.  If we have none, or if the time zone
+     * is not associated with a country, return null.
+     */
+    public static String getCanonicalCountry(String tzid) {
+        String[] info = getCanonicalInfo(tzid);
+        if (info != null) {
+            return info[1];
+        }
+        return null;
+    }
+
+    /**
+     * Return the country code if this is a 'single' time zone that can fallback to just
+     * the country, otherwise return null.  (Note, one must also check the locale data
+     * to see that there is a localization for the country in order to implement
+     * tr#35 appendix J step 5.)
+     */
+    public static String getSingleCountry(String tzid) {
+        String[] info = getCanonicalInfo(tzid);
+        if (info != null && info[1] != null && !multiZoneTerritories.contains(info[1])) {
+            return info[1];
+        }
+        return null;
+    }
+
+    /**
+     * Returns a time zone location(region) format string defined by UTR#35.
+     * e.g. "Italy Time", "United States (Los Angeles) Time"
+     */
+    public static String getLocationFormat(String tzid, String city, ULocale locale) {
+        String[] info = getCanonicalInfo(tzid);
+        if (info == null) {
+            return null; // error
+        }
+
+        String country_code = info[1];
+        if (country_code == null) {
+            return null; // error!   
+        }
+
+        String country = null;
+        if (country_code != null) {
+            try {
+                ICUResourceBundle rb = 
+                    (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+//
+// TODO: There is a design bug in UResourceBundle and getLoadingStatus() does not work well.
+//
+//                if (rb.getLoadingStatus() != ICUResourceBundle.FROM_ROOT && rb.getLoadingStatus() != ICUResourceBundle.FROM_DEFAULT) {
+//                    country = ULocale.getDisplayCountry("xx_" + country_code, locale);
+//                }
+// START WORKAROUND
+                ULocale rbloc = rb.getULocale();
+                if (!rbloc.equals(ULocale.ROOT) && rbloc.getLanguage().equals(locale.getLanguage())) {
+                    country = ULocale.getDisplayCountry("xx_" + country_code, locale);
+                }
+// END WORKAROUND
+            } catch (MissingResourceException e) {
+                // fall through
+            }
+            if (country == null || country.length() == 0) {
+                country = country_code;
+            }
+        }
+        
+        // This is not behavior specified in tr35, but behavior added by Mark.  
+        // TR35 says to display the country _only_ if there is a localization.
+        if (getSingleCountry(tzid) != null) { // single country
+            String regPat = getTZLocalizationInfo(locale, REGION_FORMAT);
+            if (regPat == null) {
+                regPat = DEF_REGION_FORMAT;
+            }
+            MessageFormat mf = new MessageFormat(regPat);
+            return mf.format(new Object[] { country });
+        }
+
+        if (city == null) {
+            city = tzid.substring(tzid.lastIndexOf('/')+1).replace('_',' ');
+        }
+
+        String flbPat = getTZLocalizationInfo(locale, FALLBACK_FORMAT);
+        if (flbPat == null) {
+            flbPat = DEF_FALLBACK_FORMAT;
+        }
+        MessageFormat mf = new MessageFormat(flbPat);
+
+        return mf.format(new Object[] { city, country });
+    }
+
+    private static final String DEF_REGION_FORMAT = "{0}";
+    private static final String DEF_FALLBACK_FORMAT = "{1} ({0})";
+
+    public static final String
+        HOUR = "hourFormat",
+        GMT = "gmtFormat",
+        REGION_FORMAT = "regionFormat",
+        FALLBACK_FORMAT = "fallbackFormat",
+        ZONE_STRINGS = "zoneStrings",
+        FORWARD_SLASH = "/";
+     
+    /**
+     * Get the index'd tz datum for this locale.  Index must be one of the 
+     * values PREFIX, HOUR, GMT, REGION_FORMAT, FALLBACK_FORMAT
+     */
+    public static String getTZLocalizationInfo(ULocale locale, String format) {
+        String result = null;
+        try {
+            ICUResourceBundle bundle = (ICUResourceBundle) ICUResourceBundle.getBundleInstance(locale);
+            result = bundle.getStringWithFallback(ZONE_STRINGS+FORWARD_SLASH+format);
+        } catch (MissingResourceException e) {
+            result = null;
+        }
+        return result;
+    }
+
+//    private static Set getValidIDs() {
+//        // Construct list of time zones that are valid, according
+//        // to the current underlying core JDK.  We have to do this
+//        // at runtime since we don't know what we're running on.
+//        Set valid = new TreeSet();
+//        valid.addAll(Arrays.asList(java.util.TimeZone.getAvailableIDs()));
+//        return valid;
+//    }
+
+    /**
+     * Empty string array.
+     */
+    private static final String[] EMPTY = new String[0];
+
+
+
+    /**
+     * Given an ID, open the appropriate resource for the given time zone.
+     * Dereference aliases if necessary.
+     * @param id zone id
+     * @return top-level resource bundle
+     */
+    public static UResourceBundle openOlsonResource(String id)
+    {
+        UResourceBundle res = null;
+        try {
+            ICUResourceBundle top = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            res = getZoneByName(top, id);
+            // Dereference if this is an alias.  Docs say result should be 1
+            // but it is 0 in 2.8 (?).
+             if (res.getSize() <= 1) {
+                int deref = res.getInt() + 0;
+                UResourceBundle ares = top.get(kZONES); // dereference Zones section
+                res = (ICUResourceBundle) ares.get(deref);
+            }
+        } catch (MissingResourceException e) {
+            res = null;
+        }
+        return res;
+    }
+
+    /**
+     * Fetch a specific zone by name.  Replaces the getByKey call. 
+     * @param top Top timezone resource
+     * @param id Time zone ID
+     * @return the zone's bundle if found, or undefined if error.  Reuses oldbundle.
+     */
+    private static UResourceBundle getZoneByName(UResourceBundle top, String id) throws MissingResourceException {
+        // load the Rules object
+        UResourceBundle tmp = top.get(kNAMES);
+        
+        // search for the string
+        int idx = findInStringArray(tmp, id);
+        
+        if((idx == -1)) {
+            // not found 
+            throw new MissingResourceException(kNAMES, ((ICUResourceBundle)tmp).getResPath(), id);
+            //ures_close(oldbundle);
+            //oldbundle = NULL;
+        } else {
+            tmp = top.get(kZONES); // get Zones object from top
+            tmp = tmp.get(idx); // get nth Zone object
+        }
+        return tmp;
+    }
+    private static int findInStringArray(UResourceBundle array, String id){
+        int start = 0;
+        int limit = array.getSize();
+        int mid;
+        String u = null;
+        int lastMid = Integer.MAX_VALUE;
+        if((limit < 1)) { 
+            return -1;
+        }
+        for (;;) {
+            mid = (int)((start + limit) / 2);
+            if (lastMid == mid) {   /* Have we moved? */
+                break;  /* We haven't moved, and it wasn't found. */
+            }
+            lastMid = mid;
+            u = array.getString(mid);
+            if(u==null){
+                break;
+            }
+            int r = id.compareTo(u);
+            if(r==0) {
+                return mid;
+            } else if(r<0) {
+                limit = mid;
+            } else {
+                start = mid;
+            }
+        }
+        return -1;
+    }
+    private static final String kREGIONS  = "Regions";
+    private static final String kZONES    = "Zones";
+    private static final String kNAMES    = "Names";
+    private static final String kGMT_ID   = "GMT";
+    private static final String kCUSTOM_TZ_PREFIX = "GMT";
+    private static ICUCache zoneCache = new SimpleCache();
+    /**
+     * The Olson data is stored the "zoneinfo" resource bundle.
+     * Sub-resources are organized into three ranges of data: Zones, final
+     * rules, and country tables.  There is also a meta-data resource
+     * which has 3 integers: The number of zones, rules, and countries,
+     * respectively.  The country count includes the non-country 'Default'.
+     */
+    static int OLSON_ZONE_START = -1; // starting index of zones
+    static int OLSON_ZONE_COUNT = 0;  // count of zones
+
+    /**
+     * Given a pointer to an open "zoneinfo" resource, load up the Olson
+     * meta-data. Return true if successful.
+     */
+    private static boolean getOlsonMeta(ICUResourceBundle top) {
+        if (OLSON_ZONE_START < 0 && top != null) {
+            try {
+                UResourceBundle res = top.get(kZONES);
+                OLSON_ZONE_COUNT = res.getSize();
+                OLSON_ZONE_START = 0;
+            } catch (MissingResourceException e) {
+                // throws away the exception
+            }
+        }
+        return (OLSON_ZONE_START >= 0);
+    }
+
+    /**
+     * Load up the Olson meta-data. Return true if successful.
+     */
+    private static boolean getOlsonMeta() {
+        if (OLSON_ZONE_START < 0) {
+            try {
+                ICUResourceBundle top = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                getOlsonMeta(top);
+            } catch (MissingResourceException e) {
+                // throws away the exception
+            }
+        }
+        return (OLSON_ZONE_START >= 0);
+    }
+
+    /**
+     * Lookup the given name in our system zone table.  If found,
+     * instantiate a new zone of that name and return it.  If not
+     * found, return 0.
+     */
+    public static TimeZone getSystemTimeZone(String id) {
+        TimeZone z = (TimeZone)zoneCache.get(id);
+        if (z == null) {
+            try{
+                UResourceBundle top = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "zoneinfo", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                UResourceBundle res = openOlsonResource(id);
+                z = new OlsonTimeZone(top, res);
+                z.setID(id);
+                zoneCache.put(id, z);
+            }catch(Exception ex){
+                return null;
+            }
+        }
+        return (TimeZone)z.clone();
+    }
+    
+    public static TimeZone getGMT(){
+        TimeZone z = new SimpleTimeZone(0, kGMT_ID);
+        z.setID(kGMT_ID);
+        return z;
+    }
+
+    // Maximum value of valid custom time zone hour/min
+    private static final int kMAX_CUSTOM_HOUR = 23;
+    private static final int kMAX_CUSTOM_MIN = 59;
+    private static final int kMAX_CUSTOM_SEC = 59;
+
+    /**
+     * Parse a custom time zone identifier and return a corresponding zone.
+     * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
+     * GMT[+-]hh.
+     * @return a newly created SimpleTimeZone with the given offset and
+     * no Daylight Savings Time, or null if the id cannot be parsed.
+    */
+    public static TimeZone getCustomTimeZone(String id){
+        int[] fields = new int[4];
+        if (parseCustomID(id, fields)) {
+            String zid = formatCustomID(fields[1], fields[2], fields[3], fields[0] < 0);
+            int offset = fields[0] * ((fields[1] * 60 + fields[2]) * 60 + fields[3]) * 1000;
+            return new SimpleTimeZone(offset, zid);
+        }
+        return null;
+    }
+
+    /**
+     * Parse a custom time zone identifier and return the normalized
+     * custom time zone identifier for the given custom id string.
+     * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
+     * GMT[+-]hh.
+     * @return The normalized custom id string.
+    */
+    public static String getCustomID(String id) {
+        int[] fields = new int[4];
+        if (parseCustomID(id, fields)) {
+            return formatCustomID(fields[1], fields[2], fields[3], fields[0] < 0);
+        }
+        return null;
+    }
+
+    /*
+     * Parses the given custom time zone identifier
+     * @param id id A string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
+     * GMT[+-]hh.
+     * @param fields An array of int (length = 4) to receive the parsed
+     * offset time fields.  The sign is set to fields[0] (-1 or 1),
+     * hour is set to fields[1], minute is set to fields[2] and second is
+     * set to fields[3].
+     * @return Returns true when the given custom id is valid.
+     */
+    static boolean parseCustomID(String id, int[] fields) {
+        NumberFormat numberFormat = null;
+        String idUppercase = id.toUpperCase();
+
+        if (id != null && id.length() > kGMT_ID.length() &&
+            idUppercase.startsWith(kGMT_ID)) {
+            ParsePosition pos = new ParsePosition(kGMT_ID.length());
+            int sign = 1;
+            int hour = 0;
+            int min = 0;
+            int sec = 0;
+
+            if (id.charAt(pos.getIndex()) == 0x002D /*'-'*/) {
+                sign = -1;
+            } else if (id.charAt(pos.getIndex()) != 0x002B /*'+'*/) {
+                return false;
+            }
+            pos.setIndex(pos.getIndex() + 1);
+
+            numberFormat = NumberFormat.getInstance();
+            numberFormat.setParseIntegerOnly(true);
+
+            // Look for either hh:mm, hhmm, or hh
+            int start = pos.getIndex();
+
+            Number n = numberFormat.parse(id, pos);
+            if (pos.getIndex() == start) {
+                return false;
+            }
+            hour = n.intValue();
+
+            if (pos.getIndex() < id.length()){
+                if (pos.getIndex() - start > 2
+                        || id.charAt(pos.getIndex()) != 0x003A /*':'*/) {
+                    return false;
+                }
+                // hh:mm
+                pos.setIndex(pos.getIndex() + 1);
+                int oldPos = pos.getIndex();
+                n = numberFormat.parse(id, pos);
+                if ((pos.getIndex() - oldPos) != 2) {
+                    // must be 2 digits
+                    return false;
+                }
+                min = n.intValue();
+                if (pos.getIndex() < id.length()) {
+                    if (id.charAt(pos.getIndex()) != 0x003A /*':'*/) {
+                        return false;
+                    }
+                    // [:ss]
+                    pos.setIndex(pos.getIndex() + 1);
+                    oldPos = pos.getIndex();
+                    n = numberFormat.parse(id, pos);
+                    if (pos.getIndex() != id.length()
+                            || (pos.getIndex() - oldPos) != 2) {
+                        return false;
+                    }
+                    sec = n.intValue();
+                }
+            } else {
+                // Supported formats are below -
+                //
+                // HHmmss
+                // Hmmss
+                // HHmm
+                // Hmm
+                // HH
+                // H
+
+                int length = pos.getIndex() - start;
+                if (length <= 0 || 6 < length) {
+                    // invalid length
+                    return false;
+                }
+                switch (length) {
+                    case 1:
+                    case 2:
+                        // already set to hour
+                        break;
+                    case 3:
+                    case 4:
+                        min = hour % 100;
+                        hour /= 100;
+                        break;
+                    case 5:
+                    case 6:
+                        sec = hour % 100;
+                        min = (hour/100) % 100;
+                        hour /= 10000;
+                        break;
+                }
+            }
+
+            if (hour <= kMAX_CUSTOM_HOUR && min <= kMAX_CUSTOM_MIN && sec <= kMAX_CUSTOM_SEC) {
+                if (fields != null) {
+                    if (fields.length >= 1) {
+                        fields[0] = sign;
+                    }
+                    if (fields.length >= 2) {
+                        fields[1] = hour;
+                    }
+                    if (fields.length >= 3) {
+                        fields[2] = min;
+                    }
+                    if (fields.length >= 4) {
+                        fields[3] = sec;
+                    }
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Creates a custom zone for the offset
+     * @param offset GMT offset in milliseconds
+     * @return A custom TimeZone for the offset with normalized time zone id
+     */
+    public static TimeZone getCustomTimeZone(int offset) {
+        boolean negative = false;
+        int tmp = offset;
+        if (offset < 0) {
+            negative = true;
+            tmp = -offset;
+        }
+
+        int hour, min, sec, millis;
+
+        millis = tmp % 1000;
+        if (ASSERT) {
+            Assert.assrt("millis!=0", millis != 0);
+        }
+        tmp /= 1000;
+        sec = tmp % 60;
+        tmp /= 60;
+        min = tmp % 60;
+        hour = tmp / 60;
+
+        // Note: No millisecond part included in TZID for now
+        String zid = formatCustomID(hour, min, sec, negative);
+
+        return new SimpleTimeZone(offset, zid);
+    }
+
+    /*
+     * Returns the normalized custom TimeZone ID
+     */
+    static String formatCustomID(int hour, int min, int sec, boolean negative) {
+        // Create normalized time zone ID - GMT[+|-]hhmm[ss]
+        StringBuffer zid = new StringBuffer(kCUSTOM_TZ_PREFIX);
+        if (hour != 0 || min != 0) {
+            if(negative) {
+                zid.append('-');
+            } else {
+                zid.append('+');
+            }
+            // Always use US-ASCII digits
+            if (hour < 10) {
+                zid.append('0');
+            }
+            zid.append(hour);
+            if (min < 10) {
+                zid.append('0');
+            }
+            zid.append(min);
+
+            if (sec != 0) {
+                // Optional second field
+                if (sec < 10) {
+                    zid.append('0');
+                }
+                zid.append(sec);
+            }
+        }
+        return zid.toString();
+    }
+
+    private static SoftReference OLSON_TO_META_REF;
+    private static SoftReference META_TO_OLSON_REF;
+
+    static class OlsonToMetaMappingEntry {
+        String mzid;
+        long from;
+        long to;
+    }
+
+    private static class MetaToOlsonMappingEntry {
+        String id;
+        String territory;
+    }
+
+    static Map getOlsonToMetaMap() {
+        Map olsonToMeta = null;
+        synchronized(ZoneMeta.class) {
+            if (OLSON_TO_META_REF != null) {
+                olsonToMeta = (HashMap)OLSON_TO_META_REF.get();
+            }
+            if (olsonToMeta == null) {
+                olsonToMeta = createOlsonToMetaMap();
+                if (olsonToMeta == null) {
+                    // We need to return non-null Map to avoid disaster
+                    olsonToMeta = new HashMap();
+                }
+                OLSON_TO_META_REF = new SoftReference(olsonToMeta);
+            }
+        }
+        return olsonToMeta;
+    }
+
+    /*
+     * Create olson tzid to metazone mappings from metazoneInfo.res (3.8.1 or later)
+     */
+    private static Map createOlsonToMetaMap() {
+        // Create olson id to metazone mapping table
+        HashMap olsonToMeta = null;
+        UResourceBundle metazoneMappingsBundle = null;
+        try {
+            UResourceBundle bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "metazoneInfo");
+            metazoneMappingsBundle = bundle.get("metazoneMappings");
+        } catch (MissingResourceException mre) {
+            // do nothing
+        }
+        if (metazoneMappingsBundle != null) {
+            String[] tzids = getAvailableIDs();
+            for (int i = 0; i < tzids.length; i++) {
+                // Skip aliases
+                String canonicalID = TimeZone.getCanonicalID(tzids[i]);
+                if (canonicalID == null || !tzids[i].equals(canonicalID)) {
+                    continue;
+                }
+                String tzkey = tzids[i].replace('/', ':');
+                try {
+                    UResourceBundle zoneBundle = metazoneMappingsBundle.get(tzkey);
+                    LinkedList mzMappings = new LinkedList();
+                    for (int idx = 0; ; idx++) {
+                        try {
+                            UResourceBundle mz = zoneBundle.get("mz" + idx);
+                            String[] mzstr = mz.getStringArray();
+                            if (mzstr == null || mzstr.length != 3) {
+                                continue;
+                            }
+                            OlsonToMetaMappingEntry mzmap = new OlsonToMetaMappingEntry();
+                            mzmap.mzid = mzstr[0].intern();
+                            mzmap.from = parseDate(mzstr[1]);
+                            mzmap.to = parseDate(mzstr[2]);
+
+                            // Add this mapping to the list
+                            mzMappings.add(mzmap);
+                        } catch (MissingResourceException nomz) {
+                            // we're done
+                            break;
+                        } catch (IllegalArgumentException baddate) {
+                            // skip this
+                        }
+                    }
+                    if (mzMappings.size() != 0) {
+                        // Add to the olson-to-meta map
+                        if (olsonToMeta == null) {
+                            olsonToMeta = new HashMap();
+                        }
+                        olsonToMeta.put(tzids[i], mzMappings);
+                    }
+                } catch (MissingResourceException noum) {
+                    // Does not use metazone, just skip this.
+                }
+            }
+        }
+        return olsonToMeta;
+    }
+
+    /**
+     * Returns a CLDR metazone ID for the given Olson tzid and time.
+     */
+    public static String getMetazoneID(String olsonID, long date) {
+        String mzid = null;
+        Map olsonToMeta = getOlsonToMetaMap();
+        List mappings = (List)olsonToMeta.get(olsonID);
+        if (mappings == null) {
+            // The given ID might be an alias - try its canonical id
+            String canonicalID = getCanonicalSystemID(olsonID);
+            if (canonicalID != null && !canonicalID.equals(olsonID)) {
+                mappings = (List)olsonToMeta.get(canonicalID);
+            }
+        }
+        if (mappings != null) {
+            for (int i = 0; i < mappings.size(); i++) {
+                OlsonToMetaMappingEntry mzm = (OlsonToMetaMappingEntry)mappings.get(i);
+                if (date >= mzm.from && date < mzm.to) {
+                    mzid = mzm.mzid;
+                    break;
+                }
+            }
+        }
+        return mzid;
+    }
+
+    private static Map getMetaToOlsonMap() {
+        HashMap metaToOlson = null;
+        synchronized(ZoneMeta.class) {
+            if (META_TO_OLSON_REF != null) {
+                metaToOlson = (HashMap)META_TO_OLSON_REF.get();
+            }
+            if (metaToOlson == null) {
+                metaToOlson = new HashMap();
+                UResourceBundle metazonesBundle = null;
+                try {
+                    UResourceBundle supplementalBundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,
+                        "supplementalData");
+                    UResourceBundle  mapTimezonesBundle = supplementalBundle.get("mapTimezones");
+                    metazonesBundle = mapTimezonesBundle.get("metazones");
+                } catch (MissingResourceException mre) {
+                    // do nothing
+                }
+                if (metazonesBundle != null) {
+                    Enumeration mzenum = metazonesBundle.getKeys();
+                    while (mzenum.hasMoreElements()) {
+                        String mzkey = (String)mzenum.nextElement();
+                        if (!mzkey.startsWith("meta:")) {
+                            continue;
+                        }
+                        String tzid = null;
+                        try {
+                            tzid = metazonesBundle.getString(mzkey);
+                        } catch (MissingResourceException mre) {
+                            // It should not happen..
+                        }
+                        if (tzid != null) {
+                            int territoryIdx = mzkey.lastIndexOf('_');
+                            if (territoryIdx > 0) {
+                                String mzid = mzkey.substring(5 /* "meta:".length() */, territoryIdx);
+                                String territory = mzkey.substring(territoryIdx + 1);
+                                List mappings = (List)metaToOlson.get(mzid);
+                                if (mappings == null) {
+                                    mappings = new LinkedList();
+                                    metaToOlson.put(mzid, mappings);
+                                }
+                                MetaToOlsonMappingEntry olsonmap = new MetaToOlsonMappingEntry();
+                                olsonmap.id = tzid;
+                                olsonmap.territory = territory;
+                                mappings.add(olsonmap);
+                            }
+                        }
+                    }
+                }
+                META_TO_OLSON_REF = new SoftReference(metaToOlson);
+            }
+        }
+        return metaToOlson;
+    }
+
+    /**
+     * Returns an Olson ID for the ginve metazone and region
+     */
+    public static String getZoneIdByMetazone(String metazoneID, String region) {
+        String tzid = null;
+        Map metaToOlson = getMetaToOlsonMap();
+        List mappings = (List)metaToOlson.get(metazoneID);
+        if (mappings != null) {
+            for (int i = 0; i < mappings.size(); i++) {
+                MetaToOlsonMappingEntry olsonmap = (MetaToOlsonMappingEntry)mappings.get(i);
+                if (olsonmap.territory.equals(region)) {
+                    tzid = olsonmap.id;
+                    break;
+                } else if (olsonmap.territory.equals("001")) {
+                    tzid = olsonmap.id;
+                }
+            }
+        }
+        return tzid;
+    }
+
+//    /**
+//     * Returns an Olson ID for the given metazone and locale
+//     */
+//    public static String getZoneIdByMetazone(String metazoneID, ULocale loc) {
+//        String region = loc.getCountry();
+//        if (region.length() == 0) {
+//            // Get likely region
+//            ULocale tmp = ULocale.addLikelySubtag(loc);
+//            region = tmp.getCountry();
+//        }
+//        return getZoneIdByMetazone(metazoneID, region);
+//    }
+
+    /*
+     * Convert a date string used by metazone mappings to long.
+     * The format used by CLDR metazone mapping is "yyyy-MM-dd HH:mm".
+     * We do not want to use SimpleDateFormat to parse the metazone
+     * mapping range strings in createOlsonToMeta, because it might be
+     * called from SimpleDateFormat initialization code.
+     */
+     static long parseDate (String text) throws IllegalArgumentException {
+        int year = 0, month = 0, day = 0, hour = 0, min = 0;
+        int idx;
+        int n;
+
+        // "yyyy" (0 - 3)
+        for (idx = 0; idx <= 3; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                year = 10*year + n;
+            } else {
+                throw new IllegalArgumentException("Bad year");
+            }
+        }
+        // "MM" (5 - 6)
+        for (idx = 5; idx <= 6; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                month = 10*month + n;
+            } else {
+                throw new IllegalArgumentException("Bad month");
+            }
+        }
+        // "dd" (8 - 9)
+        for (idx = 8; idx <= 9; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                day = 10*day + n;
+            } else {
+                throw new IllegalArgumentException("Bad day");
+            }
+        }
+        // "HH" (11 - 12)
+        for (idx = 11; idx <= 12; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                hour = 10*hour + n;
+            } else {
+                throw new IllegalArgumentException("Bad hour");
+            }
+        }
+        // "mm" (14 - 15)
+        for (idx = 14; idx <= 15; idx++) {
+            n = text.charAt(idx) - '0';
+            if (n >= 0 && n < 10) {
+                min = 10*min + n;
+            } else {
+                throw new IllegalArgumentException("Bad minute");
+            }
+        }
+
+        long date = Grego.fieldsToDay(year, month - 1, day) * Grego.MILLIS_PER_DAY
+                    + hour * Grego.MILLIS_PER_HOUR + min * Grego.MILLIS_PER_MINUTE;
+        return date;
+     }
+}
diff --git a/src/com/ibm/icu/impl/ZoneStringFormat.java b/src/com/ibm/icu/impl/ZoneStringFormat.java
new file mode 100644
index 0000000..55f5a24
--- /dev/null
+++ b/src/com/ibm/icu/impl/ZoneStringFormat.java
@@ -0,0 +1,1001 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * @author yoshito
+ *
+ */
+public class ZoneStringFormat {
+    /**
+     * Constructs a ZoneStringFormat by zone strings array.
+     * The internal structure of zoneStrings is compatible with
+     * the one used by getZoneStrings/setZoneStrings in DateFormatSymbols.
+     * 
+     * @param zoneStrings zone strings
+     */
+    public ZoneStringFormat(String[][] zoneStrings) {
+        tzidToStrings = new HashMap();
+        zoneStringsTrie = new TextTrieMap(true);
+        for (int i = 0; i < zoneStrings.length; i++) {
+            String tzid = zoneStrings[i][0];
+            String[] names = new String[ZSIDX_MAX];
+            for (int j = 1; j < zoneStrings[i].length; j++) {
+                if (zoneStrings[i][j] != null) {
+                    int typeIdx = getNameTypeIndex(j);
+                    if (typeIdx != -1) {
+                        names[typeIdx] = zoneStrings[i][j];
+
+                        // Put the name into the trie
+                        int type = getNameType(typeIdx);
+                        ZoneStringInfo zsinfo = new ZoneStringInfo(tzid, zoneStrings[i][j], type);
+                        zoneStringsTrie.put(zoneStrings[i][j], zsinfo);
+                    }
+                    
+                }
+            }
+            ZoneStrings zstrings = new ZoneStrings(names, true, null);
+            tzidToStrings.put(tzid, zstrings);
+        }
+    }
+
+    /**
+     * Gets an instance of ZoneStringFormat for the specified locale
+     * @param locale the locale
+     * @return An instance of ZoneStringFormat for the locale
+     */
+    public static ZoneStringFormat getInstance(ULocale locale) {
+        ZoneStringFormat tzf = (ZoneStringFormat)TZFORMAT_CACHE.get(locale);
+        if (tzf == null) {
+            tzf = new ZoneStringFormat(locale);
+            TZFORMAT_CACHE.put(locale, tzf);
+        }
+        return tzf;
+    }
+
+    public String[][] getZoneStrings() {
+        return getZoneStrings(System.currentTimeMillis());
+    }
+
+    // APIs used by SimpleDateFormat to get a zone string
+    public String getSpecificLongString(Calendar cal) {
+        if (cal.get(Calendar.DST_OFFSET) == 0) {
+            return getString(cal.getTimeZone().getID(), ZSIDX_LONG_STANDARD, cal.getTimeInMillis(), false /* not used */);
+        }
+        return getString(cal.getTimeZone().getID(), ZSIDX_LONG_DAYLIGHT, cal.getTimeInMillis(), false /* not used */);
+    }
+
+    public String getSpecificShortString(Calendar cal, boolean commonlyUsedOnly) {
+        if (cal.get(Calendar.DST_OFFSET) == 0) {
+            return getString(cal.getTimeZone().getID(), ZSIDX_SHORT_STANDARD, cal.getTimeInMillis(), commonlyUsedOnly);
+        }
+        return getString(cal.getTimeZone().getID(), ZSIDX_SHORT_DAYLIGHT, cal.getTimeInMillis(), commonlyUsedOnly);
+    }
+
+    public String getGenericLongString(Calendar cal) {
+        return getGenericString(cal, false /* long */, false /* not used */);
+    }
+
+    public String getGenericShortString(Calendar cal, boolean commonlyUsedOnly) {
+        return getGenericString(cal, true /* long */, commonlyUsedOnly);
+    }
+
+    public String getGenericLocationString(Calendar cal) {
+        return getString(cal.getTimeZone().getID(), ZSIDX_LOCATION, cal.getTimeInMillis(), false /* not used */);
+    }
+
+    // APIs used by SimpleDateFormat to lookup a zone string
+    public static class ZoneStringInfo {
+        private String id;
+        private String str;
+        private int type;
+
+        private ZoneStringInfo(String id, String str, int type) {
+            this.id = id;
+            this.str = str;
+            this.type = type;
+        }
+
+        public String getID() {
+            return id;
+        }
+
+        public String getString() {
+            return str;
+        }
+
+        public boolean isStandard() {
+            if ((type & STANDARD_LONG) != 0 || (type & STANDARD_SHORT) != 0) {
+                return true;
+            }
+            return false;
+        }
+
+        public boolean isDaylight() {
+            if ((type & DAYLIGHT_LONG) != 0 || (type & DAYLIGHT_SHORT) != 0) {
+                return true;
+            }
+            return false;
+        }
+
+        public boolean isGeneric() {
+            return !isStandard() && !isDaylight();
+        }
+
+        private int getType() {
+            return type;
+        }
+    }
+
+    public ZoneStringInfo findSpecificLong(String text, int start) {
+        return find(text, start, STANDARD_LONG | DAYLIGHT_LONG);
+    }
+    
+    public ZoneStringInfo findSpecificShort(String text, int start) {
+        return find(text, start, STANDARD_SHORT | DAYLIGHT_SHORT);
+    }
+
+    public ZoneStringInfo findGenericLong(String text, int start) {
+        return find(text, start, GENERIC_LONG | STANDARD_LONG | LOCATION);
+    }
+    
+    public ZoneStringInfo findGenericShort(String text, int start) {
+        return find(text, start, GENERIC_SHORT | STANDARD_SHORT | LOCATION);
+    }
+
+    public ZoneStringInfo findGenericLocation(String text, int start) {
+        return find(text, start, LOCATION);
+    }
+
+    // Following APIs are not used by SimpleDateFormat, but public for testing purpose
+    public String getLongStandard(String tzid, long date) {
+        return getString(tzid, ZSIDX_LONG_STANDARD, date, false /* not used */);
+    }
+
+    public String getLongDaylight(String tzid, long date) {
+        return getString(tzid, ZSIDX_LONG_DAYLIGHT, date, false /* not used */);
+    }
+
+    public String getLongGenericNonLocation(String tzid, long date) {
+        return getString(tzid, ZSIDX_LONG_GENERIC, date, false /* not used */);
+    }
+
+    public String getLongGenericPartialLocation(String tzid, long date) {
+        return getGenericPartialLocationString(tzid, false, date, false /* not used */);
+    }
+
+    public String getShortStandard(String tzid, long date, boolean commonlyUsedOnly) {
+        return getString(tzid, ZSIDX_SHORT_STANDARD, date, commonlyUsedOnly);
+    }
+
+    public String getShortDaylight(String tzid, long date, boolean commonlyUsedOnly) {
+        return getString(tzid, ZSIDX_SHORT_DAYLIGHT, date, commonlyUsedOnly);
+    }
+
+    public String getShortGenericNonLocation(String tzid, long date, boolean commonlyUsedOnly) {
+        return getString(tzid, ZSIDX_SHORT_GENERIC, date, commonlyUsedOnly);
+    }
+
+    public String getShortGenericPartialLocation(String tzid, long date, boolean commonlyUsedOnly) {
+        return getGenericPartialLocationString(tzid, true, date, commonlyUsedOnly);
+    }
+
+    public String getGenericLocation(String tzid) {
+        return getString(tzid, ZSIDX_LOCATION, 0L /* not used */, false /* not used */);
+    }
+    
+    /**
+     * Constructs a ZoneStringFormat by locale.  Because an instance of ZoneStringFormat
+     * is read-only, only one instance for a locale is sufficient.  Thus, this
+     * constructor is protected and only called from getInstance(ULocale) to
+     * create one for a locale.
+     * @param locale The locale
+     */
+    protected ZoneStringFormat(ULocale locale) {
+        this.locale = locale;
+        tzidToStrings = new HashMap();
+        mzidToStrings = new HashMap();
+        zoneStringsTrie = new TextTrieMap(true);
+
+        ICUResourceBundle zoneStringsBundle = null;
+        try {
+            ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+            zoneStringsBundle = bundle.getWithFallback("zoneStrings");
+        } catch (MissingResourceException e) {
+            // If no locale bundles are available, zoneStringsBundle will be null.
+            // We still want to go through the rest of zone strings initialization,
+            // because generic location format is generated from tzid for the case.
+            // The rest of code should work even zoneStrings is null.
+        }
+
+        String[] zoneIDs = TimeZone.getAvailableIDs();
+        MessageFormat fallbackFmt = getFallbackFormat(locale);
+        MessageFormat regionFmt = getRegionFormat(locale);
+
+        String[] zstrarray = new String[ZSIDX_MAX];
+        String[] mzstrarray = new String[ZSIDX_MAX];
+        String[][] mzPartialLoc = new String[10][4]; // maximum 10 metazones per zone
+
+        for (int i = 0; i < zoneIDs.length; i++) {
+            // Skip aliases
+            String tzid = ZoneMeta.getCanonicalSystemID(zoneIDs[i]);
+            if (tzid == null || !zoneIDs[i].equals(tzid)) {
+                continue;
+            }
+
+            String zoneKey = tzid.replace('/', ':');
+            zstrarray[ZSIDX_LONG_STANDARD] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_LONG_STANDARD);
+            zstrarray[ZSIDX_SHORT_STANDARD] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_SHORT_STANDARD);
+            zstrarray[ZSIDX_LONG_DAYLIGHT] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_LONG_DAYLIGHT);
+            zstrarray[ZSIDX_SHORT_DAYLIGHT] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_SHORT_DAYLIGHT);
+            zstrarray[ZSIDX_LONG_GENERIC] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_LONG_GENERIC);
+            zstrarray[ZSIDX_SHORT_GENERIC] = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_SHORT_GENERIC);
+
+            // Compose location format string
+            String countryCode = ZoneMeta.getCanonicalCountry(tzid);
+            String country = null;
+            String city = null;
+            if (countryCode != null) {
+                city = getZoneStringFromBundle(zoneStringsBundle, zoneKey, RESKEY_EXEMPLAR_CITY);
+                if (city == null) {
+                    city = tzid.substring(tzid.lastIndexOf('/') + 1).replace('_', ' ');
+                }
+                country = getLocalizedCountry(countryCode, locale);
+                if (ZoneMeta.getSingleCountry(tzid) != null) {
+                    // If the zone is only one zone in the country, do not add city
+                    zstrarray[ZSIDX_LOCATION] = regionFmt.format(new Object[] {country});
+                } else {
+                    zstrarray[ZSIDX_LOCATION] = fallbackFmt.format(new Object[] {city, country});
+                }
+            } else {
+                if (tzid.startsWith("Etc/")) {
+                    // "Etc/xxx" is not associated with a specific location, so localized
+                    // GMT format is always used as generic location format.
+                    zstrarray[ZSIDX_LOCATION] = null;
+                } else {
+                    // When a new time zone ID, which is actually associated with a specific
+                    // location, is added in tzdata, but the current CLDR data does not have
+                    // the information yet, ICU creates a generic location string based on 
+                    // the ID.  This implementation supports canonical time zone round trip
+                    // with format pattern "VVVV".  See #6602 for the details.
+                    String location = tzid;
+                    int slashIdx = location.lastIndexOf('/');
+                    if (slashIdx == -1) {
+                        // A time zone ID without slash in the tz database is not
+                        // associated with a specific location.  For instances,
+                        // MET, CET, EET and WET fall into this catetory.
+                        zstrarray[ZSIDX_LOCATION] = null;
+                    } else {
+                        location = tzid.substring(slashIdx + 1);
+                        zstrarray[ZSIDX_LOCATION] = regionFmt.format(new Object[] {location});
+                    }
+                }
+            }
+
+            boolean commonlyUsed = isCommonlyUsed(zoneStringsBundle, zoneKey);
+            
+            // Resolve metazones used by this zone
+            int mzPartialLocIdx = 0;
+            Map olsonToMeta = ZoneMeta.getOlsonToMetaMap();
+            List metazoneMappings = (List)olsonToMeta.get(tzid);
+            if (metazoneMappings != null) {
+                Iterator it = metazoneMappings.iterator();
+                while (it.hasNext()) {
+                    ZoneMeta.OlsonToMetaMappingEntry mzmap = (ZoneMeta.OlsonToMetaMappingEntry)it.next();
+                    ZoneStrings mzStrings = (ZoneStrings)mzidToStrings.get(mzmap.mzid);
+                    if (mzStrings == null) {
+                        // If the metazone strings are not yet processed, do it now.
+                        String mzkey = "meta:" + mzmap.mzid;
+                        boolean mzCommonlyUsed = isCommonlyUsed(zoneStringsBundle, mzkey);
+                        mzstrarray[ZSIDX_LONG_STANDARD] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_LONG_STANDARD);
+                        mzstrarray[ZSIDX_SHORT_STANDARD] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_SHORT_STANDARD);
+                        mzstrarray[ZSIDX_LONG_DAYLIGHT] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_LONG_DAYLIGHT);
+                        mzstrarray[ZSIDX_SHORT_DAYLIGHT] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_SHORT_DAYLIGHT);
+                        mzstrarray[ZSIDX_LONG_GENERIC] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_LONG_GENERIC);
+                        mzstrarray[ZSIDX_SHORT_GENERIC] = getZoneStringFromBundle(zoneStringsBundle, mzkey, RESKEY_SHORT_GENERIC);
+                        mzstrarray[ZSIDX_LOCATION] = null;
+                        mzStrings = new ZoneStrings(mzstrarray, mzCommonlyUsed, null);
+                        mzidToStrings.put(mzmap.mzid, mzStrings);
+
+                        // Add metazone strings to the zone string trie
+                        String preferredIdForLocale = ZoneMeta.getZoneIdByMetazone(mzmap.mzid, getRegion());
+                        for (int j = 0; j < mzstrarray.length; j++) {
+                            if (mzstrarray[j] != null) {
+                                int type = getNameType(j);
+                                ZoneStringInfo zsinfo = new ZoneStringInfo(preferredIdForLocale, mzstrarray[j], type);
+                                zoneStringsTrie.put(mzstrarray[j], zsinfo);
+                            }
+                        }
+                    }
+                    // Compose generic partial location format
+                    String lg = mzStrings.getString(ZSIDX_LONG_GENERIC);
+                    String sg = mzStrings.getString(ZSIDX_SHORT_GENERIC);
+                    if (lg != null || sg != null) {
+                        boolean addMzPartialLocationNames = true;
+                        for (int j = 0; j < mzPartialLocIdx; j++) {
+                            if (mzPartialLoc[j][0].equals(mzmap.mzid)) {
+                                // already added
+                                addMzPartialLocationNames = false;
+                                break;
+                            }
+                        }
+                        if (addMzPartialLocationNames) {
+                            String locationPart = null;
+                            // Check if the zone is the preferred zone for the territory associated with the zone
+                            String preferredID = ZoneMeta.getZoneIdByMetazone(mzmap.mzid, countryCode);
+                            if (tzid.equals(preferredID)) {
+                                // Use country for the location
+                                locationPart = country;
+                            } else {
+                                // Use city for the location
+                                locationPart = city;
+                            }
+                            mzPartialLoc[mzPartialLocIdx][0] = mzmap.mzid;
+                            mzPartialLoc[mzPartialLocIdx][1] = null;
+                            mzPartialLoc[mzPartialLocIdx][2] = null;
+                            mzPartialLoc[mzPartialLocIdx][3] = null;
+                            if (locationPart != null) {
+                                if (lg != null) {
+                                    mzPartialLoc[mzPartialLocIdx][1] = fallbackFmt.format(new Object[] {locationPart, lg});
+                                }
+                                if (sg != null) {
+                                    mzPartialLoc[mzPartialLocIdx][2] = fallbackFmt.format(new Object[] {locationPart, sg});
+                                    boolean shortMzCommonlyUsed = mzStrings.isShortFormatCommonlyUsed();
+                                    if (shortMzCommonlyUsed) {
+                                        mzPartialLoc[mzPartialLocIdx][3] = "1";
+                                    }
+                                }
+                            }
+                            mzPartialLocIdx++;
+                        }
+                    }
+                }
+            }
+            String[][] genericPartialLocationNames = null;
+            if (mzPartialLocIdx != 0) {
+                // metazone generic partial location names are collected
+                genericPartialLocationNames = new String[mzPartialLocIdx][];
+                for (int mzi = 0; mzi < mzPartialLocIdx; mzi++) {
+                    genericPartialLocationNames[mzi] = (String[])mzPartialLoc[mzi].clone();
+                }
+            }
+            // Finally, create ZoneStrings instance and put it into the tzidToStinrgs map
+            ZoneStrings zstrings = new ZoneStrings(zstrarray, commonlyUsed, genericPartialLocationNames);
+            tzidToStrings.put(tzid, zstrings);
+
+            // Also add all available names to the zone string trie
+            if (zstrarray != null) {
+                for (int j = 0; j < zstrarray.length; j++) {
+                    if (zstrarray[j] != null) {
+                        int type = getNameType(j);
+                        ZoneStringInfo zsinfo = new ZoneStringInfo(tzid, zstrarray[j], type);
+                        zoneStringsTrie.put(zstrarray[j], zsinfo);
+                    }
+                }
+            }
+            if (genericPartialLocationNames != null) {
+                for (int j = 0; j < genericPartialLocationNames.length; j++) {
+                    ZoneStringInfo zsinfo;
+                    if (genericPartialLocationNames[j][1] != null) {
+                        zsinfo = new ZoneStringInfo(tzid, genericPartialLocationNames[j][1], GENERIC_LONG);
+                        zoneStringsTrie.put(genericPartialLocationNames[j][1], zsinfo);
+                    }
+                    if (genericPartialLocationNames[j][2] != null) {
+                        zsinfo = new ZoneStringInfo(tzid, genericPartialLocationNames[j][1], GENERIC_SHORT);
+                        zoneStringsTrie.put(genericPartialLocationNames[j][2], zsinfo);
+                    }
+                }
+            }
+        }
+    }
+
+    // Name types, these bit flag are used for zone string lookup
+    private static final int LOCATION = 0x0001;
+    private static final int GENERIC_LONG = 0x0002;
+    private static final int GENERIC_SHORT = 0x0004;
+    private static final int STANDARD_LONG = 0x0008;
+    private static final int STANDARD_SHORT = 0x0010;
+    private static final int DAYLIGHT_LONG = 0x0020;
+    private static final int DAYLIGHT_SHORT = 0x0040;
+    
+    // Name type index, these constants are used for index in ZoneStrings.strings
+    private static final int ZSIDX_LOCATION = 0;
+    private static final int ZSIDX_LONG_STANDARD = 1;
+    private static final int ZSIDX_SHORT_STANDARD = 2;
+    private static final int ZSIDX_LONG_DAYLIGHT = 3;
+    private static final int ZSIDX_SHORT_DAYLIGHT = 4;
+    private static final int ZSIDX_LONG_GENERIC = 5;
+    private static final int ZSIDX_SHORT_GENERIC = 6;
+
+    private static final int ZSIDX_MAX = ZSIDX_SHORT_GENERIC + 1;
+
+    // ZoneStringFormat cache
+    private static ICUCache TZFORMAT_CACHE = new SimpleCache();
+
+    /*
+     * The translation type of the translated zone strings
+     */
+    private static final String
+         RESKEY_SHORT_GENERIC  = "sg",
+         RESKEY_SHORT_STANDARD = "ss",
+         RESKEY_SHORT_DAYLIGHT = "sd",
+         RESKEY_LONG_GENERIC   = "lg",
+         RESKEY_LONG_STANDARD  = "ls",
+         RESKEY_LONG_DAYLIGHT  = "ld",
+         RESKEY_EXEMPLAR_CITY  = "ec",
+         RESKEY_COMMONLY_USED  = "cu";
+
+    // Window size used for DST check for a zone in a metazone
+    private static final long DST_CHECK_RANGE = 184L*(24*60*60*1000);
+
+    // Map from zone id to ZoneStrings
+    private Map tzidToStrings;
+
+    // Map from metazone id to ZoneStrings
+    private Map mzidToStrings;
+
+    // Zone string dictionary, used for look up
+    private TextTrieMap zoneStringsTrie;
+
+    // Locale used for initializing zone strings
+    private ULocale locale;
+
+    // Region used for resolving a zone in a metazone, initialized by locale
+    private transient String region;
+    
+    /*
+     * Private method to get a zone string except generic partial location types.
+     */
+    private String getString(String tzid, int typeIdx, long date, boolean commonlyUsedOnly) {
+        String result = null;
+        ZoneStrings zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+        if (zstrings == null) {
+            // ICU's own array does not have entries for aliases
+            String canonicalID = ZoneMeta.getCanonicalSystemID(tzid);
+            if (canonicalID != null && !canonicalID.equals(tzid)) {
+                // Canonicalize tzid here.  The rest of operations
+                // require tzid to be canonicalized.
+                tzid = canonicalID;
+                zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+            }
+        }
+        if (zstrings != null) {
+            switch (typeIdx) {
+            case ZSIDX_LONG_STANDARD:
+            case ZSIDX_LONG_DAYLIGHT:
+            case ZSIDX_LONG_GENERIC:
+            case ZSIDX_LOCATION:
+                result = zstrings.getString(typeIdx);
+                break;
+            case ZSIDX_SHORT_STANDARD:
+            case ZSIDX_SHORT_DAYLIGHT:
+            case ZSIDX_SHORT_GENERIC:
+                if (!commonlyUsedOnly || zstrings.isShortFormatCommonlyUsed()) {
+                    result = zstrings.getString(typeIdx);
+                }
+                break;
+            }
+        }
+        if (result == null && mzidToStrings != null && typeIdx != ZSIDX_LOCATION) {
+            // Try metazone
+            String mzid = ZoneMeta.getMetazoneID(tzid, date);
+            if (mzid != null) {
+                ZoneStrings mzstrings = (ZoneStrings)mzidToStrings.get(mzid);
+                if (mzstrings != null) {
+                    switch (typeIdx) {
+                    case ZSIDX_LONG_STANDARD:
+                    case ZSIDX_LONG_DAYLIGHT:
+                    case ZSIDX_LONG_GENERIC:
+                        result = mzstrings.getString(typeIdx);
+                        break;
+                    case ZSIDX_SHORT_STANDARD:
+                    case ZSIDX_SHORT_DAYLIGHT:
+                    case ZSIDX_SHORT_GENERIC:
+                        if (!commonlyUsedOnly || mzstrings.isShortFormatCommonlyUsed()) {
+                            result = mzstrings.getString(typeIdx);
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
+    /*
+     * Private method to get a generic string, with fallback logic involved,
+     * that is,
+     * 
+     * 1. If a generic non-location string is avaiable for the zone, return it.
+     * 2. If a generic non-location string is associated with a metazone and 
+     *    the zone never use daylight time around the given date, use the standard
+     *    string (if available).
+     *    
+     *    Note: In CLDR1.5.1, the same localization is used for generic and standard.
+     *    In this case, we do not use the standard string and do the rest.
+     *    
+     * 3. If a generic non-location string is associated with a metazone and
+     *    the offset at the given time is different from the preferred zone for the
+     *    current locale, then return the generic partial location string (if avaiable)
+     * 4. If a generic non-location string is not available, use generic location
+     *    string.
+     */
+    private String getGenericString(Calendar cal, boolean isShort, boolean commonlyUsedOnly) {
+        String result = null;
+        TimeZone tz = cal.getTimeZone();
+        String tzid = tz.getID();
+        ZoneStrings zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+        if (zstrings == null) {
+            // ICU's own array does not have entries for aliases
+            String canonicalID = ZoneMeta.getCanonicalSystemID(tzid);
+            if (canonicalID != null && !canonicalID.equals(tzid)) {
+                // Canonicalize tzid here.  The rest of operations
+                // require tzid to be canonicalized.
+                tzid = canonicalID;
+                zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+            }
+        }
+        if (zstrings != null) {
+            if (isShort) {
+                if (!commonlyUsedOnly || zstrings.isShortFormatCommonlyUsed()) {
+                    result = zstrings.getString(ZSIDX_SHORT_GENERIC);
+                }
+            } else {
+                result = zstrings.getString(ZSIDX_LONG_GENERIC);
+            }
+        }
+        if (result == null && mzidToStrings != null) {
+            // try metazone
+            long time = cal.getTimeInMillis();
+            String mzid = ZoneMeta.getMetazoneID(tzid, time);
+            if (mzid != null) {
+                boolean useStandard = false;
+                if (cal.get(Calendar.DST_OFFSET) == 0) {
+                    useStandard = true;
+                    // Check if the zone actually uses daylight saving time around the time
+                    if (tz instanceof BasicTimeZone) {
+                        BasicTimeZone btz = (BasicTimeZone)tz;
+                        TimeZoneTransition before = btz.getPreviousTransition(time, true);
+                        if (before != null
+                                && (time - before.getTime() < DST_CHECK_RANGE)
+                                && before.getFrom().getDSTSavings() != 0) {
+                            useStandard = false;
+                        } else {
+                            TimeZoneTransition after = btz.getNextTransition(time, false);
+                            if (after != null
+                                    && (after.getTime() - time < DST_CHECK_RANGE)
+                                    && after.getTo().getDSTSavings() != 0) {
+                                useStandard = false;
+                            }
+                        }
+                    } else {
+                        // If not BasicTimeZone... only if the instance is not an ICU's implementation.
+                        // We may get a wrong answer in edge case, but it should practically work OK.
+                        int[] offsets = new int[2];
+                        tz.getOffset(time - DST_CHECK_RANGE, false, offsets);
+                        if (offsets[1] != 0) {
+                            useStandard = false;
+                        } else {
+                            tz.getOffset(time + DST_CHECK_RANGE, false, offsets);
+                            if (offsets[1] != 0){
+                                useStandard = false;
+                            }
+                        }
+                    }
+                }
+                if (useStandard) {
+                    result = getString(tzid, (isShort ? ZSIDX_SHORT_STANDARD : ZSIDX_LONG_STANDARD),
+                            time, commonlyUsedOnly);
+
+                    // Note:
+                    // In CLDR 1.5.1, a same localization is used for both generic and standard
+                    // for some metazones in some locales.  This is actually data bugs and should
+                    // be resolved in later versions of CLDR.  For now, we check if the standard
+                    // name is different from its generic name below.
+                    if (result != null) {
+                        String genericNonLocation = getString(tzid, (isShort ? ZSIDX_SHORT_GENERIC : ZSIDX_LONG_GENERIC),
+                                time, commonlyUsedOnly);
+                        if (genericNonLocation != null && result.equalsIgnoreCase(genericNonLocation)) {
+                            result = null;
+                        }
+                    }
+                }
+                if (result == null){
+                    ZoneStrings mzstrings = (ZoneStrings)mzidToStrings.get(mzid);
+                    if (mzstrings != null) {
+                        if (isShort) {
+                            if (!commonlyUsedOnly || mzstrings.isShortFormatCommonlyUsed()) {
+                                result = mzstrings.getString(ZSIDX_SHORT_GENERIC);
+                            }
+                        } else {
+                            result = mzstrings.getString(ZSIDX_LONG_GENERIC);
+                        }
+                    }
+                    if (result != null) {
+                        // Check if the offsets at the given time matches the preferred zone's offsets
+                        String preferredId = ZoneMeta.getZoneIdByMetazone(mzid, getRegion());
+                        if (!tzid.equals(preferredId)) {
+                            // Check if the offsets at the given time are identical with the preferred zone
+                            int raw = cal.get(Calendar.ZONE_OFFSET);
+                            int sav = cal.get(Calendar.DST_OFFSET);
+                            TimeZone preferredZone = TimeZone.getTimeZone(preferredId);
+                            int[] preferredOffsets = new int[2];
+                            // Check offset in preferred time zone with wall time.
+                            // With getOffset(time, false, preferredOffsets),
+                            // you may get incorrect results because of time overlap at DST->STD
+                            // transition.
+                            preferredZone.getOffset(time + raw + sav, true, preferredOffsets);
+                            if (raw != preferredOffsets[0] || sav != preferredOffsets[1]) {
+                                // Use generic partial location string as fallback
+                                result = zstrings.getGenericPartialLocationString(mzid, isShort, commonlyUsedOnly);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        if (result == null) {
+            // Use location format as the final fallback
+            result = getString(tzid, ZSIDX_LOCATION, cal.getTimeInMillis(), false /* not used */);
+        }
+        return result;
+    }
+    
+    /*
+     * Private method to get a generic partial location string
+     */
+    private String getGenericPartialLocationString(String tzid, boolean isShort, long date, boolean commonlyUsedOnly) {
+        String result = null;
+        String mzid = ZoneMeta.getMetazoneID(tzid, date);
+        if (mzid != null) {
+            ZoneStrings zstrings = (ZoneStrings)tzidToStrings.get(tzid);
+            if (zstrings != null) {
+                result = zstrings.getGenericPartialLocationString(mzid, isShort, commonlyUsedOnly);
+            }
+        }
+        return result;
+    }
+
+    /*
+     * Gets zoneStrings compatible with DateFormatSymbols for the
+     * specified date.  In CLDR 1.5, zone names can be changed
+     * time to time.  This method generates flat 2-dimensional
+     * String array including zone ids and its localized strings
+     * at the moment.  Thus, even you construct a new ZoneStringFormat
+     * by the zone strings array returned by this method, you will
+     * loose historic name changes.  Also, commonly used flag for
+     * short types is not reflected in the result.
+     */
+    private String[][] getZoneStrings(long date) {
+        Set tzids = tzidToStrings.keySet();
+        String[][] zoneStrings = new String[tzids.size()][8];
+        int idx = 0;
+        Iterator it = tzids.iterator();
+        while (it.hasNext()) {
+            String tzid = (String)it.next();
+            zoneStrings[idx][0] = tzid;
+            zoneStrings[idx][1] = getLongStandard(tzid, date);
+            zoneStrings[idx][2] = getShortStandard(tzid, date, false);
+            zoneStrings[idx][3] = getLongDaylight(tzid, date);
+            zoneStrings[idx][4] = getShortDaylight(tzid, date, false);
+            zoneStrings[idx][5] = getGenericLocation(tzid);
+            zoneStrings[idx][6] = getLongGenericNonLocation(tzid, date);
+            zoneStrings[idx][7] = getShortGenericNonLocation(tzid, date, false);
+            idx++;
+        }
+        return zoneStrings;
+    }
+    
+    /*
+     * ZoneStrings is an internal implementation class for
+     * holding localized name information for a zone/metazone
+     */
+    private static class ZoneStrings {
+        private String[] strings;
+        private String[][] genericPartialLocationStrings;
+        private boolean commonlyUsed;
+ 
+        private ZoneStrings(String[] zstrarray, boolean commonlyUsed, String[][] genericPartialLocationStrings) {
+            if (zstrarray != null) {
+                int lastIdx = -1;
+                for (int i = 0; i < zstrarray.length; i++) {
+                    if (zstrarray[i] != null) {
+                        lastIdx = i;
+                    }
+                }
+                if (lastIdx != -1) {
+                    strings = new String[lastIdx + 1];
+                    System.arraycopy(zstrarray, 0, strings, 0, lastIdx + 1);
+                }
+            }
+            this.commonlyUsed = commonlyUsed;
+            this.genericPartialLocationStrings = genericPartialLocationStrings;
+        }
+
+        private String getString(int typeIdx) {
+            if (strings != null && typeIdx >= 0 && typeIdx < strings.length) {
+                return strings[typeIdx];
+            }
+            return null;
+        }
+
+        private boolean isShortFormatCommonlyUsed() {
+            return commonlyUsed;
+        }
+
+        private String getGenericPartialLocationString(String mzid, boolean isShort, boolean commonlyUsedOnly) {
+            String result = null;
+            if (genericPartialLocationStrings != null) {
+                for (int i = 0; i < genericPartialLocationStrings.length; i++) {
+                    if (genericPartialLocationStrings[i][0].equals(mzid)) {
+                        if (isShort) {
+                            if (!commonlyUsedOnly || genericPartialLocationStrings[i][3] != null) {
+                                result = genericPartialLocationStrings[i][2];
+                            }
+                        } else {
+                            result = genericPartialLocationStrings[i][1];
+                        }
+                        break;
+                    }
+                }
+            }
+            return result;
+        }
+    }
+
+    /*
+     * Returns a localized zone string from bundle.
+     */
+    private static String getZoneStringFromBundle(ICUResourceBundle bundle, String key, String type) {
+        String zstring = null;
+        if (bundle != null) {
+            try {
+                zstring = bundle.getStringWithFallback(key + "/" + type);
+            } catch (MissingResourceException ex) {
+                // throw away the exception
+            }
+        }
+        return zstring;
+    }
+
+    /*
+     * Returns if the short strings of the zone/metazone is commonly used.
+     */
+    private static boolean isCommonlyUsed(ICUResourceBundle bundle, String key) {
+        boolean commonlyUsed = false;
+        if (bundle != null) {
+            try {
+                UResourceBundle cuRes = bundle.getWithFallback(key + "/" + RESKEY_COMMONLY_USED);
+                int cuValue = cuRes.getInt();
+                commonlyUsed = (cuValue != 0);
+            } catch (MissingResourceException ex) {
+                // throw away the exception
+            }
+        }
+        return commonlyUsed;
+    }
+
+    /*
+     * Returns a localized country string for the country code.  If no actual
+     * localized string is found, countryCode itself is returned.
+     */
+    private static String getLocalizedCountry(String countryCode, ULocale locale) {
+        String countryStr = null;
+        if (countryCode != null) {
+            ICUResourceBundle rb = 
+                (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+//
+// TODO: There is a design bug in UResourceBundle and getLoadingStatus() does not work well.
+//
+//            if (rb.getLoadingStatus() != ICUResourceBundle.FROM_ROOT && rb.getLoadingStatus() != ICUResourceBundle.FROM_DEFAULT) {
+//                country = ULocale.getDisplayCountry("xx_" + country_code, locale);
+//            }
+// START WORKAROUND
+            ULocale rbloc = rb.getULocale();
+            if (!rbloc.equals(ULocale.ROOT) && rbloc.getLanguage().equals(locale.getLanguage())) {
+                countryStr = ULocale.getDisplayCountry("xx_" + countryCode, locale);
+            }
+// END WORKAROUND
+            if (countryStr == null || countryStr.length() == 0) {
+                countryStr = countryCode;
+            }
+        }
+        return countryStr;
+    }
+
+    /*
+     * Gets an instance of MessageFormat used for formatting zone fallback string
+     */
+    private static MessageFormat getFallbackFormat(ULocale locale) {
+        String fallbackPattern = ZoneMeta.getTZLocalizationInfo(locale, ZoneMeta.FALLBACK_FORMAT);
+        if (fallbackPattern == null) {
+            fallbackPattern = "{1} ({0})";
+        }
+        return new MessageFormat(fallbackPattern, locale);
+    }
+
+    /*
+     * Gets an instance of MessageFormat used for formatting zone region string
+     */
+    private static MessageFormat getRegionFormat(ULocale locale) {
+        String regionPattern = ZoneMeta.getTZLocalizationInfo(locale, ZoneMeta.REGION_FORMAT);
+        if (regionPattern == null) {
+            regionPattern = "{0}";
+        }
+        return new MessageFormat(regionPattern, locale);
+    }
+
+    /*
+     * Index value mapping between DateFormatSymbols's zoneStrings and
+     * the string types defined in this class.
+     */
+    private static final int[] INDEXMAP = {
+        -1,             // 0 - zone id
+        ZSIDX_LONG_STANDARD,  // 1 - long standard
+        ZSIDX_SHORT_STANDARD, // 2 - short standard
+        ZSIDX_LONG_DAYLIGHT,  // 3 - long daylight
+        ZSIDX_SHORT_DAYLIGHT, // 4 - short daylight
+        ZSIDX_LOCATION,       // 5 - generic location
+        ZSIDX_LONG_GENERIC,   // 6 - long generic non-location
+        ZSIDX_SHORT_GENERIC   // 7 - short generic non-location
+    };
+
+    /*
+     * Convert from zone string array index for zoneStrings used by DateFormatSymbols#get/setZoneStrings
+     * to the type constants defined by this class, such as ZSIDX_LONG_STANDARD.
+     */
+    private static int getNameTypeIndex(int i) {
+        int idx = -1;
+        if (i >= 1 && i < INDEXMAP.length) {
+            idx = INDEXMAP[i];
+        }
+        return idx;
+    }
+
+    /*
+     * Mapping from name type index to name type
+     */
+    private static final int[] NAMETYPEMAP = {
+        LOCATION,       // ZSIDX_LOCATION
+        STANDARD_LONG,  // ZSIDX_LONG_STANDARD
+        STANDARD_SHORT, // ZSIDX_SHORT_STANDARD
+        DAYLIGHT_LONG,  // ZSIDX_LONG_DAYLIGHT
+        DAYLIGHT_SHORT, // ZSIDX_SHORT_DAYLIGHT
+        GENERIC_LONG,   // ZSIDX_LONG_GENERIC
+        GENERIC_SHORT,  // ZSIDX_SHORT_GENERIC
+    };
+
+    private static int getNameType(int typeIdx) {
+        int type = -1;
+        if (typeIdx >= 0 && typeIdx < NAMETYPEMAP.length) {
+            type = NAMETYPEMAP[typeIdx];
+        }
+        return type;
+    }
+
+    /*
+     * Returns region used for ZoneMeta#getZoneIdByMetazone.
+     */
+    private String getRegion() {
+        if (region == null) {
+            if (locale != null) {
+                region = locale.getCountry();
+                if (region.length() == 0) {
+                    ULocale tmp = ULocale.addLikelySubtag(locale);
+                    region = tmp.getCountry();
+                }
+            } else {
+                region = "";
+            }
+        }
+        return region;
+    }
+
+    /*
+     * Find a prefix matching time zone for the given zone string types.
+     * @param text The text contains a time zone string
+     * @param start The start index within the text
+     * @param types The bit mask representing a set of requested types
+     * @return If any zone string matched for the requested types, returns a
+     * ZoneStringInfo for the longest match.  If no matches are found for
+     * the requested types, returns a ZoneStringInfo for the longest match
+     * for any other types.  If nothing matches at all, returns null.
+     */
+    private ZoneStringInfo find(String text, int start, int types) {
+        ZoneStringInfo result = null;
+        ZoneStringSearchResultHandler handler = new ZoneStringSearchResultHandler();
+        zoneStringsTrie.find(text, start, handler);
+        List list = handler.getMatchedZoneStrings();
+        ZoneStringInfo fallback = null;
+        if (list != null && list.size() > 0) {
+            Iterator it = list.iterator();
+            while (it.hasNext()) {
+                ZoneStringInfo tmp = (ZoneStringInfo)it.next();
+                if ((types & tmp.getType()) != 0) {
+                    if (result == null || result.getString().length() < tmp.getString().length()) {
+                        result = tmp;
+                    } else if (result.getString().length() == tmp.getString().length()) {
+                        // Tie breaker - there are some examples that a
+                        // long standard name is identical with a location
+                        // name - for example, "Uruguay Time".  In this case,
+                        // we interpret it as generic, not specific.
+                        if (tmp.isGeneric() && !result.isGeneric()) {
+                            result = tmp;
+                        }
+                    }
+                } else if (result == null) {
+                    if (fallback == null || fallback.getString().length() < tmp.getString().length()) {
+                        fallback = tmp;
+                    } else if (fallback.getString().length() == tmp.getString().length()) {
+                        if (tmp.isGeneric() && !fallback.isGeneric()) {
+                            fallback = tmp;
+                        }
+                    }
+                }
+            }
+        }
+        if (result == null && fallback != null) {
+            result = fallback;
+        }
+        return result;
+    }
+
+    private static class ZoneStringSearchResultHandler implements TextTrieMap.ResultHandler {
+
+        private ArrayList resultList;
+
+        public boolean handlePrefixMatch(int matchLength, Iterator values) {
+            if (resultList == null) {
+                resultList = new ArrayList();
+            }
+            while (values.hasNext()) {
+                ZoneStringInfo zsitem = (ZoneStringInfo)values.next();
+                if (zsitem == null) {
+                    break;
+                }
+                int i = 0;
+                for (; i < resultList.size(); i++) {
+                    ZoneStringInfo tmp = (ZoneStringInfo)resultList.get(i);
+                    if (zsitem.getType() == tmp.getType()) {
+                        if (matchLength > tmp.getString().length()) {
+                            resultList.set(i, zsitem);
+                        }
+                        break;
+                    }
+                }
+                if (i == resultList.size()) {
+                    // not found in the current list
+                    resultList.add(zsitem);
+                }
+            }
+            return true;
+        }
+
+        List getMatchedZoneStrings() {
+            if (resultList == null || resultList.size() == 0) {
+                return null;
+            }
+            return resultList;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/BreakIteratorRules.java b/src/com/ibm/icu/impl/data/BreakIteratorRules.java
new file mode 100644
index 0000000..9cdb8d7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BreakIteratorRules.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default break-iterator rules.  
+ * This resource tells which break iterator class type is instantiated
+ *  for each of the standard (built-in) boundary types.
+ *
+ *  Locales (Thai) needing a dictionary based iterator override this.
+ */
+
+public class BreakIteratorRules extends ListResourceBundle {
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    static final Object[][] contents = {
+        // BreakIteratorClasses lists the class names to instantiate for each
+        // built-in type of BreakIterator
+        { "BreakIteratorClasses",
+            new String[] { "RuleBasedBreakIterator",     // character-break iterator class
+                           "RuleBasedBreakIterator",     // word-break iterator class
+                           "RuleBasedBreakIterator",     // line-break iterator class
+                           "RuleBasedBreakIterator",     // sentence-break iterator class
+                           "RuleBasedBreakIterator"}     // Title-Case break iterator class
+        }
+
+    };
+}
diff --git a/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java b/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java
new file mode 100644
index 0000000..a060f64
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java
@@ -0,0 +1,41 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+import com.ibm.icu.impl.ICUData;
+
+public class BreakIteratorRules_th extends ListResourceBundle {
+    private static final String DATA_NAME = "data/th.brk";
+
+    public Object[][] getContents() {
+        final boolean exists = ICUData.exists(DATA_NAME);
+
+        // if dictionary wasn't found, then this resource bundle doesn't have
+        // much to contribute...
+        if (!exists) {
+            return new Object[0][0];
+        }
+
+        return new Object[][] {
+            // names of classes to instantiate for the different kinds of break
+            // iterator.  Notice we're now using DictionaryBasedBreakIterator
+            // for word and line breaking.
+            { "BreakIteratorClasses",
+                new String[] { "RuleBasedBreakIterator",           // character-break iterator class
+                               "DictionaryBasedBreakIterator",     // word-break iterator class
+                               "DictionaryBasedBreakIterator",     // line-break iterator class
+                               "RuleBasedBreakIterator" }          // sentence-break iterator class
+            },
+
+
+            { "WordBreakDictionary", DATA_NAME }, // now a path to ICU4J-specific resource
+            { "LineBreakDictionary", DATA_NAME }
+        };
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle.java b/src/com/ibm/icu/impl/data/HolidayBundle.java
new file mode 100644
index 0000000..b6ae0e5
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle extends ListResourceBundle {
+
+    // Normally, each HolidayBundle uses the holiday's US English name
+    // as the string key for looking up the localized name.  This means
+    // that the key itself can be used if no name is found for the requested
+    // locale.
+    //
+    // For holidays where the key is _not_ the English name, e.g. in the
+    // case of conflicts, the English name must be given here.
+    //
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_da.java b/src/com/ibm/icu/impl/data/HolidayBundle_da.java
new file mode 100644
index 0000000..b4ce7f5
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_da.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_da extends ListResourceBundle
+{
+    static private final Object[][] fContents =
+    {
+        {   "Armistice Day",        "v\u00e5benhvile" },
+        {   "Ascension",            "himmelfart" },
+        {   "Boxing Day",           "anden juledag" },
+        {   "Christmas Eve",        "juleaften" },
+        {   "Easter",               "p\u00e5ske" },
+        {   "Epiphany",             "helligtrekongersdag" },
+        {   "Good Friday",          "langfredag" },
+        {   "Halloween",            "allehelgensaften" },
+        {   "Maundy Thursday",      "sk\u00e6rtorsdag" },
+        {   "Palm Sunday",          "palmes\u00f8ndag" },
+        {   "Pentecost",            "pinse" },
+        {   "Shrove Tuesday",       "hvidetirsdag" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java b/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
new file mode 100644
index 0000000..ed59e44
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_da_DK extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.APRIL,   30, -Calendar.FRIDAY, "General Prayer Day"),
+        new SimpleHoliday(Calendar.JUNE,    5,                    "Constitution Day"),
+        SimpleHoliday.CHRISTMAS_EVE,
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.MAUNDY_THURSDAY,
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        {   "holidays",             fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de.java b/src/com/ibm/icu/impl/data/HolidayBundle_de.java
new file mode 100644
index 0000000..35b10f2
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de.java
@@ -0,0 +1,67 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",              "Allerheiligen" },
+        {   "All Souls' Day",               "Allerseelen" },
+        {   "Armistice Day",                "Waffenstillstandstag" },
+        {   "Ascension",                    "Christi Himmelfahrt" },
+        {   "Ash Wednesday",                "Aschermittwoch" },
+        {   "Assumption",                   "Mari\u00e4 Himmelfahrt" },
+        {   "Boxing Day",                   "2. Weihnachtstag" },
+        {   "Carnival",                     "Karneval" },
+        {   "Christmas",                    "Weihnachtstag" },
+        {   "Civic Holiday",                "B\u00fcrgerfeiertag" },
+        {   "Constitution Day",             "Verfassungstag" },
+        {   "Corpus Christi",               "Fronleichnam" },
+        {   "Day of Prayer and Repentance", "Bu\u00df- und Bettag" },
+        {   "Easter Monday",                "Ostermonntag" },
+        {   "Easter Sunday",                "Ostersonntag" },
+        {   "Epiphany",                     "Heilige 3 K\u00f6nige" },
+        {   "Father's Day",                 "Vatertag" },
+        {   "Flag Day",                     "Jahrestag der Nationalflagge" },
+        {   "German Unity Day",             "Tag der deutschen Einheit" },
+        {   "Good Friday",                  "Karfreitag" },
+        {   "Halloween",                    "Abend vor Allerheiligen" },
+        {   "Immaculate Conception",        "Mari\u00e4 Empf\u00e4ngnis" },
+        {   "Independence Day",             "Unabh\u00e4ngigkeitstag" },
+        {   "Labor Day",                    "Tag der Arbeit" },
+        {   "Liberation Day",               "Befreiungstag" },
+        {   "Mardi Gras",                   "Faschingsdienstag" },
+        {   "Maundy Thursday",              "Gr\u00fcndonnerstag" },
+        {   "May Day",                      "Maifeiertag" },
+        {   "Memorial Day",                 "Tag des Gedenkens" },
+        {   "Mother's Day",                 "Muttertag" },
+        {   "National Holiday",             "Nationalfeiertag" },
+        {   "New Year's Day",               "Neujahr" },
+        {   "New Year's Eve",               "Silvesterabend" },
+        {   "Palm Sunday",                  "Palmsonntag" },
+        {   "Pentecost",                    "Pfingsten" },
+        {   "Presidents' Day",              "Pr\u00e4sidentstag" },
+        {   "Remembrance Day",              "Volkstrauertag" },
+        {   "Revolution Day",               "Jahrestag der Revolution" },
+        {   "Rose Monday",                  "Rosenmontag" },
+        {   "St. Stephen's Day",            "Stephanitag" },
+        {   "Shrove Tuesday",               "Faschingsdienstag" },
+        {   "Spring Holiday",               "Tag des Fr\u00fchlings" },
+        {   "Summer Bank Holiday",          "Bankfeiertag" },
+        {   "Thanksgiving",                 "Dankfest" },
+        {   "Unity Day",                    "Einheitstag" },
+        {   "Veterans' Day",                "Veteranstag" },
+        {   "Victory Day",                  "Tag der Befreiung" },
+        {   "Washington's Birthday",        "Washingtons Geburtstag" },
+        {   "Whit Monday",                  "Pfingstmontag" },
+        {   "Whit Sunday",                  "Pfingstsonntag" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java b/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
new file mode 100644
index 0000000..3e6f714
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de_AT extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+        EasterHoliday.CORPUS_CHRISTI,
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        SimpleHoliday.IMMACULATE_CONCEPTION,
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.ST_STEPHENS_DAY,
+
+        new SimpleHoliday(Calendar.MAY,        1,  0,               "National Holiday"),
+        new SimpleHoliday(Calendar.OCTOBER,   31, -Calendar.MONDAY, "National Holiday"),
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        // Only holidays names different from those used in Germany are listed here
+        {   "Christmas",        "Christtag" },
+        {   "New Year's Day",   "Neujahrstag" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java b/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
new file mode 100644
index 0000000..a39feee
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de_DE extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.JUNE,      15,  Calendar.WEDNESDAY,  "Memorial Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    3,  0,                   "Unity Day"),
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,  18,  0,                   "Day of Prayer and Repentance"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_el.java b/src/com/ibm/icu/impl/data/HolidayBundle_el.java
new file mode 100644
index 0000000..f9d76ba7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_el.java
@@ -0,0 +1,29 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_el extends ListResourceBundle {
+    static private final Object[][] fContents =
+    {
+        {   "Assumption",           "15 \u0391\u03cd\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5" },
+        {   "Boxing Day",           "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03ce\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd" },
+        {   "Christmas",            "\u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03cd\u03b3\u03b5\u03bd\u03bd\u03b1" },
+        {   "Clean Monday",         "\u039a\u03b1\u03b8\u03b1\u03c1\u03ae \u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1" },
+        {   "Easter Monday",        "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03bf\u03cd \u03a0\u03ac\u03c3\u03c7\u03b1" },
+        {   "Epiphany",             "\u0388\u03c0\u03b9\u03c6\u03ac\u03bd\u03b5\u03b9\u03b1" },
+        {   "Good Friday",          "\u039c\u03b5\u03b3\u03ac\u03bb\u03b7 \u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae" },
+        {   "May Day",              "\u03a0\u03c1\u03c9\u03c4\u03bf\u03bc\u03b1\u03b3\u03b9\u03ac" },
+        {   "New Year's Day",       "\u03a0\u03c1\u03c9\u03c4\u03bf\u03c7\u03c1\u03bf\u03bd\u03b9\u03ac" },
+        {   "Ochi Day",             "28 \u038c\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5" },
+        {   "Whit Monday",          "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03bf\u03cd \u03a0\u03b5\u03bd\u03c4\u03b7\u03ba\u03bf\u03c3\u03c4\u03ae" },
+
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java b/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
new file mode 100644
index 0000000..9e1fabb
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_el_GR extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+
+        new SimpleHoliday(Calendar.MARCH,     25,  0,    "Independence Day"),
+
+        SimpleHoliday.MAY_DAY,
+        SimpleHoliday.ASSUMPTION,
+
+        new SimpleHoliday(Calendar.OCTOBER,   28,  0,    "Ochi Day"),
+
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+
+        // Easter and related holidays in the Orthodox calendar
+        new EasterHoliday(-2,   true, "Good Friday"),
+        new EasterHoliday( 0,   true, "Easter Sunday"),
+        new EasterHoliday( 1,   true, "Easter Monday"),
+        new EasterHoliday(50,   true, "Whit Monday"),
+    };
+    static private final Object[][] fContents = {
+        {   "holidays",         fHolidays   },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en.java b/src/com/ibm/icu/impl/data/HolidayBundle_en.java
new file mode 100644
index 0000000..abc51e7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en extends ListResourceBundle {
+
+    // Normally, each HolidayBundle uses the holiday's US English name
+    // as the string key for looking up the localized name.  This means
+    // that the key itself can be used if no name is found for the requested
+    // locale.
+    //
+    // For holidays where the key is _not_ the English name, e.g. in the
+    // case of conflicts, the English name must be given here.
+    //
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
new file mode 100644
index 0000000..de9f803
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
@@ -0,0 +1,40 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_CA extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.MAY,       19, 0,                  "Victoria Day"),
+        new SimpleHoliday(Calendar.JULY,       1, 0,                  "Canada Day"),
+        new SimpleHoliday(Calendar.AUGUST,     1, Calendar.MONDAY,    "Civic Holiday"),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1, Calendar.MONDAY,    "Labor Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8, Calendar.MONDAY,    "Thanksgiving"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11, 0,                  "Remembrance Day"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        //hey {jf} - where are these from?
+//        EasterHoliday.GOOD_FRIDAY,
+//        EasterHoliday.EASTER_SUNDAY,
+//        EasterHoliday.EASTER_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        { "Labor Day",  "Labour Day" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
new file mode 100644
index 0000000..9a71420
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_GB extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.MAY,        31, -Calendar.MONDAY,    "Spring Holiday"),
+        new SimpleHoliday(Calendar.AUGUST,     31, -Calendar.MONDAY,    "Summer Bank Holiday"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        new SimpleHoliday(Calendar.DECEMBER,   31, -Calendar.MONDAY,    "Christmas Holiday"),
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        { "Labor Day",  "Labour Day" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java b/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
new file mode 100644
index 0000000..11d1531
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_US extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.JANUARY,   15, Calendar.MONDAY,      "Martin Luther King Day",   1986),
+
+        new SimpleHoliday(Calendar.FEBRUARY,  15, Calendar.MONDAY,      "Presidents' Day",          1976),
+        new SimpleHoliday(Calendar.FEBRUARY,  22,                       "Washington's Birthday",    1776, 1975),
+
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+
+        new SimpleHoliday(Calendar.MAY,        8, Calendar.SUNDAY,      "Mother's Day",             1914),
+
+        new SimpleHoliday(Calendar.MAY,       31, -Calendar.MONDAY,     "Memorial Day",             1971),
+        new SimpleHoliday(Calendar.MAY,       30,                       "Memorial Day",             1868, 1970),
+
+        new SimpleHoliday(Calendar.JUNE,      15, Calendar.SUNDAY,      "Father's Day",             1956),
+        new SimpleHoliday(Calendar.JULY,       4,                       "Independence Day",         1776),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1, Calendar.MONDAY,      "Labor Day",                1894),
+        new SimpleHoliday(Calendar.NOVEMBER,   2, Calendar.TUESDAY,     "Election Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8, Calendar.MONDAY,      "Columbus Day",             1971),
+        new SimpleHoliday(Calendar.OCTOBER ,  31,                       "Halloween"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11,                       "Veterans' Day",            1918),
+        new SimpleHoliday(Calendar.NOVEMBER,  22, Calendar.THURSDAY,    "Thanksgiving",             1863),
+
+        SimpleHoliday.CHRISTMAS,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_es.java b/src/com/ibm/icu/impl/data/HolidayBundle_es.java
new file mode 100644
index 0000000..1492564
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_es.java
@@ -0,0 +1,50 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_es extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",          "Todos los Santos" },
+        {   "Armistice Day",            "D\u00eda del Armisticio" },
+        {   "Ascension",                "Ascensi\u00f3n" },
+        {   "Benito Ju\u00e1rez Day",        "D\u00eda de la Benito Ju\u00e1rez" },
+        {   "Boxing Day",               "D\u00eda en que se dan Aguinaldos Navide\u00f1os" },
+        {   "Canada Day",               "D\u00eda del Canad\u00e1" },
+        {   "Christmas Eve",            "V\u00EDspera de Navidad" },
+        {   "Christmas",                "Navidad" },
+        {   "Constitution Day",         "D\u00eda de la Constituci\u00f3n" },
+        {   "Day of the Dead",          "D\u00eda de los Muertos" },
+        {   "Easter Sunday",            "Pascua" },
+        {   "Easter Monday",            "Pascua Lunes" },
+        {   "Epiphany",                 "Epifan\u00eda" },
+        {   "Father's Day",             "D\u00eda del Padre" },
+        {   "Flag Day",                 "D\u00eda de la Bandera" },
+        {   "Good Friday",              "Viernes Santo" },
+        {   "Halloween",                "v\u00edspera de Todos los Santos" },
+        {   "Independence Day",         "D\u00eda de la Independencia" },
+        {   "Labor Day",                "D\u00eda de Trabajadores" },
+        {   "Maundy Thursday",          "Jueves Santo" },
+        {   "May Day",                  "Primero de Mayo" },
+        {   "Memorial Day",             "D\u00eda de la Rememoraci\u00f3n" },
+        {   "Mother's Day",             "D\u00eda de la Madre" },
+        {   "New Year's Day",           "A\u00f1o Nuevo" },
+        {   "Palm Sunday",              "Domingo de Ramos" },
+        {   "Pentecost",                "Pentecost\u00e9s" },
+        {   "Presidents' Day",          "D\u00eda de Presidentes" },
+        {   "Revolution Day",           "D\u00eda de la Revoluci\u00f3n" },
+        {   "Shrove Tuesday",           "Martes de Carnaval" },
+        {   "Thanksgiving",             "D\u00eda de Acci\u00f3n de Gracias" },
+        {   "Veterans' Day",            "D\u00eda de Veteranos" },
+        {   "Victoria Day",             "D\u00eda de Victoria" },
+        {   "Whit Sunday",              "Pentecost\u00e9s" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java b/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
new file mode 100644
index 0000000..dc52fcf
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
@@ -0,0 +1,34 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_es_MX extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.FEBRUARY,   5,  0,    "Constitution Day"),
+        new SimpleHoliday(Calendar.MARCH,     21,  0,    "Benito Ju\u00E1rez Day"),
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.MAY,        5,  0,    "Cinco de Mayo"),
+        new SimpleHoliday(Calendar.JUNE,       1,  0,    "Navy Day"),
+        new SimpleHoliday(Calendar.SEPTEMBER, 16,  0,    "Independence Day"),
+        new SimpleHoliday(Calendar.OCTOBER,   12,  0,    "D\u00EDa de la Raza"),
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,   2,  0,    "Day of the Dead"),
+        new SimpleHoliday(Calendar.NOVEMBER,  20,  0,    "Revolution Day"),
+        new SimpleHoliday(Calendar.DECEMBER,  12,  0,    "Flag Day"),
+        SimpleHoliday.CHRISTMAS,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
new file mode 100644
index 0000000..4564778
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",      "Toussaint" },
+        {   "Armistice Day",        "Jour de l'Armistice" },
+        {   "Ascension",            "Ascension" },
+        {   "Bastille Day",         "F\u00EAte de la Bastille" },
+        {   "Benito Ju\u00E1rez Day",    "F\u00EAte de Benito Ju\u00E1rez" },
+        {   "Boxing Day",           "Lendemain de No\u00EBl" },
+        {   "Christmas Eve",        "Veille de No\u00EBl" },
+        {   "Christmas",            "No\u00EBl" },
+        {   "Easter Monday",        "P\u00E2ques lundi" },
+        {   "Easter Sunday",        "P\u00E2ques" },
+        {   "Epiphany",             "l'\u00C9piphanie" },
+        {   "Flag Day",             "F\u00EAte du Drapeau" },
+        {   "Good Friday",          "Vendredi Saint" },
+        {   "Halloween",            "Veille de la Toussaint" },
+        {   "All Saints' Day",      "Toussaint" },
+        {   "Independence Day",     "F\u00EAte Ind\u00E9pendance" },
+        {   "Maundy Thursday",      "Jeudi Saint" },
+        {   "Mother's Day",         "F\u00EAte des m\u00E8res" },
+        {   "National Day",         "F\u00EAte Nationale" },
+        {   "New Year's Day",       "Jour de l'an" },
+        {   "Palm Sunday",          "les Rameaux" },
+        {   "Pentecost",            "Pentec\u00F4te" },
+        {   "Shrove Tuesday",       "Mardi Gras" },
+        {   "St. Stephen's Day",    "Saint-\u00C9tienne" },
+        {   "Victoria Day",         "F\u00EAte de la Victoria" },
+        {   "Victory Day",          "F\u00EAte de la Victoire" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
new file mode 100644
index 0000000..fd34777
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr_CA extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        new SimpleHoliday(Calendar.JANUARY,    1,  0,                  "New Year's Day"),
+        new SimpleHoliday(Calendar.MAY,       19,  0,                  "Victoria Day"),
+        new SimpleHoliday(Calendar.JUNE,      24,  0,                  "National Day"),
+        new SimpleHoliday(Calendar.JULY,       1,  0,                  "Canada Day"),
+        new SimpleHoliday(Calendar.AUGUST,     1,  Calendar.MONDAY,    "Civic Holiday"),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1,  Calendar.MONDAY,    "Labour Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8,  Calendar.MONDAY,    "Thanksgiving"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11,  0,                  "Remembrance Day"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java b/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
new file mode 100644
index 0000000..244a9b6
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr_FR extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.MAY,        1,  0, "Labor Day"),
+        new SimpleHoliday(Calendar.MAY,        8,  0, "Victory Day"),
+        new SimpleHoliday(Calendar.JULY,      14,  0, "Bastille Day"),
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,  11,  0, "Armistice Day"),
+        SimpleHoliday.CHRISTMAS,
+
+        // Easter and related holidays
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_it.java b/src/com/ibm/icu/impl/data/HolidayBundle_it.java
new file mode 100644
index 0000000..c12bdc7
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_it.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_it extends ListResourceBundle {
+    static private final Object[][] fContents =
+    {
+        {   "All Saints' Day",      "Ognissanti" },
+        {   "Armistice Day",        "armistizio" },
+        {   "Ascension",            "ascensione" },
+        {   "Ash Wednesday",        "mercoled\u00ec delle ceneri" },
+        {   "Boxing Day",           "Santo Stefano" },
+        {   "Christmas",            "natale" },
+        {   "Easter Sunday",        "pasqua" },
+        {   "Epiphany",             "Epifania" },
+        {   "Good Friday",          "venerd\u00ec santo" },
+        {   "Halloween",            "vigilia di Ognissanti" },
+        {   "Maundy Thursday",      "gioved\u00ec santo" },
+        {   "New Year's Day",       "anno nuovo" },
+        {   "Palm Sunday",          "domenica delle palme" },
+        {   "Pentecost",            "di Pentecoste" },
+        {   "Shrove Tuesday",       "martedi grasso" },
+        {   "St. Stephen's Day",    "Santo Stefano" },
+        {   "Thanksgiving",         "Giorno del Ringraziamento" },
+
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java b/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
new file mode 100644
index 0000000..919648f
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_it_IT extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+        new SimpleHoliday(Calendar.APRIL,      1,  0,    "Liberation Day"),
+        new SimpleHoliday(Calendar.MAY,        1,  0,    "Labor Day"),
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        SimpleHoliday.IMMACULATE_CONCEPTION,
+        SimpleHoliday.CHRISTMAS,
+        new SimpleHoliday(Calendar.DECEMBER,  26,  0,    "St. Stephens Day"),
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",           fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_iw.java b/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
new file mode 100644
index 0000000..53ab7f6
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
@@ -0,0 +1,20 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_iw extends ListResourceBundle {
+
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java b/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
new file mode 100644
index 0000000..7d60b08
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_iw_IL extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        HebrewHoliday.ROSH_HASHANAH,
+        HebrewHoliday.YOM_KIPPUR,
+        HebrewHoliday.HANUKKAH,
+        HebrewHoliday.PURIM,
+        HebrewHoliday.PASSOVER,
+        HebrewHoliday.SHAVUOT,
+        HebrewHoliday.SELIHOT,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java b/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
new file mode 100644
index 0000000..e7ef8ff
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
@@ -0,0 +1,22 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import com.ibm.icu.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_ja_JP extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        new SimpleHoliday(Calendar.FEBRUARY,  11,  0,    "National Foundation Day"),
+    };
+    static private final Object[][] fContents = {
+        {   "holidays",         fHolidays   },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+}
diff --git a/src/com/ibm/icu/impl/data/ResourceReader.java b/src/com/ibm/icu/impl/data/ResourceReader.java
new file mode 100644
index 0000000..f0f63e9
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/ResourceReader.java
@@ -0,0 +1,242 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.data;
+
+import java.io.*;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A reader for text resource data in the current package or the package
+ * of a given class object.  The
+ * resource data is loaded through the class loader, so it will
+ * typically be a file in the same directory as the *.class files, or
+ * a file within a JAR file in the corresponding subdirectory.  The
+ * file must be a text file in one of the supported encodings; when the
+ * resource is opened by constructing a <code>ResourceReader</code>
+ * object the encoding is specified.
+ *
+ * @author Alan Liu
+ */
+public class ResourceReader {
+    private BufferedReader reader;
+    private String resourceName;
+    private String encoding; // null for default encoding
+    private Class root;
+    
+    /**
+     * The one-based line number. Has the special value -1 before the
+     * object is initialized. Has the special value 0 after initialization
+     * but before the first line is read.
+     */
+    private int lineNo;
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in this package, using the given encoding.
+     * @param resourceName the name of the text file located in this
+     * package's ".data" subpackage.
+     * @param encoding the encoding of the text file; if unsupported
+     * an exception is thrown
+     * @exception UnsupportedEncodingException if
+     * <code>encoding</code> is not supported by the JDK.
+     */
+    public ResourceReader(String resourceName, String encoding)
+        throws UnsupportedEncodingException {
+        this(ICUData.class, "data/" + resourceName, encoding);
+    }
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in this package, using the default encoding.
+     * @param resourceName the name of the text file located in this
+     * package's ".data" subpackage.
+     */
+    public ResourceReader(String resourceName) {
+        this(ICUData.class, "data/" + resourceName);
+    }
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in the given class's package, using the given encoding.
+     * @param resourceName the name of the text file located in the
+     * given class's package.
+     * @param encoding the encoding of the text file; if unsupported
+     * an exception is thrown
+     * @exception UnsupportedEncodingException if
+     * <code>encoding</code> is not supported by the JDK.
+     */
+    public ResourceReader(Class rootClass, String resourceName, String encoding)
+        throws UnsupportedEncodingException {
+        this.root = rootClass;
+        this.resourceName = resourceName;
+        this.encoding = encoding;
+        lineNo = -1;
+        _reset();
+    }
+
+         /**
+          * Construct a reader object for the input stream associated with
+          * the given resource name.
+          * @param is the input stream of the resource
+          * @param resourceName the name of the resource
+          */
+          public ResourceReader(InputStream is, String resourceName, String encoding) {
+                   this.root = null;
+         this.resourceName = resourceName;
+         this.encoding = encoding;
+
+         this.lineNo = -1;
+         try {
+             InputStreamReader isr = (encoding == null) 
+                 ? new InputStreamReader(is)
+                 : new InputStreamReader(is, encoding);
+
+             this.reader = new BufferedReader(isr);
+             this.lineNo= 0;
+         }
+         catch (UnsupportedEncodingException e) {
+         }
+     }
+
+          /**
+           * Construct a reader object for the input stream associated with
+           * the given resource name.
+           * @param is the input stream of the resource
+           * @param resourceName the name of the resource
+           */
+          public ResourceReader(InputStream is, String resourceName) {
+              this(is, resourceName, null);
+          }
+
+    /**
+     * Construct a reader object for the text file of the given name
+     * in the given class's package, using the default encoding.
+     * @param resourceName the name of the text file located in the
+     * given class's package.
+     */
+    public ResourceReader(Class rootClass, String resourceName) {
+        this.root = rootClass;
+        this.resourceName = resourceName;
+        this.encoding = null;
+        lineNo = -1;
+        try {
+            _reset();
+        } catch (UnsupportedEncodingException e) {}
+    }
+
+    /**
+     * Read and return the next line of the file or <code>null</code>
+     * if the end of the file has been reached.
+     */
+    public String readLine() throws IOException {
+        if (lineNo == 0) {
+            // Remove BOMs
+            ++lineNo;
+            String line = reader.readLine();
+            if (line.charAt(0) == '\uFFEF' ||
+                line.charAt(0) == '\uFEFF') {
+                line = line.substring(1);
+            }
+            return line;
+        }
+        ++lineNo;
+        return reader.readLine();
+    }
+
+    /**
+     * Read a line, ignoring blank lines and lines that start with
+     * '#'.
+     * @param trim if true then trim leading rule white space.
+     */
+    public String readLineSkippingComments(boolean trim) throws IOException {
+        for (;;) {
+            String line = readLine();
+            if (line == null) {
+                return line;
+            }
+            // Skip over white space
+            int pos = Utility.skipWhitespace(line, 0);
+            // Ignore blank lines and comment lines
+            if (pos == line.length() || line.charAt(pos) == '#') {
+                continue;
+            }
+            // Process line
+            if (trim) line = line.substring(pos);
+            return line;
+        }
+    }
+
+
+    /**
+     * Read a line, ignoring blank lines and lines that start with
+     * '#'. Do not trim leading rule white space.
+     */
+    public String readLineSkippingComments() throws IOException {
+        return readLineSkippingComments(false);
+    }
+
+    /**
+     * Return the one-based line number of the last line returned by
+     * readLine() or readLineSkippingComments(). Should only be called
+     * after a call to one of these methods; otherwise the return
+     * value is undefined.
+     */
+    public int getLineNumber() {
+        return lineNo;
+    }
+    
+    /**
+     * Return a string description of the position of the last line
+     * returned by readLine() or readLineSkippingComments().
+     */
+    public String describePosition() {
+        return resourceName + ':' + lineNo;
+    }
+    
+    /**
+     * Reset this reader so that the next call to
+     * <code>readLine()</code> returns the first line of the file
+     * again.  This is a somewhat expensive call, however, calling
+     * <code>reset()</code> after calling it the first time does
+     * nothing if <code>readLine()</code> has not been called in
+     * between.
+     */
+    public void reset() {
+        try {
+            _reset();
+        } catch (UnsupportedEncodingException e) {}
+        // We swallow this exception, if there is one.  If the encoding is
+        // invalid, the constructor will have thrown this exception already and
+        // the caller shouldn't use the object afterwards.
+    }
+
+    /**
+     * Reset to the start by reconstructing the stream and readers.
+     * We could also use mark() and reset() on the stream or reader,
+     * but that would cause them to keep the stream data around in
+     * memory.  We don't want that because some of the resource files
+     * are large, e.g., 400k.
+     */
+    private void _reset() throws UnsupportedEncodingException {
+        if (lineNo == 0) {
+            return;
+        }
+        InputStream is = ICUData.getStream(root, resourceName);
+        if (is == null) {
+            throw new IllegalArgumentException("Can't open " + resourceName);
+        }
+        
+        InputStreamReader isr =
+            (encoding == null) ? new InputStreamReader(is) :
+                                 new InputStreamReader(is, encoding);
+        reader = new BufferedReader(isr);
+        lineNo = 0;
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/TokenIterator.java b/src/com/ibm/icu/impl/data/TokenIterator.java
new file mode 100644
index 0000000..c99d280
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/TokenIterator.java
@@ -0,0 +1,159 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: March 16 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.impl.data;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * An iterator class that returns successive string tokens from some
+ * source.  String tokens are, in general, separated by rule white
+ * space in the source test.  Furthermore, they may be delimited by
+ * either single or double quotes (opening and closing quotes must
+ * match).  Escapes are processed using standard ICU unescaping.
+ */
+public class TokenIterator {
+
+    private ResourceReader reader;
+    private String line;
+    private StringBuffer buf;
+    private boolean done;
+    private int pos;
+    private int lastpos;
+
+    /**
+     * Construct an iterator over the tokens returned by the given
+     * ResourceReader, ignoring blank lines and comment lines (first
+     * non-blank character is '#').  Note that trailing comments on a
+     * line, beginning with the first unquoted '#', are recognized.
+     */
+    public TokenIterator(ResourceReader r) {
+        reader = r;
+        line = null;
+        done = false;
+        buf = new StringBuffer();
+        pos = lastpos = -1;
+    }
+
+    /**
+     * Return the next token from this iterator, or null if the last
+     * token has been returned.
+     */
+    public String next() throws IOException {
+        if (done) {
+            return null;
+        }
+        for (;;) {
+            if (line == null) {
+                line = reader.readLineSkippingComments();
+                if (line == null) {
+                    done = true;
+                    return null;
+                }
+                pos = 0;
+            }
+            buf.setLength(0);
+            lastpos = pos;
+            pos = nextToken(pos);
+            if (pos < 0) {
+                line = null;
+                continue;
+            }
+            return buf.toString();
+        }
+    }
+
+    /**
+     * Return the one-based line number of the line of the last token returned by
+     * next(). Should only be called
+     * after a call to next(); otherwise the return
+     * value is undefined.
+     */
+    public int getLineNumber() {
+        return reader.getLineNumber();
+    }
+    
+    /**
+     * Return a string description of the position of the last line
+     * returned by readLine() or readLineSkippingComments().
+     */
+    public String describePosition() {
+        return reader.describePosition() + ':' + (lastpos+1);
+    }
+    
+    /**
+     * Read the next token from 'this.line' and append it to
+     * 'this.buf'.  Tokens are separated by rule white space.  Tokens
+     * may also be delimited by double or single quotes.  The closing
+     * quote must match the opening quote.  If a '#' is encountered,
+     * the rest of the line is ignored, unless it is backslash-escaped
+     * or within quotes.
+     * @param position the offset into the string
+     * @return offset to the next character to read from line, or if
+     * the end of the line is reached without scanning a valid token,
+     * -1
+     */
+    private int nextToken(int position) {
+        position = Utility.skipWhitespace(line, position);
+        if (position == line.length()) {
+            return -1;
+        }
+        int startpos = position;
+        char c = line.charAt(position++);
+        char quote = 0;
+        switch (c) {
+        case '"':
+        case '\'':
+            quote = c;
+            break;
+        case '#':
+            return -1;
+        default:
+            buf.append(c);
+            break;
+        }
+        int[] posref = null;
+        while (position < line.length()) {
+            c = line.charAt(position); // 16-bit ok
+            if (c == '\\') {
+                if (posref == null) {
+                    posref = new int[1];
+                }
+                posref[0] = position+1;
+                int c32 = Utility.unescapeAt(line, posref);
+                if (c32 < 0) {
+                    throw new RuntimeException("Invalid escape at " +
+                                               reader.describePosition() + ':' +
+                                               position);
+                }
+                UTF16.append(buf, c32);
+                position = posref[0];
+            } else if ((quote != 0 && c == quote) ||
+                       (quote == 0 && UCharacterProperty.isRuleWhiteSpace(c))) {
+                return ++position;
+            } else if (quote == 0 && c == '#') {
+                return position; // do NOT increment
+            } else {
+                buf.append(c);
+                ++position;
+            }
+        }
+        if (quote != 0) {
+            throw new RuntimeException("Unterminated quote at " +
+                                       reader.describePosition() + ':' +
+                                       startpos);
+        }
+        return position;
+    }
+}
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt
new file mode 100644
index 0000000..f89f7b0
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_Definition.txt
@@ -0,0 +1,55798 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+# Convert CJK characters, according to the defintions in CEDICT and Unihan.txt
+# Note: adds space between them and letters.
+{ ([:Han:]) } [:L:] > | $1 ' ';
+[\.\,\?\!．，？！、。[:Pe:][:Pf:]] { } [:L:] > ' ';
+[:L:] { } [[:Han:][:Ps:][:Pi:]]> ' ';
+
+變文 < a\-popular\-form\-of\-narrative\-literature\-flourishing\-in\-the\-tang\-dynasty\-\(618\-907\)\-with\-alternate\-prose\-and\-rhymed\-parts\-for\-recitation\-and\-singing\-\(often\-on\-buddhistic\-themes\);
+邊幣 < border\-region\-currency\-\(consisting\-of\-the\-currency\-notes\-issued\-by\-the\-border\-region\-governments\-during\-the\-war\-of\-resistance\-against\-japan\-and\-the\-war\-of\-liberation\);
+直通車 < \"through\-train\"\-\(refers\-to\-the\-idea\-of\-retaining\-previous\-legislature\-after\-transition\-to\-chinese\-rule\-in\-hong\-kong\-or\-macau\);
+小臟鬼 < dirty\-little\-monster\-\(spoken\-affectionately\-to\-a\-child\-who\-has\-gotten\-him\(her\)self\-dirty\;\-literally\-\"little\-dirty\-ghost\"\);
+殺雞給猴看 < \"kill\-a\-chicken\-in\-front\-of\-a\-monkey\"\-\-\-\-make\-an\-example\-out\-of\-someone\-\(by\-punishing\-them\)\-to\-frighten\-others;
+抱薪救火 < carry\-faggots\-to\-put\-out\-a\-fire\-\-\-adopt\-a\-wrong\-method\-to\-save\-a\-situation\-and\-end\-up\-by\-making\-it\-worse;
+不見棺材不落淚 < not\-shed\-a\-tear\-until\-one\-sees\-the\-coffin\-\-\-refuse\-to\-be\-convinced\-until\-one\-is\-faced\-with\-grim\-reality;
+同期 < the\-corresponding\-time\-period\-\(eg\,\-compare\-inflation\-now\-with\-the\-rate\-during\-the\-same\-month\-last\-year\);
+㡎 < the\-long\-bands\-or\-ribbons\-attrached\-to\-flags\-and\-banners\-the\-feather\-decorected\-carriages\-or\-dresses;
+郯 < name\-of\-a\-small\-ancient\-principality\-which\-was\-situated\-in\-what\-is\-now\-part\-of\-shantung\-and\-kiangsu;
+杯水車薪 < trying\-to\-put\-out\-a\-burning\-cartload\-of\-faggots\-with\-a\-cup\-of\-water\-\-\-an\-utterly\-inadequate\-measure;
+䐞 < the\-thin\-membrane\-between\-skin\-and\-flesh\-that\-protects\-internal\-organs\-or\-tissues\-in\-the\-human\-body;
+偏偏 < \(indicates\-that\-sth\.\-turns\-out\-just\-the\-opposite\-of\-what\-one\-would\-expect\-or\-what\-would\-be\-normal\);
+敬祝 < to\-respectfully\-offer\-\(written\-at\-the\-end\-of\-letter\-from\-someone\-of\-lower\-status\-to\-higher\-status\);
+卜辭 < oracle\-inscriptions\-of\-the\-shang\-dynasty\-\(16th\-11th\-century\-bc\)\-on\-tortoiseshells\-or\-animal\-bones;
+病急亂投醫 < turn\-to\-any\-doctor\-one\-can\-find\-when\-critically\-ill\-\-\-try\-anything\-when\-in\-a\-desperate\-situation;
+辯証施治 < diagnosis\-and\-treatment\-based\-on\-an\-overall\-analysis\-of\-the\-illness\-and\-the\-patient''s\-condition;
+珪 < a\-jade\-table\-conferred\-upon\-feudal\-princes\-by\-the\-emperor\-as\-a\-symbol\-of\-dignity\-and\-authority;
+敝帚自珍 < value\-one''s\-own\-old\-broom\-\-\-cherish\-something\-of\-little\-value\-simply\-because\-it\-is\-one''s\-own;
+不知天高地厚 < not\-know\-the\-immensity\-of\-heaven\-and\-earth\-\-\-have\-an\-exaggerated\-opinion\-of\-one''s\-abilities;
+㺺 < a\-very\-precious\-piece\-of\-jade\-worn\-by\-ancient\-emperors\-to\-match\-tables\-borne\-by\-the\-nobles;
+䀘 < to\-cover\-the\-line\-of\-vision\-or\-sight\-\-\-the\-straight\-line\-between\-an\-object\-and\-one''s\-eyes;
+兵不血刃 < the\-edges\-of\-the\-swords\-not\-being\-stained\-with\-blood\-\-\-win\-victory\-without\-firing\-a\-shot;
+㨧 < wooden\-stick\-or\-bamboo\-cane\-used\-to\-support\-the\-covering\-of\-a\-carriage\-in\-ancient\-times;
+㔣 < in\-ancient\-times\-to\-fight\-against\-the\-enemy\-by\-pushing\-down\-the\-big\-rocks\-from\-up\-high;
+洛德 < \(winston\)\-lord\-\(former\-assistant\-secretary\-of\-state\-for\-east\-asia\-and\-pacific\-affairs\);
+不到黃河心不死 < not\-stop\-until\-one\-reaches\-the\-huanghe\-river\-\-\-not\-stop\-until\-one\-reaches\-one''s\-goal;
+彷徨 < name\-of\-a\-collection\-of\-short\-stories\,\-pang\-huang\,\-\"wandering\-about\"\,\-by\-lu3\-xun4\-魯迅;
+䚫 < ornamental\-articles\-made\-of\-horns\-used\-to\-decorate\-the\-top\-of\-a\-stick\-or\-horsewhip;
+養兒防老 < \(of\-parents\)\-to\-bring\-up\-cihldren\-for\-the\-purpose\-of\-being\-looked\-after\-in\-old\-age;
+陳毅 < chen\-yi\,\-former\-mayor\-of\-shanghai\-and\-highest\-ranking\-military\-commander\-in\-china;
+綺色佳 < ithaca\,\-ny\-\(but\-pronounced\-yi3\-se4\-jia1\,\-following\-a\-mistake\-made\-by\-hu2\-shi4\-胡適\);
+笐 < bamboos\-placed\-across\-wooden\-frames\-on\-which\-grain\-may\-be\-stored\-in\-damp\-climates;
+䣞 < name\-of\-an\-ancient\-state\-which\-occupied\-the\-site\-of\-the\-present\-province\-of\-hubei;
+䇶 < a\-small\-rafters\-made\-of\-bamboo\-which\-project\-form\-the\-eaves\-and\-support\-the\-tiles;
+雷峰塔 < leifeng\-pagoda\,\-by\-west\-lake\-until\-it\-was\-destroyed\-\(also\-from\-madam\-white\-snake\);
+賨 < tribute\-paid\-in\-cloth\-by\-the\-tribes\-in\-szechwan\-and\-yunnan\-under\-the\-han\-dynasty;
+不共戴天 < will\-not\-live\-under\-the\-same\-sky\-\(with\-one''s\-enemy\)\-\-\-absolutely\-irreconcilable;
+禫 < sacrifice\-offered\-at\-the\-end\-of\-the\-three\-years''\-mourning\-the\-death\-of\-a\-parent;
+䂩 < an\-in\-slab\-or\-ink\-stone\-sound\-of\-pebbles\-or\-stones\-rubbing\-or\-knocking\-together;
+䂍 < a\-kind\-of\-weapon\-carried\-by\-the\-honor\-guard\-before\-the\-emperor\-in\-ancient\-times;
+擊其惰歸 < avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+保甲制度 < the\-bao\-jia\-system\-\(an\-administrative\-system\-organized\-on\-basis\-of\-households\);
+包工 < undertake\-to\-perform\-work\-within\-a\-time\-limit\-and\-according\-to\-specifications;
+部首 < radicals\-by\-which\-characters\-are\-arranged\-in\-traditional\-chinese\-dictionaries;
+霸主 < a\-powerful\-chief\-of\-the\-princes\-of\-the\-spring\-and\-autumn\-period\-\(770\-476\-bc\);
+衈 < the\-blood\-of\-a\-sacrificial\-fowl\-which\-was\-sprinkled\-on\-the\-doors\-and\-vessels;
+㯩 < to\-put\-the\-growing\-up\-silkworms\-in\-different\-frames\-according\-to\-their\-sizes;
+㚳 < a\-lady\-teacher\-to\-teach\-the\-proper\-rules\-of\-female\-behavior\-in\-ancient\-times;
+不辨菽麥 < be\-unable\-to\-tell\-beans\-from\-wheat\-\-\-have\-no\-knowledge\-of\-practical\-matters;
+絥 < to\-harness\-a\-horse\-a\-board\-in\-front\-of\-a\-carriage\-for\-the\-driver\-to\-lean\-on;
+䋭 < to\-weave\-silk\-fabrics\-with\-green\-color\-for\-longitude\-and\-white\-for\-latitude;
+㭼 < a\-rectangle\-shaped\-peg\-or\-short\-post\-between\-the\-beans\-and\-the\-roof\-timbers;
+恭喜發財 < congratulations\-for\-getting\-rich\-\(traditional\-chinese\-new\-year''s\-future\-use;
+瑄 < a\-ornamental\-piece\-of\-jade\-several\-inches\-across\-with\-a\-hole\-in\-the\-center;
+牡丹卡 < peony\-card\-\(credit\-card\-issued\-by\-industrial\-and\-commercial\-bank\-of\-china\);
+䬤 < to\-put\-the\-thick\-soup\-or\-broth\-on\-top\-of\-the\-rice\-thick\-congee\-or\-porridge;
+在於 < \(the\-problem\-or\-explanation\-or\-advantage\-etc\.\)\-lies\-in\-\(the\-fact\-that\.\.\.\);
+䥯 < a\-farm\-tool\-to\-crush\-the\-clod\-of\-earth\-into\-pieces\-and\-make\-the\-land\-flat;
+䍖 < a\-kind\-of\-net\-equipted\-with\-tricky\-machine\-used\-to\-catch\-birds\-and\-beasts;
+塞韋裡諾 < \[jean\-michel\]\-severino\-\[world\-bank\-vice\-president\,\-east\-asia\-and\-pacific\];
+䎭 < a\-kind\-of\-farm\-tool\-made\-of\-twisted\-thron\-strips\-used\-to\-flaten\-the\-land;
+教訓 < \(teach\-someone\-or\-learn\-a\)\-lesson\-\(ie\,\-obtain\-wisdom\-from\-an\-experience\);
+三岔口 < at\-the\-crossroads\,\-the\-name\-of\-a\-famous\-opera\,\-story\-from\-shui\-hu\-zhuan;
+筓 < a\-hairpin\-on\-which\-the\-hair\-is\-bound\-at\-the\-back\-of\-the\-head\.\-15\-of\-age;
+李自成 < name\-of\-a\-person\,\-li\-zi\-cheng\,\-leader\-of\-ming\-dynasty\-peasant\-rebellion;
+有期徒刑 < limited\-term\-of\-imprisonment\-\(ie\,\-anything\-less\-than\-life\-imprisonment\);
+江八點 < \"jiang\-zemin''s\-eight\-point\-formula\"\-\(for\-resuming\-a\-dialog\-with\-taiwan\);
+鄧亮洪 < tang\-liang\-hong\-\(opposition\-candidate\-in\-jan\-1996\-singapore\-elections\);
+閉目塞聽 < shuts\-one''s\-eyes\-and\-stop\-up\-one''s\-ears\-\-\-be\-out\-of\-touch\-with\-reality;
+笨鳥先飛 < clumsy\-birds\-have\-to\-start\-flying\-early\-\-\-the\-slow\-need\-to\-start\-early;
+㮲 < a\-small\-ring\-or\-a\-small\-piece\-of\-board\-attached\-to\-the\-muzzle\-of\-an\-ox;
+駁岸 < a\-low\-stone\-wall\-built\-along\-the\-water''s\-edge\-to\-protect\-an\-embankment;
+百聞不如一見 < seeing\-for\-oneself\-is\-a\-hundred\-times\-better\-than\-hearing\-from\-others;
+補法 < treatment\-involving\-the\-use\-of\-tonics\-to\-restore\-the\-patient''s\-health;
+䵻 < a\-small\-tripod\-of\-bronze\-with\-two\-ears\-tripod\-of\-bronze\-with\-two\-ears;
+三不 < \"the\-three\-no''s\"\-\(an\-example\-of\-an\-abbreviated\-slogan\-or\-catchphrase\);
+白朮 < the\-rhizome\-of\-large\-headed\-atractylodes\-\(atractylodes\-macrocephaia\);
+本草綱目 < an\-outline\-treatise\-of\-medical\-herbs\,\-compiled\-by\-li3\-shi2\-zhen1\-李時珍;
+玠 < large\-jade\-tablet\-used\-by\-officials\-at\-court\-to\-indicate\-their\-ranks;
+吃大戶 < mass\-seizure\-of\-food\-from\-landlords\-during\-famines\-before\-liberation;
+䂜 < rocky\-fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade\-to\-collapse;
+㡆 < an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+李時珍 < li\-shi\-zhen\-\(1518\-1593\,\-famous\-doctor\,\-author\-of\-ben3\-cao3\-gang1\-mu4;
+兵強馬壯 < strong\-soldiers\-and\-sturdy\-horses\-\-\-a\-well\-trained\-and\-powerful\-army;
+裎 < to\-take\-off\-the\-clothes\-and\-expose\-the\-body\.\-to\-carry\-in\-the\-girdle;
+鎋 < the\-linch\-pin\-of\-a\-wheel\-to\-govern\-or\-control\-the\-noise\-of\-a\-barrow;
+禽流感 < \"bird\-flu\"\-\(flu\-carried\-by\-birds\-\-\-found\-in\-hong\-kong\-in\-late\-1997\);
+䪐 < something\-made\-of\-bamboo\-put\-in\-the\-bow\-case\-to\-pretect\-from\-damage;
+業余大學 < college\-for\-people\-who\-attend\-after\-work\-\(lit\.\:\-spare\-time\-college\);
+䇭 < containers\-made\-of\-thin\-and\-long\-strip\-of\-bamboo\-or\-willow\-branches;
+㟬 < a\-mountain\-in\-today''s\-shandong\-province\-southwest\-of\-mengyin\-county;
+㚥 < to\-become\-associated\-with\-each\-other\-in\-good\-manners\-and\-politeness;
+宣判 < pronounce\-a\-\(judicial\)\-sentence\-\(after\-a\-verdict\-in\-a\-court\-of\-law\);
+蒙代爾 < \(walter\)\-mondale\-\(us\-ambassador\-to\-japan\,\-former\-us\-vice\-president\);
+陳納德 < \(claire\)\-chennault\,\-commander\-of\-flying\-tigers\-during\-world\-war\-ii;
+病友 < a\-friend\-made\-in\-hospital\-or\-people\-who\-become\-friends\-in\-hospital;
+捕風捉影 < chase\-the\-wind\-and\-clutch\-at\-shadows\-\-\-make\-groundless\-accusations;
+就是 < \(emphasizes\-that\-something\-is\-precisely\-or\-exactly\-what\-is\-stated\);
+䤞 < a\-kind\-of\-weapons\-held\-by\-the\-officials\-in\-attendance\-in\-old\-times;
+㹫 < a\-kind\-of\-animal\-generally\-called\-for\-minority\-groups\-in\-old\-china;
+㳻 < a\-bank\-of\-earth\-or\-an\-embankment\-to\-block\-the\-current\-of\-the\-water;
+㯢 < a\-piece\-of\-cross\-wise\-board\-used\-for\-frame\-on\-which\-silkworms\-spin;
+維爾容 < \(johannes\-lodewikus\)\-viljoen\-\(south\-african\-ambassador\-to\-taiwan\);
+葛洲壩 < name\-of\-a\-place\,\-gezhouba\-dam\-on\-the\-changjiang\-river\,\-in\-sichuan;
+䃘 < simple\-and\-crude\-the\-sound\-of\-pebbles\-or\-stones\-knocking\-together;
+㰱 < to\-smear\-the\-mouth\-with\-the\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+不分彼此 < make\-no\-distinction\-between\-what''s\-one''s\-own\-and\-what''s\-another''s;
+老驥伏櫪志在千里 < \(lit\.\)\-an\-old\-steed\-in\-the\-stable\-still\-aspires\-to\-gallop\-1000\-li;
+大禹 < da\-yu\,\-name\-of\-an\-ancient\-hero\-who\-successfully\-controlled\-floods;
+獯 < a\-tribe\-of\-scythians\-which\-invaded\-china\-during\-the\-hsia\-dynasty;
+鞔 < sides\-or\-uppers\-of\-shoes\-to\-stretch\-a\-skin\-on\-a\-frame\-for\-a\-drum;
+表證 < illness\-that\-has\-not\-attacked\-the\-vital\-organs\-of\-the\-human\-body;
+國際電話電報諮詢委員會 < international\-consultative\-committee\-for\-telephone\-and\-telegraph;
+不知凡幾 < can''t\-tell\-how\-many\-there\-are\-\-\-there\-are\-numerous\-similar\-cases;
+䕽 < the\-rhododendron\-\-\-\-it\-is\-said\-to\-cause\-sheep\-to\-stagger\-and\-die;
+鼻韻母 < \(of\-chinese\-pronunciation\)\-a\-vowel\-followed\-by\-a\-nasal\-consonant;
+幫閑 < hang\-on\-to\-and\-serve\-the\-rich\-and\-powerful\-by\-literary\-hack\-work;
+郜 < name\-of\-fief\-in\-shantong\-bestowed\-on\-the\-eldest\-son\-of\-wen\-wang;
+描紅 < to\-trace\-over\-red\-characters\-\(as\-a\-method\-of\-learning\-to\-write\);
+金永南 < kim\-yong\-nam\-\(north\-korean\-deputy\-premier\-and\-foreign\-minister\);
+抗戰 < war\-of\-resistance\,\-especially\-the\-war\-against\-japan\-\(1937\-1945\);
+抱殘守缺 < cherish\-the\-outmoded\-and\-preserve\-the\-outworn\-\-\-be\-conservative;
+閉塞眼睛捉麻雀 < try\-to\-catch\-sparrows\-with\-one''s\-eyes\-blindfolded\-\-\-act\-blindly;
+䍿 < a\-kind\-of\-dance\-accompanied\-by\-music\-performed\-in\-ancient\-times;
+䌞 < a\-knot\-to\-hang\-the\-apparatus\-made\-of\-reed\-for\-raising\-silkworms;
+䇉 < capacity\-unit\-in\-france\-equal\-to\-one\-hundred\-times\-of\-one\-litre;
+㽈 < a\-large\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㹐 < to\-tow\-a\-boat\-against\-the\-current\-in\-swift\-stream\-from\-the\-bank;
+沅 < name\-of\-a\-river\-in\-western\-hunan\-that\-flows\-into\-dongting\-lake;
+簋 < a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+不費吹灰之力 < as\-easy\-as\-blowing\-off\-dust\-\-\-not\-needing\-the\-slightest\-effort;
+斗批改 < struggle\-criticism\-transformation\-\(cultural\-revolution\-slogan\);
+阿不來提\.阿不都熱西提 < abdulaidi\-amudurexiti\-\(chairman\-of\-xinjiang\-autonomous\-region\);
+鷴 < silver\-pheasant\-badge\-worn\-by\-civil\-officials\-of\-the\-5th\-grade;
+博古通今 < conversant\-with\-things\-past\-and\-present\-\-\-erudite\-and\-informed;
+蟕 < a\-species\-of\-tortoise\-found\-near\-the\-mouth\-of\-the\-yellow\-river;
+今音 < modern\-\(i\.e\.\-not\-ancient\)\-pronunciation\-of\-a\-chinese\-character;
+斯特凡諾普洛斯 < stephanopoulos\-\(eg\,\-former\-clinton\-aide\-george\-stephanopoulos\);
+㬆 < posthumous\-title\-conferred\-upon\-emperors\-and\-eminent\-officials;
+不入虎穴焉得虎子 < how\-can\-you\-catch\-tiger\-cubs\-without\-entering\-the\-tiger''s\-lair;
+鞝 < the\-piece\-of\-leather\-used\-for\-soles\-on\-chinese\-shoes\.\-a\-patch;
+大鬧天宮 < \"the\-monkey\-creates\-havoc\-in\-heaven\"\,\-story\-about\-sun\-wu\-kong;
+蔛 < a\-small\-orchid\-like\-plant\-it\-bears\-white\-flowers\-a\-dendrobium;
+端午節 < the\-dragon\-boat\-festival\-\(the\-5th\-day\-of\-the\-5th\-lunar\-month\);
+䰙 < an\-ancient\-unit\-of\-capacity\-with\-three\-feet\-and\-a\-big\-opening;
+䔹 < a\-fungus\-which\-grows\-on\-rotten\-plants\-and\-is\-eaten\-when\-fresh;
+㯣 < a\-kind\-of\-fragrant\-tree\-used\-to\-produce\-perfume\-by\-burning\-it;
+㯡 < to\-lacquer\-some\-kind\-of\-ashes\-on\-wooden\-articals\-or\-furniture;
+悲天憫人 < bemoan\-the\-state\-of\-the\-universe\-and\-pity\-the\-fate\-of\-mankind;
+惋惜 < to\-feel\-sorry\-for\-a\-person\-over\-sth\-that\-should\-have\-happened;
+峋 < ranges\-of\-hills\-stretching\-on\-beyond\-another\-irregular\-peaks;
+歃 < smear\-one''s\-mouth\-with\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+白茫茫 < \(of\-mist\,\-snow\,\-floodwater\,\-etc\)\-a\-vast\-expanse\-of\-whiteness;
+睥睨 < look\-at\-somebody\-disdainfully\-out\-of\-the\-corner\-of\-one''s\-eye;
+羗 < tribes\-in\-west\-china\-strong\.\-educated\.\-obstinate\.\-a\-particle;
+胡適 < hu\-shi\-\(1891\-1962\)\,\-original\-proponent\-of\-bai2\-hua4\-wen2\-白話文;
+軍委 < military\-commission\-of\-the\-communist\-party\-central\-committee;
+不服水土 < \(of\-a\-stranger\)\-not\-accustomed\-to\-the\-climate\-of\-a\-new\-place;
+斯佩羅 < \(joan\)\-spero\-\(under\-secretary\-of\-state\-for\-economic\-affairs\);
+丣 < ancient\-form\-of\-the\-tenth\-of\-the\-twelve\-terrestrial\-branches;
+䡅 < something\-used\-to\-bind\-the\-frame\-work\-in\-a\-cart\-of\-old\-times;
+䚨 < a\-string\-fastened\-to\-an\-arrow\-to\-draw\-it\-back\-after\-shooting;
+䎠 < to\-twist\-or\-to\-crumple\-between\-hands\-and\-make\-something\-turn;
+㟹 < the\-appearance\-of\-a\-mountain\-is\-lofty\-and\-steep\-and\-profound;
+㝸 < a\-conical\-cap\-worn\-on\-ceremonious\-occasions\-in\-ancient\-times;
+㙨 < the\-royal\-domains\-set\-apart\-in\-ancient\-times\-for\-the\-emperor;
+燈節 < the\-lantern\-festival\-\(15th\-of\-first\-month\-of\-lunar\-calendar\);
+衩 < the\-open\-seam\-of\-a\-garment\-which\-allows\-freedom\-of\-movement;
+屺 < a\-hill\-with\-trees\-or\-grass\-\-\-some\-give\-the\-opposite\-meaning;
+北洋 < the\-qing\-dynasty\-name\-for\-the\-coastal\-provinces\-of\-liaoning;
+八旗 < the\-\"eight\-banners\"\-\(military\-organisation\-in\-qing\-dynasty\);
+䶦 < upper\-and\-lower\-teeth\-in\-order\-and\-corresponding\-each\-other;
+䧂 < to\-turn\-over\-the\-clod\-of\-the\-earth\-with\-a\-shovel\-or\-a\-spade;
+藤野 < name\-of\-a\-person\,\-teng\-ye\,\-a\-japanese\-friend\-of\-lu3\-xun4\-魯迅;
+華表 < marble\-pillar\-\(ornamental\-column\-in\-front\-of\-places\,\-tombs\);
+待業 < to\-await\-job\-assignment\-\(term\-used\-only\-in\-mainland\-china\);
+太極拳 < a\-kind\-of\-traditional\-chinese\-shadowboxing\-\(tai\-chi\-chuan\);
+哀兵必勝 < an\-army\-burning\-with\-righteous\-indignation\-is\-bound\-to\-win;
+會不會 < \(posing\-a\-question\:\-whether\-someone\,\-something\)\-can\-or\-not;
+扮相 < the\-appearance\-of\-an\-actor\-or\-actress\-in\-costume\-or\-makeup;
+抱佛腳 < clasp\-budda''s\-feet\-\-\-profess\-devotion\-only\-when\-in\-trouble;
+噞 < the\-movement\-of\-a\-fish''s\-mouth\-at\-the\-surface\-of\-the\-water;
+唵 < used\-in\-buddhist\-texts\-to\-transliterate\-non\-chinese\-sounds;
+䠂 < name\-of\-a\-powerful\-feudal\-state\-which\-existed\-740\-330\-b\.c\.;
+䖶 < to\-raise\-up\-the\-nose\-in\-order\-to\-get\-the\-bugs\-in\-the\-earth;
+蛋花湯 < clear\-soup\-containing\-beaten\-egg\-and\-green\-leafy\-vegetable;
+䄛 < service\-or\-rites\-of\-offering\-sacrifices\-for\-drink\-and\-food;
+㼰 < an\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㸖 < hide\-or\-to\-keep\-in\-store\-the\-vegetable\-in\-cold\-winter\-days;
+㷟 < to\-scald\-the\-bristles\-off\-a\-pig\-or\-the\-feathers\-off\-a\-bird;
+㰇 < the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㦼 < a\-wooden\-piles\-used\-as\-a\-cable\-to\-make\-immovable\-of\-a\-boat;
+㢧 < a\-book\-or\-painting\-which\-can\-be\-easily\-folded\-or\-rolled\-up;
+金山寺 < jinshan\-temple\,\-where\-fahai\-lives\-\(from\-madam\-white\-snake\);
+並蒂蓮 < twin\-lotus\-flowers\-on\-one\-stalk\-\-\-a\-devoted\-married\-couple;
+武術 < wushu\,\-martial\-arts\-such\-as\-shadow\-boxing\,\-swordplay\,\-etc\.;
+中共 < \(abbreviation\-for\)\-chinese\-communist\-\(party\,\-regime\,\-etc\.\);
+钲 < kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+政協 < cppcc\-\(chinese\-people''s\-political\-consultative\-committee\);
+採取 < adopt\-or\-carry\-out\-\(measures\,\-policies\,\-course\-of\-action\);
+癟三 < a\-wretched\-looking\-tramp\-who\-lives\-by\-begging\-or\-stealing;
+表兄 < male\-cousin\-with\-a\-different\-surname\-\(older\-than\-oneself\);
+矛頭指向 < target\-someone\-or\-something\-\(for\-attack\,\-criticism\,\-etc\.\);
+仙草 < a\-kind\-of\-plant\-used\-as\-a\-medicinal\-herb\-in\-ancient\-times;
+䪳 < slanted\-face\-causing\-by\-the\-paralyzed\-of\-the\-facial\-nerve;
+板胡 < a\-bowed\-stringed\-instrument\-with\-a\-thin\-wooden\-soundboard;
+䞋 < to\-do\-alms\-for\-the\-buddhist\-priests\-or\-monks\-in\-old\-times;
+䙆 < slits\-on\-the\-lower\-part\-of\-a\-gown\-for\-freedom\-of\-movement;
+䀏 < to\-move\-one''s\-eyes\-to\-express\-or\-indicate\-with\-eyes\-dizzy;
+㿄 < the\-groans\-or\-moans\-from\-a\-person\-in\-a\-critical\-condition;
+㶏 < an\-ancient\-name\-of\-a\-river\-in\-henan\-province\-dengfengxian;
+㳇 < name\-of\-a\-place\-in\-today''s\-jiangsu\-province\-yixing\-county;
+㫋 < a\-silken\-banner\-hanging\-from\-a\-staff\-bent\-over\-at\-the\-top;
+斯卡伯勒礁 < scarborough\-shoal\-\(philippines''\-name\-for\-huangyan\-island\);
+不恥下問 < not\-feel\-ashamed\-to\-ask\-and\-learn\-from\-one''s\-subordinates;
+狽 < a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+歐 < used\-in\-transliterating\-non\-chinese\-words\-such\-as\-europe;
+汨 < mi\-river\-in\-hunan\-province\-where\-qu\-yuan\-drowned\-himself;
+汜 < a\-stream\-which\-leaves\-the\-main\-branch\-then\-later\-returns;
+卡拉OK < karaoke\-\(singing\-to\-recorded\-instrumental\-accompaniment\);
+中國民航 < general\-administration\-of\-civil\-aviation\-of\-china\-\(caac\);
+補養 < take\-a\-tonic\-or\-nourishing\-food\-to\-build\-up\-one''s\-health;
+沙利科什維利 < general\-shalikashvili\-\(head\-of\-us\-joint\-chiefs\-of\-staff\);
+簈 < bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+爼 < a\-small\-table\-or\-tiered\-stand\-filled\-with\-meat\-offerings;
+三國演義 < name\-of\-a\-classic\-novel\,\-\"romance\-of\-the\-three\-kingdoms\";
+拼命 < to\-be\-ready\-to\-risk\-one''s\-life\-\(in\-fighting\,\-work\,\-etc\.\);
+背水一戰 < fight\-with\-one''s\-back\-to\-the\-river\-\-\-fight\-to\-win\-or\-die;
+䳚 < a\-sort\-of\-nightingale\-which\-is\-said\-to\-sing\-for\-the\-dawn;
+䡂 < the\-long\-wooden\-bumper\-at\-the\-rear\-of\-a\-cart\-or\-carriage;
+杯弓蛇影 < mistaking\-the\-reflection\-of\-a\-bow\-in\-the\-cup\-for\-a\-snake;
+䃾 < to\-offer\-small\-pig\-as\-sacrifice\-when\-warship\-god\-of\-life;
+㼪 < fragments\-of\-a\-tile\-haven''t\-t\-been\-kiln\-dried\-completely;
+㴖 < name\-of\-a\-stream\-in\-shandong\-province\-southwest\-of\-jinan;
+㝉 < space\-between\-the\-throne\-and\-the\-retiring\-room\-behind\-it;
+㖫 < used\-in\-names\-for\-minority\-ethnic\-group\-in\-ancient\-china;
+背井離鄉 < leave\-one''s\-native\-place\-\(especially\-against\-one''s\-will\);
+炝 < stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+遷怒 < to\-take\-one''s\-anger\-out\-on\-sb\-\(who\-does\-not\-deserve\-it\);
+波瀾起伏 < of\-a\-piece\-of\-writing\-with\-one\-climax\-following\-another;
+不為已甚 < refrain\-from\-going\-to\-extremes\-in\-meting\-out\-punishment;
+不約而同 < take\-the\-same\-action\-or\-view\-without\-prior\-consultation;
+飛虎隊 < flying\-tigers\-\(us\-airmen\-in\-china\-during\-world\-war\-two\);
+掛好 < to\-hang\-up\-properly\-\(telephone\,\-picture\,\-clothes\,\-etc\.\);
+拔毒 < draw\-out\-pus\-by\-applying\-a\-plaster\-to\-the\-affected\-area;
+弮 < a\-crowwbow\-which\-discharged\-several\-bolts\-in\-succession;
+䪙 < leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䧚 < the\-name\-of\-a\-place\-in\-the\-south\-west\-of\-hebei\-province;
+畜力 < animal\-powered\-\(as\-opposed\-to\-human\-or\-machine\-powered\);
+䡞 < leather\-that\-wind\-round\-on\-the\-shafts\-of\-a\-big\-carriage;
+䍜 < a\-basket\-or\-a\-cage\-used\-to\-keep\-wild\-and\-domestic\-fowls;
+䇆 < capacity\-unit\-in\-france\-equal\-to\-ten\-times\-of\-one\-litre;
+䂅 < to\-have\-insight\-or\-vision\-of\-a\-simple\-and\-honest\-person;
+㲽 < name\-of\-a\-river\-in\-today''s\-southwest\-of\-shanxi\-province;
+㮐 < a\-rack\-or\-a\-stand\-with\-three\-sticks\-to\-cross\-each\-other;
+㬸 < a\-kind\-of\-services\-or\-ceremonies\-of\-offering\-sacrifices;
+暗花兒 < a\-veiled\-design\-incised\-in\-porcelain\-or\-woven\-in\-fabric;
+冰炭不相容 < as\-incompatible\-or\-irreconcilable\-as\-ice\-and\-hot\-coals;
+幫腔 < vocal\-accompaniment\-in\-some\-traditional\-chinese\-operas;
+奔喪 < hasten\-home\-for\-the\-funeral\-of\-a\-parent\-or\-grandparent;
+白芍 < \(peeled\)\-root\-of\-herbaceous\-peony\-\(paeonia\-lactiflora\);
+郌 < name\-of\-an\-ancient\-hsien\-in\-modern\-gansu\/shaanxi\-area\.;
+興趣 < interest\-\(directed\-towards\,\-not\-inherent\-in\-something\);
+拔罐子 < cupping\-technique\-used\-in\-traditional\-chinese\-medicine;
+耰 < toothless\-rake\-for\-drawing\-earth\-over\-newly\-sown\-grain;
+琀 < gems\-of\-pearls\-formerly\-put\-into\-the\-mouth\-of\-a\-corpse;
+標兵 < parade\-guards\-\(usually\-spaced\-out\-along\-parade\-routes\);
+䪃 < wine\-container\-used\-by\-minority\-tribe\-in\-ancient\-times;
+䥷 < a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder\-or\-hay;
+䤩 < an\-ornament\-at\-the\-end\-of\-a\-belt\-used\-in\-ancient\-times;
+䝪 < to\-provide\-money\-or\-gift\-and\-to\-consult\-fortune\-teller;
+䙛 < ceremonial\-dress\-of\-the\-emperor\-or\-very\-high\-officials;
+䘦 < a\-kind\-of\-head\-dress\-wore\-in\-funeral\-rites\-in\-old\-days;
+䘟 < kind\-of\-silk\-woven\-with\-double\-threads\-and\-water\-proof;
+䔑 < a\-white\-colored\-cluster\-grown\-at\-the\-tip\-of\-cogongrass;
+䉲 < thin\-and\-flat\-slips\-of\-bamboo\-used\-for\-weaving\-purpose;
+㼽 < fragments\-of\-a\-tile\-haven''t\-been\-kiln\-dried\-completely;
+㶁 < after\-blocking\-the\-water\-flow\-takes\-different\-waterway;
+㯀 < bonds\-and\-fetters\-for\-falcons\-and\-dogs\-used\-in\-hunting;
+㒾 < a\-kind\-of\-wrapper\-used\-to\-cover\-over\-the\-face\-and\-head;
+八面玲瓏 < be\-smooth\-and\-slick\-\(in\-establishing\-social\-relations\);
+元宵節 < the\-lantern\-festival\,\-january\-15\-on\-the\-lunar\-calendar;
+眾志成城 < \"unity\-of\-will\-is\-an\-impregnable\-stronghold\"\-\(proverb\);
+個體戶 < a\-small\-private\-business\-\(used\-in\-mainland\-china\-only\);
+法海 < name\-of\-a\-buddhist\-monk\,\-fahai\,\-from\-madam\-white\-snake;
+蠲 < the\-millipede\-sometimes\-confounded\-with\-the\-grow\-worm;
+蘧 < a\-plant\-which\-resembles\-wheat\-but\-has\-no\-edible\-grain;
+景德鎮 < jing\-de\-zhen\-\(a\-chinese\-city\-in\-jiang\-xi\-江西\-province\);
+韋爾弗雷茲 < \(george\)\-wehrfritz\-\(beijing\-bureau\-chief\-of\-newsweek\);
+長城卡 < great\-wall\-card\-\(credit\-card\-issued\-by\-bank\-of\-china\);
+哈貝爾 < \(webster\)\-hubbell\-\(former\-associate\-attorney\-general\);
+萬壽山 < name\-of\-a\-place\,\-longevity\-hill\,\-in\-summer\-palace\-頤和園;
+拉那烈 < \(prince\)\-ranariddh\-\(son\-of\-king\-sihanouk\-of\-cambodia\);
+䡴 < carriage\-used\-in\-ancient\-times\-to\-take\-enemy\-position;
+䟺 < walk\-slowly\-because\-of\-the\-wrong\-position\-of\-the\-feet;
+䉣 < slips\-of\-bamboo\-provided\-for\-writing\-in\-ancient\-times;
+䁹 < to\-look\-askance\-\-\-\-a\-expression\-of\-disdain\-or\-despise;
+㼌 < lot\-of\-melons\-growing\-but\-the\-root\-is\-weak\-and\-feeble;
+㻠 < jade\-hanging\-on\-the\-sides\-of\-the\-cap\-in\-ancient\-times;
+㮣 < a\-piece\-of\-wood\-used\-to\-strike\-off\-grain\-in\-a\-measure;
+㓤 < to\-strip\-the\-skin\-of\-the\-face\-\-\-\-an\-imminent\-calamity;
+包干制 < a\-system\-of\-payment\-partly\-in\-kind\-and\-partly\-in\-cash;
+抗日戰爭 < \(china''s\)\-war\-of\-resistance\-against\-japan\-\(1937\-1945\);
+顏真卿 < name\-of\-a\-person\,\-yan\-zhenqing\,\-a\-famous\-calligrapher;
+白素貞 < \(name\-of\-a\-person\)\-bai\-suzhen\,\-from\-madam\-white\-snake;
+砀 < brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+彈琴 < to\-play\-or\-strum\-a\-lute\-or\-other\-stringed\-instrument;
+白陶 < white\-pottery\-\(of\-shang\-dynastry\-16\-11th\-century\-bc\);
+包干 < be\-responsible\-for\-a\-task\-unit\-until\-it\-is\-completed;
+大材小用 < using\-a\-talented\-person\-in\-an\-insignificant\-position;
+琳\.戴維斯 < lynn\-davis\-\(us\-state\-department\-arms\-control\-expert\);
+平方 < square\-\(as\-in\-square\-foot\,\-square\-mile\,\-square\-root\);
+虒 < an\-amphibious\-beast\-resembling\-a\-tiger\-with\-one\-horn;
+筁 < a\-bamboo\-frame\-on\-which\-silkworms\-spin\-their\-cocoons;
+人民英雄紀念碑 < monument\-to\-the\-people''s\-heroes\,\-at\-tiananmen\-square;
+冋 < a\-desert\-a\-border\-prairie\-the\-1st\-form\-is\-radical\-13;
+䴷 < use\-the\-whole\-piece\-of\-barley\-to\-ferment\-for\-brewing;
+䭞 < a\-kind\-of\-sacrifices\-offered\-to\-gods\-or\-the\-deceased;
+䧠 < name\-of\-a\-place\-in\-what\-is\-today''s\-shandong\-province;
+䑩 < a\-kind\-of\-inland\-rivers\-warship\-used\-in\-qing\-dynasty;
+䍸 < a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䃫 < a\-silicate\-substance\-from\-the\-salt\-wells\-in\-szechwan;
+㸜 < to\-get\-through\-the\-space\-enclosed\-by\-a\-constellation;
+㷭 < a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+不聞不問 < not\-bother\-to\-ask\-questions\-or\-listen\-to\-what''s\-said;
+並行不悖 < both\-can\-be\-implemented\-without\-coming\-into\-conflict;
+步步為營 < advance\-gradually\-and\-entrench\-oneself\-at\-every\-step;
+甾 < ground\-that\-has\-been\-under\-cultivation\-for\-one\-year;
+一望無際 < as\-far\-as\-the\-eye\-can\-see\-\(lit\:\-look\-afar\-no\-bound\);
+不見經傳 < not\-to\-be\-found\-in\-the\-classics\-\-\-not\-authoritative;
+撥雲見日 < dispel\-the\-clouds\-and\-see\-the\-sun\-\-\-restore\-justice;
+比上不足比下有余 < fall\-short\-of\-the\-best\-but\-be\-better\-than\-the\-worst;
+白冰冰 < pai\-ping\-ping\-\(well\-known\-taiwan\-performing\-artist\);
+拉貝 < \(john\)\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+巫山 < mt\.\-wu\,\-on\-the\-changjiang\-river\-by\-the\-three\-gorges;
+禡 < a\-sacrifice\-at\-the\-beginning\-of\-a\-military\-campaign;
+礮 < ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+捕俘 < capture\-enemy\-personnel\-\(for\-intelligence\-purposes\);
+伯恩斯 < \(nicholas\)\-burns\-\(us\-state\-department\-spokesperson\);
+䯠 < the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䬦 < food\-items\-merely\-arranged\-for\-display\-purpose\-only;
+䙑 < a\-piece\-of\-sackcloth\-worn\-on\-the\-breast\-in\-mourning;
+鏢客 < armed\-escort\-\(of\-travellers\-or\-merchants''\-caravans\);
+䈱 < an\-open\-bamboo\-basket\-used\-to\-feed\-domestic\-animals;
+㪵 < half\-of\-a\-unit\-of\-measurement\-used\-in\-ancient\-times;
+㡈 < the\-ropes\-attached\-to\-the\-bier\-and\-held\-by\-mourners;
+㚤 < a\-lady\-officer\-of\-the\-monarch''s\-palace\-in\-old\-times;
+安步當車 < walk\-over\-leisurely\-instead\-of\-riding\-in\-a\-carriage;
+貝母 < the\-bulb\-of\-the\-fritillary\-\(fritillaria\-thunbergii\);
+名勝 < a\-place\-famous\-for\-its\-scenery\-or\-historical\-relics;
+民樂 < music\,\-esp\.\-folk\-music\,\-for\-traditional\-instruments;
+呀 < particle\-used\-to\-express\-surprise\-or\-mild\-emphasis;
+陝西 < shaanxi\-province\,\-china\-\(capitol\-city\-is\-xi''an\-西安\);
+日方 < the\-japanese\-side\-or\-party\-\(in\-negotiations\,\-etc\.\);
+不勝枚舉 < too\-numerous\-to\-mention\-individually\-or\-one\-by\-one;
+靷 < the\-leather\-belt\-that\-connects\-a\-horse\-with\-a\-cart;
+譼 < to\-supervise\-to\-confine\-a\-government\-establishment;
+橫折 < \(horizontal\-starting\-right\-angle\-character\-stroke\);
+西安 < xi''an\-\(city\)\,\-the\-capitol\-city\-of\-shaanxi\-province;
+小青 < name\-of\-a\-person\,\-xiaoqing\,\-from\-madam\-white\-snake;
+臨摹 < to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\,\-etc\.\);
+坫 < a\-stand\-on\-which\-to\-replace\-goblets\-after\-drinking;
+備取 < be\-on\-the\-waiting\-list\-\(for\-admission\-to\-a\-school\);
+䴽 < a\-small\-round\-piece\-of\-distiller''s\-grains\-or\-yeast;
+䰎 < to\-twist\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䪝 < leather\-cord\-that\-winding\-on\-the\-handle\-of\-a\-knife;
+賓至如歸 < guests\-feel\-at\-home\-\(in\-a\-hotel\,\-guesthouse\,\-etc\.\);
+䡇 < the\-cross\-bar\-at\-the\-end\-of\-the\-pole\-of\-a\-carriage;
+䞀 < to\-desire\-for\-more\-money\-than\-one''s\-rightful\-share;
+䘭 < the\-pleates\-on\-the\-lapel\-of\-a\-garment\-of\-thin\-silk;
+䐈 < a\-piece\-of\-one\-foot\-two\-inches\-dried\-seasoned\-meat;
+䍅 < containers\-for\-water\-or\-wine\-used\-in\-ancient\-times;
+䋾 < cotton\-and\-silk\-to\-be\-laid\-and\-attached\-each\-other;
+䉐 < a\-thin\-and\-long\-strip\-of\-bamboo\-for\-making\-baskets;
+䈻 < a\-heavy\-mats\-of\-bamboo\-used\-for\-deep\-water\-fishing;
+䇠 < wrench\-to\-adjust\-the\-string\-on\-stringed\-instrument;
+䄌 < to\-perform\-rities\-in\-honor\-of\-the\-ancestral\-temple;
+䃦 < a\-flat\-and\-great\-rock\-people\-squat\-or\-crouch\-on\-it;
+㻀 < fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㲬 < hair\-decorations\-on\-a\-helmet\-used\-in\-ancient\-times;
+㱯 < get\-the\-unborn\-baby\-goat\-by\-killng\-the\-mother\-goat;
+㮰 < the\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+㪶 < a\-dry\-measure\-10\-or\-5\-times\-that\-of\-a\-chinese\-peck;
+尼赫魯 < \(jawaharlal\)\-nehru\-\(first\-prime\-minister\-of\-india\);
+㟗 < name\-of\-a\-small\-principality\-in\-what\-is\-now\-shanxi;
+撥浪鼓 < a\-drum\-shaped\-rattle\-\(used\-by\-pedlars\-or\-as\-a\-toy\);
+尖閣列島 < senkaku\-islands\-\(japanese\-name\-for\-diaoyu\-islands\);
+本末 < the\-whole\-course\-of\-an\-event\-from\-beginning\-to\-end;
+頓挫 < with\-syncopated\-cadence\-\(brush\-stroke\-in\-painting\);
+維吾爾族 < the\-uygur\-\(uighur\)\-nationality\,\-living\-in\-xinjiang;
+版畫 < a\-picture\-printed\-from\-an\-engraved\-or\-etched\-plate;
+避諱 < taboo\-against\-using\-the\-personal\-names\-of\-emperors;
+按下葫蘆浮起瓢 < solve\-one\-problem\-only\-to\-find\-another\-cropping\-up;
+伽 < transcription\-of\-sanskrit\-''gha''\-in\-buddhist\-texts;
+屣 < straw\-sandals\-or\-slippers\-that\-have\-no\-heel\-backs;
+北大荒 < the\-great\-northern\-wilderness\-\(in\-northern\-china\);
+武松 < wusong\,\-name\-of\-a\-person\,\-a\-hero\-in\-shui\-hu\-zhuan;
+十五大 < 1\-5th\-party\-congress\-\(of\-chinese\-communist\-party\);
+李光耀 < lee\-kuan\-yew\-\(former\-prime\-minister\-of\-singapore\);
+許仙 < name\-of\-a\-person\,\-xu\-xian\,\-from\-madam\-white\-snake;
+儐相 < attendant\-of\-the\-bride\-or\-bridegroom\-at\-a\-wedding;
+補瀉 < reinforcing\-and\-reducing\-methods\-\(in\-acupuncture\);
+南華早報 < south\-china\-morning\-post\-\(newspaper\-in\-hong\-kong\);
+幹事 < administrative\-secretary\-\(in\-charge\-of\-something\);
+病入膏肓 < the\-disease\-has\-attacked\-the\-vitals\-\-\-beyond\-cure;
+巫峽 < wuxia\-gorge\,\-in\-the\-changjiang\-river\-three\-gorges;
+漎 < a\-place\-where\-small\-streams\-flow\-into\-a\-large\-one;
+折筆 < against\-the\-bristles\-\(brush\-movement\-in\-painting\);
+檾 < grassy\-plant\-with\-fibres\-from\-which\-cloth\-is\-made;
+專線 < special\-purpose\-phone\-line\-or\-communications\-link;
+圖克 < \(gary\-l\.\)\-tooker\-\(motorola\-chairman\-of\-the\-board\);
+䰌 < to\-bind\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䩵 < tanner\-who\-made\-the\-leather\-drum\-in\-ancient\-times;
+人民行動黨 < people''s\-action\-party\-\(ruling\-party\-in\-singapore\);
+䚙 < a\-spoon\-for\-cooked\-rice\-made\-of\-horn\-of\-an\-animal;
+䌳 < a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䊺 < an\-implement\-to\-draw\-or\-to\-collect\-ropes\-or\-cords;
+䉃 < sliped\-open\-bamboo\-with\-the\-joints\-used\-as\-an\-oar;
+䉀 < rectangular\-chest\-or\-box\-woven\-from\-bamboo\-strips;
+䄋 < to\-pray\-for\-preventing\-or\-forestalling\-calamities;
+䃮 < a\-stone\-build\-hydraulic\-measures\-in\-ancient\-times;
+㾿 < roar\-of\-asthma\-or\-expectorate\-from\-a\-dying\-person;
+㻨 < ine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㺐 < generally\-called\-for\-minority\-groups\-in\-old\-china;
+㯂 < pillar\-or\-post\-of\-a\-frame\-on\-which\-silkworms\-spin;
+㟋 < deep\-and\-level\-ground\-gully\-at\-the\-foot\-of\-a\-hill;
+㞪 < the\-appearance\-of\-the\-mountain\-is\-flat\-and\-smooth;
+斜鉤 < \(downwards\-right\-concave\-hooked\-character\-stroke\);
+豎折 < \(downwards\-starting\-right\-angle\-character\-stroke\);
+老兄 < ''old\-chap''\-\(form\-of\-address\-between\-male\-friends\);
+約翰拉貝 < john\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+衅 < consecrate\-sacrificial\-vessels\-by\-smearing\-blood;
+虢 < name\-of\-ancient\-feudal\-state\-in\-shenxi\-and\-hunan;
+跑江湖 < to\-make\-a\-living\-as\-a\-travelling\-performer\,\-etc\.;
+交易額 < sum\-or\-volume\-or\-amount\-of\-business\-transactions;
+齉 < stoppage\-of\-the\-nose\-to\-speak\-with\-a\-nasal\-twang;
+橫筆 < bristles\-lying\-down\-\(brush\-movement\-in\-painting\);
+不敢越雷池一步 < dare\-not\-go\-one\-step\-beyond\-the\-prescribed\-limit;
+採購 < make\-purchases\-for\-an\-organization\-or\-enterprise;
+正在 < in\-the\-process\-of\-\(doing\-something\-or\-happening\);
+褯 < children''s\-garments\.\-a\-mat\-for\-wrapping\-garments;
+林豐正 < lin\-feng\-cheng\-\(taiwan\-minister\-of\-the\-interior\);
+報國 < dedicate\-oneself\-to\-the\-service\-of\-one''s\-country;
+董建華 < tung\-chee\-hwa\-\(hong\-kong\-leader\-after\-july\-1997\);
+筆觸 < brush\-stroke\-in\-chinese\-painting\-and\-calligraphy;
+不破不立 < without\-destruction\-there\-can\-be\-no\-construction;
+南京路 < nanjing\-st\.\,\-large\-commercial\-street\-in\-shanghai;
+梠 < a\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+摣 < a\-handful\.\-to\-pick\-up\-with\-the\-fingers\.\-to\-seize;
+堘 < a\-raised\-path\-between\-field\-which\-acts\-as\-a\-dyke;
+䶜 < the\-process\-to\-whiten\-the\-ivory\-or\-elephant\-tusk;
+䮉 < horses\-kept\-at\-a\-courier\-station\-in\-former\-times;
+䢵 < name\-of\-an\-old\-country\-in\-today''s\-hubei\-province;
+䡟 < a\-ring\-of\-the\-horizontal\-front\-bar\-on\-a\-carriage;
+䞛 < dancing\-of\-a\-eastern\-minority\-group\-in\-old\-china;
+䝌 < a\-pig\-seek\-for\-food\-through\-digging\-on\-the\-earth;
+䒁 < a\-small\-boat\-connected\-to\-the\-back\-of\-a\-big\-boat;
+䉋 < a\-variety\-of\-bamboo\-shoots\-that\-sprout\-in\-winter;
+䈔 < whistle\-made\-of\-reed\-without\-holes\-for\-fingering;
+㽙 < official\-in\-charge\-of\-farmlands\-in\-ancient\-times;
+㳎 < guide\-or\-lead\-to\-make\-the\-water\-flowing\-smoothly;
+㲪 < woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲨 < a\-decorative\-fine\-blanket\-on\-the\-top\-of\-a\-saddle;
+㧋 < to\-lengthen\-and\-extenuate\-\-\-\-as\-in\-making\-noodle;
+㠜 < young\-kids\-smart\-and\-familiar\-with\-human\-affairs;
+便人 < somebody\-who\-happens\-to\-be\-on\-hand\-for\-an\-errand;
+㙱 < earthenware\-used\-to\-bake\-cakes\-in\-northern\-china;
+謝辛 < chea\-sim\-\(cambodian\-national\-assembly\-president\);
+外電 < reports\-from\-foreign\-\(non\-chinese\)\-news\-agancies;
+喁 < the\-mouth\-of\-a\-fish\-at\-the\-surface\-of\-the\-water;
+揎 < to\-pull\-up\-the\-sleeves\-and\-stretch\-out\-the\-arms;
+箬 < the\-cuticle\-of\-the\-bamboo\-a\-broad\-leaved\-bamboo;
+罷了 < a\-modal\-particle\-indicating\-\(don''t\-mind\-it\,\-ok\);
+靜山 < cheng\-san\-\(electoral\-constituency\-in\-singapore\);
+八仙桌 < old\-fashioned\-square\-table\-to\-seat\-eight\-people;
+包產到戶 < fixing\-of\-farm\-output\-quotas\-for\-each\-household;
+軾 < horizontal\-wooden\-bar\-in\-front\-of\-a\-sedan\-chair;
+抓飯 < a\-kind\-of\-food\-popular\-among\-believers\-in\-islam;
+萆 < the\-castor\-oil\-plant\-also\-used\-for\-other\-plants;
+塞拉凡 < \(sonny\)\-seraphin\-\(haitian\-ambassador\-to\-taiwan\);
+金大中 < kim\-dae\-jung\-\(newly\-elected\-president\-of\-korea\);
+白描 < line\-drawing\-in\-traditional\-ink\-and\-brush\-style;
+簠 < an\-ancient\-vessel\-used\-for\-holding\-boiled\-grain;
+范斯坦 < \(dianne\)\-feinstein\-\(us\-senator\-from\-california\);
+駱駝祥子 < name\-of\-a\-novel\,\-luo\-tuo\-xiangzi\,\-by\-lao\-she\-老舍;
+䲰 < a\-second\-name\-for\-the\-pigeon\-or\-the\-turtle\-dove;
+耶穌基督末世聖徒教會 < the\-church\-of\-jesus\-christ\-of\-latter\-day\-saints;
+䝥 < to\-roar\-or\-howl\-frantic\-barks\-of\-dogs\-or\-wolves;
+䔤 < the\-lush\-and\-luxuriant\-of\-the\-grass\-and\-flowers;
+液態水 < liquid\-water\-\(as\-opposed\-to\-steam\-or\-ice\,\-e\.g\.\);
+㯮 < a\-kind\-of\-tree\-with\-big\-leaves\-and\-in\-red\-color;
+逼上樑山 < be\-driven\-to\-join\-the\-liangshan\-mountain\-rebels;
+㔍 < a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder;
+解放軍 < people''s\-liberation\-army\-\(ie\,\-the\-chinese\-army\);
+唐山 < tang\-shan\-\(a\-chinese\-city\-in\-hebei\-河北\-province\);
+常任理事國 < permanent\-member\-state\-\(of\-un\-security\-council\);
+璜 < a\-semicircular\-jade\-ornament\-used\-as\-a\-pendant;
+避嫌 < avoid\-doing\-anything\-that\-may\-arouse\-suspicion;
+趙紫陽 < zhao\-ziyang\-\(former\-chinese\-leadership\-figure\);
+報幕 < announce\-the\-items\-on\-a\-\(theatrical\)\-programme;
+諬 < to\-open\-to\-begin\-to\-explain\-to\-inform\-a\-letter;
+親家 < parents\-of\-one''s\-daughter\-in\-law\-or\-son\-in\-law;
+南轅北轍 < \(fig\.\)\-act\-in\-a\-way\-that\-defeats\-one''s\-purpose;
+猹 < wild\-animal\-mentioned\-in\-short\-story\-by\-lu\-xun;
+犼 < a\-fierce\-mongolian\-wolf\-dragon''s\-head\-on\-roofs;
+湓 < an\-affluent\-of\-the\-river\-yangtze\-near\-kiukiang;
+歚 < used\-in\-name\-of\-famous\-korean\-painter\-ceng\-sen;
+保外就醫 < \(of\-a\-prisoner\)\-released\-for\-medical\-treatment;
+喜糖 < sweet\-given\-on\-a\-happy\-occasion\-\(esp\.\-wedding\);
+拜壽 < congratulate\-an\-elderly\-person\-on\-his\-birthday;
+蒸蒸日上 < becoming\-more\-prosperous\-with\-each\-passing\-day;
+䶛 < to\-separate\-the\-meat\-from\-the\-bones\-with\-teeth;
+䳜 < a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䲍 < a\-perch\-like\-fish\-with\-white\-body\-and\-red\-tail;
+䩶 < saddle\-and\-rein\-etc\.\-for\-the\-imperial\-carriage;
+烏魯木齊 < urumqi\-\(capital\-of\-xinjiang\-autonomous\-region\);
+安土重遷 < hate\-to\-leave\-a\-place\-where\-one\-has\-lived\-long;
+䗽 < a\-small\-gadfly\-that\-suck\-blood\-of\-horse\-or\-cow;
+䉴 < a\-bamboo\-ware\-to\-collect\-and\-keep\-something\-in;
+䉅 < small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䄦 < to\-put\-forth\-ears\-and\-to\-blossom\-of\-the\-grains;
+政府機關開放系統互連總則 < government\-open\-system\-interconnection\-profile;
+㽩 < connected\-banks\-of\-earth\-or\-paths\-in\-the\-field;
+並行 < in\-parallel\-\[development\,\-implementation\,\-etc\];
+㹃 < two\-brindled\-cows\-to\-plough\-face\-to\-each\-other;
+伯杰 < \(samuel\)\-berger\-\(us\-national\-security\-advisor\);
+㶟 < an\-ancient\-neme\-of\-a\-river\-in\-shanxi\-and\-hebei;
+東盟 < asean\-\(association\-of\-southeast\-asian\-nations\);
+㲈 < the\-name\-of\-the\-music\-of\-the\-legendary\-emperor;
+㬐 < a\-state\-during\-the\-period\-of\-spring\-and\-autumn;
+㡛 < name\-for\-a\-workman\-who\-apply\-color\-in\-painting;
+工商銀行 < industrial\-and\-commercial\-bank\-of\-china\-\(icbc\);
+㟢 < the\-rocks\-on\-the\-hills\-are\-of\-different\-shapes;
+㜼 < children\-of\-one''s\-brother\-\-\-\-nephews\-or\-nieces;
+曾經 < \(refers\-to\-something\-that\-happened\-previously\);
+㔽 < a\-kind\-of\-wine\-pot\-or\-jar\-used\-in\-ancient\-time;
+㓃 < to\-sacrifice\-by\-pouring\-out\-a\-libation\-of\-wine;
+㑞 < a\-maid\-who\-accompanies\-a\-bride\-to\-her\-new\-home;
+可見 < it\-can\-clearly\-be\-seen\-\(that\-this\-is\-the\-case\);
+事與願違 < things\-don''t\-turn\-out\-the\-way\-you\-want\-or\-plan;
+慰問 < express\-sympathy\,\-greetings\,\-consolation\,\-etc\.;
+海德 < hyde\-\(eg\,\-house\-judiciary\-chairman\-henry\-hyde\);
+張燈結綵 < be\-decorated\-with\-lanterns\-and\-colored\-banners;
+閉門思過 < shut\-oneself\-up\-and\-ponder\-over\-one''s\-mistakes;
+羅斯 < roth\-\(eg\,\-hrw\-executive\-director\-kenneth\-roth\);
+閉關自守 < close\-the\-country\-to\-international\-intercourse;
+旁聽 < be\-a\-visitor\-\(at\-a\-meeting\,\-class\,\-trial\,\-etc\);
+互通性 < interoperability\-\(of\-communications\-equipment\);
+畲 < to\-cultivate\-land\-by\-first\-setting\-fire\-to\-it;
+篚 < round\-or\-oval\-covered\-baskets\-with\-short\-legs;
+推辭 < to\-decline\-\(an\-appointment\,\-invitation\,\-etc\.\);
+不避艱險 < shrink\-or\-flinch\-from\-no\-difficulty\-or\-danger;
+白痢 < dysentery\-characterized\-by\-white\-mucous\-stool;
+華佗 < name\-of\-a\-famous\-doctor\-in\-old\-times\,\-hua\-tuo;
+粔 < cakes\-made\-from\-rice\-flour\-twisted\-into\-rings;
+戤 < to\-infringe\-a\-trade\-mark\-to\-pledge\-an\-article;
+阿旺曲沛 < ngawang\-choepel\-\(tibetan\,\-fullbright\-scholar\);
+棒槌 < wooden\-club\-\(used\-to\-beat\-clothes\-in\-washing\);
+全斗煥 < chun\-doo\-hwan\-\(former\-south\-korean\-president\);
+乤 < first\-character\-of\-korean\-place\-name\-''halpho'';
+䶨 < in\-the\-manner\-a\-toothless\-person\-chewing\-food;
+䮛 < extra\-horse\-harnessed\-by\-the\-side\-of\-the\-team;
+䣠 < name\-of\-a\-village\-in\-today''s\-sichuan\-province;
+䣟 < name\-of\-pavilion\-in\-today''s\-shandong\-province;
+䠒 < courtesy\-of\-a\-minority\-group\-in\-ancient\-times;
+䝰 < to\-store\-or\-to\-accumulate\-riches\-or\-valuables;
+䜱 < name\-of\-a\-pavilion\-in\-today''s\-shanxi\-province;
+䓝 < chinese\-pennisetum\)\-pennisetum\-alopecuroides\);
+䋉 < a\-numerary\-adjunct\-for\-practically\-everything;
+䊣 < light\-yellow\-dust\-like\-fungoid\-growth\-on\-wine;
+䇒 < numerary\-adjunct\-for\-periodic\-terms\-or\-events;
+㿗 < disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㾫 < hemiplegia\-\-\-\-paralysis\-of\-half\-of\-one''s\-body;
+㻞 < flourishing\-and\-radiant\-of\-the\-colorful\-jades;
+㹱 < name\-of\-a\-dog\-in\-the\-period\-of\-warring\-states;
+㲥 < a\-kind\-of\-woolen\-textiles\-with\-curved\-pattern;
+㭹 < name\-of\-a\-county\-in\-today''s\-shandong\-province;
+㣯 < the\-dresses\-toss\-and\-flying\-about\-in\-the\-wind;
+㢯 < bows\-used\-by\-the\-son\-of\-heaven\-\-\-\-the\-emperor;
+㡊 < a\-kind\-of\-cap\-worn\-by\-an\-officer\-in\-old\-china;
+人民大會堂 < great\-hall\-of\-the\-people\,\-at\-tiananmen\-square;
+㙫 < a\-fountain\-or\-spring\-out\-from\-the\-underground;
+㙍 < name\-of\-a\-place\-in\-today''s\-guangdong\-province;
+探路者 < pathfinder\-\(space\-craft\-sent\-to\-mars\-by\-nasa\);
+畫蛇添足 < ruin\-the\-effect\-by\-adding\-what\-is\-superfluous;
+崔亞琳 < charles\-yah\-lin\-trie\-\(arkansas\-restauranteur\);
+北大西洋公約組織 < the\-north\-atlantic\-treaty\-organization\-\(nato\);
+專案組 < special\-\(legal\|judicial\)\-investigations\-group;
+仗義執言 < speak\-out\-on\-a\-matter\-of\-principle\-or\-justice;
+兵臨城下 < the\-attacking\-army\-has\-reached\-the\-city\-gates;
+吞吐 < to\-take\-in\-and\-send\-out\-\(in\-large\-quantities\);
+钧 < unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+妲 < concubine\-of\-last\-ruler\-of\-the\-shang\-dynasty;
+瓴 < concave\-channels\-of\-tiling\-a\-long\-necked\-jar;
+媵 < a\-maid\-who\-accompanies\-bride\-to\-her\-new\-home;
+胙 < meat\-offered\-in\-sacrifice\-to\-one''s\-ancestors;
+蟊 < a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+斷橋 < the\-broken\-bridge\-\(at\-west\-lake\-in\-hangzhou\);
+失敗是成功之母 < \"failure\-is\-the\-mother\-of\-success\"\-\(proverb\);
+氣功 < qigong\,\-a\-system\-of\-deep\-breathing\-exercises;
+省級 < provincial\-level\-\(eg\,\-provincial\-government\);
+武打 < acrobatic\-fighting\-in\-chinese\-opera\-or\-dance;
+橋本龍太郎 < hashimoto\,\-ryutaro\-\(prime\-minister\-of\-japan\);
+騲 < the\-female\-of\-certain\-animals\-such\-as\-horses;
+報失 < report\-the\-loss\-to\-the\-authorities\-concerned;
+保養 < take\-good\-care\-of\-\(or\-conserve\)\-one''s\-health;
+平信 < ordinary\-mail\-\(as\-opposed\-to\-air\-mail\,\-etc\.\);
+分享 < obtain\-one''s\-share\-\(of\-wealth\,\-rights\,\-etc\.\);
+紅堡 < red\-fort\-\(historic\-building\-in\-delhi\,\-india\);
+珓 < two\-hemispherical\-objects\-used\-in\-divination;
+元宵 < sweet\-dumplings\-made\-of\-glutinous\-rice\-flour;
+背城借一 < make\-a\-last\-ditch\-stand\-before\-the\-city\-wall;
+敧 < to\-pick\-up\-thing\-with\-chopsticks\-or\-pincers\.;
+扄 < large\-ring\-on\-a\-front\-door\-used\-as\-a\-knocker;
+嫏 < the\-place\-where\-the\-supreme\-stores\-his\-books;
+臨寫 < to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\);
+月餅 < moon\-cake\-\(esp\.\-for\-the\-mid\-autumn\-festival\);
+百感交集 < all\-sorts\-of\-feelings\-well\-up\-in\-one''s\-heart;
+䱁 < a\-kind\-of\-medium\-sized\-fish\-grown\-in\-the\-sea;
+䰏 < sparse\-hair\-on\-a\-knot\-on\-the\-top\-of\-the\-head;
+䮆 < a\-horse\-with\-mixed\-color\-of\-yellow\-and\-white;
+䩛 < leather\-belt\-used\-to\-bind\-or\-restrain\-a\-cart;
+抄家 < to\-search\-a\-house\-and\-confiscate\-possessions;
+䦹 < name\-of\-a\-county\-in\-today''s\-sichuan\-province;
+䣔 < name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䣑 < living\-space\-for\-one\-family\-in\-ancient\-times;
+䣄 < name\-of\-a\-place\-in\-today''s\-shandong\-province;
+䢹 < name\-of\-a\-pavilion\-in\-today''s\-hunan\-province;
+䢪 < a\-sledge\-for\-transportation\-over\-mud\-or\-snow;
+䟆 < to\-keep\-persons\-off\-the\-route\-of\-the\-emperor;
+會見 < to\-meet\-with\-\(someone\-who\-is\-paying\-a\-visit\);
+䈐 < an\-arched\-frame\-made\-of\-bamboo\-of\-wood\-board;
+䅿 < luxuriant\-or\-exuberant\-of\-the\-grains\-flowery;
+䃈 < mountain\-rocks\-a\-black\-stone\-resembling\-jade;
+䂬 < big\-rocks\-on\-the\-riverside\-an\-arched\-opening;
+䁝 < deluding\-and\-causing\-disorder\-lights\-shining;
+㽟 < to\-till\-or\-to\-plough\-the\-fields\-an\-enclosure;
+㮄 < publicly\-posted\-roll\-of\-successful\-examinees;
+㭸 < the\-branches\-to\-spread\-out\-in\-all\-directions;
+㩉 < to\-take\-a\-rubbing\-of\-an\-inscription\-on\-stone;
+㣁 < to\-equipt\-a\-bow\-with\-silk\-and\-muscular\-fibre;
+㝙 < the\-third\-of\-the\-twelve\-terrestrial\-branches;
+長沙灣 < cheung\-sha\-wan\-\(poultry\-market\-in\-hong\-kong\);
+奧爾布賴特 < \(madeleine\)\-albright\-\(us\-secretary\-of\-state\);
+正常化 < normalization\-\(of\-diplomatic\-relations\,\-etc\);
+兵不厭詐 < there\-can\-never\-be\-too\-much\-deception\-in\-war;
+五六十歲 < \(in\-one''s\)\-fifties\-or\-sixties\-\(years\-of\-age\);
+避重就輕 < avoid\-the\-important\-and\-dwell\-on\-the\-trivial;
+大舉 < carry\-out\-a\-large\-scale\-\(military\)\-operation;
+日漸 < \(keep\-increasing\,\-changing\,\-etc\.\)\-day\-by\-day;
+標新立異 < start\-something\-new\-in\-order\-to\-be\-different;
+議席 < seat\-in\-a\-parliament\-or\-legislative\-assembly;
+乎 < interrogative\-or\-exclamatory\-final\-particle;
+澄 < purify\-water\-by\-allowing\-sediment\-to\-settle;
+歟 < a\-final\-particle\-used\-to\-express\-admiration;
+梢 < pointed\-tip\-of\-something\-long\-like\-a\-branch;
+哒 < a\-sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+琮 < octagonal\-piece\-of\-jade\-with\-hole\-in\-middle;
+唼 < speaking\-evil\.\-gobbling\-sound\-made\-by\-ducks;
+大功告成 < successfully\-accomplished\-\(project\-or\-goal\);
+通緝 < wanted\-by\-the\-police\-\(fugitive\-or\-criminal\);
+真納 < \(mohammad\-ali\)\-jinnah\-\(founder\-of\-pakistan\);
+謝裡夫 < \(nawaz\)\-sharif\-\(prime\-minister\-of\-pakistan\);
+魯賓 < rubin\-\(eg\,\-treasury\-secretary\-robert\-rubin\);
+力寶 < lippo\-\(group\)\-\(indonesian\-business\-concern\);
+吳作棟 < goh\-chok\-tong\-\(prime\-minister\-of\-singapore\);
+無所用心 < eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+側鋒 < oblique\-attack\-\(brush\-movement\-in\-painting\);
+邴 < name\-of\-a\-city\-in\-the\-ancient\-state\-of\-song;
+班門弄斧 < display\-one''s\-slight\-skill\-before\-an\-expert;
+中國日報 < china\-daily\-\(an\-english\-language\-newspaper\);
+崇禎 < chongzhen\,\-last\-emperor\-of\-the\-ming\-dynasty;
+白字 < wrongly\-written\-and\-mispronounced\-character;
+不可終日 < be\-unable\-to\-carry\-on\-even\-for\-a\-single\-day;
+寄予很大期望 < to\-place\-great\-hope\-or\-expectation\-on\-\(sth\);
+工人黨 < workers''\-party\-\(singapore\-opposition\-party\);
+對策 < countermeasure\-for\-dealing\-with\-a\-situation;
+䶘 < the\-sound\-of\-chewing\-something\-dry\-and\-hard;
+䮲 < horse\-with\-mixed\-colors\-of\-yellow\-and\-white;
+䦼 < to\-dig\-a\-passage\-through\-a\-mountain\-or\-hill;
+䥑 < a\-kind\-of\-decoration\-on\-the\-head\-of\-a\-horse;
+䣯 < wine\-or\-any\-thick\-fluid\-of\-the\-best\-quality;
+䣚 < name\-of\-a\-village\-in\-today''s\-henan\-province;
+䣙 < name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䢺 < name\-of\-a\-place\-in\-today''s\-sichuan\-province;
+䡿 < frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䜯 < name\-of\-a\-valley\-in\-today''s\-shanxi\-province;
+䘿 < shirt\-or\-a\-jacket\-without\-any\-decorated\-hem;
+䖂 < an\-edib\-le\-water\-plant\-\-\-\-brasenia\-purpurca;
+䏮 < the\-sides\-of\-the\-trunk\-from\-armpits\-to\-ribs;
+䅍 < straight\-upward\-of\-the\-wheat\-and\-rice\-plant;
+䂸 < to\-smash\-or\-to\-knock\-to\-pieces\-of\-the\-stone;
+筆力 < vigour\-of\-strokes\-in\-calligraphy\-or\-drawing;
+罰酒 < to\-drink\-as\-the\-result\-of\-having\-lost\-a\-bet;
+㾼 < to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㽫 < seeds\-of\-the\-plant\-allied\-to\-the\-water\-lily;
+㸷 < a\-kind\-of\-cattle\-with\-two\-horns\-straight\-up;
+㶬 < bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶆 < name\-of\-a\-stream\-in\-hebei\-province\-hengshan;
+斯佩林 < spelling\-\(eg\,\-spelling\-entertainment\-group\);
+㮫 < a\-wooden\-artical\-to\-be\-used\-to\-adjust\-a\-bow;
+㫍 < the\-scallops\-along\-the\-lower\-edge\-of\-a\-flag;
+㧏 < to\-carry\-on\-the\-shouldersof\-two\-or\-more\-men;
+星體 < celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+㛶 < do\-not\-care\-about\-appearance\-and\-deportment;
+㚔 < instrument\-of\-torture\-used\-in\-ancient\-times;
+㙇 < the\-cattle\-and\-horses\-trampled\-on\-the\-field;
+主管 < \(be\)\-person\-in\-charge\-of\-\(a\-position\,\-etc\.\);
+單槍匹馬 < single\-handed\-\(lit\:\-single\-spear\-one\-horse\);
+盧泰愚 < roh\-tae\-woo\-\(former\-south\-korean\-president\);
+步韻 < to\-write\-a\-poem\-using\-another\-poem''s\-rhymes;
+口氣 < \(friendly\-or\-unfriendly\)\-tone\-\(of\-comments\);
+正鋒 < frontal\-attack\-\(brush\-movement\-in\-painting\);
+齊白石 < name\-of\-a\-famous\-chinese\-artist\,\-qi\-bai\-shi;
+下來 < \(verb\-suffix\-indicating\-continuation\,\-etc\.\);
+幹部 < a\-cadre\-\(ie\,\-manager\,\-staff\,\-officer\,\-etc\.\);
+娅 < mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+商務部 < commerce\-department\-\(of\-the\-us\-government\);
+名副其實 < not\-just\-in\-name\-only\,\-but\-also\-in\-reality;
+不當一回事 < not\-regard\-as\-a\-matter\-\(of\-any\-importance\);
+老伴兒 < \(of\-an\-old\-married\-couple\)\-husband\-or\-wife;
+不打不相識 < from\-an\-exchange\-of\-blows\-friendship\-grows;
+巴爾舍夫斯基 < \(charlene\)\-barshefsky\,\-us\-trade\-negotiator;
+鮠 < a\-kind\-of\-shad\-with\-a\-head\-like\-a\-sturgeon;
+接納 < admit\-\(into\-membership\-of\-an\-organization\);
+喜新厭舊 < literal\:\-to\-like\-the\-new\,\-and\-hate\-the\-old;
+把風 < keep\-watch\-\(during\-a\-clandestine\-activity\);
+備耕 < make\-preparations\-for\-ploughing\-and\-sowing;
+撥冗 < find\-time\-in\-the\-midst\-of\-pressing\-affairs;
+胑 < the\-limbs\.\-wings\-of\-birds\.\-legs\-of\-animals;
+筭 < an\-ancient\-device\-for\-working\-with\-numbers;
+梆子腔 < a\-general\-term\-for\-local\-operas\-in\-shangxi;
+滝 < onomatopoeic\-for\-the\-sound\-of\-falling\-rain;
+栽贓 < to\-frame\-someone\-\(by\-planting\-sth\-on\-them\);
+換取 < give\-something\-and\-get\-something\-in\-return;
+拍案叫絕 < lit\.\:\-slap\-the\-table\-and\-shout\-with\-praise;
+偽書 < \(forged\,\-dubious\,\-misclassified\)\-old\-books;
+梅蘭芳 < name\-of\-a\-very\-famous\-beijing\-opera\-artist;
+簿冊 < books\-for\-taking\-notes\-or\-keeping\-accounts;
+䳵 < a\-kind\-of\-water\-bird\-with\-colorful\-feather;
+䳛 < a\-small\-brown\-speckled\-bird\-like\-the\-quail;
+䩑 < horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䦓 < to\-wait\-for\-something\-tohappen\-immediately;
+䣤 < name\-of\-village\-in\-today''s\-shanxi\-province;
+䣝 < name\-of\-a\-place\-in\-today''s\-shanxi\-province;
+䣂 < name\-of\-a\-county\-in\-today''s\-hunan\-province;
+䡩 < sound\-of\-carts\-or\-stones\-knocking\-together;
+䠀 < to\-sit\-cross\-legged\-like\-a\-buddhist\-priest;
+䜫 < name\-of\-a\-valley\-in\-today''s\-hobei\-province;
+䜚 < to\-speak\-recklessly\-or\-without\-forethought;
+䓥 < sound\-of\-the\-wriggled\-insects\-on\-the\-grass;
+䐄 < the\-unsatisfaction\-of\-hunger\-requires\-meat;
+䍴 < to\-squeeze\-and\-to\-crowd\-against\-each\-other;
+䍆 < container\-for\-grains\-used\-in\-ancient\-times;
+上車 < to\-get\-on\-or\-into\-\(a\-bus\,\-train\,\-car\-etc\.\);
+䇯 < a\-kind\-of\-bamboo\-with\-patterns\-on\-the\-head;
+行政院 < executive\-yuan\-\(government\-body\-in\-taiwan\);
+㼱 < to\-manage\-or\-regulate\-the\-leather\-material;
+㯊 < even\-measuring\-board\-for\-pecks\-and\-bushels;
+筆下 < the\-wording\-and\-purport\-of\-what\-one\-writes;
+便函 < an\-informal\-letter\-sent\-by\-an\-organization;
+㨐 < to\-slap\-lightly\-on\-the\-clothes\-or\-coverlet;
+㢥 < a\-big\-piece\-of\-log\-to\-join\-the\-thick\-ropes;
+首席 < chief\-\(representative\,\-correspondent\,\-etc\);
+贅婿 < son\-in\-law\-living\-at\-wife''s\-parent''s\-house;
+杰佛茲 < \(james\)\-jeffords\-\(us\-senator\-from\-vermont\);
+處於 < be\-\(in\-some\-state\,\-position\,\-or\-condition\);
+風土人情 < local\-conditions\-\(human\-and\-environmental\);
+阿拉塔斯 < \(ali\)\-alatas\-\(indonesian\-foreign\-minister\);
+羅布泊 < lop\-nor\-\(nuclear\-testing\-site\-in\-xinjiang\);
+民進黨 < dpp\-\(democratic\-progressive\-party\,\-taiwan\);
+敗筆 < a\-faulty\-stroke\-in\-calligraphy\-or\-painting;
+珈 < an\-ornament\-attached\-to\-a\-woman''s\-hairpin;
+蜃 < marine\-monster\-which\-can\-change\-its\-shape;
+斛 < dry\-measure\-equal\-to\-some\-five\-or\-ten\-dou;
+鄯 < district\-in\-gansu\-during\-the\-tang\-dynasty;
+庹 < the\-length\-of\-one''s\-two\-outstretched\-arms;
+揲 < to\-sort\-out\-the\-stalks\-used\-in\-divination;
+出路 < a\-way\-out\-\(of\-a\-difficult\-situation\,\-etc\);
+約定資訊速率 < committed\-inforrmation\-rate\-\(frame\-relay\);
+白花蛇 < long\-nosed\-pit\-viper\-\(agkistrodon\-acutus\);
+中共中央 < chinese\-communist\-party\-central\-committee;
+博聞強記 < have\-wide\-learning\-and\-a\-retentive\-memory;
+度日 < scratch\-out\-a\-difficult\,\-meager\-existence;
+眾議員 < member\-of\-the\-us\-house\-of\-representatives;
+韍 < a\-leather\-knee\-pad\-worn\-during\-sacrifices;
+報案 < report\-a\-case\-to\-the\-security\-authorities;
+鏞 < a\-large\-bell\-used\-as\-a\-musical\-instrument;
+軎 < a\-brass\-parts\-for\-a\-cart\-in\-ancient\-china;
+兵源 < manpower\-resources\-\(for\-military\-service\);
+虋 < asparagus\-a\-variety\-of\-red\-stalked\-millet;
+百年大計 < a\-project\-of\-vital\-and\-lasting\-importance;
+邁科裡 < \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+拔苗助長 < spoil\-things\-through\-excessive\-enthusiasm;
+報告會 < public\-lecture\-\(with\-guest\-speakers\,\-etc\);
+利伯曼 < \(connecticut\-senator\-joseph\-i\.\)\-lieberman;
+肯普索恩 < \(dirk\)\-kempthorne\-\(us\-senator\-from\-idaho\);
+廞 < to\-prepare\-horses\-and\-chariots\-for\-battle;
+婗 < a\-new\-born\-child\-the\-whimper\-of\-an\-infant;
+妺 < wife\-of\-the\-last\-ruler\-of\-the\-xia\-dynasty;
+噠 < sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+外孫女兒 < granddaughter\-\(daughter\-of\-one''s\-daugher\);
+有電 < \(of\-a\-dwelling\)\-supplied\-with\-electricity;
+百折不撓 < keep\-on\-fighting\-in\-spite\-of\-all\-setbacks;
+神女峰 < name\-of\-a\-peak\-by\-changjiang\-three\-gorges;
+丂 < obstruction\-of\-breath\-as\-it\-seeks\-release;
+賁臨 < \(of\-distinguished\-guests\)\-honour\-my\-house;
+䰿 < a\-kind\-of\-small\-fish\-grown\-in\-fresh\-water;
+安身立命 < settle\-down\-and\-get\-on\-with\-one''s\-pursuit;
+䢿 < name\-of\-a\-place\-in\-today''s\-hobei\-province;
+䡈 < the\-cross\-bar\-at\-the\-sides\-of\-a\-carritage;
+䔉 < scattered\-or\-dispersed\-of\-grass\-and\-trees;
+䑒 < a\-kind\-of\-farm\-tool\-used\-in\-ancient\-times;
+䐣 < soup\-made\-of\-cutted\-meat\-mixed\-with\-blood;
+䌮 < silk\-fabrics\-with\-the\-color\-of\-new\-leaves;
+䄨 < grains\-producing\-neither\-flower\-nor\-fruit;
+䄝 < show\-no\-respect\-to\-the\-service\-of\-worship;
+㼭 < to\-steady\-by\-putting\-something\-underneath;
+㻲 < a\-rite\-or\-service\-for\-beginning\-of\-autumn;
+逆向擁塞通知 < backward\-explicit\-congestion\-notification;
+經營管理和維護 < operations\-administration\-and\-maintenance;
+㪪 < to\-use\-a\-wooden\-pole\-to\-support\-something;
+㢦 < wooden\-post\-or\-pile\-for\-tethering\-animals;
+㜢 < a\-bad\-term\-by\-which\-one\-addresses\-a\-woman;
+㚒 < concealed\-the\-stolen\-goods\-in\-one''s\-dress;
+白曉燕 < pai\-hsiao\-yen\-\(daughter\-of\-pai\-ping\-ping\);
+不經一事不長一智 < you\-can''t\-gain\-knowledge\-without\-practice;
+松下 < matsushita\-\(japanese\-electronics\-company\);
+不妙 < \(of\-a\-turn\-of\-events\)\-not\-too\-encouraging;
+踣 < to\-stumble\-and\-fall\-prone\-stiff\-in\-death;
+黼 < embroidered\-official\-or\-sacrificial\-robe;
+峄 < a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+勉強 < manage\-\(to\-do\-something\)\-with\-difficulty;
+別無 < have\-no\-other\-\(choice\,\-alternative\,\-etc\);
+不可一世 < consider\-oneself\-unexcelled\-in\-the\-world;
+金日成 < kim\-il\-sung\-\(former\-north\-korean\-leader\);
+公約 < convention\-\(ie\,\-international\-agreement\);
+闗 < a\-frontier\-pass\-or\-gate\-to\-shut\-or\-close;
+邾 < a\-feudal\-state\-which\-existed\-b\.c\.700\-469;
+太極劍 < a\-kind\-of\-traditional\-chinese\-sword\-play;
+年度 < year\-\(eg\,\-school\-year\,\-fiscal\-year\,\-etc\);
+絕對數字 < absolute\-\(as\-opposed\-to\-relative\)\-number;
+薩 < transliteration\-of\-''sat''\-in\-''bodhisattva;
+筆順 < order\-of\-strokes\-observed\-in\-calligraphy;
+膰 < to\-cook\-meat\-for\-a\-sacrifice\-or\-offering;
+扎針 < to\-give\-or\-have\-an\-acupuncture\-treatment;
+司法部 < justice\-deparment\-\(of\-the\-us\-government\);
+瑌 < a\-white\-opaque\-quartz\-used\-for\-ornaments;
+潟 < land\-impregnated\-with\-salt\-from\-the\-tide;
+製劑 < \(chemical\-or\-pharmaceutical\)\-preparation;
+體會 < know\-\(through\-learning\-or\-by\-experience\);
+偽托 < faking\-a\-modern\-object\-as\-an\-ancient\-one;
+庫納南 < \(andrew\)\-cunanan\-\(alleged\-serial\-killer\);
+海關 < customs\-\(ie\,\-border\-crossing\-inspection\);
+抱頭鼠竄 < cover\-the\-head\-and\-sneak\-away\-like\-a\-rat;
+黃建南 < john\-huang\-\(democratic\-party\-fundraiser\);
+䵞 < ancient\-punishment\-of\-tattooing\-the\-face;
+䱹 < a\-condiment\-made\-from\-minced\-fish\-salted;
+䯰 < use\-a\-hair\-pin\-to\-set\-and\-dress\-the\-hair;
+䬯 < to\-have\-congee\-with\-friends\-in\-old\-times;
+䡋 < decoration\-on\-the\-nave\-or\-hub\-of\-a\-wheel;
+䞃 < to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䘯 < the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䘤 < a\-sword\-covering\-to\-protect\-the\-scabbard;
+䑌 < lwhat\-is\-left\-over\-of\-the\-food\-\-overripe;
+䋧 < ornamennts\-for\-the\-frontal\-part\-of\-shoes;
+䋣 < decorations\-put\-on\-the\-mane\-or\-horsehair;
+䈕 < the\-metal\-tongue\-in\-the\-reed\-instruments;
+䃴 < a\-whetstone\-used\-to\-grind\-precious\-stone;
+䁼 < to\-look\-but\-see\-nothing\-\-\-\-absent\-minded;
+㿆 < damage\-by\-the\-pests\-to\-the\-rice\-seedling;
+㻶 < a\-jade\-tube\-with\-white\-and\-nature\-colors;
+㻰 < decorated\-jade\-or\-ornament\-on\-a\-scabbard;
+㻡 < a\-jade\-ring\-with\-a\-small\-segment\-cut\-off;
+㮆 < eaves\-sprouting\-from\-the\-stump\-of\-a\-tree;
+㫔 < one\-of\-the\-eight\-diagrams\-for\-divination;
+㪻 < a\-kind\-of\-utensil\-used\-to\-ladle\-out\-wine;
+㩊 < to\-pull\-up\-the\-sleeves\-and\-show\-the\-arms;
+㧭 < to\-get\-something\-with\-both\-raising\-hands;
+㧚 < the\-gesture\-of\-using\-an\-indented\-contain;
+㧆 < to\-cover\-something\-with\-a\-piece\-of\-cloth;
+百廢俱興 < all\-neglected\-tasks\-are\-being\-undertaken;
+㡋 < a\-kind\-of\-headdress\-for\-man\-in\-old\-china;
+㠸 < the\-lapel\-or\-collor\-of\-a\-garment\-or\-robe;
+㜚 < a\-local\-government\-post\-in\-ancient\-times;
+㙟 < low\-lying\-on\-the\-side\-of\-a\-river\-or\-lake;
+避實就虛 < stay\-clear\-of\-the\-enemy''s\-main\-force\-and;
+不求甚解 < not\-seek\-to\-understand\-things\-thoroughly;
+碑記 < a\-record\-of\-events\-inscribed\-on\-a\-tablet;
+中央全會 < plenary\-session\-of\-the\-central\-committee;
+包辦 < take\-care\-of\-everything\-concerning\-a\-job;
+古杰拉爾 < \(i\.\-k\.\)\-gujral\-\(prime\-minister\-of\-india\);
+黃岩島 < huangyan\-island\-\(in\-the\-south\-china\-sea\);
+機關報 < official\-\(government\-operated\)\-newspaper;
+前向擁塞通知 < forward\-explicit\-congestion\-notification;
+出面 < act\-in\-a\-\(official\-or\-personal\)\-capacity;
+喏 < respectful\-reply\-of\-assent\-to\-superiors;
+笏 < tablet\-held\-by\-someone\-having\-authority;
+趼 < callous\-skin\-on\-hands\-or\-feet\.\-blisters;
+相隔 < be\-separated\-by\-\(distance\-or\-time\,\-etc\);
+美國廣播公司 < abc\-\(american\-broadcasting\-corporation\);
+時報 < \"times\"\-\(newspaper\,\-eg\,\-new\-york\-times\);
+通航 < connected\-by\-air\|sea\-traffic\-or\-service;
+核武器研製計劃 < nuclear\-weapons\-\(manufacturing\)\-program;
+冷淡關係 < cold\-relations\-\(e\.g\.\-between\-countries\);
+不了了之 < settle\-a\-matter\-by\-leaving\-it\-unsettled;
+遷居 < to\-move\-\(from\-one\-residence\-to\-another\);
+饝 < to\-feed\-an\-infant\-by\-hand\-steamed\-bread;
+不即不離 < be\-neither\-too\-familiar\-nor\-too\-distant;
+總政治部 < \(military\)\-general\-political\-department;
+哈裡森史密特 < harrison\-schmitt\-\(apollo\-1\-7\-astronaut\);
+入學率 < percentage\-of\-children\-who\-enter\-school;
+裍 < a\-border\-or\-band\-on\-the\-edge\-of\-a\-dress;
+年代 < a\-decade\-of\-a\-century\-\(eg\,\-the\-sixties\);
+畢其功于一役 < accomplish\-the\-whole\-task\-at\-one\-stroke;
+半路出家 < switch\-to\-a\-job\-one\-was\-not\-trained\-for;
+籪 < a\-weir\-of\-bamboo\-to\-catch\-fish\-or\-crabs;
+瘲 < spasms\-or\-convulsions\-in\-young\-children;
+瑲 < tinkling\-sound\-tinkling\-of\-pendant\-gems;
+病毒學家 < virologist\-\(person\-who\-studies\-viruses\);
+建立正式外交關係 < formally\-establish\-diplomatic\-relations;
+茅臺酒 < maotai\-or\-maitai\-\(chinese\-strong\-drink\);
+結社自由 < \(constitutional\)\-freedom\-of\-association;
+弝 < the\-part\-of\-a\-bow\-grasped\-when\-shooting;
+喬石 < qiao\-shi\-\(chinese\-leadership\-contender\);
+豎鉤 < \(straight\-down\-hooked\-character\-stroke\);
+䥜 < protective\-metal\-on\-the\-axis\-of\-a\-wheel;
+成本 < \(manufacturing\,\-production\,\-etc\.\)\-costs;
+䙖 < a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+王羲之 < name\-of\-a\-person\,\-a\-famous\-calligrapher;
+䏫 < in\-between\-of\-the\-abdomen\-and\-the\-spine;
+䍉 < traces\-or\-marks\-of\-incomplete\-or\-damage;
+䌸 < fine\-silk\-fabric\-of\-bright\-white\-colour;
+邊角科 < leftover\-bits\-and\-pieces\-\(of\-industrial;
+䋿 < a\-decorative\-knot\-made\-of\-colorful\-silk;
+䈜 < a\-thread\-used\-by\-carpenters\-for\-marking;
+䈆 < a\-shallow\-and\-long\-shaped\-bamboo\-basket;
+代理 < acting\-\(temporarily\-filling\-a\-position\);
+㿹 < jutting\-on\-the\-epidermis\-or\-the\-cuticle;
+㼫 < earthenware\-or\-pottery\-with\-big\-opening;
+㵻 < to\-perspire\-from\-embarrassment\-or\-shame;
+蔓延全國 < to\-spread\-throughout\-the\-entire\-country;
+㭩 < a\-kind\-of\-tree\-can\-be\-used\-as\-dye\-stuff;
+㣙 < to\-walk\-in\-an\-easy\-and\-leisurely\-manner;
+㢪 < to\-draw\-a\-full\-bow\-to\-aim\-at\-the\-target;
+客廳 < drawing\-room\-\(room\-for\-arriving\-guests\);
+㘊 < the\-abrupt\-and\-hasty\-sound\-of\-the\-crowd;
+㖮 < an\-interjection\-used\-in\-poems\-and\-songs;
+㔮 < a\-kind\-of\-animal\-which\-looks\-like\-a\-rat;
+蓮霧 < wax\-apple\-\(a\-reddish\-pear\-shaped\-fruit\);
+題簽 < to\-write\-the\-title\-of\-a\-book\-on\-a\-label;
+百思不解 < remain\-puzzled\-after\-pondering\-over\-sth;
+半勞動力 < one\-able\-to\-do\-light\-manual\-labour\-only;
+總後勤部 < \(military\)\-general\-logistics\-department;
+一國兩制 < one\-country\,\-two\-systems\-\(china\-taiwan\);
+擺事實講道理 < present\-the\-facts\-and\-reason\-things\-out;
+老二 < the\-second\-child\-or\-brother\-\(or\-sister\);
+中南 < \(abbreviation\-for\)\-china\-\-\-south\-africa;
+阿昌族 < the\-achang\-nationality\-living\-in\-yunnan;
+版次 < the\-order\-in\-which\-editions\-are\-printed;
+啧 < interjection\-of\-approval\-or\-admiration;
+捺 < to\-press\-down\-heavily\-with\-the\-fingers;
+傣 < the\-dai\-minority\-living\-in\-south\-china;
+鸩 < a\-bird\-resembling\-the\-secretary\-falcon;
+淝 < name\-of\-an\-affluent\-of\-the\-poyang\-lake;
+郅 < to\-go\-up\-to\.\-flourishing\-a\-superlative;
+轫 < a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+嶷 < a\-range\-of\-mountains\-in\-hunan\-province;
+鬲 < type\-of\-caldron\-with\-three\-hollow\-legs;
+刖 < cutting\-off\-feet\-as\-form\-of\-punishment;
+穸 < the\-gloom\-of\-the\-grave\-a\-tomb\-or\-grave;
+蘅 < a\-fragrant\-plant\-the\-root\-is\-medicinal;
+白頭諧老 < live\-to\-ripe\-old\-age\-in\-conjugal\-bliss;
+受傷 < suffer\-injuries\-\(in\-an\-accident\,\-etc\.\);
+訂立 < agree\-to\-\(treaty\,\-contract\,\-agreement\);
+夏曆 < the\-traditional\-chinese\-lunar\-calendar;
+成千上萬 < by\-the\-thousands\-and\-tens\-of\-thousands;
+師範 < normal\-\(eg\,\-beijing\-normal\-university\);
+佩洛西 < \(nancy\)\-pelosi\-\(member\-of\-us\-congress\);
+驆 < used\-in\-transliterating\-buddhist\-books;
+駏 < offspring\-of\-a\-stallion\-and\-a\-she\-mule;
+廣場 < a\-public\-square\-\(eg\,\-tiananmen\-square\);
+鉌 < the\-bells\-on\-the\-cart\-in\-ancient\-china;
+補票 < buy\-one''s\-ticket\-after\-the\-normal\-time;
+發燒 < have\-a\-high\-temperature\-\(from\-illness\);
+詧 < to\-examine\-into\-judicially\-to\-find\-out;
+綳 < a\-cloth\-to\-carry\-an\-infant\-on\-the\-back;
+綖 < the\-hanging\-flap\-in\-the\-front\-of\-a\-hat;
+祫 < triennial\-sacrifice\-to\-one''s\-ancestors;
+盆地 < basin\-\(low\-lying\-geographical\-feature\);
+磻 < a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+手跡 < sb\.''s\-original\-handwriting\-or\-painting;
+璧還 < return\-\(a\-borrowed\-object\)\-with\-thanks;
+不宣而戰 < open\-hostilities\-without\-declaring\-war;
+國際電信聯盟 < international\-telecommunications\-union;
+不遠千里 < make\-light\-of\-travelling\-a\-thousand\-li;
+斴 < the\-sound\-of\-water\-flowing\-among\-rocks;
+安居樂業 < live\-and\-work\-in\-peace\-and\-contentment;
+表妹 < female\-cousin\-with\-a\-different\-surname;
+崑 < kunlun\-mountains\-in\-jiang\-su\-province\.;
+拆散 < to\-break\-up\-\(a\-marriage\,\-family\,\-etc\.\);
+吐魯番 < the\-turfan\-basin\,\-in\-xinjiang\-province;
+備品 < machine\-parts\-or\-tools\-kept\-in\-reserve;
+䰘 < to\-kill\-by\-hanging\-or\-to\-strangulation;
+䮗 < white\-from\-forehead\-to\-lips\-of\-a\-horse;
+䪲 < ancient\-punishment\-of\-shaving\-the\-head;
+䩸 < fine\-woolen\-blanket\-on\-top\-of\-a\-saddle;
+䩫 < a\-unit\-to\-count\-shoes\-in\-ancient\-times;
+䦅 < a\-kind\-of\-weapon\-used\-in\-ancient\-times;
+䥐 < cooking\-utensils\-used\-in\-ancient\-times;
+䢇 < a\-son\-who\-is\-not\-so\-good\-as\-his\-father;
+䛗 < to\-pry\-into\-or\-expose\-another''s\-secret;
+䚅 < to\-look\-after\-home\-or\-domestic\-affairs;
+䘨 < short\-leggings\-drawn\-over\-the\-trousers;
+䖿 < a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䕰 < a\-second\-name\-for\-rhizome\-of\-wind\-weed;
+䓭 < weed\-or\-grass\-with\-narrow\-thick\-glades;
+半脫產 < partly\-released\-from\-productive\-labour;
+䍻 < young\-goat\-of\-sheep\-under\-one\-year\-old;
+䍦 < a\-kind\-of\-turban\-used\-in\-ancient\-times;
+䌹 < a\-garment\-of\-one\-colour\-with\-no\-lining;
+不可同日而語 < cannot\-be\-mentioned\-in\-the\-same\-breath;
+䄪 < hanging\-down\-of\-the\-ears\-of\-the\-grains;
+䄍 < year\-end\-sacrifice\-of\-the\-zhou\-dynasty;
+㽠 < connection\-of\-the\-ditches\-or\-waterways;
+㼮 < to\-rub\-out\-the\-filth\-with\-broken\-tiles;
+㫩 < the\-first\-of\-the\-four\-season\-\-\-\-spring;
+㤝 < palpitation\-or\-fluttering\-of\-the\-heart;
+㟌 < a\-mountain\-in\-today''s\-sichuan\-province;
+㔯 < a\-large\-basket\-for\-holding\-cooked\-rice;
+首任 < first\-person\-to\-be\-appointed\-to\-a\-post;
+總書記 < general\-secretary\-\(of\-communist\-party\);
+部長 < head\-of\-a\-\(government\,\-etc\)\-department;
+比量 < take\-rough\-measurements\-\(with\-the\-hand;
+遍體鱗傷 < covered\-all\-over\-with\-cuts\-and\-bruises;
+笙 < small\-gourd\-shaped\-musical\-instrument;
+滕 < an\-ancient\-state\-in\-shandong\-province;
+镛 < large\-bell\-used\-as\-musical\-instrument;
+讵 < an\-interjection\-used\-express\-surprise;
+泔 < water\-from\-washing\-rice\-to\-boil\-thick;
+瘐 < to\-die\-in\-prison\-from\-cold\-and\-hunger;
+棼 < beams\-in\-the\-roof\-of\-a\-house\-confused;
+教授畢竟是教授 < professors\-are\-\(after\-all\)\-professors;
+百足之蟲死而不僵 < a\-centipede\-dies\-but\-never\-falls\-down;
+博愛 < universal\-fraternity\-\(or\-brotherhood\);
+敗火 < relieve\-inflammation\-or\-internal\-heat;
+經營 < engage\-in\-\(a\-business\-activity\,\-etc\.\);
+集成 < integrated\-\(as\-in\-integrated\-circuit\);
+麅 < a\-small\-spotted\-deer\-found\-in\-n\.china;
+內懮外患 < domestic\-strife\-and\-foreign\-agression;
+安全與交換委員會 < securities\-and\-exchange\-communication;
+政委 < political\-commissar\-\(within\-the\-army\);
+沈國放 < chinese\-foreign\-ministry\-spokesperson;
+編導 < write\-and\-direct\-\(a\-play\,\-film\,\-etc\.\);
+行駛 < \(vehicles\,\-etc\.\)\-travel\-along\-a\-route;
+兵種 < \(military\)\-branch\-of\-the\-armed\-forces;
+阼 < the\-steps\-leading\-to\-the\-eastern\-door;
+逼宮 < force\-the\-king\-or\-emperor\-to\-abdicate;
+輗 < a\-cross\-bar\-at\-end\-of\-a\-carriage\-pole;
+航行 < sail\-or\-fly\-\(in\-air\,\-water\,\-or\-space\);
+詎 < interjection\-used\-to\-express\-surprise;
+缌 < coarse\-cotton\-cloth\-used\-for\-mourning;
+硜 < the\-sound\-of\-stones\-knocking\-together;
+相信 < be\-convinced\-\(that\-something\-is\-true\);
+犉 < an\-ox\-with\-yellow\-hair\-and\-black\-lips;
+拔秧 < pull\-up\-seedlings\-\(for\-transplanting\);
+煝 < twisted\-paper\-for\-lighting\-cigarettes;
+手裡 < \(a\-situation\-is\)\-in\-\(someone''s\)\-hands;
+捕撈 < fish\-for\-\(aquatic\-animals\-and\-plants\);
+穆桂英 < mu\-gui\-ying\-\(name\-of\-a\-woman\-warrior\);
+簽名 < to\-sign\-\(one''s\-name\-with\-a\-pen\,\-etc\.\);
+濟南 < ji''nan\-\(capital\-of\-shandong\-province\);
+帬 < the\-skirt\-of\-a\-lady''s\-dress\-petticoat;
+嵠 < a\-valley\-with\-a\-stream\-in\-it\.\-a\-gorge;
+虛擬通道標誌符 < virtual\-channel\-connection\-identifier;
+屏條 < set\-of\-\(usually\-four\)\-hanging\-scrolls;
+孫女兒 < granddaughter\-\(daughter\-of\-one''s\-son\);
+究竟 < after\-all\-\(when\-all\-is\-said\-and\-done\);
+鎮江 < zhenjiang\-\(city\)\,\-in\-jiangsu\-province;
+䱗 < a\-long\-narrow\-fish\-trichiurus\-armatus;
+䱔 < a\-long\-narrow\-and\-silver\-colored\-fish;
+䪓 < a\-metal\-ornament\-on\-some\-kind\-of\-belt;
+䨙 < to\-rain\-cats\-and\-dogs\-for\-a\-long\-time;
+䦊 < an\-appliance\-for\-walking\-on\-the\-sands;
+䥂 < the\-sharp\-edge\-of\-a\-shovel\-or\-a\-spade;
+䡕 < the\-rear\-platform\-of\-a\-light\-carriage;
+䜔 < to\-speak\-on\-the\-ideas\-of\-someone\-else;
+治病救人 < cure\-the\-sickness\-to\-save\-the\-patient;
+䖠 < a\-kind\-of\-lizard\-found\-in\-damp\-places;
+䖜 < the\-fighting\-sound\-made\-by\-two\-tigers;
+有志者事竟成 < where\-there\-is\-a\-will\,\-there\-is\-a\-way;
+䎒 < flying\-quickly\-and\-to\-attack\-suddenly;
+䋊 < decorations\-of\-the\-emperor''s\-carriage;
+䀛 < to\-look\-far\-with\-the\-eyes\-half\-closed;
+㼨 < a\-water\-jar\-with\-ears\-for\-carrying\-it;
+㻎 < a\-large\-horizontal\-musical\-instrument;
+㺪 < an\-uncarved\-of\-unpolished\-jade\-or\-gem;
+㵿 < endlessly\-long\-or\-vast\-water\-currents;
+㴩 < name\-of\-a\-stream\-in\-shandong\-province;
+㯘 < a\-small\-wooden\-stand\-having\-four\-legs;
+㤍 < never\-reveal\-one''s\-feeling\-or\-emotion;
+㣠 < a\-rope\-decorated\-with\-bronze\-ornament;
+㡑 < ancient\-mourning\-turban\-worn\-by\-women;
+㠑 < high\-mountain\-steep\-rugged\-and\-uneven;
+㠄 < name\-of\-a\-mountain\-in\-yunnan\-province;
+㠁 < irregular\-outline\-of\-a\-range\-of\-hills;
+㟚 < name\-of\-a\-mountain\-in\-shanxi\-province;
+㚶 < wife\-of\-one''s\-husband''s\-elder\-brother;
+㘈 < able\-to\-take\-a\-correct\-view\-of\-things;
+㗰 < the\-character\-used\-in\-transliteration;
+㒿 < a\-kind\-of\-turban\-used\-in\-ancient\-time;
+主科 < required\-courses\-in\-the\-major\-subject;
+尚慕杰 < james\-sasser\-\(us\-ambassador\-to\-china\);
+哀鴻遍野 < a\-land\-swarming\-with\-disaster\-victims;
+病從口入 < illness\-finds\-its\-way\-in\-by\-the\-mouth;
+班底 < ordinary\-members\-of\-theatrical\-troupe;
+金缽 < \(gold\)\-alms\-bowl\-\(of\-a\-buddhist\-monk\);
+塞爾南 < \(eugene\)\-cernan\-\(apollo\-17\-astronaut\);
+聯名 < jointly\-\(signed\,\-declared\,\-sponsored\);
+總參謀部 < \(military\)\-general\-staff\-headquarters;
+下榻 < stay\-at\-\(a\-hotel\,\-etc\.\-during\-a\-trip\);
+年畫兒 < new\-year\-\(or\-spring\-festival\)\-picture;
+鐵飯碗 < \"iron\-rice\-bowl\"\-\-\-\-secure\-employment;
+聯邦調查局 < fbi\-\(federal\-bureau\-of\-investigation\);
+胡志明 < ho\-chi\-minh\-\(vietnamese\-leader\,\-city\);
+記述 < make\-a\-descriptive\-record\-\(of\-events\);
+撥絃樂器 < plucked\-string\-or\-stringed\-instrument;
+弁 < conical\-cap\-worn\-during\-zhou\-dynasty;
+酉 < tenth\-of\-the\-twelve\-earthly\-branches;
+旌 < banner\-or\-flag\-adorned\-with\-feathers;
+衮 < ceremonial\-dress\-worn\-by\-the\-emperor;
+溧 < river\-in\-anhui\-and\-jiangsu\-provinces;
+糍 < food\-made\-of\-crushed\-and\-cooked\-rice;
+殛 < to\-put\-to\-death\-to\-imprison\-for\-life;
+狍 < species\-of\-deer\-found\-in\-north\-china;
+绂 < ribbon\-or\-cord\-used\-attach\-ornaments;
+磉 < the\-stone\-base\-or\-plinth\-of\-a\-pillar;
+蕹 < ipomoea\-aquatica\-used\-as\-a\-vegetable;
+暗傷 < internal\-\(invisible\)\-injury\-\(damage\);
+檔案轉送存取及管理 < file\-transfer\,\-access\-and\-management;
+太湖 < tai\-hu\-lake\,\-a\-big\-lake\-by\-wuxi\-city;
+橫鉤 < \(horizontal\-hooked\-character\-stroke\);
+北宋 < the\-northern\-song\-dynasty\-\(960\-1127\);
+齈 < cold\-in\-the\-head\-catarrh\-of\-the\-nose;
+鹻 < impure\-carbonate\-of\-sodium\-of\-natron;
+鄉下 < country\-\(as\-opposed\-to\-town\-or\-city\);
+鶢 < a\-bird\-which\-frequents\-the\-sea\-shore;
+別具一格 < having\-a\-unique\-or\-distinctive\-style;
+簽訂 < to\-agree\-to\-and\-sign\-\(a\-treaty\,\-etc\);
+郪 < name\-of\-a\-stream\-in\-sichuan\-province;
+徐悲鴻 < name\-of\-a\-famous\-painter\,\-xu\-beihong;
+轞 < a\-vehicle\-for\-transporting\-prisoners;
+輹 < two\-pieces\-of\-wood\-underneath\-a\-cart;
+讀賣新聞 < yomiuri\-shimbun\-\(japanese\-newspaper\);
+增值 < appreciation\-\(of\-a\-car\,\-house\,\-etc\.\);
+一九四九年 < the\-year\-1949\-\(communist\-revolution\);
+芿 < grass\-which\-has\-been\-cut\-and\-regrown;
+胬 < a\-disease''s\-name\-in\-chinese\-medicine;
+禊 < semi\-annual\-ceremony\-of\-purification;
+兵家 < military\-strategist\-in\-ancient\-china;
+英尺 < \(english\)\-foot\-\(unit\-of\-measurement\);
+國際標準組織 < international\-standards\-organization;
+才疏學淺 < have\-little\-talent\-and\-less\-learning;
+淪陷 < \(territory\)\-fall\-to\-enemy\-occupation;
+戥 < a\-small\-steelyard\-for\-weighing\-money;
+花木蘭 < hua\-mu\-lan\-\(name\-of\-a\-woman\-warrior\);
+打不過 < not\-to\-be\-able\-to\-beat\-or\-defeat\-sb\.;
+世界性古老問題 < a\-problem\-as\-old\-as\-the\-world\-itself;
+避坑落井 < dodge\-a\-pit\-only\-to\-fall\-into\-a\-well;
+寍 < used\-as\-a\-term\-of\-comparison\:\-rather;
+人選 < person\(s\)\-selected\-\(for\-a\-job\,\-etc\.\);
+發了言 < \(\"past\-tense\"\-of\-\:發言\)\-spoke\-publicly;
+咗 < verbal\-particle\-of\-perfective\-aspect;
+變溫動物 < poikilothermal\-\(cold\-blooded\)\-animal;
+會長 < president\-of\-a\-club\,\-committee\,\-etc\.;
+丱 < child''s\-hairstyle\-bound\-in\-two\-tufts;
+不自量 < not\-take\-a\-proper\-measure\-of\-oneself;
+䮤 < one\-of\-the\-36\-gardens\-in\-han\-dynasty;
+䬭 < name\-of\-a\-legendary\-ferocious\-animal;
+䪔 < cross\-bar\-of\-wood\-under\-the\-carriage;
+䧤 < name\-of\-a\-river\-in\-shandong\-province;
+䤌 < a\-kind\-of\-wine\-be\-brewed\-from\-grains;
+䠷 < the\-appearance\-of\-height\-in\-a\-person;
+䠅 < hands\-and\-feet\-chapped\-from\-the\-cold;
+䝤 < a\-primitive\-tribe\-in\-southwest\-china;
+䝟 < a\-fierce\-man\-eating\-animal\-in\-legend;
+䝝 < an\-exclamation\-indicating\-admiration;
+䛓 < an\-official\-position\-in\-former\-times;
+䚘 < the\-long\-and\-upright\-horns\-of\-cattle;
+䖒 < earthenware\-with\-the\-shape\-of\-a\-bean;
+䕎 < name\-of\-a\-variety\-of\-grass\-perennial;
+䓑 < name\-of\-a\-variety\-of\-grass\-duckweeds;
+䑗 < to\-pound\-in\-order\-to\-remove\-the\-husk;
+䐱 < to\-pick\-the\-meat\-in\-between\-of\-bones;
+䏁 < unable\-to\-hear\-distinctly\-or\-clearly;
+寫成 < to\-compile\-\(fashion\-through\-writing\);
+䊠 < to\-give\-a\-supply\-f\-grain\-for\-rations;
+䉟 < a\-bamboo\-basket\-used\-to\-catch\-fishes;
+䈰 < a\-brush\-for\-washing\-kitchen\-utensils;
+䇼 < a\-bamboo\-vessel\-used\-to\-catch\-fishes;
+吞金 < to\-commit\-suicide\-by\-swallowing\-gold;
+䄫 < a\-kind\-of\-sorghum\-with\-white\-sprouts;
+䄈 < sacrifice\-to\-happiness\-and\-good\-luck;
+䃤 < black\-colored\-grindstone\-or\-whestone;
+䃎 < name\-of\-a\-place\-\-small\-piece\-of\-coal;
+䂹 < sound\-of\-the\-falling\-pieces\-of\-rocks;
+䁶 < to\-look\-at\-something\-without\-winking;
+䁵 < newborn\-baby\-with\-the\-eyelids\-closed;
+板眼 < measure\-in\-traditional\-chinese\-music;
+㽅 < vessel\-for\-ceremony\-in\-ancient\-times;
+㸹 < cattle\-with\-white\-stripe\-on\-the\-back;
+㸗 < not\-a\-real\-father\-or\-a\-nature\-father;
+㳘 < a\-fountain\-or\-spring\-flows\-downwards;
+㮯 < whole\-piece\-of\-or\-unbroken\-firewoods;
+㮜 < a\-blocks\-engraved\-for\-holding\-things;
+㟼 < name\-of\-a\-place\-in\-shandong\-province;
+首府 < capital\-city\-of\-an\-autonomous\-region;
+㞔 < the\-upright\-bar\-for\-fastening\-a\-door;
+㝞 < pretend\-to\-be\-delicate\-and\-beautiful;
+㜹 < name\-of\-a\-folk\-song\-in\-ancient\-times;
+㚁 < the\-long\-tail\-feathers\-which\-curl\-up;
+班次 < order\-of\-classes\-or\-grades\-at\-school;
+抄後路 < to\-outflank\-and\-attack\-from\-the\-rear;
+編年體 < annalistic\-style\-\(in\-historiography\);
+家鄉雞 < ''home\-town\-chicken''\-\(a\-type\-of\-dish\);
+章孝嚴 < john\-chang\-\(taiwan\-foreign\-minister\);
+貴州 < name\-of\-a\-province\-in\-china\,\-guizhou;
+蓋茨 < \(bill\)\-gates\-\(chairman\-of\-microsoft\);
+吸引 < attract\-\(interest\,\-investment\,\-etc\.\);
+來不及 < there''s\-not\-enough\-time\-\(to\-do\-sth\.\);
+暗娼 < unlicensed\-\(unregistered\)\-prostitute;
+非對稱式數據用戶線 < asymmetrical\-digital\-subscriber\-line;
+霸王 < xiang4yu3\-\(232\-202\-bc\)\-the\-conqueror;
+壽禮 < birthday\-present\-\(for\-an\-old\-person\);
+阮 < ancient\-musical\-instrument\:\-surname;
+喔 < descriptive\-of\-crying\-or\-of\-crowing;
+琏 < vessel\-used\-to\-hold\-grain\-offerings;
+邕 < former\-or\-literary\-name\-for\-nanning;
+魑 < a\-mountain\-demon\-resembling\-a\-tiger;
+昶 < a\-long\-day\.\-bright\.\-extended\.\-clear;
+缧 < a\-chain\-or\-rope\-used\-bind\-criminals;
+螭 < a\-dragon\-whose\-horns\-have\-not\-grown;
+龀 < lose\-baby\-teeth\-and\-get\-adult\-teeth;
+肜 < to\-sacrifice\-on\-two\-successive\-days;
+邗 < an\-ancient\-place\-in\-the\-state\-of\-wu;
+萬縣 < wanxian\-county\,\-in\-sichuan\-province;
+死不了 < portulaca\-sundial\-\(a\-type\-of\-plant\);
+大中學生 < university\-and\-high\-school\-students;
+迎春花 < winter\-jasmine\,\-jasminum\-nudiflorum;
+約翰內斯堡 < johannesburg\-\(city\-in\-south\-africa\);
+主人翁 < master\-\(of\-one''s\-own\-destiny\,\-etc\.\);
+分佈式環境 < distributed\-\(computing\)\-environment;
+兵部 < the\-ministry\-of\-war\-in\-feudal\-china;
+北周 < the\-northern\-zhou\-dynasty\-\(557\-581\);
+安分守己 < abide\-by\-the\-law\-and\-behave\-oneself;
+北京 < beijing\-\(capital\-of\-mainland\-china\);
+大顯身手 < fully\-displaying\-one''s\-capabilities;
+電信服務供應商 < telecommunications\-service\-provider;
+哈密瓜 < hami\-melon\-\(a\-variety\-of\-muskmelon\);
+鐤 < huge\-tripod\-of\-bronze\-with\-two\-ears;
+貿易額 < volume\-of\-trade\-\(between\-countries\);
+草案 < draft\-\(legislation\,\-proposal\,\-etc\.\);
+親愛 < dear\-\.\.\.\-\(way\-of\-starting\-a\-letter\);
+觭 < one\-turning\-up\-and\-one\-turning\-down;
+補白 < filler\-\(in\-a\-newspaper\-or\-magazine\);
+褱 < to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+波瀾壯闊 < surging\-forward\-with\-great\-momentum;
+舉行 < to\-hold\-\(a\-meeting\,\-ceremony\,\-etc\.\);
+回歸中國 < to\-return\-to\-china\-\(e\.g\.\-hong\-kong\);
+艜 < a\-long\-narrow\-vessel\-with\-two\-masts;
+總動員 < general\-mobilization\-\(for\-war\,\-etc\);
+臿 < to\-separate\-the\-grain\-from\-the\-husk;
+絰 < white\-hempen\-cloth\-worn\-by\-mourners;
+保送 < recommend\-\(for\-admission\-to\-school\);
+愛莫能助 < willing\-to\-help\-but\-unable\-to\-do\-so;
+碪 < stone\-slab\-used\-for\-washing\-clothes;
+轉帳 < transfer\-money\-from\|into\-an\-account;
+席位 < parliamentary\-or\-congressional\-seat;
+盇 < why\-not\?\-would\-it\-not\-be\-better\-to\?;
+布什 < \(george\)\-bush\-\(former\-us\-president\);
+崩龍族 < the\-benglong\-\(penglung\)\-nationality;
+滫 < water\-in\-which\-rice\-has\-been\-boiled;
+非政府組織 < non\-governmental\-organization\-\(ngo\);
+審訊 < a\-\(judicial\)\-trial\-\(in\-a\-courtroom\);
+檑 < logs\-rolled\-down\-in\-defense\-of\-city;
+棳 < small\-pillars\-that\-support\-the\-roof;
+帗 < a\-multicolored\-prop\-used\-in\-dancing;
+綜合服務數位網絡 < integrated\-services\-digital\-network;
+嘠 < the\-chirping\-of\-birds\-loud\-laughter;
+筆桿 < the\-shaft\-of\-a\-pen\-or\-writing\-brush;
+病勢 < degree\-of\-seriousness\-of\-an\-illness;
+唄 < final\-particle\-of\-assertion\-pathaka;
+倻 < phonetic\-used\-in\-korean\-place\-names;
+䵺 < boundary\-between\-agricultural\-lands;
+䵹 < insects\-that\-are\-injurious\-to\-crops;
+䭍 < to\-live\-with\-another\-at\-his\-expense;
+䬥 < cooked\-food\-which\-has\-become\-mouldy;
+䬙 < to\-dance\-and\-toss\-about\-in\-the\-wind;
+主辦 < host\-\(a\-conference\-or\-sports\-event\);
+䠫 < to\-succumb\-to\-the\-effect\-of\-alcohol;
+䝦 < a\-kind\-of\-animal\-looks\-like\-leopard;
+䜠 < language\-of\-the\-savage\-or\-barbarian;
+䖺 < a\-legendary\-animal\-in\-ancient\-times;
+䒼 < a\-bamboo\-tray\-for\-raising\-silkworms;
+䑳 < a\-horizontal\-bar\-in\-front\-of\-a\-boat;
+䐧 < to\-reward\-or\-cheer\-troops\-with\-food;
+䎰 < name\-of\-a\-place\-in\-sichuan\-province;
+䍟 < a\-kind\-of\-fish\-net\-with\-fine\-meshes;
+䇨 < a\-bamboo\-basket\-for\-food\-containers;
+霸王鞭 < a\-rattle\-stick\-used\-in\-folk\-dancing;
+本草 < a\-book\-on\-chinese\-\(herbal\)\-medicine;
+䆎 < grass\-and\-grains\-producing\-no\-fruit;
+䄻 < a\-second\-time\-growing\-of\-rice\-plant;
+䀚 < to\-lift\-up\-the\-eyes\-and\-look\-around;
+㿖 < carbuncle\-used\-in\-naming\-of\-a\-place;
+㺛 < name\-of\-a\-village\-in\-henan\-province;
+㷈 < embers\-kept\-for\-starting\-a\-new\-fire;
+㵁 < vast\-and\-boundless\-of\-flowing\-water;
+㳕 < water\-in\-which\-rice\-has\-been\-washed;
+㯪 < carved\-or\-patterned\-window\-railings;
+人物 < characters\-\(in\-a\-play\,\-novel\,\-etc\.\);
+議長 < speaker\-\(of\-a\-legislative\-assembly\);
+㠙 < a\-mountain\-paths\-name\-of\-a\-mountain;
+調查結果 < results\-\(of\-an\-investigation\,\-poll\);
+㓭 < to\-make\-ready\-the\-leather\-for\-shoes;
+㐷 < a\-kind\-of\-punishment\-in\-han\-dynasty;
+百端待舉 < a\-thousand\-things\-remain\-to\-be\-done;
+安南 < \[kofi\]\-annan\-\[un\-secretary\-general\];
+包飯 < get\-or\-supply\-meals\-at\-a\-fixed\-rate;
+有水 < \(of\-a\-dwelling\)\-supplied\-with\-water;
+白殭蠶 < the\-larva\-of\-silkworm\-with\-batrytis;
+話題 < subject\-\(of\-a\-talk\-or\-conversation\);
+事務 < \(political\,\-economic\,\-etc\.\)\-affairs;
+咱們 < we\-\(including\-the\-person\-spoken\-to\);
+尤金塞爾南 < eugene\-cernan\-\(apollo\-17\-astronaut\);
+率先 < take\-the\-lead\-\(showing\-inititative\);
+目前還不清楚 < at\-present\-it\-is\-still\-unclear\-\.\.\.\.;
+秋高氣爽 < clear\-and\-refreshing\-autumn\-weather;
+包租 < rent\-land\-or\-a\-house\-for\-subletting;
+明文 < \(laws\,\-rules\,\-etc\)\-state\-in\-writing;
+袱 < a\-piece\-of\-cloth\-used\-wrap\-bundles;
+挲 < to\-feel\-or\-fondle\-with\-the\-fingers;
+篑 < a\-bamboo\-basket\-for\-carrying\-earth;
+肓 < region\-between\-heart\-and\-diaphragm;
+滦 < river\-and\-county\-in\-hebei\-province;
+郗 < city\-under\-the\-chou\-dyn\.\-a\-surname;
+珏 < two\-pieces\-of\-jade\-joined\-together;
+綦 < dark\-grey\.\-variegated\.\-superlative;
+麇 < general\-name\-for\-the\-hornless\-deer;
+璎 < a\-necklace\-made\-of\-precious\-stones;
+掾 < a\-general\-designation\-of\-officials;
+郇 < an\-ancient\-feudal\-state\-in\-shaanxi;
+透視 < to\-examine\-by\-fluoroscope\-or\-x\-ray;
+報警 < report\-\(an\-incident\)\-to\-the\-police;
+碑帖 < a\-rubbing\-from\-a\-stone\-inscription;
+牛年 < year\-of\-the\-ox\-\(in\-chinese\-zodiac\);
+簡單網絡管理協議 < simple\-network\-management\-protocol;
+臨時的本地管理接口 < interim\-local\-management\-interface;
+包廂 < box\-\(in\-a\-theatre\-or\-concert\-hall\);
+轉讓 < transfer\-\(technology\,\-goods\,\-etc\.\);
+冰消瓦解 < melt\-like\-ice\-and\-break\-like\-tiles;
+龘 < the\-appearance\-of\-a\-dragon\-walking;
+半斤八兩 < not\-much\-to\-choose\-between\-the\-two;
+鴽 < a\-species\-of\-bird\-resembling\-quail;
+盜版 < pirate\-version\-\(of\-software\,\-e\.g\.\);
+步人後塵 < follow\-in\-other\-people''s\-footsteps;
+鄫 < state\-in\-today''s\-shandong\-province;
+鄇 < a\-name\-of\-a\-town\-in\-henan\-province;
+迿 < to\-be\-the\-first\-to\-begin\-a\-quarrel;
+轕 < great\-array\-of\-spears\-and\-chariots;
+輠 < grease\-pot\-hung\-under\-axle\-of\-cart;
+龍飛鳳舞 < lit\.\:\-dragon\-flies\,\-phoenix\-dances;
+緣份 < fate\-\(which\-brings\-people\-together;
+平壤 < pyongyang\-\(capital\-of\-north\-korea\);
+國際見聞 < international\-background\-knowledge;
+擔任 < hold\-a\-governmental\-office\-or\-post;
+膲 < the\-three\-divisions\-of\-the\-viscera;
+克服 < \(try\-to\)\-overcome\-\(hardships\,\-etc\);
+抄送 < to\-make\-a\-copy\-\(and\-send\-it\-to\-sb\);
+不失為 < can\-still\-be\-considered\-\(to\-be\.\.\.\);
+紖 < a\-rope\-for\-leading\-cattle\-or\-horse;
+最惠國 < most\-favored\-nation\-\(trade\-status\);
+笮 < boards\-which\-support\-tiles\-on\-roof;
+案驗 < investigate\-the\-evidence\-of\-a\-case;
+托運 < to\-book\-or\-check\-through\-\(baggage\);
+砅 < cross\-stream\-by\-stepping\-on\-stones;
+國務委員 < member\-of\-state\-council\-\(in\-china\);
+戶部 < feudal\-chinese\-ministry\-of\-revenue;
+璉 < a\-vessel\-used\-hold\-grain\-offerings;
+梡 < tray\-for\-carrying\-sacrificial\-meat;
+可移植性 < portability\-\(programming\-language\);
+推動 < to\-push\-\(for\-acceptance\-of\-a\-plan\);
+幵 < even\-level\.\-to\-raise\-in\-both\-hands;
+嫄 < an\-ancient\-emperor''s\-mother''s\-name;
+整體數位服務網路 < integrated\-service\-digital\-network;
+囷 < round\-shaped\-storage\-bin\-for\-grain;
+亞軍 < second\-place\-\(in\-a\-sports\-contest\);
+呼和浩特 < hohhot\-\(capital\-of\-inner\-mongolia\);
+基金會 < a\-foundation\-\(ie\,\-an\-organization\);
+䴙 < a\-kind\-of\-bird\-resembling\-the\-duck;
+䲃 < a\-carp\-like\-fish\-with\-chicken\-feet;
+顏體 < yan\-style\-\(in\-chinese\-calligraphy\);
+久違 < \(haven''t\-done\-sth\)\-for\-a\-long\-time;
+䩗 < to\-rule\-by\-might\-rather\-than\-right;
+䢕 < a\-group\-of\-people\-walking\-together;
+䚡 < bones\-in\-a\-horn\-of\-cattle\-and\-goat;
+䙬 < plaits\-on\-the\-sides\-of\-a\-petticoat;
+䐀 < to\-dismember\-body\-of\-the\-livestock;
+䎎 < to\-glide\-or\-to\-hover\-up\-in\-the\-air;
+䍊 < clay\-made\-blowing\-wind\-instruments;
+䈿 < belt\-of\-the\-canvas\-top\-on\-vehicles;
+䇮 < a\-bamboo\-mat\-used\-in\-ancient\-times;
+小題大做 < make\-a\-big\-fuss\-over\-a\-minor\-issue;
+䅚 < closely\-growing\-of\-the\-rice\-plants;
+䄶 < rice\-plant\-growing\-the\-second\-time;
+䁾 < red\-and\-swelling\-of\-the\-eye\-socket;
+䁨 < to\-open\-the\-eyes\-with\-astonishment;
+㽛 < narrow\-trail\-of\-path\-in\-the\-fields;
+㺑 < dogs\-wormed\-through\-a\-narrow\-place;
+㹢 < a\-large\-ape\-found\-in\-western\-china;
+㹜 < two\-dogs\-are\-barking\-to\-each\-other;
+㹉 < a\-legendary\-animal\-with\-three\-feet;
+㶀 < deep\-and\-vast\-of\-the\-flowing\-water;
+打錯了 < \"you\-have\-dialed\-the\-wrong\-number\";
+㰶 < to\-wrinkle\-the\-nose\-with\-sorrowful;
+㭲 < a\-wooden\-frame\-for\-carrying\-things;
+病包兒 < a\-person\-who\-is\-always\-falling\-ill;
+㡡 < screen\-to\-make\-a\-temporary\-kitchen;
+㠿 < a\-kind\-of\-delicate\-and\-fine\-fabric;
+㜺 < nice\-white\-color\-and\-looks\-so\-good;
+㜵 < with\-a\-charming\-sprightly\-carriage;
+㙈 < name\-of\-a\-place\-in\-shanxi\-province;
+香山 < fragrance\-hill\-\(a\-park\-in\-beijing\);
+㖡 < the\-birds\-singing\-during\-the\-night;
+㕺 < looks\-big\-outside\-but\-empty\-inside;
+㕄 < to\-apply\-knowledge\-to\-final\-causes;
+不虛此行 < the\-trip\-has\-not\-been\-made\-in\-vain;
+銷毀 < to\-destroy\-\(by\-melting\-or\-burning\);
+拉莫斯 < \(philippine\-president\-fidel\)\-ramos;
+比勒陀利亞 < pretoria\-\(capital\-of\-south\-africa\);
+北魏 < the\-northern\-wei\-dynasty\-\(386\-534\);
+言論自由 < \(constitutional\)\-freedom\-of\-speech;
+暴病 < sudden\-attack\-of\-a\-serious\-illness;
+人大 < \(china\)\-national\-people''s\-congress;
+熱鬧 < bustling\-with\-noise\-and\-excitement;
+呈文 < petition\-\(submitted\-to\-a\-superior\);
+春節 < spring\-festival\-\(chinese\-new\-year\);
+開發環境 < development\-environment\-\(computer\);
+不識時務 < show\-no\-understanding\-of\-the\-times;
+𠼻 < a\-particle\-used\-in\-transliteration;
+胡志強 < jason\-hu\-\(taiwan\-foreign\-minister\);
+新疆 < xinjiang\-\(uygur\-autonomous\-region\);
+幫倒忙 < be\-more\-of\-a\-hindrance\-than\-a\-help;
+俱樂部 < club\-\(ie\,\-a\-group\-or\-organization\);
+社 < god\-of\-the\-soil\-and\-altars\-to\-him;
+瑟 < large\-stringed\-musical\-instrument;
+楞 < used\-for\-ceylon\-in\-buddhist\-texts;
+喽 < used\-in\-onomatopoetic\-expressions;
+嚅 < talk\-indistinctly\-and\-falteringly;
+裱 < to\-mount\-maps\-or\-scrolls\-to\-paste;
+猢 < a\-kind\-of\-monkey\-found\-in\-w\.china;
+蜮 < a\-fabulous\-creature\-like\-a\-turtle;
+碡 < stone\-roller\-used\-to\-level\-fields;
+鄣 < name\-of\-ancient\-city\-in\-n\.jiangsu;
+粢 < grain\-offered\-in\-ritual\-sacrifice;
+簦 < large\-umbrella\-with\-a\-long\-handle;
+螓 < a\-small\-cicada\-with\-a\-square\-head;
+不時之需 < a\-possible\-period\-of\-want\-or\-need;
+公共交換電話網路 < public\-switched\-telephone\-network;
+網絡 < \(computer\,\-telecom\,\-etc\.\)\-network;
+以牙還牙 < a\-tooth\-for\-a\-tooth\-\(retaliation\);
+壁毯 < tapestry\-\(used\-as\-a\-wall\-hanging\);
+擦澡 < rub\-oneself\-down\-with\-a\-wet\-towel;
+認定 < maintain\-\(that\-something\-is\-true\);
+百戰百勝 < emerge\-victorious\-in\-every\-battle;
+魊 < a\-mythical\-creature\-said\-hurl\-san;
+分歧 < difference\-\(of\-opinion\,\-position\);
+勞動節 < international\-labor\-day\-\(may\-day\);
+韐 < knee\-pad\-made\-of\-red\-dyed\-leather;
+連戰 < lien\-chan\-\(taiwan\-vice\-president\);
+抱粗腿 < latch\-on\-to\-the\-rich\-and\-powerful;
+制度 < \(political\)\-system\-or\-institution;
+補習 < take\-lessons\-after\-school\-or\-work;
+由此可見 < from\-this\,\-it\-can\-be\-seen\-that\.\.\.;
+聯邦電信交通委員會 < federal\-communications\-commission;
+建交 < to\-establish\-diplomatic\-relations;
+軏 < cross\-bar\-at\-end\-of\-poles\-of\-cart;
+火災 < fire\-\(that\-burns\-buildings\,\-etc\.\);
+備課 < \(of\-a\-teacher\)\-to\-prepare\-lessons;
+金正日 < kim\-jong\-il\-\(north\-korean\-leader\);
+開演 < \(of\-a\-play\,\-movie\,\-etc\.\)\-to\-begin;
+備荒 < prepare\-against\-natural\-disasters;
+薀 < the\-hippuris\-or\-mare''s\-tail\-plant;
+不摸頭 < not\-acquainted\-with\-the\-situation;
+全會 < plenary\-session\-\(at\-a\-conference\);
+魏京生 < wei\-jingsheng\-\(chinese\-dissident\);
+聝 < to\-cut\-the\-left\-ears\-of\-the\-slain;
+耔 < to\-hoe\-up\-the\-earth\-around\-plants;
+便難 < retort\-with\-challenging\-questions;
+答辯 < to\-reply\-\(to\-an\-accusation\,\-e\.g\.\);
+簫 < musical\-instrument\-like\-pan\-pipes;
+簨 < a\-beam\-for\-hanging\-bells\-or\-drums;
+礳 < name\-of\-place\-in\-shan\-xi\-province;
+寸草不生 < \"not\-even\-a\-blade\-of\-grass\-grows\";
+碫 < coarse\-stone\-\(used\-for\-whetstone\);
+璯 < jade\-ornament\-in\-the\-seams\-of\-cap;
+琯 < a\-jade\-tube\-used\-as\-an\-instrument;
+玁 < a\-dog\-with\-a\-long\-snout\-or\-muzzle;
+圖書 < books\-\(in\-a\-library\-or\-bookstore\);
+家長 < the\-parent\-or\-guardian\-of\-a\-child;
+回歸 < to\-return\-\(to\-previous\-condition\);
+擦亮眼睛 < remove\-the\-scales\-from\-one''s\-eyes;
+補偏救弊 < remedy\-defects\-and\-rectify\-errors;
+棟 < the\-main\-beams\-supporting\-a\-house;
+骨法 < bone\-\(property\-of\-a\-brush\-stroke\);
+百川歸海 < all\-things\-tends\-in\-one\-direction;
+誓不反悔 < to\-vow\-not\-to\-break\-one''s\-promise;
+吃不上 < be\-unable\-to\-get\-something\-to\-eat;
+戠 < a\-sword\.\-potter''s\-clay\.\-to\-gather;
+科學編輯 < science\-editor\-\(of\-a\-publication\);
+昂首闊步 < stride\-forward\-with\-one''s\-chin\-up;
+日經指數 < nikkei\-index\-\(of\-japanese\-stocks\);
+科隆 < cologne\,\-germany\-or\-colon\,\-panama;
+打消 < dispel\-\(doubts\,\-misgivings\,\-etc\.\);
+呭 < final\-particle\-expressing\-consent;
+呡 < the\-corners\-of\-the\-mouth\-the\-lips;
+疾病預防中心 < \(u\.s\.\)\-center\-for\-disease\-control;
+䶬 < hard\-fins\-on\-the\-back\-of\-a\-dragon;
+䶅 < a\-marmot\-like\-rat\-with\-a\-big\-head;
+䴓 < general\-term\-for\-small\-bird\-group;
+䬗 < blown\-or\-tossed\-about\-by\-the\-wind;
+䧉 < name\-of\-a\-pavilion\-in\-han\-dynasty;
+䥶 < cooking\-utensil\-used\-in\-old\-times;
+䥬 < a\-musical\-instrument\-in\-old\-times;
+䣜 < name\-of\-a\-county\-in\-ancient\-times;
+䣌 < residence\-of\-a\-prince\-or\-nobility;
+䡝 < a\-rear\-covering\-of\-a\-big\-carriage;
+䡊 < the\-protruded\-sides\-of\-a\-carriage;
+䠚 < to\-step\-on\-the\-ground\-with\-a\-bang;
+䖃 < the\-water\-is\-waving\-in\-the\-breeze;
+䒧 < a\-vessel\-or\-utensil\-made\-of\-straw;
+䍲 < a\-kind\-of\-sheep\-with\-curled\-hairs;
+䋸 < back\-center\-suture\-of\-the\-clothes;
+䋛 < the\-clustered\-embroidery\-patterns;
+䊖 < to\-eat\-rice\-gruel\-mixed\-with\-meat;
+䆅 < to\-accumulate\-or\-to\-store\-up\-rice;
+䂧 < rocks\-clustered\-pile\-up\-togethers;
+䀿 < to\-have\-a\-casual\-and\-short\-glance;
+找到 < find\-\(what\-one\-was\-searching\-for\);
+召開 < convene\-\(a\-conference\-or\-meeting\);
+㹗 < cattle\-and\-sheep\-have\-no\-children;
+㶲 < measuring\-unit\-for\-thermodynamics;
+㵺 < name\-of\-a\-stream\-in\-ancient\-times;
+㵐 < name\-of\-a\-river\-in\-hubei\-province;
+㵋 < name\-of\-a\-river\-in\-hunan\-province;
+㱒 < to\-scold\-or\-blame\-in\-a\-loud\-voice;
+㮾 < a\-place\-in\-today''s\-hunan\-province;
+㬈 < the\-sun\-was\-shining\-and\-it''s\-warm;
+㪊 < infested\-with\-bandits\-and\-robbers;
+㨘 < to\-blow\-the\-nose\-with\-the\-fingers;
+㟾 < name\-of\-a\-mountain\-in\-county\-jian;
+㟸 < name\-of\-pavilion\-in\-ancient\-china;
+㟂 < name\-of\-cape\-in\-shandong\-province;
+呼籲 < call\-on\-\(someone\-to\-do\-something\);
+㚪 < to\-make\-a\-deceptive\-show\-of\-power;
+電腦輔助設計與繪圖 < computer\-aided\-design\-and\-drawing;
+㒍 < utterly\-weary\-in\-body\-and\-spirits;
+㐌 < a\-tribe\-of\-savages\-in\-south\-china;
+科爾 < \(helmut\)\-kohl\-\(german\-chancellor\);
+齋月 < ramadan\-\(muslim\-month\-of\-fasting\);
+得寸進尺 < literal\:\-get\-an\-inch\,\-want\-a\-foot;
+起來 < beginning\-or\-continuing\-an\-action;
+北齊 < the\-northern\-qi\-dynasty\-\(550\-557\);
+北洋軍閥 < the\-northern\-warlords\-\(1912\-1927\);
+吐穗 < to\-have\-the\-ears\-of\-grain\-come\-up;
+大惑不解 < do\-not\-understand\-a\-certain\-thing;
+請願 < petition\-\(for\-action\-to\-be\-taken\);
+半日制學校 < half\-day\-\(or\-double\-shift\-school\);
+明文規定 < expressly\-stipulated\-\(in\-writing\);
+享受 < to\-enjoy\-\(rights\,\-benefits\,\-etc\.\);
+大庭廣眾 < public\-place\-with\-numerous\-people;
+百無一失 < no\-danger\-of\-anything\-going\-wrong;
+三峽 < the\-three\-changjiang\-river\-gorges;
+取暖 < to\-warm\-oneself\-\(by\-a\-fire\,\-etc\.\);
+人權觀察 < human\-rights\-watch\-\(organization\);
+院長 < president\-\(of\-a\-university\,\-etc\.\);
+檢察官 < the\-prosecution\-\(in\-a\-court\-case\);
+備而不用 < have\-something\-ready\-just\-in\-case;
+言論 < expression\-of\-\(political\)\-opinion;
+應用程式介面 < application\-programming\-interface;
+捻 < to\-twist\-or\-nip\-with\-the\-fingers;
+戌 < eleventh\-of\-terrestrial\-branches;
+搓 < to\-rub\-or\-roll\-between\-the\-hands;
+尧 < a\-legendary\-ancient\-emperor\-sage;
+婶 < wife\-of\-father''s\-younger\-brother;
+掬 < to\-grasp\-or\-hold\-with\-both\-hands;
+幛 < scroll\-of\-silk\-or\-cloth\-presente;
+棂 < carved\-or\-patterned\-window\-sills;
+氲 < life\-giving\-influences\-of\-nature;
+蚝 < hairy\-and\-poisonous\-caterpillars;
+澧 < river\-in\-northern\-hunan\-province;
+筮 < divination\-with\-stalks\-of\-plants;
+笪 < a\-coarse\-mat\-of\-rushes\-or\-bamboo;
+馓 < fried\-round\-cakes\-of\-wheat\-flour;
+箐 < to\-draw\-a\-bamboo\-bow\-or\-crossbow;
+扃 < a\-door\-bar\-placed\-outside\-a\-door;
+仉 < surname\-of\-the\-mother\-of\-mencius;
+節外生枝 < new\-problems\-complicate\-an\-issue;
+鼻青臉腫 < a\-bloody\-nose\-and\-a\-swollen\-face;
+政界 < political\-and\-government\-circles;
+性別 < distinguishing\-between\-the\-sexes;
+違禁 < to\-violate\-a\-prohibtition\-or\-ban;
+酬和 < to\-respond\-to\-a\-poem\-with\-a\-poem;
+報考 < enter\-oneself\-for\-an\-examination;
+北國 < the\-northern\-part\-of\-the\-country;
+企業管理 < business\-management\-\(as\-a\-study\);
+外孫 < grandson\-\(son\-of\-one''s\-daughter\);
+光纖分佈式數據介面 < fiber\-distributed\-data\-interface;
+垃圾車 < garbage\-truck\-\(or\-other\-vehicle\);
+大國 < a\-power\-\(ie\,\-a\-dominant\-country\);
+骾 < any\-object\-that\-sticks\-in\-throat;
+探親 < to\-go\-home\-to\-visit\-one''s\-family;
+布法羅 < buffalo\-\(city\-in\-new\-york\-state\);
+八會穴 < the\-eight\-strategic\-nerve\-points;
+難以 < hard\-to\-\(predict\,\-imagine\,\-etc\.\);
+報效 < render\-service\-to\-repay\-kindness;
+醼 < offer\-food\-and\-wine\-one''s\-guests;
+輧 < curtained\-carriage\-used\-by\-women;
+軙 < a\-chinese\-family\-name\-to\-arrange;
+親戚 < \(a\)\-relative\-\(ie\,\-family\-member\);
+為期 < \(to\-be\-done\)\-by\-\(a\-certain\-date\);
+農曆 < the\-traditional\-chinese\-calendar;
+贁 < to\-defeat\-to\-spoil\-or\-be\-spoiled;
+賏 < pearls\-or\-shells\-strung\-together;
+諊 < to\-make\-a\-judicial\-investigation;
+按說 < in\-the\-ordinary\-course\-of\-events;
+連任 < continue\-in\-\(a\-political\)\-office;
+矮子裡拔將軍 < choose\-the\-best\-person\-available;
+臉譜 < types\-of\-facial\-makeup\-in\-operas;
+纙 < string\-on\-which\-coins\-are\-strung;
+筴 < type\-of\-grass\-used\-in\-divination;
+開庭 < begin\-a\-\(judicial\)\-court\-session;
+公審 < public\-trial\-\(in\-a\-court\-of\-law\);
+琇 < coarse\-variety\-of\-jasper\-or\-jade;
+但願 < if\-only\-\(it\-were\-possible\-to\.\.\.\);
+開普敦 < cape\-town\-\(city\-in\-south\-africa\);
+越來越嚴重 < to\-become\-more\-serious\-every\-day;
+不謀而合 < agree\-without\-prior\-consultation;
+捨得 < to\-be\-willing\-to\-part\-with\-\(sth\);
+棫 < thorny\-shrub\-with\-yellow\-flowers;
+見不得 < may\-not\-be\-seen\-by\-or\-exposed\-to;
+旓 < serrated\-edges\-on\-a\-chinese\-flag;
+持有 < hold\-\(eg\,\-passport\,\-views\,\-etc\.\);
+抗爭 < make\-a\-stand\-and\-fight\-\(against\);
+近乎同步數位階層 < plesiochronous\-digital\-hierarchy;
+按兵不動 < not\-throw\-the\-troops\-into\-battle;
+嶲 < a\-name\-of\-an\-old\-town\-in\-sichuan;
+篦子 < a\-double\-edged\-fine\-toothed\-comb;
+投機 < be\-a\-speculator\-\(profit\-seeking\);
+塱 < place\-name\-in\-guangdong\-province;
+剨 < sound\-of\-something\-being\-smashed;
+挪借 < to\-borrow\-money\-for\-a\-short\-time;
+宰相 < prime\-minister\-\(in\-feudal\-china\);
+一中一臺 < \"one\-china\,\-one\-taiwan\"\-\(policy\);
+䵬 < black\-sound\-of\-the\-flowing\-water;
+䴍 < a\-kind\-of\-strange\-and\-weird\-bird;
+䴉 < general\-term\-for\-a\-group\-of\-bird;
+䳰 < a\-bird\-resembling\-the\-wild\-goose;
+䱙 < a\-small\-kind\-of\-tuna\-or\-sturgeon;
+䰔 < dressed\-hair\-in\-a\-horizontal\-way;
+䪬 < sound\-of\-pressing\-something\-down;
+䩬 < an\-ornamental\-item\-on\-a\-scabbard;
+䧵 < a\-bird\-like\-the\-secretary\-falcon;
+䦎 < a\-mechanical\-device\-for\-lead\-ore;
+䥾 < to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥙 < a\-speculum\-used\-in\-ancient\-times;
+䤷 < a\-lance\-with\-three\-or\-two\-points;
+中日韓越 < china\,\-japan\,\-korea\,\-and\-vietnam;
+䣢 < name\-of\-a\-place\-in\-ancient\-times;
+䝁 < a\-kind\-of\-wild\-leguminous\-plants;
+䛶 < writings\-eulogizing\-adead\-person;
+虛腕 < empty\-wrist\-\(method\-of\-painting\);
+䗤 < a\-kind\-of\-worm\-produced\-in\-water;
+取得大學學位 < to\-obtain\-a\-university\-education;
+䍰 < a\-plague\-or\-a\-pestilence\-of\-goat;
+䊊 < well\-boiled\-congee\-or\-rice\-gruel;
+䉈 < a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䇈 < to\-put\-into\-a\-cupboard\-or\-closet;
+䇀 < ornaments\-of\-fine\-feather\-or\-fur;
+䅹 < a\-kind\-of\-drill\-for\-sowing\-grain;
+䅩 < crooked\-and\-winding\-of\-the\-grass;
+䄷 < a\-measurement\-equal\-to\-120\-catty;
+䃪 < a\-platform\-for\-sacrificial\-rites;
+䂞 < a\-thorny\-tree\-about\-15\-feet\-high;
+創辦人 < founder\-\(of\-an\-institution\,\-etc\);
+㺜 < fierce\-dog\-with\-long\-shaggy\-hair;
+㺉 < a\-fierce\-animal\-of\-the\-dog\-tribe;
+不論 < no\-matter\-\(what\,\-who\,\-how\,\-etc\.\);
+㹡 < a\-rush\-and\-impatient\-disposition;
+㸡 < board\-to\-block\-the\-water\-current;
+㸚 < scattered\-or\-dispersed\-and\-clear;
+㴭 < immeasurable\-depth\-or\-profundity;
+㱨 < to\-prepare\-a\-body\-for\-the\-coffin;
+保修 < guarantee\-to\-keep\-in\-good\-repair;
+㬇 < name\-of\-a\-state\-in\-ancient\-china;
+㩽 < branches\-to\-be\-a\-parasite\-a\-tree;
+㨒 < to\-cut\-open\-and\-clean\-\-\-\-as\-fish;
+金邊 < phnom\-penh\-\(capital\-of\-cambodia\);
+㢲 < the\-5th\-of\-the\-eight\-diagrams\-八卦;
+㟨 < a\-fountain\-in\-the\-side\-of\-a\-hill;
+㛍 < to\-have\-one''s\-ambition\-fulfilled;
+㚡 < standing\-without\-a\-straight\-back;
+㚉 < to\-make\-a\-profit\-on\-sell\-and\-buy;
+侵佔 < to\-invade\-and\-occupy\-\(territory\);
+㕣 < a\-marsh\-at\-the\-foot\-of\-the\-hills;
+柯密 < kermit\-\(communications\-protocol\);
+享有 < enjoy\-\(rights\,\-privileges\,\-etc\.\);
+禮炮 < a\-gun\-salute\-\(eg\,\-21\-gun\-salute\);
+突厥 < turkic\-\(minority\-group\-in\-china\);
+戈爾巴喬夫 < \(former\-soviet\-leader\)\-gorbachev;
+逼供信 < obtain\-confessions\-by\-compulsion;
+安保 < \(abbreviation\)\-maintain\-security;
+壽麵 < birthday\-noodles\-\(for\-longevity\);
+浴室 < bathroom\-\(room\-used\-for\-bathing\);
+令人 < cause\-someone\-to\-\(be\,\-feel\,\-etc\);
+形影不離 < inseparable\-\(as\-form\-and\-shadow\);
+商業版本 < commercial\-version\-\(of\-software\);
+百讀不厭 < be\-worth\-reading\-a\-hundred\-times;
+除非 < only\-if\-\(\.\.\.\,\-or\-otherwise\,\-\.\.\.\);
+歧視 < discrimination\-\(against\-someone\);
+敗落 < decline\-\(in\-wealth\-and\-position\);
+無錫 < wuxi\-\(city\)\,\-in\-jiangsu\-province;
+分波多工 < wavelength\-division\-multiplexing;
+必由之路 < the\-road\-one\-must\-follow\-or\-take;
+们 < adjunct\-pronoun\-indicate\-plural;
+呢 < interrogative\-or\-emphatic\-final;
+楼 < building\-of\-two\-or\-more\-stories;
+药 < leaf\-of\-dahurian\-angelica\-plant;
+齎 < take\-in\-both\-hands\-and\-offer\-to;
+丈 < unit\-of\-length\-equal\-3\.3\-meters;
+挑 < a\-load\-carried\-on\-the\-shoulders;
+祝 < pray\-for\-happiness\-or\-blessings;
+杉 < various\-species\-of\-pine\-and\-fir;
+朧 < condition\-or\-appearance\-of\-moon;
+霸 < rule\-by\-might\-rather\-than\-right;
+箪 < small\-bamboo\-basket\-for\-holding;
+醤 < any\-jam\-like\-or\-paste\-like\-food;
+炕 < the\-brick\-bed\-in\-northern\-china;
+亥 < last\-of\-twelve\-earthly\-branches;
+粤 < guangdong\-and\-guangxi\-provinces;
+粽 < dumpling\-made\-of\-glutinous\-rice;
+陇 < mountain\-located\-between\-shanxi;
+闾 < village\-of\-twenty\-five\-families;
+郦 < place\-in\-today''s\-henan\-province;
+鞅 < leather\-strap\-over\-horse''s\-neck;
+铡 < sickle\-for\-cutting\-grass\-or\-hay;
+骧 < gallop\-about\-with\-head\-uplifted;
+骢 < horse\-with\-a\-bluish\-white\-color;
+蛳 < kind\-of\-snail\-with\-spiral\-shell;
+邳 < a\-department\-in\-the\-state\-of\-lu;
+郢 < state\-in\-today''s\-hubei\-province;
+骖 < two\-outside\-ones\-in\-three\-horse;
+轸 < cross\-board\-at\-rear\-of\-carriage;
+箜 < ancient\-string\-music\-instrument;
+郐 < state\-in\-today''s\-henan\-province;
+轹 < run\-over\-something\-with\-vehicle;
+栝 < a\-builder''s\-frame\-for\-measuring;
+獍 < an\-animal\-which\-eats\-its\-mother;
+負責人 < person\-in\-charge\-\(of\-something\);
+姐夫 < brother\-in\-law\-\(husband''s\-side\);
+十三經 < the\-thirteen\-confucian\-classics;
+實時操作環境 < real\-time\-operating\-environment;
+特區 < special\-\(administrative\)\-region;
+日圓 < japanese\-yen\-\(unit\-of\-currency\);
+病蟲害 < plant\-diseases\-and\-insect\-pests;
+亨特泰羅 < hunter\-tylo\-\(hollywood\-actress\);
+壁櫥 < a\-built\-in\-wardrobe\-or\-cupboard;
+閉門造車 < make\-a\-cart\-behind\-closed\-doors;
+避暑 < be\-away\-for\-the\-summer\-holidays;
+步搖 < dangling\-ornament\-worn\-by\-women;
+國際商業機器 < international\-business\-machines;
+鼗 < small\-revolving\-drum\-with\-knobs;
+鼒 < large\-tripod\-caldron\-with\-small;
+鶖 < large\-waterfowl\-with\-naked\-head;
+騄 < name\-of\-a\-legendary\-swift\-horse;
+餖 < food\-item\-set\-out\-for\-show\-only;
+頣 < to\-view\-others\-with\-raised\-eyes;
+邦交 < relations\-between\-two\-countries;
+鄴 < place\-in\-today''s\-honan\-province;
+鄚 < place\-in\-today''s\-hebei\-province;
+郔 < place\-name\-in\-shandong\-province;
+邽 < name\-of\-a\-county\-in\-han\-dynasty;
+軨 < lattice\-work\-on\-front\-and\-sides;
+踋 < the\-foot\-or\-feet\-cast\-of\-a\-play;
+數據鏈路連接識別碼 < data\-link\-connection\-identifier;
+襭 < tuck\-up\-hem\-of\-garment\-and\-wrap;
+裋 < cotton\-clothes\-of\-a\-boy\-servant;
+衺 < slit\-in\-garment\-to\-aid\-movement;
+蠨 < a\-kind\-of\-spider\-with\-long\-legs;
+螣 < mythological\-wingless\-dragon\-of;
+提煉 < to\-extract\-\(ore\,\-minerals\,\-etc\);
+苤 < brassica\-campestris\-subsp\.\-rapa;
+橋接 < bridging\-\(in\-computer\-networks\);
+艕 < two\-boats\-fastened\-side\-by\-side;
+八方 < the\-eight\-points\-of\-the\-compass;
+膫 < the\-fat\-covering\-the\-intestines;
+悲喜交集 < mixed\-feelings\-of\-grief\-and\-joy;
+內政 < internal\-affairs\-\(of\-a\-country\);
+縗 < sackcloth\-worn\-on\-breast\-during;
+迫使 < force\-\(someone\-to\-do\-something\);
+篪 < a\-bamboo\-flute\-with\-seven\-holes;
+吃不服 < not\-be\-accustomed\-to\-eating\-sth;
+長廊 < the\-long\-corridor\-at\-yi\-he\-yuan;
+瞖 < a\-cataract\-or\-film\-over\-the\-eye;
+不修邊幅 < not\-care\-about\-one''s\-appearance;
+畤 < place\-for\-worshipping\-the\-haven;
+元帥 < a\-marshal\-\(in\-the\-armed\-forces\);
+甗 < earthenware\-vessel\-in\-two\-parts;
+符合美國利益 < in\-line\-with\-american\-interests;
+大快人心 < to\-the\-satisfaction\-of\-everyone;
+校長 < \(college\,\-university\)\-president;
+烳 < to\-travel\-by\-the\-light\-of\-torch;
+灕 < short\-name\-for\-guangxi\-province;
+馬尼拉 < manila\-\(capital\-of\-philippines\);
+開刀 < to\-perform\-or\-have\-an\-operation;
+沴 < foul\-and\-poisonous\-in\-confusion;
+樐 < a\-lookout\-turret\-on\-a\-city\-wall;
+棻 < kind\-of\-wood\-from\-which\-perfume;
+輩分 < seniority\-in\-the\-family\-or\-clan;
+枌 < variety\-of\-elm\-with\-small\-seeds;
+鞭長莫及 < beyond\-the\-reach\-of\-one''s\-power;
+不學無術 < have\-neither\-learning\-nor\-skill;
+應該說 < it\-should\-be\-mentioned\-that\-\.\.\.;
+不得不 < have\-no\-choice\-or\-option\-but\-to;
+不寒而慄 < shiver\-all\-over\-though\-not\-cold;
+尾牙 < a\-year\-end\-dinner\-for\-employees;
+班輪 < regular\-passenger\-or\-cargo\-ship;
+垟 < clay\-sheep\-buried\-with\-the\-dead;
+抨擊 < attack\-\(verbally\-or\-in\-writing\);
+舞台 < \(theatrical\-or\-political\)\-stage;
+咠 < to\-whisper\.\-to\-blame\-to\-slander;
+叧 < to\-cut\-meat\-off\-away\-from\-bones;
+冔 < cap\-worn\-during\-the\-yin\-dynasty;
+亼 < to\-assemble\.\-to\-gather\-together;
+乄 < shime\:\-to\-find\-a\-place\-to\-dwell;
+䵸 < the\-toad\-that\-lives\-in\-the\-moon;
+䳡 < a\-kind\-of\-bird\-in\-ancient\-books;
+北伐軍 < the\-northern\-expeditionary\-army;
+䲞 < a\-second\-general\-name\-for\-perch;
+䱌 < a\-second\-name\-for\-the\-globefish;
+䰝 < a\-large\-earthen\-pot\-for\-cooking;
+䰀 < dressed\-hair\-of\-a\-chinese\-woman;
+䮸 < to\-move\-slowly\-and\-then\-swiftly;
+䬻 < to\-entertain\-a\-departing\-friend;
+䪾 < to\-deal\-with\-affairs\-cautiously;
+䪍 < a\-container\-for\-bows\-and\-arrows;
+䨣 < leather\-to\-be\-moistened\-by\-rain;
+軟體出版協會 < software\-publishers\-association;
+䣣 < name\-of\-a\-place\-name\-of\-a\-place;
+䟚 < to\-sit\-with\-the\-legs\-spread\-out;
+䜷 < fermented\-and\-seasoned\-soybeans;
+䜪 < name\-of\-a\-pavilion\-in\-old\-times;
+䛀 < reasonable\-authority\-statements;
+䘅 < a\-small\-gadflies\-and\-mosquitoes;
+可移植 < portable\-\(programming\-language\);
+䐃 < fat\-in\-the\-abdomen\-or\-intestine;
+䍛 < a\-kind\-of\-tool\-used\-to\-get\-fish;
+䊤 < vegetable\-mixed\-with\-thick\-soup;
+䂲 < standard\-weights\-used\-in\-scales;
+䁰 < to\-look\-in\-a\-evil\-or\-wicked\-way;
+㼖 < gourd\-used\-as\-a\-ladle\-or\-dipper;
+㻫 < a\-gem\-or\-ornament\-on\-a\-scabbard;
+猛跌 < drop\-sharply\-\(eg\,\-stock\-prices\);
+層出不窮 < to\-come\-out\-one\-after\-the\-other;
+信件 < a\-letter\-\(ie\,\-sent\-in\-the\-mail\);
+㬹 < tendons\-of\-the\-heel\-of\-the\-foot;
+㬁 < the\-sun\-is\-shining\-on\-the\-water;
+㥆 < indulgent\-and\-without\-restraint;
+八級工資制 < eight\-grade\-wage\-scale\-\(system\);
+㗘 < to\-bite\-the\-hard\-and\-solid\-food;
+使命 < a\-\(diplomatic\-or\-other\)\-mission;
+㓢 < to\-cut\-the\-flesh\-from\-the\-bones;
+㓔 < faded\-and\-fallen\-\-\-\-as\-blossoms;
+㒻 < to\-go\-forward\-with\-eyes\-covered;
+丹皮 < the\-root\-bark\-of\-the\-peony\-tree;
+定做 < to\-have\-something\-made\-to\-order;
+在密切注意 < to\-pay\-close\-attention\-\(to\-sth\);
+安民告示 < a\-notice\-to\-reassure\-the\-public;
+松下電氣工業 < matsushita\-electronics\-industry;
+重用 < to\-put\-in\-an\-important\-position;
+細菌武器 < biological\-weapon\-\(using\-germs\);
+比賽 < \[athletic\-or\-other\]\-competition;
+別開生面 < start\-something\-new\-or\-original;
+敘述 < relate\-\(a\-story\-or\-information\);
+加重 < become\|make\-more\-serious\|graver;
+蔚為 < to\-afford\-\(a\-view\-of\-sth\,\-e\.g\.\);
+經濟學 < economics\-\(as\-a\-field\-of\-study\);
+電臺 < radio\-\(or\-broadcasting\)\-station;
+如飢似渴 < thirsting\-or\-hungering\-for\-sth\.;
+開國元勛 < founding\-fathers\-\(of\-a\-country\);
+碑林 < the\-forest\-of\-steles\-\(in\-xi''an\);
+幹 < trunk\-of\-tree\-or\-of\-human\-body;
+尺 < chinese\-measure\-approx\.\-''foot'';
+米 < hulled\-or\-husked\-uncooked\-rice;
+鹏 < fabulous\-bird\-of\-enormous\-size;
+喂 < interjection\-to\-call\-attention;
+潇 < sound\-of\-beating\-wind\-and\-rain;
+禹 < legendary\-hsia\-dynasty\-founder;
+斟 < to\-pour\-wine\-or\-tea\-into\-a\-cup;
+萼 < the\-stem\-and\-calyx\-of\-a\-flower;
+阀 < powerful\-and\-influential\-group;
+楷 < model\-style\-of\-chinese\-writing;
+辄 < sides\-of\-chariot\-where\-weapons;
+俑 < wooden\-figure\-buried\-with\-dead;
+嘹 < used\-describe\-clarity\-of\-voice;
+轼 < horizontal\-wooden\-bar\-in\-front;
+馑 < time\-of\-famine\-or\-crop\-failure;
+伥 < ghost\-of\-one\-devoured\-by\-tiger;
+绶 < silk\-ribbon\-attached\-as\-a\-seal;
+鬈 < fine\-growth\-of\-hair\-curly\-hair;
+磔 < downward\-stroke\-slanting\-right;
+裢 < folding\-purse\-inserted\-in\-belt;
+枸 < kind\-of\-aspen\-found\-in\-sichuan;
+芊 < exuberant\-and\-vigorous\-foliage;
+鄄 < name\-of\-a\-district\-in\-shandong;
+鼹 < a\-kind\-of\-insectivorous\-rodent;
+莼 < an\-edible\-water\-plant\-brasenia;
+圬 < plaster\-over\-with\-layer\-of\-mud;
+莩 < membrane\-lining\-inside\-of\-reed;
+诶 < an\-exclamation\-of\-confirmation;
+褙 < paper\-or\-cloth\-pasted\-together;
+直接數據 < data\-direct\-\(in\-lan\-emulation\);
+外灘 < waitan\-\(the\-bund\)\,\-in\-shanghai;
+證實 < confirm\-\(something\-to\-be\-true\);
+愛面子 < be\-concerned\-about\-face\-saving;
+議員 < member\-\(of\-a\-legislative\-body\);
+報表 < forms\-for\-reporting\-statistics;
+明報 < ming\-pao\-newspaper\-\(hong\-kong\);
+前程 < future\-\(career\,\-etc\)\-prospects;
+登門 < pay\-a\-visit\-to\-someone''s\-house;
+邊民 < people\-living\-on\-the\-frontiers;
+那末 < if\-that''s\-the\-case\,\-then\-\(\.\.\.\);
+效應 < effect\-\(eg\,\-greenhouse\-effect\);
+墨爾缽 < melbourne\-\(an\-australian\-city\);
+歹徒 < evil\-person\-who\-commits\-crimes;
+收復 < recover\-\(lost\-territory\,\-etc\.\);
+傲骨 < lofty\-and\-unyielding\-character;
+斷交 < break\-off\-diplomatic\-relations;
+電腦與電話系統整合 < computer\-telephony\-integration;
+鶋 < a\-sea\-bird\-with\-a\-white\-breast;
+鯏 < a\-dialect\.\.\.\.\.\.\.\.\-name\-of\-fish;
+饁 < carry\-meal\-to\-workers\-in\-field;
+日本電報電話公司 < nippon\-telegraph\-and\-telephone;
+鎫 < ornament\-over\-the\-horse''s\-head;
+傳統醫藥 < \(chinese\)\-traditional\-medicine;
+赙 < gift\-of\-money\-help\-pay\-funeral;
+有史以來 < since\-the\-beginning\-of\-history;
+帳戶 < \(bank\,\-computer\,\-etc\.\)\-account;
+詤 < to\-make\-wild\-statements\-to\-lie;
+核威懾政策 < policy\-of\-nuclear\-intimidation;
+蘴 < young\-shoots\-of\-the\-rapeturnip;
+莝 < to\-chop\-straw\-fine\-for\-animals;
+索杰納 < sojourner\-\(martian\-land\-rover\);
+腠 < between\-the\-skin\-and\-the\-flesh;
+包治百病 < guarantee\-to\-cure\-all\-diseases;
+翿 < streamer\-adorned\-with\-feathers;
+筥 < round\-shaped\-bamboo\-basket\-for;
+固然 < admittedly\-\(it''s\-true\-that\.\.\.\);
+痄 < scrofulous\-swellings\-and\-sores;
+中華人民共和國 < the\-people''s\-republic\-of\-china;
+玤 < a\-kind\-of\-gem\-inferior\-to\-jade;
+服務廣告協議 < service\-advertisement\-protocol;
+煠 < to\-fry\-in\-fat\-or\-oil\.\-to\-scald;
+臺獨 < taiwan\-independence\-\(movement\);
+潏 < fareshare\-reclaimed\-from\-river;
+漼 < having\-the\-appearance\-of\-depth;
+保苗 < keep\-a\-full\-stand\-of\-seedlings;
+欞 < the\-lattice\-of\-a\-window\-a\-sill;
+按需分配 < distribution\-according\-to\-need;
+世貿組織 < wto\-\(world\-trade\-organization\);
+曚 < twilight\-just\-before\-sun\-rises;
+沒有什麼 < there''s\-nothing\-\(\.\.\.\-about\-it\);
+斚 < a\-small\-cup\-of\-stone\-with\-ears;
+按勞分配 < distribution\-according\-to\-work;
+路由 < routing\-\(in\-computer\-networks\);
+對美 < \(policy\,\-etc\.\)\-towards\-america;
+指數 < \(numerical\,\-statistical\)\-index;
+筆畫 < strokes\-of\-a\-chinese\-character;
+扊 < upright\-bar\-for\-fastening\-door;
+慜 < name\-of\-a\-monk\-in\-tang\-dynasty;
+空襲 < \(military\)\-attack\-from\-the\-air;
+崠 < place\-name\-in\-guangxi\-province;
+表報 < statistical\-tables\-and\-reports;
+岝 < name\-of\-a\-mountain\-in\-shandong;
+拘押 < \(arrest\-and\)\-take\-into\-custody;
+談得來 < able\-to\-talk\-to\-or\-get\-on\-with;
+堭 < a\-dry\-moat\-outside\-a\-city\-wall;
+堎 < character\-used\-for\-place\-names;
+嚹 < a\-particle\-implying\-completion;
+阿拉木圖 < almaty\-\(capital\-of\-kazakhstan\);
+匳 < ladies\-toilet\-case\-with\-mirror;
+刵 < punishment\-by\-cutting\-off\-ears;
+尚書 < high\-official\-in\-ancient\-china;
+䲁 < general\-term\-of\-a\-kind\-of\-fish;
+七層架構 < seven\-layer\-architecture\-\(osi\);
+䰚 < the\-top\-part\-of\-the\-rice\-gruel;
+䯵 < hair\-style\-for\-little\-children;
+䯤 < boneware\-used\-to\-comb\-the\-hair;
+䯒 < the\-upper\-part\-of\-the\-shinbone;
+䮔 < a\-young\-and\-fleet\-footed\-horse;
+䭺 < a\-horse\-to\-raise\-its\-head\-high;
+䫮 < to\-bend\-or\-lower\-of\-one''s\-head;
+䫆 < the\-front\-and\-back\-of\-the\-neck;
+䧒 < steps\-leading\-up\-to\-a\-building;
+䤛 < component\-parts\-of\-a\-cross\-bow;
+䣹 < to\-brew\-10\-percent\-of\-the\-wine;
+䣵 < to\-brew\-the\-wine\-a\-second\-time;
+䣬 < the\-shiny\-colorful\-of\-the\-wine;
+聳立 < to\-tower\-above\-\(on\-top\-of\-sth\);
+䢾 < name\-of\-an\-ancient\-small\-state;
+䡃 < a\-tool\-for\-brushing\-the\-thread;
+䜲 < name\-of\-a\-village\-in\-old\-china;
+班組 < teams\-and\-groups\-\(in\-factories;
+䘓 < thick\-blood\-of\-cattle\-and\-goat;
+䓿 < a\-second\-name\-for\-lotus\-flower;
+䓹 < to\-stuff\-full\-and\-to\-gulp\-down;
+䍁 < the\-hem\-or\-border\-of\-a\-garment;
+䋴 < silk\-fabrics\-with\-mixed\-colors;
+䋳 < cloth\-or\-paper\-pasted\-together;
+伯母 < wife\-of\-father''s\-elder\-brother;
+䉤 < a\-bamboo\-ware\-for\-washing\-rice;
+䉛 < bamboo\-basket\-for\-washing\-rice;
+䉓 < mattress\-made\-of\-bamboo\-strips;
+䇬 < thin\-bamboo\-laths\-knitted\-sail;
+䇧 < to\-fill\-an\-opening\-with\-bamboo;
+䄡 < northern\-minority\-ethnic\-group;
+䃶 < rugged\-and\-uneven\-of\-the\-rocks;
+䃚 < rugged\-land\-of\-sand\-and\-pebble;
+䃂 < dull\-sound\-of\-the\-tolling\-bell;
+㼡 < a\-small\-jar\-with\-a\-small\-mouth;
+㵷 < turbulent\-flowing\-of\-the\-water;
+中藥 < \(traditional\)\-chinese\-medicine;
+語音通訊通道 < voice\-\(communications\)\-channel;
+㲹 < the\-dry\-soil\-on\-the\-river\-side;
+㲝 < fine\-hair\-of\-birds\-and\-animals;
+㯅 < the\-branches\-growing\-downwards;
+㮂 < an\-appliance\-used\-to\-lift\-food;
+㬤 < wet\-clothes\-not\-completely\-dry;
+㪾 < to\-cut\-the\-flesh\-from\-the\-bone;
+㨙 < to\-clasp\-or\-hold\-under\-the\-arm;
+㦲 < a\-particle\-expressing\-surprise;
+㥋 < sound\-of\-the\-anguish\-of\-sorrow;
+㤯 < clever\-or\-smart\-in\-a\-small\-way;
+㤔 < to\-concede\-or\-submit\-willingly;
+㣇 < a\-kind\-of\-beast\-with\-long\-hair;
+㡞 < a\-sack\-used\-to\-feed\-the\-horses;
+㠣 < a\-mountain\-in\-jiangxi\-province;
+㞯 < the\-turning\-area\-of\-a\-mountain;
+班主任 < a\-teacher\-in\-charge\-of\-a\-class;
+㜆 < commonly\-known\-as\-mother\-in\-wu;
+㙚 < red\-colored\-hard\-and\-solid\-mud;
+㘞 < yelling\-sound\-of\-towing\-a\-boat;
+㔩 < hair\-ornments\-used\-in\-old\-time;
+㔀 < to\-brand\-criminals\-on\-the\-face;
+暗袋 < camera\-bag\-\(for\-changing\-film\);
+可選擇丟棄 < discard\-eligible\-\(frame\-relay\);
+處決 < execute\-\(a\-condemned\-criminal\);
+應有盡有 < everything\-\(one\-could\-imagine\);
+新鮮 < fresh\-\(experience\,\-food\,\-etc\.\);
+導航員 < navigator\-\(on\-a\-plane\-or\-boat\);
+叫聲 < yelling\-\(sound\-made\-by\-person\);
+班師 < withdraw\-troops\-from\-the\-front;
+哀悼 < grieve\-\(mourn\)\-over\-sb''s\-death;
+科恩 < cohen\-\(u\.s\.\-defence\-secretary\);
+敗陣 < be\-defeated\-on\-the\-battlefield;
+眾議院 < house\-of\-representatives\-\(usa\);
+包賠 < guarantee\-to\-pay\-compensations;
+名次 < position\-in\-a\-ranking\-of\-names;
+嫂嫂 < sister\-in\-law\-\(husband''s\-side\);
+奉行 < to\-pursue\-\(a\-course\,\-a\-policy\);
+青山綠水 < verdant\-hills\-and\-green\-waters;
+呼喚 < call\-out\-\(someone''s\-name\,\-etc\);
+𠀁 < the\-original\-form\-for\-七\-u\+4e03;
+𠀀 < the\-sound\-made\-by\-breathing\-in;
+虹橋機場 < hongqiao\-airport\-\(in\-shanghai\);
+統一招生 < national\-unified\-entrance\-exam;
+示威 < hold\-a\-\(protest\)\-demonstration;
+東部時間 < \(u\.s\.\)\-eastern\-\(standard\)\-time;
+當事人 < persons\-involved\-or\-implicated;
+時大時小 < sometimes\-big\,\-sometimes\-small;
+常規銅電話線 < ordinary\-copper\-telephone\-line;
+迦 < character\-for\-transliteration;
+庵 < buddhist\-monastery\-or\-nunnery;
+庚 < seventh\-of\-ten\-cyclical\-stems;
+趣 < what\-attracts\-one''s\-attention;
+畔 < boundary\-path\-dividing\-fields;
+夾 < be\-wedged\-or\-inserted\-between;
+辆 < numerary\-adjunct\-for\-vehicles;
+怔 < a\-disease\-resembling\-neurosis;
+陌 < foot\-path\-between\-rice\-fields;
+骆 < a\-white\-horse\-with\-black\-mane;
+楣 < crossbeam\-above\-or\-under\-gate;
+璧 < piece\-of\-jade\-with\-hole\-in\-it;
+膻 < rank\-odor\-\(of\-sheep\-or\-goats\);
+玑 < pearl\-that\-is\-not\-quite\-round;
+唢 < flute\-like\-musical\-instrument;
+楂 < a\-raft\.\-to\-hew\.\-to\-fell\-trees;
+犒 < entertain\-victorious\-soldiers;
+矍 < look\-about\-in\-fright\-or\-alarm;
+擤 < to\-blow\-the\-nose\-with\-fingers;
+芡 < plant\-allied\-to\-the\-waterlily;
+籼 < non\-glutinous\-long\-grain\-rice;
+桡 < bent\-or\-twisted\-piece\-of\-wood;
+黻 < special\-pattern\-of\-embroidery;
+嵝 < goulou\-mountain\-peak\-in\-hunan;
+垭 < character\-used\-in\-place\-names;
+硖 < \<arch\>\-town\-in\-hebei\-province;
+邡 < name\-of\-a\-district\-in\-sichuan;
+讠 < simplified\-kangxi\-radical\-149;
+噻 < character\-used\-in\-translation;
+疬 < scrofulous\-lumps\-or\-swellings;
+蔟 < frame\-on\-which\-silkworms\-spin;
+垧 < variable\-unit\-of\-land\-measure;
+鬏 < a\-coiffure\-on\-top\-of\-the\-head;
+筘 < \(a\-measure\-of\-width\-of\-cloth\);
+缑 < cord\-binding\-on\-hilt\-of\-sword;
+簖 < bamboo\-trap\-for\-catching\-fish;
+庋 < a\-cupboard\-or\-pantry\-to\-store;
+甍 < rafters\-supporting\-roof\-tiles;
+吃刀 < penetration\-of\-a\-cutting\-tool;
+各位 < everybody\-\(a\-term\-of\-address\);
+韓圓 < korean\-won\-\(unit\-of\-currency\);
+不辭而別 < leave\-without\-saying\-good\-bye;
+百聽不厭 < worth\-hearing\-a\-hundred\-times;
+低階語言 < low\-level\-\(computer\)\-language;
+不足為訓 < not\-to\-be\-taken\-as\-an\-example;
+報社 < general\-office\-of\-a\-newspaper;
+發跡 < to\-rise\-to\-power\-and\-position;
+支援 < provide\-assistance\-or\-backing;
+觀測 < \(scientific\,\-etc\)\-observation;
+違心 < against\-ones\-will\-or\-feelings;
+駹 < black\-horse\-with\-a\-white\-face;
+饎 < wine\-and\-food\-eaten\-with\-wine;
+同步數位階層 < synchronous\-digital\-hierarchy;
+拼音 < pinyin\-\(chinese\-romanization\);
+大吹大擂 < make\-an\-exhibition\-of\-oneself;
+釄 < wine\-brew\-for\-the\-second\-time;
+釁 < smear\-with\-blood\-in\-sacrifice;
+境外 < outside\-\(a\-country''s\)\-borders;
+上海戲劇學院 < shanghai\-theatrical\-institute;
+迧 < a\-chinese\-family\-name\-arrange;
+轘 < tear\-asunder\-between\-chariots;
+輙 < sides\-of\-chariot\-were\-weapons;
+拌面 < noodles\-served\-with\-soy\-sauce;
+直接 < direct\-\(opposite\-of\-indirect\);
+詀 < garrulous\-to\-whisper\.\-to\-joke;
+訹 < to\-beguile\-with\-false\-stories;
+藊 < a\-kind\-of\-bean\-with\-flat\-pods;
+安之若素 < bear\-hardship\-with\-equanimity;
+舠 < long\-narrow\-knife\-shaped\-boat;
+鏡頭 < camera\-shot\-\(in\-a\-movie\,\-etc\);
+翣 < feathers\-used\-decorate\-coffin;
+莫不 < there\-is\-no\-one\-\(who\-doesn''t\);
+送人 < to\-see\-\(or\-walk\)\-someone\-home;
+白文 < the\-text\-of\-an\-annotated\-book;
+縓 < orange\-or\-reddish\-yellow\-silk;
+西哈努克 < \(king\)\-sihanouk\-\(of\-cambodia\);
+將領 < high\-ranking\-military\-officer;
+殺人案件 < \(case\-of\,\-incident\-of\)\-murder;
+糏 < rice\-grits\-left\-after\-hulling;
+篘 < a\-utensil\-used\-to\-filter\-wine;
+紅綠燈 < \(red\-and\-green\)\-traffic\-light;
+掌權 < wield\-\(political\,\-etc\.\)\-power;
+促進 < to\-promote\-\(an\-idea\-or\-cause\);
+矰 < arrow\-with\-attached\-silk\-cord;
+公安 < \(ministry\-of\)\-public\-security;
+玃 < a\-large\-ape\-found\-in\-w\.\-china;
+猇 < the\-scream\-or\-roar\-of\-a\-tiger;
+牸 < the\-female\-of\-certain\-animals;
+背道而馳 < run\-in\-the\-opposite\-direction;
+滙 < waters\-converging\-to\-one\-spot;
+傳輸控制協定 < transmission\-control\-protocol;
+病根 < an\-incompletely\-cured\-illness;
+補報 < make\-a\-report\-after\-the\-event;
+重複節 < repeated\-segment\-\(networking\);
+椊 < to\-fit\-a\-handle\-into\-a\-socket;
+不名一文 < without\-a\-penny\-to\-one''s\-name;
+不無小補 < not\-be\-without\-some\-advantage;
+對臺 < \(policy\,\-etc\.\)\-towards\-taiwan;
+板鼓 < a\-small\-drum\-for\-marking\-time;
+暐 < the\-bright\-shining\-of\-the\-sun;
+昳 < the\-declining\-sun\-in\-the\-west;
+特別行政區 < special\-administrative\-region;
+贅述 < to\-say\-more\-than\-is\-necessary;
+捬 < press\-down\-heavily\-with\-hands;
+抔 < take\-or\-hold\-up\-in\-both\-hands;
+實肘 < full\-arm\-\(method\-of\-painting\);
+淘金 < panning\-\(for\-precious\-metals\);
+崾 < place\-name\-in\-shanxi\-province;
+峫 < mountain\-in\-shandong\-province;
+姅 < woman\-at\-time\-of\-menstruation;
+壼 < palace\-corridor\-or\-passageway;
+壍 < moat\-around\-a\-city\.\-a\-channel;
+加強管制 < to\-tighten\-control\-\(over\-sth\);
+啩 < particle\-implying\-probability;
+叐 < to\-prick\-a\-dog\-to\-make\-him\-go;
+卐 < swastika\-fourth\-of\-auspicious;
+戈爾 < \(al\)\-gore\-\(us\-vice\-president\);
+䶕 < irregular\-and\-prominent\-teeth;
+䵘 < dosen''t\-t\-stick\-to\-each\-other;
+䲵 < a\-general\-name\-of\-small\-birds;
+亂說 < to\-make\-irresponsible\-remarks;
+䯆 < small\-and\-thin\-piece\-of\-bones;
+人民日報 < renmin\-ribao\-\(people''s\-daily\);
+䫲 < thin\-and\-sickly\-in\-appearance;
+䫤 < between\-the\-eyebrows\-and\-eyes;
+䫡 < a\-long\-shape\-of\-head\-and\-face;
+䫋 < female\-attendants\-or\-servants;
+開始以前 < before\-the\-beginning\-\(of\-sth\);
+䧐 < a\-mountain\-in\-shanxi\-province;
+䥣 < an\-instrument\-for\-boring\-wood;
+䥉 < the\-curved\-iron\-part\-of\-a\-hoe;
+䤒 < wine\-made\-from\-glutinous\-rice;
+䤍 < rotten\-paste\-or\-soybean\-sauce;
+不識大體 < fail\-to\-see\-the\-larger\-issues;
+䠽 < height\-or\-stature\-of\-a\-person;
+䠱 < to\-walk\-slowly\-and\-cautiously;
+䟧 < sound\-of\-treading\-or\-stepping;
+䞇 < gifts\-to\-superiors\-or\-friends;
+䝽 < name\-of\-a\-person\-in\-old\-china;
+兵工廠 < munitions\-or\-ordnance\-factory;
+䝙 < a\-kind\-of\-animal\-like\-a\-tiger;
+䜈 < to\-speak\-on\-behalf\-of\-another;
+䘳 < a\-garment\-of\-single\-thickness;
+䏼 < what\-is\-left\-over\-of\-the\-food;
+不打自招 < confess\-without\-being\-pressed;
+䎢 < to\-measure\-by\-pints\-and\-pecks;
+䎑 < flying\-over\-the\-water\-surface;
+䍮 < young\-goat\-under\-one\-year\-old;
+䍂 < tools\-to\-draw\-water\-or\-liquid;
+䌿 < the\-breadth\-of\-cloth\-or\-paper;
+䌗 < the\-left\-over\-of\-drawing\-silk;
+䌈 < to\-get\-something\-with\-a\-lasso;
+一舉兩得 < kill\-two\-birds\-with\-one\-stone;
+不軌 < against\-the\-law\-or\-discipline;
+䉥 < a\-small\-basket\-for\-chopsticks;
+半身像 < half\-length\-photo\-or\-portrait;
+䆺 < whirling\-of\-the\-flowing\-water;
+䅢 < mature\-or\-ripen\-of\-the\-grains;
+保商 < preservation\-of\-soil\-moisture;
+㿶 < the\-sides\-of\-a\-shoe\-or\-gutter;
+㽰 < carved\-window\-frame\-on\-a\-door;
+作戰 < conduct\-\(military\-operations\);
+㹂 < untamed\-and\-indocility\-cattle;
+㴄 < the\-water\-flowing\-in\-a\-turned;
+世行 < \[abbreviation\-for\]\-world\-bank;
+㰉 < the\-hazel\-nut\-or\-filbert\-tree;
+中華 < china\-\(alternate\-formal\-name\);
+㭟 < torture\-used\-in\-ancient\-times;
+㫐 < distant\-and\-indistinguishable;
+㡻 < name\-of\-a\-small\-ancient\-state;
+侵入 < to\-make\-\(military\)\-incursions;
+球檯 < table\-\(for\-games\-using\-balls\);
+㛐 < wife\-of\-one''s\-elder''s\-brother;
+㚆 < to\-do\-something\-in\-an\-old\-way;
+㖟 < to\-deliver\-over\-to\-personally;
+下臺 < step\-down\-\(from\-office\,\-etc\.\);
+貪污 < \(political\,\-moral\)\-corruption;
+中級 < middle\-level\-\(in\-a\-hierarchy\);
+有的 < \(there\-are\)\-some\-\(who\-are\.\.\.\);
+蓋飯 < rice\-with\-meat\-and\-vegitables;
+不速之客 < uninvited\-or\-unexpected\-guest;
+下班 < to\-come\-or\-go\-or\-get\-off\-work;
+發電量 < \(generated\)\-electrical\-energy;
+不得要領 < fail\-to\-grasp\-the\-main\-points;
+包銷 < have\-exclusive\-selling\-rights;
+進行調查 < to\-carry\-out\-an\-investigation;
+讓球 < to\-concede\-points\-\(in\-a\-game\);
+書房 < study\-\(i\.e\.\-the\-kind\-of\-room\);
+通用資源識別號 < universal\-resource\-identifier;
+認識 < be\-acquainted\-with\-\(a\-person\);
+卻病 < to\-prevent\-or\-treat\-a\-disease;
+遲遲 < \(be\)\-late\-\(with\-a\-task\,\-etc\.\);
+大街小巷 < large\-streets\-and\-small\-lanes;
+𠀅 < an\-alternate\-form\-of\-u\+4ea5\-亥;
+德班 < durban\-\(city\-in\-south\-africa\);
+保安族 < the\-baoan\-\(paoan\)\-nationality;
+擺輪 < balance\-\(of\-a\-watch\-or\-clock\);
+擺設 < furnish\-and\-decorate\-\(a\-room\);
+江澤民 < jiang\-zemin\-\(chinese\-premier\);
+熱線 < hotline\-\(communications\-link\);
+法制 < legal\-system\-and\-institutions;
+件 < numerary\-adjunct\-for\-article;
+吗 < final\-interrogative\-particle;
+麽 < interrogative\-final\-particle;
+矣 < particle\-of\-completed\-action;
+乒 < used\-with\-pong\-for\-ping\-pong;
+乓 < used\-with\-ping\-for\-ping\-pong;
+咚 < used\-as\-description\-of\-sound;
+琅 < a\-variety\-of\-white\-carnelian;
+孰 < who\?\-which\?\-what\?\-which\-one\?;
+戊 < fifth\-of\-ten\-celestial\-stems;
+渲 < add\-repeated\-washes\-of\-color;
+咫 < foot\-measure\-of\-zhou\-dynasty;
+饷 < rations\-and\-pay\-for\-soldiers;
+汶 < a\-river\-in\-shandong\-province;
+叁 < bank\-form\-of\-numeral\-''three'';
+壬 < ninth\-of\-ten\-celestial\-stems;
+柩 < coffin\-which\-contains\-corpse;
+桠 < the\-forking\-branch\-of\-a\-tree;
+甏 < a\-squat\-jar\-for\-holding\-wine;
+笞 < bamboo\-rod\-used\-for\-beatings;
+阗 < a\-place\-in\-xinjiang\-province;
+铉 < device\-for\-carrying\-a\-tripod;
+觥 < a\-cup\-made\-of\-horn\-obstinate;
+裣 < draw\-one''s\-hands\-into\-sleeve;
+崃 < mountain\-in\-sichuan\-province;
+罘 < screen\-used\-in\-ancient\-times;
+氇 < thick\-rough\-serge\-from\-tibet;
+埴 < soil\-with\-large\-clay\-content;
+昴 < one\-of\-the\-28\-constellations;
+菹 < salted\-or\-pickled\-vegetables;
+各大軍區 < \"the\-greater\-military\-areas\";
+水平 < level\-\(of\-achievement\,\-etc\.\);
+夫權 < authority\-over\-the\-household;
+印尼 < \(abbreviation\-for\)\-indonesia;
+變價 < appraise\-at\-the\-current\-rate;
+年夜飯 < new\-year''s\-eve\-family\-dinner;
+妹夫 < brother\-in\-law\-\(wife''s\-side\);
+進而 < and\-then\-\(what\-follows\-next\);
+李登輝 < lee\-teng\-hui\-\(taiwan\-leader\);
+陣線 < a\-front\-\(ie\,\-militant\-group\);
+呼籲美國 < to\-call\-on\-the\-united\-states;
+傳統中國醫藥 < chinese\-traditional\-medicine;
+歲月 < the\-years\-of\-a\-person''s\-life;
+豐衣足食 < have\-ample\-food\-and\-clothing;
+不知好歹 < not\-know\-what''s\-good\-for\-one;
+歸屬 < be\-under\-the\-jurisdiction\-of;
+在野 < be\-out\-of\-\(political\)\-office;
+廠房 < a\-building\-used\-as\-a\-factory;
+判決 < judgment\-\(by\-a\-court\-of\-law\);
+困難 < \(financial\,\-etc\.\)\-difficulty;
+鵭 < a\-small\-bird\-with\-black\-neck;
+大自然 < nature\-\(as\-in\-mother\-nature\);
+網管接口 < network\-management\-interface;
+隒 < the\-appearance\-of\-a\-mountain;
+掛號 < to\-register\-\(a\-letter\,\-etc\.\);
+補苗 < fill\-the\-gaps\-with\-seedlings;
+根據上表 < according\-to\-the\-above\-table;
+武力 < \(make\-use\-of\)\-military\-force;
+放假 < to\-have\-a\-holidy\-or\-vacation;
+醁 < a\-kind\-of\-green\-colored\-wine;
+舉重 < \(the\-sport\-of\)\-weightlifting;
+邿 < a\-state\-in\-shandong\-province;
+轖 < framework\-of\-lattice\-on\-cart;
+嚴詞 < \(criticize\,\-etc\.\)\-forcefully;
+觵 < a\-cup\-made\-of\-corn\-obstinate;
+華盛頓時報 < washington\-times\-\(newspaper\);
+境內 < within\-\(a\-country''s\)\-borders;
+華人 < ethnic\-chinese\-person\|people;
+橋本 < \(japanese\-surname\)\-hashimoto;
+地皮 < lot\,\-section\-of\-land\,\-ground;
+立方米 < cubic\-meter\-\(unit\-of\-volume\);
+轉機 < \(take\-a\)\-turn\-for\-the\-better;
+固定虛擬連接 < permanent\-virtual\-connection;
+常委 < member\-of\-standing\-committee;
+吃不消 < be\-unable\-to\-stand\-\(exertion;
+投票站 < polling\-station\-\(for\-a\-vote\);
+耇 < wrinkled\-face\-of\-the\-elderly;
+羴 < rank\-odour\-of\-sheep\-or\-goats;
+得票率 < percentage\-of\-votes\-obtained;
+絃 < string\-on\-musical\-instrument;
+國防利益 < \(national\)\-defence\-interests;
+開放系統互連 < open\-systems\-interconnection;
+筻 < place\-name\-in\-hunan\-province;
+竚 < stand\-and\-wait\-for\-long\-time;
+起飛 < to\-take\-off\-\(in\-an\-airplane\);
+開幕 < to\-open\-\(a\-conference\,\-e\.g\.\);
+打針 < to\-give\-or\-have\-an\-injection;
+睙 < to\-roll\-the\-eyeballs\-to\-look;
+瑂 < \(stone\-which\-resembles\-jade\);
+本末倒置 < take\-the\-branch\-for\-the\-root;
+燺 < the\-dry\-at\-the\-fire\-to\-roast;
+瀔 < river\-name\-in\-henan\-province;
+抱頭痛哭 < cry\-on\-each\-other''s\-shoulder;
+汧 < name\-of\-a\-river\-in\-shangdong;
+璧謝 < decline\-\(a\-gift\)\-with\-thanks;
+橵 < wood\-placed\-under\-roof\-tiles;
+對華 < \(policy\,\-etc\.\)\-towards\-china;
+不一而足 < by\-no\-means\-an\-isolated\-case;
+曈 < twilight\-just\-before\-sunrise;
+旟 < an\-military\-flag\-oa\-standard;
+儀器 < \(scientific\,\-etc\)\-instrument;
+原子科學家通報 < journal\-of\-atomic\-scientists;
+究辦 < to\-investigate\-and\-deal\-with;
+吃不住 < be\-unable\-to\-bear\-or\-support;
+扨 < pick\-up\-with\-fork\-or\-pincers;
+幰 < curtain\-at\-front\-of\-carriage;
+娀 < name\-of\-a\-concubine\-of\-di\-ku;
+白紙黑字 < \(written\)\-in\-black\-and\-white;
+埄 < whirling\-of\-dust\-in\-the\-wind;
+定罪 < convict\-\(someone\-of\-a\-crime\);
+本題 < the\-subject\-under\-discussion;
+背簍 < a\-basket\-carried\-on\-the\-back;
+北京藝術學院 < beijing\-academy\-of\-fine\-arts;
+不碎玻璃 < shatterproof\-or\-safety\-glass;
+有關 < to\-have\-something\-to\-do\-with;
+來源 < source\-\(of\-information\,\-etc\);
+䵠 < rushes\-used\-form\-making\-mats;
+䳍 < a\-kind\-of\-pheasant\-like\-bird;
+獲釋 < obtain\-release\-\(from\-prison\);
+䱱 < a\-kind\-of\-slippery\-long\-fish;
+䮇 < black\-horse\-with\-white\-thigh;
+對日 < \(policy\,\-etc\.\)\-towards\-japan;
+䬠 < the\-falling\-of\-snow\-and\-rain;
+䪭 < a\-kind\-of\-musical\-instrument;
+䪉 < metal\-decoration\-on\-a\-halter;
+䩡 < a\-kind\-of\-boots\-in\-old\-times;
+莫衷一是 < cannot\-decide\-which\-is\-right;
+䦜 < name\-of\-a\-state\-in\-old\-times;
+䥺 < name\-of\-a\-double\-edged\-sword;
+䥕 < the\-blade\-or\-edge\-of\-a\-spade;
+䤉 < emptied\-the\-drink\-completely;
+䣡 < name\-of\-a\-place\-in\-old\-times;
+䡑 < the\-rim\-or\-felloe\-of\-a\-wheel;
+䠴 < with\-a\-symmetric\-well\-formed;
+䝵 < to\-thank\-with\-money\-or\-gifts;
+䙗 < a\-swaddling\-cloth\-for\-infant;
+䘻 < curtain\-on\-a\-carriage\-or\-car;
+䘺 < a\-seam\-which\-has\-come\-unsewn;
+䘵 < hissing\-sound\-of\-the\-clothes;
+䔛 < fibrous\-plant\-of\-which\-cloth;
+䑹 < a\-numerary\-adjunct\-for\-ships;
+䍠 < turban\-used\-in\-ancient\-times;
+䌋 < a\-herchief\-hung\-at\-the\-waist;
+䋩 < pretty\-and\-fine\-silk\-fabrics;
+䋏 < thick\-and\-big\-ropes\-or\-cords;
+䋋 < a\-kind\-of\-spring\-fishing\-net;
+八國聯軍 < the\-eight\-power\-allied\-force;
+䆶 < noise\-of\-a\-mouse\-in\-the\-cave;
+䅳 < stalk\-of\-the\-panicled\-millet;
+䅭 < a\-variety\-of\-panicled\-millet;
+䅌 < stalk\-of\-wheat\-or\-rice\-plant;
+䃋 < a\-fine\-stone\-resembling\-jade;
+䂵 < sound\-of\-bumping\-or\-striking;
+䂫 < noise\-of\-stones\-rolling\-down;
+䀳 < not\-to\-look\-straight\-forward;
+㾴 < the\-erythema\-of\-acne\-rosacea;
+多年以來 < for\-many\-years\-\(in\-the\-past\);
+㹥 < a\-yellow\-dog\-with\-black\-head;
+㹁 < generally\-called\-the\-animals;
+㵵 < swift\-currents\-of\-the\-stream;
+㵎 < a\-mountain\-stream\-or\-torrent;
+㴚 < the\-small\-ditch\-in\-the\-field;
+知識產權 < intellectual\-property\-rights;
+憋氣 < feel\-suffocated\-or\-oppressed;
+㰆 < an\-instrument\-to\-blow\-a\-fire;
+㰁 < a\-tree\-with\-slanted\-branches;
+㯳 < a\-kind\-of\-tool\-to\-adjust\-bow;
+㥜 < unsuccessful\-in\-one''s\-career;
+㡱 < to\-cauterize\-by\-burning\-moxa;
+㠱 < to\-set\-with\-the\-legs\-clossed;
+㜌 < a\-different\-name\-for\-breasts;
+㙾 < hills\-with\-lots\-of\-big\-rocks;
+㙛 < a\-person''s\-name\-in\-old\-times;
+㗾 < to\-give\-vent\-to\-the\-feelings;
+㗆 < sound\-of\-the\-ringed\-pheasant;
+㓳 < use\-knife\-to\-split\-something;
+㑟 < insincere\-and\-cunning\-person;
+自治區 < autonomous\-region\-\(in\-china\);
+同胞 < fellow\-citizen\-or\-countryman;
+匾額 < a\-horizontal\-inscribed\-board;
+廣播和未知服務器 < broadcast\-and\-unknown\-server;
+確診 < to\-make\-a\-definite\-diagnosis;
+張純如 < \(american\-author\)\-iris\-chang;
+它們 < they\-\(for\-inanimate\-objects\);
+現場 < scene\-\(of\-event\-or\-incident\);
+愛情 < love\-\(between\-man\-and\-woman\);
+變節 < make\-a\-political\-recantation;
+誓死不降 < to\-vow\-to\-fight\-to\-the\-death;
+沒有必要 < there\-is\-no\-need\-to\-\(do\-sth\);
+涉嫌 < to\-be\-a\-suspect\-\(in\-a\-crime\);
+班務會 < a\-routine\-meeting\-of\-a\-squad;
+新德裡 < new\-delhi\-\(capital\-of\-india\);
+反對黨 < opposition\-\(political\)\-party;
+失足 < to\-take\-a\-wrong\-step\-in\-life;
+中文廣播 < chinese\-\(language\)\-broadcast;
+移殖手術 < \(organ\)\-transplant\-operation;
+犧牲 < sacrifice\-\(one''s\-life\,\-etc\.\);
+亞伯 < abe\-\(short\-form\-for\-abraham\);
+猜忌 < be\-suspicious\-and\-jealous\-of;
+黨內 < within\-the\-\(communist\)\-party;
+說明書 < synopsis\-\(of\-a\-play\-or\-film\);
+動蕩 < \(social\-or\-political\)\-unrest;
+王丹 < wang\-dan\-\(chinese\-dissident\);
+叛亂罪 < the\-crime\-of\-armed\-rebellion;
+浪子回頭 < the\-return\-of\-a\-prodigal\-son;
+差得多 < fall\-short\-by\-a\-large\-amount;
+不急之務 < a\-matter\-of\-no\-great\-urgency;
+電磁干擾 < electromagnetic\-interference;
+台灣話 < taiwanese\-chinese\-\(language\);
+啦 < final\-particle\-of\-assertion;
+综 < arrange\-threads\-for\-weaving;
+拭 < wipe\-away\-stains\-with\-cloth;
+叮 < exhort\-or\-enjoin\-repeatedly;
+戟 < halberd\-with\-crescent\-blade;
+凛 < to\-shiver\-with\-cold\-or\-fear;
+栋 < main\-beams\-supporting\-house;
+髦 < flowing\-hair\-of\-young\-child;
+筝 < stringed\-musical\-instrument;
+丙 < third\-of\-the\-heavenly\-stems;
+沂 < river\-in\-southeast\-shandong;
+笈 < bamboo\-box\-used\-carry\-books;
+瓢 < ladle\-made\-from\-dried\-gourd;
+簧 < reed\-of\-woodwind\-instrument;
+蛟 < scaly\-dragon\-with\-four\-legs;
+敕 < an\-imperial\-order\-or\-decree;
+裟 < a\-cassock\-or\-robe\-of\-a\-monk;
+碴 < chipped\-edge\-of\-a\-container;
+瘴 < malaria\-pestilential\-vapors;
+纶 < green\-silk\-thread\-or\-tassel;
+罡 < the\-name\-of\-a\-certain\-stars;
+癸 < last\-of\-ten\-celestial\-stems;
+橇 < a\-sledge\-for\-transportation;
+皋 < the\-high\-land\-along\-a\-river;
+潍 < county\-in\-shandong\-province;
+洙 < name\-of\-a\-river\-in\-shandong;
+獠 < to\-hunt\-at\-night\-by\-torches;
+麒 < legendary\-auspicious\-animal;
+珩 < the\-top\-gem\-of\-the\-pendants;
+谥 < to\-confer\-posthumous\-titles;
+秫 < glutinous\-variety\-of\-millet;
+竽 < ancient\-woodwind\-instrument;
+崮 < \(element\-in\-mountain\-names\);
+愀 < to\-change\-one''s\-countenance;
+鄢 < name\-of\-a\-district\-in\-honan;
+癍 < unhealthy\-marks\-on\-the\-skin;
+鄞 < county\-in\-zhejiang\-province;
+雒 < black\-horse\-with\-white\-mane;
+旒 < fringes\-of\-pearls\-on\-crowns;
+琊 < a\-place\-in\-eastern\-shandong;
+蚨 < a\-kind\-of\-water\-beetle\-cash;
+毳 < fine\-hair\-or\-fur\-on\-animals;
+瘥 < to\-recover\-from\-any\-disease;
+浈 < river\-in\-guangdong\-province;
+嘧 < \(phonetic\)\-as\-in\-pyrimidine;
+不易之論 < perfectly\-sound\-proposition;
+似乎很安全 < to\-appear\-\(to\-be\)\-very\-safe;
+決定 < to\-decide\-\(to\-do\-something\);
+姊妹 < \(older\-and\-younger\)\-sisters;
+逼肖 < bear\-a\-close\-resemblance\-to;
+葉利欽 < \(russian\-president\)\-yeltsin;
+復審 < reexamine\-\(a\-judicial\-case\);
+入門 < introduction\-\(to\-a\-subject\);
+白露 < white\-dew\-\(15th\-solar\-term\);
+各種各樣 < various\-sorts\-and\-varieties;
+補體 < complement\-\(in\-blood\-serum\);
+評比 < to\-evaluate\-\(by\-comparison\);
+不違農時 < not\-miss\-the\-farming\-season;
+黃浦江 < huangpu\-river\-\(in\-shanghai\);
+轉身 < \(of\-a\-person\)\-to\-turn\-round;
+爪哇 < java\-\(programming\-language\);
+效忠 < vow\-loyalty\-and\-devotion\-to;
+亂作決定 < to\-make\-arbitrary\-decisions;
+採辦 < buy\-on\-a\-considerable\-scale;
+弟妹 < sister\-in\-law\-\(wife''s\-side\);
+陷於 < caught\-in\-\(a\-bad\-situation\);
+鵾 < a\-bird\-resembling\-the\-crane;
+外匯 < foreign\-\(currency\)\-exchange;
+大器晚成 < grand\-talents\-mature\-slowly;
+摘由 < high\-points\-\(of\-a\-document\);
+鮨 < epinephelus\-septemfasciatus;
+飦 < well\-boiled\-congee\-or\-gruel;
+雊 < the\-crow\-of\-a\-male\-pheasant;
+隺 < a\-bird\-flying\-high\-ambition;
+背包袱 < have\-a\-weight\-on\-one''s\-mind;
+按步就班 < follow\-the\-prescribed\-order;
+外交部長 < minister\-of\-foreign\-affairs;
+醱 < to\-brew\-for\-the\-second\-time;
+酖 < wine\-with\-bird\-poison\-added;
+百尺杆頭更盡一步 < make\-still\-further\-progress;
+鄿 < county\-in\-xinjiang\-province;
+鄍 < a\-town\-in\-shandong\-province;
+蹚 < tread\-through\-mud\-and\-water;
+中央情報局 < central\-intelligence\-agency;
+側躺 < to\-lie\-down\-\(on\-one''s\-side\);
+報戶口 < apply\-for\-a\-resident\-permit;
+褘 < ceremonial\-gowns\-of\-a\-queen;
+蟰 < small\-spider\-with\-long\-legs;
+蛕 < the\-common\-intestinal\-worms;
+服務提供商 < \(internet\)\-service\-provider;
+搜捕 < hunt\-and\-arrest\-\(fugitives\);
+揹書 < recite\-a\-lesson\-from\-memory;
+幸免 < narrowly\-and\-luckily\-escape;
+不登大雅之堂 < not\-appeal\-to\-refined\-taste;
+肷 < area\-between\-waist\-and\-hips;
+舉世矚目 < attract\-worldwide\-attention;
+獨斷專行 < act\-in\-an\-arbitrary\-fashion;
+籄 < a\-basket\-for\-carrying\-earth;
+國際級 < \(at\-an\)\-international\-level;
+筎 < thin\-outside\-skin\-of\-bamboo;
+瞤 < to\-blink\-or\-twitch\-the\-eyes;
+管理信息庫 < management\-information\-base;
+華盛頓郵報 < washington\-post\-\(newspaper\);
+國標 < guobiao\-\(encoding\-standard\);
+便血 < having\-blood\-in\-one''s\-stool;
+淠 < luxuriant\-\(of\-water\-plants\);
+浰 < attend\-\(official\-functions\);
+病機 < interpretation\-of\-the\-cause;
+泑 < the\-vitreous\-glaze\-on\-china;
+殨 < to\-open\-as\-an\-ulcer\-or\-sore;
+才華 < literary\-or\-artistic\-talent;
+指法 < finger\-method\-\(in\-painting\);
+寶藏 < precious\-\(mineral\)\-deposits;
+提前 < to\-shift\-to\-an\-earlier\-date;
+輩出 < come\-forth\-in\-large\-numbers;
+枏 < a\-variety\-of\-evergreen\-tree;
+板鴨 < pressed\-\(dried\)\-salted\-duck;
+拔海 < elevation\-\(above\-sea\-level\);
+願意不願意 < whether\-one\-wants\-to\-or\-not;
+吃不來 < not\-be\-fond\-of\-certain\-food;
+搇 < to\-press\-down\-with\-the\-hand;
+據報導 < according\-to\-\(news\)\-reports;
+超文件傳輸協定 < hypertext\-transfer\-protocol;
+弸 < a\-bow\-stretched\-to\-the\-full;
+巠 < streams\-running\-underground;
+崙 < kunlun\-mountains\-in\-jiangsu;
+倫敦 < london\-\(capital\-of\-england\);
+堳 < land\-allotment\-feudal\-noble;
+北京語言學院 < beijing\-languages\-institute;
+噕 < to\-speak\-falsely\-or\-wrongly;
+條款 < clause\-\(of\-contract\-or\-law\);
+病例 < \[medical\]\-case\-\[of\-illness\];
+器官 < organ\-\(part\-of\-body\-tissue\);
+丩 < to\-join\-or\-connect\-the\-vine;
+丒 < the\-period\-from\-1\-to\-3\-a\.m\.;
+䵅 < to\-extract\-by\-applying\-heat;
+䴳 < distiller''s\-grains\-or\-yeast;
+䳞 < birds\-flying\-all\-directions;
+䳊 < a\-wild\-duck\-like\-water\-bird;
+䳃 < a\-kind\-of\-phoenix\-like\-bird;
+䪷 < to\-toil\-or\-labor\-sedulously;
+䪇 < cushioned\-seat\-on\-a\-vehicle;
+䩿 < a\-big\-drum\-used\-in\-the\-army;
+䧘 < a\-low\-wall\-on\-the\-road\-side;
+䦲 < eaves\-of\-a\-ancestral\-temple;
+䤻 < heavy\-iron\-part\-of\-a\-plough;
+䣲 < to\-heat\-the\-wine\-over\-night;
+䢯 < to\-choose\-or\-select\-careful;
+䠋 < bell\-shaped\-with\-large\-base;
+䟮 < to\-crawl\-on\-hands\-and\-knees;
+䜸 < small\-pieces\-of\-bean\-stalks;
+䜇 < to\-speak\-not\-in\-a\-clear\-way;
+班級 < classes\-or\-grades\-in\-school;
+䚣 < crooked\-horns\-of\-the\-animal;
+䚜 < cattle\-with\-crosswise\-horns;
+䙣 < ragged\-garments\-or\-clothing;
+䙕 < clothes\-that\-have\-no\-lining;
+䙔 < clothes\-made\-of\-poor\-fabric;
+䙓 < the\-lower\-part\-of\-a\-garment;
+䘥 < the\-front\-of\-a\-chinese\-gown;
+䘁 < a\-blue\-green\-colored\-cicada;
+䗵 < a\-disease\-attacked\-silkworm;
+䕮 < flower\-of\-the\-chrysanthemum;
+䔥 < common\-variety\-of\-artemisia;
+䔟 < shake\-and\-wave\-of\-the\-grass;
+病毒學 < virology\-\(study\-of\-viruses\);
+䐼 < thin\-membrane\-of\-the\-throat;
+䐯 < ugly\-appearance\-of\-a\-person;
+䐑 < thin\-cut\-of\-the\-sliced\-meat;
+䍺 < a\-legendary\-goat\-like\-beast;
+䌼 < a\-kind\-of\-fine\-silk\-fabrics;
+䌄 < a\-rope\-for\-drawing\-up\-water;
+私人鑰匙 < private\-key\-\(in\-encryption\);
+䊞 < to\-roll\-round\-with\-the\-hand;
+䉺 < deteriorated\-and\-become\-red;
+䉹 < name\-of\-a\-variety\-of\-bamboo;
+䉸 < slips\-of\-bamboo\-for\-writing;
+䈲 < a\-bamboo\-basket\-for\-fishing;
+䇺 < beans\-and\-peas\-collectively;
+䇵 < one\-of\-the\-wind\-instruments;
+憲法 < constitution\-\(of\-a\-country\);
+䅪 < disease\-of\-the\-private\-part;
+䄰 < forty\-bundles\-of\-rice\-plant;
+䃇 < ink\-for\-imprinting\-of\-seals;
+䀑 < to\-gouge\-out\-an\-eye\-or\-eyes;
+㽎 < the\-profundity\-of\-the\-harem;
+㼠 < a\-crock\-with\-narrow\-opening;
+㺬 < a\-large\-piece\-of\-jade\-stone;
+㺒 < barking\-of\-a\-frightened\-dog;
+不諱 < without\-concealing\-anything;
+㹖 < to\-feed\-animals\-with\-grains;
+㸒 < to\-absurd\-pursuit\-or\-desire;
+地址解析協議 < address\-resolution\-protocol;
+㮀 < tool\-to\-clear\-out\-the\-water;
+㭕 < a\-board\-for\-carrying\-things;
+㩆 < to\-be\-in\-full\-possession\-of;
+而不需 < without\-needing\-\(to\-so\-sth\);
+㧕 < to\-feel\-or\-touch\-with\-hands;
+㧂 < a\-cave\-a\-hold\-in\-the\-ground;
+㦐 < a\-straightforward\-character;
+安插 < place\-in\-a\-certain\-position;
+㥴 < do\-not\-care\-about\-something;
+交換機 < switch\-\(telecommunications\);
+駱 < white\-horse\-with\-black\-mane;
+㡵 < roof\-of\-the\-house\-connected;
+㠟 < a\-mountain\-in\-ancient\-times;
+古蹟 < places\-of\-historic\-interest;
+㛽 < to\-walk\-slowly\-like\-a\-woman;
+㛮 < wife\-of\-one''s\-elder\-brother;
+㓈 < sound\-of\-flying\-or\-speeding;
+㒫 < choked\-and\-unable\-to\-breath;
+㒖 < the\-root\-stock\-of\-the\-lotus;
+氣體 < gas\-\(ie\,\-gaseous\-substance\);
+大陸話 < mainland\-chinese\-\(language\);
+孫子 < grandson\-\(son\-of\-one''s\-son\);
+奔騰 < \(of\-waves\)\-to\-surge\-forward;
+卻之不恭 < to\-refuse\-would\-be\-impolite;
+交換器 < \(telecom\-or\-network\)\-switch;
+通訊社 < a\-news\-service\-\(eg\,\-xinhua\);
+郵電 < post\-and\-telecommunications;
+問候 < give\-someone\-one''s\-respects;
+祖父 < grandfather\-\(father''s\-side\);
+愛好者 < lover\-\(of\-art\,\-sports\,\-etc\);
+決策 < \(make\-a\)\-strategic\-decision;
+祖母 < grandmother\-\(father''s\-side\);
+國際貨幣基金組織 < international\-monetary\-fund;
+馬太福音 < gospel\-according\-to\-matthew;
+針灸 < acupuncture\-and\-moxibustion;
+電話會議 < \(telephone\)\-conference\-call;
+一旦 < in\-case\-\(something\-happens\);
+壽辰 < birthday\-\(of\-an\-old\-person\);
+不落窠臼 < not\-follow\-the\-beaten\-track;
+按照計劃 < according\-to\-\(the\)\-plan\-\.\.\.;
+公安部 < ministry\-of\-public\-security;
+抱不平 < be\-outraged\-by\-an\-injustice;
+事情要做 < thing\-that\-needs\-to\-be\-done;
+復甦 < recovery\-\(health\,\-economic\);
+時期 < a\-period\-in\-time\-or\-history;
+各地 < in\-all\-parts\-of\-\(a\-country\);
+男子漢 < man\-\(i\.e\.\-manly\,\-masculine\);
+畦 < sections\-in\-vegetable\-farm;
+町 < raised\-path\-between\-fields;
+囁 < move\-lips\-as\-when\-speaking;
+伦 < normal\-human\-relationships;
+嘛 < final\-exclamatory\-particle;
+萨 < buddhist\-gods\-or\-immortals;
+桐 < name\-applied\-various\-trees;
+蒂 < peduncle\-or\-stem\-of\-plants;
+紺 < dark\-blue\-or\-reddish\-color;
+棵 < numerary\-adjunct\-for\-trees;
+憋 < to\-suppress\-inner\-feelings;
+孜 < be\-as\-diligent\-as\-possible;
+粱 < better\-varieties\-of\-millet;
+峒 < mountain\-in\-gansu\-province;
+榨 < to\-press\-or\-extract\-juices;
+鄱 < county\-and\-lake\-in\-jiangxi;
+菠 < spinach\-and\-similar\-greens;
+淞 < name\-of\-a\-river\-in\-jiangsu;
+淄 < river\-in\-shandong\-province;
+悱 < to\-be\-desirous\-of\-speaking;
+漯 < river\-in\-northern\-shandong;
+蕙 < species\-of\-fragrant\-orchid;
+滁 < district\-in\-anhui\-province;
+狁 < a\-tribe\-of\-scythian\-nomads;
+酢 < toast\-one''s\-host\-with\-wine;
+衿 < collar\-or\-lapel\-of\-garment;
+嶝 < path\-leading\-up\-a\-mountain;
+旃 < silk\-banner\-with\-bent\-pole;
+齑 < break\-or\-smash\-into\-pieces;
+脘 < internal\-cavity\-of\-stomach;
+镒 < measure\-of\-weight\-for\-gold;
+眭 < evil\-look\-of\-deep\-set\-eyes;
+锖 < the\-color\-of\-the\-a\-mineral;
+邙 < mountain\-in\-henan\-province;
+敫 < ancient\-musical\-instrument;
+萑 < grass\-used\-for\-making\-mats;
+觯 < wine\-goblet\-made\-from\-horn;
+舣 < to\-moor\-a\-boat\-to\-the\-bank;
+碑文 < an\-inscription\-on\-a\-tablet;
+巴兒狗 < pekingese\-\(a\-breed\-of\-dog\);
+一路平安 < to\-have\-a\-pleasant\-journey;
+紐約時報 < new\-york\-times\-\(newspaper\);
+台北 < taipei\-\(capital\-of\-taiwan\);
+常問問題 < frequently\-asked\-questions;
+百孔千瘡 < riddled\-with\-gaping\-wounds;
+兵連禍結 < ravaged\-by\-successive\-wars;
+河內 < hanoi\-\(capital\-of\-vietnam\);
+量力 < to\-estimate\-one''s\-strength;
+本地管理界面 < local\-management\-interface;
+長期以來 < ever\-since\-a\-long\-time\-ago;
+存車處 < parking\-lot\-\(for\-bicycles\);
+斡旋 < mediate\-\(a\-conflict\,\-etc\.\);
+發展核武器 < to\-develop\-nuclear\-weapons;
+安家落戶 < make\-one''s\-home\-in\-a\-place;
+入木三分 < written\-in\-a\-forceful\-hand;
+牌匾 < board\-\(attached\-to\-a\-wall\);
+動手 < to\-hit\-with\-hands\-or\-fists;
+鼻牛兒 < hardened\-mucus\-in\-nostrils;
+步月 < to\-stroll\-beneath\-the\-moon;
+異步傳輸模式 < asynchronous\-transfer\-mode;
+誓師 < to\-vow\-before\-one''s\-troops;
+部委 < ministries\-and\-commissions;
+難怪 < \(it''s\)\-no\-wonder\-\(that\.\.\.\);
+凍結 < \(loan\,\-wage\,\-price\)\-freeze;
+施加 < exert\-\(effort\-or\-pressure\);
+視窗 < windows\-\(operating\-system\);
+巨著 < monumental\-\(literary\)\-work;
+分時多工 < time\-division\-multiplexing;
+募化 < to\-collect\-alms\-\(buddhism\);
+根深蒂固 < deep\-rooted\-\(problem\,\-etc\);
+叛變的省份 < renegade\-province\-\(taiwan\);
+部下 < troops\-under\-one''s\-command;
+馵 < horse\-with\-white\-back\-legs;
+飣 < display\-food\-for\-show\-only;
+星島日報 < sing\-tao\-daily\-\(newspaper\);
+闒 < upper\-story\-door\-or\-window;
+全程 < \(during\-an\)\-entire\-journey;
+長篇 < lengthy\-\(report\-or\-speech\);
+電腦輔助教材 < computer\-aided\-instruction;
+西湖 < the\-west\-lake\,\-in\-hangzhou;
+客戶機服務器環境 < client\-server\-environement;
+銁 < a\-weight\-of\-thirty\-cattics;
+醊 < to\-pour\-wine\-in\-a\-libation;
+郿 < county\-in\-shaanxi\-province;
+郳 < state\-in\-shandong\-province;
+郠 < place\-in\-shandong\-province;
+郚 < towns\-in\-shandong\-province;
+輤 < a\-pall\-to\-cover\-the\-hearse;
+撥弄 < move\-to\-and\-fro\-\(with\-hand;
+表記 < something\-given\-as\-a\-token;
+踒 < to\-slip\-and\-sprain\-a\-blimb;
+表裡 < the\-outside\-and\-the\-inside;
+覐 < a\-sleep\-to\-realize\-to\-feel;
+桃花運 < luck\-with\-the\-opposite\-sex;
+電信服務 < telecommunications\-service;
+逼債 < press\-for\-payment\-of\-debts;
+公開鑰匙 < public\-key\-\(in\-encryption\);
+虡 < support\-structure\-for\-bell;
+薾 < luxuriant\-growth\-of\-flower;
+弗塞奇 < versace\-\(fashion\-designer\);
+茈 < a\-plant\-yielding\-a\-red\-dye;
+普通話 < mandarin\-\(common\-language\);
+電信網路 < telecommunications\-network;
+膆 < the\-corp\-of\-a\-bird\-or\-fowl;
+電腦輔助工程 < computer\-aided\-engineering;
+感染人數 < number\-of\-infected\-persons;
+筆鋒 < the\-tip\-of\-a\-writing\-brush;
+報刊 < newspapers\-and\-periodicals;
+百步穿楊 < shoot\-with\-great\-precision;
+罭 < drag\-net\-made\-of\-fine\-mesh;
+罏 < earthen\-stand\-for\-wine\-jug;
+罍 < large\-earthenware\-wine\-jar;
+演講 < \(give\)\-a\-speech\-or\-lecture;
+繸 < hem\-or\-border\-of\-a\-garment;
+國父 < father\|founder\-of\-a\-nation;
+篟 < luxuriant\-growth\-of\-bamboo;
+依靠 < rely\-on\-\(for\-support\,\-etc\);
+所長 < head\-of\-an\-institute\,\-etc\.;
+窆 < to\-put\-a\-coffin\-in\-a\-grave;
+祲 < ominous\-or\-sinister\-spirit;
+幾年來 < for\-the\-past\-several\-years;
+若干 < a\-certain\-number\|amount\-of;
+癕 < loss\-of\-the\-sense\-of\-smell;
+頤和園 < summer\-palace\-\(in\-beijing\);
+競選 < run\-for\-\(electoral\)\-office;
+搶先 < to\-rush\-\(to\-do\-sth\-urgent\);
+珛 < quickly\-deteriorating\-jade;
+停留 < stay\-somewhere\-temporarily;
+澷 < water\-overflowing\-diffused;
+出現意外 < \(to\-appear\)\-unexpected\(ly\);
+毩 < a\-leather\-ball\-for\-kicking;
+病株 < diseased\-or\-infected\-plant;
+俗稱 < be\-commonly\-referred\-to\-as;
+揹 < carry\-things\-on\-one''s\-back;
+揁 < sound\-of\-setting\-up\-a\-koto;
+一觸即發 < could\-happen\-at\-any\-moment;
+行將 < be\-about\-to\-\(do\-something\);
+足球 < football\-\(british\-english\);
+纖芯直徑 < core\-diameter\-\(of\-a\-fiber\);
+媧 < mythological\-snail\-goddess;
+背脊 < the\-back\-of\-the\-human\-body;
+囉 < exclamatory\-final\-particle;
+客戶服務器結構 < client\-server\-architecture;
+嘷 < the\-roaring\-of\-wild\-beasts;
+進行交易 < to\-carry\-out\-a\-transaction;
+抗擊 < resist\-\(a\-military\-attack\);
+剞 < carving\-or\-engraving\-knife;
+馬來人 < malaysian\-person\-or\-people;
+冏 < abutilon\-avicennae\-\(plant\);
+別出心裁 < adopt\-an\-original\-approach;
+尋機 < to\-look\-for\-an\-opportunity;
+乫 < used\-in\-korean\-place\-names;
+實況 < what\-is\-actually\-happening;
+䵆 < grains\-from\-the\-distillery;
+䲯 < a\-kind\-of\-black\-small\-bird;
+䯓 < the\-head\-bone\-of\-livestock;
+䮶 < flock\-of\-horses\-stampeding;
+䮣 < a\-yellow\-with\-a\-white\-tail;
+媒體接口連接器 < medium\-interface\-connector;
+底特律 < detroit\-\(a\-city\-in\-the\-us\);
+䬱 < coarse\-grains\-such\-as\-corn;
+中國科學院 < chinese\-acadamy\-of\-science;
+䩲 < a\-tool\-used\-to\-cut\-leather;
+䩚 < to\-mend\-the\-soles\-of\-shoes;
+百發百中 < every\-shot\-hits\-the\-target;
+丁雲 < ding\-yun\-\(a\-personal\-name\);
+虛擬通道連接 < virtual\-channel\-connection;
+䡦 < the\-empty\-space\-of\-a\-wheel;
+案板 < kneading\-or\-chopping\-board;
+䠉 < to\-run\-away\-or\-escape\-from;
+䞑 < a\-red\-swelling\-of\-the\-skin;
+保守 < \(politically\)\-conservative;
+䛯 < the\-reasonable\-of\-speeking;
+䖅 < name\-of\-a\-variety\-of\-grass;
+䔅 < name\-of\-a\-variety\-of\-trees;
+䒱 < twigs\-of\-hemp\-used\-fo\-fuel;
+䎷 < an\-old\-man\-with\-white\-hair;
+不送 < don''t\-bother\-to\-see\-me\-out;
+䌠 < hold\-on\-to\-one''s\-own\-views;
+面嚮對象的技術 < object\-oriented\-technology;
+神道 < shinto\-\(japanese\-religion\);
+䋀 < shoes\-made\-of\-hemp\-or\-hair;
+䊮 < name\-of\-a\-variety\-of\-grain;
+䉂 < a\-basket\-for\-earth\-or\-soil;
+䇖 < rope\-made\-of\-bamboo\-strips;
+䆀 < to\-corrupt\-or\-be\-corrupted;
+䅾 < starting\-to\-put\-forth\-ears;
+䅬 < small\-bundle\-of\-rice\-plant;
+將就 < accept\-\(a\-bit\-reluctantly\);
+不亢不卑 < neither\-haughty\-nor\-humble;
+䁎 < to\-make\-a\-close\-inspection;
+䀊 < a\-kind\-of\-water\-containers;
+懷抱 < \(within\-someone''s\)\-embrace;
+㼩 < concave\-channels\-of\-tiling;
+用戶端設備 < customer\-premise\-equipment;
+情況下 < under\-\(this\)\-circumstances;
+㺠 < a\-black\-ape\-with\-long\-tail;
+㺕 < the\-fighting\-sound\-of\-dogs;
+㹚 < sound\-of\-calling\-to\-a\-calf;
+㷶 < to\-dry\-or\-warm\-near\-a\-fire;
+溫哥華 < vancouver\-\(city\-in\-canada\);
+㷃 < fire\-burns\-for\-a\-long\-time;
+㴔 < the\-noise\-of\-flowing\-water;
+㴋 < deep\-and\-clear\-\-to\-urinate;
+㳧 < the\-water\-flowing\-from\-\.\.\.;
+㱽 < to\-hit\-or\-to\-strikeheavily;
+㱻 < diseases\-of\-dumb\-creatures;
+㱡 < the\-soul\-out\-of\-one''s\-body;
+㱔 < a\-small\-quantity\-or\-number;
+㯟 < foot\-of\-a\-hill\-or\-mountain;
+㭮 < a\-kind\-of\-liquor\-container;
+右邊 < right\-\(as\-opposed\-to\-left\);
+不等價交換 < exchange\-of\-unequal\-values;
+白頭翁 < root\-of\-chinese\-pulsatilla;
+兀 < duplicate\-of\-big\-five\-a461;
+白壁無瑕 < impeccable\-moral\-integrity;
+㦃 < perfect\-personal\-character;
+社論 < editorial\-\(in\-a\-newspaper\);
+家常 < the\-daily\-life\-of\-a\-family;
+㥍 < to\-bear\-jealous\-hatred\-for;
+㤬 < full\-of\-anger\-and\-vexation;
+㤎 < a\-model\-or\-typical\-example;
+㤄 < raging\-animosity\-or\-hatred;
+㣧 < the\-succession\-in\-a\-family;
+㣣 < to\-walk\-in\-an\-unsteady\-way;
+㢸 < device\-for\-regulating\-bows;
+㢒 < an\-almost\-collapsing\-house;
+書聖 < a\-great\-calligraphy\-master;
+㜪 < name\-of\-a\-family\-or\-a\-clan;
+㜕 < relatives\-through\-marriage;
+㛲 < the\-hair\-on\-the\-human\-head;
+㚿 < a\-goddess''s\-name\-in\-legend;
+㙡 < a\-kind\-of\-eatable\-mushroom;
+㘹 < to\-spread\-soil\-on\-the\-road;
+中文版 < chinese\-\(language\)\-version;
+㘤 < circle\-of\-the\-moving\-water;
+㖨 < indistinct\-nasal\-utterance;
+㒽 < a\-kind\-of\-cap\-for\-children;
+高中生 < senior\-high\-school\-student;
+㐖 < a\-translated\-name\-of\-india;
+資本 < capital\-\(as\-in\-capitalism\);
+板羽球 < battledore\-and\-shuttlecock;
+風琴 < organ\-\(musical\-instrument\);
+字帖 < copybook\-\(for\-calligraphy\);
+敗子回頭 < return\-of\-the\-prodigal\-son;
+訪問美國 < to\-visit\-the\-united\-states;
+不失時機 < seize\-the\-opportune\-moment;
+安分 < not\-go\-beyond\-one''s\-bounds;
+暗笑 < laugh\-in\-\(up\)\-one''s\-sleeve;
+導彈潛艇 < \(guided\)\-missile\-submarine;
+美玲 < mei\-ling\-\(a\-person''s\-name\);
+碧血 < blood\-shed\-in\-a\-just\-cause;
+參兩院 < both\-houses\-of\-us\-congress;
+洪森 < hun\-sen\-\(cambodian\-leader\);
+稟告 < report\-\(to\-one''s\-superior\);
+遺體 < remains\-\(of\-a\-dead\-person\);
+避風 < take\-shelter\-from\-the\-wind;
+福建 < fujian\-\(province\-of\-china\);
+安如泰山 < as\-secure\-as\-mount\-taishan;
+勘誤 < to\-correct\-printing\-errors;
+升級 < to\-escalate\-\(in\-intensity\);
+強調 < to\-emphasize\-\(a\-statement\);
+而且 < not\-only\-\.\.\.\-but\-also\-\.\.\.\.;
+遷都 < to\-move\-the\-capitol\-\(city\);
+不義之財 < ill\-gotten\-wealth\-or\-gains;
+重要的是 < it\-is\-important\-\(that\)\-\.\.\.;
+不但 < not\-only\-\(\.\.\.\-but\-also\.\.\.\);
+包產 < make\-a\-production\-contract;
+癟螺痧 < cholera\-\(with\-dehydration\);
+届 < numerary\-adjunct\-for\-time;
+谁 < who\?\-whom\?\-whose\?\-anyone\?;
+阿 < prefix\-for\-people''s\-names;
+莢 < pods\-of\-leguminous\-plants;
+狄 < tribe\-from\-northern\-china;
+繰 < to\-reel\-silk\-from\-cocoons;
+漓 < river\-in\-guangxi\-province;
+咋 < question\-forming\-particle;
+麟 < female\-of\-chinese\-unicorn;
+渭 < name\-of\-a\-river\-in\-shanxi;
+芜 < luxurious\-growth\-of\-weeds;
+绎 < to\-unravel\-or\-unreel\-silk;
+璐 < beautiful\-variety\-of\-jade;
+韶 < music\-of\-the\-emperor\-shun;
+鬟 < dress\-hair\-in\-coiled\-knot;
+罂 < long\-necked\-jar\-or\-bottle;
+靳 < strap\-on\-a\-horse''s\-breast;
+淦 < river\-in\-jiangxi\-province;
+搡 < to\-push\-over\-or\-push\-back;
+艮 < seventh\-of\-eight\-diagrams;
+湟 < river\-in\-qinghai\-province;
+猱 < a\-monkey\-with\-yellow\-hair;
+涪 < river\-in\-sichuan\-province;
+亳 < name\-of\-district\-in\-anhui;
+蔺 < rush\-used\-for\-making\-mats;
+琬 < the\-virtue\-of\-a\-gentleman;
+猗 < exclamation\-of\-admiration;
+鼙 < drum\-carried\-on\-horseback;
+蕲 < variety\-of\-artemisia\-seek;
+瓞 < young\-melons\-just\-forming;
+辁 < cart\-wheel\-with\-no\-spokes;
+酆 < name\-of\-zhou\-period\-state;
+北朝 < the\-northern\-dynasties\-\(a;
+超文本標記語言 < hypertext\-markup\-language;
+永久虛電路 < permanent\-virtual\-circuit;
+包攬 < undertake\-the\-whole\-thing;
+勞教 < reeducation\-through\-labor;
+半場 < half\-of\-a\-game\-or\-contest;
+通信技術 < communications\-technology;
+發達 < developed\-\(country\,\-etc\.\);
+塞爾維亞克羅地亞語 < serbo\-croatian\-\(language\);
+瀉露 < to\-leak\-out\-\(information\);
+歲數 < age\-\(number\-of\-years\-old\);
+外匯儲備 < foreign\-exchange\-reserves;
+開設 < offer\-\(goods\-or\-services\);
+廣東 < guangdong\-province\,\-china;
+放心 < to\-set\-one''s\-mind\-at\-rest;
+魯迅 < name\-of\-an\-author\,\-lu\-xun;
+遙望 < to\-look\-into\-the\-distance;
+電子郵件傳送服務 < \(e\-\)mail\-delivery\-service;
+補足 < bring\-up\-to\-full\-strength;
+透通性 < transparency\-\(networking\);
+熬夜 < stay\-up\-late\-or\-all\-night;
+鰼 < the\-weather\-or\-dojo\-loach;
+體驗 < to\-experience\-for\-oneself;
+撕毀 < tear\-up\-\(a\-contract\,\-etc\);
+傾銷 < to\-dump\-\(goods\,\-products\);
+韔 < a\-wrapper\-or\-case\-for\-bow;
+看法 < way\-of\-looking\-at\-a\-thing;
+陗 < a\-steep\-hill\.\-precipitous;
+營業額 < sum\-or\-volume\-of\-business;
+鏾 < the\-trigger\-of\-a\-crossbow;
+關注 < follow\-\(an\-issue\)\-closely;
+鄠 < county\-in\-shanxi\-province;
+鄎 < a\-place\-in\-henan\-province;
+剝啄 < tap\-\(on\-a\-door\-or\-window\);
+辨析 < differentiate\-and\-analyse;
+不辭辛苦 < make\-nothing\-of\-hardships;
+程式理員 < program\-manager\-\(windows\);
+觷 < to\-process\-or\-carve\-horns;
+民主黨人 < a\-democratic\-party\-member;
+蝰 < vipera\-russelii\-siamensis;
+十億位元以太網絡聯盟 < gigabit\-ethernet\-alliance;
+葶 < draba\-nemerosa\-bebe\-carpa;
+芔 < a\-general\-term\-for\-plants;
+膥 < eggs\-of\-birds\-or\-reptiles;
+三十年來 < for\-the\-past\-thirty\-years;
+技術發展 < technological\-development;
+國產 < made\-in\-one''s\-own\-country;
+高等學校 < colleges\-and\-universities;
+白族 < the\-bai\-\(pai\)\-nationality;
+纑 < to\-soften\-hemp\-by\-boiling;
+原因很簡單 < the\-reason\-is\-very\-simple;
+籩 < bamboo\-container\-for\-food;
+籝 < a\-tube\-to\-hold\-chopsticks;
+康涅狄格 < connecticut\-\(state\-in\-us\);
+笎 < bamboo\-with\-black\-patches;
+單連接站 < single\-attachment\-station;
+禘 < imperial\-ancestor\-worship;
+矮個兒 < a\-person\-of\-short\-stature;
+病癒 < recover\-\(from\-an\-illness\);
+礄 < place\-in\-sichuan\-province;
+寬限 < extend\-\(a\-deadline\,\-etc\.\);
+璪 < pearl\-pendants\-on\-coronet;
+瑽 < tinkling\-of\-jade\-pendants;
+猲 < smoke\-or\-flames\-from\-fire;
+符合標準 < to\-comply\-with\-a\-standard;
+示威遊行 < a\-\(protest\)\-demonstration;
+泜 < a\-river\-in\-hebei\-province;
+泒 < a\-river\-in\-hubei\-province;
+汭 < confluence\-of\-two\-streams;
+櫽 < shape\-wood\-by\-use\-of\-heat;
+晬 < first\-birthday\-of\-a\-child;
+表態 < make\-known\-one''s\-position;
+宣誓 < swear\-an\-oath\-\(of\-office\);
+大敵當前 < confront\-a\-powerful\-enemy;
+悊 < wise\.\-to\-know\-intuitively;
+拜望 < call\-to\-pay\-one''s\-respect;
+彍 < to\-draw\-a\-bow\-to\-the\-full;
+核大國 < a\-nuclear\-power\-\(country\);
+庅 < an\-interrogative\-particle;
+研製過程 < manufacturing\-environment;
+篇幅 < \(take\-up\-or\-devote\)\-space;
+反唇相譏 < answer\-back\-sarcastically;
+核轟炸機 < nuclear\-bomber\-\(aircraft\);
+希臘語 < \(modern\)\-greek\-\(language\);
+首相 < \(japanese\)\-prime\-minister;
+時間內 < within\-\(a\-period\-of\-time\);
+網絡管理系統 < network\-management\-system;
+把式 < person\-skilled\-in\-a\-trade;
+䵵 < yellowish\-black\-and\-white;
+䵫 < light\-red\-yellowish\-black;
+䴛 < to\-make\-decoction\-of\-salt;
+䳷 < a\-second\-name\-for\-chicken;
+䳆 < a\-kind\-of\-species\-of\-myna;
+䰂 < a\-coiffure\-with\-a\-topknot;
+䮕 < horse\-with\-white\-forehead;
+䭨 < wine\-poured\-in\-a\-libation;
+䫀 < the\-lower\-end\-of\-the\-jaws;
+䩝 < to\-tan\-and\-soften\-leather;
+不得人心 < not\-enjoy\-popular\-support;
+淘籮 < basket\-\(for\-washing\-rice\);
+䤂 < a\-second\-name\-for\-vinegar;
+甥女 < niece\-\(sister''s\-daughter\);
+䣴 < to\-lose\-temper\-when\-drunk;
+䣆 < name\-of\-a\-county\-in\-gaomi;
+䢲 < to\-go\-all\-the\-way\-forward;
+䢮 < rapid\-marching\-or\-running;
+䢡 < to\-stamp\-the\-foot\-forward;
+䡹 < the\-low\-rear\-of\-a\-chariot;
+䡯 < sound\-of\-moving\-carriages;
+䡡 < to\-get\-up\-into\-a\-carriage;
+直言不諱 < speak\-frankly\-and\-bluntly;
+景山公園 < name\-of\-a\-park\-in\-beijing;
+䘸 < the\-lower\-front\-of\-a\-robe;
+䘒 < boy''s\-reproductive\-organs;
+䕄 < meat\-in\-the\-form\-of\-paste;
+䓋 < elm\-seeds\-\-\-\-used\-as\-food;
+䑢 < a\-knife\-shaped\-small\-boat;
+䑈 < meat\-to\-offer\-for\-worship;
+漢人 < han\-chinese\-person\|people;
+䍯 < gaot\-with\-different\-horns;
+䍢 < netted\-veined\-window\-sill;
+䋟 < the\-weight\-on\-a\-steelyard;
+䊶 < a\-rope\-for\-leading\-cattle;
+世界衛生組織 < world\-health\-organization;
+伺機 < to\-watch\-for\-one''s\-chance;
+䉗 < a\-receptacle\-or\-container;
+䄸 < grains\-producing\-no\-fruit;
+䄒 < ripening\-of\-paddy\-or\-rice;
+䃁 < uneven\-or\-rugged\-terrains;
+䁔 < big\-eyes\-protuberant\-eyes;
+㿰 < durable\-and\-solid\-leather;
+頸部 < the\-neck\-area\-of\-the\-body;
+㿂 < obstraction\-of\-the\-bowels;
+㾵 < a\-dark\-colored\-birth\-mark;
+㾜 < weak\-breath\-of\-a\-sick\-man;
+㽾 < a\-kind\-of\-woman''s\-disease;
+通訊自動化 < communications\-automation;
+㸲 < a\-kind\-of\-mountain\-cattle;
+㷯 < smoke\-and\-dust\-everywhere;
+㶺 < the\-light\-or\-glow\-of\-fire;
+㵽 < the\-strength\-of\-a\-current;
+㱥 < the\-evil\-spirits\-come\-out;
+㰦 < to\-breath\-with\-mouth\-open;
+㰔 < a\-kind\-of\-edible\-mushroom;
+㰎 < a\-wooden\-pestle\-or\-rammer;
+㭛 < a\-kind\-of\-climbing\-plants;
+㩠 < a\-fierce\-or\-bloody\-battle;
+㦛 < to\-walk\-in\-a\-composed\-way;
+面臨困難 < to\-be\-faced\-with\-problems;
+背影 < a\-view\-of\-somebody''s\-back;
+㠝 < lofty\-and\-steep\-mountains;
+㠐 < high\-and\-pointed\-mountain;
+㞚 < to\-pile\-up\-layer\-by\-layer;
+㜯 < a\-word\-to\-designate\-woman;
+㜮 < to\-go\-beyond\-normal\-limit;
+不務正業 < not\-engage\-in\-honest\-work;
+㚓 < tie\-beams\-of\-a\-small\-boat;
+狡賴 < to\-deny\-\(through\-sophism\);
+㘌 < to\-laugh\-without\-stopping;
+㗦 < a\-loud\-and\-confused\-noise;
+㗚 < vexingly\-verbose\-or\-wordy;
+㗕 < the\-crowing\-of\-a\-pheasant;
+㖄 < sound\-of\-calling\-chickens;
+㕚 < claws\-of\-birds\-or\-animals;
+愛理不理 < look\-cold\-and\-indifferent;
+㐳 < high\-and\-level\-on\-the\-top;
+變賣 < sell\-off\-\(one''s\-property\);
+下工夫 < to\-put\-in\-time\-and\-energy;
+決賽 < finals\-\(of\-a\-competition\);
+板書 < writing\-on\-the\-blackboard;
+珀斯 < perth\-\(city\-in\-australia\);
+改善通訊 < to\-improve\-communications;
+總參謀長 < \(military\)\-chief\-of\-staff;
+愛憐 < show\-tender\-affection\-for;
+暴漲 < rise\-suddenly\-and\-sharply;
+錄共 < to\-take\-down\-a\-confession;
+本家 < a\-member\-of\-the\-same\-clan;
+面臨 < be\-faced\-with\-\(a\-problem\);
+背信棄義 < break\-faith\-with\-somebody;
+值得注意的是 < it''s\-worth\-noting\-that\.\.\.;
+跨國公司 < transnational\-corporation;
+日本人 < japanese\-person\-or\-people;
+共和黨人 < a\-republican\-party\-member;
+池湯 < large\-pool\-in\-a\-bathhouse;
+無限期 < unlimited\-\(time\)\-duration;
+獎勵 < reward\-\(as\-encouragement\);
+順差 < \(trade\-or\-budget\)\-surplus;
+環球定位系統 < global\-positioning\-system;
+初選 < \(us\)\-primaries\-\(election\);
+帕蘭卡 < palanka\-\(a\-personal\-name\);
+報銷 < submit\-an\-expense\-account;
+蜀 < name\-of\-an\-ancient\-state;
+洛 < river\-in\-shanxi\-province;
+叔 < father''s\-younger\-brother;
+絹 < kind\-of\-thick\-stiff\-silk;
+罩 < basket\-for\-catching\-fish;
+夷 < ancient\-barbarian\-tribes;
+砰 < sound\-of\-crashing\-stones;
+哎 < interjection\-of\-surprise;
+朔 < first\-day\-of\-lunar\-month;
+揣 < put\-things\-under\-clothes;
+嵋 < omei\-mountain\-in\-sichuan;
+缉 < to\-sew\-in\-close\-stitches;
+噶 < used\-in\-transliterations;
+掰 < to\-break\-with\-both\-hands;
+霆 < a\-sudden\-peal\-of\-thunder;
+漳 < name\-of\-a\-river\-in\-henan;
+巳 < sixth\-of\-twelve\-branches;
+嗝 < cackling\-of\-fowls\-to\-gag;
+姘 < illicit\-sexual\-relations;
+霏 < falling\-of\-snow\-and\-rain;
+郸 < county\-in\-hebei\-province;
+呦 < the\-bleating\-of\-the\-deer;
+掮 < to\-bear\-on\-the\-shoulders;
+莆 < a\-kind\-of\-legendary\-tree;
+阡 < footpaths\-between\-fields;
+鸪 < species\-of\-taiwan\-pigeon;
+氐 < name\-of\-an\-ancient\-tribe;
+呤 < purine\-in\-chem\.\-compound;
+嬗 < succession\-to\-the\-throne;
+觏 < meet\-or\-see\-unexpectedly;
+濮 < county\-in\-henan\-province;
+郴 < county\-in\-hunan\-province;
+轾 < low\-rear\-portion\-of\-cart;
+稞 < grain\-ready\-for\-grinding;
+郧 < county\-in\-hubei\-province;
+蹼 < webbed\-feet\-of\-waterfowl;
+甑 < boiler\-for\-steaming\-rice;
+妗 < wife\-of\-mother''s\-brother;
+浠 < name\-of\-a\-river\-in\-hubei;
+鳔 < swimming\-bladder\-of\-fish;
+篌 < ancient\-music\-instrument;
+秕 < empty\-grain\-or\-rice\-husk;
+琚 < ornamental\-gems\-for\-belt;
+鲵 < cryptobranchus\-japonicus;
+艨 < long\-and\-narrow\-war\-boat;
+涑 < river\-in\-shansi\-province;
+雩 < offer\-sacrifice\-for\-rain;
+佾 < a\-row\-or\-file\-of\-dancers;
+缂 < the\-woof\-of\-a\-woven\-item;
+艴 < the\-countenance\-changing;
+滏 < name\-of\-a\-river\-in\-hebei;
+人民幣 < chinese\-unit\-of\-currency;
+馬可福音 < gospel\-according\-to\-mark;
+流氓罪 < the\-crime\-of\-hooliganism;
+城關 < area\-outside\-a\-city\-gate;
+錄音機 < \(tape\)\-recording\-machine;
+運算 < \(mathematical\)\-operation;
+州長 < governor\-\(of\-a\-us\-state\);
+每年一度 < once\-a\-year\-\(every\-year\);
+域名註冊 < domain\-name\-registration;
+代之以 < \(has\-been\)\-replaced\-with;
+部屬 < affiliated\-to\-a\-ministry;
+引擎 < engine\-\(transliteration\);
+兵貴神速 < speed\-is\-precious\-in\-war;
+變戲法 < perform\-conjuring\-tricks;
+多邊合作 < multilateral\-cooperation;
+發行額 < \(periodical\)\-circulation;
+登記 < to\-register\-\(one''s\-name\);
+十三日 < thirtieth\-day\-of\-a\-month;
+幀首定界符 < start\-of\-frame\-delimiter;
+投放市場 < to\-put\-sth\-on\-the\-market;
+機組 < flight\-crew\-\(on\-a\-plane\);
+鷞 < the\-turquoise\-kingfisher;
+下半身 < lower\-half\-of\-one''s\-body;
+鵁 < mycticorax\-prasinosceles;
+荒無人煙 < desolate\-and\-uninhabited;
+鮰 < a\-small\-kind\-of\-sturgeon;
+遼寧 < liaoning\-province\,\-china;
+髠 < shave\-head\-as\-punishment;
+騕 < name\-of\-a\-fabulous\-horse;
+照常 < \(business\,\-etc\)\-as\-usual;
+韂 < a\-saddle\-flap\.\-trappings;
+因特網提供商 < internet\-sevice\-provider;
+約翰福音 < gospel\-according\-to\-john;
+陴 < a\-parapet\-on\-a\-city\-wall;
+闤 < wall\-around\-market\-place;
+印歐語言 < indo\-european\-\(language\);
+撫摸 < gently\-caress\-and\-stroke;
+切斷 < cut\-off\-\(a\-supply\,\-etc\.\);
+網絡操作系統 < network\-operating\-system;
+習以為常 < be\-accustomed\-or\-used\-to;
+兵荒馬亂 < turmoil\-and\-chaos\-of\-war;
+建制 < organizational\-structure;
+不承認主義 < policy\-of\-nonrecognition;
+退役 < retire\-from\-the\-military;
+違反 < to\-violate\-\(a\-law\,\-e\.g\.\);
+幫廚 < help\-in\-the\-mess\-kitchen;
+不動聲色 < maintain\-one''s\-composure;
+浮點運算 < floating\-point\-operation;
+贑 < \<abbrv\>\-jiangxi\-province;
+補稅 < pay\-a\-tax\-one\-has\-evaded;
+訡 < to\-chant\-to\-moan\-to\-sigh;
+襲擊 < \(make\-a\)\-surprise\-attack;
+內政部長 < minister\-of\-the\-interior;
+白淨 < \(of\-skin\)\-fair\-and\-clear;
+蛁 < pomponia\-maculatiocollis;
+巡查 < to\-go\-around\-and\-inspect;
+蘀 < falling\-leaves\-and\-barks;
+藺 < rush\-used\-in\-making\-mats;
+兵書 < a\-book\-on\-the\-art\-of\-war;
+菴 < small\-buddhist\-monastery;
+鼻針療法 < nose\-acupuncture\-therapy;
+莔 < fritillaria\-verticillata;
+茼 < chrysanthemum\-coronarium;
+艥 < an\-oar\-or\-paddle\.\-to\-row;
+產銷 < production\-and\-marketing;
+膙 < callous\-skin\-on\-the\-feet;
+腜 < quickening\-of\-the\-foetus;
+肳 < the\-corners\-of\-the\-mouth;
+闌尾 < appendix\-\(in\-human\-body\);
+翛 < look\-of\-rumpled\-feathers;
+罝 < net\-for\-catching\-rabbits;
+幅員 < a\-country''s\-surface\-area;
+虛擬環境 < theorhetical\-environment;
+撥付 < appropriate\-sum\-of\-money;
+緌 < tassels\-hanging\-from\-hat;
+密切注意 < close\-attention\-\(to\-sth\);
+國營 < state\-run\-\(company\,\-etc\);
+圖像用戶介面 < graphical\-user\-interface;
+筸 < name\-of\-a\-place\-in\-honan;
+面嚮對象語言 < object\-oriented\-language;
+損失 < a\-\(financial\,\-etc\.\)\-loss;
+辦公 < handle\-official\-business;
+楊百翰大學 < brigham\-young\-university;
+璠 < a\-piece\-of\-precious\-jade;
+玶 < name\-of\-one\-kind\-of\-jade;
+獞 < name\-of\-a\-variety\-of\-dog;
+不拘一格 < not\-stick\-to\-one\-pattern;
+余震 < \(earthquake\)\-aftershocks;
+畚箕 < a\-bamboo\-or\-wicker\-scoop;
+灨 < the\-river\-gan\-in\-jiangxi;
+濲 < name\-of\-a\-river\-in\-hunan;
+完全懂得 < to\-understand\-completely;
+突顯 < make\-something\-stand\-out;
+不平則鳴 < where\-there\-is\-injustice;
+洧 < name\-of\-a\-river\-in\-honan;
+核不擴散 < nuclear\-nonproliferation;
+握力 < \(strength\-of\-one''s\)\-grip;
+樧 < zanthoxylum\-ailanthoides;
+榤 < perch\-for\-fowls\-roost\-on;
+內政部 < ministry\-of\-the\-interior;
+共同閘道介面 < common\-gateway\-interface;
+擺脫危機 < to\-break\-out\-of\-a\-crisis;
+栂 < a\-kind\-of\-evergreen\-tree;
+富布賴特 < fullbright\-\(scholarship\);
+旡 < choke\-on\-something\-eaten;
+馬裡 < mali\-\(name\-of\-a\-country\);
+撋 < to\-rub\-between\-the\-hands;
+病態 < morbid\-or\-abnormal\-state;
+控制 < to\-\(have\)\-control\-\(over\);
+撥亂反正 < bring\-order\-out\-of\-chaos;
+惌 < to\-bear\-a\-grudge\-against;
+佳能 < canon\-\(japanese\-company\);
+病家 < a\-patient\-and\-his\-family;
+疑惑 < \(a\-sense\-of\)\-uncertainty;
+崶 < name\-of\-a\-legendary\-hill;
+崁 < a\-place\-in\-taiwan\-tainan;
+尞 < fuel\-used\-for\-sacrifices;
+無黨派 < politically\-unaffiliated;
+打牌 < to\-play\-mahjong\-or\-cards;
+奞 < the\-stride\-made\-by\-a\-man;
+夗 < to\-turn\-over\-when\-asleep;
+變電站 < \(transformer\)\-substation;
+做客 < to\-be\-a\-guest\-or\-visitor;
+安第斯山 < the\-andes\-mountain\-range;
+凜 < shiver\-with\-cold\-or\-fear;
+僰 < ancient\-aboriginal\-tribe;
+百煉成鋼 < be\-tempered\-into\-a\-steel;
+行使 < exercise\-\(a\-right\,\-etc\.\);
+筆挺 < \(standing\)\-very\-straight;
+分佈式結構 < distributed\-architecture;
+安神 < calm\-\(soothe\)\-the\-nerves;
+聳肩 < to\-shrug\-one''s\-shoulders;
+亃 < name\-of\-a\-kind\-of\-animal;
+乺 < painting\-tool\-place\-name;
+乶 < korean\-place\-name\-pholha;
+䵂 < to\-grind\-wheat\-to\-powder;
+䲳 < birds\-flying\-up\-and\-down;
+國務次卿 < under\-secretary\-of\-state;
+䲛 < an\-ancient\-name\-for\-tuna;
+䲄 < a\-kind\-of\-fiish\-in\-ocean;
+䰍 < a\-kind\-of\-dark\-red\-paint;
+䰆 < beautiful\-and\-hairy\-mane;
+䯖 < the\-muscles\-of\-the\-thigh;
+半信半疑 < half\-believe\,\-half\-doubt;
+䬳 < cakes\-made\-of\-rice\-flour;
+䫯 < to\-take\-a\-casual\-look\-at;
+深空 < deep\-space\-\(outer\-space\);
+䪀 < known\-together\-as\-saddle;
+䨒 < sound\-of\-the\-water\-drops;
+唐納 < tanner\-\(english\-surname\);
+䦨 < a\-door\-curtain\-or\-screen;
+䤯 < container\-for\-thick\-soup;
+木乃伊 < mummy\-\(preserved\-corpse\);
+䡍 < the\-linch\-pin\-of\-a\-sheel;
+䟗 < to\-stand\-for\-a\-long\-time;
+䟃 < to\-move\-or\-march\-swiftly;
+䚶 < to\-scold\-in\-a\-loud\-voice;
+䙜 < legendary\-mountain\-deity;
+䙈 < a\-loose\-garment\-or\-cloak;
+䙇 < clothes\-of\-coarse\-fabric;
+䗂 < diemyctylus\-pyrrhogaster;
+䔣 < a\-tribe\-in\-ancient\-times;
+䓴 < edible\-fungus\-from\-trees;
+䑎 < soup\-of\-pig''s\-intestines;
+䐻 < big\-pieces\-of\-dried\-meat;
+䐹 < perserved\-and\-dried\-meat;
+䐰 < to\-offer\-food\-as\-tribute;
+外交部 < foreign\-affairs\-ministry;
+䐂 < fat\-of\-animals\-or\-plants;
+䎵 < to\-look\-straight\-forward;
+䊐 < fluffy\-stuffed\-dumplings;
+䊍 < thick\-congee\-or\-porridge;
+持不同政見 < \(politically\)\-dissenting;
+䇏 < to\-pile\-one\-upon\-another;
+䄜 < happiness\-and\-well\-being;
+䄖 < used\-in\-name\-of\-a\-person;
+䃢 < name\-of\-a\-mountain\-lofty;
+䁇 < to\-look\-for\-a\-short\-time;
+䀫 < narrow\-and\-dim\-eye\-sight;
+㿺 < jutting\-on\-the\-epidermis;
+呈請 < to\-submit\-\(to\-superiors\);
+㽒 < the\-children\-of\-a\-sister;
+㼿 < the\-brick\-wall\-of\-a\-well;
+㼛 < long\-necked\-wine\-vessels;
+㻪 < a\-kind\-of\-jade\-fine\-jade;
+㶅 < dried\-up\-mountain\-creeks;
+上訴 < appeal\-\(a\-judicial\-case\);
+㵢 < a\-marsh\-in\-ancient\-times;
+㴰 < a\-river\-in\-ancient\-times;
+懷念 < to\-cherish\-the\-memory\-of;
+㳍 < a\-place\-in\-ancient\-times;
+㳊 < the\-flowing\-of\-the\-water;
+㲊 < to\-understand\-thoroughly;
+㰾 < songs\-of\-the\-people\-of\-楚;
+㰽 < to\-exert\-oneself\-to\-yell;
+㯫 < a\-wattle\-or\-bamboo\-fence;
+㮦 < branches\-growing\-upwards;
+特點 < characteristic\-\(feature\);
+字母 < letter\-\(of\-the\-alphabet\);
+㪛 < to\-pound\-rocks\-to\-pieces;
+㪙 < to\-go\-to\-the\-very\-source;
+㩭 < to\-disturb\-or\-to\-agitate;
+拔火罐兒 < detachable\-stove\-chimney;
+同謀 < to\-conspire\-with\-someone;
+㡪 < the\-varnish\-on\-the\-floor;
+㡧 < to\-stretch\-open\-painting;
+㠇 < name\-of\-a\-mountain\-ridge;
+桃園 < taoyuan\-\(city\-in\-taiwan\);
+㜿 < name\-of\-a\-fish\-in\-legend;
+江面 < the\-surface\-of\-the\-river;
+㗩 < sound\-of\-endure\-coldness;
+㗧 < to\-scold\-with\-loud\-voice;
+古希臘語 < ancient\-greek\-\(language\);
+㓡 < the\-middle\-part\-of\-a\-bow;
+㐨 < a\-kind\-of\-fish\-in\-legend;
+遲浩田 < chinese\-defense\-minister;
+碑額 < the\-top\-part\-of\-a\-tablet;
+伴奏 < to\-accompany\-\(musically\);
+北溫帶 < the\-north\-temperate\-zone;
+打電話 < to\-make\-a\-telephone\-call;
+右翼 < \(politically\)\-right\-wing;
+浙江 < zhejiang\-province\,\-china;
+人民解放軍 < people''s\-liberation\-army;
+識見 < knowledge\-and\-experience;
+買帳 < to\-show\-respect\-\(for\-sb\);
+暗箭 < attack\-by\-a\-hidden\-enemy;
+深圳 < shenzhen\-\(city\-in\-china\);
+程度 < degree\-\(level\-or\-extent\);
+大關 < \(reach\-a\)\-critical\-point;
+從外表來看 < looking\-from\-the\-outside;
+頭版 < \(newspaper''s\)\-front\-page;
+千絲萬縷 < linked\-in\-countless\-ways;
+春聯 < spring\-festivel\-couplets;
+公眾電信網路 < public\-telephone\-network;
+交換虛電路 < switched\-virtual\-circuit;
+以來 < since\-\(a\-previous\-event\);
+蓮花 < lotus\-\(computer\-company\);
+不日 < within\-the\-next\-few\-days;
+諒解 < \(reach\)\-an\-understanding;
+破土典禮 < ground\-breaking\-ceremony;
+教學機構 < educational\-organization;
+不遺余力 < spare\-no\-pains\-or\-effort;
+表示敬意 < respectful\,\-show\-respect;
+蓋章 < to\-affix\-a\-seal\-\(to\-sth\);
+止痛法 < method\-of\-relieving\-pain;
+觸電 < to\-get\-an\-electric\-shock;
+主動 < \(to\-take\-the\)\-initiative;
+路加福音 < gospel\-according\-to\-luke;
+訴說 < tell\-\(to\-another\-person\);
+總統 < president\-\(of\-a\-country\);
+報頭 < masthead\-\(of\-a\-newspaper;
+南沙 < nansha\-\(spratly\)\-islands;
+通道 < \(communications\)\-channel;
+政績 < \(political\)\-achievements;
+瞥 < take\-fleeting\-glance\-at;
+州 < administrative\-division;
+吧 < emphatic\-final\-particle;
+某 < certain\-thing\-or\-person;
+票 < slip\-of\-paper\-or\-bamboo;
+耶 < used\-in\-transliteration;
+厘 < thousandth\-part\-of\-tael;
+彭 < name\-of\-ancient\-country;
+肴 < cooked\-or\-prepared\-meat;
+俎 < chopping\-board\-or\-block;
+淮 < river\-in\-anhui\-province;
+哦 < oh\?\-really\?\-is\-that\-so\?;
+锤 < balance\-weight\-on\-scale;
+仞 < ancient\-unit\-of\-measure;
+芭 < plantain\-or\-banana\-palm;
+磊 < pile\-of\-rocks\-or\-stones;
+呸 < expression\-of\-reprimand;
+拷 < torture\-and\-interrogate;
+抿 < pucker\-up\-lips\-in\-smile;
+卉 < general\-term\-for\-plants;
+髻 < hair\-rolled\-up\-in\-a\-bun;
+裆 < crotch\-or\-seat\-of\-pants;
+蘑 < type\-of\-edible\-mushroom;
+咿 < descriptive\-of\-creaking;
+篾 < bamboo\-splints\-or\-slats;
+淇 < river\-in\-henan\-province;
+蓑 < rain\-coat\-made\-of\-straw;
+檬 < type\-of\-locust\-oracacia;
+淙 < gurgling\-sound\-of\-water;
+殓 < dress\-corpse\-for\-burial;
+琥 < jewel\-in\-shape\-of\-tiger;
+潞 < river\-in\-northern\-china;
+醍 < essential\-oil\-of\-butter;
+妯 < wives\-of\-one''s\-brothers;
+帏 < curtain\-that\-forms\-wall;
+瓒 < ceremonial\-libation\-cup;
+瑗 < large\-ring\-of\-fine\-jade;
+涞 < river\-in\-hebei\-province;
+爻 < diagrams\-for\-divination;
+锟 < ancient\-treasured\-sword;
+芗 < fragrant\-smell\-of\-grain;
+楦 < a\-last\-for\-making\-shoes;
+舁 < carry\-on\-one''s\-shoulder;
+滠 < river\-in\-hubei\-province;
+忌恨 < hate\-\(due\-to\-envy\,\-etc\);
+雹災 < disaster\-caused\-by\-hail;
+出訪 < visit\-a\-foreign\-country;
+核武器材料 < nuclear\-weapon\-material;
+通訊行業 < communications\-industry;
+北半球 < the\-northern\-hemisphere;
+雙絞線 < unshielded\-twisted\-pait;
+發佈新軟件 < to\-release\-new\-software;
+斑斑 < full\-of\-stains\-or\-spots;
+西裝 < \(western\-style\)\-clothes;
+加油 < to\-make\-an\-extra\-effort;
+募捐 < to\-solict\-contributions;
+專屬經濟區 < exclusive\-economic\-zone;
+皴裂 < chap\-\(lips\,\-skin\,\-etc\.\);
+見聞 < what\-one\-sees\-and\-hears;
+包承制 < responsible\-crew\-system;
+南京 < nanjing\-\(city\-in\-china\);
+規約 < terms\-\(of\-an\-agreement\);
+歸心 < converted\-to\-\(religion\);
+逼死 < hound\-somebody\-to\-death;
+本位主義 < selfish\-departmentalism;
+為所欲為 < do\-whatever\-one\-pleases;
+人民法院 < people''s\-court\-\(of\-law\);
+商業機構 < commercial\-organization;
+鼏 < cover\-of\-tripod\-caldron;
+黰 < young\-girl''s\-hair\-style;
+統治 < \(political\)\-rule\-\(over\);
+補課 < make\-up\-a\-missed\-lesson;
+這樣 < this\-\(kind\-of\,\-sort\-of\);
+播放機 < player\-\(e\.g\.\-cd\-player\);
+達成 < to\-reach\-\(an\-agreement\);
+百般 < in\-hundred\-and\-one\-ways;
+鬂 < the\-hair\-on\-the\-temples;
+禁止核武器試驗條約 < nuclear\-test\-ban\-treaty;
+駮 < a\-kind\-of\-fierce\-animal;
+不翼而飛 < disappear\-without\-trace;
+授計 < to\-confide\-a\-plan\-to\-sb;
+畢恭畢敬 < reverent\-and\-respectful;
+科研人員 < \(scientific\)\-researcher;
+報曉 < herald\-the\-break\-of\-day;
+據統計 < according\-to\-statistics;
+透露消息 < to\-disclose\-information;
+中國時報 < china\-times\-\(newspaper\);
+鄾 < place\-in\-hubei\-province;
+鄬 < place\-in\-henan\-province;
+鄘 < state\-in\-henan\-province;
+利市 < \"lai\-see\"\-\(lucky\-money\);
+郰 < birthplace\-of\-confucius;
+邧 < town\-in\-shanxi\-province;
+側重 < place\-extra\-emphasis\-on;
+報恩 < pay\-a\-debt\-of\-gratitude;
+留學生 < student\-studying\-abroad;
+威廉斯堡 < williamsburg\-\(virginia\);
+便宜行事 < act\-at\-one''s\-discretion;
+幫子 < outer\-\(of\-cabbage\,\-etc\);
+自豪 < \(feel\-a\-sense\-of\)\-pride;
+反艦艇巡航導彈 < anti\-ship\-cruise\-missle;
+蚻 < small\-species\-of\-cicada;
+蒱 < gambling\-game\-with\-dice;
+葧 < heleocharis\-plantaginea;
+流亡在海外 < to\-be\-in\-exile\-overseas;
+防務 < \(pertaining\-to\)\-defense;
+業績 < outstanding\-achievement;
+舲 < small\-boat\-with\-windows;
+商業管理 < business\-administration;
+留言 < to\-leave\-one''s\-comments;
+羫 < the\-skeleton\-of\-a\-sheep;
+年來 < over\-the\-last\-\.\.\.\-years;
+罽 < a\-kind\-of\-woolen\-fabric;
+開拍 < begin\-shooting\-\(a\-film\);
+分之 < \(indicating\-a\-fraction\);
+粺 < polished\-rice\-or\-millet;
+多年來 < for\-the\-past\-many\-years;
+篧 < creel\-for\-trapping\-fish;
+篛 < cuticle\-of\-bamboo\-plant;
+基礎速率 < basic\-rate\-\(as\-in\-isdn\);
+答謝 < to\-express\-one''s\-thanks;
+祔 < worship\-one''s\-ancestors;
+筆談 < conversation\-by\-writing;
+瑪麗 < mali\-\(a\-person''s''\-name\);
+睖 < to\-stare\-straight\-ahead;
+眢 < eyes\-without\-brightness;
+症狀 < symptom\-\(of\-an\-illness\);
+畾 < fields\-divided\-by\-dikes;
+璲 < pendant\-girdle\-ornament;
+瑿 < a\-black\-stone\-like\-jade;
+瑯 < kind\-of\-white\-cornelian;
+瑢 < gem\-ornaments\-for\-belts;
+珶 < white\-jade\-worn\-on\-belt;
+中秋節 < the\-mid\-autumn\-festival;
+玕 < inferior\-variety\-of\-gem;
+佔領 < to\-occupy\-\(a\-territory\);
+猈 < dog\-with\-short\-shinbone;
+手寫識別 < handwriting\-recognition;
+澉 < to\-wash\-name\-of\-a\-place;
+潖 < name\-of\-a\-certain\-river;
+非盈利的組織 < non\-profit\-organization;
+殙 < to\-die\-by\-taking\-poison;
+歁 < unsatisfied\-\(of\-eating\);
+欨 < to\-blow\-or\-breathe\-upon;
+欏 < tree\-the\-horse\-chestnut;
+檇 < wooden\-rammer\-or\-pestle;
+橔 < a\-wooden\-chopping\-block;
+訊息處理系統 < message\-handling\-system;
+備料 < get\-the\-materials\-ready;
+坦克 < tank\-\(military\-vehicle\);
+馬路口 < intersection\-\(of\-roads\);
+四川 < sichuan\-province\,\-china;
+怸 < cns\-2\-2a40\-is\-different;
+比比皆是 < can\-be\-found\-everywhere;
+不抵抗主義 < policy\-of\-nonresistance;
+販運 < to\-transport\-\(for\-sale\);
+墄 < the\-steps\-of\-a\-stairway;
+數字訂購線路 < digital\-subscriber\-line;
+棄舊換新 < to\-turn\-over\-a\-new\-leaf;
+今譯 < modern\-language\-version;
+不情之請 < my\-presumptuous\-request;
+啫 < interjection\-of\-warning;
+投放 < to\-put\-in\-\(circulation\);
+吚 < used\-to\-represent\-sound;
+匁 < japanese\-unit\-of\-weight;
+病倒 < be\-down\-with\-an\-illness;
+拷問 < to\-question\-via\-torture;
+仾 < to\-hang\-or\-bow\-the\-head;
+䶝 < growing\-irregular\-teeth;
+䵈 < unsmelted\-hemp\-and\-silk;
+䵀 < coarse\-crumbs\-of\-barley;
+䴑 < a\-legendary\-weired\-bird;
+䴇 < a\-second\-name\-for\-crane;
+䴁 < a\-kind\-of\-rat\-like\-bird;
+䳲 < a\-swarm\-of\-flying\-birds;
+䲴 < a\-kind\-of\-venomous\-bird;
+䱾 < a\-carp\-like\-savory\-fish;
+䰫 < nimble\-and\-active\-ghost;
+雙連接站 < dual\-attachment\-station;
+䭇 < to\-be\-chocked\-with\-food;
+䭆 < small\-children\-eat\-less;
+䬲 < to\-eat\-to\-the\-half\-full;
+䬪 < a\-kind\-of\-cooked\-noodle;
+䬛 < the\-roaring\-of\-the\-wind;
+患難 < trials\-and\-tribulations;
+䨗 < excessive\-rain\-and\-snow;
+䨅 < small\-birds\-\-\-\-the\-wren;
+鍛煉 < to\-do\-physical\-training;
+䥖 < silver\-of\-gold\-filagree;
+䥏 < unfitted\-for\-each\-other;
+䤥 < agricultural\-implements;
+䢜 < the\-marriage\-of\-a\-woman;
+䡽 < the\-shafts\-of\-a\-vehicle;
+䡺 < the\-end\-of\-an\-axle\-tree;
+䡣 < a\-piece\-of\-curved\-board;
+䠣 < net\-to\-trap\-the\-animals;
+䝈 < a\-big\-and\-strenuous\-pig;
+䚐 < getting\-red\-in\-the\-eyes;
+䚊 < to\-look\-from\-a\-distance;
+䙐 < furs\-and\-linen\-garments;
+䘆 < a\-second\-form\-earthworm;
+䗠 < the\-larva\-of\-mosquitoes;
+䗔 < a\-house\-lizard\-or\-gecko;
+䖱 < large\-shrimp\-in\-the\-sea;
+䔾 < a\-kind\-of\-fragrant\-herb;
+䓱 < a\-kind\-of\-herb\-medicine;
+戴維斯 < davis\-\(english\-surname\);
+補助組織 < auxiliary\-organizations;
+䐤 < dried\-and\-seasoned\-meat;
+䐐 < curved\-part\-of\-the\-knee;
+䏙 < brine\-from\-pickled\-meat;
+䏕 < to\-cook\-food\-thoroughly;
+紅樓夢 < a\-dream\-of\-red\-mansions;
+䍹 < odor\-of\-a\-sheep\-or\-goat;
+䍙 < nets\-for\-catching\-birds;
+䍘 < a\-general\-term\-for\-nets;
+䍓 < net\-for\-catching\-rabbit;
+䋫 < to\-wind\-round\-the\-ropes;
+䋨 < to\-set\-in\-order\-the\-old;
+䊴 < food\-made\-of\-rice\-flour;
+䊪 < coarse\-rice\-\-\-\-unhulled;
+䉜 < young\-and\-tender\-bamboo;
+䉖 < framework\-of\-a\-carriage;
+䇗 < bamboo\-with\-long\-joints;
+䇑 < a\-standing\-short\-person;
+䆊 < unhusked\-glutinous\-rice;
+䆉 < the\-swing\-of\-rice\-plant;
+蛙泳 < \(swimming\)\-breaststroke;
+䃉 < a\-stone\-resembling\-jade;
+怎麼 < \(interrogative\-pronoun\);
+䁌 < to\-see\-for\-a\-short\-time;
+㾀 < to\-be\-weaked\-by\-disease;
+㽸 < diseases\-of\-the\-abdomen;
+在今年年底 < at\-the\-end\-of\-this\-year;
+㼧 < tiles\-in\-cylinder\-shape;
+過不去 < make\-life\-difficult\-for;
+㹲 < a\-frightened\-pig\-or\-dog;
+㹮 < a\-kind\-of\-animal\-\-tapir;
+㹝 < a\-legendary\-wild\-animal;
+㹑 < a\-four\-years\-old\-cattle;
+㹊 < a\-cattle\-of\-white\-color;
+㹆 < the\-coulter\-of\-a\-plough;
+回顧歷史 < to\-look\-back\-at\-history;
+通訊協定 < communications\-protocol;
+㸋 < meats\-used\-in\-sacrifice;
+㷮 < scorched\-or\-burned\-wood;
+㷫 < fire\-causing\-by\-dryness;
+㶒 < the\-current\-of\-a\-stream;
+㴲 < a\-river\-in\-ancient\-time;
+㴑 < to\-trace\-up\-to\-a\-source;
+㴏 < the\-pond\-water\-is\-still;
+㲿 < extensive\-body\-of\-water;
+㲄 < unburnt\-bricks\-or\-tiles;
+㱬 < cannot\-recognize\-people;
+㯙 < the\-buckthorn\-or\-jujube;
+駐守 < \(man\-a\-post\-and\)\-defend;
+㭾 < to\-cut\-the\-timber\-apart;
+溫和 < moderate\-\(policy\,\-etc\.\);
+㭃 < the\-large\-rope\-of\-a\-net;
+㭂 < height\-of\-the\-end\-point;
+㬻 < in\-between\-of\-the\-flesh;
+否認 < to\-declare\-to\-be\-untrue;
+㧯 < a\-bucket\-made\-of\-willow;
+㧥 < to\-nip\-with\-the\-fingers;
+㦽 < with\-elegant\-appearance;
+情報處 < source\-\(of\-information\);
+㦺 < a\-lance\-with\-two\-points;
+㦇 < a\-peaceful\-or\-easy\-mood;
+㥅 < used\-in\-a\-person''s\-name;
+㤌 < to\-have\-one''s\-heart\-own;
+㣻 < to\-remedy\-by\-punishment;
+㣪 < to\-walk\-with\-slow\-steps;
+㣆 < to\-loose\-the\-bow\-string;
+㢾 < the\-curved\-end\-of\-a\-bow;
+㢵 < powerful\-and\-strong\-bow;
+㡹 < to\-rely\-upon\-each\-other;
+㡒 < a\-calico\-sack\-for\-grain;
+㡏 < to\-cut\-a\-strip\-of\-cloth;
+㞼 < to\-respectfully\-receive;
+㚬 < a\-lady\-start\-to\-doll\-up;
+㚖 < to\-come\-out\-to\-the\-open;
+㙊 < an\-area\-of\-level\-ground;
+㕸 < sound\-of\-rolling\-a\-boat;
+㔤 < to\-exert\-one''s\-strength;
+腐敗罪 < the\-crime\-of\-corruption;
+㒤 < to\-have\-one''s\-heart\-won;
+㒙 < to\-hand\-or\-bow\-the\-head;
+步履維艱 < have\-difficulty\-walking;
+共同篩選 < collaborative\-filtering;
+白蛇傳 < tale\-of\-the\-white\-snake;
+大驚小怪 < much\-fuss\-about\-nothing;
+辯証唯物主義 < dialectical\-materialism;
+江西 < jiangxi\-province\,\-china;
+愛撫 < to\-show\-tender\-care\-for;
+參與 < to\-participate\-\(in\-sth\);
+港人 < hong\-kong\-person\|people;
+黃河 < yellow\-river\-\(huang\-he\);
+江蘇 < jiangsu\-province\,\-china;
+任命 < to\-appoint\-and\-nominate;
+公安官員 < public\-safety\-officials;
+餅子 < maize\-or\-millet\-pancake;
+期攷 < end\-of\-term\-examination;
+總額 < total\-\(amount\-or\-value\);
+謂語 < \(grammatical\)\-predicate;
+半成品 < semi\-manufactured\-goods;
+中旬 < middle\-third\-of\-a\-month;
+下旬 < last\-third\-of\-the\-month;
+傳輸技術 < transmission\-technology;
+貝克 < baker\-\(english\-surname\);
+亂吃 < to\-eat\-indiscriminantly;
+奔頭兒 < something\-to\-strive\-for;
+冰天雪地 < a\-world\-of\-ice\-and\-snow;
+政府機構 < government\-organization;
+中轉站 < hub\-\(network\-equipment\);
+恩怨 < \(feeling\-of\)\-resentment;
+不外 < not\-beyond\-the\-scope\-of;
+服刑 < serve\-a\-prison\-sentence;
+莫非 < can\-it\-be\-possible\-that;
+廣西 < guangxi\-province\,\-china;
+不可理喻 < be\-impervious\-to\-reason;
+奔瀉 < \(of\-torrents\)\-rush\-down;
+么 < interrogative\-particle;
+被 < passive\-indicator\-''by'';
+申 < to\-state\-to\-a\-superior;
+岡 < ridge\-or\-crest\-of\-hill;
+琴 < chinese\-lute\-or\-guitar;
+嬌 < seductive\-and\-loveable;
+罗 < net\-for\-catching\-birds;
+摸 < gently\-touch\-with\-hand;
+仰 < raise\-the\-head\-to\-look;
+臍 < abdominal\-area\-of\-crab;
+郑 < state\-in\-today''s\-henan;
+贯 < a\-string\-of\-1000\-coins;
+竭 < put\-forth\-great\-effort;
+秒 < beard\-of\-grain\-or\-corn;
+奚 < where\?\-what\?\-how\?\-why\?;
+盏 < small\-cup\-or\-container;
+萝 < type\-of\-creeping\-plant;
+梧 < sterculia\-platanifolia;
+咦 < expression\-of\-surprise;
+筐 < bamboo\-basket\-or\-chest;
+谍 < an\-intelligence\-report;
+篱 < bamboo\-or\-wooden\-fence;
+琶 < guitar\-like\-instrument;
+潺 < sound\-of\-flowing\-water;
+坳 < a\-hollow\-in\-the\-ground;
+埂 < ditches\-for\-irrigation;
+倌 < assistant\-in\-wine\-shop;
+霁 < to\-clear\-up\-after\-rain;
+邯 < city\-in\-hebei\-province;
+粑 < tsamba\-\(food\-in\-tibet\);
+蛀 < insects\-that\-eat\-books;
+嫦 < name\-of\-a\-moon\-goddess;
+赊 < buy\-and\-sell\-on\-credit;
+弑 < to\-kill\-one''s\-superior;
+摁 < to\-press\-with\-the\-hand;
+畹 < a\-field\-of\-20\-or\-30\-mu;
+觐 < have\-imperial\-audience;
+讦 < expose\-other''s\-secrets;
+旄 < a\-kind\-of\-ancient\-flag;
+趵 < noise\-of\-tramping\-feet;
+酹 < to\-pour\-out\-a\-libation;
+孳 < breed\-in\-large\-numbers;
+塄 < elevated\-bank\-in\-field;
+螈 < diemyelilus\-pyrogaster;
+窬 < a\-small\-door\-or\-window;
+笱 < a\-basket\-trap\-for\-fish;
+牿 < shed\-or\-pen\-for\-cattle;
+蛘 < a\-weevil\-found\-in\-rice;
+畎 < a\-drain\-between\-fields;
+職業中學 < vocational\-high\-school;
+網路節點介面 < network\-node\-interface;
+正在中國訪問 < during\-a\-trip\-to\-china;
+遺留 < \(leave\-or\-be\-a\)\-legacy;
+常規 < conventional\-\(weapons\);
+自食其果 < reap\-what\-one\-has\-sown;
+證券 < \(financial\)\-securities;
+不露聲色 < not\-show\-one''s\-feeling;
+慕道友 < religious\-investigator;
+往常 < habitually\-in\-the\-past;
+大煞風景 < dampening\-one''s\-spirit;
+剝採比 < stripping\-to\-ore\-ratio;
+羅曼語族 < romance\-language\-group;
+孰能生巧 < practice\-makes\-perfect;
+妖冶 < pretty\-and\-flirtatious;
+革命 < \(political\)\-revolution;
+論壇 < forum\-\(for\-discussion\);
+壟斷 < enjoy\-market\-dominance;
+牡丹 < peony\-\(type\-of\-flower\);
+報稅 < declare\-dutiable\-goods;
+目的地 < destination\-\(location\);
+公認 < publicly\-known\-\(to\-be\);
+嗷嗷待哺 < cry\-piteously\-for\-food;
+發表 < to\-issue\-\(a\-statement\);
+不痛不痒 < scratching\-the\-surface;
+國務院 < state\-department\-\(usa\);
+齯 < teeth\-grown\-in\-old\-age;
+電器 < \(electrical\)\-appliance;
+鹣 < fabulous\-mythical\-bird;
+殷勤 < politely\,\-solicitously;
+十五億 < one\-and\-a\-half\-billion;
+鰆 < scomberomorus\-sinensis;
+鮓 < minced\-and\-salted\-fish;
+紅燒肉 < red\-cooked\-\(pork\)\-meat;
+到期 < become\-due\-\(eg\,\-loans\);
+驌 < name\-of\-a\-famous\-horse;
+公安局 < public\-security\-bureau;
+病院 < a\-specialized\-hospital;
+聯網環境 < networking\-environment;
+韹 < music\-of\-bell\-and\-drum;
+解釋執行 < interpreted\-\(computer\);
+八小時工作制 < eight\-hour\-working\-day;
+消息靈通人士 < a\-well\-informed\-source;
+雘 < dye\-made\-from\-red\-soil;
+阇 < a\-buddhist\-high\-priest;
+不近人情 < not\-amenable\-to\-reason;
+鑐 < bolt\-of\-a\-chinese\-lock;
+政治機構 < political\-organization;
+錆 < the\-color\-of\-a\-mineral;
+鄐 < town\-in\-henan\-province;
+遰 < grunting\-sound\-of\-pigs;
+辥 < variety\-of\-marsh\-grass;
+病象 < symptom\-\(of\-a\-disease\);
+日本經濟新聞 < japanese\-economic\-news;
+欺凌 < to\-bully\-and\-humiliate;
+遍及 < to\-extend\-\(everywhere\);
+谂 < consult\-carefully\-with;
+簽署 < to\-sign\-\(an\-agreement\);
+詪 < difficulty\-in\-speaking;
+報導 < to\-cover\-\(report\)\-news;
+觿 < a\-bodkin\-made\-of\-ivory;
+布朗 < english\-surname\,\-brown;
+覀 < variant\-of\-radical\-146;
+褟 < inner\-shirt\-or\-singlet;
+衭 < the\-lapel\-of\-a\-garment;
+衦 < smooth\-out\-the\-clothes;
+標準 < \(an\-official\)\-standard;
+訊息傳遞中介 < message\-transfer\-agent;
+另眼相看 < to\-view\-in\-a\-new\-light;
+蕕 < caryopteris\-divaricata;
+蔯 < a\-variety\-of\-artemisia;
+萴 < medicinal\-poison\-plant;
+菶 < species\-of\-water\-plant;
+信息技術 < information\-technology;
+脤 < raw\-meat\-for\-sacrifice;
+發病率 < incidence\-of\-a\-disease;
+耬 < drill\-for\-sowing\-grain;
+疑問句 < interrogative\-sentance;
+耂 < variant\-of\-radical\-125;
+退休 < retirement\-\(from\-work\);
+繦 < string\-of\-copper\-coins;
+來回來去地 < backwards\-and\-forwards;
+安全考慮 < security\-consideration;
+緅 < silk\-of\-purplish\-color;
+趨附 < to\-ingratiation\-onself;
+此一時 < that\-was\-one\-situation;
+篢 < the\-name\-of\-bamboo\-hat;
+筆跡 < a\-person''s\-handwriting;
+信息管理 < information\-management;
+盡力 < do\-one''s\-best\-\(effort\);
+網絡層協議 < network\-layer\-protocol;
+筆記 < take\-down\-\(in\-writing\);
+不好惹 < not\-to\-be\-trifled\-with;
+褥子 < cotton\-padded\-mattress;
+癊 < a\-disease\-of\-the\-heart;
+瑱 < a\-gem\-used\-as\-ear\-plug;
+蹦蹦跳跳 < bouncing\-and\-vivacious;
+珣 < name\-of\-a\-kind\-of\-jade;
+玼 < beautiful\-color\-of\-gem;
+牷 < cow\-or\-ox\-of\-one\-color;
+儘快 < as\-quickly\-as\-possible;
+通信密度 < communications\-density;
+不得已 < act\-against\-one''s\-will;
+焄 < rising\-flames\-or\-fumes;
+烖 < calamities\-from\-heaven;
+沒有差別 < there\-is\-no\-difference;
+激昂 < aroused\-to\-indignation;
+不言而喻 < it\-goes\-without\-saying;
+工業化國家 < industrialized\-country;
+步調一致 < to\-be\-united\-in\-action;
+童話 < children''s\-fairy\-tales;
+殢 < be\-in\-great\-difficulty;
+槱 < firewood\-for\-sacrifice;
+上半年 < first\-half\-\(of\-a\-year\);
+不要臉 < have\-no\-sense\-of\-shame;
+背地風 < behind\-somebody''s\-back;
+用戶到網絡的接口 < user\-network\-interface;
+朏 < light\-of\-crescent\-moon;
+旐 < an\-embroidered\-pennant;
+攙 < to\-give\-a\-helping\-hand;
+提交 < submit\-\(a\-report\,\-etc\);
+摰 < to\-seize\-with\-the\-hand;
+供職 < hold\-an\-office\-or\-post;
+摀 < to\-cover\-with\-the\-hand;
+搾 < to\-crush\-with\-the\-hand;
+來自 < to\-come\-from\-\(a\-place\);
+定語 < attributive\-\(modifier\);
+近年來 < for\-the\-past\-few\-years;
+怹 < a\-polite\-version\-of\-he;
+漂流 < carried\-by\-the\-current;
+庈 < used\-in\-person''s\-names;
+嵶 < low\-part\-of\-a\-mountain;
+孒 < larvae\-of\-the\-mosquito;
+棄權 < to\-abstain\-from\-voting;
+捏合 < to\-act\-as\-a\-go\-between;
+壖 < open\-space\-along\-water;
+甲板 < deck\-\(of\-a\-boat\,\-etc\.\);
+其自身 < one''s\-own\-\(respective\);
+教義和聖約 < doctrine\-and\-covenants;
+噀 < spirt\-out\-of\-the\-mouth;
+梅派 < the\-mei\-lanfang\-school;
+火焰山 < the\-mountain\-of\-flames;
+涉過 < ford\-\(a\-stream\,\-river\);
+叝 < to\-respectfully\-inform;
+工作站 < \(computer\)\-workstation;
+體內 < internal\-\(to\-the\-body\);
+伮 < to\-make\-a\-great\-effort;
+通訊通道 < communications\-channel;
+䶥 < unevenly\-fitting\-teeth;
+䶤 < sound\-of\-chewing\-bones;
+䶂 < a\-squirrel\-like\-animal;
+䳮 < to\-look\-at\-in\-surprise;
+䲚 < a\-second\-name\-for\-shad;
+採訪記者 < investigative\-reporter;
+䰵 < looks\-like\-common\-carp;
+䰰 < dreary\-cries\-of\-ghosts;
+䮺 < luxuriant\-of\-the\-grass;
+䮪 < to\-geld\-a\-horse\-or\-ass;
+䩼 < stitches\-on\-a\-coverlet;
+䩍 < to\-look\-pale\-or\-pallid;
+䨵 < rained\-for\-a\-long\-time;
+䦈 < to\-sigh\-in\-lamentation;
+䥟 < a\-metal\-marking\-\-stake;
+脊椎 < back\-\(of\-a\-vertibrate\);
+伯父 < father''s\-elder\-brother;
+䢎 < indicating\-exclamation;
+䡵 < decoration\-on\-carriage;
+䡰 < strong\-and\-durable\-hub;
+䡬 < covering\-of\-a\-carriage;
+䡁 < not\-well\-formed\-figure;
+䟽 < scattered\-or\-dispersed;
+䞘 < to\-go\-straight\-forward;
+䝢 < an\-animal\-in\-old\-times;
+保安 < ensure\-public\-security;
+䝓 < long\-beard\-or\-whiskers;
+䜺 < husking\-beans\-for\-cake;
+䜡 < to\-smell\-the\-fragrants;
+䛙 < to\-smell\-the\-fragrance;
+䚞 < the\-middle\-of\-the\-horn;
+印歐人 < indo\-european\-\(person\);
+䙄 < clothes\-with\-thick\-hem;
+䘽 < clothing\-and\-ornaments;
+䕴 < a\-second\-for\-monkshood;
+䔠 < thin\-root\-of\-the\-lotus;
+䏩 < to\-shrug\-the\-shoulders;
+䍱 < the\-wild\-goat\-or\-sheep;
+䋪 < fine\-and\-delicate\-silk;
+䊏 < mixing\-rice\-with\-broth;
+䈄 < a\-kind\-of\-solid\-bamboo;
+上身 < upper\-part\-of\-the\-body;
+䇣 < bamboo\-with\-white\-bark;
+䄠 < to\-sacrifice\-to\-heaven;
+䃧 < sound\-of\-falling\-rocks;
+䀄 < container\-full\-of\-food;
+㿋 < a\-kind\-of\-skin\-disease;
+㼞 < jar\-with\-a\-small\-mouth;
+㺞 < to\-sign\-in\-lamentation;
+坦克車 < tank\-\(armored\-vehicle\);
+㸯 < a\-fine\-breed\-of\-cattle;
+比較而言 < comparatively\-speaking;
+㵯 < sound\-of\-water\-flowing;
+㳯 < goddess\-of\-an\-ink\-slab;
+㱆 < to\-smile\-at\-each\-other;
+㰨 < to\-take\-breath\-or\-rest;
+㮑 < sound\-of\-broken\-sticks;
+㭯 < tree\-with\-small\-leaves;
+字段 < \(numeric\,\-datda\)\-field;
+㫊 < fluttering\-of\-the\-flag;
+㪣 < a\-place\-in\-han\-dynasty;
+㪟 < to\-regard\-as\-important;
+㪞 < to\-be\-held\-by\-the\-hand;
+㩺 < a\-crack\-on\-the\-utensil;
+㩜 < to\-be\-in\-possession\-of;
+㩎 < to\-press\-with\-a\-finger;
+㧶 < the\-jingling\-of\-metals;
+㧙 < to\-give\-a\-playful\-blow;
+㧃 < to\-receive\-what\-is\-due;
+㦣 < to\-talk\-in\-one''s\-sleep;
+㦄 < hard\-to\-say\-or\-predict;
+㤊 < cheerful\-and\-exuberant;
+並舉 < develop\-simultaneously;
+㢉 < a\-room\-with\-open\-space;
+一號 < first\-day\-of\-the\-month;
+㠔 < shapes\-of\-the\-mountain;
+㟻 < the\-moat\-around\-a\-city;
+離開故鄉 < to\-leave\-one''\-homeland;
+㛳 < an\-abnomal\-unborn\-baby;
+㚷 < the\-breasts\-of\-a\-woman;
+㙳 < ruggedness\-of\-the\-road;
+㙤 < a\-crack\-in\-earthenware;
+㙘 < used\-in\-naming\-a\-place;
+㗂 < to\-keep\-the\-mouth\-shut;
+㖐 < sound\-of\-calling\-ducks;
+㔴 < agricultural\-implement;
+㓹 < a\-sharp\-pointed\-weapon;
+㓦 < to\-deliberate\-and\-plan;
+㓘 < jade\-with\-some\-defects;
+不像樣 < in\-no\-shape\-to\-be\-seen;
+審判 < put\-\(someone\)\-to\-trial;
+吐蕃 < ancient\-name\-for\-tibet;
+測定 < to\-survey\-and\-evaluate;
+泰羅 < \(english\-surname\)\-tylo;
+吞聲 < to\-swallow\-one''s\-cries;
+變分法 < calculus\-of\-variations;
+財會 < finance\-and\-accounting;
+通信網絡 < communications\-network;
+交易 < \(business\)\-transaction;
+西遊記 < pilgrimage\-to\-the\-west;
+數字通信 < digital\-communications;
+現役 < \(military\)\-active\-duty;
+共產黨員 < communist\-party\-member;
+民選 < democratically\-elected;
+海拔 < height\-above\-sea\-level;
+網路架構 < network\-infrastructure;
+科技 < science\-and\-technology;
+任免 < to\-appoint\-and\-dismiss;
+畢業生 < graduate\-\(of\-a\-school\);
+亂寫 < to\-write\-without\-basis;
+零錢 < change\-\(said\-of\-money\);
+不服 < not\-accept\-\(something\);
+鼻兒 < a\-hole\-in\-an\-implement;
+感嘆 < to\-sigh\-\(with\-feeling\);
+化裝 < \(of\-actors\)\-to\-make\-up;
+云南 < yunnan\-province\,\-china;
+服完 < serve\-out\-\(a\-sentence\);
+黃山 < mt\.\-huang\-\(huang\-shan\);
+古波 < gubo\-\(a\-personal\-name\);
+猜拳 < a\-finger\-guessing\-game;
+美國之音 < voice\-of\-america\-radio;
+背黑鍋 < to\-be\-made\-a\-scapegoat;
+助詞 < particle\-\(grammatical\);
+靈敏度 < \(level\-of\)\-sensitivity;
+標準組織 < standards\-organization;
+獨攬市場 < to\-monopolize\-a\-market;
+觉 < to\-wake\-up\-from\-sleep;
+環 < jade\-ring\-or\-bracelet;
+划 < to\-row\-or\-paddle\-boat;
+堪 < adequately\-capable\-of;
+吴 < name\-of\-warring\-state;
+鳴 < cry\-of\-bird\-or\-animal;
+呉 < one\-of\-warring\-states;
+馳 < go\-quickly\-or\-swiftly;
+榎 < small\-evergreen\-shrub;
+姻 < relatives\-by\-marriage;
+筒 < thick\-piece\-of\-bamboo;
+帘 < flag\-sign\-of\-a\-tavern;
+稻 < rice\-growing\-in\-field;
+禰 < one''s\-deceased\-father;
+剂 < medicinal\-preparation;
+珂 < inferior\-kind\-of\-jade;
+嘟 < sound\-of\-horn\-tooting;
+瑜 < flawless\-gem\-or\-jewel;
+珑 < a\-gem\-cut\-like\-dragon;
+诬 < make\-false\-accusation;
+嫖 < patronize\-prostitutes;
+飒 < the\-sound\-of\-the\-wind;
+锢 < run\-metal\-into\-cracks;
+掖 < support\-with\-the\-arms;
+棣 < kerria\-japonica\-plant;
+菁 < flower\-of\-leek\-family;
+咩 < the\-bleating\-of\-sheep;
+珉 < stone\-resembling\-jade;
+钎 < tool\-for\-boring\-holes;
+抟 < roll\-around\-with\-hand;
+趸 < sell\-or\-buy\-wholesale;
+妣 < one''s\-deceased\-mother;
+嵊 < district\-in\-shaohsing;
+笸 < flat\-basket\-for\-grain;
+肫 < the\-gizzard\-of\-a\-fowl;
+苫 < rush\-or\-straw\-matting;
+峤 < high\-pointed\-mountain;
+秭 < one\-thousand\-millions;
+姒 < wife\-of\-elder\-brother;
+蓰 < to\-increase\-five\-fold;
+蒌 < artemisia\-stelleriana;
+酃 < the\-spirit\-of\-a\-being;
+糗 < parched\-wheat\-or\-rice;
+辋 < exterior\-rim\-of\-wheel;
+髫 < children''s\-hair\-style;
+虺 < large\-poisonous\-snake;
+醵 < contribute\-for\-drinks;
+蚬 < a\-variety\-of\-bivalves;
+裼 < to\-take\-off\-one''s\-top;
+眵 < eyes\-diseased\-and\-dim;
+枵 < hollo\-stump\-of\-a\-tree;
+蘩 < artemisia\-stellariana;
+讓坐 < to\-give\-up\-one''s\-seat;
+彬彬有禮 < refined\-and\-courteous;
+網絡管理員 < network\-administrator;
+油價 < oil\-\(petroleum\)\-price;
+軟硬件 < software\-and\-hardware;
+巨額 < a\-huge\-sum\-\(of\-money\);
+奔放 < bold\-and\-unrestrained;
+得意 < \(be\)\-proud\-of\-oneself;
+完全兼容 < completely\-compatible;
+熱門貨 < goods\-in\-great\-demand;
+通信量 < communications\-volume;
+奔忙 < be\-busy\-rushing\-about;
+觀測衛星 < observation\-satellite;
+剛直 < upright\-and\-outspoken;
+巡邏 < be\-on\-\(police\)\-patrol;
+祝賀詞 < congratulatory\-speech;
+電腦輔助設計 < computer\-aided\-design;
+降福 < blessings\-from\-heaven;
+炸藥 < explosive\-\(substance\);
+幾十年 < several\-tens\-of\-years;
+夢想 < to\-dream\-of\-\(in\-vain\);
+防空 < anti\-aircraft\-defense;
+三萬七千 < thirty\-seven\-thousand;
+先進 < advanced\-\(technology\);
+大赦國際 < amnesty\-international;
+情報官員 < intelligence\-official;
+奔命 < rush\-about\-on\-errands;
+比方說 < to\-make\-an\-analogy\.\.\.;
+電磁噪聲 < electromagnetic\-noise;
+長途網路 < long\-distance\-network;
+芝加哥大學 < university\-of\-chicago;
+解決 < to\-settle\-\(a\-dispute\);
+鼃 < the\-edible\-water\-frog;
+麥芽糖 < maltose\-\(sweet\-syrup\);
+鷀 < the\-fishing\-cormorant;
+美聯社 < associated\-press\-\(ap\);
+鴠 < a\-kind\-of\-nightingale;
+防治 < \(prevention\-and\)\-cure;
+鰤 < seriola\-qinqueradiata;
+比色分析 < colorimetric\-analysis;
+鯄 < lepidotrigla\-strauchi;
+髈 < defined\-as\-the\-pelvis;
+推薦信 < recommendation\-letter;
+庫爾德人 < kurdish\-person\|people;
+微軟公司 < microsoft\-corporation;
+分機 < \(telephone\)\-extension;
+颸 < cool\-breeze\-of\-autumn;
+眾望 < people''s\-expectations;
+不識抬舉 < fail\-to\-appreciate\-sb;
+白糖 < \(refined\)\-white\-sugar;
+擁戴 < to\-support\-\(a\-person\);
+席卷亞洲 < to\-sweep\-through\-asia;
+表達 < to\-voice\-\(an\-opinion\);
+幾天來 < for\-the\-past\-few\-days;
+報時 < give\-the\-correct\-time;
+隨和 < amiable\-\(disposition\);
+作業環境 < operating\-environment;
+酎 < double\-fermented\-wine;
+函授 < correspondence\-course;
+迷戀 < to\-be\-infatuated\-with;
+陸海空三軍 < army\,\-navy\,\-air\-force;
+投了票 < past\-tense\-of\-to\-vote;
+肯尼迪 < kennedy\-\(proper\-name\);
+拗陷 < geological\-depression;
+免疫 < immunity\-\(to\-disease\);
+公然 < \(do\-something\)\-openly;
+智慧產權 < intellectual\-property;
+谺 < the\-mouth\-of\-a\-valley;
+堅持 < to\-continue\-upholding;
+出差 < be\-on\-a\-business\-trip;
+蠸 < aulacophora\-femoralis;
+漸進 < progress\-step\-by\-step;
+蜺 < reflection\-of\-rainbow;
+本土化軟件 < software\-localization;
+蘘 < a\-kind\-of\-wild\-ginger;
+限制 < \(impose\)\-restrictions;
+蕚 < the\-calyx\-of\-a\-flower;
+保護區 < conservation\-district;
+葹 < kind\-of\-chrysanthemum;
+萻 < small\-buddhist\-temple;
+年初 < beginning\-of\-the\-year;
+舚 < to\-put\-out\-the\-tongue;
+奧德賽 < the\-odyssey\,\-by\-homer;
+高級官員 < high\-ranking\-official;
+半夜三更 < in\-the\-depth\-of\-night;
+筆錄 < put\-down\-\(in\-writing\);
+按脈 < feel\-\(take\)\-the\-pulse;
+繴 < a\-kind\-of\-fishing\-net;
+竼 < bamboo\-cover\-for\-boat;
+取消禁令 < to\-life\-a\-prohibition;
+禨 < pray\-for\-good\-fortune;
+招聘 < take\-job\-applications;
+越南語 < vietnamese\-\(language\);
+癥 < obstruction\-of\-bowels;
+痏 < a\-bruise\-or\-contusion;
+持不同政見者 < \(political\)\-dissident;
+光州 < kwangju\-\(south\-korea\);
+實際應用 < practical\-application;
+璡 < jade\-look\-alike\-stone;
+工商 < industry\-and\-commerce;
+澳洲 < australia\-\(continent\);
+生產能力 < manufacturing\-ability;
+總統選舉 < presidential\-election;
+皮兒 < \(dough\,\-etc\.\)wrappers;
+澂 < clear\-and\-still\-water;
+甘肅 < gansu\-province\,\-china;
+不擇手段 < by\-fair\-means\-or\-foul;
+淜 < roar\-of\-dashing\-waves;
+沇 < flowing\-and\-engulfing;
+安閒 < peaceful\-and\-carefree;
+艱巨 < very\-difficult\-\(task\);
+蠻橫 < rude\-and\-unreasonable;
+簽字 < to\-sign\-\(a\-signature\);
+暎 < sun\-beginning\-decline;
+安適 < quiet\-and\-comfortable;
+國際標準 < interntional\-standard;
+金陵大學 < university\-of\-nanking;
+異質網路 < heterogeneous\-network;
+白手起家 < build\-up\-from\-nothing;
+嵼 < winding\-mountain\-path;
+葡萄牙語 < portuguese\-\(language\);
+測良 < to\-survey\-and\-measure;
+資料傳送服務 < data\-delivery\-service;
+班車 < regular\-bus\-\(service\);
+埵 < hardened\-dirt\-or\-clay;
+嗻 < to\-screen\.\-loquacious;
+案由 < main\-points\-of\-a\-case;
+貶謫 < banish\-from\-the\-court;
+黃魚 < yellow\-croaker\-\(fish\);
+身世 < one''s\-life\-experience;
+抱恨 < have\-a\-gnawing\-regret;
+匟 < divan\-for\-two\-persons;
+剾 < to\-pick\-up\-with\-knife;
+四年前 < four\-years\-previously;
+自古 < \(since\)\-ancient\-times;
+䵗 < to\-clean\-the\-withered;
+䵄 < to\-boil\-or\-stew\-wheat;
+䳹 < a\-kind\-dove\-like\-bird;
+䳝 < a\-kind\-of\-small\-birds;
+䱟 < a\-kind\-of\-silver\-fish;
+介質訪問控制 < medium\-access\-control;
+䯯 < hang\-down\-of\-the\-hair;
+䯭 < of\-nice\-and\-good\-hair;
+䮄 < an\-one\-year\-old\-horse;
+笆斗 < round\-bottomed\-basket;
+一臂之力 < \(lend\)\-a\-helping\-hand;
+䪥 < shallots\-or\-scallions;
+䩩 < a\-measure\-of\-capacity;
+䦽 < an\-east\-and\-west\-wall;
+製造商 < manufacturing\-company;
+䦚 < wide\-open\-of\-the\-door;
+䦌 < the\-door\-is\-wide\-open;
+二號 < 2\-nd\-day\-of\-the\-month;
+䥈 < the\-symbol\-for\-cobalt;
+不倫不類 < neither\-fish\-nor\-fowl;
+䤗 < taste\-of\-strong\-drink;
+䢩 < to\-forbid\-to\-prohibit;
+䡶 < vehicles\-and\-garments;
+䞚 < to\-hang\-on\-a\-big\-tree;
+䝖 < reptiles\-without\-feet;
+䛱 < to\-talk\-unremittingly;
+䛊 < cheerful\-all\-the\-time;
+䛃 < used\-in\-person''s\-name;
+䘐 < the\-bleed\-at\-the\-nose;
+䗉 < a\-small\-solitary\-wasp;
+基本原理 < fundamental\-principle;
+䖔 < a\-kind\-of\-white\-tiger;
+䖍 < to\-act\-with\-reverence;
+䔵 < fragrant\-thoroughwort;
+財經 < finance\-and\-economics;
+䔊 < dense\-growth\-of\-grass;
+䓒 < scirpus\-cyperinus\-var;
+撫養成人 < to\-bring\-up\-\(a\-child\);
+䒦 < grass\-floats\-on\-water;
+䒄 < fully\-laden\-of\-a\-boat;
+䑝 < a\-small\-cup\-with\-ears;
+䏤 < top\-of\-the\-human\-head;
+主語 < \(grammatical\)\-subject;
+䎶 < offering\-blood\-to\-god;
+通信服務 < communication\-service;
+䎚 < the\-end\-of\-bird\-wings;
+䎖 < soaring\-up\-in\-the\-sky;
+䌧 < a\-kind\-of\-silk\-fabric;
+䌟 < to\-weave\-silk\-ribbons;
+嘖嘖 < to\-click\-one''s\-tongue;
+䋂 < dresses\-for\-the\-bride;
+䈧 < skin\-of\-bamboo\-shoots;
+䈞 < ancient\-name\-of\-india;
+䇾 < a\-flute\-with\-23\-tubes;
+䇰 < a\-bamboo\-binded\-torch;
+䇡 < the\-shuttle\-of\-a\-loom;
+䆠 < a\-government\-official;
+䆛 < something\-in\-the\-cave;
+鼻祖 < the\-earliest\-ancestor;
+䅗 < four\-bundle\-of\-grains;
+反革命 < counter\-revolutionary;
+䁭 < to\-give\-an\-angry\-look;
+䁚 < a\-kind\-of\-eye\-disease;
+䀽 < to\-look\-at\-each\-other;
+䀠 < a\-chinese\-family\-name;
+䀓 < to\-turn\-one''s\-eyes\-to;
+㿴 < wide\-piece\-of\-leather;
+㿫 < to\-split\-tangled\-hemp;
+㿏 < paralysis\-of\-the\-body;
+㾾 < disease\-of\-the\-throat;
+㼲 < sound\-of\-broken\-tiles;
+戀愛 < to\-have\-a\-love\-affair;
+㼐 < a\-kind\-of\-white\-melon;
+㹶 < a\-kind\-of\-wild\-animal;
+㹦 < dog\-with\-a\-short\-tail;
+㹔 < cattle\-with\-long\-back;
+暴跌 < steep\-fall\-\(in\-price\);
+㵨 < a\-dry\-land\-in\-a\-river;
+㳈 < a\-great\-flow\-of\-water;
+讓開 < to\-get\-out\-of\-the\-way;
+㱟 < to\-rip\-open\-the\-flesh;
+㰄 < a\-small\-chestnut\-tree;
+㮗 < the\-handle\-of\-a\-spear;
+㭍 < capital\-form\-of\-seven;
+㬠 < to\-expose\-to\-sunlight;
+檔案分配區 < file\-allocation\-table;
+㩟 < to\-sew\-some\-ornaments;
+㨌 < to\-milk\-a\-cow\-or\-goat;
+就便 < at\-\(your\)\-convenience;
+可身 < to\-fit\-well\-\(clothes\);
+科研 < \(scientific\)\-research;
+㠋 < a\-lofty\-mountain\-peak;
+㟞 < precipitous\-and\-lofty;
+㟝 < to\-bank\-up\-with\-earth;
+㟜 < shape\-of\-the\-mountain;
+㟖 < a\-dialect\-of\-minority;
+㟎 < a\-long\-mountain\-ridge;
+㞁 < can\-not\-walk\-normally;
+㘰 < name\-of\-a\-old\-country;
+㘡 < a\-pen\-for\-wild\-beasts;
+㘖 < to\-make\-a\-disturbance;
+老兩口 < an\-old\-married\-couple;
+㗁 < the\-roof\-of\-the\-mouth;
+㖗 < high\-ridges\-of\-cliffs;
+地對空導彈 < ground\-to\-air\-missile;
+㕢 < profound\-significance;
+可謂 < it\-could\-even\-be\-said;
+讓路 < to\-make\-way\-\(for\-sth\);
+㒆 < to\-gather\-the\-harvest;
+戶主 < head\-of\-the\-household;
+頒行 < issue\-for\-enforcement;
+國營企業 < nationalized\-industry;
+二十八號 < 28th\-day\-of\-the\-month;
+湖南 < hunan\-province\,\-china;
+本固枝榮 < when\-the\-root\-is\-firm;
+傳輸設備 < transmission\-facility;
+餘數 < \(numerical\)\-remainder;
+不管 < no\-matter\-\(what\,\-how\);
+版面 < space\-of\-a\-whole\-page;
+不是味兒 < not\-the\-right\-flavour;
+不禁 < can''t\-help\-\(doing\-sth;
+隨機時間 < random\-period\-of\-time;
+昏迷 < to\-lose\-consciousness;
+吐絮 < the\-opening\-of\-a\-boll;
+鋪平 < spread\-out\-\(material\);
+傳輸距離 < transmission\-distance;
+拜把子 < become\-sworn\-brothers;
+北寒帶 < the\-north\-frigid\-zone;
+不理 < refuse\-to\-acknowledge;
+變臉 < suddenly\-turn\-hostile;
+印度尼西亞語 < indonesian\-\(language\);
+海斯 < hayes\-\(microcomputer\);
+東德 < \(former\)\-east\-germany;
+暗礁 < submerged\-reef\-\(rock\);
+買好 < to\-ingratiate\-oneself;
+八路軍 < the\-eighth\-route\-army;
+暗疾 < unmentionable\-disease;
+聳動 < to\-create\-a\-sensation;
+另起爐灶 < to\-start\-from\-scratch;
+首腦會議 < leadership\-conference;
+板凳 < wooden\-bench\-or\-stool;
+不暇 < have\-no\-time\-\(for\-sth;
+悲憤 < grief\-and\-indignation;
+不信任投票 < vote\-of\-no\-confidence;
+南北極 < south\-and\-north\-poles;
+如出一轍 < be\-precisely\-the\-same;
+董事長 < chairman\-of\-the\-board;
+本人的觀點 < \(one''s\)\-personal\-view;
+特產 < special\-local\-product;
+蕭條 < \(economic\)\-depression;
+不行了 < on\-the\-point\-of\-death;
+矮杆品種 < short\-stalked\-variety;
+殯葬 < funeral\-and\-interment;
+命令 < \(an\)\-order\-or\-command;
+流亡 < to\-\(force\-into\)\-exile;
+絞盡腦汁 < to\-wrack\-one''s\-brains;
+光磁碟機 < magneto\-optical\-drive;
+卡西尼 < cassini\-\(proper\-name\);
+卑污 < despicable\-and\-filthy;
+國有企業 < nationalized\-business;
+暴卒 < die\-of\-sudden\-illness;
+逼視 < look\-at\-from\-close\-up;
+旺月 < busy\-\(business\)\-month;
+什 < file\-of\-ten\-soldiers;
+責 < one''s\-responsibility;
+爵 < feudal\-title\-or\-rank;
+啊 < exclamatory\-particle;
+楚 < name\-of\-feudal\-state;
+托 < to\-hold\-up\-with\-palm;
+汲 < draw\-water\-from\-well;
+魅 < kind\-of\-forest\-demon;
+伊 < third\-person\-pronoun;
+鸿 < species\-of\-wild\-swan;
+姥 < maternal\-grandmother;
+捧 < hold\-up\-in\-two\-hands;
+乙 < second\-heaven''s\-stem;
+吁 < interjection\-''alas\!'';
+姨 < mother\/wife''s\-sister;
+亩 < chinese\-land\-measure;
+僵 < stiff\-and\-motionless;
+拱 < fold\-hands\-on\-breast;
+禾 < grain\-still\-on\-stalk;
+嗡 < sound\-of\-flying\-bees;
+猩 < species\-of\-orangutan;
+狞 < ferocious\-appearance;
+拈 < pick\-up\-with\-fingers;
+陛 < steps\-leading\-throne;
+鸯 < female\-mandarin\-duck;
+卯 < th\-of\-earth\-branches;
+熠 < bright\-and\-sparkling;
+阂 < blocked\-or\-separated;
+淅 < water\-used\-wash\-rice;
+佚 < indulge\-in\-pleasures;
+辚 < rumbling\-of\-vehicles;
+巽 < th\-of\-the\-8\-trigrams;
+訇 < the\-sound\-of\-a\-crash;
+狺 < the\-snarling\-of\-dogs;
+浔 < steep\-bank\-by\-stream;
+蓊 < luxuriant\-vegetation;
+蓠 < gracilaria\-verrucosa;
+菀 < luxuriance\-of\-growth;
+胗 < pustules\-of\-any\-kind;
+颃 < fly\-down\-or\-downward;
+垆 < black\-clods\-of\-earth;
+樗 < ailanthus\-glandulosa;
+蚧 < a\-red\-spotted\-lizard;
+缶 < earthen\-crock\-or\-jar;
+豳 < a\-zhou\-dynasty\-state;
+轺 < small\-light\-carriage;
+逯 < leave\-without\-reason;
+列車 < train\-\(railway\-term\);
+友好 < friendly\-\(relations\);
+櫃邊 < to\-lie\-on\-one''s\-side;
+制裁 < \(economic\)\-sanctions;
+社交 < \(social\)\-interaction;
+操行 < \(student''s\)\-behavior;
+光磁碟 < magneto\-optical\-disk;
+編組 < organize\-into\-groups;
+親近 < get\-close\-to\-someone;
+博覽會 < \(international\)\-fair;
+多種語言支持 < multilingual\-support;
+結論 < \(reach\-a\)\-conclusion;
+闡述 < expound\-\(a\-position\);
+維吾爾人 < uighur\-person\|people;
+開除學籍 < to\-expel\-from\-school;
+心寒 < be\-very\-disappointed;
+組裝 < assemble\-and\-install;
+誓死 < to\-pledge\-one''s\-life;
+一般性 < \(in\)\-general\-\(terms\);
+城鄉 < city\-and\-countryside;
+協定 < \(reach\-an\)\-agreement;
+逋逃藪 < refuge\-for\-fugitives;
+首席代表 < chief\-representative;
+水域 < \(territorial\)\-waters;
+勻整 < neat\-and\-well\-spaced;
+白眼珠 < the\-white\-of\-the\-eye;
+物理結構 < physical\-composition;
+內閣 < \(government\)\-cabinet;
+廠牌 < brand\-\(of\-a\-product\);
+奶奶 < paternal\-grandmother;
+編次 < order\-of\-arrangement;
+國會議長 < speaker\-of\-the\-house;
+應用平台 < application\-platform;
+教授 < university\-professor;
+勢必 < is\-bound\-to\-\(happen\);
+墨汁 < prepared\-chinese\-ink;
+大將 < a\-general\-or\-admiral;
+氣人 < to\-get\-someone\-angry;
+包場 < book\-a\-whole\-theatre;
+六號 < 6th\-day\-of\-the\-month;
+匈牙利語 < hungarian\-\(language\);
+詞彙 < \(list\-of\)\-vocabulary;
+軟體配送者 < software\-distributor;
+不信任案 < no\-confidence\-motion;
+齞 < to\-display\-the\-teeth;
+鼈 < a\-fresh\-water\-turtle;
+鼂 < a\-kind\-of\-sea\-turtle;
+捕蟲葉 < insect\-catching\-leaf;
+鸇 < kind\-of\-bird\-of\-prey;
+攝影 < to\-take\-a\-photograph;
+鸂 < a\-kind\-of\-water\-bird;
+鷫 < turquoise\-kingfisher;
+鷁 < fishhawk\-bow\-or\-prow;
+改善關係 < to\-improve\-relations;
+辯白 < offer\-an\-explanation;
+鰜 < big\-mouthed\-flounder;
+髺 < the\-hair\-dishevelled;
+採訪 < cover\-\(a\-news\-story\);
+骣 < horse\-without\-saddle;
+停火協議 < cease\-fire\-agreement;
+餽 < make\-present\-of\-food;
+兵站 < army\-service\-station;
+韱 < wild\-onions\-or\-leeks;
+軍費 < military\-expenditure;
+二十二號 < 22\-nd\-day\-of\-a\-month;
+霃 < long\-continued\-rains;
+據悉 < according\-to\-reports;
+前年 < the\-year\-before\-last;
+闍 < tower\-over\-city\-gate;
+補色 < complementary\-colour;
+攻勢 < \(military\)\-offensive;
+確有其事 < \(confirm\-to\-be\)\-true;
+大型企業 < large\-scale\-industry;
+分擔 < share\-responsibility;
+鍱 < thin\-plates\-of\-metal;
+使徒行傳 < acts\-of\-the\-apostles;
+鉶 < sacrificial\-cauldron;
+開發 < exploit\-\(a\-resource\);
+歷代 < successive\-dynasties;
+醰 < bitter\-taste\-in\-wine;
+近日 < in\-the\-past\-few\-days;
+回訪 < \(pay\-a\)\-return\-visit;
+必不可少 < absolutely\-necessary;
+病變 < pathological\-changes;
+凌晨 < early\-in\-the\-morning;
+趂 < to\-take\-advantage\-of;
+不雅觀 < offensive\-to\-the\-eye;
+接收器靈敏度 < receiver\-sensitivity;
+不在話下 < be\-nothing\-difficult;
+陳述句 < declarative\-sentence;
+襬 < lower\-part\-of\-a\-robe;
+這個月 < this\-\(current\)\-month;
+袳 < spread\-one''s\-clothes;
+歷來最低點 < all\-time\-low\-\(point\);
+倍頻器 < frequency\-multiplier;
+槳狀 < certificate\-of\-merit;
+蜛 < hydrophilus\-cognatus;
+蛚 < cyrtoxiphus\-ritsemae;
+民族主義情緒 < nationalist\-feelings;
+領導權 < leadership\-authority;
+薢 < woody\-climbing\-plant;
+倚重 < to\-rely\-heavily\-upon;
+紀念日 < day\-of\-commemoration;
+茀 < overgrown\-with\-grass;
+芄 < metaplexis\-stauntoni;
+應用軟件 < application\-software;
+舺 < place\-name\-in\-taiwan;
+脡 < strips\-of\-dried\-meat;
+把酒 < raise\-one''s\-wine\-cup;
+軍用 < \(for\)\-military\-\(use\);
+交換技術 < switching\-technology;
+米德爾伯裡 < middlebury\-\(college\);
+保重 < take\-care\-of\-oneself;
+報仇 < to\-revenge\-\(oneself\);
+抄身 < to\-search\-\(a\-person\);
+粃 < empty\-husks\-of\-grain;
+程式語言 < programming\-language;
+白棉紙 < stencil\-tissue\-paper;
+窣 < to\-rush\-out\-of\-a\-den;
+穇 < panicum\-frumentaceum;
+棉襖 < cotton\-padded\-jacket;
+磒 < to\-fall\-from\-or\-into;
+儘早 < as\-early\-as\-possible;
+矑 < the\-pupil\-of\-the\-eye;
+睍 < to\-look\-at\-fearfully;
+培修 < to\-repair\-earthworks;
+尊重 < to\-value\-\(something\);
+甽 < drain\-between\-fields;
+甃 < brick\-wall\-of\-a\-well;
+發表聲明 < to\-issue\-a\-statement;
+琖 < carved\-jade\-wine\-cup;
+玦 < broken\-piece\-of\-jade;
+病灶 < focus\-\(of\-infection\);
+兩點十九分 < 2\-\:1\-9\-\(time\-of\-day\);
+侵襲 < to\-invade\-and\-attack;
+瀳 < to\-arrive\-\(of\-water\);
+電子工業 < electronics\-industry;
+澬 < to\-rain\-continuously;
+簡朴 < simple\-and\-unadorned;
+駁運 < transport\-by\-lighter;
+挪窩兒 < to\-move\-\(to\-a\-house\);
+召開會議 < to\-call\-a\-conference;
+洤 < a\-fountain\-or\-spring;
+例言 < introductory\-remarks;
+備查 < for\-future\-reference;
+槾 < paste\-wall\-with\-dirt;
+德國人 < german\-person\|people;
+棨 < tally\-or\-wooden\-pass;
+桬 < pear\-and\-other\-trees;
+安逸 < easy\-and\-comfortable;
+敳 < to\-govern\-forcefully;
+敁 < to\-weigh\-in\-the\-hand;
+病房 < ward\-\(of\-a\-hospital\);
+百事通 < knowledgeable\-person;
+表彰 < cite\-\(in\-dispatches\);
+搎 < to\-rub\-with\-the\-hand;
+不死心 < unwilling\-to\-give\-up;
+礦泉水 < mineral\-spring\-water;
+吃不下 < not\-feel\-like\-eating;
+幀檢驗序列 < frame\-check\-sequence;
+萬維網 < world\-wide\-web\-\(www\);
+商業應用 < business\-application;
+每況愈下 < steadily\-deteriorate;
+拜會 < pay\-an\-official\-call;
+專程 < special\-purpose\-trip;
+媒體訪問控制 < media\-access\-control;
+偽幣 < counterfeit\-currency;
+軍事機構 < military\-institution;
+嵏 < a\-mountain\-in\-shenxi;
+才略 < ability\-and\-sagacity;
+孭 < to\-carry\-on\-the\-back;
+四年制的大學 < four\-year\-university;
+層次 < arrangement\-of\-ideas;
+判處死刑 < to\-sentance\-to\-death;
+嫋 < slender\-and\-delicate;
+婣 < marriage\-connections;
+筆法 < technique\-of\-writing;
+實體層 < physical\-layer\-\(osi\);
+囬 < to\-return\-to\-or\-from;
+交通 < \(automobile\)\-traffic;
+現階段 < at\-the\-present\-stage;
+貨幣貶值 < currency\-devaluation;
+叛國罪 < the\-crime\-of\-treason;
+按照法律 < according\-to\-the\-law;
+劂 < chisel\-for\-engraving;
+啟程 < set\-out\-on\-a\-journey;
+不完全中立 < imperfect\-neutrality;
+畫報 < pictorial\-\(magazine\);
+北回歸線 < the\-tropic\-of\-cancer;
+克里斯托弗 < \(warren\)\-christopher;
+電子元件 < electronic\-component;
+經濟衰退 < \(economic\)\-recession;
+䶙 < swelling\-of\-the\-gums;
+䶊 < to\-bleed\-at\-the\-nose;
+光二極管 < light\-emitting\-diode;
+䴟 < an\-one\-year\-old\-deer;
+䳳 < a\-kind\-of\-small\-bird;
+䳑 < a\-pheasant\-like\-bird;
+䲱 < a\-kind\-of\-black\-bird;
+䲕 < the\-yangtze\-porpoise;
+䱐 < a\-kind\-of\-black\-fish;
+䱀 < a\-kind\-of\-small\-fish;
+侵擾 < to\-invade\-and\-harass;
+屏幕 < \(tv\-or\-movie\)\-screen;
+䮡 < a\-supernatural\-horse;
+䮂 < horse\-with\-long\-hair;
+䭷 < horse\-with\-long\-mane;
+䬩 < to\-abstain\-from\-meat;
+䬣 < a\-sacrificial\-victim;
+䫠 < short\-hair\-and\-beard;
+錦標賽 < championship\-contest;
+䩽 < a\-quiver\-one\-a\-horse;
+䩂 < to\-come\-to\-the\-front;
+球網 < net\-\(for\-ball\-games\);
+䧗 < mountains\-collapsing;
+䦦 < a\-musical\-instrument;
+䥤 < the\-neck\-of\-a\-pestle;
+䥄 < to\-plaster\-with\-gold;
+䤸 < short\-spear\-or\-lance;
+不穩平衡 < unstable\-equilibrium;
+漢化 < chinese\-localization;
+䠑 < between\-the\-buttocks;
+䠈 < hard\-to\-move\-forward;
+䟩 < hard\-of\-walk\-forward;
+䞙 < to\-walk\-in\-hurriedly;
+䝑 < a\-local\-produced\-pig;
+䜧 < to\-insult\-with\-words;
+䜓 < a\-slip\-of\-the\-tongue;
+䛌 < to\-provoke\-or\-arouse;
+䙮 < strip\-of\-the\-clothes;
+䘾 < legs\-of\-the\-trousers;
+信息資源 < information\-resource;
+䕫 < a\-one\-legged\-monster;
+䔈 < lush\-growth\-of\-grass;
+六十五歲 < sixty\-five\-years\-old;
+䑠 < long\-and\-narrow\-boat;
+䐸 < the\-back\-of\-the\-knee;
+䏿 < the\-calf\-of\-the\-legs;
+䏡 < uncooked\-or\-raw\-meat;
+䊳 < to\-break\-into\-pieces;
+䊲 < to\-hull\-rice\-roughly;
+䊂 < poor\-quality\-of\-rice;
+對峙 < mutual\-confrontation;
+䉑 < black\-skinned\-bamboo;
+䈦 < a\-curved\-bamboo\-whip;
+䈑 < tools\-to\-unreel\-silk;
+䈁 < tools\-used\-on\-a\-boat;
+䇘 < tool\-to\-collect\-rope;
+䆣 < abode\-of\-the\-emperor;
+䆏 < a\-kind\-of\-rice\-plant;
+䅮 < a\-full\-head\-of\-grain;
+䅓 < curved\-piece\-of\-wood;
+䅏 < rice\-boiled\-to\-gruel;
+䄯 < ten\-handle\-of\-grains;
+美軍 < us\-army\|armed\-forces;
+䄂 < to\-pray\-and\-to\-curse;
+䃰 < brick\-or\-stone\-steps;
+䂒 < short\-to\-curry\-favor;
+䂂 < to\-gaze\-at\-in\-terror;
+䁬 < to\-act\-pretentiously;
+䀷 < to\-have\-quick\-glance;
+䀲 < diseases\-in\-the\-eyes;
+位於 < be\-situated\-\(in\,\-at\);
+㿸 < to\-cast\-off\-the\-skin;
+㿞 < an\-old\-man\-of\-eighty;
+㽤 < a\-small\-plot\-of\-land;
+㽢 < to\-plough\-the\-fields;
+㽕 < new\-branches\-growing;
+㽃 < a\-big\-piece\-of\-brick;
+㼢 < bricks\-an\-eathen\-jar;
+㼉 < green\-colored\-melons;
+㻮 < bright\-and\-brilliant;
+㺮 < fine\-stone\-like\-jade;
+㺂 < big\-and\-strong\-sheep;
+㹘 < shinbone\-of\-a\-cattle;
+㸪 < an\-ox\-walking\-slowly;
+變頻 < frequency\-conversion;
+競爭力 < competitive\-strength;
+㷙 < to\-fry\-in\-fat\-or\-oil;
+㶔 < swift\-and\-torrential;
+㵞 < bellied\-in\-water\-gas;
+㳼 < bubbling\-of\-fountain;
+㳚 < flowing\-of\-the\-water;
+㳔 < to\-soak\-or\-be\-soaked;
+㲫 < hair\-knots\-in\-a\-mess;
+㰋 < a\-kind\-of\-fruit\-tree;
+㯌 < to\-operate\-or\-manage;
+智能大樓 < intelligent\-building;
+少數民族 < minority\-nationality;
+單字 < individual\-character;
+㭞 < a\-kind\-inferior\-wood;
+㭒 < a\-farming\-instrument;
+㩻 < rugged\-mountain\-path;
+㩔 < a\-tool\-to\-make\-a\-bow;
+㧹 < to\-strike\-with\-fists;
+背心 < a\-sleeveless\-garment;
+戶口 < registered\-residence;
+㡙 < curtain\-for\-carriage;
+本科 < undergraduate\-course;
+㠗 < deep\-in\-the\-mountain;
+㞟 < savings\-and\-reserves;
+㙣 < to\-pile\-a\-sand\-hills;
+便中 < at\-one''s\-convenience;
+㙑 < the\-canopy\-of\-heaven;
+㘎 < the\-roars\-of\-a\-tiger;
+鑒定委員會 < evaluation\-committee;
+㘅 < to\-hold\-in\-the\-mouth;
+寶劍 < a\-double\-edged\-sword;
+㕡 < the\-bed\-of\-a\-torrent;
+㕌 < to\-raise\-the\-curtain;
+㔋 < cut\-into\-thin\-slices;
+㒅 < to\-unbind\-the\-collar;
+㑉 < cannot\-straighten\-up;
+醞釀 < mull\-over\-\(an\-issue\);
+全面禁止 < complete\-prohibition;
+暗號 < secret\-signal\-\(sign\);
+老爺 < maternal\-grandfather;
+班期 < schedule\-\(for\-flight;
+買方 < buyer\-\(in\-contracts\);
+安娜 < anna\-\(person''s\-name\);
+騾馬大車 < mule\-and\-horse\-carts;
+經濟發展 < economic\-development;
+通訊系統 < communication\-system;
+責成 < give\-somebody\-a\-task;
+不二法門 < the\-one\-and\-only\-way;
+邏輯鏈路控制 < logical\-link\-control;
+多麼 < how\-\(wonderful\,\-etc\);
+酬謝 < to\-thank\-with\-a\-gift;
+無價珍珠 < pearl\-of\-great\-price;
+往返 < to\-go\-back\-and\-forth;
+包金 < cover\-with\-gold\-leaf;
+未成年者 < minor\-\(not\-an\-adult\);
+暑熱 < hot\-\(summer\)\-weather;
+巡迴分析端口 < roving\-analysis\-port;
+伊斯蘭堡 < islamabad\-\(pakistan\);
+運動會 < a\-sports\-competition;
+不曾 < never\-\(have\-done\-sth;
+總部 < general\-headquarters;
+貶值 < to\-become\-devaluated;
+遺骸 < \(dead\)\-human\-remains;
+二十四號 < 24\-th\-day\-of\-a\-month;
+類推 < to\-reason\-by\-analogy;
+大失所望 < greatly\-dissapointed;
+和好 < to\-become\-reconciled;
+本土 < one''s\-native\-country;
+亞倫 < aaron\-\(a\-man''s\-name\);
+羞恥 < \(a\-feeling\-of\)\-shame;
+哈佛 < harvard\-\(university\);
+暑期 < summer\-vacation\-time;
+企業集團 < industry\-association;
+管理接口 < management\-interface;
+呼喊 < shout\-\(slogans\,\-etc\);
+繽紛 < in\-riotous\-profusion;
+呈報 < to\-\(submit\-a\)\-report;
+生產設備 < production\-equipment;
+半白 < fifty\-\(years\-of\-age\);
+𠁥 < the\-horns\-of\-a\-sheep;
+跑龍套 < to\-play\-a\-small\-role;
+昂然 < upright\-and\-unafraid;
+還說 < to\-add\-\(in\-speaking\);
+更加 < more\-\(than\-sth\-else\);
+德雷爾 < \(june\-teufel\)\-dreyer;
+義務教育 < cumpulsory\-education;
+爺爺 < paternal\-grandfather;
+傳輸控制 < transmission\-control;
+不勝 < cannot\-bear\-or\-stand;
+敗胃 < spoil\-one''s\-appetite;
+變心 < cease\-to\-be\-faithful;
+不懷好意 < harbour\-evil\-designs;
+上個 < first\-\(of\-two\-parts\);
+只不過幾年前 < only\-a\-few\-years\-ago;
+幾 < how\-many\?\-how\-much\?;
+奏 < memorialize\-emperor;
+您 < honorific\-for\-''you'';
+吏 < government\-official;
+兀 < to\-cut\-off\-the\-feet;
+胴 < the\-large\-intestine;
+秦 < feudal\-state\-of\-qin;
+桁 < cross\-beams\-of\-roof;
+莎 < kind\-of\-sedge\-grass;
+薛 < kind\-of\-marsh\-grass;
+絣 < to\-baste\-for\-sewing;
+悖 < be\-contradictory\-to;
+芒 < miscanthus\-sinensis;
+嘶 < neighing\-of\-a\-horse;
+叽 < sigh\-in\-disapproval;
+厥 < personal\-pronoun\-he;
+圭 < jade\-pointed\-at\-top;
+徘 < walk\-back\-and\-forth;
+晤 < have\-interview\-with;
+舷 < the\-sides\-of\-a\-boat;
+邬 < various\-place\-names;
+褐 < coarse\-woolen\-cloth;
+馈 < offer\-food\-superior;
+唧 < chirping\-of\-insects;
+咔 < used\-in\-translation;
+灸 < cauterize\-with\-moxa;
+驷 < team\-of\-four\-horses;
+粼 < clear\-\(as\-of\-water\);
+羚 < species\-of\-antelope;
+呓 < talk\-in\-one''s\-sleep;
+篙 < pole\-used\-punt\-boat;
+湍 < rapid\-water\-current;
+脍 < minced\-meat\-or\-fish;
+鏖 < to\-fight\-to\-the\-end;
+肽 < a\-chemical\-compound;
+銮 < bells\-hung\-on\-horse;
+笳 < a\-reed\-leaf\-whistle;
+薏 < seed\-of\-job''s\-tears;
+悝 < to\-laugh\-at\-to\-pity;
+豇 < a\-small\-kidney\-bean;
+桉 < eucalyptus\-globulus;
+蹁 < to\-walk\-with\-a\-limp;
+腈 < an\-organic\-compound;
+螟 < kind\-of\-caterpillar;
+泮 < zhou\-dynasty\-school;
+鲳 < the\-silvery\-pomfret;
+霪 < long\-and\-heavy\-rain;
+枘 < the\-handle\-of\-tools;
+滹 < the\-bank\-of\-a\-steam;
+彳 < step\-with\-left\-foot;
+亍 < to\-take\-small\-steps;
+砘 < a\-kind\-of\-farm\-tool;
+栎 < chestnut\-leaved\-oak;
+鹇 < the\-silver\-pheasant;
+苌 < averrhora\-carambola;
+郛 < outer\-walls\-of\-city;
+醢 < minced\-pickled\-meat;
+眚 < disease\-of\-the\-eyes;
+裉 < s\-seam\-in\-a\-garment;
+崦 < a\-mountain\-in\-kansu;
+兕 < a\-female\-rhinoceros;
+診斷功能 < diagnostic\-function;
+財政部 < ministry\-of\-finance;
+奔流 < flow\-at\-great\-speed;
+廣告商 < advertising\-company;
+一百五十多年 < more\-than\-150\-years;
+日文 < japanese\-\(language\);
+馬來西亞語 < malasian\-\(language\);
+撞見 < to\-meet\-by\-accident;
+差額 < balance\-\(financial\);
+半截 < half\-\(of\-a\-section\);
+剛纔 < \(just\)\-a\-moment\-ago;
+慰安婦 < comfort\-woman\|women;
+折射率 < index\-of\-refraction;
+廠礦 < factories\-and\-mines;
+傳輸媒體 < transmission\-medium;
+起死回生 < arise\-from\-the\-dead;
+熱烈 < warm\-\(welcome\,\-etc\);
+高階語言 < high\-level\-language;
+年代初 < beginning\-of\-an\-age;
+亞洲與太平洋地區 < asia\-pacific\-region;
+辯護 < speak\-in\-defence\-of;
+美國人民 < the\-american\-people;
+哥倫比亞大學 < columbia\-university;
+防禦性 < defensive\-\(weapons\);
+過了五分鐘 < five\-minutes\-passed;
+打橫炮 < speak\-unwarrantedly;
+大批 < large\-quantities\-of;
+面嚮連接 < connection\-oriented;
+專業人才 < expert\-\(in\-a\-field\);
+無縫連接 < seamless\-connection;
+綁票 < kidnap\-\(for\-ransom\);
+白銅 < copper\-nickel\-alloy;
+克羅地亞語 < croatian\-\(language\);
+統稱 < collectively\-called;
+發言權 < the\-right\-of\-speech;
+廢氣 < waste\-\(exhaust\)\-gas;
+討論的議題 < topic\-of\-discussion;
+包子 < steamed\-stuffed\-bun;
+紅葉 < red\-autumnal\-leaves;
+層見迭出 < to\-occur\-frequently;
+百貨 < general\-merchandise;
+鬢髮 < hair\-on\-the\-temples;
+美國以外 < outside\-of\-the\-u\.s\.;
+儘量 < as\-much\-as\-possible;
+身高 < \(a\-person''s\)\-height;
+教學 < teacher\-and\-student;
+鄙人 < your\-humble\-servant;
+地址的轉換 < address\-translation;
+故宮 < the\-imperial\-palace;
+政局 < political\-situation;
+睿智 < wise\-and\-farsighted;
+自動地工作 < automatic\-operation;
+此時此刻 < at\-this\-very\-moment;
+鸒 < the\-eastern\-jackdaw;
+鶲 < siberian\-flycatcher;
+年之久 < period\-of\-\.\.\.\-years;
+補角 < supplementary\-angle;
+鰶 < konosirus\-punctatus;
+鯥 < pomatomus\-saltatrix;
+鯕 < coryphaena\-hippurus;
+鮶 < sebastodes\-guntheri;
+進攻 < attack\-\(militarily\);
+擺弄 < move\-back\-and\-forth;
+不中意 < not\-to\-one''s\-liking;
+飂 < wind\-in\-high\-places;
+颾 < blowing\-of\-the\-wind;
+頍 < to\-raise\-one''s\-head;
+韘 < archer''s\-thumb\-ring;
+鞬 < a\-quiver\-on\-a\-horse;
+貿易保護主義 < trade\-protectionism;
+遍布 < be\-found\-everywhere;
+多黨選舉 < multiparty\-election;
+霶 < downpouring\-of\-rain;
+霮 < denseness\-of\-clouds;
+光纖衰減 < optical\-attenuation;
+改名 < to\-change\-ones\-name;
+鑴 < to\-engrave\-or\-carve;
+不勞而獲 < reap\-without\-sowing;
+鎄 < iridium\-einsteinium;
+技術標準 < technology\-standard;
+補考 < make\-up\-examination;
+開發過程 < development\-process;
+百分制 < hundred\-mark\-system;
+鈃 < ancient\-wine\-vessel;
+酧 < to\-pledge\-with\-wine;
+分析家 < \(political\)\-analyst;
+播弄 < order\-subject\-about;
+年底 < the\-end\-of\-the\-year;
+約櫃 < ark\-of\-the\-covenant;
+幫工 < help\-with\-farm\-work;
+報廢 < report\-as\-worthless;
+通信負載 < communications\-load;
+常規武器 < conventional\-weapon;
+統計結果 < statistical\-results;
+司空見慣 < a\-common\-occurrence;
+立法會 < legislative\-council;
+執掌 < wield\-\(power\,\-etc\.\);
+襴 < a\-one\-piece\-garment;
+褃 < a\-seam\-in\-a\-garment;
+引力場 < gravitational\-field;
+兵權 < military\-leadership;
+蠰 < cerambyx\-rugicollis;
+蟨 < the\-siberian\-jerboa;
+蝝 < the\-larva\-of\-locust;
+二十七號 < 27th\-day\-of\-a\-month;
+逼供 < extort\-a\-confession;
+視而不見 < turn\-a\-blind\-eye\-to;
+保安自動化 < security\-automation;
+蔊 < nasturtium\-montanum;
+蓇 < follicles\-of\-plants;
+葇 < elsholtria\-paltrini;
+莕 < nymphoides\-peltatum;
+茳 < cyperus\-malaccensis;
+苳 < petasites\-japonicus;
+艫 < bow\-or\-prow\-of\-boat;
+消耗量 < rate\-of\-consumption;
+電子文件 < electronic\-document;
+開放 < lift\-\(restrictions\);
+登月 < go\-\(up\)\-to\-the\-moon;
+羢 < fine\-woolen\-fabrics;
+核電站 < nuclear\-power\-plant;
+羑 < a\-guide\-to\-goodness;
+結構助詞 < structural\-particle;
+字斟句酌 < weighing\-every\-word;
+繲 < to\-work\-as\-a\-tailor;
+幣值 < value\-of\-a\-currency;
+綀 < a\-kind\-of\-sackcloth;
+政治關係 < political\-relations;
+冰場 < skating\-or\-ice\-rink;
+相互兼容 < mutually\-compatible;
+尋事生非 < to\-look\-for\-trouble;
+竑 < be\-vast\-and\-endless;
+禓 < to\-drive\-out\-demons;
+祐 < divine\-intervention;
+目前 < at\-the\-present\-time;
+表面化 < come\-to\-the\-surface;
+筆譯 < written\-translation;
+筆試 < written\-examination;
+矔 < brilliant\-\(of\-eyes\);
+關切 < be\-deeply\-concerned;
+小寫字母 < lowercase\-\(letters\);
+瞕 < cataract\-in\-the\-eye;
+走開 < get\-out\-of\-the\-way\!;
+覆亡 < fall\-\(of\-an\-empire\);
+電話機 < telephone\-equipment;
+裁斷 < consider\-and\-decide;
+總統府 < presidential\-palace;
+紀元 < beginning\-of\-an\-era;
+兵團 < large\-military\-unit;
+辦事 < to\-handle\-\(affairs\);
+糾偏 < to\-correct\-an\-error;
+才識 < ability\-and\-insight;
+按理 < according\-to\-reason;
+輔幣 < fractional\-currency;
+搭伴 < travel\-with\-another;
+在某種程度上 < to\-a\-certain\-extent;
+國旗 < flag\-\(of\-a\-country\);
+軍政 < army\-and\-government;
+病況 < state\-of\-an\-illness;
+分佈式網絡 < distributed\-network;
+管理功能 < management\-function;
+轉向 < change\-of\-direction;
+橋接器 < bridge\-\(networking\);
+白卷 < blank\-examine\-paper;
+曼徹斯特編碼 < manchester\-encoding;
+八仙 < the\-eight\-immortals;
+較大 < comparatively\-large;
+筆算 < do\-a\-sum\-in\-writing;
+桪 < mythical\-giant\-tree;
+提出 < to\-raise\-\(an\-issue\);
+白人 < white\-man\-and\-woman;
+柮 < flat\-pieces\-of\-wood;
+做法 < way\-of\-doing\-things;
+暵 < dry\-by\-exposing\-sun;
+抽煙 < smoke\-\(a\-cigarette\);
+斝 < small\-jade\-wine\-cup;
+表情 < \(facial\)\-expression;
+補助 < \(financial\)\-subsidy;
+敄 < to\-put\-forth\-effort;
+膠片 < \(photographic\)\-film;
+撍 < to\-hold\-in\-the\-hand;
+不期然而然 < happen\-unexpectedly;
+揕 < roll\-up\-the\-sleeves;
+柔道 < \(the\-sport\-of\)\-judo;
+加值型網路 < value\-added\-network;
+採制 < collect\-and\-process;
+不得了 < desperately\-serious;
+抄獲 < to\-search\-and\-seize;
+表姐 < older\-female\-cousin;
+分佈控制 < distributed\-control;
+尗 < younger\-of\-brothers;
+軟件 < \(computer\)\-software;
+壐 < the\-imperial\-signet;
+招待 < to\-receive\-\(guests\);
+板梁橋 < plate\-girder\-bridge;
+垕 < used\-in\-place\-names;
+拜年 < pay\-a\-new\-year\-call;
+栽跟頭 < to\-suffer\-a\-setback;
+唚 < vomiting\-of\-animals;
+核工程 < nuclear\-engineering;
+因特網聯通 < internet\-connection;
+呺 < voice\-of\-anger\-vast;
+互通 < to\-intercommunicate;
+科學的交流 < scientific\-exchange;
+安理會 < un\-security\-council;
+網絡應用 < network\-application;
+偘 < ancient\-family\-name;
+篡位 < to\-seize\-the\-throne;
+機械翻譯 < machine\-translation;
+罷黜 < dismiss\-from\-office;
+䶯 < used\-in\-girl''s\-name;
+䶒 < outstanding\-ability;
+䶌 < a\-pustule\-or\-pimple;
+䶄 < striped\-mottled\-rat;
+䵱 < red\-and\-black\-color;
+䵔 < to\-turn\-on\-the\-heel;
+䴪 < a\-fabulous\-creature;
+䴠 < a\-young\-tailed\-deer;
+屬實 < turn\-out\-to\-be\-true;
+䱧 < a\-kind\-of\-fish\-eels;
+䰜 < a\-large\-earthen\-pot;
+䮷 < movement\-of\-a\-horse;
+䮃 < to\-go\-before\-others;
+派遣 < send\-\(on\-a\-mission\);
+䫱 < a\-part\-of\-the\-skull;
+䫩 < to\-shake\-one''s\-head;
+䪿 < the\-top\-of\-the\-head;
+䪽 < hoary\-haired\-person;
+䩷 < the\-sides\-of\-a\-shoe;
+䩧 < to\-tie\-up\-hurriedly;
+䩌 < to\-have\-a\-worn\-look;
+䧔 < to\-meet\-at\-the\-bank;
+䦙 < a\-government\-agency;
+䥧 < a\-fine\-kind\-of\-jade;
+訊框傳送服務 < frame\-relay\-service;
+䤆 < a\-kind\-of\-rice\-wine;
+䤁 < cooked\-or\-well\-done;
+䢋 < a\-marshal\-or\-herald;
+並重 < lay\-equal\-stress\-on;
+軟件技術 < software\-technology;
+䟣 < an\-animal\-in\-legend;
+䞳 < to\-stumble\-and\-fall;
+䝠 < a\-kind\-of\-wild\-boar;
+䜁 < to\-abuse\-and\-insult;
+䙒 < to\-store\-or\-save\-up;
+䙏 < short\-sleeves\-shirt;
+䙁 < children''s\-garments;
+䘪 < clothes\-without\-hem;
+䖢 < first\-born\-silkworm;
+䖖 < to\-show\-familiarity;
+䕾 < a\-kind\-of\-vegetable;
+䕘 < a\-variety\-of\-fungus;
+䕃 < the\-shade\-of\-a\-tree;
+䓷 < nymphoides\-peltalum;
+䓍 < cruciferous\-flowers;
+䒈 < side\-beam\-of\-a\-boat;
+䒀 < short\-and\-deep\-boat;
+䑇 < medicine\-for\-a\-sore;
+䐭 < a\-discharge\-or\-flux;
+䏹 < to\-watch\-stealthily;
+䏨 < to\-swell\-up\-greatly;
+䏆 < buzzing\-in\-the\-ears;
+䍷 < to\-chase\-each\-other;
+䋹 < breadth\-of\-material;
+䋰 < to\-bind\-or\-restrain;
+才學 < talent\-and\-learning;
+耕耘 < plowing\-and\-weeding;
+擺門面 < keep\-up\-appearances;
+訊框傳送網路 < frame\-relay\-network;
+䇽 < a\-coarse\-bamboo\-mat;
+䆯 < a\-short\-shaped\-face;
+䅯 < a\-variety\-of\-millet;
+䅟 < varieties\-of\-millet;
+䅒 < a\-sharp\-edged\-grass;
+慈祥 < \(a\)\-kindly\-\(person\);
+䁋 < with\-one\-eye\-closed;
+䁃 < to\-look\-attentively;
+䀤 < insight\-of\-jealousy;
+䀣 < to\-look\-steadily\-at;
+奶油菜花 < creamed\-cauliflower;
+㿓 < disease\-of\-the\-hoof;
+光發送器 < optical\-transmitter;
+㾻 < not\-any\-progressive;
+㾶 < disease\-of\-the\-knee;
+安樂 < peace\-and\-happiness;
+㾢 < a\-malignant\-disease;
+㽭 < vacant\-lot\-or\-space;
+㽌 < the\-ridge\-of\-a\-roof;
+㽂 < a\-cracked\-container;
+㼙 < brickwork\-of\-a\-well;
+㼒 < a\-kind\-of\-big\-melon;
+網絡環境 < network\-environment;
+愛人如己 < love\-others\-as\-self;
+㸶 < color\-of\-the\-oxtail;
+㸵 < the\-lowing\-of\-an\-ox;
+㸥 < household\-registers;
+㸢 < cross\-beam\-of\-a\-bed;
+㸞 < blocks\-for\-printing;
+㸓 < to\-have\-disappeared;
+㸀 < blackened\-with\-soot;
+㷤 < rosy\-clouds\-of\-dawn;
+騙取 < to\-gain\-by\-cheating;
+㲇 < the\-rattle\-of\-drums;
+㱾 < a\-kind\-of\-ornaments;
+㱹 < to\-die\-from\-disease;
+㱫 < destroyed\-or\-ruined;
+㱪 < stupid\-and\-confused;
+㱊 < asthmatic\-breathing;
+㱉 < moving\-of\-the\-mouth;
+㰴 < to\-grate\-on\-the\-ear;
+㰯 < the\-way\-of\-speaking;
+路透社 < reuters\-news\-agency;
+涼爽 < cool\-and\-refreshing;
+黨組 < leading\-party\-group;
+例外 < \(make\-an\)\-exception;
+㫯 < in\-contravention\-of;
+資源 < \(natural\)\-resources;
+商會 < chamber\-of\-commerce;
+赤字 < \(financial\)\-deficit;
+㩦 < to\-lead\-by\-the\-hand;
+㩘 < to\-moor\-to\-the\-bank;
+㨝 < the\-very\-hard\-stuff;
+㧅 < to\-turn\-upside\-down;
+㦓 < difficult\-intention;
+㥝 < to\-arouse\-to\-action;
+阿拉巴馬 < alabama\-\(u\.s\.state\);
+㢊 < to\-set\-side\-by\-side;
+㢂 < of\-highly\-strategic;
+鋰離子電池 < lithium\-ion\-battery;
+終點地址 < destination\-address;
+㟱 < shape\-of\-a\-mountain;
+㟓 < lofty\-and\-dangerous;
+㟒 < mountains\-adjoining;
+並聯 < parallel\-connection;
+㘫 < to\-fall\-into\-a\-well;
+財源 < financial\-resources;
+㗶 < to\-expel\-the\-breath;
+科學院 < academy\-of\-sciences;
+㖪 < sound\-of\-surprising;
+㔹 < a\-surplus\-or\-excess;
+㓷 < to\-cut\-off\-the\-nose;
+㒄 < brittle\-and\-friable;
+㒃 < capital\-form\-of\-two;
+量變 < quantitative\-change;
+耐煩 < patient\-\(adjective\);
+丙綸 < polypropylene\-fibre;
+二十六號 < 26th\-day\-of\-a\-month;
+步進制 < step\-by\-step\-system;
+前蘇聯 < former\-soviet\-union;
+不在意 < pay\-no\-attention\-to;
+決議 < \(pass\-a\)\-resolution;
+錯字 < incorrect\-character;
+中國當局 < chinese\-authorities;
+伴唱 < vocal\-accompaniment;
+識貨 < to\-know\-what''s\-what;
+稟性 < natural\-disposition;
+預習 < to\-prepare\-a\-lesson;
+合情合理 < reasonable\-and\-fair;
+流派 < school\-\(of\-thought\);
+百依百順 < docile\-and\-obedient;
+半自耕農 < semi\-tenant\-peasant;
+哀憐 < feel\-compassion\-for;
+反彈導彈 < antimissile\-missile;
+財寶 < money\-and\-valuables;
+生產設施 < production\-facility;
+葡萄牙人 < portuguese\-\(person\);
+事宜 < \(make\)\-arrangements;
+敗類 < scum\-of\-a\-community;
+不絕如縷 < hanging\-by\-a\-thread;
+旗袍 < chinese\-style\-dress;
+長期穩定性 < long\-term\-stability;
+技術知識 < technical\-knowledge;
+徐行 < walk\-slowly\,\-stroll;
+藏族 < tibetan\-nationality;
+樓宇自動化 < building\-automation;
+外孫女 < daughter''s\-daughter;
+冰醋酸 < glacial\-acetic\-acid;
+美國軍人 < american\-serviceman;
+阿比西尼亞人 < abyssinian\-\(person\);
+消炎藥 < antibiotic\-medicine;
+照顧 < take\-\(good\)\-care\-of;
+委員長 < head\-of\-a\-committee;
+視窗加速器 < windows\-accelarator;
+讓步 < \(make\-a\)\-concession;
+邊遠 < far\-from\-the\-center;
+華爾街日報 < wall\-street\-journal;
+擺闊 < parade\-one''s\-wealth;
+情報局 < intelligence\-agency;
+晴朗 < sunny\-and\-cloudless;
+悲壯 < solemn\-and\-stirring;
+國際貿易 < international\-trade;
+罷市 < shopkeeper''s\-strike;
+不妨 < there\-is\-no\-harm\-in;
+人造語言 < artificial\-language;
+亞太經合組織 < apec\-\(organization\);
+丹參 < salvia\-miltiorrhiza;
+零落 < withered\-and\-fallen;
+包身工 < indentured\-labourer;
+得知 < \(find\-out\-and\)\-know;
+變故 < an\-unforeseen\-event;
+不敗之地 < invincible\-position;
+恐怕 < \(i''m\)\-afraid\-\(that\);
+自身利益 < one''s\-own\-interests;
+廠規 < factory\-regulations;
+預定 < schedule\-in\-advance;
+不凡 < out\-of\-the\-ordinary;
+競爭產品 < competitive\-product;
+敗績 < be\-utterly\-defeated;
+暴利 < sudden\-huge\-profits;
+非核國家 < non\-nuclear\-country;
+罪名 < a\-\(criminal\)\-charge;
+不乏 < there\-is\-no\-lack\-of;
+合同 < \(business\)\-contract;
+北京人 < person\-from\-beijing;
+氣候狀況 < climatic\-conditions;
+玖 < black\-colored\-jade;
+哪 < which\?\-where\?\-how\?;
+牲 < sacrificial\-animal;
+漢 < the\-chinese\-people;
+漕 < transport\-by\-water;
+阴 < ''female''\-principle;
+仙 < taoist\-super\-being;
+驻 < to\-be\-stationed\-at;
+腮 < lower\-part\-of\-face;
+拒 < ward\-off\-with\-hand;
+桂 < cassia\-or\-cinnamon;
+朵 < cluster\-of\-flowers;
+曹 < ministry\-officials;
+罎 < an\-earthenware\-jar;
+丸 < small\-round\-object;
+矩 < carpenter''s\-square;
+腊 < year\-end\-sacrifice;
+龟 < turtle\-or\-tortoise;
+邸 < official\-residence;
+侃 < upright\-and\-strong;
+邂 < unexpected\-meeting;
+怯 < lacking\-in\-courage;
+甸 < suburbs\-of\-capital;
+捞 < scoop\-out\-of\-water;
+扛 < carry\-on\-shoulders;
+虔 < act\-with\-reverence;
+霖 < long\-spell\-of\-rain;
+韧 < strong\-and\-pliable;
+瑾 < brilliance\-of\-gems;
+桔 < chinese\-bellflower;
+鸳 < male\-mandarin\-duck;
+钗 < ornamental\-hairpin;
+巅 < summit\-of\-mountain;
+樨 < osmanthus\-fragrans;
+蠡 < wood\-boring\-insect;
+蹂 < trample\-under\-foot;
+骥 < thoroughbred\-horse;
+唁 < express\-condolence;
+骅 < an\-excellent\-horse;
+碉 < room\-made\-of\-stone;
+疟 < intermittent\-fever;
+纣 < name\-of\-an\-emperor;
+磬 < musical\-instrument;
+爿 < half\-of\-tree\-trunk;
+旎 < fluttering\-of\-flag;
+夔 < one\-legged\-monster;
+殍 < to\-starve\-to\-death;
+骊 < a\-pure\-black\-horse;
+湎 < flushed\-with\-drink;
+喵 < the\-mew\-of\-the\-cat;
+焙 < dry\-over\-slow\-fire;
+绾 < to\-string\-together;
+眦 < corner\-of\-the\-eyes;
+瑁 < fine\-piece\-of\-jade;
+粳 < non\-glutinous\-rice;
+餮 < a\-legendary\-animal;
+汊 < a\-branching\-stream;
+缃 < light\-yellow\-color;
+檩 < the\-bole\-of\-a\-tree;
+奁 < lady''s\-vanity\-case;
+楸 < mallotus\-japonicus;
+骺 < tip\-of\-a\-long\-bone;
+藿 < lophanthus\-rugosus;
+樾 < the\-shade\-of\-trees;
+酤 < to\-deal\-in\-spirits;
+臌 < dropsical\-swelling;
+跫 < sound\-of\-footsteps;
+綮 < embroidered\-banner;
+觳 < an\-ancient\-measure;
+杌 < the\-stump\-f\-a\-tree;
+嵫 < a\-hill\-in\-shantung;
+擗 < to\-beat\-the\-breast;
+脔 < small\-lump\-of\-meat;
+醅 < unstrained\-spirits;
+羰 < carbonyl\-\(radical\);
+蛸 < long\-legged\-spider;
+瞀 < to\-look\-at\-closely;
+殳 < name\-of\-old\-weapon;
+崞 < mountain\-in\-shanxi;
+垲 < high\-and\-dry\-place;
+虿 < a\-kind\-of\-scorpion;
+疳 < childhood\-diseases;
+罾 < a\-large\-square\-net;
+獬 < a\-fabulous\-monster;
+負責任 < responsibility\-for;
+幫辦 < assist\-in\-managing;
+酬應 < social\-interaction;
+無論 < no\-matter\-what\|how;
+原定 < originally\-planned;
+通行 < licence\-\(computer\);
+環形結構 < ring\-configuration;
+司令 < commanding\-officer;
+糾集 < to\-gather\-together;
+送行 < to\-see\-someone\-off;
+西班牙語 < spanish\-\(language\);
+違約 < to\-break\-a\-promise;
+危局 < perilous\-situation;
+一般來說 < generally\-speaking;
+軟件開發人員 < software\-developer;
+撥號 < dial\-\(a\-telephone\);
+國民黨軍隊 < nationalist\-forces;
+首腦會晤 < leadership\-meeting;
+變修 < become\-revisionist;
+違章 < to\-break\-the\-rules;
+重要問題 < an\-important\-issue;
+網管 < network\-management;
+蒙文 < mongolian\-language;
+性交 < sexual\-intercourse;
+中山裝 < chinese\-tunic\-suit;
+緬甸語 < burmese\-\(language\);
+政治犯 < political\-prisoner;
+年以來 < since\-the\-year\-\.\.\.;
+新華社 < xinhua\-news\-agency;
+不中用 < unfit\-for\-anything;
+一小時以後 < a\-short\-time\-later;
+領先地位 < lead\(ing\)\-position;
+進一步 < \(one\-step\)\-further;
+物價 < \(commodity\)\-prices;
+信息系統 < information\-system;
+後天 < day\-after\-tomorrow;
+提供商 < provider\-\(company\);
+太平 < peace\-and\-security;
+矚望 < to\-look\-forward\-to;
+協助 < provide\-assistance;
+採風 < collect\-folk\-songs;
+種族清洗 < \"ethnic\-cleansing\";
+描金 < to\-outline\-in\-gold;
+助教 < teaching\-assistant;
+夫婦 < a\-\(married\)\-couple;
+乒乓球檯 < table\-tennis\-table;
+英語 < english\-\(language\);
+運氣 < luck\-\(good\-or\-bad\);
+非常嚴厲 < to\-punish\-severely;
+原蘇聯 < fomer\-soviet\-union;
+採錄 < collect\-and\-record;
+熊掌 < bear\-paw\-\(as\-food\);
+內部結構 < internal\-strucutre;
+新兵 < new\-\(army\)\-recruit;
+數據通信 < data\-communication;
+天安門 < tiananmen\-\(square\);
+非常感謝 < extremely\-grateful;
+龖 < flight\-of\-a\-dragon;
+斃命 < meet\-violent\-death;
+鸜 < a\-species\-of\-mynah;
+鷽 < oriental\-bullfinch;
+克隆技術 < cloning\-technology;
+電子網絡 < electronic\-network;
+鴗 < alcedo\-bengalensis;
+鱵 < hyporhampus\-sajuri;
+失事 < \(have\-an\)\-accident;
+不受理 < reject\-a\-complaint;
+鬠 < to\-make\-a\-top\-knot;
+發達國 < developing\-country;
+白麵書生 < pale\-faced\-scholar;
+跑警報 < to\-run\-for\-shelter;
+餼 < sacrificial\-victim;
+電信 < telecommunications;
+捨身 < to\-give\-one''s\-life;
+頔 < good\-and\-beautiful;
+芝蘭 < irises\-and\-orchids;
+財務軟件 < financial\-software;
+改口 < to\-correct\-oneself;
+白開水 < plain\-boiled\-water;
+政務 < government\-affairs;
+內科 < medical\-department;
+元素 < \(chemical\)\-element;
+加入 < to\-become\-a\-member;
+招待會 < \(press\)\-conference;
+選區 < electoral\-district;
+釒 < kangxi\-radical\-167;
+鄮 < ancient\-place\-name;
+土著 < native\,\-aboriginal;
+懷俄明 < wyoming\-\(us\-state\);
+卡拉奇 < karachi\-\(pakistan\);
+操守 < personal\-integrity;
+轙 < rings\-on\-the\-yokes;
+傲視 < turn\-up\-one''s\-nose;
+軰 < a\-row\-of\-carriages;
+半規管 < semicircular\-canal;
+馬來語 < malaysian\-language;
+古典語言 < classical\-language;
+谽 < a\-mouth\-or\-opening;
+莫如 < it\-would\-be\-better;
+結帳 < to\-settle\-accounts;
+四處 < all\-over\-the\-place;
+比不上 < can''t\-compare\-with;
+網路連接層 < network\-link\-layer;
+訁 < kangxi\-radical\-149;
+襵 < a\-pleat\-in\-a\-skirt;
+褰 < lift\-up\-the\-skirts;
+坦率 < frank\-\(discussion\);
+運作 < thread\-\(computing\);
+多米尼加共和國 < dominican\-republic;
+週刊 < weekly\-publication;
+蚹 < eulota\-peliomphala;
+薷 < elshotria\-paltrini;
+保駕 < escort\-the\-emperor;
+蕺 < houttuynia\-cordata;
+蓴 < edible\-water\-plant;
+兩個中國 < two\-china\-\(policy\);
+葴 < physalis\-alkekengi;
+共有 < to\-have\-altogether;
+報喜 < announce\-good\-news;
+跑電 < electrical\-leakage;
+荅 < answer\:\-small\-bean;
+茖 < allium\-victorialis;
+國防部 < defense\-department;
+芣 < medicinal\-plantago;
+撥刺 < splash\-\(of\-a\-fish\);
+拜見 < pay\-a\-formal\-visit;
+外來投資 < foreign\-investment;
+趕不上 < can''t\-keep\-up\-with;
+翯 < glistening\-plumage;
+翖 < ksc\-extension\-3108;
+初中 < junior\-high\-school;
+羧 < carboxyl\-\(radical\);
+土耳其語 < turkish\-\(language\);
+不正之風 < unhealthy\-tendency;
+抄道 < to\-take\-a\-shortcut;
+演說 < \(deliver\-a\)\-speech;
+要地 < strategic\-location;
+辦報 < to\-run\-a\-newspaper;
+集成電路 < integrated\-circuit;
+糒 < food\-for\-a\-journey;
+出任 < start\-in\-a\-new\-job;
+閉關政策 < closed\-door\-policy;
+內情 < inside\-information;
+拿主意 < to\-make\-a\-decision;
+網絡技術 < network\-technology;
+常委會 < standing\-committee;
+中國政府 < chinese\-government;
+開展 < \(begin\-to\)\-develop;
+令牌環網 < token\-ring\-network;
+皪 < luster\-\(of\-pearls\);
+大明鼎鼎 < a\-grand\-reputation;
+痜 < a\-scabby\-bald\-head;
+大學生 < university\-student;
+甿 < farming\-population;
+貿易組織 < trade\-organization;
+甋 < a\-jar\-without\-ears;
+琤 < jade\-of\-jade\-being;
+玘 < court\-dress\-jewels;
+遍地開花 < blossom\-everywhere;
+獳 < fierce\-dog\-looking;
+俄語 < russian\-\(language\);
+山腳 < foot\-of\-a\-mountain;
+煍 < to\-colour\-by\-smoke;
+高速網絡 < high\-speed\-network;
+灥 < a\-group\-of\-springs;
+康奈爾大學 < cornell\-university;
+公司 < \(business\)\-company;
+拉票 < campaign\-for\-votes;
+手術 < surgical\-operation;
+八卦 < the\-eight\-diagrams;
+瀏覽器 < browser\-\(software\);
+體溫 < \(body\)\-temperature;
+書面許可 < written\-permission;
+泲 < kind\-of\-white\-wine;
+世紀末 < end\-of\-the\-century;
+氍 < fine\-woollen\-cloth;
+漂移 < drift\-\(electrical\);
+聯合公報 < joint\-announcement;
+研究機構 < research\-institute;
+佛蘭芒語 < flemish\-\(language\);
+停滯 < be\-at\-a\-standstill;
+國會議員 < member\-of\-congress;
+最近幾年 < the\-last\-few\-years;
+精簡開支 < to\-reduce\-spending;
+柺 < an\-old\-man''s\-staff;
+杻 < ligustrum\-sinenese;
+杙 < a\-tiny\-wooden\-post;
+不置可否 < decline\-to\-comment;
+軍官 < \(military\)\-officer;
+昷 < to\-feed\-a\-prisoner;
+旼 < gentle\-and\-affable;
+塞爾維亞語 < serbian\-\(language\);
+擭 < trap\-catch\-animals;
+三角腹帶 < athletic\-supporter;
+筆直 < perfectly\-straight;
+產生 < to\-come\-into\-being;
+駐華 < stationed\-in\-china;
+斯瓦希裡語 < swahili\-\(language\);
+授受 < to\-give\-and\-accept;
+疫情 < epidemic\-situation;
+深造 < advanced\-\(studies\);
+衛生設備 < sanitary\-equipment;
+造成問題 < to\-create\-an\-issue;
+彄 < nock\-at\-end\-of\-bow;
+捨命 < to\-risk\-one''s\-life;
+擁護者 < supporter\-\(person\);
+國務卿 < secretary\-of\-state;
+嶨 < big\-rocky\-mountain;
+裁並 < cut\-down\-and\-merge;
+嵖 < name\-of\-a\-mountain;
+使節 < \(diplomatic\)\-envoy;
+國家標準碼 < gb\-\(guo\-biao\)\-code;
+半輩子 < half\-of\-a\-lifetime;
+本初子午線 < the\-first\-meridian;
+家庭消費者 < household\-consumer;
+壜 < earthen\-jar\-or\-jug;
+至少 < \(to\-say\-the\)\-least;
+墐 < to\-build\-with\-soil;
+站管理 < station\-management;
+買賣 < buying\-and\-selling;
+噋 < to\-swallow\-hastily;
+測繪 < to\-survey\-and\-draw;
+背約 < break\-an\-agreement;
+色情小說 < pornographic\-novel;
+哰 < incoherent\-chatter;
+芬蘭語 < finnish\-\(language\);
+貴妃醉酒 < the\-drunken\-beauty;
+變法兒 < try\-different\-ways;
+海空軍 < navy\-and\-air\-force;
+電子信箱 < electronic\-mailbox;
+路徑 < route\-\(networking\);
+佷 < to\-act\-contrary\-to;
+舉例 < to\-give\-an\-example;
+撒哈拉以南非洲 < sub\-saharan\-africa;
+乑 < stand\-side\-by\-side;
+才智 < ability\-and\-wisdom;
+䶣 < to\-grind\-the\-teeth;
+䶟 < to\-gnash\-the\-teeth;
+䵕 < a\-varietyof\-millet;
+䴱 < cakes\-and\-biscuits;
+䳨 < the\-female\-phoenix;
+䳔 < a\-pigeon\-like\-bird;
+䱳 < a\-kind\-of\-sturgeon;
+䱣 < a\-long\-narrow\-fish;
+䰪 < mischievous\-spirit;
+䯱 < the\-hair\-stands\-up;
+䯏 < the\-shoulder\-blade;
+䮥 < color\-of\-the\-horse;
+細菌戰 < biological\-warfare;
+䭰 < strong\-sweet\-smell;
+䭋 < to\-eat\-to\-the\-full;
+䭃 < to\-eat\-to\-the\-fool;
+䬴 < fodder\-for\-animals;
+䬧 < round\-shaped\-cakes;
+打拳 < to\-do\-shadowboxing;
+脈欂 < beating\-\(of\-heart\);
+䫐 < to\-bend\-one''s\-head;
+䪌 < cushion\-for\-saddle;
+䨆 < a\-kind\-of\-pheasant;
+䧼 < the\-the\-snow\-goose;
+䧦 < name\-of\-a\-hillside;
+新加坡人 < singaporean\-person;
+䦮 < door\-of\-the\-center;
+自主 < to\-act\-for\-oneself;
+䦒 < the\-door\-is\-closed;
+䦐 < the\-bolt\-of\-a\-door;
+期貨 < futures\-\(on\-goods\);
+䥳 < a\-chemical\-element;
+䥞 < to\-cut\-with\-shears;
+䥝 < desperate\-fighting;
+侵截 < to\-hack\-\(computer\);
+䣺 < filtrated\-the\-wine;
+頭髮 < hair\-\(on\-the\-head\);
+䡠 < strong\-and\-durable;
+䡛 < name\-of\-a\-carriage;
+䠧 < hard\-to\-go\-forward;
+䟝 < to\-walk\-right\-into;
+䝞 < name\-of\-a\-immortal;
+䛉 < to\-induce\-by\-words;
+䚧 < curved\-with\-angles;
+大力發展 < vigorous\-expansion;
+䙃 < sleeveless\-clothes;
+質疑 < call\-into\-question;
+䗻 < a\-kind\-of\-sea\-crab;
+䗨 < lepsima\-saccharina;
+䗣 < insect\-of\-mulberry;
+服務規章 < service\-regulation;
+䖧 < a\-poisonous\-insect;
+䖓 < of\-a\-walking\-tiger;
+䕪 < the\-water\-plantain;
+䔼 < sound\-of\-the\-grass;
+䔃 < cordate\-houttuynia;
+䓨 < long\-necked\-bottle;
+䓖 < cnidium\-officinale;
+䓃 < melancholy\-and\-sad;
+䒝 < root\-of\-the\-thatch;
+首次 < for\-the\-first\-time;
+䑙 < put\-out\-the\-tongue;
+䑆 < feel\-like\-vomiting;
+在傳輸過程中 < while\-transmitting;
+䐔 < muscle\-of\-the\-calf;
+䎾 < big\-and\-round\-eyes;
+域名服務器 < domain\-name\-server;
+䎴 < a\-legendary\-spirit;
+䎪 < the\-stalk\-of\-grain;
+梆子 < watchman''s\-clapper;
+䎔 < fine\-and\-soft\-hair;
+䎏 < young\-birds\-flying;
+油餅 < deep\-fried\-pancake;
+䍩 < to\-offer\-provision;
+䍣 < a\-kind\-of\-fish\-net;
+䌍 < fine\-woven\-pattern;
+䌉 < the\-large\-of\-a\-net;
+泄露 < leak\-\(information\);
+䋈 < to\-bind\-loose\-hemp;
+䉬 < coarse\-bamboo\-mats;
+䈮 < a\-woven\-instrument;
+䇳 < a\-memoradum\-tablet;
+䆪 < color\-of\-the\-light;
+䆥 < to\-pierce\-throughj;
+䆑 < a\-little\-protruded;
+投入 < put\-into\-operation;
+䅽 < fragrance\-or\-aroma;
+䅧 < fine\-rice\-seedling;
+䅜 < to\-store\-up\-grains;
+䄚 < to\-worship\-the\-god;
+䃜 < a\-fine\-black\-stone;
+䁊 < dark\-and\-deep\-eyed;
+䀞 < with\-heavy\-eyelids;
+䀗 < to\-look\-askance\-at;
+析疑 < to\-resolve\-a\-doubt;
+㿌 < lump\-in\-the\-throat;
+竭盡全力 < to\-spare\-no\-effort;
+瑞典語 < swedish\-\(language\);
+㼣 < bricks\-of\-the\-well;
+㼇 < fine\-jade\-or\-agate;
+涉嫌人 < \(criminal\)\-suspect;
+㻗 < a\-string\-of\-pearls;
+㻊 < a\-red\-colored\-jade;
+㻅 < jade\-decorated\-cap;
+藏語 < tibetan\-\(language\);
+不折不扣 < a\-hundred\-per\-cent;
+㺧 < a\-white\-yellow\-dog;
+㸽 < a\-two\-years\-old\-ox;
+木耳 < edible\-tree\-fungus;
+㸈 < scorched\-or\-burned;
+㷳 < color\-of\-the\-flame;
+喘息 < to\-gasp\-for\-breath;
+棄世 < to\-leave\-this\-word;
+㷢 < bundle\-of\-charcoal;
+㷠 < a\-will\-o''\-the\-wisp;
+㵓 < the\-water\-is\-clear;
+㴾 < swelling\-or\-rising;
+併捲機 < ribbon\-lap\-machine;
+別動隊 < special\-detachment;
+㳂 < to\-follow\-a\-course;
+㲡 < thick\-coat\-of\-hair;
+㲗 < to\-smooth\-the\-hair;
+愛稱 < term\-of\-endearment;
+科研樣機 < research\-prototype;
+㯶 < the\-coir\-palm\-tree;
+㯲 < a\-wooden\-framework;
+㯛 < gourd\-shaped\-dates;
+㮻 < to\-scratch\-lightly;
+區域網路 < local\-area\-network;
+㮍 < amemorandum\-tablet;
+㭨 < the\-cocoa\-nut\-palm;
+㭝 < name\-of\-a\-pavilion;
+發送功率 < transmission\-power;
+㬴 < the\-moon\-is\-dimmed;
+㬒 < the\-sun\-are\-dimmed;
+㬎 < motes\-in\-a\-sunbeam;
+政府警告 < government\-warning;
+㫦 < of\-look\-of\-the\-sun;
+㪸 < to\-fill\-a\-cup\-with;
+㩃 < to\-take\-or\-capture;
+㨽 < to\-cut\-or\-rip\-open;
+㨡 < to\-push\-with\-hands;
+㨜 < to\-help\-each\-other;
+核能技術 < nuclear\-technology;
+年輕化 < make\-more\-youthful;
+專員 < assistant\-director;
+㥸 < to\-sympathize\-with;
+㥨 < unhappy\-displeased;
+㤪 < to\-find\-fault\-with;
+㣌 < to\-join\-two\-things;
+㡯 < wall\-of\-a\-building;
+頓足 < stamp\-\(one''s\-feet\);
+加速器 < accelerator\-\(comp\);
+㘳 < a\-hillock\-or\-mound;
+㘱 < to\-fall\-into\-ruins;
+意大利語 < italian\-\(language\);
+㘜 < a\-kind\-of\-silkworm;
+㖅 < sound\-of\-a\-whistle;
+㖃 < to\-roar\-of\-animals;
+㔢 < to\-break\-something;
+不等號 < sign\-of\-inequality;
+現有 < currently\-existing;
+西半球 < western\-hemisphere;
+鼻樑 < bridge\-of\-the\-nose;
+參贊 < diplomatic\-officer;
+並立 < exist\-side\-by\-side;
+貿易 < \(commercial\)\-trade;
+多端中繼器 < multiport\-repeater;
+北京大學 < beijing\-university;
+報務員 < telegraph\-operator;
+酬酢 < to\-exchange\-toasts;
+浪涌 < \(electrical\)\-surge;
+佔先 < to\-take\-precedence;
+背光 < be\-in\-a\-poor\-light;
+光波長 < optical\-wavelength;
+深夜 < very\-late\-at\-night;
+喉擦音 < guttural\-fricative;
+八級工 < eight\-grade\-worker;
+佛蒙特 < vermont\-\[us\-state\];
+露面 < appear\-\(in\-public\);
+商務 < commercial\-affairs;
+聯邦政府 < federal\-government;
+猜疑 < harbour\-suspicions;
+生活必需品 < life''s\-necessities;
+貴姓 < what\-is\-your\-name\?;
+猙獰 < mean\-and\-ferocious;
+進行編程 < executable\-program;
+液壓 < hydraulic\-pressure;
+管理站 < management\-station;
+鼻塞 < have\-a\-stuffy\-nose;
+虛擬連接 < virtual\-connection;
+點心 < light\-refreshments;
+客戶應用 < client\-application;
+不隨意肌 < involuntary\-muscle;
+說不定 < can''t\-say\-for\-sure;
+波斯語 < bosnian\-\(language\);
+海域 < territorial\-waters;
+比試 < have\-a\-competition;
+採取措施 < to\-adopt\-a\-measure;
+儘可能 < as\-far\-as\-possible;
+哈佛大學 < harvard\-university;
+電路 < \(electric\)\-circuit;
+中將 < lieutenant\-general;
+包承組 < \(responsible\)\-crew;
+百葉箱 < thermometer\-screen;
+暗線光譜 < dark\-line\-spectrum;
+文藝 < literature\-and\-art;
+版稅 < royalty\-\(on\-books\);
+電視節目 < television\-program;
+情報 < \(spy\)\-intelligence;
+編遣 < reorganize\-\(troops;
+避雷器 < lightning\-arrester;
+必不可少組成 < absolute\-necessity;
+泰山 < taishan\-\(mountain\);
+悉尼 < sydney\-\(australia\);
+戰鬥機 < fighter\-\(aircraft\);
+薄情 < inconstant\-in\-love;
+民用 < \(for\)\-civilian\-use;
+編譯 < translate\-and\-edit;
+福利 < \(material\)\-welfare;
+簡短介紹 < brief\-introduction;
+海灣戰爭 < \(persian\)\-gulf\-war;
+地球大氣 < earth''s\-atmosphere;
+同學 < \(fellow\)\-classmate;
+不和 < not\-get\-along\-well;
+不厭 < not\-mind\-doing\-sth;
+反感 < \(strongly\)\-dislike;
+針對 < in\-connection\-with;
+服務質量 < quality\-of\-service;
+另寄 < to\-mail\-separately;
+變幻 < change\-irregularly;
+報關 < declare\-at\-customs;
+署名 < sign\-\(a\-signature\);
+遊覽 < to\-go\-sight\-seeing;
+不攻自破 < collapse\-of\-itself;
+文化傳統 < cultural\-tradition;
+顯示器 < monitor\-\(computer\);
+皿 < shallow\-container;
+屓 < gigantic\-strength;
+派 < school\-of\-thought;
+姓 < one''s\-family\-name;
+煎 < fry\-in\-fat\-or\-oil;
+襁 < swaddling\-clothes;
+哈 < sound\-of\-laughter;
+鸚 < species\-of\-parrot;
+欧 < translit\.\:\-europe;
+订 < draw\-up\-agreement;
+偏 < inclined\-one\-side;
+歔 < blow\-through\-nose;
+培 < bank\-up\-with\-dirt;
+漫 < overflow\-of\-water;
+侠 < chivalrous\-person;
+姆 < child''s\-governess;
+盒 < small\-box\-or\-case;
+儒 < confucian\-scholar;
+阪 < hillside\-farmland;
+迈 < take\-a\-big\-stride;
+捏 < pick\-with\-fingers;
+浙 < zhejiang\-province;
+筧 < bamboo\-water\-pipe;
+艘 < counter\-for\-ships;
+趁 < take\-advantage\-of;
+鉢 < earthenware\-basin;
+蓬 < type\-of\-raspberry;
+辖 < linchpin\-of\-wheel;
+逅 < meet\-unexpectedly;
+酣 < enjoy\-intoxicants;
+饺 < stuffed\-dumplings;
+咏 < sing\-song\-or\-poem;
+搀 < give\-helping\-hand;
+捶 < strike\-with\-stick;
+刨 < carpenter''s\-plane;
+蠕 < eumenes\-polifomis;
+崆 < kongtong\-mountain;
+盅 < small\-cup\-or\-bowl;
+梆 < watchman''s\-rattle;
+嵇 < mountain\-in\-henan;
+耷 < ears\-hanging\-down;
+羌 < qiang\-nationality;
+苞 < a\-variety\-of\-rush;
+藜 < chenopodium\-album;
+艄 < stern\-of\-a\-vessel;
+峁 < yellow\-dirt\-mount;
+镔 < high\-quality\-iron;
+鲫 < carassius\-auratus;
+龇 < to\-show\-the\-teeth;
+沭 < river\-in\-shantung;
+榫 < mortise\-and\-tenon;
+萋 < luxuriant\-foliage;
+醮 < religious\-service;
+牝 < female\-of\-species;
+曷 < why\?\-what\?\-where\?;
+瑷 < fine\-quality\-jade;
+耦 < plow\-side\-by\-side;
+鸶 < the\-eastern\-egret;
+篦 < fine\-toothed\-comb;
+妁 < act\-as\-go\-between;
+荥 < a\-county\-in\-henan;
+戽 < to\-bale\-out\-water;
+枳 < trifoliate\-orange;
+椐 < zelkowa\-acuminata;
+魉 < a\-kind\-of\-monster;
+颞 < the\-temporal\-bone;
+耩 < to\-plough\.\-to\-sow;
+廨 < government\-office;
+蟮 < type\-of\-earthworm;
+蛱 < kind\-of\-butterfly;
+禳 < pray\-or\-sacrifice;
+瞢 < eyesight\-obscured;
+蔸 < counter\-for\-plant;
+螅 < \(intestinal\-worm\);
+祧 < an\-ancestral\-hall;
+蠃 < the\-solitary\-wasp;
+聃 < ears\-without\-rims;
+耜 < spade\-shaped\-tool;
+慝 < do\-evil\-in\-secret;
+庳 < a\-low\-built\-house;
+鼢 < a\-variety\-of\-mole;
+蚺 < a\-boa\-constrictor;
+硇 < a\-kind\-of\-mineral;
+硭 < a\-crude\-saltpetre;
+胨 < a\-kind\-of\-protein;
+外界 < the\-outside\-world;
+變天 < change\-of\-weather;
+比濕 < specific\-humidity;
+可行性研究 < feasibility\-study;
+網絡遷移 < network\-migration;
+電腦軟件 < computer\-software;
+必修課 < a\-required\-course;
+德文 < german\-\(language\);
+僅次于 < second\-only\-to\.\.\.;
+朝鮮語 < korean\-\(language\);
+資料傳輸 < data\-transmission;
+卑怯 < mean\-and\-cowardly;
+兵馬 < troops\-and\-horses;
+數據庫軟件 < database\-software;
+碩士 < master''s\-\(degree\);
+西裡爾字母 < cyrillic\-alphabet;
+國防部長 < defence\-secretary;
+白骨 < bones\-of\-the\-dead;
+巨大壓力 < enormous\-pressure;
+照相 < take\-a\-photograph;
+白飯 < plain\-cooked\-rice;
+日子 < a\-\(calendar\)\-date;
+建築業 < building\-industry;
+政治氣候 < political\-climate;
+廣域網路 < wide\-area\-network;
+教友大會 < church\-conference;
+美國航空公司 < american\-airlines;
+教材 < teaching\-material;
+鄰國 < bordering\-country;
+機製 < machine\-processed;
+長達 < extend\-as\-long\-as;
+化妝 < to\-put\-on\-make\-up;
+難捱 < trying\,\-difficult;
+大局 < general\-situation;
+撒迦利亞書 < book\-of\-zechariah;
+敏感 < sensitive\-\(issue\);
+紡織 < spinning\-\(thread\);
+大多 < for\-the\-most\-part;
+徒刑 < \(prison\)\-sentence;
+軍事力量 < military\-strength;
+波士頓大學 < boston\-university;
+支持 < to\-be\-in\-favor\-of;
+紛紛 < one\-after\-another;
+麥克維 < \(timothy\)\-mcveigh;
+應用層 < application\-layer;
+桌別林 < \(charlie\)\-chaplin;
+電話服務 < telephone\-service;
+蓋爾語 < gaelic\-\(language\);
+交換以太網絡 < switched\-ethernet;
+外國 < foreign\-\(country\);
+阿拉伯語 < arabic\-\(language\);
+捕食 < catch\-and\-feed\-on;
+支柱產業 < mainstay\-industry;
+無所謂 < to\-be\-indifferent;
+多站地址 < multicast\-address;
+齄 < red\-sores\-on\-nose;
+經濟安全 < economic\-security;
+黟 < black\-and\-shining;
+鹁 < species\-of\-pigeon;
+輔課 < subsidiary\-course;
+外交風波 < diplomatic\-crisis;
+鵵 < scops\-semitorques;
+八股 < eight\-\-part\-essay;
+平民 < \(ordinary\)\-people;
+郊區 < suburban\-district;
+兩者 < both\-sides\|things;
+鮸 < sciaena\-albiflora;
+魫 < the\-young\-of\-fish;
+部份 < part\-\(of\-a\-whole\);
+髽 < to\-dress\-the\-hair;
+電話網路 < telephone\-network;
+白肉 < plain\-boiled\-pork;
+饩 < sacrficial\-victim;
+邊塞 < frontier\-fortress;
+餂 < to\-obtain\-by\-hook;
+石刻 < stone\-inscription;
+鞸 < leather\-arm\-guard;
+靿 < the\-leg\-of\-a\-boot;
+緊密 < inseparably\-close;
+隸 < be\-subservient\-to;
+機器人 < mechanical\-person;
+閪 < to\-lose\-lost\-item;
+邊卡 < border\-checkpoint;
+緩和 < to\-ease\-\(tension\);
+反過來說 < on\-the\-other\-hand;
+維持費 < maintenance\-costs;
+銠 < rhodium\-ruthenium;
+編印 < compile\-and\-print;
+鉕 < promethium\-bronze;
+辦公自動化 < office\-automation;
+鈳 < columbium\-niobium;
+凱旋 < return\-triumphant;
+歐洲語言 < european\-language;
+瀉肚 < to\-have\-diarrhoea;
+醭 < moulds\-on\-liquids;
+醑 < to\-strain\-spirits;
+酺 < drink\-with\-others;
+網絡設備 < network\-equipment;
+白眼 < supercilious\-look;
+板擦兒 < blackboard\-eraser;
+日益增加 < to\-increase\-daily;
+貍 < a\-fox\-like\-animal;
+眼尖 < to\-have\-good\-eyes;
+豋 < ceremonial\-vessel;
+報帳 < render\-an\-account;
+經濟力量 < economic\-strength;
+覼 < explain\-in\-detail;
+同性戀 < homosexual\-\(love\);
+補發 < supply\-again\-\(sth;
+變本加厲 < become\-aggravated;
+不及物動詞 < intransitive\-verb;
+光纖接口 < optical\-interface;
+諾貝爾和平獎 < nobel\-peace\-prize;
+蜔 < inlaid\-shell\-work;
+把頭 < labour\-contractor;
+商業行為 < business\-activity;
+軍費開支 < military\-spending;
+蘵 < physalis\-angulata;
+性騷擾 < sexual\-harassment;
+藨 < kind\-of\-raspberry;
+蕸 < water\-lily''s\-leaf;
+蕑 < valeriana\-villosa;
+軟件平臺 < software\-platform;
+葎 < humulus\-japonicus;
+屏障 < protective\-screen;
+菣 < artemisia\-apiacea;
+莛 < stalks\-of\-grasses;
+火星 < mars\-\(the\-planet\);
+茍 < to\-be\-circumspect;
+騎馬 < ride\-on\-horseback;
+橫斷物 < transverse\-object;
+抄錄 < to\-make\-a\-copy\-of;
+揭曉 < announce\-publicly;
+罛 < large\-fishing\-net;
+白屈菜 < greater\-celandine;
+縰 < band\-for\-the\-hair;
+綎 < silk\-braided\-cord;
+按圖索驥 < try\-to\-locate\-sth;
+紬 < kind\-of\-thin\-silk;
+病程 < course\-of\-disease;
+傳輸率 < transmission\-rate;
+籸 < powdery\-substance;
+希伯來語 < hebrew\-\(language\);
+籓 < big\-winnow\-basket;
+開發週期 < development\-cycle;
+篨 < coarse\-bamboo\-mat;
+申訴 < to\-appeal\-\(to\-sb\);
+伺服器 < server\-\(computer\);
+供需 < supply\-and\-demand;
+地殼 < the\-earth''s\-crust;
+閉幕 < the\-curtain\-falls;
+祊 < river\-in\-shandong;
+盛名 < famous\-reputation;
+工委 < working\-committee;
+戰略夥伴 < strategic\-partner;
+筆調 < \(of\-writing\)\-tone;
+展覽 < to\-put\-on\-display;
+白布 < plain\-white\-cloth;
+靜脈吸毒 < intraveneous\-drug;
+瘵 < a\-wasting\-disease;
+無期徒刑 < life\-imprisonment;
+工地 < construction\-site;
+璫 < pendant\-ornaments;
+百分之百 < a\-hundred\-percent;
+棕色 < brown\-\(the\-color\);
+篇目 < table\-of\-contents;
+玞 < an\-inferior\-agate;
+膝上型電腦 < laptop\-\(computer\);
+萊溫斯基 < \(monica\)\-lewinsky;
+熀 < the\-blaze\-of\-fire;
+住院 < to\-be\-in\-hospital;
+傳輸服務 < transport\-service;
+搏動 < beat\-rhythmically;
+接待 < receive\-\(a\-visit\);
+灎 < movement\-of\-water;
+公務 < official\-business;
+渰 < forming\-or\-rising;
+拘留 < detain\-\(prisoner\);
+洶 < the\-rush\-of\-water;
+綜合布線 < integrated\-wiring;
+國際法 < international\-law;
+公佈 < publicly\-announce;
+內亂 < internal\-disorder;
+衛星 < \(space\)\-satellite;
+拍照 < to\-take\-a\-picture;
+病故 < die\-of\-an\-illness;
+衝擊 < \(be\-under\)\-attack;
+長久 < \(for\-a\)\-long\-time;
+朠 < color\-of\-the\-moon;
+傳輸通道 < transport\-channel;
+政府部門 < government\-branch;
+暔 < name\-of\-a\-country;
+錄音 < \(sound\)\-recording;
+新聞週刊 < newsweek\-magazine;
+攰 < totally\-exhausted;
+保祐 < bless\-and\-protect;
+掫 < be\-on\-night\-watch;
+捷報 < report\-of\-success;
+捥 < to\-bend\-the\-wrist;
+團圓 < to\-have\-a\-reunion;
+直接競爭 < direct\-competitor;
+中央委員會 < central\-committee;
+醫療經驗 < medical\-expertise;
+廣播地址 < broadcast\-address;
+愰 < clearness\-of\-mind;
+授勛 < to\-award\-an\-honor;
+哀鳴 < a\-plaintive\-whine;
+生物武器 < biological\-weapon;
+弖 < phonetic\-for\-''te'';
+懂行 < to\-know\-the\-ropes;
+軍區 < a\-military\-region;
+保爾 < \(a\-personal\-name\);
+財閥 < financial\-magnate;
+暗無天日 < complete\-darkness;
+尨 < shaggy\-haired\-dog;
+拍攝 < \(shoot\-a\)\-picture;
+侵截者 < \(computer\)\-hacker;
+考驗 < \(put\-to\-the\)\-test;
+保溫 < heat\-preservation;
+高級研究 < advanced\-research;
+屏氣 < hold\-one''s\-breath;
+自主系統 < autonomous\-system;
+白金漢宮 < buckingham\-palace;
+運行狀況 < operational\-state;
+夊 < kangxi\-radical\-35;
+困難在於 < the\-problem\-is\.\.\.;
+日耳曼語 < germanic\-language;
+稟賦 < natural\-endowment;
+病危 < be\-critically\-ill;
+傳輸協定 < transfer\-protocol;
+喿 < chirping\-of\-birds;
+喼 < used\-phonetically;
+喹 < chemical\-compound;
+併發 < be\-complicated\-by;
+哵 < the\-cry\-of\-a\-bird;
+哴 < crying\-of\-infants;
+財貿 < finance\-and\-trade;
+大刀闊斧 < bold\-and\-decisive;
+特別待遇 < special\-treatment;
+吢 < vomiting\-of\-a\-dog;
+初學者 < beginning\-student;
+專用網路 < dedicated\-network;
+西王母 < name\-of\-a\-goddess;
+五角大樓官員 < pentagon\-official;
+敘利亞文 < syriac\-\(language\);
+漢字 < chinese\-character;
+安穩 < smooth\-and\-steady;
+倈 < to\-induce\-to\-come;
+俈 < to\-inform\-quickly;
+到那個時候 < until\-this\-moment;
+仂 < surplus\-or\-excess;
+在頭版 < on\-the\-front\-page;
+專業 < specialized\-field;
+乪 < a\-bend\-in\-a\-river;
+趨時 < to\-follow\-fashion;
+䶰 < feather\-ornaments;
+䶖 < disease\-of\-tongue;
+䵜 < to\-plough\-and\-sow;
+䴊 < the\-crow\-pheasant;
+仍舊 < still\-\(remaining\);
+䳤 < a\-kind\-of\-strange;
+䳙 < a\-egret\-like\-bird;
+拗口 < hard\-to\-pronounce;
+䯥 < with\-a\-high\-skull;
+䯢 < partial\-paralysis;
+䮫 < a\-big\-mule\-an\-ass;
+䮚 < diseases\-of\-horse;
+䮐 < in\-good\-condition;
+䭔 < steamed\-dumplings;
+䬰 < light\-refreshment;
+䬕 < sound\-of\-the\-wind;
+䬍 < the\-sound\-of\-wind;
+䬆 < a\-blustering\-gale;
+䫦 < the\-lower\-jawbone;
+䫟 < facial\-complexion;
+䫍 < to\-bow\-one''s\-head;
+䫉 < facial\-appearance;
+不歡而散 < part\-on\-bad\-terms;
+䨕 < pouring\-with\-rain;
+中華民國 < republic\-of\-china;
+䧺 < the\-male\-of\-birds;
+䦪 < sound\-of\-the\-door;
+喘氣 < to\-breathe\-deeply;
+䦃 < to\-dig\-with\-a\-hoe;
+䣻 < color\-of\-the\-wine;
+拜倒 < prostrate\-oneself;
+波蘭語 < polish\-\(language\);
+䢝 < the\-next\-in\-order;
+䡷 < noise\-of\-vehicles;
+䡪 < fan\-of\-a\-carriage;
+䡙 < an\-armed\-carriage;
+䞕 < color\-of\-the\-fire;
+䞂 < fairly\-prosperous;
+才思 < imaginative\-power;
+䝺 < to\-pierce\-through;
+䝳 < to\-kill\-for\-money;
+䝲 < farewell\-presents;
+並駕齊驅 < run\-neck\-and\-neck;
+波音 < boeing\-\(aircraft\);
+轟炸機 < bomber\-\(aircraft\);
+䜢 < cruel\-and\-violent;
+難以應付 < hard\-to\-deal\-with;
+䚠 < unbroken\-firewood;
+䚝 < new\-growing\-horns;
+䚚 < horn\-of\-an\-animal;
+䚑 < to\-steal\-a\-glance;
+䚀 < to\-see\-stealthily;
+䙴 < to\-soar\-as\-a\-bird;
+䙪 < a\-loop\-for\-button;
+洛杉磯時報 < los\-angeles\-times;
+䘎 < name\-of\-an\-insect;
+硬件平臺 < hardware\-platform;
+䗹 < hairy\-caterpillar;
+作業 < school\-assignment;
+官方語言 < official\-language;
+鼓舞 < heartening\-\(news\);
+䕧 < zizania\-latifolia;
+䕆 < round\-straw\-quilt;
+醫學家 < medical\-scientist;
+䓛 < molecular\-formula;
+䒽 < illicium\-anisatum;
+䒐 < disturbed\-in\-mind;
+䑼 < ocean\-going\-liner;
+北京近郊 < suburb\-of\-beijing;
+䐠 < between\-the\-flesh;
+䐘 < to\-laugh\-heartily;
+䏰 < a\-kind\-of\-insects;
+華盛頓 < washington\-\(d\.c\.\);
+䍭 < a\-ewe\-or\-she\-goat;
+䍇 < flat\-bottom\-crock;
+䌨 < thin\-silk\-fabrics;
+䋻 < to\-spin\-and\-weave;
+䋺 < a\-swing\-a\-crupper;
+䋘 < to\-hand\-by\-a\-rope;
+文化的交流 < cultural\-exchange;
+䊯 < grains\-with\-beard;
+䉌 < crude\-bamboo\-mats;
+䈠 < books\-and\-volumes;
+斯洛伐克語 < slovak\-\(language\);
+案情 < details\-of\-a\-case;
+丟飯碗 < to\-lose\-one''s\-job;
+䄉 < a\-rite\-or\-service;
+財神 < the\-god\-of\-wealth;
+䁄 < to\-close\-the\-eyes;
+䀹 < to\-wink\-eyelashes;
+比較新 < comparatively\-new;
+㿃 < an\-ox\-headed\-boil;
+㾱 < incurable\-disease;
+㽍 < an\-earthen\-vessel;
+㺿 < a\-jade\-like\-stone;
+外國旅遊者 < foreign\-traveller;
+現狀 < current\-situation;
+小報 < tabloid\-newspaper;
+㶿 < the\-smoke\-went\-up;
+㶴 < a\-very\-great\-fire;
+一般原則 < general\-principle;
+㵫 < water\-gushing\-out;
+㵍 < filled\-with\-water;
+㵄 < name\-of\-a\-dynasty;
+朝聖 < make\-a\-pilgrimage;
+㳜 < the\-flowing\-water;
+㲲 < fine\-cotton\-cloth;
+㲘 < fine\-woolen\-cloth;
+㲋 < a\-kind\-of\-animals;
+㲃 < smooth\-and\-curved;
+保健 < health\-protection;
+㯿 < handle\-of\-a\-ladle;
+㯦 < the\-game\-of\-chess;
+淫水 < sexual\-secretions;
+㮵 < common\-sandalwood;
+㮨 < codium\-macronatum;
+㮚 < the\-chestnut\-tree;
+㬛 < to\-dry\-in\-the\-sun;
+射頻干擾 < radio\-interferece;
+㩮 < to\-lift\-up\-or\-off;
+㩩 < to\-come\-to\-an\-end;
+㩙 < a\-cork\-or\-stopper;
+㨢 < to\-rip\-open\-flesh;
+電信號 < electrical\-signal;
+尋味 < to\-think\-sth\-over;
+板煙 < plug\-\(of\-tobacco\);
+注視 < watch\-attentively;
+㣢 < to\-rest\-from\-work;
+㣓 < literary\-in\-taste;
+㣍 < a\-raised\-platform;
+㢮 < to\-unstring\-a\-bow;
+㢑 < a\-collapsed\-house;
+㢄 < a\-kind\-of\-utensil;
+法語 < french\-\(language\);
+㡟 < bed\-mats\-for\-baby;
+㠷 < a\-vessel\-for\-rice;
+㠥 < rugged\-and\-uneven;
+㟴 < lump\-on\-the\-hills;
+㟤 < zhuang\-in\-guangxi;
+㟃 < to\-have\-charge\-of;
+㞭 < name\-of\-an\-island;
+四面八方 < in\-all\-directions;
+㝌 < prolonged\-illness;
+㛴 < to\-anger\-to\-annoy;
+㚅 < to\-worship\-of\-god;
+㙩 < an\-enclosing\-wall;
+㘦 < wall\-made\-of\-soil;
+㘚 < angry\-air\-of\-look;
+㗼 < eating\-or\-talking;
+㗥 < sound\-of\-striking;
+㖧 < can\-not\-see\-clear;
+㔝 < strong\-resistance;
+㓾 < to\-wound\-the\-skin;
+獨立 < to\-be\-independent;
+㑝 < to\-make\-a\-fool\-of;
+㑏 < to\-stand\-and\-wait;
+㑊 < a\-kind\-of\-disease;
+秘書長 < secretary\-general;
+走出 < to\-move\-away\-from;
+聲援 < support\-\(a\-cause\);
+礦藏 < mineral\-resources;
+寫信 < to\-write\-a\-letter;
+三維 < three\-dimensional;
+穴居 < to\-live\-in\-a\-cave;
+狀語 < adverbial\-adjunct;
+在大多數情況下 < in\-most\-instances;
+酬金 < \(monetary\)\-reward;
+國家安全 < national\-security;
+財政 < finances\-\(public\);
+海洋溫度 < ocean\-temperature;
+網際協定 < internet\-protocol;
+外交關係 < foreign\-relations;
+安危 < safety\-and\-danger;
+巴克夏豬 < berkshire\-\(swine\);
+名稱 < name\-\(of\-a\-thing\);
+物質 < \(physical\)\-matter;
+吃穿 < food\-and\-clothing;
+訊框傳送論壇 < frame\-relay\-forum;
+穴位 < acupuncture\-point;
+學位 < educational\-level;
+各界 < all\-walks\-of\-life;
+耳子 < handle\-\(on\-a\-pot\);
+歐洲人 < european\-\(person\);
+思維 < \(line\-of\)\-thought;
+衛生部 < health\-department;
+業界標準 < industry\-standard;
+以免 < in\-order\-to\-avoid;
+一千七百萬 < seventeen\-million;
+事實 < \(the\)\-fact\-\(that\);
+本性 < natural\-instincts;
+難題 < difficult\-problem;
+委員會會議 < committee\-meeting;
+變相 < in\-disguised\-form;
+財務 < financial\-affairs;
+服役 < serve\-in\-the\-army;
+醫療 < medical\-treatment;
+陸基導彈 < land\-based\-missle;
+敬重 < to\-respect\-deeply;
+暗河 < underground\-river;
+頸椎 < cervical\-vertibra;
+網點 < node\-in\-a\-network;
+黑客 < hacker\-\(computer\);
+纖芯 < core\-\(of\-a\-fiber\);
+編隊 < form\-into\-columns;
+敗退 < retreat\-in\-defeat;
+本國 < one''s\-own\-country;
+太平洋 < the\-pacific\-ocean;
+原因是 < the\-reason\-is\-\.\.\.;
+計算機工業 < computer\-industry;
+西番雅書 < book\-of\-zephaniah;
+語言 < \(spoken\)\-language;
+一年半 < a\-year\-and\-a\-half;
+專家評論 < expert\-commentary;
+阿爾巴尼亞人 < albanian\-\(person\);
+不屑 < disdain\-to\-do\-sth;
+嚇得發抖 < tremble\-with\-fear;
+半票 < half\-price\-ticket;
+獨唱 < \(in\-singing\)\-solo;
+不甘心 < not\-reconciled\-to;
+四門轎車 < sedan\-\(motor\-car\);
+私人 < private\-\(citizen\);
+獲准 < obtain\-permission;
+客戶機 < client\-\(computer\);
+權鑰 < keys\-of\-authority;
+失業率 < unemployment\-rate;
+爆管 < cartridge\-igniter;
+礦床 < \(mineral\)\-deposit;
+愛不釋手 < fondle\-admiringly;
+止血 < stanch\-\(bleeding\);
+名字 < \(a\-person''s\)\-name;
+警察局 < police\-department;
+台幣 < new\-taiwan\-dollar;
+顧及 < take\-into\-account;
+歸心者 < religious\-convert;
+沒關係 < it\-doesn''t\-matter;
+下去 < go\-down\-\(descend\);
+從頭到腳 < from\-head\-to\-foot;
+勻稱 < well\-proportioned;
+不力 < not\-do\-one''s\-best;
+道謝 < to\-express\-thanks;
+硝煙 < smoke\-\(from\-guns\);
+藝人 < performing\-artist;
+包園兒 < buy\-the\-whole\-lot;
+教練 < \(athlete''s\)\-coach;
+出院 < to\-leave\-hospital;
+阿里 < ali\-\(proper\-name\);
+一身汗 < sweating\-all\-over;
+附近 < \(in\-the\)\-vicinity;
+廣播網路 < broadcast\-network;
+笨口拙舌 < awkward\-in\-speech;
+牌樓 < decorated\-archway;
+巴斯克語 < basque\-\(language\);
+父母 < father\-and\-mother;
+華北平原 < north\-china\-plain;
+救恩計劃 < plan\-of\-salvation;
+个 < numerary\-adjunct;
+里 < unit\-of\-distance;
+阳 < ''male''\-principle;
+訝 < express\-surprise;
+黍 < glutinous\-millet;
+剧 < theatrical\-plays;
+蘂 < stamen\-or\-pistil;
+挺 < to\-stand\-upright;
+础 < foundation\-stone;
+舅 < mother''s\-brother;
+萧 < common\-artemisia;
+俺 < personal\-pronoun;
+玲 < tinkling\-of\-jade;
+捩 < twist\-with\-hands;
+黛 < blacken\-eyebrows;
+妆 < to\-adorn\-oneself;
+幢 < carriage\-curtain;
+梭 < weaver''s\-shuttle;
+漪 < ripples\-on\-water;
+眷 < take\-interest\-in;
+勋 < meritorious\-deed;
+甭 < there\-is\-no\-need;
+祠 < ancestral\-temple;
+舔 < lick\-with\-tongue;
+蕊 < unopened\-flowers;
+赣 < jiangxi\-province;
+跷 < raise\-one''s\-foot;
+剁 < chop\-by\-pounding;
+薰 < a\-medicinal\-herb;
+叼 < holding\-in\-mouth;
+荼 < bitter\-vegetable;
+徙 < move\-one''s\-abode;
+涔 < river\-in\-shaanxi;
+潢 < expanse\-of\-water;
+秸 < stalks\-of\-millet;
+袈 < buddhist\-cassock;
+珞 < kind\-of\-necklace;
+啾 < wailing\-of\-child;
+亻 < radical\-number\-9;
+夙 < early\-in\-morning;
+鹘 < a\-kind\-of\-pigeon;
+娩 < give\-birth\-child;
+姝 < a\-beautiful\-girl;
+懑 < be\-sick\-at\-heart;
+锉 < carpenter''s\-file;
+洱 < a\-lake\-in\-yunnan;
+蝈 < small\-green\-frog;
+帼 < women''s\-headgear;
+狎 < be\-familiar\-with;
+胪 < arrange\-in\-order;
+豢 < domestic\-animals;
+眇 < blind\-in\-one\-eye;
+羿 < legendary\-archer;
+芩 < salt\-marsh\-plant;
+茭 < an\-aquatic\-grass;
+蓖 < castor\-oil\-plant;
+傧 < entertain\-guests;
+薜 < evergreen\-shrubs;
+趺 < sit\-cross\-legged;
+椹 < a\-chopping\-board;
+霈 < torrential\-rains;
+曩 < in\-ancient\-times;
+栌 < supporting\-block;
+哚 < chemical\-element;
+筌 < bamboo\-fish\-trap;
+浍 < irrigation\-ditch;
+猁 < a\-kind\-of\-monkey;
+啶 < \-d\-\+\-ine\-\(chem\.\);
+鬯 < sacrificial\-wine;
+鲷 < pagrosomus\-major;
+聱 < bent\-and\-twisted;
+劢 < put\-forth\-effort;
+蟪 < a\-kind\-of\-cicada;
+赆 < farewell\-present;
+埯 < cover\-with\-earth;
+鲔 < kind\-of\-sturgeon;
+罨 < medical\-compress;
+嫜 < husband''s\-parent;
+漤 < marinate\-in\-salt;
+嚆 < give\-forth\-sound;
+薹 < cyperus\-rotundus;
+茆 < species\-of\-grass;
+磨子 < mill\,\-millstones;
+共產黨部隊 < communist\-forces;
+后人 < later\-generation;
+航空母艦 < aircraft\-carrier;
+識字 < to\-learn\-to\-read;
+中國大陸 < chinese\-mainland;
+影像會議 < video\-conference;
+心得 < knowledge\-gained;
+悲歡離合 < joys\-and\-sorrows;
+百里挑一 < one\-in\-a\-hundred;
+白細胞 < white\-blood\-cell;
+語法術語 < grammatical\-term;
+求婚 < propose\-marriage;
+編目 < make\-a\-catalogue;
+電流 < electric\-current;
+城鎮 < cities\-and\-towns;
+委員 < committee\-member;
+壁畫 < mural\-\(painting\);
+姓名 < name\-and\-surname;
+是否 < whether\-\(or\-not\);
+總機 < central\-exchange;
+過程 < course\-of\-events;
+熊猴 < assamese\-macaque;
+大會 < general\-assembly;
+基調 < \(speech\)\-keynote;
+誤會 < to\-misunderstand;
+更高性能 < high\-performance;
+超高速乙太網路 < gigabit\-ethernet;
+訂票 < to\-issue\-tickets;
+壽桃 < birthday\-peaches;
+軍事科學 < military\-science;
+服務提供者 < service\-provider;
+器官移殖 < organ\-transplant;
+移動式電話 < mobile\-telephone;
+巴豆 < \(purging\)\-croton;
+壽星 < god\-of\-longevity;
+影像處理 < image\-processing;
+入迷 < to\-be\-fascinated;
+明代 < the\-ming\-dynasty;
+性關係 < sexual\-relations;
+人事部門 < personnel\-office;
+退票 < bounce\-\(a\-check\);
+潛在威脅 < potential\-threat;
+殯儀館 < the\-undertaker''s;
+統計數據 < statistical\-data;
+繃子 < embroidery\-frame;
+得出 < obtain\-\(results\);
+免費 < free\-\(of\-charge\);
+遲暮 < past\-one''s\-prime;
+研討會 < discussion\-forum;
+不分青紅皂白 < indiscriminately;
+特定含義 < specific\-meaning;
+金融系統 < financial\-system;
+導致死亡 < to\-lead\-to\-death;
+板上釘釘 < that\-clinches\-it;
+網橋 < \(network\)\-bridge;
+列為 < be\-classified\-as;
+婚外性接觸 < extramarital\-sex;
+國防 < national\-defence;
+故居 < former\-residence;
+波美比重計 < baume\-hydrometer;
+齙 < projecting\-teeth;
+鹶 < salty\-and\-bitter;
+剽悍 < swift\-and\-fierce;
+武官 < military\-attache;
+不等邊三角形 < scalene\-triangle;
+違憲 < unconstitutional;
+鯆 < the\-skate\-or\-ray;
+勞動 < \(physical\)\-labor;
+為生 < to\-make\-a\-living;
+電腦企業 < computer\-company;
+公羊 < ram\-\(male\-sheep\);
+船隊 < fleet\-\(of\-ships\);
+魬 < sole\-or\-flounder;
+廣州 < guangzhou\-\(city\);
+唉聲嘆氣 < heave\-deep\-sighs;
+不好意思 < feel\-embarrassed;
+電力 < electrical\-power;
+補血 < enrich\-the\-blood;
+骴 < a\-putrid\-carcase;
+外國投資者 < foreign\-investor;
+馘 < cut\-off\-left\-ear;
+巴布亞新幾內亞 < papau\-new\-guinea;
+資料量 < quantity\-of\-data;
+編輯室 < editorial\-office;
+飀 < soughing\-of\-wind;
+燈光 < \(stage\)\-lighting;
+韝 < leather\-arm\-band;
+韊 < a\-case\-for\-a\-bow;
+鞶 < big\-leather\-belt;
+透支 < \(bank\)\-overdraft;
+正常工作 < normal\-operation;
+雗 < a\-white\-pheasant;
+隤 < to\-fall\-in\-ruins;
+傳真發送 < fax\-transmission;
+闠 < gate\-of\-a\-market;
+異性性接觸 < heterosexual\-sex;
+迴旋 < maneuvering\-room;
+拉丁語 < latin\-\(language\);
+操作系統 < operating\-system;
+銻 < antimony\-stibium;
+銧 < point\-of\-a\-sword;
+鉀 < potassium\-kalium;
+白磷 < white\-phosphorus;
+適配層 < adaptation\-layer;
+出風頭 < to\-create\-a\-stir;
+報捷 < report\-a\-success;
+訪問 < pay\-a\-visit\-\(to\);
+傳輸媒界 < transport\-method;
+除夕 < \(new\-year''s\)\-eve;
+躷 < of\-short\-stature;
+蹱 < to\-stagger\-along;
+蹐 < take\-short\-steps;
+桌上型電腦 < desktop\-computer;
+辦案 < to\-handle\-a\-case;
+賙 < give\-for\-charity;
+越野車 < off\-road\-vehical;
+豏 < half\-grown\-beans;
+網絡直徑 < network\-diameter;
+訂單 < \(purchase\)\-order;
+成群結隊 < in\-large\-numbers;
+適配器 < adapter\-\(device\);
+副主席 < vice\-chairperson;
+華僑 < overseas\-chinese;
+誕 < to\-bear\-children;
+滑鼠 < mouse\-\(computer\);
+覂 < to\-throw\-a\-rider;
+襱 < legs\-of\-trousers;
+裛 < to\-wrap\-and\-bind;
+袗 < unlined\-garments;
+無所不賣 < to\-sell\-anything;
+衎 < to\-give\-pleasure;
+蟿 < acrida\-chinensis;
+螋 < spider\-millipede;
+蝻 < immature\-locusts;
+病菌 < harmful\-bacteria;
+記者招待會 < press\-conference;
+捷克語 < czech\-\(language\);
+虥 < striped\-wild\-cat;
+筆底下 < ability\-to\-write;
+進修 < advanced\-studies;
+藦 < edible\-mushrooms;
+長江 < changjiang\-river;
+藋 < sambucu\-javinica;
+薃 < cyperus\-amuricus;
+通用電器 < general\-electric;
+蔇 < luxuriant\-growth;
+幾千 < several\-thousand;
+朝鮮半島 < korean\-peninsula;
+葙 < celosia\-argentea;
+菉 < the\-green\-bamboo;
+芘 < malva\-sylvestris;
+到了 < in\-\(a\-past\-time\);
+核原料 < nuclear\-material;
+有關人士 < persons\-involved;
+報名 < enter\-one''s\-name;
+出名 < well\-known\-\(for\);
+授獎 < to\-award\-a\-prize;
+體育 < physical\-culture;
+耶利米書 < book\-of\-jeremiah;
+耼 < ears\-without\-rim;
+不爭氣 < be\-disappointing;
+漢語 < chinese\-language;
+金融市場 < financial\-market;
+綵 < varicolored\-silk;
+紽 < a\-strand\-of\-silk;
+糵 < fermenting\-grain;
+糈 < sacrificial\-rice;
+兵役 < military\-service;
+籧 < crude\-bamboo\-mat;
+北冰洋 < the\-arctic\-ocean;
+兩岸對話 < bilaterial\-talks;
+箯 < bamboo\-palanquin;
+箊 < bamboo\-with\-thin;
+秷 < sound\-of\-reaping;
+磥 < a\-heap\-of\-stones;
+羅密歐與朱麗葉 < romeo\-and\-juliet;
+砫 < ancestral\-tablet;
+瞘 < deeply\-sunk\-eyes;
+瞋 < glare\-with\-anger;
+畢肖 < resemble\-closely;
+睜 < to\-open\-the\-eyes;
+不經之談 < absurd\-statement;
+崩漏 < uterine\-bleeding;
+盦 < lid\-of\-a\-caldron;
+癉 < to\-hate\-bitterly;
+冗員 < excess\-personnel;
+兵士 < ordinary\-soldier;
+要人 < important\-person;
+採擇 < select\-and\-adopt;
+踩線 < step\-on\-the\-line;
+瓟 < the\-bottle\-gourd;
+猸 < a\-kind\-of\-animal;
+又來了 < here\-we\-go\-again;
+癱子 < paralyzed\-person;
+狻 < a\-fabulous\-beast;
+巨匠 < master\-craftsman;
+閱兵 < to\-review\-troops;
+傲氣 < air\-of\-arrogance;
+烜 < light\-of\-the\-sun;
+便衣 < civilian\-clothes;
+網際網路協會 < internet\-society;
+路由協定 < routing\-protocol;
+澦 < place\-in\-sichuan;
+澥 < a\-blocked\-stream;
+澔 < radiance\-of\-gems;
+尋訪 < to\-inquire\-after;
+寶貝 < treasured\-object;
+閱世 < to\-see\-the\-world;
+渫 < beating\-of\-ocean;
+簡明 < simple\-and\-clear;
+網路平台 < network\-platform;
+安頓 < find\-a\-place\-for;
+公公 < husband''s\-father;
+例語 < example\-sentance;
+毮 < to\-pull\-out\-hair;
+毪 < serge\-from\-tibet;
+樛 < bending\-branches;
+閃亮 < brilliant\,\-shiny;
+光檢測器 < optical\-detector;
+枲 < male\-nettle\-hemp;
+電腦網路 < computer\-network;
+枒 < the\-coconut\-tree;
+波爾多液 < bordeaux\-mixture;
+斵 < to\-cut\-to\-pieces;
+斞 < a\-stack\-of\-grain;
+撚 < twirl\-in\-fingers;
+原子科學家 < atomic\-scientist;
+均勢 < balance\-of\-power;
+發達國家 < developed\-nation;
+十多億 < over\-one\-billion;
+已經進行 < already\-underway;
+傳送服務 < delivery\-service;
+挷 < to\-propel\-a\-boat;
+保留 < continue\-to\-have;
+人頭 < number\-of\-people;
+接人 < to\-meet\-a\-person;
+讀者來信 < reader''s\-letters;
+弳 < circular\-measure;
+廵 < to\-go\-on\-circuit;
+一下子 < in\-a\-short\-while;
+哈巴谷書 < book\-of\-habakkuk;
+核設施 < nuclear\-facility;
+國力 < a\-nation''s\-power;
+白壁微瑕 < a\-slight\-blemish;
+十幾個月 < ten\-months\-or\-so;
+非政府 < non\-governmental;
+主幹線 < backbone\-\(cable\);
+嬎 < to\-bear\-multiple;
+電視機 < television\-\(set\);
+媤 < husband''s\-family;
+扮演 < play\-the\-part\-of;
+流行病 < epidemic\-disease;
+病因 < cause\-of\-disease;
+軍事 < military\-affairs;
+佔線 < busy\-\(telephone\);
+山村 < mountain\-village;
+信用證 < letter\-of\-credit;
+不加思索 < without\-thinking;
+囍 < double\-happiness;
+嚳 < mythical\-emperor;
+學術界 < academic\-circles;
+拐彎 < to\-turn\-a\-corner;
+聚變 < \(nuclear\)\-fusion;
+表冊 < statistical\-form;
+嘅 < sound\-of\-sighing;
+單模光纖 < singlemode\-fiber;
+最大能力 < maximum\-capacity;
+衛星城 < \"satellite\"\-town;
+嗞 < to\-consult\-about;
+喺 < to\-be\-located\-at;
+審理 < to\-hear\-\(a\-case\);
+抄本 < handwritten\-copy;
+舔吮 < to\-lick\-and\-suck;
+的一種 < is\-one\-\(kind\-of\);
+曼德拉 < \(nelson\)\-mandela;
+有線電視 < cable\-television;
+印地語 < hindi\-\(language\);
+便橋 < temporary\-bridge;
+工業化 < to\-industrialize;
+冓 < a\-secluded\-place;
+不變資本 < constant\-capital;
+儊 < rough\-and\-rugged;
+傜 < a\-minority\-tribe;
+筆戰 < written\-polemics;
+便服 < everyday\-clothes;
+感謝 < \(express\)\-thanks;
+䶱 < a\-kind\-of\-turtle;
+䵤 < to\-crack\-or\-chap;
+䵣 < white\-with\-black;
+䵃 < a\-kind\-of\-barley;
+䴬 < crumbs\-of\-barley;
+出版社 < publishing\-house;
+下馬 < dismount\-a\-horse;
+䴅 < a\-legendary\-bird;
+沖繩島 < okinawa\-\(island\);
+䳢 < small\-wild\-goose;
+䳐 < an\-owl\-like\-bird;
+安眠 < sleep\-peacefully;
+䲲 < a\-hawk\-like\-bird;
+層層 < layer\-upon\-layer;
+䰃 < dishevelled\-hair;
+䯳 < loosely\-arranged;
+筆帽 < the\-cap\-of\-a\-pen;
+䯇 < to\-exert\-oneself;
+䮴 < unstable\-walking;
+䮳 < to\-give\-birth\-to;
+䮁 < a\-pair\-of\-horses;
+䫌 < bowed\-one''s\-head;
+䪎 < strings\-of\-a\-cap;
+䩥 < a\-belt\-for\-horse;
+䨻 < roar\-of\-thunders;
+䨴 < gathering\-clouds;
+䨳 < the\-rain\-stopped;
+䨏 < sound\-of\-raining;
+䨊 < a\-flock\-of\-birds;
+䧡 < a\-fortified\-wall;
+貶義 < derogatory\-sense;
+䧄 < name\-of\-a\-person;
+䦕 < bang\-of\-the\-door;
+䥛 < a\-kind\-of\-sickle;
+長度指示符 < length\-indicator;
+作法 < course\-of\-action;
+䣮 < smell\-of\-alcohol;
+䣫 < soured\-bean\-curd;
+䢞 < rows\-and\-columns;
+䡮 < trace\-of\-a\-wheel;
+䡢 < a\-small\-carriage;
+演員 < actor\-or\-actress;
+䠻 < to\-bend\-the\-body;
+鑒別 < to\-differentiate;
+䟋 < to\-press\-forward;
+保密 < maintain\-secrecy;
+䞌 < to\-lose\-in\-trade;
+䝋 < a\-little\-of\-pigs;
+䝇 < grunting\-of\-pigs;
+䛏 < to\-call\-somebody;
+䛎 < to\-shout\-in\-rage;
+䛂 < to\-separate\-from;
+䚔 < to\-look\-suddenly;
+䚒 < eyesight\-blurred;
+䚃 < to\-realize\-fully;
+借助 < to\-get\-help\-from;
+䙭 < to\-lift\-or\-raise;
+電話信號 < telephone\-signal;
+䘋 < a\-kind\-of\-insect;
+民主黨 < democratic\-party;
+䗏 < name\-of\-a\-insect;
+䖯 < poisonous\-insect;
+䖐 < sound\-of\-a\-tiger;
+甘地 < \(mahatma\)\-gandhi;
+仿真服務器 < emulation\-server;
+䒣 < lush\-or\-delicate;
+䑸 < a\-group\-of\-boats;
+䑅 < dizzy\-and\-sleepy;
+䐨 < back\-of\-the\-foot;
+䏒 < half\-of\-the\-body;
+䏏 < signs\-and\-groans;
+䎯 < winter\-ploughing;
+䎂 < colorful\-feather;
+電視劇 < tv\-drama\-program;
+䋤 < plain\-white\-silk;
+䋔 < to\-band\-together;
+䉷 < a\-feather\-screen;
+䉉 < a\-writing\-tablet;
+䈙 < bamboo\-to\-wither;
+䈈 < a\-kind\-of\-bamboo;
+注重 < pay\-attention\-to;
+䆿 < to\-talk\-in\-sleep;
+䆲 < a\-spacious\-house;
+䆈 < young\-and\-tender;
+䅼 < a\-kind\-of\-grains;
+䅺 < grain\-in\-the\-ear;
+輻射波 < radiation\-\(wave\);
+懸掛 < \(car\)\-suspension;
+䂪 < hard\-barren\-land;
+䀃 < a\-kind\-of\-vessel;
+㾦 < scab\-over\-a\-sore;
+㾁 < walking\-like\-mad;
+㽮 < a\-point\-of\-light;
+㽊 < cracking\-of\-tile;
+㻒 < red\-colored\-jade;
+㻁 < a\-kind\-of\-jasper;
+不謝 < don''t\-mention\-it;
+㺵 < black\-jade\-stone;
+㺴 < name\-of\-a\-spirit;
+㺦 < a\-running\-animal;
+㹺 < dog\-to\-take\-food;
+㹇 < a\-kind\-of\-cattle;
+㸣 < in\-ancient\-china;
+本義 < original\-meaning;
+㶾 < tough\-and\-honest;
+㶍 < name\-of\-a\-stream;
+伴星 < companion\-\(star\);
+保全 < save\-from\-damage;
+㴧 < of\-flowing\-water;
+威爾士語 < welsh\-\(language\);
+抄件 < duplicate\-\(copy\);
+㳽 < a\-watery\-expanse;
+㱶 < a\-swellen\-corpse;
+㱭 < an\-infertile\-egg;
+㰤 < to\-laugh\-hertily;
+㰛 < name\-of\-a\-county;
+㰅 < eaves\-of\-a\-house;
+㯕 < sticks\-or\-frames;
+㯃 < the\-varnish\-tree;
+男子籃球 < men''s\-basketball;
+㮓 < an\-extreme\-limit;
+㭺 < the\-cherry\-apple;
+聯邦大樓 < federal\-building;
+㪭 < to\-draw\-together;
+㪖 < sound\-of\-beating;
+普通問題 < common\-questions;
+㨼 < to\-take\-by\-force;
+罷課 < student''s\-strike;
+㧺 < a\-finger\-wrapper;
+輸送媒介 < transport\-medium;
+㦜 < to\-move\-the\-mind;
+應戰 < face\-a\-challenge;
+核威 < nuclear\-strength;
+㢰 < to\-stretch\-a\-bow;
+虜獲 < capture\-\(people\);
+㡽 < depraved\-talking;
+㡉 < a\-kind\-of\-fabric;
+㠧 < a\-little\-slanted;
+㠎 < a\-lofty\-mountain;
+本票 < cashier''s\-cheque;
+防衛武器 < defensive\-weapon;
+㝫 < shape\-of\-the\-sky;
+㝪 < a\-slanting\-house;
+㝩 < spaciously\-rooms;
+過份簡單化 < oversimplication;
+㜴 < dark\-and\-obscure;
+㜝 < to\-cherish\-anger;
+㜈 < a\-beaugiful\-face;
+體育之窗 < window\-on\-sports;
+書寫語言 < written\-language;
+㚜 < with\-great\-power;
+㚗 < with\-a\-big\-mouth;
+㚇 < draw\-the\-feet\-up;
+㙞 < a\-small\-mountain;
+㙎 < breach\-of\-a\-tank;
+㙅 < a\-walled\-viliage;
+㙀 < a\-vegetable\-plot;
+㗻 < baby''s\-answering;
+㗙 < to\-shout\-or\-bawl;
+㕭 < to\-bark\-as\-a\-dog;
+㕩 < sound\-of\-tapping;
+安徽 < anhui\-\(province\);
+㕇 < rocks\-collapsing;
+㔑 < an\-incised\-wound;
+商業化 < to\-commercialize;
+㒭 < an\-elder\-brother;
+㒁 < of\-great\-stature;
+站台 < railway\-platform;
+共享帶寬 < shared\-bandwidth;
+㐀 < hillock\-or\-mound;
+文化障礙 < cultural\-barrier;
+直接影響 < direct\-influence;
+與此同時 < at\-the\-same\-time;
+主要來源 < principle\-source;
+人民公社 < people''s\-commune;
+獲益 < obtain\-a\-benefit;
+下面請看 < please\-see\-below;
+今昔 < past\-and\-present;
+板栗 < chinese\-chestnut;
+吸管 < \(drinking\)\-straw;
+家務 < household\-duties;
+金融風波 < financial\-crisis;
+開幕式 < opening\-ceremony;
+實習生 < intern\-\(student\);
+民間 < among\-the\-people;
+婚禮 < wedding\-ceremony;
+警衛 < \(security\)\-guard;
+知識工程師 < knowledge\-worker;
+國賓館 < state\-guesthouse;
+乾杯 < to\-drink\-a\-toast;
+猿猴 < apes\-and\-monkeys;
+網絡協議 < network\-protocol;
+並激 < shunt\-excitation;
+量綱 < dimension\-\(unit\);
+質問 < \(ask\-a\)\-question;
+蒐集 < to\-gather\-\(data\);
+三千到五千萬 < 30\-to\-50\-million;
+不至於 < cannot\-go\-so\-far;
+暑瘟 < tropical\-disease;
+博覽 < read\-extensively;
+深入 < penetrate\-deeply;
+丹桂 < orange\-osmanthus;
+板壁 < wooden\-partition;
+某人 < a\-certain\-person;
+月曆 < monthly\-calendar;
+治病 < treat\-an\-illness;
+十誡 < ten\-commandments;
+白衣戰士 < warrior\-in\-white;
+安如磐石 < as\-solid\-as\-rock;
+外長 < foreign\-minister;
+百分點 < percentage\-point;
+配藥 < dispense\-\(drugs\);
+功能集 < function\-library;
+字串 < character\-string;
+故障排除 < fault\-resolution;
+金融改革 < financial\-reform;
+一個中國政策 < one\-china\-policy;
+化學戰 < chemical\-warfare;
+大多數 < \(great\)\-majority;
+大選 < general\-election;
+唐代 < the\-tang\-dynasty;
+性病 < venereal\-disease;
+君權 < monarchial\-power;
+雌性接口 < female\-connector;
+藏文 < tibetan\-language;
+心臟移殖 < heart\-transplant;
+菏蘭語 < dutch\-\(language\);
+一年多 < more\-than\-a\-year;
+遙控操作 < remote\-operation;
+簡單的說 < to\-put\-it\-simply;
+光接收器 < optical\-receiver;
+機械語言 < machine\-language;
+胡志明市 < ho\-chi\-minh\-city;
+讀物 < reading\-material;
+邊防 < frontier\-defence;
+共和黨 < republican\-party;
+脖頸兒 < back\-of\-the\-neck;
+向東 < towards\-the\-east;
+大無畏 < utterly\-fearless;
+集錦 < best\-of\-the\-best;
+罷教 < teacher''s\-strike;
+外語 < foreign\-language;
+課表 < school\-timetable;
+誤解 < misunderstanding;
+不知所云 < not\-know\-what\-sb;
+不忙 < there''s\-no\-hurry;
+超高速 < ultra\-high\-speed;
+集郵 < stamp\-collecting;
+廠長 < factory\-director;
+變法 < political\-reform;
+波折 < twists\-and\-turns;
+群島 < group\-of\-islands;
+太陽微系統公司 < sun\-microsystems;
+聯席會議 < joint\-conference;
+交換網路 < switched\-network;
+犯法 < to\-break\-the\-law;
+不少 < not\-\(just\)\-a\-few;
+年齡 < \(a\-person''s\)\-age;
+性接觸 < sexual\-encounter;
+比翼 < fly\-wing\-to\-wing;
+骨幹網路 < backbone\-network;
+軟件企業 < software\-company;
+拿手菜 < specialty\-\(dish\);
+施洗約翰 < john\-the\-baptist;
+神奇 < magical\-mystical;
+禁品 < contraband\-goods;
+尼希米記 < book\-of\-nehemiah;
+報紙報導 < newspaper\-report;
+最先 < \(the\)\-very\-first;
+明淨 < bright\-and\-clean;
+重慶 < chongqing\-\(city\);
+婆婆 < husband''s\-mother;
+互操性 < interoperability;
+吃完 < to\-finish\-eating;
+逼近 < press\-on\-towards;
+報館 < newspaper\-office;
+電纜 < \(electric\)\-cable;
+功能群 < functional\-group;
+狀態 < state\-of\-affairs;
+中介 < agent\-\(computer\);
+不光 < not\-the\-only\-one;
+暑天 < hot\-\(summer\)\-day;
+反對 < to\-fight\-against;
+不久 < not\-long\-\(after\);
+離開北京 < to\-leave\-beijing;
+一輩子 < \(for\)\-a\-lifetime;
+睨 < look\-askance\-at;
+怎 < what\?\-why\?\-how\?;
+收 < gather\-together;
+党 < political\-party;
+版 < printing\-blocks;
+季 < quarter\-of\-year;
+牡 < male\-of\-animals;
+診 < examine\-patient;
+姑 < father''s\-sister;
+褓 < swaddling\-cloth;
+馆 < public\-building;
+漿 < any\-thick\-fluid;
+雄 < male\-of\-species;
+亿 < hundred\-million;
+固 < to\-become\-solid;
+溪 < mountain\-stream;
+虞 < concerned\-about;
+嗚 < sound\-of\-crying;
+薇 < osmunda\-regalis;
+戏 < theatrical\-play;
+召 < imperial\-decree;
+瑞 < felicitous\-omen;
+鬢 < hair\-on\-temples;
+僧 < buddhist\-priest;
+檜 < chinese\-cypress;
+檎 < small\-red\-apple;
+驅 < spur\-a\-horse\-on;
+臟 < internal\-organs;
+圳 < furrow\-in\-field;
+繻 < fine\-silk\-guaze;
+孟 < first\-in\-series;
+縋 < climb\-down\-rope;
+閤 < small\-side\-door;
+斎 < vegetarian\-diet;
+盯 < rivet\-gaze\-upon;
+粟 < unhusked\-millet;
+籐 < climbing\-plants;
+掻 < scratch\-lightly;
+俘 < prisoner\-of\-war;
+挾 < clasp\-under\-arm;
+媳 < daughter\-in\-law;
+宙 < time\-as\-concept;
+卜 < fortune\-telling;
+帖 < invitation\-card;
+逞 < indulge\-oneself;
+揪 < grasp\-with\-hand;
+仑 < logical\-reasons;
+煞 < malignant\-deity;
+鳌 < huge\-sea\-turtle;
+瞩 < watch\-carefully;
+疚 < chronic\-disease;
+蔓 < creeping\-plants;
+骏 < excellent\-horse;
+闽 < fujian\-province;
+袅 < curling\-upwards;
+辐 < spokes\-of\-wheel;
+琉 < sparkling\-stone;
+舜 < legendary\-ruler;
+轧 < crush\-by\-weight;
+滇 < yunnan\-province;
+桓 < variety\-of\-tree;
+棠 < crab\-apple\-tree;
+吮 < suck\-with\-mouth;
+蜷 < creep\-like\-worm;
+枷 < cangue\-scaffold;
+羲 < ancient\-emperor;
+孚 < brood\-over\-eggs;
+皑 < brilliant\-white;
+缥 < light\-blue\-silk;
+诌 < play\-with\-words;
+泾 < name\-of\-a\-river;
+觎 < desire\-strongly;
+玺 < imperial\-signet;
+卞 < to\-be\-impatient;
+辔 < bridle\-of\-horse;
+趔 < not\-progressing;
+徜 < walking\-and\-fro;
+荠 < water\-chestnuts;
+汞 < element\-mercury;
+畿 < imperial\-domain;
+舂 < grind\-in\-mortar;
+籴 < purchase\-grains;
+穰 < stalks\-of\-grain;
+嗄 < hoarse\-of\-voice;
+渚 < small\-sand\-bank;
+砝 < balance\-weights;
+杼 < shuttle\-of\-loom;
+龃 < irregular\-teeth;
+勐 < imperial\-degree;
+矸 < a\-rock\-or\-cliff;
+蕨 < pteris\-aquilina;
+豉 < fermented\-beans;
+徭 < conscript\-labor;
+麈 < species\-of\-deer;
+蕤 < drooping\-leaves;
+绡 < raw\-silk\-fabric;
+芨 < name\-of\-a\-plant;
+苣 < kind\-of\-lettuce;
+碛 < sand\-and\-gravel;
+莒 < hemp\-like\-plant;
+萁 < kind\-of\-grasses;
+眄 < to\-look\-askance;
+囟 < top\-of\-the\-head;
+岣 < a\-hill\-in\-hunan;
+嗾 < to\-set\-a\-dog\-on;
+荜 < species\-of\-bean;
+糁 < a\-grain\-of\-rice;
+粝 < unpolished\-rice;
+裰 < to\-mend\-clothes;
+薨 < death\-of\-prince;
+茑 < the\-convovulvus;
+翮 < stem\-of\-feather;
+艟 < ancient\-warship;
+鼯 < flying\-squirrel;
+砩 < name\-of\-a\-stone;
+炻 < a\-kind\-of\-china;
+檫 < sassafras\-tzumu;
+狴 < a\-kind\-of\-tapir;
+高效率 < high\-efficiency;
+天父 < heavenly\-father;
+幾乎完全 < almost\-entirely;
+特徵 < characteristics;
+信息時代 < information\-age;
+暑假 < summer\-vacation;
+擺脫 < break\-away\-from;
+半數 < half\-the\-number;
+冰霜 < moral\-integrity;
+勻溜 < even\-and\-smooth;
+原委 < the\-whole\-story;
+產品經理 < product\-manager;
+資料鏈結層 < data\-link\-layer;
+軍事威脅 < military\-threat;
+特寫 < feature\-article;
+春天 < spring\-\(season\);
+網路服務 < network\-service;
+研究中心 < research\-center;
+止痛 < to\-relieve\-pain;
+前不久 < not\-long\-before;
+叛亂 < armed\-rebellion;
+文檔 < \(computer\)\-file;
+崇拜儀式 < worship\-service;
+緬甸 < myanmar\-\(burma\);
+方興未艾 < to\-be\-unfolding;
+雙邊貿易 < bilateral\-trade;
+失望 < be\-disappointed;
+軍事部門 < military\-branch;
+網站 < network\-station;
+除此之外 < apart\-from\-this;
+太陽公司 < sun\-corporation;
+外國資本 < foreign\-capital;
+開門 < open\-\(the\)\-door;
+生產隊 < production\-team;
+經管 < be\-in\-charge\-of;
+用戶線 < subscriber\-line;
+美國人 < american\-person;
+半天 < half\-of\-the\-day;
+語族 < language\-branch;
+往年 < in\-former\-years;
+日報 < daily\-newspaper;
+光電 < opto\-electrical;
+白鐵 < galvanized\-iron;
+雅歌 < song\-of\-solomon;
+彼岸 < the\-other\-shore;
+配合 < coordinate\-with;
+報系 < newspaper\-chain;
+豐富多彩 < richly\-colorful;
+標量 < scalar\-quantity;
+南北 < north\-and\-south;
+比容 < specific\-volume;
+看上去 < it\-would\-appear;
+盈虧 < profit\-and\-loss;
+勸導 < try\-to\-convince;
+陣營 < group\-of\-people;
+幾百 < several\-hundred;
+大寫 < capital\-letters;
+過活 < live\-one''s\-life;
+牌位 < memorial\-tablet;
+早些 < \(a\-bit\)\-earlier;
+課外 < extracurricular;
+零等待狀態 < zero\-wait\-state;
+收拾 < to\-put\-in\-order;
+不白之冤 < unrighted\-wrong;
+網段 < network\-segment;
+弟弟 < younger\-brother;
+遲早 < sooner\-or\-later;
+戒備森嚴 < heavily\-guarded;
+矮小 < short\-and\-small;
+半途而廢 < give\-up\-halfway;
+比價 < price\-relations;
+龑 < high\-and\-bright;
+新任 < newly\-appointed;
+霸佔 < forcibly\-occupy;
+鼕 < rattle\-of\-drums;
+幾十億 < several\-billion;
+病魔 < serious\-illness;
+常用 < in\-common\-usage;
+冰磚 < ice\-cream\-brick;
+鴒 < species\-of\-lark;
+白菜 < chinese\-cabbage;
+鴂 < the\-tailor\-bird;
+鳻 < the\-wild\-pigeon;
+鳓 < chinese\-herring;
+鱡 < the\-cuttle\-fish;
+鱅 < a\-kind\-of\-tench;
+不待說 < needless\-to\-say;
+批量生產 < to\-mass\-produce;
+魰 < the\-flying\-fish;
+在很多方面 < in\-many\-aspects;
+髾 < tail\-of\-a\-comet;
+髴 < disheveled\-hair;
+操作速率 < operating\-speed;
+強加 < impose\-by\-force;
+騘 < a\-piebald\-horse;
+饇 < to\-eat\-too\-much;
+颻 < floating\-in\-air;
+颮 < storm\-whirlwind;
+外事 < foreign\-affairs;
+聯合發表 < joint\-statement;
+邊地 < border\-district;
+韞 < an\-orange\-color;
+鞴 < saddle\-up\-horse;
+靸 < a\-child''s\-shoes;
+雱 < snowing\-heavily;
+舌面 < blade\-of\-tongue;
+創記錄 < to\-set\-a\-record;
+著作 < a\-literary\-work;
+白米 < \(polished\)\-rice;
+瀕臨 < on\-the\-verge\-of;
+不完全葉 < incomplete\-leaf;
+選單 < \(software\)\-menu;
+執法 < law\-enforcement;
+鎤 < sound\-of\-a\-bell;
+不名數 < abstract\-number;
+進展 < to\-make\-headway;
+為此 < for\-this\-reason;
+醾 < unfiltered\-wine;
+核反應堆 < nuclear\-reactor;
+經濟改革 < economic\-reform;
+鄹 < name\-of\-a\-state;
+廠史 < factory\-history;
+光磁 < magneto\-optical;
+隘口 < \(mountain\)\-pass;
+網址 < \(internet\)\-site;
+畫面 < \(picture\)\-frame;
+菜地 < vegetable\-field;
+畜類 < domestic\-animal;
+躀 < to\-stumble\-over;
+總經理 < general\-manager;
+趮 < easily\-provoked;
+半壁江山 < half\-of\-country;
+抱養 < adopt\-\(a\-child\);
+城樓 < city\-gate\-tower;
+諡 < posthumous\-name;
+採種 < seed\-collecting;
+俄巴底亞書 < book\-of\-obadiah;
+訒 < hesitate\-to\-say;
+古典音樂 < classical\-music;
+花白 < grizzled\-\(hair\);
+不可多得 < hard\-to\-come\-by;
+襼 < ''kimono''\-sleeve;
+襌 < unlined\-garment;
+褧 < unlined\-clothes;
+重新開始 < resume\,\-restart;
+屍體 < \(lifeless\)\-body;
+圖簽 < \(computer\)\-icon;
+巴望 < look\-forward\-to;
+螚 < eristalis\-tenax;
+層雲 < stratus\-\(cloud\);
+數百萬 < several\-million;
+拼起來 < to\-put\-together;
+籌碼 < bargaining\-chip;
+藶 < a\-kind\-of\-plant;
+蕢 < edible\-amaranth;
+蕍 < alisma\-plantags;
+蔾 < kind\-of\-bramble;
+蒨 < lush\-vegetation;
+蒓 < an\-edible\-water;
+電子郵件 < electronic\-mail;
+降價 < price\-reduction;
+葑 < the\-rape\-turnip;
+米粉肉 < rice\-flour\-meat;
+標樁 < \(marking\)\-stake;
+閉會 < close\-a\-meeting;
+艅 < a\-despatch\-boat;
+純屬 < pure\-and\-simple;
+光榮 < honor\-and\-glory;
+腢 < the\-collar\-bone;
+辦學 < to\-run\-a\-school;
+標杆 < surveyor''s\-pole;
+幣制 < currency\-system;
+報到 < report\-for\-duty;
+罿 < net\-catch\-birds;
+經濟前途 < economic\-future;
+年份 < particular\-year;
+工讀學校 < the\-reformatory;
+基地 < \(military\)\-base;
+嚴重關切 < serious\-concern;
+光明 < bright\-\(future\);
+高技術 < high\-technology;
+保釋 < release\-on\-bail;
+絍 < to\-lay\-the\-warp;
+經濟危機 < economic\-crisis;
+射頻 < radio\-frequency;
+動態助詞 < aspect\-particle;
+閉音節 < closed\-syllable;
+簔 < a\-coat\-raincoat;
+篰 < a\-bamboo\-basket;
+鬥爭 < struggle\-\(with\);
+裡根 < \(ronald\)\-reagan;
+穄 < panicled\-millet;
+禋 < offer\-sacrifice;
+磪 < a\-high\-mountain;
+暴跳如雷 < stamp\-with\-fury;
+抗衡 < contend\-against;
+級別 < \(military\)\-rank;
+筆誤 < a\-slip\-of\-a\-pen;
+八寶 < eight\-treasures;
+百年 < a\-hundred\-years;
+以西結書 < book\-of\-ezekiel;
+摘借 < to\-borrow\-money;
+化學武器 < chemical\-weapon;
+瘈 < prolonged\-fever;
+瘃 < sores\-from\-cold;
+痾 < chronic\-illness;
+痵 < a\-heart\-symptom;
+痮 < a\-swelled\-belly;
+痠 < aching\-of\-limbs;
+痁 < chronic\-malaria;
+畬 < reclaimed\-field;
+長官 < senior\-official;
+虛電路 < virtual\-circuit;
+登記用戶 < registered\-user;
+種族主義者 < racist\-\(person\);
+琭 < jade\-like\-stone;
+從去年 < since\-last\-year;
+珧 < mother\-of\-pearl;
+入境 < enter\-a\-country;
+珇 < carving\-on\-jade;
+嚴重問題 < serious\-problem;
+臂紗 < \(black\)\-armband;
+玟 < streaks\-in\-jade;
+當務之急 < urgent\-priority;
+獱 < a\-kind\-of\-otter;
+軍校 < military\-school;
+狫 < name\-of\-a\-tribe;
+軟件系統 < software\-system;
+牄 < to\-walk\-rapidly;
+熓 < the\-bank\-a\-fire;
+焵 < to\-temper\-steel;
+把舵 < hold\-the\-rudder;
+菲律賓 < the\-philippines;
+被捕 < be\-under\-arrest;
+瀞 < pool\-in\-a\-river;
+潙 < river\-in\-shanxi;
+網絡瀏覽器 < network\-browser;
+滎 < county\-in\-henan;
+本族語 < native\-language;
+泩 < rising\-of\-water;
+購物中心 < shopping\-center;
+沚 < islet\-in\-stream;
+百十 < a\-hundred\-or\-so;
+坐好 < to\-sit\-properly;
+絆腳石 < stumbling\-block;
+感染者 < infected\-person;
+多樣化 < diversification;
+榡 < quercus\-dentata;
+壁壘森嚴 < closely\-guarded;
+椺 < beam\-of\-a\-house;
+網管員 < network\-manager;
+帖撒羅尼迦後書 < 2\-thessalonians;
+錦雞 < golden\-pheasant;
+柎 < calyx\-of\-flower;
+柁 < large\-tie\-beams;
+枬 < an\-even\-grained;
+自殺 < to\-kill\-oneself;
+朣 < the\-rising\-moon;
+瑪拉基書 < book\-of\-malachi;
+高昂 < in\-high\-spirits;
+貿易夥伴 < trading\-partner;
+穿過 < to\-pass\-through;
+備戰 < prepare\-for\-war;
+月份會議 < monthly\-meeting;
+摻 < a\-delicate\-hand;
+安身 < make\-one''s\-home;
+游說 < drum\-up\-support;
+至於 < go\-so\-far\-as\-to;
+戄 < to\-be\-in\-awe\-of;
+研究報告 < research\-report;
+先進武器 < advanced\-weapon;
+生物 < living\-creature;
+戶籍 < census\-register;
+大發雷霆 < extremely\-angry;
+徬 < to\-wander\-about;
+弴 < red\-lacquer\-bow;
+美國政府 < u\.s\.\-government;
+校舍 < school\-building;
+巹 < nuptial\-winecup;
+不干涉 < noninterference;
+善良 < good\-and\-honest;
+嵎 < mountain\-recess;
+亞爾發和奧米加 < alpha\-and\-omega;
+峞 < high\-and\-uneven;
+塞爾特語 < celtic\-language;
+核武庫 < nuclear\-arsenal;
+客戶機軟件 < client\-software;
+措辭強硬 < strongly\-worded;
+軍備 < \(military\)\-arms;
+首腦 < head\-\(of\-state\);
+安葬 < bury\-\(the\-dead\);
+自動售貨機 < vending\-machine;
+夲 < advance\-quickly;
+中美洲 < central\-america;
+極力 < do\-at\-all\-costs;
+跑步 < to\-walk\-quickly;
+坴 < a\-clod\-of\-earth;
+喣 < to\-breathe\-upon;
+唲 < forced\-laughter;
+公司會議 < company\-meeting;
+貶詞 < derogatory\-term;
+互連 < interconnection;
+厜 < a\-mountain\-peak;
+天主教 < catholic\-church;
+匉 < noise\-of\-waters;
+匄 < to\-beg\-for\-alms;
+改變形像 < transfiguration;
+劘 < make\-into\-mince;
+悲鳴 < utter\-sad\-calls;
+滿意 < to\-be\-satisfied;
+海運 < shipping\-by\-sea;
+留學 < to\-study\-abroad;
+金裡奇 < \(newt\)\-gingrich;
+便條 < \(informal\)\-note;
+傽 < terror\-stricken;
+甚或 < so\-much\-so\-that;
+佔 < occupy\-by\-force;
+山峰 < \(mountain\)\-peak;
+溫柔 < gentle\-and\-soft;
+乸 < feminine\-suffix;
+高中 < high\-and\-middle;
+百兒八十 < about\-a\-hundred;
+帖撒羅尼迦前書 < 1\-thessalonians;
+䶡 < sound\-of\-biting;
+䶎 < sound\-of\-breath;
+胃病 < stomach\-trouble;
+䴾 < to\-grind\-barley;
+䴮 < cakes\-pf\-leaven;
+多模光纖 < multimode\-fiber;
+同齡 < of\-the\-same\-age;
+軟件市場 < software\-market;
+校園骨幹 < campus\-backbone;
+䯄 < a\-piebalk\-horse;
+䮽 < bit\-for\-a\-horse;
+䮵 < name\-of\-a\-horse;
+䮱 < a\-kind\-of\-beast;
+䮧 < long\-hair\-horse;
+䮢 < a\-walking\-horse;
+䮎 < a\-running\-horse;
+䭼 < dark\-blue\-horse;
+䬫 < clarfied\-butter;
+䬁 < a\-light\-cyclone;
+吸音 < sound\-absorbing;
+沒有聯繫 < to\-be\-unrelated;
+䪮 < beautiful\-sound;
+䪕 < to\-wrap\-or\-band;
+䩹 < to\-repair\-shoes;
+䩒 < dressed\-leather;
+麻醉 < to\-anaesthetize;
+䩄 < to\-face\-to\-face;
+䨢 < a\-passing\-cloud;
+䨖 < to\-stop\-raining;
+䨀 < to\-lay\-in\-grain;
+䧯 < name\-of\-a\-place;
+網絡規劃人員 < network\-planner;
+䦫 < inside\-the\-door;
+投奔 < to\-seek\-shelter;
+䥗 < a\-branding\-iron;
+䤱 < a\-solemn\-pledge;
+䣶 < unstrained\-wine;
+例會 < regular\-meeting;
+共產黨 < communist\-party;
+䢦 < to\-lead\-the\-way;
+䢖 < to\-be\-scattered;
+䢁 < tire\-of\-a\-wheel;
+䡻 < shake\-of\-a\-cart;
+䡨 < connected\-carts;
+餅肥 < cake\-fertilizer;
+䡐 < to\-move\-swiftly;
+世界最大 < world''s\-largest;
+䠵 < to\-wear\-clothes;
+䠨 < walking\-rapidly;
+尖銳批評 < sharp\-criticism;
+不見得 < not\-necessarily;
+䝯 < to\-change\-hands;
+䝐 < a\-castrated\-hog;
+䜄 < slow\-on\-talking;
+䛵 < to\-teach\-orally;
+䛟 < wild\-statements;
+䛔 < to\-hold\-in\-hand;
+暴雨 < torrential\-rain;
+䚦 < slanted\-corners;
+䚥 < to\-adjust\-a\-bow;
+䙻 < to\-steal\-a\-look;
+䙨 < to\-wrap\-or\-bind;
+䙝 < under\-garrments;
+䗾 < corbicula\-leana;
+䖼 < the\-dung\-beetle;
+䖙 < a\-resting\-tiger;
+䖉 < to\-roar\-or\-howl;
+䕙 < to\-set\-in\-order;
+䒌 < dark\-blue\-color;
+䏲 < protruded\-bones;
+便宴 < informal\-dinner;
+䎳 < lose\-of\-the\-ear;
+䎉 < to\-walk\-swiftly;
+上述 < above\-mentioned;
+䋷 < a\-kind\-of\-thick;
+䊵 < young\-and\-small;
+䊗 < a\-kind\-of\-grain;
+䊉 < preserved\-fruit;
+䉧 < sound\-of\-bamboo;
+賀年片 < new\-year''s\-card;
+䅷 < an\-ear\-of\-grain;
+䅰 < a\-kind\-of\-grass;
+標準化 < standardization;
+䄮 < dark\-rice\-plant;
+䄕 < god\-of\-the\-land;
+電腦系統 < computer\-system;
+䃷 < a\-kind\-of\-stone;
+䃒 < poor\-and\-barren;
+䁴 < keep\-on\-looking;
+䁳 < to\-lose\-one\-eye;
+實彈 < live\-ammunition;
+貨幣危機 < monetary\-crisis;
+䀉 < food\-containers;
+㿱 < dry\-and\-decayed;
+㾩 < malignant\-boils;
+共享以太網絡 < shared\-ethernet;
+產值 < value\-of\-output;
+暗送秋波 < make\-eyes\-at\-sb;
+使滿意 < to\-make\-content;
+祝賀 < to\-congratulate;
+㼕 < pulp\-of\-a\-melon;
+㼔 < a\-kind\-of\-melon;
+不鏽鋼 < stainless\-steel;
+㼂 < a\-crack\-in\-jade;
+㻍 < name\-of\-a\-sword;
+㺌 < endless\-barking;
+以為 < consider\-\(that\);
+㹧 < fox\-like\-animal;
+㸱 < hornless\-cattle;
+㸩 < to\-desist\-an\-ox;
+核彈 < nuclear\-warhead;
+㸑 < a\-cooking\-stove;
+印度人 < indian\-\(person\);
+上課 < to\-attend\-class;
+奧運村 < olympic\-village;
+㷍 < a\-chemical\-term;
+符合 < in\-keeping\-with;
+技倆 < tricky\-maneuver;
+暗適應 < dark\-adaptation;
+數位網路 < digital\-network;
+㳿 < rolling\-billows;
+㳗 < bank\-of\-a\-river;
+㲔 < woolen\-textiles;
+㱎 < cannot\-be\-known;
+㰬 < shortwindedness;
+㰗 < a\-kind\-of\-maple;
+㰈 < nice\-and\-pretty;
+㯱 < an\-enlarged\-bag;
+㯤 < the\-jujube\-tree;
+㯔 < to\-hull\-heavily;
+泰語 < thai\-\(language\);
+㮡 < to\-light\-a\-fire;
+寵壞 < spoil\-\(a\-child\);
+㭤 < the\-convolvulus;
+交界 < common\-boundary;
+虛擬網絡 < virtual\-network;
+光明日報 < guangming\-daily;
+㫠 < a\-kind\-of\-water;
+㪫 < wise\-and\-clever;
+歷史久遠 < ancient\-history;
+㧎 < forked\-branches;
+老百姓 < ordinary\-people;
+㥞 < to\-think\-deeply;
+㥛 < with\-expedition;
+㢞 < rooms\-connected;
+㢍 < a\-long\-verabdah;
+夫妻店 < family\-run\-shop;
+㡲 < tiles\-on\-a\-roof;
+㡀 < ragged\-clothing;
+㟔 < steep\-and\-lofty;
+㝥 < have\-a\-nighmare;
+三萬 < thirty\-thousand;
+㝅 < to\-give\-suck\-to;
+㜲 < to\-have\-surplus;
+貨源 < supply\-of\-goods;
+㛰 < to\-marry\-a\-wife;
+㚦 < a\-charming\-girl;
+㙼 < a\-military\-wall;
+窗帘 < window\-curtains;
+㙗 < a\-lump\-of\-earth;
+㘺 < cultivated\-land;
+期票 < promissory\-note;
+㗿 < to\-laugh\-loudly;
+㕲 < to\-gag\-or\-bribe;
+㕘 < to\-take\-part\-in;
+㒟 < with\-a\-charming;
+口語 < spoken\-language;
+斯拉夫語 < slavic\-language;
+私營 < privately\-owned;
+外國公司 < foreign\-company;
+寒假 < winter\-vacation;
+哀歌 < a\-mournful\-song;
+兒化韻 < retroflex\-final;
+牽連 < \(be\)\-implicated;
+性行 < sexual\-activity;
+學士 < bachelor\-degree;
+負擔 < \(bear\-a\)\-burden;
+商業中心 < business\-center;
+一秘 < first\-secretary;
+藥瓶 < medicine\-bottle;
+慚愧 < \(to\-be\)\-ashamed;
+人才 < talented\-person;
+不甘 < unreconciled\-to;
+不相上下 < equally\-matched;
+班子 < organized\-group;
+每隔 < at\-intervals\-of;
+愛戴 < love\-and\-esteem;
+愛戀 < be\-in\-love\-with;
+機密文件 < secret\-document;
+杭州 < hangzhou\-\(city\);
+問世 < to\-be\-published;
+悲泣 < weep\-with\-grief;
+法理 < legal\-principle;
+秩序 < order\-\(orderly\);
+網絡打印機 < network\-printer;
+名片 < \(business\)\-card;
+旅費 < travel\-expenses;
+財團 < financial\-group;
+沙石 < sand\-and\-stones;
+禁果 < forbidden\-fruit;
+郵遞 < to\-send\-by\-mail;
+板板六十四 < unaccommodating;
+析出 < to\-seperate\-out;
+第一個層次 < the\-first\-stage;
+具體計劃 < a\-concrete\-plan;
+奔襲 < long\-range\-raid;
+板刷 < scrubbing\-brush;
+服從 < obey\-\(an\-order\);
+施行 < to\-put\-in\-place;
+莫尼卡萊溫斯基 < monica\-lewinsky;
+文書處理 < word\-processing;
+罰款 < \(impose\-a\)\-fine;
+雌雄 < male\-and\-female;
+邊音 < lateral\-\(sound\);
+母親 < mother\-\(formal\);
+有聯繫 < to\-be\-connected;
+磁盤 < \(computer\)\-disk;
+預防措施 < protective\-step;
+礦業 < mining\-industry;
+公然表示 < to\-state\-openly;
+流失 < be\-drained\-away;
+引起 < to\-give\-rise\-to;
+𣎴 < stump\-of\-a\-tree;
+證物 < exhibit\-\(legal\);
+縫補 < darn\-\(clothing\);
+編選 < select\-and\-edit;
+負債纍纍 < heavily\-in\-debt;
+審判長 < presiding\-judge;
+上學 < to\-go\-to\-school;
+頻帶 < frequency\-range;
+政見 < political\-views;
+悲嘆 < sigh\-mournfully;
+半生 < half\-a\-lifetime;
+博物 < natural\-science;
+經濟體制 < economic\-system;
+不過爾爾 < merely\-mediocre;
+盜版者 < software\-pirate;
+大部份 < \(in\)\-large\-part;
+流感病毒 < influenza\-virus;
+郵票 < \(postage\)\-stamp;
+恰好 < as\-it\-turns\-out;
+氣溫 < air\-temperature;
+矮胖 < short\-and\-stout;
+語系 < language\-system;
+變形 < be\-out\-of\-shape;
+南海 < south\-china\-sea;
+冷氣機 < air\-conditioner;
+美元 < american\-dollar;
+世人 < \(common\)\-people;
+名單 < list\-\(of\-names\);
+電磁 < electromagnetic;
+民權 < civil\-liberties;
+據說 < it\-is\-said\-that;
+原性 < original\-nature;
+衛生官員 < health\-official;
+躅 < walk\-carefully;
+巴 < greatly\-desire;
+期 < period\-of\-time;
+司 < take\-charge\-of;
+甥 < sister''s\-child;
+屏 < folding\-screen;
+狐 < species\-of\-fox;
+汉 < chinese\-people;
+妹 < younger\-sister;
+企 < plan\-a\-project;
+襖 < outer\-garments;
+壁 < partition\-wall;
+韦 < tanned\-leather;
+潰 < flooding\-river;
+珠 < precious\-stone;
+锋 < point\-of\-spear;
+俗 < social\-customs;
+檐 < eaves\-of\-house;
+骑 < ride\-horseback;
+函 < correspondence;
+魏 < kingdom\-of\-wei;
+枚 < stalk\-of\-shrub;
+仲 < middle\-brother;
+琳 < beautiful\-jade;
+凑 < piece\-together;
+郁 < sweet\-smelling;
+芯 < pith\-from\-rush;
+縞 < white\-raw\-silk;
+旬 < ten\-day\-period;
+綺 < fine\-thin\-silk;
+妨 < interfere\-with;
+骄 < spirited\-horse;
+掴 < box\-one''s\-ears;
+嗯 < final\-particle;
+岭 < mountain\-ridge;
+湘 < hunan\-province;
+銃 < ancient\-weapon;
+铮 < clanging\-sound;
+莹 < luster\-of\-gems;
+僻 < out\-of\-the\-way;
+渺 < endlessly\-long;
+佣 < commission\-fee;
+呛 < choke\-by\-smoke;
+凰 < female\-phoenix;
+闺 < small\-entrance;
+缀 < patch\-together;
+璋 < jade\-plaything;
+拴 < bind\-with\-rope;
+秧 < rice\-seedlings;
+蕃 < foreign\-things;
+鄂 < hubei\-province;
+棱 < squared\-timber;
+梗 < stem\-of\-flower;
+菱 < water\-chestnut;
+镑 < pound\-sterling;
+栩 < species\-of\-oak;
+璞 < unpolished\-gem;
+雯 < cloud\-patterns;
+讷 < slow\-of\-speech;
+狰 < fierce\-looking;
+峦 < mountain\-range;
+湃 < sound\-of\-waves;
+蝗 < kind\-of\-locust;
+皖 < anhui\-province;
+酋 < chief\-of\-tribe;
+壑 < bed\-of\-torrent;
+糯 < glutinous\-rice;
+稷 < god\-of\-cereals;
+塾 < village\-school;
+狩 < winter\-hunting;
+戍 < defend\-borders;
+璀 < lustre\-of\-gems;
+牍 < writing\-tablet;
+镌 < engraving\-tool;
+饯 < farewell\-party;
+鹂 < chinese\-oriole;
+囡 < one''s\-daughter;
+溟 < drizzling\-rain;
+锏 < kind\-of\-rapier;
+屙 < to\-ease\-nature;
+玳 < tortoise\-shell;
+瑭 < a\-kind\-of\-jade;
+杈 < fork\-of\-a\-tree;
+匐 < fall\-prostrate;
+砣 < a\-stone\-roller;
+铢 < unit\-of\-weight;
+骈 < team\-of\-horses;
+噱 < laugh\-heartily;
+盱 < wide\-open\-eyes;
+耄 < elderly\-person;
+榔 < betel\-nut\-tree;
+诤 < to\-expostulate;
+蝮 < venomous\-snake;
+颍 < river\-in\-anhui;
+楝 < melia\-japonica;
+蝼 < a\-mole\-cricket;
+荪 < aromatic\-grass;
+娌 < brother''s\-wife;
+晷 < shadows\-of\-sun;
+嗵 < used\-for\-sound;
+踅 < to\-walk\-around;
+揆 < prime\-minister;
+猕 < macacus\-monkey;
+厝 < cut\-or\-engrave;
+葚 < mulberry\-fruit;
+耒 < handle\-of\-plow;
+俅 < ornamental\-cap;
+菽 < beans\-and\-peas;
+鞯 < saddle\-blanket;
+鼐 < incense\-tripod;
+谰 < accuse\-falsely;
+骱 < joint\-of\-bones;
+謦 < t\-speak\-softly;
+磴 < steps\-on\-ledge;
+婺 < name\-of\-a\-star;
+堍 < side\-of\-bridge;
+桫 < horse\-chestnut;
+漶 < indecipherable;
+孥 < one''s\-children;
+溱 < river\-in\-henan;
+黥 < tattooing\-face;
+躐 < to\-stride\-over;
+蹯 < paws\-of\-animal;
+盍 < what\?\-why\-not\?;
+溆 < river\-in\-hunan;
+磲 < tridacna\-gigas;
+昝 < a\-dual\-pronoun;
+柽 < type\-of\-willow;
+缬 < patterned\-silk;
+驺 < mounted\-escort;
+阊 < gate\-of\-heaven;
+荩 < a\-kind\-of\-weed;
+芎 < a\-kind\-of\-herb;
+鋈 < silver\-plating;
+龅 < teeth\-protrude;
+晡 < late\-afternoon;
+檠 < stand\-for\-lamp;
+逭 < to\-escape\-from;
+操課 < military\-drill;
+伊甸園 < garden\-of\-eden;
+成員國 < member\-country;
+具體問題 < concrete\-issue;
+協會 < an\-association;
+文物 < cultural\-relic;
+通訊 < communications;
+危房 < decrepit\-house;
+特工 < secret\-service;
+電燈 < electric\-light;
+釣魚臺 < diaoyu\-islands;
+北極 < the\-north\-pole;
+複韻母 < compound\-final;
+預付 < pay\-in\-advance;
+國防預算 < defence\-budget;
+殺氣 < murderous\-look;
+磁場 < magnetic\-field;
+裁減軍備 < arms\-reduction;
+牙床 < alveolar\-ridge;
+參加 < to\-participate;
+民意 < public\-opinion;
+出口商品 < export\-product;
+往日 < in\-former\-days;
+勘測 < to\-investigate;
+冰釋 < \(of\-misgivings;
+大樓 < large\-building;
+改革進程 < reform\-process;
+全球資訊網 < world\-wide\-web;
+薄胎瓷器 < eggshell\-china;
+怪人 < strange\-person;
+營業 < to\-do\-business;
+塑膠 < plastic\-cement;
+晚上 < in\-the\-evening;
+散步 < to\-take\-a\-walk;
+識別 < to\-distinguish;
+幀太長 < oversize\-frame;
+擺蕩吊環 < swinging\-rings;
+全球氣候 < global\-climate;
+失控 < out\-of\-control;
+數月 < several\-months;
+往復 < to\-reciprocate;
+對外政策 < foreign\-policy;
+靶場 < shooting\-range;
+糖醋 < sweet\-and\-sour;
+伴生氣 < associated\-gas;
+帳號 < account\-number;
+爪子 < \(animal''s\)\-paw;
+別管 < no\-matter\-\(who;
+進行通信 < to\-communicate;
+刨程 < planing\-length;
+素菜 < vegetable\-dish;
+不咎既往 < not\-censure\-sb;
+開車 < to\-drive\-a\-car;
+煙火 < smoke\-and\-fire;
+轉運 < transportation;
+巡警 < police\-officer;
+校園網絡 < campus\-network;
+數位信號 < digital\-signal;
+放映 < show\-\(a\-movie\);
+物理層 < physical\-layer;
+聯合國 < united\-nations;
+製造 < to\-manufacture;
+利率 < interest\-rates;
+英國人 < british\-person;
+生長激素 < growth\-hormone;
+白熱化 < turn\-white\-hot;
+弱小 < small\-and\-weak;
+敝屣 < worn\-out\-shoes;
+十一月 < eleventh\-month;
+指揮中心 < command\-center;
+矮子 < a\-short\-person;
+原子核 < atomic\-nucleus;
+把兄弟 < sworn\-brothers;
+速決 < quick\-decision;
+關稅 < \(customs\)\-duty;
+白蘇 < common\-perilla;
+比值 < specific\-value;
+電話線路 < telephone\-line;
+基督 < jesus\-\(christ\);
+探路 < to\-find\-a\-path;
+遙控 < remote\-control;
+北斗星 < the\-big\-dipper;
+開玩笑 < to\-play\-a\-joke;
+鸎 < the\-mango\-bird;
+鶗 < a\-kind\-of\-hawk;
+以太網絡幀 < ethernet\-frame;
+遙感 < remote\-sensing;
+白色 < white\-\(colour\);
+鮧 < the\-sheat\-fish;
+撥款 < allocate\-funds;
+鬘 < beautiful\-hair;
+鬗 < head\-ornaments;
+廠工 < factory\-worker;
+語氣助詞 < modal\-particle;
+髆 < shoulder\-blade;
+正好 < just\-\(in\-time\);
+約書亞記 < book\-of\-joshua;
+探視 < pay\-a\-visit\-to;
+騌 < a\-horse''s\-mane;
+餡 < pastry\-filling;
+餗 < food\-in\-tripod;
+引咎 < take\-the\-blame;
+審判席 < judgement\-seat;
+白粉病 < powdery\-mildew;
+壁報 < wall\-newspaper;
+改善 < to\-make\-better;
+經濟有效 < cost\-effective;
+堅決否認 < to\-firmly\-deny;
+造成 < to\-bring\-about;
+幫會 < secret\-society;
+锪 < a\-kind\-of\-tool;
+操心 < to\-worry\-about;
+鏴 < to\-plug\-a\-hole;
+鎩 < moult\-samarium;
+書寫符號 < writing\-symbol;
+白種 < the\-white\-race;
+鍆 < md\-mendelevium;
+鋩 < point\-of\-sword;
+鋃 < lock\-lanthanum;
+補缺 < fill\-a\-vacancy;
+古希臘 < ancient\-greece;
+西歐 < western\-europe;
+中國人 < chinese\-person;
+逕庭 < very\-different;
+卡納維拉爾角 < cape\-canaveral;
+補綴 < mend\-\(clothes\);
+不知死活 < act\-recklessly;
+監督人 < superintendent;
+集中 < to\-concentrate;
+逩 < to\-run\-quickly;
+遲到 < to\-arrive\-late;
+輶 < light\-carriage;
+波羅的海 < the\-baltic\-sea;
+趹 < kick\-with\-hoof;
+報復 < make\-reprisals;
+真情 < real\-situation;
+桌面系統 < desktop\-system;
+東南亞國 < southeast\-asia;
+巨流 < strong\-current;
+豣 < pig\-of\-3\-years;
+豖 < a\-shackled\-pig;
+退學 < to\-quit\-school;
+讅 < know\-in\-detail;
+廉價 < cheaply\-priced;
+小型企業 < small\-business;
+詨 < kind\-of\-cicada;
+順序數 < ordinal\-number;
+病號 < sick\-personnel;
+團結 < \(hold\-a\)\-rally;
+褉 < short\-garments;
+圍繞 < revolve\-around;
+近年 < recent\-year\(s\);
+衂 < to\-be\-defeated;
+蠂 < podisma\-mikado;
+蟳 < a\-kind\-of\-crab;
+蟭 < very\-small\-bug;
+倒閉 < to\-go\-bankrupt;
+螬 < grubs\-in\-fruit;
+冷戰 < \(the\)\-cold\-war;
+蜎 < mosquito\-larva;
+資料介面 < data\-interface;
+虀 < minced\-pickles;
+薳 < name\-of\-a\-herb;
+薘 < plantago\-major;
+價目 < \(marked\)\-price;
+蓯 < medicinal\-herb;
+蓏 < fruit\-of\-plant;
+葥 < rubus\-palmatus;
+病脈 < abnormal\-pulse;
+不怎麼樣 < not\-up\-to\-much;
+漸變 < gradual\-change;
+茞 < fragrant\-plant;
+非常重要 < very\-important;
+紀念 < to\-commemorate;
+開會 < have\-a\-meeting;
+醫學專家 < medical\-expert;
+芈 < bleat\-of\-sheep;
+先進水平 < advanced\-level;
+區域網路技術 < lan\-technology;
+全景 < panoramic\-view;
+刀叉 < knife\-and\-fork;
+脦 < used\-in\-''lede'';
+連鎖反應 < chain\-reaction;
+特別感謝 < special\-thanks;
+人壽保險 < life\-insurance;
+布帛 < cloth\-and\-silk;
+找錢 < to\-give\-change;
+補液 < fluid\-infusion;
+起點 < starting\-point;
+就是說 < in\-other\-words;
+報分 < call\-the\-score;
+教育界 < academic\-world;
+挺立 < to\-stand\-erect;
+不平等條約 < unequal\-treaty;
+八成 < eighty\-percent;
+兩手 < double\-tactics;
+絜 < a\-marking\-line;
+採油 < oil\-extraction;
+紾 < turns\-or\-twist;
+糺 < to\-collaborate;
+跨越 < to\-step\-across;
+跑道 < athletic\-track;
+不敢當 < you\-flatter\-me;
+籫 < bamboo\-utensil;
+筬 < reed\-of\-a\-loom;
+喘不過氣來 < cannot\-breathe;
+握拳 < to\-make\-a\-fist;
+副總統 < vice\-president;
+甚至於 < so\-much\-\(that\);
+握手 < to\-shake\-hands;
+稭 < stalk\-of\-grain;
+精干 < crack\-\(troops\);
+長征 < the\-long\-march;
+病痛 < slight\-illness;
+不平衡 < disequilibrium;
+砢 < pile\-of\-stones;
+矉 < an\-angry\-glare;
+睱 < to\-gaze\-slowly;
+睯 < to\-be\-agonized;
+英寸 < \(english\)\-inch;
+眣 < prominent\-eyes;
+採收率 < recovery\-ratio;
+自由化 < liberalization;
+標尺 < surveyor''s\-rod;
+薩達姆侯賽因 < saddam\-hussein;
+璸 < jade''s\-streaks;
+璘 < luster\-of\-jade;
+將軍 < \(army\)\-general;
+玥 < mysterious\-gem;
+狨 < hapale\-jacchus;
+兩國 < both\-countries;
+全國 < entire\-country;
+犨 < panting\-of\-cow;
+不適用 < not\-applicable;
+但以理書 < book\-of\-daniel;
+燉 < heat\-with\-fire;
+燀 < to\-make\-a\-fire;
+熉 < \(yellow\-color\);
+輩子 < all\-one''s\-life;
+長城 < the\-great\-wall;
+表決 < decide\-by\-vote;
+成都 < chengdu\-\(city\);
+鬥智 < battle\-of\-wits;
+八千 < eight\-thousand;
+溛 < to\-form\-hollow;
+湱 < sound\-of\-water;
+捷克共和國 < czech\-republic;
+病歷 < medical\-record;
+渢 < pleasant\-sound;
+涬 < watery\-expanse;
+簡單化 < simplification;
+伸開 < to\-stretch\-out;
+洿 < stagnant\-water;
+迫不得已 < have\-no\-choice;
+評價分類 < rank\,\-classify;
+泂 < clear\-and\-deep;
+演示 < to\-demonstrate;
+沷 < to\-remove\-evil;
+從事研究 < to\-do\-research;
+殭 < a\-stiff\-corpse;
+以賽亞書 < book\-of\-isaiah;
+鹽湖城 < salt\-lake\-city;
+檖 < wild\-pear\-tree;
+橿 < quercus\-glauca;
+傳播 < to\-disseminate;
+入伍 < enter\-the\-army;
+首都 < capital\-\(city\);
+榾 < pieces\-of\-wood;
+榠 < chinese\-quince;
+榖 < paper\-mulberry;
+椪 < machilus\-nanmu;
+潔淨 < cleanse\-\(sins\);
+棐 < species\-of\-yew;
+梊 < squeeze\-out\-of;
+半數以上 < more\-than\-half;
+柾 < straight\-grain;
+柃 < eurya\-japonica;
+舌根 < back\-of\-tongue;
+檔案屬性 < file\-attribute;
+曏 < once\-upon\-time;
+行政 < administration;
+血製品 < blood\-products;
+晢 < light\-of\-stars;
+小聲 < in\-a\-low\-voice;
+昰 < var\-of\-''to\-be'';
+篡改 < to\-tamper\-with;
+截至 < up\-to\-\(a\-time\);
+攂 < to\-beat\-a\-drum;
+起草 < draft\-\(a\-bill\);
+挨打 < take\-a\-beating;
+層理 < stratification;
+球鞋 < athletic\-shoes;
+鍋貼 < fried\-dumpling;
+凹面鏡 < concave\-mirror;
+授命 < to\-give\-orders;
+開心果 < pistachio\-nuts;
+從來沒有 < have\|has\-never;
+以斯帖記 < book\-of\-esther;
+最佳利益 < best\-interests;
+世界語 < world\-language;
+惡性循環 < vicious\-circle;
+核能 < nuclear\-energy;
+浮點 < floating\-point;
+幱 < official\-dress;
+不省人事 < be\-unconscious;
+巟 < a\-watery\-waste;
+百無聊賴 < bored\-to\-death;
+行星際 < interplanetary;
+中心語 < qualified\-word;
+參謀長 < chief\-of\-staff;
+自從 < since\-\(a\-time\);
+棄櫻 < abandoned\-baby;
+產權 < property\-right;
+齒輪 < \(machine\)\-gear;
+侵犯 < to\-infringe\-on;
+醫學中心 < medical\-center;
+血壓 < blood\-pressure;
+錄像機 < video\-recorder;
+塕 < a\-gust\-of\-wind;
+埇 < name\-of\-bridge;
+光信號 < optical\-signal;
+綜合報導 < summary\-report;
+噹 < sound\-of\-bells;
+嘓 < gurgling\-sound;
+減肥 < to\-lose\-weight;
+代表 < representative;
+大同小異 < almost\-similar;
+啌 < animal\-disease;
+畫展 < art\-exhibition;
+生效 < to\-take\-effect;
+核武器 < nuclear\-weapon;
+達不到 < cannot\-achieve;
+才氣 < liteary\-talent;
+厃 < to\-look\-upward;
+卭 < high\.\-to\-raise;
+卂 < to\-fly\-rapidly;
+卑躬屈節 < bow\-and\-scrape;
+恭賀新禧 < happy\-new\-year;
+專欄 < special\-column;
+學籍 < school\-roll\(s\);
+禁食 < fast\-\(not\-eat\);
+克林頓 < \(bill\)\-clinton;
+伕 < common\-laborer;
+亇 < kwukyel\-hammer;
+䶔 < prominent\-gums;
+䶐 < to\-take\-breath;
+䶀 < sound\-of\-drums;
+䵶 < a\-kind\-of\-frog;
+䵌 < reddish\-yellow;
+䴴 < a\-kind\-of\-cake;
+䴩 < a\-kind\-of\-deer;
+䴘 < a\-kind\-of\-bird;
+䳸 < the\-wild\-goose;
+䳫 < a\-small\-pigeon;
+䲢 < a\-kind\-of\-fish;
+某種 < some\-kind\-\(of\);
+䰹 < the\-cuttlefish;
+䰴 < a\-wafting\-fish;
+䰡 < a\-fierce\-ghost;
+將會 < will\,\-going\-to;
+䯛 < the\-knee\-bones;
+䮹 < an\-angry\-horse;
+䮮 < a\-kind\-of\-mule;
+䭻 < a\-swifty\-horse;
+䭭 < the\-eldest\-son;
+䭩 < to\-feed\-a\-baby;
+前生召喚 < foreordination;
+䭁 < stinking\-smell;
+䬺 < same\-as\-u\+4b50;
+䬘 < the\-wind\-blows;
+䬒 < to\-blow\-chilly;
+豎起 < hold\-up\-\(high\);
+網際電話 < internet\-phone;
+䫫 < human\-skeleton;
+䪼 < the\-cheek\-bone;
+䪈 < a\-leather\-belt;
+䩐 < tie\-it\-tightly;
+䨥 < a\-pouring\-rain;
+䧧 < high\-mountains;
+寶書 < treasured\-book;
+䦺 < name\-of\-a\-hill;
+䦤 < seed\-of\-grains;
+䦑 < without\-a\-door;
+䦏 < wing\-of\-a\-door;
+聖誕節 < christmas\-time;
+䤖 < a\-kind\-of\-wine;
+䣎 < name\-of\-county;
+白令海 < the\-bering\-sea;
+䢨 < to\-walk\-slowly;
+䡾 < high\-cartloads;
+䡲 < rim\-of\-a\-wheel;
+摩門經 < book\-of\-mormon;
+䡉 < a\-kind\-of\-cart;
+蘋果電腦 < apple\-computer;
+䜽 < a\-kind\-of\-bean;
+䜜 < words\-of\-anger;
+䛠 < unable\-to\-talk;
+吃驚 < to\-be\-startled;
+䚖 < mountain\-deity;
+䚄 < to\-make\-fun\-of;
+䙳 < spiting\-flames;
+䙦 < upper\-garments;
+䘢 < old\-and\-shabby;
+䗷 < a\-kind\-of\-wasp;
+䗪 < a\-kind\-of\-worm;
+䗚 < eggs\-of\-mantis;
+䗒 < a\-kind\-of\-clam;
+䖰 < a\-kind\-of\-gnat;
+撞擊式印表機 < impact\-printer;
+䕚 < a\-straw\-basket;
+䔕 < chicken\-breast;
+䔋 < a\-kind\-of\-tree;
+導彈 < guided\-missile;
+䔂 < vegetable\-soup;
+清爽 < fresh\-and\-cool;
+䓡 < a\-medical\-herb;
+䒓 < to\-do\-violence;
+䒇 < name\-of\-a\-ship;
+䒅 < beautiful\-eyes;
+䑶 < sprightly\-boat;
+䑫 < tools\-for\-boat;
+䑣 < a\-sailing\-boat;
+䑜 < to\-eat\-heavily;
+互聯 < interconnected;
+䐕 < oil\-and\-grease;
+䐍 < excellent\-food;
+䍡 < small\-fish\-net;
+䍑 < a\-net\-or\-snare;
+䍍 < unburnt\-bricks;
+唱片 < \(vinyl\)\-record;
+䌵 < lapel\-and\-belt;
+䌰 < connected\-silk;
+䌥 < to\-sew\-clothes;
+䌡 < to\-wind\-around;
+二者 < both\-\[of\-them\];
+䋽 < hempen\-sandals;
+䋯 < crucial\-points;
+䋢 < to\-twist\-ropes;
+䊼 < measuring\-unit;
+才子 < gifted\-scholar;
+侵害 < to\-encroach\-on;
+䊨 < storing\-grains;
+䈷 < a\-bamboo\-fence;
+䈚 < a\-bamboo\-shoot;
+不脛而走 < get\-round\-fast;
+䇫 < bamboo\-splints;
+䇅 < to\-stand\-still;
+三輪車伕 < pedicab\-driver;
+寶庫 < treasure\-house;
+保單 < guarantee\-slip;
+飽經風霜 < weather\-beaten;
+䅥 < ripening\-crops;
+小學 < primary\-school;
+仔畜 < newborn\-animal;
+䃹 < jade\-and\-stone;
+䃡 < a\-small\-pebble;
+本色 < natural\-colour;
+䃏 < a\-kind\-of\-rock;
+䃌 < rocky\-mountain;
+來往 < to\-come\-and\-go;
+䂌 < a\-short\-weapon;
+全心全意 < heart\-and\-soul;
+䁤 < moistened\-eyes;
+䁏 < farsightedness;
+䀺 < squinting\-eyes;
+工業的巨頭 < industry\-mogol;
+㽦 < reclaimed\-land;
+㽥 < fertile\-fields;
+㽋 < a\-kind\-of\-tile;
+㽄 < an\-earthen\-jar;
+題跋 < short\-comments;
+㸫 < castrated\-bull;
+㸤 < broken\-leather;
+㸊 < fierce\-of\-fire;
+㶠 < water\-currents;
+不解 < not\-understand;
+泰米爾語 < tamil\-language;
+㵘 < great\-currents;
+懮慮 < \(feel\)\-anxiety;
+㴸 < swift\-currents;
+犯不著 < not\-worthwhile;
+㴙 < water\-dripping;
+㳃 < to\-temper\-iron;
+㲏 < flying\-feather;
+余悸 < lingering\-fear;
+㱏 < the\-right\-side;
+成就 < accomplishment;
+㭻 < the\-crab\-apple;
+不用謝 < you''re\-welcome;
+㭏 < a\-kind\-of\-wood;
+㭄 < a\-king\-of\-tree;
+容忍 < to\-put\-up\-with;
+㫏 < a\-kind\-of\-flag;
+㫂 < to\-chop\-or\-cut;
+罷論 < abandoned\-idea;
+患處 < afflicted\-part;
+㨇 < to\-sweep\-clean;
+㥺 < to\-blow\-a\-fire;
+不期而遇 < meet\-by\-chance;
+㥉 < a\-little\-angry;
+㥇 < to\-be\-perverse;
+㤾 < not\-doing\-well;
+㤖 < to\-have\-wisdom;
+㣦 < a\-winding\-path;
+架構 < infrastructure;
+穴播 < bunch\-planting;
+半自動 < semi\-automatic;
+㡜 < ragged\-clothes;
+懷孕 < to\-be\-pregnant;
+㠨 < misty\-mountain;
+㠡 < high\-and\-lofty;
+㟿 < high\-and\-steep;
+職業 < job\-occupation;
+內蒙古 < inner\-mongolia;
+退休金 < retirement\-pay;
+留言簿 < visitor''s\-book;
+㞩 < mountain\-vapor;
+㞗 < the\-male\-organ;
+任期 < term\-of\-office;
+㞊 < unable\-to\-walk;
+㝰 < unable\-to\-meet;
+㝛 < ahalting\-place;
+㜤 < fooling\-around;
+㜑 < an\-older\-woman;
+近乎同步 < plesiochronous;
+㛩 < sisters\-in\-law;
+㛂 < weak\-and\-small;
+㚃 < to\-take\-a\-hint;
+㙷 < low\-lying\-area;
+不興 < out\-of\-fashion;
+㖢 < to\-reject\-food;
+㕤 < a\-proud\-temper;
+球棒 < \(baseball\)\-bat;
+㔙 < great\-strength;
+㒛 < to\-stand\-alone;
+㒀 < do\-not\-fear\-to;
+資格 < qualifications;
+東海 < east\-china\-sea;
+死亡率 < mortality\-rate;
+哥本哈根 < copenhagen\-\?\?\?;
+東歐 < eastern\-europe;
+任憑 < no\-matter\-what;
+今朝 < at\-the\-present;
+作品 < works\-\(of\-art\);
+憋悶 < feel\-oppressed;
+飼槽 < feeding\-trough;
+警車 < police\-vehicle;
+寒冷 < cold\-\(climate\);
+哈該書 < book\-of\-haggai;
+安好 < safe\-and\-sound;
+液晶 < liquid\-crystal;
+參觀 < to\-look\-around;
+阿伏伽德羅定律 < avogadro''s\-law;
+擺攤子 < set\-up\-a\-stall;
+可能 < might\-\(happen\);
+首先 < first\-\(of\-all\);
+瑞士人 < swiss\-\(person\);
+每端口價格 < price\-per\-port;
+液態 < liquid\-\(state\);
+孕婦 < pregnant\-woman;
+乘法 < multiplication;
+差不多 < almost\,\-nearly;
+定價 < to\-set\-a\-price;
+括弧裡 < in\-parentheses;
+暗箱 < camera\-bellows;
+減刑 < reduce\-penalty;
+百米賽跑 < 100\-metre\-dash;
+信號臺 < signal\-station;
+世界上 < \(of\-the\)\-world;
+調查報告 < memoir\,\-report;
+圓珠筆 < ball\-point\-pen;
+中歐 < central\-europe;
+全球氣候升溫 < global\-warming;
+犯罪 < \(commit\)\-crime;
+份兒 < degree\,\-extent;
+跑腿兒 < to\-run\-errands;
+不正常狀況 < abnormal\-state;
+特色 < characteristic;
+中斷 < to\-discontinue;
+秕子 < blighted\-grain;
+世界經濟 < global\-economy;
+有待 < not\-yet\-\(done\);
+題材 < subject\-matter;
+礦泉 < mineral\-spring;
+通用汽車 < general\-motors;
+毛衣 < \(wool\)\-sweater;
+責任 < responsibility;
+北京週報 < beijing\-review;
+半職 < part\-time\-work;
+波狀熱 < undulant\-fever;
+顯得 < appear\-\(to\-be\);
+不忍 < cannot\-bear\-to;
+知識庫 < knowledge\-base;
+源點地址 < source\-address;
+這次危機 < present\-crisis;
+多工運作 < multithreading;
+媽咪 < mummy\-\(mother\);
+波恩 < bonn\-\(germany\);
+敗訴 < lose\-a\-lawsuit;
+電信局 < central\-office;
+壽衣 < burial\-clothes;
+西南亞 < southwest\-asia;
+二氧化碳 < carbon\-dioxide;
+擺鐘 < pendulum\-clock;
+撥號盤 < telephone\-dial;
+北緯 < north\-latitude;
+及格 < to\-pass\-a\-test;
+法庭 < court\-\(of\-law\);
+這類 < this\-kind\-\(of\);
+網絡設計 < network\-design;
+後兩者 < the\-latter\-two;
+主修 < \(school\)\-major;
+變成 < to\-change\-into;
+廠禮拜 < day\-off\-\(work\);
+不合 < not\-conform\-to;
+開放式系統 < open\-system\(s\);
+斑竹 < mottled\-bamboo;
+不及 < not\-as\-good\-as;
+分類 < classification;
+兩百億 < twenty\-billion;
+無連接 < connectionless;
+重建 < reconstruction;
+猜謎兒 < guess\-a\-riddle;
+請看 < please\-see\-\.\.\.;
+五年計劃 < five\-year\-plan;
+氫氣 < hydrogen\-\(gas\);
+市場經濟 < market\-economy;
+檔案執行 < file\-execution;
+互動電視 < interactive\-tv;
+美差事 < a\-terrific\-job;
+數種 < numerous\-types;
+冰點 < freezing\-point;
+歐洲聯盟 < european\-union;
+華裔 < ethnic\-chinese;
+不仁 < not\-benevolent;
+收聽 < to\-listen\-\(to\);
+经 < classic\-works;
+弟 < young\-brother;
+廻 < circle\-around;
+关 < frontier\-pass;
+帝 < supreme\-ruler;
+番 < to\-take\-turns;
+略 < approximately;
+共 < together\-with;
+义 < right\-conduct;
+嫂 < sister\-in\-law;
+哥 < elder\-brother;
+婦 < married\-women;
+訣 < take\-leave\-of;
+族 < a\-family\-clan;
+奪 < take\-by\-force;
+笔 < writing\-brush;
+袷 < lined\-garment;
+瀬 < swift\-current;
+伯 < older\-brother;
+漲 < rise\-in\-price;
+礼 < social\-custom;
+嘩 < rushing\-sound;
+啣 < hold\-in\-mouth;
+泊 < anchor\-vessel;
+沿 < follow\-course;
+咄 < noise\-of\-rage;
+菊 < chrysanthemum;
+岳 < mountain\-peak;
+匹 < bolt\-of\-cloth;
+颇 < lean\-one\-side;
+晨 < early\-morning;
+撞 < knock\-against;
+愈 < more\-and\-more;
+槇 < tip\-of\-a\-tree;
+駅 < relay\-station;
+饅 < steamed\-bread;
+炸 < to\-fry\-in\-oil;
+脈 < blood\-vessels;
+绪 < end\-of\-thread;
+飼 < raise\-animals;
+梓 < catalpa\-ovata;
+肌 < muscle\-tissue;
+佩 < belt\-ornament;
+署 < public\-office;
+搭 < join\-together;
+栗 < chestnut\-tree;
+桑 < mulberry\-tree;
+鞄 < to\-work\-hides;
+杓 < handle\-of\-cup;
+佃 < tenant\-farmer;
+贡 < offer\-tribute;
+曇 < become\-cloudy;
+亙 < extend\-across;
+诞 < bear\-children;
+晴 < clear\-weather;
+塑 < model\-in\-clay;
+浦 < bank\-of\-river;
+籔 < bamboo\-basket;
+慎 < act\-with\-care;
+莉 < white\-jasmine;
+捗 < make\-progress;
+塌 < fall\-in\-ruins;
+竖 < perpendicular;
+陕 < mountain\-pass;
+惚 < absent\-minded;
+淀 < shallow\-water;
+淘 < wash\-in\-sieve;
+瑰 < extraordinary;
+垫 < advance\-money;
+灶 < kitchen\-range;
+毓 < give\-birth\-to;
+咧 < stretch\-mouth;
+奎 < stride\-of\-man;
+洽 < to\-blend\-with;
+瑶 < precious\-jade;
+钰 < rare\-treasure;
+瑛 < luster\-of\-gem;
+殉 < die\-for\-cause;
+唬 < to\-intimidate;
+瘪 < shrivelled\-up;
+唆 < make\-mischief;
+岚 < mountain\-mist;
+桦 < type\-of\-birch;
+涟 < flowing\-water;
+飕 < sound\-of\-wind;
+坷 < clod\-of\-earth;
+鑫 < used\-in\-names;
+笋 < bamboo\-shoots;
+荃 < aromatic\-herb;
+馄 < dumpling\-soup;
+穹 < high\-and\-vast;
+弈 < chinese\-chess;
+驮 < carry\-on\-back;
+芥 < mustard\-plant;
+炜 < brilliant\-red;
+岜 < rock\-mountain;
+纫 < thread\-needle;
+桀 < chicken\-roost;
+拮 < laboring\-hard;
+纥 < inferior\-silk;
+忤 < insubordinate;
+鸾 < fabulous\-bird;
+嘁 < to\-be\-grieved;
+辎 < a\-supply\-cart;
+芫 < daphne\-genkwa;
+伧 < vulgar\-person;
+泠 < nice\-and\-cool;
+縻 < halter\-for\-ox;
+踽 < to\-walk\-alone;
+赭 < reddish\-brown;
+颀 < tall\-and\-slim;
+柘 < a\-thorny\-tree;
+谔 < honest\-speech;
+骓 < piebald\-horse;
+崧 < high\-mountain;
+酚 < carbolic\-acid;
+夤 < distant\-place;
+暌 < in\-opposition;
+怍 < to\-be\-ashamed;
+贽 < gift\-superior;
+毖 < guard\-against;
+迓 < to\-go\-to\-meet;
+毵 < long\-feathers;
+睚 < corner\-of\-eye;
+毽 < a\-shuttlecock;
+僳 < minority\-name;
+辏 < hubs\-of\-wheel;
+旆 < flag\-ornament;
+荇 < a\-water\-plant;
+卮 < measuring\-cup;
+髡 < to\-shear\-tree;
+鳜 < mandarin\-fish;
+鼍 < large\-reptile;
+笫 < planks\-of\-bed;
+缡 < a\-bridal\-veil;
+绨 < coarse\-pongee;
+芰 < water\-caltrop;
+魃 < drought\-demon;
+舳 < stern\-of\-ship;
+屦 < straw\-sandals;
+蓐 < straw\-bed\-mat;
+銎 < eye\-of\-an\-axe;
+醣 < carbohydrates;
+蛑 < a\-marine\-crab;
+椠 < wooden\-tablet;
+媸 < an\-ugly\-woman;
+馇 < stir\-and\-cook;
+甙 < sugar\-product;
+薤 < allium\-bakeri;
+塥 < dry\-clay\-lump;
+檔案轉送 < file\-transfer;
+諾貝爾 < nobel\-\(prize\);
+菲菲 < very\-fragrant;
+昂揚 < high\-spirited;
+保證金 < earnest\-money;
+磁帶 < magnetic\-tape;
+解調 < to\-demodulate;
+北海 < the\-north\-sea;
+薄利 < small\-profits;
+排山倒海 < earth\-shaking;
+晚報 < evening\-paper;
+星座 < constellation;
+激光打引機 < laser\-printer;
+冰鞋 < skating\-boots;
+掛號證 < register\-card;
+廠絲 < filature\-silk;
+矛盾 < contradictory;
+出賣 < to\-sell\-\(off\);
+到處 < in\-all\-places;
+經營費用 < business\-cost;
+原子能 < atomic\-energy;
+古代 < ancient\-times;
+新月 < crescent\-moon;
+紀念館 < memorial\-hall;
+單韻母 < simple\-finals;
+即將 < on\-the\-eve\-of;
+卑微 < petty\-and\-low;
+危害 < to\-jeopardize;
+直截了當 < plain\-talking;
+冷戰以後 < post\-cold\-war;
+有可能 < it''s\-possible;
+刨花 < wood\-shavings;
+莨菪 < black\-henbane;
+調查 < investigation;
+綁腿 < leg\-wrappings;
+列舉 < \(make\-a\)\-list;
+適用 < be\-applicable;
+摘記 < to\-take\-notes;
+元首 < head\-of\-state;
+未提及 < not\-mentioned;
+方式 < way\-\(of\-life\);
+日夜 < day\-and\-night;
+芝麻 < sesame\-\(seed\);
+本生燈 < bunsen\-burner;
+牌坊 < memorial\-arch;
+心臟病 < heart\-disease;
+前生 < pre\-existence;
+勢在必行 < be\-imperative;
+昇值 < rise\-in\-value;
+十五年 < fifteen\-years;
+米飯 < \(cooked\)\-rice;
+鄧小平 < deng\-xiaoping;
+轉道 < make\-a\-detour;
+舊約全書 < old\-testament;
+長途 < long\-distance;
+日前 < the\-other\-day;
+幾個小時 < several\-hours;
+那鴻書 < book\-of\-nahum;
+網絡層 < network\-layer;
+墜毀 < \(plane\)\-crash;
+雙手 < pair\-of\-hands;
+哥林多後書 < 2\-corinthians;
+南亞 < southern\-asia;
+刊登 < carry\-a\-story;
+誇張 < to\-exaggerate;
+難忘 < unforgettable;
+太太 < married\-woman;
+撥用 < appropriation;
+審判欄 < judgement\-bar;
+境況 < circumstances;
+民事 < civil\-matters;
+女佣 < \(female\)\-maid;
+不可缺少 < indispensable;
+勘察 < reconnaisance;
+籌集 < collect\-money;
+操演 < demonstration;
+白花花 < shining\-white;
+建築學 < architectural;
+視窗基準 < windows\-based;
+電郵位置 < email\-address;
+幻燈 < latern\-slides;
+研究領域 < research\-area;
+中國式 < chinese\-style;
+加快 < to\-accelerate;
+冰糖 < crystal\-sugar;
+國際 < international;
+半失業 < semi\-employed;
+鬥雞 < cock\-fighting;
+過時 < old\-fashioned;
+進接服務 < access\-server;
+隨意 < as\-one\-wishes;
+失利 < suffer\-defeat;
+表決權 < right\-to\-vote;
+空間站 < space\-station;
+損耗 < wear\-and\-tear;
+相當 < equivalent\-to;
+逐步 < progressively;
+鵩 < owl\-like\-bird;
+大公司 < large\-company;
+不記名投票 < secret\-ballot;
+二次大戰 < world\-war\-two;
+幾次 < several\-times;
+巨細 < big\-and\-small;
+幾樣 < several\-kinds;
+大使 < an\-ambassador;
+編審 < read\-and\-edit;
+強化 < to\-strengthen;
+避孕 < contraception;
+髃 < shoulder\-bone;
+不列顛諸島 < british\-isles;
+骪 < crooked\-bones;
+大容量 < high\-capacity;
+大事 < a\-major\-event;
+楊百翰 < brigham\-young;
+大問題 < great\-problem;
+馣 < fragrant\-odor;
+教友 < church\-member;
+光功率 < optical\-power;
+速效 < quick\-results;
+餚 < prepared\-meat;
+權威性 < authoritative;
+利於 < be\-beneficial;
+初期 < initial\-stage;
+女朋友 < female\-friend;
+基本概念 < basic\-concept;
+不周延 < undistributed;
+鞮 < leather\-shoes;
+詢問 < inquire\-about;
+霝 < drops\-of\-rain;
+摁釦兒 < snap\-fastener;
+死刑 < death\-penalty;
+铖 < person''s\-name;
+白皮松 < lacebark\-pine;
+錡 < a\-kind\-of\-pen;
+兵痞 < army\-riffraff;
+存儲器 < memory\-\(unit\);
+貿易順差 < trade\-surplus;
+彌迦書 < book\-of\-micah;
+鈄 < a\-wine\-flagon;
+武器系統 < weapon\-system;
+釭 < tire\-of\-wheel;
+醨 < dregs\-of\-wine;
+體重 < \(body\)\-weight;
+白砒 < white\-arsenic;
+梅塞迪斯奔馳 < mercedes\-benz;
+相架 < picture\-frame;
+辡 < recrimination;
+家用電腦 < home\-computer;
+現代化 < modernization;
+轏 < sleeping\-cart;
+兵營 < military\-camp;
+主禱文 < lord''s\-prayer;
+市民 < city\-resident;
+庭園 < flower\-garden;
+跮 < hasty\-walking;
+轟炸 < \(drop\-a\)\-bomb;
+過去 < \(in\-the\)\-past;
+賮 < farewell\-gift;
+艦艇 < naval\-vessels;
+大公無私 < just\-and\-fair;
+哥林多前書 < 1\-corinthians;
+冰期 < glacial\-epoch;
+關於 < pertaining\-to;
+剛剛 < just\-recently;
+廠主 < factory\-owner;
+再次 < one\-more\-time;
+謍 < humming\-sound;
+新約全書 < new\-testament;
+覶 < to\-look\-about;
+覔 < to\-search\-for;
+襚 < grave\-clothes;
+權力 < \(wield\)\-power;
+蠵 < large\-turtles;
+簿籍 < account\-books;
+螾 < the\-earthworm;
+螥 < the\-house\-fly;
+螙 < grubs\-in\-wood;
+蛅 < a\-caterpillar;
+橫掃 < to\-sweep\-away;
+度假 < go\-on\-holiday;
+蘯 < to\-toss\-about;
+異質 < heterogeneous;
+車站 < \(bus\)\-station;
+亞洲國家 < asian\-country;
+暴風驟雨 < violent\-storm;
+蔎 < thea\-sinensis;
+備至 < to\-the\-utmost;
+葽 < type\-of\-grain;
+菼 < rush\-or\-sedge;
+菺 < althaea\-rosea;
+跑鞋 < running\-shoes;
+菑 < to\-weed\-grass;
+報單 < taxation\-form;
+莧 < edible\-greens;
+茥 < rubus\-tokkura;
+鑒賞 < to\-appreciate;
+苘 < indian\-mallow;
+這位 < this\-\(person\);
+困窘 < embarrassment;
+降世 < come\-to\-earth;
+脥 < pelvic\-cavity;
+便飯 < a\-simple\-meal;
+胲 < hydroxylamine;
+輻條 < \(wheel\)\-spoke;
+好幾年 < several\-years;
+罳 < wooden\-screen;
+缇 < reddish\-color;
+打開 < to\-break\-open;
+售票處 < ticket\-office;
+發揮 < bring\-to\-bear;
+糭 < rice\-dumpling;
+捉取圖像 < capture\-image;
+籾 < unhulled\-rice;
+籜 < bamboo\-sheath;
+六點半 < half\-past\-six;
+開心 < to\-feel\-happy;
+無意識 < unconsciously;
+實驗 < to\-experiment;
+笵 < a\-bamboo\-form;
+笭 < bamboo\-screen;
+轉彎 < turn\-\(around\);
+案頭 < on\-one''s\-desk;
+拜金主義 < money\-worship;
+永久和平 < lasting\-peace;
+砞 < to\-smash\-rock;
+矞 < bore\-with\-awl;
+辨別 < differentiate;
+抄襲 < to\-plagiarize;
+辦到 < to\-accomplish;
+先後 < in\-succession;
+畜肥 < animal\-manure;
+推動力 < driving\-force;
+拉美 < latin\-america;
+核電 < nuclear\-power;
+越野 < cross\-country;
+璂 < jade\-ornament;
+琕 < type\-of\-pearl;
+獙 < die\-violently;
+公園 < a\-public\-park;
+百姓 < common\-people;
+哈薩克人 < kazakh\-person;
+災區 < disaster\-area;
+避風處 < lee\,\-windstop;
+牁 < mooring\-stake;
+構成 < to\-constitute;
+熰 < great\-drought;
+保藏 < keep\-in\-store;
+瑞香 < winter\-daphne;
+拌種 < seed\-dressing;
+籌措 < raise\-\(money\);
+棄置 < to\-throw\-away;
+使用量 < volume\-of\-use;
+賣點 < selling\-point;
+瘦弱 < thin\-and\-weak;
+浬 < nautical\-mile;
+白匪 < white\-bandits;
+肉體 < physical\-body;
+欵 < to\-treat\-well;
+欓 < a\-cross\-piece;
+半導體 < semiconductor;
+備案 < put\-on\-record;
+櫌 < a\-kind\-of\-hoe;
+檮 < block\-of\-wood;
+巡航導彈 < cruise\-missle;
+不可能的事 < impossibility;
+榌 < wooden\-ladder;
+百分之五十 < fifty\-percent;
+鬥志 < will\-to\-fight;
+扁荳 < hyacinth\-bean;
+百倍 < a\-hundredfold;
+楙 < name\-of\-plant;
+筆筒 < pen\-container;
+梹 < the\-areca\-nut;
+寶藍 < sapphire\-blue;
+梎 < sickle\-handle;
+栰 < a\-bamboo\-raft;
+滲碳 < carburization;
+暴力犯罪 < violent\-crime;
+朩 < kwukyel\:\-rank;
+渡過 < to\-cross\-over;
+字集 < character\-set;
+駁殼槍 < mauser\-pistol;
+何西阿書 < book\-of\-hosea;
+空運 < air\-transport;
+奧克拉荷馬市 < oklahoma\-city;
+搢 < to\-stick\-into;
+掭 < to\-manipulate;
+挶 < hold\-in\-hands;
+拕 < to\-drag\-after;
+抃 < to\-clap\-hands;
+不成文法 < unwritten\-law;
+戺 < stone\-boarder;
+戹 < in\-difficulty;
+高速乙太網路 < fast\-ethernet;
+不方便 < inconvenience;
+沒經驗 < inexperienced;
+表層 < surface\-layer;
+怾 < mountain\-name;
+圓周 < circumference;
+彽 < go\-to\-and\-fro;
+彲 < yellow\-dragon;
+彔 < to\-carve\-wood;
+主日學 < sunday\-school;
+病害 < plant\-disease;
+巰 < an\-atom\-group;
+售貨 < to\-sell\-goods;
+峂 < name\-of\-place;
+有助于 < contribute\-to;
+寀 < feudal\-estate;
+舌尖 < tip\-of\-tongue;
+案稱 < counter\-scale;
+媢 < be\-jealous\-of;
+消防 < fire\-fighting;
+喉結 < adam''s''\-apple;
+島國 < island\-nation;
+鬧事 < cause\-trouble;
+京都 < kyoto\-\(japan\);
+四千 < four\-thousand;
+當年 < in\-those\-days;
+垻 < an\-embankment;
+財迷 < money\-grubber;
+三十億 < three\-billion;
+理解 < to\-comprehend;
+嚚 < argumentative;
+不凍港 < ice\-free\-port;
+步話機 < walkie\-talkie;
+密碼 < \(secret\)\-code;
+築城 < fortification;
+咡 < side\-of\-mouth;
+衛兵 < \(body\)\-guard\);
+艾滋病抗體 < aids\-antibody;
+集線器 < hub\-\(network\);
+疑問 < interrogation;
+凟 < to\-be\-rude\-to;
+喉痧 < scarlet\-fever;
+個性 < individuality;
+儹 < to\-accumulate;
+儲 < to\-save\-money;
+儛 < to\-skip\-about;
+不舒適 < uncomfortable;
+傒 < personal\-name;
+兩千年 < the\-year\-2000;
+標本蟲 < spider\-beetle;
+啟示 < enlightenment;
+進出口 < import\|export;
+不可侵犯權 < inviolability;
+侂 < to\-commission;
+向西南 < southwestward;
+致函 < send\-a\-letter;
+乨 < the\-beginning;
+䶚 < decayed\-tooth;
+䶈 < a\-kind\-of\-rat;
+䵿 < a\-silent\-drum;
+䵁 < decayed\-dough;
+䴰 < a\-family\-name;
+䲺 < birds\-singing;
+䲅 < the\-globefish;
+䰻 < to\-catch\-fish;
+意識 < consciousness;
+䰱 < name\-of\-a\-god;
+售票員 < ticket\-seller;
+䯅 < a\-swift\-horse;
+䮈 < to\-go\-swiftly;
+䫿 < a\-cool\-breeze;
+䫴 < weak\-and\-dull;
+聯絡 < communication;
+售票口 < ticket\-window;
+扁擔 < carrying\-pole;
+䫁 < the\-first\-son;
+䪫 < ancient\-music;
+䪒 < leather\-pants;
+䩾 < herb\-medicine;
+䩤 < to\-lead\-an\-ox;
+䩣 < shoe\-cushions;
+䩞 < a\-saddle\-flap;
+䨎 < deep\-and\-dark;
+安定化 < stabilization;
+䧖 < a\-small\-mound;
+䦴 < open\-the\-door;
+䦳 < between\-steps;
+交換端 < switched\-port;
+哀號 < cry\-piteously;
+䦡 < a\-door\-keeper;
+䥩 < hooks\-to\-hang;
+䤵 < a\-tiny\-needle;
+䤎 < soybean\-sauce;
+䤃 < drunken\-sound;
+䣰 < to\-pool\-money;
+䢧 < to\-go\-forward;
+䢚 < a\-narrow\-path;
+䢃 < to\-administer;
+䡥 < a\-moving\-cart;
+䟘 < to\-straighten;
+䟊 < short\-strides;
+桂林 < guilin\-\(city\);
+䞁 < corresponding;
+䝶 < to\-levy\-taxes;
+䝬 < a\-wealthy\-man;
+金黃 < golden\-yellow;
+䛾 < familiar\-with;
+不相干 < be\-irrelevant;
+目標市場 < target\-market;
+䛐 < an\-expression;
+天曉得 < heaven\-knows\!;
+䚕 < to\-search\-out;
+䙹 < to\-vomit\-milk;
+䙥 < shiny\-dresses;
+䙢 < short\-t\-shirt;
+䙠 < short\-clothes;
+䙟 < heavy\-clothes;
+䙞 < woolen\-string;
+䙅 < the\-waistline;
+跨國 < transnational;
+䗗 < the\-millipede;
+䖩 < a\-kind\-of\-bee;
+䖑 < a\-white\-tiger;
+䖇 < fragrant\-herb;
+演出 < \(acting\)\-play;
+吃飯 < to\-eat\-a\-meal;
+䒎 < without\-color;
+䑲 < to\-row\-a\-boat;
+䑥 < a\-moving\-boat;
+䐲 < half\-raw\-meat;
+䐙 < the\-diaphragm;
+䏘 < a\-big\-abdomen;
+䏄 < not\-to\-listen;
+不通 < be\-obstructed;
+最高法院 < supreme\-court;
+䍽 < a\-fierce\-goat;
+䍼 < salted\-mutton;
+䍪 < castrated\-ram;
+䍤 < to\-strain\-out;
+戒指 < \(finger\)\-ring;
+最後更新 < latest\-update;
+䌙 < hank\-of\-ropes;
+䌅 < a\-thick\-ropes;
+䋦 < ravelled\-silk;
+䋝 < a\-throat\-band;
+杏仁豆腐 < almond\-junket;
+䊽 < a\-fine\-thread;
+䊔 < polished\-rice;
+䉩 < a\-bamboo\-ware;
+䉨 < bamboo\-joints;
+䈾 < move\-a\-little;
+䈳 < a\-window\-leaf;
+少將 < major\-general;
+䆚 < to\-go\-through;
+杜絕 < put\-an\-end\-to;
+䅛 < husks\-of\-rice;
+䃳 < falling\-stone;
+䂶 < the\-crustacea;
+䂗 < to\-be\-careful;
+䂎 < a\-short\-spear;
+䂁 < an\-angry\-look;
+䁙 < eloquent\-eyes;
+䀮 < sight\-blurred;
+䀭 < with\-big\-eyes;
+䀖 < to\-look\-up\-to;
+䀕 < angry\-glances;
+暗鎖 < built\-in\-lock;
+㿬 < nasal\-disease;
+㾽 < swelling\-feet;
+㽲 < griping\-colic;
+㽇 < unburnt\-tiles;
+㼵 < a\-small\-basin;
+㼟 < a\-tiled\-house;
+㼎 < a\-small\-melon;
+㻾 < jade\-articles;
+同盟國 < confederation;
+㺈 < to\-go\-hunting;
+㹹 < a\-kind\-of\-dog;
+㹵 < a\-hunting\-dog;
+㹳 < a\-kind\-of\-ape;
+懲戒 < to\-discipline;
+這種方式 < \(in\)\-this\-way;
+下課 < class\-is\-over;
+不詳 < not\-in\-detail;
+㸄 < a\-raging\-fire;
+㷾 < blaze\-of\-fire;
+反響 < repercussions;
+㷖 < to\-shine\-upon;
+㷕 < hearing\-sound;
+㷒 < to\-cook\-meals;
+㶘 < full\-of\-water;
+奧運會 < olympic\-games;
+㵳 < crystal\-clear;
+㵠 < to\-gush\-forth;
+㴽 < water\-current;
+㴫 < great\-flowing;
+㴦 < to\-wash\-hands;
+㴥 < great\-billows;
+㴐 < great\-current;
+保護主義 < protectionism;
+㲛 < hairy\-animals;
+在未來 < in\-the\-future;
+宿怨 < an\-old\-grudge;
+㰻 < asses\-braying;
+㰏 < a\-bamboo\-pole;
+㰌 < to\-monopolize;
+㭿 < oblique\-angle;
+單子 < list\-of\-items;
+㭓 < a\-pillar\-arch;
+貢獻 < to\-contribute;
+㬥 < to\-sun\-to\-air;
+叫醒 < to\-call\-awake;
+㬄 < warm\-and\-damp;
+㫟 < day\-after\-day;
+南美洲 < south\-america;
+美術 < the\-fine\-arts;
+㩥 < delicate\-hand;
+㨞 < to\-feel\-about;
+㧼 < to\-distribute;
+㧷 < to\-wipe\-tears;
+㦫 < lax\-and\-crude;
+㦌 < keen\-or\-sharp;
+㥼 < to\-be\-near\-to;
+㣿 < painfully\-sad;
+㣤 < to\-tread\-upon;
+㢻 < to\-draw\-a\-bow;
+㢖 < a\-store\-house;
+七百萬 < seven\-million;
+㠴 < a\-pillow\-case;
+㠛 < name\-a\-county;
+月球表面 < lunar\-surface;
+㟭 < the\-min\-river;
+能夠 < be\-capable\-of;
+㞬 < close\-or\-near;
+㞋 < soft\-and\-meek;
+家屬 < family\-member;
+㝻 < barely\-enough;
+㝃 < to\-bear\-a\-son;
+地方停車 < parking\-place;
+㛒 < can\-not\-speak;
+㚴 < a\-pretty\-girl;
+鼻淵 < nasosinusitis;
+懂得 < to\-understand;
+㘛 < a\-deep\-valley;
+有良心 < conscientious;
+㘓 < prolix\-speech;
+㘉 < to\-make\-sound;
+㗴 < dogs\-fighting;
+㕰 < sound\-angrily;
+㕪 < birds''\-chirps;
+㕙 < a\-wily\-rabbit;
+㕉 < to\-dig\-a\-hole;
+㔥 < full\-of\-anger;
+㓴 < to\-cut\-in\-two;
+半點 < the\-least\-bit;
+㓖 < bitterly\-cold;
+以太網絡端口 < ethernet\-port;
+㑥 < disrespectful;
+鉛筆 < \(lead\)\-pencil;
+單向 < undirectional;
+㐰 < to\-believe\-in;
+受賄 < accept\-bribes;
+鼻飼法 < nasal\-feeding;
+知名人士 < public\-figure;
+約拿書 < book\-of\-jonah;
+例假 < legal\-holiday;
+水面 < water\-surface;
+步行蟲 < ground\-beetle;
+移殖 < to\-transplant;
+起伏 < ups\-and\-downs;
+變調 < modified\-tone;
+友誼 < companionship;
+美國國會 < u\.s\.\-congress;
+哀樂 < funeral\-music;
+不幸的是 < unfortunately;
+富于 < to\-be\-full\-of;
+便步走 < march\-at\-ease;
+聲帶 < vocal\-cord\(s\);
+不知 < unknowing\(ly\);
+孫女 < granddaughter;
+光纖電纜 < optical\-fiber;
+社交語言 < lingua\-franca;
+涼快 < nice\-and\-cold;
+三百 < three\-hundred;
+連接至 < to\-connect\-to;
+京戲 < beijing\-opera;
+低于 < be\-lower\-than;
+鳶尾花 < iris\-\(flower\);
+南部 < southern\-part;
+變色 < change\-colour;
+半官方 < semi\-official;
+北面 < northern\-side;
+上班 < to\-go\-to\-work;
+百科全書 < encyclopaedia;
+各種 < every\-kind\-of;
+貝彫 < shell\-carving;
+日軍 < japanese\-army;
+功率惡化 < power\-penalty;
+南越 < south\-vietnam;
+愛憎 < love\-and\-hate;
+職員 < office\-worker;
+洋溢 < brimming\-with;
+不可抗力 < force\-majeure;
+協調 < to\-coordinate;
+大阪 < osaka\-\(japan\);
+考慮 < to\-think\-over;
+生命的遺跡 < trace\-of\-life;
+北部 < northern\-part;
+兼容性 < compatibility;
+解壓縮 < to\-decompress;
+本意 < original\-idea;
+吸毒 < to\-take\-drugs;
+中國銀行 < bank\-of\-china;
+泳池 < swimming\-pond;
+一步 < \(single\)\-step;
+北越 < north\-vietnam;
+響應時間 < response\-time;
+雜項 < miscellaneous;
+傳輸模式 < transfer\-mode;
+採棉機 < cotton\-picker;
+外部 < external\-part;
+聞人 < famous\-person;
+前所未有 < unprecedented;
+和尚 < buddhist\-monk;
+蘇州 < suzhou\-\(city\);
+礦水 < mineral\-water;
+暑氣 < \(summer\)\-heat;
+一九九七年 < the\-year\-1997;
+哀告 < beg\-piteously;
+外貿 < foreign\-trade;
+避難 < \[take\]\-refuge;
+包袱 < cloth\-wrapper;
+感冒 < to\-catch\-cold;
+彩蚌 < painted\-shell;
+芭蕉扇 < palm\-leaf\-fan;
+禮堂 < assembly\-hall;
+總計 < \(grand\)\-total;
+娛樂 < entertainment;
+中學 < middle\-school;
+五一 < 5\-1\-\(may\-1st\);
+磁片 < magnetic\-disk;
+會場 < meeting\-place;
+媾和 < to\-make\-peace;
+公元前 < before\-christ;
+上市 < on\-the\-market;
+訪問方式 < access\-method;
+檔案建立 < file\-creation;
+私利 < personal\-gain;
+遲鈍 < slow\-\(witted\);
+波美度 < baume\-degrees;
+北美 < north\-america;
+經驗 < to\-experience;
+出生日期 < date\-of\-birth;
+不可思議 < inconceivable;
+格子花呢 < plaid\,\-tartan;
+汲水 < to\-draw\-water;
+獲勝 < be\-victorious;
+觀點 < point\-of\-view;
+半復賽 < eighth\-finals;
+水牛 < water\-buffalo;
+雙生兄弟 < twin\-brothers;
+同年 < the\-same\-year;
+最大速率 < maximum\-speed;
+變星 < variable\-star;
+邊界線 < boundary\-line;
+蘇俄 < soviet\-russia;
+現實情況 < current\-state;
+步行 < to\-go\-on\-foot;
+擅長 < to\-be\-good\-at;
+不啻 < not\-less\-than;
+牌照 < license\-plate;
+支持率 < support\-level;
+試一試 < to\-have\-a\-try;
+暗害 < kill\-secretly;
+包羅萬象 < all\-embracing;
+勃興 < rise\-suddenly;
+變態 < metamorphosis;
+性慾 < sexual\-desire;
+匯率 < exchange\-rate;
+治安 < law\-and\-order;
+視頻節目 < video\-program;
+雌花 < female\-flower;
+全世界第一 < world''s\-first;
+多種 < many\-kinds\-of;
+吸入 < to\-breathe\-in;
+變工 < exchange\-work;
+下至上 < bottom\-to\-top;
+受害 < to\-be\-injured;
+找不到 < couldn''t\-find;
+決心 < determination;
+下令 < give\-an\-order;
+莫逆 < very\-friendly;
+羅馬字母 < roman\-letters;
+比熱 < specific\-heat;
+不可名狀 < indescribable;
+瞳 < pupil\-of\-eye;
+万 < ten\-thousand;
+布 < cotton\-cloth;
+通 < pass\-through;
+提 < hold\-in\-hand;
+京 < capital\-city;
+甚 < great\-extent;
+周 < zhou\-dynasty;
+尻 < end\-of\-spine;
+宴 < to\-entertain;
+宰 < to\-slaughter;
+犯 < commit\-crime;
+婢 < servant\-girl;
+参 < take\-part\-in;
+掌 < palm\-of\-hand;
+姿 < one''s\-manner;
+姉 < elder\-sister;
+斗 < chinese\-peck;
+呼 < breathe\-sigh;
+衝 < rush\-against;
+螺 < spiral\-shell;
+坊 < neighborhood;
+尼 < buddhist\-nun;
+鼾 < snore\-loudly;
+叶 < to\-harmonize;
+野 < open\-country;
+移 < change\-place;
+唐 < tang\-dynasty;
+秀 < ear\-of\-grain;
+蒲 < type\-of\-rush;
+庆 < congratulate;
+蒟 < betel\-pepper;
+汗 < perspiration;
+拜 < do\-obeisance;
+虑 < be\-concerned;
+宋 < song\-dynasty;
+胆 < gall\-bladder;
+剖 < split\-in\-two;
+凤 < male\-phoenix;
+询 < inquire\-into;
+筑 < ancient\-lute;
+偶 < accidentally;
+飽 < eat\-heartily;
+胎 < unborn\-child;
+悟 < to\-apprehend;
+肅 < pay\-respects;
+侘 < disappointed;
+祭 < sacrifice\-to;
+宪 < constitution;
+碑 < stone\-tablet;
+昌 < light\-of\-sun;
+携 < lead\-by\-hand;
+厦 < big\-building;
+仆 < fall\-forward;
+妥 < satisfactory;
+杭 < cross\-stream;
+赠 < give\-present;
+腔 < chest\-cavity;
+孝 < filial\-piety;
+笹 < small\-bamboo;
+笛 < bamboo\-flute;
+歧 < fork\-of\-road;
+鉛 < lead\-plumbum;
+喃 < keep\-talking;
+舱 < hold\-of\-ship;
+醜 < ugly\-looking;
+裘 < fur\-garments;
+栽 < to\-cultivate;
+诧 < be\-surprised;
+阎 < village\-gate;
+愣 < be\-in\-a\-daze;
+琪 < type\-of\-jade;
+娥 < be\-beautiful;
+咪 < sound\-of\-cat;
+渗 < soak\-through;
+葫 < bottle\-gourd;
+坪 < level\-ground;
+坞 < entrenchment;
+橡 < chestnut\-oak;
+絮 < waste\-cotton;
+跄 < walk\-rapidly;
+屹 < to\-rise\-high;
+惘 < disconcerted;
+揩 < rub\-and\-wipe;
+楠 < name\-of\-tree;
+麓 < foot\-of\-hill;
+恻 < feel\-anguish;
+桅 < mast\-of\-ship;
+骋 < gallop\-horse;
+蹒 < to\-jump\-over;
+祀 < to\-sacrifice;
+寰 < great\-domain;
+斓 < multicolored;
+伫 < look\-towards;
+躏 < trample\-down;
+沽 < buy\-and\-sell;
+珥 < ear\-ornament;
+笆 < bamboo\-fence;
+虬 < young\-dragon;
+惬 < be\-satisfied;
+缨 < a\-chin\-strap;
+劾 < examine\-into;
+嘤 < seek\-friends;
+诃 < scold\-loudly;
+冽 < cold\-and\-raw;
+飨 < host\-banquet;
+怏 < discontented;
+冢 < burial\-mound;
+嗳 < interjection;
+宕 < stone\-quarry;
+耆 < man\-of\-sixty;
+靓 < make\-up\-face;
+蛰 < to\-hibernate;
+掼 < throw\-ground;
+囤 < grain\-basket;
+筱 < dwarf\-bamboo;
+樟 < camphor\-tree;
+鲥 < reeves''\-shad;
+逵 < thoroughfare;
+岷 < min\-mountain;
+枰 < smooth\-board;
+屐 < wooden\-shoes;
+胛 < the\-shoulder;
+鹞 < sparrow\-hawk;
+犄 < animal\-horns;
+跹 < wander\-about;
+昱 < bright\-light;
+湄 < water''s\-edge;
+菅 < coarse\-grass;
+绻 < affectionate;
+篁 < bamboo\-grove;
+赅 < prepared\-for;
+椁 < outer\-coffin;
+纰 < spoiled\-silk;
+鼋 < large\-turtle;
+醐 < purest\-cream;
+龉 < uneven\-teeth;
+苻 < kind\-of\-herb;
+鬣 < horse''s\-mane;
+缗 < fishing\-line;
+湫 < a\-small\-pond;
+仟 < one\-thousand;
+蚶 < kind\-of\-clam;
+蛄 < mole\-cricket;
+毂 < hub\-of\-wheel;
+畚 < straw\-basket;
+洄 < a\-back\-water;
+飧 < evening\-meal;
+醪 < unclear\-wine;
+骝 < famous\-horse;
+骒 < mother\-horse;
+懔 < be\-afraid\-of;
+劓 < cut\-off\-nose;
+踔 < to\-get\-ahead;
+颡 < the\-forehead;
+潲 < driving\-rain;
+缯 < silk\-fabrics;
+甓 < glazed\-tiles;
+荬 < a\-plant\-name;
+柒 < number\-seven;
+瘳 < to\-be\-healed;
+谇 < speak\-ill\-of;
+乇 < to\-depend\-on;
+其他的人 < other\-people;
+加緊 < to\-intensify;
+萬事達 < master\(card\);
+睡覺 < to\-go\-to\-bed;
+早期 < early\-period;
+約珥書 < book\-of\-joel;
+媒體報導 < media\-report;
+相關 < interrelated;
+艾滋病患者 < aids\-patient;
+火龍 < fiery\-dragon;
+合作 < to\-cooperate;
+賠償金 < compensation;
+簿記管理員 < commissarian;
+智力 < intelligence;
+示威者 < demonstrator;
+昔年 < former\-years;
+和平條約 < peace\-treaty;
+毛主席 < chairman\-mao;
+礦井 < mine\-\(shaft\);
+熟知 < acquaintance;
+支票 < \(bank\)\-check;
+建築物 < \(a\)\-building;
+姐姐 < older\-sister;
+股票市場 < stock\-market;
+閱覽室 < reading\-room;
+警報 < \(fire\)\-alarm;
+後果 < consequences;
+不名譽 < disreputable;
+收盤 < market\-close;
+城防 < city\-defence;
+頂住 < to\-withstand;
+西部 < western\-part;
+好感 < good\-opinion;
+機械碼 < machine\-code;
+失業 < unemployment;
+擅自 < unauthorized;
+大驚失色 < apprehensive;
+高層旅館 < luxury\-hotel;
+逕自 < on\-one''s\-own;
+近視 < shortsighted;
+步犁 < walking\-plow;
+不成功 < unsuccessful;
+水滸傳 < water\-margin;
+不重視 < indifference;
+開關 < power\-switch;
+去世 < to\-pass\-away;
+亞洲與太平洋 < asia\-pacific;
+十九歲 < 19\-years\-old;
+靈的世界 < spirit\-world;
+多方 < in\-many\-ways;
+搶購 < panic\-buying;
+巡迴 < to\-go\-around;
+這種 < this\-kind\-of;
+大意 < general\-idea;
+半文盲 < semiliterate;
+別稱 < another\-name;
+步步 < step\-by\-step;
+協商 < consult\-with;
+矮星 < dwarf\-\(star\);
+核武器試驗 < nuclear\-test;
+丙烯酸 < acrylic\-acid;
+半熟練 < semi\-skilled;
+那時 < at\-that\-time;
+吃不開 < be\-unpopular;
+大師 < great\-master;
+組織 < organization;
+出乎預料 < unexpectedly;
+通用 < common\-\(use\);
+多工 < to\-multiplex;
+糾葛 < entanglement;
+試探 < to\-sound\-out;
+夫妻 < man\-and\-wife;
+地方主義 < \"local\-\-ism\";
+道歉 < to\-apologize;
+故意 < deliberately;
+請問 < may\-i\-ask\.\.\.;
+激光唱片 < compact\-disk;
+二十一世紀 < 21st\-century;
+出發 < to\-start\-out;
+縮寫 < abbreviation;
+中央銀行 < central\-bank;
+壁掛 < wall\-hanging;
+熟悉 < to\-know\-well;
+熟思 < deliberation;
+整天 < all\-day\-long;
+鱉甲 < turtle\-shell;
+身體 < \(human\)\-body;
+斯密約瑟 < joseph\-smith;
+糾纏 < be\-entangled;
+不合理 < unreasonable;
+目前世界 < modern\-world;
+複製 < to\-duplicate;
+隊旗 < team\-pennant;
+加強 < to\-reinforce;
+出獄 < leave\-prison;
+不愉快 < disagreeable;
+談判 < to\-negotiate;
+看病 < see\-a\-doctor;
+民意調查 < opinion\-poll;
+很不 < very\-un\-\.\.\.\.;
+毅力 < perseverance;
+落實 < to\-implement;
+支店 < branch\-store;
+齆 < stuffed\-noze;
+鼽 < clogged\-nose;
+白薯 < sweet\-potato;
+綵旗 < colored\-flag;
+養雞場 < chicken\-farm;
+麕 < muntjac\-deer;
+現代音樂 < modern\-music;
+回顧 < to\-look\-back;
+殭化 < become\-rigid;
+鳐 < the\-nautilus;
+鱑 < the\-sturgeon;
+鱂 < name\-of\-fish;
+製造業者 < manufacturer;
+膝上型 < laptop\-\(adj\);
+瀏覽 < to\-skim\-over;
+心理學家 < psychologist;
+魦 < shark\-family;
+鬵 < big\-iron\-pot;
+鬅 < unkempt\-hair;
+課余 < after\-school;
+車道 < traffic\-lane;
+正如 < be\-just\-like;
+驈 < black\-horses;
+騆 < divine\-horse;
+駜 < strong\-horse;
+駗 < chatter\-mark;
+有條有理地 < methodically;
+不是玩兒的 < it''s\-no\-joke;
+實際性 < practicality;
+十一年 < eleven\-years;
+餀 < tainted\-food;
+不能抵抗 < irresistible;
+颭 < sway\-in\-wind;
+紙牌 < playing\-card;
+鞦 < leather\-stap;
+過境簽証 < transit\-visa;
+霑 < be\-moistened;
+陁 < a\-steep\-bank;
+發紅 < flush\-\(face\);
+集合 < congregation;
+速成 < crash\-course;
+闑 < the\-doorsill;
+光線 < optical\-line;
+镨 < praseodymium;
+努力 < great\-effort;
+引入 < to\-draw\-into;
+廠址 < factory\-site;
+鏷 < protactinium;
+相似性 < ressemblance;
+非同步 < asynchronous;
+鍊 < smelt\-metals;
+錈 < to\-bend\-iron;
+傳道書 < ecclesiastes;
+隨同 < accompanying;
+耶穌基督 < jesus\-christ;
+熒光 < flourescence;
+記者報導 < press\-report;
+釪 < an\-alms\-bowl;
+廣告 < to\-advertise;
+醽 < kind\-of\-wine;
+挨近 < get\-close\-to;
+編劇 < write\-a\-play;
+壓倒 < overwhelming;
+採脂 < tree\-tapping;
+郙 < to\-be\-exiled;
+邲 < good\-looking;
+迣 < to\-leap\-over;
+速寫 < quick\-sketch;
+多工作業 < multitaksing;
+發言人 < spokesperson;
+踼 < to\-fall\-flat;
+踤 < butt\-against;
+集中器 < concentrator;
+不大離兒 < pretty\-close;
+週圍 < surroundings;
+濾紙 < filter\-paper;
+賉 < to\-give\-alms;
+貆 < small\-badger;
+豶 < castrate\-pig;
+足球迷 < football\-fan;
+本來面目 < true\-colours;
+訪俄 < visit\-russia;
+拔錨 < weigh\-anchor;
+標燈 < beacon\-light;
+冰晶 < ice\-crystals;
+誾 < speak\-gently;
+幾天 < several\-days;
+授精 < insemination;
+髒話 < bad\-language;
+凹岸 < concave\-bank;
+襛 < fine\-clothes;
+襆 < hood\-or\-cowl;
+過來 < to\-come\-over;
+操勞 < to\-work\-hard;
+那樣的 < that\-kind\-of;
+光源 < light\-source;
+粗俗的階級 < vulgar\-class;
+速凍 < quick\-freeze;
+網路節點 < network\-node;
+坐牢 < imprisonment;
+補牙 < fill\-a\-tooth;
+刨刀 < planing\-tool;
+把關 < guard\-a\-pass;
+打印服務器 < print\-server;
+不可收拾 < irremediable;
+半邊天 < half\-the\-sky;
+葜 < smilax\-china;
+萩 < scandent\-hop;
+萘 < naphthanlene;
+自衛 < self\-defense;
+賓西法尼亞 < pennsylvania;
+莦 < jungle\-grass;
+國家機密 < state\-secret;
+陛下 < your\-majesty;
+八月 < eighth\-month;
+芚 < green\-sprout;
+備考 < \(an\-appendix;
+芑 < white\-millet;
+年前 < \.\.\.years\-ago;
+膗 < ugly\-and\-fat;
+開支 < expenditures;
+捏積 < chiropractic;
+葡萄酒 < \(grape\)\-wine;
+肙 < a\-small\-worm;
+羀 < fishing\-trap;
+調查人員 < investigator;
+武裝部隊 < armed\-forces;
+報價 < quoted\-price;
+迷信 < superstition;
+纁 < shade\-of\-red;
+繙 < to\-interpret;
+縕 < tangled\-hemp;
+轉換 < to\-transform;
+搬家 < move\-\(house\);
+戶頭 < bank\-account;
+農作物 < \(farm\)\-crops;
+籯 < bamboo\-chest;
+四十多 < more\-than\-40;
+親信 < trusted\-aide;
+筤 < young\-bamboo;
+行程 < travel\-route;
+筍 < bamboo\-shoot;
+筅 < bamboo\-brush;
+嚴竣 < tight\.strict;
+證實禮 < confirmation;
+名錄服務 < name\-service;
+秬 < black\-millet;
+看作 < look\-upon\-as;
+語音信號 < voice\-signal;
+寧願 < would\-rather;
+祘 < to\-calculate;
+磠 < sal\-ammoniac;
+碶 < a\-flood\-gate;
+接枝 < \(tree\)\-graft;
+授權 < to\-authorize;
+矼 < stone\-bridge;
+開學 < school\-opens;
+睒 < to\-glance\-at;
+保證 < to\-guarantee;
+批評 < to\-criticize;
+宇航局 < space\-agency;
+皦 < bright\-white;
+令人驚異 < surprisingly;
+瘺 < anal\-fistula;
+去國外 < to\-go\-abroad;
+疿 < prickly\-heat;
+拔絲 < wire\-drawing;
+打賭 < \(make\-a\)\-bet;
+優惠 < preferential;
+第二位 < second\-place;
+公報 < announcement;
+基礎設施 < base\-station;
+密集 < concentrated;
+授時 < time\-service;
+在旁 < by\-\(a\-place\);
+同時代 < contemporary;
+玍 < ill\-tempered;
+拼盤 < cold\-platter;
+狆 < pekinese\-dog;
+牂 < female\-sheep;
+捐款 < donate\-money;
+副總理 < vice\-premier;
+國有 < nationalized;
+系上 < to\-buckle\-up;
+背離 < deviate\-from;
+按照 < according\-to;
+偶然 < incidentally;
+喉鏡 < laryngoscope;
+背陰 < in\-the\-shade;
+生命跡象 < sign\-of\-life;
+兩千 < two\-thousand;
+滊 < a\-river\-name;
+路得記 < book\-of\-ruth;
+插圖 < illustration;
+泖 < still\-waters;
+知識分子 < intellectual;
+管理 < to\-supervise;
+三合一 < three\-in\-one;
+毈 < fertile\-eggs;
+殜 < half\-sitting;
+四百萬 < four\-million;
+梅花 < plum\-blossom;
+阿摩司書 < book\-of\-amos;
+當然 < only\-natural;
+橒 < wood\-streaks;
+高質量 < high\-quality;
+標價 < mark\-a\-price;
+槻 < zelkova\-tree;
+棒硫 < roll\-sulphur;
+槔 < water\-pulley;
+夢游症 < to\-sleepwalk;
+耶利米哀歌 < lamentations;
+饅頭 < steamed\-roll;
+保管 < take\-care\-of;
+用戶定義 < user\-defined;
+垂下 < to\-hang\-down;
+成吉思汗 < genghis\-khan;
+摙 < to\-transport;
+裁員 < to\-cut\-staff;
+清醒 < clear\-headed;
+補充 < to\-replenish;
+不結盟 < nonalignment;
+揑 < to\-fabricate;
+八級風 < force\-8\-wind;
+戉 < a\-battle\-axe;
+便秘 < constipation;
+病床 < hospital\-bed;
+幼兒園 < kindergarten;
+桔子水 < orange\-juice;
+枘鑿 < incompatible;
+主幹網路 < core\-network;
+廹 < to\-persecute;
+創造性 < creativeness;
+嚮往 < to\-yearn\-for;
+自拔 < free\-oneself;
+帨 < handkerchief;
+嶢 < high\-or\-tall;
+屘 < the\-youngest;
+航天 < space\-flight;
+高密 < high\-density;
+表土 < surface\-soil;
+歷代志下 < 2\-chronicles;
+歷代志上 < 1\-chronicles;
+嫲 < grand\-mother;
+賞識 < appreciation;
+消除 < to\-eliminate;
+瑞色 < lovely\-color;
+聽說 < to\-hear\-told;
+周總理 < premier\-zhou;
+執政黨 < ruling\-party;
+當心 < to\-take\-care;
+異性 < heterosexual;
+交鋒 < cross\-swords;
+興奮 < \(be\)\-excited;
+指令名字 < command\-name;
+禽類 < bird\-species;
+母親節 < mother''s\-day;
+喭 < condole\-with;
+一小部分 < a\-small\-part;
+偽善 < hypocritical;
+抱愧 < feel\-ashamed;
+呹 < to\-eat\-grass;
+一下兒 < a\-little\-bit;
+負責 < in\-charge\-of;
+現行 < be\-in\-effect;
+屈服 < to\-surrender;
+厷 < the\-fore\-arm;
+減緩 < to\-slow\-down;
+勣 < achievements;
+下齒 < bottom\-teeth;
+媒體 < \(news\)\-media;
+剷 < to\-level\-off;
+驚愕 < astonishment;
+當場 < at\-the\-scene;
+複製品 < reproduction;
+儗 < compare\-with;
+司法權 < jurisdiction;
+婚齡 < marrying\-age;
+抱屈 < feel\-wronged;
+佔便宜 < adventageous;
+佭 < unsubmissive;
+食譜 < cookery\-book;
+丼 < bowl\-of\-food;
+並非 < really\-isn''t;
+突破 < breakthrough;
+鼻中隔 < nasal\-septum;
+新聞處 < news\-service;
+侵晨 < towards\-dawn;
+䴼 < to\-extirpate;
+䴕 < a\-woodpecker;
+漢城 < seoul\,\-korea;
+䳖 < flying\-birds;
+䲜 < lots\-of\-fish;
+䱊 < roe\-or\-spawn;
+䯶 < fair\-of\-hair;
+䯧 < a\-small\-hall;
+運動鞋 < sports\-shoes;
+䮟 < big\-and\-tall;
+少數 < small\-number;
+䮑 < a\-gray\-horse;
+䭘 < well\-stacked;
+䭖 < animal\-feeds;
+拌和 < mix\-and\-stir;
+䭉 < mashed\-beans;
+䬜 < evil\-spirits;
+䬚 < to\-move\-fast;
+䬋 < violent\-wind;
+流通 < to\-circulate;
+䫨 < tall\-and\-big;
+䫚 < short\-headed;
+䫕 < small\-headed;
+咨詢 < consultative;
+䫇 < the\-whiskers;
+扒拉 < push\-lightly;
+䪹 < a\-large\-face;
+䪡 < to\-fall\-down;
+䪋 < silk\-cordage;
+䩏 < a\-small\-face;
+䩋 < a\-green\-face;
+䩇 < a\-small\-head;
+專政 < dictatorship;
+䨶 < thunderstorm;
+䨲 < a\-small\-hare;
+䨪 < a\-dust\-storm;
+䨝 < a\-pure\-woman;
+䨈 < a\-small\-bird;
+飼草 < forage\-grass;
+䧢 < a\-rough\-road;
+䧙 < a\-high\-mound;
+鼻腔 < nasal\-cavity;
+核轟炸 < nuclear\-bomb;
+浴血 < blood\-soaked;
+䥃 < a\-big\-hammer;
+䤬 < a\-small\-gong;
+䤣 < a\-metal\-ring;
+䤋 < yellow\-faced;
+䣾 < cheese\-dregs;
+䣼 < mixed\-starch;
+屬國 < vassal\-state;
+䠔 < far\-and\-deep;
+䟿 < to\-reverence;
+䟹 < to\-hop\-about;
+轉賬卡 < a\-debit\-card;
+鋼筆 < fountain\-pen;
+䟕 < to\-step\-upon;
+䞱 < to\-fall\-over;
+䞧 < hard\-to\-walk;
+偉人 < great\-person;
+安營 < pitch\-a\-camp;
+和解 < conciliatory;
+面對面 < face\-to\-face;
+䚪 < curved\-horns;
+條子 < a\-short\-note;
+揮霍無度 < extravagance;
+根本 < \(not\)\-at\-all;
+䘄 < cicada\-famiy;
+䘀 < grasshoppers;
+䗧 < libellulidae;
+種種 < all\-kinds\-of;
+䖞 < a\-sea\-insect;
+䕻 < to\-adhere\-to;
+䕺 < dense\-growth;
+䕝 < medical\-herb;
+䕋 < of\-elm\-group;
+䓯 < water\-pepper;
+登陸月球 < moon\-landing;
+複寫紙 < carbon\-paper;
+䑽 < a\-large\-boat;
+䑵 < a\-small\-boat;
+法院 < court\-of\-law;
+䐅 < the\-buttocks;
+䏀 < inharmonious;
+䎘 < birds\-flying;
+河馬 < hippopotamus;
+生命 < life\-\(force\);
+䍄 < an\-indenture;
+䌶 < \)\-black\-silk;
+䌇 < a\-thick\-rope;
+主角 < leading\-role;
+淫猥 < abominations;
+產卵 < lay\-\(an\-egg\);
+果皮 < \(fruit\)\-peel;
+䊅 < to\-soak\-rice;
+䉯 < dried\-bamboo;
+䉕 < a\-bamboo\-hat;
+䉔 < bamboo\-slips;
+䈟 < broken\-sound;
+䇸 < a\-bamboo\-mat;
+䇝 < to\-break\-off;
+䆢 < to\-penetrate;
+䆟 < coresponding;
+䆍 < cutted\-crops;
+不足 < insufficient;
+䅁 < to\-husk\-rice;
+打孔器 < hole\-puncher;
+䃲 < a\-great\-rock;
+䃯 < small\-stones;
+䃝 < rugged\-rocks;
+䂐 < short\-stupid;
+䁧 < to\-open\-wide;
+家政 < housekeeping;
+不貲 < immeasurable;
+䀁 < a\-small\-bowl;
+㿵 < soft\-leather;
+㿲 < a\-fierce\-dog;
+㿪 < skin\-disease;
+㿊 < very\-painful;
+㾔 < long\-illness;
+什麼是 < what\-is\-\.\.\.\?;
+軍事援助 < military\-aid;
+凹透鏡 < concave\-lens;
+㼋 < the\-cucumber;
+本本主義 < book\-worship;
+㺖 < dogs\-barking;
+㺎 < fierce\-beast;
+五角大樓 < the\-pentagon;
+㸾 < to\-filled\-up;
+㸭 < the\-opposite;
+㷹 < intense\-heat;
+㶕 < to\-wash\-rice;
+作愛 < to\-make\-love;
+㵊 < moving\-image;
+㴕 < to\-boil\-away;
+㳞 < deep\-and\-far;
+㳑 < to\-flow\-over;
+㰷 < resurrection;
+㯠 < a\-cross\-beam;
+㯜 < decayed\-wood;
+㮮 < a\-well\-sweep;
+㮬 < a\-fruit\-tree;
+蘇聯 < soviet\-union;
+㬵 < the\-shinbone;
+摩西律法 < law\-of\-moses;
+㫒 < hands\-joined;
+害怕 < to\-be\-afraid;
+㫃 < flags\-flying;
+㫁 < to\-cut\-apart;
+晚間 < evening\-time;
+五百 < five\-hundred;
+㧴 < to\-rub\-hands;
+㦎 < cantankerous;
+㥵 < to\-dishonour;
+㤧 < conciliation;
+㣒 < hair\-raising;
+㣑 < double\-image;
+迅速蔓延 < rapid\-spread;
+㢗 < a\-high\-house;
+㡔 < oiled\-calico;
+㡅 < storage\-room;
+證驗 < real\-results;
+㠾 < a\-dish\-cloth;
+懊悔 < feel\-remorse;
+㠒 < mountain\-top;
+㟐 < big\-and\-high;
+㟇 < a\-land\-slide;
+㞢 < to\-arrive\-at;
+㞛 < red\-slippers;
+㞅 < not\-straight;
+古羅馬 < ancient\-rome;
+㜗 < covetousness;
+㛼 < to\-interrupt;
+俄中 < russia\-china;
+㛥 < to\-prostrate;
+㛊 < to\-speculate;
+二十萬 < 200\-thousand;
+㘢 < a\-round\-cave;
+㘍 < sound\-of\-rat;
+變速 < speed\-change;
+㖷 < bird\-singing;
+年輕人 < young\-people;
+㖠 < an\-auxiliary;
+㕯 < slow\-tongued;
+安心 < feel\-at\-ease;
+㕒 < a\-lofty\-peak;
+㔬 < to\-establish;
+㔦 < to\-encourage;
+㔕 < with\-purpose;
+㔃 < to\-cut\-short;
+㓣 < to\-sink\-into;
+人民 < \(the\)\-people;
+將來 < \(the\)\-future;
+㑪 < a\-generation;
+㑔 < all\-together;
+㐸 < to\-own\-money;
+㐴 < to\-drag\-down;
+題花 < title\-design;
+可觀 < considerable;
+人權 < human\-rights;
+乒乓球 < table\-tennis;
+階級式 < hierarchical;
+以斯拉記 < book\-of\-ezra;
+趕上 < keep\-up\-with;
+聽說過 < to\-hear\-said;
+闌尾炎 < appendicitis;
+移民 < to\-immigrate;
+今晨 < this\-morning;
+密友 < close\-friend;
+南非 < south\-africa;
+不符 < inconsistent;
+開放式網路 < open\-network;
+丹田 < pubic\-region;
+半響 < half\-the\-day;
+主環 < primary\-ring;
+大一些 < a\-bit\-bigger;
+你們 < you\-\(plural\);
+一直 < continuously;
+生物戰 < germ\-warfare;
+不知所措 < be\-at\-a\-loss;
+暗算 < plot\-against;
+建設性 < constructive;
+亮度 < illumination;
+參考 < consultation;
+喉塞音 < glottal\-stop;
+壯麗 < magnificence;
+黨政 < party\-policy;
+檔案服務 < file\-servoce;
+虐待 < mistreatment;
+感恩 < thanksgiving;
+大都會 < metropolitan;
+罰球 < penalty\-shot;
+費城 < philadelphia;
+最低點 < lowest\-point;
+油畫 < oil\-painting;
+美洲 < the\-americas;
+貧困 < impoverished;
+降落地點 < landing\-site;
+基督教 < christianity;
+大量 < great\-amount;
+頂用 < to\-be\-of\-use;
+安眠酮 < methaqualone;
+暗灘 < hidden\-shoal;
+藥方 < prescription;
+試驗性 < experimental;
+主持 < preside\-over;
+銀幕 < movie\-screen;
+老家 < native\-place;
+暗潮 < undercurrent;
+買價 < buying\-price;
+多邊 < multilateral;
+現代 < modern\-times;
+他人 < other\-person;
+之後 < after\(wards\);
+慣例 < conventional;
+並排 < side\-by\-side;
+耕地 < ariable\-land;
+貴族化 < aristocratic;
+浴場 < bathing\-spot;
+五百萬 < five\-million;
+蓋菜 < leaf\-mustard;
+冰洲石 < iceland\-spar;
+核軍備 < nuclear\-arms;
+不拘 < not\-stick\-to;
+三十五億 < 3\-\.5\-billion;
+鞭砲 < firecrackers;
+二十六歲 < 26\-years\-old;
+感動 < to\-move\-\(sb\);
+意味 < significance;
+速記員 < stenographer;
+白水泥 < white\-cement;
+不愧 < be\-worthy\-of;
+靶紙 < target\-sheet;
+數據網絡 < data\-network;
+龐然大物 < huge\-monster;
+象聲詞 < onomatopoeia;
+愈加 < all\-the\-more;
+遠離 < removed\-from;
+和善 < good\-natured;
+認證 < authenticate;
+刨齒 < gear\-shaping;
+注意 < take\-note\-of;
+風味 < local\-flavor;
+繡花 < to\-embroider;
+暗探 < secret\-agent;
+暴怒 < violent\-rage;
+不容 < not\-tolerate;
+不宜 < not\-suitable;
+犯毒 < illegal\-drug;
+世界知名 < world\-famous;
+幀格式 < frame\-format;
+大致 < more\-or\-less;
+不如 < not\-equal\-to;
+得票 < vote\-getting;
+派別 < denomination;
+線軸 < thread\-spool;
+有利 < advantageous;
+衛生紙 < toilet\-paper;
+訂閱 < subscription;
+恢復 < to\-reinstate;
+這項 < this\-\(thing\);
+快速發展 < rapid\-growth;
+多種語言 < multilingual;
+可惜 < it\-is\-a\-pity;
+當時的 < of\-that\-time;
+婚外 < extramarital;
+不單 < not\-the\-only;
+安全問題 < safety\-issue;
+之一 < one\-of\-\(sth\);
+境遇 < circumstance;
+野心 < wild\-schemes;
+卻步 < to\-step\-back;
+中俄 < china\-russia;
+危殆 < grave\-danger;
+中亞 < central\-asia;
+變性 < denaturation;
+原料 < raw\-material;
+消防栓 < fire\-hydrant;
+不利 < unfavourable;
+透明度 < transparency;
+爆發 < to\-break\-out;
+多站 < multistation;
+氧氣 < oxygen\-\(gas\);
+念日 < memorial\-day;
+各國 < each\-country;
+不便 < inconvenient;
+時態 < \(verb\)\-tense;
+羅列 < to\-spead\-out;
+一億 < 1\-00\-million;
+暴動 < insurrection;
+靶機 < target\-drone;
+運行 < be\-in\-motion;
+編舞 < choreography;
+二十七 < twenty\-seven;
+以 < by\-means\-of;
+農 < agriculture;
+径 < narrow\-path;
+几 < small\-table;
+便 < convenience;
+电 < electricity;
+百 < one\-hundred;
+跣 < bare\-footed;
+贅 < unnecessary;
+功 < achievement;
+江 < large\-river;
+注 < concentrate;
+牧 < tend\-cattle;
+婚 < get\-married;
+刊 < publication;
+熟 < well\-cooked;
+饭 < cooked\-rice;
+奢 < extravagant;
+查 < investigate;
+章 < composition;
+按 < put\-hand\-on;
+蝠 < kind\-of\-bat;
+蝕 < nibble\-away;
+困 < to\-surround;
+险 < narrow\-pass;
+练 < to\-practice;
+溯 < go\-upstream;
+渉 < ford\-stream;
+败 < be\-defeated;
+纷 < in\-disorder;
+缺 < be\-short\-of;
+遭 < come\-across;
+戴 < wear\-on\-top;
+勤 < industrious;
+髄 < bone\-marrow;
+効 < efficacious;
+貌 < countenance;
+繁 < complicated;
+柳 < willow\-tree;
+凄 < bitter\-cold;
+霞 < rosy\-clouds;
+飴 < sweet\-meats;
+聪 < intelligent;
+倦 < be\-tired\-of;
+摔 < fall\-ground;
+醉 < intoxicated;
+涛 < large\-waves;
+锅 < cooking\-pot;
+仔 < small\-thing;
+會 < to\-assemble;
+拆 < to\-break\-up;
+翠 < color\-green;
+晕 < halo\-in\-sky;
+辨 < distinguish;
+葛 < edible\-bean;
+轿 < sedan\-chair;
+攫 < snatch\-away;
+鍛 < forge\-metal;
+厕 < mingle\-with;
+竿 < bamboo\-pole;
+券 < certificate;
+穉 < young\-grain;
+驳 < varicolored;
+憔 < be\-worn\-out;
+粞 < ground\-rice;
+遂 < comply\-with;
+隶 < subservient;
+缸 < earthen\-jug;
+肢 < human\-limbs;
+尴 < embarrassed;
+呐 < raise\-voice;
+颖 < rice\-tassel;
+砥 < a\-whetstone;
+孕 < be\-pregnant;
+钞 < paper\-money;
+琢 < polish\-jade;
+绽 < ripped\-seam;
+奠 < pay\-respect;
+澜 < overflowing;
+惕 < be\-cautious;
+趴 < lying\-prone;
+隋 < sui\-dynasty;
+瞄 < take\-aim\-at;
+祟 < evil\-spirit;
+嗔 < be\-angry\-at;
+奕 < in\-sequence;
+榴 < pomegranate;
+棘 < jujube\-tree;
+峙 < stand\-erect;
+砌 < stone\-steps;
+槐 < locust\-tree;
+鳞 < fish\-scales;
+炽 < burning\-hot;
+迂 < doctrinaire;
+缪 < wind\-around;
+凋 < be\-withered;
+缤 < flourishing;
+雳 < thunderclap;
+驸 < extra\-horse;
+嗷 < loud\-clamor;
+炖 < stew\-slowly;
+谏 < remonstrate;
+篆 < seal\-script;
+宦 < officialdom;
+瓮 < earthen\-jar;
+朕 < pronoun\-''i'';
+阑 < door\-screen;
+卤 < saline\-soil;
+唏 < weep\-or\-sob;
+汩 < run\-swiftly;
+榕 < banyan\-tree;
+闰 < intercalary;
+昊 < summer\-time;
+玷 < flaw\-in\-gem;
+阙 < watch\-tower;
+泌 < to\-seep\-out;
+烽 < signal\-fire;
+孵 < sit\-on\-eggs;
+椭 < oval\-shaped;
+痉 < convulsions;
+匝 < full\-circle;
+饪 < cooked\-food;
+嶙 < precipitous;
+颧 < cheek\-bones;
+镗 < boring\-tool;
+揶 < make\-fun\-of;
+炷 < candle\-wick;
+贲 < forge\-ahead;
+蚱 < grasshopper;
+痨 < consumption;
+濂 < a\-waterfall;
+汐 < night\-tides;
+筠 < bamboo\-skin;
+氤 < hanging\-fog;
+痔 < hemorrhoids;
+趿 < to\-tread\-on;
+觞 < wine\-vessel;
+挹 < to\-bale\-out;
+膑 < the\-kneecap;
+唳 < cry\-of\-bird;
+礅 < stone\-block;
+箔 < reed\-screen;
+豸 < radical\-153;
+烃 < hydrocarbon;
+砭 < stone\-probe;
+澍 < timely\-rain;
+龋 < tooth\-decay;
+缱 < attached\-to;
+奂 < be\-numerous;
+黩 < to\-dishonor;
+壅 < to\-obstruct;
+澶 < still\-water;
+餍 < be\-satiated;
+枥 < type\-of\-oak;
+桕 < tallow\-tree;
+鲢 < silver\-carp;
+趱 < go\-in\-hurry;
+妫 < family\-name;
+暾 < morning\-sun;
+荦 < brindled\-ox;
+邛 < in\-distress;
+戢 < to\-put\-away;
+榧 < type\-of\-yew;
+堇 < yellow\-loam;
+劬 < be\-diligent;
+魈 < mischevious;
+鍪 < an\-iron\-pan;
+蜣 < dung\-beetle;
+痦 < \(flat\)\-mole;
+戬 < exterminate;
+嗉 < bird''s\-crop;
+儋 < a\-small\-jar;
+蚜 < plant\-louse;
+粜 < sell\-grains;
+攮 < to\-fend\-off;
+苎 < china\-grass;
+坩 < earthenware;
+榉 < type\-of\-elm;
+玢 < porphyrites;
+绁 < to\-contract;
+潆 < tiny\-stream;
+髹 < red\-lacquer;
+觖 < to\-long\-for;
+螵 < a\-chrysalis;
+杪 < tip\-of\-twig;
+幂 < cover\-cloth;
+硗 < barren\-land;
+脞 < minced\-meat;
+轵 < end\-of\-axle;
+楗 < bar\-of\-door;
+桄 < a\-coir\-palm;
+堠 < battlements;
+俜 < to\-trust\-to;
+壓縮 < to\-compress;
+大規模 < large\-scale;
+度量衡 < measurement;
+航空術 < aeronautics;
+訪華 < visit\-china;
+認知 < acknowledge;
+叫喊 < exclamation;
+訪問者 < interviewer;
+沉重打擊 < to\-hit\-hard;
+連詞 < conjunction;
+好朋友 < good\-friend;
+四面體 < tetrahedron;
+自然而然 < involuntary;
+弊端 < malpractice;
+非核 < non\-nuclear;
+拔釘錘 < claw\-hammer;
+申命記 < deuteronomy;
+收穫 < acquisition;
+才外流 < brain\-drain;
+民族 < nationality;
+不贊一詞 < keep\-silent;
+暗井 < blind\-shaft;
+暗中 < in\-the\-dark;
+矚目 < to\-focus\-on;
+布鞋 < cloth\-shoes;
+人體器官 < human\-organ;
+埋頭 < steamed\-bun;
+創作力 < originality;
+白矮星 < white\-dwarf;
+判處 < to\-sentance;
+民族主義 < nationalism;
+刻苦 < hardworking;
+標點 < punctuation;
+白麵 < wheat\-flour;
+冒險 < take\-a\-risk;
+白鶴 < white\-crane;
+不贊成 < disapproval;
+往昔 < in\-the\-past;
+半月刊 < semimonthly;
+邊疆 < border\-area;
+讓位 < to\-abdicate;
+怪僻 < peculiarity;
+征收 < levy\-\(fine\);
+母板 < motherboard;
+需求 < requirement;
+大業 < great\-cause;
+旺季 < busy\-season;
+備用環 < backup\-ring;
+必定 < be\-bound\-to;
+半年 < half\-a\-year;
+課桌 < school\-desk;
+滴答聲 < tick\-\(tock\);
+間隔 < compartment;
+遲疑 < to\-hesitate;
+靈感 < inspiration;
+精子密度 < sperm\-count;
+溫度計 < thermograph;
+遷居移民 < immigration;
+不重要 < unimportant;
+野生動物 < wild\-animal;
+說服 < to\-persuade;
+制約 < to\-restrict;
+有影響 < influential;
+鞏固 < consolidate;
+發電廠 < power\-plant;
+聖誕老人 < santa\-claus;
+包括 < to\-comprise;
+妥善 < appropriate;
+辯証 < dialectical;
+浪漫主義 < romanticism;
+柏林牆 < berlin\-wall;
+瀉鹽 < epsom\-salts;
+不可知論 < agnosticism;
+不切實際 < unrealistic;
+典型用途 < typical\-use;
+富於想像 < imaginative;
+巡邏艇 < patrol\-boat;
+不含糊 < unambiguous;
+本土化 < to\-localize;
+即刻 < immediately;
+安全燈 < safety\-lamp;
+勘探 < exploration;
+有意思 < interesting;
+博取 < try\-to\-gain;
+窗玻璃 < window\-pane;
+放棄 < to\-renounce;
+冰蛋 < frozen\-eggs;
+郵局 < post\-office;
+雙數 < even\-number;
+蒐尋 < to\-look\-for;
+白道 < moon''s\-path;
+動態 < development;
+永久 < everlasting;
+發送 < to\-transmit;
+配備 < to\-allocate;
+新西蘭 < new\-zealand;
+比如 < for\-example;
+國事訪問 < state\-visit;
+克裡姆林宮 < the\-kremlin;
+多山 < mountainous;
+半半拉拉 < incompleted;
+電工 < electrician;
+紅色 < red\-\(color\);
+描述 < to\-describe;
+十億 < one\-billion;
+不可分離 < inseparable;
+兵蟻 < soldier\-ant;
+毀壞 < destruction;
+削減 < to\-cut\-down;
+日中 < japan\-china;
+電纜調制解調器 < cable\-modem;
+隨時 < at\-any\-time;
+一千零五十億 < 105\-billion;
+長談 < a\-long\-talk;
+補選 < by\-election;
+敗血症 < septicaemia;
+無產階級 < proletariat;
+落後 < fall\-behind;
+分佈式 < distrubuted;
+失去意識 < unconscious;
+推遲 < to\-postpone;
+百萬富翁 < millionaire;
+貴族社會 < aristocracy;
+操法 < drill\-rules;
+軍隊 < army\-troops;
+樹葉 < tree\-leaves;
+剛架 < rigid\-frame;
+談到 < to\-refer\-to;
+再者 < furthermore;
+調制 < to\-modulate;
+基石 < cornerstone;
+往事 < past\-events;
+麀 < female\-deer;
+大功 < great\-merit;
+有些人 < some\-people;
+裁軍 < disarmament;
+誡命 < commandment;
+鸏 < tropic\-bird;
+內臣 < chamberlain;
+波多黎各 < puerto\-rico;
+鴺 < the\-pelican;
+立法機關 < legislature;
+鱠 < minced\-fish;
+鬙 < matted\-hair;
+坦蕩 < magnanimous;
+不吐氣 < unaspirated;
+主要原因 < main\-reason;
+增強 < to\-increase;
+驔 < black\-horse;
+驇 < heavy\-horse;
+有經驗 < experienced;
+限於 < restrict\-at;
+閉經 < amenorrhoea;
+認出 < recognition;
+免職 < degradation;
+工程 < engineering;
+記得 < to\-remember;
+擺布 < order\-about;
+頋 < to\-care\-for;
+透明 < transparent;
+力圖 < try\-hard\-to;
+有生以來 < since\-birth;
+鞫 < interrogate;
+貝加爾湖 < lake\-baikal;
+典禮 < celebration;
+刑期 < prison\-term;
+精簡 < to\-simplify;
+和平會談 < peace\-talks;
+花茶 < scented\-tea;
+散佈 < disseminate;
+簿記 < bookkeeping;
+太平洋週邊 < pacific\-rim;
+觸怒 < provocation;
+攪和 < to\-mix\-\(up\);
+週年 < anniversary;
+絕望 < desperation;
+敗仗 < lost\-battle;
+不變價格 < fixed\-price;
+鐦 < californium;
+結束 < termination;
+無意 < inadvertant;
+鏻 < phosphonium;
+男朋友 < male\-friend;
+相比 < compared\-to;
+覆沒 < annihilated;
+白皮書 < white\-paper;
+鍐 < a\-headstall;
+眉梢 < tip\-of\-brow;
+切換 < to\-cut\-over;
+翻譯者 < interpreter;
+兩百 < two\-hundred;
+女繼承人 < inheritress;
+假設語氣 < subjunctive;
+地心吸力 < gravitation;
+醹 < strong\-wine;
+醓 < salted\-meat;
+不注意 < thoughtless;
+評價 < to\-evaluate;
+酏 < millet\-wine;
+保不住 < most\-likely;
+崩裂 < burst\-apart;
+巴哈馬 < the\-bahamas;
+激光二極管 < laser\-diode;
+發送器 < transmitter;
+加以 < in\-addition;
+按鈕 < push\-button;
+迊 < to\-go\-round;
+報應 < retribution;
+幾年 < a\-few\-years;
+盼望 < to\-hope\-for;
+隊員 < team\-member;
+行蹤 < whereabouts;
+支付 < pay\-\(money\);
+第一章 < chapter\-one;
+運貨馬車 < cargo\-wagon;
+表語 < predicative;
+輦 < a\-hand\-cart;
+註冊 < to\-register;
+附屬 < subordinate;
+連環圖 < comic\-strip;
+偽軍 < puppet\-army;
+優秀 < outstanding;
+贗 < counterfeit;
+貘 < the\-panther;
+體貼 < considerate;
+豦 < a\-wild\-boar;
+豘 < a\-small\-pig;
+執政 < be\-in\-power;
+在地下 < underground;
+第三世界 < third\-world;
+魚竿 < fishing\-rod;
+無關緊要 < indifferent;
+希望 < ro\-wish\-for;
+約會 < appointment;
+體認 < realization;
+幸好 < fortunately;
+授粉 < pollination;
+觱 < tartar\-horn;
+褵 < bridal\-veil;
+製片 < moviemaking;
+傳真機 < fax\-machine;
+機會 < opportunity;
+關押 < put\-in\-jail;
+大便乾燥 < constipated;
+裝甲車 < armored\-car;
+蠋 < caterpillar;
+不偏不倚 < even\-handed;
+蟛 < a\-land\-crab;
+灌溉 < to\-irrigate;
+通告 < to\-announce;
+蝛 < the\-sow\-bug;
+蝍 < a\-centipede;
+驕陽 < blazing\-sun;
+前任 < predecessor;
+藚 < water\-plant;
+分散注意 < to\-distract;
+藄 < edible\-fern;
+軟碟 < floppy\-disk;
+蓪 < paper\-plant;
+蓂 < lucky\-place;
+蒭 < to\-cutgrass;
+萐 < lucky\-plant;
+菢 < to\-incubate;
+獲益者 < beneficiary;
+屏門 < screen\-door;
+拜訪 < pay\-a\-visit;
+半透明 < translucent;
+艗 < bow\-of\-junk;
+退出 < to\-withdraw;
+採煤 < coal\-mining;
+第一流 < first\-class;
+平凡 < commonplace;
+謀殺案 < murder\-case;
+括號 < parenthesis;
+胔 < rotten\-meat;
+肈 < to\-commence;
+聦 < the\-hearing;
+耑 < specialized;
+羖 < a\-black\-ram;
+獎學金 < scholarship;
+罱 < fishing\-net;
+滲透 < to\-permeate;
+罠 < animal\-trap;
+罒 < radical\-122;
+偷聽 < to\-evesdrop;
+出兵 < send\-troops;
+培土 < to\-earth\-up;
+開戰 < start\-a\-war;
+分佈 < distributed;
+迷人 < fascinating;
+不動產 < real\-estate;
+糢 < rice\-snacks;
+出來 < to\-come\-out;
+信道 < signal\-path;
+啟示錄 < revelations;
+簹 < tall\-bamboo;
+簵 < fine\-bamboo;
+簰 < bamboo\-raft;
+魔法 < enchantment;
+申請 < apply\-\(for\);
+第三方 < third\-party;
+筩 < bamboo\-pipe;
+筊 < bamboo\-rope;
+筇 < bamboo\-name;
+跑車 < racing\-bike;
+笯 < a\-bird\-cage;
+表蒙子 < watch\-glass;
+擺架子 < put\-on\-airs;
+窸 < faint\-sound;
+不確定 < uncertainty;
+八年 < eight\-years;
+穵 < deep\-hollow;
+超級市場 < supermarket;
+磹 < stone\-wedge;
+碔 < \/2\-pr\-stone;
+籌款 < fundraising;
+域名 < domain\-name;
+砃 < white\-stone;
+瞵 < to\-stare\-at;
+古典派 < classicists;
+八字 < character\-8;
+相似 < to\-resemble;
+挪用 < to\-embezzle;
+可行性 < feasibility;
+眥 < eye\-sockets;
+眑 < sunken\-eyes;
+眊 < dim\-sighted;
+瘚 < to\-hiccough;
+痳 < pock\-marked;
+痭 < menorrhagia;
+痃 < indigestion;
+裝扮 < dress\-up\-as;
+城區 < city\-proper;
+溝通 < communicate;
+為了 < in\-order\-to;
+白宮 < white\-house;
+合法化 < to\-legalize;
+冠冕 < royal\-crown;
+珽 < jade\-tablet;
+像樣 < presentable;
+巧合 < coincidence;
+狢 < animal\-name;
+戰車 < war\-chariot;
+探照燈 < searchlight;
+安寧片 < meprobamate;
+白夜 < white\-night;
+是不是 < is\-or\-isn''t;
+花店 < flower\-shop;
+便覽 < brief\-guide;
+燖 < reheat\-food;
+舊版 < old\-version;
+多工器 < multiplexer;
+煟 < bright\-room;
+煏 < dry\-by\-fire;
+煆 < raging\-fire;
+因此 < that\-is\-why;
+潾 < clear\-water;
+勞動力 < labor\-force;
+語言學 < linguistics;
+潠 < to\-blow\-out;
+滷 < thick\-gravy;
+分期付款 < installment;
+瑞雪 < timely\-snow;
+渟 < not\-flowing;
+公元 < \(year\)\-a\.d\.;
+浡 < burst\-forth;
+幸運兒 < a\-lucky\-guy;
+沰 < to\-let\-drop;
+色情 < pornography;
+本質上 < essentially;
+地下水 < groundwater;
+申請書 < application;
+殰 < an\-abortion;
+白刃 < naked\-sword;
+發出 < to\-send\-out;
+教育性 < instructive;
+就職 < take\-office;
+繼承權 < inheritance;
+槢 < a\-hard\-wood;
+拔營 < strike\-camp;
+把穩 < trustworthy;
+梘 < bamboo\-tube;
+梖 < a\-palm\-tree;
+梄 < a\-soft\-wood;
+世界貿易 < world\-trade;
+舒服 < comfortable;
+昜 < to\-open\-out;
+昉 < bright\-dawn;
+旉 < to\-state\-to;
+手續 < formalities;
+按期 < on\-schedule;
+摎 < to\-strangle;
+敗家子 < spendthrift;
+踩水 < tread\-water;
+宣言 < declaration;
+莎士比亞 < shakespeare;
+局限性 < limitations;
+慉 < to\-bring\-up;
+售貨員 < salesperson;
+可尊敬 < respectable;
+偷懶 < to\-goof\-off;
+鼻音 < nasal\-sound;
+非數字 < non\-numeric;
+徻 < a\-wide\-room;
+困境 < predicament;
+爆米花 < puffed\-rice;
+三十天 < thirty\-days;
+滲濾 < percolation;
+弰 < ends\-of\-bow;
+四分之一 < one\-quarter;
+病容 < sickly\-look;
+成績 < performance;
+人間 < man''s\-world;
+端站 < end\-station;
+茅屋頂 < thatch\-roof;
+衍射 < diffraction;
+崪 < rocky\-peaks;
+回報 < \(in\)\-return;
+三十四 < thirty\-four;
+屰 < disobedient;
+屝 < straw\-shoes;
+尜 < a\-child\-toy;
+器官捐獻者 < organ\-donor;
+訊框傳送 < frame\-relay;
+性伴侶 < sex\-partner;
+嬔 < baby\-rabbit;
+或稱 < also\-called;
+乳白色 < milky\-white;
+畫插圖者 < illustrator;
+第二次世界大戰 < world\-war\-2;
+高壓 < high\-handed;
+塿 < small\-mound;
+仲裁 < arbitration;
+堊 < white\-earth;
+垝 < dilapidated;
+垔 < to\-restrain;
+值得 < to\-be\-worth;
+異常 < exceptional;
+鑽孔 < bore\-a\-hole;
+蓋然性 < probability;
+文件服務器 < file\-server;
+當局 < authorities;
+喎 < a\-wry\-mouth;
+高唱 < sing\-loudly;
+越南戰爭 < vietnam\-war;
+唹 < to\-smile\-at;
+介詞 < preposition;
+可能性 < possibility;
+咅 < to\-spit\-out;
+舞劇 < dance\-drama;
+叻 < place\-names;
+厾 < lightly\-tap;
+傑出 < illustrious;
+疆場 < battlefield;
+登山家 < mountaineer;
+信服 < to\-convince;
+匯 < a\-concourse;
+勠 < join\-forces;
+無所不在 < omnipresent;
+劼 < be\-discreet;
+脾氣 < temperament;
+不出所料 < as\-expected;
+上齒 < upper\-teeth;
+慰藉 < consolation;
+剦 < to\-castrate;
+板規 < plate\-gauge;
+凩 < wintry\-wind;
+病人 < sick\-person;
+鑒定 < to\-appraise;
+世界和平 < world\-piece;
+備件 < spare\-parts;
+哲學家 < philosopher;
+生成 < be\-produced;
+便桶 < chamber\-pot;
+傏 < to\-ward\-off;
+脫氧 < deoxidation;
+情願 < willingness;
+生態 < way\-of\-life;
+指出 < to\-indicate;
+俛 < make\-effort;
+系列片 < film\-series;
+阿富汗 < afghanistan;
+佹 < depend\-upon;
+洛杉磯 < los\-angeles;
+扁桃 < almond\-tree;
+跋扈 < domineering;
+䶪 < sharp\-teeth;
+陰涼處 < shady\-place;
+修復 < restoration;
+䵴 < black\-color;
+䵳 < light\-black;
+䵩 < dark\-yellow;
+筆心 < pencil\-lead;
+䲻 < the\-swallow;
+信息 < information;
+䱽 < the\-pomfret;
+䱺 < a\-male\-crab;
+䱒 < salted\-fish;
+轉來轉去 < rove\-around;
+不顧 < in\-spite\-of;
+䮘 < young\-horse;
+立法 < legislation;
+對方 < counterpart;
+空白 < blank\-space;
+男女 < male\-female;
+䫳 < human\-skull;
+䫰 < sparse\-hair;
+䫭 < bald\-headed;
+針鋒相對 < tit\-for\-tat;
+䫄 < better\-than;
+䪴 < the\-occiput;
+伸縮性 < flexibility;
+䪄 < great\-blaze;
+䩻 < to\-be\-chief;
+䩜 < descendants;
+閉會祈禱 < benediction;
+䨱 < spilt\-water;
+䧓 < a\-big\-mound;
+䦷 < to\-struggle;
+當做 < to\-treat\-as;
+䦘 < a\-threshold;
+閉元音 < close\-vowel;
+䥀 < to\-pull\-out;
+䤭 < to\-ornament;
+䤅 < southerwood;
+跛子 < lame\-person;
+不可估量 < inestimable;
+五萬 < 50\-thousand;
+䠝 < to\-stand\-up;
+䠍 < at\-the\-feet;
+最大化 < to\-maximize;
+䟅 < to\-go\-ahead;
+䟁 < a\-foot\-race;
+䞽 < to\-lie\-flat;
+䞨 < half\-a\-pace;
+䞄 < to\-disperse;
+䝀 < garden\-peas;
+䜰 < deep\-valley;
+保存 < to\-conserve;
+䜗 < angry\-words;
+䜆 < hasty\-words;
+䛘 < to\-think\-of;
+䚳 < do\-not\-know;
+䚲 < to\-laugh\-at;
+淘神 < troublesome;
+䙾 < to\-wait\-for;
+䙱 < a\-long\-coat;
+䙰 < new\-feather;
+䙂 < short\-pants;
+筆墨 < pen\-and\-ink;
+䗖 < the\-rainbow;
+薑餅 < gingerbread;
+第十七 < seventeenth;
+䕸 < wheat\-straw;
+溫度 < temperature;
+䔿 < lush\-growth;
+跑壘 < baserunning;
+開放系統 < open\-system;
+蜜桃 < honey\-peach;
+鑒于 < in\-light\-of;
+䒋 < air\-current;
+可驚 < astonishing;
+有限公司 < corporation;
+空間探測 < space\-probe;
+䐚 < good\-graces;
+䏶 < the\-stomach;
+䏔 < to\-eat\-meat;
+便宜 < inexpensive;
+哲學上 < philosophic;
+否有效 < inefficient;
+不迭 < cannot\-cope;
+北朝鮮 < north\-korea;
+䌪 < to\-continue;
+䌦 < green\-color;
+吉爾吉斯斯坦 < kirghizstan;
+手寫 < handwriting;
+䊭 < to\-overturn;
+䊫 < coarse\-rice;
+䊢 < thick\-fluid;
+䊓 < to\-paste\-up;
+下載 < to\-download;
+䉝 < bamboo\-ware;
+䈸 < a\-big\-chest;
+踏上 < set\-foot\-on;
+䆳 < far\-distant;
+䆘 < acupuncture;
+䆖 < a\-big\-house;
+䅄 < long\-grains;
+䄽 < common\-rice;
+䃭 < a\-stone\-box;
+環形 < ring\-shaped;
+䂱 < to\-wear\-out;
+䂓 < regulations;
+䁻 < pretty\-eyes;
+䁷 < bright\-eyes;
+䁱 < hollow\-eyed;
+佈景 < \(stage\)\-set;
+䀂 < a\-big\-basin;
+基礎問題 < basic\-issue;
+㿣 < white\-color;
+㿘 < to\-get\-sick;
+㾺 < eye\-disease;
+㾝 < to\-leak\-out;
+騷動 < disturbance;
+㾈 < hunchbacked;
+㾃 < hump\-backed;
+㽪 < paddy\-field;
+悲觀 < pessimistic;
+口香糖 < chewing\-gum;
+㼘 < of\-mountain;
+㼓 < melon\-seeds;
+西乃山 < mount\-sinai;
+㻓 < a\-fine\-jade;
+美貌 < goodlooking;
+麻藥 < anaesthetic;
+㹠 < a\-small\-big;
+邁阿密灘 < miami\-beach;
+㸠 < thick\-stick;
+小型 < small\-scale;
+㵤 < to\-overflow;
+㴘 < to\-ooze\-out;
+金屬板 < metal\-plate;
+㲰 < a\-hairy\-dog;
+㰲 < to\-blow\-off;
+㯈 < small\-trees;
+題詞 < inscription;
+㮝 < angle\-steel;
+㭴 < the\-oscines;
+㭎 < a\-tall\-tree;
+趣味 < to\-interest;
+信仰 < firm\-belief;
+㬩 < a\-tiny\-star;
+股東 < stockholder;
+鎮壓 < suppression;
+㫘 < disappeared;
+板牙 < front\-tooth;
+泳褲 < swim\-trunks;
+同質 < homogeneous;
+㩅 < to\-draw\-out;
+兩百萬 < two\-million;
+㨵 < to\-cut\-away;
+㨴 < to\-turnover;
+㨕 < to\-shoulder;
+環境 < environment;
+㧔 < to\-disturbe;
+修理廠 < repair\-shop;
+㦒 < to\-deceived;
+㤡 < to\-surprise;
+㤕 < melancholoy;
+㤁 < to\-disgrace;
+㣾 < do\-not\-care;
+㣵 < to\-run\-away;
+㣥 < to\-store\-up;
+㢓 < to\-separate;
+果汁 < fruit\-juice;
+耕畜 < farm\-animal;
+增長率 < growth\-rate;
+重返 < return\-\(to\);
+丟臉 < humiliation;
+㝴 < a\-round\-off;
+㝔 < deep\-bottom;
+我國 < our\-country;
+㜣 < a\-last\-name;
+㜎 < slave\-girls;
+㛑 < three\-women;
+㚾 < to\-have\-fun;
+玻意耳定律 < boyle''s\-law;
+㘶 < a\-hen\-roost;
+身心爽快 < refreshment;
+㘥 < to\-inveigle;
+佈局 < arrangement;
+他們都 < all\-of\-them;
+變通 < be\-flexible;
+鼻涕 < nasal\-mucus;
+㖽 < to\-call\-out;
+貸款 < \(bank\)\-loan;
+㖑 < to\-shout\-at;
+㔼 < to\-fit\-into;
+㔶 < a\-small\-cup;
+㔏 < to\-cut\-open;
+㓩 < horned\-hair;
+準備 < preparation;
+㒨 < an\-immortal;
+安康 < good\-health;
+預計 < to\-forecast;
+祭司權術 < priestcraft;
+類似點 < resemblance;
+量詞 < meaure\-word;
+雙人房 < double\-room;
+名著 < masterpiece;
+美術館 < art\-gallery;
+任意 < arbitrarily;
+安家 < settle\-down;
+饒恕 < forgiveness;
+宇宙 < outer\-space;
+瑞士 < switzerland;
+在這期間 < during\-time;
+喇叭 < loudspeaker;
+約伯記 < book\-of\-job;
+無法忍受 < intolerable;
+悲喜劇 < tragicomedy;
+駁倒 < demolish\-sb;
+半封建 < semi\-feudal;
+浴池 < public\-bath;
+反動分子 < reactionary;
+實質性 < substantive;
+變壓器 < transformer;
+使用方便 < easy\-to\-use;
+奔馳 < run\-quickly;
+現年 < current\-age;
+無法形容 < unspeakable;
+蘋果汁 < apple\-juice;
+示範 < demonstrate;
+交換 < to\-exchange;
+藥物 < medicaments;
+有同情心 < sympathetic;
+暗記兒 < secret\-mark;
+鄙陋 < superficial;
+夜鶯 < nightingale;
+餐廳 < dining\-hall;
+威脅 < to\-threaten;
+空前 < unprecedent;
+預約 < reservation;
+碰見 < to\-run\-into;
+查出 < to\-find\-out;
+半邊 < half\-of\-sth;
+暗示 < drop\-a\-hint;
+交往 < association;
+配送者 < distributor;
+書法 < calligraphy;
+金銀花 < honeysuckle;
+元老院 < upper\-house;
+卓越 < distinction;
+股價 < stock\-price;
+九月 < ninth\-month;
+主權 < sovereignty;
+可想像 < conceivable;
+多餘 < superfluous;
+聽取 < hear\-\(news\);
+感性 < sensibility;
+商人 < businessman;
+禁止 < to\-prohibit;
+秉承 < take\-orders;
+售價 < to\-sell\-for;
+嬌媚 < flirtatious;
+頁碼 < page\-number;
+交媾 < to\-have\-sex;
+上流 < upper\-class;
+信用卡 < credit\-card;
+霸道 < overbearing;
+波瀾 < great\-waves;
+不止 < incessantly;
+爭議 < controversy;
+中東 < middle\-east;
+女管家 < housekeeper;
+一千四百億 < 140\-billion;
+丹方 < folk\-remedy;
+重疊 < overlapping;
+中日 < china\-japan;
+自由選擇權 < free\-agency;
+喜歡吵架 < quarrelsome;
+有害的 < destructive;
+重現 < to\-reappear;
+模糊邏輯 < fuzzy\-logic;
+靶船 < target\-ship;
+千萬 < ten\-million;
+一月 < first\-month;
+犯病 < to\-fall\-ill;
+同步 < synchronous;
+哺乳 < breast\-feed;
+主張 < to\-advocate;
+婚期 < wedding\-day;
+暗殺 < assassinate;
+主席 < chairperson;
+危篤 < deathly\-ill;
+互動 < interactive;
+天然氣 < natural\-gas;
+供血者 < blood\-donor;
+中年 < middle\-aged;
+營養品 < nourishment;
+貝丘 < shell\-mound;
+意向 < disposition;
+適應性 < suitability;
+沈澱 < precipitate;
+天文台 < observatory;
+鑿石場 < rock\-quarry;
+就﹍而言 < considering;
+三年 < three\-years;
+𡽱 < a\-high\-hill;
+上層 < upper\-layer;
+壯觀 < spectacular;
+有選舉權 < constituent;
+政變 < coup\-d''etat;
+神學 < theological;
+測驗結果 < test\-result;
+合影 < joint\-photo;
+如畫 < picturesque;
+不堪 < cannot\-bear;
+終點 < destination;
+爆竹 < firecracker;
+管家職務 < stewardship;
+小汽車 < compact\-car;
+特權 < prerogative;
+螺絲刀 < screwdriver;
+狗交媾般 < doggy\-style;
+分離 < to\-seperate;
+副作用 < side\-effect;
+禁令 < prohibition;
+不免 < unavoidable;
+誓約 < honor\-bound;
+證書 < credentials;
+沈思 < contemplate;
+解釋 < explanation;
+礁島 < reef\-island;
+榮獲諾貝爾獎 < nobel\-prize;
+二十億 < two\-billion;
+迎風 < in\-the\-wind;
+移植性 < portability;
+如此 < in\-this\-way;
+悠久 < established;
+專有名詞 < proper\-noun;
+上下 < up\-and\-down;
+二十五 < twenty\-five;
+朋比為奸 < to\-conspire;
+搬弄是非 < sow\-discord;
+的 < possessive;
+込 < crowd\-into;
+辻 < crossroads;
+能 < to\-be\-able;
+都 < metropolis;
+文 < literature;
+轍 < wagon\-ruts;
+輩 < generation;
+眩 < to\-confuse;
+眠 < close\-eyes;
+輝 < brightness;
+弐 < number\-two;
+者 < that\-which;
+业 < profession;
+府 < prefecture;
+政 < government;
+产 < give\-birth;
+场 < open\-space;
+比 < to\-compare;
+疲 < feel\-tired;
+画 < a\-painting;
+望 < to\-look\-at;
+賺 < make\-money;
+六 < number\-six;
+屡 < frequently;
+尤 < especially;
+專 < monopolize;
+基 < foundation;
+双 < set\-of\-two;
+孫 < grandchild;
+嬪 < court\-lady;
+离 < rare\-beast;
+媒 < go\-between;
+誌 < write\-down;
+誇 < exaggerate;
+响 < make\-sound;
+婿 < son\-in\-law;
+爭 < to\-dispute;
+器 < receptacle;
+營 < encampment;
+妙 < mysterious;
+胡 < recklessly;
+妓 < prostitute;
+襦 < short\-coat;
+壱 < number\-one;
+郭 < outer\-part;
+讨 < to\-discuss;
+滅 < extinguish;
+虜 < to\-capture;
+积 < accumulate;
+菜 < vegetables;
+嗣 < to\-connect;
+嗜 < be\-fond\-of;
+介 < forerunner;
+索 < large\-rope;
+丁 < male\-adult;
+遍 < everywhere;
+蒔 < transplant;
+懂 < understand;
+释 < interprete;
+纵 < indulge\-in;
+歴 < take\-place;
+仁 < humaneness;
+檀 < sandalwood;
+削 < scrape\-off;
+刑 < punishment;
+岂 < how\?\-what\?;
+隆 < prosperous;
+刃 < edged\-tool;
+析 < split\-wood;
+腸 < intestines;
+楓 < maple\-tree;
+餅 < rice\-cakes;
+傍 < by\-side\-of;
+栓 < wooden\-peg;
+凯 < triumphant;
+恭 < respectful;
+祸 < misfortune;
+禅 < meditation;
+柯 < axe\-handle;
+捐 < contribute;
+踪 < footprints;
+屁 < break\-wind;
+谊 < friendship;
+储 < save\-money;
+雁 < wild\-goose;
+摊 < spread\-out;
+吨 < metric\-ton;
+乍 < first\-time;
+陀 < steep\-bank;
+綿 < cotton\-wad;
+綱 < heavy\-rope;
+抑 < press\-down;
+彬 < cultivated;
+撮 < little\-bit;
+粥 < rice\-gruel;
+蛮 < barbarians;
+箸 < chopsticks;
+筵 < bamboo\-mat;
+艇 < small\-boat;
+捌 < break\-open;
+笠 < bamboo\-hat;
+庞 < disorderly;
+竝 < to\-combine;
+扉 < door\-panel;
+坝 < embankment;
+憧 < irresolute;
+甩 < throw\-away;
+酌 < serve\-wine;
+磐 < large\-rock;
+辅 < cheek\-bone;
+捡 < to\-pick\-up;
+蹈 < stamp\-feet;
+晒 < dry\-in\-sun;
+歼 < annihilate;
+涩 < astringent;
+霎 < light\-rain;
+绸 < silk\-cloth;
+眯 < be\-blinded;
+寅 < to\-respect;
+眶 < eye\-socket;
+碟 < small\-dish;
+蕴 < to\-collect;
+迭 < repeatedly;
+旭 < rising\-sun;
+悍 < courageous;
+枢 < door\-hinge;
+跋 < go\-by\-foot;
+圪 < \(phonetic\);
+搔 < to\-scratch;
+嚎 < cry\-loudly;
+汛 < high\-water;
+脯 < dried\-meat;
+嗒 < to\-despair;
+墟 < high\-mound;
+馋 < gluttonous;
+蹭 < to\-shuffle;
+澈 < thoroughly;
+缭 < wind\-round;
+喳 < whispering;
+弧 < wooden\-bow;
+惆 < distressed;
+撵 < drive\-away;
+轶 < rush\-forth;
+窿 < mine\-shaft;
+樵 < woodcutter;
+犀 < rhinoceros;
+绚 < variegated;
+藕 < lotus\-root;
+摞 < to\-pile\-up;
+滤 < strain\-out;
+缈 < indistinct;
+肪 < animal\-fat;
+甄 < to\-examine;
+铛 < frying\-pan;
+嫡 < legal\-wife;
+磷 < phosphorus;
+翡 < kingfisher;
+霭 < cloudy\-sky;
+舫 < fancy\-boat;
+纨 < white\-silk;
+榷 < footbridge;
+蔗 < sugar\-cane;
+彗 < broomstick;
+喟 < heave\-sigh;
+喑 < to\-be\-dumb;
+鱿 < cuttlefish;
+倜 < raise\-high;
+滂 < torrential;
+忻 < delightful;
+燧 < flintstone;
+稔 < ripe\-grain;
+颉 < fly\-upward;
+舸 < large\-boat;
+眙 < to\-gaze\-at;
+瘀 < a\-hematoma;
+夯 < heavy\-load;
+鲠 < fish\-bones;
+茏 < tall\-grass;
+茯 < china\-root;
+鲧 < giant\-fish;
+逦 < meandering;
+骜 < wild\-horse;
+欹 < fierce\-dog;
+缛 < decorative;
+苕 < rush\-plant;
+顸 < large\-face;
+缦 < plain\-silk;
+帙 < book\-cover;
+鳃 < fish\-gills;
+醴 < sweet\-wine;
+辊 < turn\-round;
+岘 < steep\-hill;
+倬 < noticeable;
+鲞 < dried\-fish;
+缁 < black\-silk;
+箧 < rattan\-box;
+墁 < to\-plaster;
+罴 < brown\-bear;
+爰 < lead\-on\-to;
+杲 < bright\-sun;
+癔 < hysterical;
+莜 < avena\-nuda;
+埙 < instrument;
+獾 < the\-badger;
+郫 < place\-name;
+蛏 < razor\-clam;
+帑 < a\-treasury;
+揠 < to\-pull\-up;
+趑 < can''t\-move;
+阍 < gatekeeper;
+掊 < to\-extract;
+镝 < dysprosium;
+砗 < giant\-clam;
+嫫 < ugly\-woman;
+跗 < the\-instep;
+浼 < to\-request;
+嗌 < the\-throat;
+汆 < to\-parboil;
+刭 < cut\-throat;
+髂 < the\-pelvis;
+钼 < molybdenum;
+憝 < to\-dislike;
+炅 < brilliance;
+隳 < to\-destroy;
+茛 < ranunculus;
+糇 < dried\-rice;
+钆 < gadolinium;
+澌 < to\-exhaust;
+庀 < to\-prepare;
+犴 < a\-wild\-dog;
+埏 < a\-boundary;
+谮 < to\-slander;
+縮短 < to\-curtail;
+改組 < reorganize;
+沒問題 < no\-problem;
+第五類 < category\-5;
+擁護 < to\-endorse;
+進行 < to\-advance;
+奔波 < rush\-about;
+後母 < stepmother;
+散發 < distribute;
+失火 < catch\-fire;
+誕生 < to\-be\-born;
+多爾 < \(bob\)\-dole;
+巴枯寧主義 < bakuninism;
+彼此 < each\-other;
+預先 < beforehand;
+關門 < close\-down;
+違背 < to\-violate;
+冰染染料 < azoic\-dyes;
+統計 < statistics;
+函購 < mail\-order;
+壁立 < \(of\-cliffs;
+春季 < springtime;
+頒佈 < promulgate;
+每次 < every\-time;
+編程 < to\-program;
+分詞 < participle;
+後期 < late\-stage;
+效用 < usefulness;
+糧食 < foodstuffs;
+荒野 < wilderness;
+撒謊 < tell\-a\-lie;
+燃燒 < combustion;
+弄直 < straighten;
+遷移 < to\-migrate;
+非官方 < unofficial;
+大氣 < atmosphere;
+認為 < to\-believe;
+降落 < to\-descend;
+前者 < the\-former;
+效率 < efficiency;
+靶心 < bull''s\-eye;
+國民黨 < kuomintang;
+勃然 < agitatedly;
+講師 < instructor;
+取代 < substitute;
+新教 < protestant;
+多次 < many\-times;
+奇數 < odd\-number;
+必將 < inevitably;
+陰精 < sex\-fluids;
+白色體 < leucoplast;
+妖嬈 < enchanting;
+不耐煩 < impatience;
+百分率 < percentage;
+繼承 < to\-inherit;
+令牌環 < token\-ring;
+操縱 < to\-operate;
+全面 < all\-around;
+四個小時 < four\-hours;
+厘升 < centiliter;
+調整 < adjustment;
+荒謬 < ridiculous;
+自白書 < confession;
+展覽會 < exhibition;
+白頭 < hoary\-head;
+天文學家 < astronomer;
+決不 < not\-at\-all;
+說明 < to\-explain;
+眼花繚亂 < be\-dazzled;
+魯佛爾宮 < the\-louvre;
+出色 < remarkable;
+不堪忍受 < unbearable;
+高速率 < high\-speed;
+免除 < to\-prevent;
+妥協 < compromise;
+巨輪 < large\-ship;
+照片 < photograph;
+附筆 < postscript;
+親自 < personally;
+說不出話來 < speechless;
+娛樂中心 < recreation;
+改正 < to\-correct;
+大城市 < major\-city;
+自由貿易 < free\-trade;
+半圓 < semicircle;
+爭奪 < fight\-over;
+短期 < short\-term;
+每年 < every\-year;
+喬治敦 < georgetown;
+三分之二 < two\-thirds;
+傳道者 < missionary;
+敵手 < antagonist;
+印像 < impression;
+不可能 < impossible;
+精通 < proficient;
+很大 < tremendous;
+白酒 < spirit\-usu;
+錄音帶 < audio\-tape;
+草莓 < strawberry;
+錫安山 < mount\-zion;
+塔吉克斯坦 < tajikistan;
+報章 < newspapers;
+多年 < many\-years;
+語彙 < vocabulary;
+早先 < previously;
+總統任期 < presidency;
+牌價 < list\-price;
+巫術 < witchcraft;
+過渡 < transition;
+探險 < to\-explore;
+大學 < university;
+無理 < irrational;
+半價 < half\-price;
+區別 < difference;
+關聯 < be\-related;
+硬磁盤 < hard\-drive;
+地震 < earthquake;
+觀眾 < spectators;
+排隊 < to\-line\-up;
+攪擾 < to\-disturb;
+不可逾越 < impassable;
+數學 < mathematic;
+熱心 < enthusiasm;
+加利福尼亞 < california;
+歷史上 < historical;
+記帳員 < bookkeeper;
+電子 < electronic;
+白話 < vernacular;
+炸糕 < fried\-cake;
+散射 < scattering;
+蓋世 < unrivelled;
+編排 < to\-arrange;
+捕魚 < catch\-fish;
+允諾 < to\-promise;
+調和 < harmonious;
+後來 < afterwards;
+使失望 < disappoint;
+大喜 < exultation;
+設施 < facilities;
+方便 < convenient;
+此後 < after\-this;
+座標 < coordinate;
+經歷 < experience;
+樂觀 < optimistic;
+太古 < immemorial;
+離婚 < to\-divorce;
+教堂墓地 < churchyard;
+龢 < in\-harmony;
+燈塔 < lighthouse;
+出版 < to\-publish;
+兵船 < man\-of\-war;
+行政長官 < magistrate;
+鼧 < the\-marmot;
+鼄 < the\-spider;
+黹 < embroidery;
+黲 < grey\-black;
+黤 < blue\-black;
+傷風 < catch\-cold;
+放射 < to\-radiate;
+比例 < proportion;
+鸺 < horned\-owl;
+隨後 < soon\-after;
+前景 < foreground;
+遷延 < long\-delay;
+補語 < complement;
+鵒 < mynah\-bird;
+鴷 < woodpecker;
+加密 < to\-encrypt;
+整合 < to\-conform;
+承包人 < contractor;
+違抗 < to\-disobey;
+監督 < to\-control;
+鳲 < turtledove;
+文具 < stationery;
+每人 < per\-person;
+物質上 < materially;
+鲰 < small\-fish;
+防水 < waterproof;
+鱇 < anglerfish;
+貴族論者 < aristocrat;
+半公開 < semi\-overt;
+使免除 < get\-rid\-of;
+更衣室 < changeroom;
+鮁 < the\-bonito;
+退步 < degenerate;
+適度 < moderately;
+魛 < the\-mullet;
+遠征 < expedition;
+鬨 < boisterous;
+鬜 < to\-go\-bald;
+白臉 < white\-face;
+總共 < altogether;
+髣 < similar\-to;
+髁 < thigh\-bone;
+解析 < to\-analyze;
+騗 < to\-swindle;
+騋 < tall\-horse;
+騉 < fine\-horse;
+駰 < grey\-horse;
+馹 < post\-horse;
+試圖 < to\-attempt;
+艦載 < ship\-based;
+知名 < well\-known;
+多事 < meddlesome;
+冰球 < ice\-hockey;
+解放 < liberation;
+鞡 < leg\-warmer;
+靝 < the\-heaven;
+偽頂 < false\-roof;
+高階 < high\-level;
+捏造 < to\-make\-up;
+隮 < ti\-rise\-up;
+陻 < small\-hill;
+新聞記者 < journalist;
+擁抱 < to\-embrace;
+零下 < below\-zero;
+闟 < peacefully;
+鞭闢入裡 < penetrated;
+超媒體 < hypermedia;
+镚 < small\-coin;
+锬 < long\-spear;
+不明確 < indefinite;
+钷 < promethium;
+放出 < to\-let\-off;
+鐶 < metal\-ring;
+鐚 < soft\-steel;
+公石 < hectoliter;
+鐒 < lawrencium;
+鐀 < a\-cupboard;
+不景氣 < depression;
+他們自己 < themselves;
+資本家 < capitalist;
+鎪 < to\-engrave;
+鎛 < large\-bell;
+報數 < number\-off;
+鍀 < technetium;
+收入 < to\-take\-in;
+詞典 < dictionary;
+設在 < located\-at;
+限度 < limitation;
+裱糊 < wall\-paper;
+鈊 < cadolinium;
+醡 < wine\-press;
+醝 < white\-wine;
+檢查 < inspection;
+酅 < raise\-feet;
+阿塞拜疆 < azerbaijan;
+瀆職 < wrongdoing;
+庇廕 < \(of\-a\-tree;
+二手貨 < secondhand;
+陰天 < cloudy\-day;
+終於 < eventually;
+訂婚 < engagement;
+陸基 < land\-based;
+邏輯炸彈 < logic\-bomb;
+廚司 < cook\,\-chef;
+傳說 < it\-is\-said;
+制定 < to\-draw\-up;
+易接近 < accessible;
+逬 < to\-scatter;
+速射 < rapid\-fire;
+遺傳 < hereditary;
+舉辦 < to\-conduct;
+利害 < formidable;
+躩 < take\-quick;
+入獄 < go\-to\-jail;
+米粉 < rice\-flour;
+圖解說明 < illustrate;
+不屈不撓 < unyielding;
+踧 < uneasiness;
+踜 < to\-stumble;
+踖 < trample\-on;
+農村 < rural\-area;
+想像力 < conception;
+跐 < to\-trample;
+副刊 < supplement;
+有決心 < determined;
+橄欖樹 < olive\-tree;
+操場 < playground;
+基於 < because\-of;
+衍變 < to\-develop;
+全然 < completely;
+大腦死亡 < brain\-dead;
+團聚 < to\-reunite;
+豀 < to\-quarrel;
+爭論點 < contention;
+白狐 < arctic\-fox;
+擁塞 < congestion;
+討厭 < disgusting;
+謪 < to\-consult;
+白熾 < white\-heat;
+複雜性 < complexity;
+白熊 < polar\-bear;
+白煤 < anthracite;
+倚靠 < to\-lean\-on;
+幼女 < young\-girl;
+觀察 < to\-observe;
+使用者中介 < user\-agent;
+兵法 < art\-of\-war;
+當選 < be\-elected;
+覸 < steal\-look;
+監控 < to\-monitor;
+結局 < conclusion;
+裪 < the\-sleeve;
+欠佳 < suboptimal;
+週到 < thoughtful;
+規律 < discipline;
+蟫 < silverfish;
+蟣 < louse\-eggs;
+管轄 < administer;
+蟁 < a\-mosquito;
+胡思亂想 < imaginings;
+奶牛場 < dairy\-farm;
+樹樁 < tree\-stump;
+襯托 < to\-set\-off;
+蛜 < wood\-louse;
+操典 < drill\-book;
+跑馬 < horse\-race;
+薧 < dried\-food;
+檢察 < to\-inspect;
+蕡 < hemp\-seeds;
+巨星 < giant\-star;
+字節數 < byte\-count;
+蓷 < motherwort;
+附加 < additional;
+蒽 < anthracene;
+蒦 < to\-measure;
+蒖 < plant\-name;
+一切事物 < everything;
+葯 < orris\-root;
+歌羅西書 < colossians;
+相對 < relatively;
+無價 < invaluable;
+搏斗 < to\-wrestle;
+荵 < polemonium;
+出生地 < birthplace;
+不由自主 < can''t\-help;
+拜託 < request\-sb;
+排球 < volleyball;
+店主 < shop\-owner;
+不下于 < as\-many\-as;
+瓶頸 < bottleneck;
+幫助 < assistance;
+脪 < erysipelas;
+脗 < coinciding;
+幫凶 < accomplice;
+公撮 < milliliter;
+肦 < large\-head;
+籃球 < basketball;
+抱負 < aspiration;
+曼徹斯特 < manchester;
+伽馬射線 < gamma\-rays;
+大媒體 < macromedia;
+算術 < arithmetic;
+推測 < conjecture;
+要塞 < stronghold;
+白旗 < white\-flag;
+滿足 < to\-satisfy;
+驅逐 < banishment;
+極為龐大 < monumental;
+繐 < fine\-cloth;
+備忘錄 < memorandum;
+縇 < decoration;
+表示 < to\-express;
+挨個兒 < one\-by\-one;
+農園 < plantation;
+兄弟會 < fraternity;
+留聲機 < gramophone;
+絺 < fine\-linen;
+有利可圖 < profitable;
+絛 < silk\-braid;
+絖 < fine\-silks;
+絓 < obstructed;
+投資 < investment;
+粻 < provisions;
+無所不能 < omnipotent;
+看到 < see\-\(that\);
+提昇 < to\-promote;
+哈薩克斯坦 < kazakhstan;
+簥 < large\-pipe;
+分離主義 < separatism;
+兌換 < to\-convert;
+世界銀行 < world\-bank;
+黑莓子 < blackberry;
+篋 < ratton\-box;
+箠 < horse\-whip;
+箚 < brief\-note;
+公引 < hectometer;
+窰 < brick\-kiln;
+專門 < specialist;
+穭 < wild\-grain;
+看來 < apparently;
+臉色 < complexion;
+草叢 < underbrush;
+兼容 < compatible;
+在下面 < underneath;
+祅 < calamities;
+不變化 < invariably;
+軍港 < naval\-port;
+按立 < ordination;
+生計 < livelihood;
+磑 < stone\-mill;
+掌櫃 < shopkeeper;
+表現 < expression;
+兩岸 < bilaterial;
+硃 < a\-red\-mole;
+共存 < to\-coexist;
+睟 < clear\-eyed;
+囚犯 < a\-prisoner;
+偉績 < great\-acts;
+衍生 < derviative;
+冰刀 < ice\-skates;
+接收 < to\-receive;
+技術 < technology;
+疕 < head\-sores;
+畓 < rice\-field;
+畁 < to\-give\-to;
+宿題 < assignment;
+陌生人 < a\-stranger;
+玔 < green\-jade;
+魚排 < fish\-steak;
+無所不知 < omniscient;
+指甲 < fingernail;
+開會祈禱 < invocation;
+學齡 < school\-age;
+犛 < a\-black\-ox;
+不適當 < inadequate;
+捨棄 < to\-give\-up;
+電視臺 < tv\-station;
+牏 < privy\-hole;
+爫 < radical\-87;
+使醉 < intoxicate;
+拘禁 < constraint;
+熅 < smooth\-out;
+國會 < parliament;
+領導能力 < leadership;
+超越 < to\-surpass;
+灺 < candle\-end;
+灒 < to\-spatter;
+推廣 < popularize;
+主力艦 < battleship;
+濙 < to\-revolve;
+濆 < river\-bank;
+佣金 < commission;
+白喉 < diphtheria;
+授意 < to\-inspire;
+公分 < centimeter;
+筆者 < the\-author;
+泆 < licentious;
+保育 < child\-care;
+白區 < white\-area;
+揹債 < be\-in\-debt;
+漫畫 < caricature;
+行不通 < won''t\-work;
+停火 < cease\-fire;
+競爭者 < competitor;
+良心 < conscience;
+櫾 < the\-pomelo;
+單調 < monotonous;
+檼 < ridge\-pole;
+表明 < make\-known;
+有系統 < systematic;
+沒人住 < unoccupied;
+榼 < wine\-glass;
+榦 < tree\-trunk;
+動物學 < zoological;
+椵 < pompelmous;
+椳 < the\-pivots;
+模仿 < to\-imitate;
+意見不合 < dissension;
+盧森堡 < luxembourg;
+發佈 < to\-release;
+第七十 < seventieth;
+栛 < the\-lichee;
+栘 < fruit\-tree;
+條約 < treatypact;
+導航 < navigation;
+排外 < xenophobic;
+導致 < to\-lead\-to;
+展示 < to\-open\-up;
+冰凝器 < cryophorus;
+尋舋 < to\-provoke;
+杢 < woodworker;
+先例 < antecedent;
+賓館 < guesthouse;
+樓下 < downstairs;
+斢 < to\-plunder;
+打結 < tie\-a\-knot;
+孟加拉國 < bangladesh;
+臆測 < assumption;
+心理學 < psychology;
+擪 < to\-tuck\-in;
+撱 < to\-shorten;
+氣喘喘 < breathless;
+拔河 < tug\-of\-war;
+第一例 < first\-case;
+生產 < to\-produce;
+補償 < compensate;
+掱 < pickpocket;
+掎 < drag\-aside;
+人體 < human\-body;
+胞衣 < afterbirth;
+挖掘 < excavation;
+四年 < four\-years;
+百分之九十 < 90\-percent;
+扡 < drag\-along;
+餐館 < restaurant;
+聖靈 < holy\-ghost;
+憸 < to\-flatter;
+指控 < accusation;
+憍 < be\-haughty;
+憀 < to\-rely\-on;
+引人注意 < attractive;
+手稿 < manuscript;
+抹油 < to\-annoint;
+愓 < profligate;
+表尺 < rear\-sight;
+惏 < avaricious;
+摩天摟 < skyscraper;
+畢業 < graduation;
+恛 < disordered;
+固執 < persistent;
+怲 < be\-anxious;
+彿 < resembling;
+查詢 < to\-inquire;
+弇 < cover\-over;
+廀 < to\-conceal;
+忘恩負義 < ungrateful;
+疑慮 < hesitation;
+喉舌 < mouthpiece;
+聯通 < connection;
+得不到 < cannot\-get;
+駐紮 < to\-station;
+簽出 < to\-log\-off;
+屄 < the\-vagina;
+重要性 < importance;
+餅鐺 < baking\-pan;
+宼 < tyrannical;
+技術員 < technician;
+鎗管 < gun\-barrel;
+媟 < lust\-after;
+鐵板 < iron\-panel;
+鏈環 < chain\-link;
+相同名字 < like\-named;
+竭盡 < exhaustion;
+軍人 < serviceman;
+使人信服 < convincing;
+老頭 < old\-fellow;
+周恩來 < zhou\-enlai;
+現象 < appearance;
+鎮痛 < analgesiac;
+堃 < compliance;
+有興趣 < interested;
+自尊 < self\-pride;
+定義 < definition;
+圦 < water\-gate;
+囌 < loquacious;
+嚲 < read\-aloud;
+不經意 < carelessly;
+競爭 < to\-compete;
+打字機 < typewriter;
+唽 < to\-twitter;
+實現 < to\-achieve;
+傷亡 < casualties;
+呴 < breathe\-on;
+倍增器 < multiplier;
+業余 < spare\-time;
+金屬線 < metal\-wire;
+行列 < procession;
+卝 < hair\-style;
+病假 < sick\-leave;
+期限 < time\-limit;
+劏 < to\-butcher;
+電子空間 < cyberspace;
+冘 < to\-move\-on;
+識別號 < identifier;
+把戲 < acrobatics;
+生有權 < birthright;
+偭 < transgress;
+偝 < not\-facing;
+消費 < to\-consume;
+持卡人 < cardholder;
+行人 < pedestrian;
+倀 < bewildered;
+毛澤東 < mao\-zedong;
+書面 < in\-writing;
+六十五 < sixty\-five;
+伷 < descendent;
+多媒體 < multimedia;
+節制 < temperance;
+抵抗力 < resistance;
+腐敗 < corruption;
+䶫 < fine\-teeth;
+䶉 < guinea\-pig;
+䵪 < pure\-black;
+䵝 < dark\-black;
+獸醫 < veterinary;
+微不足道 < negligible;
+做出 < to\-put\-out;
+作為 < accomplish;
+䳕 < the\-pigeon;
+䳌 < the\-cuckoo;
+折射 < refraction;
+䱝 < black\-carp;
+䱄 < a\-flatfish;
+喉炎 < laryngitis;
+䰬 < wild\-ghost;
+信心 < confidence;
+䰄 < short\-hair;
+䯔 < to\-incline;
+䯌 < the\-sacrum;
+珍藏 < collection;
+大主教 < archbishop;
+䮍 < curling\-up;
+䭸 < a\-stallion;
+試算表 < speadsheet;
+䬷 < well\-feed\.;
+聖職 < priesthood;
+䫥 < a\-wry\-neck;
+達賴喇嘛 < dalai\-lama;
+䪺 < teethridge;
+䪠 < pulverized;
+錶盤 < dial\-plate;
+䩱 < a\-scabbard;
+桃樹 < peach\-tree;
+白口鐵 < white\-iron;
+䩁 < thin\-hairs;
+單模 < singlemode;
+䨽 < to\-resolve;
+䨩 < the\-spirit;
+不揣冒昧 < venture\-to;
+䧿 < the\-magpie;
+䧣 < to\-stop\-up;
+想象 < to\-imagine;
+䦯 < very\-dense;
+下降 < to\-decline;
+䦍 < to\-include;
+䤾 < to\-contain;
+䤽 < farm\-tools;
+層壓 < lamination;
+第十八 < eighteenth;
+周速 < cycle\-time;
+暴風 < storm\-wind;
+實驗室 < laboratory;
+䡧 < a\-carriage;
+䡚 < implements;
+屬地 < dependency;
+䡎 < a\-windlass;
+䠸 < obsequious;
+䠶 < to\-project;
+䠩 < to\-urinate;
+䠟 < to\-trip\-up;
+漲價 < appreciate;
+䠘 < one\-legged;
+聖經 < holy\-bible;
+仿真 < to\-emulate;
+省略符號 < apostrophe;
+不對碴兒 < not\-proper;
+介紹 < to\-present;
+䟙 < to\-stagger;
+䟄 < in\-a\-hurry;
+䝿 < honourabel;
+䝷 < securities;
+䝱 < to\-trouble;
+䜙 < not\-clever;
+䜋 < to\-suspend;
+缺點 < weak\-point;
+䛲 < to\-deceive;
+䛦 < litigation;
+䛄 < to\-console;
+本行 < one''s\-line;
+滲坑 < sewage\-pit;
+競技 < tournament;
+第十九 < nineteenth;
+䖳 < jelly\-fish;
+鐵匠 < blacksmith;
+任用 < to\-appoint;
+板紙 < paperboard;
+第十三 < thirteenth;
+䕡 < compositae;
+機關車 < locomotive;
+保潔箱 < litter\-bin;
+䔘 < fish\-paste;
+老年人 < old\-people;
+䓵 < to\-blossom;
+波長 < wavelength;
+䓤 < vegetation;
+專心 < absorption;
+䓆 < to\-cut\-the;
+䒢 < sweet\-flag;
+發聲法 < intonation;
+䑭 < war\-vessel;
+䑍 < to\-swallow;
+䐢 < to\-wrinkle;
+䏭 < the\-cheeks;
+䏌 < to\-vibrate;
+䎟 < to\-fawn\-on;
+個別 < individual;
+會計 < accountant;
+䍵 < young\-goat;
+䍞 < a\-drag\-net;
+䍗 < to\-hang\-up;
+䍔 < a\-full\-net;
+意想不到 < unexpected;
+流血 < shed\-blood;
+肉片 < meat\-slice;
+䋱 < a\-wild\-yak;
+冰上運動 < ice\-sports;
+公開討論會 < open\-forum;
+䊩 < rice\-gravy;
+溫室 < greenhouse;
+美乃滋醬 < mayonnaise;
+不平凡 < marvellous;
+抑制 < to\-inhibit;
+䇎 < to\-startle;
+作料 < condiments;
+䇇 < the\-people;
+䆋 < the\-autumn;
+䅔 < dead\-crops;
+崑崙山 < mt\.\-kunlun;
+便壺 < bed\-urinal;
+䄟 < to\-worship;
+使怒 < exasperate;
+依屬 < dependence;
+䁞 < a\-province;
+䁁 < strabismus;
+等到 < wait\-until;
+小姐 < young\-lady;
+代表團 < delegation;
+㽨 < fragmented;
+㽣 < a\-frontier;
+㽘 < borderland;
+桌布 < tablecloth;
+㼹 < eartenware;
+背景 < background;
+不變 < unchanging;
+一貫 < consistent;
+㺳 < black\-mica;
+㺅 < the\-monkey;
+批准 < to\-approve;
+㸨 < a\-big\-bull;
+㸌 < to\-twinkle;
+㷷 < thick\-soup;
+㶭 < almost\-dry;
+㶜 < deep\-water;
+科系 < department;
+㵀 < water\-flow;
+愁緒 < melancholy;
+神話 < fairy\-tale;
+住所 < habitation;
+影像檔 < image\-file;
+㲯 < long\-hairy;
+顛覆 < subversion;
+㲌 < dog''s\-hair;
+㲉 < egg\-shells;
+㱦 < to\-discard;
+㱜 < pestilence;
+案子 < long\-table;
+㯇 < a\-stockade;
+居住者 < inhabitant;
+㬱 < to\-replace;
+㬪 < to\-fold\-up;
+㫤 < a\-long\-day;
+㪌 < to\-lead\-on;
+㩹 < to\-pile\-on;
+㩞 < to\-back\-up;
+㨯 < to\-enlarge;
+㨮 < to\-lift\-up;
+淘汰 < to\-die\-out;
+肥料 < fertilizer;
+㦂 < constantly;
+㥶 < to\-fill\-up;
+㥣 < to\-benefit;
+㤷 < to\-debauch;
+㤐 < disharmony;
+狡辯 < to\-quibble;
+㣽 < to\-forgive;
+㣅 < bow\-string;
+㣀 < to\-rebound;
+㢭 < a\-bow\-case;
+㢚 < a\-corridor;
+㢏 < a\-cesspool;
+㡥 < to\-curl\-up;
+暴行 < savage\-act;
+四百億 < 40\-billion;
+實在 < in\-reality;
+艾滋病病毒 < aids\-virus;
+㞠 < male\-organ;
+陸軍中尉 < lieutenant;
+㞎 < body\-waste;
+㝯 < to\-sojourn;
+㚠 < full\-grown;
+㙺 < cross\-road;
+超升 < exaltation;
+叛軍 < rebel\-army;
+㘧 < precedence;
+獸穴 < animal\-den;
+㗬 < thick\-lips;
+㗫 < to\-whisper;
+彪形大漢 < burly\-chap;
+警鐘 < alarm\-bell;
+㖆 < to\-condemn;
+胖子 < fat\-person;
+㕍 < to\-heap\-up;
+㕆 < fine\-stone;
+㔷 < to\-secrete;
+㔘 < to\-degrade;
+㔓 < to\-stammer;
+㔌 < to\-cut\-off;
+㓺 < castration;
+存放 < to\-deposit;
+餓死 < starvation;
+㒷 < to\-prosper;
+㐤 < to\-implore;
+萬事達卡 < mastercard;
+併吞 < swallow\-up;
+學徒 < apprentice;
+板樁 < sheet\-pile;
+否決權 < veto\-power;
+成分 < ingredient;
+崇拜者 < worshipper;
+悔罪 < conviction;
+能力 < capability;
+戲劇化 < theatrical;
+必須 < to\-have\-to;
+肯定 < to\-be\-sure;
+任性 < capricious;
+王牌 < trump\-card;
+新聞媒體 < news\-media;
+堅定不移 < unswerving;
+非盈利 < non\-profit;
+南面 < south\-side;
+使容易 < facilitate;
+研究員 < researcher;
+薄荷 < field\-mint;
+馬力 < horsepower;
+月球 < \(the\)\-moon;
+現成 < ready\-made;
+議論 < to\-comment;
+風濕 < rheumatism;
+群眾 < the\-masses;
+三月二十三號 < march\-23rd;
+此時以前 < heretofore;
+仁慈 < benevolent;
+目擊者 < eyewitness;
+今後 < henceforth;
+虛擬 < fictitious;
+專門化 < specialize;
+多黨 < multiparty;
+不當 < unsuitable;
+沈落 < sink\,\-fall;
+講述 < talk\-about;
+宣佈 < to\-declare;
+摩托車 < motorcycle;
+朝鮮戰爭 < korean\-war;
+鼓掌 < to\-applaud;
+以外 < apart\-from;
+訂購者 < subscriber;
+爆音 < sonic\-boom;
+大體 < in\-general;
+食指 < forefinger;
+牴觸 < contradict;
+程序 < procedures;
+明言 < pronounced;
+顯微鏡 < microscope;
+本月 < this\-month;
+原生質 < protoplasm;
+多方面 < many\-sided;
+哲學 < philosophy;
+氣象 < meteorolgy;
+互惠 < reciprocal;
+含燐 < phosphoric;
+更正 < correction;
+黑板 < blackboard;
+新聞學 < journalism;
+不定詞 < infinitive;
+預知 < anticipate;
+以及 < as\-well\-as;
+主格 < nominative;
+錄取 < to\-recruit;
+新郎 < bridegroom;
+而後 < after\-that;
+悲歌 < sad\-melody;
+人均 < per\-capita;
+可疑 < suspicious;
+而已 < that''s\-all;
+難以置信 < incredible;
+浴巾 < bath\-towel;
+吊燈 < chandelier;
+共和政體 < republican;
+聲價 < reputation;
+不簡單 < not\-simple;
+受傷害 < be\-injured;
+端系統 < end\-system;
+薄片 < thin\-slice;
+更新 < up\-to\-date;
+顫栗 < to\-tremble;
+集體 < collective;
+外交手腕 < diplomatic;
+敗露 < \(of\-a\-plot;
+試驗 < experiment;
+人口 < population;
+三百億 < 30\-billion;
+歸順 < submission;
+失蹤 < be\-missing;
+飽和 < saturation;
+歡騰 < jubilation;
+後裔 < descendant;
+金牌 < gold\-medal;
+非對稱 < asymmetric;
+不會 < improbable;
+上月 < last\-month;
+半決賽 < semifinals;
+碧綠 < dark\-green;
+老套 < old\-things;
+及物 < transitive;
+莫須有 < groundless;
+不買賬 < not\-buy\-it;
+磁盤驅動器 < disl\-drive;
+電車 < trolleybus;
+顧慮 < misgivings;
+可比 < comparable;
+腓立比書 < philipians;
+事先 < in\-advance;
+警犬 < police\-dog;
+剛體 < rigid\-body;
+景氣 < prosperity;
+卜筮 < divination;
+女裝裁縫師 < dressmaker;
+不快 < be\-unhappy;
+女學生 < schoolgirl;
+改進 < to\-improve;
+電視 < television;
+後者 < the\-latter;
+纏繞 < intertwine;
+加速 < accelerate;
+諳練 < conversant;
+下個月 < next\-month;
+騎士風格 < knighthood;
+鏈路層 < link\-layer;
+一度 < for\-a\-time;
+歡迎 < to\-welcome;
+化妝舞會 < masquerade;
+墨鏡 < sunglasses;
+剝離 < \(of\-tissue;
+彈藥 < ammunition;
+溫和性 < tenderness;
+不安 < intranquil;
+期刊 < periodical;
+知覺 < perception;
+所有者 < proprietor;
+同情 < compassion;
+適配 < adaptation;
+合意 < acceptable;
+大臣 < chancellor;
+同性 < homosexual;
+日益 < day\-by\-day;
+半空中 < in\-mid\-air;
+本份 < one''s\-duty;
+女服物員 < stewardess;
+沒有知覺 < insensible;
+不等式 < inequality;
+會友 < membership;
+暗間兒 < inner\-room;
+自動化 < automation;
+不夠 < not\-enough;
+單方面 < unilateral;
+私下 < in\-private;
+波峰 < wave\-crest;
+三天 < three\-days;
+反日 < anti\-japan;
+建議 < to\-propose;
+佛教徒 < a\-buddhist;
+波導 < wave\-guide;
+婢女 < slave\-girl;
+沒收 < confiscate;
+快活 < gay\,\-happy;
+可悲 < lamentable;
+評註 < commentary;
+必然 < inevitable;
+半球 < hemisphere;
+響應 < respond\-to;
+大綱 < main\-point;
+氣勢洶洶 < aggressive;
+烤鴨 < roast\-duck;
+歌詞 < song\-lyric;
+並入 < merge\-into;
+弱脈 < weak\-pulse;
+操舵室 < pilothouse;
+原本 < originally;
+吸吮 < to\-suck\-in;
+爆破 < to\-blow\-up;
+道賀 < compliment;
+取得 < to\-acquire;
+上半 < first\-half;
+教育 < to\-educate;
+不動 < motionless;
+七十年代 < the\-1970''s;
+西點 < west\-point;
+斗眼 < cross\-eyed;
+眼鏡 < spectacles;
+不備 < unprepared;
+恫嚇 < intimidate;
+奉獻 < consecrate;
+不依 < not\-comply;
+電唱機 < phonograph;
+文盲 < illiterate;
+明智 < not\-unwise;
+流程圖 < flow\-chart;
+監督者 < supervisor;
+一百五十億 < 15\-billion;
+撞針 < firing\-pin;
+南極 < south\-pole;
+所有物 < belongings;
+視窗新技 < windows\-nt;
+二十一 < twenty\-one;
+了 < to\-finish;
+子 < offspring;
+徹 < penetrate;
+要 < necessary;
+辱 < humiliate;
+着 < make\-move;
+成 < completed;
+督 < supervise;
+輯 < gather\-up;
+弥 < extensive;
+美 < beautiful;
+廂 < side\-room;
+问 < ask\-about;
+庭 < courtyard;
+療 < be\-healed;
+痺 < paralysis;
+差 < to\-differ;
+难 < difficult;
+超 < jump\-over;
+異 < different;
+亲 < relatives;
+畫 < delineate;
+畜 < livestock;
+畑 < dry\-field;
+甘 < sweetness;
+认 < recognize;
+貴 < expensive;
+貝 < sea\-shell;
+达 < arrive\-at;
+众 < multitude;
+倒 < fall\-over;
+玩 < play\-with;
+像 < a\-picture;
+宅 < residence;
+据 < to\-occupy;
+譯 < translate;
+譫 < talkative;
+造 < construct;
+媼 < old\-woman;
+犠 < sacrifice;
+牒 < documents;
+牌 < signboard;
+爐 < fireplace;
+久 < long\-time;
+妾 < concubine;
+初 < beginning;
+除 < eliminate;
+况 < condition;
+乱 < confusion;
+创 < establish;
+福 < happiness;
+假 < falsehood;
+顾 < look\-back;
+蠶 < silkworms;
+渐 < gradually;
+瞧 < glance\-at;
+埒 < enclosure;
+埃 < fine\-dust;
+螢 < glow\-worm;
+退 < step\-back;
+蜻 < dragonfly;
+翻 < flip\-over;
+圏 < to\-circle;
+普 < universal;
+蛹 < chrysalis;
+临 < draw\-near;
+协 < be\-united;
+湯 < hot\-water;
+例 < precedent;
+洲 < continent;
+松 < pine\-tree;
+伙 < companion;
+毫 < fine\-hair;
+蕎 < buckwheat;
+输 < transport;
+折 < break\-off;
+汰 < excessive;
+君 < sovereign;
+危 < dangerous;
+概 < generally;
+厄 < adversity;
+汇 < concourse;
+厉 < whetstone;
+附 < adhere\-to;
+肩 < shoulders;
+魘 < nightmare;
+荒 < wasteland;
+鬱 < luxuriant;
+匠 < craftsman;
+匂 < fragrance;
+勸 < recommend;
+飘 < whirlwind;
+炮 < large\-gun;
+郎 < gentleman;
+陪 < accompany;
+凝 < coagulate;
+剩 < leftovers;
+饒 < bountiful;
+肘 < the\-elbow;
+肖 < look\-like;
+昨 < yesterday;
+暂 < temporary;
+递 < hand\-over;
+祥 < good\-luck;
+倹 < temperate;
+仗 < rely\-upon;
+柿 < persimmon;
+键 < door\-bolt;
+枯 < dried\-out;
+莱 < goosefoot;
+赔 < indemnify;
+逢 < come\-upon;
+睁 < open\-eyes;
+嘿 < be\-silent;
+贪 < be\-greedy;
+逝 < pass\-away;
+艾 < artemisia;
+袍 < long\-gown;
+冤 < grievance;
+迪 < enlighten;
+嘉 < excellent;
+閾 < threshold;
+綾 < thin\-silk;
+膀 < upper\-arm;
+顽 < obstinate;
+歉 < deficient;
+帅 < commander;
+憾 < to\-regret;
+劈 < cut\-apart;
+拂 < shake\-off;
+筈 < arrow\-end;
+熬 < cook\-down;
+稼 < sow\-grain;
+恍 < seemingly;
+绣 < embroider;
+懃 < courteous;
+衬 < underwear;
+慊 < to\-resent;
+潭 < deep\-pool;
+硝 < saltpeter;
+骤 < procedure;
+忿 < get\-angry;
+坠 < fall\-down;
+蝶 < butterfly;
+焉 < thereupon;
+禀 < report\-to;
+挫 < push\-down;
+鳄 < alligator;
+谐 < harmonize;
+屎 < excrement;
+葱 < scallions;
+枣 < date\-tree;
+谴 < reprimand;
+汹 < turbulent;
+泻 < drain\-off;
+瀑 < waterfall;
+樊 < a\-railing;
+敛 < draw\-back;
+茵 < a\-cushion;
+棕 < hemp\-palm;
+辗 < turn\-over;
+恤 < show\-pity;
+侈 < luxurious;
+沁 < soak\-into;
+匣 < small\-box;
+捎 < to\-select;
+痞 < dyspepsia;
+睐 < squint\-at;
+垦 < cultivate;
+浒 < riverbank;
+葵 < sunflower;
+睫 < eyelashes;
+哺 < chew\-food;
+竣 < terminate;
+囔 < muttering;
+藐 < disregard;
+埠 < port\-city;
+荤 < meat\-diet;
+蜒 < millipede;
+菇 < mushrooms;
+豚 < small\-pig;
+沓 < connected;
+弩 < cross\-bow;
+殇 < die\-young;
+栈 < warehouse;
+醺 < get\-drunk;
+蜈 < centipede;
+愫 < guileless;
+谙 < versed\-in;
+熹 < dim\-light;
+怂 < instigate;
+遛 < take\-walk;
+麾 < a\-pennant;
+媲 < marry\-off;
+镁 < magnesium;
+椰 < palm\-tree;
+痢 < dysentery;
+嗑 < eat\-seeds;
+蚯 < earthworm;
+蜚 < cockroach;
+阆 < high\-door;
+擀 < roll\-flat;
+袤 < longitude;
+麝 < musk\-deer;
+佻 < frivolous;
+钾 < potassium;
+孑 < remaining;
+檄 < call\-arms;
+隍 < dry\-ditch;
+诿 < pass\-buck;
+逄 < a\-surname;
+梏 < handcuffs;
+钺 < broad\-axe;
+柑 < tangerine;
+乜 < to\-squint;
+娲 < a\-goddess;
+忝 < disgraced;
+诮 < criticize;
+鳏 < huge\-fish;
+蜇 < jellyfish;
+劭 < encourage;
+癣 < ringworms;
+绦 < silk\-cord;
+钸 < plutonium;
+馗 < cheekbone;
+锰 < manganese;
+侪 < a\-company;
+凫 < wild\-duck;
+痱 < heat\-rash;
+痈 < carbuncle;
+悌 < brotherly;
+冼 < \(surname\);
+鹧 < partridge;
+悒 < sorrowful;
+怃 < regretful;
+墒 < wet\-tilth;
+訾 < bad\-mouth;
+圮 < destroyed;
+鲈 < sea\-perch;
+攉 < to\-beckon;
+鲇 < sheatfish;
+膈 < diaphragm;
+犍 < a\-bullock;
+锗 < germanium;
+鎏 < pure\-gold;
+镅 < americium;
+辂 < a\-chariot;
+跸 < clear\-way;
+煳 < be\-burned;
+牾 < to\-oppose;
+昀 < sun\-light;
+乩 < to\-divine;
+羟 < hydroxide;
+荽 < coriander;
+绠 < well\-rope;
+哓 < garrulous;
+脬 < a\-bladder;
+戡 < subjugate;
+辇 < hand\-cart;
+鹚 < cormorant;
+镞 < arrowhead;
+菰 < wild\-rice;
+蠖 < inch\-worm;
+铫 < large\-hoe;
+氘 < deuterium;
+黾 < to\-strive;
+镧 < lanthanum;
+垡 < plow\-soil;
+炔 < acetylene;
+镱 < ytterbium;
+钕 < neodymium;
+忭 < delighted;
+苴 < sackcloth;
+谳 < to\-decide;
+钯 < palladium;
+碲 < tellurium;
+璩 < jade\-ring;
+饫 < surfeited;
+撙 < economize;
+蓼 < smartweed;
+饔 < breakfast;
+锶 < strontium;
+昃 < afternoon;
+唪 < to\-recite;
+儇 < ingenious;
+鲴 < fish\-guts;
+鲅 < fish\-name;
+铍 < beryllium;
+熳 < to\-spread;
+胍 < guanidine;
+鲐 < globefish;
+酐 < anhydride;
+衄 < epistaxis;
+矧 < much\-more;
+悫 < sincerity;
+膦 < phosphine;
+缣 < fine\-silk;
+宄 < a\-traitor;
+阌 < wen\-xiang;
+酞 < phthalein;
+收縮 < pull\-back;
+多疑 < skeptical;
+合力 < cooperate;
+爆炸 < explosion;
+縮小模型 < miniature;
+割草 < mow\-grass;
+變奏 < variation;
+領受 < to\-accept;
+以弗所書 < ephesians;
+動盪 < commotion;
+可哀 < miserably;
+沒有形狀 < shapeless;
+菠蘿 < pineapple;
+穩定性 < stability;
+厚度 < thickness;
+速記 < shorthand;
+用戶數據 < user\-data;
+徐步 < to\-stroll;
+西面 < west\-side;
+連接器 < connector;
+摘除 < to\-excise;
+警官 < constable;
+開發人員 < developer;
+名人 < personage;
+蔓延 < to\-extend;
+地質學家 < geologist;
+同事 < colleague;
+形容辭 < adjective;
+半旗 < half\-mast;
+金匠 < goldsmith;
+同一 < identical;
+可得到 < available;
+碰巧 < by\-chance;
+科學家 < scientist;
+普及 < widespead;
+設置 < to\-set\-up;
+志願者 < volunteer;
+燒燬 < burn\-down;
+明年 < next\-year;
+擦邊球 < edge\-ball;
+古典 < classical;
+叫做 < be\-called;
+綠茶 < green\-tea;
+怎麼樣 < how\-about;
+所有權 < ownership;
+別處 < elsewhere;
+述語 < predicate;
+白報紙 < newsprint;
+防衛 < to\-defend;
+討論會 < symposium;
+教父 < godfather;
+受僱 < mercenary;
+語源 < etymology;
+說法 < statement;
+城門 < city\-gate;
+接受者 < recipient;
+生物學家 < biologist;
+靈敏 < sensitive;
+助理 < assistant;
+每個人 < everybody;
+不育性 < sterility;
+檢查員 < inspector;
+論斷 < inference;
+受事 < recepient;
+熬煎 < suffering;
+分號 < semicolon;
+原告 < complaint;
+白魚 < whitefish;
+表現型 < phenotype;
+多樣 < diversity;
+多模 < multimode;
+無能 < inability;
+白體 < lean\-type;
+標高 < elevation;
+妖媚 < seductive;
+無聲 < noiseless;
+十年 < ten\-years;
+半島 < peninsula;
+不可磨滅 < indelible;
+連續 < continous;
+原則 < principle;
+皮鞋匠 < shoemaker;
+阿比西尼亞 < abyssinia;
+鄭州 < zhengzhou;
+計策 < stratagem;
+底線 < underline;
+閃電 < lightning;
+引渡 < extradite;
+保護者 < protector;
+教母 < godmother;
+文明 < civilized;
+偽君子 < hypocryte;
+直覺 < intuition;
+壁燈 < wall\-lamp;
+發音 < pronounce;
+厘克 < centigram;
+馬蹄鐵 < horseshoe;
+擔架床 < stretcher;
+無籟 < scoundrel;
+加深 < to\-deepen;
+執行 < implement;
+雹暴 < hailstorm;
+確信 < confident;
+那樣 < that\-kind;
+公里 < kilometer;
+誠摯 < sincerely;
+差距 < disparity;
+不亦樂乎 < extremely;
+襯裙 < petticoat;
+鰾膠 < isinglass;
+按照字面 < literally;
+證件 < paperwork;
+細菌 < bacterial;
+蒼天 < firmament;
+三分之一 < one\-third;
+緩沖 < to\-buffer;
+選派 < set\-apart;
+不完善 < imperfect;
+大志 < high\-aims;
+輔音 < consonant;
+張揚 < publicize;
+解碼 < to\-decode;
+播種 < sow\-seeds;
+化學 < chemistry;
+報紙 < newspaper;
+無知 < ignorance;
+接駁 < to\-access;
+不可救藥 < incurable;
+很多 < very\-many;
+耶路撒冷 < jerusalem;
+雙方 < bilateral;
+晴雨表 < barometer;
+千禧年 < millenium;
+長遠 < long\-term;
+千周 < kilohertz;
+過濾 < to\-filter;
+褻瀆的話 < blasphemy;
+奇妙 < fantastic;
+冰蓋 < ice\-sheet;
+國內戰爭 < civil\-war;
+危地馬拉 < guatamala;
+遙測 < telemetry;
+接班人 < successor;
+農舍 < farmhouse;
+剪貼簿 < scrapbook;
+偉晶岩 < pegmatite;
+紅蓮 < red\-lotus;
+指示符 < indicator;
+共識 < consensus;
+加密後的 < encrypted;
+有攻擊性 < offensive;
+大小 < dimension;
+惡名昭彰 < notorious;
+保惠師 < comforter;
+大家 < authority;
+爭取 < fight\-for;
+每天 < every\-day;
+經濟學家 < economist;
+攻擊 < to\-attack;
+紅茶 < black\-tea;
+文字 < character;
+常綠 < evergreen;
+殘廢 < deformity;
+隱晦 < obscurity;
+建築師 < architect;
+照樣 < as\-before;
+方向 < direction;
+焰火 < fireworks;
+救恩 < salvation;
+阿空加瓜 < aconcagua;
+加拉太書 < galatians;
+後勤 < logistics;
+委員會 < committee;
+網際色情 < cyberporn;
+辦罪 < to\-punish;
+要緊 < important;
+民主 < democracy;
+務實 < pragmatic;
+推銷 < to\-market;
+彙報 < to\-report;
+要素 < essential;
+航海者 < navigator;
+夢境 < dreamland;
+課堂 < classroom;
+報界 < the\-press;
+十七 < seventeen;
+火藥 < gunpowder;
+診斷 < diagnosis;
+毫克 < milligram;
+副本 < duplicate;
+花粉過敏 < hay\-fever;
+廣播 < broadcast;
+敗局 < lost\-game;
+郊外 < outskirts;
+白蠟 < white\-wax;
+出現 < to\-appear;
+冰糕 < ice\-cream;
+允許 < to\-permit;
+小吃店 < snack\-bar;
+後代 < posterity;
+維士卡 < visa\-card;
+為時過早 < premature;
+聯合組織 < syndicate;
+構造 < structure;
+齳 < toothless;
+齭 < toothache;
+好奇心 < curiosity;
+勾劃 < to\-sketch;
+人物描寫 < portrayal;
+增援 < reinforce;
+無比 < matchless;
+教士 < churchman;
+次數 < frequency;
+大力 < energetic;
+政治性 < political;
+滑鼠墊 < mouse\-pad;
+壯大 < to\-expand;
+鷾 < a\-swallow;
+鷭 < water\-hen;
+拜物教 < fetishism;
+遵循 < to\-follow;
+鷥 < the\-egret;
+適意 < agreeable;
+鷏 < bird\-name;
+鶡 < crossbill;
+調停 < reconcile;
+鵷 < co\-worker;
+干涉 < interfere;
+鳢 < snakehead;
+社會主義者 < socialist;
+低速率 < low\-speed;
+鲎 < king\-crab;
+鱷 < crocodile;
+勤勉 < diligence;
+款待 < entertain;
+令人欽佩 < admirable;
+鯠 < to\-confer;
+發芽 < germinate;
+鮦 < snakefish;
+撥正 < set\-right;
+魞 < fish\-trap;
+阿奇里斯 < aeschylus;
+壽命 < life\-span;
+鬖 < wild\-hair;
+髧 < long\-hair;
+髗 < the\-skull;
+提摩太后書 < 2\-timothy;
+骭 < shin\-bone;
+政治局 < politburo;
+經文 < scripture;
+零售商 < tradesman;
+敲入 < to\-key\-in;
+隊形 < formation;
+騧 < tan\-horse;
+騐 < to\-verity;
+天上 < celestial;
+駸 < galloping;
+政治家 < statesman;
+饠 < rice\-cake;
+辦理 < to\-handle;
+餱 < dry\-goods;
+安全帶 < seat\-belt;
+孟加拉語 < bengalese;
+註定 < be\-doomed;
+無數 < countless;
+收回 < to\-regain;
+外交 < diplomacy;
+過度 < exceeding;
+操持 < to\-manage;
+登廣告 < advertise;
+檢測 < to\-detect;
+矮凳 < low\-stool;
+階層 < hierarchy;
+靪 < to\-cobble;
+香檳酒 < champagne;
+靧 < wash\-face;
+至高 < paramount;
+靀 < drizzling;
+排行 < seniority;
+霂 < fine\-rain;
+前往 < leave\-for;
+教儀 < ordinance;
+機械裝置 < machinery;
+隃 < to\-exceed;
+墳墓 < sepulcher;
+綜合性 < synthesis;
+公秉 < kiloliter;
+阻撓 < to\-thwart;
+傳送 < to\-convey;
+閺 < look\-down;
+遺囑 < testament;
+歡呼 < cheer\-for;
+锫 < berkelium;
+锆 < zirconium;
+钶 < columbium;
+遊客 < traveller;
+钌 < ruthenium;
+摁釘兒 < thumbtack;
+钁 < a\-mattock;
+文具商 < stationer;
+新加坡 < singapore;
+城牆 < city\-wall;
+內碼 < to\-encode;
+鐻 < drumstick;
+摧殘 < to\-ravage;
+撞擊 < to\-strike;
+加劇 < aggravate;
+鏛 < to\-polish;
+阻抗 < impedance;
+捐贈 < to\-donate;
+自願 < voluntary;
+鎿 < neptunium;
+樹皮 < tree\-bark;
+鎞 < plowshare;
+隨員 < attendant;
+光筆 < light\-pen;
+報攤 < newsstand;
+出於 < be\-due\-to;
+無形 < invisible;
+裝置 < equipment;
+鈌 < to\-pierce;
+故事 < narrative;
+共產 < communist;
+推翻 < overthrow;
+領事館 < consulate;
+園藝 < gardening;
+劃分 < to\-divide;
+傳記 < biography;
+迷惑 < to\-puzzle;
+加上 < to\-put\-in;
+輘 < a\-car\-rut;
+通宵 < overnight;
+軄 < to\-govern;
+躔 < follow\-in;
+廣傳 < propagate;
+發生 < to\-happen;
+跩 < to\-waddle;
+超聯結 < hyperlink;
+趝 < to\-pursue;
+赿 < late\-slow;
+組成 < component;
+接管 < take\-over;
+豵 < young\-pig;
+總會會長 < president;
+隆冬 < midwinter;
+凹度 < concavity;
+漫長 < very\-long;
+界面 < interface;
+創作 < to\-create;
+到目前為止 < until\-now;
+譊 < wrangling;
+譅 < wriggling;
+諝 < knowledge;
+毫無疑問 < certainty;
+綜合 < composite;
+披露 < to\-reveal;
+看待 < look\-upon;
+陷入 < sink\-into;
+衰落 < decompose;
+撥奏 < pizzicato;
+迫害 < persecute;
+進化 < evolution;
+流行性感冒 < influenza;
+裲 < waistcoat;
+辯才 < eloquence;
+自負 < conceited;
+螌 < a\-striped;
+市政 < municipal;
+儼然 < just\-like;
+保皇黨 < royalists;
+絕妙 < exquisite;
+東北方 < northeast;
+投降 < surrender;
+簽章 < signature;
+蘞 < wild\-vine;
+綁匪 < kidnapper;
+無力 < powerless;
+好萊塢 < hollywood;
+擔保 < guarantee;
+推理 < reasoning;
+蕗 < leucacene;
+因而 < therefore;
+逆向 < backwards;
+蓆 < straw\-mat;
+按蚊 < anopheles;
+樣機 < prototype;
+蒢 < hedysarum;
+刨冰 < water\-ice;
+帶寬 < bandwidth;
+葓 < vegetable;
+異議 < objection;
+規定 < provision;
+展開 < to\-unfold;
+輪流 < alternate;
+持久性 < constancy;
+傳統 < tradition;
+偏見 < prejudice;
+白血病 < leukaemia;
+全世界 < worldwide;
+地理 < geography;
+地球 < the\-earth;
+苙 < a\-pig\-sty;
+芼 < to\-choose;
+降低 < to\-reduce;
+保險 < insurance;
+保障 < to\-ensure;
+艣 < stern\-oar;
+場合 < situation;
+艎 < fast\-boat;
+報告 < to\-inform;
+舝 < linch\-pin;
+舘 < a\-mansion;
+臯 < to\-praise;
+澳大利亞 < australia;
+公斗 < decaliter;
+返回 < return\-to;
+大寫鎖定 < caps\-lock;
+分割 < to\-cut\-up;
+胦 < the\-navel;
+扁骨 < flat\-bone;
+耥 < farm\-tool;
+羶 < rank\-odor;
+保鏢 < bodyguard;
+跑錶 < stopwatch;
+紙夾 < paperclip;
+罁 < a\-cistern;
+發明 < to\-invent;
+模擬 < imitation;
+半工半讀 < part\-work;
+激發 < to\-arouse;
+再度 < once\-more;
+糾察 < to\-picket;
+拷花 < to\-emboss;
+我們自己 < ourselves;
+潛艇 < submarine;
+迷住 < fascinate;
+艾炷 < moxa\-cone;
+囚禁 < captivity;
+緥 < swaddling;
+羅徹斯特 < rochester;
+便門 < side\-door;
+抗議者 < protester;
+衣帽間 < cloakroom;
+一匹馬 < one\-horse;
+有時候 < sometimes;
+糰 < rice\-ball;
+糝 < scattered;
+候選人 < candidate;
+管弦樂團 < orchestra;
+向北地 < northward;
+籨 < trousseau;
+下決心 < determine;
+規勸 < to\-advise;
+表皮 < epidermis;
+表白 < vindicate;
+白日做夢 < day\-dream;
+竕 < deciliter;
+保證人 < guarantor;
+竆 < exhausted;
+看做 < regard\-as;
+窋 < in\-a\-hole;
+稬 < glutinous;
+上星期 < last\-week;
+兇手 < assailant;
+寬頻 < broadband;
+西南 < southwest;
+西北 < northwest;
+礽 < blessings;
+礞 < \(mineral\);
+精巧 < elaborate;
+第二十 < twentieth;
+嶄新 < brand\-new;
+碆 < arrow\-tip;
+打進 < to\-breach;
+砬 < big\-stone;
+公寸 < decimeter;
+公寓 < apartment;
+常任 < permanent;
+光彩 < honorable;
+睡過頭 < oversleep;
+指示 < point\-out;
+眕 < restraint;
+病理 < pathology;
+任何其他 < any\-other;
+辛勞 < laborious;
+損壞 < to\-damage;
+瘭 < a\-whitlow;
+瘜 < a\-polypus;
+巴勒斯坦 < palestine;
+痡 < a\-disease;
+利未記 < leviticus;
+童子軍 < boy\-scout;
+畱 < to\-detain;
+嘉許 < favorable;
+畋 < till\-land;
+八天 < eight\-day;
+甦 < be\-reborn;
+瓸 < hectogram;
+拒絕 < to\-refuse;
+要不 < otherwise;
+璿 < fine\-jade;
+標定 < demarcate;
+瑴 < twin\-gems;
+瑣 < fragments;
+輻射 < radiation;
+四十六 < forty\-six;
+排放 < discharge;
+體現 < to\-embody;
+衰減 < to\-weaken;
+籃板 < backboard;
+在﹍旁邊 < alongside;
+馬鞭 < horsewhip;
+獀 < to\-gather;
+第九十 < ninetieth;
+狳 < armadillo;
+燶 < to\-scorch;
+畢竟 < after\-all;
+熿 < brilliant;
+先見之明 < foresight;
+低階 < low\-level;
+所謂 < so\-called;
+潰爛 < to\-fester;
+儲存 < stockpile;
+車前燈 < headlight;
+濩 < pour\-down;
+掛念 < concerned;
+宇航員 < astronaut;
+轟動 < sensation;
+臺燈 < desk\-lamp;
+使困窘 < embarrass;
+湼 < black\-mud;
+湅 < boil\-silk;
+淩 < pass\-over;
+實質 < substance;
+隨之而後 < from\-that;
+涷 < rainstorm;
+洑 < whirlpool;
+巧克力 < chocolate;
+有雄心 < ambitious;
+殈 < infertile;
+欕 < tree\-name;
+植物 < botanical;
+空防 < air\-force;
+入侵 < to\-invade;
+處理器 < processor;
+主管人員 < executive;
+橚 < tall\-tree;
+公丈 < decameter;
+輸出 < to\-export;
+榪 < headboard;
+知更鳥 < redbreast;
+啟示者 < revelator;
+輸入 < to\-import;
+等等 < et\-cetera;
+第三十 < thirtieth;
+棖 < door\-stop;
+梜 < chopstick;
+激怒 < infuriate;
+栱 < large\-peg;
+栭 < king\-post;
+栒 < cross\-bar;
+停泊 < anchorage;
+柈 < container;
+枙 < tree\-knot;
+白鎢礦 < scheelite;
+朞 < full\-year;
+手提包 < \(hand\)bag;
+技術性 < technical;
+漲潮 < high\-tide;
+暍 < sunstroke;
+家譜 < genealogy;
+驚異 < amazement;
+輔助 < to\-assist;
+旪 < united\-in;
+提供 < to\-supply;
+不誠實 < dishonest;
+豌豆粥 < pea\-gruel;
+變流器 < converter;
+攋 < to\-clutch;
+攃 < preceding;
+擐 < to\-put\-on;
+體操 < gymnastic;
+摽 < throw\-out;
+提摩太前書 < 1\-timothy;
+摮 < to\-rattle;
+揥 < scratcher;
+便箋 < notepaper;
+聖餐 < sacrament;
+財務秘書 < treasurer;
+批發 < wholesale;
+趕緊 < hurriedly;
+扳道員 < pointsman;
+扤 < to\-thrust;
+骨架 < framework;
+戜 < to\-scrape;
+偵探 < detective;
+兩星期 < fortnight;
+挑戰 < challenge;
+格式化 < to\-format;
+被告 < defendant;
+波利尼西亞 < polynesia;
+悁 < irritable;
+恑 < to\-change;
+怺 < to\-endure;
+怞 < to\-grieve;
+怗 < observant;
+採石場 < stone\-pit;
+加勒比 < caribbean;
+電報機 < telegraph;
+貝類 < shellfish;
+在內 < including;
+拿手 < expert\-in;
+工作表 < worksheet;
+暴風雪 < snowstorm;
+竊聽 < eavesdrop;
+廾 < two\-hands;
+庉 < a\-village;
+幩 < trappings;
+幙 < a\-curtain;
+宿舍 < dormitory;
+山水 < landscape;
+四天 < four\-days;
+挺好 < very\-good;
+簽入 < to\-log\-on;
+馬背 < horseback;
+驕氣 < arrogance;
+疑心 < suspicion;
+渺茫 < uncertain;
+寽 < a\-handful;
+文字檔 < text\-file;
+寘 < put\-aside;
+激動 < to\-excite;
+嫛 < compliant;
+媬 < governess;
+媕 < undecided;
+添補 < fill\-\(up\);
+貿易戰 < trade\-war;
+奉承者 < flatterer;
+生育能力 < fertility;
+修正 < to\-revise;
+指揮者 < conductor;
+夌 < to\-dawdle;
+某處 < somewhere;
+塝 < flat\-bank;
+參考書 < reference;
+共享軟體 < shareware;
+貨輪 < freighter;
+半衰期 < half\-life;
+圊 < rest\-room;
+體團 < community;
+抵抗 < to\-resist;
+不受歡迎 < unwelcome;
+噁 < nastiness;
+颱風 < hurricane;
+嘑 < to\-menace;
+拉斐特 < lafayette;
+贖罪 < atonement;
+寵物 < house\-pet;
+聖誕 < christmas;
+哫 < to\-cajole;
+咵 < to\-revile;
+不結果 < fruitless;
+呧 < to\-rebuke;
+假定 < to\-assume;
+申請人 < applicant;
+行動 < operation;
+主體 < main\-part;
+手法 < technique;
+消遣 < amusement;
+出版者 < publisher;
+叅 < to\-counel;
+厓 < precipice;
+凹凸印刷 < embossing;
+就業 < get\-a\-job;
+疆域 < territory;
+本星期 < this\-week;
+匘 < the\-brain;
+勩 < work\-hard;
+怪不得 < no\-wonder;
+撒都該人 < sadducees;
+承擔 < undertake;
+刔 < scoop\-out;
+膽小 < cowardice;
+凷 < dirt\-clod;
+凙 < an\-icicle;
+創造力 < ingenuity;
+屬性 < attribute;
+兇 < atrocious;
+主頁 < home\-page;
+可容忍 < tolerable;
+會面 < meet\-with;
+傺 < to\-hinder;
+成為 < to\-become;
+交誼 < communion;
+圖書管理員 < librarian;
+基本上 < basically;
+侎 < to\-soothe;
+伻 < messenger;
+伋 < deceptive;
+潛力 < potential;
+稻草人 < scarecrow;
+學童 < schoolboy;
+多用戶 < multiuser;
+自動 < automatic;
+共產主義 < communism;
+䶳 < to\-lookup;
+䶑 < to\-sneeze;
+蠕動 < to\-wiggle;
+打敗 < to\-defeat;
+豪豬 < porcupine;
+不以為然 < object\-to;
+䳺 < the\-quail;
+流量 < flow\-rate;
+䲨 < wild\-swan;
+社會主義 < socialism;
+䱈 < fish\-pulp;
+䰥 < a\-cyclone;
+賜給 < to\-bestow;
+蜜月假期 < honeymoon;
+䯦 < tiny\-bone;
+䮜 < to\-gallop;
+招募 < to\-recuit;
+䭬 < to\-kowtow;
+對於 < regarding;
+䭛 < tasteless;
+䭑 < incorrupt;
+同班同學 < classmate;
+䬶 < to\-strave;
+䫻 < a\-typhoon;
+䫔 < a\-servant;
+上面 < on\-top\-of;
+羽毛球 < badminton;
+䩦 < the\-reins;
+五號 < the\-fifth;
+䨭 < the\-skies;
+䨍 < deep\-pond;
+䦵 < incapable;
+䦬 < a\-vacancy;
+䦆 < a\-big\-hoe;
+拆卸 < to\-unload;
+救護車 < ambulance;
+蛋白 < egg\-white;
+第十六 < sixteenth;
+䢱 < to\-slight;
+䢟 < to\-travel;
+吞食 < to\-devour;
+䢍 < to\-hasten;
+使生氣 < displease;
+胃炎 < gastritis;
+對抗 < withstand;
+䠲 < to\-listen;
+䠯 < to\-ascend;
+䠮 < to\-prance;
+䟻 < bare\-feet;
+䟞 < to\-falter;
+不公正 < injustice;
+脫掉 < strip\-off;
+香港 < hong\-kong;
+䟌 < diverging;
+䞼 < to\-escape;
+䞒 < red\-color;
+䞐 < plentiful;
+䞉 < a\-surplus;
+䜭 < to\-dredge;
+實時 < real\-time;
+肺炎 < pneumonia;
+䜟 < to\-verify;
+光射線 < light\-ray;
+䛻 < to\-induce;
+䛹 < to\-accuse;
+䛳 < to\-malign;
+䛬 < baby\-talk;
+䛪 < loquacity;
+䛋 < to\-scheme;
+䛁 < to\-murmur;
+慶祝 < celebrate;
+䙸 < to\-obtain;
+外國人 < foreigner;
+䘼 < stockings;
+宰殺 < slaughter;
+第十五 < fifteenth;
+䘑 < the\-pulse;
+䕩 < dry\-fruit;
+浪蕩 < to\-loiter;
+䔳 < chickling;
+䓰 < absinthin;
+某物 < something;
+䒊 < a\-patient;
+䑪 < a\-sailing;
+䑓 < a\-lookout;
+津貼 < allowance;
+䐺 < delicious;
+䐛 < to\-loosen;
+䐆 < big\-belly;
+䏽 < meat\-pulp;
+䏬 < the\-spine;
+䏠 < meat\-soup;
+䏞 < the\-belly;
+肝炎 < hepatitis;
+䎡 < to\-shrink;
+消耗 < to\-use\-up;
+䎃 < fine\-down;
+阿根廷 < argentina;
+䍎 < a\-spindle;
+䌲 < light\-red;
+䌛 < entourage;
+䋠 < to\-repair;
+䊰 < foodstuff;
+䊜 < dumplings;
+䉼 < materials;
+上載 < to\-upload;
+蘭花 < cymbidium;
+書記 < secretary;
+浪船 < swingboat;
+偽善者 < hypocrite;
+䇐 < to\-arrive;
+小寫 < lowercase;
+䆐 < a\-country;
+螺旋槳 < propeller;
+用具 < appliance;
+古風 < antiquity;
+䅃 < late\-crop;
+安歇 < go\-to\-bed;
+䃩 < a\-mineral;
+家族 < household;
+䃕 < stoneware;
+自動樓梯 < escalator;
+緊急事件 < emergency;
+䃀 < millstone;
+何故 < wherefore;
+腳印 < footprint;
+瓷器 < chinaware;
+貯水處 < reservoir;
+䁐 < deep\-eyed;
+童年 < childhood;
+印度尼西亞 < indonesia;
+半流體 < semifluid;
+䀬 < to\-glance;
+䀡 < to\-spy\-on;
+䀐 < to\-regard;
+起床 < to\-get\-up;
+㿿 < wine\-cups;
+民主主義者 < democrats;
+㿟 < he\-bright;
+征服者 < conqueror;
+㾥 < bellyache;
+㾣 < to\-shiver;
+今生 < this\-life;
+捕鼠器 < mousetrap;
+㽞 < to\-remain;
+㽉 < a\-big\-jar;
+㼺 < porcelain;
+變色龍 < chameleon;
+㼚 < earthware;
+對抗者 < adversary;
+本職 < one''s\-job;
+退黑激素 < melatonin;
+背斜 < anticline;
+暴躁 < irascible;
+池鹽 < lake\-salt;
+薄油層 < oil\-sheet;
+不許 < not\-allow;
+商標 < trademark;
+飯碗 < rice\-bowl;
+無知覺 < senseless;
+晤面 < interview;
+重開 < to\-reopen;
+㵔 < not\-clear;
+變革 < transform;
+㴁 < to\-add\-to;
+白云母 < muscovite;
+㳨 < to\-splash;
+截奪 < intercept;
+彫刻品 < sculpture;
+深水 < deepwater;
+㰖 < the\-olive;
+㯺 < a\-cabinet;
+變焦距鏡頭 < zoom\-lens;
+㯯 < small\-cup;
+㯝 < paulownia;
+㮙 < a\-pitfall;
+㭢 < mechanics;
+起始 < originate;
+㬿 < moonlight;
+祇讀 < read\-only;
+㬫 < clear\-sky;
+一千噸 < 1000\-tons;
+不規則 < irregular;
+波狀雲 < undulatus;
+學會 < institute;
+㪈 < to\-let\-go;
+㩒 < to\-arrest;
+㩇 < the\-thumb;
+㨶 < to\-thresh;
+㨉 < to\-smooth;
+㧩 < to\-dispel;
+㧗 < to\-clatch;
+僚 < officials;
+㦯 < a\-certain;
+㦖 < resentful;
+㥾 < mortified;
+㥳 < to\-survey;
+㥦 < satisfied;
+㥀 < exclusive;
+㤵 < copassion;
+末端 < extremity;
+㤇 < terrified;
+㤆 < nauseated;
+㣺 < the\-heart;
+瓜分 < partition;
+㢡 < to\-exhort;
+㡼 < a\-granary;
+㡺 < a\-cottage;
+㡗 < red\-paper;
+㠘 < an\-island;
+涌現 < spring\-up;
+禮節 < etiquette;
+變醜 < disfigure;
+㜻 < to\-admire;
+蜂巢 < honeycomb;
+㜘 < delicated;
+㜏 < last\-name;
+中美 < china\-usa;
+㛾 < not\-clean;
+暗語 < code\-word;
+擴音器 < megaphone;
+不見了 < disappear;
+㚰 < an\-embryo;
+㚛 < corpulent;
+㚘 < a\-partner;
+重蹈 < to\-repeat;
+㘣 < compasses;
+㗳 < forgetful;
+九月份 < september;
+超文本 < hypertext;
+基督教徒 < christian;
+㕹 < a\-buckler;
+㕕 < deception;
+㕑 < a\-kitchen;
+休戰 < armistice;
+㕋 < rock\-land;
+㕈 < to\-linger;
+㔧 < to\-incite;
+讀書人 < a\-scholar;
+㓋 < to\-freeze;
+㓄 < to\-plough;
+叛賣 < to\-betray;
+㑧 < perturbed;
+㑄 < to\-insult;
+㐯 < to\-employ;
+伸展 < extension;
+一致 < unanimous;
+引用句 < quotation;
+老牌 < old\-brand;
+妖風 < evil\-wind;
+錶帶 < watchband;
+減少 < to\-lessen;
+有益 < wholesome;
+立刻 < forthwith;
+八倍體 < octoploid;
+深思 < to\-ponder;
+野蠻 < barbarous;
+財東 < shopowner;
+虛構 < imaginary;
+被禁止 < forbidden;
+聯想 < associate;
+浸沒 < immersion;
+淒慘 < miserable;
+一篇 < one\-sided;
+介質訪問控制層 < mac\-layer;
+不自然 < unnatural;
+期滿 < to\-expire;
+警覺 < vigilance;
+原諒 < to\-excuse;
+家俱 < furniture;
+高科技 < high\-tech;
+感染 < infection;
+孔子 < confucius;
+亞格門農 < agamemnon;
+家事 < housework;
+怪物似 < monstrous;
+冰棍兒 < ice\-lolly;
+今年 < this\-year;
+白班兒 < day\-shift;
+一百 < a\-hundred;
+仲夏 < midsummer;
+證詞 < testimony;
+不逞之徒 < desperado;
+突出 < prominent;
+星期三 < wednesday;
+惡毒 < malicious;
+野蠻人 < barbarian;
+十字軍 < crusaders;
+露韓 < to\-expose;
+法國人 < frenchman;
+五千噸 < 5000\-tons;
+影響 < influence;
+暴發 < break\-out;
+應付 < deal\-with;
+有毒 < poisonous;
+弱鹼 < weak\-base;
+汽船 < steamboat;
+遇難船 < shipwreck;
+可笑 < laughable;
+半載 < half\-load;
+微軟 < microsoft;
+仙境 < fairyland;
+旨趣 < objective;
+大類 < main\-type;
+本文 < this\-text;
+羊皮紙 < parchment;
+憤憤不平 < indignant;
+營養 < nutrition;
+反艦艇 < anti\-ship;
+協議 < agreement;
+那麼 < so\-\(much\);
+必需品 < necessity;
+碧藍 < dark\-blue;
+待遇 < treatment;
+下個星期 < next\-week;
+合理 < rationale;
+玩弄 < resort\-to;
+旁路 < to\-bypass;
+夜間 < nighttime;
+比鄰 < neighbour;
+書架 < bookshelf;
+有效 < effective;
+缽盂 < alms\-bowl;
+石灰石 < limestone;
+資助 < subsidize;
+歷史學家 < historian;
+修道院 < monastery;
+上次 < last\-time;
+望遠鏡 < telescope;
+擺設兒 < ornaments;
+五天 < five\-days;
+心靈上 < spiritual;
+旁觀 < spectator;
+堅忍不拔 < fortitude;
+介入 < intervene;
+以上 < more\-than;
+矛頭 < spearhead;
+夢遺 < wet\-dream;
+天文學 < astronomy;
+巴比妥 < barbitone;
+波段 < wave\-band;
+離開 < to\-depart;
+實質上 < virtually;
+吐氣 < aspirated;
+東南 < southeast;
+奇觀 < spectacle;
+改革 < to\-reform;
+愛國 < patriotic;
+不斷 < unceasing;
+未婚 < unmarried;
+弱酸 < weak\-acid;
+乘客 < passenger;
+配置 < to\-deploy;
+失調 < imbalance;
+本壘 < home\-base;
+人事 < personnel;
+有意識 < conscious;
+書店 < bookstore;
+受害者 < casulties;
+不完美 < defective;
+司機 < chauffeur;
+東亞 < east\-asia;
+合格 < qualified;
+情緒化 < emotional;
+耐力 < endurance;
+支持者 < supporter;
+明確 < clear\-cut;
+不惜 < not\-stint;
+借書單 < book\-slip;
+主婦 < housewife;
+表意文字 < ideograph;
+通貨膨脹 < inflation;
+玩具 < plaything;
+電話 < telephone;
+施肥 < fertilize;
+第八十 < eightieth;
+里程碑 < milestone;
+不已 < endlessly;
+雜貨 < groceries;
+木匠 < carpenter;
+醬油 < soy\-sauce;
+不情願 < unwilling;
+觸鬚 < tentacles;
+下定義 < to\-define;
+擦音 < fricative;
+周圍 < encompass;
+對不起 < i''m\-sorry;
+不對 < incorrect;
+心目 < mentality;
+可敬 < venerable;
+大荳 < soya\-bean;
+𢥞 < same\-as\-忡;
+假象牙 < celluloid;
+降落傘 < parachute;
+波幅 < amplitude;
+右手 < righthand;
+流入 < flow\-into;
+注射 < injection;
+硬盤 < hard\-disk;
+功課 < classwork;
+週長 < perimeter;
+購買者 < purchaser;
+大教堂 < cathedral;
+組織者 < organizer;
+婚姻 < matrimony;
+不在 < not\-be\-in;
+丙種射線 < gamma\-ray;
+鞭毛 < flagellum;
+撫養 < to\-foster;
+刪除 < to\-delete;
+遠足 < excursion;
+無限 < unlimited;
+頑強 < tenacious;
+無關 < unrelated;
+蒸發 < evaporate;
+古怪 < eccentric;
+得當 < expedient;
+油布 < tarpaulin;
+下唇 < lower\-lip;
+上唇 < upper\-lip;
+聖迭哥 < san\-diego;
+頁心 < type\-page;
+污染 < pollution;
+意氣相投 < congenial;
+長方形 < rectangle;
+前途 < prospects;
+熊蜂 < bumblebee;
+總結 < summarize;
+吸取 < to\-absorb;
+週邊 < periphery;
+年限 < age\-limit;
+下列 < following;
+題名 < autograph;
+多端 < multiport;
+效能 < efficient;
+灰獵犬 < greyhound;
+獲暴利者 < profiteer;
+不停 < incessant;
+大砲 < artillery;
+不值 < not\-worth;
+沙岩 < sandstone;
+波及 < spread\-to;
+微波 < microwave;
+無辜 < innocence;
+次要 < secondary;
+不予 < not\-grant;
+去年 < last\-year;
+不了 < unable\-to;
+韌性 < toughness;
+版權 < copyright;
+向南 < southward;
+民歌 < folk\-song;
+即時 < immediate;
+習慣性 < customary;
+幸運 < fortunate;
+美中 < usa\-china;
+熟練 < practiced;
+念 < think\-of;
+会 < assemble;
+学 < learning;
+徒 < disciple;
+睦 < friendly;
+无 < negative;
+方 < a\-square;
+前 < in\-front;
+眉 < eyebrows;
+省 < province;
+直 < straight;
+廢 < abrogate;
+盛 < abundant;
+軒 < carriage;
+全 < maintain;
+廊 < corridor;
+皺 < wrinkles;
+康 < peaceful;
+间 < midpoint;
+躊 < hesitate;
+第 < sequence;
+幻 < illusion;
+癇 < epilepsy;
+山 < mountain;
+巾 < kerchief;
+巧 < skillful;
+距 < distance;
+界 < boundary;
+任 < trust\-to;
+台 < platform;
+象 < elephant;
+题 < forehead;
+賢 < virtuous;
+資 < property;
+貼 < paste\-to;
+費 < expenses;
+履 < footwear;
+武 < military;
+琲 < necklace;
+尠 < very\-few;
+完 < complete;
+即 < promptly;
+寵 < favorite;
+语 < language;
+珍 < precious;
+商 < commerce;
+宝 < treasure;
+千 < thousand;
+宜 < suitable;
+官 < official;
+站 < stand\-up;
+譬 < metaphor;
+香 < fragrant;
+似 < resemble;
+嬢 < troubled;
+虽 < although;
+且 < moreover;
+调 < transfer;
+嫉 < jealousy;
+狃 < to\-covet;
+嫁 < to\-marry;
+媚 < charming;
+誘 < persuade;
+誄 < eulogize;
+詳 < detailed;
+詰 < question;
+惊 < frighten;
+支 < disperse;
+突 < suddenly;
+評 < appraise;
+娠 < pregnant;
+句 < sentence;
+显 < manifest;
+增 < increase;
+料 < consider;
+妊 < conceive;
+续 < continue;
+炭 < charcoal;
+围 < surround;
+災 < calamity;
+塚 < cemetery;
+瀕 < approach;
+濺 < sprinkle;
+濯 < wash\-out;
+垣 < low\-wall;
+习 < practice;
+垂 < let\-down;
+坂 < hillside;
+祖 < ancestor;
+优 < superior;
+滯 < block\-up;
+溢 < overflow;
+温 < lukewarm;
+蚊 < mosquito;
+鹸 < alkaline;
+噪 < be\-noisy;
+嘲 < ridicule;
+減 < decrease;
+嘔 < to\-vomit;
+恩 < kindness;
+脱 < take\-off;
+涸 < dried\-up;
+喪 < mourning;
+奔 < run\-fast;
+涌 < surge\-up;
+禁 < restrict;
+浮 < to\-float;
+互 < mutually;
+搞 < to\-clear;
+朱 < cinnabar;
+域 < district;
+材 < material;
+偷 < to\-steal;
+蓉 < hibiscus;
+抽 < draw\-out;
+仪 < ceremony;
+卸 < lay\-down;
+忆 < remember;
+隔 < separate;
+卓 < profound;
+损 < diminish;
+茄 < eggplant;
+勿 < must\-not;
+髭 < mustache;
+遥 < far\-away;
+櫛 < comb\-out;
+币 < currency;
+勉 < endeavor;
+骸 < skeleton;
+努 < to\-exert;
+萍 < duckweed;
+樅 < fir\-tree;
+缩 < contract;
+臥 < lie\-down;
+慕 < long\-for;
+臣 < minister;
+挡 < obstruct;
+膜 < membrane;
+榛 < hazelnut;
+俊 < talented;
+枝 < branches;
+陷 < submerge;
+勒 < strangle;
+聊 < somewhat;
+飾 < decorate;
+斜 < slanting;
+斐 < graceful;
+梟 < owl\-thus;
+傘 < umbrella;
+亭 < pavilion;
+泛 < to\-drift;
+符 < i\.d\.\-tag;
+允 < to\-grant;
+跨 < straddle;
+掩 < to\-cover;
+頃 < a\-moment;
+柴 < firewood;
+俯 < bow\-down;
+俥 < rickshaw;
+邻 < neighbor;
+驾 < to\-drive;
+羞 < disgrace;
+裤 < trousers;
+估 < merchant;
+鞘 < scabbard;
+咐 < instruct;
+恒 < constant;
+糟 < sediment;
+扮 < dress\-up;
+曜 < glorious;
+暢 < smoothly;
+押 < mortgage;
+戚 < relative;
+穆 < majestic;
+嘻 < mirthful;
+並 < equal\-to;
+昔 < formerly;
+闘 < struggle;
+瞪 < stare\-at;
+斥 < to\-scold;
+剪 < scissors;
+姚 < handsome;
+掏 < take\-out;
+間 < interval;
+惹 < irritate;
+簿 < register;
+芷 < angelica;
+磁 < magnetic;
+毅 < resolute;
+笥 < a\-hamper;
+拘 < restrain;
+伐 < cut\-down;
+竊 < secretly;
+銘 < inscribe;
+愉 < pleasant;
+窜 < run\-away;
+寨 < stockade;
+戻 < perverse;
+沪 < shanghai;
+釜 < cauldron;
+嗤 < laugh\-at;
+娱 < pleasure;
+禄 < blessing;
+愕 < startled;
+啡 < morphine;
+囚 < prisoner;
+账 < accounts;
+瓷 < crockery;
+腥 < raw\-meat;
+咸 < together;
+疫 < epidemic;
+啪 < syllable;
+膨 < to\-swell;
+吱 < chirping;
+菌 < mushroom;
+琐 < trifling;
+苟 < careless;
+崛 < towering;
+凸 < protrude;
+嘀 < backbite;
+铐 < shackles;
+谕 < proclaim;
+迸 < gush\-out;
+剔 < pick\-out;
+冀 < hope\-for;
+砚 < inkstone;
+捍 < ward\-off;
+臀 < buttocks;
+倔 < stubborn;
+奄 < ere\-long;
+侥 < be\-lucky;
+梵 < buddhist;
+褥 < mattress;
+晖 < sunshine;
+畴 < farmland;
+瞟 < glare\-at;
+瘸 < lameness;
+澎 < splatter;
+潦 < to\-flood;
+偎 < cling\-to;
+蝎 < scorpion;
+簸 < winnower;
+庶 < numerous;
+撂 < put\-down;
+晗 < pre\-dawn;
+蹊 < footpath;
+阉 < castrate;
+淆 < confused;
+萦 < entangle;
+榆 < elm\-tree;
+猝 < abruptly;
+曦 < sunlight;
+渤 < swelling;
+辘 < windlass;
+铝 < aluminum;
+捋 < to\-pluck;
+虻 < horsefly;
+瞌 < doze\-off;
+亟 < urgently;
+徨 < doubtful;
+啐 < to\-taste;
+镯 < bracelet;
+刽 < amputate;
+藻 < splendid;
+惰 < indolent;
+燔 < to\-roast;
+涝 < inundate;
+绛 < deep\-red;
+氯 < chlorine;
+坍 < collapse;
+忐 < timorous;
+殡 < encoffin;
+昵 < intimate;
+俟 < wait\-for;
+桢 < hardwood;
+黏 < stick\-to;
+痘 < smallpox;
+槟 < betelnut;
+韭 < scallion;
+蔫 < withered;
+膂 < backbone;
+胫 < shinbone;
+臃 < swell\-up;
+岌 < perilous;
+玎 < jingling;
+隼 < aquiline;
+陲 < frontier;
+谶 < prophecy;
+偻 < humpback;
+铂 < platinum;
+纛 < a\-banner;
+铬 < chromium;
+胰 < pancreas;
+覃 < reach\-to;
+睾 < testicle;
+倨 < arrogant;
+讣 < obituary;
+钛 < titanium;
+浃 < saturate;
+旖 < romantic;
+缙 < red\-silk;
+衾 < coverlet;
+宸 < imperial;
+佞 < flattery;
+蛔 < tapeworm;
+氅 < overcoat;
+氟 < fluorine;
+氰 < cyanogen;
+鲟 < sturgeon;
+硒 < selenium;
+舨 < a\-sampan;
+烊 < to\-smelt;
+萱 < day\-lily;
+疸 < jaundice;
+铊 < thallium;
+诂 < exegesis;
+雉 < pheasant;
+颢 < luminous;
+栀 < gardenia;
+诒 < bequeath;
+颟 < dawdling;
+苋 < amaranth;
+瀣 < sea\-mist;
+箝 < tweezers;
+楮 < mulberry;
+遄 < to\-hurry;
+钒 < vanadium;
+苷 < licorice;
+钨 < tungsten;
+埸 < a\-border;
+嫒 < daughter;
+癜 < erythema;
+鸹 < the\-crow;
+曛 < twilight;
+骘 < stallion;
+坻 < an\-islet;
+觫 < to\-start;
+铵 < ammonium;
+氩 < argonium;
+卣 < wine\-pot;
+锑 < antimony;
+醛 < aldehyde;
+钽 < tantalum;
+砼 < concrete;
+熘 < to\-steam;
+窨 < a\-cellar;
+栲 < mangrove;
+鲣 < skipjack;
+铷 < rubidium;
+铕 < europium;
+钋 < polonium;
+砑 < to\-grind;
+洫 < to\-ditch;
+埚 < crucible;
+垤 < ant\-hill;
+卺 < winecups;
+嘏 < felicity;
+鲽 < flatfish;
+鲭 < mackerel;
+钪 < scandium;
+钫 < francium;
+钐 < samarium;
+祓 < exorcise;
+栳 < a\-basket;
+吲 < smile\-at;
+莰 < camphane;
+芴 < fluorene;
+赜 < abstruse;
+改編 < to\-adapt;
+白內障 < cataract;
+壓緊 < compress;
+醫學 < medicine;
+吞併 < to\-annex;
+靈活 < flexible;
+大篷車 < schooner;
+文獻 < document;
+外用 < external;
+監護人 < guardian;
+邊線 < sideline;
+正統 < orthodox;
+斯洛伐克 < slovakia;
+頻仍 < frequent;
+緯線 < latitude;
+不合適 < improper;
+無誤 < verified;
+日曆 < calendar;
+剝落 < peel\-off;
+預卜 < foretell;
+謹慎 < cautious;
+茶館 < teahouse;
+企業間網路 < extranet;
+觀察者 < observer;
+鳥籠 < birdcage;
+建築 < building;
+藥劑士 < druggist;
+不信任 < mistrust;
+建立 < creation;
+因特網 < internet;
+心手 < new\-hand;
+冰隙 < crevasse;
+霸權 < hegemony;
+危急 < critical;
+隙縫 < aperture;
+對稱性 < symmetry;
+親身 < personal;
+確定 < definite;
+檢測器 < detector;
+終身 < lifelong;
+魔術師 < magician;
+記者 < reporter;
+規避 < to\-evade;
+牧師 < chaplain;
+收益 < earnings;
+平行 < parallel;
+忠實 < faithful;
+步發 < footwork;
+分裂 < split\-up;
+新書 < new\-book;
+不朽的 < immortal;
+口交 < oral\-sex;
+創立 < to\-found;
+煤箱 < coal\-box;
+油炸圈餅 < doughnut;
+缺乏 < shortage;
+日後 < sometime;
+歷史性 < historic;
+因﹍之故 < inasmuch;
+災難 < disaster;
+徹底 < thorough;
+檸檬水 < lemonade;
+鱉裙 < calipash;
+警句 < aphorism;
+早已 < long\-ago;
+破曉 < daybreak;
+雨滴 < raindrop;
+以太網 < ethernet;
+明天 < tomorrow;
+妖孽 < evildoer;
+電氣 < electric;
+酬報 < to\-repay;
+負重擔 < burdened;
+遺產 < heritage;
+硬度 < hardness;
+無聊 < nonsense;
+橫過 < traverse;
+雍容大度 < generous;
+征戰 < campaign;
+課本 < textbook;
+凋謝 < languish;
+十二月 < december;
+計算 < to\-count;
+開除 < to\-expel;
+纖巧 < delicate;
+擦網球 < net\-ball;
+無縫 < seamless;
+冠軍 < champion;
+准許 < to\-allow;
+電梯 < elevator;
+蓋層 < cap\-rock;
+面對 < confront;
+無線 < wireless;
+聖保羅 < st\.\-paul;
+通紅 < very\-red;
+包抄 < outflank;
+辨認 < identify;
+原來 < original;
+好好兒地 < properly;
+多數 < majority;
+物品 < articles;
+政治 < politics;
+半夜 < midnight;
+新年 < new\-year;
+旅客 < traveler;
+逼真 < lifelike;
+騎士氣概 < chivalry;
+西裡爾 < cyrillic;
+公釐 < decigram;
+殺戮 < massacre;
+艾德蕾德 < adelaide;
+力氣 < strength;
+內部 < interior;
+繡帷 < tapestry;
+太忙 < too\-busy;
+睡眠 < sleeping;
+十四 < fourteen;
+常坐汽車者 < motorist;
+平等 < equality;
+包層 < cladding;
+汽車展覽會 < car\-show;
+再見 < good\-bye;
+可擦寫 < erasable;
+免費軟件 < freeware;
+危亡 < at\-stake;
+巧計 < maneuver;
+著手 < commence;
+桃花心木 < mahogany;
+盲腸 < appendix;
+牧羊者 < shepherd;
+支柱 < mainstay;
+形容 < describe;
+無疑 < no\-doubt;
+強悍 < valliant;
+粗野 < insolent;
+袋鼠 < kangaroo;
+軟體 < software;
+新型 < new\-type;
+培育 < to\-train;
+煤油 < kerosene;
+加時 < overtime;
+標準規格 < standard;
+光輝 < radiance;
+復元 < recovery;
+十八 < eighteen;
+多少 < how\-much;
+十克 < decagram;
+地雷 < landmine;
+如今 < nowadays;
+邪惡 < sinister;
+無論何時 < whenever;
+觀看 < to\-watch;
+得分 < to\-score;
+筆記本 < notebook;
+軀體 < the\-body;
+硬件 < hardware;
+天堂 < paradise;
+薰衣草 < lavender;
+十九 < nineteen;
+光譜 < spectrum;
+補遺 < addendum;
+遠東 < far\-east;
+幾乎沒有 < scarcely;
+十三 < thirteen;
+不必要 < needless;
+機能 < function;
+蒙古 < mongolia;
+牧師之職 < ministry;
+遠景 < prospect;
+紐約 < new\-york;
+提議 < proposal;
+進步 < progress;
+電報 < telegram;
+請願書 < petition;
+車間 < workshop;
+往來 < dealings;
+引導 < to\-guide;
+龓 < a\-halter;
+裝貨 < shipping;
+力度 < dynamism;
+投資者 < investor;
+過於 < too\-much;
+鼚 < drumming;
+監禁 < imprison;
+冰窖 < icehouse;
+堂皇 < imposing;
+麮 < porridge;
+省略 < omission;
+六十四萬 < 64\-0\-000;
+寄生物 < parasite;
+肯塔基 < kentucky;
+母係 < maternal;
+柬埔寨 < cambodia;
+鵙 < a\-shrike;
+採買 < purchase;
+輕視 < contempt;
+精致 < delicacy;
+鳮 < chickens;
+遲延 < to\-delay;
+鲺 < cat\-fish;
+攜帶 < to\-carry;
+延展 < to\-scale;
+鯺 < blowfish;
+一小時 < one\-hour;
+部位 < position;
+蒙托羅拉 < motorola;
+人行道 < sidewalk;
+鬋 < forelock;
+鬀 < to\-shave;
+髵 < whiskers;
+內置 < internal;
+限期 < deadline;
+安全性 < security;
+髎 < hip\-bone;
+記憶 < memories;
+遷就 < to\-yield;
+強勁 < powerful;
+殺人 < homicide;
+再保証 < reassure;
+駦 < to\-mount;
+馩 < aromatic;
+人工流產 < abortion;
+剛性 < rigidity;
+餫 < dumpling;
+餩 < hiccough;
+餟 < libation;
+餙 < to\-adorn;
+颱 < taiphoon;
+勃勃 < thriving;
+擁擠 < to\-crowd;
+授課 < to\-teach;
+解散 < dissolve;
+韡 < gorgeous;
+韠 < knee\-pad;
+陰性 < feminine;
+靺 < stocking;
+動作 < movement;
+雞尾酒 < cocktail;
+敦促 < to\-press;
+霨 < clouding;
+橄欖球 < football;
+雇員 < employee;
+瀉藥 < laxative;
+換置 < displace;
+平底鍋 < saucepan;
+紀念碑 < monument;
+圖謀 < conspire;
+董事 < director;
+動人 < touching;
+阸 < distress;
+阻擊 < to\-check;
+補花 < applique;
+镥 < lutetium;
+塗抹 < to\-smear;
+裝船 < shipment;
+欺壓 < to\-bully;
+荒涼 < desolate;
+凹板 < intaglio;
+劣勢 < inferior;
+喇叭水仙 < daffodil;
+分數 < fraction;
+壓力 < pressure;
+那個 < that\-one;
+無情 < pitiless;
+擦寫 < to\-erase;
+壓制 < suppress;
+精確 < accurate;
+鍩 < nobelium;
+鍚 < frontlet;
+侵入者 < intruder;
+經常 < everyday;
+錒 < actinium;
+改革者 < reformer;
+步兵 < infantry;
+銍 < a\-sickle;
+平房 < bungalow;
+冰涼 < ice\-cold;
+企業內網路 < intranet;
+幻想 < delusion;
+序幕 < prologue;
+醆 < wine\-cup;
+醃 < marinate;
+酲 < hangover;
+鄈 < slippers;
+避免 < to\-avert;
+場所 < location;
+邅 < hesitant;
+雇主 < employer;
+揭發 < disclose;
+迻 < to\-shift;
+傳訊 < subpoena;
+評估 < evaluate;
+手提箱 < suitcase;
+偽造 < to\-forge;
+火牆 < firewall;
+轊 < axle\-tip;
+輬 < a\-hearse;
+凶手 < murderer;
+不同意 < disagree;
+共和國 < republic;
+無害 < harmless;
+軟膏 < ointment;
+蹾 < to\-squat;
+掌聲 < applause;
+表觀 < apparent;
+蹧 < to\-spoil;
+埋沒 < oblivion;
+平常 < ordinary;
+踦 < the\-shin;
+拔除 < pull\-out;
+增加 < to\-raise;
+跂 < creeping;
+無論何事 < anything;
+摩擦 < friction;
+覺得 < to\-think;
+高貴 < grandeur;
+棒磨機 < rod\-mill;
+充當 < serve\-as;
+為時 < timewise;
+達到 < to\-reach;
+豎 < vertical;
+西方 < the\-west;
+精力充沛 < vigorous;
+譹 < to\-shout;
+通報 < bulletin;
+撥子 < plectrum;
+抗體 < antibody;
+臨近 < close\-to;
+莫大 < greatest;
+哥倫布紀 < columbus;
+切實 < feasible;
+諆 < to\-cheat;
+詋 < to\-curse;
+詊 < pleasing;
+分子 < molecule;
+相應 < relevant;
+左輪手槍 < revolver;
+阻塞 < to\-block;
+襶 < ignorant;
+絕對 < absolute;
+襫 < raincoat;
+分娩 < delivery;
+管道 < pipeline;
+哥倫比亞 < colombia;
+遊伴 < playmate;
+工業 < industry;
+冰排 < ice\-raft;
+進入 < to\-enter;
+小夜曲 < serenade;
+小標題 < subtitle;
+路面 < pavement;
+蝟 < hedgehog;
+蝏 < \(insect\);
+撒母耳記下 < 2\-samuel;
+撒母耳記上 < 1\-samuel;
+有機體 < organism;
+直徑 < diameter;
+無名 < nameless;
+堵塞 < blockage;
+撤回 < withdraw;
+蚳 < ant\-eggs;
+經典 < classics;
+死衚衕 < dead\-end;
+騰騰 < steaming;
+交響曲 < symphony;
+逼人 < pressing;
+無助 < helpless;
+採用 < to\-adopt;
+已故 < the\-late;
+發汗 < to\-sweat;
+國立 < national;
+時間表 < schedule;
+蔉 < earth\-up;
+箴言 < proverbs;
+補爐 < fettling;
+自製 < homemade;
+葖 < follicle;
+頭向前 < headlong;
+阻力 < obstacle;
+探險者 < explorer;
+蠕蠕 < wiggling;
+艩 < tholepin;
+送別 < farewell;
+艌 < to\-caulk;
+無人 < unmanned;
+公斤 < kilogram;
+君主政治 < monarchy;
+受難者 < sufferer;
+抽象 < abstract;
+出口 < to\-speak;
+脰 < the\-neck;
+親善 < goodwill;
+興致 < interest;
+途中 < en\-route;
+肏 < copulate;
+間接 < indirect;
+鐵路 < railroad;
+搬弄 < move\-sth;
+巴拉圭 < paraguay;
+標本 < specimen;
+第一步 < step\-one;
+調味汁 < dressing;
+退位 < abdicate;
+罇 < a\-goblet;
+逃亡 < fugitive;
+戰鬥 < to\-fight;
+統一 < to\-unify;
+刑事 < criminal;
+數據庫 < database;
+縿 < streamer;
+縴 < tow\-line;
+債權人 < creditor;
+衝突 < conflict;
+追上 < overtake;
+綯 < to\-braid;
+綪 < dark\-red;
+航空 < aviation;
+修辭 < rhetoric;
+濾液 < filtrate;
+人口稠密 < populous;
+紞 < a\-fringe;
+對面 < opposite;
+函件 < letteres;
+弟兄們 < brethren;
+小說家 < novelist;
+籣 < bow\-case;
+簬 < \(bamboo\);
+馴鹿 < reindeer;
+驚訝 < confound;
+捕獲 < to\-catch;
+採樣 < sampling;
+純品 < sterling;
+近來 < recently;
+秏 < to\-waste;
+第五十 < fiftieth;
+三明治 < sandwich;
+寺院 < cloister;
+答話 < to\-reply;
+催化劑 < catalyst;
+火山 < volcanic;
+其實 < actually;
+生詞 < new\-word;
+磟 < mediocre;
+梵語 < sanskrit;
+碏 < coloured;
+便道 < shortcut;
+消費者 < consumer;
+寧靜 < tranquil;
+砹 < astatine;
+矋 < to\-stare;
+封鎖 < blockade;
+俯視 < overlook;
+瞓 < to\-sleep;
+睏 < be\-tired;
+引人注目 < striking;
+睅 < big\-eyed;
+濕氣 < moisture;
+盬 < salt\-pit;
+阿奇歷斯 < achilles;
+精密 < accuracy;
+茶匙 < teaspoon;
+兄弟 < brothers;
+癒 < get\-well;
+癃 < weakness;
+瘼 < sickness;
+瘶 < to\-cough;
+瘰 < scrofula;
+興盛 < flourish;
+倘若 < provided;
+關係 < relation;
+發射 < to\-shoot;
+瓩 < kilowatt;
+琫 < ornament;
+採掘 < excavate;
+越過 < to\-cross;
+珷 < \/2\-pr\-st;
+兵器 < weaponry;
+拔節 < jointing;
+演習 < exercise;
+奧德修斯 < odysseus;
+紊亂 < disorder;
+跳舞 < to\-dance;
+犎 < the\-zebu;
+牳 < \(bovine\);
+範疇 < category;
+兵員 < soldiers;
+滲色 < bleeding;
+熤 < \(person\);
+蛋黃 < egg\-yolk;
+焌 < to\-light;
+炤 < illumine;
+背面 < the\-back;
+瀡 < slippery;
+坦桑尼亞 < tanzania;
+輔導 < to\-coach;
+寶貴 < valuable;
+潎 < rippling;
+入口 < entrance;
+湢 < bathroom;
+開創 < initiate;
+侵蝕 < to\-erode;
+扁蟲 < flatworm;
+經陸路 < overland;
+容量 < capacity;
+描圖 < to\-trace;
+四月十七號 < april\-17;
+赤足 < barefoot;
+泐 < to\-write;
+沍 < freezing;
+在戶外 < outdoors;
+氉 < restless;
+毾 < a\-coarse;
+毻 < to\-moult;
+不顧一切 < reckless;
+殽 < mixed\-up;
+製品 < products;
+共享 < to\-share;
+欛 < a\-handle;
+擦棒球 < foul\-tip;
+櫃 < cupboard;
+公主 < princess;
+提名 < nominate;
+四方 < four\-way;
+中世紀 < medieval;
+樚 < a\-pulley;
+粗厲 < abrasive;
+傾聽者 < listener;
+椄 < to\-graft;
+梱 < doorsill;
+接收器 < receiver;
+勢如破竹 < sweeping;
+自治 < autonomy;
+高架 < overhead;
+困惑 < bewilder;
+柤 < hawthorn;
+枻 < long\-oar;
+笑聲 < laughter;
+農家庭院 < farmyard;
+松鼠 < squirrel;
+家庭作業 < homework;
+先令 < shilling;
+渠道 < channels;
+昡 < long\-day;
+校訂 < revision;
+旘 < a\-pennon;
+棒球 < baseball;
+優先 < priority;
+敪 < to\-weigh;
+攞 < to\-split;
+擩 < to\-stain;
+噴泉 < fountain;
+摷 < to\-knock;
+搵 < wipe\-off;
+搲 < to\-seize;
+搋 < to\-thump;
+揰 < poke\-out;
+揜 < cover\-up;
+軍士 < sergeant;
+揌 < to\-shake;
+衣廚 < wardrobe;
+拑 < to\-clamp;
+份量 < quantity;
+扅 < gate\-bar;
+應該 < ought\-to;
+採光 < lighting;
+懕 < satiated;
+憪 < composed;
+葡萄牙 < portugal;
+裁判 < judgment;
+即將來臨 < imminent;
+慫 < to\-alarm;
+慅 < agitated;
+慁 < dishonor;
+人類 < humanity;
+估計 < estimate;
+惔 < cheerful;
+坐下 < sit\-down;
+回家 < homeward;
+使者 < emissary;
+恝 < carefree;
+打破 < to\-break;
+恌 < to\-worry;
+假期 < vacation;
+不正常 < abnormal;
+衣子 < covering;
+音樂光碟 < music\-cd;
+軼事 < anecdote;
+廤 < to\-place;
+抱歉 < be\-sorry;
+極好 < fabulous;
+極大 < enormous;
+界標 < landmark;
+不透氣 < airtight;
+五彩賓紛 < colorful;
+帵 < remnants;
+節慶 < festival;
+暖氣機 < radiator;
+嶭 < elevated;
+阿肯色 < arkansas;
+神學研究所 < seminary;
+鬧區 < downtown;
+岊 < foothill;
+鼓吹者 < advocate;
+侵略 < invasion;
+併紗 < doubling;
+病夫 < sick\-man;
+授予 < to\-award;
+地下室 < basement;
+國內 < domestic;
+宬 < archives;
+嬬 < mistress;
+簡化 < simplify;
+漢密爾頓 < hamilton;
+買通 < to\-bribe;
+冒犯者 < offender;
+姦 < adultery;
+篡奪 < to\-usurp;
+臨床 < clinical;
+保真度 < fidelity;
+栽種 < to\-plant;
+戰略 < strategy;
+園丁 < gardener;
+本體 < noumenon;
+人造 < man\-made;
+語言學家 < linguist;
+居民 < resident;
+腳步 < footstep;
+埼 < headland;
+拼字 < spelling;
+東部 < the\-east;
+不體面 < shameful;
+高地 < highland;
+固件 < firmware;
+龍頭老大 < big\-boss;
+腓利門書 < philemon;
+鑲嵌 < to\-inlay;
+業務 < business;
+倍數 < multiple;
+對照 < contrast;
+囮 < inveigle;
+肩膀 < shoulder;
+身份 < identity;
+嗃 < to\-flute;
+就此 < and\-thus;
+埃塞俄比亞 < ethiopia;
+啇 < to\-stalk;
+筆架 < pen\-rack;
+唥 < a\-bundle;
+生日 < birthday;
+呠 < to\-spurt;
+鐘擺 < pendulum;
+小衝突 < skirmish;
+叒 < obedient;
+厵 < a\-spring;
+抱怨 < complain;
+卼 < unsteady;
+卹 < sympathy;
+學習 < to\-learn;
+折扣 < discount;
+勌 < to\-labor;
+劻 < flurried;
+懸疑 < suspense;
+劙 < a\-divide;
+懷疑 < to\-doubt;
+當天 < that\-day;
+剟 < to\-prick;
+鍵盤 < keyboard;
+凥 < to\-dwell;
+冇 < have\-not;
+排水渠 < drainage;
+巴基斯坦 < pakistan;
+麻醉劑 < narcotic;
+僃 < prepared;
+家用 < home\-use;
+佴 < a\-second;
+被侵害 < stricken;
+致力 < work\-for;
+五角 < pentagon;
+䶲 < the\-edge;
+䵲 < raw\-hemp;
+䵚 < kaoliang;
+䵓 < the\-mole;
+䵉 < abutilon;
+䴻 < dry\-food;
+䴫 < antelope;
+房東 < landlord;
+䴚 < saltpond;
+䳻 < an\-eagle;
+修建 < to\-build;
+䲖 < big\-fish;
+計算機 < computer;
+突發 < outburst;
+䰟 < the\-soul;
+䯪 < big\-head;
+信徒 < believer;
+䯚 < the\-ribs;
+䯉 < to\-choke;
+白木耳 < tremella;
+打掃 < to\-clean;
+技工 < mechanic;
+持久 < duration;
+䭱 < a\-little;
+風車 < windmill;
+獨裁者 < dictator;
+䬉 < hot\-wind;
+䫷 < the\-jowl;
+手提 < portable;
+不靈 < not\-work;
+䫃 < the\-lips;
+䪶 < the\-chin;
+䪩 < to\-chant;
+䪜 < a\-shield;
+䪑 < to\-stick;
+䪅 < a\-quiver;
+䩠 < a\-girdle;
+䩉 < the\-face;
+䩈 < a\-plumpy;
+䨼 < dyestuff;
+生存 < to\-exist;
+賦稅 < taxation;
+䧫 < a\-trench;
+䧁 < to\-leave;
+浴衣 < bathrobe;
+一面 < one\-side;
+䥭 < evidence;
+恐龍 < dinosaur;
+記錄員 < recorder;
+䤿 < to\-carve;
+䤶 < a\-hammer;
+䤳 < a\-mirrow;
+巴巴多斯 < barbados;
+䤫 < a\-chisel;
+䤐 < to\-drink;
+畫像 < portrait;
+當作 < treat\-as;
+禮貌 < courtesy;
+䢐 < to\-go\-to;
+蘇格蘭 < scotland;
+信封 < envelope;
+䠾 < to\-dodge;
+䠬 < insomnia;
+䠞 < wrinkled;
+聲稱 < to\-claim;
+䠁 < to\-go\-up;
+䟸 < the\-calf;
+對手 < opponent;
+信守 < abide\-by;
+䞮 < to\-crawl;
+聖約 < covenant;
+校正 < regulate;
+䝂 < to\-erect;
+䜬 < a\-cavern;
+䜘 < to\-guard;
+䜐 < to\-libel;
+䜃 < to\-blame;
+䛒 < to\-argue;
+重點 < emphasis;
+䛇 < to\-laugh;
+䚷 < to\-treat;
+䚯 < to\-quell;
+聽眾 < audience;
+葡萄園 < vineyard;
+䘫 < old\-rags;
+䘜 < a\-napkin;
+䘉 < silkworm;
+騎師 < horseman;
+秧苗 < seedling;
+䗘 < a\-weevil;
+䗈 < a\-gadfly;
+使興奮 < exciting;
+䗇 < the\-toad;
+䖻 < ephemera;
+䖤 < to\-creep;
+䖛 < of\-tiger;
+第十一 < eleventh;
+恭順 < deferent;
+鍵槽 < key\-slot;
+購物 < shopping;
+單據 < receipts;
+會變 < variable;
+䓕 < polygala;
+䒳 < a\-flower;
+少年 < juvenile;
+騙子 < swindler;
+聯盟 < alliance;
+䑘 < to\-pound;
+䑃 < dim\-moon;
+䐒 < not\-fine;
+方程式 < equation;
+路口 < crossing;
+䏟 < fat\-meat;
+處罰 < penalize;
+䏉 < to\-waver;
+䏈 < to\-unite;
+金魚 < goldfish;
+䎲 < ear\-lobe;
+䎣 < a\-plough;
+彫刻家 < sculptor;
+䌷 < a\-thread;
+䌯 < a\-truban;
+䌫 < a\-hawser;
+含量 < contents;
+䌃 < raw\-silk;
+阿托品 < atropine;
+䋡 < to\-relax;
+䋃 < stinging;
+䊸 < to\-twist;
+䊝 < to\-exile;
+用功 < diligent;
+䊁 < leavings;
+䉻 < red\-rice;
+䉱 < a\-cradle;
+䉒 < a\-winnow;
+䈶 < an\-arrow;
+地區性 < regional;
+䇌 < to\-stand;
+䆸 < spacious;
+筆名 < pen\-name;
+佛教 < buddhism;
+可靠 < reliable;
+三角形 < triangle;
+寓所 < dwelling;
+䃑 < speckles;
+䁥 < to\-blink;
+䁜 < big\-eyes;
+由余 < owing\-to;
+䀈 < a\-vessel;
+㿢 < to\-shine;
+㿡 < a\-helmet;
+㿈 < an\-ulcer;
+㿅 < ringworm;
+㾸 < a\-scabby;
+頁面 < web\-page;
+㾍 < diseases;
+㽹 < to\-faint;
+渴望 < desirous;
+本能 < instinct;
+嗜好 < fondness;
+終端用戶 < end\-user;
+墨水瓶架 < inkstand;
+㺚 < an\-otter;
+誘拐者 < abductor;
+缺陷 < a\-defect;
+㺇 < a\-warden;
+㹸 < the\-lion;
+蛋殼 < eggshell;
+戲劇性 < dramatic;
+懲罰性 < punitive;
+㸝 < a\-shovel;
+八角楓 < alangium;
+㷀 < solitary;
+㶼 < very\-hot;
+㴶 < to\-water;
+滑冰 < to\-skate;
+㴊 < an\-abyss;
+㳫 < repeated;
+㳒 < statutes;
+北海道 < hokkaido;
+㲷 < nitrogen;
+㲳 < to\-touch;
+宗教 < religion;
+低成本 < low\-cost;
+㱿 < the\-husk;
+㱺 < the\-skin;
+㱢 < the\-dead;
+㱗 < a\-breath;
+命脈 < lifeline;
+乃至 < and\-even;
+租稅 < land\-tax;
+不行 < won''t\-do;
+守時 < punctual;
+㮭 < a\-casket;
+暗轉 < blackout;
+打印 < to\-print;
+㬧 < a\-collar;
+明信片 < postcard;
+救贖主 < redeemer;
+㫽 < darkness;
+㪐 < unstable;
+貂皮 < mink\-fur;
+㩨 < to\-crack;
+㩓 < to\-wound;
+醫院 < hospital;
+㨓 < to\-close;
+㨁 < to\-throw;
+㧵 < to\-exact;
+㧱 < to\-bring;
+泳衣 < swimsuit;
+㦿 < a\-window;
+淚水 < teardrop;
+生命力 < vitality;
+㥰 < mournful;
+㥁 < morality;
+㤮 < an\-error;
+㤏 < grievous;
+肉桂 < cinnamon;
+㣫 < the\-heel;
+減掉 < subtract;
+㣞 < to\-walki;
+鼻炎 < rhinitis;
+㠹 < a\-turban;
+產量多 < fruitful;
+看守者 < watchman;
+㠊 < a\-rugged;
+法利賽人 < pharisee;
+㞷 < luxuiant;
+向西 < westward;
+叛逆 < to\-rebel;
+㞑 < the\-tail;
+㞉 < big\-foot;
+㝭 < to\-awake;
+㝘 < harmonoy;
+㜶 < a\-couple;
+戰區 < war\-zone;
+叱責 < reproach;
+佔領者 < occupant;
+科羅拉多 < colorado;
+貞潔 < chastity;
+㙢 < a\-trowel;
+㙃 < a\-cavity;
+栗子 < chestnut;
+㘙 < to\-groan;
+㘀 < to\-sound;
+中繼 < to\-relay;
+㗪 < mouthful;
+㗜 < to\-smell;
+㗉 < incisive;
+㖩 < not\-pure;
+㕼 < to\-brawl;
+鎮區 < township;
+㕛 < a\-friend;
+㕐 < inclined;
+㕊 < to\-slant;
+板油 < leaf\-fat;
+匪徒集團 < gangster;
+㓓 < thin\-ice;
+㒹 < to\-upset;
+懸垂 < overhang;
+射頻噪音 < rf\-noise;
+酒鬼 < drunkard;
+不肖 < unworthy;
+班機 < airliner;
+㐜 < an\-enemy;
+使吃驚 < astonish;
+窗子 < casement;
+應對 < response;
+交流 < exchange;
+叛變 < renegade;
+戰事 < fighting;
+幸存者 < survivor;
+人道主義 < humanism;
+一心一意 < intently;
+櫻花草 < primrose;
+核准 < sanction;
+星期四 < thursday;
+決定性 < decisive;
+日耳曼 < germanic;
+譴責 < denounce;
+案件 < law\-case;
+幾何學 < geometry;
+姻親 < affinity;
+村民 < villager;
+慷慨 < vehement;
+論點 < argument;
+傾向於 < prone\-to;
+黃瓜 < cucumber;
+暗自 < inwardly;
+懊喪 < dejected;
+稀有 < uncommon;
+飛機 < airplane;
+室友 < roommate;
+貶抑 < belittle;
+背包 < knapsack;
+精神錯亂 < insanity;
+黨派 < partisan;
+子層 < sublayer;
+飲料 < beverage;
+三月二十一號 < march\-21;
+人手 < manpower;
+星期六 < saturday;
+防守者 < defender;
+二月 < february;
+沒落 < downfall;
+含碳 < carbonic;
+嘉年華會 < carnival;
+最為 < the\-most;
+博茨瓦納 < botswana;
+不用 < need\-not;
+風水 < fengshui;
+水路 < waterway;
+子女 < children;
+事故 < accident;
+刺激物 < stimulus;
+壟斷販賣 < monopoly;
+不獨 < not\-only;
+奧克拉荷馬 < oklahoma;
+孵化 < breeding;
+鞭蟲 < whipworm;
+不爽 < not\-well;
+保加利亞 < bulgaria;
+懂事 < sensible;
+食慾 < appetite;
+震驚 < to\-shock;
+吸煙 < to\-smoke;
+謝謝 < to\-thank;
+不濟 < not\-good;
+頭痛 < headache;
+暗盒 < magazine;
+中止 < to\-cease;
+講話 < a\-speech;
+林地 < woodland;
+架勢 < attitude;
+貴族身份 < lordship;
+不信用 < distrust;
+太長 < oversize;
+勢頭 < momentum;
+愚弄 < derision;
+往還 < contacts;
+礦產 < minerals;
+提供諸 < provider;
+爐邊 < fireside;
+肌肉發達 < muscular;
+工程師 < engineer;
+變種 < mutation;
+中繼器 < repeater;
+論述 < treatise;
+洋琵琶 < mandolin;
+聖化 < sanctify;
+惡作劇 < mischief;
+重申 < reaffirm;
+暴洪 < a\-sudden;
+子午線 < meridian;
+製作者 < producer;
+不在乎 < not\-mind;
+餡兒 < stuffing;
+音樂家 < musician;
+使麻痺 < paralyze;
+千字節 < kilobyte;
+變阻器 < theostat;
+流感疫苗 < flu\-shot;
+海外 < overseas;
+王家 < princely;
+哨兵 < sentinel;
+想家 < homesick;
+買主 < customer;
+預測 < forecast;
+美日 < us\-japan;
+負債 < indebted;
+雨量 < rainfall;
+司法 < judicial;
+女房東 < landlady;
+工作過度 < overwork;
+加長 < lengthen;
+吐棄 < to\-spurn;
+處分 < disposal;
+日美 < japan\-us;
+增高 < heighten;
+遲頓 < inactive;
+財主 < rich\-man;
+夢話 < daydream;
+提供者 < supplier;
+不懈 < untiring;
+最少 < smallest;
+堅固性 < firmness;
+護照 < passport;
+主宰 < dominate;
+夢見 < to\-dream;
+不怕 < fearless;
+沖洗 < to\-rinse;
+不很 < not\-very;
+白化病 < albinism;
+剷除 < root\-out;
+神性 < divinity;
+總裁 < chairman;
+沉浸 < permeate;
+第六十 < sixtieth;
+美德 < a\-virtue;
+雄辯 < eloquent;
+點名 < rollcall;
+豪俠 < cavalier;
+文明化 < civilize;
+外號 < nickname;
+海上 < maritime;
+熱誠 < devotion;
+合成 < compound;
+外交官 < diplomat;
+同意 < to\-agree;
+向後 < backward;
+服務 < to\-serve;
+民眾 < populace;
+威望 < prestige;
+活動 < activity;
+叛教 < apostacy;
+白雲石 < dolomite;
+大能 < almighty;
+時機 < occasion;
+反映 < reaction;
+文職 < civilian;
+婚嫁 < marriage;
+君子 < nobleman;
+特派 < dispatch;
+使習慣 < accustom;
+一團 < regiment;
+播音 < transmit;
+台座 < pedestal;
+過載 < overload;
+祖國 < homeland;
+泰國 < thailand;
+解開 < to\-untie;
+愛因斯坦 < einstein;
+暗室 < darkroom;
+奶牛 < milk\-cow;
+冰晶石 < cryolite;
+年青 < youthful;
+一周 < one\-week;
+一向 < all\-long;
+曝光 < exposure;
+不小心 < heedless;
+納稅人 < taxpayer;
+無論何處 < anywhere;
+再出現 < reappear;
+一匙 < spoonful;
+研究 < research;
+怠惰 < idleness;
+包皮 < wrapping;
+靠背椅 < armchair;
+奉現 < offering;
+不倦 < tireless;
+操作者 < operator;
+訂購 < to\-order;
+絲狀物 < filament;
+斑白 < grizzled;
+暴力 < violence;
+警惕 < vigilant;
+波動 < undulate;
+奇特 < peculiar;
+忠於 < loyal\-to;
+發明家 < inventor;
+選舉 < to\-elect;
+大西洋 < atlantic;
+韌帶 < ligament;
+迷 < bewitch;
+述 < narrate;
+迥 < distant;
+中 < central;
+志 < purpose;
+迎 < receive;
+忌 < jealous;
+和 < harmony;
+辯 < dispute;
+去 < go\-away;
+对 < correct;
+瞠 < look\-at;
+律 < statute;
+役 < service;
+張 < stretch;
+已 < already;
+弘 < enlarge;
+引 < to\-pull;
+弔 < condole;
+較 < compare;
+意 < thought;
+进 < advance;
+盡 < exhaust;
+廉 < upright;
+情 < feeling;
+皰 < pimples;
+庖 < kitchen;
+躓 < stumble;
+庄 < village;
+并 < combine;
+蹠 < step\-on;
+癖 < craving;
+幕 < curtain;
+代 < replace;
+師 < teacher;
+总 < collect;
+痴 < foolish;
+华 < flowery;
+症 < disease;
+病 < illness;
+反 < reverse;
+疎 < neglect;
+务 < affairs;
+崩 < rupture;
+特 < special;
+服 < clothes;
+賽 < compete;
+賑 < relieve;
+科 < section;
+豫 < relaxed;
+联 < connect;
+保 < protect;
+革 < leather;
+尊 < respect;
+品 < article;
+尉 < officer;
+士 < scholar;
+量 < measure;
+程 < journey;
+審 < examine;
+极 < extreme;
+令 < command;
+未 < not\-yet;
+持 < sustain;
+历 < history;
+宣 < declare;
+宗 < lineage;
+议 < consult;
+率 < to\-lead;
+委 < appoint;
+兵 < soldier;
+孔 < opening;
+謹 < prudent;
+講 < explain;
+格 < pattern;
+諸 < several;
+諦 < careful;
+怕 < to\-fear;
+狡 < cunning;
+准 < approve;
+精 < essence;
+竟 < finally;
+誠 < sincere;
+整 < orderly;
+婉 < amiable;
+备 < prepare;
+另 < another;
+陈 < exhibit;
+故 < ancient;
+訛 < swindle;
+託 < entrust;
+訊 < inquire;
+爆 < crackle;
+批 < comment;
+送 < see\-off;
+奇 < strange;
+燕 < swallow;
+燈 < lantern;
+游 < to\-swim;
+份 < portion;
+敢 < to\-dare;
+煽 < stir\-up;
+朝 < dynasty;
+育 < produce;
+图 < diagram;
+刘 < surname;
+夕 < evening;
+承 < inherit;
+乡 < country;
+裁 < cut\-out;
+演 < perform;
+袂 < sleeves;
+衰 < decline;
+塞 < stop\-up;
+景 < scenery;
+蠢 < wriggle;
+依 < rely\-on;
+瀝 < trickle;
+胜 < victory;
+濡 < immerse;
+濟 < to\-help;
+蟋 < cricket;
+漆 < varnish;
+漁 < to\-fish;
+散 < scatter;
+蛆 < maggots;
+曲 < crooked;
+溶 < to\-melt;
+厂 < factory;
+肯 < willing;
+抓 < scratch;
+虫 < insects;
+湧 < well\-up;
+靠 < lean\-on;
+授 < give\-to;
+渇 < thirsty;
+淺 < shallow;
+淫 < obscene;
+鷄 < chicken;
+嗇 < miserly;
+抱 < embrace;
+睛 < eyeball;
+括 < include;
+降 < descend;
+私 < private;
+蔑 < disdain;
+泡 < bubbles;
+闹 < quarrel;
+醒 < wake\-up;
+沌 < chaotic;
+暴 < violent;
+抢 < plunder;
+篇 < chapter;
+鱈 < codfish;
+诸 < various;
+叭 < trumpet;
+叙 < express;
+厭 < dislike;
+雅 < elegant;
+雷 < thunder;
+竞 < contend;
+操 < conduct;
+诺 < promise;
+匆 < hastily;
+欅 < zelkova;
+苺 < berries;
+苗 < sprouts;
+碰 < collide;
+苑 < pasture;
+仿 < imitate;
+機 < machine;
+栏 < railing;
+刈 < cut\-off;
+狠 < vicious;
+映 < project;
+忠 < loyalty;
+扎 < pull\-up;
+腹 < stomach;
+舒 < open\-up;
+凶 < culprit;
+慰 < comfort;
+餘 < surplus;
+撒 < release;
+愁 < anxiety;
+斤 < a\-catty;
+僑 < sojourn;
+扶 < support;
+毁 < destroy;
+械 < weapons;
+违 < disobey;
+丢 < discard;
+肆 < indulge;
+绕 < entwine;
+聳 < urge\-on;
+舰 < warship;
+恼 < angered;
+辣 < peppery;
+旋 < revolve;
+倉 < granary;
+罚 < penalty;
+拾 < pick\-up;
+恢 < restore;
+翁 < old\-man;
+羽 < feather;
+抖 < tremble;
+侯 < marquis;
+惑 < confuse;
+雕 < engrave;
+寿 < old\-age;
+锦 < brocade;
+杏 < apricot;
+慌 < nervous;
+屠 < butcher;
+柏 < cypress;
+霍 < quickly;
+陶 < pottery;
+摄 < take\-in;
+闯 < rush\-in;
+扰 < disturb;
+雀 < sparrow;
+阁 < chamber;
+卢 < cottage;
+柜 < cabinet;
+暇 < leisure;
+愧 < ashamed;
+晶 < crystal;
+晝 < daytime;
+筋 < muscles;
+撑 < prop\-up;
+填 < fill\-in;
+旺 < prosper;
+耗 < consume;
+悦 < pleased;
+斑 < mottled;
+践 < trample;
+惶 < fearful;
+簾 < a\-blind;
+贩 < peddler;
+戈 < halberd;
+鐐 < fetters;
+虹 < rainbow;
+寡 < widowed;
+郊 < suburbs;
+徽 < a\-badge;
+鲍 < abalone;
+笄 < hairpin;
+沾 < moisten;
+瞒 < deceive;
+竃 < furnace;
+裔 < progeny;
+匪 < bandits;
+榜 < placard;
+枉 < useless;
+骇 < terrify;
+撰 < compose;
+垃 < garbage;
+驼 < a\-camel;
+豹 < leopard;
+缴 < deliver;
+哨 < whistle;
+嚼 < prattle;
+昧 < obscure;
+旱 < drought;
+聂 < whisper;
+莽 < thicket;
+厮 < servant;
+茨 < caltrop;
+粘 < viscous;
+朽 < decayed;
+焕 < shining;
+熄 < put\-out;
+逾 < go\-over;
+醋 < vinegar;
+斌 < refined;
+恕 < forgive;
+沦 < be\-lost;
+岱 < daishan;
+讳 < conceal;
+岔 < diverge;
+垒 < rampart;
+翘 < turn\-up;
+觑 < peep\-at;
+拎 < to\-haul;
+噜 < verbose;
+凹 < concave;
+撩 < lift\-up;
+崽 < a\-child;
+涅 < blacken;
+簌 < falling;
+诛 < execute;
+掳 < capture;
+馅 < filling;
+硅 < silicon;
+抨 < impeach;
+肾 < kidneys;
+锭 < spindle;
+茬 < harvest;
+谤 < slander;
+钳 < pincers;
+睽 < staring;
+阱 < pitfall;
+汀 < sandbar;
+秤 < balance;
+晾 < air\-dry;
+跚 < stagger;
+莞 < smiling;
+鸥 < seagull;
+葆 < reserve;
+氢 < ammonia;
+帧 < picture;
+佯 < pretend;
+烬 < cinders;
+蚌 < oysters;
+谆 < patient;
+癞 < leprosy;
+啄 < to\-peck;
+燎 < to\-burn;
+迳 < pass\-by;
+恸 < sadness;
+咂 < to\-suck;
+盹 < to\-doze;
+俾 < so\-that;
+谚 < proverb;
+掸 < to\-dust;
+匮 < to\-lack;
+幡 < pennant;
+囱 < chimney;
+崂 < laoshan;
+蝌 < tadpole;
+铀 < uranium;
+挛 < tangled;
+绯 < scarlet;
+鸨 < bustard;
+蜗 < a\-snail;
+恫 < in\-pain;
+谀 < flatter;
+踮 < tip\-toe;
+馊 < spoiled;
+钙 < calcium;
+捱 < put\-off;
+蒿 < mugwort;
+酶 < enzymes;
+衢 < highway;
+磺 < sulphur;
+蹩 < to\-limp;
+浣 < to\-wash;
+疹 < measles;
+靥 < dimples;
+愆 < a\-fault;
+鸵 < ostrich;
+窕 < slender;
+迩 < be\-near;
+佰 < hundred;
+钹 < cymbals;
+靼 < tartars;
+煲 < to\-heat;
+獐 < roebuck;
+佝 < rickets;
+蓟 < circium;
+黜 < dismiss;
+摈 < exclude;
+飓 < cyclone;
+胱 < bladder;
+饽 < ferrule;
+馏 < distill;
+苯 < benzene;
+淼 < a\-flood;
+铱 < iridium;
+葩 < flowers;
+逡 < retreat;
+逶 < winding;
+萸 < dogwood;
+挝 < to\-beat;
+熵 < entropy;
+煨 < to\-stew;
+砒 < arsenic;
+晁 < morning;
+凇 < dewdrop;
+噘 < pouting;
+唣 < chatter;
+骠 < charger;
+怄 < annoyed;
+锂 < lithium;
+疥 < scabies;
+稗 < darnels;
+洮 < cleanse;
+酮 < ketones;
+腚 < buttock;
+腱 < tendons;
+馔 < to\-feed;
+搠 < to\-daub;
+酡 < flushed;
+呒 < unclear;
+痧 < cholera;
+笤 < a\-broom;
+韫 < secrete;
+怛 < grieved;
+皴 < chapped;
+睢 < gaze\-at;
+塬 < plateau;
+螯 < nippers;
+獒 < mastiff;
+沆 < a\-ferry;
+帔 < a\-skirt;
+薅 < to\-weed;
+莴 < lettuce;
+捭 < to\-open;
+葭 < bulrush;
+倥 < boorish;
+溴 < bromine;
+廛 < a\-store;
+揸 < handful;
+仵 < similar;
+髋 < hipbone;
+肱 < forearm;
+蚍 < mussels;
+镓 < gallium;
+铋 < bismuth;
+胝 < callous;
+赍 < present;
+翥 < to\-soar;
+蜞 < grapsus;
+谠 < counsel;
+矬 < a\-dwarf;
+溲 < urinate;
+蕻 < budding;
+鹈 < pelican;
+镉 < cadmium;
+謇 < stutter;
+憷 < painful;
+谡 < rise\-up;
+褊 < cramped;
+钍 < thorium;
+氪 < krypton;
+迮 < to\-rise;
+蓍 < milfoil;
+螽 < katydid;
+剀 < sharpen;
+蹀 < to\-skip;
+锎 < caesium;
+钇 < yttrium;
+氚 < tritium;
+犸 < mammoth;
+菸 < to\-fade;
+鲱 < herring;
+躞 < to\-walk;
+铌 < niobium;
+畀 < to\-give;
+遘 < to\-meet;
+泷 < raining;
+蒡 < burdock;
+髌 < kneecap;
+鳙 < bighead;
+絷 < confine;
+箦 < bed\-mat;
+瘘 < fistula;
+镄 < fermium;
+祆 < ormazda;
+嫠 < a\-widow;
+搴 < extract;
+僦 < to\-heir;
+牽扯 < involve;
+看得見 < visible;
+婚事 < wedding;
+檢閱 < inspect;
+訴苦 < grumble;
+有資格 < entitle;
+暫停 < suspend;
+歡迎光臨 < welcome;
+觸角 < antenna;
+圓石頭 < boulder;
+罷休 < give\-up;
+奧地利 < austria;
+認真 < earnest;
+時尚 < fashion;
+版本 < version;
+庇護 < shelter;
+酸性 < acidity;
+編纂 < compile;
+君主 < monarch;
+總理 < premier;
+天然 < natural;
+睡衣 < pajamas;
+整理 < arrange;
+煙草 < tobacco;
+燦爛 < glitter;
+可動 < movable;
+水手 < mariner;
+傳道部 < mission;
+口吃 < stammer;
+創世紀 < genesis;
+菏蘭 < holland;
+菠菜 < spinach;
+十月 < october;
+千位元 < kilobit;
+揚聲器 < speaker;
+毛毯 < blanket;
+管理員 < manager;
+陽臺 < balcony;
+狂喜 < ecstasy;
+永恆 < eternal;
+請求 < request;
+海軍總司令 < admiral;
+出走 < to\-flee;
+老資格 < veteran;
+效益 < benefit;
+重力 < gravity;
+金銀塊 < bullion;
+碼字 < numeral;
+弄碎 < crumble;
+沙丁魚 < sardine;
+姐妹 < sisters;
+目錄 < catalog;
+心愛 < beloved;
+弄短 < shorten;
+無處 < nowhere;
+變厚 < thicken;
+妖怪 < monster;
+緊緊 < closely;
+隱私 < privacy;
+關鍵 < crucial;
+姿勢 < posture;
+安提瓜島 < antigua;
+喪心病狂 < lunatic;
+強烈 < intense;
+好戰 < warlike;
+弄皺 < crumple;
+相連 < to\-link;
+文法 < grammar;
+古來 < oldtime;
+天氣 < weather;
+酒廠 < brewery;
+征服 < conquer;
+索道 < ropeway;
+陸續 < in\-turn;
+隱瞞 < to\-hide;
+外流 < outflow;
+工頭 < foreman;
+遠端 < far\-end;
+出納員 < cashier;
+加甜 < sweeten;
+音信 < message;
+障礙 < barrier;
+警告 < to\-warn;
+然而 < however;
+大概 < roughly;
+愛遊玩 < playful;
+格子棉布 < gingham;
+鋼琴家 < pianist;
+電池 < battery;
+比方 < analogy;
+計數者 < counter;
+退落 < subside;
+變亂 < turmoil;
+熱潮 < upsurge;
+解剖學 < anatomy;
+欺瞞 < to\-fool;
+有學問 < learned;
+議價 < bargain;
+纖弱 < fragile;
+見證 < witness;
+加熱 < heating;
+半吊子 < dabbler;
+非常 < unusual;
+勇氣 < courage;
+失效 < to\-fail;
+先驅 < pioneer;
+犯人 < convict;
+難民 < refugee;
+遺物 < remnant;
+毒打 < beat\-up;
+醜事 < scandal;
+降級 < degrade;
+焦糖 < caramel;
+摘要 < summary;
+進程 < process;
+摔角 < wrestle;
+包扎 < wrap\-up;
+廢物 < rubbish;
+天花板 < ceiling;
+殘株 < stubble;
+好奇 < curious;
+登陸 < to\-land;
+監視 < oversee;
+形成 < to\-form;
+總數 < a\-total;
+德國 < germany;
+統統 < totally;
+大盤子 < platter;
+無窮 < endless;
+矮林 < coppice;
+境界 < boundry;
+不能不 < have\-to;
+弄歪 < distort;
+冰袋 < ice\-bag;
+出入口 < gateway;
+消防隊員 < fireman;
+起皺紋 < shrivel;
+閱讀 < to\-read;
+郵差 < postman;
+面嚮 < to\-face;
+觸發 < trigger;
+瀝青 < asphalt;
+即便 < even\-if;
+大廈 < edifice;
+發酵 < ferment;
+幸福 < blessed;
+無益 < no\-good;
+防禦 < defense;
+歷時 < to\-last;
+托兒所 < nursery;
+艷紅色 < crimson;
+特許狀 < charter;
+拖曳機 < tractor;
+版刻 < carving;
+配偶 < consort;
+預言家 < prophet;
+救援 < to\-save;
+日出 < sunrise;
+氣候 < climate;
+繃帶 < bandage;
+逗留 < stay\-at;
+利用 < exploit;
+區區 < trivial;
+背叛者 < traitor;
+微光 < glimmer;
+每夜 < nightly;
+違法 < illegal;
+出租 < to\-rent;
+雀斑 < freckle;
+大使館 < embassy;
+大草原 < prairie;
+物理學 < physics;
+收據 < receipt;
+十六 < sixteen;
+繪圖 < to\-draw;
+知悉 < to\-know;
+熱情 < cordial;
+十倍 < tenfold;
+剛毛 < bristle;
+橫臥 < recline;
+刺激 < provoke;
+經濟 < economy;
+細節 < details;
+扳不倒兒 < tumbler;
+樂趣 < delight;
+爬蟲動物 < reptile;
+索馬裡 < somalia;
+十五 < fifteen;
+多大 < how\-big;
+共處 < coexist;
+攪拌 < to\-stir;
+輕輕 < lightly;
+廣播網 < network;
+巴格達 < baghdad;
+利潤 < profits;
+外科醫生 < surgeon;
+裝載 < to\-load;
+包含 < contain;
+擯棄 < abandon;
+在﹍之間 < between;
+發行 < publish;
+白蟻 < termite;
+選手 < athlete;
+失去 < to\-lose;
+輪詢 < to\-poll;
+花費 < expense;
+葉子 < foliage;
+草稿 < outline;
+武庫 < arsenal;
+銀行業 < banking;
+弄平 < flatten;
+制止 < to\-curb;
+照搬 < to\-copy;
+龡 < to\-blow;
+補貼 < subsidy;
+齰 < to\-bite;
+齩 < to\-chew;
+正常 < regular;
+鼷 < a\-mouse;
+文化 < culture;
+崩陷 < fall\-in;
+鸑 < a\-large;
+巴結 < fawn\-on;
+鷟 < phoenix;
+鶺 < wagtail;
+鶹 < the\-owl;
+手推車 < trolley;
+皺紋 < wrinkle;
+權杖 < scepter;
+百萬 < million;
+多半 < chiefly;
+週末 < weekend;
+鴫 < a\-snipe;
+初步 < initial;
+勞動者 < laborer;
+煩惱 < agonize;
+鲚 < anchovy;
+煩悶 < anguish;
+幫派 < faction;
+美洲豹 < panther;
+表面 < surface;
+糟糕 < too\-bad;
+總則 < profile;
+險峻 < arduous;
+制服 < uniform;
+像銀 < silvery;
+魜 < mermaid;
+前提 < premise;
+維持 < to\-keep;
+接觸 < contact;
+花崗石 < granite;
+夥伴 < partner;
+骫 < be\-bent;
+骉 < running;
+擁有 < to\-have;
+在其中 < therein;
+驙 < \(horse\);
+驒 < dappled;
+此外 < besides;
+強制 < enforce;
+車輛 < vehicle;
+芬蘭 < finland;
+數位 < digital;
+十億位元 < gigabit;
+颫 < a\-storm;
+執照 < license;
+無效 < in\-vain;
+韣 < bow\-bag;
+韅 < harness;
+紙煙 < cigaret;
+眺望 < lookout;
+關照 < concern;
+雚 < a\-heron;
+冰片 < borneol;
+劇場 < theater;
+熱切 < fervent;
+陾 < in\-file;
+五月十五號 < may\-1\-5;
+陞 < promote;
+阻攔 < to\-stop;
+阧 < sloping;
+弟兄 < brother;
+眉毛 < eyebrow;
+被褥 < bedding;
+擺子 < malaria;
+擔心 < anxious;
+身體障害 < cripple;
+公社 < commune;
+铽 < terbium;
+铼 < rhenium;
+铪 < hafnium;
+铥 < thulium;
+铑 < rhodium;
+钬 < holmium;
+結果 < outcome;
+歲入 < revenue;
+墊子 < cushion;
+監測 < monitor;
+梵帝岡 < vatican;
+同義字 < synonym;
+錶 < a\-watch;
+鬢角 < temples;
+錀 < \(metal\);
+揭示 < to\-show;
+鋊 < a\-poker;
+鋂 < bit\-cup;
+痕跡 < vestige;
+剝奪 < deprive;
+農民 < peasant;
+愛國者 < patriot;
+廠商 < company;
+女主人 < hostess;
+白榴石 < leucite;
+你自己 < thyself;
+冒煙 < smoking;
+簡要 < concise;
+紅海 < red\-sea;
+冰河 < glacial;
+純正 < genuine;
+刨工 < planing;
+派給工作 < to\-task;
+幻影 < phantom;
+自由派 < liberal;
+拔頂 < topping;
+疾走 < scamper;
+轒 < chariot;
+已滅 < extinct;
+籠罩 < envelop;
+軲 < a\-wheel;
+軘 < war\-car;
+螢火蟲 < firefly;
+躦 < to\-jump;
+躝 < to\-pass;
+百分之 < percent;
+鬆緊帶 < elastic;
+薔薇花蕾 < rosebud;
+附寄 < enclose;
+無論何人 < whoever;
+跬 < to\-step;
+寄宿生 < boarder;
+跕 < shuffle;
+趷 < to\-jolt;
+絨布 < flannel;
+儘管 < despite;
+阻尼 < damping;
+甜點 < dessert;
+發現 < to\-find;
+贇 < affable;
+贃 < to\-earn;
+閃爍 < flicker;
+衣裝 < garment;
+賝 < preious;
+備註 < remarks;
+闡明 < clarify;
+受歡迎 < popular;
+豗 < clamour;
+到場 < show\-up;
+盛會 < pageant;
+讌 < a\-feast;
+謳 < to\-sing;
+謆 < beguile;
+飛機場 < airport;
+詾 < noisily;
+偽證 < perjury;
+詫 < to\-brag;
+詅 < to\-sell;
+照亮 < lighten;
+陳列 < display;
+阿爾及利亞 < algeria;
+觡 < antlers;
+陽傘 < parasol;
+山頂 < hilltop;
+掌管 < control;
+襜 < flutter;
+襃 < commend;
+褔 < complex;
+袺 < hold\-up;
+擠入 < intrude;
+衵 < chemise;
+權利 < a\-power;
+花環 < garland;
+公民 < citizen;
+巴林 < bahrain;
+偽裝 < to\-fake;
+堅強 < staunch;
+斯瓦希裡 < swahili;
+航空郵件 < airmail;
+亞特蘭大 < atlanta;
+進退兩難 < dilemma;
+平均 < average;
+實際上 < in\-fact;
+刺刀 < bayonet;
+簸箕 < dustpan;
+充滿 < full\-of;
+帳帘 < drapery;
+薽 < \(grass\);
+薶 < to\-bury;
+反應堆 < reactor;
+薓 < ginseng;
+激素 < hormone;
+解剖 < dissect;
+莊嚴 < stately;
+平台 < terrace;
+菪 < henbane;
+菧 < stibene;
+拍賣 < auction;
+滋養 < nourish;
+解僱 < to\-fire;
+莀 < to\-farm;
+到來 < arrival;
+床側 < bedside;
+標槍 < javelin;
+疫苗 < vaccine;
+超齡 < too\-old;
+因素 < element;
+冰川 < glacier;
+闊度 < breadth;
+舓 < to\-lick;
+臝 < be\-bare;
+轟擊 < bombard;
+腖 < peptone;
+冰島 < iceland;
+異教徒 < heathen;
+圖畫 < drawing;
+脝 < distend;
+分析人士 < analyst;
+冰山 < iceberg;
+外邦人 < gentile;
+移民者 < migrant;
+不吉利 < ominous;
+罖 < kwukyel;
+最低限度 < minimum;
+缲 < to\-reel;
+療法 < therapy;
+創造者 < creator;
+尖頂 < steeple;
+腹部 < abdomen;
+發放 < provide;
+瘋狂 < madness;
+緁 < to\-join;
+插曲 < episode;
+絪 < matting;
+克什米爾 < kashmir;
+女英雄 < heroine;
+活動房屋 < trailer;
+什一奉獻 < tithing;
+內羅畢 < nairobi;
+抗議 < protest;
+帶動 < to\-spur;
+公式 < formula;
+笓 < to\-comb;
+墨西哥人 < mexican;
+災害 < scourge;
+花束 < bouquet;
+已婚 < married;
+痒痒 < to\-itch;
+使高貴 < dignify;
+例題 < example;
+稇 < to\-bind;
+優於 < surpass;
+終于 < at\-last;
+加榮耀於 < glorify;
+禂 < to\-pray;
+信賴 < confide;
+芥末 < mustard;
+地質學 < geology;
+冷卻 < cooling;
+桌面 < desktop;
+履行 < fulfill;
+皇帝 < emperor;
+碃 < \(stone\);
+篇章 < writing;
+矟 < ''\-lance;
+瞯 < to\-peep;
+不干不淨 < unclean;
+寬闊 < expanse;
+關鍵詞 < keyword;
+內容 < content;
+眽 < to\-gaze;
+眴 < dazzled;
+三位一體 < trinity;
+傲然 < loftily;
+巴松管 < bassoon;
+因為 < because;
+樵夫 < woodman;
+布隆迪 < burundi;
+畐 < to\-fill;
+自私 < selfish;
+典型 < typical;
+茶具 < tea\-set;
+甔 < big\-jar;
+糊塗 < muddled;
+瓛 < scaptre;
+璺 < a\-crack;
+璊 < reddish;
+蒙大拿 < montana;
+獹 < a\-hound;
+炭疽病 < anthrax;
+獚 < spaniel;
+公益事業 < utility;
+節目 < program;
+鑽石 < diamond;
+園林 < gardens;
+狉 < fox\-cub;
+軌枕 < sleeper;
+英國 < england;
+首飾 < jewelry;
+日常工作 < routine;
+工匠 < artisan;
+熯 < by\-fire;
+俘虜 < captive;
+煻 < to\-warm;
+臂章 < armband;
+自由 < freedom;
+史密特 < schmitt;
+灴 < to\-bake;
+布丁 < pudding;
+瀹 < to\-boil;
+圍攻 < besiege;
+喝采 < acclaim;
+澐 < billows;
+生育 < to\-bear;
+赤道 < equator;
+潬 < a\-rapid;
+富士通 < fujitsu;
+男性親屬 < kinsman;
+溦 < drizzle;
+門口 < doorway;
+烹調術 < cookery;
+貨物運輸 < freight;
+損傷 < to\-harm;
+渼 < ripples;
+渧 < to\-drop;
+身材 < stature;
+英勇 < bravery;
+印刷者 < printer;
+混合物 < mixture;
+阿克倫 < acheron;
+涶 < to\-spit;
+涒 < meander;
+洸 < sparkle;
+牙科醫生 < dentist;
+問題 < problem;
+寄送 < to\-send;
+傾斜 < incline;
+郡治安官 < sheriff;
+無神論 < atheism;
+汋 < to\-pour;
+不動搖 < unmoved;
+氼 < to\-sink;
+困擾 < perplex;
+氕 < protium;
+押沙龍 < absalom;
+抄網 < dip\-net;
+歜 < furious;
+嚴正 < sternly;
+催眠曲 < lullaby;
+亞伯拉罕 < abraham;
+或許 < perhaps;
+榮幸 < honored;
+克羅地亞 < croatia;
+馬蹬 < stirrup;
+橆 < without;
+商隊 < caravan;
+牛頭犬 < bulldog;
+學院 < college;
+僵局 < impasse;
+捕手 < catcher;
+榢 < a\-frame;
+投票 < to\-vote;
+使魔法 < conjure;
+全神灌注 < rapture;
+椗 < \(plant\);
+安乃近 < analgin;
+蛋白質 < protein;
+專科院校 < academy;
+行李 < luggage;
+提到 < mention;
+驕矜 < haughty;
+芝加哥 < chicago;
+八帶魚 < octopus;
+洗衣店 < laundry;
+信箱 < mailbox;
+枼 < a\-table;
+枓 < capital;
+杸 < to\-kill;
+朾 < to\-bump;
+概念 < concept;
+不得勁 < awkward;
+地址 < address;
+孔雀 < peacock;
+滑稽 < comical;
+敾 < to\-rule;
+敯 < to\-defy;
+敜 < fill\-up;
+低調 < low\-key;
+擸 < to\-hold;
+按時 < on\-time;
+摠 < general;
+長頸鹿 < giraffe;
+打算 < to\-plan;
+掯 < oppress;
+小組 < a\-group;
+挍 < collate;
+女高音 < soprano;
+按摩 < massage;
+抈 < to\-bend;
+扽 < to\-move;
+質量 < quality;
+節日 < holiday;
+比利時 < belgium;
+不調和 < discord;
+懰 < be\-glad;
+懫 < enraged;
+有陰影 < shadowy;
+懛 < alarmed;
+懅 < bashful;
+產物 < product;
+供給 < furnish;
+惣 < overall;
+惇 < be\-kind;
+舞弄 < to\-wave;
+指關節 < knuckle;
+打碎 < shatter;
+恉 < meaning;
+在前 < forward;
+給與資格 < qualify;
+七月三十號 < july\-30;
+李鵬 < li\-peng;
+安設 < install;
+責難 < censure;
+島嶼 < islands;
+查調 < inquiry;
+便盆 < bed\-pan;
+蠱惑 < enchant;
+廌 < unicorn;
+滲漏 < seepage;
+平常日 < weekday;
+聯邦 < federal;
+漂泊 < drifter;
+儲藏室 < storage;
+噸數 < tonnage;
+匈牙利 < hungary;
+商討 < discuss;
+香菜 < parsley;
+海鮮 < seafood;
+臥房 < bedroom;
+印地安那 < indiana;
+僥倖 < luckily;
+傳單 < leaflet;
+不得而知 < unknown;
+墓誌銘 < epitaph;
+香腸 < sausage;
+航空公司 < airline;
+媞 < at\-ease;
+走私 < smuggle;
+有耐久力 < durable;
+一會兒 < a\-while;
+不道德 < immoral;
+龍蝦 < lobster;
+烏克蘭 < ukraine;
+太陽黑子 < sunspot;
+在室內 < indoors;
+夣 < a\-dream;
+壝 < a\-mound;
+希伯來書 < hebrews;
+塓 < plaster;
+椰子 < coconut;
+鑒戒 < warning;
+堄 < parapet;
+代詞 < pronoun;
+埗 < a\-wharf;
+丹麥 < denmark;
+不離兒 < not\-bad;
+圕 < library;
+圂 < pig\-sty;
+畫廊 < gallery;
+白蛋白 < albumin;
+嚊 < to\-pant;
+主席臺 < rostrum;
+衝力 < impulse;
+類固醇 < steroid;
+喥 < a\-place;
+完美 < perfect;
+展望 < outlook;
+評議會 < council;
+有希望 < hopeful;
+竊盜 < burglar;
+唞 < to\-gasp;
+唅 < a\-sound;
+家禽 < poultry;
+傷寒症 < typhoid;
+咾 < a\-noise;
+咉 < an\-echo;
+奧林匹克 < olympic;
+到那裡 < thither;
+呿 < to\-yawn;
+呬 < to\-rest;
+亞利桑那 < arizona;
+呌 < to\-call;
+空缺 < vacancy;
+最高 < highest;
+畫家 < painter;
+養老金 < pension;
+疲勞 < fatigue;
+卲 < eminent;
+匧 < a\-trunk;
+不齒 < despise;
+投手 < pitcher;
+海邊 < seaside;
+蓋世太保 < gestapo;
+噁心 < to\-hate;
+尋求 < to\-seek;
+儶 < valiant;
+小冊子 < booklet;
+儦 < milling;
+儤 < on\-duty;
+未武裝 < unarmed;
+噴墨 < ink\-jet;
+有限 < limited;
+托架 < bracket;
+侇 < a\-class;
+伀 < excited;
+最長 < longest;
+乿 < to\-cure;
+乬 < to\-hang;
+扳手 < spanner;
+便於 < easy\-to;
+海豚 < dolphin;
+愛護 < cherish;
+䶩 < to\-gnaw;
+愛屋及烏 < love\-me;
+節儉 < thrifty;
+神體 < godhead;
+䴧 < venison;
+中間 < betwixt;
+䲝 < pomfret;
+䲔 < a\-whale;
+感覺 < to\-feel;
+有幫助 < helpful;
+䱉 < the\-eel;
+䰞 < to\-cook;
+孤立 < isolate;
+䮼 < piebald;
+當前 < current;
+䮦 < untamed;
+層子 < stratum;
+䭠 < a\-snack;
+用字 < diction;
+䬎 < hot\-air;
+阿拉伯 < arabian;
+䫘 < healthy;
+促成 < procure;
+安瓿 < ampoule;
+䪣 < smashed;
+至上 < supreme;
+䩳 < tanning;
+䩔 < the\-hem;
+以馬內利 < emanuel;
+䨞 < to\-rain;
+一項 < an\-item;
+䨂 < a\-chick;
+䧟 < to\-skin;
+阿拉丁 < aladdin;
+不覺察 < unaware;
+清真 < islamic;
+䦋 < to\-grow;
+喜歡 < to\-like;
+甘藍菜 < cabbage;
+䤟 < a\-spade;
+上門 < drop\-in;
+䢶 < a\-state;
+學生 < student;
+女修道 < convent;
+䢙 < to\-ruin;
+獎金 < premium;
+規劃人員 < planner;
+䠼 < to\-wear;
+人群 < a\-crowd;
+假使 < suppose;
+發現物 < finding;
+更遠 < farther;
+在下方 < beneath;
+驚嚇 < horrify;
+䜖 < to\-talk;
+䜉 < to\-jest;
+䛷 < to\-obey;
+䛰 < sketchy;
+蒸汽機 < steamer;
+䚱 < honesty;
+䚮 < thicker;
+䚗 < to\-lift;
+䚏 < to\-love;
+丙酮 < acetone;
+小瀑布 < cascade;
+慈善機構 < charity;
+男性尊稱 < esquire;
+䘱 < wealthy;
+䘠 < greaves;
+䘝 < a\-shirt;
+第十二 < twelfth;
+不三不四 < dubious;
+才干 < ability;
+香水 < perfume;
+香氣 < incense;
+䖚 < a\-tiger;
+成文 < written;
+䔺 < heading;
+吐露 < to\-tell;
+未決定 < pending;
+趕快 < at\-once;
+會議 < meeting;
+飛船 < airship;
+曼谷 < bangkok;
+䒶 < the\-sky;
+列王紀下 < 2\-kings;
+列王紀上 < 1\-kings;
+䑧 < a\-short;
+䐿 < gizzard;
+䐷 < paunchy;
+䐴 < lumbago;
+䐫 < obesity;
+䏖 < a\-wound;
+䏇 < to\-hear;
+䎩 < to\-till;
+旅遊者 < tourist;
+主詞 < subject;
+沉默 < silence;
+打字 < to\-type;
+受託人 < trustee;
+䌘 < to\-knit;
+䌔 < to\-soak;
+䌁 < a\-pleat;
+䋎 < to\-mend;
+䊟 < adorned;
+䊘 < a\-grain;
+䉢 < a\-sieve;
+䉎 < a\-cover;
+䈬 < a\-small;
+宴會 < banquet;
+䇔 < atrophy;
+䇍 < to\-wait;
+領隊 < captain;
+月蝕 < eclipse;
+䄏 < bizarre;
+倉促 < hurried;
+肥沃 < fertile;
+䂀 < to\-wink;
+召集 < convene;
+䁛 < to\-look;
+神跡 < miracle;
+使徒 < apostle;
+㾷 < to\-ache;
+㾠 < a\-fever;
+㾟 < relapse;
+㾘 < ailment;
+㾕 < a\-chill;
+㾆 < ecdysis;
+㾅 < defects;
+陸軍上校 < colonel;
+㽖 < a\-human;
+㼼 < a\-ladle;
+㼷 < a\-basin;
+脹大 < swollen;
+㼗 < a\-brick;
+虛構小說 < fiction;
+寶寶 < darling;
+㺲 < buttons;
+㺊 < a\-beast;
+㹞 < to\-bark;
+㹛 < a\-tamed;
+等候 < waiting;
+跌到 < to\-fall;
+懺悔 < confess;
+㷓 < a\-torch;
+㷉 < to\-iron;
+戶外 < outdoor;
+石南屬 < heather;
+寬容 < lenient;
+㵒 < boiling;
+㵌 < to\-flow;
+㵅 < a\-river;
+能幹 < capable;
+不見 < not\-see;
+㴇 < to\-wade;
+㳭 < spittle;
+㳬 < an\-eddy;
+住房 < housing;
+㳙 < a\-brook;
+戰士 < fighter;
+㲂 < to\-push;
+㱖 < to\-stay;
+㱌 < to\-take;
+翡翠 < emerald;
+尊嚴 < dignity;
+薄烤餅 < pancake;
+㯓 < a\-couch;
+㯐 < tubular;
+㯋 < a\-chest;
+密度 < density;
+㮛 < a\-spoon;
+㭪 < a\-shrub;
+毒草名 < hemlock;
+㫴 < to\-roar;
+㫝 < the\-sun;
+地平線 < horizon;
+尖叫 < screech;
+㩰 < to\-stab;
+她自己 < herself;
+安撫 < placate;
+㨷 < to\-wipe;
+頂針 < thimble;
+㨰 < to\-turn;
+核子 < nuclear;
+休會 < adjourn;
+貢物 < tribute;
+㧻 < a\-thorn;
+㦹 < a\-spear;
+㦭 < to\-pity;
+飛盤 < frisbee;
+淘氣 < naughty;
+㥒 < corrupt;
+騎兵 < cavalry;
+㤺 < blurred;
+㣷 < walking;
+矮壯素 < cycocel;
+外科手術 < surgery;
+㡸 < a\-house;
+第七 < seventh;
+㡨 < a\-label;
+㡘 < screens;
+㡓 < drawers;
+㡂 < remains;
+促使 < spur\-on;
+風箱 < bellows;
+㟧 < a\-cliff;
+浴盆 < bathtub;
+㞺 < a\-tribe;
+群花 < blossom;
+各色各樣 < diverse;
+佛羅裡達 < florida;
+馬子 < commode;
+越南 < vietnam;
+向何處 < whither;
+㜓 < womanly;
+空戰 < air\-war;
+成圈 < wreathe;
+㜇 < unhappy;
+應得 < deserve;
+戰勝 < prevail;
+㚢 < a\-slave;
+不苟 < not\-lax;
+籃板球 < rebound;
+住宿 < lodging;
+㙔 < a\-fence;
+㙏 < caverns;
+變遷 < changes;
+㘩 < to\-mate;
+㗃 < the\-lip;
+封入 < inclose;
+馬克思主義 < marxism;
+㕟 < to\-sign;
+㕞 < a\-brush;
+㔿 < a\-tally;
+㔡 < greatly;
+㔂 < to\-pare;
+㓰 < to\-rive;
+㓟 < to\-peel;
+㒴 < to\-come;
+㒦 < puppets;
+聽得見 < audible;
+野貓 < wildcat;
+㒕 < unyield;
+㒑 < grow\-up;
+代替 < instead;
+㑅 < to\-make;
+案卷 < records;
+百慕大 < bermuda;
+代數 < algebra;
+有條紋 < striped;
+木瓦 < shingle;
+成功 < success;
+安息日 < sabbath;
+中立 < neutral;
+世紀 < century;
+低地 < lowland;
+海澡 < seaweed;
+今晚 < tonight;
+裁紙機 < trimmer;
+哀求 < entreat;
+洗禮 < baptism;
+妓院 < brothel;
+不等 < to\-vary;
+公爵夫人 < duchess;
+名義 < titular;
+消極 < passive;
+水銀 < mercury;
+暈船 < seasick;
+懷敵意 < hostile;
+職工 < workers;
+孟子 < mencius;
+官司 < lawsuit;
+非難 < reproof;
+永遠 < forever;
+酬載 < payload;
+聽寫 < dictate;
+虧損 < deficit;
+麻煩 < trouble;
+阿爾巴尼亞 < albania;
+彼得後書 < 2\-peter;
+創立者 < founder;
+維他命 < vitamin;
+譏誚 < cynical;
+確認 < confirm;
+裝置物 < fixture;
+王權 < royalty;
+玻利維亞 < bolivia;
+企圖 < attempt;
+參議員 < senator;
+羅盤 < compass;
+星期二 < tuesday;
+現實 < reality;
+質地 < texture;
+音樂會 < concert;
+贊助 < sponsor;
+忠誠 < devoted;
+體育場 < stadium;
+鄭重 < serious;
+印像深刻 < impress;
+半途 < halfway;
+好轉 < improve;
+惡棍 < villain;
+愛爾蘭 < ireland;
+逃亡者 < runaway;
+鼻孔 < nostril;
+哀思 < pensive;
+指導教授 < adviser;
+猖獗 < rampant;
+果園 < orchard;
+旁邊 < lateral;
+咯咯笑 < chuckle;
+生物學 < biology;
+飛彈 < missile;
+聽力 < hearing;
+使憤慨 < outrage;
+日誌 < journal;
+居住於 < inhabit;
+外面 < outside;
+雄黃 < realgar;
+會期 < session;
+不法 < lawless;
+不知何故 < somehow;
+淡光 < shimmer;
+彌賽亞 < messiah;
+沒甚麼 < nothing;
+大錯 < blunder;
+老年 < elderly;
+變硬 < stiffen;
+海岸 < coastal;
+煙灰缸 < ashtray;
+礦物 < mineral;
+著陸 < landing;
+不在了 < be\-dead;
+紡織品 < textile;
+科學 < science;
+液化 < liquify;
+阿司匹林 < aspirin;
+方言 < dialect;
+古物 < antique;
+日落 < sundown;
+金光閃爍 < spangle;
+郵費 < postage;
+曖昧 < illicit;
+不人道 < inhuman;
+雄雞 < rooster;
+放開 < unleash;
+被沒收 < forfeit;
+奴隸制度 < slavery;
+羨慕 < envious;
+路西弗 < lucifer;
+化學家 < chemist;
+餅乾 < biscuit;
+有害 < harmful;
+酒精 < alcohol;
+社會 < society;
+暴政 < tyranny;
+王國 < kingdom;
+易碎 < brittle;
+釘死 < crucify;
+訓練者 < trainer;
+清潔器 < cleaner;
+顧忌 < scruple;
+愈合 < to\-heal;
+詳述 < recount;
+願意 < to\-wish;
+愛德玲 < adeline;
+迫切性 < urgency;
+玩兒 < to\-play;
+女演員 < actress;
+中子 < neutron;
+金橘 < kumquat;
+需要 < to\-need;
+悔恨 < remorse;
+最大 < biggest;
+最多 < at\-most;
+耕作 < farming;
+急流 < torrent;
+巴比倫 < babylon;
+老公 < husband;
+嬰兒期 < infancy;
+百葉窗 < shutter;
+避彈坑 < foxhole;
+馬來西亞 < malasia;
+山胡桃木 < hickory;
+脫衣服 < undress;
+乏味 < tedious;
+𡜱 < to\-envy;
+呼吸 < breathe;
+猜度 < surmise;
+呻吟 < to\-moan;
+彼得前書 < 1\-peter;
+遴選 < to\-pick;
+女神 < goddess;
+想像 < imagine;
+業餘者 < amateur;
+同志 < comrade;
+沒有 < haven''t;
+南瓜 < pumpkin;
+變暖 < warming;
+金字塔 < pyramid;
+氣球 < balloon;
+狂暴 < frantic;
+他自己 < himself;
+吊床 < hammock;
+及時 < in\-time;
+部署 < dispose;
+也不 < neither;
+可憐 < pitiful;
+女皇 < empress;
+定居者 < settler;
+一天 < one\-day;
+二十多 < over\-20;
+改裝 < remodel;
+阿飛 < hoodlum;
+可恨 < hateful;
+收留所 < barrack;
+法官 < a\-judge;
+美國 < america;
+最佳 < optimum;
+幽靈 < specter;
+運轉 < to\-work;
+運輸 < transit;
+悲劇 < tragedy;
+書信 < epistle;
+劍術 < fencing;
+就寢時間 < bedtime;
+緒言 < preface;
+誇耀 < proudly;
+缺席 < absence;
+一口 < readily;
+七十 < seventy;
+燕麥粥 < oatmeal;
+新生 < newborn;
+不再 < no\-more;
+亞拉巴馬 < alabama;
+世俗 < profane;
+年鑑 < almanac;
+比畫 < gesture;
+量子 < quantum;
+猿人 < ape\-man;
+叫好 < applaud;
+自行車 < bicycle;
+逐退 < repulse;
+民數記 < numbers;
+小斑點 < speckle;
+注入 < pour\-in;
+正義 < justice;
+使厭煩 < disgust;
+艾迪生 < addison;
+是 < indeed;
+迫 < coerce;
+応 < should;
+忘 < forget;
+国 < nation;
+返 < return;
+忍 < endure;
+迄 < extend;
+必 < surely;
+出 < go\-out;
+辿 < follow;
+瞼 < eyelid;
+得 < obtain;
+辷 < smooth;
+徴 < summon;
+徳 < virtue;
+瞭 < bright;
+辛 < bitter;
+徐 < slowly;
+後 < behind;
+徊 < linger;
+影 < shadow;
+事 < affair;
+轟 < rumble;
+彈 < pellet;
+主 < master;
+強 < strong;
+弛 < loosen;
+民 < people;
+県 < county;
+现 < appear;
+分 < divide;
+些 < little;
+相 < mutual;
+理 < reason;
+益 < profit;
+话 < speech;
+向 < toward;
+定 < decide;
+庫 < armory;
+度 < degree;
+底 < bottom;
+打 < strike;
+位 < throne;
+序 < series;
+幼 < infant;
+干 < oppose;
+内 < inside;
+癪 < spasms;
+加 < add\-to;
+化 < change;
+癌 < cancer;
+常 < common;
+踰 < exceed;
+市 < market;
+才 < talent;
+住 < reside;
+员 < member;
+巻 < scroll;
+性 < nature;
+报 < report;
+神 < spirit;
+数 < number;
+跡 < search;
+原 < source;
+巡 < patrol;
+川 < stream;
+疊 < repeat;
+系 < system;
+畠 < garden;
+记 < record;
+林 < forest;
+统 < govern;
+字 < letter;
+島 < island;
+質 < matter;
+论 < debate;
+貰 < borrow;
+指 < finger;
+財 < wealth;
+花 < flower;
+層 < storey;
+条 < clause;
+屍 < corpse;
+局 < bureau;
+办 < manage;
+谷 < valley;
+城 < castle;
+父 < father;
+導 < direct;
+寧 < repose;
+黄 < yellow;
+德 < ethics;
+害 < injure;
+宮 < palace;
+友 < friend;
+守 < defend;
+讃 < praise;
+际 < border;
+单 < single;
+孤 < orphan;
+校 < school;
+獄 < prison;
+猾 < crafty;
+謙 < humble;
+謎 < riddle;
+狹 < narrow;
+母 < mother;
+狙 < an\-ape;
+团 < sphere;
+狂 < insane;
+課 < lesson;
+招 < beckon;
+兴 < thrive;
+约 < treaty;
+詩 < poetry;
+绝 < to\-cut;
+选 < choose;
+星 < a\-star;
+訴 < accuse;
+爛 < rotten;
+消 < vanish;
+燭 < candle;
+姫 < beauty;
+杨 < willow;
+严 < strict;
+熊 < a\-bear;
+妄 < absurd;
+苏 < revive;
+答 < answer;
+奮 < strive;
+煩 < bother;
+襤 < ragged;
+供 < supply;
+央 < center;
+列 < a\-line;
+焦 < burned;
+龙 < dragon;
+夏 < summer;
+春 < spring;
+态 < manner;
+袖 < sleeve;
+袋 < pocket;
+副 < assist;
+够 < enough;
+街 < street;
+激 < arouse;
+银 < silver;
+阵 < column;
+简 < simple;
+毒 < poison;
+湖 < a\-lake;
+蝉 < cicada;
+追 < pursue;
+鼬 < weasel;
+络 < enmesh;
+漠 < desert;
+蜘 < spider;
+占 < divine;
+圓 < circle;
+兰 < orchid;
+阶 < stairs;
+黙 < silent;
+佛 < buddha;
+效 < result;
+攻 < attack;
+策 < scheme;
+股 < thighs;
+莫 < do\-not;
+嘘 < exhale;
+窗 < window;
+添 < append;
+混 < to\-mix;
+鷲 < condor;
+博 < gamble;
+藤 < rattan;
+智 < wisdom;
+抗 < resist;
+喰 < to\-eat;
+喧 < lively;
+喉 < throat;
+浚 < dredge;
+逃 < escape;
+唸 < recite;
+靖 < pacify;
+秘 < secret;
+欲 < desire;
+征 < invade;
+秋 < autumn;
+吸 < inhale;
+鳩 < pigeon;
+悲 < sorrow;
+桥 < bridge;
+蒻 < rushes;
+葡 < grapes;
+汚 < filthy;
+胸 < breast;
+邮 < postal;
+吝 < stingy;
+横 < across;
+萎 < wither;
+菫 < celery;
+择 < select;
+恨 < hatred;
+竹 < bamboo;
+菓 < fruits;
+旗 < banner;
+殻 < casing;
+稳 < stable;
+迹 < traces;
+针 < needle;
+櫻 < cherry;
+弃 < reject;
+紫 < purple;
+拔 < uproot;
+芝 < sesame;
+赏 < reward;
+插 < insert;
+驢 < donkey;
+冬 < winter;
+扩 < expand;
+橘 < orange;
+逼 < compel;
+騷 < harass;
+刹 < temple;
+镜 < mirror;
+標 < a\-mark;
+舌 < tongue;
+槽 < trough;
+臼 < mortar;
+伏 < crouch;
+愤 < resent;
+俄 < sudden;
+凍 < freeze;
+槌 < hammer;
+阻 < impede;
+饑 < starve;
+腑 < bowels;
+兎 < rabbit;
+腋 < armpit;
+儘 < utmost;
+崇 < esteem;
+餓 < hungry;
+棺 < coffin;
+粉 < powder;
+盾 < shield;
+飢 < hunger;
+捕 < arrest;
+梯 < ladder;
+聘 < engage;
+梃 < a\-club;
+顫 < shiver;
+闷 < gloomy;
+悔 < repent;
+邀 < invite;
+頬 < cheeks;
+患 < suffer;
+丐 < beggar;
+柱 < pillar;
+柚 < pomelo;
+柄 < handle;
+侮 < insult;
+铜 < copper;
+枕 < pillow;
+杵 < pestle;
+扯 < rip\-up;
+趋 < hasten;
+串 < string;
+雲 < clouds;
+雌 < female;
+雇 < employ;
+隅 < corner;
+繕 < repair;
+棉 < cotton;
+縛 < to\-tie;
+谅 < excuse;
+呈 < submit;
+線 < thread;
+敷 < spread;
+脾 < spleen;
+紳 < girdle;
+鹰 < falcon;
+愚 < stupid;
+糞 < manure;
+粧 < toilet;
+採 < gather;
+帕 < turban;
+丫 < forked;
+拐 < kidnap;
+倪 < feeble;
+錐 < gimlet;
+篮 < basket;
+侄 < nephew;
+叉 < crotch;
+怖 < terror;
+颁 < confer;
+咕 < mumble;
+舵 < rudder;
+惩 < punish;
+咖 < coffee;
+淳 < honest;
+猴 < monkey;
+霉 < mildew;
+悼 < grieve;
+逍 < ramble;
+耍 < frolic;
+捆 < tie\-up;
+遊 < wander;
+廿 < twenty;
+腻 < greasy;
+缆 < hawser;
+鞑 < tatars;
+慷 < ardent;
+篷 < awning;
+荆 < thorns;
+膏 < grease;
+鞍 < saddle;
+睬 < notice;
+绥 < soothe;
+氧 < oxygen;
+婷 < pretty;
+凿 < chisel;
+巫 < wizard;
+虾 < shrimp;
+伶 < lonely;
+椒 < pepper;
+揖 < salute;
+冉 < tender;
+踱 < stroll;
+猬 < vulgar;
+褂 < jacket;
+糙 < coarse;
+闸 < sluice;
+颓 < ruined;
+屉 < drawer;
+刁 < tricky;
+洼 < hollow;
+蒜 < garlic;
+渣 < refuse;
+慑 < afraid;
+忏 < regret;
+碾 < roller;
+疙 < pimple;
+漉 < filter;
+隧 < tunnel;
+酥 < butter;
+钮 < button;
+漱 < gargle;
+盔 < helmet;
+磋 < polish;
+蕉 < banana;
+痰 < phlegm;
+羁 < halter;
+诏 < decree;
+靶 < target;
+酝 < liquor;
+亵 < slight;
+貂 < marten;
+聆 < listen;
+韬 < sheath;
+鹊 < magpie;
+卅 < thirty;
+碳 < carbon;
+硫 < sulfur;
+镰 < sickle;
+涎 < saliva;
+壕 < trench;
+锚 < anchor;
+钠 < sodium;
+睿 < shrewd;
+莺 < oriole;
+胯 < pelvis;
+跻 < ascend;
+鳖 < turtle;
+腼 < modest;
+娓 < comply;
+刎 < behead;
+蹙 < urgent;
+胚 < embryo;
+荔 < lichee;
+锵 < tinkle;
+茧 < cocoon;
+蟒 < python;
+鹃 < cuckoo;
+獗 < unruly;
+蒯 < a\-rush;
+沏 < infuse;
+嚏 < sneeze;
+砾 < gravel;
+佟 < a\-name;
+茜 < madder;
+扈 < escort;
+咛 < enjoin;
+泗 < mucous;
+锹 < shovel;
+鹗 < osprey;
+儡 < puppet;
+螂 < mantis;
+苓 < fungus;
+叵 < cannot;
+寮 < shanty;
+犷 < fierce;
+沱 < rivers;
+疡 < ulcers;
+徕 < induce;
+骛 < gallop;
+徉 < wonder;
+谪 < charge;
+俚 < rustic;
+俪 < spouse;
+臾 < moment;
+嬴 < to\-win;
+烩 < ragout;
+铤 < ingots;
+茁 < sprout;
+舢 < sampan;
+碜 < gritty;
+僭 < assume;
+碘 < iodine;
+烯 < alkene;
+囿 < pen\-up;
+囫 < entire;
+镍 < nickel;
+橐 < a\-sack;
+杷 < loquat;
+聒 < clamor;
+羯 < wether;
+秣 < fodder;
+樽 < goblet;
+焖 < simmer;
+轳 < pulley;
+镭 < radium;
+殄 < to\-end;
+诰 < inform;
+莅 < attend;
+讫 < finish;
+淬 < temper;
+嘬 < to\-lap;
+烷 < alkane;
+蛎 < oyster;
+焱 < flames;
+蜥 < lizard;
+葺 < thatch;
+恽 < devise;
+蓿 < clover;
+瘌 < severe;
+喱 < gramme;
+钴 < cobalt;
+貉 < badger;
+蜉 < mayfly;
+鲑 < salmon;
+娈 < lovely;
+荨 < nettle;
+竦 < revere;
+狒 < baboon;
+蘼 < millet;
+茴 < fennel;
+鲦 < minnow;
+渌 < strain;
+阚 < glance;
+珐 < enamel;
+靛 < indigo;
+黧 < a\-dark;
+蠓 < midges;
+橼 < citrus;
+魍 < demons;
+翊 < flying;
+镏 < distil;
+胼 < callus;
+犏 < yak\-ox;
+碚 < suburb;
+腭 < palate;
+鳟 < barbel;
+殂 < to\-die;
+筚 < wicker;
+疝 < hernia;
+骀 < an\-old;
+蒗 < \(herb\);
+菟 < dodder;
+陉 < defile;
+疠 < a\-sore;
+旰 < sunset;
+聍 < earwax;
+锇 < osmium;
+钡 < barium;
+襻 < a\-loop;
+铒 < erbium;
+铈 < cerium;
+椴 < poplar;
+苡 < barley;
+舄 < a\-shoe;
+鸫 < thrush;
+锔 < curium;
+铟 < indium;
+眍 < sunken;
+桷 < rafter;
+苄 < benzyl;
+陔 < a\-step;
+骶 < coccyx;
+鲻 < mullet;
+螨 < insect;
+虼 < a\-flea;
+瘕 < asthma;
+镘 < trowel;
+胂 < arsine;
+菔 < turnip;
+從此 < thence;
+鳥羽 < pinion;
+編者 < editor;
+誤用 < misuse;
+強盜 < bandit;
+詩篇 < psalms;
+方法 < method;
+政策 < policy;
+哺乳動物 < mammal;
+伊尼伊德 < aeneid;
+警察 < police;
+士師記 < judges;
+發電機 < dynamo;
+罪人 < sinner;
+大炮 < cannon;
+大災 < plague;
+塞爾維亞 < serbia;
+吉他 < guitar;
+毀滅 < perish;
+穆斯林 < muslim;
+開車人 < driver;
+帶釦 < buckle;
+動物 < animal;
+使﹍豐富 < enrich;
+緊縮 < reduce;
+燒焦 < scorch;
+領事 < consul;
+嘶啞聲 < hoarse;
+大浪 < billow;
+睡著 < asleep;
+氣息 < breath;
+擱置 < shelve;
+整潔 < neatly;
+弊病 < malady;
+選票 < a\-vote;
+剽竊 < pirate;
+編碼 < coding;
+拔尖兒 < tiptop;
+巨頭 < tycoon;
+頂事 < useful;
+撕裂 < mangle;
+附著 < adhere;
+伊尼亞斯 < aeneas;
+正當 < timely;
+怒吼 < bellow;
+奇景 < marvel;
+版式 < format;
+驅逐出境 < deport;
+遠程 < remote;
+半徑 < radius;
+降臨 < befall;
+管理人 < keeper;
+醜化 < defame;
+狂人 < madman;
+大桶 < barrel;
+有人情 < humane;
+西紅柿 < tomato;
+看見 < to\-see;
+解脫 < relief;
+破敗 < beaten;
+旗幟 < ensign;
+水壺 < kettle;
+殖民 < colony;
+旋律 < melody;
+動機 < motive;
+厭倦 < dreary;
+內陸 < inland;
+工錢 < salary;
+公開 < public;
+原先 < former;
+八開 < octavo;
+熊熊 < raging;
+短歌 < ballad;
+博士 < doctor;
+忠告 < advice;
+砲手 < gunner;
+多星 < starry;
+律師 < lawyer;
+八分音符 < quaver;
+微妙 < subtle;
+好好 < nicely;
+總是 < always;
+開鎖 < unlock;
+步測 < pacing;
+營救 < rescue;
+敬服 < admire;
+天竺牡丹 < dahlia;
+得宜 < proper;
+初級 < junior;
+輕鬆 < gentle;
+爐床 < hearth;
+謊報 < to\-lie;
+確保 < ensure;
+離奇有趣 < quaint;
+運用 < to\-use;
+絲絨 < velvet;
+版圖 < domain;
+政權 < regime;
+很少 < seldom;
+爵士 < knight;
+襯裡 < lining;
+謙和 < meekly;
+網球 < tennis;
+荒蕪 < barren;
+電影院 < cinema;
+天性 < inborn;
+小妖精 < goblin;
+金絲雀 < canary;
+歐洲 < europe;
+勾引 < seduce;
+熱望 < aspire;
+精選 < chosen;
+誘拐 < abduct;
+誠懇 < hearty;
+動名詞 < gerund;
+通知 < notify;
+刺痛 < tingle;
+徵召 < enlist;
+歡樂 < gaiety;
+競賽者 < player;
+先鋒 < herald;
+編年史 < annals;
+敵意 < enmity;
+巴西 < brazil;
+缺氧症 < anoxia;
+物件 < object;
+卸下 < unload;
+包容 < pardon;
+誘惑 < entice;
+牧人 < pastor;
+大地洞 < cavern;
+外形 < figure;
+隨機 < random;
+兵變 < mutiny;
+發嘎嘎聲 < rattle;
+敏捷 < nimble;
+牛仔 < cowboy;
+提醒 < remind;
+觸犯 < offend;
+奪取 < snatch;
+夫子 < pedant;
+太子 < prince;
+真空 < vacu\:m;
+殺害 < murder;
+殘忍 < bloody;
+閒話 < gossip;
+辭職 < resign;
+線條 < streak;
+滑翔機 < glider;
+徒勞 < futile;
+得到 < to\-get;
+希臘 < greece;
+濺開 < splash;
+遊歷 < travel;
+復仇 < avenge;
+殘餘物 < litter;
+壓扁 < squash;
+詩意 < poetic;
+攝政 < regent;
+標語 < slogan;
+不可告人 < hidden;
+發誓 < to\-vow;
+橡膠 < rubber;
+力足以做 < afford;
+在﹍期間 < during;
+地鐵 < subway;
+十一 < eleven;
+從事 < go\-for;
+熱帶 < tropic;
+有責任 < liable;
+雜工 < porter;
+出產 < output;
+奢侈 < luxury;
+掛鉤 < couple;
+純粹 < purely;
+種族主義 < racism;
+孩子氣 < boyish;
+小牝牛 < heifer;
+跑步者 < runner;
+露出 < expose;
+攀昇 < rising;
+解渴 < quench;
+歌手 < singer;
+吐綬雞 < turkey;
+巡航 < cruise;
+布線 < wiring;
+正式 < formal;
+冰箱 < icebox;
+無法 < unable;
+逕流 < runoff;
+大吃 < gobble;
+毫不 < hardly;
+道教 < taoism;
+齵 < uneven;
+診所 < clinic;
+遺恨 < grudge;
+鼫 < marmot;
+鼔 < a\-drum;
+鬆餅 < muffin;
+加崙 < gallon;
+鹨 < anthus;
+跨接器 < jumper;
+教堂 < church;
+鷇 < chicks;
+鶽 < a\-hawk;
+鶸 < siskin;
+詞尾 < suffix;
+鵀 < hoopoe;
+週期 < period;
+鴢 < \(duck\);
+負擔者 < bearer;
+零售 < retail;
+鴃 < shrike;
+在車 < aboard;
+徒步旅行 < hiking;
+鱎 < \(fish\);
+鱆 < poulpe;
+茶碗 < teacup;
+緞帶 < ribbon;
+分派 < assign;
+合唱團 < chorus;
+阻橈 < thwart;
+搖籃 < cradle;
+領導者 < leader;
+著名 < famous;
+強勢 < mighty;
+紮營 < encamp;
+驫 < horses;
+凹洞 < cavity;
+弱化 < weaken;
+陰戶 < vagina;
+擊敗 < defeat;
+進接 < access;
+馿 < an\-ass;
+絕氣 < expire;
+曲棍球 < hockey;
+証實 < verify;
+餤 < incite;
+連擊 < batter;
+教區 < parish;
+火箭 < rocket;
+隱士 < hermit;
+路由器 < router;
+短劍 < dagger;
+顒 < solemn;
+強健 < sturdy;
+一節\(詩\) < stanza;
+武器 < weapon;
+鞚 < bridle;
+煤屑 < cinder;
+平板 < tablet;
+凹槽 < socket;
+刮掉 < scrape;
+高雅 < dainty;
+雂 < \(bird\);
+父母親 < parent;
+歡喜 < joyful;
+分枝 < branch;
+步哨 < sentry;
+傳達 < convey;
+化妝品 < makeup;
+急促聲 < patter;
+闉 < curved;
+衡量 < weight;
+使硬化 < harden;
+骨髓 < marrow;
+铯 < cesium;
+搔癢 < tickle;
+雕像 < statue;
+鑞 < solder;
+正午 < midday;
+鑀 < ionium;
+鐝 < a\-pick;
+鎒 < to\-hoe;
+交易者 < dealer;
+鎅 < to\-saw;
+撫抱 < caress;
+錩 < vessel;
+救主 < savior;
+粘粘 < sticky;
+日內瓦 < geneva;
+鋙 < misfit;
+巴爾 < baltic;
+的確 < really;
+鋅 < zincum;
+過失 < defect;
+銀行家 < banker;
+植物學 < botany;
+紀念獎 < trophy;
+酴 < leaven;
+長短 < length;
+幫手 < helper;
+偽造的 < forged;
+旅行裝備 < outfit;
+附庸 < vassal;
+適合 < to\-fit;
+第二次 < second;
+高達 < attain;
+鵝卵石 < pebble;
+有氣派 < lordly;
+債務人 < debtor;
+花粉 < pollen;
+逌 < please;
+迍 < falter;
+轜 < hearse;
+白痴 < idiocy;
+峽谷 < canyon;
+躧 < sandal;
+表親 < cousin;
+觀念 < notion;
+踡 < curled;
+裁縫 < tailor;
+採納 < accept;
+補種 < reseed;
+小碟子 < saucer;
+貪 < greedy;
+冰柱 < icicle;
+舞蹈家 < dancer;
+阿姨 < auntie;
+線上 < online;
+譆 < scream;
+諵 < mutter;
+驚駭 < fright;
+素描 < sketch;
+閒混 < loiter;
+詻 < orders;
+詗 < to\-spy;
+摟抱 < to\-hug;
+自身 < itself;
+進口 < import;
+採礦 < mining;
+襮 < collar;
+擾亂 < infest;
+結尾 < ending;
+閣樓 < garret;
+花生 < peanut;
+袚 < greave;
+過份 < unduly;
+驟雨 < shower;
+幃幕 < screen;
+使濕透 < drench;
+蠩 < a\-toad;
+蠁 < larvae;
+威士忌酒 < whisky;
+光澤 < luster;
+逝去 < elapse;
+蛣 < beetle;
+蛌 < cricke;
+光滑 < glossy;
+逕向 < radial;
+虖 < to\-cry;
+批評家 < critic;
+相差 < differ;
+薑 < ginger;
+關心 < caring;
+在深處 < deeply;
+蔔 < radish;
+蓚 < oxalic;
+蒎 < pinane;
+抵達 < arrive;
+勝利者 < victor;
+地產 < estate;
+連字符號 < hyphen;
+菆 < jungle;
+廢除軍備 < disarm;
+局面 < aspect;
+茢 < sedges;
+蹺蹺板 < seesaw;
+澱粉 < starch;
+標榜 < flaunt;
+艢 < a\-mast;
+滑雪 < to\-ski;
+回絕 < rebuff;
+襪帶 < garter;
+綁住 < fasten;
+眼光 < vision;
+磨坊主 < miller;
+樣本 < sample;
+烈士 < martyr;
+精明 < astute;
+腳鐐 < fetter;
+胹 < cooked;
+白果 < ginkgo;
+帆布 < canvas;
+跳進 < plunge;
+有關連 < relate;
+多樹木 < wooded;
+附上 < attach;
+抬起 < uplift;
+顛倒過來 < invert;
+耤 < plough;
+吱吱聲 < squeak;
+幾乎 < almost;
+瀉湖 < lagoon;
+罫 < hinder;
+罥 < impete;
+簡直 < simply;
+未完成 < undone;
+繨 < a\-knot;
+光是 < solely;
+縆 < a\-rope;
+給予 < accord;
+七月一號 < july\-1;
+複數 < plural;
+白搭 < no\-use;
+魔賽克 < mosaic;
+航程 < flight;
+紩 < to\-sew;
+紟 < a\-sash;
+紃 < a\-cord;
+援手 < succor;
+帝國 < empire;
+茶壺 < teapot;
+伯仲叔季 < eldest;
+籲 < appeal;
+盟國 < allies;
+簉 < deputy;
+裁決 < ruling;
+篥 < bulgle;
+實體 < entity;
+箙 < quiver;
+烏干達 < uganda;
+索取 < to\-ask;
+席卷 < engulf;
+不確實 < untrue;
+地毯 < carpet;
+竉 < a\-hole;
+八度 < octave;
+用語 < syntax;
+鼻口部分 < muzzle;
+尖聲啼哭 < squeal;
+節約 < frugal;
+祏 < shrine;
+辦公室 < office;
+承諾 < effort;
+衛生 < health;
+補救 < remedy;
+修訂 < revise;
+羅馬書 < romans;
+迄今 < so\-far;
+實際 < actual;
+睪 < spy\-on;
+眾 < masses;
+嘗試 < to\-try;
+垂幕 < canopy;
+蠟筆 < crayon;
+服務員 < waiter;
+命運註定 < ordain;
+人頭獅身 < sphinx;
+皀 < kernel;
+不幸之事 < mishap;
+蜘蛛網 < cobweb;
+疃 < hamlet;
+執事 < deacon;
+畽 < ground;
+成長 < mature;
+溝道 < groove;
+阿米巴 < amoeba;
+農人 < farmer;
+滾落 < tumble;
+融解 < molten;
+圖案 < design;
+腔調 < accent;
+修補匠 < tinker;
+走錯 < astray;
+珔 < \(jade\);
+玓 < pearly;
+節省 < saving;
+猺 < jackal;
+信號 < signal;
+小貓 < kitten;
+行為 < action;
+大理石 < marble;
+在﹍之旁 < beside;
+持有人 < holder;
+煃 < remove;
+撒哈拉 < sahara;
+大鐮刀 < scythe;
+埋伏 < ambush;
+約翰二書 < 2\-john;
+對話 < dialog;
+符號 < symbol;
+瀌 < plenty;
+胸針 < brooch;
+濵 < a\-bank;
+搭乘 < embark;
+澼 < bleach;
+娛樂場 < resort;
+八十 < eighty;
+簸揚 < winnow;
+棒糖 < sucker;
+算盤 < abacus;
+醃黃瓜 < pickle;
+渨 < a\-cove;
+淟 < turbid;
+精力 < energy;
+收割者 < reaper;
+傳染 < infect;
+工人 < worker;
+洟 < snivel;
+泭 < a\-raft;
+氫 < amonia;
+起訴 < to\-sue;
+蝗蟲 < locust;
+傳教 < preach;
+較好 < better;
+花圈 < wreath;
+橰 < a\-spar;
+腎臟 < kidney;
+橤 < stamen;
+橜 < a\-post;
+橕 < a\-prop;
+樲 < jujube;
+路程 < course;
+先前 < before;
+憂鬱 < sullen;
+螺旋鉗 < wrench;
+參議院 < senate;
+穗飾 < tassel;
+楢 < tinder;
+瑞金 < ruijin;
+抱病 < be\-ill;
+傳授 < impart;
+車庫 < garage;
+測量 < survey;
+字首 < prefix;
+魚夫 < fisher;
+椧 < gutter;
+棃 < a\-pear;
+桲 < quince;
+花哨 < garish;
+輕咬 < nibble;
+條紋 < stripe;
+致死 < deadly;
+任何人 < anyone;
+贖金 < ransom;
+行星 < planet;
+曀 < stormy;
+回憶 < recall;
+穀類 < cereal;
+偵查 < detect;
+旻 < heaven;
+容許 < permit;
+敡 < rebuke;
+敂 < deduct;
+十四行詩 < sonnet;
+擓 < to\-rub;
+有道德 < chaste;
+漣漪 < ripple;
+二者之一 < either;
+捽 < clutch;
+國外 < abroad;
+液體 < liquid;
+藝術家 < artist;
+崎嶇 < rugged;
+餑餑 < pastry;
+餐飲 < repast;
+使膨脹 < dilate;
+何處 < whence;
+信用 < credit;
+約翰三書 < 3\-john;
+小提琴 < fiddle;
+因子 < factor;
+恟 < scared;
+拳擊 < boxing;
+軟化 < soften;
+安詳 < serene;
+懶洋洋 < lazily;
+約翰一書 < 1\-john;
+扣留 < detain;
+松雞 < grouse;
+弣 < middle;
+高度 < height;
+廆 < a\-room;
+異教 < heresy;
+巤 < a\-mane;
+巘 < summit;
+嶓 < boshan;
+崿 < cliffs;
+地主 < a\-host;
+馬戲團 < circus;
+高山 < alpine;
+生涯 < career;
+作者 < author;
+挪威 < norway;
+尅 < subdue;
+尋的 < homing;
+寎 < drowsy;
+馬鈴薯 < potato;
+孾 < a\-baby;
+使轉向 < divert;
+沒有人 < nobody;
+嬃 < sister;
+嫪 < hanker;
+婼 < person;
+博物館 < museum;
+娒 < matron;
+朋黨 < clique;
+禮拜堂 < chapel;
+混血 < hybrid;
+跋涉 < trudge;
+夬 < parted;
+僅僅 < barely;
+漏斗 < funnel;
+不透明 < opaque;
+堧 < adjoin;
+乳頭 < nipple;
+理論 < theory;
+介質 < medium;
+嚿 < a\-lump;
+由於 < due\-to;
+噚 < fathom;
+和風 < breeze;
+喆 < a\-sage;
+扶植 < foster;
+環球 < global;
+唫 < to\-hum;
+除了之外 < except;
+唈 < to\-sob;
+哤 < jargon;
+便池 < urinal;
+呮 < to\-sit;
+厎 < settle;
+宣稱 < assert;
+哀辭 < lament;
+扁桃體 < tonsil;
+勄 < active;
+乾酪 < cheese;
+更高 < higher;
+偌大 < so\-big;
+正方形 < square;
+肌肉 < muscle;
+驚恐 < appall;
+可信任 < trusty;
+文學家 < writer;
+手槍 < pistol;
+僬 < clever;
+傎 < topple;
+移動式 < mobile;
+家畜 < cattle;
+福音 < gospel;
+起源 < origin;
+倃 < damage;
+亂跳 < bounce;
+到此處 < hither;
+膽大 < daring;
+仚 < to\-fly;
+製陶工人 < potter;
+健全 < robust;
+䶁 < noises;
+䵧 < to\-dye;
+䴥 < a\-stag;
+䳾 < an\-owl;
+拌嘴 < bicker;
+打擊 < to\-hit;
+䳇 < parrot;
+笨拙 < clumsy;
+䲹 < ospery;
+人口調查 < census;
+䲌 < a\-fish;
+䱕 < labrus;
+䰣 < an\-elf;
+瑕疵 < stigma;
+䯨 < to\-rap;
+䯁 < a\-mule;
+墨西哥 < mexico;
+清真寺 < mosque;
+䭪 < grains;
+䭥 < a\-bait;
+䭌 < congee;
+䬸 < a\-meal;
+䬑 < a\-gale;
+䫬 < to\-bow;
+海裡 < marine;
+味道 < flavor;
+䨺 < cloudy;
+䨟 < puddle;
+䨇 < a\-pair;
+無論如何 < anyhow;
+䧴 < a\-bird;
+䧑 < a\-dike;
+出埃及記 < exodus;
+安哥拉 < angola;
+有藥癮者 < addict;
+䥪 < to\-cup;
+䥨 < a\-file;
+䥍 < a\-whip;
+以色列 < israel;
+私語 < murmur;
+釣魚用具 < tackle;
+最近 < recent;
+䣘 < a\-hall;
+清瘦 < meager;
+䣈 < a\-lane;
+釘書針 < staple;
+岸上 < ashore;
+照相機 < camera;
+䠰 < coiled;
+䠤 < toddle;
+紡織者 < weaver;
+中途 < midway;
+斯拉夫 < slavic;
+䝜 < a\-lion;
+䝄 < cowpea;
+俄羅斯 < russia;
+䜞 < a\-dose;
+木製 < wooden;
+安然 < safely;
+飢荒 < famine;
+䘰 < a\-hood;
+趾尖 < tiptoe;
+䘬 < armour;
+䘌 < gadfly;
+䗫 < a\-frog;
+䖹 < weevil;
+信奉 < belief;
+成效 < effect;
+䔯 < salted;
+瓶子 < bottle;
+䔢 < cathay;
+䔏 < a\-lush;
+三重 < treble;
+䓦 < a\-rule;
+客氣 < polite;
+䓄 < grassy;
+浮著 < afloat;
+變黑 < darken;
+䒉 < a\-long;
+䒂 < an\-oar;
+弓箭手 < archer;
+䑺 < a\-sail;
+䑴 < a\-boat;
+浮華 < vanity;
+䐦 < sleepy;
+䐥 < stinky;
+駁斥 < refute;
+不適 < unwell;
+䏪 < tendon;
+羞辱 < baffle;
+留下 < remain;
+䏣 < maggot;
+上邊 < upside;
+䎱 < a\-drag;
+胡桃 < walnut;
+䍃 < a\-vase;
+封建 < feudal;
+和藹 < kindly;
+䋐 < fabric;
+䊧 < a\-fart;
+塞爾特 < celtic;
+䊛 < shreds;
+穿洞 < pierce;
+䈴 < a\-cage;
+䈎 < a\-leaf;
+䇚 < to\-tap;
+䇁 < a\-cave;
+䆼 < a\-nest;
+䆮 < to\-dip;
+䆙 < a\-kiln;
+客棧 < tavern;
+叩頭 < kowtow;
+房客 < tenant;
+第四 < fourth;
+䄹 < a\-year;
+野餐 < picnic;
+䄘 < a\-rite;
+䃥 < stones;
+專家 < expert;
+䂷 < broken;
+使得 < usable;
+㿼 < a\-bowl;
+㿻 < a\-tray;
+打字員 < typist;
+㿭 < cracks;
+㿧 < fields;
+蜃景 < mirage;
+㿔 < a\-wart;
+反駁 < retort;
+少女 < maiden;
+㽷 < dropsy;
+㼾 < bricks;
+海綿 < sponge;
+星期日 < sunday;
+㼄 < pearls;
+用于 < use\-in;
+㸿 < a\-calf;
+晚飯 < supper;
+㷋 < embers;
+葡萄乾 < raisin;
+賭注 < stakes;
+㶤 < to\-fry;
+㶈 < creeks;
+神諭 < oracle;
+㵝 < moving;
+不要 < don''t\!;
+㴞 < fluent;
+我自己 < myself;
+材積 < volume;
+扁圓 < oblate;
+㳌 < marshy;
+㱞 < danger;
+㱍 < to\-owe;
+叮鈴 < jingle;
+㰃 < a\-tree;
+大步走 < stride;
+第八 < eighth;
+上衫 < blouse;
+㮖 < to\-lay;
+㭱 < a\-case;
+比較喜歡 < prefer;
+寶塔 < pagoda;
+㫺 < bygone;
+不公平 < unfair;
+客戶 < client;
+㫅 < a\-flag;
+㪹 < to\-rob;
+㩲 < a\-fist;
+芭蕾舞 < ballet;
+㨾 < a\-type;
+㧧 < a\-comb;
+家庭 < family;
+柏林 < berlin;
+㦔 < silkly;
+有罪 < guilty;
+㦊 < lavish;
+㦅 < uneasy;
+鍵帽 < keycap;
+小包 < packet;
+亨特 < hunter;
+打傷 < bruise;
+頁邊 < margin;
+手冊 < manual;
+㡁 < a\-robe;
+㠲 < ripped;
+牙齒 < dental;
+名言 < saying;
+㝹 < a\-hare;
+耀眼 < dazzle;
+伯利茲 < belize;
+港彎 < harbor;
+背帶 < braces;
+螺旋形 < spiral;
+㚼 < a\-girl;
+㚻 < sodomy;
+㚌 < a\-band;
+㙹 < a\-damp;
+比較少 < lesser;
+犯錯 < to\-err;
+在此處 < herein;
+暴虐 < brutal;
+被害人 < victim;
+阿多尼斯 < adonis;
+波蘭 < poland;
+㔺 < an\-age;
+㔉 < to\-dig;
+㓵 < swords;
+㓠 < a\-flaw;
+㓅 < frozen;
+星雲 < nebula;
+海狸 < beaver;
+阿波羅 < apollo;
+依偎 < nestle;
+懦夫 < coward;
+使耳聾 < deafen;
+休惜 < recess;
+蓬鬆 < fluffy;
+磁鐵 < magnet;
+校園 < campus;
+變質 < go\-bad;
+義賣會 < bazaar;
+羊肉 < mutton;
+工作室 < studio;
+吊著 < dangle;
+紫羅蘭色 < violet;
+門外漢 < layman;
+憎惡 < loathe;
+透印版印刷 < offset;
+在附近 < nearby;
+憎恨 < detest;
+塗油於 < anoint;
+雜貨商 < grocer;
+喜劇 < comedy;
+寒冬 < wintry;
+貶斥 < demote;
+單位 < a\-unit;
+球拍 < racket;
+維吾爾 < uighur;
+英雄式 < heroic;
+子彈 < bullet;
+理髮師 < barber;
+傭人領班 < butler;
+安培 < ampere;
+食槽 < manger;
+背叛 < betray;
+贖回 < redeem;
+獨特 < unique;
+毛織運動衫 < jersey;
+金色 < golden;
+起泡沫 < seethe;
+不戰不和 < no\-war;
+室內 < indoor;
+賓客 < guests;
+瑞典 < sweden;
+贊同 < assent;
+薄紙 < tissue;
+悶熱 < sultry;
+星期五 < friday;
+星期一 < monday;
+現存 < extant;
+餐巾 < napkin;
+以太 < ether\-;
+巴爾干 < balkan;
+瑣事 < trifle;
+格格笑 < giggle;
+預算 < budget;
+孟加拉 < bengal;
+青銅 < bronze;
+頑童 < urchin;
+會死 < mortal;
+不然 < not\-so;
+讀者 < reader;
+洪水 < deluge;
+白蘭地 < brandy;
+木料 < lumber;
+愛德華 < edward;
+深化 < deepen;
+現在 < modern;
+蘇格蘭帽 < bonnet;
+變紅 < redden;
+減低速度 < retard;
+猖狂 < savage;
+淨化 < purify;
+後退 < recoil;
+阿拉斯加 < alaska;
+片語 < phrase;
+流星 < meteor;
+悲歎 < bewail;
+存儲 < memory;
+使具體化 < embody;
+典獄長 < warden;
+看不見 < unseen;
+使作嘔 < sicken;
+象徵 < emblem;
+不比 < unlike;
+大錘 < sledge;
+最新 < latest;
+主教 < bishop;
+恐水病 < rabies;
+處女 < virgin;
+賣主 < seller;
+羊毛 < fleece;
+含水 < watery;
+加﹍於 < impose;
+處境 < plight;
+議程 < agenda;
+惡意 < malice;
+本州 < honshu;
+橡皮搽 < eraser;
+數量 < amount;
+斷言 < affirm;
+浪子 < loafer;
+有意 < intend;
+波士頓 < boston;
+名流 < gentry;
+台灣 < taiwan;
+不智 < unwise;
+故障 < glitch;
+合法 < lawful;
+名氣 < repute;
+大路 < avenue;
+海報 < poster;
+亦即 < namely;
+經紀人 < broker;
+紅蘿蔔 < carrot;
+悄悄地 < gently;
+暖氣 < heater;
+使﹍能夠 < enable;
+吸收 < absorb;
+意圖 < intent;
+緣飾 < fringe;
+避難所 < refuge;
+周年 < annual;
+白麵兒 < heroin;
+口渴 < thirst;
+針法 < stitch;
+消化 < digest;
+正門 < portal;
+海員 < sailor;
+吐根 < ipecac;
+雙重 < double;
+青苔 < lichen;
+多變 < fickle;
+鉋床 < planer;
+飼養者 < feeder;
+名望 < renown;
+取消 < cancel;
+那邊 < yonder;
+巴斯克 < basque;
+劈開 < cleave;
+酒窩 < dimple;
+動議 < motion;
+放逐 < banish;
+配稱 < worthy;
+活塞 < piston;
+莫斯科 < moscow;
+𥜌 < a\-coat;
+杏仁 < almond;
+月桂樹 < laurel;
+預期 < expect;
+秉公 < justly;
+禱告 < prayer;
+更大 < bigger;
+九十 < ninety;
+破舊 < shabby;
+一帶 < region;
+碧玉 < jasper;
+微薄的 < meagre;
+只是 < merely;
+小淘氣 < rascal;
+惡化 < worsen;
+一局 < inning;
+無法無天 < outlaw;
+未來 < future;
+鄉紳 < squire;
+詭計 < deceit;
+豁免 < exempt;
+心理 < mental;
+牢牢 < firmly;
+風俗 < custom;
+𠀉 < a\-hill;
+創辦 < launch;
+過量 < excess;
+起訴者 < suitor;
+熔解 < fusion;
+石英 < quartz;
+巴拿馬 < panama;
+包管 < assure;
+動脈 < artery;
+最低 < lowest;
+祭司 < priest;
+特此 < hereby;
+雌蕊 < pistil;
+干預 < meddle;
+化石 < fossil;
+捕鯨船 < whaler;
+水泥 < cement;
+水泡 < bubble;
+演說者 < orator;
+蓋爾 < gaelic;
+前輩 < senior;
+擺樣子 < do\-sth;
+副詞 < adverb;
+危機 < crisis;
+不公 < unjust;
+法國 < france;
+沉思 < ponder;
+暗堡 < bunker;
+狗屋 < kennel;
+暴君 < tyrant;
+波斯尼亞 < bosnia;
+三倍 < triple;
+霜白 < frosty;
+否則 < if\-not;
+分鐘 < minute;
+葬禮 < burial;
+水桶 < bucket;
+撤銷 < repeal;
+加拿大 < canada;
+反射 < reflex;
+不丹 < bhutan;
+非洲 < africa;
+剝蝕 < denude;
+一串 < strand;
+纖毛 < cilium;
+石 < stone;
+短 < short;
+快 < rapid;
+在 < be\-at;
+他 < other;
+矢 < arrow;
+到 < go\-to;
+说 < speak;
+迅 < quick;
+地 < earth;
+心 < heart;
+下 < under;
+辭 < words;
+微 < small;
+家 < house;
+御 < drive;
+后 < queen;
+待 < treat;
+还 < still;
+发 < issue;
+彫 < carve;
+想 < think;
+睡 < sleep;
+轉 < shift;
+所 < place;
+輪 < wheel;
+三 < three;
+輕 < light;
+式 < style;
+样 < shape;
+建 < build;
+延 < delay;
+盲 < blind;
+廣 < broad;
+声 < sound;
+工 < labor;
+盆 < basin;
+盃 < glass;
+正 < right;
+庸 < usual;
+女 < woman;
+力 < power;
+躑 < waver;
+因 < cause;
+重 < heavy;
+皇 < royal;
+庇 < cover;
+次 < order;
+口 < mouth;
+白 < white;
+幽 < quiet;
+教 < teach;
+再 < again;
+气 < steam;
+信 < trust;
+北 < north;
+蹲 < squat;
+蹟 < trace;
+幅 < piece;
+入 < enter;
+先 < first;
+水 < water;
+巷 < alley;
+笑 < smile;
+立 < stand;
+跪 < kneel;
+马 < horse;
+巨 < large;
+疑 < doubt;
+利 < gains;
+果 < fruit;
+赧 < blush;
+至 < reach;
+清 < clear;
+物 < thing;
+嵌 < inlay;
+甲 < armor;
+田 < field;
+许 < allow;
+八 < eight;
+崖 < cliff;
+崎 < rough;
+南 < south;
+色 < color;
+瓜 < melon;
+算 < count;
+賊 < thief;
+貯 < store;
+貨 < goods;
+每 < every;
+屬 < class;
+豪 < brave;
+豆 < beans;
+七 < seven;
+尖 < sharp;
+射 < shoot;
+空 < empty;
+技 < skill;
+寺 < court;
+寫 < write;
+英 < petal;
+密 < dense;
+钱 < money;
+容 < looks;
+宵 < night;
+始 < begin;
+客 < guest;
+片 < slice;
+研 < grind;
+早 < early;
+獻 < offer;
+獺 < otter;
+獸 < beast;
+獨 < alone;
+警 < guard;
+存 < exist;
+證 < proof;
+謝 < thank;
+猜 < guess;
+嬉 < enjoy;
+黑 < black;
+謁 < visit;
+剑 < sword;
+乐 < happy;
+级 < level;
+举 < raise;
+证 < prove;
+照 < shine;
+誓 < swear;
+群 < group;
+誂 < tempt;
+伤 < wound;
+断 < sever;
+价 < price;
+脑 < brain;
+规 < rules;
+娑 < dance;
+破 < break;
+泽 < marsh;
+燻 < smoke;
+紧 < tense;
+觸 < touch;
+装 < dress;
+河 < river;
+血 < blood;
+投 < throw;
+奴 < slave;
+刀 < knife;
+襟 < lapel;
+喝 < drink;
+褪 < strip;
+夢 < dream;
+错 < error;
+案 < table;
+印 < print;
+壓 < press;
+烈 < fiery;
+壇 < altar;
+裂 < split;
+袴 < pants;
+墓 < grave;
+炎 < flame;
+灰 < ashes;
+塗 < smear;
+敌 < enemy;
+塔 < tower;
+怀 < bosom;
+罪 < crime;
+蟲 < worms;
+濱 < beach;
+摘 < pluck;
+施 < grant;
+模 < model;
+草 < grass;
+濃 < thick;
+濁 < muddy;
+修 < study;
+味 < taste;
+织 < weave;
+龕 < niche;
+蝿 < flies;
+免 < spare;
+波 < waves;
+潔 < clean;
+洋 < ocean;
+均 < equal;
+奖 < prize;
+顿 < pause;
+漂 < float;
+判 < judge;
+担 < carry;
+板 < plank;
+钟 < clock;
+黐 < stick;
+蛇 < snake;
+构 < frame;
+溺 < drown;
+麦 < wheat;
+溝 < ditch;
+溜 < slide;
+肉 < flesh;
+纸 < paper;
+虚 < false;
+虎 < tiger;
+噌 < scold;
+杂 < mixed;
+怒 < anger;
+稿 < draft;
+渦 < swirl;
+渡 < cross;
+罢 < cease;
+鷺 < heron;
+鷹 < eagle;
+藩 < fence;
+藥 < drugs;
+鲜 < fresh;
+嗅 < smell;
+藁 < straw;
+鶴 < crane;
+枪 < spear;
+涯 < shore;
+涙 < tears;
+配 < match;
+浴 < bathe;
+升 < arise;
+浜 < creek;
+蔭 < shade;
+津 < ferry;
+鬼 < ghost;
+蓮 < lotus;
+避 < avoid;
+亡 < death;
+闪 < flash;
+震 < shake;
+咳 < cough;
+绿 < green;
+咎 < fault;
+纳 < admit;
+呪 < curse;
+童 < child;
+伟 < great;
+汁 < juice;
+荣 < glory;
+吐 < vomit;
+鰌 < loach;
+喊 < shout;
+吉 < lucky;
+逐 < chase;
+叩 < knock;
+检 < check;
+握 < grasp;
+牙 < tooth;
+殖 < breed;
+卿 < noble;
+歯 < teeth;
+歪 < slant;
+棋 < chess;
+魔 < demon;
+腰 < waist;
+梅 < plums;
+钢 < steel;
+茹 < roots;
+欺 < cheat;
+鬚 < beard;
+匙 < spoon;
+匍 < crawl;
+茅 < reeds;
+累 < tired;
+末 < final;
+糊 < paste;
+税 < taxes;
+惯 < habit;
+倾 < upset;
+贸 < trade;
+扫 < sweep;
+吓 < scare;
+剃 < shave;
+刷 < brush;
+羊 < sheep;
+扑 < pound;
+倍 < times;
+冶 < smelt;
+膳 < meals;
+兼 < unite;
+鞋 < shoes;
+挤 < crowd;
+颗 < grain;
+惠 < favor;
+腕 < wrist;
+桃 < peach;
+坡 < slope;
+償 < repay;
+植 < plant;
+脊 < spine;
+椅 < chair;
+肚 < belly;
+棲 < perch;
+肝 < liver;
+疯 < crazy;
+耻 < shame;
+侍 < serve;
+衫 < shirt;
+钻 < drill;
+峡 < gorge;
+韻 < rhyme;
+丑 < clown;
+澳 < inlet;
+疼 < aches;
+档 < shelf;
+玛 < agate;
+靴 < boots;
+傲 < proud;
+霜 < frost;
+吵 < argue;
+邪 < wrong;
+脆 < crisp;
+曳 < trail;
+離 < leave;
+叛 < rebel;
+翼 < wings;
+甜 < sweet;
+隙 < crack;
+傅 < tutor;
+喷 < spurt;
+娶 < marry;
+闇 < close;
+糖 < sugar;
+珊 < coral;
+砸 < smash;
+絞 < twist;
+轨 < track;
+籖 < tally;
+擒 < catch;
+揃 < shear;
+箒 < broom;
+鍮 < brass;
+嗓 < voice;
+啥 < what\?;
+蜜 < honey;
+鋏 < tongs;
+肿 < swell;
+裙 < skirt;
+尿 < urine;
+逮 < seize;
+倡 < guide;
+兜 < pouch;
+魄 < vigor;
+糕 < cakes;
+稚 < young;
+鈍 < blunt;
+禽 < birds;
+憺 < peace;
+链 < chain;
+憬 < rouse;
+凳 < bench;
+酬 < toast;
+灿 < vivid;
+攀 < climb;
+沫 < froth;
+魁 < chief;
+滥 < flood;
+戳 < prick;
+桩 < stake;
+肺 < lungs;
+纱 < gauze;
+陡 < steep;
+烫 < scald;
+鹅 < goose;
+敞 < roomy;
+峨 < lofty;
+虐 < cruel;
+辫 < braid;
+怦 < eager;
+浇 < spray;
+膛 < chest;
+闵 < mourn;
+袜 < socks;
+贿 < bribe;
+墅 < villa;
+秽 < dirty;
+呻 < groan;
+拧 < pinch;
+杠 < lever;
+缎 < satin;
+惮 < dread;
+噗 < burst;
+矶 < jetty;
+簇 < swarm;
+懊 < vexed;
+拇 < thumb;
+铲 < spade;
+哽 < choke;
+冕 < crown;
+疮 < tumor;
+赃 < booty;
+婊 < whore;
+锯 < a\-saw;
+嘈 < noisy;
+缰 < reins;
+讪 < abuse;
+忡 < a\-sad;
+馍 < bread;
+颅 < skull;
+烙 < brand;
+埔 < plain;
+阜 < mound;
+炬 < torch;
+炙 < roast;
+婪 < covet;
+蹑 < tread;
+竺 < india;
+剌 < slash;
+筛 < sieve;
+篡 < usurp;
+鲸 < whale;
+抡 < swing;
+涮 < rinse;
+酵 < yeast;
+橄 < olive;
+雏 < chick;
+涧 < brook;
+腺 < gland;
+忱 < truth;
+蜿 < creep;
+镀 < plate;
+胭 < rouge;
+赳 < grand;
+糠 < chaff;
+帛 < silks;
+鲨 < shark;
+踝 < ankle;
+眈 < gloat;
+倭 < dwarf;
+镐 < stove;
+虱 < louse;
+搐 < cramp;
+戛 < lance;
+呃 < belch;
+榭 < kiosk;
+酪 < cream;
+孀 < widow;
+孪 < twins;
+瞰 < watch;
+氮 < xenon;
+痣 < spots;
+摒 < expel;
+俸 < wages;
+愠 < angry;
+扪 < stoke;
+绉 < crepe;
+珀 < amber;
+诩 < boast;
+芍 < peony;
+褶 < pleat;
+酗 < drunk;
+柠 < lemon;
+诙 < tease;
+绺 < skein;
+釉 < glaze;
+孛 < comet;
+椽 < beams;
+颦 < frown;
+淖 < slush;
+莠 < weeds;
+橛 < a\-peg;
+蒺 < furze;
+翕 < agree;
+霾 < misty;
+砧 < anvil;
+胺 < amine;
+蛭 < leech;
+诨 < jokes;
+怫 < sorry;
+楔 < wedge;
+疽 < ulcer;
+桤 < alder;
+铆 < rivet;
+撺 < hurry;
+肄 < learn;
+孢 < spore;
+鲲 < spawn;
+铨 < weigh;
+豕 < a\-pig;
+笊 < ladle;
+囗 < erect;
+铩 < moult;
+鹑 < quail;
+啁 < chirp;
+醚 < ether;
+琰 < jewel;
+迨 < until;
+鹬 < snipe;
+傈 < tribe;
+铰 < hinge;
+硼 < borax;
+酯 < ester;
+镪 < coins;
+扦 < probe;
+溷 < privy;
+俳 < actor;
+蘖 < stump;
+墀 < porch;
+喈 < music;
+吡 < blame;
+瘊 < warts;
+厣 < shell;
+糅 < blend;
+阏 < block;
+鲂 < bream;
+溽 < moist;
+簏 < a\-box;
+裥 < folds;
+缳 < noose;
+龠 < flute;
+蝤 < larva;
+埭 < a\-dam;
+鲶 < sheat;
+锞 < ingot;
+氡 < radon;
+槭 < maple;
+彘 < swine;
+彖 < a\-hog;
+滗 < drain;
+廑 < a\-hut;
+匏 < gourd;
+篼 < sedan;
+蛞 < snail;
+璁 < \(gem\);
+绗 < baste;
+埘 < roost;
+巴黎 < paris;
+代理人 < agent;
+遊蕩 < stray;
+弄糟 < spoil;
+恩典 < grace;
+大爺 < uncle;
+日本 < japan;
+可可 < cocoa;
+可口 < tasty;
+延緩 < defer;
+姪女 < niece;
+陷落 < slump;
+牛排 < steak;
+隱約 < vague;
+合併 < annex;
+護士 < nurse;
+泊位 < berth;
+獨木舟 < canoe;
+條板箱 < crate;
+陳列臺 < stall;
+遊艇 < barge;
+陰莖 < penis;
+智利 < chile;
+壓碎 < crush;
+每每 < often;
+韓國 < korea;
+石狀 < stony;
+男修道院長 < abbot;
+別號 < alias;
+引用 < quote;
+市長 < mayor;
+爐架 < grate;
+機關 < organ;
+泥水匠 < mason;
+鴉片 < opium;
+植物群 < flora;
+在高處 < aloft;
+撐竿跳 < vault;
+放牧 < graze;
+每日 < daily;
+套房 < suite;
+違礙 < taboo;
+優點 < merit;
+徘徊 < hover;
+視覺 < sight;
+敘利亞 < syria;
+刀葉 < blade;
+摩西 < moses;
+虛張聲勢 < bluff;
+調制解調器 < modem;
+青年 < youth;
+標題 < title;
+氨基 < amino;
+機軸 < arbor;
+醒來 < waken;
+門閂 < latch;
+靈巧 < handy;
+元音 < vowel;
+克隆 < clone;
+整整 < whole;
+匯寄 < remit;
+剁碎 < mince;
+調情 < flirt;
+未成年人 < minor;
+匆忙 < hasty;
+毛巾 < towel;
+芳香 < balmy;
+年級 < grade;
+紫丁香 < lilac;
+散文 < prose;
+不新鮮 < stale;
+西藏 < tibet;
+大農場 < ranch;
+火車 < train;
+死板 < rigid;
+矛柄 < shaft;
+長釘 < spike;
+步槍 < rifle;
+刻痕 < notch;
+選民 < voter;
+魔鬼 < devil;
+新娘 < bride;
+謠傳 < rumor;
+新奇 < novel;
+煤渣 < slack;
+花開 < bloom;
+物主 < owner;
+彈弓 < sling;
+多水分 < juicy;
+報窩 < brood;
+麵包師傅 < baker;
+電影 < movie;
+摸索 < grope;
+速率 < speed;
+破壞 < wreck;
+約莫 < about;
+壁架 < ledge;
+呼叫器 < pager;
+階段 < stage;
+十分 < fully;
+地面 < floor;
+諷刺 < irony;
+白費 < waste;
+運河 < canal;
+八角 < anise;
+陰涼 < shady;
+擦洗 < scour;
+熱忱 < ardor;
+綠洲 < oasis;
+下水道 < sewer;
+固體 < solid;
+僧院 < abbey;
+推選 < elect;
+推進 < impel;
+關節 < joint;
+從來不 < never;
+艦隊 < fleet;
+比分 < score;
+剛果 < congo;
+火花 < spark;
+影像 < image;
+盜竊 < steal;
+麺 < flour;
+麘 < scent;
+鹾 < salty;
+鸲 < mynah;
+二極管 < diode;
+睡椅 < couch;
+競技場 < arena;
+加寬 < widen;
+鴪 < swoop;
+可擦寫可編程祇讀存儲器 < eprom;
+說出 < utter;
+澳門 < aomen;
+推論 < infer;
+糢糊 < foggy;
+鰞 < squid;
+動向 < trend;
+天使 < angel;
+褐色 < brown;
+鬆開 < loose;
+櫸木 < beech;
+部件 < parts;
+軌道 < orbit;
+鬎 < favus;
+閃耀 < glint;
+臭鼬 < skunk;
+髳 < state;
+髲 < a\-wig;
+疾風 < blast;
+攤子 < booth;
+大人 < adult;
+麥阿密 < miami;
+出沒 < haunt;
+駞 < camel;
+道德 < moral;
+發聲 < vocal;
+長老 < elder;
+休息室 < lobby;
+樹籬 < hedge;
+饘 < gruel;
+球狀物 < globe;
+餪 < feast;
+餦 < candy;
+帝王 < regal;
+強光 < glare;
+飶 < odour;
+飑 < storm;
+軌跡 < locus;
+軌距 < gauge;
+補藥 < tonic;
+對敵者 < rival;
+幽暗 < gloom;
+擔懮 < worry;
+榮譽 < honor;
+魔術 < magic;
+鞃 < board;
+靦 < timid;
+霱 < cloud;
+霙 < sleet;
+開端 < start;
+雞冠 < crest;
+陼 < islet;
+阹 < a\-pen;
+切望 < crave;
+冬青樹 < holly;
+標籤 < label;
+镟 < lathe;
+然後 < after;
+那兒 < there;
+钃 < metal;
+圖表 < chart;
+圍裙 < apron;
+粗糙 < crude;
+果子凍 < jelly;
+大地圖 < atlas;
+剪報 < scrap;
+規模 < scale;
+那些 < those;
+鈇 < an\-ax;
+辦法 < means;
+船貨 < cargo;
+歌劇 < opera;
+烏木 < ebony;
+雅各書 < james;
+粉筆 < chalk;
+絕技 < stunt;
+臉頰 < cheek;
+白癡 < idiot;
+角度 < angle;
+發病 < onset;
+感化餅乾 < wafer;
+基本 < basic;
+火焰 < blaze;
+探索 < quest;
+填塞 < stuff;
+糖漿 < syrup;
+粉碎 < crash;
+英代爾 < intel;
+貤 < steps;
+舉起 < heave;
+豔 < plump;
+這天 < today;
+讙 < cheer;
+譁 < noise;
+尼龍 < nylon;
+毛茸茸 < hairy;
+隊伍 < ranks;
+觔 < catty;
+幅度 < width;
+橡木 < oaken;
+精液 < semen;
+床單 < sheet;
+剃刀 < razor;
+蠗 < \(ape\);
+尼日爾 < niger;
+蟢 < caulk;
+凳子 < stool;
+膽量 < nerve;
+蝘 < gecko;
+再會 < adieu;
+檳子 < binzi;
+兩次 < twice;
+修飾 < adorn;
+索引 < index;
+僵硬 < stark;
+蘓 < thyme;
+蘋 < apple;
+工會 < union;
+裂痕 < chasm;
+細小 < petty;
+驅除 < repel;
+樹林 < woods;
+潛行 < sneak;
+垂死 < dying;
+樺木 < birch;
+莿 < thorn;
+公會 < guild;
+苶 < weary;
+收音機 < radio;
+搓揉 < knead;
+臽 < a\-pit;
+臲 < jumpy;
+臛 < broth;
+這些 < these;
+庇佑 < bless;
+假裝 < feign;
+辮子 < plait;
+降下 < lower;
+腡 < lines;
+樓梯 < stair;
+第三次 < third;
+高聲 < aloud;
+尊魚 < trout;
+肕 < tough;
+回答 < reply;
+耞 < flail;
+招待員 < usher;
+簡短 < brief;
+翽 < whirr;
+囤積 < hoard;
+翄 < winds;
+駿馬 < steed;
+罉 < a\-pot;
+色狼 < satyr;
+纻 < ramie;
+轉播 < relay;
+批量 < batch;
+縏 < purse;
+綌 < cloth;
+皮帶 < strap;
+撒但 < satan;
+冰塔 < serac;
+粎 < metre;
+箛 < bugle;
+輕染 < tinge;
+筰 < cable;
+筦 < a\-key;
+竔 < litre;
+招致 < incur;
+一線微光 < gleam;
+穧 < sheaf;
+栗鼠 < bunny;
+巫婆 < witch;
+門廊 < stoop;
+礶 < a\-jug;
+意大利 < italy;
+磈 < rocky;
+烘乾 < parch;
+水平面 < plane;
+公尺 < meter;
+矓 < faint;
+瞏 < round;
+亞麻布 < linen;
+眹 < pupil;
+五花八門 < myrid;
+盎司 < ounce;
+皽 < scurf;
+騎車 < cycle;
+精子 < sperm;
+癡 < silly;
+凌亂 < chaos;
+俚語 < slang;
+紅利 < bonus;
+溜冰鞋 < skate;
+甎 < brick;
+作哼聲 < snort;
+埃及 < egypt;
+製造者 < maker;
+瑔 < \(jade;
+珖 < carat;
+符記 < token;
+喪鐘 < knell;
+脹起 < bulge;
+公噸 < tonne;
+無生命 < inert;
+牜 < an\-ox;
+牔 < gable;
+酪農業 < dairy;
+生苔 < mossy;
+騙術 < trick;
+打製 < forge;
+灣 < a\-bay;
+腐蝕 < rusty;
+水蒸氣 < vapor;
+六十 < sixty;
+公升 < liter;
+似雪 < snowy;
+病毒 < virus;
+推崇 < value;
+路線 < route;
+巨人 < giant;
+像片簿 < album;
+手藝 < craft;
+贈與者 < giver;
+斜紋軟呢 < tweed;
+汳 < henan;
+德克薩斯 < texas;
+馬達 < motor;
+四月 < april;
+殑 < swoon;
+其中 < among;
+歈 < songs;
+欸 < sighs;
+滑翔 < glide;
+天藍色 < azure;
+衰敗 < decay;
+苛刻 < harsh;
+檨 < mango;
+空間 < space;
+樕 < shrub;
+掠奪 < harry;
+察覺 < aware;
+屋簷 < eaves;
+格言 < maxim;
+楅 < buard;
+瓣膜 < valve;
+椈 < cedar;
+棁 < joist;
+圍巾 < scarf;
+寓言 < fable;
+被子 < quilt;
+栍 < a\-lot;
+小舌 < uvula;
+就緒 < ready;
+軀幹 < trunk;
+手肘 < elbow;
+客車 < coach;
+艾姬 < aggie;
+飛行員 < pilot;
+在外 < outer;
+崇拜 < adore;
+充份 < ample;
+高明 < smart;
+痛恨 < abhor;
+痛快 < jolly;
+捐贈者 < donor;
+敔 < gavel;
+西班牙 < spain;
+男爵 < baron;
+固定 < fixed;
+尖細 < taper;
+花俏 < fancy;
+赫茲 < hertz;
+挌 < fight;
+提多書 < titus;
+圍城 < siege;
+扢 < caper;
+致敬 < greet;
+軍團 < corps;
+愃 < relax;
+排列 < array;
+俏皮 < saucy;
+舞弊 < fraud;
+悾 < naive;
+補丁 < patch;
+生麵糰 < dough;
+滿身塵埃 < dusty;
+漿果 < berry;
+阿拉摩 < alamo;
+魅力 < charm;
+漂游 < drift;
+彑 < snout;
+調味肉汁 < gravy;
+潑掉 < spill;
+帒 < a\-bag;
+資金 < funds;
+男高音 < tenor;
+一點兒 < a\-bit;
+嶞 < ridge;
+自我 < self\-;
+果酒 < cider;
+崚 < hilly;
+捷克 < czech;
+用法 < usage;
+存貨 < stock;
+高尚 < nobly;
+拍擊 < smack;
+嫚 < scorn;
+小樹林 < grove;
+布萊爾 < blair;
+在﹍之下 < below;
+在﹍之上 < above;
+激光 < laser;
+安華 < anwar;
+拂掃 < whisk;
+船只 < ships;
+壆 < stiff;
+墺 < walls;
+墍 < paint;
+塙 < truly;
+四十 < forty;
+坰 < wilds;
+撥火棍 < poker;
+噺 < story;
+嗐 < alas\!;
+流體 < fluid;
+喴 < hello;
+啲 < a\-few;
+啍 < creak;
+哶 < bleat;
+咍 < laugh;
+吰 < clang;
+範圍 < range;
+厺 < to\-go;
+厖 < bulky;
+三色紫羅蘭 < pansy;
+修改 < amend;
+有風 < windy;
+驚慌 < panic;
+在旁邊 < aside;
+冧 < a\-bud;
+主題 < theme;
+營業員 < clerk;
+哪裡 < where;
+國際電報電話咨詢委員會 < ccitt;
+警報器 < siren;
+當地 < local;
+倉庫 < depot;
+佺 < fairy;
+伊索 < aesop;
+動態影像 < video;
+三角洲 < delta;
+笑林 < humor;
+威爾士 < wales;
+棚子 < shack;
+䶇 < a\-rat;
+肯尼亞 < kenya;
+男子 < a\-man;
+股票 < share;
+䳱 < ducks;
+麵包皮 < crust;
+肥碩 < stout;
+䯍 < bones;
+石南樹 < heath;
+拴住 < hitch;
+蠢事 < folly;
+䪻 < a\-cap;
+䩕 < clogs;
+下雨 < rainy;
+驚奇 < amaze;
+䨹 < swift;
+噴出 < spout;
+䧪 < sissy;
+䦞 < extra;
+䥓 < a\-hoe;
+䤙 < dregs;
+腱子 < sinew;
+更遲 < later;
+黑貂 < sable;
+䝒 < a\-sow;
+䚟 < horns;
+螺絲釘 < screw;
+䚉 < o\-see;
+沙龍 < salon;
+䗕 < bends;
+保姆 < nanny;
+唱詩班 < choir;
+拉丁 < latin;
+䑁 < fatty;
+會談 < talks;
+脈搏 < pulse;
+䏳 < olein;
+䏯 < moles;
+䍥 < smoky;
+金髮 < blond;
+䍌 < a\-jar;
+三千五百 < 3\-500;
+䌑 < tight;
+䌐 < ropes;
+䊻 < silky;
+小屋 < cabin;
+䈉 < a\-fan;
+嘎嘎 < quack;
+䄥 < a\-god;
+䄢 < pious;
+便士 < penny;
+耶穌 < jesus;
+䃙 < rocks;
+鋼琴 < piano;
+騎士 < rider;
+手套 < glove;
+跟前 < front;
+修剪 < prune;
+㾚 < itchy;
+香料 < spice;
+伺服 < servo;
+租約 < lease;
+㼏 < a\-bad;
+尖塔 < spire;
+嗶嘰 < serge;
+污點 < stain;
+法郎 < franc;
+活著 < alive;
+㺃 < a\-dog;
+㹻 < puppy;
+㹋 < a\-cow;
+肅清 < purge;
+㸃 < a\-dot;
+發牢騷 < whine;
+淹沒 < flush;
+第十 < tenth;
+時髦 < vogue;
+打呼 < snore;
+㰼 < greed;
+餘燼 < ember;
+㯷 < dates;
+第六 < sixth;
+㮥 < sails;
+羽莖 < quill;
+封地 < manor;
+題解 < notes;
+長頸瓶 < flask;
+一行 < party;
+㨗 < alert;
+㨃 < a\-row;
+小吃 < snack;
+安全理事會 < the\-u;
+㧍 < alike;
+珍珠 < pearl;
+鼻煙 < snuff;
+洋蔥 < onion;
+示威運動 < rally;
+趣劇 < farce;
+低廉 < cheap;
+哀痛 < grief;
+第五 < fifth;
+第九 < ninth;
+㡶 < dwell;
+㡐 < flags;
+㡌 < a\-hat;
+㡇 < colar;
+有線 < wired;
+㞾 < a\-nun;
+㞕 < chips;
+㞒 < lusty;
+戲劇 < drama;
+載貨汽車 < lorry;
+罩衫 < smock;
+㖤 < wrath;
+㕎 < caves;
+皺眉頭 < scowl;
+㓝 < a\-law;
+㓁 < a\-net;
+㒩 < naked;
+㒌 < along;
+率直 < frank;
+㐱 < bushy;
+景象 < scene;
+象牙 < ivory;
+喝叱 < chide;
+琴弦 < chord;
+獎章 < medal;
+子房 < ovary;
+怪誕 < freak;
+深度 < depth;
+午餐 < lunch;
+獵犬 < hound;
+理想 < ideal;
+耽擱 < tarry;
+旅館 < hotel;
+馬來 < malay;
+馬伕 < groom;
+大鹿 < moose;
+聖徒 < saint;
+世界 < world;
+伊斯蘭教 < islam;
+減去 < minus;
+人性 < human;
+慈悲 < mercy;
+論題 < topic;
+卡車 < truck;
+罌粟 < poppy;
+斑馬 < zebra;
+套鐘 < chime;
+守候 < abide;
+板岩 < slate;
+頭皮 < scalp;
+卑賤 < lowly;
+升起 < hoist;
+流浪者 < rover;
+貝寧 < benin;
+旋轉 < whirl;
+灌木叢 < scrub;
+日記 < diary;
+乃是 < to\-be;
+新近 < newly;
+吸氣 < sniff;
+誘陷 < snare;
+杓子 < scoop;
+感官 < sense;
+本影 < umbra;
+人員 < staff;
+續訂 < renew;
+更改 < alter;
+吉普賽人 < gypsy;
+收養 < adopt;
+怪異 < weird;
+貓咪 < kitty;
+沼澤 < glade;
+碎布條 < shred;
+污穢 < nasty;
+三月 < march;
+內在的 < inner;
+電郵 < email;
+勝過 < excel;
+證章 < badge;
+海地 < haiti;
+雷達 < radar;
+鬱金香 < tulip;
+失誤 < lapse;
+邊際 < limit;
+狂熱 < craze;
+五十 < fifty;
+雪茄煙 < cigar;
+東京 < tokyo;
+毒蛇 < viper;
+頌歌 < carol;
+咕嚕 < grunt;
+一打 < dozen;
+試金 < assay;
+頭暈 < dizzy;
+吹笛者 < piper;
+一巴掌 < spank;
+焦點 < focus;
+統治者 < ruler;
+纖維 < fiber;
+事件 < event;
+逗點 < comma;
+咆哮 < growl;
+呼叫聲 < whoop;
+邏輯 < logic;
+更壞 < worse;
+座右銘 < motto;
+三稜鏡 < prism;
+中國 < china;
+多葉 < leafy;
+一層 < layer;
+燻肉 < bacon;
+擢陞 < exalt;
+愛克斯光 < x\-ray;
+大腿 < thigh;
+本人 < i\-\(me;
+韻文 < verse;
+熊貓 < panda;
+斑羚 < goral;
+矮墩墩 < pudgy;
+葡萄 < grape;
+獎品 < award;
+黏住 < cling;
+可怕 < awful;
+過道 < aisle;
+礦工 < miner;
+歌謠 < chant;
+沙拉 < salad;
+斗篷 < cloak;
+月份 < month;
+雛菊 < daisy;
+包穀 < maize;
+阿爾法 < alpha;
+逼迫 < force;
+媒介 < media;
+哪一個 < which;
+教義 < creed;
+合股線 < twine;
+頁岩 < shale;
+瑞典人 < swede;
+厭惡 < loath;
+使羞愧 < abash;
+昏暗 < dusky;
+比率 < ratio;
+霎眼 < blink;
+晴天 < sunny;
+男子氣 < manly;
+使娛樂 < amuse;
+有 < have;
+知 < know;
+这 < this;
+矜 < pity;
+忙 < busy;
+来 < come;
+近 < near;
+道 < path;
+也 < also;
+时 < time;
+年 < year;
+瞻 < look;
+辺 < edge;
+就 < just;
+那 < that;
+生 < life;
+自 < self;
+瞬 < wink;
+过 < pass;
+循 < obey;
+從 < from;
+多 < much;
+好 < good;
+起 < rise;
+只 < only;
+作 < make;
+当 < bear;
+形 < form;
+开 < open;
+手 < hand;
+弱 < weak;
+本 < root;
+头 < head;
+真 < real;
+面 < face;
+公 < fair;
+同 < same;
+动 < move;
+长 < long;
+載 < load;
+将 < will;
+身 < body;
+高 < high;
+把 < hold;
+盥 < wash;
+月 < moon;
+种 < seed;
+軍 < army;
+車 < cart;
+部 < part;
+名 < name;
+皮 < skin;
+机 < desk;
+给 < give;
+等 < rank;
+座 < seat;
+很 < very;
+最 < most;
+店 < shop;
+躍 < skip;
+走 < walk;
+四 < four;
+门 < gate;
+东 < east;
+庁 < hall;
+西 < west;
+平 < flat;
+听 < hear;
+幸 < luck;
+蹴 < kick;
+五 < five;
+帷 < tent;
+帶 < belt;
+希 < rare;
+踊 < leap;
+书 < book;
+九 < nine;
+跳 < jump;
+路 < road;
+痩 < thin;
+活 < live;
+左 < left;
+巣 < nest;
+表 < show;
+跟 < heel;
+痛 < pain;
+痕 < scar;
+痒 < itch;
+感 < feel;
+足 < foot;
+金 < gold;
+何 < what;
+更 < more;
+疋 < roll;
+做 < work;
+计 < plan;
+王 < king;
+各 < each;
+留 < stop;
+畏 < fear;
+男 < male;
+风 < wind;
+崗 < post;
+毛 < hair;
+峰 < peak;
+爱 < love;
+瓦 < tile;
+賣 < sell;
+賃 < rent;
+貸 < lend;
+岸 < bank;
+结 < knot;
+岬 < cape;
+流 < flow;
+貧 < poor;
+青 < blue;
+管 < pipe;
+连 < join;
+队 < team;
+屑 < bits;
+领 < neck;
+屈 < bend;
+尾 < tail;
+半 < half;
+候 < wait;
+步 < step;
+深 < deep;
+区 < area;
+尋 < seek;
+球 < ball;
+告 < tell;
+寸 < inch;
+满 < fill;
+李 < plum;
+息 < rest;
+寒 < cold;
+寄 < send;
+取 < take;
+室 < room;
+宛 < seem;
+孩 < baby;
+广 < wide;
+玉 < jade;
+火 < fire;
+讀 < read;
+譽 < fame;
+则 < rule;
+失 < lose;
+包 < wrap;
+猶 < like;
+落 < fall;
+济 < help;
+謡 < sing;
+编 < knit;
+谈 < talk;
+拉 < pull;
+狼 < wolf;
+杀 < kill;
+嫌 < hate;
+克 < gram;
+冲 < soar;
+推 < push;
+称 < call;
+試 < test;
+号 < mark;
+亚 < asia;
+港 < port;
+般 < sort;
+爪 < claw;
+刚 < hard;
+陆 < land;
+确 < sure;
+具 < tool;
+威 < pomp;
+线 < line;
+触 < butt;
+角 < horn;
+燒 < burn;
+妻 < wife;
+需 < need;
+酒 < wine;
+铁 < iron;
+覗 < peek;
+医 < cure;
+襲 < raid;
+煮 < cook;
+土 < soil;
+软 < soft;
+煤 < coal;
+套 < case;
+户 < door;
+背 < back;
+暗 < dark;
+须 < must;
+裸 < bare;
+树 < tree;
+沉 < sink;
+职 < duty;
+细 < fine;
+補 < mend;
+袢 < robe;
+旁 < side;
+塵 < dust;
+塩 < salt;
+歌 < song;
+灌 < pour;
+塀 < wall;
+堤 < dike;
+恶 < evil;
+堆 < heap;
+慢 < slow;
+堀 < cave;
+蟻 < ants;
+藏 < hide;
+埋 < bury;
+澹 < calm;
+垢 < dirt;
+融 < melt;
+潮 < tide;
+救 < save;
+丝 < silk;
+齊 < even;
+鼻 < nose;
+漬 < soak;
+鼓 < drum;
+漏 < leak;
+录 < copy;
+遇 < meet;
+船 < ship;
+黴 < mold;
+滴 < drip;
+雨 < rain;
+蛙 < frog;
+滑 < slip;
+麻 < hemp;
+蚤 < flea;
+鹿 < deer;
+沙 < sand;
+噛 < bite;
+拍 < clap;
+掉 < turn;
+哭 < weep;
+嘆 < sigh;
+午 < noon;
+卡 < card;
+雪 < snow;
+淵 < gulf;
+涼 < cool;
+刺 < stab;
+薪 < fuel;
+鱼 < fish;
+喘 < pant;
+盘 < tray;
+薔 < rose;
+架 < rack;
+款 < item;
+浪 < wave;
+蕩 < pond;
+洪 < vast;
+镇 < town;
+浄 < pure;
+旅 < trip;
+唾 < spit;
+骨 < bone;
+唖 < dumb;
+鴉 < crow;
+唇 < lips;
+泳 < dive;
+哲 < wise;
+哩 < mile;
+圣 < holy;
+鳥 < bird;
+晓 < dawn;
+沼 < lake;
+腿 < legs;
+探 < find;
+葦 < reed;
+池 < pool;
+葉 < leaf;
+束 < bind;
+呆 < dull;
+吻 < kiss;
+吹 < blow;
+氏 < clan;
+签 < sign;
+氈 < felt;
+奶 < milk;
+菩 < herb;
+叢 < bush;
+挂 < hang;
+航 < sail;
+拳 < fist;
+乘 < ride;
+址 < site;
+毆 < beat;
+魂 < soul;
+乔 < tall;
+粮 < food;
+敏 < fast;
+茎 < stem;
+零 < zero;
+勾 < hook;
+乃 < then;
+抬 < lift;
+苔 < moss;
+冒 < risk;
+檣 < mast;
+闭 < shut;
+碗 < bowl;
+剥 < peel;
+蛋 < eggs;
+促 < urge;
+杰 < hero;
+舟 < boat;
+迟 < late;
+赖 < rely;
+駒 < colt;
+馴 < tame;
+膝 < knee;
+拖 < drag;
+昏 < dusk;
+戒 < warn;
+页 < page;
+井 < well;
+脇 < ribs;
+乏 < lack;
+胞 < womb;
+梨 < pear;
+酸 < tart;
+桶 < pail;
+绩 < spin;
+擦 < wipe;
+殷 < many;
+耕 < plow;
+暖 < warm;
+锁 < lock;
+砍 < hack;
+慈 < kind;
+羹 < soup;
+鞭 < whip;
+羨 < envy;
+撤 < omit;
+筹 < chip;
+杖 < cane;
+霰 < hail;
+滋 < grow;
+谱 < list;
+丘 < hill;
+杆 < pole;
+隈 < cove;
+纂 < edit;
+唉 < alas;
+笼 < cage;
+繪 < draw;
+繩 < rope;
+矿 < mine;
+镖 < dart;
+兆 < omen;
+披 < wear;
+债 < debt;
+堡 < fort;
+颂 < laud;
+絆 < loop;
+钉 < nail;
+哄 < coax;
+铃 < bell;
+契 < deed;
+懒 < lazy;
+猎 < hunt;
+摺 < fold;
+箋 < note;
+捲 < curl;
+秃 < bald;
+鸭 < duck;
+吼 < roar;
+窺 < peep;
+叠 < pile;
+銑 < mill;
+逸 < flee;
+贱 < mean;
+狮 < lion;
+妮 < maid;
+窑 < kiln;
+慾 < lust;
+祷 < pray;
+蹄 < hoof;
+烤 < bake;
+尬 < limp;
+週 < week;
+怠 < idle;
+胶 < glue;
+梳 < comb;
+啤 < beer;
+酿 < brew;
+捣 < hull;
+噢 < moan;
+窟 < hole;
+兑 < cash;
+沸 < boil;
+瘾 < rash;
+妞 < girl;
+帜 < flag;
+蕾 < buds;
+铅 < lead;
+锣 < gong;
+嗦 < suck;
+轴 < axle;
+涕 < tear;
+吆 < bawl;
+聋 < deaf;
+募 < levy;
+皂 < soap;
+蟹 < crab;
+唠 < chat;
+啃 < gnaw;
+羔 < lamb;
+锈 < rust;
+腓 < calf;
+骡 < mule;
+醇 < rich;
+纬 < woof;
+蛤 < clam;
+呱 < wail;
+戎 < arms;
+蔼 < lush;
+礁 < reef;
+闩 < bolt;
+跛 < lame;
+偌 < thus;
+箍 < hoop;
+蟠 < coil;
+掂 < heft;
+遐 < afar;
+吠 < bark;
+蛾 < moth;
+耘 < weed;
+蟾 < toad;
+筏 < raft;
+鲤 < carp;
+芋 < taro;
+鹪 < wren;
+蜕 < molt;
+焊 < weld;
+耙 < rake;
+缄 < seal;
+漩 < eddy;
+饵 < bait;
+谑 < jeer;
+颏 < chin;
+芮 < tiny;
+璨 < gems;
+泵 < pump;
+豌 < peas;
+堑 < moat;
+疵 < flaw;
+榈 < palm;
+鬃 < mane;
+咝 < hiss;
+邋 < rags;
+胤 < heir;
+粕 < lees;
+挞 < flog;
+镫 < lamp;
+阄 < lots;
+锌 < zinc;
+喙 < beak;
+肛 < anus;
+痂 < scab;
+鸢 < kite;
+轭 < yoke;
+洵 < true;
+泅 < swim;
+矾 < alum;
+蚩 < worm;
+鸷 < hawk;
+耋 < aged;
+坨 < lump;
+疱 < acne;
+爨 < oven;
+拊 < slap;
+骟 < geld;
+圹 < tomb;
+龈 < gums;
+阋 < feud;
+酰 < acyl;
+疣 < wart;
+穑 < farm;
+礻 < cult;
+佤 < kawa;
+麸 < bran;
+菖 < iris;
+嫱 < lady;
+谝 < brag;
+氖 < neon;
+跖 < sole;
+蚋 < gnat;
+偾 < ruin;
+疒 < sick;
+噍 < chew;
+洳 < damp;
+炱 < soot;
+膪 < pork;
+绲 < cord;
+宀 < roof;
+帶露 < dewy;
+薄命 < \(usu;
+功績 < feat;
+暴亂 < riot;
+爛泥 < ooze;
+日期 < date;
+姨媽 < aunt;
+伊拉克 < iraq;
+幽谷 < dell;
+教皇 < pope;
+向下 < down;
+速行 < rush;
+有能力 < able;
+這裡 < here;
+缺口 < nick;
+原子 < atom;
+狂吠 < howl;
+心情 < mood;
+野兔 < hare;
+基金 < fund;
+埃米爾 < emir;
+石片 < slab;
+咖啡館 < cafe;
+冰鎮 < iced;
+熾熱 < glow;
+石灰 < lime;
+皮鞭 < lash;
+冷酷 < grim;
+硬幣 < coin;
+凝視 < gaze;
+教派 < sect;
+公雞 < cock;
+角色 < role;
+纖度 < size;
+奉承 < fawn;
+露齒而笑 < grin;
+課文 < text;
+長靴 < boot;
+牢固 < firm;
+百靈 < lark;
+通行稅 < toll;
+玉蜀黍 < corn;
+透紅 < rosy;
+數據 < data;
+詩歌 < poem;
+小毛蟲 < slug;
+樂隊 < band;
+氣味 < odor;
+無禮 < rude;
+都市 < city;
+西薄 < cake;
+最主要 < main;
+雪撬 < sled;
+遨游 < roam;
+毒害 < bane;
+猶他州 < utah;
+細胞 < cell;
+卑劣 < base;
+復原 < heal;
+別的 < else;
+公豬 < boar;
+調子 < tune;
+眼看 < soon;
+面具 < mask;
+弧形 < arch;
+使受傷 < hurt;
+瘦長 < slim;
+花邊 < lace;
+填滿 < cram;
+諾亞 < noah;
+外套 < coat;
+長襪 < hose;
+立方體 < cube;
+長袍 < gown;
+強姦 < rape;
+照料 < tend;
+採邑 < fief;
+掠過 < flit;
+灰色 < gray;
+白骨頂 < coot;
+細看 < peer;
+黶 < mole;
+褪色 < fade;
+麚 < buck;
+適應 < suit;
+麌 < stag;
+麃 < till;
+鹆 < myna;
+一角銀幣 < dime;
+剝掉 < pare;
+郵件 < mail;
+瞑想 < muse;
+遊戲 < game;
+節點 < node;
+騯 < loud;
+駽 < grey;
+捲軸 < reel;
+饌 < feed;
+散出 < shed;
+飡 < meal;
+巢穴 < lair;
+洋娃娃 < doll;
+阿曼 < oman;
+廠子 < yard;
+躲避 < shun;
+熱力 < heat;
+阞 < vein;
+下一次 < next;
+淺黃色 < buff;
+闆 < boss;
+簽証 < visa;
+鳴叫 < hoot;
+镩 < pick;
+镕 < fuse;
+鑢 < file;
+鐩 < lens;
+收割 < reap;
+網孔 < mesh;
+雜亂 < mess;
+掉落 < flop;
+飲食療養 < diet;
+詩人 < bard;
+大袋子 < sack;
+表象 < idea;
+舒適 < cozy;
+英畝 < acre;
+步伐 < pace;
+轗 < fail;
+接縫 < seam;
+公牛 < bull;
+粗砂 < grit;
+公爵 < duke;
+跼 < bent;
+出租車 < taxi;
+跲 < hood;
+菜單 < menu;
+橫樑 < beam;
+賵 < gift;
+術語 < term;
+剛勁 < bold;
+衚衕 < lane;
+艾絨 < moxa;
+誧 < huge;
+觝 < gore;
+先見者 < seer;
+花瓶 < vase;
+蠭 < bees;
+機智 < tact;
+傾聽 < hark;
+螉 < wasp;
+鐘頭 < hour;
+蘒 < \:143;
+藟 < vine;
+炸彈 < bomb;
+回聲 < echo;
+蓫 < dock;
+解凍 < thaw;
+萜 < c5h8;
+菾 < beet;
+長槍 < pike;
+六月 < june;
+僱用 < hire;
+圓盤 < disk;
+地獄 < hell;
+爵士舞 < jazz;
+阿們 < amen;
+腶 < meat;
+脲 < urea;
+路邊 < curb;
+視圖 < view;
+撇去 < skim;
+農奴 < serf;
+艾滋病 < aids;
+帳單 < bill;
+草坪 < lawn;
+搶奪 < snap;
+電燈泡 < bulb;
+竁 < bore;
+穜 < rice;
+禸 < rump;
+價款 < cost;
+樣式 < type;
+損害 < harm;
+模式 < mode;
+盟友 < ally;
+矻 < toil;
+疼痛 < ache;
+樓廂 < loft;
+目瞪口呆 < stun;
+屁話 < shit;
+鏈路 < link;
+猶大書 < jude;
+低音 < bass;
+用膳 < dine;
+笑話 < joke;
+山羊 < goat;
+競賽 < race;
+笨蛋 < fool;
+岩石 < rock;
+略碼 < code;
+涴 < daub;
+較少 < less;
+百合 < lily;
+腰肉 < loin;
+地帶 < zone;
+閣下 < sire;
+龍骨 < keel;
+大頭釘 < tack;
+保羅 < paul;
+色彩 < tint;
+檍 < ilex;
+槹 < spar;
+捲帶 < tape;
+椑 < oval;
+鍍金 < gild;
+指標 < norm;
+衝撞 < dash;
+柣 < sill;
+岩漿 < lava;
+柂 < helm;
+握住 < grip;
+朘 < wane;
+圓屋頂 < dome;
+擫 < tuck;
+策略 < plot;
+摲 < raze;
+搘 < prop;
+亞麻 < flax;
+掞 < easy;
+圈套 < trap;
+雙胞胎 < twin;
+籃圈 < ring;
+膽汁 < gall;
+憰 < wily;
+怳 < wild;
+採伐 < fell;
+一塊麵 < loaf;
+電機及電子學工程師聯合會 < ieee;
+借款 < loan;
+到﹍之上 < onto;
+袖口 < cuff;
+全體人員 < crew;
+使用者 < user;
+秘魯 < peru;
+僧侶 < monk;
+孻 < last;
+拖拉 < haul;
+媊 < star;
+娸 < ugly;
+遠程監控 < rmon;
+在﹍之中 < amid;
+圍住 < gird;
+姤 < mate;
+棍棒 < club;
+拍打 < flap;
+飾釘 < stud;
+偏差 < bias;
+骰子 < dice;
+聖詩 < hymn;
+外小腿 < shin;
+鋪設 < pave;
+吽 < ''om'';
+蛋白石 < opal;
+枯萎 < wilt;
+刜 < chop;
+刓 < trim;
+一分錢 < cent;
+疲倦 < tire;
+賢能 < sage;
+海軍 < navy;
+臭味 < fume;
+侜 < lies;
+伱 < thou;
+偶像 < idol;
+小起重機 < jack;
+跨度 < span;
+䳼 < gull;
+果肉 < pulp;
+䱴 < tuna;
+䯕 < bony;
+命運 < fate;
+字節 < byte;
+羅馬 < rome;
+考試 < exam;
+䧻 < dove;
+倍塔 < beta;
+圓錐體 < cone;
+悠閒 < ease;
+伯爵 < earl;
+周遊 < tour;
+䡀 < nude;
+䠏 < feet;
+䚽 < news;
+琵琶 < lute;
+䙊 < arid;
+膠卷 < film;
+䖭 < grub;
+專用集成電路 < asic;
+䒺 < clay;
+品脫 < pint;
+小島 < isle;
+薄霧 < mist;
+何時 < when;
+口頭 < oral;
+令狀 < writ;
+䁆 < eyes;
+䁅 < rage;
+蕨類 < fern;
+䀀 < cups;
+㿙 < full;
+㾹 < lean;
+抓住 < grab;
+蜂蜜酒 < mead;
+核心 < core;
+決鬥 < duel;
+豆腐 < tofu;
+咒罵 < damn;
+㲻 < sunk;
+㲴 < mind;
+㲜 < rugs;
+㰫 < glad;
+㰟 < hope;
+㮤 < pine;
+蜂房 < hive;
+㮒 < wood;
+㫱 < mild;
+馬廄 < barn;
+亞當 < adam;
+翅膀 < wing;
+金屬薄片 < foil;
+伊朗 < iran;
+主義 < \-ism;
+麥芽 < malt;
+狹谷 < glen;
+牡鹿 < hart;
+在之上 < over;
+名詞 < noun;
+存根 < stub;
+頭腦清楚 < sane;
+㚧 < agil;
+史詩 < epic;
+貴婦人 < dame;
+家園 < home;
+牛飲 < gulp;
+賺得 < earn;
+豎琴 < harp;
+一群 < gang;
+音調 < tone;
+板條 < lath;
+貴族 < lord;
+哈欠 < yawn;
+豬油 < lard;
+錫安 < zion;
+獵物 < prey;
+紅寶石 < ruby;
+犯規 < foul;
+軟木塞 < cork;
+油膏 < balm;
+班房 < jail;
+斑點 < spot;
+浮標 < buoy;
+家伙 < chap;
+後面 < rear;
+天鵝 < swan;
+整齊 < tidy;
+在水步行 < wade;
+母馬 < mare;
+字型 < font;
+安全 < safe;
+粉紅色 < pink;
+孤單 < lone;
+木桶 < cask;
+飾帶 < sash;
+老撾 < laos;
+朦朧 < blur;
+課題 < task;
+珠子 < bead;
+呼呼聲 < whir;
+快步跑 < trot;
+波特 < baud;
+野禽 < fowl;
+暈眩 < daze;
+說謊者 < liar;
+某些 < some;
+強風 < gale;
+麻木 < numb;
+陪審團 < jury;
+韁繩 < rein;
+否決 < veto;
+沙發 < sofa;
+他們 < they;
+泡沫 < foam;
+牛肉 < beef;
+七月 < july;
+一服 < dose;
+豆子 < bean;
+媽媽 < mama;
+敏銳 < keen;
+油油 < oily;
+包裝 < pack;
+污痕 < blot;
+猛撞 < slam;
+面罩 < veil;
+鞭痕 < welt;
+亞丁 < aden;
+獨奏 < solo;
+沐浴 < bath;
+最好 < best;
+誓詞 < oath;
+動詞 < verb;
+高爾夫球 < golf;
+暴徒 < thug;
+汽水 < soda;
+短襪 < sock;
+引證 < cite;
+鈕帶 < bond;
+前面 < fore;
+陣風 < gust;
+惡劣 < vile;
+毛線 < yarn;
+北約 < nato;
+重擊 < bang;
+步調 < gait;
+通風 < airy;
+變換 < vary;
+蒼白 < pale;
+水滴 < drop;
+織布機 < loom;
+電話鈴聲 < buzz;
+收藏 < keep;
+電線 < wire;
+一吹 < puff;
+毛皮 < pelt;
+運費 < fare;
+壁虱 < tick;
+撥開 < poke;
+迷陣 < maze;
+藥丸 < pill;
+光纖分佈數據接口 < fddi;
+露營 < camp;
+毒物 < pest;
+一 < one;
+人 < man;
+我 < our;
+大 < big;
+上 < top;
+你 < you;
+可 < may;
+她 < she;
+天 < sky;
+而 < and;
+然 < yes;
+没 < not;
+日 < sun;
+彩 < hue;
+十 < ten;
+用 < use;
+眼 < eye;
+见 < see;
+老 < old;
+两 < two;
+外 < out;
+法 < law;
+点 < dot;
+盜 < rob;
+其 < his;
+儿 < son;
+新 < new;
+床 < bed;
+皆 < all;
+海 < sea;
+少 < few;
+帽 < hat;
+叫 < cry;
+死 < die;
+放 < put;
+今 < now;
+赤 < red;
+畢 < end;
+战 < war;
+購 < buy;
+瓶 < jug;
+请 < ask;
+交 < mix;
+吃 < eat;
+运 < run;
+网 < net;
+飞 < fly;
+猿 < ape;
+猫 < cat;
+猪 < pig;
+坐 < sit;
+謂 < say;
+狗 < dog;
+切 < cut;
+誤 < err;
+热 < hot;
+牛 < cow;
+低 < low;
+仍 < yet;
+脚 < leg;
+奈 < but;
+排 < row;
+壞 < bad;
+湾 < bay;
+墨 < ink;
+術 < art;
+濘 < mud;
+濕 < wet;
+露 < dew;
+齢 < age;
+蝙 < bat;
+蝋 < wax;
+鼠 < rat;
+蜂 < bee;
+摇 < wag;
+油 < oil;
+藉 < mat;
+液 < sap;
+薯 < yam;
+耳 < ear;
+喋 < nag;
+啜 < sip;
+哀 < sad;
+冰 < ice;
+杯 < cup;
+氣 < air;
+萌 < bud;
+途 < way;
+茶 < tea;
+卵 < egg;
+播 < sow;
+臂 < arm;
+欷 < sob;
+匚 < box;
+摩 < rub;
+冠 < cap;
+芸 < rue;
+缘 < hem;
+染 < dye;
+膿 < pus;
+榻 < cot;
+円 < yen;
+腐 < rot;
+脂 < fat;
+援 < aid;
+哼 < hum;
+偵 < spy;
+顎 < jaw;
+罐 < jar;
+捷 < win;
+霧 < fog;
+乾 < dry;
+缝 < sew;
+抚 < pat;
+挖 < dig;
+扇 < fan;
+乞 < beg;
+赌 < bet;
+欠 < owe;
+氛 < gas;
+締 < tie;
+炒 < fry;
+锡 < tin;
+坑 < pit;
+撕 < rip;
+磕 < hit;
+谎 < lie;
+銜 < bit;
+赋 < tax;
+囊 < bag;
+搂 < hug;
+弓 < bow;
+庐 < hut;
+毯 < rug;
+钥 < key;
+斧 < axe;
+蹦 < hop;
+迢 < far;
+蚂 < ant;
+锄 < hoe;
+捅 < jab;
+桨 < oar;
+狸 < fox;
+猖 < mad;
+趾 < toe;
+蘸 < dip;
+琦 < gem;
+畸 < odd;
+坯 < dam;
+鳝 < eel;
+怩 < shy;
+黠 < sly;
+锛 < adz;
+麋 < elk;
+鳍 < fin;
+刍 < mow;
+柞 < oak;
+鞣 < tan;
+僖 < joy;
+羝 < ram;
+埤 < add;
+空白點 < gap;
+求愛 < woo;
+同位 < par;
+為甚麼 < why;
+受到 < get;
+可以 < can;
+酒廊 < bar;
+男孩子 < boy;
+液晶顯示 < lcd;
+破布 < rag;
+強拉 < tug;
+無花果 < fig;
+經由 < via;
+設法 < try;
+如何 < how;
+眼界 < ken;
+幼獸 < cub;
+離子 < ion;
+貓叫聲 < mew;
+焦油 < tar;
+退潮 < ebb;
+齣 < act;
+火腿 < ham;
+鹋 < emu;
+陰暗 < dim;
+總和 < sum;
+鴞 < owl;
+鲕 < roe;
+鬷 < pot;
+鬆 < lax;
+髢 < wig;
+砍伐 < hew;
+刺探 < pry;
+常春藤 < ivy;
+鑯 < awl;
+烏合之眾 < mob;
+前夕 < eve;
+堅果 < nut;
+轑 < rut;
+踶 < paw;
+先生 < sir;
+欄圈 < pen;
+小精靈 < elf;
+親屬 < kin;
+索具裝置 < rig;
+拖車 < tow;
+填充 < pad;
+公共汽車 < bus;
+蒴 < pod;
+老天爺 < god;
+零點六 < 0\.6;
+樅樹 < fir;
+甜酒 < rum;
+羇 < inn;
+出價 < bid;
+傳真 < fax;
+苦惱 < ail;
+六點六 < 6\.6;
+骨罈 < urn;
+軟毛 < fur;
+砲 < gun;
+癙 < ill;
+輕打 < tap;
+小費 < tip;
+榆樹 < elm;
+潚 < gay;
+工作 < job;
+肋骨 < rib;
+楎 < peg;
+梩 < hod;
+體育館 < gym;
+杅 < tub;
+七點五 < 7\.5;
+七點二 < 7\.2;
+地圖 < map;
+攵 < rap;
+動物園 < zoo;
+鬆弛 < sag;
+餡餅 < pie;
+圖像互換格式 < gif;
+射線 < ray;
+鋸開 < saw;
+果醬 < jam;
+圍兜 < bib;
+嬛 < apt;
+猶太人 < jew;
+拖把 < mop;
+么點 < ace;
+小狗 < pup;
+貨車 < van;
+圓形木材 < log;
+點頭 < nod;
+對準 < aim;
+噴射 < jet;
+傢伙 < guy;
+乢 < lid;
+驢子 < ass;
+飛蟲 < bug;
+筆尖 < nib;
+䡜 < car;
+麥酒 < ale;
+修女 < nun;
+䝆 < hog;
+會費 < due;
+乾草 < hay;
+䌢 < raw;
+䋞 < web;
+䊑 < pay;
+屢加 < ply;
+九七年 < ''97;
+圓形麵包 < bun;
+安放 < lay;
+㜸 < sin;
+計乘車 < cab;
+頌詞 < ode;
+脫氧核糖核酸 < dna;
+杜松子酒 < gin;
+何人 < who;
+燕麥 < oat;
+母雞 < hen;
+礦石 < ore;
+怕羞 < coy;
+任何 < any;
+流感 < flu;
+哎喲 < hey;
+方舟 < ark;
+爆聲 < pop;
+收費 < fee;
+母羊 < ewe;
+小伙子 < lad;
+別針 < pin;
+平鍋 < pan;
+不 < no;
+为 < do;
+之 < ''s;
+徃 < go;
+于 < in;
+如 < if;
+或 < or;
+它 < it;
+咱 < us;
+哟 < ah;
+嗨 < hi;
+彝 < yi;
+锱 < oz;
+钔 < md;
+伲 < we;
+镤 < pa;
+镎 < np;
+铹 < lr;
+向上地 < up;
+锿 < es;
+锝 < tc;
+锕 < ac;
+光碟 < cd;
+繄 < be;
+糎 < mm;
+粨 < hm;
+粁 < km;
+籵 < dm;
+嚇聲 < ho;
+祂 < he;
+我的 < my;
+嗈 < oh;
+咁 < so;
+兡 < hg;
+兞 < mg;
+兝 < dg;
+斧頭 < ax;
+余 < i;
+樶 < c;
+一個 < a;
+政府機關開放系統互連總則 > government\-open\-system\-interconnection\-profile;
+電機及電子學工程師聯合會 > ieee;
+國際電話電報諮詢委員會 > international\-consultative\-committee\-for\-telephone\-and\-telegraph;
+阿不來提\.阿不都熱西提 > abdulaidi\-amudurexiti\-\(chairman\-of\-xinjiang\-autonomous\-region\);
+可擦寫可編程祇讀存儲器 > eprom;
+國際電報電話咨詢委員會 > ccitt;
+耶穌基督末世聖徒教會 > the\-church\-of\-jesus\-christ\-of\-latter\-day\-saints;
+十億位元以太網絡聯盟 > gigabit\-ethernet\-alliance;
+檔案轉送存取及管理 > file\-transfer\,\-access\-and\-management;
+非對稱式數據用戶線 > asymmetrical\-digital\-subscriber\-line;
+臨時的本地管理接口 > interim\-local\-management\-interface;
+聯邦電信交通委員會 > federal\-communications\-commission;
+電腦輔助設計與繪圖 > computer\-aided\-design\-and\-drawing;
+光纖分佈式數據介面 > fiber\-distributed\-data\-interface;
+光纖分散式資料介面 > fiber\-distributed\-data\-interface;
+數據鏈路連接識別碼 > data\-link\-connection\-identifier;
+電腦與電話系統整合 > computer\-telephony\-integration;
+塞爾維亞克羅地亞語 > serbo\-croatian\-\(language\);
+禁止核武器試驗條約 > nuclear\-test\-ban\-treaty;
+老驥伏櫪志在千里 > \(lit\.\)\-an\-old\-steed\-in\-the\-stable\-still\-aspires\-to\-gallop\-1000\-li;
+不入虎穴焉得虎子 > how\-can\-you\-catch\-tiger\-cubs\-without\-entering\-the\-tiger''s\-lair;
+比上不足比下有余 > fall\-short\-of\-the\-best\-but\-be\-better\-than\-the\-worst;
+北大西洋公約組織 > the\-north\-atlantic\-treaty\-organization\-\(nato\);
+不經一事不長一智 > you\-can''t\-gain\-knowledge\-without\-practice;
+建立正式外交關係 > formally\-establish\-diplomatic\-relations;
+百足之蟲死而不僵 > a\-centipede\-dies\-but\-never\-falls\-down;
+安全與交換委員會 > securities\-and\-exchange\-communication;
+綜合服務數位網絡 > integrated\-services\-digital\-network;
+整體服務數位網路 > integrated\-services\-digital\-network;
+簡單網絡管理協議 > simple\-network\-management\-protocol;
+整體數位服務網路 > integrated\-service\-digital\-network;
+公共交換電話網路 > public\-switched\-telephone\-network;
+近乎同步數位階層 > plesiochronous\-digital\-hierarchy;
+日本電報電話公司 > nippon\-telegraph\-and\-telephone;
+廣播和未知服務器 > broadcast\-and\-unknown\-server;
+百尺杆頭更盡一步 > make\-still\-further\-progress;
+國際貨幣基金組織 > international\-monetary\-fund;
+客戶機服務器環境 > client\-server\-environement;
+電子郵件傳送服務 > \(e\-\)mail\-delivery\-service;
+用戶到網絡的接口 > user\-network\-interface;
+亞洲與太平洋地區 > asia\-pacific\-region;
+十億位元以太網絡 > gigabit\-ethernet;
+光纖分佈數據接口 > fddi;
+不見棺材不落淚 > not\-shed\-a\-tear\-until\-one\-sees\-the\-coffin\-\-\-refuse\-to\-be\-convinced\-until\-one\-is\-faced\-with\-grim\-reality;
+不到黃河心不死 > not\-stop\-until\-one\-reaches\-the\-huanghe\-river\-\-\-not\-stop\-until\-one\-reaches\-one''s\-goal;
+閉塞眼睛捉麻雀 > try\-to\-catch\-sparrows\-with\-one''s\-eyes\-blindfolded\-\-\-act\-blindly;
+斯特凡諾普洛斯 > stephanopoulos\-\(eg\,\-former\-clinton\-aide\-george\-stephanopoulos\);
+人民英雄紀念碑 > monument\-to\-the\-people''s\-heroes\,\-at\-tiananmen\-square;
+按下葫蘆浮起瓢 > solve\-one\-problem\-only\-to\-find\-another\-cropping\-up;
+不敢越雷池一步 > dare\-not\-go\-one\-step\-beyond\-the\-prescribed\-limit;
+東南亞國家聯盟 > asean\-\(association\-of\-southeast\-asian\-nations\);
+失敗是成功之母 > \"failure\-is\-the\-mother\-of\-success\"\-\(proverb\);
+經營管理和維護 > operations\-administration\-and\-maintenance;
+核武器研製計劃 > nuclear\-weapons\-\(manufacturing\)\-program;
+教授畢竟是教授 > professors\-are\-\(after\-all\)\-professors;
+虛擬通道標誌符 > virtual\-channel\-connection\-identifier;
+世界性古老問題 > a\-problem\-as\-old\-as\-the\-world\-itself;
+電信服務供應商 > telecommunications\-service\-provider;
+公用交換電話網 > public\-switched\-telephone\-network;
+中華人民共和國 > the\-people''s\-republic\-of\-china;
+通用資源識別號 > universal\-resource\-identifier;
+原子科學家通報 > journal\-of\-atomic\-scientists;
+超文件傳輸協定 > hypertext\-transfer\-protocol;
+超文本傳輸協定 > hypertext\-transfer\-protocol;
+客戶服務器結構 > client\-server\-architecture;
+媒體接口連接器 > medium\-interface\-connector;
+面嚮對象的技術 > object\-oriented\-technology;
+非同步傳輸模式 > asynchronous\-transfer\-mode;
+超文本標記語言 > hypertext\-markup\-language;
+反艦艇巡航導彈 > anti\-ship\-cruise\-missle;
+用戶到網絡接口 > user\-network\-interface;
+亞洲太平洋地區 > asia\-pacific\-region;
+多米尼加共和國 > dominican\-republic;
+撒哈拉以南非洲 > sub\-saharan\-africa;
+在大多數情況下 > in\-most\-instances;
+超高速乙太網路 > gigabit\-ethernet;
+巴布亞新幾內亞 > papau\-new\-guinea;
+羅密歐與朱麗葉 > romeo\-and\-juliet;
+太陽微系統公司 > sun\-microsystems;
+帖撒羅尼迦後書 > 2\-thessalonians;
+亞爾發和奧米加 > alpha\-and\-omega;
+帖撒羅尼迦前書 > 1\-thessalonians;
+莫尼卡萊溫斯基 > monica\-lewinsky;
+阿伏伽德羅定律 > avogadro''s\-law;
+電纜調制解調器 > cable\-modem;
+第二次世界大戰 > world\-war\-2;
+介質訪問控制層 > mac\-layer;
+不知天高地厚 > not\-know\-the\-immensity\-of\-heaven\-and\-earth\-\-\-have\-an\-exaggerated\-opinion\-of\-one''s\-abilities;
+百聞不如一見 > seeing\-for\-oneself\-is\-a\-hundred\-times\-better\-than\-hearing\-from\-others;
+不費吹灰之力 > as\-easy\-as\-blowing\-off\-dust\-\-\-not\-needing\-the\-slightest\-effort;
+沙利科什維利 > general\-shalikashvili\-\(head\-of\-us\-joint\-chiefs\-of\-staff\);
+寄予很大期望 > to\-place\-great\-hope\-or\-expectation\-on\-\(sth\);
+巴爾舍夫斯基 > \(charlene\)\-barshefsky\,\-us\-trade\-negotiator;
+約定資訊速率 > committed\-inforrmation\-rate\-\(frame\-relay\);
+逆向擁塞通知 > backward\-explicit\-congestion\-notification;
+前向擁塞通知 > forward\-explicit\-congestion\-notification;
+美國廣播公司 > abc\-\(american\-broadcasting\-corporation\);
+哈裡森史密特 > harrison\-schmitt\-\(apollo\-1\-7\-astronaut\);
+畢其功于一役 > accomplish\-the\-whole\-task\-at\-one\-stroke;
+擺事實講道理 > present\-the\-facts\-and\-reason\-things\-out;
+國際電信聯盟 > international\-telecommunications\-union;
+不可同日而語 > cannot\-be\-mentioned\-in\-the\-same\-breath;
+有志者事竟成 > where\-there\-is\-a\-will\,\-there\-is\-a\-way;
+國際標準組織 > international\-standards\-organization;
+目前還不清楚 > at\-present\-it\-is\-still\-unclear\-\.\.\.\.;
+疾病預防中心 > \(u\.s\.\)\-center\-for\-disease\-control;
+應用程式介面 > application\-programming\-interface;
+矮子裡拔將軍 > choose\-the\-best\-person\-available;
+取得大學學位 > to\-obtain\-a\-university\-education;
+實時操作環境 > real\-time\-operating\-environment;
+國際商業機器 > international\-business\-machines;
+符合美國利益 > in\-line\-with\-american\-interests;
+軟體出版協會 > software\-publishers\-association;
+松下電氣工業 > matsushita\-electronics\-industry;
+服務廣告協議 > service\-advertisement\-protocol;
+語音通訊通道 > voice\-\(communications\)\-channel;
+世界貿易組織 > wto\-\(world\-trade\-organization\);
+常規銅電話線 > ordinary\-copper\-telephone\-line;
+同步數位階層 > synchronous\-digital\-hierarchy;
+上海戲劇學院 > shanghai\-theatrical\-institute;
+傳輸控制協定 > transmission\-control\-protocol;
+傳統中國醫藥 > chinese\-traditional\-medicine;
+固定虛擬連接 > permanent\-virtual\-connection;
+開放系統互連 > open\-systems\-interconnection;
+北京藝術學院 > beijing\-academy\-of\-fine\-arts;
+不登大雅之堂 > not\-appeal\-to\-refined\-taste;
+北京語言學院 > beijing\-languages\-institute;
+地址解析協議 > address\-resolution\-protocol;
+本地管理界面 > local\-management\-interface;
+異步傳輸模式 > asynchronous\-transfer\-mode;
+電腦輔助教材 > computer\-aided\-instruction;
+電腦輔助工程 > computer\-aided\-engineering;
+虛擬通道連接 > virtual\-channel\-connection;
+網絡管理系統 > network\-management\-system;
+世界衛生組織 > world\-health\-organization;
+值得注意的是 > it''s\-worth\-noting\-that\.\.\.;
+環球定位系統 > global\-positioning\-system;
+因特網提供商 > internet\-sevice\-provider;
+網絡操作系統 > network\-operating\-system;
+圖像用戶介面 > graphical\-user\-interface;
+面嚮對象語言 > object\-oriented\-language;
+共同閘道介面 > common\-gateway\-interface;
+網路作業系統 > network\-operating\-system;
+公眾電信網路 > public\-telephone\-network;
+非盈利的組織 > non\-profit\-organization;
+訊息處理系統 > message\-handling\-system;
+數字訂購線路 > digital\-subscriber\-line;
+辯証唯物主義 > dialectical\-materialism;
+網路節點介面 > network\-node\-interface;
+正在中國訪問 > during\-a\-trip\-to\-china;
+八小時工作制 > eight\-hour\-working\-day;
+消息靈通人士 > a\-well\-informed\-source;
+日本經濟新聞 > japanese\-economic\-news;
+訊息傳遞中介 > message\-transfer\-agent;
+電腦輔助設計 > computer\-aided\-design;
+持不同政見者 > \(political\)\-dissident;
+資料傳送服務 > data\-delivery\-service;
+介質訪問控制 > medium\-access\-control;
+印度尼西亞語 > indonesian\-\(language\);
+多種語言支持 > multilingual\-support;
+接收器靈敏度 > receiver\-sensitivity;
+民族主義情緒 > nationalist\-feelings;
+媒體訪問控制 > media\-access\-control;
+四年制的大學 > four\-year\-university;
+邏輯鏈路控制 > logical\-link\-control;
+萬維天羅地網 > world\-wide\-web\-\(www\);
+巡迴分析端口 > roving\-analysis\-port;
+只不過幾年前 > only\-a\-few\-years\-ago;
+一百五十多年 > more\-than\-150\-years;
+哥倫比亞大學 > columbia\-university;
+貿易保護主義 > trade\-protectionism;
+在某種程度上 > to\-a\-certain\-extent;
+曼徹斯特編碼 > manchester\-encoding;
+訊框傳送服務 > frame\-relay\-service;
+訊框傳送網路 > frame\-relay\-network;
+阿比西尼亞人 > abyssinian\-\(person\);
+亞太經合組織 > apec\-\(organization\);
+軟件開發人員 > software\-developer;
+在傳輸過程中 > while\-transmitting;
+必不可少組成 > absolute\-necessity;
+美國航空公司 > american\-airlines;
+交換以太網絡 > switched\-ethernet;
+諾貝爾和平獎 > nobel\-peace\-prize;
+五角大樓官員 > pentagon\-official;
+訊框傳送論壇 > frame\-relay\-forum;
+阿爾巴尼亞人 > albanian\-\(person\);
+不分青紅皂白 > indiscriminately;
+不等邊三角形 > scalene\-triangle;
+網際網路協會 > internet\-society;
+三千到五千萬 > 30\-to\-50\-million;
+一個中國政策 > one\-china\-policy;
+網絡規劃人員 > network\-planner;
+共享以太網絡 > shared\-ethernet;
+卡納維拉爾角 > cape\-canaveral;
+區域網路技術 > lan\-technology;
+薩達姆侯賽因 > saddam\-hussein;
+撞擊式印表機 > impact\-printer;
+撞擊式打印機 > impact\-printer;
+全球氣候升溫 > global\-warming;
+梅塞迪斯奔馳 > mercedes\-benz;
+奧克拉荷馬市 > oklahoma\-city;
+高速乙太網路 > fast\-ethernet;
+快速以太網絡 > fast\-ethernet;
+以太網絡端口 > ethernet\-port;
+亞洲與太平洋 > asia\-pacific;
+一千零五十億 > 105\-billion;
+吉爾吉斯斯坦 > kirghizstan;
+榮獲諾貝爾獎 > nobel\-prize;
+三月二十三號 > march\-23rd;
+沒有生育能力 > infertile;
+國際互聯網絡 > internet;
+三月二十一號 > march\-21;
+專用集成電路 > asic;
+圖像互換格式 > gif;
+脫氧核糖核酸 > dna;
+殺雞給猴看 > \"kill\-a\-chicken\-in\-front\-of\-a\-monkey\"\-\-\-\-make\-an\-example\-out\-of\-someone\-\(by\-punishing\-them\)\-to\-frighten\-others;
+病急亂投醫 > turn\-to\-any\-doctor\-one\-can\-find\-when\-critically\-ill\-\-\-try\-anything\-when\-in\-a\-desperate\-situation;
+斯卡伯勒礁 > scarborough\-shoal\-\(philippines''\-name\-for\-huangyan\-island\);
+冰炭不相容 > as\-incompatible\-or\-irreconcilable\-as\-ice\-and\-hot\-coals;
+韋爾弗雷茲 > \(george\)\-wehrfritz\-\(beijing\-bureau\-chief\-of\-newsweek\);
+琳\.戴維斯 > lynn\-davis\-\(us\-state\-department\-arms\-control\-expert\);
+人民行動黨 > people''s\-action\-party\-\(ruling\-party\-in\-singapore\);
+常任理事國 > permanent\-member\-state\-\(of\-un\-security\-council\);
+人民大會堂 > great\-hall\-of\-the\-people\,\-at\-tiananmen\-square;
+橋本龍太郎 > hashimoto\,\-ryutaro\-\(prime\-minister\-of\-japan\);
+奧爾布賴特 > \(madeleine\)\-albright\-\(us\-secretary\-of\-state\);
+不當一回事 > not\-regard\-as\-a\-matter\-\(of\-any\-importance\);
+不打不相識 > from\-an\-exchange\-of\-blows\-friendship\-grows;
+聯邦調查局 > fbi\-\(federal\-bureau\-of\-investigation\);
+一九四九年 > the\-year\-1949\-\(communist\-revolution\);
+約翰內斯堡 > johannesburg\-\(city\-in\-south\-africa\);
+分佈式環境 > distributed\-\(computing\)\-environment;
+非政府組織 > non\-governmental\-organization\-\(ngo\);
+尤金塞爾南 > eugene\-cernan\-\(apollo\-17\-astronaut\);
+比勒陀利亞 > pretoria\-\(capital\-of\-south\-africa\);
+半日制學校 > half\-day\-\(or\-double\-shift\-school\);
+越來越嚴重 > to\-become\-more\-serious\-every\-day;
+戈爾巴喬夫 > \(former\-soviet\-leader\)\-gorbachev;
+八級工資制 > eight\-grade\-wage\-scale\-\(system\);
+在密切注意 > to\-pay\-close\-attention\-\(to\-sth\);
+核威懾政策 > policy\-of\-nuclear\-intimidation;
+可選擇丟棄 > discard\-eligible\-\(frame\-relay\);
+特別行政區 > special\-administrative\-region;
+華盛頓時報 > washington\-times\-\(newspaper\);
+似乎很安全 > to\-appear\-\(to\-be\)\-very\-safe;
+中央情報局 > central\-intelligence\-agency;
+服務提供商 > \(internet\)\-service\-provider;
+管理信息庫 > management\-information\-base;
+華盛頓郵報 > washington\-post\-\(newspaper\);
+願意不願意 > whether\-one\-wants\-to\-or\-not;
+發展核武器 > to\-develop\-nuclear\-weapons;
+叛變的省份 > renegade\-province\-\(taiwan\);
+中國科學院 > chinese\-acadamy\-of\-science;
+用戶端設備 > customer\-premise\-equipment;
+不等價交換 > exchange\-of\-unequal\-values;
+永久虛電路 > permanent\-virtual\-circuit;
+原因很簡單 > the\-reason\-is\-very\-simple;
+通訊自動化 > communications\-automation;
+幀首定界符 > start\-of\-frame\-delimiter;
+不承認主義 > policy\-of\-nonrecognition;
+楊百翰大學 > brigham\-young\-university;
+分佈式結構 > distributed\-architecture;
+持不同政見 > \(politically\)\-dissenting;
+人民解放軍 > people''s\-liberation\-army;
+從外表來看 > looking\-from\-the\-outside;
+交換虛電路 > switched\-virtual\-circuit;
+核武器材料 > nuclear\-weapon\-material;
+發佈新軟件 > to\-release\-new\-software;
+專屬經濟區 > exclusive\-economic\-zone;
+流亡在海外 > to\-be\-in\-exile\-overseas;
+不抵抗主義 > policy\-of\-nonresistance;
+在今年年底 > at\-the\-end\-of\-this\-year;
+來回來去地 > backwards\-and\-forwards;
+網絡層協議 > network\-layer\-protocol;
+工業化國家 > industrialized\-country;
+教義和聖約 > doctrine\-and\-covenants;
+網絡管理員 > network\-administrator;
+芝加哥大學 > university\-of\-chicago;
+陸海空三軍 > army\,\-navy\,\-air\-force;
+本土化軟件 > software\-localization;
+檔案分配區 > file\-allocation\-table;
+地對空導彈 > ground\-to\-air\-missile;
+不信任投票 > vote\-of\-no\-confidence;
+本人的觀點 > \(one''s\)\-personal\-view;
+軟體配送者 > software\-distributor;
+歷來最低點 > all\-time\-low\-\(point\);
+米德爾伯裡 > middlebury\-\(college\);
+兩點十九分 > 2\-\:1\-9\-\(time\-of\-day\);
+幀檢驗序列 > frame\-check\-sequence;
+不完全中立 > imperfect\-neutrality;
+克里斯托弗 > \(warren\)\-christopher;
+鑒定委員會 > evaluation\-committee;
+馬來西亞語 > malasian\-\(language\);
+過了五分鐘 > five\-minutes\-passed;
+克羅地亞語 > croatian\-\(language\);
+討論的議題 > topic\-of\-discussion;
+地址的轉換 > address\-translation;
+自動地工作 > automatic\-operation;
+保安自動化 > security\-automation;
+分佈式網絡 > distributed\-network;
+不期然而然 > happen\-unexpectedly;
+加值型網路 > value\-added\-network;
+因特網聯通 > internet\-connection;
+科學的交流 > scientific\-exchange;
+鋰離子電池 > lithium\-ion\-battery;
+長期穩定性 > long\-term\-stability;
+樓宇自動化 > building\-automation;
+視窗加速器 > windows\-accelarator;
+華爾街日報 > wall\-street\-journal;
+國民黨軍隊 > nationalist\-forces;
+一小時以後 > a\-short\-time\-later;
+網路連接層 > network\-link\-layer;
+康奈爾大學 > cornell\-university;
+塞爾維亞語 > serbian\-\(language\);
+斯瓦希裡語 > swahili\-\(language\);
+國家標準碼 > gb\-\(guo\-biao\)\-code;
+本初子午線 > the\-first\-meridian;
+家庭消費者 > household\-consumer;
+域名服務器 > domain\-name\-server;
+發展中國家 > developing\-country;
+多端中繼器 > multiport\-repeater;
+發展的國家 > developing\-country;
+生活必需品 > life''s\-necessities;
+可行性研究 > feasibility\-study;
+數據庫軟件 > database\-software;
+西裡爾字母 > cyrillic\-alphabet;
+撒迦利亞書 > book\-of\-zechariah;
+波士頓大學 > boston\-university;
+辦公自動化 > office\-automation;
+不及物動詞 > intransitive\-verb;
+膝上型電腦 > laptop\-\(computer\);
+中央委員會 > central\-committee;
+到那個時候 > until\-this\-moment;
+洛杉磯時報 > los\-angeles\-times;
+文化的交流 > cultural\-exchange;
+斯洛伐克語 > slovak\-\(language\);
+外國旅遊者 > foreign\-traveller;
+一千七百萬 > seventeen\-million;
+委員會會議 > committee\-meeting;
+計算機工業 > computer\-industry;
+共產黨部隊 > communist\-forces;
+服務提供者 > service\-provider;
+移動式電話 > mobile\-telephone;
+婚外性接觸 > extramarital\-sex;
+波美比重計 > baume\-hydrometer;
+外國投資者 > foreign\-investor;
+異性性接觸 > heterosexual\-sex;
+桌上型電腦 > desktop\-computer;
+記者招待會 > press\-conference;
+原子科學家 > atomic\-scientist;
+長度指示符 > length\-indicator;
+仿真服務器 > emulation\-server;
+計算機網絡 > computer\-network;
+過份簡單化 > oversimplication;
+知識工程師 > knowledge\-worker;
+資料鏈結層 > data\-link\-layer;
+零等待狀態 > zero\-wait\-state;
+在很多方面 > in\-many\-aspects;
+俄巴底亞書 > book\-of\-obadiah;
+數據鏈路層 > data\-link\-layer;
+種族主義者 > racist\-\(person\);
+網絡瀏覽器 > network\-browser;
+客戶機軟件 > client\-software;
+自動售貨機 > vending\-machine;
+網絡打印機 > network\-printer;
+板板六十四 > unaccommodating;
+第一個層次 > the\-first\-stage;
+全球資訊網 > world\-wide\-web;
+以太網絡幀 > ethernet\-frame;
+不平等條約 > unequal\-treaty;
+喘不過氣來 > cannot\-breathe;
+捷克共和國 > czech\-republic;
+工業的巨頭 > industry\-mogol;
+每端口價格 > price\-per\-port;
+不正常狀況 > abnormal\-state;
+開放式系統 > open\-system\(s\);
+世界的語言 > world\-language;
+激光打引機 > laser\-printer;
+哥林多後書 > 2\-corinthians;
+不記名投票 > secret\-ballot;
+不列顛諸島 > british\-isles;
+哥林多前書 > 1\-corinthians;
+不可能的事 > impossibility;
+百分之五十 > fifty\-percent;
+艾滋病抗體 > aids\-antibody;
+不可侵犯權 > inviolability;
+鐳射印表機 > laser\-printer;
+生命的遺跡 > trace\-of\-life;
+一九九七年 > the\-year\-1997;
+全世界第一 > world''s\-first;
+普通老百姓 > common\-people;
+艾滋病患者 > aids\-patient;
+簿記管理員 > commissarian;
+核武器試驗 > nuclear\-test;
+二十一世紀 > 21st\-century;
+有條有理地 > methodically;
+不是玩兒的 > it''s\-no\-joke;
+粗俗的階級 > vulgar\-class;
+打印服務器 > print\-server;
+賓西法尼亞 > pennsylvania;
+耶利米哀歌 > lamentations;
+八九不離十 > pretty\-close;
+開放式網路 > open\-network;
+克裡姆林宮 > the\-kremlin;
+太平洋週邊 > pacific\-rim;
+激光二極管 > laser\-diode;
+器官捐獻者 > organ\-donor;
+文件服務器 > file\-server;
+玻意耳定律 > boyle''s\-law;
+一千四百億 > 140\-billion;
+自由選擇權 > free\-agency;
+巴枯寧主義 > bakuninism;
+說不出話來 > speechless;
+塔吉克斯坦 > tajikistan;
+加利福尼亞 > california;
+使用者中介 > user\-agent;
+哈薩克斯坦 > kazakhstan;
+百分之九十 > 90\-percent;
+公開討論會 > open\-forum;
+艾滋病病毒 > aids\-virus;
+地方官職位 > prefecture;
+磁盤驅動器 > disl\-drive;
+女裝裁縫師 > dressmaker;
+長子的名份 > birthright;
+一百五十億 > 15\-billion;
+阿比西尼亞 > abyssinia;
+社會主義者 > socialist;
+提摩太后書 > 2\-timothy;
+到目前為止 > until\-now;
+流行性感冒 > influenza;
+不穩定氣流 > turbulent;
+提摩太前書 > 1\-timothy;
+波利尼西亞 > polynesia;
+圖書管理員 > librarian;
+印度尼西亞 > indonesia;
+民主主義者 > democrats;
+變焦距鏡頭 > zoom\-lens;
+企業間網路 > extranet;
+常坐汽車者 > motorist;
+汽車展覽會 > car\-show;
+企業內網路 > intranet;
+撒母耳記下 > 2\-samuel;
+撒母耳記上 > 1\-samuel;
+四月十七號 > april\-17;
+神學研究所 > seminary;
+埃塞俄比亞 > ethiopia;
+奧克拉荷馬 > oklahoma;
+不名譽事物 > dishonor;
+海軍總司令 > admiral;
+五月十五號 > may\-1\-5;
+阿爾及利亞 > algeria;
+七月三十號 > july\-30;
+馬克思主義 > marxism;
+阿爾巴尼亞 > albania;
+一節\(詩\) > stanza;
+透印版印刷 > offset;
+毛織運動衫 > jersey;
+男修道院長 > abbot;
+調制解調器 > modem;
+三色紫羅蘭 > pansy;
+安全理事會 > the\-u;
+抱薪救火 > carry\-faggots\-to\-put\-out\-a\-fire\-\-\-adopt\-a\-wrong\-method\-to\-save\-a\-situation\-and\-end\-up\-by\-making\-it\-worse;
+杯水車薪 > trying\-to\-put\-out\-a\-burning\-cartload\-of\-faggots\-with\-a\-cup\-of\-water\-\-\-an\-utterly\-inadequate\-measure;
+辯証施治 > diagnosis\-and\-treatment\-based\-on\-an\-overall\-analysis\-of\-the\-illness\-and\-the\-patient''s\-condition;
+敝帚自珍 > value\-one''s\-own\-old\-broom\-\-\-cherish\-something\-of\-little\-value\-simply\-because\-it\-is\-one''s\-own;
+兵不血刃 > the\-edges\-of\-the\-swords\-not\-being\-stained\-with\-blood\-\-\-win\-victory\-without\-firing\-a\-shot;
+養兒防老 > \(of\-parents\)\-to\-bring\-up\-cihldren\-for\-the\-purpose\-of\-being\-looked\-after\-in\-old\-age;
+不共戴天 > will\-not\-live\-under\-the\-same\-sky\-\(with\-one''s\-enemy\)\-\-\-absolutely\-irreconcilable;
+擊其惰歸 > avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+避其銳氣 > avoid\-the\-enemy\-when\-he\-is\-fresh\-and\-strike\-him\-when\-he\-is\-tired\-and\-withdraws;
+保甲制度 > the\-bao\-jia\-system\-\(an\-administrative\-system\-organized\-on\-basis\-of\-households\);
+不辨菽麥 > be\-unable\-to\-tell\-beans\-from\-wheat\-\-\-have\-no\-knowledge\-of\-practical\-matters;
+恭喜發財 > congratulations\-for\-getting\-rich\-\(traditional\-chinese\-new\-year''s\-future\-use;
+塞韋裡諾 > \[jean\-michel\]\-severino\-\[world\-bank\-vice\-president\,\-east\-asia\-and\-pacific\];
+有期徒刑 > limited\-term\-of\-imprisonment\-\(ie\,\-anything\-less\-than\-life\-imprisonment\);
+閉目塞聽 > shuts\-one''s\-eyes\-and\-stop\-up\-one''s\-ears\-\-\-be\-out\-of\-touch\-with\-reality;
+笨鳥先飛 > clumsy\-birds\-have\-to\-start\-flying\-early\-\-\-the\-slow\-need\-to\-start\-early;
+本草綱目 > an\-outline\-treatise\-of\-medical\-herbs\,\-compiled\-by\-li3\-shi2\-zhen1\-李時珍;
+兵強馬壯 > strong\-soldiers\-and\-sturdy\-horses\-\-\-a\-well\-trained\-and\-powerful\-army;
+業余大學 > college\-for\-people\-who\-attend\-after\-work\-\(lit\.\:\-spare\-time\-college\);
+捕風捉影 > chase\-the\-wind\-and\-clutch\-at\-shadows\-\-\-make\-groundless\-accusations;
+不分彼此 > make\-no\-distinction\-between\-what''s\-one''s\-own\-and\-what''s\-another''s;
+不知凡幾 > can''t\-tell\-how\-many\-there\-are\-\-\-there\-are\-numerous\-similar\-cases;
+抱殘守缺 > cherish\-the\-outmoded\-and\-preserve\-the\-outworn\-\-\-be\-conservative;
+博古通今 > conversant\-with\-things\-past\-and\-present\-\-\-erudite\-and\-informed;
+大鬧天宮 > \"the\-monkey\-creates\-havoc\-in\-heaven\"\,\-story\-about\-sun\-wu\-kong;
+悲天憫人 > bemoan\-the\-state\-of\-the\-universe\-and\-pity\-the\-fate\-of\-mankind;
+不服水土 > \(of\-a\-stranger\)\-not\-accustomed\-to\-the\-climate\-of\-a\-new\-place;
+哀兵必勝 > an\-army\-burning\-with\-righteous\-indignation\-is\-bound\-to\-win;
+矛頭指向 > target\-someone\-or\-something\-\(for\-attack\,\-criticism\,\-etc\.\);
+不恥下問 > not\-feel\-ashamed\-to\-ask\-and\-learn\-from\-one''s\-subordinates;
+卡拉OK > karaoke\-\(singing\-to\-recorded\-instrumental\-accompaniment\);
+中國民航 > general\-administration\-of\-civil\-aviation\-of\-china\-\(caac\);
+三國演義 > name\-of\-a\-classic\-novel\,\-\"romance\-of\-the\-three\-kingdoms\";
+背水一戰 > fight\-with\-one''s\-back\-to\-the\-river\-\-\-fight\-to\-win\-or\-die;
+杯弓蛇影 > mistaking\-the\-reflection\-of\-a\-bow\-in\-the\-cup\-for\-a\-snake;
+背井離鄉 > leave\-one''s\-native\-place\-\(especially\-against\-one''s\-will\);
+波瀾起伏 > of\-a\-piece\-of\-writing\-with\-one\-climax\-following\-another;
+不為已甚 > refrain\-from\-going\-to\-extremes\-in\-meting\-out\-punishment;
+不約而同 > take\-the\-same\-action\-or\-view\-without\-prior\-consultation;
+八面玲瓏 > be\-smooth\-and\-slick\-\(in\-establishing\-social\-relations\);
+眾志成城 > \"unity\-of\-will\-is\-an\-impregnable\-stronghold\"\-\(proverb\);
+抗日戰爭 > \(china''s\)\-war\-of\-resistance\-against\-japan\-\(1937\-1945\);
+大材小用 > using\-a\-talented\-person\-in\-an\-insignificant\-position;
+不聞不問 > not\-bother\-to\-ask\-questions\-or\-listen\-to\-what''s\-said;
+並行不悖 > both\-can\-be\-implemented\-without\-coming\-into\-conflict;
+步步為營 > advance\-gradually\-and\-entrench\-oneself\-at\-every\-step;
+一望無際 > as\-far\-as\-the\-eye\-can\-see\-\(lit\:\-look\-afar\-no\-bound\);
+不見經傳 > not\-to\-be\-found\-in\-the\-classics\-\-\-not\-authoritative;
+撥雲見日 > dispel\-the\-clouds\-and\-see\-the\-sun\-\-\-restore\-justice;
+安步當車 > walk\-over\-leisurely\-instead\-of\-riding\-in\-a\-carriage;
+不勝枚舉 > too\-numerous\-to\-mention\-individually\-or\-one\-by\-one;
+賓至如歸 > guests\-feel\-at\-home\-\(in\-a\-hotel\,\-guesthouse\,\-etc\.\);
+尖閣列島 > senkaku\-islands\-\(japanese\-name\-for\-diaoyu\-islands\);
+維吾爾族 > the\-uygur\-\(uighur\)\-nationality\,\-living\-in\-xinjiang;
+南華早報 > south\-china\-morning\-post\-\(newspaper\-in\-hong\-kong\);
+病入膏肓 > the\-disease\-has\-attacked\-the\-vitals\-\-\-beyond\-cure;
+約翰拉貝 > john\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+不破不立 > without\-destruction\-there\-can\-be\-no\-construction;
+包產到戶 > fixing\-of\-farm\-output\-quotas\-for\-each\-household;
+駱駝祥子 > name\-of\-a\-novel\,\-luo\-tuo\-xiangzi\,\-by\-lao\-she\-老舍;
+逼上樑山 > be\-driven\-to\-join\-the\-liangshan\-mountain\-rebels;
+南轅北轍 > \(fig\.\)\-act\-in\-a\-way\-that\-defeats\-one''s\-purpose;
+保外就醫 > \(of\-a\-prisoner\)\-released\-for\-medical\-treatment;
+蒸蒸日上 > becoming\-more\-prosperous\-with\-each\-passing\-day;
+烏魯木齊 > urumqi\-\(capital\-of\-xinjiang\-autonomous\-region\);
+安土重遷 > hate\-to\-leave\-a\-place\-where\-one\-has\-lived\-long;
+工商銀行 > industrial\-and\-commercial\-bank\-of\-china\-\(icbc\);
+事與願違 > things\-don''t\-turn\-out\-the\-way\-you\-want\-or\-plan;
+張燈結綵 > be\-decorated\-with\-lanterns\-and\-colored\-banners;
+閉門思過 > shut\-oneself\-up\-and\-ponder\-over\-one''s\-mistakes;
+閉關自守 > close\-the\-country\-to\-international\-intercourse;
+不避艱險 > shrink\-or\-flinch\-from\-no\-difficulty\-or\-danger;
+阿旺曲沛 > ngawang\-choepel\-\(tibetan\,\-fullbright\-scholar\);
+畫蛇添足 > ruin\-the\-effect\-by\-adding\-what\-is\-superfluous;
+仗義執言 > speak\-out\-on\-a\-matter\-of\-principle\-or\-justice;
+兵臨城下 > the\-attacking\-army\-has\-reached\-the\-city\-gates;
+背城借一 > make\-a\-last\-ditch\-stand\-before\-the\-city\-wall;
+百感交集 > all\-sorts\-of\-feelings\-well\-up\-in\-one''s\-heart;
+兵不厭詐 > there\-can\-never\-be\-too\-much\-deception\-in\-war;
+五六十歲 > \(in\-one''s\)\-fifties\-or\-sixties\-\(years\-of\-age\);
+避重就輕 > avoid\-the\-important\-and\-dwell\-on\-the\-trivial;
+標新立異 > start\-something\-new\-in\-order\-to\-be\-different;
+大功告成 > successfully\-accomplished\-\(project\-or\-goal\);
+無所用心 > eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+班門弄斧 > display\-one''s\-slight\-skill\-before\-an\-expert;
+中國日報 > china\-daily\-\(an\-english\-language\-newspaper\);
+不可終日 > be\-unable\-to\-carry\-on\-even\-for\-a\-single\-day;
+飽食終日 > eat\-three\-square\-meals\-a\-day\-and\-do\-no\-work;
+單槍匹馬 > single\-handed\-\(lit\:\-single\-spear\-one\-horse\);
+名副其實 > not\-just\-in\-name\-only\,\-but\-also\-in\-reality;
+喜新厭舊 > literal\:\-to\-like\-the\-new\,\-and\-hate\-the\-old;
+拍案叫絕 > lit\.\:\-slap\-the\-table\-and\-shout\-with\-praise;
+風土人情 > local\-conditions\-\(human\-and\-environmental\);
+阿拉塔斯 > \(ali\)\-alatas\-\(indonesian\-foreign\-minister\);
+中共中央 > chinese\-communist\-party\-central\-committee;
+博聞強記 > have\-wide\-learning\-and\-a\-retentive\-memory;
+百年大計 > a\-project\-of\-vital\-and\-lasting\-importance;
+拔苗助長 > spoil\-things\-through\-excessive\-enthusiasm;
+肯普索恩 > \(dirk\)\-kempthorne\-\(us\-senator\-from\-idaho\);
+外孫女兒 > granddaughter\-\(daughter\-of\-one''s\-daugher\);
+百折不撓 > keep\-on\-fighting\-in\-spite\-of\-all\-setbacks;
+安身立命 > settle\-down\-and\-get\-on\-with\-one''s\-pursuit;
+不可一世 > consider\-oneself\-unexcelled\-in\-the\-world;
+絕對數字 > absolute\-\(as\-opposed\-to\-relative\)\-number;
+抱頭鼠竄 > cover\-the\-head\-and\-sneak\-away\-like\-a\-rat;
+百廢俱興 > all\-neglected\-tasks\-are\-being\-undertaken;
+避實就虛 > stay\-clear\-of\-the\-enemy''s\-main\-force\-and;
+不求甚解 > not\-seek\-to\-understand\-things\-thoroughly;
+中央全會 > plenary\-session\-of\-the\-central\-committee;
+古杰拉爾 > \(i\.\-k\.\)\-gujral\-\(prime\-minister\-of\-india\);
+冷淡關係 > cold\-relations\-\(e\.g\.\-between\-countries\);
+不了了之 > settle\-a\-matter\-by\-leaving\-it\-unsettled;
+不即不離 > be\-neither\-too\-familiar\-nor\-too\-distant;
+總政治部 > \(military\)\-general\-political\-department;
+半路出家 > switch\-to\-a\-job\-one\-was\-not\-trained\-for;
+病毒學家 > virologist\-\(person\-who\-studies\-viruses\);
+結社自由 > \(constitutional\)\-freedom\-of\-association;
+蔓延全國 > to\-spread\-throughout\-the\-entire\-country;
+百思不解 > remain\-puzzled\-after\-pondering\-over\-sth;
+半勞動力 > one\-able\-to\-do\-light\-manual\-labour\-only;
+總後勤部 > \(military\)\-general\-logistics\-department;
+一國兩制 > one\-country\,\-two\-systems\-\(china\-taiwan\);
+白頭諧老 > live\-to\-ripe\-old\-age\-in\-conjugal\-bliss;
+成千上萬 > by\-the\-thousands\-and\-tens\-of\-thousands;
+不宣而戰 > open\-hostilities\-without\-declaring\-war;
+不遠千里 > make\-light\-of\-travelling\-a\-thousand\-li;
+安居樂業 > live\-and\-work\-in\-peace\-and\-contentment;
+遍體鱗傷 > covered\-all\-over\-with\-cuts\-and\-bruises;
+內懮外患 > domestic\-strife\-and\-foreign\-agression;
+治病救人 > cure\-the\-sickness\-to\-save\-the\-patient;
+哀鴻遍野 > a\-land\-swarming\-with\-disaster\-victims;
+病從口入 > illness\-finds\-its\-way\-in\-by\-the\-mouth;
+總參謀部 > \(military\)\-general\-staff\-headquarters;
+撥絃樂器 > plucked\-string\-or\-stringed\-instrument;
+別具一格 > having\-a\-unique\-or\-distinctive\-style;
+讀賣新聞 > yomiuri\-shimbun\-\(japanese\-newspaper\);
+才疏學淺 > have\-little\-talent\-and\-less\-learning;
+避坑落井 > dodge\-a\-pit\-only\-to\-fall\-into\-a\-well;
+變溫動物 > poikilothermal\-\(cold\-blooded\)\-animal;
+大中學生 > university\-and\-high\-school\-students;
+安分守己 > abide\-by\-the\-law\-and\-behave\-oneself;
+大顯身手 > fully\-displaying\-one''s\-capabilities;
+波瀾壯闊 > surging\-forward\-with\-great\-momentum;
+回歸中國 > to\-return\-to\-china\-\(e\.g\.\-hong\-kong\);
+愛莫能助 > willing\-to\-help\-but\-unable\-to\-do\-so;
+調查結果 > results\-\(of\-an\-investigation\,\-poll\);
+百端待舉 > a\-thousand\-things\-remain\-to\-be\-done;
+秋高氣爽 > clear\-and\-refreshing\-autumn\-weather;
+冰消瓦解 > melt\-like\-ice\-and\-break\-like\-tiles;
+半斤八兩 > not\-much\-to\-choose\-between\-the\-two;
+步人後塵 > follow\-in\-other\-people''s\-footsteps;
+龍飛鳳舞 > lit\.\:\-dragon\-flies\,\-phoenix\-dances;
+國際見聞 > international\-background\-knowledge;
+國務委員 > member\-of\-state\-council\-\(in\-china\);
+可移植性 > portability\-\(programming\-language\);
+呼和浩特 > hohhot\-\(capital\-of\-inner\-mongolia\);
+小題大做 > make\-a\-big\-fuss\-over\-a\-minor\-issue;
+不虛此行 > the\-trip\-has\-not\-been\-made\-in\-vain;
+言論自由 > \(constitutional\)\-freedom\-of\-speech;
+開發環境 > development\-environment\-\(computer\);
+不識時務 > show\-no\-understanding\-of\-the\-times;
+不時之需 > a\-possible\-period\-of\-want\-or\-need;
+以牙還牙 > a\-tooth\-for\-a\-tooth\-\(retaliation\);
+百戰百勝 > emerge\-victorious\-in\-every\-battle;
+由此可見 > from\-this\,\-it\-can\-be\-seen\-that\.\.\.;
+寸草不生 > \"not\-even\-a\-blade\-of\-grass\-grows\";
+擦亮眼睛 > remove\-the\-scales\-from\-one''s\-eyes;
+補偏救弊 > remedy\-defects\-and\-rectify\-errors;
+百川歸海 > all\-things\-tends\-in\-one\-direction;
+誓不反悔 > to\-vow\-not\-to\-break\-one''s\-promise;
+科學編輯 > science\-editor\-\(of\-a\-publication\);
+昂首闊步 > stride\-forward\-with\-one''s\-chin\-up;
+日經指數 > nikkei\-index\-\(of\-japanese\-stocks\);
+得寸進尺 > literal\:\-get\-an\-inch\,\-want\-a\-foot;
+北洋軍閥 > the\-northern\-warlords\-\(1912\-1927\);
+大惑不解 > do\-not\-understand\-a\-certain\-thing;
+明文規定 > expressly\-stipulated\-\(in\-writing\);
+大庭廣眾 > public\-place\-with\-numerous\-people;
+百無一失 > no\-danger\-of\-anything\-going\-wrong;
+人權觀察 > human\-rights\-watch\-\(organization\);
+備而不用 > have\-something\-ready\-just\-in\-case;
+節外生枝 > new\-problems\-complicate\-an\-issue;
+鼻青臉腫 > a\-bloody\-nose\-and\-a\-swollen\-face;
+企業管理 > business\-management\-\(as\-a\-study\);
+不謀而合 > agree\-without\-prior\-consultation;
+按兵不動 > not\-throw\-the\-troops\-into\-battle;
+一中一臺 > \"one\-china\,\-one\-taiwan\"\-\(policy\);
+中日韓越 > china\,\-japan\,\-korea\,\-and\-vietnam;
+形影不離 > inseparable\-\(as\-form\-and\-shadow\);
+商業版本 > commercial\-version\-\(of\-software\);
+百讀不厭 > be\-worth\-reading\-a\-hundred\-times;
+分波多工 > wavelength\-division\-multiplexing;
+必由之路 > the\-road\-one\-must\-follow\-or\-take;
+亨特泰羅 > hunter\-tylo\-\(hollywood\-actress\);
+閉門造車 > make\-a\-cart\-behind\-closed\-doors;
+悲喜交集 > mixed\-feelings\-of\-grief\-and\-joy;
+不修邊幅 > not\-care\-about\-one''s\-appearance;
+大快人心 > to\-the\-satisfaction\-of\-everyone;
+鞭長莫及 > beyond\-the\-reach\-of\-one''s\-power;
+不學無術 > have\-neither\-learning\-nor\-skill;
+不寒而慄 > shiver\-all\-over\-though\-not\-cold;
+層出不窮 > to\-come\-out\-one\-after\-the\-other;
+安民告示 > a\-notice\-to\-reassure\-the\-public;
+細菌武器 > biological\-weapon\-\(using\-germs\);
+別開生面 > start\-something\-new\-or\-original;
+如飢似渴 > thirsting\-or\-hungering\-for\-sth\.;
+開國元勛 > founding\-fathers\-\(of\-a\-country\);
+直接數據 > data\-direct\-\(in\-lan\-emulation\);
+傳統醫藥 > \(chinese\)\-traditional\-medicine;
+有史以來 > since\-the\-beginning\-of\-history;
+包治百病 > guarantee\-to\-cure\-all\-diseases;
+按需分配 > distribution\-according\-to\-need;
+世貿組織 > wto\-\(world\-trade\-organization\);
+沒有什麼 > there''s\-nothing\-\(\.\.\.\-about\-it\);
+按勞分配 > distribution\-according\-to\-work;
+阿拉木圖 > almaty\-\(capital\-of\-kazakhstan\);
+七層架構 > seven\-layer\-architecture\-\(osi\);
+應有盡有 > everything\-\(one\-could\-imagine\);
+青山綠水 > verdant\-hills\-and\-green\-waters;
+虹橋機場 > hongqiao\-airport\-\(in\-shanghai\);
+統一招生 > national\-unified\-entrance\-exam;
+東部時間 > \(u\.s\.\)\-eastern\-\(standard\)\-time;
+時大時小 > sometimes\-big\,\-sometimes\-small;
+不辭而別 > leave\-without\-saying\-good\-bye;
+百聽不厭 > worth\-hearing\-a\-hundred\-times;
+低階語言 > low\-level\-\(computer\)\-language;
+不足為訓 > not\-to\-be\-taken\-as\-an\-example;
+大吹大擂 > make\-an\-exhibition\-of\-oneself;
+安之若素 > bear\-hardship\-with\-equanimity;
+西哈努克 > \(king\)\-sihanouk\-\(of\-cambodia\);
+殺人案件 > \(case\-of\,\-incident\-of\)\-murder;
+背道而馳 > run\-in\-the\-opposite\-direction;
+低級語言 > low\-level\-\(computer\)\-language;
+不名一文 > without\-a\-penny\-to\-one''s\-name;
+不無小補 > not\-be\-without\-some\-advantage;
+加強管制 > to\-tighten\-control\-\(over\-sth\);
+人民日報 > renmin\-ribao\-\(people''s\-daily\);
+開始以前 > before\-the\-beginning\-\(of\-sth\);
+不識大體 > fail\-to\-see\-the\-larger\-issues;
+不打自招 > confess\-without\-being\-pressed;
+一舉兩得 > kill\-two\-birds\-with\-one\-stone;
+不速之客 > uninvited\-or\-unexpected\-guest;
+不得要領 > fail\-to\-grasp\-the\-main\-points;
+進行調查 > to\-carry\-out\-an\-investigation;
+大街小巷 > large\-streets\-and\-small\-lanes;
+各大軍區 > \"the\-greater\-military\-areas\";
+呼籲美國 > to\-call\-on\-the\-united\-states;
+豐衣足食 > have\-ample\-food\-and\-clothing;
+不知好歹 > not\-know\-what''s\-good\-for\-one;
+網管接口 > network\-management\-interface;
+根據上表 > according\-to\-the\-above\-table;
+國防利益 > \(national\)\-defence\-interests;
+本末倒置 > take\-the\-branch\-for\-the\-root;
+抱頭痛哭 > cry\-on\-each\-other''s\-shoulder;
+不一而足 > by\-no\-means\-an\-isolated\-case;
+白紙黑字 > \(written\)\-in\-black\-and\-white;
+不碎玻璃 > shatterproof\-or\-safety\-glass;
+莫衷一是 > cannot\-decide\-which\-is\-right;
+八國聯軍 > the\-eight\-power\-allied\-force;
+多年以來 > for\-many\-years\-\(in\-the\-past\);
+知識產權 > intellectual\-property\-rights;
+誓死不降 > to\-vow\-to\-fight\-to\-the\-death;
+沒有必要 > there\-is\-no\-need\-to\-\(do\-sth\);
+中文廣播 > chinese\-\(language\)\-broadcast;
+移殖手術 > \(organ\)\-transplant\-operation;
+浪子回頭 > the\-return\-of\-a\-prodigal\-son;
+不急之務 > a\-matter\-of\-no\-great\-urgency;
+電磁干擾 > electromagnetic\-interference;
+不易之論 > perfectly\-sound\-proposition;
+各種各樣 > various\-sorts\-and\-varieties;
+不違農時 > not\-miss\-the\-farming\-season;
+亂作決定 > to\-make\-arbitrary\-decisions;
+大器晚成 > grand\-talents\-mature\-slowly;
+按步就班 > follow\-the\-prescribed\-order;
+外交部長 > minister\-of\-foreign\-affairs;
+舉世矚目 > attract\-worldwide\-attention;
+獨斷專行 > act\-in\-an\-arbitrary\-fashion;
+私人鑰匙 > private\-key\-\(in\-encryption\);
+卻之不恭 > to\-refuse\-would\-be\-impolite;
+馬太福音 > gospel\-according\-to\-matthew;
+電話會議 > \(telephone\)\-conference\-call;
+不落窠臼 > not\-follow\-the\-beaten\-track;
+按照計劃 > according\-to\-\(the\)\-plan\-\.\.\.;
+事情要做 > thing\-that\-needs\-to\-be\-done;
+一路平安 > to\-have\-a\-pleasant\-journey;
+紐約時報 > new\-york\-times\-\(newspaper\);
+常問問題 > frequently\-asked\-questions;
+百孔千瘡 > riddled\-with\-gaping\-wounds;
+兵連禍結 > ravaged\-by\-successive\-wars;
+長期以來 > ever\-since\-a\-long\-time\-ago;
+安家落戶 > make\-one''s\-home\-in\-a\-place;
+入木三分 > written\-in\-a\-forceful\-hand;
+分時多工 > time\-division\-multiplexing;
+根深蒂固 > deep\-rooted\-\(problem\,\-etc\);
+星島日報 > sing\-tao\-daily\-\(newspaper\);
+電信服務 > telecommunications\-service;
+公開鑰匙 > public\-key\-\(in\-encryption\);
+電信網路 > telecommunications\-network;
+感染人數 > number\-of\-infected\-persons;
+百步穿楊 > shoot\-with\-great\-precision;
+出現意外 > \(to\-appear\)\-unexpected\(ly\);
+一觸即發 > could\-happen\-at\-any\-moment;
+纖芯直徑 > core\-diameter\-\(of\-a\-fiber\);
+進行交易 > to\-carry\-out\-a\-transaction;
+別出心裁 > adopt\-an\-original\-approach;
+百發百中 > every\-shot\-hits\-the\-target;
+不亢不卑 > neither\-haughty\-nor\-humble;
+白壁無瑕 > impeccable\-moral\-integrity;
+敗子回頭 > return\-of\-the\-prodigal\-son;
+訪問美國 > to\-visit\-the\-united\-states;
+不失時機 > seize\-the\-opportune\-moment;
+導彈潛艇 > \(guided\)\-missile\-submarine;
+安如泰山 > as\-secure\-as\-mount\-taishan;
+不義之財 > ill\-gotten\-wealth\-or\-gains;
+重要的是 > it\-is\-important\-\(that\)\-\.\.\.;
+通信技術 > communications\-technology;
+外匯儲備 > foreign\-exchange\-reserves;
+勞動教養 > reeducation\-through\-labor;
+不辭辛苦 > make\-nothing\-of\-hardships;
+程式理員 > program\-manager\-\(windows\);
+民主黨人 > a\-democratic\-party\-member;
+三十年來 > for\-the\-past\-thirty\-years;
+技術發展 > technological\-development;
+高等學校 > colleges\-and\-universities;
+康涅狄格 > connecticut\-\(state\-in\-us\);
+單連接站 > single\-attachment\-station;
+符合標準 > to\-comply\-with\-a\-standard;
+示威遊行 > a\-\(protest\)\-demonstration;
+大敵當前 > confront\-a\-powerful\-enemy;
+研製過程 > manufacturing\-environment;
+反唇相譏 > answer\-back\-sarcastically;
+核轟炸機 > nuclear\-bomber\-\(aircraft\);
+不得人心 > not\-enjoy\-popular\-support;
+直言不諱 > speak\-frankly\-and\-bluntly;
+景山公園 > name\-of\-a\-park\-in\-beijing;
+面臨困難 > to\-be\-faced\-with\-problems;
+不務正業 > not\-engage\-in\-honest\-work;
+愛理不理 > look\-cold\-and\-indifferent;
+改善通訊 > to\-improve\-communications;
+總參謀長 > \(military\)\-chief\-of\-staff;
+背信棄義 > break\-faith\-with\-somebody;
+跨國公司 > transnational\-corporation;
+共和黨人 > a\-republican\-party\-member;
+馬可福音 > gospel\-according\-to\-mark;
+每年一度 > once\-a\-year\-\(every\-year\);
+域名註冊 > domain\-name\-registration;
+兵貴神速 > speed\-is\-precious\-in\-war;
+多邊合作 > multilateral\-cooperation;
+投放市場 > to\-put\-sth\-on\-the\-market;
+荒無人煙 > desolate\-and\-uninhabited;
+約翰福音 > gospel\-according\-to\-john;
+印歐語言 > indo\-european\-\(language\);
+習以為常 > be\-accustomed\-or\-used\-to;
+兵荒馬亂 > turmoil\-and\-chaos\-of\-war;
+不動聲色 > maintain\-one''s\-composure;
+浮點運算 > floating\-point\-operation;
+內政部長 > minister\-of\-the\-interior;
+鼻針療法 > nose\-acupuncture\-therapy;
+虛擬環境 > theorhetical\-environment;
+密切注意 > close\-attention\-\(to\-sth\);
+不拘一格 > not\-stick\-to\-one\-pattern;
+完全懂得 > to\-understand\-completely;
+不平則鳴 > where\-there\-is\-injustice;
+核不擴散 > nuclear\-nonproliferation;
+擺脫危機 > to\-break\-out\-of\-a\-crisis;
+富布賴特 > fullbright\-\(scholarship\);
+撥亂反正 > bring\-order\-out\-of\-chaos;
+安第斯山 > the\-andes\-mountain\-range;
+百煉成鋼 > be\-tempered\-into\-a\-steel;
+國務次卿 > under\-secretary\-of\-state;
+半信半疑 > half\-believe\,\-half\-doubt;
+拔火罐兒 > detachable\-stove\-chimney;
+古希臘語 > ancient\-greek\-\(language\);
+千絲萬縷 > linked\-in\-countless\-ways;
+破土典禮 > ground\-breaking\-ceremony;
+教學機構 > educational\-organization;
+不遺余力 > spare\-no\-pains\-or\-effort;
+表示敬意 > respectful\,\-show\-respect;
+路加福音 > gospel\-according\-to\-luke;
+通訊行業 > communications\-industry;
+本位主義 > selfish\-departmentalism;
+為所欲為 > do\-whatever\-one\-pleases;
+人民法院 > people''s\-court\-\(of\-law\);
+商業機構 > commercial\-organization;
+不翼而飛 > disappear\-without\-trace;
+畢恭畢敬 > reverent\-and\-respectful;
+科研人員 > \(scientific\)\-researcher;
+透露消息 > to\-disclose\-information;
+中國時報 > china\-times\-\(newspaper\);
+威廉斯堡 > williamsburg\-\(virginia\);
+便宜行事 > act\-at\-one''s\-discretion;
+商業管理 > business\-administration;
+基礎速率 > basic\-rate\-\(as\-in\-isdn\);
+手寫識別 > handwriting\-recognition;
+手寫辯識 > handwriting\-recognition;
+比比皆是 > can\-be\-found\-everywhere;
+棄舊換新 > to\-turn\-over\-a\-new\-leaf;
+不情之請 > my\-presumptuous\-request;
+雙連接站 > dual\-attachment\-station;
+補助組織 > auxiliary\-organizations;
+回顧歷史 > to\-look\-back\-at\-history;
+通訊協定 > communications\-protocol;
+步履維艱 > have\-difficulty\-walking;
+共同篩選 > collaborative\-filtering;
+大驚小怪 > much\-fuss\-about\-nothing;
+通信協定 > communications\-protocol;
+公安官員 > public\-safety\-officials;
+傳輸技術 > transmission\-technology;
+冰天雪地 > a\-world\-of\-ice\-and\-snow;
+政府機構 > government\-organization;
+不可理喻 > be\-impervious\-to\-reason;
+職業中學 > vocational\-high\-school;
+自食其果 > reap\-what\-one\-has\-sown;
+不露聲色 > not\-show\-one''s\-feeling;
+大煞風景 > dampening\-one''s\-spirit;
+羅曼語族 > romance\-language\-group;
+孰能生巧 > practice\-makes\-perfect;
+嗷嗷待哺 > cry\-piteously\-for\-food;
+不痛不痒 > scratching\-the\-surface;
+聯網環境 > networking\-environment;
+解釋執行 > interpreted\-\(computer\);
+不近人情 > not\-amenable\-to\-reason;
+政治機構 > political\-organization;
+另眼相看 > to\-view\-in\-a\-new\-light;
+信息技術 > information\-technology;
+安全考慮 > security\-consideration;
+信息管理 > information\-management;
+蹦蹦跳跳 > bouncing\-and\-vivacious;
+通信密度 > communications\-density;
+沒有差別 > there\-is\-no\-difference;
+不言而喻 > it\-goes\-without\-saying;
+步調一致 > to\-be\-united\-in\-action;
+通訊通道 > communications\-channel;
+採訪記者 > investigative\-reporter;
+比較而言 > comparatively\-speaking;
+離開故鄉 > to\-leave\-one''\-homeland;
+通信網絡 > communications\-network;
+數字通信 > digital\-communications;
+共產黨員 > communist\-party\-member;
+網路架構 > network\-infrastructure;
+技術情報 > information\-technology;
+美國之音 > voice\-of\-america\-radio;
+標準組織 > standards\-organization;
+獨攬市場 > to\-monopolize\-a\-market;
+彬彬有禮 > refined\-and\-courteous;
+完全兼容 > completely\-compatible;
+觀測衛星 > observation\-satellite;
+三萬七千 > thirty\-seven\-thousand;
+大赦國際 > amnesty\-international;
+情報官員 > intelligence\-official;
+電磁噪聲 > electromagnetic\-noise;
+長途網路 > long\-distance\-network;
+比色分析 > colorimetric\-analysis;
+庫爾德人 > kurdish\-person\|people;
+微軟公司 > microsoft\-corporation;
+不識抬舉 > fail\-to\-appreciate\-sb;
+席卷亞洲 > to\-sweep\-through\-asia;
+作業環境 > operating\-environment;
+智慧產權 > intellectual\-property;
+高級官員 > high\-ranking\-official;
+半夜三更 > in\-the\-depth\-of\-night;
+取消禁令 > to\-life\-a\-prohibition;
+實際應用 > practical\-application;
+生產能力 > manufacturing\-ability;
+總統選舉 > presidential\-election;
+不擇手段 > by\-fair\-means\-or\-foul;
+國際標準 > interntional\-standard;
+金陵大學 > university\-of\-nanking;
+異質網路 > heterogeneous\-network;
+白手起家 > build\-up\-from\-nothing;
+葡萄牙語 > portuguese\-\(language\);
+一臂之力 > \(lend\)\-a\-helping\-hand;
+不倫不類 > neither\-fish\-nor\-fowl;
+基本原理 > fundamental\-principle;
+撫養成人 > to\-bring\-up\-\(a\-child\);
+通信服務 > communication\-service;
+國營企業 > nationalized\-industry;
+二十八號 > 28th\-day\-of\-the\-month;
+本固枝榮 > when\-the\-root\-is\-firm;
+傳輸設備 > transmission\-facility;
+不是味兒 > not\-the\-right\-flavour;
+操作環境 > operating\-environment;
+隨機時間 > random\-period\-of\-time;
+傳輸距離 > transmission\-distance;
+另起爐灶 > to\-start\-from\-scratch;
+首腦會議 > leadership\-conference;
+如出一轍 > be\-precisely\-the\-same;
+矮杆品種 > short\-stalked\-variety;
+運算環境 > operating\-environment;
+絞盡腦汁 > to\-wrack\-one''s\-brains;
+光磁碟機 > magneto\-optical\-drive;
+國有企業 > nationalized\-business;
+維吾爾人 > uighur\-person\|people;
+開除學籍 > to\-expel\-from\-school;
+首席代表 > chief\-representative;
+物理結構 > physical\-composition;
+國會議長 > speaker\-of\-the\-house;
+應用平台 > application\-platform;
+匈牙利語 > hungarian\-\(language\);
+不信任案 > no\-confidence\-motion;
+改善關係 > to\-improve\-relations;
+停火協議 > cease\-fire\-agreement;
+二十二號 > 22\-nd\-day\-of\-a\-month;
+確有其事 > \(confirm\-to\-be\)\-true;
+大型企業 > large\-scale\-industry;
+使徒行傳 > acts\-of\-the\-apostles;
+必不可少 > absolutely\-necessary;
+不在話下 > be\-nothing\-difficult;
+應用軟件 > application\-software;
+交換技術 > switching\-technology;
+程式語言 > programming\-language;
+發表聲明 > to\-issue\-a\-statement;
+電腦語言 > programming\-language;
+電子工業 > electronics\-industry;
+召開會議 > to\-call\-a\-conference;
+商業應用 > business\-application;
+每況愈下 > steadily\-deteriorate;
+軍事機構 > military\-institution;
+判處死刑 > to\-sentance\-to\-death;
+貨幣貶值 > currency\-devaluation;
+按照法律 > according\-to\-the\-law;
+北回歸線 > the\-tropic\-of\-cancer;
+電子元件 > electronic\-component;
+經濟衰退 > \(economic\)\-recession;
+光二極管 > light\-emitting\-diode;
+不穩平衡 > unstable\-equilibrium;
+信息資源 > information\-resource;
+六十五歲 > sixty\-five\-years\-old;
+智能大樓 > intelligent\-building;
+少數民族 > minority\-nationality;
+全面禁止 > complete\-prohibition;
+騾馬大車 > mule\-and\-horse\-carts;
+經濟發展 > economic\-development;
+通訊系統 > communication\-system;
+不二法門 > the\-one\-and\-only\-way;
+無價珍珠 > pearl\-of\-great\-price;
+未成年者 > minor\-\(not\-an\-adult\);
+伊斯蘭堡 > islamabad\-\(pakistan\);
+二十四號 > 24\-th\-day\-of\-a\-month;
+大失所望 > greatly\-dissapointed;
+企業集團 > industry\-association;
+管理接口 > management\-interface;
+應用軟體 > application\-software;
+生產設備 > production\-equipment;
+義務教育 > cumpulsory\-education;
+傳輸控制 > transmission\-control;
+不懷好意 > harbour\-evil\-designs;
+診斷功能 > diagnostic\-function;
+傳輸媒體 > transmission\-medium;
+起死回生 > arise\-from\-the\-dead;
+高階語言 > high\-level\-language;
+美國人民 > the\-american\-people;
+面嚮連接 > connection\-oriented;
+專業人才 > expert\-\(in\-a\-field\);
+無縫連接 > seamless\-connection;
+傳輸媒質 > transmission\-medium;
+層見迭出 > to\-occur\-frequently;
+美國以外 > outside\-of\-the\-u\.s\.;
+此時此刻 > at\-this\-very\-moment;
+多黨選舉 > multiparty\-election;
+光纖衰減 > optical\-attenuation;
+不勞而獲 > reap\-without\-sowing;
+技術標準 > technology\-standard;
+開發過程 > development\-process;
+通信負載 > communications\-load;
+常規武器 > conventional\-weapon;
+統計結果 > statistical\-results;
+司空見慣 > a\-common\-occurrence;
+二十七號 > 27th\-day\-of\-a\-month;
+視而不見 > turn\-a\-blind\-eye\-to;
+電子文件 > electronic\-document;
+結構助詞 > structural\-particle;
+字斟句酌 > weighing\-every\-word;
+政治關係 > political\-relations;
+相互兼容 > mutually\-compatible;
+尋事生非 > to\-look\-for\-trouble;
+小寫字母 > lowercase\-\(letters\);
+管理功能 > management\-function;
+高級語言 > high\-level\-language;
+分佈控制 > distributed\-control;
+網絡應用 > network\-application;
+機械翻譯 > machine\-translation;
+軟件技術 > software\-technology;
+奶油菜花 > creamed\-cauliflower;
+光發送器 > optical\-transmitter;
+網絡環境 > network\-environment;
+愛人如己 > love\-others\-as\-self;
+阿拉巴馬 > alabama\-\(u\.s\.state\);
+終點地址 > destination\-address;
+網路應用 > network\-application;
+目標地址 > destination\-address;
+二十六號 > 26th\-day\-of\-a\-month;
+中國當局 > chinese\-authorities;
+合情合理 > reasonable\-and\-fair;
+百依百順 > docile\-and\-obedient;
+半自耕農 > semi\-tenant\-peasant;
+網路環境 > network\-environment;
+反彈導彈 > antimissile\-missile;
+生產設施 > production\-facility;
+葡萄牙人 > portuguese\-\(person\);
+不絕如縷 > hanging\-by\-a\-thread;
+技術知識 > technical\-knowledge;
+美國軍人 > american\-serviceman;
+國際貿易 > international\-trade;
+人造語言 > artificial\-language;
+不敗之地 > invincible\-position;
+自身利益 > one''s\-own\-interests;
+競爭產品 > competitive\-product;
+非核國家 > non\-nuclear\-country;
+氣候狀況 > climatic\-conditions;
+環形結構 > ring\-configuration;
+西班牙語 > spanish\-\(language\);
+一般來說 > generally\-speaking;
+首腦會晤 > leadership\-meeting;
+重要問題 > an\-important\-issue;
+領先地位 > lead\(ing\)\-position;
+信息系統 > information\-system;
+種族清洗 > \"ethnic\-cleansing\";
+乒乓球檯 > table\-tennis\-table;
+非常嚴厲 > to\-punish\-severely;
+內部結構 > internal\-strucutre;
+數據通信 > data\-communication;
+非常感謝 > extremely\-grateful;
+克隆技術 > cloning\-technology;
+電子網絡 > electronic\-network;
+白麵書生 > pale\-faced\-scholar;
+財務軟件 > financial\-software;
+西班牙文 > spanish\-\(language\);
+古典語言 > classical\-language;
+兩個中國 > two\-china\-\(policy\);
+外來投資 > foreign\-investment;
+土耳其語 > turkish\-\(language\);
+不正之風 > unhealthy\-tendency;
+集成電路 > integrated\-circuit;
+閉關政策 > closed\-door\-policy;
+網絡技術 > network\-technology;
+中國政府 > chinese\-government;
+令牌環網 > token\-ring\-network;
+大明鼎鼎 > a\-grand\-reputation;
+貿易組織 > trade\-organization;
+遍地開花 > blossom\-everywhere;
+網絡管理 > network\-management;
+高速網絡 > high\-speed\-network;
+書面許可 > written\-permission;
+聯合公報 > joint\-announcement;
+研究機構 > research\-institute;
+佛蘭芒語 > flemish\-\(language\);
+國會議員 > member\-of\-congress;
+最近幾年 > the\-last\-few\-years;
+精簡開支 > to\-reduce\-spending;
+不置可否 > decline\-to\-comment;
+三角腹帶 > athletic\-supporter;
+衛生設備 > sanitary\-equipment;
+造成問題 > to\-create\-an\-issue;
+總的來說 > generally\-speaking;
+色情小說 > pornographic\-novel;
+貴妃醉酒 > the\-drunken\-beauty;
+電子信箱 > electronic\-mailbox;
+新加坡人 > singaporean\-person;
+驚濤駭浪 > perilous\-situation;
+大力發展 > vigorous\-expansion;
+服務規章 > service\-regulation;
+竭盡全力 > to\-spare\-no\-effort;
+不折不扣 > a\-hundred\-per\-cent;
+科研樣機 > research\-prototype;
+區域網路 > local\-area\-network;
+發送功率 > transmission\-power;
+政府警告 > government\-warning;
+核能技術 > nuclear\-technology;
+意大利語 > italian\-\(language\);
+北京大學 > beijing\-university;
+區域網絡 > local\-area\-network;
+網絡科技 > network\-technology;
+聯邦政府 > federal\-government;
+電腦業者 > software\-developer;
+進行編程 > executable\-program;
+虛擬連接 > virtual\-connection;
+客戶應用 > client\-application;
+不隨意肌 > involuntary\-muscle;
+採取措施 > to\-adopt\-a\-measure;
+哈佛大學 > harvard\-university;
+網管系統 > network\-management;
+暗線光譜 > dark\-line\-spectrum;
+電視節目 > television\-program;
+中國人民 > the\-chinese\-people;
+簡短介紹 > brief\-introduction;
+海灣戰爭 > \(persian\)\-gulf\-war;
+地球大氣 > earth''s\-atmosphere;
+簡要介紹 > brief\-introduction;
+服務質量 > quality\-of\-service;
+不攻自破 > collapse\-of\-itself;
+文化傳統 > cultural\-tradition;
+網絡遷移 > network\-migration;
+電腦軟件 > computer\-software;
+資料傳輸 > data\-transmission;
+國防部長 > defence\-secretary;
+巨大壓力 > enormous\-pressure;
+數據傳輸 > data\-transmission;
+政治氣候 > political\-climate;
+廣域網路 > wide\-area\-network;
+教友大會 > church\-conference;
+軍事力量 > military\-strength;
+電話服務 > telephone\-service;
+阿拉伯語 > arabic\-\(language\);
+支柱產業 > mainstay\-industry;
+多站地址 > multicast\-address;
+經濟安全 > economic\-security;
+外交風波 > diplomatic\-crisis;
+電話網路 > telephone\-network;
+反過來說 > on\-the\-other\-hand;
+歐洲語言 > european\-language;
+網絡設備 > network\-equipment;
+日益增加 > to\-increase\-daily;
+經濟力量 > economic\-strength;
+變本加厲 > become\-aggravated;
+光纖接口 > optical\-interface;
+商業行為 > business\-activity;
+軍費開支 > military\-spending;
+軟件平臺 > software\-platform;
+按圖索驥 > try\-to\-locate\-sth;
+希伯來語 > hebrew\-\(language\);
+開發週期 > development\-cycle;
+阿拉伯文 > arabic\-\(language\);
+戰略夥伴 > strategic\-partner;
+靜脈吸毒 > intraveneous\-drug;
+無期徒刑 > life\-imprisonment;
+百分之百 > a\-hundred\-percent;
+萊溫斯基 > \(monica\)\-lewinsky;
+傳輸服務 > transport\-service;
+綜合布線 > integrated\-wiring;
+傳輸通道 > transport\-channel;
+政府部門 > government\-branch;
+新聞週刊 > newsweek\-magazine;
+直接競爭 > direct\-competitor;
+醫療經驗 > medical\-expertise;
+廣播地址 > broadcast\-address;
+生物武器 > biological\-weapon;
+暗無天日 > complete\-darkness;
+高級研究 > advanced\-research;
+自主系統 > autonomous\-system;
+白金漢宮 > buckingham\-palace;
+運行狀況 > operational\-state;
+困難在於 > the\-problem\-is\.\.\.;
+日耳曼語 > germanic\-language;
+傳輸協定 > transfer\-protocol;
+大刀闊斧 > bold\-and\-decisive;
+特別待遇 > special\-treatment;
+專用網路 > dedicated\-network;
+敘利亞文 > syriac\-\(language\);
+傳輸速率 > transmission\-rate;
+不歡而散 > part\-on\-bad\-terms;
+中華民國 > republic\-of\-china;
+並駕齊驅 > run\-neck\-and\-neck;
+難以應付 > hard\-to\-deal\-with;
+硬件平臺 > hardware\-platform;
+官方語言 > official\-language;
+北京近郊 > suburb\-of\-beijing;
+一般原則 > general\-principle;
+射頻干擾 > radio\-interferece;
+四面八方 > in\-all\-directions;
+國家安全 > national\-security;
+海洋溫度 > ocean\-temperature;
+網際協定 > internet\-protocol;
+外交關係 > foreign\-relations;
+巴克夏豬 > berkshire\-\(swine\);
+不治之症 > incurable\-disease;
+業界標準 > industry\-standard;
+陸基導彈 > land\-based\-missle;
+西番雅書 > book\-of\-zephaniah;
+專家評論 > expert\-commentary;
+嚇得發抖 > tremble\-with\-fear;
+四門轎車 > sedan\-\(motor\-car\);
+愛不釋手 > fondle\-admiringly;
+從頭到腳 > from\-head\-to\-foot;
+軍事實力 > military\-strength;
+廣播網路 > broadcast\-network;
+笨口拙舌 > awkward\-in\-speech;
+巴斯克語 > basque\-\(language\);
+華北平原 > north\-china\-plain;
+救恩計劃 > plan\-of\-salvation;
+航空母艦 > aircraft\-carrier;
+中國大陸 > chinese\-mainland;
+影像會議 > video\-conference;
+悲歡離合 > joys\-and\-sorrows;
+百里挑一 > one\-in\-a\-hundred;
+語法術語 > grammatical\-term;
+更高性能 > high\-performance;
+軍事科學 > military\-science;
+器官移殖 > organ\-transplant;
+影像處理 > image\-processing;
+人事部門 > personnel\-office;
+潛在威脅 > potential\-threat;
+統計數據 > statistical\-data;
+特定含義 > specific\-meaning;
+金融系統 > financial\-system;
+導致死亡 > to\-lead\-to\-death;
+板上釘釘 > that\-clinches\-it;
+電腦企業 > computer\-company;
+唉聲嘆氣 > heave\-deep\-sighs;
+不好意思 > feel\-embarrassed;
+正常工作 > normal\-operation;
+傳真發送 > fax\-transmission;
+操作系統 > operating\-system;
+傳輸媒界 > transport\-method;
+移動電話 > mobile\-telephone;
+網絡直徑 > network\-diameter;
+成群結隊 > in\-large\-numbers;
+無所不賣 > to\-sell\-anything;
+通用電器 > general\-electric;
+朝鮮半島 > korean\-peninsula;
+有關人士 > persons\-involved;
+耶利米書 > book\-of\-jeremiah;
+金融市場 > financial\-market;
+兩岸對話 > bilaterial\-talks;
+不經之談 > absurd\-statement;
+路由協定 > routing\-protocol;
+網路平台 > network\-platform;
+光檢測器 > optical\-detector;
+電腦網路 > computer\-network;
+波爾多液 > bordeaux\-mixture;
+發達國家 > developed\-nation;
+已經進行 > already\-underway;
+傳送服務 > delivery\-service;
+讀者來信 > reader''s\-letters;
+哈巴谷書 > book\-of\-habakkuk;
+白壁微瑕 > a\-slight\-blemish;
+十幾個月 > ten\-months\-or\-so;
+不加思索 > without\-thinking;
+單模光纖 > singlemode\-fiber;
+最大能力 > maximum\-capacity;
+有線電視 > cable\-television;
+不變資本 > constant\-capital;
+電話信號 > telephone\-signal;
+威爾士語 > welsh\-\(language\);
+男子籃球 > men''s\-basketball;
+聯邦大樓 > federal\-building;
+普通問題 > common\-questions;
+輸送媒介 > transport\-medium;
+防衛武器 > defensive\-weapon;
+作業系統 > operating\-system;
+體育之窗 > window\-on\-sports;
+書寫語言 > written\-language;
+共享帶寬 > shared\-bandwidth;
+文化障礙 > cultural\-barrier;
+直接影響 > direct\-influence;
+與此同時 > at\-the\-same\-time;
+主要來源 > principle\-source;
+人民公社 > people''s\-commune;
+下面請看 > please\-see\-below;
+金融風波 > financial\-crisis;
+網絡協議 > network\-protocol;
+白衣戰士 > warrior\-in\-white;
+安如磐石 > as\-solid\-as\-rock;
+故障排除 > fault\-resolution;
+金融改革 > financial\-reform;
+行動電話 > mobile\-telephone;
+雌性接口 > female\-connector;
+心臟移殖 > heart\-transplant;
+遙控操作 > remote\-operation;
+簡單的說 > to\-put\-it\-simply;
+光接收器 > optical\-receiver;
+機械語言 > machine\-language;
+胡志明市 > ho\-chi\-minh\-city;
+不知所云 > not\-know\-what\-sb;
+電腦公司 > computer\-company;
+聯席會議 > joint\-conference;
+交換網路 > switched\-network;
+骨幹網路 > backbone\-network;
+軟件企業 > software\-company;
+力量均衡 > balance\-of\-power;
+施洗約翰 > john\-the\-baptist;
+尼希米記 > book\-of\-nehemiah;
+報紙報導 > newspaper\-report;
+金融危機 > financial\-crisis;
+離開北京 > to\-leave\-beijing;
+幾乎完全 > almost\-entirely;
+信息時代 > information\-age;
+產品經理 > product\-manager;
+軍事威脅 > military\-threat;
+網路服務 > network\-service;
+研究中心 > research\-center;
+崇拜儀式 > worship\-service;
+方興未艾 > to\-be\-unfolding;
+雙邊貿易 > bilateral\-trade;
+軍事部門 > military\-branch;
+除此之外 > apart\-from\-this;
+太陽公司 > sun\-corporation;
+外國資本 > foreign\-capital;
+豐富多彩 > richly\-colorful;
+不白之冤 > unrighted\-wrong;
+戒備森嚴 > heavily\-guarded;
+半途而廢 > give\-up\-halfway;
+批量生產 > to\-mass\-produce;
+操作速率 > operating\-speed;
+聯合發表 > joint\-statement;
+不完全葉 > incomplete\-leaf;
+核反應堆 > nuclear\-reactor;
+經濟改革 > economic\-reform;
+半壁江山 > half\-of\-country;
+古典音樂 > classical\-music;
+不可多得 > hard\-to\-come\-by;
+重新開始 > resume\,\-restart;
+電子郵件 > electronic\-mail;
+經濟前途 > economic\-future;
+工讀學校 > the\-reformatory;
+嚴重關切 > serious\-concern;
+經濟危機 > economic\-crisis;
+動態助詞 > aspect\-particle;
+暴跳如雷 > stamp\-with\-fury;
+以西結書 > book\-of\-ezekiel;
+化學武器 > chemical\-weapon;
+登記用戶 > registered\-user;
+嚴重問題 > serious\-problem;
+當務之急 > urgent\-priority;
+軟件系統 > software\-system;
+購物中心 > shopping\-center;
+壁壘森嚴 > closely\-guarded;
+瑪拉基書 > book\-of\-malachi;
+貿易夥伴 > trading\-partner;
+月份會議 > monthly\-meeting;
+研究報告 > research\-report;
+先進武器 > advanced\-weapon;
+大發雷霆 > extremely\-angry;
+美國政府 > u\.s\.\-government;
+塞爾特語 > celtic\-language;
+措辭強硬 > strongly\-worded;
+公司會議 > company\-meeting;
+改變形像 > transfiguration;
+百兒八十 > about\-a\-hundred;
+多模光纖 > multimode\-fiber;
+軟件市場 > software\-market;
+校園骨幹 > campus\-backbone;
+沒有聯繫 > to\-be\-unrelated;
+世界最大 > world''s\-largest;
+尖銳批評 > sharp\-criticism;
+電腦系統 > computer\-system;
+貨幣危機 > monetary\-crisis;
+暗送秋波 > make\-eyes\-at\-sb;
+數位網路 > digital\-network;
+全力以赴 > do\-at\-all\-costs;
+虛擬網絡 > virtual\-network;
+光明日報 > guangming\-daily;
+歷史久遠 > ancient\-history;
+斯拉夫語 > slavic\-language;
+外國公司 > foreign\-company;
+商業中心 > business\-center;
+不相上下 > equally\-matched;
+機密文件 > secret\-document;
+具體計劃 > a\-concrete\-plan;
+文書處理 > word\-processing;
+預防措施 > protective\-step;
+公然表示 > to\-state\-openly;
+負債纍纍 > heavily\-in\-debt;
+經濟體制 > economic\-system;
+不過爾爾 > merely\-mediocre;
+流感病毒 > influenza\-virus;
+衛生官員 > health\-official;
+具體問題 > concrete\-issue;
+國防預算 > defence\-budget;
+裁減軍備 > arms\-reduction;
+出口商品 > export\-product;
+改革進程 > reform\-process;
+薄胎瓷器 > eggshell\-china;
+擺蕩吊環 > swinging\-rings;
+全球氣候 > global\-climate;
+對外政策 > foreign\-policy;
+進行通信 > to\-communicate;
+不咎既往 > not\-censure\-sb;
+校園網絡 > campus\-network;
+數位信號 > digital\-signal;
+生長激素 > growth\-hormone;
+指揮中心 > command\-center;
+電話線路 > telephone\-line;
+語氣助詞 > modal\-particle;
+約書亞記 > book\-of\-joshua;
+經濟有效 > cost\-effective;
+堅決否認 > to\-firmly\-deny;
+書寫符號 > writing\-symbol;
+不知死活 > act\-recklessly;
+波羅的海 > the\-baltic\-sea;
+桌面系統 > desktop\-system;
+東南亞國 > southeast\-asia;
+小型企業 > small\-business;
+資料介面 > data\-interface;
+不怎麼樣 > not\-up\-to\-much;
+非常重要 > very\-important;
+醫學專家 > medical\-expert;
+先進水平 > advanced\-level;
+數據接口 > data\-interface;
+連鎖反應 > chain\-reaction;
+特別感謝 > special\-thanks;
+人壽保險 > life\-insurance;
+數據介面 > data\-interface;
+但以理書 > book\-of\-daniel;
+迫不得已 > have\-no\-choice;
+評價分類 > rank\,\-classify;
+從事研究 > to\-do\-research;
+以賽亞書 > book\-of\-isaiah;
+半數以上 > more\-than\-half;
+檔案屬性 > file\-attribute;
+從來沒有 > have\|has\-never;
+以斯帖記 > book\-of\-esther;
+最佳利益 > best\-interests;
+惡性循環 > vicious\-circle;
+不省人事 > be\-unconscious;
+百無聊賴 > bored\-to\-death;
+醫學中心 > medical\-center;
+白色人種 > the\-white\-race;
+綜合報導 > summary\-report;
+大同小異 > almost\-similar;
+卑躬屈節 > bow\-and\-scrape;
+恭賀新禧 > happy\-new\-year;
+前生召喚 > foreordination;
+網際電話 > internet\-phone;
+蘋果電腦 > apple\-computer;
+不脛而走 > get\-round\-fast;
+三輪車伕 > pedicab\-driver;
+飽經風霜 > weather\-beaten;
+全心全意 > heart\-and\-soul;
+泰米爾語 > tamil\-language;
+不期而遇 > meet\-by\-chance;
+近乎同步 > plesiochronous;
+哥本哈根 > copenhagen\-\?\?\?;
+百米賽跑 > 100\-metre\-dash;
+調查報告 > memoir\,\-report;
+數字信號 > digital\-signal;
+世界經濟 > global\-economy;
+通用汽車 > general\-motors;
+北京週報 > beijing\-review;
+源點地址 > source\-address;
+這次危機 > present\-crisis;
+出口產品 > export\-product;
+多工運作 > multithreading;
+二氧化碳 > carbon\-dioxide;
+網絡設計 > network\-design;
+五年計劃 > five\-year\-plan;
+市場經濟 > market\-economy;
+檔案執行 > file\-execution;
+互動電視 > interactive\-tv;
+公眾意見 > public\-opinion;
+歐洲聯盟 > european\-union;
+檔案轉送 > file\-transfer;
+排山倒海 > earth\-shaking;
+經營費用 > business\-cost;
+直截了當 > plain\-talking;
+冷戰以後 > post\-cold\-war;
+勢在必行 > be\-imperative;
+舊約全書 > old\-testament;
+幾個小時 > several\-hours;
+不可缺少 > indispensable;
+視窗基準 > windows\-based;
+電郵位置 > email\-address;
+研究領域 > research\-area;
+進接服務 > access\-server;
+二次大戰 > world\-war\-two;
+基本概念 > basic\-concept;
+貿易順差 > trade\-surplus;
+武器系統 > weapon\-system;
+家用電腦 > home\-computer;
+大公無私 > just\-and\-fair;
+新約全書 > new\-testament;
+亞洲國家 > asian\-country;
+暴風驟雨 > violent\-storm;
+捉取圖像 > capture\-image;
+拜金主義 > money\-worship;
+永久和平 > lasting\-peace;
+哈薩克人 > kazakh\-person;
+巡航導彈 > cruise\-missle;
+暴力犯罪 > violent\-crime;
+何西阿書 > book\-of\-hosea;
+不成文法 > unwritten\-law;
+亞太國家 > asian\-country;
+目標市場 > target\-market;
+最高法院 > supreme\-court;
+最後更新 > latest\-update;
+杏仁豆腐 > almond\-junket;
+這種方式 > \(in\)\-this\-way;
+保護主義 > protectionism;
+月球表面 > lunar\-surface;
+地方停車 > parking\-place;
+知名人士 > public\-figure;
+美國國會 > u\.s\.\-congress;
+不幸的是 > unfortunately;
+光纖電纜 > optical\-fiber;
+社交語言 > lingua\-franca;
+越來越多 > more\-and\-more;
+百科全書 > encyclopaedia;
+功率惡化 > power\-penalty;
+不可抗力 > force\-majeure;
+中國銀行 > bank\-of\-china;
+響應時間 > response\-time;
+傳輸模式 > transfer\-mode;
+不知不覺 > unconsciously;
+前所未有 > unprecedented;
+訪問方式 > access\-method;
+檔案建立 > file\-creation;
+出生日期 > date\-of\-birth;
+不可思議 > inconceivable;
+格子花呢 > plaid\,\-tartan;
+雙生兄弟 > twin\-brothers;
+最大速率 > maximum\-speed;
+現實情況 > current\-state;
+包羅萬象 > all\-embracing;
+視頻節目 > video\-program;
+羅馬字母 > roman\-letters;
+不可名狀 > indescribable;
+其他的人 > other\-people;
+媒體報導 > media\-report;
+和平條約 > peace\-treaty;
+股票市場 > stock\-market;
+大驚失色 > apprehensive;
+高層旅館 > luxury\-hotel;
+靈的世界 > spirit\-world;
+出乎預料 > unexpectedly;
+地方主義 > \"local\-\-ism\";
+激光唱片 > compact\-disk;
+中央銀行 > central\-bank;
+斯密約瑟 > joseph\-smith;
+目前世界 > modern\-world;
+民意調查 > opinion\-poll;
+現代音樂 > modern\-music;
+製造業者 > manufacturer;
+心理學家 > psychologist;
+不能抵抗 > irresistible;
+過境簽証 > transit\-visa;
+耶穌基督 > jesus\-christ;
+記者報導 > press\-report;
+多工作業 > multitaksing;
+不大離兒 > pretty\-close;
+本來面目 > true\-colours;
+網路節點 > network\-node;
+不可收拾 > irremediable;
+國家機密 > state\-secret;
+調查人員 > investigator;
+武裝部隊 > armed\-forces;
+生產企業 > manufacturer;
+名錄服務 > name\-service;
+語音信號 > voice\-signal;
+令人驚異 > surprisingly;
+基礎設施 > base\-station;
+生命跡象 > sign\-of\-life;
+知識分子 > intellectual;
+阿摩司書 > book\-of\-amos;
+用戶定義 > user\-defined;
+成吉思汗 > genghis\-khan;
+主幹網路 > core\-network;
+民意測驗 > opinion\-poll;
+歷代志下 > 2\-chronicles;
+歷代志上 > 1\-chronicles;
+指令名字 > command\-name;
+一小部分 > a\-small\-part;
+主幹網絡 > core\-network;
+揮霍無度 > extravagance;
+登陸月球 > moon\-landing;
+軍事援助 > military\-aid;
+本本主義 > book\-worship;
+五角大樓 > the\-pentagon;
+摩西律法 > law\-of\-moses;
+迅速蔓延 > rapid\-spread;
+以斯拉記 > book\-of\-ezra;
+不知所措 > be\-at\-a\-loss;
+形形色色 > all\-kinds\-of;
+檔案服務 > file\-servoce;
+降落地點 > landing\-site;
+三十五億 > 3\-\.5\-billion;
+二十六歲 > 26\-years\-old;
+數據網絡 > data\-network;
+龐然大物 > huge\-monster;
+世界知名 > world\-famous;
+知識份子 > intellectual;
+快速發展 > rapid\-growth;
+多種語言 > multilingual;
+安全問題 > safety\-issue;
+沉重打擊 > to\-hit\-hard;
+自然而然 > involuntary;
+不贊一詞 > keep\-silent;
+人體器官 > human\-organ;
+民族主義 > nationalism;
+精子密度 > sperm\-count;
+遷居移民 > immigration;
+野生動物 > wild\-animal;
+聖誕老人 > santa\-claus;
+浪漫主義 > romanticism;
+不可知論 > agnosticism;
+不切實際 > unrealistic;
+典型用途 > typical\-use;
+富於想像 > imaginative;
+國事訪問 > state\-visit;
+半半拉拉 > incompleted;
+不可分離 > inseparable;
+無產階級 > proletariat;
+失去意識 > unconscious;
+百萬富翁 > millionaire;
+貴族社會 > aristocracy;
+波多黎各 > puerto\-rico;
+立法機關 > legislature;
+主要原因 > main\-reason;
+有生以來 > since\-birth;
+貝加爾湖 > lake\-baikal;
+和平會談 > peace\-talks;
+不變價格 > fixed\-price;
+女繼承人 > inheritress;
+假設語氣 > subjunctive;
+地心吸力 > gravitation;
+運貨馬車 > cargo\-wagon;
+第三世界 > third\-world;
+無關緊要 > indifferent;
+大便乾燥 > constipated;
+不偏不倚 > even\-handed;
+分散注意 > to\-distract;
+不毛之地 > barren\-land;
+超級市場 > supermarket;
+必要條件 > requirement;
+分期付款 > installment;
+舉例來說 > for\-example;
+世界貿易 > world\-trade;
+莎士比亞 > shakespeare;
+四分之一 > one\-quarter;
+訊框傳送 > frame\-relay;
+畫插圖者 > illustrator;
+越南戰爭 > vietnam\-war;
+無所不在 > omnipresent;
+不出所料 > as\-expected;
+世界和平 > world\-piece;
+不同凡響 > outstanding;
+應用程式 > application;
+轉來轉去 > rove\-around;
+針鋒相對 > tit\-for\-tat;
+閉會祈禱 > benediction;
+不可估量 > inestimable;
+開放系統 > open\-system;
+有限公司 > corporation;
+空間探測 > space\-probe;
+基礎問題 > basic\-issue;
+邁阿密灘 > miami\-beach;
+身心爽快 > refreshment;
+祭司權術 > priestcraft;
+恰如其份 > appropriate;
+在這期間 > during\-time;
+無法忍受 > intolerable;
+反動分子 > reactionary;
+使用方便 > easy\-to\-use;
+無法形容 > unspeakable;
+有同情心 > sympathetic;
+進行性交 > to\-have\-sex;
+喜歡吵架 > quarrelsome;
+模糊邏輯 > fuzzy\-logic;
+就﹍而言 > considering;
+有選舉權 > constituent;
+測驗結果 > test\-result;
+管家職務 > stewardship;
+狗交媾般 > doggy\-style;
+專有名詞 > proper\-noun;
+朋比為奸 > to\-conspire;
+搬弄是非 > sow\-discord;
+冰染染料 > azoic\-dyes;
+四個小時 > four\-hours;
+天文學家 > astronomer;
+眼花繚亂 > be\-dazzled;
+魯佛爾宮 > the\-louvre;
+不堪忍受 > unbearable;
+娛樂中心 > recreation;
+自由貿易 > free\-trade;
+三分之二 > two\-thirds;
+總統任期 > presidency;
+不可逾越 > impassable;
+教堂墓地 > churchyard;
+行政長官 > magistrate;
+貴族論者 > aristocrat;
+新聞記者 > journalist;
+鞭闢入裡 > penetrated;
+他們自己 > themselves;
+阿塞拜疆 > azerbaijan;
+邏輯炸彈 > logic\-bomb;
+圖解說明 > illustrate;
+不屈不撓 > unyielding;
+大腦死亡 > brain\-dead;
+胡思亂想 > imaginings;
+一切事物 > everything;
+歌羅西書 > colossians;
+不由自主 > can''t\-help;
+曼徹斯特 > manchester;
+伽馬射線 > gamma\-rays;
+極為龐大 > monumental;
+有利可圖 > profitable;
+無所不能 > omnipotent;
+分離主義 > separatism;
+世界銀行 > world\-bank;
+無所不知 > omniscient;
+開會祈禱 > invocation;
+領導能力 > leadership;
+意見不合 > dissension;
+孟加拉國 > bangladesh;
+引人注意 > attractive;
+忘恩負義 > ungrateful;
+相同名字 > like\-named;
+使人信服 > convincing;
+取而代之 > substitute;
+電子空間 > cyberspace;
+微不足道 > negligible;
+達賴喇嘛 > dalai\-lama;
+不揣冒昧 > venture\-to;
+省略符號 > apostrophe;
+不對碴兒 > not\-proper;
+意想不到 > unexpected;
+冰上運動 > ice\-sports;
+美乃滋醬 > mayonnaise;
+陸軍中尉 > lieutenant;
+彪形大漢 > burly\-chap;
+萬事達卡 > mastercard;
+過渡時期 > transition;
+新聞媒體 > news\-media;
+堅定不移 > unswerving;
+此時以前 > heretofore;
+朝鮮戰爭 > korean\-war;
+難以置信 > incredible;
+共和政體 > republican;
+外交手腕 > diplomatic;
+畢業典禮 > graduation;
+腓立比書 > philipians;
+騎士風格 > knighthood;
+化妝舞會 > masquerade;
+女服物員 > stewardess;
+沒有知覺 > insensible;
+斑駮陸離 > variegated;
+氣勢洶洶 > aggressive;
+七十年代 > the\-1970''s;
+從今以後 > henceforth;
+視窗新技 > windows\-nt;
+縮小模型 > miniature;
+以弗所書 > ephesians;
+沒有形狀 > shapeless;
+用戶數據 > user\-data;
+開發人員 > developer;
+地質學家 > geologist;
+生物學家 > biologist;
+不可磨滅 > indelible;
+不亦樂乎 > extremely;
+按照字面 > literally;
+三分之一 > one\-third;
+不可救藥 > incurable;
+耶路撒冷 > jerusalem;
+褻瀆的話 > blasphemy;
+國內戰爭 > civil\-war;
+危地馬拉 > guatamala;
+加密後的 > encrypted;
+有攻擊性 > offensive;
+惡名昭彰 > notorious;
+經濟學家 > economist;
+阿空加瓜 > aconcagua;
+加拉太書 > galatians;
+網際色情 > cyberporn;
+花粉過敏 > hay\-fever;
+為時過早 > premature;
+聯合組織 > syndicate;
+有創造力 > ingenious;
+人物描寫 > portrayal;
+令人欽佩 > admirable;
+阿奇里斯 > aeschylus;
+孟加拉語 > bengalese;
+機械裝置 > machinery;
+斑翅山鶉 > partridge;
+不可勝數 > countless;
+總會會長 > president;
+毫無疑問 > certainty;
+澳大利亞 > australia;
+大寫鎖定 > caps\-lock;
+半工半讀 > part\-work;
+我們自己 > ourselves;
+羅徹斯特 > rochester;
+管弦樂團 > orchestra;
+白日做夢 > day\-dream;
+任何其他 > any\-other;
+巴勒斯坦 > palestine;
+在﹍旁邊 > alongside;
+先見之明 > foresight;
+隨之而後 > from\-that;
+上個星期 > last\-week;
+民主政治 > democracy;
+主管人員 > executive;
+財務秘書 > treasurer;
+生育能力 > fertility;
+共享軟體 > shareware;
+不受歡迎 > unwelcome;
+凹凸印刷 > embossing;
+撒都該人 > sadducees;
+共產主義 > communism;
+不以為然 > object\-to;
+社會主義 > socialism;
+蜜月假期 > honeymoon;
+同班同學 > classmate;
+具有主權 > sovereign;
+自動樓梯 > escalator;
+緊急事件 > emergency;
+退黑激素 > melatonin;
+不計其數 > countless;
+基督教徒 > christian;
+凹凸軋花 > embossing;
+不然的話 > otherwise;
+亞格門農 > agamemnon;
+不逞之徒 > desperado;
+置之度外 > disregard;
+憤憤不平 > indignant;
+下個星期 > next\-week;
+歷史學家 > historian;
+堅忍不拔 > fortitude;
+全場一致 > unanimous;
+羅切斯特 > rochester;
+表意文字 > ideograph;
+通貨膨脹 > inflation;
+變換設備 > converter;
+經濟學者 > economist;
+丙種射線 > gamma\-ray;
+意氣相投 > congenial;
+獲暴利者 > profiteer;
+斯洛伐克 > slovakia;
+油炸圈餅 > doughnut;
+因﹍之故 > inasmuch;
+雍容大度 > generous;
+好好兒地 > properly;
+騎士氣概 > chivalry;
+艾德蕾德 > adelaide;
+免費軟件 > freeware;
+以太網絡 > ethernet;
+桃花心木 > mahogany;
+標準規格 > standard;
+無論何時 > whenever;
+幾乎沒有 > scarcely;
+牧師之職 > ministry;
+六十四萬 > 64\-0\-000;
+蒙托羅拉 > motorola;
+人工流產 > abortion;
+喇叭水仙 > daffodil;
+國際網絡 > internet;
+無論何事 > anything;
+精力充沛 > vigorous;
+哥倫布紀 > columbus;
+左輪手槍 > revolver;
+哥倫比亞 > colombia;
+君主政治 > monarchy;
+人口稠密 > populous;
+引人注目 > striking;
+阿奇歷斯 > achilles;
+奧德修斯 > odysseus;
+坦桑尼亞 > tanzania;
+不顧一切 > reckless;
+勢如破竹 > sweeping;
+農家庭院 > farmyard;
+家庭作業 > homework;
+即將來臨 > imminent;
+音樂光碟 > music\-cd;
+五彩賓紛 > colorful;
+漢密爾頓 > hamilton;
+語言學家 > linguist;
+龍頭老大 > big\-boss;
+腓利門書 > philemon;
+電腦網絡 > internet;
+摩托羅拉 > motorola;
+巴基斯坦 > pakistan;
+巴巴多斯 > barbados;
+競選活動 > campaign;
+終端用戶 > end\-user;
+墨水瓶架 > inkstand;
+網際網路 > internet;
+無人駕駛 > unmanned;
+法利賽人 > pharisee;
+科羅拉多 > colorado;
+匪徒集團 > gangster;
+射頻噪音 > rf\-noise;
+人道主義 > humanism;
+一心一意 > intently;
+網際網絡 > internet;
+精神錯亂 > insanity;
+嘉年華會 > carnival;
+博茨瓦納 > botswana;
+壟斷販賣 > monopoly;
+保加利亞 > bulgaria;
+貴族身份 > lordship;
+肌肉發達 > muscular;
+流感疫苗 > flu\-shot;
+工作過度 > overwork;
+乙太網路 > ethernet;
+骨頭架子 > skeleton;
+愛因斯坦 > einstein;
+無論何處 > anywhere;
+公開指責 > denounce;
+歡迎光臨 > welcome;
+安提瓜島 > antigua;
+喪心病狂 > lunatic;
+格子棉布 > gingham;
+萬有引力 > gravity;
+消防隊員 > fireman;
+扳不倒兒 > tumbler;
+爬蟲動物 > reptile;
+退伍軍人 > veteran;
+外科醫生 > surgeon;
+在﹍之間 > between;
+十億位元 > gigabit;
+身體障害 > cripple;
+阿摩尼亞 > ammonia;
+蠕動前進 > wriggle;
+派給工作 > to\-task;
+薔薇花蕾 > rosebud;
+無論何人 > whoever;
+斯瓦希裡 > swahili;
+航空郵件 > airmail;
+亞特蘭大 > atlanta;
+進退兩難 > dilemma;
+不稂不莠 > useless;
+分析人士 > analyst;
+最低限度 > minimum;
+克什米爾 > kashmir;
+活動房屋 > trailer;
+什一奉獻 > tithing;
+墨西哥人 > mexican;
+加榮耀於 > glorify;
+不干不淨 > unclean;
+三位一體 > trinity;
+女用內衣 > chemise;
+公益事業 > utility;
+日常工作 > routine;
+男性親屬 > kinsman;
+貨物運輸 > freight;
+牙科醫生 > dentist;
+郡治安官 > sheriff;
+亞伯拉罕 > abraham;
+克羅地亞 > croatia;
+全神灌注 > rapture;
+專科院校 > academy;
+高速公路 > highway;
+給與資格 > qualify;
+印地安那 > indiana;
+不得而知 > unknown;
+航空公司 > airline;
+有耐久力 > durable;
+太陽黑子 > sunspot;
+希伯來書 > hebrews;
+奧林匹克 > olympic;
+亞利桑那 > arizona;
+蓋世太保 > gestapo;
+喋喋不休 > chatter;
+愛屋及烏 > love\-me;
+經濟制度 > economy;
+以馬內利 > emanuel;
+規劃人員 > planner;
+慈善機構 > charity;
+男性尊稱 > esquire;
+不三不四 > dubious;
+列王紀下 > 2\-kings;
+列王紀上 > 1\-kings;
+陸軍上校 > colonel;
+虛構小說 > fiction;
+外科手術 > surgery;
+各色各樣 > diverse;
+佛羅裡達 > florida;
+公爵夫人 > duchess;
+有好奇心 > curious;
+彼得後書 > 2\-peter;
+玻利維亞 > bolivia;
+小型櫃櫥 > cabinet;
+印像深刻 > impress;
+指導教授 > adviser;
+不知何故 > somehow;
+阿司匹林 > aspirin;
+金光閃爍 > spangle;
+互聯網絡 > network;
+奴隸制度 > slavery;
+恢復原狀 > restore;
+馬來西亞 > malasia;
+山胡桃木 > hickory;
+彼得前書 > 1\-peter;
+就寢時間 > bedtime;
+四輪馬車 > chariot;
+亞拉巴馬 > alabama;
+彈道導彈 > missile;
+有精神病 > insane;
+哺乳動物 > mammal;
+伊尼伊德 > aeneid;
+塞爾維亞 > serbia;
+使﹍豐富 > enrich;
+伊尼亞斯 > aeneas;
+驅逐出境 > deport;
+八分音符 > quaver;
+天竺牡丹 > dahlia;
+離奇有趣 > quaint;
+發嘎嘎聲 > rattle;
+超過限度 > exceed;
+不可告人 > hidden;
+力足以做 > afford;
+在﹍期間 > during;
+種族主義 > racism;
+徒步旅行 > hiking;
+旅行裝備 > outfit;
+地下鐵路 > subway;
+威士忌酒 > whisky;
+連字符號 > hyphen;
+廢除軍備 > disarm;
+顛倒過來 > invert;
+七月一號 > july\-1;
+點頭招呼 > beckon;
+伯仲叔季 > eldest;
+鼻口部分 > muzzle;
+尖聲啼哭 > squeal;
+命運註定 > ordain;
+人頭獅身 > sphinx;
+不幸之事 > mishap;
+在﹍之旁 > beside;
+約翰二書 > 2\-john;
+轟轟烈烈 > strong;
+十四行詩 > sonnet;
+二者之一 > either;
+約翰三書 > 3\-john;
+約翰一書 > 1\-john;
+美洲兀鷹 > condor;
+五分美金 > nickel;
+除了之外 > except;
+製陶工人 > potter;
+人口調查 > census;
+無論如何 > anyhow;
+出埃及記 > exodus;
+有藥癮者 > addict;
+釣魚用具 > tackle;
+比較喜歡 > prefer;
+阿多尼斯 > adonis;
+逃之夭夭 > escape;
+紫羅蘭色 > violet;
+傭人領班 > butler;
+不戰不和 > no\-war;
+蘇格蘭帽 > bonnet;
+減低速度 > retard;
+阿拉斯加 > alaska;
+使具體化 > embody;
+酒精飲料 > liquor;
+跑堂兒的 > waiter;
+使﹍能夠 > enable;
+生氣勃勃 > lively;
+無法無天 > outlaw;
+波斯尼亞 > bosnia;
+虛張聲勢 > bluff;
+未成年人 > minor;
+麵包師傅 > baker;
+感化餅乾 > wafer;
+非常害怕 > dread;
+一線微光 > gleam;
+五花八門 > myrid;
+斜紋軟呢 > tweed;
+德克薩斯 > texas;
+滿身塵埃 > dusty;
+調味肉汁 > gravy;
+標準尺寸 > gauge;
+在﹍之下 > below;
+在﹍之上 > above;
+蟲鳥叫聲 > chirp;
+動態影像 > video;
+三千五百 > 3\-500;
+示威運動 > rally;
+載貨汽車 > lorry;
+布帛菽粟 > cloth;
+神經過敏 > jumpy;
+伊斯蘭教 > islam;
+愁眉苦臉 > frown;
+吉普賽人 > gypsy;
+愛克斯光 > x\-ray;
+家庭教師 > tutor;
+露齒而笑 > grin;
+從容不迫 > calm;
+一角銀幣 > dime;
+飲食療養 > diet;
+目瞪口呆 > stun;
+擺龍門陣 > chat;
+到﹍之上 > onto;
+全體人員 > crew;
+遠程監控 > rmon;
+在﹍之中 > amid;
+小起重機 > jack;
+輕而易舉 > easy;
+金屬薄片 > foil;
+頭腦清楚 > sane;
+在水步行 > wade;
+出租汽車 > taxi;
+高爾夫球 > golf;
+電話鈴聲 > buzz;
+液晶顯示 > lcd;
+烏合之眾 > mob;
+索具裝置 > rig;
+公共汽車 > bus;
+莫名其妙 > odd;
+圓形木材 > log;
+不分勝負 > tie;
+衣服縫邊 > hem;
+圓形麵包 > bun;
+杜松子酒 > gin;
+在﹍之內 > in;
+直通車 > \"through\-train\"\-\(refers\-to\-the\-idea\-of\-retaining\-previous\-legislature\-after\-transition\-to\-chinese\-rule\-in\-hong\-kong\-or\-macau\);
+小臟鬼 > dirty\-little\-monster\-\(spoken\-affectionately\-to\-a\-child\-who\-has\-gotten\-him\(her\)self\-dirty\;\-literally\-\"little\-dirty\-ghost\"\);
+綺色佳 > ithaca\,\-ny\-\(but\-pronounced\-yi3\-se4\-jia1\,\-following\-a\-mistake\-made\-by\-hu2\-shi4\-胡適\);
+雷峰塔 > leifeng\-pagoda\,\-by\-west\-lake\-until\-it\-was\-destroyed\-\(also\-from\-madam\-white\-snake\);
+牡丹卡 > peony\-card\-\(credit\-card\-issued\-by\-industrial\-and\-commercial\-bank\-of\-china\);
+三岔口 > at\-the\-crossroads\,\-the\-name\-of\-a\-famous\-opera\,\-story\-from\-shui\-hu\-zhuan;
+李自成 > name\-of\-a\-person\,\-li\-zi\-cheng\,\-leader\-of\-ming\-dynasty\-peasant\-rebellion;
+江八點 > \"jiang\-zemin''s\-eight\-point\-formula\"\-\(for\-resuming\-a\-dialog\-with\-taiwan\);
+鄧亮洪 > tang\-liang\-hong\-\(opposition\-candidate\-in\-jan\-1996\-singapore\-elections\);
+吃大戶 > mass\-seizure\-of\-food\-from\-landlords\-during\-famines\-before\-liberation;
+李時珍 > li\-shi\-zhen\-\(1518\-1593\,\-famous\-doctor\,\-author\-of\-ben3\-cao3\-gang1\-mu4;
+禽流感 > \"bird\-flu\"\-\(flu\-carried\-by\-birds\-\-\-found\-in\-hong\-kong\-in\-late\-1997\);
+蒙代爾 > \(walter\)\-mondale\-\(us\-ambassador\-to\-japan\,\-former\-us\-vice\-president\);
+陳納德 > \(claire\)\-chennault\,\-commander\-of\-flying\-tigers\-during\-world\-war\-ii;
+維爾容 > \(johannes\-lodewikus\)\-viljoen\-\(south\-african\-ambassador\-to\-taiwan\);
+葛洲壩 > name\-of\-a\-place\,\-gezhouba\-dam\-on\-the\-changjiang\-river\,\-in\-sichuan;
+鼻韻母 > \(of\-chinese\-pronunciation\)\-a\-vowel\-followed\-by\-a\-nasal\-consonant;
+金永南 > kim\-yong\-nam\-\(north\-korean\-deputy\-premier\-and\-foreign\-minister\);
+斗批改 > struggle\-criticism\-transformation\-\(cultural\-revolution\-slogan\);
+端午節 > the\-dragon\-boat\-festival\-\(the\-5th\-day\-of\-the\-5th\-lunar\-month\);
+白茫茫 > \(of\-mist\,\-snow\,\-floodwater\,\-etc\)\-a\-vast\-expanse\-of\-whiteness;
+斯佩羅 > \(joan\)\-spero\-\(under\-secretary\-of\-state\-for\-economic\-affairs\);
+太極拳 > a\-kind\-of\-traditional\-chinese\-shadowboxing\-\(tai\-chi\-chuan\);
+會不會 > \(posing\-a\-question\:\-whether\-someone\,\-something\)\-can\-or\-not;
+抱佛腳 > clasp\-budda''s\-feet\-\-\-profess\-devotion\-only\-when\-in\-trouble;
+蛋花湯 > clear\-soup\-containing\-beaten\-egg\-and\-green\-leafy\-vegetable;
+金山寺 > jinshan\-temple\,\-where\-fahai\-lives\-\(from\-madam\-white\-snake\);
+並蒂蓮 > twin\-lotus\-flowers\-on\-one\-stalk\-\-\-a\-devoted\-married\-couple;
+飛虎隊 > flying\-tigers\-\(us\-airmen\-in\-china\-during\-world\-war\-two\);
+暗花兒 > a\-veiled\-design\-incised\-in\-porcelain\-or\-woven\-in\-fabric;
+拔罐子 > cupping\-technique\-used\-in\-traditional\-chinese\-medicine;
+元宵節 > the\-lantern\-festival\,\-january\-15\-on\-the\-lunar\-calendar;
+個體戶 > a\-small\-private\-business\-\(used\-in\-mainland\-china\-only\);
+景德鎮 > jing\-de\-zhen\-\(a\-chinese\-city\-in\-jiang\-xi\-江西\-province\);
+長城卡 > great\-wall\-card\-\(credit\-card\-issued\-by\-bank\-of\-china\);
+哈貝爾 > \(webster\)\-hubbell\-\(former\-associate\-attorney\-general\);
+萬壽山 > name\-of\-a\-place\,\-longevity\-hill\,\-in\-summer\-palace\-頤和園;
+拉那烈 > \(prince\)\-ranariddh\-\(son\-of\-king\-sihanouk\-of\-cambodia\);
+包干制 > a\-system\-of\-payment\-partly\-in\-kind\-and\-partly\-in\-cash;
+顏真卿 > name\-of\-a\-person\,\-yan\-zhenqing\,\-a\-famous\-calligrapher;
+白素貞 > \(name\-of\-a\-person\)\-bai\-suzhen\,\-from\-madam\-white\-snake;
+白冰冰 > pai\-ping\-ping\-\(well\-known\-taiwan\-performing\-artist\);
+伯恩斯 > \(nicholas\)\-burns\-\(us\-state\-department\-spokesperson\);
+尼赫魯 > \(jawaharlal\)\-nehru\-\(first\-prime\-minister\-of\-india\);
+撥浪鼓 > a\-drum\-shaped\-rattle\-\(used\-by\-pedlars\-or\-as\-a\-toy\);
+北大荒 > the\-great\-northern\-wilderness\-\(in\-northern\-china\);
+十五大 > 1\-5th\-party\-congress\-\(of\-chinese\-communist\-party\);
+李光耀 > lee\-kuan\-yew\-\(former\-prime\-minister\-of\-singapore\);
+跑江湖 > to\-make\-a\-living\-as\-a\-travelling\-performer\,\-etc\.;
+交易額 > sum\-or\-volume\-or\-amount\-of\-business\-transactions;
+林豐正 > lin\-feng\-cheng\-\(taiwan\-minister\-of\-the\-interior\);
+董建華 > tung\-chee\-hwa\-\(hong\-kong\-leader\-after\-july\-1997\);
+南京路 > nanjing\-st\.\,\-large\-commercial\-street\-in\-shanghai;
+八仙桌 > old\-fashioned\-square\-table\-to\-seat\-eight\-people;
+塞拉凡 > \(sonny\)\-seraphin\-\(haitian\-ambassador\-to\-taiwan\);
+金大中 > kim\-dae\-jung\-\(newly\-elected\-president\-of\-korea\);
+范斯坦 > \(dianne\)\-feinstein\-\(us\-senator\-from\-california\);
+液態水 > liquid\-water\-\(as\-opposed\-to\-steam\-or\-ice\,\-e\.g\.\);
+解放軍 > people''s\-liberation\-army\-\(ie\,\-the\-chinese\-army\);
+趙紫陽 > zhao\-ziyang\-\(former\-chinese\-leadership\-figure\);
+互通性 > interoperability\-\(of\-communications\-equipment\);
+全斗煥 > chun\-doo\-hwan\-\(former\-south\-korean\-president\);
+探路者 > pathfinder\-\(space\-craft\-sent\-to\-mars\-by\-nasa\);
+崔亞琳 > charles\-yah\-lin\-trie\-\(arkansas\-restauranteur\);
+專案組 > special\-\(legal\|judicial\)\-investigations\-group;
+長沙灣 > cheung\-sha\-wan\-\(poultry\-market\-in\-hong\-kong\);
+正常化 > normalization\-\(of\-diplomatic\-relations\,\-etc\);
+謝裡夫 > \(nawaz\)\-sharif\-\(prime\-minister\-of\-pakistan\);
+吳作棟 > goh\-chok\-tong\-\(prime\-minister\-of\-singapore\);
+工人黨 > workers''\-party\-\(singapore\-opposition\-party\);
+斯佩林 > spelling\-\(eg\,\-spelling\-entertainment\-group\);
+盧泰愚 > roh\-tae\-woo\-\(former\-south\-korean\-president\);
+齊白石 > name\-of\-a\-famous\-chinese\-artist\,\-qi\-bai\-shi;
+商務部 > commerce\-department\-\(of\-the\-us\-government\);
+老伴兒 > \(of\-an\-old\-married\-couple\)\-husband\-or\-wife;
+梆子腔 > a\-general\-term\-for\-local\-operas\-in\-shangxi;
+梅蘭芳 > name\-of\-a\-very\-famous\-beijing\-opera\-artist;
+行政院 > executive\-yuan\-\(government\-body\-in\-taiwan\);
+杰佛茲 > \(james\)\-jeffords\-\(us\-senator\-from\-vermont\);
+羅布泊 > lop\-nor\-\(nuclear\-testing\-site\-in\-xinjiang\);
+民進黨 > dpp\-\(democratic\-progressive\-party\,\-taiwan\);
+白花蛇 > long\-nosed\-pit\-viper\-\(agkistrodon\-acutus\);
+眾議員 > member\-of\-the\-us\-house\-of\-representatives;
+邁科裡 > \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+報告會 > public\-lecture\-\(with\-guest\-speakers\,\-etc\);
+利伯曼 > \(connecticut\-senator\-joseph\-i\.\)\-lieberman;
+麥科裡 > \(mike\)\-mccurry\-\(white\-house\-spokesperson\);
+神女峰 > name\-of\-a\-peak\-by\-changjiang\-three\-gorges;
+白曉燕 > pai\-hsiao\-yen\-\(daughter\-of\-pai\-ping\-ping\);
+金日成 > kim\-il\-sung\-\(former\-north\-korean\-leader\);
+太極劍 > a\-kind\-of\-traditional\-chinese\-sword\-play;
+司法部 > justice\-deparment\-\(of\-the\-us\-government\);
+庫納南 > \(andrew\)\-cunanan\-\(alleged\-serial\-killer\);
+黃建南 > john\-huang\-\(democratic\-party\-fundraiser\);
+黃岩島 > huangyan\-island\-\(in\-the\-south\-china\-sea\);
+機關報 > official\-\(government\-operated\)\-newspaper;
+入學率 > percentage\-of\-children\-who\-enter\-school;
+茅臺酒 > maotai\-or\-maitai\-\(chinese\-strong\-drink\);
+王羲之 > name\-of\-a\-person\,\-a\-famous\-calligrapher;
+邊角科 > leftover\-bits\-and\-pieces\-\(of\-industrial;
+阿昌族 > the\-achang\-nationality\-living\-in\-yunnan;
+佩洛西 > \(nancy\)\-pelosi\-\(member\-of\-us\-congress\);
+吐魯番 > the\-turfan\-basin\,\-in\-xinjiang\-province;
+半脫產 > partly\-released\-from\-productive\-labour;
+總書記 > general\-secretary\-\(of\-communist\-party\);
+沈國放 > chinese\-foreign\-ministry\-spokesperson;
+穆桂英 > mu\-gui\-ying\-\(name\-of\-a\-woman\-warrior\);
+孫女兒 > granddaughter\-\(daughter\-of\-one''s\-son\);
+尚慕杰 > james\-sasser\-\(us\-ambassador\-to\-china\);
+塞爾南 > \(eugene\)\-cernan\-\(apollo\-17\-astronaut\);
+年畫兒 > new\-year\-\(or\-spring\-festival\)\-picture;
+鐵飯碗 > \"iron\-rice\-bowl\"\-\-\-\-secure\-employment;
+胡志明 > ho\-chi\-minh\-\(vietnamese\-leader\,\-city\);
+徐悲鴻 > name\-of\-a\-famous\-painter\,\-xu\-beihong;
+花木蘭 > hua\-mu\-lan\-\(name\-of\-a\-woman\-warrior\);
+打不過 > not\-to\-be\-able\-to\-beat\-or\-defeat\-sb\.;
+發了言 > \(\"past\-tense\"\-of\-\:發言\)\-spoke\-publicly;
+不自量 > not\-take\-a\-proper\-measure\-of\-oneself;
+抄後路 > to\-outflank\-and\-attack\-from\-the\-rear;
+編年體 > annalistic\-style\-\(in\-historiography\);
+家鄉雞 > ''home\-town\-chicken''\-\(a\-type\-of\-dish\);
+章孝嚴 > john\-chang\-\(taiwan\-foreign\-minister\);
+來不及 > there''s\-not\-enough\-time\-\(to\-do\-sth\.\);
+死不了 > portulaca\-sundial\-\(a\-type\-of\-plant\);
+迎春花 > winter\-jasmine\,\-jasminum\-nudiflorum;
+主人翁 > master\-\(of\-one''s\-own\-destiny\,\-etc\.\);
+哈密瓜 > hami\-melon\-\(a\-variety\-of\-muskmelon\);
+貿易額 > volume\-of\-trade\-\(between\-countries\);
+總動員 > general\-mobilization\-\(for\-war\,\-etc\);
+崩龍族 > the\-benglong\-\(penglung\)\-nationality;
+霸王鞭 > a\-rattle\-stick\-used\-in\-folk\-dancing;
+白殭蠶 > the\-larva\-of\-silkworm\-with\-batrytis;
+不失為 > can\-still\-be\-considered\-\(to\-be\.\.\.\);
+最惠國 > most\-favored\-nation\-\(trade\-status\);
+基金會 > a\-foundation\-\(ie\,\-an\-organization\);
+打錯了 > \"you\-have\-dialed\-the\-wrong\-number\";
+病包兒 > a\-person\-who\-is\-always\-falling\-ill;
+拉莫斯 > \(philippine\-president\-fidel\)\-ramos;
+胡志強 > jason\-hu\-\(taiwan\-foreign\-minister\);
+幫倒忙 > be\-more\-of\-a\-hindrance\-than\-a\-help;
+俱樂部 > club\-\(ie\,\-a\-group\-or\-organization\);
+勞動節 > international\-labor\-day\-\(may\-day\);
+抱粗腿 > latch\-on\-to\-the\-rich\-and\-powerful;
+金正日 > kim\-jong\-il\-\(north\-korean\-leader\);
+不摸頭 > not\-acquainted\-with\-the\-situation;
+魏京生 > wei\-jingsheng\-\(chinese\-dissident\);
+吃不上 > be\-unable\-to\-get\-something\-to\-eat;
+檢察官 > the\-prosecution\-\(in\-a\-court\-case\);
+垃圾車 > garbage\-truck\-\(or\-other\-vehicle\);
+布法羅 > buffalo\-\(city\-in\-new\-york\-state\);
+八會穴 > the\-eight\-strategic\-nerve\-points;
+開普敦 > cape\-town\-\(city\-in\-south\-africa\);
+見不得 > may\-not\-be\-seen\-by\-or\-exposed\-to;
+創辦人 > founder\-\(of\-an\-institution\,\-etc\);
+逼供信 > obtain\-confessions\-by\-compulsion;
+負責人 > person\-in\-charge\-\(of\-something\);
+十三經 > the\-thirteen\-confucian\-classics;
+病蟲害 > plant\-diseases\-and\-insect\-pests;
+吃不服 > not\-be\-accustomed\-to\-eating\-sth;
+馬尼拉 > manila\-\(capital\-of\-philippines\);
+應該說 > it\-should\-be\-mentioned\-that\-\.\.\.;
+不得不 > have\-no\-choice\-or\-option\-but\-to;
+北伐軍 > the\-northern\-expeditionary\-army;
+可移植 > portable\-\(programming\-language\);
+經濟學 > economics\-\(as\-a\-field\-of\-study\);
+愛面子 > be\-concerned\-about\-face\-saving;
+墨爾缽 > melbourne\-\(an\-australian\-city\);
+索杰納 > sojourner\-\(martian\-land\-rover\);
+談得來 > able\-to\-talk\-to\-or\-get\-on\-with;
+班主任 > a\-teacher\-in\-charge\-of\-a\-class;
+導航員 > navigator\-\(on\-a\-plane\-or\-boat\);
+眾議院 > house\-of\-representatives\-\(usa\);
+當事人 > persons\-involved\-or\-implicated;
+紅綠燈 > \(red\-and\-green\)\-traffic\-light;
+重複節 > repeated\-segment\-\(networking\);
+兵工廠 > munitions\-or\-ordnance\-factory;
+半身像 > half\-length\-photo\-or\-portrait;
+發電量 > \(generated\)\-electrical\-energy;
+保安族 > the\-baoan\-\(paoan\)\-nationality;
+江澤民 > jiang\-zemin\-\(chinese\-premier\);
+年夜飯 > new\-year''s\-eve\-family\-dinner;
+李登輝 > lee\-teng\-hui\-\(taiwan\-leader\);
+大自然 > nature\-\(as\-in\-mother\-nature\);
+立方米 > cubic\-meter\-\(unit\-of\-volume\);
+吃不消 > be\-unable\-to\-stand\-\(exertion;
+投票站 > polling\-station\-\(for\-a\-vote\);
+得票率 > percentage\-of\-votes\-obtained;
+吃不住 > be\-unable\-to\-bear\-or\-support;
+自治區 > autonomous\-region\-\(in\-china\);
+張純如 > \(american\-author\)\-iris\-chang;
+班務會 > a\-routine\-meeting\-of\-a\-squad;
+新德裡 > new\-delhi\-\(capital\-of\-india\);
+反對黨 > opposition\-\(political\)\-party;
+說明書 > synopsis\-\(of\-a\-play\-or\-film\);
+叛亂罪 > the\-crime\-of\-armed\-rebellion;
+差得多 > fall\-short\-by\-a\-large\-amount;
+台灣話 > taiwanese\-chinese\-\(language\);
+葉利欽 > \(russian\-president\)\-yeltsin;
+黃浦江 > huangpu\-river\-\(in\-shanghai\);
+背包袱 > have\-a\-weight\-on\-one''s\-mind;
+報戶口 > apply\-for\-a\-resident\-permit;
+國際級 > \(at\-an\)\-international\-level;
+吃不來 > not\-be\-fond\-of\-certain\-food;
+據報導 > according\-to\-\(news\)\-reports;
+病毒學 > virology\-\(study\-of\-viruses\);
+而不需 > without\-needing\-\(to\-so\-sth\);
+交換機 > switch\-\(telecommunications\);
+大陸話 > mainland\-chinese\-\(language\);
+交換器 > \(telecom\-or\-network\)\-switch;
+通訊社 > a\-news\-service\-\(eg\,\-xinhua\);
+愛好者 > lover\-\(of\-art\,\-sports\,\-etc\);
+公安部 > ministry\-of\-public\-security;
+抱不平 > be\-outraged\-by\-an\-injustice;
+男子漢 > man\-\(i\.e\.\-manly\,\-masculine\);
+巴兒狗 > pekingese\-\(a\-breed\-of\-dog\);
+存車處 > parking\-lot\-\(for\-bicycles\);
+鼻牛兒 > hardened\-mucus\-in\-nostrils;
+桃花運 > luck\-with\-the\-opposite\-sex;
+弗塞奇 > versace\-\(fashion\-designer\);
+普通話 > mandarin\-\(common\-language\);
+幾年來 > for\-the\-past\-several\-years;
+頤和園 > summer\-palace\-\(in\-beijing\);
+馬來人 > malaysian\-person\-or\-people;
+底特律 > detroit\-\(a\-city\-in\-the\-us\);
+情況下 > under\-\(this\)\-circumstances;
+溫哥華 > vancouver\-\(city\-in\-canada\);
+白頭翁 > root\-of\-chinese\-pulsatilla;
+中文版 > chinese\-\(language\)\-version;
+高中生 > senior\-high\-school\-student;
+板羽球 > battledore\-and\-shuttlecock;
+參兩院 > both\-houses\-of\-us\-congress;
+癟螺痧 > cholera\-\(with\-dehydration\);
+透通性 > transparency\-\(networking\);
+營業額 > sum\-or\-volume\-of\-business;
+矮個兒 > a\-person\-of\-short\-stature;
+核大國 > a\-nuclear\-power\-\(country\);
+希臘語 > \(modern\)\-greek\-\(language\);
+時間內 > within\-\(a\-period\-of\-time\);
+下工夫 > to\-put\-in\-time\-and\-energy;
+日本人 > japanese\-person\-or\-people;
+無限期 > unlimited\-\(time\)\-duration;
+帕蘭卡 > palanka\-\(a\-personal\-name\);
+人民幣 > chinese\-unit\-of\-currency;
+流氓罪 > the\-crime\-of\-hooliganism;
+錄音機 > \(tape\)\-recording\-machine;
+代之以 > \(has\-been\)\-replaced\-with;
+變戲法 > perform\-conjuring\-tricks;
+發行額 > \(periodical\)\-circulation;
+十三日 > thirtieth\-day\-of\-a\-month;
+下半身 > lower\-half\-of\-one''s\-body;
+印歐語 > indo\-european\-\(language\);
+內政部 > ministry\-of\-the\-interior;
+印歐文 > indo\-european\-\(language\);
+無黨派 > politically\-unaffiliated;
+變電站 > \(transformer\)\-substation;
+木乃伊 > mummy\-\(preserved\-corpse\);
+外交部 > foreign\-affairs\-ministry;
+遲浩田 > chinese\-defense\-minister;
+北溫帶 > the\-north\-temperate\-zone;
+打電話 > to\-make\-a\-telephone\-call;
+止痛法 > method\-of\-relieving\-pain;
+北半球 > the\-northern\-hemisphere;
+雙絞線 > unshielded\-twisted\-pait;
+包承制 > responsible\-crew\-system;
+播放機 > player\-\(e\.g\.\-cd\-player\);
+據統計 > according\-to\-statistics;
+留學生 > student\-studying\-abroad;
+多年來 > for\-the\-past\-many\-years;
+中秋節 > the\-mid\-autumn\-festival;
+馬路口 > intersection\-\(of\-roads\);
+戴維斯 > davis\-\(english\-surname\);
+紅樓夢 > a\-dream\-of\-red\-mansions;
+過不去 > make\-life\-difficult\-for;
+情報處 > source\-\(of\-information\);
+腐敗罪 > the\-crime\-of\-corruption;
+白蛇傳 > tale\-of\-the\-white\-snake;
+半成品 > semi\-manufactured\-goods;
+奔頭兒 > something\-to\-strive\-for;
+中轉站 > hub\-\(network\-equipment\);
+香港人 > hong\-kong\-person\|people;
+慕道友 > religious\-investigator;
+剝採比 > stripping\-to\-ore\-ratio;
+目的地 > destination\-\(location\);
+國務院 > state\-department\-\(usa\);
+十五億 > one\-and\-a\-half\-billion;
+紅燒肉 > red\-cooked\-\(pork\)\-meat;
+公安局 > public\-security\-bureau;
+發病率 > incidence\-of\-a\-disease;
+疑問句 > interrogative\-sentance;
+此一時 > that\-was\-one\-situation;
+不好惹 > not\-to\-be\-trifled\-with;
+不得已 > act\-against\-one''s\-will;
+上半年 > first\-half\-\(of\-a\-year\);
+不要臉 > have\-no\-sense\-of\-shame;
+背地風 > behind\-somebody''s\-back;
+近年來 > for\-the\-past\-few\-years;
+其自身 > one''s\-own\-\(respective\);
+火焰山 > the\-mountain\-of\-flames;
+工作站 > \(computer\)\-workstation;
+印歐人 > indo\-european\-\(person\);
+坦克車 > tank\-\(armored\-vehicle\);
+不像樣 > in\-no\-shape\-to\-be\-seen;
+變分法 > calculus\-of\-variations;
+西遊記 > pilgrimage\-to\-the\-west;
+畢業生 > graduate\-\(of\-a\-school\);
+背黑鍋 > to\-be\-made\-a\-scapegoat;
+靈敏度 > \(level\-of\)\-sensitivity;
+彼一時 > that\-was\-one\-situation;
+軟硬件 > software\-and\-hardware;
+熱門貨 > goods\-in\-great\-demand;
+通信量 > communications\-volume;
+祝賀詞 > congratulatory\-speech;
+幾十年 > several\-tens\-of\-years;
+比方說 > to\-make\-an\-analogy\.\.\.;
+麥芽糖 > maltose\-\(sweet\-syrup\);
+美聯社 > associated\-press\-\(ap\);
+推薦信 > recommendation\-letter;
+幾天來 > for\-the\-past\-few\-days;
+投了票 > past\-tense\-of\-to\-vote;
+肯尼迪 > kennedy\-\(proper\-name\);
+保護區 > conservation\-district;
+奧德賽 > the\-odyssey\,\-by\-homer;
+越南語 > vietnamese\-\(language\);
+四年前 > four\-years\-previously;
+製造商 > manufacturing\-company;
+反革命 > counter\-revolutionary;
+老兩口 > an\-old\-married\-couple;
+拜把子 > become\-sworn\-brothers;
+北寒帶 > the\-north\-frigid\-zone;
+八路軍 > the\-eighth\-route\-army;
+南北極 > south\-and\-north\-poles;
+董事長 > chairman\-of\-the\-board;
+不行了 > on\-the\-point\-of\-death;
+卡西尼 > cassini\-\(proper\-name\);
+光磁碟 > magneto\-optical\-disk;
+博覽會 > \(international\)\-fair;
+一般性 > \(in\)\-general\-\(terms\);
+逋逃藪 > refuge\-for\-fugitives;
+白眼珠 > the\-white\-of\-the\-eye;
+捕蟲葉 > insect\-catching\-leaf;
+不雅觀 > offensive\-to\-the\-eye;
+陳述句 > declarative\-sentence;
+這個月 > this\-\(current\)\-month;
+一清早 > early\-in\-the\-morning;
+倍頻器 > frequency\-multiplier;
+領導權 > leadership\-authority;
+紀念日 > day\-of\-commemoration;
+白棉紙 > stencil\-tissue\-paper;
+挪窩兒 > to\-move\-\(to\-a\-house\);
+德國人 > german\-person\|people;
+大清早 > early\-in\-the\-morning;
+百事通 > knowledgeable\-person;
+不死心 > unwilling\-to\-give\-up;
+礦泉水 > mineral\-spring\-water;
+吃不下 > not\-feel\-like\-eating;
+萬維網 > world\-wide\-web\-\(www\);
+實體層 > physical\-layer\-\(osi\);
+現階段 > at\-the\-present\-stage;
+叛國罪 > the\-crime\-of\-treason;
+錦標賽 > championship\-contest;
+競爭力 > competitive\-strength;
+運動會 > a\-sports\-competition;
+跑龍套 > to\-play\-a\-small\-role;
+德雷爾 > \(june\-teufel\)\-dreyer;
+財政部 > ministry\-of\-finance;
+廣告商 > advertising\-company;
+慰安婦 > comfort\-woman\|women;
+折射率 > index\-of\-refraction;
+年代初 > beginning\-of\-an\-age;
+防禦性 > defensive\-\(weapons\);
+打橫炮 > speak\-unwarrantedly;
+發言權 > the\-right\-of\-speech;
+年之久 > period\-of\-\.\.\.\-years;
+不中意 > not\-to\-one''s\-liking;
+百分制 > hundred\-mark\-system;
+分析家 > \(political\)\-analyst;
+立法會 > legislative\-council;
+引力場 > gravitational\-field;
+消耗量 > rate\-of\-consumption;
+核電站 > nuclear\-power\-plant;
+表面化 > come\-to\-the\-surface;
+電話機 > telephone\-equipment;
+總統府 > presidential\-palace;
+橋接器 > bridge\-\(networking\);
+馬來文 > malasian\-\(language\);
+不得了 > desperately\-serious;
+板梁橋 > plate\-girder\-bridge;
+栽跟頭 > to\-suffer\-a\-setback;
+核工程 > nuclear\-engineering;
+安理會 > un\-security\-council;
+擺門面 > keep\-up\-appearances;
+路透社 > reuters\-news\-agency;
+科學院 > academy\-of\-sciences;
+步進制 > step\-by\-step\-system;
+前蘇聯 > former\-soviet\-union;
+不在意 > pay\-no\-attention\-to;
+外孫女 > daughter''s\-daughter;
+冰醋酸 > glacial\-acetic\-acid;
+消炎藥 > antibiotic\-medicine;
+委員長 > head\-of\-a\-committee;
+情報局 > intelligence\-agency;
+包身工 > indentured\-labourer;
+決議案 > \(pass\-a\)\-resolution;
+北京人 > person\-from\-beijing;
+負責任 > responsibility\-for;
+中山裝 > chinese\-tunic\-suit;
+緬甸語 > burmese\-\(language\);
+政治犯 > political\-prisoner;
+年以來 > since\-the\-year\-\.\.\.;
+新華社 > xinhua\-news\-agency;
+不中用 > unfit\-for\-anything;
+進一步 > \(one\-step\)\-further;
+提供商 > provider\-\(company\);
+原蘇聯 > fomer\-soviet\-union;
+天安門 > tiananmen\-\(square\);
+不受理 > reject\-a\-complaint;
+發達國 > developing\-country;
+跑警報 > to\-run\-for\-shelter;
+白開水 > plain\-boiled\-water;
+招待會 > \(press\)\-conference;
+懷俄明 > wyoming\-\(us\-state\);
+卡拉奇 > karachi\-\(pakistan\);
+半規管 > semicircular\-canal;
+馬來語 > malaysian\-language;
+比不上 > can''t\-compare\-with;
+國防部 > defense\-department;
+趕不上 > can''t\-keep\-up\-with;
+拿主意 > to\-make\-a\-decision;
+常委會 > standing\-committee;
+大學生 > university\-student;
+瀏覽器 > browser\-\(software\);
+世紀末 > end\-of\-the\-century;
+擁護者 > supporter\-\(person\);
+國務卿 > secretary\-of\-state;
+半輩子 > half\-of\-a\-lifetime;
+站管理 > station\-management;
+芬蘭語 > finnish\-\(language\);
+變法兒 > try\-different\-ways;
+海空軍 > navy\-and\-air\-force;
+細菌戰 > biological\-warfare;
+瑞典語 > swedish\-\(language\);
+涉嫌人 > \(criminal\)\-suspect;
+併捲機 > ribbon\-lap\-machine;
+別動隊 > special\-detachment;
+研究所 > research\-institute;
+年輕化 > make\-more\-youthful;
+加速器 > accelerator\-\(comp\);
+不等號 > sign\-of\-inequality;
+西半球 > western\-hemisphere;
+核技術 > nuclear\-technology;
+報務員 > telegraph\-operator;
+光波長 > optical\-wavelength;
+喉擦音 > guttural\-fricative;
+八級工 > eight\-grade\-worker;
+佛蒙特 > vermont\-\[us\-state\];
+管理站 > management\-station;
+說不定 > can''t\-say\-for\-sure;
+波斯語 > bosnian\-\(language\);
+儘可能 > as\-far\-as\-possible;
+包承組 > \(responsible\)\-crew;
+百葉箱 > thermometer\-screen;
+避雷器 > lightning\-arrester;
+戰鬥機 > fighter\-\(aircraft\);
+顯示器 > monitor\-\(computer\);
+必修課 > a\-required\-course;
+僅次于 > second\-only\-to\.\.\.;
+朝鮮語 > korean\-\(language\);
+建築業 > building\-industry;
+麥克維 > \(timothy\)\-mcveigh;
+應用層 > application\-layer;
+桌別林 > \(charlie\)\-chaplin;
+蓋爾語 > gaelic\-\(language\);
+無所謂 > to\-be\-indifferent;
+機器人 > mechanical\-person;
+廣域網 > wide\-area\-network;
+維持費 > maintenance\-costs;
+板擦兒 > blackboard\-eraser;
+同性戀 > homosexual\-\(love\);
+電話網 > telephone\-network;
+性騷擾 > sexual\-harassment;
+橫斷物 > transverse\-object;
+白屈菜 > greater\-celandine;
+傳輸率 > transmission\-rate;
+伺服器 > server\-\(computer\);
+服務器 > server\-\(computer\);
+國際法 > international\-law;
+侵截者 > \(computer\)\-hacker;
+初學者 > beginning\-student;
+西王母 > name\-of\-a\-goddess;
+在頭版 > on\-the\-front\-page;
+波蘭語 > polish\-\(language\);
+轟炸機 > bomber\-\(aircraft\);
+醫學家 > medical\-scientist;
+華盛頓 > washington\-\(d\.c\.\);
+丟飯碗 > to\-lose\-one''s\-job;
+比較新 > comparatively\-new;
+電信號 > electrical\-signal;
+秘書長 > secretary\-general;
+歐洲人 > european\-\(person\);
+衛生部 > health\-department;
+太平洋 > the\-pacific\-ocean;
+原因是 > the\-reason\-is\-\.\.\.;
+一年半 > a\-year\-and\-a\-half;
+不甘心 > not\-reconciled\-to;
+客戶機 > client\-\(computer\);
+失業率 > unemployment\-rate;
+警察局 > police\-department;
+歸心者 > religious\-convert;
+沒關係 > it\-doesn''t\-matter;
+包園兒 > buy\-the\-whole\-lot;
+一身汗 > sweating\-all\-over;
+白細胞 > white\-blood\-cell;
+性關係 > sexual\-relations;
+殯儀館 > the\-undertaker''s;
+研討會 > discussion\-forum;
+資料量 > quantity\-of\-data;
+編輯室 > editorial\-office;
+拉丁語 > latin\-\(language\);
+適配層 > adaptation\-layer;
+出風頭 > to\-create\-a\-stir;
+越野車 > off\-road\-vehical;
+適配器 > adapter\-\(device\);
+副主席 > vice\-chairperson;
+捷克語 > czech\-\(language\);
+筆底下 > ability\-to\-write;
+核原料 > nuclear\-material;
+白血球 > white\-blood\-cell;
+不爭氣 > be\-disappointing;
+北冰洋 > the\-arctic\-ocean;
+又來了 > here\-we\-go\-again;
+十多億 > over\-one\-billion;
+一下子 > in\-a\-short\-while;
+核設施 > nuclear\-facility;
+非政府 > non\-governmental;
+主幹線 > backbone\-\(cable\);
+電視機 > television\-\(set\);
+流行病 > epidemic\-disease;
+信用證 > letter\-of\-credit;
+學術界 > academic\-circles;
+衛星城 > \"satellite\"\-town;
+的一種 > is\-one\-\(kind\-of\);
+曼德拉 > \(nelson\)\-mandela;
+印地語 > hindi\-\(language\);
+工業化 > to\-industrialize;
+記者會 > press\-conference;
+出版社 > publishing\-house;
+沖繩島 > okinawa\-\(island\);
+民主黨 > democratic\-party;
+電視劇 > tv\-drama\-program;
+輻射波 > radiation\-\(wave\);
+商業化 > to\-commercialize;
+電腦網 > computer\-network;
+高性能 > high\-performance;
+開幕式 > opening\-ceremony;
+實習生 > intern\-\(student\);
+國賓館 > state\-guesthouse;
+不至於 > cannot\-go\-so\-far;
+百分點 > percentage\-point;
+功能集 > function\-library;
+化學戰 > chemical\-warfare;
+大多數 > \(great\)\-majority;
+菏蘭語 > dutch\-\(language\);
+一年多 > more\-than\-a\-year;
+共和黨 > republican\-party;
+脖頸兒 > back\-of\-the\-neck;
+大無畏 > utterly\-fearless;
+超高速 > ultra\-high\-speed;
+性接觸 > sexual\-encounter;
+拿手菜 > specialty\-\(dish\);
+鼠標器 > mouse\-\(computer\);
+互操性 > interoperability;
+功能群 > functional\-group;
+一輩子 > \(for\)\-a\-lifetime;
+高效率 > high\-efficiency;
+前不久 > not\-long\-before;
+生產隊 > production\-team;
+用戶線 > subscriber\-line;
+美國人 > american\-person;
+看上去 > it\-would\-appear;
+幾十億 > several\-billion;
+不待說 > needless\-to\-say;
+創記錄 > to\-set\-a\-record;
+不名數 > abstract\-number;
+數十億 > several\-billion;
+總經理 > general\-manager;
+數百萬 > several\-million;
+拼起來 > to\-put\-together;
+米粉肉 > rice\-flour\-meat;
+高技術 > high\-technology;
+閉音節 > closed\-syllable;
+虛電路 > virtual\-circuit;
+從去年 > since\-last\-year;
+菲律賓 > the\-philippines;
+本族語 > native\-language;
+絆腳石 > stumbling\-block;
+感染者 > infected\-person;
+多樣化 > diversification;
+網管員 > network\-manager;
+不干涉 > noninterference;
+核武庫 > nuclear\-arsenal;
+中美洲 > central\-america;
+天主教 > catholic\-church;
+金裡奇 > \(newt\)\-gingrich;
+注意看 > watch\-carefully;
+共產黨 > communist\-party;
+不見得 > not\-necessarily;
+賀年片 > new\-year''s\-card;
+標準化 > standardization;
+使滿意 > to\-make\-content;
+不鏽鋼 > stainless\-steel;
+印度人 > indian\-\(person\);
+奧運村 > olympic\-village;
+暗適應 > dark\-adaptation;
+老百姓 > ordinary\-people;
+夫妻店 > family\-run\-shop;
+數字網 > digital\-network;
+兒化韻 > retroflex\-final;
+有聯繫 > to\-be\-connected;
+審判長 > presiding\-judge;
+高效能 > high\-efficiency;
+盜版者 > software\-pirate;
+大部份 > \(in\)\-large\-part;
+冷氣機 > air\-conditioner;
+伊甸園 > garden\-of\-eden;
+成員國 > member\-country;
+釣魚臺 > diaoyu\-islands;
+複韻母 > compound\-final;
+幀太長 > oversize\-frame;
+伴生氣 > associated\-gas;
+物理層 > physical\-layer;
+聯合國 > united\-nations;
+英國人 > british\-person;
+白熱化 > turn\-white\-hot;
+十一月 > eleventh\-month;
+原子核 > atomic\-nucleus;
+把兄弟 > sworn\-brothers;
+北斗星 > the\-big\-dipper;
+開玩笑 > to\-play\-a\-joke;
+審判席 > judgement\-seat;
+白粉病 > powdery\-mildew;
+釣魚島 > diaoyu\-islands;
+古希臘 > ancient\-greece;
+中國人 > chinese\-person;
+監督人 > superintendent;
+順序數 > ordinal\-number;
+電話線 > telephone\-line;
+就是說 > in\-other\-words;
+教育界 > academic\-world;
+不敢當 > you\-flatter\-me;
+副總統 > vice\-president;
+甚至於 > so\-much\-\(that\);
+不平衡 > disequilibrium;
+東南亞 > southeast\-asia;
+採收率 > recovery\-ratio;
+自由化 > liberalization;
+不適用 > not\-applicable;
+簡單化 > simplification;
+鹽湖城 > salt\-lake\-city;
+血製品 > blood\-products;
+凹面鏡 > concave\-mirror;
+開心果 > pistachio\-nuts;
+世界語 > world\-language;
+行星際 > interplanetary;
+中心語 > qualified\-word;
+參謀長 > chief\-of\-staff;
+錄像機 > video\-recorder;
+光信號 > optical\-signal;
+核武器 > nuclear\-weapon;
+達不到 > cannot\-achieve;
+克林頓 > \(bill\)\-clinton;
+聖誕節 > christmas\-time;
+白令海 > the\-bering\-sea;
+摩門經 > book\-of\-mormon;
+尋開心 > to\-make\-fun\-of;
+犯不著 > not\-worthwhile;
+不用謝 > you''re\-welcome;
+半自動 > semi\-automatic;
+內蒙古 > inner\-mongolia;
+退休金 > retirement\-pay;
+留言簿 > visitor''s\-book;
+死亡率 > mortality\-rate;
+哈該書 > book\-of\-haggai;
+擺攤子 > set\-up\-a\-stall;
+瑞士人 > swiss\-\(person\);
+差不多 > almost\,\-nearly;
+括弧裡 > in\-parentheses;
+信號臺 > signal\-station;
+世界上 > \(of\-the\)\-world;
+圓珠筆 > ball\-point\-pen;
+跑腿兒 > to\-run\-errands;
+波狀熱 > undulant\-fever;
+知識庫 > knowledge\-base;
+電信局 > central\-office;
+西南亞 > southwest\-asia;
+撥號盤 > telephone\-dial;
+後兩者 > the\-latter\-two;
+廠禮拜 > day\-off\-\(work\);
+兩百億 > twenty\-billion;
+無連接 > connectionless;
+猜謎兒 > guess\-a\-riddle;
+半以上 > more\-than\-half;
+不客氣 > you''re\-welcome;
+美差事 > a\-terrific\-job;
+諾貝爾 > nobel\-\(prize\);
+保證金 > earnest\-money;
+掛號證 > register\-card;
+原子能 > atomic\-energy;
+紀念館 > memorial\-hall;
+單韻母 > simple\-finals;
+有可能 > it''s\-possible;
+未提及 > not\-mentioned;
+本生燈 > bunsen\-burner;
+心臟病 > heart\-disease;
+十五年 > fifteen\-years;
+鄧小平 > deng\-xiaoping;
+那鴻書 > book\-of\-nahum;
+網絡層 > network\-layer;
+審判欄 > judgement\-bar;
+白花花 > shining\-white;
+建築學 > architectural;
+中國式 > chinese\-style;
+半失業 > semi\-employed;
+表決權 > right\-to\-vote;
+空間站 > space\-station;
+大公司 > large\-company;
+大容量 > high\-capacity;
+楊百翰 > brigham\-young;
+大問題 > great\-problem;
+光功率 > optical\-power;
+權威性 > authoritative;
+女朋友 > female\-friend;
+不周延 > undistributed;
+摁釦兒 > snap\-fastener;
+白皮松 > lacebark\-pine;
+存儲器 > memory\-\(unit\);
+彌迦書 > book\-of\-micah;
+現代化 > modernization;
+主禱文 > lord''s\-prayer;
+好幾年 > several\-years;
+售票處 > ticket\-office;
+六點半 > half\-past\-six;
+無意識 > unconsciously;
+推動力 > driving\-force;
+避風處 > lee\,\-windstop;
+使用量 > volume\-of\-use;
+半導體 > semiconductor;
+駁殼槍 > mauser\-pistol;
+不方便 > inconvenience;
+沒經驗 > inexperienced;
+主日學 > sunday\-school;
+有助于 > contribute\-to;
+有權威 > authoritative;
+三十億 > three\-billion;
+不凍港 > ice\-free\-port;
+步話機 > walkie\-talkie;
+集線器 > hub\-\(network\);
+不舒適 > uncomfortable;
+兩千年 > the\-year\-2000;
+標本蟲 > spider\-beetle;
+進出口 > import\|export;
+向西南 > southwestward;
+售票員 > ticket\-seller;
+售票口 > ticket\-window;
+安定化 > stabilization;
+交換端 > switched\-port;
+不相干 > be\-irrelevant;
+天曉得 > heaven\-knows\!;
+報話機 > walkie\-talkie;
+同盟國 > confederation;
+奧運會 > olympic\-games;
+在未來 > in\-the\-future;
+南美洲 > south\-america;
+七百萬 > seven\-million;
+有良心 > conscientious;
+鼻飼法 > nasal\-feeding;
+約拿書 > book\-of\-jonah;
+步行蟲 > ground\-beetle;
+便步走 > march\-at\-ease;
+連接至 > to\-connect\-to;
+鳶尾花 > iris\-\(flower\);
+半官方 > semi\-official;
+兼容性 > compatibility;
+解壓縮 > to\-decompress;
+採棉機 > cotton\-picker;
+芭蕉扇 > palm\-leaf\-fan;
+公元前 > before\-christ;
+波美度 > baume\-degrees;
+半復賽 > eighth\-finals;
+邊界線 > boundary\-line;
+北美洲 > north\-america;
+核能源 > nuclear\-power;
+支持率 > support\-level;
+試一試 > to\-have\-a\-try;
+越來越 > more\-and\-more;
+下至上 > bottom\-to\-top;
+找不到 > couldn''t\-find;
+很遺憾 > unfortunately;
+萬事達 > master\(card\);
+約珥書 > book\-of\-joel;
+賠償金 > compensation;
+示威者 > demonstrator;
+毛主席 > chairman\-mao;
+建築物 > \(a\)\-building;
+閱覽室 > reading\-room;
+不名譽 > disreputable;
+機械碼 > machine\-code;
+不成功 > unsuccessful;
+水滸傳 > water\-margin;
+不重視 > indifference;
+十九歲 > 19\-years\-old;
+半文盲 > semiliterate;
+丙烯酸 > acrylic\-acid;
+半熟練 > semi\-skilled;
+吃不開 > be\-unpopular;
+不合理 > unreasonable;
+不愉快 > disagreeable;
+養雞場 > chicken\-farm;
+膝上型 > laptop\-\(adj\);
+實際性 > practicality;
+十一年 > eleven\-years;
+相似性 > ressemblance;
+非同步 > asynchronous;
+傳道書 > ecclesiastes;
+發言人 > spokesperson;
+集中器 > concentrator;
+感嘆詞 > interjection;
+足球迷 > football\-fan;
+那樣的 > that\-kind\-of;
+半邊天 > half\-the\-sky;
+葡萄酒 > \(grape\)\-wine;
+農作物 > \(farm\)\-crops;
+四十多 > more\-than\-40;
+證實禮 > confirmation;
+宇航局 > space\-agency;
+去國外 > to\-go\-abroad;
+第二位 > second\-place;
+同時代 > contemporary;
+副總理 > vice\-premier;
+路得記 > book\-of\-ruth;
+多工化 > to\-multiplex;
+三合一 > three\-in\-one;
+四百萬 > four\-million;
+高質量 > high\-quality;
+夢游症 > to\-sleepwalk;
+不結盟 > nonalignment;
+八級風 > force\-8\-wind;
+幼兒園 > kindergarten;
+桔子水 > orange\-juice;
+創造性 > creativeness;
+研究者 > investigator;
+周總理 > premier\-zhou;
+執政黨 > ruling\-party;
+母親節 > mother''s\-day;
+一下兒 > a\-little\-bit;
+不像話 > unreasonable;
+複製品 > reproduction;
+司法權 > jurisdiction;
+佔便宜 > adventageous;
+鼻中隔 > nasal\-septum;
+新聞處 > news\-service;
+運動鞋 > sports\-shoes;
+核轟炸 > nuclear\-bomb;
+轉賬卡 > a\-debit\-card;
+面對面 > face\-to\-face;
+複寫紙 > carbon\-paper;
+不相容 > incompatible;
+打孔器 > hole\-puncher;
+什麼是 > what\-is\-\.\.\.\?;
+凹透鏡 > concave\-lens;
+古羅馬 > ancient\-rome;
+二十萬 > 200\-thousand;
+年輕人 > young\-people;
+乒乓球 > table\-tennis;
+階級式 > hierarchical;
+聽說過 > to\-hear\-said;
+闌尾炎 > appendicitis;
+大一些 > a\-bit\-bigger;
+生物戰 > germ\-warfare;
+建設性 > constructive;
+喉塞音 > glottal\-stop;
+大都會 > metropolitan;
+最低點 > lowest\-point;
+基督教 > christianity;
+安眠酮 > methaqualone;
+試驗性 > experimental;
+貴族化 > aristocratic;
+五百萬 > five\-million;
+冰洲石 > iceland\-spar;
+核軍備 > nuclear\-arms;
+速記員 > stenographer;
+白水泥 > white\-cement;
+象聲詞 > onomatopoeia;
+幀格式 > frame\-format;
+衛生紙 > toilet\-paper;
+當時的 > of\-that\-time;
+消防栓 > fire\-hydrant;
+透明度 > transparency;
+壓倒性 > overwhelming;
+二十七 > twenty\-seven;
+大規模 > large\-scale;
+度量衡 > measurement;
+航空術 > aeronautics;
+訪問者 > interviewer;
+好朋友 > good\-friend;
+四面體 > tetrahedron;
+拔釘錘 > claw\-hammer;
+申命記 > deuteronomy;
+才外流 > brain\-drain;
+創作力 > originality;
+白矮星 > white\-dwarf;
+不贊成 > disapproval;
+半月刊 > semimonthly;
+備用環 > backup\-ring;
+滴答聲 > tick\-\(tock\);
+溫度計 > thermograph;
+不重要 > unimportant;
+有影響 > influential;
+發電廠 > power\-plant;
+柏林牆 > berlin\-wall;
+巡邏艇 > patrol\-boat;
+不含糊 > unambiguous;
+本土化 > to\-localize;
+安全燈 > safety\-lamp;
+有意思 > interesting;
+窗玻璃 > window\-pane;
+新西蘭 > new\-zealand;
+敗血症 > septicaemia;
+分佈式 > distrubuted;
+有些人 > some\-people;
+不吐氣 > unaspirated;
+有經驗 > experienced;
+男朋友 > male\-friend;
+白皮書 > white\-paper;
+翻譯者 > interpreter;
+不注意 > thoughtless;
+保不住 > most\-likely;
+巴哈馬 > the\-bahamas;
+發送器 > transmitter;
+第一章 > chapter\-one;
+連環圖 > comic\-strip;
+在地下 > underground;
+傳真機 > fax\-machine;
+裝甲車 > armored\-car;
+獲益者 > beneficiary;
+半透明 > translucent;
+第一流 > first\-class;
+謀殺案 > murder\-case;
+獎學金 > scholarship;
+不動產 > real\-estate;
+啟示錄 > revelations;
+第三方 > third\-party;
+表蒙子 > watch\-glass;
+擺架子 > put\-on\-airs;
+不確定 > uncertainty;
+古典派 > classicists;
+可行性 > feasibility;
+合法化 > to\-legalize;
+探照燈 > searchlight;
+安寧片 > meprobamate;
+是不是 > is\-or\-isn''t;
+多工器 > multiplexer;
+勞動力 > labor\-force;
+語言學 > linguistics;
+幸運兒 > a\-lucky\-guy;
+本質上 > essentially;
+地下水 > groundwater;
+申請書 > application;
+教育性 > instructive;
+繼承權 > inheritance;
+製片人 > moviemaking;
+不要緊 > unimportant;
+敗家子 > spendthrift;
+局限性 > limitations;
+售貨員 > salesperson;
+可尊敬 > respectable;
+非數字 > non\-numeric;
+爆米花 > puffed\-rice;
+三十天 > thirty\-days;
+茅屋頂 > thatch\-roof;
+三十四 > thirty\-four;
+不送氣 > unaspirated;
+性伴侶 > sex\-partner;
+乳白色 > milky\-white;
+殺人案 > murder\-case;
+蓋然性 > probability;
+可能性 > possibility;
+房地產 > real\-estate;
+登山家 > mountaineer;
+哲學家 > philosopher;
+分散式 > distributed;
+系列片 > film\-series;
+阿富汗 > afghanistan;
+洛杉磯 > los\-angeles;
+陰涼處 > shady\-place;
+伸縮性 > flexibility;
+閉元音 > close\-vowel;
+最大化 > to\-maximize;
+第十七 > seventeenth;
+哲學上 > philosophic;
+否有效 > inefficient;
+北朝鮮 > north\-korea;
+靈活性 > flexibility;
+使信服 > to\-convince;
+口香糖 > chewing\-gum;
+西乃山 > mount\-sinai;
+金屬板 > metal\-plate;
+不做聲 > keep\-silent;
+兩百萬 > two\-million;
+修理廠 > repair\-shop;
+機動性 > flexibility;
+增長率 > growth\-rate;
+介系詞 > preposition;
+主機板 > motherboard;
+他們都 > all\-of\-them;
+類似點 > resemblance;
+雙人房 > double\-room;
+美術館 > art\-gallery;
+連接詞 > conjunction;
+約伯記 > book\-of\-job;
+悲喜劇 > tragicomedy;
+軟磁碟 > floppy\-disk;
+半封建 > semi\-feudal;
+實質性 > substantive;
+軟磁盤 > floppy\-disk;
+變壓器 > transformer;
+蘋果汁 > apple\-juice;
+暗記兒 > secret\-mark;
+配送者 > distributor;
+金銀花 > honeysuckle;
+元老院 > upper\-house;
+可想像 > conceivable;
+證明書 > certificate;
+信用卡 > credit\-card;
+女管家 > housekeeper;
+工程學 > engineering;
+有害的 > destructive;
+天然氣 > natural\-gas;
+供血者 > blood\-donor;
+營養品 > nourishment;
+適應性 > suitability;
+天文台 > observatory;
+鑿石場 > rock\-quarry;
+小汽車 > compact\-car;
+螺絲刀 > screwdriver;
+副作用 > side\-effect;
+二十億 > two\-billion;
+移植性 > portability;
+二十五 > twenty\-five;
+沒問題 > no\-problem;
+第五類 > category\-5;
+非官方 > unofficial;
+國民黨 > kuomintang;
+白色體 > leucoplast;
+不耐煩 > impatience;
+百分率 > percentage;
+令牌環 > token\-ring;
+自白書 > confession;
+展覽會 > exhibition;
+高速率 > high\-speed;
+大城市 > major\-city;
+喬治敦 > georgetown;
+百分比 > percentage;
+傳道者 > missionary;
+不可能 > impossible;
+錄音帶 > audio\-tape;
+錫安山 > mount\-zion;
+硬磁盤 > hard\-drive;
+百分數 > percentage;
+歷史上 > historical;
+記帳員 > bookkeeper;
+使失望 > disappoint;
+承包人 > contractor;
+物質上 > materially;
+半公開 > semi\-overt;
+使免除 > get\-rid\-of;
+更衣室 > changeroom;
+超媒體 > hypermedia;
+不明確 > indefinite;
+不景氣 > depression;
+資本家 > capitalist;
+二手貨 > secondhand;
+傳教士 > missionary;
+易接近 > accessible;
+想像力 > conception;
+有決心 > determined;
+橄欖樹 > olive\-tree;
+爭論點 > contention;
+複雜性 > complexity;
+奶牛場 > dairy\-farm;
+字節數 > byte\-count;
+出生地 > birthplace;
+不下于 > as\-many\-as;
+大媒體 > macromedia;
+備忘錄 > memorandum;
+挨個兒 > one\-by\-one;
+兄弟會 > fraternity;
+留聲機 > gramophone;
+黑莓子 > blackberry;
+統計學 > statistics;
+在下面 > underneath;
+不變化 > invariably;
+陌生人 > a\-stranger;
+不適當 > inadequate;
+電視臺 > tv\-station;
+主力艦 > battleship;
+行不通 > won''t\-work;
+競爭者 > competitor;
+有系統 > systematic;
+短時間 > short\-term;
+沒人住 > unoccupied;
+動物學 > zoological;
+盧森堡 > luxembourg;
+第七十 > seventieth;
+冰凝器 > cryophorus;
+心理學 > psychology;
+氣喘喘 > breathless;
+第一例 > first\-case;
+摩天摟 > skyscraper;
+不透水 > waterproof;
+得不到 > cannot\-get;
+重要性 > importance;
+技術員 > technician;
+非正式 > unofficial;
+周恩來 > zhou\-enlai;
+有興趣 > interested;
+不經意 > carelessly;
+打字機 > typewriter;
+倍增器 > multiplier;
+金屬線 > metal\-wire;
+有膽量 > courageous;
+識別號 > identifier;
+生有權 > birthright;
+持卡人 > cardholder;
+刺繡品 > embroidery;
+毛澤東 > mao\-zedong;
+六十五 > sixty\-five;
+多媒體 > multimedia;
+不平常 > remarkable;
+抵抗力 > resistance;
+大主教 > archbishop;
+試算表 > speadsheet;
+白口鐵 > white\-iron;
+第十八 > eighteenth;
+實驗室 > laboratory;
+第十九 > nineteenth;
+第十三 > thirteenth;
+機關車 > locomotive;
+保潔箱 > litter\-bin;
+老年人 > old\-people;
+發聲法 > intonation;
+識別碼 > identifier;
+不平凡 > marvellous;
+崑崙山 > mt\.\-kunlun;
+代表團 > delegation;
+影像檔 > image\-file;
+居住者 > inhabitant;
+傳染病 > pestilence;
+符記環 > token\-ring;
+四百億 > 40\-billion;
+盧浮宮 > the\-louvre;
+否決權 > veto\-power;
+崇拜者 > worshipper;
+戲劇化 > theatrical;
+啄木鳥 > woodpecker;
+非盈利 > non\-profit;
+使容易 > facilitate;
+研究員 > researcher;
+目擊者 > eyewitness;
+專門化 > specialize;
+摩托車 > motorcycle;
+按手禮 > ordination;
+訂購者 > subscriber;
+顯微鏡 > microscope;
+原生質 > protoplasm;
+多方面 > many\-sided;
+會長團 > presidency;
+新聞學 > journalism;
+不定詞 > infinitive;
+大氣層 > atmosphere;
+不簡單 > not\-simple;
+受傷害 > be\-injured;
+端系統 > end\-system;
+代替者 > substitute;
+三百億 > 30\-billion;
+非對稱 > asymmetric;
+無煙煤 > anthracite;
+半決賽 > semifinals;
+莫須有 > groundless;
+不買賬 > not\-buy\-it;
+女學生 > schoolgirl;
+不自在 > uneasiness;
+下個月 > next\-month;
+鏈路層 > link\-layer;
+不由得 > can''t\-help;
+溫和性 > tenderness;
+所有者 > proprietor;
+上個月 > last\-month;
+半空中 > in\-mid\-air;
+不等式 > inequality;
+暗間兒 > inner\-room;
+自動化 > automation;
+單方面 > unilateral;
+運動場 > playground;
+附加物 > complement;
+佛教徒 > a\-buddhist;
+操舵室 > pilothouse;
+電唱機 > phonograph;
+流程圖 > flow\-chart;
+監督者 > supervisor;
+所有物 > belongings;
+二十一 > twenty\-one;
+穩定性 > stability;
+連接器 > connector;
+形容辭 > adjective;
+可得到 > available;
+科學家 > scientist;
+志願者 > volunteer;
+擦邊球 > edge\-ball;
+怎麼樣 > how\-about;
+所有權 > ownership;
+白報紙 > newsprint;
+討論會 > symposium;
+接受者 > recipient;
+形容詞 > adjective;
+每個人 > everybody;
+不育性 > sterility;
+檢查員 > inspector;
+表現型 > phenotype;
+皮鞋匠 > shoemaker;
+保護者 > protector;
+偽君子 > hypocryte;
+聲明書 > statement;
+馬蹄鐵 > horseshoe;
+擔架床 > stretcher;
+不完善 > imperfect;
+晴雨表 > barometer;
+千禧年 > millenium;
+使蔓延 > to\-spread;
+接班人 > successor;
+剪貼簿 > scrapbook;
+偉晶岩 > pegmatite;
+指示符 > indicator;
+保惠師 > comforter;
+建築師 > architect;
+委員會 > committee;
+航海者 > navigator;
+小吃店 > snack\-bar;
+維士卡 > visa\-card;
+好奇心 > curiosity;
+政治性 > political;
+滑鼠墊 > mouse\-pad;
+拜物教 > fetishism;
+低速率 > low\-speed;
+政治局 > politburo;
+零售商 > tradesman;
+政治家 > statesman;
+安全帶 > seat\-belt;
+登廣告 > advertise;
+有活力 > energetic;
+香檳酒 > champagne;
+綜合性 > synthesis;
+摁釘兒 > thumbtack;
+文具商 > stationer;
+新加坡 > singapore;
+領事館 > consulate;
+超聯結 > hyperlink;
+保皇黨 > royalists;
+東北方 > northeast;
+好萊塢 > hollywood;
+持久性 > constancy;
+白血病 > leukaemia;
+全世界 > worldwide;
+繼承者 > successor;
+抗議者 > protester;
+衣帽間 > cloakroom;
+一匹馬 > one\-horse;
+有時候 > sometimes;
+候選人 > candidate;
+向北地 > northward;
+下決心 > determine;
+保證人 > guarantor;
+上星期 > last\-week;
+第二十 > twentieth;
+睡過頭 > oversleep;
+利未記 > leviticus;
+童子軍 > boy\-scout;
+四十六 > forty\-six;
+第九十 > ninetieth;
+車前燈 > headlight;
+宇航員 > astronaut;
+使困窘 > embarrass;
+巧克力 > chocolate;
+有雄心 > ambitious;
+處理器 > processor;
+知更鳥 > redbreast;
+啟示者 > revelator;
+第三十 > thirtieth;
+白鎢礦 > scheelite;
+手提包 > \(hand\)bag;
+技術性 > technical;
+不誠實 > dishonest;
+豌豆粥 > pea\-gruel;
+變流器 > converter;
+潛水艇 > submarine;
+扳道員 > pointsman;
+繼任者 > successor;
+兩星期 > fortnight;
+格式化 > to\-format;
+採石場 > stone\-pit;
+加勒比 > caribbean;
+電報機 > telegraph;
+工作表 > worksheet;
+暴風雪 > snowstorm;
+暴風雨 > rainstorm;
+文字檔 > text\-file;
+貿易戰 > trade\-war;
+保証人 > guarantor;
+奉承者 > flatterer;
+指揮者 > conductor;
+參考書 > reference;
+針對性 > direction;
+半衰期 > half\-life;
+拉斐特 > lafayette;
+要不然 > otherwise;
+不結果 > fruitless;
+申請人 > applicant;
+出版者 > publisher;
+本星期 > this\-week;
+怪不得 > no\-wonder;
+創造力 > ingenuity;
+可容忍 > tolerable;
+基本上 > basically;
+稻草人 > scarecrow;
+多用戶 > multiuser;
+羽毛球 > badminton;
+救護車 > ambulance;
+第十六 > sixteenth;
+使生氣 > displease;
+不公正 > injustice;
+光射線 > light\-ray;
+外國人 > foreigner;
+第十五 > fifteenth;
+阿根廷 > argentina;
+偽善者 > hypocrite;
+螺旋槳 > propeller;
+貯水處 > reservoir;
+半流體 > semifluid;
+征服者 > conqueror;
+捕鼠器 > mousetrap;
+變色龍 > chameleon;
+對抗者 > adversary;
+薄油層 > oil\-sheet;
+無知覺 > senseless;
+氣壓計 > barometer;
+白云母 > muscovite;
+彫刻品 > sculpture;
+新聞界 > the\-press;
+一千噸 > 1000\-tons;
+不規則 > irregular;
+波狀雲 > undulatus;
+擴音器 > megaphone;
+不見了 > disappear;
+九月份 > september;
+超文本 > hypertext;
+讀書人 > a\-scholar;
+指揮官 > commander;
+引用句 > quotation;
+千赫茲 > kilohertz;
+八倍體 > octoploid;
+被禁止 > forbidden;
+不自然 > unnatural;
+高科技 > high\-tech;
+怪物似 > monstrous;
+冰棍兒 > ice\-lolly;
+白班兒 > day\-shift;
+星期三 > wednesday;
+野蠻人 > barbarian;
+十字軍 > crusaders;
+法國人 > frenchman;
+五千噸 > 5000\-tons;
+遇難船 > shipwreck;
+出席者 > attendant;
+羊皮紙 > parchment;
+反艦艇 > anti\-ship;
+內衣褲 > underwear;
+必需品 > necessity;
+冰淇淋 > ice\-cream;
+石灰石 > limestone;
+修道院 > monastery;
+西北方 > northwest;
+望遠鏡 > telescope;
+超文件 > hypertext;
+擺設兒 > ornaments;
+太好了 > very\-good;
+本年度 > this\-year;
+心靈上 > spiritual;
+天文學 > astronomy;
+巴比妥 > barbitone;
+實質上 > virtually;
+有節制 > temperate;
+有意識 > conscious;
+受害者 > casulties;
+不完美 > defective;
+情緒化 > emotional;
+支持者 > supporter;
+數不盡 > countless;
+借書單 > book\-slip;
+有禮貌 > courteous;
+第八十 > eightieth;
+里程碑 > milestone;
+不情願 > unwilling;
+下定義 > to\-define;
+對不起 > i''m\-sorry;
+假象牙 > celluloid;
+降落傘 > parachute;
+不育症 > sterility;
+必要性 > necessity;
+數不清 > countless;
+購買者 > purchaser;
+大教堂 > cathedral;
+組織者 > organizer;
+聖迭哥 > san\-diego;
+長方形 > rectangle;
+生殖力 > fertility;
+灰獵犬 > greyhound;
+習慣性 > customary;
+白內障 > cataract;
+大篷車 > schooner;
+監護人 > guardian;
+不合適 > improper;
+觀察者 > observer;
+藥劑士 > druggist;
+不信任 > mistrust;
+因特網 > internet;
+對稱性 > symmetry;
+檢測器 > detector;
+魔術師 > magician;
+不朽的 > immortal;
+歷史性 > historic;
+檸檬水 > lemonade;
+以太網 > ethernet;
+負重擔 > burdened;
+探測器 > detector;
+十二月 > december;
+擦網球 > net\-ball;
+聖保羅 > st\.\-paul;
+西裡爾 > cyrillic;
+女孩兒 > daughter;
+有德行 > virtuous;
+可擦寫 > erasable;
+牧羊者 > shepherd;
+最喜愛 > favorite;
+筆記本 > notebook;
+薰衣草 > lavender;
+不必要 > needless;
+請願書 > petition;
+投資者 > investor;
+寄生物 > parasite;
+肯塔基 > kentucky;
+柬埔寨 > cambodia;
+一小時 > one\-hour;
+人行道 > sidewalk;
+安全性 > security;
+再保証 > reassure;
+政治學 > politics;
+觀察家 > observer;
+雞尾酒 > cocktail;
+橄欖球 > football;
+平底鍋 > saucepan;
+紀念碑 > monument;
+侵入者 > intruder;
+改革者 > reformer;
+手提箱 > suitcase;
+不同意 > disagree;
+共和國 > republic;
+棒磨機 > rod\-mill;
+比目魚 > flatfish;
+大屠殺 > massacre;
+小夜曲 > serenade;
+小標題 > subtitle;
+有機體 > organism;
+死衚衕 > dead\-end;
+交響曲 > symphony;
+時間表 > schedule;
+頭向前 > headlong;
+探險者 > explorer;
+受難者 > sufferer;
+巴拉圭 > paraguay;
+第一步 > step\-one;
+調味汁 > dressing;
+數據庫 > database;
+債權人 > creditor;
+弟兄們 > brethren;
+小說家 > novelist;
+第五十 > fiftieth;
+三明治 > sandwich;
+催化劑 > catalyst;
+消費者 > consumer;
+牧羊人 > shepherd;
+有彈性 > flexible;
+經陸路 > overland;
+在戶外 > outdoors;
+擦棒球 > foul\-tip;
+中世紀 > medieval;
+傾聽者 > listener;
+接收器 > receiver;
+資料庫 > database;
+殺人犯 > murderer;
+葡萄牙 > portugal;
+不正常 > abnormal;
+內部網 > intranet;
+不透氣 > airtight;
+暖氣機 > radiator;
+阿肯色 > arkansas;
+教科書 > textbook;
+鼓吹者 > advocate;
+地下室 > basement;
+大肚子 > pregnant;
+不過意 > be\-sorry;
+冒犯者 > offender;
+保真度 > fidelity;
+不體面 > shameful;
+小衝突 > skirmish;
+排水渠 > drainage;
+麻醉劑 > narcotic;
+被侵害 > stricken;
+計算機 > computer;
+白木耳 > tremella;
+獨裁者 > dictator;
+記錄員 > recorder;
+蘇格蘭 > scotland;
+葡萄園 > vineyard;
+使興奮 > exciting;
+第十一 > eleventh;
+方程式 > equation;
+無線電 > wireless;
+彫刻家 > sculptor;
+工商界 > industry;
+阿托品 > atropine;
+地區性 > regional;
+裝飾物 > ornament;
+三角形 > triangle;
+誘拐者 > abductor;
+戲劇性 > dramatic;
+懲罰性 > punitive;
+八角楓 > alangium;
+北海道 > hokkaido;
+低成本 > low\-cost;
+明信片 > postcard;
+救贖主 > redeemer;
+生命力 > vitality;
+所在地 > location;
+產量多 > fruitful;
+看守者 > watchman;
+佔領者 > occupant;
+暗地裡 > secretly;
+低費用 > low\-cost;
+使吃驚 > astonish;
+幸存者 > survivor;
+使駭怕 > frighten;
+櫻花草 > primrose;
+星期四 > thursday;
+決定性 > decisive;
+日耳曼 > germanic;
+幾何學 > geometry;
+傾向於 > prone\-to;
+生還者 > survivor;
+星期六 > saturday;
+防守者 > defender;
+有價值 > valuable;
+刺激物 > stimulus;
+不信用 > distrust;
+提供諸 > provider;
+工程師 > engineer;
+中繼器 > repeater;
+洋琵琶 > mandolin;
+惡作劇 > mischief;
+子午線 > meridian;
+製作者 > producer;
+不在乎 > not\-mind;
+音樂家 > musician;
+使麻痺 > paralyze;
+千字節 > kilobyte;
+變阻器 > theostat;
+女房東 > landlady;
+不值得 > unworthy;
+提供者 > supplier;
+堅固性 > firmness;
+白化病 > albinism;
+第六十 > sixtieth;
+文明化 > civilize;
+外交官 > diplomat;
+白雲石 > dolomite;
+使習慣 > accustom;
+冰晶石 > cryolite;
+不小心 > heedless;
+富色彩 > colorful;
+納稅人 > taxpayer;
+再出現 > reappear;
+靠背椅 > armchair;
+操作者 > operator;
+全國性 > national;
+絲狀物 > filament;
+發明家 > inventor;
+藥劑師 > druggist;
+不怎麼 > not\-very;
+大西洋 > atlantic;
+看得見 > visible;
+有資格 > entitle;
+圓石頭 > boulder;
+奧地利 > austria;
+傳道部 > mission;
+創世紀 > genesis;
+千位元 > kilobit;
+揚聲器 > speaker;
+管理員 > manager;
+老資格 > veteran;
+金銀塊 > bullion;
+沙丁魚 > sardine;
+出納員 > cashier;
+愛遊玩 > playful;
+鋼琴家 > pianist;
+計數者 > counter;
+解剖學 > anatomy;
+有學問 > learned;
+半吊子 > dabbler;
+天花板 > ceiling;
+大盤子 > platter;
+不能不 > have\-to;
+出入口 > gateway;
+起皺紋 > shrivel;
+油光漆 > varnish;
+托兒所 > nursery;
+艷紅色 > crimson;
+特許狀 > charter;
+拖曳機 > tractor;
+預言家 > prophet;
+背叛者 > traitor;
+大使館 > embassy;
+大草原 > prairie;
+物理學 > physics;
+不聽命 > disobey;
+索馬裡 > somalia;
+廣播網 > network;
+巴格達 > baghdad;
+銀行業 > banking;
+手推車 > trolley;
+勞動者 > laborer;
+美洲豹 > panther;
+花崗石 > granite;
+在其中 > therein;
+不合法 > illegal;
+梵帝岡 > vatican;
+同義字 > synonym;
+愛國者 > patriot;
+女主人 > hostess;
+白榴石 > leucite;
+你自己 > thyself;
+自由派 > liberal;
+螢火蟲 > firefly;
+百分之 > percent;
+鬆緊帶 > elastic;
+寄宿生 > boarder;
+受歡迎 > popular;
+飛機場 > airport;
+計數器 > counter;
+實際上 > in\-fact;
+反應堆 > reactor;
+異教徒 > heathen;
+外邦人 > gentile;
+移民者 > migrant;
+不吉利 > ominous;
+創造者 > creator;
+熔礦爐 > furnace;
+女英雄 > heroine;
+內羅畢 > nairobi;
+叛逆者 > traitor;
+使高貴 > dignify;
+地質學 > geology;
+關鍵詞 > keyword;
+巴松管 > bassoon;
+布隆迪 > burundi;
+充電器 > charger;
+蒙大拿 > montana;
+炭疽病 > anthrax;
+史密特 > schmitt;
+富士通 > fujitsu;
+烹調術 > cookery;
+印刷者 > printer;
+混合物 > mixture;
+阿克倫 > acheron;
+無神論 > atheism;
+不動搖 > unmoved;
+隱藏處 > shelter;
+押沙龍 > absalom;
+催眠曲 > lullaby;
+牛頭犬 > bulldog;
+使魔法 > conjure;
+吹口哨 > whistle;
+安乃近 > analgin;
+蛋白質 > protein;
+芝加哥 > chicago;
+八帶魚 > octopus;
+洗衣店 > laundry;
+不得勁 > awkward;
+半瓶醋 > dabbler;
+長頸鹿 > giraffe;
+女高音 > soprano;
+比利時 > belgium;
+不調和 > discord;
+有陰影 > shadowy;
+指關節 > knuckle;
+平常日 > weekday;
+儲藏室 > storage;
+匈牙利 > hungary;
+墓誌銘 > epitaph;
+一會兒 > a\-while;
+不道德 > immoral;
+烏克蘭 > ukraine;
+在室內 > indoors;
+不離兒 > not\-bad;
+白蛋白 > albumin;
+主席臺 > rostrum;
+類固醇 > steroid;
+評議會 > council;
+有希望 > hopeful;
+傷寒症 > typhoid;
+到那裡 > thither;
+養老金 > pension;
+睡眠者 > sleeper;
+喘吁吁 > to\-blow;
+小冊子 > booklet;
+未武裝 > unarmed;
+帶紅色 > reddish;
+合夥人 > partner;
+有幫助 > helpful;
+阿拉伯 > arabian;
+阿拉丁 > aladdin;
+不覺察 > unaware;
+甘藍菜 > cabbage;
+女修道 > convent;
+發現物 > finding;
+在下方 > beneath;
+蒸汽機 > steamer;
+小瀑布 > cascade;
+第十二 > twelfth;
+巴不得 > anxious;
+未決定 > pending;
+旅遊者 > tourist;
+受託人 > trustee;
+見證人 > witness;
+石南屬 > heather;
+圖書館 > library;
+薄烤餅 > pancake;
+毒草名 > hemlock;
+地平線 > horizon;
+她自己 > herself;
+使孤立 > isolate;
+矮壯素 > cycocel;
+向何處 > whither;
+籃板球 > rebound;
+聽得見 > audible;
+做禱告 > to\-pray;
+百慕大 > bermuda;
+有條紋 > striped;
+安息日 > sabbath;
+不倒翁 > tumbler;
+裁紙機 > trimmer;
+一部分 > portion;
+懷敵意 > hostile;
+創立者 > founder;
+維他命 > vitamin;
+裝置物 > fixture;
+參議員 > senator;
+印表機 > printer;
+星期二 > tuesday;
+音樂會 > concert;
+體育場 > stadium;
+愛爾蘭 > ireland;
+逃亡者 > runaway;
+咯咯笑 > chuckle;
+生物學 > biology;
+戰鬥者 > fighter;
+使憤慨 > outrage;
+居住於 > inhabit;
+打印機 > printer;
+使憤怒 > provoke;
+彌賽亞 > messiah;
+沒甚麼 > nothing;
+煙灰缸 > ashtray;
+深紅色 > scarlet;
+不在了 > be\-dead;
+紡織品 > textile;
+代名詞 > pronoun;
+不濟事 > no\-good;
+開拓者 > pioneer;
+不人道 > inhuman;
+被沒收 > forfeit;
+路西弗 > lucifer;
+化學家 > chemist;
+訓練者 > trainer;
+清潔器 > cleaner;
+愛德玲 > adeline;
+迫切性 > urgency;
+女演員 > actress;
+桌上型 > desktop;
+巴比倫 > babylon;
+嬰兒期 > infancy;
+百葉窗 > shutter;
+避彈坑 > foxhole;
+有才幹 > capable;
+脫衣服 > undress;
+觀光客 > tourist;
+運動家 > athlete;
+業餘者 > amateur;
+金字塔 > pyramid;
+他自己 > himself;
+定居者 > settler;
+二十多 > over\-20;
+收留所 > barrack;
+毛毛雨 > drizzle;
+運動員 > athlete;
+燕麥粥 > oatmeal;
+標語牌 > placard;
+自行車 > bicycle;
+民數記 > numbers;
+小斑點 > speckle;
+使厭煩 > disgust;
+艾迪生 > addison;
+士師記 > judges;
+護送者 > escort;
+發電機 > dynamo;
+穆斯林 > muslim;
+開車人 > driver;
+嘶啞聲 > hoarse;
+拔尖兒 > tiptop;
+管理人 > keeper;
+黃鼠狼 > weasel;
+有人情 > humane;
+西紅柿 > tomato;
+電影院 > cinema;
+小妖精 > goblin;
+金絲雀 > canary;
+動名詞 > gerund;
+競賽者 > player;
+編年史 > annals;
+缺氧症 > anoxia;
+大地洞 > cavern;
+滑翔機 > glider;
+殘餘物 > litter;
+有責任 > liable;
+孩子氣 > boyish;
+小牝牛 > heifer;
+跑步者 > runner;
+吐綬雞 > turkey;
+跨接器 > jumper;
+負擔者 > bearer;
+合唱團 > chorus;
+領導者 > leader;
+曲棍球 > hockey;
+路由器 > router;
+父母親 > parent;
+化妝品 > makeup;
+急促聲 > patter;
+使硬化 > harden;
+交易者 > dealer;
+日內瓦 > geneva;
+銀行家 > banker;
+植物學 > botany;
+紀念獎 > trophy;
+偽造的 > forged;
+第二次 > second;
+鵝卵石 > pebble;
+有氣派 > lordly;
+債務人 > debtor;
+畫眉鳥 > thrush;
+小碟子 > saucer;
+舞蹈家 > dancer;
+叮噹聲 > tinkle;
+使濕透 > drench;
+批評家 > critic;
+在深處 > deeply;
+勝利者 > victor;
+蹺蹺板 > seesaw;
+磨坊主 > miller;
+有關連 > relate;
+多樹木 > wooded;
+吱吱聲 > squeak;
+未完成 > undone;
+魔賽克 > mosaic;
+強有力 > strong;
+烏干達 > uganda;
+不確實 > untrue;
+辦公室 > office;
+羅馬書 > romans;
+服務員 > waiter;
+蜘蛛網 > cobweb;
+阿米巴 > amoeba;
+修補匠 > tinker;
+大理石 > marble;
+持有人 > holder;
+撒哈拉 > sahara;
+大鐮刀 > scythe;
+濾波器 > filter;
+娛樂場 > resort;
+使高興 > please;
+最年長 > eldest;
+醃黃瓜 > pickle;
+收割者 > reaper;
+杜鵑鳥 > cuckoo;
+打噴嚏 > sneeze;
+螺旋鉗 > wrench;
+參議院 > senate;
+領導人 > leader;
+變形蟲 > amoeba;
+任何人 > anyone;
+有道德 > chaste;
+藝術家 > artist;
+頂樑柱 > pillar;
+使膨脹 > dilate;
+小提琴 > fiddle;
+懶洋洋 > lazily;
+馬戲團 > circus;
+高腳杯 > goblet;
+馬鈴薯 > potato;
+使轉向 > divert;
+沒有人 > nobody;
+博物館 > museum;
+使困擾 > harass;
+禮拜堂 > chapel;
+不透明 > opaque;
+它本身 > itself;
+扁桃體 > tonsil;
+排水溝 > gutter;
+正方形 > square;
+可信任 > trusty;
+文學家 > writer;
+移動式 > mobile;
+到此處 > hither;
+殖民地 > colony;
+墨西哥 > mexico;
+清真寺 > mosque;
+辦事處 > office;
+安哥拉 > angola;
+以色列 > israel;
+釘書針 > staple;
+照相機 > camera;
+紡織者 > weaver;
+斯拉夫 > slavic;
+俄羅斯 > russia;
+裁縫師 > tailor;
+弓箭手 > archer;
+塞爾特 > celtic;
+女舍監 > matron;
+打字員 > typist;
+星期日 > sunday;
+葡萄乾 > raisin;
+我自己 > myself;
+大步走 > stride;
+不公平 > unfair;
+芭蕾舞 > ballet;
+評論家 > critic;
+伯利茲 > belize;
+螺旋形 > spiral;
+比較少 > lesser;
+在此處 > herein;
+被害人 > victim;
+阿波羅 > apollo;
+使耳聾 > deafen;
+義賣會 > bazaar;
+星期天 > sunday;
+工作室 > studio;
+門外漢 > layman;
+在附近 > nearby;
+塗油於 > anoint;
+雜貨商 > grocer;
+維吾爾 > uighur;
+英雄式 > heroic;
+理髮師 > barber;
+起泡沫 > seethe;
+星期五 > friday;
+星期一 > monday;
+巴爾干 > balkan;
+格格笑 > giggle;
+孟加拉 > bengal;
+土耳其 > turkey;
+白蘭地 > brandy;
+愛德華 > edward;
+半中腰 > middle;
+白乾兒 > spirit;
+典獄長 > warden;
+看不見 > unseen;
+使作嘔 > sicken;
+恐水病 > rabies;
+加﹍於 > impose;
+橡皮搽 > eraser;
+波士頓 > boston;
+經紀人 > broker;
+紅蘿蔔 > carrot;
+悄悄地 > gently;
+避難所 > refuge;
+白麵兒 > heroin;
+飼養者 > feeder;
+巴斯克 > basque;
+莫斯科 > moscow;
+月桂樹 > laurel;
+門診室 > clinic;
+微薄的 > meagre;
+小淘氣 > rascal;
+攝影機 > camera;
+起訴者 > suitor;
+巴拿馬 > panama;
+捕鯨船 > whaler;
+演說者 > orator;
+擺樣子 > do\-sth;
+幾乎不 > hardly;
+加拿大 > canada;
+醫務所 > clinic;
+十字架 > cross;
+代理人 > agent;
+驅動器 > drive;
+獨木舟 > canoe;
+條板箱 > crate;
+陳列臺 > stall;
+講解員 > guide;
+泥水匠 > mason;
+植物群 > flora;
+在高處 > aloft;
+撐竿跳 > vault;
+頭蓋骨 > skull;
+敘利亞 > syria;
+紫丁香 > lilac;
+不新鮮 > stale;
+大農場 > ranch;
+多水分 > juicy;
+呼叫器 > pager;
+下水道 > sewer;
+從來不 > never;
+二極管 > diode;
+競技場 > arena;
+麥阿密 > miami;
+休息室 > lobby;
+球狀物 > globe;
+對敵者 > rival;
+冬青樹 > holly;
+果子凍 > jelly;
+大地圖 > atlas;
+成年者 > adult;
+雅各書 > james;
+英代爾 > intel;
+毛茸茸 > hairy;
+使煩惱 > worry;
+尼日爾 > niger;
+收音機 > radio;
+第三次 > third;
+招待員 > usher;
+第一次 > first;
+意大利 > italy;
+水平面 > plane;
+亞麻布 > linen;
+溜冰鞋 > skate;
+作哼聲 > snort;
+製造者 > maker;
+無生命 > inert;
+酪農業 > dairy;
+水蒸氣 > vapor;
+像片簿 > album;
+贈與者 > giver;
+板條箱 > crate;
+天藍色 > azure;
+飛行員 > pilot;
+捐贈者 > donor;
+西班牙 > spain;
+提多書 > titus;
+生麵糰 > dough;
+阿拉摩 > alamo;
+男高音 > tenor;
+一點兒 > a\-bit;
+英特爾 > intel;
+小樹林 > grove;
+布萊爾 > blair;
+撥火棍 > poker;
+在旁邊 > aside;
+營業員 > clerk;
+使固定 > rivet;
+警報器 > siren;
+三角洲 > delta;
+威爾士 > wales;
+肯尼亞 > kenya;
+麵包皮 > crust;
+石南樹 > heath;
+螺絲釘 > screw;
+西洋棋 > chess;
+唱詩班 > choir;
+西洋杉 > cedar;
+使溺死 > drown;
+再一次 > again;
+地方性 > local;
+發牢騷 > whine;
+長頸瓶 > flask;
+皺眉頭 > scowl;
+駕駛員 > pilot;
+來福槍 > rifle;
+吵鬧聲 > noise;
+楔形物 > wedge;
+流浪者 > rover;
+毛嗶嘰 > serge;
+灌木叢 > scrub;
+起重機 > crane;
+碎布條 > shred;
+內在的 > inner;
+鬱金香 > tulip;
+雪茄煙 > cigar;
+烤麵包 > toast;
+吹笛者 > piper;
+一巴掌 > spank;
+統治者 > ruler;
+呼叫聲 > whoop;
+座右銘 > motto;
+三稜鏡 > prism;
+矮墩墩 > pudgy;
+阿爾法 > alpha;
+比例尺 > scale;
+反抗者 > rebel;
+哪一個 > which;
+合股線 > twine;
+邁阿密 > miami;
+輿論界 > media;
+瑞典人 > swede;
+使羞愧 > abash;
+男子氣 > manly;
+使娛樂 > amuse;
+媳婦兒 > wife;
+伊拉克 > iraq;
+有能力 > able;
+埃米爾 > emir;
+咖啡館 > cafe;
+一定要 > must;
+通行稅 > toll;
+玉蜀黍 > corn;
+小毛蟲 > slug;
+最主要 > main;
+猶他州 > utah;
+使受傷 > hurt;
+立方體 > cube;
+白骨頂 > coot;
+護城河 > moat;
+洋娃娃 > doll;
+感覺到 > feel;
+下一次 > next;
+淺黃色 > buff;
+大袋子 > sack;
+圈狀物 > hoop;
+不及格 > fail;
+出租車 > taxi;
+保險絲 > fuse;
+先見者 > seer;
+手拉車 > cart;
+爵士舞 > jazz;
+咖啡店 > cafe;
+艾滋病 > aids;
+八哥兒 > myna;
+電燈泡 > bulb;
+猶大書 > jude;
+大頭釘 > tack;
+愛滋病 > aids;
+赤裸裸 > bare;
+圓屋頂 > dome;
+雙胞胎 > twin;
+一塊麵 > loaf;
+使用者 > user;
+外小腿 > shin;
+蛋白石 > opal;
+一分錢 > cent;
+圓錐體 > cone;
+百合花 > lily;
+計程車 > taxi;
+蜂蜜酒 > mead;
+非常多 > much;
+在之上 > over;
+眨眼睛 > wink;
+貴婦人 > dame;
+紅寶石 > ruby;
+軟木塞 > cork;
+粉紅色 > pink;
+呼呼聲 > whir;
+快步跑 > trot;
+說謊者 > liar;
+陪審團 > jury;
+繼乘人 > heir;
+光禿禿 > bald;
+果餡餅 > tart;
+嘶嘶聲 > hiss;
+擦黑兒 > dusk;
+水果酒 > wine;
+癩哈蟆 > toad;
+織布機 > loom;
+橢圓形 > oval;
+空白點 > gap;
+為甚麼 > why;
+男孩子 > boy;
+浸一下 > dip;
+在眼前 > now;
+無花果 > fig;
+男孩兒 > boy;
+貓叫聲 > mew;
+細頸瓶 > jug;
+常春藤 > ivy;
+為什麼 > why;
+無尾猿 > ape;
+小精靈 > elf;
+老天爺 > god;
+零點六 > 0\.6;
+墨水兒 > ink;
+六點六 > 6\.6;
+用油炸 > fry;
+體育館 > gym;
+七點五 > 7\.5;
+七點二 > 7\.2;
+動物園 > zoo;
+猶太人 > jew;
+黃褐色 > tan;
+筆桿子 > pen;
+九七年 > ''97;
+計乘車 > cab;
+小伙子 > lad;
+貓頭鷹 > owl;
+向上地 > up;
+變文 > a\-popular\-form\-of\-narrative\-literature\-flourishing\-in\-the\-tang\-dynasty\-\(618\-907\)\-with\-alternate\-prose\-and\-rhymed\-parts\-for\-recitation\-and\-singing\-\(often\-on\-buddhistic\-themes\);
+邊幣 > border\-region\-currency\-\(consisting\-of\-the\-currency\-notes\-issued\-by\-the\-border\-region\-governments\-during\-the\-war\-of\-resistance\-against\-japan\-and\-the\-war\-of\-liberation\);
+同期 > the\-corresponding\-time\-period\-\(eg\,\-compare\-inflation\-now\-with\-the\-rate\-during\-the\-same\-month\-last\-year\);
+偏偏 > \(indicates\-that\-sth\.\-turns\-out\-just\-the\-opposite\-of\-what\-one\-would\-expect\-or\-what\-would\-be\-normal\);
+敬祝 > to\-respectfully\-offer\-\(written\-at\-the\-end\-of\-letter\-from\-someone\-of\-lower\-status\-to\-higher\-status\);
+卜辭 > oracle\-inscriptions\-of\-the\-shang\-dynasty\-\(16th\-11th\-century\-bc\)\-on\-tortoiseshells\-or\-animal\-bones;
+洛德 > \(winston\)\-lord\-\(former\-assistant\-secretary\-of\-state\-for\-east\-asia\-and\-pacific\-affairs\);
+彷徨 > name\-of\-a\-collection\-of\-short\-stories\,\-pang\-huang\,\-\"wandering\-about\"\,\-by\-lu3\-xun4\-魯迅;
+陳毅 > chen\-yi\,\-former\-mayor\-of\-shanghai\-and\-highest\-ranking\-military\-commander\-in\-china;
+包工 > undertake\-to\-perform\-work\-within\-a\-time\-limit\-and\-according\-to\-specifications;
+部首 > radicals\-by\-which\-characters\-are\-arranged\-in\-traditional\-chinese\-dictionaries;
+霸主 > a\-powerful\-chief\-of\-the\-princes\-of\-the\-spring\-and\-autumn\-period\-\(770\-476\-bc\);
+在於 > \(the\-problem\-or\-explanation\-or\-advantage\-etc\.\)\-lies\-in\-\(the\-fact\-that\.\.\.\);
+教訓 > \(teach\-someone\-or\-learn\-a\)\-lesson\-\(ie\,\-obtain\-wisdom\-from\-an\-experience\);
+駁岸 > a\-low\-stone\-wall\-built\-along\-the\-water''s\-edge\-to\-protect\-an\-embankment;
+補法 > treatment\-involving\-the\-use\-of\-tonics\-to\-restore\-the\-patient''s\-health;
+三不 > \"the\-three\-no''s\"\-\(an\-example\-of\-an\-abbreviated\-slogan\-or\-catchphrase\);
+白朮 > the\-rhizome\-of\-large\-headed\-atractylodes\-\(atractylodes\-macrocephaia\);
+宣判 > pronounce\-a\-\(judicial\)\-sentence\-\(after\-a\-verdict\-in\-a\-court\-of\-law\);
+病友 > a\-friend\-made\-in\-hospital\-or\-people\-who\-become\-friends\-in\-hospital;
+就是 > \(emphasizes\-that\-something\-is\-precisely\-or\-exactly\-what\-is\-stated\);
+大禹 > da\-yu\,\-name\-of\-an\-ancient\-hero\-who\-successfully\-controlled\-floods;
+表證 > illness\-that\-has\-not\-attacked\-the\-vital\-organs\-of\-the\-human\-body;
+幫閑 > hang\-on\-to\-and\-serve\-the\-rich\-and\-powerful\-by\-literary\-hack\-work;
+描紅 > to\-trace\-over\-red\-characters\-\(as\-a\-method\-of\-learning\-to\-write\);
+抗戰 > war\-of\-resistance\,\-especially\-the\-war\-against\-japan\-\(1937\-1945\);
+今音 > modern\-\(i\.e\.\-not\-ancient\)\-pronunciation\-of\-a\-chinese\-character;
+惋惜 > to\-feel\-sorry\-for\-a\-person\-over\-sth\-that\-should\-have\-happened;
+睥睨 > look\-at\-somebody\-disdainfully\-out\-of\-the\-corner\-of\-one''s\-eye;
+胡適 > hu\-shi\-\(1891\-1962\)\,\-original\-proponent\-of\-bai2\-hua4\-wen2\-白話文;
+軍委 > military\-commission\-of\-the\-communist\-party\-central\-committee;
+燈節 > the\-lantern\-festival\-\(15th\-of\-first\-month\-of\-lunar\-calendar\);
+北洋 > the\-qing\-dynasty\-name\-for\-the\-coastal\-provinces\-of\-liaoning;
+八旗 > the\-\"eight\-banners\"\-\(military\-organisation\-in\-qing\-dynasty\);
+藤野 > name\-of\-a\-person\,\-teng\-ye\,\-a\-japanese\-friend\-of\-lu3\-xun4\-魯迅;
+華表 > marble\-pillar\-\(ornamental\-column\-in\-front\-of\-places\,\-tombs\);
+待業 > to\-await\-job\-assignment\-\(term\-used\-only\-in\-mainland\-china\);
+扮相 > the\-appearance\-of\-an\-actor\-or\-actress\-in\-costume\-or\-makeup;
+武術 > wushu\,\-martial\-arts\-such\-as\-shadow\-boxing\,\-swordplay\,\-etc\.;
+中共 > \(abbreviation\-for\)\-chinese\-communist\-\(party\,\-regime\,\-etc\.\);
+政協 > cppcc\-\(chinese\-people''s\-political\-consultative\-committee\);
+採取 > adopt\-or\-carry\-out\-\(measures\,\-policies\,\-course\-of\-action\);
+癟三 > a\-wretched\-looking\-tramp\-who\-lives\-by\-begging\-or\-stealing;
+表兄 > male\-cousin\-with\-a\-different\-surname\-\(older\-than\-oneself\);
+仙草 > a\-kind\-of\-plant\-used\-as\-a\-medicinal\-herb\-in\-ancient\-times;
+板胡 > a\-bowed\-stringed\-instrument\-with\-a\-thin\-wooden\-soundboard;
+補養 > take\-a\-tonic\-or\-nourishing\-food\-to\-build\-up\-one''s\-health;
+拼命 > to\-be\-ready\-to\-risk\-one''s\-life\-\(in\-fighting\,\-work\,\-etc\.\);
+遷怒 > to\-take\-one''s\-anger\-out\-on\-sb\-\(who\-does\-not\-deserve\-it\);
+掛好 > to\-hang\-up\-properly\-\(telephone\,\-picture\,\-clothes\,\-etc\.\);
+拔毒 > draw\-out\-pus\-by\-applying\-a\-plaster\-to\-the\-affected\-area;
+畜力 > animal\-powered\-\(as\-opposed\-to\-human\-or\-machine\-powered\);
+幫腔 > vocal\-accompaniment\-in\-some\-traditional\-chinese\-operas;
+奔喪 > hasten\-home\-for\-the\-funeral\-of\-a\-parent\-or\-grandparent;
+白芍 > \(peeled\)\-root\-of\-herbaceous\-peony\-\(paeonia\-lactiflora\);
+興趣 > interest\-\(directed\-towards\,\-not\-inherent\-in\-something\);
+標兵 > parade\-guards\-\(usually\-spaced\-out\-along\-parade\-routes\);
+法海 > name\-of\-a\-buddhist\-monk\,\-fahai\,\-from\-madam\-white\-snake;
+彈琴 > to\-play\-or\-strum\-a\-lute\-or\-other\-stringed\-instrument;
+白陶 > white\-pottery\-\(of\-shang\-dynastry\-16\-11th\-century\-bc\);
+包干 > be\-responsible\-for\-a\-task\-unit\-until\-it\-is\-completed;
+平方 > square\-\(as\-in\-square\-foot\,\-square\-mile\,\-square\-root\);
+拉貝 > \(john\)\-rabe\-\(german\-eyewitness\-to\-nanjing\-massacre\);
+巫山 > mt\.\-wu\,\-on\-the\-changjiang\-river\-by\-the\-three\-gorges;
+捕俘 > capture\-enemy\-personnel\-\(for\-intelligence\-purposes\);
+鏢客 > armed\-escort\-\(of\-travellers\-or\-merchants''\-caravans\);
+貝母 > the\-bulb\-of\-the\-fritillary\-\(fritillaria\-thunbergii\);
+名勝 > a\-place\-famous\-for\-its\-scenery\-or\-historical\-relics;
+民樂 > music\,\-esp\.\-folk\-music\,\-for\-traditional\-instruments;
+陝西 > shaanxi\-province\,\-china\-\(capitol\-city\-is\-xi''an\-西安\);
+日方 > the\-japanese\-side\-or\-party\-\(in\-negotiations\,\-etc\.\);
+橫折 > \(horizontal\-starting\-right\-angle\-character\-stroke\);
+西安 > xi''an\-\(city\)\,\-the\-capitol\-city\-of\-shaanxi\-province;
+小青 > name\-of\-a\-person\,\-xiaoqing\,\-from\-madam\-white\-snake;
+臨摹 > to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\,\-etc\.\);
+備取 > be\-on\-the\-waiting\-list\-\(for\-admission\-to\-a\-school\);
+本末 > the\-whole\-course\-of\-an\-event\-from\-beginning\-to\-end;
+頓挫 > with\-syncopated\-cadence\-\(brush\-stroke\-in\-painting\);
+版畫 > a\-picture\-printed\-from\-an\-engraved\-or\-etched\-plate;
+避諱 > taboo\-against\-using\-the\-personal\-names\-of\-emperors;
+武松 > wusong\,\-name\-of\-a\-person\,\-a\-hero\-in\-shui\-hu\-zhuan;
+許仙 > name\-of\-a\-person\,\-xu\-xian\,\-from\-madam\-white\-snake;
+儐相 > attendant\-of\-the\-bride\-or\-bridegroom\-at\-a\-wedding;
+補瀉 > reinforcing\-and\-reducing\-methods\-\(in\-acupuncture\);
+幹事 > administrative\-secretary\-\(in\-charge\-of\-something\);
+巫峽 > wuxia\-gorge\,\-in\-the\-changjiang\-river\-three\-gorges;
+折筆 > against\-the\-bristles\-\(brush\-movement\-in\-painting\);
+專線 > special\-purpose\-phone\-line\-or\-communications\-link;
+圖克 > \(gary\-l\.\)\-tooker\-\(motorola\-chairman\-of\-the\-board\);
+斜鉤 > \(downwards\-right\-concave\-hooked\-character\-stroke\);
+豎折 > \(downwards\-starting\-right\-angle\-character\-stroke\);
+老兄 > ''old\-chap''\-\(form\-of\-address\-between\-male\-friends\);
+橫筆 > bristles\-lying\-down\-\(brush\-movement\-in\-painting\);
+採購 > make\-purchases\-for\-an\-organization\-or\-enterprise;
+正在 > in\-the\-process\-of\-\(doing\-something\-or\-happening\);
+報國 > dedicate\-oneself\-to\-the\-service\-of\-one''s\-country;
+筆觸 > brush\-stroke\-in\-chinese\-painting\-and\-calligraphy;
+便人 > somebody\-who\-happens\-to\-be\-on\-hand\-for\-an\-errand;
+謝辛 > chea\-sim\-\(cambodian\-national\-assembly\-president\);
+外電 > reports\-from\-foreign\-\(non\-chinese\)\-news\-agancies;
+罷了 > a\-modal\-particle\-indicating\-\(don''t\-mind\-it\,\-ok\);
+靜山 > cheng\-san\-\(electoral\-constituency\-in\-singapore\);
+抓飯 > a\-kind\-of\-food\-popular\-among\-believers\-in\-islam;
+白描 > line\-drawing\-in\-traditional\-ink\-and\-brush\-style;
+唐山 > tang\-shan\-\(a\-chinese\-city\-in\-hebei\-河北\-province\);
+避嫌 > avoid\-doing\-anything\-that\-may\-arouse\-suspicion;
+報幕 > announce\-the\-items\-on\-a\-\(theatrical\)\-programme;
+親家 > parents\-of\-one''s\-daughter\-in\-law\-or\-son\-in\-law;
+喜糖 > sweet\-given\-on\-a\-happy\-occasion\-\(esp\.\-wedding\);
+拜壽 > congratulate\-an\-elderly\-person\-on\-his\-birthday;
+並行 > in\-parallel\-\[development\,\-implementation\,\-etc\];
+伯杰 > \(samuel\)\-berger\-\(us\-national\-security\-advisor\);
+東盟 > asean\-\(association\-of\-southeast\-asian\-nations\);
+曾經 > \(refers\-to\-something\-that\-happened\-previously\);
+可見 > it\-can\-clearly\-be\-seen\-\(that\-this\-is\-the\-case\);
+慰問 > express\-sympathy\,\-greetings\,\-consolation\,\-etc\.;
+海德 > hyde\-\(eg\,\-house\-judiciary\-chairman\-henry\-hyde\);
+羅斯 > roth\-\(eg\,\-hrw\-executive\-director\-kenneth\-roth\);
+旁聽 > be\-a\-visitor\-\(at\-a\-meeting\,\-class\,\-trial\,\-etc\);
+推辭 > to\-decline\-\(an\-appointment\,\-invitation\,\-etc\.\);
+白痢 > dysentery\-characterized\-by\-white\-mucous\-stool;
+華佗 > name\-of\-a\-famous\-doctor\-in\-old\-times\,\-hua\-tuo;
+棒槌 > wooden\-club\-\(used\-to\-beat\-clothes\-in\-washing\);
+吞吐 > to\-take\-in\-and\-send\-out\-\(in\-large\-quantities\);
+斷橋 > the\-broken\-bridge\-\(at\-west\-lake\-in\-hangzhou\);
+氣功 > qigong\,\-a\-system\-of\-deep\-breathing\-exercises;
+省級 > provincial\-level\-\(eg\,\-provincial\-government\);
+武打 > acrobatic\-fighting\-in\-chinese\-opera\-or\-dance;
+報失 > report\-the\-loss\-to\-the\-authorities\-concerned;
+保養 > take\-good\-care\-of\-\(or\-conserve\)\-one''s\-health;
+平信 > ordinary\-mail\-\(as\-opposed\-to\-air\-mail\,\-etc\.\);
+分享 > obtain\-one''s\-share\-\(of\-wealth\,\-rights\,\-etc\.\);
+紅堡 > red\-fort\-\(historic\-building\-in\-delhi\,\-india\);
+元宵 > sweet\-dumplings\-made\-of\-glutinous\-rice\-flour;
+臨寫 > to\-copy\-\(a\-model\-of\-calligraphy\-or\-painting\);
+月餅 > moon\-cake\-\(esp\.\-for\-the\-mid\-autumn\-festival\);
+抄家 > to\-search\-a\-house\-and\-confiscate\-possessions;
+會見 > to\-meet\-with\-\(someone\-who\-is\-paying\-a\-visit\);
+大舉 > carry\-out\-a\-large\-scale\-\(military\)\-operation;
+日漸 > \(keep\-increasing\,\-changing\,\-etc\.\)\-day\-by\-day;
+議席 > seat\-in\-a\-parliament\-or\-legislative\-assembly;
+通緝 > wanted\-by\-the\-police\-\(fugitive\-or\-criminal\);
+真納 > \(mohammad\-ali\)\-jinnah\-\(founder\-of\-pakistan\);
+魯賓 > rubin\-\(eg\,\-treasury\-secretary\-robert\-rubin\);
+力寶 > lippo\-\(group\)\-\(indonesian\-business\-concern\);
+側鋒 > oblique\-attack\-\(brush\-movement\-in\-painting\);
+崇禎 > chongzhen\,\-last\-emperor\-of\-the\-ming\-dynasty;
+白字 > wrongly\-written\-and\-mispronounced\-character;
+對策 > countermeasure\-for\-dealing\-with\-a\-situation;
+筆力 > vigour\-of\-strokes\-in\-calligraphy\-or\-drawing;
+罰酒 > to\-drink\-as\-the\-result\-of\-having\-lost\-a\-bet;
+星體 > celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+主管 > \(be\)\-person\-in\-charge\-of\-\(a\-position\,\-etc\.\);
+步韻 > to\-write\-a\-poem\-using\-another\-poem''s\-rhymes;
+口氣 > \(friendly\-or\-unfriendly\)\-tone\-\(of\-comments\);
+正鋒 > frontal\-attack\-\(brush\-movement\-in\-painting\);
+星球 > celestial\-body\-\(eg\,\-planet\,\-satellite\,\-etc\);
+下來 > \(verb\-suffix\-indicating\-continuation\,\-etc\.\);
+幹部 > a\-cadre\-\(ie\,\-manager\,\-staff\,\-officer\,\-etc\.\);
+接納 > admit\-\(into\-membership\-of\-an\-organization\);
+把風 > keep\-watch\-\(during\-a\-clandestine\-activity\);
+備耕 > make\-preparations\-for\-ploughing\-and\-sowing;
+撥冗 > find\-time\-in\-the\-midst\-of\-pressing\-affairs;
+栽贓 > to\-frame\-someone\-\(by\-planting\-sth\-on\-them\);
+換取 > give\-something\-and\-get\-something\-in\-return;
+偽書 > \(forged\,\-dubious\,\-misclassified\)\-old\-books;
+簿冊 > books\-for\-taking\-notes\-or\-keeping\-accounts;
+上車 > to\-get\-on\-or\-into\-\(a\-bus\,\-train\,\-car\-etc\.\);
+筆下 > the\-wording\-and\-purport\-of\-what\-one\-writes;
+便函 > an\-informal\-letter\-sent\-by\-an\-organization;
+首席 > chief\-\(representative\,\-correspondent\,\-etc\);
+贅婿 > son\-in\-law\-living\-at\-wife''s\-parent''s\-house;
+處於 > be\-\(in\-some\-state\,\-position\,\-or\-condition\);
+敗筆 > a\-faulty\-stroke\-in\-calligraphy\-or\-painting;
+出路 > a\-way\-out\-\(of\-a\-difficult\-situation\,\-etc\);
+度日 > scratch\-out\-a\-difficult\,\-meager\-existence;
+報案 > report\-a\-case\-to\-the\-security\-authorities;
+兵源 > manpower\-resources\-\(for\-military\-service\);
+有電 > \(of\-a\-dwelling\)\-supplied\-with\-electricity;
+賁臨 > \(of\-distinguished\-guests\)\-honour\-my\-house;
+松下 > matsushita\-\(japanese\-electronics\-company\);
+不妙 > \(of\-a\-turn\-of\-events\)\-not\-too\-encouraging;
+勉強 > manage\-\(to\-do\-something\)\-with\-difficulty;
+別無 > have\-no\-other\-\(choice\,\-alternative\,\-etc\);
+公約 > convention\-\(ie\,\-international\-agreement\);
+年度 > year\-\(eg\,\-school\-year\,\-fiscal\-year\,\-etc\);
+筆順 > order\-of\-strokes\-observed\-in\-calligraphy;
+扎針 > to\-give\-or\-have\-an\-acupuncture\-treatment;
+製劑 > \(chemical\-or\-pharmaceutical\)\-preparation;
+體會 > know\-\(through\-learning\-or\-by\-experience\);
+偽托 > faking\-a\-modern\-object\-as\-an\-ancient\-one;
+海關 > customs\-\(ie\,\-border\-crossing\-inspection\);
+碑記 > a\-record\-of\-events\-inscribed\-on\-a\-tablet;
+包辦 > take\-care\-of\-everything\-concerning\-a\-job;
+出面 > act\-in\-a\-\(official\-or\-personal\)\-capacity;
+相隔 > be\-separated\-by\-\(distance\-or\-time\,\-etc\);
+時報 > \"times\"\-\(newspaper\,\-eg\,\-new\-york\-times\);
+通航 > connected\-by\-air\|sea\-traffic\-or\-service;
+遷居 > to\-move\-\(from\-one\-residence\-to\-another\);
+年代 > a\-decade\-of\-a\-century\-\(eg\,\-the\-sixties\);
+喬石 > qiao\-shi\-\(chinese\-leadership\-contender\);
+豎鉤 > \(straight\-down\-hooked\-character\-stroke\);
+成本 > \(manufacturing\,\-production\,\-etc\.\)\-costs;
+代理 > acting\-\(temporarily\-filling\-a\-position\);
+客廳 > drawing\-room\-\(room\-for\-arriving\-guests\);
+蓮霧 > wax\-apple\-\(a\-reddish\-pear\-shaped\-fruit\);
+題簽 > to\-write\-the\-title\-of\-a\-book\-on\-a\-label;
+老二 > the\-second\-child\-or\-brother\-\(or\-sister\);
+中南 > \(abbreviation\-for\)\-china\-\-\-south\-africa;
+版次 > the\-order\-in\-which\-editions\-are\-printed;
+受傷 > suffer\-injuries\-\(in\-an\-accident\,\-etc\.\);
+訂立 > agree\-to\-\(treaty\,\-contract\,\-agreement\);
+夏曆 > the\-traditional\-chinese\-lunar\-calendar;
+師範 > normal\-\(eg\,\-beijing\-normal\-university\);
+廣場 > a\-public\-square\-\(eg\,\-tiananmen\-square\);
+補票 > buy\-one''s\-ticket\-after\-the\-normal\-time;
+發燒 > have\-a\-high\-temperature\-\(from\-illness\);
+盆地 > basin\-\(low\-lying\-geographical\-feature\);
+手跡 > sb\.''s\-original\-handwriting\-or\-painting;
+璧還 > return\-\(a\-borrowed\-object\)\-with\-thanks;
+表妹 > female\-cousin\-with\-a\-different\-surname;
+拆散 > to\-break\-up\-\(a\-marriage\,\-family\,\-etc\.\);
+備品 > machine\-parts\-or\-tools\-kept\-in\-reserve;
+首任 > first\-person\-to\-be\-appointed\-to\-a\-post;
+部長 > head\-of\-a\-\(government\,\-etc\)\-department;
+比量 > take\-rough\-measurements\-\(with\-the\-hand;
+博愛 > universal\-fraternity\-\(or\-brotherhood\);
+敗火 > relieve\-inflammation\-or\-internal\-heat;
+經營 > engage\-in\-\(a\-business\-activity\,\-etc\.\);
+集成 > integrated\-\(as\-in\-integrated\-circuit\);
+政委 > political\-commissar\-\(within\-the\-army\);
+編導 > write\-and\-direct\-\(a\-play\,\-film\,\-etc\.\);
+行駛 > \(vehicles\,\-etc\.\)\-travel\-along\-a\-route;
+兵種 > \(military\)\-branch\-of\-the\-armed\-forces;
+逼宮 > force\-the\-king\-or\-emperor\-to\-abdicate;
+航行 > sail\-or\-fly\-\(in\-air\,\-water\,\-or\-space\);
+相信 > be\-convinced\-\(that\-something\-is\-true\);
+拔秧 > pull\-up\-seedlings\-\(for\-transplanting\);
+手裡 > \(a\-situation\-is\)\-in\-\(someone''s\)\-hands;
+捕撈 > fish\-for\-\(aquatic\-animals\-and\-plants\);
+簽名 > to\-sign\-\(one''s\-name\-with\-a\-pen\,\-etc\.\);
+濟南 > ji''nan\-\(capital\-of\-shandong\-province\);
+屏條 > set\-of\-\(usually\-four\)\-hanging\-scrolls;
+究竟 > after\-all\-\(when\-all\-is\-said\-and\-done\);
+鎮江 > zhenjiang\-\(city\)\,\-in\-jiangsu\-province;
+主科 > required\-courses\-in\-the\-major\-subject;
+班底 > ordinary\-members\-of\-theatrical\-troupe;
+金缽 > \(gold\)\-alms\-bowl\-\(of\-a\-buddhist\-monk\);
+聯名 > jointly\-\(signed\,\-declared\,\-sponsored\);
+下榻 > stay\-at\-\(a\-hotel\,\-etc\.\-during\-a\-trip\);
+記述 > make\-a\-descriptive\-record\-\(of\-events\);
+暗傷 > internal\-\(invisible\)\-injury\-\(damage\);
+太湖 > tai\-hu\-lake\,\-a\-big\-lake\-by\-wuxi\-city;
+橫鉤 > \(horizontal\-hooked\-character\-stroke\);
+北宋 > the\-northern\-song\-dynasty\-\(960\-1127\);
+鄉下 > country\-\(as\-opposed\-to\-town\-or\-city\);
+簽訂 > to\-agree\-to\-and\-sign\-\(a\-treaty\,\-etc\);
+增值 > appreciation\-\(of\-a\-car\,\-house\,\-etc\.\);
+兵家 > military\-strategist\-in\-ancient\-china;
+英尺 > \(english\)\-foot\-\(unit\-of\-measurement\);
+淪陷 > \(territory\)\-fall\-to\-enemy\-occupation;
+人選 > person\(s\)\-selected\-\(for\-a\-job\,\-etc\.\);
+會長 > president\-of\-a\-club\,\-committee\,\-etc\.;
+寫成 > to\-compile\-\(fashion\-through\-writing\);
+吞金 > to\-commit\-suicide\-by\-swallowing\-gold;
+板眼 > measure\-in\-traditional\-chinese\-music;
+首府 > capital\-city\-of\-an\-autonomous\-region;
+班次 > order\-of\-classes\-or\-grades\-at\-school;
+貴州 > name\-of\-a\-province\-in\-china\,\-guizhou;
+蓋茨 > \(bill\)\-gates\-\(chairman\-of\-microsoft\);
+吸引 > attract\-\(interest\,\-investment\,\-etc\.\);
+暗娼 > unlicensed\-\(unregistered\)\-prostitute;
+霸王 > xiang4yu3\-\(232\-202\-bc\)\-the\-conqueror;
+壽禮 > birthday\-present\-\(for\-an\-old\-person\);
+萬縣 > wanxian\-county\,\-in\-sichuan\-province;
+兵部 > the\-ministry\-of\-war\-in\-feudal\-china;
+北周 > the\-northern\-zhou\-dynasty\-\(557\-581\);
+北京 > beijing\-\(capital\-of\-mainland\-china\);
+草案 > draft\-\(legislation\,\-proposal\,\-etc\.\);
+親愛 > dear\-\.\.\.\-\(way\-of\-starting\-a\-letter\);
+補白 > filler\-\(in\-a\-newspaper\-or\-magazine\);
+舉行 > to\-hold\-\(a\-meeting\,\-ceremony\,\-etc\.\);
+保送 > recommend\-\(for\-admission\-to\-school\);
+轉帳 > transfer\-money\-from\|into\-an\-account;
+席位 > parliamentary\-or\-congressional\-seat;
+布什 > \(george\)\-bush\-\(former\-us\-president\);
+審訊 > a\-\(judicial\)\-trial\-\(in\-a\-courtroom\);
+筆桿 > the\-shaft\-of\-a\-pen\-or\-writing\-brush;
+病勢 > degree\-of\-seriousness\-of\-an\-illness;
+主辦 > host\-\(a\-conference\-or\-sports\-event\);
+本草 > a\-book\-on\-chinese\-\(herbal\)\-medicine;
+人物 > characters\-\(in\-a\-play\,\-novel\,\-etc\.\);
+議長 > speaker\-\(of\-a\-legislative\-assembly\);
+安南 > \[kofi\]\-annan\-\[un\-secretary\-general\];
+包飯 > get\-or\-supply\-meals\-at\-a\-fixed\-rate;
+有水 > \(of\-a\-dwelling\)\-supplied\-with\-water;
+話題 > subject\-\(of\-a\-talk\-or\-conversation\);
+事務 > \(political\,\-economic\,\-etc\.\)\-affairs;
+咱們 > we\-\(including\-the\-person\-spoken\-to\);
+率先 > take\-the\-lead\-\(showing\-inititative\);
+包租 > rent\-land\-or\-a\-house\-for\-subletting;
+明文 > \(laws\,\-rules\,\-etc\)\-state\-in\-writing;
+透視 > to\-examine\-by\-fluoroscope\-or\-x\-ray;
+報警 > report\-\(an\-incident\)\-to\-the\-police;
+碑帖 > a\-rubbing\-from\-a\-stone\-inscription;
+牛年 > year\-of\-the\-ox\-\(in\-chinese\-zodiac\);
+包廂 > box\-\(in\-a\-theatre\-or\-concert\-hall\);
+轉讓 > transfer\-\(technology\,\-goods\,\-etc\.\);
+盜版 > pirate\-version\-\(of\-software\,\-e\.g\.\);
+緣份 > fate\-\(which\-brings\-people\-together;
+平壤 > pyongyang\-\(capital\-of\-north\-korea\);
+擔任 > hold\-a\-governmental\-office\-or\-post;
+克服 > \(try\-to\)\-overcome\-\(hardships\,\-etc\);
+抄送 > to\-make\-a\-copy\-\(and\-send\-it\-to\-sb\);
+案驗 > investigate\-the\-evidence\-of\-a\-case;
+托運 > to\-book\-or\-check\-through\-\(baggage\);
+戶部 > feudal\-chinese\-ministry\-of\-revenue;
+推動 > to\-push\-\(for\-acceptance\-of\-a\-plan\);
+亞軍 > second\-place\-\(in\-a\-sports\-contest\);
+顏體 > yan\-style\-\(in\-chinese\-calligraphy\);
+久違 > \(haven''t\-done\-sth\)\-for\-a\-long\-time;
+香山 > fragrance\-hill\-\(a\-park\-in\-beijing\);
+銷毀 > to\-destroy\-\(by\-melting\-or\-burning\);
+北魏 > the\-northern\-wei\-dynasty\-\(386\-534\);
+暴病 > sudden\-attack\-of\-a\-serious\-illness;
+人大 > \(china\)\-national\-people''s\-congress;
+熱鬧 > bustling\-with\-noise\-and\-excitement;
+呈文 > petition\-\(submitted\-to\-a\-superior\);
+春節 > spring\-festival\-\(chinese\-new\-year\);
+𠼻 > a\-particle\-used\-in\-transliteration;
+新疆 > xinjiang\-\(uygur\-autonomous\-region\);
+網絡 > \(computer\,\-telecom\,\-etc\.\)\-network;
+壁毯 > tapestry\-\(used\-as\-a\-wall\-hanging\);
+擦澡 > rub\-oneself\-down\-with\-a\-wet\-towel;
+認定 > maintain\-\(that\-something\-is\-true\);
+分歧 > difference\-\(of\-opinion\,\-position\);
+連戰 > lien\-chan\-\(taiwan\-vice\-president\);
+制度 > \(political\)\-system\-or\-institution;
+補習 > take\-lessons\-after\-school\-or\-work;
+建交 > to\-establish\-diplomatic\-relations;
+火災 > fire\-\(that\-burns\-buildings\,\-etc\.\);
+備課 > \(of\-a\-teacher\)\-to\-prepare\-lessons;
+開演 > \(of\-a\-play\,\-movie\,\-etc\.\)\-to\-begin;
+備荒 > prepare\-against\-natural\-disasters;
+全會 > plenary\-session\-\(at\-a\-conference\);
+便難 > retort\-with\-challenging\-questions;
+答辯 > to\-reply\-\(to\-an\-accusation\,\-e\.g\.\);
+圖書 > books\-\(in\-a\-library\-or\-bookstore\);
+家長 > the\-parent\-or\-guardian\-of\-a\-child;
+回歸 > to\-return\-\(to\-previous\-condition\);
+骨法 > bone\-\(property\-of\-a\-brush\-stroke\);
+科隆 > cologne\,\-germany\-or\-colon\,\-panama;
+打消 > dispel\-\(doubts\,\-misgivings\,\-etc\.\);
+找到 > find\-\(what\-one\-was\-searching\-for\);
+召開 > convene\-\(a\-conference\-or\-meeting\);
+呼籲 > call\-on\-\(someone\-to\-do\-something\);
+科爾 > \(helmut\)\-kohl\-\(german\-chancellor\);
+齋月 > ramadan\-\(muslim\-month\-of\-fasting\);
+起來 > beginning\-or\-continuing\-an\-action;
+北齊 > the\-northern\-qi\-dynasty\-\(550\-557\);
+吐穗 > to\-have\-the\-ears\-of\-grain\-come\-up;
+請願 > petition\-\(for\-action\-to\-be\-taken\);
+享受 > to\-enjoy\-\(rights\,\-benefits\,\-etc\.\);
+三峽 > the\-three\-changjiang\-river\-gorges;
+取暖 > to\-warm\-oneself\-\(by\-a\-fire\,\-etc\.\);
+院長 > president\-\(of\-a\-university\,\-etc\.\);
+言論 > expression\-of\-\(political\)\-opinion;
+政界 > political\-and\-government\-circles;
+性別 > distinguishing\-between\-the\-sexes;
+違禁 > to\-violate\-a\-prohibtition\-or\-ban;
+酬和 > to\-respond\-to\-a\-poem\-with\-a\-poem;
+報考 > enter\-oneself\-for\-an\-examination;
+北國 > the\-northern\-part\-of\-the\-country;
+外孫 > grandson\-\(son\-of\-one''s\-daughter\);
+大國 > a\-power\-\(ie\,\-a\-dominant\-country\);
+探親 > to\-go\-home\-to\-visit\-one''s\-family;
+難以 > hard\-to\-\(predict\,\-imagine\,\-etc\.\);
+報效 > render\-service\-to\-repay\-kindness;
+親戚 > \(a\)\-relative\-\(ie\,\-family\-member\);
+為期 > \(to\-be\-done\)\-by\-\(a\-certain\-date\);
+農曆 > the\-traditional\-chinese\-calendar;
+按說 > in\-the\-ordinary\-course\-of\-events;
+連任 > continue\-in\-\(a\-political\)\-office;
+臉譜 > types\-of\-facial\-makeup\-in\-operas;
+開庭 > begin\-a\-\(judicial\)\-court\-session;
+公審 > public\-trial\-\(in\-a\-court\-of\-law\);
+但願 > if\-only\-\(it\-were\-possible\-to\.\.\.\);
+捨得 > to\-be\-willing\-to\-part\-with\-\(sth\);
+持有 > hold\-\(eg\,\-passport\,\-views\,\-etc\.\);
+抗爭 > make\-a\-stand\-and\-fight\-\(against\);
+篦子 > a\-double\-edged\-fine\-toothed\-comb;
+投機 > be\-a\-speculator\-\(profit\-seeking\);
+挪借 > to\-borrow\-money\-for\-a\-short\-time;
+宰相 > prime\-minister\-\(in\-feudal\-china\);
+虛腕 > empty\-wrist\-\(method\-of\-painting\);
+不論 > no\-matter\-\(what\,\-who\,\-how\,\-etc\.\);
+保修 > guarantee\-to\-keep\-in\-good\-repair;
+金邊 > phnom\-penh\-\(capital\-of\-cambodia\);
+侵佔 > to\-invade\-and\-occupy\-\(territory\);
+柯密 > kermit\-\(communications\-protocol\);
+享有 > enjoy\-\(rights\,\-privileges\,\-etc\.\);
+禮炮 > a\-gun\-salute\-\(eg\,\-21\-gun\-salute\);
+突厥 > turkic\-\(minority\-group\-in\-china\);
+安保 > \(abbreviation\)\-maintain\-security;
+壽麵 > birthday\-noodles\-\(for\-longevity\);
+浴室 > bathroom\-\(room\-used\-for\-bathing\);
+令人 > cause\-someone\-to\-\(be\,\-feel\,\-etc\);
+除非 > only\-if\-\(\.\.\.\,\-or\-otherwise\,\-\.\.\.\);
+歧視 > discrimination\-\(against\-someone\);
+敗落 > decline\-\(in\-wealth\-and\-position\);
+無錫 > wuxi\-\(city\)\,\-in\-jiangsu\-province;
+暗合 > agree\-without\-prior\-consultation;
+姐夫 > brother\-in\-law\-\(husband''s\-side\);
+特區 > special\-\(administrative\)\-region;
+日圓 > japanese\-yen\-\(unit\-of\-currency\);
+壁櫥 > a\-built\-in\-wardrobe\-or\-cupboard;
+避暑 > be\-away\-for\-the\-summer\-holidays;
+步搖 > dangling\-ornament\-worn\-by\-women;
+邦交 > relations\-between\-two\-countries;
+提煉 > to\-extract\-\(ore\,\-minerals\,\-etc\);
+橋接 > bridging\-\(in\-computer\-networks\);
+八方 > the\-eight\-points\-of\-the\-compass;
+內政 > internal\-affairs\-\(of\-a\-country\);
+迫使 > force\-\(someone\-to\-do\-something\);
+長廊 > the\-long\-corridor\-at\-yi\-he\-yuan;
+元帥 > a\-marshal\-\(in\-the\-armed\-forces\);
+校長 > \(college\,\-university\)\-president;
+開刀 > to\-perform\-or\-have\-an\-operation;
+輩分 > seniority\-in\-the\-family\-or\-clan;
+尾牙 > a\-year\-end\-dinner\-for\-employees;
+班輪 > regular\-passenger\-or\-cargo\-ship;
+抨擊 > attack\-\(verbally\-or\-in\-writing\);
+舞台 > \(theatrical\-or\-political\)\-stage;
+猛跌 > drop\-sharply\-\(eg\,\-stock\-prices\);
+信件 > a\-letter\-\(ie\,\-sent\-in\-the\-mail\);
+使命 > a\-\(diplomatic\-or\-other\)\-mission;
+丹皮 > the\-root\-bark\-of\-the\-peony\-tree;
+定做 > to\-have\-something\-made\-to\-order;
+重用 > to\-put\-in\-an\-important\-position;
+比賽 > \[athletic\-or\-other\]\-competition;
+敘述 > relate\-\(a\-story\-or\-information\);
+加重 > become\|make\-more\-serious\|graver;
+蔚為 > to\-afford\-\(a\-view\-of\-sth\,\-e\.g\.\);
+電臺 > radio\-\(or\-broadcasting\)\-station;
+碑林 > the\-forest\-of\-steles\-\(in\-xi''an\);
+外灘 > waitan\-\(the\-bund\)\,\-in\-shanghai;
+證實 > confirm\-\(something\-to\-be\-true\);
+議員 > member\-\(of\-a\-legislative\-body\);
+報表 > forms\-for\-reporting\-statistics;
+明報 > ming\-pao\-newspaper\-\(hong\-kong\);
+前程 > future\-\(career\,\-etc\)\-prospects;
+登門 > pay\-a\-visit\-to\-someone''s\-house;
+邊民 > people\-living\-on\-the\-frontiers;
+那末 > if\-that''s\-the\-case\,\-then\-\(\.\.\.\);
+效應 > effect\-\(eg\,\-greenhouse\-effect\);
+歹徒 > evil\-person\-who\-commits\-crimes;
+收復 > recover\-\(lost\-territory\,\-etc\.\);
+傲骨 > lofty\-and\-unyielding\-character;
+斷交 > break\-off\-diplomatic\-relations;
+帳戶 > \(bank\,\-computer\,\-etc\.\)\-account;
+固然 > admittedly\-\(it''s\-true\-that\.\.\.\);
+臺獨 > taiwan\-independence\-\(movement\);
+保苗 > keep\-a\-full\-stand\-of\-seedlings;
+路由 > routing\-\(in\-computer\-networks\);
+對美 > \(policy\,\-etc\.\)\-towards\-america;
+指數 > \(numerical\,\-statistical\)\-index;
+筆畫 > strokes\-of\-a\-chinese\-character;
+空襲 > \(military\)\-attack\-from\-the\-air;
+表報 > statistical\-tables\-and\-reports;
+拘押 > \(arrest\-and\)\-take\-into\-custody;
+尚書 > high\-official\-in\-ancient\-china;
+聳立 > to\-tower\-above\-\(on\-top\-of\-sth\);
+班組 > teams\-and\-groups\-\(in\-factories;
+伯母 > wife\-of\-father''s\-elder\-brother;
+中藥 > \(traditional\)\-chinese\-medicine;
+暗袋 > camera\-bag\-\(for\-changing\-film\);
+處決 > execute\-\(a\-condemned\-criminal\);
+新鮮 > fresh\-\(experience\,\-food\,\-etc\.\);
+叫聲 > yelling\-\(sound\-made\-by\-person\);
+班師 > withdraw\-troops\-from\-the\-front;
+哀悼 > grieve\-\(mourn\)\-over\-sb''s\-death;
+科恩 > cohen\-\(u\.s\.\-defence\-secretary\);
+敗陣 > be\-defeated\-on\-the\-battlefield;
+包賠 > guarantee\-to\-pay\-compensations;
+名次 > position\-in\-a\-ranking\-of\-names;
+嫂嫂 > sister\-in\-law\-\(husband''s\-side\);
+奉行 > to\-pursue\-\(a\-course\,\-a\-policy\);
+呼喚 > call\-out\-\(someone''s\-name\,\-etc\);
+𠀁 > the\-original\-form\-for\-七\-u\+4e03;
+𠀀 > the\-sound\-made\-by\-breathing\-in;
+示威 > hold\-a\-\(protest\)\-demonstration;
+吃刀 > penetration\-of\-a\-cutting\-tool;
+各位 > everybody\-\(a\-term\-of\-address\);
+韓圓 > korean\-won\-\(unit\-of\-currency\);
+報社 > general\-office\-of\-a\-newspaper;
+發跡 > to\-rise\-to\-power\-and\-position;
+支援 > provide\-assistance\-or\-backing;
+觀測 > \(scientific\,\-etc\)\-observation;
+違心 > against\-ones\-will\-or\-feelings;
+拼音 > pinyin\-\(chinese\-romanization\);
+境外 > outside\-\(a\-country''s\)\-borders;
+拌面 > noodles\-served\-with\-soy\-sauce;
+直接 > direct\-\(opposite\-of\-indirect\);
+鏡頭 > camera\-shot\-\(in\-a\-movie\,\-etc\);
+莫不 > there\-is\-no\-one\-\(who\-doesn''t\);
+送人 > to\-see\-\(or\-walk\)\-someone\-home;
+白文 > the\-text\-of\-an\-annotated\-book;
+將領 > high\-ranking\-military\-officer;
+掌權 > wield\-\(political\,\-etc\.\)\-power;
+促進 > to\-promote\-\(an\-idea\-or\-cause\);
+公安 > \(ministry\-of\)\-public\-security;
+病根 > an\-incompletely\-cured\-illness;
+補報 > make\-a\-report\-after\-the\-event;
+對臺 > \(policy\,\-etc\.\)\-towards\-taiwan;
+板鼓 > a\-small\-drum\-for\-marking\-time;
+贅述 > to\-say\-more\-than\-is\-necessary;
+實肘 > full\-arm\-\(method\-of\-painting\);
+淘金 > panning\-\(for\-precious\-metals\);
+戈爾 > \(al\)\-gore\-\(us\-vice\-president\);
+亂說 > to\-make\-irresponsible\-remarks;
+不軌 > against\-the\-law\-or\-discipline;
+保商 > preservation\-of\-soil\-moisture;
+作戰 > conduct\-\(military\-operations\);
+世行 > \[abbreviation\-for\]\-world\-bank;
+中華 > china\-\(alternate\-formal\-name\);
+侵入 > to\-make\-\(military\)\-incursions;
+球檯 > table\-\(for\-games\-using\-balls\);
+下臺 > step\-down\-\(from\-office\,\-etc\.\);
+貪污 > \(political\,\-moral\)\-corruption;
+中級 > middle\-level\-\(in\-a\-hierarchy\);
+有的 > \(there\-are\)\-some\-\(who\-are\.\.\.\);
+蓋飯 > rice\-with\-meat\-and\-vegitables;
+下班 > to\-come\-or\-go\-or\-get\-off\-work;
+包銷 > have\-exclusive\-selling\-rights;
+讓球 > to\-concede\-points\-\(in\-a\-game\);
+書房 > study\-\(i\.e\.\-the\-kind\-of\-room\);
+認識 > be\-acquainted\-with\-\(a\-person\);
+卻病 > to\-prevent\-or\-treat\-a\-disease;
+遲遲 > \(be\)\-late\-\(with\-a\-task\,\-etc\.\);
+𠀅 > an\-alternate\-form\-of\-u\+4ea5\-亥;
+德班 > durban\-\(city\-in\-south\-africa\);
+擺輪 > balance\-\(of\-a\-watch\-or\-clock\);
+擺設 > furnish\-and\-decorate\-\(a\-room\);
+熱線 > hotline\-\(communications\-link\);
+法制 > legal\-system\-and\-institutions;
+水平 > level\-\(of\-achievement\,\-etc\.\);
+夫權 > authority\-over\-the\-household;
+印尼 > \(abbreviation\-for\)\-indonesia;
+變價 > appraise\-at\-the\-current\-rate;
+妹夫 > brother\-in\-law\-\(wife''s\-side\);
+進而 > and\-then\-\(what\-follows\-next\);
+陣線 > a\-front\-\(ie\,\-militant\-group\);
+歲月 > the\-years\-of\-a\-person''s\-life;
+歸屬 > be\-under\-the\-jurisdiction\-of;
+在野 > be\-out\-of\-\(political\)\-office;
+廠房 > a\-building\-used\-as\-a\-factory;
+判決 > judgment\-\(by\-a\-court\-of\-law\);
+困難 > \(financial\,\-etc\.\)\-difficulty;
+掛號 > to\-register\-\(a\-letter\,\-etc\.\);
+補苗 > fill\-the\-gaps\-with\-seedlings;
+武力 > \(make\-use\-of\)\-military\-force;
+放假 > to\-have\-a\-holidy\-or\-vacation;
+舉重 > \(the\-sport\-of\)\-weightlifting;
+嚴詞 > \(criticize\,\-etc\.\)\-forcefully;
+境內 > within\-\(a\-country''s\)\-borders;
+華人 > ethnic\-chinese\-person\|people;
+橋本 > \(japanese\-surname\)\-hashimoto;
+地皮 > lot\,\-section\-of\-land\,\-ground;
+轉機 > \(take\-a\)\-turn\-for\-the\-better;
+常委 > member\-of\-standing\-committee;
+起飛 > to\-take\-off\-\(in\-an\-airplane\);
+開幕 > to\-open\-\(a\-conference\,\-e\.g\.\);
+打針 > to\-give\-or\-have\-an\-injection;
+璧謝 > decline\-\(a\-gift\)\-with\-thanks;
+對華 > \(policy\,\-etc\.\)\-towards\-china;
+儀器 > \(scientific\,\-etc\)\-instrument;
+究辦 > to\-investigate\-and\-deal\-with;
+定罪 > convict\-\(someone\-of\-a\-crime\);
+本題 > the\-subject\-under\-discussion;
+背簍 > a\-basket\-carried\-on\-the\-back;
+有關 > to\-have\-something\-to\-do\-with;
+來源 > source\-\(of\-information\,\-etc\);
+獲釋 > obtain\-release\-\(from\-prison\);
+對日 > \(policy\,\-etc\.\)\-towards\-japan;
+憋氣 > feel\-suffocated\-or\-oppressed;
+同胞 > fellow\-citizen\-or\-countryman;
+匾額 > a\-horizontal\-inscribed\-board;
+確診 > to\-make\-a\-definite\-diagnosis;
+它們 > they\-\(for\-inanimate\-objects\);
+現場 > scene\-\(of\-event\-or\-incident\);
+愛情 > love\-\(between\-man\-and\-woman\);
+變節 > make\-a\-political\-recantation;
+涉嫌 > to\-be\-a\-suspect\-\(in\-a\-crime\);
+失足 > to\-take\-a\-wrong\-step\-in\-life;
+犧牲 > sacrifice\-\(one''s\-life\,\-etc\.\);
+亞伯 > abe\-\(short\-form\-for\-abraham\);
+猜忌 > be\-suspicious\-and\-jealous\-of;
+黨內 > within\-the\-\(communist\)\-party;
+動蕩 > \(social\-or\-political\)\-unrest;
+王丹 > wang\-dan\-\(chinese\-dissident\);
+決定 > to\-decide\-\(to\-do\-something\);
+姊妹 > \(older\-and\-younger\)\-sisters;
+逼肖 > bear\-a\-close\-resemblance\-to;
+復審 > reexamine\-\(a\-judicial\-case\);
+入門 > introduction\-\(to\-a\-subject\);
+白露 > white\-dew\-\(15th\-solar\-term\);
+補體 > complement\-\(in\-blood\-serum\);
+評比 > to\-evaluate\-\(by\-comparison\);
+轉身 > \(of\-a\-person\)\-to\-turn\-round;
+爪哇 > java\-\(programming\-language\);
+效忠 > vow\-loyalty\-and\-devotion\-to;
+採辦 > buy\-on\-a\-considerable\-scale;
+弟妹 > sister\-in\-law\-\(wife''s\-side\);
+陷於 > caught\-in\-\(a\-bad\-situation\);
+外匯 > foreign\-\(currency\)\-exchange;
+摘由 > high\-points\-\(of\-a\-document\);
+側躺 > to\-lie\-down\-\(on\-one''s\-side\);
+搜捕 > hunt\-and\-arrest\-\(fugitives\);
+揹書 > recite\-a\-lesson\-from\-memory;
+幸免 > narrowly\-and\-luckily\-escape;
+國標 > guobiao\-\(encoding\-standard\);
+便血 > having\-blood\-in\-one''s\-stool;
+病機 > interpretation\-of\-the\-cause;
+才華 > literary\-or\-artistic\-talent;
+指法 > finger\-method\-\(in\-painting\);
+寶藏 > precious\-\(mineral\)\-deposits;
+提前 > to\-shift\-to\-an\-earlier\-date;
+輩出 > come\-forth\-in\-large\-numbers;
+板鴨 > pressed\-\(dried\)\-salted\-duck;
+拔海 > elevation\-\(above\-sea\-level\);
+倫敦 > london\-\(capital\-of\-england\);
+條款 > clause\-\(of\-contract\-or\-law\);
+病例 > \[medical\]\-case\-\[of\-illness\];
+器官 > organ\-\(part\-of\-body\-tissue\);
+班級 > classes\-or\-grades\-in\-school;
+憲法 > constitution\-\(of\-a\-country\);
+不諱 > without\-concealing\-anything;
+安插 > place\-in\-a\-certain\-position;
+古蹟 > places\-of\-historic\-interest;
+氣體 > gas\-\(ie\,\-gaseous\-substance\);
+孫子 > grandson\-\(son\-of\-one''s\-son\);
+奔騰 > \(of\-waves\)\-to\-surge\-forward;
+郵電 > post\-and\-telecommunications;
+問候 > give\-someone\-one''s\-respects;
+祖父 > grandfather\-\(father''s\-side\);
+決策 > \(make\-a\)\-strategic\-decision;
+祖母 > grandmother\-\(father''s\-side\);
+針灸 > acupuncture\-and\-moxibustion;
+一旦 > in\-case\-\(something\-happens\);
+壽辰 > birthday\-\(of\-an\-old\-person\);
+復甦 > recovery\-\(health\,\-economic\);
+時期 > a\-period\-in\-time\-or\-history;
+各地 > in\-all\-parts\-of\-\(a\-country\);
+碑文 > an\-inscription\-on\-a\-tablet;
+台北 > taipei\-\(capital\-of\-taiwan\);
+河內 > hanoi\-\(capital\-of\-vietnam\);
+量力 > to\-estimate\-one''s\-strength;
+斡旋 > mediate\-\(a\-conflict\,\-etc\.\);
+牌匾 > board\-\(attached\-to\-a\-wall\);
+動手 > to\-hit\-with\-hands\-or\-fists;
+步月 > to\-stroll\-beneath\-the\-moon;
+誓師 > to\-vow\-before\-one''s\-troops;
+部委 > ministries\-and\-commissions;
+難怪 > \(it''s\)\-no\-wonder\-\(that\.\.\.\);
+凍結 > \(loan\,\-wage\,\-price\)\-freeze;
+施加 > exert\-\(effort\-or\-pressure\);
+視窗 > windows\-\(operating\-system\);
+巨著 > monumental\-\(literary\)\-work;
+募化 > to\-collect\-alms\-\(buddhism\);
+部下 > troops\-under\-one''s\-command;
+全程 > \(during\-an\)\-entire\-journey;
+長篇 > lengthy\-\(report\-or\-speech\);
+西湖 > the\-west\-lake\,\-in\-hangzhou;
+撥弄 > move\-to\-and\-fro\-\(with\-hand;
+表記 > something\-given\-as\-a\-token;
+表裡 > the\-outside\-and\-the\-inside;
+逼債 > press\-for\-payment\-of\-debts;
+筆鋒 > the\-tip\-of\-a\-writing\-brush;
+報刊 > newspapers\-and\-periodicals;
+演講 > \(give\)\-a\-speech\-or\-lecture;
+國父 > father\|founder\-of\-a\-nation;
+依靠 > rely\-on\-\(for\-support\,\-etc\);
+所長 > head\-of\-an\-institute\,\-etc\.;
+若干 > a\-certain\-number\|amount\-of;
+競選 > run\-for\-\(electoral\)\-office;
+搶先 > to\-rush\-\(to\-do\-sth\-urgent\);
+停留 > stay\-somewhere\-temporarily;
+病株 > diseased\-or\-infected\-plant;
+俗稱 > be\-commonly\-referred\-to\-as;
+行將 > be\-about\-to\-\(do\-something\);
+足球 > football\-\(british\-english\);
+背脊 > the\-back\-of\-the\-human\-body;
+抗擊 > resist\-\(a\-military\-attack\);
+尋機 > to\-look\-for\-an\-opportunity;
+實況 > what\-is\-actually\-happening;
+丁雲 > ding\-yun\-\(a\-personal\-name\);
+案板 > kneading\-or\-chopping\-board;
+保守 > \(politically\)\-conservative;
+不送 > don''t\-bother\-to\-see\-me\-out;
+神道 > shinto\-\(japanese\-religion\);
+將就 > accept\-\(a\-bit\-reluctantly\);
+懷抱 > \(within\-someone''s\)\-embrace;
+右邊 > right\-\(as\-opposed\-to\-left\);
+社論 > editorial\-\(in\-a\-newspaper\);
+家常 > the\-daily\-life\-of\-a\-family;
+書聖 > a\-great\-calligraphy\-master;
+資本 > capital\-\(as\-in\-capitalism\);
+風琴 > organ\-\(musical\-instrument\);
+字帖 > copybook\-\(for\-calligraphy\);
+安分 > not\-go\-beyond\-one''s\-bounds;
+暗笑 > laugh\-in\-\(up\)\-one''s\-sleeve;
+美玲 > mei\-ling\-\(a\-person''s\-name\);
+碧血 > blood\-shed\-in\-a\-just\-cause;
+洪森 > hun\-sen\-\(cambodian\-leader\);
+稟告 > report\-\(to\-one''s\-superior\);
+遺體 > remains\-\(of\-a\-dead\-person\);
+避風 > take\-shelter\-from\-the\-wind;
+福建 > fujian\-\(province\-of\-china\);
+勘誤 > to\-correct\-printing\-errors;
+升級 > to\-escalate\-\(in\-intensity\);
+強調 > to\-emphasize\-\(a\-statement\);
+而且 > not\-only\-\.\.\.\-but\-also\-\.\.\.\.;
+遷都 > to\-move\-the\-capitol\-\(city\);
+不但 > not\-only\-\(\.\.\.\-but\-also\.\.\.\);
+包產 > make\-a\-production\-contract;
+北朝 > the\-northern\-dynasties\-\(a;
+包攬 > undertake\-the\-whole\-thing;
+勞教 > reeducation\-through\-labor;
+半場 > half\-of\-a\-game\-or\-contest;
+發達 > developed\-\(country\,\-etc\.\);
+瀉露 > to\-leak\-out\-\(information\);
+歲數 > age\-\(number\-of\-years\-old\);
+開設 > offer\-\(goods\-or\-services\);
+廣東 > guangdong\-province\,\-china;
+放心 > to\-set\-one''s\-mind\-at\-rest;
+魯迅 > name\-of\-an\-author\,\-lu\-xun;
+遙望 > to\-look\-into\-the\-distance;
+補足 > bring\-up\-to\-full\-strength;
+熬夜 > stay\-up\-late\-or\-all\-night;
+體驗 > to\-experience\-for\-oneself;
+撕毀 > tear\-up\-\(a\-contract\,\-etc\);
+傾銷 > to\-dump\-\(goods\,\-products\);
+看法 > way\-of\-looking\-at\-a\-thing;
+關注 > follow\-\(an\-issue\)\-closely;
+剝啄 > tap\-\(on\-a\-door\-or\-window\);
+辨析 > differentiate\-and\-analyse;
+國產 > made\-in\-one''s\-own\-country;
+白族 > the\-bai\-\(pai\)\-nationality;
+病癒 > recover\-\(from\-an\-illness\);
+寬限 > extend\-\(a\-deadline\,\-etc\.\);
+表態 > make\-known\-one''s\-position;
+宣誓 > swear\-an\-oath\-\(of\-office\);
+拜望 > call\-to\-pay\-one''s\-respect;
+篇幅 > \(take\-up\-or\-devote\)\-space;
+首相 > \(japanese\)\-prime\-minister;
+把式 > person\-skilled\-in\-a\-trade;
+淘籮 > basket\-\(for\-washing\-rice\);
+甥女 > niece\-\(sister''s\-daughter\);
+漢人 > han\-chinese\-person\|people;
+伺機 > to\-watch\-for\-one''s\-chance;
+頸部 > the\-neck\-area\-of\-the\-body;
+背影 > a\-view\-of\-somebody''s\-back;
+狡賴 > to\-deny\-\(through\-sophism\);
+變賣 > sell\-off\-\(one''s\-property\);
+決賽 > finals\-\(of\-a\-competition\);
+板書 > writing\-on\-the\-blackboard;
+珀斯 > perth\-\(city\-in\-australia\);
+愛憐 > show\-tender\-affection\-for;
+暴漲 > rise\-suddenly\-and\-sharply;
+錄共 > to\-take\-down\-a\-confession;
+本家 > a\-member\-of\-the\-same\-clan;
+面臨 > be\-faced\-with\-\(a\-problem\);
+池湯 > large\-pool\-in\-a\-bathhouse;
+獎勵 > reward\-\(as\-encouragement\);
+順差 > \(trade\-or\-budget\)\-surplus;
+初選 > \(us\)\-primaries\-\(election\);
+報銷 > submit\-an\-expense\-account;
+叔叔 > father''s\-younger\-brother;
+城關 > area\-outside\-a\-city\-gate;
+運算 > \(mathematical\)\-operation;
+州長 > governor\-\(of\-a\-us\-state\);
+部屬 > affiliated\-to\-a\-ministry;
+引擎 > engine\-\(transliteration\);
+登記 > to\-register\-\(one''s\-name\);
+機組 > flight\-crew\-\(on\-a\-plane\);
+遼寧 > liaoning\-province\,\-china;
+照常 > \(business\,\-etc\)\-as\-usual;
+撫摸 > gently\-caress\-and\-stroke;
+切斷 > cut\-off\-\(a\-supply\,\-etc\.\);
+建制 > organizational\-structure;
+退役 > retire\-from\-the\-military;
+違反 > to\-violate\-\(a\-law\,\-e\.g\.\);
+幫廚 > help\-in\-the\-mess\-kitchen;
+補稅 > pay\-a\-tax\-one\-has\-evaded;
+襲擊 > \(make\-a\)\-surprise\-attack;
+白淨 > \(of\-skin\)\-fair\-and\-clear;
+巡查 > to\-go\-around\-and\-inspect;
+兵書 > a\-book\-on\-the\-art\-of\-war;
+產銷 > production\-and\-marketing;
+闌尾 > appendix\-\(in\-human\-body\);
+幅員 > a\-country''s\-surface\-area;
+撥付 > appropriate\-sum\-of\-money;
+國營 > state\-run\-\(company\,\-etc\);
+損失 > a\-\(financial\,\-etc\.\)\-loss;
+辦公 > handle\-official\-business;
+余震 > \(earthquake\)\-aftershocks;
+畚箕 > a\-bamboo\-or\-wicker\-scoop;
+突顯 > make\-something\-stand\-out;
+握力 > \(strength\-of\-one''s\)\-grip;
+馬裡 > mali\-\(name\-of\-a\-country\);
+病態 > morbid\-or\-abnormal\-state;
+控制 > to\-\(have\)\-control\-\(over\);
+佳能 > canon\-\(japanese\-company\);
+病家 > a\-patient\-and\-his\-family;
+疑惑 > \(a\-sense\-of\)\-uncertainty;
+打牌 > to\-play\-mahjong\-or\-cards;
+做客 > to\-be\-a\-guest\-or\-visitor;
+行使 > exercise\-\(a\-right\,\-etc\.\);
+筆挺 > \(standing\)\-very\-straight;
+安神 > calm\-\(soothe\)\-the\-nerves;
+聳肩 > to\-shrug\-one''s\-shoulders;
+深空 > deep\-space\-\(outer\-space\);
+唐納 > tanner\-\(english\-surname\);
+呈請 > to\-submit\-\(to\-superiors\);
+上訴 > appeal\-\(a\-judicial\-case\);
+懷念 > to\-cherish\-the\-memory\-of;
+特點 > characteristic\-\(feature\);
+字母 > letter\-\(of\-the\-alphabet\);
+同謀 > to\-conspire\-with\-someone;
+桃園 > taoyuan\-\(city\-in\-taiwan\);
+江面 > the\-surface\-of\-the\-river;
+碑額 > the\-top\-part\-of\-a\-tablet;
+伴奏 > to\-accompany\-\(musically\);
+右翼 > \(politically\)\-right\-wing;
+浙江 > zhejiang\-province\,\-china;
+識見 > knowledge\-and\-experience;
+買帳 > to\-show\-respect\-\(for\-sb\);
+暗箭 > attack\-by\-a\-hidden\-enemy;
+深圳 > shenzhen\-\(city\-in\-china\);
+程度 > degree\-\(level\-or\-extent\);
+大關 > \(reach\-a\)\-critical\-point;
+頭版 > \(newspaper''s\)\-front\-page;
+春聯 > spring\-festivel\-couplets;
+以來 > since\-\(a\-previous\-event\);
+蓮花 > lotus\-\(computer\-company\);
+不日 > within\-the\-next\-few\-days;
+諒解 > \(reach\)\-an\-understanding;
+蓋章 > to\-affix\-a\-seal\-\(to\-sth\);
+觸電 > to\-get\-an\-electric\-shock;
+主動 > \(to\-take\-the\)\-initiative;
+訴說 > tell\-\(to\-another\-person\);
+總統 > president\-\(of\-a\-country\);
+報頭 > masthead\-\(of\-a\-newspaper;
+南沙 > nansha\-\(spratly\)\-islands;
+通道 > \(communications\)\-channel;
+政績 > \(political\)\-achievements;
+忌恨 > hate\-\(due\-to\-envy\,\-etc\);
+雹災 > disaster\-caused\-by\-hail;
+出訪 > visit\-a\-foreign\-country;
+斑斑 > full\-of\-stains\-or\-spots;
+西裝 > \(western\-style\)\-clothes;
+加油 > to\-make\-an\-extra\-effort;
+募捐 > to\-solict\-contributions;
+皴裂 > chap\-\(lips\,\-skin\,\-etc\.\);
+見聞 > what\-one\-sees\-and\-hears;
+南京 > nanjing\-\(city\-in\-china\);
+規約 > terms\-\(of\-an\-agreement\);
+歸心 > converted\-to\-\(religion\);
+逼死 > hound\-somebody\-to\-death;
+統治 > \(political\)\-rule\-\(over\);
+補課 > make\-up\-a\-missed\-lesson;
+這樣 > this\-\(kind\-of\,\-sort\-of\);
+達成 > to\-reach\-\(an\-agreement\);
+百般 > in\-hundred\-and\-one\-ways;
+授計 > to\-confide\-a\-plan\-to\-sb;
+報曉 > herald\-the\-break\-of\-day;
+利市 > \"lai\-see\"\-\(lucky\-money\);
+側重 > place\-extra\-emphasis\-on;
+報恩 > pay\-a\-debt\-of\-gratitude;
+幫子 > outer\-\(of\-cabbage\,\-etc\);
+自豪 > \(feel\-a\-sense\-of\)\-pride;
+防務 > \(pertaining\-to\)\-defense;
+業績 > outstanding\-achievement;
+留言 > to\-leave\-one''s\-comments;
+年來 > over\-the\-last\-\.\.\.\-years;
+開拍 > begin\-shooting\-\(a\-film\);
+分之 > \(indicating\-a\-fraction\);
+答謝 > to\-express\-one''s\-thanks;
+筆談 > conversation\-by\-writing;
+瑪麗 > mali\-\(a\-person''s''\-name\);
+症狀 > symptom\-\(of\-an\-illness\);
+佔領 > to\-occupy\-\(a\-territory\);
+備料 > get\-the\-materials\-ready;
+坦克 > tank\-\(military\-vehicle\);
+四川 > sichuan\-province\,\-china;
+販運 > to\-transport\-\(for\-sale\);
+今譯 > modern\-language\-version;
+投放 > to\-put\-in\-\(circulation\);
+病倒 > be\-down\-with\-an\-illness;
+拷問 > to\-question\-via\-torture;
+患難 > trials\-and\-tribulations;
+鍛煉 > to\-do\-physical\-training;
+蛙泳 > \(swimming\)\-breaststroke;
+怎麼 > \(interrogative\-pronoun\);
+駐守 > \(man\-a\-post\-and\)\-defend;
+溫和 > moderate\-\(policy\,\-etc\.\);
+否認 > to\-declare\-to\-be\-untrue;
+江西 > jiangxi\-province\,\-china;
+愛撫 > to\-show\-tender\-care\-for;
+參與 > to\-participate\-\(in\-sth\);
+港人 > hong\-kong\-person\|people;
+黃河 > yellow\-river\-\(huang\-he\);
+江蘇 > jiangsu\-province\,\-china;
+任命 > to\-appoint\-and\-nominate;
+餅子 > maize\-or\-millet\-pancake;
+期攷 > end\-of\-term\-examination;
+總額 > total\-\(amount\-or\-value\);
+謂語 > \(grammatical\)\-predicate;
+中旬 > middle\-third\-of\-a\-month;
+下旬 > last\-third\-of\-the\-month;
+貝克 > baker\-\(english\-surname\);
+亂吃 > to\-eat\-indiscriminantly;
+恩怨 > \(feeling\-of\)\-resentment;
+不外 > not\-beyond\-the\-scope\-of;
+服刑 > serve\-a\-prison\-sentence;
+莫非 > can\-it\-be\-possible\-that;
+廣西 > guangxi\-province\,\-china;
+奔瀉 > \(of\-torrents\)\-rush\-down;
+遺留 > \(leave\-or\-be\-a\)\-legacy;
+常規 > conventional\-\(weapons\);
+證券 > \(financial\)\-securities;
+往常 > habitually\-in\-the\-past;
+妖冶 > pretty\-and\-flirtatious;
+革命 > \(political\)\-revolution;
+論壇 > forum\-\(for\-discussion\);
+壟斷 > enjoy\-market\-dominance;
+牡丹 > peony\-\(type\-of\-flower\);
+報稅 > declare\-dutiable\-goods;
+公認 > publicly\-known\-\(to\-be\);
+發表 > to\-issue\-\(a\-statement\);
+電器 > \(electrical\)\-appliance;
+殷勤 > politely\,\-solicitously;
+到期 > become\-due\-\(eg\,\-loans\);
+病院 > a\-specialized\-hospital;
+病象 > symptom\-\(of\-a\-disease\);
+欺凌 > to\-bully\-and\-humiliate;
+遍及 > to\-extend\-\(everywhere\);
+簽署 > to\-sign\-\(an\-agreement\);
+報導 > to\-cover\-\(report\)\-news;
+布朗 > english\-surname\,\-brown;
+標準 > \(an\-official\)\-standard;
+退休 > retirement\-\(from\-work\);
+趨附 > to\-ingratiation\-onself;
+筆跡 > a\-person''s\-handwriting;
+盡力 > do\-one''s\-best\-\(effort\);
+筆記 > take\-down\-\(in\-writing\);
+褥子 > cotton\-padded\-mattress;
+病狀 > symptom\-\(of\-a\-disease\);
+儘快 > as\-quickly\-as\-possible;
+激昂 > aroused\-to\-indignation;
+童話 > children''s\-fairy\-tales;
+提交 > submit\-\(a\-report\,\-etc\);
+供職 > hold\-an\-office\-or\-post;
+來自 > to\-come\-from\-\(a\-place\);
+病征 > symptom\-\(of\-a\-disease\);
+定語 > attributive\-\(modifier\);
+漂流 > carried\-by\-the\-current;
+棄權 > to\-abstain\-from\-voting;
+捏合 > to\-act\-as\-a\-go\-between;
+甲板 > deck\-\(of\-a\-boat\,\-etc\.\);
+捏估 > to\-act\-as\-a\-go\-between;
+梅派 > the\-mei\-lanfang\-school;
+涉過 > ford\-\(a\-stream\,\-river\);
+體內 > internal\-\(to\-the\-body\);
+任職 > hold\-an\-office\-or\-post;
+脊椎 > back\-\(of\-a\-vertibrate\);
+伯父 > father''s\-elder\-brother;
+保安 > ensure\-public\-security;
+上身 > upper\-part\-of\-the\-body;
+字段 > \(numeric\,\-datda\)\-field;
+並舉 > develop\-simultaneously;
+一號 > first\-day\-of\-the\-month;
+審判 > put\-\(someone\)\-to\-trial;
+吐蕃 > ancient\-name\-for\-tibet;
+測定 > to\-survey\-and\-evaluate;
+泰羅 > \(english\-surname\)\-tylo;
+吞聲 > to\-swallow\-one''s\-cries;
+財會 > finance\-and\-accounting;
+交易 > \(business\)\-transaction;
+現役 > \(military\)\-active\-duty;
+民選 > democratically\-elected;
+伯伯 > father''s\-elder\-brother;
+海拔 > height\-above\-sea\-level;
+科技 > science\-and\-technology;
+任免 > to\-appoint\-and\-dismiss;
+亂寫 > to\-write\-without\-basis;
+妖艷 > pretty\-and\-flirtatious;
+零錢 > change\-\(said\-of\-money\);
+不服 > not\-accept\-\(something\);
+鼻兒 > a\-hole\-in\-an\-implement;
+感嘆 > to\-sigh\-\(with\-feeling\);
+化裝 > \(of\-actors\)\-to\-make\-up;
+云南 > yunnan\-province\,\-china;
+服完 > serve\-out\-\(a\-sentence\);
+黃山 > mt\.\-huang\-\(huang\-shan\);
+古波 > gubo\-\(a\-personal\-name\);
+猜拳 > a\-finger\-guessing\-game;
+助詞 > particle\-\(grammatical\);
+讓坐 > to\-give\-up\-one''s\-seat;
+油價 > oil\-\(petroleum\)\-price;
+巨額 > a\-huge\-sum\-\(of\-money\);
+奔放 > bold\-and\-unrestrained;
+得意 > \(be\)\-proud\-of\-oneself;
+奔忙 > be\-busy\-rushing\-about;
+剛直 > upright\-and\-outspoken;
+巡邏 > be\-on\-\(police\)\-patrol;
+降福 > blessings\-from\-heaven;
+炸藥 > explosive\-\(substance\);
+夢想 > to\-dream\-of\-\(in\-vain\);
+防空 > anti\-aircraft\-defense;
+先進 > advanced\-\(technology\);
+奔命 > rush\-about\-on\-errands;
+解決 > to\-settle\-\(a\-dispute\);
+防治 > \(prevention\-and\)\-cure;
+分機 > \(telephone\)\-extension;
+眾望 > people''s\-expectations;
+白糖 > \(refined\)\-white\-sugar;
+擁戴 > to\-support\-\(a\-person\);
+表達 > to\-voice\-\(an\-opinion\);
+報時 > give\-the\-correct\-time;
+隨和 > amiable\-\(disposition\);
+函授 > correspondence\-course;
+迷戀 > to\-be\-infatuated\-with;
+拗陷 > geological\-depression;
+免疫 > immunity\-\(to\-disease\);
+公然 > \(do\-something\)\-openly;
+堅持 > to\-continue\-upholding;
+出差 > be\-on\-a\-business\-trip;
+漸進 > progress\-step\-by\-step;
+限制 > \(impose\)\-restrictions;
+年初 > beginning\-of\-the\-year;
+筆錄 > put\-down\-\(in\-writing\);
+按脈 > feel\-\(take\)\-the\-pulse;
+招聘 > take\-job\-applications;
+光州 > kwangju\-\(south\-korea\);
+工商 > industry\-and\-commerce;
+澳洲 > australia\-\(continent\);
+皮兒 > \(dough\,\-etc\.\)wrappers;
+甘肅 > gansu\-province\,\-china;
+安閒 > peaceful\-and\-carefree;
+艱巨 > very\-difficult\-\(task\);
+蠻橫 > rude\-and\-unreasonable;
+簽字 > to\-sign\-\(a\-signature\);
+安適 > quiet\-and\-comfortable;
+測良 > to\-survey\-and\-measure;
+班車 > regular\-bus\-\(service\);
+案由 > main\-points\-of\-a\-case;
+貶謫 > banish\-from\-the\-court;
+黃魚 > yellow\-croaker\-\(fish\);
+身世 > one''s\-life\-experience;
+抱恨 > have\-a\-gnawing\-regret;
+自古 > \(since\)\-ancient\-times;
+笆斗 > round\-bottomed\-basket;
+二號 > 2\-nd\-day\-of\-the\-month;
+財經 > finance\-and\-economics;
+主語 > \(grammatical\)\-subject;
+嘖嘖 > to\-click\-one''s\-tongue;
+鼻祖 > the\-earliest\-ancestor;
+戀愛 > to\-have\-a\-love\-affair;
+暴跌 > steep\-fall\-\(in\-price\);
+讓開 > to\-get\-out\-of\-the\-way;
+就便 > at\-\(your\)\-convenience;
+可身 > to\-fit\-well\-\(clothes\);
+科研 > \(scientific\)\-research;
+可謂 > it\-could\-even\-be\-said;
+讓路 > to\-make\-way\-\(for\-sth\);
+戶主 > head\-of\-the\-household;
+頒行 > issue\-for\-enforcement;
+湖南 > hunan\-province\,\-china;
+餘數 > \(numerical\)\-remainder;
+不管 > no\-matter\-\(what\,\-how\);
+版面 > space\-of\-a\-whole\-page;
+不禁 > can''t\-help\-\(doing\-sth;
+昏迷 > to\-lose\-consciousness;
+吐絮 > the\-opening\-of\-a\-boll;
+鋪平 > spread\-out\-\(material\);
+不理 > refuse\-to\-acknowledge;
+變臉 > suddenly\-turn\-hostile;
+海斯 > hayes\-\(microcomputer\);
+東德 > \(former\)\-east\-germany;
+暗礁 > submerged\-reef\-\(rock\);
+買好 > to\-ingratiate\-oneself;
+暗疾 > unmentionable\-disease;
+聳動 > to\-create\-a\-sensation;
+板凳 > wooden\-bench\-or\-stool;
+不暇 > have\-no\-time\-\(for\-sth;
+悲憤 > grief\-and\-indignation;
+特產 > special\-local\-product;
+蕭條 > \(economic\)\-depression;
+殯葬 > funeral\-and\-interment;
+命令 > \(an\)\-order\-or\-command;
+流亡 > to\-\(force\-into\)\-exile;
+卑污 > despicable\-and\-filthy;
+暴卒 > die\-of\-sudden\-illness;
+逼視 > look\-at\-from\-close\-up;
+旺月 > busy\-\(business\)\-month;
+列車 > train\-\(railway\-term\);
+友好 > friendly\-\(relations\);
+櫃邊 > to\-lie\-on\-one''s\-side;
+制裁 > \(economic\)\-sanctions;
+社交 > \(social\)\-interaction;
+操行 > \(student''s\)\-behavior;
+姥姥 > maternal\-grandmother;
+編組 > organize\-into\-groups;
+親近 > get\-close\-to\-someone;
+結論 > \(reach\-a\)\-conclusion;
+闡述 > expound\-\(a\-position\);
+心寒 > be\-very\-disappointed;
+組裝 > assemble\-and\-install;
+誓死 > to\-pledge\-one''s\-life;
+城鄉 > city\-and\-countryside;
+協定 > \(reach\-an\)\-agreement;
+水域 > \(territorial\)\-waters;
+勻整 > neat\-and\-well\-spaced;
+內閣 > \(government\)\-cabinet;
+廠牌 > brand\-\(of\-a\-product\);
+奶奶 > paternal\-grandmother;
+編次 > order\-of\-arrangement;
+教授 > university\-professor;
+勢必 > is\-bound\-to\-\(happen\);
+墨汁 > prepared\-chinese\-ink;
+大將 > a\-general\-or\-admiral;
+氣人 > to\-get\-someone\-angry;
+包場 > book\-a\-whole\-theatre;
+六號 > 6th\-day\-of\-the\-month;
+詞彙 > \(list\-of\)\-vocabulary;
+攝影 > to\-take\-a\-photograph;
+辯白 > offer\-an\-explanation;
+採訪 > cover\-\(a\-news\-story\);
+兵站 > army\-service\-station;
+軍費 > military\-expenditure;
+據悉 > according\-to\-reports;
+前年 > the\-year\-before\-last;
+補色 > complementary\-colour;
+攻勢 > \(military\)\-offensive;
+分擔 > share\-responsibility;
+開發 > exploit\-\(a\-resource\);
+歷代 > successive\-dynasties;
+近日 > in\-the\-past\-few\-days;
+回訪 > \(pay\-a\)\-return\-visit;
+病變 > pathological\-changes;
+凌晨 > early\-in\-the\-morning;
+籠統 > \(in\)\-general\-\(terms\);
+槳狀 > certificate\-of\-merit;
+倚重 > to\-rely\-heavily\-upon;
+把酒 > raise\-one''s\-wine\-cup;
+軍用 > \(for\)\-military\-\(use\);
+保重 > take\-care\-of\-oneself;
+報仇 > to\-revenge\-\(oneself\);
+抄身 > to\-search\-\(a\-person\);
+棉襖 > cotton\-padded\-jacket;
+儘早 > as\-early\-as\-possible;
+培修 > to\-repair\-earthworks;
+尊重 > to\-value\-\(something\);
+病灶 > focus\-\(of\-infection\);
+侵襲 > to\-invade\-and\-attack;
+簡朴 > simple\-and\-unadorned;
+駁運 > transport\-by\-lighter;
+例言 > introductory\-remarks;
+備查 > for\-future\-reference;
+安逸 > easy\-and\-comfortable;
+病房 > ward\-\(of\-a\-hospital\);
+表彰 > cite\-\(in\-dispatches\);
+拜會 > pay\-an\-official\-call;
+專程 > special\-purpose\-trip;
+偽幣 > counterfeit\-currency;
+才略 > ability\-and\-sagacity;
+層次 > arrangement\-of\-ideas;
+筆法 > technique\-of\-writing;
+交通 > \(automobile\)\-traffic;
+啟程 > set\-out\-on\-a\-journey;
+畫報 > pictorial\-\(magazine\);
+侵擾 > to\-invade\-and\-harass;
+屏幕 > \(tv\-or\-movie\)\-screen;
+球網 > net\-\(for\-ball\-games\);
+漢化 > chinese\-localization;
+對峙 > mutual\-confrontation;
+美軍 > us\-army\|armed\-forces;
+位於 > be\-situated\-\(in\,\-at\);
+變頻 > frequency\-conversion;
+單字 > individual\-character;
+清早 > early\-in\-the\-morning;
+背心 > a\-sleeveless\-garment;
+戶口 > registered\-residence;
+本科 > undergraduate\-course;
+便中 > at\-one''s\-convenience;
+寶劍 > a\-double\-edged\-sword;
+醞釀 > mull\-over\-\(an\-issue\);
+暗號 > secret\-signal\-\(sign\);
+老爺 > maternal\-grandfather;
+班期 > schedule\-\(for\-flight;
+買方 > buyer\-\(in\-contracts\);
+安娜 > anna\-\(person''s\-name\);
+責成 > give\-somebody\-a\-task;
+多麼 > how\-\(wonderful\,\-etc\);
+酬謝 > to\-thank\-with\-a\-gift;
+往返 > to\-go\-back\-and\-forth;
+包金 > cover\-with\-gold\-leaf;
+暑熱 > hot\-\(summer\)\-weather;
+不曾 > never\-\(have\-done\-sth;
+總部 > general\-headquarters;
+貶值 > to\-become\-devaluated;
+遺骸 > \(dead\)\-human\-remains;
+遺骨 > \(dead\)\-human\-remains;
+酬答 > to\-thank\-with\-a\-gift;
+類推 > to\-reason\-by\-analogy;
+和好 > to\-become\-reconciled;
+本土 > one''s\-native\-country;
+亞倫 > aaron\-\(a\-man''s\-name\);
+羞恥 > \(a\-feeling\-of\)\-shame;
+哈佛 > harvard\-\(university\);
+暑期 > summer\-vacation\-time;
+呼喊 > shout\-\(slogans\,\-etc\);
+繽紛 > in\-riotous\-profusion;
+呈報 > to\-\(submit\-a\)\-report;
+半白 > fifty\-\(years\-of\-age\);
+𠁥 > the\-horns\-of\-a\-sheep;
+昂然 > upright\-and\-unafraid;
+還說 > to\-add\-\(in\-speaking\);
+更加 > more\-\(than\-sth\-else\);
+爺爺 > paternal\-grandfather;
+不勝 > cannot\-bear\-or\-stand;
+敗胃 > spoil\-one''s\-appetite;
+變心 > cease\-to\-be\-faithful;
+上個 > first\-\(of\-two\-parts\);
+奔流 > flow\-at\-great\-speed;
+日文 > japanese\-\(language\);
+撞見 > to\-meet\-by\-accident;
+差額 > balance\-\(financial\);
+半截 > half\-\(of\-a\-section\);
+剛纔 > \(just\)\-a\-moment\-ago;
+廠礦 > factories\-and\-mines;
+熱烈 > warm\-\(welcome\,\-etc\);
+辯護 > speak\-in\-defence\-of;
+大批 > large\-quantities\-of;
+綁票 > kidnap\-\(for\-ransom\);
+白銅 > copper\-nickel\-alloy;
+統稱 > collectively\-called;
+廢氣 > waste\-\(exhaust\)\-gas;
+包子 > steamed\-stuffed\-bun;
+紅葉 > red\-autumnal\-leaves;
+百貨 > general\-merchandise;
+鬢髮 > hair\-on\-the\-temples;
+儘量 > as\-much\-as\-possible;
+身高 > \(a\-person''s\)\-height;
+教學 > teacher\-and\-student;
+鄙人 > your\-humble\-servant;
+故宮 > the\-imperial\-palace;
+政局 > political\-situation;
+睿智 > wise\-and\-farsighted;
+補角 > supplementary\-angle;
+進攻 > attack\-\(militarily\);
+擺弄 > move\-back\-and\-forth;
+遍布 > be\-found\-everywhere;
+改名 > to\-change\-ones\-name;
+補考 > make\-up\-examination;
+播弄 > order\-subject\-about;
+年底 > the\-end\-of\-the\-year;
+約櫃 > ark\-of\-the\-covenant;
+幫工 > help\-with\-farm\-work;
+報廢 > report\-as\-worthless;
+抬頭 > to\-raise\-one''s\-head;
+執掌 > wield\-\(power\,\-etc\.\);
+兵權 > military\-leadership;
+逼供 > extort\-a\-confession;
+開放 > lift\-\(restrictions\);
+登月 > go\-\(up\)\-to\-the\-moon;
+幣值 > value\-of\-a\-currency;
+冰場 > skating\-or\-ice\-rink;
+目前 > at\-the\-present\-time;
+筆譯 > written\-translation;
+筆試 > written\-examination;
+關切 > be\-deeply\-concerned;
+走開 > get\-out\-of\-the\-way\!;
+覆亡 > fall\-\(of\-an\-empire\);
+裁斷 > consider\-and\-decide;
+紀元 > beginning\-of\-an\-era;
+兵團 > large\-military\-unit;
+辦事 > to\-handle\-\(affairs\);
+糾偏 > to\-correct\-an\-error;
+才識 > ability\-and\-insight;
+按理 > according\-to\-reason;
+輔幣 > fractional\-currency;
+搭伴 > travel\-with\-another;
+國旗 > flag\-\(of\-a\-country\);
+軍政 > army\-and\-government;
+病況 > state\-of\-an\-illness;
+轉向 > change\-of\-direction;
+白卷 > blank\-examine\-paper;
+八仙 > the\-eight\-immortals;
+較大 > comparatively\-large;
+筆算 > do\-a\-sum\-in\-writing;
+裁奪 > consider\-and\-decide;
+提出 > to\-raise\-\(an\-issue\);
+白人 > white\-man\-and\-woman;
+做法 > way\-of\-doing\-things;
+抽煙 > smoke\-\(a\-cigarette\);
+表情 > \(facial\)\-expression;
+補助 > \(financial\)\-subsidy;
+膠片 > \(photographic\)\-film;
+病情 > state\-of\-an\-illness;
+柔道 > \(the\-sport\-of\)\-judo;
+採制 > collect\-and\-process;
+抄獲 > to\-search\-and\-seize;
+表姐 > older\-female\-cousin;
+軟件 > \(computer\)\-software;
+招待 > to\-receive\-\(guests\);
+拜年 > pay\-a\-new\-year\-call;
+互通 > to\-intercommunicate;
+篡位 > to\-seize\-the\-throne;
+罷黜 > dismiss\-from\-office;
+屬實 > turn\-out\-to\-be\-true;
+派遣 > send\-\(on\-a\-mission\);
+並重 > lay\-equal\-stress\-on;
+才學 > talent\-and\-learning;
+耕耘 > plowing\-and\-weeding;
+慈祥 > \(a\)\-kindly\-\(person\);
+安樂 > peace\-and\-happiness;
+騙取 > to\-gain\-by\-cheating;
+涼爽 > cool\-and\-refreshing;
+黨組 > leading\-party\-group;
+例外 > \(make\-an\)\-exception;
+議題 > topic\-of\-discussion;
+資源 > \(natural\)\-resources;
+商會 > chamber\-of\-commerce;
+赤字 > \(financial\)\-deficit;
+並聯 > parallel\-connection;
+財源 > financial\-resources;
+量變 > quantitative\-change;
+耐煩 > patient\-\(adjective\);
+丙綸 > polypropylene\-fibre;
+決議 > \(pass\-a\)\-resolution;
+錯字 > incorrect\-character;
+伴唱 > vocal\-accompaniment;
+識貨 > to\-know\-what''s\-what;
+官員 > government\-official;
+稟性 > natural\-disposition;
+預習 > to\-prepare\-a\-lesson;
+流派 > school\-\(of\-thought\);
+哀憐 > feel\-compassion\-for;
+財寶 > money\-and\-valuables;
+耐心 > patient\-\(adjective\);
+日語 > japanese\-\(language\);
+事宜 > \(make\)\-arrangements;
+敗類 > scum\-of\-a\-community;
+旗袍 > chinese\-style\-dress;
+徐行 > walk\-slowly\,\-stroll;
+財力 > financial\-resources;
+藏族 > tibetan\-nationality;
+照顧 > take\-\(good\)\-care\-of;
+讓步 > \(make\-a\)\-concession;
+邊遠 > far\-from\-the\-center;
+擺闊 > parade\-one''s\-wealth;
+晴朗 > sunny\-and\-cloudless;
+悲壯 > solemn\-and\-stirring;
+罷市 > shopkeeper''s\-strike;
+不妨 > there\-is\-no\-harm\-in;
+大腸 > the\-large\-intestine;
+丹參 > salvia\-miltiorrhiza;
+零落 > withered\-and\-fallen;
+得知 > \(find\-out\-and\)\-know;
+罷官 > dismiss\-from\-office;
+變故 > an\-unforeseen\-event;
+恐怕 > \(i''m\)\-afraid\-\(that\);
+不問 > pay\-no\-attention\-to;
+廠規 > factory\-regulations;
+預定 > schedule\-in\-advance;
+不凡 > out\-of\-the\-ordinary;
+敗績 > be\-utterly\-defeated;
+暴利 > sudden\-huge\-profits;
+罪名 > a\-\(criminal\)\-charge;
+不乏 > there\-is\-no\-lack\-of;
+合同 > \(business\)\-contract;
+幫辦 > assist\-in\-managing;
+酬應 > social\-interaction;
+無論 > no\-matter\-what\|how;
+原定 > originally\-planned;
+通行 > licence\-\(computer\);
+司令 > commanding\-officer;
+糾集 > to\-gather\-together;
+送行 > to\-see\-someone\-off;
+違約 > to\-break\-a\-promise;
+危局 > perilous\-situation;
+撥號 > dial\-\(a\-telephone\);
+變修 > become\-revisionist;
+違章 > to\-break\-the\-rules;
+網管 > network\-management;
+蒙文 > mongolian\-language;
+性交 > sexual\-intercourse;
+物價 > \(commodity\)\-prices;
+後天 > day\-after\-tomorrow;
+太平 > peace\-and\-security;
+矚望 > to\-look\-forward\-to;
+協助 > provide\-assistance;
+採風 > collect\-folk\-songs;
+描金 > to\-outline\-in\-gold;
+助教 > teaching\-assistant;
+夫婦 > a\-\(married\)\-couple;
+英語 > english\-\(language\);
+運氣 > luck\-\(good\-or\-bad\);
+採錄 > collect\-and\-record;
+熊掌 > bear\-paw\-\(as\-food\);
+新兵 > new\-\(army\)\-recruit;
+斃命 > meet\-violent\-death;
+失事 > \(have\-an\)\-accident;
+電信 > telecommunications;
+捨身 > to\-give\-one''s\-life;
+芝蘭 > irises\-and\-orchids;
+改口 > to\-correct\-oneself;
+政務 > government\-affairs;
+內科 > medical\-department;
+元素 > \(chemical\)\-element;
+加入 > to\-become\-a\-member;
+選區 > electoral\-district;
+土著 > native\,\-aboriginal;
+操守 > personal\-integrity;
+傲視 > turn\-up\-one''s\-nose;
+莫如 > it\-would\-be\-better;
+結帳 > to\-settle\-accounts;
+四處 > all\-over\-the\-place;
+違例 > to\-break\-the\-rules;
+坦率 > frank\-\(discussion\);
+運作 > thread\-\(computing\);
+週刊 > weekly\-publication;
+保駕 > escort\-the\-emperor;
+共有 > to\-have\-altogether;
+報喜 > announce\-good\-news;
+跑電 > electrical\-leakage;
+撥刺 > splash\-\(of\-a\-fish\);
+拜見 > pay\-a\-formal\-visit;
+英文 > english\-\(language\);
+初中 > junior\-high\-school;
+抄道 > to\-take\-a\-shortcut;
+演說 > \(deliver\-a\)\-speech;
+要地 > strategic\-location;
+辦報 > to\-run\-a\-newspaper;
+出任 > start\-in\-a\-new\-job;
+內情 > inside\-information;
+開展 > \(begin\-to\)\-develop;
+俄語 > russian\-\(language\);
+山腳 > foot\-of\-a\-mountain;
+公司 > \(business\)\-company;
+拉票 > campaign\-for\-votes;
+手術 > surgical\-operation;
+八卦 > the\-eight\-diagrams;
+體溫 > \(body\)\-temperature;
+漂移 > drift\-\(electrical\);
+停滯 > be\-at\-a\-standstill;
+官邸 > official\-residence;
+拜渴 > pay\-a\-formal\-visit;
+軍官 > \(military\)\-officer;
+筆直 > perfectly\-straight;
+產生 > to\-come\-into\-being;
+駐華 > stationed\-in\-china;
+授受 > to\-give\-and\-accept;
+疫情 > epidemic\-situation;
+深造 > advanced\-\(studies\);
+捨命 > to\-risk\-one''s\-life;
+裁並 > cut\-down\-and\-merge;
+使節 > \(diplomatic\)\-envoy;
+至少 > \(to\-say\-the\)\-least;
+買賣 > buying\-and\-selling;
+測繪 > to\-survey\-and\-draw;
+背約 > break\-an\-agreement;
+路徑 > route\-\(networking\);
+舉例 > to\-give\-an\-example;
+俄文 > russian\-\(language\);
+才智 > ability\-and\-wisdom;
+打拳 > to\-do\-shadowboxing;
+脈欂 > beating\-\(of\-heart\);
+自主 > to\-act\-for\-oneself;
+期貨 > futures\-\(on\-goods\);
+侵截 > to\-hack\-\(computer\);
+頭髮 > hair\-\(on\-the\-head\);
+質疑 > call\-into\-question;
+首次 > for\-the\-first\-time;
+梆子 > watchman''s\-clapper;
+油餅 > deep\-fried\-pancake;
+泄露 > leak\-\(information\);
+投入 > put\-into\-operation;
+析疑 > to\-resolve\-a\-doubt;
+藏語 > tibetan\-\(language\);
+木耳 > edible\-tree\-fungus;
+喘息 > to\-gasp\-for\-breath;
+棄世 > to\-leave\-this\-word;
+愛稱 > term\-of\-endearment;
+專員 > assistant\-director;
+頓足 > stamp\-\(one''s\-feet\);
+現有 > currently\-existing;
+鼻樑 > bridge\-of\-the\-nose;
+參贊 > diplomatic\-officer;
+並立 > exist\-side\-by\-side;
+貿易 > \(commercial\)\-trade;
+酬酢 > to\-exchange\-toasts;
+浪涌 > \(electrical\)\-surge;
+佔先 > to\-take\-precedence;
+背光 > be\-in\-a\-poor\-light;
+深夜 > very\-late\-at\-night;
+露面 > appear\-\(in\-public\);
+商務 > commercial\-affairs;
+猜疑 > harbour\-suspicions;
+貴姓 > what\-is\-your\-name\?;
+猙獰 > mean\-and\-ferocious;
+液壓 > hydraulic\-pressure;
+鼻塞 > have\-a\-stuffy\-nose;
+點心 > light\-refreshments;
+期待 > to\-look\-forward\-to;
+海域 > territorial\-waters;
+比試 > have\-a\-competition;
+外資 > foreign\-investment;
+電路 > \(electric\)\-circuit;
+中將 > lieutenant\-general;
+文藝 > literature\-and\-art;
+版稅 > royalty\-\(on\-books\);
+情報 > \(spy\)\-intelligence;
+編遣 > reorganize\-\(troops;
+泰山 > taishan\-\(mountain\);
+悉尼 > sydney\-\(australia\);
+薄情 > inconstant\-in\-love;
+民用 > \(for\)\-civilian\-use;
+編譯 > translate\-and\-edit;
+福利 > \(material\)\-welfare;
+同學 > \(fellow\)\-classmate;
+並列 > stand\-side\-by\-side;
+不和 > not\-get\-along\-well;
+不厭 > not\-mind\-doing\-sth;
+反感 > \(strongly\)\-dislike;
+針對 > in\-connection\-with;
+另寄 > to\-mail\-separately;
+變幻 > change\-irregularly;
+報關 > declare\-at\-customs;
+署名 > sign\-\(a\-signature\);
+遊覽 > to\-go\-sight\-seeing;
+外界 > the\-outside\-world;
+變天 > change\-of\-weather;
+比濕 > specific\-humidity;
+德文 > german\-\(language\);
+卑怯 > mean\-and\-cowardly;
+兵馬 > troops\-and\-horses;
+碩士 > master''s\-\(degree\);
+白骨 > bones\-of\-the\-dead;
+照相 > take\-a\-photograph;
+白飯 > plain\-cooked\-rice;
+日子 > a\-\(calendar\)\-date;
+教材 > teaching\-material;
+鄰國 > bordering\-country;
+機製 > machine\-processed;
+長達 > extend\-as\-long\-as;
+化妝 > to\-put\-on\-make\-up;
+難捱 > trying\,\-difficult;
+大局 > general\-situation;
+敏感 > sensitive\-\(issue\);
+紡織 > spinning\-\(thread\);
+大多 > for\-the\-most\-part;
+徒刑 > \(prison\)\-sentence;
+支持 > to\-be\-in\-favor\-of;
+紛紛 > one\-after\-another;
+外國 > foreign\-\(country\);
+捕食 > catch\-and\-feed\-on;
+輔課 > subsidiary\-course;
+八股 > eight\-\-part\-essay;
+平民 > \(ordinary\)\-people;
+郊區 > suburban\-district;
+兩者 > both\-sides\|things;
+部份 > part\-\(of\-a\-whole\);
+白肉 > plain\-boiled\-pork;
+邊塞 > frontier\-fortress;
+石刻 > stone\-inscription;
+緊密 > inseparably\-close;
+邊卡 > border\-checkpoint;
+緩和 > to\-ease\-\(tension\);
+編印 > compile\-and\-print;
+凱旋 > return\-triumphant;
+瀉肚 > to\-have\-diarrhoea;
+白眼 > supercilious\-look;
+眼尖 > to\-have\-good\-eyes;
+報帳 > render\-an\-account;
+補發 > supply\-again\-\(sth;
+把頭 > labour\-contractor;
+屏障 > protective\-screen;
+火星 > mars\-\(the\-planet\);
+騎馬 > ride\-on\-horseback;
+抄錄 > to\-make\-a\-copy\-of;
+揭曉 > announce\-publicly;
+病程 > course\-of\-disease;
+申訴 > to\-appeal\-\(to\-sb\);
+供需 > supply\-and\-demand;
+地殼 > the\-earth''s\-crust;
+閉幕 > the\-curtain\-falls;
+盛名 > famous\-reputation;
+工委 > working\-committee;
+筆調 > \(of\-writing\)\-tone;
+展覽 > to\-put\-on\-display;
+白布 > plain\-white\-cloth;
+工地 > construction\-site;
+棕色 > brown\-\(the\-color\);
+篇目 > table\-of\-contents;
+住院 > to\-be\-in\-hospital;
+搏動 > beat\-rhythmically;
+接待 > receive\-\(a\-visit\);
+兵力 > military\-strength;
+公務 > official\-business;
+拘留 > detain\-\(prisoner\);
+挨次 > one\-after\-another;
+公佈 > publicly\-announce;
+內亂 > internal\-disorder;
+衛星 > \(space\)\-satellite;
+拍照 > to\-take\-a\-picture;
+病故 > die\-of\-an\-illness;
+衝擊 > \(be\-under\)\-attack;
+長久 > \(for\-a\)\-long\-time;
+錄音 > \(sound\)\-recording;
+保祐 > bless\-and\-protect;
+捷報 > report\-of\-success;
+團圓 > to\-have\-a\-reunion;
+授勛 > to\-award\-an\-honor;
+哀鳴 > a\-plaintive\-whine;
+懂行 > to\-know\-the\-ropes;
+軍區 > a\-military\-region;
+保爾 > \(a\-personal\-name\);
+財閥 > financial\-magnate;
+拍攝 > \(shoot\-a\)\-picture;
+考驗 > \(put\-to\-the\)\-test;
+保溫 > heat\-preservation;
+屏氣 > hold\-one''s\-breath;
+稟賦 > natural\-endowment;
+病危 > be\-critically\-ill;
+併發 > be\-complicated\-by;
+財貿 > finance\-and\-trade;
+漢字 > chinese\-character;
+安穩 > smooth\-and\-steady;
+專業 > specialized\-field;
+屏息 > hold\-one''s\-breath;
+趨時 > to\-follow\-fashion;
+仍舊 > still\-\(remaining\);
+拗口 > hard\-to\-pronounce;
+喘氣 > to\-breathe\-deeply;
+拜倒 > prostrate\-oneself;
+才思 > imaginative\-power;
+波音 > boeing\-\(aircraft\);
+作業 > school\-assignment;
+鼓舞 > heartening\-\(news\);
+案情 > details\-of\-a\-case;
+財神 > the\-god\-of\-wealth;
+展出 > to\-put\-on\-display;
+現狀 > current\-situation;
+小報 > tabloid\-newspaper;
+朝聖 > make\-a\-pilgrimage;
+保健 > health\-protection;
+淫水 > sexual\-secretions;
+尋味 > to\-think\-sth\-over;
+板煙 > plug\-\(of\-tobacco\);
+注視 > watch\-attentively;
+法語 > french\-\(language\);
+獨立 > to\-be\-independent;
+走出 > to\-move\-away\-from;
+聲援 > support\-\(a\-cause\);
+礦藏 > mineral\-resources;
+寫信 > to\-write\-a\-letter;
+三維 > three\-dimensional;
+穴居 > to\-live\-in\-a\-cave;
+狀語 > adverbial\-adjunct;
+酬金 > \(monetary\)\-reward;
+財政 > finances\-\(public\);
+安危 > safety\-and\-danger;
+名稱 > name\-\(of\-a\-thing\);
+物質 > \(physical\)\-matter;
+吃穿 > food\-and\-clothing;
+穴位 > acupuncture\-point;
+學位 > educational\-level;
+德語 > german\-\(language\);
+各界 > all\-walks\-of\-life;
+耳子 > handle\-\(on\-a\-pot\);
+思維 > \(line\-of\)\-thought;
+以免 > in\-order\-to\-avoid;
+事實 > \(the\)\-fact\-\(that\);
+本性 > natural\-instincts;
+難題 > difficult\-problem;
+變相 > in\-disguised\-form;
+財務 > financial\-affairs;
+服役 > serve\-in\-the\-army;
+醫療 > medical\-treatment;
+敬重 > to\-respect\-deeply;
+暗河 > underground\-river;
+頸椎 > cervical\-vertibra;
+網點 > node\-in\-a\-network;
+黑客 > hacker\-\(computer\);
+纖芯 > core\-\(of\-a\-fiber\);
+編隊 > form\-into\-columns;
+敗退 > retreat\-in\-defeat;
+本國 > one''s\-own\-country;
+法文 > french\-\(language\);
+語言 > \(spoken\)\-language;
+不屑 > disdain\-to\-do\-sth;
+半票 > half\-price\-ticket;
+獨唱 > \(in\-singing\)\-solo;
+私人 > private\-\(citizen\);
+獲准 > obtain\-permission;
+權鑰 > keys\-of\-authority;
+爆管 > cartridge\-igniter;
+礦床 > \(mineral\)\-deposit;
+止血 > stanch\-\(bleeding\);
+名字 > \(a\-person''s\)\-name;
+台幣 > new\-taiwan\-dollar;
+顧及 > take\-into\-account;
+下去 > go\-down\-\(descend\);
+勻稱 > well\-proportioned;
+不力 > not\-do\-one''s\-best;
+道謝 > to\-express\-thanks;
+硝煙 > smoke\-\(from\-guns\);
+藝人 > performing\-artist;
+教練 > \(athlete''s\)\-coach;
+出院 > to\-leave\-hospital;
+阿里 > ali\-\(proper\-name\);
+附近 > \(in\-the\)\-vicinity;
+牌樓 > decorated\-archway;
+父母 > father\-and\-mother;
+磨子 > mill\,\-millstones;
+后人 > later\-generation;
+識字 > to\-learn\-to\-read;
+心得 > knowledge\-gained;
+求婚 > propose\-marriage;
+編目 > make\-a\-catalogue;
+電流 > electric\-current;
+城鎮 > cities\-and\-towns;
+委員 > committee\-member;
+壁畫 > mural\-\(painting\);
+姓名 > name\-and\-surname;
+是否 > whether\-\(or\-not\);
+總機 > central\-exchange;
+過程 > course\-of\-events;
+熊猴 > assamese\-macaque;
+大會 > general\-assembly;
+基調 > \(speech\)\-keynote;
+誤會 > to\-misunderstand;
+訂票 > to\-issue\-tickets;
+壽桃 > birthday\-peaches;
+巴豆 > \(purging\)\-croton;
+壽星 > god\-of\-longevity;
+入迷 > to\-be\-fascinated;
+明代 > the\-ming\-dynasty;
+退票 > bounce\-\(a\-check\);
+繃子 > embroidery\-frame;
+得出 > obtain\-\(results\);
+免費 > free\-\(of\-charge\);
+遲暮 > past\-one''s\-prime;
+網橋 > \(network\)\-bridge;
+列為 > be\-classified\-as;
+國防 > national\-defence;
+故居 > former\-residence;
+剽悍 > swift\-and\-fierce;
+武官 > military\-attache;
+違憲 > unconstitutional;
+勞動 > \(physical\)\-labor;
+為生 > to\-make\-a\-living;
+公羊 > ram\-\(male\-sheep\);
+船隊 > fleet\-\(of\-ships\);
+廣州 > guangzhou\-\(city\);
+電力 > electrical\-power;
+補血 > enrich\-the\-blood;
+燈光 > \(stage\)\-lighting;
+透支 > \(bank\)\-overdraft;
+迴旋 > maneuvering\-room;
+白磷 > white\-phosphorus;
+報捷 > report\-a\-success;
+訪問 > pay\-a\-visit\-\(to\);
+除夕 > \(new\-year''s\)\-eve;
+辦案 > to\-handle\-a\-case;
+訂單 > \(purchase\)\-order;
+華僑 > overseas\-chinese;
+滑鼠 > mouse\-\(computer\);
+病菌 > harmful\-bacteria;
+進修 > advanced\-studies;
+長江 > changjiang\-river;
+筆頭 > ability\-to\-write;
+幾千 > several\-thousand;
+到了 > in\-\(a\-past\-time\);
+報名 > enter\-one''s\-name;
+出名 > well\-known\-\(for\);
+授獎 > to\-award\-a\-prize;
+體育 > physical\-culture;
+漢語 > chinese\-language;
+兵役 > military\-service;
+畢肖 > resemble\-closely;
+崩漏 > uterine\-bleeding;
+冗員 > excess\-personnel;
+兵士 > ordinary\-soldier;
+要人 > important\-person;
+採擇 > select\-and\-adopt;
+踩線 > step\-on\-the\-line;
+癱子 > paralyzed\-person;
+巨匠 > master\-craftsman;
+閱兵 > to\-review\-troops;
+傲氣 > air\-of\-arrogance;
+便衣 > civilian\-clothes;
+尋訪 > to\-inquire\-after;
+寶貝 > treasured\-object;
+閱世 > to\-see\-the\-world;
+簡明 > simple\-and\-clear;
+安頓 > find\-a\-place\-for;
+公公 > husband''s\-father;
+例語 > example\-sentance;
+閃亮 > brilliant\,\-shiny;
+均勢 > balance\-of\-power;
+保留 > continue\-to\-have;
+人頭 > number\-of\-people;
+接人 > to\-meet\-a\-person;
+國力 > a\-nation''s\-power;
+扮演 > play\-the\-part\-of;
+病因 > cause\-of\-disease;
+軍事 > military\-affairs;
+佔線 > busy\-\(telephone\);
+山村 > mountain\-village;
+屬於 > be\-classified\-as;
+拐彎 > to\-turn\-a\-corner;
+病原 > cause\-of\-disease;
+聚變 > \(nuclear\)\-fusion;
+表冊 > statistical\-form;
+審理 > to\-hear\-\(a\-case\);
+抄本 > handwritten\-copy;
+安置 > find\-a\-place\-for;
+舔吮 > to\-lick\-and\-suck;
+便橋 > temporary\-bridge;
+筆戰 > written\-polemics;
+便服 > everyday\-clothes;
+感謝 > \(express\)\-thanks;
+下馬 > dismount\-a\-horse;
+安眠 > sleep\-peacefully;
+層層 > layer\-upon\-layer;
+筆帽 > the\-cap\-of\-a\-pen;
+貶義 > derogatory\-sense;
+作法 > course\-of\-action;
+演員 > actor\-or\-actress;
+鑒別 > to\-differentiate;
+保密 > maintain\-secrecy;
+筆套 > the\-cap\-of\-a\-pen;
+借助 > to\-get\-help\-from;
+甘地 > \(mahatma\)\-gandhi;
+注重 > pay\-attention\-to;
+懸掛 > \(car\)\-suspension;
+不謝 > don''t\-mention\-it;
+本義 > original\-meaning;
+伴星 > companion\-\(star\);
+保全 > save\-from\-damage;
+抄件 > duplicate\-\(copy\);
+罷課 > student''s\-strike;
+重重 > layer\-upon\-layer;
+應戰 > face\-a\-challenge;
+核威 > nuclear\-strength;
+虜獲 > capture\-\(people\);
+本票 > cashier''s\-cheque;
+例句 > example\-sentance;
+安徽 > anhui\-\(province\);
+蓖麻 > castor\-oil\-plant;
+站台 > railway\-platform;
+理會 > pay\-attention\-to;
+獲益 > obtain\-a\-benefit;
+今昔 > past\-and\-present;
+板栗 > chinese\-chestnut;
+吸管 > \(drinking\)\-straw;
+人數 > number\-of\-people;
+家務 > household\-duties;
+民間 > among\-the\-people;
+婚禮 > wedding\-ceremony;
+警衛 > \(security\)\-guard;
+乾杯 > to\-drink\-a\-toast;
+猿猴 > apes\-and\-monkeys;
+並激 > shunt\-excitation;
+量綱 > dimension\-\(unit\);
+質問 > \(ask\-a\)\-question;
+蒐集 > to\-gather\-\(data\);
+暑瘟 > tropical\-disease;
+博覽 > read\-extensively;
+深入 > penetrate\-deeply;
+丹桂 > orange\-osmanthus;
+板壁 > wooden\-partition;
+某人 > a\-certain\-person;
+月曆 > monthly\-calendar;
+治病 > treat\-an\-illness;
+十誡 > ten\-commandments;
+外長 > foreign\-minister;
+配藥 > dispense\-\(drugs\);
+字串 > character\-string;
+中文 > chinese\-language;
+大選 > general\-election;
+唐代 > the\-tang\-dynasty;
+性病 > venereal\-disease;
+君權 > monarchial\-power;
+藏文 > tibetan\-language;
+讀物 > reading\-material;
+邊防 > frontier\-defence;
+向東 > towards\-the\-east;
+集錦 > best\-of\-the\-best;
+罷教 > teacher''s\-strike;
+外語 > foreign\-language;
+課表 > school\-timetable;
+誤解 > misunderstanding;
+同時 > at\-the\-same\-time;
+不忙 > there''s\-no\-hurry;
+集郵 > stamp\-collecting;
+廠長 > factory\-director;
+變法 > political\-reform;
+波折 > twists\-and\-turns;
+群島 > group\-of\-islands;
+犯法 > to\-break\-the\-law;
+不少 > not\-\(just\)\-a\-few;
+年齡 > \(a\-person''s\)\-age;
+比翼 > fly\-wing\-to\-wing;
+神奇 > magical\-mystical;
+禁品 > contraband\-goods;
+最先 > \(the\)\-very\-first;
+婆家 > husband''s\-family;
+明淨 > bright\-and\-clean;
+重慶 > chongqing\-\(city\);
+婆婆 > husband''s\-mother;
+吃完 > to\-finish\-eating;
+逼近 > press\-on\-towards;
+報館 > newspaper\-office;
+電纜 > \(electric\)\-cable;
+狀態 > state\-of\-affairs;
+中介 > agent\-\(computer\);
+不光 > not\-the\-only\-one;
+暑天 > hot\-\(summer\)\-day;
+華語 > chinese\-language;
+不僅 > not\-the\-only\-one;
+反對 > to\-fight\-against;
+不久 > not\-long\-\(after\);
+天父 > heavenly\-father;
+特徵 > characteristics;
+暑假 > summer\-vacation;
+擺脫 > break\-away\-from;
+半數 > half\-the\-number;
+冰霜 > moral\-integrity;
+勻溜 > even\-and\-smooth;
+原委 > the\-whole\-story;
+特寫 > feature\-article;
+春天 > spring\-\(season\);
+止痛 > to\-relieve\-pain;
+叛亂 > armed\-rebellion;
+文檔 > \(computer\)\-file;
+緬甸 > myanmar\-\(burma\);
+失望 > be\-disappointed;
+網站 > network\-station;
+開門 > open\-\(the\)\-door;
+經管 > be\-in\-charge\-of;
+半天 > half\-of\-the\-day;
+語族 > language\-branch;
+往年 > in\-former\-years;
+日報 > daily\-newspaper;
+光電 > opto\-electrical;
+語支 > language\-branch;
+白鐵 > galvanized\-iron;
+雅歌 > song\-of\-solomon;
+彼岸 > the\-other\-shore;
+配合 > coordinate\-with;
+報系 > newspaper\-chain;
+標量 > scalar\-quantity;
+南北 > north\-and\-south;
+比容 > specific\-volume;
+盈虧 > profit\-and\-loss;
+勸導 > try\-to\-convince;
+陣營 > group\-of\-people;
+幾百 > several\-hundred;
+大寫 > capital\-letters;
+過活 > live\-one''s\-life;
+牌位 > memorial\-tablet;
+早些 > \(a\-bit\)\-earlier;
+課外 > extracurricular;
+收拾 > to\-put\-in\-order;
+網段 > network\-segment;
+弟弟 > younger\-brother;
+遲早 > sooner\-or\-later;
+矮小 > short\-and\-small;
+比價 > price\-relations;
+新任 > newly\-appointed;
+霸佔 > forcibly\-occupy;
+病魔 > serious\-illness;
+常用 > in\-common\-usage;
+冰磚 > ice\-cream\-brick;
+白菜 > chinese\-cabbage;
+強加 > impose\-by\-force;
+外事 > foreign\-affairs;
+邊地 > border\-district;
+舌面 > blade\-of\-tongue;
+著作 > a\-literary\-work;
+白米 > \(polished\)\-rice;
+瀕臨 > on\-the\-verge\-of;
+損益 > profit\-and\-loss;
+選單 > \(software\)\-menu;
+執法 > law\-enforcement;
+進展 > to\-make\-headway;
+為此 > for\-this\-reason;
+廠史 > factory\-history;
+光磁 > magneto\-optical;
+隘口 > \(mountain\)\-pass;
+網址 > \(internet\)\-site;
+畫面 > \(picture\)\-frame;
+菜地 > vegetable\-field;
+畜類 > domestic\-animal;
+抱養 > adopt\-\(a\-child\);
+城樓 > city\-gate\-tower;
+採種 > seed\-collecting;
+花白 > grizzled\-\(hair\);
+屍體 > \(lifeless\)\-body;
+圖簽 > \(computer\)\-icon;
+巴望 > look\-forward\-to;
+層雲 > stratus\-\(cloud\);
+籌碼 > bargaining\-chip;
+降價 > price\-reduction;
+標樁 > \(marking\)\-stake;
+閉會 > close\-a\-meeting;
+純屬 > pure\-and\-simple;
+光榮 > honor\-and\-glory;
+辦學 > to\-run\-a\-school;
+標杆 > surveyor''s\-pole;
+幣制 > currency\-system;
+報到 > report\-for\-duty;
+年份 > particular\-year;
+基地 > \(military\)\-base;
+光明 > bright\-\(future\);
+保釋 > release\-on\-bail;
+射頻 > radio\-frequency;
+鬥爭 > struggle\-\(with\);
+裡根 > \(ronald\)\-reagan;
+抗衡 > contend\-against;
+級別 > \(military\)\-rank;
+筆誤 > a\-slip\-of\-a\-pen;
+八寶 > eight\-treasures;
+百年 > a\-hundred\-years;
+摘借 > to\-borrow\-money;
+圖標 > \(computer\)\-icon;
+長官 > senior\-official;
+入境 > enter\-a\-country;
+兒媳 > daughter\-in\-law;
+臂紗 > \(black\)\-armband;
+軍校 > military\-school;
+把舵 > hold\-the\-rudder;
+被捕 > be\-under\-arrest;
+首長 > senior\-official;
+百十 > a\-hundred\-or\-so;
+坐好 > to\-sit\-properly;
+畜生 > domestic\-animal;
+錦雞 > golden\-pheasant;
+自殺 > to\-kill\-oneself;
+高昂 > in\-high\-spirits;
+穿過 > to\-pass\-through;
+備戰 > prepare\-for\-war;
+安身 > make\-one''s\-home;
+游說 > drum\-up\-support;
+至於 > go\-so\-far\-as\-to;
+生物 > living\-creature;
+戶籍 > census\-register;
+校舍 > school\-building;
+善良 > good\-and\-honest;
+軍備 > \(military\)\-arms;
+首腦 > head\-\(of\-state\);
+安葬 > bury\-\(the\-dead\);
+極力 > do\-at\-all\-costs;
+跑步 > to\-walk\-quickly;
+貶詞 > derogatory\-term;
+互連 > interconnection;
+悲鳴 > utter\-sad\-calls;
+滿意 > to\-be\-satisfied;
+海運 > shipping\-by\-sea;
+留學 > to\-study\-abroad;
+便條 > \(informal\)\-note;
+甚或 > so\-much\-so\-that;
+山峰 > \(mountain\)\-peak;
+溫柔 > gentle\-and\-soft;
+高中 > high\-and\-middle;
+胃病 > stomach\-trouble;
+同齡 > of\-the\-same\-age;
+吸音 > sound\-absorbing;
+麻醉 > to\-anaesthetize;
+投奔 > to\-seek\-shelter;
+例會 > regular\-meeting;
+餅肥 > cake\-fertilizer;
+暴雨 > torrential\-rain;
+便宴 > informal\-dinner;
+上述 > above\-mentioned;
+實彈 > live\-ammunition;
+產值 > value\-of\-output;
+祝賀 > to\-congratulate;
+以為 > consider\-\(that\);
+核彈 > nuclear\-warhead;
+上課 > to\-attend\-class;
+符合 > in\-keeping\-with;
+技倆 > tricky\-maneuver;
+泰語 > thai\-\(language\);
+寵壞 > spoil\-\(a\-child\);
+交界 > common\-boundary;
+三萬 > thirty\-thousand;
+貨源 > supply\-of\-goods;
+窗帘 > window\-curtains;
+期票 > promissory\-note;
+口語 > spoken\-language;
+私營 > privately\-owned;
+寒假 > winter\-vacation;
+哀歌 > a\-mournful\-song;
+牽連 > \(be\)\-implicated;
+性行 > sexual\-activity;
+學士 > bachelor\-degree;
+負擔 > \(bear\-a\)\-burden;
+一秘 > first\-secretary;
+藥瓶 > medicine\-bottle;
+慚愧 > \(to\-be\)\-ashamed;
+人才 > talented\-person;
+不甘 > unreconciled\-to;
+班子 > organized\-group;
+每隔 > at\-intervals\-of;
+愛戴 > love\-and\-esteem;
+愛戀 > be\-in\-love\-with;
+杭州 > hangzhou\-\(city\);
+問世 > to\-be\-published;
+悲泣 > weep\-with\-grief;
+法理 > legal\-principle;
+秩序 > order\-\(orderly\);
+政黨 > political\-party;
+名片 > \(business\)\-card;
+旅費 > travel\-expenses;
+財團 > financial\-group;
+沙石 > sand\-and\-stones;
+禁果 > forbidden\-fruit;
+郵遞 > to\-send\-by\-mail;
+析出 > to\-seperate\-out;
+奔襲 > long\-range\-raid;
+板刷 > scrubbing\-brush;
+服從 > obey\-\(an\-order\);
+施行 > to\-put\-in\-place;
+罰款 > \(impose\-a\)\-fine;
+雌雄 > male\-and\-female;
+邊音 > lateral\-\(sound\);
+母語 > native\-language;
+母親 > mother\-\(formal\);
+泰文 > thai\-\(language\);
+磁盤 > \(computer\)\-disk;
+媳婦 > daughter\-in\-law;
+礦業 > mining\-industry;
+流失 > be\-drained\-away;
+引起 > to\-give\-rise\-to;
+𣎴 > stump\-of\-a\-tree;
+證物 > exhibit\-\(legal\);
+縫補 > darn\-\(clothing\);
+編選 > select\-and\-edit;
+上學 > to\-go\-to\-school;
+頻帶 > frequency\-range;
+庭長 > presiding\-judge;
+政見 > political\-views;
+悲嘆 > sigh\-mournfully;
+頻寬 > frequency\-range;
+半生 > half\-a\-lifetime;
+博物 > natural\-science;
+郵票 > \(postage\)\-stamp;
+恰好 > as\-it\-turns\-out;
+氣溫 > air\-temperature;
+矮胖 > short\-and\-stout;
+語系 > language\-system;
+變形 > be\-out\-of\-shape;
+南海 > south\-china\-sea;
+美元 > american\-dollar;
+世人 > \(common\)\-people;
+名單 > list\-\(of\-names\);
+電磁 > electromagnetic;
+民權 > civil\-liberties;
+據說 > it\-is\-said\-that;
+原性 > original\-nature;
+數百 > several\-hundred;
+操課 > military\-drill;
+協會 > an\-association;
+文物 > cultural\-relic;
+通訊 > communications;
+危房 > decrepit\-house;
+特工 > secret\-service;
+電燈 > electric\-light;
+北極 > the\-north\-pole;
+預付 > pay\-in\-advance;
+殺氣 > murderous\-look;
+磁場 > magnetic\-field;
+牙床 > alveolar\-ridge;
+參加 > to\-participate;
+民意 > public\-opinion;
+妹妹 > younger\-sister;
+往日 > in\-former\-days;
+勘測 > to\-investigate;
+冰釋 > \(of\-misgivings;
+大樓 > large\-building;
+怪人 > strange\-person;
+營業 > to\-do\-business;
+塑膠 > plastic\-cement;
+晚上 > in\-the\-evening;
+散步 > to\-take\-a\-walk;
+識別 > to\-distinguish;
+失控 > out\-of\-control;
+數月 > several\-months;
+往復 > to\-reciprocate;
+靶場 > shooting\-range;
+糖醋 > sweet\-and\-sour;
+帳號 > account\-number;
+爪子 > \(animal''s\)\-paw;
+別管 > no\-matter\-\(who;
+刨程 > planing\-length;
+素菜 > vegetable\-dish;
+開車 > to\-drive\-a\-car;
+煙火 > smoke\-and\-fire;
+轉運 > transportation;
+巡警 > police\-officer;
+放映 > show\-\(a\-movie\);
+製造 > to\-manufacture;
+利率 > interest\-rates;
+輿論 > public\-opinion;
+弱小 > small\-and\-weak;
+敝屣 > worn\-out\-shoes;
+矮子 > a\-short\-person;
+速決 > quick\-decision;
+關稅 > \(customs\)\-duty;
+白蘇 > common\-perilla;
+比值 > specific\-value;
+基督 > jesus\-\(christ\);
+探路 > to\-find\-a\-path;
+遙控 > remote\-control;
+遙感 > remote\-sensing;
+白色 > white\-\(colour\);
+撥款 > allocate\-funds;
+廠工 > factory\-worker;
+正好 > just\-\(in\-time\);
+探視 > pay\-a\-visit\-to;
+判明 > to\-distinguish;
+引咎 > take\-the\-blame;
+壁報 > wall\-newspaper;
+改善 > to\-make\-better;
+造成 > to\-bring\-about;
+幫會 > secret\-society;
+操心 > to\-worry\-about;
+白種 > the\-white\-race;
+補缺 > fill\-a\-vacancy;
+西歐 > western\-europe;
+逕庭 > very\-different;
+補綴 > mend\-\(clothes\);
+集中 > to\-concentrate;
+遲到 > to\-arrive\-late;
+報復 > make\-reprisals;
+真情 > real\-situation;
+巨流 > strong\-current;
+退學 > to\-quit\-school;
+廉價 > cheaply\-priced;
+病號 > sick\-personnel;
+團結 > \(hold\-a\)\-rally;
+圍繞 > revolve\-around;
+近年 > recent\-year\(s\);
+倒閉 > to\-go\-bankrupt;
+冷戰 > \(the\)\-cold\-war;
+價目 > \(marked\)\-price;
+病脈 > abnormal\-pulse;
+漸變 > gradual\-change;
+通信 > to\-communicate;
+紀念 > to\-commemorate;
+開會 > have\-a\-meeting;
+全景 > panoramic\-view;
+刀叉 > knife\-and\-fork;
+布帛 > cloth\-and\-silk;
+找錢 > to\-give\-change;
+補液 > fluid\-infusion;
+起點 > starting\-point;
+報分 > call\-the\-score;
+挺立 > to\-stand\-erect;
+八成 > eighty\-percent;
+兩手 > double\-tactics;
+採油 > oil\-extraction;
+跨越 > to\-step\-across;
+跑道 > athletic\-track;
+握拳 > to\-make\-a\-fist;
+握手 > to\-shake\-hands;
+精干 > crack\-\(troops\);
+長征 > the\-long\-march;
+病痛 > slight\-illness;
+英寸 > \(english\)\-inch;
+標尺 > surveyor''s\-rod;
+將軍 > \(army\)\-general;
+兩國 > both\-countries;
+全國 > entire\-country;
+輩子 > all\-one''s\-life;
+長城 > the\-great\-wall;
+表決 > decide\-by\-vote;
+成都 > chengdu\-\(city\);
+鬥智 > battle\-of\-wits;
+八千 > eight\-thousand;
+病歷 > medical\-record;
+伸開 > to\-stretch\-out;
+演示 > to\-demonstrate;
+畢生 > all\-one''s\-life;
+握別 > to\-shake\-hands;
+傳播 > to\-disseminate;
+入伍 > enter\-the\-army;
+首都 > capital\-\(city\);
+潔淨 > cleanse\-\(sins\);
+舌根 > back\-of\-tongue;
+傍晚 > in\-the\-evening;
+行政 > administration;
+小聲 > in\-a\-low\-voice;
+篡改 > to\-tamper\-with;
+截至 > up\-to\-\(a\-time\);
+起草 > draft\-\(a\-bill\);
+挨打 > take\-a\-beating;
+層理 > stratification;
+球鞋 > athletic\-shoes;
+鍋貼 > fried\-dumpling;
+授命 > to\-give\-orders;
+核能 > nuclear\-energy;
+浮點 > floating\-point;
+生火 > to\-make\-a\-fire;
+自從 > since\-\(a\-time\);
+寶石 > precious\-stone;
+棄櫻 > abandoned\-baby;
+產權 > property\-right;
+齒輪 > \(machine\)\-gear;
+侵犯 > to\-infringe\-on;
+血壓 > blood\-pressure;
+病員 > sick\-personnel;
+減肥 > to\-lose\-weight;
+代表 > representative;
+畫展 > art\-exhibition;
+生效 > to\-take\-effect;
+才氣 > liteary\-talent;
+期間 > period\-of\-time;
+專欄 > special\-column;
+學籍 > school\-roll\(s\);
+禁食 > fast\-\(not\-eat\);
+某種 > some\-kind\-\(of\);
+將會 > will\,\-going\-to;
+豎起 > hold\-up\-\(high\);
+寶書 > treasured\-book;
+吃驚 > to\-be\-startled;
+導彈 > guided\-missile;
+清爽 > fresh\-and\-cool;
+互聯 > interconnected;
+唱片 > \(vinyl\)\-record;
+二者 > both\-\[of\-them\];
+才子 > gifted\-scholar;
+侵害 > to\-encroach\-on;
+寶庫 > treasure\-house;
+保單 > guarantee\-slip;
+小學 > primary\-school;
+仔畜 > newborn\-animal;
+本色 > natural\-colour;
+來往 > to\-come\-and\-go;
+題跋 > short\-comments;
+不解 > not\-understand;
+懮慮 > \(feel\)\-anxiety;
+余悸 > lingering\-fear;
+成就 > accomplishment;
+容忍 > to\-put\-up\-with;
+罷論 > abandoned\-idea;
+患處 > afflicted\-part;
+架構 > infrastructure;
+穴播 > bunch\-planting;
+懷孕 > to\-be\-pregnant;
+職業 > job\-occupation;
+任期 > term\-of\-office;
+不興 > out\-of\-fashion;
+球棒 > \(baseball\)\-bat;
+資格 > qualifications;
+東海 > east\-china\-sea;
+東歐 > eastern\-europe;
+任憑 > no\-matter\-what;
+今朝 > at\-the\-present;
+作品 > works\-\(of\-art\);
+憋悶 > feel\-oppressed;
+飼槽 > feeding\-trough;
+警車 > police\-vehicle;
+寒冷 > cold\-\(climate\);
+安好 > safe\-and\-sound;
+液晶 > liquid\-crystal;
+參觀 > to\-look\-around;
+可能 > might\-\(happen\);
+首先 > first\-\(of\-all\);
+液態 > liquid\-\(state\);
+孕婦 > pregnant\-woman;
+乘法 > multiplication;
+定價 > to\-set\-a\-price;
+暗箱 > camera\-bellows;
+減刑 > reduce\-penalty;
+一生 > all\-one''s\-life;
+中歐 > central\-europe;
+犯罪 > \(commit\)\-crime;
+份兒 > degree\,\-extent;
+特色 > characteristic;
+中斷 > to\-discontinue;
+秕子 > blighted\-grain;
+現任 > at\-the\-present;
+有待 > not\-yet\-\(done\);
+題材 > subject\-matter;
+礦泉 > mineral\-spring;
+毛衣 > \(wool\)\-sweater;
+責任 > responsibility;
+半職 > part\-time\-work;
+顯得 > appear\-\(to\-be\);
+研製 > to\-manufacture;
+不忍 > cannot\-bear\-to;
+媽咪 > mummy\-\(mother\);
+波恩 > bonn\-\(germany\);
+敗訴 > lose\-a\-lawsuit;
+壽衣 > burial\-clothes;
+擺鐘 > pendulum\-clock;
+北緯 > north\-latitude;
+及格 > to\-pass\-a\-test;
+法庭 > court\-\(of\-law\);
+這類 > this\-kind\-\(of\);
+主修 > \(school\)\-major;
+變成 > to\-change\-into;
+不合 > not\-conform\-to;
+斑竹 > mottled\-bamboo;
+不及 > not\-as\-good\-as;
+分類 > classification;
+重建 > reconstruction;
+請看 > please\-see\-\.\.\.;
+類別 > classification;
+氫氣 > hydrogen\-\(gas\);
+數種 > numerous\-types;
+破產 > to\-go\-bankrupt;
+冰點 > freezing\-point;
+華裔 > ethnic\-chinese;
+不仁 > not\-benevolent;
+收聽 > to\-listen\-\(to\);
+菲菲 > very\-fragrant;
+昂揚 > high\-spirited;
+早晨 > early\-morning;
+磁帶 > magnetic\-tape;
+解調 > to\-demodulate;
+北海 > the\-north\-sea;
+薄利 > small\-profits;
+晚報 > evening\-paper;
+星座 > constellation;
+冰鞋 > skating\-boots;
+廠絲 > filature\-silk;
+矛盾 > contradictory;
+出賣 > to\-sell\-\(off\);
+到處 > in\-all\-places;
+古代 > ancient\-times;
+新月 > crescent\-moon;
+即將 > on\-the\-eve\-of;
+卑微 > petty\-and\-low;
+危害 > to\-jeopardize;
+刨花 > wood\-shavings;
+莨菪 > black\-henbane;
+調查 > investigation;
+綁腿 > leg\-wrappings;
+列舉 > \(make\-a\)\-list;
+適用 > be\-applicable;
+摘記 > to\-take\-notes;
+元首 > head\-of\-state;
+方式 > way\-\(of\-life\);
+日夜 > day\-and\-night;
+芝麻 > sesame\-\(seed\);
+牌坊 > memorial\-arch;
+前生 > pre\-existence;
+昇值 > rise\-in\-value;
+米飯 > \(cooked\)\-rice;
+轉道 > make\-a\-detour;
+長途 > long\-distance;
+日前 > the\-other\-day;
+墜毀 > \(plane\)\-crash;
+雙手 > pair\-of\-hands;
+南亞 > southern\-asia;
+刊登 > carry\-a\-story;
+誇張 > to\-exaggerate;
+難忘 > unforgettable;
+早上 > early\-morning;
+太太 > married\-woman;
+撥用 > appropriation;
+境況 > circumstances;
+民事 > civil\-matters;
+女佣 > \(female\)\-maid;
+勘察 > reconnaisance;
+籌集 > collect\-money;
+操演 > demonstration;
+幻燈 > latern\-slides;
+加快 > to\-accelerate;
+冰糖 > crystal\-sugar;
+國際 > international;
+鬥雞 > cock\-fighting;
+形勢 > circumstances;
+過時 > old\-fashioned;
+隨意 > as\-one\-wishes;
+失利 > suffer\-defeat;
+損耗 > wear\-and\-tear;
+相當 > equivalent\-to;
+逐步 > progressively;
+幾次 > several\-times;
+巨細 > big\-and\-small;
+幾樣 > several\-kinds;
+大使 > an\-ambassador;
+編審 > read\-and\-edit;
+強化 > to\-strengthen;
+避孕 > contraception;
+大事 > a\-major\-event;
+教友 > church\-member;
+速效 > quick\-results;
+利於 > be\-beneficial;
+敗北 > suffer\-defeat;
+初期 > initial\-stage;
+詢問 > inquire\-about;
+死刑 > death\-penalty;
+兵痞 > army\-riffraff;
+體重 > \(body\)\-weight;
+白砒 > white\-arsenic;
+相架 > picture\-frame;
+垂直 > perpendicular;
+境地 > circumstances;
+兵營 > military\-camp;
+市民 > city\-resident;
+隨便 > as\-one\-wishes;
+庭園 > flower\-garden;
+轟炸 > \(drop\-a\)\-bomb;
+過去 > \(in\-the\)\-past;
+艦艇 > naval\-vessels;
+冰期 > glacial\-epoch;
+關於 > pertaining\-to;
+剛剛 > just\-recently;
+廠主 > factory\-owner;
+再次 > one\-more\-time;
+權力 > \(wield\)\-power;
+連同 > together\-with;
+簿籍 > account\-books;
+橫掃 > to\-sweep\-away;
+度假 > go\-on\-holiday;
+異質 > heterogeneous;
+車站 > \(bus\)\-station;
+備至 > to\-the\-utmost;
+跑鞋 > running\-shoes;
+報單 > taxation\-form;
+鑒賞 > to\-appreciate;
+這位 > this\-\(person\);
+困窘 > embarrassment;
+降世 > come\-to\-earth;
+便飯 > a\-simple\-meal;
+輻條 > \(wheel\)\-spoke;
+打開 > to\-break\-open;
+發揮 > bring\-to\-bear;
+開心 > to\-feel\-happy;
+實驗 > to\-experiment;
+轉彎 > turn\-\(around\);
+案頭 > on\-one''s\-desk;
+辨別 > differentiate;
+抄襲 > to\-plagiarize;
+辦到 > to\-accomplish;
+先後 > in\-succession;
+畜肥 > animal\-manure;
+拉美 > latin\-america;
+核電 > nuclear\-power;
+越野 > cross\-country;
+駁雜 > heterogeneous;
+公園 > a\-public\-park;
+百姓 > common\-people;
+災區 > disaster\-area;
+構成 > to\-constitute;
+保藏 > keep\-in\-store;
+瑞香 > winter\-daphne;
+拌種 > seed\-dressing;
+籌措 > raise\-\(money\);
+棄置 > to\-throw\-away;
+賣點 > selling\-point;
+開列 > \(make\-a\)\-list;
+瘦弱 > thin\-and\-weak;
+白匪 > white\-bandits;
+肉體 > physical\-body;
+備案 > put\-on\-record;
+鬥志 > will\-to\-fight;
+扁荳 > hyacinth\-bean;
+百倍 > a\-hundredfold;
+筆筒 > pen\-container;
+寶藍 > sapphire\-blue;
+滲碳 > carburization;
+渡過 > to\-cross\-over;
+字集 > character\-set;
+空運 > air\-transport;
+表層 > surface\-layer;
+圓周 > circumference;
+病害 > plant\-disease;
+售貨 > to\-sell\-goods;
+舌尖 > tip\-of\-tongue;
+案稱 > counter\-scale;
+消防 > fire\-fighting;
+喉結 > adam''s''\-apple;
+島國 > island\-nation;
+鬧事 > cause\-trouble;
+京都 > kyoto\-\(japan\);
+四千 > four\-thousand;
+當年 > in\-those\-days;
+財迷 > money\-grubber;
+理解 > to\-comprehend;
+密碼 > \(secret\)\-code;
+築城 > fortification;
+衛兵 > \(body\)\-guard\);
+疑問 > interrogation;
+喉痧 > scarlet\-fever;
+個性 > individuality;
+啟示 > enlightenment;
+致函 > send\-a\-letter;
+意識 > consciousness;
+聯絡 > communication;
+拜別 > take\-leave\-of;
+扁擔 > carrying\-pole;
+哀號 > cry\-piteously;
+桂林 > guilin\-\(city\);
+金黃 > golden\-yellow;
+跨國 > transnational;
+演出 > \(acting\)\-play;
+吃飯 > to\-eat\-a\-meal;
+不通 > be\-obstructed;
+戒指 > \(finger\)\-ring;
+少將 > major\-general;
+杜絕 > put\-an\-end\-to;
+暗鎖 > built\-in\-lock;
+懲戒 > to\-discipline;
+下課 > class\-is\-over;
+不詳 > not\-in\-detail;
+反響 > repercussions;
+宿怨 > an\-old\-grudge;
+單子 > list\-of\-items;
+貢獻 > to\-contribute;
+叫醒 > to\-call\-awake;
+美術 > the\-fine\-arts;
+能夠 > be\-capable\-of;
+家屬 > family\-member;
+鼻淵 > nasosinusitis;
+懂得 > to\-understand;
+半點 > the\-least\-bit;
+鉛筆 > \(lead\)\-pencil;
+單向 > undirectional;
+受賄 > accept\-bribes;
+例假 > legal\-holiday;
+水面 > water\-surface;
+移殖 > to\-transplant;
+起伏 > ups\-and\-downs;
+變調 > modified\-tone;
+友誼 > companionship;
+移植 > to\-transplant;
+哀樂 > funeral\-music;
+富于 > to\-be\-full\-of;
+聲帶 > vocal\-cord\(s\);
+不知 > unknowing\(ly\);
+孫女 > granddaughter;
+涼快 > nice\-and\-cold;
+三百 > three\-hundred;
+京戲 > beijing\-opera;
+低于 > be\-lower\-than;
+南部 > southern\-part;
+清單 > list\-of\-items;
+變色 > change\-colour;
+北面 > northern\-side;
+上班 > to\-go\-to\-work;
+各種 > every\-kind\-of;
+貝彫 > shell\-carving;
+日軍 > japanese\-army;
+南越 > south\-vietnam;
+情況 > circumstances;
+愛憎 > love\-and\-hate;
+職員 > office\-worker;
+洋溢 > brimming\-with;
+協調 > to\-coordinate;
+大阪 > osaka\-\(japan\);
+考慮 > to\-think\-over;
+北部 > northern\-part;
+本意 > original\-idea;
+獨攬 > to\-monopolize;
+吸毒 > to\-take\-drugs;
+泳池 > swimming\-pond;
+一步 > \(single\)\-step;
+北越 > north\-vietnam;
+雜項 > miscellaneous;
+哥哥 > older\-brother;
+外部 > external\-part;
+聞人 > famous\-person;
+京劇 > beijing\-opera;
+和尚 > buddhist\-monk;
+蘇州 > suzhou\-\(city\);
+礦水 > mineral\-water;
+暑氣 > \(summer\)\-heat;
+哀告 > beg\-piteously;
+情形 > circumstances;
+中式 > chinese\-style;
+外貿 > foreign\-trade;
+避難 > \[take\]\-refuge;
+包袱 > cloth\-wrapper;
+感冒 > to\-catch\-cold;
+彩蚌 > painted\-shell;
+禮堂 > assembly\-hall;
+不恭 > disrespectful;
+總計 > \(grand\)\-total;
+娛樂 > entertainment;
+中學 > middle\-school;
+五一 > 5\-1\-\(may\-1st\);
+磁片 > magnetic\-disk;
+會場 > meeting\-place;
+媾和 > to\-make\-peace;
+不巧 > unfortunately;
+上市 > on\-the\-market;
+私利 > personal\-gain;
+遲鈍 > slow\-\(witted\);
+北美 > north\-america;
+經驗 > to\-experience;
+汲水 > to\-draw\-water;
+獲勝 > be\-victorious;
+觀點 > point\-of\-view;
+水牛 > water\-buffalo;
+同年 > the\-same\-year;
+變星 > variable\-star;
+毛筆 > writing\-brush;
+蘇俄 > soviet\-russia;
+步行 > to\-go\-on\-foot;
+別離 > take\-leave\-of;
+擅長 > to\-be\-good\-at;
+不啻 > not\-less\-than;
+大約 > approximately;
+牌照 > license\-plate;
+暗害 > kill\-secretly;
+勃興 > rise\-suddenly;
+前進 > to\-go\-forward;
+變態 > metamorphosis;
+性慾 > sexual\-desire;
+匯率 > exchange\-rate;
+治安 > law\-and\-order;
+欣賞 > to\-appreciate;
+雌花 > female\-flower;
+邦聯 > confederation;
+多種 > many\-kinds\-of;
+吸入 > to\-breathe\-in;
+變工 > exchange\-work;
+受害 > to\-be\-injured;
+決心 > determination;
+下令 > give\-an\-order;
+莫逆 > very\-friendly;
+比熱 > specific\-heat;
+昂昂 > high\-spirited;
+分配 > to\-distribute;
+加緊 > to\-intensify;
+睡覺 > to\-go\-to\-bed;
+早期 > early\-period;
+相關 > interrelated;
+火龍 > fiery\-dragon;
+合作 > to\-cooperate;
+智力 > intelligence;
+忌憚 > be\-afraid\-of;
+昔年 > former\-years;
+礦井 > mine\-\(shaft\);
+熟知 > acquaintance;
+支票 > \(bank\)\-check;
+姐姐 > older\-sister;
+警報 > \(fire\)\-alarm;
+後果 > consequences;
+姊姊 > older\-sister;
+收盤 > market\-close;
+城防 > city\-defence;
+頂住 > to\-withstand;
+西部 > western\-part;
+好感 > good\-opinion;
+失業 > unemployment;
+擅自 > unauthorized;
+逕自 > on\-one''s\-own;
+索賠 > compensation;
+近視 > shortsighted;
+步犁 > walking\-plow;
+相識 > acquaintance;
+開關 > power\-switch;
+去世 > to\-pass\-away;
+培訓 > to\-cultivate;
+多方 > in\-many\-ways;
+搶購 > panic\-buying;
+巡迴 > to\-go\-around;
+這種 > this\-kind\-of;
+大意 > general\-idea;
+別稱 > another\-name;
+步步 > step\-by\-step;
+協商 > consult\-with;
+矮星 > dwarf\-\(star\);
+那時 > at\-that\-time;
+大師 > great\-master;
+組織 > organization;
+通用 > common\-\(use\);
+多工 > to\-multiplex;
+糾葛 > entanglement;
+試探 > to\-sound\-out;
+夫妻 > man\-and\-wife;
+道歉 > to\-apologize;
+故意 > deliberately;
+請問 > may\-i\-ask\.\.\.;
+出發 > to\-start\-out;
+縮寫 > abbreviation;
+壁掛 > wall\-hanging;
+熟悉 > to\-know\-well;
+熟思 > deliberation;
+整天 > all\-day\-long;
+鱉甲 > turtle\-shell;
+身體 > \(human\)\-body;
+糾纏 > be\-entangled;
+複製 > to\-duplicate;
+隊旗 > team\-pennant;
+加強 > to\-reinforce;
+出獄 > leave\-prison;
+談判 > to\-negotiate;
+看病 > see\-a\-doctor;
+很不 > very\-un\-\.\.\.\.;
+毅力 > perseverance;
+落實 > to\-implement;
+支店 > branch\-store;
+白薯 > sweet\-potato;
+綵旗 > colored\-flag;
+回顧 > to\-look\-back;
+殭化 > become\-rigid;
+瀏覽 > to\-skim\-over;
+課余 > after\-school;
+車道 > traffic\-lane;
+正如 > be\-just\-like;
+紙牌 > playing\-card;
+發紅 > flush\-\(face\);
+集合 > congregation;
+速成 > crash\-course;
+光線 > optical\-line;
+努力 > great\-effort;
+引入 > to\-draw\-into;
+廠址 > factory\-site;
+隨同 > accompanying;
+熒光 > flourescence;
+廣告 > to\-advertise;
+挨近 > get\-close\-to;
+編劇 > write\-a\-play;
+壓倒 > overwhelming;
+採脂 > tree\-tapping;
+熟人 > acquaintance;
+培植 > to\-cultivate;
+速寫 > quick\-sketch;
+週圍 > surroundings;
+濾紙 > filter\-paper;
+機構 > organization;
+訪俄 > visit\-russia;
+拔錨 > weigh\-anchor;
+標燈 > beacon\-light;
+冰晶 > ice\-crystals;
+幾天 > several\-days;
+授精 > insemination;
+髒話 > bad\-language;
+凹岸 > concave\-bank;
+過來 > to\-come\-over;
+操勞 > to\-work\-hard;
+別名 > another\-name;
+光源 > light\-source;
+速凍 > quick\-freeze;
+坐牢 > imprisonment;
+補牙 > fill\-a\-tooth;
+刨刀 > planing\-tool;
+把關 > guard\-a\-pass;
+自衛 > self\-defense;
+陛下 > your\-majesty;
+八月 > eighth\-month;
+備考 > \(an\-appendix;
+年前 > \.\.\.years\-ago;
+簡稱 > abbreviation;
+別人 > other\-people;
+開支 > expenditures;
+捏積 > chiropractic;
+報價 > quoted\-price;
+迷信 > superstition;
+轉換 > to\-transform;
+搬家 > move\-\(house\);
+戶頭 > bank\-account;
+親信 > trusted\-aide;
+行程 > travel\-route;
+嚴竣 > tight\.strict;
+看作 > look\-upon\-as;
+寧願 > would\-rather;
+接枝 > \(tree\)\-graft;
+授權 > to\-authorize;
+開學 > school\-opens;
+保證 > to\-guarantee;
+批評 > to\-criticize;
+拔絲 > wire\-drawing;
+嘆詞 > interjection;
+打賭 > \(make\-a\)\-bet;
+優惠 > preferential;
+公報 > announcement;
+密集 > concentrated;
+授時 > time\-service;
+在旁 > by\-\(a\-place\);
+拼盤 > cold\-platter;
+捐款 > donate\-money;
+國有 > nationalized;
+依賴 > to\-depend\-on;
+系上 > to\-buckle\-up;
+背離 > deviate\-from;
+按照 > according\-to;
+偶然 > incidentally;
+喉鏡 > laryngoscope;
+背陰 > in\-the\-shade;
+演算 > to\-calculate;
+兩千 > two\-thousand;
+插圖 > illustration;
+審議 > deliberation;
+管理 > to\-supervise;
+梅花 > plum\-blossom;
+當然 > only\-natural;
+標價 > mark\-a\-price;
+棒硫 > roll\-sulphur;
+孝順 > filial\-piety;
+饅頭 > steamed\-roll;
+保管 > take\-care\-of;
+垂下 > to\-hang\-down;
+裁員 > to\-cut\-staff;
+清醒 > clear\-headed;
+異步 > asynchronous;
+補充 > to\-replenish;
+便秘 > constipation;
+病床 > hospital\-bed;
+枘鑿 > incompatible;
+嚮往 > to\-yearn\-for;
+自拔 > free\-oneself;
+航天 > space\-flight;
+捲入 > to\-draw\-into;
+高密 > high\-density;
+表土 > surface\-soil;
+賞識 > appreciation;
+慶賀 > congratulate;
+消除 > to\-eliminate;
+街坊 > neighborhood;
+瑞色 > lovely\-color;
+聽說 > to\-hear\-told;
+當心 > to\-take\-care;
+異性 > heterosexual;
+交鋒 > cross\-swords;
+興奮 > \(be\)\-excited;
+宇航 > space\-flight;
+禽類 > bird\-species;
+偽善 > hypocritical;
+抱愧 > feel\-ashamed;
+負責 > in\-charge\-of;
+現行 > be\-in\-effect;
+屈服 > to\-surrender;
+減緩 > to\-slow\-down;
+下齒 > bottom\-teeth;
+媒體 > \(news\)\-media;
+竟然 > unexpectedly;
+驚愕 > astonishment;
+當場 > at\-the\-scene;
+婚齡 > marrying\-age;
+抱屈 > feel\-wronged;
+食譜 > cookery\-book;
+並非 > really\-isn''t;
+突破 > breakthrough;
+侵晨 > towards\-dawn;
+漢城 > seoul\,\-korea;
+少數 > small\-number;
+當初 > at\-that\-time;
+拌和 > mix\-and\-stir;
+流通 > to\-circulate;
+咨詢 > consultative;
+扒拉 > push\-lightly;
+專政 > dictatorship;
+飼草 > forage\-grass;
+鼻腔 > nasal\-cavity;
+浴血 > blood\-soaked;
+依據 > according\-to;
+屬國 > vassal\-state;
+鋼筆 > fountain\-pen;
+偉人 > great\-person;
+安營 > pitch\-a\-camp;
+和解 > conciliatory;
+實施 > to\-implement;
+條子 > a\-short\-note;
+根本 > \(not\)\-at\-all;
+種種 > all\-kinds\-of;
+手帕 > handkerchief;
+法院 > court\-of\-law;
+根據 > according\-to;
+河馬 > hippopotamus;
+生命 > life\-\(force\);
+主角 > leading\-role;
+淫猥 > abominations;
+產卵 > lay\-\(an\-egg\);
+果皮 > \(fruit\)\-peel;
+獨裁 > dictatorship;
+不足 > insufficient;
+家政 > housekeeping;
+不貲 > immeasurable;
+晚餐 > evening\-meal;
+作愛 > to\-make\-love;
+蘇聯 > soviet\-union;
+害怕 > to\-be\-afraid;
+晚間 > evening\-time;
+五百 > five\-hundred;
+和約 > peace\-treaty;
+證驗 > real\-results;
+懊悔 > feel\-remorse;
+扣上 > to\-buckle\-up;
+俄中 > russia\-china;
+一萬 > ten\-thousand;
+變速 > speed\-change;
+安心 > feel\-at\-ease;
+人民 > \(the\)\-people;
+將來 > \(the\)\-future;
+題花 > title\-design;
+可觀 > considerable;
+人權 > human\-rights;
+趕上 > keep\-up\-with;
+股市 > stock\-market;
+移民 > to\-immigrate;
+深愛 > affectionate;
+今晨 > this\-morning;
+密友 > close\-friend;
+存心 > deliberately;
+南非 > south\-africa;
+不符 > inconsistent;
+告示 > announcement;
+丹田 > pubic\-region;
+半響 > half\-the\-day;
+主環 > primary\-ring;
+你們 > you\-\(plural\);
+一直 > continuously;
+姿色 > good\-looking;
+暗算 > plot\-against;
+稍微 > a\-little\-bit;
+亮度 > illumination;
+參考 > consultation;
+人家 > other\-people;
+壯麗 > magnificence;
+黨政 > party\-policy;
+虐待 > mistreatment;
+感恩 > thanksgiving;
+罰球 > penalty\-shot;
+費城 > philadelphia;
+油畫 > oil\-painting;
+美洲 > the\-americas;
+貧困 > impoverished;
+亞太 > asia\-pacific;
+大量 > great\-amount;
+頂用 > to\-be\-of\-use;
+費力 > great\-effort;
+暗灘 > hidden\-shoal;
+藥方 > prescription;
+主持 > preside\-over;
+銀幕 > movie\-screen;
+老家 > native\-place;
+暗潮 > undercurrent;
+買價 > buying\-price;
+多邊 > multilateral;
+現代 > modern\-times;
+他人 > other\-person;
+之後 > after\(wards\);
+慣例 > conventional;
+並排 > side\-by\-side;
+耕地 > ariable\-land;
+暗流 > undercurrent;
+浴場 > bathing\-spot;
+不料 > unexpectedly;
+蓋菜 > leaf\-mustard;
+識破 > to\-penetrate;
+不拘 > not\-stick\-to;
+鼓勵 > to\-encourage;
+鞭砲 > firecrackers;
+感動 > to\-move\-\(sb\);
+意味 > significance;
+不愧 > be\-worthy\-of;
+不意 > unexpectedly;
+靶紙 > target\-sheet;
+愈加 > all\-the\-more;
+遠離 > removed\-from;
+和善 > good\-natured;
+認證 > authenticate;
+刨齒 > gear\-shaping;
+注意 > take\-note\-of;
+𦉆 > to\-break\-off;
+風味 > local\-flavor;
+繡花 > to\-embroider;
+知識 > intellectual;
+暗探 > secret\-agent;
+暴怒 > violent\-rage;
+不容 > not\-tolerate;
+不宜 > not\-suitable;
+犯毒 > illegal\-drug;
+大致 > more\-or\-less;
+好看 > good\-looking;
+不如 > not\-equal\-to;
+得票 > vote\-getting;
+派別 > denomination;
+線軸 > thread\-spool;
+有利 > advantageous;
+訂閱 > subscription;
+恢復 > to\-reinstate;
+這項 > this\-\(thing\);
+可惜 > it\-is\-a\-pity;
+婚外 > extramarital;
+不單 > not\-the\-only;
+運送 > to\-transport;
+之一 > one\-of\-\(sth\);
+境遇 > circumstance;
+野心 > wild\-schemes;
+敗興 > disappointed;
+卻步 > to\-step\-back;
+中俄 > china\-russia;
+危殆 > grave\-danger;
+中亞 > central\-asia;
+變性 > denaturation;
+原料 > raw\-material;
+不利 > unfavourable;
+一千 > one\-thousand;
+爆發 > to\-break\-out;
+多站 > multistation;
+氧氣 > oxygen\-\(gas\);
+念日 > memorial\-day;
+各國 > each\-country;
+不便 > inconvenient;
+時態 > \(verb\)\-tense;
+羅列 > to\-spead\-out;
+一億 > 1\-00\-million;
+復活 > resurrection;
+暴動 > insurrection;
+靶機 > target\-drone;
+運行 > be\-in\-motion;
+編舞 > choreography;
+比照 > according\-to;
+壓縮 > to\-compress;
+訪華 > visit\-china;
+認知 > acknowledge;
+叫喊 > exclamation;
+連詞 > conjunction;
+弊端 > malpractice;
+非核 > non\-nuclear;
+收穫 > acquisition;
+民族 > nationality;
+暗井 > blind\-shaft;
+暗中 > in\-the\-dark;
+矚目 > to\-focus\-on;
+布鞋 > cloth\-shoes;
+埋頭 > steamed\-bun;
+判處 > to\-sentance;
+刻苦 > hardworking;
+標點 > punctuation;
+白麵 > wheat\-flour;
+冒險 > take\-a\-risk;
+白鶴 > white\-crane;
+往昔 > in\-the\-past;
+邊疆 > border\-area;
+讓位 > to\-abdicate;
+怪僻 > peculiarity;
+征收 > levy\-\(fine\);
+母板 > motherboard;
+需求 > requirement;
+大業 > great\-cause;
+旺季 > busy\-season;
+必定 > be\-bound\-to;
+半年 > half\-a\-year;
+課桌 > school\-desk;
+間隔 > compartment;
+遲疑 > to\-hesitate;
+靈感 > inspiration;
+失敗 > be\-defeated;
+說服 > to\-persuade;
+制約 > to\-restrict;
+鞏固 > consolidate;
+包括 > to\-comprise;
+妥善 > appropriate;
+辯証 > dialectical;
+瀉鹽 > epsom\-salts;
+複雜 > complicated;
+即刻 > immediately;
+勘探 > exploration;
+博取 > try\-to\-gain;
+放棄 > to\-renounce;
+冰蛋 > frozen\-eggs;
+阻礙 > to\-obstruct;
+追究 > investigate;
+郵局 > post\-office;
+雙數 > even\-number;
+蒐尋 > to\-look\-for;
+白道 > moon''s\-path;
+動態 > development;
+永久 > everlasting;
+發送 > to\-transmit;
+配備 > to\-allocate;
+謀取 > try\-to\-gain;
+比如 > for\-example;
+多山 > mountainous;
+電工 > electrician;
+紅色 > red\-\(color\);
+描述 > to\-describe;
+十億 > one\-billion;
+兵蟻 > soldier\-ant;
+毀壞 > destruction;
+削減 > to\-cut\-down;
+日中 > japan\-china;
+隨時 > at\-any\-time;
+証書 > certificate;
+長談 > a\-long\-talk;
+大型 > large\-scale;
+補選 > by\-election;
+落後 > fall\-behind;
+推遲 > to\-postpone;
+操法 > drill\-rules;
+軍隊 > army\-troops;
+樹葉 > tree\-leaves;
+剛架 > rigid\-frame;
+談到 > to\-refer\-to;
+再者 > furthermore;
+調制 > to\-modulate;
+基石 > cornerstone;
+往事 > past\-events;
+大功 > great\-merit;
+裁軍 > disarmament;
+誡命 > commandment;
+內臣 > chamberlain;
+坦蕩 > magnanimous;
+探討 > investigate;
+增強 > to\-increase;
+遵守 > comply\-with;
+限於 > restrict\-at;
+閉經 > amenorrhoea;
+認出 > recognition;
+免職 > degradation;
+工程 > engineering;
+記得 > to\-remember;
+擺布 > order\-about;
+透明 > transparent;
+力圖 > try\-hard\-to;
+追查 > investigate;
+典禮 > celebration;
+刑期 > prison\-term;
+精簡 > to\-simplify;
+花茶 > scented\-tea;
+散佈 > disseminate;
+覆滅 > destruction;
+簿記 > bookkeeping;
+觸怒 > provocation;
+攪和 > to\-mix\-\(up\);
+描繪 > to\-describe;
+週年 > anniversary;
+絕望 > desperation;
+敗仗 > lost\-battle;
+增多 > to\-increase;
+結束 > termination;
+無意 > inadvertant;
+邊區 > border\-area;
+相比 > compared\-to;
+覆沒 > annihilated;
+眉梢 > tip\-of\-brow;
+切換 > to\-cut\-over;
+兩百 > two\-hundred;
+評價 > to\-evaluate;
+崩裂 > burst\-apart;
+加以 > in\-addition;
+按鈕 > push\-button;
+農業 > agriculture;
+報應 > retribution;
+幾年 > a\-few\-years;
+盼望 > to\-hope\-for;
+隊員 > team\-member;
+行蹤 > whereabouts;
+支付 > pay\-\(money\);
+表語 > predicative;
+註冊 > to\-register;
+附屬 > subordinate;
+偽軍 > puppet\-army;
+優秀 > outstanding;
+體貼 > considerate;
+執政 > be\-in\-power;
+魚竿 > fishing\-rod;
+希望 > ro\-wish\-for;
+約會 > appointment;
+體認 > realization;
+幸好 > fortunately;
+授粉 > pollination;
+製片 > moviemaking;
+機會 > opportunity;
+關押 > put\-in\-jail;
+記住 > to\-remember;
+灌溉 > to\-irrigate;
+通告 > to\-announce;
+驕陽 > blazing\-sun;
+濃縮 > concentrate;
+國籍 > nationality;
+前任 > predecessor;
+軟碟 > floppy\-disk;
+軟盤 > floppy\-disk;
+屏門 > screen\-door;
+拜訪 > pay\-a\-visit;
+退出 > to\-withdraw;
+採煤 > coal\-mining;
+平凡 > commonplace;
+括號 > parenthesis;
+便鞋 > cloth\-shoes;
+滲透 > to\-permeate;
+偷聽 > to\-evesdrop;
+出兵 > send\-troops;
+培土 > to\-earth\-up;
+開戰 > start\-a\-war;
+分佈 > distributed;
+迷人 > fascinating;
+出來 > to\-come\-out;
+信道 > signal\-path;
+魔法 > enchantment;
+申請 > apply\-\(for\);
+跑車 > racing\-bike;
+描摹 > to\-describe;
+八年 > eight\-years;
+籌款 > fundraising;
+域名 > domain\-name;
+八字 > character\-8;
+相似 > to\-resemble;
+挪用 > to\-embezzle;
+發展 > development;
+裝扮 > dress\-up\-as;
+城區 > city\-proper;
+溝通 > communicate;
+為了 > in\-order\-to;
+白宮 > white\-house;
+冠冕 > royal\-crown;
+像樣 > presentable;
+巧合 > coincidence;
+戰車 > war\-chariot;
+白夜 > white\-night;
+花店 > flower\-shop;
+描寫 > to\-describe;
+便覽 > brief\-guide;
+舊版 > old\-version;
+因此 > that\-is\-why;
+實踐 > to\-practice;
+尋覓 > to\-look\-for;
+瑞雪 > timely\-snow;
+公元 > \(year\)\-a\.d\.;
+色情 > pornography;
+來訪 > pay\-a\-visit;
+白刃 > naked\-sword;
+發出 > to\-send\-out;
+就職 > take\-office;
+拔營 > strike\-camp;
+把穩 > trustworthy;
+容貌 > countenance;
+舒服 > comfortable;
+手續 > formalities;
+按期 > on\-schedule;
+踩水 > tread\-water;
+宣言 > declaration;
+仿造 > counterfeit;
+實習 > to\-practice;
+偷懶 > to\-goof\-off;
+鼻音 > nasal\-sound;
+查證 > investigate;
+環繞 > to\-surround;
+困境 > predicament;
+滲濾 > percolation;
+病容 > sickly\-look;
+成績 > performance;
+人間 > man''s\-world;
+端站 > end\-station;
+衍射 > diffraction;
+回報 > \(in\)\-return;
+棗樹 > jujube\-tree;
+或稱 > also\-called;
+括弧 > parenthesis;
+高壓 > high\-handed;
+仲裁 > arbitration;
+值得 > to\-be\-worth;
+異常 > exceptional;
+蚱蜢 > grasshopper;
+鑽孔 > bore\-a\-hole;
+當局 > authorities;
+高唱 > sing\-loudly;
+介詞 > preposition;
+舞劇 > dance\-drama;
+傑出 > illustrious;
+疆場 > battlefield;
+信服 > to\-convince;
+脾氣 > temperament;
+上齒 > upper\-teeth;
+慰藉 > consolation;
+板規 > plate\-gauge;
+病人 > sick\-person;
+鑒定 > to\-appraise;
+備件 > spare\-parts;
+生成 > be\-produced;
+便桶 > chamber\-pot;
+脫氧 > deoxidation;
+情願 > willingness;
+生態 > way\-of\-life;
+指出 > to\-indicate;
+扁桃 > almond\-tree;
+跋扈 > domineering;
+修復 > restoration;
+筆心 > pencil\-lead;
+信息 > information;
+不顧 > in\-spite\-of;
+立法 > legislation;
+對方 > counterpart;
+空白 > blank\-space;
+男女 > male\-female;
+當做 > to\-treat\-as;
+跛子 > lame\-person;
+五萬 > 50\-thousand;
+有趣 > interesting;
+保存 > to\-conserve;
+淘神 > troublesome;
+筆墨 > pen\-and\-ink;
+薑餅 > gingerbread;
+溫度 > temperature;
+跑壘 > baserunning;
+蜜桃 > honey\-peach;
+鑒于 > in\-light\-of;
+可驚 > astonishing;
+便宜 > inexpensive;
+不迭 > cannot\-cope;
+手寫 > handwriting;
+下載 > to\-download;
+踏上 > set\-foot\-on;
+作文 > composition;
+滲入 > to\-permeate;
+環形 > ring\-shaped;
+佈景 > \(stage\)\-set;
+戒律 > commandment;
+驚人 > astonishing;
+騷動 > disturbance;
+悲觀 > pessimistic;
+屬下 > subordinate;
+美貌 > goodlooking;
+用以 > in\-order\-to;
+麻藥 > anaesthetic;
+小型 > small\-scale;
+戰場 > battlefield;
+題詞 > inscription;
+例如 > for\-example;
+趣味 > to\-interest;
+信仰 > firm\-belief;
+股東 > stockholder;
+鎮壓 > suppression;
+板牙 > front\-tooth;
+泳褲 > swim\-trunks;
+條例 > regulations;
+同質 > homogeneous;
+環境 > environment;
+顯著 > outstanding;
+二百 > two\-hundred;
+就任 > take\-office;
+果汁 > fruit\-juice;
+耕畜 > farm\-animal;
+重返 > return\-\(to\);
+下落 > whereabouts;
+丟臉 > humiliation;
+法規 > legislation;
+我國 > our\-country;
+佈局 > arrangement;
+變通 > be\-flexible;
+鼻涕 > nasal\-mucus;
+貸款 > \(bank\)\-loan;
+準備 > preparation;
+安康 > good\-health;
+預計 > to\-forecast;
+聰明 > intelligent;
+量詞 > meaure\-word;
+立即 > immediately;
+名著 > masterpiece;
+任意 > arbitrarily;
+安家 > settle\-down;
+饒恕 > forgiveness;
+宇宙 > outer\-space;
+瑞士 > switzerland;
+喇叭 > loudspeaker;
+成份 > composition;
+駁倒 > demolish\-sb;
+浴池 > public\-bath;
+以往 > in\-the\-past;
+顯目 > outstanding;
+奔馳 > run\-quickly;
+現年 > current\-age;
+鈔票 > paper\-money;
+示範 > demonstrate;
+智能 > intelligent;
+交換 > to\-exchange;
+風波 > disturbance;
+藥物 > medicaments;
+鄙陋 > superficial;
+考查 > investigate;
+夜鶯 > nightingale;
+餐廳 > dining\-hall;
+北韓 > north\-korea;
+互換 > to\-exchange;
+威脅 > to\-threaten;
+空前 > unprecedent;
+預約 > reservation;
+碰見 > to\-run\-into;
+查出 > to\-find\-out;
+半邊 > half\-of\-sth;
+暗示 > drop\-a\-hint;
+交往 > association;
+氣質 > temperament;
+書法 > calligraphy;
+卓越 > distinction;
+股價 > stock\-price;
+九月 > ninth\-month;
+主權 > sovereignty;
+多餘 > superfluous;
+恰當 > appropriate;
+聽取 > hear\-\(news\);
+感性 > sensibility;
+商人 > businessman;
+禁止 > to\-prohibit;
+秉承 > take\-orders;
+售價 > to\-sell\-for;
+嬌媚 > flirtatious;
+頁碼 > page\-number;
+交媾 > to\-have\-sex;
+上流 > upper\-class;
+霸道 > overbearing;
+波瀾 > great\-waves;
+波濤 > great\-waves;
+不止 > incessantly;
+爭議 > controversy;
+中東 > middle\-east;
+丹方 > folk\-remedy;
+重疊 > overlapping;
+中日 > china\-japan;
+吞沒 > to\-embezzle;
+重現 > to\-reappear;
+食堂 > dining\-hall;
+曲折 > complicated;
+靶船 > target\-ship;
+千萬 > ten\-million;
+一月 > first\-month;
+犯病 > to\-fall\-ill;
+同步 > synchronous;
+哺乳 > breast\-feed;
+調變 > to\-modulate;
+主張 > to\-advocate;
+婚期 > wedding\-day;
+暗殺 > assassinate;
+毛蟲 > caterpillar;
+主席 > chairperson;
+邊陲 > border\-area;
+危篤 > deathly\-ill;
+互動 > interactive;
+妖精 > evil\-spirit;
+中年 > middle\-aged;
+貝丘 > shell\-mound;
+意向 > disposition;
+沈澱 > precipitate;
+取決 > depend\-upon;
+繁複 > complicated;
+隔離 > to\-separate;
+三年 > three\-years;
+隔開 > to\-separate;
+𡽱 > a\-high\-hill;
+下屬 > subordinate;
+上層 > upper\-layer;
+繼續 > to\-continue;
+壯觀 > spectacular;
+政變 > coup\-d''etat;
+神學 > theological;
+繁華 > flourishing;
+題字 > inscription;
+合影 > joint\-photo;
+如畫 > picturesque;
+不堪 > cannot\-bear;
+藥品 > medicaments;
+順應 > comply\-with;
+終點 > destination;
+爆竹 > firecracker;
+得病 > to\-fall\-ill;
+透露 > to\-leak\-out;
+阻隔 > to\-separate;
+特權 > prerogative;
+太空 > outer\-space;
+分離 > to\-seperate;
+禁令 > prohibition;
+不免 > unavoidable;
+誓約 > honor\-bound;
+證書 > credentials;
+沈思 > contemplate;
+解釋 > explanation;
+分開 > to\-separate;
+礁島 > reef\-island;
+通過 > by\-means\-of;
+迎風 > in\-the\-wind;
+上任 > take\-office;
+如此 > in\-this\-way;
+論爭 > controversy;
+悠久 > established;
+上下 > up\-and\-down;
+恐嚇 > to\-threaten;
+素食 > vegetables;
+縮短 > to\-curtail;
+改組 > reorganize;
+擁護 > to\-endorse;
+進行 > to\-advance;
+奔波 > rush\-about;
+後母 > stepmother;
+散發 > distribute;
+失火 > catch\-fire;
+誕生 > to\-be\-born;
+多爾 > \(bob\)\-dole;
+彼此 > each\-other;
+預先 > beforehand;
+關門 > close\-down;
+違背 > to\-violate;
+統計 > statistics;
+函購 > mail\-order;
+預備 > to\-prepare;
+壁立 > \(of\-cliffs;
+春季 > springtime;
+摘錄 > to\-extract;
+頒佈 > promulgate;
+每次 > every\-time;
+編程 > to\-program;
+分詞 > participle;
+後期 > late\-stage;
+效用 > usefulness;
+糧食 > foodstuffs;
+荒野 > wilderness;
+撒謊 > tell\-a\-lie;
+燃燒 > combustion;
+弄直 > straighten;
+遷移 > to\-migrate;
+大氣 > atmosphere;
+認為 > to\-believe;
+降落 > to\-descend;
+前者 > the\-former;
+效率 > efficiency;
+靶心 > bull''s\-eye;
+勃然 > agitatedly;
+碟子 > small\-dish;
+講師 > instructor;
+取代 > substitute;
+新教 > protestant;
+多次 > many\-times;
+奇數 > odd\-number;
+必將 > inevitably;
+陰精 > sex\-fluids;
+妖嬈 > enchanting;
+狂亂 > hysterical;
+繁榮 > prosperous;
+繼承 > to\-inherit;
+操縱 > to\-operate;
+全面 > all\-around;
+厘升 > centiliter;
+調整 > adjustment;
+妓女 > prostitute;
+荒謬 > ridiculous;
+白頭 > hoary\-head;
+決不 > not\-at\-all;
+說明 > to\-explain;
+出色 > remarkable;
+女婿 > son\-in\-law;
+特別 > especially;
+免除 > to\-prevent;
+妥協 > compromise;
+巨輪 > large\-ship;
+熄滅 > extinguish;
+照片 > photograph;
+附筆 > postscript;
+親自 > personally;
+改正 > to\-correct;
+半圓 > semicircle;
+違犯 > to\-violate;
+爭奪 > fight\-over;
+短期 > short\-term;
+每年 > every\-year;
+敵手 > antagonist;
+印像 > impression;
+精通 > proficient;
+很大 > tremendous;
+白酒 > spirit\-usu;
+明亮 > brightness;
+草莓 > strawberry;
+報章 > newspapers;
+多年 > many\-years;
+語彙 > vocabulary;
+早先 > previously;
+牌價 > list\-price;
+巫術 > witchcraft;
+過渡 > transition;
+探險 > to\-explore;
+大學 > university;
+無理 > irrational;
+半價 > half\-price;
+區別 > difference;
+文學 > literature;
+從前 > previously;
+關聯 > be\-related;
+地震 > earthquake;
+觀眾 > spectators;
+排隊 > to\-line\-up;
+分發 > distribute;
+攪擾 > to\-disturb;
+數學 > mathematic;
+熱心 > enthusiasm;
+電子 > electronic;
+白話 > vernacular;
+炸糕 > fried\-cake;
+堆積 > accumulate;
+散射 > scattering;
+蓋世 > unrivelled;
+編排 > to\-arrange;
+捕魚 > catch\-fish;
+出生 > to\-be\-born;
+允諾 > to\-promise;
+調和 > harmonious;
+後來 > afterwards;
+大喜 > exultation;
+政府 > government;
+設施 > facilities;
+方便 > convenient;
+接通 > to\-connect;
+此後 > after\-this;
+座標 > coordinate;
+經歷 > experience;
+樂觀 > optimistic;
+太古 > immemorial;
+離婚 > to\-divorce;
+燈塔 > lighthouse;
+出版 > to\-publish;
+誇大 > exaggerate;
+兵船 > man\-of\-war;
+加州 > california;
+傷風 > catch\-cold;
+放射 > to\-radiate;
+比例 > proportion;
+遷徙 > to\-migrate;
+隨後 > soon\-after;
+前景 > foreground;
+遷延 > long\-delay;
+補語 > complement;
+加密 > to\-encrypt;
+整合 > to\-conform;
+違抗 > to\-disobey;
+監督 > to\-control;
+文具 > stationery;
+每人 > per\-person;
+阻止 > to\-prevent;
+防水 > waterproof;
+防止 > to\-prevent;
+退步 > degenerate;
+適度 > moderately;
+遠征 > expedition;
+白臉 > white\-face;
+總共 > altogether;
+解析 > to\-analyze;
+試圖 > to\-attempt;
+艦載 > ship\-based;
+知名 > well\-known;
+多事 > meddlesome;
+冰球 > ice\-hockey;
+解放 > liberation;
+偽頂 > false\-roof;
+高階 > high\-level;
+捏造 > to\-make\-up;
+分析 > to\-analyze;
+擁抱 > to\-embrace;
+零下 > below\-zero;
+差異 > difference;
+放出 > to\-let\-off;
+公石 > hectoliter;
+攻克 > to\-capture;
+報數 > number\-off;
+收入 > to\-take\-in;
+詞典 > dictionary;
+設在 > located\-at;
+限度 > limitation;
+裱糊 > wall\-paper;
+檢查 > inspection;
+瀆職 > wrongdoing;
+庇廕 > \(of\-a\-tree;
+陰天 > cloudy\-day;
+終於 > eventually;
+訂婚 > engagement;
+陸基 > land\-based;
+廚司 > cook\,\-chef;
+傳說 > it\-is\-said;
+高速 > high\-speed;
+制定 > to\-draw\-up;
+速射 > rapid\-fire;
+遺傳 > hereditary;
+舉辦 > to\-conduct;
+利害 > formidable;
+攪亂 > to\-confuse;
+入獄 > go\-to\-jail;
+米粉 > rice\-flour;
+糾正 > to\-correct;
+親手 > personally;
+農村 > rural\-area;
+副刊 > supplement;
+操場 > playground;
+基於 > because\-of;
+衍變 > to\-develop;
+全然 > completely;
+團聚 > to\-reunite;
+白狐 > arctic\-fox;
+擁塞 > congestion;
+討厭 > disgusting;
+違傲 > to\-disobey;
+白熾 > white\-heat;
+白熱 > white\-heat;
+白熊 > polar\-bear;
+白煤 > anthracite;
+倚靠 > to\-lean\-on;
+幼女 > young\-girl;
+觀察 > to\-observe;
+兵法 > art\-of\-war;
+當選 > be\-elected;
+摘抄 > to\-extract;
+監控 > to\-monitor;
+堤岸 > embankment;
+結局 > conclusion;
+欠佳 > suboptimal;
+週到 > thoughtful;
+規律 > discipline;
+管轄 > administer;
+常常 > frequently;
+樹樁 > tree\-stump;
+襯托 > to\-set\-off;
+操典 > drill\-book;
+跑馬 > horse\-race;
+檢察 > to\-inspect;
+巨星 > giant\-star;
+附加 > additional;
+操作 > to\-operate;
+相對 > relatively;
+無價 > invaluable;
+屏除 > get\-rid\-of;
+搏斗 > to\-wrestle;
+拜託 > request\-sb;
+排球 > volleyball;
+紀律 > discipline;
+店主 > shop\-owner;
+瓶頸 > bottleneck;
+幫助 > assistance;
+幫凶 > accomplice;
+分別 > difference;
+公撮 > milliliter;
+結合 > to\-combine;
+籃球 > basketball;
+抱負 > aspiration;
+算術 > arithmetic;
+推測 > conjecture;
+要塞 > stronghold;
+白旗 > white\-flag;
+演變 > to\-develop;
+滿足 > to\-satisfy;
+驅逐 > banishment;
+表示 > to\-express;
+農園 > plantation;
+高級 > high\-level;
+投資 > investment;
+看到 > see\-\(that\);
+提昇 > to\-promote;
+兌換 > to\-convert;
+公引 > hectometer;
+駕馭 > to\-control;
+專門 > specialist;
+看來 > apparently;
+臉色 > complexion;
+草叢 > underbrush;
+兼容 > compatible;
+軍港 > naval\-port;
+按立 > ordination;
+生計 > livelihood;
+掌櫃 > shopkeeper;
+表現 > expression;
+兩岸 > bilaterial;
+共存 > to\-coexist;
+囚犯 > a\-prisoner;
+偉績 > great\-acts;
+相互 > each\-other;
+衍生 > derviative;
+冰刀 > ice\-skates;
+接收 > to\-receive;
+用處 > usefulness;
+技術 > technology;
+花托 > receptacle;
+宿題 > assignment;
+魚排 > fish\-steak;
+指甲 > fingernail;
+學齡 > school\-age;
+捨棄 > to\-give\-up;
+差別 > difference;
+使醉 > intoxicate;
+拘禁 > constraint;
+國會 > parliament;
+超越 > to\-surpass;
+推廣 > popularize;
+佣金 > commission;
+白喉 > diphtheria;
+授意 > to\-inspire;
+公分 > centimeter;
+筆者 > the\-author;
+保育 > child\-care;
+白區 > white\-area;
+揹債 > be\-in\-debt;
+漫畫 > caricature;
+停火 > cease\-fire;
+良心 > conscience;
+單調 > monotonous;
+表明 > make\-known;
+投稿 > contribute;
+模仿 > to\-imitate;
+發佈 > to\-release;
+條約 > treatypact;
+導航 > navigation;
+排外 > xenophobic;
+導致 > to\-lead\-to;
+展示 > to\-open\-up;
+尋舋 > to\-provoke;
+先例 > antecedent;
+滅絕 > extinguish;
+賓館 > guesthouse;
+樓下 > downstairs;
+提倡 > to\-promote;
+打結 > tie\-a\-knot;
+臆測 > assumption;
+興旺 > prosperous;
+岸標 > lighthouse;
+拔河 > tug\-of\-war;
+生產 > to\-produce;
+補償 > compensate;
+人體 > human\-body;
+推出 > to\-release;
+胞衣 > afterbirth;
+挖掘 > excavation;
+四年 > four\-years;
+餐館 > restaurant;
+指揮 > to\-conduct;
+聖靈 > holy\-ghost;
+指控 > accusation;
+手稿 > manuscript;
+抹油 > to\-annoint;
+表尺 > rear\-sight;
+畢業 > graduation;
+固執 > persistent;
+查詢 > to\-inquire;
+飯館 > restaurant;
+疑慮 > hesitation;
+喉舌 > mouthpiece;
+便當 > convenient;
+聯通 > connection;
+駐紮 > to\-station;
+簽出 > to\-log\-off;
+高層 > high\-level;
+餅鐺 > baking\-pan;
+屢次 > repeatedly;
+鎗管 > gun\-barrel;
+鐵板 > iron\-panel;
+鏈環 > chain\-link;
+捉取 > to\-capture;
+竭盡 > exhaustion;
+軍人 > serviceman;
+意願 > aspiration;
+老頭 > old\-fellow;
+現象 > appearance;
+鎮痛 > analgesiac;
+自尊 > self\-pride;
+定義 > definition;
+競爭 > to\-compete;
+實現 > to\-achieve;
+傷亡 > casualties;
+截然 > completely;
+業余 > spare\-time;
+行列 > procession;
+病假 > sick\-leave;
+期限 > time\-limit;
+把戲 > acrobatics;
+消費 > to\-consume;
+行人 > pedestrian;
+書面 > in\-writing;
+筷子 > chopsticks;
+節制 > temperance;
+腐敗 > corruption;
+獸醫 > veterinary;
+做出 > to\-put\-out;
+作為 > accomplish;
+折射 > refraction;
+喉炎 > laryngitis;
+了解 > understand;
+信心 > confidence;
+聯繫 > connection;
+珍藏 > collection;
+自信 > confidence;
+聖職 > priesthood;
+錶盤 > dial\-plate;
+桃樹 > peach\-tree;
+單模 > singlemode;
+想象 > to\-imagine;
+下降 > to\-decline;
+審查 > to\-examine;
+層壓 > lamination;
+周速 > cycle\-time;
+暴風 > storm\-wind;
+屬地 > dependency;
+漲價 > appreciate;
+聖經 > holy\-bible;
+仿真 > to\-emulate;
+和諧 > harmonious;
+介紹 > to\-present;
+頻頻 > repeatedly;
+缺點 > weak\-point;
+本行 > one''s\-line;
+滲坑 > sewage\-pit;
+競技 > tournament;
+抵制 > resistance;
+鐵匠 > blacksmith;
+任用 > to\-appoint;
+單數 > odd\-number;
+板紙 > paperboard;
+呈遞 > to\-present;
+波長 > wavelength;
+專心 > absorption;
+個別 > individual;
+會計 > accountant;
+流血 > shed\-blood;
+肉片 > meat\-slice;
+溫室 > greenhouse;
+倚仗 > to\-lean\-on;
+抑制 > to\-inhibit;
+作料 > condiments;
+便壺 > bed\-urinal;
+趨奉 > to\-fawn\-on;
+使怒 > exasperate;
+依屬 > dependence;
+預防 > to\-prevent;
+個人 > individual;
+等到 > wait\-until;
+小姐 > young\-lady;
+桌布 > tablecloth;
+背景 > background;
+不變 > unchanging;
+一貫 > consistent;
+批准 > to\-approve;
+科系 > department;
+愁緒 > melancholy;
+神話 > fairy\-tale;
+住所 > habitation;
+顛覆 > subversion;
+案子 > long\-table;
+互相 > each\-other;
+便利 > convenient;
+河邊 > river\-bank;
+不虞 > unexpected;
+尤其 > especially;
+淘汰 > to\-die\-out;
+肥料 > fertilizer;
+安排 > to\-arrange;
+議院 > parliament;
+狡辯 > to\-quibble;
+第二 > number\-two;
+格外 > especially;
+暴行 > savage\-act;
+實在 > in\-reality;
+超升 > exaltation;
+叛軍 > rebel\-army;
+獸穴 > animal\-den;
+孝敬 > to\-respect;
+警鐘 > alarm\-bell;
+胖子 > fat\-person;
+存放 > to\-deposit;
+餓死 > starvation;
+併吞 > swallow\-up;
+學徒 > apprentice;
+感激 > appreciate;
+板樁 > sheet\-pile;
+成分 > ingredient;
+容器 > receptacle;
+重視 > importance;
+悔罪 > conviction;
+能力 > capability;
+必須 > to\-have\-to;
+肯定 > to\-be\-sure;
+任性 > capricious;
+王牌 > trump\-card;
+南面 > south\-side;
+薄荷 > field\-mint;
+馬力 > horsepower;
+月球 > \(the\)\-moon;
+婚約 > engagement;
+現成 > ready\-made;
+頻繁 > frequently;
+議論 > to\-comment;
+交替 > to\-replace;
+神秘 > mysterious;
+風濕 > rheumatism;
+群眾 > the\-masses;
+神祕 > mysterious;
+寄予 > to\-express;
+仁慈 > benevolent;
+今後 > henceforth;
+虛擬 > fictitious;
+顯現 > appearance;
+多黨 > multiparty;
+不當 > unsuitable;
+沈落 > sink\,\-fall;
+講述 > talk\-about;
+宣佈 > to\-declare;
+鼓掌 > to\-applaud;
+以外 > apart\-from;
+爆音 > sonic\-boom;
+似乎 > apparently;
+大體 > in\-general;
+空兒 > spare\-time;
+食指 > forefinger;
+牴觸 > contradict;
+程序 > procedures;
+弱點 > weak\-point;
+明言 > pronounced;
+本月 > this\-month;
+哲學 > philosophy;
+丹毒 > erysipelas;
+氣象 > meteorolgy;
+互惠 > reciprocal;
+總體 > completely;
+蔬菜 > vegetables;
+飯店 > restaurant;
+含燐 > phosphoric;
+更正 > correction;
+黑板 > blackboard;
+彙集 > to\-collect;
+講解 > to\-explain;
+預知 > anticipate;
+部門 > department;
+以及 > as\-well\-as;
+聯合 > to\-combine;
+主格 > nominative;
+錄取 > to\-recruit;
+新郎 > bridegroom;
+而後 > after\-that;
+字典 > dictionary;
+悲歌 > sad\-melody;
+罪狀 > accusation;
+比重 > proportion;
+賠償 > compensate;
+流放 > banishment;
+人均 > per\-capita;
+可疑 > suspicious;
+聞名 > well\-known;
+而已 > that''s\-all;
+浴巾 > bath\-towel;
+吊燈 > chandelier;
+聲價 > reputation;
+薄片 > thin\-slice;
+更新 > up\-to\-date;
+顫栗 > to\-tremble;
+本底 > background;
+集體 > collective;
+敗露 > \(of\-a\-plot;
+試驗 > experiment;
+人口 > population;
+厘米 > centimeter;
+歸順 > submission;
+失蹤 > be\-missing;
+飽和 > saturation;
+歡騰 > jubilation;
+後裔 > descendant;
+氣色 > complexion;
+金牌 > gold\-medal;
+不會 > improbable;
+上月 > last\-month;
+吵架 > to\-quarrel;
+意外 > unexpected;
+碧綠 > dark\-green;
+不時 > frequently;
+老套 > old\-things;
+並把 > to\-include;
+談論 > to\-discuss;
+及物 > transitive;
+電車 > trolleybus;
+欺騙 > to\-deceive;
+顧慮 > misgivings;
+可比 > comparable;
+事先 > in\-advance;
+警犬 > police\-dog;
+剛體 > rigid\-body;
+景氣 > prosperity;
+卜筮 > divination;
+不快 > be\-unhappy;
+昌盛 > prosperous;
+改過 > to\-correct;
+改進 > to\-improve;
+不幸 > misfortune;
+電視 > television;
+後者 > the\-latter;
+纏繞 > intertwine;
+加速 > accelerate;
+諳練 > conversant;
+一度 > for\-a\-time;
+歡迎 > to\-welcome;
+化肥 > fertilizer;
+墨鏡 > sunglasses;
+剝離 > \(of\-tissue;
+不屈 > unyielding;
+彈藥 > ammunition;
+預料 > anticipate;
+頂替 > to\-replace;
+不定 > indefinite;
+不安 > intranquil;
+老人 > old\-people;
+期刊 > periodical;
+知覺 > perception;
+同情 > compassion;
+適配 > adaptation;
+合意 > acceptable;
+大臣 > chancellor;
+同性 > homosexual;
+日益 > day\-by\-day;
+大膽 > courageous;
+本份 > one''s\-duty;
+不妥 > not\-proper;
+會友 > membership;
+繳納 > contribute;
+不夠 > not\-enough;
+私下 > in\-private;
+波峰 > wave\-crest;
+三天 > three\-days;
+𠀍 > generation;
+面目 > appearance;
+反日 > anti\-japan;
+建議 > to\-propose;
+波導 > wave\-guide;
+婢女 > slave\-girl;
+沒收 > confiscate;
+快活 > gay\,\-happy;
+可悲 > lamentable;
+評註 > commentary;
+婊子 > prostitute;
+必然 > inevitable;
+半球 > hemisphere;
+響應 > respond\-to;
+彙編 > collection;
+議會 > parliament;
+大綱 > main\-point;
+撞騙 > to\-swindle;
+烤鴨 > roast\-duck;
+歌詞 > song\-lyric;
+並入 > merge\-into;
+記載 > write\-down;
+弱脈 > weak\-pulse;
+顫動 > to\-tremble;
+原本 > originally;
+吸吮 > to\-suck\-in;
+爆破 > to\-blow\-up;
+道賀 > compliment;
+取得 > to\-acquire;
+上半 > first\-half;
+教育 > to\-educate;
+不動 > motionless;
+吞噬 > to\-swallow;
+要點 > main\-point;
+反復 > repeatedly;
+西點 > west\-point;
+並不 > not\-at\-all;
+斗眼 > cross\-eyed;
+氣氛 > atmosphere;
+眼鏡 > spectacles;
+不備 > unprepared;
+檢驗 > to\-inspect;
+一再 > repeatedly;
+恫嚇 > intimidate;
+一共 > altogether;
+奉獻 > consecrate;
+不依 > not\-comply;
+不住 > repeatedly;
+只好 > to\-have\-to;
+討論 > to\-discuss;
+文盲 > illiterate;
+明智 > not\-unwise;
+另外 > additional;
+撞針 > firing\-pin;
+南極 > south\-pole;
+一代 > generation;
+收縮 > pull\-back;
+多疑 > skeptical;
+合力 > cooperate;
+爆炸 > explosion;
+割草 > mow\-grass;
+變奏 > variation;
+領受 > to\-accept;
+動盪 > commotion;
+可哀 > miserably;
+菠蘿 > pineapple;
+厚度 > thickness;
+速記 > shorthand;
+徐步 > to\-stroll;
+西面 > west\-side;
+摘除 > to\-excise;
+警官 > constable;
+同伴 > companion;
+名人 > personage;
+蔓延 > to\-extend;
+同事 > colleague;
+半旗 > half\-mast;
+金匠 > goldsmith;
+同一 > identical;
+碰巧 > by\-chance;
+普及 > widespead;
+設置 > to\-set\-up;
+燒燬 > burn\-down;
+明年 > next\-year;
+古典 > classical;
+叫做 > be\-called;
+綠茶 > green\-tea;
+別處 > elsewhere;
+述語 > predicate;
+防衛 > to\-defend;
+昨天 > yesterday;
+教父 > godfather;
+受僱 > mercenary;
+於是 > thereupon;
+語源 > etymology;
+說法 > statement;
+城門 > city\-gate;
+靈敏 > sensitive;
+助理 > assistant;
+設立 > to\-set\-up;
+論斷 > inference;
+受事 > recepient;
+熬煎 > suffering;
+分號 > semicolon;
+原告 > complaint;
+白魚 > whitefish;
+多樣 > diversity;
+多模 > multimode;
+開頭 > beginning;
+無能 > inability;
+白體 > lean\-type;
+標高 > elevation;
+妖媚 > seductive;
+無聲 > noiseless;
+刺繡 > embroider;
+十年 > ten\-years;
+半島 > peninsula;
+連續 > continous;
+原則 > principle;
+鄭州 > zhengzhou;
+計策 > stratagem;
+底線 > underline;
+閃電 > lightning;
+引渡 > extradite;
+教母 > godmother;
+壁爐 > fireplace;
+文明 > civilized;
+直覺 > intuition;
+壁燈 > wall\-lamp;
+發音 > pronounce;
+厘克 > centigram;
+無籟 > scoundrel;
+加深 > to\-deepen;
+執行 > implement;
+雹暴 > hailstorm;
+確信 > confident;
+奠定 > establish;
+那樣 > that\-kind;
+公里 > kilometer;
+誠摯 > sincerely;
+差距 > disparity;
+襯裙 > petticoat;
+鰾膠 > isinglass;
+證件 > paperwork;
+細菌 > bacterial;
+芬香 > fragrance;
+占卜 > to\-divine;
+蒼天 > firmament;
+緩沖 > to\-buffer;
+選派 > set\-apart;
+散播 > to\-spread;
+大志 > high\-aims;
+輔音 > consonant;
+張揚 > publicize;
+解碼 > to\-decode;
+播種 > sow\-seeds;
+化學 > chemistry;
+報紙 > newspaper;
+無知 > ignorance;
+接駁 > to\-access;
+很多 > very\-many;
+誠意 > sincerity;
+廣泛 > extensive;
+鳳梨 > pineapple;
+雙方 > bilateral;
+長遠 > long\-term;
+千周 > kilohertz;
+過濾 > to\-filter;
+奇妙 > fantastic;
+冰蓋 > ice\-sheet;
+遙測 > telemetry;
+農舍 > farmhouse;
+紅蓮 > red\-lotus;
+共識 > consensus;
+輸送 > transport;
+大小 > dimension;
+大家 > authority;
+爭取 > fight\-for;
+每天 > every\-day;
+攻擊 > to\-attack;
+紅茶 > black\-tea;
+文字 > character;
+常綠 > evergreen;
+殘廢 > deformity;
+隱晦 > obscurity;
+照樣 > as\-before;
+方向 > direction;
+焰火 > fireworks;
+救恩 > salvation;
+天天 > every\-day;
+後勤 > logistics;
+助手 > assistant;
+內褲 > underwear;
+辦罪 > to\-punish;
+要緊 > important;
+民主 > democracy;
+務實 > pragmatic;
+推銷 > to\-market;
+彙報 > to\-report;
+要素 > essential;
+夢境 > dreamland;
+課堂 > classroom;
+選擇 > to\-select;
+報界 > the\-press;
+發言 > statement;
+十七 > seventeen;
+火藥 > gunpowder;
+診斷 > diagnosis;
+毫克 > milligram;
+副本 > duplicate;
+艱難 > difficult;
+廣播 > broadcast;
+敗局 > lost\-game;
+郊外 > outskirts;
+教室 > classroom;
+白蠟 > white\-wax;
+出現 > to\-appear;
+逐漸 > gradually;
+冰糕 > ice\-cream;
+允許 > to\-permit;
+後代 > posterity;
+艦長 > commander;
+構造 > structure;
+勾劃 > to\-sketch;
+增援 > reinforce;
+無比 > matchless;
+教士 > churchman;
+次數 > frequency;
+大力 > energetic;
+壯大 > to\-expand;
+權柄 > authority;
+遵循 > to\-follow;
+適意 > agreeable;
+調停 > reconcile;
+干涉 > interfere;
+勤勉 > diligence;
+款待 > entertain;
+發芽 > germinate;
+大便 > excrement;
+撥正 > set\-right;
+壽命 > life\-span;
+經文 > scripture;
+敲入 > to\-key\-in;
+隊形 > formation;
+天上 > celestial;
+辦理 > to\-handle;
+註定 > be\-doomed;
+無數 > countless;
+收回 > to\-regain;
+外交 > diplomacy;
+過度 > exceeding;
+判斷 > to\-decide;
+操持 > to\-manage;
+檢測 > to\-detect;
+矮凳 > low\-stool;
+階層 > hierarchy;
+至高 > paramount;
+推薦 > recommend;
+排行 > seniority;
+前往 > leave\-for;
+教儀 > ordinance;
+結構 > structure;
+墳墓 > sepulcher;
+播放 > broadcast;
+公秉 > kiloliter;
+阻撓 > to\-thwart;
+傳送 > to\-convey;
+遺囑 > testament;
+歡呼 > cheer\-for;
+傳輸 > transport;
+干擾 > interfere;
+推荐 > recommend;
+遊客 > traveller;
+城牆 > city\-wall;
+內碼 > to\-encode;
+摧殘 > to\-ravage;
+撞擊 > to\-strike;
+加劇 > aggravate;
+阻抗 > impedance;
+捐贈 > to\-donate;
+自願 > voluntary;
+樹皮 > tree\-bark;
+經度 > longitude;
+隨員 > attendant;
+光筆 > light\-pen;
+報攤 > newsstand;
+出於 > be\-due\-to;
+救世 > salvation;
+擴大 > to\-expand;
+過多 > excessive;
+無形 > invisible;
+裝置 > equipment;
+故事 > narrative;
+共產 > communist;
+篩選 > to\-filter;
+推翻 > overthrow;
+院子 > courtyard;
+園藝 > gardening;
+廣博 > extensive;
+權威 > authority;
+劃分 > to\-divide;
+傳記 > biography;
+迷惑 > to\-puzzle;
+加上 > to\-put\-in;
+延伸 > to\-extend;
+通宵 > overnight;
+艱苦 > difficult;
+廣傳 > propagate;
+發生 > to\-happen;
+癱瘓 > paralysis;
+組成 > component;
+隊列 > formation;
+接管 > take\-over;
+設備 > equipment;
+隆冬 > midwinter;
+凹度 > concavity;
+漫長 > very\-long;
+界面 > interface;
+創作 > to\-create;
+陪同 > accompany;
+擴充 > to\-expand;
+指責 > criticize;
+綜合 > composite;
+披露 > to\-reveal;
+看待 > look\-upon;
+陷入 > sink\-into;
+衰落 > decompose;
+剛健 > energetic;
+撥奏 > pizzicato;
+逆境 > adversity;
+迫害 > persecute;
+進化 > evolution;
+辯才 > eloquence;
+自負 > conceited;
+市政 > municipal;
+儼然 > just\-like;
+絕妙 > exquisite;
+投降 > surrender;
+簽章 > signature;
+陪伴 > accompany;
+綁匪 > kidnapper;
+無力 > powerless;
+擔保 > guarantee;
+推理 > reasoning;
+因而 > therefore;
+逆向 > backwards;
+跟隨 > to\-follow;
+按蚊 > anopheles;
+樣機 > prototype;
+刨冰 > water\-ice;
+帶寬 > bandwidth;
+異議 > objection;
+規定 > provision;
+展開 > to\-unfold;
+輪流 > alternate;
+傳統 > tradition;
+偏見 > prejudice;
+地理 > geography;
+地球 > the\-earth;
+降低 > to\-reduce;
+保險 > insurance;
+保障 > to\-ensure;
+場合 > situation;
+報告 > to\-inform;
+紳士 > gentleman;
+公斗 > decaliter;
+逝世 > pass\-away;
+返回 > return\-to;
+附件 > enclosure;
+分割 > to\-cut\-up;
+長期 > long\-term;
+扁骨 > flat\-bone;
+保鏢 > bodyguard;
+跑錶 > stopwatch;
+紙夾 > paperclip;
+發明 > to\-invent;
+模擬 > imitation;
+激發 > to\-arouse;
+再度 > once\-more;
+糾察 > to\-picket;
+拷花 > to\-emboss;
+潛艇 > submarine;
+迷住 > fascinate;
+艾炷 > moxa\-cone;
+囚禁 > captivity;
+內戰 > civil\-war;
+便門 > side\-door;
+裁減 > to\-reduce;
+迷亂 > confusion;
+圍牆 > enclosure;
+相同 > identical;
+規勸 > to\-advise;
+表皮 > epidermis;
+表白 > vindicate;
+戶限 > threshold;
+看做 > regard\-as;
+捐獻 > to\-donate;
+兇手 > assailant;
+蟑螂 > cockroach;
+寬頻 > broadband;
+西南 > southwest;
+使館 > consulate;
+西北 > northwest;
+棉被 > comforter;
+精巧 > elaborate;
+嶄新 > brand\-new;
+打進 > to\-breach;
+公寸 > decimeter;
+承認 > recognize;
+公寓 > apartment;
+常任 > permanent;
+光彩 > honorable;
+保護 > to\-defend;
+指示 > point\-out;
+病理 > pathology;
+辛勞 > laborious;
+損壞 > to\-damage;
+保証 > guarantee;
+嘉許 > favorable;
+八天 > eight\-day;
+拒絕 > to\-refuse;
+要不 > otherwise;
+標定 > demarcate;
+膨脹 > to\-expand;
+輻射 > radiation;
+排放 > discharge;
+體現 > to\-embody;
+衰減 > to\-weaken;
+籃板 > backboard;
+馬鞭 > horsewhip;
+苦境 > grievance;
+畢竟 > after\-all;
+低階 > low\-level;
+所謂 > so\-called;
+潰爛 > to\-fester;
+儲存 > stockpile;
+膀臂 > upper\-arm;
+瀑布 > waterfall;
+掛念 > concerned;
+全同 > identical;
+轟動 > sensation;
+臺燈 > desk\-lamp;
+蝴蝶 > butterfly;
+甜美 > sweetness;
+伴隨 > to\-follow;
+實質 > substance;
+公兩 > hectogram;
+植物 > botanical;
+空防 > air\-force;
+入侵 > to\-invade;
+克制 > restraint;
+公丈 > decameter;
+輸出 > to\-export;
+折磨 > persecute;
+輸入 > to\-import;
+實行 > implement;
+等等 > et\-cetera;
+清除 > eliminate;
+打聽 > ask\-about;
+表揚 > to\-praise;
+激怒 > infuriate;
+打翻 > overthrow;
+停泊 > anchorage;
+蜻蜓 > dragonfly;
+漸漸 > gradually;
+子音 > consonant;
+漲潮 > high\-tide;
+家譜 > genealogy;
+驚異 > amazement;
+輔助 > to\-assist;
+提供 > to\-supply;
+穿透 > penetrate;
+接口 > interface;
+接受 > to\-accept;
+體操 > gymnastic;
+便箋 > notepaper;
+空軍 > air\-force;
+超聯 > hyperlink;
+聖餐 > sacrament;
+裝備 > equipment;
+批發 > wholesale;
+漸次 > gradually;
+趕緊 > hurriedly;
+骨架 > framework;
+介面 > interface;
+偵探 > detective;
+臨時 > temporary;
+挑戰 > challenge;
+被告 > defendant;
+排出 > discharge;
+拔染 > discharge;
+貝類 > shellfish;
+在內 > including;
+拿手 > expert\-in;
+竊聽 > eavesdrop;
+宿舍 > dormitory;
+山水 > landscape;
+四天 > four\-days;
+挺好 > very\-good;
+簽入 > to\-log\-on;
+馬背 > horseback;
+驕氣 > arrogance;
+疑心 > suspicion;
+渺茫 > uncertain;
+激勵 > encourage;
+激動 > to\-excite;
+成立 > establish;
+添補 > fill\-\(up\);
+修正 > to\-revise;
+某處 > somewhere;
+賓詞 > predicate;
+稱讚 > to\-praise;
+低級 > low\-level;
+貨輪 > freighter;
+體團 > community;
+極其 > extremely;
+抵抗 > to\-resist;
+颱風 > hurricane;
+伸縮 > to\-extend;
+蚯蚓 > earthworm;
+贖罪 > atonement;
+寵物 > house\-pet;
+聖誕 > christmas;
+假定 > to\-assume;
+行動 > operation;
+主體 > main\-part;
+手法 > technique;
+消遣 > amusement;
+極了 > extremely;
+就業 > get\-a\-job;
+疆域 > territory;
+桌燈 > desk\-lamp;
+疆土 > territory;
+承擔 > undertake;
+膽小 > cowardice;
+屬性 > attribute;
+高價 > expensive;
+主頁 > home\-page;
+美麗 > beautiful;
+會面 > meet\-with;
+成為 > to\-become;
+交誼 > communion;
+錦繡 > beautiful;
+潛力 > potential;
+居所 > residence;
+學童 > schoolboy;
+自動 > automatic;
+蠕動 > to\-wiggle;
+打敗 > to\-defeat;
+豪豬 > porcupine;
+啟發 > enlighten;
+流量 > flow\-rate;
+賜給 > to\-bestow;
+招募 > to\-recuit;
+完畢 > to\-finish;
+對於 > regarding;
+至今 > until\-now;
+翻譯 > translate;
+上面 > on\-top\-of;
+五號 > the\-fifth;
+信差 > messenger;
+膀子 > upper\-arm;
+拆卸 > to\-unload;
+蛋白 > egg\-white;
+吞食 > to\-devour;
+框架 > framework;
+胃炎 > gastritis;
+對抗 > withstand;
+器具 > implement;
+脫掉 > strip\-off;
+香港 > hong\-kong;
+實時 > real\-time;
+肺炎 > pneumonia;
+慶祝 > celebrate;
+宰殺 > slaughter;
+浪蕩 > to\-loiter;
+豪華 > luxurious;
+某物 > something;
+津貼 > allowance;
+肝炎 > hepatitis;
+消耗 > to\-use\-up;
+上載 > to\-upload;
+蘭花 > cymbidium;
+書記 > secretary;
+浪船 > swingboat;
+小寫 > lowercase;
+用具 > appliance;
+古風 > antiquity;
+安歇 > go\-to\-bed;
+家族 > household;
+何故 > wherefore;
+腳印 > footprint;
+瓷器 > chinaware;
+童年 > childhood;
+佔據 > to\-occupy;
+起床 > to\-get\-up;
+寬帶 > broadband;
+來年 > next\-year;
+今生 > this\-life;
+頻道 > frequency;
+本職 > one''s\-job;
+局勢 > situation;
+背斜 > anticline;
+暴躁 > irascible;
+池鹽 > lake\-salt;
+不許 > not\-allow;
+商標 > trademark;
+飯碗 > rice\-bowl;
+晤面 > interview;
+桔子 > tangerine;
+重開 > to\-reopen;
+變革 > transform;
+截奪 > intercept;
+深水 > deepwater;
+趨向 > direction;
+起始 > originate;
+祇讀 > read\-only;
+學會 > institute;
+懸崖 > precipice;
+條件 > condition;
+鷓鴣 > partridge;
+末端 > extremity;
+瓜分 > partition;
+處理 > to\-handle;
+涌現 > spring\-up;
+禮節 > etiquette;
+普遍 > universal;
+變醜 > disfigure;
+並肩 > alongside;
+蜂巢 > honeycomb;
+中美 > china\-usa;
+暗語 > code\-word;
+端口 > interface;
+低層 > low\-level;
+重蹈 > to\-repeat;
+住宅 > residence;
+休戰 > armistice;
+所以 > therefore;
+讚賞 > to\-admire;
+減弱 > to\-weaken;
+叛賣 > to\-betray;
+嫌疑 > suspicion;
+伸展 > extension;
+一致 > unanimous;
+聲明 > statement;
+養殖 > cultivate;
+柿子 > persimmon;
+老牌 > old\-brand;
+妖風 > evil\-wind;
+錶帶 > watchband;
+重要 > important;
+減少 > to\-lessen;
+有益 > wholesome;
+重複 > to\-repeat;
+立刻 > forthwith;
+深思 > to\-ponder;
+早餐 > breakfast;
+野蠻 > barbarous;
+早飯 > breakfast;
+必需 > essential;
+財東 > shopowner;
+虛構 > imaginary;
+聯想 > associate;
+浸沒 > immersion;
+板斧 > broad\-axe;
+含糊 > obscurity;
+淒慘 > miserable;
+一篇 > one\-sided;
+鍵入 > to\-key\-in;
+旋風 > whirlwind;
+祝福 > blessings;
+期滿 > to\-expire;
+警覺 > vigilance;
+原諒 > to\-excuse;
+家俱 > furniture;
+感染 > infection;
+孔子 > confucius;
+子孫 > offspring;
+家人 > household;
+家事 > housework;
+宣傳 > publicize;
+今年 > this\-year;
+呈現 > to\-appear;
+一百 > a\-hundred;
+貫徹 > implement;
+仲夏 > midsummer;
+證詞 > testimony;
+秘書 > secretary;
+突出 > prominent;
+惡毒 > malicious;
+伴侶 > companion;
+昂貴 > expensive;
+露韓 > to\-expose;
+影響 > influence;
+夢魘 > nightmare;
+好運 > good\-luck;
+暴發 > break\-out;
+應付 > deal\-with;
+有毒 > poisonous;
+弱鹼 > weak\-base;
+汽船 > steamboat;
+可笑 > laughable;
+半載 > half\-load;
+微軟 > microsoft;
+仙境 > fairyland;
+旨趣 > objective;
+日趨 > gradually;
+事態 > situation;
+大類 > main\-type;
+本文 > this\-text;
+營養 > nutrition;
+頻率 > frequency;
+協議 > agreement;
+不滿 > resentful;
+那麼 > so\-\(much\);
+必要 > necessary;
+大陸 > continent;
+碧藍 > dark\-blue;
+待遇 > treatment;
+合理 > rationale;
+玩弄 > resort\-to;
+有時 > sometimes;
+旁路 > to\-bypass;
+夜間 > nighttime;
+比鄰 > neighbour;
+非議 > criticize;
+書架 > bookshelf;
+混亂 > confusion;
+有效 > effective;
+缽盂 > alms\-bowl;
+資助 > subsidize;
+上次 > last\-time;
+牌號 > trademark;
+五天 > five\-days;
+消失 > disappear;
+旁觀 > spectator;
+磨石 > millstone;
+介入 > intervene;
+以上 > more\-than;
+矛頭 > spearhead;
+夢遺 > wet\-dream;
+變異 > variation;
+波段 > wave\-band;
+離開 > to\-depart;
+獲得 > to\-obtain;
+吐氣 > aspirated;
+東南 > southeast;
+東北 > northeast;
+不明 > not\-clear;
+奇觀 > spectacle;
+改革 > to\-reform;
+愛國 > patriotic;
+不斷 > unceasing;
+今世 > this\-life;
+未婚 > unmarried;
+弱酸 > weak\-acid;
+收集 > to\-gather;
+乘客 > passenger;
+一時 > temporary;
+助長 > encourage;
+交出 > hand\-over;
+食品 > foodstuff;
+配置 > to\-deploy;
+失調 > imbalance;
+消去 > eliminate;
+本壘 > home\-base;
+人事 > personnel;
+悲慘 > miserable;
+識相 > sensitive;
+書店 > bookstore;
+邊門 > side\-door;
+中庭 > courtyard;
+司機 > chauffeur;
+獨家 > exclusive;
+東亞 > east\-asia;
+復習 > to\-revise;
+合格 > qualified;
+暫時 > temporary;
+雙邊 > bilateral;
+耐力 > endurance;
+明確 > clear\-cut;
+不惜 > not\-stint;
+惡夢 > nightmare;
+原理 > principle;
+主婦 > housewife;
+玩具 > plaything;
+電話 > telephone;
+施肥 > fertilize;
+改造 > to\-change;
+狀況 > condition;
+不平 > injustice;
+這麼 > so\-\(much\);
+不已 > endlessly;
+雜貨 > groceries;
+木匠 > carpenter;
+評選 > to\-choose;
+醬油 > soy\-sauce;
+建造 > construct;
+觸鬚 > tentacles;
+擦音 > fricative;
+周圍 > encompass;
+不對 > incorrect;
+心目 > mentality;
+可敬 > venerable;
+受格 > objective;
+大荳 > soya\-bean;
+𢥞 > same\-as\-忡;
+契約 > agreement;
+鱷魚 > alligator;
+波幅 > amplitude;
+改變 > to\-change;
+庭院 > courtyard;
+禮儀 > etiquette;
+右手 > righthand;
+創造 > to\-create;
+流入 > flow\-into;
+注射 > injection;
+硬盤 > hard\-disk;
+功課 > classwork;
+週長 > perimeter;
+月光 > moonlight;
+失縱 > disappear;
+婚姻 > matrimony;
+口才 > eloquence;
+不在 > not\-be\-in;
+鞭毛 > flagellum;
+撫養 > to\-foster;
+派任 > set\-apart;
+刪除 > to\-delete;
+遠足 > excursion;
+無限 > unlimited;
+頑強 > tenacious;
+無關 > unrelated;
+蒸發 > evaporate;
+古怪 > eccentric;
+得當 > expedient;
+油布 > tarpaulin;
+下唇 > lower\-lip;
+義務 > volunteer;
+上唇 > upper\-lip;
+頁心 > type\-page;
+不吝 > not\-stint;
+不同 > different;
+污染 > pollution;
+前途 > prospects;
+熊蜂 > bumblebee;
+總結 > summarize;
+美味 > delicious;
+吸取 > to\-absorb;
+下午 > afternoon;
+週邊 > periphery;
+年限 > age\-limit;
+下列 > following;
+不准 > not\-allow;
+題名 > autograph;
+多端 > multiport;
+效能 > efficient;
+不停 > incessant;
+大砲 > artillery;
+不值 > not\-worth;
+沙岩 > sandstone;
+波及 > spread\-to;
+微波 > microwave;
+不休 > endlessly;
+無辜 > innocence;
+次要 > secondary;
+不予 > not\-grant;
+去年 > last\-year;
+不了 > unable\-to;
+領土 > territory;
+韌性 > toughness;
+社區 > community;
+版權 > copyright;
+向南 > southward;
+民歌 > folk\-song;
+即時 > immediate;
+播送 > broadcast;
+幸運 > fortunate;
+美中 > usa\-china;
+隕落 > fall\-down;
+熟練 > practiced;
+改編 > to\-adapt;
+磁性 > magnetic;
+壓緊 > compress;
+醫學 > medicine;
+吞併 > to\-annex;
+靈活 > flexible;
+文獻 > document;
+外用 > external;
+邊線 > sideline;
+正統 > orthodox;
+延續 > continue;
+頻仍 > frequent;
+緯線 > latitude;
+無誤 > verified;
+日曆 > calendar;
+剝落 > peel\-off;
+預卜 > foretell;
+幻象 > illusion;
+謹慎 > cautious;
+特性 > property;
+茶館 > teahouse;
+鳥籠 > birdcage;
+微明 > twilight;
+建築 > building;
+友善 > friendly;
+建立 > creation;
+順利 > smoothly;
+心手 > new\-hand;
+冰隙 > crevasse;
+霸權 > hegemony;
+危急 > critical;
+隙縫 > aperture;
+親身 > personal;
+確定 > definite;
+終身 > lifelong;
+記者 > reporter;
+規避 > to\-evade;
+牧師 > chaplain;
+收益 > earnings;
+具體 > concrete;
+平行 > parallel;
+忠實 > faithful;
+步發 > footwork;
+分裂 > split\-up;
+新書 > new\-book;
+口交 > oral\-sex;
+創立 > to\-found;
+煤箱 > coal\-box;
+缺乏 > shortage;
+日後 > sometime;
+邊界 > boundary;
+災難 > disaster;
+徹底 > thorough;
+鱉裙 > calipash;
+警句 > aphorism;
+早已 > long\-ago;
+雖然 > although;
+破曉 > daybreak;
+雨滴 > raindrop;
+明天 > tomorrow;
+妖孽 > evildoer;
+電氣 > electric;
+酬報 > to\-repay;
+遺產 > heritage;
+硬度 > hardness;
+無聊 > nonsense;
+橫過 > traverse;
+征戰 > campaign;
+課本 > textbook;
+凋謝 > languish;
+計算 > to\-count;
+開除 > to\-expel;
+適當 > suitable;
+纖巧 > delicate;
+平臺 > platform;
+大方 > generous;
+無縫 > seamless;
+冠軍 > champion;
+准許 > to\-allow;
+鄰居 > neighbor;
+電梯 > elevator;
+蓋層 > cap\-rock;
+面對 > confront;
+無線 > wireless;
+確切 > definite;
+通紅 > very\-red;
+包抄 > outflank;
+辨認 > identify;
+原來 > original;
+多數 > majority;
+物品 > articles;
+政治 > politics;
+半夜 > midnight;
+午夜 > midnight;
+新年 > new\-year;
+旅客 > traveler;
+逼真 > lifelike;
+步法 > footwork;
+公釐 > decigram;
+殺戮 > massacre;
+力氣 > strength;
+內部 > interior;
+覆蓋 > to\-cover;
+繡帷 > tapestry;
+太忙 > too\-busy;
+睡眠 > sleeping;
+裝飾 > decorate;
+十四 > fourteen;
+平等 > equality;
+白金 > platinum;
+包層 > cladding;
+轉送 > transfer;
+再見 > good\-bye;
+夢幻 > illusion;
+逕直 > straight;
+危亡 > at\-stake;
+草草 > careless;
+巧計 > maneuver;
+著手 > commence;
+料子 > material;
+盲腸 > appendix;
+支柱 > mainstay;
+形容 > describe;
+無疑 > no\-doubt;
+強悍 > valliant;
+粗野 > insolent;
+袋鼠 > kangaroo;
+妖人 > magician;
+軟體 > software;
+新型 > new\-type;
+培育 > to\-train;
+煤油 > kerosene;
+加時 > overtime;
+光輝 > radiance;
+復元 > recovery;
+強度 > strength;
+十八 > eighteen;
+女兒 > daughter;
+多少 > how\-much;
+十克 > decagram;
+地雷 > landmine;
+如今 > nowadays;
+邪惡 > sinister;
+觀看 > to\-watch;
+得分 > to\-score;
+包圍 > surround;
+比喻 > metaphor;
+規範 > standard;
+軀體 > the\-body;
+硬件 > hardware;
+天堂 > paradise;
+十九 > nineteen;
+光譜 > spectrum;
+補遺 > addendum;
+遠東 > far\-east;
+十三 > thirteen;
+機能 > function;
+蒙古 > mongolia;
+遠景 > prospect;
+紐約 > new\-york;
+教導 > instruct;
+提議 > proposal;
+優越 > superior;
+進步 > progress;
+遮掩 > to\-cover;
+電報 > telegram;
+摹畫 > describe;
+車間 > workshop;
+往來 > dealings;
+調動 > transfer;
+引導 > to\-guide;
+裝貨 > shipping;
+力度 > dynamism;
+過於 > too\-much;
+監禁 > imprison;
+冰窖 > icehouse;
+堂皇 > imposing;
+崇高 > majestic;
+省略 > omission;
+母係 > maternal;
+採買 > purchase;
+輕視 > contempt;
+精致 > delicacy;
+遲延 > to\-delay;
+攜帶 > to\-carry;
+延展 > to\-scale;
+農田 > farmland;
+部位 > position;
+創建 > to\-found;
+內置 > internal;
+限期 > deadline;
+緊張 > critical;
+記憶 > memories;
+遷就 > to\-yield;
+精美 > delicate;
+強勁 > powerful;
+文件 > document;
+殺人 > homicide;
+邊境 > frontier;
+外來 > external;
+剛性 > rigidity;
+勃勃 > thriving;
+適宜 > suitable;
+擁擠 > to\-crowd;
+授課 > to\-teach;
+解散 > dissolve;
+陰性 > feminine;
+動作 > movement;
+敦促 > to\-press;
+雇員 > employee;
+瀉藥 > laxative;
+換置 > displace;
+雨傘 > umbrella;
+圖謀 > conspire;
+董事 > director;
+動人 > touching;
+阻擊 > to\-check;
+補花 > applique;
+塗抹 > to\-smear;
+骨骼 > skeleton;
+裝船 > shipment;
+欺壓 > to\-bully;
+荒涼 > desolate;
+凹板 > intaglio;
+劣勢 > inferior;
+分數 > fraction;
+盎然 > abundant;
+壓力 > pressure;
+連忙 > promptly;
+那個 > that\-one;
+無情 > pitiless;
+擦寫 > to\-erase;
+壓制 > suppress;
+精確 > accurate;
+優美 > graceful;
+航運 > shipping;
+函數 > function;
+經常 > everyday;
+步兵 > infantry;
+平房 > bungalow;
+冰涼 > ice\-cold;
+幻想 > delusion;
+序幕 > prologue;
+刻寫 > inscribe;
+墓地 > cemetery;
+避免 > to\-avert;
+規格 > standard;
+場所 > location;
+追悼 > mourning;
+雇主 > employer;
+揭發 > disclose;
+許可 > to\-allow;
+傳訊 > subpoena;
+評估 > evaluate;
+拖鞋 > slippers;
+偽造 > to\-forge;
+火牆 > firewall;
+凶手 > murderer;
+無害 > harmless;
+軟膏 > ointment;
+掌聲 > applause;
+表觀 > apparent;
+埋沒 > oblivion;
+平常 > ordinary;
+拔除 > pull\-out;
+增加 > to\-raise;
+軌范 > standard;
+摩擦 > friction;
+覺得 > to\-think;
+高貴 > grandeur;
+剪刀 > scissors;
+充當 > serve\-as;
+為時 > timewise;
+達到 > to\-reach;
+西方 > the\-west;
+運動 > movement;
+欺侮 > to\-bully;
+通報 > bulletin;
+撥子 > plectrum;
+床墊 > mattress;
+抗體 > antibody;
+臨近 > close\-to;
+莫大 > greatest;
+約束 > restrict;
+切實 > feasible;
+界限 > boundary;
+陽光 > sunshine;
+分子 > molecule;
+相應 > relevant;
+眾多 > numerous;
+阻塞 > to\-block;
+絕對 > absolute;
+分娩 > delivery;
+管道 > pipeline;
+遊伴 > playmate;
+工業 > industry;
+冰排 > ice\-raft;
+進入 > to\-enter;
+路面 > pavement;
+直徑 > diameter;
+無名 > nameless;
+結婚 > to\-marry;
+堵塞 > blockage;
+撤回 > withdraw;
+睾丸 > testicle;
+經典 > classics;
+騰騰 > steaming;
+逼人 > pressing;
+輝煌 > splendid;
+無助 > helpless;
+採用 > to\-adopt;
+已故 > the\-late;
+序列 > sequence;
+發汗 > to\-sweat;
+國立 > national;
+箴言 > proverbs;
+補爐 > fettling;
+距離 > distance;
+自製 > homemade;
+阻力 > obstacle;
+瘟疫 > epidemic;
+蠕蠕 > wiggling;
+送別 > farewell;
+無人 > unmanned;
+公斤 > kilogram;
+公文 > document;
+抽象 > abstract;
+出口 > to\-speak;
+親善 > goodwill;
+興致 > interest;
+途中 > en\-route;
+間接 > indirect;
+鐵路 > railroad;
+搬弄 > move\-sth;
+標本 > specimen;
+退位 > abdicate;
+組合 > assemble;
+塌下 > collapse;
+逃亡 > fugitive;
+戰鬥 > to\-fight;
+統一 > to\-unify;
+刑事 > criminal;
+提案 > proposal;
+衝突 > conflict;
+追上 > overtake;
+航空 > aviation;
+修辭 > rhetoric;
+濾液 > filtrate;
+對面 > opposite;
+函件 > letteres;
+相反 > opposite;
+持續 > continue;
+馴鹿 > reindeer;
+手鐲 > bracelet;
+脫離 > separate;
+驚訝 > confound;
+脊骨 > backbone;
+捕獲 > to\-catch;
+駕駛 > to\-drive;
+採樣 > sampling;
+純品 > sterling;
+門徒 > disciple;
+近來 > recently;
+寺院 > cloister;
+答話 > to\-reply;
+業界 > industry;
+火山 > volcanic;
+其實 > actually;
+生詞 > new\-word;
+近乎 > close\-to;
+梵語 > sanskrit;
+便道 > shortcut;
+褲子 > trousers;
+寧靜 > tranquil;
+省份 > province;
+封鎖 > blockade;
+俯視 > overlook;
+崩潰 > collapse;
+載攜 > to\-carry;
+濕氣 > moisture;
+精密 > accuracy;
+茶匙 > teaspoon;
+國民 > national;
+兄弟 > brothers;
+校驗 > to\-check;
+粗心 > careless;
+冰冷 > ice\-cold;
+興盛 > flourish;
+倘若 > provided;
+關係 > relation;
+發射 > to\-shoot;
+手足 > movement;
+機動 > flexible;
+採掘 > excavate;
+越過 > to\-cross;
+裁撤 > dissolve;
+兵器 > weaponry;
+拔節 > jointing;
+演習 > exercise;
+紊亂 > disorder;
+跳舞 > to\-dance;
+範疇 > category;
+兵員 > soldiers;
+溶解 > dissolve;
+掙扎 > struggle;
+滲色 > bleeding;
+蛋黃 > egg\-yolk;
+共和 > republic;
+軍方 > military;
+構想 > conceive;
+背面 > the\-back;
+輔導 > to\-coach;
+寶貴 > valuable;
+入口 > entrance;
+驕縱 > arrogant;
+開創 > initiate;
+侵蝕 > to\-erode;
+儀式 > ceremony;
+扁蟲 > flatworm;
+兼併 > to\-annex;
+樂園 > paradise;
+容量 > capacity;
+描圖 > to\-trace;
+赤足 > barefoot;
+屁股 > buttocks;
+發動 > to\-start;
+製品 > products;
+共享 > to\-share;
+英俊 > handsome;
+捷徑 > shortcut;
+行業 > industry;
+馬車 > carriage;
+公主 > princess;
+提名 > nominate;
+四方 > four\-way;
+粗厲 > abrasive;
+車廂 > carriage;
+自治 > autonomy;
+高架 > overhead;
+困惑 > bewilder;
+笑聲 > laughter;
+松鼠 > squirrel;
+優勢 > superior;
+簿子 > notebook;
+傲慢 > arrogant;
+先令 > shilling;
+渠道 > channels;
+校訂 > revision;
+棒球 > baseball;
+優先 > priority;
+噴泉 > fountain;
+軍士 > sergeant;
+來臨 > approach;
+衣廚 > wardrobe;
+份量 > quantity;
+僱員 > employee;
+應該 > ought\-to;
+採光 > lighting;
+聚集 > assemble;
+按捺 > restrain;
+裁判 > judgment;
+人類 > humanity;
+估計 > estimate;
+坐下 > sit\-down;
+安謐 > tranquil;
+回家 > homeward;
+使者 > emissary;
+崩塌 > collapse;
+打破 > to\-break;
+對稱 > symmetry;
+假期 > vacation;
+飼養 > to\-raise;
+衣子 > covering;
+購買 > purchase;
+軼事 > anecdote;
+稀飯 > porridge;
+抱歉 > be\-sorry;
+漂浮 > to\-float;
+極好 > fabulous;
+極大 > enormous;
+界標 > landmark;
+地位 > position;
+稱重 > to\-weigh;
+節慶 > festival;
+蠻干 > reckless;
+鬧區 > downtown;
+準確 > accurate;
+侵略 > invasion;
+併紗 > doubling;
+病夫 > sick\-man;
+授予 > to\-award;
+學術 > learning;
+國內 > domestic;
+貴重 > precious;
+屠殺 > massacre;
+拔掉 > to\-pluck;
+簡化 > simplify;
+驕橫 > arrogant;
+買進 > purchase;
+買通 > to\-bribe;
+慎重 > cautious;
+滑溜 > slippery;
+指導 > to\-guide;
+位置 > position;
+篡奪 > to\-usurp;
+臨床 > clinical;
+栽種 > to\-plant;
+戰略 > strategy;
+園丁 > gardener;
+本體 > noumenon;
+骨幹 > backbone;
+人道 > humanity;
+身分 > position;
+人造 > man\-made;
+產業 > industry;
+居民 > resident;
+腳步 > footstep;
+拼字 > spelling;
+東部 > the\-east;
+高地 > highland;
+固件 > firmware;
+人身 > personal;
+鑲嵌 > to\-inlay;
+業務 > business;
+察看 > to\-watch;
+倍數 > multiple;
+對照 > contrast;
+抵押 > mortgage;
+肩膀 > shoulder;
+箱子 > suitcase;
+身份 > identity;
+低等 > inferior;
+就此 > and\-thus;
+筆架 > pen\-rack;
+寶物 > treasure;
+生日 > birthday;
+鐘擺 > pendulum;
+驅散 > disperse;
+抱怨 > complain;
+等於 > equal\-to;
+學習 > to\-learn;
+折扣 > discount;
+懸疑 > suspense;
+珍貴 > precious;
+懷疑 > to\-doubt;
+當天 > that\-day;
+鍵盤 > keyboard;
+指南 > to\-guide;
+家用 > home\-use;
+生意 > business;
+耗費 > to\-waste;
+致力 > work\-for;
+些許 > trifling;
+五角 > pentagon;
+等待 > wait\-for;
+房東 > landlord;
+修建 > to\-build;
+浪費 > to\-waste;
+突發 > outburst;
+信徒 > believer;
+打掃 > to\-clean;
+技工 > mechanic;
+持久 > duration;
+答對 > to\-reply;
+風車 > windmill;
+手提 > portable;
+飛行 > aviation;
+不靈 > not\-work;
+安生 > peaceful;
+打扮 > dress\-up;
+倒塌 > collapse;
+生存 > to\-exist;
+賦稅 > taxation;
+孔穴 > aperture;
+浴衣 > bathrobe;
+一面 > one\-side;
+恐龍 > dinosaur;
+山坡 > hillside;
+鐵器 > hardware;
+畫像 > portrait;
+當作 > treat\-as;
+禮貌 > courtesy;
+栽植 > to\-plant;
+信封 > envelope;
+聲稱 > to\-claim;
+對手 > opponent;
+信守 > abide\-by;
+聖約 > covenant;
+校正 > regulate;
+重點 > emphasis;
+聽眾 > audience;
+騎師 > horseman;
+秧苗 > seedling;
+恭順 > deferent;
+鍵槽 > key\-slot;
+購物 > shopping;
+單據 > receipts;
+會變 > variable;
+少年 > juvenile;
+騙子 > swindler;
+聯盟 > alliance;
+路口 > crossing;
+處罰 > penalize;
+金魚 > goldfish;
+媚詞 > flattery;
+含量 > contents;
+用功 > diligent;
+筆名 > pen\-name;
+佛教 > buddhism;
+可靠 > reliable;
+資產 > property;
+驅動 > to\-drive;
+驕傲 > arrogant;
+寓所 > dwelling;
+由余 > owing\-to;
+蘑菰 > mushroom;
+頁面 > web\-page;
+一起 > together;
+渴望 > desirous;
+走廊 > corridor;
+本能 > instinct;
+嗜好 > fondness;
+對外 > external;
+缺陷 > a\-defect;
+蛋殼 > eggshell;
+吃醋 > jealousy;
+合適 > suitable;
+官方 > official;
+滑冰 > to\-skate;
+商業 > business;
+財產 > property;
+宗教 > religion;
+韌體 > firmware;
+命脈 > lifeline;
+乃至 > and\-even;
+租稅 > land\-tax;
+項鍊 > necklace;
+恥辱 > disgrace;
+不行 > won''t\-do;
+守時 > punctual;
+暗轉 > blackout;
+打印 > to\-print;
+完整 > complete;
+侵吞 > to\-annex;
+波譜 > spectrum;
+栽子 > seedling;
+貂皮 > mink\-fur;
+醫院 > hospital;
+財物 > property;
+泳衣 > swimsuit;
+淚水 > teardrop;
+肉桂 > cinnamon;
+減掉 > subtract;
+鼻炎 > rhinitis;
+某時 > sometime;
+藥膏 > ointment;
+完成 > complete;
+溢出 > overflow;
+向西 > westward;
+變量 > variable;
+叛逆 > to\-rebel;
+戰區 > war\-zone;
+叱責 > reproach;
+立場 > position;
+貞潔 > chastity;
+栗子 > chestnut;
+中繼 > to\-relay;
+翳眼 > cataract;
+鎮區 > township;
+板油 > leaf\-fat;
+懸垂 > overhang;
+酒鬼 > drunkard;
+不肖 > unworthy;
+班機 > airliner;
+預言 > prophecy;
+窗子 > casement;
+實力 > strength;
+應對 > response;
+羚羊 > antelope;
+交流 > exchange;
+叛變 > renegade;
+戰事 > fighting;
+可行 > feasible;
+憔悴 > languish;
+危難 > calamity;
+安寧 > peaceful;
+丹砂 > cinnabar;
+核准 > sanction;
+譴責 > denounce;
+案件 > law\-case;
+姻親 > affinity;
+浪漫 > romantic;
+村民 > villager;
+慷慨 > vehement;
+論點 > argument;
+木炭 > charcoal;
+黃瓜 > cucumber;
+不端 > improper;
+暗自 > inwardly;
+懊喪 > dejected;
+稀有 > uncommon;
+飛機 > airplane;
+室友 > roommate;
+貶抑 > belittle;
+薄膜 > membrane;
+東方 > the\-east;
+稅收 > taxation;
+風潮 > campaign;
+背包 > knapsack;
+黨派 > partisan;
+子層 > sublayer;
+飲料 > beverage;
+人手 > manpower;
+二月 > february;
+沒落 > downfall;
+含碳 > carbonic;
+最為 > the\-most;
+醫藥 > medicine;
+深奧 > profound;
+啟動 > to\-start;
+學問 > learning;
+不用 > need\-not;
+風水 > fengshui;
+愚昧 > ignorant;
+材料 > material;
+水路 > waterway;
+子女 > children;
+事故 > accident;
+采聲 > applause;
+完全 > complete;
+碰觸 > to\-touch;
+不獨 > not\-only;
+定位 > position;
+存在 > to\-exist;
+貨幣 > currency;
+下獄 > imprison;
+孵化 > breeding;
+蚊子 > mosquito;
+不特 > not\-only;
+鞭蟲 > whipworm;
+不爽 > not\-well;
+性能 > function;
+洪流 > cataract;
+懂事 > sensible;
+食慾 > appetite;
+部類 > category;
+同盟 > alliance;
+震驚 > to\-shock;
+吸煙 > to\-smoke;
+謝謝 > to\-thank;
+不濟 > not\-good;
+頭痛 > headache;
+伙伴 > partisan;
+暗盒 > magazine;
+肖像 > portrait;
+中止 > to\-cease;
+講話 > a\-speech;
+林地 > woodland;
+深刻 > profound;
+亭子 > pavilion;
+音節 > syllable;
+架勢 > attitude;
+不測 > accident;
+太長 > oversize;
+勢頭 > momentum;
+大門 > entrance;
+愚弄 > derision;
+往還 > contacts;
+治療 > to\-treat;
+礦產 > minerals;
+上海 > shanghai;
+罪犯 > criminal;
+爐邊 > fireside;
+愉快 > cheerful;
+變種 > mutation;
+論述 > treatise;
+募集 > to\-raise;
+海峽 > straight;
+爭論 > to\-argue;
+聖化 > sanctify;
+明膫 > manifest;
+重申 > reaffirm;
+暴洪 > a\-sudden;
+替換 > exchange;
+餡兒 > stuffing;
+有所 > somewhat;
+斥責 > denounce;
+重獲 > recovery;
+不朽 > immortal;
+海外 > overseas;
+王家 > princely;
+哨兵 > sentinel;
+貶低 > belittle;
+雉雞 > pheasant;
+想家 > homesick;
+哥兒 > brothers;
+華麗 > gorgeous;
+買主 > customer;
+慘事 > disaster;
+預測 > forecast;
+美日 > us\-japan;
+負債 > indebted;
+雨量 > rainfall;
+司法 > judicial;
+誕辰 > birthday;
+咳嗽 > to\-cough;
+悲慟 > mournful;
+加長 > lengthen;
+吐棄 > to\-spurn;
+勸說 > persuade;
+處分 > disposal;
+日美 > japan\-us;
+增高 > heighten;
+遲頓 > inactive;
+財主 > rich\-man;
+不成 > won''t\-do;
+夢話 > daydream;
+不懈 > untiring;
+大要 > abstract;
+最少 > smallest;
+護照 > passport;
+主宰 > dominate;
+夢見 > to\-dream;
+不惟 > not\-only;
+事兒 > business;
+大衣 > overcoat;
+移交 > transfer;
+書寫 > to\-write;
+不怕 > fearless;
+不必 > need\-not;
+沖洗 > to\-rinse;
+不得 > must\-not;
+不很 > not\-very;
+暗暗 > secretly;
+剷除 > root\-out;
+𨺹 > mournful;
+神性 > divinity;
+總裁 > chairman;
+外表 > external;
+沉浸 > permeate;
+支配 > dominate;
+美德 > a\-virtue;
+雄辯 > eloquent;
+點名 > rollcall;
+忽然 > suddenly;
+日程 > schedule;
+姦淫 > adultery;
+豪俠 > cavalier;
+旺盛 > vigorous;
+外號 > nickname;
+奇聞 > anecdote;
+前額 > forehead;
+海上 > maritime;
+雜誌 > magazine;
+網際 > internet;
+熱誠 > devotion;
+合成 > compound;
+呼叫 > to\-shout;
+天花 > smallpox;
+雨衣 > raincoat;
+同意 > to\-agree;
+本來 > original;
+本位 > standard;
+向後 > backward;
+服務 > to\-serve;
+民眾 > populace;
+威望 > prestige;
+活動 > activity;
+叛教 > apostacy;
+不大 > not\-very;
+大能 > almighty;
+有力 > powerful;
+時機 > occasion;
+否定 > negative;
+藥商 > druggist;
+反映 > reaction;
+遺贈 > bequeath;
+文職 > civilian;
+婚嫁 > marriage;
+緊迫 > pressing;
+變數 > variable;
+議案 > proposal;
+君子 > nobleman;
+建設 > to\-build;
+特派 > dispatch;
+電腦 > computer;
+同屋 > roommate;
+藥劑 > medicine;
+一團 > regiment;
+磨擦 > friction;
+播音 > transmit;
+台座 > pedestal;
+欺負 > to\-bully;
+過載 > overload;
+遲誤 > to\-delay;
+祖國 > homeland;
+順從 > obedient;
+主任 > director;
+泰國 > thailand;
+解開 > to\-untie;
+暗室 > darkroom;
+奶牛 > milk\-cow;
+反應 > reaction;
+悲切 > mournful;
+不只 > not\-only;
+年青 > youthful;
+順序 > sequence;
+中保 > advocate;
+平靜 > tranquil;
+姿態 > attitude;
+告別 > to\-leave;
+一周 > one\-week;
+欺詐 > to\-cheat;
+一向 > all\-long;
+曝光 > exposure;
+氮氣 > nitrogen;
+附錄 > appendix;
+一匙 > spoonful;
+碗櫃 > cupboard;
+研究 > research;
+怠惰 > idleness;
+包皮 > wrapping;
+犯愁 > to\-worry;
+到達 > to\-reach;
+句子 > sentence;
+奉現 > offering;
+不倦 > tireless;
+每當 > whenever;
+訂購 > to\-order;
+斑白 > grizzled;
+證據 > evidence;
+祖先 > ancestor;
+常駐 > resident;
+暴力 > violence;
+集聚 > assemble;
+昔日 > formerly;
+功能 > function;
+警惕 > vigilant;
+波動 > undulate;
+預報 > forecast;
+奇特 > peculiar;
+忠於 > loyal\-to;
+明日 > tomorrow;
+詳細 > detailed;
+暴光 > exposure;
+頑固 > stubborn;
+選舉 > to\-elect;
+退避 > withdraw;
+練習 > exercise;
+培養 > to\-train;
+韌帶 > ligament;
+撤退 > retreat;
+牽扯 > involve;
+婚事 > wedding;
+檢閱 > inspect;
+訴苦 > grumble;
+暫停 > suspend;
+觸角 > antenna;
+彪炳 > shining;
+罷休 > give\-up;
+細長 > slender;
+認真 > earnest;
+時尚 > fashion;
+版本 > version;
+迴轉 > revolve;
+庇護 > shelter;
+酸性 > acidity;
+編纂 > compile;
+君主 > monarch;
+總理 > premier;
+天然 > natural;
+睡衣 > pajamas;
+整理 > arrange;
+煙草 > tobacco;
+燦爛 > glitter;
+可動 > movable;
+水手 > mariner;
+各個 > various;
+口吃 > stammer;
+菏蘭 > holland;
+領先 > to\-lead;
+菠菜 > spinach;
+十月 > october;
+讚同 > approve;
+毛毯 > blanket;
+陽臺 > balcony;
+近郊 > suburbs;
+狂喜 > ecstasy;
+永恆 > eternal;
+請求 > request;
+鄙棄 > disdain;
+出走 > to\-flee;
+效益 > benefit;
+重力 > gravity;
+碼字 > numeral;
+紡錘 > spindle;
+弄碎 > crumble;
+姐妹 > sisters;
+目錄 > catalog;
+正確 > correct;
+心愛 > beloved;
+弄短 > shorten;
+無處 > nowhere;
+變厚 > thicken;
+妖怪 > monster;
+緊緊 > closely;
+隱私 > privacy;
+關鍵 > crucial;
+姿勢 > posture;
+妒忌 > jealous;
+強烈 > intense;
+好戰 > warlike;
+平衡 > balance;
+特定 > special;
+弄皺 > crumple;
+相連 > to\-link;
+文法 > grammar;
+古來 > oldtime;
+天氣 > weather;
+正直 > upright;
+酒廠 > brewery;
+征服 > conquer;
+索道 > ropeway;
+陸續 > in\-turn;
+隱瞞 > to\-hide;
+外流 > outflow;
+工頭 > foreman;
+另一 > another;
+遠端 > far\-end;
+皮革 > leather;
+加甜 > sweeten;
+音信 > message;
+熱燙 > to\-burn;
+障礙 > barrier;
+語法 > grammar;
+警告 > to\-warn;
+然而 > however;
+大概 > roughly;
+電池 > battery;
+好幾 > several;
+比方 > analogy;
+退落 > subside;
+變亂 > turmoil;
+請教 > consult;
+熱潮 > upsurge;
+欺瞞 > to\-fool;
+比擬 > compare;
+議價 > bargain;
+纖弱 > fragile;
+博學 > learned;
+見證 > witness;
+加熱 > heating;
+城郊 > suburbs;
+牧場 > pasture;
+非常 > unusual;
+勇氣 > courage;
+失效 > to\-fail;
+先驅 > pioneer;
+鮑魚 > abalone;
+犯人 > convict;
+荷蘭 > holland;
+難民 > refugee;
+連結 > connect;
+很快 > quickly;
+遺物 > remnant;
+毒打 > beat\-up;
+醜事 > scandal;
+降級 > degrade;
+焦糖 > caramel;
+摘要 > summary;
+進程 > process;
+辯解 > explain;
+摔角 > wrestle;
+包扎 > wrap\-up;
+廢物 > rubbish;
+奇怪 > strange;
+委任 > appoint;
+櫃臺 > counter;
+殘株 > stubble;
+好奇 > curious;
+登陸 > to\-land;
+毆打 > beat\-up;
+監視 > oversee;
+形成 > to\-form;
+總數 > a\-total;
+特制 > special;
+強暴 > violent;
+德國 > germany;
+統統 > totally;
+無窮 > endless;
+矮林 > coppice;
+境界 > boundry;
+弄歪 > distort;
+冰袋 > ice\-bag;
+證人 > witness;
+閱讀 > to\-read;
+郵差 > postman;
+面嚮 > to\-face;
+觸發 > trigger;
+爭執 > dispute;
+瀝青 > asphalt;
+即便 > even\-if;
+大廈 > edifice;
+發酵 > ferment;
+即使 > even\-if;
+閱覽 > to\-read;
+幸福 > blessed;
+無益 > no\-good;
+利益 > benefit;
+防禦 > defense;
+歷時 > to\-last;
+版刻 > carving;
+經理 > manager;
+配偶 > consort;
+歪曲 > distort;
+救援 > to\-save;
+日出 > sunrise;
+氣候 > climate;
+繃帶 > bandage;
+無用 > useless;
+逗留 > stay\-at;
+利用 > exploit;
+區區 > trivial;
+爭吵 > dispute;
+微光 > glimmer;
+每夜 > nightly;
+違法 > illegal;
+出租 > to\-rent;
+雀斑 > freckle;
+收據 > receipt;
+十六 > sixteen;
+繪圖 > to\-draw;
+坦途 > highway;
+知悉 > to\-know;
+支撐 > prop\-up;
+熱情 > cordial;
+排除 > exclude;
+十倍 > tenfold;
+剛毛 > bristle;
+橫臥 > recline;
+刺激 > provoke;
+經濟 > economy;
+細節 > details;
+精製 > refined;
+教師 > teacher;
+樂趣 > delight;
+收成 > harvest;
+十五 > fifteen;
+多大 > how\-big;
+共處 > coexist;
+攪拌 > to\-stir;
+輕輕 > lightly;
+利潤 > profits;
+裝載 > to\-load;
+包含 > contain;
+擯棄 > abandon;
+發行 > publish;
+白蟻 > termite;
+選手 > athlete;
+失去 > to\-lose;
+輪詢 > to\-poll;
+彫刻 > engrave;
+花費 > expense;
+葉子 > foliage;
+草稿 > outline;
+武庫 > arsenal;
+弄平 > flatten;
+制止 > to\-curb;
+糾紛 > dispute;
+茅舍 > cottage;
+照搬 > to\-copy;
+兵艦 > warship;
+補貼 > subsidy;
+正常 > regular;
+廚房 > kitchen;
+文化 > culture;
+崩陷 > fall\-in;
+這次 > present;
+已經 > already;
+巴結 > fawn\-on;
+皺紋 > wrinkle;
+權杖 > scepter;
+匆促 > hastily;
+欄柵 > barrier;
+百萬 > million;
+多半 > chiefly;
+目的 > purpose;
+週末 > weekend;
+初步 > initial;
+欄杆 > railing;
+煩惱 > agonize;
+彈劾 > impeach;
+煩悶 > anguish;
+幫派 > faction;
+表面 > surface;
+糟糕 > too\-bad;
+總則 > profile;
+險峻 > arduous;
+制服 > uniform;
+像銀 > silvery;
+前提 > premise;
+編寫 > compile;
+維持 > to\-keep;
+接觸 > contact;
+勝利 > victory;
+夥伴 > partner;
+教員 > teacher;
+髕骨 > kneecap;
+擁有 > to\-have;
+此外 > besides;
+強制 > enforce;
+車輛 > vehicle;
+霍亂 > cholera;
+芬蘭 > finland;
+數位 > digital;
+輕蔑 > disdain;
+絲柏 > cypress;
+執照 > license;
+櫃檯 > counter;
+無效 > in\-vain;
+壁壘 > rampart;
+連接 > to\-link;
+訊息 > message;
+紙煙 > cigaret;
+歷史 > history;
+眺望 > lookout;
+關照 > concern;
+冰片 > borneol;
+劇場 > theater;
+熱切 > fervent;
+動亂 > turmoil;
+掩蓋 > conceal;
+阻攔 > to\-stop;
+弟兄 > brother;
+阻擋 > to\-stop;
+眉毛 > eyebrow;
+士兵 > soldier;
+被褥 > bedding;
+擺子 > malaria;
+衰退 > decline;
+引出 > extract;
+擔心 > anxious;
+公社 > commune;
+結果 > outcome;
+摧毀 > destroy;
+歲入 > revenue;
+分散 > scatter;
+墊子 > cushion;
+焦急 > anxiety;
+收到 > receive;
+監測 > monitor;
+鬢角 > temples;
+揭示 > to\-show;
+要求 > request;
+痕跡 > vestige;
+剝奪 > deprive;
+農民 > peasant;
+廠商 > company;
+到底 > finally;
+冒煙 > smoking;
+簡要 > concise;
+放任 > indulge;
+通常 > regular;
+真摯 > sincere;
+紅海 > red\-sea;
+冰河 > glacial;
+純正 > genuine;
+刨工 > planing;
+煙囪 > chimney;
+幻影 > phantom;
+拔頂 > topping;
+白白 > in\-vain;
+先知 > prophet;
+疾走 > scamper;
+已滅 > extinct;
+籠罩 > envelop;
+統帥 > command;
+陶器 > pottery;
+附寄 > enclose;
+絨布 > flannel;
+迎接 > to\-meet;
+儘管 > despite;
+阻尼 > damping;
+甜點 > dessert;
+軍艦 > warship;
+發現 > to\-find;
+閃爍 > flicker;
+衣裝 > garment;
+備註 > remarks;
+攔住 > to\-stop;
+裂紋 > crackle;
+挑起 > stir\-up;
+闡明 > clarify;
+到場 > show\-up;
+過剩 > surplus;
+蹣跚 > stagger;
+盛會 > pageant;
+剝削 > exploit;
+描畫 > to\-draw;
+裨益 > benefit;
+遇到 > to\-meet;
+偽證 > perjury;
+機械 > machine;
+照亮 > lighten;
+陳列 > display;
+停車 > to\-stop;
+陽傘 > parasol;
+山頂 > hilltop;
+掌管 > control;
+補益 > benefit;
+拷貝 > to\-copy;
+擠入 > intrude;
+權利 > a\-power;
+花環 > garland;
+公民 > citizen;
+巴林 > bahrain;
+偽裝 > to\-fake;
+堅強 > staunch;
+平均 > average;
+刺刀 > bayonet;
+簸箕 > dustpan;
+充滿 > full\-of;
+帳帘 > drapery;
+接生 > deliver;
+激素 > hormone;
+解剖 > dissect;
+振興 > promote;
+除了 > besides;
+瘧疾 > malaria;
+莊嚴 > stately;
+粗淺 > shallow;
+棲身 > stay\-at;
+平台 > terrace;
+拍賣 > auction;
+滋養 > nourish;
+解僱 > to\-fire;
+到來 > arrival;
+閒暇 > leisure;
+床側 > bedside;
+標槍 > javelin;
+疫苗 > vaccine;
+超齡 > too\-old;
+出售 > to\-sell;
+因素 > element;
+冰川 > glacier;
+闊度 > breadth;
+踐踏 > trample;
+業經 > already;
+轟擊 > bombard;
+幾個 > several;
+冰島 > iceland;
+挑舋 > provoke;
+圖畫 > drawing;
+冰山 > iceberg;
+極端 > extreme;
+農夫 > peasant;
+白晝 > daytime;
+兵戈 > weapons;
+跳躍 > to\-jump;
+療法 > therapy;
+尖頂 > steeple;
+腹部 > abdomen;
+發放 > provide;
+瘋狂 > madness;
+痲疹 > measles;
+親切 > amiable;
+工廠 > factory;
+插曲 > episode;
+血統 > lineage;
+濡濕 > moisten;
+抗議 > protest;
+絆倒 > stumble;
+糊弄 > to\-fool;
+帶動 > to\-spur;
+公式 > formula;
+災害 > scourge;
+花束 > bouquet;
+已婚 > married;
+扭轉 > reverse;
+戲院 > theater;
+痒痒 > to\-itch;
+例題 > example;
+茅屋 > cottage;
+優於 > surpass;
+機場 > airport;
+終于 > at\-last;
+模形 > pattern;
+蟋蟀 > cricket;
+信賴 > confide;
+芥末 > mustard;
+激烈 > intense;
+病症 > disease;
+冷卻 > cooling;
+桌面 > desktop;
+履行 > fulfill;
+皇帝 > emperor;
+表率 > example;
+揭幕 > opening;
+篇章 > writing;
+接替 > replace;
+機器 > machine;
+疾病 > disease;
+備用 > reserve;
+寬闊 > expanse;
+措施 > measure;
+內容 > content;
+採暖 > heating;
+相仿 > similar;
+傲然 > loftily;
+因為 > because;
+樵夫 > woodman;
+自私 > selfish;
+典型 > typical;
+茶具 > tea\-set;
+輪廓 > outline;
+糊塗 > muddled;
+榜樣 > example;
+閉塞 > stop\-up;
+表演 > perform;
+超過 > surpass;
+節目 > program;
+鑽石 > diamond;
+園林 > gardens;
+生菜 > lettuce;
+小販 > peddler;
+軌枕 > sleeper;
+白天 > daytime;
+英國 > england;
+首飾 > jewelry;
+工匠 > artisan;
+盈余 > surplus;
+俘虜 > captive;
+臂章 > armband;
+自由 > freedom;
+布丁 > pudding;
+圍攻 > besiege;
+喝采 > acclaim;
+生育 > to\-bear;
+赤道 > equator;
+高漲 > upsurge;
+門口 > doorway;
+損傷 > to\-harm;
+身材 > stature;
+英勇 > bravery;
+例證 > example;
+問題 > problem;
+寄送 > to\-send;
+傾斜 > incline;
+困擾 > perplex;
+複合 > complex;
+抄網 > dip\-net;
+百分 > percent;
+嚴正 > sternly;
+衣服 > clothes;
+或許 > perhaps;
+成語 > proverb;
+榮幸 > honored;
+漂礫 > boulder;
+馬蹬 > stirrup;
+模倣 > imitate;
+例行 > routine;
+商隊 > caravan;
+學院 > college;
+僵局 > impasse;
+捕手 > catcher;
+投票 > to\-vote;
+行李 > luggage;
+提到 > mention;
+驕矜 > haughty;
+信箱 > mailbox;
+密談 > commune;
+用盡 > exhaust;
+概念 > concept;
+停止 > to\-stop;
+元件 > element;
+地址 > address;
+國家 > country;
+孔雀 > peacock;
+鍵詞 > keyword;
+滑稽 > comical;
+商量 > consult;
+低調 > low\-key;
+按時 > on\-time;
+裝入 > to\-load;
+打算 > to\-plan;
+小結 > summary;
+小組 > a\-group;
+按摩 > massage;
+偉業 > exploit;
+質量 > quality;
+節日 > holiday;
+裁剪 > cut\-out;
+產物 > product;
+供給 > furnish;
+舞弄 > to\-wave;
+打碎 > shatter;
+拯救 > to\-save;
+在前 > forward;
+李鵬 > li\-peng;
+安設 > install;
+責難 > censure;
+島嶼 > islands;
+查調 > inquiry;
+拋棄 > discard;
+便盆 > bed\-pan;
+蠱惑 > enchant;
+假日 > holiday;
+安裝 > install;
+滲漏 > seepage;
+艦只 > warship;
+拷打 > to\-beat;
+聯邦 > federal;
+漂泊 > drifter;
+噸數 > tonnage;
+商討 > discuss;
+售賣 > to\-sell;
+香菜 > parsley;
+海鮮 > seafood;
+臥房 > bedroom;
+章節 > chapter;
+滴流 > trickle;
+疏忽 > neglect;
+僥倖 > luckily;
+懲罰 > penalty;
+傳單 > leaflet;
+香腸 > sausage;
+走私 > smuggle;
+專用 > special;
+龍蝦 > lobster;
+指定 > appoint;
+僕人 > servant;
+容納 > contain;
+侯爵 > marquis;
+椰子 > coconut;
+鑒戒 > warning;
+代詞 > pronoun;
+丹麥 > denmark;
+簡介 > summary;
+畫廊 > gallery;
+臥室 > bedroom;
+扳機 > trigger;
+衝力 > impulse;
+完美 > perfect;
+展望 > outlook;
+竊盜 > burglar;
+瑣細 > trivial;
+挪動 > to\-move;
+家禽 > poultry;
+空缺 > vacancy;
+最高 > highest;
+高原 > plateau;
+畫家 > painter;
+屈曲 > crooked;
+學者 > scholar;
+疲勞 > fatigue;
+滿手 > handful;
+不齒 > despise;
+投手 > pitcher;
+海邊 > seaside;
+把持 > control;
+噁心 > to\-hate;
+尋求 > to\-seek;
+本錢 > capital;
+膽子 > courage;
+耳語 > whisper;
+噴墨 > ink\-jet;
+之間 > between;
+有限 > limited;
+托架 > bracket;
+品質 > quality;
+本金 > capital;
+錦緞 > brocade;
+麻雀 > sparrow;
+扶持 > to\-help;
+虔誠 > sincere;
+保持 > to\-keep;
+扶手 > railing;
+最長 > longest;
+扳手 > spanner;
+便於 > easy\-to;
+海豚 > dolphin;
+愛護 > cherish;
+節儉 > thrifty;
+神體 > godhead;
+打擾 > disturb;
+中間 > betwixt;
+來歷 > history;
+感覺 > to\-feel;
+範例 > example;
+孤立 > isolate;
+當前 > current;
+層子 > stratum;
+本質 > essence;
+用字 > diction;
+聯網 > network;
+潛伏 > to\-hide;
+聯結 > to\-bind;
+管制 > control;
+促成 > procure;
+尊敬 > respect;
+安瓿 > ampoule;
+至上 > supreme;
+一項 > an\-item;
+抄寫 > to\-copy;
+贅瘤 > useless;
+清真 > islamic;
+畫兒 > picture;
+喜歡 > to\-like;
+仔細 > careful;
+屠夫 > butcher;
+上門 > drop\-in;
+學生 > student;
+獎金 > premium;
+人群 > a\-crowd;
+當今 > current;
+假使 > suppose;
+更遠 > farther;
+尋找 > to\-seek;
+併條 > drawing;
+也許 > perhaps;
+驚嚇 > horrify;
+扳子 > spanner;
+抽出 > extract;
+尷尬 > awkward;
+不錯 > correct;
+核查 > examine;
+丙酮 > acetone;
+才干 > ability;
+香水 > perfume;
+香氣 > incense;
+小心 > careful;
+成文 > written;
+吐露 > to\-tell;
+趕快 > at\-once;
+會議 > meeting;
+飛船 > airship;
+曼谷 > bangkok;
+呈送 > present;
+主詞 > subject;
+沉默 > silence;
+打字 > to\-type;
+沈默 > silence;
+跳動 > to\-beat;
+流行 > popular;
+佔有 > to\-have;
+宴會 > banquet;
+背棄 > abandon;
+領隊 > captain;
+月蝕 > eclipse;
+承受 > to\-bear;
+倉促 > hurried;
+抓傷 > scratch;
+不賴 > not\-bad;
+肥沃 > fertile;
+意義 > meaning;
+召集 > convene;
+神跡 > miracle;
+使徒 > apostle;
+清洗 > to\-wash;
+告訴 > to\-tell;
+脹大 > swollen;
+喜愛 > to\-like;
+寶寶 > darling;
+等候 > waiting;
+跌到 > to\-fall;
+懺悔 > confess;
+戶外 > outdoor;
+寬容 > lenient;
+能幹 > capable;
+不見 > not\-see;
+住房 > housing;
+耕種 > to\-till;
+戰士 > fighter;
+翡翠 > emerald;
+尊嚴 > dignity;
+密度 > density;
+尖叫 > screech;
+企業 > company;
+安撫 > placate;
+頂針 > thimble;
+核子 > nuclear;
+休會 > adjourn;
+貢物 > tribute;
+淘河 > pelican;
+飛盤 > frisbee;
+淘氣 > naughty;
+騎兵 > cavalry;
+懊惱 > annoyed;
+第七 > seventh;
+打倒 > flatten;
+促使 > spur\-on;
+風箱 > bellows;
+浴盆 > bathtub;
+群花 > blossom;
+托付 > entrust;
+栽培 > to\-grow;
+科目 > subject;
+馬子 > commode;
+越南 > vietnam;
+安慰 > comfort;
+空戰 > air\-war;
+成圈 > wreathe;
+應得 > deserve;
+戰勝 > prevail;
+不苟 > not\-lax;
+住宿 > lodging;
+贊成 > approve;
+變遷 > changes;
+未知 > unknown;
+情緒 > feeling;
+封入 > inclose;
+野貓 > wildcat;
+代替 > instead;
+案卷 > records;
+患者 > patient;
+來到 > to\-come;
+代數 > algebra;
+木瓦 > shingle;
+成功 > success;
+中立 > neutral;
+現時 > current;
+世紀 > century;
+低地 > lowland;
+海澡 > seaweed;
+含義 > meaning;
+今晚 > tonight;
+金融 > banking;
+哀求 > entreat;
+洗禮 > baptism;
+學家 > scholar;
+妓院 > brothel;
+不等 > to\-vary;
+顯示 > to\-show;
+博雅 > learned;
+青魚 > herring;
+馬具 > harness;
+名義 > titular;
+不祥 > ominous;
+消極 > passive;
+水銀 > mercury;
+暈船 > seasick;
+職工 > workers;
+日間 > daytime;
+孟子 > mencius;
+神祖 > godhead;
+曉示 > to\-tell;
+蒸餾 > distill;
+完善 > perfect;
+悲痛 > grieved;
+官司 > lawsuit;
+非難 > reproof;
+永遠 > forever;
+酬載 > payload;
+聽寫 > dictate;
+委託 > entrust;
+虧損 > deficit;
+麻煩 > trouble;
+馬上 > at\-once;
+景色 > scenery;
+祈禱 > to\-pray;
+忽視 > neglect;
+譏誚 > cynical;
+確認 > confirm;
+王權 > royalty;
+方面 > respect;
+古老 > ancient;
+企圖 > attempt;
+題目 > subject;
+污衊 > slander;
+羅盤 > compass;
+現實 > reality;
+質地 > texture;
+乾旱 > drought;
+珍愛 > cherish;
+贊助 > sponsor;
+忠誠 > devoted;
+斑駮 > mottled;
+鄭重 > serious;
+升遷 > promote;
+半途 > halfway;
+反而 > instead;
+好轉 > improve;
+王朝 > dynasty;
+惡棍 > villain;
+半路 > halfway;
+整體 > overall;
+羽毛 > feather;
+感情 > feeling;
+鼻孔 > nostril;
+哀思 > pensive;
+任務 > mission;
+愛惜 > cherish;
+猖獗 > rampant;
+果園 > orchard;
+旁邊 > lateral;
+風景 > scenery;
+鴕鳥 > ostrich;
+醜聞 > scandal;
+飽學 > learned;
+殘骸 > remains;
+文雅 > elegant;
+飛彈 > missile;
+聽力 > hearing;
+仿傚 > to\-copy;
+日誌 > journal;
+外面 > outside;
+頑皮 > naughty;
+暴烈 > violent;
+雄黃 > realgar;
+會期 > session;
+不法 > lawless;
+周末 > weekend;
+淡光 > shimmer;
+類比 > analogy;
+諺語 > proverb;
+大錯 > blunder;
+老年 > elderly;
+丟棄 > discard;
+老師 > teacher;
+變硬 > stiffen;
+海岸 > coastal;
+日蝕 > eclipse;
+礦物 > mineral;
+豹子 > leopard;
+奇蹟 > miracle;
+比較 > compare;
+奇跡 > miracle;
+以便 > so\-that;
+著陸 > landing;
+張開 > stretch;
+大都 > general;
+好處 > benefit;
+科學 > science;
+愛好 > to\-like;
+液化 > liquify;
+鄙視 > despise;
+更換 > replace;
+方言 > dialect;
+古物 > antique;
+日落 > sundown;
+神格 > godhead;
+本屆 > current;
+郵費 > postage;
+曖昧 > illicit;
+如花 > flowery;
+鞭策 > spur\-on;
+情感 > feeling;
+丹心 > loyalty;
+雄雞 > rooster;
+沿海 > coastal;
+放開 > unleash;
+繪製 > to\-draw;
+中性 > neutral;
+鄙薄 > despise;
+誹謗 > slander;
+怪物 > monster;
+復興 > restore;
+涉及 > involve;
+羨慕 > envious;
+包裹 > wrap\-up;
+著述 > writing;
+外貌 > profile;
+餅乾 > biscuit;
+有害 > harmful;
+酒精 > alcohol;
+社會 > society;
+羞愧 > ashamed;
+主導 > to\-lead;
+暴政 > tyranny;
+感到 > to\-feel;
+王國 > kingdom;
+易碎 > brittle;
+釘死 > crucify;
+顧忌 > scruple;
+愈合 > to\-heal;
+哀傷 > grieved;
+數詞 > numeral;
+詳述 > recount;
+剩餘 > surplus;
+願意 > to\-wish;
+包藏 > contain;
+玩兒 > to\-play;
+中子 > neutron;
+金橘 > kumquat;
+需要 > to\-need;
+悔恨 > remorse;
+含意 > meaning;
+最大 > biggest;
+最多 > at\-most;
+曉得 > to\-know;
+耕作 > farming;
+急流 > torrent;
+罷手 > give\-up;
+老兵 > veteran;
+老公 > husband;
+壓迫 > oppress;
+猜想 > suppose;
+中央 > central;
+隊長 > captain;
+砲臺 > battery;
+乏味 > tedious;
+𡜱 > to\-envy;
+擯除 > discard;
+編造 > compile;
+上將 > general;
+呼吸 > breathe;
+𢘸 > to\-hate;
+猜度 > surmise;
+呻吟 > to\-moan;
+物理 > physics;
+遴選 > to\-pick;
+爭端 > dispute;
+女神 > goddess;
+想像 > imagine;
+引言 > forward;
+同志 > comrade;
+包羅 > include;
+不好 > no\-good;
+讌會 > banquet;
+旅程 > journey;
+本事 > ability;
+釋放 > release;
+沒有 > haven''t;
+南瓜 > pumpkin;
+變暖 > warming;
+氣球 > balloon;
+狂暴 > frantic;
+丈夫 > husband;
+神女 > goddess;
+吊床 > hammock;
+及時 > in\-time;
+妖物 > monster;
+部署 > dispose;
+也不 > neither;
+可憐 > pitiful;
+女皇 > empress;
+增進 > promote;
+遙遠 > distant;
+遙遙 > distant;
+評論 > comment;
+一天 > one\-day;
+可愛 > amiable;
+改裝 > remodel;
+牽涉 > involve;
+阿飛 > hoodlum;
+可恨 > hateful;
+悲哀 > grieved;
+顧問 > adviser;
+天線 > antenna;
+勳績 > exploit;
+法官 > a\-judge;
+美國 > america;
+最佳 > optimum;
+幽靈 > specter;
+運轉 > to\-work;
+雷聲 > thunder;
+運輸 > transit;
+特殊 > special;
+悲劇 > tragedy;
+石膏 > plaster;
+書信 > epistle;
+度量 > measure;
+經銷 > to\-sell;
+劍術 > fencing;
+叛徒 > traitor;
+註解 > comment;
+網路 > network;
+上午 > morning;
+緒言 > preface;
+訴訟 > lawsuit;
+誇耀 > proudly;
+文章 > article;
+缺席 > absence;
+一口 > readily;
+吮吸 > to\-suck;
+七十 > seventy;
+狂怒 > furious;
+新生 > newborn;
+隱藏 > to\-hide;
+經過 > to\-pass;
+不再 > no\-more;
+隱蔽 > conceal;
+世俗 > profane;
+思想 > thought;
+年鑑 > almanac;
+改良 > improve;
+急忙 > hastily;
+繪畫 > drawing;
+比畫 > gesture;
+燈籠 > lantern;
+編著 > compile;
+警戒 > to\-warn;
+維護 > defense;
+量子 > quantum;
+猿人 > ape\-man;
+叫好 > applaud;
+類似 > similar;
+逐退 > repulse;
+碰撞 > collide;
+注入 > pour\-in;
+頂多 > at\-most;
+前言 > preface;
+非法 > illegal;
+水晶 > crystal;
+正義 > justice;
+晚宴 > banquet;
+向前 > forward;
+辯駁 > dispute;
+從此 > thence;
+鳥羽 > pinion;
+報酬 > reward;
+編者 > editor;
+誤用 > misuse;
+外甥 > nephew;
+重回 > return;
+強盜 > bandit;
+詩篇 > psalms;
+方法 > method;
+政策 > policy;
+逃走 > escape;
+警察 > police;
+法令 > decree;
+危懼 > afraid;
+罪人 > sinner;
+大炮 > cannon;
+大災 > plague;
+勃發 > thrive;
+吉他 > guitar;
+包涵 > excuse;
+毀滅 > perish;
+帶釦 > buckle;
+確實 > indeed;
+動物 > animal;
+緊縮 > reduce;
+燒焦 > scorch;
+領事 > consul;
+大浪 > billow;
+睡著 > asleep;
+變化 > change;
+氣息 > breath;
+擱置 > shelve;
+變動 > change;
+整潔 > neatly;
+旨意 > decree;
+弊病 > malady;
+選票 > a\-vote;
+剽竊 > pirate;
+編碼 > coding;
+鄉村 > rustic;
+巨頭 > tycoon;
+頂事 > useful;
+撕裂 > mangle;
+附著 > adhere;
+正當 > timely;
+怒吼 > bellow;
+奇景 > marvel;
+版式 > format;
+遠程 > remote;
+縮減 > to\-cut;
+半徑 > radius;
+磨光 > polish;
+鮭魚 > salmon;
+降臨 > befall;
+課業 > lesson;
+醜化 > defame;
+角落 > corner;
+狂人 > madman;
+時刻 > moment;
+大桶 > barrel;
+看見 > to\-see;
+緣由 > reason;
+解脫 > relief;
+破敗 > beaten;
+旗幟 > ensign;
+水壺 > kettle;
+殖民 > colony;
+旋律 > melody;
+郵政 > postal;
+靶子 > target;
+後悔 > regret;
+動機 > motive;
+厭倦 > dreary;
+徐徐 > slowly;
+內陸 > inland;
+工錢 > salary;
+公開 > public;
+原先 > former;
+八開 > octavo;
+熊熊 > raging;
+辯論 > debate;
+短歌 > ballad;
+博士 > doctor;
+奶子 > breast;
+忠告 > advice;
+砲手 > gunner;
+多星 > starry;
+律師 > lawyer;
+微妙 > subtle;
+好好 > nicely;
+總是 > always;
+開鎖 > unlock;
+步測 > pacing;
+營救 > rescue;
+敬服 > admire;
+酬勞 > reward;
+得宜 > proper;
+初級 > junior;
+輕鬆 > gentle;
+爐床 > hearth;
+謊報 > to\-lie;
+確保 > ensure;
+運用 > to\-use;
+天才 > talent;
+絲絨 > velvet;
+道理 > reason;
+攪混 > to\-mix;
+壽材 > coffin;
+解答 > answer;
+版圖 > domain;
+政權 > regime;
+很少 > seldom;
+爵士 > knight;
+襯裡 > lining;
+謙和 > meekly;
+網球 > tennis;
+荒蕪 > barren;
+包庇 > shield;
+分給 > divide;
+天性 > inborn;
+歐洲 > europe;
+勾引 > seduce;
+白銀 > silver;
+熱望 > aspire;
+精選 > chosen;
+效果 > result;
+誘拐 > abduct;
+誠懇 > hearty;
+通知 > notify;
+刺痛 > tingle;
+徵召 > enlist;
+歡樂 > gaiety;
+紫色 > purple;
+裡面 > inside;
+先鋒 > herald;
+平穩 > smooth;
+敵意 > enmity;
+巴西 > brazil;
+物件 > object;
+卸下 > unload;
+包容 > pardon;
+誘惑 > entice;
+牧人 > pastor;
+增添 > add\-to;
+外形 > figure;
+集會 > gather;
+隨機 > random;
+兵變 > mutiny;
+敏捷 > nimble;
+牛仔 > cowboy;
+提醒 > remind;
+觸犯 > offend;
+奪取 > snatch;
+夫子 > pedant;
+太子 > prince;
+採集 > gather;
+真空 > vacu\:m;
+殺害 > murder;
+殘忍 > bloody;
+閒話 > gossip;
+眼皮 > eyelid;
+細線 > string;
+辭職 > resign;
+鄙吝 > vulgar;
+線條 > streak;
+鴿子 > pigeon;
+徒勞 > futile;
+得到 > to\-get;
+轉變 > change;
+細粉 > powder;
+誠實 > honest;
+希臘 > greece;
+難得 > seldom;
+大夫 > doctor;
+數字 > number;
+濺開 > splash;
+攻打 > attack;
+遊歷 > travel;
+剛正 > honest;
+復仇 > avenge;
+階梯 > ladder;
+壓扁 > squash;
+詩意 > poetic;
+緣故 > reason;
+攝政 > regent;
+從來 > always;
+標語 > slogan;
+縮小 > reduce;
+發誓 > to\-vow;
+橡膠 > rubber;
+地鐵 > subway;
+雌性 > female;
+十一 > eleven;
+從事 > go\-for;
+熱帶 > tropic;
+雜工 > porter;
+出產 > output;
+奢侈 > luxury;
+蒙受 > suffer;
+掛鉤 > couple;
+純粹 > purely;
+夏天 > summer;
+鄙俚 > vulgar;
+鄙俗 > vulgar;
+露出 > expose;
+攀昇 > rising;
+煩擾 > bother;
+解渴 > quench;
+遺憾 > regret;
+歌手 > singer;
+巡航 > cruise;
+布線 > wiring;
+正式 > formal;
+冰箱 > icebox;
+系統 > system;
+無法 > unable;
+逕流 > runoff;
+夾克 > jacket;
+大吃 > gobble;
+毫不 > hardly;
+道教 > taoism;
+診所 > clinic;
+遺恨 > grudge;
+擴散 > spread;
+鬆餅 > muffin;
+擯斥 > reject;
+加崙 > gallon;
+奇事 > marvel;
+教堂 > church;
+詞尾 > suffix;
+週期 > period;
+零售 > retail;
+櫻桃 > cherry;
+在車 > aboard;
+茶碗 > teacup;
+緞帶 > ribbon;
+分派 > assign;
+疾馳 > gallop;
+緊急 > urgent;
+廁所 > toilet;
+度數 > degree;
+阻橈 > thwart;
+控訴 > accuse;
+搖籃 > cradle;
+著名 > famous;
+強勢 > mighty;
+紮營 > encamp;
+綁架 > kidnap;
+凹洞 > cavity;
+弱化 > weaken;
+陰戶 > vagina;
+擊敗 > defeat;
+進接 > access;
+短句 > clause;
+絕氣 > expire;
+証實 > verify;
+連擊 > batter;
+教區 > parish;
+逮捕 > arrest;
+監獄 > prison;
+火箭 > rocket;
+隱士 > hermit;
+芹菜 > celery;
+短劍 > dagger;
+芭蕉 > banana;
+強健 > sturdy;
+武器 > weapon;
+舌頭 > tongue;
+煤屑 > cinder;
+平板 > tablet;
+凹槽 > socket;
+記帳 > charge;
+刮掉 > scrape;
+陰影 > shadow;
+高雅 > dainty;
+歡喜 > joyful;
+分枝 > branch;
+削弱 > weaken;
+步哨 > sentry;
+搪瓷 > enamel;
+傳達 > convey;
+擴展 > extend;
+分會 > branch;
+激起 > arouse;
+衡量 > weight;
+骨髓 > marrow;
+搔癢 > tickle;
+雕像 > statue;
+正午 > midday;
+撫抱 > caress;
+公眾 > public;
+救主 > savior;
+粘粘 > sticky;
+歷來 > always;
+攪動 > to\-mix;
+街道 > street;
+巴爾 > baltic;
+的確 > really;
+過失 > defect;
+長短 > length;
+幫手 > helper;
+正值 > honest;
+公用 > public;
+遭受 > suffer;
+附庸 > vassal;
+目標 > target;
+適合 > to\-fit;
+高達 > attain;
+補給 > supply;
+花粉 > pollen;
+全球 > entire;
+挑選 > choose;
+遭到 > suffer;
+白痴 > idiocy;
+峽谷 > canyon;
+噪音 > rumble;
+捍衛 > defend;
+表親 > cousin;
+觀念 > notion;
+裁縫 > tailor;
+採納 > accept;
+補種 > reseed;
+允當 > proper;
+冰柱 > icicle;
+閱歷 > to\-see;
+坦白 > honest;
+防守 > defend;
+阿姨 > auntie;
+草料 > fodder;
+線上 > online;
+出席 > attend;
+驚駭 > fright;
+素描 > sketch;
+兇猛 > fierce;
+閒混 > loiter;
+摟抱 > to\-hug;
+自身 > itself;
+進口 > import;
+採礦 > mining;
+擾亂 > infest;
+結尾 > ending;
+閣樓 > garret;
+花生 > peanut;
+過份 > unduly;
+驟雨 > shower;
+幃幕 > screen;
+搶救 > rescue;
+光澤 > luster;
+搜查 > search;
+逝去 > elapse;
+光漆 > enamel;
+搭救 > rescue;
+光滑 > glossy;
+逕向 > radial;
+屏風 > screen;
+逼仄 > narrow;
+相差 > differ;
+關心 > caring;
+搖晃 > falter;
+抵達 > arrive;
+地產 > estate;
+細嫩 > tender;
+局面 > aspect;
+澱粉 > starch;
+標榜 > flaunt;
+白楊 > poplar;
+源點 > source;
+滑雪 > to\-ski;
+回絕 > rebuff;
+襪帶 > garter;
+綁住 > fasten;
+眼光 > vision;
+樣本 > sample;
+烈士 > martyr;
+精明 > astute;
+腳鐐 > fetter;
+產量 > output;
+白果 > ginkgo;
+帆布 > canvas;
+布幕 > screen;
+跳進 > plunge;
+嚴肅 > solemn;
+附上 > attach;
+抬起 > uplift;
+幾乎 > almost;
+迫切 > urgent;
+瀉湖 > lagoon;
+約定 > engage;
+簡直 > simply;
+跟進 > follow;
+光是 > solely;
+給予 > accord;
+山谷 > valley;
+報信 > notify;
+簡略 > simple;
+複數 > plural;
+白搭 > no\-use;
+巡弋 > cruise;
+機密 > secret;
+航程 > flight;
+冬天 > winter;
+援手 > succor;
+體系 > system;
+帝國 > empire;
+茶壺 > teapot;
+盟國 > allies;
+橘子 > orange;
+裁決 > ruling;
+視力 > vision;
+實體 > entity;
+發抖 > shiver;
+索取 > to\-ask;
+席卷 > engulf;
+地毯 > carpet;
+八度 > octave;
+用語 > syntax;
+市場 > market;
+城堡 > castle;
+節約 > frugal;
+甲蟲 > beetle;
+承諾 > effort;
+衛生 > health;
+長度 > length;
+補救 > remedy;
+修訂 > revise;
+師傅 > master;
+迄今 > so\-far;
+實際 > actual;
+嘗試 > to\-try;
+垂幕 > canopy;
+蠟筆 > crayon;
+冰凍 > freeze;
+侮辱 > insult;
+樣子 > manner;
+疫病 > plague;
+執事 > deacon;
+成長 > mature;
+溝道 > groove;
+農人 > farmer;
+插座 > socket;
+滾落 > tumble;
+將近 > almost;
+系列 > series;
+盈利 > profit;
+排斥 > reject;
+扮裝 > makeup;
+拉緊 > strain;
+保衛 > defend;
+融解 > molten;
+圖案 > design;
+腔調 > accent;
+走錯 > astray;
+喉頭 > throat;
+節省 > saving;
+輕微 > slight;
+圓柱 > column;
+棉花 > cotton;
+屏蔽 > screen;
+內地 > inland;
+信號 > signal;
+小貓 > kitten;
+行為 > action;
+對象 > target;
+共同 > common;
+埋伏 > ambush;
+疆界 > border;
+對話 > dialog;
+符號 > symbol;
+胸針 > brooch;
+搭乘 > embark;
+脅迫 > coerce;
+喚醒 > arouse;
+八十 > eighty;
+樣品 > sample;
+簸揚 > winnow;
+棒糖 > sucker;
+算盤 > abacus;
+簡易 > simple;
+蠟燭 > candle;
+精力 > energy;
+公共 > public;
+傳染 > infect;
+工人 > worker;
+在後 > behind;
+自然 > nature;
+滾筒 > roller;
+潤滑 > smooth;
+起訴 > to\-sue;
+蝗蟲 > locust;
+岸然 > solemn;
+傳教 > preach;
+裁定 > ruling;
+等級 > degree;
+較好 > better;
+花園 > garden;
+花圈 > wreath;
+腎臟 > kidney;
+捕拿 > arrest;
+路程 > course;
+先前 > before;
+憂鬱 > sullen;
+馬路 > street;
+穗飾 > tassel;
+倫理 > ethics;
+瑞金 > ruijin;
+抱病 > be\-ill;
+傳授 > impart;
+車庫 > garage;
+測量 > survey;
+字首 > prefix;
+魚夫 > fisher;
+粗劣 > coarse;
+花哨 > garish;
+才能 > talent;
+輕咬 > nibble;
+條紋 > stripe;
+致死 > deadly;
+嚴格 > strict;
+插入 > insert;
+漂白 > bleach;
+挫敗 > thwart;
+贖金 > ransom;
+籃子 > basket;
+行星 > planet;
+回憶 > recall;
+光亮 > bright;
+濾器 > filter;
+粗俗 > vulgar;
+穀類 > cereal;
+偵查 > detect;
+傷心 > grieve;
+容許 > permit;
+控告 > accuse;
+袖子 > sleeve;
+低語 > mutter;
+花兒 > flower;
+蜥蜴 > lizard;
+漣漪 > ripple;
+固守 > adhere;
+國外 > abroad;
+液體 > liquid;
+背誦 > recite;
+枕頭 > pillow;
+蜘蛛 > spider;
+崎嶇 > rugged;
+餑餑 > pastry;
+疲憊 > beaten;
+侍者 > waiter;
+餐飲 > repast;
+傷害 > injure;
+修理 > repair;
+何處 > whence;
+漫步 > ramble;
+信用 > credit;
+涼鞋 > sandal;
+海龜 > turtle;
+因子 > factor;
+拳擊 > boxing;
+軟化 > soften;
+安詳 > serene;
+土匪 > bandit;
+拔根 > uproot;
+扣留 > detain;
+松雞 > grouse;
+香蕉 > banana;
+高度 > height;
+構件 > member;
+商談 > confer;
+異教 > heresy;
+簡單 > simple;
+棺材 > coffin;
+地主 > a\-host;
+高山 > alpine;
+僱佣 > employ;
+飢餓 > hunger;
+生涯 > career;
+森林 > forest;
+作者 > author;
+挪威 > norway;
+尋的 > homing;
+嚴密 > strict;
+拘捕 > arrest;
+健康 > health;
+表哥 > cousin;
+朋黨 > clique;
+混血 > hybrid;
+跋涉 > trudge;
+僅僅 > barely;
+回去 > return;
+漏斗 > funnel;
+賓語 > object;
+乳頭 > nipple;
+滿期 > expire;
+理論 > theory;
+介質 > medium;
+答案 > answer;
+鑿子 > chisel;
+由於 > due\-to;
+把柄 > handle;
+和風 > breeze;
+使用 > to\-use;
+聘請 > engage;
+扶植 > foster;
+環球 > global;
+崗位 > a\-post;
+便池 > urinal;
+回來 > return;
+拓展 > expand;
+溪流 > stream;
+嚴厲 > severe;
+潛在 > hidden;
+船上 > aboard;
+宣稱 > assert;
+哀辭 > lament;
+手段 > method;
+乾酪 > cheese;
+更高 > higher;
+偌大 > so\-big;
+宣示 > to\-vow;
+小氣 > stingy;
+體制 > system;
+成熟 > mature;
+肌肉 > muscle;
+作用 > action;
+抽屜 > drawer;
+驚恐 > appall;
+把手 > handle;
+手槍 > pistol;
+家畜 > cattle;
+福音 > gospel;
+起源 > origin;
+群體 > colony;
+亂跳 > bounce;
+男巫 > wizard;
+膽大 > daring;
+安祥 > serene;
+答復 > answer;
+跟從 > follow;
+健全 > robust;
+根源 > origin;
+能源 > energy;
+本身 > itself;
+拌嘴 > bicker;
+打擊 > to\-hit;
+應當 > should;
+扣押 > detain;
+笨拙 > clumsy;
+個子 > height;
+應用 > to\-use;
+瑕疵 > stigma;
+曝露 > expose;
+海裡 > marine;
+味道 > flavor;
+手指 > finger;
+把子 > handle;
+私語 > murmur;
+養育 > foster;
+最近 > recent;
+清瘦 > meager;
+活躍 > active;
+岸上 > ashore;
+成果 > result;
+中途 > midway;
+頂點 > summit;
+暴露 > expose;
+突然 > sudden;
+木製 > wooden;
+安然 > safely;
+飢荒 > famine;
+趾尖 > tiptoe;
+束腰 > girdle;
+宮殿 > palace;
+板結 > harden;
+供應 > supply;
+信奉 > belief;
+成效 > effect;
+瓶子 > bottle;
+三重 > treble;
+客氣 > polite;
+浮著 > afloat;
+媒質 > medium;
+變黑 > darken;
+孤獨 > lonely;
+渠溝 > trench;
+胡椒 > pepper;
+浮華 > vanity;
+駁斥 > refute;
+不適 > unwell;
+羞辱 > baffle;
+留下 > remain;
+上邊 > upside;
+鏡子 > mirror;
+胡桃 > walnut;
+鏟子 > shovel;
+封建 > feudal;
+果真 > really;
+和藹 > kindly;
+鸚鵡 > parrot;
+穿洞 > pierce;
+寺廟 > temple;
+理由 > reason;
+足夠 > enough;
+蕁麻 > nettle;
+客棧 > tavern;
+寶座 > throne;
+叩頭 > kowtow;
+房客 > tenant;
+第四 > fourth;
+野餐 > picnic;
+專家 > expert;
+柳樹 > willow;
+由來 > origin;
+使得 > usable;
+漂亮 > pretty;
+嗓子 > throat;
+蜃景 > mirage;
+重音 > accent;
+反駁 > retort;
+少女 > maiden;
+由于 > due\-to;
+海綿 > sponge;
+球狀 > sphere;
+用于 > use\-in;
+應有 > proper;
+貧瘠 > barren;
+號碼 > number;
+晚飯 > supper;
+賭注 > stakes;
+神諭 > oracle;
+愚笨 > stupid;
+果然 > really;
+不要 > don''t\!;
+材積 > volume;
+扁圓 > oblate;
+黃色 > yellow;
+叮鈴 > jingle;
+第八 > eighth;
+居住 > reside;
+學校 > school;
+上衫 > blouse;
+波谷 > trough;
+上衣 > jacket;
+寶塔 > pagoda;
+客戶 > client;
+窗戶 > window;
+家庭 > family;
+重量 > weight;
+柏林 > berlin;
+有罪 > guilty;
+鍵帽 > keycap;
+小包 > packet;
+亨特 > hunter;
+積極 > active;
+打傷 > bruise;
+頁邊 > margin;
+手冊 > manual;
+寂寞 > lonely;
+海盜 > pirate;
+背後 > behind;
+牙齒 > dental;
+作家 > author;
+名言 > saying;
+普通 > common;
+耀眼 > dazzle;
+主編 > editor;
+港彎 > harbor;
+背帶 > braces;
+犯錯 > to\-err;
+聖殿 > temple;
+暴虐 > brutal;
+波蘭 > poland;
+駁回 > reject;
+成員 > member;
+想睡 > drowsy;
+星雲 > nebula;
+變軟 > soften;
+不能 > cannot;
+海狸 > beaver;
+依偎 > nestle;
+憤慨 > resent;
+懦夫 > coward;
+休惜 > recess;
+蓬鬆 > fluffy;
+可親 > kindly;
+磁鐵 > magnet;
+領袖 > leader;
+不羈 > unruly;
+校園 > campus;
+成勣 > result;
+神聖 > divine;
+中等 > medium;
+變質 > go\-bad;
+羊肉 > mutton;
+消滅 > perish;
+喉嚨 > throat;
+性質 > nature;
+吊著 > dangle;
+柱子 > pillar;
+清廉 > honest;
+危險 > danger;
+安定 > stable;
+憎惡 > loathe;
+口袋 > pocket;
+憎恨 > detest;
+喜劇 > comedy;
+寒冬 > wintry;
+貶斥 > demote;
+奮鬥 > strive;
+單位 > a\-unit;
+有用 > useful;
+球拍 > racket;
+句號 > period;
+口號 > slogan;
+穩定 > stable;
+單一 > single;
+子彈 > bullet;
+安培 > ampere;
+硬領 > collar;
+顆粒 > kernel;
+食槽 > manger;
+媒界 > medium;
+本源 > origin;
+宰割 > invade;
+背叛 > betray;
+贖回 > redeem;
+波紋 > ripple;
+窗口 > window;
+獨特 > unique;
+字尾 > suffix;
+神社 > shrine;
+蕪菁 > turnip;
+油脂 > grease;
+靛青 > indigo;
+鞠躬 > to\-bow;
+金色 > golden;
+卷軸 > scroll;
+大麥 > barley;
+鵓鴿 > pigeon;
+室內 > indoor;
+何以 > whence;
+受苦 > suffer;
+伸出 > extend;
+一瞥 > glance;
+伯勞 > shrike;
+活潑 > lively;
+斬首 > behead;
+賓客 > guests;
+匕首 > dagger;
+瑞典 > sweden;
+講道 > preach;
+鼻息 > breath;
+謙遜 > humble;
+貪心 > greedy;
+贊同 > assent;
+薄紙 > tissue;
+悶熱 > sultry;
+頒給 > confer;
+讚美 > admire;
+現存 > extant;
+餐巾 > napkin;
+以太 > ether\-;
+態度 > manner;
+奶酪 > cheese;
+狹窄 > narrow;
+瑣事 > trifle;
+老是 > always;
+蕃茄 > tomato;
+財帛 > wealth;
+預算 > budget;
+青銅 > bronze;
+忘記 > forget;
+頑童 > urchin;
+混合 > to\-mix;
+會死 > mortal;
+不然 > not\-so;
+讀者 > reader;
+洪水 > deluge;
+感慨 > lament;
+賭博 > gamble;
+事情 > affair;
+存取 > access;
+木料 > lumber;
+財富 > wealth;
+深化 > deepen;
+方針 > policy;
+頂端 > summit;
+妖言 > heresy;
+現在 > modern;
+變紅 > redden;
+名產 > staple;
+昆蟲 > insect;
+後邊 > behind;
+猖狂 > savage;
+孤兒 > orphan;
+淨化 > purify;
+後退 > recoil;
+牡蠣 > oyster;
+人士 > person;
+職務 > a\-post;
+片語 > phrase;
+民謠 > ballad;
+猛烈 > fierce;
+流星 > meteor;
+悲歎 > bewail;
+存儲 > memory;
+以前 > before;
+象徵 > emblem;
+不毛 > barren;
+不比 > unlike;
+象征 > symbol;
+毗連 > adjoin;
+大錘 > sledge;
+最新 > latest;
+治理 > govern;
+主教 > bishop;
+謙虛 > modest;
+父親 > father;
+處女 > virgin;
+賣主 > seller;
+羊毛 > fleece;
+放鬆 > loosen;
+含水 > watery;
+秘密 > secret;
+處境 > plight;
+議程 > agenda;
+狡猾 > crafty;
+王座 > throne;
+惡意 > malice;
+弄髒 > defile;
+本州 > honshu;
+嬰兒 > infant;
+薪水 > salary;
+獸性 > brutal;
+數量 > amount;
+斷言 > affirm;
+旅行 > travel;
+浪子 > loafer;
+有意 > intend;
+秋季 > autumn;
+名流 > gentry;
+台灣 > taiwan;
+不智 > unwise;
+如草 > grassy;
+故障 > glitch;
+願望 > desire;
+合法 > lawful;
+名氣 > repute;
+大路 > avenue;
+海報 > poster;
+詞頭 > prefix;
+亦即 > namely;
+哀嘆 > lament;
+王子 > prince;
+縫針 > needle;
+殯車 > hearse;
+醫生 > doctor;
+秋天 > autumn;
+人們 > people;
+暖氣 > heater;
+移動 > mobile;
+吸收 > absorb;
+意圖 > intent;
+強迫 > compel;
+顫抖 > quiver;
+緣飾 > fringe;
+中心 > center;
+悔改 > repent;
+周年 > annual;
+口渴 > thirst;
+針法 > stitch;
+消化 > digest;
+正門 > portal;
+海員 > sailor;
+二十 > twenty;
+吐根 > ipecac;
+雙重 > double;
+青苔 > lichen;
+多變 > fickle;
+沙漠 > desert;
+鉋床 > planer;
+延長 > extend;
+名望 > renown;
+取消 > cancel;
+妨礙 > hinder;
+交互 > mutual;
+那邊 > yonder;
+歸還 > return;
+劈開 > cleave;
+酒窩 > dimple;
+咖啡 > coffee;
+瞬間 > moment;
+動議 > motion;
+陰鬱 > gloomy;
+放逐 > banish;
+配稱 > worthy;
+活塞 > piston;
+未可 > cannot;
+外行 > layman;
+𥜌 > a\-coat;
+杏仁 > almond;
+碎石 > gravel;
+預期 > expect;
+更好 > better;
+愛人 > spouse;
+隆隆 > rumble;
+秉公 > justly;
+禱告 > prayer;
+更大 > bigger;
+朝向 > toward;
+九十 > ninety;
+破舊 > shabby;
+一帶 > region;
+顧客 > client;
+叢林 > jungle;
+碧玉 > jasper;
+𥥅 > a\-hole;
+只是 > merely;
+猴子 > monkey;
+𢦏 > to\-cut;
+隧道 > tunnel;
+惡化 > worsen;
+木偶 > puppet;
+會員 > member;
+一局 > inning;
+有名 > famous;
+朋友 > friend;
+菌類 > fungus;
+一對 > couple;
+硫磺 > sulfur;
+未來 > future;
+一定 > surely;
+遭遇 > befall;
+之前 > before;
+罷工 > strike;
+鄉紳 > squire;
+詭計 > deceit;
+豁免 > exempt;
+流利 > fluent;
+性格 > nature;
+活力 > energy;
+變更 > change;
+心理 > mental;
+變暗 > darken;
+牢牢 > firmly;
+風俗 > custom;
+緣起 > origin;
+記錄 > record;
+𠀉 > a\-hill;
+創辦 > launch;
+暗影 > shadow;
+隊部 > office;
+讚揚 > praise;
+乞丐 > beggar;
+過量 > excess;
+熔解 > fusion;
+隘路 > defile;
+邀請 > invite;
+循環 > circle;
+智慧 > wisdom;
+獵人 > hunter;
+恐怖 > terror;
+斑紋 > stripe;
+石英 > quartz;
+包管 > assure;
+酵母 > leaven;
+解除 > remove;
+動脈 > artery;
+最低 > lowest;
+祭司 > priest;
+特此 > hereby;
+雌蕊 > pistil;
+天篷 > canopy;
+干預 > meddle;
+化石 > fossil;
+不可 > cannot;
+水泥 > cement;
+水泡 > bubble;
+警方 > police;
+爸爸 > father;
+蓋爾 > gaelic;
+前輩 > senior;
+記起 > recall;
+三十 > thirty;
+繃簧 > spring;
+撤除 > remove;
+釦子 > button;
+彈簧 > spring;
+副詞 > adverb;
+牛油 > butter;
+課程 > course;
+年長 > senior;
+性情 > nature;
+編號 > number;
+氣泡 > bubble;
+危機 > crisis;
+不公 > unjust;
+底部 > bottom;
+不克 > cannot;
+法國 > france;
+沉思 > ponder;
+暗堡 > bunker;
+狗屋 > kennel;
+暴君 > tyrant;
+凹陷 > hollow;
+三倍 > triple;
+大眾 > people;
+霜白 > frosty;
+否則 > if\-not;
+分鐘 > minute;
+領域 > domain;
+葬禮 > burial;
+水桶 > bucket;
+撤銷 > repeal;
+合唱 > chorus;
+醫師 > doctor;
+反射 > reflex;
+不丹 > bhutan;
+敬禮 > salute;
+非洲 > africa;
+通路 > access;
+美人 > beauty;
+謀殺 > murder;
+罷免 > recall;
+言語 > speech;
+剝蝕 > denude;
+退還 > return;
+數目 > amount;
+召回 > recall;
+破爛 > ragged;
+一串 > strand;
+纖毛 > cilium;
+性子 > temper;
+追逐 > chase;
+逕賽 > track;
+靜止 > still;
+巴黎 > paris;
+年輕 > young;
+迴避 > avoid;
+蒸汽 > steam;
+權衡 > weigh;
+遊蕩 > stray;
+弄糟 > spoil;
+恩典 > grace;
+大爺 > uncle;
+日本 > japan;
+可可 > cocoa;
+可口 > tasty;
+延緩 > defer;
+編織 > weave;
+南方 > south;
+置于 > place;
+姪女 > niece;
+陷落 > slump;
+牛排 > steak;
+隱約 > vague;
+鯨魚 > whale;
+合併 > annex;
+護士 > nurse;
+泊位 > berth;
+遊艇 > barge;
+關閉 > close;
+陰莖 > penis;
+智利 > chile;
+線索 > trail;
+壓碎 > crush;
+原始 > first;
+每每 > often;
+反叛 > rebel;
+韓國 > korea;
+雙生 > twins;
+相配 > match;
+印度 > india;
+石狀 > stony;
+迅速 > rapid;
+幼蟲 > larva;
+鯊魚 > shark;
+別號 > alias;
+綠色 > green;
+引用 > quote;
+相近 > close;
+市長 > mayor;
+爐架 > grate;
+機關 > organ;
+權能 > power;
+原因 > cause;
+急劇 > rapid;
+大權 > power;
+鴉片 > opium;
+訓練 > drill;
+北方 > north;
+論文 > paper;
+放牧 > graze;
+功率 > power;
+每日 > daily;
+套房 > suite;
+違礙 > taboo;
+優點 > merit;
+徘徊 > hover;
+視覺 > sight;
+操練 > drill;
+強權 > power;
+刀葉 > blade;
+摩西 > moses;
+警備 > guard;
+課時 > class;
+彗星 > comet;
+搬運 > carry;
+青年 > youth;
+標題 > title;
+提高 > raise;
+氨基 > amino;
+夜晚 > night;
+熱氣 > steam;
+機軸 > arbor;
+醒來 > waken;
+女子 > woman;
+門閂 > latch;
+往往 > often;
+蓋子 > cover;
+靈巧 > handy;
+元音 > vowel;
+克隆 > clone;
+整整 > whole;
+匯寄 > remit;
+剁碎 > mince;
+調情 > flirt;
+地點 > place;
+敲擊 > pound;
+匆忙 > hasty;
+毛巾 > towel;
+芳香 > balmy;
+年級 > grade;
+式樣 > style;
+襯衫 > shirt;
+襯衣 > shirt;
+印刷 > print;
+散文 > prose;
+試樣 > style;
+全部 > whole;
+短暫 > short;
+西藏 > tibet;
+動搖 > waver;
+燃放 > light;
+火車 > train;
+工資 > wages;
+勇敢 > brave;
+死板 > rigid;
+矛柄 > shaft;
+長釘 > spike;
+步槍 > rifle;
+刻痕 > notch;
+優雅 > grace;
+選民 > voter;
+魔鬼 > devil;
+新娘 > bride;
+夾子 > cramp;
+謠傳 > rumor;
+新奇 > novel;
+報答 > repay;
+煤渣 > slack;
+邊框 > frame;
+花開 > bloom;
+物主 > owner;
+彈弓 > sling;
+報窩 > brood;
+擺渡 > ferry;
+電影 > movie;
+摸索 > grope;
+鬼魂 > ghost;
+速率 > speed;
+破壞 > wreck;
+約莫 > about;
+壁架 > ledge;
+階段 > stage;
+夢寐 > dream;
+延期 > delay;
+十分 > fully;
+勞工 > labor;
+團體 > group;
+地面 > floor;
+諷刺 > irony;
+白費 > waste;
+運河 > canal;
+八角 > anise;
+陰涼 > shady;
+擦洗 > scour;
+熱忱 > ardor;
+阿片 > opium;
+焙燒 > roast;
+女人 > woman;
+綠洲 > oasis;
+証明 > prove;
+相等 > equal;
+償還 > repay;
+毒品 > drugs;
+固體 > solid;
+規程 > rules;
+直立 > erect;
+僧院 > abbey;
+証據 > proof;
+推選 > elect;
+毛刷 > brush;
+鬍鬚 > beard;
+推進 > impel;
+關節 > joint;
+價錢 > price;
+切片 > slice;
+艦隊 > fleet;
+強大 > large;
+真理 > truth;
+比分 > score;
+擱板 > shelf;
+剛果 > congo;
+剪斷 > shear;
+火花 > spark;
+影像 > image;
+盜竊 > steal;
+標號 > grade;
+迷濛 > misty;
+睡椅 > couch;
+加寬 > widen;
+震動 > shake;
+說出 > utter;
+計數 > count;
+澳門 > aomen;
+推論 > infer;
+糢糊 > foggy;
+每一 > every;
+勢力 > power;
+緞布 > satin;
+動向 > trend;
+天使 > angel;
+褐色 > brown;
+鬆開 > loose;
+櫸木 > beech;
+部件 > parts;
+烘烤 > roast;
+軌道 > orbit;
+閃耀 > glint;
+臭鼬 > skunk;
+儲藏 > store;
+擦拭 > clean;
+疾風 > blast;
+攤子 > booth;
+大人 > adult;
+功夫 > skill;
+動力 > power;
+相片 > image;
+髒髒 > dirty;
+燙傷 > scald;
+均衡 > equal;
+出沒 > haunt;
+道德 > moral;
+觸摸 > touch;
+發聲 > vocal;
+長老 > elder;
+樹籬 > hedge;
+典範 > model;
+集團 > group;
+整個 > whole;
+帝王 > regal;
+強光 > glare;
+盔甲 > armor;
+軌跡 > locus;
+軌距 > gauge;
+補藥 > tonic;
+歸咎 > blame;
+敵人 > enemy;
+幽暗 > gloom;
+擔懮 > worry;
+榮譽 > honor;
+魔術 > magic;
+照射 > shine;
+搗碎 > smash;
+檸檬 > lemon;
+開端 > start;
+模糊 > vague;
+雞冠 > crest;
+光纖 > light;
+雕刻 > carve;
+骯髒 > dirty;
+切望 > crave;
+詛咒 > curse;
+標籤 > label;
+然後 > after;
+那兒 > there;
+長笛 > flute;
+精神 > vigor;
+圖表 > chart;
+轉移 > shift;
+兒童 > child;
+圍裙 > apron;
+推舉 > elect;
+停頓 > pause;
+粗糙 > crude;
+剪報 > scrap;
+髮辮 > braid;
+死亡 > death;
+規模 > scale;
+速度 > speed;
+那些 > those;
+箭頭 > arrow;
+雄偉 > grand;
+辦法 > means;
+為止 > until;
+嚴重 > grave;
+船貨 > cargo;
+長矛 > lance;
+歌劇 > opera;
+高遠 > lofty;
+凡是 > every;
+烏木 > ebony;
+舞蹈 > dance;
+粉筆 > chalk;
+絕技 > stunt;
+臉頰 > cheek;
+白癡 > idiot;
+授與 > grant;
+角度 > angle;
+發病 > onset;
+基本 > basic;
+火焰 > blaze;
+判定 > judge;
+探索 > quest;
+裂縫 > crack;
+火炬 > torch;
+填塞 > stuff;
+撰寫 > write;
+糖漿 > syrup;
+粉碎 > crash;
+陽台 > porch;
+擺動 > swing;
+押韻 > rhyme;
+型狀 > shape;
+舉起 > heave;
+割傷 > slash;
+這天 > today;
+籬笆 > fence;
+榮耀 > honor;
+遏制 > check;
+發狂 > crazy;
+別墅 > villa;
+岸邊 > shore;
+尼龍 > nylon;
+隊伍 > ranks;
+刀子 > knife;
+幅度 > width;
+橡木 > oaken;
+精液 > semen;
+床單 > sheet;
+花瓣 > petal;
+剃刀 > razor;
+凳子 > stool;
+膽量 > nerve;
+造反 > rebel;
+訓令 > order;
+再會 > adieu;
+檳子 > binzi;
+踴躍 > eager;
+兩次 > twice;
+修飾 > adorn;
+揣測 > guess;
+索引 > index;
+僵硬 > stark;
+傳聞 > rumor;
+自誇 > boast;
+摘引 > quote;
+工會 > union;
+糖果 > candy;
+裂痕 > chasm;
+火柴 > match;
+細小 > petty;
+欄位 > fence;
+驅除 > repel;
+樹林 > woods;
+小麥 > wheat;
+潛行 > sneak;
+垂死 > dying;
+樺木 > birch;
+逐出 > expel;
+巨擘 > thumb;
+紗布 > gauze;
+平原 > field;
+公會 > guild;
+田野 > field;
+濫用 > abuse;
+長椅 > bench;
+高興 > happy;
+搓揉 > knead;
+長條 > strip;
+這些 > these;
+庇佑 > bless;
+假裝 > feign;
+辮子 > plait;
+降下 > lower;
+樓梯 > stair;
+高聳 > erect;
+高聲 > aloud;
+尊魚 > trout;
+血肉 > flesh;
+盛宴 > feast;
+回答 > reply;
+簡短 > brief;
+囤積 > hoard;
+駿馬 > steed;
+榮獲 > prize;
+襪子 > socks;
+蝙魚 > bream;
+報償 > repay;
+傳神 > vivid;
+色狼 > satyr;
+探測 > probe;
+轉播 > relay;
+批量 > batch;
+駱駝 > camel;
+圖片 > image;
+冠子 > crest;
+腰部 > waist;
+皮帶 > strap;
+粗暴 > rough;
+撒但 > satan;
+小雞 > chick;
+冰塔 > serac;
+笨重 > heavy;
+輕染 > tinge;
+內心 > heart;
+腳踝 > ankle;
+排水 > drain;
+招致 > incur;
+栗鼠 > bunny;
+扒釘 > cramp;
+直到 > until;
+巫婆 > witch;
+援引 > quote;
+答詞 > reply;
+尖銳 > sharp;
+門廊 > stoop;
+偷竊 > steal;
+槓桿 > lever;
+其它 > other;
+答覆 > reply;
+烘乾 > parch;
+公尺 > meter;
+噪聲 > noise;
+盎司 > ounce;
+騎車 > cycle;
+價格 > price;
+精子 > sperm;
+地板 > floor;
+凌亂 > chaos;
+俚語 > slang;
+紅利 > bonus;
+開始 > begin;
+採摘 > pluck;
+埃及 > egypt;
+寂靜 > quiet;
+符記 > token;
+喪鐘 > knell;
+脹起 > bulge;
+背骨 > spine;
+左右 > about;
+公噸 > tonne;
+掌握 > grasp;
+生苔 > mossy;
+搖動 > shake;
+輪子 > wheel;
+騙術 > trick;
+打製 > forge;
+小說 > novel;
+腐蝕 > rusty;
+閉合 > close;
+駕車 > drive;
+滑落 > slide;
+六十 > sixty;
+公升 > liter;
+似雪 > snowy;
+胸部 > chest;
+病毒 > virus;
+技能 > skill;
+推崇 > value;
+小袋 > pouch;
+火兒 > angry;
+街段 > block;
+路線 > route;
+巨人 > giant;
+裙子 > skirt;
+抓緊 > grasp;
+血液 > blood;
+安靜 > quiet;
+手藝 > craft;
+馬達 > motor;
+閃光 > flash;
+其他 > other;
+四月 > april;
+其中 > among;
+楓樹 > maple;
+竊賊 > thief;
+滑翔 > glide;
+掃帚 > broom;
+衰敗 > decay;
+苛刻 > harsh;
+鐵砧 > anvil;
+捕捉 > catch;
+空間 > space;
+發光 > shine;
+掠奪 > harry;
+察覺 > aware;
+屋簷 > eaves;
+格言 > maxim;
+瓣膜 > valve;
+採場 > slope;
+舞會 > dance;
+圍巾 > scarf;
+寓言 > fable;
+手腕 > skill;
+被子 > quilt;
+小舌 > uvula;
+就緒 > ready;
+軀幹 > trunk;
+軀干 > trunk;
+發亮 > shine;
+手肘 > elbow;
+補品 > tonic;
+客車 > coach;
+艾姬 > aggie;
+在外 > outer;
+崇拜 > adore;
+充份 > ample;
+高明 > smart;
+漲滿 > swell;
+痛恨 > abhor;
+聲音 > voice;
+痛快 > jolly;
+接合 > joint;
+土堆 > mound;
+戲耍 > tease;
+種類 > class;
+男爵 > baron;
+固定 > fixed;
+尖細 > taper;
+均分 > split;
+花俏 > fancy;
+赫茲 > hertz;
+箭桿 > shaft;
+圍城 > siege;
+傲岸 > proud;
+致敬 > greet;
+軍團 > corps;
+鬍子 > beard;
+排列 > array;
+俏皮 > saucy;
+舞弊 > fraud;
+餅餌 > cakes;
+補丁 > patch;
+駁船 > barge;
+蜂蜜 > honey;
+漿果 > berry;
+魅力 > charm;
+胸膛 > chest;
+漂游 > drift;
+價值 > value;
+潑掉 > spill;
+興建 > build;
+資金 > funds;
+滲溝 > sewer;
+胭脂 > rouge;
+自我 > self\-;
+錯誤 > error;
+果酒 > cider;
+捷克 > czech;
+用法 > usage;
+篩子 > sieve;
+圖像 > image;
+存貨 > stock;
+高尚 > nobly;
+在下 > under;
+拍擊 > smack;
+嚮導 > guide;
+傾向 > trend;
+生氣 > angry;
+偏愛 > favor;
+害羞 > blush;
+蝸牛 > snail;
+商號 > store;
+錢袋 > purse;
+激光 > laser;
+安華 > anwar;
+峭壁 > cliff;
+捐助 > offer;
+拇指 > thumb;
+拂掃 > whisk;
+船只 > ships;
+臺子 > table;
+朝鮮 > korea;
+四十 > forty;
+抽打 > strap;
+惡魔 > demon;
+本領 > skill;
+棲息 > perch;
+流體 > fluid;
+依然 > still;
+肝臟 > liver;
+範圍 > range;
+單獨 > alone;
+修改 > amend;
+椅子 > chair;
+有風 > windy;
+把握 > grasp;
+小河 > brook;
+業主 > owner;
+驚慌 > panic;
+偉大 > great;
+主題 > theme;
+哪裡 > where;
+答應 > reply;
+一點 > a\-bit;
+學級 > class;
+當地 > local;
+稻草 > straw;
+東西 > thing;
+倉庫 > depot;
+伊索 > aesop;
+山崖 > cliff;
+笑林 > humor;
+嘴巴 > mouth;
+鐳射 > laser;
+棚子 > shack;
+吵鬧 > noisy;
+男子 > a\-man;
+股票 > share;
+棒子 > stick;
+指令 > order;
+肥碩 > stout;
+黃銅 > brass;
+棍子 > stick;
+致使 > cause;
+技巧 > skill;
+秘訣 > trick;
+拴住 > hitch;
+下面 > below;
+蠢事 > folly;
+愚蠢 > silly;
+把守 > guard;
+下雨 > rainy;
+驚奇 > amaze;
+臥位 > berth;
+噴出 > spout;
+風趣 > humor;
+尺度 > scale;
+射擊 > shoot;
+賄絡 > bribe;
+屋子 > house;
+責罵 > scold;
+腱子 > sinew;
+更遲 > later;
+黑貂 > sable;
+當中 > among;
+喬木 > arbor;
+老虎 > tiger;
+沙龍 > salon;
+保姆 > nanny;
+小徑 > alley;
+騙局 > fraud;
+對待 > treat;
+拉丁 > latin;
+琥珀 > amber;
+會談 > talks;
+脈搏 > pulse;
+產品 > goods;
+尋常 > usual;
+服裝 > dress;
+金髮 > blond;
+戲弄 > caper;
+浪花 > spray;
+小屋 > cabin;
+清潔 > clean;
+房屋 > house;
+嘎嘎 > quack;
+生動 > vivid;
+下跪 > kneel;
+小孩 > child;
+清湯 > broth;
+便士 > penny;
+房子 > house;
+耶穌 > jesus;
+鋼琴 > piano;
+騎士 > rider;
+鏈子 > chain;
+手套 > glove;
+男人 > a\-man;
+跟前 > front;
+修剪 > prune;
+寬度 > width;
+香料 > spice;
+伺服 > servo;
+滋味 > taste;
+租約 > lease;
+尖塔 > spire;
+嗶嘰 > serge;
+污點 > stain;
+法郎 > franc;
+活著 > alive;
+喜悅 > happy;
+成年 > adult;
+肅清 > purge;
+翱翔 > hover;
+孟浪 > hasty;
+黑色 > black;
+淹沒 > flush;
+秕糠 > chaff;
+第十 > tenth;
+品種 > breed;
+時髦 > vogue;
+打呼 > snore;
+桌子 > table;
+仍然 > still;
+清楚 > clear;
+餘燼 > ember;
+第六 > sixth;
+錦標 > prize;
+獨自 > alone;
+羽莖 > quill;
+桃子 > peach;
+封地 > manor;
+信任 > trust;
+作弊 > fraud;
+題解 > notes;
+保佑 > bless;
+貨物 > goods;
+寡婦 > widow;
+飲用 > drink;
+一行 > party;
+趨勢 > trend;
+狹路 > gorge;
+小吃 > snack;
+珊瑚 > coral;
+珍珠 > pearl;
+懸岩 > cliff;
+鼻煙 > snuff;
+洋蔥 > onion;
+趣劇 > farce;
+低廉 > cheap;
+哀痛 > grief;
+第五 > fifth;
+第九 > ninth;
+第三 > third;
+第一 > first;
+玻璃 > glass;
+窒息 > choke;
+有線 > wired;
+板滯 > stiff;
+打仗 > fight;
+戲劇 > drama;
+沉重 > heavy;
+沈重 > heavy;
+最終 > final;
+罪行 > crime;
+罩衫 > smock;
+你好 > hello;
+位子 > place;
+波蕩 > heave;
+走向 > trend;
+麵粉 > flour;
+妖魔 > demon;
+率直 > frank;
+明顯 > clear;
+顏色 > color;
+小丑 > clown;
+景象 > scene;
+狡詐 > craft;
+憤怒 > angry;
+貝殼 > shell;
+侍候 > serve;
+象牙 > ivory;
+商店 > store;
+喝叱 > chide;
+海灘 > beach;
+琴弦 > chord;
+獎章 > medal;
+子房 > ovary;
+蒼鷺 > heron;
+赦免 > remit;
+今日 > today;
+木版 > plank;
+神經 > nerve;
+怪誕 > freak;
+站住 > stand;
+沿著 > along;
+乾淨 > clean;
+密切 > close;
+深度 > depth;
+午餐 > lunch;
+成人 > adult;
+午飯 > lunch;
+海洋 > ocean;
+肚子 > belly;
+獵犬 > hound;
+理想 > ideal;
+鵪鶉 > quail;
+以後 > after;
+孩子 > child;
+耽擱 > tarry;
+事業 > cause;
+孢子 > spore;
+旅館 > hotel;
+奴隸 > slave;
+吊繩 > sling;
+馬來 > malay;
+馬伕 > groom;
+大鹿 > moose;
+聖徒 > saint;
+世界 > world;
+渡口 > ferry;
+減去 > minus;
+人性 > human;
+慈悲 > mercy;
+響聲 > noise;
+論題 > topic;
+卡車 > truck;
+客人 > guest;
+罌粟 > poppy;
+顯然 > clear;
+斑馬 > zebra;
+母音 > vowel;
+仙女 > fairy;
+稠密 > dense;
+套鐘 > chime;
+守候 > abide;
+洗澡 > bathe;
+板岩 > slate;
+謬誤 > error;
+風格 > style;
+洗滌 > rinse;
+一片 > piece;
+錢包 > purse;
+頭皮 > scalp;
+板子 > board;
+卑賤 > lowly;
+今天 > today;
+愛慕 > adore;
+思考 > think;
+風暴 > storm;
+升起 > hoist;
+蘋果 > apple;
+貝寧 > benin;
+謠言 > rumor;
+旋轉 > whirl;
+取笑 > tease;
+水蛭 > leech;
+語音 > voice;
+夾鉗 > tongs;
+日記 > diary;
+頒發 > issue;
+乃是 > to\-be;
+新近 > newly;
+嫌惡 > abhor;
+壁龕 > niche;
+吸氣 > sniff;
+誘陷 > snare;
+石頭 > stone;
+猜測 > guess;
+代價 > price;
+杓子 > scoop;
+感官 > sense;
+三次 > third;
+本影 > umbra;
+人員 > staff;
+一次 > first;
+續訂 > renew;
+更改 > alter;
+磨碎 > grind;
+警笛 > siren;
+習慣 > habit;
+今兒 > today;
+以下 > below;
+野獸 > beast;
+和平 > peace;
+收養 > adopt;
+怪異 > weird;
+貓咪 > kitty;
+心臟 > heart;
+沼澤 > glade;
+污穢 > nasty;
+三月 > march;
+磅秤 > scale;
+哪兒 > where;
+交叉 > cross;
+責備 > blame;
+電郵 > email;
+丟掉 > throw;
+聖人 > saint;
+勝過 > excel;
+殘酷 > cruel;
+叔父 > uncle;
+證章 > badge;
+海地 > haiti;
+最後 > final;
+正面 > front;
+雷達 > radar;
+品味 > taste;
+主幹 > trunk;
+失誤 > lapse;
+爆裂 > burst;
+邊際 > limit;
+顏料 > paint;
+狂熱 > craze;
+五十 > fifty;
+破裂 > burst;
+河流 > river;
+悲悼 > mourn;
+青草 > grass;
+木塊 > block;
+乙太 > ether;
+銳利 > sharp;
+虛偽 > false;
+本地 > local;
+東京 > tokyo;
+毒蛇 > viper;
+頌歌 > carol;
+咕嚕 > grunt;
+款項 > funds;
+一打 > dozen;
+試金 > assay;
+頭暈 > dizzy;
+徽章 > badge;
+力量 > power;
+焦點 > focus;
+鉋子 > plane;
+明白 > clear;
+王后 > queen;
+纖維 > fiber;
+事件 > event;
+逗點 > comma;
+麥子 > wheat;
+一張 > sheet;
+咆哮 > growl;
+微笑 > smile;
+碧瓦 > green;
+水盆 > basin;
+煙霧 > smoke;
+邏輯 > logic;
+音樂 > music;
+更壞 > worse;
+部落 > tribe;
+延遲 > delay;
+幽默 > humor;
+王冠 > crown;
+陷阱 > snare;
+斷絕 > sever;
+中國 > china;
+多葉 > leafy;
+一層 > layer;
+燻肉 > bacon;
+引証 > quote;
+擢陞 > exalt;
+重新 > again;
+大腿 > thigh;
+大腦 > brain;
+本人 > i\-\(me;
+祭壇 > altar;
+韻文 > verse;
+遺跡 > trace;
+那裡 > there;
+熊貓 > panda;
+斑羚 > goral;
+隆重 > grand;
+彎腰 > stoop;
+婦女 > woman;
+葡萄 > grape;
+美好 > happy;
+讀書 > study;
+獎品 > award;
+最初 > first;
+恐慌 > panic;
+麵包 > bread;
+額外 > extra;
+黏住 > cling;
+一塊 > piece;
+可怕 > awful;
+過道 > aisle;
+汁液 > juice;
+礦工 > miner;
+歌謠 > chant;
+沙拉 > salad;
+麵兒 > cover;
+斗篷 > cloak;
+之下 > under;
+月份 > month;
+水準 > level;
+女王 > queen;
+雛菊 > daisy;
+編製 > weave;
+包穀 > maize;
+快樂 > happy;
+逼迫 > force;
+如火 > fiery;
+泥土 > earth;
+媒介 > media;
+一同 > along;
+場面 > scene;
+壁虎 > gecko;
+教義 > creed;
+毛病 > fault;
+頁岩 > shale;
+金屬 > metal;
+證明 > proof;
+厭惡 > loath;
+昏暗 > dusky;
+比率 > ratio;
+奶油 > cream;
+霎眼 > blink;
+水果 > fruit;
+短簡 > brief;
+姿容 > looks;
+經費 > funds;
+視頻 > video;
+遊行 > march;
+晴天 > sunny;
+重大 > great;
+帶領 > guide;
+逕跡 > track;
+爐灶 > stove;
+時常 > often;
+強硬 > tough;
+帶露 > dewy;
+形狀 > form;
+薄命 > \(usu;
+功績 > feat;
+記號 > seal;
+見面 > meet;
+邊緣 > edge;
+暴亂 > riot;
+爛泥 > ooze;
+日期 > date;
+姨媽 > aunt;
+幽谷 > dell;
+冷靜 > calm;
+教皇 > pope;
+徵收 > levy;
+向下 > down;
+速行 > rush;
+這裡 > here;
+缺口 > nick;
+遲緩 > slow;
+氏族 > clan;
+原子 > atom;
+毛氈 > felt;
+冰雹 > hail;
+預兆 > omen;
+姑媽 > aunt;
+池子 > pond;
+姑娘 > girl;
+勻淨 > even;
+方案 > plan;
+狂吠 > howl;
+心情 > mood;
+野兔 > hare;
+鞭子 > whip;
+基金 > fund;
+妻子 > wife;
+半拉 > half;
+鯉魚 > carp;
+石片 > slab;
+必得 > must;
+冰鎮 > iced;
+池塘 > pool;
+熾熱 > glow;
+石灰 > lime;
+皮鞭 > lash;
+冷酷 > grim;
+契據 > deed;
+硬幣 > coin;
+凝視 > gaze;
+教派 > sect;
+公雞 > cock;
+角色 > role;
+纖度 > size;
+牌子 > sign;
+牛奶 > milk;
+奉承 > fawn;
+時候 > time;
+英雄 > hero;
+開闊 > wide;
+彎曲 > bend;
+課文 > text;
+長靴 > boot;
+牢固 > firm;
+百靈 > lark;
+旗子 > flag;
+女孩 > girl;
+纖小 > fine;
+年老 > aged;
+左邊 > left;
+牆壁 > wall;
+透紅 > rosy;
+數據 > data;
+詩歌 > poem;
+煮熟 > boil;
+石板 > slab;
+女士 > lady;
+忍受 > bear;
+微型 > tiny;
+邊沿 > edge;
+英里 > mile;
+樂隊 > band;
+氣味 > odor;
+無禮 > rude;
+都市 > city;
+區域 > area;
+計畫 > plan;
+燃料 > fuel;
+形式 > form;
+西薄 > cake;
+擘畫 > plan;
+煤灰 > soot;
+開辦 > open;
+敲打 > beat;
+雪撬 > sled;
+很好 > well;
+遨游 > roam;
+如同 > like;
+大廳 > hall;
+毒害 > bane;
+繩子 > cord;
+繁忙 > busy;
+細胞 > cell;
+卑劣 > base;
+復原 > heal;
+別的 > else;
+公豬 > boar;
+調子 > tune;
+勻實 > even;
+徵兆 > omen;
+揹負 > bear;
+閒談 > chat;
+眼看 > soon;
+辛苦 > hard;
+癱軟 > limp;
+面具 > mask;
+撕破 > tear;
+埋葬 > bury;
+大娘 > aunt;
+歌曲 > song;
+弧形 > arch;
+輪軸 > axle;
+帆船 > sail;
+卑下 > base;
+標識 > mark;
+帳篷 > tent;
+瘦長 > slim;
+花邊 > lace;
+填滿 > cram;
+塊狀 > lump;
+標誌 > sign;
+雹子 > hail;
+諾亞 > noah;
+規章 > rule;
+標記 > sign;
+外套 > coat;
+長襪 > hose;
+團隊 > team;
+從中 > from;
+長袍 > gown;
+雄性 > male;
+睫毛 > lash;
+強姦 > rape;
+照料 > tend;
+採邑 > fief;
+接近 > near;
+皮膚 > skin;
+掠過 > flit;
+緩慢 > slow;
+基礎 > base;
+網架 > rack;
+規矩 > rule;
+灰色 > gray;
+細看 > peer;
+遲慢 > slow;
+褪色 > fade;
+適應 > suit;
+敗壞 > ruin;
+部分 > part;
+眼淚 > tear;
+苔蘚 > moss;
+形像 > form;
+剝掉 > pare;
+郵件 > mail;
+步子 > step;
+追求 > seek;
+表露 > show;
+瞑想 > muse;
+擦掉 > wipe;
+遊戲 > game;
+節點 > node;
+夫人 > lady;
+廚師 > cook;
+捲軸 > reel;
+高飛 > soar;
+散出 > shed;
+巢穴 > lair;
+阿曼 > oman;
+廠子 > yard;
+索然 > dull;
+剛強 > firm;
+真正 > real;
+躲避 > shun;
+廚子 > cook;
+熱力 > heat;
+廣大 > vast;
+鳥嘴 > beak;
+基準 > data;
+簽証 > visa;
+鳴叫 > hoot;
+堅決 > firm;
+許多 > many;
+灰白 > grey;
+收割 > reap;
+網孔 > mesh;
+拳頭 > fist;
+歌唱 > sing;
+雜亂 > mess;
+冷淡 > cold;
+骨頭 > bone;
+剛好 > just;
+壁助 > help;
+掉落 > flop;
+詩人 > bard;
+落下 > fall;
+表象 > idea;
+陵墓 > tomb;
+舒適 > cozy;
+英畝 > acre;
+步伐 > pace;
+檔案 > file;
+簸蕩 > roll;
+帶有 > have;
+歌兒 > song;
+接縫 > seam;
+幫忙 > help;
+結成 > form;
+行走 > walk;
+冰橇 > sled;
+公牛 > bull;
+城池 > city;
+粗砂 > grit;
+公爵 > duke;
+要有 > need;
+膳食 > meal;
+躲藏 > hide;
+菜單 > menu;
+橫樑 > beam;
+術語 > term;
+遲了 > late;
+剛勁 > bold;
+衚衕 > lane;
+艾絨 > moxa;
+計劃 > plan;
+按語 > note;
+真實 > true;
+痛苦 > pain;
+花瓶 > vase;
+其次 > next;
+機智 > tact;
+傾聽 > hark;
+棕閭 > palm;
+公正 > just;
+平坦 > flat;
+臀部 > butt;
+鐘頭 > hour;
+操切 > rash;
+坦然 > calm;
+要得 > good;
+炸彈 > bomb;
+座位 > seat;
+芯片 > chip;
+回聲 > echo;
+鐵銹 > rust;
+屋頂 > roof;
+堡壘 > fort;
+具有 > have;
+這兒 > here;
+解凍 > thaw;
+生長 > grow;
+堅定 > firm;
+巴掌 > palm;
+瘢痕 > scar;
+帶子 > band;
+長槍 > pike;
+六月 > june;
+這個 > this;
+門栓 > bolt;
+蠕蟲 > worm;
+僱用 > hire;
+圓盤 > disk;
+地獄 > hell;
+阿們 > amen;
+蠕虫 > worm;
+盤子 > tray;
+筆錢 > fund;
+路邊 > curb;
+灌木 > bush;
+視圖 > view;
+撇去 > skim;
+農奴 > serf;
+城市 > city;
+堅固 > firm;
+小馬 > colt;
+兵戎 > arms;
+光束 > beam;
+標明 > mark;
+複本 > copy;
+蟾蜍 > toad;
+農場 > farm;
+盒子 > case;
+國王 > king;
+帳單 > bill;
+草坪 > lawn;
+草地 > lawn;
+搶奪 > snap;
+血管 > vein;
+軍火 > arms;
+跛足 > lame;
+房間 > room;
+規劃 > plan;
+腳跟 > heel;
+跡象 > mark;
+規則 > rule;
+公平 > fair;
+鎮靜 > calm;
+價款 > cost;
+樣式 > type;
+損害 > harm;
+模式 > mode;
+盟友 > ally;
+兜帽 > hood;
+巨大 > huge;
+工夫 > work;
+疼痛 > ache;
+跳蚤 > flea;
+樓廂 > loft;
+膝蓋 > knee;
+修補 > mend;
+屁話 > shit;
+灰塵 > dust;
+偷看 > peep;
+模子 > mold;
+疤痕 > scar;
+地方 > area;
+兔子 > hare;
+小路 > lane;
+鏈路 > link;
+甘蔗 > cane;
+掌擊 > slap;
+差勁 > poor;
+低音 > bass;
+溜走 > slip;
+甜菜 > beet;
+捲曲 > curl;
+測驗 > test;
+用膳 > dine;
+笑話 > joke;
+山羊 > goat;
+競賽 > race;
+笨蛋 > fool;
+岩石 > rock;
+公告 > post;
+工具 > tool;
+甚至 > even;
+略碼 > code;
+跌落 > fall;
+潮濕 > damp;
+較少 > less;
+百合 > lily;
+腰肉 > loin;
+地帶 > zone;
+表格 > form;
+閣下 > sire;
+龍骨 > keel;
+轉動 > turn;
+其余 > rest;
+潮流 > tide;
+保羅 > paul;
+色彩 > tint;
+嘲笑 > jeer;
+潮汐 > tide;
+捲帶 > tape;
+啤酒 > beer;
+潛水 > dive;
+鍍金 > gild;
+小船 > boat;
+什麼 > what;
+指標 > norm;
+衝撞 > dash;
+岩漿 > lava;
+握住 > grip;
+地域 > area;
+鼴鼠 > mole;
+製作 > make;
+土壤 > soil;
+小羊 > lamb;
+接吻 > kiss;
+良好 > good;
+策略 > plot;
+衰弱 > weak;
+漩渦 > eddy;
+土地 > land;
+亞麻 > flax;
+哺養 > feed;
+圈套 > trap;
+籃圈 > ring;
+鏈結 > link;
+膽汁 > gall;
+地區 > area;
+柔軟 > soft;
+漏洞 > hole;
+採伐 > fell;
+當時 > then;
+借款 > loan;
+袖口 > cuff;
+招收 > hire;
+現金 > cash;
+香草 > herb;
+嚴峻 > grim;
+疹子 > rash;
+秘魯 > peru;
+稅關 > pike;
+生活 > life;
+僧侶 > monk;
+打獵 > hunt;
+拖拉 > haul;
+拱形 > arch;
+抱有 > have;
+圍住 > gird;
+棍棒 > club;
+聲譽 > fame;
+自己 > self;
+拍打 > flap;
+拍手 > clap;
+債務 > debt;
+聽見 > hear;
+飾釘 > stud;
+小牛 > calf;
+血塊 > gore;
+浪頭 > wave;
+偏差 > bias;
+傾倒 > pour;
+骰子 > dice;
+負載 > load;
+折斷 > snap;
+老闆 > boss;
+聖詩 > hymn;
+催促 > urge;
+鋪設 > pave;
+租金 > rent;
+打死 > kill;
+風險 > risk;
+枯萎 > wilt;
+用戶 > user;
+浸透 > soak;
+疲倦 > tire;
+膠帶 > tape;
+賢能 > sage;
+海軍 > navy;
+臭味 > fume;
+偶像 > idol;
+手杖 > cane;
+海豹 > seal;
+跨度 > span;
+溫暖 > warm;
+季節 > time;
+果肉 > pulp;
+小時 > hour;
+投射 > dart;
+黃金 > gold;
+命運 > fate;
+字節 > byte;
+海角 > cape;
+嘆息 > sigh;
+唧筒 > pump;
+略去 > omit;
+哺育 > feed;
+羅馬 > rome;
+考試 > exam;
+手掌 > palm;
+肥皂 > soap;
+意見 > view;
+倍塔 > beta;
+尾巴 > tail;
+贅疣 > wart;
+悠閒 > ease;
+伯爵 > earl;
+周遊 > tour;
+梨子 > pear;
+尺寸 > size;
+頸項 > neck;
+琵琶 > lute;
+案文 > text;
+膠卷 > film;
+銀行 > bank;
+游泳 > swim;
+虧缺 > wane;
+借出 > lend;
+富有 > rich;
+係小 > tiny;
+品脫 > pint;
+宗派 > sect;
+不遜 > rude;
+馴服 > tame;
+不過 > only;
+不遂 > fail;
+尖峰 > peak;
+滾動 > roll;
+貧窮 > poor;
+小島 > isle;
+主要 > main;
+束縛 > bind;
+束緊 > gird;
+薄霧 > mist;
+清澈 > fair;
+策劃 > plot;
+豬肉 > pork;
+何時 > when;
+容易 > easy;
+下跌 > fall;
+黃蜂 > wasp;
+口頭 > oral;
+罰金 > fine;
+令狀 > writ;
+蕨類 > fern;
+費用 > cost;
+告誡 > warn;
+蘆葦 > reed;
+抓住 > grab;
+板皮 > slab;
+脆弱 > weak;
+核心 > core;
+頭部 > head;
+格式 > form;
+深深 > deep;
+決鬥 > duel;
+豆腐 > tofu;
+懶惰 > idle;
+滴下 > drip;
+扁坯 > slab;
+例子 > case;
+咒罵 > damn;
+脖子 > neck;
+同輩 > peer;
+玩笑 > joke;
+藤蔓 > vine;
+侍女 > maid;
+蜂房 > hive;
+戒子 > ring;
+滑倒 > slip;
+溶化 > melt;
+游戲 > game;
+學期 > term;
+馬廄 > barn;
+亞當 > adam;
+翅膀 > wing;
+伊朗 > iran;
+主義 > \-ism;
+麥芽 > malt;
+密室 > cell;
+狹谷 > glen;
+窩巢 > nest;
+牡鹿 > hart;
+風箏 > kite;
+名詞 > noun;
+存根 > stub;
+時間 > time;
+派系 > sect;
+現款 > cash;
+碼頭 > dock;
+釀造 > brew;
+藍色 > blue;
+安息 > rest;
+聖歌 > hymn;
+飽滿 > full;
+哭泣 > weep;
+食物 > food;
+慾望 > lust;
+史詩 > epic;
+一般 > same;
+小丘 > hill;
+情節 > plot;
+穿帶 > wear;
+休息 > rest;
+須要 > must;
+松樹 > pine;
+薔薇 > rose;
+亞洲 > asia;
+家園 > home;
+憐憫 > pity;
+暗藏 > hide;
+牛飲 > gulp;
+賺得 > earn;
+資料 > data;
+豎琴 > harp;
+一群 > gang;
+果斷 > firm;
+種族 > race;
+黑痣 > mole;
+音調 > tone;
+洞穴 > cave;
+板條 > lath;
+上絃 > wind;
+哀泣 > wail;
+貴族 > lord;
+哈欠 > yawn;
+浪潮 > wave;
+禮物 > gift;
+各自 > each;
+豬油 > lard;
+錫安 > zion;
+獵物 > prey;
+快速 > fast;
+靈魂 > soul;
+犯規 > foul;
+宰制 > rule;
+乃爾 > thus;
+飼料 > feed;
+油膏 > balm;
+班房 > jail;
+龐大 > huge;
+港口 > port;
+斑點 > spot;
+一碗 > bowl;
+大麻 > hemp;
+浮標 > buoy;
+想法 > idea;
+家伙 > chap;
+交接 > join;
+後面 > rear;
+天鵝 > swan;
+會漏 > leak;
+整齊 > tidy;
+昇起 > rise;
+商品 > good;
+卑鄙 > base;
+犄角 > horn;
+母馬 > mare;
+字型 > font;
+安全 > safe;
+種子 > seed;
+孤單 > lone;
+程式 > form;
+木桶 > cask;
+羹湯 > soup;
+印證 > seal;
+木板 > slab;
+吹牛 > brag;
+木材 > wood;
+飾帶 > sash;
+老撾 > laos;
+朦朧 > blur;
+靠近 > near;
+虛弱 > weak;
+消息 > news;
+課題 > task;
+期望 > hope;
+深厚 > deep;
+主機 > core;
+鼻子 > nose;
+珠子 > bead;
+旅遊 > trip;
+穩健 > firm;
+部隊 > army;
+上漲 > rise;
+泰然 > calm;
+齧咬 > gnaw;
+稀少 > rare;
+黑暗 > dark;
+波特 > baud;
+野禽 > fowl;
+暈眩 > daze;
+奔逃 > flee;
+黎明 > dawn;
+治癒 > cure;
+意思 > idea;
+某些 > some;
+意念 > idea;
+繁雜 > many;
+意志 > will;
+稱呼 > call;
+書桌 > desk;
+強風 > gale;
+雄鹿 > buck;
+麻木 > numb;
+會晤 > meet;
+黃昏 > dusk;
+項目 > item;
+韁繩 > rein;
+唯一 > only;
+雲雀 > lark;
+燒開 > boil;
+穀倉 > barn;
+李子 > plum;
+職位 > post;
+野生 > wild;
+否決 > veto;
+沙發 > sofa;
+波浪 > wave;
+一樣 > same;
+他們 > they;
+泡沫 > foam;
+步驟 > step;
+老婆 > wife;
+主意 > plan;
+青蛙 > frog;
+本子 > book;
+牛肉 > beef;
+豐富 > rich;
+七月 > july;
+銷售 > sell;
+上昇 > rise;
+哎呀 > damn;
+鞭笞 > flog;
+一服 > dose;
+天賦 > gift;
+談話 > talk;
+豆子 > bean;
+媽媽 > mama;
+同樣 > same;
+磚瓦 > tile;
+敏銳 > keen;
+油油 > oily;
+波束 > beam;
+包裝 > pack;
+法案 > bill;
+污痕 > blot;
+鉤子 > hook;
+印章 > seal;
+靜脈 > vein;
+知道 > know;
+猛撞 > slam;
+遼闊 > vast;
+故鄉 > home;
+面罩 > veil;
+從而 > thus;
+忙碌 > busy;
+鞭痕 > welt;
+邊鋒 > wing;
+酸痛 > ache;
+廣闊 > wide;
+神情 > look;
+亞丁 > aden;
+獨奏 > solo;
+沐浴 > bath;
+最好 > best;
+猖披 > wild;
+咀嚼 > chew;
+外袍 > robe;
+誓詞 > oath;
+動詞 > verb;
+玩偶 > doll;
+誓言 > oath;
+薄暮 > dusk;
+纖細 > fine;
+下巴 > chin;
+新聞 > news;
+獅子 > lion;
+更多 > more;
+增長 > grow;
+只有 > only;
+呆子 > fool;
+暴徒 > thug;
+汽水 > soda;
+面積 > area;
+命名 > name;
+段落 > part;
+短襪 > sock;
+引證 > cite;
+鈕帶 > bond;
+前面 > fore;
+陣風 > gust;
+編輯 > edit;
+死記 > cram;
+惡劣 > vile;
+流動 > flow;
+會合 > meet;
+毛線 > yarn;
+北約 > nato;
+重擊 > bang;
+派出 > send;
+𠱃 > thin;
+池沼 > pool;
+步調 > gait;
+繩索 > rope;
+通風 > airy;
+恐懼 > fear;
+碎片 > chip;
+線路 > line;
+一套 > suit;
+卡片 > card;
+類型 > type;
+包紮 > bind;
+中午 > noon;
+武裝 > arms;
+薄弱 > weak;
+一堆 > pile;
+變換 > vary;
+蒼白 > pale;
+水滴 > drop;
+緩解 > ease;
+有些 > some;
+月亮 > moon;
+年頭 > year;
+礦山 > mine;
+道路 > road;
+洗刷 > wash;
+陸軍 > army;
+收藏 > keep;
+擠進 > tuck;
+上司 > boss;
+領導 > lead;
+水池 > pond;
+電線 > wire;
+一吹 > puff;
+毛皮 > pelt;
+烏鴉 > crow;
+勞累 > toil;
+運費 > fare;
+壁虱 > tick;
+撥開 > poke;
+設計 > plan;
+迷陣 > maze;
+吝嗇 > mean;
+一半 > half;
+頂峰 > peak;
+藥丸 > pill;
+星期 > week;
+水槽 > sink;
+缺少 > lack;
+世仇 > feud;
+撞鎖 > lock;
+鞭撻 > lash;
+陰謀 > plot;
+厭恨 > hate;
+遇見 > meet;
+明星 > star;
+不一 > vary;
+謀求 > seek;
+露營 > camp;
+毒物 > pest;
+暖和 > warm;
+一些 > some;
+鞭打 > whip;
+叫囂 > hoot;
+為首 > head;
+求愛 > woo;
+同位 > par;
+露水 > dew;
+受到 > get;
+可以 > can;
+酒廊 > bar;
+博得 > win;
+及其 > and;
+石油 > oil;
+時代 > age;
+毯子 > rug;
+年紀 > age;
+套子 > cap;
+破布 > rag;
+魚鰭 > fin;
+強拉 > tug;
+經由 > via;
+墨水 > ink;
+設法 > try;
+間諜 > spy;
+眼睛 > eye;
+此時 > now;
+如何 > how;
+終端 > end;
+眼界 > ken;
+幼獸 > cub;
+離子 > ion;
+焦油 > tar;
+退潮 > ebb;
+火腿 > ham;
+陰暗 > dim;
+緊抱 > hug;
+總和 > sum;
+規率 > law;
+隱密 > sly;
+砍伐 > hew;
+刺探 > pry;
+芸芸 > all;
+色調 > hue;
+假髮 > wig;
+途徑 > way;
+前夕 > eve;
+堅果 > nut;
+先生 > sir;
+欄圈 > pen;
+橡樹 > oak;
+茶杯 > cup;
+親屬 > kin;
+拖車 > tow;
+填充 > pad;
+帽子 > hat;
+搖擺 > wag;
+眼前 > now;
+刀口 > cut;
+樅樹 > fir;
+用途 > use;
+甜酒 > rum;
+眼下 > now;
+出價 > bid;
+襯墊 > pad;
+傳真 > fax;
+苦惱 > ail;
+腳趾 > toe;
+拖船 > tow;
+骨罈 > urn;
+發怒 > mad;
+軟毛 > fur;
+臂膀 > arm;
+輕打 > tap;
+搶劫 > rob;
+兒子 > son;
+扯裂 > rip;
+小費 > tip;
+榆樹 > elm;
+啜飲 > sip;
+工作 > job;
+援助 > aid;
+肋骨 > rib;
+蝙蝠 > bat;
+龍頭 > tap;
+手臂 > arm;
+混雜 > mix;
+地圖 > map;
+鬆弛 > sag;
+生病 > ill;
+袋子 > bag;
+餡餅 > pie;
+射線 > ray;
+鋤頭 > hoe;
+鋸開 > saw;
+老鼠 > rat;
+果醬 > jam;
+衣夾 > peg;
+圍兜 > bib;
+拖把 > mop;
+么點 > ace;
+小狗 > pup;
+貨車 > van;
+戰爭 > war;
+點頭 > nod;
+肥胖 > fat;
+對準 > aim;
+噴射 > jet;
+傢伙 > guy;
+舉動 > act;
+麋鹿 > elk;
+木釘 > peg;
+瓦斯 > gas;
+驢子 > ass;
+男孩 > boy;
+所有 > all;
+鑰匙 > key;
+哼聲 > hum;
+久遠 > old;
+飛蟲 > bug;
+筆尖 > nib;
+麥酒 > ale;
+修女 > nun;
+便帽 > cap;
+會費 > due;
+尼姑 > nun;
+乾草 > hay;
+借債 > owe;
+懇求 > beg;
+屢加 > ply;
+飛翔 > fly;
+扇子 > fan;
+腐壞 > rot;
+空氣 > air;
+但是 > but;
+藝術 > art;
+安放 > lay;
+嗚咽 > sob;
+染料 > dye;
+付款 > pay;
+不良 > bad;
+贏得 > win;
+頌詞 > ode;
+乾燥 > dry;
+告終 > end;
+汽車 > car;
+海灣 > bay;
+耳朵 > ear;
+位元 > bit;
+五月 > may;
+何人 > who;
+燕麥 > oat;
+氣車 > bus;
+末期 > end;
+母雞 > hen;
+哀愁 > sad;
+礦石 > ore;
+哀怨 > sad;
+太陽 > sun;
+怕羞 > coy;
+杯子 > cup;
+謊話 > lie;
+謊言 > lie;
+零頭 > odd;
+任何 > any;
+淨值 > net;
+奔跑 > run;
+奔走 > run;
+流感 > flu;
+哎喲 > hey;
+現今 > now;
+暗淡 > dim;
+是的 > yes;
+一排 > row;
+方舟 > ark;
+新興 > new;
+上帝 > god;
+而今 > now;
+可是 > but;
+汽油 > gas;
+爆聲 > pop;
+罪惡 > sin;
+收費 > fee;
+母羊 > ewe;
+法律 > law;
+怎樣 > how;
+雞蛋 > egg;
+不善 > bad;
+鰻魚 > eel;
+天空 > sky;
+悲傷 > sad;
+床鋪 > bed;
+並且 > and;
+別針 > pin;
+縫紉 > sew;
+一切 > all;
+通通 > all;
+平鍋 > pan;
+放置 > put;
+年邁 > old;
+母牛 > cow;
+如果 > if;
+還是 > or;
+的話 > if;
+光碟 > cd;
+要是 > if;
+若是 > if;
+嚇聲 > ho;
+或者 > or;
+我的 > my;
+假如 > if;
+我們 > we;
+啊呀 > oh;
+斧頭 > ax;
+一但 > if;
+一個 > a;
+㡎 > the\-long\-bands\-or\-ribbons\-attrached\-to\-flags\-and\-banners\-the\-feather\-decorected\-carriages\-or\-dresses;
+郯 > name\-of\-a\-small\-ancient\-principality\-which\-was\-situated\-in\-what\-is\-now\-part\-of\-shantung\-and\-kiangsu;
+䐞 > the\-thin\-membrane\-between\-skin\-and\-flesh\-that\-protects\-internal\-organs\-or\-tissues\-in\-the\-human\-body;
+珪 > a\-jade\-table\-conferred\-upon\-feudal\-princes\-by\-the\-emperor\-as\-a\-symbol\-of\-dignity\-and\-authority;
+㺺 > a\-very\-precious\-piece\-of\-jade\-worn\-by\-ancient\-emperors\-to\-match\-tables\-borne\-by\-the\-nobles;
+䀘 > to\-cover\-the\-line\-of\-vision\-or\-sight\-\-\-the\-straight\-line\-between\-an\-object\-and\-one''s\-eyes;
+㨧 > wooden\-stick\-or\-bamboo\-cane\-used\-to\-support\-the\-covering\-of\-a\-carriage\-in\-ancient\-times;
+㔣 > in\-ancient\-times\-to\-fight\-against\-the\-enemy\-by\-pushing\-down\-the\-big\-rocks\-from\-up\-high;
+䚫 > ornamental\-articles\-made\-of\-horns\-used\-to\-decorate\-the\-top\-of\-a\-stick\-or\-horsewhip;
+笐 > bamboos\-placed\-across\-wooden\-frames\-on\-which\-grain\-may\-be\-stored\-in\-damp\-climates;
+䣞 > name\-of\-an\-ancient\-state\-which\-occupied\-the\-site\-of\-the\-present\-province\-of\-hubei;
+䇶 > a\-small\-rafters\-made\-of\-bamboo\-which\-project\-form\-the\-eaves\-and\-support\-the\-tiles;
+賨 > tribute\-paid\-in\-cloth\-by\-the\-tribes\-in\-szechwan\-and\-yunnan\-under\-the\-han\-dynasty;
+禫 > sacrifice\-offered\-at\-the\-end\-of\-the\-three\-years''\-mourning\-the\-death\-of\-a\-parent;
+䂩 > an\-in\-slab\-or\-ink\-stone\-sound\-of\-pebbles\-or\-stones\-rubbing\-or\-knocking\-together;
+䂍 > a\-kind\-of\-weapon\-carried\-by\-the\-honor\-guard\-before\-the\-emperor\-in\-ancient\-times;
+衈 > the\-blood\-of\-a\-sacrificial\-fowl\-which\-was\-sprinkled\-on\-the\-doors\-and\-vessels;
+㯩 > to\-put\-the\-growing\-up\-silkworms\-in\-different\-frames\-according\-to\-their\-sizes;
+㚳 > a\-lady\-teacher\-to\-teach\-the\-proper\-rules\-of\-female\-behavior\-in\-ancient\-times;
+絥 > to\-harness\-a\-horse\-a\-board\-in\-front\-of\-a\-carriage\-for\-the\-driver\-to\-lean\-on;
+䋭 > to\-weave\-silk\-fabrics\-with\-green\-color\-for\-longitude\-and\-white\-for\-latitude;
+㭼 > a\-rectangle\-shaped\-peg\-or\-short\-post\-between\-the\-beans\-and\-the\-roof\-timbers;
+瑄 > a\-ornamental\-piece\-of\-jade\-several\-inches\-across\-with\-a\-hole\-in\-the\-center;
+䬤 > to\-put\-the\-thick\-soup\-or\-broth\-on\-top\-of\-the\-rice\-thick\-congee\-or\-porridge;
+䥯 > a\-farm\-tool\-to\-crush\-the\-clod\-of\-earth\-into\-pieces\-and\-make\-the\-land\-flat;
+䍖 > a\-kind\-of\-net\-equipted\-with\-tricky\-machine\-used\-to\-catch\-birds\-and\-beasts;
+䎭 > a\-kind\-of\-farm\-tool\-made\-of\-twisted\-thron\-strips\-used\-to\-flaten\-the\-land;
+筓 > a\-hairpin\-on\-which\-the\-hair\-is\-bound\-at\-the\-back\-of\-the\-head\.\-15\-of\-age;
+㮲 > a\-small\-ring\-or\-a\-small\-piece\-of\-board\-attached\-to\-the\-muzzle\-of\-an\-ox;
+䵻 > a\-small\-tripod\-of\-bronze\-with\-two\-ears\-tripod\-of\-bronze\-with\-two\-ears;
+玠 > large\-jade\-tablet\-used\-by\-officials\-at\-court\-to\-indicate\-their\-ranks;
+䂜 > rocky\-fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade\-to\-collapse;
+㡆 > an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+㡃 > an\-artisan\-to\-soften\-raw\-silk\-by\-boiling\-and\-to\-dye\-the\-dressed\-silk;
+裎 > to\-take\-off\-the\-clothes\-and\-expose\-the\-body\.\-to\-carry\-in\-the\-girdle;
+鎋 > the\-linch\-pin\-of\-a\-wheel\-to\-govern\-or\-control\-the\-noise\-of\-a\-barrow;
+䪐 > something\-made\-of\-bamboo\-put\-in\-the\-bow\-case\-to\-pretect\-from\-damage;
+䇭 > containers\-made\-of\-thin\-and\-long\-strip\-of\-bamboo\-or\-willow\-branches;
+㟬 > a\-mountain\-in\-today''s\-shandong\-province\-southwest\-of\-mengyin\-county;
+㚥 > to\-become\-associated\-with\-each\-other\-in\-good\-manners\-and\-politeness;
+䤞 > a\-kind\-of\-weapons\-held\-by\-the\-officials\-in\-attendance\-in\-old\-times;
+㹫 > a\-kind\-of\-animal\-generally\-called\-for\-minority\-groups\-in\-old\-china;
+㳻 > a\-bank\-of\-earth\-or\-an\-embankment\-to\-block\-the\-current\-of\-the\-water;
+㯢 > a\-piece\-of\-cross\-wise\-board\-used\-for\-frame\-on\-which\-silkworms\-spin;
+䃘 > simple\-and\-crude\-the\-sound\-of\-pebbles\-or\-stones\-knocking\-together;
+㰱 > to\-smear\-the\-mouth\-with\-the\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+獯 > a\-tribe\-of\-scythians\-which\-invaded\-china\-during\-the\-hsia\-dynasty;
+鞔 > sides\-or\-uppers\-of\-shoes\-to\-stretch\-a\-skin\-on\-a\-frame\-for\-a\-drum;
+䕽 > the\-rhododendron\-\-\-\-it\-is\-said\-to\-cause\-sheep\-to\-stagger\-and\-die;
+郜 > name\-of\-fief\-in\-shantong\-bestowed\-on\-the\-eldest\-son\-of\-wen\-wang;
+䍿 > a\-kind\-of\-dance\-accompanied\-by\-music\-performed\-in\-ancient\-times;
+䌞 > a\-knot\-to\-hang\-the\-apparatus\-made\-of\-reed\-for\-raising\-silkworms;
+䇉 > capacity\-unit\-in\-france\-equal\-to\-one\-hundred\-times\-of\-one\-litre;
+㽈 > a\-large\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㹐 > to\-tow\-a\-boat\-against\-the\-current\-in\-swift\-stream\-from\-the\-bank;
+沅 > name\-of\-a\-river\-in\-western\-hunan\-that\-flows\-into\-dongting\-lake;
+簋 > a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+鷴 > silver\-pheasant\-badge\-worn\-by\-civil\-officials\-of\-the\-5th\-grade;
+蟕 > a\-species\-of\-tortoise\-found\-near\-the\-mouth\-of\-the\-yellow\-river;
+㬆 > posthumous\-title\-conferred\-upon\-emperors\-and\-eminent\-officials;
+㔳 > a\-square\-basket\-of\-bamboo\-for\-holding\-grain\-used\-at\-sacrifices;
+鞝 > the\-piece\-of\-leather\-used\-for\-soles\-on\-chinese\-shoes\.\-a\-patch;
+蔛 > a\-small\-orchid\-like\-plant\-it\-bears\-white\-flowers\-a\-dendrobium;
+䰙 > an\-ancient\-unit\-of\-capacity\-with\-three\-feet\-and\-a\-big\-opening;
+䔹 > a\-fungus\-which\-grows\-on\-rotten\-plants\-and\-is\-eaten\-when\-fresh;
+㯣 > a\-kind\-of\-fragrant\-tree\-used\-to\-produce\-perfume\-by\-burning\-it;
+㯡 > to\-lacquer\-some\-kind\-of\-ashes\-on\-wooden\-articals\-or\-furniture;
+峋 > ranges\-of\-hills\-stretching\-on\-beyond\-another\-irregular\-peaks;
+歃 > smear\-one''s\-mouth\-with\-blood\-of\-a\-victim\-when\-taking\-an\-oath;
+羗 > tribes\-in\-west\-china\-strong\.\-educated\.\-obstinate\.\-a\-particle;
+丣 > ancient\-form\-of\-the\-tenth\-of\-the\-twelve\-terrestrial\-branches;
+䡅 > something\-used\-to\-bind\-the\-frame\-work\-in\-a\-cart\-of\-old\-times;
+䚨 > a\-string\-fastened\-to\-an\-arrow\-to\-draw\-it\-back\-after\-shooting;
+䎠 > to\-twist\-or\-to\-crumple\-between\-hands\-and\-make\-something\-turn;
+㟹 > the\-appearance\-of\-a\-mountain\-is\-lofty\-and\-steep\-and\-profound;
+㝸 > a\-conical\-cap\-worn\-on\-ceremonious\-occasions\-in\-ancient\-times;
+㙨 > the\-royal\-domains\-set\-apart\-in\-ancient\-times\-for\-the\-emperor;
+衩 > the\-open\-seam\-of\-a\-garment\-which\-allows\-freedom\-of\-movement;
+屺 > a\-hill\-with\-trees\-or\-grass\-\-\-some\-give\-the\-opposite\-meaning;
+䶦 > upper\-and\-lower\-teeth\-in\-order\-and\-corresponding\-each\-other;
+䧂 > to\-turn\-over\-the\-clod\-of\-the\-earth\-with\-a\-shovel\-or\-a\-spade;
+噞 > the\-movement\-of\-a\-fish''s\-mouth\-at\-the\-surface\-of\-the\-water;
+唵 > used\-in\-buddhist\-texts\-to\-transliterate\-non\-chinese\-sounds;
+䠂 > name\-of\-a\-powerful\-feudal\-state\-which\-existed\-740\-330\-b\.c\.;
+䖶 > to\-raise\-up\-the\-nose\-in\-order\-to\-get\-the\-bugs\-in\-the\-earth;
+䄛 > service\-or\-rites\-of\-offering\-sacrifices\-for\-drink\-and\-food;
+㼰 > an\-earthenware\-jar\-with\-a\-small\-mouth\-and\-two\-or\-four\-ears;
+㸖 > hide\-or\-to\-keep\-in\-store\-the\-vegetable\-in\-cold\-winter\-days;
+㷟 > to\-scald\-the\-bristles\-off\-a\-pig\-or\-the\-feathers\-off\-a\-bird;
+㰇 > the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㮞 > the\-square\-peck\-shaped\-box\-half\-way\-up\-a\-chinese\-flagstaff;
+㦼 > a\-wooden\-piles\-used\-as\-a\-cable\-to\-make\-immovable\-of\-a\-boat;
+㢧 > a\-book\-or\-painting\-which\-can\-be\-easily\-folded\-or\-rolled\-up;
+钲 > kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+鉦 > kind\-of\-gong\-used\-in\-ancient\-times\-by\-troops\-on\-the\-march;
+䪳 > slanted\-face\-causing\-by\-the\-paralyzed\-of\-the\-facial\-nerve;
+䞋 > to\-do\-alms\-for\-the\-buddhist\-priests\-or\-monks\-in\-old\-times;
+䙆 > slits\-on\-the\-lower\-part\-of\-a\-gown\-for\-freedom\-of\-movement;
+䀏 > to\-move\-one''s\-eyes\-to\-express\-or\-indicate\-with\-eyes\-dizzy;
+㿄 > the\-groans\-or\-moans\-from\-a\-person\-in\-a\-critical\-condition;
+㶏 > an\-ancient\-name\-of\-a\-river\-in\-henan\-province\-dengfengxian;
+㳇 > name\-of\-a\-place\-in\-today''s\-jiangsu\-province\-yixing\-county;
+㫋 > a\-silken\-banner\-hanging\-from\-a\-staff\-bent\-over\-at\-the\-top;
+狽 > a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+歐 > used\-in\-transliterating\-non\-chinese\-words\-such\-as\-europe;
+狈 > a\-legendary\-animal\-with\-short\-forelegs\-which\-rode\-a\-wolf;
+汨 > mi\-river\-in\-hunan\-province\-where\-qu\-yuan\-drowned\-himself;
+汜 > a\-stream\-which\-leaves\-the\-main\-branch\-then\-later\-returns;
+簈 > bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+箳 > bamboo\-mat\-used\-to\-protect\-carriage\-passengers\-from\-dust;
+爼 > a\-small\-table\-or\-tiered\-stand\-filled\-with\-meat\-offerings;
+䳚 > a\-sort\-of\-nightingale\-which\-is\-said\-to\-sing\-for\-the\-dawn;
+䡂 > the\-long\-wooden\-bumper\-at\-the\-rear\-of\-a\-cart\-or\-carriage;
+䃾 > to\-offer\-small\-pig\-as\-sacrifice\-when\-warship\-god\-of\-life;
+㼪 > fragments\-of\-a\-tile\-haven''t\-t\-been\-kiln\-dried\-completely;
+㴖 > name\-of\-a\-stream\-in\-shandong\-province\-southwest\-of\-jinan;
+㝉 > space\-between\-the\-throne\-and\-the\-retiring\-room\-behind\-it;
+㖫 > used\-in\-names\-for\-minority\-ethnic\-group\-in\-ancient\-china;
+炝 > stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+熗 > stir\-fry\-or\-boil\-in\-water\-or\-oil\-then\-cook\-with\-a\-sauce;
+弮 > a\-crowwbow\-which\-discharged\-several\-bolts\-in\-succession;
+䪙 > leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䪖 > leather\-wrapped\-collar\-for\-a\-draft\-animal\-of\-a\-carriage;
+䧚 > the\-name\-of\-a\-place\-in\-the\-south\-west\-of\-hebei\-province;
+䡞 > leather\-that\-wind\-round\-on\-the\-shafts\-of\-a\-big\-carriage;
+䍜 > a\-basket\-or\-a\-cage\-used\-to\-keep\-wild\-and\-domestic\-fowls;
+䇆 > capacity\-unit\-in\-france\-equal\-to\-ten\-times\-of\-one\-litre;
+䂅 > to\-have\-insight\-or\-vision\-of\-a\-simple\-and\-honest\-person;
+㲽 > name\-of\-a\-river\-in\-today''s\-southwest\-of\-shanxi\-province;
+㮐 > a\-rack\-or\-a\-stand\-with\-three\-sticks\-to\-cross\-each\-other;
+㬸 > a\-kind\-of\-services\-or\-ceremonies\-of\-offering\-sacrifices;
+郌 > name\-of\-an\-ancient\-hsien\-in\-modern\-gansu\/shaanxi\-area\.;
+耰 > toothless\-rake\-for\-drawing\-earth\-over\-newly\-sown\-grain;
+琀 > gems\-of\-pearls\-formerly\-put\-into\-the\-mouth\-of\-a\-corpse;
+䪃 > wine\-container\-used\-by\-minority\-tribe\-in\-ancient\-times;
+䥷 > a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder\-or\-hay;
+䤩 > an\-ornament\-at\-the\-end\-of\-a\-belt\-used\-in\-ancient\-times;
+䝪 > to\-provide\-money\-or\-gift\-and\-to\-consult\-fortune\-teller;
+䙛 > ceremonial\-dress\-of\-the\-emperor\-or\-very\-high\-officials;
+䘦 > a\-kind\-of\-head\-dress\-wore\-in\-funeral\-rites\-in\-old\-days;
+䘟 > kind\-of\-silk\-woven\-with\-double\-threads\-and\-water\-proof;
+䔑 > a\-white\-colored\-cluster\-grown\-at\-the\-tip\-of\-cogongrass;
+䉲 > thin\-and\-flat\-slips\-of\-bamboo\-used\-for\-weaving\-purpose;
+㼽 > fragments\-of\-a\-tile\-haven''t\-been\-kiln\-dried\-completely;
+㶁 > after\-blocking\-the\-water\-flow\-takes\-different\-waterway;
+㯀 > bonds\-and\-fetters\-for\-falcons\-and\-dogs\-used\-in\-hunting;
+㒾 > a\-kind\-of\-wrapper\-used\-to\-cover\-over\-the\-face\-and\-head;
+蠲 > the\-millipede\-sometimes\-confounded\-with\-the\-grow\-worm;
+蘧 > a\-plant\-which\-resembles\-wheat\-but\-has\-no\-edible\-grain;
+䡴 > carriage\-used\-in\-ancient\-times\-to\-take\-enemy\-position;
+䟺 > walk\-slowly\-because\-of\-the\-wrong\-position\-of\-the\-feet;
+䉣 > slips\-of\-bamboo\-provided\-for\-writing\-in\-ancient\-times;
+䁹 > to\-look\-askance\-\-\-\-a\-expression\-of\-disdain\-or\-despise;
+㼌 > lot\-of\-melons\-growing\-but\-the\-root\-is\-weak\-and\-feeble;
+㻠 > jade\-hanging\-on\-the\-sides\-of\-the\-cap\-in\-ancient\-times;
+㮣 > a\-piece\-of\-wood\-used\-to\-strike\-off\-grain\-in\-a\-measure;
+㓤 > to\-strip\-the\-skin\-of\-the\-face\-\-\-\-an\-imminent\-calamity;
+砀 > brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+虒 > an\-amphibious\-beast\-resembling\-a\-tiger\-with\-one\-horn;
+筁 > a\-bamboo\-frame\-on\-which\-silkworms\-spin\-their\-cocoons;
+碭 > brilliantly\-colored\-stone\-with\-veined\-patterns\-in\-it;
+冋 > a\-desert\-a\-border\-prairie\-the\-1st\-form\-is\-radical\-13;
+䴷 > use\-the\-whole\-piece\-of\-barley\-to\-ferment\-for\-brewing;
+䭞 > a\-kind\-of\-sacrifices\-offered\-to\-gods\-or\-the\-deceased;
+䧠 > name\-of\-a\-place\-in\-what\-is\-today''s\-shandong\-province;
+䑩 > a\-kind\-of\-inland\-rivers\-warship\-used\-in\-qing\-dynasty;
+䍸 > a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䍫 > a\-legendary\-goat\-like\-animal\-with\-4\-ears\-and\-9\-tails;
+䃫 > a\-silicate\-substance\-from\-the\-salt\-wells\-in\-szechwan;
+㸜 > to\-get\-through\-the\-space\-enclosed\-by\-a\-constellation;
+㷭 > a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+㶻 > a\-conical\-brick\-structure\-in\-which\-to\-light\-a\-beacon;
+甾 > ground\-that\-has\-been\-under\-cultivation\-for\-one\-year;
+禡 > a\-sacrifice\-at\-the\-beginning\-of\-a\-military\-campaign;
+礮 > ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+礟 > ancient\-ballista\-for\-throwing\-heavy\-stones\-a\-cannon;
+䯠 > the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䯙 > the\-five\-lowest\-pieces\-of\-bone\-of\-the\-spinal\-column;
+䬦 > food\-items\-merely\-arranged\-for\-display\-purpose\-only;
+䙑 > a\-piece\-of\-sackcloth\-worn\-on\-the\-breast\-in\-mourning;
+䈱 > an\-open\-bamboo\-basket\-used\-to\-feed\-domestic\-animals;
+㪵 > half\-of\-a\-unit\-of\-measurement\-used\-in\-ancient\-times;
+㡈 > the\-ropes\-attached\-to\-the\-bier\-and\-held\-by\-mourners;
+㚤 > a\-lady\-officer\-of\-the\-monarch''s\-palace\-in\-old\-times;
+呀 > particle\-used\-to\-express\-surprise\-or\-mild\-emphasis;
+靷 > the\-leather\-belt\-that\-connects\-a\-horse\-with\-a\-cart;
+譼 > to\-supervise\-to\-confine\-a\-government\-establishment;
+坫 > a\-stand\-on\-which\-to\-replace\-goblets\-after\-drinking;
+䴽 > a\-small\-round\-piece\-of\-distiller''s\-grains\-or\-yeast;
+䰎 > to\-twist\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䪝 > leather\-cord\-that\-winding\-on\-the\-handle\-of\-a\-knife;
+䡇 > the\-cross\-bar\-at\-the\-end\-of\-the\-pole\-of\-a\-carriage;
+䞀 > to\-desire\-for\-more\-money\-than\-one''s\-rightful\-share;
+䘭 > the\-pleates\-on\-the\-lapel\-of\-a\-garment\-of\-thin\-silk;
+䐈 > a\-piece\-of\-one\-foot\-two\-inches\-dried\-seasoned\-meat;
+䍅 > containers\-for\-water\-or\-wine\-used\-in\-ancient\-times;
+䋾 > cotton\-and\-silk\-to\-be\-laid\-and\-attached\-each\-other;
+䉐 > a\-thin\-and\-long\-strip\-of\-bamboo\-for\-making\-baskets;
+䈻 > a\-heavy\-mats\-of\-bamboo\-used\-for\-deep\-water\-fishing;
+䇠 > wrench\-to\-adjust\-the\-string\-on\-stringed\-instrument;
+䄌 > to\-perform\-rities\-in\-honor\-of\-the\-ancestral\-temple;
+䃦 > a\-flat\-and\-great\-rock\-people\-squat\-or\-crouch\-on\-it;
+㻀 > fine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㲬 > hair\-decorations\-on\-a\-helmet\-used\-in\-ancient\-times;
+㱯 > get\-the\-unborn\-baby\-goat\-by\-killng\-the\-mother\-goat;
+㮰 > the\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+㪶 > a\-dry\-measure\-10\-or\-5\-times\-that\-of\-a\-chinese\-peck;
+㟗 > name\-of\-a\-small\-principality\-in\-what\-is\-now\-shanxi;
+伽 > transcription\-of\-sanskrit\-''gha''\-in\-buddhist\-texts;
+屣 > straw\-sandals\-or\-slippers\-that\-have\-no\-heel\-backs;
+漎 > a\-place\-where\-small\-streams\-flow\-into\-a\-large\-one;
+檾 > grassy\-plant\-with\-fibres\-from\-which\-cloth\-is\-made;
+䰌 > to\-bind\-the\-hair\-in\-a\-knot\-on\-the\-top\-of\-the\-head;
+䩵 > tanner\-who\-made\-the\-leather\-drum\-in\-ancient\-times;
+䚙 > a\-spoon\-for\-cooked\-rice\-made\-of\-horn\-of\-an\-animal;
+䌳 > a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䌤 > a\-kind\-of\-unrefined\-or\-unpolished\-silken\-textiles;
+䊺 > an\-implement\-to\-draw\-or\-to\-collect\-ropes\-or\-cords;
+䉃 > sliped\-open\-bamboo\-with\-the\-joints\-used\-as\-an\-oar;
+䉀 > rectangular\-chest\-or\-box\-woven\-from\-bamboo\-strips;
+䄋 > to\-pray\-for\-preventing\-or\-forestalling\-calamities;
+䃮 > a\-stone\-build\-hydraulic\-measures\-in\-ancient\-times;
+㾿 > roar\-of\-asthma\-or\-expectorate\-from\-a\-dying\-person;
+㻨 > ine\-stone\-which\-is\-little\-less\-valuable\-than\-jade;
+㺐 > generally\-called\-for\-minority\-groups\-in\-old\-china;
+㯂 > pillar\-or\-post\-of\-a\-frame\-on\-which\-silkworms\-spin;
+㟋 > deep\-and\-level\-ground\-gully\-at\-the\-foot\-of\-a\-hill;
+㞪 > the\-appearance\-of\-the\-mountain\-is\-flat\-and\-smooth;
+衅 > consecrate\-sacrificial\-vessels\-by\-smearing\-blood;
+虢 > name\-of\-ancient\-feudal\-state\-in\-shenxi\-and\-hunan;
+齉 > stoppage\-of\-the\-nose\-to\-speak\-with\-a\-nasal\-twang;
+褯 > children''s\-garments\.\-a\-mat\-for\-wrapping\-garments;
+梠 > a\-small\-beam\-supporting\-the\-rafters\-at\-the\-eaves;
+摣 > a\-handful\.\-to\-pick\-up\-with\-the\-fingers\.\-to\-seize;
+堘 > a\-raised\-path\-between\-field\-which\-acts\-as\-a\-dyke;
+䶜 > the\-process\-to\-whiten\-the\-ivory\-or\-elephant\-tusk;
+䮉 > horses\-kept\-at\-a\-courier\-station\-in\-former\-times;
+䢵 > name\-of\-an\-old\-country\-in\-today''s\-hubei\-province;
+䡟 > a\-ring\-of\-the\-horizontal\-front\-bar\-on\-a\-carriage;
+䞛 > dancing\-of\-a\-eastern\-minority\-group\-in\-old\-china;
+䝌 > a\-pig\-seek\-for\-food\-through\-digging\-on\-the\-earth;
+䒁 > a\-small\-boat\-connected\-to\-the\-back\-of\-a\-big\-boat;
+䉋 > a\-variety\-of\-bamboo\-shoots\-that\-sprout\-in\-winter;
+䈔 > whistle\-made\-of\-reed\-without\-holes\-for\-fingering;
+㽙 > official\-in\-charge\-of\-farmlands\-in\-ancient\-times;
+㳎 > guide\-or\-lead\-to\-make\-the\-water\-flowing\-smoothly;
+㲪 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲨 > a\-decorative\-fine\-blanket\-on\-the\-top\-of\-a\-saddle;
+㲣 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㲙 > woolen\-blanket\-with\-decorative\-design\-or\-pattern;
+㧋 > to\-lengthen\-and\-extenuate\-\-\-\-as\-in\-making\-noodle;
+㠜 > young\-kids\-smart\-and\-familiar\-with\-human\-affairs;
+㙱 > earthenware\-used\-to\-bake\-cakes\-in\-northern\-china;
+喁 > the\-mouth\-of\-a\-fish\-at\-the\-surface\-of\-the\-water;
+揎 > to\-pull\-up\-the\-sleeves\-and\-stretch\-out\-the\-arms;
+箬 > the\-cuticle\-of\-the\-bamboo\-a\-broad\-leaved\-bamboo;
+軾 > horizontal\-wooden\-bar\-in\-front\-of\-a\-sedan\-chair;
+萆 > the\-castor\-oil\-plant\-also\-used\-for\-other\-plants;
+簠 > an\-ancient\-vessel\-used\-for\-holding\-boiled\-grain;
+䲰 > a\-second\-name\-for\-the\-pigeon\-or\-the\-turtle\-dove;
+䝥 > to\-roar\-or\-howl\-frantic\-barks\-of\-dogs\-or\-wolves;
+䔤 > the\-lush\-and\-luxuriant\-of\-the\-grass\-and\-flowers;
+㯮 > a\-kind\-of\-tree\-with\-big\-leaves\-and\-in\-red\-color;
+㔍 > a\-hinged\-shear\-or\-long\-knife\-for\-cutting\-fodder;
+璜 > a\-semicircular\-jade\-ornament\-used\-as\-a\-pendant;
+諬 > to\-open\-to\-begin\-to\-explain\-to\-inform\-a\-letter;
+猹 > wild\-animal\-mentioned\-in\-short\-story\-by\-lu\-xun;
+犼 > a\-fierce\-mongolian\-wolf\-dragon''s\-head\-on\-roofs;
+湓 > an\-affluent\-of\-the\-river\-yangtze\-near\-kiukiang;
+歚 > used\-in\-name\-of\-famous\-korean\-painter\-ceng\-sen;
+䶛 > to\-separate\-the\-meat\-from\-the\-bones\-with\-teeth;
+䳜 > a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䳅 > a\-kind\-of\-bird\-which\-shares\-its\-nest\-with\-rats;
+䲍 > a\-perch\-like\-fish\-with\-white\-body\-and\-red\-tail;
+䩶 > saddle\-and\-rein\-etc\.\-for\-the\-imperial\-carriage;
+䗽 > a\-small\-gadfly\-that\-suck\-blood\-of\-horse\-or\-cow;
+䉴 > a\-bamboo\-ware\-to\-collect\-and\-keep\-something\-in;
+䉅 > small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䈛 > small\-bamboo\-whose\-joints\-are\-three\-feet\-apart;
+䄦 > to\-put\-forth\-ears\-and\-to\-blossom\-of\-the\-grains;
+㽩 > connected\-banks\-of\-earth\-or\-paths\-in\-the\-field;
+㹃 > two\-brindled\-cows\-to\-plough\-face\-to\-each\-other;
+㶟 > an\-ancient\-neme\-of\-a\-river\-in\-shanxi\-and\-hebei;
+㲈 > the\-name\-of\-the\-music\-of\-the\-legendary\-emperor;
+㬐 > a\-state\-during\-the\-period\-of\-spring\-and\-autumn;
+㡛 > name\-for\-a\-workman\-who\-apply\-color\-in\-painting;
+㟢 > the\-rocks\-on\-the\-hills\-are\-of\-different\-shapes;
+㜼 > children\-of\-one''s\-brother\-\-\-\-nephews\-or\-nieces;
+㔽 > a\-kind\-of\-wine\-pot\-or\-jar\-used\-in\-ancient\-time;
+㓃 > to\-sacrifice\-by\-pouring\-out\-a\-libation\-of\-wine;
+㑞 > a\-maid\-who\-accompanies\-a\-bride\-to\-her\-new\-home;
+畲 > to\-cultivate\-land\-by\-first\-setting\-fire\-to\-it;
+篚 > round\-or\-oval\-covered\-baskets\-with\-short\-legs;
+粔 > cakes\-made\-from\-rice\-flour\-twisted\-into\-rings;
+戤 > to\-infringe\-a\-trade\-mark\-to\-pledge\-an\-article;
+乤 > first\-character\-of\-korean\-place\-name\-''halpho'';
+䶨 > in\-the\-manner\-a\-toothless\-person\-chewing\-food;
+䮛 > extra\-horse\-harnessed\-by\-the\-side\-of\-the\-team;
+䣠 > name\-of\-a\-village\-in\-today''s\-sichuan\-province;
+䣟 > name\-of\-pavilion\-in\-today''s\-shandong\-province;
+䠒 > courtesy\-of\-a\-minority\-group\-in\-ancient\-times;
+䝰 > to\-store\-or\-to\-accumulate\-riches\-or\-valuables;
+䜱 > name\-of\-a\-pavilion\-in\-today''s\-shanxi\-province;
+䓝 > chinese\-pennisetum\)\-pennisetum\-alopecuroides\);
+䋉 > a\-numerary\-adjunct\-for\-practically\-everything;
+䊣 > light\-yellow\-dust\-like\-fungoid\-growth\-on\-wine;
+䇒 > numerary\-adjunct\-for\-periodic\-terms\-or\-events;
+㿗 > disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㿉 > disease\-of\-the\-private\-part\-of\-the\-human\-body;
+㾫 > hemiplegia\-\-\-\-paralysis\-of\-half\-of\-one''s\-body;
+㻞 > flourishing\-and\-radiant\-of\-the\-colorful\-jades;
+㹱 > name\-of\-a\-dog\-in\-the\-period\-of\-warring\-states;
+㲥 > a\-kind\-of\-woolen\-textiles\-with\-curved\-pattern;
+㭹 > name\-of\-a\-county\-in\-today''s\-shandong\-province;
+㣯 > the\-dresses\-toss\-and\-flying\-about\-in\-the\-wind;
+㢯 > bows\-used\-by\-the\-son\-of\-heaven\-\-\-\-the\-emperor;
+㡊 > a\-kind\-of\-cap\-worn\-by\-an\-officer\-in\-old\-china;
+㙫 > a\-fountain\-or\-spring\-out\-from\-the\-underground;
+㙍 > name\-of\-a\-place\-in\-today''s\-guangdong\-province;
+钧 > unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+妲 > concubine\-of\-last\-ruler\-of\-the\-shang\-dynasty;
+瓴 > concave\-channels\-of\-tiling\-a\-long\-necked\-jar;
+媵 > a\-maid\-who\-accompanies\-bride\-to\-her\-new\-home;
+胙 > meat\-offered\-in\-sacrifice\-to\-one''s\-ancestors;
+蟊 > a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+騲 > the\-female\-of\-certain\-animals\-such\-as\-horses;
+鈞 > unit\-of\-measure\-equivalent\-to\-thirty\-catties;
+蝥 > a\-fly\-which\-is\-used\-similarly\-to\-cantharides;
+珓 > two\-hemispherical\-objects\-used\-in\-divination;
+敧 > to\-pick\-up\-thing\-with\-chopsticks\-or\-pincers\.;
+扄 > large\-ring\-on\-a\-front\-door\-used\-as\-a\-knocker;
+嫏 > the\-place\-where\-the\-supreme\-stores\-his\-books;
+䱁 > a\-kind\-of\-medium\-sized\-fish\-grown\-in\-the\-sea;
+䰏 > sparse\-hair\-on\-a\-knot\-on\-the\-top\-of\-the\-head;
+䮆 > a\-horse\-with\-mixed\-color\-of\-yellow\-and\-white;
+䩛 > leather\-belt\-used\-to\-bind\-or\-restrain\-a\-cart;
+䦹 > name\-of\-a\-county\-in\-today''s\-sichuan\-province;
+䣔 > name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䣑 > living\-space\-for\-one\-family\-in\-ancient\-times;
+䣄 > name\-of\-a\-place\-in\-today''s\-shandong\-province;
+䣁 > name\-of\-a\-pavilion\-in\-today''s\-henan\-province;
+䢹 > name\-of\-a\-pavilion\-in\-today''s\-hunan\-province;
+䢪 > a\-sledge\-for\-transportation\-over\-mud\-or\-snow;
+䟆 > to\-keep\-persons\-off\-the\-route\-of\-the\-emperor;
+䈐 > an\-arched\-frame\-made\-of\-bamboo\-of\-wood\-board;
+䅿 > luxuriant\-or\-exuberant\-of\-the\-grains\-flowery;
+䃈 > mountain\-rocks\-a\-black\-stone\-resembling\-jade;
+䂬 > big\-rocks\-on\-the\-riverside\-an\-arched\-opening;
+䁝 > deluding\-and\-causing\-disorder\-lights\-shining;
+㽟 > to\-till\-or\-to\-plough\-the\-fields\-an\-enclosure;
+㮄 > publicly\-posted\-roll\-of\-successful\-examinees;
+㭸 > the\-branches\-to\-spread\-out\-in\-all\-directions;
+㩉 > to\-take\-a\-rubbing\-of\-an\-inscription\-on\-stone;
+㣁 > to\-equipt\-a\-bow\-with\-silk\-and\-muscular\-fibre;
+㢆 > living\-space\-for\-one\-family\-in\-ancient\-times;
+㝙 > the\-third\-of\-the\-twelve\-terrestrial\-branches;
+㙻 > living\-space\-for\-one\-family\-in\-ancient\-times;
+乎 > interrogative\-or\-exclamatory\-final\-particle;
+澄 > purify\-water\-by\-allowing\-sediment\-to\-settle;
+歟 > a\-final\-particle\-used\-to\-express\-admiration;
+梢 > pointed\-tip\-of\-something\-long\-like\-a\-branch;
+哒 > a\-sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+琮 > octagonal\-piece\-of\-jade\-with\-hole\-in\-middle;
+欤 > a\-final\-particle\-used\-to\-express\-admiration;
+唼 > speaking\-evil\.\-gobbling\-sound\-made\-by\-ducks;
+邴 > name\-of\-a\-city\-in\-the\-ancient\-state\-of\-song;
+䶘 > the\-sound\-of\-chewing\-something\-dry\-and\-hard;
+䮲 > horse\-with\-mixed\-colors\-of\-yellow\-and\-white;
+䦼 > to\-dig\-a\-passage\-through\-a\-mountain\-or\-hill;
+䥑 > a\-kind\-of\-decoration\-on\-the\-head\-of\-a\-horse;
+䣯 > wine\-or\-any\-thick\-fluid\-of\-the\-best\-quality;
+䣚 > name\-of\-a\-village\-in\-today''s\-henan\-province;
+䣙 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䢺 > name\-of\-a\-place\-in\-today''s\-sichuan\-province;
+䢸 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+䡿 > frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䡼 > frames\-on\-the\-sides\-and\-front\-of\-a\-carriage;
+䜯 > name\-of\-a\-valley\-in\-today''s\-shanxi\-province;
+䘿 > shirt\-or\-a\-jacket\-without\-any\-decorated\-hem;
+䖂 > an\-edib\-le\-water\-plant\-\-\-\-brasenia\-purpurca;
+䏮 > the\-sides\-of\-the\-trunk\-from\-armpits\-to\-ribs;
+䅍 > straight\-upward\-of\-the\-wheat\-and\-rice\-plant;
+䂸 > to\-smash\-or\-to\-knock\-to\-pieces\-of\-the\-stone;
+㾼 > to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㾯 > to\-suffer\-a\-stroke\-of\-paralysis\-or\-apoplexy;
+㽫 > seeds\-of\-the\-plant\-allied\-to\-the\-water\-lily;
+㸷 > a\-kind\-of\-cattle\-with\-two\-horns\-straight\-up;
+㶬 > bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶡 > bright\-lights\-and\-illuminations\-of\-the\-fire;
+㶆 > name\-of\-a\-stream\-in\-hebei\-province\-hengshan;
+㮫 > a\-wooden\-artical\-to\-be\-used\-to\-adjust\-a\-bow;
+㫍 > the\-scallops\-along\-the\-lower\-edge\-of\-a\-flag;
+㧏 > to\-carry\-on\-the\-shouldersof\-two\-or\-more\-men;
+㛶 > do\-not\-care\-about\-appearance\-and\-deportment;
+㛧 > name\-of\-a\-county\-in\-today''s\-shanxi\-province;
+㚔 > instrument\-of\-torture\-used\-in\-ancient\-times;
+㙇 > the\-cattle\-and\-horses\-trampled\-on\-the\-field;
+娅 > mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+鮠 > a\-kind\-of\-shad\-with\-a\-head\-like\-a\-sturgeon;
+胑 > the\-limbs\.\-wings\-of\-birds\.\-legs\-of\-animals;
+筭 > an\-ancient\-device\-for\-working\-with\-numbers;
+滝 > onomatopoeic\-for\-the\-sound\-of\-falling\-rain;
+婭 > mutual\-term\-of\-address\-used\-by\-sons\-in\-law;
+䳵 > a\-kind\-of\-water\-bird\-with\-colorful\-feather;
+䳛 > a\-small\-brown\-speckled\-bird\-like\-the\-quail;
+䩑 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䦓 > to\-wait\-for\-something\-tohappen\-immediately;
+䣤 > name\-of\-village\-in\-today''s\-shanxi\-province;
+䣝 > name\-of\-a\-place\-in\-today''s\-shanxi\-province;
+䣂 > name\-of\-a\-county\-in\-today''s\-hunan\-province;
+䡩 > sound\-of\-carts\-or\-stones\-knocking\-together;
+䡏 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䡌 > horizontal\-front\-bar\-on\-a\-cart\-or\-carriage;
+䠀 > to\-sit\-cross\-legged\-like\-a\-buddhist\-priest;
+䜫 > name\-of\-a\-valley\-in\-today''s\-hobei\-province;
+䜚 > to\-speak\-recklessly\-or\-without\-forethought;
+䓥 > sound\-of\-the\-wriggled\-insects\-on\-the\-grass;
+䐄 > the\-unsatisfaction\-of\-hunger\-requires\-meat;
+䍴 > to\-squeeze\-and\-to\-crowd\-against\-each\-other;
+䍆 > container\-for\-grains\-used\-in\-ancient\-times;
+䇯 > a\-kind\-of\-bamboo\-with\-patterns\-on\-the\-head;
+㼱 > to\-manage\-or\-regulate\-the\-leather\-material;
+㯊 > even\-measuring\-board\-for\-pecks\-and\-bushels;
+㨐 > to\-slap\-lightly\-on\-the\-clothes\-or\-coverlet;
+㢥 > a\-big\-piece\-of\-log\-to\-join\-the\-thick\-ropes;
+珈 > an\-ornament\-attached\-to\-a\-woman''s\-hairpin;
+蜃 > marine\-monster\-which\-can\-change\-its\-shape;
+斛 > dry\-measure\-equal\-to\-some\-five\-or\-ten\-dou;
+鄯 > district\-in\-gansu\-during\-the\-tang\-dynasty;
+庹 > the\-length\-of\-one''s\-two\-outstretched\-arms;
+揲 > to\-sort\-out\-the\-stalks\-used\-in\-divination;
+韍 > a\-leather\-knee\-pad\-worn\-during\-sacrifices;
+鏞 > a\-large\-bell\-used\-as\-a\-musical\-instrument;
+軎 > a\-brass\-parts\-for\-a\-cart\-in\-ancient\-china;
+虋 > asparagus\-a\-variety\-of\-red\-stalked\-millet;
+廞 > to\-prepare\-horses\-and\-chariots\-for\-battle;
+婗 > a\-new\-born\-child\-the\-whimper\-of\-an\-infant;
+妺 > wife\-of\-the\-last\-ruler\-of\-the\-xia\-dynasty;
+噠 > sound\-made\-to\-get\-a\-horse\-to\-move\-forward;
+丂 > obstruction\-of\-breath\-as\-it\-seeks\-release;
+䰿 > a\-kind\-of\-small\-fish\-grown\-in\-fresh\-water;
+䢿 > name\-of\-a\-place\-in\-today''s\-hobei\-province;
+䡈 > the\-cross\-bar\-at\-the\-sides\-of\-a\-carritage;
+䔉 > scattered\-or\-dispersed\-of\-grass\-and\-trees;
+䑒 > a\-kind\-of\-farm\-tool\-used\-in\-ancient\-times;
+䐣 > soup\-made\-of\-cutted\-meat\-mixed\-with\-blood;
+䌮 > silk\-fabrics\-with\-the\-color\-of\-new\-leaves;
+䄨 > grains\-producing\-neither\-flower\-nor\-fruit;
+䄝 > show\-no\-respect\-to\-the\-service\-of\-worship;
+㼭 > to\-steady\-by\-putting\-something\-underneath;
+㻲 > a\-rite\-or\-service\-for\-beginning\-of\-autumn;
+㪪 > to\-use\-a\-wooden\-pole\-to\-support\-something;
+㢦 > wooden\-post\-or\-pile\-for\-tethering\-animals;
+㜢 > a\-bad\-term\-by\-which\-one\-addresses\-a\-woman;
+㚒 > concealed\-the\-stolen\-goods\-in\-one''s\-dress;
+踣 > to\-stumble\-and\-fall\-prone\-stiff\-in\-death;
+黼 > embroidered\-official\-or\-sacrificial\-robe;
+峄 > a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+闗 > a\-frontier\-pass\-or\-gate\-to\-shut\-or\-close;
+邾 > a\-feudal\-state\-which\-existed\-b\.c\.700\-469;
+薩 > transliteration\-of\-''sat''\-in\-''bodhisattva;
+膰 > to\-cook\-meat\-for\-a\-sacrifice\-or\-offering;
+瑌 > a\-white\-opaque\-quartz\-used\-for\-ornaments;
+潟 > land\-impregnated\-with\-salt\-from\-the\-tide;
+嶧 > a\-range\-of\-peaks\-in\-shandong\-and\-jiangsu;
+䵞 > ancient\-punishment\-of\-tattooing\-the\-face;
+䱹 > a\-condiment\-made\-from\-minced\-fish\-salted;
+䰼 > a\-condiment\-made\-from\-minced\-fish\-salted;
+䯰 > use\-a\-hair\-pin\-to\-set\-and\-dress\-the\-hair;
+䬯 > to\-have\-congee\-with\-friends\-in\-old\-times;
+䡋 > decoration\-on\-the\-nave\-or\-hub\-of\-a\-wheel;
+䞃 > to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䝩 > to\-relieve\-or\-give\-aid\-to\-the\-distressed;
+䘯 > the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䘤 > a\-sword\-covering\-to\-protect\-the\-scabbard;
+䑌 > lwhat\-is\-left\-over\-of\-the\-food\-\-overripe;
+䋧 > ornamennts\-for\-the\-frontal\-part\-of\-shoes;
+䋣 > decorations\-put\-on\-the\-mane\-or\-horsehair;
+䊿 > the\-lapel\-or\-collar\-of\-a\-garment\-or\-robe;
+䈕 > the\-metal\-tongue\-in\-the\-reed\-instruments;
+䃴 > a\-whetstone\-used\-to\-grind\-precious\-stone;
+䁼 > to\-look\-but\-see\-nothing\-\-\-\-absent\-minded;
+㿆 > damage\-by\-the\-pests\-to\-the\-rice\-seedling;
+㻶 > a\-jade\-tube\-with\-white\-and\-nature\-colors;
+㻰 > decorated\-jade\-or\-ornament\-on\-a\-scabbard;
+㻡 > a\-jade\-ring\-with\-a\-small\-segment\-cut\-off;
+㮆 > eaves\-sprouting\-from\-the\-stump\-of\-a\-tree;
+㫔 > one\-of\-the\-eight\-diagrams\-for\-divination;
+㪻 > a\-kind\-of\-utensil\-used\-to\-ladle\-out\-wine;
+㩊 > to\-pull\-up\-the\-sleeves\-and\-show\-the\-arms;
+㧭 > to\-get\-something\-with\-both\-raising\-hands;
+㧚 > the\-gesture\-of\-using\-an\-indented\-contain;
+㧆 > to\-cover\-something\-with\-a\-piece\-of\-cloth;
+㡋 > a\-kind\-of\-headdress\-for\-man\-in\-old\-china;
+㠸 > the\-lapel\-or\-collor\-of\-a\-garment\-or\-robe;
+㜚 > a\-local\-government\-post\-in\-ancient\-times;
+㙟 > low\-lying\-on\-the\-side\-of\-a\-river\-or\-lake;
+喏 > respectful\-reply\-of\-assent\-to\-superiors;
+笏 > tablet\-held\-by\-someone\-having\-authority;
+趼 > callous\-skin\-on\-hands\-or\-feet\.\-blisters;
+饝 > to\-feed\-an\-infant\-by\-hand\-steamed\-bread;
+裍 > a\-border\-or\-band\-on\-the\-edge\-of\-a\-dress;
+籪 > a\-weir\-of\-bamboo\-to\-catch\-fish\-or\-crabs;
+瘲 > spasms\-or\-convulsions\-in\-young\-children;
+瑲 > tinkling\-sound\-tinkling\-of\-pendant\-gems;
+弝 > the\-part\-of\-a\-bow\-grasped\-when\-shooting;
+䥜 > protective\-metal\-on\-the\-axis\-of\-a\-wheel;
+䙖 > a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+䙀 > a\-cloth\-to\-carry\-an\-iinfant\-on\-the\-back;
+䏫 > in\-between\-of\-the\-abdomen\-and\-the\-spine;
+䍉 > traces\-or\-marks\-of\-incomplete\-or\-damage;
+䌸 > fine\-silk\-fabric\-of\-bright\-white\-colour;
+䋿 > a\-decorative\-knot\-made\-of\-colorful\-silk;
+䈜 > a\-thread\-used\-by\-carpenters\-for\-marking;
+䈆 > a\-shallow\-and\-long\-shaped\-bamboo\-basket;
+㿹 > jutting\-on\-the\-epidermis\-or\-the\-cuticle;
+㼫 > earthenware\-or\-pottery\-with\-big\-opening;
+㵻 > to\-perspire\-from\-embarrassment\-or\-shame;
+㭩 > a\-kind\-of\-tree\-can\-be\-used\-as\-dye\-stuff;
+㣙 > to\-walk\-in\-an\-easy\-and\-leisurely\-manner;
+㢪 > to\-draw\-a\-full\-bow\-to\-aim\-at\-the\-target;
+㘊 > the\-abrupt\-and\-hasty\-sound\-of\-the\-crowd;
+㖮 > an\-interjection\-used\-in\-poems\-and\-songs;
+㔮 > a\-kind\-of\-animal\-which\-looks\-like\-a\-rat;
+啧 > interjection\-of\-approval\-or\-admiration;
+捺 > to\-press\-down\-heavily\-with\-the\-fingers;
+傣 > the\-dai\-minority\-living\-in\-south\-china;
+鸩 > a\-bird\-resembling\-the\-secretary\-falcon;
+淝 > name\-of\-an\-affluent\-of\-the\-poyang\-lake;
+郅 > to\-go\-up\-to\.\-flourishing\-a\-superlative;
+轫 > a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+嶷 > a\-range\-of\-mountains\-in\-hunan\-province;
+鬲 > type\-of\-caldron\-with\-three\-hollow\-legs;
+刖 > cutting\-off\-feet\-as\-form\-of\-punishment;
+穸 > the\-gloom\-of\-the\-grave\-a\-tomb\-or\-grave;
+蘅 > a\-fragrant\-plant\-the\-root\-is\-medicinal;
+鴆 > a\-bird\-resembling\-the\-secretary\-falcon;
+驆 > used\-in\-transliterating\-buddhist\-books;
+駏 > offspring\-of\-a\-stallion\-and\-a\-she\-mule;
+鉌 > the\-bells\-on\-the\-cart\-in\-ancient\-china;
+軔 > a\-block\-that\-keeps\-a\-wheel\-from\-moving;
+詧 > to\-examine\-into\-judicially\-to\-find\-out;
+綳 > a\-cloth\-to\-carry\-an\-infant\-on\-the\-back;
+綖 > the\-hanging\-flap\-in\-the\-front\-of\-a\-hat;
+祫 > triennial\-sacrifice\-to\-one''s\-ancestors;
+磻 > a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+斴 > the\-sound\-of\-water\-flowing\-among\-rocks;
+崑 > kunlun\-mountains\-in\-jiang\-su\-province\.;
+嘖 > interjection\-of\-approval\-or\-admiration;
+䰘 > to\-kill\-by\-hanging\-or\-to\-strangulation;
+䮗 > white\-from\-forehead\-to\-lips\-of\-a\-horse;
+䪲 > ancient\-punishment\-of\-shaving\-the\-head;
+䩸 > fine\-woolen\-blanket\-on\-top\-of\-a\-saddle;
+䩫 > a\-unit\-to\-count\-shoes\-in\-ancient\-times;
+䦅 > a\-kind\-of\-weapon\-used\-in\-ancient\-times;
+䥐 > cooking\-utensils\-used\-in\-ancient\-times;
+䢇 > a\-son\-who\-is\-not\-so\-good\-as\-his\-father;
+䛗 > to\-pry\-into\-or\-expose\-another''s\-secret;
+䚅 > to\-look\-after\-home\-or\-domestic\-affairs;
+䘨 > short\-leggings\-drawn\-over\-the\-trousers;
+䖿 > a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䖽 > a\-kind\-of\-clam\-with\-thick\-white\-shells;
+䕰 > a\-second\-name\-for\-rhizome\-of\-wind\-weed;
+䓭 > weed\-or\-grass\-with\-narrow\-thick\-glades;
+䍻 > young\-goat\-of\-sheep\-under\-one\-year\-old;
+䍦 > a\-kind\-of\-turban\-used\-in\-ancient\-times;
+䌹 > a\-garment\-of\-one\-colour\-with\-no\-lining;
+䄪 > hanging\-down\-of\-the\-ears\-of\-the\-grains;
+䄍 > year\-end\-sacrifice\-of\-the\-zhou\-dynasty;
+㽠 > connection\-of\-the\-ditches\-or\-waterways;
+㼮 > to\-rub\-out\-the\-filth\-with\-broken\-tiles;
+㫩 > the\-first\-of\-the\-four\-season\-\-\-\-spring;
+磻 > a\-tributary\-of\-the\-wei\-river\-in\-shanxi;
+㤝 > palpitation\-or\-fluttering\-of\-the\-heart;
+㤑 > palpitation\-or\-fluttering\-of\-the\-heart;
+㟌 > a\-mountain\-in\-today''s\-sichuan\-province;
+㔯 > a\-large\-basket\-for\-holding\-cooked\-rice;
+笙 > small\-gourd\-shaped\-musical\-instrument;
+滕 > an\-ancient\-state\-in\-shandong\-province;
+镛 > large\-bell\-used\-as\-musical\-instrument;
+讵 > an\-interjection\-used\-express\-surprise;
+泔 > water\-from\-washing\-rice\-to\-boil\-thick;
+瘐 > to\-die\-in\-prison\-from\-cold\-and\-hunger;
+棼 > beams\-in\-the\-roof\-of\-a\-house\-confused;
+麅 > a\-small\-spotted\-deer\-found\-in\-n\.china;
+阼 > the\-steps\-leading\-to\-the\-eastern\-door;
+輗 > a\-cross\-bar\-at\-end\-of\-a\-carriage\-pole;
+詎 > interjection\-used\-to\-express\-surprise;
+缌 > coarse\-cotton\-cloth\-used\-for\-mourning;
+緦 > coarse\-cotton\-cloth\-used\-for\-mourning;
+硜 > the\-sound\-of\-stones\-knocking\-together;
+犉 > an\-ox\-with\-yellow\-hair\-and\-black\-lips;
+煝 > twisted\-paper\-for\-lighting\-cigarettes;
+帬 > the\-skirt\-of\-a\-lady''s\-dress\-petticoat;
+嵠 > a\-valley\-with\-a\-stream\-in\-it\.\-a\-gorge;
+䱗 > a\-long\-narrow\-fish\-trichiurus\-armatus;
+䱔 > a\-long\-narrow\-and\-silver\-colored\-fish;
+䪓 > a\-metal\-ornament\-on\-some\-kind\-of\-belt;
+䨙 > to\-rain\-cats\-and\-dogs\-for\-a\-long\-time;
+䦊 > an\-appliance\-for\-walking\-on\-the\-sands;
+䥂 > the\-sharp\-edge\-of\-a\-shovel\-or\-a\-spade;
+䡕 > the\-rear\-platform\-of\-a\-light\-carriage;
+䜔 > to\-speak\-on\-the\-ideas\-of\-someone\-else;
+䖠 > a\-kind\-of\-lizard\-found\-in\-damp\-places;
+䖜 > the\-fighting\-sound\-made\-by\-two\-tigers;
+䎒 > flying\-quickly\-and\-to\-attack\-suddenly;
+䋊 > decorations\-of\-the\-emperor''s\-carriage;
+䀛 > to\-look\-far\-with\-the\-eyes\-half\-closed;
+㼨 > a\-water\-jar\-with\-ears\-for\-carrying\-it;
+㻎 > a\-large\-horizontal\-musical\-instrument;
+㺪 > an\-uncarved\-of\-unpolished\-jade\-or\-gem;
+㵿 > endlessly\-long\-or\-vast\-water\-currents;
+㴩 > name\-of\-a\-stream\-in\-shandong\-province;
+㯘 > a\-small\-wooden\-stand\-having\-four\-legs;
+㤍 > never\-reveal\-one''s\-feeling\-or\-emotion;
+㣠 > a\-rope\-decorated\-with\-bronze\-ornament;
+㡑 > ancient\-mourning\-turban\-worn\-by\-women;
+㠑 > high\-mountain\-steep\-rugged\-and\-uneven;
+㠄 > name\-of\-a\-mountain\-in\-yunnan\-province;
+㠁 > irregular\-outline\-of\-a\-range\-of\-hills;
+㟚 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㞿 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㞹 > name\-of\-a\-mountain\-in\-shanxi\-province;
+㚶 > wife\-of\-one''s\-husband''s\-elder\-brother;
+㘈 > able\-to\-take\-a\-correct\-view\-of\-things;
+㗰 > the\-character\-used\-in\-transliteration;
+㒿 > a\-kind\-of\-turban\-used\-in\-ancient\-time;
+弁 > conical\-cap\-worn\-during\-zhou\-dynasty;
+酉 > tenth\-of\-the\-twelve\-earthly\-branches;
+旌 > banner\-or\-flag\-adorned\-with\-feathers;
+衮 > ceremonial\-dress\-worn\-by\-the\-emperor;
+溧 > river\-in\-anhui\-and\-jiangsu\-provinces;
+糍 > food\-made\-of\-crushed\-and\-cooked\-rice;
+殛 > to\-put\-to\-death\-to\-imprison\-for\-life;
+狍 > species\-of\-deer\-found\-in\-north\-china;
+绂 > ribbon\-or\-cord\-used\-attach\-ornaments;
+磉 > the\-stone\-base\-or\-plinth\-of\-a\-pillar;
+蕹 > ipomoea\-aquatica\-used\-as\-a\-vegetable;
+齈 > cold\-in\-the\-head\-catarrh\-of\-the\-nose;
+鹻 > impure\-carbonate\-of\-sodium\-of\-natron;
+鶢 > a\-bird\-which\-frequents\-the\-sea\-shore;
+郪 > name\-of\-a\-stream\-in\-sichuan\-province;
+轞 > a\-vehicle\-for\-transporting\-prisoners;
+輹 > two\-pieces\-of\-wood\-underneath\-a\-cart;
+袞 > ceremonial\-dress\-worn\-by\-the\-emperor;
+芿 > grass\-which\-has\-been\-cut\-and\-regrown;
+胬 > a\-disease''s\-name\-in\-chinese\-medicine;
+紱 > ribbon\-or\-cord\-used\-attach\-ornaments;
+禊 > semi\-annual\-ceremony\-of\-purification;
+戥 > a\-small\-steelyard\-for\-weighing\-money;
+寍 > used\-as\-a\-term\-of\-comparison\:\-rather;
+咗 > verbal\-particle\-of\-perfective\-aspect;
+丱 > child''s\-hairstyle\-bound\-in\-two\-tufts;
+䮤 > one\-of\-the\-36\-gardens\-in\-han\-dynasty;
+䬭 > name\-of\-a\-legendary\-ferocious\-animal;
+䪔 > cross\-bar\-of\-wood\-under\-the\-carriage;
+䧤 > name\-of\-a\-river\-in\-shandong\-province;
+䤌 > a\-kind\-of\-wine\-be\-brewed\-from\-grains;
+䠷 > the\-appearance\-of\-height\-in\-a\-person;
+䠅 > hands\-and\-feet\-chapped\-from\-the\-cold;
+䝤 > a\-primitive\-tribe\-in\-southwest\-china;
+䝟 > a\-fierce\-man\-eating\-animal\-in\-legend;
+䝝 > an\-exclamation\-indicating\-admiration;
+䛓 > an\-official\-position\-in\-former\-times;
+䚘 > the\-long\-and\-upright\-horns\-of\-cattle;
+䖒 > earthenware\-with\-the\-shape\-of\-a\-bean;
+䕎 > name\-of\-a\-variety\-of\-grass\-perennial;
+䓑 > name\-of\-a\-variety\-of\-grass\-duckweeds;
+䑗 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䑔 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䐱 > to\-pick\-the\-meat\-in\-between\-of\-bones;
+䏁 > unable\-to\-hear\-distinctly\-or\-clearly;
+䊠 > to\-give\-a\-supply\-f\-grain\-for\-rations;
+䉟 > a\-bamboo\-basket\-used\-to\-catch\-fishes;
+䈰 > a\-brush\-for\-washing\-kitchen\-utensils;
+䇼 > a\-bamboo\-vessel\-used\-to\-catch\-fishes;
+䄫 > a\-kind\-of\-sorghum\-with\-white\-sprouts;
+䄈 > sacrifice\-to\-happiness\-and\-good\-luck;
+䃤 > black\-colored\-grindstone\-or\-whestone;
+䃎 > name\-of\-a\-place\-\-small\-piece\-of\-coal;
+䂿 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+䂹 > sound\-of\-the\-falling\-pieces\-of\-rocks;
+䁶 > to\-look\-at\-something\-without\-winking;
+䁵 > newborn\-baby\-with\-the\-eyelids\-closed;
+㽅 > vessel\-for\-ceremony\-in\-ancient\-times;
+㸹 > cattle\-with\-white\-stripe\-on\-the\-back;
+㸗 > not\-a\-real\-father\-or\-a\-nature\-father;
+㳘 > a\-fountain\-or\-spring\-flows\-downwards;
+㮯 > whole\-piece\-of\-or\-unbroken\-firewoods;
+㮜 > a\-blocks\-engraved\-for\-holding\-things;
+㫪 > to\-pound\-in\-order\-to\-remove\-the\-husk;
+㟼 > name\-of\-a\-place\-in\-shandong\-province;
+㞔 > the\-upright\-bar\-for\-fastening\-a\-door;
+㝞 > pretend\-to\-be\-delicate\-and\-beautiful;
+㜹 > name\-of\-a\-folk\-song\-in\-ancient\-times;
+㚁 > the\-long\-tail\-feathers\-which\-curl\-up;
+阮 > ancient\-musical\-instrument\:\-surname;
+喔 > descriptive\-of\-crying\-or\-of\-crowing;
+琏 > vessel\-used\-to\-hold\-grain\-offerings;
+邕 > former\-or\-literary\-name\-for\-nanning;
+魑 > a\-mountain\-demon\-resembling\-a\-tiger;
+昶 > a\-long\-day\.\-bright\.\-extended\.\-clear;
+缧 > a\-chain\-or\-rope\-used\-bind\-criminals;
+螭 > a\-dragon\-whose\-horns\-have\-not\-grown;
+龀 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+肜 > to\-sacrifice\-on\-two\-successive\-days;
+邗 > an\-ancient\-place\-in\-the\-state\-of\-wu;
+龆 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+齠 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+齔 > lose\-baby\-teeth\-and\-get\-adult\-teeth;
+鐤 > huge\-tripod\-of\-bronze\-with\-two\-ears;
+觭 > one\-turning\-up\-and\-one\-turning\-down;
+褱 > to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+褢 > to\-carry\-in\-the\-bosom\-or\-the\-sleeve;
+艜 > a\-long\-narrow\-vessel\-with\-two\-masts;
+臿 > to\-separate\-the\-grain\-from\-the\-husk;
+縲 > a\-chain\-or\-rope\-used\-bind\-criminals;
+絰 > white\-hempen\-cloth\-worn\-by\-mourners;
+碪 > stone\-slab\-used\-for\-washing\-clothes;
+盇 > why\-not\?\-would\-it\-not\-be\-better\-to\?;
+滫 > water\-in\-which\-rice\-has\-been\-boiled;
+檑 > logs\-rolled\-down\-in\-defense\-of\-city;
+棳 > small\-pillars\-that\-support\-the\-roof;
+帗 > a\-multicolored\-prop\-used\-in\-dancing;
+嘠 > the\-chirping\-of\-birds\-loud\-laughter;
+唄 > final\-particle\-of\-assertion\-pathaka;
+倻 > phonetic\-used\-in\-korean\-place\-names;
+䵺 > boundary\-between\-agricultural\-lands;
+䵹 > insects\-that\-are\-injurious\-to\-crops;
+䭍 > to\-live\-with\-another\-at\-his\-expense;
+䬥 > cooked\-food\-which\-has\-become\-mouldy;
+䬙 > to\-dance\-and\-toss\-about\-in\-the\-wind;
+䠫 > to\-succumb\-to\-the\-effect\-of\-alcohol;
+䝦 > a\-kind\-of\-animal\-looks\-like\-leopard;
+䜠 > language\-of\-the\-savage\-or\-barbarian;
+䖺 > a\-legendary\-animal\-in\-ancient\-times;
+䖥 > insects\-that\-are\-injurious\-to\-crops;
+䒼 > a\-bamboo\-tray\-for\-raising\-silkworms;
+䑳 > a\-horizontal\-bar\-in\-front\-of\-a\-boat;
+䐧 > to\-reward\-or\-cheer\-troops\-with\-food;
+䎰 > name\-of\-a\-place\-in\-sichuan\-province;
+䍟 > a\-kind\-of\-fish\-net\-with\-fine\-meshes;
+䇨 > a\-bamboo\-basket\-for\-food\-containers;
+䆎 > grass\-and\-grains\-producing\-no\-fruit;
+䄻 > a\-second\-time\-growing\-of\-rice\-plant;
+䀚 > to\-lift\-up\-the\-eyes\-and\-look\-around;
+㿖 > carbuncle\-used\-in\-naming\-of\-a\-place;
+㺛 > name\-of\-a\-village\-in\-henan\-province;
+㷈 > embers\-kept\-for\-starting\-a\-new\-fire;
+㵁 > vast\-and\-boundless\-of\-flowing\-water;
+㳕 > water\-in\-which\-rice\-has\-been\-washed;
+㯪 > carved\-or\-patterned\-window\-railings;
+㫀 > huge\-tripod\-of\-bronze\-with\-two\-ears;
+璉 > vessel\-used\-to\-hold\-grain\-offerings;
+㠙 > a\-mountain\-paths\-name\-of\-a\-mountain;
+㓭 > to\-make\-ready\-the\-leather\-for\-shoes;
+㐷 > a\-kind\-of\-punishment\-in\-han\-dynasty;
+袱 > a\-piece\-of\-cloth\-used\-wrap\-bundles;
+挲 > to\-feel\-or\-fondle\-with\-the\-fingers;
+篑 > a\-bamboo\-basket\-for\-carrying\-earth;
+肓 > region\-between\-heart\-and\-diaphragm;
+滦 > river\-and\-county\-in\-hebei\-province;
+郗 > city\-under\-the\-chou\-dyn\.\-a\-surname;
+珏 > two\-pieces\-of\-jade\-joined\-together;
+綦 > dark\-grey\.\-variegated\.\-superlative;
+麇 > general\-name\-for\-the\-hornless\-deer;
+璎 > a\-necklace\-made\-of\-precious\-stones;
+掾 > a\-general\-designation\-of\-officials;
+郇 > an\-ancient\-feudal\-state\-in\-shaanxi;
+龘 > the\-appearance\-of\-a\-dragon\-walking;
+鴽 > a\-species\-of\-bird\-resembling\-quail;
+鄫 > state\-in\-today''s\-shandong\-province;
+鄇 > a\-name\-of\-a\-town\-in\-henan\-province;
+迿 > to\-be\-the\-first\-to\-begin\-a\-quarrel;
+轕 > great\-array\-of\-spears\-and\-chariots;
+輵 > great\-array\-of\-spears\-and\-chariots;
+輠 > grease\-pot\-hung\-under\-axle\-of\-cart;
+膲 > the\-three\-divisions\-of\-the\-viscera;
+紖 > a\-rope\-for\-leading\-cattle\-or\-horse;
+簣 > a\-bamboo\-basket\-for\-carrying\-earth;
+笮 > boards\-which\-support\-tiles\-on\-roof;
+砅 > cross\-stream\-by\-stepping\-on\-stones;
+瓔 > a\-necklace\-made\-of\-precious\-stones;
+璉 > a\-vessel\-used\-hold\-grain\-offerings;
+珱 > a\-necklace\-made\-of\-precious\-stones;
+玨 > two\-pieces\-of\-jade\-joined\-together;
+灤 > river\-and\-county\-in\-hebei\-province;
+梡 > tray\-for\-carrying\-sacrificial\-meat;
+挱 > to\-feel\-or\-fondle\-with\-the\-fingers;
+幵 > even\-level\.\-to\-raise\-in\-both\-hands;
+嫄 > an\-ancient\-emperor''s\-mother''s\-name;
+囷 > round\-shaped\-storage\-bin\-for\-grain;
+䴙 > a\-kind\-of\-bird\-resembling\-the\-duck;
+䲃 > a\-carp\-like\-fish\-with\-chicken\-feet;
+䩗 > to\-rule\-by\-might\-rather\-than\-right;
+䢕 > a\-group\-of\-people\-walking\-together;
+䚡 > bones\-in\-a\-horn\-of\-cattle\-and\-goat;
+䙬 > plaits\-on\-the\-sides\-of\-a\-petticoat;
+䐀 > to\-dismember\-body\-of\-the\-livestock;
+䎎 > to\-glide\-or\-to\-hover\-up\-in\-the\-air;
+䍊 > clay\-made\-blowing\-wind\-instruments;
+䈿 > belt\-of\-the\-canvas\-top\-on\-vehicles;
+䇮 > a\-bamboo\-mat\-used\-in\-ancient\-times;
+䅚 > closely\-growing\-of\-the\-rice\-plants;
+䄶 > rice\-plant\-growing\-the\-second\-time;
+䁾 > red\-and\-swelling\-of\-the\-eye\-socket;
+䁨 > to\-open\-the\-eyes\-with\-astonishment;
+㽛 > narrow\-trail\-of\-path\-in\-the\-fields;
+㺑 > dogs\-wormed\-through\-a\-narrow\-place;
+㹢 > a\-large\-ape\-found\-in\-western\-china;
+㹜 > two\-dogs\-are\-barking\-to\-each\-other;
+㹉 > a\-legendary\-animal\-with\-three\-feet;
+㷦 > to\-open\-the\-eyes\-with\-astonishment;
+㶀 > deep\-and\-vast\-of\-the\-flowing\-water;
+㰶 > to\-wrinkle\-the\-nose\-with\-sorrowful;
+㭲 > a\-wooden\-frame\-for\-carrying\-things;
+㡡 > screen\-to\-make\-a\-temporary\-kitchen;
+㠿 > a\-kind\-of\-delicate\-and\-fine\-fabric;
+㜺 > nice\-white\-color\-and\-looks\-so\-good;
+㜵 > with\-a\-charming\-sprightly\-carriage;
+㚩 > with\-a\-charming\-sprightly\-carriage;
+㙈 > name\-of\-a\-place\-in\-shanxi\-province;
+㖡 > the\-birds\-singing\-during\-the\-night;
+㕺 > looks\-big\-outside\-but\-empty\-inside;
+㕄 > to\-apply\-knowledge\-to\-final\-causes;
+社 > god\-of\-the\-soil\-and\-altars\-to\-him;
+瑟 > large\-stringed\-musical\-instrument;
+楞 > used\-for\-ceylon\-in\-buddhist\-texts;
+喽 > used\-in\-onomatopoetic\-expressions;
+嚅 > talk\-indistinctly\-and\-falteringly;
+裱 > to\-mount\-maps\-or\-scrolls\-to\-paste;
+猢 > a\-kind\-of\-monkey\-found\-in\-w\.china;
+蜮 > a\-fabulous\-creature\-like\-a\-turtle;
+呖 > used\-in\-onomatopoetic\-expressions;
+碡 > stone\-roller\-used\-to\-level\-fields;
+鄣 > name\-of\-ancient\-city\-in\-n\.jiangsu;
+粢 > grain\-offered\-in\-ritual\-sacrifice;
+簦 > large\-umbrella\-with\-a\-long\-handle;
+螓 > a\-small\-cicada\-with\-a\-square\-head;
+魊 > a\-mythical\-creature\-said\-hurl\-san;
+韐 > knee\-pad\-made\-of\-red\-dyed\-leather;
+軏 > cross\-bar\-at\-end\-of\-poles\-of\-cart;
+薀 > the\-hippuris\-or\-mare''s\-tail\-plant;
+蕰 > the\-hippuris\-or\-mare''s\-tail\-plant;
+聝 > to\-cut\-the\-left\-ears\-of\-the\-slain;
+耔 > to\-hoe\-up\-the\-earth\-around\-plants;
+簫 > musical\-instrument\-like\-pan\-pipes;
+簨 > a\-beam\-for\-hanging\-bells\-or\-drums;
+簘 > musical\-instrument\-like\-pan\-pipes;
+箾 > musical\-instrument\-like\-pan\-pipes;
+礳 > name\-of\-place\-in\-shan\-xi\-province;
+碫 > coarse\-stone\-\(used\-for\-whetstone\);
+璯 > jade\-ornament\-in\-the\-seams\-of\-cap;
+琯 > a\-jade\-tube\-used\-as\-an\-instrument;
+玁 > a\-dog\-with\-a\-long\-snout\-or\-muzzle;
+棟 > the\-main\-beams\-supporting\-a\-house;
+戠 > a\-sword\.\-potter''s\-clay\.\-to\-gather;
+嚦 > used\-in\-onomatopoetic\-expressions;
+嘍 > used\-in\-onomatopoetic\-expressions;
+呭 > final\-particle\-expressing\-consent;
+呡 > the\-corners\-of\-the\-mouth\-the\-lips;
+䶬 > hard\-fins\-on\-the\-back\-of\-a\-dragon;
+䶅 > a\-marmot\-like\-rat\-with\-a\-big\-head;
+䴓 > general\-term\-for\-small\-bird\-group;
+䬗 > blown\-or\-tossed\-about\-by\-the\-wind;
+䧉 > name\-of\-a\-pavilion\-in\-han\-dynasty;
+䥶 > cooking\-utensil\-used\-in\-old\-times;
+䥬 > a\-musical\-instrument\-in\-old\-times;
+䣜 > name\-of\-a\-county\-in\-ancient\-times;
+䣖 > name\-of\-a\-county\-in\-ancient\-times;
+䣕 > name\-of\-a\-county\-in\-ancient\-times;
+䣌 > residence\-of\-a\-prince\-or\-nobility;
+䡝 > a\-rear\-covering\-of\-a\-big\-carriage;
+䡊 > the\-protruded\-sides\-of\-a\-carriage;
+䠚 > to\-step\-on\-the\-ground\-with\-a\-bang;
+䖃 > the\-water\-is\-waving\-in\-the\-breeze;
+䕤 > name\-of\-a\-county\-in\-ancient\-times;
+䒧 > a\-vessel\-or\-utensil\-made\-of\-straw;
+䍲 > a\-kind\-of\-sheep\-with\-curled\-hairs;
+䋸 > back\-center\-suture\-of\-the\-clothes;
+䋛 > the\-clustered\-embroidery\-patterns;
+䊖 > to\-eat\-rice\-gruel\-mixed\-with\-meat;
+䆅 > to\-accumulate\-or\-to\-store\-up\-rice;
+䂧 > rocks\-clustered\-pile\-up\-togethers;
+䀿 > to\-have\-a\-casual\-and\-short\-glance;
+䀸 > to\-have\-a\-casual\-and\-short\-glance;
+㹗 > cattle\-and\-sheep\-have\-no\-children;
+㶲 > measuring\-unit\-for\-thermodynamics;
+㵺 > name\-of\-a\-stream\-in\-ancient\-times;
+㵐 > name\-of\-a\-river\-in\-hubei\-province;
+㵋 > name\-of\-a\-river\-in\-hunan\-province;
+㱒 > to\-scold\-or\-blame\-in\-a\-loud\-voice;
+㮾 > a\-place\-in\-today''s\-hunan\-province;
+㬈 > the\-sun\-was\-shining\-and\-it''s\-warm;
+㪊 > infested\-with\-bandits\-and\-robbers;
+㨘 > to\-blow\-the\-nose\-with\-the\-fingers;
+㟾 > name\-of\-a\-mountain\-in\-county\-jian;
+㟸 > name\-of\-pavilion\-in\-ancient\-china;
+㟉 > name\-of\-pavilion\-in\-ancient\-china;
+㟂 > name\-of\-cape\-in\-shandong\-province;
+㚪 > to\-make\-a\-deceptive\-show\-of\-power;
+㒍 > utterly\-weary\-in\-body\-and\-spirits;
+㐌 > a\-tribe\-of\-savages\-in\-south\-china;
+捻 > to\-twist\-or\-nip\-with\-the\-fingers;
+戌 > eleventh\-of\-terrestrial\-branches;
+搓 > to\-rub\-or\-roll\-between\-the\-hands;
+尧 > a\-legendary\-ancient\-emperor\-sage;
+婶 > wife\-of\-father''s\-younger\-brother;
+掬 > to\-grasp\-or\-hold\-with\-both\-hands;
+幛 > scroll\-of\-silk\-or\-cloth\-presente;
+棂 > carved\-or\-patterned\-window\-sills;
+氲 > life\-giving\-influences\-of\-nature;
+蚝 > hairy\-and\-poisonous\-caterpillars;
+澧 > river\-in\-northern\-hunan\-province;
+筮 > divination\-with\-stalks\-of\-plants;
+笪 > a\-coarse\-mat\-of\-rushes\-or\-bamboo;
+馓 > fried\-round\-cakes\-of\-wheat\-flour;
+箐 > to\-draw\-a\-bamboo\-bow\-or\-crossbow;
+扃 > a\-door\-bar\-placed\-outside\-a\-door;
+仉 > surname\-of\-the\-mother\-of\-mencius;
+骾 > any\-object\-that\-sticks\-in\-throat;
+饊 > fried\-round\-cakes\-of\-wheat\-flour;
+醼 > offer\-food\-and\-wine\-one''s\-guests;
+輧 > curtained\-carriage\-used\-by\-women;
+軿 > curtained\-carriage\-used\-by\-women;
+軙 > a\-chinese\-family\-name\-to\-arrange;
+贁 > to\-defeat\-to\-spoil\-or\-be\-spoiled;
+賏 > pearls\-or\-shells\-strung\-together;
+諊 > to\-make\-a\-judicial\-investigation;
+螆 > hairy\-and\-poisonous\-caterpillars;
+纙 > string\-on\-which\-coins\-are\-strung;
+糤 > fried\-round\-cakes\-of\-wheat\-flour;
+筴 > type\-of\-grass\-used\-in\-divination;
+琇 > coarse\-variety\-of\-jasper\-or\-jade;
+氳 > life\-giving\-influences\-of\-nature;
+櫺 > carved\-or\-patterned\-window\-sills;
+棫 > thorny\-shrub\-with\-yellow\-flowers;
+旓 > serrated\-edges\-on\-a\-chinese\-flag;
+嶲 > a\-name\-of\-an\-old\-town\-in\-sichuan;
+尭 > a\-legendary\-ancient\-emperor\-sage;
+嬸 > wife\-of\-father''s\-younger\-brother;
+塱 > place\-name\-in\-guangdong\-province;
+堯 > a\-legendary\-ancient\-emperor\-sage;
+剨 > sound\-of\-something\-being\-smashed;
+䵬 > black\-sound\-of\-the\-flowing\-water;
+䴍 > a\-kind\-of\-strange\-and\-weird\-bird;
+䴉 > general\-term\-for\-a\-group\-of\-bird;
+䳰 > a\-bird\-resembling\-the\-wild\-goose;
+䳈 > a\-bird\-resembling\-the\-wild\-goose;
+䱙 > a\-small\-kind\-of\-tuna\-or\-sturgeon;
+䰔 > dressed\-hair\-in\-a\-horizontal\-way;
+䰉 > dressed\-hair\-in\-a\-horizontal\-way;
+䪬 > sound\-of\-pressing\-something\-down;
+䩬 > an\-ornamental\-item\-on\-a\-scabbard;
+䧵 > a\-bird\-like\-the\-secretary\-falcon;
+䦎 > a\-mechanical\-device\-for\-lead\-ore;
+䥾 > to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥱 > to\-melt\-or\-cast\-by\-using\-a\-mould;
+䥙 > a\-speculum\-used\-in\-ancient\-times;
+䤷 > a\-lance\-with\-three\-or\-two\-points;
+䣢 > name\-of\-a\-place\-in\-ancient\-times;
+䣛 > name\-of\-a\-place\-in\-ancient\-times;
+䝁 > a\-kind\-of\-wild\-leguminous\-plants;
+䛶 > writings\-eulogizing\-adead\-person;
+䗤 > a\-kind\-of\-worm\-produced\-in\-water;
+䍰 > a\-plague\-or\-a\-pestilence\-of\-goat;
+䊊 > well\-boiled\-congee\-or\-rice\-gruel;
+䉈 > a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䈓 > a\-kind\-of\-bamboo\-with\-a\-red\-skin;
+䇈 > to\-put\-into\-a\-cupboard\-or\-closet;
+䇀 > ornaments\-of\-fine\-feather\-or\-fur;
+䅹 > a\-kind\-of\-drill\-for\-sowing\-grain;
+䅩 > crooked\-and\-winding\-of\-the\-grass;
+䄼 > name\-of\-a\-place\-in\-ancient\-times;
+䄷 > a\-measurement\-equal\-to\-120\-catty;
+䃪 > a\-platform\-for\-sacrificial\-rites;
+䂞 > a\-thorny\-tree\-about\-15\-feet\-high;
+㺜 > fierce\-dog\-with\-long\-shaggy\-hair;
+㺉 > a\-fierce\-animal\-of\-the\-dog\-tribe;
+㹡 > a\-rush\-and\-impatient\-disposition;
+㸡 > board\-to\-block\-the\-water\-current;
+㸚 > scattered\-or\-dispersed\-and\-clear;
+㴭 > immeasurable\-depth\-or\-profundity;
+㳆 > name\-of\-a\-place\-in\-ancient\-times;
+㱨 > to\-prepare\-a\-body\-for\-the\-coffin;
+㬇 > name\-of\-a\-state\-in\-ancient\-china;
+㩽 > branches\-to\-be\-a\-parasite\-a\-tree;
+㨒 > to\-cut\-open\-and\-clean\-\-\-\-as\-fish;
+㢲 > the\-5th\-of\-the\-eight\-diagrams\-八卦;
+㟨 > a\-fountain\-in\-the\-side\-of\-a\-hill;
+㛍 > to\-have\-one''s\-ambition\-fulfilled;
+㚡 > standing\-without\-a\-straight\-back;
+㚉 > to\-make\-a\-profit\-on\-sell\-and\-buy;
+㙰 > name\-of\-a\-place\-in\-ancient\-times;
+㕣 > a\-marsh\-at\-the\-foot\-of\-the\-hills;
+们 > adjunct\-pronoun\-indicate\-plural;
+呢 > interrogative\-or\-emphatic\-final;
+楼 > building\-of\-two\-or\-more\-stories;
+药 > leaf\-of\-dahurian\-angelica\-plant;
+齎 > take\-in\-both\-hands\-and\-offer\-to;
+丈 > unit\-of\-length\-equal\-3\.3\-meters;
+挑 > a\-load\-carried\-on\-the\-shoulders;
+樓 > building\-of\-two\-or\-more\-stories;
+祝 > pray\-for\-happiness\-or\-blessings;
+杉 > various\-species\-of\-pine\-and\-fir;
+朧 > condition\-or\-appearance\-of\-moon;
+朦 > condition\-or\-appearance\-of\-moon;
+霸 > rule\-by\-might\-rather\-than\-right;
+箪 > small\-bamboo\-basket\-for\-holding;
+醤 > any\-jam\-like\-or\-paste\-like\-food;
+酱 > any\-jam\-like\-or\-paste\-like\-food;
+胧 > condition\-or\-appearance\-of\-moon;
+炕 > the\-brick\-bed\-in\-northern\-china;
+亥 > last\-of\-twelve\-earthly\-branches;
+粤 > guangdong\-and\-guangxi\-provinces;
+粽 > dumpling\-made\-of\-glutinous\-rice;
+陇 > mountain\-located\-between\-shanxi;
+闾 > village\-of\-twenty\-five\-families;
+郦 > place\-in\-today''s\-henan\-province;
+鞅 > leather\-strap\-over\-horse''s\-neck;
+邺 > place\-in\-today''s\-henan\-province;
+铡 > sickle\-for\-cutting\-grass\-or\-hay;
+骧 > gallop\-about\-with\-head\-uplifted;
+骢 > horse\-with\-a\-bluish\-white\-color;
+蛳 > kind\-of\-snail\-with\-spiral\-shell;
+邳 > a\-department\-in\-the\-state\-of\-lu;
+郢 > state\-in\-today''s\-hubei\-province;
+骖 > two\-outside\-ones\-in\-three\-horse;
+轸 > cross\-board\-at\-rear\-of\-carriage;
+箜 > ancient\-string\-music\-instrument;
+郐 > state\-in\-today''s\-henan\-province;
+轹 > run\-over\-something\-with\-vehicle;
+栝 > a\-builder''s\-frame\-for\-measuring;
+獍 > an\-animal\-which\-eats\-its\-mother;
+鼗 > small\-revolving\-drum\-with\-knobs;
+鼒 > large\-tripod\-caldron\-with\-small;
+鶖 > large\-waterfowl\-with\-naked\-head;
+驤 > gallop\-about\-with\-head\-uplifted;
+驄 > horse\-with\-a\-bluish\-white\-color;
+驂 > two\-outside\-ones\-in\-three\-horse;
+騄 > name\-of\-a\-legendary\-swift\-horse;
+駬 > name\-of\-a\-legendary\-swift\-horse;
+餖 > food\-item\-set\-out\-for\-show\-only;
+頣 > to\-view\-others\-with\-raised\-eyes;
+隴 > mountain\-located\-between\-shanxi;
+閭 > village\-of\-twenty\-five\-families;
+鍘 > sickle\-for\-cutting\-grass\-or\-hay;
+鋐 > state\-in\-today''s\-hubei\-province;
+醬 > any\-jam\-like\-or\-paste\-like\-food;
+酈 > place\-in\-today''s\-henan\-province;
+鄶 > state\-in\-today''s\-henan\-province;
+鄴 > place\-in\-today''s\-honan\-province;
+鄚 > place\-in\-today''s\-hebei\-province;
+郔 > place\-name\-in\-shandong\-province;
+邽 > name\-of\-a\-county\-in\-han\-dynasty;
+邶 > place\-in\-today''s\-henan\-province;
+轢 > run\-over\-something\-with\-vehicle;
+軫 > cross\-board\-at\-rear\-of\-carriage;
+軨 > lattice\-work\-on\-front\-and\-sides;
+踋 > the\-foot\-or\-feet\-cast\-of\-a\-play;
+覇 > rule\-by\-might\-rather\-than\-right;
+襭 > tuck\-up\-hem\-of\-garment\-and\-wrap;
+裋 > cotton\-clothes\-of\-a\-boy\-servant;
+衺 > slit\-in\-garment\-to\-aid\-movement;
+蠨 > a\-kind\-of\-spider\-with\-long\-legs;
+螣 > mythological\-wingless\-dragon\-of;
+螄 > kind\-of\-snail\-with\-spiral\-shell;
+苤 > brassica\-campestris\-subsp\.\-rapa;
+艕 > two\-boats\-fastened\-side\-by\-side;
+膫 > the\-fat\-covering\-the\-intestines;
+縗 > sackcloth\-worn\-on\-breast\-during;
+糉 > dumpling\-made\-of\-glutinous\-rice;
+粵 > guangdong\-and\-guangxi\-provinces;
+簞 > small\-bamboo\-basket\-for\-holding;
+篪 > a\-bamboo\-flute\-with\-seven\-holes;
+瞖 > a\-cataract\-or\-film\-over\-the\-eye;
+畤 > place\-for\-worshipping\-the\-haven;
+甗 > earthenware\-vessel\-in\-two\-parts;
+烳 > to\-travel\-by\-the\-light\-of\-torch;
+灕 > short\-name\-for\-guangxi\-province;
+沴 > foul\-and\-poisonous\-in\-confusion;
+樐 > a\-lookout\-turret\-on\-a\-city\-wall;
+棻 > kind\-of\-wood\-from\-which\-perfume;
+枌 > variety\-of\-elm\-with\-small\-seeds;
+垟 > clay\-sheep\-buried\-with\-the\-dead;
+咠 > to\-whisper\.\-to\-blame\-to\-slander;
+叧 > to\-cut\-meat\-off\-away\-from\-bones;
+冔 > cap\-worn\-during\-the\-yin\-dynasty;
+們 > adjunct\-pronoun\-indicate\-plural;
+亼 > to\-assemble\.\-to\-gather\-together;
+乄 > shime\:\-to\-find\-a\-place\-to\-dwell;
+䶵 > a\-bamboo\-flute\-with\-seven\-holes;
+䵸 > the\-toad\-that\-lives\-in\-the\-moon;
+䳡 > a\-kind\-of\-bird\-in\-ancient\-books;
+䲞 > a\-second\-general\-name\-for\-perch;
+䱌 > a\-second\-name\-for\-the\-globefish;
+䰝 > a\-large\-earthen\-pot\-for\-cooking;
+䰀 > dressed\-hair\-of\-a\-chinese\-woman;
+䮸 > to\-move\-slowly\-and\-then\-swiftly;
+䬻 > to\-entertain\-a\-departing\-friend;
+䪾 > to\-deal\-with\-affairs\-cautiously;
+䪍 > a\-container\-for\-bows\-and\-arrows;
+䨣 > leather\-to\-be\-moistened\-by\-rain;
+䦇 > dressed\-hair\-of\-a\-chinese\-woman;
+䣣 > name\-of\-a\-place\-name\-of\-a\-place;
+䟚 > to\-sit\-with\-the\-legs\-spread\-out;
+䜷 > fermented\-and\-seasoned\-soybeans;
+䜪 > name\-of\-a\-pavilion\-in\-old\-times;
+䛀 > reasonable\-authority\-statements;
+䘅 > a\-small\-gadflies\-and\-mosquitoes;
+䐃 > fat\-in\-the\-abdomen\-or\-intestine;
+䍛 > a\-kind\-of\-tool\-used\-to\-get\-fish;
+䊤 > vegetable\-mixed\-with\-thick\-soup;
+䂲 > standard\-weights\-used\-in\-scales;
+䁰 > to\-look\-in\-a\-evil\-or\-wicked\-way;
+㼖 > gourd\-used\-as\-a\-ladle\-or\-dipper;
+㻫 > a\-gem\-or\-ornament\-on\-a\-scabbard;
+㯭 > a\-lookout\-turret\-on\-a\-city\-wall;
+㮇 > a\-builder''s\-frame\-for\-measuring;
+㬹 > tendons\-of\-the\-heel\-of\-the\-foot;
+㬁 > the\-sun\-is\-shining\-on\-the\-water;
+㧽 > name\-of\-a\-county\-in\-han\-dynasty;
+轢 > run\-over\-something\-with\-vehicle;
+閭 > village\-of\-twenty\-five\-families;
+樓 > building\-of\-two\-or\-more\-stories;
+㥆 > indulgent\-and\-without\-restraint;
+㗘 > to\-bite\-the\-hard\-and\-solid\-food;
+㓢 > to\-cut\-the\-flesh\-from\-the\-bones;
+㓔 > faded\-and\-fallen\-\-\-\-as\-blossoms;
+㒻 > to\-go\-forward\-with\-eyes\-covered;
+幹 > trunk\-of\-tree\-or\-of\-human\-body;
+尺 > chinese\-measure\-approx\.\-''foot'';
+米 > hulled\-or\-husked\-uncooked\-rice;
+鹏 > fabulous\-bird\-of\-enormous\-size;
+喂 > interjection\-to\-call\-attention;
+潇 > sound\-of\-beating\-wind\-and\-rain;
+禹 > legendary\-hsia\-dynasty\-founder;
+斟 > to\-pour\-wine\-or\-tea\-into\-a\-cup;
+萼 > the\-stem\-and\-calyx\-of\-a\-flower;
+阀 > powerful\-and\-influential\-group;
+楷 > model\-style\-of\-chinese\-writing;
+辄 > sides\-of\-chariot\-where\-weapons;
+俑 > wooden\-figure\-buried\-with\-dead;
+嘹 > used\-describe\-clarity\-of\-voice;
+轼 > horizontal\-wooden\-bar\-in\-front;
+馑 > time\-of\-famine\-or\-crop\-failure;
+伥 > ghost\-of\-one\-devoured\-by\-tiger;
+绶 > silk\-ribbon\-attached\-as\-a\-seal;
+鬈 > fine\-growth\-of\-hair\-curly\-hair;
+磔 > downward\-stroke\-slanting\-right;
+裢 > folding\-purse\-inserted\-in\-belt;
+枸 > kind\-of\-aspen\-found\-in\-sichuan;
+芊 > exuberant\-and\-vigorous\-foliage;
+鄄 > name\-of\-a\-district\-in\-shandong;
+鼹 > a\-kind\-of\-insectivorous\-rodent;
+莼 > an\-edible\-water\-plant\-brasenia;
+圬 > plaster\-over\-with\-layer\-of\-mud;
+莩 > membrane\-lining\-inside\-of\-reed;
+诶 > an\-exclamation\-of\-confirmation;
+褙 > paper\-or\-cloth\-pasted\-together;
+茌 > name\-of\-a\-district\-in\-shandong;
+鼴 > a\-kind\-of\-insectivorous\-rodent;
+鶋 > a\-sea\-bird\-with\-a\-white\-breast;
+鵬 > fabulous\-bird\-of\-enormous\-size;
+鯏 > a\-dialect\.\.\.\.\.\.\.\.\-name\-of\-fish;
+饉 > time\-of\-famine\-or\-crop\-failure;
+饁 > carry\-meal\-to\-workers\-in\-field;
+閥 > powerful\-and\-influential\-group;
+鎫 > ornament\-over\-the\-horse''s\-head;
+輒 > sides\-of\-chariot\-where\-weapons;
+赙 > gift\-of\-money\-help\-pay\-funeral;
+賻 > gift\-of\-money\-help\-pay\-funeral;
+誒 > an\-exclamation\-of\-confirmation;
+詤 > to\-make\-wild\-statements\-to\-lie;
+褳 > folding\-purse\-inserted\-in\-belt;
+蘴 > young\-shoots\-of\-the\-rapeturnip;
+莝 > to\-chop\-straw\-fine\-for\-animals;
+腠 > between\-the\-skin\-and\-the\-flesh;
+翿 > streamer\-adorned\-with\-feathers;
+綬 > silk\-ribbon\-attached\-as\-a\-seal;
+筥 > round\-shaped\-bamboo\-basket\-for;
+痄 > scrofulous\-swellings\-and\-sores;
+玤 > a\-kind\-of\-gem\-inferior\-to\-jade;
+煠 > to\-fry\-in\-fat\-or\-oil\.\-to\-scald;
+瀟 > sound\-of\-beating\-wind\-and\-rain;
+潏 > fareshare\-reclaimed\-from\-river;
+漼 > having\-the\-appearance\-of\-depth;
+欞 > the\-lattice\-of\-a\-window\-a\-sill;
+曚 > twilight\-just\-before\-sun\-rises;
+斚 > a\-small\-cup\-of\-stone\-with\-ears;
+扊 > upright\-bar\-for\-fastening\-door;
+慜 > name\-of\-a\-monk\-in\-tang\-dynasty;
+崠 > place\-name\-in\-guangxi\-province;
+岽 > place\-name\-in\-guangxi\-province;
+岝 > name\-of\-a\-mountain\-in\-shandong;
+堭 > a\-dry\-moat\-outside\-a\-city\-wall;
+堎 > character\-used\-for\-place\-names;
+嚹 > a\-particle\-implying\-completion;
+匳 > ladies\-toilet\-case\-with\-mirror;
+刵 > punishment\-by\-cutting\-off\-ears;
+䲁 > general\-term\-of\-a\-kind\-of\-fish;
+䰚 > the\-top\-part\-of\-the\-rice\-gruel;
+䯵 > hair\-style\-for\-little\-children;
+䯤 > boneware\-used\-to\-comb\-the\-hair;
+䯒 > the\-upper\-part\-of\-the\-shinbone;
+䮔 > a\-young\-and\-fleet\-footed\-horse;
+䭺 > a\-horse\-to\-raise\-its\-head\-high;
+䫮 > to\-bend\-or\-lower\-of\-one''s\-head;
+䫆 > the\-front\-and\-back\-of\-the\-neck;
+䧒 > steps\-leading\-up\-to\-a\-building;
+䤛 > component\-parts\-of\-a\-cross\-bow;
+䣹 > to\-brew\-10\-percent\-of\-the\-wine;
+䣵 > to\-brew\-the\-wine\-a\-second\-time;
+䣬 > the\-shiny\-colorful\-of\-the\-wine;
+䢾 > name\-of\-an\-ancient\-small\-state;
+䡃 > a\-tool\-for\-brushing\-the\-thread;
+䜲 > name\-of\-a\-village\-in\-old\-china;
+䘓 > thick\-blood\-of\-cattle\-and\-goat;
+䓿 > a\-second\-name\-for\-lotus\-flower;
+䓹 > to\-stuff\-full\-and\-to\-gulp\-down;
+䍁 > the\-hem\-or\-border\-of\-a\-garment;
+䋴 > silk\-fabrics\-with\-mixed\-colors;
+䋳 > cloth\-or\-paper\-pasted\-together;
+䉤 > a\-bamboo\-ware\-for\-washing\-rice;
+䉛 > bamboo\-basket\-for\-washing\-rice;
+䉓 > mattress\-made\-of\-bamboo\-strips;
+䈹 > a\-bamboo\-ware\-for\-washing\-rice;
+䇬 > thin\-bamboo\-laths\-knitted\-sail;
+䇧 > to\-fill\-an\-opening\-with\-bamboo;
+䄡 > northern\-minority\-ethnic\-group;
+䃶 > rugged\-and\-uneven\-of\-the\-rocks;
+䃚 > rugged\-land\-of\-sand\-and\-pebble;
+䃂 > dull\-sound\-of\-the\-tolling\-bell;
+㼡 > a\-small\-jar\-with\-a\-small\-mouth;
+㵷 > turbulent\-flowing\-of\-the\-water;
+㵏 > having\-the\-appearance\-of\-depth;
+㲹 > the\-dry\-soil\-on\-the\-river\-side;
+㲝 > fine\-hair\-of\-birds\-and\-animals;
+㯅 > the\-branches\-growing\-downwards;
+㮂 > an\-appliance\-used\-to\-lift\-food;
+㬤 > wet\-clothes\-not\-completely\-dry;
+㪾 > to\-cut\-the\-flesh\-from\-the\-bone;
+㨙 > to\-clasp\-or\-hold\-under\-the\-arm;
+㦲 > a\-particle\-expressing\-surprise;
+㥋 > sound\-of\-the\-anguish\-of\-sorrow;
+㤯 > clever\-or\-smart\-in\-a\-small\-way;
+㤔 > to\-concede\-or\-submit\-willingly;
+㣇 > a\-kind\-of\-beast\-with\-long\-hair;
+㡞 > a\-sack\-used\-to\-feed\-the\-horses;
+㠣 > a\-mountain\-in\-jiangxi\-province;
+㞯 > the\-turning\-area\-of\-a\-mountain;
+㜆 > commonly\-known\-as\-mother\-in\-wu;
+㙚 > red\-colored\-hard\-and\-solid\-mud;
+㘞 > yelling\-sound\-of\-towing\-a\-boat;
+㔩 > hair\-ornments\-used\-in\-old\-time;
+㔀 > to\-brand\-criminals\-on\-the\-face;
+迦 > character\-for\-transliteration;
+庵 > buddhist\-monastery\-or\-nunnery;
+庚 > seventh\-of\-ten\-cyclical\-stems;
+趣 > what\-attracts\-one''s\-attention;
+畔 > boundary\-path\-dividing\-fields;
+夾 > be\-wedged\-or\-inserted\-between;
+辆 > numerary\-adjunct\-for\-vehicles;
+夹 > be\-wedged\-or\-inserted\-between;
+怔 > a\-disease\-resembling\-neurosis;
+陌 > foot\-path\-between\-rice\-fields;
+骆 > a\-white\-horse\-with\-black\-mane;
+楣 > crossbeam\-above\-or\-under\-gate;
+璧 > piece\-of\-jade\-with\-hole\-in\-it;
+膻 > rank\-odor\-\(of\-sheep\-or\-goats\);
+玑 > pearl\-that\-is\-not\-quite\-round;
+唢 > flute\-like\-musical\-instrument;
+楂 > a\-raft\.\-to\-hew\.\-to\-fell\-trees;
+犒 > entertain\-victorious\-soldiers;
+矍 > look\-about\-in\-fright\-or\-alarm;
+擤 > to\-blow\-the\-nose\-with\-fingers;
+芡 > plant\-allied\-to\-the\-waterlily;
+籼 > non\-glutinous\-long\-grain\-rice;
+桡 > bent\-or\-twisted\-piece\-of\-wood;
+黻 > special\-pattern\-of\-embroidery;
+嵝 > goulou\-mountain\-peak\-in\-hunan;
+垭 > character\-used\-in\-place\-names;
+硖 > \<arch\>\-town\-in\-hebei\-province;
+邡 > name\-of\-a\-district\-in\-sichuan;
+讠 > simplified\-kangxi\-radical\-149;
+噻 > character\-used\-in\-translation;
+疬 > scrofulous\-lumps\-or\-swellings;
+蔟 > frame\-on\-which\-silkworms\-spin;
+垧 > variable\-unit\-of\-land\-measure;
+鬏 > a\-coiffure\-on\-top\-of\-the\-head;
+筘 > \(a\-measure\-of\-width\-of\-cloth\);
+缑 > cord\-binding\-on\-hilt\-of\-sword;
+簖 > bamboo\-trap\-for\-catching\-fish;
+庋 > a\-cupboard\-or\-pantry\-to\-store;
+甍 > rafters\-supporting\-roof\-tiles;
+駹 > black\-horse\-with\-a\-white\-face;
+駱 > a\-white\-horse\-with\-black\-mane;
+饎 > wine\-and\-food\-eaten\-with\-wine;
+釄 > wine\-brew\-for\-the\-second\-time;
+釁 > smear\-with\-blood\-in\-sacrifice;
+迧 > a\-chinese\-family\-name\-arrange;
+轘 > tear\-asunder\-between\-chariots;
+輛 > numerary\-adjunct\-for\-vehicles;
+輙 > sides\-of\-chariot\-were\-weapons;
+輌 > numerary\-adjunct\-for\-vehicles;
+詀 > garrulous\-to\-whisper\.\-to\-joke;
+訹 > to\-beguile\-with\-false\-stories;
+藊 > a\-kind\-of\-bean\-with\-flat\-pods;
+舠 > long\-narrow\-knife\-shaped\-boat;
+翣 > feathers\-used\-decorate\-coffin;
+縓 > orange\-or\-reddish\-yellow\-silk;
+緱 > cord\-binding\-on\-hilt\-of\-sword;
+糏 > rice\-grits\-left\-after\-hulling;
+篘 > a\-utensil\-used\-to\-filter\-wine;
+秈 > non\-glutinous\-long\-grain\-rice;
+硤 > \<arch\>\-town\-in\-hebei\-province;
+矰 > arrow\-with\-attached\-silk\-cord;
+癧 > scrofulous\-lumps\-or\-swellings;
+璣 > pearl\-that\-is\-not\-quite\-round;
+玃 > a\-large\-ape\-found\-in\-w\.\-china;
+猇 > the\-scream\-or\-roar\-of\-a\-tiger;
+牸 > the\-female\-of\-certain\-animals;
+滙 > waters\-converging\-to\-one\-spot;
+滘 > character\-used\-in\-place\-names;
+橈 > bent\-or\-twisted\-piece\-of\-wood;
+椊 > to\-fit\-a\-handle\-into\-a\-socket;
+暐 > the\-bright\-shining\-of\-the\-sun;
+昳 > the\-declining\-sun\-in\-the\-west;
+捬 > press\-down\-heavily\-with\-hands;
+抔 > take\-or\-hold\-up\-in\-both\-hands;
+嶁 > goulou\-mountain\-peak\-in\-hunan;
+崾 > place\-name\-in\-shanxi\-province;
+峫 > mountain\-in\-shandong\-province;
+姅 > woman\-at\-time\-of\-menstruation;
+壼 > palace\-corridor\-or\-passageway;
+壍 > moat\-around\-a\-city\.\-a\-channel;
+埡 > character\-used\-in\-place\-names;
+嗪 > character\-used\-in\-translation;
+嗩 > flute\-like\-musical\-instrument;
+啩 > particle\-implying\-probability;
+叐 > to\-prick\-a\-dog\-to\-make\-him\-go;
+卐 > swastika\-fourth\-of\-auspicious;
+卍 > swastika\-fourth\-of\-auspicious;
+䶕 > irregular\-and\-prominent\-teeth;
+䵘 > dosen''t\-t\-stick\-to\-each\-other;
+䲵 > a\-general\-name\-of\-small\-birds;
+䯆 > small\-and\-thin\-piece\-of\-bones;
+䫲 > thin\-and\-sickly\-in\-appearance;
+䫤 > between\-the\-eyebrows\-and\-eyes;
+䫡 > a\-long\-shape\-of\-head\-and\-face;
+䫋 > female\-attendants\-or\-servants;
+䧐 > a\-mountain\-in\-shanxi\-province;
+䥣 > an\-instrument\-for\-boring\-wood;
+䥉 > the\-curved\-iron\-part\-of\-a\-hoe;
+䤒 > wine\-made\-from\-glutinous\-rice;
+䤍 > rotten\-paste\-or\-soybean\-sauce;
+䠽 > height\-or\-stature\-of\-a\-person;
+䠱 > to\-walk\-slowly\-and\-cautiously;
+䟧 > sound\-of\-treading\-or\-stepping;
+䞇 > gifts\-to\-superiors\-or\-friends;
+䝽 > name\-of\-a\-person\-in\-old\-china;
+䝙 > a\-kind\-of\-animal\-like\-a\-tiger;
+䝗 > a\-kind\-of\-animal\-like\-a\-tiger;
+䜈 > to\-speak\-on\-behalf\-of\-another;
+䘳 > a\-garment\-of\-single\-thickness;
+䏼 > what\-is\-left\-over\-of\-the\-food;
+䎢 > to\-measure\-by\-pints\-and\-pecks;
+䎑 > flying\-over\-the\-water\-surface;
+䍮 > young\-goat\-under\-one\-year\-old;
+䍂 > tools\-to\-draw\-water\-or\-liquid;
+䌿 > the\-breadth\-of\-cloth\-or\-paper;
+䌗 > the\-left\-over\-of\-drawing\-silk;
+䌈 > to\-get\-something\-with\-a\-lasso;
+䉥 > a\-small\-basket\-for\-chopsticks;
+䆺 > whirling\-of\-the\-flowing\-water;
+䅢 > mature\-or\-ripen\-of\-the\-grains;
+㿶 > the\-sides\-of\-a\-shoe\-or\-gutter;
+㽰 > carved\-window\-frame\-on\-a\-door;
+㹯 > a\-kind\-of\-animal\-like\-a\-tiger;
+㹂 > untamed\-and\-indocility\-cattle;
+㴄 > the\-water\-flowing\-in\-a\-turned;
+㰉 > the\-hazel\-nut\-or\-filbert\-tree;
+㭟 > torture\-used\-in\-ancient\-times;
+㫐 > distant\-and\-indistinguishable;
+㡻 > name\-of\-a\-small\-ancient\-state;
+㛐 > wife\-of\-one''s\-elder''s\-brother;
+㚆 > to\-do\-something\-in\-an\-old\-way;
+㖟 > to\-deliver\-over\-to\-personally;
+件 > numerary\-adjunct\-for\-article;
+吗 > final\-interrogative\-particle;
+麽 > interrogative\-final\-particle;
+矣 > particle\-of\-completed\-action;
+乒 > used\-with\-pong\-for\-ping\-pong;
+乓 > used\-with\-ping\-for\-ping\-pong;
+咚 > used\-as\-description\-of\-sound;
+琅 > a\-variety\-of\-white\-carnelian;
+孰 > who\?\-which\?\-what\?\-which\-one\?;
+戊 > fifth\-of\-ten\-celestial\-stems;
+渲 > add\-repeated\-washes\-of\-color;
+咫 > foot\-measure\-of\-zhou\-dynasty;
+饷 > rations\-and\-pay\-for\-soldiers;
+汶 > a\-river\-in\-shandong\-province;
+叁 > bank\-form\-of\-numeral\-''three'';
+壬 > ninth\-of\-ten\-celestial\-stems;
+柩 > coffin\-which\-contains\-corpse;
+桠 > the\-forking\-branch\-of\-a\-tree;
+甏 > a\-squat\-jar\-for\-holding\-wine;
+笞 > bamboo\-rod\-used\-for\-beatings;
+阗 > a\-place\-in\-xinjiang\-province;
+铉 > device\-for\-carrying\-a\-tripod;
+觥 > a\-cup\-made\-of\-horn\-obstinate;
+裣 > draw\-one''s\-hands\-into\-sleeve;
+崃 > mountain\-in\-sichuan\-province;
+罘 > screen\-used\-in\-ancient\-times;
+氇 > thick\-rough\-serge\-from\-tibet;
+埴 > soil\-with\-large\-clay\-content;
+昴 > one\-of\-the\-28\-constellations;
+菹 > salted\-or\-pickled\-vegetables;
+麼 > interrogative\-final\-particle;
+鵭 > a\-small\-bird\-with\-black\-neck;
+饟 > rations\-and\-pay\-for\-soldiers;
+餉 > rations\-and\-pay\-for\-soldiers;
+隒 > the\-appearance\-of\-a\-mountain;
+闐 > a\-place\-in\-xinjiang\-province;
+鉉 > device\-for\-carrying\-a\-tripod;
+醁 > a\-kind\-of\-green\-colored\-wine;
+邿 > a\-state\-in\-shandong\-province;
+轖 > framework\-of\-lattice\-on\-cart;
+觵 > a\-cup\-made\-of\-corn\-obstinate;
+襝 > draw\-one''s\-hands\-into\-sleeve;
+耇 > wrinkled\-face\-of\-the\-elderly;
+羴 > rank\-odour\-of\-sheep\-or\-goats;
+絃 > string\-on\-musical\-instrument;
+筻 > place\-name\-in\-hunan\-province;
+竚 > stand\-and\-wait\-for\-long\-time;
+睙 > to\-roll\-the\-eyeballs\-to\-look;
+瑂 > \(stone\-which\-resembles\-jade\);
+燺 > the\-dry\-at\-the\-fire\-to\-roast;
+灉 > a\-river\-in\-shandong\-province;
+瀔 > river\-name\-in\-henan\-province;
+汧 > name\-of\-a\-river\-in\-shangdong;
+氌 > thick\-rough\-serge\-from\-tibet;
+橵 > wood\-placed\-under\-roof\-tiles;
+椏 > the\-forking\-branch\-of\-a\-tree;
+曈 > twilight\-just\-before\-sunrise;
+旟 > an\-military\-flag\-oa\-standard;
+扨 > pick\-up\-with\-fork\-or\-pincers;
+扠 > pick\-up\-with\-fork\-or\-pincers;
+幰 > curtain\-at\-front\-of\-carriage;
+崍 > mountain\-in\-sichuan\-province;
+崀 > place\-name\-in\-hunan\-province;
+娀 > name\-of\-a\-concubine\-of\-di\-ku;
+埄 > whirling\-of\-dust\-in\-the\-wind;
+嗎 > final\-interrogative\-particle;
+䵠 > rushes\-used\-form\-making\-mats;
+䳍 > a\-kind\-of\-pheasant\-like\-bird;
+䱱 > a\-kind\-of\-slippery\-long\-fish;
+䮇 > black\-horse\-with\-white\-thigh;
+䬠 > the\-falling\-of\-snow\-and\-rain;
+䪭 > a\-kind\-of\-musical\-instrument;
+䪉 > metal\-decoration\-on\-a\-halter;
+䩡 > a\-kind\-of\-boots\-in\-old\-times;
+䦜 > name\-of\-a\-state\-in\-old\-times;
+䥺 > name\-of\-a\-double\-edged\-sword;
+䥕 > the\-blade\-or\-edge\-of\-a\-spade;
+䤉 > emptied\-the\-drink\-completely;
+䣡 > name\-of\-a\-place\-in\-old\-times;
+䣏 > name\-of\-a\-state\-in\-old\-times;
+䢼 > name\-of\-a\-state\-in\-old\-times;
+䡑 > the\-rim\-or\-felloe\-of\-a\-wheel;
+䠴 > with\-a\-symmetric\-well\-formed;
+䝵 > to\-thank\-with\-money\-or\-gifts;
+䙗 > a\-swaddling\-cloth\-for\-infant;
+䘻 > curtain\-on\-a\-carriage\-or\-car;
+䘺 > a\-seam\-which\-has\-come\-unsewn;
+䘵 > hissing\-sound\-of\-the\-clothes;
+䔛 > fibrous\-plant\-of\-which\-cloth;
+䓜 > salted\-or\-pickled\-vegetables;
+䑹 > a\-numerary\-adjunct\-for\-ships;
+䍠 > turban\-used\-in\-ancient\-times;
+䌋 > a\-herchief\-hung\-at\-the\-waist;
+䋩 > pretty\-and\-fine\-silk\-fabrics;
+䋏 > thick\-and\-big\-ropes\-or\-cords;
+䋋 > a\-kind\-of\-spring\-fishing\-net;
+䆶 > noise\-of\-a\-mouse\-in\-the\-cave;
+䅳 > stalk\-of\-the\-panicled\-millet;
+䅭 > a\-variety\-of\-panicled\-millet;
+䅣 > a\-variety\-of\-panicled\-millet;
+䅌 > stalk\-of\-wheat\-or\-rice\-plant;
+䃋 > a\-fine\-stone\-resembling\-jade;
+䂵 > sound\-of\-bumping\-or\-striking;
+䂯 > a\-fine\-stone\-resembling\-jade;
+䂫 > noise\-of\-stones\-rolling\-down;
+䂥 > a\-fine\-stone\-resembling\-jade;
+䀳 > not\-to\-look\-straight\-forward;
+㾴 > the\-erythema\-of\-acne\-rosacea;
+㹥 > a\-yellow\-dog\-with\-black\-head;
+㹁 > generally\-called\-the\-animals;
+㵵 > swift\-currents\-of\-the\-stream;
+㵎 > a\-mountain\-stream\-or\-torrent;
+㴚 > the\-small\-ditch\-in\-the\-field;
+㰆 > an\-instrument\-to\-blow\-a\-fire;
+㰁 > a\-tree\-with\-slanted\-branches;
+㯳 > a\-kind\-of\-tool\-to\-adjust\-bow;
+㮴 > a\-numerary\-adjunct\-for\-ships;
+㥜 > unsuccessful\-in\-one''s\-career;
+㡱 > to\-cauterize\-by\-burning\-moxa;
+㠱 > to\-set\-with\-the\-legs\-clossed;
+㜌 > a\-different\-name\-for\-breasts;
+㙾 > hills\-with\-lots\-of\-big\-rocks;
+㙛 > a\-person''s\-name\-in\-old\-times;
+㗾 > to\-give\-vent\-to\-the\-feelings;
+㗆 > sound\-of\-the\-ringed\-pheasant;
+㓳 > use\-knife\-to\-split\-something;
+㑟 > insincere\-and\-cunning\-person;
+啦 > final\-particle\-of\-assertion;
+综 > arrange\-threads\-for\-weaving;
+拭 > wipe\-away\-stains\-with\-cloth;
+叮 > exhort\-or\-enjoin\-repeatedly;
+戟 > halberd\-with\-crescent\-blade;
+凛 > to\-shiver\-with\-cold\-or\-fear;
+栋 > main\-beams\-supporting\-house;
+髦 > flowing\-hair\-of\-young\-child;
+筝 > stringed\-musical\-instrument;
+丙 > third\-of\-the\-heavenly\-stems;
+沂 > river\-in\-southeast\-shandong;
+笈 > bamboo\-box\-used\-carry\-books;
+瓢 > ladle\-made\-from\-dried\-gourd;
+呗 > final\-particle\-of\-assertion;
+簧 > reed\-of\-woodwind\-instrument;
+蛟 > scaly\-dragon\-with\-four\-legs;
+敕 > an\-imperial\-order\-or\-decree;
+裟 > a\-cassock\-or\-robe\-of\-a\-monk;
+碴 > chipped\-edge\-of\-a\-container;
+瘴 > malaria\-pestilential\-vapors;
+纶 > green\-silk\-thread\-or\-tassel;
+罡 > the\-name\-of\-a\-certain\-stars;
+癸 > last\-of\-ten\-celestial\-stems;
+橇 > a\-sledge\-for\-transportation;
+皋 > the\-high\-land\-along\-a\-river;
+潍 > county\-in\-shandong\-province;
+洙 > name\-of\-a\-river\-in\-shandong;
+獠 > to\-hunt\-at\-night\-by\-torches;
+麒 > legendary\-auspicious\-animal;
+珩 > the\-top\-gem\-of\-the\-pendants;
+谥 > to\-confer\-posthumous\-titles;
+秫 > glutinous\-variety\-of\-millet;
+竽 > ancient\-woodwind\-instrument;
+崮 > \(element\-in\-mountain\-names\);
+愀 > to\-change\-one''s\-countenance;
+鄢 > name\-of\-a\-district\-in\-honan;
+癍 > unhealthy\-marks\-on\-the\-skin;
+鄞 > county\-in\-zhejiang\-province;
+雒 > black\-horse\-with\-white\-mane;
+旒 > fringes\-of\-pearls\-on\-crowns;
+琊 > a\-place\-in\-eastern\-shandong;
+蚨 > a\-kind\-of\-water\-beetle\-cash;
+毳 > fine\-hair\-or\-fur\-on\-animals;
+瘥 > to\-recover\-from\-any\-disease;
+渑 > name\-of\-a\-river\-in\-shandong;
+浈 > river\-in\-guangdong\-province;
+嘧 > \(phonetic\)\-as\-in\-pyrimidine;
+鵾 > a\-bird\-resembling\-the\-crane;
+鮨 > epinephelus\-septemfasciatus;
+飦 > well\-boiled\-congee\-or\-gruel;
+雊 > the\-crow\-of\-a\-male\-pheasant;
+隺 > a\-bird\-flying\-high\-ambition;
+醱 > to\-brew\-for\-the\-second\-time;
+醗 > to\-brew\-for\-the\-second\-time;
+酖 > wine\-with\-bird\-poison\-added;
+鄿 > county\-in\-xinjiang\-province;
+鄩 > county\-in\-shandong\-province;
+鄍 > a\-town\-in\-shandong\-province;
+蹚 > tread\-through\-mud\-and\-water;
+謚 > to\-confer\-posthumous\-titles;
+褘 > ceremonial\-gowns\-of\-a\-queen;
+蟰 > small\-spider\-with\-long\-legs;
+蛕 > the\-common\-intestinal\-worms;
+肷 > area\-between\-waist\-and\-hips;
+綸 > green\-silk\-thread\-or\-tassel;
+綜 > arrange\-threads\-for\-weaving;
+籄 > a\-basket\-for\-carrying\-earth;
+箏 > stringed\-musical\-instrument;
+箎 > ancient\-woodwind\-instrument;
+筎 > thin\-outside\-skin\-of\-bamboo;
+瞤 > to\-blink\-or\-twitch\-the\-eyes;
+皐 > the\-high\-land\-along\-a\-river;
+濰 > county\-in\-shandong\-province;
+澠 > name\-of\-a\-river\-in\-shandong;
+湞 > river\-in\-guangdong\-province;
+淠 > luxuriant\-\(of\-water\-plants\);
+浰 > attend\-\(official\-functions\);
+泑 > the\-vitreous\-glaze\-on\-china;
+殨 > to\-open\-as\-an\-ulcer\-or\-sore;
+枏 > a\-variety\-of\-evergreen\-tree;
+旈 > fringes\-of\-pearls\-on\-crowns;
+搇 > to\-press\-down\-with\-the\-hand;
+弸 > a\-bow\-stretched\-to\-the\-full;
+巠 > streams\-running\-underground;
+嵛 > county\-in\-shandong\-province;
+崳 > county\-in\-shandong\-province;
+崙 > kunlun\-mountains\-in\-jiangsu;
+崘 > kunlun\-mountains\-in\-jiangsu;
+崐 > kunlun\-mountains\-in\-jiangsu;
+堳 > land\-allotment\-feudal\-noble;
+噕 > to\-speak\-falsely\-or\-wrongly;
+噅 > to\-speak\-falsely\-or\-wrongly;
+丩 > to\-join\-or\-connect\-the\-vine;
+丒 > the\-period\-from\-1\-to\-3\-a\.m\.;
+䵅 > to\-extract\-by\-applying\-heat;
+䴳 > distiller''s\-grains\-or\-yeast;
+䴭 > distiller''s\-grains\-or\-yeast;
+䳞 > birds\-flying\-all\-directions;
+䳊 > a\-wild\-duck\-like\-water\-bird;
+䳃 > a\-kind\-of\-phoenix\-like\-bird;
+䳁 > a\-wild\-duck\-like\-water\-bird;
+䪷 > to\-toil\-or\-labor\-sedulously;
+䪇 > cushioned\-seat\-on\-a\-vehicle;
+䩿 > a\-big\-drum\-used\-in\-the\-army;
+䧘 > a\-low\-wall\-on\-the\-road\-side;
+䦲 > eaves\-of\-a\-ancestral\-temple;
+䤻 > heavy\-iron\-part\-of\-a\-plough;
+䣲 > to\-heat\-the\-wine\-over\-night;
+䢯 > to\-choose\-or\-select\-careful;
+䠋 > bell\-shaped\-with\-large\-base;
+䟮 > to\-crawl\-on\-hands\-and\-knees;
+䜸 > small\-pieces\-of\-bean\-stalks;
+䜇 > to\-speak\-not\-in\-a\-clear\-way;
+䚣 > crooked\-horns\-of\-the\-animal;
+䚜 > cattle\-with\-crosswise\-horns;
+䙣 > ragged\-garments\-or\-clothing;
+䙕 > clothes\-that\-have\-no\-lining;
+䙔 > clothes\-made\-of\-poor\-fabric;
+䙓 > the\-lower\-part\-of\-a\-garment;
+䘹 > clothes\-that\-have\-no\-lining;
+䘥 > the\-front\-of\-a\-chinese\-gown;
+䘣 > clothes\-that\-have\-no\-lining;
+䘁 > a\-blue\-green\-colored\-cicada;
+䗵 > a\-disease\-attacked\-silkworm;
+䕮 > flower\-of\-the\-chrysanthemum;
+䕦 > flower\-of\-the\-chrysanthemum;
+䔥 > common\-variety\-of\-artemisia;
+䔟 > shake\-and\-wave\-of\-the\-grass;
+䐼 > thin\-membrane\-of\-the\-throat;
+䐯 > ugly\-appearance\-of\-a\-person;
+䐑 > thin\-cut\-of\-the\-sliced\-meat;
+䍺 > a\-legendary\-goat\-like\-beast;
+䌼 > a\-kind\-of\-fine\-silk\-fabrics;
+䌄 > a\-rope\-for\-drawing\-up\-water;
+䋁 > a\-rope\-for\-drawing\-up\-water;
+䊞 > to\-roll\-round\-with\-the\-hand;
+䊕 > well\-boiled\-congee\-or\-gruel;
+䊈 > distiller''s\-grains\-or\-yeast;
+䉺 > deteriorated\-and\-become\-red;
+䉹 > name\-of\-a\-variety\-of\-bamboo;
+䉸 > slips\-of\-bamboo\-for\-writing;
+䉳 > name\-of\-a\-variety\-of\-bamboo;
+䉭 > name\-of\-a\-variety\-of\-bamboo;
+䉫 > name\-of\-a\-variety\-of\-bamboo;
+䉦 > name\-of\-a\-variety\-of\-bamboo;
+䉡 > name\-of\-a\-variety\-of\-bamboo;
+䉠 > name\-of\-a\-variety\-of\-bamboo;
+䉚 > name\-of\-a\-variety\-of\-bamboo;
+䉙 > name\-of\-a\-variety\-of\-bamboo;
+䉏 > name\-of\-a\-variety\-of\-bamboo;
+䉆 > name\-of\-a\-variety\-of\-bamboo;
+䉄 > name\-of\-a\-variety\-of\-bamboo;
+䉁 > name\-of\-a\-variety\-of\-bamboo;
+䈽 > name\-of\-a\-variety\-of\-bamboo;
+䈼 > name\-of\-a\-variety\-of\-bamboo;
+䈲 > a\-bamboo\-basket\-for\-fishing;
+䈯 > name\-of\-a\-variety\-of\-bamboo;
+䈭 > name\-of\-a\-variety\-of\-bamboo;
+䈣 > name\-of\-a\-variety\-of\-bamboo;
+䈢 > name\-of\-a\-variety\-of\-bamboo;
+䈡 > name\-of\-a\-variety\-of\-bamboo;
+䈝 > name\-of\-a\-variety\-of\-bamboo;
+䈘 > name\-of\-a\-variety\-of\-bamboo;
+䈗 > name\-of\-a\-variety\-of\-bamboo;
+䈖 > name\-of\-a\-variety\-of\-bamboo;
+䈏 > name\-of\-a\-variety\-of\-bamboo;
+䈍 > name\-of\-a\-variety\-of\-bamboo;
+䈌 > name\-of\-a\-variety\-of\-bamboo;
+䈋 > name\-of\-a\-variety\-of\-bamboo;
+䈊 > name\-of\-a\-variety\-of\-bamboo;
+䇺 > beans\-and\-peas\-collectively;
+䇵 > one\-of\-the\-wind\-instruments;
+䇪 > name\-of\-a\-variety\-of\-bamboo;
+䇞 > name\-of\-a\-variety\-of\-bamboo;
+䇛 > name\-of\-a\-variety\-of\-bamboo;
+䇙 > name\-of\-a\-variety\-of\-bamboo;
+䅪 > disease\-of\-the\-private\-part;
+䄰 > forty\-bundles\-of\-rice\-plant;
+䃇 > ink\-for\-imprinting\-of\-seals;
+䀑 > to\-gouge\-out\-an\-eye\-or\-eyes;
+㿀 > unhealthy\-marks\-on\-the\-skin;
+㽎 > the\-profundity\-of\-the\-harem;
+㼠 > a\-crock\-with\-narrow\-opening;
+㺬 > a\-large\-piece\-of\-jade\-stone;
+㺒 > barking\-of\-a\-frightened\-dog;
+㹖 > to\-feed\-animals\-with\-grains;
+㸒 > to\-absurd\-pursuit\-or\-desire;
+㮀 > tool\-to\-clear\-out\-the\-water;
+㭕 > a\-board\-for\-carrying\-things;
+㩛 > to\-roll\-round\-with\-the\-hand;
+㩆 > to\-be\-in\-full\-possession\-of;
+㨫 > to\-be\-in\-full\-possession\-of;
+崙 > kunlun\-mountains\-in\-jiangsu;
+㧕 > to\-feel\-or\-touch\-with\-hands;
+㧂 > a\-cave\-a\-hold\-in\-the\-ground;
+㦐 > a\-straightforward\-character;
+㥴 > do\-not\-care\-about\-something;
+駱 > white\-horse\-with\-black\-mane;
+㢬 > a\-bow\-stretched\-to\-the\-full;
+㡵 > roof\-of\-the\-house\-connected;
+㠟 > a\-mountain\-in\-ancient\-times;
+㛽 > to\-walk\-slowly\-like\-a\-woman;
+㛮 > wife\-of\-one''s\-elder\-brother;
+㓈 > sound\-of\-flying\-or\-speeding;
+㒫 > choked\-and\-unable\-to\-breath;
+㒖 > the\-root\-stock\-of\-the\-lotus;
+畦 > sections\-in\-vegetable\-farm;
+町 > raised\-path\-between\-fields;
+囁 > move\-lips\-as\-when\-speaking;
+伦 > normal\-human\-relationships;
+嘛 > final\-exclamatory\-particle;
+萨 > buddhist\-gods\-or\-immortals;
+桐 > name\-applied\-various\-trees;
+蒂 > peduncle\-or\-stem\-of\-plants;
+紺 > dark\-blue\-or\-reddish\-color;
+棵 > numerary\-adjunct\-for\-trees;
+株 > numerary\-adjunct\-for\-trees;
+哉 > final\-exclamatory\-particle;
+憋 > to\-suppress\-inner\-feelings;
+孜 > be\-as\-diligent\-as\-possible;
+粱 > better\-varieties\-of\-millet;
+峒 > mountain\-in\-gansu\-province;
+榨 > to\-press\-or\-extract\-juices;
+嗫 > move\-lips\-as\-when\-speaking;
+鄱 > county\-and\-lake\-in\-jiangxi;
+菠 > spinach\-and\-similar\-greens;
+淞 > name\-of\-a\-river\-in\-jiangsu;
+淄 > river\-in\-shandong\-province;
+菏 > river\-in\-shandong\-province;
+悱 > to\-be\-desirous\-of\-speaking;
+漯 > river\-in\-northern\-shandong;
+蕙 > species\-of\-fragrant\-orchid;
+滁 > district\-in\-anhui\-province;
+狁 > a\-tribe\-of\-scythian\-nomads;
+酢 > toast\-one''s\-host\-with\-wine;
+衿 > collar\-or\-lapel\-of\-garment;
+嶝 > path\-leading\-up\-a\-mountain;
+旃 > silk\-banner\-with\-bent\-pole;
+齑 > break\-or\-smash\-into\-pieces;
+绀 > dark\-blue\-or\-reddish\-color;
+脘 > internal\-cavity\-of\-stomach;
+镒 > measure\-of\-weight\-for\-gold;
+眭 > evil\-look\-of\-deep\-set\-eyes;
+锖 > the\-color\-of\-the\-a\-mineral;
+邙 > mountain\-in\-henan\-province;
+塍 > raised\-path\-between\-fields;
+敫 > ancient\-musical\-instrument;
+泺 > river\-in\-shandong\-province;
+萑 > grass\-used\-for\-making\-mats;
+觯 > wine\-goblet\-made\-from\-horn;
+舣 > to\-moor\-a\-boat\-to\-the\-bank;
+齏 > break\-or\-smash\-into\-pieces;
+馵 > horse\-with\-white\-back\-legs;
+飣 > display\-food\-for\-show\-only;
+韲 > break\-or\-smash\-into\-pieces;
+闒 > upper\-story\-door\-or\-window;
+鎰 > measure\-of\-weight\-for\-gold;
+銁 > a\-weight\-of\-thirty\-cattics;
+醊 > to\-pour\-wine\-in\-a\-libation;
+郿 > county\-in\-shaanxi\-province;
+郳 > state\-in\-shandong\-province;
+郠 > place\-in\-shandong\-province;
+郚 > towns\-in\-shandong\-province;
+郕 > state\-in\-shandong\-province;
+郈 > place\-in\-shandong\-province;
+邠 > county\-in\-shaanxi\-province;
+輤 > a\-pall\-to\-cover\-the\-hearse;
+踒 > to\-slip\-and\-sprain\-a\-blimb;
+觶 > wine\-goblet\-made\-from\-horn;
+覐 > a\-sleep\-to\-realize\-to\-feel;
+虡 > support\-structure\-for\-bell;
+薾 > luxuriant\-growth\-of\-flower;
+蔕 > peduncle\-or\-stem\-of\-plants;
+茈 > a\-plant\-yielding\-a\-red\-dye;
+艤 > to\-moor\-a\-boat\-to\-the\-bank;
+膆 > the\-corp\-of\-a\-bird\-or\-fowl;
+罭 > drag\-net\-made\-of\-fine\-mesh;
+罏 > earthen\-stand\-for\-wine\-jug;
+罍 > large\-earthenware\-wine\-jar;
+繸 > hem\-or\-border\-of\-a\-garment;
+篟 > luxuriant\-growth\-of\-bamboo;
+窆 > to\-put\-a\-coffin\-in\-a\-grave;
+祲 > ominous\-or\-sinister\-spirit;
+癕 > loss\-of\-the\-sense\-of\-smell;
+畷 > raised\-path\-between\-fields;
+甼 > raised\-path\-between\-fields;
+璈 > ancient\-musical\-instrument;
+珛 > quickly\-deteriorating\-jade;
+濼 > river\-in\-shandong\-province;
+澷 > water\-overflowing\-diffused;
+渮 > river\-in\-shandong\-province;
+毩 > a\-leather\-ball\-for\-kicking;
+榃 > raised\-path\-between\-fields;
+揹 > carry\-things\-on\-one''s\-back;
+揁 > sound\-of\-setting\-up\-a\-koto;
+峝 > mountain\-in\-gansu\-province;
+媧 > mythological\-snail\-goddess;
+囉 > exclamatory\-final\-particle;
+嘷 > the\-roaring\-of\-wild\-beasts;
+嘐 > final\-exclamatory\-particle;
+剞 > carving\-or\-engraving\-knife;
+冏 > abutilon\-avicennae\-\(plant\);
+倫 > normal\-human\-relationships;
+乫 > used\-in\-korean\-place\-names;
+䵆 > grains\-from\-the\-distillery;
+䴿 > grains\-from\-the\-distillery;
+䲯 > a\-kind\-of\-black\-small\-bird;
+䯓 > the\-head\-bone\-of\-livestock;
+䮶 > flock\-of\-horses\-stampeding;
+䮣 > a\-yellow\-with\-a\-white\-tail;
+䬱 > coarse\-grains\-such\-as\-corn;
+䩲 > a\-tool\-used\-to\-cut\-leather;
+䩚 > to\-mend\-the\-soles\-of\-shoes;
+䩘 > to\-mend\-the\-soles\-of\-shoes;
+䡦 > the\-empty\-space\-of\-a\-wheel;
+䠉 > to\-run\-away\-or\-escape\-from;
+䞑 > a\-red\-swelling\-of\-the\-skin;
+䛯 > the\-reasonable\-of\-speeking;
+䖅 > name\-of\-a\-variety\-of\-grass;
+䕿 > name\-of\-a\-variety\-of\-grass;
+䕼 > name\-of\-a\-variety\-of\-grass;
+䕶 > name\-of\-a\-variety\-of\-grass;
+䕵 > name\-of\-a\-variety\-of\-grass;
+䕳 > name\-of\-a\-variety\-of\-grass;
+䕱 > name\-of\-a\-variety\-of\-grass;
+䕭 > name\-of\-a\-variety\-of\-grass;
+䕛 > name\-of\-a\-variety\-of\-grass;
+䕗 > name\-of\-a\-variety\-of\-grass;
+䕕 > name\-of\-a\-variety\-of\-grass;
+䕔 > name\-of\-a\-variety\-of\-grass;
+䕓 > name\-of\-a\-variety\-of\-grass;
+䕒 > name\-of\-a\-variety\-of\-grass;
+䕍 > name\-of\-a\-variety\-of\-grass;
+䕊 > name\-of\-a\-variety\-of\-grass;
+䕈 > name\-of\-a\-variety\-of\-grass;
+䕇 > name\-of\-a\-variety\-of\-grass;
+䕅 > name\-of\-a\-variety\-of\-grass;
+䕀 > name\-of\-a\-variety\-of\-grass;
+䔻 > name\-of\-a\-variety\-of\-grass;
+䔸 > name\-of\-a\-variety\-of\-grass;
+䔶 > name\-of\-a\-variety\-of\-grass;
+䔴 > name\-of\-a\-variety\-of\-grass;
+䔲 > name\-of\-a\-variety\-of\-grass;
+䔱 > name\-of\-a\-variety\-of\-grass;
+䔰 > name\-of\-a\-variety\-of\-grass;
+䔮 > name\-of\-a\-variety\-of\-grass;
+䔭 > name\-of\-a\-variety\-of\-grass;
+䔪 > name\-of\-a\-variety\-of\-grass;
+䔡 > name\-of\-a\-variety\-of\-grass;
+䔝 > name\-of\-a\-variety\-of\-grass;
+䔙 > name\-of\-a\-variety\-of\-grass;
+䔔 > name\-of\-a\-variety\-of\-grass;
+䔒 > name\-of\-a\-variety\-of\-grass;
+䔎 > name\-of\-a\-variety\-of\-grass;
+䔌 > name\-of\-a\-variety\-of\-grass;
+䔅 > name\-of\-a\-variety\-of\-trees;
+䔄 > name\-of\-a\-variety\-of\-grass;
+䔁 > name\-of\-a\-variety\-of\-grass;
+䓽 > name\-of\-a\-variety\-of\-grass;
+䓼 > name\-of\-a\-variety\-of\-grass;
+䓺 > name\-of\-a\-variety\-of\-grass;
+䓳 > name\-of\-a\-variety\-of\-grass;
+䓣 > name\-of\-a\-variety\-of\-grass;
+䓢 > name\-of\-a\-variety\-of\-grass;
+䓟 > name\-of\-a\-variety\-of\-grass;
+䓓 > name\-of\-a\-variety\-of\-grass;
+䓐 > name\-of\-a\-variety\-of\-grass;
+䓎 > name\-of\-a\-variety\-of\-grass;
+䓊 > name\-of\-a\-variety\-of\-grass;
+䓉 > name\-of\-a\-variety\-of\-grass;
+䓂 > name\-of\-a\-variety\-of\-grass;
+䒵 > name\-of\-a\-variety\-of\-grass;
+䒴 > name\-of\-a\-variety\-of\-grass;
+䒱 > twigs\-of\-hemp\-used\-fo\-fuel;
+䒪 > name\-of\-a\-variety\-of\-grass;
+䒩 > name\-of\-a\-variety\-of\-grass;
+䒤 > name\-of\-a\-variety\-of\-grass;
+䒡 > name\-of\-a\-variety\-of\-grass;
+䒟 > name\-of\-a\-variety\-of\-grass;
+䒞 > name\-of\-a\-variety\-of\-grass;
+䒜 > name\-of\-a\-variety\-of\-grass;
+䒛 > name\-of\-a\-variety\-of\-grass;
+䒚 > name\-of\-a\-variety\-of\-grass;
+䒔 > name\-of\-a\-variety\-of\-grass;
+䎷 > an\-old\-man\-with\-white\-hair;
+䌠 > hold\-on\-to\-one''s\-own\-views;
+䋀 > shoes\-made\-of\-hemp\-or\-hair;
+䊮 > name\-of\-a\-variety\-of\-grain;
+䊬 > name\-of\-a\-variety\-of\-grain;
+䉂 > a\-basket\-for\-earth\-or\-soil;
+䇖 > rope\-made\-of\-bamboo\-strips;
+䆀 > to\-corrupt\-or\-be\-corrupted;
+䅾 > starting\-to\-put\-forth\-ears;
+䅬 > small\-bundle\-of\-rice\-plant;
+䁎 > to\-make\-a\-close\-inspection;
+䀊 > a\-kind\-of\-water\-containers;
+㼩 > concave\-channels\-of\-tiling;
+㺠 > a\-black\-ape\-with\-long\-tail;
+㺕 > the\-fighting\-sound\-of\-dogs;
+㹚 > sound\-of\-calling\-to\-a\-calf;
+㹙 > sound\-of\-calling\-to\-a\-calf;
+㷶 > to\-dry\-or\-warm\-near\-a\-fire;
+㷃 > fire\-burns\-for\-a\-long\-time;
+㴔 > the\-noise\-of\-flowing\-water;
+㴋 > deep\-and\-clear\-\-to\-urinate;
+㳧 > the\-water\-flowing\-from\-\.\.\.;
+㱽 > to\-hit\-or\-to\-strikeheavily;
+㱻 > diseases\-of\-dumb\-creatures;
+㱡 > the\-soul\-out\-of\-one''s\-body;
+㱔 > a\-small\-quantity\-or\-number;
+㯟 > foot\-of\-a\-hill\-or\-mountain;
+㭮 > a\-kind\-of\-liquor\-container;
+兀 > duplicate\-of\-big\-five\-a461;
+倫 > normal\-human\-relationships;
+阮 > ancient\-musical\-instrument;
+㦃 > perfect\-personal\-character;
+㥱 > to\-be\-desirous\-of\-speaking;
+㥍 > to\-bear\-jealous\-hatred\-for;
+㤬 > full\-of\-anger\-and\-vexation;
+㤎 > a\-model\-or\-typical\-example;
+㤄 > raging\-animosity\-or\-hatred;
+㣧 > the\-succession\-in\-a\-family;
+㣣 > to\-walk\-in\-an\-unsteady\-way;
+㢸 > device\-for\-regulating\-bows;
+㢶 > device\-for\-regulating\-bows;
+㢒 > an\-almost\-collapsing\-house;
+㜪 > name\-of\-a\-family\-or\-a\-clan;
+㜕 > relatives\-through\-marriage;
+㛲 > the\-hair\-on\-the\-human\-head;
+㚿 > a\-goddess''s\-name\-in\-legend;
+㙡 > a\-kind\-of\-eatable\-mushroom;
+㘹 > to\-spread\-soil\-on\-the\-road;
+㘤 > circle\-of\-the\-moving\-water;
+㖨 > indistinct\-nasal\-utterance;
+㒽 > a\-kind\-of\-cap\-for\-children;
+㐖 > a\-translated\-name\-of\-india;
+届 > numerary\-adjunct\-for\-time;
+屆 > numerary\-adjunct\-for\-time;
+谁 > who\?\-whom\?\-whose\?\-anyone\?;
+誰 > who\?\-whom\?\-whose\?\-anyone\?;
+阿 > prefix\-for\-people''s\-names;
+莢 > pods\-of\-leguminous\-plants;
+狄 > tribe\-from\-northern\-china;
+繰 > to\-reel\-silk\-from\-cocoons;
+漓 > river\-in\-guangxi\-province;
+咋 > question\-forming\-particle;
+麟 > female\-of\-chinese\-unicorn;
+渭 > name\-of\-a\-river\-in\-shanxi;
+芜 > luxurious\-growth\-of\-weeds;
+绎 > to\-unravel\-or\-unreel\-silk;
+璐 > beautiful\-variety\-of\-jade;
+韶 > music\-of\-the\-emperor\-shun;
+鬟 > dress\-hair\-in\-coiled\-knot;
+罂 > long\-necked\-jar\-or\-bottle;
+靳 > strap\-on\-a\-horse''s\-breast;
+淦 > river\-in\-jiangxi\-province;
+搡 > to\-push\-over\-or\-push\-back;
+艮 > seventh\-of\-eight\-diagrams;
+湟 > river\-in\-qinghai\-province;
+泸 > river\-in\-jiangxi\-province;
+荚 > pods\-of\-leguminous\-plants;
+猱 > a\-monkey\-with\-yellow\-hair;
+涪 > river\-in\-sichuan\-province;
+亳 > name\-of\-district\-in\-anhui;
+蔺 > rush\-used\-for\-making\-mats;
+琬 > the\-virtue\-of\-a\-gentleman;
+沩 > name\-of\-a\-river\-in\-shanxi;
+猗 > exclamation\-of\-admiration;
+鼙 > drum\-carried\-on\-horseback;
+蕲 > variety\-of\-artemisia\-seek;
+瓞 > young\-melons\-just\-forming;
+辁 > cart\-wheel\-with\-no\-spokes;
+酆 > name\-of\-zhou\-period\-state;
+麐 > female\-of\-chinese\-unicorn;
+鰼 > the\-weather\-or\-dojo\-loach;
+韔 > a\-wrapper\-or\-case\-for\-bow;
+陗 > a\-steep\-hill\.\-precipitous;
+鏾 > the\-trigger\-of\-a\-crossbow;
+鄠 > county\-in\-shanxi\-province;
+鄜 > county\-in\-shanxi\-province;
+鄎 > a\-place\-in\-henan\-province;
+郃 > county\-in\-shanxi\-province;
+輇 > cart\-wheel\-with\-no\-spokes;
+觷 > to\-process\-or\-carve\-horns;
+蝰 > vipera\-russelii\-siamensis;
+蘄 > variety\-of\-artemisia\-seek;
+蕪 > luxurious\-growth\-of\-weeds;
+葶 > draba\-nemerosa\-bebe\-carpa;
+芔 > a\-general\-term\-for\-plants;
+膥 > eggs\-of\-birds\-or\-reptiles;
+罌 > long\-necked\-jar\-or\-bottle;
+罃 > long\-necked\-jar\-or\-bottle;
+纑 > to\-soften\-hemp\-by\-boiling;
+繹 > to\-unravel\-or\-unreel\-silk;
+籩 > bamboo\-container\-for\-food;
+籝 > a\-tube\-to\-hold\-chopsticks;
+笾 > bamboo\-container\-for\-food;
+笎 > bamboo\-with\-black\-patches;
+禘 > imperial\-ancestor\-worship;
+礄 > place\-in\-sichuan\-province;
+璪 > pearl\-pendants\-on\-coronet;
+瑽 > tinkling\-of\-jade\-pendants;
+猲 > smoke\-or\-flames\-from\-fire;
+瀘 > river\-in\-jiangxi\-province;
+溎 > river\-in\-guangxi\-province;
+溈 > name\-of\-a\-river\-in\-shanxi;
+泜 > a\-river\-in\-hebei\-province;
+泒 > a\-river\-in\-hubei\-province;
+汭 > confluence\-of\-two\-streams;
+櫽 > shape\-wood\-by\-use\-of\-heat;
+晬 > first\-birthday\-of\-a\-child;
+悊 > wise\.\-to\-know\-intuitively;
+彍 > to\-draw\-a\-bow\-to\-the\-full;
+庅 > an\-interrogative\-particle;
+嬀 > name\-of\-a\-river\-in\-shanxi;
+䵵 > yellowish\-black\-and\-white;
+䵫 > light\-red\-yellowish\-black;
+䴛 > to\-make\-decoction\-of\-salt;
+䳷 > a\-second\-name\-for\-chicken;
+䳆 > a\-kind\-of\-species\-of\-myna;
+䰂 > a\-coiffure\-with\-a\-topknot;
+䯿 > a\-coiffure\-with\-a\-topknot;
+䯼 > a\-coiffure\-with\-a\-topknot;
+䯴 > a\-coiffure\-with\-a\-topknot;
+䯲 > a\-coiffure\-with\-a\-topknot;
+䮕 > horse\-with\-white\-forehead;
+䭨 > wine\-poured\-in\-a\-libation;
+䬽 > wine\-poured\-in\-a\-libation;
+䫀 > the\-lower\-end\-of\-the\-jaws;
+䩨 > a\-wrapper\-or\-case\-for\-bow;
+䩝 > to\-tan\-and\-soften\-leather;
+䤂 > a\-second\-name\-for\-vinegar;
+䣴 > to\-lose\-temper\-when\-drunk;
+䣆 > name\-of\-a\-county\-in\-gaomi;
+䢲 > to\-go\-all\-the\-way\-forward;
+䢮 > rapid\-marching\-or\-running;
+䢡 > to\-stamp\-the\-foot\-forward;
+䡹 > the\-low\-rear\-of\-a\-chariot;
+䡯 > sound\-of\-moving\-carriages;
+䡫 > sound\-of\-moving\-carriages;
+䡡 > to\-get\-up\-into\-a\-carriage;
+䡘 > sound\-of\-moving\-carriages;
+䡒 > sound\-of\-moving\-carriages;
+䠕 > rapid\-marching\-or\-running;
+䘸 > the\-lower\-front\-of\-a\-robe;
+䘒 > boy''s\-reproductive\-organs;
+䕄 > meat\-in\-the\-form\-of\-paste;
+䓋 > elm\-seeds\-\-\-\-used\-as\-food;
+䑢 > a\-knife\-shaped\-small\-boat;
+䑈 > meat\-to\-offer\-for\-worship;
+䍯 > gaot\-with\-different\-horns;
+䍢 > netted\-veined\-window\-sill;
+䋟 > the\-weight\-on\-a\-steelyard;
+䊶 > a\-rope\-for\-leading\-cattle;
+䉗 > a\-receptacle\-or\-container;
+䄸 > grains\-producing\-no\-fruit;
+䄒 > ripening\-of\-paddy\-or\-rice;
+䃁 > uneven\-or\-rugged\-terrains;
+䁔 > big\-eyes\-protuberant\-eyes;
+㿰 > durable\-and\-solid\-leather;
+㿂 > obstraction\-of\-the\-bowels;
+㾵 > a\-dark\-colored\-birth\-mark;
+㾜 > weak\-breath\-of\-a\-sick\-man;
+㽾 > a\-kind\-of\-woman''s\-disease;
+㻏 > tinkling\-of\-jade\-pendants;
+㺀 > a\-monkey\-with\-yellow\-hair;
+㸲 > a\-kind\-of\-mountain\-cattle;
+㷯 > smoke\-and\-dust\-everywhere;
+㶺 > the\-light\-or\-glow\-of\-fire;
+㶚 > name\-of\-a\-river\-in\-shanxi;
+㵽 > the\-strength\-of\-a\-current;
+㱥 > the\-evil\-spirits\-come\-out;
+㰦 > to\-breath\-with\-mouth\-open;
+㰔 > a\-kind\-of\-edible\-mushroom;
+㰎 > a\-wooden\-pestle\-or\-rammer;
+㭛 > a\-kind\-of\-climbing\-plants;
+㩠 > a\-fierce\-or\-bloody\-battle;
+麟 > female\-of\-chinese\-unicorn;
+㦛 > to\-walk\-in\-a\-composed\-way;
+㠝 > lofty\-and\-steep\-mountains;
+㠐 > high\-and\-pointed\-mountain;
+㞚 > to\-pile\-up\-layer\-by\-layer;
+㜯 > a\-word\-to\-designate\-woman;
+㜮 > to\-go\-beyond\-normal\-limit;
+㚓 > tie\-beams\-of\-a\-small\-boat;
+㘌 > to\-laugh\-without\-stopping;
+㗦 > a\-loud\-and\-confused\-noise;
+㗚 > vexingly\-verbose\-or\-wordy;
+㗕 > the\-crowing\-of\-a\-pheasant;
+㖄 > sound\-of\-calling\-chickens;
+㕚 > claws\-of\-birds\-or\-animals;
+㐳 > high\-and\-level\-on\-the\-top;
+蜀 > name\-of\-an\-ancient\-state;
+洛 > river\-in\-shanxi\-province;
+叔 > father''s\-younger\-brother;
+絹 > kind\-of\-thick\-stiff\-silk;
+罩 > basket\-for\-catching\-fish;
+夷 > ancient\-barbarian\-tribes;
+砰 > sound\-of\-crashing\-stones;
+哎 > interjection\-of\-surprise;
+朔 > first\-day\-of\-lunar\-month;
+揣 > put\-things\-under\-clothes;
+嵋 > omei\-mountain\-in\-sichuan;
+邹 > name\-of\-an\-ancient\-state;
+缉 > to\-sew\-in\-close\-stitches;
+绢 > kind\-of\-thick\-stiff\-silk;
+噶 > used\-in\-transliterations;
+汕 > basket\-for\-catching\-fish;
+掰 > to\-break\-with\-both\-hands;
+霆 > a\-sudden\-peal\-of\-thunder;
+漳 > name\-of\-a\-river\-in\-henan;
+汾 > river\-in\-shanxi\-province;
+巳 > sixth\-of\-twelve\-branches;
+汴 > name\-of\-a\-river\-in\-henan;
+嗝 > cackling\-of\-fowls\-to\-gag;
+姘 > illicit\-sexual\-relations;
+霏 > falling\-of\-snow\-and\-rain;
+郸 > county\-in\-hebei\-province;
+呦 > the\-bleating\-of\-the\-deer;
+掮 > to\-bear\-on\-the\-shoulders;
+莆 > a\-kind\-of\-legendary\-tree;
+阡 > footpaths\-between\-fields;
+鸪 > species\-of\-taiwan\-pigeon;
+哔 > used\-in\-transliterations;
+氐 > name\-of\-an\-ancient\-tribe;
+呤 > purine\-in\-chem\.\-compound;
+嬗 > succession\-to\-the\-throne;
+沣 > river\-in\-shanxi\-province;
+觏 > meet\-or\-see\-unexpectedly;
+濮 > county\-in\-henan\-province;
+郴 > county\-in\-hunan\-province;
+轾 > low\-rear\-portion\-of\-cart;
+稞 > grain\-ready\-for\-grinding;
+灞 > river\-in\-shanxi\-province;
+郧 > county\-in\-hubei\-province;
+蹼 > webbed\-feet\-of\-waterfowl;
+甑 > boiler\-for\-steaming\-rice;
+妗 > wife\-of\-mother''s\-brother;
+浠 > name\-of\-a\-river\-in\-hubei;
+鳔 > swimming\-bladder\-of\-fish;
+篌 > ancient\-music\-instrument;
+秕 > empty\-grain\-or\-rice\-husk;
+琚 > ornamental\-gems\-for\-belt;
+鲵 > cryptobranchus\-japonicus;
+艨 > long\-and\-narrow\-war\-boat;
+涑 > river\-in\-shansi\-province;
+郏 > county\-in\-henan\-province;
+雩 > offer\-sacrifice\-for\-rain;
+佾 > a\-row\-or\-file\-of\-dancers;
+缂 > the\-woof\-of\-a\-woven\-item;
+艴 > the\-countenance\-changing;
+滏 > name\-of\-a\-river\-in\-hebei;
+郾 > county\-in\-henan\-province;
+鷞 > the\-turquoise\-kingfisher;
+鵁 > mycticorax\-prasinosceles;
+鴣 > species\-of\-taiwan\-pigeon;
+鰾 > swimming\-bladder\-of\-fish;
+鯢 > cryptobranchus\-japonicus;
+鮰 > a\-small\-kind\-of\-sturgeon;
+髠 > shave\-head\-as\-punishment;
+騕 > name\-of\-a\-fabulous\-horse;
+韂 > a\-saddle\-flap\.\-trappings;
+陴 > a\-parapet\-on\-a\-city\-wall;
+闤 > wall\-around\-market\-place;
+鄲 > county\-in\-hebei\-province;
+鄗 > county\-in\-hebei\-province;
+鄖 > county\-in\-hubei\-province;
+鄒 > name\-of\-an\-ancient\-state;
+郟 > county\-in\-henan\-province;
+輊 > low\-rear\-portion\-of\-cart;
+贑 > \<abbrv\>\-jiangxi\-province;
+訡 > to\-chant\-to\-moan\-to\-sigh;
+覯 > meet\-or\-see\-unexpectedly;
+蛁 > pomponia\-maculatiocollis;
+蘀 > falling\-leaves\-and\-barks;
+藺 > rush\-used\-in\-making\-mats;
+菴 > small\-buddhist\-monastery;
+莔 > fritillaria\-verticillata;
+茼 > chrysanthemum\-coronarium;
+艥 > an\-oar\-or\-paddle\.\-to\-row;
+膙 > callous\-skin\-on\-the\-feet;
+腜 > quickening\-of\-the\-foetus;
+肳 > the\-corners\-of\-the\-mouth;
+翛 > look\-of\-rumpled\-feathers;
+罝 > net\-for\-catching\-rabbits;
+緝 > to\-sew\-in\-close\-stitches;
+緙 > the\-woof\-of\-a\-woven\-item;
+緌 > tassels\-hanging\-from\-hat;
+筸 > name\-of\-a\-place\-in\-honan;
+稙 > grain\-ready\-for\-grinding;
+璠 > a\-piece\-of\-precious\-jade;
+玶 > name\-of\-one\-kind\-of\-jade;
+獞 > name\-of\-a\-variety\-of\-dog;
+猔 > name\-of\-an\-ancient\-tribe;
+灨 > the\-river\-gan\-in\-jiangxi;
+灃 > river\-in\-shanxi\-province;
+濲 > name\-of\-a\-river\-in\-hunan;
+湋 > river\-in\-shanxi\-province;
+洧 > name\-of\-a\-river\-in\-honan;
+樧 > zanthoxylum\-ailanthoides;
+榤 > perch\-for\-fowls\-roost\-on;
+栂 > a\-kind\-of\-evergreen\-tree;
+旡 > choke\-on\-something\-eaten;
+撋 > to\-rub\-between\-the\-hands;
+惌 > to\-bear\-a\-grudge\-against;
+崶 > name\-of\-a\-legendary\-hill;
+崁 > a\-place\-in\-taiwan\-tainan;
+尞 > fuel\-used\-for\-sacrifices;
+姺 > name\-of\-an\-ancient\-state;
+奞 > the\-stride\-made\-by\-a\-man;
+夗 > to\-turn\-over\-when\-asleep;
+嗶 > used\-in\-transliterations;
+凜 > shiver\-with\-cold\-or\-fear;
+僰 > ancient\-aboriginal\-tribe;
+亃 > name\-of\-a\-kind\-of\-animal;
+乺 > painting\-tool\-place\-name;
+乶 > korean\-place\-name\-pholha;
+䵂 > to\-grind\-wheat\-to\-powder;
+䲳 > birds\-flying\-up\-and\-down;
+䲛 > an\-ancient\-name\-for\-tuna;
+䲄 > a\-kind\-of\-fiish\-in\-ocean;
+䰍 > a\-kind\-of\-dark\-red\-paint;
+䰆 > beautiful\-and\-hairy\-mane;
+䯖 > the\-muscles\-of\-the\-thigh;
+䬳 > cakes\-made\-of\-rice\-flour;
+䫯 > to\-take\-a\-casual\-look\-at;
+䪀 > known\-together\-as\-saddle;
+䩪 > known\-together\-as\-saddle;
+䨒 > sound\-of\-the\-water\-drops;
+䦨 > a\-door\-curtain\-or\-screen;
+䤯 > container\-for\-thick\-soup;
+䣍 > name\-of\-an\-ancient\-state;
+䣅 > name\-of\-an\-ancient\-state;
+䡍 > the\-linch\-pin\-of\-a\-sheel;
+䟗 > to\-stand\-for\-a\-long\-time;
+䟃 > to\-move\-or\-march\-swiftly;
+䚶 > to\-scold\-in\-a\-loud\-voice;
+䙜 > legendary\-mountain\-deity;
+䙈 > a\-loose\-garment\-or\-cloak;
+䙇 > clothes\-of\-coarse\-fabric;
+䗂 > diemyctylus\-pyrrhogaster;
+䔣 > a\-tribe\-in\-ancient\-times;
+䓴 > edible\-fungus\-from\-trees;
+䑎 > soup\-of\-pig''s\-intestines;
+䐻 > big\-pieces\-of\-dried\-meat;
+䐹 > perserved\-and\-dried\-meat;
+䐰 > to\-offer\-food\-as\-tribute;
+䐂 > fat\-of\-animals\-or\-plants;
+䏦 > fat\-of\-animals\-or\-plants;
+䎵 > to\-look\-straight\-forward;
+䊱 > cakes\-made\-of\-rice\-flour;
+䊐 > fluffy\-stuffed\-dumplings;
+䊍 > thick\-congee\-or\-porridge;
+䇏 > to\-pile\-one\-upon\-another;
+䄜 > happiness\-and\-well\-being;
+䄖 > used\-in\-name\-of\-a\-person;
+䃢 > name\-of\-a\-mountain\-lofty;
+䁇 > to\-look\-for\-a\-short\-time;
+䀴 > to\-look\-straight\-forward;
+䀫 > narrow\-and\-dim\-eye\-sight;
+䀪 > birds\-flying\-up\-and\-down;
+㿺 > jutting\-on\-the\-epidermis;
+㽒 > the\-children\-of\-a\-sister;
+㼿 > the\-brick\-wall\-of\-a\-well;
+㼛 > long\-necked\-wine\-vessels;
+㻪 > a\-kind\-of\-jade\-fine\-jade;
+㶅 > dried\-up\-mountain\-creeks;
+㵢 > a\-marsh\-in\-ancient\-times;
+㴰 > a\-river\-in\-ancient\-times;
+㴬 > a\-river\-in\-ancient\-times;
+㳥 > a\-river\-in\-ancient\-times;
+㳝 > a\-river\-in\-ancient\-times;
+㳏 > a\-river\-in\-ancient\-times;
+㳍 > a\-place\-in\-ancient\-times;
+㳋 > a\-river\-in\-ancient\-times;
+㳊 > the\-flowing\-of\-the\-water;
+㳀 > a\-river\-in\-ancient\-times;
+㲊 > to\-understand\-thoroughly;
+㰾 > songs\-of\-the\-people\-of\-楚;
+㰽 > to\-exert\-oneself\-to\-yell;
+㯫 > a\-wattle\-or\-bamboo\-fence;
+㮦 > branches\-growing\-upwards;
+㪛 > to\-pound\-rocks\-to\-pieces;
+㪙 > to\-go\-to\-the\-very\-source;
+㩭 > to\-disturb\-or\-to\-agitate;
+藺 > rush\-used\-in\-making\-mats;
+凜 > shiver\-with\-cold\-or\-fear;
+洛 > river\-in\-shanxi\-province;
+㡪 > the\-varnish\-on\-the\-floor;
+㡧 > to\-stretch\-open\-painting;
+㠇 > name\-of\-a\-mountain\-ridge;
+㜿 > name\-of\-a\-fish\-in\-legend;
+㚝 > the\-stride\-made\-by\-a\-man;
+㗩 > sound\-of\-endure\-coldness;
+㗧 > to\-scold\-with\-loud\-voice;
+㗌 > to\-scold\-with\-loud\-voice;
+㗀 > the\-bleating\-of\-the\-deer;
+㓡 > the\-middle\-part\-of\-a\-bow;
+㐨 > a\-kind\-of\-fish\-in\-legend;
+瞥 > take\-fleeting\-glance\-at;
+州 > administrative\-division;
+吧 > emphatic\-final\-particle;
+某 > certain\-thing\-or\-person;
+票 > slip\-of\-paper\-or\-bamboo;
+耶 > used\-in\-transliteration;
+厘 > thousandth\-part\-of\-tael;
+彭 > name\-of\-ancient\-country;
+肴 > cooked\-or\-prepared\-meat;
+俎 > chopping\-board\-or\-block;
+淮 > river\-in\-anhui\-province;
+郡 > administrative\-division;
+哦 > oh\?\-really\?\-is\-that\-so\?;
+锤 > balance\-weight\-on\-scale;
+仞 > ancient\-unit\-of\-measure;
+芭 > plantain\-or\-banana\-palm;
+磊 > pile\-of\-rocks\-or\-stones;
+呸 > expression\-of\-reprimand;
+拷 > torture\-and\-interrogate;
+抿 > pucker\-up\-lips\-in\-smile;
+卉 > general\-term\-for\-plants;
+髻 > hair\-rolled\-up\-in\-a\-bun;
+裆 > crotch\-or\-seat\-of\-pants;
+蘑 > type\-of\-edible\-mushroom;
+咿 > descriptive\-of\-creaking;
+篾 > bamboo\-splints\-or\-slats;
+淇 > river\-in\-henan\-province;
+蓑 > rain\-coat\-made\-of\-straw;
+檬 > type\-of\-locust\-oracacia;
+淙 > gurgling\-sound\-of\-water;
+殓 > dress\-corpse\-for\-burial;
+琥 > jewel\-in\-shape\-of\-tiger;
+潞 > river\-in\-northern\-china;
+醍 > essential\-oil\-of\-butter;
+妯 > wives\-of\-one''s\-brothers;
+帏 > curtain\-that\-forms\-wall;
+瓒 > ceremonial\-libation\-cup;
+洹 > river\-in\-henan\-province;
+瑗 > large\-ring\-of\-fine\-jade;
+涞 > river\-in\-hebei\-province;
+爻 > diagrams\-for\-divination;
+锟 > ancient\-treasured\-sword;
+芗 > fragrant\-smell\-of\-grain;
+楦 > a\-last\-for\-making\-shoes;
+舁 > carry\-on\-one''s\-shoulder;
+滠 > river\-in\-hubei\-province;
+鼏 > cover\-of\-tripod\-caldron;
+黰 > young\-girl''s\-hair\-style;
+鬂 > the\-hair\-on\-the\-temples;
+駮 > a\-kind\-of\-fierce\-animal;
+錘 > balance\-weight\-on\-scale;
+錕 > ancient\-treasured\-sword;
+鄾 > place\-in\-hubei\-province;
+鄬 > place\-in\-henan\-province;
+鄤 > place\-in\-henan\-province;
+鄘 > state\-in\-henan\-province;
+鄏 > place\-in\-henan\-province;
+鄀 > state\-in\-henan\-province;
+郰 > birthplace\-of\-confucius;
+邧 > town\-in\-shanxi\-province;
+邘 > state\-in\-henan\-province;
+襠 > crotch\-or\-seat\-of\-pants;
+蚻 > small\-species\-of\-cicada;
+薌 > fragrant\-smell\-of\-grain;
+蒱 > gambling\-game\-with\-dice;
+葧 > heleocharis\-plantaginea;
+舲 > small\-boat\-with\-windows;
+羫 > the\-skeleton\-of\-a\-sheep;
+罽 > a\-kind\-of\-woolen\-fabric;
+粺 > polished\-rice\-or\-millet;
+篧 > creel\-for\-trapping\-fish;
+篛 > cuticle\-of\-bamboo\-plant;
+祔 > worship\-one''s\-ancestors;
+睖 > to\-stare\-straight\-ahead;
+眢 > eyes\-without\-brightness;
+畾 > fields\-divided\-by\-dikes;
+瓚 > ceremonial\-libation\-cup;
+璲 > pendant\-girdle\-ornament;
+瑿 > a\-black\-stone\-like\-jade;
+瑯 > kind\-of\-white\-cornelian;
+瑢 > gem\-ornaments\-for\-belts;
+珶 > white\-jade\-worn\-on\-belt;
+玕 > inferior\-variety\-of\-gem;
+猈 > dog\-with\-short\-shinbone;
+灄 > river\-in\-hubei\-province;
+瀼 > river\-in\-henan\-province;
+瀍 > river\-in\-henan\-province;
+濜 > river\-in\-hubei\-province;
+澴 > river\-in\-hubei\-province;
+澉 > to\-wash\-name\-of\-a\-place;
+潖 > name\-of\-a\-certain\-river;
+漷 > river\-in\-hebei\-province;
+漊 > river\-in\-hubei\-province;
+溮 > river\-in\-henan\-province;
+溠 > river\-in\-hubei\-province;
+淶 > river\-in\-hebei\-province;
+涖 > river\-in\-hebei\-province;
+浭 > river\-in\-hebei\-province;
+洺 > river\-in\-hebei\-province;
+洨 > river\-in\-hebei\-province;
+殮 > dress\-corpse\-for\-burial;
+殙 > to\-die\-by\-taking\-poison;
+歁 > unsatisfied\-\(of\-eating\);
+欨 > to\-blow\-or\-breathe\-upon;
+欏 > tree\-the\-horse\-chestnut;
+檇 > wooden\-rammer\-or\-pestle;
+橔 > a\-wooden\-chopping\-block;
+楥 > a\-last\-for\-making\-shoes;
+暼 > take\-fleeting\-glance\-at;
+怸 > cns\-2\-2a40\-is\-different;
+幃 > curtain\-that\-forms\-wall;
+墄 > the\-steps\-of\-a\-stairway;
+啫 > interjection\-of\-warning;
+吚 > used\-to\-represent\-sound;
+匁 > japanese\-unit\-of\-weight;
+仾 > to\-hang\-or\-bow\-the\-head;
+仭 > ancient\-unit\-of\-measure;
+䶝 > growing\-irregular\-teeth;
+䵈 > unsmelted\-hemp\-and\-silk;
+䵀 > coarse\-crumbs\-of\-barley;
+䴑 > a\-legendary\-weired\-bird;
+䴇 > a\-second\-name\-for\-crane;
+䴁 > a\-kind\-of\-rat\-like\-bird;
+䳲 > a\-swarm\-of\-flying\-birds;
+䲴 > a\-kind\-of\-venomous\-bird;
+䱾 > a\-carp\-like\-savory\-fish;
+䰫 > nimble\-and\-active\-ghost;
+䭇 > to\-be\-chocked\-with\-food;
+䭆 > small\-children\-eat\-less;
+䬲 > to\-eat\-to\-the\-half\-full;
+䬪 > a\-kind\-of\-cooked\-noodle;
+䬛 > the\-roaring\-of\-the\-wind;
+䨗 > excessive\-rain\-and\-snow;
+䨅 > small\-birds\-\-\-\-the\-wren;
+䥖 > silver\-of\-gold\-filagree;
+䥏 > unfitted\-for\-each\-other;
+䤥 > agricultural\-implements;
+䢜 > the\-marriage\-of\-a\-woman;
+䡽 > the\-shafts\-of\-a\-vehicle;
+䡺 > the\-end\-of\-an\-axle\-tree;
+䡣 > a\-piece\-of\-curved\-board;
+䠣 > net\-to\-trap\-the\-animals;
+䝈 > a\-big\-and\-strenuous\-pig;
+䚐 > getting\-red\-in\-the\-eyes;
+䚊 > to\-look\-from\-a\-distance;
+䙐 > furs\-and\-linen\-garments;
+䘆 > a\-second\-form\-earthworm;
+䗠 > the\-larva\-of\-mosquitoes;
+䗔 > a\-house\-lizard\-or\-gecko;
+䖱 > large\-shrimp\-in\-the\-sea;
+䔾 > a\-kind\-of\-fragrant\-herb;
+䓱 > a\-kind\-of\-herb\-medicine;
+䒖 > a\-kind\-of\-herb\-medicine;
+䒕 > a\-kind\-of\-herb\-medicine;
+䐤 > dried\-and\-seasoned\-meat;
+䐐 > curved\-part\-of\-the\-knee;
+䏙 > brine\-from\-pickled\-meat;
+䏕 > to\-cook\-food\-thoroughly;
+䎧 > agricultural\-implements;
+䍹 > odor\-of\-a\-sheep\-or\-goat;
+䍙 > nets\-for\-catching\-birds;
+䍘 > a\-general\-term\-for\-nets;
+䍓 > net\-for\-catching\-rabbit;
+䋫 > to\-wind\-round\-the\-ropes;
+䋨 > to\-set\-in\-order\-the\-old;
+䊴 > food\-made\-of\-rice\-flour;
+䊪 > coarse\-rice\-\-\-\-unhulled;
+䉜 > young\-and\-tender\-bamboo;
+䉖 > framework\-of\-a\-carriage;
+䇗 > bamboo\-with\-long\-joints;
+䇑 > a\-standing\-short\-person;
+䆊 > unhusked\-glutinous\-rice;
+䆉 > the\-swing\-of\-rice\-plant;
+䃉 > a\-stone\-resembling\-jade;
+䁌 > to\-see\-for\-a\-short\-time;
+㾀 > to\-be\-weaked\-by\-disease;
+㽺 > to\-be\-weaked\-by\-disease;
+㽸 > diseases\-of\-the\-abdomen;
+㽚 > agricultural\-implements;
+㼧 > tiles\-in\-cylinder\-shape;
+㹲 > a\-frightened\-pig\-or\-dog;
+㹮 > a\-kind\-of\-animal\-\-tapir;
+㹝 > a\-legendary\-wild\-animal;
+㹑 > a\-four\-years\-old\-cattle;
+㹊 > a\-cattle\-of\-white\-color;
+㹆 > the\-coulter\-of\-a\-plough;
+㸋 > meats\-used\-in\-sacrifice;
+㷮 > scorched\-or\-burned\-wood;
+㷫 > fire\-causing\-by\-dryness;
+㶵 > to\-cook\-food\-thoroughly;
+㶒 > the\-current\-of\-a\-stream;
+㴲 > a\-river\-in\-ancient\-time;
+㴑 > to\-trace\-up\-to\-a\-source;
+㴏 > the\-pond\-water\-is\-still;
+㲿 > extensive\-body\-of\-water;
+㲄 > unburnt\-bricks\-or\-tiles;
+㱬 > cannot\-recognize\-people;
+㱕 > the\-marriage\-of\-a\-woman;
+㯙 > the\-buckthorn\-or\-jujube;
+㭾 > to\-cut\-the\-timber\-apart;
+㭃 > the\-large\-rope\-of\-a\-net;
+㭂 > height\-of\-the\-end\-point;
+㬻 > in\-between\-of\-the\-flesh;
+㧯 > a\-bucket\-made\-of\-willow;
+㧥 > to\-nip\-with\-the\-fingers;
+㦽 > with\-elegant\-appearance;
+㦺 > a\-lance\-with\-two\-points;
+㦸 > a\-lance\-with\-two\-points;
+殮 > dress\-corpse\-for\-burial;
+㦇 > a\-peaceful\-or\-easy\-mood;
+磊 > pile\-of\-rocks\-or\-stones;
+㥅 > used\-in\-a\-person''s\-name;
+㤌 > to\-have\-one''s\-heart\-own;
+㣻 > to\-remedy\-by\-punishment;
+㣪 > to\-walk\-with\-slow\-steps;
+㣆 > to\-loose\-the\-bow\-string;
+㢾 > the\-curved\-end\-of\-a\-bow;
+㢵 > powerful\-and\-strong\-bow;
+㡹 > to\-rely\-upon\-each\-other;
+㡒 > a\-calico\-sack\-for\-grain;
+㡏 > to\-cut\-a\-strip\-of\-cloth;
+㞼 > to\-respectfully\-receive;
+㚬 > a\-lady\-start\-to\-doll\-up;
+㚖 > to\-come\-out\-to\-the\-open;
+㙊 > an\-area\-of\-level\-ground;
+㕸 > sound\-of\-rolling\-a\-boat;
+㕧 > used\-to\-represent\-sound;
+㔤 > to\-exert\-one''s\-strength;
+㓧 > agricultural\-implements;
+㒤 > to\-have\-one''s\-heart\-won;
+㒙 > to\-hand\-or\-bow\-the\-head;
+么 > interrogative\-particle;
+被 > passive\-indicator\-''by'';
+申 > to\-state\-to\-a\-superior;
+岡 > ridge\-or\-crest\-of\-hill;
+琴 > chinese\-lute\-or\-guitar;
+嬌 > seductive\-and\-loveable;
+罗 > net\-for\-catching\-birds;
+摸 > gently\-touch\-with\-hand;
+仰 > raise\-the\-head\-to\-look;
+臍 > abdominal\-area\-of\-crab;
+郑 > state\-in\-today''s\-henan;
+羅 > net\-for\-catching\-birds;
+贯 > a\-string\-of\-1000\-coins;
+娇 > seductive\-and\-loveable;
+竭 > put\-forth\-great\-effort;
+秒 > beard\-of\-grain\-or\-corn;
+奚 > where\?\-what\?\-how\?\-why\?;
+冈 > ridge\-or\-crest\-of\-hill;
+盏 > small\-cup\-or\-container;
+萝 > type\-of\-creeping\-plant;
+梧 > sterculia\-platanifolia;
+咦 > expression\-of\-surprise;
+筐 > bamboo\-basket\-or\-chest;
+谍 > an\-intelligence\-report;
+篱 > bamboo\-or\-wooden\-fence;
+琶 > guitar\-like\-instrument;
+琵 > guitar\-like\-instrument;
+潺 > sound\-of\-flowing\-water;
+坳 > a\-hollow\-in\-the\-ground;
+脐 > abdominal\-area\-of\-crab;
+埂 > ditches\-for\-irrigation;
+倌 > assistant\-in\-wine\-shop;
+霁 > to\-clear\-up\-after\-rain;
+邯 > city\-in\-hebei\-province;
+粑 > tsamba\-\(food\-in\-tibet\);
+蛀 > insects\-that\-eat\-books;
+嫦 > name\-of\-a\-moon\-goddess;
+赊 > buy\-and\-sell\-on\-credit;
+弑 > to\-kill\-one''s\-superior;
+摁 > to\-press\-with\-the\-hand;
+畹 > a\-field\-of\-20\-or\-30\-mu;
+觐 > have\-imperial\-audience;
+讦 > expose\-other''s\-secrets;
+旄 > a\-kind\-of\-ancient\-flag;
+趵 > noise\-of\-tramping\-feet;
+酹 > to\-pour\-out\-a\-libation;
+孳 > breed\-in\-large\-numbers;
+塄 > elevated\-bank\-in\-field;
+螈 > diemyelilus\-pyrogaster;
+窬 > a\-small\-door\-or\-window;
+笱 > a\-basket\-trap\-for\-fish;
+牿 > shed\-or\-pen\-for\-cattle;
+蛘 > a\-weevil\-found\-in\-rice;
+畎 > a\-drain\-between\-fields;
+齯 > teeth\-grown\-in\-old\-age;
+鹣 > fabulous\-mythical\-bird;
+鶼 > fabulous\-mythical\-bird;
+鰆 > scomberomorus\-sinensis;
+鯙 > scomberomorus\-sinensis;
+鮓 > minced\-and\-salted\-fish;
+驌 > name\-of\-a\-famous\-horse;
+韹 > music\-of\-bell\-and\-drum;
+霽 > to\-clear\-up\-after\-rain;
+雘 > dye\-made\-from\-red\-soil;
+阇 > a\-buddhist\-high\-priest;
+鑐 > bolt\-of\-a\-chinese\-lock;
+錆 > the\-color\-of\-a\-mineral;
+鄭 > state\-in\-today''s\-henan;
+鄐 > town\-in\-henan\-province;
+遰 > grunting\-sound\-of\-pigs;
+辥 > variety\-of\-marsh\-grass;
+賒 > buy\-and\-sell\-on\-credit;
+貫 > a\-string\-of\-1000\-coins;
+谂 > consult\-carefully\-with;
+諜 > an\-intelligence\-report;
+諗 > consult\-carefully\-with;
+詪 > difficulty\-in\-speaking;
+訐 > expose\-other''s\-secrets;
+觿 > a\-bodkin\-made\-of\-ivory;
+覲 > have\-imperial\-audience;
+覀 > variant\-of\-radical\-146;
+褟 > inner\-shirt\-or\-singlet;
+衭 > the\-lapel\-of\-a\-garment;
+衦 > smooth\-out\-the\-clothes;
+蘿 > type\-of\-creeping\-plant;
+蕕 > caryopteris\-divaricata;
+蔯 > a\-variety\-of\-artemisia;
+萴 > medicinal\-poison\-plant;
+菶 > species\-of\-water\-plant;
+莸 > caryopteris\-divaricata;
+莙 > species\-of\-water\-plant;
+脤 > raw\-meat\-for\-sacrifice;
+耬 > drill\-for\-sowing\-grain;
+耧 > drill\-for\-sowing\-grain;
+耂 > variant\-of\-radical\-125;
+繦 > string\-of\-copper\-coins;
+繈 > string\-of\-copper\-coins;
+緅 > silk\-of\-purplish\-color;
+籬 > bamboo\-or\-wooden\-fence;
+篢 > the\-name\-of\-bamboo\-hat;
+筺 > bamboo\-basket\-or\-chest;
+盞 > small\-cup\-or\-container;
+癊 > a\-disease\-of\-the\-heart;
+瑱 > a\-gem\-used\-as\-ear\-plug;
+琠 > a\-gem\-used\-as\-ear\-plug;
+珣 > name\-of\-a\-kind\-of\-jade;
+玼 > beautiful\-color\-of\-gem;
+牷 > cow\-or\-ox\-of\-one\-color;
+焄 > rising\-flames\-or\-fumes;
+烖 > calamities\-from\-heaven;
+殢 > be\-in\-great\-difficulty;
+槱 > firewood\-for\-sacrifice;
+朏 > light\-of\-crescent\-moon;
+旐 > an\-embroidered\-pennant;
+攙 > to\-give\-a\-helping\-hand;
+摰 > to\-seize\-with\-the\-hand;
+摀 > to\-cover\-with\-the\-hand;
+搾 > to\-crush\-with\-the\-hand;
+怹 > a\-polite\-version\-of\-he;
+弒 > to\-kill\-one''s\-superior;
+庈 > used\-in\-person''s\-names;
+嵶 > low\-part\-of\-a\-mountain;
+孒 > larvae\-of\-the\-mosquito;
+壖 > open\-space\-along\-water;
+噀 > spirt\-out\-of\-the\-mouth;
+叝 > to\-respectfully\-inform;
+伮 > to\-make\-a\-great\-effort;
+䶥 > unevenly\-fitting\-teeth;
+䶤 > sound\-of\-chewing\-bones;
+䶂 > a\-squirrel\-like\-animal;
+䳮 > to\-look\-at\-in\-surprise;
+䲚 > a\-second\-name\-for\-shad;
+䰵 > looks\-like\-common\-carp;
+䰰 > dreary\-cries\-of\-ghosts;
+䰭 > dreary\-cries\-of\-ghosts;
+䮺 > luxuriant\-of\-the\-grass;
+䮭 > to\-look\-at\-in\-surprise;
+䮪 > to\-geld\-a\-horse\-or\-ass;
+䩼 > stitches\-on\-a\-coverlet;
+䩍 > to\-look\-pale\-or\-pallid;
+䨵 > rained\-for\-a\-long\-time;
+䨬 > rained\-for\-a\-long\-time;
+䨡 > rained\-for\-a\-long\-time;
+䦈 > to\-sigh\-in\-lamentation;
+䥟 > a\-metal\-marking\-\-stake;
+䢎 > indicating\-exclamation;
+䡵 > decoration\-on\-carriage;
+䡰 > strong\-and\-durable\-hub;
+䡬 > covering\-of\-a\-carriage;
+䡁 > not\-well\-formed\-figure;
+䟽 > scattered\-or\-dispersed;
+䞘 > to\-go\-straight\-forward;
+䝢 > an\-animal\-in\-old\-times;
+䝡 > an\-animal\-in\-old\-times;
+䝓 > long\-beard\-or\-whiskers;
+䜺 > husking\-beans\-for\-cake;
+䜡 > to\-smell\-the\-fragrants;
+䛙 > to\-smell\-the\-fragrance;
+䚞 > the\-middle\-of\-the\-horn;
+䙄 > clothes\-with\-thick\-hem;
+䘽 > clothing\-and\-ornaments;
+䗐 > a\-weevil\-found\-in\-rice;
+䕴 > a\-second\-for\-monkshood;
+䔠 > thin\-root\-of\-the\-lotus;
+䏩 > to\-shrug\-the\-shoulders;
+䍱 > the\-wild\-goat\-or\-sheep;
+䋪 > fine\-and\-delicate\-silk;
+䋍 > fine\-and\-delicate\-silk;
+䊏 > mixing\-rice\-with\-broth;
+䊃 > mixing\-rice\-with\-broth;
+䈄 > a\-kind\-of\-solid\-bamboo;
+䇣 > bamboo\-with\-white\-bark;
+䄠 > to\-sacrifice\-to\-heaven;
+䃧 > sound\-of\-falling\-rocks;
+䃔 > sound\-of\-falling\-rocks;
+䂢 > sound\-of\-falling\-rocks;
+䂠 > sound\-of\-falling\-rocks;
+䀄 > container\-full\-of\-food;
+㿋 > a\-kind\-of\-skin\-disease;
+㼞 > jar\-with\-a\-small\-mouth;
+㺞 > to\-sign\-in\-lamentation;
+㸯 > a\-fine\-breed\-of\-cattle;
+㵯 > sound\-of\-water\-flowing;
+㳯 > goddess\-of\-an\-ink\-slab;
+㲱 > long\-beard\-or\-whiskers;
+㱆 > to\-smile\-at\-each\-other;
+㰿 > to\-sigh\-in\-lamentation;
+㰨 > to\-take\-breath\-or\-rest;
+㮑 > sound\-of\-broken\-sticks;
+㭯 > tree\-with\-small\-leaves;
+㫊 > fluttering\-of\-the\-flag;
+㪣 > a\-place\-in\-han\-dynasty;
+㪟 > to\-regard\-as\-important;
+㪞 > to\-be\-held\-by\-the\-hand;
+㩺 > a\-crack\-on\-the\-utensil;
+㩜 > to\-be\-in\-possession\-of;
+㩎 > to\-press\-with\-a\-finger;
+㧶 > the\-jingling\-of\-metals;
+㧙 > to\-give\-a\-playful\-blow;
+㧃 > to\-receive\-what\-is\-due;
+㦣 > to\-talk\-in\-one''s\-sleep;
+㦄 > hard\-to\-say\-or\-predict;
+蘿 > type\-of\-creeping\-plant;
+羅 > net\-for\-catching\-birds;
+㤊 > cheerful\-and\-exuberant;
+㣚 > to\-go\-straight\-forward;
+㢉 > a\-room\-with\-open\-space;
+㠔 > shapes\-of\-the\-mountain;
+㟻 > the\-moat\-around\-a\-city;
+㛳 > an\-abnomal\-unborn\-baby;
+㚷 > the\-breasts\-of\-a\-woman;
+㙳 > ruggedness\-of\-the\-road;
+㙤 > a\-crack\-in\-earthenware;
+㙘 > used\-in\-naming\-a\-place;
+㘭 > a\-hollow\-in\-the\-ground;
+㘬 > a\-hollow\-in\-the\-ground;
+㗂 > to\-keep\-the\-mouth\-shut;
+㖐 > sound\-of\-calling\-ducks;
+㔴 > agricultural\-implement;
+㓹 > a\-sharp\-pointed\-weapon;
+㓦 > to\-deliberate\-and\-plan;
+㓘 > jade\-with\-some\-defects;
+觉 > to\-wake\-up\-from\-sleep;
+環 > jade\-ring\-or\-bracelet;
+覺 > to\-wake\-up\-from\-sleep;
+覚 > to\-wake\-up\-from\-sleep;
+划 > to\-row\-or\-paddle\-boat;
+堪 > adequately\-capable\-of;
+环 > jade\-ring\-or\-bracelet;
+吴 > name\-of\-warring\-state;
+鳴 > cry\-of\-bird\-or\-animal;
+呉 > one\-of\-warring\-states;
+馳 > go\-quickly\-or\-swiftly;
+榎 > small\-evergreen\-shrub;
+鸣 > cry\-of\-bird\-or\-animal;
+驰 > go\-quickly\-or\-swiftly;
+姻 > relatives\-by\-marriage;
+筒 > thick\-piece\-of\-bamboo;
+帘 > flag\-sign\-of\-a\-tavern;
+稻 > rice\-growing\-in\-field;
+稲 > rice\-growing\-in\-field;
+禰 > one''s\-deceased\-father;
+剂 > medicinal\-preparation;
+珂 > inferior\-kind\-of\-jade;
+嘟 > sound\-of\-horn\-tooting;
+瑜 > flawless\-gem\-or\-jewel;
+珑 > a\-gem\-cut\-like\-dragon;
+诬 > make\-false\-accusation;
+嫖 > patronize\-prostitutes;
+飒 > the\-sound\-of\-the\-wind;
+锢 > run\-metal\-into\-cracks;
+掖 > support\-with\-the\-arms;
+棣 > kerria\-japonica\-plant;
+菁 > flower\-of\-leek\-family;
+咩 > the\-bleating\-of\-sheep;
+珉 > stone\-resembling\-jade;
+钎 > tool\-for\-boring\-holes;
+抟 > roll\-around\-with\-hand;
+趸 > sell\-or\-buy\-wholesale;
+妣 > one''s\-deceased\-mother;
+嵊 > district\-in\-shaohsing;
+笸 > flat\-basket\-for\-grain;
+祢 > one''s\-deceased\-father;
+肫 > the\-gizzard\-of\-a\-fowl;
+苫 > rush\-or\-straw\-matting;
+峤 > high\-pointed\-mountain;
+秭 > one\-thousand\-millions;
+姒 > wife\-of\-elder\-brother;
+蓰 > to\-increase\-five\-fold;
+蒌 > artemisia\-stelleriana;
+酃 > the\-spirit\-of\-a\-being;
+糗 > parched\-wheat\-or\-rice;
+辋 > exterior\-rim\-of\-wheel;
+髫 > children''s\-hair\-style;
+虺 > large\-poisonous\-snake;
+醵 > contribute\-for\-drinks;
+蚬 > a\-variety\-of\-bivalves;
+裼 > to\-take\-off\-one''s\-top;
+眵 > eyes\-diseased\-and\-dim;
+枵 > hollo\-stump\-of\-a\-tree;
+蘩 > artemisia\-stellariana;
+鼃 > the\-edible\-water\-frog;
+鷀 > the\-fishing\-cormorant;
+鴠 > a\-kind\-of\-nightingale;
+鰤 > seriola\-qinqueradiata;
+鯄 > lepidotrigla\-strauchi;
+髈 > defined\-as\-the\-pelvis;
+颸 > cool\-breeze\-of\-autumn;
+颯 > the\-sound\-of\-the\-wind;
+錮 > run\-metal\-into\-cracks;
+釺 > tool\-for\-boring\-holes;
+酎 > double\-fermented\-wine;
+輮 > exterior\-rim\-of\-wheel;
+輞 > exterior\-rim\-of\-wheel;
+躉 > sell\-or\-buy\-wholesale;
+谺 > the\-mouth\-of\-a\-valley;
+誣 > make\-false\-accusation;
+蠸 > aulacophora\-femoralis;
+螒 > aulacophora\-femoralis;
+蜺 > reflection\-of\-rainbow;
+蜆 > a\-variety\-of\-bivalves;
+蘘 > a\-kind\-of\-wild\-ginger;
+蕚 > the\-calyx\-of\-a\-flower;
+蔞 > artemisia\-stelleriana;
+葹 > kind\-of\-chrysanthemum;
+萻 > small\-buddhist\-temple;
+舚 > to\-put\-out\-the\-tongue;
+翏 > the\-sound\-of\-the\-wind;
+繴 > a\-kind\-of\-fishing\-net;
+竼 > bamboo\-cover\-for\-boat;
+禨 > pray\-for\-good\-fortune;
+癥 > obstruction\-of\-bowels;
+痏 > a\-bruise\-or\-contusion;
+瓏 > a\-gem\-cut\-like\-dragon;
+璡 > jade\-look\-alike\-stone;
+瑨 > jade\-look\-alike\-stone;
+瑀 > stone\-resembling\-jade;
+澂 > clear\-and\-still\-water;
+淜 > roar\-of\-dashing\-waves;
+沇 > flowing\-and\-engulfing;
+檟 > small\-evergreen\-shrub;
+暎 > sun\-beginning\-decline;
+摶 > roll\-around\-with\-hand;
+嶠 > high\-pointed\-mountain;
+嵼 > winding\-mountain\-path;
+埵 > hardened\-dirt\-or\-clay;
+嗻 > to\-screen\.\-loquacious;
+吳 > one\-of\-warring\-states;
+匟 > divan\-for\-two\-persons;
+劑 > medicinal\-preparation;
+剾 > to\-pick\-up\-with\-knife;
+剤 > medicinal\-preparation;
+䵗 > to\-clean\-the\-withered;
+䵄 > to\-boil\-or\-stew\-wheat;
+䴶 > to\-boil\-or\-stew\-wheat;
+䴔 > the\-fishing\-cormorant;
+䳹 > a\-kind\-dove\-like\-bird;
+䳝 > a\-kind\-of\-small\-birds;
+䱟 > a\-kind\-of\-silver\-fish;
+䯯 > hang\-down\-of\-the\-hair;
+䯭 > of\-nice\-and\-good\-hair;
+䮄 > an\-one\-year\-old\-horse;
+䭴 > an\-one\-year\-old\-horse;
+䫹 > the\-sound\-of\-the\-wind;
+䪥 > shallots\-or\-scallions;
+䩩 > a\-measure\-of\-capacity;
+䦽 > an\-east\-and\-west\-wall;
+䦚 > wide\-open\-of\-the\-door;
+䦌 > the\-door\-is\-wide\-open;
+䥈 > the\-symbol\-for\-cobalt;
+䤗 > taste\-of\-strong\-drink;
+䢩 > to\-forbid\-to\-prohibit;
+䡶 > vehicles\-and\-garments;
+䞚 > to\-hang\-on\-a\-big\-tree;
+䝖 > reptiles\-without\-feet;
+䛱 > to\-talk\-unremittingly;
+䛊 > cheerful\-all\-the\-time;
+䛃 > used\-in\-person''s\-name;
+䘐 > the\-bleed\-at\-the\-nose;
+䗊 > to\-put\-out\-the\-tongue;
+䗉 > a\-small\-solitary\-wasp;
+䖔 > a\-kind\-of\-white\-tiger;
+䖍 > to\-act\-with\-reverence;
+䔵 > fragrant\-thoroughwort;
+䔊 > dense\-growth\-of\-grass;
+䓒 > scirpus\-cyperinus\-var;
+䒦 > grass\-floats\-on\-water;
+䒄 > fully\-laden\-of\-a\-boat;
+䑝 > a\-small\-cup\-with\-ears;
+䏤 > top\-of\-the\-human\-head;
+䎶 > offering\-blood\-to\-god;
+䎚 > the\-end\-of\-bird\-wings;
+䎖 > soaring\-up\-in\-the\-sky;
+䎁 > used\-in\-person''s\-name;
+䌧 > a\-kind\-of\-silk\-fabric;
+䌟 > to\-weave\-silk\-ribbons;
+䋂 > dresses\-for\-the\-bride;
+䈧 > skin\-of\-bamboo\-shoots;
+䈞 > ancient\-name\-of\-india;
+䇾 > a\-flute\-with\-23\-tubes;
+䇰 > a\-bamboo\-binded\-torch;
+䇡 > the\-shuttle\-of\-a\-loom;
+䆠 > a\-government\-official;
+䆛 > something\-in\-the\-cave;
+䅗 > four\-bundle\-of\-grains;
+䅑 > four\-bundle\-of\-grains;
+䁭 > to\-give\-an\-angry\-look;
+䁚 > a\-kind\-of\-eye\-disease;
+䀽 > to\-look\-at\-each\-other;
+䀠 > a\-chinese\-family\-name;
+䀓 > to\-turn\-one''s\-eyes\-to;
+㿴 > wide\-piece\-of\-leather;
+㿯 > wide\-piece\-of\-leather;
+㿫 > to\-split\-tangled\-hemp;
+㿏 > paralysis\-of\-the\-body;
+㾾 > disease\-of\-the\-throat;
+㾤 > disease\-of\-the\-throat;
+㼲 > sound\-of\-broken\-tiles;
+㼐 > a\-kind\-of\-white\-melon;
+㹶 > a\-kind\-of\-wild\-animal;
+㹦 > dog\-with\-a\-short\-tail;
+㹔 > cattle\-with\-long\-back;
+㷗 > used\-in\-person''s\-name;
+㷏 > used\-in\-person''s\-name;
+㵬 > used\-in\-person''s\-name;
+㵨 > a\-dry\-land\-in\-a\-river;
+㳈 > a\-great\-flow\-of\-water;
+㱟 > to\-rip\-open\-the\-flesh;
+㰄 > a\-small\-chestnut\-tree;
+㯥 > a\-chinese\-family\-name;
+㮗 > the\-handle\-of\-a\-spear;
+㭍 > capital\-form\-of\-seven;
+㬠 > to\-expose\-to\-sunlight;
+㬓 > to\-expose\-to\-sunlight;
+㬂 > used\-in\-person''s\-name;
+㩟 > to\-sew\-some\-ornaments;
+㨌 > to\-milk\-a\-cow\-or\-goat;
+㣝 > a\-chinese\-family\-name;
+㠋 > a\-lofty\-mountain\-peak;
+㟞 > precipitous\-and\-lofty;
+㟝 > to\-bank\-up\-with\-earth;
+㟜 > shape\-of\-the\-mountain;
+㟙 > shape\-of\-the\-mountain;
+㟖 > a\-dialect\-of\-minority;
+㟎 > a\-long\-mountain\-ridge;
+㞁 > can\-not\-walk\-normally;
+㝾 > can\-not\-walk\-normally;
+㘰 > name\-of\-a\-old\-country;
+㘡 > a\-pen\-for\-wild\-beasts;
+㘖 > to\-make\-a\-disturbance;
+㗁 > the\-roof\-of\-the\-mouth;
+㖗 > high\-ridges\-of\-cliffs;
+㕢 > profound\-significance;
+㒆 > to\-gather\-the\-harvest;
+什 > file\-of\-ten\-soldiers;
+責 > one''s\-responsibility;
+爵 > feudal\-title\-or\-rank;
+责 > one''s\-responsibility;
+啊 > exclamatory\-particle;
+楚 > name\-of\-feudal\-state;
+托 > to\-hold\-up\-with\-palm;
+汲 > draw\-water\-from\-well;
+魅 > kind\-of\-forest\-demon;
+伊 > third\-person\-pronoun;
+鸿 > species\-of\-wild\-swan;
+姥 > maternal\-grandmother;
+捧 > hold\-up\-in\-two\-hands;
+乙 > second\-heaven''s\-stem;
+吁 > interjection\-''alas\!'';
+姨 > mother\/wife''s\-sister;
+亩 > chinese\-land\-measure;
+僵 > stiff\-and\-motionless;
+拱 > fold\-hands\-on\-breast;
+禾 > grain\-still\-on\-stalk;
+嗡 > sound\-of\-flying\-bees;
+兮 > exclamatory\-particle;
+猩 > species\-of\-orangutan;
+狞 > ferocious\-appearance;
+拈 > pick\-up\-with\-fingers;
+陛 > steps\-leading\-throne;
+鸯 > female\-mandarin\-duck;
+卯 > th\-of\-earth\-branches;
+熠 > bright\-and\-sparkling;
+阂 > blocked\-or\-separated;
+淅 > water\-used\-wash\-rice;
+佚 > indulge\-in\-pleasures;
+辚 > rumbling\-of\-vehicles;
+巽 > th\-of\-the\-8\-trigrams;
+訇 > the\-sound\-of\-a\-crash;
+狺 > the\-snarling\-of\-dogs;
+浔 > steep\-bank\-by\-stream;
+蓊 > luxuriant\-vegetation;
+蓠 > gracilaria\-verrucosa;
+菀 > luxuriance\-of\-growth;
+胗 > pustules\-of\-any\-kind;
+颃 > fly\-down\-or\-downward;
+垆 > black\-clods\-of\-earth;
+樗 > ailanthus\-glandulosa;
+蚧 > a\-red\-spotted\-lizard;
+缶 > earthen\-crock\-or\-jar;
+豳 > a\-zhou\-dynasty\-state;
+轺 > small\-light\-carriage;
+逯 > leave\-without\-reason;
+齞 > to\-display\-the\-teeth;
+鼈 > a\-fresh\-water\-turtle;
+鼂 > a\-kind\-of\-sea\-turtle;
+鸇 > kind\-of\-bird\-of\-prey;
+鸂 > a\-kind\-of\-water\-bird;
+鷫 > turquoise\-kingfisher;
+鷁 > fishhawk\-bow\-or\-prow;
+鴻 > species\-of\-wild\-swan;
+鴦 > female\-mandarin\-duck;
+鰜 > big\-mouthed\-flounder;
+髺 > the\-hair\-dishevelled;
+骣 > horse\-without\-saddle;
+驏 > horse\-without\-saddle;
+餽 > make\-present\-of\-food;
+頏 > fly\-down\-or\-downward;
+韱 > wild\-onions\-or\-leeks;
+韯 > wild\-onions\-or\-leeks;
+霃 > long\-continued\-rains;
+闍 > tower\-over\-city\-gate;
+閡 > blocked\-or\-separated;
+鍱 > thin\-plates\-of\-metal;
+鉶 > sacrificial\-cauldron;
+醰 > bitter\-taste\-in\-wine;
+轔 > rumbling\-of\-vehicles;
+軺 > small\-light\-carriage;
+趂 > to\-take\-advantage\-of;
+襬 > lower\-part\-of\-a\-robe;
+袳 > spread\-one''s\-clothes;
+蜛 > hydrophilus\-cognatus;
+蛚 > cyrtoxiphus\-ritsemae;
+蘺 > gracilaria\-verrucosa;
+薢 > woody\-climbing\-plant;
+茀 > overgrown\-with\-grass;
+芄 > metaplexis\-stauntoni;
+舺 > place\-name\-in\-taiwan;
+脡 > strips\-of\-dried\-meat;
+粃 > empty\-husks\-of\-grain;
+窣 > to\-rush\-out\-of\-a\-den;
+穇 > panicum\-frumentaceum;
+磒 > to\-fall\-from\-or\-into;
+矑 > the\-pupil\-of\-the\-eye;
+睍 > to\-look\-at\-fearfully;
+畝 > chinese\-land\-measure;
+畒 > chinese\-land\-measure;
+畆 > chinese\-land\-measure;
+甽 > drain\-between\-fields;
+甃 > brick\-wall\-of\-a\-well;
+琖 > carved\-jade\-wine\-cup;
+玦 > broken\-piece\-of\-jade;
+獰 > ferocious\-appearance;
+瀳 > to\-arrive\-\(of\-water\);
+澬 > to\-rain\-continuously;
+潯 > steep\-bank\-by\-stream;
+洤 > a\-fountain\-or\-spring;
+槾 > paste\-wall\-with\-dirt;
+棨 > tally\-or\-wooden\-pass;
+桬 > pear\-and\-other\-trees;
+敳 > to\-govern\-forcefully;
+敁 > to\-weigh\-in\-the\-hand;
+搎 > to\-rub\-with\-the\-hand;
+戼 > th\-of\-earth\-branches;
+巺 > th\-of\-the\-8\-trigrams;
+嵏 > a\-mountain\-in\-shenxi;
+孭 > to\-carry\-on\-the\-back;
+嫋 > slender\-and\-delicate;
+婣 > marriage\-connections;
+夘 > th\-of\-earth\-branches;
+壚 > black\-clods\-of\-earth;
+囬 > to\-return\-to\-or\-from;
+劂 > chisel\-for\-engraving;
+䶙 > swelling\-of\-the\-gums;
+䶊 > to\-bleed\-at\-the\-nose;
+䴟 > an\-one\-year\-old\-deer;
+䴖 > a\-kind\-of\-water\-bird;
+䴌 > a\-kind\-of\-water\-bird;
+䴋 > a\-kind\-of\-water\-bird;
+䴈 > a\-kind\-of\-water\-bird;
+䴂 > a\-kind\-of\-water\-bird;
+䴀 > a\-kind\-of\-water\-bird;
+䳶 > a\-kind\-of\-water\-bird;
+䳳 > a\-kind\-of\-small\-bird;
+䳓 > a\-kind\-of\-water\-bird;
+䳑 > a\-pheasant\-like\-bird;
+䳋 > a\-pheasant\-like\-bird;
+䳉 > a\-kind\-of\-water\-bird;
+䳄 > a\-kind\-of\-water\-bird;
+䳂 > a\-kind\-of\-small\-bird;
+䲱 > a\-kind\-of\-black\-bird;
+䲕 > the\-yangtze\-porpoise;
+䱐 > a\-kind\-of\-black\-fish;
+䱀 > a\-kind\-of\-small\-fish;
+䯺 > the\-hair\-dishevelled;
+䮡 > a\-supernatural\-horse;
+䮂 > horse\-with\-long\-hair;
+䭾 > to\-carry\-on\-the\-back;
+䭷 > horse\-with\-long\-mane;
+䬩 > to\-abstain\-from\-meat;
+䬣 > a\-sacrificial\-victim;
+䫠 > short\-hair\-and\-beard;
+䩽 > a\-quiver\-one\-a\-horse;
+䩂 > to\-come\-to\-the\-front;
+䧗 > mountains\-collapsing;
+䦦 > a\-musical\-instrument;
+䥤 > the\-neck\-of\-a\-pestle;
+䥡 > thin\-plates\-of\-metal;
+䥆 > a\-musical\-instrument;
+䥅 > a\-musical\-instrument;
+䥄 > to\-plaster\-with\-gold;
+䤸 > short\-spear\-or\-lance;
+䠑 > between\-the\-buttocks;
+䠈 > hard\-to\-move\-forward;
+䟩 > hard\-of\-walk\-forward;
+䞙 > to\-walk\-in\-hurriedly;
+䝑 > a\-local\-produced\-pig;
+䜧 > to\-insult\-with\-words;
+䜓 > a\-slip\-of\-the\-tongue;
+䜀 > to\-insult\-with\-words;
+䛌 > to\-provoke\-or\-arouse;
+䙮 > strip\-of\-the\-clothes;
+䘾 > legs\-of\-the\-trousers;
+䕫 > a\-one\-legged\-monster;
+䔈 > lush\-growth\-of\-grass;
+䑠 > long\-and\-narrow\-boat;
+䐸 > the\-back\-of\-the\-knee;
+䏿 > the\-calf\-of\-the\-legs;
+䏡 > uncooked\-or\-raw\-meat;
+䊳 > to\-break\-into\-pieces;
+䊲 > to\-hull\-rice\-roughly;
+䊂 > poor\-quality\-of\-rice;
+䉑 > black\-skinned\-bamboo;
+䈦 > a\-curved\-bamboo\-whip;
+䈑 > tools\-to\-unreel\-silk;
+䈅 > tools\-to\-unreel\-silk;
+䈁 > tools\-used\-on\-a\-boat;
+䇘 > tool\-to\-collect\-rope;
+䆣 > abode\-of\-the\-emperor;
+䆏 > a\-kind\-of\-rice\-plant;
+䆃 > a\-kind\-of\-rice\-plant;
+䅮 > a\-full\-head\-of\-grain;
+䅓 > curved\-piece\-of\-wood;
+䅏 > rice\-boiled\-to\-gruel;
+䅉 > a\-kind\-of\-rice\-plant;
+䄿 > a\-kind\-of\-rice\-plant;
+䄯 > ten\-handle\-of\-grains;
+䄂 > to\-pray\-and\-to\-curse;
+䃰 > brick\-or\-stone\-steps;
+䂒 > short\-to\-curry\-favor;
+䂂 > to\-gaze\-at\-in\-terror;
+䁬 > to\-act\-pretentiously;
+䀷 > to\-have\-quick\-glance;
+䀲 > diseases\-in\-the\-eyes;
+㿸 > to\-cast\-off\-the\-skin;
+㿞 > an\-old\-man\-of\-eighty;
+㽤 > a\-small\-plot\-of\-land;
+㽢 > to\-plough\-the\-fields;
+㽕 > new\-branches\-growing;
+㽃 > a\-big\-piece\-of\-brick;
+㼢 > bricks\-an\-eathen\-jar;
+㼉 > green\-colored\-melons;
+㻮 > bright\-and\-brilliant;
+㺮 > fine\-stone\-like\-jade;
+㺨 > fine\-stone\-like\-jade;
+㺂 > big\-and\-strong\-sheep;
+㹘 > shinbone\-of\-a\-cattle;
+㸪 > an\-ox\-walking\-slowly;
+㷙 > to\-fry\-in\-fat\-or\-oil;
+㶔 > swift\-and\-torrential;
+㶎 > swift\-and\-torrential;
+㵡 > swift\-and\-torrential;
+㵞 > bellied\-in\-water\-gas;
+㳼 > bubbling\-of\-fountain;
+㳚 > flowing\-of\-the\-water;
+㳔 > to\-soak\-or\-be\-soaked;
+㳐 > flowing\-of\-the\-water;
+㲫 > hair\-knots\-in\-a\-mess;
+㲢 > hair\-knots\-in\-a\-mess;
+㰋 > a\-kind\-of\-fruit\-tree;
+㯌 > to\-operate\-or\-manage;
+㭞 > a\-kind\-inferior\-wood;
+㭒 > a\-farming\-instrument;
+㪰 > to\-abstain\-from\-meat;
+㩻 > rugged\-mountain\-path;
+㩔 > a\-tool\-to\-make\-a\-bow;
+什 > file\-of\-ten\-soldiers;
+㧹 > to\-strike\-with\-fists;
+㡙 > curtain\-for\-carriage;
+㠗 > deep\-in\-the\-mountain;
+㞥 > deep\-in\-the\-mountain;
+㞟 > savings\-and\-reserves;
+㜒 > maternal\-grandmother;
+㙣 > to\-pile\-a\-sand\-hills;
+㙑 > the\-canopy\-of\-heaven;
+㘎 > the\-roars\-of\-a\-tiger;
+㘅 > to\-hold\-in\-the\-mouth;
+㕡 > the\-bed\-of\-a\-torrent;
+㕌 > to\-raise\-the\-curtain;
+㔋 > cut\-into\-thin\-slices;
+㒅 > to\-unbind\-the\-collar;
+㑉 > cannot\-straighten\-up;
+幾 > how\-many\?\-how\-much\?;
+奏 > memorialize\-emperor;
+您 > honorific\-for\-''you'';
+吏 > government\-official;
+兀 > to\-cut\-off\-the\-feet;
+胴 > the\-large\-intestine;
+秦 > feudal\-state\-of\-qin;
+桁 > cross\-beams\-of\-roof;
+莎 > kind\-of\-sedge\-grass;
+薛 > kind\-of\-marsh\-grass;
+絣 > to\-baste\-for\-sewing;
+悖 > be\-contradictory\-to;
+芒 > miscanthus\-sinensis;
+嘶 > neighing\-of\-a\-horse;
+叽 > sigh\-in\-disapproval;
+厥 > personal\-pronoun\-he;
+圭 > jade\-pointed\-at\-top;
+徘 > walk\-back\-and\-forth;
+晤 > have\-interview\-with;
+舷 > the\-sides\-of\-a\-boat;
+邬 > various\-place\-names;
+褐 > coarse\-woolen\-cloth;
+馈 > offer\-food\-superior;
+唧 > chirping\-of\-insects;
+咔 > used\-in\-translation;
+灸 > cauterize\-with\-moxa;
+驷 > team\-of\-four\-horses;
+粼 > clear\-\(as\-of\-water\);
+羚 > species\-of\-antelope;
+呓 > talk\-in\-one''s\-sleep;
+篙 > pole\-used\-punt\-boat;
+湍 > rapid\-water\-current;
+脍 > minced\-meat\-or\-fish;
+鏖 > to\-fight\-to\-the\-end;
+肽 > a\-chemical\-compound;
+卟 > a\-chemical\-compound;
+銮 > bells\-hung\-on\-horse;
+笳 > a\-reed\-leaf\-whistle;
+薏 > seed\-of\-job''s\-tears;
+悝 > to\-laugh\-at\-to\-pity;
+豇 > a\-small\-kidney\-bean;
+桉 > eucalyptus\-globulus;
+蹁 > to\-walk\-with\-a\-limp;
+腈 > an\-organic\-compound;
+螟 > kind\-of\-caterpillar;
+泮 > zhou\-dynasty\-school;
+鲳 > the\-silvery\-pomfret;
+霪 > long\-and\-heavy\-rain;
+枘 > the\-handle\-of\-tools;
+滹 > the\-bank\-of\-a\-steam;
+彳 > step\-with\-left\-foot;
+亍 > to\-take\-small\-steps;
+砘 > a\-kind\-of\-farm\-tool;
+栎 > chestnut\-leaved\-oak;
+鹇 > the\-silver\-pheasant;
+苌 > averrhora\-carambola;
+郛 > outer\-walls\-of\-city;
+醢 > minced\-pickled\-meat;
+眚 > disease\-of\-the\-eyes;
+耱 > a\-kind\-of\-farm\-tool;
+裉 > s\-seam\-in\-a\-garment;
+崦 > a\-mountain\-in\-kansu;
+兕 > a\-female\-rhinoceros;
+鸒 > the\-eastern\-jackdaw;
+鷳 > the\-silver\-pheasant;
+鶲 > siberian\-flycatcher;
+鰶 > konosirus\-punctatus;
+鯧 > the\-silvery\-pomfret;
+鯥 > pomatomus\-saltatrix;
+鯕 > coryphaena\-hippurus;
+鮶 > sebastodes\-guntheri;
+駟 > team\-of\-four\-horses;
+饋 > offer\-food\-superior;
+飂 > wind\-in\-high\-places;
+颾 > blowing\-of\-the\-wind;
+頖 > zhou\-dynasty\-school;
+頍 > to\-raise\-one''s\-head;
+韘 > archer''s\-thumb\-ring;
+鞬 > a\-quiver\-on\-a\-horse;
+霶 > downpouring\-of\-rain;
+霮 > denseness\-of\-clouds;
+鑾 > bells\-hung\-on\-horse;
+鑴 > to\-engrave\-or\-carve;
+鎄 > iridium\-einsteinium;
+鋑 > to\-engrave\-or\-carve;
+鈃 > ancient\-wine\-vessel;
+酧 > to\-pledge\-with\-wine;
+鄔 > various\-place\-names;
+襴 > a\-one\-piece\-garment;
+褃 > a\-seam\-in\-a\-garment;
+蠰 > cerambyx\-rugicollis;
+蟨 > the\-siberian\-jerboa;
+蝝 > the\-larva\-of\-locust;
+蔊 > nasturtium\-montanum;
+蓇 > follicles\-of\-plants;
+蒈 > an\-organic\-compound;
+葇 > elsholtria\-paltrini;
+萇 > averrhora\-carambola;
+莕 > nymphoides\-peltatum;
+茳 > cyperus\-malaccensis;
+茚 > an\-organic\-compound;
+苳 > petasites\-japonicus;
+苊 > an\-organic\-compound;
+艫 > bow\-or\-prow\-of\-boat;
+舻 > bow\-or\-prow\-of\-boat;
+舮 > bow\-or\-prow\-of\-boat;
+膾 > minced\-meat\-or\-fish;
+腙 > an\-organic\-compound;
+脎 > an\-organic\-compound;
+胩 > an\-organic\-compound;
+肼 > an\-organic\-compound;
+肟 > an\-organic\-compound;
+耢 > a\-kind\-of\-farm\-tool;
+羢 > fine\-woolen\-fabrics;
+羑 > a\-guide\-to\-goodness;
+繲 > to\-work\-as\-a\-tailor;
+綀 > a\-kind\-of\-sackcloth;
+竑 > be\-vast\-and\-endless;
+禓 > to\-drive\-out\-demons;
+祐 > divine\-intervention;
+砜 > an\-organic\-compound;
+矔 > brilliant\-\(of\-eyes\);
+瞕 > cataract\-in\-the\-eye;
+櫟 > chestnut\-leaved\-oak;
+檪 > chestnut\-leaved\-oak;
+桪 > mythical\-giant\-tree;
+柮 > flat\-pieces\-of\-wood;
+暵 > dry\-by\-exposing\-sun;
+斝 > small\-jade\-wine\-cup;
+敄 > to\-put\-forth\-effort;
+撍 > to\-hold\-in\-the\-hand;
+揝 > to\-hold\-in\-the\-hand;
+揕 > roll\-up\-the\-sleeves;
+尗 > younger\-of\-brothers;
+壐 > the\-imperial\-signet;
+垕 > used\-in\-place\-names;
+圛 > used\-in\-place\-names;
+囈 > talk\-in\-one''s\-sleep;
+嘰 > sigh\-in\-disapproval;
+喞 > chirping\-of\-insects;
+唚 > vomiting\-of\-animals;
+哌 > used\-in\-translation;
+呺 > voice\-of\-anger\-vast;
+吖 > used\-in\-translation;
+偘 > ancient\-family\-name;
+䶯 > used\-in\-girl''s\-name;
+䶒 > outstanding\-ability;
+䶌 > a\-pustule\-or\-pimple;
+䶄 > striped\-mottled\-rat;
+䵱 > red\-and\-black\-color;
+䵮 > red\-and\-black\-color;
+䵔 > to\-turn\-on\-the\-heel;
+䴪 > a\-fabulous\-creature;
+䴠 > a\-young\-tailed\-deer;
+䱧 > a\-kind\-of\-fish\-eels;
+䰜 > a\-large\-earthen\-pot;
+䰛 > a\-large\-earthen\-pot;
+䮷 > movement\-of\-a\-horse;
+䮃 > to\-go\-before\-others;
+䭹 > movement\-of\-a\-horse;
+䫱 > a\-part\-of\-the\-skull;
+䫩 > to\-shake\-one''s\-head;
+䫅 > to\-shake\-one''s\-head;
+䪿 > the\-top\-of\-the\-head;
+䪽 > hoary\-haired\-person;
+䩷 > the\-sides\-of\-a\-shoe;
+䩧 > to\-tie\-up\-hurriedly;
+䩌 > to\-have\-a\-worn\-look;
+䧔 > to\-meet\-at\-the\-bank;
+䦙 > a\-government\-agency;
+䥴 > to\-engrave\-or\-carve;
+䥧 > a\-fine\-kind\-of\-jade;
+䤆 > a\-kind\-of\-rice\-wine;
+䤁 > cooked\-or\-well\-done;
+䣭 > an\-organic\-compound;
+䢋 > a\-marshal\-or\-herald;
+䠊 > to\-cut\-off\-the\-feet;
+䟣 > an\-animal\-in\-legend;
+䞳 > to\-stumble\-and\-fall;
+䝠 > a\-kind\-of\-wild\-boar;
+䜶 > a\-small\-kidney\-bean;
+䜁 > to\-abuse\-and\-insult;
+䙒 > to\-store\-or\-save\-up;
+䙏 > short\-sleeves\-shirt;
+䙁 > children''s\-garments;
+䘪 > clothes\-without\-hem;
+䖢 > first\-born\-silkworm;
+䖖 > to\-show\-familiarity;
+䕾 > a\-kind\-of\-vegetable;
+䕟 > a\-kind\-of\-vegetable;
+䕘 > a\-variety\-of\-fungus;
+䕃 > the\-shade\-of\-a\-tree;
+䔗 > a\-kind\-of\-vegetable;
+䓷 > nymphoides\-peltalum;
+䓚 > a\-kind\-of\-vegetable;
+䓍 > cruciferous\-flowers;
+䒨 > a\-kind\-of\-vegetable;
+䒈 > side\-beam\-of\-a\-boat;
+䒀 > short\-and\-deep\-boat;
+䑇 > medicine\-for\-a\-sore;
+䐭 > a\-discharge\-or\-flux;
+䏹 > to\-watch\-stealthily;
+䏷 > medicine\-for\-a\-sore;
+䏨 > to\-swell\-up\-greatly;
+䏆 > buzzing\-in\-the\-ears;
+䎿 > buzzing\-in\-the\-ears;
+䍷 > to\-chase\-each\-other;
+䍀 > clothes\-without\-hem;
+䌎 > to\-baste\-for\-sewing;
+䋹 > breadth\-of\-material;
+䋰 > to\-bind\-or\-restrain;
+䊙 > cooked\-or\-well\-done;
+䇽 > a\-coarse\-bamboo\-mat;
+䆯 > a\-short\-shaped\-face;
+䅯 > a\-variety\-of\-millet;
+䅟 > varieties\-of\-millet;
+䅕 > a\-variety\-of\-millet;
+䅒 > a\-sharp\-edged\-grass;
+䁋 > with\-one\-eye\-closed;
+䁃 > to\-look\-attentively;
+䀤 > insight\-of\-jealousy;
+䀣 > to\-look\-steadily\-at;
+㿓 > disease\-of\-the\-hoof;
+㾻 > not\-any\-progressive;
+㾶 > disease\-of\-the\-knee;
+㾢 > a\-malignant\-disease;
+㽭 > vacant\-lot\-or\-space;
+㽌 > the\-ridge\-of\-a\-roof;
+㽂 > a\-cracked\-container;
+㽁 > a\-large\-earthen\-pot;
+㼙 > brickwork\-of\-a\-well;
+㼒 > a\-kind\-of\-big\-melon;
+㸶 > color\-of\-the\-oxtail;
+㸵 > the\-lowing\-of\-an\-ox;
+㸥 > household\-registers;
+㸢 > cross\-beam\-of\-a\-bed;
+㸞 > blocks\-for\-printing;
+㸓 > to\-have\-disappeared;
+㸏 > cooked\-or\-well\-done;
+㸀 > blackened\-with\-soot;
+㷤 > rosy\-clouds\-of\-dawn;
+㲇 > the\-rattle\-of\-drums;
+㱾 > a\-kind\-of\-ornaments;
+㱼 > a\-kind\-of\-ornaments;
+㱹 > to\-die\-from\-disease;
+㱫 > destroyed\-or\-ruined;
+㱪 > stupid\-and\-confused;
+㱊 > asthmatic\-breathing;
+㱉 > moving\-of\-the\-mouth;
+㰴 > to\-grate\-on\-the\-ear;
+㰰 > asthmatic\-breathing;
+㰯 > the\-way\-of\-speaking;
+㯁 > household\-registers;
+㫯 > in\-contravention\-of;
+㩦 > to\-lead\-by\-the\-hand;
+㩘 > to\-moor\-to\-the\-bank;
+㩗 > to\-lead\-by\-the\-hand;
+㨝 > the\-very\-hard\-stuff;
+㨀 > to\-hold\-in\-the\-hand;
+吏 > government\-official;
+㧅 > to\-turn\-upside\-down;
+羚 > species\-of\-antelope;
+㦓 > difficult\-intention;
+㥝 > to\-arouse\-to\-action;
+㢊 > to\-set\-side\-by\-side;
+㢂 > of\-highly\-strategic;
+㟱 > shape\-of\-a\-mountain;
+㟓 > lofty\-and\-dangerous;
+㟒 > mountains\-adjoining;
+㝟 > in\-contravention\-of;
+㜱 > used\-in\-girl''s\-name;
+㜦 > used\-in\-girl''s\-name;
+㜡 > used\-in\-girl''s\-name;
+㜠 > used\-in\-girl''s\-name;
+㜙 > used\-in\-girl''s\-name;
+㜐 > used\-in\-girl''s\-name;
+㜍 > used\-in\-girl''s\-name;
+㜋 > used\-in\-girl''s\-name;
+㜂 > used\-in\-girl''s\-name;
+㛸 > used\-in\-girl''s\-name;
+㛷 > used\-in\-girl''s\-name;
+㛵 > used\-in\-girl''s\-name;
+㛭 > used\-in\-girl''s\-name;
+㛬 > used\-in\-girl''s\-name;
+㛫 > used\-in\-girl''s\-name;
+㛞 > used\-in\-girl''s\-name;
+㛝 > used\-in\-girl''s\-name;
+㛜 > used\-in\-girl''s\-name;
+㛙 > used\-in\-girl''s\-name;
+㛘 > used\-in\-girl''s\-name;
+㛖 > used\-in\-girl''s\-name;
+㛓 > used\-in\-girl''s\-name;
+㛏 > used\-in\-girl''s\-name;
+㛅 > used\-in\-girl''s\-name;
+㛄 > used\-in\-girl''s\-name;
+㚽 > used\-in\-girl''s\-name;
+㚸 > used\-in\-girl''s\-name;
+㚵 > used\-in\-girl''s\-name;
+㚱 > used\-in\-girl''s\-name;
+㚭 > used\-in\-girl''s\-name;
+㚫 > used\-in\-girl''s\-name;
+㚨 > used\-in\-girl''s\-name;
+㘫 > to\-fall\-into\-a\-well;
+㗶 > to\-expel\-the\-breath;
+㖪 > sound\-of\-surprising;
+㔹 > a\-surplus\-or\-excess;
+㔇 > a\-kind\-of\-farm\-tool;
+㓽 > a\-kind\-of\-farm\-tool;
+㓷 > to\-cut\-off\-the\-nose;
+㒔 > to\-shake\-one''s\-head;
+㒄 > brittle\-and\-friable;
+㒃 > capital\-form\-of\-two;
+㑛 > to\-shake\-one''s\-head;
+玖 > black\-colored\-jade;
+哪 > which\?\-where\?\-how\?;
+牲 > sacrificial\-animal;
+漢 > the\-chinese\-people;
+漕 > transport\-by\-water;
+阴 > ''female''\-principle;
+仙 > taoist\-super\-being;
+驻 > to\-be\-stationed\-at;
+駐 > to\-be\-stationed\-at;
+腮 > lower\-part\-of\-face;
+拒 > ward\-off\-with\-hand;
+桂 > cassia\-or\-cinnamon;
+朵 > cluster\-of\-flowers;
+曹 > ministry\-officials;
+罎 > an\-earthenware\-jar;
+陰 > ''female''\-principle;
+丸 > small\-round\-object;
+矩 > carpenter''s\-square;
+腊 > year\-end\-sacrifice;
+龟 > turtle\-or\-tortoise;
+邸 > official\-residence;
+侃 > upright\-and\-strong;
+邂 > unexpected\-meeting;
+怯 > lacking\-in\-courage;
+甸 > suburbs\-of\-capital;
+捞 > scoop\-out\-of\-water;
+扛 > carry\-on\-shoulders;
+虔 > act\-with\-reverence;
+霖 > long\-spell\-of\-rain;
+韧 > strong\-and\-pliable;
+瑾 > brilliance\-of\-gems;
+桔 > chinese\-bellflower;
+鸳 > male\-mandarin\-duck;
+钗 > ornamental\-hairpin;
+巅 > summit\-of\-mountain;
+樨 > osmanthus\-fragrans;
+蠡 > wood\-boring\-insect;
+蹂 > trample\-under\-foot;
+骥 > thoroughbred\-horse;
+唁 > express\-condolence;
+骅 > an\-excellent\-horse;
+碉 > room\-made\-of\-stone;
+疟 > intermittent\-fever;
+纣 > name\-of\-an\-emperor;
+磬 > musical\-instrument;
+爿 > half\-of\-tree\-trunk;
+旎 > fluttering\-of\-flag;
+夔 > one\-legged\-monster;
+殍 > to\-starve\-to\-death;
+骊 > a\-pure\-black\-horse;
+湎 > flushed\-with\-drink;
+喵 > the\-mew\-of\-the\-cat;
+焙 > dry\-over\-slow\-fire;
+绾 > to\-string\-together;
+眦 > corner\-of\-the\-eyes;
+瑁 > fine\-piece\-of\-jade;
+榘 > carpenter''s\-square;
+粳 > non\-glutinous\-rice;
+餮 > a\-legendary\-animal;
+汊 > a\-branching\-stream;
+缃 > light\-yellow\-color;
+檩 > the\-bole\-of\-a\-tree;
+奁 > lady''s\-vanity\-case;
+楸 > mallotus\-japonicus;
+骺 > tip\-of\-a\-long\-bone;
+藿 > lophanthus\-rugosus;
+樾 > the\-shade\-of\-trees;
+酤 > to\-deal\-in\-spirits;
+臌 > dropsical\-swelling;
+跫 > sound\-of\-footsteps;
+綮 > embroidered\-banner;
+觳 > an\-ancient\-measure;
+杌 > the\-stump\-f\-a\-tree;
+嵫 > a\-hill\-in\-shantung;
+擗 > to\-beat\-the\-breast;
+脔 > small\-lump\-of\-meat;
+醅 > unstrained\-spirits;
+羰 > carbonyl\-\(radical\);
+蛸 > long\-legged\-spider;
+瞀 > to\-look\-at\-closely;
+殳 > name\-of\-old\-weapon;
+崞 > mountain\-in\-shanxi;
+垲 > high\-and\-dry\-place;
+虿 > a\-kind\-of\-scorpion;
+疳 > childhood\-diseases;
+罾 > a\-large\-square\-net;
+獬 > a\-fabulous\-monster;
+龜 > turtle\-or\-tortoise;
+龖 > flight\-of\-a\-dragon;
+鸜 > a\-species\-of\-mynah;
+鷽 > oriental\-bullfinch;
+鴛 > male\-mandarin\-duck;
+鴗 > alcedo\-bengalensis;
+鱵 > hyporhampus\-sajuri;
+鬠 > to\-make\-a\-top\-knot;
+驪 > a\-pure\-black\-horse;
+驥 > thoroughbred\-horse;
+驊 > an\-excellent\-horse;
+餼 > sacrificial\-victim;
+顋 > lower\-part\-of\-face;
+頔 > good\-and\-beautiful;
+韌 > strong\-and\-pliable;
+靱 > strong\-and\-pliable;
+靭 > strong\-and\-pliable;
+靫 > strong\-and\-pliable;
+釵 > ornamental\-hairpin;
+釒 > kangxi\-radical\-167;
+鄮 > ancient\-place\-name;
+轙 > rings\-on\-the\-yokes;
+軰 > a\-row\-of\-carriages;
+谽 > a\-mouth\-or\-opening;
+訁 > kangxi\-radical\-149;
+襵 > a\-pleat\-in\-a\-skirt;
+褰 > lift\-up\-the\-skirts;
+蠆 > a\-kind\-of\-scorpion;
+蚹 > eulota\-peliomphala;
+蘷 > one\-legged\-monster;
+薷 > elshotria\-paltrini;
+蕺 > houttuynia\-cordata;
+蓴 > edible\-water\-plant;
+葴 > physalis\-alkekengi;
+荅 > answer\:\-small\-bean;
+茖 > allium\-victorialis;
+芣 > medicinal\-plantago;
+臠 > small\-lump\-of\-meat;
+臘 > year\-end\-sacrifice;
+臈 > year\-end\-sacrifice;
+翯 > glistening\-plumage;
+翖 > ksc\-extension\-3108;
+羧 > carboxyl\-\(radical\);
+罈 > an\-earthenware\-jar;
+緗 > light\-yellow\-color;
+綰 > to\-string\-together;
+紂 > name\-of\-an\-emperor;
+糒 > food\-for\-a\-journey;
+稉 > non\-glutinous\-rice;
+秔 > non\-glutinous\-rice;
+碞 > room\-made\-of\-stone;
+皪 > luster\-\(of\-pearls\);
+瘧 > intermittent\-fever;
+痜 > a\-scabby\-bald\-head;
+甿 > farming\-population;
+甋 > a\-jar\-without\-ears;
+琤 > jade\-of\-jade\-being;
+玘 > court\-dress\-jewels;
+獳 > fierce\-dog\-looking;
+煍 > to\-colour\-by\-smoke;
+灥 > a\-group\-of\-springs;
+泲 > kind\-of\-white\-wine;
+氍 > fine\-woollen\-cloth;
+檁 > the\-bole\-of\-a\-tree;
+柺 > an\-old\-man''s\-staff;
+杻 > ligustrum\-sinenese;
+杙 > a\-tiny\-wooden\-post;
+朶 > cluster\-of\-flowers;
+昷 > to\-feed\-a\-prisoner;
+旼 > gentle\-and\-affable;
+擭 > trap\-catch\-animals;
+撈 > scoop\-out\-of\-water;
+彄 > nock\-at\-end\-of\-bow;
+巔 > summit\-of\-mountain;
+巓 > summit\-of\-mountain;
+嶨 > big\-rocky\-mountain;
+嵖 > name\-of\-a\-mountain;
+峹 > name\-of\-a\-mountain;
+峱 > name\-of\-a\-mountain;
+岢 > name\-of\-a\-mountain;
+岍 > name\-of\-a\-mountain;
+奩 > lady''s\-vanity\-case;
+壜 > earthen\-jar\-or\-jug;
+墰 > an\-earthenware\-jar;
+墐 > to\-build\-with\-soil;
+塏 > high\-and\-dry\-place;
+噋 > to\-swallow\-hastily;
+哰 > incoherent\-chatter;
+僊 > taoist\-super\-being;
+佷 > to\-act\-contrary\-to;
+亀 > turtle\-or\-tortoise;
+乑 > stand\-side\-by\-side;
+丬 > half\-of\-tree\-trunk;
+䶣 > to\-grind\-the\-teeth;
+䶟 > to\-gnash\-the\-teeth;
+䵕 > a\-varietyof\-millet;
+䴱 > cakes\-and\-biscuits;
+䴦 > a\-legendary\-animal;
+䳨 > the\-female\-phoenix;
+䳔 > a\-pigeon\-like\-bird;
+䳎 > a\-pigeon\-like\-bird;
+䱳 > a\-kind\-of\-sturgeon;
+䱣 > a\-long\-narrow\-fish;
+䰪 > mischievous\-spirit;
+䰨 > mischievous\-spirit;
+䯱 > the\-hair\-stands\-up;
+䯏 > the\-shoulder\-blade;
+䯋 > the\-shoulder\-blade;
+䮥 > color\-of\-the\-horse;
+䮝 > a\-legendary\-animal;
+䭰 > strong\-sweet\-smell;
+䭯 > strong\-sweet\-smell;
+䭋 > to\-eat\-to\-the\-full;
+䭃 > to\-eat\-to\-the\-fool;
+䬾 > cakes\-and\-biscuits;
+䬴 > fodder\-for\-animals;
+䬬 > to\-eat\-to\-the\-full;
+䬨 > to\-eat\-to\-the\-full;
+䬧 > round\-shaped\-cakes;
+䫐 > to\-bend\-one''s\-head;
+䪌 > cushion\-for\-saddle;
+䨆 > a\-kind\-of\-pheasant;
+䧼 > the\-the\-snow\-goose;
+䧦 > name\-of\-a\-hillside;
+䧇 > name\-of\-a\-hillside;
+䦮 > door\-of\-the\-center;
+䦒 > the\-door\-is\-closed;
+䦐 > the\-bolt\-of\-a\-door;
+䥳 > a\-chemical\-element;
+䥲 > a\-chemical\-element;
+䥞 > to\-cut\-with\-shears;
+䥝 > desperate\-fighting;
+䤄 > flushed\-with\-drink;
+䣺 > filtrated\-the\-wine;
+䣀 > name\-of\-a\-mountain;
+䡠 > strong\-and\-durable;
+䡛 > name\-of\-a\-carriage;
+䠧 > hard\-to\-go\-forward;
+䠡 > sound\-of\-footsteps;
+䟝 > to\-walk\-right\-into;
+䝞 > name\-of\-a\-immortal;
+䛉 > to\-induce\-by\-words;
+䚧 > curved\-with\-angles;
+䙃 > sleeveless\-clothes;
+䘍 > a\-kind\-of\-scorpion;
+䗻 > a\-kind\-of\-sea\-crab;
+䗨 > lepsima\-saccharina;
+䗣 > insect\-of\-mulberry;
+䗍 > wood\-boring\-insect;
+䖧 > a\-poisonous\-insect;
+䖓 > of\-a\-walking\-tiger;
+䕪 > the\-water\-plantain;
+䔼 > sound\-of\-the\-grass;
+䔃 > cordate\-houttuynia;
+䓫 > name\-of\-a\-mountain;
+䓨 > long\-necked\-bottle;
+䓠 > the\-water\-plantain;
+䓖 > cnidium\-officinale;
+䓃 > melancholy\-and\-sad;
+䒝 > root\-of\-the\-thatch;
+䑙 > put\-out\-the\-tongue;
+䑆 > feel\-like\-vomiting;
+䐔 > muscle\-of\-the\-calf;
+䎾 > big\-and\-round\-eyes;
+䎴 > a\-legendary\-spirit;
+䎪 > the\-stalk\-of\-grain;
+䎔 > fine\-and\-soft\-hair;
+䎏 > young\-birds\-flying;
+䎍 > fine\-and\-soft\-hair;
+䍩 > to\-offer\-provision;
+䍣 > a\-kind\-of\-fish\-net;
+䌍 > fine\-woven\-pattern;
+䌉 > the\-large\-of\-a\-net;
+䋗 > strong\-and\-durable;
+䋈 > to\-bind\-loose\-hemp;
+䉬 > coarse\-bamboo\-mats;
+䈮 > a\-woven\-instrument;
+䇳 > a\-memoradum\-tablet;
+䆪 > color\-of\-the\-light;
+䆥 > to\-pierce\-throughj;
+䆤 > to\-pierce\-throughj;
+䆑 > a\-little\-protruded;
+䅽 > fragrance\-or\-aroma;
+䅱 > to\-eat\-to\-the\-full;
+䅧 > fine\-rice\-seedling;
+䅝 > the\-stalk\-of\-grain;
+䅜 > to\-store\-up\-grains;
+䅀 > the\-stalk\-of\-grain;
+䄚 > to\-worship\-the\-god;
+䃽 > name\-of\-a\-mountain;
+䃜 > a\-fine\-black\-stone;
+䁊 > dark\-and\-deep\-eyed;
+䀞 > with\-heavy\-eyelids;
+䀗 > to\-look\-askance\-at;
+㿌 > lump\-in\-the\-throat;
+㼣 > bricks\-of\-the\-well;
+㼇 > fine\-jade\-or\-agate;
+㻗 > a\-string\-of\-pearls;
+㻊 > a\-red\-colored\-jade;
+㻅 > jade\-decorated\-cap;
+㺧 > a\-white\-yellow\-dog;
+㹤 > lacking\-in\-courage;
+㸽 > a\-two\-years\-old\-ox;
+㸬 > a\-two\-years\-old\-ox;
+㸈 > scorched\-or\-burned;
+㷳 > color\-of\-the\-flame;
+㷢 > bundle\-of\-charcoal;
+㷠 > a\-will\-o''\-the\-wisp;
+㶶 > scorched\-or\-burned;
+㵓 > the\-water\-is\-clear;
+㴾 > swelling\-or\-rising;
+㳂 > to\-follow\-a\-course;
+㲡 > thick\-coat\-of\-hair;
+㲗 > to\-smooth\-the\-hair;
+㯶 > the\-coir\-palm\-tree;
+㯲 > a\-wooden\-framework;
+㯛 > gourd\-shaped\-dates;
+㮻 > to\-scratch\-lightly;
+㮍 > amemorandum\-tablet;
+㭨 > the\-cocoa\-nut\-palm;
+㭡 > name\-of\-a\-mountain;
+㭝 > name\-of\-a\-pavilion;
+㬴 > the\-moon\-is\-dimmed;
+㬒 > the\-sun\-are\-dimmed;
+㬎 > motes\-in\-a\-sunbeam;
+㫦 > of\-look\-of\-the\-sun;
+㫞 > of\-look\-of\-the\-sun;
+㪸 > to\-fill\-a\-cup\-with;
+㩃 > to\-take\-or\-capture;
+㨽 > to\-cut\-or\-rip\-open;
+㨡 > to\-push\-with\-hands;
+㨜 > to\-help\-each\-other;
+杻 > ligustrum\-sinenese;
+㧀 > the\-bolt\-of\-a\-door;
+㦾 > the\-bolt\-of\-a\-door;
+驪 > a\-pure\-black\-horse;
+㥸 > to\-sympathize\-with;
+㥨 > unhappy\-displeased;
+㤪 > to\-find\-fault\-with;
+臘 > year\-end\-sacrifice;
+龜 > turtle\-or\-tortoise;
+龜 > turtle\-or\-tortoise;
+㣌 > to\-join\-two\-things;
+㡯 > wall\-of\-a\-building;
+㠦 > name\-of\-a\-mountain;
+㠠 > name\-of\-a\-mountain;
+㠓 > name\-of\-a\-mountain;
+㠏 > name\-of\-a\-mountain;
+㠆 > name\-of\-a\-mountain;
+㟳 > name\-of\-a\-mountain;
+㟰 > name\-of\-a\-mountain;
+㟪 > name\-of\-a\-mountain;
+㟦 > name\-of\-a\-mountain;
+㟘 > name\-of\-a\-mountain;
+㟍 > name\-of\-a\-mountain;
+㟊 > name\-of\-a\-mountain;
+㟈 > name\-of\-a\-mountain;
+㟆 > name\-of\-a\-mountain;
+㟄 > name\-of\-a\-mountain;
+㟀 > name\-of\-a\-mountain;
+㞻 > name\-of\-a\-mountain;
+㞴 > name\-of\-a\-mountain;
+㞳 > name\-of\-a\-mountain;
+㞲 > name\-of\-a\-mountain;
+㞰 > name\-of\-a\-mountain;
+㞨 > name\-of\-a\-mountain;
+㞦 > name\-of\-a\-mountain;
+㘳 > a\-hillock\-or\-mound;
+㘱 > to\-fall\-into\-ruins;
+㘜 > a\-kind\-of\-silkworm;
+㖅 > sound\-of\-a\-whistle;
+㖃 > to\-roar\-of\-animals;
+㔢 > to\-break\-something;
+皿 > shallow\-container;
+屓 > gigantic\-strength;
+派 > school\-of\-thought;
+姓 > one''s\-family\-name;
+煎 > fry\-in\-fat\-or\-oil;
+襁 > swaddling\-clothes;
+哈 > sound\-of\-laughter;
+鸚 > species\-of\-parrot;
+欧 > translit\.\:\-europe;
+鵡 > species\-of\-parrot;
+订 > draw\-up\-agreement;
+偏 > inclined\-one\-side;
+歔 > blow\-through\-nose;
+培 > bank\-up\-with\-dirt;
+漫 > overflow\-of\-water;
+侠 > chivalrous\-person;
+姆 > child''s\-governess;
+盒 > small\-box\-or\-case;
+儒 > confucian\-scholar;
+阪 > hillside\-farmland;
+迈 > take\-a\-big\-stride;
+捏 > pick\-with\-fingers;
+浙 > zhejiang\-province;
+筧 > bamboo\-water\-pipe;
+艘 > counter\-for\-ships;
+趁 > take\-advantage\-of;
+鉢 > earthenware\-basin;
+蓬 > type\-of\-raspberry;
+辖 > linchpin\-of\-wheel;
+逅 > meet\-unexpectedly;
+嘎 > sound\-of\-laughter;
+酣 > enjoy\-intoxicants;
+饺 > stuffed\-dumplings;
+咏 > sing\-song\-or\-poem;
+钵 > earthenware\-basin;
+搀 > give\-helping\-hand;
+捶 > strike\-with\-stick;
+刨 > carpenter''s\-plane;
+蠕 > eumenes\-polifomis;
+饨 > stuffed\-dumplings;
+崆 > kongtong\-mountain;
+盅 > small\-cup\-or\-bowl;
+梆 > watchman''s\-rattle;
+嵇 > mountain\-in\-henan;
+耷 > ears\-hanging\-down;
+羌 > qiang\-nationality;
+苞 > a\-variety\-of\-rush;
+鹦 > species\-of\-parrot;
+藜 > chenopodium\-album;
+艄 > stern\-of\-a\-vessel;
+鹉 > species\-of\-parrot;
+峁 > yellow\-dirt\-mount;
+镔 > high\-quality\-iron;
+鲫 > carassius\-auratus;
+龇 > to\-show\-the\-teeth;
+沭 > river\-in\-shantung;
+榫 > mortise\-and\-tenon;
+萋 > luxuriant\-foliage;
+醮 > religious\-service;
+牝 > female\-of\-species;
+曷 > why\?\-what\?\-where\?;
+瑷 > fine\-quality\-jade;
+耦 > plow\-side\-by\-side;
+鸶 > the\-eastern\-egret;
+篦 > fine\-toothed\-comb;
+妁 > act\-as\-go\-between;
+荥 > a\-county\-in\-henan;
+戽 > to\-bale\-out\-water;
+枳 > trifoliate\-orange;
+椐 > zelkowa\-acuminata;
+崤 > mountain\-in\-henan;
+魉 > a\-kind\-of\-monster;
+颞 > the\-temporal\-bone;
+锴 > high\-quality\-iron;
+笕 > bamboo\-water\-pipe;
+耩 > to\-plough\.\-to\-sow;
+廨 > government\-office;
+蟮 > type\-of\-earthworm;
+蛱 > kind\-of\-butterfly;
+禳 > pray\-or\-sacrifice;
+瞢 > eyesight\-obscured;
+蔸 > counter\-for\-plant;
+螅 > \(intestinal\-worm\);
+祧 > an\-ancestral\-hall;
+柝 > watchman''s\-rattle;
+蠃 > the\-solitary\-wasp;
+蜾 > the\-solitary\-wasp;
+聃 > ears\-without\-rims;
+耜 > spade\-shaped\-tool;
+慝 > do\-evil\-in\-secret;
+庳 > a\-low\-built\-house;
+鼢 > a\-variety\-of\-mole;
+蚺 > a\-boa\-constrictor;
+颥 > the\-temporal\-bone;
+硇 > a\-kind\-of\-mineral;
+硭 > a\-crude\-saltpetre;
+胨 > a\-kind\-of\-protein;
+齜 > to\-show\-the\-teeth;
+齄 > red\-sores\-on\-nose;
+黟 > black\-and\-shining;
+鹁 > species\-of\-pigeon;
+鵵 > scops\-semitorques;
+鵓 > species\-of\-pigeon;
+鯽 > carassius\-auratus;
+鮸 > sciaena\-albiflora;
+魫 > the\-young\-of\-fish;
+魎 > a\-kind\-of\-monster;
+髽 > to\-dress\-the\-hair;
+饩 > sacrficial\-victim;
+餃 > stuffed\-dumplings;
+餂 > to\-obtain\-by\-hook;
+飩 > stuffed\-dumplings;
+顳 > the\-temporal\-bone;
+顬 > the\-temporal\-bone;
+鞸 > leather\-arm\-guard;
+鞲 > leather\-arm\-guard;
+靿 > the\-leg\-of\-a\-boot;
+隸 > be\-subservient\-to;
+隷 > be\-subservient\-to;
+閪 > to\-lose\-lost\-item;
+鑤 > carpenter''s\-plane;
+鑌 > high\-quality\-iron;
+鍇 > high\-quality\-iron;
+銠 > rhodium\-ruthenium;
+鉕 > promethium\-bronze;
+鉋 > carpenter''s\-plane;
+鈳 > columbium\-niobium;
+醭 > moulds\-on\-liquids;
+醑 > to\-strain\-spirits;
+酺 > drink\-with\-others;
+邁 > take\-a\-big\-stride;
+轄 > linchpin\-of\-wheel;
+貍 > a\-fox\-like\-animal;
+豋 > ceremonial\-vessel;
+訂 > draw\-up\-agreement;
+覼 > explain\-in\-detail;
+覙 > explain\-in\-detail;
+蝡 > eumenes\-polifomis;
+蜔 > inlaid\-shell\-work;
+蛺 > kind\-of\-butterfly;
+蚦 > a\-boa\-constrictor;
+蘵 > physalis\-angulata;
+藨 > kind\-of\-raspberry;
+蕸 > water\-lily''s\-leaf;
+蕑 > valeriana\-villosa;
+葎 > humulus\-japonicus;
+菣 > artemisia\-apiacea;
+莛 > stalks\-of\-grasses;
+茍 > to\-be\-circumspect;
+罛 > large\-fishing\-net;
+缽 > earthenware\-basin;
+縰 > band\-for\-the\-hair;
+綎 > silk\-braided\-cord;
+紬 > kind\-of\-thin\-silk;
+籸 > powdery\-substance;
+籓 > big\-winnow\-basket;
+篨 > coarse\-bamboo\-mat;
+箆 > fine\-toothed\-comb;
+祊 > river\-in\-shandong;
+瘵 > a\-wasting\-disease;
+璫 > pendant\-ornaments;
+璦 > fine\-quality\-jade;
+玞 > an\-inferior\-agate;
+熀 > the\-blaze\-of\-fire;
+灎 > movement\-of\-water;
+湑 > to\-strain\-spirits;
+渰 > forming\-or\-rising;
+洶 > the\-rush\-of\-water;
+朠 > color\-of\-the\-moon;
+暔 > name\-of\-a\-country;
+攰 > totally\-exhausted;
+掫 > be\-on\-night\-watch;
+捥 > to\-bend\-the\-wrist;
+抌 > to\-bale\-out\-water;
+愰 > clearness\-of\-mind;
+弖 > phonetic\-for\-''te'';
+嵆 > mountain\-in\-henan;
+屭 > gigantic\-strength;
+尨 > shaggy\-haired\-dog;
+夊 > kangxi\-radical\-35;
+喿 > chirping\-of\-birds;
+喼 > used\-phonetically;
+喹 > chemical\-compound;
+哵 > the\-cry\-of\-a\-bird;
+哴 > crying\-of\-infants;
+吢 > vomiting\-of\-a\-dog;
+倈 > to\-induce\-to\-come;
+俠 > chivalrous\-person;
+俈 > to\-inform\-quickly;
+仂 > surplus\-or\-excess;
+乪 > a\-bend\-in\-a\-river;
+䶰 > feather\-ornaments;
+䶖 > disease\-of\-tongue;
+䵜 > to\-plough\-and\-sow;
+䴊 > the\-crow\-pheasant;
+䳤 > a\-kind\-of\-strange;
+䳙 > a\-egret\-like\-bird;
+䯥 > with\-a\-high\-skull;
+䯢 > partial\-paralysis;
+䮫 > a\-big\-mule\-an\-ass;
+䮚 > diseases\-of\-horse;
+䮐 > in\-good\-condition;
+䭔 > steamed\-dumplings;
+䬰 > light\-refreshment;
+䬕 > sound\-of\-the\-wind;
+䬍 > the\-sound\-of\-wind;
+䬆 > a\-blustering\-gale;
+䬃 > the\-sound\-of\-wind;
+䬀 > sound\-of\-the\-wind;
+䫦 > the\-lower\-jawbone;
+䫟 > facial\-complexion;
+䫍 > to\-bow\-one''s\-head;
+䫉 > facial\-appearance;
+䨕 > pouring\-with\-rain;
+䧺 > the\-male\-of\-birds;
+䦪 > sound\-of\-the\-door;
+䦝 > sound\-of\-the\-door;
+䦖 > sound\-of\-the\-door;
+䦃 > to\-dig\-with\-a\-hoe;
+䣻 > color\-of\-the\-wine;
+䣪 > color\-of\-the\-wine;
+䢝 > the\-next\-in\-order;
+䡷 > noise\-of\-vehicles;
+䡪 > fan\-of\-a\-carriage;
+䡙 > an\-armed\-carriage;
+䞕 > color\-of\-the\-fire;
+䞂 > fairly\-prosperous;
+䝺 > to\-pierce\-through;
+䝹 > fairly\-prosperous;
+䝳 > to\-kill\-for\-money;
+䝲 > farewell\-presents;
+䜢 > cruel\-and\-violent;
+䚠 > unbroken\-firewood;
+䚝 > new\-growing\-horns;
+䚚 > horn\-of\-an\-animal;
+䚑 > to\-steal\-a\-glance;
+䚀 > to\-see\-stealthily;
+䙴 > to\-soar\-as\-a\-bird;
+䙪 > a\-loop\-for\-button;
+䘎 > name\-of\-an\-insect;
+䗹 > hairy\-caterpillar;
+䗥 > the\-solitary\-wasp;
+䕧 > zizania\-latifolia;
+䕠 > coarse\-bamboo\-mat;
+䕆 > round\-straw\-quilt;
+䓛 > molecular\-formula;
+䒽 > illicium\-anisatum;
+䒐 > disturbed\-in\-mind;
+䒏 > disturbed\-in\-mind;
+䑼 > ocean\-going\-liner;
+䐠 > between\-the\-flesh;
+䐘 > to\-laugh\-heartily;
+䐖 > to\-laugh\-heartily;
+䏰 > a\-kind\-of\-insects;
+䏛 > a\-kind\-of\-insects;
+䎨 > to\-plough\-and\-sow;
+䍭 > a\-ewe\-or\-she\-goat;
+䍧 > a\-ewe\-or\-she\-goat;
+䍇 > flat\-bottom\-crock;
+䌨 > thin\-silk\-fabrics;
+䋻 > to\-spin\-and\-weave;
+䋺 > a\-swing\-a\-crupper;
+䋘 > to\-hand\-by\-a\-rope;
+䊯 > grains\-with\-beard;
+䊚 > steamed\-dumplings;
+䉌 > crude\-bamboo\-mats;
+䈠 > books\-and\-volumes;
+䆕 > to\-pierce\-through;
+䆔 > to\-pierce\-through;
+䄉 > a\-rite\-or\-service;
+䃿 > a\-rite\-or\-service;
+䂣 > a\-kind\-of\-mineral;
+䁽 > eyesight\-obscured;
+䁸 > eyesight\-obscured;
+䁄 > to\-close\-the\-eyes;
+䀹 > to\-wink\-eyelashes;
+㿃 > an\-ox\-headed\-boil;
+㾱 > incurable\-disease;
+㽍 > an\-earthen\-vessel;
+㼴 > an\-earthen\-vessel;
+㺿 > a\-jade\-like\-stone;
+㶿 > the\-smoke\-went\-up;
+㶴 > a\-very\-great\-fire;
+㵫 > water\-gushing\-out;
+㵍 > filled\-with\-water;
+㵄 > name\-of\-a\-dynasty;
+㳜 > the\-flowing\-water;
+㲲 > fine\-cotton\-cloth;
+㲘 > fine\-woolen\-cloth;
+㲋 > a\-kind\-of\-animals;
+㲃 > smooth\-and\-curved;
+㰩 > sound\-of\-laughter;
+㯿 > handle\-of\-a\-ladle;
+㯦 > the\-game\-of\-chess;
+㮵 > common\-sandalwood;
+㮨 > codium\-macronatum;
+㮚 > the\-chestnut\-tree;
+㬛 > to\-dry\-in\-the\-sun;
+㩮 > to\-lift\-up\-or\-off;
+㩩 > to\-come\-to\-an\-end;
+㩙 > a\-cork\-or\-stopper;
+㨢 > to\-rip\-open\-flesh;
+隸 > be\-subservient\-to;
+㣢 > to\-rest\-from\-work;
+㣓 > literary\-in\-taste;
+㣍 > a\-raised\-platform;
+㢮 > to\-unstring\-a\-bow;
+㢑 > a\-collapsed\-house;
+㢈 > a\-collapsed\-house;
+㢄 > a\-kind\-of\-utensil;
+㡟 > bed\-mats\-for\-baby;
+㠷 > a\-vessel\-for\-rice;
+㠥 > rugged\-and\-uneven;
+㠢 > rugged\-and\-uneven;
+㟴 > lump\-on\-the\-hills;
+㟤 > zhuang\-in\-guangxi;
+㟃 > to\-have\-charge\-of;
+㞭 > name\-of\-an\-island;
+㝌 > prolonged\-illness;
+㛴 > to\-anger\-to\-annoy;
+㚅 > to\-worship\-of\-god;
+㙩 > an\-enclosing\-wall;
+㘦 > wall\-made\-of\-soil;
+㘚 > angry\-air\-of\-look;
+㗼 > eating\-or\-talking;
+㗥 > sound\-of\-striking;
+㖸 > to\-laugh\-heartily;
+㖧 > can\-not\-see\-clear;
+㔝 > strong\-resistance;
+㓾 > to\-wound\-the\-skin;
+㑝 > to\-make\-a\-fool\-of;
+㑏 > to\-stand\-and\-wait;
+㑊 > a\-kind\-of\-disease;
+㐲 > name\-of\-an\-island;
+个 > numerary\-adjunct;
+里 > unit\-of\-distance;
+阳 > ''male''\-principle;
+訝 > express\-surprise;
+黍 > glutinous\-millet;
+剧 > theatrical\-plays;
+蘂 > stamen\-or\-pistil;
+挺 > to\-stand\-upright;
+础 > foundation\-stone;
+劇 > theatrical\-plays;
+舅 > mother''s\-brother;
+萧 > common\-artemisia;
+個 > numerary\-adjunct;
+俺 > personal\-pronoun;
+玲 > tinkling\-of\-jade;
+陽 > ''male''\-principle;
+箇 > numerary\-adjunct;
+捩 > twist\-with\-hands;
+讶 > express\-surprise;
+黛 > blacken\-eyebrows;
+妆 > to\-adorn\-oneself;
+幢 > carriage\-curtain;
+梭 > weaver''s\-shuttle;
+漪 > ripples\-on\-water;
+眷 > take\-interest\-in;
+勋 > meritorious\-deed;
+甭 > there\-is\-no\-need;
+祠 > ancestral\-temple;
+舔 > lick\-with\-tongue;
+蕊 > unopened\-flowers;
+赣 > jiangxi\-province;
+跷 > raise\-one''s\-foot;
+剁 > chop\-by\-pounding;
+薰 > a\-medicinal\-herb;
+叼 > holding\-in\-mouth;
+荼 > bitter\-vegetable;
+徙 > move\-one''s\-abode;
+涔 > river\-in\-shaanxi;
+潢 > expanse\-of\-water;
+秸 > stalks\-of\-millet;
+袈 > buddhist\-cassock;
+珞 > kind\-of\-necklace;
+啾 > wailing\-of\-child;
+亻 > radical\-number\-9;
+舐 > lick\-with\-tongue;
+夙 > early\-in\-morning;
+鹘 > a\-kind\-of\-pigeon;
+娩 > give\-birth\-child;
+姝 > a\-beautiful\-girl;
+懑 > be\-sick\-at\-heart;
+锉 > carpenter''s\-file;
+洱 > a\-lake\-in\-yunnan;
+蝈 > small\-green\-frog;
+帼 > women''s\-headgear;
+狎 > be\-familiar\-with;
+胪 > arrange\-in\-order;
+豢 > domestic\-animals;
+眇 > blind\-in\-one\-eye;
+羿 > legendary\-archer;
+芩 > salt\-marsh\-plant;
+茭 > an\-aquatic\-grass;
+蓖 > castor\-oil\-plant;
+傧 > entertain\-guests;
+薜 > evergreen\-shrubs;
+趺 > sit\-cross\-legged;
+椹 > a\-chopping\-board;
+霈 > torrential\-rains;
+跏 > sit\-cross\-legged;
+曩 > in\-ancient\-times;
+栌 > supporting\-block;
+哚 > chemical\-element;
+筌 > bamboo\-fish\-trap;
+浍 > irrigation\-ditch;
+猁 > a\-kind\-of\-monkey;
+啶 > \-d\-\+\-ine\-\(chem\.\);
+鬯 > sacrificial\-wine;
+鲷 > pagrosomus\-major;
+聱 > bent\-and\-twisted;
+劢 > put\-forth\-effort;
+蟪 > a\-kind\-of\-cicada;
+螗 > a\-kind\-of\-cicada;
+赆 > farewell\-present;
+埯 > cover\-with\-earth;
+鲔 > kind\-of\-sturgeon;
+罨 > medical\-compress;
+嫜 > husband''s\-parent;
+漤 > marinate\-in\-salt;
+嚆 > give\-forth\-sound;
+薹 > cyperus\-rotundus;
+茆 > species\-of\-grass;
+齙 > projecting\-teeth;
+鹶 > salty\-and\-bitter;
+鶻 > a\-kind\-of\-pigeon;
+鯛 > pagrosomus\-major;
+鯆 > the\-skate\-or\-ray;
+鮪 > kind\-of\-sturgeon;
+魬 > sole\-or\-flounder;
+骴 > a\-putrid\-carcase;
+馘 > cut\-off\-left\-ear;
+飀 > soughing\-of\-wind;
+韝 > leather\-arm\-band;
+韊 > a\-case\-for\-a\-bow;
+鞶 > big\-leather\-belt;
+雗 > a\-white\-pheasant;
+隤 > to\-fall\-in\-ruins;
+闠 > gate\-of\-a\-market;
+銼 > carpenter''s\-file;
+銻 > antimony\-stibium;
+銧 > point\-of\-a\-sword;
+鉀 > potassium\-kalium;
+躷 > of\-short\-stature;
+蹺 > raise\-one''s\-foot;
+蹱 > to\-stagger\-along;
+蹐 > take\-short\-steps;
+贛 > jiangxi\-province;
+贐 > farewell\-present;
+賙 > give\-for\-charity;
+豏 > half\-grown\-beans;
+誕 > to\-bear\-children;
+覂 > to\-throw\-a\-rider;
+襱 > legs\-of\-trousers;
+裛 > to\-wrap\-and\-bind;
+袗 > unlined\-garments;
+衎 > to\-give\-pleasure;
+蟿 > acrida\-chinensis;
+蟈 > small\-green\-frog;
+螋 > spider\-millipede;
+蝻 > immature\-locusts;
+虥 > striped\-wild\-cat;
+藦 > edible\-mushrooms;
+藋 > sambucu\-javinica;
+薫 > a\-medicinal\-herb;
+薃 > cyperus\-amuricus;
+蕭 > common\-artemisia;
+蕋 > unopened\-flowers;
+蔇 > luxuriant\-growth;
+葙 > celosia\-argentea;
+菉 > the\-green\-bamboo;
+芘 > malva\-sylvestris;
+芃 > luxuriant\-growth;
+臚 > arrange\-in\-order;
+耼 > ears\-without\-rim;
+綵 > varicolored\-silk;
+紽 > a\-strand\-of\-silk;
+糵 > fermenting\-grain;
+糱 > fermenting\-grain;
+糈 > sacrificial\-rice;
+籧 > crude\-bamboo\-mat;
+箯 > bamboo\-palanquin;
+箊 > bamboo\-with\-thin;
+秷 > sound\-of\-reaping;
+礎 > foundation\-stone;
+磥 > a\-heap\-of\-stones;
+砫 > ancestral\-tablet;
+瞘 > deeply\-sunk\-eyes;
+瞋 > glare\-with\-anger;
+睜 > to\-open\-the\-eyes;
+盦 > lid\-of\-a\-caldron;
+癉 > to\-hate\-bitterly;
+瘅 > to\-hate\-bitterly;
+瓟 > the\-bottle\-gourd;
+猸 > a\-kind\-of\-animal;
+狻 > a\-fabulous\-beast;
+烜 > light\-of\-the\-sun;
+灠 > marinate\-in\-salt;
+澮 > irrigation\-ditch;
+澦 > place\-in\-sichuan;
+澥 > a\-blocked\-stream;
+澔 > radiance\-of\-gems;
+渫 > beating\-of\-ocean;
+浤 > beating\-of\-ocean;
+毮 > to\-pull\-out\-hair;
+毪 > serge\-from\-tibet;
+櫨 > supporting\-block;
+樛 > bending\-branches;
+枲 > male\-nettle\-hemp;
+枒 > the\-coconut\-tree;
+晅 > light\-of\-the\-sun;
+斵 > to\-cut\-to\-pieces;
+斞 > a\-stack\-of\-grain;
+撚 > twirl\-in\-fingers;
+挷 > to\-propel\-a\-boat;
+懣 > be\-sick\-at\-heart;
+弳 > circular\-measure;
+弪 > circular\-measure;
+廵 > to\-go\-on\-circuit;
+幗 > women''s\-headgear;
+嬎 > to\-bear\-multiple;
+媤 > husband''s\-family;
+妝 > to\-adorn\-oneself;
+墤 > to\-fall\-in\-ruins;
+囍 > double\-happiness;
+嚳 > mythical\-emperor;
+嘅 > sound\-of\-sighing;
+嗞 > to\-consult\-about;
+嗁 > give\-forth\-sound;
+喺 > to\-be\-located\-at;
+勳 > meritorious\-deed;
+勲 > meritorious\-deed;
+勱 > put\-forth\-effort;
+勛 > meritorious\-deed;
+刴 > chop\-by\-pounding;
+冓 > a\-secluded\-place;
+儐 > entertain\-guests;
+儊 > rough\-and\-rugged;
+傜 > a\-minority\-tribe;
+䶱 > a\-kind\-of\-turtle;
+䵤 > to\-crack\-or\-chap;
+䵣 > white\-with\-black;
+䵡 > to\-crack\-or\-chap;
+䵃 > a\-kind\-of\-barley;
+䴬 > crumbs\-of\-barley;
+䴤 > a\-kind\-of\-animal;
+䴣 > a\-kind\-of\-animal;
+䴅 > a\-legendary\-bird;
+䳢 > small\-wild\-goose;
+䳟 > a\-legendary\-bird;
+䳐 > an\-owl\-like\-bird;
+䲲 > a\-hawk\-like\-bird;
+䲦 > a\-legendary\-bird;
+䰃 > dishevelled\-hair;
+䯳 > loosely\-arranged;
+䯮 > dishevelled\-hair;
+䯇 > to\-exert\-oneself;
+䮴 > unstable\-walking;
+䮳 > to\-give\-birth\-to;
+䮩 > a\-kind\-of\-animal;
+䮠 > a\-kind\-of\-animal;
+䮁 > a\-pair\-of\-horses;
+䮀 > a\-kind\-of\-animal;
+䫌 > bowed\-one''s\-head;
+䪎 > strings\-of\-a\-cap;
+䩥 > a\-belt\-for\-horse;
+䨻 > roar\-of\-thunders;
+䨴 > gathering\-clouds;
+䨳 > the\-rain\-stopped;
+䨏 > sound\-of\-raining;
+䨊 > a\-flock\-of\-birds;
+䧸 > a\-kind\-of\-pigeon;
+䧡 > a\-fortified\-wall;
+䧄 > name\-of\-a\-person;
+䦕 > bang\-of\-the\-door;
+䦂 > chemical\-element;
+䥛 > a\-kind\-of\-sickle;
+䥇 > chemical\-element;
+䤲 > chemical\-element;
+䤠 > chemical\-element;
+䣮 > smell\-of\-alcohol;
+䣫 > soured\-bean\-curd;
+䢞 > rows\-and\-columns;
+䡮 > trace\-of\-a\-wheel;
+䡢 > a\-small\-carriage;
+䠿 > name\-of\-a\-person;
+䠻 > to\-bend\-the\-body;
+䟋 > to\-press\-forward;
+䞖 > name\-of\-a\-person;
+䞌 > to\-lose\-in\-trade;
+䝣 > a\-kind\-of\-animal;
+䝚 > a\-kind\-of\-animal;
+䝋 > a\-little\-of\-pigs;
+䝇 > grunting\-of\-pigs;
+䛏 > to\-call\-somebody;
+䛎 > to\-shout\-in\-rage;
+䛂 > to\-separate\-from;
+䚿 > to\-shout\-in\-rage;
+䚔 > to\-look\-suddenly;
+䚒 > eyesight\-blurred;
+䚎 > eyesight\-blurred;
+䚋 > eyesight\-blurred;
+䚃 > to\-realize\-fully;
+䙭 > to\-lift\-or\-raise;
+䘋 > a\-kind\-of\-insect;
+䘂 > a\-kind\-of\-insect;
+䗿 > a\-kind\-of\-insect;
+䗼 > a\-kind\-of\-insect;
+䗸 > a\-kind\-of\-insect;
+䗱 > a\-kind\-of\-insect;
+䗯 > a\-kind\-of\-insect;
+䗮 > a\-kind\-of\-insect;
+䗡 > a\-kind\-of\-insect;
+䗟 > a\-kind\-of\-insect;
+䗛 > a\-kind\-of\-insect;
+䗏 > name\-of\-a\-insect;
+䗎 > a\-kind\-of\-insect;
+䗆 > a\-kind\-of\-insect;
+䗄 > a\-kind\-of\-insect;
+䗁 > a\-kind\-of\-cicada;
+䖷 > a\-kind\-of\-insect;
+䖴 > a\-kind\-of\-insect;
+䖲 > a\-kind\-of\-insect;
+䖯 > poisonous\-insect;
+䖐 > sound\-of\-a\-tiger;
+䔷 > cyperus\-rotundus;
+䒣 > lush\-or\-delicate;
+䑸 > a\-group\-of\-boats;
+䑅 > dizzy\-and\-sleepy;
+䐨 > back\-of\-the\-foot;
+䏒 > half\-of\-the\-body;
+䏏 > signs\-and\-groans;
+䎼 > a\-kind\-of\-insect;
+䎯 > winter\-ploughing;
+䎂 > colorful\-feather;
+䌽 > varicolored\-silk;
+䌂 > in\-ancient\-times;
+䋤 > plain\-white\-silk;
+䋔 > to\-band\-together;
+䊋 > to\-adorn\-oneself;
+䉷 > a\-feather\-screen;
+䉉 > a\-writing\-tablet;
+䈙 > bamboo\-to\-wither;
+䈈 > a\-kind\-of\-bamboo;
+䈃 > a\-kind\-of\-bamboo;
+䈂 > a\-kind\-of\-bamboo;
+䇻 > a\-kind\-of\-bamboo;
+䇹 > a\-kind\-of\-bamboo;
+䇷 > in\-ancient\-times;
+䇦 > a\-kind\-of\-bamboo;
+䆿 > to\-talk\-in\-sleep;
+䆲 > a\-spacious\-house;
+䆈 > young\-and\-tender;
+䅼 > a\-kind\-of\-grains;
+䅺 > grain\-in\-the\-ear;
+䅊 > a\-spacious\-house;
+䄺 > young\-and\-tender;
+䂪 > hard\-barren\-land;
+䀃 > a\-kind\-of\-vessel;
+㾦 > scab\-over\-a\-sore;
+㾁 > walking\-like\-mad;
+㽮 > a\-point\-of\-light;
+㽊 > cracking\-of\-tile;
+㻒 > red\-colored\-jade;
+㻁 > a\-kind\-of\-jasper;
+㺵 > black\-jade\-stone;
+㺴 > name\-of\-a\-spirit;
+㺦 > a\-running\-animal;
+㺣 > a\-kind\-of\-animal;
+㺢 > a\-kind\-of\-animal;
+㺝 > sound\-of\-a\-tiger;
+㺘 > a\-kind\-of\-animal;
+㹼 > a\-kind\-of\-animal;
+㹺 > dog\-to\-take\-food;
+㹴 > a\-kind\-of\-animal;
+㹭 > a\-kind\-of\-monkey;
+㹬 > a\-kind\-of\-animal;
+㹨 > a\-kind\-of\-animal;
+㹟 > a\-kind\-of\-animal;
+㹓 > a\-kind\-of\-animal;
+㹇 > a\-kind\-of\-cattle;
+㹄 > a\-kind\-of\-cattle;
+㸻 > a\-kind\-of\-cattle;
+㸳 > a\-kind\-of\-cattle;
+㸣 > in\-ancient\-china;
+㶾 > tough\-and\-honest;
+㶍 > name\-of\-a\-stream;
+㶌 > name\-of\-a\-stream;
+㵰 > name\-of\-a\-stream;
+㵆 > radiance\-of\-gems;
+㵃 > name\-of\-a\-stream;
+㴧 > of\-flowing\-water;
+㳽 > a\-watery\-expanse;
+㱶 > a\-swellen\-corpse;
+㱭 > an\-infertile\-egg;
+㱈 > name\-of\-a\-person;
+㰤 > to\-laugh\-hertily;
+㰛 > name\-of\-a\-county;
+㰅 > eaves\-of\-a\-house;
+㯕 > sticks\-or\-frames;
+㯃 > the\-varnish\-tree;
+㮓 > an\-extreme\-limit;
+㭺 > the\-cherry\-apple;
+㪭 > to\-draw\-together;
+㪘 > to\-draw\-together;
+㪖 > sound\-of\-beating;
+㨼 > to\-take\-by\-force;
+㧺 > a\-finger\-wrapper;
+里 > unit\-of\-distance;
+玲 > tinkling\-of\-jade;
+㦜 > to\-move\-the\-mind;
+撚 > twirl\-in\-fingers;
+㥔 > to\-move\-the\-mind;
+菉 > the\-green\-bamboo;
+㤴 > to\-move\-the\-mind;
+㤢 > to\-move\-the\-mind;
+珞 > kind\-of\-necklace;
+㣈 > a\-kind\-of\-animal;
+㢰 > to\-stretch\-a\-bow;
+㡽 > depraved\-talking;
+㡉 > a\-kind\-of\-fabric;
+㠧 > a\-little\-slanted;
+㠎 > a\-lofty\-mountain;
+㝫 > shape\-of\-the\-sky;
+㝪 > a\-slanting\-house;
+㝩 > spaciously\-rooms;
+㝗 > spaciously\-rooms;
+㜴 > dark\-and\-obscure;
+㜝 > to\-cherish\-anger;
+㜈 > a\-beaugiful\-face;
+㚟 > a\-kind\-of\-animal;
+㚜 > with\-great\-power;
+㚗 > with\-a\-big\-mouth;
+㚇 > draw\-the\-feet\-up;
+㙞 > a\-small\-mountain;
+㙎 > breach\-of\-a\-tank;
+㙅 > a\-walled\-viliage;
+㙀 > a\-vegetable\-plot;
+㗻 > baby''s\-answering;
+㗙 > to\-shout\-or\-bawl;
+㕭 > to\-bark\-as\-a\-dog;
+㕩 > sound\-of\-tapping;
+㕇 > rocks\-collapsing;
+㔵 > a\-kind\-of\-vessel;
+㔱 > a\-stack\-of\-grain;
+㔨 > name\-of\-a\-person;
+㔚 > to\-exert\-oneself;
+㔑 > an\-incised\-wound;
+㓼 > an\-incised\-wound;
+㓸 > to\-cut\-to\-pieces;
+㒭 > an\-elder\-brother;
+㒡 > name\-of\-a\-person;
+㒁 > of\-great\-stature;
+㑱 > a\-kind\-of\-monkey;
+㐻 > name\-of\-a\-person;
+㐀 > hillock\-or\-mound;
+睨 > look\-askance\-at;
+怎 > what\?\-why\?\-how\?;
+收 > gather\-together;
+党 > political\-party;
+版 > printing\-blocks;
+季 > quarter\-of\-year;
+牡 > male\-of\-animals;
+診 > examine\-patient;
+姑 > father''s\-sister;
+褓 > swaddling\-cloth;
+馆 > public\-building;
+漿 > any\-thick\-fluid;
+雄 > male\-of\-species;
+亿 > hundred\-million;
+固 > to\-become\-solid;
+黨 > political\-party;
+溪 > mountain\-stream;
+虞 > concerned\-about;
+嗚 > sound\-of\-crying;
+薇 > osmunda\-regalis;
+戏 > theatrical\-play;
+召 > imperial\-decree;
+収 > gather\-together;
+瑞 > felicitous\-omen;
+鬢 > hair\-on\-temples;
+僧 > buddhist\-priest;
+檜 > chinese\-cypress;
+檎 > small\-red\-apple;
+驅 > spur\-a\-horse\-on;
+臟 > internal\-organs;
+駈 > spur\-a\-horse\-on;
+駆 > spur\-a\-horse\-on;
+館 > public\-building;
+億 > hundred\-million;
+桧 > chinese\-cypress;
+脏 > internal\-organs;
+驱 > spur\-a\-horse\-on;
+圳 > furrow\-in\-field;
+繻 > fine\-silk\-guaze;
+孟 > first\-in\-series;
+縋 > climb\-down\-rope;
+閤 > small\-side\-door;
+斎 > vegetarian\-diet;
+盯 > rivet\-gaze\-upon;
+粟 > unhusked\-millet;
+籐 > climbing\-plants;
+掻 > scratch\-lightly;
+俘 > prisoner\-of\-war;
+挾 > clasp\-under\-arm;
+诊 > examine\-patient;
+媳 > daughter\-in\-law;
+宙 > time\-as\-concept;
+呜 > sound\-of\-crying;
+卜 > fortune\-telling;
+戲 > theatrical\-play;
+戯 > theatrical\-play;
+帖 > invitation\-card;
+逞 > indulge\-oneself;
+揪 > grasp\-with\-hand;
+仑 > logical\-reasons;
+浆 > any\-thick\-fluid;
+挟 > clasp\-under\-arm;
+煞 > malignant\-deity;
+斋 > vegetarian\-diet;
+鳌 > huge\-sea\-turtle;
+卦 > fortune\-telling;
+瞩 > watch\-carefully;
+疚 > chronic\-disease;
+蔓 > creeping\-plants;
+骏 > excellent\-horse;
+闽 > fujian\-province;
+袅 > curling\-upwards;
+辐 > spokes\-of\-wheel;
+琉 > sparkling\-stone;
+舜 > legendary\-ruler;
+轧 > crush\-by\-weight;
+滇 > yunnan\-province;
+鬓 > hair\-on\-temples;
+桓 > variety\-of\-tree;
+棠 > crab\-apple\-tree;
+吮 > suck\-with\-mouth;
+蜷 > creep\-like\-worm;
+枷 > cangue\-scaffold;
+羲 > ancient\-emperor;
+孚 > brood\-over\-eggs;
+骁 > excellent\-horse;
+皑 > brilliant\-white;
+缥 > light\-blue\-silk;
+诌 > play\-with\-words;
+泾 > name\-of\-a\-river;
+恣 > indulge\-oneself;
+觎 > desire\-strongly;
+玺 > imperial\-signet;
+卞 > to\-be\-impatient;
+辔 > bridle\-of\-horse;
+趔 > not\-progressing;
+徜 > walking\-and\-fro;
+荠 > water\-chestnuts;
+汞 > element\-mercury;
+畿 > imperial\-domain;
+舂 > grind\-in\-mortar;
+籴 > purchase\-grains;
+穰 > stalks\-of\-grain;
+缒 > climb\-down\-rope;
+嗄 > hoarse\-of\-voice;
+睥 > look\-askance\-at;
+渚 > small\-sand\-bank;
+砝 > balance\-weights;
+杼 > shuttle\-of\-loom;
+龃 > irregular\-teeth;
+勐 > imperial\-degree;
+矸 > a\-rock\-or\-cliff;
+痼 > chronic\-disease;
+蕨 > pteris\-aquilina;
+豉 > fermented\-beans;
+徭 > conscript\-labor;
+麈 > species\-of\-deer;
+蕤 > drooping\-leaves;
+麂 > species\-of\-deer;
+绡 > raw\-silk\-fabric;
+芨 > name\-of\-a\-plant;
+苣 > kind\-of\-lettuce;
+碛 > sand\-and\-gravel;
+莒 > hemp\-like\-plant;
+濉 > name\-of\-a\-river;
+萁 > kind\-of\-grasses;
+眄 > to\-look\-askance;
+囟 > top\-of\-the\-head;
+岣 > a\-hill\-in\-hunan;
+嗾 > to\-set\-a\-dog\-on;
+荜 > species\-of\-bean;
+糁 > a\-grain\-of\-rice;
+粝 > unpolished\-rice;
+裰 > to\-mend\-clothes;
+柰 > crab\-apple\-tree;
+薨 > death\-of\-prince;
+茑 > the\-convovulvus;
+翮 > stem\-of\-feather;
+艟 > ancient\-warship;
+鼯 > flying\-squirrel;
+砩 > name\-of\-a\-stone;
+炻 > a\-kind\-of\-china;
+檫 > sassafras\-tzumu;
+狴 > a\-kind\-of\-tapir;
+龑 > high\-and\-bright;
+齟 > irregular\-teeth;
+齋 > vegetarian\-diet;
+鼕 > rattle\-of\-drums;
+鼇 > huge\-sea\-turtle;
+鸓 > flying\-squirrel;
+鴒 > species\-of\-lark;
+鴂 > the\-tailor\-bird;
+鳻 > the\-wild\-pigeon;
+鳓 > chinese\-herring;
+鱡 > the\-cuttle\-fish;
+鱅 > a\-kind\-of\-tench;
+鰳 > chinese\-herring;
+鰲 > huge\-sea\-turtle;
+魰 > the\-flying\-fish;
+髾 > tail\-of\-a\-comet;
+髴 > disheveled\-hair;
+驵 > excellent\-horse;
+驍 > excellent\-horse;
+騘 > a\-piebald\-horse;
+駿 > excellent\-horse;
+駔 > excellent\-horse;
+饇 > to\-eat\-too\-much;
+颻 > floating\-in\-air;
+颮 > storm\-whirlwind;
+顖 > top\-of\-the\-head;
+韞 > an\-orange\-color;
+鞴 > saddle\-up\-horse;
+靸 > a\-child''s\-shoes;
+雱 > snowing\-heavily;
+閩 > fujian\-province;
+鎤 > sound\-of\-a\-bell;
+銾 > element\-mercury;
+醾 > unfiltered\-wine;
+鄹 > name\-of\-a\-state;
+轡 > bridle\-of\-horse;
+輻 > spokes\-of\-wheel;
+軋 > crush\-by\-weight;
+躀 > to\-stumble\-over;
+趮 > easily\-provoked;
+謅 > play\-with\-words;
+諡 > posthumous\-name;
+訒 > hesitate\-to\-say;
+覦 > desire\-strongly;
+襼 > ''kimono''\-sleeve;
+襌 > unlined\-garment;
+褧 > unlined\-clothes;
+褝 > unlined\-garment;
+裊 > curling\-upwards;
+螚 > eristalis\-tenax;
+藶 > a\-kind\-of\-plant;
+薺 > water\-chestnuts;
+蕢 > edible\-amaranth;
+蕍 > alisma\-plantags;
+蔾 > kind\-of\-bramble;
+蔦 > the\-convovulvus;
+蓽 > species\-of\-bean;
+蒨 > lush\-vegetation;
+蒓 > an\-edible\-water;
+蒉 > edible\-amaranth;
+葑 > the\-rape\-turnip;
+萕 > water\-chestnuts;
+苈 > a\-kind\-of\-plant;
+艅 > a\-despatch\-boat;
+臓 > internal\-organs;
+腢 > the\-collar\-bone;
+罿 > net\-catch\-birds;
+縹 > light\-blue\-silk;
+綃 > raw\-silk\-fabric;
+絍 > to\-lay\-the\-warp;
+絅 > unlined\-garment;
+糴 > purchase\-grains;
+糲 > unpolished\-rice;
+籘 > climbing\-plants;
+簔 > a\-coat\-raincoat;
+簑 > a\-coat\-raincoat;
+篰 > a\-bamboo\-basket;
+穣 > stalks\-of\-grain;
+穄 > panicled\-millet;
+禋 > offer\-sacrifice;
+磪 > a\-high\-mountain;
+磧 > sand\-and\-gravel;
+磎 > mountain\-stream;
+矚 > watch\-carefully;
+皚 > brilliant\-white;
+瘈 > prolonged\-fever;
+瘃 > sores\-from\-cold;
+痾 > chronic\-illness;
+痵 > a\-heart\-symptom;
+痮 > a\-swelled\-belly;
+痠 > aching\-of\-limbs;
+痁 > chronic\-malaria;
+疢 > aching\-of\-limbs;
+畬 > reclaimed\-field;
+甤 > drooping\-leaves;
+璽 > imperial\-signet;
+琭 > jade\-like\-stone;
+珧 > mother\-of\-pearl;
+珇 > carving\-on\-jade;
+玟 > streaks\-in\-jade;
+獱 > a\-kind\-of\-otter;
+狫 > name\-of\-a\-tribe;
+牄 > to\-walk\-rapidly;
+熓 > the\-bank\-a\-fire;
+焵 > to\-temper\-steel;
+瀵 > name\-of\-a\-river;
+瀞 > pool\-in\-a\-river;
+潙 > river\-in\-shanxi;
+漵 > name\-of\-a\-river;
+滎 > county\-in\-henan;
+溤 > name\-of\-a\-river;
+渓 > mountain\-stream;
+淓 > name\-of\-a\-river;
+涇 > name\-of\-a\-river;
+泩 > rising\-of\-water;
+沚 > islet\-in\-stream;
+沘 > name\-of\-a\-river;
+榡 > quercus\-dentata;
+椺 > beam\-of\-a\-house;
+柎 > calyx\-of\-flower;
+柁 > large\-tie\-beams;
+枬 > an\-even\-grained;
+朣 > the\-rising\-moon;
+摻 > a\-delicate\-hand;
+揫 > grasp\-with\-hand;
+戱 > theatrical\-play;
+戄 > to\-be\-in\-awe\-of;
+忓 > concerned\-about;
+徬 > to\-wander\-about;
+弴 > red\-lacquer\-bow;
+巹 > nuptial\-winecup;
+嵎 > mountain\-recess;
+峞 > high\-and\-uneven;
+夲 > advance\-quickly;
+坴 > a\-clod\-of\-earth;
+喣 > to\-breathe\-upon;
+唲 > forced\-laughter;
+厜 > a\-mountain\-peak;
+匉 > noise\-of\-waters;
+匄 > to\-beg\-for\-alms;
+勅 > imperial\-degree;
+劘 > make\-into\-mince;
+劖 > make\-into\-mince;
+傽 > terror\-stricken;
+侖 > logical\-reasons;
+佔 > occupy\-by\-force;
+乸 > feminine\-suffix;
+䶡 > sound\-of\-biting;
+䶎 > sound\-of\-breath;
+䵛 > panicled\-millet;
+䵖 > panicled\-millet;
+䴾 > to\-grind\-barley;
+䴮 > cakes\-pf\-leaven;
+䴎 > flying\-squirrel;
+䲾 > the\-tailor\-bird;
+䯄 > a\-piebalk\-horse;
+䮽 > bit\-for\-a\-horse;
+䮵 > name\-of\-a\-horse;
+䮱 > a\-kind\-of\-beast;
+䮰 > a\-kind\-of\-beast;
+䮬 > name\-of\-a\-horse;
+䮨 > a\-piebald\-horse;
+䮧 > long\-hair\-horse;
+䮢 > a\-walking\-horse;
+䮞 > a\-piebald\-horse;
+䮙 > name\-of\-a\-horse;
+䮖 > name\-of\-a\-horse;
+䮓 > a\-walking\-horse;
+䮒 > name\-of\-a\-horse;
+䮏 > name\-of\-a\-horse;
+䮎 > a\-running\-horse;
+䮋 > name\-of\-a\-horse;
+䮊 > name\-of\-a\-horse;
+䭼 > dark\-blue\-horse;
+䭶 > dark\-blue\-horse;
+䬫 > clarfied\-butter;
+䬁 > a\-light\-cyclone;
+䪮 > beautiful\-sound;
+䪕 > to\-wrap\-or\-band;
+䩹 > to\-repair\-shoes;
+䩒 > dressed\-leather;
+䩄 > to\-face\-to\-face;
+䨦 > snowing\-heavily;
+䨢 > a\-passing\-cloud;
+䨖 > to\-stop\-raining;
+䨑 > to\-stop\-raining;
+䨀 > to\-lay\-in\-grain;
+䧯 > name\-of\-a\-place;
+䧮 > name\-of\-a\-place;
+䧝 > name\-of\-a\-place;
+䧌 > name\-of\-a\-place;
+䧋 > name\-of\-a\-place;
+䧃 > name\-of\-a\-place;
+䦻 > name\-of\-a\-place;
+䦫 > inside\-the\-door;
+䦠 > name\-of\-a\-river;
+䥗 > a\-branding\-iron;
+䤱 > a\-solemn\-pledge;
+䣶 > unstrained\-wine;
+䣳 > unstrained\-wine;
+䣓 > name\-of\-a\-state;
+䣐 > name\-of\-a\-place;
+䣋 > name\-of\-a\-place;
+䣊 > name\-of\-a\-place;
+䣇 > name\-of\-a\-place;
+䢻 > name\-of\-a\-place;
+䢴 > name\-of\-a\-place;
+䢳 > name\-of\-a\-place;
+䢦 > to\-lead\-the\-way;
+䢖 > to\-be\-scattered;
+䢁 > tire\-of\-a\-wheel;
+䡻 > shake\-of\-a\-cart;
+䡨 > connected\-carts;
+䡓 > shake\-of\-a\-cart;
+䡐 > to\-move\-swiftly;
+䠵 > to\-wear\-clothes;
+䠨 > walking\-rapidly;
+䟛 > walking\-rapidly;
+䟑 > walking\-rapidly;
+䞷 > walking\-rapidly;
+䞶 > walking\-rapidly;
+䞰 > walking\-rapidly;
+䞭 > walking\-rapidly;
+䞬 > to\-pass\-through;
+䞪 > walking\-rapidly;
+䝯 > to\-change\-hands;
+䝐 > a\-castrated\-hog;
+䜾 > fermented\-beans;
+䜻 > fermented\-beans;
+䜵 > fermented\-beans;
+䜄 > slow\-on\-talking;
+䛵 > to\-teach\-orally;
+䛟 > wild\-statements;
+䛔 > to\-hold\-in\-hand;
+䚦 > slanted\-corners;
+䚥 > to\-adjust\-a\-bow;
+䙻 > to\-steal\-a\-look;
+䙨 > to\-wrap\-or\-bind;
+䙝 > under\-garrments;
+䗾 > corbicula\-leana;
+䖼 > the\-dung\-beetle;
+䖙 > a\-resting\-tiger;
+䖉 > to\-roar\-or\-howl;
+䕷 > a\-kind\-of\-plant;
+䕙 > to\-set\-in\-order;
+䕉 > a\-kind\-of\-plant;
+䔧 > a\-kind\-of\-plant;
+䔇 > a\-kind\-of\-plant;
+䓶 > a\-kind\-of\-plant;
+䓞 > a\-kind\-of\-plant;
+䓘 > a\-kind\-of\-plant;
+䓈 > a\-kind\-of\-plant;
+䒷 > a\-kind\-of\-plant;
+䒒 > name\-of\-a\-plant;
+䒌 > dark\-blue\-color;
+䐜 > a\-swelled\-belly;
+䏲 > protruded\-bones;
+䎳 > lose\-of\-the\-ear;
+䎉 > to\-walk\-swiftly;
+䌾 > to\-lay\-the\-warp;
+䋷 > a\-kind\-of\-thick;
+䋕 > to\-lay\-the\-warp;
+䊵 > young\-and\-small;
+䊗 > a\-kind\-of\-grain;
+䊉 > preserved\-fruit;
+䉧 > sound\-of\-bamboo;
+䆂 > a\-kind\-of\-grain;
+䅷 > an\-ear\-of\-grain;
+䅰 > a\-kind\-of\-grass;
+䅡 > a\-kind\-of\-grass;
+䅠 > a\-kind\-of\-grass;
+䅞 > stalks\-of\-grain;
+䅋 > a\-kind\-of\-grain;
+䅂 > a\-kind\-of\-grain;
+䄱 > a\-kind\-of\-grain;
+䄮 > dark\-rice\-plant;
+䄧 > a\-kind\-of\-grain;
+䄕 > god\-of\-the\-land;
+䃷 > a\-kind\-of\-stone;
+䃵 > a\-kind\-of\-stone;
+䃞 > a\-kind\-of\-stone;
+䃒 > poor\-and\-barren;
+䂭 > name\-of\-a\-place;
+䂚 > a\-kind\-of\-stone;
+䁴 > keep\-on\-looking;
+䁳 > to\-lose\-one\-eye;
+䀩 > to\-look\-askance;
+䀎 > to\-look\-askance;
+䀉 > food\-containers;
+㿱 > dry\-and\-decayed;
+㾩 > malignant\-boils;
+㽽 > chronic\-disease;
+㽧 > name\-of\-a\-place;
+㼕 > pulp\-of\-a\-melon;
+㼔 > a\-kind\-of\-melon;
+㼑 > pulp\-of\-a\-melon;
+㼍 > pulp\-of\-a\-melon;
+㼊 > a\-kind\-of\-melon;
+㼂 > a\-crack\-in\-jade;
+㻸 > jade\-like\-stone;
+㻷 > name\-of\-a\-place;
+㻍 > name\-of\-a\-sword;
+㺤 > a\-kind\-of\-beast;
+㺡 > a\-kind\-of\-beast;
+㺟 > a\-kind\-of\-beast;
+㺔 > a\-kind\-of\-beast;
+㺍 > a\-kind\-of\-otter;
+㺌 > endless\-barking;
+㺄 > a\-kind\-of\-beast;
+㺁 > a\-kind\-of\-beast;
+㹧 > fox\-like\-animal;
+㸱 > hornless\-cattle;
+㸰 > hornless\-cattle;
+㸩 > to\-desist\-an\-ox;
+㸑 > a\-cooking\-stove;
+㷍 > a\-chemical\-term;
+㶛 > name\-of\-a\-river;
+㵲 > name\-of\-a\-river;
+㵧 > name\-of\-a\-river;
+㵑 > name\-of\-a\-river;
+㵂 > name\-of\-a\-river;
+㴪 > name\-of\-a\-river;
+㳿 > rolling\-billows;
+㳾 > name\-of\-a\-river;
+㳸 > name\-of\-a\-river;
+㳷 > dark\-blue\-color;
+㳶 > name\-of\-a\-river;
+㳵 > name\-of\-a\-river;
+㳡 > name\-of\-a\-river;
+㳗 > bank\-of\-a\-river;
+㳖 > name\-of\-a\-river;
+㲼 > name\-of\-a\-river;
+㲔 > woolen\-textiles;
+㲎 > woolen\-textiles;
+㲍 > woolen\-textiles;
+㱎 > cannot\-be\-known;
+㰬 > shortwindedness;
+㰗 > a\-kind\-of\-maple;
+㰈 > nice\-and\-pretty;
+㯱 > an\-enlarged\-bag;
+㯤 > the\-jujube\-tree;
+㯔 > to\-hull\-heavily;
+㮡 > to\-light\-a\-fire;
+㭤 > the\-convolvulus;
+㫠 > a\-kind\-of\-water;
+㪫 > wise\-and\-clever;
+館 > public\-building;
+輻 > spokes\-of\-wheel;
+㧎 > forked\-branches;
+琉 > sparkling\-stone;
+㥞 > to\-think\-deeply;
+㥛 > with\-expedition;
+㢞 > rooms\-connected;
+㢍 > a\-long\-verabdah;
+㡲 > tiles\-on\-a\-roof;
+㡀 > ragged\-clothing;
+㠈 > name\-of\-a\-place;
+㠂 > name\-of\-a\-place;
+㟔 > steep\-and\-lofty;
+㟏 > steep\-and\-lofty;
+㝥 > have\-a\-nighmare;
+㝅 > to\-give\-suck\-to;
+㜲 > to\-have\-surplus;
+㛰 > to\-marry\-a\-wife;
+㚦 > a\-charming\-girl;
+㙼 > a\-military\-wall;
+㙸 > a\-clod\-of\-earth;
+㙗 > a\-lump\-of\-earth;
+㘺 > cultivated\-land;
+㘵 > name\-of\-a\-place;
+㗿 > to\-laugh\-loudly;
+㕲 > to\-gag\-or\-bribe;
+㕘 > to\-take\-part\-in;
+㒟 > with\-a\-charming;
+㐽 > name\-of\-a\-place;
+躅 > walk\-carefully;
+巴 > greatly\-desire;
+期 > period\-of\-time;
+司 > take\-charge\-of;
+甥 > sister''s\-child;
+屏 > folding\-screen;
+狐 > species\-of\-fox;
+汉 > chinese\-people;
+妹 > younger\-sister;
+企 > plan\-a\-project;
+襖 > outer\-garments;
+壁 > partition\-wall;
+韦 > tanned\-leather;
+潰 > flooding\-river;
+珠 > precious\-stone;
+锋 > point\-of\-spear;
+俗 > social\-customs;
+檐 > eaves\-of\-house;
+骑 > ride\-horseback;
+函 > correspondence;
+魏 > kingdom\-of\-wei;
+枚 > stalk\-of\-shrub;
+仲 > middle\-brother;
+琳 > beautiful\-jade;
+凑 > piece\-together;
+郁 > sweet\-smelling;
+芯 > pith\-from\-rush;
+縞 > white\-raw\-silk;
+旬 > ten\-day\-period;
+綺 > fine\-thin\-silk;
+妨 > interfere\-with;
+骄 > spirited\-horse;
+簷 > eaves\-of\-house;
+掴 > box\-one''s\-ears;
+嗯 > final\-particle;
+岭 > mountain\-ridge;
+湘 > hunan\-province;
+銃 > ancient\-weapon;
+溃 > flooding\-river;
+铮 > clanging\-sound;
+莹 > luster\-of\-gems;
+僻 > out\-of\-the\-way;
+绮 > fine\-thin\-silk;
+渺 > endlessly\-long;
+佣 > commission\-fee;
+咯 > final\-particle;
+呛 > choke\-by\-smoke;
+凰 > female\-phoenix;
+闺 > small\-entrance;
+缀 > patch\-together;
+袄 > outer\-garments;
+璋 > jade\-plaything;
+拴 > bind\-with\-rope;
+秧 > rice\-seedlings;
+蕃 > foreign\-things;
+鄂 > hubei\-province;
+棱 > squared\-timber;
+梗 > stem\-of\-flower;
+菱 > water\-chestnut;
+镑 > pound\-sterling;
+栩 > species\-of\-oak;
+唷 > final\-particle;
+璞 > unpolished\-gem;
+雯 > cloud\-patterns;
+讷 > slow\-of\-speech;
+璇 > beautiful\-jade;
+狰 > fierce\-looking;
+峦 > mountain\-range;
+湃 > sound\-of\-waves;
+娣 > younger\-sister;
+蝗 > kind\-of\-locust;
+皖 > anhui\-province;
+酋 > chief\-of\-tribe;
+壑 > bed\-of\-torrent;
+糯 > glutinous\-rice;
+稷 > god\-of\-cereals;
+塾 > village\-school;
+狩 > winter\-hunting;
+戍 > defend\-borders;
+璀 > lustre\-of\-gems;
+牍 > writing\-tablet;
+镌 > engraving\-tool;
+饯 > farewell\-party;
+鹂 > chinese\-oriole;
+囡 > one''s\-daughter;
+溟 > drizzling\-rain;
+锏 > kind\-of\-rapier;
+屙 > to\-ease\-nature;
+琨 > beautiful\-jade;
+玳 > tortoise\-shell;
+瑭 > a\-kind\-of\-jade;
+杈 > fork\-of\-a\-tree;
+匐 > fall\-prostrate;
+砣 > a\-stone\-roller;
+铢 > unit\-of\-weight;
+骈 > team\-of\-horses;
+噱 > laugh\-heartily;
+铳 > ancient\-weapon;
+盱 > wide\-open\-eyes;
+耄 > elderly\-person;
+榔 > betel\-nut\-tree;
+诤 > to\-expostulate;
+蝮 > venomous\-snake;
+颍 > river\-in\-anhui;
+楝 > melia\-japonica;
+蝼 > a\-mole\-cricket;
+荪 > aromatic\-grass;
+娌 > brother''s\-wife;
+缟 > white\-raw\-silk;
+晷 > shadows\-of\-sun;
+嗵 > used\-for\-sound;
+踅 > to\-walk\-around;
+揆 > prime\-minister;
+猕 > macacus\-monkey;
+厝 > cut\-or\-engrave;
+葚 > mulberry\-fruit;
+耒 > handle\-of\-plow;
+嘞 > final\-particle;
+錾 > engraving\-tool;
+珙 > precious\-stone;
+荸 > water\-chestnut;
+俅 > ornamental\-cap;
+菽 > beans\-and\-peas;
+鞯 > saddle\-blanket;
+鼐 > incense\-tripod;
+谰 > accuse\-falsely;
+骱 > joint\-of\-bones;
+謦 > t\-speak\-softly;
+磴 > steps\-on\-ledge;
+婺 > name\-of\-a\-star;
+堍 > side\-of\-bridge;
+桫 > horse\-chestnut;
+漶 > indecipherable;
+孥 > one''s\-children;
+溱 > river\-in\-henan;
+庠 > village\-school;
+黥 > tattooing\-face;
+躐 > to\-stride\-over;
+蹯 > paws\-of\-animal;
+盍 > what\?\-why\-not\?;
+溆 > river\-in\-hunan;
+磲 > tridacna\-gigas;
+昝 > a\-dual\-pronoun;
+柽 > type\-of\-willow;
+缬 > patterned\-silk;
+驺 > mounted\-escort;
+阊 > gate\-of\-heaven;
+荩 > a\-kind\-of\-weed;
+芎 > a\-kind\-of\-herb;
+鋈 > silver\-plating;
+龅 > teeth\-protrude;
+晡 > late\-afternoon;
+檠 > stand\-for\-lamp;
+逭 > to\-escape\-from;
+鸝 > chinese\-oriole;
+鸎 > the\-mango\-bird;
+鶗 > a\-kind\-of\-hawk;
+鮧 > the\-sheat\-fish;
+鬘 > beautiful\-hair;
+鬗 > head\-ornaments;
+髆 > shoulder\-blade;
+驕 > spirited\-horse;
+騶 > mounted\-escort;
+騎 > ride\-horseback;
+騌 > a\-horse''s\-mane;
+騈 > team\-of\-horses;
+駢 > team\-of\-horses;
+餡 > pastry\-filling;
+餞 > farewell\-party;
+餗 > food\-in\-tripod;
+韋 > tanned\-leather;
+韉 > saddle\-blanket;
+霡 > drizzling\-rain;
+閶 > gate\-of\-heaven;
+閨 > small\-entrance;
+锪 > a\-kind\-of\-tool;
+鐫 > engraving\-tool;
+鐧 > kind\-of\-rapier;
+鏴 > to\-plug\-a\-hole;
+鏨 > engraving\-tool;
+鎩 > moult\-samarium;
+鎊 > pound\-sterling;
+鍆 > md\-mendelevium;
+錚 > clanging\-sound;
+鋩 > point\-of\-sword;
+鋒 > point\-of\-spear;
+鋃 > lock\-lanthanum;
+銖 > unit\-of\-weight;
+釯 > point\-of\-sword;
+逩 > to\-run\-quickly;
+輶 > light\-carriage;
+蹜 > walk\-carefully;
+趹 > kick\-with\-hoof;
+豣 > pig\-of\-3\-years;
+豜 > pig\-of\-3\-years;
+豖 > a\-shackled\-pig;
+讕 > accuse\-falsely;
+讅 > know\-in\-detail;
+諍 > to\-expostulate;
+詨 > kind\-of\-cicada;
+訥 > slow\-of\-speech;
+褉 > short\-garments;
+衂 > to\-be\-defeated;
+蠂 > podisma\-mikado;
+蟳 > a\-kind\-of\-crab;
+蟭 > very\-small\-bug;
+螿 > kind\-of\-cicada;
+螻 > a\-mole\-cricket;
+螬 > grubs\-in\-fruit;
+蜎 > mosquito\-larva;
+虀 > minced\-pickles;
+藎 > a\-kind\-of\-weed;
+薳 > name\-of\-a\-herb;
+薘 > plantago\-major;
+蔆 > water\-chestnut;
+蓯 > medicinal\-herb;
+蓏 > fruit\-of\-plant;
+蓀 > aromatic\-grass;
+葥 > rubus\-palmatus;
+菎 > beautiful\-jade;
+茞 > fragrant\-plant;
+苁 > medicinal\-herb;
+芈 > bleat\-of\-sheep;
+脦 > used\-in\-''lede'';
+羋 > bleat\-of\-sheep;
+纈 > patterned\-silk;
+綴 > patch\-together;
+絜 > a\-marking\-line;
+紾 > turns\-or\-twist;
+糺 > to\-collaborate;
+籫 > bamboo\-utensil;
+筬 > reed\-of\-a\-loom;
+稭 > stalk\-of\-grain;
+稌 > glutinous\-rice;
+稈 > stalk\-of\-grain;
+砢 > pile\-of\-stones;
+矉 > an\-angry\-glare;
+睱 > to\-gaze\-slowly;
+睯 > to\-be\-agonized;
+眣 > prominent\-eyes;
+璸 > jade''s\-streaks;
+璵 > beautiful\-jade;
+璥 > a\-kind\-of\-jade;
+璢 > precious\-stone;
+璘 > luster\-of\-jade;
+璆 > beautiful\-jade;
+瑩 > lustre\-of\-gems;
+瑠 > precious\-stone;
+瑇 > tortoise\-shell;
+琁 > beautiful\-jade;
+珺 > beautiful\-jade;
+珦 > a\-kind\-of\-jade;
+珢 > precious\-stone;
+玥 > mysterious\-gem;
+獼 > macacus\-monkey;
+猙 > fierce\-looking;
+狨 > hapale\-jacchus;
+犨 > panting\-of\-cow;
+牘 > writing\-tablet;
+燉 > heat\-with\-fire;
+燀 > to\-make\-a\-fire;
+熉 > \(yellow\-color\);
+潕 > river\-in\-henan;
+潁 > river\-in\-anhui;
+溛 > to\-form\-hollow;
+湱 > sound\-of\-water;
+湊 > piece\-together;
+渢 > pleasant\-sound;
+涬 > watery\-expanse;
+洿 > stagnant\-water;
+泃 > river\-in\-henan;
+泂 > clear\-and\-deep;
+沷 > to\-remove\-evil;
+殭 > a\-stiff\-corpse;
+檖 > wild\-pear\-tree;
+檉 > type\-of\-willow;
+橿 > quercus\-glauca;
+榾 > pieces\-of\-wood;
+榠 > chinese\-quince;
+榖 > paper\-mulberry;
+椪 > machilus\-nanmu;
+棐 > species\-of\-yew;
+梊 > squeeze\-out\-of;
+柾 > straight\-grain;
+柟 > machilus\-nanmu;
+柃 > eurya\-japonica;
+曏 > once\-upon\-time;
+晥 > anhui\-province;
+晢 > light\-of\-stars;
+昰 > var\-of\-''to\-be'';
+攂 > to\-beat\-a\-drum;
+摴 > to\-stretch\-out;
+摑 > box\-one''s\-ears;
+幱 > official\-dress;
+巟 > a\-watery\-waste;
+巒 > mountain\-range;
+嶺 > mountain\-ridge;
+嵴 > mountain\-ridge;
+岺 > mountain\-ridge;
+屛 > folding\-screen;
+墚 > mountain\-range;
+塕 > a\-gust\-of\-wind;
+埇 > name\-of\-bridge;
+圅 > correspondence;
+噹 > sound\-of\-bells;
+嘓 > gurgling\-sound;
+嗆 > choke\-by\-smoke;
+喒 > a\-dual\-pronoun;
+啌 > animal\-disease;
+厃 > to\-look\-upward;
+卭 > high\.\-to\-raise;
+卂 > to\-fly\-rapidly;
+凾 > correspondence;
+伕 > common\-laborer;
+亇 > kwukyel\-hammer;
+䶔 > prominent\-gums;
+䶐 > to\-take\-breath;
+䶀 > sound\-of\-drums;
+䵾 > sound\-of\-drums;
+䵽 > sound\-of\-drums;
+䵶 > a\-kind\-of\-frog;
+䵌 > reddish\-yellow;
+䴴 > a\-kind\-of\-cake;
+䴯 > a\-kind\-of\-cake;
+䴩 > a\-kind\-of\-deer;
+䴢 > a\-kind\-of\-deer;
+䴘 > a\-kind\-of\-bird;
+䴐 > a\-kind\-of\-bird;
+䴆 > a\-kind\-of\-bird;
+䴄 > a\-kind\-of\-bird;
+䳿 > a\-kind\-of\-bird;
+䳸 > the\-wild\-goose;
+䳴 > a\-kind\-of\-bird;
+䳯 > a\-kind\-of\-bird;
+䳬 > a\-kind\-of\-bird;
+䳫 > a\-small\-pigeon;
+䳪 > a\-kind\-of\-bird;
+䳩 > a\-kind\-of\-bird;
+䳒 > a\-kind\-of\-bird;
+䲽 > a\-kind\-of\-bird;
+䲼 > a\-kind\-of\-bird;
+䲸 > a\-kind\-of\-bird;
+䲮 > a\-kind\-of\-bird;
+䲪 > a\-kind\-of\-bird;
+䲢 > a\-kind\-of\-fish;
+䲠 > a\-kind\-of\-fish;
+䲟 > a\-kind\-of\-fish;
+䲙 > a\-kind\-of\-fish;
+䲘 > a\-kind\-of\-fish;
+䲗 > a\-kind\-of\-fish;
+䲓 > a\-kind\-of\-fish;
+䲐 > a\-kind\-of\-fish;
+䲏 > a\-kind\-of\-fish;
+䲋 > a\-kind\-of\-fish;
+䲉 > a\-kind\-of\-fish;
+䲂 > a\-kind\-of\-fish;
+䲀 > a\-kind\-of\-fish;
+䱿 > a\-kind\-of\-fish;
+䱼 > a\-kind\-of\-fish;
+䱻 > a\-kind\-of\-fish;
+䱵 > a\-kind\-of\-fish;
+䱲 > a\-kind\-of\-fish;
+䱰 > a\-kind\-of\-fish;
+䱯 > a\-kind\-of\-fish;
+䱮 > a\-kind\-of\-fish;
+䱬 > a\-kind\-of\-fish;
+䱫 > a\-kind\-of\-fish;
+䱨 > a\-kind\-of\-fish;
+䱥 > a\-kind\-of\-fish;
+䱤 > a\-kind\-of\-fish;
+䱢 > a\-kind\-of\-fish;
+䱠 > a\-kind\-of\-fish;
+䱞 > a\-kind\-of\-fish;
+䱛 > a\-kind\-of\-fish;
+䱚 > a\-kind\-of\-fish;
+䱓 > a\-kind\-of\-fish;
+䰾 > a\-kind\-of\-fish;
+䰹 > the\-cuttlefish;
+䰴 > a\-wafting\-fish;
+䰲 > the\-sheat\-fish;
+䰡 > a\-fierce\-ghost;
+䯛 > the\-knee\-bones;
+䮹 > an\-angry\-horse;
+䮮 > a\-kind\-of\-mule;
+䭻 > a\-swifty\-horse;
+䭳 > a\-kind\-of\-herb;
+䭲 > sweet\-smelling;
+䭭 > the\-eldest\-son;
+䭩 > to\-feed\-a\-baby;
+䭧 > to\-feed\-a\-baby;
+䭁 > stinking\-smell;
+䬺 > same\-as\-u\+4b50;
+䬘 > the\-wind\-blows;
+䬒 > to\-blow\-chilly;
+䬌 > the\-wind\-blows;
+䫫 > human\-skeleton;
+䪼 > the\-cheek\-bone;
+䪈 > a\-leather\-belt;
+䩐 > tie\-it\-tightly;
+䨫 > drizzling\-rain;
+䨥 > a\-pouring\-rain;
+䨜 > a\-pouring\-rain;
+䧾 > a\-kind\-of\-bird;
+䧷 > a\-kind\-of\-bird;
+䧧 > high\-mountains;
+䦺 > name\-of\-a\-hill;
+䦤 > seed\-of\-grains;
+䦑 > without\-a\-door;
+䦏 > wing\-of\-a\-door;
+䥢 > sound\-of\-drums;
+䤖 > a\-kind\-of\-wine;
+䣥 > a\-kind\-of\-wine;
+䣎 > name\-of\-county;
+䢨 > to\-walk\-slowly;
+䡾 > high\-cartloads;
+䡲 > rim\-of\-a\-wheel;
+䡗 > rim\-of\-a\-wheel;
+䡉 > a\-kind\-of\-cart;
+䟓 > to\-walk\-slowly;
+䝸 > a\-kind\-of\-tool;
+䜽 > a\-kind\-of\-bean;
+䜼 > a\-kind\-of\-bean;
+䜜 > words\-of\-anger;
+䛠 > unable\-to\-talk;
+䚖 > mountain\-deity;
+䚄 > to\-make\-fun\-of;
+䙳 > spiting\-flames;
+䙦 > upper\-garments;
+䘢 > old\-and\-shabby;
+䘃 > a\-kind\-of\-crab;
+䗷 > a\-kind\-of\-wasp;
+䗪 > a\-kind\-of\-worm;
+䗜 > a\-mole\-cricket;
+䗚 > eggs\-of\-mantis;
+䗒 > a\-kind\-of\-clam;
+䗀 > a\-kind\-of\-clam;
+䖰 > a\-kind\-of\-gnat;
+䖆 > medicinal\-herb;
+䕚 > a\-straw\-basket;
+䔕 > chicken\-breast;
+䔋 > a\-kind\-of\-tree;
+䔆 > a\-kind\-of\-bean;
+䔂 > vegetable\-soup;
+䓡 > a\-medical\-herb;
+䒻 > a\-medical\-herb;
+䒲 > a\-medical\-herb;
+䒓 > to\-do\-violence;
+䒇 > name\-of\-a\-ship;
+䒆 > name\-of\-a\-ship;
+䒅 > beautiful\-eyes;
+䑶 > sprightly\-boat;
+䑫 > tools\-for\-boat;
+䑣 > a\-sailing\-boat;
+䑜 > to\-eat\-heavily;
+䐕 > oil\-and\-grease;
+䐍 > excellent\-food;
+䍡 > small\-fish\-net;
+䍑 > a\-net\-or\-snare;
+䍐 > a\-net\-or\-snare;
+䍍 > unburnt\-bricks;
+䌵 > lapel\-and\-belt;
+䌰 > connected\-silk;
+䌥 > to\-sew\-clothes;
+䌡 > to\-wind\-around;
+䋽 > hempen\-sandals;
+䋯 > crucial\-points;
+䋢 > to\-twist\-ropes;
+䋜 > crucial\-points;
+䊼 > measuring\-unit;
+䊨 > storing\-grains;
+䈷 > a\-bamboo\-fence;
+䈚 > a\-bamboo\-shoot;
+䇫 > bamboo\-splints;
+䇅 > to\-stand\-still;
+䅥 > ripening\-crops;
+䅖 > sweet\-smelling;
+䃹 > jade\-and\-stone;
+䃸 > electric\-light;
+䃱 > electric\-light;
+䃡 > a\-small\-pebble;
+䃏 > a\-kind\-of\-rock;
+䃌 > rocky\-mountain;
+䂛 > a\-kind\-of\-rock;
+䂌 > a\-short\-weapon;
+䁤 > moistened\-eyes;
+䁏 > farsightedness;
+䀺 > squinting\-eyes;
+䀥 > beautiful\-eyes;
+㽦 > reclaimed\-land;
+㽥 > fertile\-fields;
+㽋 > a\-kind\-of\-tile;
+㽄 > an\-earthen\-jar;
+㻿 > a\-kind\-of\-jade;
+㻺 > a\-kind\-of\-jade;
+㻵 > a\-kind\-of\-jade;
+㻯 > a\-kind\-of\-jade;
+㻬 > a\-kind\-of\-jade;
+㻧 > a\-kind\-of\-jade;
+㻟 > a\-kind\-of\-jade;
+㻝 > a\-kind\-of\-jade;
+㻖 > a\-kind\-of\-jade;
+㻕 > a\-kind\-of\-jade;
+㻔 > a\-kind\-of\-jade;
+㻑 > a\-kind\-of\-jade;
+㻋 > a\-kind\-of\-jade;
+㻂 > a\-kind\-of\-jade;
+㺹 > a\-kind\-of\-jade;
+㺸 > a\-kind\-of\-jade;
+㺷 > a\-kind\-of\-jade;
+㺱 > a\-kind\-of\-jade;
+㺰 > a\-kind\-of\-jade;
+㺭 > a\-kind\-of\-jade;
+㺫 > a\-kind\-of\-jade;
+㸫 > castrated\-bull;
+㸤 > broken\-leather;
+㸊 > fierce\-of\-fire;
+㶠 > water\-currents;
+㶞 > water\-currents;
+㵥 > water\-currents;
+㵘 > great\-currents;
+㴸 > swift\-currents;
+㴙 > water\-dripping;
+㳃 > to\-temper\-iron;
+㲏 > flying\-feather;
+㱧 > stinking\-smell;
+㱏 > the\-right\-side;
+㰚 > a\-bamboo\-fence;
+㰘 > a\-kind\-of\-tree;
+㰊 > a\-kind\-of\-tree;
+㰂 > a\-kind\-of\-tree;
+㰀 > a\-kind\-of\-tree;
+㯞 > a\-kind\-of\-tree;
+㯚 > a\-kind\-of\-tree;
+㯗 > a\-kind\-of\-tree;
+㮋 > a\-kind\-of\-tree;
+㮅 > a\-kind\-of\-tree;
+㭻 > the\-crab\-apple;
+㭭 > a\-kind\-of\-tree;
+㭜 > a\-kind\-of\-tree;
+㭚 > a\-kind\-of\-tree;
+㭔 > a\-kind\-of\-tree;
+㭑 > a\-kind\-of\-tree;
+㭏 > a\-kind\-of\-wood;
+㭇 > a\-kind\-of\-tree;
+㭄 > a\-king\-of\-tree;
+㭁 > a\-kind\-of\-tree;
+㬋 > name\-of\-a\-star;
+㫏 > a\-kind\-of\-flag;
+㫂 > to\-chop\-or\-cut;
+㪇 > to\-disseminate;
+㨇 > to\-sweep\-clean;
+璘 > luster\-of\-jade;
+瑩 > lustre\-of\-gems;
+嶺 > mountain\-ridge;
+㦍 > to\-be\-startled;
+㥺 > to\-blow\-a\-fire;
+菱 > water\-chestnut;
+㥉 > a\-little\-angry;
+㥇 > to\-be\-perverse;
+㤾 > not\-doing\-well;
+㤖 > to\-have\-wisdom;
+㣦 > a\-winding\-path;
+㢟 > to\-walk\-slowly;
+㡜 > ragged\-clothes;
+㠨 > misty\-mountain;
+㠡 > high\-and\-lofty;
+㠚 > high\-and\-lofty;
+㟿 > high\-and\-steep;
+㟛 > high\-and\-steep;
+㞩 > mountain\-vapor;
+㞜 > hempen\-sandals;
+㞗 > the\-male\-organ;
+㞌 > to\-be\-pregnant;
+㞊 > unable\-to\-walk;
+㝰 > unable\-to\-meet;
+㝛 > ahalting\-place;
+㜤 > fooling\-around;
+㜑 > an\-older\-woman;
+㛩 > sisters\-in\-law;
+㛂 > weak\-and\-small;
+㚺 > to\-be\-pregnant;
+㚲 > small\-and\-weak;
+㚃 > to\-take\-a\-hint;
+㙷 > low\-lying\-area;
+㗊 > public\-opinion;
+㖾 > to\-beat\-a\-drum;
+㖢 > to\-reject\-food;
+㕬 > public\-opinion;
+㕤 > a\-proud\-temper;
+㔙 > great\-strength;
+㔁 > a\-kind\-of\-tool;
+㒛 > to\-stand\-alone;
+㒀 > do\-not\-fear\-to;
+经 > classic\-works;
+弟 > young\-brother;
+廻 > circle\-around;
+关 > frontier\-pass;
+帝 > supreme\-ruler;
+番 > to\-take\-turns;
+略 > approximately;
+共 > together\-with;
+义 > right\-conduct;
+嫂 > sister\-in\-law;
+哥 > elder\-brother;
+婦 > married\-women;
+訣 > take\-leave\-of;
+族 > a\-family\-clan;
+奪 > take\-by\-force;
+兄 > elder\-brother;
+笔 > writing\-brush;
+袷 > lined\-garment;
+瀬 > swift\-current;
+妇 > married\-women;
+伯 > older\-brother;
+漲 > rise\-in\-price;
+礼 > social\-custom;
+嘩 > rushing\-sound;
+啣 > hold\-in\-mouth;
+泊 > anchor\-vessel;
+沿 > follow\-course;
+咄 > noise\-of\-rage;
+含 > hold\-in\-mouth;
+夺 > take\-by\-force;
+菊 > chrysanthemum;
+岳 > mountain\-peak;
+匹 > bolt\-of\-cloth;
+颇 > lean\-one\-side;
+劫 > take\-by\-force;
+晨 > early\-morning;
+撞 > knock\-against;
+愈 > more\-and\-more;
+槇 > tip\-of\-a\-tree;
+駅 > relay\-station;
+饅 > steamed\-bread;
+炸 > to\-fry\-in\-oil;
+脈 > blood\-vessels;
+绪 > end\-of\-thread;
+飼 > raise\-animals;
+梓 > catalpa\-ovata;
+肌 > muscle\-tissue;
+佩 > belt\-ornament;
+署 > public\-office;
+搭 > join\-together;
+頗 > lean\-one\-side;
+栗 > chestnut\-tree;
+桑 > mulberry\-tree;
+脉 > blood\-vessels;
+義 > right\-conduct;
+鞄 > to\-work\-hides;
+杓 > handle\-of\-cup;
+佃 > tenant\-farmer;
+昆 > elder\-brother;
+贡 > offer\-tribute;
+拼 > join\-together;
+曇 > become\-cloudy;
+亙 > extend\-across;
+亘 > extend\-across;
+诞 > bear\-children;
+晴 > clear\-weather;
+涨 > rise\-in\-price;
+關 > frontier\-pass;
+緒 > end\-of\-thread;
+関 > frontier\-pass;
+塑 > model\-in\-clay;
+經 > classic\-works;
+経 > classic\-works;
+浦 > bank\-of\-river;
+翰 > writing\-brush;
+籔 > bamboo\-basket;
+辰 > early\-morning;
+慎 > act\-with\-care;
+莉 > white\-jasmine;
+捗 > make\-progress;
+筆 > writing\-brush;
+哗 > rushing\-sound;
+塌 > fall\-in\-ruins;
+竖 > perpendicular;
+禮 > social\-custom;
+陕 > mountain\-pass;
+惚 > absent\-minded;
+诀 > take\-leave\-of;
+淀 > shallow\-water;
+淘 > wash\-in\-sieve;
+瑰 > extraordinary;
+垫 > advance\-money;
+灶 > kitchen\-range;
+毓 > give\-birth\-to;
+咧 > stretch\-mouth;
+奎 > stride\-of\-man;
+洽 > to\-blend\-with;
+瑶 > precious\-jade;
+钰 > rare\-treasure;
+瑛 > luster\-of\-gem;
+馒 > steamed\-bread;
+饲 > raise\-animals;
+殉 > die\-for\-cause;
+衙 > public\-office;
+唬 > to\-intimidate;
+瘪 > shrivelled\-up;
+唆 > make\-mischief;
+岚 > mountain\-mist;
+桦 > type\-of\-birch;
+涟 > flowing\-water;
+唔 > hold\-in\-mouth;
+飕 > sound\-of\-wind;
+坷 > clod\-of\-earth;
+鑫 > used\-in\-names;
+笋 > bamboo\-shoots;
+荃 > aromatic\-herb;
+篓 > bamboo\-basket;
+馄 > dumpling\-soup;
+穹 > high\-and\-vast;
+弈 > chinese\-chess;
+聿 > writing\-brush;
+驮 > carry\-on\-back;
+箩 > bamboo\-basket;
+芥 > mustard\-plant;
+驿 > relay\-station;
+炜 > brilliant\-red;
+岜 > rock\-mountain;
+纫 > thread\-needle;
+桀 > chicken\-roost;
+噙 > hold\-in\-mouth;
+篝 > bamboo\-basket;
+拮 > laboring\-hard;
+茉 > white\-jasmine;
+纥 > inferior\-silk;
+昙 > become\-cloudy;
+忤 > insubordinate;
+鸾 > fabulous\-bird;
+嘁 > to\-be\-grieved;
+辎 > a\-supply\-cart;
+芫 > daphne\-genkwa;
+伧 > vulgar\-person;
+泠 > nice\-and\-cool;
+縻 > halter\-for\-ox;
+踽 > to\-walk\-alone;
+赭 > reddish\-brown;
+颀 > tall\-and\-slim;
+柘 > a\-thorny\-tree;
+谔 > honest\-speech;
+骓 > piebald\-horse;
+岫 > mountain\-peak;
+崧 > high\-mountain;
+酚 > carbolic\-acid;
+夤 > distant\-place;
+暌 > in\-opposition;
+濑 > swift\-current;
+怍 > to\-be\-ashamed;
+贽 > gift\-superior;
+毖 > guard\-against;
+迓 > to\-go\-to\-meet;
+毵 > long\-feathers;
+睚 > corner\-of\-eye;
+毽 > a\-shuttlecock;
+僳 > minority\-name;
+骐 > piebald\-horse;
+辏 > hubs\-of\-wheel;
+旆 > flag\-ornament;
+荇 > a\-water\-plant;
+卮 > measuring\-cup;
+髡 > to\-shear\-tree;
+鳜 > mandarin\-fish;
+鼍 > large\-reptile;
+笫 > planks\-of\-bed;
+缡 > a\-bridal\-veil;
+绨 > coarse\-pongee;
+芰 > water\-caltrop;
+魃 > drought\-demon;
+舳 > stern\-of\-ship;
+屦 > straw\-sandals;
+蓐 > straw\-bed\-mat;
+銎 > eye\-of\-an\-axe;
+醣 > carbohydrates;
+蛑 > a\-marine\-crab;
+椠 > wooden\-tablet;
+媸 > an\-ugly\-woman;
+馇 > stir\-and\-cook;
+甙 > sugar\-product;
+薤 > allium\-bakeri;
+塥 > dry\-clay\-lump;
+鼉 > large\-reptile;
+鸞 > fabulous\-bird;
+鵩 > owl\-like\-bird;
+鱖 > mandarin\-fish;
+髃 > shoulder\-bone;
+骪 > crooked\-bones;
+驛 > relay\-station;
+騏 > piebald\-horse;
+騅 > piebald\-horse;
+馱 > carry\-on\-back;
+馣 > fragrant\-odor;
+餧 > steamed\-bread;
+餛 > dumpling\-soup;
+餚 > prepared\-meat;
+颼 > sound\-of\-wind;
+頎 > tall\-and\-slim;
+鞮 > leather\-shoes;
+霝 > drops\-of\-rain;
+陝 > mountain\-pass;
+铖 > person''s\-name;
+錡 > a\-kind\-of\-pen;
+鋮 > person''s\-name;
+鈺 > rare\-treasure;
+鈄 > a\-wine\-flagon;
+釭 > tire\-of\-wheel;
+醨 > dregs\-of\-wine;
+辡 > recrimination;
+轏 > sleeping\-cart;
+輳 > hubs\-of\-wheel;
+輜 > a\-supply\-cart;
+跮 > hasty\-walking;
+贉 > earnest\-money;
+贄 > gift\-superior;
+賮 > farewell\-gift;
+貢 > offer\-tribute;
+讍 > honest\-speech;
+讆 > to\-exaggerate;
+謍 > humming\-sound;
+諤 > honest\-speech;
+諕 > to\-intimidate;
+覶 > to\-look\-about;
+覔 > to\-search\-for;
+襚 > grave\-clothes;
+裌 > lined\-garment;
+衇 > blood\-vessels;
+蠵 > large\-turtles;
+螾 > the\-earthworm;
+螥 > the\-house\-fly;
+螙 > grubs\-in\-wood;
+蛅 > a\-caterpillar;
+蚠 > person''s\-name;
+蘯 > to\-toss\-about;
+蔎 > thea\-sinensis;
+蓧 > bamboo\-basket;
+葽 > type\-of\-grain;
+菼 > rush\-or\-sedge;
+菺 > althaea\-rosea;
+菑 > to\-weed\-grass;
+莧 > edible\-greens;
+荈 > thea\-sinensis;
+茥 > rubus\-tokkura;
+苘 > indian\-mallow;
+脥 > pelvic\-cavity;
+胲 > hydroxylamine;
+罳 > wooden\-screen;
+缇 > reddish\-color;
+縭 > a\-bridal\-veil;
+緹 > reddish\-color;
+緖 > end\-of\-thread;
+綈 > coarse\-pongee;
+紉 > thread\-needle;
+紇 > inferior\-silk;
+糭 > rice\-dumpling;
+籾 > unhulled\-rice;
+籮 > bamboo\-basket;
+籜 > bamboo\-sheath;
+簍 > bamboo\-basket;
+箨 > bamboo\-sheath;
+笵 > a\-bamboo\-form;
+笭 > bamboo\-screen;
+竪 > perpendicular;
+砞 > to\-smash\-rock;
+矞 > bore\-with\-awl;
+盪 > to\-toss\-about;
+癟 > shrivelled\-up;
+畧 > approximately;
+瓌 > extraordinary;
+璟 > luster\-of\-gem;
+璂 > jade\-ornament;
+瑳 > luster\-of\-gem;
+瑤 > precious\-jade;
+琕 > type\-of\-pearl;
+珮 > jade\-ornament;
+獙 > die\-violently;
+牁 > mooring\-stake;
+熰 > great\-drought;
+煒 > brilliant\-red;
+瀨 > swift\-current;
+漣 > flowing\-water;
+浬 > nautical\-mile;
+洊 > flowing\-water;
+毿 > long\-feathers;
+欵 > to\-treat\-well;
+欓 > a\-cross\-piece;
+櫌 > a\-kind\-of\-hoe;
+檮 > block\-of\-wood;
+樺 > type\-of\-birch;
+槧 > wooden\-tablet;
+榌 > wooden\-ladder;
+楙 > name\-of\-plant;
+椛 > type\-of\-birch;
+梼 > block\-of\-wood;
+梹 > the\-areca\-nut;
+梎 > sickle\-handle;
+栰 > a\-bamboo\-raft;
+杮 > wood\-shavings;
+朩 > kwukyel\:\-rank;
+搢 > to\-stick\-into;
+掭 > to\-manipulate;
+挶 > hold\-in\-hands;
+拕 > to\-drag\-after;
+抃 > to\-clap\-hands;
+戺 > stone\-boarder;
+戹 > in\-difficulty;
+愼 > act\-with\-care;
+愪 > to\-be\-grieved;
+愡 > absent\-minded;
+怾 > mountain\-name;
+彽 > go\-to\-and\-fro;
+彲 > yellow\-dragon;
+彔 > to\-carve\-wood;
+巵 > measuring\-cup;
+巰 > an\-atom\-group;
+巯 > an\-atom\-group;
+巪 > person''s\-name;
+嶽 > mountain\-peak;
+嵐 > mountain\-mist;
+崌 > mountain\-name;
+峠 > mountain\-pass;
+峂 > name\-of\-place;
+峀 > mountain\-peak;
+岾 > mountain\-pass;
+屩 > straw\-sandals;
+屨 > straw\-sandals;
+寀 > feudal\-estate;
+媢 > be\-jealous\-of;
+墊 > advance\-money;
+塐 > model\-in\-clay;
+堺 > person''s\-name;
+垻 > an\-embankment;
+嚚 > argumentative;
+咡 > side\-of\-mouth;
+凟 > to\-be\-rude\-to;
+儹 > to\-accumulate;
+儲 > to\-save\-money;
+儛 > to\-skip\-about;
+傖 > vulgar\-person;
+傒 > personal\-name;
+偊 > to\-walk\-alone;
+侂 > to\-commission;
+乨 > the\-beginning;
+䶚 > decayed\-tooth;
+䶈 > a\-kind\-of\-rat;
+䶃 > a\-kind\-of\-rat;
+䵿 > a\-silent\-drum;
+䵁 > decayed\-dough;
+䴰 > a\-family\-name;
+䲺 > birds\-singing;
+䲅 > the\-globefish;
+䱸 > a\-family\-name;
+䱦 > the\-globefish;
+䱡 > the\-globefish;
+䰽 > the\-globefish;
+䰻 > to\-catch\-fish;
+䰱 > name\-of\-a\-god;
+䯅 > a\-swift\-horse;
+䯀 > a\-swift\-horse;
+䮈 > to\-go\-swiftly;
+䭿 > a\-swift\-horse;
+䭵 > a\-swift\-horse;
+䬟 > sound\-of\-wind;
+䫿 > a\-cool\-breeze;
+䫴 > weak\-and\-dull;
+䫁 > the\-first\-son;
+䪫 > ancient\-music;
+䪧 > ancient\-music;
+䪒 > leather\-pants;
+䩾 > herb\-medicine;
+䩤 > to\-lead\-an\-ox;
+䩣 > shoe\-cushions;
+䩞 > a\-saddle\-flap;
+䨎 > deep\-and\-dark;
+䧜 > an\-embankment;
+䧖 > a\-small\-mound;
+䦴 > open\-the\-door;
+䦳 > between\-steps;
+䦱 > open\-the\-door;
+䦣 > open\-the\-door;
+䦡 > a\-door\-keeper;
+䥩 > hooks\-to\-hang;
+䥚 > the\-beginning;
+䤵 > a\-tiny\-needle;
+䤔 > dregs\-of\-wine;
+䤎 > soybean\-sauce;
+䤃 > drunken\-sound;
+䣰 > to\-pool\-money;
+䢧 > to\-go\-forward;
+䢚 > a\-narrow\-path;
+䢃 > to\-administer;
+䡥 > a\-moving\-cart;
+䡆 > a\-moving\-cart;
+䟘 > to\-straighten;
+䟊 > short\-strides;
+䞁 > corresponding;
+䝶 > to\-levy\-taxes;
+䝬 > a\-wealthy\-man;
+䜕 > to\-exaggerate;
+䛾 > familiar\-with;
+䛐 > an\-expression;
+䚕 > to\-search\-out;
+䙹 > to\-vomit\-milk;
+䙥 > shiny\-dresses;
+䙢 > short\-t\-shirt;
+䙠 > short\-clothes;
+䙟 > heavy\-clothes;
+䙞 > woolen\-string;
+䙅 > the\-waistline;
+䗗 > the\-millipede;
+䗋 > a\-marine\-crab;
+䗃 > the\-millipede;
+䖩 > a\-kind\-of\-bee;
+䖑 > a\-white\-tiger;
+䖇 > fragrant\-herb;
+䕥 > herb\-medicine;
+䕖 > fragrant\-herb;
+䔞 > the\-beginning;
+䔜 > herb\-medicine;
+䔚 > herb\-medicine;
+䔖 > water\-caltrop;
+䔓 > herb\-medicine;
+䒥 > corresponding;
+䒗 > fragrant\-herb;
+䒎 > without\-color;
+䒍 > without\-color;
+䑲 > to\-row\-a\-boat;
+䑥 > a\-moving\-boat;
+䐲 > half\-raw\-meat;
+䐙 > the\-diaphragm;
+䏘 > a\-big\-abdomen;
+䏄 > not\-to\-listen;
+䍽 > a\-fierce\-goat;
+䍼 > salted\-mutton;
+䍪 > castrated\-ram;
+䍤 > to\-strain\-out;
+䌣 > to\-accumulate;
+䌙 > hank\-of\-ropes;
+䌅 > a\-thick\-ropes;
+䋦 > ravelled\-silk;
+䋝 > a\-throat\-band;
+䊽 > a\-fine\-thread;
+䊡 > steamed\-bread;
+䊔 > polished\-rice;
+䊄 > polished\-rice;
+䉰 > bamboo\-shoots;
+䉩 > a\-bamboo\-ware;
+䉨 > bamboo\-joints;
+䈾 > move\-a\-little;
+䈳 > a\-window\-leaf;
+䇋 > name\-of\-a\-god;
+䆞 > deep\-and\-dark;
+䆚 > to\-go\-through;
+䆗 > deep\-and\-dark;
+䅛 > husks\-of\-rice;
+䄔 > a\-family\-name;
+䄇 > a\-family\-name;
+䃻 > an\-embankment;
+䃳 > falling\-stone;
+䂶 > the\-crustacea;
+䂗 > to\-be\-careful;
+䂎 > a\-short\-spear;
+䂁 > an\-angry\-look;
+䁙 > eloquent\-eyes;
+䀮 > sight\-blurred;
+䀭 > with\-big\-eyes;
+䀧 > sight\-blurred;
+䀟 > sight\-blurred;
+䀖 > to\-look\-up\-to;
+䀕 > angry\-glances;
+㿬 > nasal\-disease;
+㿜 > shrivelled\-up;
+㾽 > swelling\-feet;
+㽲 > griping\-colic;
+㽱 > griping\-colic;
+㽇 > unburnt\-tiles;
+㼵 > a\-small\-basin;
+㼟 > a\-tiled\-house;
+㼎 > a\-small\-melon;
+㻾 > jade\-articles;
+㺩 > jade\-articles;
+㺈 > to\-go\-hunting;
+㹹 > a\-kind\-of\-dog;
+㹵 > a\-hunting\-dog;
+㹳 > a\-kind\-of\-ape;
+㹣 > a\-kind\-of\-dog;
+㸄 > a\-raging\-fire;
+㷾 > blaze\-of\-fire;
+㷸 > blaze\-of\-fire;
+㷖 > to\-shine\-upon;
+㷕 > hearing\-sound;
+㷒 > to\-cook\-meals;
+㶘 > full\-of\-water;
+㵳 > crystal\-clear;
+㵱 > flowing\-water;
+㵠 > to\-gush\-forth;
+㴽 > water\-current;
+㴵 > water\-current;
+㴯 > water\-current;
+㴮 > water\-current;
+㴫 > great\-flowing;
+㴨 > water\-current;
+㴦 > to\-wash\-hands;
+㴥 > great\-billows;
+㴒 > water\-current;
+㴐 > great\-current;
+㴂 > great\-billows;
+㳩 > great\-billows;
+㲛 > hairy\-animals;
+㰻 > asses\-braying;
+㰳 > asses\-braying;
+㰏 > a\-bamboo\-pole;
+㰌 > to\-monopolize;
+㯽 > the\-areca\-nut;
+㭿 > oblique\-angle;
+㭓 > a\-pillar\-arch;
+㬬 > a\-family\-name;
+㬥 > to\-sun\-to\-air;
+㬄 > warm\-and\-damp;
+㫟 > day\-after\-day;
+㫚 > early\-morning;
+㩥 > delicate\-hand;
+飼 > raise\-animals;
+㨞 > to\-feel\-about;
+礼 > social\-custom;
+晴 > clear\-weather;
+㧼 > to\-distribute;
+㧷 > to\-wipe\-tears;
+栗 > chestnut\-tree;
+㧘 > to\-accumulate;
+禮 > social\-custom;
+㦫 > lax\-and\-crude;
+漣 > flowing\-water;
+㦌 > keen\-or\-sharp;
+㦆 > to\-exaggerate;
+㥼 > to\-be\-near\-to;
+略 > approximately;
+辰 > early\-morning;
+㥥 > absent\-minded;
+㤰 > to\-be\-ashamed;
+嵐 > mountain\-mist;
+鸞 > fabulous\-bird;
+㣿 > painfully\-sad;
+㣱 > common\-people;
+㣤 > to\-tread\-upon;
+㣔 > to\-walk\-alone;
+㢻 > to\-draw\-a\-bow;
+㢖 > a\-store\-house;
+㡷 > a\-family\-name;
+㠺 > a\-fine\-thread;
+㠴 > a\-pillow\-case;
+㠛 > name\-a\-county;
+㟶 > mountain\-peak;
+㟲 > mountain\-peak;
+㟭 > the\-min\-river;
+㟩 > the\-min\-river;
+㞶 > the\-min\-river;
+㞬 > close\-or\-near;
+㞋 > soft\-and\-meek;
+㝻 > barely\-enough;
+㝦 > to\-accumulate;
+㝓 > corresponding;
+㝃 > to\-bear\-a\-son;
+㛒 > can\-not\-speak;
+㛎 > an\-ugly\-woman;
+㚴 > a\-pretty\-girl;
+㘛 > a\-deep\-valley;
+㘓 > prolix\-speech;
+㘉 > to\-make\-sound;
+㗴 > dogs\-fighting;
+㕰 > sound\-angrily;
+㕪 > birds''\-chirps;
+㕙 > a\-wily\-rabbit;
+㕉 > to\-dig\-a\-hole;
+㔥 > full\-of\-anger;
+㓴 > to\-cut\-in\-two;
+㓖 > bitterly\-cold;
+㓏 > bitterly\-cold;
+㓌 > bitterly\-cold;
+㒇 > to\-skip\-about;
+㑼 > name\-of\-a\-god;
+㑥 > disrespectful;
+㐰 > to\-believe\-in;
+瞳 > pupil\-of\-eye;
+万 > ten\-thousand;
+布 > cotton\-cloth;
+通 > pass\-through;
+提 > hold\-in\-hand;
+京 > capital\-city;
+甚 > great\-extent;
+周 > zhou\-dynasty;
+尻 > end\-of\-spine;
+宴 > to\-entertain;
+宰 > to\-slaughter;
+犯 > commit\-crime;
+婢 > servant\-girl;
+参 > take\-part\-in;
+掌 > palm\-of\-hand;
+姿 > one''s\-manner;
+姉 > elder\-sister;
+斗 > chinese\-peck;
+呼 > breathe\-sigh;
+姐 > elder\-sister;
+衝 > rush\-against;
+執 > hold\-in\-hand;
+螺 > spiral\-shell;
+坊 > neighborhood;
+尼 > buddhist\-nun;
+鼾 > snore\-loudly;
+叶 > to\-harmonize;
+野 > open\-country;
+移 > change\-place;
+唐 > tang\-dynasty;
+秀 > ear\-of\-grain;
+执 > hold\-in\-hand;
+蒲 > type\-of\-rush;
+庆 > congratulate;
+蒟 > betel\-pepper;
+汗 > perspiration;
+萬 > ten\-thousand;
+拜 > do\-obeisance;
+參 > take\-part\-in;
+虑 > be\-concerned;
+宋 > song\-dynasty;
+胆 > gall\-bladder;
+剖 > split\-in\-two;
+凤 > male\-phoenix;
+询 > inquire\-into;
+膽 > gall\-bladder;
+筑 > ancient\-lute;
+偶 > accidentally;
+飽 > eat\-heartily;
+胎 > unborn\-child;
+悟 > to\-apprehend;
+肅 > pay\-respects;
+肃 > pay\-respects;
+姊 > elder\-sister;
+侘 > disappointed;
+祭 > sacrifice\-to;
+贺 > congratulate;
+饱 > eat\-heartily;
+宪 > constitution;
+碑 > stone\-tablet;
+昌 > light\-of\-sun;
+携 > lead\-by\-hand;
+厦 > big\-building;
+仆 > fall\-forward;
+妥 > satisfactory;
+杭 > cross\-stream;
+赠 > give\-present;
+腔 > chest\-cavity;
+孝 > filial\-piety;
+笹 > small\-bamboo;
+笛 > bamboo\-flute;
+歧 > fork\-of\-road;
+拝 > do\-obeisance;
+鉛 > lead\-plumbum;
+穗 > ear\-of\-grain;
+穂 > ear\-of\-grain;
+喃 > keep\-talking;
+舱 > hold\-of\-ship;
+醜 > ugly\-looking;
+慮 > be\-concerned;
+裘 > fur\-garments;
+栽 > to\-cultivate;
+诧 > be\-surprised;
+阎 > village\-gate;
+愣 > be\-in\-a\-daze;
+琪 > type\-of\-jade;
+箫 > bamboo\-flute;
+娥 > be\-beautiful;
+咪 > sound\-of\-cat;
+渗 > soak\-through;
+葫 > bottle\-gourd;
+坪 > level\-ground;
+坞 > entrenchment;
+怅 > disappointed;
+橡 > chestnut\-oak;
+絮 > waste\-cotton;
+跄 > walk\-rapidly;
+屹 > to\-rise\-high;
+惘 > disconcerted;
+眸 > pupil\-of\-eye;
+揩 > rub\-and\-wipe;
+楠 > name\-of\-tree;
+麓 > foot\-of\-hill;
+玮 > type\-of\-jade;
+恻 > feel\-anguish;
+桅 > mast\-of\-ship;
+骋 > gallop\-horse;
+闫 > village\-gate;
+蹒 > to\-jump\-over;
+祀 > to\-sacrifice;
+籁 > bamboo\-flute;
+寰 > great\-domain;
+斓 > multicolored;
+伫 > look\-towards;
+躏 > trample\-down;
+沽 > buy\-and\-sell;
+珥 > ear\-ornament;
+笆 > bamboo\-fence;
+虬 > young\-dragon;
+惬 > be\-satisfied;
+缨 > a\-chin\-strap;
+劾 > examine\-into;
+嘤 > seek\-friends;
+诃 > scold\-loudly;
+冽 > cold\-and\-raw;
+飨 > host\-banquet;
+怏 > discontented;
+冢 > burial\-mound;
+婀 > be\-beautiful;
+嗳 > interjection;
+碣 > stone\-tablet;
+宕 > stone\-quarry;
+耆 > man\-of\-sixty;
+靓 > make\-up\-face;
+蛰 > to\-hibernate;
+掼 > throw\-ground;
+囤 > grain\-basket;
+筱 > dwarf\-bamboo;
+樟 > camphor\-tree;
+鲥 > reeves''\-shad;
+逵 > thoroughfare;
+岷 > min\-mountain;
+枰 > smooth\-board;
+屐 > wooden\-shoes;
+胛 > the\-shoulder;
+鹞 > sparrow\-hawk;
+犄 > animal\-horns;
+跹 > wander\-about;
+昱 > bright\-light;
+栾 > name\-of\-tree;
+湄 > water''s\-edge;
+菅 > coarse\-grass;
+绻 > affectionate;
+篁 > bamboo\-grove;
+赅 > prepared\-for;
+椁 > outer\-coffin;
+纰 > spoiled\-silk;
+鼋 > large\-turtle;
+醐 > purest\-cream;
+龉 > uneven\-teeth;
+苻 > kind\-of\-herb;
+鬣 > horse''s\-mane;
+缗 > fishing\-line;
+湫 > a\-small\-pond;
+仟 > one\-thousand;
+蚶 > kind\-of\-clam;
+瓠 > bottle\-gourd;
+蛄 > mole\-cricket;
+毂 > hub\-of\-wheel;
+畚 > straw\-basket;
+洄 > a\-back\-water;
+飧 > evening\-meal;
+醪 > unclear\-wine;
+骝 > famous\-horse;
+骒 > mother\-horse;
+懔 > be\-afraid\-of;
+劓 > cut\-off\-nose;
+踔 > to\-get\-ahead;
+颡 > the\-forehead;
+潲 > driving\-rain;
+缯 > silk\-fabrics;
+惝 > disappointed;
+甓 > glazed\-tiles;
+荬 > a\-plant\-name;
+柒 > number\-seven;
+瘳 > to\-be\-healed;
+谇 > speak\-ill\-of;
+乇 > to\-depend\-on;
+龤 > to\-harmonize;
+齬 > uneven\-teeth;
+齆 > stuffed\-noze;
+齁 > snore\-loudly;
+鼽 > clogged\-nose;
+黿 > large\-turtle;
+麕 > muntjac\-deer;
+鷂 > sparrow\-hawk;
+鳳 > male\-phoenix;
+鳯 > male\-phoenix;
+鳐 > the\-nautilus;
+鱑 > the\-sturgeon;
+鱂 > name\-of\-fish;
+鰩 > the\-nautilus;
+鰣 > reeves''\-shad;
+鰃 > name\-of\-fish;
+鰁 > name\-of\-fish;
+魦 > shark\-family;
+魢 > name\-of\-fish;
+魟 > the\-nautilus;
+鬵 > big\-iron\-pot;
+鬐 > horse''s\-mane;
+鬅 > unkempt\-hair;
+驈 > black\-horses;
+騮 > famous\-horse;
+騍 > mother\-horse;
+騆 > divine\-horse;
+騁 > gallop\-horse;
+駜 > strong\-horse;
+駗 > chatter\-mark;
+饗 > host\-banquet;
+餀 > tainted\-food;
+飱 > evening\-meal;
+颭 > sway\-in\-wind;
+顙 > the\-forehead;
+頟 > the\-forehead;
+鞦 > leather\-stap;
+靚 > make\-up\-face;
+霑 > be\-moistened;
+隖 > entrenchment;
+陁 > a\-steep\-bank;
+闑 > the\-doorsill;
+閻 > village\-gate;
+閆 > village\-gate;
+镨 > praseodymium;
+鐠 > praseodymium;
+鏷 > protactinium;
+鍊 > smelt\-metals;
+錬 > smelt\-metals;
+錈 > to\-bend\-iron;
+釪 > an\-alms\-bowl;
+醽 > kind\-of\-wine;
+郙 > to\-be\-exiled;
+邲 > good\-looking;
+迣 > to\-leap\-over;
+轂 > hub\-of\-wheel;
+躪 > trample\-down;
+躚 > wander\-about;
+躙 > trample\-down;
+蹣 > to\-jump\-over;
+蹌 > walk\-rapidly;
+踼 > to\-fall\-flat;
+踤 > butt\-against;
+贈 > give\-present;
+賉 > to\-give\-alms;
+賅 > prepared\-for;
+賀 > congratulate;
+貆 > small\-badger;
+豶 > castrate\-pig;
+誾 > speak\-gently;
+誶 > speak\-ill\-of;
+詢 > inquire\-into;
+訶 > scold\-loudly;
+襛 > fine\-clothes;
+襆 > hood\-or\-cowl;
+蟄 > to\-hibernate;
+虯 > young\-dragon;
+葜 > smilax\-china;
+萩 > scandent\-hop;
+萘 > naphthanlene;
+菝 > smilax\-china;
+莦 > jungle\-grass;
+芧 > chestnut\-oak;
+芚 > green\-sprout;
+芑 > white\-millet;
+艙 > hold\-of\-ship;
+膗 > ugly\-and\-fat;
+肙 > a\-small\-worm;
+羀 > fishing\-trap;
+罶 > fishing\-trap;
+纓 > a\-chin\-strap;
+纁 > shade\-of\-red;
+繙 > to\-interpret;
+繒 > silk\-fabrics;
+縕 > tangled\-hemp;
+緡 > fishing\-line;
+綣 > affectionate;
+紕 > spoiled\-silk;
+粛 > pay\-respects;
+籯 > bamboo\-chest;
+籟 > bamboo\-flute;
+篴 > bamboo\-flute;
+篠 > dwarf\-bamboo;
+筤 > young\-bamboo;
+筍 > bamboo\-shoot;
+筅 > bamboo\-brush;
+穟 > ear\-of\-grain;
+秬 > black\-millet;
+祘 > to\-calculate;
+磠 > sal\-ammoniac;
+碶 > a\-flood\-gate;
+砟 > stone\-tablet;
+矼 > stone\-bridge;
+睒 > to\-glance\-at;
+皦 > bright\-white;
+瘺 > anal\-fistula;
+疿 > prickly\-heat;
+瑋 > type\-of\-jade;
+珹 > type\-of\-jade;
+玍 > ill\-tempered;
+狆 > pekinese\-dog;
+牂 > female\-sheep;
+燷 > disappointed;
+燣 > disappointed;
+滲 > soak\-through;
+滊 > a\-river\-name;
+泖 > still\-waters;
+毈 > fertile\-eggs;
+殜 > half\-sitting;
+欿 > discontented;
+欒 > name\-of\-tree;
+橒 > wood\-streaks;
+槻 > zelkova\-tree;
+槨 > outer\-coffin;
+槔 > water\-pulley;
+楀 > name\-of\-tree;
+枟 > wood\-streaks;
+斕 > multicolored;
+攜 > lead\-by\-hand;
+摜 > throw\-ground;
+摙 > to\-transport;
+揑 > to\-fabricate;
+戉 > a\-battle\-axe;
+懍 > be\-afraid\-of;
+憲 > constitution;
+慶 > congratulate;
+愜 > be\-satisfied;
+惻 > feel\-anguish;
+悵 > disappointed;
+廹 > to\-persecute;
+廈 > big\-building;
+帨 > handkerchief;
+嶢 > high\-or\-tall;
+屧 > wooden\-shoes;
+屘 > the\-youngest;
+嫲 > grand\-mother;
+壈 > disappointed;
+塢 > entrenchment;
+埜 > open\-country;
+嚶 > seek\-friends;
+噯 > interjection;
+喭 > condole\-with;
+咥 > sound\-of\-cat;
+呹 > to\-eat\-grass;
+叄 > take\-part\-in;
+厷 > the\-fore\-arm;
+厤 > to\-calculate;
+勣 > achievements;
+剷 > to\-level\-off;
+剗 > to\-level\-off;
+儗 > compare\-with;
+佭 > unsubmissive;
+亰 > capital\-city;
+丼 > bowl\-of\-food;
+䴼 > to\-extirpate;
+䴕 > a\-woodpecker;
+䳖 > flying\-birds;
+䲜 > lots\-of\-fish;
+䱊 > roe\-or\-spawn;
+䰸 > the\-nautilus;
+䯶 > fair\-of\-hair;
+䯬 > to\-hang\-down;
+䯧 > a\-small\-hall;
+䮟 > big\-and\-tall;
+䮑 > a\-gray\-horse;
+䭘 > well\-stacked;
+䭗 > well\-stacked;
+䭖 > animal\-feeds;
+䭊 > well\-stacked;
+䭉 > mashed\-beans;
+䬜 > evil\-spirits;
+䬚 > to\-move\-fast;
+䬋 > violent\-wind;
+䫨 > tall\-and\-big;
+䫚 > short\-headed;
+䫙 > the\-forehead;
+䫕 > small\-headed;
+䫇 > the\-whiskers;
+䪹 > a\-large\-face;
+䪰 > interjection;
+䪡 > to\-fall\-down;
+䪋 > silk\-cordage;
+䩏 > a\-small\-face;
+䩋 > a\-green\-face;
+䩊 > good\-looking;
+䩇 > a\-small\-head;
+䨶 > thunderstorm;
+䨲 > a\-small\-hare;
+䨪 > a\-dust\-storm;
+䨝 > a\-pure\-woman;
+䨈 > a\-small\-bird;
+䧬 > water''s\-edge;
+䧢 > a\-rough\-road;
+䧙 > a\-high\-mound;
+䥃 > a\-big\-hammer;
+䤬 > a\-small\-gong;
+䤦 > a\-battle\-axe;
+䤣 > a\-metal\-ring;
+䤋 > yellow\-faced;
+䣿 > to\-entertain;
+䣾 > cheese\-dregs;
+䣼 > mixed\-starch;
+䠔 > far\-and\-deep;
+䟿 > to\-reverence;
+䟹 > to\-hop\-about;
+䟕 > to\-step\-upon;
+䞱 > to\-fall\-over;
+䞧 > hard\-to\-walk;
+䜩 > to\-entertain;
+䚪 > curved\-horns;
+䘄 > cicada\-famiy;
+䘀 > grasshoppers;
+䗰 > spiral\-shell;
+䗧 > libellulidae;
+䖞 > a\-sea\-insect;
+䕻 > to\-adhere\-to;
+䕺 > dense\-growth;
+䕝 > medical\-herb;
+䕋 > of\-elm\-group;
+䓯 > water\-pepper;
+䑽 > a\-large\-boat;
+䑵 > a\-small\-boat;
+䐅 > the\-buttocks;
+䐁 > the\-buttocks;
+䏗 > unexpectedly;
+䏐 > the\-buttocks;
+䏍 > a\-small\-worm;
+䏀 > inharmonious;
+䎘 > birds\-flying;
+䎕 > flying\-birds;
+䍄 > an\-indenture;
+䌶 > \)\-black\-silk;
+䌇 > a\-thick\-rope;
+䌆 > silk\-fabrics;
+䊅 > to\-soak\-rice;
+䉯 > dried\-bamboo;
+䉕 > a\-bamboo\-hat;
+䉔 > bamboo\-slips;
+䈟 > broken\-sound;
+䇸 > a\-bamboo\-mat;
+䇝 > to\-break\-off;
+䇜 > small\-bamboo;
+䆬 > to\-fall\-down;
+䆢 > to\-penetrate;
+䆟 > coresponding;
+䆍 > cutted\-crops;
+䅁 > to\-husk\-rice;
+䃲 > a\-great\-rock;
+䃯 > small\-stones;
+䃝 > rugged\-rocks;
+䃍 > to\-fall\-down;
+䂐 > short\-stupid;
+䁧 > to\-open\-wide;
+䁠 > to\-hang\-down;
+䀁 > a\-small\-bowl;
+㿽 > a\-small\-bowl;
+㿵 > soft\-leather;
+㿲 > a\-fierce\-dog;
+㿪 > skin\-disease;
+㿨 > small\-stones;
+㿊 > very\-painful;
+㾔 > long\-illness;
+㼋 > the\-cucumber;
+㺖 > dogs\-barking;
+㺎 > fierce\-beast;
+㹿 > a\-fierce\-dog;
+㹪 > a\-fierce\-dog;
+㸾 > to\-filled\-up;
+㸭 > the\-opposite;
+㸘 > ten\-thousand;
+㷹 > intense\-heat;
+㶕 > to\-wash\-rice;
+㵊 > moving\-image;
+㴕 > to\-boil\-away;
+㴓 > to\-wash\-rice;
+㳞 > deep\-and\-far;
+㳑 > to\-flow\-over;
+㰷 > resurrection;
+㯬 > achievements;
+㯠 > a\-cross\-beam;
+㯜 > decayed\-wood;
+㮮 > a\-well\-sweep;
+㮬 > a\-fruit\-tree;
+㮪 > a\-small\-boat;
+㮏 > a\-fruit\-tree;
+㭫 > a\-fruit\-tree;
+㬵 > the\-shinbone;
+㫒 > hands\-joined;
+㫃 > flags\-flying;
+㫁 > to\-cut\-apart;
+㨭 > unreasonable;
+㧴 > to\-rub\-hands;
+㧢 > to\-depend\-on;
+㦰 > to\-break\-off;
+㦦 > apprehensive;
+鍊 > smelt\-metals;
+㦎 > cantankerous;
+㥵 > to\-dishonour;
+參 > take\-part\-in;
+㥠 > intelligence;
+㤳 > to\-depend\-on;
+㤧 > conciliation;
+㤞 > disappointed;
+螺 > spiral\-shell;
+㣒 > hair\-raising;
+㣑 > double\-image;
+㢗 > a\-high\-house;
+㡔 > oiled\-calico;
+㡅 > storage\-room;
+㠾 > a\-dish\-cloth;
+㠽 > a\-dish\-cloth;
+㠒 > mountain\-top;
+㟽 > mountain\-top;
+㟺 > mountain\-top;
+㟐 > big\-and\-high;
+㟇 > a\-land\-slide;
+㞢 > to\-arrive\-at;
+㞛 > red\-slippers;
+㞓 > the\-buttocks;
+㞅 > not\-straight;
+㜗 > covetousness;
+㛼 > to\-interrupt;
+㛥 > to\-prostrate;
+㛊 > to\-speculate;
+㛆 > to\-speculate;
+㘢 > a\-round\-cave;
+㘍 > sound\-of\-rat;
+㗒 > interjection;
+㖷 > bird\-singing;
+㖠 > an\-auxiliary;
+㕯 > slow\-tongued;
+㕒 > a\-lofty\-peak;
+㕃 > to\-fall\-over;
+㔬 > to\-establish;
+㔦 > to\-encourage;
+㔕 > with\-purpose;
+㔎 > to\-cut\-apart;
+㔃 > to\-cut\-short;
+㓣 > to\-sink\-into;
+㑪 > a\-generation;
+㑤 > good\-looking;
+㑔 > all\-together;
+㐸 > to\-own\-money;
+㐴 > to\-drag\-down;
+以 > by\-means\-of;
+農 > agriculture;
+径 > narrow\-path;
+几 > small\-table;
+便 > convenience;
+电 > electricity;
+百 > one\-hundred;
+跣 > bare\-footed;
+贅 > unnecessary;
+功 > achievement;
+江 > large\-river;
+注 > concentrate;
+牧 > tend\-cattle;
+婚 > get\-married;
+刊 > publication;
+农 > agriculture;
+熟 > well\-cooked;
+饭 > cooked\-rice;
+奢 > extravagant;
+查 > investigate;
+章 > composition;
+按 > put\-hand\-on;
+蝠 > kind\-of\-bat;
+蝕 > nibble\-away;
+困 > to\-surround;
+险 > narrow\-pass;
+练 > to\-practice;
+溯 > go\-upstream;
+渉 > ford\-stream;
+败 > be\-defeated;
+纷 > in\-disorder;
+缺 > be\-short\-of;
+遭 > come\-across;
+戴 > wear\-on\-top;
+勤 > industrious;
+勘 > investigate;
+髄 > bone\-marrow;
+効 > efficacious;
+貌 > countenance;
+繁 > complicated;
+柳 > willow\-tree;
+凄 > bitter\-cold;
+涉 > ford\-stream;
+霞 > rosy\-clouds;
+飴 > sweet\-meats;
+飯 > cooked\-rice;
+聪 > intelligent;
+倦 > be\-tired\-of;
+摔 > fall\-ground;
+醉 > intoxicated;
+査 > investigate;
+涛 > large\-waves;
+锅 > cooking\-pot;
+仔 > small\-thing;
+會 > to\-assemble;
+電 > electricity;
+拆 > to\-break\-up;
+翠 > color\-green;
+險 > narrow\-pass;
+晕 > halo\-in\-sky;
+険 > narrow\-pass;
+纠 > investigate;
+夸 > extravagant;
+辨 > distinguish;
+葛 > edible\-bean;
+轿 > sedan\-chair;
+敗 > be\-defeated;
+攫 > snatch\-away;
+紛 > in\-disorder;
+鍛 > forge\-metal;
+厕 > mingle\-with;
+鍋 > cooking\-pot;
+竿 > bamboo\-pole;
+券 > certificate;
+穉 > young\-grain;
+驳 > varicolored;
+憔 > be\-worn\-out;
+粞 > ground\-rice;
+酔 > intoxicated;
+遂 > comply\-with;
+隶 > subservient;
+缸 > earthen\-jug;
+肢 > human\-limbs;
+尴 > embarrassed;
+呐 > raise\-voice;
+颖 > rice\-tassel;
+砥 > a\-whetstone;
+孕 > be\-pregnant;
+钞 > paper\-money;
+垮 > be\-defeated;
+琢 > polish\-jade;
+绽 > ripped\-seam;
+奠 > pay\-respect;
+澜 > overflowing;
+惕 > be\-cautious;
+锻 > forge\-metal;
+蚀 > nibble\-away;
+趴 > lying\-prone;
+窘 > embarrassed;
+隋 > sui\-dynasty;
+瞄 > take\-aim\-at;
+祟 > evil\-spirit;
+嗔 > be\-angry\-at;
+奕 > in\-sequence;
+榴 > pomegranate;
+棘 > jujube\-tree;
+峙 > stand\-erect;
+砌 > stone\-steps;
+槐 > locust\-tree;
+鳞 > fish\-scales;
+惺 > intelligent;
+髓 > bone\-marrow;
+炽 > burning\-hot;
+迂 > doctrinaire;
+缪 > wind\-around;
+凋 > be\-withered;
+缤 > flourishing;
+雳 > thunderclap;
+赘 > unnecessary;
+驸 > extra\-horse;
+嗷 > loud\-clamor;
+炖 > stew\-slowly;
+谏 > remonstrate;
+篆 > seal\-script;
+宦 > officialdom;
+瓮 > earthen\-jar;
+朕 > pronoun\-''i'';
+阑 > door\-screen;
+卤 > saline\-soil;
+唏 > weep\-or\-sob;
+汩 > run\-swiftly;
+榕 > banyan\-tree;
+闰 > intercalary;
+昊 > summer\-time;
+玷 > flaw\-in\-gem;
+阙 > watch\-tower;
+瑕 > flaw\-in\-gem;
+泌 > to\-seep\-out;
+烽 > signal\-fire;
+孵 > sit\-on\-eggs;
+椭 > oval\-shaped;
+痉 > convulsions;
+匝 > full\-circle;
+饪 > cooked\-food;
+嶙 > precipitous;
+颧 > cheek\-bones;
+镗 > boring\-tool;
+揶 > make\-fun\-of;
+炷 > candle\-wick;
+贲 > forge\-ahead;
+蚱 > grasshopper;
+痨 > consumption;
+濂 > a\-waterfall;
+汐 > night\-tides;
+筠 > bamboo\-skin;
+氤 > hanging\-fog;
+痔 > hemorrhoids;
+趿 > to\-tread\-on;
+觞 > wine\-vessel;
+挹 > to\-bale\-out;
+膑 > the\-kneecap;
+徇 > comply\-with;
+唳 > cry\-of\-bird;
+礅 > stone\-block;
+箔 > reed\-screen;
+豸 > radical\-153;
+滟 > overflowing;
+烃 > hydrocarbon;
+砭 > stone\-probe;
+澍 > timely\-rain;
+龋 > tooth\-decay;
+缱 > attached\-to;
+奂 > be\-numerous;
+黩 > to\-dishonor;
+饴 > sweet\-meats;
+壅 > to\-obstruct;
+澶 > still\-water;
+餍 > be\-satiated;
+枥 > type\-of\-oak;
+蜢 > grasshopper;
+煅 > forge\-metal;
+桕 > tallow\-tree;
+鲢 > silver\-carp;
+趱 > go\-in\-hurry;
+妫 > family\-name;
+暾 > morning\-sun;
+荦 > brindled\-ox;
+邛 > in\-distress;
+戢 > to\-put\-away;
+榧 > type\-of\-yew;
+堇 > yellow\-loam;
+劬 > be\-diligent;
+魈 > mischevious;
+鍪 > an\-iron\-pan;
+蜣 > dung\-beetle;
+痦 > \(flat\)\-mole;
+戬 > exterminate;
+嗉 > bird''s\-crop;
+儋 > a\-small\-jar;
+蚜 > plant\-louse;
+粜 > sell\-grains;
+攮 > to\-fend\-off;
+苎 > china\-grass;
+埕 > earthen\-jar;
+坩 > earthenware;
+榉 > type\-of\-elm;
+玢 > porphyrites;
+绁 > to\-contract;
+潆 > tiny\-stream;
+髹 > red\-lacquer;
+觖 > to\-long\-for;
+螵 > a\-chrysalis;
+杪 > tip\-of\-twig;
+幂 > cover\-cloth;
+硗 > barren\-land;
+脞 > minced\-meat;
+轵 > end\-of\-axle;
+楗 > bar\-of\-door;
+桄 > a\-coir\-palm;
+堠 > battlements;
+俜 > to\-trust\-to;
+齲 > tooth\-decay;
+黷 > to\-dishonor;
+麀 > female\-deer;
+鹵 > saline\-soil;
+鸏 > tropic\-bird;
+鴺 > the\-pelican;
+鱠 > minced\-fish;
+鱗 > fish\-scales;
+鰱 > silver\-carp;
+鬙 > matted\-hair;
+驔 > black\-horse;
+驇 > heavy\-horse;
+騺 > heavy\-horse;
+駙 > extra\-horse;
+駁 > varicolored;
+饜 > be\-satiated;
+餁 > cooked\-food;
+飪 > cooked\-food;
+顴 > cheek\-bones;
+顦 > be\-worn\-out;
+顇 > be\-worn\-out;
+頴 > rice\-tassel;
+頋 > to\-care\-for;
+鞫 > interrogate;
+靂 > thunderclap;
+隉 > in\-disorder;
+阨 > in\-distress;
+闕 > watch\-tower;
+闌 > door\-screen;
+閠 > intercalary;
+閏 > intercalary;
+鐦 > californium;
+鏻 > phosphonium;
+鏜 > boring\-tool;
+鎐 > family\-name;
+鍐 > a\-headstall;
+鈔 > paper\-money;
+釆 > distinguish;
+醹 > strong\-wine;
+醲 > strong\-wine;
+醓 > salted\-meat;
+酏 > millet\-wine;
+遹 > comply\-with;
+遡 > go\-upstream;
+迊 > to\-go\-round;
+轎 > sedan\-chair;
+轇 > complicated;
+輦 > a\-hand\-cart;
+軹 > end\-of\-axle;
+蹹 > to\-tread\-on;
+蹵 > to\-tread\-on;
+趲 > go\-in\-hurry;
+贗 > counterfeit;
+賁 > forge\-ahead;
+貘 > the\-panther;
+豦 > a\-wild\-boar;
+豘 > a\-small\-pig;
+諫 > remonstrate;
+諌 > remonstrate;
+觴 > wine\-vessel;
+觱 > tartar\-horn;
+覈 > investigate;
+褵 > bridal\-veil;
+蠜 > grasshopper;
+蠋 > caterpillar;
+蟛 > a\-land\-crab;
+蝛 > the\-sow\-bug;
+蝍 > a\-centipede;
+蛓 > caterpillar;
+藚 > water\-plant;
+藄 > edible\-fern;
+蓪 > paper\-plant;
+蓂 > lucky\-place;
+蒭 > to\-cutgrass;
+萐 > lucky\-plant;
+菢 > to\-incubate;
+苧 > china\-grass;
+艗 > bow\-of\-junk;
+臏 > the\-kneecap;
+胾 > minced\-meat;
+胔 > rotten\-meat;
+肈 > to\-commence;
+聰 > intelligent;
+聦 > the\-hearing;
+聡 > intelligent;
+耑 > specialized;
+翆 > color\-green;
+羖 > a\-black\-ram;
+羃 > cover\-cloth;
+罱 > fishing\-net;
+罠 > animal\-trap;
+罒 > radical\-122;
+罋 > earthen\-jar;
+繾 > attached\-to;
+繽 > flourishing;
+繆 > wind\-around;
+綻 > ripped\-seam;
+糾 > investigate;
+糶 > sell\-grains;
+糢 > rice\-snacks;
+簹 > tall\-bamboo;
+簵 > fine\-bamboo;
+簰 > bamboo\-raft;
+篔 > tall\-bamboo;
+箘 > fine\-bamboo;
+筩 > bamboo\-pipe;
+筊 > bamboo\-rope;
+筇 > bamboo\-name;
+笯 > a\-bird\-cage;
+窸 > faint\-sound;
+穵 > deep\-hollow;
+穎 > rice\-tassel;
+磽 > barren\-land;
+磹 > stone\-wedge;
+碔 > \/2\-pr\-stone;
+砆 > \/2\-pr\-stone;
+砃 > white\-stone;
+瞵 > to\-stare\-at;
+睠 > to\-care\-for;
+睎 > to\-long\-for;
+眥 > eye\-sockets;
+眑 > sunken\-eyes;
+眊 > dim\-sighted;
+皃 > countenance;
+癆 > consumption;
+瘚 > to\-hiccough;
+痳 > pock\-marked;
+痲 > pock\-marked;
+痭 > menorrhagia;
+痙 > convulsions;
+痃 > indigestion;
+甕 > earthen\-jar;
+珽 > jade\-tablet;
+玗 > \/2\-pr\-stone;
+獏 > the\-panther;
+狢 > animal\-name;
+犖 > brindled\-ox;
+燖 > reheat\-food;
+熾 > burning\-hot;
+煟 > bright\-room;
+煏 > dry\-by\-fire;
+煆 > raging\-fire;
+烴 > hydrocarbon;
+灩 > overflowing;
+灧 > overflowing;
+瀾 > overflowing;
+瀠 > tiny\-stream;
+濤 > large\-waves;
+澰 > overflowing;
+潿 > still\-water;
+潾 > clear\-water;
+潠 > to\-blow\-out;
+滷 > thick\-gravy;
+湜 > transparent;
+渟 > not\-flowing;
+淒 > bitter\-cold;
+涠 > still\-water;
+浡 > burst\-forth;
+泝 > go\-upstream;
+沰 > to\-let\-drop;
+殰 > an\-abortion;
+欮 > to\-hiccough;
+櫸 > type\-of\-elm;
+櫪 > type\-of\-oak;
+橢 > oval\-shaped;
+槲 > type\-of\-oak;
+槢 > a\-hard\-wood;
+楕 > oval\-shaped;
+棯 > jujube\-tree;
+梘 > bamboo\-tube;
+梖 > a\-palm\-tree;
+梄 > a\-soft\-wood;
+栞 > publication;
+栃 > type\-of\-oak;
+枧 > bamboo\-tube;
+杤 > type\-of\-oak;
+暈 > halo\-in\-sky;
+昜 > to\-open\-out;
+昉 > bright\-dawn;
+旽 > morning\-sun;
+旉 > to\-state\-to;
+摡 > to\-irrigate;
+摎 > to\-strangle;
+挓 > to\-open\-out;
+戩 > exterminate;
+慉 > to\-bring\-up;
+愔 > comfortable;
+忲 > extravagant;
+徻 > a\-wide\-room;
+徑 > narrow\-path;
+弰 > ends\-of\-bow;
+幎 > cover\-cloth;
+帀 > to\-go\-round;
+崪 > rocky\-peaks;
+崒 > rocky\-peaks;
+屰 > disobedient;
+屝 > straw\-shoes;
+尷 > embarrassed;
+尶 > embarrassed;
+尜 > a\-child\-toy;
+尃 > to\-state\-to;
+嬔 > baby\-rabbit;
+媯 > family\-name;
+奓 > extravagant;
+奐 > be\-numerous;
+塿 > small\-mound;
+堊 > white\-earth;
+堈 > earthen\-jug;
+垞 > small\-mound;
+垝 > dilapidated;
+垔 > to\-restrain;
+坵 > earthenware;
+嗱 > exclamation;
+喎 > a\-wry\-mouth;
+唹 > to\-smile\-at;
+咅 > to\-spit\-out;
+吶 > raise\-voice;
+叻 > place\-names;
+厾 > lightly\-tap;
+厠 > mingle\-with;
+匯 > a\-concourse;
+勽 > to\-incubate;
+勠 > join\-forces;
+劼 > be\-discreet;
+劵 > certificate;
+剦 > to\-castrate;
+刋 > publication;
+凩 > wintry\-wind;
+冪 > cover\-cloth;
+兦 > destruction;
+儁 > outstanding;
+傏 > to\-ward\-off;
+偢 > to\-stare\-at;
+俛 > make\-effort;
+佹 > depend\-upon;
+佡 > make\-effort;
+䶪 > sharp\-teeth;
+䵴 > black\-color;
+䵳 > light\-black;
+䵰 > black\-color;
+䵩 > dark\-yellow;
+䵢 > light\-black;
+䵎 > dark\-yellow;
+䲻 > the\-swallow;
+䱽 > the\-pomfret;
+䱺 > a\-male\-crab;
+䱶 > a\-male\-crab;
+䱒 > salted\-fish;
+䯣 > the\-kneecap;
+䯘 > the\-kneecap;
+䮘 > young\-horse;
+䫳 > human\-skull;
+䫰 > sparse\-hair;
+䫭 > bald\-headed;
+䫜 > sunken\-eyes;
+䫄 > better\-than;
+䪴 > the\-occiput;
+䪄 > great\-blaze;
+䩻 > to\-be\-chief;
+䩜 > descendants;
+䨱 > spilt\-water;
+䧶 > to\-care\-for;
+䧨 > precipitous;
+䧞 > to\-increase;
+䧓 > a\-big\-mound;
+䧊 > a\-big\-mound;
+䦷 > to\-struggle;
+䦶 > to\-struggle;
+䦟 > to\-struggle;
+䦛 > to\-struggle;
+䦘 > a\-threshold;
+䥀 > to\-pull\-out;
+䤭 > to\-ornament;
+䤅 > southerwood;
+䢉 > agriculture;
+䠝 > to\-stand\-up;
+䠍 > at\-the\-feet;
+䟵 > to\-tread\-on;
+䟯 > to\-tread\-on;
+䟅 > to\-go\-ahead;
+䟁 > a\-foot\-race;
+䞽 > to\-lie\-flat;
+䞨 > half\-a\-pace;
+䞦 > to\-lie\-flat;
+䞊 > to\-increase;
+䞄 > to\-disperse;
+䝍 > a\-wild\-boar;
+䝀 > garden\-peas;
+䜰 > deep\-valley;
+䜮 > deep\-valley;
+䜗 > angry\-words;
+䜏 > to\-withdraw;
+䜆 > hasty\-words;
+䛘 > to\-think\-of;
+䚾 > to\-think\-of;
+䚳 > do\-not\-know;
+䚲 > to\-laugh\-at;
+䙾 > to\-wait\-for;
+䙱 > a\-long\-coat;
+䙰 > new\-feather;
+䙂 > short\-pants;
+䘴 > short\-pants;
+䗖 > the\-rainbow;
+䕸 > wheat\-straw;
+䕣 > water\-plant;
+䕌 > young\-grain;
+䔿 > lush\-growth;
+䓮 > lush\-growth;
+䓏 > flourishing;
+䒋 > air\-current;
+䐚 > good\-graces;
+䏶 > the\-stomach;
+䏔 > to\-eat\-meat;
+䏓 > the\-stomach;
+䍨 > to\-castrate;
+䌺 > flourishing;
+䌪 > to\-continue;
+䌦 > green\-color;
+䊭 > to\-overturn;
+䊫 > coarse\-rice;
+䊢 > thick\-fluid;
+䊓 > to\-paste\-up;
+䉝 > bamboo\-ware;
+䉊 > bamboo\-ware;
+䈸 > a\-big\-chest;
+䈀 > bamboo\-ware;
+䇕 > to\-wait\-for;
+䇓 > to\-wait\-for;
+䇃 > to\-wait\-for;
+䆳 > far\-distant;
+䆘 > acupuncture;
+䆖 > a\-big\-house;
+䅻 > measurement;
+䅄 > long\-grains;
+䄽 > common\-rice;
+䄄 > achievement;
+䃭 > a\-stone\-box;
+䂱 > to\-wear\-out;
+䂤 > white\-stone;
+䂡 > a\-whetstone;
+䂓 > regulations;
+䁻 > pretty\-eyes;
+䁷 > bright\-eyes;
+䁱 > hollow\-eyed;
+䁑 > pretty\-eyes;
+䀦 > to\-stare\-at;
+䀂 > a\-big\-basin;
+㿣 > white\-color;
+㿘 > to\-get\-sick;
+㾺 > eye\-disease;
+㾝 > to\-leak\-out;
+㾗 > eye\-disease;
+㾈 > hunchbacked;
+㾃 > hump\-backed;
+㽪 > paddy\-field;
+㽆 > earthenware;
+㽀 > earthenware;
+㼻 > earthenware;
+㼸 > earthenware;
+㼶 > earthenware;
+㼳 > earthenware;
+㼯 > earthenware;
+㼬 > earthenware;
+㼦 > earthenware;
+㼤 > earthenware;
+㼘 > of\-mountain;
+㼓 > melon\-seeds;
+㻓 > a\-fine\-jade;
+㹠 > a\-small\-big;
+㸠 > thick\-stick;
+㶑 > overflowing;
+㵮 > clear\-water;
+㵤 > to\-overflow;
+㵕 > to\-permeate;
+㴘 > to\-ooze\-out;
+㲰 > a\-hairy\-dog;
+㲒 > to\-incubate;
+㱩 > an\-abortion;
+㰲 > to\-blow\-off;
+㰮 > to\-laugh\-at;
+㰞 > to\-laugh\-at;
+㯈 > small\-trees;
+㮟 > a\-whetstone;
+㮝 > angle\-steel;
+㭴 > the\-oscines;
+㭎 > a\-tall\-tree;
+㬲 > to\-increase;
+㬩 > a\-tiny\-star;
+㫵 > white\-color;
+㫘 > disappeared;
+㪺 > to\-bale\-out;
+㩈 > to\-restrain;
+㩅 > to\-draw\-out;
+㨺 > to\-ornament;
+㨵 > to\-cut\-away;
+㨴 > to\-turnover;
+飯 > cooked\-rice;
+㨕 > to\-shoulder;
+鱗 > fish\-scales;
+㧔 > to\-disturbe;
+柳 > willow\-tree;
+暈 > halo\-in\-sky;
+㦟 > intelligent;
+輦 > a\-hand\-cart;
+㦒 > to\-deceived;
+泌 > to\-seep\-out;
+便 > convenience;
+㤡 > to\-surprise;
+㤛 > to\-remember;
+㤕 > melancholoy;
+㤁 > to\-disgrace;
+㣾 > do\-not\-care;
+㣵 > to\-run\-away;
+㣥 > to\-store\-up;
+㢳 > black\-color;
+㢓 > to\-separate;
+㡾 > a\-threshold;
+㠖 > precipitous;
+㞘 > a\-small\-pig;
+㝴 > a\-round\-off;
+㝔 > deep\-bottom;
+㜣 > a\-last\-name;
+㜎 > slave\-girls;
+㛑 > three\-women;
+㚾 > to\-have\-fun;
+㙧 > earthenware;
+㘶 > a\-hen\-roost;
+㘥 > to\-inveigle;
+㘆 > to\-laugh\-at;
+㗗 > to\-separate;
+㖽 > to\-call\-out;
+㖣 > to\-spit\-out;
+㖞 > a\-wry\-mouth;
+㖖 > to\-spit\-out;
+㖕 > to\-spit\-out;
+㖑 > to\-shout\-at;
+㔼 > to\-fit\-into;
+㔶 > a\-small\-cup;
+㔏 > to\-cut\-open;
+㓬 > to\-cut\-open;
+㓩 > horned\-hair;
+㒨 > an\-immortal;
+㒥 > an\-immortal;
+㑽 > to\-ward\-off;
+的 > possessive;
+込 > crowd\-into;
+辻 > crossroads;
+能 > to\-be\-able;
+都 > metropolis;
+文 > literature;
+轍 > wagon\-ruts;
+輩 > generation;
+眩 > to\-confuse;
+眠 > close\-eyes;
+輝 > brightness;
+弐 > number\-two;
+者 > that\-which;
+业 > profession;
+府 > prefecture;
+政 > government;
+世 > generation;
+产 > give\-birth;
+场 > open\-space;
+比 > to\-compare;
+疲 > feel\-tired;
+画 > a\-painting;
+産 > give\-birth;
+望 > to\-look\-at;
+賺 > make\-money;
+六 > number\-six;
+屡 > frequently;
+尤 > especially;
+專 > monopolize;
+基 > foundation;
+双 > set\-of\-two;
+孫 > grandchild;
+专 > monopolize;
+嬪 > court\-lady;
+离 > rare\-beast;
+媒 > go\-between;
+誌 > write\-down;
+誇 > exaggerate;
+响 > make\-sound;
+婿 > son\-in\-law;
+爭 > to\-dispute;
+器 > receptacle;
+營 > encampment;
+妙 > mysterious;
+胡 > recklessly;
+妓 > prostitute;
+襦 > short\-coat;
+奧 > mysterious;
+奥 > mysterious;
+壻 > son\-in\-law;
+壱 > number\-one;
+孙 > grandchild;
+营 > encampment;
+場 > open\-space;
+郭 > outer\-part;
+讨 > to\-discuss;
+滅 > extinguish;
+虜 > to\-capture;
+积 > accumulate;
+菜 > vegetables;
+嗣 > to\-connect;
+嗜 > be\-fond\-of;
+介 > forerunner;
+索 > large\-rope;
+丁 > male\-adult;
+遍 > everywhere;
+辈 > generation;
+蒔 > transplant;
+懂 > understand;
+释 > interprete;
+纵 > indulge\-in;
+灭 > extinguish;
+歴 > take\-place;
+仁 > humaneness;
+檀 > sandalwood;
+削 > scrape\-off;
+刑 > punishment;
+岂 > how\?\-what\?;
+隆 > prosperous;
+辉 > brightness;
+刃 > edged\-tool;
+析 > split\-wood;
+腸 > intestines;
+業 > profession;
+楓 > maple\-tree;
+餅 > rice\-cakes;
+枫 > maple\-tree;
+傍 > by\-side\-of;
+耽 > indulge\-in;
+頻 > frequently;
+栓 > wooden\-peg;
+響 > make\-sound;
+凯 > triumphant;
+恭 > respectful;
+祸 > misfortune;
+频 > frequently;
+禅 > meditation;
+柯 > axe\-handle;
+捐 > contribute;
+踪 > footprints;
+屁 > break\-wind;
+谊 > friendship;
+储 > save\-money;
+雁 > wild\-goose;
+摊 > spread\-out;
+吨 > metric\-ton;
+乍 > first\-time;
+陀 > steep\-bank;
+縱 > indulge\-in;
+縦 > indulge\-in;
+肠 > intestines;
+赚 > make\-money;
+綿 > cotton\-wad;
+綱 > heavy\-rope;
+绵 > cotton\-wad;
+抑 > press\-down;
+饼 > rice\-cakes;
+彬 > cultivated;
+撮 > little\-bit;
+粥 > rice\-gruel;
+蛮 > barbarians;
+箸 > chopsticks;
+筵 > bamboo\-mat;
+艇 > small\-boat;
+捌 > break\-open;
+笠 > bamboo\-hat;
+庞 > disorderly;
+鋪 > spread\-out;
+竝 > to\-combine;
+積 > accumulate;
+扉 > door\-panel;
+纲 > heavy\-rope;
+釋 > interprete;
+釈 > interprete;
+坝 > embankment;
+憧 > irresolute;
+甩 > throw\-away;
+祕 > mysterious;
+酌 > serve\-wine;
+磐 > large\-rock;
+辅 > cheek\-bone;
+捡 > to\-pick\-up;
+筷 > chopsticks;
+蹈 > stamp\-feet;
+晒 > dry\-in\-sun;
+歼 > annihilate;
+涩 > astringent;
+霎 > light\-rain;
+擅 > monopolize;
+蔬 > vegetables;
+绸 > silk\-cloth;
+眯 > be\-blinded;
+寅 > to\-respect;
+虏 > to\-capture;
+眶 > eye\-socket;
+碟 > small\-dish;
+蕴 > to\-collect;
+迭 > repeatedly;
+旭 > rising\-sun;
+悍 > courageous;
+枢 > door\-hinge;
+跋 > go\-by\-foot;
+圪 > \(phonetic\);
+搔 > to\-scratch;
+嚎 > cry\-loudly;
+辙 > wagon\-ruts;
+汛 > high\-water;
+脯 > dried\-meat;
+嗒 > to\-despair;
+墟 > high\-mound;
+馋 > gluttonous;
+娼 > prostitute;
+蹭 > to\-shuffle;
+澈 > thoroughly;
+缭 > wind\-round;
+喳 > whispering;
+弧 > wooden\-bow;
+跺 > stamp\-feet;
+惆 > distressed;
+撵 > drive\-away;
+殃 > misfortune;
+恪 > respectful;
+轶 > rush\-forth;
+腆 > prosperous;
+窿 > mine\-shaft;
+樵 > woodcutter;
+犀 > rhinoceros;
+绚 > variegated;
+藕 > lotus\-root;
+摞 > to\-pile\-up;
+滤 > strain\-out;
+缈 > indistinct;
+肪 > animal\-fat;
+甄 > to\-examine;
+铛 > frying\-pan;
+嫡 > legal\-wife;
+瘁 > feel\-tired;
+磷 > phosphorus;
+翡 > kingfisher;
+瞑 > close\-eyes;
+霭 > cloudy\-sky;
+舫 > fancy\-boat;
+纨 > white\-silk;
+榷 > footbridge;
+糜 > rice\-gruel;
+壹 > number\-one;
+蔗 > sugar\-cane;
+彗 > broomstick;
+喟 > heave\-sigh;
+喑 > to\-be\-dumb;
+鱿 > cuttlefish;
+倜 > raise\-high;
+侩 > go\-between;
+滂 > torrential;
+贰 > number\-two;
+忻 > delightful;
+燧 > flintstone;
+稔 > ripe\-grain;
+嫔 > court\-lady;
+颉 > fly\-upward;
+舸 > large\-boat;
+眙 > to\-gaze\-at;
+瘀 > a\-hematoma;
+夯 > heavy\-load;
+饕 > gluttonous;
+鲠 > fish\-bones;
+茏 > tall\-grass;
+茯 > china\-root;
+鲧 > giant\-fish;
+逦 > meandering;
+骜 > wild\-horse;
+欹 > fierce\-dog;
+缛 > decorative;
+苕 > rush\-plant;
+顸 > large\-face;
+尕 > \(phonetic\);
+缦 > plain\-silk;
+帙 > book\-cover;
+鳃 > fish\-gills;
+醴 > sweet\-wine;
+辊 > turn\-round;
+岘 > steep\-hill;
+倬 > noticeable;
+鲞 > dried\-fish;
+簟 > bamboo\-mat;
+稹 > accumulate;
+缁 > black\-silk;
+箧 > rattan\-box;
+墁 > to\-plaster;
+罴 > brown\-bear;
+爰 > lead\-on\-to;
+杲 > bright\-sun;
+癔 > hysterical;
+枋 > sandalwood;
+莜 > avena\-nuda;
+埙 > instrument;
+獾 > the\-badger;
+莳 > transplant;
+郫 > place\-name;
+蛏 > razor\-clam;
+橥 > wooden\-peg;
+帑 > a\-treasury;
+揠 > to\-pull\-up;
+趑 > can''t\-move;
+阍 > gatekeeper;
+掊 > to\-extract;
+镝 > dysprosium;
+砗 > giant\-clam;
+嫫 > ugly\-woman;
+蔌 > vegetables;
+跗 > the\-instep;
+浼 > to\-request;
+嗌 > the\-throat;
+唑 > \(phonetic\);
+汆 > to\-parboil;
+刭 > cut\-throat;
+髂 > the\-pelvis;
+艋 > small\-boat;
+钼 > molybdenum;
+憝 > to\-dislike;
+炅 > brilliance;
+隳 > to\-destroy;
+茛 > ranunculus;
+糇 > dried\-rice;
+钆 > gadolinium;
+澌 > to\-exhaust;
+庀 > to\-prepare;
+犴 > a\-wild\-dog;
+埏 > a\-boundary;
+凵 > receptacle;
+谮 > to\-slander;
+龢 > in\-harmony;
+龐 > disorderly;
+龎 > disorderly;
+鼧 > the\-marmot;
+鼄 > the\-spider;
+黹 > embroidery;
+黲 > grey\-black;
+黪 > grey\-black;
+黤 > blue\-black;
+鸺 > horned\-owl;
+鵒 > mynah\-bird;
+鵂 > horned\-owl;
+鴷 > woodpecker;
+鴈 > wild\-goose;
+鳲 > turtledove;
+鳫 > wild\-goose;
+鲰 > small\-fish;
+鱐 > dried\-fish;
+鱇 > anglerfish;
+鰓 > fish\-gills;
+鰂 > cuttlefish;
+鯫 > small\-fish;
+鯗 > dried\-fish;
+鯁 > fish\-bones;
+鯀 > giant\-fish;
+鮿 > dried\-fish;
+鮟 > anglerfish;
+鮝 > dried\-fish;
+鮁 > the\-bonito;
+魷 > cuttlefish;
+魛 > the\-mullet;
+鬨 > boisterous;
+鬜 > to\-go\-bald;
+髣 > similar\-to;
+髁 > thigh\-bone;
+驁 > wild\-horse;
+騗 > to\-swindle;
+騋 > tall\-horse;
+騉 > fine\-horse;
+駰 > grey\-horse;
+馹 > post\-horse;
+饞 > gluttonous;
+餠 > rice\-cakes;
+頡 > fly\-upward;
+頇 > large\-face;
+鞡 > leg\-warmer;
+靰 > leg\-warmer;
+靝 > the\-heaven;
+靉 > cloudy\-sky;
+靆 > cloudy\-sky;
+靄 > cloudy\-sky;
+雰 > atmosphere;
+雙 > set\-of\-two;
+隮 > ti\-rise\-up;
+陻 > small\-hill;
+陑 > place\-name;
+阯 > foundation;
+闟 > peacefully;
+閽 > gatekeeper;
+閧 > boisterous;
+镚 > small\-coin;
+锬 > long\-spear;
+钷 > promethium;
+鐺 > frying\-pan;
+鐶 > metal\-ring;
+鐚 > soft\-steel;
+鐒 > lawrencium;
+鐀 > a\-cupboard;
+鏑 > dysprosium;
+鎪 > to\-engrave;
+鎛 > large\-bell;
+鍀 > technetium;
+錟 > long\-spear;
+錞 > instrument;
+錏 > soft\-steel;
+鉬 > molybdenum;
+鈊 > cadolinium;
+釓 > gadolinium;
+醡 > wine\-press;
+醝 > white\-wine;
+酅 > raise\-feet;
+郹 > place\-name;
+邐 > meandering;
+逬 > to\-scatter;
+輥 > turn\-round;
+輔 > cheek\-bone;
+軼 > rush\-forth;
+躩 > take\-quick;
+躛 > exaggerate;
+躗 > exaggerate;
+蹤 > footprints;
+踧 > uneasiness;
+踜 > to\-stumble;
+踖 > trample\-on;
+跥 > stamp\-feet;
+跐 > to\-trample;
+跁 > trample\-on;
+趦 > can''t\-move;
+貳 > number\-two;
+貮 > number\-two;
+豈 > how\?\-what\?;
+豀 > to\-quarrel;
+譭 > to\-slander;
+譛 > to\-slander;
+譖 > to\-slander;
+譒 > promulgate;
+謪 > to\-consult;
+諴 > in\-harmony;
+諟 > to\-examine;
+誼 > friendship;
+誩 > to\-quarrel;
+討 > to\-discuss;
+觃 > place\-name;
+覸 > steal\-look;
+覵 > steal\-look;
+襡 > short\-coat;
+裪 > the\-sleeve;
+袲 > place\-name;
+袠 > book\-cover;
+袟 > book\-cover;
+蠻 > barbarians;
+蟶 > razor\-clam;
+蟫 > silverfish;
+蟣 > louse\-eggs;
+蟁 > a\-mosquito;
+蛜 > wood\-louse;
+蘢 > tall\-grass;
+薧 > dried\-food;
+蕡 > hemp\-seeds;
+蓷 > motherwort;
+蒽 > anthracene;
+蒦 > to\-measure;
+蒖 > plant\-name;
+葯 > orris\-root;
+莚 > bamboo\-mat;
+荵 > polemonium;
+艬 > large\-ship;
+艑 > small\-boat;
+舴 > small\-boat;
+膓 > intestines;
+脪 > erysipelas;
+脩 > dried\-meat;
+脗 > coinciding;
+肸 > spread\-out;
+肦 > large\-head;
+聟 > son\-in\-law;
+翀 > fly\-upward;
+羆 > brown\-bear;
+绋 > large\-rope;
+繚 > wind\-round;
+繐 > fine\-cloth;
+縵 > plain\-silk;
+縟 > decorative;
+縇 > decoration;
+緲 > indistinct;
+緜 > cotton\-wad;
+緇 > black\-silk;
+綢 > silk\-cloth;
+絺 > fine\-linen;
+絢 > variegated;
+絛 > silk\-braid;
+絖 > fine\-silks;
+絓 > obstructed;
+紼 > large\-rope;
+紈 > white\-silk;
+粻 > provisions;
+粦 > phosphorus;
+簥 > large\-pipe;
+篹 > to\-collect;
+篲 > broomstick;
+篋 > ratton\-box;
+箠 > horse\-whip;
+箚 > brief\-note;
+筯 > chopsticks;
+竰 > centiliter;
+竡 > hectoliter;
+竓 > milliliter;
+窰 > brick\-kiln;
+穭 > wild\-grain;
+稆 > wild\-grain;
+禪 > meditation;
+禚 > place\-name;
+禍 > misfortune;
+祅 > calamities;
+磑 > stone\-mill;
+硨 > giant\-clam;
+硙 > stone\-mill;
+硃 > a\-red\-mole;
+矁 > to\-look\-at;
+睟 > clear\-eyed;
+眆 > indistinct;
+疕 > head\-sores;
+畓 > rice\-field;
+畁 > to\-give\-to;
+產 > give\-birth;
+玔 > green\-jade;
+玅 > mysterious;
+猘 > fierce\-dog;
+犛 > a\-black\-ox;
+牏 > privy\-hole;
+牋 > memorandum;
+爫 > radical\-87;
+燐 > phosphorus;
+熅 > smooth\-out;
+烕 > to\-destroy;
+灺 > candle\-end;
+灒 > to\-spatter;
+濾 > strain\-out;
+濙 > to\-revolve;
+濇 > astringent;
+濆 > river\-bank;
+澁 > astringent;
+澀 > astringent;
+溾 > light\-rain;
+渋 > astringent;
+涘 > river\-bank;
+泆 > licentious;
+殲 > annihilate;
+殱 > annihilate;
+歷 > take\-place;
+欃 > sandalwood;
+櫾 > the\-pomelo;
+櫫 > wooden\-peg;
+檼 > ridge\-pole;
+橴 > place\-name;
+樞 > door\-hinge;
+榼 > wine\-glass;
+榦 > tree\-trunk;
+楪 > small\-dish;
+椵 > pompelmous;
+椳 > the\-pivots;
+椌 > instrument;
+栴 > sandalwood;
+栛 > the\-lichee;
+栘 > fruit\-tree;
+柷 > instrument;
+杢 > woodworker;
+朌 > distribute;
+曬 > dry\-in\-sun;
+暘 > rising\-sun;
+旕 > place\-name;
+旀 > place\-name;
+斢 > to\-plunder;
+斒 > variegated;
+攤 > spread\-out;
+攆 > drive\-away;
+擪 > to\-tuck\-in;
+擥 > drive\-away;
+撿 > to\-pick\-up;
+撱 > to\-shorten;
+掱 > pickpocket;
+掎 > drag\-aside;
+挭 > fish\-bones;
+抅 > to\-collect;
+扡 > drag\-along;
+憸 > to\-flatter;
+憍 > be\-haughty;
+憀 > to\-rely\-on;
+愮 > distressed;
+愓 > profligate;
+惏 > avaricious;
+恛 > disordered;
+怲 > be\-anxious;
+忋 > to\-rely\-on;
+徧 > everywhere;
+彿 > resembling;
+弍 > number\-two;
+弌 > number\-one;
+弇 > cover\-over;
+廱 > harmonious;
+廀 > to\-conceal;
+庴 > place\-name;
+巼 > place\-name;
+巂 > place\-name;
+嵙 > place\-name;
+峴 > steep\-hill;
+峓 > place\-name;
+屢 > frequently;
+屄 > the\-vagina;
+専 > monopolize;
+宼 > tyrannical;
+孼 > misfortune;
+媟 > lust\-after;
+夅 > to\-descend;
+壩 > embankment;
+壎 > instrument;
+塲 > open\-space;
+塤 > instrument;
+堮 > a\-boundary;
+堃 > compliance;
+坒 > to\-compare;
+圦 > water\-gate;
+囌 > loquacious;
+嚵 > gluttonous;
+嚲 > read\-aloud;
+噸 > metric\-ton;
+噐 > receptacle;
+嘂 > cry\-loudly;
+嗭 > place\-name;
+喸 > place\-name;
+営 > encampment;
+唽 > to\-twitter;
+唟 > place\-name;
+呴 > breathe\-on;
+叆 > cloudy\-sky;
+卝 > hair\-style;
+劏 > to\-butcher;
+劄 > brief\-note;
+剳 > brief\-note;
+剄 > cut\-throat;
+刼 > to\-plunder;
+刄 > edged\-tool;
+凴 > to\-rely\-on;
+凱 > triumphant;
+凂 > to\-request;
+冘 > to\-move\-on;
+兟 > to\-advance;
+儈 > go\-between;
+僩 > courageous;
+偭 > transgress;
+偝 > not\-facing;
+倀 > bewildered;
+俻 > to\-prepare;
+伷 > descendent;
+仛 > young\-girl;
+亯 > to\-receive;
+丨 > number\-one;
+䶫 > fine\-teeth;
+䶉 > guinea\-pig;
+䵪 > pure\-black;
+䵝 > dark\-black;
+䵇 > to\-dislike;
+䳕 > the\-pigeon;
+䳌 > the\-cuckoo;
+䳀 > the\-cuckoo;
+䲫 > the\-pigeon;
+䲩 > the\-cuckoo;
+䲥 > the\-pigeon;
+䱝 > black\-carp;
+䱆 > small\-fish;
+䱅 > the\-mullet;
+䱄 > a\-flatfish;
+䰺 > a\-flatfish;
+䰬 > wild\-ghost;
+䰄 > short\-hair;
+䯔 > to\-incline;
+䯑 > the\-pelvis;
+䯌 > the\-sacrum;
+䯊 > the\-pelvis;
+䯈 > the\-pelvis;
+䮯 > fine\-horse;
+䮍 > curling\-up;
+䮌 > fine\-horse;
+䭸 > a\-stallion;
+䭣 > rice\-cakes;
+䭄 > gluttonous;
+䬷 > well\-feed\.;
+䬢 > gluttonous;
+䫥 > a\-wry\-neck;
+䫣 > a\-wry\-neck;
+䫞 > large\-head;
+䫓 > large\-head;
+䪺 > teethridge;
+䪠 > pulverized;
+䩱 > a\-scabbard;
+䩰 > a\-scabbard;
+䩢 > a\-scabbard;
+䩙 > a\-scabbard;
+䩃 > appearance;
+䩁 > thin\-hairs;
+䨽 > to\-resolve;
+䨩 > the\-spirit;
+䨠 > cloudy\-sky;
+䧿 > the\-magpie;
+䧲 > the\-magpie;
+䧱 > the\-pigeon;
+䧣 > to\-stop\-up;
+䦯 > very\-dense;
+䦧 > to\-quarrel;
+䦍 > to\-include;
+䥎 > instrument;
+䤾 > to\-contain;
+䤽 > farm\-tools;
+䤼 > metal\-wire;
+䤹 > to\-engrave;
+䤇 > white\-wine;
+䢥 > in\-harmony;
+䡧 > a\-carriage;
+䡤 > a\-carriage;
+䡚 > implements;
+䡎 > a\-windlass;
+䠸 > obsequious;
+䠶 > to\-project;
+䠪 > footprints;
+䠩 > to\-urinate;
+䠦 > to\-stumble;
+䠟 > to\-trip\-up;
+䠘 > one\-legged;
+䟼 > footprints;
+䟪 > repeatedly;
+䟡 > to\-trample;
+䟙 > to\-stagger;
+䟄 > in\-a\-hurry;
+䞅 > to\-give\-to;
+䝿 > honourabel;
+䝷 > securities;
+䝴 > to\-present;
+䝱 > to\-trouble;
+䝔 > the\-badger;
+䜛 > to\-slander;
+䜙 > not\-clever;
+䜒 > expression;
+䜑 > to\-slander;
+䜋 > to\-suspend;
+䛽 > loquacious;
+䛼 > to\-slander;
+䛲 > to\-deceive;
+䛮 > to\-destroy;
+䛫 > to\-deceive;
+䛩 > to\-slander;
+䛦 > litigation;
+䛖 > loquacious;
+䛕 > to\-flatter;
+䛍 > loquacious;
+䛅 > loquacious;
+䛄 > to\-console;
+䚹 > to\-prepare;
+䚰 > to\-prepare;
+䚓 > to\-observe;
+䚍 > to\-look\-at;
+䚇 > to\-observe;
+䙺 > to\-observe;
+䙚 > curling\-up;
+䘡 > the\-sleeve;
+䘕 > prostitute;
+䖳 > jelly\-fish;
+䕡 > compositae;
+䔘 > fish\-paste;
+䓵 > to\-blossom;
+䓤 > vegetation;
+䓆 > to\-cut\-the;
+䒢 > sweet\-flag;
+䑿 > small\-boat;
+䑰 > small\-boat;
+䑭 > war\-vessel;
+䑡 > small\-boat;
+䑍 > to\-swallow;
+䐢 > to\-wrinkle;
+䏭 > the\-cheeks;
+䏌 > to\-vibrate;
+䏋 > respectful;
+䎟 > to\-fawn\-on;
+䍵 > young\-goat;
+䍞 > a\-drag\-net;
+䍗 > to\-hang\-up;
+䍔 > a\-full\-net;
+䌀 > to\-arrange;
+䋶 > to\-stumble;
+䋱 > a\-wild\-yak;
+䊷 > black\-silk;
+䊩 > rice\-gravy;
+䉍 > to\-observe;
+䇎 > to\-startle;
+䇇 > the\-people;
+䆒 > to\-examine;
+䆋 > the\-autumn;
+䅔 > dead\-crops;
+䄟 > to\-worship;
+䄓 > to\-worship;
+䄑 > to\-worship;
+䄐 > to\-worship;
+䄆 > to\-worship;
+䄅 > to\-worship;
+䄃 > misfortune;
+䄁 > to\-worship;
+䂄 > to\-startle;
+䁺 > to\-look\-at;
+䁯 > to\-look\-at;
+䁞 > a\-province;
+䁘 > to\-look\-at;
+䁕 > to\-look\-at;
+䁓 > to\-look\-at;
+䁉 > to\-examine;
+䁈 > to\-examine;
+䁁 > strabismus;
+䀶 > strabismus;
+䀱 > to\-examine;
+䀯 > to\-look\-at;
+䀙 > to\-look\-at;
+䀆 > to\-exhaust;
+㾙 > erysipelas;
+㽨 > fragmented;
+㽣 > a\-frontier;
+㽘 > borderland;
+㼹 > eartenware;
+㺳 > black\-mica;
+㺓 > footprints;
+㺏 > the\-badger;
+㺅 > the\-monkey;
+㹈 > a\-black\-ox;
+㸨 > a\-big\-bull;
+㸌 > to\-twinkle;
+㷷 > thick\-soup;
+㷡 > to\-startle;
+㶭 > almost\-dry;
+㶜 > deep\-water;
+㵟 > light\-rain;
+㵀 > water\-flow;
+㴜 > everywhere;
+㳁 > water\-flow;
+㲯 > long\-hairy;
+㲞 > short\-hair;
+㲕 > variegated;
+㲌 > dog''s\-hair;
+㲉 > egg\-shells;
+㱸 > to\-exhaust;
+㱰 > to\-destroy;
+㱦 > to\-discard;
+㱤 > to\-exhaust;
+㱜 > pestilence;
+㱛 > to\-destroy;
+㱚 > to\-destroy;
+㰸 > to\-collect;
+㰑 > fruit\-tree;
+㯇 > a\-stockade;
+㭘 > a\-scabbard;
+㭉 > farm\-tools;
+㬱 > to\-replace;
+㬪 > to\-fold\-up;
+㬜 > to\-advance;
+㫤 > a\-long\-day;
+㪴 > to\-measure;
+㪜 > to\-measure;
+㪚 > to\-scatter;
+㪔 > to\-scatter;
+㪌 > to\-lead\-on;
+㪉 > to\-combine;
+㩹 > to\-pile\-on;
+㩸 > to\-pile\-on;
+㩪 > to\-collect;
+㩞 > to\-back\-up;
+㩝 > to\-compare;
+㩚 > to\-collect;
+㩖 > to\-back\-up;
+㩍 > to\-back\-up;
+㩀 > to\-receive;
+㨿 > to\-receive;
+㨳 > a\-cupboard;
+㨲 > to\-back\-up;
+㨯 > to\-enlarge;
+㨮 > to\-lift\-up;
+都 > metropolis;
+㨊 > to\-discard;
+笠 > bamboo\-hat;
+燐 > phosphorus;
+隆 > prosperous;
+六 > number\-six;
+醴 > sweet\-wine;
+㦶 > repeatedly;
+㦩 > melancholy;
+㦚 > melancholy;
+歷 > take\-place;
+濾 > strain\-out;
+㦂 > constantly;
+㥶 > to\-fill\-up;
+索 > large\-rope;
+㥣 > to\-benefit;
+㥚 > melancholy;
+屢 > frequently;
+㤷 > to\-debauch;
+㤩 > to\-respect;
+㤐 > disharmony;
+豈 > how\?\-what\?;
+㣽 > to\-forgive;
+㣅 > bow\-string;
+㣀 > to\-rebound;
+㢭 > a\-bow\-case;
+㢚 > a\-corridor;
+㢏 > a\-cesspool;
+㡥 > to\-curl\-up;
+㞠 > male\-organ;
+㞎 > body\-waste;
+㞆 > one\-legged;
+㝯 > to\-sojourn;
+㜅 > to\-fawn\-on;
+㛪 > to\-slander;
+㚠 > full\-grown;
+㚏 > to\-scatter;
+㙺 > cross\-road;
+㙴 > to\-conceal;
+㙲 > to\-stop\-up;
+㙉 > prosperous;
+㘿 > to\-fill\-up;
+㘻 > to\-stop\-up;
+㘧 > precedence;
+㘝 > to\-take\-in;
+㗬 > thick\-lips;
+㗫 > to\-whisper;
+㗢 > loquacious;
+㗋 > the\-throat;
+㗇 > to\-swallow;
+㗄 > to\-deceive;
+㖶 > to\-swallow;
+㖘 > to\-startle;
+㖆 > to\-condemn;
+㕫 > to\-imitate;
+㕍 > to\-heap\-up;
+㕆 > fine\-stone;
+㔷 > to\-secrete;
+㔘 > to\-degrade;
+㔓 > to\-stammer;
+㔌 > to\-cut\-off;
+㓺 > castration;
+㓮 > to\-engrave;
+㓞 > to\-engrave;
+㓂 > tyrannical;
+㒷 > to\-prosper;
+㒝 > to\-deceive;
+㒜 > respectful;
+㒊 > loquacious;
+㑜 > to\-engrave;
+㑂 > to\-imitate;
+㐤 > to\-implore;
+了 > to\-finish;
+子 > offspring;
+徹 > penetrate;
+要 > necessary;
+辱 > humiliate;
+着 > make\-move;
+成 > completed;
+督 > supervise;
+輯 > gather\-up;
+弥 > extensive;
+監 > supervise;
+美 > beautiful;
+廂 > side\-room;
+问 > ask\-about;
+庭 > courtyard;
+療 > be\-healed;
+痺 > paralysis;
+差 > to\-differ;
+难 > difficult;
+超 > jump\-over;
+異 > different;
+亲 > relatives;
+畫 > delineate;
+畜 > livestock;
+畑 > dry\-field;
+甘 > sweetness;
+认 > recognize;
+貴 > expensive;
+貝 > sea\-shell;
+院 > courtyard;
+达 > arrive\-at;
+众 > multitude;
+识 > recognize;
+倒 > fall\-over;
+玩 > play\-with;
+像 > a\-picture;
+宅 > residence;
+据 > to\-occupy;
+譯 > translate;
+譫 > talkative;
+識 > recognize;
+造 > construct;
+媼 > old\-woman;
+犠 > sacrifice;
+認 > recognize;
+牒 > documents;
+牌 > signboard;
+婆 > old\-woman;
+訳 > translate;
+爐 > fireplace;
+久 > long\-time;
+妾 > concubine;
+初 > beginning;
+親 > relatives;
+除 > eliminate;
+况 > condition;
+乱 > confusion;
+创 > establish;
+福 > happiness;
+辑 > gather\-up;
+假 > falsehood;
+穿 > penetrate;
+衆 > multitude;
+顾 > look\-back;
+蠶 > silkworms;
+丽 > beautiful;
+渐 > gradually;
+异 > different;
+瞧 > glance\-at;
+埒 > enclosure;
+埃 > fine\-dust;
+螢 > glow\-worm;
+退 > step\-back;
+蜻 > dragonfly;
+漸 > gradually;
+翻 > flip\-over;
+圏 > to\-circle;
+普 > universal;
+蛹 > chrysalis;
+临 > draw\-near;
+蛉 > dragonfly;
+协 > be\-united;
+麗 > beautiful;
+蚕 > silkworms;
+湯 > hot\-water;
+例 > precedent;
+贵 > expensive;
+洲 > continent;
+松 > pine\-tree;
+伙 > companion;
+毫 > fine\-hair;
+蕎 > buckwheat;
+输 > transport;
+況 > condition;
+监 > supervise;
+折 > break\-off;
+汰 > excessive;
+君 > sovereign;
+危 > dangerous;
+概 > generally;
+透 > penetrate;
+圈 > to\-circle;
+殊 > different;
+殆 > dangerous;
+厄 > adversity;
+汇 > concourse;
+厉 > whetstone;
+附 > adhere\-to;
+肩 > shoulders;
+魘 > nightmare;
+協 > be\-united;
+荒 > wasteland;
+鬱 > luxuriant;
+译 > translate;
+匠 > craftsman;
+欝 > luxuriant;
+伴 > companion;
+匂 > fragrance;
+勸 > recommend;
+勧 > recommend;
+飘 > whirlwind;
+艶 > beautiful;
+創 > establish;
+炮 > large\-gun;
+贝 > sea\-shell;
+郎 > gentleman;
+陪 > accompany;
+臨 > draw\-near;
+凝 > coagulate;
+冗 > excessive;
+劝 > recommend;
+剩 > leftovers;
+饒 > bountiful;
+疗 > be\-healed;
+汤 > hot\-water;
+彻 > penetrate;
+飜 > flip\-over;
+僚 > companion;
+肘 > the\-elbow;
+肖 > look\-like;
+昨 > yesterday;
+暂 > temporary;
+递 > hand\-over;
+顧 > look\-back;
+祥 > good\-luck;
+倹 > temperate;
+艰 > difficult;
+仗 > rely\-upon;
+柿 > persimmon;
+键 > door\-bolt;
+枯 > dried\-out;
+莱 > goosefoot;
+赔 > indemnify;
+逢 > come\-upon;
+睁 > open\-eyes;
+嘿 > be\-silent;
+仮 > falsehood;
+難 > difficult;
+贪 > be\-greedy;
+暫 > temporary;
+逝 > pass\-away;
+亂 > confusion;
+艾 > artemisia;
+芬 > fragrance;
+袍 > long\-gown;
+冤 > grievance;
+饶 > bountiful;
+炉 > fireplace;
+迪 > enlighten;
+嘉 > excellent;
+閾 > threshold;
+綾 > thin\-silk;
+艳 > beautiful;
+膀 > upper\-arm;
+牺 > sacrifice;
+顽 > obstinate;
+歉 > deficient;
+帅 > commander;
+憾 > to\-regret;
+劈 > cut\-apart;
+拂 > shake\-off;
+鍵 > door\-bolt;
+筈 > arrow\-end;
+拠 > to\-occupy;
+厢 > side\-room;
+熬 > cook\-down;
+払 > shake\-off;
+寓 > residence;
+稼 > sow\-grain;
+恍 > seemingly;
+绣 > embroider;
+懃 > courteous;
+衬 > underwear;
+慊 > to\-resent;
+膊 > shoulders;
+潭 > deep\-pool;
+旷 > extensive;
+硝 > saltpeter;
+達 > arrive\-at;
+逹 > arrive\-at;
+骤 > procedure;
+苹 > artemisia;
+忿 > get\-angry;
+坠 > fall\-down;
+蝶 > butterfly;
+焉 > thereupon;
+禀 > report\-to;
+挫 > push\-down;
+鳄 > alligator;
+谐 > harmonize;
+屎 > excrement;
+叨 > talkative;
+葱 > scallions;
+枣 > date\-tree;
+侣 > companion;
+谴 > reprimand;
+汹 > turbulent;
+瘫 > paralysis;
+蔚 > luxuriant;
+泻 > drain\-off;
+俭 > temperate;
+瀑 > waterfall;
+蝴 > butterfly;
+樊 > a\-railing;
+敛 > draw\-back;
+禧 > happiness;
+茵 > a\-cushion;
+棕 > hemp\-palm;
+娟 > beautiful;
+倩 > beautiful;
+辗 > turn\-over;
+恤 > show\-pity;
+侈 > luxurious;
+夥 > companion;
+沁 > soak\-into;
+槛 > threshold;
+匣 > small\-box;
+捎 > to\-select;
+痪 > paralysis;
+痞 > dyspepsia;
+睐 > squint\-at;
+垦 > cultivate;
+浒 > riverbank;
+葵 > sunflower;
+睫 > eyelashes;
+痊 > be\-healed;
+哺 > chew\-food;
+竣 > terminate;
+囔 > muttering;
+藐 > disregard;
+忒 > excessive;
+埠 > port\-city;
+荤 > meat\-diet;
+祺 > good\-luck;
+蜒 > millipede;
+菇 > mushrooms;
+豚 > small\-pig;
+沓 > connected;
+弩 > cross\-bow;
+殇 > die\-young;
+萤 > glow\-worm;
+栈 > warehouse;
+醺 > get\-drunk;
+蜈 > centipede;
+佼 > beautiful;
+蚣 > centipede;
+愫 > guileless;
+谙 > versed\-in;
+熹 > dim\-light;
+怂 > instigate;
+馥 > fragrance;
+恿 > instigate;
+遛 > take\-walk;
+痹 > paralysis;
+麾 > a\-pennant;
+媲 > marry\-off;
+蜓 > dragonfly;
+镁 > magnesium;
+椰 > palm\-tree;
+砺 > whetstone;
+痢 > dysentery;
+嗑 > eat\-seeds;
+蚯 > earthworm;
+蜚 > cockroach;
+蚓 > earthworm;
+魇 > nightmare;
+阆 > high\-door;
+妪 > old\-woman;
+擀 > roll\-flat;
+妍 > beautiful;
+姣 > beautiful;
+袤 > longitude;
+麝 > musk\-deer;
+荟 > luxuriant;
+佻 > frivolous;
+钾 > potassium;
+飙 > whirlwind;
+孑 > remaining;
+檄 > call\-arms;
+隍 > dry\-ditch;
+诿 > pass\-buck;
+绫 > thin\-silk;
+逄 > a\-surname;
+梏 > handcuffs;
+祉 > happiness;
+蟑 > cockroach;
+钺 > broad\-axe;
+荞 > buckwheat;
+柑 > tangerine;
+婵 > beautiful;
+娉 > beautiful;
+讧 > confusion;
+乜 > to\-squint;
+俦 > companion;
+燮 > harmonize;
+飚 > whirlwind;
+姹 > beautiful;
+愎 > obstinate;
+娲 > a\-goddess;
+忝 > disgraced;
+葳 > luxuriant;
+诮 > criticize;
+鳏 > huge\-fish;
+蜇 > jellyfish;
+劭 > encourage;
+兖 > establish;
+呶 > talkative;
+癣 > ringworms;
+绦 > silk\-cord;
+钸 > plutonium;
+馗 > cheekbone;
+锰 > manganese;
+侪 > a\-company;
+凫 > wild\-duck;
+痱 > heat\-rash;
+痈 > carbuncle;
+悌 > brotherly;
+冼 > \(surname\);
+鹧 > partridge;
+悒 > sorrowful;
+怃 > regretful;
+墒 > wet\-tilth;
+訾 > bad\-mouth;
+圮 > destroyed;
+鲈 > sea\-perch;
+钚 > plutonium;
+痿 > paralysis;
+攉 > to\-beckon;
+鲇 > sheatfish;
+膈 > diaphragm;
+犍 > a\-bullock;
+妤 > beautiful;
+锗 > germanium;
+鎏 > pure\-gold;
+镅 > americium;
+辂 > a\-chariot;
+媪 > old\-woman;
+孓 > beautiful;
+跸 > clear\-way;
+疔 > carbuncle;
+煳 > be\-burned;
+牾 > to\-oppose;
+昀 > sun\-light;
+乩 > to\-divine;
+羟 > hydroxide;
+荽 > coriander;
+谵 > talkative;
+绠 > well\-rope;
+哓 > garrulous;
+脬 > a\-bladder;
+戡 > subjugate;
+辇 > hand\-cart;
+阈 > threshold;
+鹚 > cormorant;
+镞 > arrowhead;
+菰 > wild\-rice;
+蠖 > inch\-worm;
+铫 > large\-hoe;
+氘 > deuterium;
+黾 > to\-strive;
+镧 > lanthanum;
+垡 > plow\-soil;
+炔 > acetylene;
+鸬 > cormorant;
+镱 > ytterbium;
+钕 > neodymium;
+忭 > delighted;
+莪 > artemisia;
+苴 > sackcloth;
+谳 > to\-decide;
+钯 > palladium;
+碲 > tellurium;
+璩 > jade\-ring;
+阃 > threshold;
+饫 > surfeited;
+撙 > economize;
+蓼 > smartweed;
+饔 > breakfast;
+锶 > strontium;
+硎 > whetstone;
+昃 > afternoon;
+唪 > to\-recite;
+蕈 > mushrooms;
+儇 > ingenious;
+鲴 > fish\-guts;
+鲅 > fish\-name;
+蠊 > cockroach;
+蚰 > millipede;
+铍 > beryllium;
+熳 > to\-spread;
+胍 > guanidine;
+迕 > obstinate;
+鲐 > globefish;
+酐 > anhydride;
+衄 > epistaxis;
+矧 > much\-more;
+悫 > sincerity;
+膦 > phosphine;
+缣 > fine\-silk;
+宄 > a\-traitor;
+阌 > wen\-xiang;
+哿 > excellent;
+阽 > dangerous;
+匦 > small\-box;
+酞 > phthalein;
+齳 > toothless;
+齭 > toothache;
+黽 > to\-strive;
+鸕 > cormorant;
+鷾 > a\-swallow;
+鷭 > water\-hen;
+鷧 > cormorant;
+鷥 > the\-egret;
+鷓 > partridge;
+鷏 > bird\-name;
+鷆 > bird\-name;
+鶿 > cormorant;
+鶡 > crossbill;
+鵷 > co\-worker;
+鳬 > wild\-duck;
+鳧 > wild\-duck;
+鳢 > snakehead;
+鲎 > king\-crab;
+鱸 > sea\-perch;
+鱷 > crocodile;
+鱧 > snakehead;
+鱟 > king\-crab;
+鱛 > fish\-name;
+鰥 > huge\-fish;
+鰐 > alligator;
+鯠 > to\-confer;
+鯝 > fish\-guts;
+鮦 > snakefish;
+鮎 > sheatfish;
+鮀 > snakefish;
+魲 > fish\-name;
+魞 > fish\-trap;
+鬰 > luxuriant;
+鬖 > wild\-hair;
+髧 > long\-hair;
+髗 > the\-skull;
+骭 > shin\-bone;
+驟 > procedure;
+騧 > tan\-horse;
+騐 > to\-verity;
+駸 > galloping;
+馝 > fragrance;
+馛 > fragrance;
+馂 > leftovers;
+饠 > rice\-cake;
+餺 > rice\-cake;
+餱 > dry\-goods;
+餕 > leftovers;
+餈 > rice\-cake;
+飫 > surfeited;
+飥 > rice\-cake;
+飈 > whirlwind;
+飇 > whirlwind;
+飆 > whirlwind;
+飄 > whirlwind;
+飃 > whirlwind;
+颷 > whirlwind;
+颴 > whirlwind;
+頯 > cheekbone;
+頑 > obstinate;
+頄 > cheekbone;
+靪 > to\-cobble;
+靧 > wash\-face;
+靀 > drizzling;
+霂 > fine\-rain;
+隃 > to\-exceed;
+閿 > wen\-xiang;
+閺 > look\-down;
+閬 > high\-door;
+閫 > threshold;
+锫 > berkelium;
+锆 > zirconium;
+钶 > columbium;
+钌 > ruthenium;
+钁 > a\-mattock;
+鑭 > lanthanum;
+鑪 > fireplace;
+鐿 > ytterbium;
+鐻 > drumstick;
+鏛 > to\-polish;
+鏐 > pure\-gold;
+鏃 > arrowhead;
+鎿 > neptunium;
+鎞 > plowshare;
+鎇 > americium;
+鎂 > magnesium;
+鍺 > germanium;
+鍶 > strontium;
+錳 > manganese;
+錇 > berkelium;
+鋯 > zirconium;
+鋍 > beryllium;
+銤 > americium;
+銚 > large\-hoe;
+鉞 > broad\-axe;
+鈽 > plutonium;
+鈹 > beryllium;
+鈩 > fireplace;
+鈌 > to\-pierce;
+鈈 > plutonium;
+鈀 > palladium;
+釹 > neodymium;
+釕 > ruthenium;
+郞 > gentleman;
+遞 > hand\-over;
+逓 > hand\-over;
+輾 > turn\-over;
+輸 > transport;
+輘 > a\-car\-rut;
+輅 > a\-chariot;
+軷 > sacrifice;
+軄 > to\-govern;
+躔 > follow\-in;
+蹕 > clear\-way;
+蹔 > temporary;
+跩 > to\-waddle;
+趝 > to\-pursue;
+赿 > late\-slow;
+賸 > leftovers;
+賠 > indemnify;
+豵 > young\-pig;
+豓 > beautiful;
+讞 > to\-decide;
+譴 > reprimand;
+譊 > wrangling;
+譅 > wriggling;
+諳 > versed\-in;
+諧 > harmonize;
+諝 > knowledge;
+諉 > pass\-buck;
+誚 > criticize;
+誖 > obstinate;
+訠 > much\-more;
+訌 > confusion;
+襯 > underwear;
+裲 > waistcoat;
+蟺 > earthworm;
+螌 > a\-striped;
+蜨 > butterfly;
+蛵 > dragonfly;
+蛍 > glow\-worm;
+蚿 > millipede;
+蘞 > wild\-vine;
+薈 > luxuriant;
+蕗 > leucacene;
+蔹 > wild\-vine;
+蔥 > scallions;
+蓆 > straw\-mat;
+蒢 > hedysarum;
+葷 > meat\-diet;
+葓 > vegetable;
+萊 > goosefoot;
+菻 > artemisia;
+荍 > buckwheat;
+苠 > multitude;
+苙 > a\-pig\-sty;
+芼 > to\-choose;
+艷 > beautiful;
+艱 > difficult;
+艣 > stern\-oar;
+艎 > fast\-boat;
+舝 > linch\-pin;
+舘 > a\-mansion;
+臯 > to\-praise;
+胦 > the\-navel;
+耥 > farm\-tool;
+羶 > rank\-odor;
+羥 > hydroxide;
+罁 > a\-cistern;
+繣 > obstinate;
+繡 > embroider;
+繍 > embroider;
+縑 > fine\-silk;
+縃 > fine\-silk;
+緥 > swaddling;
+綉 > embroider;
+綆 > well\-rope;
+糰 > rice\-ball;
+糝 > scattered;
+粿 > rice\-cake;
+籨 > trousseau;
+簃 > side\-room;
+竕 > deciliter;
+竏 > kiloliter;
+竍 > decaliter;
+竆 > exhausted;
+窴 > glance\-at;
+窋 > in\-a\-hole;
+穪 > to\-praise;
+稬 > glutinous;
+稟 > report\-to;
+禴 > sacrifice;
+禤 > \(surname\);
+禜 > sacrifice;
+禖 > sacrifice;
+禕 > excellent;
+禔 > happiness;
+祦 > happiness;
+祎 > excellent;
+礿 > sacrifice;
+礽 > blessings;
+礪 > whetstone;
+礞 > \(mineral\);
+碬 > whetstone;
+碆 > arrow\-tip;
+硻 > obstinate;
+砮 > arrow\-tip;
+砬 > big\-stone;
+睞 > squint\-at;
+眕 > restraint;
+盵 > \(surname\);
+盚 > \(surname\);
+癱 > paralysis;
+癰 > carbuncle;
+癬 > ringworms;
+瘭 > a\-whitlow;
+瘜 > a\-polypus;
+瘓 > paralysis;
+痡 > a\-disease;
+痐 > whirlwind;
+疶 > dysentery;
+畵 > delineate;
+畱 > to\-detain;
+畋 > till\-land;
+甴 > cockroach;
+甪 > \(surname\);
+甦 > be\-reborn;
+甅 > centigram;
+瓸 > hectogram;
+瓱 > milligram;
+璿 > fine\-jade;
+瑴 > twin\-gems;
+瑣 > fragments;
+獀 > to\-gather;
+狳 > armadillo;
+犰 > armadillo;
+犧 > sacrifice;
+燶 > to\-scorch;
+燬 > burn\-down;
+燊 > luxuriant;
+熿 > brilliant;
+熺 > dim\-light;
+炘 > brilliant;
+瀉 > drain\-off;
+濩 > pour\-down;
+濛 > drizzling;
+滸 > riverbank;
+湼 > black\-mud;
+湏 > wash\-face;
+湅 > boil\-silk;
+淩 > pass\-over;
+涷 > rainstorm;
+洑 > whirlpool;
+沺 > turbulent;
+殤 > die\-young;
+殈 > infertile;
+殀 > die\-young;
+歛 > draw\-back;
+欕 > tree\-name;
+檻 > threshold;
+橚 > tall\-tree;
+樳 > tall\-tree;
+樋 > tree\-name;
+槪 > generally;
+槩 > generally;
+榪 > headboard;
+椶 > palm\-tree;
+棧 > warehouse;
+棥 > a\-railing;
+棗 > date\-tree;
+棖 > door\-stop;
+梜 > chopstick;
+梍 > tree\-name;
+栱 > large\-peg;
+栭 > king\-post;
+栟 > hemp\-palm;
+栒 > cross\-bar;
+柹 > persimmon;
+柈 > container;
+枾 > persimmon;
+枹 > drumstick;
+枩 > pine\-tree;
+枨 > door\-stop;
+枙 > tree\-knot;
+杩 > headboard;
+朞 > full\-year;
+朓 > sacrifice;
+曱 > cockroach;
+曠 > extensive;
+暍 > sunstroke;
+昿 > extensive;
+昪 > delighted;
+旪 > united\-in;
+旛 > a\-pennant;
+旙 > a\-pennant;
+斂 > draw\-back;
+敋 > to\-strike;
+攋 > to\-clutch;
+攃 > preceding;
+擿 > to\-select;
+據 > to\-occupy;
+擐 > to\-put\-on;
+擉 > to\-pierce;
+摽 > throw\-out;
+摮 > to\-rattle;
+摛 > to\-spread;
+搙 > to\-handle;
+搕 > to\-strike;
+揦 > to\-clutch;
+揥 > scratcher;
+掙 > to\-strive;
+扻 > to\-strike;
+扤 > to\-thrust;
+戜 > to\-scrape;
+憯 > sorrowful;
+憮 > regretful;
+慽 > sorrowful;
+慼 > sorrowful;
+慤 > sincerity;
+慆 > excessive;
+愨 > sincerity;
+悽 > sorrowful;
+悁 > irritable;
+恑 > to\-change;
+恊 > be\-united;
+怺 > to\-endure;
+怞 > to\-grieve;
+怗 > observant;
+忀 > to\-stroll;
+彌 > extensive;
+廾 > two\-hands;
+廸 > enlighten;
+庉 > a\-village;
+幩 > trappings;
+幙 > a\-curtain;
+帥 > commander;
+嶎 > luxuriant;
+寽 > a\-handful;
+寘 > put\-aside;
+寗 > a\-surname;
+寖 > gradually;
+寃 > grievance;
+宂 > scattered;
+嬋 > beautiful;
+嫽 > play\-with;
+嫛 > compliant;
+嫗 > old\-woman;
+嫕 > compliant;
+媺 > beautiful;
+媬 > governess;
+媕 > undecided;
+媄 > beautiful;
+婥 > beautiful;
+姸 > beautiful;
+姱 > beautiful;
+姢 > beautiful;
+姞 > concubine;
+夻 > fish\-name;
+夌 > to\-dawdle;
+墾 > cultivate;
+墜 > fall\-down;
+塝 > flat\-bank;
+埓 > enclosure;
+垗 > sacrifice;
+圊 > rest\-room;
+嚜 > be\-silent;
+噁 > nastiness;
+嘵 > garrulous;
+嘑 > to\-menace;
+喦 > talkative;
+啎 > obstinate;
+哫 > to\-cajole;
+咵 > to\-revile;
+呧 > to\-rebuke;
+叅 > to\-counel;
+厲 > whetstone;
+厓 > precipice;
+匭 > small\-box;
+匘 > the\-brain;
+勯 > exhausted;
+勩 > work\-hard;
+剰 > leftovers;
+剙 > establish;
+剏 > establish;
+刱 > establish;
+刡 > to\-scrape;
+刔 > scoop\-out;
+刅 > to\-create;
+凷 > dirt\-clod;
+凙 > an\-icicle;
+兗 > establish;
+兇 > atrocious;
+儳 > obstinate;
+儭 > to\-assist;
+儕 > a\-company;
+儔 > companion;
+儉 > temperate;
+僝 > to\-revile;
+僇 > humiliate;
+傺 > to\-hinder;
+倢 > beautiful;
+侶 > companion;
+侎 > to\-soothe;
+佫 > \(surname\);
+伻 > messenger;
+伋 > deceptive;
+仈 > \(surname\);
+乆 > long\-time;
+䶳 > to\-lookup;
+䶑 > to\-sneeze;
+䶍 > to\-sneeze;
+䵯 > a\-village;
+䴡 > beautiful;
+䴏 > a\-swallow;
+䳺 > the\-quail;
+䲿 > cormorant;
+䲨 > wild\-swan;
+䱈 > fish\-pulp;
+䰥 > a\-cyclone;
+䰖 > fine\-hair;
+䰐 > long\-hair;
+䰈 > fine\-hair;
+䯽 > fine\-hair;
+䯷 > fine\-hair;
+䯦 > tiny\-bone;
+䮜 > to\-gallop;
+䭬 > to\-kowtow;
+䭫 > to\-kowtow;
+䭛 > tasteless;
+䭙 > exquisite;
+䭕 > tasteless;
+䭑 > incorrupt;
+䬶 > to\-strave;
+䬔 > hurricane;
+䬓 > hurricane;
+䫻 > a\-typhoon;
+䫺 > a\-typhoon;
+䫝 > fragrance;
+䫔 > a\-servant;
+䩦 > the\-reins;
+䨭 > the\-skies;
+䨐 > to\-spread;
+䨍 > deep\-pond;
+䧅 > dangerous;
+䦵 > incapable;
+䦬 > a\-vacancy;
+䦆 > a\-big\-hoe;
+䥽 > farm\-tool;
+䤤 > implement;
+䤏 > destroyed;
+䣸 > tasteless;
+䣩 > beautiful;
+䢱 > to\-slight;
+䢫 > to\-follow;
+䢟 > to\-travel;
+䢍 > to\-hasten;
+䢊 > to\-travel;
+䡔 > to\-hinder;
+䠲 > to\-listen;
+䠯 > to\-ascend;
+䠮 > to\-prance;
+䠆 > to\-kowtow;
+䟻 > bare\-feet;
+䟥 > luxuriant;
+䟞 > to\-falter;
+䟌 > diverging;
+䞾 > frivolous;
+䞼 > to\-escape;
+䞣 > to\-resist;
+䞗 > suspicion;
+䞒 > red\-color;
+䞐 > plentiful;
+䞍 > to\-bestow;
+䞉 > a\-surplus;
+䝾 > to\-bestow;
+䝼 > to\-bestow;
+䜭 > to\-dredge;
+䜟 > to\-verify;
+䜝 > uncertain;
+䜅 > to\-follow;
+䛻 > to\-induce;
+䛹 > to\-accuse;
+䛸 > garrulous;
+䛳 > to\-malign;
+䛬 > baby\-talk;
+䛪 > loquacity;
+䛞 > loquacity;
+䛚 > to\-praise;
+䛋 > to\-scheme;
+䛁 > to\-murmur;
+䚵 > to\-induce;
+䙸 > to\-obtain;
+䙷 > to\-obtain;
+䙯 > exquisite;
+䙧 > red\-color;
+䙘 > exquisite;
+䘼 > stockings;
+䘚 > a\-servant;
+䘗 > beautiful;
+䘑 > the\-pulse;
+䗙 > earthworm;
+䗓 > dragonfly;
+䗌 > dragonfly;
+䗅 > millipede;
+䖡 > millipede;
+䕹 > a\-curtain;
+䕲 > artemisia;
+䕩 > dry\-fruit;
+䕏 > artemisia;
+䔳 > chickling;
+䓰 > absinthin;
+䓗 > scallions;
+䓇 > luxuriant;
+䒰 > to\-follow;
+䒠 > luxuriant;
+䒊 > a\-patient;
+䑪 > a\-sailing;
+䑟 > luxuriant;
+䑓 > a\-lookout;
+䑑 > a\-servant;
+䑉 > excrement;
+䑀 > the\-navel;
+䐺 > delicious;
+䐡 > the\-navel;
+䐛 > to\-loosen;
+䐌 > luxuriant;
+䐆 > big\-belly;
+䏽 > meat\-pulp;
+䏬 > the\-spine;
+䏠 > meat\-soup;
+䏞 > the\-belly;
+䎡 > to\-shrink;
+䎃 > fine\-down;
+䍎 > a\-spindle;
+䌲 > light\-red;
+䌛 > entourage;
+䌖 > to\-gather;
+䌊 > entourage;
+䋠 > to\-repair;
+䊰 > foodstuff;
+䊜 > dumplings;
+䉽 > rice\-cake;
+䉼 > materials;
+䉘 > to\-pierce;
+䈵 > luxuriant;
+䇐 > to\-arrive;
+䆐 > a\-country;
+䅎 > different;
+䅅 > farm\-tool;
+䅃 > late\-crop;
+䄬 > to\-change;
+䄙 > happiness;
+䃩 > a\-mineral;
+䃕 > stoneware;
+䃓 > to\-punish;
+䃀 > millstone;
+䂾 > to\-polish;
+䂈 > to\-pierce;
+䂇 > to\-pierce;
+䁢 > exquisite;
+䁐 > deep\-eyed;
+䀰 > open\-eyes;
+䀬 > to\-glance;
+䀢 > to\-glance;
+䀡 > to\-spy\-on;
+䀐 > to\-regard;
+㿿 > wine\-cups;
+㿟 > he\-bright;
+㿛 > carbuncle;
+㿇 > paralysis;
+㾭 > to\-shrink;
+㾥 > bellyache;
+㾣 > to\-shiver;
+㾋 > dysentery;
+㽬 > to\-assist;
+㽞 > to\-remain;
+㽑 > delicious;
+㽉 > a\-big\-jar;
+㼺 > porcelain;
+㼚 > earthware;
+㻽 > fine\-jade;
+㻱 > to\-circle;
+㻌 > fine\-jade;
+㻉 > fine\-jade;
+㷼 > a\-swallow;
+㷎 > sunstroke;
+㵗 > turbulent;
+㵔 > not\-clear;
+㴁 > to\-add\-to;
+㳨 > to\-splash;
+㲵 > the\-skies;
+㲦 > long\-hair;
+㲤 > long\-hair;
+㲚 > long\-hair;
+㱘 > nightmare;
+㰖 > the\-olive;
+㯺 > a\-cabinet;
+㯯 > small\-cup;
+㯝 > paulownia;
+㯄 > luxuriant;
+㮙 > a\-pitfall;
+㮔 > vegetable;
+㮃 > farm\-tool;
+㭢 > mechanics;
+㬿 > moonlight;
+㬫 > clear\-sky;
+㬣 > luxuriant;
+㬞 > sunstroke;
+㪬 > to\-pierce;
+㪩 > to\-strike;
+㪤 > to\-finish;
+㪑 > to\-follow;
+㪎 > uncertain;
+㪋 > to\-resist;
+㪈 > to\-let\-go;
+㪅 > to\-change;
+㩱 > to\-select;
+㩧 > to\-strike;
+㩒 > to\-arrest;
+㩌 > to\-strike;
+㩇 > the\-thumb;
+㩄 > to\-strike;
+㨶 > to\-thresh;
+福 > happiness;
+祥 > good\-luck;
+㨚 > to\-select;
+㨍 > to\-defend;
+㨉 > to\-smooth;
+宅 > residence;
+㨄 > to\-pierce;
+㧾 > to\-strike;
+識 > recognize;
+臨 > draw\-near;
+㧰 > to\-strike;
+㧩 > to\-dispel;
+痢 > dysentery;
+㧦 > to\-strike;
+㧗 > to\-clatch;
+㧖 > to\-clutch;
+㧌 > to\-select;
+蓼 > smartweed;
+療 > be\-healed;
+僚 > officials;
+了 > to\-finish;
+㦻 > to\-put\-on;
+例 > precedent;
+㦴 > to\-arrest;
+㦯 > a\-certain;
+㦪 > complaint;
+㦝 > beautiful;
+㦖 > resentful;
+麗 > beautiful;
+礪 > whetstone;
+㥾 > mortified;
+㥳 > to\-survey;
+㥮 > obstinate;
+㥧 > to\-follow;
+㥦 > satisfied;
+異 > different;
+綾 > thin\-silk;
+㥖 > red\-color;
+㥎 > to\-resent;
+㥀 > exclusive;
+㤵 > copassion;
+爐 > fireplace;
+郎 > gentleman;
+㤥 > sorrowful;
+亂 > confusion;
+㤘 > obstinate;
+㤒 > knowledge;
+㤋 > confusion;
+㤇 > terrified;
+㤆 > nauseated;
+㣼 > to\-endure;
+㣺 > the\-heart;
+㣐 > to\-change;
+㢨 > to\-defend;
+㢡 > to\-exhort;
+㢀 > side\-room;
+㡿 > to\-accuse;
+㡼 > a\-granary;
+㡺 > a\-cottage;
+㡢 > a\-curtain;
+㡠 > a\-picture;
+㡗 > red\-paper;
+㠮 > to\-expand;
+㠘 > an\-island;
+㞵 > frivolous;
+㞣 > fragrance;
+㝎 > to\-decide;
+㜻 > to\-admire;
+㜰 > exquisite;
+㜨 > beautiful;
+㜞 > beautiful;
+㜘 > delicated;
+㜖 > exquisite;
+㜏 > last\-name;
+㜊 > exquisite;
+㜄 > last\-name;
+㛾 > not\-clean;
+㛺 > not\-clean;
+㛱 > exquisite;
+㛗 > frivolous;
+㛔 > exquisite;
+㚰 > an\-embryo;
+㚯 > last\-name;
+㚛 > corpulent;
+㚘 > a\-partner;
+㙵 > a\-lookout;
+㙜 > a\-lookout;
+㘣 > compasses;
+㗳 > forgetful;
+㗣 > to\-sneeze;
+㖼 > to\-scheme;
+㖦 > loquacity;
+㖂 > loquacity;
+㕻 > to\-refuse;
+㕹 > a\-buckler;
+㕗 > to\-induce;
+㕕 > deception;
+㕑 > a\-kitchen;
+㕏 > a\-kitchen;
+㕋 > rock\-land;
+㕈 > to\-linger;
+㔾 > last\-name;
+㔧 > to\-incite;
+㓯 > to\-divide;
+㓨 > to\-pierce;
+㓋 > to\-freeze;
+㓄 > to\-plough;
+㒗 > a\-servant;
+㒓 > to\-escape;
+㒋 > a\-servant;
+㒈 > dangerous;
+㒂 > to\-bestow;
+㑯 > last\-name;
+㑮 > last\-name;
+㑧 > perturbed;
+㑙 > frivolous;
+㑘 > a\-servant;
+㑎 > last\-name;
+㑄 > to\-insult;
+㐯 > to\-employ;
+㐭 > a\-granary;
+㐩 > wine\-cups;
+㐆 > to\-follow;
+念 > think\-of;
+会 > assemble;
+学 > learning;
+徒 > disciple;
+睦 > friendly;
+无 > negative;
+方 > a\-square;
+前 > in\-front;
+眉 > eyebrows;
+省 > province;
+直 > straight;
+廢 > abrogate;
+盛 > abundant;
+軒 > carriage;
+全 > maintain;
+廊 > corridor;
+廃 > abrogate;
+皺 > wrinkles;
+康 > peaceful;
+间 > midpoint;
+躊 > hesitate;
+躇 > hesitate;
+第 > sequence;
+幻 > illusion;
+癇 > epilepsy;
+山 > mountain;
+踟 > hesitate;
+巾 > kerchief;
+巧 > skillful;
+安 > peaceful;
+距 > distance;
+界 > boundary;
+任 > trust\-to;
+台 > platform;
+象 > elephant;
+题 > forehead;
+賢 > virtuous;
+資 > property;
+貼 > paste\-to;
+費 > expenses;
+貞 > virtuous;
+资 > property;
+履 > footwear;
+豐 > abundant;
+豊 > abundant;
+武 > military;
+琲 > necklace;
+尠 > very\-few;
+完 > complete;
+即 > promptly;
+寵 > favorite;
+语 > language;
+珍 > precious;
+富 > abundant;
+商 > commerce;
+宝 > treasure;
+千 > thousand;
+宜 > suitable;
+官 > official;
+站 > stand\-up;
+學 > learning;
+譬 > metaphor;
+香 > fragrant;
+似 > resemble;
+嬢 > troubled;
+虽 > although;
+集 > assemble;
+且 > moreover;
+调 > transfer;
+嫉 > jealousy;
+狃 > to\-covet;
+嫁 > to\-marry;
+調 > transfer;
+語 > language;
+媚 > charming;
+誘 > persuade;
+费 > expenses;
+誄 > eulogize;
+詳 > detailed;
+詰 > question;
+惊 > frighten;
+支 > disperse;
+突 > suddenly;
+評 > appraise;
+娠 > pregnant;
+句 > sentence;
+显 > manifest;
+增 > increase;
+料 > consider;
+著 > manifest;
+妊 > conceive;
+境 > boundary;
+续 > continue;
+無 > negative;
+裕 > abundant;
+炭 > charcoal;
+围 > surround;
+増 > increase;
+災 > calamity;
+塚 > cemetery;
+忽 > suddenly;
+瀕 > approach;
+维 > maintain;
+濺 > sprinkle;
+濯 > wash\-out;
+垣 > low\-wall;
+习 > practice;
+垂 > let\-down;
+坂 > hillside;
+祖 > ancestor;
+评 > appraise;
+圍 > surround;
+继 > continue;
+囲 > surround;
+优 > superior;
+滯 > block\-up;
+限 > boundary;
+溢 > overflow;
+温 > lukewarm;
+蚊 > mosquito;
+鹸 > alkaline;
+噪 > be\-noisy;
+嘲 > ridicule;
+減 > decrease;
+嘔 > to\-vomit;
+恩 > kindness;
+脱 > take\-off;
+涸 > dried\-up;
+喪 > mourning;
+奔 > run\-fast;
+涌 > surge\-up;
+禁 > restrict;
+浮 > to\-float;
+互 > mutually;
+洒 > sprinkle;
+搞 > to\-clear;
+朱 > cinnabar;
+域 > district;
+材 > material;
+额 > forehead;
+偷 > to\-steal;
+丹 > cinnabar;
+蓉 > hibiscus;
+抽 > draw\-out;
+仪 > ceremony;
+绍 > continue;
+丰 > abundant;
+卸 > lay\-down;
+忆 > remember;
+隔 > separate;
+减 > decrease;
+卓 > profound;
+灾 > calamity;
+聚 > assemble;
+损 > diminish;
+茄 > eggplant;
+勿 > must\-not;
+髭 > mustache;
+遥 > far\-away;
+櫛 > comb\-out;
+币 > currency;
+勉 > endeavor;
+骸 > skeleton;
+芳 > fragrant;
+努 > to\-exert;
+贴 > paste\-to;
+驚 > frighten;
+別 > separate;
+萍 > duckweed;
+樅 > fir\-tree;
+缩 > contract;
+臥 > lie\-down;
+慕 > long\-for;
+臣 > minister;
+挡 > obstruct;
+膜 > membrane;
+榛 > hazelnut;
+俊 > talented;
+枝 > branches;
+陷 > submerge;
+丧 > mourning;
+勒 > strangle;
+躺 > lie\-down;
+優 > superior;
+聊 > somewhat;
+飾 > decorate;
+儀 > ceremony;
+斜 > slanting;
+斐 > graceful;
+废 > abrogate;
+详 > detailed;
+搬 > transfer;
+梟 > owl\-thus;
+傘 > umbrella;
+顯 > manifest;
+亭 > pavilion;
+顕 > manifest;
+泛 > to\-drift;
+額 > forehead;
+題 > forehead;
+符 > i\.d\.\-tag;
+允 > to\-grant;
+菲 > fragrant;
+跨 > straddle;
+掩 > to\-cover;
+頃 > a\-moment;
+障 > separate;
+柴 > firewood;
+俯 > bow\-down;
+俥 > rickshaw;
+邻 > neighbor;
+習 > practice;
+驾 > to\-drive;
+侭 > complete;
+羞 > disgrace;
+裤 > trousers;
+估 > merchant;
+鞘 > scabbard;
+勃 > suddenly;
+咐 > instruct;
+恒 > constant;
+糟 > sediment;
+扮 > dress\-up;
+贤 > virtuous;
+饰 > decorate;
+曜 > glorious;
+雖 > although;
+仕 > official;
+卧 > lie\-down;
+仄 > slanting;
+隣 > neighbor;
+碍 > obstruct;
+暢 > smoothly;
+拦 > obstruct;
+押 > mortgage;
+戚 > relative;
+續 > continue;
+繼 > continue;
+穆 > majestic;
+疆 > boundary;
+陥 > submerge;
+皱 > wrinkles;
+畅 > smoothly;
+嘻 > mirthful;
+縮 > contract;
+並 > equal\-to;
+昔 > formerly;
+練 > practice;
+闘 > struggle;
+瞪 > stare\-at;
+斥 > to\-scold;
+剪 > scissors;
+姚 > handsome;
+掏 > take\-out;
+維 > maintain;
+诱 > persuade;
+続 > continue;
+継 > continue;
+間 > interval;
+紹 > continue;
+芙 > hibiscus;
+惹 > irritate;
+簿 > register;
+損 > diminish;
+芷 > angelica;
+磁 > magnetic;
+毅 > resolute;
+笥 > a\-hamper;
+拘 > restrain;
+伐 > cut\-down;
+竊 > secretly;
+銘 > inscribe;
+愉 > pleasant;
+窜 > run\-away;
+寨 > stockade;
+戻 > perverse;
+沪 > shanghai;
+釜 > cauldron;
+嗤 > laugh\-at;
+娱 > pleasure;
+嫣 > charming;
+宠 > favorite;
+憶 > remember;
+铭 > inscribe;
+馨 > fragrant;
+渊 > surge\-up;
+禄 > blessing;
+窃 > secretly;
+顷 > a\-moment;
+礙 > obstruct;
+愕 > startled;
+啡 > morphine;
+贞 > virtuous;
+囚 > prisoner;
+账 > accounts;
+遙 > far\-away;
+喻 > metaphor;
+瓷 > crockery;
+蓦 > suddenly;
+滞 > block\-up;
+贬 > decrease;
+伞 > umbrella;
+腥 > raw\-meat;
+滔 > overflow;
+溅 > sprinkle;
+咸 > together;
+疫 > epidemic;
+啪 > syllable;
+沛 > abundant;
+膨 > to\-swell;
+吱 > chirping;
+轩 > carriage;
+讥 > ridicule;
+菌 > mushroom;
+衍 > overflow;
+亨 > smoothly;
+琐 > trifling;
+绰 > graceful;
+苟 > careless;
+崛 > towering;
+凸 > protrude;
+嚣 > be\-noisy;
+琛 > treasure;
+嘀 > backbite;
+铐 > shackles;
+踌 > hesitate;
+谕 > proclaim;
+迸 > gush\-out;
+剔 > pick\-out;
+冀 > hope\-for;
+砚 > inkstone;
+捍 > ward\-off;
+臀 > buttocks;
+倔 > stubborn;
+奄 > ere\-long;
+侥 > be\-lucky;
+梵 > buddhist;
+褥 > mattress;
+晖 > sunshine;
+漾 > overflow;
+畴 > farmland;
+瞟 > glare\-at;
+瘸 > lameness;
+澎 > splatter;
+潦 > to\-flood;
+濒 > approach;
+偎 > cling\-to;
+蝎 > scorpion;
+簸 > winnower;
+瘟 > epidemic;
+庶 > numerous;
+惦 > think\-of;
+撂 > put\-down;
+诘 > question;
+晗 > pre\-dawn;
+蹊 > footpath;
+碱 > alkaline;
+阉 > castrate;
+淆 > confused;
+萦 > entangle;
+榆 > elm\-tree;
+猝 > abruptly;
+赓 > continue;
+枭 > owl\-thus;
+曦 > sunlight;
+钊 > endeavor;
+撅 > protrude;
+渤 > swelling;
+辘 > windlass;
+铝 > aluminum;
+捋 > to\-pluck;
+矗 > straight;
+虻 > horsefly;
+瞌 > doze\-off;
+亟 > urgently;
+搪 > ward\-off;
+徨 > doubtful;
+啐 > to\-taste;
+镯 > bracelet;
+刽 > amputate;
+藻 > splendid;
+惰 > indolent;
+燔 > to\-roast;
+涝 > inundate;
+偕 > together;
+骷 > skeleton;
+绛 > deep\-red;
+紊 > confused;
+邃 > profound;
+氯 > chlorine;
+坍 > collapse;
+妩 > charming;
+嘭 > syllable;
+忐 > timorous;
+殡 > encoffin;
+昵 > intimate;
+纭 > confused;
+俟 > wait\-for;
+桢 > hardwood;
+黏 > stick\-to;
+晏 > peaceful;
+隽 > superior;
+禺 > district;
+痘 > smallpox;
+槟 > betelnut;
+韭 > scallion;
+戾 > perverse;
+蔫 > withered;
+膂 > backbone;
+垠 > boundary;
+镬 > cauldron;
+胫 > shinbone;
+哐 > syllable;
+硷 > alkaline;
+臃 > swell\-up;
+岌 > perilous;
+犟 > stubborn;
+玎 > jingling;
+遢 > careless;
+噔 > syllable;
+滓 > sediment;
+隼 > aquiline;
+翦 > scissors;
+陲 > frontier;
+谶 > prophecy;
+偻 > humpback;
+铂 > platinum;
+纛 > a\-banner;
+懿 > virtuous;
+铬 > chromium;
+娆 > graceful;
+慵 > indolent;
+胰 > pancreas;
+覃 > reach\-to;
+遽 > suddenly;
+睾 > testicle;
+缜 > detailed;
+倨 > arrogant;
+讣 > obituary;
+钛 > titanium;
+浃 > saturate;
+旖 > romantic;
+缙 > red\-silk;
+嘣 > syllable;
+懋 > splendid;
+衾 > coverlet;
+宸 > imperial;
+佞 > flattery;
+蛔 > tapeworm;
+祜 > blessing;
+氅 > overcoat;
+氟 > fluorine;
+氰 > cyanogen;
+鲟 > sturgeon;
+婕 > handsome;
+硒 > selenium;
+舨 > a\-sampan;
+烊 > to\-smelt;
+萱 > day\-lily;
+疸 > jaundice;
+铊 > thallium;
+诂 > exegesis;
+雉 > pheasant;
+颢 > luminous;
+钏 > bracelet;
+栀 > gardenia;
+绔 > trousers;
+缵 > continue;
+溘 > abruptly;
+诒 > bequeath;
+氦 > fluorine;
+颟 > dawdling;
+痫 > epilepsy;
+苋 > amaranth;
+瀣 > sea\-mist;
+箝 > tweezers;
+蹰 > hesitate;
+赀 > property;
+楮 > mulberry;
+镊 > tweezers;
+遄 > to\-hurry;
+钒 > vanadium;
+苷 > licorice;
+勰 > peaceful;
+氽 > to\-float;
+钨 > tungsten;
+愦 > confused;
+埸 > a\-border;
+髀 > buttocks;
+嫒 > daughter;
+伛 > humpback;
+癜 > erythema;
+砦 > stockade;
+鸹 > the\-crow;
+曛 > twilight;
+槿 > hibiscus;
+骘 > stallion;
+庑 > corridor;
+坻 > an\-islet;
+觫 > to\-start;
+铵 > ammonium;
+氩 > argonium;
+嬖 > favorite;
+卣 > wine\-pot;
+锑 > antimony;
+醛 > aldehyde;
+钽 > tantalum;
+砼 > concrete;
+熘 > to\-steam;
+蓁 > abundant;
+诔 > eulogize;
+窨 > a\-cellar;
+栲 > mangrove;
+仳 > separate;
+鲣 > skipjack;
+瘿 > swelling;
+铷 > rubidium;
+铕 > europium;
+钋 > polonium;
+砑 > to\-grind;
+枞 > fir\-tree;
+洫 > to\-ditch;
+揞 > to\-cover;
+埚 > crucible;
+垤 > ant\-hill;
+卺 > winecups;
+嘏 > felicity;
+鲽 > flatfish;
+鲭 > mackerel;
+钪 > scandium;
+钫 > francium;
+钐 > samarium;
+祓 > exorcise;
+栳 > a\-basket;
+徼 > frontier;
+吲 > smile\-at;
+莰 > camphane;
+芴 > fluorene;
+仝 > together;
+赜 > abstruse;
+龓 > a\-halter;
+鼚 > drumming;
+麮 > porridge;
+鹼 > alkaline;
+鷩 > pheasant;
+鷊 > pheasant;
+鵫 > pheasant;
+鵙 > a\-shrike;
+鴰 > the\-crow;
+鳮 > chickens;
+鳇 > sturgeon;
+鲺 > cat\-fish;
+鱣 > sturgeon;
+鱘 > sturgeon;
+鰹 > skipjack;
+鰉 > sturgeon;
+鰈 > flatfish;
+鯺 > blowfish;
+鯸 > blowfish;
+鯖 > mackerel;
+鮐 > blowfish;
+魨 > blowfish;
+鬭 > struggle;
+鬬 > struggle;
+鬪 > struggle;
+鬦 > struggle;
+鬥 > struggle;
+鬋 > forelock;
+鬀 > to\-shave;
+髵 > whiskers;
+髎 > hip\-bone;
+驀 > suddenly;
+騭 > stallion;
+駾 > run\-away;
+駦 > to\-mount;
+駕 > to\-drive;
+馩 > aromatic;
+馟 > fragrant;
+馚 > aromatic;
+餬 > porridge;
+餫 > dumpling;
+餩 > hiccough;
+餟 > libation;
+餙 > to\-adorn;
+颱 > taiphoon;
+顥 > luminous;
+顢 > dawdling;
+頲 > straight;
+韮 > scallion;
+韡 > gorgeous;
+韠 > knee\-pad;
+靺 > stocking;
+霨 > clouding;
+雞 > chickens;
+雋 > superior;
+隲 > stallion;
+隩 > profound;
+阸 > distress;
+閹 > castrate;
+閒 > peaceful;
+镥 > lutetium;
+鑷 > tweezers;
+鑥 > lutetium;
+鑕 > tungsten;
+鑊 > cauldron;
+鐲 > bracelet;
+鐇 > vanadium;
+鎢 > tungsten;
+鎉 > thallium;
+鍩 > nobelium;
+鍚 > frontlet;
+錒 > actinium;
+鋁 > aluminum;
+銬 > shackles;
+銪 > europium;
+銨 > ammonium;
+銣 > rubidium;
+銍 > a\-sickle;
+鉻 > chromium;
+鉭 > tantalum;
+鉑 > platinum;
+鉈 > thallium;
+鉆 > treasure;
+鈪 > bracelet;
+鈧 > scandium;
+鈦 > titanium;
+鈁 > francium;
+釩 > vanadium;
+釧 > bracelet;
+釤 > samarium;
+釡 > cauldron;
+釙 > polonium;
+釗 > endeavor;
+醩 > sediment;
+醆 > wine\-cup;
+醃 > marinate;
+酲 > hangover;
+鄰 > neighbor;
+鄈 > slippers;
+邅 > hesitant;
+迻 > to\-shift;
+轊 > axle\-tip;
+轆 > windlass;
+輭 > flexible;
+輬 > a\-hearse;
+軝 > axle\-tip;
+躭 > to\-delay;
+躕 > hesitate;
+蹾 > to\-squat;
+蹧 > to\-spoil;
+踦 > the\-shin;
+跅 > careless;
+跂 > creeping;
+赬 > deep\-red;
+贒 > virtuous;
+賾 > abstruse;
+賬 > accounts;
+賡 > continue;
+貶 > decrease;
+貲 > property;
+豎 > vertical;
+讖 > prophecy;
+譹 > to\-shout;
+譜 > register;
+譔 > eulogize;
+譏 > ridicule;
+謿 > ridicule;
+謼 > to\-shout;
+諭 > proclaim;
+諆 > to\-cheat;
+詒 > bequeath;
+詋 > to\-curse;
+詊 > pleasing;
+詁 > exegesis;
+訃 > obituary;
+襶 > ignorant;
+襫 > raincoat;
+襏 > raincoat;
+褲 > trousers;
+褌 > trousers;
+裯 > coverlet;
+蠍 > scorpion;
+蝱 > horsefly;
+蝟 > hedgehog;
+蝏 > \(insect\);
+蜱 > \(insect\);
+蜖 > tapeworm;
+蚳 > ant\-eggs;
+蚘 > tapeworm;
+蚔 > ant\-eggs;
+薸 > duckweed;
+薆 > to\-cover;
+蕣 > hibiscus;
+蔉 > earth\-up;
+葖 > follicle;
+苐 > sequence;
+艩 > tholepin;
+艌 > to\-caulk;
+膵 > pancreas;
+脰 > the\-neck;
+脫 > take\-off;
+脛 > shinbone;
+胮 > to\-swell;
+肨 > to\-swell;
+肏 > copulate;
+耏 > whiskers;
+翬 > pheasant;
+翫 > careless;
+罇 > a\-goblet;
+缷 > lay\-down;
+纘 > continue;
+繖 > umbrella;
+縿 > streamer;
+縴 > tow\-line;
+縝 > detailed;
+縉 > red\-silk;
+縈 > entangle;
+緻 > delicate;
+綽 > graceful;
+綯 > to\-braid;
+綪 > dark\-red;
+絻 > mourning;
+絳 > deep\-red;
+絝 > trousers;
+紞 > a\-fringe;
+紜 > confused;
+籣 > bow\-case;
+簬 > \(bamboo\);
+箂 > \(bamboo\);
+竢 > wait\-for;
+竄 > run\-away;
+秏 > to\-waste;
+祿 > blessing;
+祼 > libation;
+磟 > mediocre;
+碏 > coloured;
+硯 > inkstone;
+砹 > astatine;
+砵 > syllable;
+矋 > to\-stare;
+瞓 > to\-sleep;
+睏 > be\-tired;
+睅 > big\-eyed;
+盬 > salt\-pit;
+盙 > a\-basket;
+皝 > luminous;
+癭 > swelling;
+癒 > get\-well;
+癎 > epilepsy;
+癈 > abrogate;
+癃 > weakness;
+癀 > jaundice;
+瘼 > sickness;
+瘶 > to\-cough;
+瘰 > scrofula;
+瘉 > get\-well;
+疇 > farmland;
+畺 > boundary;
+甯 > peaceful;
+甡 > abundant;
+瓩 > kilowatt;
+瓧 > decagram;
+璚 > splendid;
+琫 > ornament;
+珷 > \/2\-pr\-st;
+珤 > treasure;
+珎 > precious;
+珌 > ornament;
+獘 > collapse;
+犵 > resolute;
+犫 > protrude;
+犎 > the\-zebu;
+犇 > run\-fast;
+牳 > \(bovine\);
+熤 > \(person\);
+煐 > \(person\);
+焌 > to\-light;
+炤 > illumine;
+灑 > sprinkle;
+瀰 > overflow;
+瀡 > slippery;
+澾 > slippery;
+澱 > sediment;
+澇 > inundate;
+潗 > friendly;
+潎 > rippling;
+滬 > shanghai;
+滃 > swelling;
+溫 > lukewarm;
+湢 > bathroom;
+渕 > surge\-up;
+浹 > saturate;
+泐 > to\-write;
+沍 > freezing;
+氾 > overflow;
+氬 > argonium;
+氉 > restless;
+毾 > a\-coarse;
+毻 > to\-moult;
+毷 > restless;
+殽 > mixed\-up;
+殯 > encoffin;
+殗 > sickness;
+欛 > a\-handle;
+櫃 > cupboard;
+檿 > mulberry;
+檳 > betelnut;
+樚 > a\-pulley;
+楨 > hardwood;
+楡 > elm\-tree;
+椄 > to\-graft;
+梱 > doorsill;
+梔 > gardenia;
+柤 > hawthorn;
+柅 > flourish;
+枻 > long\-oar;
+曆 > calendar;
+暱 > intimate;
+暦 > calendar;
+暠 > daybreak;
+暉 > sunshine;
+晧 > daybreak;
+晛 > sunlight;
+昤 > sunshine;
+昡 > long\-day;
+旘 > a\-pennon;
+斾 > a\-pennon;
+斈 > learning;
+敪 > to\-weigh;
+敠 > to\-weigh;
+攩 > obstruct;
+攞 > to\-split;
+攔 > obstruct;
+擩 > to\-stain;
+擋 > obstruct;
+撏 > pull\-out;
+摷 > to\-knock;
+搵 > wipe\-off;
+搲 > to\-seize;
+搯 > take\-out;
+搋 > to\-thump;
+揾 > wipe\-off;
+揰 > poke\-out;
+揢 > to\-seize;
+揜 > cover\-up;
+揌 > to\-shake;
+掹 > to\-pluck;
+捦 > to\-seize;
+拑 > to\-clamp;
+扞 > ward\-off;
+扅 > gate\-bar;
+懕 > satiated;
+憪 > composed;
+憖 > cautious;
+憒 > confused;
+慭 > cautious;
+慫 > to\-alarm;
+慅 > agitated;
+慁 > dishonor;
+惽 > confused;
+惸 > troubled;
+惛 > confused;
+惔 > cheerful;
+惄 > long\-for;
+悤 > agitated;
+恝 > carefree;
+恔 > cheerful;
+恌 > to\-worry;
+恆 > constant;
+忮 > stubborn;
+徯 > wait\-for;
+彸 > restless;
+彊 > stubborn;
+弢 > bow\-case;
+廤 > to\-place;
+廡 > corridor;
+庻 > numerous;
+庬 > abundant;
+幬 > cover\-up;
+幣 > currency;
+帵 > remnants;
+帱 > cover\-up;
+嶭 > elevated;
+嶒 > towering;
+峿 > mountain;
+岊 > foothill;
+屼 > mountain;
+寶 > treasure;
+寳 > treasure;
+寚 > precious;
+宬 > archives;
+孃 > troubled;
+嬬 > mistress;
+嬡 > daughter;
+嬝 > delicate;
+嬈 > graceful;
+嫿 > tranquil;
+嫵 > charming;
+媮 > handsome;
+婾 > handsome;
+娯 > pleasure;
+娛 > pleasure;
+姦 > adultery;
+姙 > conceive;
+奡 > arrogant;
+堝 > crucible;
+埼 > headland;
+埀 > let\-down;
+坮 > platform;
+圥 > mushroom;
+囮 > inveigle;
+囂 > be\-noisy;
+嚻 > be\-noisy;
+嘥 > to\-waste;
+嗃 > to\-flute;
+喩 > metaphor;
+喓 > chirping;
+喌 > syllable;
+啽 > to\-speak;
+啇 > to\-stalk;
+唥 > a\-bundle;
+哢 > syllable;
+咺 > majestic;
+咜 > to\-scold;
+咇 > fragrant;
+呠 > to\-spurt;
+叒 > obedient;
+厵 > a\-spring;
+卽 > promptly;
+卼 > unsteady;
+卹 > sympathy;
+勔 > endeavor;
+勌 > to\-labor;
+劻 > flurried;
+劙 > a\-divide;
+劊 > amputate;
+剟 > to\-prick;
+刧 > disaster;
+凥 > to\-dwell;
+凅 > dried\-up;
+冴 > freezing;
+冱 > freezing;
+冨 > abundant;
+冝 > suitable;
+冇 > have\-not;
+兣 > decigram;
+兛 > kilogram;
+兙 > decagram;
+儩 > complete;
+僥 > be\-lucky;
+僃 > prepared;
+僂 > humpback;
+傴 > humpback;
+傢 > stubborn;
+傞 > unsteady;
+傌 > to\-curse;
+偸 > to\-steal;
+偲 > talented;
+偫 > wait\-for;
+偟 > agitated;
+俓 > straight;
+侫 > flattery;
+佴 > a\-second;
+佪 > hesitate;
+佋 > continue;
+佀 > resemble;
+伃 > handsome;
+亹 > progress;
+乵 > to\-enter;
+䶲 > the\-edge;
+䵲 > raw\-hemp;
+䵦 > to\-stain;
+䵚 > kaoliang;
+䵓 > the\-mole;
+䵉 > abutilon;
+䴻 > dry\-food;
+䴫 > antelope;
+䴚 > saltpond;
+䴗 > a\-shrike;
+䳻 > an\-eagle;
+䳧 > an\-eagle;
+䲖 > big\-fish;
+䲎 > to\-spoil;
+䰧 > sinister;
+䰟 > the\-soul;
+䯪 > big\-head;
+䯚 > the\-ribs;
+䯗 > buttocks;
+䯐 > shinbone;
+䯎 > shinbone;
+䯉 > to\-choke;
+䯂 > numerous;
+䭱 > a\-little;
+䬼 > satiated;
+䬹 > a\-sickle;
+䬉 > hot\-wind;
+䫷 > the\-jowl;
+䫛 > reckless;
+䫗 > reckless;
+䫃 > the\-lips;
+䪶 > the\-chin;
+䪩 > to\-chant;
+䪜 > a\-shield;
+䪑 > to\-stick;
+䪊 > a\-halter;
+䪅 > a\-quiver;
+䪁 > a\-halter;
+䩴 > a\-quiver;
+䩮 > a\-quiver;
+䩠 > a\-girdle;
+䩉 > the\-face;
+䩈 > a\-plumpy;
+䨼 > dyestuff;
+䧫 > a\-trench;
+䧕 > boundary;
+䧁 > to\-leave;
+䦥 > to\-learn;
+䥸 > a\-sickle;
+䥭 > evidence;
+䥥 > a\-sickle;
+䥌 > evidence;
+䥋 > to\-smelt;
+䤿 > to\-carve;
+䤶 > a\-hammer;
+䤳 > a\-mirrow;
+䤰 > to\-smelt;
+䤫 > a\-chisel;
+䤨 > to\-split;
+䤝 > bracelet;
+䤐 > to\-drink;
+䢭 > to\-cover;
+䢐 > to\-go\-to;
+䢅 > daybreak;
+䡭 > a\-hearse;
+䠾 > to\-dodge;
+䠹 > shinbone;
+䠬 > insomnia;
+䠞 > wrinkled;
+䠐 > to\-squat;
+䠃 > to\-squat;
+䠁 > to\-go\-up;
+䟸 > the\-calf;
+䟶 > to\-squat;
+䟴 > to\-shake;
+䟔 > to\-go\-to;
+䞸 > to\-reach;
+䞮 > to\-crawl;
+䞟 > to\-press;
+䞜 > to\-reach;
+䞔 > deep\-red;
+䞓 > deep\-red;
+䝨 > virtuous;
+䝂 > to\-erect;
+䜬 > a\-cavern;
+䜘 > to\-guard;
+䜐 > to\-libel;
+䜃 > to\-blame;
+䛤 > urgently;
+䛒 > to\-argue;
+䛇 > to\-laugh;
+䛆 > to\-curse;
+䚷 > to\-treat;
+䚯 > to\-quell;
+䚛 > regulate;
+䘫 > old\-rags;
+䘜 > a\-napkin;
+䘙 > to\-guard;
+䘘 > to\-drive;
+䘔 > to\-vomit;
+䘏 > sympathy;
+䘉 > silkworm;
+䘇 > mosquito;
+䗺 > creeping;
+䗞 > silkworm;
+䗝 > silkworm;
+䗘 > a\-weevil;
+䗈 > a\-gadfly;
+䗇 > the\-toad;
+䖻 > ephemera;
+䖦 > scorpion;
+䖤 > to\-creep;
+䖟 > a\-gadfly;
+䖛 > of\-tiger;
+䖏 > to\-dwell;
+䖌 > of\-tiger;
+䖊 > of\-tiger;
+䖀 > angelica;
+䕯 > duckweed;
+䕁 > suddenly;
+䔽 > to\-cover;
+䔐 > delicate;
+䓙 > slanting;
+䓕 > polygala;
+䓌 > polygala;
+䒳 > a\-flower;
+䒃 > to\-build;
+䑻 > covering;
+䑘 > to\-pound;
+䑃 > dim\-moon;
+䐒 > not\-fine;
+䏾 > to\-swell;
+䏺 > to\-swell;
+䏟 > fat\-meat;
+䏉 > to\-waver;
+䏈 > to\-unite;
+䎺 > to\-learn;
+䎲 > ear\-lobe;
+䎮 > to\-plant;
+䎫 > to\-plant;
+䎣 > a\-plough;
+䌷 > a\-thread;
+䌯 > a\-truban;
+䌭 > raw\-hemp;
+䌬 > straight;
+䌫 > a\-hawser;
+䌚 > wrinkles;
+䌃 > raw\-silk;
+䋡 > to\-relax;
+䋓 > wrinkled;
+䋒 > to\-relax;
+䋃 > stinging;
+䊸 > to\-twist;
+䊝 > to\-exile;
+䊁 > leavings;
+䉻 > red\-rice;
+䉱 > a\-cradle;
+䉮 > to\-plant;
+䉪 > to\-grind;
+䉒 > a\-winnow;
+䈶 > an\-arrow;
+䈫 > a\-hawser;
+䇱 > a\-hawser;
+䇌 > to\-stand;
+䆸 > spacious;
+䆄 > a\-bundle;
+䅲 > to\-plant;
+䅨 > fragrant;
+䅤 > to\-plant;
+䅐 > a\-bundle;
+䄀 > calamity;
+䃺 > to\-grind;
+䃑 > speckles;
+䃅 > dyestuff;
+䂻 > to\-block;
+䁥 > to\-blink;
+䁜 > big\-eyes;
+䁂 > big\-eyes;
+䀵 > to\-blink;
+䀈 > a\-vessel;
+㿢 > to\-shine;
+㿡 > a\-helmet;
+㿚 > sickness;
+㿈 > an\-ulcer;
+㿅 > ringworm;
+㾸 > a\-scabby;
+㾮 > jaundice;
+㾎 > sickness;
+㾍 > diseases;
+㾌 > ringworm;
+㾄 > to\-libel;
+㽻 > diseases;
+㽹 > to\-faint;
+㽐 > fragrant;
+㻄 > treasure;
+㺚 > an\-otter;
+㺇 > a\-warden;
+㹸 > the\-lion;
+㹕 > inferior;
+㸼 > the\-zebu;
+㸦 > mutually;
+㸟 > to\-cover;
+㸝 > a\-shovel;
+㸕 > to\-seize;
+㸉 > to\-adapt;
+㷆 > thriving;
+㷀 > solitary;
+㶼 > very\-hot;
+㶄 > to\-stain;
+㵭 > an\-islet;
+㵦 > slippery;
+㴶 > to\-water;
+㴳 > to\-smear;
+㴊 > an\-abyss;
+㴈 > sediment;
+㳫 > repeated;
+㳠 > slippery;
+㳒 > statutes;
+㲸 > dried\-up;
+㲷 > nitrogen;
+㲶 > chlorine;
+㲳 > to\-touch;
+㱿 > the\-husk;
+㱺 > the\-skin;
+㱲 > withered;
+㱢 > the\-dead;
+㱠 > withered;
+㱗 > a\-breath;
+㱅 > virtuous;
+㱃 > to\-drink;
+㰺 > to\-drink;
+㰹 > to\-laugh;
+㰭 > pleasure;
+㰧 > to\-drink;
+㰣 > to\-vomit;
+㰠 > to\-covet;
+㰝 > to\-cough;
+㯰 > to\-plant;
+㮭 > a\-casket;
+㮁 > gardenia;
+㭙 > a\-hammer;
+㭊 > to\-split;
+㬰 > a\-moment;
+㬧 > a\-collar;
+㬢 > sunshine;
+㬡 > sunshine;
+㬙 > sunshine;
+㬗 > sunshine;
+㬌 > sunshine;
+㫽 > darkness;
+㫻 > sunlight;
+㪿 > to\-break;
+㪡 > to\-quell;
+㪓 > disaster;
+㪐 > unstable;
+㪍 > suddenly;
+㪃 > to\-thump;
+㪂 > unstable;
+㪀 > to\-enter;
+㩿 > unstable;
+㩴 > to\-seize;
+㩨 > to\-crack;
+㩓 > to\-wound;
+㩁 > to\-knock;
+㨹 > to\-crack;
+㨱 > to\-shake;
+㨪 > to\-shake;
+㨠 > to\-smear;
+㨟 > to\-touch;
+㨔 > to\-shake;
+㨓 > to\-close;
+塚 > cemetery;
+㨑 > to\-count;
+㨈 > to\-crowd;
+㨁 > to\-throw;
+㧵 > to\-exact;
+隣 > neighbor;
+㧲 > to\-shake;
+㧱 > to\-bring;
+㧬 > to\-raise;
+履 > footwear;
+㧁 > to\-close;
+料 > consider;
+㦿 > a\-window;
+捻 > to\-twist;
+㦥 > talented;
+念 > think\-of;
+㦤 > virtuous;
+練 > practice;
+㦗 > diligent;
+曆 > calendar;
+㦉 > virtuous;
+㥰 > mournful;
+省 > province;
+㥪 > diligent;
+丹 > cinnabar;
+勒 > strangle;
+㥃 > mournful;
+㥁 > morality;
+祿 > blessing;
+㤲 > to\-think;
+㤮 > an\-error;
+廊 > corridor;
+㤦 > mournful;
+㤤 > mournful;
+㤏 > grievous;
+句 > sentence;
+㣰 > to\-shake;
+㣫 > the\-heel;
+㣞 > to\-walki;
+㣋 > cinnabar;
+㣄 > powerful;
+㢴 > the\-west;
+㢩 > to\-shoot;
+㢅 > a\-shield;
+㡳 > mountain;
+㡩 > a\-girdle;
+㡝 > a\-napkin;
+㡖 > to\-cover;
+㠹 > a\-turban;
+㠵 > a\-turban;
+㠊 > a\-rugged;
+㠉 > mountain;
+㠅 > to\-cover;
+㟑 > mountain;
+㞽 > mountain;
+㞷 > luxuiant;
+㞑 > the\-tail;
+㞉 > big\-foot;
+㞈 > big\-foot;
+㝲 > to\-sleep;
+㝮 > to\-exile;
+㝭 > to\-awake;
+㝘 > harmonoy;
+㝒 > to\-dwell;
+㝍 > to\-write;
+㝊 > to\-guide;
+㜶 > a\-couple;
+㜳 > peaceful;
+㛛 > pregnant;
+㚣 > handsome;
+㙢 > a\-trowel;
+㙙 > to\-smear;
+㙃 > a\-cavity;
+㘪 > to\-waste;
+㘠 > to\-close;
+㘙 > to\-groan;
+㘑 > to\-curse;
+㘀 > to\-sound;
+㗪 > mouthful;
+㗨 > to\-laugh;
+㗜 > to\-smell;
+㗛 > to\-laugh;
+㗓 > mouthful;
+㗉 > incisive;
+㖹 > to\-spurt;
+㖩 > not\-pure;
+㖓 > to\-shout;
+㖇 > the\-lips;
+㕼 > to\-brawl;
+㕛 > a\-friend;
+㕐 > inclined;
+㕊 > to\-slant;
+㔰 > constant;
+㔪 > to\-crawl;
+㔠 > industry;
+㔞 > vigorous;
+㓶 > to\-carve;
+㓚 > a\-sickle;
+㓓 > thin\-ice;
+㒹 > to\-upset;
+㑺 > superior;
+㑴 > to\-usurp;
+㑰 > distress;
+㑍 > inferior;
+㐜 > an\-enemy;
+迷 > bewitch;
+述 > narrate;
+迥 > distant;
+中 > central;
+志 > purpose;
+迎 > receive;
+忌 > jealous;
+和 > harmony;
+辯 > dispute;
+去 > go\-away;
+对 > correct;
+瞠 > look\-at;
+律 > statute;
+役 > service;
+眺 > look\-at;
+張 > stretch;
+已 > already;
+弘 > enlarge;
+引 > to\-pull;
+弔 > condole;
+較 > compare;
+意 > thought;
+进 > advance;
+盡 > exhaust;
+廉 > upright;
+情 > feeling;
+皰 > pimples;
+庖 > kitchen;
+躓 > stumble;
+庄 > village;
+并 > combine;
+蹠 > step\-on;
+癖 > craving;
+幕 > curtain;
+代 > replace;
+師 > teacher;
+总 > collect;
+踏 > step\-on;
+师 > teacher;
+痴 > foolish;
+华 > flowery;
+张 > stretch;
+症 > disease;
+病 > illness;
+疾 > illness;
+反 > reverse;
+合 > combine;
+疎 > neglect;
+受 > receive;
+务 > affairs;
+接 > receive;
+崩 > rupture;
+特 > special;
+服 > clothes;
+賽 > compete;
+賑 > relieve;
+科 > section;
+远 > distant;
+豫 > relaxed;
+联 > connect;
+保 > protect;
+尽 > exhaust;
+革 > leather;
+對 > correct;
+尊 > respect;
+品 > article;
+尉 > officer;
+士 > scholar;
+量 > measure;
+対 > correct;
+程 > journey;
+審 > examine;
+察 > examine;
+极 > extreme;
+令 > command;
+未 > not\-yet;
+持 > sustain;
+历 > history;
+宣 > declare;
+史 > history;
+宗 > lineage;
+议 > consult;
+率 > to\-lead;
+委 > appoint;
+護 > protect;
+議 > consult;
+兵 > soldier;
+孔 > opening;
+争 > dispute;
+究 > examine;
+謹 > prudent;
+视 > look\-at;
+講 > explain;
+格 > pattern;
+諸 > several;
+讲 > explain;
+諦 > careful;
+怕 > to\-fear;
+狡 > cunning;
+曾 > already;
+准 > approve;
+段 > section;
+精 > essence;
+竟 > finally;
+誠 > sincere;
+詮 > explain;
+整 > orderly;
+婉 > amiable;
+备 > prepare;
+另 > another;
+陈 > exhibit;
+故 > ancient;
+訛 > swindle;
+託 > entrust;
+衣 > clothes;
+訊 > inquire;
+爆 > crackle;
+批 > comment;
+送 > see\-off;
+愿 > sincere;
+奇 > strange;
+燕 > swallow;
+燈 > lantern;
+覽 > look\-at;
+妬 > jealous;
+游 > to\-swim;
+覧 > look\-at;
+份 > portion;
+敢 > to\-dare;
+視 > look\-at;
+妖 > strange;
+煽 > stir\-up;
+考 > examine;
+村 > village;
+朝 > dynasty;
+育 > produce;
+护 > protect;
+图 > diagram;
+刘 > surname;
+夕 > evening;
+承 > inherit;
+裳 > clothes;
+乡 > country;
+裁 > cut\-out;
+既 > already;
+演 > perform;
+怪 > strange;
+袂 > sleeves;
+采 > collect;
+衰 > decline;
+赛 > compete;
+灯 > lantern;
+较 > compare;
+衡 > measure;
+塞 > stop\-up;
+景 > scenery;
+蠢 > wriggle;
+依 > rely\-on;
+瀝 > trickle;
+胜 > victory;
+濡 > immerse;
+濟 > to\-help;
+蟋 > cricket;
+蟀 > cricket;
+型 > pattern;
+圖 > diagram;
+漆 > varnish;
+漁 > to\-fish;
+図 > diagram;
+散 > scatter;
+蛆 > maggots;
+曲 > crooked;
+溶 > to\-melt;
+厂 > factory;
+肯 > willing;
+抓 > scratch;
+虫 > insects;
+湧 > well\-up;
+范 > surname;
+靠 > lean\-on;
+測 > measure;
+授 > give\-to;
+渇 > thirsty;
+扬 > scatter;
+淺 > shallow;
+淫 > obscene;
+邓 > surname;
+鷄 > chicken;
+嗇 > miserly;
+抱 > embrace;
+预 > prepare;
+睛 > eyeball;
+括 > include;
+降 > descend;
+鶏 > chicken;
+讯 > inquire;
+赵 > surname;
+浅 > shallow;
+私 > private;
+蔑 > disdain;
+审 > examine;
+泡 > bubbles;
+闹 > quarrel;
+敬 > respect;
+醒 > wake\-up;
+沌 > chaotic;
+暴 > violent;
+鲁 > foolish;
+抢 > plunder;
+呑 > swallow;
+篇 > chapter;
+鱈 > codfish;
+呂 > surname;
+拥 > embrace;
+吊 > condole;
+诸 > various;
+華 > flowery;
+叭 > trumpet;
+测 > measure;
+阅 > examine;
+叙 > express;
+猛 > violent;
+厭 > dislike;
+厨 > kitchen;
+雅 > elegant;
+雷 > thunder;
+魯 > foolish;
+鸡 > chicken;
+诚 > sincere;
+竞 > contend;
+操 > conduct;
+卒 > soldier;
+诺 > promise;
+匆 > hastily;
+欅 > zelkova;
+苺 > berries;
+勝 > victory;
+凭 > lean\-on;
+務 > affairs;
+苗 > sprouts;
+碰 > collide;
+苑 > pasture;
+仿 > imitate;
+機 > machine;
+栏 > railing;
+騙 > swindle;
+刈 > cut\-off;
+狠 > vicious;
+映 > project;
+截 > cut\-off;
+忠 > loyalty;
+扎 > pull\-up;
+腹 > stomach;
+極 > extreme;
+舒 > open\-up;
+骗 > swindle;
+凶 > culprit;
+慰 > comfort;
+餘 > surplus;
+撒 > release;
+愁 > anxiety;
+斤 > a\-catty;
+僑 > sojourn;
+扶 > support;
+毁 > destroy;
+辩 > dispute;
+胃 > stomach;
+械 > weapons;
+蒋 > surname;
+備 > prepare;
+违 > disobey;
+丢 > discard;
+肆 > indulge;
+傻 > foolish;
+绕 > entwine;
+聳 > urge\-on;
+涂 > surname;
+舰 > warship;
+恼 > angered;
+辣 > peppery;
+倚 > rely\-on;
+預 > prepare;
+旋 > revolve;
+倉 > granary;
+辽 > distant;
+罚 > penalty;
+拾 > pick\-up;
+恢 > restore;
+翁 > old\-man;
+羽 > feather;
+抖 > tremble;
+览 > look\-at;
+侯 > marquis;
+惑 > confuse;
+併 > combine;
+罰 > penalty;
+雕 > engrave;
+厌 > dislike;
+寿 > old\-age;
+跌 > stumble;
+锦 > brocade;
+杏 > apricot;
+黎 > surname;
+慌 > nervous;
+屠 > butcher;
+柏 > cypress;
+霍 > quickly;
+陶 > pottery;
+摄 > take\-in;
+旨 > purpose;
+闯 > rush\-in;
+冯 > surname;
+扰 > disturb;
+雀 > sparrow;
+娜 > elegant;
+暮 > evening;
+阁 > chamber;
+卢 > cottage;
+吞 > swallow;
+柜 > cabinet;
+暇 > leisure;
+愧 > ashamed;
+晶 > crystal;
+繞 > entwine;
+晝 > daytime;
+筋 > muscles;
+總 > collect;
+昼 > daytime;
+咨 > inquire;
+撑 > prop\-up;
+逆 > disobey;
+填 > fill\-in;
+旺 > prosper;
+緬 > distant;
+谨 > prudent;
+渴 > thirsty;
+疏 > neglect;
+耗 > consume;
+総 > collect;
+閲 > examine;
+钦 > respect;
+閣 > chamber;
+晋 > advance;
+悦 > pleased;
+斑 > mottled;
+践 > trample;
+贾 > surname;
+渔 > to\-fish;
+蔡 > surname;
+惶 > fearful;
+簾 > a\-blind;
+贩 > peddler;
+戈 > halberd;
+鐐 > fetters;
+揚 > scatter;
+虹 > rainbow;
+範 > pattern;
+寡 > widowed;
+吕 > surname;
+郊 > suburbs;
+徽 > a\-badge;
+谭 > surname;
+捨 > discard;
+鲍 > abalone;
+仓 > granary;
+錦 > brocade;
+笄 > hairpin;
+沾 > moisten;
+競 > contend;
+俞 > surname;
+瞒 > deceive;
+竃 > furnace;
+侨 > sojourn;
+恳 > sincere;
+抒 > express;
+姜 > surname;
+扱 > collect;
+稽 > examine;
+裔 > progeny;
+睹 > look\-at;
+匪 > bandits;
+潘 > surname;
+憑 > lean\-on;
+榜 > placard;
+枉 > useless;
+缅 > distant;
+慥 > sincere;
+骇 > terrify;
+慇 > careful;
+笨 > foolish;
+耸 > urge\-on;
+踩 > step\-on;
+郷 > country;
+惱 > angered;
+悸 > fearful;
+撰 > compose;
+惭 > ashamed;
+垃 > garbage;
+驼 > a\-camel;
+遠 > distant;
+違 > disobey;
+遑 > leisure;
+圾 > garbage;
+豹 > leopard;
+缴 > deliver;
+哨 > whistle;
+進 > advance;
+嚼 > prattle;
+昧 > obscure;
+拢 > collect;
+旱 > drought;
+诡 > deceive;
+搅 > disturb;
+聂 > whisper;
+莽 > thicket;
+馀 > surplus;
+怡 > harmony;
+厮 > servant;
+茨 > caltrop;
+粘 > viscous;
+摧 > destroy;
+朽 > decayed;
+娴 > elegant;
+焕 > shining;
+豁 > open\-up;
+詹 > surname;
+熄 > put\-out;
+逾 > go\-over;
+妒 > jealous;
+邱 > surname;
+醋 > vinegar;
+斌 > refined;
+寇 > bandits;
+屯 > village;
+恕 > forgive;
+沦 > be\-lost;
+岱 > daishan;
+撇 > discard;
+讳 > conceal;
+淌 > trickle;
+岔 > diverge;
+倏 > hastily;
+霓 > rainbow;
+垒 > rampart;
+邵 > surname;
+兢 > fearful;
+赦 > forgive;
+彦 > elegant;
+翘 > turn\-up;
+挚 > sincere;
+郝 > surname;
+觑 > peep\-at;
+拎 > to\-haul;
+噜 > verbose;
+阐 > explain;
+扒 > scratch;
+凹 > concave;
+撩 > lift\-up;
+挠 > scratch;
+崽 > a\-child;
+廖 > surname;
+矫 > correct;
+涅 > blacken;
+橱 > cabinet;
+哆 > tremble;
+蹬 > step\-on;
+恃 > rely\-on;
+拗 > to\-pull;
+剿 > destroy;
+簌 > falling;
+诛 > execute;
+掳 > capture;
+幌 > curtain;
+窒 > stop\-up;
+雍 > harmony;
+馅 > filling;
+瞿 > surname;
+硅 > silicon;
+瘩 > pimples;
+渥 > moisten;
+邢 > surname;
+蹋 > step\-on;
+抨 > impeach;
+擎 > lift\-up;
+憨 > foolish;
+肾 > kidneys;
+锭 > spindle;
+窦 > surname;
+谛 > careful;
+恙 > illness;
+茬 > harvest;
+蛐 > cricket;
+镣 > fetters;
+沥 > trickle;
+谤 > slander;
+钳 > pincers;
+睽 > staring;
+阱 > pitfall;
+姗 > slander;
+跤 > stumble;
+汀 > sandbar;
+秤 > balance;
+晾 > air\-dry;
+霹 > thunder;
+跚 > stagger;
+踹 > trample;
+莞 > smiling;
+鸥 > seagull;
+葆 > reserve;
+氢 > ammonia;
+帧 > picture;
+泯 > destroy;
+匡 > correct;
+佯 > pretend;
+暧 > obscure;
+烬 > cinders;
+蚌 > oysters;
+贻 > give\-to;
+谆 > patient;
+哝 > whisper;
+裴 > surname;
+诽 > slander;
+癞 > leprosy;
+啄 > to\-peck;
+拄 > lean\-on;
+翎 > feather;
+燎 > to\-burn;
+迳 > pass\-by;
+斡 > revolve;
+恸 > sadness;
+啬 > miserly;
+忑 > fearful;
+咂 > to\-suck;
+盹 > to\-doze;
+俾 > so\-that;
+簪 > hairpin;
+赈 > relieve;
+诠 > explain;
+谚 > proverb;
+掸 > to\-dust;
+匮 > to\-lack;
+幡 > pennant;
+讹 > swindle;
+囱 > chimney;
+崂 > laoshan;
+娄 > surname;
+叟 > old\-man;
+蝌 > tadpole;
+蚪 > tadpole;
+氨 > ammonia;
+铀 > uranium;
+挛 > tangled;
+诋 > slander;
+绯 > scarlet;
+攸 > distant;
+鸨 > bustard;
+蜗 > a\-snail;
+谩 > deceive;
+恫 > in\-pain;
+谀 > flatter;
+踮 > tip\-toe;
+馊 > spoiled;
+睇 > look\-at;
+钙 > calcium;
+捱 > put\-off;
+蒿 > mugwort;
+酶 > enzymes;
+涣 > scatter;
+杳 > obscure;
+衢 > highway;
+赡 > support;
+磺 > sulphur;
+蹶 > stumble;
+谄 > flatter;
+蹩 > to\-limp;
+翟 > surname;
+浣 > to\-wash;
+疹 > measles;
+窈 > obscure;
+幔 > curtain;
+靥 > dimples;
+掇 > collect;
+愆 > a\-fault;
+鸵 > ostrich;
+祗 > respect;
+佘 > surname;
+窕 > slender;
+迩 > be\-near;
+佰 > hundred;
+邰 > surname;
+邝 > surname;
+钹 > cymbals;
+伉 > compare;
+靼 > tartars;
+煲 > to\-heat;
+獐 > roebuck;
+佝 > rickets;
+蓟 > circium;
+黜 > dismiss;
+谲 > cunning;
+摈 > exclude;
+飓 > cyclone;
+谗 > slander;
+胱 > bladder;
+饽 > ferrule;
+诳 > deceive;
+馏 > distill;
+苯 > benzene;
+淼 > a\-flood;
+桎 > fetters;
+罄 > exhaust;
+荀 > surname;
+铱 > iridium;
+葩 > flowers;
+逡 > retreat;
+逶 > winding;
+宥 > forgive;
+萸 > dogwood;
+挝 > to\-beat;
+钿 > hairpin;
+熵 > entropy;
+煨 > to\-stew;
+砒 > arsenic;
+晁 > morning;
+谘 > consult;
+凇 > dewdrop;
+噘 > pouting;
+唣 > chatter;
+骠 > charger;
+撷 > pick\-up;
+怄 > annoyed;
+锂 > lithium;
+疥 > scabies;
+稗 > darnels;
+洮 > cleanse;
+悭 > miserly;
+酮 > ketones;
+腚 > buttock;
+逑 > collect;
+腱 > tendons;
+馔 > to\-feed;
+搠 > to\-daub;
+茱 > dogwood;
+砷 > arsenic;
+酡 > flushed;
+疴 > illness;
+戗 > support;
+呒 > unclear;
+谌 > sincere;
+痧 > cholera;
+恂 > careful;
+笤 > a\-broom;
+韫 > secrete;
+怛 > grieved;
+怙 > rely\-on;
+皴 > chapped;
+衤 > clothes;
+廪 > granary;
+庾 > granary;
+挢 > correct;
+睢 > gaze\-at;
+塬 > plateau;
+螯 > nippers;
+獒 > mastiff;
+沆 > a\-ferry;
+帔 > a\-skirt;
+擢 > pull\-up;
+薅 > to\-weed;
+莴 > lettuce;
+羼 > confuse;
+捭 > to\-open;
+葭 > bulrush;
+倥 > boorish;
+溴 > bromine;
+廛 > a\-store;
+揸 > handful;
+仵 > similar;
+髋 > hipbone;
+肱 > forearm;
+厶 > private;
+蚍 > mussels;
+哙 > swallow;
+镓 > gallium;
+铋 > bismuth;
+胝 > callous;
+悃 > sincere;
+矽 > silicon;
+赍 > present;
+翥 > to\-soar;
+蜞 > grapsus;
+蛩 > cricket;
+谠 > counsel;
+鳕 > codfish;
+跆 > trample;
+矬 > a\-dwarf;
+歙 > to\-suck;
+顼 > grieved;
+溲 > urinate;
+蕻 > budding;
+刳 > cut\-out;
+鹈 > pelican;
+铙 > cymbals;
+椟 > cabinet;
+镉 > cadmium;
+嫘 > surname;
+謇 > stutter;
+憷 > painful;
+摭 > pick\-up;
+谡 > rise\-up;
+褊 > cramped;
+鹕 > pelican;
+镲 > cymbals;
+钍 > thorium;
+氪 > krypton;
+迮 > to\-rise;
+忉 > grieved;
+蓍 > milfoil;
+踬 > stumble;
+醯 > vinegar;
+螽 > katydid;
+荑 > sprouts;
+郓 > surname;
+剀 > sharpen;
+蹀 > to\-skip;
+锎 > caesium;
+钇 > yttrium;
+氚 > tritium;
+犸 > mammoth;
+菸 > to\-fade;
+厍 > surname;
+鲱 > herring;
+貊 > leopard;
+躞 > to\-walk;
+蛴 > maggots;
+锾 > measure;
+铌 > niobium;
+畀 > to\-give;
+遘 > to\-meet;
+泷 > raining;
+蒡 > burdock;
+诼 > slander;
+髌 > kneecap;
+鳙 > bighead;
+鳘 > codfish;
+鳆 > abalone;
+絷 > confine;
+箦 > bed\-mat;
+瘘 > fistula;
+鸸 > swallow;
+镄 > fermium;
+恧 > ashamed;
+祆 > ormazda;
+嫠 > a\-widow;
+搴 > extract;
+廒 > granary;
+郄 > surname;
+诜 > inquire;
+僦 > to\-heir;
+龡 > to\-blow;
+齰 > to\-bite;
+齩 > to\-chew;
+齚 > to\-chew;
+鼷 > a\-mouse;
+麞 > roebuck;
+鸑 > a\-large;
+鷟 > phoenix;
+鷗 > seagull;
+鷖 > seagull;
+鶺 > wagtail;
+鶹 > the\-owl;
+鶦 > pelican;
+鶘 > pelican;
+鵮 > to\-peck;
+鵜 > pelican;
+鴯 > swallow;
+鴫 > a\-snipe;
+鴕 > ostrich;
+鴎 > seagull;
+鴇 > bustard;
+鳦 > swallow;
+鲚 > anchovy;
+鱭 > anchovy;
+鱨 > codfish;
+鱄 > anchovy;
+鰽 > herring;
+鰵 > codfish;
+鰮 > sardine;
+鰛 > sardine;
+鰒 > abalone;
+鯷 > anchovy;
+鯡 > herring;
+鮑 > abalone;
+魜 > mermaid;
+鬧 > quarrel;
+髖 > hipbone;
+髕 > kneecap;
+骫 > be\-bent;
+骉 > running;
+驙 > \(horse\);
+驒 > dappled;
+驃 > charger;
+騨 > dappled;
+駭 > terrify;
+駝 > a\-camel;
+駋 > \(horse\);
+馮 > surname;
+饐 > spoiled;
+餿 > spoiled;
+餾 > distill;
+餵 > to\-feed;
+餲 > spoiled;
+餑 > ferrule;
+飤 > to\-feed;
+颶 > cyclone;
+颳 > to\-blow;
+颫 > a\-storm;
+頙 > correct;
+頊 > grieved;
+韣 > bow\-bag;
+韅 > harness;
+靨 > dimples;
+霅 > thunder;
+雟 > sparrow;
+雚 > a\-heron;
+陾 > in\-file;
+陳 > exhibit;
+陞 > promote;
+阧 > sloping;
+闡 > explain;
+闖 > rush\-in;
+閱 > examine;
+閙 > quarrel;
+閈 > village;
+镦 > ferrule;
+铽 > terbium;
+铼 > rhenium;
+铪 > hafnium;
+铥 > thulium;
+铑 > rhodium;
+钬 > holmium;
+鐨 > fermium;
+鐓 > ferrule;
+鐃 > cymbals;
+鎵 > gallium;
+鎘 > cadmium;
+鍰 > measure;
+錸 > rhenium;
+錶 > a\-watch;
+錠 > spindle;
+錀 > \(metal\);
+鋱 > terbium;
+鋰 > lithium;
+鋕 > engrave;
+鋊 > a\-poker;
+鋂 > bit\-cup;
+銩 > thulium;
+銥 > iridium;
+鉿 > hafnium;
+鉷 > trigger;
+鉲 > cadmium;
+鉗 > pincers;
+鉍 > bismuth;
+鈿 > hairpin;
+鈾 > uranium;
+鈸 > cymbals;
+鈮 > niobium;
+鈥 > holmium;
+鈣 > calcium;
+釸 > silicon;
+釷 > thorium;
+釱 > fetters;
+釔 > yttrium;
+酇 > collect;
+鄺 > surname;
+鄧 > surname;
+鄕 > country;
+鄉 > country;
+鄆 > surname;
+郉 > surname;
+邨 > village;
+邇 > be\-near;
+遼 > distant;
+遶 > entwine;
+遯 > deceive;
+逺 > distant;
+逷 > distant;
+逕 > pass\-by;
+逈 > distant;
+迴 > revolve;
+轷 > surname;
+轒 > chariot;
+輽 > vehicle;
+軲 > a\-wheel;
+軘 > war\-car;
+躦 > to\-jump;
+躠 > to\-limp;
+躝 > to\-pass;
+躘 > to\-walk;
+躄 > cripple;
+躂 > stumble;
+蹡 > to\-limp;
+踫 > collide;
+踐 > trample;
+踈 > neglect;
+跴 > step\-on;
+跬 > to\-step;
+跕 > shuffle;
+趷 > to\-jolt;
+趙 > surname;
+趒 > to\-jump;
+贍 > support;
+贇 > affable;
+贃 > to\-earn;
+賫 > present;
+賝 > preious;
+賈 > surname;
+貽 > give\-to;
+販 > peddler;
+豗 > clamour;
+谫 > shallow;
+诹 > consult;
+讟 > slander;
+讜 > counsel;
+讒 > slander;
+讌 > a\-feast;
+讇 > flatter;
+譾 > shallow;
+譸 > deceive;
+譚 > surname;
+譎 > cunning;
+譈 > dislike;
+謾 > deceive;
+謷 > slander;
+謳 > to\-sing;
+謭 > shallow;
+謟 > flatter;
+謗 > slander;
+謖 > rise\-up;
+謌 > slander;
+謆 > beguile;
+諾 > promise;
+諺 > proverb;
+諶 > sincere;
+諱 > conceal;
+諮 > consult;
+諛 > flatter;
+諚 > command;
+諑 > slander;
+諏 > consult;
+諄 > patient;
+諂 > flatter;
+誹 > slander;
+誑 > deceive;
+誅 > execute;
+詾 > noisily;
+詵 > inquire;
+詭 > deceive;
+詫 > to\-brag;
+詆 > slander;
+詅 > to\-sell;
+註 > explain;
+訬 > clamour;
+訩 > noisily;
+訦 > sincere;
+訢 > pleased;
+訑 > deceive;
+觡 > antlers;
+覷 > peep\-at;
+覥 > ashamed;
+覜 > mission;
+襜 > flutter;
+襃 > commend;
+褽 > cushion;
+褔 > complex;
+裵 > surname;
+裒 > collect;
+袽 > clothes;
+袺 > hold\-up;
+袪 > sleeves;
+衵 > chemise;
+蠐 > maggots;
+螮 > rainbow;
+蝸 > a\-snail;
+蝃 > rainbow;
+蝀 > rainbow;
+蜫 > insects;
+蚫 > abalone;
+蚑 > tip\-toe;
+虆 > entwine;
+蘊 > collect;
+藴 > collect;
+藙 > dogwood;
+薽 > \(grass\);
+薶 > to\-bury;
+薓 > ginseng;
+薐 > spinach;
+薊 > circium;
+蕝 > handful;
+蔿 > surname;
+蔣 > surname;
+蔘 > ginseng;
+蓌 > pretend;
+蒐 > collect;
+葠 > ginseng;
+葊 > cottage;
+萵 > lettuce;
+菪 > henbane;
+菧 > stibene;
+莊 > village;
+莀 > to\-farm;
+荘 > village;
+茷 > flutter;
+茠 > to\-weed;
+苽 > bulrush;
+苅 > cut\-off;
+艦 > warship;
+舓 > to\-lick;
+臝 > be\-bare;
+腖 > peptone;
+腎 > kidneys;
+脝 > distend;
+聶 > whisper;
+聯 > connect;
+聮 > connect;
+聫 > connect;
+聨 > connect;
+耉 > old\-age;
+耈 > old\-age;
+翹 > turn\-up;
+翪 > flutter;
+羐 > to\-lead;
+罸 > penalty;
+罖 > kwukyel;
+缻 > pottery;
+缲 > to\-reel;
+繳 > deliver;
+縶 > confine;
+縂 > collect;
+緋 > scarlet;
+緁 > to\-join;
+絪 > matting;
+粂 > surname;
+籛 > surname;
+籑 > to\-feed;
+簀 > bed\-mat;
+笰 > curtain;
+笓 > to\-comb;
+竸 > contend;
+竒 > strange;
+竈 > furnace;
+竇 > surname;
+窀 > to\-bury;
+穫 > harvest;
+稊 > darnels;
+稇 > to\-bind;
+秐 > to\-weed;
+禢 > surname;
+禂 > to\-pray;
+礵 > arsenic;
+磇 > arsenic;
+碃 > \(stone\);
+矱 > measure;
+矯 > correct;
+矟 > ''\-lance;
+瞯 > to\-peep;
+瞞 > deceive;
+眽 > to\-gaze;
+眴 > dazzled;
+眎 > look\-at;
+盧 > cottage;
+癩 > leprosy;
+癨 > quickly;
+瘻 > fistula;
+瘝 > illness;
+畐 > to\-fill;
+甔 > big\-jar;
+瓛 > scaptre;
+璺 > a\-crack;
+璊 > reddish;
+琱 > engrave;
+玧 > reddish;
+獹 > a\-hound;
+獚 > spaniel;
+狉 > fox\-cub;
+犆 > special;
+牮 > prop\-up;
+燼 > cinders;
+熻 > to\-heat;
+熸 > put\-out;
+熯 > by\-fire;
+煻 > to\-warm;
+煥 > shining;
+烉 > shining;
+灴 > to\-bake;
+瀹 > to\-boil;
+瀧 > raining;
+澣 > cleanse;
+澐 > billows;
+潬 > a\-rapid;
+溦 > drizzle;
+渼 > ripples;
+渧 > to\-drop;
+渙 > scatter;
+淪 > be\-lost;
+涶 > to\-spit;
+涒 > meander;
+洸 > sparkle;
+沄 > billows;
+汋 > to\-pour;
+氼 > to\-sink;
+氕 > protium;
+毚 > cunning;
+毀 > destroy;
+歺 > vicious;
+歜 > furious;
+欽 > respect;
+欄 > railing;
+櫥 > cabinet;
+櫝 > cabinet;
+橆 > without;
+榢 > a\-frame;
+椗 > \(plant\);
+棸 > surname;
+栢 > cypress;
+枼 > a\-table;
+枓 > capital;
+杸 > to\-kill;
+杶 > varnish;
+朾 > to\-bump;
+朰 > kwukyel;
+朢 > look\-at;
+朊 > protein;
+曽 > already;
+曖 > obscure;
+晉 > advance;
+旣 > already;
+斿 > to\-swim;
+斮 > cut\-off;
+斠 > measure;
+斁 > dislike;
+敾 > to\-rule;
+敯 > to\-defy;
+敭 > scatter;
+敜 > fill\-up;
+敘 > express;
+敍 > express;
+攷 > examine;
+攪 > disturb;
+攣 > tangled;
+攝 > take\-in;
+攏 > collect;
+擾 > disturb;
+擸 > to\-hold;
+擷 > pick\-up;
+擯 > exclude;
+擝 > to\-pull;
+擄 > capture;
+擁 > embrace;
+撾 > to\-beat;
+撹 > disturb;
+撴 > to\-jolt;
+撣 > to\-dust;
+撢 > to\-dust;
+撟 > correct;
+撓 > scratch;
+撐 > prop\-up;
+摯 > sincere;
+摠 > general;
+摂 > take\-in;
+搷 > to\-beat;
+搶 > plunder;
+掽 > collide;
+掯 > oppress;
+挍 > collate;
+拫 > to\-pull;
+抈 > to\-bend;
+扽 > to\-move;
+戧 > support;
+懰 > be\-glad;
+懫 > enraged;
+懤 > grieved;
+懛 > alarmed;
+懇 > sincere;
+懆 > anxious;
+懅 > bashful;
+憃 > foolish;
+慳 > miserly;
+慪 > annoyed;
+慟 > sadness;
+慚 > ashamed;
+慙 > ashamed;
+愐 > bashful;
+愊 > sincere;
+惷 > wriggle;
+惣 > overall;
+惖 > respect;
+惓 > careful;
+惇 > be\-kind;
+悩 > angered;
+悜 > obscure;
+悐 > respect;
+悅 > pleased;
+恠 > strange;
+恉 > meaning;
+怱 > hastily;
+彧 > refined;
+彥 > elegant;
+彚 > collect;
+彙 > collect;
+彆 > awkward;
+廩 > granary;
+廠 > factory;
+廝 > servant;
+廚 > kitchen;
+廌 > unicorn;
+廋 > conceal;
+庤 > prepare;
+幷 > combine;
+幫 > to\-help;
+幨 > curtain;
+幀 > picture;
+帿 > marquis;
+帲 > shelter;
+帡 > shelter;
+巿 > revolve;
+巇 > a\-crack;
+嶗 > laoshan;
+崋 > flowery;
+尟 > surname;
+寪 > surname;
+孅 > slender;
+嫻 > elegant;
+嫺 > refined;
+媿 > ashamed;
+媻 > to\-move;
+媞 > at\-ease;
+婬 > obscene;
+婁 > surname;
+姍 > slander;
+奛 > opening;
+夣 > a\-dream;
+壽 > old\-age;
+壭 > kwukyel;
+壝 > a\-mound;
+壘 > rampart;
+壔 > a\-mound;
+塽 > plateau;
+塡 > fill\-in;
+塓 > plaster;
+塁 > rampart;
+堄 > parapet;
+埗 > a\-wharf;
+圗 > diagram;
+圕 > library;
+圂 > pig\-sty;
+囪 > chimney;
+嚥 > swallow;
+嚕 > verbose;
+嚊 > to\-pant;
+噲 > swallow;
+噥 > whisper;
+嘸 > unclear;
+嗹 > chatter;
+喾 > emperor;
+喥 > a\-place;
+啱 > correct;
+唞 > to\-gasp;
+唅 > a\-sound;
+咾 > a\-noise;
+咊 > harmony;
+咉 > an\-echo;
+呿 > to\-yawn;
+呬 > to\-rest;
+呫 > whisper;
+呌 > to\-call;
+叜 > old\-man;
+厼 > kwukyel;
+厰 > factory;
+厫 > granary;
+厙 > surname;
+卲 > eminent;
+卪 > kwukyel;
+卆 > soldier;
+匽 > to\-hide;
+匱 > to\-lack;
+匧 > a\-trunk;
+匋 > pottery;
+匊 > handful;
+勦 > destroy;
+劐 > destroy;
+劉 > surname;
+剴 > sharpen;
+凊 > surname;
+冦 > bandits;
+兯 > kwukyel;
+兪 > surname;
+兂 > hairpin;
+儶 > valiant;
+儦 > milling;
+儤 > on\-duty;
+儓 > servant;
+儍 > foolish;
+僯 > ashamed;
+僤 > sincere;
+僎 > collect;
+傼 > surname;
+傚 > imitate;
+傔 > servant;
+傁 > old\-man;
+偹 > prepare;
+倣 > imitate;
+倝 > sunrise;
+倐 > hastily;
+倂 > combine;
+侴 > surname;
+侇 > a\-class;
+侅 > to\-give;
+佉 > surname;
+伈 > nervous;
+伀 > excited;
+仒 > kwukyel;
+亽 > kwukyel;
+亷 > upright;
+亶 > sincere;
+亪 > kwukyel;
+亗 > harvest;
+乿 > to\-cure;
+乬 > to\-hang;
+乥 > kwukyel;
+乛 > kwukyel;
+乊 > kwukyel;
+乀 > stretch;
+丷 > kwukyel;
+丟 > discard;
+丏 > parapet;
+丆 > kwukyel;
+䶴 > to\-blow;
+䶩 > to\-gnaw;
+䶧 > to\-gnaw;
+䶢 > to\-gnaw;
+䶠 > to\-gnaw;
+䶞 > to\-gnaw;
+䶗 > to\-bite;
+䵼 > to\-boil;
+䴧 > venison;
+䴒 > wagtail;
+䳭 > wagtail;
+䲬 > chicken;
+䲣 > to\-fish;
+䲝 > pomfret;
+䲔 > a\-whale;
+䱷 > to\-fish;
+䱉 > the\-eel;
+䱇 > the\-eel;
+䰯 > to\-fear;
+䰞 > to\-cook;
+䰁 > to\-meet;
+䮼 > piebald;
+䮻 > to\-pray;
+䮦 > untamed;
+䭮 > jewelry;
+䭤 > to\-chew;
+䭠 > a\-snack;
+䬡 > to\-soar;
+䬝 > a\-storm;
+䬖 > a\-storm;
+䬎 > hot\-air;
+䫸 > to\-blow;
+䫘 > healthy;
+䫒 > disease;
+䪣 > smashed;
+䪢 > smashed;
+䩳 > tanning;
+䩟 > leather;
+䩔 > the\-hem;
+䨨 > thunder;
+䨞 > to\-rain;
+䨛 > to\-rain;
+䨚 > to\-rain;
+䨓 > thunder;
+䨂 > a\-chick;
+䧰 > a\-mound;
+䧟 > to\-skin;
+䧍 > a\-crack;
+䦭 > to\-open;
+䦋 > to\-grow;
+䥰 > to\-melt;
+䥮 > to\-beat;
+䥊 > refined;
+䤟 > a\-spade;
+䤘 > vinegar;
+䤕 > vinegar;
+䤈 > vinegar;
+䣷 > to\-pour;
+䢶 > a\-state;
+䢰 > to\-jump;
+䢬 > to\-move;
+䢣 > distant;
+䢢 > to\-pass;
+䢠 > to\-send;
+䢙 > to\-ruin;
+䢒 > to\-meet;
+䢌 > to\-walk;
+䠼 > to\-wear;
+䠳 > to\-walk;
+䠥 > to\-limp;
+䠜 > to\-walk;
+䠛 > to\-jump;
+䠓 > to\-walk;
+䠄 > to\-walk;
+䟾 > to\-jump;
+䟷 > to\-jump;
+䟰 > to\-walk;
+䟭 > to\-jump;
+䟬 > to\-walk;
+䟦 > to\-walk;
+䟐 > to\-walk;
+䟏 > to\-jump;
+䟍 > to\-walk;
+䟉 > to\-walk;
+䟈 > to\-walk;
+䟇 > to\-walk;
+䟀 > to\-walk;
+䞻 > to\-walk;
+䞺 > to\-walk;
+䞹 > to\-walk;
+䞵 > to\-jump;
+䞴 > to\-jump;
+䞯 > to\-walk;
+䞫 > to\-walk;
+䞥 > to\-walk;
+䞤 > to\-walk;
+䞢 > to\-walk;
+䞡 > to\-walk;
+䞠 > to\-walk;
+䞞 > to\-walk;
+䝻 > to\-sell;
+䝮 > to\-brag;
+䝧 > capital;
+䜖 > to\-talk;
+䜉 > to\-jest;
+䛿 > cunning;
+䛺 > to\-warn;
+䛷 > to\-obey;
+䛰 > sketchy;
+䛢 > cunning;
+䛝 > to\-like;
+䛛 > courage;
+䚼 > ashamed;
+䚻 > to\-sing;
+䚱 > honesty;
+䚮 > thicker;
+䚗 > to\-lift;
+䚏 > to\-love;
+䙲 > to\-move;
+䙩 > clothes;
+䙙 > clothes;
+䙎 > sleeves;
+䙉 > clothes;
+䘷 > sleeves;
+䘶 > sleeves;
+䘱 > wealthy;
+䘮 > to\-lose;
+䘠 > greaves;
+䘝 > a\-shirt;
+䗲 > firefly;
+䗑 > firefly;
+䖵 > insects;
+䖝 > insects;
+䖚 > a\-tiger;
+䖘 > a\-tiger;
+䖕 > a\-tiger;
+䖄 > to\-burn;
+䕞 > henbane;
+䕑 > parsley;
+䔺 > heading;
+䔀 > parsley;
+䒶 > the\-sky;
+䒘 > parsley;
+䑧 > a\-short;
+䑛 > to\-lick;
+䐿 > gizzard;
+䐷 > paunchy;
+䐶 > to\-cook;
+䐴 > lumbago;
+䐫 > obesity;
+䐊 > insects;
+䏝 > sincere;
+䏖 > a\-wound;
+䏑 > to\-burn;
+䏇 > to\-hear;
+䏅 > to\-hear;
+䏃 > to\-hear;
+䎽 > to\-hear;
+䎻 > to\-hear;
+䎹 > to\-hear;
+䎸 > to\-hear;
+䎩 > to\-till;
+䎦 > to\-till;
+䎤 > to\-till;
+䎝 > to\-soar;
+䎌 > feather;
+䍶 > unicorn;
+䍳 > disease;
+䌘 > to\-knit;
+䌔 > to\-soak;
+䌁 > a\-pleat;
+䋎 > to\-mend;
+䊟 > adorned;
+䊘 > a\-grain;
+䊒 > refined;
+䊇 > to\-feed;
+䉵 > to\-feed;
+䉢 > a\-sieve;
+䉎 > a\-cover;
+䈬 > a\-small;
+䈪 > a\-small;
+䈥 > tendons;
+䈤 > pincers;
+䈒 > fragile;
+䈇 > a\-cover;
+䇔 > atrophy;
+䇍 > to\-wait;
+䆵 > an\-echo;
+䆨 > the\-sky;
+䅸 > a\-grain;
+䄤 > to\-sink;
+䄏 > bizarre;
+䃣 > to\-ruin;
+䂊 > weapons;
+䂉 > weapons;
+䂆 > weapons;
+䂀 > to\-wink;
+䁲 > to\-peep;
+䁪 > to\-wink;
+䁣 > to\-wink;
+䁛 > to\-look;
+䁒 > to\-wink;
+䀻 > to\-look;
+䀨 > to\-look;
+䀔 > to\-look;
+㿦 > to\-tell;
+㿒 > illness;
+㿑 > illness;
+㿍 > scabies;
+㾷 > to\-ache;
+㾬 > malaria;
+㾠 > a\-fever;
+㾟 > relapse;
+㾞 > illness;
+㾘 > ailment;
+㾖 > grieved;
+㾕 > a\-chill;
+㾓 > fatigue;
+㾒 > illness;
+㾏 > illness;
+㾇 > illness;
+㾆 > ecdysis;
+㾅 > defects;
+㾂 > illness;
+㽴 > illness;
+㽳 > illness;
+㽝 > to\-sink;
+㽖 > a\-human;
+㼼 > a\-ladle;
+㼷 > a\-basin;
+㼜 > a\-basin;
+㼗 > a\-brick;
+㻹 > a\-crack;
+㻃 > crooked;
+㺲 > buttons;
+㺗 > to\-bite;
+㺊 > a\-beast;
+㹾 > cunning;
+㹽 > to\-bite;
+㹞 > to\-bark;
+㹛 > a\-tamed;
+㸧 > to\-bite;
+㸐 > to\-burn;
+㸍 > to\-burn;
+㷻 > without;
+㷓 > a\-torch;
+㷊 > to\-burn;
+㷉 > to\-iron;
+㷅 > to\-cook;
+㶮 > to\-burn;
+㶫 > to\-burn;
+㶣 > to\-burn;
+㶗 > well\-up;
+㶓 > to\-sink;
+㶇 > a\-ferry;
+㵸 > to\-boil;
+㵴 > to\-sink;
+㵣 > thirsty;
+㵒 > boiling;
+㵌 > to\-flow;
+㵅 > a\-river;
+㴿 > boiling;
+㴉 > various;
+㴇 > to\-wade;
+㴅 > to\-melt;
+㳺 > to\-swim;
+㳭 > spittle;
+㳬 > an\-eddy;
+㳪 > a\-river;
+㳦 > a\-river;
+㳙 > a\-brook;
+㳅 > to\-flow;
+㳄 > spittle;
+㲺 > to\-wash;
+㲅 > to\-bind;
+㲂 > to\-push;
+㲁 > to\-beat;
+㲀 > to\-beat;
+㱮 > to\-open;
+㱖 > to\-stay;
+㱌 > to\-take;
+㱄 > to\-spit;
+㱀 > to\-bite;
+㰵 > to\-suck;
+㰕 > a\-ladle;
+㯻 > to\-bind;
+㯹 > to\-show;
+㯸 > a\-basin;
+㯓 > a\-couch;
+㯐 > tubular;
+㯋 > a\-chest;
+㮸 > to\-send;
+㮛 > a\-spoon;
+㭰 > to\-know;
+㭬 > to\-beat;
+㭪 > a\-shrub;
+㭌 > a\-basin;
+㭈 > a\-basin;
+㬼 > to\-have;
+㬝 > obscure;
+㬔 > to\-defy;
+㬃 > sunrise;
+㫴 > to\-roar;
+㫳 > morning;
+㫧 > violent;
+㫝 > the\-sun;
+㫙 > the\-sun;
+㫑 > purpose;
+㪼 > to\-pull;
+㪱 > elegant;
+㪯 > to\-lift;
+㪮 > to\-beat;
+㪨 > to\-mend;
+㪧 > to\-beat;
+㪦 > to\-beat;
+㪥 > to\-take;
+㪢 > to\-beat;
+㪠 > to\-peck;
+㪝 > to\-beat;
+㪗 > to\-open;
+㪕 > to\-beat;
+㪒 > to\-ruin;
+㪏 > to\-ruin;
+㪁 > to\-hold;
+㩶 > to\-hold;
+㩵 > to\-beat;
+㩳 > to\-hold;
+㩰 > to\-stab;
+㩯 > to\-move;
+㩬 > to\-beat;
+㩤 > to\-open;
+㩣 > to\-move;
+㩢 > to\-beat;
+㩕 > to\-haul;
+㩋 > to\-beat;
+㨷 > to\-wipe;
+㨰 > to\-turn;
+㨦 > to\-hold;
+㨤 > to\-wipe;
+諸 > several;
+羽 > feather;
+精 > essence;
+㨖 > to\-stab;
+㨏 > to\-beat;
+㨋 > to\-beat;
+降 > descend;
+暴 > violent;
+㨆 > to\-kill;
+㨂 > to\-beat;
+㧿 > to\-bump;
+㧻 > a\-thorn;
+㧫 > to\-hold;
+㧪 > to\-ruin;
+㧤 > to\-jump;
+㧣 > to\-stop;
+㧡 > to\-move;
+㧟 > to\-wipe;
+㧝 > to\-take;
+率 > to\-lead;
+㧜 > to\-hold;
+律 > statute;
+淪 > be\-lost;
+㧓 > to\-lead;
+㧒 > to\-beat;
+㧑 > to\-wave;
+㧐 > to\-hold;
+㧊 > to\-push;
+劉 > surname;
+㧈 > to\-pull;
+㧇 > to\-hold;
+遼 > distant;
+㧄 > to\-take;
+燎 > to\-burn;
+㦹 > a\-spear;
+㦵 > to\-kill;
+㦭 > to\-pity;
+㦬 > ashamed;
+令 > command;
+簾 > a\-blind;
+廉 > upright;
+㦞 > grieved;
+聯 > connect;
+㦕 > thought;
+黎 > surname;
+呂 > surname;
+量 > measure;
+㥽 > feeling;
+㥹 > to\-move;
+拾 > pick\-up;
+㥯 > careful;
+塞 > stop\-up;
+㥤 > to\-pity;
+率 > to\-lead;
+諾 > promise;
+㥕 > to\-pity;
+㥒 > corrupt;
+㥏 > bashful;
+㥌 > prudent;
+壘 > rampart;
+雷 > thunder;
+㥄 > to\-pity;
+㤿 > to\-love;
+㤽 > grieved;
+魯 > foolish;
+㤺 > blurred;
+虜 > capture;
+㤶 > confuse;
+盧 > cottage;
+擄 > capture;
+㤭 > untamed;
+㤠 > grieved;
+欄 > railing;
+癩 > leprosy;
+㤅 > to\-love;
+賈 > surname;
+㤃 > jealous;
+㤂 > anxious;
+㣷 > walking;
+㣶 > to\-walk;
+㣬 > to\-walk;
+㣜 > to\-walk;
+㣛 > walking;
+㣃 > to\-sell;
+㣂 > to\-bind;
+㢼 > awkward;
+㢣 > to\-lift;
+㢝 > cottage;
+㢕 > harmony;
+㡸 > a\-house;
+㡰 > a\-house;
+㡫 > anxious;
+㡨 > a\-label;
+㡘 > screens;
+㡓 > drawers;
+㡂 > remains;
+㠭 > to\-open;
+㟧 > a\-cliff;
+㞺 > a\-tribe;
+㞫 > to\-walk;
+㞧 > to\-meet;
+㞤 > to\-help;
+㞡 > to\-open;
+㞀 > to\-bump;
+㝼 > crooked;
+㝱 > a\-dream;
+㝢 > a\-house;
+㝀 > to\-like;
+㜾 > a\-child;
+㜩 > jealous;
+㜓 > womanly;
+㜉 > womanly;
+㜇 > unhappy;
+㛿 > cunning;
+㛻 > womanly;
+㛯 > to\-soar;
+㛕 > womanly;
+㚢 > a\-slave;
+㙔 > a\-fence;
+㙐 > to\-move;
+㙏 > caverns;
+㘸 > to\-bury;
+㘷 > mugwort;
+㘩 > to\-mate;
+㘗 > whisper;
+㘕 > to\-call;
+㘂 > ashamed;
+㘁 > to\-call;
+㗽 > an\-echo;
+㗲 > to\-call;
+㗱 > to\-suck;
+㗭 > a\-sound;
+㗤 > ashamed;
+㗍 > to\-gnaw;
+㗃 > the\-lip;
+㖿 > a\-sound;
+㖻 > whisper;
+㖺 > to\-blow;
+㖭 > to\-lick;
+㖥 > to\-spit;
+㕷 > to\-call;
+㕱 > to\-bark;
+㕮 > to\-chew;
+㕟 > to\-sign;
+㕞 > a\-brush;
+㕜 > history;
+㔿 > a\-tally;
+㔭 > a\-spoon;
+㔡 > greatly;
+㔂 > to\-pare;
+㓲 > to\-pare;
+㓰 > to\-rive;
+㓥 > to\-kill;
+㓟 > to\-peel;
+㓐 > to\-rain;
+㒼 > average;
+㒸 > to\-obey;
+㒴 > to\-come;
+㒦 > puppets;
+㒞 > valiant;
+㒕 > unyield;
+㒒 > a\-slave;
+㒑 > grow\-up;
+㒉 > alarmed;
+㑹 > to\-meet;
+㑐 > to\-move;
+㑅 > to\-make;
+㑃 > to\-pull;
+㐼 > to\-save;
+㐮 > to\-help;
+㐁 > to\-lick;
+是 > indeed;
+迫 > coerce;
+応 > should;
+忘 > forget;
+国 > nation;
+返 > return;
+忍 > endure;
+迄 > extend;
+必 > surely;
+出 > go\-out;
+辿 > follow;
+瞼 > eyelid;
+得 > obtain;
+辷 > smooth;
+徴 > summon;
+徳 > virtue;
+瞭 > bright;
+復 > return;
+辛 > bitter;
+徐 > slowly;
+後 > behind;
+徊 > linger;
+影 > shadow;
+事 > affair;
+轟 > rumble;
+彈 > pellet;
+主 > master;
+強 > strong;
+弛 > loosen;
+民 > people;
+県 > county;
+现 > appear;
+分 > divide;
+些 > little;
+相 > mutual;
+回 > return;
+理 > reason;
+明 > bright;
+益 > profit;
+话 > speech;
+向 > toward;
+定 > decide;
+庫 > armory;
+度 > degree;
+底 > bottom;
+打 > strike;
+位 > throne;
+序 > series;
+幼 > infant;
+干 > oppose;
+内 > inside;
+癪 > spasms;
+加 > add\-to;
+化 > change;
+癌 > cancer;
+常 > common;
+踰 > exceed;
+市 > market;
+帰 > return;
+才 > talent;
+住 > reside;
+员 > member;
+巻 > scroll;
+性 > nature;
+报 > report;
+神 > spirit;
+数 > number;
+跡 > search;
+原 > source;
+巡 > patrol;
+川 > stream;
+应 > should;
+越 > exceed;
+疊 > repeat;
+系 > system;
+畳 > repeat;
+赫 > bright;
+及 > extend;
+制 > system;
+畠 > garden;
+解 > loosen;
+记 > record;
+林 > forest;
+贔 > strong;
+统 > govern;
+字 > letter;
+島 > island;
+質 > matter;
+论 > debate;
+貰 > borrow;
+指 > finger;
+財 > wealth;
+花 > flower;
+層 > storey;
+条 > clause;
+变 > change;
+该 > should;
+屍 > corpse;
+传 > summon;
+治 > govern;
+决 > decide;
+局 > bureau;
+办 > manage;
+谷 > valley;
+城 > castle;
+父 > father;
+强 > strong;
+導 > direct;
+封 > letter;
+現 > appear;
+寧 > repose;
+黄 > yellow;
+德 > ethics;
+害 > injure;
+宮 > palace;
+找 > search;
+友 > friend;
+變 > change;
+改 > change;
+守 > defend;
+讃 > praise;
+际 > border;
+单 > single;
+导 > direct;
+獲 > obtain;
+孤 > orphan;
+校 > school;
+獄 > prison;
+猾 > crafty;
+謙 > humble;
+謎 > riddle;
+随 > follow;
+狹 > narrow;
+狭 > narrow;
+母 > mother;
+狙 > an\-ape;
+論 > debate;
+团 > sphere;
+狂 > insane;
+課 > lesson;
+苦 > bitter;
+招 > beckon;
+兴 > thrive;
+該 > should;
+约 > treaty;
+話 > speech;
+詩 > poetry;
+牢 > prison;
+绝 > to\-cut;
+选 > choose;
+复 > return;
+星 > a\-star;
+爺 > father;
+訴 > accuse;
+訟 > accuse;
+妈 > mother;
+爛 > rotten;
+記 > record;
+消 > vanish;
+娘 > mother;
+燭 > candle;
+姫 > beauty;
+杨 > willow;
+易 > change;
+严 > strict;
+熊 > a\-bear;
+妄 > absurd;
+纪 > record;
+苏 > revive;
+答 > answer;
+奮 > strive;
+煩 > bother;
+襤 > ragged;
+击 > strike;
+朋 > friend;
+供 > supply;
+央 > center;
+列 > a\-line;
+焦 > burned;
+爷 > father;
+龙 > dragon;
+褒 > praise;
+夏 > summer;
+変 > change;
+春 > spring;
+複 > repeat;
+灵 > spirit;
+裡 > inside;
+诉 > accuse;
+态 > manner;
+裏 > inside;
+质 > matter;
+袖 > sleeve;
+园 > garden;
+袋 > pocket;
+副 > assist;
+够 > enough;
+获 > obtain;
+诗 > poetry;
+街 > street;
+報 > report;
+激 > arouse;
+银 > silver;
+阵 > column;
+层 > storey;
+亮 > bright;
+简 > simple;
+毒 > poison;
+归 > return;
+换 > change;
+湖 > a\-lake;
+蝉 > cicada;
+追 > pursue;
+鼬 > weasel;
+络 > enmesh;
+漠 > desert;
+蜘 > spider;
+團 > sphere;
+占 > divine;
+圓 > circle;
+園 > garden;
+赶 > pursue;
+兰 > orchid;
+國 > nation;
+圃 > garden;
+源 > spring;
+団 > sphere;
+阶 > stairs;
+蛛 > spider;
+黙 > silent;
+伸 > extend;
+默 > silent;
+佛 > buddha;
+嚴 > strict;
+挥 > direct;
+效 > result;
+攻 > attack;
+策 > scheme;
+防 > defend;
+股 > thighs;
+蘭 > orchid;
+莫 > do\-not;
+嘘 > exhale;
+县 > county;
+蘇 > revive;
+窗 > window;
+添 > append;
+混 > to\-mix;
+鷲 > condor;
+博 > gamble;
+弹 > pellet;
+藤 > rattan;
+坏 > rotten;
+智 > wisdom;
+岛 > island;
+抗 > resist;
+喰 > to\-eat;
+單 > single;
+爹 > father;
+喧 > lively;
+喉 > throat;
+爸 > father;
+浚 > dredge;
+逃 > escape;
+骂 > accuse;
+唸 > recite;
+靖 > pacify;
+秘 > secret;
+财 > wealth;
+欲 > desire;
+征 > invade;
+秋 > autumn;
+吸 > inhale;
+鳩 > pigeon;
+員 > member;
+悲 > sorrow;
+泉 > spring;
+桥 > bridge;
+劲 > strong;
+咽 > throat;
+蒻 > rushes;
+库 > armory;
+借 > borrow;
+決 > decide;
+董 > direct;
+葡 > grapes;
+汚 > filthy;
+控 > accuse;
+胸 > breast;
+课 > lesson;
+邮 > postal;
+吝 > stingy;
+横 > across;
+健 > strong;
+萎 > wither;
+萄 > grapes;
+圆 > circle;
+卷 > scroll;
+菫 > celery;
+择 > select;
+恨 > hatred;
+竹 > bamboo;
+菓 > fruits;
+宫 > palace;
+旗 > banner;
+殻 > casing;
+厳 > strict;
+殘 > injure;
+残 > injure;
+歸 > return;
+稳 > stable;
+迹 > traces;
+针 > needle;
+替 > change;
+卑 > humble;
+悄 > silent;
+奋 > strive;
+櫻 > cherry;
+弃 > reject;
+烦 > bother;
+抵 > resist;
+码 > number;
+励 > strive;
+紫 > purple;
+拔 > uproot;
+芝 > sesame;
+梁 > bridge;
+赏 > reward;
+劃 > divide;
+插 > insert;
+驢 > donkey;
+冬 > winter;
+扩 > expand;
+橘 > orange;
+橋 > bridge;
+逼 > compel;
+騷 > harass;
+刹 > temple;
+镜 > mirror;
+污 > filthy;
+標 > a\-mark;
+狱 > prison;
+騒 > harass;
+舌 > tongue;
+森 > forest;
+興 > thrive;
+槽 > trough;
+怨 > hatred;
+臼 > mortar;
+伏 > crouch;
+愤 > resent;
+俄 > sudden;
+凍 > freeze;
+槌 > hammer;
+稍 > little;
+籍 > record;
+侵 > invade;
+阻 > impede;
+慧 > bright;
+饑 > starve;
+晃 > bright;
+腑 > bowels;
+烂 > rotten;
+兎 > rabbit;
+腋 > armpit;
+尸 > corpse;
+椿 > father;
+儘 > utmost;
+崇 > esteem;
+餓 > hungry;
+椎 > hammer;
+棺 > coffin;
+粉 > powder;
+盾 > shield;
+飢 > hunger;
+轰 > rumble;
+奸 > crafty;
+邦 > nation;
+棄 > reject;
+饿 > hungry;
+捕 > arrest;
+傳 > summon;
+梯 > ladder;
+挣 > strive;
+聘 > engage;
+條 > clause;
+耐 > endure;
+梃 > a\-club;
+顫 > shiver;
+桜 > cherry;
+闷 > gloomy;
+願 > desire;
+悔 > repent;
+邀 > invite;
+颤 > shiver;
+頬 > cheeks;
+頤 > cheeks;
+患 > suffer;
+丐 > beggar;
+柱 > pillar;
+柚 > pomelo;
+翌 > bright;
+柄 > handle;
+侮 > insult;
+铜 > copper;
+枕 > pillow;
+罹 > sorrow;
+罵 > accuse;
+杵 > pestle;
+敲 > strike;
+靡 > divide;
+扯 > rip\-up;
+鉴 > mirror;
+趋 > hasten;
+佐 > assist;
+逊 > humble;
+靈 > spirit;
+朴 > simple;
+札 > letter;
+伝 > summon;
+伎 > talent;
+串 > string;
+霊 > spirit;
+雲 > clouds;
+熙 > bright;
+庙 > temple;
+仏 > buddha;
+雌 > female;
+雇 > employ;
+隨 > follow;
+際 > border;
+階 > stairs;
+隅 > corner;
+酷 > strong;
+乳 > breast;
+稣 > revive;
+陣 > column;
+繕 > repair;
+昭 > bright;
+棉 > cotton;
+搜 > search;
+縛 > to\-tie;
+谅 > excuse;
+烛 > candle;
+呈 > submit;
+線 > thread;
+拓 > expand;
+敦 > esteem;
+數 > number;
+敷 > spread;
+統 > govern;
+脾 > spleen;
+絡 > enmesh;
+紳 > girdle;
+鹰 > falcon;
+約 > treaty;
+紀 > record;
+愚 > stupid;
+糞 > manure;
+粧 > toilet;
+撃 > strike;
+饥 > hunger;
+鑒 > mirror;
+逻 > patrol;
+簡 > simple;
+鏡 > mirror;
+換 > change;
+採 > gather;
+帕 > turban;
+冻 > freeze;
+谦 > humble;
+捜 > search;
+丫 > forked;
+煌 > bright;
+挿 > insert;
+拐 > kidnap;
+荐 > repeat;
+倪 > feeble;
+錐 > gimlet;
+骚 > harass;
+寞 > silent;
+篮 > basket;
+侄 > nephew;
+拙 > stupid;
+叉 > crotch;
+怖 > terror;
+抜 > uproot;
+窓 > window;
+抉 > choose;
+銅 > copper;
+銀 > silver;
+谜 > riddle;
+颁 > confer;
+颊 > cheeks;
+咕 > mumble;
+舵 > rudder;
+惩 > punish;
+咖 > coffee;
+針 > needle;
+應 > should;
+尹 > govern;
+憤 > resent;
+淳 > honest;
+猴 > monkey;
+弦 > string;
+缚 > to\-tie;
+態 > manner;
+慄 > shiver;
+陋 > narrow;
+郵 > postal;
+窄 > narrow;
+驴 > donkey;
+壳 > casing;
+霉 > mildew;
+芦 > rushes;
+胳 > armpit;
+悼 > grieve;
+悶 > gloomy;
+逍 > ramble;
+悴 > suffer;
+耍 > frolic;
+粪 > manure;
+捆 > tie\-up;
+選 > choose;
+遜 > humble;
+兔 > rabbit;
+遊 > wander;
+逛 > ramble;
+匈 > breast;
+讽 > recite;
+拣 > choose;
+耿 > bright;
+廿 > twenty;
+诵 > recite;
+腻 > greasy;
+缆 > hawser;
+鞑 > tatars;
+氓 > people;
+慷 > ardent;
+篷 > awning;
+荆 > thorns;
+膏 > grease;
+鞍 > saddle;
+鸠 > pigeon;
+缕 > thread;
+睬 > notice;
+绥 > soothe;
+氧 > oxygen;
+婷 > pretty;
+姬 > beauty;
+吭 > throat;
+凿 > chisel;
+捂 > resist;
+巫 > wizard;
+虾 > shrimp;
+绅 > girdle;
+镶 > insert;
+颐 > cheeks;
+删 > to\-cut;
+讼 > accuse;
+伶 > lonely;
+炯 > bright;
+鸽 > pigeon;
+渝 > change;
+椒 > pepper;
+揖 > salute;
+冉 > tender;
+咙 > throat;
+踱 > stroll;
+猬 > vulgar;
+屿 > island;
+俐 > smooth;
+褂 > jacket;
+糙 > coarse;
+闸 > sluice;
+颓 > ruined;
+屉 > drawer;
+芹 > celery;
+锥 > gimlet;
+刁 > tricky;
+曙 > bright;
+洼 > hollow;
+皓 > bright;
+蒜 > garlic;
+炳 > bright;
+渣 > refuse;
+慑 > afraid;
+樱 > cherry;
+忏 > regret;
+碾 > roller;
+疙 > pimple;
+漉 > filter;
+隧 > tunnel;
+酥 > butter;
+钮 > button;
+隘 > narrow;
+漱 > gargle;
+盔 > helmet;
+磋 > polish;
+惴 > afraid;
+蕉 > banana;
+惋 > regret;
+痰 > phlegm;
+羁 > halter;
+诏 > decree;
+靶 > target;
+酝 > liquor;
+柬 > letter;
+亵 > slight;
+貂 > marten;
+聆 > listen;
+毋 > do\-not;
+韬 > sheath;
+鹊 > magpie;
+敖 > ramble;
+膺 > breast;
+悚 > afraid;
+卅 > thirty;
+徵 > summon;
+碳 > carbon;
+懵 > stupid;
+鹫 > condor;
+硫 > sulfur;
+踞 > crouch;
+镰 > sickle;
+涎 > saliva;
+壕 > trench;
+锚 > anchor;
+钠 > sodium;
+睿 > shrewd;
+莺 > oriole;
+蛊 > poison;
+烨 > bright;
+胯 > pelvis;
+跻 > ascend;
+鳖 > turtle;
+腼 > modest;
+橙 > orange;
+丞 > assist;
+娓 > comply;
+刎 > behead;
+蹙 > urgent;
+胚 > embryo;
+荔 > lichee;
+铿 > strike;
+锵 > tinkle;
+茧 > cocoon;
+蟒 > python;
+褴 > ragged;
+鹃 > cuckoo;
+猥 > vulgar;
+獗 > unruly;
+蒯 > a\-rush;
+沏 > infuse;
+峪 > valley;
+嚏 > sneeze;
+砾 > gravel;
+馁 > hungry;
+佟 > a\-name;
+茜 > madder;
+扈 > escort;
+咛 > enjoin;
+泗 > mucous;
+胄 > helmet;
+锹 > shovel;
+鹗 > osprey;
+儡 > puppet;
+皈 > follow;
+螂 > mantis;
+苓 > fungus;
+媛 > beauty;
+箴 > needle;
+叵 > cannot;
+仃 > lonely;
+杞 > willow;
+寮 > shanty;
+缮 > repair;
+犷 > fierce;
+沱 > rivers;
+厩 > stable;
+疡 > ulcers;
+垓 > border;
+徕 > induce;
+槁 > wither;
+遴 > select;
+圻 > border;
+龊 > narrow;
+龌 > narrow;
+遨 > ramble;
+骛 > gallop;
+徉 > wonder;
+谪 > charge;
+俚 > rustic;
+锨 > shovel;
+锃 > polish;
+俪 > spouse;
+锲 > sickle;
+祚 > throne;
+臾 > moment;
+遒 > strong;
+囹 > prison;
+嬴 > to\-win;
+烩 > ragout;
+圄 > prison;
+螫 > poison;
+铤 > ingots;
+螳 > mantis;
+茁 > sprout;
+舢 > sampan;
+芾 > flower;
+狲 > monkey;
+碜 > gritty;
+僭 > assume;
+碘 > iodine;
+烯 > alkene;
+囿 > pen\-up;
+囫 > entire;
+褡 > girdle;
+镍 > nickel;
+煜 > bright;
+橐 > a\-sack;
+杷 > loquat;
+恹 > feeble;
+彀 > enough;
+聒 > clamor;
+羯 > wether;
+粲 > polish;
+枇 > loquat;
+秣 > fodder;
+樽 > goblet;
+楹 > column;
+焖 > simmer;
+睑 > eyelid;
+轳 > pulley;
+殚 > utmost;
+镭 > radium;
+殄 > to\-end;
+诰 > inform;
+鹄 > target;
+莅 > attend;
+谟 > scheme;
+讫 > finish;
+珲 > bright;
+淬 > temper;
+嘬 > to\-lap;
+佶 > strong;
+晔 > bright;
+舛 > oppose;
+烷 > alkane;
+蛎 > oyster;
+焱 > flames;
+蜥 > lizard;
+圜 > circle;
+蜴 > lizard;
+葺 > thatch;
+戆 > stupid;
+嬷 > mother;
+恽 > devise;
+蓿 > clover;
+瘌 > severe;
+喱 > gramme;
+钴 > cobalt;
+岙 > island;
+貉 > badger;
+繇 > reason;
+蜉 > mayfly;
+疖 > pimple;
+纾 > loosen;
+鲑 > salmon;
+娈 > lovely;
+荨 > nettle;
+竦 > revere;
+狒 > baboon;
+撄 > oppose;
+蘼 > millet;
+茴 > fennel;
+鲦 > minnow;
+渌 > strain;
+阚 > glance;
+苜 > clover;
+偬 > urgent;
+珐 > enamel;
+靛 > indigo;
+黧 > a\-dark;
+碇 > anchor;
+蠓 > midges;
+橼 > citrus;
+蕞 > little;
+圯 > bridge;
+魍 > demons;
+翊 > flying;
+镏 > distil;
+碓 > pestle;
+胼 > callus;
+挈 > assist;
+犏 > yak\-ox;
+悛 > repent;
+勖 > enjoin;
+籀 > recite;
+碚 > suburb;
+腭 > palate;
+鳟 > barbel;
+雎 > osprey;
+殂 > to\-die;
+筚 > wicker;
+疝 > hernia;
+骀 > an\-old;
+蒗 > \(herb\);
+葸 > afraid;
+菟 > dodder;
+陉 > defile;
+筲 > basket;
+疠 > a\-sore;
+畛 > border;
+旰 > sunset;
+芪 > celery;
+谖 > forget;
+敉 > pacify;
+聍 > earwax;
+锇 > osmium;
+烀 > simmer;
+婧 > modest;
+菘 > celery;
+钡 > barium;
+蝣 > mayfly;
+蚵 > oyster;
+襻 > a\-loop;
+铒 > erbium;
+铈 > cerium;
+椴 > poplar;
+嬲 > frolic;
+苡 > barley;
+舄 > a\-shoe;
+蝾 > lizard;
+蜩 > cicada;
+鸫 > thrush;
+锔 > curium;
+铟 > indium;
+眍 > sunken;
+牖 > window;
+榇 > coffin;
+桷 > rafter;
+幞 > turban;
+帻 > turban;
+圉 > stable;
+摅 > spread;
+苄 > benzyl;
+陔 > a\-step;
+刿 > to\-cut;
+骶 > coccyx;
+鲻 > mullet;
+螨 > insect;
+虼 > a\-flea;
+瘕 > asthma;
+镘 > trowel;
+磙 > roller;
+胂 > arsine;
+觋 > wizard;
+蓥 > polish;
+菔 > turnip;
+仡 > strong;
+龞 > turtle;
+龝 > autumn;
+龍 > dragon;
+齷 > narrow;
+齶 > palate;
+齵 > uneven;
+齪 > narrow;
+鼫 > marmot;
+鼪 > weasel;
+鼔 > a\-drum;
+鼅 > spider;
+黌 > school;
+黉 > school;
+黈 > yellow;
+黃 > yellow;
+麰 > barley;
+麄 > coarse;
+鹨 > anthus;
+鷚 > anthus;
+鷇 > chicks;
+鶽 > a\-hawk;
+鶸 > siskin;
+鶯 > oriole;
+鶬 > oriole;
+鶫 > thrush;
+鶚 > osprey;
+鶊 > oriole;
+鶇 > thrush;
+鵻 > pigeon;
+鵲 > magpie;
+鵠 > target;
+鵑 > cuckoo;
+鵀 > hoopoe;
+鴿 > pigeon;
+鴬 > oriole;
+鴢 > \(duck\);
+鴃 > shrike;
+鱒 > barbel;
+鱎 > \(fish\);
+鱉 > turtle;
+鱆 > poulpe;
+鰷 > minnow;
+鰕 > shrimp;
+鯔 > mullet;
+鮭 > salmon;
+魵 > shrimp;
+驫 > horses;
+騤 > lively;
+騖 > gallop;
+騃 > stupid;
+駡 > accuse;
+駘 > an\-old;
+駓 > gallop;
+駃 > gallop;
+馿 > an\-ass;
+餤 > incite;
+餒 > hungry;
+顜 > honest;
+顒 > solemn;
+顑 > yellow;
+頽 > ruined;
+頹 > ruined;
+頰 > cheeks;
+頞 > bridge;
+頒 > confer;
+頉 > cheeks;
+韜 > sheath;
+韃 > tatars;
+鞞 > sheath;
+鞚 > bridle;
+靮 > bridle;
+雂 > \(bird\);
+隻 > single;
+陬 > corner;
+陜 > narrow;
+陘 > defile;
+闞 > glance;
+闉 > curved;
+閘 > sluice;
+镡 > dagger;
+铯 > cesium;
+鑿 > chisel;
+鑲 > insert;
+鑞 > solder;
+鑑 > mirror;
+鑀 > ionium;
+鐳 > radium;
+鐮 > sickle;
+鐝 > a\-pick;
+鐔 > dagger;
+鏝 > trowel;
+鏘 > tinkle;
+鏗 > strike;
+鎳 > nickel;
+鎦 > distil;
+鎣 > polish;
+鎚 > hammer;
+鎒 > to\-hoe;
+鎌 > sickle;
+鎅 > to\-saw;
+鍼 > needle;
+鍬 > shovel;
+鍫 > shovel;
+鍥 > sickle;
+鍠 > weapon;
+錩 > vessel;
+錨 > anchor;
+鋨 > osmium;
+鋦 > curium;
+鋙 > misfit;
+鋌 > ingots;
+鋇 > barium;
+鋅 > zincum;
+銶 > chisel;
+銲 > solder;
+銫 > cesium;
+銦 > indium;
+鉺 > erbium;
+鉥 > needle;
+鈷 > cobalt;
+鈰 > cerium;
+鈕 > button;
+鈉 > sodium;
+釬 > solder;
+釦 > button;
+釐 > manage;
+釃 > strain;
+醞 > liquor;
+醖 > liquor;
+酾 > strain;
+酴 > leaven;
+鄋 > county;
+邏 > patrol;
+逰 > wander;
+逥 > return;
+逎 > strong;
+逌 > please;
+迯 > escape;
+迍 > falter;
+迋 > travel;
+辧 > manage;
+辦 > manage;
+辢 > bitter;
+轤 > pulley;
+轜 > hearse;
+轀 > hearse;
+輀 > hearse;
+軣 > rumble;
+躧 > sandal;
+躋 > ascend;
+蹻 > strong;
+蹝 > sandal;
+蹓 > stroll;
+踡 > curled;
+跧 > crouch;
+趫 > nimble;
+趨 > hasten;
+趕 > pursue;
+贳 > borrow;
+賞 > reward;
+貭 > matter;
+貪 > greedy;
+貟 > member;
+貛 > badger;
+豻 > prison;
+谿 > valley;
+讚 > praise;
+讁 > punish;
+譟 > clamor;
+譍 > answer;
+譆 > scream;
+謫 > charge;
+謨 > scheme;
+諼 > forget;
+諷 > recite;
+諵 > mutter;
+諒 > excuse;
+誦 > recite;
+誥 > inform;
+詻 > orders;
+詗 > to\-spy;
+詔 > decree;
+訖 > finish;
+觼 > buckle;
+觩 > strong;
+觧 > loosen;
+觕 > coarse;
+覰 > to\-spy;
+覡 > wizard;
+覊 > halter;
+襮 > collar;
+襋 > collar;
+褦 > stupid;
+褏 > sleeve;
+褎 > sleeve;
+袚 > greave;
+蠱 > poison;
+蠩 > a\-toad;
+蠣 > oyster;
+蠙 > oyster;
+蠔 > oyster;
+蠑 > lizard;
+蠎 > python;
+蠁 > larvae;
+蟷 > mantis;
+蟬 > cicada;
+蟜 > insect;
+蝦 > shrimp;
+蜋 > mantis;
+蛯 > shrimp;
+蛣 > beetle;
+蛌 > cricke;
+虩 > fright;
+虖 > to\-cry;
+蘤 > flower;
+蘆 > rushes;
+藘 > madder;
+薿 > flower;
+薗 > garden;
+薑 > ginger;
+蕆 > finish;
+蕂 > sesame;
+蕁 > nettle;
+蔙 > \(herb\);
+蔔 > radish;
+蔂 > basket;
+蔀 > screen;
+蓚 > oxalic;
+蒎 > pinane;
+蒇 > finish;
+葁 > ginger;
+萅 > spring;
+菆 > jungle;
+莵 > dodder;
+荊 > thorns;
+荁 > celery;
+茦 > thorns;
+茢 > sedges;
+苪 > bright;
+苢 > barley;
+芤 > hollow;
+艢 > a\-mast;
+舦 > rudder;
+舃 > a\-shoe;
+臄 > palate;
+膩 > greasy;
+膣 > vagina;
+膕 > hollow;
+腯 > strong;
+腟 > vagina;
+腁 > callus;
+脷 > tongue;
+脵 > thighs;
+脧 > reduce;
+胹 > cooked;
+胷 > breast;
+肧 > embryo;
+肐 > armpit;
+聹 > earwax;
+耤 > plough;
+羵 > spirit;
+羈 > halter;
+罫 > hinder;
+罥 > impete;
+罣 > hinder;
+纩 > cotton;
+纜 > hawser;
+纔 > talent;
+纊 > cotton;
+繭 > cocoon;
+繫 > attach;
+繨 > a\-knot;
+繋 > attach;
+縷 > thread;
+縣 > county;
+縡 > matter;
+縆 > a\-rope;
+緪 > a\-rope;
+綏 > soothe;
+綅 > thread;
+絿 > urgent;
+絚 > a\-rope;
+紲 > bridle;
+紩 > to\-sew;
+紟 > a\-sash;
+紘 > string;
+紓 > loosen;
+紃 > a\-cord;
+糨 > starch;
+糡 > starch;
+籲 > appeal;
+籚 > bamboo;
+籃 > basket;
+簜 > bamboo;
+簉 > deputy;
+篳 > wicker;
+篥 > bulgle;
+篜 > bamboo;
+箙 > quiver;
+笲 > basket;
+竜 > dragon;
+竉 > a\-hole;
+窪 > hollow;
+窔 > corner;
+穩 > stable;
+穨 > ruined;
+穌 > revive;
+穈 > millet;
+稜 > corner;
+秠 > millet;
+禦 > defend;
+祏 > shrine;
+礫 > gravel;
+磣 > gritty;
+碼 > number;
+硾 > weight;
+硍 > strike;
+矴 > anchor;
+矇 > stupid;
+瞷 > to\-spy;
+睪 > spy\-on;
+睆 > bright;
+眾 > masses;
+盩 > callus;
+皥 > bright;
+皡 > bright;
+皞 > bright;
+皀 > kernel;
+癤 > pimple;
+癘 > a\-sore;
+瘍 > ulcers;
+痻 > suffer;
+痚 > asthma;
+疉 > repeat;
+疃 > hamlet;
+疂 > repeat;
+畽 > ground;
+畯 > rustic;
+畟 > plough;
+琿 > bright;
+琺 > enamel;
+珔 > \(jade\);
+玓 > pearly;
+獷 > fierce;
+獉 > jungle;
+猻 > monkey;
+猺 > jackal;
+猓 > monkey;
+狥 > follow;
+犺 > animal;
+牕 > window;
+牓 > tablet;
+牐 > sluice;
+爥 > simmer;
+爚 > bright;
+燴 > ragout;
+燡 > bright;
+燜 > simmer;
+燋 > scorch;
+燁 > bright;
+熲 > bright;
+熈 > bright;
+煕 > bright;
+煃 > remove;
+煁 > hearth;
+焻 > breath;
+焴 > bright;
+焠 > temper;
+烺 > bright;
+烱 > bright;
+炁 > breath;
+瀒 > coarse;
+瀌 > plenty;
+濵 > a\-bank;
+濬 > dredge;
+澼 > bleach;
+潨 > gather;
+潀 > gather;
+漦 > saliva;
+渨 > a\-cove;
+淥 > strain;
+淟 > turbid;
+洟 > snivel;
+泭 > a\-raft;
+汙 > filthy;
+氿 > spring;
+氫 > amonia;
+殼 > casing;
+殫 > utmost;
+欻 > sudden;
+欑 > gather;
+櫬 > coffin;
+櫞 > citrus;
+櫜 > quiver;
+橰 > a\-spar;
+橫 > across;
+橤 > stamen;
+橜 > a\-post;
+橕 > a\-prop;
+樿 > coffin;
+樸 > simple;
+樲 > jujube;
+樑 > bridge;
+槥 > coffin;
+榲 > pillar;
+榱 > rafter;
+榥 > screen;
+榅 > pillar;
+楯 > shield;
+楬 > tablet;
+楢 > tinder;
+楛 > coarse;
+楊 > willow;
+椧 > gutter;
+椓 > strike;
+棜 > branch;
+棅 > handle;
+棃 > a\-pear;
+桲 > quince;
+柲 > handle;
+杴 > shovel;
+杇 > loquat;
+朙 > bright;
+曡 > repeat;
+曍 > bright;
+曅 > bright;
+曄 > bright;
+曀 > stormy;
+暻 > bright;
+暸 > bright;
+暲 > bright;
+暋 > strong;
+晜 > insect;
+晄 > bright;
+昺 > bright;
+昞 > bright;
+昑 > bright;
+旻 > heaven;
+旝 > banner;
+敹 > to\-sew;
+敡 > rebuke;
+敃 > strong;
+敂 > deduct;
+攖 > oppose;
+攄 > spread;
+擽 > tickle;
+擴 > expand;
+擖 > scrape;
+擓 > to\-rub;
+擊 > strike;
+擇 > select;
+撦 > rip\-up;
+撊 > fierce;
+搿 > to\-hug;
+揷 > insert;
+揮 > direct;
+揗 > strike;
+揀 > choose;
+掤 > quiver;
+掔 > sturdy;
+捽 > clutch;
+捼 > to\-rub;
+捓 > strive;
+捃 > gather;
+拡 > expand;
+択 > select;
+扐 > divine;
+扆 > screen;
+戝 > pirate;
+戇 > stupid;
+懾 > afraid;
+懺 > regret;
+懴 > regret;
+懲 > punish;
+懨 > feeble;
+憦 > regret;
+愽 > gamble;
+愬 > accuse;
+惲 > devise;
+惪 > ethics;
+惎 > injure;
+悳 > ethics;
+悧 > smooth;
+悞 > impede;
+悋 > stingy;
+恡 > stingy;
+恟 > scared;
+忰 > suffer;
+徠 > induce;
+彴 > bridge;
+弣 > middle;
+廽 > return;
+廟 > temple;
+廐 > stable;
+廏 > stable;
+廆 > a\-room;
+廄 > stable;
+廁 > toilet;
+幘 > turban;
+巤 > a\-mane;
+巘 > summit;
+嶼 > island;
+嶴 > island;
+嶓 > boshan;
+嶌 > island;
+嶋 > island;
+嵾 > uneven;
+崿 > cliffs;
+崟 > cliffs;
+岨 > uneven;
+岀 > go\-out;
+屮 > sprout;
+屜 > drawer;
+尅 > subdue;
+尀 > cannot;
+寜 > repose;
+寕 > repose;
+寎 > drowsy;
+宧 > corner;
+孾 > a\-baby;
+孌 > lovely;
+嬿 > lovely;
+嬤 > mother;
+嬃 > sister;
+嫪 > hanker;
+嫐 > frolic;
+媽 > mother;
+媖 > beauty;
+婼 > person;
+婤 > lovely;
+娬 > lovely;
+娒 > matron;
+姁 > beauty;
+妸 > person;
+夬 > parted;
+夠 > enough;
+夆 > resist;
+壿 > goblet;
+墠 > smooth;
+堧 > adjoin;
+堦 > stairs;
+堉 > ground;
+圞 > entire;
+圝 > entire;
+圎 > circle;
+圀 > nation;
+囘 > return;
+嚿 > a\-lump;
+嚨 > throat;
+嚔 > sneeze;
+嚃 > gobble;
+嚀 > enjoin;
+噚 > fathom;
+噓 > exhale;
+噏 > inhale;
+嗿 > gobble;
+喆 > a\-sage;
+啉 > stupid;
+唫 > to\-hum;
+唈 > to\-sob;
+哤 > jargon;
+哋 > plural;
+咈 > oppose;
+呮 > to\-sit;
+呏 > gallon;
+叡 > astute;
+叓 > affair;
+厎 > settle;
+卄 > twenty;
+匃 > beggar;
+勷 > urgent;
+勵 > strive;
+勗 > enjoin;
+勑 > reward;
+勍 > strong;
+勄 > active;
+勁 > strong;
+劤 > strong;
+劌 > to\-cut;
+劆 > sickle;
+剎 > temple;
+剋 > subdue;
+刪 > to\-cut;
+凞 > bright;
+凓 > shiver;
+冑 > helmet;
+冄 > tender;
+兲 > heaven;
+內 > inside;
+儸 > bandit;
+儷 > spouse;
+僱 > employ;
+僬 > clever;
+僣 > assume;
+傯 > urgent;
+傮 > finish;
+傎 > topple;
+偪 > compel;
+偩 > follow;
+偨 > uneven;
+偖 > rip\-up;
+倆 > clever;
+倅 > deputy;
+倃 > damage;
+俵 > divide;
+侷 > narrow;
+佈 > spread;
+伾 > mighty;
+伜 > deputy;
+仚 > to\-fly;
+亊 > affair;
+亄 > greedy;
+乚 > hidden;
+乂 > govern;
+丗 > thirty;
+䶮 > clever;
+䶁 > noises;
+䵧 > to\-dye;
+䵙 > sticky;
+䵐 > yellow;
+䵏 > yellow;
+䵍 > yellow;
+䵋 > yellow;
+䵊 > yellow;
+䴥 > a\-stag;
+䳾 > an\-owl;
+䳏 > cuckoo;
+䳇 > parrot;
+䲹 > ospery;
+䲧 > cuckoo;
+䲌 > a\-fish;
+䱕 > labrus;
+䱑 > a\-fish;
+䱏 > a\-fish;
+䱃 > a\-fish;
+䱂 > a\-fish;
+䰷 > a\-fish;
+䰣 > an\-elf;
+䯫 > bright;
+䯨 > to\-rap;
+䯝 > marrow;
+䯜 > marrow;
+䯃 > saddle;
+䯁 > a\-mule;
+䭪 > grains;
+䭥 > a\-bait;
+䭝 > to\-eat;
+䭚 > to\-eat;
+䭒 > breath;
+䭌 > congee;
+䭈 > congee;
+䬸 > a\-meal;
+䬑 > a\-gale;
+䬐 > breeze;
+䬊 > a\-gale;
+䬈 > breeze;
+䬇 > breeze;
+䬅 > a\-gale;
+䬄 > breeze;
+䬂 > breeze;
+䫾 > breeze;
+䫽 > breeze;
+䫼 > breeze;
+䫬 > to\-bow;
+䪸 > strong;
+䪤 > garlic;
+䩯 > urgent;
+䩭 > halter;
+䨾 > hidden;
+䨺 > cloudy;
+䨸 > cloudy;
+䨯 > cloudy;
+䨟 > puddle;
+䨉 > parrot;
+䨇 > a\-pair;
+䧴 > a\-bird;
+䧳 > female;
+䧥 > border;
+䧛 > beside;
+䧑 > a\-dike;
+䥪 > to\-cup;
+䥨 > a\-file;
+䥠 > needle;
+䥍 > a\-whip;
+䣦 > to\-cut;
+䣘 > a\-hall;
+䣈 > a\-lane;
+䢽 > a\-lane;
+䠰 > coiled;
+䠤 > toddle;
+䠙 > urgent;
+䠎 > narrow;
+䠇 > strong;
+䟱 > traces;
+䟟 > urgent;
+䟒 > coiled;
+䝜 > a\-lion;
+䝄 > cowpea;
+䜞 > a\-dose;
+䛧 > riddle;
+䛥 > speech;
+䛣 > speech;
+䛜 > to\-ask;
+䛑 > silent;
+䛈 > to\-vow;
+䚺 > ballad;
+䚈 > to\-see;
+䚆 > to\-see;
+䚂 > to\-see;
+䚁 > to\-see;
+䙿 > to\-see;
+䙽 > to\-see;
+䙼 > to\-see;
+䙵 > rustic;
+䙡 > a\-knot;
+䙌 > a\-knot;
+䘰 > a\-hood;
+䘬 > armour;
+䘩 > collar;
+䘌 > gadfly;
+䘈 > oyster;
+䗫 > a\-frog;
+䖹 > weevil;
+䖮 > larvae;
+䖫 > oyster;
+䖨 > mantis;
+䖗 > strong;
+䖁 > number;
+䕬 > ginger;
+䕨 > rattan;
+䔯 > salted;
+䔢 > cathay;
+䔏 > a\-lush;
+䓧 > urgent;
+䓦 > a\-rule;
+䓅 > celery;
+䓄 > grassy;
+䒹 > grassy;
+䒫 > grassy;
+䒉 > a\-long;
+䒂 > an\-oar;
+䑺 > a\-sail;
+䑴 > a\-boat;
+䑱 > a\-boat;
+䑯 > a\-boat;
+䑨 > rudder;
+䑦 > a\-boat;
+䑤 > a\-boat;
+䑐 > bright;
+䐦 > sleepy;
+䐥 > stinky;
+䏪 > tendon;
+䏣 > maggot;
+䏂 > clever;
+䎱 > a\-drag;
+䎬 > a\-drag;
+䎙 > flying;
+䎗 > flying;
+䎓 > flying;
+䎊 > flying;
+䎈 > flying;
+䎆 > flying;
+䎅 > flying;
+䎀 > flying;
+䍾 > flying;
+䍬 > to\-use;
+䍋 > bottle;
+䍈 > bottle;
+䍃 > a\-vase;
+䌴 > uneven;
+䌱 > uneven;
+䌜 > to\-sew;
+䌕 > to\-tie;
+䋲 > a\-rope;
+䋑 > to\-tie;
+䋐 > fabric;
+䋌 > strong;
+䊧 > a\-fart;
+䊥 > congee;
+䊛 > shreds;
+䊎 > powder;
+䊆 > cooked;
+䉶 > a\-sail;
+䈺 > bamboo;
+䈴 > a\-cage;
+䈎 > a\-leaf;
+䇥 > narrow;
+䇢 > bamboo;
+䇟 > tendon;
+䇚 > to\-tap;
+䇁 > a\-cave;
+䆽 > a\-hole;
+䆼 > a\-nest;
+䆻 > a\-hole;
+䆷 > a\-hole;
+䆰 > a\-cave;
+䆮 > to\-dip;
+䆫 > window;
+䆧 > a\-cave;
+䆡 > a\-cave;
+䆝 > a\-cave;
+䆙 > a\-kiln;
+䆓 > a\-hole;
+䅶 > to\-hoe;
+䅴 > grains;
+䅦 > feeble;
+䅇 > grains;
+䄹 > a\-year;
+䄲 > inside;
+䄭 > a\-year;
+䄘 > a\-rite;
+䄎 > pretty;
+䃥 > stones;
+䃖 > a\-bank;
+䃊 > to\-rub;
+䂷 > broken;
+䂴 > to\-rub;
+䂳 > gravel;
+䂝 > to\-rap;
+䂘 > pebble;
+䁿 > sleepy;
+䁦 > to\-see;
+䁖 > to\-see;
+䀒 > gloomy;
+䀍 > vessel;
+䀅 > vessel;
+㿾 > vessel;
+㿼 > a\-bowl;
+㿻 > a\-tray;
+㿭 > cracks;
+㿧 > fields;
+㿔 > a\-wart;
+㽷 > dropsy;
+㽵 > solemn;
+㼾 > bricks;
+㼥 > bottle;
+㼝 > a\-bowl;
+㼄 > pearls;
+㹌 > cattle;
+㸿 > a\-calf;
+㸙 > father;
+㷰 > flames;
+㷩 > bright;
+㷋 > embers;
+㷂 > bright;
+㶤 > to\-fry;
+㶈 > creeks;
+㵪 > saliva;
+㵝 > moving;
+㴞 > fluent;
+㴆 > to\-dip;
+㳌 > marshy;
+㱵 > to\-die;
+㱳 > lonely;
+㱱 > uneven;
+㱣 > uneven;
+㱞 > danger;
+㱙 > rotten;
+㱍 > to\-owe;
+㱂 > hungry;
+㱁 > to\-ask;
+㰍 > a\-cage;
+㰃 > a\-tree;
+㯾 > a\-tree;
+㯖 > a\-tree;
+㯏 > grains;
+㯎 > stupid;
+㯍 > an\-oar;
+㯉 > a\-tree;
+㯆 > a\-tree;
+㮿 > a\-tree;
+㮹 > a\-tree;
+㮷 > a\-tree;
+㮶 > a\-tree;
+㮳 > a\-tree;
+㮩 > a\-tree;
+㮧 > a\-tree;
+㮘 > a\-tree;
+㮖 > to\-lay;
+㮌 > cotton;
+㭱 > a\-case;
+㭋 > a\-club;
+㬯 > sunset;
+㬮 > gentle;
+㬍 > fierce;
+㫺 > bygone;
+㫸 > sunset;
+㫷 > behind;
+㫡 > winter;
+㫅 > a\-flag;
+㪹 > to\-rob;
+㪆 > hidden;
+㪄 > broken;
+㩾 > uneven;
+㩲 > a\-fist;
+㨾 > a\-type;
+㨻 > to\-cut;
+㨸 > to\-hit;
+㨩 > to\-win;
+㨥 > to\-hit;
+靖 > pacify;
+神 > spirit;
+益 > profit;
+凞 > bright;
+㨎 > to\-dye;
+㨅 > inside;
+拓 > expand;
+度 > degree;
+㧸 > to\-hit;
+林 > forest;
+㧳 > to\-mix;
+吝 > stingy;
+裡 > inside;
+裏 > inside;
+罹 > sorrow;
+㧧 > a\-comb;
+理 > reason;
+易 > change;
+慄 > shiver;
+硫 > sulfur;
+㧉 > to\-rub;
+龍 > dragon;
+寮 > shanty;
+靈 > spirit;
+聆 > listen;
+寧 > repose;
+囹 > prison;
+咽 > throat;
+列 > a\-line;
+㦔 > silkly;
+㦋 > absurd;
+㦊 > lavish;
+㦅 > uneasy;
+㦁 > to\-sob;
+勵 > strive;
+諒 > excuse;
+梁 > bridge;
+亮 > bright;
+㥭 > luxury;
+㥫 > honest;
+數 > number;
+復 > return;
+寧 > repose;
+㥟 > enmity;
+稜 > corner;
+陋 > narrow;
+縷 > thread;
+㥐 > hatred;
+㥈 > afraid;
+牢 > prison;
+論 > debate;
+㤻 > stupid;
+㤹 > hatred;
+㤸 > uneasy;
+蘆 > rushes;
+㤨 > scared;
+襤 > ragged;
+蘭 > orchid;
+爛 > rotten;
+邏 > patrol;
+㤓 > stupid;
+串 > string;
+㣭 > number;
+㣘 > spasms;
+㢽 > a\-bait;
+㢺 > string;
+㡮 > danger;
+㡣 > dragon;
+㡚 > armour;
+㡁 > a\-robe;
+㠶 > a\-sail;
+㠲 > ripped;
+㠀 > island;
+㟷 > a\-wart;
+㟫 > spring;
+㟥 > uneven;
+㟟 > a\-lane;
+㞸 > a\-year;
+㞇 > ulcers;
+㞂 > ulcers;
+㝹 > a\-hare;
+㝶 > to\-get;
+㝵 > to\-get;
+㝧 > stable;
+㝂 > locust;
+㝁 > lonely;
+㜫 > pretty;
+㜥 > crafty;
+㛹 > pretty;
+㚼 > a\-girl;
+㚻 > sodomy;
+㚹 > pretty;
+㚞 > terror;
+㚐 > a\-case;
+㚌 > a\-band;
+㙹 > a\-damp;
+㙶 > a\-hall;
+㙬 > a\-bank;
+㙝 > a\-dike;
+㙕 > a\-lump;
+㘴 > to\-sit;
+㘲 > a\-cove;
+㗷 > to\-eat;
+㗵 > breath;
+㗖 > to\-eat;
+㖒 > to\-cry;
+㖁 > stingy;
+㕠 > a\-pair;
+㕔 > a\-hall;
+㕂 > to\-hum;
+㔺 > an\-age;
+㔸 > a\-tray;
+㔜 > sudden;
+㔗 > strong;
+㔒 > to\-cut;
+㔐 > to\-cut;
+㔊 > to\-cut;
+㔉 > to\-dig;
+㔆 > to\-cut;
+㔅 > to\-cut;
+㓵 > swords;
+㓱 > to\-cut;
+㓪 > bright;
+㓠 > a\-flaw;
+㓅 > frozen;
+㒶 > public;
+㒵 > manner;
+㒲 > wealth;
+㒧 > a\-pair;
+㒠 > narrow;
+㑻 > strong;
+㑷 > manner;
+㑳 > clever;
+㑣 > stupid;
+㑇 > clever;
+㐹 > strong;
+石 > stone;
+短 > short;
+快 > rapid;
+在 > be\-at;
+他 > other;
+矢 > arrow;
+到 > go\-to;
+说 > speak;
+迅 > quick;
+地 > earth;
+心 > heart;
+下 > under;
+辭 > words;
+微 > small;
+家 > house;
+御 > drive;
+辞 > words;
+后 > queen;
+小 > small;
+待 > treat;
+还 > still;
+发 > issue;
+彫 > carve;
+想 > think;
+睡 > sleep;
+轉 > shift;
+所 > place;
+輪 > wheel;
+三 > three;
+輕 > light;
+式 > style;
+样 > shape;
+軽 > light;
+建 > build;
+延 > delay;
+盲 > blind;
+転 > shift;
+廣 > broad;
+声 > sound;
+工 > labor;
+盆 > basin;
+盃 > glass;
+正 > right;
+庸 > usual;
+女 > woman;
+力 > power;
+躑 > waver;
+因 > cause;
+重 > heavy;
+皇 > royal;
+庇 > cover;
+次 > order;
+広 > broad;
+口 > mouth;
+使 > cause;
+白 > white;
+幽 > quiet;
+教 > teach;
+發 > issue;
+再 > again;
+発 > issue;
+气 > steam;
+信 > trust;
+北 > north;
+蹲 > squat;
+蹟 > trace;
+由 > cause;
+却 > still;
+幅 > piece;
+入 > enter;
+先 > first;
+水 > water;
+处 > place;
+巷 > alley;
+笑 > smile;
+立 > stand;
+跪 > kneel;
+马 > horse;
+巨 > large;
+疑 > doubt;
+利 > gains;
+赴 > go\-to;
+光 > light;
+果 > fruit;
+赧 > blush;
+至 > reach;
+清 > clear;
+物 > thing;
+嵌 > inlay;
+甲 > armor;
+田 > field;
+许 > allow;
+八 > eight;
+崖 > cliff;
+崎 > rough;
+南 > south;
+色 > color;
+让 > allow;
+瓜 > melon;
+算 > count;
+賊 > thief;
+元 > first;
+貯 > store;
+思 > think;
+貨 > goods;
+岩 > cliff;
+每 > every;
+屬 > class;
+豪 > brave;
+属 > class;
+言 > words;
+权 > power;
+屋 > house;
+豆 > beans;
+七 > seven;
+尚 > still;
+尖 > sharp;
+转 > shift;
+射 > shoot;
+空 > empty;
+技 > skill;
+轻 > light;
+寺 > court;
+寫 > write;
+英 > petal;
+寢 > sleep;
+写 > write;
+寝 > sleep;
+寐 > sleep;
+密 > dense;
+寂 > still;
+钱 > money;
+容 > looks;
+宵 > night;
+设 > build;
+始 > begin;
+客 > guest;
+片 > slice;
+研 > grind;
+宇 > house;
+早 > early;
+房 > house;
+音 > sound;
+獻 > offer;
+獺 > otter;
+獸 > beast;
+譲 > allow;
+獨 > alone;
+警 > guard;
+獣 > beast;
+存 > exist;
+證 > proof;
+组 > class;
+謝 > thank;
+猜 > guess;
+嬉 > enjoy;
+黑 > black;
+謁 > visit;
+剑 > sword;
+独 > alone;
+乐 > happy;
+级 > level;
+説 > speak;
+举 > raise;
+证 > prove;
+照 > shine;
+誓 > swear;
+群 > group;
+晚 > night;
+誂 > tempt;
+詞 > words;
+伤 > wound;
+类 > class;
+欢 > happy;
+爽 > happy;
+势 > power;
+証 > prove;
+刻 > carve;
+断 > sever;
+夜 > night;
+許 > allow;
+設 > build;
+价 > price;
+脑 > brain;
+訪 > visit;
+规 > rules;
+娑 > dance;
+破 > break;
+泽 > marsh;
+燻 > smoke;
+紧 > tense;
+觸 > touch;
+装 > dress;
+急 > quick;
+河 > river;
+血 > blood;
+投 > throw;
+覆 > cover;
+右 > right;
+奴 > slave;
+刀 > knife;
+襟 > lapel;
+煙 > smoke;
+奉 > offer;
+喝 > drink;
+褸 > lapel;
+褪 > strip;
+卫 > guard;
+夢 > dream;
+错 > error;
+裾 > lapel;
+案 > table;
+烟 > smoke;
+裝 > dress;
+印 > print;
+壓 > press;
+烈 > fiery;
+壇 > altar;
+块 > piece;
+裂 > split;
+袴 > pants;
+墓 > grave;
+静 > quiet;
+炎 > flame;
+衷 > heart;
+灰 > ashes;
+衞 > guard;
+衛 > guard;
+速 > quick;
+塗 > smear;
+敌 > enemy;
+塔 > tower;
+谢 > thank;
+塊 > piece;
+怀 > bosom;
+养 > raise;
+罪 > crime;
+濶 > broad;
+蟲 > worms;
+濱 > beach;
+摘 > pluck;
+施 > grant;
+模 > model;
+草 > grass;
+濃 > thick;
+值 > price;
+濁 > muddy;
+班 > class;
+修 > study;
+味 > taste;
+澤 > marsh;
+织 > weave;
+龕 > niche;
+蝿 > flies;
+免 > spare;
+波 > waves;
+潔 > clean;
+洋 > ocean;
+劳 > labor;
+均 > equal;
+压 > press;
+奖 > prize;
+顿 > pause;
+漂 > float;
+判 > judge;
+素 > white;
+嘴 > mouth;
+担 > carry;
+板 > plank;
+钟 > clock;
+访 > visit;
+黒 > black;
+黐 > stick;
+蛇 > snake;
+构 > frame;
+溺 > drown;
+麦 > wheat;
+麥 > wheat;
+溝 > ditch;
+溜 > slide;
+肉 > flesh;
+纸 > paper;
+梦 > dream;
+虚 > false;
+蒙 > cover;
+處 > place;
+虎 > tiger;
+噌 > scold;
+杂 > mixed;
+怒 > anger;
+稿 > draft;
+渦 > swirl;
+渡 > cross;
+渠 > ditch;
+嘗 > taste;
+罢 > cease;
+鷺 > heron;
+鷹 > eagle;
+淹 > drown;
+藩 > fence;
+藥 > drugs;
+鲜 > fresh;
+置 > place;
+嗅 > smell;
+藁 > straw;
+鶴 > crane;
+枪 > spear;
+涯 > shore;
+薮 > marsh;
+薬 > drugs;
+薦 > offer;
+涜 > ditch;
+涙 > tears;
+配 > match;
+浴 > bathe;
+升 > arise;
+浜 > creek;
+蔽 > cover;
+词 > words;
+泪 > tears;
+蔭 > shade;
+津 > ferry;
+鬼 > ghost;
+舞 > dance;
+蓮 > lotus;
+避 > avoid;
+桌 > table;
+蓋 > cover;
+亡 > death;
+蓄 > store;
+闪 > flash;
+蒸 > steam;
+震 > shake;
+咳 > cough;
+咲 > smile;
+沢 > marsh;
+绿 > green;
+咎 > fault;
+纳 > admit;
+汽 > steam;
+货 > goods;
+呪 > curse;
+童 > child;
+伟 > great;
+汁 > juice;
+荣 > glory;
+献 > offer;
+吐 > vomit;
+厚 > thick;
+鰌 > loach;
+喊 > shout;
+轮 > wheel;
+吉 > lucky;
+训 > teach;
+叱 > scold;
+逐 > chase;
+盖 > cover;
+叩 > knock;
+舍 > house;
+毎 > every;
+检 > check;
+握 > grasp;
+牙 > tooth;
+鮮 > fresh;
+宽 > broad;
+殖 > breed;
+卿 > noble;
+荷 > lotus;
+歯 > teeth;
+歪 > slant;
+歡 > happy;
+棋 > chess;
+魔 > demon;
+腰 > waist;
+梅 > plums;
+钢 > steel;
+茹 > roots;
+仇 > enemy;
+欺 > cheat;
+鬚 > beard;
+匙 > spoon;
+净 > clean;
+匍 > crawl;
+權 > power;
+茅 > reeds;
+累 > tired;
+享 > enjoy;
+茂 > thick;
+勇 > brave;
+末 > final;
+糊 > paste;
+税 > taxes;
+勢 > power;
+勞 > labor;
+苛 > small;
+惯 > habit;
+倾 > upset;
+労 > labor;
+韩 > fence;
+贸 > trade;
+檢 > check;
+劍 > sword;
+扫 > sweep;
+艸 > grass;
+剣 > sword;
+吓 > scare;
+剃 > shave;
+闲 > fence;
+舶 > large;
+刷 > brush;
+羊 > sheep;
+権 > power;
+樣 > shape;
+扑 > pound;
+舎 > house;
+碎 > break;
+樂 > happy;
+磨 > grind;
+臺 > tower;
+臭 > smell;
+処 > place;
+様 > shape;
+倍 > times;
+粗 > rough;
+構 > frame;
+冶 > smelt;
+膳 > meals;
+馭 > drive;
+朗 > clear;
+馬 > horse;
+兼 > unite;
+鞋 > shoes;
+欣 > happy;
+挤 > crowd;
+楽 > happy;
+洁 > clean;
+颗 > grain;
+惠 > favor;
+振 > raise;
+腦 > brain;
+爬 > crawl;
+腕 > wrist;
+桃 > peach;
+措 > place;
+泰 > great;
+坡 > slope;
+脳 > brain;
+坛 > altar;
+償 > repay;
+検 > check;
+彪 > tiger;
+饮 > drink;
+植 > plant;
+養 > raise;
+脊 > spine;
+椅 > chair;
+矛 > spear;
+宾 > guest;
+肚 > belly;
+價 > price;
+贼 > thief;
+飲 > drink;
+棲 > perch;
+飮 > drink;
+僞 > false;
+僕 > slave;
+棒 > stick;
+働 > labor;
+傾 > upset;
+傷 > wound;
+催 > press;
+肝 > liver;
+盟 > swear;
+偽 > false;
+箭 > arrow;
+聲 > sound;
+類 > class;
+耀 > shine;
+顆 > grain;
+偉 > great;
+疯 > crazy;
+耻 > shame;
+侍 > serve;
+値 > price;
+衫 > shirt;
+頓 > pause;
+揭 > raise;
+莲 > lotus;
+钻 > drill;
+栄 > glory;
+峡 > gorge;
+韻 > rhyme;
+柵 > fence;
+丑 > clown;
+翳 > shade;
+浓 > thick;
+捉 > grasp;
+澳 > inlet;
+疼 > aches;
+档 > shelf;
+抛 > throw;
+価 > price;
+阔 > broad;
+玛 > agate;
+靴 > boots;
+尝 > taste;
+扣 > knock;
+靜 > quiet;
+傲 > proud;
+伺 > serve;
+锐 > sharp;
+霜 > frost;
+吵 > argue;
+沟 > ditch;
+浑 > muddy;
+邪 > wrong;
+脆 > crisp;
+偿 > repay;
+拟 > draft;
+曳 > trail;
+離 > leave;
+雜 > mixed;
+叛 > rebel;
+炼 > smelt;
+雑 > mixed;
+翼 > wings;
+呵 > scold;
+甜 > sweet;
+抹 > smear;
+隙 > crack;
+扔 > throw;
+廷 > court;
+掷 > throw;
+傅 > tutor;
+晩 > night;
+織 > weave;
+喷 > spurt;
+浩 > great;
+吩 > order;
+伪 > false;
+瞎 > blind;
+矮 > short;
+齿 > teeth;
+緑 > green;
+娶 > marry;
+緊 > tense;
+闇 > close;
+璃 > glass;
+斷 > sever;
+糖 > sugar;
+珊 > coral;
+棍 > stick;
+閑 > fence;
+玻 > glass;
+砸 > smash;
+嚷 > shout;
+閃 > flash;
+敵 > enemy;
+絞 > twist;
+坟 > grave;
+鹤 > crane;
+組 > class;
+乖 > rebel;
+級 > level;
+紙 > paper;
+納 > admit;
+轨 > track;
+擱 > place;
+擬 > draft;
+硕 > great;
+擧 > raise;
+擡 > carry;
+擔 > carry;
+撲 > pound;
+兽 > beast;
+籖 > tally;
+鐘 > clock;
+遮 > cover;
+擒 > catch;
+築 > build;
+揃 > shear;
+箒 > broom;
+鼎 > large;
+掃 > sweep;
+鍮 > brass;
+嗓 > voice;
+粒 > grain;
+錯 > error;
+啥 > what\?;
+錢 > money;
+蜜 > honey;
+挙 > raise;
+鋼 > steel;
+拶 > press;
+鋭 > sharp;
+搁 > place;
+鋏 > tongs;
+肿 > swell;
+銭 > money;
+裙 > skirt;
+胀 > swell;
+辜 > crime;
+哇 > vomit;
+尿 > urine;
+逮 > seize;
+刮 > shave;
+嘱 > order;
+倡 > guide;
+搏 > seize;
+兜 > pouch;
+魄 > vigor;
+晰 > clear;
+糕 > cakes;
+秩 > order;
+稚 > young;
+鈍 > blunt;
+懷 > bosom;
+滨 > beach;
+懐 > bosom;
+躁 > tense;
+甫 > begin;
+禽 > birds;
+憺 > peace;
+链 > chain;
+憬 > rouse;
+沐 > bathe;
+凳 > bench;
+酬 > toast;
+慣 > habit;
+灿 > vivid;
+韵 > rhyme;
+攀 > climb;
+咒 > curse;
+沫 > froth;
+碌 > rough;
+坤 > earth;
+焰 > flame;
+逗 > tempt;
+還 > still;
+魁 > chief;
+滥 > flood;
+適 > match;
+恥 > shame;
+框 > frame;
+喀 > vomit;
+砕 > break;
+翅 > wings;
+戳 > prick;
+桩 > stake;
+肺 > lungs;
+纱 > gauze;
+陡 > steep;
+烫 > scald;
+匕 > spoon;
+鹅 > goose;
+敞 > roomy;
+浏 > clear;
+烁 > shine;
+诈 > cheat;
+峨 > lofty;
+虐 > cruel;
+辫 > braid;
+嗽 > cough;
+怦 > eager;
+浇 > spray;
+膛 > chest;
+闵 > mourn;
+萃 > dense;
+袜 > socks;
+揽 > grasp;
+荫 > shade;
+贿 > bribe;
+敝 > break;
+熏 > smoke;
+匀 > equal;
+沃 > water;
+蝇 > flies;
+绞 > twist;
+呕 > vomit;
+墅 > villa;
+秽 > dirty;
+谬 > error;
+垄 > grave;
+呻 > groan;
+拧 > pinch;
+彰 > clear;
+栖 > perch;
+扼 > grasp;
+浊 > muddy;
+杠 > lever;
+惫 > tired;
+攘 > seize;
+缎 > satin;
+惮 > dread;
+噗 > burst;
+矶 > jetty;
+瓣 > petal;
+黝 > black;
+簇 > swarm;
+懊 > vexed;
+勺 > spoon;
+夭 > young;
+拇 > thumb;
+铲 > spade;
+肮 > dirty;
+哽 > choke;
+诣 > reach;
+炫 > shine;
+钝 > blunt;
+栅 > fence;
+冕 > crown;
+廓 > broad;
+峭 > steep;
+磅 > pound;
+疮 > tumor;
+赃 > booty;
+瘤 > tumor;
+婊 > whore;
+锯 > a\-saw;
+秉 > grasp;
+臻 > reach;
+嘈 > noisy;
+诅 > curse;
+缰 > reins;
+讪 > abuse;
+忡 > a\-sad;
+涡 > swirl;
+馍 > bread;
+颅 > skull;
+祯 > lucky;
+忖 > guess;
+烙 > brand;
+埔 > plain;
+泓 > clear;
+噎 > choke;
+阜 > mound;
+俨 > grave;
+炬 > torch;
+贮 > store;
+渎 > ditch;
+癫 > crazy;
+炙 > roast;
+肇 > begin;
+帚 > broom;
+恬 > quiet;
+婪 > covet;
+蹑 > tread;
+竺 > india;
+剌 > slash;
+荧 > shine;
+赂 > bribe;
+诲 > teach;
+筛 > sieve;
+篡 > usurp;
+鲸 > whale;
+抡 > swing;
+涮 > rinse;
+挎 > carry;
+酵 > yeast;
+橄 > olive;
+榄 > olive;
+稠 > dense;
+悻 > anger;
+雏 > chick;
+摹 > trace;
+涧 > brook;
+腺 > gland;
+哮 > cough;
+袒 > strip;
+抠 > raise;
+忱 > truth;
+噤 > close;
+髯 > beard;
+蜿 > creep;
+镀 > plate;
+胭 > rouge;
+髅 > skull;
+焘 > shine;
+佗 > other;
+赳 > grand;
+糠 > chaff;
+帛 > silks;
+侏 > small;
+丕 > great;
+鲨 > shark;
+踝 > ankle;
+驭 > drive;
+眈 > gloat;
+倭 > dwarf;
+镐 > stove;
+臆 > chest;
+孺 > child;
+虱 > louse;
+瑙 > agate;
+褛 > lapel;
+恺 > enjoy;
+擞 > shake;
+箕 > sieve;
+涓 > brook;
+噼 > sound;
+搐 > cramp;
+戛 > lance;
+黔 > black;
+阖 > close;
+呃 > belch;
+溉 > water;
+炀 > roast;
+皎 > white;
+榭 > kiosk;
+酪 > cream;
+傀 > great;
+孀 > widow;
+孪 > twins;
+泱 > great;
+岖 > steep;
+忸 > blush;
+瞰 > watch;
+谒 > visit;
+觊 > covet;
+氮 > xenon;
+痣 > spots;
+摒 > expel;
+俸 > wages;
+愠 > angry;
+岑 > steep;
+搽 > smear;
+扪 > stoke;
+瑚 > coral;
+皙 > white;
+绉 > crepe;
+忾 > anger;
+盂 > basin;
+珀 > amber;
+偈 > brave;
+沔 > flood;
+诩 > boast;
+芍 > peony;
+褶 > pleat;
+酗 > drunk;
+咤 > scold;
+柠 > lemon;
+诙 > tease;
+偃 > cease;
+绺 > skein;
+揿 > press;
+釉 > glaze;
+鹭 > heron;
+宓 > quiet;
+孛 > comet;
+噫 > belch;
+弋 > catch;
+龛 > niche;
+忪 > quiet;
+镂 > carve;
+骞 > raise;
+颌 > mouth;
+铠 > armor;
+鳅 > loach;
+秆 > straw;
+嶂 > cliff;
+椽 > beams;
+颦 > frown;
+淖 > slush;
+恚 > anger;
+莠 > weeds;
+橛 > a\-peg;
+阕 > close;
+咻 > shout;
+祛 > expel;
+蒺 > furze;
+衽 > lapel;
+翕 > agree;
+霾 > misty;
+砧 > anvil;
+蹉 > error;
+哂 > smile;
+胺 > amine;
+蛭 > leech;
+韪 > right;
+诨 > jokes;
+赝 > false;
+岿 > grand;
+怫 > sorry;
+荏 > beans;
+楔 > wedge;
+擘 > thumb;
+轱 > wheel;
+媾 > marry;
+痍 > wound;
+獭 > otter;
+黢 > black;
+铧 > spade;
+吒 > shout;
+疽 > ulcer;
+诟 > abuse;
+茔 > grave;
+桤 > alder;
+铆 > rivet;
+酩 > drunk;
+氵 > water;
+撺 > hurry;
+奘 > large;
+肄 > learn;
+踯 > waver;
+孢 > spore;
+鲲 > spawn;
+酊 > drunk;
+铨 > weigh;
+酽 > thick;
+阒 > alone;
+饬 > order;
+豕 > a\-pig;
+笊 > ladle;
+罅 > crack;
+钜 > steel;
+畈 > field;
+囗 > erect;
+庥 > shade;
+瓤 > flesh;
+铩 > moult;
+渖 > juice;
+忄 > heart;
+诓 > cheat;
+鹑 > quail;
+茕 > alone;
+垅 > mound;
+蟥 > leech;
+鹳 > crane;
+鹌 > quail;
+晟 > clear;
+啁 > chirp;
+醚 > ether;
+琰 > jewel;
+迨 > until;
+褫 > strip;
+鹬 > snipe;
+瞽 > blind;
+傈 > tribe;
+驽 > tired;
+谯 > tower;
+铰 > hinge;
+洌 > clear;
+堞 > plate;
+硼 > borax;
+詈 > scold;
+酯 > ester;
+镪 > coins;
+锸 > spade;
+戋 > small;
+扦 > probe;
+溷 > privy;
+俳 > actor;
+雠 > enemy;
+砻 > grind;
+蘖 > stump;
+墀 > porch;
+麴 > yeast;
+窳 > dirty;
+潋 > waves;
+洎 > until;
+饧 > sugar;
+喈 > music;
+吡 > blame;
+陟 > climb;
+鲛 > shark;
+皲 > crack;
+瘊 > warts;
+馕 > bread;
+搦 > grasp;
+垴 > small;
+阝 > place;
+厣 > shell;
+糅 > blend;
+铗 > tongs;
+阏 > block;
+剡 > sharp;
+鲂 > bream;
+溽 > moist;
+怿 > enjoy;
+艹 > grass;
+髑 > skull;
+跽 > kneel;
+簏 > a\-box;
+裥 > folds;
+钣 > plate;
+槊 > spear;
+椋 > fruit;
+缳 > noose;
+绐 > cheat;
+滢 > clear;
+龠 > flute;
+蝤 > larva;
+氆 > thick;
+埭 > a\-dam;
+埽 > broom;
+坼 > split;
+诖 > error;
+鲶 > sheat;
+貅 > brave;
+皤 > white;
+稂 > grass;
+镆 > sword;
+锞 > ingot;
+爝 > torch;
+氡 > radon;
+槭 > maple;
+彘 > swine;
+彖 > a\-hog;
+滗 > drain;
+廑 > a\-hut;
+匏 > gourd;
+蕖 > lotus;
+侔 > equal;
+鳊 > bream;
+篼 > sedan;
+蛞 > snail;
+蛲 > worms;
+虍 > tiger;
+氙 > xenon;
+赇 > bribe;
+璁 > \(gem\);
+绗 > baste;
+萏 > lotus;
+埘 > roost;
+齒 > teeth;
+齅 > smell;
+黮 > black;
+黓 > black;
+麺 > flour;
+麹 > yeast;
+麵 > flour;
+麯 > yeast;
+麫 > flour;
+麪 > flour;
+麤 > rough;
+麘 > scent;
+麁 > rough;
+鹾 > salty;
+鹺 > salty;
+鹹 > salty;
+鸲 > mynah;
+鸛 > crane;
+鸘 > eagle;
+鷸 > snipe;
+鷃 > quail;
+鶵 > chick;
+鶉 > quail;
+鵰 > eagle;
+鵪 > quail;
+鵞 > goose;
+鵝 > goose;
+鴳 > quail;
+鴪 > swoop;
+鴥 > swoop;
+鴝 > mynah;
+鱻 > fresh;
+鱮 > bream;
+鰞 > squid;
+鰍 > loach;
+鰋 > sheat;
+鯿 > bream;
+鯰 > sheat;
+鯨 > whale;
+鯤 > spawn;
+鯋 > shark;
+鯊 > shark;
+鮫 > shark;
+鮉 > bream;
+魴 > bream;
+魆 > black;
+鬒 > black;
+鬎 > favus;
+鬍 > beard;
+鬁 > favus;
+髳 > state;
+髲 > a\-wig;
+髥 > beard;
+髒 > dirty;
+髏 > skull;
+骯 > dirty;
+驩 > happy;
+驦 > horse;
+驖 > black;
+騻 > horse;
+騫 > raise;
+騠 > horse;
+騑 > horse;
+駪 > crowd;
+駞 > camel;
+駑 > tired;
+馡 > scent;
+饢 > bread;
+饘 > gruel;
+饍 > meals;
+饃 > bread;
+餻 > cakes;
+餹 > sugar;
+餳 > sugar;
+餪 > feast;
+餦 > candy;
+餜 > cakes;
+飶 > odour;
+飭 > order;
+飑 > storm;
+颽 > balmy;
+顱 > skull;
+顰 > frown;
+顣 > frown;
+顗 > quiet;
+頾 > beard;
+頠 > quiet;
+頜 > mouth;
+頀 > music;
+韺 > music;
+韤 > socks;
+韙 > right;
+韓 > fence;
+韈 > socks;
+韆 > swing;
+韁 > reins;
+鞾 > boots;
+鞵 > shoes;
+鞨 > tribe;
+鞗 > reins;
+鞃 > board;
+靦 > timid;
+靁 > thick;
+霱 > cloud;
+霙 > sleet;
+雝 > marsh;
+雛 > chick;
+隂 > shady;
+陼 > islet;
+阹 > a\-pen;
+闚 > flash;
+闔 > close;
+闋 > close;
+闊 > broad;
+闃 > alone;
+閼 > block;
+閴 > quiet;
+閦 > crowd;
+閔 > mourn;
+镟 > lathe;
+锼 > carve;
+锓 > carve;
+铘 > sword;
+钃 > metal;
+鑽 > drill;
+鑱 > spade;
+鑚 > drill;
+鑓 > spear;
+鏹 > coins;
+鏵 > spade;
+鏦 > spear;
+鏤 > carve;
+鏟 > spade;
+鏌 > sword;
+鏈 > chain;
+鏇 > lathe;
+鎬 > stove;
+鎧 > armor;
+鎗 > rifle;
+鎍 > chain;
+鍹 > spade;
+鍭 > arrow;
+鍤 > spade;
+鍏 > spade;
+鍍 > plate;
+鍉 > spoon;
+錁 > ingot;
+鋹 > sharp;
+鋸 > a\-saw;
+鋲 > rivet;
+鋟 > carve;
+鋘 > sword;
+銳 > sharp;
+銛 > sharp;
+銓 > weigh;
+鉾 > spear;
+鉼 > plate;
+鉸 > hinge;
+鉚 > rivet;
+鉅 > steel;
+鈒 > spear;
+鈑 > plate;
+鈇 > an\-ax;
+釼 > sword;
+釖 > knife;
+釅 > thick;
+釂 > drain;
+鄻 > spoil;
+郤 > crack;
+遫 > speed;
+遝 > mixed;
+逴 > argue;
+辮 > braid;
+辤 > words;
+辠 > crime;
+輓 > mourn;
+輏 > light;
+輈 > shaft;
+軱 > wheel;
+軜 > reins;
+軌 > track;
+躡 > tread;
+踆 > squat;
+趡 > place;
+贜 > booty;
+贓 > booty;
+贋 > false;
+賕 > bribe;
+賔 > guest;
+賓 > guest;
+賍 > booty;
+賄 > bribe;
+賂 > bribe;
+貿 > trade;
+貤 > steps;
+豔 > plump;
+讙 > cheer;
+讓 > allow;
+讐 > enemy;
+讎 > enemy;
+譙 > tower;
+譌 > false;
+譁 > noise;
+謬 > error;
+謑 > shame;
+謏 > scold;
+諢 > jokes;
+諠 > noisy;
+諐 > fault;
+說 > speak;
+誨 > teach;
+誆 > cheat;
+詿 > error;
+詼 > tease;
+詬 > abuse;
+詣 > reach;
+詡 > boast;
+詛 > curse;
+詖 > argue;
+詑 > cheat;
+詐 > cheat;
+訽 > blame;
+訧 > fault;
+訕 > abuse;
+訓 > teach;
+訏 > boast;
+觔 > catty;
+覬 > covet;
+規 > rules;
+襾 > cover;
+襪 > socks;
+襢 > strip;
+襍 > mixed;
+褻 > dirty;
+褺 > dirty;
+褕 > shirt;
+袵 > lapel;
+衕 > alley;
+衊 > smear;
+衁 > blood;
+蠛 > flies;
+蠗 > \(ape\);
+蠅 > flies;
+蟯 > worms;
+蟢 > caulk;
+蝨 > louse;
+蝘 > gecko;
+蝓 > snail;
+蚴 > larva;
+虣 > cruel;
+虛 > false;
+蘗 > stump;
+蘓 > thyme;
+蘋 > apple;
+藾 > shade;
+藪 > marsh;
+薖 > empty;
+薉 > dirty;
+蒞 > reach;
+葢 > cover;
+葍 > plant;
+萹 > grass;
+莿 > thorn;
+荳 > beans;
+荮 > grass;
+荄 > roots;
+茇 > grass;
+苾 > smell;
+苶 > weary;
+舗 > store;
+舖 > store;
+舋 > split;
+舉 > raise;
+臽 > a\-pit;
+臲 > jumpy;
+臢 > dirty;
+臛 > broth;
+臙 > rouge;
+臐 > broth;
+膶 > liver;
+膇 > swell;
+腫 > swell;
+腡 > lines;
+脹 > swell;
+脶 > lines;
+脢 > flesh;
+脃 > gland;
+肵 > table;
+肕 > tough;
+耞 > flail;
+翽 > whirr;
+翄 > winds;
+羱 > sheep;
+羣 > group;
+罷 > cease;
+罉 > a\-pot;
+纻 > ramie;
+繯 > noose;
+繮 > reins;
+縠 > crepe;
+縐 > crepe;
+縏 > purse;
+緞 > satin;
+綹 > skein;
+綠 > green;
+綌 > cloth;
+絎 > baste;
+絁 > rough;
+紿 > cheat;
+紵 > ramie;
+紝 > weave;
+紗 > gauze;
+紑 > fresh;
+糔 > juice;
+糓 > grain;
+粎 > metre;
+籤 > tally;
+簻 > empty;
+簛 > sieve;
+簒 > usurp;
+簁 > sieve;
+篩 > sieve;
+篏 > inlay;
+箛 > bugle;
+筳 > feast;
+筰 > cable;
+筦 > a\-key;
+竾 > flute;
+竔 > litre;
+窽 > empty;
+穧 > sheaf;
+穢 > dirty;
+穠 > thick;
+穅 > chaff;
+稾 > draft;
+稅 > taxes;
+秇 > skill;
+禠 > happy;
+禎 > lucky;
+祙 > demon;
+礶 > a\-jug;
+礱 > grind;
+磵 > brook;
+磯 > jetty;
+磡 > cliff;
+磛 > cliff;
+磈 > rocky;
+碻 > solid;
+碯 > agate;
+碩 > great;
+碁 > chess;
+硏 > grind;
+砳 > rocky;
+砠 > rocky;
+矓 > faint;
+矈 > dense;
+瞏 > round;
+瞍 > blind;
+瞇 > close;
+睘 > round;
+眹 > pupil;
+眅 > inlay;
+盻 > glare;
+盭 > cruel;
+皽 > scurf;
+皹 > crack;
+皸 > crack;
+皭 > white;
+皫 > white;
+皜 > white;
+皁 > black;
+癲 > crazy;
+癡 > silly;
+瘡 > tumor;
+瘋 > crazy;
+甞 > taste;
+甛 > sweet;
+甖 > a\-pot;
+甎 > brick;
+瓖 > inlay;
+瓈 > glass;
+瑪 > agate;
+瑔 > \(jade;
+瑑 > carve;
+珖 > carat;
+玈 > black;
+獝 > devil;
+獎 > prize;
+狵 > blend;
+牜 > an\-ox;
+牔 > gable;
+爓 > flame;
+爍 > shine;
+燿 > shine;
+燾 > shine;
+燦 > vivid;
+燙 > scald;
+燏 > blaze;
+燄 > flame;
+燂 > smoke;
+熛 > blaze;
+熒 > shine;
+煬 > roast;
+煢 > alone;
+煉 > smelt;
+焔 > flame;
+烓 > stove;
+烋 > boast;
+炰 > roast;
+炧 > ashes;
+灣 > a\-bay;
+灢 > muddy;
+灔 > waves;
+瀺 > sound;
+瀲 > waves;
+瀏 > clear;
+瀋 > juice;
+瀆 > ditch;
+瀅 > clear;
+瀁 > waves;
+濫 > flood;
+澨 > shore;
+澗 > brook;
+澑 > slide;
+澆 > spray;
+潷 > drain;
+潝 > agree;
+漑 > water;
+漈 > shore;
+湩 > muddy;
+湣 > mixed;
+渾 > muddy;
+淸 > clear;
+淢 > ditch;
+淚 > tears;
+淊 > drown;
+浥 > moist;
+洴 > sound;
+洚 > flood;
+洏 > tears;
+泚 > clear;
+沲 > float;
+汳 > henan;
+汎 > float;
+氹 > ditch;
+氥 > xenon;
+氜 > clear;
+殑 > swoon;
+歾 > drown;
+歕 > spurt;
+歓 > happy;
+歈 > songs;
+欼 > drink;
+欸 > sighs;
+欬 > cough;
+欙 > sedan;
+欖 > olive;
+櫱 > yeast;
+櫈 > bench;
+檸 > lemon;
+檯 > table;
+檨 > mango;
+檔 > shelf;
+樴 > stake;
+樕 > shrub;
+樏 > sedan;
+樁 > stake;
+槼 > rules;
+槓 > lever;
+槍 > spear;
+榿 > alder;
+榮 > glory;
+楳 > plums;
+楅 > buard;
+楄 > block;
+椈 > cedar;
+棊 > chess;
+棁 > joist;
+梲 > joist;
+梐 > fence;
+桯 > table;
+桭 > eaves;
+桚 > press;
+栵 > hedge;
+栫 > fence;
+栔 > carve;
+栍 > a\-lot;
+柶 > ladle;
+杧 > mango;
+杕 > alone;
+朮 > skill;
+朖 > clear;
+朅 > brave;
+曵 > trail;
+曨 > vague;
+斆 > teach;
+斅 > teach;
+敺 > expel;
+敔 > gavel;
+敎 > teach;
+攬 > grasp;
+攛 > hurry;
+擻 > shake;
+擲 > throw;
+擰 > pinch;
+擠 > crowd;
+撳 > press;
+摳 > raise;
+摏 > pound;
+搤 > seize;
+搊 > pluck;
+搉 > knock;
+揵 > carry;
+揅 > grind;
+掄 > swing;
+捿 > perch;
+捫 > stoke;
+挌 > fight;
+拋 > throw;
+拃 > grope;
+扢 > caper;
+戭 > spear;
+戣 > lance;
+戞 > lance;
+戔 > small;
+懽 > happy;
+懥 > angry;
+懠 > angry;
+懌 > enjoy;
+憭 > clear;
+憚 > dread;
+憊 > tired;
+慬 > brave;
+慍 > angry;
+愾 > anger;
+愷 > enjoy;
+愞 > timid;
+愃 > relax;
+悾 > naive;
+悰 > enjoy;
+悆 > happy;
+恵 > favor;
+恓 > vexed;
+彑 > snout;
+彐 > snout;
+彂 > issue;
+弉 > large;
+廕 > shade;
+幭 > cover;
+幪 > cover;
+幦 > cover;
+幠 > cover;
+帒 > a\-bag;
+帋 > paper;
+巭 > study;
+巛 > river;
+巖 > cliff;
+巌 > cliff;
+巋 > grand;
+巉 > steep;
+巃 > lofty;
+嶰 > gorge;
+嶡 > table;
+嶞 > ridge;
+嶔 > lofty;
+嶇 > steep;
+嵜 > rough;
+嵒 > cliff;
+嵂 > lofty;
+崱 > lofty;
+崚 > hilly;
+崕 > cliff;
+峽 > gorge;
+峩 > lofty;
+屶 > lofty;
+屴 > lofty;
+屪 > penis;
+屌 > penis;
+尰 > swell;
+尙 > still;
+寬 > broad;
+寛 > broad;
+寁 > quick;
+宻 > dense;
+宍 > flesh;
+孿 > twins;
+孖 > twins;
+嫚 > scorn;
+姪 > niece;
+奰 > anger;
+奬 > prize;
+奨 > prize;
+奝 > large;
+壠 > mound;
+壟 > grave;
+壆 > stiff;
+墺 > walls;
+墳 > grave;
+墝 > stony;
+墍 > paint;
+墈 > cliff;
+塼 > brick;
+塜 > dusty;
+塙 > truly;
+塒 > roost;
+塋 > grave;
+塈 > paint;
+堿 > salty;
+堽 > mound;
+堖 > small;
+埳 > a\-pit;
+埌 > waste;
+埆 > stony;
+垚 > mound;
+坿 > mound;
+坰 > wilds;
+圌 > fence;
+囑 > order;
+囅 > smile;
+嚮 > guide;
+嚭 > mound;
+嚬 > frown;
+嚡 > rough;
+嚐 > taste;
+嚇 > scare;
+噺 > story;
+噴 > spurt;
+噭 > shout;
+噦 > belch;
+嘢 > thing;
+嘒 > sharp;
+嗛 > pouch;
+嗙 > boast;
+嗐 > alas\!;
+喴 > hello;
+啲 > a\-few;
+啢 > ounce;
+啍 > creak;
+唡 > ounce;
+唎 > sound;
+哶 > bleat;
+哕 > belch;
+咢 > sound;
+咍 > laugh;
+吰 > clang;
+吣 > vomit;
+叚 > false;
+厺 > to\-go;
+厹 > spear;
+厴 > shell;
+厪 > a\-hut;
+厖 > bulky;
+卻 > still;
+卬 > lofty;
+匜 > basin;
+勻 > equal;
+劔 > sword;
+劒 > sword;
+劎 > sword;
+剱 > sword;
+剠 > brand;
+刂 > knife;
+凼 > ditch;
+凈 > clean;
+冩 > write;
+冧 > a\-bud;
+冚 > cover;
+冖 > cover;
+冁 > smile;
+儼 > grave;
+儎 > carry;
+儌 > lucky;
+僿 > small;
+僄 > light;
+傫 > tired;
+偐 > false;
+偁 > state;
+倖 > lucky;
+俶 > start;
+侐 > quiet;
+侁 > crowd;
+佺 > fairy;
+佌 > small;
+伩 > trust;
+仫 > tribe;
+亾 > death;
+亱 > night;
+乕 > tiger;
+丵 > thick;
+丯 > dense;
+丮 > catch;
+丌 > table;
+丅 > under;
+丄 > above;
+䶓 > ramie;
+䶏 > tears;
+䶋 > sound;
+䶇 > a\-rat;
+䶆 > a\-rat;
+䵭 > black;
+䵥 > black;
+䵟 > black;
+䴺 > cakes;
+䴹 > cakes;
+䴵 > cakes;
+䴲 > flour;
+䴞 > salty;
+䳽 > crane;
+䳱 > ducks;
+䳘 > goose;
+䳗 > goose;
+䲡 > loach;
+䲑 > spawn;
+䱜 > shark;
+䱖 > shark;
+䱋 > spawn;
+䰢 > ghost;
+䰗 > a\-lot;
+䰒 > vague;
+䰑 > beard;
+䰅 > beard;
+䯾 > hairy;
+䯸 > a\-wig;
+䯍 > bones;
+䭽 > group;
+䭦 > cakes;
+䭟 > cakes;
+䭐 > cakes;
+䭎 > cakes;
+䭅 > cakes;
+䬿 > small;
+䬵 > syrup;
+䬮 > syrup;
+䫵 > twins;
+䫖 > timid;
+䫎 > short;
+䪻 > a\-cap;
+䪱 > cheek;
+䪯 > sound;
+䪛 > group;
+䪘 > right;
+䪗 > shoes;
+䪂 > reins;
+䩺 > boots;
+䩖 > shoes;
+䩕 > clogs;
+䩓 > boots;
+䩅 > broad;
+䨹 > swift;
+䨷 > sleet;
+䨘 > sleet;
+䨋 > cruel;
+䨄 > quail;
+䨁 > ducks;
+䧽 > small;
+䧪 > sissy;
+䧎 > a\-pit;
+䧆 > a\-pit;
+䦾 > lofty;
+䦢 > broad;
+䦞 > extra;
+䦗 > quiet;
+䦔 > a\-peg;
+䥵 > lines;
+䥘 > wrong;
+䥓 > a\-hoe;
+䥁 > armor;
+䤺 > an\-ax;
+䤴 > armor;
+䤪 > short;
+䤢 > metal;
+䤜 > blunt;
+䤚 > plums;
+䤙 > dregs;
+䣱 > drunk;
+䣧 > black;
+䢔 > mixed;
+䢑 > angry;
+䡖 > still;
+䠢 > weary;
+䠠 > to\-go;
+䟠 > swift;
+䟜 > break;
+䞈 > money;
+䝭 > wages;
+䝫 > money;
+䝒 > a\-sow;
+䝏 > a\-sow;
+䝎 > a\-pig;
+䝊 > a\-sow;
+䝅 > a\-pig;
+䝃 > beans;
+䜴 > brave;
+䜎 > sound;
+䜍 > sweet;
+䜌 > chaos;
+䜊 > noise;
+䛭 > angry;
+䛡 > words;
+䚴 > anger;
+䚟 > horns;
+䚉 > o\-see;
+䘊 > flies;
+䗕 > bends;
+䖎 > tiger;
+䖋 > cruel;
+䖈 > cruel;
+䒸 > grass;
+䒑 > grass;
+䑚 > sweet;
+䑕 > a\-rat;
+䑁 > fatty;
+䐬 > crisp;
+䐝 > thick;
+䐗 > a\-pig;
+䐇 > clear;
+䏵 > plump;
+䏳 > olein;
+䏯 > moles;
+䏧 > fatty;
+䏚 > small;
+䎐 > hairy;
+䎇 > quick;
+䎄 > hairy;
+䍥 > smoky;
+䍌 > a\-jar;
+䌻 > wings;
+䌑 > tight;
+䌐 > ropes;
+䋵 > quick;
+䋥 > lines;
+䋚 > wings;
+䋙 > reins;
+䊾 > ropes;
+䊻 > silky;
+䊹 > small;
+䊀 > paste;
+䉿 > paste;
+䉞 > a\-box;
+䈉 > a\-fan;
+䇲 > tongs;
+䇤 > sharp;
+䇂 > fault;
+䆹 > empty;
+䆜 > empty;
+䆁 > syrup;
+䅵 > chaff;
+䅙 > grass;
+䅘 > wheat;
+䅆 > dense;
+䄾 > thick;
+䄥 > a\-god;
+䄢 > pious;
+䃬 > rocky;
+䃛 > chain;
+䃙 > rocks;
+䃗 > rocks;
+䂽 > rocks;
+䂼 > rocks;
+䂺 > rocks;
+䂰 > rocks;
+䂮 > stone;
+䂦 > tired;
+䂟 > rocks;
+䂖 > rocks;
+䂕 > short;
+䂔 > short;
+䂑 > short;
+䂏 > short;
+䁫 > muddy;
+䁟 > wrong;
+䁗 > light;
+䁍 > blind;
+䀼 > angry;
+䀇 > a\-pot;
+㿷 > rough;
+㿮 > green;
+㿩 > light;
+㿥 > shine;
+㿤 > white;
+㿝 > sweet;
+㿕 > ulcer;
+㾰 > choke;
+㾧 > favus;
+㾡 > ulcer;
+㾚 > itchy;
+㾐 > ulcer;
+㽿 > ulcer;
+㽡 > field;
+㼏 > a\-bad;
+㻭 > clear;
+㺃 > a\-dog;
+㹻 > puppy;
+㹷 > swine;
+㹋 > a\-cow;
+㹀 > a\-cow;
+㸺 > a\-cow;
+㸅 > ashes;
+㸃 > a\-dot;
+㷿 > flame;
+㷥 > steam;
+㷔 > flame;
+㷑 > smoke;
+㷇 > great;
+㶳 > ashes;
+㶰 > flame;
+㶦 > ashes;
+㶖 > rapid;
+㵹 > waves;
+㴃 > tears;
+㳹 > flood;
+㳰 > ditch;
+㳮 > urine;
+㳛 > dirty;
+㲧 > hairy;
+㲆 > noise;
+㰼 > greed;
+㰪 > sound;
+㰥 > laugh;
+㰢 > cough;
+㯷 > dates;
+㮥 > sails;
+㮢 > fruit;
+㮕 > fruit;
+㬶 > flesh;
+㬳 > light;
+㬦 > brave;
+㬚 > light;
+㬕 > light;
+㬏 > light;
+㬊 > light;
+㫼 > clear;
+㫹 > light;
+㫶 > light;
+㫰 > light;
+㫫 > clear;
+㫜 > light;
+㫛 > light;
+㫗 > thick;
+㫕 > light;
+㩡 > shake;
+鶴 > crane;
+㨛 > swift;
+㨗 > alert;
+嗀 > vomit;
+廓 > broad;
+糖 > sugar;
+㨃 > a\-row;
+炙 > roast;
+粒 > grain;
+立 > stand;
+溺 > drown;
+離 > leave;
+利 > gains;
+㧛 > thick;
+輪 > wheel;
+類 > class;
+㧍 > alike;
+溜 > slide;
+樂 > happy;
+尿 > urine;
+㦷 > brave;
+㦮 > money;
+說 > speak;
+裂 > split;
+㦡 > happy;
+烈 > fiery;
+蓮 > lotus;
+㦘 > swift;
+煉 > smelt;
+㦑 > anger;
+力 > power;
+女 > woman;
+㥿 > proud;
+㥷 > quiet;
+㥲 > anger;
+說 > speak;
+北 > north;
+怒 > anger;
+樂 > happy;
+㥓 > happy;
+累 > tired;
+淚 > tears;
+㥊 > angry;
+賂 > bribe;
+壟 > grave;
+㥂 > quick;
+綠 > green;
+碌 > rough;
+鷺 > heron;
+㤱 > anger;
+勞 > labor;
+朗 > clear;
+濫 > flood;
+㤣 > noble;
+㤜 > crazy;
+酪 > cream;
+㤙 > grace;
+烙 > brand;
+樂 > happy;
+㣲 > small;
+㣟 > to\-go;
+㣏 > still;
+㣉 > labor;
+㢛 > small;
+㢙 > a\-hut;
+㡶 > dwell;
+㡴 > sound;
+㡕 > sharp;
+㡐 > flags;
+㡌 > a\-hat;
+㡇 > colar;
+㡄 > colar;
+㠪 > great;
+㠕 > lofty;
+㠍 > lofty;
+㟵 > ridge;
+㟮 > lofty;
+㟠 > ridge;
+㟅 > lofty;
+㟁 > shore;
+㞾 > a\-nun;
+㞙 > urine;
+㞕 > chips;
+㞒 > lusty;
+㞏 > small;
+㞃 > tired;
+㝽 > short;
+㝺 > small;
+㝤 > night;
+㝣 > still;
+㝜 > night;
+㝖 > right;
+㝕 > peace;
+㝏 > alone;
+㝇 > quail;
+㜽 > child;
+㜧 > plump;
+㜜 > proud;
+㛨 > chaos;
+㛚 > equal;
+㛃 > clean;
+㛁 > quick;
+㚮 > happy;
+㚕 > great;
+㚀 > lofty;
+㙯 > skill;
+㙥 > muddy;
+㙓 > earth;
+㙄 > below;
+㘋 > sound;
+㗅 > angry;
+㖤 > wrath;
+㖔 > silly;
+㖏 > angry;
+㖀 > sound;
+㕳 > noisy;
+㕖 > plain;
+㕎 > caves;
+㕁 > still;
+㔻 > great;
+㓻 > tough;
+㓝 > a\-law;
+㓜 > young;
+㓛 > merit;
+㓙 > cruel;
+㓗 > clean;
+㓁 > a\-net;
+㒩 > naked;
+㒌 > along;
+㑶 > anger;
+㑩 > smart;
+㑨 > great;
+㑦 > anger;
+㑗 > a\-god;
+㑋 > small;
+㑁 > short;
+㐱 > bushy;
+㐫 > cruel;
+有 > have;
+知 > know;
+这 > this;
+矜 > pity;
+忙 > busy;
+来 > come;
+近 > near;
+道 > path;
+也 > also;
+时 > time;
+年 > year;
+瞻 > look;
+辺 > edge;
+就 > just;
+那 > that;
+生 > life;
+自 > self;
+瞬 > wink;
+过 > pass;
+循 > obey;
+從 > from;
+従 > from;
+多 > much;
+好 > good;
+彼 > that;
+起 > rise;
+只 > only;
+作 > make;
+当 > bear;
+形 > form;
+看 > look;
+开 > open;
+手 > hand;
+弱 > weak;
+本 > root;
+头 > head;
+真 > real;
+面 > face;
+公 > fair;
+同 > same;
+眞 > real;
+从 > from;
+动 > move;
+长 > long;
+載 > load;
+将 > will;
+但 > only;
+身 > body;
+高 > high;
+把 > hold;
+此 > this;
+实 > real;
+盥 > wash;
+月 > moon;
+种 > seed;
+軍 > army;
+車 > cart;
+己 > self;
+部 > part;
+名 > name;
+皮 > skin;
+机 > desk;
+给 > give;
+等 > rank;
+座 > seat;
+很 > very;
+最 > most;
+店 > shop;
+躍 > skip;
+走 > walk;
+四 > four;
+门 > gate;
+东 > east;
+庁 > hall;
+西 > west;
+平 > flat;
+登 > rise;
+听 > hear;
+幸 > luck;
+蹴 > kick;
+军 > army;
+五 > five;
+帷 > tent;
+太 > very;
+帶 > belt;
+帳 > tent;
+帯 > belt;
+体 > body;
+席 > seat;
+希 > rare;
+踊 > leap;
+书 > book;
+九 > nine;
+跳 > jump;
+路 > road;
+命 > life;
+痩 > thin;
+活 > live;
+左 > left;
+巣 > nest;
+表 > show;
+跟 > heel;
+车 > cart;
+痛 > pain;
+痕 > scar;
+痒 > itch;
+感 > feel;
+足 > foot;
+金 > gold;
+何 > what;
+嶮 > high;
+更 > more;
+疋 > roll;
+做 > work;
+计 > plan;
+當 > bear;
+王 > king;
+各 > each;
+留 > stop;
+畏 > fear;
+边 > edge;
+男 > male;
+风 > wind;
+崗 > post;
+毛 > hair;
+峰 > peak;
+爱 > love;
+瓦 > tile;
+賣 > sell;
+賃 > rent;
+貸 > lend;
+岸 > bank;
+结 > knot;
+岬 > cape;
+流 > flow;
+貧 > poor;
+青 > blue;
+管 > pipe;
+負 > load;
+连 > join;
+队 > team;
+带 > belt;
+展 > open;
+屑 > bits;
+领 > neck;
+屈 > bend;
+居 > live;
+尾 > tail;
+半 > half;
+候 > wait;
+步 > step;
+深 > deep;
+区 > area;
+尋 > seek;
+求 > seek;
+球 > ball;
+告 > tell;
+寸 > inch;
+實 > real;
+满 > fill;
+李 > plum;
+息 > rest;
+寒 > cold;
+寄 > send;
+脸 > face;
+宿 > stop;
+取 > take;
+室 > room;
+実 > real;
+宛 > seem;
+孩 > baby;
+广 > wide;
+玉 > jade;
+玄 > deep;
+火 > fire;
+讀 > read;
+譽 > fame;
+则 > rule;
+首 > head;
+失 > lose;
+拿 > take;
+斯 > this;
+读 > read;
+包 > wrap;
+猶 > like;
+落 > fall;
+济 > help;
+喜 > like;
+謡 > sing;
+编 > knit;
+谈 > talk;
+拉 > pull;
+謀 > plan;
+狼 > wolf;
+杀 > kill;
+根 > root;
+嫌 > hate;
+談 > talk;
+克 > gram;
+状 > form;
+示 > show;
+冲 > soar;
+読 > read;
+誉 > fame;
+推 > push;
+称 > call;
+試 > test;
+号 > mark;
+亚 > asia;
+港 > port;
+般 > sort;
+爪 > claw;
+刚 > hard;
+陆 > land;
+确 > sure;
+計 > plan;
+具 > tool;
+威 > pomp;
+帮 > help;
+线 > line;
+触 > butt;
+角 > horn;
+燒 > burn;
+节 > knot;
+燃 > burn;
+岁 > year;
+妻 > wife;
+需 > need;
+酒 > wine;
+铁 > iron;
+覗 > peek;
+闻 > hear;
+标 > mark;
+医 > cure;
+襲 > raid;
+煮 > cook;
+土 > soil;
+软 > soft;
+煤 > coal;
+仅 > only;
+套 > case;
+户 > door;
+焼 > burn;
+项 > neck;
+背 > back;
+焚 > burn;
+暗 > dark;
+须 > must;
+製 > make;
+裸 > bare;
+売 > sell;
+树 > tree;
+沉 > sink;
+职 > duty;
+细 > fine;
+補 > mend;
+停 > stop;
+助 > help;
+冷 > cold;
+墮 > fall;
+致 > send;
+木 > tree;
+袢 > robe;
+旁 > side;
+炊 > cook;
+灼 > burn;
+塵 > dust;
+塩 > salt;
+歌 > song;
+堂 > hall;
+试 > test;
+灌 > pour;
+验 > test;
+塀 > wall;
+止 > stop;
+堵 > wall;
+堤 > dike;
+堕 > fall;
+恶 > evil;
+堆 > heap;
+慢 > slow;
+堅 > hard;
+堀 > cave;
+蟻 > ants;
+藏 > hide;
+负 > load;
+埋 > bury;
+澹 > calm;
+垢 > dirt;
+融 > melt;
+潮 > tide;
+坦 > flat;
+潜 > hide;
+救 > save;
+丝 > silk;
+齊 > even;
+鼻 > nose;
+漬 > soak;
+鼓 > drum;
+永 > long;
+漏 > leak;
+录 > copy;
+遇 > meet;
+滿 > fill;
+船 > ship;
+黴 > mold;
+滴 > drip;
+雨 > rain;
+蛙 > frog;
+滑 > slip;
+麻 > hemp;
+蚤 > flea;
+齐 > even;
+準 > rule;
+溌 > pour;
+充 > fill;
+鹿 > deer;
+寻 > seek;
+宁 > calm;
+鹽 > salt;
+沙 > sand;
+卖 > sell;
+顺 > obey;
+號 > mark;
+善 > good;
+噛 > bite;
+良 > good;
+坚 > hard;
+噂 > meet;
+拍 > clap;
+掉 > turn;
+済 > help;
+哭 > weep;
+嘆 > sigh;
+午 > noon;
+卡 > card;
+雪 > snow;
+淵 > gulf;
+淡 > weak;
+嗟 > sigh;
+淑 > good;
+藍 > blue;
+淋 > drip;
+涼 > cool;
+载 > load;
+刺 > stab;
+薪 > fuel;
+销 > melt;
+鱼 > fish;
+喚 > call;
+喘 > pant;
+盘 > tray;
+薔 > rose;
+喇 > horn;
+薄 > thin;
+啼 > weep;
+架 > rack;
+浸 > soak;
+款 > item;
+浪 > wave;
+蕩 > pond;
+洪 > vast;
+镇 > town;
+浄 > pure;
+旅 > trip;
+唾 > spit;
+唱 > sing;
+蔵 > hide;
+唯 > only;
+洩 > leak;
+洞 > cave;
+骨 > bone;
+洗 > wash;
+唖 > dumb;
+鴉 > crow;
+唇 > lips;
+泳 > dive;
+哲 > wise;
+哩 > mile;
+墙 > wall;
+圣 > holy;
+鳥 > bird;
+跃 > skip;
+晓 > dawn;
+泄 > leak;
+隐 > hide;
+蒼 > blue;
+恐 > fear;
+沼 > lake;
+付 > give;
+厅 > hall;
+咬 > bite;
+腿 > legs;
+沖 > pour;
+硬 > hard;
+沈 > sink;
+售 > sell;
+遗 > lose;
+探 > find;
+葬 > bury;
+缓 > slow;
+葦 > reed;
+池 > pool;
+烧 > burn;
+葉 > leaf;
+束 > bind;
+呆 > dull;
+吻 > kiss;
+吹 > blow;
+休 > rest;
+叹 > sigh;
+氏 > clan;
+签 > sign;
+氈 > felt;
+奶 > milk;
+毬 > ball;
+菩 > herb;
+叢 > bush;
+挂 > hang;
+航 > sail;
+毘 > help;
+拳 > fist;
+乘 > ride;
+袁 > robe;
+址 > site;
+毆 > beat;
+殿 > hall;
+殺 > kill;
+核 > seed;
+补 > mend;
+赞 > help;
+亦 > also;
+歳 > year;
+柔 > soft;
+歩 > step;
+惜 > pity;
+魚 > fish;
+歎 > sigh;
+魂 > soul;
+乔 > tall;
+粮 > food;
+茫 > vast;
+谋 > plan;
+敏 > fast;
+茎 > stem;
+零 > zero;
+荡 > pond;
+勾 > hook;
+犹 > like;
+髮 > hair;
+髪 > hair;
+乃 > then;
+抬 > lift;
+體 > body;
+苔 > moss;
+動 > move;
+启 > open;
+冒 > risk;
+穷 > poor;
+檣 > mast;
+侧 > side;
+旦 > dawn;
+纯 > pure;
+闭 > shut;
+凉 > cool;
+碗 > bowl;
+剥 > peel;
+滚 > turn;
+润 > soft;
+剛 > hard;
+驗 > test;
+則 > rule;
+蓝 > blue;
+樹 > tree;
+蛋 > eggs;
+促 > urge;
+颜 > face;
+贫 > poor;
+杰 > hero;
+舟 > boat;
+験 > test;
+恋 > love;
+迟 > late;
+穴 > cave;
+赖 > rely;
+駛 > sail;
+駒 > colt;
+凌 > pure;
+乌 > crow;
+岗 > post;
+铺 > shop;
+馴 > tame;
+伍 > five;
+躲 > hide;
+箱 > case;
+帐 > tent;
+膝 > knee;
+膚 > skin;
+悉 > know;
+册 > book;
+冊 > book;
+盈 > fill;
+拖 > drag;
+昏 > dusk;
+戒 > warn;
+页 > page;
+尘 > dust;
+脣 > lips;
+井 > well;
+汪 > vast;
+脇 > ribs;
+脅 > ribs;
+恰 > just;
+椀 > bowl;
+描 > copy;
+乏 > lack;
+胞 > womb;
+棚 > tent;
+怜 > pity;
+佳 > good;
+鸟 > bird;
+僅 > only;
+風 > wind;
+梨 > pear;
+弯 > bend;
+亏 > lose;
+傑 > hero;
+酸 > tart;
+聽 > hear;
+職 > duty;
+桶 > pail;
+聴 > hear;
+瘦 > thin;
+側 > side;
+绩 > spin;
+聞 > hear;
+聖 > holy;
+顔 > face;
+顏 > face;
+牵 > drag;
+頼 > rely;
+租 > rent;
+頸 > neck;
+扭 > turn;
+頭 > head;
+擦 > wipe;
+殷 > many;
+頚 > neck;
+領 > neck;
+盼 > look;
+吟 > sing;
+耕 > plow;
+苍 > blue;
+順 > obey;
+項 > neck;
+宏 > wide;
+頁 > page;
+娃 > baby;
+暖 > warm;
+锁 > lock;
+砍 > hack;
+係 > bind;
+挨 > near;
+慈 > kind;
+羹 > soup;
+羮 > soup;
+鞭 > whip;
+羨 > envy;
+窝 > nest;
+杜 > stop;
+撤 > omit;
+來 > come;
+東 > east;
+筹 > chip;
+稀 > rare;
+杖 > cane;
+拨 > move;
+踢 > kick;
+迁 > move;
+佇 > wait;
+袭 > raid;
+驶 > sail;
+霰 > hail;
+惧 > fear;
+纽 > knot;
+丛 > bush;
+悠 > long;
+曼 > long;
+書 > book;
+缠 > wrap;
+滋 > grow;
+碧 > jade;
+唤 > call;
+胁 > ribs;
+谱 > list;
+隱 > hide;
+丘 > hill;
+亞 > asia;
+纒 > wrap;
+杆 > pole;
+纏 > wrap;
+隊 > team;
+悬 > hang;
+隈 > cove;
+崔 > high;
+纂 > edit;
+唉 > alas;
+暁 > dawn;
+笼 > cage;
+陸 > land;
+繪 > draw;
+繩 > rope;
+慨 > sigh;
+乗 > ride;
+绳 > rope;
+時 > time;
+矿 > mine;
+遣 > send;
+镖 > dart;
+遵 > obey;
+兆 > omen;
+钓 > fish;
+披 > wear;
+昇 > rise;
+縄 > rope;
+昂 > rise;
+緩 > slow;
+編 > knit;
+抄 > copy;
+债 > debt;
+肤 > skin;
+歇 > rest;
+開 > open;
+閉 > shut;
+斉 > even;
+斃 > kill;
+罕 > rare;
+門 > gate;
+長 > long;
+贷 > lend;
+絵 > draw;
+颈 > neck;
+絲 > silk;
+脖 > neck;
+堡 > fort;
+絨 > silk;
+給 > give;
+赐 > give;
+颂 > laud;
+結 > knot;
+砖 > tile;
+絆 > loop;
+哑 > dumb;
+細 > fine;
+滩 > bank;
+钉 > nail;
+哄 > coax;
+铃 > bell;
+純 > pure;
+紐 > knot;
+紋 > line;
+拚 > risk;
+糸 > silk;
+糧 > food;
+契 > deed;
+懒 > lazy;
+猎 > hunt;
+嵩 > high;
+盐 > salt;
+摺 > fold;
+籠 > cage;
+陵 > hill;
+裹 > wrap;
+绘 > draw;
+鐵 > iron;
+鐡 > iron;
+篭 > cage;
+篤 > deep;
+挽 > pull;
+粹 > pure;
+節 > knot;
+掣 > drag;
+掛 > hang;
+鎖 > lock;
+箋 > note;
+捲 > curl;
+泼 > pour;
+秃 > bald;
+録 > copy;
+绑 > bind;
+鸭 > duck;
+掀 > lift;
+纹 > line;
+趟 > time;
+吼 > roar;
+窺 > peep;
+窶 > poor;
+叠 > pile;
+啸 > roar;
+窮 > poor;
+銑 > mill;
+婴 > baby;
+躬 > body;
+毙 > kill;
+逸 > flee;
+琼 > jade;
+鉄 > iron;
+挪 > move;
+晌 > noon;
+戸 > door;
+鈴 > bell;
+稱 > call;
+贱 > mean;
+種 > seed;
+钩 > hook;
+戀 > love;
+懼 > fear;
+懸 > hang;
+釣 > fish;
+釘 > nail;
+鸦 > crow;
+狮 > lion;
+妮 > maid;
+禿 > bald;
+窑 > kiln;
+塘 > pond;
+纤 > fine;
+醫 > cure;
+憩 > rest;
+憐 > pity;
+憎 > hate;
+羡 > envy;
+慾 > lust;
+祷 > pray;
+舆 > cart;
+祈 > pray;
+嫩 > soft;
+蹄 > hoof;
+愛 > love;
+鄙 > mean;
+惡 > evil;
+沧 > blue;
+確 > sure;
+悪 > evil;
+帆 > sail;
+涵 > soak;
+邊 > edge;
+澡 > wash;
+遺 > lose;
+遲 > late;
+烤 > bake;
+峻 > high;
+過 > pass;
+運 > luck;
+尬 > limp;
+遅 > late;
+遁 > hide;
+週 > week;
+佑 > help;
+連 > join;
+怠 > idle;
+這 > this;
+砂 > sand;
+胶 > glue;
+谣 > sing;
+梳 > comb;
+祁 > pray;
+啤 > beer;
+铸 > melt;
+躯 > body;
+酿 > brew;
+捣 > hull;
+玫 > rose;
+噢 > moan;
+纺 > spin;
+窟 > hole;
+兑 > cash;
+冥 > dark;
+觅 > seek;
+沸 > boil;
+扁 > flat;
+眨 > wink;
+瘾 > rash;
+黯 > dark;
+妞 > girl;
+俏 > like;
+孽 > evil;
+弊 > evil;
+妃 > wife;
+壤 > soil;
+翔 > soar;
+巩 > bind;
+帜 > flag;
+蕾 > buds;
+铅 > lead;
+绒 > silk;
+窥 > peep;
+锣 > gong;
+撼 > move;
+嗦 > suck;
+轴 > axle;
+涕 > tear;
+笃 > deep;
+窍 > hole;
+扳 > pull;
+遏 > stop;
+吆 > bawl;
+熔 > melt;
+聋 > deaf;
+募 > levy;
+疤 > scar;
+蚁 > ants;
+悯 > pity;
+烘 > bake;
+牟 > make;
+崭 > high;
+巢 > nest;
+沮 > stop;
+湛 > deep;
+晦 > dark;
+驹 > colt;
+诫 > warn;
+墩 > heap;
+巍 > high;
+攒 > save;
+绊 > loop;
+懈 > idle;
+殴 > beat;
+皂 > soap;
+蟹 > crab;
+绷 > bind;
+匿 > hide;
+唠 > chat;
+苇 > reed;
+拽 > drag;
+烹 > boil;
+啃 > gnaw;
+羔 > lamb;
+锈 > rust;
+亢 > high;
+肋 > ribs;
+衲 > mend;
+掐 > hold;
+懦 > weak;
+腓 > calf;
+彷 > like;
+骡 > mule;
+醇 > rich;
+驯 > tame;
+纬 > woof;
+犁 > plow;
+拯 > help;
+龚 > give;
+蛤 > clam;
+戮 > kill;
+毡 > felt;
+咀 > suck;
+呱 > wail;
+戎 > arms;
+蔼 > lush;
+茸 > soft;
+礁 > reef;
+闩 > bolt;
+涤 > wash;
+渍 > soak;
+跛 > lame;
+蟆 > frog;
+偌 > thus;
+邑 > area;
+匾 > flat;
+笺 > note;
+箍 > hoop;
+噬 > bite;
+蟠 > coil;
+赁 > rent;
+腌 > salt;
+掂 > heft;
+遐 > afar;
+甬 > path;
+僮 > page;
+垛 > heap;
+吠 > bark;
+踵 > heel;
+蛾 > moth;
+耘 > weed;
+暄 > warm;
+螃 > crab;
+啕 > wail;
+蟾 > toad;
+筏 > raft;
+籽 > seed;
+犊 > calf;
+煦 > kind;
+臊 > rank;
+撬 > lift;
+毗 > help;
+蹿 > leap;
+咆 > roar;
+鲤 > carp;
+辕 > axle;
+瀚 > vast;
+芋 > taro;
+雹 > hail;
+鹪 > wren;
+骼 > bone;
+莘 > long;
+谧 > calm;
+蜕 > molt;
+焊 > weld;
+耙 > rake;
+缄 > seal;
+漩 > eddy;
+饵 > bait;
+辍 > stop;
+谑 > jeer;
+恁 > that;
+傩 > rich;
+瘠 > thin;
+嵘 > high;
+峥 > high;
+钅 > gold;
+湮 > bury;
+颏 > chin;
+铎 > bell;
+蔷 > rose;
+豺 > wolf;
+熨 > iron;
+呷 > suck;
+闳 > gate;
+芮 > tiny;
+陨 > fall;
+璨 > gems;
+泵 > pump;
+翱 > soar;
+戕 > kill;
+莓 > moss;
+豌 > peas;
+堑 > moat;
+潼 > high;
+疵 > flaw;
+迤 > wind;
+怵 > fear;
+榈 > palm;
+儆 > warn;
+嗥 > roar;
+礴 > fill;
+鬃 > mane;
+岐 > high;
+啻 > only;
+咝 > hiss;
+揄 > lift;
+潸 > weep;
+讴 > sing;
+趄 > weak;
+邋 > rags;
+胤 > heir;
+栉 > comb;
+粕 > lees;
+颔 > chin;
+啮 > bite;
+轲 > axle;
+孱 > weak;
+挞 > flog;
+镫 > lamp;
+臧 > good;
+鹜 > duck;
+昕 > dawn;
+锷 > high;
+铄 > melt;
+辶 > walk;
+阄 > lots;
+锌 > zinc;
+荻 > reed;
+喙 > beak;
+蜍 > toad;
+缢 > hang;
+柢 > root;
+窠 > nest;
+肛 > anus;
+誊 > copy;
+跎 > slip;
+聩 > deaf;
+痂 > scab;
+鸢 > kite;
+抻 > pull;
+沤 > soak;
+涿 > drip;
+牦 > tail;
+猷 > plan;
+墉 > wall;
+暹 > rise;
+闱 > gate;
+轭 > yoke;
+弭 > stop;
+洵 > true;
+瓯 > bowl;
+濠 > moat;
+圩 > dike;
+羸 > weak;
+癯 > thin;
+瘢 > scar;
+幄 > tent;
+泅 > swim;
+矾 > alum;
+蚩 > worm;
+鸷 > hawk;
+蹇 > lame;
+耋 > aged;
+苒 > lush;
+逋 > flee;
+藓 > moss;
+鬻 > sell;
+泫 > weep;
+啭 > sing;
+坨 > lump;
+蠹 > moth;
+疱 > acne;
+锒 > lock;
+暝 > dark;
+煊 > warm;
+爨 > oven;
+囝 > baby;
+垩 > holy;
+怼 > hate;
+崴 > high;
+拊 > slap;
+扌 > hand;
+钤 > lock;
+樯 > mast;
+骟 > geld;
+燹 > fire;
+馐 > food;
+圹 > tomb;
+龈 > gums;
+蜊 > clam;
+痖 > dumb;
+歆 > like;
+赉 > give;
+铣 > mill;
+灏 > vast;
+瘙 > itch;
+闼 > door;
+坌 > dust;
+椤 > tree;
+阋 > feud;
+嵯 > high;
+酰 > acyl;
+瘗 > bury;
+疣 > wart;
+穑 > farm;
+槎 > raft;
+桴 > raft;
+溏 > pool;
+礻 > cult;
+棰 > flog;
+狷 > rash;
+蒹 > reed;
+佤 > kawa;
+麸 > bran;
+鸱 > kite;
+缫 > draw;
+纡 > bend;
+嵬 > high;
+菖 > iris;
+愍 > pity;
+嫱 > lady;
+莨 > herb;
+谝 > brag;
+氖 > neon;
+颛 > good;
+燠 > warm;
+潴 > pond;
+堙 > bury;
+隗 > high;
+丿 > line;
+鲮 > carp;
+跖 > sole;
+蚋 > gnat;
+汔 > near;
+痤 > acne;
+贶 > give;
+纟 > silk;
+侑 > help;
+耪 > plow;
+觜 > beak;
+筢 > rake;
+朐 > warm;
+觇 > peek;
+檗 > tree;
+菡 > buds;
+偾 > ruin;
+隹 > bird;
+舡 > boat;
+疒 > sick;
+噍 > chew;
+埝 > bank;
+鲩 > carp;
+鲒 > clam;
+襞 > fold;
+灬 > fire;
+脒 > open;
+柙 > cage;
+湔 > wash;
+洳 > damp;
+尢 > weak;
+髟 > hair;
+鳎 > sole;
+艚 > ship;
+鹩 > wren;
+炱 > soot;
+膪 > pork;
+栊 > cage;
+绲 > cord;
+宀 > roof;
+闶 > door;
+猊 > lion;
+岵 > hill;
+卩 > seal;
+诎 > bend;
+倮 > bare;
+龔 > give;
+齮 > bite;
+齧 > bite;
+齦 > gums;
+齗 > gums;
+齕 > gnaw;
+鼛 > drum;
+鼖 > drum;
+黶 > mole;
+麩 > bran;
+麛 > fawn;
+麚 > buck;
+麑 > fawn;
+麌 > stag;
+麃 > till;
+鹎 > bird;
+鹆 > myna;
+鷯 > wren;
+鷦 > wren;
+鷙 > hawk;
+鷕 > call;
+鶱 > soar;
+鶩 > duck;
+鶃 > hawk;
+鶂 > hawk;
+鵯 > bird;
+鵄 > kite;
+鴨 > duck;
+鴟 > kite;
+鴄 > duck;
+鳷 > bird;
+鳶 > kite;
+鳋 > carp;
+鲼 > fish;
+鲋 > carp;
+鲆 > sole;
+鰨 > sole;
+鯪 > carp;
+鯉 > carp;
+鯈 > fish;
+鯇 > carp;
+鮚 > clam;
+鮒 > carp;
+鮆 > fish;
+魋 > bear;
+鬮 > lots;
+鬩 > feud;
+鬑 > long;
+髞 > high;
+驘 > mule;
+騾 > mule;
+騸 > geld;
+騯 > loud;
+騣 > mane;
+駽 > grey;
+駴 > drum;
+饌 > feed;
+饈 > food;
+餌 > bait;
+餇 > food;
+飡 > meal;
+飌 > wind;
+颿 > sail;
+颺 > soar;
+顓 > good;
+頷 > chin;
+頮 > wash;
+頦 > chin;
+頌 > laud;
+須 > must;
+鞹 > skin;
+鞟 > skin;
+鞙 > fine;
+鞏 > bind;
+鞉 > drum;
+鞀 > drum;
+靑 > blue;
+霤 > drip;
+霣 > fall;
+霢 > dust;
+隕 > fall;
+隄 > dike;
+阤 > hill;
+阞 > vein;
+闥 > door;
+闢 > open;
+闓 > open;
+闈 > gate;
+闆 > boss;
+閟 > hide;
+閎 > gate;
+閌 > door;
+閇 > shut;
+閂 > bolt;
+镸 > long;
+镩 > pick;
+镕 > fuse;
+铴 > gong;
+鑼 > gong;
+鑢 > file;
+鑠 > melt;
+鑛 > mine;
+鑄 > melt;
+鐸 > bell;
+鐩 > lens;
+鐙 > lamp;
+鐋 > gong;
+鐄 > bell;
+鏽 > rust;
+鏰 > coin;
+鏥 > rust;
+鏢 > dart;
+鎻 > lock;
+鎮 > town;
+鎭 > town;
+鎔 > fuse;
+鍔 > high;
+錄 > copy;
+鋳 > melt;
+鋚 > iron;
+鋆 > gold;
+銹 > rust;
+銷 > melt;
+銕 > iron;
+鉱 > mine;
+鉤 > hook;
+鈬 > bell;
+鈐 > lock;
+鈎 > hook;
+鈆 > lead;
+釀 > brew;
+醸 > brew;
+鄑 > kick;
+邉 > edge;
+遻 > meet;
+遷 > move;
+遟 > late;
+迺 > then;
+迚 > very;
+迆 > wind;
+辵 > walk;
+轝 > envy;
+轗 > fail;
+轌 > sled;
+轅 > axle;
+輿 > cart;
+輴 > sled;
+輟 > stop;
+軻 > axle;
+軸 > axle;
+軥 > yoke;
+軟 > soft;
+軛 > yoke;
+軆 > body;
+軀 > body;
+躿 > tall;
+躶 > bare;
+躴 > tall;
+躳 > body;
+躱 > hide;
+躰 > body;
+躥 > leap;
+躒 > walk;
+蹢 > hoof;
+蹏 > hoof;
+踴 > leap;
+踭 > heel;
+踘 > ball;
+跼 > bent;
+跲 > hood;
+跱 > stop;
+跞 > walk;
+跙 > weak;
+趯 > jump;
+赱 > walk;
+赕 > fine;
+贊 > help;
+賵 > gift;
+賴 > rely;
+賧 > fine;
+賤 > mean;
+賜 > give;
+賛 > help;
+賚 > give;
+賎 > mean;
+貺 > give;
+貎 > lion;
+豭 > boar;
+讋 > fear;
+謠 > sing;
+謔 > jeer;
+謐 > calm;
+謄 > copy;
+諞 > brag;
+誧 > huge;
+誡 > warn;
+誃 > part;
+詠 > sing;
+詟 > fear;
+詘 > bend;
+觝 > gore;
+覘 > peek;
+覓 > seek;
+袿 > gown;
+衹 > only;
+衚 > lane;
+衖 > lane;
+衒 > brag;
+蠭 > bees;
+蠧 > moth;
+蠏 > crab;
+蟇 > frog;
+螉 > wasp;
+蜹 > gnat;
+蜅 > crab;
+蛻 > molt;
+蚡 > mole;
+虷 > worm;
+虧 > lose;
+虓 > roar;
+蘚 > moss;
+蘒 > \:143;
+藹 > lush;
+藟 > vine;
+藇 > fine;
+薟 > vine;
+薙 > weed;
+薁 > vine;
+蕘 > fuel;
+蔴 > hemp;
+蓫 > dock;
+葒 > herb;
+萜 > c5h8;
+菾 > beet;
+莻 > late;
+莶 > vine;
+莖 > stem;
+荭 > herb;
+荛 > fuel;
+艭 > ship;
+艖 > raft;
+舩 > boat;
+臑 > soft;
+臉 > face;
+臁 > calf;
+膷 > soup;
+膴 > fine;
+膠 > glue;
+腶 > meat;
+腳 > foot;
+腒 > game;
+腍 > soft;
+脲 > urea;
+胠 > open;
+胏 > meat;
+胊 > yoke;
+肬 > wart;
+聾 > deaf;
+聼 > hear;
+聵 > deaf;
+耭 > plow;
+耠 > till;
+耎 > weak;
+翺 > soar;
+羭 > good;
+羜 > lamb;
+缋 > draw;
+纚 > long;
+纖 > fine;
+纕 > belt;
+纎 > fine;
+纍 > bind;
+纇 > knot;
+纆 > cord;
+繤 > edit;
+繢 > draw;
+繠 > hang;
+繘 > rope;
+繊 > fine;
+繅 > draw;
+繃 > bind;
+績 > spin;
+縳 > wrap;
+縯 > long;
+縢 > bind;
+縚 > band;
+縊 > hang;
+緯 > woof;
+緤 > cord;
+緘 > seal;
+緎 > seam;
+緄 > cord;
+綫 > line;
+綑 > coil;
+綍 > rope;
+綁 > bind;
+絏 > rope;
+紡 > spin;
+紆 > bend;
+糹 > silk;
+粋 > pure;
+籹 > cake;
+籙 > book;
+籏 > flag;
+籌 > chip;
+籊 > long;
+簽 > sign;
+簆 > reed;
+竅 > hole;
+竁 > bore;
+窾 > hole;
+窵 > deep;
+窯 > kiln;
+窭 > poor;
+窩 > nest;
+穽 > hole;
+穮 > weed;
+穡 > farm;
+穜 > rice;
+穐 > fall;
+穋 > rice;
+穀 > corn;
+稛 > bind;
+稑 > rice;
+秪 > only;
+秊 > year;
+禸 > rump;
+禱 > pray;
+祇 > only;
+礬 > alum;
+礧 > roll;
+礦 > mine;
+礡 > fill;
+磚 > tile;
+砿 > mine;
+矻 > toil;
+矙 > view;
+瞫 > look;
+盤 > tray;
+盝 > drip;
+盌 > bowl;
+皷 > drum;
+癶 > legs;
+癮 > rash;
+癢 > itch;
+癠 > sick;
+瘯 > itch;
+瘞 > bury;
+瘖 > dumb;
+瘂 > dumb;
+痯 > sick;
+痌 > ache;
+疧 > sick;
+疘 > anus;
+疐 > fall;
+畊 > plow;
+畇 > land;
+畄 > stop;
+甌 > bowl;
+瓘 > jade;
+瓊 > jade;
+獵 > hunt;
+獮 > hunt;
+獧 > rash;
+獋 > roar;
+獅 > lion;
+獃 > dull;
+猟 > hunt;
+猋 > wind;
+狘 > jump;
+狀 > form;
+犲 > wolf;
+犢 > calf;
+犂 > plow;
+牽 > drag;
+牴 > gore;
+牣 > fill;
+牆 > wall;
+爟 > fire;
+爖 > fire;
+爇 > burn;
+燨 > fire;
+熇 > bake;
+煚 > fire;
+煖 > warm;
+煑 > cook;
+煇 > weld;
+焮 > heat;
+焜 > fire;
+烝 > rise;
+烔 > heat;
+烏 > crow;
+灝 > vast;
+灘 > bank;
+瀦 > pond;
+濳 > hide;
+濔 > many;
+濊 > vast;
+濈 > many;
+澒 > vast;
+潤 > soft;
+潛 > hide;
+潑 > pour;
+潅 > pour;
+漰 > roar;
+漭 > vast;
+漚 > soak;
+漙 > dewy;
+漘 > bank;
+滾 > turn;
+滺 > flow;
+滮 > flow;
+滌 > wash;
+滉 > deep;
+滄 > blue;
+溼 > damp;
+湻 > pure;
+湲 > flow;
+湝 > flow;
+淰 > fish;
+淨 > pure;
+涴 > daub;
+涊 > dirt;
+泙 > roar;
+沬 > dusk;
+沕 > deep;
+汍 > weep;
+氝 > neon;
+氊 > felt;
+氄 > down;
+氂 > tail;
+歲 > year;
+歗 > roar;
+歊 > sigh;
+欐 > beam;
+櫳 > cage;
+櫚 > palm;
+檴 > tree;
+檍 > ilex;
+橦 > tree;
+橁 > tree;
+槹 > spar;
+槃 > tray;
+楰 > tree;
+楩 > tree;
+楟 > tree;
+楘 > band;
+椸 > rack;
+椑 > oval;
+棬 > bowl;
+棪 > tree;
+棑 > raft;
+梴 > long;
+桿 > pole;
+桹 > palm;
+桋 > tree;
+栻 > tree;
+柣 > sill;
+柂 > helm;
+枴 > cane;
+杝 > tree;
+杗 > beam;
+朿 > stab;
+朳 > tree;
+朘 > wane;
+曉 > dawn;
+晳 > fair;
+昻 > rise;
+昬 > dusk;
+昫 > warm;
+旹 > time;
+旴 > dawn;
+旜 > flag;
+旂 > flag;
+敿 > bind;
+敽 > bind;
+敻 > long;
+攢 > save;
+攅 > save;
+擫 > tuck;
+擣 > hull;
+撻 > flog;
+撥 > move;
+撝 > wave;
+摲 > raze;
+摦 > wide;
+搥 > beat;
+搘 > prop;
+搗 > hull;
+搒 > pole;
+搌 > bind;
+搆 > pull;
+掞 > easy;
+掗 > take;
+捘 > push;
+捄 > long;
+挐 > drag;
+拏 > take;
+抶 > beat;
+抆 > wipe;
+戶 > door;
+戁 > fear;
+懶 > lazy;
+懮 > calm;
+懟 > hate;
+懜 > dull;
+憰 > wily;
+憫 > pity;
+憙 > like;
+憘 > like;
+憇 > rest;
+慴 > fear;
+慂 > urge;
+愒 > rest;
+恇 > fear;
+怳 > wild;
+怭 > rude;
+怚 > dull;
+彡 > hair;
+彎 > bend;
+廼 > then;
+廳 > hall;
+廰 > hall;
+廧 > wall;
+廎 > room;
+幯 > wipe;
+幤 > evil;
+幟 > flag;
+幚 > help;
+幋 > belt;
+幇 > help;
+帟 > tent;
+嶸 > high;
+嶄 > high;
+嵳 > high;
+崢 > high;
+峯 > peak;
+峇 > cave;
+岧 > peak;
+屇 > cave;
+尲 > limp;
+尫 > lame;
+尪 > lame;
+尩 > weak;
+尣 > lame;
+將 > will;
+寠 > poor;
+寔 > real;
+孻 > last;
+嬾 > lazy;
+嬰 > baby;
+嬭 > milk;
+嬙 > lady;
+嫈 > lady;
+媊 > star;
+婞 > hate;
+婐 > maid;
+娸 > ugly;
+娵 > star;
+姽 > good;
+姮 > lady;
+姤 > mate;
+夛 > much;
+夐 > long;
+壙 > tomb;
+壒 > dust;
+壌 > soil;
+墻 > wall;
+墦 > tomb;
+塹 > moat;
+堲 > hate;
+堨 > daub;
+堋 > bury;
+埰 > fief;
+埈 > high;
+垜 > heap;
+坱 > dust;
+坋 > dust;
+囥 > hide;
+囓 > gnaw;
+囀 > sing;
+嚤 > slow;
+嚙 > bite;
+嚄 > roar;
+噳 > many;
+噝 > hiss;
+噉 > bite;
+嘽 > pant;
+嘯 > roar;
+嘮 > chat;
+嘨 > roar;
+嘜 > mark;
+嗰 > that;
+嗊 > sing;
+喬 > tall;
+喨 > wail;
+啟 > open;
+啞 > dumb;
+啙 > poor;
+啓 > open;
+啀 > gnaw;
+唶 > sigh;
+唛 > mark;
+咼 > chat;
+咷 > howl;
+咮 > beak;
+呙 > chat;
+呎 > foot;
+呇 > star;
+吿 > tell;
+吽 > ''om'';
+吪 > move;
+吋 > inch;
+厔 > stop;
+區 > area;
+匵 > case;
+勹 > wrap;
+剺 > mark;
+剝 > peel;
+剚 > stab;
+刾 > stab;
+刜 > chop;
+刓 > trim;
+凮 > wind;
+凪 > calm;
+凨 > wind;
+凧 > kite;
+凚 > cold;
+凖 > rule;
+凔 > cold;
+冐 > risk;
+冂 > wide;
+兌 > cash;
+儾 > slow;
+儽 > lazy;
+儺 > rich;
+儱 > rude;
+儜 > weak;
+儅 > stop;
+僾 > like;
+僨 > ruin;
+債 > debt;
+傭 > hire;
+偄 > weak;
+倽 > what;
+俴 > thin;
+俔 > like;
+侢 > load;
+侜 > lies;
+侚 > fast;
+侀 > form;
+佸 > meet;
+伹 > dull;
+伱 > thou;
+仸 > bent;
+亠 > head;
+亝 > even;
+亜 > asia;
+亖 > four;
+亅 > hook;
+乼 > rope;
+乭 > rock;
+丳 > spit;
+丠 > hill;
+䵷 > frog;
+䵨 > dark;
+䵒 > glue;
+䵑 > glue;
+䴸 > bran;
+䴝 > salt;
+䴜 > salt;
+䴃 > wren;
+䳼 > gull;
+䳦 > wren;
+䳣 > kite;
+䲭 > kite;
+䲒 > crab;
+䱴 > tuna;
+䱭 > tuna;
+䱎 > tuna;
+䱍 > tuna;
+䰩 > ugly;
+䰦 > ugly;
+䰤 > ugly;
+䰕 > mane;
+䰓 > hair;
+䰋 > hair;
+䰊 > hair;
+䰇 > mane;
+䯹 > hair;
+䯟 > bone;
+䯞 > bone;
+䯕 > bony;
+䮿 > lame;
+䮾 > huge;
+䭢 > rich;
+䭡 > food;
+䭓 > food;
+䭂 > damp;
+䭀 > food;
+䬞 > wind;
+䬏 > wind;
+䫶 > ugly;
+䫪 > ugly;
+䫢 > good;
+䫑 > good;
+䫏 > ugly;
+䫊 > chin;
+䫈 > ugly;
+䫂 > ugly;
+䪦 > loud;
+䪏 > weak;
+䪆 > soft;
+䨰 > rain;
+䨮 > snow;
+䨤 > rain;
+䨔 > hail;
+䨌 > hail;
+䧻 > dove;
+䧹 > hawk;
+䦰 > lots;
+䥫 > iron;
+䥔 > gold;
+䥒 > lead;
+䤮 > iron;
+䤡 > iron;
+䤑 > wine;
+䤊 > wine;
+䣽 > wine;
+䣨 > rich;
+䡳 > cart;
+䡀 > nude;
+䠭 > lame;
+䠗 > lame;
+䠏 > feet;
+䟨 > lame;
+䟂 > slow;
+䞿 > lame;
+䞩 > lame;
+䞝 > lame;
+䞆 > bone;
+䝘 > firm;
+䝕 > good;
+䛴 > joke;
+䚽 > news;
+䚸 > good;
+䚩 > high;
+䚢 > horn;
+䙤 > good;
+䙊 > arid;
+䗩 > toad;
+䗢 > flea;
+䖸 > moth;
+䖭 > grub;
+䖪 > grub;
+䖣 > flea;
+䕢 > weak;
+䔬 > hemp;
+䓾 > lush;
+䓸 > weed;
+䓲 > fine;
+䒺 > clay;
+䒭 > rank;
+䑬 > boat;
+䑞 > shun;
+䑏 > ugly;
+䑄 > rich;
+䐳 > fish;
+䐮 > skin;
+䐓 > soft;
+䐋 > sick;
+䏸 > fish;
+䏱 > body;
+䏢 > meat;
+䏎 > milk;
+䏊 > deaf;
+䎜 > aged;
+䍚 > vast;
+䌩 > fine;
+䌝 > silk;
+䌓 > many;
+䌒 > pure;
+䌌 > lace;
+䋼 > slow;
+䋖 > long;
+䊦 > food;
+䇩 > long;
+䆭 > cave;
+䆩 > dark;
+䆦 > deep;
+䄩 > bran;
+䂃 > dark;
+䁩 > fish;
+䁆 > eyes;
+䁅 > rage;
+䀾 > many;
+䀜 > down;
+䀋 > salt;
+䀀 > cups;
+㿙 > full;
+㿎 > sick;
+㾹 > lean;
+㾪 > lean;
+㾨 > weak;
+㾛 > ugly;
+㾊 > thin;
+㾉 > thin;
+㺥 > bark;
+㹒 > bull;
+㹏 > good;
+㹎 > bull;
+㹍 > bull;
+㸸 > calf;
+㸮 > bull;
+㸎 > warm;
+㷵 > fire;
+㷴 > fire;
+㷬 > fire;
+㷘 > coal;
+㷐 > fire;
+㷄 > fire;
+㶹 > fire;
+㶯 > fire;
+㶨 > fire;
+㶧 > warm;
+㵾 > cold;
+㵶 > full;
+㵩 > many;
+㵙 > pure;
+㵖 > damp;
+㴴 > sink;
+㴱 > deep;
+㴝 > many;
+㴛 > damp;
+㴗 > deep;
+㴀 > deep;
+㳤 > good;
+㲾 > rain;
+㲻 > sunk;
+㲴 > mind;
+㲟 > hair;
+㲜 > rugs;
+㲓 > fine;
+㱴 > sick;
+㱋 > high;
+㱇 > fear;
+㰫 > glad;
+㰡 > rash;
+㰟 > hope;
+㰙 > weak;
+㰐 > oval;
+㮺 > stem;
+㮤 > pine;
+㮒 > wood;
+㭽 > root;
+㬘 > arid;
+㬉 > warm;
+㬅 > long;
+㫲 > dark;
+㫱 > mild;
+㫥 > dark;
+㫎 > mark;
+㫄 > side;
+㩼 > many;
+逸 > flee;
+洞 > cave;
+刺 > stab;
+狀 > form;
+淋 > drip;
+㧮 > high;
+匿 > hide;
+㧨 > slow;
+梨 > pear;
+李 > plum;
+陸 > land;
+戮 > kill;
+紐 > knot;
+留 > stop;
+流 > flow;
+惡 > evil;
+領 > neck;
+零 > zero;
+鈴 > bell;
+怜 > pity;
+獵 > hunt;
+㦨 > lazy;
+㦢 > pure;
+連 > join;
+秊 > year;
+戀 > love;
+憐 > pity;
+年 > year;
+㦏 > weak;
+旅 > trip;
+良 > good;
+糧 > food;
+凉 > cool;
+沈 > sink;
+殺 > kill;
+葉 > leaf;
+㥬 > fear;
+㥩 > idle;
+㥡 > idle;
+拏 > take;
+讀 > read;
+陵 > hill;
+凌 > pure;
+肋 > ribs;
+漏 > leak;
+聾 > deaf;
+籠 > cage;
+鹿 > deer;
+錄 > copy;
+路 > road;
+冷 > cold;
+來 > come;
+狼 > wolf;
+浪 > wave;
+拉 > pull;
+藍 > blue;
+㤟 > fear;
+落 > fall;
+裸 > bare;
+懶 > lazy;
+喇 > horn;
+金 > gold;
+契 > deed;
+㤉 > fear;
+滑 > slip;
+車 > cart;
+更 > more;
+㣎 > fine;
+㢜 > vast;
+㢘 > pure;
+㢔 > many;
+㢎 > hide;
+㢋 > vast;
+㢃 > high;
+㢁 > vast;
+㡦 > mess;
+㠻 > rare;
+㠩 > vast;
+㠌 > high;
+㞱 > dusk;
+㞖 > this;
+㞄 > lame;
+㝿 > lame;
+㝡 > very;
+㝠 > dark;
+㝝 > deep;
+㝑 > side;
+㝐 > face;
+㝈 > twin;
+㝄 > pure;
+㜷 > milk;
+㜛 > soft;
+㜃 > from;
+㛦 > good;
+㚧 > agil;
+㚍 > much;
+㚋 > much;
+㚊 > much;
+㚂 > dust;
+㙪 > dark;
+㙠 > dust;
+㙒 > wild;
+㙂 > wall;
+㙁 > dust;
+㘨 > deep;
+㘐 > loud;
+㗈 > long;
+㕦 > loud;
+㔄 > thin;
+㓑 > cold;
+㓎 > cold;
+㓊 > cold;
+㒚 > firm;
+㒎 > evil;
+㑿 > long;
+㑵 > envy;
+㑚 > that;
+㑌 > weak;
+㑈 > rude;
+㐡 > weak;
+㐅 > five;
+一 > one;
+人 > man;
+我 > our;
+大 > big;
+上 > top;
+你 > you;
+可 > may;
+她 > she;
+天 > sky;
+而 > and;
+然 > yes;
+没 > not;
+日 > sun;
+彩 > hue;
+十 > ten;
+用 > use;
+眼 > eye;
+又 > and;
+见 > see;
+老 > old;
+两 > two;
+外 > out;
+与 > and;
+法 > law;
+目 > eye;
+二 > two;
+点 > dot;
+盜 > rob;
+其 > his;
+盗 > rob;
+儿 > son;
+新 > new;
+床 > bed;
+皆 > all;
+海 > sea;
+少 > few;
+帽 > hat;
+叫 > cry;
+死 > die;
+放 > put;
+今 > now;
+赤 > red;
+畢 > end;
+战 > war;
+購 > buy;
+瓶 > jug;
+请 > ask;
+交 > mix;
+吃 > eat;
+買 > buy;
+非 > not;
+夫 > man;
+红 > red;
+运 > run;
+寥 > few;
+网 > net;
+飞 > fly;
+观 > see;
+猿 > ape;
+猫 > cat;
+猪 > pig;
+坐 > sit;
+謂 > say;
+狗 > dog;
+請 > ask;
+终 > end;
+切 > cut;
+犬 > dog;
+誤 > err;
+尔 > you;
+热 > hot;
+古 > old;
+牛 > cow;
+牀 > bed;
+觀 > see;
+低 > low;
+観 > see;
+熱 > hot;
+仍 > yet;
+見 > see;
+脚 > leg;
+云 > say;
+买 > buy;
+奈 > but;
+排 > row;
+壯 > big;
+壞 > bad;
+壊 > bad;
+湾 > bay;
+墨 > ink;
+否 > not;
+食 > eat;
+術 > art;
+濘 > mud;
+濕 > wet;
+露 > dew;
+齢 > age;
+齡 > age;
+蝙 > bat;
+蝋 > wax;
+鼠 > rat;
+跑 > run;
+蜂 > bee;
+艺 > art;
+點 > dot;
+摇 > wag;
+顶 > top;
+湿 > wet;
+端 > end;
+旧 > old;
+油 > oil;
+藝 > art;
+毕 > end;
+藉 > mat;
+液 > sap;
+薯 > yam;
+耳 > ear;
+喋 > nag;
+啜 > sip;
+問 > ask;
+泥 > mud;
+泣 > cry;
+哀 > sad;
+冰 > ice;
+误 > err;
+凡 > all;
+汝 > you;
+谓 > say;
+杯 > cup;
+氷 > ice;
+氣 > air;
+気 > air;
+萌 > bud;
+购 > buy;
+途 > way;
+摆 > put;
+典 > law;
+茶 > tea;
+卵 > egg;
+播 > sow;
+臂 > arm;
+欷 > sob;
+匚 > box;
+摩 > rub;
+餐 > eat;
+冠 > cap;
+芽 > bud;
+芸 > rue;
+劣 > bad;
+剽 > rob;
+割 > cut;
+缘 > hem;
+俩 > two;
+壮 > big;
+忧 > sad;
+舊 > old;
+與 > and;
+龄 > age;
+惨 > sad;
+腾 > fly;
+染 > dye;
+膿 > pus;
+榻 > cot;
+円 > yen;
+兩 > two;
+兒 > son;
+腐 > rot;
+児 > son;
+脂 > fat;
+飛 > fly;
+肥 > fat;
+援 > aid;
+胖 > fat;
+哼 > hum;
+偵 > spy;
+顛 > top;
+顎 > jaw;
+倶 > all;
+頂 > top;
+罐 > jar;
+捷 > win;
+霧 > fog;
+乾 > dry;
+俱 > all;
+赢 > win;
+缝 > sew;
+抚 > pat;
+挖 > dig;
+曝 > sun;
+雾 > fog;
+暑 > hot;
+颠 > top;
+扇 > fan;
+曰 > say;
+乞 > beg;
+赌 > bet;
+縫 > sew;
+両 > two;
+欠 > owe;
+氛 > gas;
+縁 > hem;
+締 > tie;
+弗 > not;
+網 > net;
+斬 > cut;
+絶 > cut;
+辟 > law;
+終 > end;
+襄 > aid;
+炒 > fry;
+锡 > tin;
+紅 > red;
+撫 > pat;
+鑵 > jar;
+坑 > pit;
+搖 > wag;
+揺 > wag;
+撕 > rip;
+揉 > rub;
+磕 > hit;
+斩 > cut;
+掠 > rob;
+掘 > dig;
+谎 > lie;
+銜 > bit;
+赋 > tax;
+囊 > bag;
+戰 > war;
+戦 > war;
+憂 > sad;
+搂 > hug;
+慘 > sad;
+侦 > spy;
+壶 > jar;
+弓 > bow;
+蜡 > wax;
+庐 > hut;
+歹 > bad;
+惟 > but;
+衔 > bit;
+坎 > pit;
+兹 > now;
+毯 > rug;
+钥 > key;
+斧 > axe;
+赎 > buy;
+彤 > red;
+燥 > dry;
+佬 > man;
+瞅 > see;
+蹦 > hop;
+霄 > sky;
+翩 > fly;
+暨 > and;
+迢 > far;
+缔 > tie;
+褚 > bag;
+蚂 > ant;
+揍 > hit;
+擂 > rub;
+锄 > hoe;
+捅 > jab;
+鞠 > bow;
+骰 > die;
+踉 > hop;
+桨 > oar;
+拌 > mix;
+狸 > fox;
+瀛 > sea;
+噩 > bad;
+蓓 > bud;
+窖 > pit;
+掺 > mix;
+猖 > mad;
+趾 > toe;
+蘸 > dip;
+淤 > mud;
+琦 > gem;
+脓 > pus;
+畸 > odd;
+盎 > cup;
+茗 > tea;
+胥 > all;
+怆 > sad;
+泞 > mud;
+剐 > cut;
+舀 > dip;
+坯 > dam;
+堰 > dam;
+幺 > one;
+牯 > cow;
+弼 > aid;
+鳝 > eel;
+斫 > cut;
+怩 > shy;
+溥 > big;
+橹 > oar;
+黠 > sly;
+绌 > sew;
+剜 > cut;
+罔 > net;
+颚 > jaw;
+唿 > sad;
+耨 > hoe;
+膘 > fat;
+镳 > bit;
+腴 > fat;
+狯 > sly;
+镢 > hoe;
+裨 > aid;
+锛 > adz;
+囵 > all;
+邈 > far;
+殒 > die;
+啖 > eat;
+麋 > elk;
+鳍 > fin;
+刍 > mow;
+侗 > big;
+楫 > oar;
+猡 > pig;
+柞 > oak;
+佥 > all;
+鳗 > eel;
+鞣 > tan;
+棹 > oar;
+陂 > dam;
+殁 > die;
+觚 > jug;
+臬 > law;
+猃 > dog;
+寤 > few;
+僖 > joy;
+犭 > dog;
+羝 > ram;
+貔 > fox;
+觌 > see;
+槠 > oak;
+溻 > wet;
+芟 > mow;
+俣 > big;
+瓿 > jar;
+逖 > far;
+哜 > sip;
+隰 > low;
+鲡 > eel;
+毹 > rug;
+殪 > die;
+缏 > hem;
+饣 > eat;
+埤 > add;
+坭 > mud;
+龥 > beg;
+齣 > act;
+鼡 > rat;
+黕 > red;
+鹋 > emu;
+鴞 > owl;
+鲕 > roe;
+鱺 > eel;
+鱔 > eel;
+鱓 > eel;
+鰻 > eel;
+鰭 > fin;
+鮞 > roe;
+鬷 > pot;
+鬴 > pot;
+鬆 > lax;
+髢 > wig;
+骽 > leg;
+騵 > bay;
+騳 > run;
+騰 > fly;
+騢 > bay;
+騂 > red;
+駉 > big;
+餔 > eat;
+飠 > eat;
+顚 > top;
+頳 > red;
+頫 > bow;
+韖 > tan;
+韎 > red;
+阬 > pit;
+鑰 > key;
+鑯 > awl;
+鑣 > bit;
+鐏 > cap;
+鏚 > axe;
+鎡 > hoe;
+鍾 > cup;
+錫 > tin;
+錤 > hoe;
+錛 > adz;
+錔 > cap;
+鋤 > hoe;
+鉏 > hoe;
+遉 > spy;
+轑 > rut;
+踶 > paw;
+跦 > hop;
+贖 > buy;
+贏 > win;
+賭 > bet;
+賦 > tax;
+貜 > ape;
+貓 > cat;
+豼 > fox;
+豷 > man;
+豬 > pig;
+豨 > pig;
+豝 > sow;
+謊 > lie;
+覿 > see;
+覩 > see;
+覌 > see;
+裀 > mat;
+衜 > way;
+蠮 > bee;
+蠟 > wax;
+螞 > ant;
+螘 > ant;
+蝯 > ape;
+蜑 > egg;
+藷 > yam;
+蕷 > yam;
+蕓 > rue;
+蔋 > dry;
+蓺 > art;
+蓣 > yam;
+蒴 > pod;
+葄 > mat;
+萠 > bud;
+茲 > now;
+芻 > mow;
+艪 > oar;
+臕 > fat;
+臇 > fat;
+膟 > fat;
+膋 > fat;
+膃 > fat;
+肭 > fat;
+肀 > pen;
+耡 > hoe;
+翾 > fly;
+翃 > fly;
+羘 > ram;
+羇 > inn;
+罻 > net;
+罦 > net;
+罟 > net;
+罆 > jar;
+缾 > jar;
+緶 > hem;
+緵 > net;
+緰 > net;
+緣 > hem;
+絕 > cut;
+絀 > sew;
+紮 > tie;
+籥 > key;
+箑 > fan;
+窞 > pit;
+窌 > pit;
+窊 > pit;
+窅 > far;
+砲 > gun;
+瞶 > dim;
+睊 > see;
+眛 > dim;
+癙 > ill;
+瘨 > mad;
+瘏 > ill;
+痗 > ill;
+甒 > jar;
+甇 > jar;
+甁 > jug;
+甀 > jar;
+瓻 > jar;
+瓀 > gem;
+璅 > gem;
+玆 > now;
+玀 > pig;
+獫 > dog;
+獪 > sly;
+獢 > dog;
+猭 > ape;
+猨 > ape;
+牼 > man;
+爾 > you;
+焞 > dim;
+灋 > law;
+澝 > mud;
+潚 > gay;
+沒 > not;
+毧 > fur;
+殣 > die;
+殞 > die;
+歿 > die;
+歠 > sip;
+櫧 > oak;
+櫓 > oar;
+櫂 > oar;
+檝 > oar;
+橧 > hut;
+樠 > elm;
+槳 > oar;
+楎 > peg;
+椷 > box;
+棓 > hit;
+梶 > oar;
+梩 > hod;
+桮 > cup;
+柸 > cup;
+杅 > tub;
+曁 > and;
+晞 > dry;
+昄 > big;
+斸 > cut;
+斲 > cut;
+斨 > axe;
+攵 > rap;
+攴 > rap;
+擺 > put;
+摟 > hug;
+搰 > dig;
+搨 > rub;
+搧 > fan;
+搃 > all;
+挼 > rub;
+慱 > sad;
+愴 > sad;
+惙 > sad;
+弨 > bow;
+弤 > bow;
+廬 > hut;
+帣 > bag;
+尓 > you;
+尒 > you;
+寙 > bad;
+嬛 > apt;
+妵 > man;
+妳 > you;
+奭 > red;
+奜 > big;
+奌 > dot;
+壺 > jar;
+壷 > jar;
+墫 > cup;
+堌 > dam;
+埶 > art;
+埧 > dam;
+圇 > all;
+嚢 > bag;
+嚌 > sip;
+喫 > eat;
+啗 > eat;
+匸 > box;
+劚 > cut;
+剸 > cut;
+剮 > cut;
+剉 > cut;
+刲 > cut;
+凣 > all;
+凢 > all;
+凃 > mud;
+冫 > ice;
+冞 > far;
+僉 > all;
+偯 > sob;
+倞 > far;
+俁 > big;
+侊 > big;
+佽 > aid;
+亓 > his;
+亁 > dry;
+乢 > lid;
+丶 > dot;
+䳠 > owl;
+䲊 > fry;
+䰠 > god;
+䪞 > bad;
+䪚 > hot;
+䩆 > old;
+䨿 > bad;
+䢛 > far;
+䢓 > bed;
+䡜 > car;
+䝆 > hog;
+䜣 > joy;
+䗶 > wax;
+䗬 > bee;
+䗦 > bee;
+䒬 > not;
+䑋 > fat;
+䑊 > fat;
+䑂 > fat;
+䐾 > fat;
+䐵 > fat;
+䐪 > fat;
+䐩 > fat;
+䐟 > fat;
+䐏 > fat;
+䐎 > fat;
+䐉 > fat;
+䏻 > can;
+䏴 > dim;
+䏥 > dry;
+䏜 > fat;
+䎋 > fly;
+䍝 > net;
+䍕 > net;
+䍒 > net;
+䌢 > raw;
+䋬 > rug;
+䋞 > web;
+䋄 > web;
+䊑 > pay;
+䉾 > bad;
+䆾 > big;
+䆱 > big;
+䁮 > sad;
+㾑 > fat;
+㺋 > pig;
+㹅 > all;
+㸁 > dry;
+㷪 > fat;
+㷣 > red;
+㴼 > wet;
+㴷 > wet;
+㳴 > mud;
+㲭 > rug;
+㲖 > fur;
+㮎 > cup;
+㮈 > but;
+㫓 > air;
+猪 > pig;
+見 > see;
+切 > cut;
+茶 > tea;
+泥 > mud;
+㦧 > sad;
+劣 > bad;
+廬 > hut;
+㦀 > joy;
+兩 > two;
+掠 > rob;
+㥢 > bad;
+㥑 > sad;
+露 > dew;
+老 > old;
+櫓 > oar;
+蠟 > wax;
+卵 > egg;
+㤚 > joy;
+奈 > but;
+㤈 > sad;
+㢠 > far;
+㜸 > sin;
+㚚 > big;
+㘔 > eat;
+㗔 > joy;
+㕅 > big;
+㓉 > ice;
+㒳 > two;
+㒪 > tin;
+㑾 > joy;
+㐺 > all;
+不 > no;
+为 > do;
+之 > ''s;
+徃 > go;
+往 > go;
+于 > in;
+行 > go;
+如 > if;
+弄 > do;
+或 > or;
+它 > it;
+若 > if;
+爲 > do;
+咱 > us;
+為 > do;
+适 > go;
+倘 > if;
+於 > in;
+哟 > ah;
+嗨 > hi;
+彝 > yi;
+傥 > if;
+锱 > oz;
+徂 > go;
+钔 > md;
+伲 > we;
+镤 > pa;
+镎 > np;
+铹 > lr;
+夂 > go;
+锿 > es;
+锝 > tc;
+锘 > no;
+锕 > ac;
+锊 > oz;
+鎝 > tc;
+錼 > np;
+錙 > oz;
+鋝 > oz;
+迬 > go;
+繄 > be;
+糎 > mm;
+粨 > hm;
+粍 > mm;
+粁 > km;
+籵 > dm;
+祂 > he;
+牠 > it;
+朁 > if;
+攲 > up;
+扵 > in;
+彞 > yi;
+彜 > yi;
+彛 > yi;
+廴 > go;
+嗈 > oh;
+喲 > ah;
+喤 > ah;
+咁 > so;
+兡 > hg;
+兞 > mg;
+兝 > dg;
+儻 > if;
+偺 > us;
+佢 > he;
+行 > go;
+若 > if;
+不 > no;
+弄 > do;
+余 > i;
+吾 > i;
+予 > i;
+侬 > i;
+麿 > i;
+樶 > c;
+儂 > i;
+。 <> '.';
+:: fullwidth-halfwidth ();
diff --git a/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt
new file mode 100644
index 0000000..38c0026
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/Transliterator_Han_Latin_EDICT.txt
@@ -0,0 +1,116016 @@
+﻿#--------------------------------------------------------------------
+# Copyright (c) 1999-2004, International Business Machines
+# Corporation and others. All Rights Reserved.
+#--------------------------------------------------------------------
+
+# Convert CJK characters
+# Note: adds space between them and letters.
+:: (halfwidth-fullwidth);
+:: (katakana-latin);
+:: (hiragana-latin);
+
+$terminalPunct = [\.\,\:\;\?\!．，：？！。、；[:Pe:][:Pf:]];
+$terminalPunct { } [:L:] > ' ';
+[:L:] { } [[:Han:][:Ps:][:Pi:]]> ' ';
+
+$kata = [[ﾞﾟｰー][:katakana:]];
+$kata { } [[:L:]-$kata]> ' ';
+[[:L:]-$kata] { } $kata > ' ';
+
+[:hiragana:] { } [[:L:]-[:hiragana:]] > ' ';
+[[:L:]-[:hiragana:]] { } [:hiragana:]> ' ';
+
+# Start RAW data for converting CJK characters
+法学系大学院共通入学試験 < hougakukeidaigakuinkyoutsuunyuugakushiken\ ;
+米国大学入学共通試験 < beikokudaigakunyuugakukyoutsuushiken\ ;
+朝鮮民主主義人民共和国 < chousenminshushugijinminkyouwakoku\ ;
+自動車損害賠償責任保険 < jidoushasongaibaishousekininhoken\ ;
+臨兵闘者皆陣裂在前 < rinpyoutoushakaijinretsuzaizen\ ;
+日本労働組合総評議会 < nihonroudoukumiaisouhyougikai\ ;
+太平洋機械翻訳協会 < taiheiyoukikaihon''yakukyoukai\ ;
+勤労者財産形成促進 < kinroushazaisankeiseisokushin\ ;
+超超大規模集積回路 < chouchoudaikiboshuusekikairo\ ;
+経済協力開発機構 < keizaikyouryokukaihatsukikou\ ;
+北海道開発庁長官 < hokkaidoukaihatsuchouchoukan\ ;
+拘束名簿式比例代表制 < kousokumeibohireidaihyousei\ ;
+知識集約型産業 < chishikishuuyakugatasangyou\ ;
+外国人登録証明書 < gaikokujintourokushoumeisho\ ;
+太平洋安全保障条約 < taiheiyouanzenhoshoujouyaku\ ;
+操縦席音声記録装置 < soujuusekionseikirokusouchi\ ;
+戦略兵器削減条約 < senryakuheikisakugenjouyaku\ ;
+航空宇宙技術研究所 < koukuuuchuugijutsukenkyuujo\ ;
+国際機械翻訳協会 < kokusaikikaihon''yakukyoukai\ ;
+自律神経失調症 < jiritsushinkeishitchoushou\ ;
+国際電気通信連合 < kokusaidenkitsuushinrengou\ ;
+沖縄開発庁長官 < okinawakaihatsuchouchoukan\ ;
+海外経済協力基金 < kaigaikeizaikyouryokukikin\ ;
+日米安全保障条約 < nichibeianzenhoshoujouyaku\ ;
+浮動小数点演算機構 < fudoushousuuten''enzankikou\ ;
+現金自動預金支払機 < genkinjidouyokinshiharaiki\ ;
+弁証法的唯物論 < benshouhoutekiyuibutsuron\ ;
+戦没者追悼記念日 < senbotsushatsuitoukinenbi\ ;
+国際協力事業団 < kokusaikyouryokujigyoudan\ ;
+戦術航空統制本部 < senjutsukoukuutouseihonbu\ ;
+工業高等専門学校 < kougyoukoutousenmongakkou\ ;
+北大西洋条約機構 < kitataiseiyoujouyakukikou\ ;
+超大規模集積回路 < choudaikiboshuusekikairo\ ;
+宗教的独立性 < shuukyoutekidokuritsusei\ ;
+化学兵器禁止条約 < kagakuheikikinshijouyaku\ ;
+関税貿易一般協定 < kanzeibouekiippankyoutei\ ;
+主辞駆動句構造文法 < shujikudoukukouzoubunpou\ ;
+直接照準射撃 < chokusetsushoujunshageki\ ;
+総合的品質管理 < sougoutekihinshitsukanri\ ;
+疑似直接目的語 < gijichokusetsumokutekigo\ ;
+在留期間更新許可 < zairyuukikankoushinkyoka\ ;
+特殊取扱郵便 < tokushutoriatsukaiyuubin\ ;
+乾湿球湿度計 < kanshitsukyuushitsudokei\ ;
+万国著作権条約 < bankokuchosakukenjouyaku\ ;
+万国国際音標文字 < bankokukokusaionpyoumoji\ ;
+言語学的実在論 < gengogakutekijitsuzairon\ ;
+冠状動脈血栓症 < kanjoudoumyakukessenshou\ ;
+科学技術庁長官 < kagakugijutsuchouchoukan\ ;
+海洋投棄規制条約 < kaiyoutoukikiseijouyaku\ ;
+圧密降伏応力 < atsumitsukoufukuouryoku\ ;
+公認卸売業者 < kounin''oroshiurigyousha\ ;
+赤血球沈降速度 < sekkekkyuuchinkousokudo\ ;
+石油輸出国機構 < sekiyuyushutsukokukikou\ ;
+公共職業安定所 < koukyoushokugyouanteijo\ ;
+戦術航空統制班 < senjutsukoukuutouseihan\ ;
+野生動物保護団体 < yaseidoubutsuhogodantai\ ;
+自動列車制御装置 < jidouresshaseigyosouchi\ ;
+自動金銭出入機 < jidoukinsenshutsunyuuki\ ;
+天然資源保護論者 < ten''nenshigenhogoronsha\ ;
+地震雷火事親父 < jishinkaminarikajioyaji\ ;
+非常事態対処計画 < hijoujitaitaishokeikaku\ ;
+核分裂生成物 < kakubunretsuseiseibutsu\ ;
+多肢選択式試問 < tashisentakushikishimon\ ;
+新関西国際空港 < shinkansaikokusaikuukou\ ;
+職業別電話帳 < shokugyoubetsudenwachou\ ;
+自動列車停止装置 < jidouresshateishisouchi\ ;
+言語学的観念論 < gengogakutekikan''nenron\ ;
+後発発展途上国 < kouhatsuhattentojoukoku\ ;
+抹消登録証明書 < mashoutourokushoumeisho\ ;
+経済企画庁長官 < keizaikikakuchouchoukan\ ;
+再生不良性貧血 < saiseifuryouseihinketsu\ ;
+火力支援調整線 < karyokushienchouseisen\ ;
+入学共通試験 < nyuugakukyoutsuushiken\ ;
+破壊活動防止法 < hakaikatsudouboushihou\ ;
+室内管弦楽団 < shitsunaikangengakudan\ ;
+東京株式市場 < toukyoukabushikishijou\ ;
+確率密度関数 < kakuritsumitsudokansuu\ ;
+原子力発電所 < genshiryokuhatsudensho\ ;
+代表取締役 < daihyoutorishimariyaku\ ;
+取扱説明書 < toriatsukaisetsumeisho\ ;
+赤十字国際委員会 < sekijuujikokusaiiinkai\ ;
+勧善懲悪小説 < kanzenchouakushousetsu\ ;
+国際返信切手券 < kokusaihenshinkitteken\ ;
+談話表示構造理論 < danwahyoujikouzouriron\ ;
+共産党中央委員会 < kyousantouchuuouiinkai\ ;
+杭周面摩擦力 < kuishuumenmasatsuryoku\ ;
+中華人民共和国 < chuukajinminkyouwakoku\ ;
+東海道五十三次 < toukaidougojuusantsugi\ ;
+宇宙開発事業団 < uchuukaihatsujigyoudan\ ;
+民主党全国委員会 < minshutouzenkokuiinkai\ ;
+英語基礎能力試験 < eigokisonouryokushiken\ ;
+間接照準射撃 < kansetsushoujunshageki\ ;
+三軸圧縮試験機 < sanjikuasshukushikenki\ ;
+視聴者参加番組 < shichoushasankabangumi\ ;
+州際通商委員会 < shuusaitsuushouiinkai\ ;
+新規株式公開 < shinkikabushikikoukai\ ;
+周波数変換装置 < shuuhasuuhenkansouchi\ ;
+学習指導要領 < gakushuushidouyouryou\ ;
+慢性疲労症候群 < manseihiroushoukougun\ ;
+公害対策基本法 < kougaitaisakukihonhou\ ;
+早発性痴呆症 < souhatsuseichihoushou\ ;
+経済団体連合会 < keizaidantairengoukai\ ;
+戦闘電子戦情報 < sentoudenshisenjouhou\ ;
+信用協同組合 < shin''youkyoudoukumiai\ ;
+現金自動支払機 < genkinjidoushiharaiki\ ;
+弦楽四重奏曲 < gengakushijuusoukyoku\ ;
+演繹的説明法 < en''ekitekisetsumeihou\ ;
+最高経営責任者 < saikoukeieisekininsha\ ;
+深在性真菌症 < shinzaiseishinkinshou\ ;
+装甲人員運搬車 < soukoujin''in''unpansha\ ;
+一般命令演算機構 < ippanmeireienzankikou\ ;
+統率束縛理論 < tousotsusokubakuriron\ ;
+本態性高血圧 < hontaiseikouketsuatsu\ ;
+日本語能力試験 < nihongonouryokushiken\ ;
+陸上端局装置 < rikujoutankyokusouchi\ ;
+音節主音的子音 < onsetsushuontekishiin\ ;
+日米貿易摩擦 < nichibeibouekimasatsu\ ;
+証券取引委員会 < shoukentorihikiiinkai\ ;
+通商産業大臣 < tsuushousangyoudaijin\ ;
+最高財務責任者 < saikouzaimusekininsha\ ;
+短距離離着陸機 < tankyoririchakurikuki\ ;
+通商航海条約 < tsuushoukoukaijouyaku\ ;
+機能単一化文法 < kinoutan''itsukabunpou\ ;
+知能情報研究部 < chinoujouhoukenkyuubu\ ;
+加圧水型原子炉 < kaatsusuigatagenshiro\ ;
+環太平洋地震帯 < kantaiheiyoujishintai\ ;
+軟判定識別器 < nanhanteishikibetsuki\ ;
+国立博物館 < kokuritsuhakubutsukan\ ;
+空想科学小説 < kuusoukagakushousetsu\ ;
+人種差別主義者 < jinshusabetsushugisha\ ;
+新入社員教育 < shin''nyuushainkyouiku\ ;
+推奨文献目録 < suishoubunkenmokuroku\ ;
+集中治療室 < shuuchuuchiryoushitsu\ ;
+徳川三代家光 < tokugawasandaiiemitsu\ ;
+自然環境保全法 < shizenkankyouhozenhou\ ;
+生活協同組合 < seikatsukyoudoukumiai\ ;
+環太平洋造山帯 < kantaiheiyouzouzantai\ ;
+行動主義心理学 < koudoushugishinrigaku\ ;
+料金別納郵便 < ryoukinbetsunouyuubin\ ;
+中距離核戦力 < chuukyorikakusenryoku\ ;
+第一次世界大戦 < daiichijisekaitaisen\ ;
+農業協同組合 < nougyoukyoudoukumiai\ ;
+大陸横断鉄道 < tairikuoudantetsudou\ ;
+直轄植民地 < chokkatsushokuminchi\ ;
+変動為替相場制 < hendoukawasesoubasei\ ;
+木造建築物 < mokuzoukenchikubutsu\ ;
+高分子吸収体 < koubunshikyuushuutai\ ;
+歯内療法専門医 < shikaryouhousenmon''i\ ;
+日米構造協議 < nichibeikouzoukyougi\ ;
+機械翻訳協会 < kikaihon''yakukyoukai\ ;
+植物性蛋白 < shokubutsuseitanpaku\ ;
+信用取引先 < shin''youtorihikisaki\ ;
+中央行政官庁 < chuuougyouseikanchou\ ;
+北大西洋条約 < kitataiseiyoujouyaku\ ;
+常務取締役 < joumutorishimariyaku\ ;
+環太平洋火山帯 < kantaiheiyoukazantai\ ;
+電気通信大学 < denkitsuushindaigaku\ ;
+芳香族化合物 < houkouzokukagoubutsu\ ;
+七星天道虫 < nanahoshitentoumushi\ ;
+内閣官房長官 < naikakukanbouchoukan\ ;
+実情調査委員会 < jitsujouchousaiinkai\ ;
+弦楽五重奏曲 < gengakugojuusoukyoku\ ;
+民族大虐殺 < minzokudaigyakusatsu\ ;
+科学基礎研究所 < kagakukisokenkyuusho\ ;
+越年生植物 < etsunenseishokubutsu\ ;
+変形生成統語論 < henkeiseiseitougoron\ ;
+構成素統御 < kouseisokouzoutougyo\ ;
+宇宙開発計画 < uchuukaihatsukeikaku\ ;
+米連邦航空局 < beirenpoukuukoukyoku\ ;
+大規模集積回路 < daikiboshuusekikairo\ ;
+南無妙法蓮華経 < namumyouhourengekyou\ ;
+外国人登録法 < gaikokujintourokuhou\ ;
+共産党政治局 < kyousantouseijikyoku\ ;
+未確認飛行物体 < mikakuninhikoubuttai\ ;
+一酸化炭素中毒 < issankatansochuudoku\ ;
+束縛継承原理 < sokubakukeishougenri\ ;
+直接目的語 < chokusetsumokutekigo\ ;
+専務取締役 < senmutorishimariyaku\ ;
+一年生植物 < ichinenseishokubutsu\ ;
+麻薬取締班 < mayakutorishimarihan\ ;
+三軸圧縮試験 < sanjikuasshukushiken\ ;
+麻薬取締法 < mayakutorishimarihou\ ;
+空軍連絡将校 < kuugunrenrakushoukou\ ;
+卸売物価指数 < oroshiuribukkashisuu\ ;
+写真判定決勝 < shashinhanteikesshou\ ;
+前立腺肥大症 < zenritsusenhidaishou\ ;
+公正取引委員会 < kouseitorihikiiinkai\ ;
+説明的妥当性 < setsumeitekidatousei\ ;
+中心的役割 < chuushintekiyakuwari\ ;
+税引前当期利益 < zeibikimaetoukirieki\ ;
+連邦取引委員会 < renpoutorihikiiinkai\ ;
+共通一次試験 < kyoutsuuichijishiken\ ;
+第三種郵便物 < daisanshuyuubinbutsu\ ;
+友好通商航海 < yuukoutsuushoukoukai\ ;
+無担保貸付金 < mutanpokashitsukekin\ ;
+流行性耳下腺炎 < ryuukouseijikasen''en\ ;
+必要十分条件 < hitsuyoujuubunjouken\ ;
+精神的指導者 < seishintekishidousha\ ;
+原子物理学者 < genshibutsurigakusha\ ;
+精密機械工業 < seimitsukikaikougyou\ ;
+再入国許可書 < sainyuukokukyoukasho\ ;
+定形外郵便物 < teikeigaiyuubinbutsu\ ;
+超並列計算機 < chouheiretsukeisanki\ ;
+中枢神経系統 < chuusuushinkeikeitou\ ;
+伝送制御拡張 < densouseigyokakuchou\ ;
+収縮期血圧 < shuushukukiketsuatsu\ ;
+日中友好協会 < nitchuuyuukoukyoukai\ ;
+総理府総務長官 < sourifusoumuchoukan\ ;
+国民金融公庫 < kokuminkin''yuukouko\ ;
+単子葉植物 < tanshiyoushokubutsu\ ;
+口辺単純疱疹 < kouhentanjunhoushin\ ;
+連立方程式 < renritsuhouteishiki\ ;
+集団安全保障 < shuudan''anzenhoshou\ ;
+名神高速道路 < meishinkousokudouro\ ;
+放射性降下物 < houshaseikoukabutsu\ ;
+環境保護主義者 < kankyouhogoshugisha\ ;
+劣性遺伝形質 < resseiidenkeishitsu\ ;
+日本陸上自衛隊 < nihonrikujoujieitai\ ;
+通商産業省 < tsuushousangyoushou\ ;
+初期選択項目 < shokisentakukoumoku\ ;
+全国津津浦浦 < zenkokutsutsuuraura\ ;
+信任統治制度 < shin''nintouchiseido\ ;
+主要部終端型 < shuyoubushuutangata\ ;
+合成化学工業 < gouseikagakukougyou\ ;
+原子力発電 < genshiryokuhatsuden\ ;
+国民体育大会 < kokumintaiikutaikai\ ;
+国際電信電話 < kokusaidenshindenwa\ ;
+電子資金振替 < denshishikinfurikae\ ;
+直接民主制 < chokusetsuminshusei\ ;
+進出制限線 < shinshutsuseigensen\ ;
+株式取引所 < kabushikitorihikijo\ ;
+弦楽四重奏団 < gengakushijuusoudan\ ;
+航空交通管制 < koukuukoutsuukansei\ ;
+財政均衡計画 < zaiseikinkoukeikaku\ ;
+直接教授法 < chokusetsukyoujuhou\ ;
+日本規格協会 < nipponkikakukyoukai\ ;
+動物愛護協会 < doubutsuaigokyoukai\ ;
+双子葉植物 < soushiyoushokubutsu\ ;
+米航空宇宙局 < beikoukuuuchuukyoku\ ;
+日本学術会議 < nihongakujutsukaigi\ ;
+芥川龍之介 < akutagawaryuunosuke\ ;
+貸借対照表 < taishakutaishouhyou\ ;
+公定割引率 < kouteiwaribikiritsu\ ;
+人間環境宣言 < ningenkankyousengen\ ;
+強迫神経症 < kyouhakushinkeishou\ ;
+家宅捜索令状 < katakusousakureijou\ ;
+商業信用状 < shougyoushin''youjou\ ;
+安土桃山時代 < azuchimomoyamajidai\ ;
+生理的食塩水 < seiritekishokuensui\ ;
+環太平洋諸国 < kantaiheiyoushokoku\ ;
+火力支援計画 < karyokushienkeikaku\ ;
+輸出信用状 < yushutsushin''youjou\ ;
+金地金本位制度 < kinjiganehon''iseido\ ;
+著作権所有者 < chosakukenshoyuusha\ ;
+数学的帰納法 < suugakutekikinouhou\ ;
+旧新約全書 < kyuushin''yakuzensho\ ;
+日本国特許庁 < nihonkokutokkyochou\ ;
+出入国管理 < shutsunyuukokukanri\ ;
+食糧管理制度 < shokuryoukanriseido\ ;
+生物化学兵器 < seibutsukagakuheiki\ ;
+障害物競走 < shougaibutsukyousou\ ;
+昼光色電球 < chuukoushokudenkyuu\ ;
+長日植物 < choujitsushokubutsu\ ;
+女権拡張論者 < jokenkakuchouronsha\ ;
+重要無形文化財 < juuyoumukeibunkazai\ ;
+経済社会理事会 < keizaishakairijikai\ ;
+統合幕僚会議 < tougoubakuryoukaigi\ ;
+律令格式 < ritsuryoukyakushiki\ ;
+天然色写真 < ten''nenshokushashin\ ;
+射撃禁止地域 < shagekikinshichiiki\ ;
+食肉植物 < shokunikushokubutsu\ ;
+主語助動詞倒置 < shugojodoushitouchi\ ;
+特命全権公使 < tokumeizenkenkoushi\ ;
+水力発電所 < suiryokuhatsudensho\ ;
+素出力条件 < soshutsuryokujouken\ ;
+国民総支出 < kokuminsoushishutsu\ ;
+植物性脂肪 < shokubutsuseishibou\ ;
+新聞倫理綱領 < shinbunrinrikouryou\ ;
+記述的妥当性 < kijutsutekidatousei\ ;
+旧新約聖書 < kyuushin''yakuseisho\ ;
+万国郵便連合 < bankokuyuubinrengou\ ;
+長期貸付金 < choukikashitsukekin\ ;
+直接接続 < chokusetsusetsuzoku\ ;
+住宅金融公庫 < juutakukin''yuukouko\ ;
+単位体積重量 < tan''itaisekijuuryou\ ;
+統一地方選挙 < touitsuchihousenkyo\ ;
+公開市場政策 < koukaishijouseisaku\ ;
+地球観測衛星 < chikyuukansokueisei\ ;
+生物物理学 < seibutsubutsurigaku\ ;
+平家物語抄 < heikemonogatarishou\ ;
+合同技術委員会 < goudougijutsuiinkai\ ;
+重量拳闘選手 < juuryoukentousenshu\ ;
+人工気胸療法 < jinkoukikyouryouhou\ ;
+地方公共団体 < chihoukoukyoudantai\ ;
+手根管症候群 < shukonkanshoukougun\ ;
+高分子化合物 < koubunshikagoubutsu\ ;
+食虫植物 < shokuchuushokubutsu\ ;
+陸上作戦本部 < rikujousakusenhonbu\ ;
+観察的研究 < kansatsutekikenkyuu\ ;
+放射性廃棄物 < houshaseihaikibutsu\ ;
+逆転分布係数 < gyakutenbunpukeisuu\ ;
+蜘蛛膜下出血 < kumomakukashukketsu\ ;
+自動方向探知機 < jidouhoukoutanchiki\ ;
+共同救済基金 < kyoudoukyuusaikikin\ ;
+賃貸借契約 < chintaishakukeiyaku\ ;
+徳川公爵邸 < tokugawakoushakutei\ ;
+帰還不能限界点 < kikanfunougenkaiten\ ;
+保険金受取人 < hokenkin''uketorinin\ ;
+陸軍士官学校 < rikugunshikangakkou\ ;
+漁業専管水域 < gyogyousenkansuiiki\ ;
+精神分裂症 < seishinbunretsushou\ ;
+芸術至上主義 < geijutsushijoushugi\ ;
+特命全権大使 < tokumeizenkentaishi\ ;
+近接航空支援 < kinsetsukoukuushien\ ;
+太陽熱発電 < taiyounetsuhatsuden\ ;
+海外留学熱 < kaigairyuugakunetsu\ ;
+有機水銀中毒 < yuukisuiginchuudoku\ ;
+妊娠中毒症 < ninshinchuudokushou\ ;
+環太平洋構想 < kantaiheiyoukousou\ ;
+独立採算制 < dokuritsusaisansei\ ;
+市場占有率 < shijousen''yuuritsu\ ;
+公的不法妨害 < koutekifuhoubougai\ ;
+視聴覚教材 < shichoukakukyouzai\ ;
+内閣法制局 < naikakuhouseikyoku\ ;
+国家公安委員長 < kokkakouan''iinchou\ ;
+戦闘支援計画 < sentoushienkeikaku\ ;
+中小企業庁 < chuushoukigyouchou\ ;
+回線制御規則 < kaisenseigyokisoku\ ;
+書簡体小説 < shokantaishousetsu\ ;
+社会生物学 < shakaiseibutsugaku\ ;
+一日一日 < ichinichiichinichi\ ;
+軍隊行進曲 < guntaikoushinkyoku\ ;
+葬送行進曲 < sousoukoushinkyoku\ ;
+港湾運送事業 < kouwan''unsoujigyou\ ;
+物理的現象 < butsuritekigenshou\ ;
+心臓弁膜症 < shinzoubenmakushou\ ;
+膝蓋腱反射 < shitsugaikenhansha\ ;
+門戸開放政策 < monkokaihouseisaku\ ;
+俸給生活者 < houkyuuseikatsusha\ ;
+東名高速道路 < toumeikousokudouro\ ;
+内閣総理大臣 < naikakusouridaijin\ ;
+日本放送協会 < nihonhousoukyoukai\ ;
+航空宇宙工業 < koukuuuchuukougyou\ ;
+生物情報学 < seibutsujouhougaku\ ;
+多年生植物 < tanenseishokubutsu\ ;
+量子物理学 < ryoushibutsurigaku\ ;
+北米合衆国 < hokubeigasshuukoku\ ;
+来客芳名録 < raikyakuhoumeiroku\ ;
+地方検察庁 < chihoukensatsuchou\ ;
+短日植物 < tanjitsushokubutsu\ ;
+標準出力 < hyoujunshutsuryoku\ ;
+専門的知識 < senmontekichishiki\ ;
+結婚行進曲 < kekkonkoushinkyoku\ ;
+安全保障条約 < anzenhoshoujouyaku\ ;
+株式配当金 < kabushikihaitoukin\ ;
+特別配当金 < tokubetsuhaitoukin\ ;
+主働土圧係数 < shudoudoatsukeisuu\ ;
+反射的半順序 < hanshatekihanjunjo\ ;
+経済成長率 < keizaiseichouritsu\ ;
+産業別組合 < sangyoubetsukumiai\ ;
+国際通貨基金 < kokusaitsuukakikin\ ;
+優等卒業生 < yuutousotsugyousei\ ;
+短期集中講座 < tankishuuchuukouza\ ;
+入国管理局 < nyuukokukanrikyoku\ ;
+信賞必罰 < shinshouhitsubatsu\ ;
+日本農林規格 < nihon''nourinkikaku\ ;
+航空宇宙産業 < koukuuuchuusangyou\ ;
+品質保持期限 < hinshitsuhojikigen\ ;
+日本工業規格 < nihonkougyoukikaku\ ;
+間接撮影法 < kansetsusatsueihou\ ;
+実物大模型 < jitsubutsudaimokei\ ;
+軍事的侵略 < gunjitekishinryaku\ ;
+中距離核兵器 < chuukyorikakuheiki\ ;
+酸化還元反応 < sankakangenhan''nou\ ;
+特徴抽出 < tokuchouchuushutsu\ ;
+寿教室 < kotobukikyoushitsu\ ;
+公務執行妨害 < koumushikkoubougai\ ;
+積分方程式 < sekibunhouteishiki\ ;
+高等専門学校 < koutousenmongakkou\ ;
+積算電力計 < sekisandenryokukei\ ;
+二年生植物 < ninenseishokubutsu\ ;
+国会対策委員会 < kokkaitaisakuinkai\ ;
+第二次世界大戦 < dainijisekaitaisen\ ;
+歩兵戦闘車両 < hoheisentousharyou\ ;
+千九百年代 < senkyuuhyakunendai\ ;
+共同記者会見 < kyoudoukishakaiken\ ;
+科学博物館 < kagakuhakubutsukan\ ;
+中国共産党 < chuugokukyousantou\ ;
+高分子物質 < koubunshibusshitsu\ ;
+発達心理学 < hattatsushinrigaku\ ;
+精神薄弱者 < seishinhakujakusha\ ;
+太陽熱温水器 < taiyounetsuonsuiki\ ;
+特別行政区 < tokubetsugyouseiku\ ;
+静止土圧係数 < seishidoatsukeisuu\ ;
+三色印刷法 < sanshokuinsatsuhou\ ;
+排卵誘発剤 < hairan''yuuhatsuzai\ ;
+生活必需品 < seikatsuhitsujuhin\ ;
+少年鑑別所 < shounenkanbetsusho\ ;
+人口動態統計 < jinkoudoutaitoukei\ ;
+座骨神経痛 < zakotsushinkeitsuu\ ;
+植民地政策 < shokuminchiseisaku\ ;
+証券取引法 < shoukentorihikihou\ ;
+私小説 < watakushishousetsu\ ;
+商品回転率 < shouhinkaitenritsu\ ;
+国連事務総長 < kokurenjimusouchou\ ;
+節足動物門 < sessokudoubutsumon\ ;
+着生植物 < chakuseishokubutsu\ ;
+不動産取得税 < fudousanshutokuzei\ ;
+年次有給休暇 < nenjiyuukyuukyuuka\ ;
+実物取引 < jitsubutsutorihiki\ ;
+十二指腸潰瘍 < juunishichoukaiyou\ ;
+計算生物学 < keisanseibutsugaku\ ;
+就職情報誌 < shuushokujouhoushi\ ;
+建設的関係 < kensetsutekikankei\ ;
+客室乗務員 < kyakushitsujoumuin\ ;
+支持力定式 < shijiryokuteishiki\ ;
+動物行動学 < doubutsukoudougaku\ ;
+戦争犯罪法廷 < sensouhanzaihoutei\ ;
+職能代表制 < shokunoudaihyousei\ ;
+最高検察庁 < saikoukensatsuchou\ ;
+心神耗弱者 < shinshinmoujakusha\ ;
+年功序列制度 < nenkoujoretsuseido\ ;
+亜米利加合衆国 < amerikagasshuukoku\ ;
+無脊椎動物 < musekitsuidoubutsu\ ;
+農林水産大臣 < nourinsuisandaijin\ ;
+直接接触 < chokusetsusesshoku\ ;
+家宅侵入罪 < katakushin''nyuuzai\ ;
+分子生物学 < bunshiseibutsugaku\ ;
+主要部先導型 < shuyoubusendougata\ ;
+天体写真術 < tentaishashinjutsu\ ;
+秘密漏洩罪 < himitsurousetsuzai\ ;
+貸付信託 < kashitsukeshintaku\ ;
+間接目的語 < kansetsumokutekigo\ ;
+粘液分泌腺 < nen''ekibunpitsusen\ ;
+瞬間接着剤 < shunkansetchakuzai\ ;
+人口密集率 < jinkoumisshuuritsu\ ;
+国民健康保険 < kokuminkenkouhoken\ ;
+原色写真版 < genshokushashinban\ ;
+不定計量空間 < futeikeiryoukuukan\ ;
+量子色力学 < ryoushiirorikigaku\ ;
+在日米陸軍 < zainichibeirikugun\ ;
+食品添加物 < shokuhintenkabutsu\ ;
+反帝国主義者 < hanteikokushugisha\ ;
+動物性蛋白 < doubutsuseitanpaku\ ;
+特定郵便局 < tokuteiyuubinkyoku\ ;
+日本航空自衛隊 < nihonkoukuujieitai\ ;
+火力発電所 < karyokuhatsudensho\ ;
+多角式農業 < takakushikinougyou\ ;
+電荷結合素子 < denkaketsugousoshi\ ;
+永世中立国 < eiseichuuritsukoku\ ;
+符号化文字集合 < fugoukamojishuugou\ ;
+唯物弁証法 < yuibutsubenshouhou\ ;
+日本海上自衛隊 < nihonkaijoujieitai\ ;
+史的唯物論 < shitekiyuibutsuron\ ;
+宣誓供述書 < senseikyoujutsusho\ ;
+熱膨張係数 < netsubouchoukeisuu\ ;
+有限状態文法 < yuugenjoutaibunpou\ ;
+即日速達 < sokujitsusokutatsu\ ;
+植物性繊維 < shokubutsuseisen''i\ ;
+過失傷害罪 < kashitsushougaizai\ ;
+修正資本主義 < shuuseishihonshugi\ ;
+一卵性双生児 < ichiranseisouseiji\ ;
+共同創設者 < kyoudousousetsusha\ ;
+地中海性気候 < chichuukaiseikikou\ ;
+投資有価証券 < toushiyuukashouken\ ;
+上級副社長 < joukyuufukushachou\ ;
+戦略的提携 < senryakutekiteikei\ ;
+前方再補給点 < zenpousaihokyuuten\ ;
+百発百中 < hyappatsuhyakuchuu\ ;
+環境庁長官 < kankyouchouchoukan\ ;
+取締役会 < torishimariyakukai\ ;
+圧力調整器 < atsuryokuchouseiki\ ;
+生鮮食料品 < seisenshokuryouhin\ ;
+放射性物質 < houshaseibusshitsu\ ;
+地球物理学 < chikyuubutsurigaku\ ;
+反宗教改革 < hanshuukyoukaikaku\ ;
+学識経験者 < gakushikikeikensha\ ;
+立憲君主政体 < rikkenkunshuseitai\ ;
+放送禁止用語 < housoukinshiyougo\ ;
+赤面恐怖症 < sekimenkyoufushou\ ;
+食品衛生法 < shokuhin''eiseihou\ ;
+教職員組合 < kyoushokuinkumiai\ ;
+十一面観世音 < juuichimenkanzeon\ ;
+毛沢東主席 < moutakutoushuseki\ ;
+別途積立金 < bettotsumitatekin\ ;
+返信料葉書 < henshinryouhagaki\ ;
+諸車通行止 < shoshatsuukoudome\ ;
+形状記憶合金 < keijoukiokugoukin\ ;
+国土庁長官 < kokudochouchoukan\ ;
+出力装置 < shutsuryokusouchi\ ;
+複雑骨折 < fukuzatsukossetsu\ ;
+下位範疇化素性 < kaihanchuukasosei\ ;
+勧善懲悪劇 < kanzenchouakugeki\ ;
+医学生物学 < igakuseibutsugaku\ ;
+非標準拡張 < hihyoujunkakuchou\ ;
+行動発起時刻 < koudouhakkijikoku\ ;
+十部門分類法 < juubumonbunruihou\ ;
+太陽光発電 < taiyoukouhatsuden\ ;
+世界一周旅行 < sekaiisshuuryokou\ ;
+返信用葉書 < henshin''youhagaki\ ;
+世界人権宣言 < sekaijinkensengen\ ;
+公的医療機関 < koutekiiryoukikan\ ;
+物的流通 < butsutekiryuutsuu\ ;
+十年一昔 < juunenhitomukashi\ ;
+祥月命日 < shoutsukimeinichi\ ;
+真珠養殖場 < shinjuyoushokujou\ ;
+戦略物質 < senryakubusshitsu\ ;
+肋間神経痛 < rokkanshinkeitsuu\ ;
+海洋物理学 < kaiyoubutsurigaku\ ;
+精神的苦痛 < seishintekikutsuu\ ;
+交流発電機 < kouryuuhatsudenki\ ;
+就職活動 < shuushokukatsudou\ ;
+受働土圧係数 < judoudoatsukeisuu\ ;
+狩猟採集民 < shuryousaishuumin\ ;
+不確定性原理 < fukakuteiseigenri\ ;
+戦闘正面幅 < sentoushoumenhaba\ ;
+不信任投票 < fushin''nintouhyou\ ;
+送金受取人 < soukin''uketorinin\ ;
+弱肉強食 < jakunikukyoushoku\ ;
+伸縮税率 < shinshukuzeiritsu\ ;
+二等辺三角形 < nitouhensankakkei\ ;
+ＤＲＳ理論 < di\ ̄a\ ̄ruesuriron\ ;
+食糧管理法 < shokuryoukanrihou\ ;
+盲腸炎手術 < mouchouenshujutsu\ ;
+神出鬼没 < shinshutsukibotsu\ ;
+第一級殺人 < daiikkyuusatsujin\ ;
+戦略核兵器 < senryakukakuheiki\ ;
+七七日 < shichishichinichi\ ;
+紫露草 < murasakitsuyukusa\ ;
+凍結防止剤 < touketsuboushizai\ ;
+中間配当額 < chuukanhaitougaku\ ;
+政令指定都市 < seireishiteitoshi\ ;
+吸血動物 < kyuuketsudoubutsu\ ;
+高速増殖炉 < kousokuzoushokuro\ ;
+返信料封筒 < henshinryoufuutou\ ;
+衛星地球局 < eiseichikyuukyoku\ ;
+在留外国人 < zairyuugaikokujin\ ;
+熱力学的 < netsurikigakuteki\ ;
+植物採集 < shokubutsusaishuu\ ;
+出力端子 < shutsuryokutanshi\ ;
+標準入力 < hyoujun''nyuuryoku\ ;
+産業廃棄物 < sangyouhaikibutsu\ ;
+無担保借入金 < mutanpokariirekin\ ;
+観葉植物 < kan''youshokubutsu\ ;
+天然記念物 < ten''nenkinenbutsu\ ;
+単位労働組合 < tan''iroudoukumiai\ ;
+中央処理装置 < chuuoushorisouchi\ ;
+出生証明書 < shusseishoumeisho\ ;
+選挙管理委員会 < senkyokanriiinkai\ ;
+上級管理職 < joukyuukanrishoku\ ;
+税関申告書 < zeikanshinkokusho\ ;
+七生報国 < shichishouhoukoku\ ;
+返信用封筒 < henshin''youfuutou\ ;
+熱狂的信者 < nekkyoutekishinja\ ;
+企業間信用 < kigyoukanshin''you\ ;
+欧州通貨単位 < oushuutsuukatan''i\ ;
+開拓者精神 < kaitakushaseishin\ ;
+実物描写 < jitsubutsubyousha\ ;
+深在性真菌 < shinzaiseishinkin\ ;
+自由貿易帯域 < jiyuubouekitaiiki\ ;
+村落共同体 < sonrakukyoudoutai\ ;
+上陸用舟艇 < jourikuyoushuutei\ ;
+古生物学者 < koseibutsugakusha\ ;
+殺真菌薬 < satsushinkin''yaku\ ;
+開発途上国 < kaihatsutojoukoku\ ;
+血圧降下剤 < ketsuatsukoukazai\ ;
+無差別爆撃 < musabetsubakugeki\ ;
+平和的解決 < heiwatekikaisetsu\ ;
+下位範疇化原理 < kaihanchuukagenri\ ;
+食品加工業 < shokuhinkakougyou\ ;
+恋愛至上主義 < ren''aishijoushugi\ ;
+高級住宅地 < koukyuujuutakuchi\ ;
+自動車保険料 < jidoushahokenryou\ ;
+過失致死罪 < kashitsuchishizai\ ;
+高額所得者 < kougakushotokusha\ ;
+十一面観音 < juuichimenkan''non\ ;
+耳鼻咽喉専門医 < jibiinkousenmon''i\ ;
+月経困難症 < gekkeikon''nanshou\ ;
+国際見本市 < kokusaimihon''ichi\ ;
+緑地化計画 < ryokuchikakeikaku\ ;
+標本抽出 < hyouhonchuushutsu\ ;
+戦場航空阻止 < senjoukoukuusoshi\ ;
+中枢神経系 < chuusuushinkeikei\ ;
+統合参謀本部 < tougousanbouhonbu\ ;
+総括質問 < soukatsushitsumon\ ;
+実験的研究 < jikkentekikenkyuu\ ;
+専用駐車場 < sen''youchuushajou\ ;
+潮力発電 < chouryokuhatsuden\ ;
+無過失責任 < mukashitsusekinin\ ;
+一次方程式 < ichijihouteishiki\ ;
+就業時間中 < shuugyoujikanchuu\ ;
+国民休暇村 < kokuminkyuukamura\ ;
+子宮外妊娠 < shikyuugaininshin\ ;
+無担保貸付 < mutanpokashitsuke\ ;
+一粒子既約 < ichiryuushikiyaku\ ;
+企業別組合 < kigyoubetsukumiai\ ;
+不法侵入者 < fuhoushin''nyuusha\ ;
+直接購入 < chokusetsukounyuu\ ;
+収穫感謝祭 < shuukakukanshasai\ ;
+指向性爆薬 < shikouseibakuyaku\ ;
+心因性反応 < shin''inseihan''nou\ ;
+最長不倒距離 < saichoufutoukyori\ ;
+亜熱帯植物 < anettaishokubutsu\ ;
+窮極目的 < kyuukyokumokuteki\ ;
+内閣総辞職 < naikakusoujishoku\ ;
+天照大神 < amaterasuoomikami\ ;
+印象主義音楽 < inshoushugiongaku\ ;
+近代五種競技 < kindaigoshukyougi\ ;
+質実剛健 < shitsujitsugouken\ ;
+証券取引所 < shoukentorihikijo\ ;
+屈折望遠鏡 < kussetsubouenkyou\ ;
+局外中立 < kyokugaichuuritsu\ ;
+後方地域警備 < kouhouchiikikeibi\ ;
+歯牙矯正術 < shigakyouseijutsu\ ;
+単細胞生物 < tansaibouseibutsu\ ;
+日本薬局方 < nihon''yakkyokuhou\ ;
+自動操縦装置 < jidousoujuusouchi\ ;
+深層心理学 < shinsoushinrigaku\ ;
+都市対抗野球 < toshitaikouyakyuu\ ;
+金剛夜叉妙王 < kongouyashamyouou\ ;
+精神薄弱児 < seishinhakujakuji\ ;
+色彩調節 < shikisaichousetsu\ ;
+薬用植物 < yakuyoushokubutsu\ ;
+化学方程式 < kagakuhouteishiki\ ;
+急降下爆撃 < kyuukoukabakugeki\ ;
+水上生活者 < suijouseikatsusha\ ;
+在学証明書 < zaigakushoumeisho\ ;
+植民地統治 < shokuminchitouchi\ ;
+関数方程式 < kansuuhouteishiki\ ;
+秋霜烈日 < shuusouretsujitsu\ ;
+直接請求 < chokusetsuseikyuu\ ;
+推進研究所 < suishinkenkyuusho\ ;
+宗教哲学 < shuukyoutetsugaku\ ;
+戦術核兵器 < senjutsukakuheiki\ ;
+高速演算機構 < kousokuenzankikou\ ;
+発展的解消 < hattentekikaishou\ ;
+飛行禁止空域 < hikoukinshikuuiki\ ;
+国立図書館 < kokuritsutoshokan\ ;
+三行広告欄 < sangyoukoukokuran\ ;
+勧業博覧会 < kangyouhakurankai\ ;
+薬物中毒 < yakubutsuchuudoku\ ;
+分析心理学 < bunsekishinrigaku\ ;
+教育心理学 < kyouikushinrigaku\ ;
+業務上過失 < gyoumujoukashitsu\ ;
+環境保護論者 < kankyouhogoronsha\ ;
+成績証明書 < seisekishoumeisho\ ;
+週間天気予報 < shuukantenkiyohou\ ;
+放射線感受性 < houshasenkanjusei\ ;
+社会民主主義 < shakaiminshushugi\ ;
+小心翼翼 < shoushin''yokuyoku\ ;
+特別幕僚 < tokubetsubakuryou\ ;
+入学志願者 < nyuugakushigansha\ ;
+部分情報構造 < bubunjouhoukouzou\ ;
+一挙手一投足 < ikkyoshuittousoku\ ;
+分裂物質 < bunretsubusshitsu\ ;
+有形固定資産 < yuukeikoteishisan\ ;
+中央放送局 < chuuouhousoukyoku\ ;
+直接照明 < chokusetsushoumei\ ;
+飛行記録装置 < hikoukirokusouchi\ ;
+被担保債権額 < hitanposaikengaku\ ;
+共同相続人 < kyoudousouzokunin\ ;
+嘱託殺人 < shokutakusatsujin\ ;
+研究発表会 < kenkyuuhappyoukai\ ;
+二交替制労働 < nikoutaiseiroudou\ ;
+湿生植物 < shisseishokubutsu\ ;
+七十人訳 < shichijuunin''yaku\ ;
+保守系無所属 < hoshukeimushozoku\ ;
+天体分光術 < tentaibunkoujutsu\ ;
+球面三角法 < kyuumensankakuhou\ ;
+計量経済学 < keiryoukeizaigaku\ ;
+反転分布係数 < hantenbunpukeisuu\ ;
+著作権侵害 < chosakukenshingai\ ;
+特別弁護人 < tokubetsubengonin\ ;
+富国強兵策 < fukokukyouheisaku\ ;
+空挺降下地域 < kuuteikoukachiiki\ ;
+予想収穫高 < yosoushuukakudaka\ ;
+火力支援部隊 < karyokushienbutai\ ;
+血友病患者 < ketsuyuubyoukanja\ ;
+発癌物質 < hatsuganbusshitsu\ ;
+直角三角形 < chokkakusankakkei\ ;
+白長須鯨 < shironagasukujira\ ;
+闇価格協定 < yamikakakukyoutei\ ;
+観賞植物 < kanshoushokubutsu\ ;
+赤外線写真 < sekigaisenshashin\ ;
+心神喪失 < shinshinsoushitsu\ ;
+通俗小説 < tsuuzokushousetsu\ ;
+歌舞伎十八番 < kabukijuuhachiban\ ;
+百戦百勝 < hyakusenhyakushou\ ;
+天皇機関説 < ten''noukikansetsu\ ;
+公証人役場 < koushounin''yakuba\ ;
+超現実主義 < chougenjitsushugi\ ;
+二極真空管 < nikyokushinkuukan\ ;
+提灯行列 < chouchingyouretsu\ ;
+阪神大震災 < hanshindaishinsai\ ;
+失業対策 < shitsugyoutaisaku\ ;
+法定得票数 < houteitokuhyousuu\ ;
+設立趣意書 < setsuritsushuisho\ ;
+外国人登録 < gaikokujintouroku\ ;
+身体障害者 < shintaishougaisha\ ;
+大量破壊兵器 < tairyouhakaiheiki\ ;
+消費者信用 < shouhishashin''you\ ;
+反射係数線図 < hanshakeisuusenzu\ ;
+鈍角三角形 < donkakusankakukei\ ;
+海難審判庁 < kainanshinpanchou\ ;
+犯罪発生率 < hanzaihasseiritsu\ ;
+微生物学者 < biseibutsugakusha\ ;
+七色唐辛子 < nanairotougarashi\ ;
+素粒子加速器 < soryuushikasokuki\ ;
+公職選挙法 < koushokusenkyohou\ ;
+定形郵便物 < teikeiyuubinbutsu\ ;
+自由貿易地域 < jiyuubouekichiiki\ ;
+対中国関係 < taichuugokukankei\ ;
+公開市場操作 < koukaishijousousa\ ;
+科学技術庁 < kagakugijutsuchou\ ;
+左側通行 < hidarigawatsuukou\ ;
+大英博物館 < daieihakubutsukan\ ;
+動脈硬化症 < doumyakukoukashou\ ;
+帝王神権説 < teioushinkensetsu\ ;
+救出作戦 < kyuushutsusakusen\ ;
+宇宙大爆発 < uchuudaibakuhatsu\ ;
+首相兼外相 < shushoukengaishou\ ;
+生物地理学 < seibutsuchirigaku\ ;
+人身保護令状 < jinshinhogoreijou\ ;
+原子物理学 < genshibutsurigaku\ ;
+母子健康手帳 < boshikenkoutechou\ ;
+略取誘拐罪 < ryakushuyuukaizai\ ;
+室内装飾 < shitsunaisoushoku\ ;
+厚生年金保険 < kouseinenkinhoken\ ;
+直接競争 < chokusetsukyousou\ ;
+天体物理学 < tentaibutsurigaku\ ;
+降圧変圧器 < kouatsuhen''atsuki\ ;
+東印度会社 < higashiindogaisha\ ;
+物質主義者 < busshitsushugisha\ ;
+国際的貿易 < kokusaitekiboueki\ ;
+中性子爆弾 < chuuseishibakudan\ ;
+代数方程式 < daisuuhouteishiki\ ;
+平均太陽日 < heikintaiyoujitsu\ ;
+性行為感染症 < seikouikansenshou\ ;
+旭日昇天 < kyokujitsushouten\ ;
+乳児死亡率 < nyuujishibouritsu\ ;
+万国博覧会 < bankokuhakurankai\ ;
+防衛施設庁 < boueishisetsuchou\ ;
+有料駐車場 < yuuryouchuushajou\ ;
+臨床心理学 < rinshoushinrigaku\ ;
+生命保険会社 < seimeihokengaisha\ ;
+写真週刊誌 < shashinshuukanshi\ ;
+私有財産制度 < shiyuuzaisanseido\ ;
+巨石記念物 < kyosekikinenbutsu\ ;
+二元方程式 < nigenhouteishiki\ ;
+蘚苔植物 < sentaishokubutsu\ ;
+道義的責任 < dougitekisekinin\ ;
+獅子唐辛子 < shishitougarashi\ ;
+研究室棟 < kenkyuushitsutou\ ;
+気象観測船 < kishoukansokusen\ ;
+軽口話 < karukuchibanashi\ ;
+人猿同祖説 < jin''endousosetsu\ ;
+団体交渉権 < dantaikoushouken\ ;
+対人恐怖症 < taijinkyoufushou\ ;
+脳脊髄膜炎 < nousekizuimakuen\ ;
+要注意人物 < youchuuijinbutsu\ ;
+学校教育法 < gakkoukyouikuhou\ ;
+西側諸国 < nishigawashokoku\ ;
+王権神授説 < oukenshinjusetsu\ ;
+真部分集合 < shinbubunshuugou\ ;
+独占禁止法 < dokusenkinshihou\ ;
+脊椎動物 < sekitsuidoubutsu\ ;
+居間兼寝室 < imakenshinshitsu\ ;
+桑原桑原 < kuwabarakuwabara\ ;
+公称資本金 < koushoushihonkin\ ;
+電動発動機 < dendouhatsudouki\ ;
+応用物理学 < ouyoubutsurigaku\ ;
+享楽生活 < kyourakuseikatsu\ ;
+入力電流 < nyuuryokudenryuu\ ;
+三十八度線 < sanjuuhachidosen\ ;
+十年一日 < juunen''ichijitsu\ ;
+認知心理学 < ninchishinrigaku\ ;
+風俗小説 < fuuzokushousetsu\ ;
+低血圧症 < teiketsuatsushou\ ;
+工業所有権 < kougyoushoyuuken\ ;
+多変量解析 < tahenryoukaiseki\ ;
+虚々実々 < kyokyojitsujitsu\ ;
+清涼飲料水 < seiryouinryousui\ ;
+技術協力 < gijutsukyouryoku\ ;
+空中衝突 < kuuchuushoutotsu\ ;
+一国一党主義 < ikkokuittoushugi\ ;
+日本道路公団 < nihondourokoudan\ ;
+金利生活者 < kinriseikatsusha\ ;
+千篇一律 < senpen''ichiritsu\ ;
+料理教室 < ryourikyoushitsu\ ;
+遺言執行者 < yuigonshikkousha\ ;
+本格小説 < honkakushousetsu\ ;
+貿易外収支 < bouekigaishuushi\ ;
+国立劇場 < kokuritsugekijou\ ;
+実践理性批判 < jissenriseihihan\ ;
+染色体地図 < senshokutaichizu\ ;
+主席研究員 < shusekikenkyuuin\ ;
+高速度写真 < kousokudoshashin\ ;
+草食動物 < soushokudoubutsu\ ;
+高次方程式 < koujihouteishiki\ ;
+微分方程式 < bibunhouteishiki\ ;
+直接選挙 < chokusetsusenkyo\ ;
+郵便私書箱 < yuubinshishobako\ ;
+斜格性統御 < shakakuseitougyo\ ;
+経口避妊薬 < keikouhinin''yaku\ ;
+人材開発部 < jinzaikaihatsubu\ ;
+多重名前空間 < tajuunamaekuukan\ ;
+生者必滅 < shoujahitsumetsu\ ;
+熱帯植物 < nettaishokubutsu\ ;
+万国標準時 < bankokuhyoujunji\ ;
+松下電工 < matsushitadenkou\ ;
+防衛庁長官 < boueichouchoukan\ ;
+含水化合物 < gansuikagoubutsu\ ;
+関東大震災 < kantoudaishinsai\ ;
+商業算術 < shougyousanjutsu\ ;
+装甲回収車 < soukoukaishuusha\ ;
+地方行財政 < chihougyouzaisei\ ;
+性表現情報 < seihyougenjouhou\ ;
+戦戦栗栗 < sensenritsuritsu\ ;
+希望的観測 < kiboutekikansoku\ ;
+反射減衰量 < hanshagensuiryou\ ;
+揮発物質 < kihatsubusshitsu\ ;
+変態心理学 < hentaishinrigaku\ ;
+発光植物 < hakkoushokubutsu\ ;
+欧州共同体 < oushuukyoudoutai\ ;
+紫外線療法 < shigaisenryouhou\ ;
+非武装中立 < hibusouchuuritsu\ ;
+主席外交官 < shusekigaikoukan\ ;
+細胞質遺伝 < saiboushitsuiden\ ;
+共産党宣言 < kyousantousengen\ ;
+電力供給 < denryokukyoukyuu\ ;
+巡回診療所 < junkaishinryoujo\ ;
+源泉所得税 < gensenshotokuzei\ ;
+組職労働者 < soshokuroudousha\ ;
+労働者階級 < roudoushakaikyuu\ ;
+戦略爆撃 < senryakubakugeki\ ;
+妊娠中絶 < ninshinchuuzetsu\ ;
+拡大再生産 < kakudaisaiseisan\ ;
+平和維持活動 < heiwaijikatsudou\ ;
+上級裁判所 < joukyuusaibansho\ ;
+禁欲主義者 < kin''yokushugisha\ ;
+特殊潜航艇 < tokushusenkoutei\ ;
+最恵国待遇 < saikeikokutaiguu\ ;
+共産主義国 < kyousanshugikoku\ ;
+原告対被告 < genkokutaihikoku\ ;
+受託収賄罪 < jutakushuuwaizai\ ;
+流行性感冒 < ryuukouseikanbou\ ;
+国民総生産 < kokuminsouseisan\ ;
+中距離競走 < chuukyorikyousou\ ;
+全国的範囲 < zenkokutekihan''i\ ;
+連邦共和国 < renpoukyouwakoku\ ;
+普遍的法則 < fuhentekihousoku\ ;
+大統領選挙 < daitouryousenkyo\ ;
+二卵性双生児 < niranseisouseiji\ ;
+日猶同祖論 < nichiyuudousoron\ ;
+両替手数料 < ryougaetesuuryou\ ;
+資本利益率 < shihonriekiritsu\ ;
+議院運営委員会 < giin''un''eiiinkai\ ;
+戦車揚陸艦 < senshayourikukan\ ;
+主辞素性規約 < shujisoseikiyaku\ ;
+女性解放運動 < joseikaihouundou\ ;
+売春防止法 < baishunboushihou\ ;
+光化学反応 < koukagakuhan''nou\ ;
+直接会談 < chokusetsukaidan\ ;
+割増賃金 < warimashichingin\ ;
+軍事当局者 < gunjitoukyokusha\ ;
+肉体労働者 < nikutairoudousha\ ;
+自主流通米 < jishuryuutsuumai\ ;
+作付面積 < sakudzukemenseki\ ;
+日独協会 < nichidokukyoukai\ ;
+日常生活 < nichijouseikatsu\ ;
+第一次産業 < daiichijisangyou\ ;
+実存主義者 < jitsuzonshugisha\ ;
+歳入歳出 < sainyuusaishutsu\ ;
+特別急行 < tokubetsukyuukou\ ;
+現実主義者 < genjitsushugisha\ ;
+反政府勢力 < hanseifuseiryoku\ ;
+免疫不全症 < men''ekifuzenshou\ ;
+転出証明 < tenshutsushoumei\ ;
+十進分類法 < jisshinbunruihou\ ;
+偶像教徒的 < guuzoukyoutoteki\ ;
+紅白歌合戦 < kouhakuutagassen\ ;
+経済研究所 < keizaikenkyuusho\ ;
+軍事通信員 < gunjitsuushin''in\ ;
+基準内賃金 < kijun''naichingin\ ;
+県庁所在地 < kenchoushozaichi\ ;
+救荒作物 < kyuukousakumotsu\ ;
+真宗大谷派 < shinshuuootaniha\ ;
+地熱発電 < chinetsuhatsuden\ ;
+薬物療法 < yakubutsuryouhou\ ;
+再入国許可 < sainyuukokukyoka\ ;
+英国国教会 < eikokukokkyoukai\ ;
+食糧配給 < shokuryouhaikyuu\ ;
+炭酸同化作用 < tansandoukasayou\ ;
+清教徒革命 < seikyoutokakumei\ ;
+太陽神経叢 < taiyoushinkeisou\ ;
+直系血族 < chokkeiketsuzoku\ ;
+質問用紙 < shitsumon''youshi\ ;
+経営学修士 < keieigakushuushi\ ;
+健康証明書 < kenkoushoumeisho\ ;
+社会心理学 < shakaishinrigaku\ ;
+二大政党主義 < nidaiseitoushugi\ ;
+独身生活 < dokushinseikatsu\ ;
+警察当局 < keisatsutoukyoku\ ;
+公共企業体 < koukyoukigyoutai\ ;
+直接伝染 < chokusetsudensen\ ;
+都市再開発 < toshisaikaihatsu\ ;
+青空教室 < aozorakyoushitsu\ ;
+放射線療法 < houshasenryouhou\ ;
+国連分担金 < kokurenbuntankin\ ;
+非嫡出子 < hichakushutsushi\ ;
+生活様式 < seikatsuyoushiki\ ;
+定期刊行物 < teikikankoubutsu\ ;
+攻撃開始線 < kougekikaishisen\ ;
+平面三角法 < heimensankakuhou\ ;
+法定伝染病 < houteidensenbyou\ ;
+片道料金 < katamichiryoukin\ ;
+原油流出 < gen''yuryuushutsu\ ;
+略式命令 < ryakushikimeirei\ ;
+芸術活動 < geijutsukatsudou\ ;
+三叉神経痛 < sansashinkeitsuu\ ;
+歴史哲学 < rekishitetsugaku\ ;
+優勝決定戦 < yuushouketteisen\ ;
+下町言葉 < shitamachikotoba\ ;
+最低生活費 < saiteiseikatsuhi\ ;
+不純異性交遊 < fujun''iseikouyuu\ ;
+骨皮筋右衛門 < honekawasujiemon\ ;
+府県別人口 < fukenbetsujinkou\ ;
+緊急着陸 < kinkyuuchakuriku\ ;
+推定相続人 < suiteisouzokunin\ ;
+冷血動物 < reiketsudoubutsu\ ;
+多国籍企業 < takokusekikigyou\ ;
+取扱注意 < toriatsukaichuui\ ;
+浅間山荘事件 < asamasansoujiken\ ;
+晴一時小雨 < hareichijikosame\ ;
+割増料金 < warimashiryoukin\ ;
+季節労働者 < kisetsuroudousha\ ;
+中小諸国家 < choushoushokokka\ ;
+不平等条約 < fubyoudoujouyaku\ ;
+直截簡明 < chokusetsukanmei\ ;
+黄道吉日 < koudoukichinichi\ ;
+最低賃金制 < saiteichinginsei\ ;
+帝国主義的 < teikokushugiteki\ ;
+一触即発 < isshokusokuhatsu\ ;
+即日開票 < sokujitsukaihyou\ ;
+植物質 < shokubutsushitsu\ ;
+納税通知書 < nouzeitsuuchisho\ ;
+関税割当制 < kanzeiwariatesei\ ;
+実質賃金 < jisshitsuchingin\ ;
+居住証明書 < kyojuushoumeisho\ ;
+大使級会談 < taishikyuukaidan\ ;
+教養小説 < kyouyoushousetsu\ ;
+民主活動家 < minshukatsudouka\ ;
+客員研究員 < kyakuinkenkyuuin\ ;
+抽象芸術 < chuushougeijutsu\ ;
+直接支配 < chokusetsushihai\ ;
+環境保護主義 < kankyouhogoshugi\ ;
+世界貿易機関 < sekaibouekikikan\ ;
+支持力係数 < shijiryokukeisuu\ ;
+直下型地震 < chokkagatajishin\ ;
+未解決問題 < mikaiketsumondai\ ;
+建築基準法 < kenchikukijunhou\ ;
+無形固定資産 < mukeikoteishisan\ ;
+知的所有権 < chitekishoyuuken\ ;
+職業安定所 < shokugyouanteijo\ ;
+共産党細胞 < kyousantousaibou\ ;
+一年生草本 < ichinenseisouhon\ ;
+条約加盟国 < jouyakukameikoku\ ;
+立正佼成会 < risshoukouseikai\ ;
+集団就職 < shuudanshuushoku\ ;
+共観福音書 < kyoukanfukuinsho\ ;
+水生植物 < suiseishokubutsu\ ;
+宿直室 < shukuchokushitsu\ ;
+高所恐怖症 < koushokyoufushou\ ;
+新聞販売店 < shinbunhanbaiten\ ;
+農林水産省 < nourinsuisanshou\ ;
+二者選一法 < nishasen''itsuhou\ ;
+境界値問題 < kyoukaichimondai\ ;
+社会人野球 < shakaijin''yakyuu\ ;
+職務質問 < shokumushitsumon\ ;
+乾生植物 < kanseishokubutsu\ ;
+菜食主義者 < saishokushugisha\ ;
+宿泊設備 < shukuhakusetsubi\ ;
+国立大学 < kokuritsudaigaku\ ;
+一言二言 < hitokotofutakoto\ ;
+軍産複合体 < gunsanfukugoutai\ ;
+精神医学者 < seishin''igakusha\ ;
+経済企画庁 < keizaikikakuchou\ ;
+先端支持力 < sentanshijiryoku\ ;
+保健物理学 < hokenbutsurigaku\ ;
+正面衝突 < shoumenshoutotsu\ ;
+分解蒸溜法 < bunkaijouryuuhou\ ;
+計量言語学 < keiryougengogaku\ ;
+地域振興券 < chiikishinkouken\ ;
+急進主義者 < kyuushinshugisha\ ;
+一日千秋 < ichinichisenshuu\ ;
+交通運輸業 < koutsuuun''yugyou\ ;
+商業目的 < shougyoumokuteki\ ;
+無制限供給 < museigenkyoukyuu\ ;
+給与所得者 < kyuuyoshotokusha\ ;
+戦闘爆撃機 < sentoubakugekiki\ ;
+複式学級 < fukushikigakkyuu\ ;
+林業試験場 < ringyoushikenjou\ ;
+卒業証書 < sotsugyoushousho\ ;
+擲弾発射筒 < tekidanhasshatou\ ;
+産軍複合体 < sangunfukugoutai\ ;
+最大公約数 < saidaikouyakusuu\ ;
+国内消費税 < kokunaishouhizei\ ;
+少年審判所 < shounenshinpanjo\ ;
+焼肉定食 < yakinikuteishoku\ ;
+流行性肝炎 < ryuukouseikan''en\ ;
+表面張力 < hyoumenchouryoku\ ;
+準準決勝戦 < junjunkesshousen\ ;
+不完全燃焼 < fukanzen''nenshou\ ;
+原子力時代 < genshiryokujidai\ ;
+農業試験場 < nougyoushikenjou\ ;
+高速度撮影 < kousokudosatsuei\ ;
+特別番組 < tokubetsubangumi\ ;
+学習能力 < gakushuunouryoku\ ;
+好気性生物 < koukiseiseibutsu\ ;
+家庭内暴力 < kateinaibouryoku\ ;
+信用取引 < shin''youtorihiki\ ;
+音声多重放送 < onseitajuuhousou\ ;
+高血圧症 < kouketsuatsushou\ ;
+在籍専従者 < zaisekisenjuusha\ ;
+一口話 < hitokuchibanashi\ ;
+官費留学生 < kanpiryuugakusei\ ;
+南北朝時代 < nanbokuchoujidai\ ;
+死亡診断書 < shiboushindansho\ ;
+弦楽四重奏 < gengakushijuusou\ ;
+仲裁裁判所 < chuusaisaibansho\ ;
+理論物理学 < rironbutsurigaku\ ;
+全般前哨線 < zenpanzenshousen\ ;
+筍生活 < takenokoseikatsu\ ;
+十二指腸虫 < juunishichouchuu\ ;
+中心人物 < chuushinjinbutsu\ ;
+土木工学者 < dobokukougakusha\ ;
+食料品商 < shokuryouhinshou\ ;
+日中韓統合 < nitchuukantougou\ ;
+拡張倍精度 < kakuchoubaiseido\ ;
+労働収容所 < roudoushuuyousho\ ;
+超現実的 < chougenjitsuteki\ ;
+即身成仏 < sokushinjoubutsu\ ;
+国外脱出 < kokugaidasshutsu\ ;
+無着陸飛行 < muchakurikuhikou\ ;
+日付変更線 < hidzukehenkousen\ ;
+直接回答 < chokusetsukaitou\ ;
+当事者能力 < toujishanouryoku\ ;
+脳性小児麻痺 < nouseishounimahi\ ;
+先物取引 < sakimonotorihiki\ ;
+大東亜共栄圏 < daitouakyoueiken\ ;
+歴史小説 < rekishishousetsu\ ;
+煮沸消毒 < shafutsushoudoku\ ;
+海外進出 < kaigaishinshutsu\ ;
+水力発電 < suiryokuhatsuden\ ;
+損益計算書 < son''ekikeisansho\ ;
+小売物価指数 < kouribukkashisuu\ ;
+急行停車駅 < kyuukouteishaeki\ ;
+反植民主義 < hanshokuminshugi\ ;
+極低温科学 < kyokuteionkagaku\ ;
+自由主義経済 < jiyuushugikeizai\ ;
+写真望遠鏡 < shashinbouenkyou\ ;
+形質導入 < keishitsudounyuu\ ;
+妙法蓮華経 < myouhourengekyou\ ;
+実用主義者 < jitsuyoushugisha\ ;
+後方連絡線 < kouhourenrakusen\ ;
+実験心理学 < jikkenshinrigaku\ ;
+夜間預金々庫 < yakan''yokinkinko\ ;
+直接関係 < chokusetsukankei\ ;
+振替休日 < furikaekyuujitsu\ ;
+連邦準備制度 < renpoujunbiseido\ ;
+郵便小包 < yuubinkodzutsumi\ ;
+不法入国者 < fuhounyuukokusha\ ;
+単一神教 < tan''itsushinkyou\ ;
+虚弱体質 < kyojakutaishitsu\ ;
+多元方程式 < tagenhouteishiki\ ;
+国内総生産 < kokunaisouseisan\ ;
+脊索動物 < sekisakudoubutsu\ ;
+武力衝突 < buryokushoutotsu\ ;
+熱核反応 < netsukakuhan''nou\ ;
+鉄道公安官 < tetsudoukouankan\ ;
+種子植物 < shushishokubutsu\ ;
+平台型貨車 < hiradaigatakasha\ ;
+人称代名詞 < ninshoudaimeishi\ ;
+実業之日本 < jitsugyounonihon\ ;
+積層乾電池 < sekisoukandenchi\ ;
+行政管理庁 < gyouseikanrichou\ ;
+赤十字条約 < sekijuujijouyaku\ ;
+光学顕微鏡 < kougakukenbikyou\ ;
+超過勤務手当 < choukakinmuteate\ ;
+予備士官学校 < yobishikangakkou\ ;
+強制収容所 < kyouseishuuyoujo\ ;
+犯罪心理学 < hanzaishinrigaku\ ;
+連邦捜査局 < renpousousakyoku\ ;
+大陸移動説 < tairikuidousetsu\ ;
+直接行動 < chokusetsukoudou\ ;
+企業内教育 < kigyounaikyouiku\ ;
+求職広告 < kyuushokukoukoku\ ;
+実証哲学 < jisshoutetsugaku\ ;
+花嫁花婿 < hanayomehanamuko\ ;
+画像処理装置 < gazoushorisouchi\ ;
+窒素酸化物 < chissosankabutsu\ ;
+帝王切開術 < teiousekkaijutsu\ ;
+六十四分音符 < rokujuushibuonpu\ ;
+春機発動期 < shunkihatsudouki\ ;
+大名行列 < daimyougyouretsu\ ;
+高山植物 < kouzanshokubutsu\ ;
+放射性同位体 < houshaseidouitai\ ;
+天幕製造人 < tenmakuseizounin\ ;
+最優秀選手 < saiyuushuusenshu\ ;
+特別料金 < tokubetsuryoukin\ ;
+勝利又勝利 < shourimatashouri\ ;
+女流文学者 < joryuubungakusha\ ;
+中間小説 < chuukanshousetsu\ ;
+耐久消費財 < taikyuushouhizai\ ;
+非公式協議 < hikoushikikyougi\ ;
+生物濃縮 < seibutsunoushuku\ ;
+入力信号 < nyuuryokushingou\ ;
+空港使用料 < kuukoushiyouryou\ ;
+彫刻室座 < choukokushitsuza\ ;
+確率標本 < kakuritsuhyouhon\ ;
+無重力状態 < mujuuryokujoutai\ ;
+天照皇大神 < tenshoukoudaijin\ ;
+州立大学 < shuuritsudaigaku\ ;
+精神安定剤 < seishin''anteizai\ ;
+酸性酸化物 < sanseisankabutsu\ ;
+写実主義者 < shajitsushugisha\ ;
+冷戦型思考 < reisengatashikou\ ;
+亜熱帯高気圧 < anettaikoukiatsu\ ;
+多肉植物 < tanikushokubutsu\ ;
+電子工業会 < denshikougyoukai\ ;
+電子工学者 < denshikougakusha\ ;
+譲渡人 < yuzuriwatashinin\ ;
+熱伝導率 < netsudendouritsu\ ;
+民主共和国 < minshukyouwakoku\ ;
+磁気共鳴画像 < jikikyoumeigazou\ ;
+独立記念日 < dokuritsukinenbi\ ;
+化学調味料 < kagakuchoumiryou\ ;
+植物人間 < shokubutsuningen\ ;
+鳥獣保護区域 < choujuuhogokuiki\ ;
+終身雇用制 < shuushinkoyousei\ ;
+不定方程式 < futeihouteishiki\ ;
+物物交換 < butsubutsukoukan\ ;
+実力行使 < jitsuryokukoushi\ ;
+型式証明 < katashikishoumei\ ;
+連勝複式 < renshoufukushiki\ ;
+大修道院長 < daishuudouinchou\ ;
+直接協議 < chokusetsukyougi\ ;
+罪障消滅 < zaishoushoumetsu\ ;
+晩生植物 < banseishokubutsu\ ;
+潜在失業 < senzaishitsugyou\ ;
+港湾運送業 < kouwan''unsougyou\ ;
+周波数変調 < shuuhasuuhenchou\ ;
+乾燥地農業 < kansouchinougyou\ ;
+環境配慮書 < kankyouhairyosho\ ;
+直接比較 < chokusetsuhikaku\ ;
+固体物理学 < kotaibutsurigaku\ ;
+核抑止力 < kakuyokushiryoku\ ;
+国際援助機関 < kokusaienjokikan\ ;
+組織労働者 < soshikiroudousha\ ;
+営業報告書 < eigyouhoukokusho\ ;
+万物流転 < banbutsuryuuten\ ;
+軟式庭球 < nanshikiteikyuu\ ;
+広告代理店 < koukokudairiten\ ;
+修道生活 < shuudouseikatsu\ ;
+戦時国際法 < senjikokusaihou\ ;
+秘密警察 < himitsukeisatsu\ ;
+法人株主 < houjinkabunushi\ ;
+内幕話 < uchimakubanashi\ ;
+間接照明 < kansetsushoumei\ ;
+紛骨砕身 < funkotsusaishin\ ;
+両棲動物 < ryouseidoubutsu\ ;
+多額納税者 < tagakunouzeisha\ ;
+太元帥妙王 < daigensuimyouou\ ;
+集約農業 < shuuyakunougyou\ ;
+廃疾条件 < haishitsujouken\ ;
+能率賃金 < nouritsuchingin\ ;
+中部太平洋 < chuubutaiheiyou\ ;
+企業内組合 < kigyounaikumiai\ ;
+単刀直入 < tantouchokunyuu\ ;
+太平洋戦争 < taiheiyousensou\ ;
+三文小説 < sanmonshousetsu\ ;
+筋肉注射 < kin''nikuchuusha\ ;
+四通八達 < shitsuuhattatsu\ ;
+連帯保証人 < rentaihoshounin\ ;
+軍国主義者 < gunkokushugisha\ ;
+割増運賃 < warimashiunchin\ ;
+南極観測 < nankyokukansoku\ ;
+一目瞭然 < ichimokuryouzen\ ;
+素人下宿 < shiroutogeshuku\ ;
+学校給食 < gakkoukyuushoku\ ;
+反帝国主義 < hanteikokushugi\ ;
+間接撮影 < kansetsusatsuei\ ;
+会社更生法 < kaishakouseihou\ ;
+国選弁護人 < kokusenbengonin\ ;
+白川夜船 < shirakawayofune\ ;
+自然地理学 < shizenchirigaku\ ;
+地域的分布 < chiikitekibunpu\ ;
+無政府主義者 < museifushugisha\ ;
+剪断安定性 < sendan''anteisei\ ;
+特筆大書 < tokuhitsutaisho\ ;
+高分子化学 < koubunshikagaku\ ;
+情報公開法 < jouhoukoukaihou\ ;
+反射望遠鏡 < hanshabouenkyou\ ;
+食品工業 < shokuhinkougyou\ ;
+棘皮動物 < kyokuhidoubutsu\ ;
+怪力乱神 < kairyokuranshin\ ;
+人生哲学 < jinseitetsugaku\ ;
+特別委員会 < tokubetsuiinkai\ ;
+内需主導型 < naijushudougata\ ;
+晴天乱気流 < seitenrankiryuu\ ;
+新婚生活 < shinkonseikatsu\ ;
+２０００年問題 < nisen''nenmondai\ ;
+公開入札 < koukainyuusatsu\ ;
+基本的人権 < kihontekijinken\ ;
+株式市場 < kabushikishijou\ ;
+学業成績 < gakugyouseiseki\ ;
+戦争犯罪人 < sensouhanzainin\ ;
+物質名詞 < busshitsumeishi\ ;
+反対貿易風 < hantaibouekifuu\ ;
+短編小説 < tanpenshousetsu\ ;
+道路交通法 < dourokoutsuuhou\ ;
+共産国家郡 < kyousankokkagun\ ;
+商業数学 < shougyousuugaku\ ;
+仮装巡洋艦 < kasoujun''youkan\ ;
+教育基本法 < kyouikukihonhou\ ;
+生産者価格 < seisanshakakaku\ ;
+最小二乗法 < saishounijouhou\ ;
+脱出速度 < dasshutsusokudo\ ;
+特別総会 < tokubetsusoukai\ ;
+第一楽章 < daiichigakushou\ ;
+主幹研究員 < shukankenkyuuin\ ;
+官僚主義者 < kanryoushugisha\ ;
+小選挙区制 < shousenkyokusei\ ;
+索条鉄道 < sakujoutetsudou\ ;
+軍記物語 < gunkimonogatari\ ;
+厳正中立 < genseichuuritsu\ ;
+一日一夜 < ichinichiichiya\ ;
+陰陰滅滅 < in''inmetsumetsu\ ;
+就職浪人 < shuushokurounin\ ;
+自転車操業 < jitenshasougyou\ ;
+純潔教育 < junketsukyouiku\ ;
+世界新記録 < sekaishinkiroku\ ;
+宗教改革 < shuukyoukaikaku\ ;
+商工会議所 < shoukoukaigisho\ ;
+弾劾裁判所 < dangaisaibansho\ ;
+支離滅裂 < shirimetsuretsu\ ;
+国民宿舎 < kokuminshukusha\ ;
+保護関税率 < hogokanzeiritsu\ ;
+独立宣言 < dokuritsusengen\ ;
+副腎皮質 < fukujinhishitsu\ ;
+国民生活 < kokuminseikatsu\ ;
+積載能力 < sekisainouryoku\ ;
+収容能力 < shuuyounouryoku\ ;
+腰高障子 < koshidakashouji\ ;
+年頃日頃 < toshigorohigoro\ ;
+集札係 < shuusatsugakari\ ;
+準禁治産者 < junkinchisansha\ ;
+議院内閣制 < giin''naikakusei\ ;
+通俗文学 < tsuuzokubungaku\ ;
+金槌頭 < kanadzuchiatama\ ;
+優先株主 < yuusenkabunushi\ ;
+写真測量 < shashinsokuryou\ ;
+企業体質 < kigyoutaishitsu\ ;
+生活保護法 < seikatsuhogohou\ ;
+猪突猛進 < chototsumoushin\ ;
+共産主義者 < kyousanshugisha\ ;
+正安息香酸 < seiansokukousan\ ;
+公害病患者 < kougaibyoukanja\ ;
+世界保健機関 < sekaihokenkikan\ ;
+学生割引 < gakuseiwaribiki\ ;
+財政投融資 < zaiseitouyuushi\ ;
+価格圧力 < kakakuatsuryoku\ ;
+港湾労働者 < kouwanroudousha\ ;
+内陸性気候 < nairikuseikikou\ ;
+中央標準時 < chuuouhyoujunji\ ;
+表現形式 < hyougenkeishiki\ ;
+投光照明器 < toukoushoumeiki\ ;
+出願書類 < shutsuganshorui\ ;
+総同盟罷業 < soudoumeihigyou\ ;
+宗教教育 < shuukyoukyouiku\ ;
+余裕綽綽 < yoyuushakushaku\ ;
+知的能力 < chitekinouryoku\ ;
+反骨精神 < hankotsuseishin\ ;
+正確爆撃 < seikakubakugeki\ ;
+日英通訳 < nichieitsuuyaku\ ;
+最高裁判所 < saikousaibansho\ ;
+食物繊維 < shokumotsusen''i\ ;
+算術級数 < sanjutsukyuusuu\ ;
+入力装置 < nyuuryokusouchi\ ;
+職業訓練 < shokugyoukunren\ ;
+探偵小説 < tanteishousetsu\ ;
+生活反応 < seikatsuhan''nou\ ;
+営団地下鉄 < eidanchikatetsu\ ;
+松下電器 < matsushitadenki\ ;
+知識階級 < chishikikaikyuu\ ;
+株式会社 < kabushikigaisha\ ;
+一時預所 < ichijiazukarijo\ ;
+飽和化合物 < houwakagoubutsu\ ;
+拡大解釈 < kakudaikaishaku\ ;
+金属探知機 < kinzokutanchiki\ ;
+浮動小数点 < fudoushousuuten\ ;
+品質保証 < hinshitsuhoshou\ ;
+言語心理学 < gengoshinrigaku\ ;
+信仰告白 < shinkoukokuhaku\ ;
+格物致知 < kakubutsuchichi\ ;
+一姫二太郎 < ichihimenitarou\ ;
+界面活性剤 < kaimenkasseizai\ ;
+米穀通帳 < beikokutsuuchou\ ;
+人生案内欄 < jinseian''nairan\ ;
+実用新案 < jitsuyoushin''an\ ;
+心身障害 < shinshinshougai\ ;
+一分二十秒 < ippun''nijuubyou\ ;
+速戦即決 < sokusensokketsu\ ;
+化学吸着 < kagakukyuuchaku\ ;
+四方山話 < yomoyamabanashi\ ;
+皇室典範 < koushitsutenpan\ ;
+南阿共和国 < nan''akyouwakoku\ ;
+二十四時間制 < nijuuyojikansei\ ;
+特別国会 < tokubetsukokkai\ ;
+一坪本社 < hitotsubohonsha\ ;
+早口言葉 < hayakuchikotoba\ ;
+深山幽谷 < shinzan''yuukoku\ ;
+通商産業 < tsuushousangyou\ ;
+主戦闘戦車 < shusentousensha\ ;
+建築面積 < kenchikumenseki\ ;
+比較言語学 < hikakugengogaku\ ;
+盤根錯節 < bankonsakusetsu\ ;
+内的生活 < naitekiseikatsu\ ;
+内政不干渉 < naiseifukanshou\ ;
+秘密漏洩 < himitsurousetsu\ ;
+高等裁判所 < koutousaibansho\ ;
+出札掛 < shussatsugakari\ ;
+玉石混淆 < gyokusekikonkou\ ;
+雛鑑別者 < hinakanbetsusha\ ;
+終身年金 < shuushin''nenkin\ ;
+人物寸描 < jinbutsusunbyou\ ;
+商品目録 < shouhinmokuroku\ ;
+外食産業 < gaishokusangyou\ ;
+資源節約 < shigensetsuyaku\ ;
+球面幾何学 < kyuumenkikagaku\ ;
+静脈注射 < joumyakuchuusha\ ;
+冒険小説 < boukenshousetsu\ ;
+熱硬化物 < netsukoukabutsu\ ;
+電子顕微鏡 < denshikenbikyou\ ;
+国有鉄道 < kokuyuutetsudou\ ;
+確率変数 < kakuritsuhensuu\ ;
+開発計画 < kaihatsukeikaku\ ;
+労働生産性 < roudouseisansei\ ;
+有害物質 < yuugaibusshitsu\ ;
+情状酌量 < joujoushakuryou\ ;
+侵略戦争 < shinryakusensou\ ;
+平行四辺形 < heikoushihenkei\ ;
+冒頭陳述 < boutouchinjutsu\ ;
+焼身自殺 < shoushinjisatsu\ ;
+感傷主義者 < kanshoushugisha\ ;
+学生自治会 < gakuseijichikai\ ;
+大安吉日 < taiankichinichi\ ;
+矯正視力 < kyouseishiryoku\ ;
+年金受給者 < nenkinjukyuusha\ ;
+研究開発 < kenkyuukaihatsu\ ;
+三指鴎 < mitsuyubikamome\ ;
+談合入札 < dangounyuusatsu\ ;
+非同期通信 < hidoukitsuushin\ ;
+三十年戦争 < sanjuunensensou\ ;
+閉所恐怖症 < heijokyoufushou\ ;
+司法研修所 < shihoukenshuujo\ ;
+陸生動物 < rikuseidoubutsu\ ;
+低金利政策 < teikinriseisaku\ ;
+看護婦養成所 < kangofuyouseijo\ ;
+南太平洋 < minamitaiheiyou\ ;
+麻薬常用者 < mayakujouyousha\ ;
+学生生活 < gakuseiseikatsu\ ;
+長距離列車 < choukyoriressha\ ;
+懲罰委員会 < choubatsuiinkai\ ;
+１１９番 < hyakujuukyuuban\ ;
+有機化合物 < yuukikagoubutsu\ ;
+結合組織 < ketsugousoshiki\ ;
+不当労働行為 < futouroudoukoui\ ;
+彫心鏤骨 < choushinrukotsu\ ;
+縁日商人 < en''nichishounin\ ;
+心神耗弱 < shinshinmoujaku\ ;
+短期貸付 < tankikashitsuke\ ;
+楽天主義者 < rakutenshugisha\ ;
+左中括弧 < hidarichuukakko\ ;
+無条件降伏 < mujoukenkoufuku\ ;
+運転免許証 < untenmenkyoshou\ ;
+格闘戦部隊 < kakutousenbutai\ ;
+黒色人種 < kokushokujinshu\ ;
+公式発表 < koushikihappyou\ ;
+展示即売会 < tenjisokubaikai\ ;
+軍事境界線 < gunjikyoukaisen\ ;
+軟骨組織 < nankotsusoshiki\ ;
+腰赤燕 < koshiakatsubame\ ;
+消費者団体 < shouhishadantai\ ;
+全体主義国 < zentaishugikoku\ ;
+星間物質 < seikanbusshitsu\ ;
+不可侵条約 < fukashinjouyaku\ ;
+生涯学習 < shougaigakushuu\ ;
+知識表現 < chishikihyougen\ ;
+源氏物語 < genjimonogatari\ ;
+七転八倒 < shichitenbattou\ ;
+座席指定券 < zasekishiteiken\ ;
+白色人種 < hakushokujinshu\ ;
+平家物語 < heikemonogatari\ ;
+拒絶反応 < kyozetsuhan''nou\ ;
+帰国子女枠 < kikokushijowaku\ ;
+特別待遇 < tokubetsutaiguu\ ;
+青天白日 < seitenhakujitsu\ ;
+天罰覿面 < tenbatsutekimen\ ;
+血族結婚 < ketsuzokukekkon\ ;
+発色現像 < hasshokugenshou\ ;
+入札価格 < nyuusatsukakaku\ ;
+連立内閣 < renritsunaikaku\ ;
+腹式呼吸 < fukushikikokyuu\ ;
+遺言補足書 < yuigonhosokusho\ ;
+低開発国 < teikaihatsukoku\ ;
+軽妙洒脱 < keimyoushadatsu\ ;
+鋼索鉄道 < kousakutetsudou\ ;
+炭鉱労働者 < tankouroudousha\ ;
+解析幾何学 < kaisekikikagaku\ ;
+現有勢力 < gen''yuuseiryoku\ ;
+経済性向上 < keizaiseikoujou\ ;
+遊休施設 < yuukyuushisetsu\ ;
+跳躍振動 < chouyakushindou\ ;
+地下核実験 < chikakakujikken\ ;
+比例代表制 < hireidaihyousei\ ;
+立憲君主政 < rikkenkunshusei\ ;
+魚雷発射管 < gyoraihasshakan\ ;
+損益分岐点 < son''ekibunkiten\ ;
+社会保険庁 < shakaihokenchou\ ;
+超然内閣 < chouzen''naikaku\ ;
+歩行者天国 < hokoushatengoku\ ;
+実業学校 < jitsugyougakkou\ ;
+私立大学 < shiritsudaigaku\ ;
+最低血圧 < saiteiketsuatsu\ ;
+尊属殺人 < sonzokusatsujin\ ;
+国民皆保険 < kokuminkaihoken\ ;
+診察室 < shinsatsushitsu\ ;
+中立地帯 < chuuritsuchitai\ ;
+両極地方 < ryoukyokuchihou\ ;
+連続殺人 < renzokusatsujin\ ;
+垂直分業 < suichokubungyou\ ;
+洗濯石鹸 < sentakusetsuken\ ;
+闘病生活 < toubyouseikatsu\ ;
+同文通達 < doubuntsuutatsu\ ;
+円転滑脱 < entenkatsudatsu\ ;
+単純再生産 < tanjunsaiseisan\ ;
+被選挙資格 < hisenkyoshikaku\ ;
+生物工学 < seibutsukougaku\ ;
+基準外賃金 < kijungaichingin\ ;
+一律減反 < ichiritsugentan\ ;
+人員縮少 < jin''inshukushou\ ;
+識別力 < shikibetsuryoku\ ;
+熱帯低気圧 < nettaiteikiatsu\ ;
+独立変数 < dokuritsuhensuu\ ;
+人定質問 < jinteishitsumon\ ;
+新約聖書 < shin''yakuseisho\ ;
+生殺与奪 < seisatsuyodatsu\ ;
+私自身 < watakushijishin\ ;
+平清盛 < tairanokiyomori\ ;
+殿様仕事 < tonosamashigoto\ ;
+台所用品 < daidokoroyouhin\ ;
+貴金属卸 < kikinzokuoroshi\ ;
+上方贅六 < kamigatazeiroku\ ;
+血族関係 < ketsuzokukankei\ ;
+子宮後屈 < shikyuukoukutsu\ ;
+南征北伐 < nanseihokubatsu\ ;
+現在完了時 < genzaikanryouji\ ;
+真実一路 < shinjitsuichiro\ ;
+特別運賃 < tokubetsuunchin\ ;
+等辺三角形 < touhensankakkei\ ;
+日常茶飯事 < nichijousahanji\ ;
+通常戦力 < tsuujousenryoku\ ;
+連鎖状球菌 < rensajoukyuukin\ ;
+利害得失 < rigaitokushitsu\ ;
+浅酌低唱 < senshakuteishou\ ;
+裸子植物 < rashishokubutsu\ ;
+借用証書 < shakuyoushousho\ ;
+共有結合 < kyouyuuketsugou\ ;
+原爆犠牲者 < genbakugiseisha\ ;
+回折領域 < kaisetsuryouiki\ ;
+職業意識 < shokugyouishiki\ ;
+外国投資家 < gaikokutoushika\ ;
+単式学級 < tanshikigakkyuu\ ;
+学術雑誌 < gakujutsuzasshi\ ;
+入出力 < nyuushutsuryoku\ ;
+紛失届 < funshitsutodoke\ ;
+電波天文学 < denpatenmongaku\ ;
+卒業試験 < sotsugyoushiken\ ;
+優性形質 < yuuseikeishitsu\ ;
+成長曲線 < seichoukyokusen\ ;
+百八十度 < hyakuhachijuudo\ ;
+大和撫子 < yamatonadeshiko\ ;
+好色文学 < koushokubungaku\ ;
+霊魂消滅 < reikonshoumetsu\ ;
+特別配当 < tokubetsuhaitou\ ;
+構造言語学 < kouzougengogaku\ ;
+風力階級 < fuuryokukaikyuu\ ;
+地域冷暖房 < chiikireidanbou\ ;
+流体力学 < ryuutairikigaku\ ;
+人工呼吸法 < jinkoukokyuuhou\ ;
+劣弱意識 < retsujakuishiki\ ;
+実証主義者 < jisshoushugisha\ ;
+求職係 < kyuushokugakari\ ;
+二股膏薬 < futamatakouyaku\ ;
+支持力理論 < shijiryokuriron\ ;
+物質代謝 < busshitsutaisha\ ;
+管轄官庁 < kankatsukanchou\ ;
+公開討論会 < koukaitouronkai\ ;
+修正申告 < shuuseishinkoku\ ;
+心理小説 < shinrishousetsu\ ;
+着陸地点 < chakurikuchiten\ ;
+文部科学省 < monbukagakushou\ ;
+特許明細書 < tokkyomeisaisho\ ;
+実験小説 < jikkenshousetsu\ ;
+原子爆発 < genshibakuhatsu\ ;
+税制調査会 < zeiseichousakai\ ;
+入力情報 < nyuuryokujouhou\ ;
+量子力学 < ryoushirikigaku\ ;
+奪三振王 < datsusanshin''ou\ ;
+発展途上国 < hattentojoukoku\ ;
+公共図書館 < koukyoutoshokan\ ;
+年末調整 < nenmatsuchousei\ ;
+学術論文 < gakujutsuronbun\ ;
+生物学者 < seibutsugakusha\ ;
+六百六号 < roppyakurokugou\ ;
+思弁哲学 < shibentetsugaku\ ;
+国内規格化 < kokunaikikakuka\ ;
+創立記念日 < souritsukinenbi\ ;
+金銭登録器 < kinsentourokuki\ ;
+抗生物質 < kouseibusshitsu\ ;
+労働組合法 < roudoukumiaihou\ ;
+素形材産業 < sokeizaisangyou\ ;
+活動写真 < katsudoushashin\ ;
+交換貿易制 < koukanbouekisei\ ;
+現地駐在員 < genchichuuzaiin\ ;
+最小自乗法 < saishoujijouhou\ ;
+小型乗用車 < kogatajouyousha\ ;
+属性値行列 < zokusegyouretsu\ ;
+海軍兵学校 < kaigunheigakkou\ ;
+精神薄弱 < seishinhakujaku\ ;
+強迫観念 < kyouhakukan''nen\ ;
+黄道十二宮 < koudoujuunikyuu\ ;
+苦情処理機関 < kujoushorikikan\ ;
+軍縮協定 < gunshukukyoutei\ ;
+着陸地帯 < chakurikuchitai\ ;
+炭塵爆発 < tanjinbakuhatsu\ ;
+補助記憶装置 < hojokiokusouchi\ ;
+生活環境 < seikatsukankyou\ ;
+出来高仕事 < dekidakashigoto\ ;
+技術革新 < gijutsukakushin\ ;
+資産負債表 < shisanfusaihyou\ ;
+粟粒結核 < zokuryuukekkaku\ ;
+版権所有者 < hankenshoyuusha\ ;
+信徒伝動者 < shintodendousha\ ;
+仮受取証 < kariuketorishou\ ;
+新聞配達 < shinbunhaitatsu\ ;
+卒業論文 < sotsugyouronbun\ ;
+登録商標 < tourokushouhyou\ ;
+信用銘柄 < shin''youmeigara\ ;
+操浄瑠璃 < ayatsurijoururi\ ;
+共同生活 < kyoudouseikatsu\ ;
+官能主義者 < kan''noushugisha\ ;
+伝達特性 < dentatsutokusei\ ;
+金壺眼 < kanatsubomanako\ ;
+信仰生活 < shinkouseikatsu\ ;
+郷土小説 < kyoudoshousetsu\ ;
+集団生活 < shuudanseikatsu\ ;
+聖霊降臨祭 < seireikourinsai\ ;
+駐日大使 < chuunichitaishi\ ;
+島国根性 < shimagunikonjou\ ;
+流行性脳炎 < ryuukouseinouen\ ;
+記念論文集 < kinenronbunshuu\ ;
+自動連結機 < jidourenketsuki\ ;
+大陸性気候 < tairikuseikikou\ ;
+左小括弧 < hidarishoukakko\ ;
+核兵器実験 < kakuheikijikken\ ;
+民族宗教 < minzokushuukyou\ ;
+日中韓越 < nitchuukan''etsu\ ;
+誇大妄想狂 < kodaimousoukyou\ ;
+黒色火薬 < kokushokukayaku\ ;
+万有神教 < ban''yuushinkyou\ ;
+頭脳流出 < zunouryuushutsu\ ;
+直接話法 < chokusetsuwahou\ ;
+身分証明書 < mibunshoumeisho\ ;
+文字多重放送 < mojitajuuhousou\ ;
+医師国家試験 < ishikokkashiken\ ;
+文化人類学 < bunkajinruigaku\ ;
+形質転換 < keishitsutenkan\ ;
+第三次産業 < daisanjisangyou\ ;
+正真正銘 < shoushinshoumei\ ;
+爆弾発言 < bakudanhatsugen\ ;
+文化大革命 < bunkadaikakumei\ ;
+直立不動 < chokuritsufudou\ ;
+商業道徳 < shougyoudoutoku\ ;
+陳列室 < chinretsushitsu\ ;
+特設会場 < tokusetsukaijou\ ;
+非局所分岐 < hikyokushobunki\ ;
+核物理学 < kakubutsurigaku\ ;
+肢体不自由児 < shitaifujiyuuji\ ;
+仮名漢字変換 < kanakanjihenkan\ ;
+直立猿人 < chokuritsuenjin\ ;
+関係代名詞 < kankeidaimeishi\ ;
+多国籍言語 < takokusekigengo\ ;
+超連結子 < chourenketsushi\ ;
+水銀気圧計 < suiginkiatsukei\ ;
+甲論乙駁 < kouron''otsubaku\ ;
+児童心理学 < jidoushinrigaku\ ;
+物的資源 < butsutekishigen\ ;
+直接支援 < chokusetsushien\ ;
+空洞化現象 < kuudoukagenshou\ ;
+無理方程式 < murihouteishiki\ ;
+新制中学 < shinseichuugaku\ ;
+圧力団体 < atsuryokudantai\ ;
+温血動物 < onketsudoubutsu\ ;
+交差対称性 < kousataishousei\ ;
+中立労連 < chuuritsurouren\ ;
+特別室 < tokubetsushitsu\ ;
+研究活動 < kenkyuukatsudou\ ;
+自然哲学 < shizentetsugaku\ ;
+株主総会 < kabunushisoukai\ ;
+性格判別 < seikakuhanbetsu\ ;
+喧嘩両成敗 < kenkaryouseibai\ ;
+過失傷害 < kashitsushougai\ ;
+通信工学 < tsuushinkougaku\ ;
+同一人物 < douitsujinbutsu\ ;
+国家公務員法 < kokkakoumuinhou\ ;
+商学博士 < shougakuhakushi\ ;
+心頭滅却 < shintoumekkyaku\ ;
+強行採決 < kyoukousaiketsu\ ;
+視聴覚機器 < shichoukakukiki\ ;
+就任演説 < shuunin''enzetsu\ ;
+染色体異常 < senshokutaiijou\ ;
+名論卓説 < meirontakusetsu\ ;
+注入教育 < chuunyuukyouiku\ ;
+向精神薬 < kouseishin''yaku\ ;
+結婚適齢期 < kekkontekireiki\ ;
+漸近的自由 < zenkintekijiyuu\ ;
+分列行進 < bunretsukoushin\ ;
+食料品店 < shokuryouhinten\ ;
+意志決定機関 < ishiketteikikan\ ;
+主辞素性原理 < shujisoseigenri\ ;
+潮汐摩擦 < chousekimasatsu\ ;
+節足動物 < sessokudoubutsu\ ;
+食物連鎖 < shokumotsurensa\ ;
+中肉中背 < chuunikuchuuzei\ ;
+社会民主党 < shakaiminshutou\ ;
+集中攻撃 < shuuchuukougeki\ ;
+確定判決 < kakuteihanketsu\ ;
+少女小説 < shoujoshousetsu\ ;
+私設応援団 < shisetsuouendan\ ;
+博学力行 < hakugakuryokkou\ ;
+経済同友会 < keizaidouyuukai\ ;
+反証可能性 < hanshoukanousei\ ;
+傍系血族 < boukeiketsuzoku\ ;
+中間内閣 < chuukan''naikaku\ ;
+単独供給 < tandokukyoukyuu\ ;
+搬送周波数 < hansoushuuhasuu\ ;
+失業保険 < shitsugyouhoken\ ;
+特別会計 < tokubetsukaikei\ ;
+振幅変調 < shinpukuhenchou\ ;
+広告収入 < koukokushuunyuu\ ;
+中国大陸 < chuugokutairiku\ ;
+最高指導者 < saikoushidousha\ ;
+放出物資 < houshutsubusshi\ ;
+配達証明 < haitatsushoumei\ ;
+最終目的 < saishuumokuteki\ ;
+葡萄状球菌 < budoujoukyuukin\ ;
+全翼飛行機 < zen''yokuhikouki\ ;
+一蓮托生 < ichirentakushou\ ;
+速効性肥料 < sokkouseihiryou\ ;
+三角測量 < sankakusokuryou\ ;
+動物学者 < doubutsugakusha\ ;
+化学物質 < kagakubusshitsu\ ;
+遅効性肥料 < chikouseihiryou\ ;
+国粋主義者 < kokusuishugisha\ ;
+熱原子核 < netsugenshikaku\ ;
+地質調査 < chishitsuchousa\ ;
+断弾性係数 < dandanseikeisuu\ ;
+歯列矯正 < shiretsukyousei\ ;
+四十七士 < shijuushichishi\ ;
+二次方程式 < nijihouteishiki\ ;
+十月革命 < juugatsukakumei\ ;
+応用心理学 < ouyoushinrigaku\ ;
+文質彬彬 < bunshitsuhinpin\ ;
+精神異常者 < seishin''ijousha\ ;
+紫水晶 < murasakizuishou\ ;
+信託契約 < shintakukeiyaku\ ;
+出生年月日 < shusseinengappi\ ;
+独立戦争 < dokuritsusensou\ ;
+火力発電 < karyokuhatsuden\ ;
+速達郵便 < sokutatsuyuubin\ ;
+弁護士事務所 < bengoshijimusho\ ;
+四百四病 < shihyakushibyou\ ;
+動詞状名詞 < doushijoumeishi\ ;
+元帳残高 < motochouzandaka\ ;
+自由裁量権 < jiyuusairyouken\ ;
+中央集権化 < chuuoushuukenka\ ;
+無利息証券 < murisokushouken\ ;
+抽象美術 < chuushoubijutsu\ ;
+物質文明 < busshitsubunmei\ ;
+超物理学 < choubutsurigaku\ ;
+仁義礼智信 < jingireichishin\ ;
+更年期障害 < kounenkishougai\ ;
+国語審議会 < kokugoshingikai\ ;
+地方裁判所 < chihousaibansho\ ;
+食糧不足 < shokuryoubusoku\ ;
+公共施設 < koukyoushisetsu\ ;
+自動改札機 < jidoukaisatsuki\ ;
+南極条約 < nankyokujouyaku\ ;
+未就学児童 < mishuugakujidou\ ;
+兵力削減 < heiryokusakugen\ ;
+取締役 < torishimariyaku\ ;
+公職追放 < koushokutsuihou\ ;
+学術団体 < gakujutsudantai\ ;
+実時間処理 < jitsujikanshori\ ;
+共生生物 < kyouseiseibutsu\ ;
+被子植物 < hishishokubutsu\ ;
+有畜農業 < yuuchikunougyou\ ;
+寄生植物 < kiseishokubutsu\ ;
+預金準備率 < yokinjunbiritsu\ ;
+天体望遠鏡 < tentaibouenkyou\ ;
+社会諸科学 < shakaishokagaku\ ;
+武侠小説 < bukyoushousetsu\ ;
+木質繊維 < mokushitsusen''i\ ;
+直通列車 < chokutsuuressha\ ;
+転置行列 < tenchigyouretsu\ ;
+法律事務所 < houritsujimusho\ ;
+出動命令 < shutsudoumeirei\ ;
+舌先三寸 < shitasakisanzun\ ;
+大衆食堂 < taishuushokudou\ ;
+実利主義者 < jitsurishugisha\ ;
+内閣閣僚 < naikakukakuryou\ ;
+未確認情報 < mikakuninjouhou\ ;
+老人性痴呆 < roujinseichihou\ ;
+在外研究員 < zaigaikenkyuuin\ ;
+人口爆発 < jinkoubakuhatsu\ ;
+客観主義者 < kyakkanshugisha\ ;
+片口鰯 < katakuchiiwashi\ ;
+圧縮効率 < asshukukouritsu\ ;
+国立銀行 < kokuritsuginkou\ ;
+一病息災 < ichibyousokusai\ ;
+選手権大会 < senshukentaikai\ ;
+正金取引 < shoukintorihiki\ ;
+流通革命 < ryuutsuukakumei\ ;
+芸術作品 < geijutsusakuhin\ ;
+下級裁判所 < kakyuusaibansho\ ;
+逓降変圧器 < teikouhenatsuki\ ;
+限界顕微鏡 < genkaikenbikyou\ ;
+新興宗教 < shinkoushuukyou\ ;
+知識工学 < chishikikougaku\ ;
+体質改善 < taishitsukaizen\ ;
+片側通行 < katagawatsuukou\ ;
+南極大陸 < nankyokutairiku\ ;
+艶笑小話 < enshoukobanashi\ ;
+要撃戦闘機 < yougekisentouki\ ;
+商業美術 < shougyoubijutsu\ ;
+神色自若 < shinshokujijaku\ ;
+水際作戦 < mizugiwasakusen\ ;
+不公平競争 < fukouheikyousou\ ;
+物的証拠 < butsutekishouko\ ;
+公認会計士 < kouninkaikeishi\ ;
+操業短縮 < sougyoutanshuku\ ;
+不倒翁 < okiagarikoboshi\ ;
+内股膏薬 < uchimatagouyaku\ ;
+犯行声明文 < hankouseimeibun\ ;
+消費者価格 < shouhishakakaku\ ;
+音楽評論家 < ongakuhyouronka\ ;
+色彩感覚 < shikisaikankaku\ ;
+公安調査庁 < kouanchousachou\ ;
+乗降車優先 < joukoushayuusen\ ;
+人工甘味料 < jinkoukanmiryou\ ;
+在郷軍人会 < zaigougunjinkai\ ;
+自記湿度計 < jikishitsudokei\ ;
+大統一理論 < daitouitsuriron\ ;
+超能力者 < chounouryokusha\ ;
+検定教科書 < kenteikyoukasho\ ;
+医学技術士 < igakugijutsushi\ ;
+天皇誕生日 < ten''noutanjoubi\ ;
+太平洋地域 < taiheiyouchiiki\ ;
+木食上人 < mokujikishounin\ ;
+自由主義国家 < jiyuushugikokka\ ;
+連載小説 < rensaishousetsu\ ;
+資産再評価 < shisansaihyouka\ ;
+情緒障害児 < jouchoshougaiji\ ;
+日本国憲法 < nihonkokukenpou\ ;
+人民解放軍 < jinminkaihougun\ ;
+焦熱地獄 < shounetsujigoku\ ;
+骨粗鬆症 < kotsusoshoushou\ ;
+流通証券 < ryuutsuushouken\ ;
+差引勘定 < sashihikikanjou\ ;
+開腹手術 < kaifukushujutsu\ ;
+即日出荷 < sokujitsushukka\ ;
+絶対君主制 < zettaikunshusei\ ;
+株式配当 < kabushikihaitou\ ;
+蛍光物質 < keikoubusshitsu\ ;
+聴覚神経 < choukakushinkei\ ;
+懲戒免職 < choukaimenshoku\ ;
+芸術愛好家 < geijutsuaikouka\ ;
+確定申告 < kakuteishinkoku\ ;
+職業軍人 < shokugyougunjin\ ;
+私生児出産 < shiseijishussan\ ;
+生命維持装置 < seimeiijisouchi\ ;
+株式公開 < kabushikikoukai\ ;
+廃仏毀釈 < haibutsukishaku\ ;
+両院協議会 < ryouinkyougikai\ ;
+小田原提灯 < odawaradjouchin\ ;
+眼底出血 < ganteishukketsu\ ;
+信任投票 < shin''nintouhyou\ ;
+関連質問 < kanrenshitsumon\ ;
+建築業者 < kenchikugyousha\ ;
+哲学史要 < tetsugakushiyou\ ;
+知識産業 < chishikisangyou\ ;
+貨物自動車 < kamotsujidousha\ ;
+片手間仕事 < katatemashigoto\ ;
+神経回路網 < shinkeikairomou\ ;
+浚渫作業 < shunsetsusagyou\ ;
+卸売市場 < oroshiurishijou\ ;
+通信教育 < tsuushinkyouiku\ ;
+北斗七星 < hokutoshichisei\ ;
+正式発表 < seishikihappyou\ ;
+炭素化合物 < tansokagoubutsu\ ;
+暴力革命 < bouryokukakumei\ ;
+気管支喘息 < kikanshizensoku\ ;
+共産中国 < kyousanchuugoku\ ;
+森林鉄道 < shinrintetsudou\ ;
+経済協力 < keizaikyouryoku\ ;
+物的損害 < butsutekisongai\ ;
+不肖私 < fushouwatakushi\ ;
+空中爆撃 < kuuchuubakugeki\ ;
+不動産業者 < fudousangyousha\ ;
+海洋気象台 < kaiyoukishoudai\ ;
+失業率 < shitsugyouritsu\ ;
+年中失言 < nenjuushitsugen\ ;
+抽出物 < chuushutsubutsu\ ;
+正方行列 < seihougyouretsu\ ;
+自動翻訳機 < jidouhon''yakuki\ ;
+老若男女 < rounyakunan''nyo\ ;
+縄文式土器 < joumonshikidoki\ ;
+修了証書 < shuuryoushousho\ ;
+下等植物 < katoushokubutsu\ ;
+輸入課徴金 < yunyuukachoukin\ ;
+顕花植物 < kenkashokubutsu\ ;
+重商主義者 < juushoushugisha\ ;
+地元警察 < jimotokeisatsu\ ;
+中国地方 < chuugokuchihou\ ;
+女友達 < on''natomodachi\ ;
+三校終了 < sankoushuuryou\ ;
+人工血液 < jinkouketsueki\ ;
+有性生殖 < yuuseiseishoku\ ;
+錬金術師 < renkinjutsushi\ ;
+遺産相続税 < isansouzokuzei\ ;
+対日感情 < tainichikanjou\ ;
+毘廬遮那仏 < birushanabutsu\ ;
+猥褻文書 < waisetsubunsho\ ;
+百日咳 < hyakunichizeki\ ;
+仮装行列 < kasougyouretsu\ ;
+正弦曲線 < seigenkyokusen\ ;
+没個性的 < botsukoseiteki\ ;
+独立運動 < dokuritsuundou\ ;
+関税自主権 < kanzeijishuken\ ;
+脱脂粉乳 < dasshifun''nyuu\ ;
+基本周波数 < kihonshuuhasuu\ ;
+原子力船 < genshiryokusen\ ;
+四輪駆動車 < yonrinkudousha\ ;
+三球三振 < sankyuusanshin\ ;
+面白半分 < omoshirohanbun\ ;
+商船大学 < shousendaigaku\ ;
+天地万物 < tenchibanbutsu\ ;
+行列式 < gyouretsushiki\ ;
+耐熱合金 < tainetsugoukin\ ;
+静電気防止 < seidenkiboushi\ ;
+政略結婚 < seiryakukekkon\ ;
+特高警察 < tokkoukeisatsu\ ;
+煙突掃除夫 < entotsusoujifu\ ;
+商慣習法 < shoukanshuuhou\ ;
+昆虫採集 < konchuusaishuu\ ;
+中国拳法 < chuugokukenpou\ ;
+美術監督 < bijutsukantoku\ ;
+取扱人 < toriatsukainin\ ;
+副大統領 < fukudaitouryou\ ;
+休戦記念日 < kyuusenkinenbi\ ;
+焦性硫酸 < shouseiryuusan\ ;
+学校群制度 < gakkougunseido\ ;
+周旋業者 < shuusengyousha\ ;
+南回帰線 < minamikaikisen\ ;
+放射線技師 < houshasengishi\ ;
+胎生動物 < taiseidoubutsu\ ;
+全国中継 < zenkokuchuukei\ ;
+牛歩戦術 < gyuuhosenjutsu\ ;
+突撃隊員 < totsugekitaiin\ ;
+約百万円 < yakuhyakumanen\ ;
+人海戦術 < jinkaisenjutsu\ ;
+出入国 < shutsunyuukoku\ ;
+家庭裁判所 < kateisaibansho\ ;
+天文学的 < tenmongakuteki\ ;
+思案投首 < shian''nagekubi\ ;
+長距離打者 < choukyoridasha\ ;
+裏口営業 < uraguchieigyou\ ;
+伝奇小説 < denkishousetsu\ ;
+中立主義 < chuuritsushugi\ ;
+才槌頭 < saidzuchiatama\ ;
+研究資料 < kenkyuushiryou\ ;
+古生物学 < koseibutsugaku\ ;
+更生施設 < kouseishisetsu\ ;
+片道切符 < katamichikippu\ ;
+日本標準時 < nihonhyoujunji\ ;
+接続助詞 < setsuzokujoshi\ ;
+誘導電動機 < yuudoudendouki\ ;
+逆説的 < gyakusetsuteki\ ;
+英仏海峡 < eifutsukaikyou\ ;
+稔実不良 < nenjitsufuryou\ ;
+建国記念日 < kenkokukinenbi\ ;
+公衆浴場 < koushuuyokujou\ ;
+副食物 < fukushokubutsu\ ;
+端末装置 < tanmatsusouchi\ ;
+文字符号化法 < mojifugoukahou\ ;
+伝統主義者 < dentoushugisha\ ;
+駐車料金 < chuusharyoukin\ ;
+資本取引 < shihontorihiki\ ;
+株式相場 < kabushikisouba\ ;
+登記番号欄 < toukibangouran\ ;
+歩行者優先 < hokoushayuusen\ ;
+無人宇宙船 < mujin''uchuusen\ ;
+免疫反応 < men''ekihan''nou\ ;
+建設会社 < kensetsugaisha\ ;
+本末顛倒 < honmatsutentou\ ;
+初志貫徹 < shoshikantetsu\ ;
+羅萄日辞典 < raponichijiten\ ;
+産業革命 < sangyoukakumei\ ;
+定年退職 < teinentaishoku\ ;
+国際親善 < kokusaishinzen\ ;
+性格診断 < seikakushindan\ ;
+全身衰弱 < zenshinsuijaku\ ;
+問題解決 < mondaikaiketsu\ ;
+温暖化現象 < ondankagenshou\ ;
+哺乳動物 < honyuudoubutsu\ ;
+資本注入 < shihonchuunyuu\ ;
+修業年限 < shuugyounengen\ ;
+婦人参政権 < fujinsanseiken\ ;
+自由民主党 < jiyuuminshutou\ ;
+緑綬褒章 < ryokujuhoushou\ ;
+研究題目 < kenkyuudaimoku\ ;
+病床日誌 < byoushounisshi\ ;
+算術計算 < sanjutsukeisan\ ;
+帰化植物 < kikashokubutsu\ ;
+金融恐慌 < kin''yuukyoukou\ ;
+個体発生論 < kotaihasseiron\ ;
+大威徳妙王 < daiitokumyouou\ ;
+特別措置 < tokubetsusochi\ ;
+弛張振動 < shichoushindou\ ;
+戦戦兢兢 < sensenkyoukyou\ ;
+大韓航空機 < taikankoukuuki\ ;
+観光施設 < kankoushisetsu\ ;
+善男善女 < zen''nanzen''nyo\ ;
+信用販売 < shin''youhanbai\ ;
+末梢神経 < masshoushinkei\ ;
+骨髄移植 < kotsuzuiishoku\ ;
+道徳教育 < doutokukyouiku\ ;
+金殿玉楼 < kindengyokurou\ ;
+不特定多数 < futokuteitasuu\ ;
+瓢箪鯰 < hyoutan''namazu\ ;
+東半球 < higashihankyuu\ ;
+動物質 < doubutsushitsu\ ;
+点滴注射 < tentekichuusha\ ;
+工学修士 < kougakushuushi\ ;
+門外不出 < mongaifushutsu\ ;
+主情主義者 < shujoushugisha\ ;
+法定代理人 < houteidairinin\ ;
+通信装置 < tsuushinsouchi\ ;
+作戦計画 < sakusenkeikaku\ ;
+公開図書館 < koukaitoshokan\ ;
+場外取引 < jougaitorihiki\ ;
+信託銀行 < shintakuginkou\ ;
+一時間以内 < ichijikan''inai\ ;
+境界調整 < kyoukaichousei\ ;
+主力艦隊 < shuryokukantai\ ;
+数理言語学 < suurigengogaku\ ;
+職場環境 < shokubakankyou\ ;
+越中褌 < etchuufundoshi\ ;
+割引価格 < waribikikakaku\ ;
+整形手術 < seikeishujutsu\ ;
+酸性食品 < sanseishokuhin\ ;
+原子力学 < genshirikigaku\ ;
+水中翼船 < suichuuyokusen\ ;
+遺産相続人 < isansouzokunin\ ;
+発達段階 < hattatsudankai\ ;
+方向探知器 < houkoutanchiki\ ;
+諸説紛紛 < shosetsufunpun\ ;
+乳酸飲料 < nyuusan''inryou\ ;
+個々別別 < kokobetsubetsu\ ;
+口不調法 < kuchibuchouhou\ ;
+超自然的 < choushizenteki\ ;
+熱可塑樹脂 < netsukasojushi\ ;
+国防長官 < kokubouchoukan\ ;
+正統信教 < seitoushinkyou\ ;
+強化合宿 < kyoukagasshuku\ ;
+朝鮮人参 < chousen''ninjin\ ;
+印半纏 < shirushibanten\ ;
+束縛変項 < sokubakuhenkou\ ;
+神経組織 < shinkeisoshiki\ ;
+超越関数 < chouetsukansuu\ ;
+効率向上 < kouritsukoujou\ ;
+無機化合物 < mukikagoubutsu\ ;
+仕方話 < shikatabanashi\ ;
+大脳皮質 < dainouhishitsu\ ;
+改札係 < kaisatsugakari\ ;
+生体力学 < seitairikigaku\ ;
+重要文化財 < juuyoubunkazai\ ;
+山下公園 < yamashitakouen\ ;
+居間兼食堂 < imakenshokudou\ ;
+口述試験 < koujutsushiken\ ;
+一日片時 < ichinichihenji\ ;
+社会生活 < shakaiseikatsu\ ;
+出版目録 < shupanmokuroku\ ;
+別途支出 < bettoshishutsu\ ;
+申告納税 < shinkokunouzei\ ;
+剃刀触 < kamisorikabure\ ;
+売渡証 < uriwatashishou\ ;
+即決裁判 < sokketsusaiban\ ;
+異方導電膜 < ihoudoudenmaku\ ;
+独立自尊 < dokuritsujison\ ;
+婚約指輪 < kon''yakuyubiwa\ ;
+血液凝固 < ketsuekigyouko\ ;
+出処進退 < shusshoshintai\ ;
+弓矢八幡 < yumiyahachiman\ ;
+警察手帳 < keisatsutechou\ ;
+職業婦人 < shokugyoufujin\ ;
+指示代名詞 < shijidaimeishi\ ;
+回復不可能 < kaifukufukanou\ ;
+至福千年 < shifukusen''nen\ ;
+天地開闢 < tenchikaibyaku\ ;
+冷凍食品 < reitoushokuhin\ ;
+補足説明 < hosokusetsumei\ ;
+信用状態 < shin''youjoutai\ ;
+絶対湿度 < zettaishitsudo\ ;
+明明白白 < meimeihakuhaku\ ;
+拝金主義者 < haikinshugisha\ ;
+軍備縮小 < gunbishukushou\ ;
+南無阿弥陀仏 < namuamidabutsu\ ;
+暴力団員 < bouryokudan''in\ ;
+大学教育 < daigakukyouiku\ ;
+第三人称 < daisan''ninshou\ ;
+人道主義者 < jindoushugisha\ ;
+永世中立 < eiseichuuritsu\ ;
+研究領域 < kenkyuuryouiki\ ;
+教育勅語 < kyouikuchokugo\ ;
+告別式 < kokubetsushiki\ ;
+精神障害 < seishinshougai\ ;
+天空海濶 < tenkuukaikatsu\ ;
+食餌療法 < shokujiryouhou\ ;
+中央分離帯 < chuuoubunritai\ ;
+温帯低気圧 < ontaiteikiatsu\ ;
+超国家主義 < choukokkashugi\ ;
+作者不知 < sakushashirazu\ ;
+生活水準 < seikatsusuijun\ ;
+卵生動物 < ranseidoubutsu\ ;
+筋肉労働 < kin''nikuroudou\ ;
+南支那海 < minamishinakai\ ;
+学術用語 < gakujutsuyougo\ ;
+自然食品 < shizenshokuhin\ ;
+商業組合 < shougyoukumiai\ ;
+語彙機能文法 < goikinoubunpou\ ;
+職権乱用 < shokkenran''you\ ;
+伴食大臣 < banshokudaijin\ ;
+夾雑物 < kyouzatsubutsu\ ;
+利害関係者 < rigaikankeisha\ ;
+衆議員議長 < shuugiingichou\ ;
+岡目八目 < okamehachimoku\ ;
+導波管定数 < douhakanteisuu\ ;
+斬新奇抜 < zanshinkibatsu\ ;
+直情径行 < chokujoukeikou\ ;
+私立学校 < shiritsugakkou\ ;
+中日辞典 < chuunichijiten\ ;
+丁字形定規 < teijigatajougi\ ;
+簡易裁判所 < kan''isaibansho\ ;
+分類目録 < bunruimokuroku\ ;
+内分泌腺 < naibunpitsusen\ ;
+反動主義者 < handoushugisha\ ;
+活路開拓 < katsurokaitaku\ ;
+平板測量 < heibansokuryou\ ;
+源泉徴収 < gensenchoushuu\ ;
+通信衛星 < tsuushin''eisei\ ;
+清算取引 < seisantorihiki\ ;
+特殊学級 < tokushugakkyuu\ ;
+信用調査 < shin''youchousa\ ;
+先物売買 < sakimonobaibai\ ;
+七難八苦 < shichinanhakku\ ;
+角膜移植 < kakumakuishoku\ ;
+音楽図書館 < ongakutoshokan\ ;
+救急病院 < kyuukyuubyouin\ ;
+接触感染 < sesshokukansen\ ;
+税金申告 < zeikinshinkoku\ ;
+絨毯爆撃 < juutanbakugeki\ ;
+七転八起 < shichitenhakki\ ;
+乗用自動車 < jouyoujidousha\ ;
+水銀中毒 < suiginchuudoku\ ;
+露出不足 < roshutsubusoku\ ;
+平上去入 < hyoujoukyonyuu\ ;
+国立公園 < kokuritsukouen\ ;
+公立学校 < kouritsugakkou\ ;
+通信圏外 < tsuushinkengai\ ;
+約束手形 < yakusokutegata\ ;
+召集令状 < shoushuureijou\ ;
+圧倒的多数 < attoutekitasuu\ ;
+新入社員 < shin''nyuushain\ ;
+日南海岸 < nichinankaigan\ ;
+非政府組織 < hiseifusoshiki\ ;
+汎整数式 < hanseisuushiki\ ;
+自由労働者 < jiyuuroudousha\ ;
+古物商人 < kobutsushounin\ ;
+緑白色 < ryokuhakushoku\ ;
+膝関節 < shitsukansetsu\ ;
+武力干渉 < buryokukanshou\ ;
+公衆道徳 < koushuudoutoku\ ;
+怪奇小説 < kaikishousetsu\ ;
+博愛主義者 < hakuaishugisha\ ;
+秘密投票 < himitsutouhyou\ ;
+圧力容器 < atsuryokuyouki\ ;
+求婚広告 < kyuukonkoukoku\ ;
+心因反応 < shin''inhan''nou\ ;
+定期乗車券 < teikijoushaken\ ;
+電気洗濯機 < denkisentakuki\ ;
+麦藁帽子 < mugiwaraboushi\ ;
+納税申告 < nouzeishinkoku\ ;
+反対称的 < hantaishouteki\ ;
+終戦記念日 < shuusenkinenbi\ ;
+住友銀行 < sumitomoginkou\ ;
+就業人口 < shuugyoujinkou\ ;
+全勝優勝 < zenshouyuushou\ ;
+建設大臣 < kensetsudaijin\ ;
+非良心的 < hiryoushinteki\ ;
+絶対必要 < zettaihitsuyou\ ;
+社会主義者 < shakaishugisha\ ;
+蛸足配線 < takoashihaisen\ ;
+工業大学 < kougyoudaigaku\ ;
+金壱万円 < kin''ichiman''en\ ;
+旅客列車 < ryokyakuressha\ ;
+小型自動車 < kogatajidousha\ ;
+立会演説 < tachiaienzetsu\ ;
+奨学資金 < shougakushikin\ ;
+民事訴訟法 < minjisoshouhou\ ;
+現金収入 < genkinshuunyuu\ ;
+第二量子化 < dainiryoushika\ ;
+二原子分子 < nigenshibunshi\ ;
+学術会議 < gakujutsukaigi\ ;
+法律問題 < houritsumondai\ ;
+直通電話 < chokutsuudenwa\ ;
+台所道具 < daidokorodougu\ ;
+電源供給 < dengenkyoukyuu\ ;
+常任指揮者 < jouninshikisha\ ;
+水陸両用 < suirikuryouyou\ ;
+通信手段 < tsuushinshudan\ ;
+下請会社 < shitaukegaisha\ ;
+第一人称 < daiichininshou\ ;
+学歴社会 < gakurekishakai\ ;
+農事試験場 < noujishikenjou\ ;
+情報化社会 < jouhoukashakai\ ;
+演奏曲目 < ensoukyokumoku\ ;
+思想警察 < shisoukeisatsu\ ;
+公益質屋 < kouekishichiya\ ;
+接続口 < setsuzokuguchi\ ;
+偕老同穴 < kairoudouketsu\ ;
+主観主義者 < shukanshugisha\ ;
+無教会主義 < mukyoukaishugi\ ;
+米価審議会 < beikashingikai\ ;
+健康食品 < kenkoushokuhin\ ;
+抽象名詞 < chuushoumeishi\ ;
+小乗仏教 < shoujoubukkyou\ ;
+時間外労働 < jikangairoudou\ ;
+合目的性 < goumokutekisei\ ;
+電力会社 < denryokugaisha\ ;
+百科全書派 < hyakkazenshoha\ ;
+二百二十日 < nihyakuhatsuka\ ;
+海洋開発 < kaiyoukaihatsu\ ;
+細胞分裂 < saiboubunretsu\ ;
+急行料金 < kyuukouryoukin\ ;
+丁丁発止 < chouchouhasshi\ ;
+教職課程 < kyoushokukatei\ ;
+二重価格制 < nijuukakakusei\ ;
+刑事訴訟法 < keijisoshouhou\ ;
+凝着力 < gyouchakuryoku\ ;
+懐勘定 < futokorokanjou\ ;
+出版業者 < shuppangyousha\ ;
+就職運動 < shuushokuundou\ ;
+略奪行為 < ryakudatsukoui\ ;
+理非曲直 < rihikyokuchoku\ ;
+提出物 < teishutsubutsu\ ;
+別冊付録 < bessatsufuroku\ ;
+三権分立 < sankenbunritsu\ ;
+出札口 < shussatsuguchi\ ;
+販売代理店 < hanbaidairiten\ ;
+共同研究 < kyoudoukenkyuu\ ;
+新刊紹介 < shinkanshoukai\ ;
+棟割長屋 < munewarinagaya\ ;
+修好条約 < shuukoujouyaku\ ;
+冠状動脈 < kanjoudoumyaku\ ;
+空空漠漠 < kuukuubakubaku\ ;
+悪性貧血 < akuseihinketsu\ ;
+休戦協定 < kyuusenkyoutei\ ;
+神経衰弱 < shinkeisuijaku\ ;
+回折格子 < kaisetsukoushi\ ;
+先決問題 < senketsumondai\ ;
+東亜諸民族 < touashominzoku\ ;
+就業日数 < shuugyounissuu\ ;
+実験動物 < jikkendoubutsu\ ;
+単葉飛行機 < tan''youhikouki\ ;
+忠君愛国 < chuukun''aikoku\ ;
+求人広告 < kyuujinkoukoku\ ;
+独立独歩 < dokuritsudoppo\ ;
+有害食品 < yuugaishokuhin\ ;
+国会議事録 < kokkaigijiroku\ ;
+麻薬中毒 < mayakuchuudoku\ ;
+金属工業 < kinzokukougyou\ ;
+卸売物価 < oroshiuribukka\ ;
+共同出資 < kyoudoushusshi\ ;
+狭軌鉄道 < kyoukitetsudou\ ;
+商業手形 < shougyoutegata\ ;
+郵便配達 < yuubinhaitatsu\ ;
+港湾当局 < kouwantoukyoku\ ;
+商業銀行 < shougyouginkou\ ;
+省略記号 < shouryakukigou\ ;
+天日瓦 < tenjitsugawara\ ;
+中間報告 < chuukanhoukoku\ ;
+夢物語 < yumemonogatari\ ;
+中心思想 < chuushinshisou\ ;
+五月人形 < gogatsuningyou\ ;
+伝承文学 < denshoubungaku\ ;
+政府保証債 < seifuhoshousai\ ;
+軟体動物 < nantaidoubutsu\ ;
+一昔前 < hitomukashimae\ ;
+強制収容 < kyouseishuuyou\ ;
+便乗主義者 < binjoushugisha\ ;
+一陽来腹 < ichiyouraifuku\ ;
+漁業協定 < gyogyoukyoutei\ ;
+水生動物 < suiseidoubutsu\ ;
+楔形文字 < kusabigatamoji\ ;
+百卒長 < hyakusotsuchou\ ;
+信用組合 < shin''youkumiai\ ;
+研究報告 < kenkyuuhoukoku\ ;
+逆行列 < gyakugyouretsu\ ;
+二大政党制 < nidaiseitousei\ ;
+水天彷彿 < suitenhoufutsu\ ;
+住宅産業 < juutakusangyou\ ;
+泡沫会社 < houmatsugaisha\ ;
+無利息公債 < murisokukousai\ ;
+談論風発 < danronfuuhatsu\ ;
+足素性原理 < ashisujougenri\ ;
+資本主義者 < shihonshugisha\ ;
+先発投手 < senpatsutoushu\ ;
+推理小説 < suirishousetsu\ ;
+紳士協定 < shinshikyoutei\ ;
+大名屋敷 < daimyouyashiki\ ;
+特異体質 < tokuitaishitsu\ ;
+中間搾取 < chuukansakushu\ ;
+文化地理学 < bunkachirigaku\ ;
+協調作業 < kyouchousagyou\ ;
+指圧療法 < shiatsuryouhou\ ;
+公認候補者 < kouninkouhosha\ ;
+工業技術 < kougyougijutsu\ ;
+総合芸術 < sougougeijutsu\ ;
+旭日章 < kyokujitsushou\ ;
+世界選手権 < sekaisenshuken\ ;
+中産階級 < chuusankaikyuu\ ;
+南十字星 < minamijuujisei\ ;
+新石器時代 < shinsekkijidai\ ;
+心霊手術 < shinreitejutsu\ ;
+成長産業 < seichousangyou\ ;
+受験参考書 < jukensankousho\ ;
+国際収支 < kokusaishuushi\ ;
+静止画放送 < seishigahousou\ ;
+上陸作戦 < jourikusakusen\ ;
+動力資源 < douryokushigen\ ;
+必要条件 < hitsuyoujouken\ ;
+少年感化院 < shounenkankain\ ;
+中流意識 < chuuryuuishiki\ ;
+長距離輸送 < choukyoriyusou\ ;
+再帰代名詞 < saikidaimeishi\ ;
+出漁区域 < shutsugyokuiki\ ;
+財形貯蓄 < zaikeichochiku\ ;
+職人気質 < shokuninkatagi\ ;
+控訴裁判所 < kousohaibansho\ ;
+単位行列 < tan''igyouretsu\ ;
+文化功労者 < bunkakourousha\ ;
+国連憲章 < kokurenkenshou\ ;
+水先案内 < mizusakian''nai\ ;
+真空掃除機 < shinkuusoujiki\ ;
+収容設備 < shuuyousetsubi\ ;
+深海漁業 < shinkaigyogyou\ ;
+人形浄瑠璃 < ningyoujoururi\ ;
+直往邁進 < chokuoumaishin\ ;
+天体力学 < tentairikigaku\ ;
+昔話 < mukashibanashi\ ;
+政治評論家 < seijihyouronka\ ;
+伝承叙事詩 < denshoujojishi\ ;
+有視界飛行 < yuushikaihikou\ ;
+幼友達 < osanatomodachi\ ;
+真空電球 < shinkuudenkyuu\ ;
+降三世妙王 < gouzanzemyouou\ ;
+等高線地図 < toukousenchizu\ ;
+上層建築 < jousoukenchiku\ ;
+役職手当 < yakushokuteate\ ;
+高圧電流 < kouatsudenryuu\ ;
+尻軽女 < shirigaruon''na\ ;
+亥年 < inoshishidoshi\ ;
+白鉢巻 < shirohachimaki\ ;
+交通道徳 < koutsuudoutoku\ ;
+水準測量 < suijunsokuryou\ ;
+製造年月日 < seizounengappi\ ;
+弁証法的 < benshouhouteki\ ;
+松茸御飯 < matsutakegohan\ ;
+関税障壁 < kanzeishouheki\ ;
+統括部長 < toukatsubuchou\ ;
+地方交付税 < chihoukoufuzei\ ;
+薄紫色 < usumurasakiiro\ ;
+損失補填 < sonshitsuhoten\ ;
+日本語教本 < nihongokyouhon\ ;
+出塁率 < shutsuruiritsu\ ;
+事事物物 < jijibutsubutsu\ ;
+連続写真 < renzokushashin\ ;
+俘虜収容所 < furyoshuuyoujo\ ;
+空気圧縮機 < kuukiasshukuki\ ;
+四百余州 < shihyakuyoshuu\ ;
+国連記念日 < kokurenkinenbi\ ;
+心筋梗塞 < shinkinkousoku\ ;
+宗教裁判 < shuukyousaiban\ ;
+電信柱 < denshinbashira\ ;
+写真石版 < shashinsekiban\ ;
+隠花植物 < inkashokubutsu\ ;
+無記名投票 < mukimeitouhyou\ ;
+微生物学 < biseibutsugaku\ ;
+戦略空軍 < senryakukuugun\ ;
+恭賀新年 < kyougashin''nen\ ;
+国際協定 < kokusaikyoutei\ ;
+自然主義者 < shizenshugisha\ ;
+色即是空 < shikisokuzekuu\ ;
+頭寒足熱 < zukansokunetsu\ ;
+区検察庁 < kukensatsuchou\ ;
+核防衛力 < kakuboueiryoku\ ;
+完全燃焼 < kanzen''nenshou\ ;
+重量感覚 < juuryoukankaku\ ;
+雌雄鑑別 < shiyuukanbetsu\ ;
+管区気象台 < kankukishoudai\ ;
+原生動物 < genseidoubutsu\ ;
+目的意識 < mokutekiishiki\ ;
+法定準備金 < houteijunbikin\ ;
+海生動物 < kaiseidoubutsu\ ;
+攻撃精神 < kougekiseishin\ ;
+作成技術 < sakuseigijutsu\ ;
+金銭信託 < kinsenshintaku\ ;
+吸収合併 < kyuushuugappei\ ;
+換骨奪胎 < kankotsudattai\ ;
+硬質陶器 < koushitsutouki\ ;
+寝台料金 < shindairyoukin\ ;
+購入注文 < kounyuuchuumon\ ;
+焦土戦術 < shoudosenjutsu\ ;
+有職故実 < yuusokukojitsu\ ;
+話話 < hanashibanashi\ ;
+無償信託 < mushoushintaku\ ;
+消費生活 < shouhiseikatsu\ ;
+室内遊戯 < shitsunaiyuugi\ ;
+宗教団体 < shuukyoudantai\ ;
+進行状況 < shinkoujoukyou\ ;
+高等動物 < koutoudoubutsu\ ;
+一膳飯屋 < ichizenmeshiya\ ;
+時代小説 < jidaishousetsu\ ;
+内証話 < naishoubanashi\ ;
+海洋性気候 < kaiyouseikikou\ ;
+曲線座標 < kyokusenzahyou\ ;
+当該人物 < tougaijinbutsu\ ;
+外貨準備高 < gaikajunbidaka\ ;
+要求送信 < youkyuusoushin\ ;
+百人一首 < hyakunin''isshu\ ;
+集団検診 < shuudankenshin\ ;
+旅行代理店 < ryokoudairiten\ ;
+安寧秩序 < an''neichitsujo\ ;
+下唇 < shitakuchibiru\ ;
+極楽鳥花 < gokurakuchouka\ ;
+中越紛争 < chuuetsufunsou\ ;
+一括購入 < ikkatsukounyuu\ ;
+民族自決 < minzokujiketsu\ ;
+倶梨伽羅紋紋 < kurikaramonmon\ ;
+正面攻撃 < shoumenkougeki\ ;
+教育産業 < kyouikusangyou\ ;
+空調設備 < kuuchousetsubi\ ;
+単独内閣 < tandokunaikaku\ ;
+緑玉石 < ryokugyokuseki\ ;
+教育実習 < kyouikujisshuu\ ;
+就業規則 < shuugyoukisoku\ ;
+教養番組 < kyouyoubangumi\ ;
+凍結資産 < touketsushisan\ ;
+集団農場 < shuudan''noujou\ ;
+昔昔 < mukashimukashi\ ;
+周辺諸国 < shuuhenshokoku\ ;
+国籍条項 < kokusekijoukou\ ;
+現物給与 < genbutsukyuuyo\ ;
+予選通過者 < yosentsuukasha\ ;
+豪雪地帯 < gousetsuchitai\ ;
+海千山千 < umisen''yamasen\ ;
+革新政党 < kakushinseitou\ ;
+少数民族 < shousuuminzoku\ ;
+労働協約 < roudoukyouyaku\ ;
+電撃作戦 < dengekisakusen\ ;
+膝蓋骨 < shitsugaikotsu\ ;
+女性解放論 < joseikaihouron\ ;
+脊髄神経 < sekizuishinkei\ ;
+美術大学 < bijutsudaigaku\ ;
+遺伝子治療 < idenshichiryou\ ;
+選択項目 < sentakukoumoku\ ;
+間接選挙 < kansetsusenkyo\ ;
+貝殻追放 < kaigaratsuihou\ ;
+群発地震 < gunpatsujishin\ ;
+絶対主義者 < zettaishugisha\ ;
+緊褌一番 < kinkon''ichiban\ ;
+共同炊事場 < kyoudousuijiba\ ;
+独身貴族 < dokushinkizoku\ ;
+福祉事務所 < fukushijimusho\ ;
+科学知識 < kagakuchishiki\ ;
+石部金吉 < ishibekinkichi\ ;
+花鳥風月 < kachoufuugetsu\ ;
+提出期限 < teishutsukigen\ ;
+三角系異常 < sankakukeiijou\ ;
+天長地久 < tenchouchikyuu\ ;
+百万長者 < hyakumanchouja\ ;
+対症療法 < taishouryouhou\ ;
+水産試験所 < suisanshikenjo\ ;
+中枢神経 < chuusuushinkei\ ;
+商工業者 < shoukougyousha\ ;
+開票速報 < kaihyousokuhou\ ;
+性的衝動 < seitekishoudou\ ;
+軍事裁判所 < gunjisaibansho\ ;
+特殊撮影 < tokushusatsuei\ ;
+輸出手形 < yushutsutegata\ ;
+史料館学 < shiryoukangaku\ ;
+空中楼閣 < kuuchuuroukaku\ ;
+隠退蔵物資 < intaizoubusshi\ ;
+少年文学 < shounenbungaku\ ;
+調整攻撃 < chouseikougeki\ ;
+精神年齢 < seishin''nenrei\ ;
+居中調停 < kyochuuchoutei\ ;
+税別価格 < zeibetsukakaku\ ;
+軍人生活 < gunjinseikatsu\ ;
+皇宮警察 < kouguukeisatsu\ ;
+粒々辛苦 < ryuuryuushinku\ ;
+東京大学 < toukyoudaigaku\ ;
+参考図書館 < sankoutoshokan\ ;
+興味津津 < kyoumishinshin\ ;
+無線周波数 < musenshuuhasuu\ ;
+千客万来 < senkyakubanrai\ ;
+選抜試験 < senbatsushiken\ ;
+航路標識 < kourohyoushiki\ ;
+緊急発進 < kinkyuuhasshin\ ;
+空中写真 < kuuchuushashin\ ;
+営業活動 < eigyoukatsudou\ ;
+救援活動 < kyuuenkatsudou\ ;
+天然硝子 < ten''nenshoushi\ ;
+信託資金 < shintakushikin\ ;
+市民生活 < shiminseikatsu\ ;
+重農主義者 < juunoushugisha\ ;
+乗合自動車 < noriaijidousha\ ;
+絶対権力 < zettaikenryoku\ ;
+周章狼狽 < shuushouroubai\ ;
+民族学者 < minzokugakusha\ ;
+膠着状態 < kouchakujoutai\ ;
+細胞遺伝学 < saibouidengaku\ ;
+面接試験 < mensetsushiken\ ;
+政策協定 < seisakukyoutei\ ;
+販売戦略 < hanbaisenryaku\ ;
+公設市場 < kousetsuichiba\ ;
+人物経済 < jinbutsukeizai\ ;
+心的状態 < shintekijoutai\ ;
+丘陵地帯 < kyuuryouchitai\ ;
+超音波洗浄 < chouonpasenjou\ ;
+刑事被告人 < keijihikokunin\ ;
+仮出獄 < karishutsugoku\ ;
+特別職 < tokubetsushoku\ ;
+群伝搬時間 < gundenpanjikan\ ;
+生涯教育 < shougaikyouiku\ ;
+旧約全書 < kyuuyakuzensho\ ;
+大根役者 < daikon''yakusha\ ;
+万年新造 < man''nenshinzou\ ;
+健康保険法 < kenkouhokenhou\ ;
+常任理事国 < jouninrijikoku\ ;
+座骨神経 < zakotsushinkei\ ;
+非金属元素 < hikinzokugenso\ ;
+長老教会 < chouroukyoukai\ ;
+陸上自衛隊 < rikujoujieitai\ ;
+貯蓄債券 < chochikusaiken\ ;
+武力介入 < buryokukainyuu\ ;
+保険勧誘員 < hokenkan''yuuin\ ;
+精密科学 < seimitsukagaku\ ;
+私鉄総連 < shitetsusouren\ ;
+伝送終了 < densoushuuryou\ ;
+窒素固定法 < chissokoteihou\ ;
+薫蒸消毒 < kunjoushoudoku\ ;
+法律相談 < houritsusoudan\ ;
+地域開発 < chiikikaihatsu\ ;
+国内産業 < kokunaisangyou\ ;
+一打逆転 < ichidagyakuten\ ;
+水生生物 < suiseiseibutsu\ ;
+有線通信 < yuusentsuushin\ ;
+相対性原理 < soutaiseigenri\ ;
+美術愛好家 < bijutsuaikouka\ ;
+起承転結 < kishoutenketsu\ ;
+物質主義 < busshitsushugi\ ;
+信託会社 < shintakugaisha\ ;
+中石器時代 < chuusekkijidai\ ;
+主知主義者 < shuchishugisha\ ;
+蚕糸試験所 < sanshishikenjo\ ;
+中間商人 < chuukanshounin\ ;
+静電容量 < seiden''youryou\ ;
+中流社会 < chuuryuushakai\ ;
+私立探偵 < shiritsutantei\ ;
+命辛辛 < inochigaragara\ ;
+国民投票 < kokumintouhyou\ ;
+有罪判決 < yuuzaihanketsu\ ;
+強化食品 < kyoukashokuhin\ ;
+伸縮自在 < shinshukujizai\ ;
+陸軍大学 < rikugundaigaku\ ;
+通信速度 < tsuushinsokudo\ ;
+黒金剛石 < kurokongouseki\ ;
+立体幾何学 < rittaikikagaku\ ;
+中国人街 < chuugokujingai\ ;
+学芸大学 < gakugeidaigaku\ ;
+大河小説 < taigashousetsu\ ;
+鉄道会社 < tetsudougaisha\ ;
+音楽形式 < ongakukeishiki\ ;
+性格分析 < seikakubunseki\ ;
+転入届 < ten''nyuutodoke\ ;
+不動産鑑定 < fudousankantei\ ;
+受付係 < uketsukegakari\ ;
+就職率 < shuushokuritsu\ ;
+現金書留 < genkinkakitome\ ;
+休戦条約 < kyuusenjouyaku\ ;
+二足動物 < nisokudoubutsu\ ;
+心理学的 < shinrigakuteki\ ;
+侃々諤諤 < kankangakugaku\ ;
+直線運動 < chokusen''undou\ ;
+悪徳新聞 < akutokushinbun\ ;
+未決拘留 < miketsukouryuu\ ;
+定量分析 < teiryoubunseki\ ;
+給料袋 < kyuuryoubukuro\ ;
+紙屑同然 < kamikuzudouzen\ ;
+温室栽培 < onshitsusaibai\ ;
+針小棒大 < shinshouboudai\ ;
+植物学 < shokubutsugaku\ ;
+太刀二腰 < tachifutakoshi\ ;
+認識不足 < ninshikibusoku\ ;
+団体協約 < dantaikyouyaku\ ;
+信頼回復 < shinraikaifuku\ ;
+修学旅行 < shuugakuryokou\ ;
+長距離飛行 < choukyorihikou\ ;
+第二次性徴 < dainijiseichou\ ;
+電源開発 < dengenkaihatsu\ ;
+模式標本 < moshikihyouhon\ ;
+追跡調査 < tsuisekichousa\ ;
+割引手形 < waribikitegata\ ;
+句構造文法 < kukouzoubunpou\ ;
+直流回路 < chokuryuukairo\ ;
+興行成績 < kougyouseiseki\ ;
+北洋漁業 < hokuyougyogyou\ ;
+国文学史 < kokubungakushi\ ;
+永久脱毛 < eikyuudatsumou\ ;
+排出基準 < haishutsukijun\ ;
+組職改革 < soshokukaikaku\ ;
+過失致死 < kashitsuchishi\ ;
+交通信号 < koutsuushingou\ ;
+動物実験 < doubutsujikken\ ;
+水上警察 < suijoukeisatsu\ ;
+労作教育 < rousakukyouiku\ ;
+核廃棄物 < kakuhaikibutsu\ ;
+鎮魂曲歌 < chinkonkyokuka\ ;
+非鉄金属 < hitetsukinzoku\ ;
+士官候補生 < shikankouhosei\ ;
+巡回図書館 < junkaitoshokan\ ;
+三百代言 < sanbyakudaigen\ ;
+徴兵忌避者 < chouheikihisha\ ;
+出訴期限法 < shussokigenhou\ ;
+中国伝来 < chuugokudenrai\ ;
+筋無力症 < kinmuryokushou\ ;
+流通資本 < ryuutsuushihon\ ;
+空即是色 < kuusokuzeshiki\ ;
+教育改革 < kyouikukaikaku\ ;
+切開手術 < sekkaishujutsu\ ;
+大和魂 < yamatodamashii\ ;
+下台所 < shimodaidokoro\ ;
+救護活動 < kyuugokatsudou\ ;
+軍用輸送機 < gun''youyusouki\ ;
+宣伝活動 < sendenkatsudou\ ;
+財産目録 < zaisanmokuroku\ ;
+言語地理学 < gengochirigaku\ ;
+正常終了 < seijoushuuryou\ ;
+前方後円墳 < zenpoukouenfun\ ;
+虫様突起炎 < chuuyoutokkien\ ;
+亡命生活 < boumeiseikatsu\ ;
+優越複合 < yuuetsufukugou\ ;
+純日本式 < jun''nihonshiki\ ;
+有形文化財 < yuukeibunkazai\ ;
+旧石器時代 < kyuusekkijidai\ ;
+手形割引 < tegatawaribiki\ ;
+動物崇拝 < doubutsusuuhai\ ;
+自由民権論 < jiyuuminkenron\ ;
+共同住宅 < kyoudoujuutaku\ ;
+有袋動物 < yuutaidoubutsu\ ;
+三十二分音符 < sanjuunibuonpu\ ;
+破産裁判所 < hasansaibansho\ ;
+人身保護法 < jinshinhogohou\ ;
+袋小路文 < fukurokoujibun\ ;
+放射性元素 < houshaseigenso\ ;
+白砂青松 < hakushaseishou\ ;
+花嫁御寮 < hanayomegoryou\ ;
+新陳代謝 < shinchintaisha\ ;
+一六銀行 < ichirokuginkou\ ;
+就職斡旋 < shuushokuassen\ ;
+鞭毛虫症 < benmouchuushou\ ;
+絶体絶命 < zettaizetsumei\ ;
+精神分析 < seishinbunseki\ ;
+系列会社 < keiretsugaisha\ ;
+分子間力 < bunshikanryoku\ ;
+企業戦略 < kigyousenryaku\ ;
+国民所得 < kokuminshotoku\ ;
+輸出制限 < yushutsuseigen\ ;
+特定銘柄 < tokuteimeigara\ ;
+財務体質 < zaimutaishitsu\ ;
+警察学校 < keisatsugakkou\ ;
+不法侵入 < fuhoushin''nyuu\ ;
+就職口 < shuushokuguchi\ ;
+生活設計 < seikatsusekkei\ ;
+捕虜収容所 < horyoshuuyoujo\ ;
+軽薄短小 < keihakutanshou\ ;
+算術平均 < sanjutsuheikin\ ;
+即席料理 < sokusekiryouri\ ;
+物理療法 < butsuriryouhou\ ;
+生計費指数 < seikeihishisuu\ ;
+青酸中毒 < seisanchuudoku\ ;
+宗教法人 < shuukyouhoujin\ ;
+写真植字 < shashinshokuji\ ;
+緊縮財政 < kinshukuzaisei\ ;
+単性生殖 < tanseiseishoku\ ;
+国会図書館 < kokkaitoshokan\ ;
+高等生物 < koutouseibutsu\ ;
+高等弁務官 < koutoubenmukan\ ;
+時間順序積 < jikanjunjoseki\ ;
+保証牛乳 < hoshougyuunyuu\ ;
+筋肉質 < kin''nikushitsu\ ;
+力仕事 < chikarashigoto\ ;
+受胎調節 < jutaichousetsu\ ;
+地球温暖化 < chikyuuondanka\ ;
+透析療法 < tousekiryouhou\ ;
+非常勤講師 < hijoukinkoushi\ ;
+嫡出子 < chakushutsushi\ ;
+感覚神経 < kankakushinkei\ ;
+自動車学校 < jidoushagakkou\ ;
+税金避難地 < zeikinhinanchi\ ;
+人道的援助 < jindoutekienjo\ ;
+専門知識 < senmonchishiki\ ;
+軍拡競争 < gunkakukyousou\ ;
+片袖机 < katasodedzukue\ ;
+登場人物 < toujoujinbutsu\ ;
+消費者運動 < shouhishaundou\ ;
+非現実的 < higenjitsuteki\ ;
+逆性石鹸 < gyakuseisekken\ ;
+労働基準法 < roudoukijunhou\ ;
+幽門狭窄 < yuumonkyousaku\ ;
+連邦当局 < renpoutoukyoku\ ;
+直射日光 < chokushanikkou\ ;
+先任将校 < sen''ninshoukou\ ;
+謹厳実直 < kingenjitchoku\ ;
+漢字制限論 < kanjiseigenron\ ;
+店頭取引 < tentoutorihiki\ ;
+卒業式 < sotsugyoushiki\ ;
+発売禁止 < hatsubaikinshi\ ;
+品質管理 < hinshitsukanri\ ;
+編入試験 < hen''nyuushiken\ ;
+伝達関数 < dentatsukansuu\ ;
+尽忠報国 < jinchuuhoukoku\ ;
+労使協調 < roushikyouchou\ ;
+周波数偏移 < shuuhasuuhen''i\ ;
+百色眼鏡 < hyakuiromegane\ ;
+中性子束 < chuuseishisoku\ ;
+無制限貿易 < museigenboueki\ ;
+緊急対策 < kinkyuutaisaku\ ;
+印刷技術 < insatsugijutsu\ ;
+次元正則化 < jigenseisokuka\ ;
+心的表示 < shintekihyouji\ ;
+光通信 < hikaritsuushin\ ;
+名所旧跡 < meishokyuuseki\ ;
+投資信託 < toushishintaku\ ;
+人名用漢字 < jinmeiyoukanji\ ;
+新韓国党 < shinkankokutou\ ;
+国際条約 < kokusaijouyaku\ ;
+七堂伽藍 < shichidougaran\ ;
+親族関係 < shinzokukankei\ ;
+征夷大将軍 < seiitaishougun\ ;
+傘形碍子 < kasagatagaishi\ ;
+産業予備軍 < sangyouyobigun\ ;
+悪漢小説 < akkanshousetsu\ ;
+利子平衡税 < rishiheikouzei\ ;
+無任所大臣 < muninshodaijin\ ;
+公敵一号 < koutekiichigou\ ;
+水質汚濁 < suishitsuodaku\ ;
+精神療法 < seishinryouhou\ ;
+取締法 < torishimarihou\ ;
+茫然自失 < bouzenjishitsu\ ;
+地質時代 < chishitsujidai\ ;
+立入禁止 < tachiirikinshi\ ;
+大同団結 < daidoudanketsu\ ;
+二重盲検法 < nijuumoukenhou\ ;
+貯金通帳 < chokintsuuchou\ ;
+斎戒沐浴 < saikaimokuyoku\ ;
+新制大学 < shinseidaigaku\ ;
+共同責任 < kyoudousekinin\ ;
+新聞発表 < shinbunhappyou\ ;
+車内改札 < shanaikaisatsu\ ;
+自賠責保険 < jibaisekihoken\ ;
+昆虫学者 < konchuugakusha\ ;
+退職年金 < taishokunenkin\ ;
+分割統治 < bunkatsutouchi\ ;
+確率過程 < kakuritsukatei\ ;
+重炭酸曹達 < juutansansouda\ ;
+研究発表 < kenkyuuhappyou\ ;
+旧約聖書 < kyuuyakuseisho\ ;
+手術室 < shujutsushitsu\ ;
+蒲鉾兵舎 < kamabokoheisha\ ;
+経費節約 < keihisetsuyaku\ ;
+筋萎縮症 < kin''ishukushou\ ;
+優生手術 < yuuseishujutsu\ ;
+公共料金 < koukyouryoukin\ ;
+強制中断 < kyouseichuudan\ ;
+万有引力 < ban''yuuinryoku\ ;
+立太子式 < rittaishishiki\ ;
+日内周期 < nichinaishuuki\ ;
+憲法解釈 < kenpoukaishaku\ ;
+長距離電話 < choukyoridenwa\ ;
+美的生活 < bitekiseikatsu\ ;
+団体割引 < dantaiwaribiki\ ;
+国際交流 < kokusaikouryuu\ ;
+試着室 < shichakushitsu\ ;
+冠状静脈 < kanjoujoumyaku\ ;
+逆三角形 < gyakusankakkei\ ;
+複雑怪奇 < fukuzatsukaiki\ ;
+遺伝子工学 < idenshikougaku\ ;
+高層建築 < kousougenchiku\ ;
+不可能選択 < fukanousentaku\ ;
+真珠養殖 < shinjuyoushoku\ ;
+申告用紙 < shinkokuyoushi\ ;
+局地戦争 < kyokuchisensou\ ;
+爆発物 < bakuhatsubutsu\ ;
+重要人物 < juuyoujinbutsu\ ;
+活版印刷 < kappan''insatsu\ ;
+連日連夜 < renjitsuren''ya\ ;
+三者対立 < sanshatairitsu\ ;
+求妻広告 < kyuusaikoukoku\ ;
+狂言自殺 < kyougenjisatsu\ ;
+猪武者 < inoshishimusha\ ;
+性染色体 < seisenshokutai\ ;
+凸版印刷 < toppan''insatsu\ ;
+刺身包丁 < sashimibouchou\ ;
+日米貿易 < nichibeiboueki\ ;
+句構造規則 < kukouzoukisoku\ ;
+手形交換所 < tegatakoukanjo\ ;
+軍事協力 < gunjikyouryoku\ ;
+大黒柱 < daikokubashira\ ;
+極限状態 < kyokugenjoutai\ ;
+物理現象 < butsurigenshou\ ;
+地方自治体 < chihoujichitai\ ;
+人身攻撃 < jinshinkougeki\ ;
+記憶喪失 < kiokusoushitsu\ ;
+不規則動詞 < fukisokudoushi\ ;
+社会秩序 < shakaichitsujo\ ;
+完全主義者 < kanzenshugisha\ ;
+減価償却 < genkashoukyaku\ ;
+鎖帷子 < kusarikatabira\ ;
+空中査察 < kuuchuusasatsu\ ;
+素人芝居 < shiroutoshibai\ ;
+一六勝負 < ichirokushoubu\ ;
+交響楽団 < koukyougakudan\ ;
+血液銀行 < ketsuekiginkou\ ;
+商品在高 < shouhinzaidaka\ ;
+物理学者 < butsurigakusha\ ;
+不躾者 < bushitsukemono\ ;
+年百年中 < nenbyakunenjuu\ ;
+枝葉末節 < shiyoumassetsu\ ;
+軍隊生活 < guntaiseikatsu\ ;
+比較的小 < hikakutekishou\ ;
+構成素構造 < kouseisokouzou\ ;
+潜在能力 < senzainouryoku\ ;
+工学博士 < kougakuhakushi\ ;
+有償契約 < yuushoukeiyaku\ ;
+新聞広告 < shinbunkoukoku\ ;
+上級曹長 < joukyuusouchou\ ;
+乱診乱療 < ranshinranryou\ ;
+載貨吃水線 < saikakissuisen\ ;
+集合住宅 < shuugoujuutaku\ ;
+御食事処 < oshokujidokoro\ ;
+養殖真珠 < youshokushinju\ ;
+内部告発 < naibukokuhatsu\ ;
+名目賃金 < meimokuchingin\ ;
+三色菫 < sanshokusumire\ ;
+相対湿度 < soutaishitsudo\ ;
+学校生活 < gakkouseikatsu\ ;
+入国査証 < nyuukokusashou\ ;
+自律神経 < jiritsushinkei\ ;
+水銀温度計 < suigin''ondokei\ ;
+姉様人形 < anesamaningyou\ ;
+衝撃関数 < shougekikansuu\ ;
+巧言令色 < kougenreishoku\ ;
+変温動物 < hen''ondoubutsu\ ;
+数理論理学 < suurironrigaku\ ;
+原始動物 < genshidoubutsu\ ;
+空間芸術 < kuukangeijutsu\ ;
+皇太子殿下 < koutaishidenka\ ;
+出力線 < shutsuryokusen\ ;
+開店休業 < kaitenkyuugyou\ ;
+娯楽施設 < gorakushisetsu\ ;
+半永久的 < han''eikyuuteki\ ;
+私立 < watakushiritsu\ ;
+戦争未亡人 < sensoumiboujin\ ;
+食糧事情 < shokuryoujijou\ ;
+可逆反応 < kagyakuhan''nou\ ;
+破産管財人 < hasankanzainin\ ;
+特別会員 < tokubetsukaiin\ ;
+死活問題 < shikatsumondai\ ;
+系統神学 < keitoushingaku\ ;
+軟骨魚類 < nankotsugyorui\ ;
+各人各様 < kakujinkakuyou\ ;
+通信事業 < tsuushinjigyou\ ;
+協定世界時 < kyouteisekaiji\ ;
+貿易障壁 < bouekishouheki\ ;
+単一通貨 < tan''itsutsuuka\ ;
+千両役者 < senryouyakusha\ ;
+到着時刻 < touchakujikoku\ ;
+海上保安庁 < kaijouhoanchou\ ;
+概算要求 < gaisan''youkyuu\ ;
+爆発力 < bakuhatsuryoku\ ;
+国民年金 < kokumin''nenkin\ ;
+泥水稼業 < doromizukagyou\ ;
+特異値分解 < tokuichibunkai\ ;
+在日米軍 < zainichibeigun\ ;
+越境入学 < ekkyounyuugaku\ ;
+民営化企業 < min''eikakigyou\ ;
+数理哲学 < suuritetsugaku\ ;
+唯物史観 < yuibutsushikan\ ;
+商業学校 < shougyougakkou\ ;
+左大括弧 < hidaridaikakko\ ;
+民族精神 < minzokuseishin\ ;
+実力行為 < jitsuryokukoui\ ;
+大西洋横断 < taiseiyououdan\ ;
+海綿動物 < kaimendoubutsu\ ;
+米軍兵力 < beigunheiryoku\ ;
+着信局 < chakushinkyoku\ ;
+人工避妊法 < jinkouhininhou\ ;
+就学年齢 < shuugakunenrei\ ;
+鉱物資源 < koubutsushigen\ ;
+軟式野球 < nanshikiyakyuu\ ;
+信託統治 < shintakutouchi\ ;
+経済活動 < keizaikatsudou\ ;
+兵式体操 < heishikitaisou\ ;
+魚群探知機 < gyoguntanchiki\ ;
+生殖細胞 < seishokusaibou\ ;
+地形測量 < chikeisokuryou\ ;
+商業資本 < shougyoushihon\ ;
+遊離基反応 < yuurikihan''nou\ ;
+小田原評定 < odawarahyoujou\ ;
+数値目標 < suuchimokuhyou\ ;
+騒音防止法 < souonboushihou\ ;
+一得一失 < ittokuisshitsu\ ;
+通信販売 < tsuushinhanbai\ ;
+強制執行 < kyouseishikkou\ ;
+幻覚症状 < genkakushoujou\ ;
+懐刀 < futokorogatana\ ;
+疑問代名詞 < gimondaimeishi\ ;
+北陸地方 < hokurikuchihou\ ;
+割引発行 < waribikihakkou\ ;
+広報活動 < kouhoukatsudou\ ;
+山高帽子 < yamatakaboushi\ ;
+染色工場 < senshokukoujou\ ;
+公式訪問 < koushikihoumon\ ;
+排出物 < haishutsubutsu\ ;
+総合開発 < sougoukaihatsu\ ;
+連立政権 < renritsuseiken\ ;
+差別表現 < sabetsuhyougen\ ;
+権力闘争 < kenryokutousou\ ;
+相対性理論 < soutaiseiriron\ ;
+製品戦略 < seihinsenryaku\ ;
+分水山脈 < bunsuisanmyaku\ ;
+酸化防止剤 < sankaboushizai\ ;
+第二次産業 < dainijisangyou\ ;
+鉱物質 < koubutsushitsu\ ;
+有機塩溶媒 < yuukien''youbai\ ;
+誘電正接 < yuudenseisetsu\ ;
+知覚神経 < chikakushinkei\ ;
+逐条審議 < chikujoushingi\ ;
+千島列島 < chishimarettou\ ;
+輸出超過 < yushutsuchouka\ ;
+電子計算機 < denshikeisanki\ ;
+尊王討幕 < son''noutoubaku\ ;
+戦闘犠牲者 < sentougiseisha\ ;
+情報通信 < jouhoutsuushin\ ;
+振出局 < furidashikyoku\ ;
+民間航空機 < minkankoukuuki\ ;
+超越交代 < chouetsukoutai\ ;
+反戦主義者 < hansenshugisha\ ;
+生活空間 < seikatsukuukan\ ;
+前立腺炎 < zenritsusen''en\ ;
+執務室 < shitsumushitsu\ ;
+行政改革 < gyouseikaikaku\ ;
+律令国家 < ritsuryoukokka\ ;
+心霊現象 < shinreigenshou\ ;
+生誕百年 < seitanhyakunen\ ;
+自動着信 < jidouchakushin\ ;
+発熱量 < hatsunetsuryou\ ;
+第三勢力 < daisanseiryoku\ ;
+大八車 < daihachiguruma\ ;
+書留郵便 < kakitomeyuubin\ ;
+観光案内所 < kankouan''naijo\ ;
+知識体系 < chishikitaikei\ ;
+集合記述 < shuugoukijutsu\ ;
+三百諸侯 < sanbyakushokou\ ;
+高齢化社会 < koureikashakai\ ;
+記号論理学 < kigouronrigaku\ ;
+大衆文学 < taishuubungaku\ ;
+中等教育 < chuutoukyouiku\ ;
+教育行政 < kyouikugyousei\ ;
+直接的 < chokusetsuteki\ ;
+武装中立 < busouchuuritsu\ ;
+平和協力 < heiwakyouryoku\ ;
+指名手配人 < shimeitehaijin\ ;
+電鉄会社 < dentetsugaisha\ ;
+自転車旅行 < jitensharyokou\ ;
+出席日数 < shussekinissuu\ ;
+県立病院 < kenritsubyouin\ ;
+平均太陽時 < heikintaiyouji\ ;
+偏旁冠脚 < henboukankyaku\ ;
+好気性細菌 < koukiseisaikin\ ;
+販売促進 < hanbaisokushin\ ;
+信託投資 < shintakutoushi\ ;
+電波望遠鏡 < denpabouenkyou\ ;
+中小企業 < chuushoukigyou\ ;
+三行広告 < sangyoukoukoku\ ;
+血液循環 < ketsuekijunkan\ ;
+連結決算 < renketsukessan\ ;
+θ理論 < shi\ ̄ta\ ̄riron\ ;
+改札鋏 < kaisatsuhasami\ ;
+骨軟化症 < kotsunankashou\ ;
+労働運動者 < roudouundousha\ ;
+政治哲学 < seijitetsugaku\ ;
+商業放送 < shougyouhousou\ ;
+国防総省 < kokubousoushou\ ;
+生活指導 < seikatsushidou\ ;
+炎熱地獄 < en''netsujigoku\ ;
+八面玲瓏 < hachimenreirou\ ;
+面会謝絶 < menkaishazetsu\ ;
+道路標識 < dourohyoushiki\ ;
+国営通信 < kokueitsuushin\ ;
+震災記念日 < shinsaikinenbi\ ;
+適材適所 < tekizaitekisho\ ;
+劇症肝炎 < gekishoukan''en\ ;
+物情騒然 < butsujousouzen\ ;
+忝涙 < katajikenamida\ ;
+公民生活 < kouminseikatsu\ ;
+入学試験 < nyuugakushiken\ ;
+悪徳政治家 < akutokuseijika\ ;
+情報主要素 < jouhoushuyouso\ ;
+合唱隊長 < gasshoutaichou\ ;
+乾燥牛乳 < kansougyuunyuu\ ;
+直系尊属 < chokkeisonzoku\ ;
+入学願書 < nyuugakugansho\ ;
+出発時間 < shuppatsujikan\ ;
+主要人物 < shuyoujinbutsu\ ;
+公武合体論 < koubugattairon\ ;
+不束者 < futsutsukamono\ ;
+燕千鳥 < tsubamechidori\ ;
+文学作品 < bungakusakuhin\ ;
+電光掲示板 < denkoukeijiban\ ;
+軽便鉄道 < keibentetsudou\ ;
+割引市場 < waribikishijou\ ;
+失踪宣告 < shissousenkoku\ ;
+化学結合 < kagakuketsugou\ ;
+保険料率 < hokenryouritsu\ ;
+価電子状態 < kadenshijoutai\ ;
+信越本線 < shinetsuhonsen\ ;
+神経中枢 < shinkeichuusuu\ ;
+発光動物 < hakkoudoubutsu\ ;
+水産加工品 < suisankakouhin\ ;
+平面幾何学 < heimenkikagaku\ ;
+複式火山 < fukushikikazan\ ;
+堅忍不抜 < ken''ninfubatsu\ ;
+耐乏生活 < taibouseikatsu\ ;
+社会通念 < shakaitsuunen\ ;
+接客態度 < sekkyakutaido\ ;
+軽爆撃機 < keibakugekiki\ ;
+南東 < minamihigashi\ ;
+署名捺印 < shomeinatsuin\ ;
+休憩室 < kyuukeishitsu\ ;
+胸部疾患 < kyoubushikkan\ ;
+象牙取引 < zougetorihiki\ ;
+日曜大工 < nichiyoudaiku\ ;
+目玉商品 < medamashouhin\ ;
+製薬会社 < seiyakugaisha\ ;
+投光照明 < toukoushoumei\ ;
+清廉潔白 < seirenkeppaku\ ;
+自転車置場 < jitenshaokiba\ ;
+敵前逃亡 < tekizentoubou\ ;
+日刊新聞 < nikkanshinbun\ ;
+抱腹絶倒 < houfukuzettou\ ;
+日没前 < nichibotsuzen\ ;
+教育委員会 < kyouikuiinkai\ ;
+悪虐無道 < akugyakumudou\ ;
+水上飛行機 < suijouhikouki\ ;
+厭世悲観者 < enseihikansha\ ;
+国家権力 < kokkakenryoku\ ;
+南洋諸島 < nan''youshotou\ ;
+後期印象派 < koukiinshouha\ ;
+囚人労働 < shuujinroudou\ ;
+狐格子 < kitsunegoushi\ ;
+劣等観念 < rettoukan''nen\ ;
+関係官庁 < kankeikanchou\ ;
+農民文学 < nouminbungaku\ ;
+自然現象 < shizengenshou\ ;
+腎臓結石 < jinzoukesseki\ ;
+古兵 < furutsuwamono\ ;
+施政方針 < shiseihoushin\ ;
+閲覧室 < etsuranshitsu\ ;
+天竺浪人 < tenjikurounin\ ;
+建築物 < kenchikubutsu\ ;
+霊魂不滅 < reikonfumetsu\ ;
+公共組合 < koukyoukumiai\ ;
+有線電信 < yuusendenshin\ ;
+血行障害 < kekkoushougai\ ;
+人的資源 < jintekishigen\ ;
+地方行政 < chihougyousei\ ;
+震天動地 < shintendouchi\ ;
+第三帝国 < daisanteikoku\ ;
+大規模戦争 < daikibosensou\ ;
+実質的 < jisshitsuteki\ ;
+天文学者 < tenmongakusha\ ;
+深夜放送 < shin''yahousou\ ;
+音声形式 < onseikeishiki\ ;
+交通問題 < koutsuumondai\ ;
+公共投資 < koukyoutoushi\ ;
+劃時代的 < kakujidaiteki\ ;
+同族会社 < douzokugaisha\ ;
+心理描写 < shinribyousha\ ;
+技術水準 < gijutsusuijun\ ;
+無担保社債 < mutanposhasai\ ;
+理学博士 < rigakuhakushi\ ;
+局所麻酔 < kyokushomasui\ ;
+産別会議 < sanbetsukaigi\ ;
+翌々日 < yokuyokujitsu\ ;
+就学児童 < shuugakujidou\ ;
+空中給油 < kuuchuukyuuyu\ ;
+国際規格 < kokusaikikaku\ ;
+学校新聞 < gakkoushinbun\ ;
+試聴室 < shichoushitsu\ ;
+情報産業 < jouhousangyou\ ;
+登録番号 < tourokubangou\ ;
+土木工学 < dobokukougaku\ ;
+生体反応 < seitaihan''nou\ ;
+狸囃子 < tanukibayashi\ ;
+象徴主義 < shouchoushugi\ ;
+音楽教育 < ongakukyouiku\ ;
+観測地点 < kansokuchiten\ ;
+遠心分離機 < enshinbunriki\ ;
+植毛術 < shokumoujutsu\ ;
+技術同士 < gijutsudoushi\ ;
+応急攻撃 < oukyuukougeki\ ;
+同仁教会 < doujinkyoukai\ ;
+実働時間 < jitsudoujikan\ ;
+青空駐車 < aozorachuusha\ ;
+電力輸送 < denryokuyusou\ ;
+軍隊教育 < guntaikyouiku\ ;
+遠洋漁業 < en''yougyogyou\ ;
+旧正月 < kyuushougatsu\ ;
+保障占領 < hoshousenryou\ ;
+交換法則 < koukanhousoku\ ;
+牽引療法 < ken''inryouhou\ ;
+駅伝競走 < ekidenkyousou\ ;
+切歯扼腕 < sesshiyakuwan\ ;
+丸鼻蜂 < maruhanabachi\ ;
+団体交渉 < dantaikoushou\ ;
+脚色者 < kyakushokusha\ ;
+亭主関白 < teishukanpaku\ ;
+一段動詞 < ichidandoushi\ ;
+一般幕僚 < ippanbakuryou\ ;
+寝台列車 < shindairessha\ ;
+投擲競技 < toutekikyougi\ ;
+東海岸 < higashikaigan\ ;
+気象通報 < kishoutsuuhou\ ;
+開析台地 < kaisekidaichi\ ;
+内踝 < uchikurubushi\ ;
+実用主義 < jitsuyoushugi\ ;
+直立茎 < chokuritsukei\ ;
+白雪姫 < shirayukihime\ ;
+工場実習 < koujoujisshuu\ ;
+中継貿易 < chuukeiboueki\ ;
+性能特性 < seinoutokusei\ ;
+電気冷蔵庫 < denkireizouko\ ;
+最後通牒 < saigotsuuchou\ ;
+最低温度計 < saiteiondokei\ ;
+国際結婚 < kokusaikekkon\ ;
+造本技術 < zouhongijutsu\ ;
+妨害工作 < bougaikousaku\ ;
+断熱的 < dan''netsuteki\ ;
+民族意識 < minzokuishiki\ ;
+泥縄式 < doronawashiki\ ;
+贅沢三昧 < zeitakuzanmai\ ;
+写真製版 < shashinseihan\ ;
+観閲式 < kan''etsushiki\ ;
+学校教育 < gakkoukyouiku\ ;
+霧中信号 < muchuushingou\ ;
+精神状態 < seishinjoutai\ ;
+商科大学 < shoukadaigaku\ ;
+吸湿性 < kyuushitsusei\ ;
+消極的 < shoukyokuteki\ ;
+顧問弁護士 < komonbengoshi\ ;
+写真結婚 < shashinkekkon\ ;
+共同戦線 < kyoudousensen\ ;
+火山活動 < kazankatsudou\ ;
+麦稈細工 < mugiwarazaiku\ ;
+我利我利亡者 < garigarimouja\ ;
+勤労所得 < kinroushotoku\ ;
+首相官邸 < shushoukantei\ ;
+読書三昧 < dokushozanmai\ ;
+中等教員 < chuutoukyouin\ ;
+一次電流 < ichijidenryuu\ ;
+台中関係 < taichuukankei\ ;
+秘密結社 < himitsukessha\ ;
+東方拡大 < touhoukakudai\ ;
+漂流物 < hyouryuubutsu\ ;
+近隣諸国 < kinrinshokoku\ ;
+労働階級 < roudoukaikyuu\ ;
+貞操観念 < teisoukan''nen\ ;
+民間伝承 < minkandenshou\ ;
+膀胱結石 < boukoukesseki\ ;
+転居通知 < tenkyotsuuchi\ ;
+純正数学 < junseisuugaku\ ;
+男爵夫人 < danshakufujin\ ;
+下二桁 < shimofutaketa\ ;
+二硫化炭素 < niryuukatanso\ ;
+塩蔵食品 < enzoushokuhin\ ;
+一致団結 < itchidanketsu\ ;
+警察国家 < keisatsukokka\ ;
+経済白書 < keizaihakusho\ ;
+穀倉地帯 < kokusouchitai\ ;
+憂鬱質 < yuuutsushitsu\ ;
+早期警戒機 < soukikeikaiki\ ;
+環境事業 < kankyoujigyou\ ;
+総合商社 < sougoushousha\ ;
+俄成金 < niwakanarikin\ ;
+少年労働 < shounenroudou\ ;
+一挙両得 < ikkyoryoutoku\ ;
+測定装置 < sokuteisouchi\ ;
+前衛美術 < zen''eibijutsu\ ;
+構造遺伝子 < kouzouidenshi\ ;
+皆既月食 < kaikigesshoku\ ;
+公団住宅 < koudanjuutaku\ ;
+設備投資 < setsubitoushi\ ;
+日常茶飯 < nichijousahan\ ;
+群集心理 < gunshuushinri\ ;
+百戦練磨 < hyakusenrenma\ ;
+即興詩人 < sokkyoushijin\ ;
+善隣政策 < zenrinseisaku\ ;
+前受収益 < maeukeshuueki\ ;
+青銅器時代 < seidoukijidai\ ;
+国民皆兵 < kokuminkaihei\ ;
+骨相学者 < kossougakusha\ ;
+戸別訪問 < kobetsuhoumon\ ;
+爆弾声明 < bakudanseimei\ ;
+道楽息子 < dourakumusuko\ ;
+舌鼓 < shitatsudzumi\ ;
+収穫物 < shuukakubutsu\ ;
+貸付金 < kashitsukekin\ ;
+癒傷組織 < yushousoshiki\ ;
+男子学生 < danshigakusei\ ;
+動物達 < doubutsutachi\ ;
+貫通銃創 < kantsuujuusou\ ;
+食糧庁 < shokuryouchou\ ;
+会計検査院 < kaikeikensain\ ;
+新郎新婦 < shinroushinpu\ ;
+空挺作戦 < kuuteisakusen\ ;
+配管工業 < haikankougyou\ ;
+宇宙通信 < uchuutsuushin\ ;
+腺病質 < senbyoushitsu\ ;
+等比数列 < touhisuuretsu\ ;
+床上浸水 < yukaueshinsui\ ;
+自然環境 < shizenkankyou\ ;
+日中戦争 < nitchuusensou\ ;
+民約説 < min''yakusetsu\ ;
+吸湿剤 < kyuushitsuzai\ ;
+二筋道 < futasujimichi\ ;
+半長靴 < han''nagagutsu\ ;
+標題音楽 < hyoudaiongaku\ ;
+校長室 < kouchoushitsu\ ;
+劣等複合 < rettoufukugou\ ;
+眼球銀行 < gankyuuginkou\ ;
+決断力 < ketsudanryoku\ ;
+市場分析 < shijoubunseki\ ;
+中間試験 < chuukanshiken\ ;
+証券会社 < shoukengaisha\ ;
+漏話結合 < rouwagetsugou\ ;
+国際紛争 < kokusaifunsou\ ;
+集団行動 < shuudankoudou\ ;
+車両縦隊 < sharyoujuutai\ ;
+交代操業 < koutaisougyou\ ;
+作者未詳 < sakushamishou\ ;
+西本願寺 < nishihonganji\ ;
+永代借地 < eitaishakuchi\ ;
+差出人 < sashidashinin\ ;
+七曜表 < shichiyouhyou\ ;
+子宮筋腫 < shikyuukinshu\ ;
+切手蒐集 < kitteshuushuu\ ;
+首位攻防戦 < shuikoubousen\ ;
+全方位外交 < zenhouigaikou\ ;
+官費留学 < kanpiryuugaku\ ;
+編集主幹 < henshuushukan\ ;
+生産技術 < seisangijutsu\ ;
+水平応力 < suiheiouryoku\ ;
+先端技術 < sentangijutsu\ ;
+神宮球場 < jinguukyuujou\ ;
+灰緑色 < kairyokushoku\ ;
+本質的 < honshitsuteki\ ;
+無人化工場 < mujinkakoujou\ ;
+音楽大学 < ongakudaigaku\ ;
+侵略行為 < shinryakukoui\ ;
+入射光線 < nyuushakousen\ ;
+三角函数 < sankakukansuu\ ;
+立体写真 < rittaishashin\ ;
+国際関係 < kokusaikankei\ ;
+浄土真宗 < joudoshinshuu\ ;
+三国同盟 < sangokudoumei\ ;
+火事場泥棒 < kajibadorobou\ ;
+驚天動地 < kyoutendouchi\ ;
+空中滑走 < kuuchuukassou\ ;
+国際問題 < kokusaimondai\ ;
+求心力 < kyuushinryoku\ ;
+社外発信 < shagaihasshin\ ;
+跳梁跋扈 < chouryoubakko\ ;
+集中砲火 < shuuchuuhouka\ ;
+人工栄養児 < jinkoueiyouji\ ;
+人間工学 < ningenkougaku\ ;
+身元確認 < mimotokakunin\ ;
+結団式 < ketsudanshiki\ ;
+差別待遇 < sabetsutaiguu\ ;
+千鳥格子 < chidorigoushi\ ;
+仏像二体 < butsuzounitai\ ;
+全景写真 < zenkeishashin\ ;
+公共団体 < koukyoudantai\ ;
+改札口 < kaisatsuguchi\ ;
+堆積輪廻 < taisekirin''ne\ ;
+一般生活 < ippanseikatsu\ ;
+欧米諸言語 < oubeishogengo\ ;
+横河電機 < yokogawadenki\ ;
+中継放送 < chuukeihousou\ ;
+禁止条約 < kinshijouyaku\ ;
+全国放送 < zenkokuhousou\ ;
+人工孵化法 < jinkoufukahou\ ;
+党利党略 < touritouryaku\ ;
+繁殖力 < hanshokuryoku\ ;
+外交交渉 < gaikoukoushou\ ;
+学士院賞 < gakushiinshou\ ;
+行動計画 < koudoukeikaku\ ;
+共有財産 < kyouyuuzaisan\ ;
+逸失利益 < isshitsurieki\ ;
+農地改革 < nouchikaikaku\ ;
+囃子詞 < hayashikotoba\ ;
+交通渋滞 < koutsuujuutai\ ;
+神経細胞 < shinkeisaibou\ ;
+人差指 < hitosashiyubi\ ;
+七面鳥 < shichimenchou\ ;
+業界団体 < gyoukaidantai\ ;
+勧善懲悪 < kanzenchouaku\ ;
+共産陣営 < kyousanjin''ei\ ;
+欠席裁判 < kessekisaiban\ ;
+半革装丁 < hankawasoutei\ ;
+競争市場 < kyousoushijou\ ;
+発言力 < hatsugenryoku\ ;
+知的財産 < chitekizaisan\ ;
+南北問題 < nanbokumondai\ ;
+軍事顧問団 < gunjikomondan\ ;
+高層天気図 < kousoutenkizu\ ;
+突然変異 < totsuzenhen''i\ ;
+適応障害 < tekioushougai\ ;
+出世頭 < shussegashira\ ;
+混載貨物 < konsaikamotsu\ ;
+集中力 < shuuchuuryoku\ ;
+耐障害性 < taishougaisei\ ;
+近親相姦 < kinshinsoukan\ ;
+屈辱的 < kutsujokuteki\ ;
+大道商人 < daidoushounin\ ;
+不信任案 < fushin''nin''an\ ;
+仮面舞踏会 < kamenbutoukai\ ;
+宮廷音楽 < kyuuteiongaku\ ;
+商売敵 < shoubaigataki\ ;
+出生届 < shusseitodoke\ ;
+緩衝地帯 < kanshouchitai\ ;
+血清注射 < kesseichuusha\ ;
+脱獄囚 < datsugokushuu\ ;
+加糖粉乳 < katoufun''nyuu\ ;
+土産話 < miyagebanashi\ ;
+信販会社 < shinpangaisha\ ;
+十一献金 < juuichikenkin\ ;
+福祉事業 < fukushijigyou\ ;
+暖衣飽食 < dan''ihoushoku\ ;
+準決勝戦 < junkesshousen\ ;
+野生動物 < yaseidoubutsu\ ;
+社会現象 < shakaigenshou\ ;
+北欧諸国 < hokuoushokoku\ ;
+自然休会 < shizenkyuukai\ ;
+良二千石 < ryounisenseki\ ;
+文学青年 < bungakuseinen\ ;
+白装束 < shiroshouzoku\ ;
+作業部会案 < sagyoubukaian\ ;
+修道誓願 < shuudouseigan\ ;
+食糧援助 < shokuryouenjo\ ;
+衆議一決 < shuugiikketsu\ ;
+酸素吸入 < sansokyuunyuu\ ;
+生臭坊主 < namagusabouzu\ ;
+軍事施設 < gunjishisetsu\ ;
+映画評論家 < eigahyouronka\ ;
+郵便振替 < yuubinfurikae\ ;
+方針決定 < houshinkettei\ ;
+就業時間 < shuugyoujikan\ ;
+人口抑制 < jinkouyokusei\ ;
+軍人恩給 < gunjin''onkyuu\ ;
+人工流産 < jinkouryuuzan\ ;
+真剣勝負 < shinkenshoubu\ ;
+隠退生活 < intaiseikatsu\ ;
+守秘義務違反 < shuhigimuihan\ ;
+腰巾着 < koshiginchaku\ ;
+役員報酬 < yakuinhoushuu\ ;
+割引時間 < waribikijikan\ ;
+白葡萄酒 < shirobudoushu\ ;
+半熟卵 < hanjukutamago\ ;
+制服制帽 < seifukuseibou\ ;
+古色蒼然 < koshokusouzen\ ;
+留置郵便 < tomeokiyuubin\ ;
+計画倒産 < keikakutousan\ ;
+皆既日食 < kaikinisshoku\ ;
+没常識 < botsujoushiki\ ;
+集塵袋 < shuujinbukuro\ ;
+連戦連勝 < rensenrenshou\ ;
+享楽主義 < kyourakushugi\ ;
+三下奴 < sanshitayakko\ ;
+広告媒体 < koukokubaitai\ ;
+国民審査 < kokuminshinsa\ ;
+健者 < shitatakamono\ ;
+混声合唱 < konseigasshou\ ;
+神道信者 < shintoushinja\ ;
+実況放送 < jikkyouhousou\ ;
+分光分析 < bunkoubunseki\ ;
+産業組合 < sangyoukumiai\ ;
+取捨選択 < shushasentaku\ ;
+地震学者 < jishingakusha\ ;
+大阪大学 < oosakadaigaku\ ;
+第二次大戦 < dainijitaisen\ ;
+研究方法 < kenkyuuhouhou\ ;
+地質学 < chishitsugaku\ ;
+断郊競走 < dankoukyousou\ ;
+楽屋話 < gakuyabanashi\ ;
+比較文学 < hikakubungaku\ ;
+士農工商 < shinoukoushou\ ;
+乾坤一擲 < kenkon''itteki\ ;
+停止信号 < teishishingou\ ;
+建築現場 < kenchikugenba\ ;
+国連大使 < kokurentaishi\ ;
+眉目秀麗 < bimokushuurei\ ;
+情緒障害 < joushoshougai\ ;
+謹賀新年 < kingashin''nen\ ;
+練習問題 < renshuumondai\ ;
+人畜無害 < jinchikumugai\ ;
+上流社会 < jouryuushakai\ ;
+強奪物 < goudatsubutsu\ ;
+閑日月 < kanjitsugetsu\ ;
+陸海空軍 < rikukaikuugun\ ;
+野次馬根性 < yajiumakonjou\ ;
+真相調査 < shinsouchousa\ ;
+表敬訪問 < hyoukeihoumon\ ;
+普通教育 < futsuukyouiku\ ;
+公民教育 < kouminkyouiku\ ;
+挑発的 < chouhatsuteki\ ;
+水害対策 < suigaitaisaku\ ;
+将来展望 < shouraitenbou\ ;
+尋問調書 < jinmonchousho\ ;
+着弾距離 < chakudankyori\ ;
+天真爛漫 < tenshinranman\ ;
+反射神経 < hanshashinkei\ ;
+青色申告 < aoiroshinkoku\ ;
+造形美術 < zoukeibijutsu\ ;
+史的現在 < shitekigenzai\ ;
+祝祭日 < shukusaijitsu\ ;
+内部生活 < naibuseikatsu\ ;
+構造記述 < kouzoukijutsu\ ;
+共存共栄 < kyouzonkyouei\ ;
+帯状疱疹 < taijouhoushin\ ;
+現実主義 < genjitsushugi\ ;
+年々歳々 < nen''nensaisai\ ;
+研究論文 < kenkyuuronbun\ ;
+最終編成 < saishuuhensei\ ;
+専修学校 < senshuugakkou\ ;
+彫刻術 < choukokujutsu\ ;
+右中括弧 < migichuukakko\ ;
+修道院長 < shuudouinchou\ ;
+家督相続 < katokusouzoku\ ;
+宿命論者 < shukumeironja\ ;
+温度調節 < ondochousetsu\ ;
+英会話学校 < eikaiwagakkou\ ;
+言語能力 < gengonouryoku\ ;
+利潤追求 < rijuntsuikyuu\ ;
+統率理論 < tousotsuriron\ ;
+中立国 < chuuritsukoku\ ;
+喫煙室 < kitsuenshitsu\ ;
+良風美俗 < ryoufuubizoku\ ;
+国民学校 < kokumingakkou\ ;
+単為生殖 < tan''iseishoku\ ;
+前方不注意 < zenpoufuchuui\ ;
+二十日鼠 < hatsukanezumi\ ;
+貿易収支 < bouekishuushi\ ;
+人工心臓 < jinkoushinzou\ ;
+天津日嗣 < amatsuhitsugi\ ;
+一両日 < ichiryoujitsu\ ;
+群雄割拠 < gun''yuukakkyo\ ;
+先天梅毒 < sentenbaidoku\ ;
+人工心肺 < jinkoushinbai\ ;
+呼吸中枢 < kokyuuchuusuu\ ;
+駐留部隊 < chuuryuubutai\ ;
+殺生禁断 < sesshoukindan\ ;
+無銭遊興 < musen''yuukyou\ ;
+主席全権 < shusekizenken\ ;
+地方公務員 < chihoukoumuin\ ;
+甲乙丙丁 < kouotsuheitei\ ;
+補欠選挙 < hoketsusenkyo\ ;
+橋脚舟 < kyoukyakushuu\ ;
+微量分析 < biryoubunseki\ ;
+自動販売機 < jidouhanbaiki\ ;
+地域代表 < chiikidaihyou\ ;
+画一主義 < kakuitsushugi\ ;
+京都大学 < kyoutodaigaku\ ;
+漬物石 < tsukemonoishi\ ;
+外出中 < gaishutsuchuu\ ;
+鉄染色 < tetsusenshoku\ ;
+生体工学 < seitaikougaku\ ;
+独立心 < dokuritsushin\ ;
+泡沫候補 < houmatsukouho\ ;
+相続財産 < souzokuzaisan\ ;
+対戦成績 < taisenseiseki\ ;
+国際空港 < kokusaikuukou\ ;
+国連総会 < kokurensoukai\ ;
+今月末 < kongetsumatsu\ ;
+専門教育 < senmonkyouiku\ ;
+営業報告 < eigyouhoukoku\ ;
+血液検査 < ketsuekikensa\ ;
+革新主義 < kakushinshugi\ ;
+露出時間 < roshutsujikan\ ;
+電磁調理器 < denjichouriki\ ;
+投票用紙 < touhyouyoushi\ ;
+実物大 < jitsubutsudai\ ;
+薬用石鹸 < yakuyousekken\ ;
+単独行動 < tandokukoudou\ ;
+航空自衛隊 < koukuujieitai\ ;
+夫婦生活 < fuufuseikatsu\ ;
+肉体関係 < nikutaikankei\ ;
+軍事警察 < gunjikeisatsu\ ;
+新婚旅行 < shinkonryokou\ ;
+陽性反応 < youseihan''nou\ ;
+軸差応力 < jikusaouryoku\ ;
+人類学者 < jinruigakusha\ ;
+拾得物 < shuutokubutsu\ ;
+武士気質 < bushikishitsu\ ;
+第一人者 < daiichininsha\ ;
+倉敷料 < kurashikiryou\ ;
+資料室 < shiryoushitsu\ ;
+機関投資家 < kikantoushika\ ;
+家庭生活 < kateiseikatsu\ ;
+危険人物 < kikenjinbutsu\ ;
+大学教授 < daigakukyouju\ ;
+前進運動 < zenshin''undou\ ;
+活動成果 < katsudouseika\ ;
+総合収支 < sougoushuushi\ ;
+買物袋 < kaimonobukuro\ ;
+吸収力 < kyuushuuryoku\ ;
+各駅停車 < kakuekiteisha\ ;
+独立国 < dokuritsukoku\ ;
+触媒作用 < shokubaisayou\ ;
+科学技術 < kagakugijutsu\ ;
+印刷用紙 < insatsuyoushi\ ;
+回路遮断機 < kairoshadanki\ ;
+人的証拠 < jintekishouko\ ;
+抗議活動 < kougikatsudou\ ;
+先取得点 < senshutokuten\ ;
+桜祭 < sakuramatsuri\ ;
+複合企業 < fukugoukigyou\ ;
+無差別級 < musabetsukyuu\ ;
+多国籍軍 < takokusekigun\ ;
+競争価格 < kyousoukakaku\ ;
+社会人枠 < shakaijinwaku\ ;
+商業地区 < shougyouchiku\ ;
+表層構造 < hyousoukouzou\ ;
+精神衛生 < seishin''eisei\ ;
+血尿症 < ketsunyoushou\ ;
+航空写真 < koukuushashin\ ;
+上昇気流 < joushoukiryuu\ ;
+北大西洋 < kitataiseiyou\ ;
+行政指導 < gyouseishidou\ ;
+定置漁業 < teichigyogyou\ ;
+最高級品 < saikoukyuuhin\ ;
+彫刻物 < choukokubutsu\ ;
+出頭命令 < shuttoumeirei\ ;
+堪忍袋 < kan''ninbukuro\ ;
+出血過多 < shukketsukata\ ;
+電子出版 < denshishuppan\ ;
+社長室 < shachoushitsu\ ;
+色素細胞 < shikisosaibou\ ;
+聖路加病院 < seirokabyouin\ ;
+花嫁衣裳 < hanayomeishou\ ;
+小口現金 < koguchigenkin\ ;
+分離主義者 < bunrishugisha\ ;
+博学多才 < hakugakutasai\ ;
+外様大名 < tozamadaimyou\ ;
+国民主権 < kokuminshuken\ ;
+公金横領 < koukin''ouryou\ ;
+憲法記念日 < kenpoukinenbi\ ;
+近郊農業 < kinkounougyou\ ;
+全国大会 < zenkokutaikai\ ;
+吟遊詩人 < gin''yuushijin\ ;
+冷水摩擦 < reisuimasatsu\ ;
+曲学阿世 < kyokugakuasei\ ;
+価格競争 < kakakukyousou\ ;
+加減抵抗器 < kagenteikouki\ ;
+禁断症状 < kindanshoujou\ ;
+竜攘虎搏 < ryuujoukohaku\ ;
+正味重量 < shoumijuuryou\ ;
+公証役場 < koushouyakuba\ ;
+清涼飲料 < seiryouinryou\ ;
+丼勘定 < donburikanjou\ ;
+毛管現象 < moukangenshou\ ;
+作戦地域 < sakusenchiiki\ ;
+玉子丼 < tamagodonburi\ ;
+出張旅費 < shutchouryohi\ ;
+放送番組 < housoubangumi\ ;
+無免許運転 < mumenkyounten\ ;
+縮刷版 < shukusatsuban\ ;
+永久磁石 < eikyuujishaku\ ;
+売掛勘定 < urikakekanjou\ ;
+今日的 < kon''nichiteki\ ;
+間宮海峡 < mamiyakaikyou\ ;
+獄中日記 < gokuchuunikki\ ;
+沈思黙考 < chinshimokkou\ ;
+超国家的 < choukokkateki\ ;
+洞察力 < dousatsuryoku\ ;
+防火建築 < boukakenchiku\ ;
+金融市場 < kin''yuushijou\ ;
+集団心理 < shuudanshinri\ ;
+入社試験 < nyuushashiken\ ;
+選択値群 < sentakuchigun\ ;
+不可視光線 < fukashikousen\ ;
+確率誤差 < kakuritsugosa\ ;
+貿易自由化 < bouekijiyuuka\ ;
+第四階級 < daiyonkaikyuu\ ;
+空気制動機 < kuukiseidouki\ ;
+逍遥学派 < shouyougakuha\ ;
+黒点周期 < kokutenshuuki\ ;
+美術学校 < bijutsugakkou\ ;
+半死半生 < hanshihanshou\ ;
+快速電車 < kaisokudensha\ ;
+南北戦争 < nanbokusensou\ ;
+小児喘息 < shounizensoku\ ;
+内政干渉 < naiseikanshou\ ;
+公平政策 < kouheiseisaku\ ;
+工業規格 < kougyoukikaku\ ;
+四角四面 < shikakushimen\ ;
+少年少女 < shounenshoujo\ ;
+再販業者 < saihangyousha\ ;
+超高速度 < choukousokudo\ ;
+調査報告 < chousahoukoku\ ;
+海難審判 < kainanshinpan\ ;
+理学修士 < rigakushuushi\ ;
+外的根拠 < gaitekikonkyo\ ;
+松食虫 < matsukuimushi\ ;
+生命工学 < seimeikougaku\ ;
+天佑神助 < ten''yuushinjo\ ;
+外国旅行 < gaikokuryokou\ ;
+共同水栓 < kyoudousuisen\ ;
+拡大均衡 < kakudaikinkou\ ;
+芋蔓式 < imodzurushiki\ ;
+五十歩百歩 < gojuppohyappo\ ;
+質量数 < shitsuryousuu\ ;
+凱旋将軍 < gaisenshougun\ ;
+原理主義者 < genrishugisha\ ;
+集積回路 < shuusekikairo\ ;
+裾野産業 < susonosangyou\ ;
+鎮魂帰神 < chinkonkishin\ ;
+合格者名 < goukakushamei\ ;
+有資格者 < yuushikakusha\ ;
+化学反応 < kagakuhan''nou\ ;
+需要供給 < juyoukyoukyuu\ ;
+別配達 < betsuhaitatsu\ ;
+召喚令状 < shoukanreijou\ ;
+試験勉強 < shikenbenkyou\ ;
+温室効果 < onshitsukouka\ ;
+今日様 < kon''nichisama\ ;
+有鉤条虫 < yuukoujouchuu\ ;
+内的根拠 < naitekikonkyo\ ;
+近海漁業 < kinkaigyogyou\ ;
+冠大会 < kanmuritaikai\ ;
+決戦投票 < kessentouhyou\ ;
+共同社会 < kyoudoushakai\ ;
+追複曲 < tsuifukukyoku\ ;
+唐草模様 < karakusamoyou\ ;
+包皮切断 < houhisetsudan\ ;
+定期取引 < teikitorihiki\ ;
+乾燥洗濯 < kansousentaku\ ;
+集合名詞 < shuugoumeishi\ ;
+小型新聞 < kogatashinbun\ ;
+多元文化論 < tagenbunkaron\ ;
+譲渡性預金 < joutoseiyokin\ ;
+医療施設 < iryoushisetsu\ ;
+動物油脂 < doubutsuyushi\ ;
+反面教師 < hanmenkyoushi\ ;
+組合頭 < kumiaigashira\ ;
+日常会話 < nichijoukaiwa\ ;
+輸入業者 < yunyuugyousha\ ;
+標準価格 < hyoujunkakaku\ ;
+不妊手術 < funinshujutsu\ ;
+山猫争議 < yamanekosougi\ ;
+出世間的 < shussekenteki\ ;
+年中行事 < nenchuugyouji\ ;
+鎌倉時代 < kamakurajidai\ ;
+散歩旁 < sanpokatagata\ ;
+供託物 < kyoutakubutsu\ ;
+炎症病巣 < enshoubyousou\ ;
+注意人物 < chuuijinbutsu\ ;
+国家主義者 < kokkashugisha\ ;
+日洪親善 < nikkoushinzen\ ;
+追加注文 < tsuikachuumon\ ;
+筆写略字 < hissharyakuji\ ;
+献血運動 < kenketsuundou\ ;
+舞台芸術 < butaigeijutsu\ ;
+出願人 < shutsugan''nin\ ;
+試験監督 < shikenkantoku\ ;
+撤頭徹尾 < tettoutetsubi\ ;
+疾風迅雷 < shippuujinrai\ ;
+市場環境 < shijoukankyou\ ;
+原成岩石 < genseiganseki\ ;
+前大統領 < zendaitouryou\ ;
+強制送還 < kyouseisoukan\ ;
+同業組合 < dougyoukumiai\ ;
+電気剃刀 < denkikamisori\ ;
+事務局長 < jimukyokuchou\ ;
+経済改革 < keizaikaikaku\ ;
+沿岸警備隊 < engankeibitai\ ;
+民俗芸能 < minzokugeinou\ ;
+粘着力 < nenchakuryoku\ ;
+個人主義者 < kojinshugisha\ ;
+収穫予想 < shuukakuyosou\ ;
+塩辛蜻蛉 < shiokaratonbo\ ;
+宿泊料 < shukuhakuryou\ ;
+紆余曲折 < uyokyokusetsu\ ;
+極超短波 < gokuchoutanpa\ ;
+乳窄 < chichishibori\ ;
+主権侵犯 < shukenshinpan\ ;
+中性洗剤 < chuuseisenzai\ ;
+貨物列車 < kamotsuressha\ ;
+血清療法 < kesseiryouhou\ ;
+新案特許 < shin''antokkyo\ ;
+是是非非主義 < zezehihishugi\ ;
+死後硬直 < shigokouchoku\ ;
+唯物主義 < yuibutsushugi\ ;
+日露戦争 < nichirosensou\ ;
+同盟条約 < doumeijouyaku\ ;
+一攫千金 < ikkakkusenkin\ ;
+階級闘争 < kaikyuutousou\ ;
+熱硬化剤 < netsukoukazai\ ;
+専用回線 < sen''youkaisen\ ;
+交換学生 < koukangakusei\ ;
+動線計画 < dousenkeikaku\ ;
+外交委員長 < gaikouiinchou\ ;
+民政長官 < minseichoukan\ ;
+判断中止 < handanchuushi\ ;
+枝垂桜 < shidarezakura\ ;
+古代紫 < kodaimurasaki\ ;
+局所分岐 < kyokushobunki\ ;
+通常国会 < tsuujoukokkai\ ;
+枝垂柳 < shidareyanagi\ ;
+深緑色 < fukamidoriiro\ ;
+数値解析 < suuchikaiseki\ ;
+無抵抗主義 < muteikoushugi\ ;
+軍備拡張 < gunbikakuchou\ ;
+適者生存 < tekishaseizon\ ;
+精神鑑定 < seishinkantei\ ;
+積雪量 < sekisetsuryou\ ;
+鉄道輸送 < tetsudouyusou\ ;
+研究室 < kenkyuushitsu\ ;
+第三階級 < daisankaikyuu\ ;
+千態万様 < sentaiban''you\ ;
+電子工学 < denshikougaku\ ;
+経済状況 < keizaijoukyou\ ;
+社会教育 < shakaikyouiku\ ;
+農耕民族 < noukouminzoku\ ;
+全身全霊 < zenshinzenrei\ ;
+公称資本 < koushoushihon\ ;
+大字片山 < ooazakatayama\ ;
+薬師如来 < yakushinyorai\ ;
+放射能汚染 < houshanouosen\ ;
+電気自動車 < denkijidousha\ ;
+賢所 < kashikodokoro\ ;
+同盟休校 < doumeikyuukou\ ;
+工作室 < kousakushitsu\ ;
+中央計画 < chuuoukeikaku\ ;
+中央集権 < chuuoushuuken\ ;
+三角貿易 < sankakuboueki\ ;
+分析化学 < bunsekikagaku\ ;
+少壮士官 < shousoushikan\ ;
+法的根拠 < houtekikonkyo\ ;
+殺害事件 < satsugaijiken\ ;
+面魂 < tsuradamashii\ ;
+自然増収 < shizenzoushuu\ ;
+良性腫瘍 < ryouseishuyou\ ;
+作劇術 < sakugekijutsu\ ;
+短日月 < tanjitsugetsu\ ;
+車掌室 < shashoushitsu\ ;
+通勤電車 < tsuukindensha\ ;
+少年犯罪 < shounenhanzai\ ;
+水酸化物 < suisankabutsu\ ;
+親戚知己 < shinsekichiki\ ;
+単独決算 < tandokukessan\ ;
+国際情勢 < kokusaijousei\ ;
+街頭演説 < gaitouenzetsu\ ;
+欣喜雀躍 < kinkijakuyaku\ ;
+品種改良 < hinshukairyou\ ;
+公称馬力 < koushoubariki\ ;
+四六時中 < shirokujichuu\ ;
+交通遮断 < koutsuushadan\ ;
+大学紛争 < daigakufunsou\ ;
+財政収支 < zaiseishuushi\ ;
+衆参両院 < shuusanryouin\ ;
+耐火建築 < taikakenchiku\ ;
+視力検査 < shiryokukensa\ ;
+小刀細工 < kogatanazaiku\ ;
+質疑応答 < shitsugioutou\ ;
+捜査当局 < sousatoukyoku\ ;
+診察料 < shinsatsuryou\ ;
+俸給袋 < houkyuubukuro\ ;
+照葉狂言 < terihakyougen\ ;
+出征軍人 < shusseigunjin\ ;
+優生保護法 < yuuseihogohou\ ;
+消失点 < shoushitsuten\ ;
+放射能雲 < houshanougumo\ ;
+社会政策 < shakaiseisaku\ ;
+電極電位 < denkyokuden''i\ ;
+人工透析 < jinkoutouseki\ ;
+複合媒体 < fukugoubaitai\ ;
+住民投票 < juumintouhyou\ ;
+工業地帯 < kougyouchitai\ ;
+呼吸困難 < kokyuukon''nan\ ;
+読書室 < dokushoshitsu\ ;
+養護施設 < yougoshisetsu\ ;
+輸出規制 < yushutsukisei\ ;
+地方事務所 < chihoujimusho\ ;
+戦力組成 < senryokusosei\ ;
+統一見解 < touitsukenkai\ ;
+催眠療法 < saiminryouhou\ ;
+工業製品 < kougyouseihin\ ;
+役人根性 < yakuninkonjou\ ;
+独房監禁 < dokuboukankin\ ;
+宿泊先 < shukuhakusaki\ ;
+導通抵抗 < doutsuuteikou\ ;
+協調主義 < kyouchoushugi\ ;
+会計報告 < kaikeihoukoku\ ;
+台湾海峡 < taiwankaikyou\ ;
+日清戦争 < nisshinsensou\ ;
+宣言発表 < sengenhappyou\ ;
+天体写真 < tentaishashin\ ;
+輸入自由化 < yunyuujiyuuka\ ;
+重量噸数 < juuryoutonsuu\ ;
+識別子 < shikibetsushi\ ;
+南半球 < minamihankyuu\ ;
+明鏡止水 < meikyoushisui\ ;
+年間計画 < nenkankeikaku\ ;
+無利息債務 < murisokusaimu\ ;
+口述筆記 < koujutsuhikki\ ;
+国際通貨 < kokusaitsuuka\ ;
+職員室 < shokuinshitsu\ ;
+硫黄酸化物 < iousankabutsu\ ;
+健康診断 < kenkoushindan\ ;
+桃山時代 < momoyamajidai\ ;
+職場結婚 < shokubakekkon\ ;
+環境問題 < kankyoumondai\ ;
+証人喚問 < shouninkanmon\ ;
+信玄袋 < shingenbukuro\ ;
+攻撃方向 < kougekihoukou\ ;
+競争売買 < kyousoubaibai\ ;
+著作権法 < chosakukenhou\ ;
+国際社会 < kokusaishakai\ ;
+新制高校 < shinseikoukou\ ;
+寄生虫症 < kiseichuushou\ ;
+中折帽子 < nakaoreboushi\ ;
+公開練習 < koukairenshuu\ ;
+経済政策 < keizaiseisaku\ ;
+合成写真 < gouseishashin\ ;
+新進作家 < shinshinsakka\ ;
+恋物語 < koimonogatari\ ;
+酸素供給 < sansokyoukyuu\ ;
+交通公社 < koutsuukousha\ ;
+活殺自在 < kassatsujizai\ ;
+電送写真 < densoushashin\ ;
+全知全能 < zenchizen''nou\ ;
+一粒種 < hitotsubudane\ ;
+国勢調査 < kokuseichousa\ ;
+流通機構 < ryuutsuukikou\ ;
+兵器輸出 < heikiyushutsu\ ;
+天皇崇拝 < ten''nousuuhai\ ;
+保証人要 < hoshounin''you\ ;
+浮遊生物 < fuyuuseibutsu\ ;
+終身保険 < shuushinhoken\ ;
+緑柱石 < ryokuchuuseki\ ;
+懸賞論文 < kenshouronbun\ ;
+道路掃除人 < dourosoujijin\ ;
+市場改革 < shijoukaikaku\ ;
+電力需要 < denryokujuyou\ ;
+臨床尋問 < rinshoujinmon\ ;
+陰極線管 < inkyokusenkan\ ;
+旋光分析 < senkoubunseki\ ;
+化石燃料 < kasekinenryou\ ;
+電信為替 < denshinkawase\ ;
+仏作 < hotokedzukuru\ ;
+懐中電灯 < kaichuudentou\ ;
+才色兼備 < saishokukenbi\ ;
+東南 < higashiminami\ ;
+指導要領 < shidouyouryou\ ;
+郵便年金 < yuubin''nenkin\ ;
+関連商品 < kanrenshouhin\ ;
+限界状況 < genkaijoukyou\ ;
+仁輪加狂言 < niwakakyougen\ ;
+現在完了 < genzaikanryou\ ;
+制約伝搬 < seiyakudenpan\ ;
+丸一週間 < maruisshuukan\ ;
+工業団地 < kougyoudanchi\ ;
+極楽浄土 < gokurakujoudo\ ;
+自自公３党 < jijikousantou\ ;
+気管支肺炎 < kikanshihaien\ ;
+多重債務者 < tajuusaimusha\ ;
+化学分析 < kagakubunseki\ ;
+諮問委員会 < shimon''iinkai\ ;
+同点決勝 < doutenkesshou\ ;
+体外離脱 < taigairidatsu\ ;
+生物兵器 < seibutsuheiki\ ;
+単音節語 < tan''onsetsugo\ ;
+攻撃隊形 < kougekitaikei\ ;
+法人所得 < houjinshotoku\ ;
+大逆事件 < taigyakujiken\ ;
+原始教会 < genshikyoukai\ ;
+価格協定 < kakakukyoutei\ ;
+寓意小説 < guuishousetsu\ ;
+昔気質 < mukashikatagi\ ;
+専門技術 < senmongijutsu\ ;
+拡張可能 < kakuchoukanou\ ;
+俄勉強 < niwakabenkyou\ ;
+急進主義 < kyuushinshugi\ ;
+記念式典 < kinenshikiten\ ;
+競合脱線 < kyougoudassen\ ;
+暑中休暇 < shochuukyuuka\ ;
+繁文縟礼 < hanbunjokurei\ ;
+目標管理 < mokuhyoukanri\ ;
+方向観念 < houkoukan''nen\ ;
+海底電信 < kaiteidenshin\ ;
+業界動向 < gyoukaidoukou\ ;
+必要経費 < hitsuyoukeihi\ ;
+水玉模様 < mizutamamoyou\ ;
+進学率 < shingakuritsu\ ;
+出征家族 < shusseikazoku\ ;
+経常収支 < keijoushuushi\ ;
+地球科学 < chikyuukagaku\ ;
+情報技術 < jouhougijutsu\ ;
+殿様蛙 < tonosamagaeru\ ;
+高高度飛行 < koukoudohikou\ ;
+空中分解 < kuuchuubunkai\ ;
+強制労働 < kyouseiroudou\ ;
+階級意識 < kaikyuuishiki\ ;
+博士論文 < hakushironbun\ ;
+人格形成 < jinkakukeisei\ ;
+絹糸紡績 < kenshibouseki\ ;
+職場闘争 < shokubatousou\ ;
+静脈血 < joumyakuketsu\ ;
+教育学部 < kyouikugakubu\ ;
+変速装置 < hensokusouchi\ ;
+真円真珠 < shin''enshinju\ ;
+国民経済 < kokuminkeizai\ ;
+一筋道 < hitosujimichi\ ;
+内面描写 < naimenbyousha\ ;
+媒体終端 < baitaishuutan\ ;
+心理療法 < shinriryouhou\ ;
+性的関係 < seitekikankei\ ;
+無銭飲食 < musen''inshoku\ ;
+就業率 < shuugyouritsu\ ;
+範疇文法 < hanchuubunpou\ ;
+内緒話 < naishobanashi\ ;
+長期借款 < choukishakkan\ ;
+全体集合 < zentaishuugou\ ;
+右小括弧 < migishoukakko\ ;
+仮想敵国 < kasoutekikoku\ ;
+躁鬱質 < souutsushitsu\ ;
+極楽往生 < gokurakuoujou\ ;
+初等教育 < shotoukyouiku\ ;
+行政命令 < gyouseimeirei\ ;
+対地攻撃 < taichikougeki\ ;
+自然描写 < shizenbyousha\ ;
+金融資本 < kin''yuushihon\ ;
+無能力者 < munouryokusha\ ;
+化学工業 < kagakukougyou\ ;
+行政区画 < gyouseikukaku\ ;
+学習辞典 < gakushuujiten\ ;
+国会議事堂 < kokkaigijidou\ ;
+閨閥政治 < keibatsuseiji\ ;
+二十四節気 < nijuushisekki\ ;
+事業拡充 < jigyoukakujuu\ ;
+農村工業 < nousonkougyou\ ;
+秋雨前線 < akisamezensen\ ;
+無形文化財 < mukeibunkazai\ ;
+共同農場 < kyoudounoujou\ ;
+女権拡張 < jokenkakuchou\ ;
+講習会場 < koushuukaijou\ ;
+汚染物質 < osenbusshitsu\ ;
+状況判断 < joukyouhandan\ ;
+当該官庁 < tougaikanchou\ ;
+仲介貿易 < chuukaiboueki\ ;
+国内市場 < kokunaishijou\ ;
+一枚看板 < ichimaikanban\ ;
+市場自由化 < shijoujiyuuka\ ;
+経営多角化 < keieitakakuka\ ;
+無線通信 < musentsuushin\ ;
+経済大国 < keizaitaikoku\ ;
+主我主義者 < shugashugisha\ ;
+暗号化手法 < angoukashuhou\ ;
+反社会的 < hanshakaiteki\ ;
+一利一害 < ichiriichigai\ ;
+二律背反 < niritsuhaihan\ ;
+復元作業 < fukugensagyou\ ;
+人間爆弾 < ningenbakudan\ ;
+季節労働 < kisetsuroudou\ ;
+陸軍大臣 < rikugundaijin\ ;
+断抵抗角 < danteikoukaku\ ;
+熱効率 < netsukouritsu\ ;
+不見転芸者 < mizutengeisha\ ;
+目的物 < mokutekibutsu\ ;
+通信機関 < tsuushinkikan\ ;
+反発力 < hanpatsuryoku\ ;
+写真凸版 < shashintoppan\ ;
+植物誌 < shokubutsushi\ ;
+化学療法 < kagakuryouhou\ ;
+功利主義者 < kourishugisha\ ;
+綱紀粛正 < koukishukusei\ ;
+税制改革 < zeiseikaikaku\ ;
+調停裁判 < chouteisaiban\ ;
+無罪判決 < muzaihanketsu\ ;
+天牛 < kamikirimushi\ ;
+軍事戦略 < gunjisenryaku\ ;
+警察力 < keisatsuryoku\ ;
+臨床試験 < rinshoushiken\ ;
+防止指針 < boushishishin\ ;
+気象観測 < kishoukansoku\ ;
+舞台生活 < butaiseikatsu\ ;
+大名旅行 < daimyouryokou\ ;
+作業療法 < sagyouryouhou\ ;
+外国為替 < gaikokukawase\ ;
+都立高校 < toritsukoukou\ ;
+形式主義 < keishikishugi\ ;
+化学工学 < kagakukougaku\ ;
+角運動量 < kakuundouryou\ ;
+完全無欠 < kanzenmuketsu\ ;
+政策決定 < seisakukettei\ ;
+貨物室 < kamotsushitsu\ ;
+循環小数 < junkanshousuu\ ;
+大韓民国 < daikanminkoku\ ;
+懐中鏡 < kaichuukagami\ ;
+適用業務 < tekiyougyoumu\ ;
+戦争文学 < sensoubungaku\ ;
+九天直下 < kyuutenchokka\ ;
+淡緑色 < tanryokushoku\ ;
+面従腹背 < menjuufukuhai\ ;
+確保失敗 < kakuhoshippai\ ;
+共通言語 < kyoutsuugengo\ ;
+自動車保険 < jidoushahoken\ ;
+強制処分 < kyouseishobun\ ;
+断崖絶壁 < dangaizeppeki\ ;
+産業社会 < sangyoushakai\ ;
+各種学校 < kakushugakkou\ ;
+分解写真 < bunkaishashin\ ;
+印刷媒体 < insatsubaitai\ ;
+研究所報 < kenkyuushohou\ ;
+乱射乱撃 < ransharangeki\ ;
+特許侵害 < tokkyoshingai\ ;
+定額貯金 < teigakuchokin\ ;
+公衆伝動 < koushuudendou\ ;
+天竺鼠 < tenjikunezumi\ ;
+鉄道馬車 < tetsudoubasha\ ;
+内国為替 < naikokukawase\ ;
+種種様様 < shujusamazama\ ;
+喜色満面 < kishokumanmen\ ;
+弁別素性 < benbetsusosei\ ;
+作戦命令 < sakusenmeirei\ ;
+議長職権 < gichoushokken\ ;
+統率力 < touritsuryoku\ ;
+実録物 < jitsurokumono\ ;
+啓蒙思潮 < keimoushichou\ ;
+公娼全廃 < koushouzenpai\ ;
+対面交通 < taimenkoutsuu\ ;
+自己顕示欲 < jikokenjiyoku\ ;
+密入国 < mitsunyuugoku\ ;
+一問一答 < ichimon''ittou\ ;
+直輸出 < chokuyushutsu\ ;
+無配当保険 < muhaitouhoken\ ;
+電子密度 < denshimitsudo\ ;
+超低価格 < chouteikakaku\ ;
+一括売買 < ikkatsubaibai\ ;
+惚気話 < norokebanashi\ ;
+制約条件 < seiyakujouken\ ;
+休戦会談 < kyuusenkaidan\ ;
+休養室 < kyuuyoushitsu\ ;
+版権侵害 < hankenshingai\ ;
+陳列窓 < chinretsumado\ ;
+百分率 < hyakubunritsu\ ;
+隔離病棟 < kakuribyoutou\ ;
+生鮮料品 < seisenryouhin\ ;
+出血症 < shukketsushou\ ;
+上昇傾向 < joushoukeikou\ ;
+不法入国 < fuhounyuugoku\ ;
+教養学部 < kyouyougakubu\ ;
+高信頼性 < koushinraisei\ ;
+果樹栽培者 < kajusaibaisha\ ;
+家宅捜索 < katakusousaku\ ;
+計画経済 < keikakukeizai\ ;
+三軸試験 < sanjikushiken\ ;
+最終段階 < saishuudankai\ ;
+収入印紙 < shuunyuuinshi\ ;
+半熟練工 < hanjukurenkou\ ;
+写真判定 < shashinhantei\ ;
+経済観念 < keizaikan''nen\ ;
+賃金水準 < chinginsuijun\ ;
+営業収支 < eigyoushuushi\ ;
+三相交流 < sansoukouryuu\ ;
+経営戦略 < keieisenryaku\ ;
+春夏秋冬 < shunkashuutou\ ;
+焦点深度 < shoutenshindo\ ;
+一時所得 < ichijishotoku\ ;
+杉花粉症 < sugikafunshou\ ;
+人民投票 < jinmintouhyou\ ;
+密輸出 < mitsuyushutsu\ ;
+合従連衡 < gasshourenkou\ ;
+烏野豌豆 < karasunoendou\ ;
+無芸大食 < mugeitaishoku\ ;
+国際連合 < kokusairengou\ ;
+判別式 < hanbetsushiki\ ;
+熱交換器 < netsukoukanki\ ;
+宇宙開発 < uchuukaihatsu\ ;
+漢文訓読 < kanbunkundoku\ ;
+空間感覚 < kuukankankaku\ ;
+二人三脚 < nininsankyaku\ ;
+権力主義 < kenryokushugi\ ;
+植物界 < shokubutsukai\ ;
+募集広告 < boshuukoukoku\ ;
+学習理論 < gakushuuriron\ ;
+駐車禁止 < chuushakinshi\ ;
+共同宣言 < kyoudousengen\ ;
+裁判官忌避 < saibankankihi\ ;
+天地神明 < tenchishinmei\ ;
+夢幻 < yumemaboroshi\ ;
+詳細情報 < shousaijouhou\ ;
+牛飲馬食 < gyuuinbashoku\ ;
+非武装地帯 < hibusouchitai\ ;
+金城鉄壁 < kinjouteppeki\ ;
+集中講義 < shuuchuukougi\ ;
+変形虫類 < henkeichuurui\ ;
+公的年金 < koutekinenkin\ ;
+週刊雑誌 < shuukanzasshi\ ;
+紡績工場 < bousekikoujou\ ;
+初等数学 < shotousuugaku\ ;
+残存日数 < zanson''nissuu\ ;
+空気清浄機 < kuukiseijouki\ ;
+国際展開 < kokusaitenkai\ ;
+年功序列 < nenkoujoretsu\ ;
+熱力学 < netsurikigaku\ ;
+商業都市 < shougyoutoshi\ ;
+中途退学 < chuutotaigaku\ ;
+共同会見 < kyoudoukaiken\ ;
+憲法学者 < kenpougakusha\ ;
+一事不再議 < ichijifusaigi\ ;
+創建記念日 < soukenkinenbi\ ;
+普遍妥当性 < fuhendatousei\ ;
+原子爆弾 < genshibakudan\ ;
+原子破壊機 < genshihakaiki\ ;
+登山鉄道 < tozantetsudou\ ;
+新正月 < shinshougatsu\ ;
+物理化学 < butsurikagaku\ ;
+給水制限 < kyuusuiseigen\ ;
+朝鮮戦争 < chousensensou\ ;
+嫌気生物 < kenkiseibutsu\ ;
+選択状態 < sentakujoutai\ ;
+主食物 < shushokubutsu\ ;
+高峰八座 < kouhouhachiza\ ;
+不消化物 < fushoukabutsu\ ;
+法的文書 < houtekibunsho\ ;
+秘密選挙 < himitsusenkyo\ ;
+陳列棚 < chinretsudana\ ;
+新熱帯区 < shin''nettaiku\ ;
+結婚指輪 < kekkon''yubiwa\ ;
+善隣友好 < zenrin''yuukou\ ;
+受取手形 < uketoritegata\ ;
+決算報告 < kessanhoukoku\ ;
+心理学者 < shinrigakusha\ ;
+雑収入 < zatsushuunyuu\ ;
+論理形式 < ronrikeishiki\ ;
+低頭平身 < teitouheishin\ ;
+混合農業 < kongounougyou\ ;
+文芸作品 < bungeisakuhin\ ;
+有閑階級 < yuukankaikyuu\ ;
+友好条約 < yuukoujouyaku\ ;
+則天去私 < sokutenkyoshi\ ;
+写実主義 < shajitsushugi\ ;
+国際市場 < kokusaishijou\ ;
+二重生活 < nijuuseikatsu\ ;
+臨機目標 < rinkimokuhyou\ ;
+商業登記 < shougyoutouki\ ;
+黄色人種 < oushokujinshu\ ;
+周波変調 < shuuhahenchou\ ;
+欠陥商品 < kekkanshouhin\ ;
+従属変数 < juuzokuhensuu\ ;
+既約表現 < kiyakuhyougen\ ;
+話半分 < hanashihanbun\ ;
+不良少年 < furyoushounen\ ;
+測量技師 < sokuryougishi\ ;
+森羅万象 < shinrabanshou\ ;
+産業構造 < sangyoukouzou\ ;
+欧州諸国 < oushuushokoku\ ;
+通勤地獄 < tsuukinjigoku\ ;
+昼間人口 < chuukanjinkou\ ;
+力不足 < chikarabusoku\ ;
+性格判断 < seikakuhandan\ ;
+信頼関係 < shinraikankei\ ;
+就学率 < shuugakuritsu\ ;
+同期通信 < doukitsuushin\ ;
+三重焦点 < sanjuushouten\ ;
+投票総数 < touhyousousuu\ ;
+大幅刷新 < oohabasasshin\ ;
+水上町 < minakamimachi\ ;
+結婚記念日 < kekkonkinenbi\ ;
+大雨注意報 < ooamechuuihou\ ;
+切断患者 < setsudankanja\ ;
+袖手傍観 < shuushuboukan\ ;
+拍手喝采 < hakushukassai\ ;
+作業仮説 < sagyoukasetsu\ ;
+経済成長 < keizaiseichou\ ;
+米東部時間 < beitoubujikan\ ;
+合成宝石 < gouseihouseki\ ;
+結締組織 < ketteisoshiki\ ;
+親切心 < shinsetsushin\ ;
+円錐曲線 < ensuikyokusen\ ;
+聖体拝領 < seitaihairyou\ ;
+庶民金融 < shominkin''yuu\ ;
+体積抵抗 < taisekiteikou\ ;
+協同組合 < kyoudoukumiai\ ;
+先住民族 < senjuuminzoku\ ;
+統一戦線 < touitsusensen\ ;
+同時通訳 < doujitsuuyaku\ ;
+周知徹底 < shuuchitettei\ ;
+艱難辛苦 < kan''nanshinku\ ;
+政党内閣 < seitounaikaku\ ;
+制作室 < seisakushitsu\ ;
+即物的 < sokubutsuteki\ ;
+現地報告 < genchihoukoku\ ;
+懸賞問題 < kenshoumondai\ ;
+劣性遺伝子 < resseiidenshi\ ;
+汲取口 < kumitoriguchi\ ;
+傭船契約 < yousenkeiyaku\ ;
+今上天皇 < kinjouten''nou\ ;
+他覚症状 < takakushoujou\ ;
+欠食児童 < kesshokujidou\ ;
+娯楽番組 < gorakubangumi\ ;
+精神医学 < seishin''igaku\ ;
+内容証明 < naiyoushoumei\ ;
+出港停止 < shukkouteishi\ ;
+夫婦約束 < fuufuyakusoku\ ;
+旅行業者 < ryokougyousha\ ;
+使徒信経 < shitoshinkyou\ ;
+外資導入 < gaishidounyuu\ ;
+無価値資産 < mukachishisan\ ;
+健康保険医 < kenkouhoken''i\ ;
+常任委員会 < jounin''iinkai\ ;
+成人教育 < seijinkyouiku\ ;
+公式主義 < koushikishugi\ ;
+複数業務 < fukusuugyoumu\ ;
+禁欲主義 < kin''yokushugi\ ;
+空襲警報 < kuushuukeihou\ ;
+産業再生 < sangyousaisei\ ;
+賃貸価格 < chintaikakaku\ ;
+戦闘前哨 < sentouzenshou\ ;
+一言一行 < ichigen''ikkou\ ;
+軖 < tsumugikuruma\ ;
+吹奏楽団 < suisougakudan\ ;
+直線距離 < chokusenkyori\ ;
+近親結婚 < kinshinkekkon\ ;
+米英仏蘭 < beieibutsuran\ ;
+自由主義者 < jiyuushugisha\ ;
+短波受信機 < tanpajushinki\ ;
+共同作業 < kyoudousagyou\ ;
+減反政策 < gentanseisaku\ ;
+心理作戦 < shinrisakusen\ ;
+総領娘 < souryoumusume\ ;
+七福神 < shichifukujin\ ;
+心臓移植 < shinzouishoku\ ;
+有限責任 < yuugensekinin\ ;
+組織再編 < soshikisaihen\ ;
+福音教会 < fukuinkyoukai\ ;
+関係副詞 < kankeifukushi\ ;
+史料編纂 < shiryouhensan\ ;
+特別席 < tokubetsuseki\ ;
+猟官運動 < ryoukan''undou\ ;
+肉体労働 < nikutairoudou\ ;
+破壊主義者 < hakaishugisha\ ;
+参照文献 < sanshoubunken\ ;
+音楽監督 < ongakukantoku\ ;
+平身低頭 < heishinteitou\ ;
+共産分子 < kyousanbunshi\ ;
+予約出版 < yoyakushuppan\ ;
+炭水化物 < tansuikabutsu\ ;
+御都合主義 < gotsugoushugi\ ;
+多血質 < taketsushitsu\ ;
+近代文学 < kindaibungaku\ ;
+二十日大根 < hatsukadaikon\ ;
+地方官庁 < chihoukanchou\ ;
+四分五裂 < shibungoretsu\ ;
+経済回復 < keizaikaifuku\ ;
+実存主義 < jitsuzonshugi\ ;
+恒温動物 < kouondoubutsu\ ;
+野菜一皿 < yasaihitosara\ ;
+形式論理 < keishikironri\ ;
+大学浪人 < daigakurounin\ ;
+暫定協定 < zanteikyoutei\ ;
+落下傘部隊 < rakkasanbutai\ ;
+放送大学 < housoudaigaku\ ;
+法律制度 < houritsuseido\ ;
+長距離依存 < choukyoriizon\ ;
+信用金庫 < shin''youkinko\ ;
+有名無実 < yuumeimujitsu\ ;
+終身会員 < shuushinkaiin\ ;
+笑止千万 < shoushisenban\ ;
+文学博士 < bungakuhakase\ ;
+庭先相場 < niwasakisouba\ ;
+消費者側 < shouhishagawa\ ;
+精神構造 < seishinkouzou\ ;
+鉄骨工事 < tekkotsukouji\ ;
+国利民福 < kokuriminpuku\ ;
+軽佻浮薄 < keichoufuhaku\ ;
+沖積平野 < chuusekiheiya\ ;
+酪農製品 < rakunouseihin\ ;
+謝罪広告 < shazaikoukoku\ ;
+富国強兵 < fukokukyouhei\ ;
+外郭団体 < gaikakudantai\ ;
+共同企業 < kyoudoukigyou\ ;
+階級社会 < kaikyuushakai\ ;
+対外政策 < taigaiseisaku\ ;
+精霊信仰 < seireishinkou\ ;
+ＧＢ理論 < ji\ ̄bi\ ̄riron\ ;
+春風駘蕩 < shunpuutaitou\ ;
+死刑執行 < shikeishikkou\ ;
+二者択一 < nishatakuitsu\ ;
+酸性反応 < sanseihan''nou\ ;
+核爆発 < kakubakuhatsu\ ;
+水道料金 < suidouryoukin\ ;
+空気力学 < kuukirikigaku\ ;
+商売気質 < shoubaikatagi\ ;
+記録文学 < kirokubungaku\ ;
+符号変換器 < fugouhenkanki\ ;
+彼方此方 < achirakochira\ ;
+立身出世 < risshinshusse\ ;
+正金銀行 < shoukinginkou\ ;
+共済事業 < kyousaijigyou\ ;
+先行技術 < senkougijutsu\ ;
+図書目録 < toshomokuroku\ ;
+証拠隠滅 < shoukoinmetsu\ ;
+送金小切手 < soukinkogitte\ ;
+競争関係 < kyousoukankei\ ;
+得票率 < tokuhyouritsu\ ;
+表彰式 < hyoushoushiki\ ;
+入学式 < nyuugakushiki\ ;
+事前検閲 < jizenken''etsu\ ;
+行政処分 < gyouseishobun\ ;
+全面広告 < zenmenkoukoku\ ;
+糎 < senchimeitoru\ ;
+国務長官 < kokumuchoukan\ ;
+粨 < hekutomeetoru\ ;
+精神病院 < seishinbyouin\ ;
+四十九日 < shijuukunichi\ ;
+杓子定規 < shakushijougi\ ;
+可塑物質 < kasobusshitsu\ ;
+灰白質 < kaihakushitsu\ ;
+半農半漁 < han''nouhangyo\ ;
+食用油 < shokuyouabura\ ;
+職業的 < shokugyouteki\ ;
+食生活 < shokuseikatsu\ ;
+暴飲暴食 < bouinboushoku\ ;
+研究分野 < kenkyuubun''ya\ ;
+人口密度 < jinkoumitsudo\ ;
+人身売買 < jinshinbaibai\ ;
+殺人未遂 < satsujinmisui\ ;
+丸一月 < maruhitotsuki\ ;
+足利時代 < ashikagajidai\ ;
+弾着距離 < danchakukyori\ ;
+職業病 < shokugyoubyou\ ;
+動物検査 < doubutsukensa\ ;
+薬餌療法 < yakujiryouhou\ ;
+人間国宝 < ningenkokuhou\ ;
+丸一日 < maruichinichi\ ;
+緊要地形 < kin''youchikei\ ;
+市場成長 < shijouseichou\ ;
+指名投票 < shimeitouhyou\ ;
+呉越同舟 < goetsudoushuu\ ;
+宅地造成 < takuchizousei\ ;
+精神労働 < seishinroudou\ ;
+家族計画 < kazokukeikaku\ ;
+開口一番 < kaikouichiban\ ;
+直系卑属 < chokkeihizoku\ ;
+割賦方式 < kappuhoushiki\ ;
+毒物学 < dokubutsugaku\ ;
+勤労大衆 < kinroutaishuu\ ;
+未収入金 < mishuunyuukin\ ;
+風俗営業 < fuuzokueigyou\ ;
+民俗音楽 < minzokuongaku\ ;
+海水浴場 < kaisuiyokujou\ ;
+連合作戦 < rengousakusen\ ;
+両蓋時計 < ryoubutadokei\ ;
+主客転倒 < shukakutentou\ ;
+就職先 < shuushokusaki\ ;
+損益勘定 < son''ekikanjou\ ;
+動力降下 < douryokukouka\ ;
+三角闘争 < sankakutousou\ ;
+退学処分 < taigakushobun\ ;
+実験材料 < jikkenzairyou\ ;
+口約束 < kuchiyakusoku\ ;
+対戦車火器 < taisenshakaki\ ;
+弗化水素酸 < fukkasuisosan\ ;
+重要産業 < juuyousangyou\ ;
+液体燃料 < ekitainenryou\ ;
+伝道集会 < dendoushuukai\ ;
+八面六臂 < hachimenroppi\ ;
+実力者 < jitsuryokusha\ ;
+才気煥発 < saikikanpatsu\ ;
+感情表現 < kanjouhyougen\ ;
+湧出量 < yuushutsuryou\ ;
+人種差別 < jinshusabetsu\ ;
+英国発音 < eikokuhatsuon\ ;
+無限数列 < mugensuuretsu\ ;
+熟慮断行 < jukuryodankou\ ;
+筒井筒 < tsutsuidzutsu\ ;
+直交座標 < chokkouzahyou\ ;
+北太平洋 < kitataiheiyou\ ;
+男声合唱 < danseigasshou\ ;
+胃腸病学 < ichoubyougaku\ ;
+三角関係 < sankakukankei\ ;
+相補性原理 < souhoseigenri\ ;
+蒸気機関車 < joukikikansha\ ;
+単独会見 < tandokukaiken\ ;
+会堂司 < kaidoudzukasa\ ;
+間歇熱 < kanketsunetsu\ ;
+財産相続 < zaisansouzoku\ ;
+上智大学 < jouchidaigaku\ ;
+文化事業部 < bunkajigyoubu\ ;
+無記名社債 < mukimeishasai\ ;
+僧庵生活 < souanseikatsu\ ;
+法律用語 < houritsuyougo\ ;
+雌雄選択 < shiyuusentaku\ ;
+百花繚乱 < hyakkaryouran\ ;
+音楽療法 < ongakuryouhou\ ;
+住民登録 < juumintouroku\ ;
+断層写真 < dansoushashin\ ;
+占領地帯 < senryouchitai\ ;
+薬品会社 < yakuhingaisha\ ;
+出口調査 < deguchichousa\ ;
+合同慰霊祭 < goudouireisai\ ;
+能動免疫 < noudoumen''eki\ ;
+在留邦人 < zairyuuhoujin\ ;
+麦藁細工 < mugiwarasaiku\ ;
+哲学的 < tetsugakuteki\ ;
+工芸美術 < kougeibijutsu\ ;
+読唇術 < dokushinjutsu\ ;
+航空攻撃 < koukuukougeki\ ;
+裸電球 < hadakadenkyuu\ ;
+重量選手 < juuryousenshu\ ;
+赤立羽蝶 < akatatehachou\ ;
+火災報知機 < kasaihouchiki\ ;
+蛋白質 < tanpakushitsu\ ;
+愛鳥週間 < aichoushuukan\ ;
+工業化学 < kougyoukagaku\ ;
+技術提携 < gijutsuteikei\ ;
+中性子星 < chuuseishisei\ ;
+排泄物 < haisetsubutsu\ ;
+食肉目 < shokunikumoku\ ;
+公共事業 < koukyoujigyou\ ;
+上越本線 < jouetsuhonsen\ ;
+活動力 < katsudouryoku\ ;
+無償契約 < mushoukeiyaku\ ;
+電波探知機 < denpatanchiki\ ;
+閃光電球 < senkoudenkyuu\ ;
+国籍言語 < kokusekigengo\ ;
+定温動物 < teiondoubutsu\ ;
+空前絶後 < kuuzenzetsugo\ ;
+侵略的 < shinryakuteki\ ;
+武力外交 < buryokugaikou\ ;
+凝集力 < gyoushuuryoku\ ;
+戸籍抄本 < kosekishouhon\ ;
+朝鮮半島 < chousenhantou\ ;
+可変抵抗器 < kahenteikouki\ ;
+非常召集 < hijoushoushuu\ ;
+全般前哨 < zenpanzenshou\ ;
+大乗仏教 < daijoubukkyou\ ;
+分析試験 < bunsekishiken\ ;
+公務員試験 < koumuinshiken\ ;
+幽霊屋敷 < yuureiyashiki\ ;
+有産階級 < yuusankaikyuu\ ;
+権力政治 < kenryokuseiji\ ;
+脅迫電話 < kyouhakudenwa\ ;
+船荷証券 < funanishouken\ ;
+手旗信号 < tebatashingou\ ;
+栄養失調 < eiyoushitchou\ ;
+作況指数 < sakkyoushisuu\ ;
+相互通信 < sougotsuushin\ ;
+表層雪崩 < hyousounadare\ ;
+災害対策 < saigaitaisaku\ ;
+事実調査 < jijitsuchousa\ ;
+日経新聞 < nikkeishinbun\ ;
+中間選挙 < chuukansenkyo\ ;
+市長選挙 < shichousenkyo\ ;
+沈降海岸 < chinkoukaigan\ ;
+獅子頭 < shishigashira\ ;
+宇宙飛行士 < uchuuhikoushi\ ;
+社会福祉 < shakaifukushi\ ;
+論功行賞 < ronkoukoushou\ ;
+実践躬行 < jissenkyuukou\ ;
+観察力 < kansatsuryoku\ ;
+正副二通 < seifukunitsuu\ ;
+交感神経 < koukanshinkei\ ;
+消費革命 < shouhikakumei\ ;
+脱力感 < datsuryokukan\ ;
+専任講師 < sen''ninkoushi\ ;
+支出額 < shishutsugaku\ ;
+大量生産 < tairyouseisan\ ;
+最高機密 < saikoukimitsu\ ;
+管弦楽法 < kangengakuhou\ ;
+新品同様 < shinpindouyou\ ;
+大虐殺 < daigyakusatsu\ ;
+前渡金 < maewatashikin\ ;
+看護婦学院 < kangofugakuin\ ;
+備荒貯蓄 < bikouchochiku\ ;
+薄志弱行 < hakushijakkou\ ;
+勤労階級 < kinroukaikyuu\ ;
+乳白色 < nyuuhakushoku\ ;
+日印関係 < nichiinkankei\ ;
+終業式 < shuugyoushiki\ ;
+長期計画 < choukikeikaku\ ;
+爆発的 < bakuhatsuteki\ ;
+不時着陸 < fujichakuriku\ ;
+排泄器官 < haisetsukikan\ ;
+英文解釈 < eibunkaishaku\ ;
+免責条項 < mensekijoukou\ ;
+鉄道線路 < tetsudousenro\ ;
+十字軍騎士 < juujigunkishi\ ;
+攻撃態勢 < kougekitaisei\ ;
+定期昇給 < teikishoukyuu\ ;
+記述文法 < kijutsubunpou\ ;
+臣籍降下 < shinsekikouka\ ;
+炭酸飲料 < tansan''inryou\ ;
+市場拡大 < shijoukakudai\ ;
+精密機械 < seimitsukikai\ ;
+無機高分子 < mukikoubunshi\ ;
+機動警察 < kidoukeisatsu\ ;
+清元節 < kiyomotobushi\ ;
+年間収益 < nenkanshuueki\ ;
+仲裁裁定 < chuusaisaitei\ ;
+雷親父 < kaminarioyaji\ ;
+偵察要員 < teisatsuyouin\ ;
+神経質 < shinkeishitsu\ ;
+文藝春秋 < bungeishunjuu\ ;
+人形芝居 < ningyoushibai\ ;
+水中眼鏡 < suichuumegane\ ;
+公序良俗 < koujoryouzoku\ ;
+接着力 < setchakuryoku\ ;
+五月幟 < satsukinobori\ ;
+婚前交渉 < konzenkoushou\ ;
+太陽黒点 < taiyoukokuten\ ;
+上御一人 < kamigoichinin\ ;
+主要工業 < shuyoukougyou\ ;
+下等動物 < katoudoubutsu\ ;
+逆輸出 < gyakuyushutsu\ ;
+的中率 < tekichuuritsu\ ;
+建設費 < kensetsuhiyou\ ;
+臥薪嘗胆 < gashinshoutan\ ;
+指揮所演習 < shikijoenshuu\ ;
+診療支援 < shinryoushien\ ;
+転地療養 < tenchiryouyou\ ;
+万能選手 < ban''nousenshu\ ;
+教会音楽 < kyoukaiongaku\ ;
+千載一遇 < senzaiichiguu\ ;
+屈折率 < kussetsuritsu\ ;
+売買契約 < baibaikeiyaku\ ;
+住宅地帯 < juutakuchitai\ ;
+減速装置 < gensokusouchi\ ;
+住宅問題 < juutakumondai\ ;
+船長室 < senchoushitsu\ ;
+免疫血清 < men''ekikessei\ ;
+核反応炉 < kakuhan''nouro\ ;
+主教室 < shukyoushitsu\ ;
+放射線学 < houshasengaku\ ;
+流通経路 < ryuutsuukeiro\ ;
+二酸化窒素 < nisankachisso\ ;
+尋常一様 < jinjouichiyou\ ;
+国有財産 < kokuyuuzaisan\ ;
+市民階級 < shiminkaikyuu\ ;
+言語知識 < gengochishiki\ ;
+公共放送 < koukyouhousou\ ;
+室内楽 < shitsunaigaku\ ;
+斑状組織 < hanjousoshiki\ ;
+人情話 < ninjoubanashi\ ;
+重爆撃機 < juubakugekiki\ ;
+婚外交渉 < kongaikoushou\ ;
+仲裁裁判 < chuusaisaiban\ ;
+侯爵夫人 < koushakufujin\ ;
+濃緑色 < nouryokushoku\ ;
+有色野菜 < yuushokuyasai\ ;
+集団訴訟 < shuudansoshou\ ;
+一次産業 < ichijisangyou\ ;
+練習不足 < renshuubusoku\ ;
+商船学校 < shousengakkou\ ;
+麦藁蜻蛉 < mugiwaratonbo\ ;
+自動車電話 < jidoushadenwa\ ;
+有限集合 < yuugenshuugou\ ;
+追加料金 < tsuikaryoukin\ ;
+Π中間子 < paichuukanshi\ ;
+遠隔教育 < enkakukyouiku\ ;
+脳脊髄液 < nousekizuieki\ ;
+情報可視化 < jouhoukashika\ ;
+東西南北 < touzainanboku\ ;
+許容線量 < kyoyousenryou\ ;
+正札値段 < shoufudanedan\ ;
+応接室 < ousetsushitsu\ ;
+差別関税 < sabetsukanzei\ ;
+中等学校 < chuutougakkou\ ;
+管弦楽団 < kangengakudan\ ;
+侵略国 < shinryakukoku\ ;
+寄生生物 < kiseiseibutsu\ ;
+主権回復 < shukenkaifuku\ ;
+両部神道 < ryoubushintou\ ;
+侍気質 < samuraikatagi\ ;
+申込書 < moushikomisho\ ;
+絹布一巻 < kenpuhitomaki\ ;
+過圧密比 < kaatsumitsuhi\ ;
+摂氏２０度 < sesshinijuudo\ ;
+自然選択 < shizensentaku\ ;
+直説法 < chokusetsuhou\ ;
+下町風 < shitamachifuu\ ;
+反応速度 < han''nousokudo\ ;
+小型赤家蚊 < kogataakaieka\ ;
+偵察衛星 < teisatsueisei\ ;
+食中毒 < shokuchuudoku\ ;
+正副議長 < seifukugichou\ ;
+産出高 < sanshutsudaka\ ;
+神前結婚 < shinzenkekkon\ ;
+法的手段 < houtekishudan\ ;
+作業領域 < sagyouryouiki\ ;
+年金証書 < nenkinshousho\ ;
+交通妨害 < koutsuubougai\ ;
+町村合併 < chousongappei\ ;
+教会旋法 < kyoukaisenpou\ ;
+幕藩体制 < bakuhantaisei\ ;
+第一印象 < daiichiinshou\ ;
+真空包装 < shinkuuhousou\ ;
+監査証跡 < kansashouseki\ ;
+誘導電流 < yuudoudenryuu\ ;
+復旧作業 < fukkyuusagyou\ ;
+供出米 < kyoushutsumai\ ;
+損害賠償 < songaibaishou\ ;
+想像妊娠 < souzouninshin\ ;
+虚心坦懐 < kyoshintankai\ ;
+耐震構造 < taishinkouzou\ ;
+有限級数 < yuugenkyuusuu\ ;
+増設率 < zousetsuritsu\ ;
+国土計画 < kokudokeikaku\ ;
+生存競争 < seizonkyousou\ ;
+結婚披露宴 < kekkonhirouen\ ;
+市民革命 < shiminkakumei\ ;
+圧力鍋 < atsuryokunabe\ ;
+大統領選 < daitouryousen\ ;
+補習教育 < hoshuukyouiku\ ;
+司令長官 < shireichoukan\ ;
+賃金体系 < chingintaikei\ ;
+海上自衛隊 < kaijoujieitai\ ;
+全人教育 < zenjinkyouiku\ ;
+官房長官 < kanbouchoukan\ ;
+企業秘密 < kigyouhimitsu\ ;
+殺人事件 < satsujinjiken\ ;
+団栗眼 < dongurimanako\ ;
+圧力釜 < atsuryokugama\ ;
+凶悪犯罪 < kyouakuhanzai\ ;
+天然資源 < ten''nenshigen\ ;
+百姓一揆 < hyakushouikki\ ;
+原案委員会 < gen''an''iinkai\ ;
+気密室 < kimitsushitsu\ ;
+総合大学 < sougoudaigaku\ ;
+仏頂尊勝 < buchousonshou\ ;
+千差万別 < sensabanbetsu\ ;
+選手権試合 < senshukenjiai\ ;
+網状組織 < moujousoshiki\ ;
+第一部長 < daiichibuchou\ ;
+準準決勝 < junjunkesshou\ ;
+大和民族 < yamatominzoku\ ;
+応接係 < ousetsugakari\ ;
+地殻変動 < chikakuhendou\ ;
+財政改革 < zaiseikaikaku\ ;
+共同計算 < kyoudoukeisan\ ;
+女房詞 < nyouboukotoba\ ;
+写真電送 < shashindensou\ ;
+分列式 < bunretsushiki\ ;
+不良診断 < furyoushindan\ ;
+水産大学 < suisandaigaku\ ;
+単式火山 < tanshikikazan\ ;
+一分一厘 < ichibuichirin\ ;
+実地検証 < jitchikenshou\ ;
+北清事変 < hokushinjihen\ ;
+人面獣心 < ninmenjuushin\ ;
+親任式 < shin''ninshiki\ ;
+計画段階 < keikakudankai\ ;
+生活力 < seikatsuryoku\ ;
+社員食堂 < shainshokudou\ ;
+郵便料金 < yuubinryoukin\ ;
+五十三次 < gojuusantsugi\ ;
+優勝劣敗 < yuushoureppai\ ;
+快速列車 < kaisokuressha\ ;
+難民条約 < nanminjouyaku\ ;
+国際放送 < kokusaihousou\ ;
+六十余州 < rokujuuyoshuu\ ;
+急行列車 < kyuukouressha\ ;
+日和見主義 < hiyorimishugi\ ;
+森林地帯 < shinrinchitai\ ;
+鎖国政策 < sakokuseisaku\ ;
+具象美術 < gushoubijutsu\ ;
+懐石料理 < kaisekiryouri\ ;
+簡易食堂 < kan''ishokudou\ ;
+暗黒大陸 < ankokutairiku\ ;
+駅長室 < ekichoushitsu\ ;
+反動革命 < handoukakumei\ ;
+六根清浄 < rokkonshoujou\ ;
+商業主義 < shougyoushugi\ ;
+仮装舞踏会 < kasoubutoukai\ ;
+信頼醸成 < shinraijousei\ ;
+共同声明 < kyoudouseimei\ ;
+遮光器土偶 < shakoukidoguu\ ;
+割引切符 < waribikikippu\ ;
+下水処理場 < gesuishorijou\ ;
+冷却期間 < reikyakukikan\ ;
+恙虫 < tsutsugamushi\ ;
+九死一生 < kyuushiisshou\ ;
+中華民国 < chuukaminkoku\ ;
+合理主義者 < gourishugisha\ ;
+拡声装置 < kakuseisouchi\ ;
+道路建設 < dourokensetsu\ ;
+人造宝石 < jinzouhouseki\ ;
+輸出保険 < yushutsuhoken\ ;
+必修科目 < hisshuukamoku\ ;
+給与所得 < kyuuyoshotoku\ ;
+歴史学派 < rekishigakuha\ ;
+等差数列 < tousasuuretsu\ ;
+君子豹変 < kunshihyouhen\ ;
+下表参照 < kahyousanshou\ ;
+勢力範囲 < seiryokuhan''i\ ;
+通貨政策 < tsuukaseisaku\ ;
+独占企業 < dokusenkigyou\ ;
+特権階級 < tokkenkaikyuu\ ;
+正規曲線 < seikikyokusen\ ;
+傍聴無料 < bouchoumuryou\ ;
+産業資本 < sangyoushihon\ ;
+楽器演奏者 < gakkiensousha\ ;
+立石電機 < tateishidenki\ ;
+夜間中学 < yakanchuugaku\ ;
+貿易摩擦 < bouekimasatsu\ ;
+年輪史学 < nenrinshigaku\ ;
+家付娘 < ietsukimusume\ ;
+機械翻訳 < kikaihon''yaku\ ;
+金科玉条 < kinkagyokujou\ ;
+民間療法 < minkanryouhou\ ;
+情況証拠 < joukyoushouko\ ;
+古典主義者 < kotenshugisha\ ;
+心悸亢進 < shinkikoushin\ ;
+国土地理院 < kokudochiriin\ ;
+定性分析 < teiseibunseki\ ;
+市街化区域 < shigaikakuiki\ ;
+特許技術 < tokkyogijutsu\ ;
+報道写真 < houdoushashin\ ;
+最低賃金 < saiteichingin\ ;
+百日草 < hyakunichisou\ ;
+瞬間電断 < shunkandendan\ ;
+年頭教書 < nentoukyousho\ ;
+東洋段通 < touyoudantsuu\ ;
+独占資本 < dokusenshihon\ ;
+東方教会 < touhoukyoukai\ ;
+電気機関車 < denkikikansha\ ;
+自覚症状 < jikakushoujou\ ;
+天体観測 < tentaikansoku\ ;
+群集行動 < gunshuukoudou\ ;
+衆人環視 < shuujinkanshi\ ;
+迷走神経 < meisoushinkei\ ;
+戦略兵器 < senryakuheiki\ ;
+先制攻撃 < senseikougeki\ ;
+有給休暇 < yuukyuukyuuka\ ;
+見学旅行 < kengakuryokou\ ;
+国内経済 < kokunaikeizai\ ;
+対空射撃 < taikuushageki\ ;
+比較対照 < hikakutaishou\ ;
+市中銀行 < shichuuginkou\ ;
+定点観測 < teitenkansoku\ ;
+促成栽培 < sokuseisaibai\ ;
+両三日 < ryousan''nichi\ ;
+賃金格差 < chinginkakusa\ ;
+支配階級 < shihaikaikyuu\ ;
+二重露出 < nijuuroshutsu\ ;
+動脈硬化 < doumyakukouka\ ;
+隣接部隊 < rinsetsubutai\ ;
+建設機械 < kensetsukikai\ ;
+上層階級 < jousoukaikyuu\ ;
+三拝九拝 < sanpaikyuuhai\ ;
+開校記念日 < kaikoukinenbi\ ;
+不可知論者 < fukachironsha\ ;
+旗行列 < hatagyouretsu\ ;
+特殊法人 < tokushuhoujin\ ;
+士魂商才 < shikonshousai\ ;
+傷病捕虜 < shoubyouhoryo\ ;
+無性生殖 < museiseishoku\ ;
+眉唾物 < mayutsubamono\ ;
+財政政策 < zaiseiseisaku\ ;
+陸上競技 < rikujoukyougi\ ;
+博覧強記 < hakurankyouki\ ;
+人権侵害 < jinkenshingai\ ;
+総領息子 < souryoumusuko\ ;
+進行係 < shinkougakari\ ;
+菜食主義 < saishokushugi\ ;
+無記名債権 < mukimeisaiken\ ;
+赤外発散 < sekigaihassan\ ;
+衛星通信 < eiseitsuushin\ ;
+人員削減 < jin''insakugen\ ;
+動植物 < doushokubutsu\ ;
+率先躬行 < sossenkyuukou\ ;
+免税所得 < menzeishotoku\ ;
+防縮加工 < boushukukakou\ ;
+複式簿記 < fukushikiboki\ ;
+責任分担 < sekininbuntan\ ;
+武力行使 < buryokukoushi\ ;
+番組編成 < bangumihensei\ ;
+全波受信機 < zenpajushinki\ ;
+必要物 < hitsuyoubutsu\ ;
+休息時間 < kyuusokujikan\ ;
+三軸室 < sanjikushitsu\ ;
+二重関節 < nijuukansetsu\ ;
+待合室 < machiaishitsu\ ;
+博物学 < hakubutsugaku\ ;
+観光産業 < kankousangyou\ ;
+結紮術 < kessatsujutsu\ ;
+博引旁証 < hakuinboushou\ ;
+混入物 < kon''nyuubutsu\ ;
+共販会社 < kyouhangaisha\ ;
+揚陸艦艇 < yourikukantei\ ;
+公害対策 < kougaitaisaku\ ;
+陽動作戦 < youdousakusen\ ;
+平和主義者 < heiwashugisha\ ;
+誘拐犯人 < yuukaihan''nin\ ;
+内臓疾患 < naizoushikkan\ ;
+修士論文 < shuushironbun\ ;
+高等教育 < koutoukyouiku\ ;
+測量機械 < sokuryoukikai\ ;
+霊感商法 < reikanshouhou\ ;
+呪物崇拝 < jubutsusuuhai\ ;
+文人墨客 < bunjinbokkaku\ ;
+承知之助 < shouchinosuke\ ;
+越年草本 < etsunensouhon\ ;
+青天井予算 < aotenjouyosan\ ;
+状況意味論 < joukyouimiron\ ;
+通勤列車 < tsuukinressha\ ;
+出席率 < shussekiritsu\ ;
+精進料理 < shoujinryouri\ ;
+主力部隊 < shuryokubutai\ ;
+漢字文化圏 < kanjibunkaken\ ;
+郷土文学 < kyoudobungaku\ ;
+直接税 < chokusetsuzei\ ;
+失業者 < shitsugyousha\ ;
+歯科技工士 < shikagikoushi\ ;
+期末試験 < kimatsushiken\ ;
+連邦首相 < renpoushushou\ ;
+情報工学 < jouhoukougaku\ ;
+牧畜業 < bokuchikugyou\ ;
+七分三分 < shichibusanbu\ ;
+参考資料 < sankoushiryou\ ;
+海上輸送路 < kaijouyusouro\ ;
+独断専行 < dokudansenkou\ ;
+入学考査 < nyuugakukousa\ ;
+遭難信号 < sounanshingou\ ;
+流動資産 < ryuudoushisan\ ;
+構築物 < kouchikubutsu\ ;
+下四半期 < shimoshihanki\ ;
+選択科目 < sentakukamoku\ ;
+設立者 < setsuritsusha\ ;
+情報検索 < jouhoukensaku\ ;
+頂上会談 < choujoukaidan\ ;
+共済組合 < kyousaikumiai\ ;
+参考書目 < sankoushomoku\ ;
+治安警察 < chiankeisatsu\ ;
+興業銀行 < kougyouginkou\ ;
+調停委員会 < chouteiiinkai\ ;
+行政書士 < gyouseishoshi\ ;
+関連項目 < kanrenkoumoku\ ;
+難行苦行 < nangyoukugyou\ ;
+行方不明者 < yukuefumeisha\ ;
+預金通帳 < yokintsuuchou\ ;
+網膜剥離 < moumakuhakuri\ ;
+輸出検査 < yushutsukensa\ ;
+私共 < watakushidomo\ ;
+指定銘柄 < shiteimeigara\ ;
+酒池肉林 < shuchinikurin\ ;
+優等賞状 < yuutoushoujou\ ;
+黄金分割 < ougonbunkatsu\ ;
+修繕工場 < shuuzenkoujou\ ;
+足長蜂 < ashinagabachi\ ;
+二者選一 < nishasen''itsu\ ;
+粘液質 < nen''ekishitsu\ ;
+私事 < watakushigoto\ ;
+菌類学者 < kinruigakusha\ ;
+外国郵便 < gaikokuyuubin\ ;
+交通地獄 < koutsuujigoku\ ;
+集団結婚 < shuudankekkon\ ;
+愛玩動物 < aigandoubutsu\ ;
+間接話法 < kansetsuwahou\ ;
+学生部長 < gakuseibuchou\ ;
+雲形定規 < kumogatajougi\ ;
+個人的意見 < kojintekiiken\ ;
+屋外広告 < okugaikoukoku\ ;
+亡命文学 < boumeibungaku\ ;
+北国赤海老 < hokkokuakaebi\ ;
+連続関数 < renzokukansuu\ ;
+幽霊話 < yuureibanashi\ ;
+筆跡鑑定 < hissekikantei\ ;
+同質的 < doushitsuteki\ ;
+廃物利用 < haibutsuriyou\ ;
+車両会社 < sharyougaisha\ ;
+麻薬常習 < mayakujoushuu\ ;
+不得要領 < futokuyouryou\ ;
+山岳地帯 < sangakuchitai\ ;
+問題領域 < mondairyouiki\ ;
+執着心 < shuuchakushin\ ;
+個別販売 < kobetsuhanbai\ ;
+平衡感覚 < heikoukankaku\ ;
+内国郵便 < naikokuyuubin\ ;
+力関係 < chikarakankei\ ;
+報道番組 < houdoubangumi\ ;
+紙上計画 < shijoukeikaku\ ;
+二重国籍 < nijuukokuseki\ ;
+行政訴訟 < gyouseisoshou\ ;
+絶縁抵抗 < zetsuenteikou\ ;
+匿名批評 < tokumeihihyou\ ;
+長期国債 < choukikokusai\ ;
+光線療法 < kousenryouhou\ ;
+流動資本 < ryuudoushihon\ ;
+証券市場 < shoukenshijou\ ;
+烏芻沙摩妙王 < ususamamyouou\ ;
+建設工事 < kensetsukouji\ ;
+変態性欲 < hentaiseiyoku\ ;
+空中細菌 < kuuchuusaikin\ ;
+代金引換 < daikinhikikae\ ;
+茶番狂言 < chabankyougen\ ;
+交通規則 < koutsuukisoku\ ;
+物質的 < busshitsuteki\ ;
+現物相場 < genbutsusouba\ ;
+束縛理論 < sokubakuriron\ ;
+公正証書 < kouseishousho\ ;
+同盟怠業 < doumeitaigyou\ ;
+行動方針 < koudouhoushin\ ;
+適正価格 < tekiseikakaku\ ;
+人種改良 < jinshukairyou\ ;
+使途不明金 < shitofumeikin\ ;
+半流動体 < hanryuudoutai\ ;
+普仏戦争 < fufutsusensou\ ;
+蒸発熱 < jouhatsunetsu\ ;
+二重結合 < nijuuketsugou\ ;
+免責特権 < mensekitokken\ ;
+懲戒処分 < choukaishobun\ ;
+不心得者 < fukokoroemono\ ;
+豪放磊落 < gouhourairaku\ ;
+艦砲射撃 < kanpoushageki\ ;
+関数解析 < kansuukaiseki\ ;
+民主化運動 < minshukaundou\ ;
+天気相談所 < tenkisoudanjo\ ;
+通信講座 < tsuushinkouza\ ;
+外貨獲得 < gaikakakutoku\ ;
+参加希望者 < sankakibousha\ ;
+懐疑主義者 < kaigishugisha\ ;
+電気溶接 < denkiyousetsu\ ;
+吮癰舐痔 < sen''youshiji\ ;
+労働条件 < roudoujouken\ ;
+外国航路 < gaikokukouro\ ;
+伝送速度 < densousokudo\ ;
+一本調子 < ippondjoushi\ ;
+墜落事故 < tsuirakujiko\ ;
+薩摩閥 < satsumabatsu\ ;
+視聴率 < shichouritsu\ ;
+線香花火 < senkouhanabi\ ;
+東京都政 < toukyoutosei\ ;
+軍事産業 < gunjisangyou\ ;
+代理牧師 < dairibokushi\ ;
+三十三所 < sanjuusansho\ ;
+一次線輪 < ichijisenrin\ ;
+畳水練 < tatamisuiren\ ;
+価格変動 < kakakuhendou\ ;
+悠悠自適 < yuuyuujiteki\ ;
+山紫水明 < sanshisuimei\ ;
+幕僚長 < bakuryouchou\ ;
+空輸貨物 < kuuyukamotsu\ ;
+観光資源 < kankoushigen\ ;
+視覚言語 < shikakugengo\ ;
+麻薬常用 < mayakujouyou\ ;
+日朝辞典 < nitchoujiten\ ;
+店頭債券 < tentousaiken\ ;
+版権所有 < hankenshoyuu\ ;
+一泊行軍 < ippakukougun\ ;
+青空市場 < aozorashijou\ ;
+開票結果 < kaihyoukekka\ ;
+単独講和 < tandokukouwa\ ;
+近代科学 < kindaikagaku\ ;
+無神論者 < mushinronsha\ ;
+市議会議員 < shigikaigiin\ ;
+現実的 < genjitsuteki\ ;
+画一的 < kakuitsuteki\ ;
+有形財産 < yuukeizaisan\ ;
+河岸段丘 < kagandankyuu\ ;
+太陽光線 < taiyoukousen\ ;
+卸酒販 < oroshishuhan\ ;
+億万長者 < okumanchouja\ ;
+化粧石鹸 < keshousekken\ ;
+言語療法 < gengoryouhou\ ;
+安定成長 < anteiseichou\ ;
+神権政治 < shinkenseiji\ ;
+親日家 < shin''nichika\ ;
+至上命令 < shijoumeirei\ ;
+内出血 < naishukketsu\ ;
+中央委員会 < chuuouiinkai\ ;
+潤筆料 < junpitsuryou\ ;
+音楽美学 < ongakubigaku\ ;
+労働大臣 < roudoudaijin\ ;
+田舎侍 < inakazamurai\ ;
+降格人事 < koukakujinji\ ;
+金釘流 < kanakugiryuu\ ;
+窒素肥料 < chissohiryou\ ;
+軍部独裁 < gunbudokusai\ ;
+公務疾病 < koumushippei\ ;
+花火大会 < hanabitaikai\ ;
+創作力 < sousakuryoku\ ;
+即戦力 < sokusenryoku\ ;
+行雲流水 < kouunryuusui\ ;
+反対訊問 < hantaijinmon\ ;
+方向転換 < houkoutenkan\ ;
+無線技術 < musengijutsu\ ;
+艮下艮上 < gonkagonshou\ ;
+括約筋 < katsuyakukin\ ;
+未来完了 < miraikanryou\ ;
+前進部隊 < zenshinbutai\ ;
+既約分数 < kiyakubunsuu\ ;
+説得力 < settokuryoku\ ;
+公営住宅 < koueijuutaku\ ;
+監査報告 < kansahoukoku\ ;
+鐘撞堂 < kanetsukidou\ ;
+月経周期 < gekkeishuuki\ ;
+科学雑誌 < kagakuzasshi\ ;
+通貨統合 < tsuukatougou\ ;
+対地速度 < taichisokudo\ ;
+官僚主義 < kanryoushugi\ ;
+旧形式 < kyuukeishiki\ ;
+黄玉石 < kougyokuseki\ ;
+御調子者 < ochoushimono\ ;
+実験室 < jikkenshitsu\ ;
+二足三文 < nisokusanmon\ ;
+酸性肥料 < sanseihiryou\ ;
+言文一致 < genbun''itchi\ ;
+密漁者 < mitsuryousha\ ;
+共同管理 < kyoudoukanri\ ;
+胃酸過多症 < isankatashou\ ;
+海外旅行 < kaigairyokou\ ;
+不審尋問 < fushinjinmon\ ;
+責任転嫁 < sekinintenka\ ;
+長期手形 < choukitegata\ ;
+潮汐表 < chousekihyou\ ;
+給与水準 < kyuuyosuijun\ ;
+白熱戦 < hakunetsusen\ ;
+従属節 < juuzokusetsu\ ;
+少数精鋭 < shousuuseiei\ ;
+転換社債 < tenkanshasai\ ;
+沿岸漁業 < engangyogyou\ ;
+押切帳 < oshikirichou\ ;
+鉱物学 < koubutsugaku\ ;
+交際社会 < kousaishakai\ ;
+制限事項 < seigenjikoku\ ;
+左心室 < sashinshitsu\ ;
+刑事責任 < keijisekinin\ ;
+混合火薬 < kongoukayaku\ ;
+極彩色 < gokusaishiki\ ;
+双務契約 < soumukeiyaku\ ;
+肝心要 < kanjinkaname\ ;
+古典学者 < kotengakusha\ ;
+生活扶助 < seikatsufujo\ ;
+建築業 < kenchikugyou\ ;
+拒食症 < kyoshokushou\ ;
+用益物権 < youekibukken\ ;
+熱電対 < netsudentsui\ ;
+出勤時間 < shukkinjikan\ ;
+鎖伝動 < kusaridendou\ ;
+拡大率 < kakudairitsu\ ;
+相関係数 < soukankeisuu\ ;
+都忘 < miyakowasure\ ;
+社会保障 < shakaihoshou\ ;
+協同動作 < kyoudoudousa\ ;
+情緒纒綿 < jouchotenmen\ ;
+立憲君主 < rikkenkunshu\ ;
+狂信的 < kyoushinteki\ ;
+表現力 < hyougenryoku\ ;
+中立面 < chuuritsumen\ ;
+旅券査証 < ryokensashou\ ;
+貝殻虫 < kaigaramushi\ ;
+落花狼藉 < rakkarouzeki\ ;
+一番星 < ichibanboshi\ ;
+化学製品 < kagakuseihin\ ;
+適性検査 < tekiseikensa\ ;
+賃借人 < chinshakunin\ ;
+生命科学 < seimeikagaku\ ;
+工作機械 < kousakukikai\ ;
+図書館学 < toshokangaku\ ;
+人口問題 < jinkoumondai\ ;
+御用学者 < goyougakusha\ ;
+気圧配置 < kiatsuhaichi\ ;
+時限爆弾 < jigenbakudan\ ;
+自然対数 < shizentaisuu\ ;
+夜間撮影 < yakansatsuei\ ;
+神経繊維 < shinkeisen''i\ ;
+流動負債 < ryuudoufusai\ ;
+最高記録 < saikoukiroku\ ;
+新規事業 < shinkijigyou\ ;
+姓名判断 < seimeihandan\ ;
+装飾的 < soushokuteki\ ;
+反対給付 < hantaikyuufu\ ;
+澱粉質 < denpunshitsu\ ;
+敗戦投手 < haisentoushu\ ;
+武漢三鎮 < bukansanchin\ ;
+電気陰性度 < denkiinseido\ ;
+一朝一夕 < itchouisseki\ ;
+無記名預金 < mukimeiyokin\ ;
+家内工業 < kanaikougyou\ ;
+千日草 < sen''nichisou\ ;
+浅学菲才 < sengakuhisai\ ;
+混合経済 < kongoukeizai\ ;
+市民団体 < shimindantai\ ;
+企業連合 < kigyourengou\ ;
+時代感覚 < jidaikankaku\ ;
+七五調 < shichigochou\ ;
+利己主義者 < rikoshugisha\ ;
+共同因子 < kyoudouinshi\ ;
+一意専心 < ichiisenshin\ ;
+欧米諸国 < oubeishokoku\ ;
+革命運動 < kakumeiundou\ ;
+純粋培養 < junsuibaiyou\ ;
+再三再四 < saisansaishi\ ;
+中国服 < chuugokufuku\ ;
+形而上学 < keijijougaku\ ;
+地方団体 < chihoudantai\ ;
+公民学校 < koumingakkou\ ;
+価格統制 < kakakutousei\ ;
+意匠登録 < ishoutouroku\ ;
+高天原 < takamagahara\ ;
+受動喫煙 < judoukitsuen\ ;
+製缶工場 < seikankoujou\ ;
+固形燃料 < kokeinenryou\ ;
+郵便為替 < yuubinkawase\ ;
+勘定係 < kanjougakari\ ;
+口頭弁論 < koutoubenron\ ;
+立体化学 < rittaikagaku\ ;
+拘束力 < kousokuryoku\ ;
+品行方正 < hinkouhousei\ ;
+沈澱物 < chindenbutsu\ ;
+道標 < michishirube\ ;
+器質的 < kishitsuteki\ ;
+販売価格 < hanbaikakaku\ ;
+恋愛結婚 < ren''aikekkon\ ;
+北米土人 < hokubeidojin\ ;
+千日紅 < sen''nichikou\ ;
+臨海学校 < rinkaigakkou\ ;
+一語一語 < ichigoichigo\ ;
+国家公務員 < kokkakoumuin\ ;
+半官半民 < hankanhanmin\ ;
+建築学 < kenchikugaku\ ;
+敗血症 < haiketsushou\ ;
+大国主義 < taikokushugi\ ;
+洋服箪笥 < youfukudansu\ ;
+一方通行 < ippoutsuukou\ ;
+参考文献 < sankoubunken\ ;
+信仰箇条 < shinkoukajou\ ;
+辻社 < tsujiyashiro\ ;
+十一月 < juuichigatsu\ ;
+袋戸棚 < fukurotodana\ ;
+拝物教 < haibutsukyou\ ;
+民間資本 < minkanshihon\ ;
+復讐心 < fukushuushin\ ;
+一汁一菜 < ichijuuissai\ ;
+十種競技 < jisshukyougi\ ;
+旧年末 < kyuunenmatsu\ ;
+失職者 < shisshokusha\ ;
+内割引 < uchiwaribiki\ ;
+希土類元素 < kidoruigenso\ ;
+平和共存 < heiwakyouzon\ ;
+単線運転 < tansen''unten\ ;
+事後承諾 < jigoshoudaku\ ;
+出産率 < shussanritsu\ ;
+写実的 < shajitsuteki\ ;
+映像信号 < eizoushingou\ ;
+安全対策 < anzentaisaku\ ;
+生産組合 < seisankumiai\ ;
+接続駅 < setsuzokueki\ ;
+居住水準 < kyojuusuijun\ ;
+製鉄業 < seitetsugyou\ ;
+算用数字 < san''yousuuji\ ;
+出生率 < shusseiritsu\ ;
+姉妹会社 < shimaigaisha\ ;
+選挙公報 < senkyokouhou\ ;
+仏像二座 < butsuzouniza\ ;
+観光旅行 < kankouryokou\ ;
+研究課題 < kenkyuukadai\ ;
+金拾万円 < kinjuuman''en\ ;
+屎尿処理 < shinyoushori\ ;
+着物姿 < kimonosugata\ ;
+商事会社 < shoujigaisha\ ;
+積極策 < sekkyokusaku\ ;
+集合場所 < shuugoubasho\ ;
+形容詞幹 < keiyoushikan\ ;
+条件反射 < joukenhansha\ ;
+小文節 < shoubunsetsu\ ;
+組織力 < soshikiryoku\ ;
+信徒伝動 < shintodendou\ ;
+有料道路 < yuuryoudouro\ ;
+業務妨害 < gyoumubougai\ ;
+阿片中毒 < ahenchuudoku\ ;
+細胞融合 < saibouyuugou\ ;
+断熱材 < dan''netsuzai\ ;
+名人気質 < meijinkatagi\ ;
+郵政大臣 < yuuseidaijin\ ;
+電気掃除機 < denkisoujiki\ ;
+人権擁護 < jinken''yougo\ ;
+兄弟喧嘩 < kyoudaigenka\ ;
+著作物 < chosakubutsu\ ;
+盲滅法 < mekurameppou\ ;
+巡航速度 < junkousokudo\ ;
+一夜大臣 < ichiyadaijin\ ;
+附着力 < fuchakuryoku\ ;
+獅子奮迅 < shishifunjin\ ;
+漂流木 < hyouryuuboku\ ;
+紳士靴 < shinshigutsu\ ;
+閨秀作家 < keishuusakka\ ;
+浚渫船 < shunsetsusen\ ;
+深山烏 < miyamagarasu\ ;
+専門学校 < senmongakkou\ ;
+改革過程 < kaikakukatei\ ;
+緊急措置 < kinkyuusochi\ ;
+画竜天睛 < garyoutensei\ ;
+一進一退 < isshin''ittai\ ;
+生臭物 < namagusamono\ ;
+定常状態 < teijoujoutai\ ;
+審判役 < shinpan''yaku\ ;
+指数関数 < shisuukansuu\ ;
+積極的 < sekkyokuteki\ ;
+試験科目 < shikenkamoku\ ;
+災害救助 < saigaikyuujo\ ;
+発売元 < hatsubaimoto\ ;
+冶金学者 < yakingakusha\ ;
+地方銀行 < chihouginkou\ ;
+仏頂面 < butchoudzura\ ;
+経済発展 < keizaihatten\ ;
+特殊兵器 < tokushuheiki\ ;
+海中公園 < kaichuukouen\ ;
+団体旅行 < dantairyokou\ ;
+三叉神経 < sansashinkei\ ;
+欲求不満 < yokkyuufuman\ ;
+若紫 < wakamurasaki\ ;
+終夜営業 < shuuyaeigyou\ ;
+地下組織 < chikasoshiki\ ;
+耐震家屋 < taishinkaoku\ ;
+正三角形 < seisankakkei\ ;
+走行車線 < soukoushasen\ ;
+空気調整 < kuukichousei\ ;
+運動神経 < undoushinkei\ ;
+受胎告知 < jutaikokuchi\ ;
+取引高 < torihikidaka\ ;
+解答用紙 < kaitouyoushi\ ;
+不所存者 < fushozonmono\ ;
+畳鰯 < tatamiiwashi\ ;
+闖入者 < chin''nyuusha\ ;
+毬栗頭 < igaguriatama\ ;
+建築中 < kenchikuchuu\ ;
+弱小国 < jakushoukoku\ ;
+加工産業 < kakousangyou\ ;
+発売中 < hatsubaichuu\ ;
+規格原案 < kikakugen''an\ ;
+和魂洋才 < wakon''yousai\ ;
+反戦運動 < hansen''undou\ ;
+諸行無常 < shogyoumujou\ ;
+契約期間 < keiyakukikan\ ;
+人文科学 < jinbunkagaku\ ;
+一人一人 < hitoribitori\ ;
+励振素子 < reishinsoshi\ ;
+復讐劇 < fukushuugeki\ ;
+宇宙工学 < uchuukougaku\ ;
+事前日付 < jizenhidzuke\ ;
+自家撞着 < jikadouchaku\ ;
+石灰肥料 < sekkaihiryou\ ;
+公益優先 < kouekiyuusen\ ;
+下仕事 < shitashigoto\ ;
+薔薇十字団 < barajuujidan\ ;
+日豊本線 < nippouhonsen\ ;
+石油化学 < sekiyukagaku\ ;
+消極性 < shoukyokusei\ ;
+相対速度 < soutaisokudo\ ;
+黒字倒産 < kurojitousan\ ;
+金欠病 < kinketsubyou\ ;
+聴視率 < choushiritsu\ ;
+内憂外患 < naiyuugaikan\ ;
+関数空間 < kansuukuukan\ ;
+付属病院 < fuzokubyouin\ ;
+臨床医学 < rinshouigaku\ ;
+米海兵隊 < beikaiheitai\ ;
+深山桜 < miyamazakura\ ;
+拱手傍観 < koushuboukan\ ;
+順法闘争 < junpoutousou\ ;
+質問者 < shitsumonsha\ ;
+戦闘陣地 < sentoujinchi\ ;
+一挙一動 < ikkyoichidou\ ;
+威嚇射撃 < ikakushageki\ ;
+実地試験 < jitchishiken\ ;
+中間景気 < chuukankeiki\ ;
+司教権座 < shikyoukenza\ ;
+空約束 < karayakusoku\ ;
+変更履歴 < henkourireki\ ;
+連戦連敗 < rensenrenpai\ ;
+歯槽膿漏 < shisounourou\ ;
+素粒子論 < soryuushiron\ ;
+衛星中継 < eiseichuukei\ ;
+接続詞 < setsuzokushi\ ;
+圧延工場 < atsuenkoujou\ ;
+分娩臥床 < bunbengashou\ ;
+人造絹糸 < jinzoukenshi\ ;
+痕跡器官 < konsekikikan\ ;
+抹香鯨 < makkoukujira\ ;
+蛍光塗料 < keikoutoryou\ ;
+公判調査 < kouhanchousa\ ;
+連絡会議 < renrakukaigi\ ;
+公教要理 < koukyouyouri\ ;
+花盗人 < hananusubito\ ;
+乾燥室 < kansoushitsu\ ;
+骨董品店 < kottouhinten\ ;
+十二指腸 < juunishichou\ ;
+盲暦 < mekuragoyomi\ ;
+財政問題 < zaiseimondai\ ;
+言語学者 < gengogakusha\ ;
+尿毒症 < nyoudokushou\ ;
+金融機関 < kin''yuukikan\ ;
+田園詩人 < den''enshijin\ ;
+等比級数 < touhikyuusuu\ ;
+腹鼓 < haratsudzumi\ ;
+道化役者 < doukeyakusha\ ;
+癇癪玉 < kanshakudama\ ;
+津津浦浦 < tsudzuuraura\ ;
+乾燥地帯 < kansouchitai\ ;
+音節主音 < onsetsushuon\ ;
+航海日誌 < koukainisshi\ ;
+半封建性 < hanhoukensei\ ;
+恋愛関係 < ren''aikankei\ ;
+成長過程 < seichoukatei\ ;
+連帯保証 < rentaihoshou\ ;
+心臓肥大 < shinzouhidai\ ;
+一人物 < ichijinbutsu\ ;
+協約国 < kyouyakukoku\ ;
+天壌無窮 < tenjoumukyuu\ ;
+全身麻酔 < zenshinmasui\ ;
+末代物 < matsudaimono\ ;
+回線交換 < kaisenkoukan\ ;
+輸入制限 < yunyuuseigen\ ;
+剃刀負 < kamisorimake\ ;
+一足先 < hitoashisaki\ ;
+果物籠 < kudamonokago\ ;
+世間話 < sekenbanashi\ ;
+行楽客 < kourakukyaku\ ;
+構造不況 < kouzoufukyou\ ;
+紋白蝶 < monshirochou\ ;
+入湯客 < nyuutoukyaku\ ;
+自己共役 < jikokyouyaku\ ;
+富士火山帯 < fujikazantai\ ;
+闇取引 < yamitorihiki\ ;
+構成分子 < kouseibunshi\ ;
+星座投影機 < seizatoueiki\ ;
+市場展開 < shijoutenkai\ ;
+店頭販売 < tentouhanbai\ ;
+進水式 < shinsuishiki\ ;
+仮払金 < karibaraikin\ ;
+紙屑籠 < kamikuzukago\ ;
+乾燥卵 < kansoutamago\ ;
+合唱隊員 < gasshoutaiin\ ;
+経費削減 < keihisakugen\ ;
+文芸復興 < bungeifukkou\ ;
+環太平洋 < kantaiheiyou\ ;
+名義書換 < meigikakikae\ ;
+緑内障 < ryokunaishou\ ;
+重大問題 < juudaimondai\ ;
+非科学的 < hikagakuteki\ ;
+限定戦争 < genteisensou\ ;
+極楽鳥 < gokurakuchou\ ;
+欧州委員会 < oushuuiinkai\ ;
+不在証明 < fuzaishoumei\ ;
+賃貸借 < chintaishaku\ ;
+医学博士 < igakuhakushi\ ;
+案内書呈 < an''naishotei\ ;
+専制君主 < senseikunshu\ ;
+勤務実績 < kinmujisseki\ ;
+機密事項 < kimitsujikou\ ;
+早期診断 < soukishindan\ ;
+告発者 < kokuhatsusha\ ;
+停止価格 < teishikakaku\ ;
+記憶容量 < kiokuyouryou\ ;
+出生過剰 < shusseikajou\ ;
+引退興行 < intaikougyou\ ;
+三味線弾 < shamisenhiki\ ;
+試験段階 < shikendankai\ ;
+白血病 < hakketsubyou\ ;
+軍事介入 < gunjikainyuu\ ;
+政治道徳 < seijidoutoku\ ;
+国営企業 < kokueikigyou\ ;
+帰巣本能 < kisouhon''nou\ ;
+両性具有 < ryouseiguyuu\ ;
+黄金万能 < ougonban''nou\ ;
+真珠質 < shinjushitsu\ ;
+担当課長 < tantoukachou\ ;
+混成競技 < konseikyougi\ ;
+労働攻勢 < roudoukousei\ ;
+片山里 < katayamazato\ ;
+独立祭 < dokuritsusai\ ;
+閑話休題 < kanwakyuudai\ ;
+内懐 < uchibutokoro\ ;
+予約係 < yoyakugakari\ ;
+役務賠償 < ekimubaishou\ ;
+平和産業 < heiwasangyou\ ;
+印象批評 < inshouhihyou\ ;
+停滞前線 < teitaizensen\ ;
+民間放送 < minkanhousou\ ;
+属地主義 < zokuchishugi\ ;
+上位互換性 < jouigokansei\ ;
+出版部数 < shuppanbusuu\ ;
+自動人形 < jidouningyou\ ;
+意志薄弱 < ishihakujaku\ ;
+心理戦争 < shinrisensou\ ;
+課税所得 < kazeishotoku\ ;
+流行作家 < ryuukousakka\ ;
+根気仕事 < konkishigoto\ ;
+黄緑色 < ouryokushoku\ ;
+軽犯罪法 < keihanzaihou\ ;
+揣摩憶測 < shimaokusoku\ ;
+改修工事 < kaishuukouji\ ;
+対抗意識 < taikouishiki\ ;
+前進力 < zenshinryoku\ ;
+道路交通 < dourokoutsuu\ ;
+法廷侮辱 < houteibujoku\ ;
+光学機械 < kougakukikai\ ;
+脱字記号 < datsujikigou\ ;
+確率論 < kakuritsuron\ ;
+独立班 < dokuritsuhan\ ;
+公有水面 < kouyuusuimen\ ;
+等圧式 < touatsushiki\ ;
+陰性反応 < inseihan''nou\ ;
+素人筋 < shiroutosuji\ ;
+美人局 < tsutsumotase\ ;
+借地料 < shakuchiryou\ ;
+黄熱病 < kounetsubyou\ ;
+均衡経済 < kinkoukeizai\ ;
+投票率 < touhyouritsu\ ;
+鰻丼 < unagidonburi\ ;
+蘭栽培法 < ransaibaihou\ ;
+武装集団 < busoushuudan\ ;
+脅迫的 < kyouhakuteki\ ;
+印鑑証明 < inkanshoumei\ ;
+域内貿易 < ikinaiboueki\ ;
+使徒行伝 < shitogyouden\ ;
+佳人薄命 < kajinhakumei\ ;
+放射線科医 < houshasenkai\ ;
+有体資産 < yuutaishisan\ ;
+対泰関係 < taitaikankei\ ;
+欧州連合 < oushuurengou\ ;
+女子学生 < joshigakusei\ ;
+団結心 < danketsushin\ ;
+単純平均 < tanjunheikin\ ;
+質問書 < shitsumonsho\ ;
+再度確認 < saidokakunin\ ;
+鬼面伝心 < kimendenshin\ ;
+貿易黒字 < bouekikuroji\ ;
+組合員証 < kumiaiinshou\ ;
+熟柿主義 < jukushishugi\ ;
+中立性 < chuuritsusei\ ;
+冷房装置 < reibousouchi\ ;
+現地生産 < genchiseisan\ ;
+新聞記者 < shinbunkisha\ ;
+告発状 < kokuhatsujou\ ;
+大山鳴動 < taizanmeidou\ ;
+波状攻撃 < hajoukougeki\ ;
+単記投票 < tankitouhyou\ ;
+一次関数 < ichijikansuu\ ;
+幼形進化 < youkeishinka\ ;
+反復説 < hanpukusetsu\ ;
+印刷術 < insatsujutsu\ ;
+能力給 < nouryokukyuu\ ;
+青物市場 < aomonoichiba\ ;
+学生運動 < gakuseiundou\ ;
+報復措置 < houfukusochi\ ;
+回復可能 < kaifukukanou\ ;
+正角定木 < seikakujougi\ ;
+歴史地理 < rekishichiri\ ;
+練習曲 < renshuukyoku\ ;
+年中無休 < nenjuumukyuu\ ;
+代数的和 < daisuutekiwa\ ;
+超能力 < chounouryoku\ ;
+左右相称 < sayuusoushou\ ;
+核分裂 < kakubunretsu\ ;
+帝国主義 < teikokushugi\ ;
+西洋松露 < seiyoushouro\ ;
+回転勘定 < kaitenkanjou\ ;
+依託射撃 < itakushageki\ ;
+正規表現 < seikihyougen\ ;
+独立権 < dokuritsuken\ ;
+総領事館 < souryoujikan\ ;
+待宵草 < matsuyoigusa\ ;
+一人娘 < hitorimusume\ ;
+盗難防止 < tounanboushi\ ;
+滅私奉公 < messhihoukou\ ;
+国税局 < kokuzeikyoku\ ;
+総合科学 < sougoukagaku\ ;
+拘束時間 < kousokujikan\ ;
+四方八方 < shihouhappou\ ;
+主要諸元 < shuyoushogen\ ;
+十分条件 < juubunjouken\ ;
+時代思潮 < jidaishichou\ ;
+代理投票 < dairitouhyou\ ;
+古典音楽 < koten''ongaku\ ;
+銀行強盗 < ginkougoutou\ ;
+一面識 < ichimenshiki\ ;
+出願者 < shutsugansha\ ;
+起爆装置 < kibakusouchi\ ;
+逮捕許諾 < taihokyodaku\ ;
+躾方 < shitsukekata\ ;
+歯牙疾患 < shigashikkan\ ;
+勿忘草 < wasurenagusa\ ;
+強綿薬 < kyoumen''yaku\ ;
+共同祖界 < kyoudousokai\ ;
+油断大敵 < yudantaiteki\ ;
+僻心 < higamigokoro\ ;
+専業農家 < sengyounouka\ ;
+熱可塑性 < netsukasosei\ ;
+梶木鮪 < kajikimaguro\ ;
+市有財産 < shiyuuzaisan\ ;
+国家賠償 < kokkabaishou\ ;
+失明者 < shitsumeisha\ ;
+静態総計 < seitaisoukei\ ;
+専門雑誌 < senmonzasshi\ ;
+弾丸列車 < danganressha\ ;
+女道楽 < on''nadouraku\ ;
+大正時代 < taishoujidai\ ;
+設計変更 < sekkeihenkou\ ;
+了解事項 < ryoukaijikou\ ;
+実験段階 < jikkendankai\ ;
+成長率 < seichouritsu\ ;
+確実性 < kakujitsusei\ ;
+官僚政治 < kanryouseiji\ ;
+人種問題 < jinshumondai\ ;
+演習問題 < enshuumondai\ ;
+労働組合 < roudoukumiai\ ;
+火炎放射器 < kaenhoushaki\ ;
+合同委員会 < goudouiinkai\ ;
+醇風美俗 < junpuubizoku\ ;
+椿油 < tsubakiabura\ ;
+黒装束 < kuroshouzoku\ ;
+柏餅 < kashiwamochi\ ;
+造反有理 < zouhan''yuuri\ ;
+消費性向 < shouhiseikou\ ;
+御用新聞 < goyoushinbun\ ;
+公定価格 < kouteikakaku\ ;
+堆積作用 < taisekisayou\ ;
+攻守同盟 < koushudoumei\ ;
+工科大学 < koukadaigaku\ ;
+社公連合 < shakourengou\ ;
+軍事教練 < gunjikyouren\ ;
+平和条約 < heiwajouyaku\ ;
+無資格者 < mushikakusha\ ;
+熱拡散 < netsukakusan\ ;
+相殺関税 < sousaikanzei\ ;
+即時停戦 < sokujiteisen\ ;
+柄頭 < tsukagashira\ ;
+測地衛星 < sokuchieisei\ ;
+空中浮遊 < kuuchuufuyuu\ ;
+忠臣蔵 < chuushingura\ ;
+動物学 < doubutsugaku\ ;
+一枚下 < ichimaishita\ ;
+信用詐欺 < shin''yousagi\ ;
+至東京 < itarutoukyou\ ;
+独立性 < dokuritsusei\ ;
+明眸皓歯 < meiboukoushi\ ;
+上等兵曹 < joutouheisou\ ;
+金利政策 < kinriseisaku\ ;
+草根木皮 < soukonmokuhi\ ;
+雨後雪 < amenochiyuki\ ;
+労働災害 < roudousaigai\ ;
+推定年齢 < suiteinenrei\ ;
+遺産管理人 < isankanrinin\ ;
+貿易依存度 < bouekiizondo\ ;
+日本文学 < nihonbungaku\ ;
+八目鰻 < yatsumeunagi\ ;
+実験科学 < jikkenkagaku\ ;
+労働委員会 < roudouiinkai\ ;
+天狗話 < tengubanashi\ ;
+案内係 < an''naigakari\ ;
+危険信号 < kikenshingou\ ;
+流行色 < ryuukoushoku\ ;
+鍾乳石 < shounyuuseki\ ;
+西欧諸国 < seioushokoku\ ;
+接続性 < setsuzokusei\ ;
+夜間営業 < yakan''eigyou\ ;
+模型飛行機 < mokeihikouki\ ;
+真実性 < shinjitsusei\ ;
+使徒承伝 < shitoshouden\ ;
+国家主席 < kokkashuseki\ ;
+雪見灯籠 < yukimidourou\ ;
+主席判事 < shusekihanji\ ;
+骨肉腫 < kotsunikushu\ ;
+犬畜生 < inuchikushou\ ;
+官製葉書 < kanseihagaki\ ;
+伝記文学 < denkibungaku\ ;
+制動放射 < seidouhousha\ ;
+領収証 < ryoushuushou\ ;
+法律行為 < houritsukoui\ ;
+共産国家 < kyousankokka\ ;
+教育機関 < kyouikukikan\ ;
+非常信号 < hijoushingou\ ;
+雪見障子 < yukimishouji\ ;
+機構改革 < kikoukaikaku\ ;
+昼光色 < chuukoushoku\ ;
+御玉杓子 < otamajakushi\ ;
+最終結果 < saishuukekka\ ;
+特恵関税 < tokkeikanzei\ ;
+地震予知 < jishin''yochi\ ;
+共同募金 < kyoudoubokin\ ;
+事務当局 < jimutoukyoku\ ;
+三号雑誌 < sangouzasshi\ ;
+漏洩電流 < roueidenryuu\ ;
+宣戦布告 < sensenfukoku\ ;
+共産地区 < kyousanchiku\ ;
+代用教員 < daiyoukyouin\ ;
+北極熊 < hokkyokuguma\ ;
+三角定規 < sankakujougi\ ;
+西洋将棋 < seiyoushougi\ ;
+信号無視 < shingoumushi\ ;
+土地改革 < tochikaikaku\ ;
+瀬戸物市 < setomonoichi\ ;
+司令室 < shireishitsu\ ;
+安倍川餅 < abekawamochi\ ;
+東欧諸国 < tououshokoku\ ;
+跡目相続 < atomesouzoku\ ;
+人工呼吸 < jinkoukokyuu\ ;
+俄盲 < niwakamekura\ ;
+航空郵便 < koukuuyuubin\ ;
+並行輸入 < heikouyunyuu\ ;
+経済格差 < keizaikakusa\ ;
+社会資本 < shakaishihon\ ;
+外交特権 < gaikoutokken\ ;
+印刷物 < insatsubutsu\ ;
+業務提携 < gyoumuteikei\ ;
+潜在意識 < senzaiishiki\ ;
+抽象的 < chuushouteki\ ;
+制御装置 < seigyosouchi\ ;
+白拍子 < shirabyoushi\ ;
+提出者 < teishutsusha\ ;
+所所方方 < shoshohoubou\ ;
+耐圧力 < taiatsuryoku\ ;
+凸面鏡 < totsumenkyou\ ;
+高血圧 < kouketsuatsu\ ;
+柱時計 < hashiradokei\ ;
+固体燃料 < kotainenryou\ ;
+傘歯車 < kasahaguruma\ ;
+鼻元思案 < hanamotojian\ ;
+右折禁止 < usetsukinshi\ ;
+軍国色 < gunkokushoku\ ;
+八郎潟 < hachirougata\ ;
+千思万考 < senshibankou\ ;
+依願退職 < igantaishoku\ ;
+三部合唱 < sanbugasshou\ ;
+言語中枢 < gengochuusuu\ ;
+現代文明 < gendaibunmei\ ;
+養護学級 < yougogakkyuu\ ;
+宿命的 < shukumeiteki\ ;
+回転運動 < kaiten''undou\ ;
+運輸業者 < un''yugyousha\ ;
+中心角 < chuushinkaku\ ;
+長須鯨 < nagasukujira\ ;
+石油公団 < sekiyukoudan\ ;
+局部麻酔 < kyokubumasui\ ;
+義太夫節 < gidayuubushi\ ;
+金属加工 < kinzokukakou\ ;
+悪性腫瘍 < akuseishuyou\ ;
+修了証 < shuuryoushou\ ;
+馬鹿正直 < bakashoujiki\ ;
+合弁会社 < goubengaisha\ ;
+段々畠 < dandanbatake\ ;
+公益事業 < kouekijigyou\ ;
+信号電波 < shingoudenpa\ ;
+多肉質 < tanikushitsu\ ;
+進入灯 < shin''nyuutou\ ;
+集約的 < shuuyakuteki\ ;
+兵六玉 < hyourokudama\ ;
+摩擦熱 < masatsunetsu\ ;
+内輪同志 < uchiwadoushi\ ;
+社会事業 < shakaijigyou\ ;
+技術力 < gijutsuryoku\ ;
+零細企業 < reisaikigyou\ ;
+仮溶接 < kariyousetsu\ ;
+国定公園 < kokuteikouen\ ;
+応力径路 < ouryokukeiro\ ;
+下位範疇化 < kaihanchuuka\ ;
+控訴棄却 < kousokikyaku\ ;
+通勤定期 < tsuukinteiki\ ;
+高品質 < kouhinshitsu\ ;
+歴史地図 < rekishichizu\ ;
+電子郵便 < denshiyuubin\ ;
+晒木綿 < sarashimomen\ ;
+伸縮法 < shinshukuhou\ ;
+人工知能 < jinkouchinou\ ;
+空中投下 < kuuchuutouka\ ;
+楽天主義 < rakutenshugi\ ;
+六連発 < rokurenpatsu\ ;
+海外投資 < kaigaitoushi\ ;
+併発症 < heihatsushou\ ;
+暗証番号 < anshoubangou\ ;
+欠乏症 < ketsuboushou\ ;
+枕詞 < makurakotoba\ ;
+関節技 < kansetsuwaza\ ;
+沈没船 < chinbotsusen\ ;
+候所 < souroutokoro\ ;
+容積率 < yousekiritsu\ ;
+桂男 < katsuraotoko\ ;
+主力株 < shuryokukabu\ ;
+年齢制限 < nenreiseigen\ ;
+価格戦争 < kakakusensou\ ;
+高速度鋼 < kousokudokou\ ;
+山懐 < yamafutokoro\ ;
+乾湿計 < kanshitsukei\ ;
+非営利団体 < hieiridantai\ ;
+火力支援 < karyokushien\ ;
+高速道路 < kousokudouro\ ;
+使用禁止 < shiyoukinshi\ ;
+冠婚葬祭 < kankonsousai\ ;
+水平尾翼 < suiheibiyoku\ ;
+丼飯 < donburimeshi\ ;
+決議機関 < ketsugikikan\ ;
+九星術 < kyuuseijutsu\ ;
+口八丁 < kuchihatchou\ ;
+連鎖反応 < rensahan''nou\ ;
+市民社会 < shiminshakai\ ;
+検察庁 < kensatsuchou\ ;
+表表紙 < omotebyoushi\ ;
+部分集合 < bubunshuugou\ ;
+四捨五入 < shishagonyuu\ ;
+受託会社 < jutakugaisha\ ;
+問題意識 < mondaiishiki\ ;
+金融公庫 < kin''yuukouko\ ;
+直取引 < jikitorihiki\ ;
+友達甲斐 < tomodachigai\ ;
+大学卒 < daigakusotsu\ ;
+一般教養 < ippankyouyou\ ;
+失語症 < shitsugoshou\ ;
+降雪量 < kousetsuryou\ ;
+安定恐慌 < anteikyoukou\ ;
+水素化物 < suisokabutsu\ ;
+環境変化 < kankyouhenka\ ;
+体格検査 < taikakukensa\ ;
+漁師町 < ryoushimachi\ ;
+化学合成 < kagakugousei\ ;
+平平凡凡 < heiheibonbon\ ;
+市場価格 < shijoukakaku\ ;
+物見櫓 < monomiyagura\ ;
+善隣関係 < zenrinkankei\ ;
+合成洗剤 < gouseisenzai\ ;
+観念主義 < kan''nenshugi\ ;
+通勤時間 < tsuukinjikan\ ;
+経済体制 < keizaitaisei\ ;
+住所氏名 < juushoshimei\ ;
+疾風怒濤 < shippuudotou\ ;
+医療材料 < iryouzairyou\ ;
+有機農業 < yuukinougyou\ ;
+妨害放送 < bougaihousou\ ;
+金属元素 < kinzokugenso\ ;
+取次店 < toritsugiten\ ;
+歯内療法 < shikaryouhou\ ;
+悪戯小僧 < itazurakozou\ ;
+全権大使 < zenkentaishi\ ;
+危急存亡 < kikyuusonbou\ ;
+宇宙中継 < uchuuchuukei\ ;
+非人間的 < hiningenteki\ ;
+受信装置 < jushinsouchi\ ;
+数値計算 < suuchikeisan\ ;
+片言隻語 < hengensekigo\ ;
+懐中時計 < kaichuudokei\ ;
+朧月夜 < oborodzukiyo\ ;
+競輪選手 < keirinsenshu\ ;
+享楽的 < kyourakuteki\ ;
+暗号解読 < angoukaidoku\ ;
+反動思想 < handoushisou\ ;
+実証主義 < jisshoushugi\ ;
+標準偏差 < hyoujunhensa\ ;
+資源問題 < shigenmondai\ ;
+運送業者 < unsougyousha\ ;
+行動地帯 < koudouchitai\ ;
+水力学 < suiryokugaku\ ;
+平等主義 < byoudoushugi\ ;
+取引先 < torihikisaki\ ;
+交代投手 < koutaitoushu\ ;
+丼鉢 < donburibachi\ ;
+入力線 < nyuuryokusen\ ;
+低血圧 < teiketsuatsu\ ;
+国家独占 < kokkadokusen\ ;
+土地改良 < tochikairyou\ ;
+環境基準 < kankyoukijun\ ;
+外交文書 < gaikoubunsho\ ;
+軽挙妄動 < keikyomoudou\ ;
+防虫加工 < bouchuukakou\ ;
+不在投票 < fuzaitouhyou\ ;
+伸縮性 < shinshukusei\ ;
+律令制 < ritsuryousei\ ;
+嫌煙運動 < ken''en''undou\ ;
+封緘葉書 < fuukanhagaki\ ;
+形式的 < keishikiteki\ ;
+泰然自若 < taizenjijaku\ ;
+敗北主義 < haibokushugi\ ;
+価格性能 < kakakuseinou\ ;
+書類送検 < shoruisouken\ ;
+人権問題 < jinkenmondai\ ;
+仲立人 < nakadachinin\ ;
+昇降口 < shoukouguchi\ ;
+一死報国 < isshihoukoku\ ;
+記録係 < kirokugakari\ ;
+工作物 < kousakubutsu\ ;
+練馬大根 < nerimadaikon\ ;
+一糸一毫 < isshiichigou\ ;
+特殊事情 < tokushujijou\ ;
+正直者 < shoujikimono\ ;
+老少不定 < roushoufutei\ ;
+中心的 < chuushinteki\ ;
+自習室 < jishuushitsu\ ;
+今明日 < konmyounichi\ ;
+相乗平均 < soujouheikin\ ;
+万年候補 < man''nenkouho\ ;
+安全教育 < anzenkyouiku\ ;
+無賃乗車 < muchinjousha\ ;
+片務契約 < henmukeiyaku\ ;
+一般大衆 < ippantaishuu\ ;
+古典文学 < kotenbungaku\ ;
+高校野球 < koukouyakyuu\ ;
+間接的 < kansetsuteki\ ;
+中華料理 < chuukaryouri\ ;
+出版物 < shuppanbutsu\ ;
+健康状態 < kenkoujoutai\ ;
+核軍縮 < kakugunshuku\ ;
+鹿児島県 < kagoshimaken\ ;
+準備状況 < junbijoukyou\ ;
+選外佳作 < sengaikasaku\ ;
+言語教育 < gengokyouiku\ ;
+同文同種 < doubundoushu\ ;
+給与体系 < kyuuyotaikei\ ;
+麻薬犯罪 < mayakuhanzai\ ;
+朝令暮改 < choureibokai\ ;
+一見識 < ichikenshiki\ ;
+攻撃力 < kougekiryoku\ ;
+互恵条約 < gokeijouyaku\ ;
+一国一票 < ikkokuippyou\ ;
+砲艦外交 < houkangaikou\ ;
+整髪料 < seihatsuryou\ ;
+流行言葉 < hayarikotoba\ ;
+交通機関 < koutsuukikan\ ;
+水銀電池 < suigindenchi\ ;
+倒事 < sakasamagoto\ ;
+追善供養 < tsuizenkuyou\ ;
+他力本願 < tarikihongan\ ;
+符号解読 < fugoukaidoku\ ;
+知能指数 < chinoushisuu\ ;
+亜熱帯気候 < anettaikikou\ ;
+当営業所 < toueigyousho\ ;
+職員会議 < shokuinkaigi\ ;
+言語特有 < gengotokuyuu\ ;
+最小限度 < saishougendo\ ;
+染井吉野 < someiyoshino\ ;
+完全犯罪 < kanzenhanzai\ ;
+暁闇 < akatsukiyami\ ;
+教育制度 < kyouikuseido\ ;
+戦国時代 < sengokujidai\ ;
+前駆症状 < zenkushoujou\ ;
+七面倒 < shichimendou\ ;
+耐湿性 < taishitsusei\ ;
+紫綬褒賞 < shijuhoushou\ ;
+一言半句 < ichigonhanku\ ;
+不法占有 < fuhousen''yuu\ ;
+仏文学 < futsubungaku\ ;
+家庭環境 < kateikankyou\ ;
+畑水練 < hatakesuiren\ ;
+勅撰集 < chokusenshuu\ ;
+七面体 < shichimentai\ ;
+舞台監督 < butaikantoku\ ;
+合成皮革 < gouseihikaku\ ;
+在宅勤務 < zaitakukinmu\ ;
+無政府主義 < museifushugi\ ;
+不在地主 < fuzaijinushi\ ;
+一宿一飯 < isshukuippan\ ;
+老人病院 < roujinbyouin\ ;
+片肺飛行 < katahaihikou\ ;
+対潜水艦 < taisensuikan\ ;
+警戒警報 < keikaikeihou\ ;
+効率的 < kouritsuteki\ ;
+累積赤字 < ruisekiakaji\ ;
+家族構成 < kazokukousei\ ;
+内柔外剛 < naijuugaigou\ ;
+属人主義 < zokujinshugi\ ;
+熱量計 < netsuryoukei\ ;
+硬軟両派 < kounanryouha\ ;
+座席番号 < zasekibangou\ ;
+空中浮揚 < kuuchuufuyou\ ;
+丁稚奉公 < detchiboukou\ ;
+一方交通 < ippoukoutsuu\ ;
+三日月形 < mikadzukikei\ ;
+移動図書館 < idoutoshokan\ ;
+検事総長 < kenjisouchou\ ;
+注釈者 < chuushakusha\ ;
+狭心症 < kyoushinshou\ ;
+新規投資 < shinkitoushi\ ;
+単語検索 < tangokensaku\ ;
+弥猛心 < yatakegokoro\ ;
+隠匿物資 < intokubusshi\ ;
+女人禁制 < nyoninkinsei\ ;
+大修道院 < daishuudouin\ ;
+森林公園 < shinrinkouen\ ;
+総花式 < soubanashiki\ ;
+協商国 < kyoushoukoku\ ;
+受験資格 < jukenshikaku\ ;
+七絃琴 < shichigenkin\ ;
+大和言葉 < yamatokotoba\ ;
+儀式主義 < gishikishugi\ ;
+造山運動 < zouzan''undou\ ;
+一般教育 < ippankyouiku\ ;
+爆裂弾 < bakuretsudan\ ;
+立体音響 < rittaionkyou\ ;
+宗教心 < shuukyoushin\ ;
+特集記事 < tokushuukiji\ ;
+付帯決議 < futaiketsugi\ ;
+製紙工場 < seishikoujou\ ;
+公共物 < koukyoubutsu\ ;
+救急箱 < kyuukyuubako\ ;
+救援投手 < kyuuentoushu\ ;
+財団法人 < zaidanhoujin\ ;
+民俗舞踊 < minzokubuyou\ ;
+戦争犯罪 < sensouhanzai\ ;
+難燃加工 < nan''nenkakou\ ;
+南船北馬 < nansenhokuba\ ;
+機能障害 < kinoushougai\ ;
+実行委員会 < jikkouiinkai\ ;
+狂詩曲 < kyoushikyoku\ ;
+日本国民 < nihonkokumin\ ;
+俄分限 < niwakabungen\ ;
+舞踏教師 < butoukyoushi\ ;
+林間学校 < rinkangakkou\ ;
+松毬 < matsupokkuri\ ;
+花魁道中 < oirandouchuu\ ;
+滑降競技 < kakkoukyougi\ ;
+在外公館 < zaigaikoukan\ ;
+宗教学 < shuukyougaku\ ;
+頭虱 < atamashirami\ ;
+一日中 < ichinichijuu\ ;
+地方選挙 < chihousenkyo\ ;
+求職者 < kyuushokusha\ ;
+畜殺場 < chikusatsuba\ ;
+合成化学 < gouseikagaku\ ;
+私製葉書 < shiseihagaki\ ;
+学年末 < gakunenmatsu\ ;
+不定積分 < futeisekibun\ ;
+正々堂々 < seiseidoudou\ ;
+半信半疑 < hanshinhangi\ ;
+穀象虫 < kokuzoumushi\ ;
+輸入超過 < yunyuuchouka\ ;
+無響室 < mukyoushitsu\ ;
+筍医者 < takenokoisha\ ;
+四元速度 < shigensokudo\ ;
+付属学校 < fuzokugakkou\ ;
+人工真珠 < jinkoushinju\ ;
+潛心力 < senshinryoku\ ;
+興行主 < kougyounushi\ ;
+人権団体 < jinkendantai\ ;
+本文批評 < honmonhihyou\ ;
+乾地農法 < kanchinouhou\ ;
+喧喧囂囂 < kenkengougou\ ;
+松林 < matsubayashi\ ;
+人定尋問 < jinteijinmon\ ;
+任期満了 < ninkimanryou\ ;
+競馬新聞 < keibashinbun\ ;
+修飾子 < shuushokushi\ ;
+収益率 < shuuekiritsu\ ;
+祝儀袋 < shuugibukuro\ ;
+電気工学 < denkikougaku\ ;
+婚姻届 < kon''intodoke\ ;
+供給過多 < kyoukyuukata\ ;
+口頭審理 < koutoushinri\ ;
+障害物 < shougaibutsu\ ;
+平和教育 < heiwakyouiku\ ;
+黒銹病 < kurosabibyou\ ;
+人物評 < jinbutsuhyou\ ;
+総合病院 < sougoubyouin\ ;
+上層気流 < jousoukiryuu\ ;
+老齢年金 < roureinenkin\ ;
+雑所得 < zatsushotoku\ ;
+剥製術 < hakuseijutsu\ ;
+演奏練習 < ensourenshuu\ ;
+独占欲 < dokusen''yoku\ ;
+仕掛地雷 < shikakejirai\ ;
+束柱 < tsukabashira\ ;
+回転資金 < kaitenshikin\ ;
+絶望的 < zetsubouteki\ ;
+暗中模索 < anchuumosaku\ ;
+天然色 < ten''nenshoku\ ;
+唯我独尊 < yuigadokuson\ ;
+集散主義 < shuusanshugi\ ;
+土産物屋 < miyagemonoya\ ;
+自給自足 < jikyuujisoku\ ;
+脂肪質 < shiboushitsu\ ;
+宗教劇 < shuukyougeki\ ;
+和平協定 < waheikyoutei\ ;
+仏心 < hotokegokoro\ ;
+出場者 < shutsujousha\ ;
+地方分権 < chihoubunken\ ;
+乾漆像 < kanshitsuzou\ ;
+市内観光 < shinaikankou\ ;
+放射能雨 < houshanouame\ ;
+内罰的 < naibatsuteki\ ;
+七角形 < shichikakkei\ ;
+諜報機関 < chouhoukikan\ ;
+即興曲 < sokkyoukyoku\ ;
+就学義務 < shuugakugimu\ ;
+航空優勢 < koukuuyuusei\ ;
+人才登用 < jinzaitouyou\ ;
+散発的 < sanpatsuteki\ ;
+複本位制 < fukuhon''isei\ ;
+生活保護 < seikatsuhogo\ ;
+集中豪雨 < shuuchuugouu\ ;
+徴兵免除 < chouheimenjo\ ;
+公害問題 < kougaimondai\ ;
+単身赴任 < tanshinfunin\ ;
+広口瓶 < hirokuchibin\ ;
+差別用語 < sabetsuyougo\ ;
+人口動態 < jinkoudoutai\ ;
+宇宙物理 < uchuubutsuri\ ;
+全面戦争 < zenmensensou\ ;
+経済状態 < keizaijoutai\ ;
+委託研究 < itakukenkyuu\ ;
+千辛万苦 < senshinbanku\ ;
+医療報酬 < iryouhoushuu\ ;
+水晶時計 < suishoudokei\ ;
+三文文士 < sanmonbunshi\ ;
+回転木馬 < kaitenmokuba\ ;
+不戦条約 < fusenjouyaku\ ;
+一生懸命 < isshoukenmei\ ;
+圧縮率 < asshukuritsu\ ;
+日進月歩 < nisshingeppo\ ;
+受託販売 < jutakuhanbai\ ;
+文化勲章 < bunkakunshou\ ;
+悠悠閑閑 < yuuyuukankan\ ;
+仏英辞典 < futsueijiten\ ;
+宿泊人 < shukuhakunin\ ;
+留守番電話 < rusubandenwa\ ;
+衛生工学 < eiseikougaku\ ;
+政見放送 < seikenhousou\ ;
+水性塗料 < suiseitoryou\ ;
+猩紅熱 < shoukounetsu\ ;
+先進兵器 < senshinheiki\ ;
+自己中心 < jikochuushin\ ;
+協力鋼 < kyouryokukou\ ;
+同和教育 < douwakyouiku\ ;
+学齢児童 < gakureijidou\ ;
+聖地巡礼 < seichijunrei\ ;
+社団法人 < shadanhoujin\ ;
+所番地 < tokorobanchi\ ;
+注釈書 < chuushakusho\ ;
+貨物輸送 < kamotsuyusou\ ;
+特徴量 < tokuchouryou\ ;
+正多角形 < seitakakukei\ ;
+懐工合 < futokoroguai\ ;
+電気容量 < denkiyouryou\ ;
+準禁治産 < junkinchisan\ ;
+描写力 < byousharyoku\ ;
+化学構造 < kagakukouzou\ ;
+生物学 < seibutsugaku\ ;
+一党独裁 < ittoudokusai\ ;
+無限小数 < mugenshousuu\ ;
+渾然一体 < konzen''ittai\ ;
+海底地震 < kaiteijishin\ ;
+博士課程 < hakushikatei\ ;
+平均寿命 < heikinjumyou\ ;
+市民運動 < shimin''undou\ ;
+記念出版 < kinenshuppan\ ;
+装置制御 < souchiseigyo\ ;
+原裁判所 < gensaibansho\ ;
+検討委員会 < kentouiinkai\ ;
+厚生大臣 < kouseidaijin\ ;
+油脂工業 < yushikougyou\ ;
+総支配人 < soushihainin\ ;
+読書力 < dokushoryoku\ ;
+日照時間 < nisshoujikan\ ;
+一般教書 < ippankyousho\ ;
+一部始終 < ichibushijuu\ ;
+関数原型 < kansuugenkei\ ;
+知識欲 < chishikiyoku\ ;
+三重宝冠 < sanjuuhoukan\ ;
+全速力 < zensokuryoku\ ;
+歓送迎会 < kansougeikai\ ;
+緊急避難 < kinkyuuhinan\ ;
+刹那主義 < setsunashugi\ ;
+工業地区 < kougyouchiku\ ;
+我楽多市 < garakutaichi\ ;
+衆議院議員 < shuugiingiin\ ;
+転写捺染 < tenshanassen\ ;
+自然災害 < shizensaigai\ ;
+深紅色 < shinkoushoku\ ;
+天井棧敷 < tenjousajiki\ ;
+先行条件 < senkoujouken\ ;
+月下氷人 < gekkahyoujin\ ;
+未年 < hitsujidoshi\ ;
+谷懐 < tanibutokoro\ ;
+選考委員会 < senkouiinkai\ ;
+医薬分業 < iyakubungyou\ ;
+雁骨 < kariganebone\ ;
+身元保証 < mimotohoshou\ ;
+軟着陸 < nanchakuriku\ ;
+純正科学 < junseikagaku\ ;
+二重道徳 < nijuudoutoku\ ;
+悲喜交交 < hikikomogomo\ ;
+緊急動議 < kinkyuudougi\ ;
+太陽電池 < taiyoudenchi\ ;
+街頭録音 < gaitourokuon\ ;
+国際機関 < kokusaikikan\ ;
+東口 < higashiguchi\ ;
+前傾姿勢 < zenkeishisei\ ;
+帰属意識 < kizokuishiki\ ;
+公衆便所 < koushuubenjo\ ;
+日本国内 < nihonkokunai\ ;
+色情狂 < shikijoukyou\ ;
+郵便袋 < yuubinbukuro\ ;
+選民思想 < senminshisou\ ;
+咀嚼運動 < soshakuundou\ ;
+記念写真 < kinenshashin\ ;
+診察台 < shinsatsudai\ ;
+泡沫的 < houmatsuteki\ ;
+火燵布団 < kotatsubuton\ ;
+仮釈放 < karishakuhou\ ;
+全面禁止 < zenmenkinshi\ ;
+北回帰線 < kitakaikisen\ ;
+連合艦隊 < rengoukantai\ ;
+急進的 < kyuushinteki\ ;
+人命救助 < jinmeikyuujo\ ;
+戦争状態 < sensoujoutai\ ;
+女子大学 < joshidaigaku\ ;
+国士無双 < kokushimusou\ ;
+平均余命 < heikin''yomei\ ;
+事例研究 < jireikenkyuu\ ;
+分散投資 < bunsantoushi\ ;
+診察券 < shinsatsuken\ ;
+極小値 < kyokushouchi\ ;
+偶像礼拝 < guuzoureihai\ ;
+効果覿面 < koukatekimen\ ;
+緊張緩和 < kinchoukanwa\ ;
+不許複製 < fukyofukusei\ ;
+北欧神話 < hokuoushinwa\ ;
+人事行政 < jinjigyousei\ ;
+昭和年間 < shouwanenkan\ ;
+国字問題 < kokujimondai\ ;
+供血者 < kyouketsusha\ ;
+国務大臣 < kokumudaijin\ ;
+杯事 < sakazukigoto\ ;
+言語障害 < gengoshougai\ ;
+再販価格 < saihankakaku\ ;
+平均株価 < heikinkabuka\ ;
+安息香酸 < ansokukousan\ ;
+譜代大名 < fudaidaimyou\ ;
+収入役 < shuunyuuyaku\ ;
+節用集 < setsuyoushuu\ ;
+配達料 < haitatsuryou\ ;
+類義語辞典 < ruigigojiten\ ;
+道路計画 < dourokeikaku\ ;
+古自動車 < furujidousha\ ;
+独枕 < hitorimakura\ ;
+容姿端麗 < youshitanrei\ ;
+新卒者 < shinsotsusha\ ;
+請負業者 < ukeoigyousha\ ;
+通常口語 < tsuujoukougo\ ;
+在外邦人 < zaigaihoujin\ ;
+収監力 < shuukanryoku\ ;
+開放経済 < kaihoukeizai\ ;
+百葉箱 < hyakuyoubako\ ;
+体操競技 < taisoukyougi\ ;
+労働同盟 < roudoudoumei\ ;
+国際都市 < kokusaitoshi\ ;
+有刺鉄線 < yuushitessen\ ;
+団体行動 < dantaikoudou\ ;
+応用数学 < ouyousuugaku\ ;
+協力者 < kyouryokusha\ ;
+交通巡査 < koutsuujunsa\ ;
+速達便 < sokutatsubin\ ;
+無敵艦隊 < mutekikantai\ ;
+航空会社 < koukuugaisha\ ;
+銀白色 < ginhakushoku\ ;
+大政奉還 < taiseihoukan\ ;
+不撓不屈 < futoufukutsu\ ;
+相関関係 < soukankankei\ ;
+同盟罷業 < doumeihigyou\ ;
+夾竹桃 < kyouchikutou\ ;
+軍備競争 < gunbikyousou\ ;
+形容動詞 < keiyoudoushi\ ;
+補給幹線 < hokyuukansen\ ;
+畜生道 < chikushoudou\ ;
+雪辱戦 < setsujokusen\ ;
+為替裁定 < kawasesaitei\ ;
+表現主義 < hyougenshugi\ ;
+東京着 < toukyouchaku\ ;
+電信局 < denshinkyoku\ ;
+文教地区 < bunkyouchiku\ ;
+青色症 < seishokushou\ ;
+広告主 < koukokunushi\ ;
+金属疲労 < kinzokuhirou\ ;
+右方高麗楽 < uhoukomagaku\ ;
+強制疎開 < kyouseisokai\ ;
+東京発 < toukyouhatsu\ ;
+警視総監 < keishisoukan\ ;
+代表社員 < daihyoushain\ ;
+借屋住居 < shakuyazumai\ ;
+徴兵制度 < chouheiseido\ ;
+短期大学 < tankidaigaku\ ;
+立体放送 < rittaihousou\ ;
+全身浴 < zenshin''yoku\ ;
+圧迫包帯 < appakuhoutai\ ;
+変質者 < henshitsusha\ ;
+通用期間 < tsuuyoukikan\ ;
+勉強時間 < benkyoujikan\ ;
+戸籍謄本 < kosekitouhon\ ;
+家庭教育 < kateikyouiku\ ;
+地震探鉱 < jishintankou\ ;
+避難梯子 < hinanbashigo\ ;
+夏木立 < natsukodachi\ ;
+社会奉仕 < shakaihoushi\ ;
+婚外性交 < kongaiseikou\ ;
+不可抗力 < fukakouryoku\ ;
+一塊 < hitokatamari\ ;
+警察庁 < keisatsuchou\ ;
+業界初 < gyoukaihatsu\ ;
+執行機関 < shikkoukikan\ ;
+勤務評定 < kinmuhyoutei\ ;
+天長節 < tenchousetsu\ ;
+常用対数 < jouyoutaisuu\ ;
+娘心 < musumegokoro\ ;
+大道芸人 < daidougeinin\ ;
+黒風白雨 < kokufuuhakuu\ ;
+肥厚性鼻炎 < hikouseibien\ ;
+銀行業務 < ginkougyoumu\ ;
+現地調査 < genchichousa\ ;
+遠洋航海 < en''youkoukai\ ;
+外交関係 < gaikoukankei\ ;
+私学助成 < shigakujosei\ ;
+産褥熱 < sanjokunetsu\ ;
+無痛分娩 < mutsuubunben\ ;
+不良債権 < furyousaiken\ ;
+地域時刻 < chiikijikoku\ ;
+凹版印刷 < ouhaninsatsu\ ;
+基幹産業 < kikansangyou\ ;
+路上駐車 < rojouchuusha\ ;
+単勝式 < tanshoushiki\ ;
+亜酸化窒素 < asankachisso\ ;
+首脳会談 < shunoukaidan\ ;
+独裁政治 < dokusaiseiji\ ;
+外交問題 < gaikoumondai\ ;
+頭頂骨 < touchoukotsu\ ;
+破産申請 < hasanshinsei\ ;
+郷土芸能 < kyoudogeinou\ ;
+後方地域 < kouhouchiiki\ ;
+太陽放射 < taiyouhousha\ ;
+壊血病 < kaiketsubyou\ ;
+西洋文明 < seiyoubunmei\ ;
+振替輸送 < furikaeyusou\ ;
+交換条件 < koukanjouken\ ;
+発行市場 < hakkoushijou\ ;
+一昨昨年 < sakiototoshi\ ;
+製菓業者 < seikagyousha\ ;
+看板娘 < kanbanmusume\ ;
+愛国団体 < aikokudantai\ ;
+変形規則 < henkeikisoku\ ;
+人気投票 < ninkitouhyou\ ;
+男女平等 < danjobyoudou\ ;
+郵便葉書 < yuubinhagaki\ ;
+編集局 < henshuukyoku\ ;
+晴後雨 < harenochiame\ ;
+市場撤退 < shijoutettai\ ;
+安定同位体 < anteidouitai\ ;
+定期検診 < teikikenshin\ ;
+流動食 < ryuudoushoku\ ;
+夏祭 < natsumatsuri\ ;
+団体競技 < dantaikyougi\ ;
+食道楽 < shokudouraku\ ;
+民間団体 < minkandantai\ ;
+封建思想 < houkenshisou\ ;
+航続距離 < kouzokukyori\ ;
+双峰駱駝 < souhourakuda\ ;
+百科全書 < hyakkazensho\ ;
+試行錯誤 < shikousakugo\ ;
+工場地帯 < koujouchitai\ ;
+毛織錦 < keorinishiki\ ;
+政治改革 < seijikaikaku\ ;
+市民会館 < shiminkaikan\ ;
+求人口 < kyuujinguchi\ ;
+有限会社 < yuugengaisha\ ;
+重商主義 < juushoushugi\ ;
+駅前広場 < ekimaehiroba\ ;
+終着駅 < shuuchakueki\ ;
+政治責任 < seijisekinin\ ;
+黒水熱 < kokusuinetsu\ ;
+仮進級 < karishinkyuu\ ;
+専業主婦 < sengyoushufu\ ;
+現場監督 < genbakantoku\ ;
+公転周期 < koutenshuuki\ ;
+口三味線 < kuchijamisen\ ;
+配達先 < haitatsusaki\ ;
+寝物語 < nemonogatari\ ;
+一昨昨夜 < issakusakuya\ ;
+若殿原 < wakatonobara\ ;
+血清肝炎 < kesseikan''en\ ;
+人跡未踏 < jinsekimitou\ ;
+強制保険 < kyouseihoken\ ;
+一望千里 < ichibousenri\ ;
+冷蔵室 < reizoushitsu\ ;
+刑務所長 < keimushochou\ ;
+場内放送 < jounaihousou\ ;
+朝三暮四 < chousanboshi\ ;
+福祉国家 < fukushikokka\ ;
+没交渉 < botsukoushou\ ;
+長刀一枝 < choutouisshi\ ;
+静脈瘤 < joumyakuryuu\ ;
+無線工学 < musenkougaku\ ;
+勝利投手 < shouritoushu\ ;
+天気概況 < tenkigaikyou\ ;
+骨組織 < kotsusoshiki\ ;
+千卒長 < sensotsuchou\ ;
+無常迅速 < mujoujinsoku\ ;
+行動科学 < koudoukagaku\ ;
+直轄地 < chokkatsuchi\ ;
+予防注射 < yobouchuusha\ ;
+昔式 < mukashishiki\ ;
+極秘情報 < gokuhijouhou\ ;
+封建社会 < houkenshakai\ ;
+一筋繩 < hitosujinawa\ ;
+労使紛争 < roushifunsou\ ;
+自学自習 < jigakujishuu\ ;
+不連続線 < furenzokusen\ ;
+治外法権 < chigaihouken\ ;
+経済外交 < keizaigaikou\ ;
+刃物三昧 < hamonozanmai\ ;
+光学繊維 < kougakusen''i\ ;
+就職難 < shuushokunan\ ;
+全休止符 < zenkyuushifu\ ;
+和洋折衷 < wayousetchuu\ ;
+清算会社 < seisangaisha\ ;
+廃藩置県 < haihanchiken\ ;
+臨床講義 < rinshoukougi\ ;
+説経節 < sekkyoubushi\ ;
+純日本風 < jun''nihonfuu\ ;
+文字符号系 < mojifugoukei\ ;
+挙国一致 < kyokokuitchi\ ;
+大衆運動 < taishuuundou\ ;
+心身症 < shinshinshou\ ;
+市場調査 < shijouchousa\ ;
+公開外交 < koukaigaikou\ ;
+面会室 < menkaishitsu\ ;
+独創力 < dokusouryoku\ ;
+妹娘 < imoutomusume\ ;
+大蔵大臣 < ookuradaijin\ ;
+修正予算 < shuuseiyosan\ ;
+始業式 < shigyoushiki\ ;
+行政機関 < gyouseikikan\ ;
+医療輸送機 < iryouyusouki\ ;
+来客筋 < raikyakusuji\ ;
+進学塾 < shingakujuku\ ;
+目的格 < mokutekikaku\ ;
+政教分離 < seikyoubunri\ ;
+搭乗案内 < toujouan''nai\ ;
+五人囃子 < goninbayashi\ ;
+独善主義 < dokuzenshugi\ ;
+航空書簡 < koukuushokan\ ;
+賛否同票 < sanpidouhyou\ ;
+人文学派 < jinbungakuha\ ;
+援用生産 < en''youseisan\ ;
+不耕作地 < fukousakuchi\ ;
+大使公邸 < taishikoutei\ ;
+決議事項 < ketsugijikou\ ;
+校正係 < kouseigakari\ ;
+力自慢 < chikarajiman\ ;
+過酸化水素 < kasankasuiso\ ;
+屋敷町 < yashikimachi\ ;
+温泉療法 < onsenryouhou\ ;
+一顰一笑 < ippin''isshou\ ;
+電気信号 < denkishingou\ ;
+霜柱 < shimobashira\ ;
+服飾品 < fukushokuhin\ ;
+膨張率 < bouchouritsu\ ;
+専管水域 < senkansuiiki\ ;
+天体崇拝 < tentaisuuhai\ ;
+良心的 < ryoushinteki\ ;
+相互参照 < sougosanshou\ ;
+割烹料理 < kappouryouri\ ;
+空念仏 < soranenbutsu\ ;
+郊外電車 < kougaidensha\ ;
+皆皆様 < minaminasama\ ;
+修正主義 < shuuseishugi\ ;
+能率給 < nouritsukyuu\ ;
+補強証拠 < hokyoushouko\ ;
+星印 < hoshijirushi\ ;
+堆積物 < taisekibutsu\ ;
+人材銀行 < jinzaiginkou\ ;
+近代音楽 < kindaiongaku\ ;
+裏面工作 < rimenkousaku\ ;
+法治社会 < houchishakai\ ;
+出納係 < suitougakari\ ;
+大盤振舞 < oobanburumai\ ;
+三岐代表 < sangidaihyou\ ;
+蓄積管 < chikusekikan\ ;
+独身者 < dokushinmono\ ;
+教員組合 < kyouinkumiai\ ;
+海難救助 < kainankyuujo\ ;
+録音放送 < rokuonhousou\ ;
+三者凡退 < sanshabontai\ ;
+石竹色 < sekichikuiro\ ;
+直腸癌 < chokuchougan\ ;
+突発的 < toppatsuteki\ ;
+日本海流 < nihonkairyuu\ ;
+史上最大 < shijousaidai\ ;
+芸術的 < geijutsuteki\ ;
+非晶質 < hishoushitsu\ ;
+記憶障害 < kiokushougai\ ;
+不労所得 < furoushotoku\ ;
+老荘思想 < rousoushisou\ ;
+玉蜀黍 < toumorokoshi\ ;
+軍需工業 < gunjukougyou\ ;
+小心者 < shoushinmono\ ;
+離合集散 < rigoushuusan\ ;
+良妻賢母 < ryousaikenbo\ ;
+軍司令官 < gunshireikan\ ;
+黒水引 < kuromizuhiki\ ;
+貿易会社 < bouekigaisha\ ;
+燐酸肥料 < rinsanhiryou\ ;
+感熱剤 < kan''netsuzai\ ;
+無限責任 < mugensekinin\ ;
+娯楽室 < gorakushitsu\ ;
+鎮痛薬 < chintsuuyaku\ ;
+科学思想 < kagakushisou\ ;
+四海同胞 < shikaidouhou\ ;
+代理委任状 < dairiininjou\ ;
+健康問題 < kenkoumondai\ ;
+感傷主義 < kanshoushugi\ ;
+馬頭観音 < batoukan''non\ ;
+天頂距離 < tenchoukyori\ ;
+能率的 < nouritsuteki\ ;
+調査部長 < chousabuchou\ ;
+合唱曲 < gasshoukyoku\ ;
+丹頂鶴 < tanchoudzuru\ ;
+行動命令 < koudoumeirei\ ;
+為替手形 < kawasetegata\ ;
+赤道気団 < sekidoukidan\ ;
+空中落下 < kuuchuurakka\ ;
+革新的 < kakushinteki\ ;
+定格荷重 < teikakukajuu\ ;
+為替銀行 < kawaseginkou\ ;
+官能主義 < kan''noushugi\ ;
+家庭教師 < kateikyoushi\ ;
+昼夜兼行 < chuuyakenkou\ ;
+客商売 < kyakushoubai\ ;
+一括式 < ikkatsushiki\ ;
+畜産業 < chikusangyou\ ;
+会社営業 < kaishaeigyou\ ;
+袋鼠 < fukuronezumi\ ;
+啓蒙思想 < keimoushisou\ ;
+非循環的 < hijunkanteki\ ;
+文民統制 < bunmintousei\ ;
+過酸化物 < kasankabutsu\ ;
+一念発起 < ichinenhokki\ ;
+出血死 < shukketsushi\ ;
+育成栽培 < ikuseisaibai\ ;
+現場検証 < genbakenshou\ ;
+時代考証 < jidaikoushou\ ;
+感度良好 < kandoryoukou\ ;
+白髪頭 < shiragaatama\ ;
+透明人間 < toumeiningen\ ;
+新形式 < shinkeishiki\ ;
+常套手段 < joutoushudan\ ;
+共有物 < kyouyuubutsu\ ;
+和平工作 < waheikousaku\ ;
+申告箱 < shinkokubako\ ;
+暗中飛躍 < anchuuhiyaku\ ;
+亜寒帯気候 < akantaikikou\ ;
+書留料 < kakitomeryou\ ;
+高音部記号 < kouonbukigou\ ;
+人民裁判 < jinminsaiban\ ;
+施行規則 < shikoukisoku\ ;
+半身不随 < hanshinfuzui\ ;
+希釈熱 < kishakunetsu\ ;
+普通名詞 < futsuumeishi\ ;
+山口県 < yamaguchiken\ ;
+執筆者 < shippitsusha\ ;
+対象範囲 < taishouhan''i\ ;
+人民戦線 < jinminsensen\ ;
+簡明強固 < kanmeikyouko\ ;
+可能選択 < kanousentaku\ ;
+屋内競技 < okunaikyougi\ ;
+多情仏心 < tajoubusshin\ ;
+単純計算 < tanjunkeisan\ ;
+公衆電話 < koushuudenwa\ ;
+商取引 < shoutorihiki\ ;
+花自動車 < hanajidousha\ ;
+位相幾何学 < isoukikagaku\ ;
+植物油 < shokubutsuyu\ ;
+放蕩息子 < houtoumusuko\ ;
+出血斑 < shukketsuhan\ ;
+企画室 < kikakushitsu\ ;
+侵入軍 < shin''nyuugun\ ;
+写真機店 < shashinkiten\ ;
+漁獲物 < gyokakubutsu\ ;
+三等軍曹 < santougunsou\ ;
+緊急逮捕 < kinkyuutaiho\ ;
+力学的 < rikigakuteki\ ;
+貞操蹂躪 < teisoujuurin\ ;
+心肺機能 < shinpaikinou\ ;
+約束事 < yakusokugoto\ ;
+雌雄同株 < shiyuudoushu\ ;
+順風満帆 < junpuumanpan\ ;
+学校法人 < gakkouhoujin\ ;
+変位電流 < hen''idenryuu\ ;
+前哨勤務 < zenshoukinmu\ ;
+経帷子 < kyoukatabira\ ;
+海洋科学 < kaiyoukagaku\ ;
+農民運動 < noumin''undou\ ;
+火消壷 < hikeshitsubo\ ;
+責任範囲 < sekininhan''i\ ;
+発光塗料 < hakkoutoryou\ ;
+感応作用 < kan''nousayou\ ;
+利休鼠 < rikyuunezumi\ ;
+子持昆布 < komochikonbu\ ;
+市営住宅 < shieijuutaku\ ;
+順応力 < jun''nouryoku\ ;
+事業部長 < jigyoubuchou\ ;
+大胆不敵 < daitanfuteki\ ;
+伊勢大神宮 < isedaijinguu\ ;
+天地創造 < tenchisouzou\ ;
+市場経済 < shijoukeizai\ ;
+続柄 < tsudzukigara\ ;
+予定期日 < yoteikijitsu\ ;
+医療技術 < iryougijutsu\ ;
+下半身 < shimohanshin\ ;
+表決権 < hyouketsuken\ ;
+択一的 < takuitsuteki\ ;
+使役動詞 < shiekidoushi\ ;
+流動物 < ryuudoubutsu\ ;
+陳述書 < chinjutsusho\ ;
+徴兵検査 < chouheikensa\ ;
+自家発電 < jikahatsuden\ ;
+追悼式 < tsuitoushiki\ ;
+同語反復 < dougohanpuku\ ;
+弁論大会 < benrontaikai\ ;
+一般投票 < ippantouhyou\ ;
+一人息子 < hitorimusuko\ ;
+飲食物 < inshokubutsu\ ;
+退役軍人 < taiekigunjin\ ;
+人生最悪 < jinseisaiaku\ ;
+印加電圧 < inkaden''atsu\ ;
+液性限界 < ekiseigenkai\ ;
+二酸化炭素 < nisankatanso\ ;
+栄養学者 < eiyougakusha\ ;
+昼食会 < chuushokukai\ ;
+都市交通 < toshikoutsuu\ ;
+畜産学 < chikusangaku\ ;
+交換教授 < koukankyouju\ ;
+学生時代 < gakuseijidai\ ;
+識字率 < shikijiritsu\ ;
+愛社精神 < aishaseishin\ ;
+老化現象 < roukagenshou\ ;
+鼻高高 < hanatakadaka\ ;
+社会問題 < shakaimondai\ ;
+盲管銃創 < moukanjuusou\ ;
+特別法 < tokubetsuhou\ ;
+東海地方 < toukaichihou\ ;
+出漁権 < shutsugyoken\ ;
+発行会社 < hakkougaisha\ ;
+近所合壁 < kinjogappeki\ ;
+音声圧縮 < onseiasshuku\ ;
+民族主義 < minzokushugi\ ;
+専門科目 < senmonkamoku\ ;
+減量経営 < genryoukeiei\ ;
+睡眠不足 < suiminbusoku\ ;
+運送契約 < unsoukeiyaku\ ;
+舞台中継 < butaichuukei\ ;
+下層階級 < kasoukaikyuu\ ;
+鳶職人 < tobishokunin\ ;
+経済闘争 < keizaitousou\ ;
+不良少女 < furyoushoujo\ ;
+応援演説 < ouen''enzetsu\ ;
+鎮魂曲 < chinkonkyoku\ ;
+行動半径 < koudouhankei\ ;
+出演料 < shutsuenryou\ ;
+地震地帯 < jishinchitai\ ;
+通過貿易 < tsuukaboueki\ ;
+統計年鑑 < toukeinenkan\ ;
+人手不足 < hitodebusoku\ ;
+通俗的 < tsuuzokuteki\ ;
+十中八九 < jitchuuhakku\ ;
+滋強飲料 < jikyouinryou\ ;
+四角号碼 < shikakugouma\ ;
+固定観念 < koteikan''nen\ ;
+低音部記号 < teionbukigou\ ;
+経験科学 < keikenkagagu\ ;
+荷電粒子 < kadenryuushi\ ;
+人工生命 < jinkouseimei\ ;
+電気料金 < denkiryoukin\ ;
+往復葉書 < oufukuhagaki\ ;
+人造石油 < jinzousekiyu\ ;
+土蛍 < tsuchibotaru\ ;
+天竺牡丹 < tenjikubotan\ ;
+御馳走様 < gochisousama\ ;
+侵入者 < shin''nyuusha\ ;
+天路歴程 < tenrorekitei\ ;
+共同便所 < kyoudoubenjo\ ;
+暗殺未遂 < ansatsumisui\ ;
+未払費用 < miharaihiyou\ ;
+空出張 < karashutchou\ ;
+相互配属 < sougohaizoku\ ;
+破顔一笑 < hagan''isshou\ ;
+血圧計 < ketsuatsukei\ ;
+胆汁質 < tanjuushitsu\ ;
+治療効果 < chiryoukouka\ ;
+猟官制度 < ryoukanseido\ ;
+収容患者 < shuuyoukanja\ ;
+武陵桃源 < buryoutougen\ ;
+人民所有 < jinminshoyuu\ ;
+反射係数 < hanshakeisuu\ ;
+工業意匠 < kougyouishou\ ;
+相対評価 < soutaihyouka\ ;
+経済問題 < keizaimondai\ ;
+黄碧玉 < kouhekigyoku\ ;
+隔月刊 < kakugetsukan\ ;
+三十六計 < sanjuurokkei\ ;
+残業手当 < zangyouteate\ ;
+投球動作 < toukyuudousa\ ;
+防災訓練 < bousaikunren\ ;
+耐用年数 < taiyounensuu\ ;
+民定憲法 < minteikenpou\ ;
+福利厚生 < fukurikousei\ ;
+消耗品費 < shoumouhinhi\ ;
+学級閉鎖 < gakkyuuheisa\ ;
+人生記録 < jinseikiroku\ ;
+実利主義 < jitsurishugi\ ;
+復原力 < fukugenryoku\ ;
+竣工式 < shunkoushiki\ ;
+公使館員 < koushikan''in\ ;
+競争率 < kyousouritsu\ ;
+積立金 < tsumitatekin\ ;
+植物園 < shokubutsuen\ ;
+進化論者 < shinkaronsha\ ;
+空中機動 < kuuchuukidou\ ;
+投票結果 < touhyoukekka\ ;
+前提条件 < zenteijouken\ ;
+外人選手 < gaijinsenshu\ ;
+巨大分子 < kyodaibunshi\ ;
+贋造紙幣 < ganzoushihei\ ;
+独身寮 < dokushinryou\ ;
+検定試験 < kenteishiken\ ;
+藍綬褒章 < ranjuhoushou\ ;
+司法試験 < shihoushiken\ ;
+柔軟体操 < juunantaisou\ ;
+不良導体 < furyoudoutai\ ;
+対戦車砲 < taisenshahou\ ;
+入札者 < nyuusatsusha\ ;
+死体解剖 < shitaikaibou\ ;
+兼業農家 < kengyounouka\ ;
+新入生 < shin''nyuusei\ ;
+公開録音 < koukairokuon\ ;
+海軍大臣 < kaigundaijin\ ;
+南京花火 < nankinhanabi\ ;
+神謡集 < shin''youshuu\ ;
+扁桃腺炎 < hentousen''en\ ;
+中央銀行 < chuuouginkou\ ;
+両極端 < ryoukyokutan\ ;
+圧縮空気 < asshukukuuki\ ;
+帳面面 < choumendzura\ ;
+見積書 < mitsumorisho\ ;
+研削代 < kensakushiro\ ;
+決済手段 < kessaishudan\ ;
+代理業者 < dairigyousha\ ;
+配置転換 < haichitenkan\ ;
+禁治産者 < kinchisansha\ ;
+活動的 < katsudouteki\ ;
+全身不随 < zenshinfuzui\ ;
+愛他主義者 < aitashugisha\ ;
+全能力 < zen''nouryoku\ ;
+運転技術 < untengijutsu\ ;
+電子音楽 < denshiongaku\ ;
+千万無量 < senmanmuryou\ ;
+自殺幇助 < jisatsuhoujo\ ;
+代数関数 < daisuukansuu\ ;
+音響設計 < onkyousekkei\ ;
+乳様突起 < nyuuyoutokki\ ;
+事前割当 < jizenwariate\ ;
+兵役免状 < heiekimenjou\ ;
+天涯孤独 < tengaikodoku\ ;
+不承不承 < fushoubushou\ ;
+無所属現 < mushozokugen\ ;
+木造家屋 < mokuzoukaoku\ ;
+養老年金 < yourounenkin\ ;
+事前研修 < jizenkenshuu\ ;
+食肉類 < shokunikurui\ ;
+体系文法 < taikeibunpou\ ;
+肺活量 < haikatsuryou\ ;
+雌雄同体 < shiyuudoutai\ ;
+開票率 < kaihyouritsu\ ;
+常識的 < joushikiteki\ ;
+構造汚職 < kouzouoshoku\ ;
+基礎知識 < kisochishiki\ ;
+収容力 < shuuyouryoku\ ;
+地域紛争 < chiikifunsou\ ;
+単峰駱駝 < tanpourakuda\ ;
+象徴的 < shouchouteki\ ;
+人気商売 < ninkishoubai\ ;
+千姿万態 < senshibantai\ ;
+公有財産 < kouyuuzaisan\ ;
+自慢話 < jimanbanashi\ ;
+招待客 < shoutaikyaku\ ;
+先行投資 < senkoutoushi\ ;
+製造工程 < seizoukoutei\ ;
+自由競争 < jiyuukyousou\ ;
+川魚料理 < kawauoryouri\ ;
+交響曲 < koukyoukyoku\ ;
+電解質 < denkaishitsu\ ;
+現代科学 < gendaikagaku\ ;
+平底船 < hirasokobune\ ;
+産業機械 < sangyoukikai\ ;
+不合格者 < fugoukakusha\ ;
+暑中見舞 < shochuumimai\ ;
+誘導尋問 < yuudoujinmon\ ;
+就任式 < shuuninshiki\ ;
+冷凍室 < reitoushitsu\ ;
+瑠璃唐草 < rurikarakusa\ ;
+定形動詞 < teikeidoushi\ ;
+配膳室 < haizenshitsu\ ;
+人間関係 < ningenkankei\ ;
+赤十字社 < sekijuujisha\ ;
+広島県 < hiroshimaken\ ;
+暦改正 < koyomikaisei\ ;
+無産階級 < musankaikyuu\ ;
+徳川方 < tokugawagata\ ;
+六法全書 < roppouzensho\ ;
+集権排除 < shuukenhaijo\ ;
+国際会議 < kokusaikaigi\ ;
+児童文学 < jidoubungaku\ ;
+軍事秘密 < gunjihimitsu\ ;
+仮入学 < karinyuugaku\ ;
+任意出頭 < nin''ishuttou\ ;
+付随現象 < fuzuigenshou\ ;
+原形質 < genkeishitsu\ ;
+唇歯輔車 < shinshihosha\ ;
+原因調査 < gen''inchousa\ ;
+担当部長 < tantoubuchou\ ;
+主任教授 < shuninkyouju\ ;
+軍備削減 < gunbisakugen\ ;
+公開裁判 < koukaisaiban\ ;
+分解修理 < bunkaishuuri\ ;
+百花斉放 < hyakkaseihou\ ;
+黒色腫 < kokushokushu\ ;
+人造真珠 < jinzoushinju\ ;
+卒業生 < sotsugyousei\ ;
+神経過敏 < shinkeikabin\ ;
+送金為替 < soukinkawase\ ;
+回復力 < kaifukuryoku\ ;
+厳正科学 < genseikagaku\ ;
+入会式 < nyuukaishiki\ ;
+司法書士 < shihoushoshi\ ;
+在外資産 < zaigaishisan\ ;
+法律違反 < houritsuihan\ ;
+向心力 < koushinryoku\ ;
+玉虫色 < tamamushiiro\ ;
+特別号 < tokubetsugou\ ;
+進路指導 < shinroshidou\ ;
+予備協約 < yobikyouyaku\ ;
+脱毛症 < datsumoushou\ ;
+始球式 < shikyuushiki\ ;
+教育玩具 < kyouikugangu\ ;
+文法規則 < bunpoukisoku\ ;
+何色搨 < nanshokuzuri\ ;
+完了時制 < kanryoujisei\ ;
+信託業 < shintakugyou\ ;
+事実誤認 < jijitsugonin\ ;
+軍需産業 < gunjusangyou\ ;
+土煙 < tsuchikemuri\ ;
+僻根性 < higamikonjou\ ;
+奪三振 < datsusanshin\ ;
+鉄火丼 < tekkadonburi\ ;
+自然科学 < shizenkagaku\ ;
+大福餅 < daifukumochi\ ;
+武者修行 < mushashugyou\ ;
+侵略軍 < shinryakugun\ ;
+生成文法 < seiseibunpou\ ;
+反物質 < hanbusshitsu\ ;
+司法大臣 < shihoudaijin\ ;
+主意主義者 < shuishugisha\ ;
+制球力 < seikyuuryoku\ ;
+御用商人 < goyoushounin\ ;
+使徒信条 < shitoshinjou\ ;
+証拠物件 < shoukobukken\ ;
+陸産物 < rikusanbutsu\ ;
+予備知識 < yobichishiki\ ;
+合名会社 < goumeigaisha\ ;
+共同一致 < kyoudouitchi\ ;
+武力政治 < buryokuseiji\ ;
+軌道修正 < kidoushuusei\ ;
+農作物 < nousakubutsu\ ;
+湾岸戦争 < wangansensou\ ;
+合格祈願 < goukakukigan\ ;
+化学肥料 < kagakuhiryou\ ;
+竜舌蘭 < ryuuzetsuran\ ;
+独裁国家 < dokusaikokka\ ;
+低利金融 < teirikin''yuu\ ;
+営業畑 < eigyoubatake\ ;
+土類金属 < doruikinzoku\ ;
+肉食獣 < nikushokujuu\ ;
+共和政体 < kyouwaseitai\ ;
+法律学 < houritsugaku\ ;
+法廷闘争 < houteitousou\ ;
+再生装置 < saiseisouchi\ ;
+新発明 < shinhatsumei\ ;
+北方領土 < hoppouryoudo\ ;
+逗留客 < touryuukyaku\ ;
+全廃論者 < zenpaironsha\ ;
+累進課税 < ruishinkazei\ ;
+国防会議 < kokuboukaigi\ ;
+徳島県 < tokushimaken\ ;
+二百十日 < nihyakutooka\ ;
+事前通報 < jizentsuuhou\ ;
+社会意識 < shakaiishiki\ ;
+援助凍結 < enjotouketsu\ ;
+清水寺 < kiyomizudera\ ;
+安全第一 < anzendaiichi\ ;
+個人攻撃 < kojinkougeki\ ;
+悪戯坊主 < itazurabouzu\ ;
+遊動円木 < yuudouenboku\ ;
+円形劇場 < enkeigekijou\ ;
+熱容量 < netsuyouryou\ ;
+文筆業 < bunpitsugyou\ ;
+芭蕉梶木 < bashoukajiki\ ;
+脳出血 < noushukketsu\ ;
+露出症 < roshutsushou\ ;
+高足蟹 < takaashigani\ ;
+情報科学 < jouhoukagaku\ ;
+私娼窟 < shishoukutsu\ ;
+傷害保険 < shougaihoken\ ;
+破産宣告 < hasansenkoku\ ;
+癩病患者 < raibyoukanja\ ;
+黒色癌 < kokushokugan\ ;
+因子分析 < inshibunseki\ ;
+貧血症 < hinketsushou\ ;
+認識票 < ninshikihyou\ ;
+待合政治 < machiaiseiji\ ;
+末法思想 < mappoushisou\ ;
+航続時間 < kouzokujikan\ ;
+専売特許 < senbaitokkyo\ ;
+同種同文 < doushudoubun\ ;
+鉄道事故 < tetsudoujiko\ ;
+真理関数 < shinrikansuu\ ;
+疫病神 < yakubyougami\ ;
+露出狂 < roshutsukyou\ ;
+子子孫孫 < shishisonson\ ;
+八丈島 < hachijoujima\ ;
+降神術 < koushinjutsu\ ;
+英国石油 < eikokusekiyu\ ;
+保護観察 < hogokansatsu\ ;
+秘密兵器 < himitsuheiki\ ;
+郵便貯金 < yuubinchokin\ ;
+哲学者 < tetsugakusha\ ;
+二重人格 < nijuujinkaku\ ;
+白衣明妃 < byakuemyouhi\ ;
+生体解剖 < seitaikaibou\ ;
+爫 < tsumekanmuri\ ;
+力一杯 < chikaraippai\ ;
+出品物 < shuppinbutsu\ ;
+立太子礼 < rittaishirei\ ;
+実際問題 < jissaimondai\ ;
+公転速度 < koutensokudo\ ;
+一石二鳥 < issekinichou\ ;
+教育課程 < kyouikukatei\ ;
+人代名詞 < jindaimeishi\ ;
+次酸化炭素 < jisankatanso\ ;
+灰白色 < kaihakushoku\ ;
+独居室 < dokkyoshitsu\ ;
+優生結婚 < yuuseikekkon\ ;
+口頭試問 < koutoushimon\ ;
+交通安全 < koutsuuanzen\ ;
+接待係 < settaigakari\ ;
+万年雪 < man''nen''yuki\ ;
+狂想曲 < kyousoukyoku\ ;
+和文英訳 < wabun''eiyaku\ ;
+本家本元 < honkehonmoto\ ;
+盲目飛行 < moumokuhikou\ ;
+滞空記録 < taikuukiroku\ ;
+立体裁断 < rittaisaidan\ ;
+国内事情 < kokunaijijou\ ;
+侵略者 < shinryakusha\ ;
+接触事故 < sesshokujiko\ ;
+町役人 < machiyakunin\ ;
+乾燥腐朽 < kansoufukyuu\ ;
+蚰蜒眉 < gejigejimayu\ ;
+合資会社 < goushigaisha\ ;
+彫刻具座 < choukokuguza\ ;
+治安維持法 < chian''ijihou\ ;
+学習塾 < gakushuujuku\ ;
+戸外撮影 < kogaisatsuei\ ;
+応急修理 < oukyuushuuri\ ;
+麻酔注射 < masuichuusha\ ;
+末端価格 < mattankakaku\ ;
+偶像崇拝 < guuzousuuhai\ ;
+普通列車 < futsuuressha\ ;
+新発売 < shinhatsubai\ ;
+和平交渉 < waheikoushou\ ;
+競争力 < kyousouryoku\ ;
+循環論法 < junkanronpou\ ;
+失名氏 < shitsumeishi\ ;
+表座敷 < omotezashiki\ ;
+飽食暖衣 < houshokudani\ ;
+機械工業 < kikaikougyou\ ;
+無限集合 < mugenshuugou\ ;
+徴発令 < chouhatsurei\ ;
+有価証券 < yuukashouken\ ;
+懐銭 < futokorozeni\ ;
+井戸端会議 < idobatakaigi\ ;
+副収入 < fukushuunyuu\ ;
+恐喝罪 < kyoukatsuzai\ ;
+屈折軸 < kussetsujiku\ ;
+合切袋 < gassaibukuro\ ;
+消息通 < shousokutsuu\ ;
+総統選挙 < soutousenkyo\ ;
+株主権 < kabunushiken\ ;
+人気役者 < ninkiyakusha\ ;
+市内通話 < shinaitsuuwa\ ;
+占有率 < sen''yuuritsu\ ;
+南京袋 < nankinbukuro\ ;
+高高指 < takatakayubi\ ;
+白色光 < hakushokukou\ ;
+一等陸士 < ittourikushi\ ;
+講和条約 < kouwajouyaku\ ;
+工業都市 < kougyoutoshi\ ;
+卓上電話 < takujoudenwa\ ;
+客観主義 < kyakkanshugi\ ;
+共同謀議 < kyoudoubougi\ ;
+購買組合 < koubaikumiai\ ;
+請負仕事 < ukeoishigoto\ ;
+鋸鮫 < nokogirizame\ ;
+雇用契約 < koyoukeiyaku\ ;
+当意即妙 < touisokumyou\ ;
+日米協 < nichibeikyou\ ;
+労働市場 < roudoushijou\ ;
+士官学校 < shikangakkou\ ;
+名誉会長 < meiyokaichou\ ;
+度数分布図 < dosuubunpuzu\ ;
+屈折角 < kussetsukaku\ ;
+殺人的 < satsujinteki\ ;
+平均給与 < heikinkyuuyo\ ;
+左団扇 < hidariuchiwa\ ;
+防塵室 < boujinshitsu\ ;
+小便小僧 < shoubenkozou\ ;
+土埃 < tsuchibokori\ ;
+人権蹂躪 < jinkenjuurin\ ;
+圧縮酸素 < asshukusanso\ ;
+含有率 < gan''yuuritsu\ ;
+年次報告 < nenjihoukoku\ ;
+脈搏数 < myakuhakusuu\ ;
+郵便番号 < yuubinbangou\ ;
+推進力 < suishinryoku\ ;
+聾桟敷 < tsunbosajiki\ ;
+計算問題 < keisanmondai\ ;
+総合雑誌 < sougouzasshi\ ;
+縮緬皺 < chirimenjiwa\ ;
+土地収用 < tochishuuyou\ ;
+広告効果 < koukokukouka\ ;
+殺人狂 < satsujinkyou\ ;
+輸出入 < yushutsunyuu\ ;
+幼児教育 < youjikyouiku\ ;
+近所迷惑 < kinjomeiwaku\ ;
+観客席 < kankyakuseki\ ;
+無限級数 < mugenkyuusuu\ ;
+一刻千金 < ikkokusenkin\ ;
+陪審制度 < baishinseido\ ;
+編集機能 < henshuukinou\ ;
+先取特権 < senshutokken\ ;
+専門分野 < senmonbun''ya\ ;
+忄 < ritsushinben\ ;
+命冥加 < inochimyouga\ ;
+担子菌類 < tanshikinrui\ ;
+関係強化 < kankeikyouka\ ;
+森林浴 < shinrin''yoku\ ;
+攻撃部隊 < kougekibutai\ ;
+秘密会議 < himitsukaigi\ ;
+自動車事故 < jidoushajiko\ ;
+消音装置 < shouonsouchi\ ;
+満州事変 < manshuujihen\ ;
+爆発管 < bakuhatsukan\ ;
+資産評価 < shisanhyouka\ ;
+出版許可 < shuppankyoka\ ;
+黒八丈 < kurohachijou\ ;
+国内需要 < kokunaijuyou\ ;
+半身浴 < hanshin''yoku\ ;
+千万長者 < senbanchouja\ ;
+化学試験 < kagakushiken\ ;
+細胞培養 < saiboubaiyou\ ;
+音韻組織 < on''insoshiki\ ;
+座標変換 < zahyouhenkan\ ;
+機械工学 < kikaikougaku\ ;
+第三部長 < daisanbuchou\ ;
+奇岩怪石 < kigankaiseki\ ;
+耐風構造 < taifuukouzou\ ;
+暗緑色 < anryokushoku\ ;
+石鹸工場 < sekkenkoujou\ ;
+在郷軍人 < zaigougunjin\ ;
+幽霊会社 < yuureigaisha\ ;
+環境破壊 < kankyouhakai\ ;
+国際主義 < kokusaishugi\ ;
+御節料理 < osechiryouri\ ;
+筋肉痛 < kin''nikutsuu\ ;
+修理工場 < shuurikoujou\ ;
+職能給 < shokunoukyuu\ ;
+新生物 < shinseibutsu\ ;
+凌霄花 < nouzenkazura\ ;
+黒色尉 < kokushikijou\ ;
+蛍袋 < hotarubukuro\ ;
+偶発的 < guuhatsuteki\ ;
+拒否反応 < kyohihan''nou\ ;
+特産物 < tokusanbutsu\ ;
+一言一句 < ichigon''ikku\ ;
+単独飛行 < tandokuhikou\ ;
+主権在民 < shukenzaimin\ ;
+化粧室 < keshoushitsu\ ;
+総支出 < soushishutsu\ ;
+人格主義 < jinkakushugi\ ;
+自殺未遂 < jisatsumisui\ ;
+出家遁世 < shukketonsei\ ;
+哲学書 < tetsugakusho\ ;
+博物館 < hakubutsukan\ ;
+紐革饂飩 < himokawaudon\ ;
+愚民政策 < guminseisaku\ ;
+単科大学 < tankadaigaku\ ;
+適正利潤 < tekiseirijun\ ;
+発音記号 < hatsuonkigou\ ;
+軍事協定 < gunjikyoutei\ ;
+農地委員会 < nouchiiinkai\ ;
+仲介物 < chuukaibutsu\ ;
+西高東低 < seikoutoutei\ ;
+損耗人員 < sonmoujin''in\ ;
+白頭鷲 < hakutouwashi\ ;
+実勢価格 < jisseikakaku\ ;
+援用設計 < en''yousekkei\ ;
+現場中継 < genbachuukei\ ;
+最新式 < saishinshiki\ ;
+山躑躅 < yamatsutsuji\ ;
+感知装置 < kanchisouchi\ ;
+議決機関 < giketsukikan\ ;
+省電力 < shoudenryoku\ ;
+安心立命 < anjinryoumei\ ;
+合同事業 < goudoujigyou\ ;
+同期信号 < doukishingou\ ;
+仲間意識 < nakamaishiki\ ;
+媒介変数 < baikaihensuu\ ;
+寒中水泳 < kanchuusuiei\ ;
+一匹狼 < ippikiookami\ ;
+被保険物 < hihokenbutsu\ ;
+消息筋 < shousokusuji\ ;
+懐紙 < futokorogami\ ;
+暗殺事件 < ansatsujiken\ ;
+折衷主義 < setchuushugi\ ;
+単式簿記 < tanshikiboki\ ;
+教養課程 < kyouyoukatei\ ;
+万年筆 < man''nenhitsu\ ;
+三者会談 < sanshakaidan\ ;
+連記投票 < renkitouhyou\ ;
+心理状態 < shinrijoutai\ ;
+仇同氏 < katakidoushi\ ;
+海外市場 < kaigaishijou\ ;
+既成事実 < kiseijijitsu\ ;
+事務総局 < jimusoukyoku\ ;
+前進基地 < zenshinkichi\ ;
+同工異曲 < doukouikyoku\ ;
+命題関数 < meidaikansuu\ ;
+北西航路 < hokuseikouro\ ;
+局地的 < kyokuchiteki\ ;
+合同会合 < goudoukaigou\ ;
+立地条件 < ritchijouken\ ;
+革手袋 < kawatebukuro\ ;
+地理学者 < chirigakusha\ ;
+大所高所 < taishokousho\ ;
+重複保険 < juufukuhoken\ ;
+通常兵器 < tsuujouheiki\ ;
+外国部隊 < gaikokubutai\ ;
+文化交流 < bunkakouryuu\ ;
+七分袖 < shichibusode\ ;
+市外通話 < shigaitsuuwa\ ;
+毛細血管 < mousaikekkan\ ;
+動態統計 < doutaitoukei\ ;
+社内情報 < shanaijouhou\ ;
+中公文庫 < chuukoubunko\ ;
+圧電効果 < atsudenkouka\ ;
+魑魅魍魎 < chimimouryou\ ;
+循環系統 < junkankeitou\ ;
+私達 < watashitachi\ ;
+対人関係 < taijinkankei\ ;
+普通選挙 < futsuusenkyo\ ;
+心霊術 < shinreijutsu\ ;
+条件闘争 < joukentousou\ ;
+松竹梅 < shouchikubai\ ;
+千状万態 < senjoubantai\ ;
+核開発 < kakukaihatsu\ ;
+化成工業 < kaseikougyou\ ;
+経済原論 < keizaigenron\ ;
+権謀術数 < kenboujussuu\ ;
+不揮発性 < fukihatsusei\ ;
+高等学校 < koutougakkou\ ;
+連合王国 < rengououkoku\ ;
+国際色 < kokusaishoku\ ;
+郵便書簡 < yuubinshokan\ ;
+子供心 < kodomogokoro\ ;
+精神力 < seishinryoku\ ;
+深謀遠慮 < shinbouenryo\ ;
+住民運動 < juumin''undou\ ;
+法文学部 < houbungakubu\ ;
+普通郵便 < futsuuyuubin\ ;
+再突入 < saitotsunyuu\ ;
+君主政体 < kunshuseitai\ ;
+発信局 < hasshinkyoku\ ;
+大和心 < yamatogokoro\ ;
+捲土重来 < kendochourai\ ;
+女声合唱 < joseigasshou\ ;
+米西戦争 < beiseisensou\ ;
+高度成長 < koudoseichou\ ;
+調律師 < chouritsushi\ ;
+乾布摩擦 < kanpumasatsu\ ;
+中華思想 < chuukashisou\ ;
+辞職願 < jishokunegai\ ;
+贈与証書 < zouyoshousho\ ;
+債務不履行 < saimufurikou\ ;
+公衆衛生 < koushuueisei\ ;
+所所 < tokorodokoro\ ;
+社会科学 < shakaikagaku\ ;
+農芸化学 < nougeikagaku\ ;
+交通整理 < koutsuuseiri\ ;
+親密感 < shinmitsukan\ ;
+特殊部隊 < tokushubutai\ ;
+窓際族 < madogiwazoku\ ;
+事実無根 < jijitsumukon\ ;
+写真術 < shashinjutsu\ ;
+孔雀妙王 < kujakumyouou\ ;
+財産分与 < zaisanbun''yo\ ;
+邦字新聞 < houjishinbun\ ;
+機動計画 < kidoukeikaku\ ;
+輻射熱 < fukushanetsu\ ;
+孤立主義 < koritsushugi\ ;
+供述者 < kyoujutsusha\ ;
+明治天皇 < meijiten''nou\ ;
+焦点距離 < shoutenkyori\ ;
+集合時間 < shuugoujikan\ ;
+住宅地区 < juutakuchiku\ ;
+多角貿易 < takakuboueki\ ;
+非喫煙者 < hikitsuensha\ ;
+消化不良 < shoukafuryou\ ;
+神経節 < shinkeisetsu\ ;
+舞台照明 < butaishoumei\ ;
+不生産的 < fuseisanteki\ ;
+爆発性 < bakuhatsusei\ ;
+非生産的 < hiseisanteki\ ;
+募集人員 < boshuujin''in\ ;
+原稿用紙 < genkouyoushi\ ;
+無意識的 < muishikiteki\ ;
+総司令官 < soushireikan\ ;
+譲渡所得 < joutoshotoku\ ;
+学童保育 < gakudouhoiku\ ;
+最終兵器 < saishuuheiki\ ;
+滑走車輪 < kassousharin\ ;
+月刊雑誌 < gekkanzasshi\ ;
+傍若無人 < boujakubujin\ ;
+全日制 < zen''nichisei\ ;
+勤労奉仕 < kinrouhoushi\ ;
+性腺摘除 < seisentekijo\ ;
+消毒薬 < shoudokuyaku\ ;
+憲法改正 < kenpoukaisei\ ;
+行路病者 < kourobyousha\ ;
+一人芝居 < hitorishibai\ ;
+共同防衛 < kyoudoubouei\ ;
+闘志満満 < toushimanman\ ;
+市勢調査 < shiseichousa\ ;
+会厭軟骨 < een''nankotsu\ ;
+軍用地図 < gun''youchizu\ ;
+東奔西走 < touhonseisou\ ;
+道徳律 < doutokuritsu\ ;
+交代作業 < koutaisagyou\ ;
+国防色 < kokuboushoku\ ;
+日記文学 < nikkibungaku\ ;
+終末論 < shuumatsuron\ ;
+日系米人 < nikkeibeijin\ ;
+将軍職 < shougunshoku\ ;
+至公至平 < shikoushihei\ ;
+関連会社 < kanrengaisha\ ;
+人権宣言 < jinkensengen\ ;
+人造人間 < jinzouningen\ ;
+傾斜家賃 < keishayachin\ ;
+自民党則 < jimintousoku\ ;
+反復記号 < hanpukukigou\ ;
+日本航空 < nipponkoukuu\ ;
+英才教育 < eisaikyouiku\ ;
+草月流 < sougetsuryuu\ ;
+排水条件 < haisuijouken\ ;
+英国航空 < eikokukoukuu\ ;
+明赤色 < meisekishoku\ ;
+解決策 < kaiketsusaku\ ;
+口唇裂 < koushinretsu\ ;
+七草粥 < nanakusagayu\ ;
+前哨騎兵 < zenshoukihei\ ;
+水素爆弾 < suisobakudan\ ;
+潅漑用水 < kangaiyousui\ ;
+商業学 < shougyougaku\ ;
+建設省 < kensetsushou\ ;
+分別心 < funbetsushin\ ;
+建設的 < kensetsuteki\ ;
+金鋸 < kanenokogiri\ ;
+二翻役 < ryanfan''yaku\ ;
+一斉射撃 < isseishageki\ ;
+一酸化炭素 < issankatanso\ ;
+基軸通貨 < kijikutsuuka\ ;
+傾斜生産 < keishaseisan\ ;
+境界理論 < kyoukairiron\ ;
+天皇陛下 < ten''nouheika\ ;
+天然果汁 < ten''nenkajuu\ ;
+口拍子 < kuchibyoushi\ ;
+霊肉一致 < reinikuitchi\ ;
+付加価値税 < fukakachizei\ ;
+経済復興 < keizaifukkou\ ;
+人口統計 < jinkoutoukei\ ;
+戦時産業 < senjisangyou\ ;
+古銭学者 < kosengakusha\ ;
+対弾道弾 < taidandoudan\ ;
+認証式 < ninshoushiki\ ;
+製造番号 < seizoubangou\ ;
+総括的 < soukatsuteki\ ;
+多重人格 < tajuujinkaku\ ;
+一刀両断 < ittouryoudan\ ;
+托鉢僧 < takuhatsuzou\ ;
+共産主義 < kyousanshugi\ ;
+記名投票 < kimeitouhyou\ ;
+商業国 < shougyoukoku\ ;
+仲人口 < nakoudoguchi\ ;
+桜前線 < sakurazensen\ ;
+休憩時間 < kyuukeijikan\ ;
+丸太足場 < marutaashiba\ ;
+桃色遊戯 < momoiroyuugi\ ;
+武士階級 < bushikaikyuu\ ;
+常置委員会 < jouchiiinkai\ ;
+国際電話 < kokusaidenwa\ ;
+人工地震 < jinkoujishin\ ;
+潜在主権 < senzaishuken\ ;
+過小評価 < kashouhyouka\ ;
+範疇部門 < hanchuubumon\ ;
+修道制度 < shuudouseido\ ;
+統語範疇 < tougohanchuu\ ;
+衛生設備 < eiseisetsubi\ ;
+一次産品 < ichijisanpin\ ;
+強制力 < kyouseiryoku\ ;
+公明正大 < koumeiseidai\ ;
+必読書 < hitsudokusho\ ;
+花火線香 < hanabisenkou\ ;
+圧力計 < atsuryokukei\ ;
+舶用機関 < hakuyoukikan\ ;
+随筆集 < zuihitsushuu\ ;
+公民権法 < kouminkenhou\ ;
+猫目石 < nekomokuseki\ ;
+勉強机 < benkyouzukue\ ;
+昏睡状態 < konsuijoutai\ ;
+対向車線 < taikoushasen\ ;
+鉄拳制裁 < tekkenseisai\ ;
+桂冠詩人 < keikanshijin\ ;
+人口調査 < jinkouchousa\ ;
+司法解剖 < shihoukaibou\ ;
+人口静態 < jinkouseitai\ ;
+有体動産 < yuutaidousan\ ;
+採用試験 < saiyoushiken\ ;
+白玉楼 < hakugyokurou\ ;
+気象情報 < kishoujouhou\ ;
+有線放送 < yuusenhousou\ ;
+開通式 < kaitsuushiki\ ;
+戯事 < tawamuregoto\ ;
+喀痰検査 < kakutankensa\ ;
+郷土料理 < kyoudoryouri\ ;
+三段論法 < sandanronpou\ ;
+西半球 < nishihankyuu\ ;
+時代精神 < jidaiseishin\ ;
+誇大広告 < kodaikoukoku\ ;
+都市計画 < toshikeikaku\ ;
+関東一円 < kantouichien\ ;
+自然発生 < shizenhassei\ ;
+啄木鳥 < takubokuchou\ ;
+単一形 < tan''ichigata\ ;
+欽定憲法 < kinteikenpou\ ;
+必然的 < hitsuzenteki\ ;
+数値制御 < suuchiseigyo\ ;
+武者人形 < mushaningyou\ ;
+分周回路 < bunshuukairo\ ;
+市民大会 < shimintaikai\ ;
+赤字国債 < akajikokusai\ ;
+使用方法 < shiyouhouhou\ ;
+水蟷螂 < mizukamakiri\ ;
+小春日和 < koharubiyori\ ;
+星月夜 < hoshidzukuyo\ ;
+縞織物 < shimaorimono\ ;
+公式試合 < koushikijiai\ ;
+照射処理 < shoushashori\ ;
+建設業 < kensetsugyou\ ;
+参勤交替 < sankinkoutai\ ;
+羊頭狗肉 < youtoukuniku\ ;
+斡旋業者 < assengyousha\ ;
+会社概要 < kaishagaiyou\ ;
+商人街 < shouninmachi\ ;
+一幕物 < hitomakumono\ ;
+民主政体 < minshuseitai\ ;
+粗放農業 < sohounougyou\ ;
+財務諸表 < zaimushohyou\ ;
+蚊取線香 < katorisenkou\ ;
+広報情報 < kouhoujouhou\ ;
+緊急事態 < kinkyuujitai\ ;
+均衡価格 < kinkoukakaku\ ;
+公安委員会 < kouan''iinkai\ ;
+季節変異 < kisetsuhen''i\ ;
+有感地震 < yuukanjishin\ ;
+緩和振動 < kanwashindou\ ;
+幽霊人口 < yuureijinkou\ ;
+統語指標 < tougoshihyou\ ;
+最高価格 < saikoukakaku\ ;
+百人力 < hyakuninriki\ ;
+酸性白土 < sanseihakudo\ ;
+民族衣装 < minzokuishou\ ;
+供述書 < kyoujutsusho\ ;
+非営利事業 < hieirijigyou\ ;
+実業界 < jitsugyoukai\ ;
+修士課程 < shuushikatei\ ;
+行平鍋 < yukihiranabe\ ;
+公益法人 < kouekihoujin\ ;
+歴史主義 < rekishishugi\ ;
+弁慶格子 < benkeigoushi\ ;
+第二人称 < dainininshou\ ;
+下流社会 < karyuushakai\ ;
+快楽主義 < kairakushugi\ ;
+落成式 < rakuseishiki\ ;
+柳川鍋 < yanagawanabe\ ;
+航続力 < kouzokuryoku\ ;
+制限速度 < seigensokudo\ ;
+文武両道 < bunburyoudou\ ;
+上昇限度 < joushougendo\ ;
+作用積分 < sayousekibun\ ;
+直接費 < chokusetsuhi\ ;
+腹筋運動 < fukkin''undou\ ;
+公認記録 < kouninkiroku\ ;
+山梨県 < yamanashiken\ ;
+一網打尽 < ichimoudajin\ ;
+棗椰子 < natsumeyashi\ ;
+学校用品 < gakkouyouhin\ ;
+住宅手当 < juutakuteate\ ;
+認知科学 < ninchikagaku\ ;
+商売道具 < shoubaidougu\ ;
+刺激物 < shigekibutsu\ ;
+原子戦争 < genshisensou\ ;
+漫遊客 < man''yuukyaku\ ;
+二重焦点 < nijuushouten\ ;
+瓦煎餅 < kawarasenbei\ ;
+図書館長 < toshokanchou\ ;
+在庫調整 < zaikochousei\ ;
+対数関数 < taisuukansuu\ ;
+親子丼 < oyakodonburi\ ;
+政教一致 < seikyouitchi\ ;
+文芸批評 < bungeihihyou\ ;
+線形代数 < senkeidaisuu\ ;
+連合政権 < rengouseiken\ ;
+頼母子講 < tanomoshikou\ ;
+在韓米軍 < zaikanbeigun\ ;
+著述業 < chojutsugyou\ ;
+一夜乞食 < ichiyakojiki\ ;
+異常終了 < ijoushuuryou\ ;
+品形 < shinakatachi\ ;
+試験地獄 < shikenjigoku\ ;
+社員教育 < shainkyouiku\ ;
+蒼白色 < souhakushoku\ ;
+企業年金 < kigyounenkin\ ;
+乞食根性 < kojikikonjou\ ;
+企業合同 < kigyougoudou\ ;
+自主指針 < jishushishin\ ;
+感慨無量 < kangaimuryou\ ;
+七辺形 < shichihenkei\ ;
+敵性国家 < tekiseikokka\ ;
+等差級数 < tousakyuusuu\ ;
+年末迄 < nenmatsumade\ ;
+師範学校 < shihangakkou\ ;
+経済社会 < keizaishakai\ ;
+改良主義 < kairyoushugi\ ;
+経済制裁 < keizaiseisai\ ;
+主戦投手 < shusentoushu\ ;
+売春宿 < baishun''yado\ ;
+遊撃隊員 < yuugekitaiin\ ;
+一時帰休 < ichijikikyuu\ ;
+質点系 < shitsutenkei\ ;
+受益証券 < juekishouken\ ;
+御伽話 < otogibanashi\ ;
+拙速主義 < sessokushugi\ ;
+未開拓地 < mikaitakuchi\ ;
+全権公使 < zenkenkoushi\ ;
+統制経済 < touseikeizai\ ;
+田園風景 < den''enfuukei\ ;
+旅行日程 < ryokounittei\ ;
+操業率 < sougyouritsu\ ;
+無量大数 < muryoudaisuu\ ;
+割引歩合 < waribikibuai\ ;
+反核運動 < hankakuundou\ ;
+枕屏風 < makurabyoubu\ ;
+血液学 < ketsuekigaku\ ;
+香港返還 < honkonhenkan\ ;
+企業合併 < kigyougappei\ ;
+非行少年 < hikoushounen\ ;
+基督教 < kirisutokyou\ ;
+野外撮影 < yagaisatsuei\ ;
+鼠花火 < nezumihanabi\ ;
+千手観音 < senjukan''non\ ;
+精神主義 < seishinshugi\ ;
+終始一貫 < shuushiikkan\ ;
+捕物帳 < torimonochou\ ;
+県民会館 < kenminkaikan\ ;
+教条主義 < kyoujoushugi\ ;
+更生会社 < kouseigaisha\ ;
+繊維工業 < sen''ikougyou\ ;
+人間同士 < ningendoushi\ ;
+貯蔵室 < chozoushitsu\ ;
+勘合貿易 < kangouboueki\ ;
+百家争鳴 < hyakkasoumei\ ;
+世界政策 < sekaiseisaku\ ;
+弔問客 < choumonkyaku\ ;
+家屋台帳 < kaokudaichou\ ;
+東海道線 < toukaidousen\ ;
+遺失物 < ishitsubutsu\ ;
+動脈血 < doumyakketsu\ ;
+過当競争 < katoukyousou\ ;
+液体窒素 < ekitaichisso\ ;
+平和協定 < heiwakyoutei\ ;
+無線電信 < musendenshin\ ;
+入場式 < nyuujoushiki\ ;
+細胞質 < saiboushitsu\ ;
+専門用語 < senmon''yougo\ ;
+人造肥料 < jinzouhiryou\ ;
+大砲三門 < taihousanmon\ ;
+実験装置 < jikkensouchi\ ;
+血液型 < ketsuekigata\ ;
+中央労働 < chuuouroudou\ ;
+内線番号 < naisenbangou\ ;
+伝記作者 < denkisakusha\ ;
+人民公社 < jinminkousha\ ;
+連絡切符 < renrakukippu\ ;
+標識灯 < hyoushikitou\ ;
+経営合理化 < keieigourika\ ;
+共同墓地 < kyoudoubochi\ ;
+実態調査 < jittaichousa\ ;
+総務長官 < soumuchoukan\ ;
+混乱状態 < konranjoutai\ ;
+勢車 < hazumiguruma\ ;
+哀哉 < kanashiikana\ ;
+包括的 < houkatsuteki\ ;
+劇中劇 < gekichuugeki\ ;
+家族意識 < kazokuishiki\ ;
+外柔内剛 < gaijuunaigou\ ;
+訪問販売 < houmonhanbai\ ;
+実用的 < jitsuyouteki\ ;
+侍八騎 < samuraihakki\ ;
+中間色 < chuukanshoku\ ;
+排斥運動 < haisekiundou\ ;
+開腹術 < kaifukujutsu\ ;
+原子弾頭 < genshidantou\ ;
+直撃弾 < chokugekidan\ ;
+営業案内 < eigyouan''nai\ ;
+天文航法 < tenmonkouhou\ ;
+非実際的 < hijissaiteki\ ;
+裏書譲渡 < uragakijouto\ ;
+副産物 < fukusanbutsu\ ;
+命中率 < meichuuritsu\ ;
+血友病 < ketsuyuubyou\ ;
+関係書類 < kankeishorui\ ;
+免許皆伝 < menkyokaiden\ ;
+回転競技 < kaitenkyougi\ ;
+経済水域 < keizaisuiiki\ ;
+無欲恬淡 < muyokutentan\ ;
+自我実現 < jigajitsugen\ ;
+執行猶予 < shikkouyuuyo\ ;
+融通手形 < yuuzuutegata\ ;
+厚生年金 < kouseinenkin\ ;
+院内感染 < in''naikansen\ ;
+悪性水腫 < akuseisuishu\ ;
+団十郎丈 < danjuuroujou\ ;
+精白率 < seihakuritsu\ ;
+以心伝心 < ishindenshin\ ;
+一字千金 < ichijisenkin\ ;
+業績悪化 < gyousekiakka\ ;
+兵器拡散 < heikikakusan\ ;
+交友関係 < kouyuukankei\ ;
+国際政治 < kokusaiseiji\ ;
+均質性 < kinshitsusei\ ;
+書面審理 < shomenshinri\ ;
+人間社会 < ningenshakai\ ;
+軍国主義 < gunkokushugi\ ;
+水上競技 < suijoukyougi\ ;
+河原乞食 < kawarakojiki\ ;
+戸籍係 < kosekigakari\ ;
+二重撮影 < nijuusatsuei\ ;
+絶対評価 < zettaihyouka\ ;
+在米邦人 < zaibeihoujin\ ;
+四月馬鹿 < shigatsubaka\ ;
+新進気鋭 < shinshinkiei\ ;
+所得控除 < shotokukoujo\ ;
+関係会社 < kankeigaisha\ ;
+自信満満 < jishinmanman\ ;
+日本学者 < nihongakusha\ ;
+接客業 < sekkyakugyou\ ;
+春日大社 < kasugataisha\ ;
+水盃 < mizusakazuki\ ;
+文明社会 < bunmeishakai\ ;
+蓄膿症 < chikunoushou\ ;
+同人雑誌 < doujinzasshi\ ;
+花形株 < hanagatakabu\ ;
+司法裁判 < shihousaiban\ ;
+人体実験 < jintaijikken\ ;
+亡命政権 < boumeiseiken\ ;
+振出人 < furidashinin\ ;
+仲間同士 < nakamadoushi\ ;
+経営工学 < keieikougaku\ ;
+弁護依頼人 < bengoirainin\ ;
+賛否両論 < sanpiryouron\ ;
+不法集会 < fuhoushuukai\ ;
+眼高手低 < gankoushutei\ ;
+禁欲的 < kin''yokuteki\ ;
+自動小銃 < jidoushoujuu\ ;
+地域社会 < chiikishakai\ ;
+交流人事 < kouryuujinji\ ;
+特殊効果 < tokushukouka\ ;
+一分別 < hitofunbetsu\ ;
+自家中毒 < jikachuudoku\ ;
+人気番組 < ninkibangumi\ ;
+敵本主義 < tekihonshugi\ ;
+口内性交 < kounaiseikou\ ;
+脳軟化症 < nounankashou\ ;
+半独立 < handokuritsu\ ;
+現地法人 < genchihoujin\ ;
+自動車泥 < jidoushadoro\ ;
+一時停止 < ichijiteishi\ ;
+学園紛争 < gakuenfunsou\ ;
+最高学府 < saikougakufu\ ;
+保険契約 < hokenkeiyaku\ ;
+女性差別 < joseisabetsu\ ;
+児童福祉 < jidoufukushi\ ;
+執務中 < shitsumuchuu\ ;
+試験問題 < shikenmondai\ ;
+漸進主義 < zenshinshugi\ ;
+音信不通 < onshinfutsuu\ ;
+勇往邁進 < yuuoumaishin\ ;
+静止状態 < seishijoutai\ ;
+北支事変 < hokushijihen\ ;
+寸借詐欺 < sunshakusagi\ ;
+指名通話 < shimeitsuuwa\ ;
+苦心惨憺 < kushinsantan\ ;
+牽強付会 < kenkyoufukai\ ;
+寒冷前線 < kanreizensen\ ;
+利他主義者 < ritashugisha\ ;
+親日派 < shin''nichiha\ ;
+速度制限 < sokudoseigen\ ;
+四部合唱 < shibugasshou\ ;
+電電公社 < dendenkousha\ ;
+福島県 < fukushimaken\ ;
+調色板 < choushokuban\ ;
+優勝候補 < yuushoukouho\ ;
+友好関係 < yuukoukankei\ ;
+救援物資 < kyuuenbusshi\ ;
+剪定鋏 < senteibasami\ ;
+緑黄色 < ryokuoushoku\ ;
+包紙 < tsutsumigami\ ;
+下屋敷 < shimoyashiki\ ;
+神社仏閣 < jinjabukkaku\ ;
+車用品 < kurumayouhin\ ;
+耐久力 < taikyuuryoku\ ;
+水平思考 < suiheishikou\ ;
+音感教育 < onkankyouiku\ ;
+寝台虫 < shindaimushi\ ;
+嗜虐的 < shigyakuteki\ ;
+滞納処分 < tainoushobun\ ;
+中継局 < chuukeikyoku\ ;
+共同経営 < kyoudoukeiei\ ;
+長広舌 < choukouzetsu\ ;
+二六時中 < nirokujichuu\ ;
+一時賜金 < ichijishikin\ ;
+自然崇拝 < shizensuuhai\ ;
+審議未了 < shingimiryou\ ;
+養子縁組 < youshiengumi\ ;
+日没後 < nichibotsugo\ ;
+氏族制度 < shizokuseido\ ;
+動脈瘤 < doumyakuryuu\ ;
+一輪挿 < ichirinzashi\ ;
+軍陣医学 < gunjin''igaku\ ;
+蒸発皿 < jouhatsuzara\ ;
+正四面体 < seishimentai\ ;
+定格請負 < teikakuukeoi\ ;
+賃借権 < chinshakuken\ ;
+卸問屋 < oroshidon''ya\ ;
+防湿剤 < boushitsuzai\ ;
+収穫高 < shuukakudaka\ ;
+再出発 < saishuppatsu\ ;
+待遇改善 < taiguukaizen\ ;
+繊維光学 < sen''ikougaku\ ;
+黒人霊歌 < kokujinreika\ ;
+周極星 < shuukyokusei\ ;
+零行列 < reigyouretsu\ ;
+特殊機能 < tokushukinou\ ;
+経路積分 < keirosekibun\ ;
+国営農場 < kokueinoujou\ ;
+国粋主義 < kokusuishugi\ ;
+出発点 < shuppatsuten\ ;
+甲状腺炎 < koujousen''en\ ;
+合格率 < goukakuritsu\ ;
+資産合計 < shisangoukei\ ;
+鯨飲馬食 < geiinbashoku\ ;
+心臓発作 < shinzouhossa\ ;
+新人歌手 < shinjinkashu\ ;
+輸入手形 < yunyuutegata\ ;
+圧着端子 < atsugitanshi\ ;
+未改心者 < mikaishinsha\ ;
+無効投票 < mukoutouhyou\ ;
+行進曲 < koushinkyoku\ ;
+難攻不落 < nankoufuraku\ ;
+一心同体 < isshindoutai\ ;
+宥和政策 < yuuwaseisaku\ ;
+限界効用 < genkaikouyou\ ;
+十万億土 < juuman''okudo\ ;
+変態心理 < hentaishinri\ ;
+白熱灯 < hakunetsutou\ ;
+拍子記号 < hyoushikigou\ ;
+公会問答 < koukaimondou\ ;
+考古学者 < koukogakusha\ ;
+食料品 < shokuryouhin\ ;
+野球選手 < yakyuusenshu\ ;
+操車係 < soushagakari\ ;
+夢遊病者 < muyuubyousha\ ;
+要所要所 < youshoyousho\ ;
+湿電池 < shitsudenchi\ ;
+観掌術 < kanshoujutsu\ ;
+使徒継承 < shitokeishou\ ;
+励磁電流 < reijidenryuu\ ;
+志 < kokorozashi\ ;
+政 < matsurigoto\ ;
+社会制度 < shakaiseido\ ;
+代理領事 < dairiryouji\ ;
+点数切符 < tensuukippu\ ;
+化成肥料 < kaseihiryou\ ;
+未成年者 < miseinensha\ ;
+真骨頂 < shinkotchou\ ;
+必要品 < hitsuyouhin\ ;
+画世的 < kakuseiteki\ ;
+一天万乗 < ittenbanjou\ ;
+熨斗袋 < noshibukuro\ ;
+測地学 < sokuchigaku\ ;
+親子関係 < oyakokankei\ ;
+雁木鑢 < gangiyasuri\ ;
+再割引 < saiwaribiki\ ;
+恐怖政治 < kyoufuseiji\ ;
+奉献式 < houkenshiki\ ;
+虚数単位 < kyosuutan''i\ ;
+選挙制度 < senkyoseido\ ;
+初誕生 < hatsutanjou\ ;
+三本足 < sanbon''ashi\ ;
+判断力 < handanryoku\ ;
+大願成就 < daiganjouju\ ;
+協調性 < kyouchousei\ ;
+円卓会議 < entakukaigi\ ;
+天道乾 < tentouboshi\ ;
+大宮御所 < oomiyagosho\ ;
+白日夢 < hakujitsumu\ ;
+分析表 < bunsekihyou\ ;
+上下関係 < jougekankei\ ;
+承諾書 < shoudakusho\ ;
+少食家 < shoushokuka\ ;
+仮執行 < karishikkou\ ;
+握力計 < akuryokukei\ ;
+公営企業 < koueikigyou\ ;
+重液分離 < juuekibunri\ ;
+不足勝 < fusokugachi\ ;
+実践理性 < jissenrisei\ ;
+帯鋸 < obinokogiri\ ;
+後進国 < koushinkoku\ ;
+行住坐臥 < gyoujuuzaga\ ;
+言行一致 < genkouitchi\ ;
+洗眼薬 < sengan''yaku\ ;
+復習文 < fukushuubun\ ;
+広大無辺 < koudaimuhen\ ;
+優先事項 < yuusenjikou\ ;
+携帯電話 < keitaidenwa\ ;
+止血帯 < shiketsutai\ ;
+下宿料 < geshukuryou\ ;
+時代錯誤 < jidaisakugo\ ;
+人工衛星 < jinkoueisei\ ;
+重量級 < juuryoukyuu\ ;
+線形順序 < senkeijunjo\ ;
+召使 < meshitsukai\ ;
+前進軸 < zenshinjiku\ ;
+鉄石心 < tessekishin\ ;
+甘茶蔓 < amachadzuru\ ;
+外交官補 < gaikoukanho\ ;
+署名式 < shomeishiki\ ;
+人心地 < hitogokochi\ ;
+囚人服 < shuujinfuku\ ;
+律儀者 < richigimono\ ;
+力石 < chikaraishi\ ;
+住居手当 < juukyoteate\ ;
+雁木車 < gangiguruma\ ;
+道路標示 < dourohyouji\ ;
+白鼠 < shironezumi\ ;
+予備将校 < yobishoukou\ ;
+憂欝症 < yuuutsushou\ ;
+民間飛行 < minkanhikou\ ;
+実験式 < jikkenshiki\ ;
+永子作権 < eikosakuken\ ;
+社会運動 < shakaiundou\ ;
+移行計画 < ikoukeikaku\ ;
+狂信者 < kyoushinsha\ ;
+接近経路 < sekkinkeiro\ ;
+世界経済 < sekaikeizai\ ;
+浮世草子 < ukiyozoushi\ ;
+民族的 < minzokuteki\ ;
+定数是正 < teisuuzesei\ ;
+発言者 < hatsugensha\ ;
+力瘤 < chikarakobu\ ;
+単縦列 < tanjuuretsu\ ;
+安保条約 < anpojouyaku\ ;
+販売値段 < hanbainedan\ ;
+基底構造 < kiteikouzou\ ;
+必須条件 < hissujouken\ ;
+三人組 < san''ningumi\ ;
+黒斑病 < kokuhanbyou\ ;
+区裁判所 < kusaibansho\ ;
+予行演習 < yokouenshuu\ ;
+選挙運動 < senkyoundou\ ;
+国際規模 < kokusaikibo\ ;
+悪悪戯 < waruitazura\ ;
+運転免許 < untenmenkyo\ ;
+線形論理 < senkeironri\ ;
+実用品 < jitsuyouhin\ ;
+大腿骨 < daitaikotsu\ ;
+年賀郵便 < nengayuubin\ ;
+温風暖房 < onpuudanbou\ ;
+内部構造 < naibukouzou\ ;
+水蜜桃 < suimitsutou\ ;
+不定型詩 < futeikeishi\ ;
+漂流船 < hyouryuusen\ ;
+黄金崇拝 < ougonsuuhai\ ;
+世話女房 < sewanyoubou\ ;
+犬儒学派 < kenjugakuha\ ;
+頸動脈 < keidoumyaku\ ;
+一品料理 < ippinryouri\ ;
+亜硫酸塩 < aryuusan''en\ ;
+生兵法 < namabyouhou\ ;
+烏羽色 < karasubairo\ ;
+弟弟子 < otoutodeshi\ ;
+劇文学 < gekibungaku\ ;
+加薬飯 < kayakumeshi\ ;
+北半球 < kitahankyuu\ ;
+集中線 < shuuchuusen\ ;
+有声子音 < yuuseishiin\ ;
+得業士 < tokugyoushi\ ;
+皆兵制度 < kaiheiseido\ ;
+前進角 < zenshinkaku\ ;
+未経験者 < mikeikensha\ ;
+養殖池 < youshokuchi\ ;
+嗜虐性 < shigyakusei\ ;
+尊皇王攘夷 < son''noujoui\ ;
+上意下達 < jouikatatsu\ ;
+車間距離 < shakankyori\ ;
+氷河時代 < hyougajidai\ ;
+三人称 < san''ninshou\ ;
+情報理論 < jouhouriron\ ;
+御多忙中 < gotabouchuu\ ;
+中級品 < chuukyuuhin\ ;
+漂流者 < hyouryuusha\ ;
+愛染明王 < aizenmyouou\ ;
+誘惑物 < yuuwakumono\ ;
+頭蓋骨 < tougaikotsu\ ;
+発明品 < hatsumeihin\ ;
+平面交差 < heimenkousa\ ;
+失格者 < shikkakusha\ ;
+成績表 < seisekihyou\ ;
+経験主義 < keikenshugi\ ;
+弁護士会 < bengoshikai\ ;
+注文先 < chuumonsaki\ ;
+純情可憐 < junjoukaren\ ;
+載貨吃水 < saikakissui\ ;
+既決囚 < kiketsushuu\ ;
+半濁音符 < handakuonfu\ ;
+閨秀画家 < keishuugaka\ ;
+摂動論 < setsudouron\ ;
+伏流水 < fukuryuusui\ ;
+独裁的 < dokusaiteki\ ;
+高調子 < takachoushi\ ;
+立脚地 < rikkyakuchi\ ;
+三半規管 < sanhankikan\ ;
+封建時代 < houkenjidai\ ;
+越冬資金 < ettoushikin\ ;
+再構築 < saikouchiku\ ;
+所帯道具 < shotaidougu\ ;
+傲岸無礼 < gouganburei\ ;
+社会保険 < shakaihoken\ ;
+櫓太鼓 < yaguradaiko\ ;
+止血剤 < shiketsuzai\ ;
+較優位論 < kakuyuuiron\ ;
+世論調査 < yoronchousa\ ;
+冬期休暇 < toukikyuuka\ ;
+両方共 < ryouhoutomo\ ;
+上部構造 < joubukouzou\ ;
+松葉杖 < matsubadzue\ ;
+象形文字 < shoukeimoji\ ;
+力水 < chikaramizu\ ;
+沖積統 < chuusekitou\ ;
+仕事箱 < shigotobako\ ;
+氷醋酸 < hyousakusan\ ;
+農本主義 < nouhonshugi\ ;
+書籍商 < shosekishou\ ;
+一切衆生 < issaishujou\ ;
+旧態依然 < kyuutaiizen\ ;
+整理番号 < seiribangou\ ;
+仮綴本 < karitojihon\ ;
+発電所 < hatsudensho\ ;
+当座資産 < touzashisan\ ;
+官能的 < kan''nouteki\ ;
+残品整理 < zanpinseiri\ ;
+末梢的 < masshouteki\ ;
+中間国 < chuukankoku\ ;
+宇宙速度 < uchuusokudo\ ;
+思索的 < shisakuteki\ ;
+南口 < minamiguchi\ ;
+加水分解 < kasuibunkai\ ;
+出身校 < shusshinkou\ ;
+灰青色 < haiseishoku\ ;
+航海術 < koukaijutsu\ ;
+小東京 < shoutoukyou\ ;
+宣伝価値 < sendenkachi\ ;
+年季奉公 < nenkiboukou\ ;
+千人力 < sen''ninriki\ ;
+人工芝 < jinkoushiba\ ;
+軽量級 < keiryoukyuu\ ;
+力業 < chikarawaza\ ;
+貨幣経済 < kaheikeizai\ ;
+無期懲役 < mukichoueki\ ;
+拘束圧 < kousokuatsu\ ;
+戦闘力 < sentouryoku\ ;
+市場区分 < shijoukubun\ ;
+球面鏡 < kyuumenkyou\ ;
+初期設定 < shokisettei\ ;
+人造繊維 < jinzousen''i\ ;
+普通預金 < futsuuyokin\ ;
+低利資金 < teirishikin\ ;
+人形劇 < ningyougeki\ ;
+無骨者 < bukotsumono\ ;
+真珠細工 < shinjuzaiku\ ;
+主知主義 < shuchishugi\ ;
+逆睫 < sakamatsuge\ ;
+町奉行 < machibugyou\ ;
+空証文 < karashoumon\ ;
+二項係数 < nikoukeisuu\ ;
+素性構造 < soseikouzou\ ;
+愛国主義 < aikokushugi\ ;
+戦闘支援 < sentoushien\ ;
+人名辞書 < jinmeijisho\ ;
+前輪駆動 < zenrinkudou\ ;
+価格操作 < kakakusousa\ ;
+放物線 < houbutsusen\ ;
+形而下学 < keijikagaku\ ;
+一期一会 < ichigoichie\ ;
+調子者 < choushimono\ ;
+現実感 < genjitsukan\ ;
+鰹節 < katsuobushi\ ;
+積分学 < sekibungaku\ ;
+土木工事 < dobokukouji\ ;
+女子高生 < joshikousei\ ;
+現実性 < genjitsusei\ ;
+高電圧 < kouden''atsu\ ;
+学問的 < gakumonteki\ ;
+王道楽土 < oudourakudo\ ;
+悪戦苦闘 < akusenkutou\ ;
+神経外科 < shinkeigeka\ ;
+学究的 < gakkyuuteki\ ;
+非開示合意 < hikaijigoui\ ;
+収穫祭 < shuukakusai\ ;
+物理学 < butsurigaku\ ;
+不眠不休 < fuminfukyuu\ ;
+垂直線 < suichokusen\ ;
+名誉教授 < meiyokyouju\ ;
+図書館員 < toshokan''in\ ;
+歴史学 < rekishigaku\ ;
+潤滑剤 < junkatsuzai\ ;
+組織学 < soshikigaku\ ;
+高歌放吟 < koukahougin\ ;
+発電子 < hatsudenshi\ ;
+三尊仏 < sanzonbutsu\ ;
+引取人 < hikitorinin\ ;
+構成単位 < kouseitan''i\ ;
+外人記者 < gaijinkisha\ ;
+漂泊者 < hyouhakusha\ ;
+例外処理 < reigaishori\ ;
+夫婦茶碗 < meotodjawan\ ;
+真田虫 < sanadamushi\ ;
+闇商人 < yamishounin\ ;
+入漁料 < nyuugyoryou\ ;
+全面講和 < zenmenkouwa\ ;
+七宝焼 < shippouyaki\ ;
+鋼鉄板 < koutetsuban\ ;
+優良株 < yuuryoukabu\ ;
+本格的 < honkakuteki\ ;
+復讐戦 < fukushuusen\ ;
+暴力団 < bouryokudan\ ;
+初診料 < shoshinryou\ ;
+義務教育 < gimukyouiku\ ;
+口達者 < kuchidassha\ ;
+耐熱性 < tainetsusei\ ;
+増血剤 < zouketsuzai\ ;
+悲観論者 < hikanronsha\ ;
+個人情報 < kojinjouhou\ ;
+北北東 < hokuhokutou\ ;
+発言権 < hatsugenken\ ;
+町段畝歩 < choutansebu\ ;
+急成長 < kyuuseichou\ ;
+代理大使 < dairitaishi\ ;
+構造主義 < kouzoushugi\ ;
+出資額 < shusshigaku\ ;
+内分泌 < naibunpitsu\ ;
+兜虫 < kabutomushi\ ;
+内線電話 < naisendenwa\ ;
+公示価格 < koujikakaku\ ;
+液体酸素 < ekitaisanso\ ;
+四旬節 < shijunsetsu\ ;
+沃度丁幾 < youdochinki\ ;
+九官鳥 < kyuukanchou\ ;
+刑事訴訟 < keijisoshou\ ;
+老人力 < roujinryoku\ ;
+稼働人口 < kadoujinkou\ ;
+軽機関銃 < keikikanjuu\ ;
+機密保護 < kimitsuhogo\ ;
+建築士 < kenchikushi\ ;
+太極拳 < taikyokuken\ ;
+生番組 < namabangumi\ ;
+養殖場 < youshokujou\ ;
+予備交渉 < yobikoushou\ ;
+虚脱感 < kyodatsukan\ ;
+象牙質 < zougeshitsu\ ;
+隆鼻術 < ryuubijutsu\ ;
+表面積 < hyoumenseki\ ;
+透視図法 < toushizuhou\ ;
+練習試合 < renshuujiai\ ;
+努力賞 < doryokushou\ ;
+十人並 < juunin''nami\ ;
+薬鑵頭 < yakan''atama\ ;
+可視光線 < kashikousen\ ;
+筆記試験 < hikkishiken\ ;
+公定相場 < kouteisouba\ ;
+価格規制 < kakakukisei\ ;
+加重平均 < kajuuheikin\ ;
+武装警官 < busoukeikan\ ;
+商売筋 < shoubaisuji\ ;
+水子供養 < mizugokuyou\ ;
+港湾局 < kouwankyoku\ ;
+千変万化 < senpenbanka\ ;
+水商売 < mizushoubai\ ;
+鉄道便 < tetsudoubin\ ;
+査定価格 < sateikakaku\ ;
+民族学 < minzokugaku\ ;
+歴史劇 < rekishigeki\ ;
+溝形鋼 < mizogatakou\ ;
+明晰夢 < meisekiyume\ ;
+形体 < narikatachi\ ;
+下層社会 < kasoushakai\ ;
+断続的 < danzokuteki\ ;
+式部省 < shikibushou\ ;
+極道者 < gokudoumono\ ;
+開校式 < kaikoushiki\ ;
+民約論 < min''yakuron\ ;
+防御率 < bougyoritsu\ ;
+表面的 < hyoumenteki\ ;
+計時係 < keijigakari\ ;
+後発品 < kouhatsuhin\ ;
+自然主義 < shizenshugi\ ;
+薩摩焼 < satsumayaki\ ;
+床柱 < tokobashira\ ;
+興味本位 < kyoumihon''i\ ;
+出身地 < shusshinchi\ ;
+無体資産 < mutaishisan\ ;
+護身術 < goshinjutsu\ ;
+経済封鎖 < keizaifuusa\ ;
+競争相手 < kyousouaite\ ;
+出没 < shutsubotsu\ ;
+与太話 < yotabanashi\ ;
+左端 < hidarihashi\ ;
+再入学 < sainyuugaku\ ;
+五輪大会 < gorintaikai\ ;
+協約書 < kyouyakusho\ ;
+日本三景 < nihonsankei\ ;
+三羽烏 < sanbagarasu\ ;
+訪問客 < houmonkyaku\ ;
+油性塗料 < yuseitoryou\ ;
+治験薬 < chiken''yaku\ ;
+性善説 < seizensetsu\ ;
+仕事柄 < shigotogara\ ;
+大根足 < daikon''ashi\ ;
+改訂増補 < kaiteizouho\ ;
+一般概念 < ippangainen\ ;
+光瀬龍 < mitsuseryuu\ ;
+狼藉者 < rouzekimono\ ;
+心拍数 < shinpakusuu\ ;
+小一時間 < koichijikan\ ;
+三脚椅子 < sankyakuisu\ ;
+動物誌 < doubutsushi\ ;
+返却値 < henkyakuchi\ ;
+皮膚感覚 < hifukankaku\ ;
+無駄話 < mudabanashi\ ;
+分子式 < bunshishiki\ ;
+降車口 < koushaguchi\ ;
+検出器 < kenshutsuki\ ;
+権利行使 < kenrikoushi\ ;
+落葉松 < rakuyoushou\ ;
+極前線 < kyokuzensen\ ;
+超越点 < chouetsuten\ ;
+黒猩々 < kuroshoujou\ ;
+漢字変換 < kanjihenkan\ ;
+国慶節 < kokkeisetsu\ ;
+無体財産 < mutaizaisan\ ;
+巴瓦 < tomoegawara\ ;
+天産物 < tensanbutsu\ ;
+紳士録 < shinshiroku\ ;
+再入国 < sainyuukoku\ ;
+全体会議 < zentaikaigi\ ;
+二重抵当 < nijuuteitou\ ;
+切日 < shimekiribi\ ;
+機械文明 < kikaibunmei\ ;
+簡潔性 < kanketsusei\ ;
+天津乙女 < amatsuotome\ ;
+切断面 < setsudanmen\ ;
+引込線 < hikikomisen\ ;
+利害関係 < rigaikankei\ ;
+多角経営 < takakukeiei\ ;
+夫婦別姓 < fuufubessei\ ;
+粗忽者 < sokotsumono\ ;
+開会式 < kaikaishiki\ ;
+日本語訳 < nihongoyaku\ ;
+交換機能 < koukankinou\ ;
+産卵場所 < sanranbasho\ ;
+感傷的 < kanshouteki\ ;
+市有物 < shiyuubutsu\ ;
+走行距離 < soukoukyori\ ;
+無尽組合 < mujinkumiai\ ;
+再生利用 < saiseiriyou\ ;
+聖職者 < seishokusha\ ;
+航空母艦 < koukuubokan\ ;
+中衣嚢 < nakagakushi\ ;
+独立語 < dokuritsugo\ ;
+人名辞典 < jinmeijiten\ ;
+昨非今是 < sakuhikonze\ ;
+育児室 < ikujishitsu\ ;
+新古典派 < shinkotenha\ ;
+繁殖地 < hanshokuchi\ ;
+一人称 < ichininshou\ ;
+長崎県 < nagasakiken\ ;
+経営資源 < keieishigen\ ;
+幼心 < osanagokoro\ ;
+被害妄想 < higaimousou\ ;
+電力計 < denryokukei\ ;
+製氷皿 < seihyouzara\ ;
+細菌兵器 < saikinheiki\ ;
+飽和溶液 < houwayoueki\ ;
+一般会計 < ippankaikei\ ;
+準備資金 < junbishikin\ ;
+主税局 < shuzeikyoku\ ;
+政党政治 < seitouseiji\ ;
+母子年金 < boshinenkin\ ;
+接続語 < setsuzokugo\ ;
+特集号 < tokushuugou\ ;
+黒褐色 < kokkasshoku\ ;
+美容整形 < biyouseikei\ ;
+中国人 < chuugokujin\ ;
+花筵 < hanamushiro\ ;
+初期投資 < shokitoushi\ ;
+最短距離 < saitankyori\ ;
+周辺機器 < shuuhenkiki\ ;
+制限時間 < seigenjikan\ ;
+勤労意欲 < kinrouiyoku\ ;
+従属国 < juuzokukoku\ ;
+口返答 < kuchihentou\ ;
+倉庫会社 < soukogaisha\ ;
+男鰥 < otokoyamome\ ;
+未開社会 < mikaishakai\ ;
+減衰率 < gensuiritsu\ ;
+導電率 < doudenritsu\ ;
+一了簡 < ichiryoukan\ ;
+過大評価 < kadaihyouka\ ;
+花祭 < hanamatsuri\ ;
+再輸出 < saiyushutsu\ ;
+青銅色 < seidoushoku\ ;
+破廉恥罪 < harenchizai\ ;
+隊商宿 < taishouyado\ ;
+時限装置 < jigensouchi\ ;
+景気変動 < keikihendou\ ;
+式次第 < shikishidai\ ;
+一次記憶 < ichijikioku\ ;
+生産物 < seisanbutsu\ ;
+衝動行為 < shoudoukoui\ ;
+許容範囲 < kyoyouhan''i\ ;
+幻覚症 < genkakushou\ ;
+生産管理 < seisankanri\ ;
+投手力 < toushuryoku\ ;
+閉会式 < heikaishiki\ ;
+沖積層 < chuusekisou\ ;
+医療伝道 < iryoudendou\ ;
+催眠術 < saiminjutsu\ ;
+蝙蝠傘 < koumorigasa\ ;
+突貫工事 < tokkankouji\ ;
+向日性 < kounichisei\ ;
+初姿 < hatsusugata\ ;
+吸取紙 < suitorigami\ ;
+選考基準 < senkoukijun\ ;
+高話 < takabanashi\ ;
+高圧的 < kouatsuteki\ ;
+有力者 < yuuryokusha\ ;
+別問題 < betsumondai\ ;
+代数式 < daisuushiki\ ;
+入港料 < nyuukouryou\ ;
+膝頭 < hizagashira\ ;
+無宿者 < mushukumono\ ;
+都市銀行 < toshiginkou\ ;
+原子力 < genshiryoku\ ;
+成文律 < seibunritsu\ ;
+男一匹 < otokoippiki\ ;
+塞栓症 < sokusenshou\ ;
+商売柄 < shoubaigara\ ;
+腹足類 < fukusokurui\ ;
+東印度 < higashiindo\ ;
+資本力 < shihonryoku\ ;
+巻柱 < makibashira\ ;
+祇園祭 < gionmatsuri\ ;
+上京中 < joukyouchuu\ ;
+催眠薬 < saimin''yaku\ ;
+宣伝映画 < senden''eiga\ ;
+慈善事業 < jizenjigyou\ ;
+現象学 < genshougaku\ ;
+秋津島 < akitsushima\ ;
+羊小屋 < hitsujigoya\ ;
+装飾品 < soushokuhin\ ;
+千日手 < sen''nichite\ ;
+加速度計 < kasokudokei\ ;
+傲慢不遜 < goumanfuson\ ;
+刑務作業 < keimusagyou\ ;
+地球規模 < chikyuukibo\ ;
+植民地 < shokuminchi\ ;
+途中計時 < tochuukeiji\ ;
+外分泌 < gaibunpitsu\ ;
+隣近所 < tonarikinjo\ ;
+対頂角 < taichoukaku\ ;
+高射特科 < koushatokka\ ;
+肩甲骨 < kenkoukotsu\ ;
+三面六臂 < sanmenroppi\ ;
+微分断面 < bibundanmen\ ;
+分娩作用 < bunbensayou\ ;
+腰弁当 < koshibentou\ ;
+口巧者 < kuchigousha\ ;
+保健体育 < hokentaiiku\ ;
+暴走運転 < bousouunten\ ;
+底力 < sokodjikara\ ;
+不世出 < fuseishutsu\ ;
+諮問機関 < shimonkikan\ ;
+先日付 < sakihidzuke\ ;
+透視力 < toushiryoku\ ;
+創設者 < sousetsusha\ ;
+田舎芝居 < inakashibai\ ;
+金魚鉢 < kingyobachi\ ;
+癌遺伝子 < gan''idenshi\ ;
+百鬼夜行 < hyakkiyakou\ ;
+無死満塁 < mushimanrui\ ;
+二番抵当 < nibanteitou\ ;
+衒学的 < gengakuteki\ ;
+総務部長 < soumubuchou\ ;
+金石学 < kinsekigaku\ ;
+野菜畑 < yasaibatake\ ;
+自由貿易 < jiyuuboueki\ ;
+平和条項 < heiwajoukou\ ;
+直感的 < chokkanteki\ ;
+動物相 < doubutsusou\ ;
+気分転換 < kibuntenkan\ ;
+賃仕事 < chinshigoto\ ;
+特許主 < tokkyonushi\ ;
+儒教主義 < jukyoushugi\ ;
+奉納物 < hounoubutsu\ ;
+女歌舞伎 < on''nakabuki\ ;
+保釈中 < hoshakuchuu\ ;
+飛行機雲 < hikoukigumo\ ;
+青藍色 < seiranshoku\ ;
+脅迫者 < kyouhakusha\ ;
+動物界 < doubutsukai\ ;
+路面電車 < romendensha\ ;
+通行上 < tsuukoudome\ ;
+強奪者 < goudatsusha\ ;
+脅迫罪 < kyouhakuzai\ ;
+単独行為 < tandokukoui\ ;
+団結権 < danketsuken\ ;
+誠心誠意 < seishinseii\ ;
+約半年 < yakuhan''nen\ ;
+日本料理 < nihonryouri\ ;
+投票箱 < touhyoubako\ ;
+素人芸 < shiroutogei\ ;
+積極性 < sekkyokusei\ ;
+極座標 < kyokuzahyou\ ;
+寝正月 < neshougatsu\ ;
+浚渫機 < shunsetsuki\ ;
+翼面積 < yokumenseki\ ;
+畳表 < tatamiomote\ ;
+総目録 < soumokuroku\ ;
+核反応 < kakuhan''nou\ ;
+制酸薬 < seisan''yaku\ ;
+超人的 < choujinteki\ ;
+第一流 < daiichiryuu\ ;
+故事来歴 < kojiraireki\ ;
+内輪喧嘩 < uchiwagenka\ ;
+足拍子 < ashibyoushi\ ;
+弱材料 < yowazairyou\ ;
+接触線 < sesshokusen\ ;
+亜硝酸塩 < ashousan''en\ ;
+一角獣座 < ikkakujuuza\ ;
+出力 < shutsuryoku\ ;
+役力士 < yakurikishi\ ;
+統轄者 < toukatsusha\ ;
+反体制派 < hantaiseiha\ ;
+区劃整理 < kukakuseiri\ ;
+仕事中 < shigotochuu\ ;
+土百姓 < dobyakushou\ ;
+文学賞 < bungakushou\ ;
+招請国 < shouseikoku\ ;
+総収入 < soushuunyuu\ ;
+測量船 < sokuryousen\ ;
+放任主義 < houninshugi\ ;
+遺族給付 < izokukyuufu\ ;
+変位制御 < hen''iseigyo\ ;
+借地権 < shakuchiken\ ;
+文部大臣 < monbudaijin\ ;
+女権論者 < jokenronsha\ ;
+下士官兵 < kashikanhei\ ;
+沖積世 < chuusekisei\ ;
+中禅寺湖 < chuuzenjiko\ ;
+口述書 < koujutsusho\ ;
+殉職者 < junshokusha\ ;
+製品原価 < seihingenka\ ;
+人民主義 < jinminshugi\ ;
+勉強部屋 < benkyoubeya\ ;
+病虫害 < byouchuugai\ ;
+神宮外苑 < jinguugaien\ ;
+桜餅 < sakuramochi\ ;
+桜飯 < sakurameshi\ ;
+技術的 < gijutsuteki\ ;
+小説家 < shousetsuka\ ;
+特約店 < tokuyakuten\ ;
+交通量 < koutsuuryou\ ;
+全般支援 < zenpanshien\ ;
+少壮有為 < shousouyuui\ ;
+経口投与 < keikoutouyo\ ;
+道案内 < michian''nai\ ;
+換気装置 < kankisouchi\ ;
+共和制度 < kyouwaseido\ ;
+道普請 < michibushin\ ;
+好色者 < koushokusha\ ;
+二課勉強 < nikabenkyou\ ;
+消臭剤 < shoushuuzai\ ;
+予防接種 < yobousesshu\ ;
+独善的 < dokuzenteki\ ;
+異国情緒 < ikokujoucho\ ;
+解像力 < kaizouryoku\ ;
+運転停止 < untenteishi\ ;
+悪口雑言 < akkouzougon\ ;
+軍法会議 < gunpoukaigi\ ;
+直出 < chokushutsu\ ;
+浸透圧 < shintouatsu\ ;
+熱血漢 < nekketsukan\ ;
+天地無用 < tenchimuyou\ ;
+畳職 < tatamishoku\ ;
+異常性欲 < ijouseiyoku\ ;
+岩石学 < gansekigaku\ ;
+蜜柑畑 < mikanbatake\ ;
+烏天狗 < karasutengu\ ;
+紳士的 < shinshiteki\ ;
+人工受胎 < jinkoujutai\ ;
+日本文法 < nihonbunpou\ ;
+窒息死 < chissokushi\ ;
+上下水道 < jougesuidou\ ;
+三大節 < sandaisetsu\ ;
+活断層 < katsudansou\ ;
+銀行口座 < ginkoukouza\ ;
+目鼻立 < mehanadachi\ ;
+周期律 < shuukiritsu\ ;
+草冠 < kusakanmuri\ ;
+退紅色 < taikoushoku\ ;
+夏期大学 < kakidaigaku\ ;
+連邦議会 < renpougikai\ ;
+撮像管 < satsuzoukan\ ;
+腹八分 < harahachibu\ ;
+末期症状 < makkijoutai\ ;
+五段動詞 < godandoushi\ ;
+立法機関 < rippoukikan\ ;
+因循姑息 < injunkosoku\ ;
+進入路 < shin''nyuuro\ ;
+大山椒魚 < oosanshouuo\ ;
+虎視眈眈 < koshitantan\ ;
+背日性 < haijitsusei\ ;
+背面飛行 < haimenhikou\ ;
+弾丸道路 < dangandouro\ ;
+間奏曲 < kansoukyoku\ ;
+優先外貨 < yuusengaika\ ;
+当用漢字 < touyoukanji\ ;
+指南役 < shinan''yaku\ ;
+脅迫状 < kyouhakujou\ ;
+民本主義 < minponshugi\ ;
+功名心 < koumyoushin\ ;
+回教国 < kaikyoukoku\ ;
+骨膜炎 < kotsumakuen\ ;
+人工受紛 < jinkoujufun\ ;
+主要物価 < shuyoubukka\ ;
+沢庵漬 < takuandzuke\ ;
+根切虫 < nekirimushi\ ;
+人工受精 < jinkoujusei\ ;
+送料共 < souryoutomo\ ;
+張本人 < chouhon''nin\ ;
+登山電車 < tozandensha\ ;
+暫定政府 < zanteiseifu\ ;
+乗車口 < joushaguchi\ ;
+乗合馬車 < noriaibasha\ ;
+一日路 < ichinichiji\ ;
+地質図 < chishitsuzu\ ;
+期成同盟 < kiseidoumei\ ;
+立明戦 < ritsumeisen\ ;
+抽象論 < chuushouron\ ;
+散光星雲 < sankouseiun\ ;
+仕訳表 < shiwakehyou\ ;
+飢餓療法 < kigaryouhou\ ;
+国税庁 < kokuzeichou\ ;
+糸偏景気 < itohenkeiki\ ;
+物価変動 < bukkahendou\ ;
+性悪説 < seiakusetsu\ ;
+近郊都市 < kinkoutoshi\ ;
+懐郷病 < kaikyoubyou\ ;
+公開期間 < koukaikikan\ ;
+前後不覚 < zengofukaku\ ;
+準備体操 < junbitaisou\ ;
+母系家族 < bokeikazoku\ ;
+歯科医術 < shikaijutsu\ ;
+金管楽器 < kinkangakki\ ;
+切磋琢磨 < sessatakuma\ ;
+一時解雇 < ichijikaiko\ ;
+柑橘類 < kankitsurui\ ;
+運転資金 < untenshikin\ ;
+塑性限界 < soseigenkai\ ;
+金権政治 < kinkenseiji\ ;
+防御部隊 < bougyobutai\ ;
+静止衛星 < seishieisei\ ;
+一音節 < ichionsetsu\ ;
+再度協議 < saidokyougi\ ;
+脱炭酸 < datsutansan\ ;
+新技術 < shingijutsu\ ;
+逆探知 < gyakutanchi\ ;
+一切合財 < issaigassai\ ;
+遺産相続 < isansouzoku\ ;
+拾得者 < shuutokusha\ ;
+宝物殿 < houmotsuden\ ;
+喫煙席 < kitsuenseki\ ;
+冷血漢 < reiketsukan\ ;
+塑性変形 < soseihenkei\ ;
+見様見真似 < miyoumimane\ ;
+主力艦 < shuryokukan\ ;
+一天四海 < ittenshikai\ ;
+車大工 < kurumadaiku\ ;
+過食症 < kashokushou\ ;
+音響効果 < onkyoukouka\ ;
+宿命論 < shukumeiron\ ;
+入金票 < nyuukinhyou\ ;
+単本位性 < tanhon''isei\ ;
+雲散霧消 < unsanmushou\ ;
+全体主義 < zentaishugi\ ;
+花屋敷 < hanayashiki\ ;
+共白髪 < tomoshiraga\ ;
+停止時間 < teishijikan\ ;
+低空飛行 < teikuuhikou\ ;
+口座係 < kouzakakari\ ;
+瓢虫 < tentoumushi\ ;
+生存率 < seizonritsu\ ;
+支度部屋 < shitakubeya\ ;
+熊本県 < kumamotoken\ ;
+直銭形 < chokusenkei\ ;
+動物性 < doubutsusei\ ;
+原爆症 < genbakushou\ ;
+加工貿易 < kakouboueki\ ;
+衛星放送 < eiseihousou\ ;
+電気分解 < denkibunkai\ ;
+左下 < hidarishita\ ;
+風致地区 < fuuchichiku\ ;
+密閉容器 < mippeiyouki\ ;
+連帯債務 < rentaisaimu\ ;
+金剛薩堕 < kongousatta\ ;
+一人天下 < hitoridenka\ ;
+電動式 < dendoushiki\ ;
+時間反転 < jikanhanten\ ;
+生産力 < seisanryoku\ ;
+副牧師 < fukubokushi\ ;
+聖餐式 < seisanshiki\ ;
+逆関数 < gyakukansuu\ ;
+七五三 < shichigosan\ ;
+駐留軍 < chuuryuugun\ ;
+唯物論 < yuibutsuron\ ;
+旅商人 < tabishounin\ ;
+西欧文明 < seioubunmei\ ;
+下部組織 < kabusoshiki\ ;
+相乗効果 < soujoukouka\ ;
+水平距離 < suiheikyori\ ;
+百出 < hyakushutsu\ ;
+技術料 < gijutsuryou\ ;
+軍備撤廃 < gunbiteppai\ ;
+固有名詞 < koyuumeishi\ ;
+練習帳 < renshuuchou\ ;
+造石高 < zoukokudaka\ ;
+軍隊式 < guntaishiki\ ;
+翻訳者 < hon''yakusha\ ;
+潤目鰯 < urumeiwashi\ ;
+人間疎外 < ningensogai\ ;
+茶褐色 < chakasshoku\ ;
+確実度 < kakujitsudo\ ;
+有機化学 < yuukikagaku\ ;
+総力戦 < souryokusen\ ;
+仲間値段 < nakamanedan\ ;
+好色漢 < koushokukan\ ;
+温故知新 < onkochishin\ ;
+初投稿 < hatsutoukou\ ;
+万万一 < manman''ichi\ ;
+暗視装置 < anshisouchi\ ;
+国家試験 < kokkashiken\ ;
+青果市場 < seikaichiba\ ;
+若侍 < wakazamurai\ ;
+紳士服 < shinshifuku\ ;
+民事裁判 < minjisaiban\ ;
+原子兵器 < genshiheiki\ ;
+一仕事 < hitoshigoto\ ;
+嗅神経 < kyuushinkei\ ;
+肯定応答 < kouteioutou\ ;
+変更不能 < henkoufunou\ ;
+継続的 < keizokuteki\ ;
+文学的 < bungakuteki\ ;
+紀勢本線 < kiseihonsen\ ;
+候由 < sourouyoshi\ ;
+麻裏草履 < asaurazouri\ ;
+六重唱 < rokujuushou\ ;
+台湾坊主 < taiwanbouzu\ ;
+季刊雑誌 < kikanzasshi\ ;
+南阿戦争 < nan''asensou\ ;
+無線周波 < musenshuuha\ ;
+玄人筋 < kuroutosuji\ ;
+長期金利 < choukikinri\ ;
+囃子方 < hayashikata\ ;
+大人物 < daijinbutsu\ ;
+飛行機等 < hikoukinado\ ;
+傀儡政府 < kairaiseifu\ ;
+同系色 < doukeishoku\ ;
+紅白粉 < benioshiroi\ ;
+宣誓式 < senseishiki\ ;
+市外電話 < shigaidenwa\ ;
+連邦政府 < renpouseifu\ ;
+放歌高吟 < houkakougin\ ;
+中和熱 < chuuwanetsu\ ;
+微量元素 < biryougenso\ ;
+英字新聞 < eijishinbun\ ;
+満身創痍 < manshinsoui\ ;
+第二組合 < dainikumiai\ ;
+消耗的 < shoukouteki\ ;
+攻撃的 < kougekiteki\ ;
+埋蔵物 < maizoubutsu\ ;
+副読本 < fukudokuhon\ ;
+麝香鼠 < jakounezumi\ ;
+木賃宿 < kichin''yado\ ;
+四角柱 < shikakuchuu\ ;
+中空壁 < chuukuukabe\ ;
+婦人警官 < fujinkeikan\ ;
+考証学 < koushougaku\ ;
+第三世界 < daisansekai\ ;
+毘沙門天 < bishamonten\ ;
+社会主義 < shakaishugi\ ;
+学位論文 < gakuironbun\ ;
+実証的 < jisshouteki\ ;
+救済策 < kyuusaisaku\ ;
+軍国調 < gunkokuchou\ ;
+白蝋病 < hakuroubyou\ ;
+社交辞令 < shakoujirei\ ;
+徴兵忌避 < chouheikihi\ ;
+狂犬病 < kyoukenbyou\ ;
+民衆的 < minshuuteki\ ;
+機会均等 < kikaikintou\ ;
+暫定措置 < zanteisochi\ ;
+方向音痴 < houkouonchi\ ;
+一両年 < ichiryounen\ ;
+世界銀行 < sekaiginkou\ ;
+大仏殿 < daibutsuden\ ;
+刹那的 < setsunateki\ ;
+全権委任 < zenken''inin\ ;
+伽話 < togibanashi\ ;
+自然言語 < shizengengo\ ;
+勅任官 < chokuninkan\ ;
+誇大妄想 < kodaimousou\ ;
+双十節 < soujuusetsu\ ;
+好色本 < koushokubon\ ;
+化粧道具 < keshoudougu\ ;
+不変資本 < fuhenshihon\ ;
+窒化物 < chikkabutsu\ ;
+松飾 < matsukazari\ ;
+三角翼 < sankakuyoku\ ;
+賞味期限 < shoumikigen\ ;
+成長株 < seichoukabu\ ;
+石材商 < sekizaishou\ ;
+供託金 < kyoutakukin\ ;
+心臓外科 < shinzougeka\ ;
+猫額大 < byougakudai\ ;
+地方色 < chihoushoku\ ;
+幾何級数 < kikakyuusuu\ ;
+三部合奏 < sanbugassou\ ;
+生中継 < namachuukei\ ;
+吸収剤 < kyuushuuzai\ ;
+蒙古人種 < moukojinshu\ ;
+電気化学 < denkikagaku\ ;
+東風 < higashikaze\ ;
+建蔽率 < kenpeiritsu\ ;
+客観的 < kyakkanteki\ ;
+豆腐一丁 < toufuitchou\ ;
+消費都市 < shouhitoshi\ ;
+下級職 < kakyuushoku\ ;
+一一〇番 < hyakutooban\ ;
+修飾語 < shuushokugo\ ;
+家族制度 < kazokuseido\ ;
+生存期間 < seizonkikan\ ;
+大食漢 < taishokukan\ ;
+冷笑的 < reishouteki\ ;
+支給額 < shikyuugaku\ ;
+不均質 < fukinshitsu\ ;
+代表的 < daihyouteki\ ;
+入道雲 < nyuudougumo\ ;
+野良仕事 < norashigoto\ ;
+共通点 < kyoutsuuten\ ;
+日伊辞典 < nichiijiten\ ;
+公徳心 < koutokushin\ ;
+不正乗車 < fuseijousha\ ;
+調査結果 < chousakekka\ ;
+形式論 < keishikiron\ ;
+不当廉売 < futourenbai\ ;
+金環食 < kinkanshoku\ ;
+出札所 < shussatsujo\ ;
+滅多矢鱈 < mettayatara\ ;
+北極海 < hokkyokukai\ ;
+前人未踏 < zenjinmitou\ ;
+行官庁 < gyoukanchou\ ;
+不当利得 < futouritoku\ ;
+回教寺院 < kaikyoujiin\ ;
+保身術 < hoshinjutsu\ ;
+鑑識眼 < kanshikigan\ ;
+北極洋 < hokkyokuyou\ ;
+赤紫 < akamurasaki\ ;
+軍事訓練 < gunjikunren\ ;
+彫刻界 < choukokukai\ ;
+馬鹿話 < bakabanashi\ ;
+総合口座 < sougoukouza\ ;
+物納税 < butsunouzei\ ;
+郡県制度 < gunkenseido\ ;
+使用可能 < shiyoukanou\ ;
+下女中 < shimojochuu\ ;
+内部留保 < naiburyuuho\ ;
+地下室 < chikashitsu\ ;
+再販制度 < saihanseido\ ;
+被選挙権 < hisenkyoken\ ;
+貸本屋 < kashihon''ya\ ;
+物価統制 < bukkatousei\ ;
+阿呆陀羅経 < ahodarakyou\ ;
+因数分解 < insuubunkai\ ;
+鍾乳洞 < shounyuudou\ ;
+職員録 < shokuinroku\ ;
+生生流転 < seiseiruten\ ;
+無知蒙昧 < muchimoumai\ ;
+梯子酒 < hashigozake\ ;
+滞在客 < taizaikyaku\ ;
+蓄電池 < chikudenchi\ ;
+試掘者 < shikutsusha\ ;
+大学寮 < daigakuryou\ ;
+姫小松 < himekomatsu\ ;
+真実味 < shinjitsumi\ ;
+旅役者 < tabiyakusha\ ;
+国民的 < kokuminteki\ ;
+戦没者 < senbotsusha\ ;
+流行病 < ryuukoubyou\ ;
+彫刻版 < choukokuban\ ;
+堕落坊主 < darakubouzu\ ;
+舞台度胸 < butaidokyou\ ;
+周旋業 < shuusengyou\ ;
+団扇虫 < uchiwamushi\ ;
+泰西名画 < taiseimeiga\ ;
+柳腰 < yanagigoshi\ ;
+口小言 < kuchikogoto\ ;
+法治国家 < houchikokka\ ;
+優先順位 < yuusenjun''i\ ;
+任命式 < ninmeishiki\ ;
+電力債 < denryokusai\ ;
+単位組合 < tan''ikumiai\ ;
+力動的 < rikidouteki\ ;
+夏帽子 < natsuboushi\ ;
+睡眠薬 < suimin''yaku\ ;
+卸相場 < oroshisouba\ ;
+印刷業 < insatsugyou\ ;
+管理情報 < kanrijouhou\ ;
+伝導率 < dendouritsu\ ;
+蛸入道 < takonyuudou\ ;
+談話室 < danwashitsu\ ;
+完全主義 < kanzenshugi\ ;
+安月給 < yasugekkyuu\ ;
+北極星 < hokkyokusei\ ;
+御霊代 < mitamashiro\ ;
+七不思議 < nanafushigi\ ;
+測量士 < sokuryoushi\ ;
+出願時 < shutsuganji\ ;
+報復行為 < houfukukoui\ ;
+三角琴 < sankakugoto\ ;
+鉄条網 < tetsujoumou\ ;
+宣伝文句 < sendenmonku\ ;
+二成文系 < niseibunkei\ ;
+体内時計 < tainaidokei\ ;
+翻訳権 < hon''yakuken\ ;
+玉杓子 < tamajakushi\ ;
+工業国 < kougyoukoku\ ;
+終夜運転 < shuuyaunten\ ;
+周旋料 < shuusenryou\ ;
+追撃戦 < tsuigekisen\ ;
+加速運動 < kasokuundou\ ;
+傷病兵 < shoubyouhei\ ;
+彼岸桜 < higanzakura\ ;
+対抗部隊 < taikoubutai\ ;
+結婚費用 < kekkonhiyou\ ;
+一時払 < ichijibarai\ ;
+内容物 < naiyoubutsu\ ;
+軍事政権 < gunjiseiken\ ;
+有機農法 < yuukinouhou\ ;
+防衛部長 < boueibuchou\ ;
+運営資金 < un''eishikin\ ;
+月見蕎麦 < tsukimisoba\ ;
+人生航路 < jinseikouro\ ;
+無一物 < muichimotsu\ ;
+生命保険 < seimeihoken\ ;
+労働力 < roudouryoku\ ;
+応急手当 < oukyuuteate\ ;
+有形無形 < yuukeimukei\ ;
+若竹亭 < wakataketei\ ;
+翻訳書 < hon''yakusho\ ;
+到着駅 < touchakueki\ ;
+男心 < otokogokoro\ ;
+少国民 < shoukokumin\ ;
+受信回路 < jushinkairo\ ;
+参考図書 < sankoutosho\ ;
+生学問 < namagakumon\ ;
+英雄崇拝 < eiyuusuuhai\ ;
+今月分 < kongetsubun\ ;
+分数式 < bunsuushiki\ ;
+受験番号 < jukenbangou\ ;
+重農主義 < juunoushugi\ ;
+授賞式 < jushoushiki\ ;
+掌中本 < shouchuubon\ ;
+省力化 < shouryokuka\ ;
+代表格 < daihyoukaku\ ;
+護国神社 < gokokujinja\ ;
+昼興行 < hirukougyou\ ;
+黙示録 < mokushiroku\ ;
+明治神宮 < meijijinguu\ ;
+少数意見 < shousuuiken\ ;
+人虱 < hitoshirami\ ;
+比翼連理 < hiyokurenri\ ;
+検察官 < kensatsukan\ ;
+供託者 < kyoutakusha\ ;
+海産物 < kaisanbutsu\ ;
+有期年金 < yuukinenkin\ ;
+返信用 < henshin''you\ ;
+二元放送 < nigenhousou\ ;
+自信過剰 < jishinkajou\ ;
+遁走曲 < tonsoukyoku\ ;
+奉納相撲 < hounouzumou\ ;
+辻強盗 < tsujigoutou\ ;
+人身御供 < hitomigokuu\ ;
+公式戦 < koushikisen\ ;
+保護検束 < hogokensoku\ ;
+分県地図 < bunkenchizu\ ;
+靴一足 < kutsuissoku\ ;
+阿諛追従 < ayutsuishou\ ;
+電光石火 < denkousekka\ ;
+波瀾万丈 < haranbanjou\ ;
+相互関係 < sougokankei\ ;
+浪花節 < naniwabushi\ ;
+内部仕様 < naibushiyou\ ;
+各大学 < kakudaigaku\ ;
+総退却 < soutaikyaku\ ;
+皮下注射 < hikachuusha\ ;
+乾燥野菜 < kansouyasai\ ;
+短機関銃 < tankikanjuu\ ;
+現地時間 < genchijikan\ ;
+国民服 < kokuminfuku\ ;
+一等軍曹 < ittougunsou\ ;
+実在論 < jitsuzairon\ ;
+救急車 < kyuukyuusha\ ;
+間接税 < kansetsuzei\ ;
+獣道 < kemonomichi\ ;
+家庭用品 < kateiyouhin\ ;
+乱開発 < rankaihatsu\ ;
+所帯主 < shotainushi\ ;
+鉱山技師 < kouzangishi\ ;
+防寒靴 < boukangutsu\ ;
+一子相伝 < isshisouden\ ;
+三角柱 < sankakuchuu\ ;
+一雫 < hitoshizuku\ ;
+仕訳帳 < shiwakechou\ ;
+粘着性 < nenchakusei\ ;
+時限立法 < jigenrippou\ ;
+羊雲 < hitsujigumo\ ;
+愛別離苦 < aibetsuriku\ ;
+密造酒 < mitsuzoushu\ ;
+固定資産 < koteishisan\ ;
+一夜漬 < ichiyadzuke\ ;
+和独辞典 < wadokujiten\ ;
+登校拒否 < toukoukyohi\ ;
+斜角柱 < shakakuchuu\ ;
+演奏旅行 < ensouryokou\ ;
+書画骨董 < shogakottou\ ;
+対照的 < taishouteki\ ;
+役人風 < yakuninkaze\ ;
+船舶業 < senpakugyou\ ;
+運動選手 < undousenshu\ ;
+学園都市 < gakuentoshi\ ;
+水道局 < suidoukyoku\ ;
+始発駅 < shihatsueki\ ;
+東洋主義 < touyoushugi\ ;
+北極圏 < hokkyokuken\ ;
+日用品 < nichiyouhin\ ;
+反逆者 < hangyakusha\ ;
+大風呂敷 < ooburoshiki\ ;
+有蓋貨車 < yuugaikasha\ ;
+政治資金 < seijishikin\ ;
+登録済 < tourokuzumi\ ;
+専売局 < senbaikyoku\ ;
+権力者 < kenryokusha\ ;
+言論機関 < genronkikan\ ;
+養護学校 < yougogakkou\ ;
+恒久的 < koukyuuteki\ ;
+走行時間 < soukoujikan\ ;
+反逆罪 < hangyakuzai\ ;
+評価基準 < hyoukakijun\ ;
+特等席 < tokutouseki\ ;
+内服薬 < naifukuyaku\ ;
+臆病風 < okubyoukaze\ ;
+供給者 < kyoukyuusha\ ;
+彫刻師 < choukokushi\ ;
+新聞記事 < shinbunkiji\ ;
+夫唱婦随 < fushoufuzui\ ;
+電子辞書 < denshijisho\ ;
+求人難 < kyuujin''nan\ ;
+猿轡 < sarugutsuwa\ ;
+試掘権 < shikutsuken\ ;
+同時録音 < doujirokuon\ ;
+管理社会 < kanrishakai\ ;
+一視同仁 < isshidoujin\ ;
+構造変化 < kouzouhenka\ ;
+在京中 < zaikyouchuu\ ;
+方程式 < houteishiki\ ;
+静力学 < seirikigaku\ ;
+女流作家 < joryuusakka\ ;
+一覧表 < ichiranhyou\ ;
+北朝鮮 < kitachousen\ ;
+司法制度 < shihouseido\ ;
+脈所 < myakudokoro\ ;
+百千鳥 < momochidori\ ;
+勤務交代 < kinmukoutai\ ;
+短編映画 < tanpen''eiga\ ;
+銃剣術 < juukenjutsu\ ;
+会員規約 < kaiinkiyaku\ ;
+納骨堂 < noukotsudou\ ;
+耳小骨 < jishoukotsu\ ;
+大静脈 < daijoumyaku\ ;
+経済力 < keizairyoku\ ;
+学協会 < gakukyoukai\ ;
+中心点 < chuushinten\ ;
+二点先取 < nitensenshu\ ;
+反戦主義 < hansenshugi\ ;
+暴虎馮河 < boukohyouga\ ;
+北極光 < hokkyokukou\ ;
+食品店 < shokuhinten\ ;
+領収書 < ryoushuusho\ ;
+左腕投手 < sawantoushu\ ;
+但書 < tadashigaki\ ;
+前期試験 < zenkishiken\ ;
+通知表 < tsuuchihyou\ ;
+連発銃 < renpatsujuu\ ;
+攻撃側 < kougekigawa\ ;
+大中小 < daichuushou\ ;
+平均律 < heikinritsu\ ;
+赤棟蛇 < yamakagashi\ ;
+被選挙人 < hisenkyonin\ ;
+観念的 < kan''nenteki\ ;
+専門職 < senmonshoku\ ;
+共進会 < kyoushinkai\ ;
+信用状 < shin''youjou\ ;
+織物業 < orimonogyou\ ;
+背後関係 < haigokankei\ ;
+腰刀 < koshigatana\ ;
+超特急 < choutokkyuu\ ;
+返信料 < henshinryou\ ;
+壁新聞 < kabeshinbun\ ;
+餓鬼大将 < gakidaishou\ ;
+番号記号 < bangoukigou\ ;
+融解熱 < yuukainetsu\ ;
+節博士 < fushihakase\ ;
+見物人 < kenbutsunin\ ;
+登録料 < tourokuryou\ ;
+周旋人 < shuusen''nin\ ;
+刑事補償 < keijihoshou\ ;
+高麗芝 < kouraishiba\ ;
+不親切 < fushinsetsu\ ;
+親告罪 < shinkokuzai\ ;
+蔦紅葉 < tsutamomiji\ ;
+五目鮨 < gomokuzushi\ ;
+編集長 < henshuuchou\ ;
+出版業 < shuppangyou\ ;
+調教師 < choukyoushi\ ;
+進駐軍 < shinchuugun\ ;
+別動隊 < betsudoutai\ ;
+逆噴射 < gyakufunsha\ ;
+一体全体 < ittaizentai\ ;
+二口目 < futakuchime\ ;
+海運同盟 < kaiundoumei\ ;
+専守防衛 < senshubouei\ ;
+南阿連邦 < nan''arenpou\ ;
+逆命題 < gyakumeidai\ ;
+発行部数 < hakkoubusuu\ ;
+刑事裁判 < keijisaiban\ ;
+公平無私 < kouheimushi\ ;
+物価指数 < bukkashisuu\ ;
+粘着剤 < nenchakuzai\ ;
+刑事被告 < keijihikoku\ ;
+生物界 < seibutsukai\ ;
+記者会見 < kishakaiken\ ;
+従軍記者 < juugunkisha\ ;
+空気抵抗 < kuukiteikou\ ;
+五目飯 < gomokumeshi\ ;
+貢物 < mitsugimono\ ;
+現金正価 < genkinseika\ ;
+採掘権 < saikutsuken\ ;
+大同小異 < daidoushoui\ ;
+生命倫理 < seimeirinri\ ;
+全幅的 < zenpukuteki\ ;
+駆動装置 < kudousouchi\ ;
+彫刻刀 < choukokutou\ ;
+千軍万馬 < sengunbanba\ ;
+変幻自在 < hengenjizai\ ;
+研究心 < kenkyuushin\ ;
+相対主義 < soutaishugi\ ;
+独占的 < dokusenteki\ ;
+酸中毒 < sanchuudoku\ ;
+軍医学校 < gun''igakkou\ ;
+超新星 < choushinsei\ ;
+都民会館 < tominkaikan\ ;
+市場価値 < shijoukachi\ ;
+頂戴物 < choudaimono\ ;
+平和論者 < heiwaronsha\ ;
+宿泊所 < shukuhakujo\ ;
+尿素樹脂 < nyousojushi\ ;
+売却益 < baikyakueki\ ;
+掃除当番 < soujitouban\ ;
+構造式 < kouzoushiki\ ;
+代理戦争 < dairisensou\ ;
+代表作 < daihyousaku\ ;
+地盤沈下 < jibanchinka\ ;
+構成主義 < kouseishugi\ ;
+正多面体 < seitamentai\ ;
+過失犯 < kashitsuhan\ ;
+紙一枚 < kamiichimai\ ;
+保税地域 < hozeichiiki\ ;
+再認識 < saininshiki\ ;
+人員整理 < jin''inseiri\ ;
+風物詩 < fuubutsushi\ ;
+人間以前 < ningen''izen\ ;
+実関数 < jitsukansuu\ ;
+大好物 < daikoubutsu\ ;
+乳濁液 < nyuudakueki\ ;
+水冷式 < suireishiki\ ;
+平面図形 < heimenzukei\ ;
+心配性 < shinpaishou\ ;
+客室 < kyakushitsu\ ;
+宇宙旅行 < uchuuryokou\ ;
+後始末 < atoshimatsu\ ;
+全勢力 < zenseiryoku\ ;
+荘園制度 < shouenseido\ ;
+離心率 < rishinritsu\ ;
+供給源 < kyoukyuugen\ ;
+自社製品 < jishaseihin\ ;
+初期段階 < shokidankai\ ;
+前途遼遠 < zentoryouen\ ;
+大文節 < daibunsetsu\ ;
+一夜妻 < hitoyodzuma\ ;
+結合子 < ketsugoushi\ ;
+死亡率 < shibouritsu\ ;
+時局柄 < jikyokugara\ ;
+赤葡萄酒 < akabudoushu\ ;
+原始時代 < genshijidai\ ;
+配当率 < haitouritsu\ ;
+整骨師 < seikotsushi\ ;
+参謀本部 < sanbouhonbu\ ;
+女子大生 < joshidaisei\ ;
+関税率 < kanzeiritsu\ ;
+排外運動 < haigaiundou\ ;
+中毒死 < chuudokushi\ ;
+水平飛行 < suiheihikou\ ;
+最前列 < saizenretsu\ ;
+低回趣味 < teikaishumi\ ;
+互恵貿易 < gokeiboueki\ ;
+人間以上 < ningen''ijou\ ;
+御所車 < goshoguruma\ ;
+傲慢無礼 < goumanburei\ ;
+人柱 < hitobashira\ ;
+法務委員会 < houmuiinkai\ ;
+内曲球 < naikyokkyuu\ ;
+徒手空拳 < toshukuuken\ ;
+亜炭化物 < atankabutsu\ ;
+水泳大会 < suieitaikai\ ;
+解散説 < kaisansetsu\ ;
+男女同権 < danjodouken\ ;
+年金制度 < nenkinseido\ ;
+空軍基地 < kuugunkichi\ ;
+大和時代 < yamatojidai\ ;
+建造物 < kenzoubutsu\ ;
+帝王切開 < teiousekkai\ ;
+献血車 < kenketsusha\ ;
+小品集 < shouhinshuu\ ;
+霊安室 < reianshitsu\ ;
+反政府党 < hanseifutou\ ;
+離着陸 < richakuriku\ ;
+脊黄青鸚哥 < sekiseiinko\ ;
+歯科病院 < shikabyouin\ ;
+高野聖 < kouyahijiri\ ;
+載貨屯数 < saikatonsuu\ ;
+整髪剤 < seihatsuzai\ ;
+処世術 < shoseijutsu\ ;
+論説委員 < ronsetsuiin\ ;
+勝手次第 < katteshidai\ ;
+空挺隊員 < kuuteitaiin\ ;
+自由経済 < jiyuukeizai\ ;
+旗頭 < hatagashira\ ;
+子年 < nezumidoshi\ ;
+八幡宮 < hachimanguu\ ;
+財政破綻 < zaiseihatan\ ;
+歌唱力 < kashouryoku\ ;
+回折損 < kaisetsuson\ ;
+政治献金 < seijikenkin\ ;
+骨仕事 < honeshigoto\ ;
+臆病者 < okubyoumono\ ;
+旋風 < tsumujikaze\ ;
+手間仕事 < temashigoto\ ;
+一本勝負 < ipponshoubu\ ;
+朝飯前 < asameshimae\ ;
+質実 < shitsujitsu\ ;
+刊行物 < kankoubutsu\ ;
+眼鏡橋 < meganebashi\ ;
+購入先 < kounyuusaki\ ;
+中途半端 < chuutohanpa\ ;
+通過儀礼 < tsuukagirei\ ;
+丼物 < donburimono\ ;
+弘仁格 < kouninkyaku\ ;
+英字集合 < eijishuugou\ ;
+署名運動 < shomeiundou\ ;
+塑性指数 < soseishisuu\ ;
+合同労組 < goudourouso\ ;
+杖柱 < tsuehashira\ ;
+旧大陸 < kyuutairiku\ ;
+主管機関 < shukankikan\ ;
+天気都合 < tenkitsugou\ ;
+兵器工場 < heikikoujou\ ;
+下瞼 < shitamabuta\ ;
+診察日 < shinsatsubi\ ;
+平民主義 < heiminshugi\ ;
+家族会議 < kazokukaigi\ ;
+東宮職 < touguushoku\ ;
+減債基金 < gensaikikin\ ;
+警察署 < keisatsusho\ ;
+冗談口 < joudanguchi\ ;
+織物商 < orimonoshou\ ;
+祖先崇拝 < sosensuuhai\ ;
+八辺形 < hachihenkei\ ;
+針仕事 < harishigoto\ ;
+事大思想 < jidaishisou\ ;
+好人物 < koujinbutsu\ ;
+地場産業 < jibasangyou\ ;
+征服欲 < seifukuyoku\ ;
+連邦国家 < renpoukokka\ ;
+立憲主義 < rikkenshugi\ ;
+杉林 < sugibayashi\ ;
+解説者 < kaisetsusha\ ;
+広告業 < koukokugyou\ ;
+八方美人 < happoubijin\ ;
+創立者 < souritsusha\ ;
+解熱薬 < genetsuyaku\ ;
+日曜版 < nichiyouban\ ;
+新快速 < shinkaisoku\ ;
+屋根裏部屋 < yaneurabeya\ ;
+世界情勢 < sekaijousei\ ;
+不快指数 < fukaishisuu\ ;
+遠洋航路 < en''youkouro\ ;
+中年者 < chuunenmono\ ;
+国家経済 < kokkakeizai\ ;
+戴冠式 < taikanshiki\ ;
+臨時増刊 < rinjizoukan\ ;
+軽業師 < karuwazashi\ ;
+中心地 < chuushinchi\ ;
+商慣習 < shoukanshuu\ ;
+生物戦 < seibutsusen\ ;
+救急法 < kyuukyuuhou\ ;
+食前酒 < shokuzenshu\ ;
+公武合体 < koubugattai\ ;
+深夜族 < shin''yazoku\ ;
+予讚本線 < yosanhonsen\ ;
+根本主義 < konponshugi\ ;
+迫撃砲 < hakugekihou\ ;
+非常警戒 < hijoukeikai\ ;
+中央政府 < chuuouseifu\ ;
+進軍中 < shingunchuu\ ;
+媒酌人 < baishakunin\ ;
+両性的 < ryouseiteki\ ;
+刺状突起 < shijoutokki\ ;
+潜勢力 < senseiryoku\ ;
+公的扶助 < koutekifujo\ ;
+合成樹脂 < gouseijushi\ ;
+割賦購買 < kappukoubai\ ;
+保健室 < hokenshitsu\ ;
+広告料 < koukokuryou\ ;
+速力度 < sokuryokudo\ ;
+盆提灯 < bondjouchin\ ;
+未来指向 < miraishikou\ ;
+自由放任 < jiyuuhounin\ ;
+自転周期 < jitenshuuki\ ;
+聴神経 < choushinkei\ ;
+超大国 < choutaikoku\ ;
+出版元 < shuppanmoto\ ;
+馬鹿力 < bakadjikara\ ;
+自己主張 < jikoshuchou\ ;
+晒者 < sarashimono\ ;
+陸半球 < rikuhankyuu\ ;
+千言万語 < sengenbango\ ;
+統率者 < tousotsusha\ ;
+公共心 < koukyoushin\ ;
+徒歩競走 < tohokyousou\ ;
+親善試合 < shinzenjiai\ ;
+窒素固定 < chissokotei\ ;
+中共軍 < chuukyougun\ ;
+漂白剤 < hyouhakuzai\ ;
+収入源 < shuunyuugen\ ;
+海上保険 < kaijouhoken\ ;
+殿様風 < tonosamafuu\ ;
+心配事 < shinpaigoto\ ;
+飛行甲板 < hikoukouban\ ;
+指導主事 < shidoushuji\ ;
+相互銀行 < sougoginkou\ ;
+軍司令部 < gunshireibu\ ;
+諸事万端 < shojibantan\ ;
+労災保険 < rousaihoken\ ;
+太陽熱 < taiyounetsu\ ;
+判決文 < hanketsubun\ ;
+時輪金剛 < jirinkongou\ ;
+意気銷沈 < ikishouchin\ ;
+信仰的 < shinkouteki\ ;
+膝拍子 < hizabyoushi\ ;
+関税回避 < kanzeikaihi\ ;
+盲目的 < moumokuteki\ ;
+神通力 < jintsuuriki\ ;
+共和主義 < kyouwashugi\ ;
+恐妻病 < kyousaibyou\ ;
+阿多福風邪 < otafukukaze\ ;
+予防戦争 < yobousensou\ ;
+酸性土壌 < sanseidojou\ ;
+忠実度 < chuujitsudo\ ;
+信任状 < shin''ninjou\ ;
+人身保護 < jinshinhogo\ ;
+中柱 < nakabashira\ ;
+新参者 < shinzanmono\ ;
+年金保険 < nenkinhoken\ ;
+指向言語 < shikougengo\ ;
+巡査部長 < junsabuchou\ ;
+真犯人 < shinhan''nin\ ;
+狸爺 < tanukijijii\ ;
+保証期間 < hoshoukikan\ ;
+不法監禁 < fuhoukankin\ ;
+御苦労様 < gokurousama\ ;
+警察犬 < keisatsuken\ ;
+自治大臣 < jichidaijin\ ;
+立体交差 < rittaikousa\ ;
+竜頭蛇尾 < ryuutoudabi\ ;
+充電期間 < juudenkikan\ ;
+叢時雨 < murashigure\ ;
+海食洞 < kaishokudou\ ;
+記憶媒体 < kiokubaitai\ ;
+嫡室 < chakushitsu\ ;
+参列者 < sanretsusha\ ;
+養護教諭 < yougokyouyu\ ;
+人本主義 < jinponshugi\ ;
+海洋投棄 < kaiyoutouki\ ;
+生物圏 < seibutsuken\ ;
+供給地 < kyoukyuuchi\ ;
+干渉縞 < kanshoujima\ ;
+独創的 < dokusouteki\ ;
+不随意運動 < fuzuiiundou\ ;
+和歌山県 < wakayamaken\ ;
+太陽電波 < taiyoudenpa\ ;
+理科大学 < rikadaigaku\ ;
+染色体 < senshokutai\ ;
+座頭鯨 < zatoukujira\ ;
+近衛師団 < konoeshidan\ ;
+一衣帯水 < ichiitaisui\ ;
+資本主義 < shihonshugi\ ;
+狐猿 < kitsunezaru\ ;
+自由結婚 < jiyuukekkon\ ;
+必須科目 < hissukamoku\ ;
+近代主義 < kindaishugi\ ;
+東北 < higashikita\ ;
+守護天使 < shugotenshi\ ;
+日本語文字 < nihongomoji\ ;
+作業部会 < sagyoubukai\ ;
+都市再生 < toshisaisei\ ;
+目的論 < mokutekiron\ ;
+省略時 < shouryakuji\ ;
+七月 < shichigatsu\ ;
+幼生器官 < youseikikan\ ;
+御用組合 < goyoukumiai\ ;
+軍事演習 < gunjienshuu\ ;
+石炭殻 < sekitangara\ ;
+分裂性 < bunretsusei\ ;
+短縮形 < tanshukukei\ ;
+人道主義 < jindoushugi\ ;
+前史時代 < zenshijidai\ ;
+海上封鎖 < kaijoufuusa\ ;
+有職者 < yuushokusha\ ;
+意味深長 < imishinchou\ ;
+一昔 < hitomukashi\ ;
+親和力 < shinwaryoku\ ;
+交通違反 < koutsuuihan\ ;
+先々月 < sensengetsu\ ;
+四十八手 < yonjuuhatte\ ;
+手巻寿司 < temakizushi\ ;
+有体物 < yuutaibutsu\ ;
+東側 < higashigawa\ ;
+短絡的 < tanrakuteki\ ;
+公開講座 < koukaikouza\ ;
+片言隻句 < hengensekku\ ;
+魅力的 < miryokuteki\ ;
+化学式 < kagakushiki\ ;
+一撮 < hitotsumami\ ;
+太陽日 < taiyoujitsu\ ;
+高関税化 < koukanzeika\ ;
+運送会社 < unsougaisha\ ;
+東宮御所 < touguugosho\ ;
+延滞利息 < entairisoku\ ;
+野球熱 < yakyuunetsu\ ;
+火災警報 < kasaikeihou\ ;
+飾付 < kazaritsuke\ ;
+総指揮官 < soushikikan\ ;
+放送時間 < housoujikan\ ;
+熱気球 < netsukikyuu\ ;
+空想力 < kuusouryoku\ ;
+有害無益 < yuugaimueki\ ;
+静岡県 < shizuokaken\ ;
+婦人問題 < fujinmondai\ ;
+晴耕雨読 < seikouudoku\ ;
+反逆人 < hangyakunin\ ;
+染髪剤 < senpatsuzai\ ;
+全身病 < zenshinbyou\ ;
+不文憲法 < fubunkenpou\ ;
+腹話術 < fukuwajutsu\ ;
+一寸法師 < issunboushi\ ;
+可能動詞 < kanoudoushi\ ;
+流量計 < ryuuryoukei\ ;
+完全雇用 < kanzenkoyou\ ;
+線織面 < senshikimen\ ;
+完結編 < kanketsuhen\ ;
+副鼻腔炎 < fukubikuuen\ ;
+学生証 < gakuseishou\ ;
+造幣局 < zouheikyoku\ ;
+説明書 < setsumeisho\ ;
+自給率 < jikyuuritsu\ ;
+多元放送 < tagenhousou\ ;
+打物師 < uchimonoshi\ ;
+気息奄奄 < kisokuen''en\ ;
+惨殺者 < zansatsusha\ ;
+磯巾着 < isoginchaku\ ;
+釈迦如来 < shakanyorai\ ;
+予約名簿 < yoyakumeibo\ ;
+証人席 < shouninseki\ ;
+嫡出 < chakushutsu\ ;
+不買同盟 < fubaidoumei\ ;
+下心 < shitagokoro\ ;
+若白髪 < wakashiraga\ ;
+非買同盟 < hibaidoumei\ ;
+数学的 < suugakuteki\ ;
+直円柱 < chokuenchuu\ ;
+説明文 < setsumeibun\ ;
+相対敬語 < soutaikeigo\ ;
+経済特区 < keizaitokku\ ;
+任意団体 < nin''idantai\ ;
+水産物 < suisanbutsu\ ;
+接敵移動 < settekiidou\ ;
+教則本 < kyousokubon\ ;
+鰥寡孤独 < kankakodoku\ ;
+乙女心 < otomegokoro\ ;
+相対売買 < aitaibaibai\ ;
+無人工場 < mujinkoujou\ ;
+戦勝国 < senshoukoku\ ;
+南北朝 < nanbokuchou\ ;
+夏衣 < natsugoromo\ ;
+幻想曲 < gensoukyoku\ ;
+不換紙幣 < fukanshihei\ ;
+旅興行 < tabikougyou\ ;
+相乗作用 < soujousayou\ ;
+予算不足 < yosanfusoku\ ;
+豆電球 < mamedenkyuu\ ;
+解説書 < kaisetsusho\ ;
+薬理作用 < yakurisayou\ ;
+翼手目 < yokushumoku\ ;
+婚約者 < kon''yakusha\ ;
+為替管理 < kawasekanri\ ;
+郡役所 < gun''yakusho\ ;
+知識層 < chishikisou\ ;
+事前協議 < jisenkyougi\ ;
+厚顔無恥 < kouganmuchi\ ;
+撞木鮫 < shumokuzame\ ;
+硼酸末 < housanmatsu\ ;
+安全装置 < anzensouchi\ ;
+妖術者 < youjutsusha\ ;
+余白頁 < yohakupeeji\ ;
+統一的 < touitsuteki\ ;
+空気感染 < kuukikansen\ ;
+水道工事 < suidoukouji\ ;
+一紙半銭 < isshihansen\ ;
+反射運動 < hanshaundou\ ;
+身障者 < shinshousha\ ;
+食卓塩 < shokutakuen\ ;
+八字髭 < hachijihige\ ;
+復活祭 < fukkatsusai\ ;
+主産物 < shusanbutsu\ ;
+美術的 < bijutsuteki\ ;
+塩類溶液 < enruiyoueki\ ;
+珍現象 < chingenshou\ ;
+三稜鏡 < sanryoukyou\ ;
+外人部隊 < gaijinbutai\ ;
+拝金主義 < haikinshugi\ ;
+大陸棚 < tairikudana\ ;
+殿様芸 < tonosamagei\ ;
+海食崖 < kaishokugai\ ;
+元禄袖 < genrokusode\ ;
+異体同心 < itaidoushin\ ;
+乗数効果 < jousuukouka\ ;
+全盛時代 < zenseijidai\ ;
+文教族 < bunkyouzoku\ ;
+面向不背 < menkoufuhai\ ;
+平和維持軍 < heiwaijigun\ ;
+湿度計 < shitsudokei\ ;
+召集者 < shoushuusha\ ;
+空理空論 < kuurikuuron\ ;
+八極拳 < hakkyokuken\ ;
+信仰心 < shinkoushin\ ;
+人一倍 < hitoichibai\ ;
+合衆国 < gasshuukoku\ ;
+機関室 < kikanshitsu\ ;
+非常階段 < hijoukaidan\ ;
+傷痍軍人 < shouigunjin\ ;
+冷却液 < reikyakueki\ ;
+漁獲高 < gyokakudaka\ ;
+公用物 < kouyoubutsu\ ;
+単発銃 < tanpatsujuu\ ;
+不嗜 < butashinami\ ;
+月賦販売 < geppuhanbai\ ;
+万世一系 < banseiikkei\ ;
+第二部長 < dainibuchou\ ;
+雀蜂 < suzumebachi\ ;
+行儀作法 < gyougisahou\ ;
+重加算税 < juukasanzei\ ;
+冷却水 < reikyakusui\ ;
+献立表 < kondatehyou\ ;
+一心不乱 < isshinfuran\ ;
+軍事裁判 < gunjisaiban\ ;
+若草色 < wakakusairo\ ;
+照明器具 < shoumeikigu\ ;
+三国一 < sangokuichi\ ;
+督促状 < tokusokujou\ ;
+屍陀林王 < shidarin''ou\ ;
+仮受取 < kariuketori\ ;
+過去完了 < kakokanryou\ ;
+戦後欧州 < sengooushuu\ ;
+袋小路 < fukurokouji\ ;
+警察官 < keisatsukan\ ;
+首脳会議 < shunoukaigi\ ;
+家庭料理 < kateiryouri\ ;
+日本銀行 < nihonginkou\ ;
+自然律 < shizenritsu\ ;
+職務給 < shokumukyuu\ ;
+遠交近攻 < enkoukinkou\ ;
+旋回運動 < senkaiundou\ ;
+療養中 < ryouyouchuu\ ;
+合成物 < gouseibutsu\ ;
+帰国子女 < kikokushijo\ ;
+三行半 < mikudarihan\ ;
+行政学 < gyouseigaku\ ;
+実行力 < jikkouryoku\ ;
+長火鉢 < nagahibachi\ ;
+雌雄淘汰 < shiyuutouta\ ;
+海食台 < kaishokudai\ ;
+郵便物 < yuubinbutsu\ ;
+銀本位制 < ginhon''isei\ ;
+空気枕 < kuukimakura\ ;
+奨学金 < shougakukin\ ;
+組頭 < kumigashira\ ;
+自業自得 < jigoujitoku\ ;
+公生活 < kouseikatsu\ ;
+遮蔽物 < shaheibutsu\ ;
+主格補語 < shukakuhogo\ ;
+絹織物 < kinuorimono\ ;
+芸術論 < geijutsuron\ ;
+傘形器官 < sankeikikan\ ;
+薬効物 < yakkoubutsu\ ;
+緑虫 < midorimushi\ ;
+電化製品 < denkaseihin\ ;
+庭仕事 < niwashigoto\ ;
+資産価値 < shisankachi\ ;
+悪質化 < akushitsuka\ ;
+中央競馬 < chuuoukeiba\ ;
+知識人 < chishikijin\ ;
+赤字財政 < akajizaisei\ ;
+白内障 < hakunaishou\ ;
+政治亡命 < seijiboumei\ ;
+五十年祭 < gojuunensai\ ;
+遺族年金 < izokunenkin\ ;
+人工栄養 < jinkoueiyou\ ;
+擬古典的 < gikotenteki\ ;
+楽天的 < rakutenteki\ ;
+電気会社 < denkigaisha\ ;
+気随気儘 < kizuikimama\ ;
+別勘定 < betsukanjou\ ;
+金杓子 < kanajakushi\ ;
+長大息 < choutaisoku\ ;
+聴取料 < choushuryou\ ;
+無反動銃 < muhandoujuu\ ;
+遠心分離 < enshinbunri\ ;
+場外馬券 < jougaibaken\ ;
+青年時代 < seinenjidai\ ;
+頸静脈 < keijoumyaku\ ;
+漁獲量 < gyokakuryou\ ;
+語学力 < gogakuryoku\ ;
+準備室 < junbishitsu\ ;
+中年増 < chuudoshima\ ;
+自由問題 < jiyuumondai\ ;
+漫画雑誌 < mangazasshi\ ;
+亜鉛中毒 < aenchuudoku\ ;
+背筋力 < haikinryoku\ ;
+所有物 < shoyuubutsu\ ;
+祖先伝来 < sosendenrai\ ;
+産土神 < ubusunagami\ ;
+雪礫 < yukitsubute\ ;
+暗赤色 < ansekishoku\ ;
+仕立物 < shitatemono\ ;
+一党支配 < ittoushihai\ ;
+旗標 < hatajirushi\ ;
+夢現 < yumeutsutsu\ ;
+七回忌 < shichikaiki\ ;
+主観主義 < shukanshugi\ ;
+溶解熱 < youkainetsu\ ;
+米十粒 < komejuuryuu\ ;
+呼吸器系 < kokyuukikei\ ;
+特注品 < tokuchuuhin\ ;
+雛祭 < hinamatsuri\ ;
+為替投機 < kawasetouki\ ;
+一知半解 < itchihankai\ ;
+不定冠詞 < futeikanshi\ ;
+代議政体 < daigiseitai\ ;
+平和攻勢 < heiwakousei\ ;
+低価格化 < teikakakuka\ ;
+古新聞 < furushinbun\ ;
+配達人 < haitatsunin\ ;
+京人形 < kyouningyou\ ;
+肘掛椅子 < hijikakeisu\ ;
+公務災害 < koumusaigai\ ;
+景気循環 < keikijunkan\ ;
+関係法規 < kankeihouki\ ;
+賀詞交換 < gashikoukan\ ;
+耕地整理 < kouchiseiri\ ;
+完結文 < kanketsubun\ ;
+表裏一体 < hyouriittai\ ;
+反対色 < hantaishoku\ ;
+商品学 < shouhingaku\ ;
+奴隷解放 < doreikaihou\ ;
+入射角 < nyuushakaku\ ;
+消防庁 < shoubouchou\ ;
+阿多福豆 < otafukumame\ ;
+奇麗所 < kireidokoro\ ;
+女旱 < on''nahideri\ ;
+山吹色 < yamabukiiro\ ;
+企業整備 < kigyouseibi\ ;
+軍事行動 < gunjikoudou\ ;
+打撃率 < dagekiritsu\ ;
+地方自治 < chihoujichi\ ;
+請求額 < seikyuugaku\ ;
+百年祭 < hyakunensai\ ;
+世俗主義 < sezokushugi\ ;
+高炭素鋼 < koutansokou\ ;
+抑留者 < yokuryuusha\ ;
+食連星 < shokurensei\ ;
+落札値 < rakusatsune\ ;
+自然力 < shizenryoku\ ;
+有機肥料 < yuukihiryou\ ;
+秘書室 < hishoshitsu\ ;
+千秋楽 < senshuuraku\ ;
+比例配分 < hireihaibun\ ;
+探究心 < tankyuushin\ ;
+反対運動 < hantaiundou\ ;
+添付書類 < tenpushorui\ ;
+恋愛遊戯 < ren''aiyuugi\ ;
+副社長 < fukushachou\ ;
+投射原理 < toushagenri\ ;
+大言壮語 < taigensougo\ ;
+月例会 < getsureikai\ ;
+数日間 < suujitsukan\ ;
+命名式 < meimeishiki\ ;
+指導力 < shidouryoku\ ;
+感覚的 < kankakuteki\ ;
+金本位制 < kinhon''isei\ ;
+造語成分 < zougoseibun\ ;
+再開発 < saikaihatsu\ ;
+入学難 < nyuugakunan\ ;
+分折学 < bunsekigaku\ ;
+百科辞典 < hyakkajiten\ ;
+若輩者 < jakuhaimono\ ;
+万代不易 < bandaifueki\ ;
+幅変調 < habahenchou\ ;
+危険角度 < kikenkakudo\ ;
+化学兵器 < kagakuheiki\ ;
+女心 < on''nagokoro\ ;
+小惑星 < shouwakusei\ ;
+漢字制限 < kanjiseigen\ ;
+年功制度 < nenkouseido\ ;
+人物像 < jinbutsuzou\ ;
+躁鬱病 < souutsubyou\ ;
+直輸入 < chokuyunyuu\ ;
+促進剤 < sokushinzai\ ;
+海底火山 < kaiteikazan\ ;
+隔靴掻痒 < kakkasouyou\ ;
+握鮨 < nigirizushi\ ;
+鼻出血 < bishukketsu\ ;
+静心 < shizugokoro\ ;
+非戦論者 < hisenronsha\ ;
+急進党 < kyuushintou\ ;
+万世不易 < banseifueki\ ;
+再生繊維 < saiseisen''i\ ;
+運転系統 < untenkeitou\ ;
+任意同行 < nin''idoukou\ ;
+隣町 < tonarimachi\ ;
+臨時国会 < rinjikokkai\ ;
+試験期間 < shikenkikan\ ;
+金婚式 < kinkonshiki\ ;
+満艦飾 < mankanshoku\ ;
+年功加俸 < nenkoukahou\ ;
+応援団長 < ouendanchou\ ;
+大晦 < ootsugomori\ ;
+傍迷惑 < hatameiwaku\ ;
+軍医総監 < gun''isoukan\ ;
+昼食時 < chuushokuji\ ;
+芸術祭 < geijutsusai\ ;
+慈善団体 < jizendantai\ ;
+自習時間 < jishuujikan\ ;
+握飯 < nigirimeshi\ ;
+国家補償 < kokkahoshou\ ;
+盛者必衰 < seijahissui\ ;
+学生服 < gakuseifuku\ ;
+人文主義 < jinbunshugi\ ;
+電話番号 < denwabangou\ ;
+就業地 < shuugyouchi\ ;
+表示物 < hyoujibutsu\ ;
+転入生 < ten''nyuusei\ ;
+理論体系 < rirontaikei\ ;
+入学金 < nyuugakukin\ ;
+日本海溝 < nihonkaikou\ ;
+経常利益 < keijourieki\ ;
+革新系 < kakushinkei\ ;
+引責辞任 < insekijinin\ ;
+陽極線 < youkyokusen\ ;
+出演者 < shutsuensha\ ;
+会議室 < kaigishitsu\ ;
+処女航海 < shojokoukai\ ;
+陸運局 < rikuunkyoku\ ;
+追徴金 < tsuichoukin\ ;
+殺菌力 < sakkinryoku\ ;
+投宿者 < toushukusha\ ;
+新庁舎 < shinchousha\ ;
+冷却剤 < reikyakuzai\ ;
+一軒一軒 < ikken''ikken\ ;
+遊覧客 < yuurankyaku\ ;
+黄金虫 < koganemushi\ ;
+問答無用 < mondoumuyou\ ;
+運命論者 < unmeironsha\ ;
+黒死病 < kokushibyou\ ;
+郵便局 < yuubinkyoku\ ;
+菜種梅雨 < natanedzuyu\ ;
+課外授業 < kagaijugyou\ ;
+反射率 < hansharitsu\ ;
+難民帰還 < nanminkikan\ ;
+偶像破壊 < guuzouhakai\ ;
+教皇庁 < kyoukouchou\ ;
+若鳥丼 < wakadoridon\ ;
+指示装置 < shijisouchi\ ;
+安全地帯 < anzenchitai\ ;
+自己複製 < jikofukusei\ ;
+美術商 < bijutsushou\ ;
+他人行儀 < taningyougi\ ;
+判官贔屓 < houganbiiki\ ;
+滴定量 < tekiteiryou\ ;
+圧搾空気 < assakukuuki\ ;
+神学者 < shingakusha\ ;
+密輸入 < mitsuyunyuu\ ;
+健康管理 < kenkoukanri\ ;
+踏切番 < fumikiriban\ ;
+試験飛行 < shikenhikou\ ;
+生産過剰 < seisankajou\ ;
+前奏曲 < zensoukyoku\ ;
+耳鼻咽喉科 < jibiinkouka\ ;
+生理休暇 < seirikyuuka\ ;
+交際場裏 < kousaijouri\ ;
+裸一貫 < hadakaikkan\ ;
+奏鳴曲 < soumeikyoku\ ;
+豊肥本線 < houhihonsen\ ;
+私生活 < shiseikatsu\ ;
+紫色 < murasakiiro\ ;
+判断規準 < handankijun\ ;
+甲鉄艦 < koutetsukan\ ;
+心臓病 < shinzoubyou\ ;
+錬金術 < renkinjutsu\ ;
+黒内障 < kokunaishou\ ;
+有識者 < yuushikisha\ ;
+山津波 < yamatsunami\ ;
+袖珍本 < shuuchinbon\ ;
+天資英邁 < tenshieimai\ ;
+先着順 < senchakujun\ ;
+抵抗運動 < teikouundou\ ;
+郵便切手 < yuubinkitte\ ;
+実名詞 < jitsumeishi\ ;
+防食剤 < boushokuzai\ ;
+対称軸 < taishoujiku\ ;
+近日点 < kinjitsuten\ ;
+田園都市 < den''entoshi\ ;
+衣料品店 < iryouhinten\ ;
+二部合唱 < nibugasshou\ ;
+藍晶石 < ranshouseki\ ;
+女子供 < on''nakodomo\ ;
+没食子 < mosshokushi\ ;
+電子頭脳 < denshizunou\ ;
+修繕中 < shuuzenchuu\ ;
+割賦販売 < kappuhanbai\ ;
+耳学問 < mimigakumon\ ;
+骨董趣味 < kottoushumi\ ;
+軍備制限 < gunbiseigen\ ;
+長粒米 < chouryuumai\ ;
+運動不足 < undoubusoku\ ;
+制限漢字 < seigenkanji\ ;
+神信心 < kamishinjin\ ;
+無反動砲 < muhandouhou\ ;
+奨学生 < shougakusei\ ;
+原因不明 < gen''infumei\ ;
+観兵式 < kanpeishiki\ ;
+若年型 < jakunengata\ ;
+軽自動車 < keijidousha\ ;
+鼠海豚 < nezumiiruka\ ;
+狐疑逡巡 < kogishunjun\ ;
+集積場 < shuusekijou\ ;
+指人形 < yubiningyou\ ;
+程度問題 < teidomondai\ ;
+規定打席 < kiteidaseki\ ;
+曲芸師 < kyokugeishi\ ;
+麦粒腫 < bakuryuushu\ ;
+目的地 < mokutekichi\ ;
+風紀紊乱 < fuukibinran\ ;
+学生寮 < gakuseiryou\ ;
+合成力 < gouseiryoku\ ;
+市参事会 < shisanjikai\ ;
+記憶装置 < kiokusouchi\ ;
+提供側 < teikyougawa\ ;
+雪庇 < yukibisashi\ ;
+電気伝導 < denkidendou\ ;
+海外派兵 < kaigaihahei\ ;
+天賦人権 < tenpujinken\ ;
+懸垂運動 < kensuiundou\ ;
+神秘主義 < shinpishugi\ ;
+乗降客 < joukoukyaku\ ;
+内親王 < naishin''nou\ ;
+遠慮会釈 < enryoeshaku\ ;
+糞勉強 < kusobenkyou\ ;
+暗号手法 < angoushuhou\ ;
+矢継早 < yatsugibaya\ ;
+長話 < nagabanashi\ ;
+運輸大臣 < un''yudaijin\ ;
+非論理的 < hironriteki\ ;
+変曲点 < henkyokuten\ ;
+右翼団体 < uyokudantai\ ;
+長四角 < nagashikaku\ ;
+親切気 < shinsetsugi\ ;
+保健衛生 < hoken''eisei\ ;
+盗品故買 < touhinkobai\ ;
+副神経 < fukushinkei\ ;
+葉緑体 < youryokutai\ ;
+静止軌道 < seishikidou\ ;
+慶應義塾 < keiougijuku\ ;
+快刀乱麻 < kaitouranma\ ;
+菊人形 < kikuningyou\ ;
+玩弄物 < ganroubutsu\ ;
+口言葉 < kuchikotoba\ ;
+集合的 < shuugouteki\ ;
+至近距離 < shikinkyori\ ;
+割当額 < wariategaku\ ;
+常習的 < joushuuteki\ ;
+損害保険 < songaihoken\ ;
+構成要素 < kouseiyouso\ ;
+感圧紙 < kan''atsushi\ ;
+協議事項 < kyougijikou\ ;
+紅猿子 < benimashiko\ ;
+弾性率 < danseiritsu\ ;
+舞台俳優 < butaihaiyuu\ ;
+危機一髪 < kikiippatsu\ ;
+医学雑誌 < igakuzasshi\ ;
+淡紅色 < tankoushoku\ ;
+柳行李 < yanagigouri\ ;
+物価水準 < bukkasuijun\ ;
+赤十字附 < sekijuujifu\ ;
+扶養家族 < fuyoukazoku\ ;
+流動的 < ryuudouteki\ ;
+環境庁 < kankyouchou\ ;
+立憲政治 < rikkenseiji\ ;
+昆虫学 < konchuugaku\ ;
+常日頃 < tsunehigoro\ ;
+比翼塚 < hiyokudzuka\ ;
+混成物 < konseibutsu\ ;
+人工臓器 < jinkouzouki\ ;
+溶解力 < youkairyoku\ ;
+紙礫 < kamitsubute\ ;
+教育長 < kyouikuchou\ ;
+焼却炉 < shoukyakuro\ ;
+祭政一致 < saiseiitchi\ ;
+白檀油 < byakudan''yu\ ;
+牽引力 < ken''inryoku\ ;
+観光局 < kankoukyoku\ ;
+不言実行 < fugenjikkou\ ;
+入学者 < nyuugakusha\ ;
+国学者 < kokugakusha\ ;
+仕事部屋 < shigotobeya\ ;
+活動誌 < katsudoushi\ ;
+出土品 < shutsudohin\ ;
+紙表紙 < kamibyoushi\ ;
+観光客 < kankoukyaku\ ;
+成人映画 < seijin''eiga\ ;
+自由営業 < jiyuueigyou\ ;
+共学制 < kyougakusei\ ;
+鶎 < kikuitadaki\ ;
+標準誤差 < hyoujungosa\ ;
+羞恥心 < shuuchishin\ ;
+参議院議員 < sangiingiin\ ;
+虫眼鏡 < mushimegane\ ;
+言葉質 < kotobajichi\ ;
+学者膚 < gakushahada\ ;
+通信網 < tsuushinmou\ ;
+普及率 < fukyuuritsu\ ;
+乳児脚気 < nyuujikakke\ ;
+千鳥足 < chidoriashi\ ;
+軍需工場 < gunjukoujou\ ;
+相加平均 < soukaheikin\ ;
+粗製乱造 < soseiranzou\ ;
+御名御璽 < gyomeigyoji\ ;
+裸虫 < hadakamushi\ ;
+転轍手 < tentetsushu\ ;
+購買力 < koubairyoku\ ;
+入賞者 < nyuushousha\ ;
+陸軍省 < rikugunshou\ ;
+仮出所 < karishussho\ ;
+文治主義 < bunchishugi\ ;
+古物商 < kobutsushou\ ;
+自然淘汰 < shizentouta\ ;
+家宅捜査 < katakusousa\ ;
+既成概念 < kiseigainen\ ;
+整備工場 < seibikoujou\ ;
+対空砲火 < taikuuhouka\ ;
+滞空時間 < taikuujikan\ ;
+象徴詩 < shouchoushi\ ;
+下協議 < shitakyougi\ ;
+召集令 < shoushuurei\ ;
+貿易赤字 < bouekiakaji\ ;
+一言居士 < ichigenkoji\ ;
+照会先 < shoukaisaki\ ;
+屋上庭園 < okujouteien\ ;
+堆積学 < taisekigaku\ ;
+読解力 < dokkairyoku\ ;
+音声表記 < onseihyouki\ ;
+腸結核 < choukekkaku\ ;
+年恰好 < toshikakkou\ ;
+審美主義 < shinbishugi\ ;
+通産省 < tsuusanshou\ ;
+応用問題 < ouyoumondai\ ;
+互恵関税 < gokeikanzei\ ;
+督学官 < tokugakukan\ ;
+懐中物 < kaichuumono\ ;
+通信社 < tsuushinsha\ ;
+軟性下疳 < nanseigekan\ ;
+国語辞典 < kokugojiten\ ;
+公認候補 < kouninkouho\ ;
+生年月日 < seinengappi\ ;
+奇策縦横 < kisakujuuou\ ;
+光学文字 < kougakumoji\ ;
+千石船 < sengokubune\ ;
+停車時間 < teishajikan\ ;
+金牛宮 < kingyuukyuu\ ;
+接合子 < setsugoushi\ ;
+皇室費 < koushitsuhi\ ;
+共和政治 < kyouwaseiji\ ;
+国庫債権 < kokkosaiken\ ;
+追徴税 < tsuichouzei\ ;
+声帯模写 < seitaimosha\ ;
+最大限度 < saidaigendo\ ;
+局外者 < kyokugaisha\ ;
+八分音符 < hachibuonpu\ ;
+翌翌年 < yokuyokunen\ ;
+特別機 < tokubetsuki\ ;
+淡褐色 < tankasshoku\ ;
+偏執病 < henshuubyou\ ;
+仮想空間 < kasoukuukan\ ;
+学習者 < gakushuusha\ ;
+防音室 < bouonshitsu\ ;
+平成時代 < heiseijidai\ ;
+利益社会 < riekishakai\ ;
+肉体的 < nikutaiteki\ ;
+家庭訪問 < kateihoumon\ ;
+料金表 < ryoukinhyou\ ;
+内陸国 < nairikukoku\ ;
+包容力 < houyouryoku\ ;
+出漁期 < shutsugyoki\ ;
+薄利多売 < hakuritabai\ ;
+主人役 < shujin''yaku\ ;
+民主主義 < minshushugi\ ;
+女性名詞 < joseimeishi\ ;
+愛憎併存 < aizouheison\ ;
+成功率 < seikouritsu\ ;
+公有物 < kouyuubutsu\ ;
+観艦式 < kankanshiki\ ;
+反射作用 < hanshasayou\ ;
+月夜茸 < tsukiyotake\ ;
+有事立法 < yuujirippou\ ;
+入学生 < nyuugakusei\ ;
+明後日 < myougonichi\ ;
+活動者 < katsudousha\ ;
+三原色 < sangenshoku\ ;
+発声器官 < hasseikikan\ ;
+偏執狂 < henshuukyou\ ;
+婚礼衣装 < konreiishou\ ;
+中央突破 < chuuoutoppa\ ;
+三頭政治 < santouseiji\ ;
+危険地帯 < kikenchitai\ ;
+化学作用 < kagakusayou\ ;
+無間地獄 < mugenjigoku\ ;
+話中 < hanashichuu\ ;
+往復切符 < oufukukippu\ ;
+蒋介石 < shoukaiseki\ ;
+申告書 < shinkokusho\ ;
+存在理由 < sonzairiyuu\ ;
+編笠茸 < amigasatake\ ;
+小半日 < kohan''nichi\ ;
+非社交的 < hijakouteki\ ;
+表彰状 < hyoushoujou\ ;
+内証事 < naishougoto\ ;
+封建制度 < houkenseido\ ;
+診断学 < shindangaku\ ;
+南極点 < nankyokuten\ ;
+人身事故 < jinshinjiko\ ;
+曲射砲 < kyokushahou\ ;
+公開捜査 < koukaisousa\ ;
+我田引水 < gaden''insui\ ;
+動作記録 < dousakiroku\ ;
+先発隊 < senpatsutai\ ;
+成層火山 < seisoukazan\ ;
+性生活 < seiseikatsu\ ;
+検閲官 < ken''etsukan\ ;
+流通税 < ryuutsuuzei\ ;
+利益配当 < riekihaitou\ ;
+洗濯糊 < sentakunori\ ;
+半直線 < hanchokusen\ ;
+洗濯籠 < sentakukago\ ;
+接合剤 < setsugouzai\ ;
+一所懸命 < isshokenmei\ ;
+農産物 < nousanbutsu\ ;
+源泉課税 < gensenkazei\ ;
+政治結社 < seijikessha\ ;
+塵埃 < chirihokori\ ;
+騎馬民族 < kibaminzoku\ ;
+隔世遺伝 < kakuseiiden\ ;
+古道具屋 < furudouguya\ ;
+吹奏楽器 < suisougakki\ ;
+機銃掃射 < kijuusousha\ ;
+接受国 < setsujukoku\ ;
+武家屋敷 < bukeyashiki\ ;
+南極海 < nankyokukai\ ;
+睡眠時間 < suiminjikan\ ;
+結膜炎 < ketsumakuen\ ;
+親睦会 < shinbokukai\ ;
+硫化物 < ryuukabutsu\ ;
+想像力 < souzouryoku\ ;
+芸術品 < geijutsuhin\ ;
+無記名株 < mukimeikabu\ ;
+南極洋 < nankyokuyou\ ;
+事務総長 < jimusouchou\ ;
+再測量 < saisokuryou\ ;
+主治効能 < shujikounou\ ;
+天津御祖 < amatsumioya\ ;
+気象衛星 < kishoueisei\ ;
+有効期限 < yuukoukigen\ ;
+農奴解放 < noudokaihou\ ;
+露出計 < roshutsukei\ ;
+心臓麻痺 < shinzoumahi\ ;
+酔生夢死 < suiseimushi\ ;
+無法地帯 < muhouchitai\ ;
+街頭募金 < gaitoubokin\ ;
+留学生 < ryuugakusei\ ;
+水仕事 < mizushigoto\ ;
+学習用 < gakushuuyou\ ;
+荒唐無稽 < koutoumukei\ ;
+注射針 < chuushabari\ ;
+観察者 < kansatsusha\ ;
+栄養不足 < eiyoufusoku\ ;
+通信欄 < tsuushinran\ ;
+名誉市民 < meiyoshimin\ ;
+軍事同盟 < gunjidoumei\ ;
+有効作用 < yuukousayou\ ;
+五月闇 < satsukiyami\ ;
+発着場 < hatchakujou\ ;
+先遣部隊 < senkenbutai\ ;
+嘉言善行 < kagenzenkou\ ;
+輸出税 < yushutsuzei\ ;
+合同会議 < goudoukaigi\ ;
+起死回生 < kishikaisei\ ;
+透視画法 < toushigahou\ ;
+無銭旅行 < musenryokou\ ;
+就職時 < shuushokuji\ ;
+保安設備 < hoansetsubi\ ;
+着眼点 < chakuganten\ ;
+空冷式 < kuureishiki\ ;
+溶接工 < yousetsukou\ ;
+丸木橋 < marukibashi\ ;
+内部闘争 < naibutousou\ ;
+不正融資 < fuseiyuushi\ ;
+山形県 < yamagataken\ ;
+交霊術 < koureijutsu\ ;
+漢英辞典 < kan''eijiten\ ;
+創造説 < souzousetsu\ ;
+領土保全 < ryoudohozen\ ;
+招待席 < shoutaiseki\ ;
+無事息災 < bujisokusai\ ;
+雪上車 < setsujousha\ ;
+交響楽 < koukyougaku\ ;
+農業国 < nougyoukoku\ ;
+卓越風 < takuetsufuu\ ;
+指名手配 < shimeitehai\ ;
+鎮痛性 < chintsuusei\ ;
+遊覧飛行 < yuuranhikou\ ;
+認識論 < ninshikiron\ ;
+受験地獄 < jukenjigoku\ ;
+警備強化 < keibikyouka\ ;
+就寝前 < shuushinzen\ ;
+心理主義 < shinrishugi\ ;
+双曲線 < soukyokusen\ ;
+離婚訴訟 < rikonsoshou\ ;
+夏時刻 < natsujikoku\ ;
+夏大根 < natsudaikon\ ;
+音訓索引 < onkunsakuin\ ;
+危険因子 < kiken''inshi\ ;
+村八分 < murahachibu\ ;
+超過勤務 < choukakinmu\ ;
+傘伐林 < sanbatsurin\ ;
+常設館 < jousetsukan\ ;
+南極星 < nankyokusei\ ;
+神学士 < shingakushi\ ;
+進歩主義 < shinposhugi\ ;
+上告審 < joukokushin\ ;
+先入観 < sen''nyuukan\ ;
+先入見 < sen''nyuuken\ ;
+保全会社 < hozenkaisha\ ;
+洗濯物 < sentakumono\ ;
+万葉集 < man''youshuu\ ;
+自己紹介 < jikoshoukai\ ;
+人道支援 < jindoushien\ ;
+満州国 < manshuukoku\ ;
+希少価値 < kishoukachi\ ;
+表忠塔 < hyouchuutou\ ;
+三重殺 < sanjuusatsu\ ;
+婦人科学 < fujinkagaku\ ;
+支援団体 < shiendantai\ ;
+分泌液 < bunpitsueki\ ;
+宇宙空間 < uchuukuukan\ ;
+隣接県 < rinsetsuken\ ;
+嘘八百 < usohappyaku\ ;
+舞踏室 < butoushitsu\ ;
+当局者 < toukyokusha\ ;
+化粧煉瓦 < keshourenga\ ;
+緩衝国 < kanshoukoku\ ;
+早期発見 < soukihakken\ ;
+自然治癒 < shizenchiyu\ ;
+不可知的 < fukachiteki\ ;
+訴訟費用 < soshouhiyou\ ;
+藁人形 < waraningyou\ ;
+影響力 < eikyouryoku\ ;
+災害保険 < saigaihoken\ ;
+大器晩成 < taikibansei\ ;
+文節数 < bunsetsusuu\ ;
+数珠一連 < juzuichiren\ ;
+文明開化 < bunmeikaika\ ;
+悪推量 < waruzuiryou\ ;
+含有量 < gan''yuuryou\ ;
+誘電率 < yuudenritsu\ ;
+反動主義 < handoushugi\ ;
+観察眼 < kansatsugan\ ;
+政府高官 < seifukoukan\ ;
+鏡餅 < kagamimochi\ ;
+裏切者 < uragirimono\ ;
+京都府警 < kyoutofukei\ ;
+防雪林 < bousetsurin\ ;
+天神髭 < tenshinhige\ ;
+殺害者 < satsugaisha\ ;
+勤王攘夷 < kin''noujoui\ ;
+空挺部隊 < kuuteibutai\ ;
+教育省 < kyouikushou\ ;
+離乳食 < rinyuushoku\ ;
+教育的 < kyouikuteki\ ;
+多士済済 < tashiseisei\ ;
+不器用者 < bukiyoumono\ ;
+兵站基地 < heitankichi\ ;
+有理関数 < yuurikansuu\ ;
+人工頭脳 < jinkouzunou\ ;
+特別区 < tokubetsuku\ ;
+財政力 < zaiseiryoku\ ;
+十六音符 < juurokuonpu\ ;
+強硬策 < kyoukousaku\ ;
+新年号 < shin''nengou\ ;
+磯馴松 < sonarematsu\ ;
+奇想天外 < kisoutengai\ ;
+内容見本 < naiyoumihon\ ;
+入館料 < nyuukanryou\ ;
+物相飯 < mossoumeshi\ ;
+製革業 < seikakugyou\ ;
+中学生 < chuugakusei\ ;
+輸出港 < yushutsukou\ ;
+南極帯 < nankyokutai\ ;
+料理道具 < ryouridougu\ ;
+大圏航路 < taikenkouro\ ;
+溶接剤 < yousetsuzai\ ;
+急病人 < kyuubyounin\ ;
+寄宿料 < kishukuryou\ ;
+高島田 < takashimada\ ;
+小正月 < koshougatsu\ ;
+動力計 < douryokukei\ ;
+極大値 < kyokudaichi\ ;
+準備管制 < junbikansei\ ;
+烏口 < karasuguchi\ ;
+出金額 < shukkingaku\ ;
+申告制 < shinkokusei\ ;
+粍 < mirimeitoru\ ;
+陣頭指揮 < jintoushiki\ ;
+粁 < kiromeitoru\ ;
+籵 < dekameetoru\ ;
+臓器移植 < zoukiishoku\ ;
+基本概念 < kihongainen\ ;
+子供達 < kodomotachi\ ;
+会議日程 < kaiginittei\ ;
+公定地価 < kouteichika\ ;
+基礎研究 < kisokenkyuu\ ;
+環境汚染 < kankyouosen\ ;
+媒介物 < baikaibutsu\ ;
+疑心暗鬼 < gishin''anki\ ;
+黄道色 < koudoushoku\ ;
+三葉虫 < san''youchuu\ ;
+全質化 < zenshitsuka\ ;
+生活難 < seikatsunan\ ;
+細動脈 < saidoumyaku\ ;
+江戸前寿司 < edomaezushi\ ;
+総理大臣 < souridaijin\ ;
+複雑化 < fukuzatsuka\ ;
+自己満足 < jikomanzoku\ ;
+勢力圏 < seiryokuken\ ;
+絶対主義 < zettaishugi\ ;
+竰 < senchiritto\ ;
+正味値段 < shouminedan\ ;
+竡 < hekutoritto\ ;
+竓 < miririttoru\ ;
+竏 < kirorittoru\ ;
+個人教授 < kojinkyouju\ ;
+複複線 < fukufukusen\ ;
+少壮気鋭 < shousoukiei\ ;
+新年会 < shin''nenkai\ ;
+不確実 < fukakujitsu\ ;
+東亜諸国 < touashokoku\ ;
+喇叭水仙 < rappazuisen\ ;
+鎮痛剤 < chintsuuzai\ ;
+怪人物 < kaijinbutsu\ ;
+通学生 < tsuugakusei\ ;
+爆心地 < bakushinchi\ ;
+実行可能 < jikkoukanou\ ;
+事前運動 < jizen''undou\ ;
+始末書 < shimatsusho\ ;
+外来患者 < gairaikanja\ ;
+競争心 < kyousoushin\ ;
+避難訓練 < hinankunren\ ;
+剽軽者 < hyoukinmono\ ;
+腸閉塞 < chouheisoku\ ;
+販売部門 < hanbaibumon\ ;
+軍当局 < guntoukyoku\ ;
+労働運動 < roudouundou\ ;
+準備銀行 < junbiginkou\ ;
+幹線道路 < kansendouro\ ;
+不透明性 < futoumeisei\ ;
+白子鳩 < shirakobato\ ;
+町役場 < machiyakuba\ ;
+加圧水炉 < kaatsusuiro\ ;
+不忠実 < fuchuujitsu\ ;
+表音文字 < hyouonmonji\ ;
+指名打者 < shimeidasha\ ;
+総司令部 < soushireibu\ ;
+博学者 < hakugakusha\ ;
+伝統主義 < dentoushugi\ ;
+戦略上 < senryakujou\ ;
+主要都市 < shuyoutoshi\ ;
+南極圏 < nankyokuken\ ;
+両脚規 < ryoukyakuki\ ;
+低温殺菌 < teionsakkin\ ;
+共訳者 < kyouyakusha\ ;
+夫婦関係 < fuufukankei\ ;
+忍耐力 < nintairyoku\ ;
+作業時間 < sagyoujikan\ ;
+集金人 < shuukin''nin\ ;
+非常手段 < hijoushudan\ ;
+十八金 < juuhachikin\ ;
+専制政治 < senseiseiji\ ;
+映画監督 < eigakantoku\ ;
+借用者 < shakuyousha\ ;
+瓰 < deshiguramu\ ;
+濃淡画像 < noutangazou\ ;
+端金 < hashitagane\ ;
+灯火管制 < toukakansei\ ;
+重要事項 < juuyoujikou\ ;
+非常呼集 < hijoukoshuu\ ;
+持久力 < jikyuuryoku\ ;
+局地風 < kyokuchifuu\ ;
+発癌性 < hatsugansei\ ;
+揚陸料 < yourikuryou\ ;
+密貿易 < mitsuboueki\ ;
+通信員 < tsuushin''in\ ;
+立候補者 < rikkouhosha\ ;
+冠動脈 < kandoumyaku\ ;
+変奏曲 < hensoukyoku\ ;
+浄化装置 < joukasouchi\ ;
+御生憎様 < oainikusama\ ;
+表彰台 < hyoushoudai\ ;
+人員淘汰 < jin''intouta\ ;
+葬送曲 < sousoukyoku\ ;
+交通事故 < koutsuujiko\ ;
+千分率 < senbunritsu\ ;
+四輪駆動 < yonrinkudou\ ;
+丸一年 < maruichinen\ ;
+代理公使 < dairikoushi\ ;
+外務大臣 < gaimudaijin\ ;
+老廃物 < rouhaibutsu\ ;
+南極光 < nankyokukou\ ;
+皮算用 < kawazan''you\ ;
+野戦砲兵 < yasenhouhei\ ;
+追分節 < oiwakebushi\ ;
+徳川勢 < tokugawazei\ ;
+地名辞典 < chimeijiten\ ;
+不動産屋 < fudousan''ya\ ;
+創造物 < souzoubutsu\ ;
+初航海 < hatsukoukai\ ;
+購読料 < koudokuryou\ ;
+得票数 < tokuhyousuu\ ;
+体感温度 < taikan''ondo\ ;
+雪景色 < yukigeshiki\ ;
+観光都市 < kankoutoshi\ ;
+同性愛者 < douseiaisha\ ;
+部隊撤退 < butaitettai\ ;
+精神的 < seishinteki\ ;
+協議会員 < kyougikaiin\ ;
+啓蒙運動 < keimouundou\ ;
+徳川公 < tokugawakou\ ;
+自立心 < jiritsushin\ ;
+亀甲模様 < kikkoumoyou\ ;
+衛生状態 < eiseijoutai\ ;
+漸進的 < zenshinteki\ ;
+教会暦 < kyoukaireki\ ;
+殺人者 < satsujinsha\ ;
+鎖国主義 < sakokushugi\ ;
+精神病 < seishinbyou\ ;
+殺人罪 < satsujinzai\ ;
+成年式 < seinenshiki\ ;
+器用貧乏 < kiyoubinbou\ ;
+脱石油 < datsusekiyu\ ;
+先進国 < senshinkoku\ ;
+眼精疲労 < ganseihirou\ ;
+宣伝機関 < sendenkikan\ ;
+土団子 < tsuchidango\ ;
+何時何時 < itsunandoki\ ;
+控室 < hikaeshitsu\ ;
+民権主義 < minkenshugi\ ;
+年次総会 < nenjisoukai\ ;
+混合物 < kongoubutsu\ ;
+軍楽長 < gungakuchou\ ;
+法律上 < houritsujou\ ;
+畜犬税 < chikukenzei\ ;
+無償交付 < mushoukoufu\ ;
+短期手形 < tankitegata\ ;
+内務大臣 < naimudaijin\ ;
+一世一代 < isseichidai\ ;
+事項索引 < jikousakuin\ ;
+放射線科 < houshasenka\ ;
+皇太子妃 < koutaishihi\ ;
+梁山泊 < ryouzanpaku\ ;
+彫塑術 < chousojutsu\ ;
+代用食 < daiyoushoku\ ;
+妖怪変化 < youkaihenge\ ;
+並木道 < namikimichi\ ;
+宝石箱 < housekibako\ ;
+卒業後 < sotsugyougo\ ;
+口角力 < kuchidzumou\ ;
+事業主 < jigyounushi\ ;
+自虐的 < jigyakuteki\ ;
+下相談 < shitasoudan\ ;
+変形部門 < henkeibumon\ ;
+野戦病院 < yasenbyouin\ ;
+禿頭病 < tokutoubyou\ ;
+戦災地区 < sensaichiku\ ;
+弾着点 < danchakuten\ ;
+特務機関 < tokumukikan\ ;
+五月病 < gogatsubyou\ ;
+砂糖大根 < satoudaikon\ ;
+弾力性 < danryokusei\ ;
+核爆弾 < kakubakudan\ ;
+商業街 < shougyougai\ ;
+頭文字 < kashiramoji\ ;
+半加工品 < hankakouhin\ ;
+自記温度計 < jikiondokei\ ;
+縮緬紙 < chirimenshi\ ;
+二等分線 < nitoubunsen\ ;
+授業時間 < jugyoujikan\ ;
+天神地祇 < tenjinchigi\ ;
+追加予算 < tsuikayosan\ ;
+非合理的 < higouriteki\ ;
+労農政府 < rounouseifu\ ;
+南京虫 < nankinmushi\ ;
+裁決書 < saiketsusho\ ;
+下意上達 < kaijoutatsu\ ;
+核燃料 < kakunenryou\ ;
+乗車拒否 < joushakyohi\ ;
+逐字訳 < chikujiyaku\ ;
+水洗便所 < suisenbenjo\ ;
+収納家具 < shuunoukagu\ ;
+未開墾地 < mikaikonchi\ ;
+正当防衛 < seitoubouei\ ;
+一徹者 < ittetsumono\ ;
+御協力 < gokyouryoku\ ;
+学科試験 < gakkashiken\ ;
+係属中 < keizokuchuu\ ;
+潜水母艦 < sensuibokan\ ;
+米印 < komejirushi\ ;
+病中吟 < byouchuugin\ ;
+使用価値 < shiyoukachi\ ;
+極限値 < kyokugenchi\ ;
+教育学 < kyouikugaku\ ;
+電話室 < denwashitsu\ ;
+遠心力 < enshinryoku\ ;
+官尊民卑 < kansonminpi\ ;
+宮崎県 < miyazakiken\ ;
+商工業 < shoukougyou\ ;
+衝動的 < shoudouteki\ ;
+胆石症 < tansekishou\ ;
+輸出品 < yushutsuhin\ ;
+普遍文法 < fuhenbunpou\ ;
+過剰人口 < kajoujinkou\ ;
+三眠蚕 < sanminkaiko\ ;
+間欠泉 < kanketsusen\ ;
+出先機関 < desakikikan\ ;
+準備委員会 < junbiiinkai\ ;
+天龍川 < tenryuukawa\ ;
+教習生 < kyoushuusei\ ;
+隣接地 < rinsetsuchi\ ;
+発生率 < hasseiritsu\ ;
+葡萄畑 < budoubatake\ ;
+境界標 < kyoukaihyou\ ;
+空軍力 < kuugunryoku\ ;
+交声曲 < kouseikyoku\ ;
+現内閣 < gen''naikaku\ ;
+占星術 < senseijutsu\ ;
+香辛料 < koushinryou\ ;
+町道場 < machidoujou\ ;
+宣伝効果 < sendenkouka\ ;
+時々刻々 < jijikokkoku\ ;
+近似計算 < kinjikeisan\ ;
+動力源 < douryokugen\ ;
+恒等式 < koutoushiki\ ;
+討伐軍 < toubatsugun\ ;
+表看板 < omotekanban\ ;
+護憲運動 < goken''undou\ ;
+濃青色 < nouseishoku\ ;
+殺人犯 < satsujinhan\ ;
+残念賞 < zan''nenshou\ ;
+原因結果 < gen''inkekka\ ;
+友軍部隊 < yuugunbutai\ ;
+脳充血 < noujuuketsu\ ;
+食人種 < shokujinshu\ ;
+赤褐色 < sekkasshoku\ ;
+無尽会社 < mujingaisha\ ;
+興信録 < koushinroku\ ;
+電熱器 < den''netsuki\ ;
+作曲者 < sakkyokusha\ ;
+古今東西 < kokontouzai\ ;
+唐錦 < karanishiki\ ;
+看護婦長 < kangofuchou\ ;
+商標権 < shouhyouken\ ;
+悲憤慷慨 < hifunkougai\ ;
+常識人 < joushikijin\ ;
+古代文明 < kodaibunmei\ ;
+観客層 < kankyakusou\ ;
+無産政党 < musanseitou\ ;
+一重桜 < hitoezakura\ ;
+選挙準備 < senkyojunbi\ ;
+地動説 < chidousetsu\ ;
+意識不明 < ishikifumei\ ;
+白亜質 < hakuashitsu\ ;
+膠着剤 < kouchakuzai\ ;
+一段落 < ichidanraku\ ;
+組合主義 < kumiaishugi\ ;
+軍用鳩 < gun''youbato\ ;
+俗文学 < zokubungaku\ ;
+個体発生 < kotaihassei\ ;
+電圧計 < den''atsukei\ ;
+薬局方 < yakkyokuhou\ ;
+法制局 < houseikyoku\ ;
+薬学者 < yakugakusha\ ;
+係争物 < keisoubutsu\ ;
+四分音符 < shibun''onpu\ ;
+使徒書簡 < shitoshokan\ ;
+優柔不断 < yuujuufudan\ ;
+脱毛剤 < datsumouzai\ ;
+煎餅蒲団 < senbeibuton\ ;
+管轄権 < kankatsuken\ ;
+借用書 < shakuyousho\ ;
+予定調和 < yoteichouwa\ ;
+奉公口 < houkouguchi\ ;
+先祖伝来 < senzodenrai\ ;
+放送局 < housoukyoku\ ;
+事業部制 < jigyoubusei\ ;
+黄白色 < kohakushoku\ ;
+臨時列車 < rinjiressha\ ;
+定期試験 < teikishiken\ ;
+羽織袴 < haorihakama\ ;
+総合課税 < sougoukazei\ ;
+遠隔講義 < enkakukougi\ ;
+除幕式 < jomakushiki\ ;
+海底油田 < kaiteiyuden\ ;
+真一文字 < maichimonji\ ;
+蝸牛 < dendenmushi\ ;
+電話調査 < denwachousa\ ;
+技術援助 < gijutsuenjo\ ;
+強制的 < kyouseiteki\ ;
+強心剤 < kyoushinzai\ ;
+生活環 < seikatsukan\ ;
+春一番 < haruichiban\ ;
+十八番 < juuhachiban\ ;
+黒鶫 < kurotsugumi\ ;
+偏向回路 < henkoukairo\ ;
+予定納税 < yoteinouzei\ ;
+皇后陛下 < kougouheika\ ;
+連邦制度 < renpouseido\ ;
+錦蛇 < nishikihebi\ ;
+終身官 < shuushinkan\ ;
+国侍 < kunizamurai\ ;
+電気電子 < denkidenshi\ ;
+代行機関 < daikoukikan\ ;
+疲労困憊 < hiroukonpai\ ;
+盗難保険 < tounanhoken\ ;
+純真無垢 < junshinmuku\ ;
+月長石 < getchouseki\ ;
+教職員 < kyoushokuin\ ;
+下位互換性 < kaigokansei\ ;
+法務大臣 < houmudaijin\ ;
+送別会 < soubetsukai\ ;
+出品国 < shuppinkoku\ ;
+刑事処分 < keijishobun\ ;
+駐車違反 < chuushaihan\ ;
+南京町 < nankinmachi\ ;
+時機尚早 < jikishousou\ ;
+道徳的 < doutokuteki\ ;
+商業界 < shougyoukai\ ;
+収納額 < shuunougaku\ ;
+鼎立戦 < teiritsusen\ ;
+原則的 < gensokuteki\ ;
+年金基金 < nenkinkikin\ ;
+傍聴料 < bouchouryou\ ;
+千円札 < sen''ensatsu\ ;
+定収入 < teishuunyuu\ ;
+適法行為 < tekihoukoui\ ;
+物見遊山 < monomiyusan\ ;
+得意満面 < tokuimanmen\ ;
+時差出勤 < jisashukkin\ ;
+政治問題 < seijimondai\ ;
+絶対敬語 < zettaikeigo\ ;
+鍵盤楽器 < kenbangakki\ ;
+訴訟事件 < soshoujiken\ ;
+意味役割 < imiyakuwari\ ;
+六大州 < rokudaishuu\ ;
+割引券 < waribikiken\ ;
+住生活 < juuseikatsu\ ;
+価格安定 < kakakuantei\ ;
+今上陛下 < kinjouheika\ ;
+電気系統 < denkikeitou\ ;
+前立腺 < zenritsusen\ ;
+兌換銀行 < dakanginkou\ ;
+写真集 < shashinshuu\ ;
+全会一致 < zenkaiitchi\ ;
+百万遍 < hyakumanben\ ;
+蝉時雨 < semishigure\ ;
+麻薬患者 < mayakukanja\ ;
+割引債 < waribikisai\ ;
+心機一転 < shinkiitten\ ;
+無名戦士 < mumeisenshi\ ;
+唯一無二 < yuiitsumuni\ ;
+接着剤 < setchakuzai\ ;
+手術台 < shujutsudai\ ;
+防火扉 < boukatobira\ ;
+乱入者 < ran''nyuusha\ ;
+計画的 < keikakuteki\ ;
+財政安定 < zaiseiantei\ ;
+調印式 < chouinshiki\ ;
+看護学校 < kangogakkou\ ;
+逆転層 < gyakutensou\ ;
+生活法 < seikatsuhou\ ;
+粘土質 < nendoshitsu\ ;
+分類基準 < bunruikijun\ ;
+逆輸入 < gyakuyunyuu\ ;
+文書偽造 < bunshogizou\ ;
+孤軍奮闘 < kogunfuntou\ ;
+新興国 < shinkoukoku\ ;
+数次旅券 < suujiryoken\ ;
+合目的 < goumokuteki\ ;
+合成繊維 < gouseisen''i\ ;
+新人賞 < shinjinshou\ ;
+電報局 < denpoukyoku\ ;
+貴族政治 < kizokuseiji\ ;
+博愛主義 < hakuaishugi\ ;
+一斉検挙 < isseikenkyo\ ;
+亜鉛華軟膏 < aenkanankou\ ;
+三幕物 < sanmakumono\ ;
+白木蓮 < hakumokuren\ ;
+商業港 < shougyoukou\ ;
+一里塚 < ichiridzuka\ ;
+終身刑 < shuushinkei\ ;
+低温輸送 < teion''yusou\ ;
+風光明媚 < fuukoumeibi\ ;
+後部座席 < koubuzaseki\ ;
+動力学 < dourikigaku\ ;
+節料理 < sechiryouri\ ;
+出品人 < shuppin''nin\ ;
+傍聴席 < bouchouseki\ ;
+不適切 < futekisetsu\ ;
+個人投資 < kojintoushi\ ;
+学際的 < gakusaiteki\ ;
+竜骨座 < ryuukotsuza\ ;
+保険会社 < hokengaisha\ ;
+硫化水素 < ryuukasuiso\ ;
+仮条約 < karijouyaku\ ;
+日本列島 < nihonrettou\ ;
+階級章 < kaikyuushou\ ;
+戦時公債 < senjikousai\ ;
+抵抗力 < teikouryoku\ ;
+森林学 < shinringaku\ ;
+海員組合 < kaiinkumiai\ ;
+百万言 < hyakumangen\ ;
+修辞疑問 < shuujigimon\ ;
+港町 < minatomachi\ ;
+法定貨幣 < houteikahei\ ;
+体内受精 < tainaijusei\ ;
+化粧下 < keshoushita\ ;
+虫薬 < mushigusuri\ ;
+楽観主義 < rakkanshugi\ ;
+赤提灯 < akachouchin\ ;
+入院患者 < nyuuinkanja\ ;
+創造主 < souzounushi\ ;
+関連事項 < kanrenjikou\ ;
+原価計算 < genkakeisan\ ;
+電子回路 < denshikairo\ ;
+候孝賢 < houshaushen\ ;
+重点主義 < juutenshugi\ ;
+価電子帯 < kadenshitai\ ;
+有効需要 < yuukoujuyou\ ;
+事業年度 < jigyounendo\ ;
+相反定理 < souhanteiri\ ;
+六分儀座 < rokubungiza\ ;
+冬将軍 < fuyushougun\ ;
+安定状態 < anteijoutai\ ;
+民主政治 < minshuseiji\ ;
+独習書 < dokushuusho\ ;
+公証料 < koushouryou\ ;
+唐紅 < karakurenai\ ;
+綿織物 < men''orimono\ ;
+化学繊維 < kagakusen''i\ ;
+絶対音感 < zettaionkan\ ;
+先入主 < sen''nyuushu\ ;
+最終的 < saishuuteki\ ;
+本建築 < honkenchiku\ ;
+自然破壊 < shizenhakai\ ;
+報道機関 < houdoukikan\ ;
+捕虜交換 < horyokoukan\ ;
+狗尾草 < enokorogusa\ ;
+亜米利加杉 < amerikasugi\ ;
+価値判断 < kachihandan\ ;
+行商人 < gyoushounin\ ;
+切分法 < setsubunhou\ ;
+手練手管 < terentekuda\ ;
+器械体操 < kikaitaisou\ ;
+養老保険 < yourouhoken\ ;
+小百姓 < kobyakushou\ ;
+心丈夫 < kokorojoubu\ ;
+鳥類学 < chouruigaku\ ;
+弱年者 < jakunenmono\ ;
+中隊長 < chuutaichou\ ;
+不当表示 < futouhyouji\ ;
+安全運転 < anzen''unten\ ;
+相談役 < soudan''yaku\ ;
+交際範囲 < kousaihan''i\ ;
+応用科学 < ouyoukagaku\ ;
+食事時 < shokujidoki\ ;
+八面体 < hachimentai\ ;
+不整合人 < fuseigoujin\ ;
+原判決 < genhanketsu\ ;
+単元制度 < tangenseido\ ;
+一歩前進 < ippozenshin\ ;
+国王陛下 < kokuouheika\ ;
+極地圏 < kyokuchiken\ ;
+放送衛星 < housoueisei\ ;
+寂光浄土 < jakkoujoudo\ ;
+監察官 < kansatsukan\ ;
+後生大事 < goshoudaiji\ ;
+三民主義 < sanminshugi\ ;
+白玉粉 < shiratamako\ ;
+商業文 < shougyoubun\ ;
+気管切開 < kikansekkai\ ;
+天動説 < tendousetsu\ ;
+傲岸不遜 < gouganfuson\ ;
+辻説法 < tsujiseppou\ ;
+家父長制 < kafuchousei\ ;
+暗黒星雲 < ankokuseiun\ ;
+近代国家 < kindaikokka\ ;
+煉丹術 < rentanjutsu\ ;
+西海岸 < nishikaigan\ ;
+前途有望 < zentoyuubou\ ;
+急上昇 < kyuujoushou\ ;
+宝石商 < housekishou\ ;
+換算率 < kansanritsu\ ;
+建設者 < kensetsusha\ ;
+北々西 < hokuhokusei\ ;
+音楽理論 < ongakuriron\ ;
+委託販売 < itakuhanbai\ ;
+銀婚式 < ginkonshiki\ ;
+三寒四温 < sankanshion\ ;
+貧乏所帯 < binboujotai\ ;
+御伽草子 < otogizoushi\ ;
+神奈川県 < kanagawaken\ ;
+電気装置 < denkisouchi\ ;
+地方議会 < chihougikai\ ;
+原動力 < gendouryoku\ ;
+俄景気 < niwakageiki\ ;
+装甲部隊 < soukoubutai\ ;
+不可入性 < fukanyuusei\ ;
+悪戯者 < itazuramono\ ;
+大福帳 < daifukuchou\ ;
+時節柄 < jisetsugara\ ;
+南京木綿 < nankinmomen\ ;
+磯鵯 < isohiyodori\ ;
+印象主義 < inshoushugi\ ;
+吸血鬼 < kyuuketsuki\ ;
+糖尿病 < tounyoubyou\ ;
+一張一弛 < itchouisshi\ ;
+区間列車 < kukanressha\ ;
+転任先 < ten''ninsaki\ ;
+支配力 < shihairyoku\ ;
+相思相愛 < soushisouai\ ;
+航空基地 < koukuukichi\ ;
+監査記録 < kansakiroku\ ;
+技術移転 < gijutsuiten\ ;
+産児制限 < sanjiseigen\ ;
+単音節 < tan''onsetsu\ ;
+新聞種 < shinbundane\ ;
+飽和状態 < houwajoutai\ ;
+低丘陵 < teikyuuryou\ ;
+国際的 < kokusaiteki\ ;
+郷土色 < kyoudoshoku\ ;
+竜田姫 < tatsutahime\ ;
+小学館 < shougakukan\ ;
+知能検査 < chinoukensa\ ;
+使節団 < shisetsudan\ ;
+消息文 < shousokubun\ ;
+緋衣草 < higoromosou\ ;
+主計局 < shukeikyoku\ ;
+道徳心 < doutokushin\ ;
+未決囚 < miketsushuu\ ;
+愛唱曲 < aishoukyoku\ ;
+孤影悄然 < koeishouzen\ ;
+五種競技 < goshukyougi\ ;
+偵察隊 < teisatsutai\ ;
+団体保険 < dantaihoken\ ;
+発信側 < hasshingawa\ ;
+姉妹都市 < shimaitoshi\ ;
+遠山里 < tooyamazato\ ;
+神経痛 < shinkeitsuu\ ;
+不通箇所 < futsuukasho\ ;
+神経症 < shinkeishou\ ;
+神経病 < shinkeibyou\ ;
+破邪顕正 < hajakenshou\ ;
+政治団体 < seijidantai\ ;
+一喜一憂 < ikkiichiyuu\ ;
+定着液 < teichakueki\ ;
+弁証学 < benshougaku\ ;
+準備命令 < junbimeirei\ ;
+受験科目 < jukenkamoku\ ;
+木管楽器 < mokkangakki\ ;
+発信人 < hasshin''nin\ ;
+中高音部 < chuukouonbu\ ;
+友愛結婚 < yuuaikekkon\ ;
+緑地帯 < ryokuchitai\ ;
+海軍基地 < kaigunkichi\ ;
+生活圏 < seikatsuken\ ;
+電子素子 < denshisoshi\ ;
+熱伝導 < netsudendou\ ;
+道徳学 < doutokugaku\ ;
+愛国運動 < aikokuundou\ ;
+適格者 < tekikakusha\ ;
+図書室 < toshoshitsu\ ;
+観音様 < kan''nonsama\ ;
+結婚式 < kekkonshiki\ ;
+西洋式 < seiyoushiki\ ;
+人文地理 < jinmonchiri\ ;
+労働争議 < roudousougi\ ;
+情報処理 < jouhoushori\ ;
+可変資本 < kahenshihon\ ;
+為替差益 < kawasesaeki\ ;
+誘拐事件 < yuukaijiken\ ;
+三大都市 < sandaitoshi\ ;
+男冥利 < otokomyouri\ ;
+所要時間 < shoyoujikan\ ;
+女権運動 < joken''undou\ ;
+分散処理 < bunsanshori\ ;
+走行可能 < soukoukanou\ ;
+命綱 < inochidzuna\ ;
+流言飛語 < ryuugenhigo\ ;
+一新紀元 < isshinkigen\ ;
+徒手体操 < toshutaisou\ ;
+上腕骨 < jouwankotsu\ ;
+生命力 < seimeiryoku\ ;
+硬骨漢 < koukotsukan\ ;
+商業地 < shougyouchi\ ;
+金轡 < kanagutsuwa\ ;
+万年床 < man''nendoko\ ;
+口車 < kuchiguruma\ ;
+講釈師 < koushakushi\ ;
+三幅対 < sanpukutsui\ ;
+蛋白尿 < tanpakunyou\ ;
+刺激臭 < shigekishuu\ ;
+草鞋虫 < warajimushi\ ;
+金融業 < kin''yuugyou\ ;
+封建主義 < houkenshugi\ ;
+菜種油 < nataneabura\ ;
+受験戦争 < jukensensou\ ;
+出雲大社 < izumotaisha\ ;
+雛人形 < hinaningyou\ ;
+権門勢家 < kenmonseika\ ;
+無着陸 < muchakuriku\ ;
+上分別 < joufunbetsu\ ;
+大動脈 < daidoumyaku\ ;
+無線操縦 < musensoujuu\ ;
+神無月 < kan''nadzuki\ ;
+幼馴染 < osananajimi\ ;
+円周率 < enshuuritsu\ ;
+借家争議 < shakkasougi\ ;
+宇宙科学 < uchuukagaku\ ;
+商業史 < shougyoushi\ ;
+古典芸能 < kotengeinou\ ;
+山岳病 < sangakubyou\ ;
+親任官 < shin''ninkan\ ;
+追跡者 < tsuisekisha\ ;
+豪華絢爛 < goukakenran\ ;
+発会式 < hakkaishiki\ ;
+婦人運動 < fujin''undou\ ;
+床面積 < yukamenseki\ ;
+不動明王 < fudoumyouou\ ;
+体外受精 < taigaijusei\ ;
+狸親父 < tanukioyaji\ ;
+木石漢 < bokusekikan\ ;
+国防省 < kokuboushou\ ;
+勤務年限 < kinmunengen\ ;
+国文学 < kokubungaku\ ;
+生殖腺 < seishokusen\ ;
+満場一致 < manjouitchi\ ;
+前世生存 < zenseseizon\ ;
+自殺的 < jisatsuteki\ ;
+会計年度 < kaikeinendo\ ;
+造物主 < zoubutsushu\ ;
+万葉仮名 < man''yougana\ ;
+傍聴随意 < bouchouzuii\ ;
+用兵術 < youheijutsu\ ;
+絶対多数 < zettaitasuu\ ;
+取調 < torishirabe\ ;
+退職金 < taishokukin\ ;
+紅白試合 < kouhakujiai\ ;
+会計監査 < kaikeikansa\ ;
+彎月状 < wangetsujou\ ;
+八紘一宇 < hakkouichiu\ ;
+舞台装置 < butaisouchi\ ;
+生没年 < seibotsunen\ ;
+単一性 < tan''itsusei\ ;
+鼻柱 < hanabashira\ ;
+持続力 < jizokuryoku\ ;
+事務長官 < jimuchoukan\ ;
+一般社会 < ippanshakai\ ;
+日帝時代 < nitteijidai\ ;
+新聞業 < shinbungyou\ ;
+登坂車線 < tohanshasen\ ;
+神経核 < shinkeikaku\ ;
+世界最大 < sekaisaidai\ ;
+指導原理 < shidougenri\ ;
+枢軸国 < suujikukoku\ ;
+造次顛沛 < zoujitenpai\ ;
+航空管理 < koukuukanri\ ;
+三色版 < sanshokuban\ ;
+窯印 < kamajirushi\ ;
+中間駅 < chuukan''eki\ ;
+能装束 < noushouzoku\ ;
+結晶学 < kesshougaku\ ;
+感染経路 < kansenkeiro\ ;
+解決法 < kaiketsuhou\ ;
+警戒色 < keikaishoku\ ;
+二等軍曹 < nitougunsou\ ;
+一毛作 < ichimousaku\ ;
+温熱性 < on''netsusei\ ;
+防火塗料 < boukatoryou\ ;
+自縄自縛 < jijoujibaku\ ;
+途中下車 < tochuugesha\ ;
+環境保護 < kankyouhogo\ ;
+嘘発見器 < usohakkenki\ ;
+面会時間 < menkaijikan\ ;
+重機関銃 < juukikanjuu\ ;
+内反脚 < naihankyaku\ ;
+法案審議 < houanshingi\ ;
+延縄漁 < haenawaryou\ ;
+直方体 < chokuhoutai\ ;
+自動制御 < jidouseigyo\ ;
+家族達 < kazokutachi\ ;
+刺激的 < shigekiteki\ ;
+個人指導 < kojinshidou\ ;
+自然発火 < shizenhakka\ ;
+主務大臣 < shumudaijin\ ;
+短期決戦 < tankikessen\ ;
+言語運用 < gengoun''you\ ;
+交換局 < koukankyoku\ ;
+危険思想 < kikenshisou\ ;
+空域管理 < kuuikikanri\ ;
+御殿女中 < gotenjochuu\ ;
+七年忌 < shichinenki\ ;
+隣保事業 < rinpojigyou\ ;
+悪戯書 < itazuragaki\ ;
+千人針 < sen''ninbari\ ;
+合意心中 < gouishinjuu\ ;
+世界記録 < sekaikiroku\ ;
+基本条件 < kihonjouken\ ;
+農民一揆 < noumin''ikki\ ;
+前代未聞 < zendaimimon\ ;
+消毒液 < shoudokueki\ ;
+複合汚染 < fukugouosen\ ;
+絶対零度 < zettaireido\ ;
+構成可能 < kouseikanou\ ;
+一人舞台 < hitoributai\ ;
+皮下組織 < hikasoshiki\ ;
+油砥石 < aburatoishi\ ;
+地下資源 < chikashigen\ ;
+狐饂飩 < kitsuneudon\ ;
+濃褐色 < noukasshoku\ ;
+材木商 < zaimokushou\ ;
+白化個体 < hakukakotai\ ;
+電話回線 < denwakaisen\ ;
+不正咬合 < fuseikougou\ ;
+摩訶不思議 < makafushigi\ ;
+原色版 < genshokuban\ ;
+美容体操 < biyoutaisou\ ;
+協議離婚 < kyougirikon\ ;
+蔦蘿 < tsutakazura\ ;
+温暖前線 < ondanzensen\ ;
+単項式 < tankoushiki\ ;
+新規保管 < shinkihokan\ ;
+土気色 < tsuchikeiro\ ;
+取締 < torishimari\ ;
+付属節 < fuzokusetsu\ ;
+一貫番号 < ikkanbangou\ ;
+現行法規 < genkouhouki\ ;
+一番鶏 < ichibandori\ ;
+紋章学 < monshougaku\ ;
+真只中 < mattadanaka\ ;
+祖国復帰 < sokokufukki\ ;
+含水炭素 < gansuitanso\ ;
+労働時間 < roudoujikan\ ;
+出席者 < shussekisha\ ;
+為替相場 < kawasesouba\ ;
+世界一周 < sekaiisshuu\ ;
+医療法人 < iryouhoujin\ ;
+門前町 < monzenmachi\ ;
+氷袋 < kooribukuro\ ;
+鼓舞激励 < kobugekirei\ ;
+教訓的 < kyoukunteki\ ;
+貯金局 < chokinkyoku\ ;
+官僚臭 < kanryoushuu\ ;
+蹄鉄工 < teitetsukou\ ;
+粒度分布 < ryuudobunpu\ ;
+神経学 < shinkeigaku\ ;
+投下資本 < toukashihon\ ;
+用意周到 < youishuutou\ ;
+表玄関 < omotegenkan\ ;
+内燃機関 < nainenkikan\ ;
+出張店 < shutchouten\ ;
+旅行鞄 < ryokoukaban\ ;
+減塩食 < gen''enshoku\ ;
+団体客 < dantaikyaku\ ;
+防水加工 < bousuikakou\ ;
+心霊学 < shinreigaku\ ;
+個人消費 < kojinshouhi\ ;
+仮性近視 < kaseikinshi\ ;
+大正琴 < taishougoto\ ;
+欠勤率 < kekkinritsu\ ;
+定着剤 < teichakuzai\ ;
+南西 < minaminishi\ ;
+入場料 < nyuujouryou\ ;
+逐語訳 < chikugoyaku\ ;
+思考力 < shikouryoku\ ;
+乳用牛 < nyuuyougyuu\ ;
+正覚坊 < shougakubou\ ;
+緑藻類 < ryokusourui\ ;
+目撃者 < mokugekisha\ ;
+黒曜石 < kokuyouseki\ ;
+空気伝染 < kuukidensen\ ;
+満一年 < man''ichinen\ ;
+没我的 < botsugateki\ ;
+含塵率 < ganjinritsu\ ;
+幼年時代 < younenjidai\ ;
+退職者 < taishokusha\ ;
+蔵屋敷 < kurayashiki\ ;
+社会復帰 < shakaifukki\ ;
+電気製品 < denkiseihin\ ;
+包金 < tsutsumikin\ ;
+再建築 < saikenchiku\ ;
+産婦人科医 < sanfujinkai\ ;
+一貫作業 < ikkansagyou\ ;
+滞在期間 < taizaikikan\ ;
+献身的 < kenshinteki\ ;
+無形財産 < mukeizaisan\ ;
+妨害物 < bougaibutsu\ ;
+点眼薬 < tengan''yaku\ ;
+元首相 < motoshushou\ ;
+無断転載 < mudantensai\ ;
+恐水病 < kyousuibyou\ ;
+均衡予算 < kinkouyosan\ ;
+密売品 < mitsubaihin\ ;
+石川県 < ishikawaken\ ;
+付帯条件 < futaijouken\ ;
+副会長 < fukukaichou\ ;
+発明者 < hatsumeisha\ ;
+軍事工場 < gunjikoujou\ ;
+有効数字 < yuukousuuji\ ;
+創作的 < sousakuteki\ ;
+臍下丹田 < seikatanden\ ;
+大逆罪 < taigyakuzai\ ;
+試用期間 < shiyoukikan\ ;
+一元的 < ichigenteki\ ;
+化学変化 < kagakuhenka\ ;
+自動車税 < jidoushazei\ ;
+言語道断 < gongodoudan\ ;
+百面相 < hyakumensou\ ;
+不侵略 < fushinryaku\ ;
+古狐 < furugitsune\ ;
+付属物 < fuzokubutsu\ ;
+担保物権 < tanpobukken\ ;
+営業時間 < eigyoujikan\ ;
+勉強中 < benkyouchuu\ ;
+写真帳 < shashinchou\ ;
+一目散 < ichimokusan\ ;
+風力計 < fuuryokukei\ ;
+活用形 < katsuyoukei\ ;
+自動扉 < jidoutobira\ ;
+愛妻弁当 < aisaibentou\ ;
+会社立 < kaisharitsu\ ;
+美的嫌悪 < bitekiken''o\ ;
+見目形 < mimekatachi\ ;
+三千世界 < sanzensekai\ ;
+鑑別所 < kanbetsusho\ ;
+多重放送 < tajuuhousou\ ;
+二重外交 < nijuugaikou\ ;
+仮契約 < karikeiyaku\ ;
+核拡散 < kakukakusan\ ;
+周辺国 < shuuhenkoku\ ;
+予備工作 < yobikousaku\ ;
+短波放送 < tanpahousou\ ;
+風光絶佳 < fuukouzekka\ ;
+必然性 < hitsuzensei\ ;
+主情主義 < shujoushugi\ ;
+両替商 < ryougaeshou\ ;
+行動主義 < koudoushugi\ ;
+自分自身 < jibunjishin\ ;
+脱色剤 < dasshokuzai\ ;
+夜光塗料 < yakoutoryou\ ;
+右心室 < ushinshitsu\ ;
+力革 < chikaragawa\ ;
+中央口 < chuuouguchi\ ;
+真菌症 < shinkinshou\ ;
+圧力波 < atsuryokuha\ ;
+帰無仮説 < kimukasetsu\ ;
+市場原理 < shijougenri\ ;
+全国的 < zenkokuteki\ ;
+京滋地方 < keijichihou\ ;
+縄梯子 < nawabashigo\ ;
+大義名分 < taigimeibun\ ;
+呼吸運動 < kokyuuundou\ ;
+螺旋階段 < rasenkaidan\ ;
+英語教育 < eigokyouiku\ ;
+象牙海岸 < zougekaigan\ ;
+我物顔 < wagamonogao\ ;
+日本脳炎 < nihon''nouen\ ;
+食堂車 < shokudousha\ ;
+運営委員会 < un''eiiinkai\ ;
+善知識 < zenchishiki\ ;
+和魂漢才 < wakonkansai\ ;
+経営再建 < keieisaiken\ ;
+脳下垂体 < noukasuitai\ ;
+一円札 < ichiensatsu\ ;
+視聴覚 < shichoukaku\ ;
+募金運動 < bokin''undou\ ;
+耐熱鋼 < tainetsukou\ ;
+刻苦勉励 < kokkubenrei\ ;
+既婚男性 < kikondansei\ ;
+革命的 < kakumeiteki\ ;
+治水工事 < chisuikouji\ ;
+小休止 < shoukyuushi\ ;
+日本人論 < nihonjinron\ ;
+好取組 < koutorikumi\ ;
+博奕宿 < bakuchiyado\ ;
+軍事公債 < gunjikousai\ ;
+十人十色 < juunintoiro\ ;
+無配会社 < muhaigaisha\ ;
+脳貧血 < nouhinketsu\ ;
+家族手当 < kazokuteate\ ;
+洗礼式 < senreishiki\ ;
+甲骨文 < koukotsubun\ ;
+日銀券 < nichiginken\ ;
+羅針盤座 < rashinbanza\ ;
+福祉機器 < fukushikiki\ ;
+貧民窟 < hinminkutsu\ ;
+奉献物 < houkenbutsu\ ;
+実業家 < jitsugyouka\ ;
+胸算用 < munezan''you\ ;
+暫定予算 < zanteiyosan\ ;
+自費出版 < jihishuppan\ ;
+冬木立 < fuyukodachi\ ;
+常用漢字 < jouyoukanji\ ;
+結紮糸 < kessatsushi\ ;
+王侯貴族 < oukoukizoku\ ;
+逆宣伝 < gyakusenden\ ;
+人体模型 < jintaimokei\ ;
+鮮紅色 < senkoushoku\ ;
+入国税 < nyuukokuzei\ ;
+日西辞典 < nisseijiten\ ;
+私儀 < watakushigi\ ;
+感情移入 < kanjouinyuu\ ;
+拡大鏡 < kakudaikyou\ ;
+地方競馬 < chihoukeiba\ ;
+道楽者 < dourakumono\ ;
+女房役 < nyoubouyaku\ ;
+条約国 < jouyakukoku\ ;
+力足 < chikaraashi\ ;
+経済効果 < keizaikouka\ ;
+代替物 < daitaibutsu\ ;
+混凝土 < konkurizeto\ ;
+民事訴訟 < minjisoshou\ ;
+化学記号 < kagakukigou\ ;
+私供 < watashidomo\ ;
+参加意識 < sankaishiki\ ;
+戦時体制 < senjitaisei\ ;
+自由市場 < jiyuushijou\ ;
+冷房完備 < reiboukanbi\ ;
+自己双対 < jikosoutsui\ ;
+消毒剤 < shoudokuzai\ ;
+力負 < chikaramake\ ;
+火燵掛布 < kotatsugake\ ;
+万能薬 < man''nouyaku\ ;
+信憑性 < shinpyousei\ ;
+希望価格 < kiboukakaku\ ;
+列伝体 < retsudentai\ ;
+口可笑 < kuchiokashi\ ;
+選対本部 < sentaihonbu\ ;
+先頭打者 < sentoudasha\ ;
+実生活 < jisseikatsu\ ;
+名前空間 < namaekuukan\ ;
+百姓家 < hyakushouya\ ;
+浅草海苔 < asakusanori\ ;
+事業本部 < jigyouhonbu\ ;
+理論闘争 < rirontousou\ ;
+人口増加 < jinkouzouka\ ;
+外交辞令 < gaikoujirei\ ;
+同音異義語 < douon''igigo\ ;
+氏姓制度 < shiseiseido\ ;
+一局部 < ichikyokubu\ ;
+縄文時代 < joumonjidai\ ;
+間一髪 < kan''ippatsu\ ;
+世界大戦 < sekaitaisen\ ;
+機動演習 < kidouenshuu\ ;
+自警団員 < jikeidan''in\ ;
+電気抵抗 < denkiteikou\ ;
+鎧一具 < yoroiichigu\ ;
+町人物 < chouninmono\ ;
+通訳官 < tsuuyakukan\ ;
+必要悪 < hitsuyouaku\ ;
+鉄道網 < tetsudoumou\ ;
+原産物 < gensanbutsu\ ;
+器楽曲 < kigakukyoku\ ;
+必要性 < hitsuyousei\ ;
+防音装置 < bouonsouchi\ ;
+半面識 < hanmenshiki\ ;
+水澄 < mizusumashi\ ;
+取扱 < toriatsukai\ ;
+夢心地 < yumegokochi\ ;
+負債合計 < fusaigoukei\ ;
+今週中 < konshuuchuu\ ;
+話下手 < hanashibeta\ ;
+遊軍記者 < yuugunkisha\ ;
+価値体系 < kachitaikei\ ;
+二重結婚 < nijuukekkon\ ;
+一長一短 < itchouittan\ ;
+護送船団 < gosousendan\ ;
+犯行現場 < hankougenba\ ;
+意見広告 < ikenkoukoku\ ;
+小乗的 < shoujouteki\ ;
+善因善果 < zen''inzenka\ ;
+立脚点 < rikkyakuten\ ;
+鉄兜 < tetsukabuto\ ;
+無人地帯 < mujinchitai\ ;
+経営転換 < keieitenkan\ ;
+不信実 < fushinjitsu\ ;
+販売機会 < hanbaikikai\ ;
+争奪戦 < soudatsusen\ ;
+商学士 < shougakushi\ ;
+上屋敷 < kamiyashiki\ ;
+若大将 < wakadaishou\ ;
+遠隔操作 < enkakusousa\ ;
+操舵室 < soudashitsu\ ;
+成人式 < seijinshiki\ ;
+慣用語句 < kan''yougoku\ ;
+液体空気 < ekitaikuuki\ ;
+新面目 < shinmenmoku\ ;
+注文服 < chuumonfuku\ ;
+上棟式 < joutoushiki\ ;
+赤銅色 < shakudouiro\ ;
+出刃包丁 < debabouchou\ ;
+向学心 < kougakushin\ ;
+渇望者 < katsubousha\ ;
+土讚本線 < dosanhonsen\ ;
+財政支援 < zaiseishien\ ;
+宮廷画家 < kyuuteigaka\ ;
+執達吏 < shittatsuri\ ;
+最後列車 < saigoressha\ ;
+理工学部 < rikougakubu\ ;
+保管会社 < hokangaisha\ ;
+乗心地 < norigokochi\ ;
+配合禁忌 < haigoukinki\ ;
+弔祭料 < chousairyou\ ;
+過剰投資 < kajoutoushi\ ;
+家長制度 < kachouseido\ ;
+可聴距離 < kachoukyori\ ;
+下検分 < shitakenbun\ ;
+親類縁者 < shinruienja\ ;
+開催式 < kaisaishiki\ ;
+田舎娘 < inakamusume\ ;
+箱火鉢 < hakohibachi\ ;
+無理心中 < murishinjuu\ ;
+副首相 < fukushushou\ ;
+年賀葉書 < nengahagaki\ ;
+敵愾心 < tekigaishin\ ;
+釈空海 < shakukuukai\ ;
+連邦予算 < renpouyosan\ ;
+組織票 < soshikihyou\ ;
+出身者 < shusshinsha\ ;
+創価学会 < soukagakkai\ ;
+仕事量 < shigotoryou\ ;
+半月形 < hangetsukei\ ;
+分子説 < bunshisetsu\ ;
+半月弁 < hangetsuben\ ;
+正答率 < seitouritsu\ ;
+利子補給 < rishihokyuu\ ;
+季節的 < kisetsuteki\ ;
+氷枕 < koorimakura\ ;
+水柱 < mizubashira\ ;
+根本原理 < konpongenri\ ;
+安全保障 < anzenhoshou\ ;
+原子説 < genshisetsu\ ;
+健康保険 < kenkouhoken\ ;
+暗黒時代 < ankokujidai\ ;
+世代交代 < sedaikoutai\ ;
+神嘗祭 < kan''namesai\ ;
+桧舞台 < hinokibutai\ ;
+転送電話 < tensoudenwa\ ;
+対局者 < taikyokusha\ ;
+貝殻骨 < kaigarabone\ ;
+千両箱 < senryoubako\ ;
+昭和時代 < shouwajidai\ ;
+純収入 < junshuunyuu\ ;
+物理的 < butsuriteki\ ;
+林産物 < rinsanbutsu\ ;
+突然死 < totsuzenshi\ ;
+使用許可 < shiyoukyoka\ ;
+証取法 < shoutorihou\ ;
+歴史的 < rekishiteki\ ;
+組織的 < soshikiteki\ ;
+贈呈式 < zouteishiki\ ;
+積載量 < sekisairyou\ ;
+自発的 < jihatsuteki\ ;
+己 < tsuchinoto\ ;
+屡 < shibashiba\ ;
+謀 < hakarigoto\ ;
+熟 < tsukudzuku\ ;
+嘴 < kuchibashi\ ;
+々 < kurikaeshi\ ;
+土石流 < dosekiryuu\ ;
+市町村 < shichouson\ ;
+音楽映画 < ongakueiga\ ;
+食塩水 < shokuensui\ ;
+潤滑油 < junkatsuyu\ ;
+流星群 < ryuuseigun\ ;
+契約金 < keiyakukin\ ;
+決議文 < ketsugibun\ ;
+蒸留酒 < jouryuushu\ ;
+針葉樹 < shin''youju\ ;
+猛勉強 < moubenkyou\ ;
+宇宙遊泳 < uchuuyuuei\ ;
+深刻化 < shinkokuka\ ;
+切通 < kiridooshi\ ;
+所得顔 < tokoroegao\ ;
+御客様 < okyakusama\ ;
+蔵書票 < zoushohyou\ ;
+人工雪 < jinkouyuki\ ;
+同腹仔 < doufukushi\ ;
+射倖心 < shakoushin\ ;
+保健制度 < hokenseido\ ;
+準備運動 < junbiundou\ ;
+代議制度 < daigiseido\ ;
+博士号 < hakushigou\ ;
+入漁者 < nyuugyosha\ ;
+別除権 < betsujoken\ ;
+戦闘服 < sentoufuku\ ;
+模型地図 < mokeichizu\ ;
+養鶏業 < youkeigyou\ ;
+議決権 < giketsuken\ ;
+入園料 < nyuuenryou\ ;
+優先的 < yuusenteki\ ;
+無茶苦茶 < muchakucha\ ;
+同一視 < douitsushi\ ;
+古往今来 < kooukonrai\ ;
+難行道 < nangyoudou\ ;
+遺失品 < ishitsuhin\ ;
+食文化 < shokubunka\ ;
+鯰髭 < namazuhige\ ;
+民主国 < minshukoku\ ;
+再帰熱 < saikinetsu\ ;
+炭化物 < tankabutsu\ ;
+断片的 < danpenteki\ ;
+溺死体 < dekishitai\ ;
+海洋学 < kaiyougaku\ ;
+歯神経 < shishinkei\ ;
+口口 < kuchiguchi\ ;
+反抗的 < hankouteki\ ;
+開催国 < kaisaikoku\ ;
+御両親 < goryoushin\ ;
+摩利支天 < marishiten\ ;
+修正液 < shuuseieki\ ;
+初詣 < hatsumoude\ ;
+石畳 < ishidatami\ ;
+人為淘汰 < jin''itouta\ ;
+厚生省 < kouseishou\ ;
+逆説 < gyakusetsu\ ;
+高級車 < koukyuusha\ ;
+軟文学 < nanbungaku\ ;
+稼働時間 < kadoujikan\ ;
+試作品 < shisakuhin\ ;
+観覧料 < kanranryou\ ;
+不信任 < fushin''nin\ ;
+茸雲 < kinokogumo\ ;
+近道 < chikamichi\ ;
+三脚架 < sankyakuka\ ;
+変態的 < hentaiteki\ ;
+医療制度 < iryouseido\ ;
+近近 < chikadjika\ ;
+乞高評 < koukouhyou\ ;
+水心 < mizugokoro\ ;
+毛氈苔 < mousengoke\ ;
+面罵罵倒 < menbabatou\ ;
+三尺帯 < sanjakuobi\ ;
+応急策 < oukyuusaku\ ;
+砂煙 < sunakemuri\ ;
+人道的 < jindouteki\ ;
+海酸漿 < umihoozuki\ ;
+承認状 < shouninjou\ ;
+随筆家 < zuihitsuka\ ;
+核融合 < kakuyuugou\ ;
+抽選券 < chuusenken\ ;
+川魚 < kawazakana\ ;
+免許証 < menkyoshou\ ;
+美容術 < biyoujutsu\ ;
+裏貸屋 < uragashiya\ ;
+防毒面 < boudokumen\ ;
+弁慶蟹 < benkeigani\ ;
+卯年 < usagidoshi\ ;
+二線式 < nisenshiki\ ;
+必要事 < hitsuyouji\ ;
+発明家 < hatsumeika\ ;
+独裁者 < dokusaisha\ ;
+眺望権 < choubouken\ ;
+内通者 < naitsuusha\ ;
+中長期 < chuuchouki\ ;
+選挙違反 < senkyoihan\ ;
+現象論 < genshouron\ ;
+魔術師 < majutsushi\ ;
+国土庁 < kokudochou\ ;
+積分法 < sekibunhou\ ;
+信号灯 < shingoutou\ ;
+半陰陽 < han''in''you\ ;
+日本時間 < nihonjikan\ ;
+辻辻 < tsujitsuji\ ;
+平面鏡 < heimenkyou\ ;
+北枕 < kitamakura\ ;
+宅配便 < takuhaibin\ ;
+萎縮症 < ishukushou\ ;
+天目山 < tenmokuzan\ ;
+偏平足 < henpeisoku\ ;
+法学士 < hougakushi\ ;
+奴隷制度 < doreiseido\ ;
+構造保持 < kouzouhoji\ ;
+確執 < kakushitsu\ ;
+氷室 < hyoushitsu\ ;
+発煙筒 < hatsuentou\ ;
+側頭葉 < sokutouyou\ ;
+天皇杯 < ten''nouhai\ ;
+細胞核 < saiboukaku\ ;
+自動車化 < jidoushaka\ ;
+独擅場 < dokusenjou\ ;
+日本書紀 < nihonshoki\ ;
+製鋼業 < seikougyou\ ;
+光熱費 < kounetsuhi\ ;
+愛郷心 < aikyoushin\ ;
+決別 < ketsubetsu\ ;
+生産高 < seisandaka\ ;
+海水浴 < kaisuiyoku\ ;
+仮繃帯 < karihoutai\ ;
+及第者 < kyuudaisha\ ;
+後技 < ushirowaza\ ;
+卍巴 < manjidomoe\ ;
+米陸軍 < beirikugun\ ;
+心室 < shinshitsu\ ;
+注文品 < chuumonhin\ ;
+恒常的 < koujouteki\ ;
+人形師 < ningyoushi\ ;
+榴散弾 < ryuusandan\ ;
+発電機 < hatsudenki\ ;
+不空成就 < fukuujouju\ ;
+旧市街 < kyuushigai\ ;
+観覧席 < kanranseki\ ;
+実用化 < jitsuyouka\ ;
+考現学 < kougengaku\ ;
+平和運動 < heiwaundou\ ;
+公定歩合 < kouteibuai\ ;
+天衣無縫 < ten''imuhou\ ;
+開催中 < kaisaichuu\ ;
+理路整然 < riroseizen\ ;
+着色 < chakushoku\ ;
+南京繻子 < nankinjusu\ ;
+円鏡 < marukagami\ ;
+産業界 < sangyoukai\ ;
+遣直 < yarinaoshi\ ;
+虚無主義 < kyomushugi\ ;
+庶民劇 < shomingeki\ ;
+不仕末 < fushimatsu\ ;
+呆気者 < utsukemono\ ;
+解剖学 < kaibougaku\ ;
+仮埋葬 < karimaisou\ ;
+釣道具 < tsuridougu\ ;
+生産額 < seisangaku\ ;
+悲劇的 < higekiteki\ ;
+着脱 < chakudatsu\ ;
+北氷洋 < hoppyouyou\ ;
+十二月 < juunigatsu\ ;
+同学年 < dougakunen\ ;
+彗星 < houkiboshi\ ;
+現代的 < gendaiteki\ ;
+夢判断 < yumehandan\ ;
+岳友会 < gakuyuukai\ ;
+勘定尻 < kanjoujiri\ ;
+円鉋 < marugan''na\ ;
+後後 < nochinochi\ ;
+合宿所 < gasshukujo\ ;
+蠱惑的 < kowakuteki\ ;
+空間軸 < kuukanjiku\ ;
+中間層 < chuukansou\ ;
+特級酒 < tokkyuushu\ ;
+権威主義 < ken''ishugi\ ;
+卸商 < oroshishou\ ;
+署名国 < shomeikoku\ ;
+辻褄 < tsujitsuma\ ;
+気炎万丈 < kienbanjou\ ;
+演劇的 < engekiteki\ ;
+交戦国 < kousenkoku\ ;
+外形的 < gaikeiteki\ ;
+中間子 < chuukanshi\ ;
+花鰹 < hanagatsuo\ ;
+整流子 < seiryuushi\ ;
+優先株 < yuusenkabu\ ;
+短兵急 < tanpeikyuu\ ;
+弁慶縞 < benkeijima\ ;
+牡丹雪 < botan''yuki\ ;
+斜格性 < shakakusei\ ;
+鶴嘴 < tsuruhashi\ ;
+高角砲 < koukakuhou\ ;
+歴年齢 < rekinenrei\ ;
+無分別 < mufunbetsu\ ;
+刺戟性 < shigekisei\ ;
+先隣 < sakidonari\ ;
+通行税 < tsuukouzei\ ;
+超自然 < choushizen\ ;
+削氷機 < sakuhyouki\ ;
+契約者 < keiyakusha\ ;
+夜盗虫 < yotoumushi\ ;
+三三九度 < sansankudo\ ;
+安全率 < anzenritsu\ ;
+原子症 < genshishou\ ;
+原子病 < genshibyou\ ;
+計算機間 < keisankima\ ;
+季節感 < kisetsukan\ ;
+旧勘定 < kyuukanjou\ ;
+仮調印 < karichouin\ ;
+礼儀作法 < reigisahou\ ;
+滅茶苦茶 < mechakucha\ ;
+乗車賃 < joushachin\ ;
+左足 < hidariashi\ ;
+防虫剤 < bouchuuzai\ ;
+得失 < tokushitsu\ ;
+核戦争 < kakusensou\ ;
+発売日 < hatsubaibi\ ;
+耳下腺炎 < jikasen''en\ ;
+定足数 < teisokusuu\ ;
+石油危機 < sekiyukiki\ ;
+里神楽 < satokagura\ ;
+咄々 < totsutotsu\ ;
+薩摩芋 < satsumaimo\ ;
+姦通罪 < kantsuuzai\ ;
+山林学 < sanringaku\ ;
+副議長 < fukugichou\ ;
+刑事事件 < keijijiken\ ;
+航空病 < koukuubyou\ ;
+漢越音 < kan''etsuon\ ;
+出入口 < deiriguchi\ ;
+利用価値 < riyoukachi\ ;
+酒処 < sakedokoro\ ;
+仮納税 < karinouzei\ ;
+総合的 < sougouteki\ ;
+仲裁者 < chuusaisha\ ;
+出展者 < shuttensha\ ;
+活字体 < katsujitai\ ;
+肘鉄砲 < hijideppou\ ;
+対蹠地 < taisekichi\ ;
+回線負荷 < kaisenfuka\ ;
+廻漕業 < kaisougyou\ ;
+低障碍 < teishougai\ ;
+歳月 < toshitsuki\ ;
+残余額 < zan''yogaku\ ;
+横車 < yokoguruma\ ;
+治療法 < chiryouhou\ ;
+機械油 < kikaiabura\ ;
+自発性 < jihatsusei\ ;
+信号手 < shingoushu\ ;
+首尾一貫 < shubiikkan\ ;
+医療保険 < iryouhoken\ ;
+栃木県 < tochigiken\ ;
+調査票 < chousahyou\ ;
+武装解除 < busoukaijo\ ;
+編年史 < hen''nenshi\ ;
+土着民 < dochakumin\ ;
+卓出 < takushutsu\ ;
+進呈本 < shinteibon\ ;
+瑞宝章 < zuihoushou\ ;
+表意文字 < hyouimonji\ ;
+落選者 < rakusensha\ ;
+内勘定 < uchikanjou\ ;
+奉納額 < hounougaku\ ;
+式日 < shikijitsu\ ;
+細胞学 < saibougaku\ ;
+都市国家 < toshikokka\ ;
+果実店 < kajitsuten\ ;
+無為徒食 < muitoshoku\ ;
+映画音楽 < eigaongaku\ ;
+実時間 < jitsujikan\ ;
+入漁権 < nyuugyoken\ ;
+入質 < nyuushichi\ ;
+著作者 < chosakusha\ ;
+着着 < chakuchaku\ ;
+南側 < minamigawa\ ;
+脱脂乳 < dasshinyuu\ ;
+前後左右 < zengosayuu\ ;
+祭祀料 < saishiryou\ ;
+野戦特科 < yasentokka\ ;
+不羈奔放 < fukihonpou\ ;
+内弁慶 < uchibenkei\ ;
+向上心 < koujoushin\ ;
+一手販売 < ittehanbai\ ;
+牧羊者 < bokuyousha\ ;
+参観人 < sankan''nin\ ;
+皮衣 < kawagoromo\ ;
+均一化 < kin''itsuka\ ;
+共同者 < kyoudousha\ ;
+明朝体 < minchoutai\ ;
+塩胡椒 < shiokoshou\ ;
+耐震性 < taishinsei\ ;
+新西蘭 < nyūjīrando\ ;
+区区 < machimachi\ ;
+着発 < chakuhatsu\ ;
+一枚貝 < ichimaigai\ ;
+乱暴者 < ranboumono\ ;
+各一部 < kakuichibu\ ;
+陰日向 < kagehinata\ ;
+紫宸殿 < shishinden\ ;
+幽霊株 < yuureikabu\ ;
+所得者 < shotokusha\ ;
+軍事力 < gunjiryoku\ ;
+勝負事 < shoubugoto\ ;
+当座預金 < touzayokin\ ;
+花鋏 < hanabasami\ ;
+給水車 < kyuusuisha\ ;
+細胞壁 < saibouheki\ ;
+庭漆 < niwaurushi\ ;
+桜花爛漫 < oukaranman\ ;
+可逆性 < kagyakusei\ ;
+自由自在 < jiyuujizai\ ;
+乾燥無味 < kansoumumi\ ;
+二項定理 < nikouteiri\ ;
+懸賞金 < kenshoukin\ ;
+砂嵐 < sunaarashi\ ;
+含嗽薬 < gansouyaku\ ;
+見学者 < kengakusha\ ;
+優先席 < yuusenseki\ ;
+少数者 < shousuusha\ ;
+共同線 < kyoudousen\ ;
+年男 < toshiotoko\ ;
+及第点 < kyuudaiten\ ;
+活性汚泥 < kasseiodei\ ;
+分類表 < bunruihyou\ ;
+近眼鏡 < kingankyou\ ;
+関数族 < kansuuzoku\ ;
+町村制 < chousonsei\ ;
+極悪人 < gokuakunin\ ;
+引受人 < hikiukenin\ ;
+編年体 < hen''nentai\ ;
+代願人 < daigan''nin\ ;
+有力馬 < yuuryokuba\ ;
+次次 < tsugitsugi\ ;
+三三五五 < sansangogo\ ;
+除雪車 < josetsusha\ ;
+大審院 < daishin''in\ ;
+税関長 < zeikanchou\ ;
+中間体 < chuukantai\ ;
+滋養物 < jiyoubutsu\ ;
+九工大 < kyuukoudai\ ;
+刀疵 < katanakizu\ ;
+加湿器 < kashitsuki\ ;
+新訂版 < shinteiban\ ;
+違棚 < chigaidana\ ;
+十人力 < juuninriki\ ;
+下宿人 < geshukunin\ ;
+大業物 < oowazamono\ ;
+直筆 < chokuhitsu\ ;
+側面観 < sokumenkan\ ;
+弐心 < futagokoro\ ;
+現象界 < genshoukai\ ;
+追試験 < tsuishiken\ ;
+先天的 < sententeki\ ;
+建築家 < kenchikuka\ ;
+水量計 < suiryoukei\ ;
+直立 < chokuritsu\ ;
+兜蟹 < kabutogani\ ;
+親衛隊 < shin''eitai\ ;
+盲窓 < mekuramado\ ;
+先天病 < sentenbyou\ ;
+繁殖期 < hanshokuki\ ;
+船幽霊 < funayuurei\ ;
+民族性 < minzokusei\ ;
+御了承 < goryoushou\ ;
+水蛇座 < mizuhebiza\ ;
+拝外的 < haigaiteki\ ;
+刺戟剤 < shigekizai\ ;
+所得税 < shotokuzei\ ;
+棉実油 < menjitsuyu\ ;
+出獄 < shutsugoku\ ;
+出猟 < shutsuryou\ ;
+勤続者 < kinzokusha\ ;
+天皇制 < ten''nousei\ ;
+喫煙車 < kitsuensha\ ;
+実習生 < jisshuusei\ ;
+体系的 < taikeiteki\ ;
+遊興税 < yuukyouzei\ ;
+修道士 < shuudoushi\ ;
+新教徒 < shinkyouto\ ;
+砂埃 < sunabokori\ ;
+博覧会 < hakurankai\ ;
+前登録 < zentouroku\ ;
+東洋学 < touyougaku\ ;
+大将軍 < daishougun\ ;
+在庫管理 < zaikokanri\ ;
+原子核 < genshikaku\ ;
+大公国 < taikoukoku\ ;
+休息所 < kyuusokujo\ ;
+左耳 < hidarimimi\ ;
+高障害 < koushougai\ ;
+力帯 < chikaraobi\ ;
+求道者 < kyuudousha\ ;
+天守閣 < tenshukaku\ ;
+砂嚢 < sunabukuro\ ;
+乾物屋 < kanbutsuya\ ;
+水鉄砲 < mizudeppou\ ;
+千三屋 < senmitsuya\ ;
+入港税 < nyuukouzei\ ;
+銀行業 < ginkougyou\ ;
+火災保険 < kasaihoken\ ;
+休泊所 < kyuuhakujo\ ;
+人工的 < jinkouteki\ ;
+罵詈雑言 < barizougon\ ;
+光蘚 < hikarigoke\ ;
+聴視者 < choushisha\ ;
+両国語 < ryoukokugo\ ;
+道路封鎖 < dourofuusa\ ;
+花詞 < hanakotoba\ ;
+高瀬舟 < takasebune\ ;
+組織名 < soshikimei\ ;
+初氷 < hatsugoori\ ;
+同期式 < doukishiki\ ;
+大腸菌 < daichoukin\ ;
+半狂乱 < hankyouran\ ;
+贅沢品 < zeitakuhin\ ;
+小委員会 < shouiinkai\ ;
+一本道 < ipponmichi\ ;
+利潤率 < rijunritsu\ ;
+迫害者 < hakugaisha\ ;
+大極殿 < daigokuden\ ;
+重量感 < juuryoukan\ ;
+美学的 < bigakuteki\ ;
+写生帳 < shaseichou\ ;
+交渉委員 < koushouiin\ ;
+廃棄物 < haikibutsu\ ;
+電磁石 < denjishaku\ ;
+造営物 < zoueibutsu\ ;
+技術面 < gijutsumen\ ;
+仕置者 < shiokimono\ ;
+苦艾 < nigayomogi\ ;
+時刻表 < jikokuhyou\ ;
+合同行為 < goudoukoui\ ;
+炉辺談話 < rohendanwa\ ;
+毒科学 < dokukagaku\ ;
+直行便 < chokkoubin\ ;
+手内職 < tenaishoku\ ;
+旅行先 < ryokousaki\ ;
+核弾頭 < kakudantou\ ;
+過去分詞 < kakobunshi\ ;
+空集合 < kuushuugou\ ;
+皿秤 < sarabakari\ ;
+特許料 < tokkyoryou\ ;
+主情的 < shujouteki\ ;
+営利会社 < eirigaisha\ ;
+更衣室 < kouishitsu\ ;
+殺伐 < satsubatsu\ ;
+会席膳 < kaisekizen\ ;
+千一夜 < sen''ichiya\ ;
+真田紐 < sanadahimo\ ;
+道学者 < dougakusha\ ;
+揮発性 < kihatsusei\ ;
+沸々 < futsufutsu\ ;
+出資金 < shusshikin\ ;
+牧羊犬 < bokuyouken\ ;
+人事不省 < jinjifusei\ ;
+蒸留水 < jouryuusui\ ;
+異性関係 < iseikankei\ ;
+等圧線 < touatsusen\ ;
+毒味役 < dokumiyaku\ ;
+兎脣 < mitsukuchi\ ;
+事故原因 < jikogen''in\ ;
+優良店 < yuuryouten\ ;
+内芸者 < uchigeisha\ ;
+悪達者 < warudassha\ ;
+三面鏡 < sanmenkyou\ ;
+狸蕎麦 < tanukisoba\ ;
+裏書人 < uragakinin\ ;
+特大号 < tokudaigou\ ;
+組織体 < soshikitai\ ;
+現実化 < genjitsuka\ ;
+多目的 < tamokuteki\ ;
+将来性 < shouraisei\ ;
+一人腹 < hitoribara\ ;
+座技 < suwariwaza\ ;
+画一化 < kakuitsuka\ ;
+重金属 < juukinzoku\ ;
+良質 < ryoushitsu\ ;
+槍衾 < yaribusuma\ ;
+家出少女 < iedeshoujo\ ;
+立会人 < tachiainin\ ;
+古典主義 < kotenshugi\ ;
+不法投棄 < fuhoutouki\ ;
+逐日 < chikujitsu\ ;
+歴史上 < rekishijou\ ;
+製鉄所 < seitetsujo\ ;
+若緑 < wakamidori\ ;
+一人者 < hitorimono\ ;
+車賃 < kurumachin\ ;
+二重螺旋 < nijuurasen\ ;
+遮断壁 < shadanpeki\ ;
+特売場 < tokubaijou\ ;
+告知板 < kokuchiban\ ;
+沖積期 < chuusekiki\ ;
+仮記入 < karikinyuu\ ;
+修道会 < shuudoukai\ ;
+位相速度 < isousokudo\ ;
+桟梯子 < sanbashigo\ ;
+番号札 < bangoufuda\ ;
+少数点 < shousuuten\ ;
+山猫座 < yamanekoza\ ;
+寝台券 < shindaiken\ ;
+水銀柱 < suiginchuu\ ;
+赤海亀 < akaumigame\ ;
+骨相学 < kossougaku\ ;
+音韻部門 < on''inbumon\ ;
+機能主義 < kinoushugi\ ;
+大臼歯 < daikyuushi\ ;
+機械警備 < kikaikeibi\ ;
+民族史 < minzokushi\ ;
+五稜郭 < goryoukaku\ ;
+契約書 < keiyakusho\ ;
+影法師 < kageboushi\ ;
+金剛石 < kongouseki\ ;
+畑鼠 < hatanezumi\ ;
+特許庁 < tokkyochou\ ;
+基礎試験 < kisoshiken\ ;
+家庭菜園 < kateisaien\ ;
+特売品 < tokubaihin\ ;
+道路工事 < dourokouji\ ;
+下請負 < shitaukeoi\ ;
+収穫期 < shuukakuki\ ;
+亜爾然丁 < aruzenchin\ ;
+四苦八苦 < shikuhakku\ ;
+着払 < chakubarai\ ;
+陸戦隊 < rikusentai\ ;
+給水管 < kyuusuikan\ ;
+委細面談 < isaimendan\ ;
+神秘的 < shinpiteki\ ;
+重量噸 < juuryouton\ ;
+対校試合 < taikoujiai\ ;
+収穫時 < shuukakuji\ ;
+高圧縮 < kouasshuku\ ;
+著作権 < chosakuken\ ;
+人気作家 < ninkisakka\ ;
+代執行 < daishikkou\ ;
+限定的 < genteiteki\ ;
+高圧線 < kouatsusen\ ;
+仮採用 < karisaiyou\ ;
+暖冬異変 < dantouihen\ ;
+出撃 < shutsugeki\ ;
+改革者 < kaikakusha\ ;
+地下鉄 < chikatetsu\ ;
+尊王党 < son''noutou\ ;
+土俵際 < dohyougiwa\ ;
+大山猫 < ooyamaneko\ ;
+航空学 < koukuugaku\ ;
+原材料 < genzairyou\ ;
+出産数 < shussansuu\ ;
+欄参照 < ransanshou\ ;
+出生数 < shusseisuu\ ;
+守備率 < shubiritsu\ ;
+文芸学 < bungeigaku\ ;
+女性一般 < joseiippan\ ;
+紅冠鳥 < koukanchou\ ;
+初場所 < hatsubasho\ ;
+乳状液 < nyuujoueki\ ;
+単坐式 < tanzashiki\ ;
+在留民 < zairyuumin\ ;
+美顔術 < biganjutsu\ ;
+煮沸器 < shafutsuki\ ;
+優良品 < yuuryouhin\ ;
+怪獣映画 < kaijuueiga\ ;
+多種多様 < tashutayou\ ;
+峠道 < tougemichi\ ;
+二部教授 < nibukyouju\ ;
+戦術家 < senjutsuka\ ;
+速度違反 < sokudoihan\ ;
+仕事師 < shigotoshi\ ;
+年強 < toshidzuyo\ ;
+横断歩道 < oudanhodou\ ;
+無生物 < museibutsu\ ;
+雑文家 < zatsubunka\ ;
+同調者 < douchousha\ ;
+予約席 < yoyakuseki\ ;
+金石文 < kinsekibun\ ;
+練習船 < renshuusen\ ;
+舗装道路 < hosoudouro\ ;
+測深機 < sokushinki\ ;
+艶艶 < tsuyatsuya\ ;
+発見料 < hakkenryou\ ;
+衒学者 < gengakusha\ ;
+引出物 < hikidemono\ ;
+開架式 < kaikashiki\ ;
+包含的 < houganteki\ ;
+合奏調 < gassouchou\ ;
+田鵑 < hototogisu\ ;
+共和国 < kyouwakoku\ ;
+審判員 < shinpan''in\ ;
+無線技師 < musengishi\ ;
+清朝体 < seichoutai\ ;
+飛鳥時代 < asukajidai\ ;
+表日本 < omotenihon\ ;
+現代劇 < gendaigeki\ ;
+山鯨 < yamakujira\ ;
+即効薬 < sokkouyaku\ ;
+日運動 < nichiundou\ ;
+草枕 < kusamakura\ ;
+職階制 < shokkaisei\ ;
+前車軸 < zenshajiku\ ;
+回路基板 < kairokiban\ ;
+上昇線 < joushousen\ ;
+機密性 < kimitsusei\ ;
+明細表 < meisaihyou\ ;
+形成外科 < keiseigeka\ ;
+修辞学 < shuujigaku\ ;
+名誉職 < meiyoshoku\ ;
+宇宙兵器 < uchuuheiki\ ;
+四天王 < shiten''nou\ ;
+異常気象 < ijoukishou\ ;
+人相学 < ninsougaku\ ;
+着実 < chakujitsu\ ;
+授業料 < jugyouryou\ ;
+鉛中毒 < enchuudoku\ ;
+無機化学 < mukikagaku\ ;
+自由主義 < jiyuushugi\ ;
+治療代 < chiryoudai\ ;
+傷薬 < kizugusuri\ ;
+位記追贈 < ikitsuisou\ ;
+帯黄色 < taioushoku\ ;
+茶柱 < chabashira\ ;
+直接 < chokusetsu\ ;
+底土 < sokotsuchi\ ;
+実写映画 < jisshaeiga\ ;
+起工式 < kikoushiki\ ;
+自由時間 < jiyuujikan\ ;
+畳針 < tatamihari\ ;
+発熱 < hatsunetsu\ ;
+切実 < setsujitsu\ ;
+取得者 < shutokusha\ ;
+御礼奉公 < oreiboukou\ ;
+山颪 < yamaoroshi\ ;
+悪平等 < akubyoudou\ ;
+光物 < hikarimono\ ;
+剔出 < tekishutsu\ ;
+生魚 < namazakana\ ;
+朱子学 < shushigaku\ ;
+軽金属 < keikinzoku\ ;
+健脚家 < kenkyakuka\ ;
+先覚者 < senkakusha\ ;
+不整脈 < fuseimyaku\ ;
+仲間内 < nakamauchi\ ;
+将来像 < shouraizou\ ;
+低教会 < teikyoukai\ ;
+性衝動 < seishoudou\ ;
+園芸用具 < engeiyougu\ ;
+紙芝居 < kamishibai\ ;
+偏辺 < katahorori\ ;
+作成者 < sakuseisha\ ;
+回春剤 < kaishunzai\ ;
+消費量 < shouhiryou\ ;
+並製品 < namiseihin\ ;
+花畑 < hanabatake\ ;
+破茶目茶 < hachamecha\ ;
+専有権 < sen''yuuken\ ;
+乗馬靴 < joubagutsu\ ;
+候間 < sourouaida\ ;
+不穏文書 < fuonbunsho\ ;
+出資者 < shusshisha\ ;
+化石学 < kasekigaku\ ;
+漢字文化 < kanjibunka\ ;
+聴診器 < choushinki\ ;
+進出 < shinshutsu\ ;
+猩猩蠅 < shoujoubae\ ;
+乱数表 < ransuuhyou\ ;
+予備試験 < yobishiken\ ;
+労務管理 < roumukanri\ ;
+店卸 < tanaoroshi\ ;
+埋立地 < umetatechi\ ;
+共同性 < kyoudousei\ ;
+熟練者 < jukurensha\ ;
+東北東 < touhokutou\ ;
+平和会議 < heiwakaigi\ ;
+略述 < ryakujutsu\ ;
+生体膜 < seitaimaku\ ;
+任務部隊 < ninmubutai\ ;
+民衆駅 < minshuueki\ ;
+宇宙食 < uchuushoku\ ;
+常常 < tsunedzune\ ;
+日光浴 < nikkouyoku\ ;
+代数学 < daisuugaku\ ;
+小間物屋 < komamonoya\ ;
+能役者 < nouyakusha\ ;
+沖積土 < chuusekido\ ;
+引力圏 < inryokuken\ ;
+別口 < betsukuchi\ ;
+中折帽 < nakaorebou\ ;
+非活動 < hikatsudou\ ;
+縦横無尽 < juuoumujin\ ;
+八橋 < yatsuhashi\ ;
+国家主義 < kokkashugi\ ;
+過剰投与 < kajoutouyo\ ;
+論理回路 < ronrikairo\ ;
+有功章 < yuukoushou\ ;
+投票者 < touhyousha\ ;
+攻撃隊 < kougekitai\ ;
+報告者 < houkokusha\ ;
+発表者 < happyousha\ ;
+惣管領 < soukanryou\ ;
+自壊作用 < jikaisayou\ ;
+選択肢 < sentakushi\ ;
+技術者 < gijutsusha\ ;
+進歩的 < shinpoteki\ ;
+埋蔵量 < maizouryou\ ;
+仕事台 < shigotodai\ ;
+性成熟 < seiseijuku\ ;
+永年間 < naganenkan\ ;
+背教者 < haikyousha\ ;
+辰年 < tatsudoshi\ ;
+手工業 < shukougyou\ ;
+準備期間 < junbikikan\ ;
+別別 < betsubetsu\ ;
+尻餠 < shirimochi\ ;
+申請者 < shinseisha\ ;
+演出家 < enshutsuka\ ;
+一安心 < hitoanshin\ ;
+天下無双 < tenkamusou\ ;
+行楽地 < kourakuchi\ ;
+食管法 < shokkanhou\ ;
+観測船 < kansokusen\ ;
+競合者 < kyougousha\ ;
+健脳剤 < ken''nouzai\ ;
+一瀉千里 < isshasenri\ ;
+白樺 < shirakanba\ ;
+金剛杖 < kongoudzue\ ;
+横行闊歩 < oukoukappo\ ;
+謝肉祭 < shanikusai\ ;
+複写紙 < fukushashi\ ;
+週刊誌 < shuukanshi\ ;
+収税所 < shuuzeisho\ ;
+剰余価値 < jouyokachi\ ;
+八月 < hachigatsu\ ;
+通行人 < tsuukounin\ ;
+鑑定料 < kanteiryou\ ;
+踏車 < fumiguruma\ ;
+文化国家 < bunkakokka\ ;
+舞台稽古 < butaigeiko\ ;
+同一人 < douitsunin\ ;
+高潮線 < kouchousen\ ;
+浸透性 < shintousei\ ;
+血色素 < kesshikiso\ ;
+脳震盪 < noushintou\ ;
+伊勢大廟 < isetaibyou\ ;
+賃貸人 < chintainin\ ;
+出生地 < shusseichi\ ;
+略説 < ryakusetsu\ ;
+練習生 < renshuusei\ ;
+座席表 < zasekihyou\ ;
+観測者 < kansokusha\ ;
+相互支援 < sougoshien\ ;
+地獄耳 < jigokumimi\ ;
+高級品 < koukyuuhin\ ;
+遠日点 < enjitsuten\ ;
+漢学者 < kangakusha\ ;
+牧場鳥 < makibatori\ ;
+申込 < moushikomi\ ;
+切切 < setsusetsu\ ;
+死刑囚 < shikeishuu\ ;
+氷砂糖 < koorizatou\ ;
+普遍原理 < fuhengenri\ ;
+共著者 < kyouchosha\ ;
+骨髄炎 < kotsuzuien\ ;
+不即不離 < fusokufuri\ ;
+放牧地 < houbokuchi\ ;
+悪因悪果 < akuin''akka\ ;
+白血球 < hakkekkyuu\ ;
+盲壁 < mekurakabe\ ;
+溶岩流 < youganryuu\ ;
+死傷者 < shishousha\ ;
+式部官 < shikibukan\ ;
+脆弱性 < zeijakusei\ ;
+給水栓 < kyuusuisen\ ;
+鯨幕 < kujiramaku\ ;
+観測網 < kansokumou\ ;
+急行券 < kyuukouken\ ;
+白星 < shiroboshi\ ;
+百日 < hyakunichi\ ;
+附和雷同 < fuwaraidou\ ;
+御鞭撻 < gobentatsu\ ;
+緑十字 < ryokujuuji\ ;
+化粧部屋 < keshoubeya\ ;
+流線形 < ryuusenkei\ ;
+膜質 < makushitsu\ ;
+原始的 < genshiteki\ ;
+牧羊地 < bokuyouchi\ ;
+出入 < shutsunyuu\ ;
+磨製石器 < maseisekki\ ;
+父子家庭 < fushikatei\ ;
+埼玉県 < saitamaken\ ;
+余韻嫋嫋 < yoinjoujou\ ;
+攻撃軍 < kougekigun\ ;
+敵艦隊 < tekikantai\ ;
+年下 < toshishita\ ;
+食器棚 < shokkidana\ ;
+伝送先 < densousaki\ ;
+稲荷鮨 < inarizushi\ ;
+係長 < kakarichou\ ;
+復調器 < fukuchouki\ ;
+大病人 < daibyounin\ ;
+共労者 < kyourousha\ ;
+候調 < sourouchou\ ;
+病原菌 < byougenkin\ ;
+朝鮮人 < chousenjin\ ;
+縄文土器 < joumondoki\ ;
+優越権 < yuuetsuken\ ;
+鯨尺 < kujirajaku\ ;
+一人旅 < hitoritabi\ ;
+文学論 < bungakuron\ ;
+肉感的 < nikkanteki\ ;
+急行便 < kyuukoubin\ ;
+甲乙丙 < kouotsuhei\ ;
+中波長 < chuuhachou\ ;
+無職者 < mushokusha\ ;
+収税官 < shuuzeikan\ ;
+学部長 < gakubuchou\ ;
+財務管理 < zaimukanri\ ;
+超格子 < choukoushi\ ;
+穂状花序 < suijoukajo\ ;
+闊葉樹 < katsuyouju\ ;
+盛土 < moritsuchi\ ;
+共鳴者 < kyoumeisha\ ;
+無体物 < mutaibutsu\ ;
+浮気女 < uwakion''na\ ;
+登竜門 < touryuumon\ ;
+一義的 < ichigiteki\ ;
+第一条 < daiichijou\ ;
+辞書部門 < jishobumon\ ;
+内用薬 < naiyouyaku\ ;
+機動部隊 < kidoubutai\ ;
+保安処分 < hoanshobun\ ;
+花暦 < hanagoyomi\ ;
+座標軸 < zahyoujiku\ ;
+策源地 < sakugenchi\ ;
+直列 < chokuretsu\ ;
+優生学 < yuuseigaku\ ;
+意思表示 < ishihyouji\ ;
+分隊長 < buntaichou\ ;
+営利事業 < eirijigyou\ ;
+前借金 < zenshakkin\ ;
+皮膚移植 < hifuishoku\ ;
+仲裁人 < chuusainin\ ;
+赤道祭 < sekidousai\ ;
+東北大 < touhokudai\ ;
+実証論 < jisshouron\ ;
+不燃物 < funenbutsu\ ;
+全強風 < zenkyoufuu\ ;
+議事妨害 < gijibougai\ ;
+小天地 < shoutenchi\ ;
+酢酸塩 < sakusan''en\ ;
+超音速 < chouonsoku\ ;
+密告者 < mikkokusha\ ;
+分類学 < bunruigaku\ ;
+彫金師 < choukinshi\ ;
+一騎当千 < ikkitousen\ ;
+阿鼻叫喚 < abikyoukan\ ;
+絶対温度 < zettaiondo\ ;
+黄金世界 < ougonsekai\ ;
+共通語 < kyoutsuugo\ ;
+冽冽 < retsuretsu\ ;
+神秘学 < shinhigaku\ ;
+一本橋 < ipponbashi\ ;
+第五列 < daigoretsu\ ;
+紳士用 < shinshiyou\ ;
+一枚岩 < ichimaiiwa\ ;
+一本槍 < ippon''yari\ ;
+困窮者 < konkyuusha\ ;
+入室 < nyuushitsu\ ;
+棒温度計 < bouondokei\ ;
+冬支度 < fuyujitaku\ ;
+共同体 < kyoudoutai\ ;
+少数党 < shousuutou\ ;
+全民衆 < zenminshuu\ ;
+相反的 < souhanteki\ ;
+浮遊物 < fuyuubutsu\ ;
+労働省 < roudoushou\ ;
+孫息子 < magomusuko\ ;
+反対意見 < hantaiiken\ ;
+供養塚 < kuyoudzuka\ ;
+駆逐艦 < kuchikukan\ ;
+素人目 < shiroutome\ ;
+精肉店 < seinikuten\ ;
+双殻類 < soukakurui\ ;
+欣求浄土 < gongujoudo\ ;
+金貨準備 < kinkajunbi\ ;
+奨励金 < shoureikin\ ;
+不精髭 < bushouhige\ ;
+論理素子 < ronrisoshi\ ;
+能動的 < noudouteki\ ;
+約半分 < yakuhanbun\ ;
+山荒 < yamaarashi\ ;
+網漁業 < amigyogyou\ ;
+授業中 < jugyouchuu\ ;
+岩石圏 < gansekiken\ ;
+露地栽培 < rojisaibai\ ;
+役目柄 < yakumegara\ ;
+古墳時代 < kofunjidai\ ;
+一本松 < ipponmatsu\ ;
+塩煎餅 < shiosenbei\ ;
+南々西 < nan''nansei\ ;
+在学生 < zaigakusei\ ;
+剃刀砥 < kamisorido\ ;
+多発性 < tahatsusei\ ;
+無煙火薬 < muenkayaku\ ;
+優越感 < yuuetsukan\ ;
+特級品 < tokkyuuhin\ ;
+三角錐 < sankakusui\ ;
+傑物 < ketsubutsu\ ;
+必治薬 < hitchiyaku\ ;
+単振動 < tanshindou\ ;
+主張者 < shuchousha\ ;
+排他律 < haitaritsu\ ;
+政治機構 < seijikikou\ ;
+意志決定 < ishikettei\ ;
+優越性 < yuuetsusei\ ;
+形態学 < keitaigaku\ ;
+工業界 < kougyoukai\ ;
+工業用 < kougyouyou\ ;
+積乱雲 < sekiran''un\ ;
+拝観料 < haikanryou\ ;
+領海線 < ryoukaisen\ ;
+角分散 < kakubunsan\ ;
+不見識 < fukenshiki\ ;
+大学生 < daigakusei\ ;
+最北端 < saihokutan\ ;
+表面上 < hyoumenjou\ ;
+濃硫酸 < nouryuusan\ ;
+略筆 < ryakuhitsu\ ;
+水化物 < suikabutsu\ ;
+超伝導 < choudendou\ ;
+文学者 < bungakusha\ ;
+粗目雪 < zarameyuki\ ;
+史学者 < shigakusha\ ;
+国民軍 < kokumingun\ ;
+咀嚼筋 < soshakukin\ ;
+住所録 < juushoroku\ ;
+駐停車 < chuuteisha\ ;
+植樹祭 < shokujusai\ ;
+負荷分散 < fukabunsan\ ;
+角速度 < kakusokudo\ ;
+左利 < hidarikiki\ ;
+大赤斑 < daisekihan\ ;
+地中海 < chichuukai\ ;
+伸餅 < noshimochi\ ;
+不偏不党 < fuhenfutou\ ;
+内冑 < uchikabuto\ ;
+商売人 < shoubainin\ ;
+同床異夢 < doushouimu\ ;
+受取人 < uketorinin\ ;
+見本市 < mihon''ichi\ ;
+無限軌道 < mugenkidou\ ;
+投票権 < touhyouken\ ;
+探照灯 < tanshoutou\ ;
+全勝軍 < zenshougun\ ;
+給水塔 < kyuusuitou\ ;
+潮干狩 < shiohigari\ ;
+軍事顧問 < gunjikomon\ ;
+牡羊座 < ohitsujiza\ ;
+耽美主義 < tanbishugi\ ;
+収税人 < shuuzeinin\ ;
+喜劇映画 < kigekieiga\ ;
+左側 < hidarigawa\ ;
+選択権 < sentakuken\ ;
+採点表 < saitenhyou\ ;
+工工四 < kunkunshii\ ;
+入口 < hairiguchi\ ;
+記録的 < kirokuteki\ ;
+豆板銀 < mameitagin\ ;
+絶対量 < zettairyou\ ;
+東北人 < touhokujin\ ;
+海軍省 < kaigunshou\ ;
+金剛力 < kongouriki\ ;
+真暗闇 < makurayami\ ;
+検疫官 < ken''ekikan\ ;
+室長 < shitsuchou\ ;
+対象外 < taishougai\ ;
+新潟県 < niigataken\ ;
+闇再販 < yamisaihan\ ;
+動物愛 < doubutsuai\ ;
+曼珠沙華 < manjushage\ ;
+使用量 < shiyouryou\ ;
+優姿 < yasasugata\ ;
+藁半紙 < warabanshi\ ;
+模擬試験 < mogishiken\ ;
+新開地 < shinkaichi\ ;
+非常識 < hijoushiki\ ;
+一面観 < ichimenkan\ ;
+管絃楽 < kangengaku\ ;
+規則違反 < kisokuihan\ ;
+最恵国 < saikeikoku\ ;
+慢性的 < manseiteki\ ;
+夏炉冬扇 < karotousen\ ;
+推計学 < suikeigaku\ ;
+副領事 < fukuryouji\ ;
+印刷者 < insatsusha\ ;
+耐火力 < taikaryoku\ ;
+友禅染 < yuuzenzome\ ;
+報告書 < houkokusho\ ;
+骨格筋 < kokkakukin\ ;
+雨天決行 < utenkekkou\ ;
+藻塩草 < moshiogusa\ ;
+集大成 < shuutaisei\ ;
+慢性病 < manseibyou\ ;
+宣言的 < sengenteki\ ;
+六重奏 < rokujuusou\ ;
+音響学 < onkyougaku\ ;
+申立 < moushitate\ ;
+工業港 < kougyoukou\ ;
+総辞職 < soujishoku\ ;
+軍団長 < gundanchou\ ;
+意見交換 < ikenkoukan\ ;
+年長者 < nenchousha\ ;
+総務局 < soumukyoku\ ;
+不乾性油 < fukanseiyu\ ;
+面相筆 < mensoufude\ ;
+散歩道 < sanpomichi\ ;
+示圧計 < shiatsukei\ ;
+世紀末 < seikimatsu\ ;
+第三国 < daisangoku\ ;
+投票数 < touhyousuu\ ;
+何箇月 < nankagetsu\ ;
+申請書 < shinseisho\ ;
+植物 < shokubutsu\ ;
+腹膜炎 < fukumakuen\ ;
+温泉町 < onsenmachi\ ;
+主動的 < shudouteki\ ;
+泌尿器科 < hinyoukika\ ;
+不文律 < fubunritsu\ ;
+弁当箱 < bentoubako\ ;
+岩燕 < iwatsubame\ ;
+天体学 < tentaigaku\ ;
+印刷紙 < insatsushi\ ;
+低成長 < teiseichou\ ;
+俯仰角 < fugyoukaku\ ;
+帷幄上奏 < iakujousou\ ;
+放熱器 < hounetsuki\ ;
+純良品 < junryouhin\ ;
+備後表 < bingoomote\ ;
+暗殺者 < ansatsusha\ ;
+平教員 < hirakyouin\ ;
+不覚者 < fukakumono\ ;
+成長点 < seichouten\ ;
+東横線 < touyokosen\ ;
+救済者 < kyuusaisha\ ;
+知能的 < chinouteki\ ;
+儲口 < moukeguchi\ ;
+全権委員 < zenken''iin\ ;
+幻覚剤 < genkakuzai\ ;
+果物屋 < kudamonoya\ ;
+演算機構 < enzankikou\ ;
+人格者 < jinkakusha\ ;
+無蓋貨車 < mugaikasha\ ;
+金属間 < kinzokukan\ ;
+花柳病 < karyuubyou\ ;
+棟瓦 < munagawara\ ;
+高枕 < takamakura\ ;
+老大国 < routaikoku\ ;
+代言人 < daigen''nin\ ;
+心得顔 < kokoroegao\ ;
+代表者 < daihyousha\ ;
+主知的 < shuchiteki\ ;
+文学界 < bungakukai\ ;
+切断機 < setsudanki\ ;
+一時的 < ichijiteki\ ;
+交通網 < koutsuumou\ ;
+二十世紀 < nijisseiki\ ;
+保護処分 < hogoshobun\ ;
+地球人 < chikyuujin\ ;
+脹脛 < fukurahagi\ ;
+高曇 < takagumori\ ;
+皮膚科学 < hifukagaku\ ;
+地球上 < chikyuujou\ ;
+逆提案 < gyakuteian\ ;
+対数表 < taisuuhyou\ ;
+衆愚政治 < shuguseiji\ ;
+敗戦国 < haisenkoku\ ;
+侍従武官 < jijuubukan\ ;
+新製品 < shinseihin\ ;
+控訴期間 < kousokikan\ ;
+上位構造 < jouikouzou\ ;
+極距離 < kyokukyori\ ;
+常任委員 < jounin''iin\ ;
+芝居小屋 < shibaigoya\ ;
+桜花 < sakurabana\ ;
+公租公課 < kousokouka\ ;
+熟練工 < jukurenkou\ ;
+色素体 < shikisotai\ ;
+丸砥石 < marutoishi\ ;
+同族会 < douzokukai\ ;
+経済的 < keizaiteki\ ;
+易感染性 < ikansensei\ ;
+牛乳屋 < gyuunyuuya\ ;
+練習場 < renshuujou\ ;
+紀伊國屋 < kinokuniya\ ;
+桑苺 < kuwaichigo\ ;
+夜鷹蕎麦 < yotakasoba\ ;
+特製品 < tokuseihin\ ;
+勤務時間 < kinmujikan\ ;
+厭世主義 < enseishugi\ ;
+単位記号 < tan''ikigou\ ;
+脚色 < kyakushoku\ ;
+不誠実 < fuseijitsu\ ;
+従来型 < juuraigata\ ;
+対象体 < taishoutai\ ;
+粉石鹸 < konasekken\ ;
+夜尿症 < yanyoushou\ ;
+超文面 < choubunmen\ ;
+排他主義 < haitashugi\ ;
+動物園 < doubutsuen\ ;
+総監督 < soukantoku\ ;
+実際的 < jissaiteki\ ;
+頼信紙 < raishinshi\ ;
+宇宙飛行 < uchuuhikou\ ;
+宣教師 < senkyoushi\ ;
+桜肉 < sakuraniku\ ;
+責任者 < sekininsha\ ;
+関節炎 < kansetsuen\ ;
+肩車 < kataguruma\ ;
+共鳴板 < kyoumeiban\ ;
+宗主国 < soushukoku\ ;
+仮名草紙 < kanazoushi\ ;
+旧軍人 < kyuugunjin\ ;
+半濁点 < handakuten\ ;
+坑内事故 < kounaijiko\ ;
+半長形 < hanchoukei\ ;
+中水道 < chuusuidou\ ;
+選手村 < senshumura\ ;
+論理演算 < ronrienzan\ ;
+質量 < shitsuryou\ ;
+印刷用 < insatsuyou\ ;
+霊柩車 < reikyuusha\ ;
+海岸端 < kaiganbata\ ;
+外用薬 < gaiyouyaku\ ;
+紫斑病 < shihanbyou\ ;
+蛸配当 < takohaitou\ ;
+高所病 < koushobyou\ ;
+畜殺 < chikusatsu\ ;
+大小便 < daishouben\ ;
+電気毛布 < denkimoufu\ ;
+米国民 < beikokumin\ ;
+吸水性 < kyuusuisei\ ;
+雲鬢花顔 < unbinkagan\ ;
+念五日 < nengonichi\ ;
+出来心 < dekigokoro\ ;
+中心部 < chuushinbu\ ;
+御前会議 < gozenkaigi\ ;
+脈脈 < myakumyaku\ ;
+生体学 < seitaigaku\ ;
+楔形 < kusabigata\ ;
+予備調査 < yobichousa\ ;
+平和主義 < heiwashugi\ ;
+肯定的 < kouteiteki\ ;
+桜紙 < sakuragami\ ;
+注意事項 < chuuijikou\ ;
+動物化 < doubutsuka\ ;
+水平翼 < suiheiyoku\ ;
+貿易業 < bouekigyou\ ;
+腰布団 < koshibuton\ ;
+爆撃機 < bakugekiki\ ;
+言行録 < genkouroku\ ;
+団地族 < danchizoku\ ;
+乱調子 < ranchoushi\ ;
+備蓄米 < bichikumai\ ;
+大乗的 < daijouteki\ ;
+無能力 < munouryoku\ ;
+酪農場 < rakunoujou\ ;
+胸部外科 < kyoubugeka\ ;
+貨客船 < kakyakusen\ ;
+感染症 < kansenshou\ ;
+真理教 < shinrikyou\ ;
+慈善鍋 < jizen''nabe\ ;
+病室 < byoushitsu\ ;
+技術士 < gijutsushi\ ;
+芋侍 < imozamurai\ ;
+哨戒艇 < shoukaitei\ ;
+酒石酸 < shusekisan\ ;
+敷布団 < shikibuton\ ;
+非可換群 < hikakangun\ ;
+反則金 < hansokukin\ ;
+遺伝情報 < idenjouhou\ ;
+有機物 < yuukibutsu\ ;
+肉質 < nikushitsu\ ;
+寄生火山 < kiseikazan\ ;
+抽象画 < chuushouga\ ;
+租借権 < soshakuken\ ;
+内申書 < naishinsho\ ;
+同級生 < doukyuusei\ ;
+向米的 < koubeiteki\ ;
+親衛兵 < shin''eihei\ ;
+仏文科 < futsubunka\ ;
+二部授業 < nibujugyou\ ;
+取引所 < torihikijo\ ;
+電車賃 < denshachin\ ;
+集散地 < shuusanchi\ ;
+綺想曲 < kisoukyoku\ ;
+上調子 < uwachoushi\ ;
+内臓弓 < naizoukyuu\ ;
+半開国 < hankaikoku\ ;
+製造業 < seizougyou\ ;
+追撃機 < tsuigekiki\ ;
+三角筋 < sankakukin\ ;
+非営利的 < hieiriteki\ ;
+等深線 < toushinsen\ ;
+駆動力 < kudouryoku\ ;
+河川工事 < kasenkouji\ ;
+重工業 < juukougyou\ ;
+麻織物 < asaorimono\ ;
+日射病 < nisshabyou\ ;
+熱血児 < nekketsuji\ ;
+金属製 < kinzokusei\ ;
+本契約 < honkeiyaku\ ;
+相手次第 < aiteshidai\ ;
+黄褐色 < oukasshoku\ ;
+購入者 < kounyuusha\ ;
+不精者 < bushoumono\ ;
+主応力 < shuouryoku\ ;
+便宜主義 < bengishugi\ ;
+埼玉勢 < saitamazei\ ;
+宝船 < takarabune\ ;
+重傷者 < juushousha\ ;
+皮膚呼吸 < hifukokyuu\ ;
+山桜 < yamazakura\ ;
+亜成層圏 < aseisouken\ ;
+傷害罪 < shougaizai\ ;
+作戦上 < sakusenjou\ ;
+側室 < sokushitsu\ ;
+膝枕 < hizamakura\ ;
+潜水病 < sensuibyou\ ;
+中性紙 < chuuseishi\ ;
+乳首 < chichikubi\ ;
+診療所 < shinryoujo\ ;
+空軍大尉 < kuuguntaii\ ;
+日本食 < nihonshoku\ ;
+稼働率 < kadouritsu\ ;
+連合国 < rengoukoku\ ;
+公民学 < koumingaku\ ;
+研究者 < kenkyuusha\ ;
+静水圧 < seisuiatsu\ ;
+登録者 < tourokusha\ ;
+準決勝 < junkesshou\ ;
+極力 < kyokuryoku\ ;
+梯子車 < hashigosha\ ;
+三親等 < sanshintou\ ;
+不純物 < fujunbutsu\ ;
+上女中 < kamijochuu\ ;
+鳥取県 < tottoriken\ ;
+桑畑 < kuwabatake\ ;
+貧乏鬮 < binboukuji\ ;
+唯一度 < tadaichido\ ;
+梵和辞典 < bonwajiten\ ;
+好色家 < koushokuka\ ;
+毛皮商 < kegawashou\ ;
+比較級 < hikakukyuu\ ;
+現在高 < genzaidaka\ ;
+略式 < ryakushiki\ ;
+陸海空 < rikukaikuu\ ;
+双眼鏡 < sougankyou\ ;
+控訴理由 < kousoriyuu\ ;
+駐輪場 < chuurinjou\ ;
+部隊区分 < butaikubun\ ;
+枕許 < makuramoto\ ;
+白鉄鉱 < hakutekkou\ ;
+大宮人 < oomiyabito\ ;
+悪魔主義 < akumashugi\ ;
+雪合戦 < yukigassen\ ;
+片栗粉 < katakuriko\ ;
+発表会 < happyoukai\ ;
+宝籤 < takarakuji\ ;
+吐瀉物 < toshabutsu\ ;
+護岸工事 < gogankouji\ ;
+裏表紙 < urabyoushi\ ;
+切断図 < setsudanzu\ ;
+思惑買 < omowakugai\ ;
+観念論 < kan''nenron\ ;
+玉音盤 < gyokuonban\ ;
+宝箱 < takarabako\ ;
+反動的 < handouteki\ ;
+質草 < shichigusa\ ;
+救命艇 < kyuumeitei\ ;
+絶対的 < zettaiteki\ ;
+骨壷 < kotsutsubo\ ;
+測量図 < sokuryouzu\ ;
+三大国 < sandaikoku\ ;
+地方病 < chihoubyou\ ;
+宿直 < shukuchoku\ ;
+出版者 < shuppansha\ ;
+供給路 < kyoukyuuro\ ;
+竜涎香 < ryuuzenkou\ ;
+射爆場 < shabakujou\ ;
+測量器 < sokuryouki\ ;
+土俗学 < dozokugaku\ ;
+美女桜 < bijozakura\ ;
+南々東 < nan''nantou\ ;
+人格権 < jinkakuken\ ;
+分解的 < bunkaiteki\ ;
+田夫野人 < denpuyajin\ ;
+他覚的 < takakuteki\ ;
+天主教 < tenshukyou\ ;
+雪化粧 < yukigeshou\ ;
+形式美 < keishikibi\ ;
+奇奇怪怪 < kikikaikai\ ;
+電通大 < dentsuudai\ ;
+三角点 < sankakuten\ ;
+伝書鳩 < denshobato\ ;
+他覚症 < takakushou\ ;
+消耗戦 < shoumousen\ ;
+仕訳書 < shiwakesho\ ;
+遊休地 < yuukyuuchi\ ;
+備付 < sonaetsuke\ ;
+反応性 < han''nousei\ ;
+暴走族 < bousouzoku\ ;
+紀元節 < kigensetsu\ ;
+温泉宿 < onsen''yado\ ;
+唐辛子 < tougarashi\ ;
+日中韓 < nitchuukan\ ;
+理解力 < rikairyoku\ ;
+略奪 < ryakudatsu\ ;
+公共財 < koukyouzai\ ;
+検定料 < kenteiryou\ ;
+市長選 < shichousen\ ;
+安普請 < yasubushin\ ;
+神代文字 < jindaimoji\ ;
+古典時代 < kotenjidai\ ;
+市会議員 < shikaigiin\ ;
+水道料 < suidouryou\ ;
+両成敗 < ryouseibai\ ;
+危険負担 < kikenfutan\ ;
+初節句 < hatsuzekku\ ;
+比較的 < hikakuteki\ ;
+国連軍 < kokurengun\ ;
+上級生 < joukyuusei\ ;
+無頓着 < mutonchaku\ ;
+再来月 < saraigetsu\ ;
+後日談 < gojitsudan\ ;
+備荒食 < bikoushoku\ ;
+健康不安 < kenkoufuan\ ;
+松虫 < matsumushi\ ;
+不行跡 < fugyouseki\ ;
+斜陽族 < shayouzoku\ ;
+青化物 < seikabutsu\ ;
+応急渡河 < oukyuutoka\ ;
+天王山 < ten''nouzan\ ;
+二重否定 < nijuuhitei\ ;
+厄介者 < yakkaimono\ ;
+勇猛心 < yuumoushin\ ;
+武力戦 < buryokusen\ ;
+三角法 < sankakuhou\ ;
+意気衝天 < ikishouten\ ;
+宗教画 < shuukyouga\ ;
+研究生 < kenkyuusei\ ;
+出奔者 < shupponsha\ ;
+収益金 < shuuekikin\ ;
+氷菓子 < koorigashi\ ;
+医学用語 < igakuyougo\ ;
+舞台効果 < butaikouka\ ;
+軽工業 < keikougyou\ ;
+記憶力 < kiokuryoku\ ;
+即興詩 < sokkyoushi\ ;
+古生物 < koseibutsu\ ;
+熱愛者 < netsuaisha\ ;
+天頂点 < tenchouten\ ;
+無資力 < mushiryoku\ ;
+興行権 < kougyouken\ ;
+松根油 < shoukon''yu\ ;
+両隣 < ryoudonari\ ;
+百済楽 < kudaragaku\ ;
+在任中 < zaininchuu\ ;
+滞在中 < taizaichuu\ ;
+製茶業 < seichagyou\ ;
+貿易商 < bouekishou\ ;
+国務省 < kokumushou\ ;
+中南米 < chuunanbei\ ;
+群雀 < murasuzume\ ;
+桐一葉 < kirihitoha\ ;
+電位差計 < den''isakei\ ;
+入選者 < nyuusensha\ ;
+縦社会 < tateshakai\ ;
+度数分布 < dosuubunpu\ ;
+操縦席 < soujuuseki\ ;
+周旋屋 < shuusen''ya\ ;
+文学士 < bungakushi\ ;
+運送保険 < unsouhoken\ ;
+工学者 < kougakusha\ ;
+古伝説 < kodensetsu\ ;
+印刷工 < insatsukou\ ;
+潜水服 < sensuifuku\ ;
+木質 < mokushitsu\ ;
+大主教 < daishukyou\ ;
+上場株 < joujoukabu\ ;
+類型的 < ruikeiteki\ ;
+実物 < jitsubutsu\ ;
+下露 < shitatsuyu\ ;
+吹出物 < fukidemono\ ;
+抗真菌 < koushinkin\ ;
+難波潟 < naniwagata\ ;
+租借地 < soshakuchi\ ;
+加農砲 < kan''nonhou\ ;
+造石税 < zoukokuzei\ ;
+駐車場 < chuushajou\ ;
+試算表 < shisanhyou\ ;
+経済学 < keizaigaku\ ;
+急勾配 < kyuukoubai\ ;
+儀式用 < gishikiyou\ ;
+高手小手 < takatekote\ ;
+血栓症 < kessenshou\ ;
+伊達姿 < datesugata\ ;
+病原体 < byougentai\ ;
+無味乾燥 < mumikansou\ ;
+下院議長 < kaingichou\ ;
+八分目 < hachibunme\ ;
+解析性 < kaisekisei\ ;
+軍備管理 < gunbikanri\ ;
+客観性 < kyakkansei\ ;
+畜力 < chikuryoku\ ;
+超媒体 < choubaitai\ ;
+水芭蕉 < mizubashou\ ;
+長期的 < choukiteki\ ;
+眼鏡蛇 < meganehebi\ ;
+樹脂加工 < jushikakou\ ;
+出版界 < shuppankai\ ;
+弁償金 < benshoukin\ ;
+未熟者 < mijukumono\ ;
+分散型 < bunsangata\ ;
+短編集 < tanpenshuu\ ;
+寒椿 < kantsubaki\ ;
+利水工事 < risuikouji\ ;
+淡路島 < awajishima\ ;
+増殖炉 < zoushokuro\ ;
+下見板 < shitamiita\ ;
+分教場 < bunkyoujou\ ;
+非常事態 < hijoujitai\ ;
+武装蜂起 < busouhouki\ ;
+史料館 < shiryoukan\ ;
+有声音化 < yuuseionka\ ;
+血小板 < kesshouban\ ;
+質的 < shitsuteki\ ;
+金色堂 < konjikidou\ ;
+漢方薬 < kanpouyaku\ ;
+価値基準 < kachikijun\ ;
+調理器具 < chourikigu\ ;
+砲煙弾雨 < houendan''u\ ;
+翻訳家 < hon''yakuka\ ;
+平等観 < byoudoukan\ ;
+検査官 < kenshoukan\ ;
+変分学 < henbungaku\ ;
+前栽物 < senzaimono\ ;
+強壮剤 < kyousouzai\ ;
+海産業 < kaisangyou\ ;
+馬耳東風 < bajitoufuu\ ;
+献納者 < ken''nousha\ ;
+六連星 < rokurensei\ ;
+梔子 < kuchinashi\ ;
+勅願寺 < chokuganji\ ;
+伝染病 < densenbyou\ ;
+驀地 < masshigura\ ;
+中華鍋 < chuukanabe\ ;
+天上川 < tenjougawa\ ;
+洋芥子 < yougarashi\ ;
+皆勤賞 < kaikinshou\ ;
+金属片 < kinzokuhen\ ;
+奇術師 < kijutsushi\ ;
+増加率 < zoukaritsu\ ;
+標準型 < hyoujunkei\ ;
+金赤色 < kin''akairo\ ;
+責任感 < sekininkan\ ;
+淋巴節 < rinpasetsu\ ;
+供物台 < kumotsudai\ ;
+米国人 < beikokujin\ ;
+等温式 < touonshiki\ ;
+前任者 < zen''ninsha\ ;
+製造元 < seizoumoto\ ;
+情報量 < jouhouryou\ ;
+平行移動 < heikouidou\ ;
+消耗品 < shoumouhin\ ;
+両手利 < ryoutekiki\ ;
+蓄電器 < chikudenki\ ;
+対角線 < taikakusen\ ;
+山刀 < yamagatana\ ;
+一晩中 < hitobanjuu\ ;
+下道 < shitamichi\ ;
+暗剣殺 < ankensatsu\ ;
+頭足類 < tousokurui\ ;
+在東京 < zaitoukyou\ ;
+棄言葉 < sutekotoba\ ;
+免税表 < menzeihyou\ ;
+国民性 < kokuminsei\ ;
+補助動詞 < hojodoushi\ ;
+彫刻家 < choukokuka\ ;
+不躾 < bushitsuke\ ;
+生卵 < namatamago\ ;
+読書界 < dokushokai\ ;
+風薬 < kazegusuri\ ;
+曲説 < kyokusetsu\ ;
+居留民 < kyoryuumin\ ;
+丸裸 < maruhadaka\ ;
+旋光角 < senkoukaku\ ;
+飯粒 < meshitsubu\ ;
+小間使 < komadzukai\ ;
+角膜炎 < kakumakuen\ ;
+猫車 < nekoguruma\ ;
+鰭脚類 < kikyakurui\ ;
+鑑識家 < kanshikika\ ;
+興行師 < kougyoushi\ ;
+三越 < mitsukoshi\ ;
+嬶天下 < kakaadenka\ ;
+固形物 < kokeibutsu\ ;
+紡績糸 < bousekiito\ ;
+否定応答 < hiteioutou\ ;
+吝嗇家 < rinshokuka\ ;
+為替尻 < kawasejiri\ ;
+読者欄 < dokusharan\ ;
+出世作 < shussesaku\ ;
+動摩擦 < doumasatsu\ ;
+部分食 < bubunshoku\ ;
+出版法 < shuppanhou\ ;
+課題曲 < kadaikyoku\ ;
+客月 < kyakugetsu\ ;
+殺虫剤 < satchuuzai\ ;
+薄雪草 < usuyukisou\ ;
+人体学 < jintaigaku\ ;
+平城京 < heijoukyou\ ;
+三角帽 < sankakubou\ ;
+衝撃波 < shougekiha\ ;
+自己資本 < jikoshihon\ ;
+郵送料 < yuusouryou\ ;
+石炭酸 < sekitansan\ ;
+征服者 < seifukusha\ ;
+顔貌 < kaokatachi\ ;
+黄金時代 < ougonjidai\ ;
+命令一下 < meireiikka\ ;
+強行軍 < kyoukougun\ ;
+納付期限 < noufukigen\ ;
+代表団 < daihyoudan\ ;
+小児麻痺 < shounimahi\ ;
+脚本家 < kyakuhonka\ ;
+菓子鉢 < kashibachi\ ;
+直円錐 < chokuensui\ ;
+宣伝記事 < sendenkiji\ ;
+出版権 < shuppanken\ ;
+再服役 < saifukueki\ ;
+生放送 < namahousou\ ;
+計算尺 < keisanjaku\ ;
+夏季休暇 < kakikyuuka\ ;
+通勤者 < tsuukinsha\ ;
+一塁線 < ichiruisen\ ;
+臨時政府 < rinjiseifu\ ;
+尺八 < shakuhachi\ ;
+液量計 < ekiryoukei\ ;
+三日三晩 < mikkamiban\ ;
+切支丹 < kirishitan\ ;
+闇市場 < yamishijou\ ;
+東男 < azumaotoko\ ;
+障害者 < shougaisha\ ;
+貴族的 < kizokuteki\ ;
+印刷人 < insatsunin\ ;
+海賊船 < kaizokusen\ ;
+抽象化 < chuushouka\ ;
+講習会 < koushuukai\ ;
+愛玩物 < aiganbutsu\ ;
+麻雀屋 < mazejan''ya\ ;
+伝染毒 < densendoku\ ;
+無理難題 < murinandai\ ;
+他国者 < takokumono\ ;
+予備装置 < yobisouchi\ ;
+果樹栽培 < kajusaibai\ ;
+重層的 < juusouteki\ ;
+質樸 < shitsuboku\ ;
+五重塔 < gojuunotou\ ;
+下級審 < kakyuushin\ ;
+肘枕 < hijimakura\ ;
+粗衣粗食 < soisoshoku\ ;
+低所得 < teishotoku\ ;
+仏滅 < butsumetsu\ ;
+専門章 < senmonshou\ ;
+鋳造所 < chuuzousho\ ;
+短時日 < tanjijitsu\ ;
+休業日 < kyuugyoubi\ ;
+先端的 < sentanteki\ ;
+人民委員 < jinmin''iin\ ;
+喧嘩腰 < kenkagoshi\ ;
+草双紙 < kusazoushi\ ;
+空想的 < kuusouteki\ ;
+飽和蒸気 < houwajouki\ ;
+雪達磨 < yukidaruma\ ;
+匹夫匹婦 < hippuhippu\ ;
+内交渉 < naikoushou\ ;
+広告社 < koukokusha\ ;
+小包 < kodzutsumi\ ;
+密密 < mitsumitsu\ ;
+二分音符 < nibun''onpu\ ;
+貨物駅 < kamotsueki\ ;
+千波万波 < senpabanpa\ ;
+貧乏籤 < binbouguji\ ;
+対話式 < taiwashiki\ ;
+就中 < nakandzuku\ ;
+共産軍 < kyousangun\ ;
+上蓆 < uwamushiro\ ;
+不承諾 < fushoudaku\ ;
+求人誌 < kyuujinshi\ ;
+鞭毛虫 < benmouchuu\ ;
+簡単服 < kantanfuku\ ;
+黒穂病 < kurohobyou\ ;
+脱力 < datsuryoku\ ;
+質札 < shichifuda\ ;
+分担額 < buntangaku\ ;
+異常発生 < ijouhassei\ ;
+治安部隊 < chianbutai\ ;
+太陽虫 < taiyouchuu\ ;
+暫定的 < zanteiteki\ ;
+代表例 < daihyourei\ ;
+三菱 < mitsubishi\ ;
+刃傷沙汰 < ninjouzata\ ;
+同国民 < doukokumin\ ;
+記念物 < kinenbutsu\ ;
+旧体制 < kyuutaisei\ ;
+仮枕 < karimakura\ ;
+南洋材 < nan''youzai\ ;
+非常口 < hijouguchi\ ;
+上表紙 < uwabyoushi\ ;
+面白味 < omoshiromi\ ;
+保存食 < hozonshoku\ ;
+不活性化 < fukasseika\ ;
+半意識 < han''ishiki\ ;
+供出 < kyoushutsu\ ;
+宮室 < kyuushitsu\ ;
+本調子 < honchoushi\ ;
+織女星 < shokujosei\ ;
+春霞 < harugasumi\ ;
+専門的 < senmonteki\ ;
+食物 < shokumotsu\ ;
+報償金 < houshoukin\ ;
+擲弾筒 < tekidantou\ ;
+貧乏神 < binbougami\ ;
+昔風 < mukashifuu\ ;
+大統領 < daitouryou\ ;
+量子論 < ryoushiron\ ;
+中力粉 < chuurikiko\ ;
+宝島 < takarajima\ ;
+工事現場 < koujigenba\ ;
+眼鏡猿 < meganezaru\ ;
+仏様 < hotokesama\ ;
+脚力 < kyakuryoku\ ;
+業界紙 < gyoukaishi\ ;
+非公式 < hikoushiki\ ;
+水兵服 < suiheifuku\ ;
+貯木場 < chobokujou\ ;
+梯子段 < hashigodan\ ;
+当歳駒 < tousaigoma\ ;
+宗教家 < shuukyouka\ ;
+研究官 < kenkyuukan\ ;
+殉教者 < junkyousha\ ;
+殉難者 < jun''nansha\ ;
+壁訴訟 < kabezoshou\ ;
+下職 < shitashoku\ ;
+自己宣伝 < jikosenden\ ;
+玉整理 < gyokuseiri\ ;
+茨城県 < ibarakiken\ ;
+屈曲部 < kukkyokubu\ ;
+消防隊 < shouboutai\ ;
+朧昆布 < oborokonbu\ ;
+気管支炎 < kikanshien\ ;
+看病人 < kanbyounin\ ;
+花電車 < hanadensha\ ;
+地文学 < chimongaku\ ;
+口供書 < koukyousho\ ;
+曲筆 < kyokuhitsu\ ;
+手前勝手 < temaegatte\ ;
+保守主義 < hoshushugi\ ;
+草野球 < kusayakyuu\ ;
+検事局 < kenjikyoku\ ;
+木端微塵 < koppamijin\ ;
+六辺形 < rokuhenkei\ ;
+死亡記事 < shiboukiji\ ;
+読者層 < dokushasou\ ;
+催促状 < saisokujou\ ;
+傾斜角 < keishakaku\ ;
+過剰利益 < kajourieki\ ;
+収監状 < shuukanjou\ ;
+地震学 < jishingaku\ ;
+在世中 < zaiseichuu\ ;
+奥座敷 < okuzashiki\ ;
+一纏 < hitomatome\ ;
+美術館 < bijutsukan\ ;
+許容量 < kyoyouryou\ ;
+女尊男卑 < josondanpi\ ;
+射撃場 < shagekijou\ ;
+後天的 < koutenteki\ ;
+駐屯地 < chuutonchi\ ;
+飯櫃 < meshibitsu\ ;
+脳溢血 < nouikketsu\ ;
+存命中 < zonmeichuu\ ;
+系列化 < keiretsuka\ ;
+出版屋 < shuppan''ya\ ;
+審美的 < shinbiteki\ ;
+恒久性 < koukyuusei\ ;
+貝柱 < kaibashira\ ;
+片貿易 < kataboueki\ ;
+文献学 < bunkengaku\ ;
+十二単衣 < juunihitoe\ ;
+時代色 < jidaishoku\ ;
+分離課税 < bunrikazei\ ;
+大大的 < daidaiteki\ ;
+二重橋 < nijuubashi\ ;
+地誌学 < chishigaku\ ;
+化学的 < kagakuteki\ ;
+曲直 < kyokuchoku\ ;
+肉弾戦 < nikudansen\ ;
+一絃琴 < ichigenkin\ ;
+遊牧民 < yuubokumin\ ;
+丸瓦 < marugawara\ ;
+核実験 < kakujikken\ ;
+貨物車 < kamotsusha\ ;
+任意捜査 < nin''isousa\ ;
+求人者 < kyuujinsha\ ;
+七竈 < nanakamado\ ;
+地震国 < jishinkoku\ ;
+居留地 < kyoryuuchi\ ;
+上位概念 < jouigainen\ ;
+障子紙 < shoujigami\ ;
+舞台道具 < butaidougu\ ;
+潜函病 < senkanbyou\ ;
+一穴 < hitotsuana\ ;
+引率者 < insotsusha\ ;
+上映時間 < joueijikan\ ;
+孫娘 < magomusume\ ;
+海賊版 < kaizokuban\ ;
+信仰者 < shinkousha\ ;
+消防車 < shoubousha\ ;
+三等賞 < santoushou\ ;
+無警察 < mukeisatsu\ ;
+仏性 < hotokeshou\ ;
+静静 < shizushizu\ ;
+彩色画 < saishokuga\ ;
+勧告者 < kankokusha\ ;
+計器飛行 < keikihikou\ ;
+実力 < jitsuryoku\ ;
+曲率 < kyokuritsu\ ;
+大鼓 < ootsudzumi\ ;
+広告欄 < koukokuran\ ;
+賞金王 < shoukin''ou\ ;
+戦災孤児 < sensaikoji\ ;
+通知状 < tsuuchijou\ ;
+工作品 < kousakuhin\ ;
+地政学 < chiseigaku\ ;
+太陽神 < taiyoushin\ ;
+継承者 < keishousha\ ;
+基本原理 < kihongenri\ ;
+乳製品 < nyuuseihin\ ;
+狐色 < kitsuneiro\ ;
+遊撃隊 < yuugekitai\ ;
+卑怯者 < hikyoumono\ ;
+再教育 < saikyouiku\ ;
+国内線 < kokunaisen\ ;
+噛煙草 < kamitabako\ ;
+一睡 < hitonemuri\ ;
+慈善市 < jizen''ichi\ ;
+回想録 < kaisouroku\ ;
+外交的 < gaikouteki\ ;
+情意投合 < jouitougou\ ;
+下町 < shitamachi\ ;
+管理機能 < kanrikinou\ ;
+人心 < hitogokoro\ ;
+修理中 < shuurichuu\ ;
+臨時記号 < rinjikigou\ ;
+三等親 < santoushin\ ;
+地表面 < chihyoumen\ ;
+干渉計 < kanshoukei\ ;
+研究会 < kenkyuukai\ ;
+肖像権 < shouzouken\ ;
+七生 < shichishou\ ;
+兵役忌避 < heiekikihi\ ;
+燕麦 < karasumugi\ ;
+役不足 < yakubusoku\ ;
+一番 < hitotsugai\ ;
+注意力 < chuuiryoku\ ;
+腹上死 < fukujoushi\ ;
+編集者 < henshuusha\ ;
+広告板 < koukokuban\ ;
+渉禽類 < shoukinrui\ ;
+倒錯者 < tousakusha\ ;
+水疱瘡 < mizubousou\ ;
+平等権 < byoudouken\ ;
+大震災 < daishinsai\ ;
+重症例 < juushourei\ ;
+地域的 < chiikiteki\ ;
+共産系 < kyousankei\ ;
+開閉橋 < kaiheikyou\ ;
+戦争映画 < sensoueiga\ ;
+陳情書 < chinjousho\ ;
+財政危機 < zaiseikiki\ ;
+投機熱 < toukinetsu\ ;
+有限花序 < yuugenkajo\ ;
+物語 < monogatari\ ;
+冗談事 < joudankoto\ ;
+最高級 < saikoukyuu\ ;
+思惑師 < omowakushi\ ;
+女達 < on''natachi\ ;
+西日本 < nishinihon\ ;
+近代的 < kindaiteki\ ;
+超大型 < chouoogata\ ;
+砕氷船 < saihyousen\ ;
+漁業法 < gyogyouhou\ ;
+朧月 < oborodzuki\ ;
+未解決 < mikaiketsu\ ;
+片跛 < katachinba\ ;
+軍事基地 < gunjikichi\ ;
+巨人国 < kyojinkoku\ ;
+最小限 < saishougen\ ;
+末日 < matsujitsu\ ;
+公共性 < koukyousei\ ;
+不正事件 < fuseijiken\ ;
+出来次第 < dekishidai\ ;
+工学士 < kougakushi\ ;
+酒造業 < shuzougyou\ ;
+変体仮名 < hentaigana\ ;
+色鉛筆 < iroenpitsu\ ;
+望月 < mochidzuki\ ;
+英雄主義 < eiyuushugi\ ;
+火打石 < hiuchiishi\ ;
+醸造業 < jouzougyou\ ;
+大隼 < oohayabusa\ ;
+単眼鏡 < tangankyou\ ;
+痴話喧嘩 < chiwagenka\ ;
+漁業権 < gyogyouken\ ;
+石灯籠 < ishidourou\ ;
+南氷洋 < nanpyouyou\ ;
+鱈場蟹 < tarabagani\ ;
+岡山県 < okayamaken\ ;
+烏有先生 < uyuusensei\ ;
+紡績工 < bousekikou\ ;
+起爆薬 < kibakuyaku\ ;
+確認書 < kakuninsho\ ;
+憲法違反 < kenpouihan\ ;
+回転椅子 < kaiten''isu\ ;
+誕生石 < tanjouseki\ ;
+防臭剤 < boushuuzai\ ;
+錫製品 < suzuseihin\ ;
+月月 < tsukidzuki\ ;
+貨物船 < kamotsusen\ ;
+一塁手 < ichiruishu\ ;
+脚線美 < kyakusenbi\ ;
+能登半島 < notohantou\ ;
+劣性遺伝 < resseiiden\ ;
+有価物 < yuukabutsu\ ;
+請負制度 < ukeoiseido\ ;
+植生図 < shokuseizu\ ;
+一渡 < hitowatari\ ;
+発情期 < hatsujouki\ ;
+白水社 < hakusuisha\ ;
+水車小屋 < suishagoya\ ;
+採算株 < saisankabu\ ;
+褐毛和種 < akagewashu\ ;
+長丁場 < nagachouba\ ;
+妾腹 < mekakebara\ ;
+有孔虫 < yuukouchuu\ ;
+固定負債 < koteifusai\ ;
+天然痘 < ten''nentou\ ;
+依願免官 < iganmenkan\ ;
+四拍子 < yonbyoushi\ ;
+冗長系 < jouchoukei\ ;
+日本式 < nihonshiki\ ;
+満年齢 < man''nenrei\ ;
+消防艇 < shouboutei\ ;
+小液胞 < shouekihou\ ;
+首唱者 < shushousha\ ;
+雲霞 < kumokasumi\ ;
+日本平 < nihondaira\ ;
+革袋 < kawabukuro\ ;
+鉄面皮 < tetsumenpi\ ;
+主権国 < shukenkoku\ ;
+買掛金 < kaikakekin\ ;
+石灰石 < sekkaiseki\ ;
+米問屋 < komedon''ya\ ;
+思想劇 < shisougeki\ ;
+万国民 < bankokumin\ ;
+勧告状 < kankokujou\ ;
+敗北感 < haibokukan\ ;
+密輸船 < mitsuyusen\ ;
+出来不出来 < dekifudeki\ ;
+可変翼 < kahen''yoku\ ;
+政府機関 < seifukikan\ ;
+偏頭痛 < hentoutsuu\ ;
+年齢給 < nenreikyuu\ ;
+透磁率 < toujiritsu\ ;
+事件記者 < jikenkisha\ ;
+平安後期 < heiankouki\ ;
+厄介事 < yakkaigoto\ ;
+伏射濠 < fukushagou\ ;
+析出 < sekishutsu\ ;
+懸壅垂 < ken''yousui\ ;
+界磁極 < kaijikyoku\ ;
+応用力 < ouyouryoku\ ;
+日曜日 < nichiyoubi\ ;
+消防署 < shoubousho\ ;
+雇用保険 < koyouhoken\ ;
+貧乏性 < binboushou\ ;
+核崩壊 < kakuhoukai\ ;
+不潔感 < fuketsukan\ ;
+数学者 < suugakusha\ ;
+聴取者 < choushusha\ ;
+読書人 < dokushojin\ ;
+保護貿易 < hogoboueki\ ;
+前任地 < zen''ninchi\ ;
+漁色家 < gyoshokuka\ ;
+世界制覇 < sekaiseiha\ ;
+製作者 < seisakusha\ ;
+不束 < futsutsuka\ ;
+没個性 < botsukosei\ ;
+無機肥料 < mukihiryou\ ;
+全店中 < zentenchuu\ ;
+高野豆腐 < kouyadoufu\ ;
+官給品 < kankyuuhin\ ;
+白金族 < hakkinzoku\ ;
+天文学 < tenmongaku\ ;
+兵学者 < heigakusha\ ;
+合唱隊 < gasshoutai\ ;
+代議政治 < daigiseiji\ ;
+不成立 < fuseiritsu\ ;
+猫柳 < nekoyanagi\ ;
+献納品 < ken''nouhin\ ;
+細粒分 < sairyuubun\ ;
+意馬心猿 < ibashin''en\ ;
+猛練習 < mourenshuu\ ;
+交通遺児 < koutsuuiji\ ;
+例外的 < reigaiteki\ ;
+効率化 < kouritsuka\ ;
+除虫菊 < jochuugiku\ ;
+紅生姜 < benishouga\ ;
+干拓地 < kantakuchi\ ;
+凍傷者 < toushousha\ ;
+同国人 < doukokujin\ ;
+目的語 < mokutekigo\ ;
+貸付 < kashitsuke\ ;
+三国志 < sangokushi\ ;
+人物画 < jinbutsuga\ ;
+吸入器 < kyuunyuuki\ ;
+防寒服 < boukanfuku\ ;
+修院長 < shuuinchou\ ;
+国内法 < kokunaihou\ ;
+探究者 < tankyuusha\ ;
+初心者 < shoshinsha\ ;
+狸汁 < tanukijiru\ ;
+未開発 < mikaihatsu\ ;
+広告塔 < koukokutou\ ;
+開拓者 < kaitakusha\ ;
+人類学 < jinruigaku\ ;
+知日派 < chinichiha\ ;
+最高潮 < saikouchou\ ;
+天然港 < ten''nenkou\ ;
+反逆児 < hangyakuji\ ;
+一国者 < ikkokumono\ ;
+好材料 < kouzairyou\ ;
+太陽暦 < taiyoureki\ ;
+常用癖 < jouyouheki\ ;
+早教育 < soukyouiku\ ;
+格子縞 < koushijima\ ;
+反軍的 < hangunteki\ ;
+薬包紙 < yakuhoushi\ ;
+兵曹長 < heisouchou\ ;
+漢文学 < kanbungaku\ ;
+急先鋒 < kyuusenpou\ ;
+不抱 < kakawarazu\ ;
+口奇麗 < kuchigirei\ ;
+行政法 < gyouseihou\ ;
+送金額 < soukingaku\ ;
+求婚者 < kyuukonsha\ ;
+再調整 < saichousei\ ;
+風見鶏 < kazamidori\ ;
+執政官 < shisseikan\ ;
+能楽堂 < nougakudou\ ;
+好下物 < koukabutsu\ ;
+双発機 < souhatsuki\ ;
+遺棄貨物 < ikikamotsu\ ;
+公共債 < koukyousai\ ;
+昨年来 < sakunenrai\ ;
+提供者 < teikyousha\ ;
+醸造学 < jouzougaku\ ;
+一所 < hitotokoro\ ;
+得点圏 < tokutenken\ ;
+炭化水素 < tankasuiso\ ;
+審美学 < shinbigaku\ ;
+女便所 < on''nabenjo\ ;
+呉服物 < gofukumono\ ;
+症候群 < shoukougun\ ;
+囲碁三級 < igosankyuu\ ;
+産婦人科 < sanfujinka\ ;
+曲尺 < kyokushaku\ ;
+格子窓 < koushimado\ ;
+文明国 < bunmeikoku\ ;
+行政権 < gyouseiken\ ;
+金木犀 < kinmokusei\ ;
+理想主義 < risoushugi\ ;
+十字砲火 < juujihouka\ ;
+雪質 < yukishitsu\ ;
+都道府県 < todoufuken\ ;
+麝香豌豆 < jakouendou\ ;
+手札型 < tefudagata\ ;
+全般的 < zenpanteki\ ;
+特殊鋼 < tokushukou\ ;
+圧縮性 < asshukusei\ ;
+盲唖学校 < mouagakkou\ ;
+保安条例 < hoanjourei\ ;
+石器時代 < sekkijidai\ ;
+似非理屈 < eserikutsu\ ;
+官房長 < kanbouchou\ ;
+記念切手 < kinenkitte\ ;
+白砂糖 < shirozatou\ ;
+個人個人 < kojinkojin\ ;
+春分点 < shunbunten\ ;
+旧主人 < kyuushujin\ ;
+犇犇 < hishihishi\ ;
+雛豆 < hiyokomame\ ;
+延滞利子 < entairishi\ ;
+葉緑素 < youryokuso\ ;
+網頭 < amigashira\ ;
+分派主義 < bunpashugi\ ;
+内面的 < naimenteki\ ;
+毀誉褒貶 < kiyohouhen\ ;
+肺結核 < haikekkaku\ ;
+唯美主義 < yuibishugi\ ;
+塩魚 < shiozakana\ ;
+回収金 < kaishuukin\ ;
+綿帽子 < wataboushi\ ;
+中執 < chuushitsu\ ;
+夏虫 < natsumushi\ ;
+急進派 < kyuushinha\ ;
+軍事衛星 < gunjieisei\ ;
+芸術院 < geijutsuin\ ;
+榴弾砲 < ryuudanpou\ ;
+冒険心 < boukenshin\ ;
+可燃物 < kanenbutsu\ ;
+日本一 < nihon''ichi\ ;
+修練者 < shuurensha\ ;
+反射鏡 < hanshakyou\ ;
+二直角 < nichokkaku\ ;
+無我夢中 < mugamuchuu\ ;
+型変換 < katahenkan\ ;
+去勢牛 < kyoseiushi\ ;
+予定期限 < yoteikigen\ ;
+犯罪学 < hanzaigaku\ ;
+原籍地 < gensekichi\ ;
+綾錦 < ayanishiki\ ;
+性道徳 < seidoutoku\ ;
+平滑化 < heikatsuka\ ;
+立体映画 < rittaieiga\ ;
+郵便箱 < yuubinbako\ ;
+受信料 < jushinryou\ ;
+再組織 < saisoshiki\ ;
+美術界 < bijutsukai\ ;
+天気模様 < tenkimoyou\ ;
+不等式 < fudoushiki\ ;
+火口原湖 < kakougenko\ ;
+月別 < tsukibetsu\ ;
+表音字母 < hyouonjibo\ ;
+約定書 < yakujousho\ ;
+三箇日 < sanganichi\ ;
+音声言語 < onseigengo\ ;
+発祥地 < hasshouchi\ ;
+一昨昨日 < sakiototoi\ ;
+勝手口 < katteguchi\ ;
+夕食後 < yuushokugo\ ;
+搬入日 < han''nyuubi\ ;
+豪商層 < goushousou\ ;
+奴豆腐 < yakkodoufu\ ;
+脱法行為 < dappoukoui\ ;
+感覚論 < kankakuron\ ;
+国産車 < kokusansha\ ;
+不流通 < furyuutsuu\ ;
+橋頭堡 < kyoutouhou\ ;
+個人主義 < kojinshugi\ ;
+夏時間 < natsujikan\ ;
+石炭層 < sekitansou\ ;
+絹一匹 < kinuippiki\ ;
+建白書 < kenpakusho\ ;
+消防法 < shoubouhou\ ;
+中近東 < chuukintou\ ;
+不正規軍 < fuseikigun\ ;
+奪略 < datsuryaku\ ;
+証人台 < shounindai\ ;
+水産業 < suisangyou\ ;
+比例式 < hireishiki\ ;
+男所帯 < otokojotai\ ;
+修整版 < shuuseihan\ ;
+准看護婦 < junkangofu\ ;
+冷水浴 < reisuiyoku\ ;
+夏羽織 < natsubaori\ ;
+褒言葉 < homekotoba\ ;
+繁繁 < shigeshige\ ;
+事務机 < jimudzukue\ ;
+主催国 < shusaikoku\ ;
+大外刈 < oosotogari\ ;
+清算人 < seisan''nin\ ;
+住民票 < juuminhyou\ ;
+母子家庭 < boshikatei\ ;
+無線局 < musenkyoku\ ;
+悪材料 < akuzairyou\ ;
+日照計 < nisshoukei\ ;
+支持率 < shijiritsu\ ;
+二連発 < nirenpatsu\ ;
+同名異人 < doumeiijin\ ;
+具象的 < gushouteki\ ;
+副抵当 < fukuteitou\ ;
+育児時間 < ikujijikan\ ;
+時価発行 < jikahakkou\ ;
+胸膜炎 < kyoumakuen\ ;
+除湿器 < joshitsuki\ ;
+乗換駅 < norikaeeki\ ;
+一周 < hitomeguri\ ;
+古本屋 < furuhon''ya\ ;
+巨大症 < kyodaishou\ ;
+会議事項 < kaigijikou\ ;
+知日家 < chinichika\ ;
+白眼視 < hakuganshi\ ;
+照射法 < shoushahou\ ;
+仮想記憶 < kasoukioku\ ;
+烏鳩 < karasubato\ ;
+赤信号 < akashingou\ ;
+長方形 < chouhoukei\ ;
+万国史 < bankokushi\ ;
+造兵廠 < zouheishou\ ;
+東京湾 < toukyouwan\ ;
+独創性 < dokusousei\ ;
+部分麻酔 < bubunmasui\ ;
+検事控訴 < kenjikouso\ ;
+放浪癖 < hourouheki\ ;
+行政官 < gyouseikan\ ;
+没趣味 < botsushumi\ ;
+陶酔境 < tousuikyou\ ;
+反射角 < hanshakaku\ ;
+旅烏 < tabigarasu\ ;
+七光 < nanahikari\ ;
+特効薬 < tokkouyaku\ ;
+娘婿 < musumemuko\ ;
+日没 < nichibotsu\ ;
+多項式 < takoushiki\ ;
+表情筋 < hyoujoukin\ ;
+経営管理 < keieikanri\ ;
+利益率 < riekiritsu\ ;
+三拍子 < sanbyoushi\ ;
+量販店 < ryouhanten\ ;
+編集子 < henshuushi\ ;
+冗長性 < jouchousei\ ;
+鼻眼鏡 < hanamegane\ ;
+内視鏡 < naishikyou\ ;
+赤翡翠 < akashoubin\ ;
+飛行時間 < hikoujikan\ ;
+熱機関 < netsukikan\ ;
+摂護腺 < setsugosen\ ;
+対抗策 < taikousaku\ ;
+近代劇 < kindaigeki\ ;
+徹底的 < tetteiteki\ ;
+四字熟語 < yojijukugo\ ;
+歴代史 < rekidaishi\ ;
+早見表 < hayamihyou\ ;
+臨機応変 < rinkiouhen\ ;
+投射角 < toushakaku\ ;
+定期保険 < teikihoken\ ;
+監督者 < kantokusha\ ;
+共産圏 < kyousanken\ ;
+実行中 < jikkouchuu\ ;
+猛攻撃 < moukougeki\ ;
+電子殻 < denshikaku\ ;
+造言飛語 < zougenhigo\ ;
+村役場 < murayakuba\ ;
+細雪 < sasameyuki\ ;
+陸軟風 < rikunanpuu\ ;
+政治色 < seijishoku\ ;
+母子草 < hahakogusa\ ;
+特待生 < tokutaisei\ ;
+頭分 < kashirabun\ ;
+中盤戦 < chuubansen\ ;
+事務用品 < jimuyouhin\ ;
+舞踏靴 < butougutsu\ ;
+言語地理 < gengochiri\ ;
+大陪審 < daibaishin\ ;
+無縁仏 < muenbotoke\ ;
+斑牛 < madaraushi\ ;
+緑色 < ryokushoku\ ;
+認定証 < ninteishou\ ;
+美術書 < bijutsusho\ ;
+計量法 < keiryouhou\ ;
+原振動 < genshindou\ ;
+学芸会 < gakugeikai\ ;
+脂肪心 < shiboushin\ ;
+狸饂飩 < tanukiudon\ ;
+水産庁 < suisanchou\ ;
+合憲的 < goukenteki\ ;
+主体的 < shutaiteki\ ;
+犯罪行為 < hanzaikoui\ ;
+日月 < nichigetsu\ ;
+窃盗狂 < settoukyou\ ;
+女一般 < on''naippan\ ;
+決勝線 < kesshousen\ ;
+旭日 < kyokujitsu\ ;
+輸送機関 < yusoukikan\ ;
+口上手 < kuchijouzu\ ;
+工場長 < koujouchou\ ;
+旗二流 < hataniryuu\ ;
+補助艦艇 < hojokantei\ ;
+即位式 < sokuishiki\ ;
+五里霧中 < gorimuchuu\ ;
+懐柔策 < kaijuusaku\ ;
+三日天下 < mikkatenka\ ;
+幻想劇 < gensougeki\ ;
+基本単位 < kihontan''i\ ;
+事務室 < jimushitsu\ ;
+超規則 < choukisoku\ ;
+核家族 < kakukazoku\ ;
+夕月夜 < yuudzukeyo\ ;
+猶予期間 < yuuyokikan\ ;
+大衆車 < daishuusha\ ;
+無籍者 < musekimono\ ;
+日独伊 < nichidokui\ ;
+隣組 < tonarigumi\ ;
+悪習慣 < akushuukan\ ;
+硫酸銅 < ryuusandou\ ;
+水産学 < suisangaku\ ;
+烏金 < karasugane\ ;
+幸福感 < koufukukan\ ;
+賠償金 < baishoukin\ ;
+請負工事 < ukeoikouji\ ;
+隼科 < hayabusaka\ ;
+共産党 < kyousantou\ ;
+物心 < monogokoro\ ;
+旅枕 < tabimakura\ ;
+紅雀 < benisuzume\ ;
+父方 < chichikata\ ;
+後退文字 < koutaimoji\ ;
+船板塀 < funaitabei\ ;
+全学連 < zengakuren\ ;
+直走路 < chokusouro\ ;
+男尊女卑 < dansonjohi\ ;
+氷豆腐 < kooridoufu\ ;
+入居者 < nyuukyosha\ ;
+日陰者 < hikagemono\ ;
+絶縁線 < zetsuensen\ ;
+大慈大悲 < daijidaihi\ ;
+塵芥 < chiriakuta\ ;
+品評会 < hinpyoukai\ ;
+水瓶座 < mizugameza\ ;
+各団体 < kakudantai\ ;
+来来週 < rairaishuu\ ;
+四十雀 < shijuukara\ ;
+如何様師 < ikasamashi\ ;
+通用門 < tsuuyoumon\ ;
+爪楊枝 < tsumayouji\ ;
+散髪屋 < sanpatsuya\ ;
+校正刷 < kouseizuri\ ;
+黒眼鏡 < kuromegane\ ;
+臨界事故 < rinkaijiko\ ;
+雨燕 < amatsubame\ ;
+妹婿 < imoutomuko\ ;
+造船業 < zousengyou\ ;
+観劇会 < kangekikai\ ;
+雪煙 < yukikemuri\ ;
+公害病 < kougaibyou\ ;
+受信側 < jushingawa\ ;
+企業心 < kigyoushin\ ;
+因果関係 < ingakankei\ ;
+修繕工 < shuuzenkou\ ;
+単身銃 < tanshinjuu\ ;
+角蛙 < tsunogaeru\ ;
+異種交配 < ishukouhai\ ;
+夜間勤務 < yakankinmu\ ;
+百年目 < hyakunenme\ ;
+没理想 < botsurisou\ ;
+静脈炎 < joumyakuen\ ;
+御国自慢 < okunijiman\ ;
+全能者 < zen''nousha\ ;
+呉服商 < gofukushou\ ;
+省資源 < shoushigen\ ;
+集合論 < shuugouron\ ;
+禁煙席 < kin''enseki\ ;
+失業 < shitsugyou\ ;
+設立 < setsuritsu\ ;
+長方体 < chouhoutai\ ;
+受信人 < jushin''nin\ ;
+急停車 < kyuuteisha\ ;
+雑物 < zatsubutsu\ ;
+神経科医 < shinkeikai\ ;
+糞度胸 < kusodokyou\ ;
+消防士 < shouboushi\ ;
+有理式 < yuurishiki\ ;
+終列車 < shuuressha\ ;
+所有格 < shoyuukaku\ ;
+知覚知 < chikakuchi\ ;
+遊撃手 < yuugekishu\ ;
+解熱剤 < genetsuzai\ ;
+店屋物 < ten''yamono\ ;
+熱烈 < netsuretsu\ ;
+遊撃戦 < yuugekisen\ ;
+山水閣 < sansuikaku\ ;
+説教師 < sekkyoushi\ ;
+島帝国 < touteikoku\ ;
+卑劣漢 < hiretsukan\ ;
+随神 < kan''nagara\ ;
+裸麦 < hadakamugi\ ;
+全生涯 < zenshougai\ ;
+全会衆 < zenkaishuu\ ;
+収容者 < shuuyousha\ ;
+解集合 < kaishuugou\ ;
+相対的 < soutaiteki\ ;
+石灰乳 < sekkainyuu\ ;
+共有者 < kyouyuusha\ ;
+指定席 < shiteiseki\ ;
+商品名 < shouhinmei\ ;
+根本的 < konponteki\ ;
+美術展 < bijutsuten\ ;
+縞模様 < shimamoyou\ ;
+消防団 < shouboudan\ ;
+乾葡萄 < hoshibudou\ ;
+霜月 < shimotsuki\ ;
+羽根車 < haneguruma\ ;
+完全試合 < kanzenjiai\ ;
+発動機 < hatsudouki\ ;
+闘牛士 < tougyuushi\ ;
+同情票 < doujouhyou\ ;
+入会金 < nyuukaikin\ ;
+熱硬化 < netsukouka\ ;
+夢枕 < yumemakura\ ;
+旅心 < tabigokoro\ ;
+闘牛場 < tougyuujou\ ;
+反対票 < hantaihyou\ ;
+犬侍 < inuzamurai\ ;
+冷却器 < reikyakuki\ ;
+借入金 < kariirekin\ ;
+商品券 < shouhinken\ ;
+公示地価 < koujichika\ ;
+歓楽街 < kanrakugai\ ;
+研削盤 < kensakuban\ ;
+一字一句 < ichijiikku\ ;
+識別 < shikibetsu\ ;
+原理主義 < genrishugi\ ;
+本籍地 < honsekichi\ ;
+気欝症 < kiutsushou\ ;
+恋女房 < koinyoubou\ ;
+脳神経 < noushinkei\ ;
+膠原病 < kougenbyou\ ;
+牽制球 < kenseikyuu\ ;
+新造船 < shinzousen\ ;
+感覚点 < kankakuten\ ;
+偽君子 < nisekunshi\ ;
+決勝点 < kesshouten\ ;
+多数決 < tasuuketsu\ ;
+意識的 < ishikiteki\ ;
+反射的 < hanshateki\ ;
+不活発 < fukappatsu\ ;
+受領証 < juryoushou\ ;
+純文学 < junbungaku\ ;
+特急券 < tokkyuuken\ ;
+妾出 < shoushutsu\ ;
+黄金術 < ougonjutsu\ ;
+仮勘定 < karikanjou\ ;
+緑玉 < ryokugyoku\ ;
+烏蛇 < karasuhebi\ ;
+霊長類 < reichourui\ ;
+全身像 < zenshinzou\ ;
+密輸品 < mitsuyuhin\ ;
+既設線 < kisetsusen\ ;
+二連式 < nirenshiki\ ;
+童話作家 < douwasakka\ ;
+減速材 < gensokuzai\ ;
+光磁気 < hikarijiki\ ;
+証明書 < shoumeisho\ ;
+開拓地 < kaitakuchi\ ;
+仮免許 < karimenkyo\ ;
+特出 < tokushutsu\ ;
+紙袋 < kamibukuro\ ;
+印象的 < inshouteki\ ;
+旧教徒 < kyuukyouto\ ;
+貨物便 < kamotsubin\ ;
+妨害行為 < bougaikoui\ ;
+雪柳 < yukiyanagi\ ;
+有望株 < yuuboukabu\ ;
+慣例的 < kanreiteki\ ;
+観相学 < kansougaku\ ;
+肉用種 < nikuyoushu\ ;
+運営経費 < un''eikeihi\ ;
+春休 < haruyasumi\ ;
+基地局 < kichikyoku\ ;
+適応症 < tekioushou\ ;
+中高生 < chuukousei\ ;
+下準備 < shitajunbi\ ;
+信頼感 < shinraikan\ ;
+発酵乳 < hakkounyuu\ ;
+旅芸人 < tabigeinin\ ;
+人雪崩 < hitonadare\ ;
+主信号 < shushingou\ ;
+二部合奏 < nibugassou\ ;
+信奉者 < shinpousha\ ;
+名誉毀損 < meiyokison\ ;
+尺貫法 < shakkanhou\ ;
+美術品 < bijutsuhin\ ;
+記録映画 < kirokueiga\ ;
+通信費 < tsuushinhi\ ;
+信頼性 < shinraisei\ ;
+感覚毛 < kankakumou\ ;
+順応性 < jun''nousei\ ;
+常習者 < joushuusha\ ;
+美術史 < bijutsushi\ ;
+檀那寺 < dan''nadera\ ;
+千歳飴 < chitoseame\ ;
+製材業 < seizaigyou\ ;
+新機軸 < shinkijiku\ ;
+肉饅頭 < nikumanjuu\ ;
+水資源 < mizushigen\ ;
+白鳥座 < hakuchouza\ ;
+百分比 < hyakubunhi\ ;
+試金石 < shikinseki\ ;
+運搬管理 < unpankanri\ ;
+優等賞 < yuutoushou\ ;
+医科大学 < ikadaigaku\ ;
+大衆紙 < taishuushi\ ;
+花見時 < hanamidoki\ ;
+加減乗除 < kagenjoujo\ ;
+塗擦剤 < tosatsuzai\ ;
+阿片戦争 < ahensensou\ ;
+木製品 < mokuseihin\ ;
+内角球 < naikakkyuu\ ;
+饒舌家 < jouzetsuka\ ;
+熱処理 < netsushori\ ;
+触発 < shokuhatsu\ ;
+新幹線 < shinkansen\ ;
+動向表 < doukouhyou\ ;
+交響詩 < koukyoushi\ ;
+挨拶状 < aisatsujou\ ;
+陥没湖 < kanbotsuko\ ;
+唯唯諾諾 < iidakudaku\ ;
+信天翁 < shinten''ou\ ;
+起電力 < kidenryoku\ ;
+鎮魂祭 < chinkonsai\ ;
+舶来品 < hakuraihin\ ;
+手塩皿 < teshiozara\ ;
+黒底翳 < kurosokohi\ ;
+学生帽 < gakuseibou\ ;
+継父 < mamachichi\ ;
+水栽培 < mizusaibai\ ;
+営造物 < eizoubutsu\ ;
+日照権 < nisshouken\ ;
+相対誤差 < soutaigosa\ ;
+光量子 < kouryoushi\ ;
+万愚節 < bangusetsu\ ;
+能狂言 < noukyougen\ ;
+飲酒運転 < inshuunten\ ;
+烏紙 < karasugami\ ;
+支持力 < shijiryoku\ ;
+統計表 < toukeihyou\ ;
+先史学 < senshigaku\ ;
+指名試合 < shimeijiai\ ;
+日仏 < nichifutsu\ ;
+硫酸紙 < ryuusanshi\ ;
+性差別 < seisabetsu\ ;
+靴下 < kutsushita\ ;
+本国人 < hongokujin\ ;
+巨視的 < kyoshiteki\ ;
+転轍機 < tentetsuki\ ;
+表忠碑 < hyouchuuhi\ ;
+収賄罪 < shuuwaizai\ ;
+薬剤師 < yakuzaishi\ ;
+後見人 < kouken''nin\ ;
+連用形 < ren''youkei\ ;
+余白注 < yohakuchuu\ ;
+伝統的 < dentouteki\ ;
+縮尺 < shukushaku\ ;
+徒弟制度 < toteiseido\ ;
+親権者 < shinkensha\ ;
+紋羽二重 < monhabutae\ ;
+円天井 < marutenjou\ ;
+女主 < on''naaruji\ ;
+少年院 < shounen''in\ ;
+歴青炭 < rekiseitan\ ;
+貨幣制度 < kaheiseido\ ;
+蠏工船 < kanikousen\ ;
+目八分 < mehachibun\ ;
+四十肩 < shijuukata\ ;
+楽観的 < rakkanteki\ ;
+心停止 < shinteishi\ ;
+速射砲 < sokushahou\ ;
+敵失 < tekishitsu\ ;
+日和下駄 < hiyorigeta\ ;
+新建材 < shinkenzai\ ;
+不必要 < fuhitsuyou\ ;
+扁青石 < henseiseki\ ;
+双球菌 < soukyuukin\ ;
+世界平和 < sekaiheiwa\ ;
+水羊羮 < mizuyoukan\ ;
+抜本的 < bapponteki\ ;
+教室 < kyoushitsu\ ;
+単発機 < tanpatsuki\ ;
+無理関数 < murikansuu\ ;
+転送先 < tensousaki\ ;
+入会者 < nyuukaisha\ ;
+丸木船 < marukibune\ ;
+音吐朗朗 < ontorourou\ ;
+希釈液 < kishakueki\ ;
+梅雨前線 < baiuzensen\ ;
+月曜日 < getsuyoubi\ ;
+最賃法 < saichinhou\ ;
+電気時計 < denkidokei\ ;
+革新派 < kakushinha\ ;
+絶滅 < zetsumetsu\ ;
+二十四日 < nijuuyokka\ ;
+戦病死 < senbyoushi\ ;
+男性的 < danseiteki\ ;
+乳酸菌 < nyuusankin\ ;
+前照灯 < zenshoutou\ ;
+悲歌慷慨 < hikakougai\ ;
+腸捻転 < chounenten\ ;
+親分株 < oyabunkabu\ ;
+学用品 < gakuyouhin\ ;
+特殊性 < tokushusei\ ;
+単色画 < tanshokuga\ ;
+仕立券 < shitateken\ ;
+予防医学 < yobouigaku\ ;
+当期利益 < toukirieki\ ;
+要石 < kanameishi\ ;
+皮下脂肪 < hikashibou\ ;
+陰弁慶 < kagebenkei\ ;
+混血児 < konketsuji\ ;
+販売元 < hanbaimoto\ ;
+常習犯 < joushuuhan\ ;
+陶磁器店 < toujikiten\ ;
+清涼剤 < seiryouzai\ ;
+最小値 < saishouchi\ ;
+切符売場 < kippuuriba\ ;
+裸体主義 < rataishugi\ ;
+水族館 < suizokukan\ ;
+共犯者 < kyouhansha\ ;
+寿司飯 < sushimeshi\ ;
+急転換 < kyuutenkan\ ;
+招待状 < shoutaijou\ ;
+打撲傷 < dabokushou\ ;
+音標文字 < onpyoumoji\ ;
+特待券 < tokutaiken\ ;
+毒人参 < dokuninjin\ ;
+不正規戦 < fuseikisen\ ;
+天竺葵 < tenjikuaoi\ ;
+女世帯 < on''najotai\ ;
+人間的 < ningenteki\ ;
+診断書 < shindansho\ ;
+蘚苔学 < sentaigaku\ ;
+絶対位置 < zettaiichi\ ;
+原稿料 < genkouryou\ ;
+監督官 < kantokukan\ ;
+商務省 < shoumushou\ ;
+宣告書 < senkokusho\ ;
+夜夜中 < yoruyonaka\ ;
+裏話 < urabanashi\ ;
+通信簿 < tsuushinbo\ ;
+堆積岩 < taisekigan\ ;
+抑留所 < yokuryuujo\ ;
+撞木杖 < shumokuzue\ ;
+黄金率 < ougonritsu\ ;
+堆積層 < taisekisou\ ;
+合唱団 < gasshoudan\ ;
+好敵手 < koutekishu\ ;
+簡易保険 < kan''ihoken\ ;
+粉薬 < konagusuri\ ;
+文章題 < bunshoudai\ ;
+寡頭政治 < katouseiji\ ;
+金物屋 < kanamonoya\ ;
+団菊祭 < dangikusai\ ;
+緩衝液 < kanshoueki\ ;
+寄宿舎 < kishukusha\ ;
+縮刷 < shukusatsu\ ;
+潜望鏡 < senboukyou\ ;
+新左翼 < shinsayoku\ ;
+遡及的 < sokyuuteki\ ;
+同情心 < doujoushin\ ;
+下稽古 < shitageiko\ ;
+競争者 < kyousousha\ ;
+商店街 < shoutengai\ ;
+玉手箱 < tamatebako\ ;
+土豚 < tsuchibuta\ ;
+上半身 < jouhanshin\ ;
+下水処理 < gesuishori\ ;
+測定法 < sokuteihou\ ;
+降圧剤 < kouatsuzai\ ;
+急傾斜 < kyuukeisha\ ;
+両棲類 < ryouseirui\ ;
+最上級 < saijoukyuu\ ;
+偃月刀 < engetsutou\ ;
+看護卒 < kangosotsu\ ;
+記憶素子 < kiokusoshi\ ;
+音声記号 < onseikigou\ ;
+和平会議 < waheikaigi\ ;
+罫線表 < keisenhyou\ ;
+破壊主義 < hakaishugi\ ;
+針土竜 < harimogura\ ;
+宇宙基地 < uchuukichi\ ;
+灯台守 < toudaimori\ ;
+仮免状 < karimenjou\ ;
+弾薬庫 < dan''yakuko\ ;
+合法的 < gouhouteki\ ;
+不可知論 < fukachiron\ ;
+自衛手段 < jieishudan\ ;
+挫折感 < zasetsukan\ ;
+小売値段 < kourinedan\ ;
+救出 < kyuushutsu\ ;
+壁土 < kabetsuchi\ ;
+赤新聞 < akashinbun\ ;
+膠着語 < kouchakugo\ ;
+終止形 < shuushikei\ ;
+出港船 < shukkousen\ ;
+輸入額 < yunyuugaku\ ;
+甲殻類 < koukakurui\ ;
+市場規模 < shijoukibo\ ;
+議員立法 < giinrippou\ ;
+障壁画 < shouhekiga\ ;
+溶接機 < yousetsuki\ ;
+乗組員 < norikumiin\ ;
+腎臓病 < jinzoubyou\ ;
+可搬式 < kahanshiki\ ;
+健筆家 < kenpitsuka\ ;
+正中線 < seichuusen\ ;
+千年間 < sen''nenkan\ ;
+棒磁石 < boujishaku\ ;
+観賞魚 < kanshougyo\ ;
+神学校 < shingakkou\ ;
+作業服 < sagyoufuku\ ;
+発着所 < hatchakujo\ ;
+親近感 < shinkinkan\ ;
+乱泥流 < randeiryuu\ ;
+当直員 < touchokuin\ ;
+学級委員 < gakkyuuiin\ ;
+統計的 < toukeiteki\ ;
+結末 < ketsumatsu\ ;
+芸術家 < geijutsuka\ ;
+玄関先 < genkansaki\ ;
+親柱 < oyabashira\ ;
+深海魚 < shinkaigyo\ ;
+同志的 < doushiteki\ ;
+粛粛 < shukushuku\ ;
+価千金 < ataisenkin\ ;
+議会主義 < gikaishugi\ ;
+九回戦 < kyuukaisen\ ;
+基礎科学 < kisokagaku\ ;
+国訛 < kuninamari\ ;
+捜査本部 < sousahonbu\ ;
+半永久 < han''eikyuu\ ;
+雑役婦 < zatsuekifu\ ;
+冷凍業 < reitougyou\ ;
+綿埃 < watabokori\ ;
+宇宙探査 < uchuutansa\ ;
+儒教的 < jukyouteki\ ;
+親日 < shin''nichi\ ;
+酛 < sakenomoto\ ;
+揚陸艦 < yourikukan\ ;
+重謹慎 < juukinshin\ ;
+凍豆腐 < shimidoufu\ ;
+永谷園 < nagatanien\ ;
+二槽式 < nisoushiki\ ;
+相乗積 < soujouseki\ ;
+菌類学 < kinruigaku\ ;
+新刊書 < shinkansho\ ;
+青少年 < seishounen\ ;
+推進者 < suishinsha\ ;
+灼熱 < shakunetsu\ ;
+列席者 < ressekisha\ ;
+国産品 < kokusanhin\ ;
+懐旧談 < kaikyuudan\ ;
+枯草熱 < kosounetsu\ ;
+雇主 < yatoinushi\ ;
+中甲板 < chuukanpan\ ;
+埋伏歯 < maifukushi\ ;
+内緒事 < naishogoto\ ;
+一等卒 < ittousotsu\ ;
+亜麻織物 < amaorimono\ ;
+神代杉 < jindaisugi\ ;
+値嵩株 < negasakabu\ ;
+政治力 < seijiryoku\ ;
+答申書 < toushinsho\ ;
+順序不同 < junjofudou\ ;
+継娘 < mamamusume\ ;
+乱心者 < ranshinsha\ ;
+経済援助 < keizaienjo\ ;
+焼失 < shoushitsu\ ;
+人間業 < ningenwaza\ ;
+累算温度 < ruisanondo\ ;
+共謀者 < kyoubousha\ ;
+来賓席 < raihinseki\ ;
+舞踏曲 < butoukyoku\ ;
+修行者 < shugyousha\ ;
+島根県 < shimaneken\ ;
+強硬論 < kyoukouron\ ;
+法治国 < houchikoku\ ;
+不得策 < futokusaku\ ;
+訳出 < yakushutsu\ ;
+烈日 < retsujitsu\ ;
+在米中 < zaibeichuu\ ;
+匿名性 < tokumeisei\ ;
+登山靴 < tozangutsu\ ;
+浪漫主義 < romanshugi\ ;
+座敷牢 < zashikirou\ ;
+神格化 < shinkakuka\ ;
+赤外線 < sekigaisen\ ;
+薬用酒 < yakuyoushu\ ;
+結核菌 < kekkakukin\ ;
+締付 < shimetsuke\ ;
+草履虫 < zourimushi\ ;
+武装都市 < busoutoshi\ ;
+大衆性 < taishuusei\ ;
+寄宿生 < kishukusei\ ;
+昇汞水 < shoukousui\ ;
+武者慄 < mushaburui\ ;
+文章論 < bunshouron\ ;
+特選品 < tokusenhin\ ;
+近親者 < kinshinsha\ ;
+複数形 < fukusuukei\ ;
+幽邃境 < yuusuikyou\ ;
+再投票 < saitouhyou\ ;
+不活動 < fukatsudou\ ;
+全寮制 < zenryousei\ ;
+平和国家 < heiwakokka\ ;
+追悼会 < tsuitoukai\ ;
+道路地図 < dourochizu\ ;
+筒鳥 < tsutsudori\ ;
+白兵戦 < hakuheisen\ ;
+請求権 < seikyuuken\ ;
+忠霊塔 < chuureitou\ ;
+隙間風 < sukimakaze\ ;
+共有地 < kyouyuuchi\ ;
+片為替 < katagawase\ ;
+緩衝弁 < kanshouben\ ;
+宿根草 < shukkonsou\ ;
+大立者 < oodatemono\ ;
+泰山木 < taisanboku\ ;
+糸状虫 < shijouchuu\ ;
+絶縁体 < zetsuentai\ ;
+里言葉 < satokotoba\ ;
+御朱印船 < goshuinsen\ ;
+購読者 < koudokusha\ ;
+売買高 < baibaidaka\ ;
+挺進隊 < teishintai\ ;
+詔 < mikotonori\ ;
+脱水症 < dassuishou\ ;
+勧進帳 < kanjinchou\ ;
+拡張化 < kakuchouka\ ;
+殺人鬼 < satsujinki\ ;
+流動性 < ryuudousei\ ;
+四重唱 < shijuushou\ ;
+教育者 < kyouikusha\ ;
+反対側 < hantaigawa\ ;
+琴一張 < kotoitchou\ ;
+内在的 < naizaiteki\ ;
+三段跳 < sandantobi\ ;
+飛躍的 < hiyakuteki\ ;
+手長猿 < tenagazaru\ ;
+老眼鏡 < rougankyou\ ;
+仮処分 < karishobun\ ;
+袋耳 < fukuromimi\ ;
+全人格 < zenjinkaku\ ;
+分泌物 < bunpibutsu\ ;
+請求書 < seikyuusho\ ;
+結実 < ketsujitsu\ ;
+不決断 < fuketsudan\ ;
+先先週 < sensenshuu\ ;
+致命的 < chimeiteki\ ;
+乳石英 < nyuusekiei\ ;
+財政学 < zaiseigaku\ ;
+続出 < zokushutsu\ ;
+夜郎自大 < yaroujidai\ ;
+飲食店 < inshokuten\ ;
+部分否定 < bubunhitei\ ;
+紙製品 < kamiseihin\ ;
+蝟 < harinezumi\ ;
+講和会議 < kouwakaigi\ ;
+編組機械 < hensokikai\ ;
+法律案 < houritsuan\ ;
+半盲症 < hanmoushou\ ;
+硝酸銀 < shousangin\ ;
+医療器械 < iryoukikai\ ;
+防総省 < bousoushou\ ;
+正規分布 < seikibunpu\ ;
+逆比例 < gyakuhirei\ ;
+投書箱 < toushobako\ ;
+会員名簿 < kaiinmeibo\ ;
+濃紫 < komurasaki\ ;
+城下町 < joukamachi\ ;
+特別委 < tokubetsui\ ;
+村芝居 < murashibai\ ;
+継息子 < mamamusuko\ ;
+発信音 < hasshin''on\ ;
+天変地異 < tenpenchii\ ;
+有史以来 < yuushiirai\ ;
+四死球 < shishikyuu\ ;
+献金箱 < kenkinbako\ ;
+戦略家 < senryakuka\ ;
+公聴会 < kouchoukai\ ;
+溝鼠 < dobunezumi\ ;
+萙 < kutabireru\ ;
+複数回 < fukusuukai\ ;
+会計学 < kaikeigaku\ ;
+簡略化 < kanryakuka\ ;
+給電線 < kyuudensen\ ;
+吉祥天 < kisshouten\ ;
+保護関税 < hogokanzei\ ;
+未帰還者 < mikikansha\ ;
+御影石 < mikageishi\ ;
+内国産 < naikokusan\ ;
+三日坊主 < mikkabouzu\ ;
+雪月花 < setsugekka\ ;
+私書箱 < shishobako\ ;
+直映館 < chokueikan\ ;
+病理学 < byourigaku\ ;
+復刻版 < fukkokuban\ ;
+退廃的 < taihaiteki\ ;
+確固不動 < kakkofudou\ ;
+人間学 < ningengaku\ ;
+下着類 < shitagirui\ ;
+唐変木 < touhenboku\ ;
+線撮影 < sensatsuei\ ;
+文房具屋 < bunbouguya\ ;
+新生面 < shinseimen\ ;
+康煕字典 < koukijiten\ ;
+血脈 < ketsumyaku\ ;
+数日後 < suujitsugo\ ;
+未来永劫 < miraieigou\ ;
+超合金 < chougoukin\ ;
+多国籍 < takokuseki\ ;
+積算法 < sekisanhou\ ;
+無理算段 < murisandan\ ;
+外為法 < gaitamehou\ ;
+出品者 < shuppinsha\ ;
+覚醒剤 < kakuseizai\ ;
+高山蝶 < kouzanchou\ ;
+近縁属 < kin''enzoku\ ;
+上達部 < kandachime\ ;
+可鍛鉄 < katantetsu\ ;
+心理的 < shinriteki\ ;
+乗換券 < norikaeken\ ;
+教育界 < kyouikukai\ ;
+陰極線 < inkyokusen\ ;
+半艇身 < hanteishin\ ;
+親兄弟 < oyakyoudai\ ;
+旅館業 < ryokangyou\ ;
+学期末 < gakkimatsu\ ;
+虞美人草 < gubijinsou\ ;
+到来物 < touraimono\ ;
+象牙細工 < zougezaiku\ ;
+沖仲仕 < okinakashi\ ;
+外国製 < gaikokusei\ ;
+終盤戦 < shuubansen\ ;
+逆光線 < gyakkousen\ ;
+象徴派 < shouchouha\ ;
+勧進元 < kanjinmoto\ ;
+魚類学 < gyoruigaku\ ;
+鎌鼬 < kamaitachi\ ;
+縞瑪瑙 < shimamenou\ ;
+真空管 < shinkuukan\ ;
+舎利別 < sharibetsu\ ;
+京阪神 < keihanshin\ ;
+慣習法 < kanshuuhou\ ;
+滅茶滅茶 < mechamecha\ ;
+頭陀袋 < zudabukuro\ ;
+陰極管 < inkyokukan\ ;
+混和物 < konwabutsu\ ;
+刀鍛冶 < katanakaji\ ;
+潜伏性 < senpukusei\ ;
+風車小屋 < fuushagoya\ ;
+招待券 < shoutaiken\ ;
+子供部屋 < kodomobeya\ ;
+求愛誇示 < kyuuaikoji\ ;
+受難節 < junansetsu\ ;
+測定値 < sokuteichi\ ;
+化粧紙 < keshougami\ ;
+大憲章 < daikenshou\ ;
+王政復古 < ouseifukko\ ;
+単色光 < tanshokkou\ ;
+袋物 < fukuromono\ ;
+甲殻綱 < koukakukou\ ;
+集合体 < shuugoutai\ ;
+一人部屋 < hitoribeya\ ;
+立往生 < tachioujou\ ;
+竕 < deshiritto\ ;
+不買運動 < fubaiundou\ ;
+子宮頸 < shikyuukei\ ;
+吝嗇吝嗇 < kechikechi\ ;
+経験的 < keikenteki\ ;
+化粧箱 < keshoubako\ ;
+二番星 < nibanboshi\ ;
+西口 < nishiguchi\ ;
+法律家 < houritsuka\ ;
+定期預金 < teikiyokin\ ;
+一定期間 < itteikikan\ ;
+洗濯板 < sentakuita\ ;
+滑沢剤 < kattakuzai\ ;
+対称性 < taishousei\ ;
+少年法 < shounenhou\ ;
+徳川家 < tokugawake\ ;
+地下運動 < chikaundou\ ;
+流動体 < ryuudoutai\ ;
+終刊号 < shuukangou\ ;
+監修者 < kanshuusha\ ;
+共編者 < kyouhensha\ ;
+懐疑主義 < kaigishugi\ ;
+融通無碍 < yuuzuumuge\ ;
+保安要員 < hoan''youin\ ;
+統計学 < toukeigaku\ ;
+輪郭線 < rinkakusen\ ;
+軍艦鳥 < gunkandori\ ;
+商船隊 < shousentai\ ;
+超満員 < chouman''in\ ;
+片手鍋 < katatenabe\ ;
+股関節 < kokansetsu\ ;
+節節 < fushibushi\ ;
+調味料 < choumiryou\ ;
+又小作 < matakosaku\ ;
+筒袖 < tsutsusode\ ;
+不正直 < fushoujiki\ ;
+洪積層 < kousekisou\ ;
+検圧器 < ken''atsuki\ ;
+主我主義 < shugashugi\ ;
+染物屋 < somemonoya\ ;
+配膳人 < haizen''nin\ ;
+境界線 < kyoukaisen\ ;
+静物画 < seibutsuga\ ;
+教育法 < kyouikuhou\ ;
+収集魔 < shuushuuma\ ;
+離職者 < rishokusha\ ;
+牧師館 < bokushikan\ ;
+占領軍 < senryougun\ ;
+糸印 < itojirushi\ ;
+中生代 < chuuseidai\ ;
+為人 < hitotonari\ ;
+下半期 < shimohanki\ ;
+教会法 < kyoukaihou\ ;
+原水爆 < gensuibaku\ ;
+甅 < senchigura\ ;
+瓸 < hekutogura\ ;
+炭俵 < sumidawara\ ;
+瓱 < miriguramu\ ;
+瓩 < kiroguramu\ ;
+瓧 < dekaguramu\ ;
+刺繍糸 < shishuuito\ ;
+不作為犯 < fusakuihan\ ;
+搭乗橋 < toujoukyou\ ;
+石鹸箱 < sekkenbako\ ;
+回転軸 < kaitenjiku\ ;
+刻一刻 < kokuikkoku\ ;
+創造的 < souzouteki\ ;
+痴呆症 < chihoushou\ ;
+米所 < komedokoro\ ;
+排水量 < haisuiryou\ ;
+各情報 < kakujouhou\ ;
+舗装煉瓦 < hosourenga\ ;
+投影図法 < toueizuhou\ ;
+核文法 < kakubunpou\ ;
+売上高 < uriagedaka\ ;
+深成岩 < shinseigan\ ;
+胸三寸 < munesanzun\ ;
+得意客 < tokuikyaku\ ;
+徴兵制 < chouheisei\ ;
+端近 < hashidjika\ ;
+鎖鎌 < kusarigama\ ;
+性本能 < seihon''nou\ ;
+滅裂 < metsuretsu\ ;
+休診日 < kyuushinbi\ ;
+執金鋼 < shikkongou\ ;
+総状花序 < soujoukajo\ ;
+竜皮巻 < ryuuhimaki\ ;
+回帰熱 < kaikinetsu\ ;
+祝賀会 < shukugakai\ ;
+生活費 < seikatsuhi\ ;
+法務局 < houmukyoku\ ;
+中学校 < chuugakkou\ ;
+月見草 < tsukimisou\ ;
+清浄無垢 < seijoumuku\ ;
+通俗化 < tsuuzokuka\ ;
+直交性 < chokkousei\ ;
+稲熱病 < imochibyou\ ;
+三面記事 < sanmenkiji\ ;
+高踏的 < koutouteki\ ;
+給料日 < kyuuryoubi\ ;
+才気縦横 < saikijuuou\ ;
+万年青 < man''nensei\ ;
+小前提 < shouzentei\ ;
+六三制 < rokusansei\ ;
+造林学 < zouringaku\ ;
+本位貨幣 < hon''ikahei\ ;
+全責任 < zensekinin\ ;
+馬鹿丁寧 < bakateinei\ ;
+照明弾 < shoumeidan\ ;
+愛国心 < aikokushin\ ;
+潮煙 < shiokemuri\ ;
+石鹸皿 < sekkenzara\ ;
+予定説 < yoteisetsu\ ;
+筆舌 < hitsuzetsu\ ;
+日葡辞書 < nippojisho\ ;
+脳硬塞 < noukousoku\ ;
+総大将 < soudaishou\ ;
+始末屋 < shimatsuya\ ;
+国有林 < kokuyuurin\ ;
+薬学部 < yakugakubu\ ;
+批判力 < hihanryoku\ ;
+等身大 < toushindai\ ;
+位相空間 < isoukuukan\ ;
+海事衛星 < kaijieisei\ ;
+空気機械 < kuukikikai\ ;
+総攻撃 < soukougeki\ ;
+高山病 < kouzanbyou\ ;
+五月祭 < gogatsusai\ ;
+共同井戸 < kyoudouido\ ;
+軍楽隊 < gungakutai\ ;
+三重唱 < sanjuushou\ ;
+南京豆 < nankinmame\ ;
+曲馬師 < kyokubashi\ ;
+副司令 < fukushirei\ ;
+錦鯉 < nishikigoi\ ;
+昼日中 < hiruhinaka\ ;
+合理主義 < gourishugi\ ;
+常識家 < joushikika\ ;
+滑脱 < katsudatsu\ ;
+天津御姉 < amatsumiko\ ;
+天手古舞 < tentekomai\ ;
+言葉尻 < kotobajiri\ ;
+肺浸潤 < haishinjun\ ;
+夜光時計 < yakoudokei\ ;
+耕作者 < kousakusha\ ;
+同心円 < doushin''en\ ;
+致死量 < chishiryou\ ;
+弁証論 < benshouron\ ;
+新登場 < shintoujou\ ;
+自転車屋 < jitenshaya\ ;
+強力粉 < kyourikiko\ ;
+予備室 < yobishitsu\ ;
+店頭株 < tentoukabu\ ;
+発射薬 < hasshayaku\ ;
+自家用車 < jikayousha\ ;
+単位制度 < tan''iseido\ ;
+化粧水 < keshoumizu\ ;
+十進法 < jisshinhou\ ;
+文字情報 < mojijouhou\ ;
+文筆家 < bunpitsuka\ ;
+従量税 < juuryouzei\ ;
+瓦屋根 < kawarayane\ ;
+関係調 < kankeichou\ ;
+唯心論 < yuishinron\ ;
+励振管 < reishinkan\ ;
+全日空 < zen''nikkuu\ ;
+二枚腰 < nimaigoshi\ ;
+流刑地 < ryuukeichi\ ;
+洪積世 < kousekisei\ ;
+震災地 < shinsaichi\ ;
+筆筒 < fudedzutsu\ ;
+規制解除 < kiseikaijo\ ;
+描出 < byoushutsu\ ;
+眼軟膏 < gan''nankou\ ;
+水晶体 < suishoutai\ ;
+点滅器 < tenmetsuki\ ;
+兄弟分 < kyoudaibun\ ;
+金門橋 < kinmonkyou\ ;
+景勝地 < keishouchi\ ;
+内接円 < naisetsuen\ ;
+生活苦 < seikatsuku\ ;
+東照宮 < toushouguu\ ;
+受難曲 < junankyoku\ ;
+対流圏 < tairyuuken\ ;
+下水工事 < gesuikouji\ ;
+危険物 < kikenbutsu\ ;
+研修生 < kenshuusei\ ;
+近親婚 < kinshinkon\ ;
+交読文 < koudokubun\ ;
+脳卒中 < nousotchuu\ ;
+焼死体 < shoushitai\ ;
+一神教 < isshinkyou\ ;
+派出所 < hashutsujo\ ;
+振動計 < shindoukei\ ;
+屈折語 < kussetsugo\ ;
+曲馬団 < kyokubadan\ ;
+注射液 < chuushaeki\ ;
+合意情死 < gouijoushi\ ;
+福禄寿 < fukurokuju\ ;
+紙吹雪 < kamifubuki\ ;
+仲介者 < chuukaisha\ ;
+集配人 < shuuhainin\ ;
+定礎式 < teisoshiki\ ;
+裁判長 < saibanchou\ ;
+電話局 < denwakyoku\ ;
+俸祿米 < hourokumai\ ;
+花吹雪 < hanafubuki\ ;
+土壁 < tsuchikabe\ ;
+兵糧米 < hyouroumai\ ;
+角細工 < tsunozaiku\ ;
+輸送力 < yusouryoku\ ;
+林野庁 < rin''yachou\ ;
+支配的 < shihaiteki\ ;
+太鼓橋 < taikobashi\ ;
+箔力粉 < hakurikiko\ ;
+獅子鼻 < shishibana\ ;
+連隊長 < rentaichou\ ;
+端末機 < tanmatsuki\ ;
+吹奏楽 < suisougaku\ ;
+熱射病 < nesshabyou\ ;
+擅 < hoshiimama\ ;
+武装平和 < busouheiwa\ ;
+徳用瓶 < tokuyoubin\ ;
+手続 < tetsudzuki\ ;
+天津神 < amatsukami\ ;
+降水量 < kousuiryou\ ;
+出金者 < shukkinsha\ ;
+典型的 < tenkeiteki\ ;
+螢石 < hotaruishi\ ;
+中枢性 < chuusuusei\ ;
+迷彩服 < meisaifuku\ ;
+住宅難 < juutakunan\ ;
+付帯事項 < futaijikou\ ;
+化粧料 < keshouryou\ ;
+心理学 < shinrigaku\ ;
+芳名録 < houmeiroku\ ;
+動力炉 < douryokuro\ ;
+小児病 < shounibyou\ ;
+少年団 < shounendan\ ;
+全面的 < zenmenteki\ ;
+行方不明 < yukuefumei\ ;
+小市民 < shoushimin\ ;
+蜜蜂 < mitsubachi\ ;
+天気予報 < tenkiyohou\ ;
+不平不満 < fuheifuman\ ;
+被保険者 < hihokensha\ ;
+副次的 < fukujiteki\ ;
+椎間板 < tsuikanban\ ;
+親子電話 < oyakodenwa\ ;
+課税率 < kazeiritsu\ ;
+郵政省 < yuuseishou\ ;
+夏場所 < natsubasho\ ;
+多情多恨 < tajoutakon\ ;
+箱柳 < hakoyanagi\ ;
+経営破綻 < keieihatan\ ;
+厚化粧 < atsugeshou\ ;
+賛助会員 < sanjokaiin\ ;
+二人組 < futarigumi\ ;
+致命傷 < chimeishou\ ;
+箱枕 < hakomakura\ ;
+副都心 < fukutoshin\ ;
+米俵 < komedawara\ ;
+発案者 < hatsuansha\ ;
+強力犯 < gourikihan\ ;
+下部構造 < kabukouzou\ ;
+洗濯代 < sentakudai\ ;
+遊泳術 < yuueijutsu\ ;
+毎土曜日 < maidoyoubi\ ;
+製陶業 < seitougyou\ ;
+球座標 < kyuuzahyou\ ;
+沈丁花 < chinchouge\ ;
+蜂蜜 < hachimitsu\ ;
+予算措置 < yosansochi\ ;
+葡萄牙 < porutogaru\ ;
+不穏分子 < fuonbunshi\ ;
+教会堂 < kyoukaidou\ ;
+支店長 < shitenchou\ ;
+喜怒哀楽 < kidoairaku\ ;
+御年玉 < otoshidama\ ;
+西洋葱 < seiyounegi\ ;
+瓜実顔 < urizanegao\ ;
+真空帯 < shinkuutai\ ;
+竹筒 < takedzutsu\ ;
+追送検 < tsuisouken\ ;
+未決監 < miketsukan\ ;
+漢和辞典 < kanwajiten\ ;
+普通株 < futsuukabu\ ;
+友誼国家 < yuugikokka\ ;
+相互保険 < sougohoken\ ;
+商店主 < shoutenshu\ ;
+採石場 < saisekijou\ ;
+牢名主 < rounanushi\ ;
+累進税 < ruishinzei\ ;
+大競争 < daikyousou\ ;
+森林法 < shinrinhou\ ;
+同郷人 < doukyoujin\ ;
+派出婦 < hashutsufu\ ;
+事大主義 < jidaishugi\ ;
+内国債 < naikokusai\ ;
+五輪会議 < gorinkaigi\ ;
+支度金 < shitakukin\ ;
+端端 < hashibashi\ ;
+再浸礼 < saishinrei\ ;
+国有地 < kokuyuuchi\ ;
+親展書 < shintensho\ ;
+語形変化 < gokeihenka\ ;
+廉恥心 < renchishin\ ;
+皆既食 < kaikishoku\ ;
+非戦闘員 < hisentouin\ ;
+転居先 < tenkyosaki\ ;
+連絡駅 < renrakueki\ ;
+電話口 < denwaguchi\ ;
+無念無想 < munenmusou\ ;
+精勤賞 < seikinshou\ ;
+健忘症 < kenboushou\ ;
+蝶番 < choutsugai\ ;
+演算手順 < enzantejun\ ;
+教会史 < kyoukaishi\ ;
+少年会 < shounenkai\ ;
+贋手紙 < nisetegami\ ;
+出征軍 < shusseigun\ ;
+武断主義 < budanshugi\ ;
+計画者 < keikakusha\ ;
+散文的 < sanbunteki\ ;
+世話人間 < sewaningen\ ;
+幾何平均 < kikaheikin\ ;
+拠所 < yoridokoro\ ;
+人工降雨 < jinkoukouu\ ;
+黒鼠 < kuronezumi\ ;
+友好的 < yuukouteki\ ;
+自問自答 < jimonjitou\ ;
+召喚状 < shoukanjou\ ;
+認証者 < ninshousha\ ;
+年産額 < nensangaku\ ;
+換算表 < kanzanhyou\ ;
+沖縄県 < okinawaken\ ;
+救世軍 < kyuuseigun\ ;
+満足感 < manzokukan\ ;
+奉公先 < houkousaki\ ;
+電報料 < denpouryou\ ;
+荒事師 < aragotoshi\ ;
+桃源郷 < tougenkyou\ ;
+蓮月尼 < rengetsuni\ ;
+皇紀年度 < koukinendo\ ;
+羽斑蚊 < hamadaraka\ ;
+朴念仁 < bokunenjin\ ;
+子宮癌 < shikyuugan\ ;
+表口 < omoteguchi\ ;
+磁力計 < jiryokukei\ ;
+根粒菌 < konryuukin\ ;
+縦旋盤 < tatesenban\ ;
+市役所 < shiyakusho\ ;
+検流計 < kenryuukei\ ;
+即売会 < sokubaikai\ ;
+延人員 < nobejin''in\ ;
+口腔外科 < koukougeka\ ;
+調合剤 < chougouzai\ ;
+要確認 < youkakunin\ ;
+常緑樹 < jouryokuju\ ;
+竈神 < kamadogami\ ;
+選球眼 < senkyuugan\ ;
+石合戦 < ishigassen\ ;
+封建的 < houkenteki\ ;
+駐在所 < chuuzaisho\ ;
+世帯主 < setainushi\ ;
+平常心 < heijoushin\ ;
+黒鮪 < kuromaguro\ ;
+脳性麻痺 < nouseimahi\ ;
+五十音順 < gojuuonjun\ ;
+豆台風 < mametaifuu\ ;
+演算精度 < enzanseido\ ;
+鉱山業 < kouzangyou\ ;
+十字架状 < juujikajou\ ;
+表出 < hyoushutsu\ ;
+構文木 < koubunmoku\ ;
+参謀長 < sanbouchou\ ;
+不老不死 < furoufushi\ ;
+世界主義 < sekaishugi\ ;
+写真館 < shashinkan\ ;
+戦時色 < senjishoku\ ;
+螺鈿細工 < radenzaiku\ ;
+記載事項 < kisaijikou\ ;
+住宅街 < juutakugai\ ;
+頓珍漢 < tonchinkan\ ;
+弱酸性 < jakusansei\ ;
+中仕切 < nakajikiri\ ;
+炭素繊維 < tansosen''i\ ;
+唐衣 < karakoromo\ ;
+初舞台 < hatsubutai\ ;
+写真顔 < shashingao\ ;
+無線電話 < musendenwa\ ;
+南京玉 < nankindama\ ;
+船籍港 < sensekikou\ ;
+燐灰石 < rinkaiseki\ ;
+一年間 < ichinenkan\ ;
+非接触 < hisesshoku\ ;
+持続的 < jizokuteki\ ;
+温情主義 < onjoushugi\ ;
+営業中 < eigyouchuu\ ;
+超過額 < choukagaku\ ;
+預貸率 < yotairitsu\ ;
+代用肉 < daiyouniku\ ;
+個人経営 < kojinkeiei\ ;
+時系列 < jikeiretsu\ ;
+筆旁 < fudezukuri\ ;
+奔放不羈 < honpoufuki\ ;
+子供服 < kodomofuku\ ;
+警視庁 < keishichou\ ;
+免疫性 < men''ekisei\ ;
+系統的 < keitouteki\ ;
+軍用金 < gun''youkin\ ;
+荒仕事 < arashigoto\ ;
+登山客 < tozankyaku\ ;
+低賃金 < teichingin\ ;
+侵害者 < shingaisha\ ;
+売上票 < uriagepyou\ ;
+鉄器時代 < tekkijidai\ ;
+放送劇 < housougeki\ ;
+日程表 < nitteihyou\ ;
+副葬品 < fukusouhin\ ;
+齣落 < komaotoshi\ ;
+挿入文 < sounyuubun\ ;
+初学者 < shogakusha\ ;
+教習所 < kyoushuujo\ ;
+入場門 < nyuujoumon\ ;
+官庁街 < kanchougai\ ;
+物価騰貴 < bukkatouki\ ;
+規則的 < kisokuteki\ ;
+小冊子 < shousasshi\ ;
+輻射線 < fukushasen\ ;
+倩 < tsuratsura\ ;
+十進制 < jisshinsei\ ;
+複製品 < fukuseihin\ ;
+森林帯 < shinrintai\ ;
+結晶系 < kesshoukei\ ;
+無秩序 < muchitsujo\ ;
+日本舞踊 < nihonbuyou\ ;
+聾唖学校 < rouagakkou\ ;
+錨綱 < ikaridzuna\ ;
+主観的 < shukanteki\ ;
+破壊力 < hakairyoku\ ;
+三毛作 < sanmousaku\ ;
+桧皮葺 < hiwadabuki\ ;
+力織機 < rikishokki\ ;
+六面体 < rokumentai\ ;
+現代英語 < gendaieigo\ ;
+白人種 < hakujinshu\ ;
+汎神論 < hanshinron\ ;
+仮定款 < kariteikan\ ;
+納税額 < nouzeigaku\ ;
+諸外国 < shogaikoku\ ;
+外接円 < gaisetsuen\ ;
+十二使徒 < juunishito\ ;
+製紙業 < seishigyou\ ;
+鉛直線 < enchokusen\ ;
+心電計 < shindenkei\ ;
+福利表 < fukurihyou\ ;
+筒形 < tsutsugata\ ;
+微生物 < biseibutsu\ ;
+宝石店 < housekiten\ ;
+創業者 < sougyousha\ ;
+日本庭園 < nihonteien\ ;
+革製品 < kawaseihin\ ;
+平年作 < heinensaku\ ;
+深緑 < fukamidori\ ;
+遺伝暗号 < iden''angou\ ;
+猿芝居 < sarushibai\ ;
+場外株 < jougaikabu\ ;
+鼻薬 < hanagusuri\ ;
+弁証法 < benshouhou\ ;
+協定書 < kyouteisho\ ;
+軍事輸送 < gunjiyusou\ ;
+五旬節 < gojunsetsu\ ;
+伴性遺伝 < hanseiiden\ ;
+所柄 < tokorogara\ ;
+初任給 < shoninkyuu\ ;
+陸曹等 < rikusoutou\ ;
+経営参加 < keieisanka\ ;
+好成績 < kouseiseki\ ;
+通有性 < tsuuyuusei\ ;
+聴導犬 < choudouken\ ;
+予備選挙 < yobisenkyo\ ;
+御高祖頭巾 < okosozukin\ ;
+予備艦隊 < yobikantai\ ;
+磁力線 < jiryokusen\ ;
+離婚率 < rikonritsu\ ;
+硝酸塩 < shousan''en\ ;
+予備選手 < yobisenshu\ ;
+再確認 < saikakunin\ ;
+発案権 < hatsuanken\ ;
+酪製品 < rakuseihin\ ;
+土性骨 < doshoubone\ ;
+避妊薬 < hinin''yaku\ ;
+不倶戴天 < fugutaiten\ ;
+持主 < mochinushi\ ;
+発生学 < hasseigaku\ ;
+人種的 < jinshuteki\ ;
+磁石盤 < jishakuban\ ;
+大蔵経 < daizoukyou\ ;
+河原鶸 < kawarahiwa\ ;
+拙劣 < setsuretsu\ ;
+留置場 < ryuuchijou\ ;
+通風孔 < tsuufuukou\ ;
+要求者 < youkyuusha\ ;
+知恵袋 < chiebukuro\ ;
+紙鉄砲 < kamideppou\ ;
+初飛行 < hatsuhikou\ ;
+登山口 < tozanguchi\ ;
+貯水量 < chosuiryou\ ;
+社会鍋 < shakainabe\ ;
+平和部隊 < heiwabutai\ ;
+殊勲賞 < shukunshou\ ;
+運動靴 < undougutsu\ ;
+交際国 < kousaikoku\ ;
+八文字 < hachimonji\ ;
+裁判沙汰 < saibanzata\ ;
+開発部 < kaihatsubu\ ;
+調印国 < chouinkoku\ ;
+相続税 < souzokuzei\ ;
+蝋人形 < rouningyou\ ;
+人名録 < jinmeiroku\ ;
+営利法人 < eirihoujin\ ;
+落第生 < rakudaisei\ ;
+凝灰岩 < gyoukaigan\ ;
+利付債 < ritsukisai\ ;
+議会政治 < gikaiseiji\ ;
+雨天順延 < utenjun''en\ ;
+体腔壁 < taikouheki\ ;
+指掌紋 < shishoumon\ ;
+付帯費用 < futaihiyou\ ;
+奇跡的 < kisekiteki\ ;
+代議員団 < daigiindan\ ;
+蛋白源 < tanpakugen\ ;
+断末魔 < danmatsuma\ ;
+詳伝社 < shoudensha\ ;
+葬儀式 < sougishiki\ ;
+損害額 < songaigaku\ ;
+鉄鋼業 < tekkougyou\ ;
+暗紫色 < anshishoku\ ;
+先任順 < sen''ninjun\ ;
+好戦的 < kousenteki\ ;
+防長官 < bouchoukan\ ;
+水圧計 < suiatsukei\ ;
+外国勢 < gaikokuzei\ ;
+韓国人 < kankokujin\ ;
+敢闘賞 < kantoushou\ ;
+流質 < ryuushichi\ ;
+機内食 < kinaishoku\ ;
+裏番組 < urabangumi\ ;
+国防論 < kokubouron\ ;
+二重課税 < nijuukazei\ ;
+扶養控除 < fuyoukoujo\ ;
+国際線 < kokusaisen\ ;
+衛星都市 < eiseitoshi\ ;
+電気回路 < denkikairo\ ;
+貸金庫 < kashikinko\ ;
+速記術 < sokkijutsu\ ;
+国言葉 < kunikotoba\ ;
+抽出 < chuushutsu\ ;
+匐行疹 < fukkoushin\ ;
+町工場 < machikouba\ ;
+地下二階 < chikanikai\ ;
+至急便 < shikyuubin\ ;
+宝冠章 < houkanshou\ ;
+若旦那 < wakadan''na\ ;
+挑戦者 < chousensha\ ;
+鉄鉱石 < tekkouseki\ ;
+横隔膜 < oukakumaku\ ;
+預金口座 < yokinkouza\ ;
+同業者 < dougyousha\ ;
+活用語 < katsuyougo\ ;
+深呼吸 < shinkokyuu\ ;
+三番鶏 < sanbandori\ ;
+判任官 < han''ninkan\ ;
+外国債 < gaikokusai\ ;
+連絡船 < renrakusen\ ;
+落第点 < rakudaiten\ ;
+進行相 < shinkousou\ ;
+色恋沙汰 < irokoizata\ ;
+決定的 < ketteiteki\ ;
+肉料理 < nikuryouri\ ;
+文法的 < bunpouteki\ ;
+国文法 < kokubunpou\ ;
+超弩級 < choudokyuu\ ;
+大蔵省 < ookurashou\ ;
+感情的 < kanjouteki\ ;
+乗合船 < noriaibune\ ;
+徳用品 < tokuyouhin\ ;
+燃料棒 < nenryoubou\ ;
+二日酔 < futsukayoi\ ;
+神経系 < shinkeikei\ ;
+仮議長 < karigichou\ ;
+貨幣価値 < kaheikachi\ ;
+独断論 < dokudanron\ ;
+外国人 < gaikokujin\ ;
+珍糞漢 < chinpunkan\ ;
+振動板 < shindouban\ ;
+残務整理 < zanmuseiri\ ;
+主教冠 < shukyoukan\ ;
+正教師 < seikyoushi\ ;
+細菌学 < saikingaku\ ;
+蜜月 < mitsugetsu\ ;
+耕作地 < kousakuchi\ ;
+改進党 < kaishintou\ ;
+三分搗 < sanbutsuki\ ;
+休閑地 < kyuukanchi\ ;
+軍用艦 < gun''youkan\ ;
+新聞紙 < shinbunshi\ ;
+輻射点 < fukushaten\ ;
+公営保険 < koueihoken\ ;
+世俗的 < sezokuteki\ ;
+重圧感 < juuatsukan\ ;
+豆鉄砲 < mamedeppou\ ;
+優秀品 < yuushuuhin\ ;
+空涙 < soranamida\ ;
+金融界 < kin''yuukai\ ;
+傍聴券 < bouchouken\ ;
+貯金箱 < chokinbako\ ;
+国境線 < kokkyousen\ ;
+譲渡担保 < joutotanpo\ ;
+蚕糸業 < sanshigyou\ ;
+一年草 < ichinensou\ ;
+高密度 < koumitsudo\ ;
+免疫体 < men''ekitai\ ;
+磁気嵐 < jikiarashi\ ;
+振動数 < shindousuu\ ;
+大礼服 < taireifuku\ ;
+改良種 < kairyoushu\ ;
+北国人 < hokkokujin\ ;
+牢役人 < rouyakunin\ ;
+渋渋 < shibushibu\ ;
+内祝言 < naishuugen\ ;
+一家団欒 < ikkadanran\ ;
+代議員会 < daigiinkai\ ;
+半身像 < hanshinzou\ ;
+大黒天 < daikokuten\ ;
+福袋 < fukubukuro\ ;
+補正予算 < hoseiyosan\ ;
+不分割 < fubunkatsu\ ;
+西北西 < seihokusei\ ;
+過剰防衛 < kajoubouei\ ;
+筒先 < tsutsusaki\ ;
+筆力 < hitsuryoku\ ;
+怒髪天 < dohatsuten\ ;
+我心 < wagakokoro\ ;
+予備座席 < yobizaseki\ ;
+反革命 < hankakumei\ ;
+衛生基準 < eiseikijun\ ;
+新聞社 < shinbunsha\ ;
+一機軸 < ichikijiku\ ;
+保護団体 < hogodantai\ ;
+集魚灯 < shuugyotou\ ;
+雪見酒 < yukimizake\ ;
+儀装馬車 < gisoubasha\ ;
+坊主頭 < bouzuatama\ ;
+先験的 < senkenteki\ ;
+闇給与 < yamikyuuyo\ ;
+時事問題 < jijimondai\ ;
+傍聴人 < bouchounin\ ;
+事実上 < jijitsujou\ ;
+義侠心 < gikyoushin\ ;
+用水堀 < yousuibori\ ;
+黒苺 < kuroichigo\ ;
+仮普請 < karibushin\ ;
+占領地 < senryouchi\ ;
+寝装品 < shinsouhin\ ;
+町内会 < chounaikai\ ;
+同盟国 < doumeikoku\ ;
+発育期 < hatsuikuki\ ;
+誓約書 < seiyakusho\ ;
+発展中 < hattenchuu\ ;
+茶番的 < chabanteki\ ;
+特産品 < tokusanhin\ ;
+夫婦喧嘩 < fuufugenka\ ;
+製粉業 < seifungyou\ ;
+消去法 < shoukyohou\ ;
+肛門学 < koumongaku\ ;
+秩禄 < chitsuroku\ ;
+大司教 < daishikyou\ ;
+妄想症 < mousoushou\ ;
+御用達 < goyoudatsu\ ;
+展示物 < tenjibutsu\ ;
+自殺者 < jisatsusha\ ;
+作曲家 < sakkyokuka\ ;
+公教会 < koukyoukai\ ;
+又隣 < matadonari\ ;
+計画性 < keikakusei\ ;
+切迫感 < seppakukan\ ;
+枢密院 < suumitsuin\ ;
+四六判 < shirokuban\ ;
+追体験 < tsuitaiken\ ;
+入場者 < nyuujousha\ ;
+半病人 < hanbyounin\ ;
+金鋏 < kanabasami\ ;
+断固抗議 < dankokougi\ ;
+捜索隊 < sousakutai\ ;
+友好国 < yuukoukoku\ ;
+殿上人 < tenjoubito\ ;
+無水物 < musuibutsu\ ;
+健康的 < kenkouteki\ ;
+新体操 < shintaisou\ ;
+懐手 < futokorode\ ;
+空中線 < kuuchuusen\ ;
+田舎道 < inakamichi\ ;
+波乃花 < naminohana\ ;
+偶像教 < guuzoukyou\ ;
+神話学 < shinwagaku\ ;
+相続権 < souzokuken\ ;
+性教育 < seikyouiku\ ;
+前哨線 < zenshousen\ ;
+五輪聖火 < gorinseika\ ;
+独奏者 < dokusousha\ ;
+自分勝手 < jibunkatte\ ;
+赤血球 < sekkekkyuu\ ;
+天台宗 < tendaishuu\ ;
+軍楽手 < gungakushu\ ;
+軍需景気 < gunjukeiki\ ;
+軍艦巻 < gunkanmaki\ ;
+黒緑 < kuromidori\ ;
+暗褐色 < ankasshoku\ ;
+逆作用 < gyakusayou\ ;
+挑戦状 < chousenjou\ ;
+検量線 < kenryousen\ ;
+網杓子 < amijakushi\ ;
+再注文 < saichuumon\ ;
+内反足 < naihansoku\ ;
+年少者 < nenshousha\ ;
+新生代 < shinseidai\ ;
+保管物 < hokanbutsu\ ;
+基底部門 < kiteibumon\ ;
+優勝者 < yuushousha\ ;
+改良点 < kairyouten\ ;
+丸太小屋 < marutagoya\ ;
+慄烈 < ritsuretsu\ ;
+給排水 < kyuuhaisui\ ;
+天眼鏡 < tengankyou\ ;
+三連勝 < sanrenshou\ ;
+不発弾 < fuhatsudan\ ;
+半官的 < hankanteki\ ;
+振動子 < shindoushi\ ;
+鋸歯 < nokogiriba\ ;
+活発化 < kappatsuka\ ;
+予想利益 < yosourieki\ ;
+収集家 < shuushuuka\ ;
+酸化鉄 < sankatetsu\ ;
+新人王 < shinjin''ou\ ;
+延日数 < nobenissuu\ ;
+奉献頌 < houkenshou\ ;
+貸店舗 < kashitenpo\ ;
+五音音階 < goon''onkai\ ;
+二人共 < futaritomo\ ;
+収斂剤 < shuurenzai\ ;
+国際法 < kokusaihou\ ;
+高学年 < kougakunen\ ;
+核災害 < kakusaigai\ ;
+伽草子 < togizoushi\ ;
+煽情的 < senjouteki\ ;
+認証官 < ninshoukan\ ;
+養蚕業 < yousangyou\ ;
+火山脈 < kazanmyaku\ ;
+菜種殻 < natanegara\ ;
+避暑客 < hishokyaku\ ;
+火気厳禁 < kakigenkin\ ;
+書評欄 < shohyouran\ ;
+入場税 < nyuujouzei\ ;
+溌剌 < hatsuratsu\ ;
+試作車 < shisakusha\ ;
+獄中記 < gokuchuuki\ ;
+乳兄弟 < chikyoudai\ ;
+十字架像 < juujikazou\ ;
+二七日 < futananoka\ ;
+正教会 < seikyoukai\ ;
+先生方 < senseigata\ ;
+草雲雀 < kusahibari\ ;
+侍従職 < jijuushoku\ ;
+処理過程 < shorikatei\ ;
+地形学 < chikeigaku\ ;
+一定不変 < itteifuhen\ ;
+月下美人 < gekkabijin\ ;
+一直線 < itchokusen\ ;
+天眼通 < tengantsuu\ ;
+仲買人 < nakagainin\ ;
+薬理学 < yakurigaku\ ;
+瀬戸内海 < setonaikai\ ;
+老政治家 < rouseijika\ ;
+国文専 < kokubunsen\ ;
+一年生 < ichinensei\ ;
+定式化 < teishikika\ ;
+商業化 < shougyouka\ ;
+一輪車 < ichirinsha\ ;
+功利主義 < kourishugi\ ;
+滲炭鋼 < shintankou\ ;
+軍用犬 < gun''youken\ ;
+六角堂 < rokkakudou\ ;
+床暖房 < yukadanbou\ ;
+筆不精 < fudebushou\ ;
+海燕 < umitsubame\ ;
+公証人 < koushounin\ ;
+規制緩和 < kiseikanwa\ ;
+牧草地 < bokusouchi\ ;
+属性値 < zokuseichi\ ;
+解毒薬 < gedokuyaku\ ;
+満期日 < mankijitsu\ ;
+名作選 < meisakusen\ ;
+如是我聞 < nyozegamon\ ;
+明治時代 < meijijidai\ ;
+商用文 < shouyoubun\ ;
+同化作用 < doukasayou\ ;
+国語学 < kokugogaku\ ;
+可及的 < kakyuuteki\ ;
+別途預金 < bettoyokin\ ;
+金袋 < kanabukuro\ ;
+写真班 < shashinhan\ ;
+油虫 < aburamushi\ ;
+一元論 < ichigenron\ ;
+下種根性 < gesukonjou\ ;
+調剤師 < chouzaishi\ ;
+単三形 < tansangata\ ;
+甲冑師 < katchuushi\ ;
+先任者 < sen''ninsha\ ;
+曲線美 < kyokusenbi\ ;
+銀狐 < gingitsune\ ;
+南風 < minamikaze\ ;
+公約数 < kouyakusuu\ ;
+熱狂者 < nekkyousha\ ;
+水紋学 < suimongaku\ ;
+人種学 < jinshugaku\ ;
+残忍性 < zan''ninsei\ ;
+援助交際 < enjokousai\ ;
+虐殺 < gyakusatsu\ ;
+相関的 < soukanteki\ ;
+写真版 < shashinban\ ;
+生息地 < seisokuchi\ ;
+国会議員 < kokkaigiin\ ;
+土地利用 < tochiriyou\ ;
+知性的 < chiseiteki\ ;
+栄枯盛衰 < eikoseisui\ ;
+未発達 < mihattatsu\ ;
+開幕戦 < kaimakusen\ ;
+相互作用 < sougosayou\ ;
+水鏡 < mizukagami\ ;
+舞台衣装 < butaiishou\ ;
+後配株 < kouhaikabu\ ;
+停泊地 < teihakuchi\ ;
+罹患率 < rikanritsu\ ;
+進行形 < shinkoukei\ ;
+道徳上 < doutokujou\ ;
+社会的 < shakaiteki\ ;
+震源地 < shingenchi\ ;
+星雲説 < seiunsetsu\ ;
+河原者 < kawaramono\ ;
+溺死者 < dekishisha\ ;
+海商法 < kaishouhou\ ;
+理髪店 < rihatsuten\ ;
+革命軍 < kakumeigun\ ;
+活物 < katsubutsu\ ;
+卵酒 < tamagozake\ ;
+合議制度 < gougiseido\ ;
+書誌学 < shoshigaku\ ;
+二酸化硫黄 < nisankaiou\ ;
+理髪師 < rihatsushi\ ;
+世俗心 < sezokushin\ ;
+適任者 < tekininsha\ ;
+変圧所 < hen''atsujo\ ;
+漢民族 < kanminzoku\ ;
+適用性 < tekiyousei\ ;
+都鳥 < miyakodori\ ;
+決裂 < ketsuretsu\ ;
+薬箱 < kusuribako\ ;
+麦畑 < mugibatake\ ;
+雌雄異株 < shiyuuishu\ ;
+直談判 < jikadanpan\ ;
+背信者 < haishinsha\ ;
+筆耕料 < hikkouryou\ ;
+伝法肌 < denbouhada\ ;
+繊毛虫 < senmouchuu\ ;
+競売人 < kyoubainin\ ;
+作詞者 < sakushisha\ ;
+黒漆 < kokushitsu\ ;
+安死術 < anshijutsu\ ;
+喉仏 < nodobotoke\ ;
+反射誤差 < hanshagosa\ ;
+塩素酸塩 < ensosan''en\ ;
+機動力 < kidouryoku\ ;
+絶対誤差 < zettaigosa\ ;
+最終回 < saishuukai\ ;
+主要国 < shuyoukoku\ ;
+反陽子 < han''youshi\ ;
+内向的 < naikouteki\ ;
+防潮堤 < bouchoutei\ ;
+物損事故 < bussonjiko\ ;
+液晶盤 < ekishouban\ ;
+神経戦 < shinkeisen\ ;
+黄八丈 < kihachijou\ ;
+表二階 < omotenikai\ ;
+試験的 < shikenteki\ ;
+屠殺場 < tosatsujou\ ;
+旅支度 < tabijitaku\ ;
+全部保険 < zenbuhoken\ ;
+金聾 < kanatsunbo\ ;
+書簡集 < shokanshuu\ ;
+営林局 < eirinkyoku\ ;
+無重力 < mujuuryoku\ ;
+遺失者 < ishitsusha\ ;
+悪巫山戯 < warufuzake\ ;
+整形外科 < seikeigeka\ ;
+生得権 < seitokuken\ ;
+米騒動 < komesoudou\ ;
+新体制 < shintaisei\ ;
+血清学 < kesseigaku\ ;
+部長閲 < buchouetsu\ ;
+夜想曲 < yasoukyoku\ ;
+武家政権 < bukeseiken\ ;
+概念的 < gainenteki\ ;
+空中権 < kuuchuuken\ ;
+二項分布 < nikoubunpu\ ;
+周遊券 < shuuyuuken\ ;
+創作者 < sousakusha\ ;
+含糖量 < gantouryou\ ;
+倹約家 < ken''yakuka\ ;
+出張所 < shutchoujo\ ;
+映画会社 < eigagaisha\ ;
+管理職 < kanrishoku\ ;
+鉄砲百合 < teppouyuri\ ;
+恐怖症 < kyoufushou\ ;
+政略家 < seiryakuka\ ;
+公衆網 < koushuumou\ ;
+入場権 < nyuujouken\ ;
+名誉会員 < meiyokaiin\ ;
+督戦隊 < tokusentai\ ;
+千羽鶴 < senbadzuru\ ;
+住宅地 < juutakuchi\ ;
+応募用紙 < ouboyoushi\ ;
+内惑星 < naiwakusei\ ;
+真正直 < mashoujiki\ ;
+季節風 < kisetsufuu\ ;
+低学年 < teigakunen\ ;
+学籍簿 < gakusekibo\ ;
+立体鏡 < rittaikyou\ ;
+二項式 < nikoushiki\ ;
+百日紅 < sarusuberi\ ;
+軍略家 < gunryakuka\ ;
+自浄作用 < jijousayou\ ;
+民譚集 < mindanshuu\ ;
+慰問袋 < imonbukuro\ ;
+消石灰 < shousekkai\ ;
+単一化 < tan''itsuka\ ;
+専用車 < sen''yousha\ ;
+仕舞物 < shimaimono\ ;
+大白鳥 < oohakuchou\ ;
+緩徐曲 < kanjokyoku\ ;
+刀剣商 < toukenshou\ ;
+伽芝居 < togishibai\ ;
+外貨預金 < gaikayokin\ ;
+気象庁 < kishouchou\ ;
+一円玉 < ichiendama\ ;
+恐怖映画 < kyoufueiga\ ;
+課税控除 < kazeikoujo\ ;
+巡洋艦 < jun''youkan\ ;
+必需品 < hitsujuhin\ ;
+不信用 < fushin''you\ ;
+測地線 < sokuchisen\ ;
+高木層 < koubokusou\ ;
+許容誤差 < kyoyougosa\ ;
+表層性 < hyousousei\ ;
+水薬 < mizugusuri\ ;
+出席簿 < shussekibo\ ;
+親王妃 < shin''nouhi\ ;
+配給系 < haikyuukei\ ;
+変圧器 < hen''atsuki\ ;
+実体鏡 < jittaikyou\ ;
+優勝杯 < yuushouhai\ ;
+適不適 < tekifuteki\ ;
+不定期刑 < futeikikei\ ;
+社交的 < shakouteki\ ;
+配給米 < haikyuumai\ ;
+書記局 < shokikyoku\ ;
+贈収賄 < zoushuuwai\ ;
+凸凹紙 < totsuoushi\ ;
+裁判人 < saiban''nin\ ;
+今道心 < imadoushin\ ;
+明治維新 < meijiishin\ ;
+紹介者 < shoukaisha\ ;
+言語機能 < gengokinou\ ;
+保税倉庫 < hozeisouko\ ;
+気象学 < kishougaku\ ;
+相続人 < souzokunin\ ;
+被告席 < hikokuseki\ ;
+乳脂肪 < nyuushibou\ ;
+農牧地 < noubokuchi\ ;
+医療機関 < iryoukikan\ ;
+悪戯子 < itazurakko\ ;
+射的場 < shatekijou\ ;
+泉熱 < izuminetsu\ ;
+法学者 < hougakusha\ ;
+全国紙 < zenkokushi\ ;
+救難船 < kyuunansen\ ;
+金融債 < kin''yuusai\ ;
+石井聰互 < ishiisougo\ ;
+軍事封鎖 < gunjifuusa\ ;
+上載圧 < jousaiatsu\ ;
+口喧嘩 < kuchigenka\ ;
+成人病 < seijinbyou\ ;
+花水木 < hanamizuki\ ;
+造園術 < zouenjutsu\ ;
+乳腺炎 < nyuusen''en\ ;
+位階勲等 < ikaikuntou\ ;
+浴室 < yokushitsu\ ;
+海流瓶 < kairyuubin\ ;
+分光学 < bunkougaku\ ;
+民主的 < minshuteki\ ;
+精白糖 < seihakutou\ ;
+無機質 < mukishitsu\ ;
+愛娘 < manamusume\ ;
+通話料 < tsuuwaryou\ ;
+耐火煉瓦 < taikarenga\ ;
+改良品 < kairyouhin\ ;
+精白米 < seihakumai\ ;
+快削鋼 < kaisakukou\ ;
+日向水 < hinatamizu\ ;
+古狸 < furudanuki\ ;
+陪審員 < baishin''in\ ;
+古今無類 < kokonmurui\ ;
+師団長 < shidanchou\ ;
+組職体 < soshokutai\ ;
+果実酒 < kajitsushu\ ;
+婿養子 < mukoyoushi\ ;
+写真師 < shashinshi\ ;
+電波管理 < denpakanri\ ;
+河烏 < kawagarasu\ ;
+下検査 < shitakensa\ ;
+優勝戦 < yuushousen\ ;
+私宛 < watashiate\ ;
+連続体 < renzokutai\ ;
+天刑病 < tenkeibyou\ ;
+民事事件 < minjijiken\ ;
+半翅目 < hanshimoku\ ;
+茶番劇 < chabangeki\ ;
+自然保護 < shizenhogo\ ;
+写真屋 < shashin''ya\ ;
+画像処理 < gazoushori\ ;
+良導体 < ryoudoutai\ ;
+救世主 < kyuuseishu\ ;
+未着手 < michakushu\ ;
+作詩法 < sakushihou\ ;
+真魚鰹 < managatsuo\ ;
+出張員 < shutchouin\ ;
+人力車 < jinrikisha\ ;
+種種雑多 < shujuzatta\ ;
+必罰 < hitsubatsu\ ;
+祝日 < shukujitsu\ ;
+国際人 < kokusaijin\ ;
+測長機 < sokuchouki\ ;
+小主観 < shoushukan\ ;
+映画俳優 < eigahaiyuu\ ;
+実践的 < jissenteki\ ;
+連結器 < renketsuki\ ;
+耐久性 < taikyuusei\ ;
+杉並木 < suginamiki\ ;
+終了後 < shuuryougo\ ;
+天道様 < tentousama\ ;
+吊橋 < tsuribashi\ ;
+撮影隊 < satsueitai\ ;
+花菖蒲 < hanashoubu\ ;
+検眼鏡 < kengankyou\ ;
+形許 < katabakari\ ;
+酸化物 < sankabutsu\ ;
+波枕 < namimakura\ ;
+小作料 < kosakuryou\ ;
+庶民的 < shominteki\ ;
+輪舞曲 < rinbukyoku\ ;
+磁気録音 < jikirokuon\ ;
+不協和音 < fukyouwaon\ ;
+凍結器 < touketsuki\ ;
+夏蜜柑 < natsumikan\ ;
+本位記号 < hon''ikigou\ ;
+等方的 < touhouteki\ ;
+衛生管理 < eiseikanri\ ;
+岩清水 < iwashimizu\ ;
+立案者 < ritsuansha\ ;
+相互主義 < sougoshugi\ ;
+著述家 < chojutsuka\ ;
+脳梅毒 < noubaidoku\ ;
+軍用品 < gun''youhin\ ;
+応募資金 < ouboshikin\ ;
+僕仲間 < bokunakama\ ;
+難視聴 < nanshichou\ ;
+復古主義 < fukkoshugi\ ;
+徳義心 < tokugishin\ ;
+近海物 < kinkaimono\ ;
+東洋通 < touyoutsuu\ ;
+次亜硫酸 < jiaryuusan\ ;
+平安時代 < heianjidai\ ;
+鉄砲玉 < teppoudama\ ;
+水秤 < mizubakari\ ;
+流失 < ryuushitsu\ ;
+価格表 < kakakuhyou\ ;
+調停者 < chouteisha\ ;
+歴史観 < rekishikan\ ;
+建築費 < kenchikuhi\ ;
+鉋屑 < kan''nakuzu\ ;
+人情劇 < ninjougeki\ ;
+菱餅 < hishimochi\ ;
+多神教 < tashinkyou\ ;
+情報機器 < jouhoukiki\ ;
+前哨地 < zenshouchi\ ;
+三位一体 < sanmiittai\ ;
+政務次官 < seimujikan\ ;
+吉日 < kichinichi\ ;
+一度丈 < ichidodake\ ;
+薬指 < kusuriyubi\ ;
+連絡会 < renrakukai\ ;
+一般職 < ippanshoku\ ;
+雌雄異体 < shiyuuitai\ ;
+社会学 < shakaigaku\ ;
+偵察機 < teisatsuki\ ;
+寝台車 < shindaisha\ ;
+年代物 < nendaimono\ ;
+両替人 < ryougaenin\ ;
+各方 < onoonogata\ ;
+武断政治 < budanseiji\ ;
+合格者 < goukakusha\ ;
+金槌 < kanadzuchi\ ;
+専用線 < sen''yousen\ ;
+帯域幅 < taiikihaba\ ;
+初一念 < shoichinen\ ;
+紹介状 < shoukaijou\ ;
+消毒器 < shoudokuki\ ;
+旦那衆 < dan''nashuu\ ;
+堅信礼 < kenshinrei\ ;
+官公庁 < kankouchou\ ;
+聴聞僧 < choumonsou\ ;
+太平楽 < taiheiraku\ ;
+両天秤 < ryoutenbin\ ;
+孔雀石 < kujakuseki\ ;
+創作権 < sousakuken\ ;
+色事師 < irogotoshi\ ;
+酸化炭素 < sankatanso\ ;
+水彩画家 < suisaigaka\ ;
+降魔術 < koumajutsu\ ;
+少資本 < shoushihon\ ;
+資産株 < shisankabu\ ;
+基礎代謝 < kisotaisha\ ;
+恐怖心 < kyoufushin\ ;
+実験的 < jikkenteki\ ;
+使徒達 < shitotachi\ ;
+前頭 < maegashira\ ;
+安酒場 < yasusakaba\ ;
+聴聞会 < choumonkai\ ;
+育児食 < ikujishoku\ ;
+男便所 < otokobenjo\ ;
+首実検 < kubijikken\ ;
+細胞膜 < saiboumaku\ ;
+名人肌 < meijinhada\ ;
+小学校 < shougakkou\ ;
+一杯機嫌 < ippaikigen\ ;
+旧藩主 < kyuuhanshu\ ;
+民有林 < min''yuurin\ ;
+赤鉄鉱 < sekitekkou\ ;
+本草学 < honzougaku\ ;
+修正者 < shuuseisha\ ;
+風速計 < fuusokukei\ ;
+道路輸送 < douroyusou\ ;
+潜在的 < senzaiteki\ ;
+変拍子 < henbyoushi\ ;
+旧思想 < kyuushisou\ ;
+亜熱帯林 < anettairin\ ;
+雑木林 < zoubokurin\ ;
+戦闘的 < sentouteki\ ;
+青息吐息 < aoikitoiki\ ;
+終電車 < shuudensha\ ;
+背美鯨 < semikujira\ ;
+慇懃無礼 < inginburei\ ;
+穴杓子 < anajakushi\ ;
+一年中 < ichinenjuu\ ;
+鉄砲水 < teppoumizu\ ;
+全国民 < zenkokumin\ ;
+人口学 < jinkougaku\ ;
+流出 < ryuushutsu\ ;
+活力 < katsuryoku\ ;
+直滑降 < chokkakkou\ ;
+糞真面目 < kusomajime\ ;
+上申書 < joushinsho\ ;
+卵焼 < tamagoyaki\ ;
+針千本 < harisenbon\ ;
+自主規制 < jishukisei\ ;
+三業地 < sangyouchi\ ;
+並大抵 < namitaitei\ ;
+白雲石 < hakuunseki\ ;
+水煙 < mizukemuri\ ;
+欠席者 < kessekisha\ ;
+引当金 < hikiatekin\ ;
+装飾音 < soushokuon\ ;
+視聴者 < shichousha\ ;
+乳臭児 < nyuushuuji\ ;
+手沢本 < shutakubon\ ;
+警戒心 < keikaishin\ ;
+弥生時代 < yayoijidai\ ;
+中国語 < chuugokugo\ ;
+入手難 < nyuushunan\ ;
+電流計 < denryuukei\ ;
+道道 < michimichi\ ;
+予備会談 < yobikaidan\ ;
+君主国 < kunshukoku\ ;
+音楽学 < ongakugaku\ ;
+錯字症 < sakujishou\ ;
+等位構造 < touikouzou\ ;
+大盤石 < daibanjaku\ ;
+分子量 < bunshiryou\ ;
+一番茶 < ichibancha\ ;
+他流試合 < taryuujiai\ ;
+安定操作 < anteisousa\ ;
+無償行為 < mushoukoui\ ;
+遅刻者 < chikokusha\ ;
+再発足 < saihossoku\ ;
+対蹠的 < taishoteki\ ;
+夏期学校 < kakigakkou\ ;
+槍術家 < soujutsuka\ ;
+歌謡曲 < kayoukyoku\ ;
+活人画 < katsujinga\ ;
+二言目 < futakotome\ ;
+原子量 < genshiryou\ ;
+強腰 < tsuyogoshi\ ;
+大幅物 < oohabamono\ ;
+独奏会 < dokusoukai\ ;
+初霜 < hatsushimo\ ;
+宇宙医学 < uchuuigaku\ ;
+名誉除隊 < meiyojotai\ ;
+五臓六腑 < gozouroppu\ ;
+右左 < migihidari\ ;
+脱臭剤 < dasshuuzai\ ;
+快速船 < kaisokusen\ ;
+生殖器 < seishokuki\ ;
+車中談 < shachuudan\ ;
+鎮静剤 < chinseizai\ ;
+合併症 < gappeishou\ ;
+懇親会 < konshinkai\ ;
+着雪 < chakusetsu\ ;
+必滅 < hitsumetsu\ ;
+牽牛星 < kengyuusei\ ;
+執行委員 < shikkouiin\ ;
+里心 < satogokoro\ ;
+四面楚歌 < shimensoka\ ;
+茶柄杓 < chabishaku\ ;
+有神論 < yuushinron\ ;
+命中数 < meichuusuu\ ;
+方解石 < houkaiseki\ ;
+売掛金 < urikakekin\ ;
+超巨星 < choukyosei\ ;
+立体的 < rittaiteki\ ;
+白昼夢 < hakuchuumu\ ;
+新記録 < shinkiroku\ ;
+保釈金 < hoshakukin\ ;
+反粒子 < hanryuushi\ ;
+下足料 < gesokuryou\ ;
+注文書 < chuumonsho\ ;
+威風堂堂 < ifuudoudou\ ;
+化合物 < kagoubutsu\ ;
+屋形船 < yakatabune\ ;
+軍事会議 < gunjikaigi\ ;
+跛行景気 < hakoukeiki\ ;
+運動力 < undouryoku\ ;
+銘銘皿 < meimeizara\ ;
+黒曜岩 < kokuyougan\ ;
+原作者 < gensakusha\ ;
+兵站学 < heitangaku\ ;
+細密画 < saimitsuga\ ;
+饂飩粉病 < udonkobyou\ ;
+一番線 < ichibansen\ ;
+半人前 < han''ninmae\ ;
+劇場街 < gekijougai\ ;
+天下一品 < tenkaippin\ ;
+決議権 < ketsugiken\ ;
+基地閉鎖 < kichiheisa\ ;
+葵祭 < aoimatsuri\ ;
+一槽式 < issoushiki\ ;
+宅急便 < takkyuubin\ ;
+油壷 < aburatsubo\ ;
+老人病 < roujinbyou\ ;
+筆記用具 < hikkiyougu\ ;
+蒸気機関 < joukikikan\ ;
+合格点 < goukakuten\ ;
+刻足 < kizamiashi\ ;
+試供品 < shikyouhin\ ;
+中堅手 < chuukenshu\ ;
+葛饅頭 < kuzumanjuu\ ;
+接客婦 < sekkyakufu\ ;
+活字本 < katsujihon\ ;
+問題劇 < mondaigeki\ ;
+磁気抵抗 < jikiteikou\ ;
+聴講生 < choukousei\ ;
+水枕 < mizumakura\ ;
+賽銭箱 < saisenbako\ ;
+提唱者 < teishousha\ ;
+丁字定規 < teijijougi\ ;
+噴飯物 < funpanmono\ ;
+固定金利 < koteikinri\ ;
+分極化 < bunkyokuka\ ;
+管理局 < kanrikyoku\ ;
+角錐台 < kakusuidai\ ;
+福岡県 < fukuokaken\ ;
+独壇場 < dokudanjou\ ;
+仲間褒 < nakamabome\ ;
+随想録 < zuisouroku\ ;
+撮影者 < satsueisha\ ;
+如菩薩 < nyobosatsu\ ;
+命中弾 < meichuudan\ ;
+真分数 < shinbunsuu\ ;
+鰯雲 < iwashigumo\ ;
+雇用主 < koyounushi\ ;
+心柄 < kokorogara\ ;
+起動時間 < kidoujikan\ ;
+幻 < maboroshi\ ;
+屍 < shikabane\ ;
+孤 < minashigo\ ;
+猪 < inoshishi\ ;
+唇 < kuchibiru\ ;
+檣 < hobashira\ ;
+橘 < tachibana\ ;
+兵 < tsuwamono\ ;
+銀 < shirogane\ ;
+邪 < yokoshima\ ;
+屯田兵 < tondenhei\ ;
+敵部隊 < tekibutai\ ;
+抵当権 < teitouken\ ;
+村夫子 < sonpuushi\ ;
+自己欺瞞 < jikogiman\ ;
+慰安旅行 < ianryokou\ ;
+揚水車 < yousuisha\ ;
+救援軍 < kyuuengun\ ;
+育毛剤 < ikumouzai\ ;
+睦言 < mutsugoto\ ;
+収奪 < shuudatsu\ ;
+黒頭巾 < kurozukin\ ;
+解毒剤 < gedokuzai\ ;
+恐喝 < kyoukatsu\ ;
+高姿勢 < koushisei\ ;
+屋台店 < yataimise\ ;
+起磁力 < kijiryoku\ ;
+原生林 < genseirin\ ;
+歴史画 < rekishiga\ ;
+目頭 < megashira\ ;
+草餠 < kusamochi\ ;
+前半生 < zenhansei\ ;
+存在論 < sonzairon\ ;
+劇職 < gekishoku\ ;
+希望的 < kibouteki\ ;
+薬代 < kusuridai\ ;
+人工雷 < jinkourai\ ;
+専用機 < sen''youki\ ;
+強直 < kyouchoku\ ;
+度量衡 < doryoukou\ ;
+党大会 < toutaikai\ ;
+同乗者 < doujousha\ ;
+労動者 < roudousha\ ;
+単数型 < tansuukei\ ;
+従兄弟 < juukeitei\ ;
+齧歯類 < gesshirui\ ;
+各冊 < kakusatsu\ ;
+通説 < tsuusetsu\ ;
+冠木門 < kabukimon\ ;
+付属品 < fuzokuhin\ ;
+訪問者 < houmonsha\ ;
+河口 < kawaguchi\ ;
+逆賊 < gyakuzoku\ ;
+道草 < michikusa\ ;
+発頭人 < hottounin\ ;
+死神 < shinigami\ ;
+文選工 < bunsenkou\ ;
+適職 < tekishoku\ ;
+欠落 < ketsuraku\ ;
+巻鮨 < makizushi\ ;
+同居人 < doukyonin\ ;
+参詣人 < sankeinin\ ;
+役員会 < yakuinkai\ ;
+孤立語 < koritsugo\ ;
+生菓子 < namagashi\ ;
+電気器具 < denkikigu\ ;
+勝率 < shouritsu\ ;
+勘定書 < kanjousho\ ;
+開催地 < kaisaichi\ ;
+落後者 < rakugosha\ ;
+出軍 < shutsugun\ ;
+危機打者 < kikidasha\ ;
+半日 < han''nichi\ ;
+塩化水素 < enkasuiso\ ;
+厄年 < yakudoshi\ ;
+男子校 < danshikou\ ;
+剥脱 < hakudatsu\ ;
+一苦労 < hitokurou\ ;
+催涙弾 < sairuidan\ ;
+統治権 < touchiken\ ;
+徒桜 < adazakura\ ;
+千日 < sen''nichi\ ;
+禁転載 < kintensai\ ;
+人事異動 < jinjiidou\ ;
+港湾税 < kouwanzei\ ;
+不寛容 < fukan''you\ ;
+別行 < betsugyou\ ;
+不信仰 < fushinkou\ ;
+太公望 < taikoubou\ ;
+丸括弧 < marugakko\ ;
+外向性 < gaikousei\ ;
+落着 < rakuchaku\ ;
+不足前 < tarazumae\ ;
+二国間 < nikokukan\ ;
+亜鉛鉄板 < aenteppan\ ;
+会葬者 < kaisousha\ ;
+遮二無二 < shanimuni\ ;
+逆襲 < gyakushuu\ ;
+福寿草 < fukujusou\ ;
+毒殺 < dokusatsu\ ;
+確実 < kakujitsu\ ;
+法曹界 < housoukai\ ;
+重出 < juushutsu\ ;
+口先 < kuchisaki\ ;
+運輸省 < un''yushou\ ;
+口元 < kuchimoto\ ;
+式目 < shikimoku\ ;
+卓抜 < takubatsu\ ;
+乗車駅 < joushaeki\ ;
+朝鮮語 < chousengo\ ;
+革命家 < kakumeika\ ;
+機密費 < kimitsuhi\ ;
+人造米 < jinzoumai\ ;
+洋品店 < youhinten\ ;
+個人的 < kojinteki\ ;
+一元化 < ichigenka\ ;
+伝道船 < dendousen\ ;
+没入 < botsunyuu\ ;
+圧迫感 < appakukan\ ;
+予防策 < yobousaku\ ;
+若隠居 < wakainkyo\ ;
+定住者 < teijuusha\ ;
+右下 < migishita\ ;
+水溶性 < suiyousei\ ;
+強烈 < kyouretsu\ ;
+遺言書 < yuigonsho\ ;
+代燃車 < dainensha\ ;
+変成岩 < henseigan\ ;
+一定量 < itteiryou\ ;
+苦灰石 < kukaiseki\ ;
+左心房 < sashinbou\ ;
+輪番制 < rinbansei\ ;
+請願者 < seigansha\ ;
+逸脱 < itsudatsu\ ;
+白黒 < shirokuro\ ;
+直達 < jikitatsu\ ;
+圧迫性 < appakusei\ ;
+恋仇 < koigataki\ ;
+羅生門 < rashoumon\ ;
+直進 < chokushin\ ;
+個人用 < kojin''you\ ;
+享受者 < kyoujusha\ ;
+御足労 < gosokurou\ ;
+直通 < chokutsuu\ ;
+剽窃 < hyousetsu\ ;
+爬虫類 < hachuurui\ ;
+迷信家 < meishinka\ ;
+割箸 < waribashi\ ;
+書簡文 < shokanbun\ ;
+許可証 < kyokashou\ ;
+民主党 < minshutou\ ;
+免黜 < menchutsu\ ;
+金仏 < kanabutsu\ ;
+白鷺 < shirasagi\ ;
+醵出 < kyoshutsu\ ;
+直轄 < chokkatsu\ ;
+太刀先 < tachisaki\ ;
+占師 < uranaishi\ ;
+伝道者 < dendousha\ ;
+監視船 < kanshisen\ ;
+縄暖簾 < nawanoren\ ;
+綿製品 < menseihin\ ;
+皮靴 < kawagutsu\ ;
+出走馬 < shussouba\ ;
+急切 < kyuusetsu\ ;
+二階建 < nikaidate\ ;
+修正案 < shuuseian\ ;
+宣伝戦 < sendensen\ ;
+酉年 < toridoshi\ ;
+請負業 < ukeoigyou\ ;
+類人猿 < ruijin''en\ ;
+合理的 < gouriteki\ ;
+勝負師 < shoubushi\ ;
+糸蚯蚓 < itomimizu\ ;
+延長戦 < enchousen\ ;
+土建業 < dokengyou\ ;
+贈呈品 < zouteihin\ ;
+金鉱地 < kinkouchi\ ;
+真裸 < mappadaka\ ;
+昼御飯 < hirugohan\ ;
+蒙古襞 < moukohida\ ;
+半月刊 < hangekkan\ ;
+出血 < shukketsu\ ;
+白鱚 < shirogisu\ ;
+道筋 < michisuji\ ;
+県民税 < kenminzei\ ;
+扇動者 < sendousha\ ;
+集会所 < shuukaijo\ ;
+木工場 < mokkoujou\ ;
+洒落者 < sharemono\ ;
+戦闘帽 < sentoubou\ ;
+夕化粧 < yuugeshou\ ;
+道端 < michibata\ ;
+可動堰 < kadouzeki\ ;
+大年増 < ootoshima\ ;
+法理学 < hourigaku\ ;
+黄頷蛇 < aodaishou\ ;
+透明体 < toumeitai\ ;
+故障車 < koshousha\ ;
+監視者 < kanshisha\ ;
+卸売 < oroshiuri\ ;
+忘失 < boushitsu\ ;
+蔭口 < kageguchi\ ;
+卵大 < tamagodai\ ;
+弁慶草 < benkeisou\ ;
+初花 < hatsuhana\ ;
+道程 < michinori\ ;
+存在者 < sonzaisha\ ;
+全国区 < zenkokuku\ ;
+白髪 < hakuhatsu\ ;
+天皇旗 < ten''nouki\ ;
+官僚化 < kanryouka\ ;
+既得権 < kitokuken\ ;
+光線銃 < kousenjuu\ ;
+磔刑 < haritsuke\ ;
+仮面劇 < kamengeki\ ;
+機械的 < kikaiteki\ ;
+彦星 < hikoboshi\ ;
+遺伝地図 < idenchizu\ ;
+辛辣 < shinratsu\ ;
+正物 < shoubutsu\ ;
+品々 < shinajina\ ;
+熨斗紙 < noshigami\ ;
+写植機 < shashokki\ ;
+出藍 < shutsuran\ ;
+本体論 < hontairon\ ;
+発声法 < hasseihou\ ;
+給湯器 < kyuutouki\ ;
+年若 < toshiwaka\ ;
+遊興費 < yuukyouhi\ ;
+平安京 < heiankyou\ ;
+逆臣 < gyakushin\ ;
+生欠伸 < namaakubi\ ;
+送付先 < soufusaki\ ;
+外野席 < gaiyaseki\ ;
+平芝 < hirashiba\ ;
+横面 < yokotsura\ ;
+立体戦 < rittaisen\ ;
+直読 < chokudoku\ ;
+監視網 < kanshimou\ ;
+月水金 < gessuikin\ ;
+正投手 < seitoushu\ ;
+凝血 < gyouketsu\ ;
+遠赤外 < ensekigai\ ;
+指示薬 < shijiyaku\ ;
+逃腰 < nigegoshi\ ;
+心太 < tokoroten\ ;
+直訳 < chokuyaku\ ;
+初耳 < hatsumimi\ ;
+信号機 < shingouki\ ;
+井戸車 < idoguruma\ ;
+有名税 < yuumeizei\ ;
+立体感 < rittaikan\ ;
+優先権 < yuusenken\ ;
+実験場 < jikkenjou\ ;
+牡丹餅 < botamochi\ ;
+経団連 < keidanren\ ;
+不法行為 < fuhoukoui\ ;
+断頭台 < dantoudai\ ;
+予約者 < yoyakusha\ ;
+終夜灯 < shuuyatou\ ;
+暗黒面 < ankokumen\ ;
+宣伝屋 < senden''ya\ ;
+代替品 < daitaihin\ ;
+炭酸塩 < tansan''en\ ;
+下宿屋 < geshukuya\ ;
+補給線 < hokyuusen\ ;
+名人戦 < meijinsen\ ;
+一般席 < ippanseki\ ;
+遭難者 < sounansha\ ;
+白雪 < hakusetsu\ ;
+出色 < shusshoku\ ;
+原子砲 < genshihou\ ;
+倒置法 < touchihou\ ;
+廃疾 < haishitsu\ ;
+照準器 < shoujunki\ ;
+原住民 < genjuumin\ ;
+聖公会 < seikoukai\ ;
+劇烈 < gekiretsu\ ;
+原産地 < gensanchi\ ;
+革命児 < kakumeiji\ ;
+速筆 < sokuhitsu\ ;
+優駿馬 < yuushunba\ ;
+主情論 < shujouron\ ;
+骨董品 < kottouhin\ ;
+管財人 < kanzainin\ ;
+演劇界 < engekikai\ ;
+銀閣寺 < ginkakuji\ ;
+風鳥座 < fuuchouza\ ;
+挟瞼器 < kyoukenki\ ;
+教授法 < kyoujuhou\ ;
+電気釜 < denkigama\ ;
+電気量 < denkiryou\ ;
+水口 < mizuguchi\ ;
+死体遺棄 < shitaiiki\ ;
+点光源 < tenkougen\ ;
+日刊紙 < nikkanshi\ ;
+間狂言 < aikyougen\ ;
+殺戮 < satsuriku\ ;
+老人性 < roujinsei\ ;
+後室 < koushitsu\ ;
+計数管 < keisuukan\ ;
+金利鞘 < kinrishou\ ;
+蓄妾 < chikushou\ ;
+仮政府 < kariseifu\ ;
+現代版 < gendaiban\ ;
+低姿勢 < teishisei\ ;
+急降下 < kyuukouka\ ;
+童話劇 < douwageki\ ;
+実験台 < jikkendai\ ;
+水成岩 < suiseigan\ ;
+御寮人 < goryounin\ ;
+自身番 < jishinban\ ;
+砂時計 < sunadokei\ ;
+内野安打 < naiyaanda\ ;
+血達磨 < chidaruma\ ;
+養鶏場 < youkeijou\ ;
+進発 < shinpatsu\ ;
+脱走兵 < dassouhei\ ;
+茶袋 < chabukuro\ ;
+荘園制 < shouensei\ ;
+初空 < hatsuzora\ ;
+前半戦 < zenpansen\ ;
+訓詁学 < kunkogaku\ ;
+車井戸 < kurumaido\ ;
+外務省 < gaimushou\ ;
+新時代 < shinjidai\ ;
+渉外部 < shougaibu\ ;
+横道 < yokomichi\ ;
+感光紙 < kankoushi\ ;
+撮影機 < satsueiki\ ;
+一生涯 < isshougai\ ;
+水源地 < suigenchi\ ;
+整流器 < seiryuuki\ ;
+平穏無事 < heionbuji\ ;
+落札 < rakusatsu\ ;
+刮目 < katsumoku\ ;
+白酒 < shirozake\ ;
+銀行界 < ginkoukai\ ;
+現住所 < genjuusho\ ;
+勘所 < kandokoro\ ;
+前口上 < maekoujou\ ;
+地対空 < chitaikuu\ ;
+追突 < tsuitotsu\ ;
+第一集 < daiisshuu\ ;
+式服 < shikifuku\ ;
+天皇家 < ten''nouke\ ;
+協力 < kyouryoku\ ;
+給油船 < kyuuyusen\ ;
+代書人 < daishonin\ ;
+創始者 < soushisha\ ;
+価格帯 < kakakutai\ ;
+場所柄 < bashogara\ ;
+信号所 < shingoujo\ ;
+明明後日 < shiasatte\ ;
+石持 < ishimochi\ ;
+悪循環 < akujunkan\ ;
+落日 < rakujitsu\ ;
+一気呵成 < ikkikasei\ ;
+実験値 < jikkenchi\ ;
+逸物 < ichimotsu\ ;
+不風流 < bufuuryuu\ ;
+宣伝員 < senden''in\ ;
+除電針 < jodenbari\ ;
+衛生学 < eiseigaku\ ;
+直腸 < chokuchou\ ;
+武器貸与 < bukitaiyo\ ;
+発見者 < hakkensha\ ;
+法王庁 < hououchou\ ;
+歴日 < rekijitsu\ ;
+一番手 < ichibante\ ;
+一夫多妻 < ipputasai\ ;
+限界点 < genkaiten\ ;
+板目紙 < itamegami\ ;
+愁嘆場 < shuutanba\ ;
+進物 < shinmotsu\ ;
+花相撲 < hanazumou\ ;
+歯科学 < shikagaku\ ;
+仕事着 < shigotogi\ ;
+光文社 < koubunsha\ ;
+高燥地 < kousouchi\ ;
+農地法 < nouchihou\ ;
+葛根湯 < kakkontou\ ;
+出立 < shuttatsu\ ;
+真筆 < shinpitsu\ ;
+正月 < shougatsu\ ;
+凝縮 < gyoushuku\ ;
+光電管 < koudenkan\ ;
+身分柄 < mibungara\ ;
+観覧券 < kanranken\ ;
+禁制品 < kinseihin\ ;
+着目 < chakumoku\ ;
+当籤者 < tousensha\ ;
+進化論 < shinkaron\ ;
+再検討 < saikentou\ ;
+六識 < rokushiki\ ;
+半夏生 < hangeshou\ ;
+御飯時 < gohandoki\ ;
+愛弟子 < manadeshi\ ;
+手引書 < tebikisho\ ;
+揮発油 < kihatsuyu\ ;
+翰林院 < kanrin''in\ ;
+整合性 < seigousei\ ;
+料理番 < ryouriban\ ;
+十二宮 < juunikyuu\ ;
+生産財 < seisanzai\ ;
+一代記 < ichidaiki\ ;
+元始祭 < genshisai\ ;
+亡命者 < boumeisha\ ;
+有税品 < yuuzeihin\ ;
+眼疾 < ganshitsu\ ;
+大使館 < taishikan\ ;
+限定詞 < genteishi\ ;
+歌枕 < utamakura\ ;
+Ｘ線 < ekkususen\ ;
+無駄飯 < mudameshi\ ;
+総決算 < soukessan\ ;
+歴史家 < rekishika\ ;
+海水帽 < kaisuibou\ ;
+控除額 < koujogaku\ ;
+知悉 < chishitsu\ ;
+家政学 < kaseigaku\ ;
+内弟子 < uchideshi\ ;
+多忙中 < tabouchuu\ ;
+別物 < betsumono\ ;
+原寸大 < gensundai\ ;
+直結 < chokketsu\ ;
+機能的 < kinouteki\ ;
+女性的 < joseiteki\ ;
+滑翔機 < kasshouki\ ;
+年始状 < nenshijou\ ;
+子煩悩 < kobon''nou\ ;
+指南車 < shinansha\ ;
+凝立 < gyouritsu\ ;
+常節 < tokobushi\ ;
+写生文 < shaseibun\ ;
+標識 < hyoushiki\ ;
+内遊星 < naiyuusei\ ;
+後出 < koushutsu\ ;
+初物 < hatsumono\ ;
+苦行者 < kugyousha\ ;
+罪悪感 < zaiakukan\ ;
+無症状 < mushoujou\ ;
+花道 < hanamichi\ ;
+角砂糖 < kakuzatou\ ;
+生返事 < namahenji\ ;
+出発 < shuppatsu\ ;
+単純性 < tanjunsei\ ;
+北口 < kitaguchi\ ;
+大僧正 < daisoujou\ ;
+年玉 < toshidama\ ;
+一身上 < isshinjou\ ;
+修道尼 < shuudouni\ ;
+軍放送 < gunhousou\ ;
+登記料 < toukiryou\ ;
+英国人 < eikokujin\ ;
+偽証者 < gishousha\ ;
+道路橋 < dourokyou\ ;
+橙色 < daidaiiro\ ;
+矩差 < kanezashi\ ;
+千万 < chiyorozu\ ;
+撮影所 < satsueijo\ ;
+形態論 < keitairon\ ;
+偽証罪 < gishouzai\ ;
+首謀者 < shubousha\ ;
+複号化 < fukugouka\ ;
+弓弦 < yumidzuru\ ;
+始祖鳥 < shisochou\ ;
+特許法 < tokkyohou\ ;
+養毛剤 < youmouzai\ ;
+浮気者 < uwakimono\ ;
+盲穴 < mekuraana\ ;
+危機突破 < kikitoppa\ ;
+暗黒街 < ankokugai\ ;
+大元帥 < daigensui\ ;
+免許状 < menkyojou\ ;
+草箒 < kusabouki\ ;
+出現 < shutsugen\ ;
+夜光虫 < yakouchuu\ ;
+奇天烈 < kiteretsu\ ;
+匙加減 < sajikagen\ ;
+凝着 < gyouchaku\ ;
+劣弱 < retsujaku\ ;
+投手板 < toushuban\ ;
+従業員 < juugyouin\ ;
+批評眼 < hihyougan\ ;
+修道女 < shuudoujo\ ;
+圧痛点 < attsuuten\ ;
+海兵隊 < kaiheitai\ ;
+考課表 < koukahyou\ ;
+麦芽糖 < bakugatou\ ;
+真率 < shinsotsu\ ;
+苦虫 < nigamushi\ ;
+橋脚 < kyoukyaku\ ;
+左腕 < hidariude\ ;
+文芸欄 < bungeiran\ ;
+夜盲症 < yamoushou\ ;
+投稿者 < toukousha\ ;
+無差別 < musabetsu\ ;
+空挺隊 < kuuteitai\ ;
+微調整 < bichousei\ ;
+口忠実 < kuchimame\ ;
+花模様 < hanamoyou\ ;
+有名校 < yuumeikou\ ;
+特許権 < tokkyoken\ ;
+高鼾 < takaibiki\ ;
+構成子 < kouseishi\ ;
+真物 < shinbutsu\ ;
+弔客 < choukyaku\ ;
+請願書 < seigansho\ ;
+拡声機 < kakuseiki\ ;
+医療機器 < iryoukiki\ ;
+百薬 < hyakuyaku\ ;
+討論会 < touronkai\ ;
+茶筒 < chadzutsu\ ;
+弟娘 < otomusume\ ;
+省略 < shouryaku\ ;
+拘置所 < kouchisho\ ;
+交渉員 < koushouin\ ;
+労役場 < rouekijou\ ;
+長尾鶏 < nagaodori\ ;
+水銀灯 < suigintou\ ;
+主成分 < shuseibun\ ;
+修辞法 < shuujihou\ ;
+卓話会 < takuwakai\ ;
+逆流 < gyakuryuu\ ;
+歌心 < utagokoro\ ;
+手工芸 < shukougei\ ;
+料理法 < ryourihou\ ;
+承認図 < shouninzu\ ;
+本島人 < hontoujin\ ;
+恒常性 < koujousei\ ;
+週末 < shuumatsu\ ;
+着氷 < chakuhyou\ ;
+白菊 < shiragiku\ ;
+年波 < toshinami\ ;
+組織化 < soshikika\ ;
+御新造 < goshinzou\ ;
+正室 < seishitsu\ ;
+乾電池 < kandenchi\ ;
+自作農 < jisakunou\ ;
+菊月 < kikudzuki\ ;
+制空権 < seikuuken\ ;
+花椰菜 < hanayasai\ ;
+競技場 < kyougijou\ ;
+旧制度 < kyuuseido\ ;
+共和政 < kyouwasei\ ;
+天下無比 < tenkamuhi\ ;
+尊王家 < son''nouka\ ;
+年毎 < toshigoto\ ;
+週日 < shuujitsu\ ;
+遅進児 < chishinji\ ;
+花街 < hanamachi\ ;
+川縁 < kawabuchi\ ;
+形代 < katashiro\ ;
+栄養学 < eiyougaku\ ;
+掩護部隊 < engobutai\ ;
+白色 < hakushoku\ ;
+不介入 < fukainyuu\ ;
+投手戦 < toushusen\ ;
+犬張子 < inuhariko\ ;
+送電線 < soudensen\ ;
+卵黄嚢 < ran''ounou\ ;
+別棟 < betsumune\ ;
+気圧計 < kiatsukei\ ;
+駆虫剤 < kuchuuzai\ ;
+犬追物 < inuoumono\ ;
+三斑鶉 < mifuuzura\ ;
+冊立 < sakuritsu\ ;
+馬鹿野郎 < bakayarou\ ;
+島風 < shimakaze\ ;
+拍子木 < hyoushigi\ ;
+多毛作 < tamousaku\ ;
+手荷物 < tenimotsu\ ;
+弱卒 < jakusotsu\ ;
+几帳面 < kichoumen\ ;
+模範的 < mohanteki\ ;
+僕達 < bokutachi\ ;
+髭面 < higedzura\ ;
+筆記帳 < hikkichou\ ;
+張力 < chouryoku\ ;
+軟質 < nanshitsu\ ;
+長距離 < choukyori\ ;
+美少年 < bishounen\ ;
+乾燥材 < kansouzai\ ;
+生産者 < seisansha\ ;
+不服従 < fufukujuu\ ;
+本格派 < honkakuha\ ;
+菱形 < hishigata\ ;
+原子戦 < genshisen\ ;
+不変量 < fuhenryou\ ;
+顔馴染 < kaonajimi\ ;
+進捗 < shinchoku\ ;
+落葉樹 < rakuyouju\ ;
+三頭筋 < santoukin\ ;
+僻説 < hekisetsu\ ;
+口語英語 < kougoeigo\ ;
+代言者 < daigensha\ ;
+茶畑 < chabatake\ ;
+揮発度 < kihatsudo\ ;
+大自然 < daishizen\ ;
+不時着 < fujichaku\ ;
+統制線 < touseisen\ ;
+横綱 < yokodzuna\ ;
+兎耳 < usagimimi\ ;
+光電池 < koudenchi\ ;
+花供養 < hanakuyou\ ;
+難問題 < nanmondai\ ;
+継電鍵 < keidenken\ ;
+機械学 < kikaigaku\ ;
+島陰 < shimakage\ ;
+婦人病 < fujinbyou\ ;
+同好者 < doukousha\ ;
+偽妊娠 < gininshin\ ;
+矢印 < yajirushi\ ;
+着服 < chakufuku\ ;
+火縄銃 < hinawajuu\ ;
+建坪 < tatetsubo\ ;
+副尺 < fukushaku\ ;
+初春 < hatsuharu\ ;
+前勘定 < maekanjou\ ;
+既発表 < kihappyou\ ;
+共立 < kyouritsu\ ;
+花菱 < hanabishi\ ;
+甲状腺 < koujousen\ ;
+稽古事 < keikogoto\ ;
+成文法 < seibunhou\ ;
+延坪 < nobetsubo\ ;
+規格品 < kikakuhin\ ;
+仕事日 < shigotobi\ ;
+分与税 < bun''yozei\ ;
+白無垢 < shiromuku\ ;
+二等賞 < nitoushou\ ;
+極量 < kyokuryou\ ;
+定休日 < teikyuubi\ ;
+良識 < ryoushiki\ ;
+弟分 < otoutobun\ ;
+白灯油 < hakutouyu\ ;
+色調 < shikichou\ ;
+鉄火味噌 < tekkamiso\ ;
+運転席 < untenseki\ ;
+公民館 < kouminkan\ ;
+篤農家 < tokunouka\ ;
+茉莉花 < matsurika\ ;
+人工港 < jinkoukou\ ;
+鳶口 < tobiguchi\ ;
+高陵土 < kouryoudo\ ;
+感光板 < kankouban\ ;
+八福 < hachifuku\ ;
+色覚 < shikikaku\ ;
+三乗根 < sanjoukon\ ;
+石仏 < sekibutsu\ ;
+男風呂 < otokoburo\ ;
+女郎花 < ominaeshi\ ;
+滞納者 < tainousha\ ;
+歳出 < saishutsu\ ;
+伝道師 < dendoushi\ ;
+応召兵 < oushouhei\ ;
+複十字 < fukujuuji\ ;
+直流 < chokuryuu\ ;
+阿弥陀経 < amidakyou\ ;
+芍薬 < shakuyaku\ ;
+再構成 < saikousei\ ;
+有段者 < yuudansha\ ;
+単衣物 < hitoemono\ ;
+規格判 < kikakuban\ ;
+第三者 < daisansha\ ;
+出札 < shussatsu\ ;
+割増 < warimashi\ ;
+体操場 < taisoujou\ ;
+主流派 < shuryuuha\ ;
+芝草 < shibakusa\ ;
+広報官 < kouhoukan\ ;
+真東 < mahigashi\ ;
+人工池 < jinkouike\ ;
+口蓋垂 < kougaisui\ ;
+金剛砂 < kongousha\ ;
+十三夜 < juusan''ya\ ;
+大学院 < daigakuin\ ;
+乗用車 < jouyousha\ ;
+不明確 < fumeikaku\ ;
+阿弥陀籤 < amidakuji\ ;
+蜃気楼 < shinkirou\ ;
+複葉機 < fukuyouki\ ;
+二等親 < nitoushin\ ;
+草競馬 < kusakeiba\ ;
+樸直 < bokuchoku\ ;
+隠元豆 < ingenmame\ ;
+幕末 < bakumatsu\ ;
+累乗根 < ruijoukon\ ;
+椎骨 < tsuikotsu\ ;
+東洋人 < touyoujin\ ;
+競技会 < kyougikai\ ;
+勧誘員 < kan''yuuin\ ;
+老婆心 < roubashin\ ;
+債権者 < saikensha\ ;
+第一義 < daiichigi\ ;
+正出 < seishutsu\ ;
+圧倒的 < attouteki\ ;
+不明瞭 < fumeiryou\ ;
+放電管 < houdenkan\ ;
+凶日 < kyoujitsu\ ;
+前身頃 < maemigoro\ ;
+少数派 < shousuuha\ ;
+特捜部 < tokusoubu\ ;
+調馬師 < choubashi\ ;
+遊失 < yuushitsu\ ;
+理論的 < rironteki\ ;
+飲水量 < insuiryou\ ;
+調理法 < chourihou\ ;
+累犯者 < ruihansha\ ;
+車蝦 < kurumaebi\ ;
+好都合 < koutsugou\ ;
+安全域 < anzen''iki\ ;
+虚栄心 < kyoeishin\ ;
+定期的 < teikiteki\ ;
+初役 < hatsuyaku\ ;
+認可証 < ninkashou\ ;
+信心家 < shinjinka\ ;
+強姦罪 < goukanzai\ ;
+教授会 < kyoujukai\ ;
+連合軍 < rengougun\ ;
+選出 < senshutsu\ ;
+迫持 < serimochi\ ;
+重合体 < juugoutai\ ;
+加虐愛 < kagyakuai\ ;
+河川敷 < kasenjiki\ ;
+軍隊葬 < guntaisou\ ;
+数年間 < suunenkan\ ;
+軽気球 < keikikyuu\ ;
+青浮草 < aoukikusa\ ;
+存在意義 < sonzaiigi\ ;
+安楽死 < anrakushi\ ;
+金平糖 < konpeitou\ ;
+定住地 < teijuuchi\ ;
+金輪際 < konrinzai\ ;
+料理店 < ryouriten\ ;
+貿易風 < bouekifuu\ ;
+人工林 < jinkourin\ ;
+海運業 < kaiungyou\ ;
+衣食住 < ishokujuu\ ;
+着床 < chakushou\ ;
+寝具類 < shingurui\ ;
+年弱 < toshiyowa\ ;
+山鶉 < yamauzura\ ;
+東南東 < tounantou\ ;
+Ｗ杯 < daburuhai\ ;
+甲板員 < kouhan''in\ ;
+現代史 < gendaishi\ ;
+根菜類 < konsairui\ ;
+着席 < chakuseki\ ;
+定例会 < teireikai\ ;
+決闘状 < kettoujou\ ;
+蚕卵紙 < sanranshi\ ;
+外蒙古 < sotomouko\ ;
+辻札 < tsujifuda\ ;
+車両化 < sharyouka\ ;
+適切 < tekisetsu\ ;
+又従兄弟 < mataitoko\ ;
+発病 < hatsubyou\ ;
+感光性 < kankousei\ ;
+第一章 < daiisshou\ ;
+病識 < byoushiki\ ;
+創出 < soushutsu\ ;
+別室 < besshitsu\ ;
+臨界点 < rinkaiten\ ;
+商売気 < shoubaigi\ ;
+国憲法 < kokkenpou\ ;
+両陛下 < ryouheika\ ;
+限定版 < genteiban\ ;
+前車輪 < zensharin\ ;
+年嵩 < toshikasa\ ;
+羽毛布団 < umoufuton\ ;
+雄牛糞 < oushikuso\ ;
+不妊症 < funinshou\ ;
+変流器 < henryuuki\ ;
+初孫 < hatsumago\ ;
+出御 < shutsugyo\ ;
+針供養 < harikuyou\ ;
+微視的 < bishiteki\ ;
+監視塔 < kanshitou\ ;
+白玉 < shiratama\ ;
+占拠地 < senkyochi\ ;
+指向性 < shikousei\ ;
+一人用 < hitoriyou\ ;
+調馬場 < choubajou\ ;
+再輸入 < saiyunyuu\ ;
+綿津見 < watatsumi\ ;
+優良児 < yuuryouji\ ;
+浮動票 < fudouhyou\ ;
+先天性 < sentensei\ ;
+形成層 < keiseisou\ ;
+直撃 < chokugeki\ ;
+師範代 < shihandai\ ;
+年寄 < toshiyori\ ;
+休止符 < kyuushifu\ ;
+榎茸 < enokitake\ ;
+不面目 < fumenmoku\ ;
+船虫 < funamushi\ ;
+小糠雨 < konukaame\ ;
+本予算 < hon''yosan\ ;
+指南番 < shinanban\ ;
+自由業 < jiyuugyou\ ;
+禁輸品 < kin''yuhin\ ;
+司会者 < shikaisha\ ;
+投稿欄 < toukouran\ ;
+白熱 < hakunetsu\ ;
+極薄 < kyokuhaku\ ;
+白熊 < shirokuma\ ;
+挿話的 < souwateki\ ;
+割付 < waritsuke\ ;
+初夢 < hatsuyume\ ;
+道中記 < douchuuki\ ;
+半塩水 < han''ensui\ ;
+排他的 < haitateki\ ;
+大腸炎 < daichouen\ ;
+分室 < bunshitsu\ ;
+尼法師 < amahoushi\ ;
+定置網 < teichiami\ ;
+庶出 < shoshutsu\ ;
+入滅 < nyuumetsu\ ;
+芸能界 < geinoukai\ ;
+半濁音 < handakuon\ ;
+配管工 < haikankou\ ;
+割下 < warishita\ ;
+現代人 < gendaijin\ ;
+農漁民 < nougyomin\ ;
+市松 < ichimatsu\ ;
+女性学 < joseigaku\ ;
+乾燥地 < kansouchi\ ;
+分類法 < bunruihou\ ;
+利己主義 < rikoshugi\ ;
+石膏像 < sekkouzou\ ;
+影武者 < kagemusha\ ;
+活版本 < kappanbon\ ;
+仕事場 < shigotoba\ ;
+婦人服 < fujinfuku\ ;
+寝心地 < negokochi\ ;
+優男 < yasaotoko\ ;
+絵巻物 < emakimono\ ;
+不料簡 < furyouken\ ;
+化石層 < kasekisou\ ;
+晩餐会 < bansankai\ ;
+仕放題 < shihoudai\ ;
+案内状 < an''naijou\ ;
+多元的 < tagenteki\ ;
+制海権 < seikaiken\ ;
+交配種 < kouhaishu\ ;
+轢殺 < rekisatsu\ ;
+在住者 < zaijuusha\ ;
+成熟期 < seijukuki\ ;
+真実 < shinjitsu\ ;
+共和党 < kyouwatou\ ;
+平方根 < heihoukon\ ;
+諜報員 < chouhouin\ ;
+興奮剤 < koufunzai\ ;
+白滝 < shirataki\ ;
+先見者 < senkensha\ ;
+航空券 < koukuuken\ ;
+速口 < hayakuchi\ ;
+光電子 < koudenshi\ ;
+進入 < shin''nyuu\ ;
+儲物 < moukemono\ ;
+腰高 < koshidaka\ ;
+売国奴 < baikokudo\ ;
+繁分数 < hanbunsuu\ ;
+性行動 < seikoudou\ ;
+銀行券 < ginkouken\ ;
+橋桁 < hashigeta\ ;
+万万歳 < banbanzai\ ;
+骨質 < kosshitsu\ ;
+停船場 < teisenjou\ ;
+腰骨 < koshibone\ ;
+嘆願書 < tangansho\ ;
+再生産 < saiseisan\ ;
+地対地 < chitaichi\ ;
+修飾 < shuushoku\ ;
+文体論 < buntairon\ ;
+調査団 < chousadan\ ;
+白浪 < shiranami\ ;
+単行本 < tankoubon\ ;
+小夜曲 < sayokyoku\ ;
+出世間 < shusseken\ ;
+白浜 < shirahama\ ;
+艶種 < tsuyadane\ ;
+速力 < sokuryoku\ ;
+単行書 < tankousho\ ;
+一時間 < ichijikan\ ;
+温泉郷 < onsenkyou\ ;
+辻店 < tsujimise\ ;
+有名人 < yuumeijin\ ;
+後甲板 < koukanpan\ ;
+営利主義 < eirishugi\ ;
+弱体化 < jakutaika\ ;
+経済面 < keizaimen\ ;
+修験道 < shugendou\ ;
+茶所 < chadokoro\ ;
+往生際 < oujougiwa\ ;
+広口 < hirokuchi\ ;
+尺骨 < shakkotsu\ ;
+出塁 < shutsurui\ ;
+残存者 < zanzonsha\ ;
+航空便 < koukuubin\ ;
+核武装 < kakubusou\ ;
+目庇 < mabisashi\ ;
+白水 < shiromizu\ ;
+色神 < shikishin\ ;
+埋蔵金 < maizoukin\ ;
+孤立化 < koritsuka\ ;
+聖家族 < seikazoku\ ;
+泥炭地 < deitanchi\ ;
+外輪船 < gairinsen\ ;
+複利法 < fukurihou\ ;
+入植 < nyuushoku\ ;
+蒸留器 < jouryuuki\ ;
+鑑定書 < kanteisho\ ;
+製氷機 < seihyouki\ ;
+直属 < chokuzoku\ ;
+消費財 < shouhizai\ ;
+著作家 < chosakuka\ ;
+市販品 < shihanhin\ ;
+巻頭言 < kantougen\ ;
+凡失 < bonshitsu\ ;
+調理師 < chourishi\ ;
+六月 < rokugatsu\ ;
+真桑瓜 < makuwauri\ ;
+随従者 < zuijuusha\ ;
+一寸先 < issunsaki\ ;
+文学部 < bungakubu\ ;
+予約制 < yoyakusei\ ;
+線速度 < sensokudo\ ;
+平面形 < heimenkei\ ;
+複比例 < fukuhirei\ ;
+散水車 < sansuisha\ ;
+一時金 < ichijikin\ ;
+前年度 < zen''nendo\ ;
+無声映画 < museieiga\ ;
+入札 < nyuusatsu\ ;
+発行者 < hakkousha\ ;
+停留所 < teiryuujo\ ;
+宮城県 < miyagiken\ ;
+前前回 < zenzenkai\ ;
+燗徳利 < kandokuri\ ;
+死刑場 < shikeijou\ ;
+山道 < yamamichi\ ;
+巻子本 < kanshihon\ ;
+退出 < taishutsu\ ;
+楽節 < gakusetsu\ ;
+常夏 < tokonatsu\ ;
+町議会 < chougikai\ ;
+申達 < shintatsu\ ;
+人生観 < jinseikan\ ;
+真珠貝 < shinjugai\ ;
+若松 < wakamatsu\ ;
+局長 < kyokuchou\ ;
+鬼瓦 < onigawara\ ;
+帝室 < teishitsu\ ;
+京都市 < kyoutoshi\ ;
+雨台風 < ametaifuu\ ;
+自由形 < jiyuugata\ ;
+免許制 < menkyosei\ ;
+雑報欄 < zappouran\ ;
+愛党心 < aitoushin\ ;
+防止法 < boushihou\ ;
+補助漢字 < hojokanji\ ;
+床下 < yukashita\ ;
+選挙法 < senkyohou\ ;
+和英辞書 < waeijisho\ ;
+着信 < chakushin\ ;
+天井裏 < tenjouura\ ;
+半陰影 < han''in''ei\ ;
+最重点 < saijuuten\ ;
+一対一 < ittaiichi\ ;
+白札 < shirofuda\ ;
+切入 < setsunyuu\ ;
+標札 < hyousatsu\ ;
+出動 < shutsudou\ ;
+迫力 < hakuryoku\ ;
+屑鉄 < kuzutetsu\ ;
+髪綱 < kamidzuna\ ;
+選挙民 < senkyomin\ ;
+逐一 < chikuichi\ ;
+教唆者 < kyousasha\ ;
+料理人 < ryourinin\ ;
+自由席 < jiyuuseki\ ;
+月刊誌 < gekkanshi\ ;
+侵食 < shinshoku\ ;
+不熟練 < fujukuren\ ;
+古典的 < kotenteki\ ;
+花氷 < hanagoori\ ;
+俄雨 < niwakaame\ ;
+変死者 < henshisha\ ;
+本格化 < honkakuka\ ;
+仕上工 < shiagekou\ ;
+牡丹杏 < botankyou\ ;
+平方形 < heihoukei\ ;
+変化球 < henkakyuu\ ;
+遠隔視 < enkakushi\ ;
+茶室 < chashitsu\ ;
+雑記帳 < zakkichou\ ;
+在校生 < zaikousei\ ;
+白日 < hakujitsu\ ;
+侠骨 < kyoukotsu\ ;
+同位元素 < douigenso\ ;
+摩擦音 < masatsuon\ ;
+少食 < shoushoku\ ;
+巳年 < hebidoshi\ ;
+蛍烏賊 < hotaruika\ ;
+艶物 < tsuyamono\ ;
+再生法 < saiseihou\ ;
+多発機 < tahatsuki\ ;
+冷奴 < hiyayakko\ ;
+活版屋 < kappan''ya\ ;
+金剛手 < kongoushu\ ;
+被害額 < higaigaku\ ;
+再従兄弟 < futaitoko\ ;
+選挙権 < senkyoken\ ;
+基本給 < kihonkyuu\ ;
+非金属 < hikinzoku\ ;
+小頭 < kogashira\ ;
+猩猩緋 < shoujouhi\ ;
+回教徒 < kaikyouto\ ;
+指示先 < shijisaki\ ;
+備忘録 < bibouroku\ ;
+砂糖黍 < satoukibi\ ;
+案内書 < an''naisho\ ;
+功労金 < kouroukin\ ;
+被差別 < hisabetsu\ ;
+痘痕面 < abatazura\ ;
+朱文金 < shubunkin\ ;
+不謹慎 < fukinshin\ ;
+肝硬変 < kankouhen\ ;
+末期的 < makkiteki\ ;
+礼奉公 < reiboukou\ ;
+協技者 < kyougisha\ ;
+多足類 < tasokurui\ ;
+屈辱 < kutsujoku\ ;
+神秘性 < shinpisei\ ;
+沸騰点 < futtouten\ ;
+養魚池 < yougyochi\ ;
+魔法的 < mahouteki\ ;
+亜鉛凸版 < aentoppan\ ;
+製氷所 < seihyoujo\ ;
+関西弁 < kansaiben\ ;
+骨膜 < kotsumaku\ ;
+八千草 < yachigusa\ ;
+町角 < machikado\ ;
+辻君 < tsujigimi\ ;
+省力 < shouryoku\ ;
+鯉幟 < koinobori\ ;
+道交法 < doukouhou\ ;
+野菜汁 < yasaijiru\ ;
+斡旋料 < assenryou\ ;
+赤鰯 < akaiwashi\ ;
+航海士 < koukaishi\ ;
+浮動株 < fudoukabu\ ;
+骨肉 < kotsuniku\ ;
+内室 < naishitsu\ ;
+混交林 < konkourin\ ;
+模範囚 < mohanshuu\ ;
+川岸 < kawagishi\ ;
+講義録 < kougiroku\ ;
+幕下 < makushita\ ;
+目印 < mejirushi\ ;
+生存者 < seizonsha\ ;
+尻軽 < shirigaru\ ;
+不謬性 < fubyuusei\ ;
+導電性 < doudensei\ ;
+改革案 < kaikakuan\ ;
+磁気浮上 < jikifujou\ ;
+男衆 < otokoshuu\ ;
+法改正 < houkaisei\ ;
+生産性 < seisansei\ ;
+鰐口 < waniguchi\ ;
+上中下 < jouchuuge\ ;
+信越 < shin''etsu\ ;
+俊逸 < shun''itsu\ ;
+給水所 < kyuusuijo\ ;
+猜疑心 < saigishin\ ;
+不調法 < buchouhou\ ;
+属託 < shokutaku\ ;
+盲判 < mekuraban\ ;
+受動的 < judouteki\ ;
+調理台 < chouridai\ ;
+空閑地 < kuukanchi\ ;
+労働祭 < roudousai\ ;
+再来週 < saraishuu\ ;
+色沢 < shikitaku\ ;
+六尺 < rokushaku\ ;
+代表部 < daihyoubu\ ;
+僅少差 < kinshousa\ ;
+周期性 < shuukisei\ ;
+飛行服 < hikoufuku\ ;
+不特定 < futokutei\ ;
+表面化 < hyoumenka\ ;
+市有地 < shiyuuchi\ ;
+標準語 < hyoujungo\ ;
+辛口 < karakuchi\ ;
+水平面 < suiheimen\ ;
+交通路 < koutsuuro\ ;
+消費者 < shouhisha\ ;
+古道具 < furudougu\ ;
+基本的 < kihonteki\ ;
+草団子 < kusadango\ ;
+真珠色 < shinjuiro\ ;
+統帥権 < tousuiken\ ;
+色欲 < shikiyoku\ ;
+練習機 < renshuuki\ ;
+極熱 < gokunetsu\ ;
+跳虫 < tobimushi\ ;
+昇降舵 < shoukouda\ ;
+兵庫県 < hyougoken\ ;
+公海上 < koukaijou\ ;
+激戦区 < gekisenku\ ;
+儀礼的 < gireiteki\ ;
+有平糖 < aruheitou\ ;
+痛烈 < tsuuretsu\ ;
+交通費 < koutsuuhi\ ;
+臣節 < shinsetsu\ ;
+金魚草 < kingyosou\ ;
+着火点 < chakkaten\ ;
+選挙戦 < senkyosen\ ;
+骨箱 < kotsubako\ ;
+宗主権 < soushuken\ ;
+水酸根 < suisankon\ ;
+赤十字 < sekijuuji\ ;
+蓄音機 < chikuonki\ ;
+俗説 < zokusetsu\ ;
+自尊心 < jisonshin\ ;
+表記法 < hyoukihou\ ;
+露天商 < rotenshou\ ;
+休廷日 < kyuuteibi\ ;
+飲酒癖 < inshuheki\ ;
+一斉高 < isseidaka\ ;
+処刑台 < shokeidai\ ;
+冷房車 < reibousha\ ;
+検疫所 < ken''ekijo\ ;
+照度計 < shoudokei\ ;
+収税吏 < shuuzeiri\ ;
+喉自慢 < nodojiman\ ;
+金看板 < kinkanban\ ;
+散弾銃 < sandanjuu\ ;
+儲役 < moukeyaku\ ;
+培養液 < baiyoueki\ ;
+天狗風 < tengukaze\ ;
+一本杉 < ipponsugi\ ;
+測微計 < sokubikei\ ;
+風致林 < fuuchirin\ ;
+地理学 < chirigaku\ ;
+美食家 < bishokuka\ ;
+尿道炎 < nyoudouen\ ;
+螳螂拳 < tourouken\ ;
+調理人 < chourinin\ ;
+喫煙所 < kitsuenjo\ ;
+時分時 < jibundoki\ ;
+供述 < kyoujutsu\ ;
+八重桜 < yaezakura\ ;
+南蛮船 < nanbansen\ ;
+豌豆豆 < endoumame\ ;
+峻烈 < shunretsu\ ;
+男腹 < otokobara\ ;
+回数券 < kaisuuken\ ;
+製造者 < seizousha\ ;
+重役会 < juuyakkai\ ;
+北欧人 < hokuoujin\ ;
+一人子 < hitorikko\ ;
+極流 < kyokuryuu\ ;
+死生観 < shiseikan\ ;
+炭疽病 < tansobyou\ ;
+白地図 < hakuchizu\ ;
+略章 < ryakushou\ ;
+鼈甲色 < bekkouiro\ ;
+乗車券 < joushaken\ ;
+測程器 < sokuteiki\ ;
+円舞曲 < enbukyoku\ ;
+良日 < ryoujitsu\ ;
+消費税 < shouhizei\ ;
+壁一重 < kabehitoe\ ;
+四面体 < shimentai\ ;
+左前 < hidarimae\ ;
+在来線 < zairaisen\ ;
+大理石 < dairiseki\ ;
+生産地 < seisanchi\ ;
+対質 < taishitsu\ ;
+不法移民 < fuhouimin\ ;
+片田舎 < katainaka\ ;
+複写機 < fukushaki\ ;
+小説 < shousetsu\ ;
+風俗画 < fuuzokuga\ ;
+左党 < hidaritou\ ;
+脇道 < wakimichi\ ;
+側面図 < sokumenzu\ ;
+棹秤 < saobakari\ ;
+越権行為 < ekkenkoui\ ;
+言語学 < gengogaku\ ;
+巡航船 < junkousen\ ;
+原始林 < genshirin\ ;
+至上権 < shijouken\ ;
+小売商 < kourishou\ ;
+桜貝 < sakuragai\ ;
+統制品 < touseihin\ ;
+病没 < byoubotsu\ ;
+第一審 < daiisshin\ ;
+紅毛人 < koumoujin\ ;
+船橋 < funabashi\ ;
+謄写版 < toushaban\ ;
+控訴審 < kousoshin\ ;
+中古車 < chuukosha\ ;
+髪油 < kamiabura\ ;
+新紀元 < shinkigen\ ;
+練習所 < renshuujo\ ;
+立方根 < rippoukon\ ;
+短音階 < tan''onkai\ ;
+主意主義 < shuishugi\ ;
+宣誓書 < senseisho\ ;
+二拍子 < nibyoushi\ ;
+労農党 < rounoutou\ ;
+彼岸花 < higanbana\ ;
+忠魂碑 < chuukonhi\ ;
+有効性 < yuukousei\ ;
+三日月 < mikadzuki\ ;
+発振機 < hasshinki\ ;
+自己検査 < jikokensa\ ;
+総務庁 < soumuchou\ ;
+病欠 < byouketsu\ ;
+八切 < yatsugiri\ ;
+流行語 < ryuukougo\ ;
+内鮮人 < naisenjin\ ;
+入力 < nyuuryoku\ ;
+生理的 < seiriteki\ ;
+名誉慾 < meiyoyoku\ ;
+努力家 < doryokuka\ ;
+在来種 < zairaishu\ ;
+町筋 < machisuji\ ;
+多事多難 < tajitanan\ ;
+加硫法 < karyuuhou\ ;
+大家族 < daikazoku\ ;
+景教徒 < keikyouto\ ;
+ＡＢＣ順 < ēbīshījun\ ;
+脂足 < aburaashi\ ;
+町立 < chouritsu\ ;
+高積雲 < kousekiun\ ;
+意気揚揚 < ikiyouyou\ ;
+乗船券 < jousenken\ ;
+脚註 < kyakuchuu\ ;
+再審査 < saishinsa\ ;
+用語集 < yougoshuu\ ;
+極月 < gokugetsu\ ;
+負傷者 < fushousha\ ;
+脂質 < shishitsu\ ;
+労働法 < roudouhou\ ;
+汎用機 < han''youki\ ;
+舟橋 < funahashi\ ;
+供血 < kyouketsu\ ;
+名誉心 < meiyoshin\ ;
+鑑定人 < kanteinin\ ;
+川下 < kawashimo\ ;
+投票日 < touhyoubi\ ;
+先行詞 < senkoushi\ ;
+独演会 < dokuenkai\ ;
+音韻学 < on''ingaku\ ;
+功労者 < kourousha\ ;
+実録 < jitsuroku\ ;
+脳細胞 < nousaibou\ ;
+美文調 < bibunchou\ ;
+明細書 < meisaisho\ ;
+男文字 < otokomoji\ ;
+和英辞典 < waeijiten\ ;
+総勘定 < soukanjou\ ;
+色弱 < shikijaku\ ;
+回覧板 < kairanban\ ;
+任命状 < ninmeijou\ ;
+発出 < hasshutsu\ ;
+上納金 < jounoukin\ ;
+拷問台 < goumondai\ ;
+腰縄 < koshinawa\ ;
+生節 < namabushi\ ;
+上奏文 < jousoubun\ ;
+自責点 < jisekiten\ ;
+足腰 < ashikoshi\ ;
+助監督 < jokantoku\ ;
+入仏 < nyuubutsu\ ;
+処生訓 < shoseikun\ ;
+入交 < irimajiri\ ;
+腰紐 < koshihimo\ ;
+本試験 < honshiken\ ;
+外信部 < gaishinbu\ ;
+修築 < shuuchiku\ ;
+一人前 < hitorimae\ ;
+労働権 < roudouken\ ;
+肉食 < nikushoku\ ;
+地球儀 < chikyuugi\ ;
+地上権 < chijouken\ ;
+信約 < shin''yaku\ ;
+金屏風 < kinbyoubu\ ;
+導電体 < doudentai\ ;
+共益費 < kyouekihi\ ;
+脱落 < datsuraku\ ;
+不意試験 < fuishiken\ ;
+馬鹿面 < bakadzura\ ;
+土用波 < doyounami\ ;
+総選挙 < sousenkyo\ ;
+制御盤 < seigyoban\ ;
+心意気 < kokoroiki\ ;
+模範試合 < mohanjiai\ ;
+重労働 < juuroudou\ ;
+手榴弾 < teryuudan\ ;
+一枚上 < ichimaiue\ ;
+天井灯 < tenjoutou\ ;
+養魚場 < yougyojou\ ;
+投票所 < touhyoujo\ ;
+輩出 < haishutsu\ ;
+座標系 < zahyoukei\ ;
+円借款 < enshakkan\ ;
+絶対論 < zettairon\ ;
+捕虫網 < hochuuami\ ;
+出来星 < dekiboshi\ ;
+二重母音 < nijuuboin\ ;
+花柳界 < karyuukai\ ;
+公民権 < kouminken\ ;
+如何許 < ikabakari\ ;
+清教徒 < seikyouto\ ;
+紫外線 < shigaisen\ ;
+修祓 < shuufutsu\ ;
+同好会 < doukoukai\ ;
+洗車場 < senshajou\ ;
+展望車 < tenbousha\ ;
+学閥 < gakubatsu\ ;
+暗号帳 < angouchou\ ;
+位負 < kuraimake\ ;
+苗代 < nawashiro\ ;
+山男 < yamaotoko\ ;
+幌馬車 < horobasha\ ;
+大企業 < daikigyou\ ;
+売笑婦 < baishoufu\ ;
+採点者 < saitensha\ ;
+栄耀栄華 < eiyoueiga\ ;
+間隙比 < kangekihi\ ;
+壮行会 < soukoukai\ ;
+再生品 < saiseihin\ ;
+公社債 < koushasai\ ;
+桜草 < sakurasou\ ;
+客足 < kyakuashi\ ;
+属目 < shokumoku\ ;
+未来学 < miraigaku\ ;
+俗筆 < zokuhitsu\ ;
+末始終 < sueshijuu\ ;
+償却 < shoukyaku\ ;
+潜水艦 < sensuikan\ ;
+水道管 < suidoukan\ ;
+母語話者 < bogowasha\ ;
+天理教 < tenrikyou\ ;
+楽律 < gakuritsu\ ;
+桜色 < sakurairo\ ;
+予想高 < yosoudaka\ ;
+手柄顔 < tegaragao\ ;
+手芸品 < shugeihin\ ;
+平衡錘 < heikousui\ ;
+抗毒素 < koudokuso\ ;
+小羊 < kohitsuji\ ;
+大豆粕 < daizukasu\ ;
+研究費 < kenkyuuhi\ ;
+実質 < jisshitsu\ ;
+知能犯 < chinouhan\ ;
+選手権 < senshuken\ ;
+麝香鹿 < jakoujika\ ;
+海岸線 < kaigansen\ ;
+貿易港 < bouekikou\ ;
+暦年度 < rekinendo\ ;
+天宮図 < tenkyuuzu\ ;
+有権者 < yuukensha\ ;
+体裁上 < teisaijou\ ;
+伊達男 < dateotoko\ ;
+休刊日 < kyuukanbi\ ;
+肘鉄 < hijitetsu\ ;
+賃餅 < chinmochi\ ;
+古典学 < kotengaku\ ;
+宝貝 < takaragai\ ;
+軽口 < karukuchi\ ;
+改訂版 < kaiteiban\ ;
+生存権 < seizonken\ ;
+超脱 < choudatsu\ ;
+該問題 < gaimondai\ ;
+暗号学 < angougaku\ ;
+代行者 < daikousha\ ;
+男物 < otokomono\ ;
+八千歳 < yachitose\ ;
+口真似 < kuchimane\ ;
+出版部 < shuppanbu\ ;
+職長 < shokuchou\ ;
+観測所 < kansokujo\ ;
+経済界 < keizaikai\ ;
+不熱心 < funesshin\ ;
+公法人 < kouhoujin\ ;
+休眠期 < kyuuminki\ ;
+副総理 < fukusouri\ ;
+伴奏者 < bansousha\ ;
+対談者 < taidansha\ ;
+貿易法 < bouekihou\ ;
+園遊会 < en''yuukai\ ;
+賛成者 < sanseisha\ ;
+仏顔 < hotokegao\ ;
+芸能人 < geinoujin\ ;
+分譲地 < bunjouchi\ ;
+屈光性 < kukkousei\ ;
+真珠湾 < shinjuwan\ ;
+仏領 < futsuryou\ ;
+交通禍 < koutsuuka\ ;
+拝火教 < haikakyou\ ;
+箇条書 < kajougaki\ ;
+略歴 < ryakureki\ ;
+選挙人 < senkyonin\ ;
+酪農家 < rakunouka\ ;
+工芸品 < kougeihin\ ;
+未来型 < miraigata\ ;
+弁鰓類 < bensairui\ ;
+無資格 < mushikaku\ ;
+任命権 < ninmeiken\ ;
+虫垂炎 < chuusuien\ ;
+骨柄 < kotsugara\ ;
+木戸御免 < kidogomen\ ;
+破落戸 < gorotsuki\ ;
+緩下薬 < kangeyaku\ ;
+有機的 < yuukiteki\ ;
+赤色 < sekishoku\ ;
+正反対 < seihantai\ ;
+尻癖 < shirikuse\ ;
+青海原 < aounabara\ ;
+凹面鏡 < oumenkyou\ ;
+報道陣 < houdoujin\ ;
+極小 < kyokushou\ ;
+劣勢感 < resseikan\ ;
+自己疎外 < jikosogai\ ;
+俵物 < hyoumotsu\ ;
+御料地 < goryouchi\ ;
+生爪 < namadzume\ ;
+松風 < matsukaze\ ;
+計算者 < keisansha\ ;
+無駄口 < mudaguchi\ ;
+李承晩 < rishouban\ ;
+超絶 < chouzetsu\ ;
+船室 < senshitsu\ ;
+福音書 < fukuinsho\ ;
+八卦掌 < hakkeshou\ ;
+自主的 < jishuteki\ ;
+進歩党 < shinpotou\ ;
+相反性 < souhansei\ ;
+能動態 < noudoutai\ ;
+司令官 < shireikan\ ;
+地震計 < jishinkei\ ;
+紙一重 < kamihitoe\ ;
+水加減 < mizukagen\ ;
+出版費 < shuppanhi\ ;
+果報者 < kahoumono\ ;
+成長期 < seichouki\ ;
+腺熱 < sen''netsu\ ;
+浄土教 < joudokyou\ ;
+束髪 < sokuhatsu\ ;
+転出 < tenshutsu\ ;
+天井板 < tenjouita\ ;
+集塵機 < shuujinki\ ;
+凌波性 < ryouhasei\ ;
+快男子 < kaidanshi\ ;
+天狗茸 < tengutake\ ;
+狙撃兵 < sogekihei\ ;
+外輪山 < gairinzan\ ;
+昇降機 < shoukouki\ ;
+基礎控除 < kisokoujo\ ;
+島島 < shimajima\ ;
+放火狂 < houkakyou\ ;
+風馬牛 < fuubagyuu\ ;
+陶器商 < toukishou\ ;
+略服 < ryakufuku\ ;
+三塁線 < sanruisen\ ;
+島山 < shimayama\ ;
+道義心 < dougishin\ ;
+超時空 < choujikuu\ ;
+微粒子 < biryuushi\ ;
+水平線 < suiheisen\ ;
+再尋問 < saijinmon\ ;
+鬱勃 < utsubotsu\ ;
+東雲 < shinonome\ ;
+生滅 < shoumetsu\ ;
+清掃車 < seisousha\ ;
+俗物 < zokubutsu\ ;
+脱硫 < datsuryuu\ ;
+脈絡 < myakuraku\ ;
+一定温度 < itteiondo\ ;
+最前線 < saizensen\ ;
+絶対者 < zettaisha\ ;
+正確度 < seikakudo\ ;
+氷削機 < hyousakki\ ;
+分解能 < bunkainou\ ;
+四角形 < shikakkei\ ;
+宣言書 < sengensho\ ;
+司令塔 < shireitou\ ;
+学識 < gakushiki\ ;
+立太子 < rittaishi\ ;
+有蹄類 < yuuteirui\ ;
+使用者 < shiyousha\ ;
+侵略 < shinryaku\ ;
+天上界 < tenjoukai\ ;
+青海亀 < aoumigame\ ;
+来遊者 < raiyuusha\ ;
+巨人軍 < kyojingun\ ;
+学部生 < gakubusei\ ;
+工学部 < kougakubu\ ;
+教科書 < kyoukasho\ ;
+経済法 < keizaihou\ ;
+破傷風 < hashoufuu\ ;
+職責 < shokuseki\ ;
+持参人 < jisan''nin\ ;
+総督府 < soutokufu\ ;
+日本髪 < nihongami\ ;
+艶事 < tsuyagoto\ ;
+制御棒 < seigyobou\ ;
+検案書 < ken''ansho\ ;
+玉鴫 < tamashigi\ ;
+歩道橋 < hodoukyou\ ;
+地方紙 < chihoushi\ ;
+日傭取 < hiyoutori\ ;
+地獄変 < jigokuhen\ ;
+合奏団 < gassoudan\ ;
+瓦版 < kawaraban\ ;
+天井扇 < tenjousen\ ;
+傷口 < kizuguchi\ ;
+全反射 < zenhansha\ ;
+密約 < mitsuyaku\ ;
+変速機 < hensokuki\ ;
+無理式 < murishiki\ ;
+軽労働 < keiroudou\ ;
+学術 < gakujutsu\ ;
+正反合 < seihangou\ ;
+経済欄 < keizairan\ ;
+軒下 < nokishita\ ;
+車代 < kurumadai\ ;
+借料 < shakuryou\ ;
+生字引 < ikijibiki\ ;
+投票区 < touhyouku\ ;
+人達 < hitotachi\ ;
+木曜日 < mokuyoubi\ ;
+出木年 < dekidoshi\ ;
+候文 < souroubun\ ;
+碓氷峠 < usuitouge\ ;
+寺男 < teraotoko\ ;
+加入金 < kanyuukin\ ;
+民間人 < minkanjin\ ;
+公募株 < koubokabu\ ;
+極北 < kyokuhoku\ ;
+乗馬服 < joubafuku\ ;
+脱獄 < datsugoku\ ;
+日本領 < nihonryou\ ;
+著書名 < choshomei\ ;
+経営学 < keieigaku\ ;
+白鉛鉱 < hakuenkou\ ;
+町方 < machikata\ ;
+粗目糖 < zarametou\ ;
+手前味噌 < temaemiso\ ;
+内玄関 < naigenkan\ ;
+地方税 < chihouzei\ ;
+高坏 < takatsuki\ ;
+巡査長 < junsachou\ ;
+印刷機 < insatsuki\ ;
+凍死者 < toushisha\ ;
+白銅貨 < hakudouka\ ;
+貸賃 < kashichin\ ;
+原始人 < genshijin\ ;
+加工賃 < kakouchin\ ;
+允文允武 < inbuninbu\ ;
+竹輪麩 < chikuwafu\ ;
+一方的 < ippouteki\ ;
+出仕事 < deshigoto\ ;
+正念場 < shounenba\ ;
+倉敷 < kurashiki\ ;
+乞食 < kotsujiki\ ;
+柔道場 < juudoujou\ ;
+脊髄炎 < sekizuien\ ;
+二重釜 < nijuugama\ ;
+立方体 < rippoutai\ ;
+伸縮 < shinshuku\ ;
+遠隔性 < enkakusei\ ;
+軽歌劇 < keikageki\ ;
+制動灯 < seidoutou\ ;
+催眠剤 < saiminzai\ ;
+今一度 < imaichido\ ;
+攻防戦 < koubousen\ ;
+浄土宗 < joudoshuu\ ;
+操縦桿 < soujuukan\ ;
+文明館 < bunmeikan\ ;
+導関数 < doukansuu\ ;
+滞在地 < taizaichi\ ;
+人質 < hitojichi\ ;
+朝食 < choushoku\ ;
+上納米 < jounoumai\ ;
+宇宙服 < uchuufuku\ ;
+利口者 < rikoumono\ ;
+方法論 < houhouron\ ;
+蓋然性 < gaizensei\ ;
+半製品 < hanseihin\ ;
+峻別 < shunbetsu\ ;
+一場面 < ichibamen\ ;
+石版画 < sekibanga\ ;
+登録簿 < tourokubo\ ;
+自暴自棄 < jiboujiki\ ;
+一昨晩 < issakuban\ ;
+届書 < todokesho\ ;
+客筋 < kyakusuji\ ;
+多極化 < takyokuka\ ;
+大一番 < ooichiban\ ;
+衛星国 < eiseikoku\ ;
+相撲部屋 < sumoubeya\ ;
+服飾 < fukushoku\ ;
+傑出 < kesshutsu\ ;
+休職 < kyuushoku\ ;
+下級生 < kakyuusei\ ;
+標準時 < hyoujunji\ ;
+二道 < futamichi\ ;
+高齢者 < koureisha\ ;
+一丁前 < itchoumae\ ;
+船主 < funanushi\ ;
+食通 < shokutsuu\ ;
+横恋慕 < yokorenbo\ ;
+財産税 < zaisanzei\ ;
+自己保存 < jikohozon\ ;
+二重身 < nijuushin\ ;
+客種 < kyakudane\ ;
+賊虐 < zokugyaku\ ;
+生理学 < seirigaku\ ;
+熱器具 < netsukigu\ ;
+寒冷紗 < kanreisha\ ;
+水道栓 < suidousen\ ;
+探索木 < tansakugi\ ;
+研究科 < kenkyuuka\ ;
+乳鉢 < nyuubachi\ ;
+月額 < getsugaku\ ;
+実施例 < jisshirei\ ;
+長音階 < chouonkai\ ;
+不評判 < fuhyouban\ ;
+月頃 < tsukigoro\ ;
+選手団 < senshudan\ ;
+作男 < sakuotoko\ ;
+多事多端 < tajitatan\ ;
+功利的 < kouriteki\ ;
+天球儀 < tenkyuugi\ ;
+男役 < otokoyaku\ ;
+真珠層 < shinjusou\ ;
+平均点 < heikinten\ ;
+上鶲 < joubitaki\ ;
+腕枕 < udemakura\ ;
+連合会 < rengoukai\ ;
+工業化 < kougyouka\ ;
+赤道儀 < sekidougi\ ;
+赤熱 < sekinetsu\ ;
+文学座 < bungakuza\ ;
+曖昧模糊 < aimaimoko\ ;
+舌先 < shitasaki\ ;
+労働党 < roudoutou\ ;
+腹持 < haramochi\ ;
+経済戦 < keizaisen\ ;
+珍説 < chinsetsu\ ;
+米空軍 < beikuugun\ ;
+敷居置 < shikiichi\ ;
+付落 < tsukeochi\ ;
+配当金 < haitoukin\ ;
+腰掛 < koshikake\ ;
+久闊 < kyuukatsu\ ;
+飛蚊症 < hibunshou\ ;
+密猟 < mitsuryou\ ;
+赤痢菌 < sekirikin\ ;
+五十肩 < gojuukata\ ;
+高等官 < koutoukan\ ;
+地方版 < chihouban\ ;
+申年 < sarudoshi\ ;
+材質 < zaishitsu\ ;
+片脳油 < hen''nouyu\ ;
+松蝉 < matsuzemi\ ;
+事務次官 < jimujikan\ ;
+奉行所 < bugyousho\ ;
+肯定文 < kouteibun\ ;
+京表 < kyouomote\ ;
+芳香剤 < houkouzai\ ;
+火災流 < kasairyuu\ ;
+印刷所 < insatsujo\ ;
+梅暦 < umegoyomi\ ;
+大聖堂 < daiseidou\ ;
+経済性 < keizaisei\ ;
+蛇紋石 < jamonseki\ ;
+流行歌 < ryuukouka\ ;
+作物 < sakumotsu\ ;
+賞罰 < shoubatsu\ ;
+三角洲 < sankakusu\ ;
+室町 < muromachi\ ;
+三文判 < sanmonban\ ;
+三角波 < sankakuha\ ;
+実際性 < jissaisei\ ;
+竹矢来 < takeyarai\ ;
+平行線 < heikousen\ ;
+葱坊主 < negibouzu\ ;
+孫弟子 < magodeshi\ ;
+容積比 < yousekihi\ ;
+主眼点 < shuganten\ ;
+遠隔地 < enkakuchi\ ;
+三角比 < sankakuhi\ ;
+小曲 < shoukyoku\ ;
+長時間 < choujikan\ ;
+半端者 < hanpamono\ ;
+独禁法 < dokkinhou\ ;
+広告費 < koukokuhi\ ;
+検出 < kenshutsu\ ;
+最優遇 < saiyuuguu\ ;
+台風眼 < taifuugan\ ;
+未教育 < mikyouiku\ ;
+俊抜 < shunbatsu\ ;
+裁断師 < saidanshi\ ;
+肉筆 < nikuhitsu\ ;
+全単射 < zentansha\ ;
+腰弱 < koshiyowa\ ;
+効果的 < koukateki\ ;
+空手形 < kuutegata\ ;
+印刻師 < inkokushi\ ;
+胆玉 < kimottama\ ;
+青年輩 < seinenhai\ ;
+割烹店 < kappouten\ ;
+松茸 < matsutake\ ;
+貿易品 < bouekihin\ ;
+削岩機 < sakuganki\ ;
+桜桃 < sakuranbo\ ;
+寂滅 < jakumetsu\ ;
+本質 < honshitsu\ ;
+完了後 < kanryougo\ ;
+大上段 < daijoudan\ ;
+園芸学 < engeigaku\ ;
+指相撲 < yubizumou\ ;
+気宇広大 < kiukoudai\ ;
+肩甲帯 < kenkoutai\ ;
+正当性 < seitousei\ ;
+産室 < sanshitsu\ ;
+砂糖水 < satoumizu\ ;
+方錐形 < housuikei\ ;
+相当数 < soutousuu\ ;
+腰布 < koshinuno\ ;
+腰巻 < koshimaki\ ;
+佃煮 < tsukudani\ ;
+醸造酒 < jouzoushu\ ;
+左中間 < sachuukan\ ;
+伝令者 < denreisha\ ;
+木綿針 < momenbari\ ;
+桁橋 < ketabashi\ ;
+木版画 < mokuhanga\ ;
+検査役 < kensayaku\ ;
+忘年会 < bounenkai\ ;
+宇宙学 < uchuugaku\ ;
+朴訥 < bokutotsu\ ;
+食虫 < shokuchuu\ ;
+真理値 < shinrichi\ ;
+配水管 < haisuikan\ ;
+太陽風 < taiyoufuu\ ;
+松脂 < matsuyani\ ;
+七難 < shichinan\ ;
+使用法 < shiyouhou\ ;
+印刷屋 < insatsuya\ ;
+音声学 < onseigaku\ ;
+伊達女 < dateon''na\ ;
+男坂 < otokozaka\ ;
+宿泊 < shukuhaku\ ;
+伯爵 < hakushaku\ ;
+梓弓 < azusayumi\ ;
+副詞句 < fukushiku\ ;
+実数体 < jissuutai\ ;
+多数意見 < tasuuiken\ ;
+餅肌 < mochihada\ ;
+裏長屋 < uranagaya\ ;
+東工大 < toukoudai\ ;
+居室 < kyoshitsu\ ;
+額際 < hitaigiwa\ ;
+留別 < ryuubetsu\ ;
+歯科医師 < shikaishi\ ;
+花時計 < hanadokei\ ;
+製造品 < seizouhin\ ;
+計算書 < keisansho\ ;
+制動手 < seidoushu\ ;
+不規律 < fukiritsu\ ;
+口腔癌 < koukougan\ ;
+回答者 < kaitousha\ ;
+単従陣 < tanjuujin\ ;
+反英雄 < han''eiyuu\ ;
+主権者 < shukensha\ ;
+大本山 < daihonzan\ ;
+中和剤 < chuuwazai\ ;
+慈善箱 < jizenbako\ ;
+最左翼 < saisayoku\ ;
+三角旗 < sankakuki\ ;
+美化運動 < bikaundou\ ;
+加入者 < kanyuusha\ ;
+裾模様 < susomoyou\ ;
+一隻眼 < issekigan\ ;
+使用権 < shiyouken\ ;
+近体詩 < kintaishi\ ;
+天狼星 < tenrousei\ ;
+贈物 < okurimono\ ;
+再犯者 < saihansha\ ;
+哨戒機 < shoukaiki\ ;
+通過駅 < tsuukaeki\ ;
+大人共 < otonadomo\ ;
+駐日 < chuunichi\ ;
+苦心談 < kushindan\ ;
+操縦士 < soujuushi\ ;
+真珠光 < shinjukou\ ;
+柿渋 < kakishibu\ ;
+速度計 < sokudokei\ ;
+無責任 < musekinin\ ;
+播但線 < bantansen\ ;
+聖誕祭 < seitansai\ ;
+無一文 < muichimon\ ;
+常分数 < joubunsuu\ ;
+下金 < shitagane\ ;
+中越 < chuugoshi\ ;
+再考慮 < saikouryo\ ;
+儀典長 < gitenchou\ ;
+工学科 < kougakuka\ ;
+自己主義 < jikoshugi\ ;
+媒質 < baishitsu\ ;
+交歓会 < koukankai\ ;
+天象儀 < tenshougi\ ;
+乾草 < hoshigusa\ ;
+琴爪 < kotodzume\ ;
+腰垣 < koshigaki\ ;
+引用文 < in''youbun\ ;
+係官 < kakarikan\ ;
+荒法師 < arahoushi\ ;
+脈搏 < myakuhaku\ ;
+玉虫 < tamamushi\ ;
+生唾 < namatsuba\ ;
+実行委員 < jikkouiin\ ;
+療養費 < ryouyouhi\ ;
+機関長 < kikanchou\ ;
+向地性 < kouchisei\ ;
+凱旋門 < gaisenmon\ ;
+食肉 < shokuniku\ ;
+設備費 < setsubihi\ ;
+松笠 < matsukasa\ ;
+裁縫師 < saihoushi\ ;
+財産権 < zaisanken\ ;
+投石機 < tousekiki\ ;
+愛校心 < aikoushin\ ;
+伏魔殿 < fukumaden\ ;
+茶器組 < chakigumi\ ;
+三塁手 < sanruishu\ ;
+七道 < shichidou\ ;
+虚無的 < kyomuteki\ ;
+申入 < moushiire\ ;
+伝導性 < dendousei\ ;
+客様 < kyakusama\ ;
+文字列 < mojiretsu\ ;
+反芻類 < hansuurui\ ;
+定型詩 < teikeishi\ ;
+水菓子 < mizugashi\ ;
+借主 < karinushi\ ;
+黍団子 < kibidango\ ;
+軟口蓋 < nankougai\ ;
+乾肉 < hoshiniku\ ;
+闇相場 < yamisouba\ ;
+宿料 < shukuryou\ ;
+実業 < jitsugyou\ ;
+合気道家 < aikidouka\ ;
+宿敵 < shukuteki\ ;
+宇宙博 < uchuuhaku\ ;
+七輪 < shichirin\ ;
+産出 < sanshutsu\ ;
+芥子菜 < karashina\ ;
+珍道具 < chindougu\ ;
+何日 < nan''nichi\ ;
+質点 < shitsuten\ ;
+黄表紙 < kibyoushi\ ;
+脳室 < noushitsu\ ;
+従姉妹 < juushimai\ ;
+山伏 < yamabushi\ ;
+子福者 < kobukusha\ ;
+思想界 < shisoukai\ ;
+民衆化 < minshuuka\ ;
+鈍黄色 < nibukiiro\ ;
+実株 < jitsukabu\ ;
+三角形 < sankakkei\ ;
+侵奪 < shindatsu\ ;
+大本営 < daihon''ei\ ;
+猛特訓 < moutokkun\ ;
+町中 < machinaka\ ;
+町並 < machinami\ ;
+予告編 < yokokuhen\ ;
+冷湿布 < reishippu\ ;
+標準化 < hyoujunka\ ;
+上質 < joushitsu\ ;
+下貼 < shitabari\ ;
+食紅 < shokubeni\ ;
+南蛮人 < nanbanjin\ ;
+更衣 < koromogae\ ;
+食糧 < shokuryou\ ;
+田園詩 < den''enshi\ ;
+中表 < nakaomote\ ;
+三角座 < sankakuza\ ;
+小姑 < kojuutome\ ;
+再試験 < saishiken\ ;
+栃木 < tochinoki\ ;
+寒帯林 < kantairin\ ;
+脂性 < aburashou\ ;
+倉主 < kuranushi\ ;
+傾斜面 < keishamen\ ;
+死亡者 < shibousha\ ;
+七賢 < shichiken\ ;
+遺族扶助 < izokufujo\ ;
+娑羅双樹 < sarasouju\ ;
+三角帆 < sankakuho\ ;
+尻取 < shiritori\ ;
+婚姻法 < kon''inhou\ ;
+二重窓 < nijuumado\ ;
+自然類 < shizenrui\ ;
+専売品 < senbaihin\ ;
+格式 < kakushiki\ ;
+不統一 < futouitsu\ ;
+昼鳶 < hirutonbi\ ;
+夜会服 < yakaifuku\ ;
+亮直 < ryouchoku\ ;
+暢達 < choutatsu\ ;
+党派心 < touhashin\ ;
+思想犯 < shisouhan\ ;
+腰元 < koshimoto\ ;
+脇差 < wakizashi\ ;
+弁当代 < bentoudai\ ;
+杉箸 < sugibashi\ ;
+肝臓癌 < kanzougan\ ;
+付焼 < tsukeyaki\ ;
+経済人 < keizaijin\ ;
+仏教徒 < bukkyouto\ ;
+米海軍 < beikaigun\ ;
+含油層 < gan''yusou\ ;
+情報誌 < jouhoushi\ ;
+学殖 < gakushoku\ ;
+凱旋軍 < gaisengun\ ;
+融解点 < yuukaiten\ ;
+淋巴球 < rinpakyuu\ ;
+嫌煙権 < ken''enken\ ;
+夫婦仲 < fuufunaka\ ;
+感染原 < kansengen\ ;
+迎賓館 < geihinkan\ ;
+株式 < kabushiki\ ;
+評議会 < hyougikai\ ;
+好男子 < koudanshi\ ;
+早春賦 < soushunfu\ ;
+柏槙 < byakushin\ ;
+喉頭癌 < koutougan\ ;
+独酌 < dokushaku\ ;
+寝業師 < newazashi\ ;
+人格化 < jinkakuka\ ;
+寅年 < toradoshi\ ;
+綺麗事 < kireigoto\ ;
+記名株 < kimeikabu\ ;
+携帯品 < keitaihin\ ;
+駐屯所 < chuutonjo\ ;
+研究所 < kenkyuujo\ ;
+最先端 < saisentan\ ;
+居住者 < kyojuusha\ ;
+誇張法 < kochouhou\ ;
+小咄 < kobanashi\ ;
+丸腰 < marugoshi\ ;
+昼飯 < hirumeshi\ ;
+視覚化 < shikakuka\ ;
+伐木 < batsuboku\ ;
+俊傑 < shunketsu\ ;
+中華街 < chuukagai\ ;
+職歴 < shokureki\ ;
+連判状 < renbanjou\ ;
+麝香猫 < jakouneko\ ;
+変光星 < henkousei\ ;
+審査官 < shinsakan\ ;
+多用中 < tayouchuu\ ;
+早東戦 < soutousen\ ;
+黙秘権 < mokuhiken\ ;
+冒険談 < boukendan\ ;
+常備薬 < joubiyaku\ ;
+架橋 < kakehashi\ ;
+妊婦服 < ninpufuku\ ;
+柏木 < kashiwagi\ ;
+体重計 < taijuukei\ ;
+警官隊 < keikantai\ ;
+仮橋 < karibashi\ ;
+講談社 < koudansha\ ;
+豆粒 < mametsubu\ ;
+休日 < kyuujitsu\ ;
+上薬 < uwagusuri\ ;
+近代詩 < kindaishi\ ;
+煙草銭 < tabakosen\ ;
+間投詞 < kantoushi\ ;
+答弁者 < toubensha\ ;
+平行棒 < heikoubou\ ;
+蟻地獄 < arijigoku\ ;
+密室 < misshitsu\ ;
+扁桃腺 < hentousen\ ;
+公判廷 < kouhantei\ ;
+玉章 < gyokushou\ ;
+数億年 < suuokunen\ ;
+盆灯籠 < bondourou\ ;
+宿将 < shukushou\ ;
+終戦後 < shuusengo\ ;
+将卒 < shousotsu\ ;
+両舌 < ryouzetsu\ ;
+編集部 < henshuubu\ ;
+周囲長 < shuuichou\ ;
+公選制 < kousensei\ ;
+職業 < shokugyou\ ;
+修理工 < shuurikou\ ;
+最適化 < saitekika\ ;
+化学者 < kagakusha\ ;
+導出 < doushutsu\ ;
+贈賄罪 < zouwaizai\ ;
+宿学 < shukugaku\ ;
+不承認 < fushounin\ ;
+五重唱 < gojuushou\ ;
+小冊 < shousatsu\ ;
+自己顕示 < jikokenji\ ;
+年齢順 < nenreijun\ ;
+賭博場 < tobakujou\ ;
+両脚 < ryoukyaku\ ;
+看守者 < kanshusha\ ;
+脱出 < dasshutsu\ ;
+客席 < kyakuseki\ ;
+弱電器 < jakudenki\ ;
+下草 < shitakusa\ ;
+日本的 < nihonteki\ ;
+射出 < shashutsu\ ;
+開墾地 < kaikonchi\ ;
+暦術 < rekijutsu\ ;
+禁猟期 < kinryouki\ ;
+赤土 < akatsuchi\ ;
+前額部 < zengakubu\ ;
+評論家 < hyouronka\ ;
+自己負担 < jikofutan\ ;
+一斉安 < isseiyasu\ ;
+露天風呂 < rotenburo\ ;
+一親等 < isshintou\ ;
+再放送 < saihousou\ ;
+化学線 < kagakusen\ ;
+戦死者 < senshisha\ ;
+一文字 < ichimonji\ ;
+意気投合 < ikitougou\ ;
+文士連 < bunshiren\ ;
+木綿糸 < momen''ito\ ;
+焦電気 < shoudenki\ ;
+授与式 < juyoshiki\ ;
+目分量 < mebunryou\ ;
+天下一 < tenkaichi\ ;
+中古品 < chuukohin\ ;
+中絶 < chuuzetsu\ ;
+市場性 < shijousei\ ;
+中性塩 < chuuseien\ ;
+下腹 < shitabara\ ;
+脱俗 < datsuzoku\ ;
+文語調 < bungochou\ ;
+散兵線 < sanpeisen\ ;
+流行児 < ryuukouji\ ;
+腹時計 < haradokei\ ;
+布袋腹 < hoteibara\ ;
+無教育 < mukyouiku\ ;
+柏手 < kashiwade\ ;
+教区民 < kyoukumin\ ;
+地震帯 < jishintai\ ;
+長期戦 < choukisen\ ;
+通知簿 < tsuuchibo\ ;
+乾物 < hoshimono\ ;
+実学 < jitsugaku\ ;
+加工業 < kakougyou\ ;
+不行状 < fugyoujou\ ;
+桟俵 < sandawara\ ;
+胡麻油 < gomaabura\ ;
+日本猿 < nihonzaru\ ;
+猟色 < ryoushoku\ ;
+旧世界 < kyuusekai\ ;
+一脈 < ichimyaku\ ;
+水平動 < suiheidou\ ;
+赤口 < sekiguchi\ ;
+短大生 < tandaisei\ ;
+肖像画 < shouzouga\ ;
+一角獣 < ikkakujuu\ ;
+可変長 < kahenchou\ ;
+一要素 < ichiyouso\ ;
+児童劇 < jidougeki\ ;
+中立 < chuuritsu\ ;
+埋葬地 < maisouchi\ ;
+上製本 < jouseibon\ ;
+両性花 < ryouseika\ ;
+実行者 < jikkousha\ ;
+職掌 < shokushou\ ;
+傾斜計 < keishakei\ ;
+室外 < shitsugai\ ;
+犯罪者 < hanzaisha\ ;
+寒卵 < kantamago\ ;
+絶交状 < zekkoujou\ ;
+外来者 < gairaisha\ ;
+伝導体 < dendoutai\ ;
+質感 < shitsukan\ ;
+格別 < kakubetsu\ ;
+核力 < kakuryoku\ ;
+斜滑降 < shakakkou\ ;
+常平倉 < jouheisou\ ;
+主催者 < shusaisha\ ;
+柔軟性 < juunansei\ ;
+分担金 < buntankin\ ;
+冷蔵車 < reizousha\ ;
+最高裁 < saikousai\ ;
+両端 < ryouhashi\ ;
+加入権 < kanyuuken\ ;
+両立 < ryouritsu\ ;
+前住所 < zenjuusho\ ;
+展望塔 < tenboutou\ ;
+過敏症 < kabinshou\ ;
+人頭税 < nintouzei\ ;
+舞台劇 < butaigeki\ ;
+下紐 < shitahimo\ ;
+平均値 < heikinchi\ ;
+今日 < kon''nichi\ ;
+格子面 < koushimen\ ;
+早飯 < hayameshi\ ;
+水茶屋 < mizuchaya\ ;
+情報網 < jouhoumou\ ;
+巴旦杏 < hatankyou\ ;
+貸方 < kashikata\ ;
+審美眼 < shinbigan\ ;
+自然観 < shizenkan\ ;
+運否天賦 < unputenpu\ ;
+富栄養化 < fueiyouka\ ;
+脂肪酸 < shibousan\ ;
+門外漢 < mongaikan\ ;
+乾湿 < kanshitsu\ ;
+抗菌性 < koukinsei\ ;
+額縁 < gakubuchi\ ;
+伝染性 < densensei\ ;
+印度支那 < indoshina\ ;
+未組織 < misoshiki\ ;
+欧化主義 < oukashugi\ ;
+水様液 < suiyoueki\ ;
+救助隊 < kyuujotai\ ;
+無二無三 < munimuzan\ ;
+保存量 < hozonryou\ ;
+三日三夜 < mikkamiyo\ ;
+牡丹海老 < botan''ebi\ ;
+核兵器 < kakuheiki\ ;
+不満足 < fumanzoku\ ;
+長談議 < nagadangi\ ;
+冒険者 < boukensha\ ;
+一粒 < hitotsubu\ ;
+嫡流 < chakuryuu\ ;
+曲目 < kyokumoku\ ;
+食欲 < shokuyoku\ ;
+羽蒲団 < hanebuton\ ;
+柴垣 < shibagaki\ ;
+地方債 < chihousai\ ;
+亮月 < ryougetsu\ ;
+本場物 < honbamono\ ;
+語学者 < gogakusha\ ;
+下穿 < shitabaki\ ;
+再試行 < saishikou\ ;
+一節 < hitofushi\ ;
+居丈高 < itakedaka\ ;
+太陽系 < taiyoukei\ ;
+研究員 < kenkyuuin\ ;
+弥縫策 < bihousaku\ ;
+無報酬 < muhoushuu\ ;
+蘆溝橋 < rokoukyou\ ;
+絶対値 < zettaichi\ ;
+天頂儀 < tenchougi\ ;
+中略 < chuuryaku\ ;
+海賊王 < kaizokuou\ ;
+財界人 < zaikaijin\ ;
+風来坊 < fuuraibou\ ;
+状袋 < joubukuro\ ;
+寒冷地 < kanreichi\ ;
+前置詞 < zenchishi\ ;
+物量 < butsuryou\ ;
+加判人 < kahan''nin\ ;
+動滑車 < doukassha\ ;
+結氷期 < keppyouki\ ;
+電気機器 < denkikiki\ ;
+展望台 < tenboudai\ ;
+礼拝堂 < reihaidou\ ;
+高性能 < kouseinou\ ;
+乾海苔 < hoshinori\ ;
+使用例 < shiyourei\ ;
+有田焼 < aritayaki\ ;
+高周波 < koushuuha\ ;
+尿検査 < nyoukensa\ ;
+環状線 < kanjousen\ ;
+末流 < matsuryuu\ ;
+発想法 < hassouhou\ ;
+株主 < kabunushi\ ;
+下石 < shitaishi\ ;
+免税点 < menzeiten\ ;
+値段表 < nedanhyou\ ;
+飯時 < meshidoki\ ;
+直弟子 < jikideshi\ ;
+自己嫌悪 < jikoken''o\ ;
+連邦制 < renpousei\ ;
+使用人 < shiyounin\ ;
+植木鉢 < uekibachi\ ;
+照射野 < shoushaya\ ;
+作付 < sakudzuke\ ;
+慈善心 < jizenshin\ ;
+上瞼 < uwamabuta\ ;
+木煉瓦 < mokurenga\ ;
+木綿物 < momenmono\ ;
+六分儀 < rokubungi\ ;
+視地平 < shichihei\ ;
+工作員 < kousakuin\ ;
+伯叔 < hakushuku\ ;
+爪革 < tsumakawa\ ;
+室内 < shitsunai\ ;
+宿主 < yadonushi\ ;
+回漕店 < kaisouten\ ;
+石炭紀 < sekitanki\ ;
+投機的 < toukiteki\ ;
+猟犬座 < ryoukenza\ ;
+二月 < futatsuki\ ;
+日録 < nichiroku\ ;
+皮財布 < kawazaifu\ ;
+一瞥 < ichibetsu\ ;
+脳血栓 < noukessen\ ;
+正則化 < seisokuka\ ;
+大奥様 < oookusama\ ;
+令室 < reishitsu\ ;
+体中 < karadajuu\ ;
+欠陥車 < kekkansha\ ;
+一大事 < ichidaiji\ ;
+連分数 < renbunsuu\ ;
+修理代 < shuuridai\ ;
+仲好 < nakayoshi\ ;
+蕁麻疹 < jinmashin\ ;
+具申書 < gushinsho\ ;
+読書家 < dokushoka\ ;
+美術部 < bijutsubu\ ;
+感謝祭 < kanshasai\ ;
+貴方方 < anatagata\ ;
+調髪 < chouhatsu\ ;
+東京都 < toukyouto\ ;
+旧字体 < kyuujitai\ ;
+製作費 < seisakuhi\ ;
+二週間 < nishuukan\ ;
+部落民 < burakumin\ ;
+物質 < busshitsu\ ;
+早道 < hayamichi\ ;
+加盟国 < kameikoku\ ;
+一夜中 < hitoyajuu\ ;
+構造体 < kouzoutai\ ;
+中医学 < chuuigaku\ ;
+受信者 < jushinsha\ ;
+会議録 < kaigiroku\ ;
+禁煙車 < kin''ensha\ ;
+片道 < katamichi\ ;
+電子銃 < denshijuu\ ;
+具体策 < gutaisaku\ ;
+車掌区 < shashouku\ ;
+特設 < tokusetsu\ ;
+他国民 < takokumin\ ;
+儒学者 < jugakusha\ ;
+名探偵 < meitantei\ ;
+国連旗 < kokurenki\ ;
+鯣烏賊 < surumeika\ ;
+全市民 < zenshimin\ ;
+報道官 < houdoukan\ ;
+仏学 < butsugaku\ ;
+日本晴 < nihonbare\ ;
+布団皮 < futongawa\ ;
+修繕費 < shuuzenhi\ ;
+露霜 < tsuyujimo\ ;
+専門書 < senmonsho\ ;
+公用車 < kouyousha\ ;
+耐性菌 < taiseikin\ ;
+札束 < satsutaba\ ;
+同種類 < doushurui\ ;
+音域外 < on''ikigai\ ;
+夏鳥 < natsudori\ ;
+質問 < shitsumon\ ;
+親和性 < shinwasei\ ;
+前頭葉 < zentouyou\ ;
+珠暖簾 < tamanoren\ ;
+独立 < dokuritsu\ ;
+九星家 < kyuuseika\ ;
+通気孔 < tsuukikou\ ;
+月次 < tsukinami\ ;
+謬説 < byuusetsu\ ;
+隣人愛 < rinjin''ai\ ;
+不承知 < fushouchi\ ;
+死亡数 < shibousuu\ ;
+学卒 < gakusotsu\ ;
+居住権 < kyojuuken\ ;
+鉤括弧 < kagikakko\ ;
+倦怠感 < kentaikan\ ;
+冷蔵船 < reizousen\ ;
+奴輩 < yatsubara\ ;
+合成酒 < gouseishu\ ;
+味噌汁 < misoshiru\ ;
+指導者 < shidousha\ ;
+学力 < gakuryoku\ ;
+半可通 < hankatsuu\ ;
+無警告 < mukeikoku\ ;
+基本合意 < kihongoui\ ;
+大西郷 < daisaigou\ ;
+睡眠剤 < suiminzai\ ;
+旋盤工 < senbankou\ ;
+帯分数 < taibunsuu\ ;
+小児科医 < shounikai\ ;
+後継者 < koukeisha\ ;
+亮察 < ryousatsu\ ;
+天日塩 < tenpishio\ ;
+威圧的 < iatsuteki\ ;
+二重底 < nijuuzoko\ ;
+又弟子 < matadeshi\ ;
+救命具 < kyuumeigu\ ;
+中次 < nakatsugi\ ;
+禁猟区 < kinryouku\ ;
+弩級艦 < dokyuukan\ ;
+旧識 < kyuushiki\ ;
+人妻 < hitodzuma\ ;
+恒久化 < koukyuuka\ ;
+新釈 < shinshaku\ ;
+具体的 < gutaiteki\ ;
+腹一杯 < haraippai\ ;
+格理論 < kakuriron\ ;
+日諾 < nichidaku\ ;
+感謝状 < kanshajou\ ;
+股下 < matashita\ ;
+現行犯 < genkouhan\ ;
+珍客 < chinkyaku\ ;
+日付印 < hidzukein\ ;
+太陽灯 < taiyoutou\ ;
+我武者羅 < gamushara\ ;
+外面 < sotodzura\ ;
+情報源 < jouhougen\ ;
+春色 < shunshoku\ ;
+公使館 < koushikan\ ;
+翌月 < yokugetsu\ ;
+帆立貝 < hotategai\ ;
+若武者 < wakamusha\ ;
+京女 < kyouon''na\ ;
+清算書 < seisansho\ ;
+本街道 < honkaidou\ ;
+串柿 < kushigaki\ ;
+郵便車 < yuubinsha\ ;
+自己犠牲 < jikogisei\ ;
+翌日 < yokujitsu\ ;
+一点機 < ichitenki\ ;
+両極 < ryoukyoku\ ;
+夏風邪 < natsukaze\ ;
+仏名 < butsumyou\ ;
+特色 < tokushoku\ ;
+中道派 < chuudouha\ ;
+暴風域 < boufuuiki\ ;
+発禁本 < hakkinbon\ ;
+圧電気 < atsudenki\ ;
+巨人党 < kyojintou\ ;
+食客 < shokkyaku\ ;
+時代物 < jidaimono\ ;
+屏風岩 < byoubuiwa\ ;
+快記録 < kaikiroku\ ;
+父親 < chichioya\ ;
+暴風圏 < boufuuken\ ;
+仮住 < karizumai\ ;
+雪靴 < yukigutsu\ ;
+不成績 < fuseiseki\ ;
+現出 < genshutsu\ ;
+仏力 < butsuriki\ ;
+多音節 < taonsetsu\ ;
+連帯感 < rentaikan\ ;
+部分的 < bubunteki\ ;
+専門店 < senmonten\ ;
+慣用音 < kan''youon\ ;
+夜仕事 < yoshigoto\ ;
+演習林 < enshuurin\ ;
+下様 < shimozama\ ;
+某高校 < boukoukou\ ;
+繰越 < kurikoshi\ ;
+綿菓子 < watagashi\ ;
+跨線橋 < kosenkyou\ ;
+煙草盆 < tabakobon\ ;
+受験票 < jukenhyou\ ;
+内斜視 < naishashi\ ;
+電信機 < denshinki\ ;
+圧縮機 < asshukuki\ ;
+物腰 < monogoshi\ ;
+三椏 < mitsumata\ ;
+実行権 < jikkouken\ ;
+松原 < matsubara\ ;
+相互扶助 < sougofujo\ ;
+賃借 < chinshaku\ ;
+現行法 < genkouhou\ ;
+自然界 < shizenkai\ ;
+懸垂線 < kensuisen\ ;
+上手者 < jouzumono\ ;
+日本学 < nihongaku\ ;
+排障器 < haishouki\ ;
+真夏日 < manatsubi\ ;
+熟食 < jukushoku\ ;
+感無量 < kanmuryou\ ;
+給付金 < kyuufukin\ ;
+付人 < tsukebito\ ;
+代名詞 < daimeishi\ ;
+同音異義 < douon''igi\ ;
+救助船 < kyuujosen\ ;
+牽引車 < ken''insha\ ;
+居住性 < kyojuusei\ ;
+抗凝固 < kougyouko\ ;
+看護長 < kangochou\ ;
+低性能 < teiseinou\ ;
+無計画 < mukeikaku\ ;
+多面角 < tamenkaku\ ;
+低周波 < teishuuha\ ;
+理想郷 < risoukyou\ ;
+被爆者 < hibakusha\ ;
+精製糖 < seiseitou\ ;
+有用性 < yuuyousei\ ;
+娯楽街 < gorakugai\ ;
+後天性 < koutensei\ ;
+校友会 < kouyuukai\ ;
+単利表 < tanrihyou\ ;
+自己本位 < jikohon''i\ ;
+月影 < tsukikage\ ;
+療養所 < ryouyoujo\ ;
+保守的 < hoshuteki\ ;
+月形 < tsukigata\ ;
+皇民党 < koumintou\ ;
+二重唱 < nijuushou\ ;
+七曜 < shichiyou\ ;
+卵胎生 < rantaisei\ ;
+一月 < hitotsuki\ ;
+線香代 < senkoudai\ ;
+対角化 < taikakuka\ ;
+最高点 < saikouten\ ;
+天質 < tenshitsu\ ;
+下敷 < shitajiki\ ;
+最低限 < saiteigen\ ;
+七星 < shichisei\ ;
+歌合戦 < utagassen\ ;
+平和賞 < heiwashou\ ;
+数係数 < suukeisuu\ ;
+木炭画 < mokutanga\ ;
+再降臨 < saikourin\ ;
+星空 < hoshizora\ ;
+再調査 < saichousa\ ;
+高野槙 < kouyamaki\ ;
+定滑車 < teikassha\ ;
+似我蜂 < jigabachi\ ;
+旋光性 < senkousei\ ;
+名投手 < meitoushu\ ;
+特筆 < tokuhitsu\ ;
+一日 < tsuitachi\ ;
+採算性 < saisansei\ ;
+企業者 < kigyousha\ ;
+人伝 < hitodzute\ ;
+異常高温 < ijoukouon\ ;
+狐火 < kitsunebi\ ;
+銀砂子 < ginsunago\ ;
+爆裂 < bakuretsu\ ;
+特立 < tokuritsu\ ;
+人付 < hitodzuki\ ;
+国分寺 < kokubunji\ ;
+養豚場 < youtonjou\ ;
+非対称 < hitaishou\ ;
+不銹鋼 < fushuukou\ ;
+失言 < shitsugen\ ;
+一院制 < ichiinsei\ ;
+手仕事 < teshigoto\ ;
+胆嚢炎 < tan''nouen\ ;
+雪道 < yukimichi\ ;
+雑録 < zatsuroku\ ;
+強打者 < kyoudasha\ ;
+規範的 < kihanteki\ ;
+羅紗紙 < rashagami\ ;
+脱衣場 < datsuijou\ ;
+女腹 < on''nabara\ ;
+熱量 < netsuryou\ ;
+救助網 < kyuujomou\ ;
+雪辱 < setsujoku\ ;
+太陰暦 < taiinreki\ ;
+揚羽蝶 < agehachou\ ;
+頭株 < atamakabu\ ;
+士君子 < shikunshi\ ;
+腰羽目 < koshibame\ ;
+片一方 < kataippou\ ;
+阿片窟 < ahenkutsu\ ;
+失血 < shikketsu\ ;
+暦月 < rekigetsu\ ;
+吾木香 < waremokou\ ;
+変質 < henshitsu\ ;
+食出 < hamidashi\ ;
+大型車 < oogatasha\ ;
+夏季熱 < kakinetsu\ ;
+夜話 < yobanashi\ ;
+内陸霧 < nairikumu\ ;
+植字機 < shokujiki\ ;
+遊覧船 < yuuransen\ ;
+乳房炎 < nyuubouen\ ;
+脳挫傷 < nouzashou\ ;
+天袋 < tenbukuro\ ;
+学生課 < gakuseika\ ;
+靴紐 < kutsuhimo\ ;
+藁布団 < warabuton\ ;
+詳述 < shoujutsu\ ;
+投機心 < toukishin\ ;
+郵便船 < yuubinsen\ ;
+青年団 < seinendan\ ;
+勧告案 < kankokuan\ ;
+特発 < tokuhatsu\ ;
+軍事援助 < gunjienjo\ ;
+天文台 < tenmondai\ ;
+自然法 < shizenhou\ ;
+石灰洞 < sekkaidou\ ;
+弊衣破帽 < heiihabou\ ;
+靴篦 < kutsubera\ ;
+増刊号 < zoukangou\ ;
+下役 < shitayaku\ ;
+両岸 < ryougishi\ ;
+曲学 < kyokugaku\ ;
+内大臣 < naidaijin\ ;
+現在地 < genzaichi\ ;
+戦車隊 < senshatai\ ;
+熟達 < jukutatsu\ ;
+丑年 < ushidoshi\ ;
+二重丸 < nijuumaru\ ;
+露草 < tsuyukusa\ ;
+酒造場 < shuzoujou\ ;
+愛読者 < aidokusha\ ;
+七五三縄 < shimenawa\ ;
+文化遺産 < bunkaisan\ ;
+石灰水 < sekkaisui\ ;
+大地震 < daijishin\ ;
+評釈 < hyoushaku\ ;
+不拡大 < fukakudai\ ;
+主導者 < shudousha\ ;
+高蒔絵 < takamakie\ ;
+自然死 < shizenshi\ ;
+居住地 < kyojuuchi\ ;
+一律 < ichiritsu\ ;
+決死隊 < kesshitai\ ;
+主脳者 < shunousha\ ;
+舞楽面 < bugakumen\ ;
+魚介類 < gyokairui\ ;
+最高検 < saikouken\ ;
+熱汚染 < netsuosen\ ;
+恒星年 < kouseinen\ ;
+自在鉤 < jizaikagi\ ;
+競走馬 < kyousouba\ ;
+御手洗 < mitarashi\ ;
+増幅器 < zoufukuki\ ;
+日本側 < nihongawa\ ;
+人類史 < jinruishi\ ;
+苦労様 < kurousama\ ;
+禀請書 < rinseisho\ ;
+風口 < kazaguchi\ ;
+俳諧師 < haikaishi\ ;
+夏蝉 < natsuzemi\ ;
+自家受精 < jikajusei\ ;
+慣用語 < kan''yougo\ ;
+女学生 < jogakusei\ ;
+電子管 < denshikan\ ;
+梵天王 < bonten''ou\ ;
+霞草 < kasumisou\ ;
+合成紙 < gouseishi\ ;
+黄銅鉱 < koudoukou\ ;
+自家受粉 < jikajufun\ ;
+牧畜 < bokuchiku\ ;
+司教区 < shikyouku\ ;
+解散権 < kaisanken\ ;
+適齢期 < tekireiki\ ;
+威嚇的 < ikakuteki\ ;
+銃連射 < juurensha\ ;
+免税品 < menzeihin\ ;
+焼餅 < yakimochi\ ;
+高水準 < kousuijun\ ;
+太陽年 < taiyounen\ ;
+民生委員 < minseiiin\ ;
+石細工 < ishizaiku\ ;
+寝小便 < neshouben\ ;
+末僚 < batsuryou\ ;
+冷蔵法 < reizouhou\ ;
+配分法 < haibunhou\ ;
+耽美的 < tanbiteki\ ;
+註釈 < chuushaku\ ;
+潜航艇 < senkoutei\ ;
+同窓生 < dousousei\ ;
+放浪者 < hourousha\ ;
+種概念 < shugainen\ ;
+早明戦 < soumeisen\ ;
+微積分 < bisekibun\ ;
+鳥瞰図 < choukanzu\ ;
+女王蜂 < jooubachi\ ;
+新緑 < shinryoku\ ;
+失脚 < shikkyaku\ ;
+外交官 < gaikoukan\ ;
+歯肉炎 < shinikuen\ ;
+自然林 < shizenrin\ ;
+演習場 < enshuujou\ ;
+小麦色 < komugiiro\ ;
+復古調 < fukkochou\ ;
+反省会 < hanseikai\ ;
+熱帯魚 < nettaigyo\ ;
+失職 < shisshoku\ ;
+単葉機 < tan''youki\ ;
+愛他主義 < aitashugi\ ;
+所有者 < shoyuusha\ ;
+販売者 < hanbaisha\ ;
+主人顔 < shujingao\ ;
+滑稽者 < odokemono\ ;
+水飢饉 < mizukikin\ ;
+海上法 < kaijouhou\ ;
+熱可塑 < netsukaso\ ;
+夏菊 < natsugiku\ ;
+一党一派 < ittouippa\ ;
+化学品 < kagakuhin\ ;
+縞蛇 < shimahebi\ ;
+中哲 < chuutetsu\ ;
+子沢山 < kodakusan\ ;
+余水吐 < yosuihaki\ ;
+怪奇映画 < kaikieiga\ ;
+訳述 < yakujutsu\ ;
+新築 < shinchiku\ ;
+夏草 < natsugusa\ ;
+昨年度 < sakunendo\ ;
+玉串 < tamagushi\ ;
+自然数 < shizensuu\ ;
+再訂版 < saiteiban\ ;
+青年会 < seinenkai\ ;
+中口 < nakaguchi\ ;
+女癖 < on''naguse\ ;
+現地人 < genchijin\ ;
+懐疑心 < kaigishin\ ;
+姥桜 < ubazakura\ ;
+朝日影 < asahikage\ ;
+釈迦牟尼 < shakamuni\ ;
+誘導弾 < yuudoudan\ ;
+販売網 < hanbaimou\ ;
+中卒 < chuusotsu\ ;
+八百万 < yaoyorozu\ ;
+下坂 < shimosaka\ ;
+貧乏人 < binbounin\ ;
+工事中 < koujichuu\ ;
+窃盗罪 < settouzai\ ;
+風下 < kazashimo\ ;
+霞網 < kasumiami\ ;
+原裁判 < gensaiban\ ;
+点火薬 < tenkayaku\ ;
+海上権 < kaijouken\ ;
+化学剤 < kagakuzai\ ;
+精製法 < seiseihou\ ;
+両口 < ryouguchi\ ;
+方眼紙 < houganshi\ ;
+受賞者 < jushousha\ ;
+推薦者 < suisensha\ ;
+雪模様 < yukimoyou\ ;
+爆竹 < bakuchiku\ ;
+一級品 < ikkyuuhin\ ;
+格子点 < koushiten\ ;
+日独 < nichidoku\ ;
+購買者 < koubaisha\ ;
+一等賞 < ittoushou\ ;
+他国人 < takokujin\ ;
+空気浴 < kuukiyoku\ ;
+旧物 < kyuubutsu\ ;
+獣偏 < kemonohen\ ;
+外交団 < gaikoudan\ ;
+執行部 < shikkoubu\ ;
+露程 < tsuyuhodo\ ;
+調節 < chousetsu\ ;
+理神論 < rishinron\ ;
+受験料 < jukenryou\ ;
+頭字 < kashiraji\ ;
+勝手元 < kattemoto\ ;
+相対論 < soutairon\ ;
+刊行会 < kankoukai\ ;
+獄卒 < gokusotsu\ ;
+保育料 < hoikuryou\ ;
+総資産 < soushisan\ ;
+住民税 < juuminzei\ ;
+且又 < katsumata\ ;
+俸給日 < houkyuubi\ ;
+物流 < butsuryuu\ ;
+両凸 < ryoutotsu\ ;
+陳述 < chinjutsu\ ;
+行政府 < gyouseifu\ ;
+処女膜 < shojomaku\ ;
+随伴者 < zuihansha\ ;
+新着 < shinchaku\ ;
+女物 < on''namono\ ;
+不印 < fujirushi\ ;
+悪宣伝 < akusenden\ ;
+書付 < kakitsuke\ ;
+多面的 < tamenteki\ ;
+詰草 < tsumekusa\ ;
+対戦車 < taisensha\ ;
+中位 < chuugurai\ ;
+熊蜂 < kumabachi\ ;
+苦労性 < kuroushou\ ;
+恐妻家 < kyousaika\ ;
+半鹹水 < hankansui\ ;
+社会経済 < shakaikei\ ;
+結跏趺座 < kekkafuza\ ;
+密航者 < mikkousha\ ;
+一等親 < ittoushin\ ;
+教職 < kyoushoku\ ;
+失礼 < shitsurei\ ;
+補強筋 < hokyoukin\ ;
+看板屋 < kanban''ya\ ;
+社員寮 < shainryou\ ;
+呼吸法 < kokyuuhou\ ;
+物欲 < butsuyoku\ ;
+一口 < hitokuchi\ ;
+擂鉢 < suribachi\ ;
+体量器 < tairyouki\ ;
+化学上 < kagakujou\ ;
+伽藍鳥 < garanchou\ ;
+心臓部 < shinzoubu\ ;
+爆発 < bakuhatsu\ ;
+最高峰 < saikouhou\ ;
+競輪場 < keirinjou\ ;
+重婚者 < juukonsha\ ;
+要撃機 < yougekiki\ ;
+気化熱 < kikanetsu\ ;
+昨日 < sakujitsu\ ;
+日教組 < nikkyouso\ ;
+蓖麻子油 < himashiyu\ ;
+縮約 < shukuyaku\ ;
+三等星 < santousei\ ;
+命名法 < meimeihou\ ;
+参加国 < sankakoku\ ;
+未開拓 < mikaitaku\ ;
+再編成 < saihensei\ ;
+失着 < shitchaku\ ;
+透水性 < tousuisei\ ;
+一列 < ichiretsu\ ;
+反対論 < hantairon\ ;
+学芸員 < gakugeiin\ ;
+冷凍魚 < reitougyo\ ;
+敗残兵 < haizanhei\ ;
+下側 < shitagawa\ ;
+雀色 < suzumeiro\ ;
+書生論 < shoseiron\ ;
+財政難 < zaiseinan\ ;
+一儲 < hitomouke\ ;
+制癌剤 < seiganzai\ ;
+族滅 < zokumetsu\ ;
+発泡剤 < happouzai\ ;
+伝奇的 < denkiteki\ ;
+絆創膏 < bansoukou\ ;
+下作 < shitasaku\ ;
+石灰岩 < sekkaigan\ ;
+調略 < chouryaku\ ;
+兵学校 < heigakkou\ ;
+富山県 < toyamaken\ ;
+該当者 < gaitousha\ ;
+点数制 < tensuusei\ ;
+昔日 < sekijitsu\ ;
+高知県 < kouchiken\ ;
+口上書 < koujousho\ ;
+解放感 < kaihoukan\ ;
+平和的 < heiwateki\ ;
+自閉症 < jiheishou\ ;
+飲用水 < in''yousui\ ;
+太陽光 < taiyoukou\ ;
+橋頭保 < kyoutouho\ ;
+古書市 < koshoichi\ ;
+天然塩 < ten''nenen\ ;
+断熱 < dan''netsu\ ;
+明日 < myounichi\ ;
+下下 < shimojimo\ ;
+敷石 < shikiishi\ ;
+特撮 < tokusatsu\ ;
+公害罪 < kougaizai\ ;
+淫売宿 < inbaiyado\ ;
+起請文 < kishoumon\ ;
+願事 < negaigoto\ ;
+碁盤縞 < gobanjima\ ;
+頻出 < hinshutsu\ ;
+網袋 < amibukuro\ ;
+俗世間 < zokuseken\ ;
+甘納豆 < amanattou\ ;
+乾酪素 < kanrakuso\ ;
+冶金学 < yakingaku\ ;
+冗長度 < jouchoudo\ ;
+角逐 < kakuchiku\ ;
+私家集 < shikashuu\ ;
+七三 < shichisan\ ;
+細面 < hosoomote\ ;
+市街地 < shigaichi\ ;
+可読性 < kadokusei\ ;
+明示的 < meijiteki\ ;
+大回転 < daikaiten\ ;
+呉服店 < gofukuten\ ;
+中華丼 < chuukadon\ ;
+大西洋 < taiseiyou\ ;
+理想的 < risouteki\ ;
+妻帯者 < saitaisha\ ;
+八宝菜 < happousai\ ;
+双蹄獸 < souteijuu\ ;
+集結 < shuuketsu\ ;
+国全土 < kokuzendo\ ;
+二進法 < nishinhou\ ;
+西風 < nishikaze\ ;
+自然増 < shizenzou\ ;
+時代劇 < jidaigeki\ ;
+夏痩 < natsuyase\ ;
+混成酒 < konseishu\ ;
+公倍数 < koubaisuu\ ;
+処方箋 < shohousen\ ;
+癌細胞 < gansaibou\ ;
+累減税 < ruigenzei\ ;
+所作事 < shosagoto\ ;
+無限小 < mugenshou\ ;
+物指 < monosashi\ ;
+窃盗犯 < settouhan\ ;
+仕手株 < shitekabu\ ;
+口下手 < kuchibeta\ ;
+金曜日 < kin''youbi\ ;
+低水準 < teisuijun\ ;
+製作所 < seisakujo\ ;
+伝声管 < denseikan\ ;
+量子化 < ryoushika\ ;
+星影 < hoshikage\ ;
+独力 < dokuryoku\ ;
+好一対 < kouittsui\ ;
+触診 < shokushin\ ;
+事務局 < jimukyoku\ ;
+壺皿 < tsubozara\ ;
+副鼻腔 < fukubikuu\ ;
+浪費癖 < rouhiheki\ ;
+給費生 < kyuuhisei\ ;
+県人会 < kenjinkai\ ;
+主任者 < shuninsha\ ;
+公用文 < kouyoubun\ ;
+罪人 < tsumibito\ ;
+行政区 < gyouseiku\ ;
+推薦状 < suisenjou\ ;
+中距離 < chuukyori\ ;
+共産化 < kyousanka\ ;
+会期中 < kaikichuu\ ;
+野球場 < yakyuujou\ ;
+閑古鳥 < kankodori\ ;
+産褥期 < sanjokuki\ ;
+主導権 < shudouken\ ;
+募金箱 < bokinbako\ ;
+硬口蓋 < koukougai\ ;
+敷物 < shikimono\ ;
+史記抄 < shikishou\ ;
+年齢層 < nenreisou\ ;
+頭頂部 < touchoubu\ ;
+雪男 < yukiotoko\ ;
+早場米 < hayabamai\ ;
+口語訳 < kougoyaku\ ;
+油圧計 < yuatsukei\ ;
+夏物 < natsumono\ ;
+二毛作 < nimousaku\ ;
+検糖計 < kentoukei\ ;
+誘導体 < yuudoutai\ ;
+真四角 < mashikaku\ ;
+申命記 < shinmeiki\ ;
+脂肪層 < shibousou\ ;
+統計 < baratsuki\ ;
+物品税 < buppinzei\ ;
+鳳翅鐘 < houshitou\ ;
+女方 < on''nagata\ ;
+新橋 < shinbashi\ ;
+層積雲 < sousekiun\ ;
+秒時計 < byoudokei\ ;
+珊瑚礁 < sangoshou\ ;
+連体詞 < rentaishi\ ;
+熱病 < netsubyou\ ;
+電熱 < den''netsu\ ;
+星屑 < hoshikuzu\ ;
+天気具合 < tenkiguai\ ;
+屁理屈 < herikutsu\ ;
+志願者 < shigansha\ ;
+浪人生 < rouninsei\ ;
+不可逆 < fukagyaku\ ;
+隔絶 < kakuzetsu\ ;
+独仏 < dokufutsu\ ;
+大阪市 < oosakashi\ ;
+妻室 < saishitsu\ ;
+愛読書 < aidokusho\ ;
+可塑物 < kasobutsu\ ;
+新造語 < shinzougo\ ;
+物干 < monohoshi\ ;
+反対者 < hantaisha\ ;
+細道 < hosomichi\ ;
+黒砂糖 < kurozatou\ ;
+玄米茶 < genmaicha\ ;
+演繹法 < en''ekihou\ ;
+臨場感 < rinjoukan\ ;
+熱球 < netsukyuu\ ;
+偏西風 < henseifuu\ ;
+香味料 < koumiryou\ ;
+正甲板 < seikanpan\ ;
+審議会 < shingikai\ ;
+青森県 < aomoriken\ ;
+不感症 < fukanshou\ ;
+縞物 < shimamono\ ;
+禁衛隊 < kin''eitai\ ;
+新枕 < niimakura\ ;
+放水車 < housuisha\ ;
+耐水性 < taisuisei\ ;
+玄関番 < genkanban\ ;
+前夜祭 < zen''yasai\ ;
+月桂冠 < gekkeikan\ ;
+給血 < kyuuketsu\ ;
+二刀流 < nitouryuu\ ;
+新札 < shinsatsu\ ;
+所有権 < shoyuuken\ ;
+冷凍車 < reitousha\ ;
+新月 < shingetsu\ ;
+来会者 < raikaisha\ ;
+新曲 < shinkyoku\ ;
+一口同音 < ikkudouon\ ;
+上等品 < joutouhin\ ;
+荒療治 < araryouji\ ;
+楽観論 < rakkanron\ ;
+倶舎宗 < kushashuu\ ;
+無言劇 < mugongeki\ ;
+入苑券 < nyuuenken\ ;
+腱鞘炎 < kenshouen\ ;
+不可思議 < fukashigi\ ;
+高年者 < kounensha\ ;
+詰物 < tsumemono\ ;
+探海灯 < tankaitou\ ;
+無規律 < mukiritsu\ ;
+烏貝 < karasugai\ ;
+靴底 < kutsuzoko\ ;
+形容詞 < keiyoushi\ ;
+医事伝道 < ijidendou\ ;
+旧年 < furutoshi\ ;
+岩雲雀 < iwahibari\ ;
+星型 < hoshigata\ ;
+徒競走 < tokyousou\ ;
+不戦勝 < fusenshou\ ;
+自然人 < shizenjin\ ;
+家庭的 < kateiteki\ ;
+高気圧 < koukiatsu\ ;
+滑稽本 < kokkeibon\ ;
+女子寮 < joshiryou\ ;
+失望 < shitsubou\ ;
+政治的 < seijiteki\ ;
+上等兵 < joutouhei\ ;
+焼結 < shouketsu\ ;
+原稿紙 < genkoushi\ ;
+色眼鏡 < iromegane\ ;
+楽譜台 < gakufudai\ ;
+冷水塊 < reisuikai\ ;
+保護色 < hogoshoku\ ;
+塵紙 < chirigami\ ;
+色収差 < iroshuusa\ ;
+美術家 < bijutsuka\ ;
+再評価 < saihyouka\ ;
+失明 < shitsumei\ ;
+準備中 < junbichuu\ ;
+光合成 < kougousei\ ;
+悪条件 < akujouken\ ;
+三悪趣 < sanakushu\ ;
+主産地 < shusanchi\ ;
+音部記号 < onbukigou\ ;
+巻積雲 < kensekiun\ ;
+希硫酸 < kiryuusan\ ;
+文月 < fumidzuki\ ;
+脱穀機 < dakkokuki\ ;
+鼎談会 < teidankai\ ;
+複本位 < fukuhon''i\ ;
+俗趣味 < zokushumi\ ;
+終止符 < shuushifu\ ;
+炭質 < tanshitsu\ ;
+精製品 < seiseihin\ ;
+憲兵隊 < kenpeitai\ ;
+誅殺 < chuusatsu\ ;
+大昔 < oomukashi\ ;
+配偶者 < haiguusha\ ;
+充当金 < juutoukin\ ;
+消火栓 < shoukasen\ ;
+奈良時代 < narajidai\ ;
+寄留者 < kiryuusha\ ;
+灰神楽 < haikagura\ ;
+金一封 < kin''ippuu\ ;
+床運動 < yukaundou\ ;
+長靴 < nagagutsu\ ;
+寄生虫 < kiseichuu\ ;
+糸車 < itoguruma\ ;
+夜晒 < yozarashi\ ;
+三等分 < santoubun\ ;
+喫水線 < kissuisen\ ;
+夏服 < natsufuku\ ;
+悪玉化 < akudamaka\ ;
+超簡易 < choukan''i\ ;
+靴墨 < kutsuzumi\ ;
+裸馬 < hadakauma\ ;
+戯作者 < gesakusha\ ;
+妹分 < imoutobun\ ;
+日墨 < nichiboku\ ;
+新式 < shinshiki\ ;
+青瓢箪 < aobyoutan\ ;
+患者様 < kanjasama\ ;
+五寸釘 < gosunkugi\ ;
+仮登記 < karitouki\ ;
+合同軍 < goudougun\ ;
+夏時 < natsudoki\ ;
+炸裂 < sakuretsu\ ;
+特別 < tokubetsu\ ;
+複雑 < fukuzatsu\ ;
+靴型 < kutsugata\ ;
+粒食 < ryuushoku\ ;
+非現業 < higengyou\ ;
+勤労者 < kinrousha\ ;
+固定長 < koteichou\ ;
+殺菌剤 < sakkinzai\ ;
+結膜 < ketsumaku\ ;
+洋服屋 < youfukuya\ ;
+起爆剤 < kibakuzai\ ;
+表示灯 < hyoujitou\ ;
+便利帳 < benrichou\ ;
+取材班 < shuzaihan\ ;
+脂肪体 < shiboutai\ ;
+郵便屋 < yuubin''ya\ ;
+縞柄 < shimagara\ ;
+中辞典 < chuujiten\ ;
+洗面台 < senmendai\ ;
+失恋 < shitsuren\ ;
+内裏雛 < dairibina\ ;
+全二重 < zen''nijuu\ ;
+溶解性 < youkaisei\ ;
+失念 < shitsunen\ ;
+雨曇 < amagumori\ ;
+整数論 < seisuuron\ ;
+評決 < hyouketsu\ ;
+民社党 < minshatou\ ;
+企画書 < kikakusho\ ;
+生地獄 < ikijigoku\ ;
+純米酒 < junmaishu\ ;
+回遊魚 < kaiyuugyo\ ;
+無関心 < mukanshin\ ;
+耳鼻咽喉 < jibiinkou\ ;
+女坂 < on''nazaka\ ;
+続発 < zokuhatsu\ ;
+友人間 < yuujinkan\ ;
+有斐閣 < yuuhikaku\ ;
+販売店 < hanbaiten\ ;
+雑株 < zatsukabu\ ;
+志望校 < shiboukou\ ;
+奉迎門 < hougeimon\ ;
+牛刺 < gyuusashi\ ;
+執著 < shuuchaku\ ;
+面会人 < menkainin\ ;
+一箇月 < ikkagetsu\ ;
+送水管 < sousuikan\ ;
+糖質 < toushitsu\ ;
+冷凍船 < reitousen\ ;
+年配者 < nenpaisha\ ;
+手数料 < tesuuryou\ ;
+離魂病 < rikonbyou\ ;
+空気汚染 < kuukiosen\ ;
+片口 < katakuchi\ ;
+水中花 < suichuuka\ ;
+動名詞 < doumeishi\ ;
+細腰 < hosogoshi\ ;
+烏帽子貝 < eboshigai\ ;
+黄金色 < koganeiro\ ;
+二元的 < nigenteki\ ;
+縞栗鼠 < shimarisu\ ;
+娯楽場 < gorakujou\ ;
+遊覧地 < yuuranchi\ ;
+本因坊 < hon''inbou\ ;
+共栄圏 < kyoueiken\ ;
+相対死 < aitaijini\ ;
+国自慢 < kunijiman\ ;
+重大視 < juudaishi\ ;
+企業内 < kigyounai\ ;
+集札 < shuusatsu\ ;
+同窓会 < dousoukai\ ;
+法蓮草 < hourensou\ ;
+海外版 < kaigaiban\ ;
+扇状地 < senjouchi\ ;
+日出 < nisshutsu\ ;
+打撃戦 < dagekisen\ ;
+有象無象 < uzoumuzou\ ;
+透写紙 < toushashi\ ;
+人文史 < jinbunshi\ ;
+指定券 < shiteiken\ ;
+香水瓶 < kousuibin\ ;
+熱帯病 < netaibyou\ ;
+伝記物 < denkimono\ ;
+計量器 < keiryouki\ ;
+補償金 < hoshoukin\ ;
+軽犯罪 < keihanzai\ ;
+坪量 < tsuboryou\ ;
+合憲性 < goukensei\ ;
+地鎮祭 < jichinsai\ ;
+主体性 < shutaisei\ ;
+素粒子 < soryuushi\ ;
+蝿地獄 < haejigoku\ ;
+大災害 < daisaigai\ ;
+奴凧 < yakkodako\ ;
+楽天家 < rakutenka\ ;
+理性的 < riseiteki\ ;
+綿油 < wataabura\ ;
+然然 < shikajika\ ;
+鼓笛隊 < kotekitai\ ;
+起訴猶予 < kisoyuuyo\ ;
+寒暖計 < kandankei\ ;
+花粉症 < kafunshou\ ;
+人為的 < jin''iteki\ ;
+伊勢神宮 < isejinguu\ ;
+受領者 < juryousha\ ;
+企画性 < kikakusei\ ;
+内需型 < naijugata\ ;
+尸位素餐 < shiisosan\ ;
+焦熱 < shounetsu\ ;
+原成岩 < genseigan\ ;
+表示板 < hyoujiban\ ;
+夏山 < natsuyama\ ;
+爪切 < tsumekiri\ ;
+永久歯 < eikyuushi\ ;
+千社札 < senjafuda\ ;
+菩提心 < bodaishin\ ;
+政所 < mandokoro\ ;
+教式 < kyoushiki\ ;
+表示書 < hyoujisho\ ;
+放水管 < housuikan\ ;
+双子葉 < soushiyou\ ;
+性転換 < seitenkan\ ;
+輸送量 < yusouryou\ ;
+所有地 < shoyuuchi\ ;
+鼓手長 < koshuchou\ ;
+爪先 < tsumasaki\ ;
+総本店 < souhonten\ ;
+元気者 < genkimono\ ;
+代弁者 < daibensha\ ;
+野天風呂 < notenburo\ ;
+町医者 < machiisha\ ;
+製材所 < seizaisho\ ;
+塩漬 < shiodzuke\ ;
+反乱軍 < hanrangun\ ;
+総人口 < soujinkou\ ;
+店仕舞 < misejimai\ ;
+中保者 < chuuhosha\ ;
+奔出 < honshutsu\ ;
+立法者 < rippousha\ ;
+草相撲 < kusazumou\ ;
+予備錨 < yobiikari\ ;
+隔月 < kakugetsu\ ;
+歓送会 < kansoukai\ ;
+双翅類 < soushirui\ ;
+紙細工 < kamizaiku\ ;
+山水荘 < sansuisou\ ;
+表沙汰 < omotezata\ ;
+唐獅子 < karajishi\ ;
+平和国 < heiwakoku\ ;
+低気圧 < teikiatsu\ ;
+作業用 < sagyouyou\ ;
+撃発 < gekihatsu\ ;
+執筆 < shippitsu\ ;
+水害地 < suigaichi\ ;
+総本山 < souhonzan\ ;
+演説家 < enzetsuka\ ;
+盲腸炎 < mouchouen\ ;
+斥力 < sekiryoku\ ;
+終発 < shuuhatsu\ ;
+遣唐使 < kentoushi\ ;
+坂道 < sakamichi\ ;
+作業班 < sagyouhan\ ;
+活性炭 < kasseitan\ ;
+最小化 < saishouka\ ;
+乗降場 < joukoujou\ ;
+俗世界 < zokusekai\ ;
+毛織物 < keorimono\ ;
+志願書 < shigansho\ ;
+不死鳥 < fushichou\ ;
+悲観的 < hikanteki\ ;
+撲滅 < bokumetsu\ ;
+成功者 < seikousha\ ;
+看護学 < kangogaku\ ;
+上向線 < joukousen\ ;
+消炎剤 < shouenzai\ ;
+公休日 < koukyuubi\ ;
+総罷業 < souhigyou\ ;
+再投資 < saitoushi\ ;
+歌劇場 < kagekijou\ ;
+浄水場 < jousuijou\ ;
+雪女 < yukion''na\ ;
+詳密 < shoumitsu\ ;
+水耕法 < suikouhou\ ;
+大演習 < daienshuu\ ;
+無理無体 < murimutai\ ;
+実測図 < jissokuzu\ ;
+膨張度 < bouchoudo\ ;
+映写幕 < eishamaku\ ;
+上水道 < jousuidou\ ;
+全住民 < zenjuumin\ ;
+浄水地 < jousuichi\ ;
+雑学 < zatsugaku\ ;
+均質 < kinshitsu\ ;
+男性用 < danseiyou\ ;
+好奇心 < koukishin\ ;
+肉体美 < nikutaibi\ ;
+国家的 < kokkateki\ ;
+犠牲的 < giseiteki\ ;
+連子窓 < renjimado\ ;
+相対性 < soutaisei\ ;
+烏瓜 < karasuuri\ ;
+関心事 < kanshinji\ ;
+北斗星 < hokutosei\ ;
+本拠地 < honkyochi\ ;
+舞踏病 < butoubyou\ ;
+内外人 < naigaijin\ ;
+撲殺 < bokusatsu\ ;
+摘発 < tekihatsu\ ;
+下種女 < gesuon''na\ ;
+赤電車 < akadensha\ ;
+夏向 < natsumuki\ ;
+粘板岩 < nenbangan\ ;
+事業者 < jigyousha\ ;
+歓迎会 < kangeikai\ ;
+託児所 < takujisho\ ;
+水時計 < mizudokei\ ;
+捨鉢 < sutebachi\ ;
+盲導犬 < moudouken\ ;
+販売人 < hanbainin\ ;
+鯐 < subashiri\ ;
+人国記 < jinkokuki\ ;
+普及版 < fukyuuban\ ;
+鮗 < konoshiro\ ;
+半部族 < hanbuzoku\ ;
+飛道具 < tobidougu\ ;
+人間界 < ningenkai\ ;
+乳母車 < ubaguruma\ ;
+惨死体 < zanshitai\ ;
+堅物 < katabutsu\ ;
+運搬人 < unpan''nin\ ;
+抗生剤 < kouseizai\ ;
+国鉄 < kokutetsu\ ;
+角樽 < tsunodaru\ ;
+撃滅 < gekimetsu\ ;
+世迷言 < yomaigoto\ ;
+伝言板 < dengonban\ ;
+自立語 < jiritsugo\ ;
+糧秣 < ryoumatsu\ ;
+熱帯林 < nettairin\ ;
+永久性 < eikyuusei\ ;
+製本屋 < seihon''ya\ ;
+汽車賃 < kishachin\ ;
+隣室 < rinshitsu\ ;
+禁裏様 < kinrisama\ ;
+慣用句 < kan''youku\ ;
+観光地 < kankouchi\ ;
+会見者 < kaikensha\ ;
+東天紅 < toutenkou\ ;
+観光団 < kankoudan\ ;
+技巧的 < gikouteki\ ;
+楽隠居 < rakuinkyo\ ;
+高速度 < kousokudo\ ;
+私生子 < shiseishi\ ;
+日記帳 < nikkichou\ ;
+政治学 < seijigaku\ ;
+外付 < sotodzuke\ ;
+水理学 < suirigaku\ ;
+母子寮 < boshiryou\ ;
+着心地 < kigokochi\ ;
+夏作 < natsusaku\ ;
+戒厳令 < kaigenrei\ ;
+投与量 < touyoryou\ ;
+照尺 < shoushaku\ ;
+意気軒高 < ikikenkou\ ;
+雪兎 < yukiusagi\ ;
+哺乳類 < honyuurui\ ;
+大蝙蝠 < ookoumori\ ;
+無投票 < mutouhyou\ ;
+指了図 < shiryouzu\ ;
+適応性 < tekiousei\ ;
+襲爵 < shuushaku\ ;
+漫才師 < manzaishi\ ;
+事業税 < jigyouzei\ ;
+収容所 < shuuyoujo\ ;
+国璽書 < kokujisho\ ;
+感覚器 < kankakuki\ ;
+教育費 < kyouikuhi\ ;
+固定給 < koteikyuu\ ;
+展覧会 < tenrankai\ ;
+交代制 < koutaisei\ ;
+阝 < kozatohen\ ;
+覆滅 < fukumetsu\ ;
+巡視艇 < junshitei\ ;
+巡視船 < junshisen\ ;
+汎関数 < hankansuu\ ;
+全人生 < zenjinsei\ ;
+断強度 < dankyoudo\ ;
+処女作 < shojosaku\ ;
+個性的 < koseiteki\ ;
+墨壷 < sumitsubo\ ;
+全音階 < zen''onkai\ ;
+誅伐 < chuubatsu\ ;
+反乱者 < hanransha\ ;
+軽音楽 < keiongaku\ ;
+回復期 < kaifukuki\ ;
+不合格 < fugoukaku\ ;
+周波計 < shuuhakei\ ;
+不可欠 < fukaketsu\ ;
+放出 < houshutsu\ ;
+終極 < shuukyoku\ ;
+硬化症 < koukashou\ ;
+逆効果 < gyakkouka\ ;
+裸線 < hadakasen\ ;
+覆没 < fukubotsu\ ;
+一等国 < ittoukoku\ ;
+全封地 < zenhouchi\ ;
+分配金 < bunpaikin\ ;
+語尾変化 < gobihenka\ ;
+回遊船 < kaiyuusen\ ;
+公会堂 < koukaidou\ ;
+無表情 < muhyoujou\ ;
+煩型 < urusagata\ ;
+水餃子 < suigyouza\ ;
+詔勅 < shouchoku\ ;
+風土病 < fuudobyou\ ;
+支出 < shishutsu\ ;
+逃避的 < touhiteki\ ;
+古文学 < kobungaku\ ;
+優等生 < yuutousei\ ;
+綢密 < chuumitsu\ ;
+固定票 < koteihyou\ ;
+対向車 < taikousha\ ;
+組曲 < kumikyoku\ ;
+事業界 < jigyoukai\ ;
+批判的 < hihanteki\ ;
+天地人 < tenchijin\ ;
+血統書 < kettousho\ ;
+中二階 < chuunikai\ ;
+継室 < keishitsu\ ;
+国表 < kuniomote\ ;
+山葡萄 < yamabudou\ ;
+黄道面 < koudoumen\ ;
+受難週 < junanshuu\ ;
+尊厳死 < songenshi\ ;
+考古学 < koukogaku\ ;
+保険証 < hokenshou\ ;
+高分子 < koubunshi\ ;
+冥加金 < myougakin\ ;
+内地米 < naichimai\ ;
+枯葉剤 < karehazai\ ;
+締切 < shimekiri\ ;
+招待日 < shoutaibi\ ;
+誓願権 < seiganken\ ;
+愛国者 < aikokusha\ ;
+訴願人 < sogan''nin\ ;
+領事館 < ryoujikan\ ;
+主犯者 < shuhansha\ ;
+防護壁 < bougoheki\ ;
+資金源 < shikingen\ ;
+鼠咬症 < sokoushou\ ;
+三重盗 < sanjuutou\ ;
+連体形 < rentaikei\ ;
+土色 < tsuchiiro\ ;
+現段階 < gendankai\ ;
+成年者 < seinensha\ ;
+金解禁 < kinkaikin\ ;
+羽子突 < hanetsuki\ ;
+洗濯粉 < sentakuko\ ;
+光化学 < koukagaku\ ;
+農学部 < nougakubu\ ;
+主任制 < shuninsei\ ;
+舞踏服 < butoufuku\ ;
+経験論 < keikenron\ ;
+経験談 < keikendan\ ;
+接続 < setsuzoku\ ;
+擦過傷 < sakkashou\ ;
+米粒 < kometsubu\ ;
+糟漬 < kasudzuke\ ;
+四重奏 < shijuusou\ ;
+踝 < kurubushi\ ;
+相対値 < soutaichi\ ;
+母子共 < boshitomo\ ;
+鉄火巻 < tekkamaki\ ;
+英作文 < eisakubun\ ;
+戦車兵 < senshahei\ ;
+再投稿 < saitoukou\ ;
+教養部 < kyouyoubu\ ;
+立法権 < rippouken\ ;
+妥協点 < dakyouten\ ;
+雲仙岳 < unzendake\ ;
+受領書 < juryousho\ ;
+不活化 < fukatsuka\ ;
+文章語 < bunshougo\ ;
+青信号 < aoshingou\ ;
+時計皿 < tokeizara\ ;
+幽冥界 < yuumeikai\ ;
+執行吏 < shikkouri\ ;
+等高線 < toukousen\ ;
+絞首台 < koushudai\ ;
+破擦音 < hasatsuon\ ;
+送受信 < soujushin\ ;
+撫子 < nadeshiko\ ;
+一神論 < isshinron\ ;
+着道楽 < kidouraku\ ;
+明後年 < myougonen\ ;
+法務省 < houmushou\ ;
+酵素学 < kousogaku\ ;
+糠油 < nukaabura\ ;
+長物 < choubutsu\ ;
+図像学 < zuzougaku\ ;
+奉加帳 < hougachou\ ;
+感嘆詞 < kantanshi\ ;
+前売券 < maeuriken\ ;
+親心 < oyagokoro\ ;
+衆説 < shuusetsu\ ;
+志願兵 < shiganhei\ ;
+反射光 < hanshakou\ ;
+皮細工 < kawazaiku\ ;
+復水器 < fukusuiki\ ;
+関連性 < kanrensei\ ;
+統語学 < tougogaku\ ;
+絶妙 < zetsumyou\ ;
+講演料 < kouenryou\ ;
+敬老会 < keiroukai\ ;
+時間軸 < jikanjiku\ ;
+反対党 < hantaitou\ ;
+搭乗者 < toujousha\ ;
+九分九厘 < kubukurin\ ;
+糸桜 < itozakura\ ;
+社民党 < shamintou\ ;
+絞首刑 < koushukei\ ;
+創建者 < soukensha\ ;
+最大限 < saidaigen\ ;
+陳列 < chinretsu\ ;
+糸柳 < itoyanagi\ ;
+楓子香 < fuushikou\ ;
+混成岩 < konseigan\ ;
+執拗 < shitsuyou\ ;
+紙粘土 < kaminendo\ ;
+条件文 < joukenbun\ ;
+意識体 < ishikitai\ ;
+私企業 < shikigyou\ ;
+空模様 < soramoyou\ ;
+公有林 < kouyuurin\ ;
+山水楼 < sansuirou\ ;
+裃 < kamishimo\ ;
+寄留地 < kiryuuchi\ ;
+断剛性 < dangousei\ ;
+空元気 < karagenki\ ;
+衤 < koromohen\ ;
+打算的 < dasanteki\ ;
+退蔵品 < taizouhin\ ;
+親密 < shinmitsu\ ;
+影響圏 < eikyouken\ ;
+真善美 < shinzenbi\ ;
+手術衣 < shujutsui\ ;
+人間愛 < ningen''ai\ ;
+理知的 < richiteki\ ;
+筒音 < tsutsuoto\ ;
+琥珀色 < kohakuiro\ ;
+御蔭様 < okagesama\ ;
+毛細管 < mousaikan\ ;
+紋所 < mondokoro\ ;
+袋網 < fukuroami\ ;
+白胡麻 < shirogoma\ ;
+自己規制 < jikokisei\ ;
+主人公 < shujinkou\ ;
+同委員会 < douiinkai\ ;
+人間性 < ningensei\ ;
+単孔類 < tankourui\ ;
+同労者 < dourousha\ ;
+即時性 < sokujisei\ ;
+乳呑児 < chinomigo\ ;
+不徳漢 < futokukan\ ;
+遭遇戦 < souguusen\ ;
+言伝 < kotodzute\ ;
+又家来 < matagerai\ ;
+火柱 < hibashira\ ;
+一妻多夫 < issaitafu\ ;
+閥族 < batsuzoku\ ;
+正書法 < seishohou\ ;
+独自性 < dokujisei\ ;
+弁財天 < benzaiten\ ;
+勤務先 < kinmusaki\ ;
+角叉 < tsunomata\ ;
+持久戦 < jikyuusen\ ;
+重要視 < juuyoushi\ ;
+空梅雨 < karatsuyu\ ;
+混成団 < konseidan\ ;
+不正行為 < fuseikoui\ ;
+抜錨 < batsubyou\ ;
+火口壁 < kakouheki\ ;
+時間表 < jikanhyou\ ;
+砂利道 < jarimichi\ ;
+会計官 < kaikeikan\ ;
+賤業婦 < sengyoufu\ ;
+経験者 < keikensha\ ;
+韓国語 < hankokugo\ ;
+教材費 < kyouzaihi\ ;
+国立 < kokuritsu\ ;
+勝利者 < shourisha\ ;
+潜伏期 < senpukuki\ ;
+大団円 < daidan''en\ ;
+午前様 < gozensama\ ;
+海潮音 < kaichouon\ ;
+正犯者 < seihansha\ ;
+可圧性 < kaatsusei\ ;
+船大工 < funadaiku\ ;
+土地柄 < tochigara\ ;
+登舷礼 < tougenrei\ ;
+激突 < gekitotsu\ ;
+政府筋 < seifusuji\ ;
+活性剤 < kasseizai\ ;
+反体制 < hantaisei\ ;
+藻菌類 < soukinrui\ ;
+滑石粉 < kassekiko\ ;
+緩衝器 < kanshouki\ ;
+鳩羽色 < hatobairo\ ;
+顕微鏡 < kenbikyou\ ;
+名店街 < meitengai\ ;
+利休色 < rikyuuiro\ ;
+国事犯 < kokujihan\ ;
+門松 < kadomatsu\ ;
+混成品 < konseihin\ ;
+分配者 < bunpaisha\ ;
+半透明 < hantoumei\ ;
+分水線 < bunsuisen\ ;
+遊戯的 < yuugiteki\ ;
+近視眼 < kinshigan\ ;
+会計士 < kaikeishi\ ;
+抜道 < nukemichi\ ;
+初年兵 < shonenhei\ ;
+同年輩 < dounenpai\ ;
+珍無類 < chinmurui\ ;
+箝口令 < kankourei\ ;
+合法性 < gouhousei\ ;
+総領事 < souryouji\ ;
+州政府 < shuuseifu\ ;
+商務官 < shoumukan\ ;
+長月 < nagatsuki\ ;
+応接間 < ousetsuma\ ;
+血肉 < ketsuniku\ ;
+参会者 < sankaisha\ ;
+五人組 < goningumi\ ;
+黄水晶 < kizuishou\ ;
+内裏様 < dairisama\ ;
+大衆化 < taishuuka\ ;
+重大性 < juudaisei\ ;
+外国語 < gaikokugo\ ;
+現状維持 < genjouiji\ ;
+勢力家 < seiryokka\ ;
+声楽家 < seigakuka\ ;
+製靴業 < seikagyou\ ;
+紛失 < funshitsu\ ;
+箱馬車 < hakobasha\ ;
+宮内省 < kunaishou\ ;
+土牢 < tsuchirou\ ;
+事業所 < jigyousho\ ;
+穿山甲 < senzankou\ ;
+臨港線 < rinkousen\ ;
+唯名論 < yuimeiron\ ;
+米油 < komeabura\ ;
+改造車 < kaizousha\ ;
+黄金国 < ougonkoku\ ;
+芋羊羹 < imoyoukan\ ;
+更生品 < kouseihin\ ;
+広小路 < hirokouji\ ;
+筋道 < sujimichi\ ;
+空返事 < sorahenji\ ;
+篳篥 < hichiriki\ ;
+腐植土 < fushokudo\ ;
+次善策 < jizensaku\ ;
+美辞麗句 < bijireiku\ ;
+遠眼鏡 < toomegane\ ;
+創造者 < souzousha\ ;
+休電日 < kyuudenbi\ ;
+板門店 < hanmonten\ ;
+衝突 < shoutotsu\ ;
+導入部 < dounyuubu\ ;
+禅問答 < zenmondou\ ;
+複数個 < fukusuuko\ ;
+盲学校 < mougakkou\ ;
+研修課 < kenshuuka\ ;
+弾性体 < danseitai\ ;
+米櫃 < komebitsu\ ;
+献呈本 < kenteibon\ ;
+尾長鶏 < onagadori\ ;
+放送網 < housoumou\ ;
+麻酔薬 < masuiyaku\ ;
+千年紀 < sen''nenki\ ;
+僧帽弁 < soubouben\ ;
+太鼓腹 < taikobara\ ;
+不言不語 < fugenfugo\ ;
+前装砲 < zensouhou\ ;
+分遣隊 < bunkentai\ ;
+吹奏者 < suisousha\ ;
+竜骨 < ryuukotsu\ ;
+好角家 < koukakuka\ ;
+結了 < ketsuryou\ ;
+悪天候 < akutenkou\ ;
+推進機 < suishinki\ ;
+托鉢 < takuhatsu\ ;
+鉤十字 < kagijuuji\ ;
+乱気流 < rankiryuu\ ;
+冷凍剤 < reitouzai\ ;
+初対面 < shotaimen\ ;
+閏年 < uruudoshi\ ;
+竍 < dekaritto\ ;
+未収載 < mishuusai\ ;
+嗜好品 < shikouhin\ ;
+悪天使 < akutenshi\ ;
+強化米 < kyoukamai\ ;
+水雷艇 < suiraitei\ ;
+観楓会 < kanpuukai\ ;
+体験談 < taikendan\ ;
+無感覚 < mukankaku\ ;
+群速度 < gunsokudo\ ;
+電総研 < densouken\ ;
+不確定 < fukakutei\ ;
+白百合 < shirayuri\ ;
+舞踊劇 < buyougeki\ ;
+火口丘 < kakoukyuu\ ;
+不正確 < fuseikaku\ ;
+節約 < setsuyaku\ ;
+陽子線 < youshisen\ ;
+下部機関 < kabukikan\ ;
+個人誤差 < kojingosa\ ;
+時間給 < jikankyuu\ ;
+分水界 < bunsuikai\ ;
+乱反射 < ranhansha\ ;
+解答欄 < kaitouran\ ;
+魚雷艇 < gyoraitei\ ;
+公有地 < kouyuuchi\ ;
+欺瞞的 < gimanteki\ ;
+明瞭度 < meiryoudo\ ;
+会計係 < kaikeikei\ ;
+蟇蛙 < hikigaeru\ ;
+輸入税 < yunyuuzei\ ;
+蜀黍 < morokoshi\ ;
+不心得 < fukokoroe\ ;
+二業地 < nigyouchi\ ;
+単子論 < tanshiron\ ;
+証拠金 < shoukokin\ ;
+生演奏 < namaensou\ ;
+微分学 < bibungaku\ ;
+専従者 < senjuusha\ ;
+仙台侯 < sendaikou\ ;
+血眼 < chimanako\ ;
+箸箱 < hashibako\ ;
+複式 < fukushiki\ ;
+兄弟愛 < kyoudaiai\ ;
+万華鏡 < mangekyou\ ;
+西側 < nishigawa\ ;
+損失 < sonshitsu\ ;
+人間像 < ningenzou\ ;
+回帰的 < kaikiteki\ ;
+市民税 < shiminzei\ ;
+富士額 < fujibitai\ ;
+闖入 < chin''nyuu\ ;
+蜂鳥 < hachidori\ ;
+開票所 < kaihyoujo\ ;
+体育館 < taiikukan\ ;
+為体 < teitaraku\ ;
+変調波 < henchouha\ ;
+同盟軍 < doumeigun\ ;
+告訴人 < kokusonin\ ;
+学士院 < gakushiin\ ;
+倫理的 < rinriteki\ ;
+点鼻薬 < tenbiyaku\ ;
+投書欄 < toushoran\ ;
+訴訟法 < soshouhou\ ;
+溶質 < youshitsu\ ;
+四半分 < shihanbun\ ;
+吸音材 < kyuuonzai\ ;
+初体験 < shotaiken\ ;
+輸入盤 < yunyuuban\ ;
+不知火 < shiranuhi\ ;
+卵細胞 < ransaibou\ ;
+灰土 < haitsuchi\ ;
+二極化 < nikyokuka\ ;
+南京錠 < nankinjou\ ;
+鳩時計 < hatodokei\ ;
+哺乳瓶 < honyuubin\ ;
+西洋風 < seiyoufuu\ ;
+既製服 < kiseifuku\ ;
+自由意志 < jiyuuishi\ ;
+野外劇 < yagaigeki\ ;
+普遍的 < fuhenteki\ ;
+事業団 < jigyoudan\ ;
+小役人 < koyakunin\ ;
+鳥媒花 < choubaika\ ;
+自治領 < jichiryou\ ;
+裏扉 < uratobira\ ;
+破壊的 < hakaiteki\ ;
+搬出 < hanshutsu\ ;
+窮措大 < kyuusodai\ ;
+達磨船 < darumasen\ ;
+内在性 < naizaisei\ ;
+小荷物 < konimotsu\ ;
+日系人 < nikkeijin\ ;
+精神科 < seishinka\ ;
+一合目 < ichigoume\ ;
+住居跡 < juukyoato\ ;
+再抗弁 < saikouben\ ;
+農作業 < nousagyou\ ;
+螢光燈 < keikoutou\ ;
+付年表 < funenpyou\ ;
+正誤表 < seigohyou\ ;
+裏情 < uranasake\ ;
+四輪車 < yonrinsha\ ;
+蟇股 < kaerumata\ ;
+三重奏 < sanjuusou\ ;
+保証書 < hoshousho\ ;
+否定的 < hiteiteki\ ;
+不連続 < furenzoku\ ;
+武断的 < budanteki\ ;
+出穂期 < shussuiki\ ;
+上半期 < kamihanki\ ;
+単子葉 < tanshiyou\ ;
+微分商 < bibunshou\ ;
+血煙 < chikemuri\ ;
+義兄弟 < gikyoudai\ ;
+複素数 < fukusosuu\ ;
+転校生 < tenkousei\ ;
+昼夜帯 < chuuyaobi\ ;
+事件表 < jikenhyou\ ;
+強硬派 < kyoukouha\ ;
+排気量 < haikiryou\ ;
+二次記憶 < nijikioku\ ;
+女文字 < on''namoji\ ;
+無所属 < mushozoku\ ;
+周波数 < shuuhasuu\ ;
+猛禽類 < moukinrui\ ;
+生態系 < seitaikei\ ;
+滑落 < katsuraku\ ;
+持物 < mochimono\ ;
+散文詩 < sanbunshi\ ;
+栽培種 < saibaishu\ ;
+原著者 < genchosha\ ;
+電話料 < denwaryou\ ;
+技能賞 < ginoushou\ ;
+料金所 < ryoukinjo\ ;
+支配者 < shihaisha\ ;
+洗濯屋 < sentakuya\ ;
+側近者 < sokkinsha\ ;
+門口 < kadoguchi\ ;
+実社会 < jisshakai\ ;
+御連絡 < gorenraku\ ;
+香川県 < kagawaken\ ;
+点滴器 < tentekiki\ ;
+予定表 < yoteihyou\ ;
+弁護料 < bengoryou\ ;
+主要駅 < shuyoueki\ ;
+区会議員 < kukaigiin\ ;
+挟殺 < kyousatsu\ ;
+対応策 < taiousaku\ ;
+輸入港 < yunyuukou\ ;
+同志会 < doushikai\ ;
+迎撃機 < geigekiki\ ;
+人地名 < jinchimei\ ;
+保険料 < hokenryou\ ;
+大和芋 < yamatoimo\ ;
+高優先 < kouyuusen\ ;
+放送法 < housouhou\ ;
+示力図 < jiryokuzu\ ;
+古事記伝 < kojikiden\ ;
+雪女郎 < yukijorou\ ;
+表書 < omotegaki\ ;
+零細農 < reisainou\ ;
+糊代 < norishiro\ ;
+真清水 < mashimizu\ ;
+助太刀 < sukedachi\ ;
+克己心 < kokkishin\ ;
+設計者 < sekkeisha\ ;
+無神論 < mushinron\ ;
+無為無策 < muimusaku\ ;
+有袋類 < yuutairui\ ;
+一殺那 < issetsuna\ ;
+心理戦 < shinrisen\ ;
+御歴歴 < orekireki\ ;
+不平等 < fubyoudou\ ;
+利尿剤 < rinyouzai\ ;
+穴隙 < ketsugeki\ ;
+牧歌的 < bokkateki\ ;
+漸近線 < zenkinsen\ ;
+子安貝 < koyasukai\ ;
+旅日記 < tabinikki\ ;
+売上金 < uriagekin\ ;
+受給者 < jukyuusha\ ;
+明年度 < myounendo\ ;
+二枚舌 < nimaijita\ ;
+三重冠 < sanjuukan\ ;
+誘電子 < yuudenshi\ ;
+錯雑 < sakuzatsu\ ;
+圧密 < atsumitsu\ ;
+関係詞 < kankeishi\ ;
+紡錘形 < bousuikei\ ;
+奉幣使 < houheishi\ ;
+市民法 < shiminhou\ ;
+最敬礼 < saikeirei\ ;
+椴 < todomatsu\ ;
+苦学生 < kugakusei\ ;
+小生意気 < konamaiki\ ;
+得意先 < tokuisaki\ ;
+雨仕度 < amajitaku\ ;
+周波帯 < shuuhatai\ ;
+漬物 < tsukemono\ ;
+管制官 < kanseikan\ ;
+蜜豆 < mitsumame\ ;
+漂着 < hyouchaku\ ;
+燃料費 < nenryouhi\ ;
+量記号 < ryoukigou\ ;
+発光体 < hakkoutai\ ;
+半円形 < han''enkei\ ;
+汚染除去 < osenjokyo\ ;
+提出 < teishutsu\ ;
+円虫類 < enchuurui\ ;
+扶養義務 < fuyougimu\ ;
+懸想文 < kesoubumi\ ;
+検潮器 < kenchouki\ ;
+姉妹編 < shimaihen\ ;
+血糖値 < kettouchi\ ;
+深靴 < fukagutsu\ ;
+無重量 < mujuuryou\ ;
+電話帳 < denwachou\ ;
+午前中 < gozenchuu\ ;
+営業所 < eigyousho\ ;
+節欲 < setsuyoku\ ;
+米市場 < beiichiba\ ;
+不動心 < fudoushin\ ;
+袋帯 < fukuroobi\ ;
+小判形 < kobangata\ ;
+照明器 < shoumeiki\ ;
+徹甲弾 < tekkoudan\ ;
+宮内庁 < kunaichou\ ;
+擬古主義 < gikoshugi\ ;
+市民権 < shiminken\ ;
+穀食 < kokushoku\ ;
+半舷砲 < hangenhou\ ;
+権威筋 < ken''isuji\ ;
+変電所 < hendensho\ ;
+積雪 < sekisetsu\ ;
+電解液 < denkaieki\ ;
+雲上人 < unjoubito\ ;
+節榑 < fushikure\ ;
+一周年 < isshuunen\ ;
+血族 < ketsuzoku\ ;
+管制塔 < kanseitou\ ;
+華厳経 < kegonkyou\ ;
+対情報 < taijouhou\ ;
+格変化 < kakuhenka\ ;
+教育家 < kyouikuka\ ;
+安息香 < ansokukou\ ;
+石鹸水 < sekkensui\ ;
+不勉強 < fubenkyou\ ;
+塩化物 < enkabutsu\ ;
+九寸五分 < kusungobu\ ;
+両用機 < ryouyouki\ ;
+当世風 < touseifuu\ ;
+策略 < sakuryaku\ ;
+格天井 < goutenjou\ ;
+中耕機 < chuukouki\ ;
+不適格 < futekkaku\ ;
+遠心分 < enshinbun\ ;
+鍼術 < shinjutsu\ ;
+普通法 < futsuuhou\ ;
+媒染剤 < baisenzai\ ;
+破裂音 < haretsuon\ ;
+主観論 < shukanron\ ;
+二番作 < nibansaku\ ;
+生命線 < seimeisen\ ;
+空対空 < kuutaikuu\ ;
+猛吹雪 < moufubuki\ ;
+拓殖 < takushoku\ ;
+高射砲 < koushahou\ ;
+一歩銀 < ichibugin\ ;
+奈良漬 < naradzuke\ ;
+形象化 < keishouka\ ;
+内地人 < naichijin\ ;
+石南花 < shakunage\ ;
+傀儡師 < kairaishi\ ;
+一歩金 < ichibukin\ ;
+女郎蜘蛛 < jorougumo\ ;
+痩我慢 < yasegaman\ ;
+蛙跳 < kaerutobi\ ;
+悪因縁 < akuin''nen\ ;
+不眠症 < fuminshou\ ;
+電解槽 < denkaisou\ ;
+法華宗 < hokkeshuu\ ;
+一瞬間 < isshunkan\ ;
+正三位 < shousanmi\ ;
+弾道弾 < dandoudan\ ;
+混合林 < kongourin\ ;
+水墨画 < suibokuga\ ;
+交易会 < kouekikai\ ;
+高楊子 < takayouji\ ;
+権威的 < ken''iteki\ ;
+社用車 < shayousha\ ;
+分水嶺 < bunsuirei\ ;
+子供用 < kodomoyou\ ;
+親孝行 < oyakoukou\ ;
+発射筒 < hasshatou\ ;
+拾万円 < juuman''en\ ;
+勤皇家 < kin''nouka\ ;
+乳化剤 < nyuukazai\ ;
+近地点 < kinchiten\ ;
+圧力 < atsuryoku\ ;
+無競争 < mukyousou\ ;
+交際法 < kousaihou\ ;
+参与者 < san''yosha\ ;
+竹箒 < takebouki\ ;
+飲料水 < inryousui\ ;
+鼻面 < hanadzura\ ;
+秋日和 < akibiyori\ ;
+区役所 < kuyakusho\ ;
+立志伝 < risshiden\ ;
+天秤棒 < tenbinbou\ ;
+変調器 < henchouki\ ;
+関係者 < kankeisha\ ;
+不随意筋 < fuzuiikin\ ;
+大成功 < daiseikou\ ;
+二人称 < nininshou\ ;
+偶像視 < guuzoushi\ ;
+偶蹄類 < guuteirui\ ;
+来訪者 < raihousha\ ;
+騒乱罪 < souranzai\ ;
+完成品 < kanseihin\ ;
+移行期間 < ikoukikan\ ;
+袖口 < sodeguchi\ ;
+創造性 < souzousei\ ;
+捻出 < nenshutsu\ ;
+又請負 < mataukeoi\ ;
+金閣寺 < kinkakuji\ ;
+誘電体 < yuudentai\ ;
+南京米 < nankinmai\ ;
+無神経 < mushinkei\ ;
+銀交換 < ginkoukan\ ;
+嵙 < yamashina\ ;
+製塩業 < seiengyou\ ;
+教会員 < kyoukaiin\ ;
+啓蟄 < keichitsu\ ;
+搭乗券 < toujouken\ ;
+過硫酸 < karyuusan\ ;
+運命的 < unmeiteki\ ;
+観桜会 < kan''oukai\ ;
+涙雨 < namidaame\ ;
+無礼者 < bureimono\ ;
+構文法 < koubunpou\ ;
+篤実 < tokujitsu\ ;
+鎖糸 < kusariito\ ;
+禿鷲 < hagewashi\ ;
+血尿 < ketsunyou\ ;
+接近戦 < sekkinsen\ ;
+無法者 < muhoumono\ ;
+懲罰 < choubatsu\ ;
+不適当 < futekitou\ ;
+無水鍋 < musuinabe\ ;
+月給日 < gekkyuubi\ ;
+国力 < kokuryoku\ ;
+斥候隊 < sekkoutai\ ;
+創業費 < sougyouhi\ ;
+国別 < kunibetsu\ ;
+重要性 < juuyousei\ ;
+総売上 < souuriage\ ;
+十円玉 < juuendama\ ;
+抽斗 < hikidashi\ ;
+倫理学 < rinrigaku\ ;
+一週間 < isshuukan\ ;
+社内報 < shanaihou\ ;
+住宅費 < juutakuhi\ ;
+屈地性 < kutchisei\ ;
+付加価値 < fukakachi\ ;
+築山 < tsukiyama\ ;
+国有化 < kokuyuuka\ ;
+通風機 < tsuufuuki\ ;
+家屋敷 < ieyashiki\ ;
+山椒魚 < sanshouuo\ ;
+公文書 < koubunsho\ ;
+決定論 < ketteiron\ ;
+保証人 < hoshounin\ ;
+沿海州 < enkaishuu\ ;
+不道徳 < fudoutoku\ ;
+便乗者 < binjousha\ ;
+一升瓶 < isshoubin\ ;
+空腹時 < kuufukuji\ ;
+前衛戦 < zen''eisen\ ;
+袖付 < sodetsuke\ ;
+感情論 < kanjouron\ ;
+支配権 < shihaiken\ ;
+団子鼻 < dangobana\ ;
+全論点 < zenronten\ ;
+扼殺 < yakusatsu\ ;
+道化者 < doukemono\ ;
+西洋紙 < seiyoushi\ ;
+書記長 < shokichou\ ;
+土壌汚染 < dojouosen\ ;
+血塗 < chimidoro\ ;
+忌言葉 < imikotoba\ ;
+難事業 < nanjigyou\ ;
+付帯的 < futaiteki\ ;
+高飛車 < takabisha\ ;
+電話中 < denwachuu\ ;
+黄道帯 < koudoutai\ ;
+高校生 < koukousei\ ;
+麹黴 < koujikabi\ ;
+涙金 < namidakin\ ;
+肺水腫 < haisuishu\ ;
+商用語 < shouyougo\ ;
+略記法 < ryakkihou\ ;
+血圧 < ketsuatsu\ ;
+潮境 < shiozakai\ ;
+葡萄棚 < budoudana\ ;
+奉公人 < houkounin\ ;
+稟質 < hinshitsu\ ;
+湿田 < shitsuden\ ;
+仏法僧 < buppousou\ ;
+黒髪 < kokuhatsu\ ;
+体育祭 < taiikusai\ ;
+普通弾 < futsuudan\ ;
+戦中派 < senchuuha\ ;
+高山帯 < kouzantai\ ;
+性犯罪 < seihanzai\ ;
+民芸品 < mingeihin\ ;
+親会社 < oyagaisha\ ;
+打消 < uchikeshi\ ;
+参賀帳 < sangachou\ ;
+三輪車 < sanrinsha\ ;
+産科学 < sankagaku\ ;
+車内灯 < shanaitou\ ;
+医務室 < imushitsu\ ;
+永続性 < eizokusei\ ;
+表側 < omotegawa\ ;
+探検隊 < tankentai\ ;
+実務家 < jitsumuka\ ;
+必須格 < hissukaku\ ;
+大和歌 < yamatouta\ ;
+丸太材 < marutazai\ ;
+研修所 < kenshuujo\ ;
+公明党 < koumeitou\ ;
+絵空言 < esoragoto\ ;
+羅針盤 < rashinban\ ;
+上院議員 < jouingiin\ ;
+器量人 < kiryoujin\ ;
+国際語 < kokusaigo\ ;
+四辺形 < shihenkei\ ;
+発作的 < hossateki\ ;
+聾学校 < rougakkou\ ;
+鐘撞 < kanetsuki\ ;
+掃海艇 < soukaitei\ ;
+参考書 < sankousho\ ;
+化粧品 < keshouhin\ ;
+地平面 < chiheimen\ ;
+行列 < gyouretsu\ ;
+低能者 < teinousha\ ;
+先験論 < senkenron\ ;
+集英社 < shuueisha\ ;
+用水池 < yousuichi\ ;
+受難劇 < junangeki\ ;
+倉庫業 < soukogyou\ ;
+千六本 < senroppon\ ;
+輸入品 < yunyuuhin\ ;
+化粧台 < keshoudai\ ;
+塩加減 < shiokagen\ ;
+娘子軍 < joushigun\ ;
+自治省 < jichishou\ ;
+尾長猿 < onagazaru\ ;
+警防団 < keiboudan\ ;
+正解者 < seikaisha\ ;
+限度額 < gendogaku\ ;
+再洗礼 < saisenrei\ ;
+姉妹校 < shimaikou\ ;
+格闘技 < kakutougi\ ;
+青春期 < seishunki\ ;
+速記録 < sokkiroku\ ;
+優勝馬 < yuushouba\ ;
+凩 < kogarashi\ ;
+気候学 < kikougaku\ ;
+病院船 < byouinsen\ ;
+国文科 < kokubunka\ ;
+担当者 < tantousha\ ;
+来場者 < raijousha\ ;
+才槌 < saidzuchi\ ;
+排水溝 < haisuikou\ ;
+峻下剤 < shungezai\ ;
+外商部 < gaishoubu\ ;
+湿潤 < shitsujun\ ;
+鼻衝 < hanatsuki\ ;
+正方形 < seihoukei\ ;
+渋紙 < shibugami\ ;
+月経帯 < gekkeitai\ ;
+角行灯 < kakuandon\ ;
+課徴金 < kachoukin\ ;
+交換船 < koukansen\ ;
+保管証 < hokanshou\ ;
+添加物 < tenkamono\ ;
+鼠講 < nezumikou\ ;
+来観者 < raikansha\ ;
+御家騒動 < oiesoudou\ ;
+鏡板 < kagamiita\ ;
+綺羅星 < kiraboshi\ ;
+山岳部 < sangakubu\ ;
+発展性 < hattensei\ ;
+空穴 < karaketsu\ ;
+協定案 < kyouteian\ ;
+麦飯 < mugimeshi\ ;
+鋼色 < haganeiro\ ;
+注射器 < chuushaki\ ;
+払暁 < futsugyou\ ;
+司法権 < shihouken\ ;
+虫螻 < mushikera\ ;
+正攻法 < seikouhou\ ;
+手拍子 < tebyoushi\ ;
+社会面 < shakaimen\ ;
+象皮病 < zouhibyou\ ;
+禁反言 < kinhangen\ ;
+無双窓 < musoumado\ ;
+時間割 < jikanwari\ ;
+用心棒 < youjinbou\ ;
+再感染 < saikansen\ ;
+毛製品 < mouseihin\ ;
+二度三度 < nidosando\ ;
+高祖頭巾 < kosozukin\ ;
+格納庫 < kakunouko\ ;
+総索引 < sousakuin\ ;
+予審廷 < yoshintei\ ;
+茶屋酒 < chayazake\ ;
+四分円 < shibun''en\ ;
+佗住居 < wabizumai\ ;
+片手桶 < katateoke\ ;
+創刊号 < soukangou\ ;
+四分六 < shiburoku\ ;
+童歌 < warabeuta\ ;
+防潜網 < bousenmou\ ;
+打擲 < chouchaku\ ;
+名刺判 < meishiban\ ;
+河童巻 < kappamaki\ ;
+勲一等 < kun''ittou\ ;
+反物屋 < tanmonoya\ ;
+予備部品 < yobibuhin\ ;
+互譲的 < gojouteki\ ;
+世界的 < sekaiteki\ ;
+御迷惑 < gomeiwaku\ ;
+三部作 < sanbusaku\ ;
+活量 < katsuryou\ ;
+正面図 < shoumenzu\ ;
+表具師 < hyougushi\ ;
+不適任 < futekinin\ ;
+経企庁 < keikichou\ ;
+運動領 < undouryou\ ;
+先般来 < senpanrai\ ;
+定冠詞 < teikanshi\ ;
+自己批判 < jikohihan\ ;
+接尾辞 < setsubiji\ ;
+水無月 < minadzuki\ ;
+駐在員 < chuuzaiin\ ;
+噴出 < funshutsu\ ;
+渋皮 < shibukawa\ ;
+輸尿管 < yunyoukan\ ;
+藁靴 < waragutsu\ ;
+国防費 < kokubouhi\ ;
+侍従長 < jijuuchou\ ;
+鎖樋 < kusaritoi\ ;
+活軸 < katsujiku\ ;
+殺風景 < sappuukei\ ;
+中支那 < nakashina\ ;
+誤挿入 < gosounyuu\ ;
+正教授 < seikyouju\ ;
+休火山 < kyuukazan\ ;
+子守歌 < komoriuta\ ;
+決定稿 < ketteikou\ ;
+防火壁 < boukaheki\ ;
+湿板 < shitsuban\ ;
+浮袋 < ukibukuro\ ;
+台湾人 < taiwanjin\ ;
+活躍 < katsuyaku\ ;
+日章旗 < nisshouki\ ;
+部隊長 < butaichou\ ;
+御真影 < goshin''ei\ ;
+虫腹 < mushibara\ ;
+凝固点 < gyoukoten\ ;
+支店網 < shitenmou\ ;
+数表示 < suuhyouji\ ;
+風向計 < fuukoukei\ ;
+蛍光板 < keikouban\ ;
+新聞舗 < shinbunho\ ;
+西南西 < seinansei\ ;
+避雷針 < hiraishin\ ;
+獅子舞 < shishimai\ ;
+任期中 < ninkichuu\ ;
+方面隊 < houmentai\ ;
+風鈴草 < fuurinsou\ ;
+曲独楽 < kyokugoma\ ;
+真向法 < makkouhou\ ;
+商船旗 < shousenki\ ;
+鼠色 < nezumiiro\ ;
+泥靴 < dorogutsu\ ;
+研修員 < kenshuuin\ ;
+評判記 < hyoubanki\ ;
+普通便 < futsuubin\ ;
+副知事 < fukuchiji\ ;
+母集団 < boshuudan\ ;
+三冠王 < sankan''ou\ ;
+恋愛観 < ren''aikan\ ;
+筆墨 < hitsuboku\ ;
+針鰻 < hariunagi\ ;
+鼻綱 < hanadzuna\ ;
+地役権 < chiekiken\ ;
+筆塚 < fudedzuka\ ;
+普通人 < futsuujin\ ;
+滝壺 < takitsubo\ ;
+再協議 < saikyouki\ ;
+代赭色 < taishairo\ ;
+接尾語 < setsubigo\ ;
+劇作家 < gekisakka\ ;
+重戦車 < juusensha\ ;
+音楽隊 < ongakutai\ ;
+告達 < kokutatsu\ ;
+再禁止 < saikinshi\ ;
+燻蒸剤 < kunjouzai\ ;
+洋裁師 < yousaishi\ ;
+真正面 < mashoumen\ ;
+漏出 < roushutsu\ ;
+筆圧 < hitsuatsu\ ;
+月経前 < gekkeimae\ ;
+窮極 < kyuukyoku\ ;
+低山帯 < teizantai\ ;
+励振器 < reishinki\ ;
+金鯱 < kinshachi\ ;
+英雄的 < eiyuuteki\ ;
+記者席 < kishaseki\ ;
+健康者 < kenkousha\ ;
+肥満症 < himanshou\ ;
+最大値 < saidaichi\ ;
+計画案 < keikakuan\ ;
+華厳宗 < kegonshuu\ ;
+主要点 < shuyouten\ ;
+口髭 < kuchihige\ ;
+虫籠 < mushikago\ ;
+流血 < ryuuketsu\ ;
+憑物 < tsukimono\ ;
+積率 < sekiritsu\ ;
+会員証 < kaiinshou\ ;
+精薄児 < seihakuji\ ;
+挿入図 < sounyuuzu\ ;
+釜飯 < kamameshi\ ;
+丁年者 < teinensha\ ;
+深爪 < fukadzume\ ;
+竹帛 < chikuhaku\ ;
+監査役 < kansayaku\ ;
+薄化粧 < usugeshou\ ;
+出勤簿 < shukkinbo\ ;
+中央線 < chuuousen\ ;
+履歴書 < rirekisho\ ;
+泡銭 < abukuzeni\ ;
+養嗣子 < youshishi\ ;
+悪質 < akushitsu\ ;
+大海原 < oounabara\ ;
+低価格 < teikakaku\ ;
+交際上 < kousaijou\ ;
+麻袋 < asabukuro\ ;
+参考品 < sankouhin\ ;
+神経科 < shinkeika\ ;
+小作農 < kosakunou\ ;
+自画自賛 < jigajisan\ ;
+私文書 < shibunsho\ ;
+決定版 < ketteiban\ ;
+心不全 < shinfuzen\ ;
+乳幼児 < nyuuyouji\ ;
+規則書 < kisokusho\ ;
+滝口 < takiguchi\ ;
+加除式 < kajoshiki\ ;
+鼠算 < nezumizan\ ;
+湿式 < shisshiki\ ;
+司法官 < shihoukan\ ;
+穀物 < kokumotsu\ ;
+空対地 < kuutaichi\ ;
+正視眼 < seishigan\ ;
+早慶戦 < soukeisen\ ;
+泥道 < doromichi\ ;
+古靴 < furugutsu\ ;
+掘削機 < kussakuki\ ;
+未確定 < mikakutei\ ;
+高架橋 < koukakyou\ ;
+沈鬱 < chin''utsu\ ;
+個別化 < kobetsuka\ ;
+君達 < kimitachi\ ;
+挿入句 < sounyuuku\ ;
+鷲鼻 < washibana\ ;
+折伏 < shakubuku\ ;
+鼠穴 < nezumiana\ ;
+滑台 < suberidai\ ;
+政権党 < seikentou\ ;
+射利心 < sharishin\ ;
+竜巻 < tatsumaki\ ;
+釣鐘 < tsurigane\ ;
+監察医 < kansatsui\ ;
+道化方 < doukegata\ ;
+半二重 < han''nijuu\ ;
+禁治産 < kinchisan\ ;
+首位打者 < shuidasha\ ;
+単語集 < tangoshuu\ ;
+用水地 < yousuiike\ ;
+車高短 < shakoutan\ ;
+近海魚 < kinkaigyo\ ;
+木金土 < mokukindo\ ;
+持続性 < jizokusei\ ;
+名工大 < meikoudai\ ;
+支配人 < shihainin\ ;
+幹事長 < kanjichou\ ;
+長水路 < chousuiro\ ;
+平党員 < hiratouin\ ;
+循環線 < junkansen\ ;
+下剋上 < gekokujou\ ;
+満室 < manshitsu\ ;
+上層風 < jousoufuu\ ;
+圧延鋼 < atsuenkou\ ;
+因果応報 < ingaouhou\ ;
+準教員 < junkyouin\ ;
+鷦鷯 < misosazai\ ;
+凹眼鏡 < ougankyou\ ;
+物価高 < bukkadaka\ ;
+誘拐罪 < yuukaizai\ ;
+端女 < hashitame\ ;
+循環系 < junkankei\ ;
+釣針 < tsuribari\ ;
+派生的 < haseiteki\ ;
+素反応 < sohan''nou\ ;
+在郷者 < zaigousha\ ;
+金鎖 < kingusari\ ;
+北海道 < hokkaidou\ ;
+下女下男 < gejogenan\ ;
+林檎病 < ringobyou\ ;
+藤蔓 < fujidzuru\ ;
+薬事法 < yakujihou\ ;
+短毛種 < tanmoushu\ ;
+概念論 < gainenron\ ;
+鉛色 < namariiro\ ;
+道徳家 < doutokuka\ ;
+参与官 < san''yokan\ ;
+渋柿 < shibugaki\ ;
+最終案 < saishuuan\ ;
+世界新 < sekaishin\ ;
+参考人 < sankounin\ ;
+屋台骨 < yataibone\ ;
+大歓迎 < daikangei\ ;
+上層階 < jousoukai\ ;
+一切経 < issaikyou\ ;
+古鉄 < furutetsu\ ;
+再配置 < saihaichi\ ;
+肌襦袢 < hadajuban\ ;
+六角形 < rokkakkei\ ;
+新生児 < shinseiji\ ;
+鈴虫 < suzumushi\ ;
+醜業婦 < shugyoufu\ ;
+同質 < doushitsu\ ;
+裁判権 < saibanken\ ;
+大神宮 < daijinguu\ ;
+正教員 < seikyouin\ ;
+口金 < kuchigane\ ;
+突撃 < totsugeki\ ;
+悪戯着 < itazuragi\ ;
+昼行灯 < hiruandon\ ;
+地平線 < chiheisen\ ;
+安楽椅子 < anrakuisu\ ;
+配電線 < haidensen\ ;
+白頭翁 < hakutouou\ ;
+発射台 < hasshadai\ ;
+黒縁 < kurobuchi\ ;
+主陣地 < shujinchi\ ;
+感想文 < kansoubun\ ;
+消化系 < shoukakei\ ;
+鎮圧 < chin''atsu\ ;
+主観性 < shukansei\ ;
+大法廷 < daihoutei\ ;
+最終日 < saishuubi\ ;
+決定権 < ketteiken\ ;
+喪失 < soushitsu\ ;
+兎小屋 < usagigoya\ ;
+多神論 < tashinron\ ;
+委員付託 < iinfutaku\ ;
+後半生 < kouhansei\ ;
+種油 < taneabura\ ;
+増訂版 < zouteiban\ ;
+所在地 < shozaichi\ ;
+災害地 < saigaichi\ ;
+消化管 < shoukakan\ ;
+年代順 < nendaijun\ ;
+神経炎 < shinkeien\ ;
+奉仕者 < houshisha\ ;
+唐櫃 < karabitsu\ ;
+再受浸 < saijushin\ ;
+口軽 < kuchigaru\ ;
+窮屈 < kyuukutsu\ ;
+予備運動 < yobiundou\ ;
+二人前 < futarimae\ ;
+富士壺 < fujitsubo\ ;
+遺産管理 < isankanri\ ;
+百貨店 < hyakkaten\ ;
+横断幕 < oudanmaku\ ;
+二人分 < futaribun\ ;
+納税者 < nouzeisha\ ;
+酸性紙 < sanseishi\ ;
+左右軸 < sayuujiku\ ;
+天水桶 < tensuioke\ ;
+黒竹 < kurochiku\ ;
+友達 < tomodachi\ ;
+品物 < shinamono\ ;
+貴金属 < kikinzoku\ ;
+波羅蜜 < haramitsu\ ;
+狩猟期 < shuryouki\ ;
+文法書 < bunpousho\ ;
+竹光 < takemitsu\ ;
+藁苞 < waradzuto\ ;
+占領下 < senryouka\ ;
+燃焼炉 < nenshouro\ ;
+古筆家 < kohitsuka\ ;
+防衛庁 < boueichou\ ;
+大祭司 < daisaishi\ ;
+唐松 < karamatsu\ ;
+雛罌粟 < hinageshi\ ;
+全天候 < zentenkou\ ;
+超短波 < choutanpa\ ;
+放射能 < houshanou\ ;
+前科者 < zenkamono\ ;
+長野県 < naganoken\ ;
+知恵熱 < chienetsu\ ;
+包装紙 < housoushi\ ;
+争議行為 < sougikoui\ ;
+米産地 < beisanchi\ ;
+八角形 < hakkakkei\ ;
+五大洲 < godaishuu\ ;
+新学期 < shingakki\ ;
+麻婆豆腐 < mābodoufu\ ;
+配電盤 < haidenban\ ;
+英文学 < eibungaku\ ;
+蚊柱 < kabashira\ ;
+御兄弟 < gokyoudai\ ;
+裁判所 < saibansho\ ;
+参院選 < san''insen\ ;
+竹串 < takegushi\ ;
+軍人風 < gunjinfuu\ ;
+無得点 < mutokuten\ ;
+論理的 < ronriteki\ ;
+黒白 < kokubyaku\ ;
+劃期的 < kakkiteki\ ;
+神罰 < shinbatsu\ ;
+油蝉 < aburazemi\ ;
+三省堂 < sanseidou\ ;
+取説 < torisetsu\ ;
+虚弱児 < kyojakuji\ ;
+文化映画 < bunkaeiga\ ;
+当事国 < toujikoku\ ;
+論争者 < ronsousha\ ;
+放射線 < houshasen\ ;
+蛸壼 < takotsubo\ ;
+崇拝者 < suuhaisha\ ;
+健康法 < kenkouhou\ ;
+怪文書 < kaibunsho\ ;
+逮捕歴 < taihoreki\ ;
+筆頭者 < hittousha\ ;
+湧出 < youshutsu\ ;
+空室 < kuushitsu\ ;
+乾生姜 < kanshouga\ ;
+生残者 < seizansha\ ;
+淡水魚 < tansuigyo\ ;
+贈答品 < zoutouhin\ ;
+交換手 < koukanshu\ ;
+蛍光体 < keikoutai\ ;
+氷点下 < hyoutenka\ ;
+誘拐犯 < yuukaihan\ ;
+煎玉子 < iritamago\ ;
+興信所 < koushinjo\ ;
+甘味料 < kanmiryou\ ;
+試験紙 < shikenshi\ ;
+肉襦袢 < nikujuban\ ;
+監守人 < kanshunin\ ;
+増大号 < zoudaigou\ ;
+滑走輪 < kassourin\ ;
+再創造 < saisouzou\ ;
+戸籍法 < kosekihou\ ;
+錘形 < tsumugata\ ;
+荒物屋 < aramonoya\ ;
+中西部 < chuuseibu\ ;
+自動的 < jidouteki\ ;
+借家人 < shakkanin\ ;
+法学部 < hougakubu\ ;
+軍資金 < gunshikin\ ;
+文法性 < bunpousei\ ;
+農夫症 < noufushou\ ;
+材料費 < zairyouhi\ ;
+催涙銃 < sairuijuu\ ;
+変換子 < henkanshi\ ;
+材木屋 < zaimokuya\ ;
+貧窮化 < hinkyuuka\ ;
+早合点 < hayagaten\ ;
+車馬賃 < shabachin\ ;
+竜騎兵 < ryuukihei\ ;
+土台石 < dodaiishi\ ;
+試験管 < shikenkan\ ;
+大反対 < daihantai\ ;
+非国民 < hikokumin\ ;
+小豆鱒 < azukimasu\ ;
+莢豌豆 < sayaendou\ ;
+両替機 < ryougaeki\ ;
+綿火薬 < menkayaku\ ;
+人民軍 < jinmingun\ ;
+欠勤者 < kekkinsha\ ;
+小作米 < kosakumai\ ;
+泥板岩 < deibangan\ ;
+擬革紙 < gikakushi\ ;
+貴重品 < kichouhin\ ;
+火山礫 < kazanreki\ ;
+顔写真 < kaojashin\ ;
+共演者 < kyouensha\ ;
+救護班 < kyuugohan\ ;
+金蔓 < kanedzuru\ ;
+再循環 < saijunkan\ ;
+意味内容 < iminaiyou\ ;
+荻江節 < ogiebushi\ ;
+集光器 < shuukouki\ ;
+一部分 < ichibubun\ ;
+釣船 < tsuribune\ ;
+装甲車 < soukousha\ ;
+新世紀 < shinseiki\ ;
+予備判事 < yobihanji\ ;
+鉢物 < hachimono\ ;
+浚渫 < shunsetsu\ ;
+淑徳 < shukutoku\ ;
+祝福 < shukufuku\ ;
+裁判官 < saibankan\ ;
+出勤日 < shukkinbi\ ;
+送信機 < soushinki\ ;
+没落 < botsuraku\ ;
+窓口 < madoguchi\ ;
+雑居地 < zakkyochi\ ;
+英数国 < eisuukoku\ ;
+保管料 < hokanryou\ ;
+武家時代 < bukejidai\ ;
+半貴石 < hankiseki\ ;
+軍用機 < gun''youki\ ;
+品柄 < shinagara\ ;
+医療過誤 < iryoukago\ ;
+虎落笛 < mogaribue\ ;
+生還者 < seikansha\ ;
+懇談会 < kondankai\ ;
+未公表 < mikouhyou\ ;
+西洋人 < seiyoujin\ ;
+田舎者 < inakamono\ ;
+吸着 < kyuuchaku\ ;
+消化液 < shoukaeki\ ;
+武家政治 < bukeseiji\ ;
+女王陛下 < joouheika\ ;
+穴居人 < kekkyojin\ ;
+妨業員 < bougyouin\ ;
+風呂敷 < furoshiki\ ;
+口脇 < kuchiwaki\ ;
+何曜日 < nan''youbi\ ;
+警戒線 < keikaisen\ ;
+確説 < kakusetsu\ ;
+交換嬢 < koukanjou\ ;
+大道芸 < daidougei\ ;
+停止線 < teishisen\ ;
+薄緑 < usumidori\ ;
+品数 < shinakazu\ ;
+勉強家 < benkyouka\ ;
+浪漫的 < romanteki\ ;
+勧世縒 < kanzeyori\ ;
+竹細工 < takezaiku\ ;
+産卵口 < sanrankou\ ;
+感動詞 < kandoushi\ ;
+水圧機 < suiatsuki\ ;
+音楽祭 < ongakusai\ ;
+鹿皮 < shikagawa\ ;
+黙殺 < mokusatsu\ ;
+人情本 < ninjoubon\ ;
+皇霊殿 < koureiden\ ;
+恐縮 < kyoushuku\ ;
+使命者 < shimeisha\ ;
+突出 < tosshutsu\ ;
+代用品 < daiyouhin\ ;
+葉菜類 < yousairui\ ;
+都風 < miyakofuu\ ;
+油糟 < aburakasu\ ;
+写真機 < shashinki\ ;
+水質 < suishitsu\ ;
+男伊達 < otokodate\ ;
+兵站線 < heitansen\ ;
+帯電体 < taidentai\ ;
+突入 < totsunyuu\ ;
+文化的 < bunkateki\ ;
+未発表 < mihappyou\ ;
+先住民 < senjuumin\ ;
+途上国 < tojoukoku\ ;
+大気汚染 < taikiosen\ ;
+半音階 < han''onkai\ ;
+白木屋 < shirokiya\ ;
+仕様書 < shiyousho\ ;
+民事的 < minjiteki\ ;
+成層圏 < seisouken\ ;
+蒸気圧 < joukiatsu\ ;
+両替所 < ryougaejo\ ;
+稠密 < choumitsu\ ;
+黒樫 < kurogashi\ ;
+活歴 < katsureki\ ;
+後半戦 < kouhansen\ ;
+口紅 < kuchibeni\ ;
+右端 < migihashi\ ;
+幽寂味 < yuujakumi\ ;
+帝王学 < teiougaku\ ;
+貯水池 < chosuichi\ ;
+薬瓶 < kusuribin\ ;
+哲学 < tetsugaku\ ;
+新世界 < shinsekai\ ;
+命令法 < meireihou\ ;
+基礎工事 < kisokouji\ ;
+現像液 < genzoueki\ ;
+観覧車 < kanransha\ ;
+会社葬 < kaishasou\ ;
+鉄渋 < kanashibu\ ;
+禁酒法 < kinshuhou\ ;
+脳膜炎 < noumakuen\ ;
+収縮 < shuushuku\ ;
+台秤 < daibakari\ ;
+文部省 < monbushou\ ;
+軍事通 < gunjitsuu\ ;
+脳腫瘍 < noushuyou\ ;
+世界一 < sekaiichi\ ;
+必読 < hitsudoku\ ;
+博識 < hakushiki\ ;
+再分配 < saibunpai\ ;
+掛布団 < kakebuton\ ;
+外洋船 < gaiyousen\ ;
+黒松 < kuromatsu\ ;
+組職図 < soshokuzu\ ;
+無理往生 < murioujou\ ;
+交換品 < koukanhin\ ;
+火食鳥 < hikuidori\ ;
+貯水槽 < chosuisou\ ;
+海水魚 < kaisuigyo\ ;
+精進日 < shoujinbi\ ;
+卓識 < takushiki\ ;
+薬物 < yakubutsu\ ;
+三色旗 < sanshokki\ ;
+逃亡者 < toubousha\ ;
+道具箱 < dougubako\ ;
+出廷日 < shutteibi\ ;
+画学紙 < gagakushi\ ;
+氷蝕 < hyoushoku\ ;
+貯蔵所 < chozousho\ ;
+東海道 < toukaidou\ ;
+交換台 < koukandai\ ;
+戦時中 < senjichuu\ ;
+卓説 < takusetsu\ ;
+黒星 < kuroboshi\ ;
+混分数 < konbunsuu\ ;
+生石灰 < seisekkai\ ;
+不検束 < fukensoku\ ;
+小松菜 < komatsuna\ ;
+贈呈者 < zouteisha\ ;
+類概念 < ruigainen\ ;
+任天堂 < nintendou\ ;
+南方産 < nanpousan\ ;
+結納金 < yuinoukin\ ;
+秀抜 < shuubatsu\ ;
+心血 < shinketsu\ ;
+太刀筋 < tachisuji\ ;
+水虫 < mizumushi\ ;
+蔓草 < tsurukusa\ ;
+強飯 < kowameshi\ ;
+熟字訓 < jukujikun\ ;
+声明書 < seimeisho\ ;
+問題点 < mondaiten\ ;
+分工場 < bunkoujou\ ;
+定年制 < teinensei\ ;
+地元紙 < jimotoshi\ ;
+預託金 < yotakukin\ ;
+防空砲 < boukuuhou\ ;
+静圧比 < seiatsuhi\ ;
+葛餅 < kuzumochi\ ;
+回顧録 < kaikoroku\ ;
+鶉豆 < uzuramame\ ;
+両替屋 < ryougaeya\ ;
+人気者 < ninkimono\ ;
+不良品 < furyouhin\ ;
+小便所 < shoubenjo\ ;
+循環性 < junkansei\ ;
+商用化 < shouyouka\ ;
+交換円 < koukan''en\ ;
+試験法 < shikenhou\ ;
+学園祭 < gakuensai\ ;
+何時時分 < itsujibun\ ;
+金盥 < kanadarai\ ;
+口癖 < kuchiguse\ ;
+第六感 < dairokkan\ ;
+貧民街 < hinmingai\ ;
+命令書 < meireisho\ ;
+半導体 < handoutai\ ;
+石頭 < ishiatama\ ;
+鳥黐 < torimochi\ ;
+涙声 < namidagoe\ ;
+兵器廠 < heikishou\ ;
+落髪 < rakuhatsu\ ;
+裁判上 < saibanjou\ ;
+売春婦 < baishunpu\ ;
+勅額 < chokugaku\ ;
+配電所 < haidensho\ ;
+社交界 < shakoukai\ ;
+優勝旗 < yuushouki\ ;
+手品師 < tejinashi\ ;
+髄膜炎 < zuimakuen\ ;
+修道院 < shuudouin\ ;
+卵色 < tamagoiro\ ;
+海蛇座 < umihebiza\ ;
+稲光 < inabikari\ ;
+命令文 < meireibun\ ;
+東洋風 < touyoufuu\ ;
+弟息子 < otomusuko\ ;
+五大国 < godaikoku\ ;
+接骨医 < sekkotsui\ ;
+望遠鏡 < bouenkyou\ ;
+梅雨空 < tsuyuzora\ ;
+工員寮 < kouinryou\ ;
+無遊病 < muyuubyou\ ;
+殿達 < tonotachi\ ;
+国際化 < kokusaika\ ;
+驚異的 < kyouiteki\ ;
+落飾 < rakushoku\ ;
+関東弁 < kantouben\ ;
+相互依存 < sougoizon\ ;
+複合語 < fukugougo\ ;
+弘済会 < kousaikai\ ;
+至近弾 < shikindan\ ;
+本年度 < hon''nendo\ ;
+救護所 < kyuugosho\ ;
+沈着 < chinchaku\ ;
+呑気者 < nonkimono\ ;
+小作権 < kosakuken\ ;
+代理母 < dairihaha\ ;
+分界線 < bunkaisen\ ;
+端境期 < hazakaiki\ ;
+語源学 < gogengaku\ ;
+心電図 < shindenzu\ ;
+健康地 < kenkouchi\ ;
+語彙規則 < goikisoku\ ;
+氏子札 < ujikofuda\ ;
+諸問題 < shomondai\ ;
+口唇期 < koushinki\ ;
+将棋盤 < shougiban\ ;
+獅子唐 < shishitou\ ;
+平信徒 < heishinto\ ;
+祥月 < shoutsuki\ ;
+大気圧 < taikiatsu\ ;
+将軍家 < shougunke\ ;
+千代紙 < chiyogami\ ;
+主戦論 < shusenron\ ;
+劣等生 < rettousei\ ;
+新字体 < shinjitai\ ;
+収率 < shuuritsu\ ;
+納品書 < nouhinsho\ ;
+皇太子 < koutaishi\ ;
+確立 < kakuritsu\ ;
+騒擾罪 < soujouzai\ ;
+半官報 < hankanpou\ ;
+同伴者 < douhansha\ ;
+海鼠板 < namakoban\ ;
+准士官 < junshikan\ ;
+実験者 < jikkensha\ ;
+代理業 < dairigyou\ ;
+一次元 < ichijigen\ ;
+用益権 < youekiken\ ;
+上腕筋 < jouwankin\ ;
+参政権 < sanseiken\ ;
+巡礼者 < junreisha\ ;
+実験群 < jikkengun\ ;
+空景気 < karageiki\ ;
+占者 < uranaisha\ ;
+写真家 < shashinka\ ;
+車椅子 < kurumaisu\ ;
+揮毫料 < kigouryou\ ;
+自己弁護 < jikobengo\ ;
+警告音 < keikokuon\ ;
+教授陣 < kyoujujin\ ;
+初七日 < shonanoka\ ;
+安心感 < anshinkan\ ;
+忠節 < chuusetsu\ ;
+鉢巻 < hachimaki\ ;
+大入道 < oonyuudou\ ;
+社会悪 < shakaiaku\ ;
+咄家 < hanashika\ ;
+主製品 < shuseihin\ ;
+無気力 < mukiryoku\ ;
+社会性 < shakaisei\ ;
+脱脂綿 < dasshimen\ ;
+気象台 < kishoudai\ ;
+命令形 < meireikei\ ;
+論理学 < ronrigaku\ ;
+実体論 < jittairon\ ;
+小会派 < shoukaiha\ ;
+同値性 < douchisei\ ;
+酸性岩 < sanseigan\ ;
+矍鑠 < kakushaku\ ;
+下足番 < gesokuban\ ;
+五十音図 < gojuuonzu\ ;
+斥候兵 < sekkouhei\ ;
+好影響 < koueikyou\ ;
+生化学 < seikagaku\ ;
+試乗車 < shijousha\ ;
+圧制的 < asseiteki\ ;
+炭酸紙 < tansanshi\ ;
+利他主義 < ritashugi\ ;
+再従弟 < saijuutei\ ;
+余計者 < yokeimono\ ;
+毒虫 < dokumushi\ ;
+不寝番 < fushinban\ ;
+理屈屋 < rikutsuya\ ;
+保管人 < hokan''nin\ ;
+優良馬 < yuuryouba\ ;
+運輸量 < un''yuryou\ ;
+卓絶 < takuzetsu\ ;
+太平洋 < taiheiyou\ ;
+貯蔵品 < chozouhin\ ;
+単糖類 < tantourui\ ;
+取消 < torikeshi\ ;
+聚楽第 < jurakudai\ ;
+生半可 < namahanka\ ;
+周密 < shuumitsu\ ;
+蒟蒻 < kon''nyaku\ ;
+協議所 < kyougisho\ ;
+今年度 < kon''nendo\ ;
+各月 < kakutsuki\ ;
+段袋 < danbukuro\ ;
+社会層 < shakaisou\ ;
+思春期 < shishunki\ ;
+放射性 < houshasei\ ;
+虫媒花 < chuubaika\ ;
+加持祈祷 < kajikitou\ ;
+内向性 < naikousei\ ;
+優待券 < yuutaiken\ ;
+四人組 < yoningumi\ ;
+退嬰的 < taieiteki\ ;
+善後策 < zengosaku\ ;
+収没 < shuubotsu\ ;
+鉄屑 < tetsukuzu\ ;
+助手席 < joshuseki\ ;
+火木金 < kamokukin\ ;
+卓筆 < takuhitsu\ ;
+氏子帳 < ujikochou\ ;
+皇太后 < koutaigou\ ;
+取次 < toritsugi\ ;
+特攻隊 < tokkoutai\ ;
+卓立 < takuritsu\ ;
+遺言者 < yuigonsha\ ;
+郷土史 < kyoudoshi\ ;
+正道 < masamichi\ ;
+付属校 < fuzokukou\ ;
+沈没 < chinbotsu\ ;
+統治者 < touchisha\ ;
+名人芸 < meijingei\ ;
+凄文句 < sugomonku\ ;
+戦災者 < sensaisha\ ;
+試作機 < shisakuki\ ;
+黄枯茶 < kigaracha\ ;
+胃腸薬 < ichouyaku\ ;
+毒舌 < dokuzetsu\ ;
+陽電子 < youdenshi\ ;
+磨汁 < togishiru\ ;
+文殊様 < monjusama\ ;
+役職 < yakushoku\ ;
+付属書 < fuzokusho\ ;
+討論者 < touronsha\ ;
+多汗症 < takanshou\ ;
+碧玉 < hekigyoku\ ;
+投手陣 < toushujin\ ;
+中継所 < chuukeijo\ ;
+根拠地 < konkyochi\ ;
+法人税 < houjinzei\ ;
+地元民 < jimotomin\ ;
+年期者 < nenkimono\ ;
+酷熱 < kokunetsu\ ;
+花卉園芸 < kakiengei\ ;
+音楽性 < ongakusei\ ;
+被告人 < hikokunin\ ;
+文化庁 < bunkachou\ ;
+偏向板 < henkouban\ ;
+背任罪 < haininzai\ ;
+傍観者 < boukansha\ ;
+蔵浚 < kurazarae\ ;
+星状体 < seijoutai\ ;
+消化剤 < shoukazai\ ;
+欧州版 < oushuuban\ ;
+和製英語 < waseieigo\ ;
+口早 < kuchibaya\ ;
+小豆粥 < azukigayu\ ;
+汁物 < shirumono\ ;
+系図学 < keizugaku\ ;
+酷烈 < kokuretsu\ ;
+仮名手本 < kanadehon\ ;
+蓄積 < chikuseki\ ;
+書簡箋 < shokansen\ ;
+再配分 < saihaibun\ ;
+弱虫 < yowamushi\ ;
+協議官 < kyougikan\ ;
+同類項 < douruikou\ ;
+自転軸 < jitenjiku\ ;
+忠烈 < chuuretsu\ ;
+上甲板 < joukanpan\ ;
+惜別 < sekibetsu\ ;
+全地方 < zenchihou\ ;
+会社法 < kaishahou\ ;
+活劇 < katsugeki\ ;
+奉仕品 < houshihin\ ;
+截拳道 < sekkendou\ ;
+台所 < daidokoro\ ;
+仕舞屋 < shimotaya\ ;
+折衷案 < setchuuan\ ;
+航空隊 < koukuutai\ ;
+蝦蟇口 < gamaguchi\ ;
+禁止法 < kinshihou\ ;
+道具方 < dougukata\ ;
+後程 < nochihodo\ ;
+旦那芸 < dan''nagei\ ;
+扶養料 < fuyouryou\ ;
+弓術 < kyuujutsu\ ;
+不信心 < fushinjin\ ;
+遠近 < ochikochi\ ;
+力説 < rikisetsu\ ;
+平安朝 < heianchou\ ;
+内野席 < naiyaseki\ ;
+因果律 < ingaritsu\ ;
+英和辞典 < eiwajiten\ ;
+軽演劇 < keiengeki\ ;
+予備会議 < yobikaigi\ ;
+板金工 < bankinkou\ ;
+定価表 < teikahyou\ ;
+篤志家 < tokushika\ ;
+鴬色 < uguisuiro\ ;
+試験場 < shikenjou\ ;
+旅行者 < ryokousha\ ;
+歯齦炎 < shigin''en\ ;
+蛸坊主 < takobouzu\ ;
+博物 < hakubutsu\ ;
+参政官 < sanseikan\ ;
+軍事的 < gunjiteki\ ;
+古銭学 < kosengaku\ ;
+軍官憲 < gunkanken\ ;
+関数論 < kansuuron\ ;
+治療費 < chiryouhi\ ;
+毒筆 < dokuhitsu\ ;
+呑口 < nomiguchi\ ;
+命乞 < inochigoi\ ;
+板金屋 < bankin''ya\ ;
+操車場 < soushajou\ ;
+投融資 < touyuushi\ ;
+社交性 < shakousei\ ;
+擬爆弾 < gibakudan\ ;
+竹蜻蛉 < taketonbo\ ;
+恋心 < koigokoro\ ;
+超党派 < choutouha\ ;
+問題外 < mondaigai\ ;
+一般的 < ippanteki\ ;
+資本金 < shihonkin\ ;
+悪口 < waruguchi\ ;
+男子用 < danshiyou\ ;
+初雪 < hatsuyuki\ ;
+社会党 < shakaitou\ ;
+厭世的 < enseiteki\ ;
+弱腰 < yowagoshi\ ;
+訓練生 < kunrensei\ ;
+逆鞘 < gyakuzaya\ ;
+贈呈本 < zouteibon\ ;
+二院制度 < niinseido\ ;
+年頃 < toshigoro\ ;
+家族法 < kazokuhou\ ;
+人気株 < ninkikabu\ ;
+読後感 < dokugokan\ ;
+単細胞 < tansaibou\ ;
+鳴禽類 < meikinrui\ ;
+内部的 < naibuteki\ ;
+練兵場 < renpeijou\ ;
+夏期時間 < kakijikan\ ;
+大前提 < daizentei\ ;
+着陸 < chakuriku\ ;
+再従兄 < saijuukei\ ;
+告別 < kokubetsu\ ;
+可動橋 < kadoukyou\ ;
+水油 < mizuabura\ ;
+氷水 < koorimizu\ ;
+音楽堂 < ongakudou\ ;
+荒隠元 < sayaingen\ ;
+井戸屋形 < idoyakata\ ;
+洗礼名 < senreimei\ ;
+現業員 < gengyouin\ ;
+一工夫 < hitokufuu\ ;
+前輿 < sakigoshi\ ;
+号室 < goushitsu\ ;
+膝小僧 < hizakozou\ ;
+自己矛盾 < jikomujun\ ;
+作詞家 < sakushika\ ;
+作為的 < sakuiteki\ ;
+小宇宙 < shouuchuu\ ;
+風水害 < fuusuigai\ ;
+大車輪 < daisharin\ ;
+改定版 < kaiteihan\ ;
+社会人 < shakaijin\ ;
+悪影響 < akueikyou\ ;
+西部劇 < seibugeki\ ;
+雑貨商 < zakkashou\ ;
+劣等感 < rettoukan\ ;
+出願 < shutsugan\ ;
+透明性 < toumeisei\ ;
+出題 < shutsudai\ ;
+若夫婦 < wakafuufu\ ;
+鱗雲 < urokogumo\ ;
+鴃舌 < gekizetsu\ ;
+陰陽道 < onmyoudou\ ;
+休憩所 < kyuukeijo\ ;
+配給所 < haikyuujo\ ;
+装身具 < soushingu\ ;
+無欠席 < mukesseki\ ;
+自制心 < jiseishin\ ;
+通釈 < tsuushaku\ ;
+砂粒 < sunatsubu\ ;
+副作用 < fukusayou\ ;
+再選挙 < saisenkyo\ ;
+隠匿者 < intokusha\ ;
+同人種 < doujinshu\ ;
+運送業 < unsougyou\ ;
+内務省 < naimushou\ ;
+炭酸水 < tansansui\ ;
+衛生的 < eiseiteki\ ;
+再発行 < saihakkou\ ;
+遺言状 < yuigonjou\ ;
+速達 < sokutatsu\ ;
+点眼水 < tengansui\ ;
+軽合金 < keigoukin\ ;
+一発屋 < ippatsuya\ ;
+出陣 < shutsujin\ ;
+全製品 < zenseihin\ ;
+通達 < tsuutatsu\ ;
+応召者 < oushousha\ ;
+初釜 < hatsugama\ ;
+古印紙 < furuinshi\ ;
+資本財 < shihonzai\ ;
+回顧的 < kaikoteki\ ;
+二親等 < nishintou\ ;
+交戦権 < kousenken\ ;
+広報誌 < kouhoushi\ ;
+例年祭 < reinensai\ ;
+予防薬 < yobouyaku\ ;
+和声学 < waseigaku\ ;
+出門 < shutsumon\ ;
+音楽史 < ongakushi\ ;
+萎縮腎 < ishukujin\ ;
+盗聴器 < touchouki\ ;
+予約金 < yoyakukin\ ;
+釣堀 < tsuribori\ ;
+春場所 < harubasho\ ;
+租庸調 < soyouchou\ ;
+近頃 < chikagoro\ ;
+鳶職 < tobishoku\ ;
+原子論 < genshiron\ ;
+無機物 < mukibutsu\ ;
+決議案 < ketsugian\ ;
+創作家 < sousakuka\ ;
+爛熟期 < ranjukuki\ ;
+中間派 < chuukanha\ ;
+石筆 < sekihitsu\ ;
+里程標 < riteihyou\ ;
+資本論 < shihonron\ ;
+今様歌 < imayouuta\ ;
+石竹 < sekichiku\ ;
+引綱 < hikidzuna\ ;
+会津塗 < aidzunuri\ ;
+丸坊主 < marubouzu\ ;
+移植性 < ishokusei\ ;
+短筒 < tandzutsu\ ;
+別天地 < bettenchi\ ;
+毒物 < dokubutsu\ ;
+即日 < sokujitsu\ ;
+防空壕 < boukuugou\ ;
+逃道 < nigemichi\ ;
+運送料 < unsouryou\ ;
+神主 < kan''nushi\ ;
+幽霊船 < yuureisen\ ;
+伯備線 < hakubisen\ ;
+胃腸病 < ichoubyou\ ;
+危機管理 < kikikanri\ ;
+合印 < aijirushi\ ;
+基礎体温 < kisotaion\ ;
+卒業 < sotsugyou\ ;
+告示板 < kokujiban\ ;
+小作人 < kosakunin\ ;
+離間策 < rikansaku\ ;
+勝着 < shouchaku\ ;
+弱 < nayonayo\ ;
+蹲 < tsukubai\ ;
+姑 < shuutome\ ;
+塊 < katamari\ ;
+堤 < tsutsumi\ ;
+鼓 < tsudzumi\ ;
+源 < minamoto\ ;
+鶏 < niwatori\ ;
+叢 < kusamura\ ;
+印 < shirushi\ ;
+魂 < tamashii\ ;
+腸 < harawata\ ;
+杯 < sakazuki\ ;
+雷 < kaminari\ ;
+雁 < karigane\ ;
+暁 < akatsuki\ ;
+紫 < murasaki\ ;
+掌 < tenohira\ ;
+抑 < somosomo\ ;
+懐 < futokoro\ ;
+吐出 < toshutsu\ ;
+金型 < kanagata\ ;
+石神 < shakujin\ ;
+名刹 < meisatsu\ ;
+弾着 < danchaku\ ;
+落籍 < rakuseki\ ;
+矢筒 < yadzutsu\ ;
+心服 < shinpuku\ ;
+逆転 < gyakuten\ ;
+合力 < gouryoku\ ;
+薙刀 < naginata\ ;
+同列 < douretsu\ ;
+民数記 < minsuuki\ ;
+鉄砲座 < teppouza\ ;
+盂蘭盆会 < urabon''e\ ;
+文化人 < bunkajin\ ;
+木工所 < mokkoujo\ ;
+医科歯科 < ikashika\ ;
+直面 < chokumen\ ;
+一般法 < ippanhou\ ;
+復業 < fukugyou\ ;
+薄口 < usukuchi\ ;
+労務者 < roumusha\ ;
+草食 < soushoku\ ;
+文庫本 < bunkobon\ ;
+常闇 < tokoyami\ ;
+合冊 < gousatsu\ ;
+剥落 < hakuraku\ ;
+茶髪 < chapatsu\ ;
+速読 < sokudoku\ ;
+厳密 < genmitsu\ ;
+代理人 < dairinin\ ;
+海水着 < kaisuigi\ ;
+出郷 < shukkyou\ ;
+厚底 < atsuzoko\ ;
+自己流 < jikoryuu\ ;
+引窓 < hikimado\ ;
+丁寧語 < teineigo\ ;
+分轄 < bunkatsu\ ;
+音楽会 < ongakkai\ ;
+同胞愛 < douhouai\ ;
+通読 < tsuudoku\ ;
+毛唐人 < ketoujin\ ;
+民事上 < minjijou\ ;
+淡彩画 < tansaiga\ ;
+期待値 < kitaichi\ ;
+遜色 < sonshoku\ ;
+全裸体 < zenratai\ ;
+立体派 < rittaiha\ ;
+追跡 < tsuiseki\ ;
+勲爵 < kunshaku\ ;
+護送船 < gosousen\ ;
+通訳 < tsuuyaku\ ;
+野蛮人 < yabanjin\ ;
+只只 < tadatada\ ;
+友垣 < tomogaki\ ;
+女性軍 < joseigun\ ;
+同趣味 < doushumi\ ;
+半月 < hantsuki\ ;
+可動性 < kadousei\ ;
+不養生 < fuyoujou\ ;
+飽和点 < houwaten\ ;
+真迹 < shinseki\ ;
+既往症 < kioushou\ ;
+吉例 < kitsurei\ ;
+近鉄 < kintetsu\ ;
+茶飯 < chameshi\ ;
+別言 < betsugen\ ;
+殖産 < shokusan\ ;
+金口 < kinguchi\ ;
+造血 < zouketsu\ ;
+鳥籠 < torikago\ ;
+勃発 < boppatsu\ ;
+建築 < kenchiku\ ;
+一致点 < itchiten\ ;
+出身 < shusshin\ ;
+筆記者 < hikkisha\ ;
+十月 < juugatsu\ ;
+送風機 < soufuuki\ ;
+口占 < kuchiura\ ;
+姫御子 < himemiko\ ;
+手配書 < tehaisho\ ;
+正立 < seiritsu\ ;
+鯨骨 < geikotsu\ ;
+求心 < kyuushin\ ;
+相鎚 < aidzuchi\ ;
+眼識 < ganshiki\ ;
+脳珊瑚 < nousango\ ;
+上層土 < jousoudo\ ;
+心拍 < shinpaku\ ;
+予約語 < yoyakugo\ ;
+彼此 < karekore\ ;
+油槽船 < yusousen\ ;
+歯磨 < hamigaki\ ;
+帝闕 < teiketsu\ ;
+一寸見 < chottomi\ ;
+予防線 < yobousen\ ;
+勘定日 < kanjoubi\ ;
+内鰐 < uchiwani\ ;
+古創 < furukizu\ ;
+鴨猟 < kamoryou\ ;
+没却 < bokkyaku\ ;
+内帑金 < naidokin\ ;
+金力 < kinryoku\ ;
+右側 < migigawa\ ;
+出超 < shutchou\ ;
+口前 < kuchimae\ ;
+伝送路 < densouro\ ;
+刻薄 < kokuhaku\ ;
+銀細工 < ginzaiku\ ;
+人相見 < ninsoumi\ ;
+水性 < mizushou\ ;
+広袖 < hirosode\ ;
+重力 < juuryoku\ ;
+風刺画 < fuushiga\ ;
+相鉄 < soutetsu\ ;
+荷車 < niguruma\ ;
+動物 < doubutsu\ ;
+午餐会 < gosankai\ ;
+知略 < chiryaku\ ;
+目録 < mokuroku\ ;
+無欠勤 < mukekkin\ ;
+比重計 < hijuukei\ ;
+切論 < setsuron\ ;
+運送店 < unsouten\ ;
+凶賊 < kyouzoku\ ;
+操作盤 < sousaban\ ;
+着装 < chakusou\ ;
+在庫品 < zaikohin\ ;
+遅脈 < chimyaku\ ;
+水引 < mizuhiki\ ;
+橈骨 < toukotsu\ ;
+殲滅 < senmetsu\ ;
+冠雪 < kansetsu\ ;
+北極 < hokkyoku\ ;
+幻術 < genjutsu\ ;
+氷床 < hyoushou\ ;
+劃策 < kakusaku\ ;
+民主化 < minshuka\ ;
+即席 < sokuseki\ ;
+延滞金 < entaikin\ ;
+又又 < matamata\ ;
+水底 < minasoko\ ;
+唐破風 < karahafu\ ;
+直配 < chokuhai\ ;
+切言 < setsugen\ ;
+自公民 < jikoumin\ ;
+急告 < kyuukoku\ ;
+釈典 < shakuten\ ;
+賢夫人 < kenpujin\ ;
+毫末 < goumatsu\ ;
+半折 < hansetsu\ ;
+平袖 < hirasode\ ;
+二度手間 < nidodema\ ;
+鯛飯 < taimeshi\ ;
+運転者 < untensha\ ;
+切要 < setsuyou\ ;
+巻雲 < makigumo\ ;
+不格好 < bukakkou\ ;
+催淫剤 < saiinzai\ ;
+残物 < zanbutsu\ ;
+栄養短 < eiyoutan\ ;
+態々 < wazawaza\ ;
+劫略 < gouryaku\ ;
+反別 < tanbetsu\ ;
+正直 < shoujiki\ ;
+医学界 < igakukai\ ;
+効率 < kouritsu\ ;
+無常感 < mujoukan\ ;
+只事 < tadagoto\ ;
+碩学 < sekigaku\ ;
+背格好 < sekakkou\ ;
+山査子 < sanzashi\ ;
+医学生 < igakusei\ ;
+水嵩 < mizukasa\ ;
+開業医 < kaigyoui\ ;
+直送 < chokusou\ ;
+分裂 < bunretsu\ ;
+役柄 < yakugara\ ;
+凌辱 < ryoujoku\ ;
+律文 < ritsubun\ ;
+程々 < hodohodo\ ;
+収入 < shuunyuu\ ;
+便衣隊 < ben''itai\ ;
+若鶏 < wakadori\ ;
+沈勇 < chin''yuu\ ;
+双六 < sugoroku\ ;
+廃絶 < haizetsu\ ;
+幹事会 < kanjikai\ ;
+道糸 < michiito\ ;
+多原子 < tagenshi\ ;
+創立 < souritsu\ ;
+協心 < kyoushin\ ;
+北朝 < hokuchou\ ;
+勇烈 < yuuretsu\ ;
+性別 < seibetsu\ ;
+勃然 < botsuzen\ ;
+十字形 < juujikei\ ;
+単式 < tanshiki\ ;
+外野手 < gaiyashu\ ;
+健胃錠 < ken''ijou\ ;
+関西馬 < kansaiba\ ;
+指示詞 < shijishi\ ;
+参列 < sanretsu\ ;
+明日葉 < ashitaba\ ;
+気心 < kigokoro\ ;
+短距離 < tankyori\ ;
+一軒屋 < ikken''ya\ ;
+川風 < kawakaze\ ;
+芸備線 < geibisen\ ;
+刀術 < toujutsu\ ;
+匡救 < kyoukyuu\ ;
+死物 < shibutsu\ ;
+刳舟 < kuribune\ ;
+陣太鼓 < jindaiko\ ;
+真冬日 < mafuyubi\ ;
+四季報 < shikihou\ ;
+分蝕 < bunshoku\ ;
+白鳥 < hakuchou\ ;
+兵食 < heishoku\ ;
+殿様 < tonosama\ ;
+参入 < san''nyuu\ ;
+受付 < uketsuke\ ;
+単帯 < hitoeobi\ ;
+矯激 < kyougeki\ ;
+怪傑 < kaiketsu\ ;
+刺股 < sasumata\ ;
+汲取 < kumitori\ ;
+砂浜 < sunahama\ ;
+繁華街 < hankagai\ ;
+訓練所 < kunrenjo\ ;
+達筆 < tappitsu\ ;
+海水温 < kaisuion\ ;
+筋電図 < kindenzu\ ;
+割礼 < katsurei\ ;
+毎月 < maitsuki\ ;
+泌尿幾 < hinyouki\ ;
+升形 < masugata\ ;
+不安心 < fuanshin\ ;
+川霧 < kawagiri\ ;
+劇的 < gekiteki\ ;
+訪問着 < houmongi\ ;
+分蘖 < bunketsu\ ;
+会社員 < kaishain\ ;
+叔世 < shukusei\ ;
+兀鷹 < hagetaka\ ;
+法王権 < hououken\ ;
+勘決 < kanketsu\ ;
+不導体 < fudoutai\ ;
+単試合 < tanshiai\ ;
+即妙 < sokumyou\ ;
+剣突 < kentsuku\ ;
+必定 < hitsujou\ ;
+前約 < zen''yaku\ ;
+劇痛 < gekitsuu\ ;
+午年 < umadoshi\ ;
+平落 < hiraochi\ ;
+硬式 < koushiki\ ;
+写生画 < shaseiga\ ;
+常識 < joushiki\ ;
+管理人 < kanrinin\ ;
+心学 < shingaku\ ;
+毎日 < mainichi\ ;
+白骨 < hakkotsu\ ;
+一家言 < ikkagoto\ ;
+升席 < masuseki\ ;
+同期生 < doukisei\ ;
+横風 < yokokaze\ ;
+丁定規 < teijougi\ ;
+鰐足 < waniashi\ ;
+遅筆 < chihitsu\ ;
+母方 < hahakata\ ;
+守備隊 < shubitai\ ;
+氷壁 < hyouheki\ ;
+瞞着 < manchaku\ ;
+辛辛 < karagara\ ;
+相識 < soushiki\ ;
+菜箸 < saibashi\ ;
+併合罪 < heigozai\ ;
+週給 < shuukyuu\ ;
+八面 < hachimen\ ;
+博学 < hakugaku\ ;
+殖民 < shokumin\ ;
+進級 < shinkyuu\ ;
+気無精 < kibushou\ ;
+三枚目 < sanmaime\ ;
+前節 < zensetsu\ ;
+得心 < tokushin\ ;
+手配師 < tehaishi\ ;
+着船 < chakusen\ ;
+引潮 < hikishio\ ;
+常設 < jousetsu\ ;
+無自覚 < mujikaku\ ;
+得得 < tokutoku\ ;
+落潮 < rakuchou\ ;
+弱毒 < jakudoku\ ;
+厥冷 < ketsurei\ ;
+蔵元 < kuramoto\ ;
+建物 < tatemono\ ;
+死滅 < shimetsu\ ;
+勇決 < yuuketsu\ ;
+先高 < sakidaka\ ;
+発駅 < hatsueki\ ;
+火事泥 < kajidoro\ ;
+退色 < taishoku\ ;
+気室 < kishitsu\ ;
+人工語 < jinkougo\ ;
+既往歴 < kioureki\ ;
+円錐 < marugiri\ ;
+一般性 < ippansei\ ;
+勝楽 < shouraku\ ;
+年月日 < nengappi\ ;
+兎馬 < usagiuma\ ;
+当月 < tougetsu\ ;
+千島 < chishima\ ;
+横雲 < yokogumo\ ;
+変成器 < henseiki\ ;
+徐徐 < sorosoro\ ;
+元高 < motodaka\ ;
+未信者 < mishinja\ ;
+師説 < shisetsu\ ;
+包摂 < housetsu\ ;
+殿方 < tonogata\ ;
+民宿 < minshuku\ ;
+不案内 < fuan''nai\ ;
+自棄酒 < yakezake\ ;
+塑弾性 < sodansei\ ;
+武器倉 < bukigura\ ;
+連結 < renketsu\ ;
+聴音器 < chouonki\ ;
+直言 < chokugen\ ;
+平仮名 < hiragana\ ;
+彎月 < wangetsu\ ;
+感知器 < kanchiki\ ;
+巡錫 < junshaku\ ;
+彎曲 < wankyoku\ ;
+直角 < chokkaku\ ;
+廉直 < renchoku\ ;
+直視 < chokushi\ ;
+死活 < shikatsu\ ;
+心境 < shinkyou\ ;
+平脈 < heimyaku\ ;
+当日 < toujitsu\ ;
+前半期 < zenpanki\ ;
+復学 < fukugaku\ ;
+入閣 < nyuukaku\ ;
+空論家 < kuuronka\ ;
+恵比寿顔 < ebisugao\ ;
+横長 < yokonaga\ ;
+死没 < shibotsu\ ;
+包括 < houkatsu\ ;
+忠告 < chuukoku\ ;
+巻軸 < makijiku\ ;
+農閑期 < noukanki\ ;
+百雷 < hyakurai\ ;
+不賛成 < fusansei\ ;
+百難 < hyakunan\ ;
+養鶏家 < youkeika\ ;
+出芽 < shutsuga\ ;
+菅笠 < sugegasa\ ;
+剛直 < gouchoku\ ;
+十二支 < juunishi\ ;
+加湿 < kashitsu\ ;
+構成比 < kouseihi\ ;
+向日葵 < himawari\ ;
+発電 < hatsuden\ ;
+分脈 < bunmyaku\ ;
+監訳 < kan''yaku\ ;
+遅着 < chichaku\ ;
+機業家 < kigyouka\ ;
+党閥 < toubatsu\ ;
+別納 < betsunou\ ;
+刑罰 < keibatsu\ ;
+内達 < naitatsu\ ;
+水滸伝 < suikoden\ ;
+御嬢様 < ojousama\ ;
+心嚢 < shin''nou\ ;
+役得 < yakutoku\ ;
+臨床医 < rinshoui\ ;
+連立 < renritsu\ ;
+郷愁 < kyoushuu\ ;
+彷彿 < houfutsu\ ;
+庭石 < niwaishi\ ;
+切者 < kiremono\ ;
+遅発 < chihatsu\ ;
+栄養源 < eiyougen\ ;
+多年草 < tanensou\ ;
+荷厄介 < niyakkai\ ;
+元鞘 < motosaya\ ;
+励磁損 < reijison\ ;
+安全瓣 < anzenben\ ;
+重酸素 < juusanso\ ;
+忘却 < boukyaku\ ;
+歴歴 < rekireki\ ;
+二塁手 < niruishu\ ;
+確信 < kakushin\ ;
+石柱 < sekichuu\ ;
+木工具 < mokkougu\ ;
+欠番 < ketsuban\ ;
+彰徳 < shoutoku\ ;
+点眼器 < tenganki\ ;
+愚図愚図 < guzuguzu\ ;
+鱈腹 < tarafuku\ ;
+割物 < waremono\ ;
+幕臣 < bakushin\ ;
+入鋏 < nyuukyou\ ;
+莫大小 < meriyasu\ ;
+製鋼所 < seikoujo\ ;
+軽鴨 < karugamo\ ;
+隠蔽子 < inpeishi\ ;
+勘定場 < kanjouba\ ;
+羽団扇 < hauchiwa\ ;
+念仏 < nenbutsu\ ;
+破戒僧 < hakaisou\ ;
+瀬戸物 < setomono\ ;
+菊石 < kikuishi\ ;
+冷血 < reiketsu\ ;
+平絹 < hiraginu\ ;
+酒呑 < sakenomi\ ;
+葉桜 < hazakura\ ;
+着米 < chakubei\ ;
+大英断 < daieidan\ ;
+強敵 < kyouteki\ ;
+求償 < kyuushou\ ;
+通称 < tsuushou\ ;
+忠僕 < chuuboku\ ;
+水力 < suiryoku\ ;
+残月 < zangetsu\ ;
+勅書 < chokusho\ ;
+先議権 < sengiken\ ;
+共通 < kyoutsuu\ ;
+反抗期 < hankouki\ ;
+本会議 < honkaigi\ ;
+前略 < zenryaku\ ;
+殊更 < kotosara\ ;
+弦月 < gengetsu\ ;
+英米人 < eibeijin\ ;
+低順位 < teijun''i\ ;
+目薬 < megusuri\ ;
+不老泉 < furousen\ ;
+協商 < kyoushou\ ;
+百錬 < hyakuren\ ;
+公達 < koutatsu\ ;
+弱敵 < jakuteki\ ;
+逆算 < gyakusan\ ;
+黙々 < mokumoku\ ;
+八達 < hattatsu\ ;
+八道 < hachidou\ ;
+北山 < kitayama\ ;
+剿滅 < soumetsu\ ;
+名宛人 < naatenin\ ;
+和気藹藹 < wakiaiai\ ;
+自由詩 < jiyuushi\ ;
+廃物 < haibutsu\ ;
+公述 < koujutsu\ ;
+忠信 < chuushin\ ;
+皮質 < hishitsu\ ;
+石文 < ishibumi\ ;
+形式 < keishiki\ ;
+凋落 < chouraku\ ;
+意志的 < ishiteki\ ;
+卸値 < oroshine\ ;
+戦闘員 < sentouin\ ;
+原画像 < gengazou\ ;
+短日 < tanjitsu\ ;
+水先 < mizusaki\ ;
+巷説 < kousetsu\ ;
+大腿部 < daitaibu\ ;
+共軛 < kyouyaku\ ;
+黒々 < kuroguro\ ;
+剥焼 < sukiyaki\ ;
+滋賀県 < shigaken\ ;
+重水素 < juusuiso\ ;
+逢着 < houchaku\ ;
+廃熱 < hainetsu\ ;
+人造湖 < jinzouko\ ;
+役宅 < yakutaku\ ;
+到着 < touchaku\ ;
+請負師 < ukeoishi\ ;
+茹蛸 < yudedako\ ;
+水準器 < suijunki\ ;
+漫画本 < mangahon\ ;
+不真面目 < fumajime\ ;
+再説 < saisetsu\ ;
+連発 < renpatsu\ ;
+復唱 < fukushou\ ;
+知日 < chinichi\ ;
+徴収 < choushuu\ ;
+勅撰 < chokusen\ ;
+互換性 < gokansei\ ;
+分節 < bunsetsu\ ;
+配列 < hairetsu\ ;
+種種相 < shujusou\ ;
+処罰 < shobatsu\ ;
+予防法 < yobouhou\ ;
+安全灯 < anzentou\ ;
+歴朝 < rekichou\ ;
+劇毒 < gekidoku\ ;
+追究 < tsuikyuu\ ;
+歳末 < saimatsu\ ;
+横軸 < yokojiku\ ;
+分筆 < bunpitsu\ ;
+輯録 < shuuroku\ ;
+半口 < hankuchi\ ;
+運送人 < unsounin\ ;
+十哲 < juttetsu\ ;
+百選 < hyakusen\ ;
+上首尾 < joushubi\ ;
+仏舎利 < busshari\ ;
+與太者 < yotamono\ ;
+満天下 < mantenka\ ;
+得手勝手 < etekatte\ ;
+先金 < sakigane\ ;
+軽食 < keishoku\ ;
+分立 < bunritsu\ ;
+価格差 < kakakusa\ ;
+内訳 < uchiwake\ ;
+追福 < tsuifuku\ ;
+無花果 < ichijiku\ ;
+欲深 < yokubuka\ ;
+不人情 < funinjou\ ;
+土建屋 < doken''ya\ ;
+歪曲 < waikyoku\ ;
+入超 < nyuuchou\ ;
+割注 < warichuu\ ;
+民力 < minryoku\ ;
+遮断機 < shadanki\ ;
+乱杭歯 < ranguiba\ ;
+蝋細工 < rouzaiku\ ;
+北壁 < hokuheki\ ;
+糜爛性 < biransei\ ;
+貴公子 < kikoushi\ ;
+廃滅 < haimetsu\ ;
+水上 < minakami\ ;
+初盆 < hatsubon\ ;
+廉価版 < renkaban\ ;
+正札 < shoufuda\ ;
+入賞 < nyuushou\ ;
+先達 < sendatsu\ ;
+止木 < tomarigi\ ;
+着眼 < chakugan\ ;
+初発 < shohatsu\ ;
+原子炉 < genshiro\ ;
+転換炉 < tenkanro\ ;
+黎明期 < reimeiki\ ;
+軟骨 < nankotsu\ ;
+菖蒲湯 < shoubuyu\ ;
+無駄骨 < mudabone\ ;
+類似品 < ruijihin\ ;
+飛行隊 < hikoutai\ ;
+当局 < toukyoku\ ;
+殺害 < satsugai\ ;
+金鳳花 < kinpouge\ ;
+黒雲母 < kurounmo\ ;
+落掌 < rakushou\ ;
+相手方 < aitegata\ ;
+不完全 < fukanzen\ ;
+強弱 < kyoujaku\ ;
+心中 < shinchuu\ ;
+祖国愛 < sokokuai\ ;
+平皿 < hirazara\ ;
+募集費 < boshuuhi\ ;
+初産 < hatsuzan\ ;
+常緑 < jouryoku\ ;
+生産費 < seisanhi\ ;
+統合化 < tougouka\ ;
+旅行家 < ryokouka\ ;
+社外秘 < shagaihi\ ;
+南仏 < nanfutsu\ ;
+従価税 < juukazei\ ;
+十八 < juuhachi\ ;
+使徒書 < shitosho\ ;
+適業 < tekigyou\ ;
+鬱鬱 < utsuutsu\ ;
+追白 < tsuihaku\ ;
+従卒 < juusotsu\ ;
+御冠 < okanmuri\ ;
+律呂 < ritsuryo\ ;
+辣腕 < ratsuwan\ ;
+着用 < chakuyou\ ;
+逆用 < gyakuyou\ ;
+逆産 < gyakuzan\ ;
+六親 < rokushin\ ;
+後口 < atokuchi\ ;
+寝化粧 < negeshou\ ;
+創世期 < souseiki\ ;
+金目鯛 < kinmedai\ ;
+単一 < tan''itsu\ ;
+帯緑 < tairyoku\ ;
+石弓 < ishiyumi\ ;
+選曲 < senkyoku\ ;
+通牒 < tsuuchou\ ;
+上下線 < jougesen\ ;
+理事国 < rijikoku\ ;
+水準儀 < suijungi\ ;
+再保険 < saihoken\ ;
+県立 < kenritsu\ ;
+別状 < betsujou\ ;
+下馬先 < gebasaki\ ;
+凍結 < touketsu\ ;
+寄付行為 < kifukoui\ ;
+泉貨紙 < senkashi\ ;
+御令嬢 < goreijou\ ;
+川蝉 < kawasemi\ ;
+郷国 < kyoukoku\ ;
+追申 < tsuishin\ ;
+電気街 < denkigai\ ;
+砂山 < sunayama\ ;
+律動 < ritsudou\ ;
+正接 < seisetsu\ ;
+迫真 < hakushin\ ;
+軍政部 < gunseibu\ ;
+御題目 < odaimoku\ ;
+省筆 < seihitsu\ ;
+弟御 < otoutogo\ ;
+凄絶 < seizetsu\ ;
+後列 < kouretsu\ ;
+無保証 < muhoshou\ ;
+可分性 < kabunsei\ ;
+亜鉛鉄 < aentetsu\ ;
+動安定 < douantei\ ;
+年率 < nenritsu\ ;
+刑事上 < keijijou\ ;
+女性用 < joseiyou\ ;
+冗舌 < jouzetsu\ ;
+標註 < hyouchuu\ ;
+真白 < masshiro\ ;
+典薬 < ten''yaku\ ;
+乾燥炉 < kansouro\ ;
+弱少 < jakushou\ ;
+育児法 < ikujihou\ ;
+直答 < chokutou\ ;
+石山 < ishiyama\ ;
+茜色 < akaneiro\ ;
+発言 < hatsugen\ ;
+愛鳥家 < aichouka\ ;
+本舞台 < honbutai\ ;
+個人性 < kojinsei\ ;
+弓形 < yuminari\ ;
+副木 < fukuboku\ ;
+依存症 < izonshou\ ;
+真症 < shinshou\ ;
+劣情 < retsujou\ ;
+悪性度 < akuseido\ ;
+冥罰 < meibatsu\ ;
+神々 < kamigami\ ;
+劣悪 < retsuaku\ ;
+鮮血 < senketsu\ ;
+美男子 < binanshi\ ;
+役割 < yakuwari\ ;
+石室 < ishimuro\ ;
+若衆 < wakashuu\ ;
+母君 < hahagimi\ ;
+電波法 < denpahou\ ;
+軍事上 < gunjijou\ ;
+平熱 < heinetsu\ ;
+直税 < chokuzei\ ;
+近着 < kinchaku\ ;
+道板 < michiita\ ;
+烏犀角 < usaikaku\ ;
+矩尺 < kanejaku\ ;
+偏微分 < henbibun\ ;
+素寒貧 < sukanpin\ ;
+豚小屋 < butagoya\ ;
+延滞税 < entaizei\ ;
+選抜 < senbatsu\ ;
+冥王星 < meiousei\ ;
+円盤状 < enbanjou\ ;
+白蟻 < shiroari\ ;
+強奪 < goudatsu\ ;
+蔵書家 < zoushoka\ ;
+録音機 < rokuonki\ ;
+過般来 < kahanrai\ ;
+鑚孔機 < sankouki\ ;
+一般人 < ippanjin\ ;
+刺殺 < shisatsu\ ;
+凡百 < bonpyaku\ ;
+律令 < ritsurei\ ;
+相手役 < aiteyaku\ ;
+内腿 < uchimomo\ ;
+歩合給 < buaikyuu\ ;
+井戸綱 < idodzuna\ ;
+既知数 < kichisuu\ ;
+軍閥 < gunbatsu\ ;
+工務店 < koumuten\ ;
+幣物 < heimotsu\ ;
+逸楽 < itsuraku\ ;
+速決 < sokketsu\ ;
+北側 < hokusoku\ ;
+一朱銀 < isshugin\ ;
+彫刻 < choukoku\ ;
+逆潮 < sakashio\ ;
+砲列 < houretsu\ ;
+航空機 < koukuuki\ ;
+黒繻子 < kurojusu\ ;
+登記所 < toukisho\ ;
+正式 < seishiki\ ;
+適時打 < tekijida\ ;
+冠絶 < kanzetsu\ ;
+殿原 < tonobara\ ;
+凸状 < totsujou\ ;
+合理性 < gourisei\ ;
+達文 < tatsubun\ ;
+征伐 < seibatsu\ ;
+幻滅 < genmetsu\ ;
+弾圧 < dan''atsu\ ;
+軽軽 < karugaru\ ;
+陰電子 < indenshi\ ;
+充血 < juuketsu\ ;
+内職 < naishoku\ ;
+助動詞 < jodoushi\ ;
+慰藉料 < isharyou\ ;
+軟鉄 < nantetsu\ ;
+衛生兵 < eiseihei\ ;
+石墨 < sekiboku\ ;
+低物価 < teibukka\ ;
+個人展 < kojinten\ ;
+実体化 < jittaika\ ;
+判決 < hanketsu\ ;
+短夜 < mijikayo\ ;
+強圧 < kyouatsu\ ;
+邪魔者 < jamamono\ ;
+平滑 < heikatsu\ ;
+鬢長 < bin''naga\ ;
+米議会 < beigikai\ ;
+無尽蔵 < mujinzou\ ;
+円罐 < marugama\ ;
+直直 < jikijiki\ ;
+巻紙 < makigami\ ;
+兼職 < kenshoku\ ;
+転換期 < tenkanki\ ;
+欠文 < ketsubun\ ;
+代議士 < daigishi\ ;
+鼻濁音 < bidakuon\ ;
+冬空 < fuyuzora\ ;
+遅日 < chijitsu\ ;
+別殿 < betsuden\ ;
+別段 < betsudan\ ;
+逆浪 < sakanami\ ;
+白蓮 < byakuren\ ;
+石垣 < ishigaki\ ;
+高電位 < kouden''i\ ;
+持参金 < jisankin\ ;
+唯理論 < yuiriron\ ;
+軸足 < jikuashi\ ;
+名望家 < meibouka\ ;
+多元論 < tagenron\ ;
+目的 < mokuteki\ ;
+萩属 < hagizoku\ ;
+自棄糞 < yakekuso\ ;
+正符号 < seifugou\ ;
+無産者 < musansha\ ;
+速業 < hayawaza\ ;
+育児書 < ikujisho\ ;
+市立 < shiritsu\ ;
+若草 < wakakusa\ ;
+定期船 < teikisen\ ;
+着水 < chakusui\ ;
+手弁当 < tebentou\ ;
+乾燥機 < kansouki\ ;
+三日間 < mikkakan\ ;
+十二分 < juunibun\ ;
+稽古台 < keikodai\ ;
+転轍 < tentetsu\ ;
+鰐皮 < wanigawa\ ;
+止宿 < shishuku\ ;
+芸術 < geijutsu\ ;
+先頭伍 < sentougo\ ;
+正宗 < masamune\ ;
+横腹 < yokobara\ ;
+冗筆 < jouhitsu\ ;
+公職 < koushoku\ ;
+各々 < sorezore\ ;
+刃渡 < hawatari\ ;
+鳩尾 < mizoochi\ ;
+出来高 < dekidaka\ ;
+出演 < shutsuen\ ;
+適役 < tekiyaku\ ;
+身長 < shinchou\ ;
+三世相 < sanzesou\ ;
+力学 < rikigaku\ ;
+色道 < shikidou\ ;
+百芸 < hyakugei\ ;
+乎古止点 < okototen\ ;
+勢力 < seiryoku\ ;
+船霊 < funadama\ ;
+運根鈍 < unkondon\ ;
+砂原 < sunahara\ ;
+彎入 < wan''nyuu\ ;
+衛生上 < eiseijou\ ;
+制札 < seisatsu\ ;
+楽長 < gakuchou\ ;
+直球 < chokkyuu\ ;
+医学士 < igakushi\ ;
+請負人 < ukeoinin\ ;
+極限 < kyokugen\ ;
+鮫膚 < samehada\ ;
+断面図 < danmenzu\ ;
+発色 < hasshoku\ ;
+虚仮猿 < kokezaru\ ;
+未使用 < mishiyou\ ;
+電波星 < denpasei\ ;
+葬列 < souretsu\ ;
+勅問 < chokumon\ ;
+弾力 < danryoku\ ;
+式場 < shikijou\ ;
+高高 < takadaka\ ;
+音韻論 < on''inron\ ;
+割引 < waribiki\ ;
+機械工 < kikaikou\ ;
+欲心 < yokushin\ ;
+再封鎖 < saifuusa\ ;
+剔抉 < tekketsu\ ;
+防波堤 < bouhatei\ ;
+欲得 < yokutoku\ ;
+運転手 < untenshu\ ;
+鮮肉 < sen''niku\ ;
+逆様 < sakasama\ ;
+進撃 < shingeki\ ;
+争覇戦 < souhasen\ ;
+黒文字 < kuromoji\ ;
+無駄足 < mudaashi\ ;
+動力 < douryoku\ ;
+勅命 < chokumei\ ;
+着物地 < kimonoji\ ;
+外気圏 < gaikiken\ ;
+凛烈 < rinretsu\ ;
+開会日 < kaikaibi\ ;
+由来書 < yuraisho\ ;
+武士 < mononofu\ ;
+鵝口瘡 < gakousou\ ;
+殺人 < satsujin\ ;
+僭越 < sen''etsu\ ;
+連日 < renjitsu\ ;
+正夢 < masayume\ ;
+乾燥果 < kansouka\ ;
+刷数 < satsusuu\ ;
+軋轢 < atsureki\ ;
+安全性 < anzensei\ ;
+儲蓄 < chochiku\ ;
+富士五湖 < fujigoko\ ;
+円窓 < marumado\ ;
+若者 < wakamono\ ;
+車轄 < shakatsu\ ;
+恐々 < kowagowa\ ;
+通暁 < tsuugyou\ ;
+前払 < maebarai\ ;
+百聞 < hyakubun\ ;
+是是非非 < zezehihi\ ;
+発育 < hatsuiku\ ;
+逐条 < chikujou\ ;
+益益 < masumasu\ ;
+横縞 < yokojima\ ;
+達弁 < tatsuben\ ;
+栄養士 < eiyoushi\ ;
+台布巾 < daibukin\ ;
+巣窟 < soukutsu\ ;
+川筋 < kawasuji\ ;
+構成員 < kouseiin\ ;
+免職 < menshoku\ ;
+模範生 < mohansei\ ;
+駆動輪 < kudourin\ ;
+勇力 < yuuryoku\ ;
+川端 < kawabata\ ;
+勁卒 < keisotsu\ ;
+東洋史 < toyofumi\ ;
+内祝 < uchiiwai\ ;
+草物 < kusamono\ ;
+岳麓 < gakuroku\ ;
+分極 < bunkyoku\ ;
+槍術 < soujutsu\ ;
+連接 < rensetsu\ ;
+単精度 < tanseido\ ;
+火木土 < kamokudo\ ;
+代議制 < daigisei\ ;
+未定稿 < miteikou\ ;
+入籍 < nyuuseki\ ;
+世話物 < sewamono\ ;
+副審 < fukushin\ ;
+知力 < chiryoku\ ;
+割安 < wariyasu\ ;
+処決 < shoketsu\ ;
+年末 < nenmatsu\ ;
+幾日 < ikunichi\ ;
+年月 < nengetsu\ ;
+切株 < kirikabu\ ;
+効力 < kouryoku\ ;
+観戦記 < kansenki\ ;
+天瓜粉 < tenkafun\ ;
+骸骨 < gaikotsu\ ;
+形成期 < keiseiki\ ;
+放映権 < houeiken\ ;
+式台 < shikidai\ ;
+監視所 < kanshijo\ ;
+骨鱗 < kotsurin\ ;
+御本尊 < gohonzon\ ;
+単純化 < tanjunka\ ;
+個人名 < kojinmei\ ;
+検眼医 < kengan''i\ ;
+再発 < saihatsu\ ;
+死力 < shiryoku\ ;
+未踏峰 < mitouhou\ ;
+労力 < rouryoku\ ;
+横筋 < yokosuji\ ;
+断断固 < dandanko\ ;
+巌窟 < gankutsu\ ;
+冬物 < fuyumono\ ;
+逆数 < gyakusuu\ ;
+兎網 < usagiami\ ;
+暖房器 < danbouki\ ;
+白糸 < shiraito\ ;
+死別 < shibetsu\ ;
+切札 < kirifuda\ ;
+斡旋者 < assensha\ ;
+切望 < setsubou\ ;
+平日 < heijitsu\ ;
+左目 < hidarime\ ;
+軽蔑 < keibetsu\ ;
+仏生会 < busshoue\ ;
+剣客 < kenkyaku\ ;
+内発 < naihatsu\ ;
+規格化 < kikakuka\ ;
+司令部 < shireibu\ ;
+意匠権 < ishouken\ ;
+芋虫 < imomushi\ ;
+椋鳥 < mukudori\ ;
+平政 < hiramasa\ ;
+尊敬語 < sonkeigo\ ;
+骨髄 < kotsuzui\ ;
+形態素 < keitaiso\ ;
+目測 < mokusoku\ ;
+元締 < motojime\ ;
+我利我利 < garigari\ ;
+石亀 < ishigame\ ;
+先細 < sakiboso\ ;
+勅任 < chokunin\ ;
+矛先 < hokosaki\ ;
+美少女 < bishoujo\ ;
+度度 < tabitabi\ ;
+円運動 < en''undou\ ;
+勅令 < chokurei\ ;
+先約 < sen''yaku\ ;
+象牙色 < zougeiro\ ;
+萩原 < hagiwara\ ;
+入神 < nyuushin\ ;
+歯列 < shiretsu\ ;
+切断 < setsudan\ ;
+廃嫡 < haichaku\ ;
+歪力 < wairyoku\ ;
+式典 < shikiten\ ;
+許可書 < kyokasho\ ;
+追撃 < tsuigeki\ ;
+商議員 < shougiin\ ;
+御一新 < goisshin\ ;
+芋蔓 < imodzuru\ ;
+愉快犯 < yukaihan\ ;
+巻物 < makimono\ ;
+指示板 < shijiban\ ;
+相殺 < sousatsu\ ;
+冗物 < joubutsu\ ;
+鉄工所 < tekkoujo\ ;
+前屈 < zenkutsu\ ;
+刳形 < kurikata\ ;
+経営難 < keieinan\ ;
+正割 < seikatsu\ ;
+躍進 < yakushin\ ;
+弁別 < benbetsu\ ;
+陰陽師 < on''youji\ ;
+換気扇 < kankisen\ ;
+非合法 < higouhou\ ;
+飛行艇 < hikoutei\ ;
+着手 < chakushu\ ;
+飛行船 < hikousen\ ;
+経営陣 < keieijin\ ;
+御来光 < goraikou\ ;
+不断草 < fudansou\ ;
+茶漬 < chadzuke\ ;
+留鳥 < ryuuchou\ ;
+栄養剤 < eiyouzai\ ;
+船足 < funaashi\ ;
+連鎖店 < rensaten\ ;
+兵略 < heiryaku\ ;
+白票 < hakuhyou\ ;
+兵法家 < heihouka\ ;
+頻度数 < hindosuu\ ;
+資本家 < shihonka\ ;
+偏食 < henshoku\ ;
+最右翼 < saiuyoku\ ;
+栄養分 < eiyoubun\ ;
+歌合 < utaawase\ ;
+躑躅 < tsutsuji\ ;
+歌口 < utaguchi\ ;
+鰹木 < katsuogi\ ;
+迫撃 < hakugeki\ ;
+可処分 < kashobun\ ;
+汲々 < kyuukyuu\ ;
+蒙古斑 < moukohan\ ;
+初恋 < hatsukoi\ ;
+先程 < sakihodo\ ;
+船賃 < funachin\ ;
+茶渋 < chashibu\ ;
+透徹 < toutetsu\ ;
+病身 < byoushin\ ;
+寒稽古 < kangeiko\ ;
+第三紀 < daisanki\ ;
+概説 < gaisetsu\ ;
+床店 < tokomise\ ;
+砂風呂 < sunaburo\ ;
+運転士 < untenshi\ ;
+第一線 < daiissen\ ;
+良薬 < ryouyaku\ ;
+欠場 < ketsujou\ ;
+切戻 < setsurai\ ;
+標石 < hyouseki\ ;
+偽金 < nisegane\ ;
+目標 < mokuhyou\ ;
+銀行家 < ginkouka\ ;
+力倆 < rikiryou\ ;
+選別 < senbetsu\ ;
+刺客 < shikyaku\ ;
+三仙叉 < sansensa\ ;
+逐年 < chikunen\ ;
+鮫皮 < samegawa\ ;
+広広 < hirobiro\ ;
+再工事 < saikouji\ ;
+横町 < yokochou\ ;
+裏日本 < uranihon\ ;
+被傭者 < hiyousha\ ;
+近日 < kinjitsu\ ;
+広幅 < hirohaba\ ;
+力作 < rikisaku\ ;
+検閲 < ken''etsu\ ;
+瞬刻 < shunkoku\ ;
+発着 < hatchaku\ ;
+極論 < kyokuron\ ;
+着弾 < chakudan\ ;
+軽水炉 < keisuiro\ ;
+典物 < tenbutsu\ ;
+自由港 < jiyuukou\ ;
+御曹子 < onzoushi\ ;
+防水扉 < bousuihi\ ;
+白皙 < hakuseki\ ;
+居心地 < igokochi\ ;
+地下道 < chikadou\ ;
+白白 < hakuhaku\ ;
+切情 < setsujou\ ;
+刑律 < keiritsu\ ;
+標的 < hyouteki\ ;
+出所 < dedokoro\ ;
+無駄花 < mudabana\ ;
+追徴 < tsuichou\ ;
+着底 < chakutei\ ;
+党略 < touryaku\ ;
+無定見 < muteiken\ ;
+床山 < tokoyama\ ;
+痛覚 < tsuukaku\ ;
+年式 < nenshiki\ ;
+発癌 < hatsugan\ ;
+着帽 < chakubou\ ;
+内濠 < uchibori\ ;
+先着 < senchaku\ ;
+着帯 < chakutai\ ;
+常春 < tokoharu\ ;
+美容師 < biyoushi\ ;
+発火点 < hakkaten\ ;
+荷捌 < nisabaki\ ;
+平庭 < hiraniwa\ ;
+山鳩 < yamabato\ ;
+山鳥 < yamadori\ ;
+通学 < tsuugaku\ ;
+畜類 < chikurui\ ;
+平底 < hirazoko\ ;
+入獄 < nyuugoku\ ;
+公爵 < koushaku\ ;
+色艶 < irotsuya\ ;
+平幕 < hiramaku\ ;
+現代化 < gendaika\ ;
+先発 < senpatsu\ ;
+福井県 < fukuiken\ ;
+白瓜 < shirouri\ ;
+不敬虔 < fukeiken\ ;
+近接 < kinsetsu\ ;
+丁子油 < choujiyu\ ;
+転職 < tenshoku\ ;
+透察 < tousatsu\ ;
+劇作 < gekisaku\ ;
+財務官 < zaimukan\ ;
+料理屋 < ryouriya\ ;
+軸索 < jikusaku\ ;
+席料 < sekiryou\ ;
+欠号 < ketsugou\ ;
+停車場 < teishaba\ ;
+感光度 < kankoudo\ ;
+無能者 < munousha\ ;
+百獣 < hyakujuu\ ;
+僚船 < tomobune\ ;
+真心 < magokoro\ ;
+劇中 < gekichuu\ ;
+蹄鉄 < teitetsu\ ;
+交叉点 < kousaten\ ;
+氷河期 < hyougaki\ ;
+退屈 < taikutsu\ ;
+低電位 < teiden''i\ ;
+出世魚 < shusseuo\ ;
+運転台 < untendai\ ;
+前哲 < zentetsu\ ;
+出廬 < shutsuro\ ;
+適作 < tekisaku\ ;
+野心家 < yashinka\ ;
+内法 < uchinori\ ;
+出度 < shutsudo\ ;
+劃一 < kakuitsu\ ;
+自由権 < jiyuuken\ ;
+軸箱 < jikubako\ ;
+防水布 < bousuifu\ ;
+出席 < shusseki\ ;
+再臨派 < sairinha\ ;
+別売 < betsubai\ ;
+帝日 < teijitsu\ ;
+構築 < kouchiku\ ;
+目撃 < mokugeki\ ;
+軍職 < gunshoku\ ;
+名場面 < meibamen\ ;
+筆記体 < hikkitai\ ;
+弦楽器 < gengakki\ ;
+滞在費 < taizaihi\ ;
+規定値 < kiteichi\ ;
+一体感 < ittaikan\ ;
+冬服 < fuyufuku\ ;
+茶杓 < chashaku\ ;
+鮮烈 < senretsu\ ;
+赤砂糖 < akazatou\ ;
+牛小屋 < ushigoya\ ;
+廉価品 < renkahin\ ;
+民需品 < minjuhin\ ;
+真人間 < maningen\ ;
+写植 < shashoku\ ;
+金盞花 < kinsenka\ ;
+別堂 < betsudou\ ;
+分宿 < bunshuku\ ;
+全滅 < zenmetsu\ ;
+山風 < yamakaze\ ;
+草摺 < kusazuri\ ;
+江戸時代 < edojidai\ ;
+先物 < sakimono\ ;
+取沙汰 < torizata\ ;
+銀行員 < ginkouin\ ;
+層位学 < souigaku\ ;
+百点 < hyakuten\ ;
+逆夢 < sakayume\ ;
+透視図 < toushizu\ ;
+名義人 < meiginin\ ;
+給油所 < kyuuyujo\ ;
+光熱 < kounetsu\ ;
+自走砲 < jisouhou\ ;
+前列 < zenretsu\ ;
+寄稿者 < kikousha\ ;
+抒情詩 < jojoushi\ ;
+逆境 < gyakkyou\ ;
+円刃刀 < enjintou\ ;
+癇癪 < kanshaku\ ;
+軍縮 < gunshuku\ ;
+鮭漁 < sakeryou\ ;
+達人 < tatsujin\ ;
+色紙 < shikishi\ ;
+白濁 < hakudaku\ ;
+儁秀 < shunshuu\ ;
+幅広 < habahiro\ ;
+山霧 < yamagiri\ ;
+三七日 < minanoka\ ;
+逸出 < isshutsu\ ;
+入浴 < nyuuyoku\ ;
+欠便 < ketsubin\ ;
+軽石 < karuishi\ ;
+切妻 < kirizuma\ ;
+巻末 < kanmatsu\ ;
+寺小屋 < terakoya\ ;
+距骨 < kyokotsu\ ;
+田雲雀 < tahibari\ ;
+温湿布 < onshippu\ ;
+生首 < namakubi\ ;
+入洛 < nyuuraku\ ;
+直情 < chokujou\ ;
+凶宅 < kyoutaku\ ;
+山際 < yamagiwa\ ;
+庭先 < niwasaki\ ;
+御面相 < gomensou\ ;
+山陰 < yamakage\ ;
+剃刀 < kamisori\ ;
+横波 < yokonami\ ;
+着地 < chakuchi\ ;
+上景気 < joukeiki\ ;
+育英会 < ikueikai\ ;
+乗馬隊 < joubatai\ ;
+地下街 < chikagai\ ;
+盗掘 < toukutsu\ ;
+省庁 < shouchou\ ;
+留金 < tomegane\ ;
+橋梁 < kyouryou\ ;
+町長 < chouchou\ ;
+属領 < zokuryou\ ;
+通告 < tsuukoku\ ;
+前借 < zenshaku\ ;
+青懸巣 < aokakesu\ ;
+欠乏 < ketsubou\ ;
+極致 < kyokuchi\ ;
+不敬罪 < fukeizai\ ;
+原子価 < genshika\ ;
+別命 < betsumei\ ;
+良策 < ryousaku\ ;
+甘食 < amashoku\ ;
+内枠 < uchiwaku\ ;
+橋杭 < hashigui\ ;
+総武線 < soubusen\ ;
+不縹緻 < bukiryou\ ;
+別号 < betsugou\ ;
+借銭 < shakusen\ ;
+眉尻 < mayujiri\ ;
+真如 < shin''nyo\ ;
+解像度 < kaizoudo\ ;
+若水 < wakamizu\ ;
+控訴状 < kousojou\ ;
+通力 < tsuuriki\ ;
+店先 < misesaki\ ;
+畔道 < azemichi\ ;
+若殿 < wakatono\ ;
+再検査 < saikensa\ ;
+通則 < tsuusoku\ ;
+初口 < shokuchi\ ;
+樽柿 < tarugaki\ ;
+臭覚 < shuukaku\ ;
+複座機 < fukuzaki\ ;
+批評家 < hihyouka\ ;
+御中元 < ochuugen\ ;
+人真似 < hitomane\ ;
+横様 < yokozama\ ;
+横槍 < yokoyari\ ;
+冷徹 < reitetsu\ ;
+的地位 < tekichii\ ;
+督促 < tokusoku\ ;
+換気口 < kankikou\ ;
+調査員 < chousain\ ;
+世話役 < sewayaku\ ;
+判別 < hanbetsu\ ;
+常客 < joukyaku\ ;
+帳尻 < choujiri\ ;
+悪知恵 < warudjie\ ;
+苗水 < nawamizu\ ;
+短期間 < tankikan\ ;
+御主人 < goshujin\ ;
+山鉾 < yamaboko\ ;
+髄虫 < zuimushi\ ;
+皆様 < minasama\ ;
+別册 < bessatsu\ ;
+同時性 < doujisei\ ;
+帷子 < katabira\ ;
+草市 < kusaichi\ ;
+黄変米 < ouhenmai\ ;
+余所者 < yosomono\ ;
+白檀 < byakudan\ ;
+若様 < wakasama\ ;
+直射 < chokusha\ ;
+山里 < yamazato\ ;
+退却 < taikyaku\ ;
+滋養分 < jiyoubun\ ;
+槍玉 < yaridama\ ;
+棚牡丹 < tanabota\ ;
+甲鉄 < koutetsu\ ;
+銘酒屋 < meishuya\ ;
+塩類泉 < enruisen\ ;
+局面 < kyokumen\ ;
+保菌者 < hokinsha\ ;
+通信 < tsuushin\ ;
+極線 < kyokusen\ ;
+防砂林 < bousarin\ ;
+通俗 < tsuuzoku\ ;
+船縁 < funaberi\ ;
+皓月 < kougetsu\ ;
+色相 < shikisou\ ;
+色盲 < shikimou\ ;
+眉墨 < mayuzumi\ ;
+内接 < naisetsu\ ;
+閉世界 < heisekai\ ;
+巴戦 < tomoesen\ ;
+全曲 < zenkyoku\ ;
+軸物 < jikumono\ ;
+業績 < gyouseki\ ;
+地下茎 < chikakei\ ;
+多辺形 < tahenkei\ ;
+入木 < nyuuboku\ ;
+極細 < gokuboso\ ;
+不明朗 < fumeirou\ ;
+送別 < soubetsu\ ;
+足首 < ashikubi\ ;
+兼摂 < kensetsu\ ;
+別便 < betsubin\ ;
+年別 < nenbetsu\ ;
+泥火山 < deikazan\ ;
+生録 < namaroku\ ;
+京都府 < kyoutofu\ ;
+白梅 < shiraume\ ;
+臆説 < okusetsu\ ;
+令夫人 < reifujin\ ;
+先様 < sakisama\ ;
+全日 < zenjitsu\ ;
+布引 < nunobiki\ ;
+罷免権 < himenken\ ;
+丁字形 < teijikei\ ;
+監察 < kansatsu\ ;
+分力 < bunryoku\ ;
+候補者 < kouhosha\ ;
+傍耳 < katamimi\ ;
+略言 < ryakugen\ ;
+別人 < betsunin\ ;
+小魚 < kozakana\ ;
+左手 < hidarite\ ;
+色町 < iromachi\ ;
+色男 < irootoko\ ;
+楽章 < gakushou\ ;
+分別 < bunbetsu\ ;
+絵画館 < kaigakan\ ;
+鬱病 < utsubyou\ ;
+国営化 < kokueika\ ;
+逆修 < gyakushu\ ;
+物故者 < bukkosha\ ;
+前相撲 < maezumou\ ;
+研米機 < kenmaiki\ ;
+直売 < chokubai\ ;
+借貸 < shakutai\ ;
+暗黒期 < ankokuki\ ;
+借財 < shakuzai\ ;
+現時点 < genjiten\ ;
+隣保館 < rinpokan\ ;
+冬山 < fuyuyama\ ;
+分冊 < bunsatsu\ ;
+焼夷弾 < shouidan\ ;
+丁字帯 < teijitai\ ;
+軍略 < gunryaku\ ;
+加配米 < kahaimai\ ;
+用達 < youtatsu\ ;
+荒夷 < araebisu\ ;
+極端 < kyokutan\ ;
+真南 < maminami\ ;
+歯科医院 < shikaiin\ ;
+高精度 < kouseido\ ;
+略装 < ryakusou\ ;
+陰関数 < inkansuu\ ;
+水泳帽 < suieibou\ ;
+列伝 < retsuden\ ;
+貸費生 < taihisei\ ;
+船端 < funabata\ ;
+鯨座 < kujiraza\ ;
+着任 < chakunin\ ;
+増税案 < zouzeian\ ;
+辻堂 < tsujidou\ ;
+俺達 < oretachi\ ;
+餓鬼共 < gakidomo\ ;
+真勇 < shin''yuu\ ;
+傘紙 < kasagami\ ;
+許可制 < kyokasei\ ;
+白昼 < hakuchuu\ ;
+痼疾 < koshitsu\ ;
+偽者 < nisemono\ ;
+克服 < kokufuku\ ;
+女性像 < joseizou\ ;
+画質 < gashitsu\ ;
+跳躍 < chouyaku\ ;
+火星年 < kaseinen\ ;
+発明 < hatsumei\ ;
+亜硫酸 < aryuusan\ ;
+逆上 < gyakujou\ ;
+先月 < sengetsu\ ;
+平仄 < hyousoku\ ;
+円形 < marugata\ ;
+再軍備 < saigunbi\ ;
+板屋貝 < itayagai\ ;
+少額 < shougaku\ ;
+斡旋案 < assen''an\ ;
+花崗岩 < kakougan\ ;
+返却 < henkyaku\ ;
+凶兆 < kyouchou\ ;
+楓糖 < kaedetou\ ;
+幕内 < makuuchi\ ;
+未完成 < mikansei\ ;
+巻尺 < makijaku\ ;
+先日 < senjitsu\ ;
+無用心 < buyoujin\ ;
+成文化 < seibunka\ ;
+借覧 < shakuran\ ;
+粗悪品 < soakuhin\ ;
+控訴権 < kousoken\ ;
+駒鳥 < komadori\ ;
+調理場 < chouriba\ ;
+地下線 < chikasen\ ;
+幕僚 < bakuryou\ ;
+写実 < shajitsu\ ;
+亜硝酸 < ashousan\ ;
+元日 < ganjitsu\ ;
+白描 < hakubyou\ ;
+尻重 < shiriomo\ ;
+脛骨 < keikotsu\ ;
+体系化 < taikeika\ ;
+元方 < motokata\ ;
+発揚 < hatsuyou\ ;
+経営者 < keieisha\ ;
+茶壺 < chatsubo\ ;
+修身 < shuushin\ ;
+発掘 < hakkutsu\ ;
+川底 < kawazoko\ ;
+川床 < kawadoko\ ;
+凶作 < kyousaku\ ;
+概略 < gairyaku\ ;
+被写体 < hishatai\ ;
+川幅 < kawahaba\ ;
+傷病 < shoubyou\ ;
+椎茸 < shiitake\ ;
+州州 < shuushuu\ ;
+停職 < teishoku\ ;
+侑食 < yuushoku\ ;
+分娩期 < bunbenki\ ;
+後仕舞 < atojimai\ ;
+内局 < naikyoku\ ;
+男親 < otokooya\ ;
+裏面史 < rimenshi\ ;
+花柄 < hanagara\ ;
+見世物 < misemono\ ;
+山襞 < yamahida\ ;
+辻占 < tsujiura\ ;
+様様 < samazama\ ;
+真中 < man''naka\ ;
+内密 < naimitsu\ ;
+語彙力 < goiryoku\ ;
+花束 < hanataba\ ;
+内実 < naijitsu\ ;
+共布 < tomonuno\ ;
+山裾 < yamasuso\ ;
+高空 < takazora\ ;
+花札 < hanafuda\ ;
+魔法瓶 < mahoubin\ ;
+百態 < hyakutai\ ;
+分娩時 < bunbenji\ ;
+上下動 < jougedou\ ;
+平面図 < heimenzu\ ;
+耐火性 < taikasei\ ;
+痔疾 < jishitsu\ ;
+再定義 < saiteigi\ ;
+電気工 < denkikou\ ;
+反古籠 < hogukago\ ;
+八幡 < hachiman\ ;
+御降誕 < gokoutan\ ;
+巡察 < junsatsu\ ;
+軽業 < karuwaza\ ;
+川尻 < kawajiri\ ;
+明文化 < meibunka\ ;
+腹具合 < haraguai\ ;
+直前 < chokuzen\ ;
+選挙日 < senkyobi\ ;
+棒術 < boujutsu\ ;
+花時 < hanadoki\ ;
+入幕 < nyuumaku\ ;
+発情 < hatsujou\ ;
+俳謔 < haigyaku\ ;
+岩脈 < ganmyaku\ ;
+帳元 < choumoto\ ;
+病的 < byouteki\ ;
+横幅 < yokohaba\ ;
+輸精管 < yuseikan\ ;
+病癖 < byouheki\ ;
+小売店 < kouriten\ ;
+宇宙論 < uchuuron\ ;
+胸高 < munadaka\ ;
+鑑定家 < kanteika\ ;
+促進 < sokushin\ ;
+標徴 < hyouchou\ ;
+固溶体 < koyoutai\ ;
+案内所 < an''naijo\ ;
+病症 < byoushou\ ;
+自信家 < jishinka\ ;
+冷却 < reikyaku\ ;
+亜鉛末 < aenmatsu\ ;
+膏血 < kouketsu\ ;
+傷物 < kizumono\ ;
+導電度 < doudendo\ ;
+県知事 < kenchiji\ ;
+百弊 < hyakuhei\ ;
+凝乳 < gyounyuu\ ;
+畜舎 < chikusha\ ;
+意気阻喪 < ikisosou\ ;
+共学 < kyougaku\ ;
+宇宙観 < uchuukan\ ;
+電動機 < dendouki\ ;
+少量 < shouryou\ ;
+一丁目 < itchoume\ ;
+伊達衆 < dateshuu\ ;
+腋窩腺 < ekikasen\ ;
+不文法 < fubunpou\ ;
+百年 < hyakunen\ ;
+足軽 < ashigaru\ ;
+一貫性 < ikkansei\ ;
+口内炎 < kounaien\ ;
+健筆 < kenpitsu\ ;
+過不足 < kafusoku\ ;
+寒餅 < kanmochi\ ;
+寮長 < ryouchou\ ;
+愛用者 < aiyousha\ ;
+俊足 < shunsoku\ ;
+公民科 < kouminka\ ;
+入寂 < nyuujaku\ ;
+出格子 < degoushi\ ;
+信認 < shin''nin\ ;
+今世紀 < konseiki\ ;
+入学 < nyuugaku\ ;
+業物 < wazamono\ ;
+未婚者 < mikonsha\ ;
+赤靴 < akagutsu\ ;
+候補生 < kouhosei\ ;
+州境 < shuukyou\ ;
+東南亜 < tounan''a\ ;
+信託 < shintaku\ ;
+供養塔 < kuyoutou\ ;
+健胃剤 < ken''izai\ ;
+宿駅 < shukueki\ ;
+極点 < kyokuten\ ;
+俗調 < zokuchou\ ;
+舌癌 < zetsugan\ ;
+直中 < tadanaka\ ;
+花房 < hanafusa\ ;
+修験者 < shugenja\ ;
+疫病 < yakubyou\ ;
+若宮 < wakamiya\ ;
+元帳 < motochou\ ;
+寛闊 < kankatsu\ ;
+寸鉄 < suntetsu\ ;
+違犯行為 < ihankoui\ ;
+柔道着 < juudougi\ ;
+百害 < hyakugai\ ;
+微系数 < bikeisuu\ ;
+仕置場 < shiokiba\ ;
+偶発 < guuhatsu\ ;
+平方和 < heihouwa\ ;
+小身 < shoushin\ ;
+宿願 < shukugan\ ;
+伴奏部 < bansoubu\ ;
+生薬 < shouyaku\ ;
+宿題 < shukudai\ ;
+古写本 < koshahon\ ;
+瓶詰 < bindzume\ ;
+偏窟 < henkutsu\ ;
+先山 < sakiyama\ ;
+男色 < nanshoku\ ;
+脱輪 < datsurin\ ;
+出来物 < dekimono\ ;
+倹約 < ken''yaku\ ;
+草丈 < kusatake\ ;
+土饅頭 < domanjuu\ ;
+世話人 < sewabito\ ;
+入塾 < nyuujuku\ ;
+美顔水 < bigansui\ ;
+自由刑 < jiyuukei\ ;
+塩風呂 < shioburo\ ;
+充電器 < juudenki\ ;
+被験者 < hikensha\ ;
+小熊座 < kogumaza\ ;
+優形 < yasagata\ ;
+手信語 < teshingo\ ;
+先客 < senkyaku\ ;
+赤毛布 < akagetto\ ;
+俗衆 < zokushuu\ ;
+山膚 < yamahada\ ;
+榕樹 < gajumaru\ ;
+先安 < sakiyasu\ ;
+馬面 < umadzura\ ;
+水彩画 < suisaiga\ ;
+一人寝 < hitorine\ ;
+青味泥 < aomidoro\ ;
+百姓 < hyakusei\ ;
+自由党 < jiyuutou\ ;
+充実 < juujitsu\ ;
+芙蓉峰 < fuyouhou\ ;
+落花生 < rakkasei\ ;
+花形 < hanagata\ ;
+山間部 < sankanbu\ ;
+盗人 < nusubito\ ;
+同時代 < doujidai\ ;
+白妙 < shirotae\ ;
+山脈 < yamanami\ ;
+無宗派 < mushuuha\ ;
+花弁 < hanabira\ ;
+入国 < nyuukoku\ ;
+極洋 < kyokuyou\ ;
+軍政府 < gunseifu\ ;
+白壁 < hakuheki\ ;
+白墨 < hakuboku\ ;
+発売 < hatsubai\ ;
+内力 < nairyoku\ ;
+赤銅 < shakudou\ ;
+皮剥 < kawahagi\ ;
+婦人会 < fujinkai\ ;
+原繊維 < gensen''i\ ;
+巨刹 < kyosatsu\ ;
+骨盤 < kotsuban\ ;
+鯉口 < koiguchi\ ;
+生色 < seishoku\ ;
+継電気 < keidenki\ ;
+不文明 < fubunmei\ ;
+平土間 < hiradoma\ ;
+次男坊 < jinanbou\ ;
+先太 < sakibuto\ ;
+超越 < chouetsu\ ;
+膀胱炎 < boukouen\ ;
+有効打 < yuukouda\ ;
+雨量計 < uryoukei\ ;
+兵卒 < heisotsu\ ;
+宇宙船 < uchuusen\ ;
+減衰器 < gensuiki\ ;
+様式 < youshiki\ ;
+伴食 < banshoku\ ;
+多芸性 < tageisei\ ;
+兵力 < heiryoku\ ;
+赤切符 < akagippu\ ;
+楽楽 < rakuraku\ ;
+高潮 < takashio\ ;
+内側 < uchigawa\ ;
+脅迫 < kyouhaku\ ;
+腹膜 < fukumaku\ ;
+火星人 < kaseijin\ ;
+内倉 < uchigura\ ;
+日航機 < nikkouki\ ;
+今世界 < konsekai\ ;
+花守 < hanamori\ ;
+胸郭 < kyoukaku\ ;
+軍需品 < gunjuhin\ ;
+病毒 < byoudoku\ ;
+極楽 < gokuraku\ ;
+水蒸気 < suijouki\ ;
+極極 < gokugoku\ ;
+単漢字 < tankanji\ ;
+十文字 < juumonji\ ;
+守備兵 < shubihei\ ;
+病歴 < byoureki\ ;
+暗号文 < angoubun\ ;
+花嫁 < hanayome\ ;
+全力 < zenryoku\ ;
+共共 < tomodomo\ ;
+高等科 < koutouka\ ;
+花婿 < hanamuko\ ;
+贋首 < nisekubi\ ;
+若君 < wakagimi\ ;
+局舎 < kyokusha\ ;
+州俗 < shuuzoku\ ;
+添乗員 < tenjouin\ ;
+植生 < shokusei\ ;
+権力 < kenryoku\ ;
+優女 < yasaon''a\ ;
+宿酔 < shukusui\ ;
+赫赫 < kakukaku\ ;
+案内図 < an''naizu\ ;
+合言葉 < aikotoba\ ;
+密造 < mitsuzou\ ;
+楽曲 < gakkyoku\ ;
+高波 < takanami\ ;
+会食 < kaishoku\ ;
+定期券 < teikiken\ ;
+倒立 < touritsu\ ;
+色感 < shikikan\ ;
+左上 < hidariue\ ;
+予算案 < yosan''an\ ;
+多様性 < tayousei\ ;
+先哲 < sentetsu\ ;
+自賠法 < jibaihou\ ;
+極東 < kyokutou\ ;
+出不精 < debushou\ ;
+安山岩 < anzangan\ ;
+老大家 < routaika\ ;
+氏素性 < ujisujou\ ;
+上天気 < joutenki\ ;
+第一声 < daiissei\ ;
+導火線 < doukasen\ ;
+魚屋 < sakanaya\ ;
+依頼心 < iraishin\ ;
+跳箱 < tobibako\ ;
+軟式 < nanshiki\ ;
+負債者 < fusaisha\ ;
+高殿 < takadono\ ;
+後頭部 < koutoubu\ ;
+偏片 < katahara\ ;
+川上 < kawakami\ ;
+皮膚病 < hifubyou\ ;
+山程 < yamahodo\ ;
+発動 < hatsudou\ ;
+老夫婦 < roufuufu\ ;
+先口 < senkuchi\ ;
+地下水 < chikasui\ ;
+肋骨 < rokkotsu\ ;
+電気代 < denkidai\ ;
+定義域 < teigiiki\ ;
+畜産 < chikusan\ ;
+色彩 < shikisai\ ;
+良心 < ryoushin\ ;
+生米 < namagome\ ;
+用筆 < youhitsu\ ;
+放火罪 < houkazai\ ;
+雨合羽 < amagappa\ ;
+受刑者 < jukeisha\ ;
+臓物 < zoumotsu\ ;
+非公開 < hikoukai\ ;
+遙々 < harubaru\ ;
+骨灰 < kotsubai\ ;
+普請場 < fushinba\ ;
+多島海 < tatoukai\ ;
+船旅 < funatabi\ ;
+船方 < funakata\ ;
+労働歌 < roudouka\ ;
+寄港地 < kikouchi\ ;
+花園 < hanazono\ ;
+定期便 < teikibin\ ;
+軍律 < gunritsu\ ;
+軍役 < gun''yaku\ ;
+未来形 < miraikei\ ;
+百億 < hyakuoku\ ;
+屑籠 < kuzukago\ ;
+痛撃 < tsuugeki\ ;
+全乳 < zen''nyuu\ ;
+格調 < kakuchou\ ;
+輸出 < yushutsu\ ;
+飛行士 < hikoushi\ ;
+概括 < gaikatsu\ ;
+膠着 < kouchaku\ ;
+妊産婦 < ninsanpu\ ;
+短時間 < tanjikan\ ;
+併設 < heisetsu\ ;
+百倍 < hyakubai\ ;
+偏差値 < hensachi\ ;
+下降線 < kakousen\ ;
+洋菓子 < yougashi\ ;
+断裁機 < dansaiki\ ;
+車座 < kurumaza\ ;
+先入 < sen''nyuu\ ;
+飛行場 < hikoujou\ ;
+借用 < shakuyou\ ;
+宿賃 < yadochin\ ;
+畜犬 < chikuken\ ;
+恵比須講 < ebisukou\ ;
+傍杖 < sobadzue\ ;
+元元 < motomoto\ ;
+工具入 < kouguire\ ;
+体温計 < taionkei\ ;
+寝袋 < nebukuro\ ;
+発行日 < hakkoubi\ ;
+芝地 < shibachi\ ;
+拷問具 < goumongu\ ;
+的中 < tekichuu\ ;
+除外例 < jogairei\ ;
+就縛 < shuubaku\ ;
+寿老人 < juroujin\ ;
+密謀 < mitsubou\ ;
+公取委 < koutorii\ ;
+院外団 < ingaidan\ ;
+不変性 < fuhensei\ ;
+密談 < mitsudan\ ;
+多産系 < tasankei\ ;
+発令 < hatsurei\ ;
+小規模 < shoukibo\ ;
+合議制 < gougisei\ ;
+維管束 < ikansoku\ ;
+良将 < ryoushou\ ;
+客車 < kyakusha\ ;
+脱色 < dasshoku\ ;
+高温計 < kouonkei\ ;
+高札 < kousatsu\ ;
+初等科 < shotouka\ ;
+記憶法 < kiokuhou\ ;
+今朝方 < kesagata\ ;
+百万 < hyakuman\ ;
+破砕性 < hasaisei\ ;
+鹿野苑 < rokuyaon\ ;
+仙骨 < senkotsu\ ;
+安酒 < yasuzake\ ;
+僻境 < hekikyou\ ;
+車屋 < kurumaya\ ;
+舞台裏 < butaiura\ ;
+経営権 < keieiken\ ;
+身心 < shinshin\ ;
+痛惜 < tsuuseki\ ;
+不燃性 < funensei\ ;
+偽札 < nisefuda\ ;
+神祇官 < jingikan\ ;
+借物 < karimono\ ;
+赤蛙 < akagaeru\ ;
+被害者 < higaisha\ ;
+付馬 < tsukeuma\ ;
+水酸基 < suisanki\ ;
+天体図 < tentaizu\ ;
+近距離 < kinkyori\ ;
+準社員 < junshain\ ;
+赤虫 < akamushi\ ;
+佗言 < wabigoto\ ;
+人件費 < jinkenhi\ ;
+常得意 < joutokui\ ;
+生皮 < namakawa\ ;
+極性 < kyokusei\ ;
+色女 < iroon''na\ ;
+輪伐 < rinbatsu\ ;
+倍率 < bairitsu\ ;
+皮脂腺 < hishisen\ ;
+無定形 < muteikei\ ;
+可用性 < kayousei\ ;
+人生派 < jinseiha\ ;
+俗称 < zokushou\ ;
+山猿 < yamazaru\ ;
+山猫 < yamaneko\ ;
+伝達 < dentatsu\ ;
+発行所 < hakkoujo\ ;
+摩天楼 < matenrou\ ;
+寵臣 < choushin\ ;
+小間物 < komamono\ ;
+植毛 < shokumou\ ;
+御大層 < gotaisou\ ;
+警備隊 < keibitai\ ;
+割烹着 < kappougi\ ;
+協和音 < kyouwaon\ ;
+受動態 < judoutai\ ;
+総動員 < soudouin\ ;
+肉鍋 < nikunabe\ ;
+男爵 < danshaku\ ;
+花林糖 < karintou\ ;
+人魂 < hitodama\ ;
+腹痛 < fukutsuu\ ;
+船底 < funazoko\ ;
+船床 < funadoko\ ;
+駆落 < kakeochi\ ;
+極希 < gokumare\ ;
+人骨 < jinkotsu\ ;
+小結 < komusubi\ ;
+正社員 < seishain\ ;
+等温線 < touonsen\ ;
+実説 < jissetsu\ ;
+御霊屋 < mitamaya\ ;
+一夕話 < issekiwa\ ;
+小為替 < kogawase\ ;
+第一位 < daiichii\ ;
+履物 < hakimono\ ;
+病徴 < byouchou\ ;
+税関吏 < zeikanri\ ;
+養育費 < youikuhi\ ;
+定説 < teisetsu\ ;
+臨月 < ringetsu\ ;
+流鏑馬 < yabusame\ ;
+病弱 < byoujaku\ ;
+控訴人 < kousonin\ ;
+茶話会 < chawakai\ ;
+喫緊事 < kikkinji\ ;
+吸金剛 < kokongou\ ;
+骨材 < kotsuzai\ ;
+産物 < sanbutsu\ ;
+検札 < kensatsu\ ;
+貪食 < donshoku\ ;
+信用 < shin''you\ ;
+脇腹 < wakibara\ ;
+老練家 < rourenka\ ;
+不調和 < fuchouwa\ ;
+生物 < namamono\ ;
+局番 < kyokuban\ ;
+小策 < shousaku\ ;
+槍先 < yarisaki\ ;
+気管支 < kikanshi\ ;
+痰壺 < tantsubo\ ;
+髪床 < kamidoko\ ;
+水酸化 < suisanka\ ;
+大人気 < daininki\ ;
+寒色 < kanshoku\ ;
+青銅器 < seidouki\ ;
+植栽 < shokusai\ ;
+休足 < kyuusoku\ ;
+船宿 < funayado\ ;
+仏門 < butsumon\ ;
+飛行便 < hikoubin\ ;
+傍役 < wakiyaku\ ;
+肉迫 < nikuhaku\ ;
+可能法 < kanouhou\ ;
+真珠母 < shinjubo\ ;
+核膜 < kakumaku\ ;
+専攻科 < senkouka\ ;
+化膿菌 < kanoukin\ ;
+亡骸 < nakigara\ ;
+臘月 < rougetsu\ ;
+植林 < shokurin\ ;
+非常線 < hijousen\ ;
+精一杯 < seiippai\ ;
+遇不遇 < guufuguu\ ;
+胸膜 < kyoumaku\ ;
+飽食 < houshoku\ ;
+修熟 < shuujuku\ ;
+未耕地 < mikouchi\ ;
+門下生 < monkasei\ ;
+一風呂 < hitofuro\ ;
+宅診 < takushin\ ;
+小禄 < shouroku\ ;
+伝説 < densetsu\ ;
+足癖 < ashikuse\ ;
+脱税 < datsuzei\ ;
+京響 < kyoukyou\ ;
+培養基 < baiyouki\ ;
+転入 < ten''nyuu\ ;
+軍隊化 < guntaika\ ;
+演芸会 < engeikai\ ;
+対立 < tairitsu\ ;
+文人画 < bunjinga\ ;
+現時代 < genjidai\ ;
+腫物 < shumotsu\ ;
+広範囲 < kouhan''i\ ;
+極大 < kyokudai\ ;
+略書 < ryakusho\ ;
+宿舎 < shukusha\ ;
+軍卒 < gunsotsu\ ;
+円屋根 < maruyane\ ;
+峰峰 < minemine\ ;
+培養土 < baiyoudo\ ;
+寒気団 < kankidan\ ;
+容色 < youshoku\ ;
+粗利益 < ararieki\ ;
+介錯 < kaishaku\ ;
+予算外 < yosangai\ ;
+非民主 < himinshu\ ;
+嵌入 < kan''nyuu\ ;
+軒別 < kenbetsu\ ;
+側役 < sobayaku\ ;
+転借 < tenshaku\ ;
+受益者 < juekisha\ ;
+脊索 < sekisaku\ ;
+安定板 < anteiban\ ;
+記念館 < kinenkan\ ;
+一歩一歩 < ippoippo\ ;
+大宇宙 < daiuchuu\ ;
+財閥 < zaibatsu\ ;
+亜急性 < akyuusei\ ;
+木鼠 < kinezumi\ ;
+骨折 < kossetsu\ ;
+脚立 < kyatatsu\ ;
+僻事 < higagoto\ ;
+計算簿 < keisanbo\ ;
+略文 < ryakubun\ ;
+軒先 < nokisaki\ ;
+静止画 < seishiga\ ;
+不整合 < fuseigou\ ;
+二重顎 < nijuuago\ ;
+制御機 < seigyoki\ ;
+根絶 < konzetsu\ ;
+枝道 < edamichi\ ;
+二等分 < nitoubun\ ;
+宿老 < shukurou\ ;
+貸金 < kashikin\ ;
+平炉法 < heirohou\ ;
+高密 < koumitsu\ ;
+五稜堡 < goryouho\ ;
+未来像 < miraizou\ ;
+足温器 < sokuonki\ ;
+二等兵 < nitouhei\ ;
+貴族院 < kizokuin\ ;
+仏道 < butsudou\ ;
+何者 < nanimono\ ;
+良俗 < ryouzoku\ ;
+記号論 < kigouron\ ;
+住職 < juushoku\ ;
+柔術 < juujutsu\ ;
+生水 < namamizu\ ;
+名詞句 < meishiku\ ;
+胸糞 < munekuso\ ;
+客船 < kyakusen\ ;
+老骨 < roukotsu\ ;
+枕辺 < makurabe\ ;
+尤物 < yuubutsu\ ;
+伝馬船 < tenmasen\ ;
+乱髪 < ranpatsu\ ;
+銀河系 < gingakei\ ;
+体罰 < taibatsu\ ;
+人里 < hitozato\ ;
+客膳 < kyakuzen\ ;
+大宮司 < daiguuji\ ;
+肉親 < nikushin\ ;
+流行目 < hayarime\ ;
+遠視眼 < enshigan\ ;
+富籤 < tomikuji\ ;
+卵巣炎 < ransouen\ ;
+偵察 < teisatsu\ ;
+能筆 < nouhitsu\ ;
+乾風 < karakaze\ ;
+髪型 < kamigata\ ;
+未亡人 < miboujin\ ;
+引用符 < in''youfu\ ;
+良久 < ryoukyuu\ ;
+村雨 < murasame\ ;
+柔道家 < juudouka\ ;
+軒並 < nokinami\ ;
+不均衡 < fukinkou\ ;
+軒丈 < nokitake\ ;
+寒竹 < kanchiku\ ;
+月齢 < getsurei\ ;
+対話者 < taiwasha\ ;
+跳梁 < chouryou\ ;
+寒空 < samuzora\ ;
+訟務部 < shoumubu\ ;
+仰角 < gyoukaku\ ;
+御霊前 < goreizen\ ;
+兌換券 < dakanken\ ;
+不摂生 < fusessei\ ;
+楽劇 < gakugeki\ ;
+日本風 < nihonfuu\ ;
+飄飄 < hyouhyou\ ;
+木骨 < mokkotsu\ ;
+候補地 < kouhochi\ ;
+玉髄 < gyokuzui\ ;
+砂防林 < sabourin\ ;
+俗流 < zokuryuu\ ;
+下士官 < kashikan\ ;
+市議会 < shigikai\ ;
+一時期 < ichijiki\ ;
+健実 < kenjitsu\ ;
+自負心 < jifushin\ ;
+豪雪 < gousetsu\ ;
+相合傘 < aiaigasa\ ;
+聴覚 < choukaku\ ;
+謙譲語 < kenjougo\ ;
+珍重 < chinchou\ ;
+扶持米 < fuchimai\ ;
+再起動 < saikidou\ ;
+獣医学 < juuigaku\ ;
+非常用 < hijouyou\ ;
+破廉恥 < harenchi\ ;
+出放題 < dehoudai\ ;
+安定感 < anteikan\ ;
+側壁 < sokuheki\ ;
+検尿 < ken''nyou\ ;
+養老院 < yourouin\ ;
+乱雑 < ranzatsu\ ;
+属望 < shokubou\ ;
+野良猫 < noraneko\ ;
+中黒 < nakaguro\ ;
+未丁年 < miteinen\ ;
+人足 < hitoashi\ ;
+対物 < taibutsu\ ;
+安定性 < anteisei\ ;
+玉顔 < gyokugan\ ;
+颯颯 < sassatsu\ ;
+仏説 < bussetsu\ ;
+島台 < shimadai\ ;
+仇讎 < kyuushuu\ ;
+併発 < heihatsu\ ;
+駐留 < chuuryuu\ ;
+略帽 < ryakubou\ ;
+決算期 < kessanki\ ;
+朝飯 < asameshi\ ;
+自乗根 < jijoukon\ ;
+全荷重 < zenkajuu\ ;
+何程 < nanihodo\ ;
+奥御殿 < okugoten\ ;
+風食 < fuushoku\ ;
+畳屋 < tatamiya\ ;
+製造所 < seizoujo\ ;
+側圧 < sokuatsu\ ;
+贖罪 < shokuzai\ ;
+快男児 < kaidanji\ ;
+肩肘 < katahiji\ ;
+旺文社 < oubunsha\ ;
+染色 < senshoku\ ;
+超音波 < chouonpa\ ;
+守護霊 < shugorei\ ;
+無期延期 < mukienki\ ;
+木曾川 < kisogawa\ ;
+弱音器 < jakuonki\ ;
+村里 < murazato\ ;
+仙術 < senjutsu\ ;
+俗楽 < zokugaku\ ;
+首筋 < kubisuji\ ;
+佇立 < choritsu\ ;
+密着 < mitchaku\ ;
+決算日 < kessanbi\ ;
+腰板 < koshiita\ ;
+股肉 < momoniku\ ;
+脱漏 < datsurou\ ;
+自主権 < jishuken\ ;
+能弁家 < noubenka\ ;
+可能性 < kanousei\ ;
+大旦那 < oodan''na\ ;
+丸髷 < marumage\ ;
+印度教 < indokyou\ ;
+屈曲 < kukkyoku\ ;
+船人 < funabito\ ;
+骨太 < honebuto\ ;
+高卒 < kousotsu\ ;
+無人島 < mujintou\ ;
+就業 < shuugyou\ ;
+食道 < shokudou\ ;
+真似事 < manegoto\ ;
+谷風 < tanikaze\ ;
+謄写器 < toushaki\ ;
+仮葺 < karibuki\ ;
+風雪 < fuusetsu\ ;
+柔肌 < yawahada\ ;
+駐独 < chuudoku\ ;
+帰還者 < kikansha\ ;
+玉門 < gyokumon\ ;
+助産院 < josan''in\ ;
+月食 < gesshoku\ ;
+女店員 < joten''in\ ;
+栗石 < kuriishi\ ;
+小波 < sazanami\ ;
+蛸部屋 < takobeya\ ;
+予算上 < yosanjou\ ;
+定立 < teiritsu\ ;
+丸首 < marukubi\ ;
+中高 < nakadaka\ ;
+定時制 < teijisei\ ;
+官立 < kanritsu\ ;
+能率 < nouritsu\ ;
+正弦波 < seigenha\ ;
+余所事 < yosogoto\ ;
+足業 < ashiwaza\ ;
+木鐸 < bokutaku\ ;
+主食 < shushoku\ ;
+俗曲 < zokkyoku\ ;
+作病 < sakubyou\ ;
+何百 < nanbyaku\ ;
+仁術 < jinjutsu\ ;
+馬鹿者 < bakamono\ ;
+桜湯 < sakurayu\ ;
+検圧 < ken''atsu\ ;
+儀礼兵 < gireihei\ ;
+一齣 < hitokoma\ ;
+足械 < ashikase\ ;
+月面 < getsumen\ ;
+日本酒 < nihonshu\ ;
+尽日 < jinjitsu\ ;
+少欲 < shouyoku\ ;
+画引 < kakubiki\ ;
+早産児 < souzanji\ ;
+留学 < ryuugaku\ ;
+学習 < gakushuu\ ;
+跋文 < batsubun\ ;
+山彦 < yamabiko\ ;
+山形 < yamagata\ ;
+病中 < byouchuu\ ;
+採綿器 < saimenki\ ;
+偶力 < guuryoku\ ;
+英連邦 < eirenpou\ ;
+任職 < ninshoku\ ;
+脱毛 < datsumou\ ;
+早生児 < souseiji\ ;
+木鋏 < kibasami\ ;
+貧血 < hinketsu\ ;
+加盟者 < kameisha\ ;
+降雨量 < kouuryou\ ;
+耳許 < mimimoto\ ;
+傑人 < ketsujin\ ;
+対決 < taiketsu\ ;
+射殺 < shasatsu\ ;
+警備艇 < keibitei\ ;
+出来事 < dekigoto\ ;
+令色 < reishoku\ ;
+価電子 < kadenshi\ ;
+封殺 < fuusatsu\ ;
+古生界 < koseikai\ ;
+小槌 < kodzuchi\ ;
+学績 < gakuseki\ ;
+山川 < yamagawa\ ;
+高低 < takahiku\ ;
+中頃 < nakagoro\ ;
+職能 < shokunou\ ;
+屈折 < kussetsu\ ;
+実直 < jitchoku\ ;
+金魚屋 < kingyoya\ ;
+腰折 < koshiore\ ;
+木天蓼 < matatabi\ ;
+実益 < jitsueki\ ;
+半裸体 < hanratai\ ;
+定着 < teichaku\ ;
+梁木 < ryouboku\ ;
+日本軍 < nihongun\ ;
+日本車 < nihonsha\ ;
+偶偶 < tamatama\ ;
+修羅道 < shuradou\ ;
+足早 < ashibaya\ ;
+商行為 < shoukoui\ ;
+舌代 < zetsudai\ ;
+柱石 < chuuseki\ ;
+山山 < yamayama\ ;
+条里制 < jourisei\ ;
+中隔 < chuukaku\ ;
+局所 < kyokusho\ ;
+染筆 < senpitsu\ ;
+投影法 < toueihou\ ;
+信憑 < shinpyou\ ;
+桟橋 < sanbashi\ ;
+肉細 < nikuboso\ ;
+客用 < kyakuyou\ ;
+中限 < nakagiri\ ;
+有尾類 < yuubirui\ ;
+山寺 < yamadera\ ;
+欧羅巴 < youroppa\ ;
+万骨 < bankotsu\ ;
+世間体 < sekentei\ ;
+伊達巻 < datemaki\ ;
+修復 < shuufuku\ ;
+仏艦 < futsukan\ ;
+実用 < jitsuyou\ ;
+修得 < shuutoku\ ;
+胆略 < tanryaku\ ;
+水利権 < suiriken\ ;
+史学家 < shigakka\ ;
+丸鑿 < marunomi\ ;
+山守 < yamamori\ ;
+足摺 < ashizuri\ ;
+食言 < shokugen\ ;
+納付金 < noufukin\ ;
+蕎麦殻 < sobagara\ ;
+二言 < futakoto\ ;
+体熱 < tainetsu\ ;
+赤鳥赤腹 < akakokko\ ;
+方向舵 < houkouda\ ;
+仮綴 < karitoji\ ;
+夏至線 < geshisen\ ;
+不均等 < fukintou\ ;
+宇宙帽 < uchuubou\ ;
+無頼漢 < buraikan\ ;
+屈従 < kutsujuu\ ;
+実現 < jitsugen\ ;
+濃度計 < noudokei\ ;
+現職 < genshoku\ ;
+豁達 < kattatsu\ ;
+信念 < shin''nen\ ;
+顎骨 < gakkotsu\ ;
+一昨年 < ototoshi\ ;
+未経験 < mikeiken\ ;
+三食 < sanshoku\ ;
+朝寝坊 < asanebou\ ;
+了覚 < ryoukaku\ ;
+群雲 < murakumo\ ;
+月金 < getsukin\ ;
+赤沈 < sekichin\ ;
+下顎 < shitaago\ ;
+山姫 < yamahime\ ;
+脂汗 < aburaase\ ;
+腰弁 < koshiben\ ;
+宝玉 < hougyoku\ ;
+過大視 < kadaishi\ ;
+少敵 < shouteki\ ;
+翡翠色 < hisuiiro\ ;
+驍将 < gyoushou\ ;
+丘陵 < kyuuryou\ ;
+略名 < ryakumei\ ;
+土根性 < dokonjou\ ;
+略号 < ryakugou\ ;
+略史 < ryakushi\ ;
+番卒 < bansotsu\ ;
+総模様 < soumoyou\ ;
+略取 < ryakushu\ ;
+計算機 < keisanki\ ;
+弁当屋 < bentouya\ ;
+代打者 < daidasha\ ;
+実状 < jitsujou\ ;
+借地 < shakuchi\ ;
+併殺 < heisatsu\ ;
+腰帯 < koshiobi\ ;
+上靴 < uwagutsu\ ;
+膜壁 < makuheki\ ;
+風媒花 < fuubaika\ ;
+脱文 < datsubun\ ;
+存立 < sonritsu\ ;
+無試験 < mushiken\ ;
+宝物 < houmotsu\ ;
+醸造酢 < jouzousu\ ;
+俗形 < zokugyou\ ;
+反動派 < handouha\ ;
+経済家 < keizaika\ ;
+淋巴腺 < rinpasen\ ;
+人膚 < hitohada\ ;
+風足 < kazaashi\ ;
+乾裂 < kanretsu\ ;
+桎梏 < shikkoku\ ;
+一頃 < hitokoro\ ;
+自主性 < jishusei\ ;
+翌週 < yokushuu\ ;
+越天楽 < etenraku\ ;
+権利金 < kenrikin\ ;
+対日 < tainichi\ ;
+枠組 < wakugumi\ ;
+慢性化 < manseika\ ;
+翻訳 < hon''yaku\ ;
+人脈 < jinmyaku\ ;
+授乳期 < junyuuki\ ;
+専門語 < senmongo\ ;
+山城 < yamajiro\ ;
+前舞台 < maebutai\ ;
+天爾乎波 < teniwoha\ ;
+脚本 < kyakuhon\ ;
+選科生 < senkasei\ ;
+東芝 < toushiba\ ;
+赤樫 < akagashi\ ;
+脊椎 < sekitsui\ ;
+実際家 < jissaika\ ;
+柴犬 < shibainu\ ;
+修学 < shuugaku\ ;
+俊徳 < shuntoku\ ;
+一昼夜 < itchuuya\ ;
+月輪 < getsurin\ ;
+仲秋 < chuushuu\ ;
+主述 < shujutsu\ ;
+衆議院 < shuugiin\ ;
+人肉 < jin''niku\ ;
+媒酌 < baishaku\ ;
+日本製 < nihonsei\ ;
+例月 < reigetsu\ ;
+生娘 < kimusume\ ;
+印判師 < inbanshi\ ;
+代筆 < daihitsu\ ;
+密殺 < missatsu\ ;
+暴食 < boushoku\ ;
+山国 < yamaguni\ ;
+職種 < shokushu\ ;
+一際 < hitokiwa\ ;
+小火器 < shoukaki\ ;
+無風帯 < mufuutai\ ;
+一隅 < hitosumi\ ;
+就床 < shuushou\ ;
+丈長 < takenaga\ ;
+頭髪 < touhatsu\ ;
+猥雑 < waizatsu\ ;
+足形 < ashigata\ ;
+走査線 < sousasen\ ;
+安物 < yasumono\ ;
+空手家 < karateka\ ;
+天井値 < tenjoune\ ;
+寒極 < kankyoku\ ;
+足弱 < ashiyowa\ ;
+計算木 < keisangi\ ;
+候哉 < sourouya\ ;
+例日 < reijitsu\ ;
+中速 < chuusoku\ ;
+採炭所 < saitanjo\ ;
+弁務官 < benmukan\ ;
+受益権 < juekiken\ ;
+生壁 < namakabe\ ;
+加工紙 < kakoushi\ ;
+肉的 < nikuteki\ ;
+胸椎 < kyoutsui\ ;
+教務課 < kyoumuka\ ;
+桂月 < keigetsu\ ;
+室温 < shitsuon\ ;
+連動機 < rendouki\ ;
+仙窟 < senkutsu\ ;
+寧日 < neijitsu\ ;
+議事録 < gijiroku\ ;
+再来年 < sarainen\ ;
+一昨夜 < issakuya\ ;
+番付 < bandzuke\ ;
+宇宙塵 < uchuujin\ ;
+水道屋 < suidouya\ ;
+赤松 < akamatsu\ ;
+略体 < ryakutai\ ;
+梅干 < umeboshi\ ;
+腹壁 < fukuheki\ ;
+中軸 < chuujiku\ ;
+略伝 < ryakuden\ ;
+腸壁 < chouheki\ ;
+象虫 < zoumushi\ ;
+林立 < rinritsu\ ;
+重軌条 < juukijou\ ;
+質疑 < shitsugi\ ;
+山吹 < yamabuki\ ;
+踏切 < fumikiri\ ;
+違約金 < iyakukin\ ;
+杏茸 < anzutake\ ;
+生国 < shoukoku\ ;
+鸚鵡病 < oumubyou\ ;
+束脩 < sokushuu\ ;
+単性花 < tanseika\ ;
+宿業 < shukugou\ ;
+注意点 < chuuiten\ ;
+常備金 < joubikin\ ;
+申告 < shinkoku\ ;
+寒月 < kangetsu\ ;
+有識 < yuushiki\ ;
+転移性 < ten''isei\ ;
+餅網 < mochiami\ ;
+何様 < nanisama\ ;
+翁貝 < okinagai\ ;
+活火山 < kakkazan\ ;
+富札 < tomifuda\ ;
+局外 < kyokugai\ ;
+食膳 < shokuzen\ ;
+杉苔 < sugigoke\ ;
+密林 < mitsurin\ ;
+倉卒 < sousotsu\ ;
+客殿 < kyakuden\ ;
+並足 < namiashi\ ;
+加工税 < kakouzei\ ;
+畑作 < hatasaku\ ;
+瓦屋 < kawaraya\ ;
+客死 < kyakushi\ ;
+男前 < otokomae\ ;
+局報 < kyokuhou\ ;
+顰蹙 < hinshuku\ ;
+美粧院 < bishouin\ ;
+宮様 < miyasama\ ;
+作柄 < sakugara\ ;
+献酌 < kenshaku\ ;
+茶箪笥 < chadansu\ ;
+食育 < shokuiku\ ;
+噴火山 < funkazan\ ;
+地方時 < chihouji\ ;
+両足 < ryousoku\ ;
+悪餓鬼 < warugaki\ ;
+博愛家 < hakuaika\ ;
+二股 < futamata\ ;
+上達 < joutatsu\ ;
+情報部 < jouhoubu\ ;
+膝元 < hizamoto\ ;
+宿望 < shukubou\ ;
+日本茶 < nihoncha\ ;
+脱帽 < datsubou\ ;
+申出 < moushide\ ;
+柄物 < garamono\ ;
+上述 < joujutsu\ ;
+作曲 < sakkyoku\ ;
+耳糞 < mimikuso\ ;
+老若 < rounyaku\ ;
+光行差 < koukousa\ ;
+外耳道 < gaijidou\ ;
+肉牛 < nikugyuu\ ;
+山元 < yamamoto\ ;
+地震波 < jishinha\ ;
+三塁打 < sanruida\ ;
+束縛 < sokubaku\ ;
+勾引状 < kouinjou\ ;
+地雷源 < jiraigen\ ;
+電機子 < denkishi\ ;
+末葉 < matsuyou\ ;
+常備軍 < joubigun\ ;
+何月 < nangatsu\ ;
+豚草 < butakusa\ ;
+少少 < shoushou\ ;
+小型化 < kogataka\ ;
+刷毛先 < hakesaki\ ;
+暗闇 < kurayami\ ;
+玉葱 < tamanegi\ ;
+青内障 < aosokohi\ ;
+評議員 < hyougiin\ ;
+乳臭 < nyuushuu\ ;
+甘口 < amakuchi\ ;
+公分母 < koubunbo\ ;
+木菟 < mimizuku\ ;
+可聴度 < kachoudo\ ;
+無条件 < mujouken\ ;
+矢飛白 < yagasuri\ ;
+手腕家 < shuwanka\ ;
+産別 < sanbetsu\ ;
+検事正 < kenjisei\ ;
+便壺 < bentsubo\ ;
+一輛 < ichiryou\ ;
+賜物 < tamamono\ ;
+偽善者 < gizensha\ ;
+伝導度 < dendoudo\ ;
+公募債 < koubosai\ ;
+首枷 < kubikase\ ;
+子爵 < shishaku\ ;
+例式 < reishiki\ ;
+現生 < gen''nama\ ;
+木苺 < kiichigo\ ;
+機関銃 < kikanjuu\ ;
+犬鷲 < inuwashi\ ;
+本色 < honshoku\ ;
+乱脈 < ranmyaku\ ;
+密接 < missetsu\ ;
+一躍 < ichiyaku\ ;
+山人 < yamabito\ ;
+脇息 < kyousoku\ ;
+羽衣 < hagoromo\ ;
+服薬 < fukuyaku\ ;
+武勇伝 < buyuuden\ ;
+梵刹 < bonsetsu\ ;
+伏流 < fukuryuu\ ;
+制御下 < seigyoka\ ;
+対局 < taikyoku\ ;
+蓮華草 < rengesou\ ;
+報知機 < houchiki\ ;
+猫足 < nekoashi\ ;
+小娘 < komusume\ ;
+代物 < daibutsu\ ;
+姫鱒 < himemasu\ ;
+本腰 < hongoshi\ ;
+腹切 < harakiri\ ;
+晩飯 < banmeshi\ ;
+翼翼 < yokuyoku\ ;
+生傷 < namakizu\ ;
+豚肉 < butaniku\ ;
+夏至点 < geshiten\ ;
+頭金 < atamakin\ ;
+武芸者 < bugeisha\ ;
+美質 < bishitsu\ ;
+走馬灯 < soumatou\ ;
+届出 < todokede\ ;
+赤心 < sekishin\ ;
+状骨 < joukotsu\ ;
+翠色 < suishoku\ ;
+両袖 < ryousode\ ;
+丸薬 < gan''yaku\ ;
+宿所 < shukusho\ ;
+果物 < kudamono\ ;
+二重税 < nijuuzei\ ;
+現物 < genbutsu\ ;
+下請 < shitauke\ ;
+木耳 < kikurage\ ;
+尽力 < jinryoku\ ;
+正比例 < seihirei\ ;
+預金者 < yokinsha\ ;
+人畜 < jinchiku\ ;
+加速度 < kasokudo\ ;
+正当化 < seitouka\ ;
+手不足 < tebusoku\ ;
+側火山 < sokkazan\ ;
+過不及 < kafukyuu\ ;
+殺鼠剤 < sassozai\ ;
+記念祭 < kinensai\ ;
+係員 < kakariin\ ;
+不手際 < futegiwa\ ;
+不等辺 < futouhen\ ;
+被害地 < higaichi\ ;
+日本紙 < nihonshi\ ;
+一諾 < ichidaku\ ;
+潜水夫 < sensuifu\ ;
+御陀仏 < odabutsu\ ;
+学歴 < gakureki\ ;
+宿悪 < shukuaku\ ;
+胸座 < munagura\ ;
+一読 < ichidoku\ ;
+寥寥 < ryouryou\ ;
+来着 < raichaku\ ;
+休業 < kyuugyou\ ;
+夜学校 < yagakkou\ ;
+再上映 < saijouei\ ;
+修了 < shuuryou\ ;
+胸幅 < munehaba\ ;
+外来語 < gairaigo\ ;
+難破船 < nanpasen\ ;
+一言 < hitokoto\ ;
+宿志 < shukushi\ ;
+駒下駄 < komageta\ ;
+腕力 < wanryoku\ ;
+腹中 < fukuchuu\ ;
+一角 < hitokado\ ;
+肉欲 < nikuyoku\ ;
+注意書 < chuuisho\ ;
+珠玉 < shugyoku\ ;
+什物 < juumotsu\ ;
+五重奏 < gojuusou\ ;
+肩書 < katagaki\ ;
+漫談家 < mandanka\ ;
+倍精度 < baiseido\ ;
+納付者 < noufusha\ ;
+宿弊 < shukuhei\ ;
+噴火口 < funkakou\ ;
+介護人 < kaigonin\ ;
+乱筆 < ranpitsu\ ;
+人物 < jinbutsu\ ;
+俗信 < zokushin\ ;
+献血 < kenketsu\ ;
+格安 < kakuyasu\ ;
+両蓋 < ryoubuta\ ;
+学業 < gakugyou\ ;
+人爵 < jinshaku\ ;
+猥褻 < waisetsu\ ;
+道議会 < dougikai\ ;
+有機体 < yuukitai\ ;
+豚箱 < butabako\ ;
+仮殿 < karidono\ ;
+飛石 < tobiishi\ ;
+乱立 < ranritsu\ ;
+死産児 < shizanji\ ;
+宿帳 < yadochou\ ;
+寒寒 < samuzamu\ ;
+朱筆 < shuhitsu\ ;
+不規則 < fukisoku\ ;
+主脈 < shumyaku\ ;
+潜水器 < sensuiki\ ;
+付添 < tsukisoi\ ;
+本節 < honbushi\ ;
+曲芸 < kyokugei\ ;
+末節 < massetsu\ ;
+足元 < ashimoto\ ;
+財物 < zaibutsu\ ;
+小名 < shoumyou\ ;
+整備工 < seibikou\ ;
+乗組 < norikumi\ ;
+寝姿 < nesugata\ ;
+曳船 < hikibune\ ;
+末筆 < mappitsu\ ;
+荒武者 < aramusha\ ;
+遠地点 < enchiten\ ;
+昼頃 < hirugoro\ ;
+独身 < dokushin\ ;
+琴曲 < kinkyoku\ ;
+京物 < kyoumono\ ;
+某月 < bougetsu\ ;
+外字紙 < gaijishi\ ;
+今時分 < imajibun\ ;
+豆粕 < mamekasu\ ;
+中腹 < chuufuku\ ;
+反動家 < handouka\ ;
+順逆 < jungyaku\ ;
+大晦日 < oomisoka\ ;
+杉皮 < sugikawa\ ;
+将又 < hatamata\ ;
+不精巧 < fuseikou\ ;
+大丈夫 < daijoubu\ ;
+脱却 < dakkyaku\ ;
+寂寞 < sekibaku\ ;
+食用 < shokuyou\ ;
+某日 < boujitsu\ ;
+保全会 < hozenkai\ ;
+同素体 < dousotai\ ;
+晩酌 < banshaku\ ;
+中肉 < chuuniku\ ;
+依怙贔屓 < ekohiiki\ ;
+貞烈 < teiretsu\ ;
+再交付 < saikoufu\ ;
+飲物 < nomimono\ ;
+両膚 < ryouhada\ ;
+実弾 < jitsudan\ ;
+下萠 < shitamoe\ ;
+天日法 < tenpihou\ ;
+曲者 < kusemono\ ;
+守護神 < shugojin\ ;
+桃園 < momozono\ ;
+組合費 < kumiaihi\ ;
+首巻 < kubimaki\ ;
+仏気 < hotokegi\ ;
+春風 < harukaze\ ;
+荒蕪地 < koubuchi\ ;
+並肉 < naminiku\ ;
+愛媛県 < ehimeken\ ;
+未青年 < miseinen\ ;
+客年 < kyakunen\ ;
+越南 < betonamu\ ;
+両脇 < ryouwaki\ ;
+風窓 < kazamado\ ;
+人事欄 < jinjiran\ ;
+風穴 < fuuketsu\ ;
+仏殿 < butsuden\ ;
+胸壁 < kyouheki\ ;
+長音符 < chouonpu\ ;
+定式 < teishiki\ ;
+不均斉 < fukinsei\ ;
+両肘 < ryouhiji\ ;
+準備金 < junbikin\ ;
+嫡男 < chakunan\ ;
+乳白 < nyuuhaku\ ;
+淋巴液 < rinpaeki\ ;
+事務長 < jimuchou\ ;
+修理屋 < shuuriya\ ;
+低密 < teimitsu\ ;
+両耳 < ryoumimi\ ;
+懐疑論 < kaigiron\ ;
+喉頭炎 < koutouen\ ;
+暴虐 < bougyaku\ ;
+肘掛 < hijikake\ ;
+疎外感 < sogaikan\ ;
+両翼 < ryouyoku\ ;
+密売 < mitsubai\ ;
+木石 < bokuseki\ ;
+玉砕 < gyokusai\ ;
+七草 < nanakusa\ ;
+加速器 < kasokuki\ ;
+宮守 < miyamori\ ;
+玉石 < tamaishi\ ;
+庭下駄 < niwageta\ ;
+仲春 < chuushun\ ;
+桑原 < kuwabara\ ;
+識閾 < shikiiki\ ;
+人波 < hitonami\ ;
+春雨 < harusame\ ;
+翳目 < kasumime\ ;
+猿股 < sarumata\ ;
+休戚 < kyuuseki\ ;
+非常勤 < hijoukin\ ;
+野球部 < yakyuubu\ ;
+客層 < kyakusou\ ;
+前駆戦 < zenkusen\ ;
+春陽 < shun''you\ ;
+貞淑 < teishuku\ ;
+守役 < moriyaku\ ;
+主節 < shusetsu\ ;
+指導部 < shidoubu\ ;
+財産家 < zaisanka\ ;
+一花 < hitohana\ ;
+顔色 < ganshoku\ ;
+中細 < chuuboso\ ;
+中級 < chuukyuu\ ;
+居催促 < izaisoku\ ;
+率直 < sotchoku\ ;
+猫舌 < nekojita\ ;
+三脚 < sankyaku\ ;
+智識 < chishiki\ ;
+当歳馬 < tousaiba\ ;
+下肥 < shimogoe\ ;
+実害 < jitsugai\ ;
+小一 < shouichi\ ;
+貪欲 < don''yoku\ ;
+仁王力 < niouriki\ ;
+人欲 < jin''yoku\ ;
+多肉果 < tanikuka\ ;
+最盛期 < saiseiki\ ;
+実存 < jitsuzon\ ;
+反比例 < hanpirei\ ;
+領袖 < ryoushuu\ ;
+旱魃 < kanbatsu\ ;
+特集 < tokushuu\ ;
+末男 < batsunan\ ;
+音質 < onshitsu\ ;
+寸借 < sunshaku\ ;
+女子高 < joshikou\ ;
+開回路 < kaikairo\ ;
+超俗 < chouzoku\ ;
+曲管 < kyokukan\ ;
+審査員 < shinsain\ ;
+脈動 < myakudou\ ;
+肩幅 < katahaba\ ;
+事務機器 < jimukiki\ ;
+案出 < anshutsu\ ;
+麝香水 < jakousui\ ;
+日本犬 < nihonken\ ;
+事務量 < jimuryou\ ;
+股引 < momohiki\ ;
+丸禿 < maruhage\ ;
+引用句 < in''youku\ ;
+供人 < tomobito\ ;
+科学院 < kagakuin\ ;
+人様 < hitosama\ ;
+乳牛 < nyuugyuu\ ;
+専一 < sen''itsu\ ;
+前頭部 < zentoubu\ ;
+十四日 < juuyokka\ ;
+枕木 < makuragi\ ;
+股座 < matagura\ ;
+特長 < tokuchou\ ;
+狸藻 < tanukimo\ ;
+缶詰 < kandzume\ ;
+一翼 < ichiyoku\ ;
+実妹 < jitsumai\ ;
+中空 < nakazora\ ;
+飲水 < nomimizu\ ;
+中程 < nakahodo\ ;
+今月 < kongetsu\ ;
+貸本 < kashihon\ ;
+並立 < heiritsu\ ;
+安宿 < yasuyado\ ;
+自己暗示 < jikoanji\ ;
+能力 < nouryoku\ ;
+連歌師 < rengashi\ ;
+物陰 < monokage\ ;
+安安 < yasuyasu\ ;
+学徳 < gakutoku\ ;
+支援者 < shiensha\ ;
+習癖 < shuuheki\ ;
+梶木座 < kajikiza\ ;
+丸石 < maruishi\ ;
+地方区 < chihouku\ ;
+万緑 < banryoku\ ;
+宿命 < shukumei\ ;
+山火事 < yamakaji\ ;
+才未満 < saimiman\ ;
+仏文 < futsubun\ ;
+牛革 < gyuukawa\ ;
+聖日 < seijitsu\ ;
+人柄 < hitogara\ ;
+享楽 < kyouraku\ ;
+松柏 < shouhaku\ ;
+群竹 < muratake\ ;
+警蹕 < keihitsu\ ;
+乳濁 < nyuudaku\ ;
+翠玉 < suigyoku\ ;
+人類猿 < jinruien\ ;
+日食 < nisshoku\ ;
+仇敵 < kyuuteki\ ;
+靺鞨 < makkatsu\ ;
+姿見 < sugatami\ ;
+議定書 < giteisho\ ;
+実在 < jitsuzai\ ;
+月番 < tsukiban\ ;
+環七 < kan''nana\ ;
+胸先 < munasaki\ ;
+胸元 < munamoto\ ;
+一組 < hitokumi\ ;
+茶坊主 < chabouzu\ ;
+猫糞 < nekobaba\ ;
+加盟店 < kameiten\ ;
+靴音 < kutsuoto\ ;
+乗物 < norimono\ ;
+風物 < fuubutsu\ ;
+作劇 < sakugeki\ ;
+暖色 < danshoku\ ;
+何卒 < nanitozo\ ;
+緩下剤 < kangezai\ ;
+率然 < sotsuzen\ ;
+萌黄色 < moegiiro\ ;
+空気銃 < kuukijuu\ ;
+休学 < kyuugaku\ ;
+鹹水湖 < kansuiko\ ;
+三筆 < sanpitsu\ ;
+住友 < sumitomo\ ;
+海老腰 < ebigoshi\ ;
+松明 < taimatsu\ ;
+仮役 < kariyaku\ ;
+生計費 < seikeihi\ ;
+中皿 < chuuzara\ ;
+人数 < hitokazu\ ;
+婚約 < kon''yaku\ ;
+下穴 < shitaana\ ;
+宿六 < yadoroku\ ;
+参加者 < sankasha\ ;
+日本海 < nihonkai\ ;
+耳朶 < mimitabu\ ;
+書留 < kakitome\ ;
+一筋 < hitosuji\ ;
+学寮 < gakuryou\ ;
+一筆 < hitofude\ ;
+被乗数 < hijousuu\ ;
+片隅 < katasumi\ ;
+豁然 < katsuzen\ ;
+手風琴 < tefuukin\ ;
+片陰 < katakage\ ;
+亥月 < gaigetsu\ ;
+注意報 < chuuihou\ ;
+風景画 < fuukeiga\ ;
+質屋 < shichiya\ ;
+猪突 < chototsu\ ;
+京方 < kyougata\ ;
+電子音 < denshion\ ;
+牛鍋 < gyuunabe\ ;
+実名 < jitsumei\ ;
+転化糖 < tenkatou\ ;
+来月 < raigetsu\ ;
+胸中 < kyouchuu\ ;
+一種 < hitokusa\ ;
+閉経期 < heikeiki\ ;
+明達 < meitatsu\ ;
+宿便 < shukuben\ ;
+密令 < mitsurei\ ;
+一秒 < ichibyou\ ;
+互助的 < gojoteki\ ;
+乾所帯 < kanjotai\ ;
+大音声 < daionjou\ ;
+破産者 < hasansha\ ;
+閉回路 < heikairo\ ;
+主物 < shubutsu\ ;
+群発 < gunpatsu\ ;
+曲球 < kyokkyuu\ ;
+早鐘 < hayagane\ ;
+胡麻擂 < gomasuri\ ;
+機雷原 < kiraigen\ ;
+二桁 < futaketa\ ;
+来日 < rainichi\ ;
+爪音 < tsumaoto\ ;
+断髪 < danpatsu\ ;
+曲玉 < magatama\ ;
+多孔性 < takousei\ ;
+合成音 < gouseion\ ;
+破魔弓 < hamayumi\ ;
+客分 < kyakubun\ ;
+何何 < naninani\ ;
+造影剤 < zoueizai\ ;
+胆力 < tanryoku\ ;
+事柄 < kotogara\ ;
+仮宮 < karimiya\ ;
+書物 < shomotsu\ ;
+牛酪 < gyuuraku\ ;
+倦怠期 < kentaiki\ ;
+独習 < dokushuu\ ;
+仮宅 < karitaku\ ;
+子宝 < kodakara\ ;
+韮葱 < niranegi\ ;
+未納者 < minousha\ ;
+二重星 < nijuusei\ ;
+佗人 < wabibito\ ;
+仏式 < busshiki\ ;
+三直 < sanchoku\ ;
+何事 < nanigoto\ ;
+肉太 < nikubuto\ ;
+繁体字 < hantaiji\ ;
+三百 < sanbyaku\ ;
+特賞 < tokushou\ ;
+消音器 < shouonki\ ;
+顔着 < ganchaku\ ;
+多人数 < taninzuu\ ;
+赴任地 < funinchi\ ;
+古生代 < koseidai\ ;
+乳業 < nyuugyou\ ;
+日銀 < nichigin\ ;
+枕席 < chinseki\ ;
+賓客 < hinkyaku\ ;
+芝居気 < shibaige\ ;
+実像 < jitsuzou\ ;
+実働 < jitsudou\ ;
+横座標 < ouzahyou\ ;
+自警団 < jikeidan\ ;
+暫定案 < zanteian\ ;
+魚市場 < uoichiba\ ;
+宮人 < miyabito\ ;
+旧里 < furusato\ ;
+一皿 < hitosara\ ;
+一皮 < hitokawa\ ;
+二方 < futakata\ ;
+駅馬車 < ekibasha\ ;
+上略 < jouryaku\ ;
+貫徹 < kantetsu\ ;
+対話体 < taiwatai\ ;
+枢密 < suumitsu\ ;
+一癖 < hitokuse\ ;
+宮中 < kyuuchuu\ ;
+豆殻 < mamegara\ ;
+現尺 < genshaku\ ;
+人影 < hitokage\ ;
+客体 < kyakutai\ ;
+清掃夫 < seisoufu\ ;
+実例 < jitsurei\ ;
+高感度 < koukando\ ;
+木槌 < kidzuchi\ ;
+紀元前 < kigenzen\ ;
+磨研紙 < makenshi\ ;
+現実 < genjitsu\ ;
+客人 < kyakujin\ ;
+既婚者 < kikonsha\ ;
+霹靂 < hekireki\ ;
+搬送波 < hansouha\ ;
+譲葉 < yuzuriha\ ;
+疎開者 < sokaisha\ ;
+思想家 < shisouka\ ;
+谷水 < tanimizu\ ;
+豪日 < gounichi\ ;
+服毒 < fukudoku\ ;
+岩田帯 < iwataobi\ ;
+職域 < shokuiki\ ;
+暴発 < bouhatsu\ ;
+開閉機 < kaiheiki\ ;
+序破急 < johakyuu\ ;
+足忠実 < ashimame\ ;
+食指 < shokushi\ ;
+半減期 < hangenki\ ;
+日輪 < nichirin\ ;
+自然美 < shizenbi\ ;
+肩先 < katasaki\ ;
+外鰐 < sotowani\ ;
+頻発 < hinpatsu\ ;
+前世紀 < zenseiki\ ;
+本末 < honmatsu\ ;
+研磨紙 < kenmashi\ ;
+万物 < banmotsu\ ;
+玉杯 < gyokuhai\ ;
+献物 < kenmotsu\ ;
+人山 < hitoyama\ ;
+青写真 < aojashin\ ;
+早足 < hayaashi\ ;
+祈祷書 < kitousho\ ;
+霧雨 < kirisame\ ;
+帰還兵 < kikanhei\ ;
+閉経後 < heikeigo\ ;
+賢哲 < kentetsu\ ;
+片足 < kataashi\ ;
+一片 < hitohira\ ;
+多方面 < tahoumen\ ;
+燕尾服 < enbifuku\ ;
+禀議書 < ringisho\ ;
+本日 < honjitsu\ ;
+乾拭 < karabuki\ ;
+父兄会 < fukeikai\ ;
+高麗楽 < komagaku\ ;
+食感 < shokukan\ ;
+整髪 < seihatsu\ ;
+仏壇 < butsudan\ ;
+予想外 < yosougai\ ;
+扁桃油 < hentouyu\ ;
+学割 < gakuwari\ ;
+整骨 < seikotsu\ ;
+贋作 < nisesaku\ ;
+学則 < gakusoku\ ;
+曲水 < kyokusui\ ;
+青年期 < seinenki\ ;
+風月 < fuugetsu\ ;
+霜雪 < sousetsu\ ;
+均等化 < kintouka\ ;
+乱掘 < rankutsu\ ;
+受験者 < jukensha\ ;
+時代相 < jidaisou\ ;
+九日 < kokonoka\ ;
+日豪 < nichigou\ ;
+増加分 < zoukabun\ ;
+二連銃 < nirenjuu\ ;
+九族 < kyuuzoku\ ;
+読響 < yomikyou\ ;
+牛角 < gyuukaku\ ;
+大雪 < taisetsu\ ;
+外食 < gaishoku\ ;
+一回転 < ikkaiten\ ;
+夕飯 < yuumeshi\ ;
+職名 < shokumei\ ;
+晩節 < bansetsu\ ;
+二役 < futayaku\ ;
+主脳部 < shunoubu\ ;
+二形 < futanari\ ;
+春菊 < shungiku\ ;
+学僕 < gakuboku\ ;
+納付書 < noufusho\ ;
+豆料 < mameryou\ ;
+朝敵 < chouteki\ ;
+単弁花 < tanbenka\ ;
+流浪者 < rurousha\ ;
+散髪 < sanpatsu\ ;
+菓子盆 < kashibon\ ;
+謎謎 < nazonazo\ ;
+公用語 < kouyougo\ ;
+妄説 < mousetsu\ ;
+頓着 < tonchaku\ ;
+仏噸 < futsuton\ ;
+妖術 < youjutsu\ ;
+雛鳥 < hinadori\ ;
+電飾 < denshoku\ ;
+太陽炉 < taiyouro\ ;
+旧訳 < kyuuyaku\ ;
+月末 < tsukizue\ ;
+独白 < dokuhaku\ ;
+猛烈 < mouretsu\ ;
+受身形 < ukemikei\ ;
+民営化 < min''eika\ ;
+人望家 < jinbouka\ ;
+爪跡 < tsumeato\ ;
+仮初 < karisome\ ;
+来客 < raikyaku\ ;
+月曜 < getsuyou\ ;
+翌朝 < yokuchou\ ;
+総二階 < sounikai\ ;
+繁雑 < hanzatsu\ ;
+解雇者 < kaikosha\ ;
+漢時代 < kanjidai\ ;
+内外野 < naigaiya\ ;
+片仮名 < katakana\ ;
+脱衣所 < datsuijo\ ;
+職分 < shokubun\ ;
+乾式 < kanshiki\ ;
+面識 < menshiki\ ;
+人垣 < hitogaki\ ;
+贈与者 < zouyosha\ ;
+失錯 < shissaku\ ;
+久方 < hisakata\ ;
+月明 < getsumei\ ;
+声高 < kowadaka\ ;
+論述 < ronjutsu\ ;
+翌春 < yokushun\ ;
+保守系 < hoshukei\ ;
+諾諾 < dakudaku\ ;
+識者 < shikisha\ ;
+仕口 < shikuchi\ ;
+海馬回 < kaibakai\ ;
+自堕落 < jidaraku\ ;
+珍妙 < chinmyou\ ;
+貝塚 < kaidzuka\ ;
+本塁打 < honruida\ ;
+聖哲 < seitetsu\ ;
+愛餐会 < aisankai\ ;
+対抗馬 < taikouba\ ;
+面詰 < menkitsu\ ;
+縞馬 < shimauma\ ;
+仮名文 < kanabumi\ ;
+食尽 < shokujin\ ;
+賭事 < kakegoto\ ;
+一流 < ichiryuu\ ;
+中柄 < chuugara\ ;
+書札 < shosatsu\ ;
+妙薬 < myouyaku\ ;
+主日 < shujitsu\ ;
+諸諸 < moromoro\ ;
+胡麻塩 < gomashio\ ;
+加工品 < kakouhin\ ;
+権利書 < kenrisho\ ;
+諸説 < shosetsu\ ;
+廃要素 < haiyouso\ ;
+女親 < on''naoya\ ;
+更更 < sarasara\ ;
+杓子 < shakushi\ ;
+空想家 < kuusouka\ ;
+曲曲 < kumaguma\ ;
+明色 < meishoku\ ;
+販売部 < hanbaibu\ ;
+眼鏡屋 < meganeya\ ;
+他出 < tashutsu\ ;
+前世界 < zensekai\ ;
+本場所 < honbasho\ ;
+雨靴 < amagutsu\ ;
+虚無党 < kyomutou\ ;
+人類愛 < jinruiai\ ;
+二重奏 < nijuusou\ ;
+愛好者 < aikousha\ ;
+合成語 < gouseigo\ ;
+本式 < honshiki\ ;
+仏前 < butsuzen\ ;
+雪雲 < yukigumo\ ;
+雨霰 < amearare\ ;
+木彫 < mokuchou\ ;
+暑熱 < shonetsu\ ;
+石火矢 < ishibiya\ ;
+物色 < busshoku\ ;
+職人 < shokunin\ ;
+出納簿 < suitoubo\ ;
+諧謔 < kaigyaku\ ;
+独特 < dokutoku\ ;
+失速 < shissoku\ ;
+春繭 < harumayu\ ;
+熱願 < netsugan\ ;
+軍管区 < gunkanku\ ;
+末年 < matsunen\ ;
+嫡孫 < chakuson\ ;
+物臭 < monogusa\ ;
+嫡子 < chakushi\ ;
+諤諤 < gakugaku\ ;
+狡猾 < koukatsu\ ;
+雑食 < zasshoku\ ;
+主持 < shumochi\ ;
+嬰児 < midorigo\ ;
+秋田県 < akitaken\ ;
+縦長 < tatenaga\ ;
+儒学界 < jugakkai\ ;
+下手糞 < hetakuso\ ;
+争奪 < soudatsu\ ;
+仏像 < butsuzou\ ;
+未墾地 < mikonchi\ ;
+大多数 < daitasuu\ ;
+子午線 < shigosen\ ;
+老実 < roujitsu\ ;
+大逆 < daigyaku\ ;
+日蓮 < nichiren\ ;
+正常化 < seijouka\ ;
+発酵素 < hakkouso\ ;
+距離計 < kyorikei\ ;
+熱雷 < netsurai\ ;
+船小屋 < funagoya\ ;
+醸造所 < jouzoujo\ ;
+試食 < shishoku\ ;
+敷金 < shikikin\ ;
+嫡妻 < chakusai\ ;
+一棟 < hitomune\ ;
+大納言 < dainagon\ ;
+天文家 < tenmonka\ ;
+模造者 < mozousha\ ;
+失跡 < shisseki\ ;
+寝不足 < nebusoku\ ;
+人刺 < jinsashi\ ;
+電鉄 < dentetsu\ ;
+人別 < ninbetsu\ ;
+専門家 < senmonka\ ;
+論説 < ronsetsu\ ;
+未然形 < mizenkei\ ;
+本局 < honkyoku\ ;
+剪裁機 < sensaiki\ ;
+中指 < nakayubi\ ;
+購買部 < koubaibu\ ;
+貸借 < taishaku\ ;
+獲得 < kakutoku\ ;
+論詰 < ronkitsu\ ;
+慈善会 < jizenkai\ ;
+悪趣味 < akushumi\ ;
+一桁 < hitoketa\ ;
+施術 < shijutsu\ ;
+顛末 < tenmatsu\ ;
+贈与税 < zouyozei\ ;
+財力 < zairyoku\ ;
+語部 < kataribe\ ;
+保存系 < hozonkei\ ;
+三曲 < sankyoku\ ;
+気動車 < kidousha\ ;
+永住者 < eijuusha\ ;
+景物 < keibutsu\ ;
+方術 < houjutsu\ ;
+特約 < tokuyaku\ ;
+繰言 < kurigoto\ ;
+牛肉 < gyuuniku\ ;
+杉垣 < sugigaki\ ;
+王室 < oushitsu\ ;
+一束 < hitotaba\ ;
+牡羊 < ohitsuji\ ;
+谷底 < tanizoko\ ;
+未熟児 < mijukuji\ ;
+一木 < ichiboku\ ;
+人傑 < jinketsu\ ;
+記念品 < kinenhin\ ;
+破瓜病 < hakabyou\ ;
+昨秋 < sakushuu\ ;
+谷川 < tanigawa\ ;
+仄仄 < honobono\ ;
+破産法 < hasanhou\ ;
+停電日 < teidenbi\ ;
+買主 < kainushi\ ;
+受験生 < jukensei\ ;
+陸蒸気 < okajouki\ ;
+一時 < hitotoki\ ;
+昇給 < shoukyuu\ ;
+実行時 < jikkouji\ ;
+片膝 < katahiza\ ;
+飲助 < nomisuke\ ;
+曲悪 < kyokuaku\ ;
+模造紙 < mozoushi\ ;
+二原子 < nigenshi\ ;
+一旗 < hitohata\ ;
+一族 < ichizoku\ ;
+食品 < shokuhin\ ;
+物納 < butsunou\ ;
+失調 < shitchou\ ;
+煮魚 < nizakana\ ;
+失語 < shitsugo\ ;
+万国旗 < bankokki\ ;
+早耳 < hayamimi\ ;
+丸底 < maruzoko\ ;
+事務的 < jimuteki\ ;
+人人 < hitobito\ ;
+散逸 < san''itsu\ ;
+片肌 < katahada\ ;
+書式 < shoshiki\ ;
+人事 < hitogoto\ ;
+総髪 < souhatsu\ ;
+服属 < fukuzoku\ ;
+特種 < tokudane\ ;
+中形 < chuugata\ ;
+人中 < hitonaka\ ;
+推移的 < suiiteki\ ;
+一撃 < ichigeki\ ;
+空気穴 < kuukiana\ ;
+受容者 < juyousha\ ;
+糠味噌 < nukamiso\ ;
+方形波 < houkeiha\ ;
+戦前派 < senzenha\ ;
+処理場 < shorijou\ ;
+二弦琴 < nigenkin\ ;
+中庭 < nakaniwa\ ;
+始発 < shihatsu\ ;
+謝絶 < shazetsu\ ;
+乾咳 < karazeki\ ;
+酒造家 < shuzouka\ ;
+中幕 < nakamaku\ ;
+中幅 < chuuhaba\ ;
+掲示板 < keijiban\ ;
+内風呂 < uchiburo\ ;
+諸膝 < morohiza\ ;
+諸膚 < morohada\ ;
+中席 < nakaseki\ ;
+朝夕 < chouseki\ ;
+牧笛 < bokuteki\ ;
+両得 < ryoutoku\ ;
+縦軸 < tatejiku\ ;
+中労委 < chuuroui\ ;
+姦物 < kanbutsu\ ;
+食刻 < shokkoku\ ;
+玉垣 < tamagaki\ ;
+愛猫家 < aibyouka\ ;
+三回忌 < sankaiki\ ;
+総仕舞 < soujimai\ ;
+雲足 < kumoashi\ ;
+緑風 < ryokufuu\ ;
+物種 < monodane\ ;
+並幅 < namihaba\ ;
+妙策 < myousaku\ ;
+静脈 < joumyaku\ ;
+物税 < butsuzei\ ;
+主客 < shukyaku\ ;
+醸造家 < jouzouka\ ;
+交交 < komogomo\ ;
+爆薬 < bakuyaku\ ;
+中島 < nakajima\ ;
+交付金 < koufukin\ ;
+事共 < kotodomo\ ;
+扇風機 < senpuuki\ ;
+不悉 < fushitsu\ ;
+全候補 < zenkouho\ ;
+理想論 < risouron\ ;
+牧神 < bokushin\ ;
+緑青 < rokushou\ ;
+漢数字 < kansuuji\ ;
+輝煌帝 < kikoutei\ ;
+支持者 < shijisha\ ;
+方舟 < hakobune\ ;
+飯事 < mamagoto\ ;
+中小 < chuushou\ ;
+日米 < nichibei\ ;
+焼鳥 < yakitori\ ;
+大文字 < daimonji\ ;
+謹直 < kinchoku\ ;
+中学 < chuugaku\ ;
+練鉄 < rentetsu\ ;
+変説 < hensetsu\ ;
+敵襲 < tekishuu\ ;
+子午環 < shigokan\ ;
+放逐 < houchiku\ ;
+三役 < san''yaku\ ;
+認識 < ninshiki\ ;
+艶福家 < enpukuka\ ;
+専門医 < senmon''i\ ;
+更年期 < kounenki\ ;
+日本刀 < nihontou\ ;
+緑門 < ryokumon\ ;
+不行儀 < fugyougi\ ;
+帰巣性 < kisousei\ ;
+下手物 < getemono\ ;
+村人 < murabito\ ;
+提案者 < teiansha\ ;
+受信機 < jushinki\ ;
+下帯 < shitaobi\ ;
+一役 < hitoyaku\ ;
+豪傑 < gouketsu\ ;
+揚子江 < yousukou\ ;
+事事 < kotogoto\ ;
+綿雲 < watagumo\ ;
+乱入 < ran''nyuu\ ;
+綿雪 < watayuki\ ;
+経常費 < keijouhi\ ;
+予予 < kanegane\ ;
+世局 < seikyoku\ ;
+練達 < rentatsu\ ;
+暇暇 < himahima\ ;
+隆隆 < ryuuryuu\ ;
+海王星 < kaiousei\ ;
+一度 < hitotabi\ ;
+隅隅 < sumizumi\ ;
+幼稚園 < youchien\ ;
+一年 < hitotose\ ;
+静粛 < seishuku\ ;
+塩鮭 < shiozake\ ;
+族籍 < zokuseki\ ;
+大蒜 < nin''niku\ ;
+一幕 < hitomaku\ ;
+月桂樹 < gekkeiju\ ;
+未記入 < mikinyuu\ ;
+一巻 < hitomaki\ ;
+難詰 < nankitsu\ ;
+雀躍 < jakuyaku\ ;
+中塗 < nakanuri\ ;
+陪食 < baishoku\ ;
+研磨材 < kenmazai\ ;
+二年草 < ninensou\ ;
+頌春 < shoushun\ ;
+義勇軍 < giyuugun\ ;
+文語文 < bungobun\ ;
+誕生日 < tanjoubi\ ;
+伯剌西爾 < burajiru\ ;
+万屋 < yorozuya\ ;
+中垣 < nakagaki\ ;
+金時計 < kindokei\ ;
+風力 < fuuryoku\ ;
+空洞化 < kuudouka\ ;
+糞味噌 < kusomiso\ ;
+乱伐 < ranbatsu\ ;
+日本人 < nihonjin\ ;
+猫属 < nekozoku\ ;
+性遊戯 < seiyuugi\ ;
+中国 < chuugoku\ ;
+次点者 < jitensha\ ;
+頃日 < keijitsu\ ;
+防腐剤 < boufuzai\ ;
+詳註 < shouchuu\ ;
+日本中 < nihonjuu\ ;
+雑談 < zatsudan\ ;
+腕相撲 < udezumou\ ;
+地域差 < chiikisa\ ;
+保護鳥 < hogochou\ ;
+日直 < nitchoku\ ;
+緑酒 < ryokushu\ ;
+一室 < isshitsu\ ;
+太腿 < futomomo\ ;
+小手先 < kotesaki\ ;
+無降水 < mukousui\ ;
+断絶 < danzetsu\ ;
+一子 < hitorigo\ ;
+姫様 < himesama\ ;
+鼻呼吸 < bikokyuu\ ;
+電蓄 < denchiku\ ;
+重騎兵 < juukihei\ ;
+古代史 < kodaishi\ ;
+末代 < matsudai\ ;
+言霊 < kotodama\ ;
+両国 < ryougoku\ ;
+主取 < shuudori\ ;
+雨蛙 < amagaeru\ ;
+熟読 < jukudoku\ ;
+玉体 < gyokutai\ ;
+牧牛 < bokugyuu\ ;
+塾長 < jukuchou\ ;
+熱血 < nekketsu\ ;
+能舞台 < noubutai\ ;
+玉代 < gyokudai\ ;
+集註 < shuuchuu\ ;
+競馬馬 < keibauma\ ;
+隔週 < kakushuu\ ;
+免租地 < mensochi\ ;
+日用 < nichiyou\ ;
+書取 < kakitori\ ;
+二次的 < nijiteki\ ;
+演奏者 < ensousha\ ;
+主力 < shuryoku\ ;
+具体性 < gutaisei\ ;
+月内 < getsunai\ ;
+乞丐 < kotsugai\ ;
+七夕 < tanabata\ ;
+謡物 < utaimono\ ;
+頻尿 < hin''nyou\ ;
+天罰 < tenbatsu\ ;
+一等車 < ittousha\ ;
+面白 < omoshiro\ ;
+曲名 < kyokumei\ ;
+総轄 < soukatsu\ ;
+中古 < chuuburu\ ;
+不品行 < fuhinkou\ ;
+狼座 < ookamiza\ ;
+証跡 < shouseki\ ;
+特科兵 < tokkahei\ ;
+脂肪油 < shibouyu\ ;
+左大臣 < sadaijin\ ;
+金字塔 < kinjitou\ ;
+奮発 < funpatsu\ ;
+高野山 < kouyasan\ ;
+大熊座 < oogumaza\ ;
+明滅 < meimetsu\ ;
+陸釣 < okadzuri\ ;
+謀略 < bouryaku\ ;
+一塩 < hitoshio\ ;
+風上 < kazakami\ ;
+冒険家 < boukenka\ ;
+外股 < sotomata\ ;
+塩濃度 < en''noudo\ ;
+絶食 < zesshoku\ ;
+書初 < kakizome\ ;
+日乃丸 < hinomaru\ ;
+誦習 < shoushuu\ ;
+爆笑 < bakushou\ ;
+習作 < shuusaku\ ;
+特注 < tokuchuu\ ;
+暦学 < rekigaku\ ;
+丸傷 < tamakizu\ ;
+何処迄 < dokomade\ ;
+近似値 < kinjichi\ ;
+透磁性 < toujisei\ ;
+奉祝 < houshuku\ ;
+保護領 < hogoryou\ ;
+中共 < chuukyou\ ;
+特派員 < tokuhain\ ;
+並列 < heiretsu\ ;
+久久 < hisabisa\ ;
+唾液腺 < daekisen\ ;
+緑豆 < ryokutou\ ;
+好物 < koubutsu\ ;
+下院議員 < kaingiin\ ;
+庭木戸 < niwakido\ ;
+青畳 < aodatami\ ;
+雛菊 < hinagiku\ ;
+時時 < tokidoki\ ;
+後援者 < kouensha\ ;
+黄鉄鉱 < outekkou\ ;
+失笑 < shisshou\ ;
+敗色 < haishoku\ ;
+雪膚 < yukihada\ ;
+暗室 < anshitsu\ ;
+古代人 < kodaijin\ ;
+事務服 < jimufuku\ ;
+小麦粉 < komugiko\ ;
+下味 < shitaaji\ ;
+不溶性 < fuyousei\ ;
+結髪 < keppatsu\ ;
+顧問団 < komondan\ ;
+昼時 < hirudoki\ ;
+保有者 < hoyuusha\ ;
+避病院 < hibyouin\ ;
+前景気 < maegeiki\ ;
+丸事 < marugoto\ ;
+電気椅子 < denkiisu\ ;
+外交員 < gaikouin\ ;
+文箱 < fumibako\ ;
+大筒 < oodzutsu\ ;
+丸丸 < marumaru\ ;
+防雪 < bousetsu\ ;
+銅相場 < dousouba\ ;
+訳読 < yakudoku\ ;
+七味 < shichimi\ ;
+方略 < houryaku\ ;
+丸一 < maruichi\ ;
+中低 < nakabiku\ ;
+始末 < shimatsu\ ;
+大童 < oowarawa\ ;
+傾斜度 < keishado\ ;
+高度計 < koudokei\ ;
+青玉 < seigyoku\ ;
+近未来 < kinmirai\ ;
+捕鯨船 < hogeisen\ ;
+失神 < shisshin\ ;
+集落 < shuuraku\ ;
+静物 < seibutsu\ ;
+加害者 < kagaisha\ ;
+数珠玉 < juzudama\ ;
+一向 < hitasura\ ;
+独学 < dokugaku\ ;
+昨朝 < sakuchou\ ;
+一叢 < hitomura\ ;
+曲事 < kusegoto\ ;
+手羽先 < tebasaki\ ;
+補助翼 < hojoyoku\ ;
+中中 < nakanaka\ ;
+慈悲心 < jihishin\ ;
+類別 < ruibetsu\ ;
+外貨債 < gaikasai\ ;
+縮緬 < chirimen\ ;
+情報化 < jouhouka\ ;
+昨暁 < sakugyou\ ;
+総予算 < souyosan\ ;
+真夜中 < mayonaka\ ;
+結願 < kechigan\ ;
+昨春 < sakushun\ ;
+万別 < banbetsu\ ;
+頁岩 < ketsugan\ ;
+並並 < naminami\ ;
+縦縞 < tatejima\ ;
+覗魔 < nozokima\ ;
+増設 < zousetsu\ ;
+一割 < ichiwari\ ;
+夕立 < yuudachi\ ;
+塩辛 < shiokara\ ;
+旧流 < kyuuryuu\ ;
+下意識 < kaishiki\ ;
+代稽古 < daigeiko\ ;
+永住権 < eijuuken\ ;
+保有米 < hoyuumai\ ;
+自国語 < jikokugo\ ;
+反対語 < hantaigo\ ;
+変異体 < hen''itai\ ;
+絹針 < kinubari\ ;
+獄中 < gokuchuu\ ;
+利己的 < rikoteki\ ;
+一先 < hitomazu\ ;
+建具屋 < tateguya\ ;
+昇格 < shoukaku\ ;
+防寒具 < boukangu\ ;
+女学校 < jogakkou\ ;
+保守性 < hoshusei\ ;
+繭玉 < mayudama\ ;
+明月 < meigetsu\ ;
+鞭撻 < bentatsu\ ;
+雨粒 < ametsubu\ ;
+好景気 < koukeiki\ ;
+平和維持 < heiwaiji\ ;
+交付者 < koufusha\ ;
+可変数 < kahensuu\ ;
+花文字 < hanamoji\ ;
+暴力 < bouryoku\ ;
+面会日 < menkaibi\ ;
+観閲 < kan''etsu\ ;
+煙草屋 < tabakoya\ ;
+緑藻 < ryokusou\ ;
+壮絶 < souzetsu\ ;
+雨模様 < amemoyou\ ;
+教籍 < kyouseki\ ;
+明春 < myoushun\ ;
+万代 < yorozuyo\ ;
+支脈 < shimyaku\ ;
+揺籃期 < youranki\ ;
+突破口 < toppakou\ ;
+独国 < dokukoku\ ;
+近代化 < kindaika\ ;
+点火系 < tenkakei\ ;
+二年生 < ninensei\ ;
+星気体 < seikitai\ ;
+不等号 < fudougou\ ;
+有為転変 < uitenpen\ ;
+五辺形 < gohenkei\ ;
+二輪車 < nirinsha\ ;
+三下 < sanshita\ ;
+大略 < tairyaku\ ;
+用箪笥 < youdansu\ ;
+女気 < on''nakke\ ;
+塩豆 < shiomame\ ;
+冷蔵庫 < reizouko\ ;
+万一 < man''ichi\ ;
+雪空 < yukizora\ ;
+謀殺 < bousatsu\ ;
+組長 < kumichou\ ;
+言説 < gensetsu\ ;
+不所存 < fushozon\ ;
+角通 < kakutsuu\ ;
+投光器 < toukouki\ ;
+浜茄子 < hamanasu\ ;
+古書展 < koshoten\ ;
+二十代 < nijuudai\ ;
+一一 < itsuitsu\ ;
+統轄 < toukatsu\ ;
+謡曲 < youkyoku\ ;
+紅鱒 < benimasu\ ;
+市街図 < shigaizu\ ;
+独唱 < dokushou\ ;
+樹枝状 < jushijou\ ;
+緑茶 < ryokucha\ ;
+序盤戦 < jobansen\ ;
+昼席 < hiruseki\ ;
+火成岩 < kaseigan\ ;
+組合員 < kumiaiin\ ;
+亜脱臼 < adakkyuu\ ;
+紅鮭 < benizake\ ;
+納骨 < noukotsu\ ;
+鬱金色 < ukon''iro\ ;
+旧株 < kyuukabu\ ;
+姫宮 < himemiya\ ;
+墜落 < tsuiraku\ ;
+鬼武者 < onimusha\ ;
+斜投影 < shatouei\ ;
+数百 < suuhyaku\ ;
+集約 < shuuyaku\ ;
+誘発 < yuuhatsu\ ;
+滑空機 < kakkuuki\ ;
+片栗 < katakuri\ ;
+旬月 < jungetsu\ ;
+軽騎兵 < keikihei\ ;
+二元論 < nigenron\ ;
+手料理 < teryouri\ ;
+単利法 < tanrihou\ ;
+御神輿 < omikoshi\ ;
+先鋭化 < sen''eika\ ;
+電略 < denryaku\ ;
+撒布剤 < sappuzai\ ;
+文物 < bunbutsu\ ;
+呉服屋 < gofukuya\ ;
+改築 < kaichiku\ ;
+試筋 < tamesuji\ ;
+試筆 < shihitsu\ ;
+旧暦 < kyuureki\ ;
+旬日 < junjitsu\ ;
+雑税 < zatsuzei\ ;
+読物 < yomimono\ ;
+溶解炉 < youkairo\ ;
+雪盲 < setsumou\ ;
+可変性 < kahensei\ ;
+警察 < keisatsu\ ;
+年齢差 < nenreisa\ ;
+解説 < kaisetsu\ ;
+緩緩 < yuruyuru\ ;
+早早 < hayabaya\ ;
+角貝 < tsunogai\ ;
+刀圭家 < toukeika\ ;
+摂食 < sesshoku\ ;
+西陣 < nishijin\ ;
+鳳仙花 < housenka\ ;
+触角 < shokkaku\ ;
+壁紙 < kabegami\ ;
+導波管 < douhakan\ ;
+単比例 < tanpirei\ ;
+捕鯨砲 < hogeihou\ ;
+紐革 < himokawa\ ;
+直足袋 < jikatabi\ ;
+旧教 < kyuukyou\ ;
+集積 < shuuseki\ ;
+埋骨 < maikotsu\ ;
+旗本 < hatamoto\ ;
+外物 < gaibutsu\ ;
+悪太郎 < akutarou\ ;
+有理数 < yuurisuu\ ;
+部分品 < bubunhin\ ;
+可燃性 < kanensei\ ;
+不善感 < fuzenkan\ ;
+級長 < kyuuchou\ ;
+斬殺 < zansatsu\ ;
+洗面所 < senmenjo\ ;
+物情 < butsujou\ ;
+集票 < shuuhyou\ ;
+雨男 < ameotoko\ ;
+爆沈 < bakuchin\ ;
+夜烏 < yogarasu\ ;
+送油管 < souyukan\ ;
+格子戸 < koushido\ ;
+具体例 < gutairei\ ;
+姫垣 < himegaki\ ;
+支持杭 < shijikou\ ;
+熊笹 < kumazasa\ ;
+熱発 < neppatsu\ ;
+無限大 < mugendai\ ;
+順列 < junretsu\ ;
+墨繩 < suminawa\ ;
+精米所 < seimaijo\ ;
+謙抑 < ken''yoku\ ;
+撮要 < satsuyou\ ;
+変物 < henbutsu\ ;
+統語論 < tougoron\ ;
+未開墾 < mikaikon\ ;
+春宵 < shunshou\ ;
+作業費 < sagyouhi\ ;
+闇雲 < yamikumo\ ;
+大阪府 < oosakafu\ ;
+猊美渓 < geibikei\ ;
+打撃王 < dagekiou\ ;
+続落 < zokuraku\ ;
+雪玉 < yukidama\ ;
+摘録 < tekiroku\ ;
+広葉樹 < kouyouju\ ;
+緊縮 < kinshuku\ ;
+試着 < shichaku\ ;
+草創期 < sousouki\ ;
+侍衛長 < jieichou\ ;
+二進木 < nishingi\ ;
+外濠 < sotobori\ ;
+妾宅 < shoutaku\ ;
+顕在化 < kenzaika\ ;
+再試合 < saishiai\ ;
+伝音器 < den''onki\ ;
+義務的 < gimuteki\ ;
+輸卵管 < yurankan\ ;
+低利金 < teirikin\ ;
+戦利品 < senrihin\ ;
+文語体 < bungotai\ ;
+乾性油 < kanseiyu\ ;
+角袖 < kakusode\ ;
+擂粉木 < surikogi\ ;
+闇闇 < yamiyami\ ;
+指導員 < shidouin\ ;
+未開地 < mikaichi\ ;
+秘書官 < hishokan\ ;
+多湿 < tashitsu\ ;
+面接 < mensetsu\ ;
+雑用 < zatsuyou\ ;
+新株 < shinkabu\ ;
+摺足 < suriashi\ ;
+武家物 < bukemono\ ;
+整理券 < seiriken\ ;
+育雛器 < ikusuuki\ ;
+圧搾機 < assakuki\ ;
+旁旁 < katagata\ ;
+新柄 < shingara\ ;
+政略 < seiryaku\ ;
+見通 < mitooshi\ ;
+難物 < nanbutsu\ ;
+二分法 < nibunhou\ ;
+混成語 < konseigo\ ;
+珈琲苑 < kouhiien\ ;
+二部作 < nibusaku\ ;
+総会屋 < soukaiya\ ;
+見返 < mikaeshi\ ;
+仕手戦 < shitesen\ ;
+姫君 < himegimi\ ;
+攻略 < kouryaku\ ;
+結論 < ketsuron\ ;
+奏曲 < soukyoku\ ;
+好好爺 < koukouya\ ;
+税務署 < zeimusho\ ;
+販売機 < hanbaiki\ ;
+霽月 < seigetsu\ ;
+空気孔 < kuukikou\ ;
+疲労感 < hiroukan\ ;
+放水路 < housuiro\ ;
+新暦 < shinreki\ ;
+焼肉 < yakiniku\ ;
+結言 < ketsugen\ ;
+証票 < shouhyou\ ;
+随筆 < zuihitsu\ ;
+外法 < sotonori\ ;
+新春 < shinshun\ ;
+会議所 < kaigisho\ ;
+陸続 < rikuzoku\ ;
+熱熱 < atsuatsu\ ;
+増築 < zouchiku\ ;
+形容語 < keiyougo\ ;
+一回戦 < ikkaisen\ ;
+縮減 < shukugen\ ;
+繁殖 < hanshoku\ ;
+天極 < tenkyoku\ ;
+疑問詞 < gimonshi\ ;
+旧幕 < kyuubaku\ ;
+絹莢 < kinusaya\ ;
+苦労人 < kurounin\ ;
+失格 < shikkaku\ ;
+聖火台 < seikadai\ ;
+日常 < nichijou\ ;
+水位標 < suiihyou\ ;
+悲観論 < hikanron\ ;
+妄語戒 < mougokai\ ;
+雑然 < zatsuzen\ ;
+永小作 < eikosaku\ ;
+炭素鋼 < tansokou\ ;
+繊維束 < senisoku\ ;
+解放区 < kaihouku\ ;
+保守党 < hoshutou\ ;
+放熱 < hounetsu\ ;
+誘殺 < yuusatsu\ ;
+素質 < soshitsu\ ;
+紅一点 < kouitten\ ;
+垂髪 < taregami\ ;
+雁爪 < gandzume\ ;
+縦波 < tatenami\ ;
+診療 < shinryou\ ;
+続続 < zokuzoku\ ;
+爆撃 < bakugeki\ ;
+家庭用 < kateiyou\ ;
+見識 < kenshiki\ ;
+虚空蔵 < kokuuzou\ ;
+誰某 < daresore\ ;
+旋律 < senritsu\ ;
+会計課 < kaikeika\ ;
+熱源 < netsugen\ ;
+勤務者 < kinmusha\ ;
+夜桜 < yozakura\ ;
+文末 < bunmatsu\ ;
+距離感 < kyorikan\ ;
+旧宅 < kyuutaku\ ;
+調教 < choukyou\ ;
+時偶 < tokitama\ ;
+如実 < nyojitsu\ ;
+斎日 < saijitsu\ ;
+熱涙 < netsurui\ ;
+電極 < denkyoku\ ;
+塵箱 < gomibako\ ;
+敏活 < binkatsu\ ;
+開闢 < kaibyaku\ ;
+煥発 < kanpatsu\ ;
+看護法 < kangohou\ ;
+大日 < dainichi\ ;
+催事場 < saijijou\ ;
+鬼兵隊 < kiheitai\ ;
+女子大 < joshidai\ ;
+韓人 < karabito\ ;
+外枠 < sotowaku\ ;
+唯我論 < yuigaron\ ;
+未製品 < miseihin\ ;
+敷板 < shikiita\ ;
+説明 < setsumei\ ;
+無統制 < mutousei\ ;
+縦横 < tateyoko\ ;
+要訣 < youketsu\ ;
+増発 < zouhatsu\ ;
+造船所 < zousenjo\ ;
+身支度 < mijitaku\ ;
+明哲 < meitetsu\ ;
+夜昼 < yoruhiru\ ;
+金本位 < kinhon''i\ ;
+夕月 < yuudzuki\ ;
+多面性 < tamensei\ ;
+大型機 < oogataki\ ;
+方式 < houshiki\ ;
+未開人 < mikaijin\ ;
+門閥 < monbatsu\ ;
+藁屋根 < warayane\ ;
+月世界 < gessekai\ ;
+得意顔 < tokuigao\ ;
+手間隙 < temahima\ ;
+政治犯 < seijihan\ ;
+春先 < harusaki\ ;
+始値 < hajimene\ ;
+洗面器 < senmenki\ ;
+新形 < shingata\ ;
+人文字 < hitomoji\ ;
+模造品 < mozouhin\ ;
+陸相 < rikushou\ ;
+呼吸器 < kokyuuki\ ;
+絹綿 < kinuwata\ ;
+土地鑑 < tochikan\ ;
+牆壁 < shouheki\ ;
+壊滅 < kaimetsu\ ;
+際物 < kiwamono\ ;
+気送管 < kisoukan\ ;
+低金利 < teikinri\ ;
+夭折 < yousetsu\ ;
+英小文字 < eikomoji\ ;
+敵方 < tekigata\ ;
+長長 < naganaga\ ;
+帽子屋 < boushiya\ ;
+御成功 < goseikou\ ;
+珊瑚海 < sangokai\ ;
+約諾 < yakudaku\ ;
+数日 < suujitsu\ ;
+曳光弾 < eikoudan\ ;
+千里眼 < senrigan\ ;
+防縮 < boushuku\ ;
+落下傘 < rakkasan\ ;
+擁立 < youritsu\ ;
+渡航者 < tokousha\ ;
+数数 < kazukazu\ ;
+大所 < oodokoro\ ;
+地鼠 < jinezumi\ ;
+下手人 < geshunin\ ;
+処女林 < shojorin\ ;
+純血 < junketsu\ ;
+事業部 < jigyoubu\ ;
+富山房 < fuzanbou\ ;
+粉飾 < funshoku\ ;
+縦書 < tategaki\ ;
+擦疵 < surikizu\ ;
+塚穴 < tsukaana\ ;
+接待費 < settaihi\ ;
+繊維性 < sen''isei\ ;
+手話法 < shuwahou\ ;
+何処其処 < dokosoko\ ;
+保養地 < hoyouchi\ ;
+照焼 < teriyaki\ ;
+利己心 < rikoshin\ ;
+点火栓 < tenkasen\ ;
+絶筆 < zeppitsu\ ;
+難曲 < nankyoku\ ;
+計略 < keiryaku\ ;
+鎔鉱炉 < youkouro\ ;
+可換群 < kakangun\ ;
+会議場 < kaigijou\ ;
+人非人 < ninpinin\ ;
+見落 < miotoshi\ ;
+炸薬 < sakuyaku\ ;
+花粉管 < kafunkan\ ;
+埋設 < maisetsu\ ;
+過激派 < kagekiha\ ;
+接骨 < sekkotsu\ ;
+陽物 < youbutsu\ ;
+論客 < ronkyaku\ ;
+角笛 < tsunobue\ ;
+熱望 < netsubou\ ;
+溶解度 < youkaido\ ;
+閲読 < etsudoku\ ;
+句読点 < kutouten\ ;
+捜査陣 < sousajin\ ;
+誰彼 < tarekare\ ;
+米食 < beishoku\ ;
+索莫 < sakubaku\ ;
+営利的 < eiriteki\ ;
+被災者 < hisaisha\ ;
+不従順 < fujuujun\ ;
+反射炉 < hansharo\ ;
+雑曲 < zakkyoku\ ;
+佝僂病 < kurubyou\ ;
+太巻 < futomaki\ ;
+新妻 < niidzuma\ ;
+都会人 < tokaijin\ ;
+結紮 < kessatsu\ ;
+呪禁道 < jukondou\ ;
+古版本 < kohanbon\ ;
+測候所 < sokkoujo\ ;
+旧劇 < kyuugeki\ ;
+派遣隊 < hakentai\ ;
+摘芯 < tekishin\ ;
+歓迎宴 < kangeien\ ;
+物事 < monogoto\ ;
+成功裡 < seikouri\ ;
+訳注 < yakuchuu\ ;
+改札 < kaisatsu\ ;
+家庭欄 < kateiran\ ;
+煮沸 < shafutsu\ ;
+大嵐 < ooarashi\ ;
+多変数 < tahensuu\ ;
+男性美 < danseibi\ ;
+雑文 < zatsubun\ ;
+高機能 < koukinou\ ;
+紙花 < kamibana\ ;
+人間苦 < ningenku\ ;
+焼物 < yakimono\ ;
+結節 < kessetsu\ ;
+長軸 < choujiku\ ;
+外庭 < sotoniwa\ ;
+三味線 < shamisen\ ;
+組紐 < kumihimo\ ;
+粒銀 < tsubugin\ ;
+開豁 < kaikatsu\ ;
+縁日 < en''nichi\ ;
+同程度 < douteido\ ;
+夜嵐 < yoarashi\ ;
+数式 < suushiki\ ;
+好塩菌 < kouenkin\ ;
+送気管 < soukikan\ ;
+犠牲者 < giseisha\ ;
+花紋板 < kamonban\ ;
+電子化 < denshika\ ;
+牛乳 < gyuunyuu\ ;
+尽未来 < jinmirai\ ;
+句読法 < kutouhou\ ;
+好天気 < koutenki\ ;
+長足 < chousoku\ ;
+塩物 < shiomono\ ;
+片側 < katagawa\ ;
+浄化槽 < joukasou\ ;
+雀斑 < sobakasu\ ;
+有声音 < yuuseion\ ;
+雲形 < kumogata\ ;
+経穴 < keiketsu\ ;
+反作用 < hansayou\ ;
+撞着 < douchaku\ ;
+全自動 < zenjidou\ ;
+反対派 < hantaiha\ ;
+旧作 < kyuusaku\ ;
+紅花 < benibana\ ;
+処女性 < shojosei\ ;
+手間賃 < temachin\ ;
+陰湿 < inshitsu\ ;
+編曲 < henkyoku\ ;
+組立 < kumitate\ ;
+細細 < hosoboso\ ;
+試掘 < shikutsu\ ;
+塩焼 < shioyaki\ ;
+外局 < gaikyoku\ ;
+増殖 < zoushoku\ ;
+旧人 < furubito\ ;
+一回分 < ikkaibun\ ;
+罹災者 < risaisha\ ;
+訳業 < yakugyou\ ;
+排雪 < haisetsu\ ;
+粛軍 < shukugun\ ;
+熱感 < netsukan\ ;
+失墜 < shittsui\ ;
+国鳥 < kokuchou\ ;
+貯炭所 < chotanjo\ ;
+諸共 < morotomo\ ;
+有人化 < yuujinka\ ;
+外客 < gaikyaku\ ;
+印象派 < inshouha\ ;
+熱情 < netsujou\ ;
+外孫 < sotomago\ ;
+糖蜜 < toumitsu\ ;
+難役 < nan''yaku\ ;
+塗物 < nurimono\ ;
+版下 < hanshita\ ;
+槍騎兵 < soukihei\ ;
+除湿 < joshitsu\ ;
+逃避行 < touhikou\ ;
+内火艇 < naikatei\ ;
+統率 < tousotsu\ ;
+旅先 < tabisaki\ ;
+細筆 < saihitsu\ ;
+雪嶺 < setsurei\ ;
+絹物 < kinumono\ ;
+利権屋 < riken''ya\ ;
+訳柄 < wakegara\ ;
+襟腰 < erikoshi\ ;
+結着 < ketchaku\ ;
+緑林 < ryokurin\ ;
+閲兵台 < eppeidai\ ;
+結盟 < ketsumei\ ;
+混種語 < konshugo\ ;
+熱弁 < netsuben\ ;
+透過性 < toukasei\ ;
+会見記 < kaikenki\ ;
+雑念 < zatsunen\ ;
+討死 < uchijini\ ;
+相似点 < soujiten\ ;
+螺子釘 < nejikugi\ ;
+処女峰 < shojohou\ ;
+看護師 < kangoshi\ ;
+支払 < shiharai\ ;
+親睦 < shinboku\ ;
+堀端 < horibata\ ;
+陥没 < kanbotsu\ ;
+角牛 < kakugyuu\ ;
+雑役 < zatsueki\ ;
+雪山 < yukiyama\ ;
+有頂点 < uchouten\ ;
+諸人 < morobito\ ;
+一等星 < ittousei\ ;
+下水道 < gesuidou\ ;
+非人情 < hininjou\ ;
+陣没 < jinbotsu\ ;
+父上 < chichiue\ ;
+雪害 < setsugai\ ;
+長袖 < nagasode\ ;
+防熱 < bounetsu\ ;
+主義者 < shugisha\ ;
+縄張 < nawabari\ ;
+派遣軍 < hakengun\ ;
+再提案 < saiteian\ ;
+美意識 < biishiki\ ;
+裏道 < uramichi\ ;
+隣接 < rinsetsu\ ;
+継母 < mamahaha\ ;
+大喝 < daikatsu\ ;
+総本家 < souhonke\ ;
+度外視 < dogaishi\ ;
+出来具合 < dekiguai\ ;
+露出 < roshutsu\ ;
+訪日 < hounichi\ ;
+遠征隊 < enseitai\ ;
+塩水 < shiomizu\ ;
+理想型 < risoukei\ ;
+敷地 < shikichi\ ;
+仮分数 < kabunsuu\ ;
+隆昌 < ryuushou\ ;
+新修 < shinshuu\ ;
+助数詞 < josuushi\ ;
+精算所 < seisanjo\ ;
+大吉 < daikichi\ ;
+多面体 < tamentai\ ;
+新作 < shinsaku\ ;
+関脇 < sekiwake\ ;
+燭台 < shokudai\ ;
+炭窯 < sumigama\ ;
+電圧 < den''atsu\ ;
+雨女 < ameon''na\ ;
+激震 < gekishin\ ;
+変圧 < hen''atsu\ ;
+形骸化 < keigaika\ ;
+欧米人 < oubeijin\ ;
+大卒 < daisotsu\ ;
+経師屋 < kyoujiya\ ;
+誤変換 < gohenkan\ ;
+還付金 < kanpukin\ ;
+壁役 < kabeyaku\ ;
+掛軸 < kakejiku\ ;
+縄尻 < nawajiri\ ;
+裲襠 < uchikake\ ;
+基督 < kirisuto\ ;
+晩御飯 < bangohan\ ;
+腕自慢 < udejiman\ ;
+浄水器 < jousuiki\ ;
+助教諭 < jokyouyu\ ;
+大別 < taibetsu\ ;
+斉列 < seiretsu\ ;
+雪国 < yukiguni\ ;
+処女地 < shojochi\ ;
+大冊 < taisatsu\ ;
+緻密 < chimitsu\ ;
+変哲 < hentetsu\ ;
+糸竹 < shichiku\ ;
+開脚 < kaikyaku\ ;
+支局 < shikyoku\ ;
+失保 < shitsuho\ ;
+利用者 < riyousha\ ;
+終熄 < shuusoku\ ;
+無精卵 < museiran\ ;
+鱩 < hatahata\ ;
+無関係 < mukankei\ ;
+外力 < gairyoku\ ;
+調伏 < choubuku\ ;
+雛型 < hinagata\ ;
+正字法 < seijihou\ ;
+要略 < youryaku\ ;
+軍医監 < gun''ikan\ ;
+鯑 < kazunoko\ ;
+警世家 < keiseika\ ;
+来学期 < raigakki\ ;
+映画評 < eigahyou\ ;
+批判者 < hihansha\ ;
+門脈 < monmyaku\ ;
+平叙文 < heijobun\ ;
+褐色 < kasshoku\ ;
+三重苦 < sanjuuku\ ;
+魁 < sakigake\ ;
+模倣者 < mohousha\ ;
+鬣 < tategami\ ;
+電力 < denryoku\ ;
+予選会 < yosenkai\ ;
+演奏会 < ensoukai\ ;
+数列 < suuretsu\ ;
+放埒 < houratsu\ ;
+外側 < sotogawa\ ;
+表門 < omotemon\ ;
+数冊 < suusatsu\ ;
+雲助 < kumosuke\ ;
+雑嚢 < zatsunou\ ;
+不活性 < fukassei\ ;
+濁酒 < doburoku\ ;
+土質 < doshitsu\ ;
+開口部 < kaikoubu\ ;
+敵側 < tekigawa\ ;
+双胴機 < soudouki\ ;
+訥弁 < totsuben\ ;
+裏表 < uraomote\ ;
+読了 < dokuryou\ ;
+灰篩 < haifurui\ ;
+粥腹 < kayubara\ ;
+須弥山 < shumisen\ ;
+瀉血 < shaketsu\ ;
+偽造罪 < gizouzai\ ;
+堅炭 < katazumi\ ;
+綿弓 < watayumi\ ;
+餞 < hanamuke\ ;
+垂耳 < taremimi\ ;
+詰問 < kitsumon\ ;
+秀画家 < shuugaka\ ;
+交代員 < koutaiin\ ;
+売却 < baikyaku\ ;
+採血 < saiketsu\ ;
+縦列 < juuretsu\ ;
+赤電話 < akadenwa\ ;
+有期刑 < yuukikei\ ;
+口話法 < kouwahou\ ;
+戸主権 < koshuken\ ;
+絶望 < zetsubou\ ;
+公安官 < kouankan\ ;
+撃沈 < gekichin\ ;
+角柱 < kakuchuu\ ;
+国辱 < kokujoku\ ;
+歯牙状 < shigajou\ ;
+伝声器 < denseiki\ ;
+頑 < katakuna\ ;
+保険金 < hokenkin\ ;
+士卒 < shisotsu\ ;
+指数部 < shisuubu\ ;
+豪華船 < goukasen\ ;
+丸暗記 < maruanki\ ;
+地袋 < jibukuro\ ;
+売出 < uridashi\ ;
+緊密 < kinmitsu\ ;
+基準点 < kijunten\ ;
+揺篭 < yurikago\ ;
+雪像 < setsuzou\ ;
+紅玉 < kougyoku\ ;
+米蔵 < komegura\ ;
+後援会 < kouenkai\ ;
+潮風 < shiokaze\ ;
+型紙 < katagami\ ;
+県議会 < kengikai\ ;
+訪客 < houkyaku\ ;
+行在所 < anzaisho\ ;
+隼 < hayabusa\ ;
+許嫁 < iinazuke\ ;
+捏造 < netsuzou\ ;
+口語文 < kougobun\ ;
+寝煙草 < netabako\ ;
+断破壊 < danhakai\ ;
+陵 < misasagi\ ;
+磁鉄鉱 < jitekkou\ ;
+円為替 < engawase\ ;
+看護兵 < kangohei\ ;
+営業部 < eigyoubu\ ;
+閏秒 < uruubyou\ ;
+不消化 < fushouka\ ;
+潤飾 < junshoku\ ;
+拳骨 < genkotsu\ ;
+綿密 < menmitsu\ ;
+不徳義 < futokugi\ ;
+地吹雪 < jifubuki\ ;
+激越 < gekietsu\ ;
+須弥壇 < shumidan\ ;
+綿実 < menjitsu\ ;
+佐幕派 < sabakuha\ ;
+閊 < tsukaeru\ ;
+頓痴気 < tonchiki\ ;
+国賊 < kokuzoku\ ;
+多数党 < tasuutou\ ;
+点滅 < tenmetsu\ ;
+激賞 < gekishou\ ;
+採油権 < saiyuken\ ;
+来世紀 < raiseiki\ ;
+隔壁 < kakuheki\ ;
+山水画 < sansuiga\ ;
+掃除人 < soujinin\ ;
+意味部門 < imibumon\ ;
+一等地 < ittouchi\ ;
+税務官 < zeimukan\ ;
+看護人 < kangonin\ ;
+半切符 < hankippu\ ;
+圧瀘器 < atsuroki\ ;
+緑地 < ryokuchi\ ;
+基準法 < kijunhou\ ;
+節電 < setsuden\ ;
+受講者 < jukousha\ ;
+測距儀 < sokkyogi\ ;
+粘粘 < nebaneba\ ;
+冷凍機 < reitouki\ ;
+鋸 < nokogiri\ ;
+等距離 < toukyori\ ;
+炎熱 < en''netsu\ ;
+国許 < kunimoto\ ;
+不名数 < fumeisuu\ ;
+開発 < kaihatsu\ ;
+試運転 < shiunten\ ;
+義勇兵 < giyuuhei\ ;
+親画面 < oyagamen\ ;
+拒否権 < kyohiken\ ;
+二番線 < nibansen\ ;
+営業費 < eigyouhi\ ;
+相似形 < soujikei\ ;
+罹災民 < risaimin\ ;
+寄生木 < yadorigi\ ;
+親族 < shinzoku\ ;
+火薬庫 < kayakuko\ ;
+赤頭巾 < akazukin\ ;
+蜥蜴座 < tokageza\ ;
+警報音 < keihouon\ ;
+粉粉 < konagona\ ;
+大蜥蜴 < ootokage\ ;
+雇人 < yatoinin\ ;
+更生期 < kouseiki\ ;
+設問 < setsumon\ ;
+土左衛門 < dozaemon\ ;
+覚書 < oboegaki\ ;
+疑問文 < gimonbun\ ;
+荷為替 < nigawase\ ;
+編入 < hen''nyuu\ ;
+拒食 < kyoshoku\ ;
+腎臓炎 < jinzouen\ ;
+累月 < ruigetsu\ ;
+垂直 < suichoku\ ;
+寄贈者 < kizousha\ ;
+家庭内 < kateinai\ ;
+紅殻 < benigara\ ;
+落語家 < rakugoka\ ;
+無節操 < musessou\ ;
+角店 < kadomise\ ;
+練乳 < ren''nyuu\ ;
+容疑者 < yougisha\ ;
+米糠 < komenuka\ ;
+展開図 < tenkaizu\ ;
+私生児 < shiseiji\ ;
+躾 < shitsuke\ ;
+総力 < souryoku\ ;
+大手筋 < ootesuji\ ;
+累日 < ruijitsu\ ;
+公定価 < kouteika\ ;
+気分屋 < kibun''ya\ ;
+在職 < zaishoku\ ;
+埋没 < maibotsu\ ;
+一等兵 < ittouhei\ ;
+下水管 < gesuikan\ ;
+整数比 < seisuuhi\ ;
+粘着 < nenchaku\ ;
+糞溜 < kusodame\ ;
+築造 < chikuzou\ ;
+社務所 < shamusho\ ;
+触媒 < shokubai\ ;
+高層雲 < kousouun\ ;
+常套語 < joutougo\ ;
+船外機 < sengaiki\ ;
+隊列 < tairetsu\ ;
+双暗車 < souansha\ ;
+索敵 < sakuteki\ ;
+旅客機 < ryokakki\ ;
+増刷 < zousatsu\ ;
+緑便 < ryokuben\ ;
+潮足 < shioashi\ ;
+閲歴 < etsureki\ ;
+運営者 < un''eisha\ ;
+恣意的 < shiiteki\ ;
+納札 < nousatsu\ ;
+破天荒 < hatenkou\ ;
+熱帯夜 < nettaiya\ ;
+達成度 < tasseido\ ;
+多角形 < takakkei\ ;
+振袖 < furisode\ ;
+糟汁 < kasujiru\ ;
+入会権 < iriaiken\ ;
+千葉県 < chibaken\ ;
+五月雨 < samidare\ ;
+準会員 < junkaiin\ ;
+諺 < kotowaza\ ;
+約束 < yakusoku\ ;
+水曜日 < suiyoubi\ ;
+渇水期 < kassuiki\ ;
+抑鬱 < yokuutsu\ ;
+競馬場 < keibajou\ ;
+指貫 < yubinuki\ ;
+鳩小屋 < hatogoya\ ;
+激臭 < gekishuu\ ;
+不正視 < fuseishi\ ;
+見所 < midokoro\ ;
+四半期 < shihanki\ ;
+粗率 < araritsu\ ;
+作用点 < sayouten\ ;
+遊園地 < yuuenchi\ ;
+軌道船 < kidousen\ ;
+弁理士 < benrishi\ ;
+終幕 < shuumaku\ ;
+襲撃 < shuugeki\ ;
+麻酔銃 < masuijuu\ ;
+褌 < fundoshi\ ;
+木螺子 < mokuneji\ ;
+結局 < kekkyoku\ ;
+歩数計 < hosuukei\ ;
+主題歌 < shudaika\ ;
+筋骨 < sujibone\ ;
+正会員 < seikaiin\ ;
+微分法 < bibunhou\ ;
+動員令 < douinrei\ ;
+観客 < kankyaku\ ;
+接着 < setchaku\ ;
+青瓦台 < seigadai\ ;
+陣列 < jinretsu\ ;
+渡船場 < tosenjou\ ;
+土筆 < tsukushi\ ;
+粛然 < shukuzen\ ;
+意識下 < ishikika\ ;
+細引 < hosobiki\ ;
+親局 < oyakyoku\ ;
+保護国 < hogokoku\ ;
+同性愛 < douseiai\ ;
+油圧器 < yuatsuki\ ;
+燕青拳 < enseiken\ ;
+幼年期 < younenki\ ;
+豪華版 < goukaban\ ;
+表芸 < omotegei\ ;
+医原病 < igenbyou\ ;
+電話線 < denwasen\ ;
+冷凍庫 < reitouko\ ;
+還付税 < kanpuzei\ ;
+弁護者 < bengosha\ ;
+装着 < souchaku\ ;
+電話網 < denwamou\ ;
+登山道 < tozandou\ ;
+蛤 < hamaguri\ ;
+濃縮 < noushuku\ ;
+意味原理 < imigenri\ ;
+提灯 < chouchin\ ;
+阿房鳥 < ahoudori\ ;
+予備的 < yobiteki\ ;
+裏町 < uramachi\ ;
+土神 < uchigami\ ;
+扶助料 < fujoryou\ ;
+堀川 < horikawa\ ;
+猿知恵 < sarudjie\ ;
+地蔵顔 < jizougao\ ;
+絶命 < zetsumei\ ;
+陋劣 < rouretsu\ ;
+作業場 < sagyouba\ ;
+筆順 < hitsujun\ ;
+空相場 < kuusouba\ ;
+袴着 < hakamagi\ ;
+国籍 < kokuseki\ ;
+挽肉 < hikiniku\ ;
+混合語 < kongougo\ ;
+妥協案 < dakyouan\ ;
+細密 < saimitsu\ ;
+間柄 < aidagara\ ;
+無抵抗 < muteikou\ ;
+撃墜 < gekitsui\ ;
+葉節点 < hasetten\ ;
+他動詞 < tadoushi\ ;
+映画狂 < eigakyou\ ;
+国策 < kokusaku\ ;
+法華経 < hokekyou\ ;
+筆陣 < hitsujin\ ;
+酢料理 < suryouri\ ;
+政府米 < seifumai\ ;
+結団 < ketsudan\ ;
+螢雪 < keisetsu\ ;
+好結果 < koukekka\ ;
+活性化 < kasseika\ ;
+助言者 < jogonsha\ ;
+裏千家 < urasenke\ ;
+舎利塔 < sharitou\ ;
+蝶鮫 < chouzame\ ;
+搦手 < karamete\ ;
+不祝儀 < bushuugi\ ;
+団結 < danketsu\ ;
+過渡的 < katoteki\ ;
+陶芸家 < tougeika\ ;
+紙屑 < kamikuzu\ ;
+作業員 < sagyouin\ ;
+血色 < kesshoku\ ;
+多摩川 < tamagawa\ ;
+微苦笑 < bikushou\ ;
+欺瞞者 < gimansha\ ;
+門札 < monsatsu\ ;
+立法府 < rippoufu\ ;
+被災地 < hisaichi\ ;
+猛打者 < moudasha\ ;
+絶倫 < zetsurin\ ;
+型枠 < katawaku\ ;
+不祥事 < fushouji\ ;
+結果論 < kekkaron\ ;
+闇市 < yamiichi\ ;
+融雪 < yuusetsu\ ;
+簒立 < sanritsu\ ;
+下水溝 < gesuikou\ ;
+水風呂 < mizuburo\ ;
+方位角 < houikaku\ ;
+防塵着 < boujingi\ ;
+既視想 < kishikan\ ;
+地熱 < chinetsu\ ;
+聾 < mimishii\ ;
+口語体 < kougotai\ ;
+幹部会 < kanbukai\ ;
+交際費 < kousaihi\ ;
+筋金 < sujigane\ ;
+武士道 < bushidou\ ;
+魔方陣 < mahoujin\ ;
+算術 < sanjutsu\ ;
+葡萄酒 < budoushu\ ;
+長旅 < nagatabi\ ;
+双子座 < futagoza\ ;
+脱水機 < dassuiki\ ;
+火口原 < kakougen\ ;
+低次元 < teijigen\ ;
+防人 < sakimori\ ;
+厳冬期 < gentouki\ ;
+不退転 < futaiten\ ;
+蟻蜂 < aribachi\ ;
+手土産 < temiyage\ ;
+危険視 < kikenshi\ ;
+衝立 < tsuitate\ ;
+舞踊団 < butoudan\ ;
+不決定 < fukettei\ ;
+回帰線 < kaikisen\ ;
+綴 < tsudzuri\ ;
+区民税 < kuminzei\ ;
+何番目 < nanbanme\ ;
+簡略 < kanryaku\ ;
+脱気水 < dakkisui\ ;
+刑務所 < keimusho\ ;
+健啖家 < kentanka\ ;
+破壊者 < hakaisha\ ;
+自意識 < jiishiki\ ;
+七十路 < nanasoji\ ;
+観自在 < kanjizai\ ;
+遠心機 < enshinki\ ;
+捨猫 < suteneko\ ;
+朱印船 < shuinsen\ ;
+洗濯機 < sentakki\ ;
+不動産 < fudousan\ ;
+蟀谷 < komekami\ ;
+噴気孔 < funkikou\ ;
+蟯虫 < gyouchuu\ ;
+蝦夷松 < ezomatsu\ ;
+鬼刑事 < onikeiji\ ;
+感嘆符 < kantanfu\ ;
+法医学 < houigaku\ ;
+粉末 < funmatsu\ ;
+篁 < takamura\ ;
+埒外 < rachigai\ ;
+鳥小屋 < torigoya\ ;
+坪数 < tsubosuu\ ;
+筍 < takenoko\ ;
+自営業 < jieigyou\ ;
+糞尿 < fun''nyou\ ;
+表白 < hyouhaku\ ;
+精錬所 < seirenjo\ ;
+四百 < yonhyaku\ ;
+細別 < saibetsu\ ;
+手鏡 < tekagami\ ;
+黄菖蒲 < kishoubu\ ;
+亜大陸 < atairiku\ ;
+備考欄 < bikouran\ ;
+蠏股 < ganimata\ ;
+堀割 < horiwari\ ;
+片手間 < katatema\ ;
+人間味 < ningenmi\ ;
+関守 < sekimori\ ;
+無意識 < muishiki\ ;
+投資家 < toushika\ ;
+下水板 < gesuiita\ ;
+血税 < ketsuzei\ ;
+馬蹄形 < bateikei\ ;
+全音符 < zen''onpu\ ;
+執務 < shitsumu\ ;
+捕物 < torimono\ ;
+成香 < narikyou\ ;
+高輝度 < koukidou\ ;
+米松 < beimatsu\ ;
+節糸 < fushiito\ ;
+不可侵 < fukashin\ ;
+黄口児 < koukouji\ ;
+分科会 < bunkakai\ ;
+節米 < setsumai\ ;
+蜘蛛膜 < kumomaku\ ;
+事業家 < jigyouka\ ;
+承諾 < shoudaku\ ;
+入会地 < iriaichi\ ;
+筆談 < hitsudan\ ;
+図書館 < toshokan\ ;
+開局 < kaikyoku\ ;
+製版所 < seihanjo\ ;
+東大寺 < toudaiji\ ;
+鎌首 < kamakubi\ ;
+立食 < risshoku\ ;
+中位数 < chuuisuu\ ;
+衆目 < shuumoku\ ;
+筆触 < hisshoku\ ;
+参賀者 < sangasha\ ;
+批准書 < hijunsho\ ;
+垂幕 < taremaku\ ;
+立願 < ritsugan\ ;
+摂動 < setsudou\ ;
+舞踏会 < butoukai\ ;
+精密 < seimitsu\ ;
+理化学 < rikagaku\ ;
+節穴 < fushiana\ ;
+登山者 < tozansha\ ;
+助教授 < jokyouju\ ;
+刑務官 < keimukan\ ;
+癸 < mizunoto\ ;
+政務官 < seimukan\ ;
+節税 < setsuzei\ ;
+正義感 < seigikan\ ;
+糸口 < itoguchi\ ;
+医薬品 < iyakuhin\ ;
+化粧着 < keshougi\ ;
+手車 < teguruma\ ;
+火達磨 < hidaruma\ ;
+長尻 < nagajiri\ ;
+濁流 < dakuryuu\ ;
+素人 < shirouto\ ;
+不徹底 < futettei\ ;
+激流 < gekiryuu\ ;
+執事 < shitsuji\ ;
+留守宅 < rusutaku\ ;
+所轄 < shokatsu\ ;
+拒絶 < kyozetsu\ ;
+凡試合 < bonshiai\ ;
+万歩計 < manpokei\ ;
+二枚貝 < nimaigai\ ;
+排日 < hainichi\ ;
+用水路 < yousuiro\ ;
+系列 < keiretsu\ ;
+衰滅 < suimetsu\ ;
+時計店 < tokeiten\ ;
+固定子 < koteishi\ ;
+有煙炭 < yuuentan\ ;
+裏鬼門 < urakimon\ ;
+採掘 < saikutsu\ ;
+御母様 < okaasama\ ;
+埒内 < rachinai\ ;
+道祖神 < dousojin\ ;
+在日 < zainichi\ ;
+合法化 < gouhouka\ ;
+漁色 < gyoshoku\ ;
+拙筆 < seppitsu\ ;
+純一 < jun''itsu\ ;
+首都圏 < shutoken\ ;
+三毛猫 < mikeneko\ ;
+探知機 < tanchiki\ ;
+死火山 < shikazan\ ;
+色模様 < iromoyou\ ;
+糸電話 < itodenwa\ ;
+重大化 < juudaika\ ;
+搬入 < han''nyuu\ ;
+関取 < sekitori\ ;
+三段目 < sandanme\ ;
+祭壇座 < saidanza\ ;
+搾乳 < sakunyuu\ ;
+烏帽子名 < eboshina\ ;
+漫筆 < manpitsu\ ;
+兄弟子 < anideshi\ ;
+運命論 < unmeiron\ ;
+普通科 < futsuuka\ ;
+上古史 < joukoshi\ ;
+預貯金 < yochokin\ ;
+抜群 < batsugun\ ;
+妥当性 < datousei\ ;
+国柄 < kunigara\ ;
+葡萄色 < budouiro\ ;
+排水路 < haisuiro\ ;
+横断面 < oudanmen\ ;
+整経機 < seikeiki\ ;
+手袋 < tebukuro\ ;
+閣僚 < kakuryou\ ;
+簡体字 < kantaiji\ ;
+風邪気味 < kazegimi\ ;
+可溶片 < kayouhen\ ;
+儀仗兵 < gijouhei\ ;
+陸屋根 < rokuyane\ ;
+籤引 < kujibiki\ ;
+座談会 < zadankai\ ;
+帆前船 < homaesen\ ;
+指話法 < shiwahou\ ;
+偽造品 < gizouhin\ ;
+筋肉 < kin''niku\ ;
+世帯数 < setaisuu\ ;
+一周期 < isshuuki\ ;
+中耳炎 < chuujien\ ;
+窓際 < madogiwa\ ;
+富士通 < fujitsuu\ ;
+家屋税 < kaokuzei\ ;
+間八 < kanpachi\ ;
+笹舟 < sasabune\ ;
+機動隊 < kidoutai\ ;
+防火線 < boukasen\ ;
+教護院 < kyougoin\ ;
+接岸 < setsugan\ ;
+戯言 < tawagoto\ ;
+螺子山 < nejiyama\ ;
+乳児院 < nyuujiin\ ;
+血液 < ketsueki\ ;
+腕時計 < udedokei\ ;
+蠏玉 < kanitama\ ;
+血涙 < ketsurui\ ;
+戸袋 < tobukuro\ ;
+朱印状 < shuinjou\ ;
+推察 < suisatsu\ ;
+真意義 < shin''igi\ ;
+遊技場 < yuugijou\ ;
+勧工場 < kankouba\ ;
+接客 < sekkyaku\ ;
+三冠馬 < sankanba\ ;
+嗅覚 < kyuukaku\ ;
+天才児 < tensaiji\ ;
+逆茂木 < sakamogi\ ;
+折節 < orifushi\ ;
+補充兵 < hojuuhei\ ;
+建議者 < kengisha\ ;
+常夜灯 < jouyatou\ ;
+潤滑 < junkatsu\ ;
+鎌足 < kamaashi\ ;
+草屋根 < kusayane\ ;
+潮流 < chouryuu\ ;
+四月 < shigatsu\ ;
+嘲笑 < choushou\ ;
+権威者 < ken''isha\ ;
+窮追 < kyuutsui\ ;
+窮迫 < kyuuhaku\ ;
+握力 < akuryoku\ ;
+砕岩機 < saiganki\ ;
+葡萄糖 < budoutou\ ;
+白亜館 < hakuakan\ ;
+混和性 < konwasei\ ;
+左顧右眄 < sakouben\ ;
+化粧殿 < kewaiden\ ;
+鍛鉄 < tantetsu\ ;
+揚力 < youryoku\ ;
+千分比 < senbunhi\ ;
+竹薮 < takeyabu\ ;
+才色 < saishoku\ ;
+時計台 < tokeidai\ ;
+同母姉 < douboshi\ ;
+立論 < ritsuron\ ;
+米坪 < beitsubo\ ;
+楠 < kusunoki\ ;
+筆箱 < fudebako\ ;
+測量 < sokuryou\ ;
+等等 < nadonado\ ;
+立言 < ritsugen\ ;
+黄水仙 < kisuisen\ ;
+粛党 < shukutou\ ;
+弱味噌 < yowamiso\ ;
+裸出 < rashutsu\ ;
+鍋釜 < nabekama\ ;
+留守中 < rusuchuu\ ;
+衝撃 < shougeki\ ;
+混雑 < konzatsu\ ;
+小児科 < shounika\ ;
+長久 < choukyuu\ ;
+三十戸 < sanjikko\ ;
+電離層 < denrisou\ ;
+高踏派 < koutouha\ ;
+理工系 < rikoukei\ ;
+無礼講 < bureikou\ ;
+地境 < djizakai\ ;
+挿抜 < soubatsu\ ;
+仮名文字 < kanamoji\ ;
+不十分 < fujuubun\ ;
+哺乳期 < honyuuki\ ;
+石油王 < sekiyuou\ ;
+衣手 < koromode\ ;
+御利益 < goriyaku\ ;
+投書家 < toushoka\ ;
+遺留品 < iryuuhin\ ;
+蛸足 < takoashi\ ;
+遺伝病 < idenbyou\ ;
+揚炭機 < youtanki\ ;
+非変換 < hihenkan\ ;
+改正案 < kaiseian\ ;
+高高度 < koukoudo\ ;
+経産婦 < keisanpu\ ;
+接合 < setsugou\ ;
+裏口 < uraguchi\ ;
+抑留 < yokuryuu\ ;
+赤裸裸 < sekirara\ ;
+混合機 < kongouki\ ;
+潮時 < shiodoki\ ;
+寄贈品 < kizouhin\ ;
+濃密 < noumitsu\ ;
+夜行性 < yakousei\ ;
+前衛派 < zen''eiha\ ;
+未決算 < mikessan\ ;
+国学 < kokugaku\ ;
+漠漠 < bakubaku\ ;
+揉事 < momegoto\ ;
+主要部 < shuyoubu\ ;
+避寒地 < hikanchi\ ;
+水垢離 < mizugori\ ;
+委託生 < itakusei\ ;
+警報機 < keihouki\ ;
+温罨法 < on''anpou\ ;
+対応版 < taiouban\ ;
+喇嘛教 < ramakyou\ ;
+遺留分 < iryuubun\ ;
+昆布茶 < konbucha\ ;
+鼻髭 < hanahige\ ;
+乗算器 < jouzanki\ ;
+立葵 < tachiaoi\ ;
+粉乳 < fun''nyuu\ ;
+鼻高 < hanataka\ ;
+葬儀社 < sougisha\ ;
+判検事 < hankenji\ ;
+喀血 < kakketsu\ ;
+特異点 < tokuiten\ ;
+保険屋 < hoken''ya\ ;
+投物 < nagemono\ ;
+地卵 < jitamago\ ;
+不都合 < futsugou\ ;
+所持金 < shojikin\ ;
+虎河豚 < torafugu\ ;
+技能者 < ginousha\ ;
+抗議文 < kougibun\ ;
+袖垣 < sodegaki\ ;
+既製品 < kiseihin\ ;
+基礎的 < kisoteki\ ;
+深酒 < fukazake\ ;
+貝細工 < kaizaiku\ ;
+黒百合 < kuroyuri\ ;
+空豆 < soramame\ ;
+茶菓子 < chagashi\ ;
+鼻風 < hanakaze\ ;
+米仏 < beifutsu\ ;
+否定文 < hiteibun\ ;
+捕失 < hoshitsu\ ;
+抄物 < shoumono\ ;
+竹簡 < chikukan\ ;
+抹殺 < massatsu\ ;
+弁護士 < bengoshi\ ;
+手裏剣 < shuriken\ ;
+銀時計 < gindokei\ ;
+三連符 < sanrenpu\ ;
+裏付 < uradzuke\ ;
+唐鋤 < karasuki\ ;
+圧出 < asshutsu\ ;
+立脚 < rikkyaku\ ;
+竹箆 < takebera\ ;
+国国 < kuniguni\ ;
+簒奪 < sandatsu\ ;
+均一 < kin''itsu\ ;
+漏泄 < rousetsu\ ;
+鼻革 < hanagawa\ ;
+空説 < kuusetsu\ ;
+小切子 < kokiriko\ ;
+搭乗員 < toujouin\ ;
+世界観 < sekaikan\ ;
+圧入 < atsunyuu\ ;
+挙式 < kyoshiki\ ;
+空言 < soragoto\ ;
+唐金 < karakane\ ;
+倉庫番 < soukoban\ ;
+虎鬚 < torahige\ ;
+溶発 < youhatsu\ ;
+滴滴 < tekiteki\ ;
+漂流 < hyouryuu\ ;
+鏑矢 < kaburaya\ ;
+文科系 < bunkakei\ ;
+能文家 < noubunka\ ;
+弁護団 < bengodan\ ;
+巫 < kan''nagi\ ;
+銀世界 < ginsekai\ ;
+拙文 < setsubun\ ;
+螢火 < hotarubi\ ;
+匈牙利 < hangarii\ ;
+才略 < sairyaku\ ;
+銀鼠 < gin''nezu\ ;
+猿真似 < sarumane\ ;
+猪口才 < chokozai\ ;
+鋳物師 < imonoshi\ ;
+無鉄砲 < muteppou\ ;
+同分母 < doubunbo\ ;
+国原 < kunibara\ ;
+未消化 < mishouka\ ;
+蛞蝓 < namekuji\ ;
+空蝉 < utsusemi\ ;
+築庭 < chikutei\ ;
+篤学 < tokugaku\ ;
+広東語 < kantongo\ ;
+寿 < kotobuki\ ;
+一私人 < isshijin\ ;
+融熱 < yuunetsu\ ;
+漢蔵語 < kanzougo\ ;
+二人目 < futarime\ ;
+富士絹 < fujiginu\ ;
+肛門科 < koumonka\ ;
+静電気 < seidenki\ ;
+鍋蓋 < nabebuta\ ;
+原動機 < gendouki\ ;
+乾船渠 < kandokku\ ;
+鼓吹者 < kosuisha\ ;
+大和煮 < yamatoni\ ;
+筆洗 < fudearai\ ;
+茶道具 < chadougu\ ;
+困却 < konkyaku\ ;
+懸絶 < kenzetsu\ ;
+排気管 < haikikan\ ;
+黒黴 < kurokabi\ ;
+当事者 < toujisha\ ;
+墓誌銘 < boshimei\ ;
+黒麦 < kuromugi\ ;
+短水路 < tansuiro\ ;
+成程 < naruhodo\ ;
+喫茶店 < kissaten\ ;
+時間帯 < jikantai\ ;
+無水酸 < musuisan\ ;
+才物 < saibutsu\ ;
+黒鷺 < kurosagi\ ;
+鉤鼻 < kagibana\ ;
+破防法 < habouhou\ ;
+混血 < konketsu\ ;
+箱庭 < hakoniwa\ ;
+合歓木 < nemunoki\ ;
+拙悪 < setsuaku\ ;
+聖歌隊 < seikatai\ ;
+黒鴨 < kurogamo\ ;
+銀髪 < ginpatsu\ ;
+蛆虫 < ujimushi\ ;
+印紙税 < inshizei\ ;
+蠍座 < sasoriza\ ;
+袖丈 < sodetake\ ;
+戦略 < senryaku\ ;
+文房具 < bunbougu\ ;
+保管金 < hokankin\ ;
+回勅 < kaichoku\ ;
+最多数 < saitasuu\ ;
+不透明 < futoumei\ ;
+栽培所 < saibaijo\ ;
+林檎酒 < ringoshu\ ;
+国人 < kunibito\ ;
+母細胞 < bosaibou\ ;
+好打者 < koudasha\ ;
+円筒形 < entoukei\ ;
+摂関家 < sekkanke\ ;
+正規軍 < seikigun\ ;
+浜風 < hamakaze\ ;
+常套句 < joutouku\ ;
+竪琴 < tategoto\ ;
+渋茶 < shibucha\ ;
+未決済 < mikessai\ ;
+蚰蜒 < gejigeji\ ;
+納戸色 < nandoiro\ ;
+抗日 < kounichi\ ;
+非線形 < hisenkei\ ;
+風呂釜 < furogama\ ;
+弁護人 < bengonin\ ;
+渋色 < shibuiro\ ;
+鎮守府 < chinjufu\ ;
+一張羅 < itchoura\ ;
+子会社 < kogaisha\ ;
+不凍港 < futoukou\ ;
+活魚 < katsugyo\ ;
+卵塔場 < rantouba\ ;
+中央部 < chuuoubu\ ;
+不凍液 < futoueki\ ;
+天秤座 < tenbinza\ ;
+空耳 < soramimi\ ;
+危険性 < kikensei\ ;
+不凍海 < futoukai\ ;
+大真面目 < oomajime\ ;
+登山帽 < tozanbou\ ;
+銭金 < zenikane\ ;
+煎豆腐 < iridoufu\ ;
+券売機 < kenbaiki\ ;
+時間外 < jikangai\ ;
+拝察 < haisatsu\ ;
+気候帯 < kikoutai\ ;
+楽器店 < gakkiten\ ;
+承服 < shoufuku\ ;
+検非違使 < kebiishi\ ;
+截然 < setsuzen\ ;
+龍舟 < ryuushuu\ ;
+本金庫 < honkinko\ ;
+雄弁家 < yuubenka\ ;
+付帯犯 < futaihan\ ;
+西洋碁 < seiyougo\ ;
+戦争後 < sensougo\ ;
+敏腕家 < binwanka\ ;
+中以上 < chuuijou\ ;
+高下駄 < takageta\ ;
+非売品 < hibaihin\ ;
+混色 < konshoku\ ;
+何代目 < nandaime\ ;
+高架線 < koukasen\ ;
+水面下 < suimenka\ ;
+精油所 < seiyusho\ ;
+東西屋 < touzaiya\ ;
+溢流 < itsuryuu\ ;
+銅版画 < douhanga\ ;
+投技 < nagewaza\ ;
+炊飯器 < suihanki\ ;
+我物 < wagamono\ ;
+元帥府 < gensuifu\ ;
+鼻許 < hanamoto\ ;
+鳥之巣 < torinosu\ ;
+医療車 < iryousha\ ;
+特異性 < tokuisei\ ;
+溝泥 < dobudoro\ ;
+禄高 < rokudaka\ ;
+冬至線 < toujisen\ ;
+穿孔機 < senkouki\ ;
+無蓋車 < mugaisha\ ;
+溝水 < dobumizu\ ;
+空籤 < karakuji\ ;
+抵抗器 < teikouki\ ;
+蒸気船 < joukisen\ ;
+非許容 < hikyoyou\ ;
+遠近法 < enkinhou\ ;
+鉄骨 < tekkotsu\ ;
+湯煙 < yukemuri\ ;
+淡色 < tanshoku\ ;
+仮定法 < kateihou\ ;
+西洋画 < seiyouga\ ;
+私鉄 < shitetsu\ ;
+達磨忌 < darumaki\ ;
+秒速 < byousoku\ ;
+空箱 < karabako\ ;
+突立 < tottatsu\ ;
+畳成語 < jouseigo\ ;
+怪事件 < kaijiken\ ;
+所持者 < shojisha\ ;
+擬人法 < gijinhou\ ;
+唐草 < karakusa\ ;
+準大手 < jun''oote\ ;
+回転機 < kaitenki\ ;
+蟻塚 < aridzuka\ ;
+潮先 < shiosaki\ ;
+虚説 < kyosetsu\ ;
+血便 < ketsuben\ ;
+戦没 < senbotsu\ ;
+可哀相 < kawaisou\ ;
+指先 < yubisaki\ ;
+錦絵 < nishikie\ ;
+交際家 < kousaika\ ;
+離乳期 < rinyuuki\ ;
+磁性層 < jiseisou\ ;
+越冬隊 < ettoutai\ ;
+御無沙汰 < gobusata\ ;
+手枕 < temakura\ ;
+右顧左眄 < ukosaben\ ;
+譜面台 < fumendai\ ;
+秀逸 < shuuitsu\ ;
+仮小屋 < karigoya\ ;
+目論見 < mokuromi\ ;
+竹槍 < takeyari\ ;
+演算子 < enzanshi\ ;
+黒鉄 < kurogane\ ;
+有限個 < yuugenko\ ;
+戸障子 < toshouji\ ;
+可鍛性 < katansei\ ;
+太鼓判 < taikoban\ ;
+海坊主 < umibouzu\ ;
+等式 < toushiki\ ;
+藩閥 < hanbatsu\ ;
+流量 < ryuuryou\ ;
+黍魚子 < kibinago\ ;
+突発 < toppatsu\ ;
+鉤針 < kagibari\ ;
+投宿 < toushuku\ ;
+営林署 < eirinsho\ ;
+竹林 < chikurin\ ;
+固有値 < koyuuchi\ ;
+啓発 < keihatsu\ ;
+竹材 < chikuzai\ ;
+遺伝学 < idengaku\ ;
+育種所 < ikushujo\ ;
+空発 < kuuhatsu\ ;
+払拭 < fusshoku\ ;
+金鍍金 < kinmekki\ ;
+神風 < kamikaze\ ;
+流速 < ryuusoku\ ;
+流通 < ryuutsuu\ ;
+滝川 < takigawa\ ;
+参事官 < sanjikan\ ;
+相談所 < soudanjo\ ;
+無税品 < muzeihin\ ;
+穀粒 < kokuryuu\ ;
+端末 < tanmatsu\ ;
+唐紙 < karakami\ ;
+応答能 < outounou\ ;
+検問所 < kenmonjo\ ;
+岡場所 < okabasho\ ;
+地蔵尊 < jizouson\ ;
+空世辞 < karaseji\ ;
+表具屋 < hyouguya\ ;
+弔慰金 < chouikin\ ;
+初産婦 < shosanpu\ ;
+蛸焼 < takoyaki\ ;
+祝電 < shukuden\ ;
+恐龍 < kyouryuu\ ;
+暗記物 < ankimono\ ;
+麻酔剤 < masuizai\ ;
+藪医者 < yabuisha\ ;
+品薄 < shinausu\ ;
+拝借 < haishaku\ ;
+何時頃 < itsugoro\ ;
+種紙 < tanegami\ ;
+温熱 < on''netsu\ ;
+鉄鉢 < teppachi\ ;
+満月 < mangetsu\ ;
+鍋物 < nabemono\ ;
+二義的 < nigiteki\ ;
+雁皮紙 < ganpishi\ ;
+日和見 < hiyorimi\ ;
+波風 < namikaze\ ;
+社会部 < shakaibu\ ;
+鑑別 < kanbetsu\ ;
+黒豹 < kurohyou\ ;
+房房 < fusafusa\ ;
+黒豆 < kuromame\ ;
+別世界 < bessekai\ ;
+無名氏 < mumeishi\ ;
+雇傭者 < koyousha\ ;
+唐突 < toutotsu\ ;
+絢緞子 < ayadonsu\ ;
+渦状文 < kajoumon\ ;
+黙諾 < mokudaku\ ;
+自動車 < jidousha\ ;
+除草剤 < josouzai\ ;
+野鼠 < nonezumi\ ;
+不公正 < fukousei\ ;
+闘技場 < tougijou\ ;
+喬木 < kyouboku\ ;
+黙読 < mokudoku\ ;
+恥骨 < chikotsu\ ;
+主記憶 < shukioku\ ;
+手心 < tegokoro\ ;
+突然 < totsuzen\ ;
+鼻下長 < bikachou\ ;
+最大化 < saidaika\ ;
+押切 < oshikiri\ ;
+防炎剤 < bouenzai\ ;
+抑圧 < yokuatsu\ ;
+慶祝 < keishuku\ ;
+筆太 < fudebuto\ ;
+鉄道 < tetsudou\ ;
+何時間 < nanjikan\ ;
+系統樹 < keitouju\ ;
+御自身 < gojishin\ ;
+上菓子 < jougashi\ ;
+虚脱 < kyodatsu\ ;
+河鱒 < kawamasu\ ;
+被減数 < higensuu\ ;
+星条旗 < seijouki\ ;
+銭苔 < zenigoke\ ;
+立札 < tatefuda\ ;
+噛傷 < kamikizu\ ;
+野鶲 < nobitaki\ ;
+疎水性 < sosuisei\ ;
+自治権 < jichiken\ ;
+逮捕者 < taihosha\ ;
+演出 < enshutsu\ ;
+鼻紙 < hanagami\ ;
+温温 < nukunuku\ ;
+二頭筋 < nitoukin\ ;
+鼻糞 < hanakuso\ ;
+素浪人 < surounin\ ;
+秋場所 < akibasho\ ;
+船火事 < funakaji\ ;
+育種家 < ikushuka\ ;
+悪逆 < akugyaku\ ;
+正課外 < seikagai\ ;
+煉瓦塀 < rengabei\ ;
+悪辣 < akuratsu\ ;
+英文法 < eibunpou\ ;
+未決定 < mikettei\ ;
+黒表 < kokuhyou\ ;
+健康美 < kenkoubi\ ;
+両議院 < ryougiin\ ;
+愛唱歌 < aishouka\ ;
+二本棒 < nihonbou\ ;
+鼻筋 < hanasuji\ ;
+沈黙 < chinmoku\ ;
+青物屋 < aomonoya\ ;
+金髪 < kinpatsu\ ;
+仮定形 < kateikei\ ;
+鉈豆 < natamame\ ;
+磯鷸 < isoshigi\ ;
+溝川 < dobugawa\ ;
+自動詞 < jidoushi\ ;
+便宜上 < bengijou\ ;
+田舎風 < inakafuu\ ;
+鍵束 < kagitaba\ ;
+神速 < shinsoku\ ;
+朝御飯 < asagohan\ ;
+黒蛇 < kurohebi\ ;
+指揮権 < shikiken\ ;
+設計図 < sekkeizu\ ;
+満悦 < man''etsu\ ;
+我我 < wareware\ ;
+部外者 < bugaisha\ ;
+清潔 < seiketsu\ ;
+葬儀場 < sougijou\ ;
+磁性体 < jiseitai\ ;
+銀本位 < ginhon''i\ ;
+筆名 < hitsumei\ ;
+政党員 < seitouin\ ;
+対応値 < taiouchi\ ;
+軍艦旗 < gunkanki\ ;
+二乗根 < nijoukon\ ;
+種畜 < shuchiku\ ;
+指揮棒 < shikibou\ ;
+母国語 < bokokugo\ ;
+画用紙 < gayoushi\ ;
+銅色 < doushoku\ ;
+検温器 < ken''onki\ ;
+反骨 < hankotsu\ ;
+商況 < shoukyou\ ;
+駆潜艇 < kusentei\ ;
+堕胎罪 < dataizai\ ;
+湿度 < shitsudo\ ;
+磁気学 < jikigaku\ ;
+蟄伏 < chippuku\ ;
+浅葱 < asatsuki\ ;
+懐炉灰 < kairobai\ ;
+要注意 < youchuui\ ;
+初生児 < shoseiji\ ;
+戒律 < kairitsu\ ;
+不鮮明 < fusenmei\ ;
+竺学 < jikugaku\ ;
+天鵞絨 < biroudou\ ;
+吹貫 < fukinuki\ ;
+笹原 < sasahara\ ;
+窓枠 < madowaku\ ;
+唐物 < toumotsu\ ;
+製糖所 < seitoujo\ ;
+端局 < tankyoku\ ;
+択一 < takuitsu\ ;
+先駆者 < senkusha\ ;
+助成金 < joseikin\ ;
+渡来人 < toraijin\ ;
+筆先 < fudesaki\ ;
+速記者 < sokkisha\ ;
+銭箱 < zenibako\ ;
+錨泊 < byouhaku\ ;
+艦載機 < kansaiki\ ;
+混浴 < kon''yoku\ ;
+深深 < fukabuka\ ;
+藪蛇 < yabuhebi\ ;
+製粉機 < seifunki\ ;
+乱層雲 < ransouun\ ;
+参事会 < sanjikai\ ;
+種物 < tanemono\ ;
+種牛 < taneushi\ ;
+蛇毒 < hebidoku\ ;
+戌年 < inudoshi\ ;
+違法行為 < ihoukoui\ ;
+排気弁 < haikiben\ ;
+滑剤 < katsuzai\ ;
+黒船 < kurofune\ ;
+正統派 < seitouha\ ;
+銀翼 < gin''yoku\ ;
+泥足 < doroashi\ ;
+補佐役 < hosayaku\ ;
+鎌形 < kamagata\ ;
+未配当 < mihaitou\ ;
+滅却 < mekkyaku\ ;
+是非共 < zehitomo\ ;
+釣銭 < tsurisen\ ;
+未刊行 < mikankou\ ;
+枢機卿 < suukikei\ ;
+未遂罪 < misuizai\ ;
+文化財 < bunkazai\ ;
+武装船 < busousen\ ;
+記者団 < kishadan\ ;
+商業 < shougyou\ ;
+御用邸 < goyoutei\ ;
+御先棒 < osakibou\ ;
+鉱脈 < koumyaku\ ;
+蚊燻 < kaibushi\ ;
+吃逆 < shakkuri\ ;
+麹菌 < koujikin\ ;
+定比例 < teihirei\ ;
+命脈 < meimyaku\ ;
+富士川 < fujikawa\ ;
+黒肉 < kuroniku\ ;
+麦藁 < mugiwara\ ;
+産卵期 < sanranki\ ;
+竹垣 < takegaki\ ;
+分相機 < bunsouki\ ;
+鍛接 < tansetsu\ ;
+針金 < harigane\ ;
+会意文字 < kaiimoji\ ;
+銀縁 < ginbuchi\ ;
+上層雲 < jousouun\ ;
+金錆 < kanasabi\ ;
+税率 < zeiritsu\ ;
+立山 < tateyama\ ;
+三次元 < sanjigen\ ;
+群馬県 < gunmaken\ ;
+麦蒔 < mugimaki\ ;
+古金 < furugane\ ;
+啄木 < takuboku\ ;
+口重 < kuchiomo\ ;
+兵站部 < heitanbu\ ;
+不公平 < fukouhei\ ;
+渇望 < katsubou\ ;
+才力 < sairyoku\ ;
+古酒 < furuzake\ ;
+前鼻緒 < maehanao\ ;
+不凍剤 < futouzai\ ;
+鼻熊 < hanaguma\ ;
+錫杖 < shakujou\ ;
+空撮 < kuusatsu\ ;
+黙約 < mokuyaku\ ;
+物真似 < monomane\ ;
+遊歩道 < yuuhodou\ ;
+社説 < shasetsu\ ;
+浅緑 < senryoku\ ;
+手刀 < tegatana\ ;
+合縁奇縁 < aienkien\ ;
+無制限 < museigen\ ;
+積極 < sekkyoku\ ;
+打傷 < uchikizu\ ;
+鉄色 < tetsuiro\ ;
+体育家 < taiikuka\ ;
+分岐駅 < bunkieki\ ;
+福耳 < fukumimi\ ;
+滅亡 < metsubou\ ;
+医療用 < iryouyou\ ;
+慄然 < ritsuzen\ ;
+同説 < dousetsu\ ;
+窒息 < chissoku\ ;
+右足 < migiashi\ ;
+逮捕状 < taihojou\ ;
+沖釣 < okidzuri\ ;
+過去帳 < kakochou\ ;
+黒米 < kurogome\ ;
+機動性 < kidousei\ ;
+鉄腕 < tetsuwan\ ;
+叛逆 < hangyaku\ ;
+熱風炉 < neppuuro\ ;
+歩行者 < hokousha\ ;
+點穴 < tenketsu\ ;
+水鳥 < mizudori\ ;
+満喫 < mankitsu\ ;
+円錐形 < ensuikei\ ;
+我国 < wagakuni\ ;
+守銭奴 < shusendo\ ;
+道化師 < doukeshi\ ;
+悪舌 < akuzetsu\ ;
+虎猫 < toraneko\ ;
+下腹部 < kafukubu\ ;
+反政府 < hanseifu\ ;
+回転儀 < kaitengi\ ;
+上草履 < uwazouri\ ;
+米上院 < beijouin\ ;
+洒脱 < shadatsu\ ;
+麻綱 < asadzuna\ ;
+黐竿 < mochizao\ ;
+朝稽古 < asageiko\ ;
+含蓄 < ganchiku\ ;
+製粉所 < seifunjo\ ;
+被治者 < hichisha\ ;
+参酌 < sanshaku\ ;
+宮田家 < miyatake\ ;
+近衛兵 < konoehei\ ;
+岩手県 < iwateken\ ;
+連隊旗 < rentaiki\ ;
+管楽器 < kangakki\ ;
+謝恩会 < shaonkai\ ;
+養蜂家 < youhouka\ ;
+五線紙 < gosenshi\ ;
+各行 < kakugyou\ ;
+鍋底 < nabezoko\ ;
+平生着 < heizeigi\ ;
+機帆船 < kihansen\ ;
+悪者 < warumono\ ;
+鼻水 < hanamizu\ ;
+非排水 < hihaisui\ ;
+着番号 < kibangou\ ;
+不倫罪 < furinzai\ ;
+飴細工 < amezaiku\ ;
+偽似症 < gijishou\ ;
+大広間 < oohiroma\ ;
+避難者 < hinansha\ ;
+定常波 < teijouha\ ;
+付属語 < fuzokugo\ ;
+悶絶 < monzetsu\ ;
+年会費 < nenkaihi\ ;
+故買者 < kobaisha\ ;
+五大洋 < godaiyou\ ;
+立命 < ritsumei\ ;
+珪藻土 < keisoudo\ ;
+厳達 < gentatsu\ ;
+人名簿 < jinmeibo\ ;
+排気口 < haikikou\ ;
+避妊法 < hininhou\ ;
+特価品 < tokkahin\ ;
+重説 < juusetsu\ ;
+揚抗比 < youkouhi\ ;
+鍋尻 < nabejiri\ ;
+辞書類 < jishorui\ ;
+大往生 < daioujou\ ;
+追起訴 < tsuikiso\ ;
+氷震 < hyoushin\ ;
+過半数 < kahansuu\ ;
+鉄筆 < teppitsu\ ;
+安息日 < ansokubi\ ;
+再浮上 < saifujou\ ;
+活眼 < katsugan\ ;
+図書券 < toshoken\ ;
+発起人 < hokkinin\ ;
+洞窟 < doukutsu\ ;
+道具論 < douguron\ ;
+分相応 < bunsouou\ ;
+我儘 < wagamama\ ;
+立候補 < rikkouho\ ;
+避暑地 < hishochi\ ;
+水際 < mizugiwa\ ;
+接骨木 < niwatoko\ ;
+社会科 < shakaika\ ;
+重複 < choufuku\ ;
+活発 < kappatsu\ ;
+上機嫌 < joukigen\ ;
+交換所 < koukanjo\ ;
+喜歌劇 < kikageki\ ;
+添加剤 < tenkazai\ ;
+未復員 < mifukuin\ ;
+消沈 < shouchin\ ;
+謙遜語 < kensongo\ ;
+未処置 < mishochi\ ;
+悪筆 < akuhitsu\ ;
+地形図 < chikeizu\ ;
+未知数 < michisuu\ ;
+硬骨 < koukotsu\ ;
+八潮路 < yashioji\ ;
+沢蠏 < sawagani\ ;
+代理者 < dairisha\ ;
+憫察 < binsatsu\ ;
+麗筆 < reihitsu\ ;
+藁紙 < waragami\ ;
+軍令部 < gunreibu\ ;
+立像 < ritsuzou\ ;
+横文字 < yokomoji\ ;
+活用 < katsuyou\ ;
+消毒 < shoudoku\ ;
+太古代 < taikodai\ ;
+我人 < warehito\ ;
+鍋墨 < nabezumi\ ;
+黒猫 < kuroneko\ ;
+我事 < wagakoto\ ;
+幾何学 < kikagaku\ ;
+西洋化 < seiyouka\ ;
+刑余者 < keiyosha\ ;
+渡世人 < toseinin\ ;
+同胞 < harakara\ ;
+羅針儀 < rashingi\ ;
+子音群 < shiingun\ ;
+暗証化 < anshouka\ ;
+滑走路 < kassouro\ ;
+製図板 < seizuban\ ;
+皇統譜 < koutoufu\ ;
+理学部 < rigakubu\ ;
+空夢 < sorayume\ ;
+泥縄 < doronawa\ ;
+英語塾 < eigojuku\ ;
+酋長 < shuuchou\ ;
+悲喜劇 < hikigeki\ ;
+保管林 < hokanrin\ ;
+半靴 < hangutsu\ ;
+悶着 < monchaku\ ;
+再武装 < saibusou\ ;
+黒熊 < kuroguma\ ;
+蒲魚 < kamatoto\ ;
+喉元 < nodomoto\ ;
+空堀 < karabori\ ;
+赤蜻蛉 < akatonbo\ ;
+薄膜 < hakumaku\ ;
+窯元 < kamamoto\ ;
+減圧 < gen''atsu\ ;
+無辺際 < muhenzai\ ;
+不自然 < fushizen\ ;
+腎不全 < jinfuzen\ ;
+稚拙 < chisetsu\ ;
+祐筆 < yuuhitsu\ ;
+宴会場 < enkaijou\ ;
+古草 < furukusa\ ;
+不信者 < fushinja\ ;
+口荒 < kuchiara\ ;
+単本位 < tanhon''i\ ;
+円錐台 < ensuidai\ ;
+祝祭 < shukusai\ ;
+因果者 < ingamono\ ;
+不信義 < fushingi\ ;
+半長 < han''naga\ ;
+鉄瓶 < tetsubin\ ;
+水部 < mizunobu\ ;
+軍事面 < gunjimen\ ;
+恒河沙 < gougasha\ ;
+悪癖 < waruguse\ ;
+黒潮 < kuroshio\ ;
+蓄電 < chikuden\ ;
+母鳥 < hahadori\ ;
+自治体 < jichitai\ ;
+着尺地 < kijakuji\ ;
+後半期 < kouhanki\ ;
+口舌 < kouzetsu\ ;
+祝砲 < shukuhou\ ;
+毛髪 < mouhatsu\ ;
+自治会 < jichikai\ ;
+価値観 < kachikan\ ;
+西遊記 < seiyuuki\ ;
+監査委員 < kansaiin\ ;
+礼節 < reisetsu\ ;
+年代記 < nendaiki\ ;
+感情家 < kanjouka\ ;
+文化祭 < bunkasai\ ;
+及落 < kyuuraku\ ;
+銃殺 < juusatsu\ ;
+変換器 < henkanki\ ;
+情熱 < jounetsu\ ;
+世界史 < sekaishi\ ;
+受精卵 < juseiran\ ;
+金脈 < kinmyaku\ ;
+只者 < tadamono\ ;
+懇切 < konsetsu\ ;
+禁物 < kinmotsu\ ;
+年甲斐 < toshigai\ ;
+虐政 < gyakusei\ ;
+名筆 < meihitsu\ ;
+確証 < kakushou\ ;
+同筆 < douhitsu\ ;
+配達 < haitatsu\ ;
+泥仕合 < dorojiai\ ;
+清子音 < seishiin\ ;
+二期作 < nikisaku\ ;
+鋸屑 < nokokuzu\ ;
+横紋筋 < oumonkin\ ;
+淀川 < yodogawa\ ;
+運動界 < undoukai\ ;
+惑溺 < wakudeki\ ;
+未発見 < mihakken\ ;
+浅沓 < asagutsu\ ;
+同穴 < douketsu\ ;
+偶像化 < guuzouka\ ;
+補聴器 < hochouki\ ;
+英語劇 < eigogeki\ ;
+釣糸 < tsuriito\ ;
+電算機 < densanki\ ;
+洗熊 < araiguma\ ;
+再吟味 < saiginmi\ ;
+重罰 < juubatsu\ ;
+円錐体 < ensuitai\ ;
+流氷 < ryuuhyou\ ;
+注目 < chuumoku\ ;
+青天井 < aotenjou\ ;
+双脚 < soukyaku\ ;
+浪曲 < roukyoku\ ;
+非戦論 < hisenron\ ;
+未発行 < mihakkou\ ;
+相場師 < soubashi\ ;
+古戦場 < kosenjou\ ;
+三畳紀 < sanjouki\ ;
+好意的 < kouiteki\ ;
+御馳走 < gochisou\ ;
+金縁 < kinbuchi\ ;
+半道 < hanmichi\ ;
+北陸 < hokuriku\ ;
+扶養者 < fuyousha\ ;
+十字軍 < juujigun\ ;
+按手礼 < anshurei\ ;
+同位角 < douikaku\ ;
+原薬 < gen''yaku\ ;
+即諾 < sokudaku\ ;
+活殺 < kassatsu\ ;
+周流 < shuuryuu\ ;
+輪転機 < rintenki\ ;
+稲妻 < inadzuma\ ;
+厭人者 < enjinsha\ ;
+無配当 < muhaitou\ ;
+唐墨 < karasumi\ ;
+富裕税 < fuyuuzei\ ;
+異口同音 < ikudouon\ ;
+釣竿 < tsurizao\ ;
+過労死 < karoushi\ ;
+紅衛兵 < koueihei\ ;
+針箱 < haribako\ ;
+管理者 < kanrisha\ ;
+夜商人 < yoakindo\ ;
+舌下腺 < zekkasen\ ;
+所持品 < shojihin\ ;
+紀行文 < kikoubun\ ;
+火山灰 < kazanbai\ ;
+騎士道 < kishidou\ ;
+剰余金 < jouyokin\ ;
+卓越 < takuetsu\ ;
+豊水期 < housuiki\ ;
+低能児 < teinouji\ ;
+帰納法 < kinouhou\ ;
+獅子座 < shishiza\ ;
+交換器 < koukanki\ ;
+世界人 < sekaijin\ ;
+衛生隊 < eiseitai\ ;
+取組 < torikumi\ ;
+蒲鉾 < kamaboko\ ;
+海抜 < kaibatsu\ ;
+金箱 < kanebako\ ;
+理事長 < rijichou\ ;
+平屋根 < hirayane\ ;
+消息 < shousoku\ ;
+元老院 < genrouin\ ;
+棄権者 < kikensha\ ;
+世界中 < sekaijuu\ ;
+河口港 < kakoukou\ ;
+口笛 < kuchibue\ ;
+原茸 < haratake\ ;
+鴛鴦 < oshidori\ ;
+薬玉 < kusudama\ ;
+不体裁 < futeisai\ ;
+虐待 < gyakutai\ ;
+毒蜘蛛 < dokugumo\ ;
+単語篇 < tangohen\ ;
+黒枠 < kurowaku\ ;
+金穴 < kinketsu\ ;
+生徒数 < seitosuu\ ;
+黒服 < kurofuku\ ;
+羊皮紙 < youhishi\ ;
+勝馬 < kachiuma\ ;
+破鐘 < waregane\ ;
+必要 < hitsuyou\ ;
+混入 < kon''nyuu\ ;
+母系制 < bokeisei\ ;
+展示場 < tenjijou\ ;
+忍術 < ninjutsu\ ;
+厳罰 < genbatsu\ ;
+後遺症 < kouishou\ ;
+流木 < ryuuboku\ ;
+鈍物 < donbutsu\ ;
+引火温度 < inkaondo\ ;
+司直 < shichoku\ ;
+禁欲 < kin''yoku\ ;
+渇仰 < katsugou\ ;
+秩序 < chitsujo\ ;
+卒論 < sotsuron\ ;
+不定詞 < futeishi\ ;
+水蜜 < suimitsu\ ;
+加担者 < katansha\ ;
+石高 < kokudaka\ ;
+陽電気 < youdenki\ ;
+命日 < meinichi\ ;
+復讐 < fukushuu\ ;
+宣伝費 < sendenhi\ ;
+同率 < douritsu\ ;
+惜春 < sekishun\ ;
+劇映画 < gekieiga\ ;
+礼物 < reimotsu\ ;
+短髪 < tanpatsu\ ;
+虚実 < kyojitsu\ ;
+恋着 < renchaku\ ;
+阿古屋貝 < akoyagai\ ;
+遊蕩児 < yuutouji\ ;
+復調 < fukuchou\ ;
+金満家 < kinmanka\ ;
+錠前屋 < joumaeya\ ;
+知名度 < chimeido\ ;
+名物 < meibutsu\ ;
+北進 < hokushin\ ;
+出鱈目 < detarame\ ;
+黄昏 < tasogare\ ;
+懇話会 < konwakai\ ;
+避難民 < hinanmin\ ;
+史略 < shiryaku\ ;
+十字街 < juujigai\ ;
+主演者 < shuensha\ ;
+泥濘 < nukarumi\ ;
+藤棚 < fujidana\ ;
+世俗化 < sezokuka\ ;
+粗製品 < soseihin\ ;
+厳粛 < genshuku\ ;
+鉄棒 < tetsubou\ ;
+鳩麦 < hatomugi\ ;
+右心房 < ushinbou\ ;
+圧制者 < asseisha\ ;
+展示品 < tenjihin\ ;
+鉄梃 < kanateko\ ;
+落魄 < rakuhaku\ ;
+量的 < ryouteki\ ;
+忠良 < chuuryou\ ;
+書記官 < shokikan\ ;
+郷土愛 < kyoudoai\ ;
+貯蔵庫 < chozouko\ ;
+藩札 < hansatsu\ ;
+生真面目 < kimajime\ ;
+下馬評 < gebahyou\ ;
+不能者 < funousha\ ;
+勅願 < chokugan\ ;
+酒蔵 < sakagura\ ;
+勅題 < chokudai\ ;
+不良化 < furyouka\ ;
+薄荷糖 < hakkatou\ ;
+薄荷精 < hakkasei\ ;
+弱震 < jakushin\ ;
+比喩的 < hiyuteki\ ;
+禁札 < kinsatsu\ ;
+争議権 < sougiken\ ;
+重禁錮 < juukinko\ ;
+運動欄 < undouran\ ;
+種別 < shubetsu\ ;
+黒房 < kurobusa\ ;
+農繁期 < nouhanki\ ;
+悦楽 < etsuraku\ ;
+水草 < mizukusa\ ;
+愛子 < itoshigo\ ;
+鉄材 < tetsuzai\ ;
+弦音 < tsuruoto\ ;
+唐傘 < karakasa\ ;
+感受性 < kanjusei\ ;
+麦束 < mugitaba\ ;
+兵器工 < heikikou\ ;
+倪雲林 < geiunrin\ ;
+水茎 < mizuguki\ ;
+運送船 < unsousen\ ;
+憂事 < ureigoto\ ;
+短靴 < tangutsu\ ;
+水苔 < mizugoke\ ;
+遊冶郎 < yuuyarou\ ;
+画仙紙 < gasenshi\ ;
+洋梨 < younashi\ ;
+多段階 < tadankai\ ;
+試験機 < shikenki\ ;
+一般論 < ippanron\ ;
+加算税 < kasanzei\ ;
+残雪 < zansetsu\ ;
+厚紙 < atsugami\ ;
+浴客 < yokkyaku\ ;
+分岐線 < bunkisen\ ;
+喇叭手 < rappashu\ ;
+水船 < mizubune\ ;
+泥沼 < doronuma\ ;
+反発 < hanpatsu\ ;
+神様 < kamisama\ ;
+磨石 < togiishi\ ;
+弁髪 < benpatsu\ ;
+泥水 < doromizu\ ;
+泡沫 < houmatsu\ ;
+免罪符 < menzaifu\ ;
+犬黄楊 < inutsuge\ ;
+神業 < kamiwaza\ ;
+水腹 < mizubara\ ;
+参着 < sanchaku\ ;
+厭世観 < enseikan\ ;
+確約 < kakuyaku\ ;
+水脈 < suimyaku\ ;
+半世紀 < hanseiki\ ;
+酵母菌 < koubokin\ ;
+神棚 < kamidana\ ;
+冷罨法 < reianpou\ ;
+古物 < furumono\ ;
+愛蔵版 < aizouban\ ;
+快絶 < kaizetsu\ ;
+御偉方 < oeragata\ ;
+記数法 < kisuuhou\ ;
+空下手 < karaheta\ ;
+金物 < kanamono\ ;
+神格 < shinkaku\ ;
+禿山 < hageyama\ ;
+十薬 < dokudami\ ;
+不健康 < fukenkou\ ;
+沈痛 < chintsuu\ ;
+急病 < kyuubyou\ ;
+探検家 < tankenka\ ;
+石鏃 < sekizoku\ ;
+大気圏 < taikiken\ ;
+獅子吼 < shishiku\ ;
+税別 < zeibetsu\ ;
+代理権 < dairiken\ ;
+物件費 < bukkenhi\ ;
+黒幕 < kuromaku\ ;
+祝杯 < shukuhai\ ;
+悪擦 < waruzure\ ;
+正規兵 < seikihei\ ;
+再配布 < saihaifu\ ;
+鼻先 < hanasaki\ ;
+神月 < koudzuki\ ;
+民草 < tamigusa\ ;
+四畳半 < yojouhan\ ;
+活弁 < katsuben\ ;
+展示会 < tenjikai\ ;
+大都市 < daitoshi\ ;
+和室 < washitsu\ ;
+先学期 < sengakki\ ;
+悪洒落 < warujare\ ;
+釈然 < shakuzen\ ;
+自民党 < jimintou\ ;
+医療品 < iryouhin\ ;
+内沙汰 < uchizata\ ;
+哲人 < tetsujin\ ;
+福徳 < fukutoku\ ;
+黒山 < kuroyama\ ;
+勿論 < mochiron\ ;
+分光器 < bunkouki\ ;
+怪物 < kaibutsu\ ;
+親不孝 < oyafukou\ ;
+福引 < fukubiki\ ;
+卒者 < sotsusha\ ;
+縁起物 < engimono\ ;
+流星雨 < ryuuseiu\ ;
+原発 < genpatsu\ ;
+割高 < waridaka\ ;
+著述 < chojutsu\ ;
+年貢米 < nengumai\ ;
+厚皮 < atsukawa\ ;
+洗浄器 < senjouki\ ;
+毛虱 < kejirami\ ;
+循環器 < junkanki\ ;
+酒糟 < sakekasu\ ;
+無理矢理 < muriyari\ ;
+健康児 < kenkouji\ ;
+税理士 < zeirishi\ ;
+引金 < hikigane\ ;
+古河 < furukawa\ ;
+人情味 < ninjoumi\ ;
+等語線 < tougosen\ ;
+毒蛇 < dokuhebi\ ;
+十字線 < juujisen\ ;
+不使用 < fushiyou\ ;
+一生面 < isseimen\ ;
+旅行記 < ryokouki\ ;
+鉄床 < kanatoko\ ;
+個体群 < kotaigun\ ;
+名曲 < meikyoku\ ;
+口蓋音 < kougaion\ ;
+同月 < dougetsu\ ;
+圧延機 < atsuenki\ ;
+和声法 < waseihou\ ;
+占算 < urayasan\ ;
+高頻度 < kouhindo\ ;
+小豆色 < azukiiro\ ;
+毒薬 < dokuyaku\ ;
+厳美渓 < genbikei\ ;
+決然 < ketsuzen\ ;
+示威運動 < jiiundou\ ;
+火山弾 < kazandan\ ;
+半諧音 < hankaion\ ;
+情実 < joujitsu\ ;
+秋口 < akiguchi\ ;
+取決 < torikime\ ;
+同日 < doujitsu\ ;
+祭式 < saishiki\ ;
+虐使 < gyakushi\ ;
+沐浴 < mokuyoku\ ;
+鉄山 < tetsuzan\ ;
+求法者 < guhousha\ ;
+火山帯 < kazantai\ ;
+洞察 < dousatsu\ ;
+下駄箱 < getabako\ ;
+道順 < michijun\ ;
+神徳 < shintoku\ ;
+芝海老 < shibaebi\ ;
+大分県 < ooitaken\ ;
+復籍 < fukuseki\ ;
+山羊髭 < yagihige\ ;
+瀬戸際 < setogiwa\ ;
+毒茸 < dokutake\ ;
+延金 < nobegane\ ;
+碌碌 < rokuroku\ ;
+銭亀 < zenigame\ ;
+火山島 < kazantou\ ;
+一夫一婦 < ippuippu\ ;
+歯車 < haguruma\ ;
+不審火 < fushinbi\ ;
+奉仕女 < houshime\ ;
+火山岩 < kazangan\ ;
+引越 < hikkoshi\ ;
+剃髪 < teihatsu\ ;
+忽然 < kotsuzen\ ;
+玉砂利 < tamajari\ ;
+一分半 < ippunhan\ ;
+古株 < furukabu\ ;
+花鳥画 < kachouga\ ;
+無菌法 < mukinhou\ ;
+悄悄 < sugosugo\ ;
+無免許 < mumenkyo\ ;
+待避線 < taihisen\ ;
+硬筆 < kouhitsu\ ;
+年賀状 < nengajou\ ;
+古参者 < kosansha\ ;
+必着 < hitchaku\ ;
+五分五分 < gobugobu\ ;
+古服 < furufuku\ ;
+分岐点 < bunkiten\ ;
+侍従官 < jijuukan\ ;
+内野手 < naiyashu\ ;
+油送管 < yusoukan\ ;
+水瓶 < mizugame\ ;
+誘蛾灯 < yuugatou\ ;
+心的 < shinteki\ ;
+計理士 < keirishi\ ;
+雑貨店 < zakkaten\ ;
+座右銘 < zayuumei\ ;
+吾子 < wagimoko\ ;
+子音性 < shiinsei\ ;
+気短 < kimijika\ ;
+得策 < tokusaku\ ;
+勅裁 < chokusai\ ;
+期待感 < kitaikan\ ;
+適量 < tekiryou\ ;
+心痛 < shintsuu\ ;
+運動家 < undousha\ ;
+金星 < kinboshi\ ;
+愚連隊 < gurentai\ ;
+原子雲 < genshiun\ ;
+代理店 < dairiten\ ;
+弾薬 < dan''yaku\ ;
+水玉 < mizutama\ ;
+禁圧 < kin''atsu\ ;
+徳目 < tokumoku\ ;
+諸器械 < shokikai\ ;
+里方 < satokata\ ;
+法律 < houritsu\ ;
+釈明 < shakumei\ ;
+操舵手 < soudashu\ ;
+出歯亀 < debakame\ ;
+不健全 < fukenzen\ ;
+活動 < katsudou\ ;
+黒円 < kuromaru\ ;
+相補性 < souhosei\ ;
+水物 < mizumono\ ;
+得票 < tokuhyou\ ;
+初期値 < shokichi\ ;
+派出 < hashutsu\ ;
+釈放 < shakuhou\ ;
+接頭辞 < settouji\ ;
+生徒会 < seitokai\ ;
+流入 < ryuunyuu\ ;
+残虐 < zangyaku\ ;
+薬屋 < kusuriya\ ;
+薬局 < yakkyoku\ ;
+硬直 < kouchoku\ ;
+合式 < goushiki\ ;
+神妙 < shinmyou\ ;
+遠道 < toomichi\ ;
+預言者 < yogensha\ ;
+当職 < toushoku\ ;
+底革 < sokogawa\ ;
+薬学 < yakugaku\ ;
+福助 < fukusuke\ ;
+開催日 < kaisaibi\ ;
+胴間声 < doumagoe\ ;
+背番号 < sebangou\ ;
+浮浪者 < furousha\ ;
+会員券 < kaiinken\ ;
+会員制 < kaiinsei\ ;
+毛筆 < mouhitsu\ ;
+英米法 < eibeihou\ ;
+去月 < kyogetsu\ ;
+着駅 < chakueki\ ;
+合理論 < gouriron\ ;
+大部分 < daibubun\ ;
+恐悦 < kyouetsu\ ;
+蔭様 < kagesama\ ;
+神域 < shin''iki\ ;
+千生 < sen''nari\ ;
+薄弱 < hakujaku\ ;
+五角形 < gokakkei\ ;
+中規模 < chuukibo\ ;
+必然 < hitsuzen\ ;
+大都会 < daitokai\ ;
+護送車 < gosousha\ ;
+重手代 < omotedai\ ;
+同局 < doukyoku\ ;
+蒸着 < jouchaku\ ;
+広報部 < kouhoubu\ ;
+半玉 < hangyoku\ ;
+逆風 < gyakufuu\ ;
+分骨 < bunkotsu\ ;
+後鳥羽院 < gotobain\ ;
+幼顔 < osanagao\ ;
+同宿 < doushuku\ ;
+名実 < meijitsu\ ;
+止血 < shiketsu\ ;
+動脈 < doumyaku\ ;
+着順 < chakujun\ ;
+蒸発 < jouhatsu\ ;
+逆順 < gyakujun\ ;
+合宿 < gasshuku\ ;
+劇評 < gekihyou\ ;
+酸欠 < sanketsu\ ;
+後発 < kouhatsu\ ;
+三杯酢 < sanbaizu\ ;
+節炭器 < settanki\ ;
+鉄分 < tetsubun\ ;
+希望者 < kibousha\ ;
+外科学 < gekagaku\ ;
+刑事犯 < keijihan\ ;
+配線図 < haisenzu\ ;
+機械論 < kikairon\ ;
+着電 < chakuden\ ;
+川秋沙 < kawaaisa\ ;
+友成 < tomonari\ ;
+文化圏 < bunkaken\ ;
+接頭語 < settougo\ ;
+水洟 < mizubana\ ;
+事故歴 < jikoreki\ ;
+前述 < zenjutsu\ ;
+割譲 < katsujou\ ;
+山小屋 < yamagoya\ ;
+原曲 < genkyoku\ ;
+糸蜻蛉 < itotonbo\ ;
+十重二十重 < toehatae\ ;
+後産 < nochizan\ ;
+移転先 < itensaki\ ;
+落莫 < rakubaku\ ;
+適評 < tekihyou\ ;
+蓋物 < futamono\ ;
+出馬 < shutsuba\ ;
+水没 < suibotsu\ ;
+御物 < gyobutsu\ ;
+大勲位 < daikun''i\ ;
+当節 < tousetsu\ ;
+吸口 < suikuchi\ ;
+大目玉 < oomedama\ ;
+官公吏 < kankouri\ ;
+悋嗇 < rinshoku\ ;
+協議員 < kyougiin\ ;
+軍事犯 < gunjihan\ ;
+随行員 < zuikouin\ ;
+一辺倒 < ippentou\ ;
+針山 < hariyama\ ;
+取引 < torihiki\ ;
+没年 < botsunen\ ;
+史実 < shijitsu\ ;
+葉脈 < youmyaku\ ;
+台密 < taimitsu\ ;
+現代語 < gendaigo\ ;
+達識 < tasshiki\ ;
+麦作 < mugisaku\ ;
+不導性 < fudousei\ ;
+性悪 < shouwaru\ ;
+理容師 < riyoushi\ ;
+従物 < juubutsu\ ;
+乱高下 < rankouge\ ;
+役畜 < ekichiku\ ;
+凡骨 < bonkotsu\ ;
+金屑 < kanakuzu\ ;
+必殺 < hissatsu\ ;
+古寺 < furudera\ ;
+社交家 < shakouka\ ;
+洛中 < rakuchuu\ ;
+凸面 < totsumen\ ;
+文化史 < bunkashi\ ;
+吸入 < kyuunyuu\ ;
+不用品 < fuyouhin\ ;
+到達 < toutatsu\ ;
+口実 < koujitsu\ ;
+透明度 < toumeido\ ;
+不定法 < futeihou\ ;
+劇薬 < gekiyaku\ ;
+短縮 < tanshuku\ ;
+温排水 < onhaisui\ ;
+冷麦 < hiyamugi\ ;
+祝典 < shukuten\ ;
+出陳 < shutchin\ ;
+航空路 < koukuuro\ ;
+葛籠 < tsudzura\ ;
+資産家 < shisanka\ ;
+類似点 < ruijiten\ ;
+淡水湖 < tansuiko\ ;
+広報課 < kouhouka\ ;
+徳沢 < tokutaku\ ;
+釈尊 < shakuson\ ;
+平鍋 < hiranabe\ ;
+酒樽 < sakadaru\ ;
+弁舌 < benzetsu\ ;
+小人数 < koninzuu\ ;
+愛知県 < aichiken\ ;
+追録 < tsuiroku\ ;
+恋妻 < koidzuma\ ;
+復活 < fukkatsu\ ;
+人造藍 < jinzouai\ ;
+医学者 < igakusha\ ;
+悪感情 < akkanjou\ ;
+恫喝 < doukatsu\ ;
+未処分 < mishobun\ ;
+差配人 < sahainin\ ;
+低頻度 < teihindo\ ;
+作為犯 < sakuihan\ ;
+剣術 < kenjutsu\ ;
+厳律 < genritsu\ ;
+歯科用 < shikayou\ ;
+劫罰 < goubatsu\ ;
+彫琢 < choutaku\ ;
+化物 < bakemono\ ;
+薪割 < makiwari\ ;
+当直 < touchoku\ ;
+再処理 < saishori\ ;
+副虹 < fukuniji\ ;
+花茣蓙 < hanagoza\ ;
+北爆 < hokubaku\ ;
+玄武岩 < genbugan\ ;
+常食 < joushoku\ ;
+鰐鮫 < wanizame\ ;
+注入 < chuunyuu\ ;
+急峻 < kyuushun\ ;
+液状化 < ekijouka\ ;
+無利息 < murisoku\ ;
+陣羽織 < jinbaori\ ;
+鳩胸 < hatomune\ ;
+戦闘機 < sentouki\ ;
+有意的 < yuuiteki\ ;
+店賃 < tanachin\ ;
+問題児 < mondaiji\ ;
+心根 < kokorone\ ;
+冬鳥 < fuyudori\ ;
+協業 < kyougyou\ ;
+債務者 < saimusha\ ;
+凝集 < gyoushuu\ ;
+一騎討 < ikkiuchi\ ;
+補給路 < hokyuuro\ ;
+送達 < soutatsu\ ;
+彫物 < horimono\ ;
+底豆 < sokomame\ ;
+鳥肌 < torihada\ ;
+鳥肉 < toriniku\ ;
+母物 < hahamono\ ;
+形 < katachi\ ;
+轍 < wadachi\ ;
+巷 < chimata\ ;
+跣 < hadashi\ ;
+趣 < omomuki\ ;
+局 < tsubone\ ;
+寧 < mushiro\ ;
+獺 < kawauso\ ;
+狐 < kitsune\ ;
+嫂 < aniyome\ ;
+話 < hanashi\ ;
+燕 < tsubame\ ;
+滴 < shizuku\ ;
+湖 < mizuumi\ ;
+剣 < tsurugi\ ;
+凝 < shikori\ ;
+冠 < kanmuri\ ;
+椿 < tsubaki\ ;
+梟 < fukurou\ ;
+頂 < itadaki\ ;
+柱 < hashira\ ;
+俎 < manaita\ ;
+林 < hayashi\ ;
+侍 < samurai\ ;
+羊 < hitsuji\ ;
+東 < higashi\ ;
+昔 < mukashi\ ;
+経 < tateito\ ;
+錦 < nishiki\ ;
+私 < watashi\ ;
+祭 < matsuri\ ;
+社 < yashiro\ ;
+確 < tashika\ ;
+邸 < yashiki\ ;
+社共 < shakyou\ ;
+心材 < shinzai\ ;
+近間 < chikama\ ;
+去就 < kyoshuu\ ;
+前表 < zenpyou\ ;
+君側 < kunsoku\ ;
+追送 < tsuisou\ ;
+占有 < sen''yuu\ ;
+忌日 < kinichi\ ;
+占書 < urabumi\ ;
+帳面 < choumen\ ;
+直音 < chokuon\ ;
+功績 < kouseki\ ;
+民業 < mingyou\ ;
+薄命 < hakumei\ ;
+席順 < sekijun\ ;
+益鳥 < ekichou\ ;
+沖天 < chuuten\ ;
+下層土 < kasoudo\ ;
+応接 < ousetsu\ ;
+瞠若 < doujaku\ ;
+起動機 < kidouki\ ;
+後流 < kouryuu\ ;
+召喚 < shoukan\ ;
+引算 < hikizan\ ;
+帯革 < obikawa\ ;
+出金 < shukkin\ ;
+十字架 < juujika\ ;
+叫喚 < kyoukan\ ;
+吉凶 < kikkyou\ ;
+重圧 < juuatsu\ ;
+述部 < jutsubu\ ;
+鷲座 < washiza\ ;
+弓箭 < kyuusen\ ;
+分進 < bunshin\ ;
+菩薩 < bosatsu\ ;
+分速 < funsoku\ ;
+水撃 < suigeki\ ;
+沢地 < sawachi\ ;
+切迫 < seppaku\ ;
+南朝 < nanchou\ ;
+人工雨 < jinkouu\ ;
+念念 < nen''nen\ ;
+Ｎ響 < enukyou\ ;
+正続 < seizoku\ ;
+落第 < rakudai\ ;
+釣合 < tsuriai\ ;
+正絹 < shouken\ ;
+餓鬼道 < gakidou\ ;
+厳容 < gen''you\ ;
+進行 < shinkou\ ;
+吉兆 < kitchou\ ;
+不定期 < futeiki\ ;
+動的 < douteki\ ;
+同僚 < douryou\ ;
+正経 < seikyou\ ;
+北満 < hokuman\ ;
+半格 < hankaku\ ;
+通謀 < tsuubou\ ;
+模擬店 < mogiten\ ;
+召命 < shoumei\ ;
+通論 < tsuuron\ ;
+序説 < josetsu\ ;
+泥中 < deichuu\ ;
+底角 < teikaku\ ;
+割興 < warikou\ ;
+徳望 < tokubou\ ;
+急変 < kyuuhen\ ;
+口唇 < koushin\ ;
+鳥網 < toriami\ ;
+恭倹 < kyouken\ ;
+叫号 < kyougou\ ;
+古武道 < kobudou\ ;
+栄養素 < eiyouso\ ;
+刺衝 < shishou\ ;
+幽谷 < yuukoku\ ;
+鄙歌 < hinauta\ ;
+段物 < danmono\ ;
+同信 < doushin\ ;
+石盤 < sekiban\ ;
+死票 < shihyou\ ;
+割腹 < kappuku\ ;
+廐舎 < kyuusha\ ;
+通計 < tsuukei\ ;
+台北 < taihoku\ ;
+勤王 < kin''nou\ ;
+快復 < kaifuku\ ;
+民有 < min''yuu\ ;
+歴程 < rekitei\ ;
+破滅 < hametsu\ ;
+急増 < kyuuzou\ ;
+通解 < tsuukai\ ;
+判読 < handoku\ ;
+重唱 < juushou\ ;
+名作 < meisaku\ ;
+通観 < tsuukan\ ;
+弔祭 < chousai\ ;
+各停 < kakutei\ ;
+恩借 < onshaku\ ;
+史劇 < shigeki\ ;
+北洋 < hokuyou\ ;
+通覧 < tsuuran\ ;
+適者 < tekisha\ ;
+副腎 < fukujin\ ;
+社中 < shachuu\ ;
+追贈 < tsuizou\ ;
+急報 < kyuuhou\ ;
+師長 < shichou\ ;
+刀身 < toushin\ ;
+加筆 < kahitsu\ ;
+去声 < kyoshou\ ;
+名代 < myoudai\ ;
+匡正 < kyousei\ ;
+身勝手 < migatte\ ;
+合作 < gassaku\ ;
+無利子 < murishi\ ;
+従業 < juugyou\ ;
+半時 < hantoki\ ;
+落磐 < rakuban\ ;
+原審 < genshin\ ;
+毒液 < dokueki\ ;
+彼氏 < kareshi\ ;
+帝陵 < teiryou\ ;
+徳政 < tokusei\ ;
+民族 < minzoku\ ;
+遠耳 < toomimi\ ;
+瑠璃色 < ruriiro\ ;
+名主 < nanushi\ ;
+急坂 < kyuuhan\ ;
+初診 < shoshin\ ;
+広角 < koukaku\ ;
+吉事 < kitsuji\ ;
+氏族 < shizoku\ ;
+弔砲 < chouhou\ ;
+建策 < kensaku\ ;
+前葉 < zen''you\ ;
+通行 < tsuukou\ ;
+同一 < douitsu\ ;
+幾許 < ikubaku\ ;
+重厚 < choukou\ ;
+荷送 < niokuri\ ;
+復旧 < fukkyuu\ ;
+胃腸炎 < ichouen\ ;
+没収 < bosshuu\ ;
+廻章 < kaishou\ ;
+博捜 < hakusou\ ;
+知的 < chiteki\ ;
+各人 < kakujin\ ;
+残留 < zanryuu\ ;
+起動時 < kidouji\ ;
+幕軍 < bakugun\ ;
+建立 < konryuu\ ;
+沃地 < yokuchi\ ;
+遊興 < yuukyou\ ;
+復文 < fukubun\ ;
+合一 < gouitsu\ ;
+別表 < beppyou\ ;
+副署 < fukusho\ ;
+受取 < uketori\ ;
+心房 < shinbou\ ;
+古刹 < kosatsu\ ;
+労相 < roushou\ ;
+郭清 < kakusei\ ;
+出走 < shussou\ ;
+幻覚 < genkaku\ ;
+剛腹 < goufuku\ ;
+殺陣師 < tateshi\ ;
+類義語 < ruigigo\ ;
+歯石 < shiseki\ ;
+家計簿 < kakeibo\ ;
+恥丘 < chikyuu\ ;
+全麦 < zenbaku\ ;
+博打 < bakuchi\ ;
+追認 < tsuinin\ ;
+量刑 < ryoukei\ ;
+重刻 < juukoku\ ;
+確守 < kakushu\ ;
+登記簿 < toukibo\ ;
+追試 < tsuishi\ ;
+出資 < shusshi\ ;
+真贋 < shingan\ ;
+気持 < kimochi\ ;
+重母音 < juuboin\ ;
+平角 < heikaku\ ;
+正確 < seikaku\ ;
+追討 < tsuitou\ ;
+毬栗 < igaguri\ ;
+死病 < shibyou\ ;
+共鳴 < kyoumei\ ;
+反収 < tanshuu\ ;
+遅知恵 < osodjie\ ;
+忖度 < sontaku\ ;
+帯金 < obigane\ ;
+荘重 < souchou\ ;
+大過去 < daikako\ ;
+心情 < shinjou\ ;
+匹敵 < hitteki\ ;
+部活 < bukatsu\ ;
+野兎 < nousagi\ ;
+永年 < naganen\ ;
+加算器 < kasanki\ ;
+逆行 < gyakkou\ ;
+大相撲 < oozumou\ ;
+迅速 < jinsoku\ ;
+機能語 < kinougo\ ;
+後書 < atogaki\ ;
+前膊 < zenpaku\ ;
+金側 < kingawa\ ;
+心性 < shinsei\ ;
+述語 < jutsugo\ ;
+碧山 < hekizan\ ;
+沈吟 < chingin\ ;
+有気音 < yuukion\ ;
+前脳 < zen''nou\ ;
+年表 < nenpyou\ ;
+前脚 < maeashi\ ;
+歎称 < tanshou\ ;
+出講 < shukkou\ ;
+不条理 < fujouri\ ;
+刺草 < irakusa\ ;
+千振 < senburi\ ;
+心得 < kokoroe\ ;
+恒久 < koukyuu\ ;
+只今 < tadaima\ ;
+反則 < hansoku\ ;
+口供 < koukyou\ ;
+強火 < tsuyobi\ ;
+恋仲 < koinaka\ ;
+死球 < shikyuu\ ;
+助番 < sukeban\ ;
+後日 < gonichi\ ;
+配役 < haiyaku\ ;
+恋人 < koibito\ ;
+大道具 < oodougu\ ;
+定位置 < teiichi\ ;
+怪力 < kairiki\ ;
+征服 < seifuku\ ;
+母様 < kaasama\ ;
+真諦 < shintei\ ;
+弱点 < jakuten\ ;
+連荘 < renchan\ ;
+円顔 < marugao\ ;
+盲進 < moushin\ ;
+忠孝 < chuukou\ ;
+鳥瞰 < choukan\ ;
+幼虫 < youchuu\ ;
+落球 < rakkyuu\ ;
+巨額 < kyogaku\ ;
+割算 < warizan\ ;
+運送屋 < unsouya\ ;
+造営費 < zoueihi\ ;
+反共 < hankyou\ ;
+残照 < zanshou\ ;
+北東 < hokutou\ ;
+逸聞 < itsubun\ ;
+酒席 < shuseki\ ;
+石炭 < sekitan\ ;
+氷山 < hyouzan\ ;
+引率 < insotsu\ ;
+延着 < enchaku\ ;
+氷屋 < kooriya\ ;
+危局 < kikyoku\ ;
+蒙古語 < moukogo\ ;
+凸角 < tokkaku\ ;
+目送 < mokusou\ ;
+機械科 < kikaika\ ;
+直輸 < chokuyu\ ;
+砕氷 < saihyou\ ;
+真言 < shingon\ ;
+建白 < kenpaku\ ;
+武略 < buryaku\ ;
+性分 < shoubun\ ;
+冗長 < jouchou\ ;
+確報 < kakuhou\ ;
+座職 < zashoku\ ;
+口中 < kouchuu\ ;
+冷酷 < reikoku\ ;
+次年度 < jinendo\ ;
+殴殺 < ousatsu\ ;
+入魂 < nyuukon\ ;
+志学 < shigaku\ ;
+多重化 < tajuuka\ ;
+往日 < oujitsu\ ;
+求婚 < kyuukon\ ;
+延発 < enpatsu\ ;
+千代女 < chiyojo\ ;
+真西 < manishi\ ;
+古社寺 < koshaji\ ;
+弓状 < kyuujou\ ;
+醜名 < shuumei\ ;
+民心 < minshin\ ;
+権高 < kendaka\ ;
+一層目 < issoume\ ;
+民徳 < mintoku\ ;
+反俗 < hanzoku\ ;
+決勝 < kesshou\ ;
+内陸 < nairiku\ ;
+直路 < chokuro\ ;
+適確 < tekkaku\ ;
+茶釜 < chagama\ ;
+娑婆気 < shabake\ ;
+辛酸 < shinsan\ ;
+希釈 < kishaku\ ;
+凶行 < kyoukou\ ;
+毎朝 < maichou\ ;
+白鯨 < hakugei\ ;
+半弓 < hankyuu\ ;
+励磁機 < reijiki\ ;
+不首尾 < fushubi\ ;
+初荷 < hatsuni\ ;
+北支 < hokushi\ ;
+悪感化 < akkanka\ ;
+待避所 < taihijo\ ;
+内閲 < naietsu\ ;
+内閣 < naikaku\ ;
+配属 < haizoku\ ;
+蔵匿 < zoutoku\ ;
+師走 < shiwasu\ ;
+沈倫 < chinrin\ ;
+酒客 < shukaku\ ;
+比日 < hinichi\ ;
+原告 < genkoku\ ;
+四股名 < shikona\ ;
+白魚 < shirauo\ ;
+半年 < han''nen\ ;
+運筆 < unpitsu\ ;
+鷹匠 < takajou\ ;
+歴然 < rekizen\ ;
+不人気 < funinki\ ;
+公領 < kouryou\ ;
+近親 < kinshin\ ;
+急使 < kyuushi\ ;
+剽盗 < hyoutou\ ;
+幼若 < youjaku\ ;
+西欧化 < seiouka\ ;
+全額 < zengaku\ ;
+標高 < hyoukou\ ;
+即売 < sokubai\ ;
+二階屋 < nikaiya\ ;
+千度 < chitabi\ ;
+強気 < tsuyoki\ ;
+棒暗記 < bouanki\ ;
+庁舎 < chousha\ ;
+劇界 < gekikai\ ;
+千年 < chitose\ ;
+不一致 < fuitchi\ ;
+血反吐 < chihedo\ ;
+劇甚 < gekijin\ ;
+横顔 < yokogao\ ;
+曳火弾 < eikadan\ ;
+勧業 < kangyou\ ;
+凝視 < gyoushi\ ;
+刺繍 < shishuu\ ;
+瞠目 < doumoku\ ;
+再録 < sairoku\ ;
+真虫 < mamushi\ ;
+鳥獣 < choujuu\ ;
+徹宵 < tesshou\ ;
+卑屈 < hikutsu\ ;
+加熱 < kanetsu\ ;
+簡素化 < kansoka\ ;
+個体差 < kotaisa\ ;
+再鋳 < saichuu\ ;
+氷塊 < hyoukai\ ;
+同音語 < douongo\ ;
+卒寿 < sotsuju\ ;
+強欲 < gouyoku\ ;
+協定 < kyoutei\ ;
+兵長 < heichou\ ;
+酌婦 < shakufu\ ;
+砲撃 < hougeki\ ;
+気密 < kimitsu\ ;
+選球 < senkyuu\ ;
+原則 < gensoku\ ;
+共闘 < kyoutou\ ;
+乗務員 < joumuin\ ;
+直諫 < chokkan\ ;
+裏木戸 < urakido\ ;
+発馬 < hatsuba\ ;
+刺絡 < shiraku\ ;
+全集 < zenshuu\ ;
+卓子 < teiburu\ ;
+直談 < jikidan\ ;
+入電 < nyuuden\ ;
+前章 < zenshou\ ;
+石段 < ishidan\ ;
+武烈 < buretsu\ ;
+直話 < chokuwa\ ;
+磁力 < jiryoku\ ;
+水垢 < mizuaka\ ;
+平臼 < hirausu\ ;
+役所 < yakusho\ ;
+適用 < tekiyou\ ;
+連続 < renzoku\ ;
+卵嚢 < ran''nou\ ;
+氏寺 < ujidera\ ;
+入隊 < nyuutai\ ;
+心外 < shingai\ ;
+金毘羅 < konpira\ ;
+半宵 < hanshou\ ;
+連絡 < renraku\ ;
+制約 < seiyaku\ ;
+瞑目 < meimoku\ ;
+力点 < rikiten\ ;
+水圧 < suiatsu\ ;
+幻聴 < genchou\ ;
+標題 < hyoudai\ ;
+氷嚢 < hyounou\ ;
+念力 < nenriki\ ;
+無造作 < muzousa\ ;
+直覧 < jikiran\ ;
+千尋 < chihiro\ ;
+全長 < zenchou\ ;
+博大 < hakudai\ ;
+十二時 < juuniji\ ;
+落涙 < rakurui\ ;
+内金 < uchikin\ ;
+登頂 < touchou\ ;
+盗賊 < touzoku\ ;
+博士 < hakushi\ ;
+意想外 < isougai\ ;
+不安定 < fuantei\ ;
+発音 < hatsuon\ ;
+入門 < nyuumon\ ;
+毒手 < dokushu\ ;
+石橋 < sekkyou\ ;
+真菌 < shinkin\ ;
+白面 < hakumen\ ;
+徹夜 < tetsuya\ ;
+陰電気 < indenki\ ;
+石槨 < sekkaku\ ;
+切腹 < seppuku\ ;
+忠君 < chuukun\ ;
+薄馬鹿 < usubaka\ ;
+蔵人 < kuroudo\ ;
+年老 < toshioi\ ;
+苔類 < kokerui\ ;
+丁字路 < teijiro\ ;
+発露 < hatsuro\ ;
+兇類 < kyourui\ ;
+途絶 < tozetsu\ ;
+直行 < chokkou\ ;
+力漕 < rikisou\ ;
+占地 < shimeji\ ;
+心地 < kokochi\ ;
+提示部 < teijibu\ ;
+先頃 < senkoro\ ;
+死毒 < shidoku\ ;
+慰問品 < imonhin\ ;
+府立 < furitsu\ ;
+原作 < gensaku\ ;
+印哲 < intetsu\ ;
+冷評 < reihyou\ ;
+心因 < shin''in\ ;
+速算 < sokusan\ ;
+厄前 < yakumae\ ;
+残業 < zangyou\ ;
+荒行 < aragyou\ ;
+内通 < naitsuu\ ;
+親文字 < oyamoji\ ;
+勝景 < shoukei\ ;
+瞭然 < ryouzen\ ;
+従属 < juuzoku\ ;
+弦楽 < gengaku\ ;
+劃然 < kakuzen\ ;
+即吟 < sokugin\ ;
+千姫 < senhime\ ;
+忠勤 < chuukin\ ;
+忠勇 < chuuyuu\ ;
+理財家 < rizaika\ ;
+冷覚 < reikaku\ ;
+通算 < tsuusan\ ;
+逆縁 < gyakuen\ ;
+有耶無耶 < uyamuya\ ;
+稽古日 < keikobi\ ;
+初級 < shokyuu\ ;
+毒性 < dokusei\ ;
+巡遊 < jun''yuu\ ;
+従容 < shouyou\ ;
+南国 < nangoku\ ;
+二塁打 < niruida\ ;
+強暴 < kyoubou\ ;
+幕舎 < bakusha\ ;
+氷原 < hyougen\ ;
+平織 < hiraori\ ;
+応力 < ouryoku\ ;
+勝敗 < shouhai\ ;
+手相見 < tesoumi\ ;
+求刑 < kyuukei\ ;
+夜盗蛾 < yotouga\ ;
+巻貝 < makigai\ ;
+式次 < shikiji\ ;
+写象 < shashou\ ;
+女性美 < joseibi\ ;
+残柱 < zanchuu\ ;
+石材 < sekizai\ ;
+風邪声 < kazegoe\ ;
+厭世家 < enseika\ ;
+邦楽 < hougaku\ ;
+剣玉 < kendama\ ;
+北嶺 < hokurei\ ;
+年給 < nenkyuu\ ;
+全量 < zenryou\ ;
+後学 < kougaku\ ;
+還流 < kanryuu\ ;
+即刻 < sokkoku\ ;
+凶聞 < kyoubun\ ;
+民国 < minkoku\ ;
+入金 < nyuukin\ ;
+剛球 < goukyuu\ ;
+熨斗目 < noshime\ ;
+半国 < hangoku\ ;
+永別 < eibetsu\ ;
+酷使 < kokushi\ ;
+快作 < kaisaku\ ;
+印刷 < insatsu\ ;
+追納 < tsuinou\ ;
+氷刃 < hyoujin\ ;
+陰謀家 < inbouka\ ;
+六道 < rokudou\ ;
+北岸 < hokugan\ ;
+送籍 < souseki\ ;
+別称 < besshou\ ;
+随意筋 < zuiikin\ ;
+庭番 < niwaban\ ;
+農薬 < nouyaku\ ;
+遊猟 < yuuryou\ ;
+登録 < touroku\ ;
+占卜 < senboku\ ;
+手加減 < tekagen\ ;
+讚美歌 < sanbika\ ;
+葉月 < hadzuki\ ;
+巨賊 < kyozoku\ ;
+華燭 < kashoku\ ;
+当惑 < touwaku\ ;
+分納 < bun''nou\ ;
+初穂 < hatsuho\ ;
+必勝 < hisshou\ ;
+白銑 < hakusen\ ;
+全速 < zensoku\ ;
+入選 < nyuusen\ ;
+全通 < zentsuu\ ;
+白銅 < hakudou\ ;
+白銀 < hakugin\ ;
+入道 < nyuudou\ ;
+邪曲 < jakyoku\ ;
+卜占 < bokusen\ ;
+同位体 < douitai\ ;
+工賃 < kouchin\ ;
+氷像 < hyouzou\ ;
+類音語 < ruiongo\ ;
+遊牧 < yuuboku\ ;
+週番 < shuuban\ ;
+心労 < shinrou\ ;
+初秋 < shoshuu\ ;
+幾程 < ikuhodo\ ;
+残敵 < zanteki\ ;
+通研 < tsuuken\ ;
+協同 < kyoudou\ ;
+平等 < byoudou\ ;
+叉手網 < sadeami\ ;
+即値 < sokuchi\ ;
+通知 < tsuuchi\ ;
+療養 < ryouyou\ ;
+年端 < toshiha\ ;
+庭球 < teikyuu\ ;
+殉教 < junkyou\ ;
+歌沢 < utazawa\ ;
+勁敵 < keiteki\ ;
+再調 < saichou\ ;
+再読 < saidoku\ ;
+求人 < kyuujin\ ;
+功業 < kougyou\ ;
+色黒 < iroguro\ ;
+南北 < nanboku\ ;
+小綬鶏 < kojukei\ ;
+博労 < bakurou\ ;
+晴雨計 < seiukei\ ;
+文庫化 < bunkoka\ ;
+破局 < hakyoku\ ;
+正業 < seigyou\ ;
+野次馬 < yajiuma\ ;
+帯芯 < obishin\ ;
+半周 < hanshuu\ ;
+遡源 < sakugen\ ;
+全身 < zenshin\ ;
+毒害 < dokugai\ ;
+街路樹 < gairoju\ ;
+内諾 < naidaku\ ;
+幸福 < koufuku\ ;
+勤恪 < kinkaku\ ;
+出精 < shussei\ ;
+復命 < fukumei\ ;
+若造 < wakazou\ ;
+店番 < miseban\ ;
+魍魎 < mouryou\ ;
+控訴院 < kousoin\ ;
+適法 < tekihou\ ;
+優長 < yuuchou\ ;
+忙中 < bouchuu\ ;
+卑劣 < hiretsu\ ;
+利発 < rihatsu\ ;
+仙人掌 < saboten\ ;
+復号 < fukugou\ ;
+心像 < shinzou\ ;
+連用 < ren''you\ ;
+気力 < kiryoku\ ;
+段平 < danbira\ ;
+共販 < kyouhan\ ;
+内証 < naishou\ ;
+内診 < naishin\ ;
+削片 < sakuhen\ ;
+復原 < fukugen\ ;
+発進 < hasshin\ ;
+弔文 < choubun\ ;
+北天 < hokuten\ ;
+北大 < hokudai\ ;
+元金 < motokin\ ;
+若輩 < jakuhai\ ;
+益虫 < ekichuu\ ;
+徳利 < tokkuri\ ;
+勁捷 < keishou\ ;
+必修 < hisshuu\ ;
+盲腸 < mouchou\ ;
+徳分 < tokubun\ ;
+蒸器 < mushiki\ ;
+微力 < biryoku\ ;
+匿名 < tokumei\ ;
+庵点 < ioriten\ ;
+延棒 < nobebou\ ;
+常習 < joushuu\ ;
+制球 < seikyuu\ ;
+分秒 < funbyou\ ;
+歓楽 < kanraku\ ;
+水中 < suichuu\ ;
+部局 < bukyoku\ ;
+凍肉 < touniku\ ;
+通用 < tsuuyou\ ;
+草色 < kusairo\ ;
+北境 < hokkyou\ ;
+魂魄 < konpaku\ ;
+徴兵 < chouhei\ ;
+配信 < haishin\ ;
+逗留 < touryuu\ ;
+適正 < tekisei\ ;
+正朝 < seichou\ ;
+正朔 < seisaku\ ;
+凄腕 < sugoude\ ;
+光速 < kousoku\ ;
+勘忍 < kan''nin\ ;
+先進 < senshin\ ;
+先週 < senshuu\ ;
+入貢 < nyuukou\ ;
+酒代 < sakadai\ ;
+白身 < shiromi\ ;
+巫術 < fujutsu\ ;
+速球 < sokkyuu\ ;
+返納 < hen''nou\ ;
+復刻 < fukkoku\ ;
+軽震 < keishin\ ;
+荒肝 < aragimo\ ;
+出穂 < shussui\ ;
+引換 < hikikae\ ;
+輻輳 < fukusou\ ;
+欲求 < yokkyuu\ ;
+延板 < nobeita\ ;
+真空 < shinkuu\ ;
+眼目 < ganmoku\ ;
+引接 < insetsu\ ;
+色魔 < shikima\ ;
+必中 < hitchuu\ ;
+輪郭 < rinkaku\ ;
+義援金 < gienkin\ ;
+単作 < tansaku\ ;
+省線 < shousen\ ;
+弾幕 < danmaku\ ;
+年益 < nen''eki\ ;
+復党 < fukutou\ ;
+光軸 < koujiku\ ;
+廿日 < hatsuka\ ;
+弱志 < jakushi\ ;
+北国 < hokkoku\ ;
+強弁 < kyouben\ ;
+還暦 < kanreki\ ;
+励振 < reishin\ ;
+辞色 < jishoku\ ;
+出社 < shussha\ ;
+草肥 < kusagoe\ ;
+利率 < riritsu\ ;
+発足 < hossoku\ ;
+公評 < kouhyou\ ;
+公証 < koushou\ ;
+十六 < juuroku\ ;
+別珍 < betchin\ ;
+協会 < kyoukai\ ;
+俯瞰図 < fukanzu\ ;
+御新香 < oshinko\ ;
+亜米利加 < amerika\ ;
+区別 < kubetsu\ ;
+千億 < sen''oku\ ;
+気位 < kigurai\ ;
+御家人 < gokenin\ ;
+弱弟 < jakutei\ ;
+共襟 < tomoeri\ ;
+眼病 < ganbyou\ ;
+六角 < rokkaku\ ;
+卒伍 < sotsugo\ ;
+大寺院 < daijiin\ ;
+殯宮 < hinkyuu\ ;
+研学 < kengaku\ ;
+残念 < zan''nen\ ;
+荷積 < nidzumi\ ;
+南中 < nanchuu\ ;
+冷肉 < reiniku\ ;
+落手 < rakushu\ ;
+相続 < souzoku\ ;
+残忍 < zan''nin\ ;
+気付 < kidzuke\ ;
+入試 < nyuushi\ ;
+残心 < zanshin\ ;
+烏羽玉 < ubatama\ ;
+創業 < sougyou\ ;
+凡策 < bonsaku\ ;
+勉強 < benkyou\ ;
+共裏 < tomoura\ ;
+後厄 < atoyaku\ ;
+落成 < rakusei\ ;
+全角 < zenkaku\ ;
+弱年 < jakunen\ ;
+勧学 < kangaku\ ;
+半作 < hansaku\ ;
+庶流 < shoryuu\ ;
+性行為 < seikoui\ ;
+歴戦 < rekisen\ ;
+一般化 < ippanka\ ;
+川蝦 < kawaebi\ ;
+歌曲 < kakyoku\ ;
+待合 < machiai\ ;
+帰結 < kiketsu\ ;
+石庭 < sekitei\ ;
+卒中 < sotchuu\ ;
+卓上 < takujou\ ;
+充足 < juusoku\ ;
+茶腹 < chabara\ ;
+免責 < menseki\ ;
+荒縄 < aranawa\ ;
+僻隅 < hekiguu\ ;
+劇暑 < gekisho\ ;
+直経 < chokkei\ ;
+十五夜 < juugoya\ ;
+目縁 < mabuchi\ ;
+僻陬 < hekisuu\ ;
+遍歴 < henreki\ ;
+帯紙 < obigami\ ;
+干瓢 < kanpyou\ ;
+償金 < shoukin\ ;
+氏人 < ujihito\ ;
+知徳 < chitoku\ ;
+遊歴 < yuureki\ ;
+二院制 < niinsei\ ;
+公衆 < koushuu\ ;
+先負 < senmake\ ;
+眼球 < gankyuu\ ;
+帽章 < boushou\ ;
+近称 < kinshou\ ;
+発議 < hatsugi\ ;
+出監 < shukkan\ ;
+送球 < soukyuu\ ;
+家政婦 < kaseifu\ ;
+良風 < ryoufuu\ ;
+分留 < bunryuu\ ;
+勘審 < kanshin\ ;
+適材 < tekizai\ ;
+邀撃 < yougeki\ ;
+連濁 < rendaku\ ;
+第二義 < dainigi\ ;
+歿後 < botsugo\ ;
+円軌道 < enkidou\ ;
+真相 < shinsou\ ;
+真直 < massugu\ ;
+役名 < yakumei\ ;
+従僕 < juuboku\ ;
+道楽 < douraku\ ;
+瞬断 < shundan\ ;
+野葡萄 < nobudou\ ;
+発語 < hatsugo\ ;
+勧奨 < kanshou\ ;
+力投 < rikitou\ ;
+刑獄 < keigoku\ ;
+百計 < hyakkei\ ;
+千両 < senryou\ ;
+後先 < atosaki\ ;
+十九 < juukyuu\ ;
+発話 < hatsuwa\ ;
+北半 < hokuhan\ ;
+廃業 < haigyou\ ;
+発註 < hatchuu\ ;
+十両 < juuryou\ ;
+力戦 < rikisen\ ;
+十七 < juunana\ ;
+十一 < juuichi\ ;
+引当 < hikiate\ ;
+逸民 < itsumin\ ;
+律儀 < richigi\ ;
+応募者 < oubosha\ ;
+前歴 < zenreki\ ;
+副本 < fukuhon\ ;
+艱難 < kan''nan\ ;
+麻実油 < asamiyu\ ;
+茶飯事 < sahanji\ ;
+式微 < shikibi\ ;
+遊楽 < yuuraku\ ;
+軽量 < keiryou\ ;
+軽重 < keichou\ ;
+目算 < mokusan\ ;
+出産 < shussan\ ;
+発覚 < hakkaku\ ;
+進水 < shinsui\ ;
+八重雲 < yaeguma\ ;
+欲望 < yokubou\ ;
+勇将 < yuushou\ ;
+盟約 < meiyaku\ ;
+相称 < soushou\ ;
+彼処 < kashiko\ ;
+矮小 < waishou\ ;
+睫毛 < matsuge\ ;
+邸宅 < teitaku\ ;
+目端 < mehashi\ ;
+勉学 < bengaku\ ;
+鯨肉 < geiniku\ ;
+優越 < yuuetsu\ ;
+百行 < hyakkou\ ;
+近眼 < chikame\ ;
+菌毒 < kindoku\ ;
+歴年 < rekinen\ ;
+未踏査 < mitousa\ ;
+弓師 < yumishi\ ;
+先覚 < senkaku\ ;
+後作 < atosaku\ ;
+巨舶 < kyohaku\ ;
+底流 < teiryuu\ ;
+絵葉書 < ehagaki\ ;
+発表 < happyou\ ;
+選択 < sentaku\ ;
+欠格 < kekkaku\ ;
+共著 < kyoucho\ ;
+稽古場 < keikoba\ ;
+広漠 < koubaku\ ;
+草笛 < kusabue\ ;
+勝報 < shouhou\ ;
+初潮 < shochou\ ;
+助平 < sukebei\ ;
+安全期 < anzenki\ ;
+強大 < kyoudai\ ;
+反意語 < han''igo\ ;
+輪読 < rindoku\ ;
+知将 < chishou\ ;
+内膜 < naimaku\ ;
+強壮 < kyousou\ ;
+役僧 < yakusou\ ;
+個人差 < kojinsa\ ;
+劇戦 < gekisen\ ;
+総務部 < soumubu\ ;
+毒刃 < dokujin\ ;
+白蝋 < hakurou\ ;
+帆綱 < hodzuna\ ;
+軍長 < gunchou\ ;
+力役 < rikieki\ ;
+警部補 < keibuho\ ;
+冷笑 < reishou\ ;
+与太郎 < yotarou\ ;
+茶粥 < chagayu\ ;
+廻心 < kaishin\ ;
+看病 < kanbyou\ ;
+目礼 < mokurei\ ;
+輸血 < yuketsu\ ;
+位牌堂 < ihaidou\ ;
+勝地 < shouchi\ ;
+初湯 < hatsuyu\ ;
+義太夫 < gidayuu\ ;
+凶猛 < kyoumou\ ;
+三鞭酒 < shanpen\ ;
+艦長 < kanchou\ ;
+妃殿下 < hidenka\ ;
+凍石 < touseki\ ;
+制欲 < seiyoku\ ;
+出版 < shuppan\ ;
+弟嫁 < otoyome\ ;
+凶状 < kyoujou\ ;
+樺色 < kabairo\ ;
+退潮 < taichou\ ;
+砂地 < sunachi\ ;
+道教 < doukyou\ ;
+漫画家 < mangaka\ ;
+過日 < kajitsu\ ;
+転針 < tenshin\ ;
+茶箱 < chabako\ ;
+帰着 < kichaku\ ;
+適所 < tekisho\ ;
+僻邑 < hekiyuu\ ;
+不本意 < fuhon''i\ ;
+歎息 < tansoku\ ;
+苛虐 < kagyaku\ ;
+歩合算 < buaizan\ ;
+彫像 < chouzou\ ;
+語彙的 < goiteki\ ;
+石塔 < sekitou\ ;
+返球 < henkyuu\ ;
+石塀 < ishibei\ ;
+弟姫 < otohime\ ;
+利殖 < rishoku\ ;
+役人 < yakunin\ ;
+辱知 < jokuchi\ ;
+勧告 < kankoku\ ;
+盲目 < moumoku\ ;
+痛風 < tsuufuu\ ;
+逸材 < itsuzai\ ;
+第一課 < daiikka\ ;
+出炭 < shuttan\ ;
+弱国 < jakkoku\ ;
+荷物 < nimotsu\ ;
+北上 < hokujou\ ;
+井戸端 < idobata\ ;
+副手 < fukushu\ ;
+剽悍 < hyoukan\ ;
+色里 < irozato\ ;
+理事会 < rijikai\ ;
+盤石 < banjaku\ ;
+農相 < noushou\ ;
+遊撃 < yuugeki\ ;
+火曜日 < kayoubi\ ;
+入舎 < nyuusha\ ;
+御不浄 < gofujou\ ;
+逐次 < chikuji\ ;
+辺疆 < henkyou\ ;
+前方 < maekata\ ;
+白菜 < hakusai\ ;
+未定義 < miteigi\ ;
+割愛 < katsuai\ ;
+監督 < kantoku\ ;
+躁鬱 < souutsu\ ;
+楽隊 < gakutai\ ;
+殉国 < junkoku\ ;
+逆比 < gyakuhi\ ;
+対位法 < taiihou\ ;
+冥福 < meifuku\ ;
+睦月 < mutsuki\ ;
+刻本 < kokuhon\ ;
+正子 < shoushi\ ;
+幽欝 < yuuutsu\ ;
+殺傷 < sasshou\ ;
+浮浪児 < furouji\ ;
+婦人科 < fujinka\ ;
+内約 < naiyaku\ ;
+強味 < tsuyomi\ ;
+剣戟 < kengeki\ ;
+返照 < henshou\ ;
+艇長 < teichou\ ;
+他世界 < tasekai\ ;
+適当 < tekitou\ ;
+慰労金 < iroukin\ ;
+権能 < ken''nou\ ;
+正嫡 < seiteki\ ;
+欲情 < yokujou\ ;
+座敷 < zashiki\ ;
+楼閣 < roukaku\ ;
+分注 < bunchuu\ ;
+包丁 < houchou\ ;
+発芽 < hatsuga\ ;
+進数 < shinsuu\ ;
+理不尽 < rifujin\ ;
+百般 < hyappan\ ;
+出渠 < shukkyo\ ;
+単坐機 < tanzaki\ ;
+落城 < rakujou\ ;
+割当 < wariate\ ;
+欲念 < yokunen\ ;
+樟脳 < shounou\ ;
+不飽和 < fuhouwa\ ;
+近火 < chikabi\ ;
+別格 < bekkaku\ ;
+疾風 < shippuu\ ;
+落地 < rakuchi\ ;
+共編 < kyouhen\ ;
+此奴 < koyatsu\ ;
+盗癖 < touheki\ ;
+船長 < senchou\ ;
+代議員 < daigiin\ ;
+研修 < kenshuu\ ;
+刷新 < sasshin\ ;
+非合理 < higouri\ ;
+殿中 < denchuu\ ;
+強力 < gouriki\ ;
+序曲 < jokyoku\ ;
+総務課 < soumuka\ ;
+床板 < yukaita\ ;
+通有 < tsuuyuu\ ;
+兵糧 < hyourou\ ;
+盆石 < bonseki\ ;
+欣悦 < kinetsu\ ;
+典籍 < tenseki\ ;
+道徳 < doutoku\ ;
+病難 < byounan\ ;
+力士 < rikishi\ ;
+椰子油 < yashiyu\ ;
+車輛 < sharyou\ ;
+兵籍 < heiseki\ ;
+速断 < sokudan\ ;
+車軸 < shajiku\ ;
+内積 < naiseki\ ;
+剣形 < kengata\ ;
+荒物 < aramono\ ;
+盲爆 < moubaku\ ;
+僻論 < hekiron\ ;
+強兵 < kyouhei\ ;
+公約 < kouyaku\ ;
+段丘 < dankyuu\ ;
+農牧 < nouboku\ ;
+入綿 < irewata\ ;
+水泳着 < suieigi\ ;
+横線 < yokosen\ ;
+白羽 < shiraha\ ;
+峻険 < shunken\ ;
+巫祝 < fushuku\ ;
+軸装 < jikusou\ ;
+監獄 < kangoku\ ;
+別時 < betsuji\ ;
+弔問 < choumon\ ;
+全級 < zenkyuu\ ;
+内福 < naifuku\ ;
+写真 < shashin\ ;
+凝滞 < gyoutai\ ;
+道床 < doushou\ ;
+殊勝 < shushou\ ;
+軍足 < gunsoku\ ;
+僻言 < hekigen\ ;
+絵草紙 < ezoushi\ ;
+剣幕 < kenmaku\ ;
+凶歳 < kyousai\ ;
+剛強 < goukyou\ ;
+分業 < bungyou\ ;
+転調 < tenchou\ ;
+歌姫 < utahime\ ;
+遠山 < tooyama\ ;
+横糸 < yokoito\ ;
+次式 < jishiki\ ;
+遊弋 < yuuyoku\ ;
+遺失 < ishitsu\ ;
+選奨 < senshou\ ;
+僻見 < hekiken\ ;
+花葵 < hanaaoi\ ;
+落命 < rakumei\ ;
+遊廓 < yuukaku\ ;
+樹立 < juritsu\ ;
+魔術 < majutsu\ ;
+凡流 < bonryuu\ ;
+舌音 < zetsuon\ ;
+初日 < hatsuhi\ ;
+引受 < hikiuke\ ;
+劇変 < gekihen\ ;
+建国 < kenkoku\ ;
+短冊 < tanzaku\ ;
+石像 < sekizou\ ;
+督戦 < tokusen\ ;
+眺望 < choubou\ ;
+劇壇 < gekidan\ ;
+近況 < kinkyou\ ;
+欠席 < kesseki\ ;
+巨石 < kyoseki\ ;
+歴史 < rekishi\ ;
+平服 < heifuku\ ;
+転覆 < tenpuku\ ;
+機略 < kiryaku\ ;
+小犬座 < koinuza\ ;
+劇場 < gekijou\ ;
+身近 < midjika\ ;
+逆旅 < gekiryo\ ;
+身辺 < shinpen\ ;
+分析 < bunseki\ ;
+弱体 < jakutai\ ;
+横笛 < yokobue\ ;
+発給 < hakkyuu\ ;
+軽薄 < keihaku\ ;
+引力 < inryoku\ ;
+円盆 < marubon\ ;
+赤味噌 < akamiso\ ;
+著作 < chosaku\ ;
+痩身 < soushin\ ;
+花色 < hanairo\ ;
+速成 < sokusei\ ;
+左直 < sachoku\ ;
+前年 < zen''nen\ ;
+送料 < souryou\ ;
+鱗木 < rinboku\ ;
+白粉 < oshiroi\ ;
+内的 < naiteki\ ;
+苦節 < kusetsu\ ;
+白米 < hakumai\ ;
+短信 < tanshin\ ;
+横穴 < yokoana\ ;
+極道 < gokudou\ ;
+対義語 < taigigo\ ;
+眷族 < kenzoku\ ;
+道学 < dougaku\ ;
+側面 < sokumen\ ;
+幣束 < heisoku\ ;
+助勢 < sukezei\ ;
+功名 < koumyou\ ;
+艇身 < teishin\ ;
+汚染菌 < osenkin\ ;
+過密 < kamitsu\ ;
+三日路 < mikkaji\ ;
+努力 < doryoku\ ;
+居酒屋 < izakaya\ ;
+庭師 < niwashi\ ;
+骨骼 < kokkaku\ ;
+助力 < joryoku\ ;
+追放 < tsuihou\ ;
+自家製 < jikasei\ ;
+遊学 < yuugaku\ ;
+歳入 < sainyuu\ ;
+鳩合 < kyuugou\ ;
+欠字 < ketsuji\ ;
+塗布剤 < tofuzai\ ;
+正北 < seihoku\ ;
+傷跡 < kizuato\ ;
+武力 < buryoku\ ;
+適地 < tekichi\ ;
+功力 < kouriki\ ;
+古典語 < kotengo\ ;
+荒波 < aranami\ ;
+近業 < kingyou\ ;
+真書 < shinsho\ ;
+庵室 < anjitsu\ ;
+共益 < kyoueki\ ;
+通性 < tsuusei\ ;
+正則 < seisoku\ ;
+鬱血 < ukketsu\ ;
+兼用 < ken''you\ ;
+労作 < rousaku\ ;
+通念 < tsuunen\ ;
+凋残 < chouzan\ ;
+不景気 < fukeiki\ ;
+冷涼 < reiryou\ ;
+軽舟 < keishuu\ ;
+落体 < rakutai\ ;
+連年 < ren''nen\ ;
+切換 < kirikae\ ;
+痕跡 < konseki\ ;
+合理化 < gourika\ ;
+干拓 < kantaku\ ;
+死人 < shibito\ ;
+公的 < kouteki\ ;
+建前 < tatemae\ ;
+切掛 < kikkake\ ;
+進展 < shinten\ ;
+欠如 < ketsujo\ ;
+骨頂 < kotchou\ ;
+横着 < ouchaku\ ;
+分掌 < bunshou\ ;
+弁償 < benshou\ ;
+拉丁語 < ratengo\ ;
+刑戮 < keiriku\ ;
+通弊 < tsuuhei\ ;
+発祥 < hasshou\ ;
+通弁 < tsuuben\ ;
+歴伝 < rekiden\ ;
+幽愁 < yuushuu\ ;
+落人 < ochuudo\ ;
+入監 < nyuukan\ ;
+死中 < shichuu\ ;
+歴任 < rekinin\ ;
+別後 < betsugo\ ;
+電磁波 < denjiha\ ;
+歴代 < rekidai\ ;
+共用 < kyouyou\ ;
+極貧 < gokuhin\ ;
+共産 < kyousan\ ;
+権益 < ken''eki\ ;
+幻惑 < genwaku\ ;
+転落 < tenraku\ ;
+幕政 < bakusei\ ;
+県有 < ken''yuu\ ;
+追懐 < tsuikai\ ;
+魚腹 < gyofuku\ ;
+通常 < tsuujou\ ;
+追憶 < tsuioku\ ;
+躊躇 < chuucho\ ;
+鬼蓮 < onibasu\ ;
+真摯 < shinshi\ ;
+電磁気 < denjiki\ ;
+皆目 < kaimoku\ ;
+白砂 < hakusha\ ;
+概評 < gaihyou\ ;
+弋人 < yokujin\ ;
+凝望 < gyoubou\ ;
+傾角 < keikaku\ ;
+典獄 < tengoku\ ;
+鯛焼 < taiyaki\ ;
+適合 < tekigou\ ;
+劇剤 < gekizai\ ;
+別席 < besseki\ ;
+元禄 < genroku\ ;
+傾覆 < keifuku\ ;
+魚肉 < gyoniku\ ;
+入用 < nyuuyou\ ;
+白眼 < hakugan\ ;
+荒業 < arawaza\ ;
+刺子 < sashiko\ ;
+正体 < shoutai\ ;
+逆徒 < gyakuto\ ;
+山麓 < sanroku\ ;
+迎春 < geishun\ ;
+白目 < shirome\ ;
+列強 < rekkyou\ ;
+農業 < nougyou\ ;
+切愛 < setsuai\ ;
+候鳥 < kouchou\ ;
+栄養価 < eiyouka\ ;
+還俗 < genzoku\ ;
+速射 < sokusha\ ;
+迷惑 < meiwaku\ ;
+逼塞 < hissoku\ ;
+痛言 < tsuugen\ ;
+初巳 < hatsumi\ ;
+第二次 < dainiji\ ;
+疾走 < shissou\ ;
+列座 < retsuza\ ;
+着座 < chakuza\ ;
+茶殻 < chagara\ ;
+追従 < tsuijuu\ ;
+正中 < seichuu\ ;
+躬行 < kyuukou\ ;
+白痴 < hakuchi\ ;
+井戸水 < idomizu\ ;
+凶手 < kyoushu\ ;
+市況 < shikyou\ ;
+列席 < resseki\ ;
+帝業 < teigyou\ ;
+前垂 < maedare\ ;
+一個人 < ikkojin\ ;
+亡祖父 < bousofu\ ;
+御朱印 < goshuin\ ;
+着工 < chakkou\ ;
+割勘 < warikan\ ;
+異性体 < iseitai\ ;
+発疹 < hosshin\ ;
+鳥人 < choujin\ ;
+迎撃 < geigeki\ ;
+進塁 < shinrui\ ;
+剣呑 < ken''non\ ;
+冒涜 < boutoku\ ;
+検鏡 < kenkyou\ ;
+先皇 < sen''nou\ ;
+退席 < taiseki\ ;
+別宴 < betsuen\ ;
+週報 < shuuhou\ ;
+割前 < warimae\ ;
+円滑 < enkotsu\ ;
+別宅 < bettaku\ ;
+免疫 < men''eki\ ;
+割判 < warihan\ ;
+非同期 < hidouki\ ;
+軸線 < jikusen\ ;
+十露盤 < soroban\ ;
+側辺 < sokuhen\ ;
+欠員 < ketsuin\ ;
+棒鱈 < boudara\ ;
+入物 < iremono\ ;
+入牢 < nyuurou\ ;
+選任 < sen''nin\ ;
+凶悪 < kyouaku\ ;
+筆記具 < hikkigu\ ;
+番長 < banchou\ ;
+穏健派 < onkenha\ ;
+育児園 < ikujien\ ;
+幼少 < youshou\ ;
+電気炉 < denkiro\ ;
+草木 < soumoku\ ;
+目星 < meboshi\ ;
+依存性 < izonsei\ ;
+幽寂 < yuujaku\ ;
+僚艦 < ryoukan\ ;
+分巻 < bunmaki\ ;
+比叡山 < hieizan\ ;
+癩病 < raibyou\ ;
+通奏 < tsuusou\ ;
+疣足 < iboashi\ ;
+依頼者 < iraisha\ ;
+良能 < ryounou\ ;
+載積 < saiseki\ ;
+茶棚 < chadana\ ;
+幼子 < osanago\ ;
+適例 < tekirei\ ;
+検針 < kenshin\ ;
+出廷 < shuttei\ ;
+崩落 < houraku\ ;
+真影 < shin''ei\ ;
+年少 < nenshou\ ;
+幣帛 < heihaku\ ;
+凶弾 < kyoudan\ ;
+速報 < sokuhou\ ;
+甲高 < koudaka\ ;
+白状 < hakujou\ ;
+製油所 < seiyujo\ ;
+適任 < tekinin\ ;
+制圧 < seiatsu\ ;
+疾視 < shisshi\ ;
+苦熱 < kunetsu\ ;
+発狂 < hakkyou\ ;
+創作 < sousaku\ ;
+檄文 < gekibun\ ;
+内池 < uchiike\ ;
+目撥 < mebachi\ ;
+偏針 < henshin\ ;
+退学 < taigaku\ ;
+偏重 < henchou\ ;
+年子 < toshigo\ ;
+通報 < tsuuhou\ ;
+基本語 < kihongo\ ;
+剣先 < kensaki\ ;
+凶年 < kyounen\ ;
+真平 < mappira\ ;
+癒着 < yuchaku\ ;
+御三家 < gosanke\ ;
+副使 < fukushi\ ;
+莫大 < bakudai\ ;
+前厄 < maeyaku\ ;
+魚竜 < gyoryuu\ ;
+迷宮 < meikyuu\ ;
+遅刻 < chikoku\ ;
+幔幕 < manmaku\ ;
+五節句 < gosekku\ ;
+森閑 < shinkan\ ;
+辟易 < hekieki\ ;
+入漁 < nyuugyo\ ;
+直披 < chokuhi\ ;
+誤動作 < godousa\ ;
+発煙 < hatsuen\ ;
+舟行 < shuukou\ ;
+岸辺 < kishibe\ ;
+道俗 < douzoku\ ;
+進取 < shinshu\ ;
+膨隆 < bouryuu\ ;
+倍額 < baigaku\ ;
+目指 < mokushi\ ;
+影印本 < eiinhon\ ;
+魔窟 < makutsu\ ;
+凝念 < gyounen\ ;
+巡歴 < junreki\ ;
+山頂 < sanchou\ ;
+入湯 < nyuutou\ ;
+出展 < shutten\ ;
+入渠 < nyuukyo\ ;
+苛烈 < karetsu\ ;
+経営費 < keieihi\ ;
+迫害 < hakugai\ ;
+八洲 < yashima\ ;
+円相場 < ensouba\ ;
+轟沈 < gouchin\ ;
+県庁 < kenchou\ ;
+凡庸 < bon''you\ ;
+癇癖 < kanpeki\ ;
+色素 < shikiso\ ;
+近年 < kin''nen\ ;
+盆暮 < bonkure\ ;
+蹉跌 < satetsu\ ;
+年増 < toshima\ ;
+道主 < doushuu\ ;
+凋悴 < chousui\ ;
+道中 < douchuu\ ;
+山陽 < san''you\ ;
+山陵 < sanryou\ ;
+遊休 < yuukyuu\ ;
+痘苗 < toubyou\ ;
+週刊 < shuukan\ ;
+被疑者 < higisha\ ;
+庖厨 < houchuu\ ;
+倒閣 < toukaku\ ;
+列国 < rekkoku\ ;
+督励 < tokurei\ ;
+巡業 < jungyou\ ;
+標準 < hyoujun\ ;
+菊判 < kikuban\ ;
+産額 < sangaku\ ;
+週内 < shuunai\ ;
+鰻屋 < unagiya\ ;
+入水 < nyuusui\ ;
+制勝 < seishou\ ;
+刻刻 < kokkoku\ ;
+備蓄 < bichiku\ ;
+通名 < toorina\ ;
+軍籍 < gunseki\ ;
+船舶 < senpaku\ ;
+連勝 < renshou\ ;
+通史 < tsuushi\ ;
+直後 < chokugo\ ;
+直往 < chokuou\ ;
+放火魔 < houkama\ ;
+修養 < shuuyou\ ;
+不断着 < fudangi\ ;
+聖路加 < seiroka\ ;
+病菌 < byoukin\ ;
+出奔 < shuppon\ ;
+楽聖 < gakusei\ ;
+船腹 < senpuku\ ;
+下線部 < kasenbu\ ;
+白洲 < shirasu\ ;
+凡小 < bonshou\ ;
+前任 < zen''nin\ ;
+巨木 < kyoboku\ ;
+般若 < han''nya\ ;
+傷者 < shousha\ ;
+円曲 < enkyoku\ ;
+尾骨 < bikotsu\ ;
+広告 < koukoku\ ;
+芝生 < shibafu\ ;
+通勤 < tsuukin\ ;
+自説 < jisetsu\ ;
+充溢 < juuitsu\ ;
+看客 < kankaku\ ;
+茶托 < chataku\ ;
+真夏 < manatsu\ ;
+辺幅 < henpuku\ ;
+店内 < ten''nai\ ;
+多次元 < tajigen\ ;
+川柳 < senryuu\ ;
+業腹 < gouhara\ ;
+良種 < ryoushu\ ;
+借金 < shakkin\ ;
+削井 < sakusei\ ;
+似非者 < esemono\ ;
+序列 < joretsu\ ;
+倒錯 < tousaku\ ;
+帝徳 < teitoku\ ;
+脳外科 < nougeka\ ;
+通分 < tsuubun\ ;
+追善 < tsuizen\ ;
+凶報 < kyouhou\ ;
+御下問 < gokamon\ ;
+検認 < ken''nin\ ;
+荒巻 < aramaki\ ;
+病舎 < byousha\ ;
+舞茸 < maitake\ ;
+週令 < shuurei\ ;
+准州 < junshuu\ ;
+膃肭臍 < ottosei\ ;
+共栓 < tomosen\ ;
+女性器 < joseiki\ ;
+孵卵器 < furanki\ ;
+検証 < kenshou\ ;
+無理解 < murikai\ ;
+常宿 < jouyado\ ;
+信頼 < shinrai\ ;
+光沢 < koutaku\ ;
+帝廟 < teibyou\ ;
+凹地 < kubochi\ ;
+凸坊 < dekobou\ ;
+軍票 < gunpyou\ ;
+盛徳 < seitoku\ ;
+業者 < gyousha\ ;
+軍神 < gunshin\ ;
+蹈襲 < toushuu\ ;
+舟艇 < shuutei\ ;
+横棒 < yokobou\ ;
+年収 < nenshuu\ ;
+入梅 < nyuubai\ ;
+腓骨 < hikotsu\ ;
+共有 < kyouyuu\ ;
+鰤子 < burikko\ ;
+相客 < aikyaku\ ;
+父性愛 < fuseiai\ ;
+追号 < tsuigou\ ;
+連作 < rensaku\ ;
+兎欠 < toketsu\ ;
+兆民 < choumin\ ;
+別儀 < betsugi\ ;
+非武装 < hibusou\ ;
+良知 < ryouchi\ ;
+連休 < renkyuu\ ;
+切味 < kireaji\ ;
+造作 < zousaku\ ;
+六書 < rokusho\ ;
+着剣 < chakken\ ;
+分周 < bunshuu\ ;
+六曜 < rokuyou\ ;
+八朔 < hassaku\ ;
+刪修 < sanshuu\ ;
+准将 < junshou\ ;
+腕首 < udekubi\ ;
+眼力 < ganriki\ ;
+通例 < tsuurei\ ;
+標榜 < hyoubou\ ;
+入来 < nyuurai\ ;
+略譜 < ryakufu\ ;
+轢断 < rekidan\ ;
+転用 < ten''you\ ;
+皐月 < satsuki\ ;
+連中 < renchuu\ ;
+元歌 < motouta\ ;
+色白 < irojiro\ ;
+岩角 < iwakado\ ;
+同父母 < doufubo\ ;
+茶店 < chamise\ ;
+凝塊 < gyoukai\ ;
+出品 < shuppin\ ;
+農学 < nougaku\ ;
+通人 < tsuujin\ ;
+略語 < ryakugo\ ;
+僭用 < sen''you\ ;
+踊躍 < youyaku\ ;
+茶席 < chaseki\ ;
+追刊 < tsuikan\ ;
+用量 < youryou\ ;
+自虐 < jigyaku\ ;
+鬼畜 < kichiku\ ;
+腐食 < fushoku\ ;
+年内 < nen''nai\ ;
+傍聴 < bouchou\ ;
+左折 < sasetsu\ ;
+白桃 < hakutou\ ;
+女性化 < joseika\ ;
+若枝 < wakaeda\ ;
+近国 < kingoku\ ;
+船籍 < senseki\ ;
+元標 < genpyou\ ;
+出口 < deguchi\ ;
+切削 < sessaku\ ;
+略解 < ryakkai\ ;
+刀匠 < toushou\ ;
+発案 < hatsuan\ ;
+無期限 < mukigen\ ;
+軟球 < nankyuu\ ;
+修錬 < shuuren\ ;
+自家用 < jikayou\ ;
+直奏 < jikisou\ ;
+航続 < kouzoku\ ;
+良田 < ryouden\ ;
+足音 < ashioto\ ;
+先棒 < sakibou\ ;
+家系図 < kakeizu\ ;
+一世紀 < isseiki\ ;
+刈入 < kariire\ ;
+白木 < shiraki\ ;
+自由度 < jiyuudo\ ;
+標本 < hyouhon\ ;
+白書 < hakusho\ ;
+汚染源 < osengen\ ;
+軍用 < gun''you\ ;
+初乳 < shonyuu\ ;
+平信 < heishin\ ;
+荒壁 < arakabe\ ;
+八掛 < hakkake\ ;
+輪業 < ringyou\ ;
+茶寮 < charyou\ ;
+平作 < heisaku\ ;
+盲執 < moushuu\ ;
+甘酒 < amazake\ ;
+元栓 < motosen\ ;
+八挺 < hatchou\ ;
+真剣 < shinken\ ;
+依頼状 < iraijou\ ;
+凹凸 < outotsu\ ;
+辛子 < karashi\ ;
+凸凹 < totsuou\ ;
+百方 < hyappou\ ;
+側背 < sokuhai\ ;
+療法 < ryouhou\ ;
+入掛 < irekaku\ ;
+迷信 < meishin\ ;
+凶刃 < kyoujin\ ;
+第一歩 < daiippo\ ;
+出兵 < shuppei\ ;
+白斑 < hakuhan\ ;
+退京 < taikyou\ ;
+白文 < hakubun\ ;
+微塵子 < mijinko\ ;
+凸円 < totsuen\ ;
+山賊 < sanzoku\ ;
+眼中 < ganchuu\ ;
+贔屓目 < hiikime\ ;
+側聞 < sokubun\ ;
+業種 < gyoushu\ ;
+八手 < yatsude\ ;
+色物 < iromono\ ;
+痳病 < rinbyou\ ;
+元服 < genpuku\ ;
+修道 < shuudou\ ;
+克明 < kokumei\ ;
+年上 < toshiue\ ;
+保釈 < hoshaku\ ;
+入手 < nyuushu\ ;
+入所 < nyuusho\ ;
+述作 < jussaku\ ;
+電磁場 < denjiba\ ;
+直営 < chokuei\ ;
+小面 < shoumen\ ;
+尿酸 < nyousan\ ;
+辛夷 < kobushi\ ;
+六情 < rokujou\ ;
+一体化 < ittaika\ ;
+御日様 < ohisama\ ;
+音羽屋 < otowaya\ ;
+高粱 < kouryan\ ;
+小難 < shounan\ ;
+局部 < kyokubu\ ;
+医院長 < iinchou\ ;
+印欧語 < in''ougo\ ;
+帝国 < teikoku\ ;
+出会 < shukkai\ ;
+鬱然 < utsuzen\ ;
+傷痕 < shoukon\ ;
+再審 < saishin\ ;
+県内 < ken''nai\ ;
+尿道 < nyoudou\ ;
+側線 < sokusen\ ;
+公徳 < koutoku\ ;
+常勝 < joushou\ ;
+冥境 < meikyou\ ;
+真人 < shinjin\ ;
+冷嘲 < reichou\ ;
+馴鹿 < tonakai\ ;
+直参 < jikisan\ ;
+出来秋 < dekiaki\ ;
+飛行機 < hikouki\ ;
+入念 < nyuunen\ ;
+脊髄 < sekizui\ ;
+無作為 < musakui\ ;
+真下 < mashita\ ;
+円安 < en''yasu\ ;
+尊長 < sonchou\ ;
+偽筆 < gihitsu\ ;
+相剋 < soukoku\ ;
+膝行 < shikkou\ ;
+都市部 < toshibu\ ;
+転注 < tenchuu\ ;
+座蒲団 < zabuton\ ;
+入廷 < nyuutei\ ;
+俗輩 < zokuhai\ ;
+脚韻 < kyakuin\ ;
+凡俗 < bonzoku\ ;
+寒鮒 < kanbuna\ ;
+業病 < goubyou\ ;
+農博 < nouhaku\ ;
+農協 < noukyou\ ;
+全幅 < zenpuku\ ;
+放課後 < houkago\ ;
+全席 < zenseki\ ;
+高禄 < kouroku\ ;
+近作 < kinsaku\ ;
+荷主 < ninushi\ ;
+良港 < ryoukou\ ;
+寸隙 < sungeki\ ;
+一本気 < ippongi\ ;
+目前 < mokuzen\ ;
+岩肌 < iwahada\ ;
+凡人 < bon''nin\ ;
+信販 < shinpan\ ;
+電気屋 < denkiya\ ;
+俗趣 < zokushu\ ;
+修論 < shuuron\ ;
+兵学 < heigaku\ ;
+田螺 < tanishi\ ;
+産褥 < sanjoku\ ;
+小銃 < shoujuu\ ;
+便通 < bentsuu\ ;
+小鉢 < kobachi\ ;
+未来派 < miraiha\ ;
+赤飯 < sekihan\ ;
+帝劇 < teigeki\ ;
+共存 < kyouzon\ ;
+省令 < shourei\ ;
+自粛 < jishuku\ ;
+百度 < hyakudo\ ;
+栄誉礼 < eiyorei\ ;
+内壁 < naiheki\ ;
+疾病 < shippei\ ;
+元悪 < gen''aku\ ;
+糖衣錠 < touijou\ ;
+疼痛 < toutsuu\ ;
+害鳥 < gaichou\ ;
+傍白 < bouhaku\ ;
+良民 < ryoumin\ ;
+躁病 < soubyou\ ;
+理論家 < rironka\ ;
+田虫 < tamushi\ ;
+白帆 < shiraho\ ;
+高直 < koujiki\ ;
+打楽器 < dagakki\ ;
+生血 < namachi\ ;
+無作法 < busahou\ ;
+入定 < nyuujou\ ;
+転業 < tengyou\ ;
+屈託 < kuttaku\ ;
+直伝 < jikiden\ ;
+茶匙 < chasaji\ ;
+自筆 < jihitsu\ ;
+仁王門 < nioumon\ ;
+苗床 < naedoko\ ;
+赤面 < sekimen\ ;
+古典派 < kotenha\ ;
+内圧 < naiatsu\ ;
+痛点 < tsuuten\ ;
+素封家 < sohouka\ ;
+先年 < sen''nen\ ;
+疱疹 < houshin\ ;
+俗謡 < zokuyou\ ;
+小道 < komichi\ ;
+自立 < jiritsu\ ;
+修行 < shugyou\ ;
+内国 < naikoku\ ;
+俗諺 < zokugen\ ;
+至福 < shifuku\ ;
+寺銭 < terasen\ ;
+農作 < nousaku\ ;
+俗諦 < zokutai\ ;
+俊豪 < shungou\ ;
+俗論 < zokuron\ ;
+症状 < shoujou\ ;
+俗談 < zokudan\ ;
+導通 < doutsuu\ ;
+魚族 < gyozoku\ ;
+入婿 < irimuko\ ;
+僻村 < hekison\ ;
+鮨屋 < sushiya\ ;
+寄食 < kishoku\ ;
+白山 < hakusan\ ;
+病状 < byoujou\ ;
+元年 < gan''nen\ ;
+席上 < sekijou\ ;
+荒事 < aragoto\ ;
+監修 < kanshuu\ ;
+歩合制 < buaisei\ ;
+偸盗 < chuutou\ ;
+僻書 < hekisho\ ;
+留置 < ryuuchi\ ;
+辛党 < karatou\ ;
+格闘 < kakutou\ ;
+番組 < bangumi\ ;
+魂柱 < konchuu\ ;
+百官 < hyakkan\ ;
+作風 < sakufuu\ ;
+魚河岸 < uogashi\ ;
+馬食 < bashoku\ ;
+自由化 < jiyuuka\ ;
+艦橋 < kankyou\ ;
+標定 < hyoutei\ ;
+横奪 < oudatsu\ ;
+白子 < shiroko\ ;
+再告 < saikoku\ ;
+軍楽 < gungaku\ ;
+山芋 < yamaimo\ ;
+帝京 < teikyou\ ;
+輻射 < fukusha\ ;
+入声 < nisshou\ ;
+授産所 < jusanjo\ ;
+駆動機 < kudouki\ ;
+密雲 < mitsuun\ ;
+二箇所 < nikasho\ ;
+傾注 < keichuu\ ;
+入墨 < irezumi\ ;
+密集 < misshuu\ ;
+違犯者 < ihansha\ ;
+自画像 < jigazou\ ;
+色柄 < irogara\ ;
+形意拳 < keiiken\ ;
+背高 < seitaka\ ;
+将軍 < shougun\ ;
+概況 < gaikyou\ ;
+全域 < zen''iki\ ;
+母性愛 < boseiai\ ;
+井戸側 < idogawa\ ;
+山腹 < sanpuku\ ;
+先学 < sengaku\ ;
+脚部 < kyakubu\ ;
+胴長 < dounaga\ ;
+僧服 < soufuku\ ;
+再勝 < saishou\ ;
+腹蔵 < fukuzou\ ;
+良材 < ryouzai\ ;
+低額 < teigaku\ ;
+魚拓 < gyotaku\ ;
+輔弼 < hohitsu\ ;
+全国 < zengoku\ ;
+良書 < ryousho\ ;
+宰領 < sairyou\ ;
+白太 < shirata\ ;
+白夜 < byakuya\ ;
+蹴爪 < kedzume\ ;
+赤錆 < akasabi\ ;
+入団 < nyuudan\ ;
+工博 < kouhaku\ ;
+差別 < sabetsu\ ;
+冪乗 < bekijou\ ;
+軍服 < gunpuku\ ;
+甲胄 < katchuu\ ;
+自発 < jihatsu\ ;
+畢竟 < hikkyou\ ;
+校閲 < kouetsu\ ;
+疎略 < soryaku\ ;
+岩礁 < ganshou\ ;
+傷歎 < shoutan\ ;
+色文 < irobumi\ ;
+破砕機 < hasaiki\ ;
+首領 < shuryou\ ;
+違警罪 < ikeizai\ ;
+希土類 < kidorui\ ;
+赤金 < akagane\ ;
+驕肆 < kyoushi\ ;
+学齢 < gakurei\ ;
+宵闇 < yoiyami\ ;
+小論 < shouron\ ;
+亜鉛引 < aenbiki\ ;
+太宰府 < dazaifu\ ;
+岩石 < ganseki\ ;
+腹芸 < haragei\ ;
+白地 < shiroji\ ;
+核酸 < kakusan\ ;
+六合 < rikugou\ ;
+船歌 < funauta\ ;
+対象 < taishou\ ;
+騰落 < touraku\ ;
+偏癖 < henpeki\ ;
+典則 < tensoku\ ;
+棒縞 < boujima\ ;
+伊達者 < datesha\ ;
+六十 < rokujuu\ ;
+赤道 < sekidou\ ;
+生肉 < seiniku\ ;
+送話器 < souwaki\ ;
+植皮 < shokuhi\ ;
+実需 < jitsuju\ ;
+免囚 < menshuu\ ;
+伴天連 < bateren\ ;
+駆逐 < kuchiku\ ;
+亜麻布 < amanuno\ ;
+駐車 < chuusha\ ;
+株金 < kabukin\ ;
+自玉 < jigyoku\ ;
+女郎屋 < jorouya\ ;
+宿銭 < yadosen\ ;
+首長 < shuchou\ ;
+腹背 < fukuhai\ ;
+噴霧器 < funmuki\ ;
+病死 < byoushi\ ;
+射角 < shakaku\ ;
+英単語 < eitango\ ;
+客間 < kyakuma\ ;
+工作 < kousaku\ ;
+儀式 < gishiki\ ;
+田紳 < denshin\ ;
+対訳 < taiyaku\ ;
+赤軍 < sekigun\ ;
+脂身 < aburami\ ;
+峡湾 < kyouwan\ ;
+軍拡 < gunkaku\ ;
+百味 < hyakumi\ ;
+荷馬車 < nibasha\ ;
+擬態語 < gitaigo\ ;
+対角 < taikaku\ ;
+柱面 < chuumen\ ;
+巨乳 < kyonyuu\ ;
+異邦人 < ihoujin\ ;
+画筆 < gahitsu\ ;
+供覧 < kyouran\ ;
+怪我人 < keganin\ ;
+寸評 < sunpyou\ ;
+内中 < uchijuu\ ;
+効果音 < koukaon\ ;
+密通 < mittsuu\ ;
+倶発 < guhatsu\ ;
+公僕 < kouboku\ ;
+体量 < tairyou\ ;
+墓碑銘 < bohimei\ ;
+宗門 < shuumon\ ;
+臆病 < okubyou\ ;
+全優 < zen''yuu\ ;
+飛行家 < hikouka\ ;
+略画 < ryakuga\ ;
+俸給 < houkyuu\ ;
+宿運 < shukuun\ ;
+船板 < funaita\ ;
+俊英 < shun''ei\ ;
+芳墨 < houboku\ ;
+百匁 < hyakume\ ;
+生絹 < suzushi\ ;
+軟弱 < nanjaku\ ;
+休館 < kyuukan\ ;
+密輸 < mitsuyu\ ;
+党則 < tousoku\ ;
+修繕 < shuuzen\ ;
+休養 < kyuuyou\ ;
+榴弾 < ryuudan\ ;
+山積 < sanseki\ ;
+舶来 < hakurai\ ;
+赤貧 < sekihin\ ;
+英傑 < eiketsu\ ;
+極暑 < gokusho\ ;
+病棟 < byoutou\ ;
+火熨斗 < hinoshi\ ;
+肌骨 < kikotsu\ ;
+良性 < ryousei\ ;
+足芸 < ashigei\ ;
+腸線 < chousen\ ;
+輪唱 < rinshou\ ;
+偉物 < eramono\ ;
+白刃 < hakujin\ ;
+侮蔑 < bubetsu\ ;
+若党 < wakatou\ ;
+病根 < byoukon\ ;
+会集 < kaishuu\ ;
+屑糸 < kuzuito\ ;
+梟罪 < kyouzai\ ;
+白兵 < hakuhei\ ;
+低速 < teisoku\ ;
+入会 < nyuukai\ ;
+屑米 < kuzumai\ ;
+軽妙 < keimyou\ ;
+自滅 < jimetsu\ ;
+休電 < kyuuden\ ;
+島根 < shimane\ ;
+学風 < gakufuu\ ;
+僵屍 < kyonshi\ ;
+先刻 < senkoku\ ;
+優位性 < yuuisei\ ;
+肉饅 < nikuman\ ;
+併読 < heidoku\ ;
+馬跳 < umatobi\ ;
+転属 < tenzoku\ ;
+赤誠 < sekisei\ ;
+良師 < ryoushi\ ;
+会長 < kaichou\ ;
+格言 < kakugen\ ;
+駁論 < bakuron\ ;
+無趣味 < mushumi\ ;
+過現未 < kagenmi\ ;
+元凶 < genkyou\ ;
+肉類 < nikurui\ ;
+疼木 < hiiragi\ ;
+転宅 < tentaku\ ;
+栄達 < eitatsu\ ;
+転学 < tengaku\ ;
+自活 < jikatsu\ ;
+俸禄 < houroku\ ;
+若人 < wakoudo\ ;
+楽才 < gakusai\ ;
+密議 < mitsugi\ ;
+香車 < kyousha\ ;
+俗累 < zokurui\ ;
+長椅子 < nagaisu\ ;
+聾唖者 < rouasha\ ;
+停泊 < teihaku\ ;
+楊柳 < youryuu\ ;
+小舅 < kojuuto\ ;
+自決 < jiketsu\ ;
+百事 < hyakuji\ ;
+密語 < mitsugo\ ;
+胸襟 < kyoukin\ ;
+尿管 < nyoukan\ ;
+鬱屈 < ukkutsu\ ;
+軍属 < gunzoku\ ;
+文字盤 < mojiban\ ;
+痛憤 < tsuufun\ ;
+五十音 < gojuuon\ ;
+山番 < yamaban\ ;
+楽想 < gakusou\ ;
+自殺 < jisatsu\ ;
+脱臼 < dakkyuu\ ;
+首足 < shusoku\ ;
+脱臭 < dasshuu\ ;
+軍将 < gunshou\ ;
+傷悴 < shousui\ ;
+偏流 < henryuu\ ;
+脳膜 < noumaku\ ;
+現高 < gendaka\ ;
+臣民 < shinmin\ ;
+鬼婆 < onibaba\ ;
+作詩 < sakushi\ ;
+脱腸 < datchou\ ;
+宅配 < takuhai\ ;
+休錘 < kyuusui\ ;
+田畑 < denpata\ ;
+痛恨 < tsuukon\ ;
+至極 < shigoku\ ;
+極悪 < gokuaku\ ;
+安逸 < an''itsu\ ;
+天婦羅 < tenpura\ ;
+僻地 < hekichi\ ;
+僻在 < hekizai\ ;
+定跡 < jouseki\ ;
+輪作 < rinsaku\ ;
+岩波 < iwanami\ ;
+峻拒 < shunkyo\ ;
+良妻 < ryousai\ ;
+臆測 < okusoku\ ;
+産痛 < santsuu\ ;
+寝道具 < nedougu\ ;
+職階 < shokkai\ ;
+畝溝 < unemizo\ ;
+極微 < kyokubi\ ;
+異分子 < ibunshi\ ;
+膜状 < makujou\ ;
+甘皮 < amakawa\ ;
+赤蕪 < akakabu\ ;
+山犬 < yamainu\ ;
+俊童 < shundou\ ;
+楽師 < gakushi\ ;
+桑色 < kuwairo\ ;
+腕章 < wanshou\ ;
+馬術 < bajutsu\ ;
+病態 < byoutai\ ;
+腕立 < udetate\ ;
+腹癒 < haraise\ ;
+舞扇 < maiougi\ ;
+寮舎 < ryousha\ ;
+極度 < kyokudo\ ;
+偕楽 < kairaku\ ;
+球面 < kyuumen\ ;
+小編 < shouhen\ ;
+自販機 < jihanki\ ;
+病患 < byoukan\ ;
+客語 < kyakugo\ ;
+枕頭 < chintou\ ;
+極左 < kyokusa\ ;
+瓢箪 < hyoutan\ ;
+八重垣 < yaegaki\ ;
+芸事 < geigoto\ ;
+植樹 < shokuju\ ;
+実話 < jitsuwa\ ;
+疾患 < shikkan\ ;
+無価値 < mukachi\ ;
+桃色 < momoiro\ ;
+検校 < kengyou\ ;
+実証 < jisshou\ ;
+今頃 < imagoro\ ;
+腰痛 < youtsuu\ ;
+小粒 < kotsubu\ ;
+業師 < wazashi\ ;
+花代 < hanadai\ ;
+客観 < kyakkan\ ;
+俗眼 < zokugan\ ;
+使臣 < shishin\ ;
+寒菊 < kangiku\ ;
+人事院 < jinjiin\ ;
+休載 < kyuusai\ ;
+尻目 < shirime\ ;
+定評 < teihyou\ ;
+休転 < kyuuten\ ;
+病弊 < byouhei\ ;
+傷害 < shougai\ ;
+定訳 < teiyaku\ ;
+軍国 < gunkoku\ ;
+魔力 < maryoku\ ;
+検束 < kensoku\ ;
+不夜城 < fuyajou\ ;
+居留 < kyoryuu\ ;
+美丈夫 < bijoufu\ ;
+荏胡麻油 < egomayu\ ;
+岩棚 < iwadana\ ;
+仏陀 < butsuda\ ;
+害虫 < gaichuu\ ;
+就眠 < shuumin\ ;
+脇能 < wakinou\ ;
+億兆 < okuchou\ ;
+病巣 < byousou\ ;
+赤膚 < akahada\ ;
+小童 < kowappa\ ;
+仏閣 < bukkaku\ ;
+易損品 < isonhin\ ;
+仏間 < butsuma\ ;
+赤腹 < akahara\ ;
+尼僧院 < nisouin\ ;
+腎石 < jinseki\ ;
+良品 < ryouhin\ ;
+胃袋 < ibukuro\ ;
+無理数 < murisuu\ ;
+峻嶺 < shunrei\ ;
+儒仏 < jubutsu\ ;
+魅力 < miryoku\ ;
+貸間 < kashima\ ;
+胸臆 < kyouoku\ ;
+無韻詩 < muinshi\ ;
+魚信 < gyoshin\ ;
+腕白 < wanpaku\ ;
+多様化 < tayouka\ ;
+胸腺 < kyousen\ ;
+京風 < kyoufuu\ ;
+楽天 < rakuten\ ;
+良友 < ryouyuu\ ;
+脱穀 < dakkoku\ ;
+班長 < hanchou\ ;
+伝誦 < denshou\ ;
+尊称 < sonshou\ ;
+偃月 < engetsu\ ;
+対策 < taisaku\ ;
+借款 < shakkan\ ;
+楽壇 < gakudan\ ;
+便益 < ben''eki\ ;
+会読 < kaidoku\ ;
+棺桶 < kan''oke\ ;
+低落 < teiraku\ ;
+病害 < byougai\ ;
+偉方 < eragata\ ;
+皮膚科医 < hifukai\ ;
+界標 < kaihyou\ ;
+賃銭 < chinsen\ ;
+佞臣 < neishin\ ;
+余色 < yoshoku\ ;
+飲食 < inshoku\ ;
+屋根裏 < yaneura\ ;
+傾国 < keikoku\ ;
+暴風雨 < boufuuu\ ;
+係留 < keiryuu\ ;
+男気 < otokogi\ ;
+楓属 < fuuzoku\ ;
+胃薬 < igusuri\ ;
+仙郷 < senkyou\ ;
+栗色 < kuriiro\ ;
+購読 < koudoku\ ;
+生理日 < seiribi\ ;
+車力 < shariki\ ;
+分限者 < bugenja\ ;
+臥所 < fushido\ ;
+体臭 < taishuu\ ;
+馬脚 < bakyaku\ ;
+寸秒 < sunbyou\ ;
+人事部 < jinjibu\ ;
+起筆 < kihitsu\ ;
+駐米 < chuubei\ ;
+乾魚 < hoshiuo\ ;
+鸚鵡貝 < oumugai\ ;
+肝要 < kan''you\ ;
+森林 < shinrin\ ;
+赤組 < akagumi\ ;
+転任 < ten''nin\ ;
+格納 < kakunou\ ;
+小癪 < koshaku\ ;
+赤紙 < akagami\ ;
+驚歎 < kyoutan\ ;
+起立 < kiritsu\ ;
+一丁字 < itteiji\ ;
+作者 < sakusha\ ;
+食餌 < shokuji\ ;
+腸満 < chouman\ ;
+仲買 < nakagai\ ;
+分離派 < bunriha\ ;
+小細工 < kozaiku\ ;
+病変 < byouhen\ ;
+暗号化 < angouka\ ;
+僥倖 < gyoukou\ ;
+賠責 < baiseki\ ;
+賞賛 < shousan\ ;
+尊皇 < son''nou\ ;
+玄麦 < genbaku\ ;
+脈管 < myakkan\ ;
+枢軸 < suujiku\ ;
+舞姫 < maihime\ ;
+痛嘆 < tsuutan\ ;
+尨犬 < mukuinu\ ;
+棟梁 < touryou\ ;
+右往左往 < uousaou\ ;
+印度洋 < indoyou\ ;
+塩素酸 < ensosan\ ;
+屠殺 < tosatsu\ ;
+賊軍 < zokugun\ ;
+腸液 < choueki\ ;
+舎宅 < shataku\ ;
+身命 < shinmei\ ;
+依頼人 < irainin\ ;
+疫学 < ekigaku\ ;
+小町 < komachi\ ;
+小男 < kootoko\ ;
+腰湯 < koshiyu\ ;
+射的 < shateki\ ;
+脳病 < noubyou\ ;
+小生 < shousei\ ;
+父母会 < fubokai\ ;
+山椒 < sanshou\ ;
+佳節 < kasetsu\ ;
+今週 < konshuu\ ;
+聖週 < seishuu\ ;
+飲酒家 < inshuka\ ;
+不認可 < funinka\ ;
+低翼 < teiyoku\ ;
+色事 < irogoto\ ;
+柿色 < kakiiro\ ;
+田楽 < dengaku\ ;
+今迄 < imamade\ ;
+乾飯 < hoshiii\ ;
+良人 < ryoujin\ ;
+宿縁 < shukuen\ ;
+臣従 < shinjuu\ ;
+腹水 < fukusui\ ;
+跋渉 < basshou\ ;
+町村 < chouson\ ;
+倒木 < touboku\ ;
+慰労会 < iroukai\ ;
+臨席 < rinseki\ ;
+修正 < shuusei\ ;
+木魚 < mokugyo\ ;
+豆腐屋 < toufuya\ ;
+高声 < takagoe\ ;
+併称 < heishou\ ;
+分離機 < bunriki\ ;
+概則 < gaisoku\ ;
+耐震 < taishin\ ;
+栄職 < eishoku\ ;
+仏跡 < busseki\ ;
+火炎瓶 < kaenbin\ ;
+貫通 < kantsuu\ ;
+聖蹟 < seiseki\ ;
+島国 < tougoku\ ;
+産業 < sangyou\ ;
+腰気 < koshike\ ;
+傷創 < shousou\ ;
+食間 < shokkan\ ;
+御多分 < gotabun\ ;
+仮親 < karioya\ ;
+育苗 < ikubyou\ ;
+官能 < kan''nou\ ;
+賃貸 < chintai\ ;
+岡惚 < okabore\ ;
+枝豆 < edamame\ ;
+聴許 < choukyo\ ;
+生業 < nariwai\ ;
+代読 < daidoku\ ;
+現象 < genshou\ ;
+実習 < jisshuu\ ;
+仲裁 < chuusai\ ;
+小爪 < kodzume\ ;
+疎密 < somitsu\ ;
+聴解 < choukai\ ;
+貧農 < hin''nou\ ;
+臨時費 < rinjihi\ ;
+代診 < daishin\ ;
+聴視 < choushi\ ;
+属格 < zokkaku\ ;
+傷兵 < shouhei\ ;
+楽典 < gakuten\ ;
+画数 < kakusuu\ ;
+膺懲 < youchou\ ;
+倍旧 < baikyuu\ ;
+大太鼓 < oodaiko\ ;
+高圧 < kouatsu\ ;
+町政 < chousei\ ;
+極刑 < kyokkei\ ;
+如何程 < ikahodo\ ;
+牡牛座 < oushiza\ ;
+病名 < byoumei\ ;
+加工費 < kakouhi\ ;
+梶棒 < kajibou\ ;
+極冠 < kyokkan\ ;
+極内 < gokunai\ ;
+病友 < byouyuu\ ;
+骰子 < saikoro\ ;
+岡引 < okahiki\ ;
+傴僂 < semushi\ ;
+朱鞘 < shuzaya\ ;
+人事課 < jinjika\ ;
+実績 < jisseki\ ;
+病原 < byougen\ ;
+極光 < kyokkou\ ;
+亨通 < koutsuu\ ;
+本領 < honryou\ ;
+人跡 < hitoato\ ;
+付設 < fusetsu\ ;
+首級 < shukyuu\ ;
+供物 < kumotsu\ ;
+峻厳 < shungen\ ;
+象限 < shougen\ ;
+身体 < shintai\ ;
+至妙 < shimyou\ ;
+甘栗 < amaguri\ ;
+仕訳 < shiwake\ ;
+躍動 < yakudou\ ;
+代表 < daihyou\ ;
+野良犬 < norainu\ ;
+病勢 < byousei\ ;
+容積 < youseki\ ;
+仏語 < butsugo\ ;
+腰椎 < youtsui\ ;
+身代 < shindai\ ;
+日本間 < nihonma\ ;
+玉音 < gyokuon\ ;
+大豆油 < daizuyu\ ;
+寓目 < guumoku\ ;
+来週 < raishuu\ ;
+船側 < sensoku\ ;
+本震 < honshin\ ;
+木靴 < kigutsu\ ;
+香箱 < koubako\ ;
+朝風 < asakaze\ ;
+児童画 < jidouga\ ;
+演舞場 < enbujou\ ;
+岩山 < iwayama\ ;
+楽人 < gakujin\ ;
+豆類 < mamerui\ ;
+官給 < kankyuu\ ;
+玉露 < gyokuro\ ;
+船便 < funabin\ ;
+催促 < saisoku\ ;
+生新 < seishin\ ;
+超然 < chouzen\ ;
+伝習 < denshuu\ ;
+留年 < ryuunen\ ;
+贅肉 < zeiniku\ ;
+高台 < takadai\ ;
+岩室 < iwamuro\ ;
+俵数 < hyousuu\ ;
+学芸 < gakugei\ ;
+男手 < otokode\ ;
+似非事 < esegoto\ ;
+梅毒 < baidoku\ ;
+不結果 < fukekka\ ;
+朝靄 < asamoya\ ;
+屈服 < kuppuku\ ;
+朝霧 < asagiri\ ;
+肌色 < hadairo\ ;
+学舎 < gakusha\ ;
+極上 < gokujou\ ;
+症候 < shoukou\ ;
+船中 < senchuu\ ;
+肉色 < nikuiro\ ;
+修改 < shuukai\ ;
+岸壁 < ganpeki\ ;
+人証 < ninshou\ ;
+略字 < ryakuji\ ;
+修撰 < shuusen\ ;
+地下化 < chikaka\ ;
+伏罪 < fukuzai\ ;
+密画 < mitsuga\ ;
+八百長 < yaochou\ ;
+餡蜜 < anmitsu\ ;
+耽読 < tandoku\ ;
+肉腫 < nikushu\ ;
+俗書 < zokusho\ ;
+老醜 < roushuu\ ;
+驕慢 < kyouman\ ;
+倔強 < kukkyou\ ;
+病人 < byounin\ ;
+偏執 < henshuu\ ;
+過飽和 < kahouwa\ ;
+乳酸 < nyuusan\ ;
+佯狂 < youkyou\ ;
+曳馬 < hikiuma\ ;
+対流 < tairyuu\ ;
+顔黒 < ganguro\ ;
+伏縫 < fusenui\ ;
+曲馬 < kyokuba\ ;
+赤燐 < sekirin\ ;
+傑作 < kessaku\ ;
+瑞祥 < zuishou\ ;
+伏線 < fukusen\ ;
+傀儡 < kugutsu\ ;
+珍談 < chindan\ ;
+俗文 < zokubun\ ;
+倒幕 < toubaku\ ;
+家畜 < kachiku\ ;
+中飯 < chuuhan\ ;
+球菌 < kyuukin\ ;
+早少女 < saotome\ ;
+中風 < chuubuu\ ;
+風鎮 < fuuchin\ ;
+借屋 < shakuya\ ;
+島中 < touchuu\ ;
+宝石 < houseki\ ;
+胆石 < tanseki\ ;
+山師 < yamashi\ ;
+木金 < mokukin\ ;
+如何物 < ikamono\ ;
+属性 < zokusei\ ;
+来診 < raishin\ ;
+版画家 < hangaka\ ;
+便服 < benpuku\ ;
+亡親 < boushin\ ;
+仕草 < shigusa\ ;
+九重 < kokonoe\ ;
+俊敏 < shunbin\ ;
+踊字 < odoriji\ ;
+山峡 < yamakai\ ;
+赤潮 < akashio\ ;
+学級 < gakkyuu\ ;
+略図 < ryakuzu\ ;
+両頭 < ryoutou\ ;
+尚更 < naosara\ ;
+中隊 < chuutai\ ;
+木造 < mokuzou\ ;
+伝票 < denpyou\ ;
+朝酒 < asazake\ ;
+寂然 < sekizen\ ;
+専業 < sengyou\ ;
+跡形 < atokata\ ;
+偶作 < guusaku\ ;
+小柄 < kodzuka\ ;
+聴罪 < chouzai\ ;
+余熱 < yonetsu\ ;
+両面 < ryoumen\ ;
+信愛 < shin''ai\ ;
+俗才 < zokusai\ ;
+存続 < sonzoku\ ;
+望郷 < boukyou\ ;
+宝生 < houshou\ ;
+美髪 < bihatsu\ ;
+中間 < chuukan\ ;
+一髪 < ippatsu\ ;
+仲継 < chuukei\ ;
+安着 < anchaku\ ;
+季節 < kisetsu\ ;
+愛飲者 < aiinsha\ ;
+二親 < futaoya\ ;
+豚足 < tonsoku\ ;
+余烈 < yoretsu\ ;
+松葉 < matsuba\ ;
+安直 < anchoku\ ;
+風速 < fuusoku\ ;
+顎髭 < agohige\ ;
+翼賛 < yokusan\ ;
+属島 < zokutou\ ;
+肺病 < haibyou\ ;
+実理 < jitsuri\ ;
+学童 < gakudou\ ;
+安定器 < anteiki\ ;
+棋客 < kikyaku\ ;
+末路 < matsuro\ ;
+駄菓子 < dagashi\ ;
+将来 < shourai\ ;
+了解 < ryoukai\ ;
+畑地 < hatachi\ ;
+男娼 < danshou\ ;
+孤立 < koritsu\ ;
+唐胡麻 < tougoma\ ;
+腹帯 < fukutai\ ;
+俗情 < zokujou\ ;
+了見 < ryouken\ ;
+丸鋼 < marukou\ ;
+俊才 < shunsai\ ;
+停音符 < teionpu\ ;
+俗悪 < zokuaku\ ;
+職組 < shokuso\ ;
+群集 < gunshuu\ ;
+群雄 < gun''yuu\ ;
+山姥 < yamauba\ ;
+上顎 < jougaku\ ;
+寝殿 < shinden\ ;
+少数 < shousuu\ ;
+園芸家 < engeika\ ;
+小斎 < shousai\ ;
+投影機 < toueiki\ ;
+脂気 < aburake\ ;
+尽忠 < jinchuu\ ;
+英吉利 < igirisu\ ;
+条虫 < jouchuu\ ;
+略叙 < ryakujo\ ;
+美食 < bishoku\ ;
+山奥 < yamaoku\ ;
+珍蔵 < chinzou\ ;
+無声音 < museion\ ;
+俗念 < zokunen\ ;
+格段 < kakudan\ ;
+一食 < isshoku\ ;
+獄門 < gokumon\ ;
+唐茄子 < tounasu\ ;
+日本語 < nihongo\ ;
+乱調 < ranchou\ ;
+人臣 < jinshin\ ;
+一類 < ichirui\ ;
+乱読 < randoku\ ;
+亀裂 < kiretsu\ ;
+胸水 < kyousui\ ;
+枠線 < wakusen\ ;
+休眠 < kyuumin\ ;
+臨休 < rinkyuu\ ;
+従三位 < jusanmi\ ;
+婦女子 < fujoshi\ ;
+伏目 < fushime\ ;
+万難 < ban''nan\ ;
+屎尿 < shinyou\ ;
+上陸 < jouriku\ ;
+尺度 < shakudo\ ;
+万障 < banshou\ ;
+最適 < saiteki\ ;
+就役 < shuueki\ ;
+一面 < ichimen\ ;
+対敵 < taiteki\ ;
+工事費 < koujihi\ ;
+温度計 < ondokei\ ;
+仏縁 < butsuen\ ;
+仕組 < shikumi\ ;
+桐材 < kirizai\ ;
+射撃 < shageki\ ;
+安定化 < anteika\ ;
+一雨 < hitoame\ ;
+柱状 < chuujou\ ;
+作況 < sakkyou\ ;
+一難 < ichinan\ ;
+山地 < yamachi\ ;
+法螺貝 < horagai\ ;
+胴欲 < douyoku\ ;
+額面 < gakumen\ ;
+珍芸 < chingei\ ;
+森厳 < shingen\ ;
+男囚 < danshuu\ ;
+梯子 < hashigo\ ;
+枕絵 < makurae\ ;
+番傘 < bangasa\ ;
+非常時 < hijouji\ ;
+一陣 < ichijin\ ;
+仏経 < bukkyou\ ;
+頬髭 < hoohige\ ;
+未設 < misetsu\ ;
+略儀 < ryakugi\ ;
+主軸 < shujiku\ ;
+頬骨 < hoobone\ ;
+乱行 < rangyou\ ;
+肉眼 < nikugan\ ;
+中道 < chuudou\ ;
+客演 < kyakuen\ ;
+完熟 < kanjuku\ ;
+一門 < ichimon\ ;
+暗鬱 < an''utsu\ ;
+八千代 < yachiyo\ ;
+植付 < uetsuke\ ;
+理窟 < rikutsu\ ;
+実演 < jitsuen\ ;
+尼寺 < amadera\ ;
+中農 < chuunou\ ;
+村落 < sonraku\ ;
+末裔 < matsuei\ ;
+尺寸 < sekisun\ ;
+木製 < mokusei\ ;
+佗歌 < wabiuta\ ;
+修士 < shuushi\ ;
+風評 < fuuhyou\ ;
+番人 < ban''nin\ ;
+害毒 < gaidoku\ ;
+朗読 < roudoku\ ;
+実測 < jissoku\ ;
+生垣 < ikegaki\ ;
+属国 < zokkoku\ ;
+五色 < goshoku\ ;
+赤札 < akafuda\ ;
+不細工 < busaiku\ ;
+板締 < itajime\ ;
+珍聞 < chinbun\ ;
+余水路 < yosuiro\ ;
+町名 < choumei\ ;
+朝見 < chouken\ ;
+暮雪 < bosetsu\ ;
+佳月 < kagetsu\ ;
+肉界 < nikukai\ ;
+来聴 < raichou\ ;
+任用 < nin''you\ ;
+胸板 < munaita\ ;
+信奉 < shinpou\ ;
+板紙 < itagami\ ;
+二色 < nishoku\ ;
+駐支 < chuushi\ ;
+曲路 < kyokuro\ ;
+少弟 < shoutei\ ;
+相違点 < souiten\ ;
+両輪 < ryourin\ ;
+木蝋 < mokurou\ ;
+一錠 < ichijou\ ;
+実況 < jikkyou\ ;
+赤旗 < akahata\ ;
+係属 < keizoku\ ;
+両軍 < ryougun\ ;
+胎毒 < taidoku\ ;
+留任 < ryuunin\ ;
+朽葉 < kuchiba\ ;
+曼荼羅 < mandara\ ;
+山勘 < yamakan\ ;
+少年 < shounen\ ;
+今程 < imahodo\ ;
+駒損 < komason\ ;
+罪障 < zaishou\ ;
+小店 < shouten\ ;
+地雷火 < jiraika\ ;
+公務員 < koumuin\ ;
+宿根 < shukkon\ ;
+月評 < geppyou\ ;
+案山子 < kakashi\ ;
+下部 < shimobe\ ;
+束群 < sokugun\ ;
+実母 < jitsubo\ ;
+不達 < futatsu\ ;
+古代語 < kodaigo\ ;
+生一本 < kiippon\ ;
+下達 < katatsu\ ;
+飛脚 < hikyaku\ ;
+町内 < chounai\ ;
+月見 < tsukimi\ ;
+俗塵 < zokujin\ ;
+個別 < kobetsu\ ;
+属名 < zokumei\ ;
+付着 < fuchaku\ ;
+上進 < joushin\ ;
+猟銃 < ryoujuu\ ;
+交絡 < kouraku\ ;
+何某 < nanibou\ ;
+身贔屓 < mibiiki\ ;
+仕着 < shikise\ ;
+木蔦 < kidzuta\ ;
+肉片 < nikuhen\ ;
+男優 < dan''yuu\ ;
+木蓮 < mokuren\ ;
+未整理 < miseiri\ ;
+予科生 < yokasei\ ;
+曲譜 < kyokufu\ ;
+肥溜 < koedame\ ;
+賞玩 < shougan\ ;
+借人 < karinin\ ;
+俊士 < shunshi\ ;
+書評 < shohyou\ ;
+密教 < mikkyou\ ;
+一道 < ichidou\ ;
+一遇 < ichiguu\ ;
+書証 < shoshou\ ;
+貫禄 < kanroku\ ;
+未経過 < mikeika\ ;
+越年 < etsunen\ ;
+一連 < ichiren\ ;
+三軸 < sanjiku\ ;
+老臣 < roushin\ ;
+条約 < jouyaku\ ;
+豆蔵 < mamezou\ ;
+余日 < yojitsu\ ;
+球界 < kyuukai\ ;
+作文 < sakubun\ ;
+海松貝 < mirugai\ ;
+低木 < teiboku\ ;
+馬方 < umakata\ ;
+乱臣 < ranshin\ ;
+何時 < nandoki\ ;
+赤手 < sekishu\ ;
+倒伏 < toufuku\ ;
+曲解 < kyokkai\ ;
+一輪 < ichirin\ ;
+尊容 < son''you\ ;
+上足 < jousoku\ ;
+両論 < ryouron\ ;
+一軍 < ichigun\ ;
+町人 < chounin\ ;
+上越 < jouetsu\ ;
+局員 < kyokuin\ ;
+専属 < senzoku\ ;
+何故 < naniyue\ ;
+介病 < kaibyou\ ;
+仏画 < butsuga\ ;
+脱字 < datsuji\ ;
+猛追 < moutsui\ ;
+贅沢 < zeitaku\ ;
+信号 < shingou\ ;
+田作 < densaku\ ;
+兵児帯 < hekoobi\ ;
+山中 < sanchuu\ ;
+本腹 < honpuku\ ;
+五節 < gosetsu\ ;
+主虹 < shuniji\ ;
+並製 < namisei\ ;
+甚六 < jinroku\ ;
+赤恥 < akahaji\ ;
+身奇麗 < migirei\ ;
+朱肉 < shuniku\ ;
+余接 < yosetsu\ ;
+検査員 < kensain\ ;
+甲乙 < kouotsu\ ;
+井筒 < idzutsu\ ;
+本能 < hon''nou\ ;
+瑣末 < samatsu\ ;
+人皇 < nin''nou\ ;
+人的 < jinteki\ ;
+脆弱 < zeijaku\ ;
+饑渇 < kikatsu\ ;
+主薬 < shuyaku\ ;
+危機感 < kikikan\ ;
+赤茄子 < akanasu\ ;
+官有 < kan''yuu\ ;
+他物 < tabutsu\ ;
+羽虫 < hamushi\ ;
+産休 < sankyuu\ ;
+作戦 < sakusen\ ;
+伯林 < berurin\ ;
+背教 < haikyou\ ;
+豊胸 < houkyou\ ;
+柳条 < ryuujou\ ;
+端武者 < hamusha\ ;
+生乳 < seinyuu\ ;
+印度人 < indojin\ ;
+内安打 < naianda\ ;
+肉池 < nikuchi\ ;
+三角 < sankaku\ ;
+下見 < shitami\ ;
+伏樋 < fusedoi\ ;
+肉汁 < nikujuu\ ;
+屋根板 < yaneita\ ;
+無期刑 < mukikei\ ;
+玄翁 < gen''nou\ ;
+記念碑 < kinenhi\ ;
+一説 < issetsu\ ;
+駐屯 < chuuton\ ;
+就労 < shuurou\ ;
+買物 < kaimono\ ;
+都市化 < toshika\ ;
+居候 < isourou\ ;
+服膺 < fukuyou\ ;
+枯渇 < kokatsu\ ;
+風習 < fuushuu\ ;
+乗羃 < joubeki\ ;
+屈伸 < kusshin\ ;
+俗僧 < zokusou\ ;
+府知事 < fuchiji\ ;
+内耳炎 < naijien\ ;
+本給 < honkyuu\ ;
+中葉 < chuuyou\ ;
+罪跡 < zaiseki\ ;
+飛礫 < tsubute\ ;
+条目 < joumoku\ ;
+一覧 < ichiran\ ;
+密度 < mitsudo\ ;
+上表 < jouhyou\ ;
+北京語 < pekingo\ ;
+下血 < geketsu\ ;
+足労 < sokurou\ ;
+小善 < shouzen\ ;
+仮決 < kaketsu\ ;
+井目 < seimoku\ ;
+尚又 < naomata\ ;
+犬小屋 < inugoya\ ;
+暗躍 < an''yaku\ ;
+彼岸会 < higan''e\ ;
+貨物 < kamotsu\ ;
+実技 < jitsugi\ ;
+本籤 < honkuji\ ;
+脱営 < datsuei\ ;
+体得 < taitoku\ ;
+本籍 < honseki\ ;
+小品 < shouhin\ ;
+有職 < yuusoku\ ;
+佳客 < kakyaku\ ;
+美術 < bijutsu\ ;
+赤子 < sekishi\ ;
+害心 < gaishin\ ;
+昼餐 < chuusan\ ;
+二着 < nichaku\ ;
+相弟子 < aideshi\ ;
+俗伝 < zokuden\ ;
+核子 < kakushi\ ;
+本箱 < honbako\ ;
+二直 < nichoku\ ;
+馬市 < umaichi\ ;
+何年 < nan''nen\ ;
+小口 < koguchi\ ;
+松煤 < shoubai\ ;
+本筋 < honsuji\ ;
+東独 < toudoku\ ;
+獣肉 < juuniku\ ;
+二百 < nihyaku\ ;
+曲舞 < kusemai\ ;
+珍獣 < chinjuu\ ;
+本章 < honshou\ ;
+主翼 < shuyoku\ ;
+群落 < gunraku\ ;
+飴玉 < amedama\ ;
+耄碌 < mouroku\ ;
+宮廷 < kyuutei\ ;
+就任 < shuunin\ ;
+妙齢 < myourei\ ;
+時雨 < shigure\ ;
+木立 < kodachi\ ;
+王立 < ouritsu\ ;
+小勇 < shouyuu\ ;
+職権 < shokken\ ;
+寄宿 < kishuku\ ;
+鳳凰座 < hououza\ ;
+背徳 < haitoku\ ;
+格外 < kakugai\ ;
+咽頭炎 < intouen\ ;
+上蔟 < jouzoku\ ;
+中背 < chuuzei\ ;
+赤外 < sekigai\ ;
+両舷 < ryougen\ ;
+季末 < kimatsu\ ;
+松濤 < shoutou\ ;
+柄杓 < hishaku\ ;
+独走 < dokusou\ ;
+投影図 < toueizu\ ;
+玉稿 < gyokkou\ ;
+便侫 < ben''nei\ ;
+不衛生 < fueisei\ ;
+他殺 < tasatsu\ ;
+下葉 < shitaba\ ;
+足代 < ashidai\ ;
+中老 < chuurou\ ;
+月給 < gekkyuu\ ;
+駐在 < chuuzai\ ;
+両腕 < ryouude\ ;
+獄舎 < gokusha\ ;
+導入 < dounyuu\ ;
+整理部 < seiribu\ ;
+入母屋 < irimoya\ ;
+乙種 < otsushu\ ;
+牝鶏 < mendori\ ;
+多趣味 < tashumi\ ;
+孟春 < moushun\ ;
+供勢 < tomozei\ ;
+審問 < shinmon\ ;
+介殻 < kaikaku\ ;
+一葉 < ichiyou\ ;
+最終 < saishuu\ ;
+乳癌 < nyuugan\ ;
+耽溺 < tandeki\ ;
+住宅 < juutaku\ ;
+超勤 < choukin\ ;
+老病 < roubyou\ ;
+賓格 < hinkaku\ ;
+朝礼 < chourei\ ;
+音記号 < onkigou\ ;
+小便 < shonben\ ;
+封入 < fuunyuu\ ;
+春雷 < shunrai\ ;
+小坊主 < kobouzu\ ;
+中編 < chuuhen\ ;
+未着 < michaku\ ;
+書経 < shokyou\ ;
+寸刻 < sunkoku\ ;
+事物 < jibutsu\ ;
+仕業 < shiwaza\ ;
+日本画 < nihonga\ ;
+現業 < gengyou\ ;
+曳網 < hikiami\ ;
+尊信 < sonshin\ ;
+超凡 < choubon\ ;
+仲断 < chuudan\ ;
+小伝 < shouden\ ;
+鞦韆 < buranko\ ;
+紀元後 < kigengo\ ;
+乱用 < ran''you\ ;
+七色 < nanairo\ ;
+上膊 < jouhaku\ ;
+何奴 < doyatsu\ ;
+体温器 < taionki\ ;
+一芸 < ichigei\ ;
+犬釘 < inukugi\ ;
+未発 < mihatsu\ ;
+小人 < shounin\ ;
+佗声 < wabigoe\ ;
+一色 < hitoiro\ ;
+主筋 < shusuji\ ;
+中糸 < chuuito\ ;
+資格 < shikaku\ ;
+書籍 < shoseki\ ;
+宿場 < shukuba\ ;
+春闘 < shuntou\ ;
+暴落 < bouraku\ ;
+京洛 < keiraku\ ;
+万能 < man''nou\ ;
+三育 < san''iku\ ;
+三股 < sanmata\ ;
+一膳 < ichizen\ ;
+特電 < tokuden\ ;
+順調 < junchou\ ;
+羽箒 < habouki\ ;
+脚光 < kyakkou\ ;
+独裁 < dokusai\ ;
+羊膜 < youmaku\ ;
+末生 < suenari\ ;
+査察 < sasatsu\ ;
+上翼 < jouyoku\ ;
+休怠 < kyuutai\ ;
+乱獲 < rankaku\ ;
+義絶 < gizetsu\ ;
+昇順 < shoujun\ ;
+現有 < gen''yuu\ ;
+貝殼 < kaigara\ ;
+物音 < monooto\ ;
+微温湯 < biontou\ ;
+主神 < shushin\ ;
+玉璽 < gyokuji\ ;
+会席 < kaiseki\ ;
+狼藉 < rouzeki\ ;
+羊肉 < youniku\ ;
+預血 < yoketsu\ ;
+貴婦人 < kifujin\ ;
+風疹 < fuushin\ ;
+玉瑛 < gyokuei\ ;
+宿営 < shukuei\ ;
+他日 < tajitsu\ ;
+老熟 < roujuku\ ;
+資料 < shiryou\ ;
+駐兵 < chuuhei\ ;
+右大臣 < udaijin\ ;
+低圧 < teiatsu\ ;
+松楓 < shoufuu\ ;
+今朝 < konchou\ ;
+丹碧 < tanpeki\ ;
+暮色 < boshoku\ ;
+仕方 < shikata\ ;
+帰化人 < kikajin\ ;
+今更 < imasara\ ;
+密告 < mikkoku\ ;
+犯跡 < hanseki\ ;
+貴札 < kisatsu\ ;
+飄然 < hyouzen\ ;
+今暁 < kongyou\ ;
+早馬 < hayauma\ ;
+作品 < sakuhin\ ;
+負極 < fukyoku\ ;
+戦後派 < sengoha\ ;
+人格 < jinkaku\ ;
+本物 < honmono\ ;
+今時 < imadoki\ ;
+来歴 < raireki\ ;
+音訳 < on''yaku\ ;
+今春 < konshun\ ;
+貯木 < choboku\ ;
+買春 < baishun\ ;
+富力 < furyoku\ ;
+上級 < joukyuu\ ;
+上紙 < uwagami\ ;
+聚散 < shuusan\ ;
+上紐 < uwahimo\ ;
+今方 < imagata\ ;
+木版 < mokuhan\ ;
+木片 < mokuhen\ ;
+背圧 < haiatsu\ ;
+肉弾 < nikudan\ ;
+獄窓 < gokusou\ ;
+学年 < gakunen\ ;
+客土 < kyakudo\ ;
+譴責 < kenseki\ ;
+低唱 < teishou\ ;
+旧風 < kyuufuu\ ;
+存念 < zon''nen\ ;
+率爾 < sotsuji\ ;
+学帽 < gakubou\ ;
+本然 < hon''nen\ ;
+狂言 < kyougen\ ;
+仕掛 < shikake\ ;
+株券 < kabuken\ ;
+飛沫 < himatsu\ ;
+風狂 < fuukyou\ ;
+子息 < shisoku\ ;
+馬匹 < bahitsu\ ;
+書目 < shomoku\ ;
+上箱 < uwabako\ ;
+胸像 < kyouzou\ ;
+胴元 < doumoto\ ;
+暗色 < anshoku\ ;
+完壁 < kanbeki\ ;
+胆嚢 < tan''nou\ ;
+豊熟 < houjuku\ ;
+上策 < jousaku\ ;
+顎紐 < agohimo\ ;
+木炭 < mokutan\ ;
+余力 < yoryoku\ ;
+受像機 < juzouki\ ;
+中盤 < chuuban\ ;
+記念樹 < kinenju\ ;
+耳栓 < mimisen\ ;
+余割 < yokatsu\ ;
+万策 < bansaku\ ;
+令息 < reisoku\ ;
+粉微塵 < komijin\ ;
+片面 < katamen\ ;
+為政者 < iseisha\ ;
+特配 < tokuhai\ ;
+乳清 < nyuusei\ ;
+日露 < nichiro\ ;
+大犬座 < ooinuza\ ;
+日時計 < hidokei\ ;
+乳液 < nyuueki\ ;
+献立 < kondate\ ;
+両眼 < ryougan\ ;
+何処 < dokoira\ ;
+豆炭 < mametan\ ;
+実員 < jitsuin\ ;
+珍本 < chinpon\ ;
+代役 < daiyaku\ ;
+乱流 < ranryuu\ ;
+一端 < ippashi\ ;
+珍書 < chinsho\ ;
+何共 < nantomo\ ;
+寒中 < kanchuu\ ;
+時事論 < jijiron\ ;
+中瓶 < chuubin\ ;
+万福 < manpuku\ ;
+職工 < shokkou\ ;
+宅地 < takuchi\ ;
+乳汁 < nyuujuu\ ;
+校倉 < azekura\ ;
+翕然 < kyuuzen\ ;
+保養院 < hoyouin\ ;
+新鮮 < shinsen\ ;
+豊漁 < houryou\ ;
+譫言 < uwagoto\ ;
+朝潮 < asashio\ ;
+自然薯 < jinenjo\ ;
+保健所 < hokenjo\ ;
+風潮 < fuuchou\ ;
+胴中 < dounaka\ ;
+頚肉 < keiniku\ ;
+作例 < sakurei\ ;
+離弁花 < ribenka\ ;
+本流 < honryuu\ ;
+密事 < mitsuji\ ;
+仰山 < gyousan\ ;
+仏恩 < butsuon\ ;
+次世代 < jisedai\ ;
+他律 < taritsu\ ;
+来春 < raiharu\ ;
+不器用 < bukiyou\ ;
+現役 < gen''eki\ ;
+一礼 < ichirei\ ;
+順良 < junryou\ ;
+上石 < uwaishi\ ;
+実務 < jitsumu\ ;
+子局 < kokyoku\ ;
+手奇麗 < tegirei\ ;
+下着 < shitagi\ ;
+未決 < miketsu\ ;
+大黒 < daikoku\ ;
+塩基性 < enkisei\ ;
+仕度 < shitaku\ ;
+学外 < gakugai\ ;
+頬紅 < hoobeni\ ;
+面長 < omonaga\ ;
+識語 < shikigo\ ;
+低俗 < teizoku\ ;
+下目 < shitame\ ;
+杏林 < kyourin\ ;
+孑孑 < boufuri\ ;
+暗緑 < anryoku\ ;
+馬主 < banushi\ ;
+特赦 < tokusha\ ;
+不発 < fuhatsu\ ;
+何人 < nanpito\ ;
+記念日 < kinenbi\ ;
+高祖父 < kousofu\ ;
+今日中 < kyoujuu\ ;
+職安 < shokuan\ ;
+景色 < keshiki\ ;
+村有 < son''yuu\ ;
+材木 < zaimoku\ ;
+朧気 < oboroge\ ;
+万目 < banmoku\ ;
+露骨 < rokotsu\ ;
+仏座 < butsuza\ ;
+飛札 < hisatsu\ ;
+大鷺 < daisagi\ ;
+論駁 < ronbaku\ ;
+風流 < fuuryuu\ ;
+学報 < gakuhou\ ;
+肉声 < nikusei\ ;
+代将 < daishou\ ;
+豊沃 < houyoku\ ;
+萎黄病 < ioubyou\ ;
+聖廟 < seibyou\ ;
+家主 < yanushi\ ;
+一着 < itchaku\ ;
+一眼 < ichigan\ ;
+一眸 < ichibou\ ;
+識見 < shikken\ ;
+某国 < boukoku\ ;
+杉材 < sugizai\ ;
+一眠 < ichimin\ ;
+仁徳 < jintoku\ ;
+宛先 < atesaki\ ;
+擬古文 < gikobun\ ;
+新風 < shinpuu\ ;
+一直 < itchoku\ ;
+今年 < kon''nen\ ;
+胚乳 < hainyuu\ ;
+二日 < futsuka\ ;
+断食 < danjiki\ ;
+乳棒 < nyuubou\ ;
+下略 < geryaku\ ;
+瑞兆 < zuichou\ ;
+新顔 < shingao\ ;
+万病 < manbyou\ ;
+韻脚 < inkyaku\ ;
+地衣類 < chiirui\ ;
+翼棟 < yokutou\ ;
+三男 < san''nan\ ;
+材料 < zairyou\ ;
+婆羅門 < baramon\ ;
+官僚 < kanryou\ ;
+文鳥 < bunchou\ ;
+人徳 < nintoku\ ;
+仰天 < gyouten\ ;
+賊害 < zokugai\ ;
+題目 < daimoku\ ;
+人形 < ningyou\ ;
+牛車 < gyuusha\ ;
+賊子 < zokushi\ ;
+秘書課 < hishoka\ ;
+本業 < hongyou\ ;
+印画紙 < ingashi\ ;
+貧弱 < hinjaku\ ;
+爆風 < bakufuu\ ;
+老朽 < roukyuu\ ;
+早速 < sassoku\ ;
+旧道 < kyuudou\ ;
+老木 < rouboku\ ;
+特認 < tokunin\ ;
+本棚 < hondana\ ;
+妙趣 < myoushu\ ;
+物象 < busshou\ ;
+仏寺 < butsuji\ ;
+予想屋 < yosouya\ ;
+慈善家 < jizenka\ ;
+末梢 < masshou\ ;
+論難 < ron''nan\ ;
+土曜日 < doyoubi\ ;
+上玉 < joudama\ ;
+論集 < ronshuu\ ;
+林学 < ringaku\ ;
+学問 < gakumon\ ;
+豪族 < gouzoku\ ;
+職場 < shokuba\ ;
+本格 < honkaku\ ;
+会則 < kaisoku\ ;
+主流 < shuryuu\ ;
+既述 < kijutsu\ ;
+義烈 < giretsu\ ;
+降雨林 < kouurin\ ;
+物議 < butsugi\ ;
+貸家 < kashiya\ ;
+有毒 < yuudoku\ ;
+新開 < shinkai\ ;
+下物 < kabutsu\ ;
+仙女 < sen''nyo\ ;
+爆雷 < bakurai\ ;
+伏勢 < fusezei\ ;
+上物 < joumono\ ;
+朝風呂 < asaburo\ ;
+枠外 < wakugai\ ;
+本朝 < honchou\ ;
+特装 < tokusou\ ;
+領空 < ryoukuu\ ;
+学名 < gakumei\ ;
+旧蹟 < furuato\ ;
+末期 < matsugo\ ;
+木杯 < mokuhai\ ;
+再下付 < saikafu\ ;
+洋画家 < yougaka\ ;
+謬論 < byuuron\ ;
+木材 < mokuzai\ ;
+学友 < gakuyuu\ ;
+木本 < mokuhon\ ;
+下熱 < genetsu\ ;
+定規座 < jougiza\ ;
+来復 < raifuku\ ;
+木曜 < mokuyou\ ;
+曲浦 < kyokuho\ ;
+類焼 < ruishou\ ;
+風格 < fuukaku\ ;
+松屋 < matsuya\ ;
+頭目 < toumoku\ ;
+九月 < kugatsu\ ;
+伏兵 < fukuhei\ ;
+特融 < tokuyuu\ ;
+乱撃 < rangeki\ ;
+獣欲 < juuyoku\ ;
+天領 < tenryou\ ;
+需用家 < juyouka\ ;
+保健婦 < hokenfu\ ;
+豆板 < mameita\ ;
+購入 < kounyuu\ ;
+餅屋 < mochiya\ ;
+嫡披 < chakuhi\ ;
+朝来 < chourai\ ;
+謬見 < byuuken\ ;
+下火 < shitabi\ ;
+豆本 < mamehon\ ;
+高祖母 < kousobo\ ;
+妙計 < myoukei\ ;
+今夕 < kon''yuu\ ;
+九星 < kyuusei\ ;
+姿絵 < sugatae\ ;
+職員 < shokuin\ ;
+夜食 < yashoku\ ;
+球団 < kyuudan\ ;
+外耳炎 < gaijien\ ;
+多食 < tashoku\ ;
+肖像 < shouzou\ ;
+東屋 < azumaya\ ;
+天雲 < amagumo\ ;
+不潔 < fuketsu\ ;
+不裁可 < fusaika\ ;
+学内 < gakunai\ ;
+中正 < chuusei\ ;
+文革 < bunkaku\ ;
+束帯 < sokutai\ ;
+警備員 < keibiin\ ;
+期日 < kijitsu\ ;
+食後 < shokugo\ ;
+不滅 < fumetsu\ ;
+朝方 < asagata\ ;
+夕風 < yuukaze\ ;
+音節 < onsetsu\ ;
+大陸 < tairiku\ ;
+誤作動 < gosadou\ ;
+聴取 < choushu\ ;
+独眼 < dokugan\ ;
+下湯 < shimoyu\ ;
+夜露 < yotsuyu\ ;
+人声 < hitogoe\ ;
+珍宝 < chinpou\ ;
+妄評 < mouhyou\ ;
+職務 < shokumu\ ;
+飯屋 < meshiya\ ;
+板壁 < itakabe\ ;
+人境 < jinkyou\ ;
+乾徳 < kentoku\ ;
+仮名本 < kanahon\ ;
+書棚 < shodana\ ;
+夕靄 < yuumoya\ ;
+来宅 < raitaku\ ;
+置物 < okimono\ ;
+獄死 < gokushi\ ;
+末技 < matsugi\ ;
+札所 < fudasho\ ;
+夕霧 < yuugiri\ ;
+頒白 < hanpaku\ ;
+上海 < shanhai\ ;
+斤量 < kinryou\ ;
+新道 < shindou\ ;
+晩秋 < banshuu\ ;
+上流 < jouryuu\ ;
+乗換 < norikae\ ;
+三流 < sanryuu\ ;
+上洛 < jouraku\ ;
+末成 < uranari\ ;
+片親 < kataoya\ ;
+賠償 < baishou\ ;
+翌晩 < yokuban\ ;
+九拝 < kyuuhai\ ;
+仮免 < karimen\ ;
+丸材 < maruzai\ ;
+任侠 < ninkyou\ ;
+肉体 < nikutai\ ;
+月日 < tsukihi\ ;
+敵陣 < tekijin\ ;
+項目 < koumoku\ ;
+変革 < henkaku\ ;
+一浪 < ichirou\ ;
+料金 < ryoukin\ ;
+老弱 < roujaku\ ;
+夕闇 < yuuyami\ ;
+数隻 < suuseki\ ;
+新車 < shinsha\ ;
+中枢 < chuusuu\ ;
+事局 < jikyoku\ ;
+文鎮 < bunchin\ ;
+仮借 < kashaku\ ;
+代入 < dainyuu\ ;
+一泡 < hitoawa\ ;
+雨風 < amekaze\ ;
+豪州 < goushuu\ ;
+助産所 < josanjo\ ;
+革装 < kawasou\ ;
+仏印 < futsuin\ ;
+主教 < shukyou\ ;
+一決 < ikketsu\ ;
+事実 < jijitsu\ ;
+予察 < yosatsu\ ;
+一汗 < hitoase\ ;
+諸訳 < showake\ ;
+姦策 < kansaku\ ;
+仲仕 < nakashi\ ;
+仲介 < chuukai\ ;
+仲人 < nakoudo\ ;
+京地 < kyouchi\ ;
+買収 < baishuu\ ;
+一毫 < ichigou\ ;
+枠内 < wakunai\ ;
+一毛 < ichimou\ ;
+耳垢 < mimiaka\ ;
+牧草 < bokusou\ ;
+館内 < kan''nai\ ;
+中旬 < chuujun\ ;
+縦隔 < juukaku\ ;
+大時代 < oojidai\ ;
+枸櫞酸 < kuensan\ ;
+雑駁 < zappaku\ ;
+頓狂 < tonkyou\ ;
+虚無僧 < komusou\ ;
+失透 < shittou\ ;
+両替 < ryougae\ ;
+雪隠 < setchin\ ;
+嬰記号 < eikigou\ ;
+末座 < matsuza\ ;
+飴坊 < amenbou\ ;
+保健医 < hoken''i\ ;
+代作 < daisaku\ ;
+丸損 < maruzon\ ;
+林内 < rin''nai\ ;
+末広 < suehiro\ ;
+頭字語 < toujigo\ ;
+代休 < daikyuu\ ;
+牧舎 < bokusha\ ;
+仏具 < butsugu\ ;
+末席 < masseki\ ;
+謹聴 < kinchou\ ;
+諸行 < shogyou\ ;
+木太刀 < kidachi\ ;
+玉座 < gyokuza\ ;
+本州 < honshuu\ ;
+猛毒 < moudoku\ ;
+緘黙 < kanmoku\ ;
+介入 < kainyuu\ ;
+曝書 < bakusho\ ;
+豹変 < hyouhen\ ;
+救難 < kyuunan\ ;
+両断 < ryoudan\ ;
+奥行 < okuyuki\ ;
+朝廷 < choutei\ ;
+文通 < buntsuu\ ;
+食塩 < shokuen\ ;
+熱雲 < netsuun\ ;
+蓮華座 < rengeza\ ;
+教門 < kyoumon\ ;
+雑音 < zatsuon\ ;
+狛犬 < komainu\ ;
+珍問 < chinmon\ ;
+愛書家 < aishoka\ ;
+雁首 < gankubi\ ;
+暦法 < rekihou\ ;
+天軸 < tenjiku\ ;
+語釈 < goshaku\ ;
+人前 < hitomae\ ;
+馬刀貝 < mategai\ ;
+現任 < gen''nin\ ;
+夜道 < yomichi\ ;
+論調 < ronchou\ ;
+乙巡 < otsujun\ ;
+夏野 < natsuno\ ;
+外郭 < gaikaku\ ;
+珍品 < chinpin\ ;
+朝市 < asaichi\ ;
+奉読 < houdoku\ ;
+昼礼 < chuurei\ ;
+末尾 < matsubi\ ;
+下期 < shimoki\ ;
+数量 < suuryou\ ;
+燗酒 < kanzake\ ;
+仕事 < shigoto\ ;
+論評 < ronpyou\ ;
+上服 < uwafuku\ ;
+木履 < pokkuri\ ;
+末寺 < matsuji\ ;
+論証 < ronshou\ ;
+物置 < monooki\ ;
+服従 < fukujuu\ ;
+三月 < mitsuki\ ;
+趣意書 < shuisho\ ;
+服役 < fukueki\ ;
+両損 < ryouzon\ ;
+牛脂 < gyuushi\ ;
+牧羊 < bokuyou\ ;
+変量 < henryou\ ;
+万有 < ban''yuu\ ;
+本宅 < hontaku\ ;
+曲技 < kyokugi\ ;
+青蛙 < aogaeru\ ;
+有徳 < yuutoku\ ;
+特級 < tokkyuu\ ;
+献木 < kenboku\ ;
+飛地 < tobichi\ ;
+猫板 < nekoita\ ;
+日英 < nichiei\ ;
+請謁 < seietsu\ ;
+易経 < ekikyou\ ;
+貝割 < kaiwari\ ;
+不日 < fujitsu\ ;
+暖流 < danryuu\ ;
+青虫 < aomushi\ ;
+三春 < sanshun\ ;
+一札 < issatsu\ ;
+耐圧 < taiatsu\ ;
+縫針 < nuibari\ ;
+運搬費 < unpanhi\ ;
+頂点 < chouten\ ;
+一曲 < ikkyoku\ ;
+丹念 < tan''nen\ ;
+音物 < inmotsu\ ;
+日舞 < nichibu\ ;
+旧臘 < kyuurou\ ;
+獣心 < juushin\ ;
+請託 < seitaku\ ;
+老境 < roukyou\ ;
+攘夷論 < jouiron\ ;
+懐疑派 < kaigiha\ ;
+今一 < imaichi\ ;
+万斛 < bankoku\ ;
+無煙炭 < muentan\ ;
+三教 < sankyou\ ;
+一晩 < hitoban\ ;
+天象 < tenshou\ ;
+晩熟 < banjuku\ ;
+妥結 < daketsu\ ;
+春秋 < haruaki\ ;
+牛缶 < gyuukan\ ;
+安静時 < anseiji\ ;
+最強 < saikyou\ ;
+変速 < hensoku\ ;
+変通 < hentsuu\ ;
+暗殺 < ansatsu\ ;
+敵軍 < tekigun\ ;
+特等 < tokutou\ ;
+片腕 < kataude\ ;
+一旬 < ichijun\ ;
+女生徒 < joseito\ ;
+乞婿 < koimuko\ ;
+虎燕拳 < koenken\ ;
+頸椎 < keitsui\ ;
+責任 < sekinin\ ;
+顔料 < ganryou\ ;
+正常位 < seijoui\ ;
+末女 < matsujo\ ;
+朱墨 < shuboku\ ;
+丁数 < chousuu\ ;
+旗色 < hatairo\ ;
+補助金 < hojokin\ ;
+女色 < joshoku\ ;
+旧聞 < kyuubun\ ;
+阿婆擦 < abazure\ ;
+片肺 < katahai\ ;
+朱塗 < shunuri\ ;
+領水 < ryousui\ ;
+面舵 < omokaji\ ;
+丸帯 < maruobi\ ;
+琵琶行 < biwakou\ ;
+総高 < soudaka\ ;
+声量 < seiryou\ ;
+助産婦 < josanpu\ ;
+朧夜 < oboroyo\ ;
+壁面 < hekimen\ ;
+翰墨 < kanboku\ ;
+玄妙 < genmyou\ ;
+修羅場 < shuraba\ ;
+羸弱 < ruijaku\ ;
+九大 < kyuudai\ ;
+三振 < sanshin\ ;
+不抜 < fubatsu\ ;
+大詰 < oodzume\ ;
+豪商 < goushou\ ;
+手一杯 < teippai\ ;
+中年 < chuunen\ ;
+一握 < ichiaku\ ;
+曲庇 < kyokuhi\ ;
+説諭 < setsuyu\ ;
+無線機 < musenki\ ;
+中帽 < chuubou\ ;
+春眠 < shunmin\ ;
+頬桁 < hoogeta\ ;
+万灯会 < mandoue\ ;
+牧童 < bokudou\ ;
+東京 < toukyou\ ;
+本国 < hongoku\ ;
+説話 < setsuwa\ ;
+二列 < niretsu\ ;
+一括 < ikkatsu\ ;
+非職 < hishoku\ ;
+改鋳 < kaichuu\ ;
+猛撃 < mougeki\ ;
+敏速 < binsoku\ ;
+頬杖 < hoodzue\ ;
+新著 < shincho\ ;
+水位計 < suiikei\ ;
+羞恥 < shuuchi\ ;
+九地 < kyuuchi\ ;
+明確 < meikaku\ ;
+総額 < sougaku\ ;
+二八 < nihachi\ ;
+漢方医 < kanpoui\ ;
+景況 < keikyou\ ;
+日給 < nikkyuu\ ;
+羽目板 < hameita\ ;
+具体案 < gutaian\ ;
+集金 < shuukin\ ;
+雨足 < ameashi\ ;
+暦数 < rekisuu\ ;
+新茶 < shincha\ ;
+風圧 < fuuatsu\ ;
+総革 < sougawa\ ;
+中尊 < chuuzon\ ;
+明瞭 < meiryou\ ;
+縷説 < rusetsu\ ;
+集配 < shuuhai\ ;
+月央 < getsuou\ ;
+中宮 < chuuguu\ ;
+綿飴 < wataame\ ;
+月夜 < tsukiyo\ ;
+日本化 < nihonka\ ;
+三徳 < santoku\ ;
+陰鬱 < in''utsu\ ;
+緑陰 < ryokuin\ ;
+敵視 < tekishi\ ;
+放逸 < houitsu\ ;
+研磨機 < kenmaki\ ;
+上役 < uwayaku\ ;
+増額 < zougaku\ ;
+一息 < hitoiki\ ;
+乳剤 < nyuuzai\ ;
+明白 < meihaku\ ;
+大雑把 < oozappa\ ;
+下座 < shimoza\ ;
+古井戸 < furuido\ ;
+一念 < ichinen\ ;
+万引 < manbiki\ ;
+胃潰瘍 < ikaiyou\ ;
+特産 < tokusan\ ;
+木口 < kiguchi\ ;
+一徹 < ittetsu\ ;
+顔役 < kaoyaku\ ;
+翻刻 < honkoku\ ;
+三年 < san''nen\ ;
+日立 < hitachi\ ;
+救貧 < kyuuhin\ ;
+断腸 < danchou\ ;
+杏仁 < kyounin\ ;
+万年 < man''nen\ ;
+物的 < butteki\ ;
+陸風 < rikufuu\ ;
+多義性 < tagisei\ ;
+一式 < isshiki\ ;
+状況 < joukyou\ ;
+甘露煮 < kanroni\ ;
+新聞 < shinbun\ ;
+本則 < honsoku\ ;
+中外 < chuugai\ ;
+乙女座 < otomeza\ ;
+奴等 < yatsura\ ;
+独断 < dokudan\ ;
+詰責 < kisseki\ ;
+耐久 < taikyuu\ ;
+難読 < nandoku\ ;
+顧客 < kokyaku\ ;
+独文 < dokubun\ ;
+保守派 < hoshuha\ ;
+旗竿 < hatazao\ ;
+霊薬 < reiyaku\ ;
+教訓 < kyoukun\ ;
+不屈 < fukutsu\ ;
+木刀 < bokutou\ ;
+新羅 < shiragi\ ;
+増長 < zouchou\ ;
+暁星 < gyousei\ ;
+険難 < ken''nan\ ;
+叙事詩 < jojishi\ ;
+上履 < uwabaki\ ;
+本元 < honmoto\ ;
+大掃除 < oosouji\ ;
+烏龍茶 < ūroncha\ ;
+中堅 < chuuken\ ;
+夏蚕 < natsugo\ ;
+女王蟻 < joouari\ ;
+半母音 < hanboin\ ;
+三尺 < sanjaku\ ;
+天草 < tengusa\ ;
+月商 < gesshou\ ;
+無政府 < museifu\ ;
+下宿 < geshuku\ ;
+議決 < giketsu\ ;
+乱作 < ransaku\ ;
+下家 < shitaya\ ;
+牛痘 < gyuutou\ ;
+物理 < butsuri\ ;
+更地 < sarachi\ ;
+牛疫 < gyuueki\ ;
+義和団 < giwadan\ ;
+朝凪 < asanagi\ ;
+一尺 < isshaku\ ;
+独探 < dokutan\ ;
+緑野 < ryokuya\ ;
+七宝 < shippou\ ;
+旧盤 < kyuuban\ ;
+詳解 < shoukai\ ;
+契約 < keiyaku\ ;
+難行 < nangyou\ ;
+月収 < gesshuu\ ;
+雑話 < zatsuwa\ ;
+旧盆 < kyuubon\ ;
+一宿 < isshuku\ ;
+無骨 < bukotsu\ ;
+好事家 < kouzuka\ ;
+売行 < ureyuki\ ;
+頁数 < pējisuu\ ;
+断続 < danzoku\ ;
+音曲 < ongyoku\ ;
+一存 < ichizon\ ;
+夕菅 < yuusuge\ ;
+施策 < shisaku\ ;
+日白 < nippaku\ ;
+大腸 < daichou\ ;
+行為者 < kouisha\ ;
+牢獄 < rougoku\ ;
+犬橇 < inuzori\ ;
+与奪 < yodatsu\ ;
+本人 < hon''nin\ ;
+熟談 < jukudan\ ;
+機関庫 < kikanko\ ;
+機関座 < kikanza\ ;
+牡猫 < osuneko\ ;
+晩春 < banshun\ ;
+独房 < dokubou\ ;
+新米 < shinmai\ ;
+方策 < housaku\ ;
+犬槙 < inumaki\ ;
+木仏 < kibutsu\ ;
+早番 < hayaban\ ;
+本丸 < honmaru\ ;
+晩方 < bangata\ ;
+繭紬 < kenchuu\ ;
+青票 < seihyou\ ;
+猛将 < moushou\ ;
+同意見 < douiken\ ;
+丈夫 < masurao\ ;
+月利 < getsuri\ ;
+改訳 < kaiyaku\ ;
+増量 < zouryou\ ;
+零落 < reiraku\ ;
+丸十 < marujuu\ ;
+集計 < shuukei\ ;
+話術 < wajutsu\ ;
+牝犬 < mesuinu\ ;
+熟覧 < jukuran\ ;
+熟視 < jukushi\ ;
+面目 < menmoku\ ;
+煎鍋 < irinabe\ ;
+玄人 < kurouto\ ;
+断箱 < danbako\ ;
+議事堂 < gijidou\ ;
+填隙 < tengeki\ ;
+上塗 < uwanuri\ ;
+一如 < ichinyo\ ;
+不埒 < furachi\ ;
+緊迫 < kinpaku\ ;
+万境 < bankyou\ ;
+論策 < ronsaku\ ;
+訳載 < yakusai\ ;
+明澄 < meichou\ ;
+一大 < ichidai\ ;
+評論 < hyouron\ ;
+調練 < chouren\ ;
+中原 < chuugen\ ;
+誤脱 < godatsu\ ;
+読者 < dokusha\ ;
+売薬 < baiyaku\ ;
+豆乳 < tounyuu\ ;
+一声 < hitokoe\ ;
+天糸瓜 < hechima\ ;
+保安林 < hoanrin\ ;
+腐葉土 < fuyoudo\ ;
+下地 < shitaji\ ;
+増進 < zoushin\ ;
+面疔 < menchou\ ;
+頂戴 < choudai\ ;
+論究 < ronkyuu\ ;
+新税 < shinzei\ ;
+海豚座 < irukaza\ ;
+下図 < shitazu\ ;
+自衛隊 < jieitai\ ;
+改行 < kaigyou\ ;
+語脈 < gomyaku\ ;
+繊維素 < sen''iso\ ;
+三国 < sangoku\ ;
+両名 < ryoumei\ ;
+随身 < zuishin\ ;
+無雑 < muzatsu\ ;
+移行性 < ikousei\ ;
+中前 < chuuzen\ ;
+親鸞 < shinran\ ;
+電脳 < den''nou\ ;
+湯湯婆 < yutanpo\ ;
+中分 < chuubun\ ;
+絶頂 < zetchou\ ;
+頑強 < gankyou\ ;
+繋縛 < keibaku\ ;
+太糸 < futoito\ ;
+交尾期 < koubiki\ ;
+始業 < shigyou\ ;
+一団 < ichidan\ ;
+早熟 < soujuku\ ;
+誇色 < koshoku\ ;
+託送 < takusou\ ;
+雌蘂 < meshibe\ ;
+順応 < jun''nou\ ;
+陸送 < rikusou\ ;
+月事 < getsuji\ ;
+親鳥 < oyadori\ ;
+特段 < tokudan\ ;
+両前 < ryoumae\ ;
+大粒 < ootsubu\ ;
+訓迪 < kunteki\ ;
+陶磁器 < toujiki\ ;
+特殊 < tokushu\ ;
+境遇 < kyouguu\ ;
+試薬 < shiyaku\ ;
+重馬場 < omobaba\ ;
+詐術 < sajutsu\ ;
+両分 < ryoubun\ ;
+歳時記 < saijiki\ ;
+阿多福 < otafuku\ ;
+不吉 < fukitsu\ ;
+上告 < joukoku\ ;
+御節介 < osekkai\ ;
+陸軍 < rikugun\ ;
+亜麻仁油 < amaniyu\ ;
+新盤 < shinban\ ;
+韻律 < inritsu\ ;
+暴圧 < bouatsu\ ;
+許諾 < kyodaku\ ;
+爆砕 < bakusai\ ;
+両像 < ryouzou\ ;
+狂態 < kyoutai\ ;
+婿入 < mukoiri\ ;
+訳詩 < yakushi\ ;
+離脱 < ridatsu\ ;
+昇段 < shoudan\ ;
+牧民 < bokumin\ ;
+天窓 < tenmado\ ;
+一命 < ichimei\ ;
+教育 < kyouiku\ ;
+一味 < hitoaji\ ;
+失禁 < shikkin\ ;
+総評 < souhyou\ ;
+妙法 < myouhou\ ;
+親骨 < oyabone\ ;
+書中 < shochuu\ ;
+万博 < banpaku\ ;
+番小屋 < bangoya\ ;
+音律 < onritsu\ ;
+下劣 < geretsu\ ;
+愛犬家 < aikenka\ ;
+三助 < sansuke\ ;
+両便 < ryouben\ ;
+耽美派 < tanbiha\ ;
+春本 < shunpon\ ;
+七十 < nanajuu\ ;
+覿面 < tekimen\ ;
+万力 < manriki\ ;
+丁半 < chouhan\ ;
+大福 < daifuku\ ;
+天祐 < ten''yuu\ ;
+昨晩 < sakuban\ ;
+保育所 < hoikujo\ ;
+晩年 < ban''nen\ ;
+照覧 < shouran\ ;
+緊要 < kin''you\ ;
+妨業 < bougyou\ ;
+両人 < ryounin\ ;
+観音 < kan''non\ ;
+時折 < tokiori\ ;
+遊離基 < yuuriki\ ;
+撰録 < senroku\ ;
+互助会 < gojokai\ ;
+改良 < kairyou\ ;
+施物 < semotsu\ ;
+奮激 < fungeki\ ;
+両三 < ryousan\ ;
+電算 < densoro\ ;
+結露 < ketsuro\ ;
+教練 < kyouren\ ;
+上側 < uwagawa\ ;
+姦悪 < kan''aku\ ;
+補助線 < hojosen\ ;
+角錐 < kakusui\ ;
+結集 < kesshuu\ ;
+下値 < shitane\ ;
+女湯 < on''nayu\ ;
+一元 < ichigen\ ;
+羅列 < raretsu\ ;
+暖国 < dankoku\ ;
+事務所 < jimusho\ ;
+陳謝 < chinsha\ ;
+一億 < ichioku\ ;
+訓読 < kundoku\ ;
+爛熟 < ranjuku\ ;
+明朝 < minchou\ ;
+託言 < takugen\ ;
+領域 < ryouiki\ ;
+言責 < genseki\ ;
+保護金 < hogokin\ ;
+太白 < taihaku\ ;
+特旨 < tokushi\ ;
+天皇 < ten''nou\ ;
+数秒 < suubyou\ ;
+散策 < sansaku\ ;
+万作 < mansaku\ ;
+明晰 < meiseki\ ;
+晩学 < bangaku\ ;
+明晩 < myouban\ ;
+一倍 < ichibai\ ;
+終電 < shuuden\ ;
+日欧 < nichiou\ ;
+明星 < myoujou\ ;
+三人 < san''nin\ ;
+縦笛 < tatebue\ ;
+集群 < shuugun\ ;
+万人 < man''nin\ ;
+大病 < taibyou\ ;
+菓子器 < kashiki\ ;
+頭取 < toudori\ ;
+雨笠 < amagasa\ ;
+縦穴 < tateana\ ;
+一任 < ichinin\ ;
+大男 < oootoko\ ;
+罰則 < bassoku\ ;
+震盪 < shintou\ ;
+霊的 < reiteki\ ;
+愛妻家 < aisaika\ ;
+外相 < gaishou\ ;
+多発 < tahatsu\ ;
+雨空 < amazora\ ;
+然諾 < zendaku\ ;
+詮索 < sensaku\ ;
+散票 < sanpyou\ ;
+養父母 < youfubo\ ;
+練習 < renshuu\ ;
+評者 < hyousha\ ;
+熟練 < jukuren\ ;
+外的 < gaiteki\ ;
+障泥烏賊 < aoriika\ ;
+独善 < dokuzen\ ;
+夏着 < natsugi\ ;
+天球 < tenkyuu\ ;
+起電機 < kidenki\ ;
+妻戸 < tsumado\ ;
+二死後 < nishigo\ ;
+斑猫 < hanmyou\ ;
+晋山 < shinzan\ ;
+旋毛 < tsumuji\ ;
+報酬 < houshuu\ ;
+葉牡丹 < habotan\ ;
+已然形 < izenkei\ ;
+烈震 < resshin\ ;
+春情 < shunjou\ ;
+緬羊 < men''you\ ;
+縟礼 < jokurei\ ;
+大獄 < taigoku\ ;
+狂奔 < kyouhon\ ;
+墨色 < sumiiro\ ;
+総花 < soubana\ ;
+敦睦 < tonboku\ ;
+大規模 < daikibo\ ;
+独吟 < dokugin\ ;
+具体化 < gutaika\ ;
+覆面 < fukumen\ ;
+織物 < orimono\ ;
+保安官 < hoankan\ ;
+旧来 < kyuurai\ ;
+旧村 < kyuuson\ ;
+野獣派 < yajuuha\ ;
+独占 < dokusen\ ;
+電位差 < den''isa\ ;
+日朝 < nitchou\ ;
+如月 < nigatsu\ ;
+失点 < shitten\ ;
+雑穀 < zakkoku\ ;
+襟髪 < erigami\ ;
+親里 < oyazato\ ;
+照臨 < shourin\ ;
+早春 < soushun\ ;
+昨年 < sakunen\ ;
+天然 < ten''nen\ ;
+奥様 < okusama\ ;
+日時 < nichiji\ ;
+緑肥 < ryokuhi\ ;
+非対応 < hitaiou\ ;
+蓖麻子 < himashi\ ;
+裸体画 < rataiga\ ;
+領内 < ryounai\ ;
+事務官 < jimukan\ ;
+電球 < denkyuu\ ;
+片方 < katahou\ ;
+訳者 < yakusha\ ;
+特待 < tokutai\ ;
+起訴状 < kisojou\ ;
+襟首 < erikubi\ ;
+奪格 < dakkaku\ ;
+野暮用 < yaboyou\ ;
+敵状 < tekijou\ ;
+撃退 < gekitai\ ;
+無灯火 < mutouka\ ;
+難癖 < nankuse\ ;
+春嵐 < shunran\ ;
+襲雷 < shuurai\ ;
+妙所 < myousho\ ;
+明徳 < meitoku\ ;
+難症 < nanshou\ ;
+難病 < nanbyou\ ;
+無血 < muketsu\ ;
+無記名 < mukimei\ ;
+昔年 < sekinen\ ;
+炒飯 < chaahan\ ;
+誘爆 < yuubaku\ ;
+外為 < gaitame\ ;
+震災 < shinsai\ ;
+春寒 < shunkan\ ;
+爆死 < bakushi\ ;
+都議選 < togisen\ ;
+網膜 < moumaku\ ;
+熟知 < jukuchi\ ;
+明年 < myounen\ ;
+天減 < tenbiki\ ;
+保育園 < hoikuen\ ;
+姉婿 < anemuko\ ;
+終車 < shuusha\ ;
+精麦 < seibaku\ ;
+熟睡 < jukusui\ ;
+縫物 < nuimono\ ;
+緊縛 < kinbaku\ ;
+熟眠 < jukumin\ ;
+保育器 < hoikuki\ ;
+墨糸 < sumiito\ ;
+陰膳 < kagezen\ ;
+詩的 < shiteki\ ;
+星学 < seigaku\ ;
+愛好家 < aikouka\ ;
+青春 < seishun\ ;
+暇人 < himajin\ ;
+音力 < onryoku\ ;
+為銀 < tamegin\ ;
+訓育 < kun''iku\ ;
+奥方 < okugata\ ;
+狩人 < karyudo\ ;
+累進 < ruishin\ ;
+焼芋 < yakiimo\ ;
+委任状 < ininjou\ ;
+陪臣 < baishin\ ;
+牧師 < bokushi\ ;
+御披露目 < ohirome\ ;
+新案 < shin''an\ ;
+階級 < kaikyuu\ ;
+特定 < tokutei\ ;
+用器画 < youkiga\ ;
+昨夕 < sakuyuu\ ;
+隻眼 < sekigan\ ;
+保養所 < hoyoujo\ ;
+家庭科 < kateika\ ;
+増給 < zoukyuu\ ;
+不名誉 < fumeiyo\ ;
+旧悪 < kyuuaku\ ;
+数滴 < suuteki\ ;
+綾絹 < ayaginu\ ;
+索道 < sakudou\ ;
+結語 < ketsugo\ ;
+女手 < on''nade\ ;
+熱狂 < nekkyou\ ;
+女房 < nyoubou\ ;
+外海 < sotoumi\ ;
+大欲 < taiyoku\ ;
+結託 < kettaku\ ;
+外泊 < gaihaku\ ;
+覆輪 < fukurin\ ;
+整流 < seiryuu\ ;
+頂上 < choujou\ ;
+五輪旗 < gorinki\ ;
+熱燗 < atsukan\ ;
+日当 < hiatari\ ;
+糠雨 < nukaame\ ;
+旧弊 < kyuuhei\ ;
+特大 < tokudai\ ;
+親許 < oyamoto\ ;
+春坊 < harubou\ ;
+作業衣 < sagyoui\ ;
+詫状 < wabijou\ ;
+電流 < denryuu\ ;
+木戸銭 < kidosen\ ;
+特売 < tokubai\ ;
+耳下腺 < jikasen\ ;
+無色 < mushoku\ ;
+論敵 < ronteki\ ;
+家庭着 < kateigi\ ;
+雀球 < jankyuu\ ;
+文様 < mon''you\ ;
+大業 < taigyou\ ;
+旅所 < tabisho\ ;
+糸鋸 < itonoko\ ;
+外陰部 < gaiinbu\ ;
+特報 < tokuhou\ ;
+文楽 < bunraku\ ;
+無腰 < mugoshi\ ;
+面影 < omokage\ ;
+煙突 < entotsu\ ;
+墓穴 < boketsu\ ;
+和菓子 < wagashi\ ;
+調書 < chousho\ ;
+革帯 < kawaobi\ ;
+旅愁 < ryoshuu\ ;
+自在画 < jizaiga\ ;
+解脱 < gedatsu\ ;
+昼前 < hirumae\ ;
+続編 < zokuhen\ ;
+耕運機 < kouunki\ ;
+熱演 < netsuen\ ;
+雪洞 < bonbori\ ;
+総督 < soutoku\ ;
+一回忌 < ikkaiki\ ;
+間隙 < kangeki\ ;
+不可解 < fukakai\ ;
+靴屋 < kutsuya\ ;
+斎服 < saifuku\ ;
+旧居 < kyuukyo\ ;
+不可視 < fukashi\ ;
+大木 < taiboku\ ;
+城郭 < joukaku\ ;
+陸稲 < rikutou\ ;
+総理府 < sourifu\ ;
+失敬 < shikkei\ ;
+開陳 < kaichin\ ;
+失敗 < shippai\ ;
+奇抜 < kibatsu\ ;
+二分木 < nibungi\ ;
+失政 < shissei\ ;
+討究 < toukyuu\ ;
+霊柩 < reikyuu\ ;
+読本 < dokuhon\ ;
+防臭 < boushuu\ ;
+読書 < dokusho\ ;
+犯人 < han''nin\ ;
+奥庭 < okuniwa\ ;
+妊娠 < ninshin\ ;
+奥底 < okuzoko\ ;
+牧地 < bokuchi\ ;
+広辞苑 < koujien\ ;
+編物 < amimono\ ;
+天敵 < tenteki\ ;
+霊木 < reiboku\ ;
+夜曲 < yakyoku\ ;
+総画 < soukaku\ ;
+多数派 < tasuuha\ ;
+陣笠 < jingasa\ ;
+隆盛 < ryuusei\ ;
+評点 < hyouten\ ;
+保護者 < hogosha\ ;
+夜間部 < yakanbu\ ;
+文教 < bunkyou\ ;
+留守電 < rusuden\ ;
+変梃 < henteko\ ;
+米麦 < beibaku\ ;
+細螺 < kishago\ ;
+熱気 < netsuke\ ;
+昨冬 < sakutou\ ;
+春分 < shunbun\ ;
+長雨 < nagaame\ ;
+旧套 < kyuutou\ ;
+語末 < gomatsu\ ;
+糧道 < ryoudou\ ;
+掃除機 < soujiki\ ;
+襟足 < eriashi\ ;
+謹告 < kinkoku\ ;
+事務会 < jimukai\ ;
+断念 < dan''nen\ ;
+日夜 < nichiya\ ;
+日夕 < nisseki\ ;
+春光 < shunkou\ ;
+放流 < houryuu\ ;
+震旦 < shintan\ ;
+奥山 < okuyama\ ;
+静寂 < seijaku\ ;
+事前後 < jizengo\ ;
+菩提樹 < bodaiju\ ;
+火鉢 < hibachi\ ;
+絶縁 < zetsuen\ ;
+夕方 < yuugata\ ;
+粗食 < soshoku\ ;
+貝独楽 < baigoma\ ;
+境目 < sakaime\ ;
+無防備 < muboubi\ ;
+不思議 < fushigi\ ;
+旅客 < ryokaku\ ;
+不穏当 < fuontou\ ;
+昭代 < shoudai\ ;
+無筆 < muhitsu\ ;
+失態 < shittai\ ;
+結腸 < ketchou\ ;
+特典 < tokuten\ ;
+可塑材 < kasozai\ ;
+失意 < shitsui\ ;
+爆弾 < bakudan\ ;
+特免 < tokumen\ ;
+支流 < shiryuu\ ;
+揚陸 < youriku\ ;
+親船 < oyabune\ ;
+陸産 < rikusan\ ;
+陸生 < rikusei\ ;
+面壁 < menpeki\ ;
+探鳥 < tanchou\ ;
+約言 < yakugen\ ;
+梳綿機 < somenki\ ;
+粗雑 < sozatsu\ ;
+無手順 < mutejun\ ;
+電撃 < dengeki\ ;
+教書 < kyousho\ ;
+間近 < madjika\ ;
+新居 < shinkyo\ ;
+紺色 < kon''iro\ ;
+継目 < tsugime\ ;
+雷撃 < raigeki\ ;
+尾状花 < bijouka\ ;
+塾生 < jukusei\ ;
+調弦 < chougen\ ;
+燃料 < nenryou\ ;
+隠滅 < inmetsu\ ;
+大息 < taisoku\ ;
+集権 < shuuken\ ;
+便利屋 < benriya\ ;
+開通 < kaitsuu\ ;
+陣痛 < jintsuu\ ;
+外戚 < gaiseki\ ;
+網猟 < amiryou\ ;
+敵手 < tekishu\ ;
+大徳 < daitoku\ ;
+離日 < rinichi\ ;
+精進 < shoujin\ ;
+予知夢 < yochimu\ ;
+精通 < seitsuu\ ;
+煉獄 < rengoku\ ;
+御神籤 < omikuji\ ;
+諸国 < shokoku\ ;
+旧名 < kyuumei\ ;
+映写機 < eishaki\ ;
+難敵 < nanteki\ ;
+保護税 < hogozei\ ;
+瀝青 < rekisei\ ;
+叙事文 < jojibun\ ;
+旧友 < kyuuyuu\ ;
+結縁 < kechien\ ;
+袞龍 < konryou\ ;
+新婚 < shinkon\ ;
+英会話 < eikaiwa\ ;
+文弱 < bunjaku\ ;
+日収 < nisshuu\ ;
+不可能 < fukanou\ ;
+雑木 < zouboku\ ;
+説得 < settoku\ ;
+映画館 < eigakan\ ;
+靖国 < seikoku\ ;
+天幕 < tenmaku\ ;
+閲覧 < etsuran\ ;
+革命 < kakumei\ ;
+織布 < shokufu\ ;
+日印 < nichiin\ ;
+繊弱 < senjaku\ ;
+細腕 < hosoude\ ;
+零戦 < zerosen\ ;
+覚者 < kakusha\ ;
+組織 < soshiki\ ;
+謬伝 < byuuden\ ;
+誘惑 < yuuwaku\ ;
+牧人 < bokujin\ ;
+長辺 < chouhen\ ;
+霊廟 < reibyou\ ;
+詮方 < senkata\ ;
+片前 < katamae\ ;
+風雲児 < fuuunji\ ;
+垂迹 < suijaku\ ;
+墨汁 < bokujuu\ ;
+改暦 < kaireki\ ;
+阪神 < hanshin\ ;
+敵弾 < tekidan\ ;
+門跡 < monzeki\ ;
+粗金 < aragane\ ;
+親米 < shinbei\ ;
+敏捷 < binshou\ ;
+版元 < hanmoto\ ;
+楕円形 < daenkei\ ;
+見習 < minarai\ ;
+新地 < shinchi\ ;
+放擲 < houteki\ ;
+演奏家 < ensouka\ ;
+敷布 < shikifu\ ;
+牛丼 < gyuudon\ ;
+角盆 < kakubon\ ;
+詔書 < shousho\ ;
+大学 < daigaku\ ;
+可塑性 < kasosei\ ;
+壁板 < kabeita\ ;
+被除数 < hijosuu\ ;
+文学 < bungaku\ ;
+攻撃 < kougeki\ ;
+二次元 < nijigen\ ;
+緑樹 < ryokuju\ ;
+爪印 < tsumein\ ;
+手文庫 < tebunko\ ;
+旧例 < kyuurei\ ;
+糞蝿 < kusobae\ ;
+一箇所 < ikkasho\ ;
+予備隊 < yobitai\ ;
+疑問符 < gimonfu\ ;
+織姫 < orihime\ ;
+紅色 < beniiro\ ;
+陸海 < rikukai\ ;
+終端 < shuutan\ ;
+角番 < kadoban\ ;
+固定費 < koteihi\ ;
+精読 < seidoku\ ;
+織女 < shokujo\ ;
+日付 < hidzuke\ ;
+熱愛 < netsuai\ ;
+境涯 < kyougai\ ;
+霜夜 < shimoyo\ ;
+女傑 < joketsu\ ;
+天女 < ten''nyo\ ;
+角瓶 < kakubin\ ;
+紡績 < bouseki\ ;
+旧主 < kyuushu\ ;
+大女 < ooon''na\ ;
+敵対 < tekitai\ ;
+計測 < keisoku\ ;
+新品 < shinpin\ ;
+明治座 < meijiza\ ;
+理想家 < risouka\ ;
+無熱 < munetsu\ ;
+土壇場 < dotanba\ ;
+二次会 < nijikai\ ;
+総桐 < sougiri\ ;
+論告 < ronkoku\ ;
+熱心 < nesshin\ ;
+奉告 < houkoku\ ;
+失地 < shitchi\ ;
+義務感 < gimukan\ ;
+数学 < suugaku\ ;
+撃砕 < gekisai\ ;
+読売 < yomiuri\ ;
+掘鑿 < kussaku\ ;
+雹害 < hyougai\ ;
+総柄 < sougara\ ;
+霊妙 < reimyou\ ;
+三叉路 < sansaro\ ;
+変容 < hen''you\ ;
+旅僧 < tabisou\ ;
+熟慮 < jukuryo\ ;
+炎色 < enshoku\ ;
+訳本 < yakuhon\ ;
+墨書 < bokusho\ ;
+紛糾 < funkyuu\ ;
+推量 < suiryou\ ;
+撞球 < doukyuu\ ;
+夙夜 < shukuya\ ;
+熱度 < netsudo\ ;
+震央 < shin''ou\ ;
+波布茶 < habucha\ ;
+累積 < ruiseki\ ;
+裏釘 < urakugi\ ;
+裏金 < uragane\ ;
+攪拌 < kakuhan\ ;
+陸橋 < rikkyou\ ;
+証文 < shoumon\ ;
+赤啄木鳥 < akagera\ ;
+不愛想 < buaisou\ ;
+診断 < shindan\ ;
+大国 < taikoku\ ;
+註文 < chuumon\ ;
+紺碧 < konpeki\ ;
+一箇年 < ikkanen\ ;
+改悛 < kaishun\ ;
+絶無 < zetsumu\ ;
+外壁 < gaiheki\ ;
+塞源 < sokugen\ ;
+大嘴 < oohashi\ ;
+新兵 < shinpei\ ;
+訳文 < yakubun\ ;
+予備金 < yobikin\ ;
+掛金 < kakekin\ ;
+敗将 < haishou\ ;
+推進 < suishin\ ;
+雄心 < yuushin\ ;
+敵塁 < tekirui\ ;
+網棚 < amidana\ ;
+陸棚 < rikuhou\ ;
+不可知 < fukachi\ ;
+国風 < kokufuu\ ;
+隆替 < ryuutai\ ;
+線描 < senbyou\ ;
+調合 < chougou\ ;
+菩提寺 < bodaiji\ ;
+硫黄山 < iouyama\ ;
+陰極 < inkyoku\ ;
+夏場 < natsuba\ ;
+素因数 < soinsuu\ ;
+複製 < fukusei\ ;
+外圧 < gaiatsu\ ;
+仏蘭西 < furansu\ ;
+熟年 < jukunen\ ;
+結球 < kekkyuu\ ;
+外国 < gaikoku\ ;
+接辞 < setsuji\ ;
+不合理 < fugouri\ ;
+精薄 < seihaku\ ;
+掃除婦 < soujifu\ ;
+捕食 < hoshoku\ ;
+敵国 < tekkoku\ ;
+野暮天 < yaboten\ ;
+変域 < hen''iki\ ;
+保護委員 < hogoiin\ ;
+陽暦 < youreki\ ;
+家具等 < kagutou\ ;
+大名 < daimyou\ ;
+薔薇色 < barairo\ ;
+国電 < kokuden\ ;
+大口 < ooguchi\ ;
+不愉快 < fuyukai\ ;
+農機具 < noukigu\ ;
+国難 < kokunan\ ;
+輸送費 < yusouhi\ ;
+齲 < mushiba\ ;
+陽春 < youshun\ ;
+看護婦 < kangofu\ ;
+国際 < kokusai\ ;
+紋章 < monshou\ ;
+地道 < jimichi\ ;
+親玉 < oyadama\ ;
+御神火 < gojinka\ ;
+故実 < kojitsu\ ;
+国防 < kokubou\ ;
+放尿 < hounyou\ ;
+文博 < bunhaku\ ;
+予備軍 < yobigun\ ;
+擯斥 < hinseki\ ;
+縮図 < shukuzu\ ;
+間膜 < kanmaku\ ;
+大力 < dairiki\ ;
+推賞 < suishou\ ;
+激闘 < gekitou\ ;
+外周 < gaishuu\ ;
+古文書 < komonjo\ ;
+困難 < kon''nan\ ;
+縦坑 < tatekou\ ;
+給源 < kyuugen\ ;
+露仏 < rofutsu\ ;
+自衛権 < jieiken\ ;
+誡告 < kaikoku\ ;
+地軸 < chijiku\ ;
+大凶 < daikyou\ ;
+鶫 < tsugumi\ ;
+要目 < youmoku\ ;
+組版 < kumihan\ ;
+織元 < orimoto\ ;
+襟章 < erishou\ ;
+鵤 < ikaruga\ ;
+雛壇 < hinadan\ ;
+鵆 < chidori\ ;
+純真 < junshin\ ;
+隷属 < reizoku\ ;
+斜交 < hasukai\ ;
+繁劇 < hangeki\ ;
+煩悩 < bon''nou\ ;
+売国 < baikoku\ ;
+純益 < jun''eki\ ;
+料亭 < ryoutei\ ;
+緞帳 < donchou\ ;
+鰘 < muroaji\ ;
+敵勢 < tekizei\ ;
+表面 < hyoumen\ ;
+長芋 < nagaimo\ ;
+純白 < junpaku\ ;
+鯳 < sukesou\ ;
+防毒 < boudoku\ ;
+数匹 < suuhiki\ ;
+電卓 < dentaku\ ;
+終点 < shuuten\ ;
+緊急 < kinkyuu\ ;
+敵前 < tekizen\ ;
+夕凪 < yuunagi\ ;
+合氣道 < aikidou\ ;
+繚乱 < ryouran\ ;
+縄墨 < jouboku\ ;
+鬘 < katsura\ ;
+親潮 < oyashio\ ;
+点火器 < tenkaki\ ;
+補血 < hoketsu\ ;
+観測 < kansoku\ ;
+煮干 < niboshi\ ;
+綱手 < tsunade\ ;
+陸戦 < rikusen\ ;
+羽二重 < habutae\ ;
+集塵 < shuujin\ ;
+規準化 < kijunka\ ;
+隔年 < kakunen\ ;
+高度差 < koudosa\ ;
+無札 < musatsu\ ;
+無月 < mugetsu\ ;
+熱唱 < nesshou\ ;
+寄付金 < kifukin\ ;
+斉一 < seiitsu\ ;
+火口湖 < kakouko\ ;
+増強 < zoukyou\ ;
+険悪 < ken''aku\ ;
+長老 < chourou\ ;
+政治屋 < seijiya\ ;
+行頭 < gyoutou\ ;
+個々人 < kokojin\ ;
+隠密 < onmitsu\ ;
+霍乱 < kakuran\ ;
+国道 < kokudou\ ;
+結氷 < keppyou\ ;
+集団 < shuudan\ ;
+政治家 < seijika\ ;
+国連 < kokuren\ ;
+運営費 < un''eihi\ ;
+陳情 < chinjou\ ;
+火箸 < hibashi\ ;
+蝦夷菊 < ezogiku\ ;
+売卜 < baiboku\ ;
+敗北 < haiboku\ ;
+増幅 < zoufuku\ ;
+保護林 < hogorin\ ;
+潮騒 < shiosai\ ;
+木戸番 < kidoban\ ;
+索然 < sakuzen\ ;
+綾布 < ayanuno\ ;
+粘膜 < nenmaku\ ;
+摂理 < setsuri\ ;
+雪冤 < setsuen\ ;
+墨守 < bokushu\ ;
+粉茶 < konacha\ ;
+角材 < kakuzai\ ;
+経歴 < keireki\ ;
+離別 < ribetsu\ ;
+闘牛 < tougyuu\ ;
+摩滅 < mametsu\ ;
+国軍 < kokugun\ ;
+濫觴 < ranshou\ ;
+教典 < kyouten\ ;
+地表 < chihyou\ ;
+推薬 < suiyaku\ ;
+陳弁 < chinben\ ;
+炬燵 < kotatsu\ ;
+行間 < gyoukan\ ;
+開立 < kairyuu\ ;
+撞木 < shumoku\ ;
+浅知恵 < asadjie\ ;
+雑務 < zatsumu\ ;
+細流 < sairyuu\ ;
+集合 < shuugou\ ;
+地蜂 < jibachi\ ;
+青豌豆 < aoendou\ ;
+険峻 < kenshun\ ;
+街録 < gairoku\ ;
+女丈夫 < jojoubu\ ;
+円記号 < enkigou\ ;
+雑則 < zassoku\ ;
+装薬 < souyaku\ ;
+国賓 < kokuhin\ ;
+陸岸 < rikugan\ ;
+塗抹 < tomatsu\ ;
+陽射 < hizashi\ ;
+関白 < kanpaku\ ;
+焦慮 < shouryo\ ;
+亜寒帯 < akantai\ ;
+振鈴 < shinrei\ ;
+雑兵 < zouhyou\ ;
+隣国 < ringoku\ ;
+雀卓 < jantaku\ ;
+雪中 < setchuu\ ;
+墨堤 < bokutei\ ;
+託宣 < takusen\ ;
+損益 < son''eki\ ;
+陣幕 < jinmaku\ ;
+江戸川 < edogawa\ ;
+灰皿 < haizara\ ;
+結束 < kessoku\ ;
+灰白 < kaihaku\ ;
+親株 < oyakabu\ ;
+幼児語 < youjigo\ ;
+鎹 < kasugai\ ;
+国論 < kokuron\ ;
+緑土 < ryokudo\ ;
+激論 < gekiron\ ;
+暗暗裡 < an''anri\ ;
+不浄場 < fujouba\ ;
+要求 < youkyuu\ ;
+鋩 < kissaki\ ;
+熱中 < netchuu\ ;
+湯治場 < toujiba\ ;
+裏腹 < urahara\ ;
+評判 < hyouban\ ;
+納涼 < nouryou\ ;
+図説 < zusetsu\ ;
+間男 < maotoko\ ;
+摺本 < shouhon\ ;
+脳味噌 < noumiso\ ;
+雑事 < zatsuji\ ;
+子画面 < kogamen\ ;
+絶息 < zessoku\ ;
+陣容 < jin''you\ ;
+陸大 < rikudai\ ;
+褥瘡 < jokusou\ ;
+粗筋 < arasuji\ ;
+長短 < choutan\ ;
+親方 < oyakata\ ;
+可視化 < kashika\ ;
+設営 < setsuei\ ;
+絵心 < egokoro\ ;
+拝領 < hairyou\ ;
+絶後 < zetsugo\ ;
+不注意 < fuchuui\ ;
+粘稠 < nenchuu\ ;
+撮影 < satsuei\ ;
+護衛艦 < goeikan\ ;
+塩害 < shiogai\ ;
+補綴 < hotetsu\ ;
+篤農 < tokunou\ ;
+揮発 < kihatsu\ ;
+烏木 < kokutan\ ;
+次打者 < jidasha\ ;
+堆朱 < tsuishu\ ;
+陸地 < rikuchi\ ;
+境域 < kyouiki\ ;
+披露宴 < hirouen\ ;
+照合 < shougou\ ;
+評伝 < hyouden\ ;
+自衛官 < jieikan\ ;
+型番 < kataban\ ;
+焼売 < shuumai\ ;
+留守番 < rusuban\ ;
+複眼 < fukugan\ ;
+亜音速 < aonsoku\ ;
+無宿 < mushuku\ ;
+角帽 < kakubou\ ;
+長男 < chounan\ ;
+親指 < oyayubi\ ;
+角帯 < kakuobi\ ;
+無実 < mujitsu\ ;
+索条 < sakujou\ ;
+総則 < sousoku\ ;
+蹄 < hidzume\ ;
+増収 < zoushuu\ ;
+綾取 < ayatori\ ;
+続報 < zokuhou\ ;
+報徳 < houtoku\ ;
+摩擦 < masatsu\ ;
+報復 < houfuku\ ;
+御注意 < gochuui\ ;
+見料 < kenryou\ ;
+表装 < hyousou\ ;
+国葬 < kokusou\ ;
+西暦 < seireki\ ;
+籠絡 < rouraku\ ;
+医科学 < ikagaku\ ;
+粗皮 < arakawa\ ;
+炭柱 < tanchuu\ ;
+観念 < kan''nen\ ;
+純朴 < junboku\ ;
+訓告 < kunkoku\ ;
+西日 < nishibi\ ;
+米穀 < beikoku\ ;
+異方性 < ihousei\ ;
+擁壁 < youheki\ ;
+設備 < setsubi\ ;
+血豆 < chimame\ ;
+圧縮 < asshuku\ ;
+緒作 < shosaku\ ;
+無鑑査 < mukansa\ ;
+級数 < kyuusuu\ ;
+紋服 < monpuku\ ;
+裕福 < yuufuku\ ;
+掛算 < kakezan\ ;
+絵姿 < esugata\ ;
+謬 < ayamari\ ;
+地籍 < chiseki\ ;
+二番目 < nibanme\ ;
+探究 < tankyuu\ ;
+粒界 < ryuukai\ ;
+硬化油 < koukayu\ ;
+損流 < sonryuu\ ;
+誼 < yoshimi\ ;
+映画祭 < eigasai\ ;
+誮 < yasashi\ ;
+漆食 < shikkui\ ;
+映画社 < eigasha\ ;
+点描 < tenbyou\ ;
+不正規 < fuseiki\ ;
+荊棘線 < barasen\ ;
+拓銀 < takugin\ ;
+絶壁 < zeppeki\ ;
+慰霊祭 < ireisai\ ;
+学校医 < gakkoui\ ;
+陸兵 < rikuhei\ ;
+綱具 < tsunagu\ ;
+粗玉 < aratama\ ;
+網元 < amimoto\ ;
+言及 < genkyuu\ ;
+金文字 < kinmoji\ ;
+糸枠 < itowaku\ ;
+除却 < jokyaku\ ;
+漫録 < manroku\ ;
+随一 < zuiichi\ ;
+糸杉 < itosugi\ ;
+灰殻 < haigara\ ;
+摂政 < sesshou\ ;
+襅 < chihaya\ ;
+塩味 < shioaji\ ;
+結尾 < ketsubi\ ;
+約数 < yakusuu\ ;
+防壁 < bouheki\ ;
+御法度 < gohatto\ ;
+塁壁 < ruiheki\ ;
+結審 < kesshin\ ;
+拙速 < sessoku\ ;
+撮土 < satsudo\ ;
+気保養 < kihoyou\ ;
+蠎 < uwabami\ ;
+鉄火場 < tekkaba\ ;
+勤務員 < kinmuin\ ;
+角地 < kadochi\ ;
+経学 < keigaku\ ;
+粋狂 < suikyou\ ;
+裏白 < urajiro\ ;
+塵入 < gomiire\ ;
+異星人 < iseijin\ ;
+細帯 < hosoobi\ ;
+蜆 < shijimi\ ;
+無口 < mukuchi\ ;
+執念 < shuunen\ ;
+陸上 < rikujou\ ;
+映画界 < eigakai\ ;
+漫遊 < man''yuu\ ;
+絶唱 < zesshou\ ;
+虱 < shirami\ ;
+五畿内 < gokinai\ ;
+御破算 < gohasan\ ;
+地目 < chimoku\ ;
+否定語 < hiteigo\ ;
+無力 < muryoku\ ;
+蕾 < tsubomi\ ;
+抽選 < chuusen\ ;
+絶叫 < zekkyou\ ;
+違憲性 < ikensei\ ;
+塩化銀 < enkagin\ ;
+国粋 < kokusui\ ;
+閉業 < heigyou\ ;
+米独 < beidoku\ ;
+振舞 < furumai\ ;
+保護司 < hogoshi\ ;
+長歌 < nagauta\ ;
+納得 < nattoku\ ;
+土着 < dochaku\ ;
+国等 < kokutou\ ;
+堂守 < doumori\ ;
+拝謁 < haietsu\ ;
+得意気 < tokuige\ ;
+撤収 < tesshuu\ ;
+灯明 < toumyou\ ;
+拝読 < haidoku\ ;
+等閑 < naozari\ ;
+鏤骨 < rukotsu\ ;
+手細工 < tezaiku\ ;
+舎利塩 < sharien\ ;
+在留 < zairyuu\ ;
+損料 < sonryou\ ;
+圭璧 < keiheki\ ;
+描法 < byouhou\ ;
+親馬鹿 < oyabaka\ ;
+舞踊家 < butouka\ ;
+国税 < kokuzei\ ;
+奇形児 < kikeiji\ ;
+門柱 < monchuu\ ;
+午後中 < gogojuu\ ;
+艀 < hashike\ ;
+困窮 < konkyuu\ ;
+表紙 < hyoushi\ ;
+烈女 < retsujo\ ;
+詭弁家 < kibenka\ ;
+親善 < shinzen\ ;
+漫読 < mandoku\ ;
+関所 < sekisho\ ;
+糸底 < itozoko\ ;
+漫評 < manpyou\ ;
+見境 < misakai\ ;
+聢 < shikato\ ;
+胃洗浄 < isenjou\ ;
+折込 < orikomi\ ;
+不同化 < fudouka\ ;
+翼 < tsubasa\ ;
+異教徒 < ikyouto\ ;
+授爵 < jushaku\ ;
+鏡面 < kyoumen\ ;
+固着 < kochaku\ ;
+推測 < suisoku\ ;
+国益 < kokueki\ ;
+湯加減 < yukagen\ ;
+約定 < yakujou\ ;
+非課税 < hikazei\ ;
+和楽器 < wagakki\ ;
+統一 < touitsu\ ;
+開拓 < kaitaku\ ;
+補殺 < hosatsu\ ;
+糸屑 < itokuzu\ ;
+違法者 < ihousha\ ;
+撃剣 < gekiken\ ;
+扁額 < hengaku\ ;
+演説 < enzetsu\ ;
+所領 < shoryou\ ;
+竹馬 < chikuba\ ;
+国産 < kokusan\ ;
+血縁 < ketsuen\ ;
+複方 < fukuhou\ ;
+粗末 < somatsu\ ;
+鎮魂 < chingon\ ;
+複数 < fukusuu\ ;
+損得 < sontoku\ ;
+堕力 < daryoku\ ;
+輸送機 < yusouki\ ;
+与野党 < yoyatou\ ;
+血糊 < chinori\ ;
+引火点 < inkaten\ ;
+漸落 < zenraku\ ;
+粗方 < arakata\ ;
+糸姫 < itohime\ ;
+節義 < setsugi\ ;
+羽子板 < hagoita\ ;
+筆蹟 < hisseki\ ;
+音沙汰 < otosata\ ;
+禾本科 < kahonka\ ;
+不可分 < fukabun\ ;
+終値 < owarine\ ;
+血筋 < chisuji\ ;
+城壁 < jouheki\ ;
+鼠径部 < sokeibu\ ;
+地殻 < chikaku\ ;
+策謀 < sakubou\ ;
+融通 < yuudzuu\ ;
+開幕 < kaimaku\ ;
+喫驚 < bikkuri\ ;
+閉幕 < heimaku\ ;
+鎖骨 < sakotsu\ ;
+満額 < mangaku\ ;
+街着 < machigi\ ;
+圧殺 < assatsu\ ;
+鎮静 < chinsei\ ;
+無技巧 < mugikou\ ;
+蟋蟀 < koorogi\ ;
+拝聴 < haichou\ ;
+濁点 < dakuten\ ;
+蠏缶 < kanikan\ ;
+礎 < ishizue\ ;
+長径 < choukei\ ;
+都議会 < togikai\ ;
+推服 < suifuku\ ;
+閑寂 < kanjaku\ ;
+糾問 < kyuumon\ ;
+裏書 < uragaki\ ;
+予備校 < yobikou\ ;
+長幼 < chouyou\ ;
+搾取 < sakushu\ ;
+堅人 < katajin\ ;
+土橋 < dobashi\ ;
+観世音 < kanzeon\ ;
+手近 < tedjika\ ;
+裏方 < urakata\ ;
+半過去 < hankako\ ;
+不参加 < fusanka\ ;
+激減 < gekigen\ ;
+粗忽 < sokotsu\ ;
+納入 < nounyuu\ ;
+技術 < gijutsu\ ;
+投薬 < touyaku\ ;
+激浪 < gekirou\ ;
+恣意性 < shiisei\ ;
+国法 < kokuhou\ ;
+粒径 < ryuukei\ ;
+甦 < yomigae\ ;
+付加税 < fukazei\ ;
+国民 < kokumin\ ;
+精妙 < seimyou\ ;
+濁水 < dakusui\ ;
+時計座 < tokeiza\ ;
+排斥 < haiseki\ ;
+部屋代 < heyadai\ ;
+母音性 < boinsei\ ;
+行状 < gyoujou\ ;
+蝶貝 < chougai\ ;
+不得意 < futokui\ ;
+襟元 < erimoto\ ;
+電話機 < denwaki\ ;
+無担保 < mutanpo\ ;
+懸隔 < kenkaku\ ;
+裏技 < urawaza\ ;
+在方 < zaikata\ ;
+竹輪 < chikuwa\ ;
+排撃 < haigeki\ ;
+措辞法 < sojihou\ ;
+採択 < saitaku\ ;
+八九分 < hakkubu\ ;
+螟虫 < meichuu\ ;
+災厄 < saiyaku\ ;
+土日 < donichi\ ;
+根太板 < nedaita\ ;
+成銀 < narigin\ ;
+牜 < ushihen\ ;
+範疇 < hanchuu\ ;
+火加減 < hikagen\ ;
+亜燐酸 < arinsan\ ;
+時計屋 < tokeiya\ ;
+掌握 < shouaku\ ;
+成金 < narikin\ ;
+潔白 < keppaku\ ;
+青二才 < aonisai\ ;
+潔癖 < keppeki\ ;
+漢籍 < kanseki\ ;
+圧接 < assetsu\ ;
+野放図 < nohouzu\ ;
+粒子 < ryuushi\ ;
+才覚 < saikaku\ ;
+火口 < higuchi\ ;
+所謂 < iwayuru\ ;
+間口 < maguchi\ ;
+閣内 < kakunai\ ;
+幼児期 < youjiki\ ;
+満身 < manshin\ ;
+按摩膏 < anmakou\ ;
+気苦労 < kigurou\ ;
+裏庭 < uraniwa\ ;
+裏店 < uradana\ ;
+国有 < kokuyuu\ ;
+政府案 < seifuan\ ;
+国書 < kokusho\ ;
+火力 < karyoku\ ;
+竜車 < ryuusha\ ;
+予備役 < yobieki\ ;
+我輩 < wagahai\ ;
+満足 < manzoku\ ;
+血潮 < chishio\ ;
+漆絵 < urushie\ ;
+齷齪 < akuseku\ ;
+地心 < chishin\ ;
+空馬 < karauma\ ;
+国文 < kokubun\ ;
+国教 < kokkyou\ ;
+国政 < kokusei\ ;
+米審 < beishin\ ;
+坩堝 < rutsubo\ ;
+不道理 < fudouri\ ;
+金無垢 < kinmuku\ ;
+団栗 < donguri\ ;
+図星 < zuboshi\ ;
+裏山 < urayama\ ;
+折紙 < origami\ ;
+行水 < gyouzui\ ;
+粉壁 < funpeki\ ;
+偽造印 < gizouin\ ;
+立身 < risshin\ ;
+竹製 < takesei\ ;
+無批判 < muhihan\ ;
+血沈 < ketchin\ ;
+手蔓 < tedzuru\ ;
+毮 < mushiru\ ;
+図書費 < toshohi\ ;
+火付 < hitsuke\ ;
+幸運児 < kouunji\ ;
+唐黍 < toukibi\ ;
+地峡 < chikyou\ ;
+塩水湖 < ensuiko\ ;
+流布本 < rufubon\ ;
+築港 < chikkou\ ;
+空隙 < kuugeki\ ;
+抜穴 < nukeana\ ;
+山茶花 < sazanka\ ;
+移民法 < iminhou\ ;
+空陸 < kuuriku\ ;
+鬼百合 < oniyuri\ ;
+間中 < aidajuu\ ;
+排尿 < hainyou\ ;
+国手 < kokushu\ ;
+表明 < hyoumei\ ;
+奈良県 < naraken\ ;
+不勝手 < fukatte\ ;
+回教 < kaikyou\ ;
+地学 < chigaku\ ;
+漁礁 < gyoshou\ ;
+表敬 < hyoukei\ ;
+激憤 < gekifun\ ;
+潤沢 < juntaku\ ;
+振替 < furikae\ ;
+篦棒 < berabou\ ;
+投票 < touhyou\ ;
+国情 < kokujou\ ;
+在宅 < zaitaku\ ;
+不利益 < furieki\ ;
+在学 < zaigaku\ ;
+市吏員 < shiriin\ ;
+意見書 < ikensho\ ;
+慰霊塔 < ireitou\ ;
+立証 < risshou\ ;
+棗 < natsume\ ;
+掛声 < kakegoe\ ;
+梻 < shikimi\ ;
+我利勉 < gariben\ ;
+行末 < yukusue\ ;
+行書 < gyousho\ ;
+渾身 < konshin\ ;
+困惑 < konwaku\ ;
+衆望 < shuubou\ ;
+減量 < genryou\ ;
+曙 < akebono\ ;
+擬宝珠 < giboshi\ ;
+大和絵 < yamatoe\ ;
+行数 < gyousuu\ ;
+図式 < zushiki\ ;
+小切手 < kogitte\ ;
+漿液 < shoueki\ ;
+晒 < sarashi\ ;
+転路器 < tenroki\ ;
+穀類 < kokurui\ ;
+漠然 < bakuzen\ ;
+突進 < tosshin\ ;
+米収 < beishuu\ ;
+旁 < tsukuri\ ;
+判事補 < hanjiho\ ;
+屠蘇散 < tososan\ ;
+穿通 < sentsuu\ ;
+表情 < hyoujou\ ;
+噴流 < funryuu\ ;
+種馬 < taneuma\ ;
+淡雪 < awayuki\ ;
+参議院 < sangiin\ ;
+接受 < setsuju\ ;
+挨拶 < aisatsu\ ;
+挫折 < zasetsu\ ;
+接収 < sesshuu\ ;
+手綱 < tadzuna\ ;
+国対 < kokutai\ ;
+予備品 < yobihin\ ;
+漁獲 < gyokaku\ ;
+扉絵 < tobirae\ ;
+漁猟 < gyoryou\ ;
+国定 < kokutei\ ;
+理工科 < rikouka\ ;
+火葬場 < kasouba\ ;
+唇音 < shin''on\ ;
+寒垢離 < kangori\ ;
+行成 < ikinari\ ;
+滑石 < kasseki\ ;
+防衛費 < boueihi\ ;
+地口 < jiguchi\ ;
+手箒 < tebouki\ ;
+唐門 < karamon\ ;
+馬小屋 < umagoya\ ;
+竜脳 < ryuunou\ ;
+国大 < kokudai\ ;
+米俗 < beizoku\ ;
+国外 < kokugai\ ;
+裏側 < uragawa\ ;
+濁声 < damigoe\ ;
+米作 < beisaku\ ;
+予備兵 < yobihei\ ;
+唱道 < shoudou\ ;
+問責 < monseki\ ;
+空谷 < kuukoku\ ;
+激増 < gekizou\ ;
+小道具 < kodougu\ ;
+端綱 < hadzuna\ ;
+深遠 < shin''en\ ;
+裏作 < urasaku\ ;
+裂傷 < resshou\ ;
+蛮襟 < bankara\ ;
+希元素 < kigenso\ ;
+怺 < koraeru\ ;
+世界語 < sekaigo\ ;
+米中 < beichuu\ ;
+立腹 < rippuku\ ;
+税額 < zeigaku\ ;
+竿竹 < saodake\ ;
+淫逸 < in''itsu\ ;
+徤 < takeshi\ ;
+護衛兵 < goeihei\ ;
+空調 < kuuchou\ ;
+虫類 < chuurui\ ;
+形而下 < keijika\ ;
+捺印 < natsuin\ ;
+衆庶 < shuusho\ ;
+竹竿 < takezao\ ;
+青電話 < aodenwa\ ;
+二枚目 < nimaime\ ;
+問診 < monshin\ ;
+拓本 < takuhon\ ;
+積載 < sekisai\ ;
+空襲 < kuushuu\ ;
+他府県 < tafuken\ ;
+保線区 < hosenku\ ;
+巽 < tatsumi\ ;
+在俗 < zaizoku\ ;
+出稽古 < degeiko\ ;
+空行 < kuugyou\ ;
+地主 < jinushi\ ;
+不具者 < fugusha\ ;
+地中 < chichuu\ ;
+演算機 < enzanki\ ;
+遺伝法 < idenhou\ ;
+国号 < kokugou\ ;
+錯角 < sakkaku\ ;
+在京 < zaikyou\ ;
+拍数 < hakusuu\ ;
+遺家族 < ikazoku\ ;
+小利口 < korikou\ ;
+在中 < zaichuu\ ;
+表在 < hyouzai\ ;
+滴水 < tekisui\ ;
+打率 < daritsu\ ;
+鋳造 < chuuzou\ ;
+四国 < shikoku\ ;
+国労 < kokurou\ ;
+激動 < gekidou\ ;
+立米 < ryuubei\ ;
+筋注 < kinchuu\ ;
+激励 < gekirei\ ;
+抑止 < yokushi\ ;
+漢族 < kanzoku\ ;
+節度 < setsudo\ ;
+天気運 < tenkiun\ ;
+漁業 < gyogyou\ ;
+液量 < ekiryou\ ;
+府議会 < fugikai\ ;
+蛇蠍 < dakatsu\ ;
+国内 < kokunai\ ;
+国典 < kokuten\ ;
+蝋石 < rouseki\ ;
+竜神 < ryuujin\ ;
+消防 < shoubou\ ;
+流麗 < ryuurei\ ;
+端的 < tanteki\ ;
+温色 < onshoku\ ;
+準用 < jun''you\ ;
+穴蔵 < anagura\ ;
+拍手 < hakushu\ ;
+手燭 < teshoku\ ;
+壬 < mizunoe\ ;
+止音器 < shionki\ ;
+合気会 < aikikai\ ;
+醍醐味 < daigomi\ ;
+箱師 < hakoshi\ ;
+表号 < hyougou\ ;
+黄麻 < tsunaso\ ;
+虫酸 < mushizu\ ;
+満目 < manmoku\ ;
+拝復 < haifuku\ ;
+鐘楼 < shourou\ ;
+立秋 < risshuu\ ;
+秋風 < shuufuu\ ;
+押捺 < ounatsu\ ;
+意図的 < itoteki\ ;
+浦風 < urakaze\ ;
+空茶 < karacha\ ;
+竜眼 < ryuugan\ ;
+海陸 < kairiku\ ;
+地磁気 < chijiki\ ;
+税込 < zeikomi\ ;
+生意気 < namaiki\ ;
+黒鯛 < kurodai\ ;
+空色 < sorairo\ ;
+四次元 < yojigen\ ;
+挙国 < kyokoku\ ;
+衰兆 < suichou\ ;
+国中 < kunijuu\ ;
+秋霜 < shuusou\ ;
+喉笛 < nodobue\ ;
+秋霖 < shuurin\ ;
+御目玉 < omedama\ ;
+行啓 < gyoukei\ ;
+嚏 < kushami\ ;
+秋雨 < akisame\ ;
+空腹 < kuufuku\ ;
+挿入 < sounyuu\ ;
+和食 < washoku\ ;
+抜擢 < batteki\ ;
+鍵穴 < kagiana\ ;
+蟻巻 < arimaki\ ;
+指圧 < shiatsu\ ;
+投擲 < touteki\ ;
+公文所 < kumonjo\ ;
+指図 < sashizu\ ;
+御座所 < gozasho\ ;
+溺水 < dekisui\ ;
+大鋸屑 < ogakuzu\ ;
+築地 < tsukiji\ ;
+甘海苔 < amanori\ ;
+建議案 < kengian\ ;
+蝋燭 < rousoku\ ;
+溺死 < dekishi\ ;
+碁会所 < gokaijo\ ;
+拙宅 < settaku\ ;
+手沢 < shutaku\ ;
+抑揚 < yokuyou\ ;
+笊法 < zaruhou\ ;
+懇篤 < kontoku\ ;
+唐薯 < karaimo\ ;
+税調 < zeichou\ ;
+蘭鋳 < ranchuu\ ;
+拡大 < kakudai\ ;
+防火戸 < boukado\ ;
+銅鐸 < doutaku\ ;
+登山家 < tozanka\ ;
+炊事場 < suijiba\ ;
+成熟 < seijuku\ ;
+溜池 < tameike\ ;
+浦里 < urazato\ ;
+英文科 < eibunka\ ;
+湯熨 < yunoshi\ ;
+喫煙 < kitsuen\ ;
+満潮 < manchou\ ;
+嚇嚇 < kakkaku\ ;
+拓大 < takudai\ ;
+源流 < genryuu\ ;
+穎脱 < eidatsu\ ;
+突端 < toppana\ ;
+酸性雨 < sanseiu\ ;
+黄雀 < koujaku\ ;
+喀痰 < kakutan\ ;
+鼻血 < hanadji\ ;
+錯綜 < sakusou\ ;
+術中 < jutchuu\ ;
+派生語 < haseigo\ ;
+派閥 < habatsu\ ;
+遺伝性 < idensei\ ;
+医療費 < iryouhi\ ;
+大祖父 < daisofu\ ;
+麻雀 < mazejan\ ;
+篆刻 < tenkoku\ ;
+軍荼利 < gundari\ ;
+戯歌 < zareuta\ ;
+唐臼 < karausu\ ;
+満洲 < manshuu\ ;
+湾流 < wanryuu\ ;
+善玉 < zendama\ ;
+私通 < shitsuu\ ;
+種苗 < shubyou\ ;
+白亜紀 < hakuaki\ ;
+丼 < donburi\ ;
+海賊 < kaizoku\ ;
+種芋 < taneimo\ ;
+戦歴 < senreki\ ;
+騎馬戦 < kibasen\ ;
+目一杯 < meippai\ ;
+指値 < sashine\ ;
+記事文 < kijibun\ ;
+海象 < seiuchi\ ;
+押売 < oshiuri\ ;
+品評 < hinpyou\ ;
+惨酷 < zankoku\ ;
+和太鼓 < wadaiko\ ;
+悪食 < akujiki\ ;
+蛮的 < banteki\ ;
+予定案 < yoteian\ ;
+神髄 < shinzui\ ;
+蘇鉄 < sotetsu\ ;
+蟄居 < chikkyo\ ;
+愚説 < gusetsu\ ;
+懸濁 < kendaku\ ;
+溝板 < dobuita\ ;
+符号器 < fugouki\ ;
+嚢中 < nouchuu\ ;
+書記補 < shokiho\ ;
+秘訣 < hiketsu\ ;
+空白 < kuuhaku\ ;
+応援団 < ouendan\ ;
+遺伝子 < idenshi\ ;
+除草器 < josouki\ ;
+虹色 < nijiiro\ ;
+策定 < sakutei\ ;
+流連 < ryuuren\ ;
+積算 < sekisan\ ;
+予定日 < yoteibi\ ;
+悪阻 < tsuwari\ ;
+戯曲 < gikyoku\ ;
+保持者 < hojisha\ ;
+拡充 < kakujuu\ ;
+穀粉 < kokufun\ ;
+唐糸 < karaito\ ;
+鉄鎚 < tettsui\ ;
+空瓶 < karabin\ ;
+単位元 < tanigen\ ;
+意地悪 < ijiwaru\ ;
+満株 < mankabu\ ;
+秘術 < hijutsu\ ;
+蛋白 < tanpaku\ ;
+上出来 < joudeki\ ;
+周遊 < shuuyuu\ ;
+符号化 < fugouka\ ;
+滅度 < metsudo\ ;
+満更 < manzara\ ;
+周辺 < shuuhen\ ;
+成桂 < narikei\ ;
+海蛇 < umihebi\ ;
+活路 < katsuro\ ;
+黒貂 < kuroten\ ;
+不相応 < fusouou\ ;
+銭葵 < zeniaoi\ ;
+英語版 < eigoban\ ;
+重火器 < juukaki\ ;
+波音 < namioto\ ;
+摩利支 < marishi\ ;
+稜線 < ryousen\ ;
+異端視 < itanshi\ ;
+才徳 < saitoku\ ;
+立案 < ritsuan\ ;
+黙認 < mokunin\ ;
+空爆 < kuubaku\ ;
+各駅 < kakueki\ ;
+押入 < oshiire\ ;
+混用 < kon''you\ ;
+渦潮 < uzushio\ ;
+葬儀屋 < sougiya\ ;
+項位置 < kouichi\ ;
+釣魚 < chougyo\ ;
+我方 < wagahou\ ;
+穴熊 < anaguma\ ;
+所得 < shotoku\ ;
+医師法 < ishihou\ ;
+溜息 < tameiki\ ;
+恭順 < kyoujun\ ;
+漏刻 < roukoku\ ;
+葡萄園 < budouen\ ;
+薩長 < satchou\ ;
+流言 < ryuugen\ ;
+担任 < tan''nin\ ;
+立春 < risshun\ ;
+窯業 < yougyou\ ;
+抜去 < bakkyou\ ;
+温浴 < on''yoku\ ;
+禁足 < kinsoku\ ;
+準急 < junkyuu\ ;
+吃音 < kitsuon\ ;
+鉄路 < tetsuro\ ;
+五斗米 < gotobei\ ;
+社長 < shachou\ ;
+各面 < kakumen\ ;
+黒血 < kurochi\ ;
+消耗 < shoumou\ ;
+竣成 < shunsei\ ;
+黒蟻 < kuroari\ ;
+可愛気 < kawaige\ ;
+流行 < ryuukou\ ;
+窒死 < chisshi\ ;
+金高 < kindaka\ ;
+五線譜 < gosenfu\ ;
+各階 < kakukai\ ;
+秋草 < akikusa\ ;
+才学 < saigaku\ ;
+御府内 < gofunai\ ;
+子馬座 < koumaza\ ;
+愉色 < yushoku\ ;
+小芥子 < kokeshi\ ;
+清濁 < seidaku\ ;
+周覧 < shuuran\ ;
+恒温器 < kouonki\ ;
+所属 < shozoku\ ;
+戦役 < sen''eki\ ;
+知恵者 < chiesha\ ;
+薄雲 < usugumo\ ;
+薄雪 < usuyuki\ ;
+祝辞 < shukuji\ ;
+抑制 < yokusei\ ;
+恋風 < koikaze\ ;
+神輿 < mikoshi\ ;
+遺贈分 < izoubun\ ;
+鹿追 < shikaoi\ ;
+祖述 < sojutsu\ ;
+戊戌 < bojutsu\ ;
+薬酒 < yakushu\ ;
+呪術 < jujutsu\ ;
+古顔 < furugao\ ;
+太刀魚 < tachiuo\ ;
+手妻 < tedzuma\ ;
+混濁 < kondaku\ ;
+助演者 < joensha\ ;
+金額 < kingaku\ ;
+代理部 < dairibu\ ;
+惨落 < sanraku\ ;
+蘊蓄 < unchiku\ ;
+銀色 < gin''iro\ ;
+麦角 < bakkaku\ ;
+台閣 < daikaku\ ;
+満席 < manseki\ ;
+移動体 < idoutai\ ;
+運動費 < undouhi\ ;
+天鵝絨 < biroudo\ ;
+一酸化 < issanka\ ;
+祝賀 < shukuga\ ;
+悪評 < akuhyou\ ;
+悪訳 < akuyaku\ ;
+蕪雑 < buzatsu\ ;
+黒茶 < kurocha\ ;
+税目 < zeimoku\ ;
+遠距離 < enkyori\ ;
+佐賀県 < sagaken\ ;
+示達 < jitatsu\ ;
+虎穴 < koketsu\ ;
+高音部 < kouonbu\ ;
+鎮定 < chintei\ ;
+異端者 < itansha\ ;
+筒井 < tsutsui\ ;
+哲理 < tetsuri\ ;
+鈍足 < donsoku\ ;
+空桶 < karaoke\ ;
+薄鈍 < usunoro\ ;
+懲悪 < chouaku\ ;
+空株 < kuukabu\ ;
+蛮族 < banzoku\ ;
+笛吹 < fuefuki\ ;
+感化院 < kankain\ ;
+竜宮 < ryuuguu\ ;
+祝言 < shuugen\ ;
+恥辱 < chijoku\ ;
+不機嫌 < fukigen\ ;
+部外秘 < bugaihi\ ;
+善悪 < zen''aku\ ;
+重鎮 < juuchin\ ;
+薄遇 < hakuguu\ ;
+亜熱帯 < anettai\ ;
+手口 < teguchi\ ;
+沈降 < chinkou\ ;
+善徳 < zentoku\ ;
+淫欲 < in''yoku\ ;
+銀紙 < gingami\ ;
+富士山 < fujisan\ ;
+鈴蘭 < suzuran\ ;
+戦域 < sen''iki\ ;
+吟誦 < ginshou\ ;
+指揮所 < shikijo\ ;
+品目 < hinmoku\ ;
+醜類 < shuurui\ ;
+生醤油 < kijouyu\ ;
+銅箔 < douhaku\ ;
+戦国 < sengoku\ ;
+愛着 < aichaku\ ;
+浄瑠璃 < joururi\ ;
+補佐官 < hosakan\ ;
+鈍角 < donkaku\ ;
+麦茶 < mugicha\ ;
+黒線 < kokusen\ ;
+過去形 < kakokei\ ;
+草仮名 < sougana\ ;
+愚直 < guchoku\ ;
+銀箔 < ginpaku\ ;
+藤色 < fujiiro\ ;
+戸口 < toguchi\ ;
+空揚 < karaage\ ;
+銀笛 < ginteki\ ;
+御機嫌 < gokigen\ ;
+第一 < daiichi\ ;
+野道 < nomichi\ ;
+唐歌 < karauta\ ;
+同調 < douchou\ ;
+不履行 < furikou\ ;
+合調 < gouchou\ ;
+口輪 < kuchiwa\ ;
+忠魂 < chuukon\ ;
+各論 < kakuron\ ;
+合評 < gappyou\ ;
+叙述 < jojutsu\ ;
+立場 < tachiba\ ;
+唐様 < karayou\ ;
+阿弗利加 < afurika\ ;
+麻縄 < asanawa\ ;
+鶺鴒 < sekirei\ ;
+悪臭 < akushuu\ ;
+擬人化 < gijinka\ ;
+積木 < tsumiki\ ;
+準則 < junsoku\ ;
+鎮台 < chindai\ ;
+分度器 < bundoki\ ;
+沈酔 < chinsui\ ;
+黙祷 < mokutou\ ;
+金赤 < kin''aka\ ;
+立国 < rikkoku\ ;
+手中 < shuchuu\ ;
+手下 < teshita\ ;
+収載 < shuusai\ ;
+出目金 < demekin\ ;
+夜汽車 < yogisha\ ;
+満卓 < mantaku\ ;
+左派系 < sahakei\ ;
+渦巻 < uzumaki\ ;
+海猫 < umineko\ ;
+愚物 < gubutsu\ ;
+重責 < juuseki\ ;
+鼻汗 < hanaase\ ;
+急送 < kyuusou\ ;
+善女 < zen''nyo\ ;
+鉛筆 < enpitsu\ ;
+戒名 < kaimyou\ ;
+厄難 < yakunan\ ;
+海牛 < kaigyuu\ ;
+薬莢 < yakkyou\ ;
+鼻歌 < hanauta\ ;
+憑拠 < hyoukyo\ ;
+鉄索 < tessaku\ ;
+反越 < hanetsu\ ;
+吹聴 < fuichou\ ;
+湯口 < yuguchi\ ;
+古説 < kosetsu\ ;
+水飴 < mizuame\ ;
+即題 < sokudai\ ;
+口説 < kuzetsu\ ;
+詐欺罪 < sagizai\ ;
+種板 < taneita\ ;
+虫気 < mushike\ ;
+空席 < kuuseki\ ;
+測定 < sokutei\ ;
+饂飩屋 < udon''ya\ ;
+湾内 < wan''nai\ ;
+愕然 < gakuzen\ ;
+種本 < tanehon\ ;
+収賄 < shuuwai\ ;
+夢想家 < musouka\ ;
+記譜法 < kifuhou\ ;
+一死後 < isshigo\ ;
+重訳 < juuyaku\ ;
+鈍色 < nibiiro\ ;
+深慮 < shinryo\ ;
+非衛生 < hieisei\ ;
+種族 < shuzoku\ ;
+里親 < satooya\ ;
+黒痣 < kuroaza\ ;
+醋酸 < sakusan\ ;
+麦笛 < mugibue\ ;
+君臣 < kunshin\ ;
+洞穴 < horaana\ ;
+誤投下 < gotouka\ ;
+浸潤 < shinjun\ ;
+古血 < furuchi\ ;
+憂戚 < yuuseki\ ;
+含羞 < ganshuu\ ;
+空将 < kuushou\ ;
+水陸 < suiriku\ ;
+不自由 < fujiyuu\ ;
+流用 < ryuuyou\ ;
+満了 < manryou\ ;
+流産 < ryuuzan\ ;
+積悪 < sekiaku\ ;
+鉛直 < enchoku\ ;
+〃 < onajiku\ ;
+悪策 < akusaku\ ;
+麦秋 < mugiaki\ ;
+金融 < kin''yuu\ ;
+英数字 < eisuuji\ ;
+必需 < hitsuju\ ;
+神経 < shinkei\ ;
+反覆 < hanpuku\ ;
+突如 < totsujo\ ;
+液晶 < ekishou\ ;
+同腹 < doufuku\ ;
+積弊 < sekihei\ ;
+虚業 < kyogyou\ ;
+油菜 < aburana\ ;
+半額 < hangaku\ ;
+決議 < ketsugi\ ;
+鉄石 < tesseki\ ;
+快適 < kaiteki\ ;
+酷遇 < kokuguu\ ;
+黙然 < mokunen\ ;
+酪酸 < rakusan\ ;
+釉薬 < yuuyaku\ ;
+告知 < kokuchi\ ;
+知情意 < chijoui\ ;
+風呂桶 < furooke\ ;
+恋草 < koigusa\ ;
+浦波 < uranami\ ;
+薬籠 < yakurou\ ;
+英語圏 < eigoken\ ;
+空圧 < kuuatsu\ ;
+低音部 < teionbu\ ;
+秋水 < shuusui\ ;
+右腕 < migiude\ ;
+口茶 < kuchija\ ;
+徒食 < toshoku\ ;
+酪農 < rakunou\ ;
+薄肉 < usuniku\ ;
+北鮮 < hokusen\ ;
+黄熟 < koujuku\ ;
+二期制 < nikisei\ ;
+収蔵 < shuuzou\ ;
+浴槽 < yokusou\ ;
+金色 < konjiki\ ;
+擬声語 < giseigo\ ;
+原註 < genchuu\ ;
+悪症 < akushou\ ;
+悪病 < akubyou\ ;
+化骨 < kakotsu\ ;
+里芋 < satoimo\ ;
+反落 < hanraku\ ;
+心配 < shinpai\ ;
+氷輪 < hyourin\ ;
+感服 < kanpuku\ ;
+毒魚 < dokugyo\ ;
+私欲 < shiyoku\ ;
+鹿砦 < rokusai\ ;
+用務員 < youmuin\ ;
+窮乏 < kyuubou\ ;
+深夜 < shin''ya\ ;
+確認 < kakunin\ ;
+減収 < genshuu\ ;
+薬礼 < yakurei\ ;
+錨地 < byouchi\ ;
+薄縁 < usuberi\ ;
+御苦労 < gokurou\ ;
+未登記 < mitouki\ ;
+簡易化 < kan''ika\ ;
+薄絹 < usuginu\ ;
+快諾 < kaidaku\ ;
+北風 < hokufuu\ ;
+一過性 < ikkasei\ ;
+重聴 < juuchou\ ;
+銘柄 < meigara\ ;
+悪玉 < akudama\ ;
+秘曲 < hikyoku\ ;
+薄紙 < usugami\ ;
+薄紅 < usubeni\ ;
+運送費 < unsouhi\ ;
+渋味 < shibumi\ ;
+南進 < nanshin\ ;
+医師会 < ishikai\ ;
+銘木 < meiboku\ ;
+名称 < meishou\ ;
+流汗 < ryuukan\ ;
+北面 < hokumen\ ;
+悉皆 < shikkai\ ;
+流水 < ryuusui\ ;
+自叙伝 < jijoden\ ;
+突先 < tossaki\ ;
+活況 < kakkyou\ ;
+釈義 < shakugi\ ;
+天気屋 < tenkiya\ ;
+難易度 < nan''ido\ ;
+吉祥 < kisshou\ ;
+硫酸 < ryuusan\ ;
+弱齢 < jakurei\ ;
+泡盛 < awamori\ ;
+北限 < hokugen\ ;
+秋晴 < akibare\ ;
+穴凹 < anaboko\ ;
+金網 < kanaami\ ;
+号笛 < gouteki\ ;
+蛇口 < jaguchi\ ;
+淑女 < shukujo\ ;
+双翼 < souyoku\ ;
+仮数部 < kasuubu\ ;
+半農 < han''nou\ ;
+鈍痛 < dontsuu\ ;
+十字路 < juujiro\ ;
+北門 < kitamon\ ;
+吸物 < suimono\ ;
+十進 < jisshin\ ;
+薬用 < yakuyou\ ;
+銀杏 < gin''nan\ ;
+渡仏 < tofutsu\ ;
+磊落 < rairaku\ ;
+虚心 < kyoshin\ ;
+洗滌 < sendeki\ ;
+津波 < tsunami\ ;
+沖縄 < okinawa\ ;
+民踊 < min''you\ ;
+虚弱 < kyojaku\ ;
+古筆 < kohitsu\ ;
+後釜 < atogama\ ;
+重篤 < juutoku\ ;
+添削 < tensaku\ ;
+金筋 < kinsuji\ ;
+得道 < tokudou\ ;
+負符号 < fufugou\ ;
+重箱 < juubako\ ;
+各県 < kakuken\ ;
+可祝 < kashiku\ ;
+同病 < doubyou\ ;
+大御所 < oogosho\ ;
+収納 < shuunou\ ;
+空中 < kuuchuu\ ;
+黒板 < kokuban\ ;
+藁灰 < warabai\ ;
+分布図 < bunpuzu\ ;
+銃撃 < juugeki\ ;
+石鯛 < ishidai\ ;
+醜聞 < shuubun\ ;
+製図家 < seizuka\ ;
+後逸 < kouitsu\ ;
+台石 < daiishi\ ;
+卓論 < takuron\ ;
+殿閣 < denkaku\ ;
+薄皮 < usukawa\ ;
+戦時下 < senjika\ ;
+厚臼 < atsuusu\ ;
+博覧 < hakuran\ ;
+天気図 < tenkizu\ ;
+単角 < tankaku\ ;
+虎巻 < torakan\ ;
+当限 < tougiri\ ;
+積分 < sekibun\ ;
+錯乱 < sakuran\ ;
+黒斑 < kokuhan\ ;
+治療 < chiryou\ ;
+単複 < tanpuku\ ;
+残高 < zandaka\ ;
+鉄橋 < tekkyou\ ;
+軍事費 < gunjihi\ ;
+混作 < konsaku\ ;
+金石 < kinseki\ ;
+炎天下 < entenka\ ;
+今日明日 < kyouasu\ ;
+収税 < shuuzei\ ;
+惜敗 < sekihai\ ;
+稲叢 < inamura\ ;
+浮彫 < ukibori\ ;
+後足 < atoashi\ ;
+北辺 < hokuhen\ ;
+肥満児 < himanji\ ;
+釣瓶 < tsurube\ ;
+浪漫派 < romanha\ ;
+慟哭 < doukoku\ ;
+惑星 < wakusei\ ;
+半襟 < han''eri\ ;
+起重機 < kijuuki\ ;
+圧砕機 < assaiki\ ;
+死魄 < shihaku\ ;
+回路図 < kairozu\ ;
+確聞 < kakubun\ ;
+恋病 < koiyami\ ;
+金的 < kinteki\ ;
+半袖 < hansode\ ;
+吸殻 < suigara\ ;
+虫垂 < chuusui\ ;
+民衆 < minshuu\ ;
+兵器庫 < heikiko\ ;
+鉄柱 < tetchuu\ ;
+毎週 < maishuu\ ;
+残額 < zangaku\ ;
+息災 < sokusai\ ;
+岐阜県 < gifuken\ ;
+弱電 < jakuden\ ;
+蔵米 < kuramai\ ;
+海山 < umiyama\ ;
+残響 < zankyou\ ;
+洋楽 < yougaku\ ;
+重病 < juubyou\ ;
+薬液 < yakueki\ ;
+薄物 < usumono\ ;
+薄片 < hakuhen\ ;
+泥海 < doroumi\ ;
+庶務課 < shomuka\ ;
+御袋 < ofukuro\ ;
+水芸 < mizugei\ ;
+即興 < sokkyou\ ;
+秘密 < himitsu\ ;
+卵膜 < ranmaku\ ;
+反目 < hanmoku\ ;
+水色 < mizuiro\ ;
+離縁状 < rienjou\ ;
+蕃神 < banshin\ ;
+針状 < harijou\ ;
+殉難 < jun''nan\ ;
+律語 < ritsugo\ ;
+恋猫 < koineko\ ;
+和式 < washiki\ ;
+単葉 < tan''you\ ;
+黙従 < mokujuu\ ;
+金玉 < kintama\ ;
+銀幕 < ginmaku\ ;
+矢面 < yaomote\ ;
+税収 < zeishuu\ ;
+稲作 < inasaku\ ;
+洋服 < youfuku\ ;
+正規化 < seikika\ ;
+印肉 < in''niku\ ;
+性癖 < seiheki\ ;
+弁駁 < benpaku\ ;
+蘭学 < rangaku\ ;
+名流 < meiryuu\ ;
+恵沢 < keitaku\ ;
+形跡 < keiseki\ ;
+同流 < douryuu\ ;
+弔電 < chouden\ ;
+落雷 < rakurai\ ;
+双璧 < souheki\ ;
+悪方 < akugata\ ;
+合流 < gouryuu\ ;
+落雁 < rakugan\ ;
+社歴 < shareki\ ;
+落陽 < rakuyou\ ;
+重爆 < juubaku\ ;
+今出来 < imadeki\ ;
+黒帯 < kuroobi\ ;
+叙爵 < joshaku\ ;
+北西 < hokusei\ ;
+検波器 < kenpaki\ ;
+口火 < kuchibi\ ;
+叔父 < shukufu\ ;
+泥棒 < dorobou\ ;
+汁粉 < shiruko\ ;
+弱酸 < jakusan\ ;
+蔵相 < zoushou\ ;
+千草 < chigusa\ ;
+含有 < gan''yuu\ ;
+反物 < tanmono\ ;
+鳥類 < chourui\ ;
+弁難 < ben''nan\ ;
+即納 < sokunou\ ;
+社業 < shagyou\ ;
+気脈 < kimyaku\ ;
+礼楽 < reigaku\ ;
+母親 < hahaoya\ ;
+移出 < ishutsu\ ;
+徳育 < tokuiku\ ;
+磁石 < jishaku\ ;
+消去 < shoukyo\ ;
+醜男 < buotoko\ ;
+破裂 < haretsu\ ;
+消印 < keshiin\ ;
+同業 < dougyou\ ;
+私塾 < shijuku\ ;
+悪戯 < itazura\ ;
+動軸 < doujiku\ ;
+碧空 < hekikuu\ ;
+劈頭 < hekitou\ ;
+蘭国 < rankoku\ ;
+即答 < sokutou\ ;
+下付金 < kafukin\ ;
+鉄心 < tesshin\ ;
+毛虫 < kemushi\ ;
+避難所 < hinanjo\ ;
+恋河 < koikawa\ ;
+配給 < haikyuu\ ;
+同格 < doukaku\ ;
+片意地 < kataiji\ ;
+薬方 < yakuhou\ ;
+活字 < katsuji\ ;
+哀別 < aibetsu\ ;
+徒花 < adabana\ ;
+礼服 < reifuku\ ;
+恋水 < koimizu\ ;
+哀切 < aisetsu\ ;
+合格 < goukaku\ ;
+海原 < unabara\ ;
+麻屑 < asakuzu\ ;
+古池 < furuike\ ;
+愚劣 < guretsu\ ;
+短軸 < tanjiku\ ;
+醜状 < shuujou\ ;
+各校 < kakukou\ ;
+恋死 < koijini\ ;
+悪徳 < akutoku\ ;
+気絶 < kizetsu\ ;
+沈澱 < chinden\ ;
+劈開 < hekikai\ ;
+古歌 < furuuta\ ;
+落選 < rakusen\ ;
+副題 < fukudai\ ;
+式部 < shikibu\ ;
+卜筮 < bokuzei\ ;
+医学部 < igakubu\ ;
+呂律 < roretsu\ ;
+葉身 < youshin\ ;
+徐脈 < jomyaku\ ;
+碧眼 < hekigan\ ;
+後腹 < atobara\ ;
+歴遊 < rekiyuu\ ;
+予報音 < yohouon\ ;
+彬蔚 < hinutsu\ ;
+禅寺 < zendera\ ;
+風呂代 < furodai\ ;
+死軸 < shijiku\ ;
+流域 < ryuuiki\ ;
+後知恵 < atodjie\ ;
+鶴科 < tsuruka\ ;
+恭敬 < kyoukei\ ;
+汎用 < han''you\ ;
+差機関 < sakikan\ ;
+叔母 < shukubo\ ;
+秀吟 < shuugin\ ;
+前髪 < maegami\ ;
+咀嚼 < soshaku\ ;
+殺虫 < satchuu\ ;
+勤行 < gongyou\ ;
+詐欺師 < sagishi\ ;
+卵白 < ranpaku\ ;
+金棒 < kanabou\ ;
+座骨 < zakotsu\ ;
+徴税 < chouzei\ ;
+労賃 < rouchin\ ;
+合掌 < gasshou\ ;
+外祖父 < gaisofu\ ;
+勅許 < chokkyo\ ;
+短評 < tanpyou\ ;
+論理和 < ronriwa\ ;
+秘仏 < hibutsu\ ;
+野営地 < yaeichi\ ;
+海亀 < umigame\ ;
+邁進 < maishin\ ;
+雰囲気 < fun''iki\ ;
+因美線 < inbisen\ ;
+古本 < furubon\ ;
+反様 < kaisama\ ;
+民福 < minpuku\ ;
+気丈夫 < kijoubu\ ;
+初期化 < shokika\ ;
+遅霜 < osojimo\ ;
+洛外 < rakugai\ ;
+酒癖 < shuheki\ ;
+邪説 < jasetsu\ ;
+氏神 < ujigami\ ;
+段落 < danraku\ ;
+呻吟 < shingin\ ;
+鉄壁 < teppeki\ ;
+秋作 < akisaku\ ;
+区立 < kuritsu\ ;
+各所 < kakusho\ ;
+惨劇 < sangeki\ ;
+恋文 < koibumi\ ;
+法悦 < houetsu\ ;
+邦訳 < houyaku\ ;
+水球 < suikyuu\ ;
+浦人 < urabito\ ;
+銀側 < gingawa\ ;
+取替 < torikae\ ;
+歩行器 < hokouki\ ;
+前陳 < zenchin\ ;
+石蝋 < sekirou\ ;
+蓬生 < yomogiu\ ;
+流動 < ryuudou\ ;
+湯豆腐 < yudoufu\ ;
+裏背戸 < urasedo\ ;
+逆鱗 < gekirin\ ;
+知行 < chigyou\ ;
+同役 < douyaku\ ;
+酸漿 < hoozuki\ ;
+歴覧 < rekiran\ ;
+水牢 < mizurou\ ;
+水牛 < suigyuu\ ;
+放生会 < houjoue\ ;
+育児院 < ikujiin\ ;
+不作為 < fusakui\ ;
+鳥貝 < torigai\ ;
+水爆 < suibaku\ ;
+武装具 < busougu\ ;
+北米 < hokubei\ ;
+下駄番 < getaban\ ;
+卓用 < takuyou\ ;
+剽軽 < hyoukin\ ;
+咎人 < toganin\ ;
+葉蜂 < habachi\ ;
+徳用 < tokuyou\ ;
+十目 < juumoku\ ;
+同席 < douseki\ ;
+真黒 < makkuro\ ;
+自動化 < jidouka\ ;
+劣角 < rekkaku\ ;
+薬害 < yakugai\ ;
+禄命 < rokumei\ ;
+刻限 < kokugen\ ;
+君寵 < kunchou\ ;
+各店 < kakuten\ ;
+卓球 < takkyuu\ ;
+無遠慮 < buenryo\ ;
+運動場 < undouba\ ;
+家計費 < kakeihi\ ;
+禀告 < rinkoku\ ;
+周到 < shuutou\ ;
+汗水 < asemizu\ ;
+北端 < hokutan\ ;
+音楽家 < ongakka\ ;
+黒人 < kokujin\ ;
+彼程 < arehodo\ ;
+道辺 < michibe\ ;
+武術 < bujutsu\ ;
+外祖母 < gaisobo\ ;
+残菊 < zangiku\ ;
+没我 < botsuga\ ;
+流亡 < ryuubou\ ;
+労務課 < roumuka\ ;
+初音 < hatsune\ ;
+都立 < toritsu\ ;
+別離 < betsuri\ ;
+従的 < juuteki\ ;
+破竹 < hachiku\ ;
+蒼白 < souhaku\ ;
+水滴 < suiteki\ ;
+力行 < ryokkou\ ;
+無軌道 < mukidou\ ;
+選評 < senpyou\ ;
+礫岩 < rekigan\ ;
+各層 < kakusou\ ;
+別院 < betsuin\ ;
+劇詩 < gekishi\ ;
+鉄則 < tessoku\ ;
+遅速 < chisoku\ ;
+碧水 < hekisui\ ;
+石臼 < ishiusu\ ;
+年額 < nengaku\ ;
+別間 < betsuma\ ;
+汁気 < shiruke\ ;
+洛内 < rakunai\ ;
+毎秒 < maibyou\ ;
+微熱 < binetsu\ ;
+水浴 < suiyoku\ ;
+惑乱 < wakuran\ ;
+胃痙攣 < ikeiren\ ;
+古式 < koshiki\ ;
+運動員 < undouin\ ;
+機械語 < kikaigo\ ;
+半熟 < hanjuku\ ;
+水流 < suiryuu\ ;
+原木 < genboku\ ;
+勤続 < kinzoku\ ;
+逼迫 < hippaku\ ;
+厚板 < atsuita\ ;
+美容院 < biyouin\ ;
+弱者 < jakusha\ ;
+金平 < kinpira\ ;
+危気 < abunage\ ;
+急所 < kyuusho\ ;
+殻竿 < karasao\ ;
+一転機 < ittenki\ ;
+取得 < shutoku\ ;
+即死 < sokushi\ ;
+鴇色 < tokiiro\ ;
+台尻 < daijiri\ ;
+杓文字 < shamoji\ ;
+追随 < tsuizui\ ;
+勲章 < kunshou\ ;
+連量 < renryou\ ;
+探査機 < tansaki\ ;
+田舎家 < inakaya\ ;
+合壁 < gappeki\ ;
+出額 < debitai\ ;
+刹那 < setsuna\ ;
+年長 < nenchou\ ;
+出頭 < shuttou\ ;
+切除 < setsujo\ ;
+葭簀 < yoshizu\ ;
+運転費 < untenhi\ ;
+橙皮油 < touhiyu\ ;
+洋傘 < yougasa\ ;
+過年度 < kanendo\ ;
+研究 < kenkyuu\ ;
+進軍 < shingun\ ;
+酒毒 < shudoku\ ;
+薬品 < yakuhin\ ;
+沈思 < chinshi\ ;
+南洋 < nan''you\ ;
+死肉 < shiniku\ ;
+思惑 < omowaku\ ;
+鳶色 < tobiiro\ ;
+運動具 < undougu\ ;
+落胆 < rakutan\ ;
+鳥葬 < chousou\ ;
+沢山 < takusan\ ;
+御存知 < gozonji\ ;
+刺身 < sashimi\ ;
+各地 < kakuchi\ ;
+薄墨 < usuzumi\ ;
+家政科 < kaseika\ ;
+各国 < kakkoku\ ;
+葦笛 < ashibue\ ;
+小奇麗 < kogirei\ ;
+幕電 < makuden\ ;
+剥製 < hakusei\ ;
+醜態 < shuutai\ ;
+短絡 < tanraku\ ;
+移住者 < ijuusha\ ;
+民泊 < minpaku\ ;
+社告 < shakoku\ ;
+弁膜 < benmaku\ ;
+道具屋 < douguya\ ;
+醜悪 < shuuaku\ ;
+薬剤 < yakuzai\ ;
+比率 < hiritsu\ ;
+弊習 < heishuu\ ;
+役牛 < ekigyuu\ ;
+同義語 < dougigo\ ;
+沼地 < numachi\ ;
+莫連 < bakuren\ ;
+法名 < houmyou\ ;
+模擬戦 < mogisen\ ;
+初速 < shosoku\ ;
+名号 < myougou\ ;
+法博 < houhaku\ ;
+逆運 < gyakuun\ ;
+眉雪 < bisetsu\ ;
+凸鏡 < tokkyou\ ;
+合口 < aikuchi\ ;
+社則 < shasoku\ ;
+荒駒 < aragoma\ ;
+永日 < eijitsu\ ;
+分針 < funshin\ ;
+分量 < bunryou\ ;
+蒲公英 < tanpopo\ ;
+別路 < betsuro\ ;
+法力 < houriki\ ;
+比熱 < hinetsu\ ;
+法則 < housoku\ ;
+稽古着 < keikogi\ ;
+瞼 < mabuta\ ;
+辷 < suberu\ ;
+瞳 < hitomi\ ;
+輩 < yakara\ ;
+盲 < meshii\ ;
+車 < kuruma\ ;
+序 < tsuide\ ;
+皆 < min''na\ ;
+幕 < tobari\ ;
+帝 < mikado\ ;
+左 < hidari\ ;
+疾 < shitsu\ ;
+畳 < tatami\ ;
+畠 < hatake\ ;
+瓦 < kawara\ ;
+岬 < misaki\ ;
+届 < todoke\ ;
+尊 < mikoto\ ;
+宝 < takara\ ;
+獣 < kemono\ ;
+狼 < ookami\ ;
+独 < doitsu\ ;
+誠 < makoto\ ;
+証 < akashi\ ;
+父 < chichi\ ;
+訛 < namari\ ;
+娘 < musume\ ;
+姿 < sugata\ ;
+妾 < warawa\ ;
+妹 < imouto\ ;
+要 < kaname\ ;
+襷 < tasuki\ ;
+煙 < kemuri\ ;
+襖 < fusuma\ ;
+裸 < hadaka\ ;
+袴 < hakama\ ;
+袋 < fukuro\ ;
+衣 < koromo\ ;
+埃 < hokori\ ;
+蟀 < shutsu\ ;
+鼬 < itachi\ ;
+鼠 < nezumi\ ;
+土 < tsuchi\ ;
+漆 < urushi\ ;
+蛹 < sanagi\ ;
+蛙 < kawazu\ ;
+器 < utsuwa\ ;
+港 < minato\ ;
+薬 < kusuri\ ;
+薪 < takigi\ ;
+涙 < namida\ ;
+薇 < zenmai\ ;
+薄 < susuki\ ;
+鴉 < karasu\ ;
+厨 < kuriya\ ;
+卸 < oroshi\ ;
+卵 < tamago\ ;
+歪 < ibitsu\ ;
+魚 < sakana\ ;
+南 < minami\ ;
+匠 < takumi\ ;
+櫻 < sakura\ ;
+苺 < ichigo\ ;
+勢 < hazumi\ ;
+檜 < hinoki\ ;
+舅 < shuuto\ ;
+榊 < sakaki\ ;
+光 < hikari\ ;
+館 < yakata\ ;
+候 < sourou\ ;
+響 < hibiki\ ;
+柳 < yanagi\ ;
+俄 < niwaka\ ;
+係 < kakari\ ;
+便 < yosuga\ ;
+枕 < makura\ ;
+机 < tsukue\ ;
+仏 < hotoke\ ;
+曇 < kumori\ ;
+雀 < suzume\ ;
+京 < miyako\ ;
+隣 < tonari\ ;
+乙 < kinoto\ ;
+乍 < nagara\ ;
+万 < yorozu\ ;
+七 < shichi\ ;
+丁 < hinoto\ ;
+緑 < midori\ ;
+絣 < kasuri\ ;
+絆 < kizuna\ ;
+簾 < sudare\ ;
+鏡 < kagami\ ;
+鎖 < kusari\ ;
+筒 < tsutsu\ ;
+捌 < sabaki\ ;
+鋼 < hagane\ ;
+童 < warabe\ ;
+鋏 < hasami\ ;
+扉 < tobira\ ;
+所 < tokoro\ ;
+廃虚 < haikyo\ ;
+忿怒 < fun''nu\ ;
+送迎 < sougei\ ;
+迅雷 < jinrai\ ;
+志操 < shisou\ ;
+通貨 < tsuuka\ ;
+名刺 < meishi\ ;
+同前 < douzen\ ;
+礼典 < reiten\ ;
+前衛 < zen''ei\ ;
+矢筈 < yahazu\ ;
+金坑 < kinkou\ ;
+原形 < genkei\ ;
+復権 < fukken\ ;
+前行 < zenkou\ ;
+名分 < meibun\ ;
+形状 < keijou\ ;
+列車 < ressha\ ;
+名刀 < meitou\ ;
+廃藩 < haihan\ ;
+配本 < haihon\ ;
+厚志 < koushi\ ;
+薄味 < hakumi\ ;
+社僧 < shasou\ ;
+合剤 < gouzai\ ;
+同処 < dousho\ ;
+法典 < houten\ ;
+社債 < shasai\ ;
+年輪 < nenrin\ ;
+年輩 < nenpai\ ;
+磁心 < jishin\ ;
+分遣 < bunken\ ;
+友好 < yuukou\ ;
+勤番 < kinban\ ;
+石碑 < sekihi\ ;
+合切 < gassai\ ;
+退転 < taiten\ ;
+正編 < seihen\ ;
+反変 < hanpen\ ;
+叱咤 < shitta\ ;
+同党 < doutou\ ;
+幽趣 < yuushu\ ;
+加給 < kakyuu\ ;
+名優 < meiyuu\ ;
+厳封 < genpuu\ ;
+帯電 < taiden\ ;
+律法 < rippou\ ;
+凌雲 < ryouun\ ;
+快感 < kaikan\ ;
+選考 < senkou\ ;
+矢種 < yadane\ ;
+汎愛 < han''ai\ ;
+強盗 < goutou\ ;
+厳寒 < genkan\ ;
+量器 < ryouki\ ;
+名僧 < meisou\ ;
+正統 < seitou\ ;
+遊蕩 < yuutou\ ;
+決定 < kettei\ ;
+蒸民 < joumin\ ;
+弾痕 < dankon\ ;
+重噸 < juuton\ ;
+迂闊 < ukatsu\ ;
+造詣 < zoukei\ ;
+淡々 < tantan\ ;
+厳守 < genshu\ ;
+台名 < taimei\ ;
+厳存 < genson\ ;
+正系 < seikei\ ;
+邪神 < jashin\ ;
+辺陬 < hensuu\ ;
+造言 < zougen\ ;
+逃走 < tousou\ ;
+通語 < tsuugo\ ;
+分載 < bunsai\ ;
+酸性 < sansei\ ;
+相関 < soukan\ ;
+後段 < koudan\ ;
+社会 < shakai\ ;
+通話 < tsuuwa\ ;
+復校 < fukkou\ ;
+同値 < douchi\ ;
+切身 < kirimi\ ;
+君主 < kunshu\ ;
+草鞋 < waraji\ ;
+法例 < hourei\ ;
+制裁 < seisai\ ;
+南方 < nanpou\ ;
+北海 < hokkai\ ;
+忠愛 < chuuai\ ;
+金員 < kin''in\ ;
+単文 < tanbun\ ;
+確度 < kakudo\ ;
+民望 < minbou\ ;
+薄利 < hakuri\ ;
+社交 < shakou\ ;
+微服 < bifuku\ ;
+求愛 < kyuuai\ ;
+単数 < tansuu\ ;
+必携 < hikkei\ ;
+金品 < kinpin\ ;
+劣等 < rettou\ ;
+盤面 < banmen\ ;
+匠気 < shouki\ ;
+動産 < dousan\ ;
+延納 < en''nou\ ;
+砕片 < saihen\ ;
+真逆 < masaka\ ;
+同体 < doutai\ ;
+河北 < kahoku\ ;
+社主 < shashu\ ;
+南支 < nanshi\ ;
+口吻 < koufun\ ;
+弾琴 < dankin\ ;
+師門 < shimon\ ;
+気早 < kibaya\ ;
+急場 < kyuuba\ ;
+同伴 < douhan\ ;
+連衡 < renkou\ ;
+口吟 < kougin\ ;
+法人 < houjin\ ;
+冷静 < reisei\ ;
+返金 < henkin\ ;
+参堂 < sandou\ ;
+快弁 < kaiben\ ;
+忠恕 < chuujo\ ;
+召募 < shoubo\ ;
+合併 < gouhei\ ;
+吐乳 < tonyuu\ ;
+名人 < meijin\ ;
+合体 < gattai\ ;
+薄光 < hakkou\ ;
+蔓延 < man''en\ ;
+当然 < touzen\ ;
+反噬 < hanzei\ ;
+原寸 < gensun\ ;
+同仁 < doujin\ ;
+同人 < dounin\ ;
+典麗 < tenrei\ ;
+向上 < koujou\ ;
+巣鶏 < sudori\ ;
+十本 < juppon\ ;
+廃艦 < haikan\ ;
+江山 < kouzan\ ;
+座薬 < zayaku\ ;
+萎縮 < ishuku\ ;
+重合 < juugou\ ;
+広言 < kougen\ ;
+廃船 < haisen\ ;
+廐肥 < kyuuhi\ ;
+同乗 < doujou\ ;
+応急 < oukyuu\ ;
+遊芸 < yuugei\ ;
+残痕 < zankon\ ;
+前著 < zencho\ ;
+菖蒲 < shoubu\ ;
+野原 < nohara\ ;
+決壊 < kekkai\ ;
+原子 < genshi\ ;
+毛氈 < mousen\ ;
+占拠 < senkyo\ ;
+別製 < bessei\ ;
+弊社 < heisha\ ;
+比況 < hikyou\ ;
+透視 < toushi\ ;
+半数 < hansuu\ ;
+醜女 < shuujo\ ;
+効目 < kikime\ ;
+民政 < minsei\ ;
+鳴禽 < meikin\ ;
+民放 < minpou\ ;
+近郷 < kingou\ ;
+酒手 < sakate\ ;
+返還 < henkan\ ;
+弓矢 < yumiya\ ;
+前菜 < zensai\ ;
+反問 < hanmon\ ;
+処遇 < shoguu\ ;
+心技 < shingi\ ;
+初見 < shoken\ ;
+欠航 < kekkou\ ;
+盗電 < touden\ ;
+巨鯨 < kyogei\ ;
+沃土 < yokudo\ ;
+巻首 < kanshu\ ;
+出足 < deashi\ ;
+残生 < zansei\ ;
+北欧 < hokuou\ ;
+盗難 < tounan\ ;
+加禄 < karoku\ ;
+号俸 < gouhou\ ;
+危急 < kikyuu\ ;
+剛臆 < gouoku\ ;
+弾片 < danpen\ ;
+県道 < kendou\ ;
+即応 < sokuou\ ;
+武神 < bushin\ ;
+返送 < hensou\ ;
+復改 < fukkai\ ;
+金剛 < kongou\ ;
+幣貢 < heikou\ ;
+配所 < haisho\ ;
+卵形 < rankei\ ;
+金券 < kinken\ ;
+酔態 < suitai\ ;
+巨魁 < kyokai\ ;
+蕃地 < banchi\ ;
+十数 < juusuu\ ;
+汽圧 < kiatsu\ ;
+凡退 < bontai\ ;
+達者 < tassha\ ;
+従来 < juurai\ ;
+選管 < senkan\ ;
+分譲 < bunjou\ ;
+司会 < shikai\ ;
+御料 < goryou\ ;
+円高 < endaka\ ;
+近辺 < kinpen\ ;
+口内 < kounai\ ;
+出費 < shuppi\ ;
+金冠 < kinkan\ ;
+印形 < ingyou\ ;
+司令 < shirei\ ;
+重刑 < juukei\ ;
+追訴 < tsuiso\ ;
+号令 < gourei\ ;
+加硫 < karyuu\ ;
+剛胆 < goutan\ ;
+金具 < kanagu\ ;
+収受 < shuuju\ ;
+配慮 < hairyo\ ;
+迷論 < meiron\ ;
+毎毎 < maimai\ ;
+追記 < tsuiki\ ;
+睡蓮 < suiren\ ;
+心意 < shin''i\ ;
+割線 < kassen\ ;
+切諌 < sekkan\ ;
+忘年 < bounen\ ;
+即座 < sokuza\ ;
+巻頭 < kantou\ ;
+効用 < kouyou\ ;
+蒲柳 < horyuu\ ;
+恒例 < kourei\ ;
+史伝 < shiden\ ;
+忍従 < ninjuu\ ;
+酷寒 < kokkan\ ;
+勇猛 < yuumou\ ;
+毬果 < kyuuka\ ;
+荷足 < niashi\ ;
+常道 < joudou\ ;
+分詞 < bunshi\ ;
+治乱 < chiran\ ;
+卵巣 < ransou\ ;
+死産 < shizan\ ;
+死生 < shisei\ ;
+博愛 < hakuai\ ;
+常連 < jouren\ ;
+冒頭 < boutou\ ;
+性向 < seikou\ ;
+帰郷 < kikyou\ ;
+水平 < suihei\ ;
+治世 < chisei\ ;
+引用 < in''you\ ;
+鮮麗 < senrei\ ;
+目釘 < mekugi\ ;
+反動 < handou\ ;
+前腕 < maeude\ ;
+史乗 < shijou\ ;
+分解 < bunkai\ ;
+参向 < sankou\ ;
+右上 < migiue\ ;
+遣米 < kenbei\ ;
+古俗 < kozoku\ ;
+後景 < koukei\ ;
+厖大 < boudai\ ;
+退行 < taikou\ ;
+可也 < kanari\ ;
+座興 < zakyou\ ;
+正眼 < seigan\ ;
+待望 < taibou\ ;
+磁壁 < jiheki\ ;
+差額 < sagaku\ ;
+残片 < zanpen\ ;
+句作 < kusaku\ ;
+後昆 < koukon\ ;
+正目 < masame\ ;
+矢玉 < yadama\ ;
+十指 < jusshi\ ;
+単性 < tansei\ ;
+毛根 < moukon\ ;
+蒸散 < jousan\ ;
+後方 < kouhou\ ;
+配当 < haitou\ ;
+加療 < karyou\ ;
+律旋 < rissen\ ;
+口伝 < kouden\ ;
+酒店 < shuten\ ;
+師道 < shidou\ ;
+底荷 < sokoni\ ;
+刊行 < kankou\ ;
+出訴 < shusso\ ;
+博徒 < bakuto\ ;
+砂漠 < sabaku\ ;
+急募 < kyuubo\ ;
+弱火 < yowabi\ ;
+前者 < zensha\ ;
+急務 < kyuumu\ ;
+巨頭 < kyotou\ ;
+葉物 < hamono\ ;
+分袂 < bunbei\ ;
+円頂 < enchou\ ;
+気息 < kisoku\ ;
+後攻 < koukou\ ;
+鳩目 < hatome\ ;
+重体 < juutai\ ;
+厳命 < genmei\ ;
+下世話 < gesewa\ ;
+冒険 < bouken\ ;
+原因 < gen''in\ ;
+内項 < naikou\ ;
+前翅 < zenshi\ ;
+度胸 < dokyou\ ;
+看貫 < kankan\ ;
+博引 < hakuin\ ;
+機長 < kichou\ ;
+割符 < warifu\ ;
+気性 < kishou\ ;
+十戒 < jikkai\ ;
+受信 < jushin\ ;
+目途 < mokuto\ ;
+農道 < noudou\ ;
+石灰 < sekkai\ ;
+民情 < minjou\ ;
+厚地 < atsuji\ ;
+重任 < juunin\ ;
+迎賓 < geihin\ ;
+厳君 < genkun\ ;
+前置 < zenchi\ ;
+重代 < juudai\ ;
+列藩 < reppan\ ;
+鳥目 < torime\ ;
+単弁 < tanben\ ;
+段段 < dandan\ ;
+水屋 < mizuya\ ;
+往昔 < ouseki\ ;
+金主 < kinshu\ ;
+破格 < hakaku\ ;
+千慮 < senryo\ ;
+去勢 < kyosei\ ;
+当歳 < tousai\ ;
+皮革 < hikaku\ ;
+内面 < naimen\ ;
+巷間 < koukan\ ;
+冷酒 < reishu\ ;
+卵子 < ranshi\ ;
+怪光 < kaikou\ ;
+兼題 < kendai\ ;
+檀那 < dan''na\ ;
+野中 < nonaka\ ;
+造船 < zousen\ ;
+参内 < sandai\ ;
+水害 < suigai\ ;
+徹底 < tettei\ ;
+気弱 < kiyowa\ ;
+叛乱 < hanran\ ;
+御慶 < gyokei\ ;
+県警 < kenkei\ ;
+帝道 < teidou\ ;
+別荘 < bessou\ ;
+碁席 < goseki\ ;
+初葉 < shoyou\ ;
+彼方 < kanata\ ;
+盟邦 < meihou\ ;
+快報 < kaihou\ ;
+厭厭 < iyaiya\ ;
+水子 < mizugo\ ;
+再開 < saikai\ ;
+遠称 < enshou\ ;
+北方 < hoppou\ ;
+内陣 < naijin\ ;
+半径 < hankei\ ;
+葛湯 < kuzuyu\ ;
+鮮魚 < sengyo\ ;
+冷遇 < reiguu\ ;
+半影 < han''ei\ ;
+反例 < hanrei\ ;
+巣雛 < suhina\ ;
+迦楼羅 < karura\ ;
+微弱 < bijaku\ ;
+郷村 < gouson\ ;
+硬性 < kousei\ ;
+酒屋 < sakaya\ ;
+前編 < zenpen\ ;
+退蔵 < taizou\ ;
+凝議 < gyougi\ ;
+前線 < zensen\ ;
+川面 < kawamo\ ;
+原品 < genpin\ ;
+引照 < inshou\ ;
+全館 < zenkan\ ;
+近詠 < kin''ei\ ;
+蒙昧 < moumai\ ;
+残滓 < zanshi\ ;
+沙丘 < sakyuu\ ;
+死点 < shiten\ ;
+相貌 < soubou\ ;
+送葬 < sousou\ ;
+白魔 < hakuma\ ;
+卜居 < bokkyo\ ;
+碍子 < gaishi\ ;
+毎晩 < maiban\ ;
+厳冬 < gentou\ ;
+友人 < yuujin\ ;
+益金 < ekikin\ ;
+労災 < rousai\ ;
+南岸 < nangan\ ;
+手忠実 < temame\ ;
+着荷 < chakka\ ;
+葦毛 < ashige\ ;
+次第 < shidai\ ;
+厚味 < atsumi\ ;
+兵難 < heinan\ ;
+即夜 < sokuya\ ;
+形木 < katagi\ ;
+師資 < shishi\ ;
+南山 < nanzan\ ;
+看視 < kanshi\ ;
+近視 < kinshi\ ;
+巌頭 < gantou\ ;
+茶道 < chadou\ ;
+次章 < jishou\ ;
+具陳 < guchin\ ;
+怪人 < kaijin\ ;
+登高 < toukou\ ;
+盤踞 < bankyo\ ;
+兵隊 < heitai\ ;
+連署 < rensho\ ;
+駄洒落 < dajare\ ;
+正犯 < seihan\ ;
+単射 < tansha\ ;
+参会 < sankai\ ;
+劇画 < gekiga\ ;
+全音 < zen''on\ ;
+卵塔 < rantou\ ;
+党首 < toushu\ ;
+過称 < kashou\ ;
+十干 < jikkan\ ;
+英領 < eiryou\ ;
+卑屬 < hizoku\ ;
+巨鐘 < oogane\ ;
+横領 < ouryou\ ;
+石油 < sekiyu\ ;
+廻状 < kaijou\ ;
+下駄屋 < getaya\ ;
+達磨 < daruma\ ;
+原動 < gendou\ ;
+南宋 < nansou\ ;
+弱気 < yowaki\ ;
+全面 < zenmen\ ;
+御幸 < miyuki\ ;
+徘徊 < haikai\ ;
+郵政 < yuusei\ ;
+半島 < hantou\ ;
+卑小 < hishou\ ;
+白馬 < hakuba\ ;
+相談 < soudan\ ;
+欝積 < usseki\ ;
+征戦 < seisen\ ;
+割目 < wareme\ ;
+全霊 < zenrei\ ;
+連繋 < renkei\ ;
+当板 < ateita\ ;
+参与 < san''yo\ ;
+後悔 < koukai\ ;
+参上 < sanjou\ ;
+沈下 < chinka\ ;
+真薯 < shinjo\ ;
+函蓋 < kangai\ ;
+原初 < gensho\ ;
+前端 < zentan\ ;
+快哉 < kaisai\ ;
+気学 < kigaku\ ;
+水域 < suiiki\ ;
+微少 < bishou\ ;
+全隊 < zentai\ ;
+送致 < souchi\ ;
+連綿 < renmen\ ;
+創痕 < soukon\ ;
+欲目 < yokume\ ;
+得度 < tokudo\ ;
+従弟 < juutei\ ;
+部族 < buzoku\ ;
+蕃人 < banjin\ ;
+菜種 < natane\ ;
+直訴 < jikiso\ ;
+原典 < genten\ ;
+鱗茎 < rinkei\ ;
+入院 < nyuuin\ ;
+短毛 < tanmou\ ;
+荒誕 < koutan\ ;
+初老 < shorou\ ;
+酷吏 < kokuri\ ;
+連累 < renrui\ ;
+蕃主 < banshu\ ;
+師訓 < shikun\ ;
+権限 < kengen\ ;
+勘検 < kanken\ ;
+遺物 < ibutsu\ ;
+准許 < junkyo\ ;
+酒場 < sakaba\ ;
+全開 < zenkai\ ;
+殉死 < junshi\ ;
+原像 < genzou\ ;
+目許 < memoto\ ;
+水嚢 < suinou\ ;
+当方 < touhou\ ;
+出荷 < shukka\ ;
+真菰 < makomo\ ;
+南天 < nanten\ ;
+目角 < mekado\ ;
+再選 < saisen\ ;
+廃盤 < haiban\ ;
+硫安 < ryuuan\ ;
+機軸 < kijiku\ ;
+勢望 < seibou\ ;
+権門 < kenmon\ ;
+銘々 < meimei\ ;
+勘案 < kan''an\ ;
+後年 < kounen\ ;
+医局 < ikyoku\ ;
+再遊 < saiyuu\ ;
+砲手 < houshu\ ;
+白露 < hakuro\ ;
+花鳥 < kachou\ ;
+追肥 < tsuihi\ ;
+念写 < nensha\ ;
+知歯 < chishi\ ;
+帆走 < hansou\ ;
+往復 < oufuku\ ;
+石榴 < zakuro\ ;
+白雲 < hakuun\ ;
+再送 < saisou\ ;
+光頭 < koutou\ ;
+律師 < risshi\ ;
+愈々 < iyoiyo\ ;
+兵鋒 < heihou\ ;
+出花 < debana\ ;
+歩測 < hosoku\ ;
+先頭 < sentou\ ;
+広縁 < hiroen\ ;
+浪々 < rourou\ ;
+力演 < rikien\ ;
+邪欲 < jayoku\ ;
+駄法螺 < dabora\ ;
+心土 < shindo\ ;
+微妙 < bimyou\ ;
+径庭 < keitei\ ;
+別紙 < besshi\ ;
+応召 < oushou\ ;
+出船 < defune\ ;
+酷刑 < kokkei\ ;
+快刀 < kaitou\ ;
+先鞭 < senben\ ;
+巧遅 < kouchi\ ;
+座礁 < zashou\ ;
+選炭 < sentan\ ;
+弁済 < bensai\ ;
+半天 < hanten\ ;
+志向 < shikou\ ;
+出臍 < debeso\ ;
+彷徨 < houkou\ ;
+半夜 < han''ya\ ;
+制空 < seikuu\ ;
+原人 < genjin\ ;
+再転 < saiten\ ;
+形成 < keisei\ ;
+市販 < shihan\ ;
+硝安 < shouan\ ;
+初経 < shokei\ ;
+半壊 < hankai\ ;
+弔歌 < chouka\ ;
+近著 < kincho\ ;
+落款 < rakkan\ ;
+切羽 < kiriha\ ;
+硝子 < garasu\ ;
+幹線 < kansen\ ;
+都心 < toshin\ ;
+確保 < kakuho\ ;
+歳歳 < saisai\ ;
+充電 < juuden\ ;
+池亭 < chitei\ ;
+内輪 < uchiwa\ ;
+運用 < un''you\ ;
+盛観 < seikan\ ;
+千夜 < sen''ya\ ;
+序章 < joshou\ ;
+制禦 < seigyo\ ;
+分署 < bunsho\ ;
+形態 < keitai\ ;
+硬変 < kouhen\ ;
+先陣 < senjin\ ;
+公金 < koukin\ ;
+鳥渡 < chotto\ ;
+遅番 < osoban\ ;
+力泳 < rikiei\ ;
+正油 < shouyu\ ;
+印匣 < inbako\ ;
+即効 < sokkou\ ;
+荷船 < nibune\ ;
+広範 < kouhan\ ;
+石木 < ishiki\ ;
+碩儒 < sekiju\ ;
+著書 < chosho\ ;
+川辺 < kawabe\ ;
+鳩派 < hatoha\ ;
+母御 < hahago\ ;
+過保護 < kahogo\ ;
+鄭声 < teisei\ ;
+砲弾 < houdan\ ;
+当所 < tousho\ ;
+盛装 < seisou\ ;
+水勢 < suisei\ ;
+都庁 < tochou\ ;
+六部 < rokubu\ ;
+止水 < shisui\ ;
+鮮鋭 < sen''ei\ ;
+酒名 < shumei\ ;
+盛衰 < seisui\ ;
+民団 < mindan\ ;
+芸風 < geifuu\ ;
+弦材 < genzai\ ;
+初等 < shotou\ ;
+公邸 < koutei\ ;
+印刻 < inkoku\ ;
+割烹 < kappou\ ;
+蓮台 < rendai\ ;
+正殿 < seiden\ ;
+再販 < saihan\ ;
+切線 < sessen\ ;
+剣状 < kenjou\ ;
+卵円 < ran''en\ ;
+酷似 < kokuji\ ;
+別種 < besshu\ ;
+睥睨 < heigei\ ;
+葉柄 < youhei\ ;
+著明 < chomei\ ;
+従姉 < juushi\ ;
+殺意 < satsui\ ;
+辞表 < jihyou\ ;
+非営利 < hieiri\ ;
+公選 < kousen\ ;
+従妹 < juumai\ ;
+利福 < rifuku\ ;
+経緯儀 < keiigi\ ;
+占取 < senshu\ ;
+毎年 < mainen\ ;
+残暑 < zansho\ ;
+公道 < koudou\ ;
+正正 < seisei\ ;
+平米 < heibei\ ;
+配合 < haigou\ ;
+水分 < suibun\ ;
+真美 < shinbi\ ;
+幄舎 < akusha\ ;
+魚鱗 < gyorin\ ;
+矢柄 < yagara\ ;
+入部 < nyuubu\ ;
+石斧 < sekifu\ ;
+冗談 < joudan\ ;
+水冷 < suirei\ ;
+矮星 < waisei\ ;
+蒼天 < souten\ ;
+全道 < zendou\ ;
+幼童 < youdou\ ;
+轟轟 < gougou\ ;
+睡眠 < suimin\ ;
+巨資 < kyoshi\ ;
+葉書 < hagaki\ ;
+包帯 < houtai\ ;
+厄介 < yakkai\ ;
+民営 < min''ei\ ;
+勇断 < yuudan\ ;
+動揺 < douyou\ ;
+殿御 < tonogo\ ;
+十回 < jukkai\ ;
+十四 < juuyon\ ;
+巨財 < kyozai\ ;
+協和 < kyouwa\ ;
+幽窓 < yuusou\ ;
+川路 < kawaji\ ;
+勇敢 < yuukan\ ;
+巨象 < kyozou\ ;
+冗言 < jougen\ ;
+欠片 < kakera\ ;
+連盟 < renmei\ ;
+幼稚 < youchi\ ;
+後天 < kouten\ ;
+具足 < gusoku\ ;
+鱗粉 < rinpun\ ;
+化学 < kagaku\ ;
+遵法 < junpou\ ;
+白金 < hakkin\ ;
+適温 < tekion\ ;
+南半 < nanhan\ ;
+逸球 < ikkyuu\ ;
+配剤 < haizai\ ;
+歯根 < shikon\ ;
+卒去 < sokkyo\ ;
+再誕 < saitan\ ;
+選民 < senmin\ ;
+市街 < shigai\ ;
+嵩高 < suukou\ ;
+先鋒 < senpou\ ;
+真綿 < mawata\ ;
+欣然 < kinzen\ ;
+呑兵衛 < nonbee\ ;
+後塵 < koujin\ ;
+全軍 < zengun\ ;
+送稿 < soukou\ ;
+冷蔵 < reizou\ ;
+配分 < haibun\ ;
+復員 < fukuin\ ;
+出納 < suitou\ ;
+処置 < shochi\ ;
+再訪 < saihou\ ;
+草葉 < kusaba\ ;
+年税 < nenzei\ ;
+再訂 < saitei\ ;
+苛酷 < kakoku\ ;
+強打 < kyouda\ ;
+邪教 < jakyou\ ;
+矢文 < yabumi\ ;
+内談 < naidan\ ;
+氏名 < shimei\ ;
+具象 < gushou\ ;
+真紅 < shinku\ ;
+卓効 < takkou\ ;
+艦齢 < kanrei\ ;
+勤怠 < kintai\ ;
+即今 < sokkon\ ;
+連番 < renban\ ;
+徴募 < choubo\ ;
+邦文 < houbun\ ;
+当店 < touten\ ;
+欠点 < ketten\ ;
+弊村 < heison\ ;
+当年 < tounen\ ;
+年祭 < nensai\ ;
+彼女 < kanojo\ ;
+荷縄 < ninawa\ ;
+死文 < shibun\ ;
+荏苒 < jinzen\ ;
+歳晩 < saiban\ ;
+包容 < houyou\ ;
+農芸 < nougei\ ;
+年礼 < nenrei\ ;
+弔旗 < chouki\ ;
+退社 < taisha\ ;
+半半 < hanhan\ ;
+別盃 < beppai\ ;
+過激 < kageki\ ;
+内訓 < naikun\ ;
+皇軍 < kougun\ ;
+水仙 < suisen\ ;
+却下 < kyakka\ ;
+不義理 < fugiri\ ;
+再製 < saisei\ ;
+強慢 < gouman\ ;
+希薄 < kihaku\ ;
+単元 < tangen\ ;
+遠浅 < tooasa\ ;
+轆轤 < rokuro\ ;
+毒婦 < dokufu\ ;
+南光 < nankou\ ;
+配偶 < haiguu\ ;
+内観 < naikan\ ;
+発送 < hassou\ ;
+御告 < otsuge\ ;
+内覧 < nairan\ ;
+遠洋 < en''you\ ;
+弾性 < dansei\ ;
+内見 < naiken\ ;
+形容 < keiyou\ ;
+有意差 < yuuisa\ ;
+強情 < goujou\ ;
+千千 < chidji\ ;
+近縁 < kin''en\ ;
+真箇 < shinko\ ;
+魚類 < gyorui\ ;
+勇戦 < yuusen\ ;
+鶏口 < keikou\ ;
+常置 < jouchi\ ;
+卒先 < sossen\ ;
+遠沈 < enchin\ ;
+正本 < seihon\ ;
+正木 < masaki\ ;
+全貌 < zenbou\ ;
+部将 < bushou\ ;
+先遣 < senken\ ;
+硫化 < ryuuka\ ;
+遡求 < sokyuu\ ;
+眼瞼 < ganken\ ;
+半分 < hanpun\ ;
+分社 < bunsha\ ;
+正書 < seisho\ ;
+入費 < nyuuhi\ ;
+短所 < tansho\ ;
+午刻 < gokoku\ ;
+占住 < senjuu\ ;
+巡覧 < junran\ ;
+気儘 < kimama\ ;
+忌中 < kichuu\ ;
+内装 < naisou\ ;
+役場 < yakuba\ ;
+魔風 < makaze\ ;
+出窓 < demado\ ;
+目脂 < meyani\ ;
+助教 < jokyou\ ;
+酒仙 < shusen\ ;
+鶏卵 < keiran\ ;
+真竹 < madake\ ;
+看経 < kankin\ ;
+建材 < kenzai\ ;
+発車 < hassha\ ;
+民兵 < minpei\ ;
+復刊 < fukkan\ ;
+半円 < han''en\ ;
+勘当 < kandou\ ;
+弊政 < heisei\ ;
+匈奴 < kyoudo\ ;
+酒乱 < shuran\ ;
+盲者 < mousha\ ;
+廃液 < haieki\ ;
+左表 < sahyou\ ;
+遅滞 < chitai\ ;
+刀礼 < tourei\ ;
+弁明 < benmei\ ;
+心事 < shinji\ ;
+勘弁 < kanben\ ;
+欲気 < yokuke\ ;
+短慮 < tanryo\ ;
+千分 < senbun\ ;
+劣敗 < reppai\ ;
+毎夕 < maiyuu\ ;
+砲声 < housei\ ;
+光輪 < kourin\ ;
+卒倒 < sottou\ ;
+単体 < tantai\ ;
+百足 < mukade\ ;
+欧洲 < oushuu\ ;
+勅意 < chokui\ ;
+公論 < kouron\ ;
+十分 < juppun\ ;
+魚雷 < gyorai\ ;
+先輩 < senpai\ ;
+平目 < hirame\ ;
+郷士 < goushi\ ;
+此方 < konata\ ;
+剣法 < kenpou\ ;
+茶茶 < chacha\ ;
+正方 < seihou\ ;
+武教 < bukyou\ ;
+剪毛 < senmou\ ;
+配乗 < haijou\ ;
+矜持 < kyouji\ ;
+農耕 < noukou\ ;
+千円 < sen''en\ ;
+初生 < shosei\ ;
+公認 < kounin\ ;
+巡行 < junkou\ ;
+区劃 < kukaku\ ;
+正文 < seibun\ ;
+歌格 < kakaku\ ;
+幽界 < yuukai\ ;
+正数 < seisuu\ ;
+後味 < atoaji\ ;
+砲塔 < houtou\ ;
+硝化 < shouka\ ;
+兼行 < kenkou\ ;
+彫塑 < chouso\ ;
+十全 < juuzen\ ;
+公許 < koukyo\ ;
+南京 < nankin\ ;
+知慮 < chiryo\ ;
+死所 < shisho\ ;
+幼生 < yousei\ ;
+道民 < doumin\ ;
+半値 < han''ne\ ;
+悶々 < monmon\ ;
+返答 < hentou\ ;
+茶色 < chairo\ ;
+権謀 < kenbou\ ;
+鶏冠 < tosaka\ ;
+百貨 < hyakka\ ;
+廻文 < kaibun\ ;
+勁悍 < keikan\ ;
+元軍 < gengun\ ;
+十億 < juuoku\ ;
+引手 < hikite\ ;
+魔障 < mashou\ ;
+切目 < kireme\ ;
+引戸 < hikido\ ;
+軟風 < nanpuu\ ;
+眼界 < gankai\ ;
+茶臼 < chausu\ ;
+選書 < sensho\ ;
+英訳 < eiyaku\ ;
+転音 < ten''on\ ;
+残影 < zan''ei\ ;
+芳醇 < houjun\ ;
+年産 < nensan\ ;
+年生 < nensei\ ;
+千倍 < senbai\ ;
+廃残 < haizan\ ;
+良馬 < ryouba\ ;
+平生 < heizei\ ;
+遊民 < yuumin\ ;
+葛布 < kuzufu\ ;
+廃止 < haishi\ ;
+輪転 < rinten\ ;
+高緯度 < kouido\ ;
+帆船 < hobune\ ;
+十倍 < juubai\ ;
+剛毛 < goumou\ ;
+毎回 < maikai\ ;
+母国 < bokoku\ ;
+民人 < minjin\ ;
+真砂 < masago\ ;
+助手 < sukete\ ;
+止揚 < shiyou\ ;
+幽玄 < yuugen\ ;
+芸道 < geidou\ ;
+加振 < kashin\ ;
+盛者 < jousha\ ;
+役員 < yakuin\ ;
+微乳 < binyuu\ ;
+県税 < kenzei\ ;
+優遇 < yuuguu\ ;
+石工 < sekkou\ ;
+内蔵 < naizou\ ;
+民主 < minshu\ ;
+初犯 < shohan\ ;
+殿堂 < dendou\ ;
+庶民 < shomin\ ;
+瞬時 < shunji\ ;
+優退 < yuutai\ ;
+凹目 < kubome\ ;
+劣才 < ressai\ ;
+輪距 < rinkyo\ ;
+返礼 < henrei\ ;
+刀痕 < toukon\ ;
+鳴戸 < naruto\ ;
+勘定 < kanjou\ ;
+内蒙 < naimou\ ;
+目糞 < mekuso\ ;
+座浴 < zayoku\ ;
+標語 < hyougo\ ;
+白話 < hakuwa\ ;
+判然 < hanzen\ ;
+砂子 < sunago\ ;
+悠々 < yuuyuu\ ;
+労役 < roueki\ ;
+茗荷 < myouga\ ;
+目籠 < mekago\ ;
+着物 < kimono\ ;
+車風 < shafuu\ ;
+標記 < hyouki\ ;
+鬚髯 < shuzen\ ;
+前段 < zendan\ ;
+遮断 < shadan\ ;
+適時 < tekiji\ ;
+草紙 < soushi\ ;
+落後 < rakugo\ ;
+盲管 < moukan\ ;
+十三 < juusan\ ;
+十万 < juuman\ ;
+毒味 < dokumi\ ;
+葉巻 < hamaki\ ;
+張子 < hariko\ ;
+石屋 < ishiya\ ;
+御主 < onushi\ ;
+都合 < tsugou\ ;
+御中 < onchuu\ ;
+花輪 < hanawa\ ;
+弁慶 < benkei\ ;
+不貞寝 < futene\ ;
+免許 < menkyo\ ;
+干犯 < kanpan\ ;
+剪枝 < senshi\ ;
+花軸 < kajiku\ ;
+幽然 < yuuzen\ ;
+凹田 < kubota\ ;
+苦衷 < kuchuu\ ;
+発見 < hakken\ ;
+兎角 < tokaku\ ;
+当地 < touchi\ ;
+干物 < himono\ ;
+平版 < heihan\ ;
+苦行 < kugyou\ ;
+鯨脂 < geishi\ ;
+再興 < saikou\ ;
+落度 < ochido\ ;
+砲台 < houdai\ ;
+再臨 < sairin\ ;
+真田 < sanada\ ;
+助役 < joyaku\ ;
+毎号 < maigou\ ;
+劣性 < ressei\ ;
+目笊 < mezaru\ ;
+歯形 < hagata\ ;
+弾奏 < dansou\ ;
+包含 < hougan\ ;
+廃校 < haikou\ ;
+後便 < koubin\ ;
+匍匐 < hofuku\ ;
+郊外 < kougai\ ;
+強姦 < goukan\ ;
+白衣 < byakue\ ;
+巨艦 < kyokan\ ;
+進歩 < shinpo\ ;
+凡眼 < bongan\ ;
+僧門 < soumon\ ;
+返盃 < henpai\ ;
+工芸 < kougei\ ;
+軍隊 < guntai\ ;
+落差 < rakusa\ ;
+巨船 < kyosen\ ;
+鱗状 < rinjou\ ;
+軍陣 < gunjin\ ;
+輪講 < rinkou\ ;
+残存 < zanzon\ ;
+平然 < heizen\ ;
+切片 < seppen\ ;
+北光 < hokkou\ ;
+武徳 < butoku\ ;
+眉目 < bimoku\ ;
+眼点 < ganten\ ;
+動天 < douten\ ;
+功徳 < kudoku\ ;
+後件 < kouken\ ;
+艦隊 < kantai\ ;
+歯医者 < haisha\ ;
+苗裔 < byouei\ ;
+加役 < kayaku\ ;
+後代 < koudai\ ;
+鱗片 < rinpen\ ;
+弊店 < heiten\ ;
+真理 < shinri\ ;
+儕輩 < saihai\ ;
+皮膜 < himaku\ ;
+似顔絵 < nigaoe\ ;
+役儀 < yakugi\ ;
+真珠 < shinju\ ;
+剪断 < sendan\ ;
+公葬 < kousou\ ;
+砂場 < sunaba\ ;
+弁当 < bentou\ ;
+逓減 < teigen\ ;
+往信 < oushin\ ;
+軍門 < gunmon\ ;
+座標 < zahyou\ ;
+魚道 < gyodou\ ;
+艇首 < teishu\ ;
+邪宗 < jashuu\ ;
+正弦 < seigen\ ;
+勇姿 < yuushi\ ;
+分煙 < bun''en\ ;
+欠本 < keppon\ ;
+毎分 < maifun\ ;
+制止 < seishi\ ;
+郵券 < yuuken\ ;
+荒磯 < araiso\ ;
+軽輩 < keihai\ ;
+華族 < kazoku\ ;
+構造 < kouzou\ ;
+著大 < chodai\ ;
+出物 < demono\ ;
+茅舎 < bousha\ ;
+座業 < zagyou\ ;
+勝因 < shouin\ ;
+皮肉 < hiniku\ ;
+前栽 < senzai\ ;
+砲兵 < houhei\ ;
+内聞 < naibun\ ;
+分点 < bunten\ ;
+死守 < shishu\ ;
+底止 < teishi\ ;
+兵船 < heisen\ ;
+別法 < beppou\ ;
+凸版 < toppan\ ;
+通気 < tsuuki\ ;
+加州 < kashuu\ ;
+正常 < seijou\ ;
+廻廊 < kairou\ ;
+速歩 < sokuho\ ;
+干潟 < higata\ ;
+軽躁 < keisou\ ;
+遥拝 < youhai\ ;
+芸談 < geidan\ ;
+巧者 < kousha\ ;
+優諚 < yuujou\ ;
+鳩座 < hatoza\ ;
+短大 < tandai\ ;
+左翼 < sayoku\ ;
+茶筅 < chasen\ ;
+前板 < maeita\ ;
+僻遠 < hekien\ ;
+高麗 < kourai\ ;
+身頃 < migoro\ ;
+前条 < zenjou\ ;
+入荷 < nyuuka\ ;
+割拠 < kakkyo\ ;
+強固 < kyouko\ ;
+平準 < heijun\ ;
+弟妹 < teimai\ ;
+痛飲 < tsuuin\ ;
+劾奏 < gaisou\ ;
+干満 < kanman\ ;
+前書 < zensho\ ;
+延年 < en''nen\ ;
+病魔 < byouma\ ;
+利欲 < riyoku\ ;
+郭公 < kakkou\ ;
+庭木 < niwaki\ ;
+楽音 < gakuon\ ;
+残塁 < zanrui\ ;
+入苑 < nyuuen\ ;
+若葉 < wakaba\ ;
+准看 < junkan\ ;
+常用 < jouyou\ ;
+勲功 < kunkou\ ;
+弊害 < heigai\ ;
+此岸 < shigan\ ;
+平淡 < heitan\ ;
+火事場 < kajiba\ ;
+全般 < zenpan\ ;
+前景 < zenkei\ ;
+遠戚 < enseki\ ;
+殺到 < sattou\ ;
+目盛 < memori\ ;
+若菜 < wakana\ ;
+帆立 < hotate\ ;
+郡制 < gunsei\ ;
+郵便 < yuubin\ ;
+転送 < tensou\ ;
+目白 < mejiro\ ;
+盪盪 < toutou\ ;
+初段 < shodan\ ;
+船頭 < sendou\ ;
+当分 < toubun\ ;
+週期 < shuuki\ ;
+郎君 < roukun\ ;
+近状 < kinjou\ ;
+巨編 < kyohen\ ;
+花見 < hanami\ ;
+内線 < naisen\ ;
+欠損 < kesson\ ;
+内緒 < naisho\ ;
+刑法 < keihou\ ;
+鳴子 < naruko\ ;
+前文 < zenbun\ ;
+武学 < bugaku\ ;
+出潮 < deshio\ ;
+席画 < sekiga\ ;
+逆毛 < sakage\ ;
+適応 < tekiou\ ;
+魚貝 < gyobai\ ;
+若芽 < wakame\ ;
+転載 < tensai\ ;
+冷眼 < reigan\ ;
+勤勉 < kinben\ ;
+櫛比 < shippi\ ;
+送水 < sousui\ ;
+勤労 < kinrou\ ;
+市税 < shizei\ ;
+母乳 < bonyuu\ ;
+転転 < tenten\ ;
+達成 < tassei\ ;
+内紛 < naifun\ ;
+勿体 < mottai\ ;
+勘合 < kangou\ ;
+茶碗 < chawan\ ;
+軍配 < gunbai\ ;
+平水 < heisui\ ;
+鳥屋 < toriya\ ;
+平民 < heimin\ ;
+平氏 < heishi\ ;
+連枝 < renshi\ ;
+母上 < hahaue\ ;
+動向 < doukou\ ;
+疾駆 < shikku\ ;
+函渠 < kankyo\ ;
+農産 < nousan\ ;
+刑死 < keishi\ ;
+楼門 < roumon\ ;
+公署 < kousho\ ;
+年歯 < nenshi\ ;
+造林 < zourin\ ;
+船隊 < sentai\ ;
+遠心 < enshin\ ;
+苛苛 < iraira\ ;
+弱味 < yowami\ ;
+適度 < tekido\ ;
+削摩 < sakuma\ ;
+輪蔵 < rinzou\ ;
+弾劾 < dangai\ ;
+達意 < tatsui\ ;
+底本 < teihon\ ;
+到来 < tourai\ ;
+発艦 < hakkan\ ;
+刎死 < funshi\ ;
+軍道 < gundou\ ;
+創建 < souken\ ;
+前提 < zentei\ ;
+冬着 < fuyugi\ ;
+造本 < zouhon\ ;
+看点 < kanten\ ;
+欣懐 < kinkai\ ;
+薄々 < usuusu\ ;
+冬眠 < toumin\ ;
+豪雨禍 < gouuka\ ;
+勝利 < shouri\ ;
+登臨 < tourin\ ;
+車道 < shadou\ ;
+強化 < kyouka\ ;
+辛目 < karame\ ;
+動勢 < dousei\ ;
+痴鈍 < chidon\ ;
+残品 < zanpin\ ;
+庸才 < yousai\ ;
+動労 < dourou\ ;
+軒輊 < kenchi\ ;
+光芒 < koubou\ ;
+帯状 < obijou\ ;
+苦肉 < kuniku\ ;
+連星 < rensei\ ;
+目玉 < medama\ ;
+茶盆 < chabon\ ;
+郎党 < roudou\ ;
+布石 < fuseki\ ;
+臥龍 < garyou\ ;
+弁天 < benten\ ;
+切歯 < sesshi\ ;
+短命 < tanmei\ ;
+巣箱 < subako\ ;
+殿上 < tenjou\ ;
+舷門 < genmon\ ;
+選定 < sentei\ ;
+勇名 < yuumei\ ;
+正大 < seidai\ ;
+髑髏 < dokuro\ ;
+利札 < rifuda\ ;
+遷宮 < senguu\ ;
+転貸 < tentai\ ;
+弁士 < benshi\ ;
+亜麻製 < amasei\ ;
+道念 < dounen\ ;
+瞳子 < doushi\ ;
+当代 < toudai\ ;
+床机 < shougi\ ;
+先般 < senpan\ ;
+当人 < tounin\ ;
+遵守 < junshu\ ;
+車輪 < sharin\ ;
+初校 < shokou\ ;
+軍車 < gunsha\ ;
+連敗 < renpai\ ;
+底数 < teisuu\ ;
+出水 < demizu\ ;
+身銭 < mizeni\ ;
+艦載 < kansai\ ;
+広東 < kanton\ ;
+布目 < nunome\ ;
+典範 < tenpan\ ;
+病院 < byouin\ ;
+知命 < chimei\ ;
+盗用 < touyou\ ;
+剛性 < gousei\ ;
+当世 < tousei\ ;
+勉励 < benrei\ ;
+出殻 < degara\ ;
+兎肉 < toniku\ ;
+眠気 < nemuke\ ;
+茶番 < chaban\ ;
+真水 < mamizu\ ;
+左程 < sahodo\ ;
+高風 < koufuu\ ;
+幽林 < yuurin\ ;
+返済 < hensai\ ;
+冬瓜 < tougan\ ;
+殊勲 < shukun\ ;
+光背 < kouhai\ ;
+軌跡 < kiseki\ ;
+弱冠 < jakkan\ ;
+知友 < chiyuu\ ;
+加圧 < kaatsu\ ;
+茶瓶 < chabin\ ;
+利敵 < riteki\ ;
+判明 < hanmei\ ;
+適宜 < tekigi\ ;
+殊功 < shukou\ ;
+弥勒 < miroku\ ;
+冥界 < meikai\ ;
+芭蕉 < bashou\ ;
+運弓 < unkyuu\ ;
+剣帯 < kentai\ ;
+高音 < takane\ ;
+良貨 < ryouka\ ;
+短剣 < tanken\ ;
+先聖 < sensei\ ;
+全米 < zenbei\ ;
+盲点 < mouten\ ;
+判断 < handan\ ;
+歓声 < kansei\ ;
+欽定 < kintei\ ;
+透明 < toumei\ ;
+重々 < juujuu\ ;
+軟論 < nanron\ ;
+邸内 < teinai\ ;
+免罪 < menzai\ ;
+廃帝 < haitei\ ;
+短刀 < tantou\ ;
+公算 < kousan\ ;
+舌頭 < zettou\ ;
+選外 < sengai\ ;
+死去 < shikyo\ ;
+軍資 < gunshi\ ;
+引合 < hikiai\ ;
+幽景 < yuukei\ ;
+遊底 < yuutei\ ;
+矩則 < kusoku\ ;
+巡礼 < junrei\ ;
+年来 < nenrai\ ;
+初旬 < shojun\ ;
+平板 < heiban\ ;
+儀表 < gihyou\ ;
+兵種 < heishu\ ;
+巨砲 < kyohou\ ;
+皆納 < kainou\ ;
+残党 < zantou\ ;
+次席 < jiseki\ ;
+歌声 < utagoe\ ;
+模索 < mosaku\ ;
+残光 < zankou\ ;
+元老 < genrou\ ;
+芳草 < housou\ ;
+真横 < mayoko\ ;
+八端 < hattan\ ;
+分校 < bunkou\ ;
+連投 < rentou\ ;
+盗犯 < touhan\ ;
+弾丸 < dangan\ ;
+歌境 < kakyou\ ;
+写生 < shasei\ ;
+残像 < zanzou\ ;
+歩哨 < hoshou\ ;
+県民 < kenmin\ ;
+剣山 < kenzan\ ;
+労功 < roukou\ ;
+連戦 < rensen\ ;
+冷然 < reizen\ ;
+動乱 < douran\ ;
+制憲 < seiken\ ;
+弓勢 < yunzei\ ;
+内省 < naisei\ ;
+平明 < heimei\ ;
+死刑 < shikei\ ;
+眉毛 < mayuge\ ;
+造成 < zousei\ ;
+廃屋 < haioku\ ;
+切替 < settai\ ;
+逃散 < tousan\ ;
+身軽 < migaru\ ;
+矢先 < yasaki\ ;
+軍談 < gundan\ ;
+年数 < nensuu\ ;
+山羊座 < yagiza\ ;
+正味 < shoumi\ ;
+退散 < taisan\ ;
+芸能 < geinou\ ;
+連想 < rensou\ ;
+残余 < zan''yo\ ;
+遣外 < kengai\ ;
+弁口 < benkou\ ;
+皓礬 < kouban\ ;
+正号 < seigou\ ;
+苦笑 < kushou\ ;
+分明 < bunmei\ ;
+弓具 < kyuugu\ ;
+癌腫 < ganshu\ ;
+矮人 < waijin\ ;
+荒海 < araumi\ ;
+鳴動 < meidou\ ;
+内界 < naikai\ ;
+座席 < zaseki\ ;
+正南 < seinan\ ;
+芸者 < geisha\ ;
+正午 < shougo\ ;
+内用 < naiyou\ ;
+別懇 < bekkon\ ;
+分数 < bunsuu\ ;
+分散 < bunsan\ ;
+優者 < yuusha\ ;
+卒塔婆 < sotoba\ ;
+歯冠 < shikan\ ;
+再現 < saigen\ ;
+康寧 < kounei\ ;
+功労 < kourou\ ;
+欄干 < rankan\ ;
+列挙 < rekkyo\ ;
+前山 < zenzan\ ;
+弥久 < bikyuu\ ;
+発端 < hottan\ ;
+初戦 < shosen\ ;
+軍装 < gunsou\ ;
+別意 < betsui\ ;
+出時 < dedoki\ ;
+連弾 < rendan\ ;
+亜麻色 < amairo\ ;
+知人 < chijin\ ;
+茫然 < bouzen\ ;
+輔翼 < hoyoku\ ;
+農法 < nouhou\ ;
+利息 < risoku\ ;
+府庁 < fuchou\ ;
+庶子 < shoshi\ ;
+華奢 < kyasha\ ;
+至難 < shinan\ ;
+労使 < roushi\ ;
+廉売 < renbai\ ;
+死体 < shitai\ ;
+逢引 < aibiki\ ;
+停頓 < teiton\ ;
+遺告 < yuigou\ ;
+函数 < kansuu\ ;
+冷淡 < reitan\ ;
+真昼 < mahiru\ ;
+出方 < dekata\ ;
+剣士 < kenshi\ ;
+公益 < koueki\ ;
+船路 < funaji\ ;
+疎隔 < sokaku\ ;
+加入 < kanyuu\ ;
+農民 < noumin\ ;
+遠国 < ongoku\ ;
+具申 < gushin\ ;
+荷札 < nifuda\ ;
+席次 < sekiji\ ;
+利得 < ritoku\ ;
+全盲 < zenmou\ ;
+死亡 < shibou\ ;
+巨獣 < kyojuu\ ;
+正兵 < seihei\ ;
+全盛 < zensei\ ;
+蹈鞴 < tatara\ ;
+連帯 < rentai\ ;
+速度 < sokudo\ ;
+到底 < toutei\ ;
+免税 < menzei\ ;
+舌鋒 < zeppou\ ;
+造幣 < zouhei\ ;
+標示 < hyouji\ ;
+平手 < hirate\ ;
+停電 < teiden\ ;
+健闘 < kentou\ ;
+舟運 < shuuun\ ;
+横目 < yokome\ ;
+凱旋 < gaisen\ ;
+目次 < mokuji\ ;
+冷泉 < reisen\ ;
+全癒 < zen''yu\ ;
+白磁 < hakuji\ ;
+返本 < henpon\ ;
+別形 < bekkei\ ;
+幻想 < gensou\ ;
+看板 < kanban\ ;
+再燃 < sainen\ ;
+着意 < chakui\ ;
+内状 < naijou\ ;
+別当 < bettou\ ;
+近東 < kintou\ ;
+建具 < tategu\ ;
+近来 < kinrai\ ;
+返書 < hensho\ ;
+序幕 < jomaku\ ;
+側鎖 < sokusa\ ;
+概論 < gairon\ ;
+病躯 < byouku\ ;
+楽譜 < gakufu\ ;
+冷汗 < reikan\ ;
+分担 < buntan\ ;
+辣油 < razeyu\ ;
+劇化 < gekika\ ;
+冷水 < reisui\ ;
+還元 < kangen\ ;
+利幅 < rihaba\ ;
+凡書 < bonsho\ ;
+連峰 < renpou\ ;
+劇務 < gekimu\ ;
+切手 < kirete\ ;
+幻怪 < genkai\ ;
+追慕 < tsuibo\ ;
+発砲 < happou\ ;
+身許 < mimoto\ ;
+適否 < tekihi\ ;
+出掛 < degake\ ;
+円熟 < enjuku\ ;
+近景 < kinkei\ ;
+連山 < renzan\ ;
+高邁 < koumai\ ;
+前奏 < zensou\ ;
+店屋 < miseya\ ;
+処方 < shohou\ ;
+青海苔 < aonori\ ;
+遍在 < henzai\ ;
+別巻 < bekkan\ ;
+冗漫 < jouman\ ;
+概観 < gaikan\ ;
+前夜 < zen''ya\ ;
+建値 < tatene\ ;
+幻影 < gen''ei\ ;
+連射 < rensha\ ;
+前売 < maeuri\ ;
+概要 < gaiyou\ ;
+傍輩 < houbai\ ;
+白眉 < hakubi\ ;
+峡部 < kyoubu\ ;
+制定 < seitei\ ;
+軽罪 < keizai\ ;
+番頭 < bantou\ ;
+初年 < shonen\ ;
+辛気 < shinki\ ;
+割合 < wariai\ ;
+楼観 < roukan\ ;
+苦痛 < kutsuu\ ;
+幾年 < ikunen\ ;
+冬毛 < fuyuge\ ;
+先知 < senchi\ ;
+店子 < tanako\ ;
+魚群 < gyogun\ ;
+退役 < taieki\ ;
+幼年 < younen\ ;
+迂曲 < ukyoku\ ;
+割印 < wariin\ ;
+利尿 < rinyou\ ;
+似非親 < eseoya\ ;
+床屋 < tokoya\ ;
+退廷 < taitei\ ;
+権現 < gongen\ ;
+側部 < sokubu\ ;
+帰服 < kifuku\ ;
+眼底 < gantei\ ;
+退廃 < taihai\ ;
+別居 < bekkyo\ ;
+留飲 < ryuuin\ ;
+刪定 < santei\ ;
+欄外 < rangai\ ;
+冠水 < kansui\ ;
+別封 < beppuu\ ;
+眼帯 < gantai\ ;
+平年 < heinen\ ;
+平平 < heihei\ ;
+臆面 < okumen\ ;
+廃品 < haihin\ ;
+迷彩 < meisai\ ;
+市民 < shimin\ ;
+庄屋 < shouya\ ;
+色色 < iroiro\ ;
+冠毛 < kanmou\ ;
+常数 < jousuu\ ;
+農林 < nourin\ ;
+平常 < heijou\ ;
+苔癬 < taisen\ ;
+癲癇 < tenkan\ ;
+亜麻糸 < amaito\ ;
+判定 < hantei\ ;
+判官 < hangan\ ;
+川瀬 < kawase\ ;
+廷丁 < teitei\ ;
+発生 < hassei\ ;
+農村 < nouson\ ;
+側近 < sokkin\ ;
+盤根 < bankon\ ;
+魂胆 < kontan\ ;
+六十路 < musoji\ ;
+轟然 < gouzen\ ;
+別嬪 < beppin\ ;
+欠品 < keppin\ ;
+魚網 < gyomou\ ;
+内湯 < uchiyu\ ;
+亜温帯 < aontai\ ;
+生麩 < namafu\ ;
+幽居 < yuukyo\ ;
+連夜 < ren''ya\ ;
+巡演 < jun''en\ ;
+歌会 < utakai\ ;
+公然 < kouzen\ ;
+巻毛 < makige\ ;
+軍艦 < gunkan\ ;
+連声 < renjou\ ;
+余所見 < yosomi\ ;
+自重 < jichou\ ;
+内済 < naisai\ ;
+先番 < senban\ ;
+遊吟 < yuugin\ ;
+遊君 < yuukun\ ;
+軍船 < gunsen\ ;
+草本 < souhon\ ;
+盲断 < moudan\ ;
+着尺 < kijaku\ ;
+艨艟 < moudou\ ;
+偽足 < gisoku\ ;
+草書 < sousho\ ;
+全然 < zenzen\ ;
+列寧 < reenin\ ;
+魚精 < gyosei\ ;
+艦艇 < kantei\ ;
+目方 < mekata\ ;
+凡才 < bonsai\ ;
+凡手 < bonshu\ ;
+充用 < juuyou\ ;
+魚粉 < gyofun\ ;
+凡戦 < bonsen\ ;
+庸君 < youkun\ ;
+値頃 < negoro\ ;
+凶徒 < kyouto\ ;
+疎通 < sotsuu\ ;
+至近 < shikin\ ;
+幢幡 < douban\ ;
+平屋 < hiraya\ ;
+遅参 < chisan\ ;
+逆子 < sakago\ ;
+委員会 < iinkai\ ;
+白狐 < byakko\ ;
+値鞘 < nezaya\ ;
+出庫 < shukko\ ;
+追尾 < tsuibi\ ;
+出府 < shuppu\ ;
+初婚 < shokon\ ;
+出店 < demise\ ;
+内治 < naichi\ ;
+農政 < nousei\ ;
+剛勇 < gouyuu\ ;
+欠勤 < kekkin\ ;
+共演 < kyouen\ ;
+自適 < jiteki\ ;
+凡慮 < bonryo\ ;
+退官 < taikan\ ;
+眼孔 < gankou\ ;
+界面 < kaimen\ ;
+遯世 < tonsei\ ;
+平定 < heitei\ ;
+華冑 < kachuu\ ;
+輪番 < rinban\ ;
+依存度 < izondo\ ;
+出師 < suishi\ ;
+前名 < zenmei\ ;
+道元 < dougen\ ;
+前号 < zengou\ ;
+判士 < hanshi\ ;
+輪生 < rinsei\ ;
+内気 < uchiki\ ;
+傍訓 < boukun\ ;
+眸子 < boushi\ ;
+遅効 < chikou\ ;
+廃兵 < haihei\ ;
+免状 < menjou\ ;
+帆桁 < hogeta\ ;
+機業 < kigyou\ ;
+逓増 < teizou\ ;
+幕府 < bakufu\ ;
+席捲 < sekken\ ;
+荷役 < niyaku\ ;
+内殿 < naiden\ ;
+傍観 < boukan\ ;
+界隈 < kaiwai\ ;
+分封 < bunpou\ ;
+公準 < koujun\ ;
+傍視 < wakimi\ ;
+白煙 < hakuen\ ;
+苔状 < taijou\ ;
+魔笛 < mateki\ ;
+創世 < sousei\ ;
+跳馬 < chouba\ ;
+常態 < joutai\ ;
+広場 < hiroba\ ;
+山顛 < santen\ ;
+停車 < teisha\ ;
+高覧 < kouran\ ;
+甘鯛 < amadai\ ;
+広域 < kouiki\ ;
+横溢 < ouitsu\ ;
+冬日 < fuyubi\ ;
+高見 < takami\ ;
+僧綱 < sougou\ ;
+前前 < maemae\ ;
+座卓 < zataku\ ;
+冠木 < kabuki\ ;
+良縁 < ryouen\ ;
+剛健 < gouken\ ;
+偽証 < gishou\ ;
+市有 < shiyuu\ ;
+庭前 < teizen\ ;
+阿僧祇 < asougi\ ;
+検車 < kensha\ ;
+店員 < ten''in\ ;
+進化 < shinka\ ;
+樹氷 < juhyou\ ;
+庄園 < shouen\ ;
+自足 < jisoku\ ;
+骨身 < honemi\ ;
+六法 < roppou\ ;
+出家 < shukke\ ;
+高裁 < kousai\ ;
+画集 < gashuu\ ;
+分娩 < bunben\ ;
+色糸 < iroito\ ;
+画障 < gashou\ ;
+山霊 < sanrei\ ;
+写本 < shahon\ ;
+入海 < iriumi\ ;
+蹂躪 < juurin\ ;
+幕屋 < makuya\ ;
+刻印 < kokuin\ ;
+凡常 < bonjou\ ;
+迷妄 < meimou\ ;
+痛苦 < tsuuku\ ;
+盆景 < bonkei\ ;
+船荷 < funani\ ;
+連吟 < rengin\ ;
+初回 < shokai\ ;
+廃人 < haijin\ ;
+剛体 < goutai\ ;
+車線 < shasen\ ;
+連合 < rengou\ ;
+盲想 < mousou\ ;
+年報 < nenpou\ ;
+相性 < aishou\ ;
+若湯 < wakayu\ ;
+公民 < koumin\ ;
+市日 < ichibi\ ;
+様相 < yousou\ ;
+鱈子 < tarako\ ;
+分外 < bungai\ ;
+監房 < kanbou\ ;
+布教 < fukyou\ ;
+造反 < zouhan\ ;
+分売 < bunbai\ ;
+凄惨 < seisan\ ;
+盛挙 < seikyo\ ;
+軽目 < karume\ ;
+帰心 < kishin\ ;
+茘枝 < reishi\ ;
+相役 < aiyaku\ ;
+座元 < zamoto\ ;
+再来 < sairai\ ;
+兼業 < kengou\ ;
+盾座 < tateza\ ;
+冷房 < reibou\ ;
+制動 < seidou\ ;
+相当 < soutou\ ;
+巡検 < junken\ ;
+兵権 < heiken\ ;
+百済 < kudara\ ;
+至論 < shiron\ ;
+船艙 < sensou\ ;
+山間 < yamaai\ ;
+平均 < heikin\ ;
+山門 < sanmon\ ;
+傭船 < yousen\ ;
+円柱 < enchuu\ ;
+生類 < seirui\ ;
+平地 < heichi\ ;
+連動 < rendou\ ;
+前便 < zenbin\ ;
+庸人 < youjin\ ;
+年回 < nenkai\ ;
+退団 < taidan\ ;
+盲従 < moujuu\ ;
+冗文 < joubun\ ;
+全欧 < zen''ou\ ;
+睾丸 < kougan\ ;
+至言 < shigen\ ;
+連判 < renpan\ ;
+軒端 < nokiba\ ;
+師弟 < shitei\ ;
+前件 < zenken\ ;
+八十路 < yasoji\ ;
+屏風 < byoubu\ ;
+相席 < aiseki\ ;
+前代 < zendai\ ;
+生面 < seimen\ ;
+苦汁 < nigari\ ;
+伊勢蝦 < iseebi\ ;
+前人 < zenjin\ ;
+切地 < kireji\ ;
+凶夢 < kyoumu\ ;
+分地 < bunchi\ ;
+艶福 < enpuku\ ;
+若気 < wakage\ ;
+産院 < san''in\ ;
+分団 < bundan\ ;
+自註 < jichuu\ ;
+初号 < shogou\ ;
+逸事 < itsuji\ ;
+僻目 < higame\ ;
+刀圭 < toukei\ ;
+冊数 < sassuu\ ;
+画鋲 < gabyou\ ;
+出城 < dejiro\ ;
+幼名 < youmei\ ;
+小鼻 < kobana\ ;
+内旨 < naishi\ ;
+痛罵 < tsuuba\ ;
+自覚 < jikaku\ ;
+内方 < naihou\ ;
+偽薬 < giyaku\ ;
+病臥 < byouga\ ;
+共栄 < kyouei\ ;
+値遇 < chiguu\ ;
+并呑 < heidon\ ;
+幾千 < ikusen\ ;
+高著 < koucho\ ;
+小麦 < komugi\ ;
+分営 < bun''ei\ ;
+棒鋼 < boukou\ ;
+送呈 < soutei\ ;
+座中 < zachuu\ ;
+并合 < heigou\ ;
+修院 < shuuin\ ;
+底値 < sokone\ ;
+帰属 < kizoku\ ;
+工数 < kousuu\ ;
+兵曹 < heisou\ ;
+兵書 < heisho\ ;
+曾祖父 < hijiji\ ;
+刑名 < keimei\ ;
+軍礼 < gunrei\ ;
+樹木 < jumoku\ ;
+高菜 < takana\ ;
+相対 < soutai\ ;
+年号 < nengou\ ;
+見栄坊 < miebou\ ;
+花火 < hanabi\ ;
+展開 < tenkai\ ;
+相宿 < aiyado\ ;
+退去 < taikyo\ ;
+帯封 < obifuu\ ;
+亜鉛版 < aenban\ ;
+凍寒 < toukan\ ;
+平原 < heigen\ ;
+凍害 < tougai\ ;
+山野 < san''ya\ ;
+透写 < tousha\ ;
+制令 < seirei\ ;
+六本 < roppon\ ;
+苦楽 < kuraku\ ;
+帰宅 < kitaku\ ;
+疽腫 < soshou\ ;
+横根 < yokone\ ;
+幾分 < ikubun\ ;
+異説 < isetsu\ ;
+魔球 < makyuu\ ;
+凶器 < kyouki\ ;
+保革 < hokaku\ ;
+再挙 < saikyo\ ;
+俊馬 < shunme\ ;
+八本 < happon\ ;
+公有 < kouyuu\ ;
+偏見 < henken\ ;
+府中 < fuchuu\ ;
+目尻 < mejiri\ ;
+其方 < sonata\ ;
+盛年 < seinen\ ;
+小鴨 < kogamo\ ;
+退勢 < taisei\ ;
+返報 < henpou\ ;
+内探 < naitan\ ;
+権柄 < kenpei\ ;
+小鳥 < kotori\ ;
+年功 < nenkou\ ;
+田野 < den''ya\ ;
+兵数 < heisuu\ ;
+盪尽 < toujin\ ;
+眼前 < ganzen\ ;
+艦砲 < kanpou\ ;
+店主 < tenshu\ ;
+転生 < tensei\ ;
+足駄 < ashida\ ;
+八景 < hakkei\ ;
+登楼 < tourou\ ;
+目安 < meyasu\ ;
+概算 < gaisan\ ;
+分厘 < bunrin\ ;
+御猪口 < ochoko\ ;
+追加 < tsuika\ ;
+横木 < yokogi\ ;
+優渥 < yuuaku\ ;
+帆影 < hokage\ ;
+年初 < nensho\ ;
+腰間 < youkan\ ;
+草屋 < souoku\ ;
+公明 < koumei\ ;
+年刊 < nenkan\ ;
+年分 < nenbun\ ;
+幕営 < bakuei\ ;
+小鰭 < kohada\ ;
+平分 < heibun\ ;
+平凡 < heibon\ ;
+瘋癲 < fuuten\ ;
+追分 < oiwake\ ;
+鰥夫 < yamome\ ;
+用金 < youkin\ ;
+鮎並女 < ainame\ ;
+魔物 < mamono\ ;
+公文 < koubun\ ;
+茶巾 < chakin\ ;
+刑典 < keiten\ ;
+近在 < kinzai\ ;
+別件 < bekken\ ;
+山辺 < yamabe\ ;
+略記 < ryakki\ ;
+巧手 < koushu\ ;
+真味 < shinmi\ ;
+身空 < misora\ ;
+芋版 < imoban\ ;
+巡拝 < junpai\ ;
+産金 < sankin\ ;
+全数 < zensuu\ ;
+全敗 < zenpai\ ;
+真否 < shinpi\ ;
+若木 < wakagi\ ;
+列候 < rekkou\ ;
+追儺 < tsuina\ ;
+冷害 < reigai\ ;
+床上 < yukaue\ ;
+偽膜 < gimaku\ ;
+帆布 < honuno\ ;
+凝固 < gyouko\ ;
+途中 < tochuu\ ;
+内憂 < naiyuu\ ;
+俗間 < zokkan\ ;
+促音 < sokuon\ ;
+小骨 < kobone\ ;
+典拠 < tenkyo\ ;
+登板 < touban\ ;
+初代 < shodai\ ;
+刀剣 < touken\ ;
+幕吏 < bakuri\ ;
+魚灯 < gyotou\ ;
+膚身 < hadami\ ;
+癖毛 < kusege\ ;
+僭王 < sen''ou\ ;
+再思 < saishi\ ;
+県営 < ken''ei\ ;
+鮮明 < senmei\ ;
+生酒 < kizake\ ;
+分党 < buntou\ ;
+幾人 < ikunin\ ;
+脳髄 < nouzui\ ;
+真北 < makita\ ;
+巨悪 < kyoaku\ ;
+荊妻 < keisai\ ;
+全損 < zenson\ ;
+刃先 < hasaki\ ;
+山路 < yamaji\ ;
+帯域 < taiiki\ ;
+返品 < henpin\ ;
+小首 < kokubi\ ;
+年余 < nen''yo\ ;
+甘酸 < kansan\ ;
+騒霊 < sourei\ ;
+至芸 < shigei\ ;
+退会 < taikai\ ;
+寡黙 < kamoku\ ;
+刃傷 < ninjou\ ;
+再建 < saikon\ ;
+極秘 < gokuhi\ ;
+逃亡 < toubou\ ;
+退任 < tainin\ ;
+年代 < nendai\ ;
+傍線 < bousen\ ;
+省営 < shouei\ ;
+帰国 < kikoku\ ;
+着丈 < kitake\ ;
+農場 < noujou\ ;
+軽減 < keigen\ ;
+骨董 < kottou\ ;
+療治 < ryouji\ ;
+辺地 < henchi\ ;
+駝鳥 < dachou\ ;
+内径 < naikei\ ;
+腹部 < fukubu\ ;
+出先 < desaki\ ;
+元来 < ganrai\ ;
+真冬 < mafuyu\ ;
+輪栽 < rinsai\ ;
+巨弾 < kyodan\ ;
+元本 < genpon\ ;
+凶具 < kyougu\ ;
+自若 < jijaku\ ;
+年中 < nenjuu\ ;
+発散 < hassan\ ;
+師団 < shidan\ ;
+駱駝 < rakuda\ ;
+内廷 < naitei\ ;
+傍系 < boukei\ ;
+分体 < buntai\ ;
+平易化 < heiika\ ;
+迎合 < geigou\ ;
+安保理 < anpori\ ;
+修造 < shuzou\ ;
+草堂 < soudou\ ;
+干与 < kan''yo\ ;
+機屋 < hataya\ ;
+農地 < nouchi\ ;
+曾祖母 < hibaba\ ;
+航空 < koukuu\ ;
+市子 < ichiko\ ;
+尊顔 < songan\ ;
+軍犬 < genken\ ;
+修辞 < shuuji\ ;
+生身 < namami\ ;
+横手 < yokote\ ;
+停船 < teisen\ ;
+県勢 < kensei\ ;
+六感 < rokkan\ ;
+元旦 < gantan\ ;
+画調 < gachou\ ;
+冗官 < joukan\ ;
+処分 < shobun\ ;
+軽水 < keisui\ ;
+自腹 < jibara\ ;
+分与 < bun''yo\ ;
+処処 < shosho\ ;
+芒洋 < bouyou\ ;
+小雪 < koyuki\ ;
+小雨 < kosame\ ;
+導電 < douden\ ;
+兵役 < heieki\ ;
+小雀 < kogara\ ;
+籐椅子 < touisu\ ;
+函人 < kanjin\ ;
+盗塁 < tourui\ ;
+苦手 < nigate\ ;
+対顔 < taigan\ ;
+若手 < wakate\ ;
+冬場 < fuyuba\ ;
+催眠 < saimin\ ;
+優柔 < yuujuu\ ;
+小文字 < komoji\ ;
+芸林 < geirin\ ;
+相反 < souhan\ ;
+巨岩 < kyogan\ ;
+帯同 < taidou\ ;
+常勤 < joukin\ ;
+荘司 < shouji\ ;
+凍原 < tougen\ ;
+楽界 < gakkai\ ;
+荘厳 < sougon\ ;
+出世 < shusse\ ;
+凄味 < sugomi\ ;
+自習 < jishuu\ ;
+凡僧 < bonsou\ ;
+対面 < taimen\ ;
+番茶 < bancha\ ;
+異色 < ishoku\ ;
+円寂 < enjaku\ ;
+州崎 < susaki\ ;
+近傍 < kinbou\ ;
+入御 < nyuugo\ ;
+内宮 < naiguu\ ;
+市塵 < shijin\ ;
+践言 < sengen\ ;
+芳書 < housho\ ;
+用談 < youdan\ ;
+花木 < kaboku\ ;
+余所目 < yosome\ ;
+公平 < kouhei\ ;
+内孫 < naison\ ;
+保身 < hoshin\ ;
+発憤 < happun\ ;
+舌端 < zettan\ ;
+全店 < zenten\ ;
+対陣 < taijin\ ;
+例題 < reidai\ ;
+帯剣 < taiken\ ;
+帝命 < teimei\ ;
+軟泥 < nandei\ ;
+茅屋 < bouoku\ ;
+入庫 < nyuuko\ ;
+用言 < yougen\ ;
+発意 < hatsui\ ;
+入府 < nyuufu\ ;
+芸文 < geibun\ ;
+専門 < senmon\ ;
+帯刀 < taitou\ ;
+苦心 < kushin\ ;
+檀君 < dankun\ ;
+兼官 < kenkan\ ;
+尿路 < nyouro\ ;
+県会 < kenkai\ ;
+盤台 < bandai\ ;
+布地 < nunoji\ ;
+至純 < shijun\ ;
+草原 < sougen\ ;
+自縛 < jibaku\ ;
+梅酒 < umeshu\ ;
+元手 < motode\ ;
+下院議 < kaingi\ ;
+県令 < kenrei\ ;
+寝首 < nekubi\ ;
+生誕 < seitan\ ;
+軟水 < nansui\ ;
+近代 < kindai\ ;
+県人 < kenjin\ ;
+盆地 < bonchi\ ;
+孵化器 < fukaki\ ;
+軍港 < gunkou\ ;
+党弊 < touhei\ ;
+冷厳 < reigen\ ;
+臭素 < shuuso\ ;
+茄子 < nasubi\ ;
+盗品 < touhin\ ;
+舗石 < hoseki\ ;
+自給 < jikyuu\ ;
+返上 < henjou\ ;
+魚梯 < gyotei\ ;
+盛名 < seimei\ ;
+全島 < zentou\ ;
+赭顔 < shagan\ ;
+共寝 < tomone\ ;
+手真似 < temane\ ;
+小銭 < kozeni\ ;
+近世 < kinsei\ ;
+臨終 < rinjuu\ ;
+常例 < jourei\ ;
+全岸 < zengan\ ;
+巨大 < kyodai\ ;
+辛味 < karami\ ;
+内外 < naigai\ ;
+目先 < mesaki\ ;
+常住 < joujuu\ ;
+農兵 < nouhei\ ;
+傍目 < hatame\ ;
+展覧 < tenran\ ;
+常会 < joukai\ ;
+常任 < jounin\ ;
+俯角 < fukaku\ ;
+痴漢 < chikan\ ;
+軍法 < gunpou\ ;
+小金 < kogane\ ;
+冷剛 < reigou\ ;
+常人 < joujin\ ;
+魚板 < gyoban\ ;
+崩潰 < houkai\ ;
+不如意 < funyoi\ ;
+僧正 < soujou\ ;
+允恭 < inkyou\ ;
+軸木 < jikugi\ ;
+相伝 < souden\ ;
+帝冠 < teikan\ ;
+併音 < pin''in\ ;
+高目 < takame\ ;
+円域 < en''iki\ ;
+寒風 < kanpuu\ ;
+駅頭 < ekitou\ ;
+傾瀉 < keisha\ ;
+冷凍 < reitou\ ;
+軍民 < gunmin\ ;
+骨粉 < koppun\ ;
+病理 < byouri\ ;
+常世 < tokoyo\ ;
+膵臓 < suizou\ ;
+其奴 < soitsu\ ;
+充当 < juutou\ ;
+修補 < shuuho\ ;
+布告 < fukoku\ ;
+舎監 < shakan\ ;
+儒教 < jukyou\ ;
+俗議 < zokugi\ ;
+湯文字 < yumoji\ ;
+冷光 < reikou\ ;
+寝際 < negiwa\ ;
+的屋 < tekiya\ ;
+異機種 < ikishu\ ;
+益友 < ekiyuu\ ;
+内在 < naizai\ ;
+兵変 < heihen\ ;
+山葵 < wasabi\ ;
+偵知 < teichi\ ;
+疫癘 < ekirei\ ;
+盲人 < moujin\ ;
+皇宮 < kouguu\ ;
+能面 < noumen\ ;
+盛典 < seiten\ ;
+根雪 < neyuki\ ;
+茅場 < kayaba\ ;
+帰一 < kiitsu\ ;
+皇孫 < kouson\ ;
+侮辱 < bujoku\ ;
+番線 < bansen\ ;
+農会 < noukai\ ;
+俗語 < zokugo\ ;
+目今 < mokkon\ ;
+直下 < chokka\ ;
+山菜 < sansai\ ;
+転校 < tenkou\ ;
+俗話 < zokuwa\ ;
+疥癬 < kaisen\ ;
+苦学 < kugaku\ ;
+元帥 < gensui\ ;
+白寿 < hakuju\ ;
+冥利 < myouri\ ;
+発展 < hatten\ ;
+巡回 < junkai\ ;
+輪廻 < rin''ne\ ;
+典型 < tenkei\ ;
+山荘 < sansou\ ;
+公売 < koubai\ ;
+脱退 < dattai\ ;
+俗解 < zokkai\ ;
+背鰭 < sebire\ ;
+赤門 < akamon\ ;
+屍蝋 < shirou\ ;
+畝織 < uneori\ ;
+俗見 < zokken\ ;
+倉荷 < kurani\ ;
+芳情 < houjou\ ;
+首魁 < shukai\ ;
+生薑 < shouga\ ;
+兵団 < heidan\ ;
+対遇 < taiguu\ ;
+亜砒酸 < ahisan\ ;
+生蕃 < seiban\ ;
+免官 < menkan\ ;
+市内 < shinai\ ;
+軽挙 < keikyo\ ;
+良案 < ryouan\ ;
+容顔 < yougan\ ;
+円味 < marumi\ ;
+盛会 < seikai\ ;
+円周 < enshuu\ ;
+芸当 < geitou\ ;
+甘薯 < kansho\ ;
+内命 < naimei\ ;
+車検 < shaken\ ;
+芳志 < houshi\ ;
+小足 < koashi\ ;
+対辺 < taihen\ ;
+苗字 < myouji\ ;
+背骨 < sebone\ ;
+内含 < naigan\ ;
+馬革 < bakaku\ ;
+盟主 < meishu\ ;
+内合 < naigou\ ;
+巨口 < kyokou\ ;
+再勤 < saikin\ ;
+市債 < shisai\ ;
+岩穴 < iwaana\ ;
+元寇 < genkou\ ;
+余震 < yoshin\ ;
+冕冠 < benkan\ ;
+茶会 < chakai\ ;
+低頭 < teitou\ ;
+円卓 < entaku\ ;
+密閉 < mippei\ ;
+山背 < yamase\ ;
+様態 < youtai\ ;
+茶代 < chadai\ ;
+催涙 < sairui\ ;
+背馳 < haichi\ ;
+脱走 < dassou\ ;
+百夜 < momoyo\ ;
+苦境 < kukyou\ ;
+写像 < shazou\ ;
+実験 < jikken\ ;
+茶人 < chajin\ ;
+英国 < eikoku\ ;
+再刊 < saikan\ ;
+内勤 < naikin\ ;
+肺魚 < haigyo\ ;
+自白 < jihaku\ ;
+軍書 < gunsho\ ;
+傍点 < bouten\ ;
+便覧 < benran\ ;
+登壇 < toudan\ ;
+検眼 < kengan\ ;
+校門 < koumon\ ;
+首題 < shudai\ ;
+先妻 < sensai\ ;
+骨相 < kossou\ ;
+阿修羅 < ashura\ ;
+甘草 < kanzou\ ;
+甘茶 < amacha\ ;
+登場 < toujou\ ;
+寝酒 < nezake\ ;
+御雑煮 < ozouni\ ;
+兄妹 < keimai\ ;
+入営 < nyuuei\ ;
+兼勤 < kenkin\ ;
+軒数 < kensuu\ ;
+先天 < senten\ ;
+円内 < en''nai\ ;
+内内 < nainai\ ;
+軍旅 < gunryo\ ;
+内典 < naiten\ ;
+軽快 < keikai\ ;
+全員 < zen''in\ ;
+臨界 < rinkai\ ;
+高瀬 < takase\ ;
+全品 < zenpin\ ;
+検痰 < kentan\ ;
+入唐 < nittou\ ;
+小話 < shouwa\ ;
+背革 < segawa\ ;
+巨億 < kyooku\ ;
+背面 < haimen\ ;
+債権 < saiken\ ;
+輪姦 < rinkan\ ;
+疑獄 < gigoku\ ;
+皮膚科 < hifuka\ ;
+小言 < kogoto\ ;
+検番 < kenban\ ;
+充填 < juuten\ ;
+層群 < sougun\ ;
+花屋 < hanaya\ ;
+軟投 < nantou\ ;
+転戦 < tensen\ ;
+偶然 < guuzen\ ;
+生育 < seiiku\ ;
+岩盤 < ganban\ ;
+共助 < kyoujo\ ;
+較差 < kakusa\ ;
+兵刃 < heijin\ ;
+苗圃 < byouho\ ;
+再任 < sainin\ ;
+余録 < yoroku\ ;
+病気 < byouki\ ;
+駅逓 < ekitei\ ;
+実際 < jissai\ ;
+生者 < shouja\ ;
+由緒 < yuisho\ ;
+俳聖 < haisei\ ;
+山系 < sankei\ ;
+男系 < dankei\ ;
+対論 < tairon\ ;
+寮費 < ryouhi\ ;
+身柄 < migara\ ;
+倫社 < rinsha\ ;
+巨体 < kyotai\ ;
+内住 < naijuu\ ;
+皇后 < kougou\ ;
+小袖 < kosode\ ;
+対語 < tsuigo\ ;
+能辯 < nouben\ ;
+苦味 < nigami\ ;
+魅惑 < miwaku\ ;
+再三 < saisan\ ;
+巨人 < kyojin\ ;
+将補 < shouho\ ;
+芸大 < geidai\ ;
+舷梯 < gentei\ ;
+脱衣 < datsui\ ;
+円丘 < enkyuu\ ;
+芝居 < shibai\ ;
+軟性 < nansei\ ;
+皆勤 < kaikin\ ;
+巨万 < kyoman\ ;
+査閲 < saetsu\ ;
+寸言 < sungen\ ;
+密送 < missou\ ;
+用紙 < youshi\ ;
+体重 < taijuu\ ;
+棄約 < kiyaku\ ;
+侍読 < jidoku\ ;
+骨牌 < karuta\ ;
+骨片 < koppen\ ;
+儒学 < jugaku\ ;
+自然 < shizen\ ;
+赤赤 < akaaka\ ;
+色悪 < iroaku\ ;
+苦力 < kuurii\ ;
+身方 < mikata\ ;
+楷書 < kaisho\ ;
+宝鑑 < houkan\ ;
+弟小父 < otooji\ ;
+信者 < shinja\ ;
+膿瘍 < nouyou\ ;
+概数 < gaisuu\ ;
+芸域 < geiiki\ ;
+小虎 < kodora\ ;
+色恋 < irokoi\ ;
+肺門 < haimon\ ;
+畢生 < hissei\ ;
+生紙 < kigami\ ;
+先君 < senkun\ ;
+赤貝 < akagai\ ;
+例解 < reikai\ ;
+皆兵 < kaihei\ ;
+軍情 < gunjou\ ;
+高歯 < takaba\ ;
+兵乱 < heiran\ ;
+何遍 < nanben\ ;
+駄賃 < dachin\ ;
+尾翼 < biyoku\ ;
+髄液 < zuieki\ ;
+封蝋 < fuurou\ ;
+党内 < tounai\ ;
+公住 < koujuu\ ;
+生粋 < kissui\ ;
+俗耳 < zokuji\ ;
+宴遊 < en''yuu\ ;
+元号 < gengou\ ;
+骨炭 < kottan\ ;
+側泳 < sobaei\ ;
+英俊 < eishun\ ;
+脱藩 < dappan\ ;
+儀宸 < gishin\ ;
+係船 < keisen\ ;
+柔順 < juujun\ ;
+番犬 < banken\ ;
+馬身 < bashin\ ;
+痙攣 < keiren\ ;
+便船 < binsen\ ;
+腎臓 < jinzou\ ;
+馳走 < chisou\ ;
+主治医 < shujii\ ;
+腋臭 < wakiga\ ;
+不誠意 < fuseii\ ;
+停滞 < teitai\ ;
+英京 < eikyou\ ;
+寝言 < negoto\ ;
+偉烈 < iretsu\ ;
+魯国 < rokoku\ ;
+充分 < juubun\ ;
+皆伝 < kaiden\ ;
+痴情 < chijou\ ;
+崇敬 < suukei\ ;
+御詠歌 < goeika\ ;
+転寝 < gorone\ ;
+腐肉 < funiku\ ;
+輸入 < yunyuu\ ;
+先兵 < senpei\ ;
+軍帽 < gunbou\ ;
+俗縁 < zokuen\ ;
+腹筋 < fukkin\ ;
+自涜 < jitoku\ ;
+膚着 < hadagi\ ;
+容赦 < yousha\ ;
+尿素 < nyouso\ ;
+栄進 < eishin\ ;
+楓林 < fuurin\ ;
+余賊 < yozoku\ ;
+検温 < ken''on\ ;
+寓言 < guugen\ ;
+首輪 < kubiwa\ ;
+芸名 < geimei\ ;
+健気 < kenage\ ;
+栄辱 < eijoku\ ;
+胃下垂 < ikasui\ ;
+赤裸 < sekira\ ;
+小船 < kobune\ ;
+伍長 < gochou\ ;
+屈筋 < kukkin\ ;
+容貌 < youbou\ ;
+発会 < hakkai\ ;
+自沈 < jichin\ ;
+痛打 < tsuuda\ ;
+家賃 < yachin\ ;
+登仙 < tousen\ ;
+芳名 < houmei\ ;
+学院 < gakuin\ ;
+刷毛目 < hakeme\ ;
+魔境 < makyou\ ;
+甲烏賊 < kouika\ ;
+舌根 < zekkon\ ;
+崩御 < hougyo\ ;
+饅頭 < manjuu\ ;
+作譜 < sakufu\ ;
+先便 < senbin\ ;
+小膝 < kohiza\ ;
+岬湾 < kouwan\ ;
+小腹 < kobara\ ;
+元値 < motone\ ;
+骨法 < koppou\ ;
+良家 < ryouke\ ;
+光体 < koutai\ ;
+官辺 < kanpen\ ;
+実車 < jissha\ ;
+密計 < mikkei\ ;
+亜拉毘亜 < arabia\ ;
+介鱗 < kairin\ ;
+胸裏 < kyouri\ ;
+小脇 < kowaki\ ;
+伊達着 < dategi\ ;
+崇拝 < suuhai\ ;
+概念 < gainen\ ;
+用益 < youeki\ ;
+屯田 < tonden\ ;
+膾炙 < kaisha\ ;
+先代 < sendai\ ;
+小股 < komata\ ;
+転変 < tenpen\ ;
+転売 < tenbai\ ;
+御見舞 < omimai\ ;
+実践 < jissen\ ;
+官軍 < kangun\ ;
+背走 < haisou\ ;
+身形 < minari\ ;
+校訓 < koukun\ ;
+小耳 < komimi\ ;
+聴音 < chouon\ ;
+容認 < younin\ ;
+脱脂 < dasshi\ ;
+会釈 < eshaku\ ;
+孔雀 < kujaku\ ;
+小者 < komono\ ;
+代願 < daigan\ ;
+養鶏 < youkei\ ;
+背文字 < semoji\ ;
+係累 < keirui\ ;
+肝銘 < kanmei\ ;
+余角 < yokaku\ ;
+脱肛 < dakkou\ ;
+寝藁 < newara\ ;
+優曇華 < udonge\ ;
+偶有 < guuyuu\ ;
+密行 < mikkou\ ;
+元三 < ganzan\ ;
+体言 < taigen\ ;
+身幅 < mihaba\ ;
+仲間 < nakama\ ;
+伴走 < bansou\ ;
+転地 < tenchi\ ;
+良夜 < ryouya\ ;
+体要 < taiyou\ ;
+伝送 < densou\ ;
+贋造 < ganzou\ ;
+御襁褓 < omutsu\ ;
+臨検 < rinken\ ;
+対聯 < tairen\ ;
+首謀 < shubou\ ;
+僕婢 < bokuhi\ ;
+棒状 < boujou\ ;
+他領 < taryou\ ;
+寸胴 < zundou\ ;
+人魚 < ningyo\ ;
+体裁 < teisai\ ;
+偶数 < guusuu\ ;
+養魚 < yougyo\ ;
+導線 < dousen\ ;
+完走 < kansou\ ;
+馬蝿 < umabae\ ;
+令閨 < reikei\ ;
+対置 < taichi\ ;
+駐英 < chuuei\ ;
+西班牙 < supein\ ;
+肩身 < katami\ ;
+今風 < imafuu\ ;
+這々 < houhou\ ;
+芸人 < geinin\ ;
+柔道 < juudou\ ;
+脱線 < dassen\ ;
+根菜 < konsai\ ;
+胡蝶 < kochou\ ;
+小糠 < konuka\ ;
+検案 < ken''an\ ;
+定論 < teiron\ ;
+楽屋 < gakuya\ ;
+病後 < byougo\ ;
+膿汁 < noujuu\ ;
+傲岸 < gougan\ ;
+小米 < kogome\ ;
+学部 < gakubu\ ;
+臨書 < rinsho\ ;
+査読 < sadoku\ ;
+腫瘍 < shuyou\ ;
+楽寝 < rakune\ ;
+封緘 < fuukan\ ;
+根茎 < konkei\ ;
+膨満 < bouman\ ;
+修理 < shuuri\ ;
+脱糞 < dappun\ ;
+臘梅 < roubai\ ;
+査証 < sashou\ ;
+倒潰 < toukai\ ;
+舌戦 < zessen\ ;
+高慢 < kouman\ ;
+柔軟 < juunan\ ;
+小箱 < kobako\ ;
+尽瘁 < jinsui\ ;
+尊簡 < sonkan\ ;
+導管 < douken\ ;
+定見 < teiken\ ;
+瓦礫 < gareki\ ;
+実装 < jissou\ ;
+極寒 < gokkan\ ;
+駅舎 < ekisha\ ;
+来鮮 < raisen\ ;
+人類 < jinrui\ ;
+亡魂 < boukon\ ;
+贈賄 < zouwai\ ;
+使聘 < shihei\ ;
+人頭 < jintou\ ;
+走者 < sousha\ ;
+実行 < jikkou\ ;
+軍営 < gun''ei\ ;
+軽便 < keiben\ ;
+使者 < shisha\ ;
+偶成 < guusei\ ;
+転勤 < tenkin\ ;
+俗画 < zokuga\ ;
+対米 < taibei\ ;
+距爪 < kyosou\ ;
+人面 < jinmen\ ;
+老齢 < rourei\ ;
+良吏 < ryouri\ ;
+松露 < shouro\ ;
+封筒 < fuutou\ ;
+飛鳥 < hichou\ ;
+脚絆 < kyahan\ ;
+偶感 < guukan\ ;
+貝類 < kairui\ ;
+付録 < furoku\ ;
+偏旁 < henbou\ ;
+代金 < daikin\ ;
+偏斜 < hensha\ ;
+寒肥 < kangoe\ ;
+転写 < tensha\ ;
+会談 < kaidan\ ;
+舎弟 < shatei\ ;
+馴致 < junchi\ ;
+魚介 < gyokai\ ;
+傘屋 < kasaya\ ;
+伝言 < dengon\ ;
+車台 < shadai\ ;
+不見目 < mijime\ ;
+対空 < taikuu\ ;
+会計 < kaikei\ ;
+作興 < sakkou\ ;
+腸炎 < chouen\ ;
+人間 < ningen\ ;
+学費 < gakuhi\ ;
+東面 < toumen\ ;
+小破 < shouha\ ;
+飛魚 < tobiuo\ ;
+山水 < sansui\ ;
+余興 < yokyou\ ;
+山気 < yamake\ ;
+小石 < koishi\ ;
+蕎麦粉 < sobako\ ;
+軍勢 < gunzei\ ;
+余臭 < yoshuu\ ;
+会見 < kaiken\ ;
+封禅 < houzen\ ;
+贅言 < zeigen\ ;
+現金 < genkin\ ;
+居然 < kyozen\ ;
+億万 < okuman\ ;
+検挙 < kenkyo\ ;
+転倒 < tentou\ ;
+町歩 < choubu\ ;
+僧兵 < souhei\ ;
+疑惑 < giwaku\ ;
+代返 < daihen\ ;
+楽土 < rakudo\ ;
+臨戦 < rinsen\ ;
+宝蔵 < houzou\ ;
+楽園 < rakuen\ ;
+林野 < rin''ya\ ;
+京阪 < keihan\ ;
+赤線 < akasen\ ;
+他郷 < takyou\ ;
+軍刀 < guntou\ ;
+痴呆 < chihou\ ;
+条項 < joukou\ ;
+小目 < komoku\ ;
+栄落 < eiraku\ ;
+転住 < tenjuu\ ;
+用法 < youhou\ ;
+臆断 < okudan\ ;
+躍如 < yakujo\ ;
+小皿 < kozara\ ;
+小皺 < kojiwa\ ;
+亡霊 < bourei\ ;
+梭子魚 < kamasu\ ;
+船型 < senkei\ ;
+赤経 < sekkei\ ;
+佞者 < neisha\ ;
+馬肉 < baniku\ ;
+偕成 < kaisei\ ;
+軍兵 < gunpei\ ;
+来電 < raiden\ ;
+東門 < toumon\ ;
+用水 < yousui\ ;
+車内 < shanai\ ;
+馭者 < gyosha\ ;
+不随意 < fuzuii\ ;
+魅了 < miryou\ ;
+二食 < nijiki\ ;
+脂粉 < shifun\ ;
+至当 < shitou\ ;
+体育 < taiiku\ ;
+履歴 < rireki\ ;
+僧侶 < souryo\ ;
+林道 < rindou\ ;
+値札 < nefuda\ ;
+紫陽花 < ajisai\ ;
+低能 < teinou\ ;
+来阪 < raihan\ ;
+例祭 < reisai\ ;
+貴酬 < kishuu\ ;
+胚胎 < haitai\ ;
+僧伽 < sougya\ ;
+桧皮 < hiwada\ ;
+子豚 < kobuta\ ;
+貯金 < chokin\ ;
+代走 < daisou\ ;
+肺葉 < haiyou\ ;
+僭上 < senjou\ ;
+臨御 < ringyo\ ;
+貧鉱 < hinkou\ ;
+偏愛 < hen''ai\ ;
+偽学 < gigaku\ ;
+傑士 < kesshi\ ;
+野良着 < noragi\ ;
+首脳 < shunou\ ;
+生残 < seizan\ ;
+板金 < bankin\ ;
+棟木 < munagi\ ;
+番所 < bansho\ ;
+于蘭盆 < urabon\ ;
+路標 < rohyou\ ;
+車体 < shatai\ ;
+船員 < sen''in\ ;
+字訳 < jiyaku\ ;
+苦味素 < kumiso\ ;
+偏性 < hensei\ ;
+棍棒 < konbou\ ;
+停年 < teinen\ ;
+傘地 < kasaji\ ;
+官舎 < kansha\ ;
+騒然 < souzen\ ;
+山林 < sanrin\ ;
+極右 < kyokuu\ ;
+木魂 < kodama\ ;
+腎炎 < jin''en\ ;
+山村 < sanson\ ;
+人選 < jinsen\ ;
+小猫 < koneko\ ;
+仮託 < kataku\ ;
+棒杭 < bougui\ ;
+人道 < jindou\ ;
+馬糧 < baryou\ ;
+資財 < shizai\ ;
+馬糞 < maguso\ ;
+僅僅 < kinkin\ ;
+極印 < gokuin\ ;
+代講 < daikou\ ;
+会葬 < kaisou\ ;
+車上 < shajou\ ;
+至尊 < shison\ ;
+舅姑 < kyuuko\ ;
+肺臓 < haizou\ ;
+身内 < miuchi\ ;
+身共 < midomo\ ;
+至宝 < shihou\ ;
+体系 < taikei\ ;
+偏平 < henpei\ ;
+察知 < satchi\ ;
+末香 < makkou\ ;
+木馬 < mokuba\ ;
+側女 < sobame\ ;
+本館 < honkan\ ;
+代言 < daigen\ ;
+肺胞 < haihou\ ;
+人車 < jinsha\ ;
+朱顔 < shugan\ ;
+用材 < youzai\ ;
+足湯 < ashiyu\ ;
+傾倒 < keitou\ ;
+業務 < gyoumu\ ;
+倍数 < baisuu\ ;
+老雄 < rouyuu\ ;
+船出 < funade\ ;
+自宅 < jitaku\ ;
+脇目 < wakime\ ;
+本願 < hongan\ ;
+本題 < hondai\ ;
+乱雲 < ran''un\ ;
+疾呼 < shikko\ ;
+船具 < funagu\ ;
+家筋 < iesuji\ ;
+本音 < hon''ne\ ;
+付託 < futaku\ ;
+生来 < seirai\ ;
+倦憊 < kenpai\ ;
+枢要 < suuyou\ ;
+颱風 < taifuu\ ;
+寝癖 < neguse\ ;
+無事故 < mujiko\ ;
+臍帯 < seitai\ ;
+検定 < kentei\ ;
+来邸 < raitei\ ;
+腹案 < fukuan\ ;
+生木 < namaki\ ;
+余程 < yohodo\ ;
+傲倨 < goukyo\ ;
+骨子 < kosshi\ ;
+来遊 < raiyuu\ ;
+東軍 < tougun\ ;
+展望 < tenbou\ ;
+耳輪 < mimiwa\ ;
+小潮 < koshio\ ;
+梶木 < kajiki\ ;
+貧賤 < hinsen\ ;
+来迎 < raigou\ ;
+有髪 < uhatsu\ ;
+赤痢 < sekiri\ ;
+便法 < benpou\ ;
+低空 < teikuu\ ;
+伝聞 < denbun\ ;
+本隊 < hontai\ ;
+岩層 < gansou\ ;
+朝顔 < asagao\ ;
+身丈 < mitake\ ;
+本陣 < honjin\ ;
+本院 < hon''in\ ;
+尨毛 < mukuge\ ;
+定紋 < joumon\ ;
+養豚 < youton\ ;
+付表 < fuhyou\ ;
+朱門 < shumon\ ;
+併用 < heiyou\ ;
+木陰 < kokage\ ;
+債主 < saishu\ ;
+来車 < raisha\ ;
+背筋 < haikin\ ;
+山手 < yamate\ ;
+腋毛 < wakige\ ;
+便殿 < benden\ ;
+肝胆 < kantan\ ;
+朝露 < chouro\ ;
+屯所 < tonsho\ ;
+賀表 < gahyou\ ;
+宝算 < housan\ ;
+一昨日 < ototoi\ ;
+風霜 < fuusou\ ;
+起爆 < kibaku\ ;
+興味 < kyoumi\ ;
+肉芽 < nikuga\ ;
+孤舟 < koshuu\ ;
+二進 < nishin\ ;
+村道 < sondou\ ;
+偏好 < henkou\ ;
+二通 < nitsuu\ ;
+値幅 < nehaba\ ;
+風防 < fuubou\ ;
+枯葉 < kareha\ ;
+家督 < katoku\ ;
+偶吟 < guukin\ ;
+伝線 < densen\ ;
+自国 < jikoku\ ;
+臨在 < rinzai\ ;
+余白 < yohaku\ ;
+宿痾 < shukua\ ;
+密生 < missei\ ;
+寄留 < kiryuu\ ;
+来賓 < raihin\ ;
+伝統 < dentou\ ;
+画心 < gashin\ ;
+導水 < dousui\ ;
+来貢 < raikou\ ;
+脱法 < dappou\ ;
+値嵩 < negasa\ ;
+出来値 < dekine\ ;
+豪邸 < goutei\ ;
+余病 < yobyou\ ;
+老酒 < roushu\ ;
+低目 < hikume\ ;
+作画 < sakuga\ ;
+獣類 < juurui\ ;
+豪邁 < goumai\ ;
+射法 < shahou\ ;
+駄物 < damono\ ;
+脱水 < dassui\ ;
+飛躍 < hiyaku\ ;
+乱酔 < ransui\ ;
+乱酒 < ranshu\ ;
+舎兄 < shakei\ ;
+仰臥 < gyouga\ ;
+番外 < bangai\ ;
+岩塩 < gan''en\ ;
+何番 < nanban\ ;
+書風 < shofuu\ ;
+脳死 < noushi\ ;
+二足 < nisoku\ ;
+羽風 < hakaze\ ;
+豪農 < gounou\ ;
+画幅 < gafuku\ ;
+書類 < shorui\ ;
+生憎 < ainiku\ ;
+中飛 < chuuhi\ ;
+谷間 < tanima\ ;
+東西 < touzai\ ;
+臭味 < shuumi\ ;
+琴線 < kinsen\ ;
+胡瓜 < kyuuri\ ;
+飛越 < hietsu\ ;
+来談 < raidan\ ;
+倉廩 < sourin\ ;
+腐朽 < fukyuu\ ;
+安穏 < an''non\ ;
+値安 < neyasu\ ;
+代艦 < daikan\ ;
+寸法 < sunpou\ ;
+胎盤 < taiban\ ;
+老農 < rounou\ ;
+乱造 < ranzou\ ;
+傍人 < boujin\ ;
+屈指 < kusshi\ ;
+育種 < ikushu\ ;
+梅林 < bairin\ ;
+木釘 < kikugi\ ;
+男工 < dankou\ ;
+豼貅 < hikyuu\ ;
+月間 < gekkan\ ;
+仏葬 < bussou\ ;
+借家 < shakka\ ;
+書面 < shomen\ ;
+来訪 < raihou\ ;
+中音 < chuuon\ ;
+贈答 < zoutou\ ;
+老輩 < rouhai\ ;
+聾者 < rousha\ ;
+桑海 < soukai\ ;
+小楯 < kodate\ ;
+柱礎 < chuuso\ ;
+聚落 < juraku\ ;
+検品 < kenpin\ ;
+偶像 < guuzou\ ;
+存置 < sonchi\ ;
+本邸 < hontei\ ;
+本邦 < honpou\ ;
+来観 < raikan\ ;
+養蚕 < yousan\ ;
+本選 < honsen\ ;
+頽齢 < tairei\ ;
+環海 < kankai\ ;
+木部 < mokubu\ ;
+本道 < hondou\ ;
+居所 < kyosho\ ;
+路床 < roshou\ ;
+偽作 < gisaku\ ;
+乱軍 < rangun\ ;
+賞美 < shoubi\ ;
+貯蔵 < chozou\ ;
+倡婦 < shoufu\ ;
+朝野 < chouya\ ;
+胚珠 < haishu\ ;
+未進 < mishin\ ;
+休符 < kyuufu\ ;
+風采 < fuusai\ ;
+産廃 < sanpai\ ;
+令聞 < reibun\ ;
+自力 < jiriki\ ;
+係数 < keisuu\ ;
+中陰 < chuuin\ ;
+検印 < ken''in\ ;
+少林 < shorin\ ;
+健全 < kenzen\ ;
+寮母 < ryoubo\ ;
+画学 < gagaku\ ;
+互角 < gokaku\ ;
+質素 < shisso\ ;
+根源 < kongen\ ;
+柳眉 < ryuubi\ ;
+争論 < souron\ ;
+走法 < souhou\ ;
+上騰 < joutou\ ;
+山家 < yamaga\ ;
+実生 < mishou\ ;
+末輩 < mappai\ ;
+属差 < zokusa\ ;
+不馴 < funare\ ;
+椿事 < chinji\ ;
+首班 < shuhan\ ;
+定番 < teiban\ ;
+偶人 < guujin\ ;
+男子 < danshi\ ;
+代署 < daisho\ ;
+代置 < daichi\ ;
+伊勢丹 < isetan\ ;
+肺癌 < haigan\ ;
+饌米 < senmai\ ;
+趣旨 < shushi\ ;
+今般 < konpan\ ;
+尊来 < sonrai\ ;
+梯形 < teikei\ ;
+二見 < futami\ ;
+自儘 < jimama\ ;
+果肉 < kaniku\ ;
+検分 < kenbun\ ;
+両院 < ryouin\ ;
+甲子 < kasshi\ ;
+一驚 < ikkyou\ ;
+五行 < gogyou\ ;
+至便 < shiben\ ;
+尊書 < sonsho\ ;
+小昼 < kohiru\ ;
+曝露 < bakuro\ ;
+小春 < koharu\ ;
+余瀝 < yoreki\ ;
+献饌 < kensen\ ;
+信徒 < shinto\ ;
+番号 < bangou\ ;
+一駄 < ichida\ ;
+類題 < ruidai\ ;
+曜霊 < yourei\ ;
+根治 < konchi\ ;
+偉力 < iryoku\ ;
+寡欲 < kayoku\ ;
+有配 < yuuhai\ ;
+仕置 < shioki\ ;
+風車 < fuusha\ ;
+暗黙 < anmoku\ ;
+山女 < yamame\ ;
+暗黒 < ankoku\ ;
+封書 < fuusho\ ;
+仏者 < bussha\ ;
+棄子 < sutego\ ;
+倹吝 < kenrin\ ;
+自供 < jikyou\ ;
+三韓 < sankan\ ;
+予表 < yohyou\ ;
+万頃 < bankei\ ;
+一飛 < ichihi\ ;
+根毛 < konmou\ ;
+余滴 < yoteki\ ;
+倍大 < baidai\ ;
+自作 < jisaku\ ;
+育生 < ikusei\ ;
+画境 < gakyou\ ;
+木賊 < tokusa\ ;
+尊敬 < sonkei\ ;
+上面 < joumen\ ;
+居常 < kyojou\ ;
+代納 < dainou\ ;
+寒気 < samuke\ ;
+三面 < sanmen\ ;
+尊攘 < sonjou\ ;
+停会 < teikai\ ;
+倍増 < baizou\ ;
+検便 < kenben\ ;
+生存 < seizon\ ;
+屑屋 < kuzuya\ ;
+願面 < ganmen\ ;
+風趣 < fuushu\ ;
+胸毛 < munage\ ;
+山場 < yamaba\ ;
+屏居 < heikyo\ ;
+万雷 < banrai\ ;
+三階 < sangai\ ;
+寝様 < nezama\ ;
+此処等 < kokora\ ;
+番兵 < banpei\ ;
+朝賀 < chouga\ ;
+対数 < taisuu\ ;
+審査 < shinsa\ ;
+寝業 < newaza\ ;
+露西亜 < roshia\ ;
+本論 < honron\ ;
+借問 < shamon\ ;
+曾遊 < souyuu\ ;
+琢磨 < takuma\ ;
+腹子 < harako\ ;
+桟敷 < sajiki\ ;
+対支 < taishi\ ;
+養育 < youiku\ ;
+伯父 < hakufu\ ;
+本誌 < honshi\ ;
+子種 < kodane\ ;
+小指 < koyubi\ ;
+未読 < midoku\ ;
+目医者 < meisha\ ;
+一隻 < isseki\ ;
+寸断 < sundan\ ;
+老衰 < rousui\ ;
+腐心 < fushin\ ;
+暴風 < boufuu\ ;
+余沢 < yotaku\ ;
+定点 < teiten\ ;
+書道 < shodou\ ;
+中部 < chuubu\ ;
+偏人 < henjin\ ;
+倦厭 < ken''en\ ;
+学監 < gakkan\ ;
+養老 < yourou\ ;
+産声 < ubugoe\ ;
+飴色 < ameiro\ ;
+田地 < denchi\ ;
+朝議 < chougi\ ;
+田園 < den''en\ ;
+香港 < honkon\ ;
+桂林 < keirin\ ;
+一間 < hitoma\ ;
+存知 < zonchi\ ;
+中途 < chuuto\ ;
+琺瑯 < hourou\ ;
+頻頻 < hinpin\ ;
+尻尾 < shippo\ ;
+甚大 < jindai\ ;
+例数 < reisuu\ ;
+二葉 < futaba\ ;
+飼育 < shiiku\ ;
+俳壇 < haidan\ ;
+屯営 < ton''ei\ ;
+来臨 < rairin\ ;
+梵天 < bonten\ ;
+如何様 < ikayou\ ;
+寒梅 < kanbai\ ;
+根柢 < kontei\ ;
+何歳 < nansai\ ;
+栗毛 < kurige\ ;
+尊慮 < sonryo\ ;
+住民 < juumin\ ;
+少恩 < shouon\ ;
+産地 < sanchi\ ;
+企画 < kikaku\ ;
+甘塩 < amajio\ ;
+赤本 < akahon\ ;
+風解 < fuukai\ ;
+併有 < heiyuu\ ;
+屋外 < okugai\ ;
+馬橇 < basori\ ;
+中身 < nakami\ ;
+理神 < rishin\ ;
+根本 < nemoto\ ;
+人絹 < jinken\ ;
+主賓 < shuhin\ ;
+生地 < seichi\ ;
+風見 < kazami\ ;
+他称 < tashou\ ;
+香水 < kousui\ ;
+寒村 < kanson\ ;
+杉菜 < sugina\ ;
+留保 < ryuuho\ ;
+能書 < nousho\ ;
+作業 < sagyou\ ;
+倨傲 < kyogou\ ;
+根暗 < nekura\ ;
+跡地 < atochi\ ;
+人糞 < jinpun\ ;
+学理 < gakuri\ ;
+余業 < yogyou\ ;
+小形 < kogata\ ;
+月謝 < gessha\ ;
+密栓 < missen\ ;
+寒暖 < kandan\ ;
+風袋 < fuutai\ ;
+三重 < sanjuu\ ;
+財経 < zaikei\ ;
+存生 < zonjou\ ;
+万金 < mankin\ ;
+尊影 < son''ei\ ;
+根方 < nekata\ ;
+用品 < youhin\ ;
+仮病 < kebyou\ ;
+上酒 < joushu\ ;
+宗派 < shuuha\ ;
+定法 < jouhou\ ;
+家業 < kagyou\ ;
+胡椒 < koshou\ ;
+胆汁 < tanjuu\ ;
+琥珀 < kohaku\ ;
+能文 < noubun\ ;
+小幅 < kohaba\ ;
+孤独 < kodoku\ ;
+産品 < sanpin\ ;
+不適 < futeki\ ;
+密書 < missho\ ;
+股火 < matabi\ ;
+美醜 < bishuu\ ;
+一里 < ichiri\ ;
+寵愛 < chouai\ ;
+宝殿 < houden\ ;
+小差 < shousa\ ;
+珠算 < shuzan\ ;
+不通 < futsuu\ ;
+脳幹 < noukan\ ;
+供応 < kyouou\ ;
+玉藻 < tamamo\ ;
+肝炎 < kan''en\ ;
+三選 < sansen\ ;
+尋常 < jinjou\ ;
+修営 < shuuei\ ;
+胡桃 < kurumi\ ;
+万邦 < banpou\ ;
+老荘 < rousou\ ;
+官民 < kanmin\ ;
+破魔矢 < hamaya\ ;
+属吏 < zokuri\ ;
+枡目 < masume\ ;
+丁酉 < teiyuu\ ;
+越後 < echigo\ ;
+尚尚 < naonao\ ;
+三連 < sanren\ ;
+主計 < shukei\ ;
+校本 < kouhon\ ;
+暮鐘 < boshou\ ;
+封建 < houken\ ;
+倒像 < touzou\ ;
+羅針 < rashin\ ;
+梵唄 < bonbai\ ;
+上辺 < jouhen\ ;
+一郭 < ikkaku\ ;
+一部 < ichibu\ ;
+何枚 < nanmai\ ;
+寸志 < sunshi\ ;
+佞智 < neichi\ ;
+主観 < shukan\ ;
+家柄 < iegara\ ;
+小島 < kojima\ ;
+本葬 < honsou\ ;
+産卵 < sanran\ ;
+人種 < jinshu\ ;
+完治 < kanchi\ ;
+何条 < nanjou\ ;
+代用 < daiyou\ ;
+相部屋 < aibeya\ ;
+伯母 < hakubo\ ;
+俳名 < haimei\ ;
+孤児院 < kojiin\ ;
+義賊 < gizoku\ ;
+小山 < koyama\ ;
+尊崇 < sonsuu\ ;
+俳友 < haiyuu\ ;
+一週 < isshuu\ ;
+休演 < kyuuen\ ;
+一通 < ittsuu\ ;
+脇戸 < wakido\ ;
+尿器 < nyouki\ ;
+三軍 < sangun\ ;
+狭霧 < sagiri\ ;
+根拠 < konkyo\ ;
+井綱 < idzuna\ ;
+今日日 < kyoubi\ ;
+万軍 < bangun\ ;
+東端 < toutan\ ;
+本草 < honzou\ ;
+費目 < himoku\ ;
+仙界 < senkai\ ;
+産前 < sanzen\ ;
+玉菜 < tamana\ ;
+末茶 < matcha\ ;
+飯米 < hanmai\ ;
+順風 < junpuu\ ;
+朱色 < shuiro\ ;
+伝法 < denpou\ ;
+画伯 < gahaku\ ;
+狭隘 < kyouai\ ;
+獣行 < juukou\ ;
+不足 < fusoku\ ;
+資産 < shisan\ ;
+嫁菜 < yomena\ ;
+五経 < gokyou\ ;
+駅手 < ekishu\ ;
+生前 < seizen\ ;
+下足 < gesoku\ ;
+何方 < donata\ ;
+豚舎 < tonsha\ ;
+足場 < ashiba\ ;
+順順 < junjun\ ;
+荼枳尼 < dakini\ ;
+一身 < isshin\ ;
+肥沃 < hiyoku\ ;
+梱包 < konpou\ ;
+林産 < rinsan\ ;
+人知 < jinchi\ ;
+罰金 < bakkin\ ;
+令状 < reijou\ ;
+例年 < reinen\ ;
+狭間 < hazama\ ;
+脛巾 < habaki\ ;
+履修 < rishuu\ ;
+膝下 < shikka\ ;
+二級 < nikyuu\ ;
+海老錠 < ebijou\ ;
+本膳 < honzen\ ;
+一路 < ichiro\ ;
+脆性 < zeisei\ ;
+体操 < taisou\ ;
+使役 < shieki\ ;
+晩餐 < bansan\ ;
+肝油 < kan''yu\ ;
+群論 < gunron\ ;
+用便 < youben\ ;
+今生 < konjou\ ;
+少女 < shoujo\ ;
+人相 < ninsou\ ;
+予約 < yoyaku\ ;
+人目 < hitome\ ;
+甘党 < amatou\ ;
+貧相 < hinsou\ ;
+背景 < haikei\ ;
+駒座 < komaza\ ;
+安楽 < anraku\ ;
+世評 < sehyou\ ;
+班田 < handen\ ;
+有蓋 < yuugai\ ;
+用件 < youken\ ;
+乗船 < jousen\ ;
+実景 < jikkei\ ;
+屋内 < okunai\ ;
+学派 < gakuha\ ;
+風船 < fuusen\ ;
+柔毛 < juumou\ ;
+現状 < genjou\ ;
+音響 < onkyou\ ;
+木肌 < kihada\ ;
+尊大 < sondai\ ;
+脳天 < nouten\ ;
+媚薬 < biyaku\ ;
+風致 < fuuchi\ ;
+寝床 < nedoko\ ;
+世襲 < seshuu\ ;
+老練 < rouren\ ;
+不詳 < fushou\ ;
+実施 < jisshi\ ;
+万謝 < bansha\ ;
+三論 < sanron\ ;
+俗務 < zokumu\ ;
+駅弁 < ekiben\ ;
+本署 < honsho\ ;
+寝巻 < nemaki\ ;
+実数 < jissuu\ ;
+人生 < jinsei\ ;
+守株 < shushu\ ;
+蕎麦屋 < sobaya\ ;
+争端 < soutan\ ;
+一議 < ichigi\ ;
+伴星 < bansei\ ;
+飛竜 < hiryuu\ ;
+根幹 < konkan\ ;
+赤帽 < akabou\ ;
+養生 < youjou\ ;
+暴走 < bousou\ ;
+上計 < joukei\ ;
+宿意 < shukui\ ;
+完本 < kanpon\ ;
+耳目 < jimoku\ ;
+佞悪 < neiaku\ ;
+俯伏 < fufuku\ ;
+騙取 < henshu\ ;
+俯仰 < fugyou\ ;
+上覧 < jouran\ ;
+万言 < mangen\ ;
+対外 < taigai\ ;
+住所 < juusho\ ;
+財界 < zaikai\ ;
+風聞 < fuubun\ ;
+上覆 < uwaooi\ ;
+容態 < youdai\ ;
+財産 < zaisan\ ;
+雌捻子 < meneji\ ;
+両虎 < ryouko\ ;
+猥談 < waidan\ ;
+越境 < ekkyou\ ;
+上製 < jousei\ ;
+俗儒 < zokuju\ ;
+上裁 < jousai\ ;
+伝来 < denrai\ ;
+寝小 < neshou\ ;
+本絹 < honken\ ;
+飯盒 < hangou\ ;
+下表 < kahyou\ ;
+腕前 < udemae\ ;
+仮泊 < kahaku\ ;
+余徳 < yotoku\ ;
+佞弁 < neiben\ ;
+中華 < chuuka\ ;
+害悪 < gaiaku\ ;
+封地 < houchi\ ;
+完敗 < kanpai\ ;
+俚俗 < rizoku\ ;
+屋上 < okujou\ ;
+木組 < kigumi\ ;
+有能 < yuunou\ ;
+尚古 < shouko\ ;
+背戻 < hairei\ ;
+宣戦 < sensen\ ;
+五目 < gomoku\ ;
+寓居 < guukyo\ ;
+尋問 < jinmon\ ;
+暴論 < bouron\ ;
+条痕 < joukon\ ;
+併存 < heizon\ ;
+富岳 < fugaku\ ;
+胡弓 < kokyuu\ ;
+昼餉 < hiruge\ ;
+琴柱 < kotoji\ ;
+趨勢 < suusei\ ;
+頑迷 < ganmei\ ;
+宛所 < atesho\ ;
+某某 < boubou\ ;
+貯炭 < chotan\ ;
+二目 < futame\ ;
+暴言 < bougen\ ;
+俊偉 < shun''i\ ;
+尊命 < sonmei\ ;
+肥料 < hiryou\ ;
+実態 < jittai\ ;
+木箱 < kibako\ ;
+有罪 < yuuzai\ ;
+学校 < gakkou\ ;
+木管 < mokkan\ ;
+玄米 < genmai\ ;
+珈琲 < kouhii\ ;
+風紋 < fuumon\ ;
+株屋 < kabuya\ ;
+尊君 < sonkun\ ;
+実意 < jitsui\ ;
+低廉 < teiren\ ;
+飼犬 < kaiinu\ ;
+尊号 < songou\ ;
+他流 < taryuu\ ;
+末端 < mattan\ ;
+人災 < jinsai\ ;
+下薬 < geyaku\ ;
+密封 < mippuu\ ;
+小匙 < kosaji\ ;
+尊厳 < songen\ ;
+肉桂 < nikkei\ ;
+走塁 < sourui\ ;
+伝搬 < denpan\ ;
+寛大 < kandai\ ;
+古事記 < kojiki\ ;
+本稿 < honkou\ ;
+子様 < kosama\ ;
+宿屋 < yadoya\ ;
+寿命 < jumyou\ ;
+真面目 < majime\ ;
+三蔵 < sanzou\ ;
+音量 < onryou\ ;
+乗算 < jouzan\ ;
+根太 < nebuto\ ;
+議長 < gichou\ ;
+書翰 < shokan\ ;
+来状 < raijou\ ;
+仏法 < buppou\ ;
+安手 < yasude\ ;
+対句 < tsuiku\ ;
+中耳 < chuuji\ ;
+本社 < honsha\ ;
+下落 < geraku\ ;
+警防 < keibou\ ;
+寒夜 < kan''ya\ ;
+守成 < shusei\ ;
+特高 < tokkou\ ;
+末社 < massha\ ;
+佗寝 < wabine\ ;
+実弟 < jittei\ ;
+玲瓏 < reirou\ ;
+老眼 < rougan\ ;
+栽培 < saibai\ ;
+牡鶏 < ondori\ ;
+小兵 < kohyou\ ;
+月経 < gekkei\ ;
+背広 < sebiro\ ;
+季春 < kishun\ ;
+小児 < shouni\ ;
+豊稔 < hounen\ ;
+牝鷄 < hinkei\ ;
+象眼 < zougan\ ;
+玳瑁 < taimai\ ;
+暗誦 < anshou\ ;
+騒人 < soujin\ ;
+子株 < kokabu\ ;
+昼間 < hiruma\ ;
+低層 < teisou\ ;
+根城 < nejiro\ ;
+亀甲 < kikkou\ ;
+顕著 < kencho\ ;
+騒乱 < souran\ ;
+尊公 < sonkou\ ;
+宵宮 < yomiya\ ;
+住専 < juusen\ ;
+音速 < onsoku\ ;
+伐採 < bassai\ ;
+便乗 < binjou\ ;
+乾田 < kanden\ ;
+豆科 < mameka\ ;
+脱党 < dattou\ ;
+佞姦 < neikan\ ;
+住家 < sumika\ ;
+玲玲 < reirei\ ;
+侶伴 < ryohan\ ;
+賜杯 < shihai\ ;
+財源 < zaigen\ ;
+安息 < ansoku\ ;
+尊像 < sonzou\ ;
+不良 < furyou\ ;
+定常 < teijou\ ;
+献茶 < kencha\ ;
+一菊 < ikkiku\ ;
+宮家 < miyake\ ;
+風神 < fuujin\ ;
+対処 < taisho\ ;
+両義 < ryougi\ ;
+万芸 < bangei\ ;
+賢明 < kenmei\ ;
+貯水 < chosui\ ;
+枯木 < kareki\ ;
+一荘 < iichan\ ;
+寸前 < sunzen\ ;
+宏弁 < kouben\ ;
+対内 < tainai\ ;
+老生 < rousei\ ;
+獺祭 < dassai\ ;
+独語 < dokugo\ ;
+上臼 < uwausu\ ;
+小作 < kosaku\ ;
+本盗 < hontou\ ;
+飽満 < houman\ ;
+那由他 < nayuta\ ;
+寸分 < sunbun\ ;
+独話 < dokuwa\ ;
+万般 < banpan\ ;
+上臈 < jourou\ ;
+木目 < mokume\ ;
+宦官 < kangan\ ;
+更紗 < sarasa\ ;
+人気 < hitoke\ ;
+木皿 < kizara\ ;
+人民 < jinmin\ ;
+上腕 < jouwan\ ;
+尊体 < sontai\ ;
+木皮 < mokuhi\ ;
+代替 < daitai\ ;
+某所 < bousho\ ;
+子方 < kokata\ ;
+作場 < sakuba\ ;
+貧民 < hinmin\ ;
+今様 < imayou\ ;
+京浜 < keihin\ ;
+有税 < yuuzei\ ;
+脱会 < dakkai\ ;
+上背 < uwazei\ ;
+寵児 < chouji\ ;
+上肢 < joushi\ ;
+智謀 < chibou\ ;
+類聚 < ruijuu\ ;
+本番 < honban\ ;
+特需 < tokuju\ ;
+貴様 < kisama\ ;
+聰明 < soumei\ ;
+風眼 < fuugan\ ;
+老獪 < roukai\ ;
+家塾 < kajuku\ ;
+資本 < shihon\ ;
+作土 < sakudo\ ;
+会式 < eshiki\ ;
+羚羊 < reiyou\ ;
+三者 < sansha\ ;
+豪爽 < gousou\ ;
+作図 < sakuzu\ ;
+猫背 < nekoze\ ;
+飛火 < tobihi\ ;
+片鱗 < henrin\ ;
+駅名 < ekimei\ ;
+代数 < daisuu\ ;
+豐田 < toyota\ ;
+独行 < dokkou\ ;
+牛馬 < gyuuba\ ;
+丸秘 < maruhi\ ;
+飛瀑 < hibaku\ ;
+倶楽部 < kurabu\ ;
+頒行 < hankou\ ;
+東毎 < toumai\ ;
+胡国 < kokoku\ ;
+案内 < an''nai\ ;
+何回 < nankai\ ;
+護身 < goshin\ ;
+木琴 < mokkin\ ;
+仏書 < bussho\ ;
+類纂 < ruisan\ ;
+青黴 < aokabi\ ;
+木理 < mokuri\ ;
+供与 < kyouyo\ ;
+讒謗 < zanbou\ ;
+寝刃 < netaba\ ;
+一羽 < ichiwa\ ;
+肉感 < nikkan\ ;
+賢才 < kensai\ ;
+屋根屋 < yaneya\ ;
+安寧 < an''nei\ ;
+主砲 < shuhou\ ;
+寝具 < shingu\ ;
+貿易 < boueki\ ;
+現数 < gensuu\ ;
+音調 < onchou\ ;
+駅前 < ekimae\ ;
+守宮 < yamori\ ;
+音読 < ondoku\ ;
+枚数 < maisuu\ ;
+聡敏 < soubin\ ;
+貧棒 < binbou\ ;
+月相 < gessou\ ;
+青鷺 < aosagi\ ;
+学徒 < gakuto\ ;
+有益 < yuueki\ ;
+今晩 < konban\ ;
+寒剤 < kanzai\ ;
+賢慮 < kenryo\ ;
+下絵 < shitae\ ;
+讒言 < zangen\ ;
+赦免 < shamen\ ;
+予測 < yosoku\ ;
+風琴 < fuukin\ ;
+三組 < mikumi\ ;
+三絃 < sangen\ ;
+上納 < jounou\ ;
+王物 < oumono\ ;
+一縷 < ichiru\ ;
+二流 < niryuu\ ;
+海老茶 < ebicha\ ;
+聖断 < seidan\ ;
+佩剣 < haiken\ ;
+人材 < jinzai\ ;
+未熟 < mijuku\ ;
+上米 < joumai\ ;
+中破 < chuuha\ ;
+人望 < jinbou\ ;
+寡作 < kasaku\ ;
+中砥 < nakato\ ;
+颯爽 < sassou\ ;
+実地 < jitchi\ ;
+背嚢 < hainou\ ;
+賦役 < buyaku\ ;
+有用 < yuuyou\ ;
+有産 < yuusan\ ;
+月産 < gessan\ ;
+伏屋 < fuseya\ ;
+阿媽港 < amakou\ ;
+村民 < sonmin\ ;
+球技 < kyuugi\ ;
+枚挙 < maikyo\ ;
+日頃 < higoro\ ;
+下策 < gesaku\ ;
+青鮫 < aozame\ ;
+字引 < jibiki\ ;
+低吟 < teigin\ ;
+何千 < nanzen\ ;
+何十 < nanjuu\ ;
+馬力 < bariki\ ;
+存廃 < zonpai\ ;
+磁方位 < jihoui\ ;
+三等 < santou\ ;
+一籌 < itchuu\ ;
+子役 < koyaku\ ;
+伏字 < fuseji\ ;
+耐水 < taisui\ ;
+上端 < joutan\ ;
+駄作 < dasaku\ ;
+丹田 < tanden\ ;
+駅伝 < ekiden\ ;
+字幕 < jimaku\ ;
+万端 < bantan\ ;
+上空 < joukuu\ ;
+獰猛 < neimou\ ;
+片雲 < hen''un\ ;
+独英 < dokuei\ ;
+日雀 < higara\ ;
+題簽 < daisen\ ;
+密偵 < mittei\ ;
+頻繁 < hinpan\ ;
+一策 < issaku\ ;
+何分 < nanpun\ ;
+牽連 < kenren\ ;
+孫子 < magoko\ ;
+三種 < sanshu\ ;
+上程 < joutei\ ;
+日陰 < hikage\ ;
+馬克 < maruku\ ;
+官営 < kan''ei\ ;
+羽田 < haneda\ ;
+一笑 < isshou\ ;
+面頬 < menpoo\ ;
+日限 < higiri\ ;
+両目 < ryoume\ ;
+本源 < hongen\ ;
+肉屋 < nikuya\ ;
+姦計 < kankei\ ;
+静養 < seiyou\ ;
+財政 < zaisei\ ;
+孤客 < kokaku\ ;
+令弟 < reitei\ ;
+株価 < kabuka\ ;
+中生 < nakate\ ;
+独自 < dokuji\ ;
+代弁 < daiben\ ;
+密使 < misshi\ ;
+家元 < iemoto\ ;
+牧野 < bokuya\ ;
+面面 < menmen\ ;
+事業 < jigyou\ ;
+丁稚 < detchi\ ;
+来書 < raisho\ ;
+日長 < hinaga\ ;
+五桁 < goketa\ ;
+会堂 < kaidou\ ;
+密会 < mikkai\ ;
+賊徒 < zokuto\ ;
+猫科 < nekoka\ ;
+旅館 < ryokan\ ;
+任官 < ninkan\ ;
+孟子 < moushi\ ;
+群盲 < gunmou\ ;
+昏迷 < konmei\ ;
+乳母 < nyuubo\ ;
+他心 < tashin\ ;
+住僧 < juusou\ ;
+一票 < ippyou\ ;
+鍛冶屋 < kajiya\ ;
+査収 < sashuu\ ;
+二核 < nikaku\ ;
+実勢 < jissei\ ;
+仮屋 < kariya\ ;
+佞人 < neijin\ ;
+末法 < mappou\ ;
+来方 < kikata\ ;
+飲料 < inryou\ ;
+官印 < kan''in\ ;
+人手 < hitode\ ;
+書状 < shojou\ ;
+仮寝 < karine\ ;
+孔孟 < koumou\ ;
+仮家 < kariie\ ;
+仁愛 < jin''ai\ ;
+大麦 < oomugi\ ;
+狭義 < kyougi\ ;
+謝金 < shakin\ ;
+子守 < komori\ ;
+宿世 < sukuse\ ;
+奮闘 < funtou\ ;
+宗務 < shuumu\ ;
+婚礼 < konrei\ ;
+本殿 < honden\ ;
+猛禽 < moukin\ ;
+仁恵 < jinkei\ ;
+五日 < itsuka\ ;
+智能 < chinou\ ;
+一瞬 < isshun\ ;
+風洞 < fuudou\ ;
+斬首 < zanshu\ ;
+日銭 < hizeni\ ;
+本欄 < honran\ ;
+仏師 < busshi\ ;
+家並 < yanami\ ;
+豊水 < housui\ ;
+丁目 < choume\ ;
+令孫 < reison\ ;
+仏工 < bukkou\ ;
+塩基度 < enkido\ ;
+肉塊 < nikkai\ ;
+暮秋 < boshuu\ ;
+智者 < chisha\ ;
+方面 < houmen\ ;
+存外 < zongai\ ;
+美的 < biteki\ ;
+伶優 < reiyuu\ ;
+矢羽根 < yabane\ ;
+乗気 < noriki\ ;
+上番 < jouban\ ;
+風水 < fuusui\ ;
+付属 < fuzoku\ ;
+三番 < sanban\ ;
+学園 < gakuen\ ;
+謙遜 < kenson\ ;
+上田 < jouden\ ;
+夜鷹 < yotaka\ ;
+贈呈 < zoutei\ ;
+論題 < rondai\ ;
+会合 < kaigou\ ;
+理学 < rigaku\ ;
+旧都 < kyuuto\ ;
+贈号 < zougou\ ;
+中火 < chuubi\ ;
+伝単 < dentan\ ;
+宣伝 < senden\ ;
+贋印 < nisein\ ;
+背任 < hainin\ ;
+翻案 < hon''an\ ;
+王様 < ousama\ ;
+任地 < ninchi\ ;
+一疋 < ippiki\ ;
+老来 < rourai\ ;
+他宗 < tashuu\ ;
+老杉 < rousan\ ;
+完全 < kanzen\ ;
+断面 < danmen\ ;
+令妹 < reimai\ ;
+夜鳥 < yachou\ ;
+猛省 < mousei\ ;
+柔和 < nyuuwa\ ;
+定例 < teirei\ ;
+現存 < genzon\ ;
+乱杭 < rangui\ ;
+伴侶 < hanryo\ ;
+定住 < teijuu\ ;
+守兵 < shuhei\ ;
+背中 < senaka\ ;
+特許 < tokkyo\ ;
+存在 < sonzai\ ;
+背丈 < setake\ ;
+特訓 < tokkun\ ;
+爆音 < bakuon\ ;
+下獄 < gegoku\ ;
+今尚 < imanao\ ;
+人工 < jinkou\ ;
+乱暴 < ranbou\ ;
+望樓 < bourou\ ;
+三猿 < mizaru\ ;
+論陣 < ronjin\ ;
+伶人 < reijin\ ;
+謹言 < kingen\ ;
+朱書 < shusho\ ;
+館娃 < kan''ai\ ;
+片輪 < katawa\ ;
+安値 < yasune\ ;
+本来 < honrai\ ;
+明言 < meigen\ ;
+翰林 < kanrin\ ;
+令堂 < reidou\ ;
+万状 < banjou\ ;
+宗主 < soushu\ ;
+霊魂 < reikon\ ;
+本木 < motoki\ ;
+本望 < honmou\ ;
+罹病 < ribyou\ ;
+願状 < ganjou\ ;
+末末 < suezue\ ;
+百合根 < yurine\ ;
+子嚢 < shinou\ ;
+二手 < futate\ ;
+乱数 < ransuu\ ;
+春蚕 < harugo\ ;
+木末 < konure\ ;
+肌合 < hadaai\ ;
+王朝 < ouchou\ ;
+雷鳴 < raimei\ ;
+任命 < ninmei\ ;
+什宝 < juuhou\ ;
+人屋 < hitoya\ ;
+朦朧 < mourou\ ;
+朦朦 < moumou\ ;
+中洲 < nakasu\ ;
+賛嘆 < santan\ ;
+日足 < hiashi\ ;
+斜陽 < shayou\ ;
+大風 < ookaze\ ;
+奪還 < dakkan\ ;
+音締 < nejime\ ;
+天顔 < tengan\ ;
+物見 < monomi\ ;
+阿羅漢 < arakan\ ;
+学務 < gakumu\ ;
+替歌 < kaeuta\ ;
+存命 < zonmei\ ;
+奮迅 < funjin\ ;
+賭博 < tobaku\ ;
+杉戸 < sugido\ ;
+貧寒 < hinkan\ ;
+有様 < ariyou\ ;
+本文 < honmon\ ;
+来店 < raiten\ ;
+本数 < honsuu\ ;
+斧鑿 < fusaku\ ;
+来年 < rainen\ ;
+文題 < bundai\ ;
+王族 < ouzoku\ ;
+五徳 < gotoku\ ;
+万点 < manten\ ;
+今夜 < kon''ya\ ;
+中気 < chuuki\ ;
+伝令 < denrei\ ;
+仏塔 < buttou\ ;
+霜雰 < soufun\ ;
+頭痛 < zutsuu\ ;
+主権 < shuken\ ;
+雷魚 < raigyo\ ;
+万灯 < mandou\ ;
+財宝 < zaihou\ ;
+夜風 < yokaze\ ;
+貪婪 < donran\ ;
+伐倒 < battou\ ;
+野路子 < nojiko\ ;
+現地 < genchi\ ;
+猛犬 < mouken\ ;
+天雷 < tenrai\ ;
+朝晩 < asaban\ ;
+他国 < takoku\ ;
+仮名 < kemyou\ ;
+風景 < fuukei\ ;
+論鋒 < ronpou\ ;
+文面 < bunmen\ ;
+伎倆 < giryou\ ;
+餃子 < gyouza\ ;
+学兄 < gakkei\ ;
+犯罪 < hanzai\ ;
+大難 < tainan\ ;
+中欧 < chuuou\ ;
+伝世 < densei\ ;
+多額 < tagaku\ ;
+天険 < tenken\ ;
+会主 < kaishu\ ;
+東宮 < touguu\ ;
+聖域 < seiiki\ ;
+代品 < daihin\ ;
+頓知 < tonchi\ ;
+夕顔 < yuugao\ ;
+乱戦 < ransen\ ;
+考慮 < kouryo\ ;
+介在 < kaizai\ ;
+整風 < seifuu\ ;
+任免 < ninmen\ ;
+存分 < zonbun\ ;
+令名 < reimei\ ;
+飲屋 < nomiya\ ;
+人外 < ningai\ ;
+斧鉞 < fuetsu\ ;
+夜霧 < yogiri\ ;
+猛然 < mouzen\ ;
+人士 < jinshi\ ;
+面貌 < menbou\ ;
+販売 < hanbai\ ;
+主根 < shukon\ ;
+大関 < oozeki\ ;
+旧詠 < kyuuei\ ;
+今回 < konkai\ ;
+日誌 < nisshi\ ;
+早計 < soukei\ ;
+代参 < daisan\ ;
+大門 < daimon\ ;
+本拠 < honkyo\ ;
+有望 < yuubou\ ;
+整頓 < seiton\ ;
+旧記 < kyuuki\ ;
+妄言 < mougen\ ;
+旅路 < tabiji\ ;
+豪快 < goukai\ ;
+早見 < hayami\ ;
+電顕 < denken\ ;
+外電 < gaiden\ ;
+板塀 < itabei\ ;
+片言 < hengen\ ;
+罪状 < zaijou\ ;
+玩弄 < ganrou\ ;
+奉遷 < housen\ ;
+本懐 < honkai\ ;
+丹朱 < tanshu\ ;
+丸木 < maruki\ ;
+学事 < gakuji\ ;
+月旦 < gettan\ ;
+夜長 < yonaga\ ;
+面談 < mendan\ ;
+奉迎 < hougei\ ;
+有数 < yuusuu\ ;
+媒染 < baisen\ ;
+繁閑 < hankan\ ;
+仲値 < nakane\ ;
+上水 < jousui\ ;
+誘電 < yuuden\ ;
+晴着 < haregi\ ;
+罰点 < batten\ ;
+大鎌 < oogama\ ;
+亡妻 < bousai\ ;
+青豆 < aomame\ ;
+貧困 < hinkon\ ;
+仲保 < chuuho\ ;
+珍奇 < chinki\ ;
+大鍋 < oonabe\ ;
+最早 < mohaya\ ;
+万民 < banmin\ ;
+乗手 < norite\ ;
+仏参 < bussan\ ;
+一泊 < ippaku\ ;
+主文 < shubun\ ;
+現勢 < gensei\ ;
+老幼 < rouyou\ ;
+老年 < rounen\ ;
+三死 < sanshi\ ;
+他力 < tariki\ ;
+本性 < honsei\ ;
+翻弄 < honrou\ ;
+財団 < zaidan\ ;
+誌面 < shimen\ ;
+万死 < banshi\ ;
+万歳 < manzai\ ;
+子供 < kodomo\ ;
+存亡 < sonbou\ ;
+二子 < futago\ ;
+土下座 < dogeza\ ;
+順番 < junban\ ;
+雲集 < unshuu\ ;
+雲雀 < hibari\ ;
+現前 < genzen\ ;
+介卵 < kairan\ ;
+大鉈 < oonata\ ;
+難題 < nandai\ ;
+本影 < hon''ei\ ;
+並木 < namiki\ ;
+斜辺 < shahen\ ;
+賢主 < kenshu\ ;
+書斎 < shosai\ ;
+羊毛 < youmou\ ;
+大金 < taikin\ ;
+仁君 < jinkun\ ;
+不様 < buzama\ ;
+人員 < jin''in\ ;
+中日 < nakabi\ ;
+末弟 < mattei\ ;
+人品 < jinpin\ ;
+三権 < sanken\ ;
+一次 < ichiji\ ;
+熱風 < neppuu\ ;
+上様 < uezama\ ;
+大酒 < oozake\ ;
+人命 < jinmei\ ;
+縦陣 < juujin\ ;
+嫁御 < yomego\ ;
+賞与 < shouyo\ ;
+本店 < honten\ ;
+雲間 < kumoma\ ;
+始終 < shijuu\ ;
+論賛 < ronsan\ ;
+仏典 < butten\ ;
+三業 < sangou\ ;
+代任 < dainin\ ;
+羨望 < senbou\ ;
+試験 < shiken\ ;
+世柄 < yogara\ ;
+語録 < goroku\ ;
+天道 < tendou\ ;
+人参 < ninjin\ ;
+天運 < ten''un\ ;
+一樹 < ichiju\ ;
+今冬 < kontou\ ;
+大道 < daidou\ ;
+慰安者 < iansha\ ;
+離隔 < rikaku\ ;
+暴民 < boumin\ ;
+離陸 < ririku\ ;
+老害 < rougai\ ;
+文選 < bunsen\ ;
+木工 < mokkou\ ;
+乱射 < ransha\ ;
+天辺 < teppen\ ;
+責務 < sekimu\ ;
+文運 < bun''un\ ;
+旅装 < ryosou\ ;
+方言 < hougen\ ;
+三桁 < miketa\ ;
+老嬢 < roujou\ ;
+聖像 < seizou\ ;
+旅行 < ryokou\ ;
+難関 < nankan\ ;
+新語 < shingo\ ;
+大輪 < tairin\ ;
+本山 < honzan\ ;
+天軍 < tengun\ ;
+三枚 < sanmai\ ;
+板前 < itamae\ ;
+現代 < gendai\ ;
+頻死 < hinshi\ ;
+本屋 < hon''ya\ ;
+三板 < sanpan\ ;
+類本 < ruihon\ ;
+声門 < seimon\ ;
+現今 < genkon\ ;
+享受 < kyouju\ ;
+風師 < fuushi\ ;
+類書 < ruisho\ ;
+本尊 < honzon\ ;
+上期 < kamiki\ ;
+熱闘 < nettou\ ;
+珍味 < chinmi\ ;
+書房 < shobou\ ;
+一案 < ichian\ ;
+三本 < sanbon\ ;
+養分 < youbun\ ;
+豪奢 < gousha\ ;
+改題 < kaidai\ ;
+上書 < jousho\ ;
+木屑 < kikuzu\ ;
+仏会 < butsue\ ;
+亡命 < boumei\ ;
+断言 < dangen\ ;
+外遊 < gaiyuu\ ;
+玉屋 < tamaya\ ;
+仕上 < shiage\ ;
+願望 < ganmou\ ;
+爬虫 < hachuu\ ;
+献本 < kenpon\ ;
+最悪 < saiaku\ ;
+独演 < dokuen\ ;
+願書 < gansho\ ;
+末孫 < masson\ ;
+暗流 < anryuu\ ;
+末子 < masshi\ ;
+翠嵐 < suiran\ ;
+食器 < shokki\ ;
+大足 < ooashi\ ;
+亡友 < bouyuu\ ;
+今今 < imaima\ ;
+今人 < konjin\ ;
+聖人 < seijin\ ;
+獣性 < juusei\ ;
+雲量 < unryou\ ;
+上旬 < joujun\ ;
+一朝 < itchou\ ;
+夢路 < yumeji\ ;
+一服 < ippuku\ ;
+談論 < danron\ ;
+両拳 < janken\ ;
+飯台 < handai\ ;
+日航 < nikkou\ ;
+罷業 < higyou\ ;
+人偏 < ninben\ ;
+外輪 < gairin\ ;
+天賜 < tenshi\ ;
+三方 < sanpou\ ;
+青藍 < seiran\ ;
+韲物 < aemono\ ;
+主従 < shujuu\ ;
+断裁 < dansai\ ;
+人倫 < jinrin\ ;
+請訓 < seikun\ ;
+猥本 < waihon\ ;
+乾坤 < kenkon\ ;
+乱売 < ranbai\ ;
+変遷 < hensen\ ;
+題材 < daizai\ ;
+外車 < gaisha\ ;
+両手 < ryoute\ ;
+七日 < nanoka\ ;
+変造 < henzou\ ;
+願文 < ganmon\ ;
+奉行 < bugyou\ ;
+仁人 < jinjin\ ;
+本妻 < honsai\ ;
+風害 < fuugai\ ;
+嫉妬 < shitto\ ;
+謝罪 < shazai\ ;
+人体 < nintei\ ;
+文豪 < bungou\ ;
+施薬 < seyaku\ ;
+斜視 < shashi\ ;
+数軒 < suuken\ ;
+罪業 < zaigou\ ;
+電車 < densha\ ;
+類推 < ruisui\ ;
+変転 < henten\ ;
+一擲 < itteki\ ;
+猛暑 < mousho\ ;
+諸芸 < shogei\ ;
+予告 < yokoku\ ;
+書店 < shoten\ ;
+本塁 < honrui\ ;
+燻製 < kunsei\ ;
+離郷 < rikyou\ ;
+絵日記 < enikki\ ;
+青草 < aokusa\ ;
+外貌 < gaibou\ ;
+中座 < chuuza\ ;
+罰杯 < bappai\ ;
+頸木 < kubiki\ ;
+乙夜 < otsuya\ ;
+頓死 < tonshi\ ;
+春着 < harugi\ ;
+編隊 < hentai\ ;
+読誦 < dokuju\ ;
+京人 < keijin\ ;
+猛攻 < moukou\ ;
+二割 < niwari\ ;
+木型 < kigata\ ;
+望外 < bougai\ ;
+暮春 < boshun\ ;
+主導 < shudou\ ;
+娯楽 < goraku\ ;
+陀羅尼 < darani\ ;
+暴政 < bousei\ ;
+誤謬 < gobyuu\ ;
+亀卜 < kiboku\ ;
+読解 < dokkai\ ;
+主宰 < shusai\ ;
+王国 < oukoku\ ;
+多読 < tadoku\ ;
+乗場 < noriba\ ;
+夢見 < yumemi\ ;
+両度 < ryoudo\ ;
+頻数 < hinsuu\ ;
+誤読 < godoku\ ;
+晦渋 < kaijuu\ ;
+不惑 < fuwaku\ ;
+敗軍 < haigun\ ;
+来会 < raikai\ ;
+一手 < hitote\ ;
+羅方位 < rahoui\ ;
+来任 < rainin\ ;
+曾孫 < himago\ ;
+誤訳 < goyaku\ ;
+朗報 < rouhou\ ;
+多角 < takaku\ ;
+万感 < bankan\ ;
+奈落 < naraku\ ;
+夜襲 < yashuu\ ;
+犠牛 < gigyuu\ ;
+春画 < shunga\ ;
+条件 < jouken\ ;
+散財 < sanzai\ ;
+随順 < zuijun\ ;
+来世 < raisei\ ;
+縦貫 < juukan\ ;
+不徳 < futoku\ ;
+緑雨 < ryokuu\ ;
+外見 < sotomi\ ;
+昏睡 < konsui\ ;
+詩選 < shisen\ ;
+面繋 < omogai\ ;
+新芽 < shinme\ ;
+数詞 < suushi\ ;
+明眸 < meibou\ ;
+頭数 < tousuu\ ;
+暴挙 < boukyo\ ;
+隔離 < kakuri\ ;
+本命 < honmei\ ;
+類形 < ruikei\ ;
+中子 < nakago\ ;
+曳子 < hikiko\ ;
+天蚕 < tensan\ ;
+女給 < jokyuu\ ;
+電解 < denkai\ ;
+月報 < geppou\ ;
+最大 < saidai\ ;
+燻蒸 < kunjou\ ;
+云云 < un''nun\ ;
+隙間 < sukima\ ;
+最外 < saigai\ ;
+改造 < kaizou\ ;
+大虎 < oodora\ ;
+陵駕 < ryouga\ ;
+売買 < baibai\ ;
+丸太 < maruta\ ;
+村会 < sonkai\ ;
+美徳 < bitoku\ ;
+未収 < mishuu\ ;
+一応 < ichiou\ ;
+服地 < fukuji\ ;
+謝礼 < sharei\ ;
+木叢 < komura\ ;
+一徳 < ittoku\ ;
+二人 < futari\ ;
+老兵 < rouhei\ ;
+獄屋 < gokuya\ ;
+煎餅 < senbei\ ;
+上帯 < uwaobi\ ;
+雑踏 < zattou\ ;
+文藻 < bunsou\ ;
+熱賛 < nessan\ ;
+教護 < kyougo\ ;
+乳児 < nyuuji\ ;
+群居 < gunkyo\ ;
+纏綿 < tenmen\ ;
+異体字 < itaiji\ ;
+猛悪 < mouaku\ ;
+大蔵 < ookura\ ;
+万巻 < mangan\ ;
+日程 < nittei\ ;
+丁度 < choudo\ ;
+天蓋 < tengai\ ;
+教諭 < kyouyu\ ;
+一座 < ichiza\ ;
+乗合 < noriai\ ;
+音標 < onpyou\ ;
+乗号 < jougou\ ;
+暴悪 < bouaku\ ;
+風向 < fuukou\ ;
+本分 < honbun\ ;
+救護 < kyuugo\ ;
+縦覧 < juuran\ ;
+服喪 < fukumo\ ;
+木剣 < bokken\ ;
+大著 < taicho\ ;
+擬革 < gikaku\ ;
+論者 < ronsha\ ;
+論考 < ronkou\ ;
+音楽 < ongaku\ ;
+朗吟 < rougin\ ;
+雪見 < yukimi\ ;
+乱倫 < ranrin\ ;
+雲表 < unpyou\ ;
+牛皮 < gyuuhi\ ;
+上層 < jousou\ ;
+難訓 < nankun\ ;
+老体 < routai\ ;
+陸離 < rikuri\ ;
+断罪 < danzai\ ;
+訓電 < kunden\ ;
+牢番 < rouban\ ;
+時流 < jiryuu\ ;
+斬罪 < zanzai\ ;
+旅籠 < hatago\ ;
+晴朗 < seirou\ ;
+三封 < sanpuu\ ;
+熱誠 < nessei\ ;
+三寸 < sanzun\ ;
+老人 < roujin\ ;
+晴曇 < seidon\ ;
+風前 < fuuzen\ ;
+陣風 < jinpuu\ ;
+集貨 < shuuka\ ;
+隧道 < suidou\ ;
+最善 < saizen\ ;
+罪悪 < zaiaku\ ;
+暖房 < danbou\ ;
+敬虔 < keiken\ ;
+隣邦 < rinpou\ ;
+乱交 < rankou\ ;
+老中 < roujuu\ ;
+女神 < megami\ ;
+青筋 < aosuji\ ;
+諸種 < shoshu\ ;
+朋友 < houyuu\ ;
+文芸 < bungei\ ;
+陰陽 < on''you\ ;
+丁寧 < teinei\ ;
+一対 < ittsui\ ;
+義塾 < gijuku\ ;
+大船 < oobune\ ;
+青竹 < aodake\ ;
+革砥 < kawato\ ;
+雑誌 < zasshi\ ;
+片眼 < katame\ ;
+断線 < dansen\ ;
+乱世 < ransei\ ;
+熟議 < jukugi\ ;
+隠逸 < initsu\ ;
+大臣 < daijin\ ;
+美学 < bigaku\ ;
+政論 < seiron\ ;
+服務 < fukumu\ ;
+青空 < aozora\ ;
+有半 < yuuhan\ ;
+雑言 < zougon\ ;
+同意語 < douigo\ ;
+下姓 < geshou\ ;
+妙王 < myouou\ ;
+旅程 < ryotei\ ;
+奉納 < hounou\ ;
+熟語 < jukugo\ ;
+狙撃 < sogeki\ ;
+猶太 < yudaya\ ;
+夜船 < yofune\ ;
+大胆 < daitan\ ;
+上天 < jouten\ ;
+早産 < souzan\ ;
+大股 < oomata\ ;
+最南 < sainan\ ;
+天聞 < tenbun\ ;
+訴追 < sotsui\ ;
+詠誦 < eishou\ ;
+晦日 < misoka\ ;
+記録 < kiroku\ ;
+書名 < shomei\ ;
+万天 < banten\ ;
+中和 < chuuwa\ ;
+改訂 < kaitei\ ;
+日産 < nissan\ ;
+面相 < mensou\ ;
+評議 < hyougi\ ;
+大老 < tairou\ ;
+風体 < fuutei\ ;
+牝牛 < meushi\ ;
+増配 < zouhai\ ;
+一女 < ichijo\ ;
+上場 < joujou\ ;
+大群 < taigun\ ;
+院長 < inchou\ ;
+中句 < chuuku\ ;
+三塁 < sanrui\ ;
+隻語 < sekigo\ ;
+曇天 < donten\ ;
+月光 < gekkou\ ;
+霊能 < reinou\ ;
+姻族 < inzoku\ ;
+丹前 < tanzen\ ;
+丸剤 < ganzai\ ;
+一夢 < ichimu\ ;
+最初 < saisho\ ;
+一夜 < hitoyo\ ;
+万場 < manjou\ ;
+諸相 < shosou\ ;
+奇策 < kisaku\ ;
+婚姻 < kon''in\ ;
+与圧 < yoatsu\ ;
+熔解 < youkai\ ;
+多肉 < taniku\ ;
+暗幕 < anmaku\ ;
+隆運 < ryuuun\ ;
+韋駄天 < idaten\ ;
+誘致 < yuuchi\ ;
+暖帯 < dantai\ ;
+下国 < gekoku\ ;
+暫定 < zantei\ ;
+断種 < danshu\ ;
+独往 < dokuou\ ;
+三囲 < mitsui\ ;
+外聞 < gaibun\ ;
+特派 < tokuha\ ;
+主傘 < shusan\ ;
+為政家 < iseika\ ;
+天網 < tenmou\ ;
+陶酔 < tousui\ ;
+書写 < shosha\ ;
+二度目 < nidome\ ;
+獄吏 < gokuri\ ;
+独座 < dokuza\ ;
+一国 < ikkoku\ ;
+領布 < ryoufu\ ;
+片片 < henpen\ ;
+一因 < ichiin\ ;
+霧笛 < muteki\ ;
+陸運 < rikuun\ ;
+無闇 < muyami\ ;
+雄蜂 < obachi\ ;
+絹雲 < ken''un\ ;
+煮豆 < nimame\ ;
+熔融 < youyuu\ ;
+主体 < shutai\ ;
+訓連 < kunren\ ;
+万善 < manzen\ ;
+文系 < bunkei\ ;
+施療 < seryou\ ;
+主任 < shunin\ ;
+敬老 < keirou\ ;
+順当 < juntou\ ;
+陽転 < youten\ ;
+日焼 < hiyake\ ;
+上品 < joubon\ ;
+主人 < shujin\ ;
+雄蘂 < yuuzui\ ;
+難船 < nansen\ ;
+隆起 < ryuuki\ ;
+姻戚 < inseki\ ;
+類同 < ruidou\ ;
+誦経 < zukyou\ ;
+早瀬 < hayase\ ;
+書体 < shotai\ ;
+緒論 < choron\ ;
+主上 < shujou\ ;
+最中 < monaka\ ;
+雑菌 < zakkin\ ;
+文範 < bunpan\ ;
+新盆 < niibon\ ;
+増資 < zoushi\ ;
+最上 < mogami\ ;
+大筋 < oosuji\ ;
+媒体 < baitai\ ;
+爆破 < bakuha\ ;
+独居 < dokkyo\ ;
+特権 < tokken\ ;
+訳語 < yakugo\ ;
+中佐 < chuusa\ ;
+万口 < bankou\ ;
+雑草 < zassou\ ;
+上半 < jouhan\ ;
+陸路 < rikuro\ ;
+媒介 < baikai\ ;
+天空 < tenkuu\ ;
+緒言 < chogen\ ;
+需給 < jukyuu\ ;
+与力 < yoriki\ ;
+大空 < oozora\ ;
+外米 < gaimai\ ;
+天稟 < tenpin\ ;
+中二 < chuuni\ ;
+奇癖 < kiheki\ ;
+敏腕 < binwan\ ;
+天秤 < tenbin\ ;
+索麺 < soumen\ ;
+群像 < gunzou\ ;
+奮然 < funzen\ ;
+万劫 < mangou\ ;
+上前 < uwamae\ ;
+雌花 < mebana\ ;
+奇病 < kibyou\ ;
+青物 < aomono\ ;
+天神 < tenjin\ ;
+然迄 < samade\ ;
+題名 < daimei\ ;
+題号 < daigou\ ;
+大祭 < taisai\ ;
+三分 < sanpun\ ;
+義侠 < gikyou\ ;
+総裏 < souura\ ;
+物権 < bukken\ ;
+夜空 < yozora\ ;
+総裁 < sousai\ ;
+無量 < muryou\ ;
+雀荘 < jansou\ ;
+緊褌 < kinkon\ ;
+世俗 < sezoku\ ;
+牛歩 < gyuuho\ ;
+旧派 < kyuuha\ ;
+羅北 < rahoku\ ;
+細魚 < sayori\ ;
+下僕 < geboku\ ;
+大砲 < taihou\ ;
+数等 < suutou\ ;
+女滝 < medaki\ ;
+警手 < keishu\ ;
+随行 < zuikou\ ;
+如法 < nyohou\ ;
+一円 < ichien\ ;
+一具 < ichigu\ ;
+数寄屋 < sukiya\ ;
+編著 < hencho\ ;
+爛爛 < ranran\ ;
+暖地 < danchi\ ;
+綸言 < ringen\ ;
+放胆 < houtan\ ;
+訓諭 < kun''yu\ ;
+読破 < dokuha\ ;
+三倍 < sanbai\ ;
+猛勇 < mouyuu\ ;
+類例 < ruirei\ ;
+訓誡 < kunkai\ ;
+謹書 < kinsho\ ;
+明朗 < meirou\ ;
+天盃 < tenpai\ ;
+暴動 < boudou\ ;
+堤防 < teibou\ ;
+討論 < touron\ ;
+日毎 < higoto\ ;
+不仲 < funaka\ ;
+大皿 < oozara\ ;
+三体 < santai\ ;
+同意義 < douigi\ ;
+文盲 < monmou\ ;
+熱線 < nessen\ ;
+熟考 < jukkou\ ;
+猟具 < ryougu\ ;
+墓表 < bohyou\ ;
+昵懇 < jikkon\ ;
+女流 < joryuu\ ;
+霊知 < reichi\ ;
+上代 < joudai\ ;
+奇特 < kidoku\ ;
+美俗 < bizoku\ ;
+易断 < ekidan\ ;
+不乙 < fuitsu\ ;
+罪名 < zaimei\ ;
+昏昏 < konkon\ ;
+雑纂 < zassan\ ;
+妙案 < myouan\ ;
+女波 < menami\ ;
+離籍 < riseki\ ;
+明断 < meidan\ ;
+敬礼 < keirei\ ;
+雷神 < raijin\ ;
+調理 < chouri\ ;
+断然 < danzen\ ;
+明敏 < meibin\ ;
+版権 < hanken\ ;
+烈風 < reppuu\ ;
+万万 < manman\ ;
+言論 < genron\ ;
+陸行 < rikkou\ ;
+大生 < daisei\ ;
+雀羅 < jakura\ ;
+丁亥 < teigai\ ;
+議席 < giseki\ ;
+美事 < migoto\ ;
+姑息 < kosoku\ ;
+繁盛 < hanjou\ ;
+一人 < hitori\ ;
+放縦 < houjuu\ ;
+論点 < ronten\ ;
+詩編 < shihen\ ;
+日様 < hisama\ ;
+陪観 < baikan\ ;
+一二 < ichini\ ;
+素首 < sokubi\ ;
+爛漫 < ranman\ ;
+特措 < tokuso\ ;
+試練 < shiren\ ;
+言訳 < iiwake\ ;
+培養 < baiyou\ ;
+言言 < gengen\ ;
+総菜 < souzai\ ;
+多病 < tabyou\ ;
+撤退 < tettai\ ;
+改編 < kaihen\ ;
+無賃 < muchin\ ;
+雄編 < yuuhen\ ;
+縁組 < engumi\ ;
+特技 < tokugi\ ;
+教祖 < kyouso\ ;
+物損 < busson\ ;
+要項 < youkou\ ;
+罰俸 < bappou\ ;
+姉弟 < shimai\ ;
+離礁 < rishou\ ;
+音域 < on''iki\ ;
+報道 < houdou\ ;
+旭暉 < kyokki\ ;
+絶賛 < zessan\ ;
+如来 < nyorai\ ;
+大物 < oomono\ ;
+露滴 < roteki\ ;
+続行 < zokkou\ ;
+版本 < hanpon\ ;
+暖冬 < dantou\ ;
+電番 < denban\ ;
+大袈裟 < oogesa\ ;
+早晩 < souban\ ;
+霊獣 < reijuu\ ;
+編纂 < hensan\ ;
+新派 < shinpa\ ;
+雑種 < zasshu\ ;
+雪目 < yukime\ ;
+旧時 < kyuuji\ ;
+誕生 < tanjou\ ;
+昼寝 < hirune\ ;
+事務屋 < jimuya\ ;
+浮世絵 < ukiyoe\ ;
+特恵 < tokkei\ ;
+煙草 < tabako\ ;
+琵琶湖 < biwako\ ;
+謄本 < touhon\ ;
+改竄 < kaizan\ ;
+特快 < tokkai\ ;
+事務家 < jimuka\ ;
+日数 < hikazu\ ;
+断水 < dansui\ ;
+妙技 < myougi\ ;
+妻帯 < saitai\ ;
+威喝 < ikatsu\ ;
+煎茶 < sencha\ ;
+雷獣 < raijuu\ ;
+青桐 < aogiri\ ;
+大潮 < ooshio\ ;
+陶芸 < tougei\ ;
+旗日 < hatabi\ ;
+青柳 < aoyagi\ ;
+設置 < setchi\ ;
+物性 < bussei\ ;
+暗中 < anchuu\ ;
+昼夜 < chuuya\ ;
+言葉 < kotoba\ ;
+紡錘 < bousui\ ;
+外灯 < gaitou\ ;
+埼銀 < saigin\ ;
+不可避 < fukahi\ ;
+間鴨 < aigamo\ ;
+霧氷 < muhyou\ ;
+春季 < shunki\ ;
+増置 < zouchi\ ;
+綾羅 < ryoura\ ;
+狂句 < kyouku\ ;
+陳腐 < chinpu\ ;
+報謝 < housha\ ;
+煩累 < hanrui\ ;
+片手 < katate\ ;
+片戸 < katado\ ;
+斑気 < muraki\ ;
+敦煌 < tonkou\ ;
+大波 < oonami\ ;
+断案 < dan''an\ ;
+天水 < tensui\ ;
+外湯 < sotoyu\ ;
+晦冥 < kaimei\ ;
+教父 < kyoufu\ ;
+純銀 < jungin\ ;
+大水 < oomizu\ ;
+外港 < gaikou\ ;
+説法 < seppou\ ;
+見込 < mikomi\ ;
+訪米 < houbei\ ;
+細身 < hosomi\ ;
+文民 < bunmin\ ;
+炭鉱 < tankou\ ;
+旧恩 < kyuuon\ ;
+純金 < junkin\ ;
+事務器 < jimuki\ ;
+夜泊 < yahaku\ ;
+方方 < houbou\ ;
+綿糸 < menshi\ ;
+旨念 < shinen\ ;
+操船 < sousen\ ;
+綾糸 < ayaito\ ;
+電源 < dengen\ ;
+妄念 < mounen\ ;
+西遊 < seiyuu\ ;
+奮戦 < funsen\ ;
+炭酸 < tansan\ ;
+納金 < noukin\ ;
+納采 < nousai\ ;
+観覧 < kanran\ ;
+諸手 < morote\ ;
+音信 < onshin\ ;
+精魂 < seikon\ ;
+夜毎 < yogoto\ ;
+散漫 < sanman\ ;
+緩目 < yurume\ ;
+片影 < hen''ei\ ;
+妄弁 < bouben\ ;
+霊殿 < reiden\ ;
+既得 < kitoku\ ;
+論旨 < ronshi\ ;
+精髄 < seizui\ ;
+御洒落 < oshare\ ;
+事務員 < jimuin\ ;
+埴輪 < haniwa\ ;
+論断 < rondan\ ;
+論文 < ronbun\ ;
+煙管 < kiseru\ ;
+調査 < chousa\ ;
+植木屋 < uekiya\ ;
+無臭 < mushuu\ ;
+靱帯 < jintai\ ;
+明大 < meidai\ ;
+閉館 < heikan\ ;
+諸悪 < shoaku\ ;
+壁画 < hekiga\ ;
+素足 < suashi\ ;
+敵歩 < tekifu\ ;
+雄犬 < osuinu\ ;
+増税 < zouzei\ ;
+墾田 < konden\ ;
+改版 < kaihan\ ;
+父御 < tetego\ ;
+不可誤 < fukago\ ;
+関門 < kanmon\ ;
+大根 < daikon\ ;
+雑炊 < zousui\ ;
+夜業 < yagyou\ ;
+細論 < sairon\ ;
+牧夫 < bokufu\ ;
+文案 < bun''an\ ;
+旅情 < ryojou\ ;
+変死 < henshi\ ;
+外様 < tozama\ ;
+大柄 < oogara\ ;
+御釈迦 < oshaka\ ;
+諸彦 < shogen\ ;
+間際 < magiwa\ ;
+無聊 < buryou\ ;
+長駆 < chouku\ ;
+雲母 < kirara\ ;
+早寝 < hayane\ ;
+西貢 < saigon\ ;
+教派 < kyouha\ ;
+操縦 < soujuu\ ;
+大本 < taihon\ ;
+大望 < taimou\ ;
+論拠 < ronkyo\ ;
+日射 < nissha\ ;
+奉拝 < houhai\ ;
+牧場 < makiba\ ;
+計算 < keisan\ ;
+除籍 < joseki\ ;
+糸遊 < itoyuu\ ;
+難治 < nanchi\ ;
+墨痕 < bokkon\ ;
+印字機 < injiki\ ;
+論戦 < ronsen\ ;
+天明 < tenmei\ ;
+墓石 < boseki\ ;
+墨画 < bokuga\ ;
+難民 < nanmin\ ;
+素読 < sodoku\ ;
+要諦 < youtei\ ;
+天文 < tenmon\ ;
+大方 < ookata\ ;
+硫黄泉 < iousen\ ;
+開門 < kaimon\ ;
+練炭 < rentan\ ;
+閉門 < heimon\ ;
+増益 < zoueki\ ;
+外来 < gairai\ ;
+闇路 < yamiji\ ;
+外材 < gaizai\ ;
+門院 < mon''in\ ;
+納豆 < nattou\ ;
+門限 < mongen\ ;
+方形 < houkei\ ;
+文政 < bunsei\ ;
+女官 < nyokan\ ;
+無給 < mukyuu\ ;
+早大 < soudai\ ;
+要覧 < youran\ ;
+雛段 < suudan\ ;
+面子 < mentsu\ ;
+数枚 < suumai\ ;
+雨樋 < amadoi\ ;
+雄渾 < yuukon\ ;
+複音 < fukuon\ ;
+明君 < meikun\ ;
+険相 < kensou\ ;
+特務 < tokumu\ ;
+物品 < buppin\ ;
+増産 < zousan\ ;
+損金 < sonkin\ ;
+長閑 < nodoka\ ;
+語族 < gozoku\ ;
+偉丈夫 < ijoufu\ ;
+論弁 < ronben\ ;
+日報 < nippou\ ;
+門鑑 < monkan\ ;
+堕落 < daraku\ ;
+関連 < kanren\ ;
+煮物 < nimono\ ;
+旅寝 < tabine\ ;
+陳皮 < chinpi\ ;
+布海苔 < funori\ ;
+紫蘭 < shiran\ ;
+開銀 < kaigin\ ;
+無策 < musaku\ ;
+謦咳 < keigai\ ;
+妥協 < dakyou\ ;
+大技 < oowaza\ ;
+精錬 < seiren\ ;
+旧土 < kyuudo\ ;
+電断 < dendan\ ;
+霰弾 < sandan\ ;
+教案 < kyouan\ ;
+妙味 < myoumi\ ;
+明初 < meisho\ ;
+絞罪 < kouzai\ ;
+昨今 < sakkon\ ;
+絨緞 < juutan\ ;
+方寸 < housun\ ;
+変改 < henkai\ ;
+零敗 < reihai\ ;
+奥妙 < oumyou\ ;
+散文 < sanbun\ ;
+散散 < sanzan\ ;
+土龍 < mogura\ ;
+縦断 < juudan\ ;
+謚号 < shigou\ ;
+女囚 < joshuu\ ;
+断定 < dantei\ ;
+論定 < rontei\ ;
+塵界 < jinkai\ ;
+論孟 < ronmou\ ;
+日和 < hiyori\ ;
+網状 < moujou\ ;
+大形 < oogyou\ ;
+慰安会 < iankai\ ;
+難文 < nanbun\ ;
+披露目 < hirome\ ;
+米飯 < beihan\ ;
+網版 < amihan\ ;
+売文 < baibun\ ;
+日向 < hinata\ ;
+精農 < seinou\ ;
+新婦 < shinpu\ ;
+防空 < boukuu\ ;
+天底 < tentei\ ;
+太平 < taihei\ ;
+奥地 < okuchi\ ;
+大店 < oodana\ ;
+雑書 < zassho\ ;
+閣議 < kakugi\ ;
+灰貝 < haigai\ ;
+大幅 < oohaba\ ;
+大師 < daishi\ ;
+結納 < yuinou\ ;
+旅団 < ryodan\ ;
+繁忙 < hanbou\ ;
+地髪 < jigami\ ;
+防禦 < bougyo\ ;
+細胞 < saibou\ ;
+日勤 < nikkin\ ;
+点茶 < tencha\ ;
+長途 < chouto\ ;
+予備馬 < yobiba\ ;
+気化器 < kikaki\ ;
+摘芽 < tekiga\ ;
+雄松 < omatsu\ ;
+早出 < hayade\ ;
+奇妙 < kimyou\ ;
+外径 < gaikei\ ;
+外征 < gaisei\ ;
+接頭 < settou\ ;
+訓点 < kunten\ ;
+武者絵 < mushae\ ;
+論外 < rongai\ ;
+夜店 < yomise\ ;
+絃線 < gensen\ ;
+諾否 < dakuhi\ ;
+無痛 < mutsuu\ ;
+無病 < mubyou\ ;
+壟断 < roudan\ ;
+片刃 < kataha\ ;
+敵影 < tekiei\ ;
+絹目 < kinume\ ;
+煮汁 < nijiru\ ;
+裾野 < susono\ ;
+夜市 < yoichi\ ;
+大山 < taizan\ ;
+諸君 < shokun\ ;
+霜害 < sougai\ ;
+改易 < kaieki\ ;
+壮挙 < soukyo\ ;
+紅葉 < momiji\ ;
+斎宮 < saiguu\ ;
+難所 < nansho\ ;
+奪取 < dasshu\ ;
+太守 < taishu\ ;
+斉射 < seisha\ ;
+変形 < henkei\ ;
+素肌 < suhada\ ;
+太字 < futoji\ ;
+天孫 < tenson\ ;
+雑損 < zasson\ ;
+日傘 < higasa\ ;
+革具 < kawagu\ ;
+面前 < menzen\ ;
+霊峰 < reihou\ ;
+隷書 < reisho\ ;
+角皮 < kakuhi\ ;
+数年 < suunen\ ;
+奮励 < funrei\ ;
+非力 < hiriki\ ;
+諭告 < yukoku\ ;
+風土記 < fudoki\ ;
+文官 < bunkan\ ;
+旬余 < jun''yo\ ;
+紅茶 < koucha\ ;
+細緻 < saichi\ ;
+埋蔵 < maizou\ ;
+霊山 < reizan\ ;
+裏門 < uramon\ ;
+電工 < denkou\ ;
+斜塔 < shatou\ ;
+夜寒 < yozamu\ ;
+塩煮 < shioni\ ;
+諸刃 < moroha\ ;
+埋葬 < maisou\ ;
+綿毛 < watage\ ;
+結社 < kessha\ ;
+褒貶 < houhen\ ;
+累累 < ruirui\ ;
+地霊 < chirei\ ;
+夜学 < yagaku\ ;
+日伊 < nichii\ ;
+角界 < kakkai\ ;
+敏感 < binkan\ ;
+敷居 < shikii\ ;
+炭肺 < tanhai\ ;
+煙毒 < endoku\ ;
+熱意 < netsui\ ;
+地階 < chikai\ ;
+旅券 < ryoken\ ;
+隣村 < rinson\ ;
+面倒 < mendou\ ;
+日中 < hinaka\ ;
+契合 < keigou\ ;
+霊媒 < reibai\ ;
+米銭 < beisen\ ;
+語学 < gogaku\ ;
+誘導 < yuudou\ ;
+雑感 < zakkan\ ;
+斎場 < saijou\ ;
+女体 < nyotai\ ;
+面体 < mentei\ ;
+奉呈 < houtei\ ;
+撃破 < gekiha\ ;
+面会 < menkai\ ;
+売店 < baiten\ ;
+論叢 < ronsou\ ;
+電子 < denshi\ ;
+爵位 < shakui\ ;
+女人 < nyonin\ ;
+絶版 < zeppan\ ;
+雪崩 < nadare\ ;
+紛紛 < funpun\ ;
+壮年 < sounen\ ;
+大型 < oogata\ ;
+純綿 < junmen\ ;
+塩湯 < shioyu\ ;
+女中 < jochuu\ ;
+門衛 < mon''ei\ ;
+垂訓 < suikun\ ;
+防犯 < bouhan\ ;
+熱帯 < nettai\ ;
+焚火 < takibi\ ;
+改悪 < kaiaku\ ;
+純系 < junkei\ ;
+奥伝 < okuden\ ;
+塩浴 < enyoku\ ;
+談合 < dangou\ ;
+霊域 < reiiki\ ;
+論判 < ronpan\ ;
+煮方 < nikata\ ;
+熊手 < kumade\ ;
+純粋 < junsui\ ;
+読図 < dokuzu\ ;
+火蓋 < hibuta\ ;
+調和 < chouwa\ ;
+調味 < choumi\ ;
+旅人 < ryojin\ ;
+総数 < sousuu\ ;
+雑巾 < zoukin\ ;
+隅木 < sumiki\ ;
+親疎 < shinso\ ;
+方便 < houben\ ;
+離宮 < rikyuu\ ;
+絢爛 < kenran\ ;
+御河童 < okappa\ ;
+外地 < gaichi\ ;
+塩気 < shioke\ ;
+接近 < sekkin\ ;
+雄弁 < yuuben\ ;
+米軍 < beigun\ ;
+改廃 < kaihai\ ;
+階数 < kaisuu\ ;
+地金 < jigane\ ;
+調印 < chouin\ ;
+籤運 < kujiun\ ;
+濁音 < dakuon\ ;
+大和 < yamato\ ;
+談判 < danpan\ ;
+長蛇 < chouda\ ;
+方今 < houkon\ ;
+紅粉 < beniko\ ;
+地酒 < jizake\ ;
+隻影 < sekiei\ ;
+土鍋 < donabe\ ;
+灰色 < haiiro\ ;
+天台 < tendai\ ;
+大君 < taikun\ ;
+陰核 < inkaku\ ;
+細目 < hosome\ ;
+提要 < teiyou\ ;
+火花 < hibana\ ;
+雑居 < zakkyo\ ;
+埋線 < maisen\ ;
+数回 < suukai\ ;
+奕世 < ekisei\ ;
+齦 < haguki\ ;
+大半 < taihan\ ;
+鼈 < suppon\ ;
+褐藻 < kassou\ ;
+黜 < chutsu\ ;
+無毒 < mudoku\ ;
+大匙 < oosaji\ ;
+絶海 < zekkai\ ;
+雄峰 < yuuhou\ ;
+納税 < nouzei\ ;
+土釜 < dogama\ ;
+大勢 < taizei\ ;
+緒戦 < chosen\ ;
+麓 < fumoto\ ;
+大勇 < taiyuu\ ;
+裳裾 < mosuso\ ;
+除核 < jokaku\ ;
+解毒 < gedoku\ ;
+陰暦 < inreki\ ;
+無欲 < muyoku\ ;
+誣告 < bukoku\ ;
+大分 < daibun\ ;
+大刀 < daitou\ ;
+雑婚 < zakkon\ ;
+損耗 < sonmou\ ;
+圧迫 < appaku\ ;
+大凡 < ooyoso\ ;
+随所 < zuisho\ ;
+雅客 < gakaku\ ;
+天兵 < tenpei\ ;
+鵥 < kakesu\ ;
+隠忍 < in''nin\ ;
+除服 < jofuku\ ;
+鴬 < uguisu\ ;
+大全 < taizen\ ;
+鴎 < kamome\ ;
+電命 < denmei\ ;
+補註 < hochuu\ ;
+摸牌 < moupai\ ;
+愛煙家 < aienka\ ;
+部屋着 < heyagi\ ;
+霊剣 < reiken\ ;
+数名 < suumei\ ;
+表音 < hyouon\ ;
+予備費 < yobihi\ ;
+外勤 < gaikin\ ;
+随感 < zuikan\ ;
+鱸 < suzuki\ ;
+炯眼 < keigan\ ;
+鱰 < shiira\ ;
+夜凪 < yonagi\ ;
+随想 < zuisou\ ;
+鰹 < katsuo\ ;
+推論 < suiron\ ;
+鰯 < iwashi\ ;
+変名 < henmei\ ;
+給油 < kyuuyu\ ;
+鰚 < haraka\ ;
+終焉 < shuuen\ ;
+鰆 < sawara\ ;
+熱型 < nekkei\ ;
+雷同 < raidou\ ;
+霧中 < muchuu\ ;
+鯱 < shachi\ ;
+鯰 < namazu\ ;
+鯨 < kujira\ ;
+鯣 < surume\ ;
+数千 < suusen\ ;
+数十 < suujuu\ ;
+要用 < youyou\ ;
+続映 < zokuei\ ;
+埴生 < hanyuu\ ;
+外出 < sotode\ ;
+雲呑 < wantan\ ;
+鮪 < maguro\ ;
+結滞 < kettai\ ;
+鮖 < kajika\ ;
+炉端 < robata\ ;
+雑報 < zappou\ ;
+累犯 < ruihan\ ;
+推計 < suikei\ ;
+照応 < shouou\ ;
+縫合 < hougou\ ;
+四隣 < shirin\ ;
+外典 < gaiten\ ;
+瀘過器 < rokaki\ ;
+四隅 < yosumi\ ;
+堅牢 < kenrou\ ;
+火縄 < hinawa\ ;
+変動 < hendou\ ;
+随従 < zuijuu\ ;
+雄大 < yuudai\ ;
+文例 < bunrei\ ;
+難問 < nanmon\ ;
+教唆 < kyousa\ ;
+探訪 < tanbou\ ;
+捻転 < nenten\ ;
+教員 < kyouin\ ;
+図録 < zuroku\ ;
+大代 < daidai\ ;
+補助員 < hojoin\ ;
+裏襟 < uraeri\ ;
+土足 < dosoku\ ;
+外債 < gaisai\ ;
+授賞 < jushou\ ;
+見物 < mimono\ ;
+天丼 < tendon\ ;
+大乱 < tairan\ ;
+照度 < shoudo\ ;
+文人 < bunjin\ ;
+大乗 < daijou\ ;
+売品 < baihin\ ;
+天与 < ten''yo\ ;
+地謡 < jiutai\ ;
+製茶 < seicha\ ;
+夜伽 < yotogi\ ;
+多作 < tasaku\ ;
+長者 < chouja\ ;
+売名 < baimei\ ;
+塊根 < kaikon\ ;
+焚書 < funsho\ ;
+摂生 < sessei\ ;
+関空 < kankuu\ ;
+無明 < mumyou\ ;
+比丘尼 < bikuni\ ;
+国運 < kokuun\ ;
+閉経 < heikei\ ;
+血餅 < keppei\ ;
+電停 < dentei\ ;
+数値 < suuchi\ ;
+関税 < kanzei\ ;
+数倍 < suubai\ ;
+夜中 < yonaka\ ;
+散兵 < sanpei\ ;
+外人 < gaijin\ ;
+壇場 < danjou\ ;
+捨身 < sutemi\ ;
+塗料 < toryou\ ;
+素焼 < suyaki\ ;
+煙幕 < enmaku\ ;
+外乱 < gairan\ ;
+雑品 < zappin\ ;
+解散 < kaisan\ ;
+擱座 < kakuza\ ;
+精精 < seizei\ ;
+絶景 < zekkei\ ;
+許容 < kyoyou\ ;
+地裁 < chisai\ ;
+精粉 < seifun\ ;
+鞐 < kohaze\ ;
+捕逸 < hoitsu\ ;
+救助 < kyuujo\ ;
+精米 < seimai\ ;
+改善 < kaizen\ ;
+圧覚 < akkaku\ ;
+数人 < suunin\ ;
+陰徳 < intoku\ ;
+火種 < hidane\ ;
+霞 < kasumi\ ;
+霙 < mizore\ ;
+設定 < settei\ ;
+詩吟 < shigin\ ;
+雛 < hiyoko\ ;
+累減 < ruigen\ ;
+純然 < junzen\ ;
+数万 < suuman\ ;
+変乱 < henran\ ;
+波止場 < hatoba\ ;
+陪従 < baijuu\ ;
+衣鉢 < ihatsu\ ;
+被覆 < hifuku\ ;
+炯炯 < keikei\ ;
+炭火 < sumibi\ ;
+国費 < kokuhi\ ;
+地虫 < mimizu\ ;
+回遊 < kaiyuu\ ;
+観桜 < kan''ou\ ;
+易動度 < idoudo\ ;
+垂範 < suihan\ ;
+難件 < nanken\ ;
+訓導 < kundou\ ;
+鑢 < yasuri\ ;
+絵図面 < ezumen\ ;
+敗亡 < haibou\ ;
+売人 < bainin\ ;
+潮間 < shioma\ ;
+裸婦画 < rafuga\ ;
+離乳 < rinyuu\ ;
+裏芸 < uragei\ ;
+回転 < kaiten\ ;
+場数 < bakazu\ ;
+火皿 < hizara\ ;
+歩一歩 < hoippo\ ;
+増大 < zoudai\ ;
+縁先 < ensaki\ ;
+三十路 < misoji\ ;
+売上 < uriage\ ;
+雑俳 < zappai\ ;
+国語 < kokugo\ ;
+錺 < kazari\ ;
+経書 < keisho\ ;
+改元 < kaigen\ ;
+換算 < kanzan\ ;
+粗粗 < araara\ ;
+炊爨 < suisan\ ;
+激語 < gekigo\ ;
+紡毛 < boumou\ ;
+無心 < mushin\ ;
+紫檀 < shitan\ ;
+縁側 < engawa\ ;
+不沙汰 < busata\ ;
+銍 < chitsu\ ;
+補習 < hoshuu\ ;
+陣屋 < jin''ya\ ;
+雑件 < zakken\ ;
+鉋 < kan''na\ ;
+不死身 < fujimi\ ;
+雑人 < zounin\ ;
+練兵 < renpei\ ;
+墓場 < hakaba\ ;
+雅俗 < gazoku\ ;
+醪 < moromi\ ;
+放任 < hounin\ ;
+加奈陀 < kanada\ ;
+推考 < suikou\ ;
+純毛 < junmou\ ;
+紅涙 < kourui\ ;
+素樸 < soboku\ ;
+噴飯 < funpan\ ;
+継子 < mamako\ ;
+純正 < junsei\ ;
+覇業 < hagyou\ ;
+火玉 < hidama\ ;
+訪問 < houmon\ ;
+長目 < nagame\ ;
+統御 < tougyo\ ;
+遖 < appare\ ;
+蟻食 < arikui\ ;
+搾油 < sakuyu\ ;
+以遠権 < ienken\ ;
+衿裏 < eriura\ ;
+補給 < hokyuu\ ;
+施餓鬼 < segaki\ ;
+評価 < hyouka\ ;
+門番 < monban\ ;
+図表 < zuhyou\ ;
+迚 < totemo\ ;
+米綿 < beimen\ ;
+塹壕 < zangou\ ;
+三重県 < mieken\ ;
+緑化 < ryokka\ ;
+陋屋 < rouoku\ ;
+地肌 < jihada\ ;
+防弾 < boudan\ ;
+御沙汰 < gosata\ ;
+言外 < gengai\ ;
+総勢 < souzei\ ;
+回訓 < kaikun\ ;
+結成 < kessei\ ;
+軈 < yagate\ ;
+約款 < yakkan\ ;
+躻 < utsuke\ ;
+躮 < segare\ ;
+撤廃 < teppai\ ;
+因襲 < inshuu\ ;
+米粉 < beifun\ ;
+煩労 < hanrou\ ;
+墨刑 < bokkei\ ;
+無学 < mugaku\ ;
+毛繻子 < kejusu\ ;
+描破 < byouha\ ;
+摘果 < tekika\ ;
+陰嚢 < fuguri\ ;
+踵 < kakato\ ;
+不同意 < fudoui\ ;
+拳銃 < kenjuu\ ;
+節酒 < sesshu\ ;
+噴門 < funmon\ ;
+表裏 < hyouri\ ;
+随分 < zuibun\ ;
+絶対 < zettai\ ;
+粗目 < zarame\ ;
+漢音 < kan''on\ ;
+指輪 < yubiwa\ ;
+粉砕 < funsai\ ;
+陰唇 < inshin\ ;
+隣人 < rinjin\ ;
+米突 < mētoru\ ;
+素敵 < suteki\ ;
+増刊 < zoukan\ ;
+増分 < zoubun\ ;
+潮路 < shioji\ ;
+術計 < jukkei\ ;
+納杯 < nouhai\ ;
+衆議 < shuugi\ ;
+点数 < tensuu\ ;
+納本 < nouhon\ ;
+拳道 < kondou\ ;
+陣営 < jin''ei\ ;
+紙数 < shisuu\ ;
+紛擾 < funjou\ ;
+門灯 < montou\ ;
+拠金 < kyokin\ ;
+門火 < kadobi\ ;
+絶好 < zekkou\ ;
+素描 < sobyou\ ;
+袱紗 < fukusa\ ;
+随伴 < zuihan\ ;
+提琴 < teikin\ ;
+記入 < kinyuu\ ;
+在米 < zaibei\ ;
+覚悟 < kakugo\ ;
+増俸 < zouhou\ ;
+増便 < zoubin\ ;
+訁 < gonben\ ;
+漏電 < rouden\ ;
+予備科 < yobika\ ;
+褐炭 < kattan\ ;
+掻痒 < souyou\ ;
+炉棚 < rodana\ ;
+境内 < keidai\ ;
+推知 < suichi\ ;
+火水 < himizu\ ;
+要所 < yousho\ ;
+地税 < chizei\ ;
+絹地 < kinuji\ ;
+江戸前 < edomae\ ;
+精液 < seieki\ ;
+探知 < tanchi\ ;
+器量 < kiryou\ ;
+蠍 < sasori\ ;
+長湯 < nagayu\ ;
+漸近 < zenkin\ ;
+院内 < in''nai\ ;
+場外 < jougai\ ;
+垂準 < suijun\ ;
+無告 < mukoku\ ;
+訓令 < kunrei\ ;
+累年 < ruinen\ ;
+圧神 < asshin\ ;
+米産 < beisan\ ;
+結婚 < kekkon\ ;
+納所 < nassho\ ;
+蛍 < hotaru\ ;
+撤回 < tekkai\ ;
+籠目 < kagome\ ;
+純愛 < jun''ai\ ;
+手鼻 < tebana\ ;
+長波 < chouha\ ;
+垂涎 < zuizen\ ;
+索引 < sakuin\ ;
+純情 < junjou\ ;
+絶品 < zeppin\ ;
+探番 < tanban\ ;
+門歯 < monshi\ ;
+濃紺 < noukon\ ;
+約手 < yakute\ ;
+薺 < nazuna\ ;
+衰耗 < suimou\ ;
+筆頭 < hittou\ ;
+採用 < saiyou\ ;
+捕縛 < hobaku\ ;
+蕨 < warabi\ ;
+粉炭 < funtan\ ;
+陪乗 < baijou\ ;
+蔶 < sonoko\ ;
+圧着 < atsugi\ ;
+垣根 < kakine\ ;
+蓬 < yomogi\ ;
+解剖 < kaibou\ ;
+統合 < tougou\ ;
+土石 < doseki\ ;
+蒅 < sukumo\ ;
+地番 < chiban\ ;
+焚刑 < funkei\ ;
+細字 < hosoji\ ;
+無償 < mushou\ ;
+終夜 < shuuya\ ;
+言上 < gonjou\ ;
+保護区 < hogoku\ ;
+間服 < aifuku\ ;
+浅茅生 < asajiu\ ;
+無傷 < mukizu\ ;
+撤去 < tekkyo\ ;
+茸 < kinoko\ ;
+因縁 < in''nen\ ;
+嘆願 < tangan\ ;
+澱粉 < denpun\ ;
+要害 < yougai\ ;
+紙屋 < kamiya\ ;
+間数 < makazu\ ;
+国禁 < kokkin\ ;
+挿絵 < sashie\ ;
+地獄 < jigoku\ ;
+垂楊 < suiyou\ ;
+土産 < miyage\ ;
+解体 < kaitai\ ;
+接点 < setten\ ;
+国礎 < kokuso\ ;
+膠 < nikawa\ ;
+端麗 < tanrei\ ;
+血膿 < chiumi\ ;
+解任 < kainin\ ;
+紙子 < kamiko\ ;
+炭層 < tansou\ ;
+撤兵 < teppei\ ;
+累増 < ruizou\ ;
+行者 < gyouja\ ;
+烈士 < resshi\ ;
+漫談 < mandan\ ;
+手駒 < tegoma\ ;
+堅塁 < kenrui\ ;
+家具屋 < kaguya\ ;
+手首 < tekubi\ ;
+小気味 < kokimi\ ;
+炉心 < roshin\ ;
+筆鋒 < hippou\ ;
+堂堂 < doudou\ ;
+親和 < shinwa\ ;
+垂木 < taruki\ ;
+場内 < jounai\ ;
+按腹 < anpuku\ ;
+地点 < chiten\ ;
+闇屋 < yamiya\ ;
+絶世 < zessei\ ;
+組合 < kumiai\ ;
+手頃 < tegoro\ ;
+覆土 < fukudo\ ;
+培地 < baichi\ ;
+回礼 < kairei\ ;
+所願 < shogan\ ;
+結党 < kettou\ ;
+純増 < junzou\ ;
+縅 < odoshi\ ;
+製材 < seizai\ ;
+烙印 < rakuin\ ;
+手際 < tegiwa\ ;
+手隙 < tesuki\ ;
+親分 < oyabun\ ;
+等辺 < touhen\ ;
+点在 < tenzai\ ;
+給与 < kyuuyo\ ;
+炭塵 < tanjin\ ;
+粗服 < sofuku\ ;
+域外 < ikigai\ ;
+細君 < saikun\ ;
+天蚕糸 < tegusu\ ;
+糒 < hoshii\ ;
+拙著 < setcho\ ;
+手長 < tenaga\ ;
+闇夜 < yamiyo\ ;
+国王 < kokuou\ ;
+粉本 < funpon\ ;
+圏点 < kenten\ ;
+火床 < hidoko\ ;
+血管 < kekkan\ ;
+経伝 < keiden\ ;
+表皮 < hyouhi\ ;
+笂 < utsubo\ ;
+排水 < haisui\ ;
+国父 < kokufu\ ;
+細分 < saibun\ ;
+竈 < kamado\ ;
+持続 < jizoku\ ;
+握手 < akushu\ ;
+手鍋 < tenabe\ ;
+竜馬 < ryuume\ ;
+窮鼠 < kyuuso\ ;
+城塁 < jourui\ ;
+滑車 < kassha\ ;
+童顔 < dougan\ ;
+秤 < hakari\ ;
+門弟 < montei\ ;
+戦雲 < sen''un\ ;
+禊 < misogi\ ;
+手鉤 < tekagi\ ;
+湾頭 < wantou\ ;
+納品 < nouhin\ ;
+損害 < songai\ ;
+米材 < beizai\ ;
+異文化 < ibunka\ ;
+満面 < manmen\ ;
+竜頭 < ryuuzu\ ;
+喫飯 < kippan\ ;
+索具 < sakugu\ ;
+裏板 < uraita\ ;
+手酌 < tejaku\ ;
+拙者 < sessha\ ;
+砦 < toride\ ;
+長座 < chouza\ ;
+閉山 < heizan\ ;
+地検 < chiken\ ;
+開封 < kaifuu\ ;
+炭労 < tanrou\ ;
+純分 < junbun\ ;
+坦懐 < tankai\ ;
+満開 < mankai\ ;
+累乗 < ruijou\ ;
+推断 < suidan\ ;
+批評 < hihyou\ ;
+授業 < jugyou\ ;
+位相差 < isousa\ ;
+累世 < ruisei\ ;
+血相 < kessou\ ;
+複座 < fukuza\ ;
+濃淡 < noutan\ ;
+手軽 < tegaru\ ;
+在校 < zaikou\ ;
+褥婦 < jokufu\ ;
+長屋 < nagaya\ ;
+血痰 < kettan\ ;
+開始 < kaishi\ ;
+域内 < ikinai\ ;
+長寿 < chouju\ ;
+在来 < zairai\ ;
+裁断 < saidan\ ;
+瓼 < sarake\ ;
+抜萃 < bassui\ ;
+紛争 < funsou\ ;
+手足 < teashi\ ;
+圧服 < appuku\ ;
+紛乱 < funran\ ;
+潰瘍 < kaiyou\ ;
+推挙 < suikyo\ ;
+国母 < kokubo\ ;
+粒度 < ryuudo\ ;
+地文 < chimon\ ;
+薔薇園 < baraen\ ;
+游魚 < yuugyo\ ;
+土木 < doboku\ ;
+米懇 < beikon\ ;
+閣員 < kakuin\ ;
+門外 < mongai\ ;
+捺染 < nassen\ ;
+城兵 < jouhei\ ;
+漁船 < gyosen\ ;
+過渡期 < katoki\ ;
+闇値 < yamine\ ;
+狸 < tanuki\ ;
+持病 < jibyou\ ;
+長女 < choujo\ ;
+国権 < kokken\ ;
+紊乱 < bunran\ ;
+土方 < dokata\ ;
+打診 < dashin\ ;
+圧搾 < assaku\ ;
+演繹 < en''eki\ ;
+補強 < hokyou\ ;
+門地 < monchi\ ;
+立錐 < rissui\ ;
+善隣 < zenrin\ ;
+戦車 < sensha\ ;
+手許 < temoto\ ;
+衰残 < suizan\ ;
+粉屋 < konaya\ ;
+所論 < shoron\ ;
+団欒 < danran\ ;
+満載 < mansai\ ;
+居場所 < ibasho\ ;
+満車 < mansha\ ;
+在所 < zaisho\ ;
+米帝 < beitei\ ;
+喝采 < kassai\ ;
+蛮風 < banpuu\ ;
+懇願 < kongan\ ;
+筆致 < hitchi\ ;
+図柄 < zugara\ ;
+戊辰 < boshin\ ;
+国是 < kokuze\ ;
+糞便 < funben\ ;
+違和感 < iwakan\ ;
+潮瀬 < shiose\ ;
+童貞 < doutei\ ;
+突風 < toppuu\ ;
+火先 < hosaki\ ;
+米屋 < komeya\ ;
+火元 < himoto\ ;
+地形 < chikei\ ;
+渚 < nagisa\ ;
+精勤 < seikin\ ;
+抜糸 < basshi\ ;
+穴馬 < anauma\ ;
+火傷 < yakedo\ ;
+滅菌 < mekkin\ ;
+生蕎麦 < kisoba\ ;
+筆耕 < hikkou\ ;
+鎮護 < chingo\ ;
+蛮隷 < banrei\ ;
+涎 < yodare\ ;
+筆者 < hissha\ ;
+在役 < zaieki\ ;
+地平 < chihei\ ;
+推定 < suitei\ ;
+問題 < mondai\ ;
+門前 < monzen\ ;
+四桁 < yoketa\ ;
+行殊 < gyoujo\ ;
+空音 < sorane\ ;
+圧延 < atsuen\ ;
+門出 < kadode\ ;
+採寸 < saisun\ ;
+扶翼 < fuyoku\ ;
+汀 < migiwa\ ;
+氵 < sanzui\ ;
+籠居 < roukyo\ ;
+懸軍 < kengun\ ;
+空電 < kuuden\ ;
+製品 < seihin\ ;
+空際 < kuusai\ ;
+鍛錬 < tanren\ ;
+国技 < kokugi\ ;
+録音 < rokuon\ ;
+所蔵 < shozou\ ;
+開会 < kaikai\ ;
+潟湖 < sekiko\ ;
+不気味 < bukimi\ ;
+喉輪 < nodowa\ ;
+渋面 < juumen\ ;
+閉会 < heikai\ ;
+筆紙 < hisshi\ ;
+空閨 < kuukei\ ;
+演目 < enmoku\ ;
+空間 < kuukan\ ;
+樵 < kikori\ ;
+樮 < hokuso\ ;
+才芸 < saigei\ ;
+複利 < fukuri\ ;
+裏声 < uragoe\ ;
+滞納 < tainou\ ;
+拠点 < kyoten\ ;
+手芸 < shugei\ ;
+測鉛 < sokuen\ ;
+在官 < zaikan\ ;
+噴煙 < fun''en\ ;
+楔 < kusabi\ ;
+漂砂 < hyousa\ ;
+門人 < monjin\ ;
+椪 < kunugi\ ;
+筆算 < hissan\ ;
+国恩 < kokuon\ ;
+才腕 < saiwan\ ;
+困憊 < konpai\ ;
+節水 < sessui\ ;
+筆端 < hittan\ ;
+手腕 < shuwan\ ;
+潜水 < sensui\ ;
+激怒 < gekido\ ;
+才能 < sainou\ ;
+鍛造 < tanzou\ ;
+栞 < shiori\ ;
+地変 < chihen\ ;
+血栓 < kessen\ ;
+手職 < tejoku\ ;
+窓辺 < madobe\ ;
+術数 < jussuu\ ;
+李 < sumomo\ ;
+濁度 < dakudo\ ;
+在天 < zaiten\ ;
+在外 < zaigai\ ;
+血書 < kessho\ ;
+地域 < chiiki\ ;
+暦 < koyomi\ ;
+減配 < genpai\ ;
+積雲 < sekiun\ ;
+昴 < subaru\ ;
+満蒙 < manmou\ ;
+御歳暮 < oseibo\ ;
+漸減 < zengen\ ;
+滑空 < kakkuu\ ;
+深間 < fukama\ ;
+血斑 < keppan\ ;
+稚鰤 < warasa\ ;
+減退 < gentai\ ;
+端艇 < tantei\ ;
+接吻 < seppun\ ;
+拘泥 < koudei\ ;
+筋目 < sujime\ ;
+稚鮎 < chiayu\ ;
+予備員 < yobiin\ ;
+蜥蜴 < tokage\ ;
+拝殿 < haiden\ ;
+稚魚 < chigyo\ ;
+映画化 < eigaka\ ;
+噴水 < funsui\ ;
+手紙 < tegami\ ;
+篆書 < tensho\ ;
+種類 < shurui\ ;
+清酒 < seishu\ ;
+粉体 < funtai\ ;
+商運 < shouun\ ;
+空転 < kuuten\ ;
+欧印語 < ouingo\ ;
+均分 < kinbun\ ;
+滅私 < messhi\ ;
+空軍 < kuugun\ ;
+空車 < kuusha\ ;
+粋人 < suijin\ ;
+図案家 < zuanka\ ;
+手籠 < tekago\ ;
+満腔 < mankou\ ;
+披瀝 < hireki\ ;
+手箱 < tebako\ ;
+手管 < tekuda\ ;
+手筋 < tesuji\ ;
+手筈 < tehazu\ ;
+挙手 < kyoshu\ ;
+扖 < hameru\ ;
+突貫 < tokkan\ ;
+竹縁 < takeen\ ;
+排卵 < hairan\ ;
+湯花 < yubana\ ;
+懇請 < konsei\ ;
+懇談 < kondan\ ;
+捨場 < suteba\ ;
+湯船 < yubune\ ;
+衆愚 < shuugu\ ;
+憖 < namaji\ ;
+深部 < shinbu\ ;
+戸籍 < koseki\ ;
+節操 < sessou\ ;
+被告 < hikoku\ ;
+滅相 < messou\ ;
+端線 < tansen\ ;
+端緒 < tancho\ ;
+在勤 < zaikin\ ;
+潔斎 < kessai\ ;
+圧勝 < asshou\ ;
+海鼠 < namako\ ;
+接伴 < seppan\ ;
+竹簀 < takesu\ ;
+地元 < jimoto\ ;
+液面 < ekimen\ ;
+蛇足 < dasoku\ ;
+国土 < kokudo\ ;
+応援歌 < ouenka\ ;
+空論 < kuuron\ ;
+空談 < kuudan\ ;
+彠 < kuwaku\ ;
+漁港 < gyokou\ ;
+愛鳥 < aichou\ ;
+廓 < kuruwa\ ;
+蠱惑 < kowaku\ ;
+排便 < haiben\ ;
+国営 < kokuei\ ;
+幟 < nobori\ ;
+幉 < tazuna\ ;
+拮据 < kikkyo\ ;
+振子 < furiko\ ;
+噸数 < tonsuu\ ;
+漁法 < gyohou\ ;
+団塊 < dankai\ ;
+地代 < chidai\ ;
+喫緊 < kikkin\ ;
+手癖 < tekuse\ ;
+錯誤 < sakugo\ ;
+税関 < zeikan\ ;
+嵐 < arashi\ ;
+漁民 < gyomin\ ;
+在住 < zaijuu\ ;
+蚊鉤 < kabari\ ;
+在任 < zainin\ ;
+潮干 < shiohi\ ;
+海魚 < kaigyo\ ;
+算数 < sansuu\ ;
+土俵 < dohyou\ ;
+土俗 < dozoku\ ;
+打球 < dakyuu\ ;
+鼻鏡 < bikyou\ ;
+授乳 < junyuu\ ;
+海驢 < ashika\ ;
+漫文 < manbun\ ;
+表土 < hyoudo\ ;
+国務 < kokumu\ ;
+我等 < warera\ ;
+挽回 < bankai\ ;
+空虚 < kuukyo\ ;
+土中 < dochuu\ ;
+所産 < shosan\ ;
+嫟 < jiyuku\ ;
+融点 < yuuten\ ;
+漢文 < kanbun\ ;
+手玉 < tedama\ ;
+喪章 < moshou\ ;
+団員 < dan''in\ ;
+手狭 < tezema\ ;
+国光 < kokkou\ ;
+銀鱗 < ginrin\ ;
+阿蘭陀 < oranda\ ;
+啓蒙 < keimou\ ;
+衆多 < shuuta\ ;
+税金 < zeikin\ ;
+黒鵐 < kuroji\ ;
+蠏座 < kaniza\ ;
+漁村 < gyoson\ ;
+海難 < kainan\ ;
+空荷 < karani\ ;
+四千 < yonsen\ ;
+四十 < yonjuu\ ;
+国会 < kokkai\ ;
+圷 < akutsu\ ;
+図体 < zuutai\ ;
+箱屋 < hakoya\ ;
+滅法 < meppou\ ;
+抵抗 < teikou\ ;
+濁世 < dakuse\ ;
+無慈悲 < mujihi\ ;
+齲蝕 < ushoku\ ;
+表具 < hyougu\ ;
+漁撈 < gyorou\ ;
+減耗 < genmou\ ;
+行司 < gyouji\ ;
+受話器 < juwaki\ ;
+窒素 < chisso\ ;
+鋭角 < eikaku\ ;
+秘録 < hiroku\ ;
+翻車魚 < manbou\ ;
+不出来 < fudeki\ ;
+衰亡 < suibou\ ;
+竜王 < ryuuou\ ;
+噴射 < funsha\ ;
+后 < kisaki\ ;
+問罪 < monzai\ ;
+雑魚寝 < zakone\ ;
+厠 < kawaya\ ;
+蛇腹 < jabara\ ;
+伊太利 < itarii\ ;
+手水 < temizu\ ;
+愛郷 < aikyou\ ;
+饂飩粉 < udonko\ ;
+手毬 < temari\ ;
+折折 < oriori\ ;
+湯玉 < yudama\ ;
+挙動 < kyodou\ ;
+流音 < ryuuon\ ;
+手段 < shudan\ ;
+流露 < ryuuro\ ;
+把捉 < hasoku\ ;
+流離 < ryuuri\ ;
+鼠賊 < sozoku\ ;
+甘海老 < amaebi\ ;
+挙兵 < kyohei\ ;
+温突 < ondoru\ ;
+手機 < tebata\ ;
+兜 < kabuto\ ;
+拷問 < goumon\ ;
+融朗 < yuurou\ ;
+麺類 < menrui\ ;
+減算 < genzan\ ;
+手業 < tewaza\ ;
+漸増 < zenzou\ ;
+海軍 < kaigun\ ;
+消費 < shouhi\ ;
+浪速 < naniwa\ ;
+銀鉱 < ginkou\ ;
+問答 < mondou\ ;
+吹鳴 < suimei\ ;
+筆才 < hissai\ ;
+銀鈴 < ginrei\ ;
+清純 < seijun\ ;
+筆戦 < hissen\ ;
+小馬鹿 < kobaka\ ;
+虚誕 < kyotan\ ;
+淋菌 < rinkin\ ;
+減税 < genzei\ ;
+策応 < sakuou\ ;
+空空 < kuukuu\ ;
+競歩 < kyouho\ ;
+温石 < onjaku\ ;
+虚言 < kyogen\ ;
+手柄 < tegara\ ;
+手枷 < tekase\ ;
+混線 < konsen\ ;
+仇 < kataki\ ;
+筆意 < hitsui\ ;
+手札 < tefuda\ ;
+御菓子 < okashi\ ;
+答弁 < touben\ ;
+洗顔 < sengan\ ;
+浜辺 < hamabe\ ;
+黒鉛 < kokuen\ ;
+満水 < mansui\ ;
+戸棚 < todana\ ;
+鼎談 < teidan\ ;
+湿気 < shikke\ ;
+我流 < garyuu\ ;
+悪風 < akufuu\ ;
+洗面 < senmen\ ;
+洋風 < youfuu\ ;
+空砲 < kuuhou\ ;
+潜像 < senzou\ ;
+愛読 < aidoku\ ;
+所望 < shomou\ ;
+所有 < shoyuu\ ;
+黒酒 < kuroki\ ;
+打撲 < daboku\ ;
+禅門 < zenmon\ ;
+打撃 < dageki\ ;
+三知土 < tataki\ ;
+洞門 < doumon\ ;
+吸飲 < kyuuin\ ;
+空目 < sorame\ ;
+湯水 < yumizu\ ;
+悪霊 < akurei\ ;
+手摺 < tesuri\ ;
+節会 < sechie\ ;
+我欲 < gayoku\ ;
+湯殿 < yudono\ ;
+端株 < hakabu\ ;
+湧水 < yuusui\ ;
+営業 < eigyou\ ;
+減産 < gensan\ ;
+賓位語 < hinigo\ ;
+手拭 < tefuki\ ;
+吹雪 < fubuki\ ;
+溺愛 < dekiai\ ;
+筋子 < sujiko\ ;
+鉄鋼 < tekkou\ ;
+悌順 < teijun\ ;
+洗錬 < senren\ ;
+満杯 < manpai\ ;
+薬餌 < yakuji\ ;
+福運 < fukuun\ ;
+摩莫枳 < mamaki\ ;
+薫風 < kunpuu\ ;
+録画 < rokuga\ ;
+漆器 < shikki\ ;
+浄財 < jouzai\ ;
+虎落 < mogari\ ;
+温灸 < onkyuu\ ;
+悪銭 < akusen\ ;
+名香 < meikou\ ;
+和訳 < wayaku\ ;
+涙腺 < ruisen\ ;
+抱卵 < houran\ ;
+払底 < futtei\ ;
+洋銀 < yougin\ ;
+鎮撫 < chinbu\ ;
+喪服 < mofuku\ ;
+和親 < washin\ ;
+手役 < teyaku\ ;
+銀製 < ginsei\ ;
+黙許 < mokkyo\ ;
+手形 < tegata\ ;
+打席 < daseki\ ;
+薫陶 < kuntou\ ;
+手引 < tebiki\ ;
+渾沌 < konton\ ;
+演劇 < engeki\ ;
+禁輸 < kin''yu\ ;
+浮薄 < fuhaku\ ;
+同類 < dourui\ ;
+洋酒 < youshu\ ;
+手帳 < techou\ ;
+成敗 < seibai\ ;
+虚聞 < kyobun\ ;
+鈍間 < noroma\ ;
+針魚 < hariyo\ ;
+波間 < namima\ ;
+鼓膜 < komaku\ ;
+憫然 < binzen\ ;
+悪道 < akudou\ ;
+波長 < hachou\ ;
+鼓腹 < kofuku\ ;
+法難 < hounan\ ;
+沸騰 < futtou\ ;
+笠子 < kasago\ ;
+活計 < kakkei\ ;
+滞在 < taizai\ ;
+渡渉 < toshou\ ;
+金魚 < kingyo\ ;
+銘茶 < meicha\ ;
+私蔵 < shizou\ ;
+味覚 < mikaku\ ;
+龕灯 < gandou\ ;
+黴菌 < baikin\ ;
+抜剣 < bakken\ ;
+善根 < zenkon\ ;
+名門 < meimon\ ;
+空港 < kuukou\ ;
+錘状 < suijou\ ;
+溶媒 < youbai\ ;
+沿革 < enkaku\ ;
+小百合 < sayuri\ ;
+端役 < hayaku\ ;
+呉越 < goetsu\ ;
+混然 < konzen\ ;
+筋合 < sujiai\ ;
+減法 < genpou\ ;
+空洞 < kuudou\ ;
+源平 < genpei\ ;
+名鑑 < meikan\ ;
+野駒 < nogoma\ ;
+浮腫 < mukumi\ ;
+麻裏 < asaura\ ;
+種痘 < shutou\ ;
+鈍重 < donjuu\ ;
+所定 < shotei\ ;
+涙管 < ruikan\ ;
+所存 < shozon\ ;
+泥酔 < deisui\ ;
+減殺 < gensai\ ;
+減段 < gentan\ ;
+鎮座 < chinza\ ;
+合鍵 < aikagi\ ;
+立憲 < rikken\ ;
+礼金 < reikin\ ;
+満干 < mankan\ ;
+禽舎 < kinsha\ ;
+告諭 < kokuyu\ ;
+空欄 < kuuran\ ;
+没頭 < bottou\ ;
+句集 < kushuu\ ;
+手塩 < teshio\ ;
+湿布 < shippu\ ;
+端山 < hayama\ ;
+竜座 < ryuuza\ ;
+鉄製 < tessei\ ;
+受領 < juryou\ ;
+渇水 < kassui\ ;
+烏帽子 < eboshi\ ;
+合金 < goukin\ ;
+混淆 < konkou\ ;
+品等 < hintou\ ;
+悪言 < akugen\ ;
+喜悦 < kietsu\ ;
+鼓笛 < koteki\ ;
+麻薬 < mayaku\ ;
+端子 < tanshi\ ;
+虚礼 < kyorei\ ;
+融合 < yuugou\ ;
+同邦 < douhou\ ;
+懇書 < konsho\ ;
+湾岸 < wangan\ ;
+満山 < manzan\ ;
+才噸 < saiton\ ;
+稲熱 < imochi\ ;
+鎮守 < chinju\ ;
+品種 < hinshu\ ;
+黄菊 < kigiku\ ;
+愚策 < gusaku\ ;
+各部 < kakubu\ ;
+祖父母 < sofubo\ ;
+波路 < namiji\ ;
+反面 < hanmen\ ;
+十六夜 < izayoi\ ;
+所在 < shozai\ ;
+悪血 < oketsu\ ;
+慨然 < gaizen\ ;
+競売 < keibai\ ;
+藻草 < mogusa\ ;
+移着 < ichaku\ ;
+祝詞 < norito\ ;
+同輩 < douhai\ ;
+急須 < kyuusu\ ;
+秘策 < hisaku\ ;
+消磨 < shouma\ ;
+憎気 < nikuge\ ;
+同車 < dousha\ ;
+湖心 < koshin\ ;
+種火 < tanebi\ ;
+手品 < tejina\ ;
+我家 < wagaya\ ;
+空曹 < kuusou\ ;
+迂回路 < ukairo\ ;
+才名 < saimei\ ;
+社賓 < shahin\ ;
+液状 < ekijou\ ;
+襤褸家 < boroya\ ;
+恵贈 < keizou\ ;
+礼賛 < raisan\ ;
+穂波 < honami\ ;
+鏤刻 < rukoku\ ;
+金銀 < kingin\ ;
+銀経 < ginkei\ ;
+和綴 < watoji\ ;
+青紫蘇 < aojiso\ ;
+緑啄木鳥 < aogera\ ;
+銀糸 < ginshi\ ;
+淡水 < tansui\ ;
+空文 < kuubun\ ;
+吟詠 < gin''ei\ ;
+銀粉 < ginpun\ ;
+懦弱 < dajaku\ ;
+恭賀 < kyouga\ ;
+卵黄 < ran''ou\ ;
+満塁 < manrui\ ;
+恩賞 < onshou\ ;
+水黽 < amenbo\ ;
+哀痛 < aitsuu\ ;
+麦芽 < bakuga\ ;
+台車 < daisha\ ;
+品番 < hinban\ ;
+手写 < shusha\ ;
+法論 < houron\ ;
+手先 < tesaki\ ;
+恩讐 < onshuu\ ;
+原音 < gen''on\ ;
+空挺 < kuutei\ ;
+鈍行 < donkou\ ;
+手傷 < tekizu\ ;
+空拳 < kuuken\ ;
+針路 < shinro\ ;
+同訓 < doukun\ ;
+金輪 < kanawa\ ;
+沢辺 < sawabe\ ;
+鼈甲 < bekkou\ ;
+空手 < karate\ ;
+礼装 < reisou\ ;
+空所 < kuusho\ ;
+念願 < nengan\ ;
+合計 < goukei\ ;
+麻織 < asaori\ ;
+呪縛 < jubaku\ ;
+空戦 < kuusen\ ;
+慨歎 < gaitan\ ;
+念頭 < nentou\ ;
+科白 < serifu\ ;
+薮蚊 < yabuka\ ;
+満員 < man''in\ ;
+叛軍 < hangun\ ;
+黄粉 < kinako\ ;
+鎖国 < sakoku\ ;
+愁眉 < shuubi\ ;
+麻絲 < asaito\ ;
+才人 < saijin\ ;
+同衾 < doukin\ ;
+立地 < ritchi\ ;
+黒穂 < kurobo\ ;
+情緒 < joucho\ ;
+沃野 < yokuya\ ;
+愛猫 < aibyou\ ;
+醸造 < jouzou\ ;
+湾口 < wankou\ ;
+銃眼 < juugan\ ;
+章句 < shouku\ ;
+憶念 < okunen\ ;
+戦前 < senzen\ ;
+鸞輿 < ran''yo\ ;
+憧憬 < doukei\ ;
+液汁 < ekijuu\ ;
+憤懣 < funman\ ;
+可読 < kadoku\ ;
+懸垂 < kensui\ ;
+税法 < zeihou\ ;
+厳重 < genjuu\ ;
+銀盤 < ginban\ ;
+友軍 < yuugun\ ;
+和睦 < waboku\ ;
+銀盃 < ginpai\ ;
+憤慨 < fungai\ ;
+鉄線 < tessen\ ;
+鼻毛 < hanage\ ;
+口調 < kuchou\ ;
+端倪 < tangei\ ;
+金談 < kindan\ ;
+古註 < kochuu\ ;
+流石 < sasuga\ ;
+鉄粉 < teppun\ ;
+麦粉 < mugiko\ ;
+深手 < fukade\ ;
+黒目 < kurome\ ;
+憐憫 < renbin\ ;
+原野 < gen''ya\ ;
+受諾 < judaku\ ;
+気鬱 < kiutsu\ ;
+薬舗 < yakuho\ ;
+名著 < meicho\ ;
+鉄管 < tekkan\ ;
+重言 < juugon\ ;
+氷霧 < hyoumu\ ;
+金襴 < kinran\ ;
+水面 < minomo\ ;
+禍福 < kafuku\ ;
+氷雨 < hisame\ ;
+鉄筋 < tekkin\ ;
+酔顔 < suigan\ ;
+合著 < goucho\ ;
+禽獣 < kinjuu\ ;
+水雷 < suirai\ ;
+受註 < juchuu\ ;
+水難 < suinan\ ;
+君臨 < kunrin\ ;
+受託 < jutaku\ ;
+戦乱 < senran\ ;
+不具合 < fuguai\ ;
+問屋 < ton''ya\ ;
+鉄窓 < tessou\ ;
+慧敏 < keibin\ ;
+蛇座 < hebiza\ ;
+湯元 < yumoto\ ;
+鼻梁 < biryou\ ;
+反論 < hanron\ ;
+喜劇 < kigeki\ ;
+憂憤 < yuufun\ ;
+感涙 < kanrui\ ;
+穴居 < kekkyo\ ;
+立冬 < rittou\ ;
+憂慮 < yuuryo\ ;
+和独 < wadoku\ ;
+金蝿 < kinbae\ ;
+水門 < suimon\ ;
+善哉 < zenzai\ ;
+単音 < tan''on\ ;
+鉛白 < enpaku\ ;
+参謀 < sanbou\ ;
+憂悶 < yuumon\ ;
+鼻木 < hanagi\ ;
+和牛 < wagyuu\ ;
+薄葉 < usuyou\ ;
+唐戸 < karado\ ;
+合致 < gatchi\ ;
+南面 < nanmen\ ;
+海浜 < kaihin\ ;
+民風 < minpuu\ ;
+悪税 < akuzei\ ;
+吹管 < suikan\ ;
+鉄砲 < teppou\ ;
+各自 < kakuji\ ;
+麻疹 < mashin\ ;
+喧伝 < kenden\ ;
+薄茶 < usucha\ ;
+南隅 < nanguu\ ;
+悪神 < akujin\ ;
+立体 < rittai\ ;
+半音 < han''on\ ;
+南限 < nangen\ ;
+突堤 < tottei\ ;
+喪中 < mochuu\ ;
+減塩 < gen''en\ ;
+渥地 < akuchi\ ;
+淡彩 < tansai\ ;
+海水 < kaisui\ ;
+浮流 < furyuu\ ;
+金蔵 < kinzou\ ;
+愛欲 < aiyoku\ ;
+厳談 < gendan\ ;
+薄色 < usuiro\ ;
+祭礼 < sairei\ ;
+知恵歯 < chieba\ ;
+虚根 < kyokon\ ;
+微震 < bishin\ ;
+酩酊 < meitei\ ;
+同罪 < douzai\ ;
+浮沈 < fuchin\ ;
+水銀 < suigin\ ;
+御題 < gyodai\ ;
+哀楽 < airaku\ ;
+空域 < kuuiki\ ;
+銀漢 < ginkan\ ;
+深山 < miyama\ ;
+野蒜 < nobiru\ ;
+活版 < kappan\ ;
+気長 < kinaga\ ;
+空地 < akichi\ ;
+愛楽 < aigyou\ ;
+野菊 < nogiku\ ;
+民間 < minkan\ ;
+悪相 < akusou\ ;
+御霊 < mitama\ ;
+法網 < houmou\ ;
+悲痛 < hitsuu\ ;
+麦田 < mugita\ ;
+水郷 < suigou\ ;
+合繊 < gousen\ ;
+不起訴 < fukiso\ ;
+慢性 < mansei\ ;
+向米 < koubei\ ;
+銀泥 < gindei\ ;
+虚数 < kyosuu\ ;
+悪疫 < akueki\ ;
+水辺 < mizube\ ;
+稟性 < hinsei\ ;
+鍛冶 < tan''ya\ ;
+悪用 < akuyou\ ;
+愉楽 < yuraku\ ;
+無医村 < muison\ ;
+水車 < suisha\ ;
+虎斑 < torafu\ ;
+後難 < kounan\ ;
+空名 < kuumei\ ;
+錦地 < kinchi\ ;
+鼻息 < bisoku\ ;
+悪球 < akkyuu\ ;
+合算 < gassan\ ;
+海月 < kurage\ ;
+唐子 < karako\ ;
+流派 < ryuuha\ ;
+薄紗 < hakusa\ ;
+混在 < konzai\ ;
+同窓 < dousou\ ;
+銘板 < meiban\ ;
+油絵 < aburae\ ;
+半金 < hankin\ ;
+毛頭 < moutou\ ;
+同種 < doushu\ ;
+重罪 < juuzai\ ;
+酢豚 < subuta\ ;
+千鈞 < senkin\ ;
+空前 < kuuzen\ ;
+応諾 < oudaku\ ;
+減免 < genmen\ ;
+民選 < minsen\ ;
+空冷 < kuurei\ ;
+惚気 < noroke\ ;
+和楽 < waraku\ ;
+怪腕 < kaiwan\ ;
+合祭 < gousai\ ;
+商務 < shoumu\ ;
+悪熱 < anetsu\ ;
+黄水 < kimizu\ ;
+口絵 < kuchie\ ;
+御酌 < oshaku\ ;
+気軽 < kigaru\ ;
+果樹園 < kajuen\ ;
+海損 < kaison\ ;
+慮外 < ryogai\ ;
+酒豪 < shugou\ ;
+半輪 < hanrin\ ;
+金粉 < kinpun\ ;
+当駅 < toueki\ ;
+御遊 < gyoyuu\ ;
+法相 < hossou\ ;
+深味 < fukami\ ;
+原著 < gencho\ ;
+麦湯 < mugiyu\ ;
+同盟 < doumei\ ;
+洪水 < kouzui\ ;
+哀愁 < aishuu\ ;
+吉相 < kissou\ ;
+空似 < sorani\ ;
+和服 < wafuku\ ;
+御転婆 < otenba\ ;
+薬理 < yakuri\ ;
+後金 < atokin\ ;
+鹵獲 < rokaku\ ;
+命根 < meikon\ ;
+錠前 < joumae\ ;
+名産 < meisan\ ;
+愛息 < aisoku\ ;
+泥状 < deijou\ ;
+必見 < hikken\ ;
+反米 < hanbei\ ;
+破鏡 < hakyou\ ;
+重税 < juuzei\ ;
+酢蛸 < sudako\ ;
+叢祠 < hokora\ ;
+従軍 < juugun\ ;
+毛鈎 < kebari\ ;
+部長 < buchou\ ;
+惨敗 < zanpai\ ;
+悪法 < akuhou\ ;
+右目 < migime\ ;
+必衰 < hissui\ ;
+歯黒 < haguro\ ;
+民論 < minron\ ;
+参籠 < sanrou\ ;
+悪水 < akusui\ ;
+愉悦 < yuetsu\ ;
+針目 < harime\ ;
+北部 < hokubu\ ;
+悪気 < warugi\ ;
+矢鱈 < yatara\ ;
+礎石 < soseki\ ;
+浴後 < yokugo\ ;
+卓見 < takken\ ;
+命数 < meisuu\ ;
+残骸 < zangai\ ;
+風呂屋 < furoya\ ;
+泥炭 < deitan\ ;
+名状 < meijou\ ;
+葛餡 < kuzuan\ ;
+沼田 < numada\ ;
+祭殿 < saiden\ ;
+砲金 < houkin\ ;
+古着 < furugi\ ;
+銀扇 < ginsen\ ;
+重石 < omoshi\ ;
+強音 < kyouon\ ;
+汚職 < oshoku\ ;
+混乱 < konran\ ;
+金目 < kaneme\ ;
+意味論 < imiron\ ;
+研鑽 < kensan\ ;
+弱音 < yowane\ ;
+残飯 < zanpan\ ;
+水葬 < suisou\ ;
+半裁 < hansai\ ;
+唯一 < yuitsu\ ;
+無邪気 < mujaki\ ;
+御託 < gotaku\ ;
+微衷 < bichuu\ ;
+半衿 < haneri\ ;
+虚妄 < kyomou\ ;
+決算 < kessan\ ;
+化身 < keshin\ ;
+恬然 < tenzen\ ;
+薬湯 < yakuyu\ ;
+汽笛 < kiteki\ ;
+涼味 < ryoumi\ ;
+水菜 < mizuna\ ;
+海岸 < kaigan\ ;
+悪業 < akugou\ ;
+鉄板 < teppan\ ;
+蓴菜 < junsai\ ;
+含水 < gansui\ ;
+影身 < kagemi\ ;
+毛足 < keashi\ ;
+歯髄 < shizui\ ;
+落馬 < rakuba\ ;
+双眼 < sougan\ ;
+反省 < hansei\ ;
+注油 < chuuyu\ ;
+郷軍 < gougun\ ;
+沈砂 < chinsa\ ;
+勧銀 < kangin\ ;
+医術 < ijutsu\ ;
+風呂場 < furoba\ ;
+感奮 < kanpun\ ;
+涙嚢 < ruinou\ ;
+卵胞 < ranhou\ ;
+野球 < yakyuu\ ;
+呉服 < gofuku\ ;
+神楽 < kagura\ ;
+忠義 < chuugi\ ;
+水腫 < suishu\ ;
+藍染 < aizome\ ;
+悪書 < akusho\ ;
+洋本 < youhon\ ;
+君民 < kunmin\ ;
+葉陰 < hakage\ ;
+阿蘇山 < asosan\ ;
+沸点 < futten\ ;
+恬淡 < tentan\ ;
+黙座 < mokuza\ ;
+液剤 < ekizai\ ;
+殿軍 < dengun\ ;
+弊風 < heifuu\ ;
+金牌 < kinpai\ ;
+銅山 < douzan\ ;
+海外 < kaigai\ ;
+郵貯 < yuucho\ ;
+野牛 < yagyuu\ ;
+活性 < kassei\ ;
+社殿 < shaden\ ;
+重版 < juuhan\ ;
+悪文 < akubun\ ;
+御家芸 < oiegei\ ;
+配膳 < haizen\ ;
+銀山 < ginzan\ ;
+忍耐 < nintai\ ;
+悪政 < akusei\ ;
+祭文 < saimon\ ;
+各派 < kakuha\ ;
+遺骨 < ikotsu\ ;
+黒巾 < kurogo\ ;
+恩沢 < ontaku\ ;
+海域 < kaiiki\ ;
+愛国 < aikoku\ ;
+鉄拳 < tekken\ ;
+名残 < nagori\ ;
+虚名 < kyomei\ ;
+弾道 < dandou\ ;
+民芸 < mingei\ ;
+哺乳 < honyuu\ ;
+台湾 < taiwan\ ;
+永続 < eizoku\ ;
+正面 < matomo\ ;
+重灰 < juukai\ ;
+危絵 < abunae\ ;
+恥毛 < chimou\ ;
+助長 < jochou\ ;
+液体 < ekitai\ ;
+鈍根 < donkon\ ;
+情念 < jounen\ ;
+残金 < zankin\ ;
+毬藻 < marimo\ ;
+薫染 < kunsen\ ;
+毛蟹 < kegani\ ;
+品名 < hinmei\ ;
+悪投 < akutou\ ;
+原盤 < genban\ ;
+動輪 < dourin\ ;
+悪才 < akusai\ ;
+治水 < chisui\ ;
+黒子 < hokuro\ ;
+勇邁 < yuumai\ ;
+悲愁 < hishuu\ ;
+殊遇 < shuguu\ ;
+悪態 < akutai\ ;
+古流 < koryuu\ ;
+十能 < juunou\ ;
+銀塊 < ginkai\ ;
+藻屑 < mokuzu\ ;
+同根 < doukon\ ;
+黙契 < mokkei\ ;
+重液 < juueki\ ;
+毒蛾 < dokuga\ ;
+金泥 < kondei\ ;
+池畔 < chihan\ ;
+同村 < douson\ ;
+名札 < nafuda\ ;
+単純 < tanjun\ ;
+大部屋 < oobeya\ ;
+蘊奥 < un''nou\ ;
+快眠 < kaimin\ ;
+悪念 < akunen\ ;
+同朋 < doubou\ ;
+合板 < gouban\ ;
+金気 < kanake\ ;
+秘匿 < hitoku\ ;
+福寿 < fukuju\ ;
+合本 < gappon\ ;
+遭難 < sounan\ ;
+重水 < juusui\ ;
+水禽 < suikin\ ;
+虚伝 < kyoden\ ;
+南米 < nanbei\ ;
+鶏群 < keigun\ ;
+堕胎医 < dataii\ ;
+単簡 < tankan\ ;
+悪弊 < akuhei\ ;
+復縁 < fukuen\ ;
+黽勉 < binben\ ;
+禅尼 < zen''ni\ ;
+同断 < doudan\ ;
+取水 < shusui\ ;
+浄域 < jouiki\ ;
+酒税 < shuzei\ ;
+同文 < doubun\ ;
+勝訴 < shouso\ ;
+同数 < dousuu\ ;
+従者 < juusha\ ;
+合方 < aikata\ ;
+原版 < genpan\ ;
+薄板 < usuita\ ;
+南端 < nantan\ ;
+強談 < goudan\ ;
+秀句 < shuuku\ ;
+古楽 < kogaku\ ;
+鈍才 < donsai\ ;
+藻塩 < moshio\ ;
+反毛 < hanmou\ ;
+水着 < mizugi\ ;
+碑石 < hiseki\ ;
+加速 < kasoku\ ;
+汚物 < obutsu\ ;
+台本 < daihon\ ;
+鶏糞 < keifun\ ;
+水盤 < suiban\ ;
+千篇 < senpen\ ;
+鈍感 < donkan\ ;
+毛脛 < kezune\ ;
+鳳輦 < houren\ ;
+不用意 < fuyoui\ ;
+久慈目 < kujime\ ;
+建造 < kenzou\ ;
+刺魚 < togeuo\ ;
+部落 < buraku\ ;
+号数 < gousuu\ ;
+銃剣 < juuken\ ;
+参殿 < sanden\ ;
+水疱 < suihou\ ;
+右文 < yuubun\ ;
+古木 < koboku\ ;
+君恩 < kun''on\ ;
+大御代 < oomiyo\ ;
+微禄 < biroku\ ;
+碁石 < goishi\ ;
+水田 < suiden\ ;
+底魚 < sokouo\ ;
+秘中 < hichuu\ ;
+殺菌 < sakkin\ ;
+銘仙 < meisen\ ;
+弱行 < jakkou\ ;
+呼名 < yobina\ ;
+決水 < kessui\ ;
+同憂 < douyuu\ ;
+銅像 < douzou\ ;
+歓迎 < kangei\ ;
+鉄塔 < tettou\ ;
+同感 < doukan\ ;
+浪人 < rounin\ ;
+剔除 < tekijo\ ;
+没書 < bossho\ ;
+鷹派 < takaha\ ;
+前電 < zenden\ ;
+想像 < souzou\ ;
+取材 < shuzai\ ;
+蘭人 < ranjin\ ;
+菌類 < kinrui\ ;
+神宮 < jinguu\ ;
+卵状 < ranjou\ ;
+悪天 < akuten\ ;
+遭遇 < souguu\ ;
+削除 < sakujo\ ;
+半睡 < hansui\ ;
+吾妹 < wagimo\ ;
+右折 < usetsu\ ;
+原油 < gen''yu\ ;
+歳計 < saikei\ ;
+性根 < shoune\ ;
+葛藤 < kattou\ ;
+悪場 < waruba\ ;
+右手 < migite\ ;
+叉木 < matagi\ ;
+歩調 < hochou\ ;
+原民 < genmin\ ;
+名店 < meiten\ ;
+券面 < kenmen\ ;
+干鱈 < hidara\ ;
+合弁 < gouben\ ;
+弁論 < benron\ ;
+流儀 < ryuugi\ ;
+水煮 < mizuni\ ;
+座長 < zachou\ ;
+毒素 < dokuso\ ;
+底面 < teimen\ ;
+彼等 < karera\ ;
+厘毛 < rinmou\ ;
+去来 < kyorai\ ;
+弁解 < benkai\ ;
+運針 < unshin\ ;
+古手 < furute\ ;
+毛筋 < kesuji\ ;
+社屋 < shaoku\ ;
+可惜 < attara\ ;
+遊金 < yuukin\ ;
+君子 < kunshi\ ;
+利鞘 < rizaya\ ;
+怨敵 < onteki\ ;
+有意義 < yuuigi\ ;
+野薔薇 < nobara\ ;
+恋愛 < ren''ai\ ;
+欠配 < keppai\ ;
+命令 < meirei\ ;
+名山 < meizan\ ;
+真鴨 < magamo\ ;
+連関 < renkan\ ;
+汀渚 < teisho\ ;
+御目見得 < omemie\ ;
+同居 < doukyo\ ;
+遅配 < chihai\ ;
+梅雨期 < baiuki\ ;
+恵存 < keizon\ ;
+同封 < doufuu\ ;
+台形 < daikei\ ;
+恋恋 < renren\ ;
+遠足 < ensoku\ ;
+前金 < maekin\ ;
+剥身 < mukimi\ ;
+水源 < suigen\ ;
+送風 < soufuu\ ;
+遺言 < yuigon\ ;
+息子 < musuko\ ;
+悪名 < akumei\ ;
+原案 < gen''an\ ;
+祖国 < sokoku\ ;
+蔵書 < zousho\ ;
+悪友 < akuyuu\ ;
+幽霊 < yuurei\ ;
+悲劇 < higeki\ ;
+座金 < zagane\ ;
+反戦 < hansen\ ;
+度量 < doryou\ ;
+野心 < yashin\ ;
+勃興 < bokkou\ ;
+化石 < kaseki\ ;
+社外 < shagai\ ;
+古廟 < kobyou\ ;
+広間 < hiroma\ ;
+氷河 < hyouga\ ;
+平面 < heimen\ ;
+吻合 < fungou\ ;
+分類 < bunrui\ ;
+後生 < goshou\ ;
+快楽 < keraku\ ;
+薬園 < yakuen\ ;
+息女 < sokujo\ ;
+法外 < hougai\ ;
+鉄傘 < tessan\ ;
+幽閉 < yuuhei\ ;
+忍法 < ninpou\ ;
+同大 < doudai\ ;
+役目 < yakume\ ;
+著者 < chosha\ ;
+名声 < meisei\ ;
+古巣 < furusu\ ;
+水気 < mizuke\ ;
+年限 < nengen\ ;
+沢庵 < takuan\ ;
+毒矢 < dokuya\ ;
+合奏 < gassou\ ;
+毛皮 < kegawa\ ;
+南溟 < nanmei\ ;
+目鼻 < mehana\ ;
+都督 < totoku\ ;
+南満 < nanman\ ;
+運賃 < unchin\ ;
+原文 < genbun\ ;
+麦価 < bakuka\ ;
+禁令 < kinrei\ ;
+藩主 < hanshu\ ;
+知育 < chiiku\ ;
+効能 < kounou\ ;
+分際 < bunzai\ ;
+遁走 < tonsou\ ;
+吉報 < kippou\ ;
+怠慢 < taiman\ ;
+造酒 < zoushu\ ;
+分院 < bun''in\ ;
+分限 < bungen\ ;
+思慮 < shiryo\ ;
+凱風 < gaifuu\ ;
+怨念 < on''nen\ ;
+化生 < keshou\ ;
+金山 < kinzan\ ;
+悟入 < gonyuu\ ;
+逸足 < issoku\ ;
+砥石 < toishi\ ;
+古家 < furuie\ ;
+薬味 < yakumi\ ;
+眼鏡 < megane\ ;
+真青 < massao\ ;
+半減 < hangen\ ;
+号外 < gougai\ ;
+達観 < takkan\ ;
+出際 < degiwa\ ;
+収差 < shuusa\ ;
+決意 < ketsui\ ;
+底辺 < teihen\ ;
+君命 < kunmei\ ;
+野宿 < nojuku\ ;
+短編 < tanpen\ ;
+葛粉 < kuzuko\ ;
+通運 < tsuuun\ ;
+薄塩 < usujio\ ;
+悪人 < akunin\ ;
+連載 < rensai\ ;
+別邸 < bettei\ ;
+波及 < hakyuu\ ;
+原拠 < genkyo\ ;
+弩級 < dokyuu\ ;
+毛玉 < kedama\ ;
+里子 < satogo\ ;
+社命 < shamei\ ;
+歯肉 < haniku\ ;
+荷鞍 < nigura\ ;
+石粉 < ishiko\ ;
+悩乱 < nouran\ ;
+厄日 < yakubi\ ;
+南欧 < nan''ou\ ;
+耳鼻科 < jibika\ ;
+遊覧 < yuuran\ ;
+遮蔽 < shahei\ ;
+薬効 < yakkou\ ;
+名品 < meihin\ ;
+社友 < shayuu\ ;
+郡県 < gunken\ ;
+重婚 < juukon\ ;
+送金 < soukin\ ;
+厚手 < atsude\ ;
+幕間 < makuai\ ;
+年金 < nenkin\ ;
+反射 < hansha\ ;
+反対 < hantai\ ;
+名吟 < meigin\ ;
+目高 < medaka\ ;
+返電 < henden\ ;
+鈍刀 < dontou\ ;
+破獄 < hagoku\ ;
+油圧 < yuatsu\ ;
+卯月 < udzuki\ ;
+水木 < mizuki\ ;
+砂礫 < sareki\ ;
+怒張 < dochou\ ;
+画架座 < gakaza\ ;
+分銅 < fundou\ ;
+不安気 < fuange\ ;
+逸話 < itsuwa\ ;
+草魚 < sougyo\ ;
+即時 < sokuji\ ;
+弁者 < bensha\ ;
+通路 < tsuuro\ ;
+蓮根 < renkon\ ;
+合同 < goudou\ ;
+近隣 < kinrin\ ;
+大出来 < oodeki\ ;
+重変 < juuhen\ ;
+風邪気 < kazeke\ ;
+荒馬 < arauma\ ;
+快挙 < kaikyo\ ;
+分野 < bun''ya\ ;
+酒杯 < shuhai\ ;
+同勢 < douzei\ ;
+気楽 < kiraku\ ;
+民権 < minken\ ;
+刃針 < habari\ ;
+武器庫 < bukiko\ ;
+参宮 < sanguu\ ;
+分配 < bunpai\ ;
+遺脱 < idatsu\ ;
+述 < jutsu\ ;
+必 < hitsu\ ;
+辻 < tsuji\ ;
+徹 < tetsu\ ;
+瞥 < betsu\ ;
+後 < nochi\ ;
+律 < ritsu\ ;
+着 < chaku\ ;
+式 < shiki\ ;
+皺 < shiwa\ ;
+躅 < choku\ ;
+百 < hyaku\ ;
+白 < shiro\ ;
+發 < hotsu\ ;
+発 < hatsu\ ;
+幸 < sachi\ ;
+年 < toshi\ ;
+癪 < shaku\ ;
+巴 < tomoe\ ;
+病 < yamai\ ;
+略 < ryaku\ ;
+畜 < chiku\ ;
+町 < machi\ ;
+男 < otoko\ ;
+由 < yoshi\ ;
+島 < shima\ ;
+質 < tachi\ ;
+岸 < kishi\ ;
+屈 < kutsu\ ;
+尻 < shiri\ ;
+實 < jitsu\ ;
+察 < satsu\ ;
+密 < mitsu\ ;
+宴 < utage\ ;
+客 < kyaku\ ;
+猾 < katsu\ ;
+説 < setsu\ ;
+詰 < kitsu\ ;
+爺 < jijii\ ;
+爪 < tsume\ ;
+訣 < ketsu\ ;
+觸 < shoku\ ;
+角 < tsuno\ ;
+妻 < tsuma\ ;
+熱 < netsu\ ;
+西 < nishi\ ;
+奴 < yatsu\ ;
+奪 < datsu\ ;
+夏 < natsu\ ;
+烈 < retsu\ ;
+袷 < awase\ ;
+炎 < honoo\ ;
+境 < sakai\ ;
+塵 < chiri\ ;
+塚 < tsuka\ ;
+基 < motoi\ ;
+埒 < rachi\ ;
+齢 < yowai\ ;
+鼾 < ibiki\ ;
+蜂 < hachi\ ;
+黐 < mochi\ ;
+滅 < metsu\ ;
+蚕 < kaiko\ ;
+鹿 < shika\ ;
+虫 < mushi\ ;
+虞 < osore\ ;
+噂 < uwasa\ ;
+淵 < fuchi\ ;
+鷲 < washi\ ;
+淑 < shuku\ ;
+鶴 < tsuru\ ;
+喇 < ratsu\ ;
+唾 < tsuba\ ;
+泉 < izumi\ ;
+油 < abura\ ;
+没 < botsu\ ;
+咄 < totsu\ ;
+汁 < tsuyu\ ;
+鰌 < dojou\ ;
+吉 < kichi\ ;
+口 < kuchi\ ;
+単 < hitoe\ ;
+卒 < sotsu\ ;
+次 < tsugi\ ;
+櫛 < kushi\ ;
+芝 < shiba\ ;
+力 < ryoku\ ;
+艶 < tsuya\ ;
+橋 < hashi\ ;
+樫 < kashi\ ;
+舌 < shita\ ;
+刃 < yaiba\ ;
+腰 < koshi\ ;
+兎 < usagi\ ;
+兀 < kotsu\ ;
+脈 < myaku\ ;
+飯 < meshi\ ;
+梨 < nashi\ ;
+梢 < kozue\ ;
+梓 < azusa\ ;
+額 < hitai\ ;
+頁 < peiji\ ;
+翁 < okina\ ;
+鞭 < muchi\ ;
+鞄 < kaban\ ;
+松 < matsu\ ;
+罰 < batsu\ ;
+罪 < tsumi\ ;
+佛 < butsu\ ;
+位 < kurai\ ;
+伸 < noshi\ ;
+霰 < arare\ ;
+霜 < shimo\ ;
+月 < tsuki\ ;
+曲 < kyoku\ ;
+雜 < zatsu\ ;
+仙 < sento\ ;
+雇 < yatoi\ ;
+乾 < hoshi\ ;
+主 < nushi\ ;
+綱 < tsuna\ ;
+絶 < zetsu\ ;
+終 < owari\ ;
+操 < misao\ ;
+節 < bushi\ ;
+箒 < houki\ ;
+答 < kotae\ ;
+拂 < futsu\ ;
+戦 < ikusa\ ;
+道 < michi\ ;
+逹 < tatsu\ ;
+逆 < gyaku\ ;
+瞽者 < kosha\ ;
+名前 < namae\ ;
+帰順 < kijun\ ;
+座視 < zashi\ ;
+快打 < kaida\ ;
+送辞 < souji\ ;
+名利 < meiri\ ;
+眉間 < miken\ ;
+磁性 < jisei\ ;
+薬価 < yakka\ ;
+砲煙 < houen\ ;
+礼儀 < reigi\ ;
+法具 < hougu\ ;
+吏党 < ritou\ ;
+目顔 < megao\ ;
+碑文 < hibun\ ;
+連語 < rengo\ ;
+重囲 < choui\ ;
+沮喪 < sosou\ ;
+遺習 < ishuu\ ;
+選者 < senja\ ;
+歌聖 < kasei\ ;
+造語 < zougo\ ;
+砲火 < houka\ ;
+蒸気 < jouki\ ;
+怪奇 < kaiki\ ;
+連記 < renki\ ;
+重器 < juuki\ ;
+加糖 < katou\ ;
+恩典 < onten\ ;
+序論 < joron\ ;
+毅然 < kizen\ ;
+制覇 < seiha\ ;
+歎美 < tanbi\ ;
+退路 < tairo\ ;
+応手 < oushu\ ;
+速記 < sokki\ ;
+波乱 < haran\ ;
+応戦 < ousen\ ;
+連覇 < renpa\ ;
+怨声 < ensei\ ;
+油単 < yutan\ ;
+序詞 < joshi\ ;
+医業 < igyou\ ;
+序言 < jogen\ ;
+忘我 < bouga\ ;
+荷重 < kajuu\ ;
+区検 < kuken\ ;
+南斗 < nanto\ ;
+沽券 < koken\ ;
+半期 < hanki\ ;
+同価 < douka\ ;
+動画 < douga\ ;
+河南 < kanan\ ;
+薄刃 < usuba\ ;
+加算 < kasan\ ;
+年賦 < nenpu\ ;
+口味 < koumi\ ;
+迷路 < meiro\ ;
+油剤 < yuzai\ ;
+年賀 < nenga\ ;
+可動 < kadou\ ;
+年貢 < nengu\ ;
+御株 < okabu\ ;
+厨子 < zushi\ ;
+別記 < bekki\ ;
+吏人 < rijin\ ;
+各個 < kakko\ ;
+邪知 < jachi\ ;
+古参 < kosan\ ;
+法事 < houji\ ;
+蕃夷 < ban''i\ ;
+重味 < omomi\ ;
+樹齢 < jurei\ ;
+千木 < chigi\ ;
+恵与 < keiyo\ ;
+酸度 < sando\ ;
+励磁 < reiji\ ;
+剣舞 < kenbu\ ;
+法主 < hossu\ ;
+母港 < bokou\ ;
+野合 < yagou\ ;
+同事 < douji\ ;
+可分 < kabun\ ;
+野史 < yashi\ ;
+助祭 < josai\ ;
+各位 < kakui\ ;
+御札 < ofuda\ ;
+過般 < kahan\ ;
+分賦 < bunpu\ ;
+種々 < shuju\ ;
+忘恩 < bouon\ ;
+待機 < taiki\ ;
+恩人 < onjin\ ;
+忌憚 < kitan\ ;
+運航 < unkou\ ;
+河内 < hanoi\ ;
+恨事 < konji\ ;
+性器 < seiki\ ;
+怒声 < dosei\ ;
+機首 < kishu\ ;
+列記 < rekki\ ;
+古制 < kosei\ ;
+反哺 < hanpo\ ;
+十日 < tooka\ ;
+御昼 < ohiru\ ;
+都民 < tomin\ ;
+看過 < kanka\ ;
+古刀 < kotou\ ;
+弥生 < yayoi\ ;
+送話 < souwa\ ;
+平語 < heigo\ ;
+毒気 < dokke\ ;
+矛盾 < mujun\ ;
+破水 < hasui\ ;
+金利 < kinri\ ;
+泉下 < senka\ ;
+返辞 < henji\ ;
+鵞毛 < gamou\ ;
+叙勲 < jokun\ ;
+沖合 < okiai\ ;
+古典 < koten\ ;
+鯨飲 < geiin\ ;
+重利 < juuri\ ;
+印影 < in''ei\ ;
+単打 < tanda\ ;
+御数 < okazu\ ;
+受動 < judou\ ;
+道義 < dougi\ ;
+後架 < kouka\ ;
+遠縁 < tooen\ ;
+分課 < bunka\ ;
+邦画 < houga\ ;
+野党 < yatou\ ;
+着衣 < yakui\ ;
+受刑 < jukei\ ;
+毎次 < maiji\ ;
+後期 < kouki\ ;
+蕩児 < touji\ ;
+油井 < yusei\ ;
+建碑 < kenpi\ ;
+冥闇 < meian\ ;
+布陣 < fujin\ ;
+荒野 < kouya\ ;
+治下 < chika\ ;
+辺鄙 < henpi\ ;
+酒徒 < shuto\ ;
+機雷 < kirai\ ;
+歌稿 < kakou\ ;
+弧状 < kojou\ ;
+遷移 < sen''i\ ;
+帰還 < kikan\ ;
+歯痛 < haita\ ;
+民戸 < minko\ ;
+加盟 < kamei\ ;
+菊花 < kikka\ ;
+古例 < korei\ ;
+台下 < daika\ ;
+刻苦 < kokku\ ;
+母権 < boken\ ;
+古体 < kotai\ ;
+往来 < ourai\ ;
+受像 < juzou\ ;
+句会 < kukai\ ;
+古伝 < koden\ ;
+応対 < outai\ ;
+危峰 < kihou\ ;
+殺気 < sakki\ ;
+助産 < josan\ ;
+帰農 < kinou\ ;
+古代 < kodai\ ;
+古今 < kokon\ ;
+古人 < kojin\ ;
+違約 < iyaku\ ;
+原図 < genzu\ ;
+十手 < jitte\ ;
+民意 < min''i\ ;
+参加 < sanka\ ;
+冶金 < yakin\ ;
+石火 < sekka\ ;
+兵馬 < heiba\ ;
+御所 < gosho\ ;
+野人 < yajin\ ;
+弁疏 < benso\ ;
+原器 < genki\ ;
+造花 < zouka\ ;
+帝都 < teito\ ;
+英魂 < eikon\ ;
+厭味 < iyami\ ;
+危害 < kigai\ ;
+店舗 < tenpo\ ;
+配布 < haifu\ ;
+段歩 < tanbu\ ;
+単座 < tanza\ ;
+叙任 < jonin\ ;
+欧米 < oubei\ ;
+怒号 < dogou\ ;
+永存 < eizon\ ;
+工面 < kumen\ ;
+内需 < naiju\ ;
+受任 < junin\ ;
+後援 < kouen\ ;
+県議 < kengi\ ;
+勤求 < gongu\ ;
+看護 < kango\ ;
+円陣 < enjin\ ;
+酸基 < sanki\ ;
+帰趨 < kisuu\ ;
+当機 < touki\ ;
+弁理 < benri\ ;
+母材 < bozai\ ;
+徒手 < toshu\ ;
+盛運 < seiun\ ;
+歯牙 < shiga\ ;
+民度 < mindo\ ;
+運算 < unzan\ ;
+応変 < ouhen\ ;
+酒家 < shuka\ ;
+弥漫 < biman\ ;
+酒宴 < shuen\ ;
+鮟鱇 < ankou\ ;
+轟音 < gouon\ ;
+御念 < gonen\ ;
+得意 < tokui\ ;
+典雅 < tenga\ ;
+双互 < sougo\ ;
+勘気 < kanki\ ;
+辞退 < jitai\ ;
+原句 < genku\ ;
+遺留 < iryuu\ ;
+機銃 < kijuu\ ;
+都政 < tosei\ ;
+動気 < douki\ ;
+応報 < ouhou\ ;
+幼芽 < youga\ ;
+硬度 < koudo\ ;
+復帰 < fukki\ ;
+欺瞞 < giman\ ;
+遠矢 < tooya\ ;
+過程 < katei\ ;
+水夫 < suifu\ ;
+母斑 < bohan\ ;
+怜俐 < reiri\ ;
+市部 < shibu\ ;
+劫火 < gouka\ ;
+冥途 < meido\ ;
+参事 < sanji\ ;
+御幣 < gohei\ ;
+弾機 < danki\ ;
+遠眼 < engan\ ;
+破摧 < hasai\ ;
+近衛 < konoe\ ;
+短波 < tanpa\ ;
+遠目 < toome\ ;
+醇化 < junka\ ;
+判者 < hanja\ ;
+破損 < hason\ ;
+道破 < douha\ ;
+英霊 < eirei\ ;
+勇気 < yuuki\ ;
+気孔 < kikou\ ;
+加点 < katen\ ;
+酸味 < sanmi\ ;
+冠辞 < kanji\ ;
+英雄 < eiyuu\ ;
+快味 < kaimi\ ;
+平臥 < heiga\ ;
+厚利 < kouri\ ;
+徒弟 < totei\ ;
+短気 < tanki\ ;
+民家 < minka\ ;
+差金 < sakin\ ;
+部数 < busuu\ ;
+広義 < kougi\ ;
+勇武 < yuubu\ ;
+先駆 < senku\ ;
+邪法 < jahou\ ;
+忌垣 < igaki\ ;
+前科 < zenka\ ;
+氏子 < ujiko\ ;
+差配 < sahai\ ;
+短歌 < tanka\ ;
+内野 < naiya\ ;
+相補 < souho\ ;
+弦歌 < genka\ ;
+千家 < senke\ ;
+苦難 < kunan\ ;
+弘法 < guhou\ ;
+機転 < kiten\ ;
+破戒 < hakai\ ;
+毀損 < kison\ ;
+十字 < juuji\ ;
+差遣 < saken\ ;
+御宴 < gyoen\ ;
+勘査 < kansa\ ;
+矮樹 < waiju\ ;
+白雨 < hakuu\ ;
+御宅 < otaku\ ;
+内部 < naibu\ ;
+冷語 < reigo\ ;
+座禅 < zazen\ ;
+荷葉 < kayou\ ;
+苦闘 < kutou\ ;
+辞譲 < jijou\ ;
+医学 < igaku\ ;
+加減 < kagen\ ;
+座礼 < zarei\ ;
+酒器 < shuki\ ;
+左遷 < sasen\ ;
+登院 < touin\ ;
+先非 < senpi\ ;
+運痴 < unchi\ ;
+市費 < shihi\ ;
+往年 < ounen\ ;
+府税 < fuzei\ ;
+研摩 < kenma\ ;
+巡邏 < junra\ ;
+剣璽 < kenji\ ;
+免除 < menjo\ ;
+花魁 < oiran\ ;
+延滞 < entai\ ;
+左辺 < sahen\ ;
+微塵 < mijin\ ;
+部所 < busho\ ;
+匹婦 < hippu\ ;
+光陰 < kouin\ ;
+次男 < jinan\ ;
+加法 < kahou\ ;
+後尾 < koubi\ ;
+円転 < enten\ ;
+道理 < douri\ ;
+歳次 < saiji\ ;
+冗費 < jouhi\ ;
+別箇 < bekko\ ;
+茶話 < chawa\ ;
+母性 < bosei\ ;
+気圏 < kiken\ ;
+市議 < shigi\ ;
+気団 < kidan\ ;
+応分 < oubun\ ;
+御大 < ontai\ ;
+加水 < kasui\ ;
+毛布 < moufu\ ;
+再起 < saiki\ ;
+永劫 < eigou\ ;
+水化 < suika\ ;
+途端 < totan\ ;
+都度 < tsudo\ ;
+母形 < bokei\ ;
+平素 < heiso\ ;
+勿怪 < mokke\ ;
+写譜 < shafu\ ;
+正比 < seihi\ ;
+彼岸 < higan\ ;
+印判 < inpan\ ;
+毎度 < maido\ ;
+全都 < zento\ ;
+印刀 < intou\ ;
+全部 < zenbu\ ;
+水利 < suiri\ ;
+彩度 < saido\ ;
+形影 < keiei\ ;
+別科 < bekka\ ;
+遠火 < toobi\ ;
+葉末 < hazue\ ;
+快事 < kaiji\ ;
+府県 < fuken\ ;
+冗語 < jougo\ ;
+区域 < kuiki\ ;
+巨費 < kyohi\ ;
+御坊 < gobou\ ;
+矢来 < yarai\ ;
+化導 < kedou\ ;
+英邁 < eimai\ ;
+後妻 < gosai\ ;
+比島 < hitou\ ;
+単句 < tanku\ ;
+気品 < kihin\ ;
+再議 < saigi\ ;
+工費 < kouhi\ ;
+勝手 < katte\ ;
+眼窩 < ganka\ ;
+布袋 < hotei\ ;
+艶麗 < enrei\ ;
+優雅 < yuuga\ ;
+毛孔 < keana\ ;
+破屋 < haoku\ ;
+勤惰 < kinda\ ;
+内議 < naigi\ ;
+歔欷 < kyoki\ ;
+輸銀 < yugin\ ;
+全躯 < zenku\ ;
+平穏 < heion\ ;
+即位 < sokui\ ;
+序盤 < joban\ ;
+近習 < kinju\ ;
+模造 < mozou\ ;
+母屋 < omoya\ ;
+魑魅 < chimi\ ;
+永住 < eijuu\ ;
+目茶 < mecha\ ;
+公路 < kouro\ ;
+切符 < kippu\ ;
+横転 < outen\ ;
+年租 < nenso\ ;
+軍鼓 < gunko\ ;
+半可 < hanka\ ;
+半句 < hanku\ ;
+単利 < tanri\ ;
+徳化 < tokka\ ;
+利益 < rieki\ ;
+次点 < jiten\ ;
+当座 < touza\ ;
+従因 < juuin\ ;
+永代 < eitai\ ;
+気勢 < kisei\ ;
+歯朶 < shida\ ;
+歳暮 < seibo\ ;
+彼奴 < aitsu\ ;
+復古 < fukko\ ;
+凄艶 < seien\ ;
+母子 < boshi\ ;
+遠海 < enkai\ ;
+気前 < kimae\ ;
+千古 < senko\ ;
+冷菓 < reika\ ;
+引数 < insuu\ ;
+匪団 < hidan\ ;
+配備 < haibi\ ;
+微動 < bidou\ ;
+永世 < eisei\ ;
+段差 < dansa\ ;
+役夫 < ekifu\ ;
+気分 < kibun\ ;
+酒保 < shuho\ ;
+強意 < kyoui\ ;
+内規 < naiki\ ;
+遠泳 < en''ei\ ;
+草花 < souka\ ;
+酔余 < suiyo\ ;
+蒲団 < futon\ ;
+御台 < midai\ ;
+軍鶏 < shamo\ ;
+連理 < renri\ ;
+邪推 < jasui\ ;
+民利 < minri\ ;
+運漕 < unsou\ ;
+連珠 < renju\ ;
+利用 < riyou\ ;
+微分 < bibun\ ;
+午前 < gozen\ ;
+英資 < eishi\ ;
+内裏 < dairi\ ;
+輸送 < yusou\ ;
+先途 < sendo\ ;
+助攻 < jokou\ ;
+殿宇 < den''u\ ;
+芟除 < sanjo\ ;
+切磋 < sessa\ ;
+民具 < mingu\ ;
+鵄尾 < shibi\ ;
+医博 < ihaku\ ;
+茶菓 < chaka\ ;
+微光 < bikou\ ;
+歩数 < hosuu\ ;
+毎夜 < maiyo\ ;
+武断 < budan\ ;
+単位 < tan''i\ ;
+兼補 < kenpo\ ;
+加数 < kasuu\ ;
+当家 < touke\ ;
+強引 < gouin\ ;
+徒名 < adana\ ;
+御凸 < odeko\ ;
+当字 < ateji\ ;
+配下 < haika\ ;
+公訴 < kouso\ ;
+平癒 < heiyu\ ;
+発起 < hokki\ ;
+気体 < kitai\ ;
+邪慳 < jaken\ ;
+区分 < kubun\ ;
+避暑 < hisho\ ;
+遊泳 < yuuei\ ;
+区処 < kusho\ ;
+母堂 < bodou\ ;
+御免 < gomen\ ;
+御先 < osaki\ ;
+茶舗 < chaho\ ;
+勇往 < yuuou\ ;
+弓手 < yunde\ ;
+南下 < nanka\ ;
+区内 < kunai\ ;
+色香 < iroka\ ;
+徒労 < torou\ ;
+党議 < tougi\ ;
+邪悪 < jaaku\ ;
+年甫 < nenpo\ ;
+部外 < bugai\ ;
+歌書 < kasho\ ;
+剛気 < gouki\ ;
+弧形 < kokei\ ;
+勢家 < seika\ ;
+劃期 < kakki\ ;
+砂岩 < sagan\ ;
+邪恋 < jaren\ ;
+気丈 < kijou\ ;
+復位 < fukui\ ;
+徒刑 < tokei\ ;
+目線 < mesen\ ;
+萌木 < moegi\ ;
+冷罵 < reiba\ ;
+民事 < minji\ ;
+矩形 < kukei\ ;
+遺族 < izoku\ ;
+毛唐 < ketou\ ;
+全裸 < zenra\ ;
+邪念 < janen\ ;
+助成 < josei\ ;
+軍馬 < gunba\ ;
+創案 < souan\ ;
+模試 < moshi\ ;
+遊歩 < yuuho\ ;
+凹眼 < ougan\ ;
+当夜 < touya\ ;
+車馬 < shaba\ ;
+加担 < katan\ ;
+鴨居 < kamoi\ ;
+御供 < otomo\ ;
+徒党 < totou\ ;
+円蓋 < engai\ ;
+千代 < chiyo\ ;
+兄貴 < aniki\ ;
+苦言 < kugen\ ;
+御伽 < otogi\ ;
+化合 < kagou\ ;
+利点 < riten\ ;
+鬼面 < kimen\ ;
+輿論 < yoron\ ;
+十五 < juugo\ ;
+死後 < shigo\ ;
+十二 < juuni\ ;
+横行 < oukou\ ;
+御仁 < gojin\ ;
+後光 < gokou\ ;
+先議 < sengi\ ;
+遠来 < enrai\ ;
+前歯 < maeba\ ;
+遠望 < enbou\ ;
+出番 < deban\ ;
+知己 < chiki\ ;
+励弧 < reiko\ ;
+看破 < kanpa\ ;
+御上 < okami\ ;
+免訴 < menso\ ;
+役務 < ekimu\ ;
+蒙古 < mouko\ ;
+冠者 < kanja\ ;
+廃棄 < haiki\ ;
+利潤 < rijun\ ;
+僧院 < souin\ ;
+軍靴 < gunka\ ;
+冤罪 < enzai\ ;
+遠景 < enkei\ ;
+内苑 < naien\ ;
+廃案 < haian\ ;
+軍需 < gunju\ ;
+鬼門 < kimon\ ;
+遠方 < enpou\ ;
+左舷 < sagen\ ;
+允許 < inkyo\ ;
+帰社 < kisha\ ;
+劣弧 < rekko\ ;
+部品 < buhin\ ;
+砂塵 < sajin\ ;
+初演 < shoen\ ;
+歩廊 < horou\ ;
+歌手 < kashu\ ;
+後事 < kouji\ ;
+勇婦 < yuufu\ ;
+歪度 < waido\ ;
+平炉 < heiro\ ;
+農科 < nouka\ ;
+武弁 < buben\ ;
+都内 < tonai\ ;
+弟子 < deshi\ ;
+左脳 < sanou\ ;
+加年 < kanen\ ;
+近畿 < kinki\ ;
+弁座 < benza\ ;
+別派 < beppa\ ;
+正座 < seiza\ ;
+引導 < indou\ ;
+連歌 < renga\ ;
+魔道 < madou\ ;
+影像 < eizou\ ;
+巫者 < fusha\ ;
+凹版 < ouban\ ;
+内耳 < naiji\ ;
+当否 < touhi\ ;
+利水 < risui\ ;
+造次 < zouji\ ;
+六花 < rikka\ ;
+処理 < shori\ ;
+延引 < en''in\ ;
+睿智 < eichi\ ;
+八苦 < hakku\ ;
+比倫 < hirin\ ;
+過敏 < kabin\ ;
+延延 < en''en\ ;
+動因 < douin\ ;
+弊履 < heiri\ ;
+遺徳 < itoku\ ;
+破倫 < harin\ ;
+北京 < pekin\ ;
+砂嘴 < sashi\ ;
+前期 < zenki\ ;
+次数 < jisuu\ ;
+造機 < zouki\ ;
+比例 < hirei\ ;
+部分 < bubun\ ;
+再縁 < saien\ ;
+目眩 < memai\ ;
+樹脂 < jushi\ ;
+残基 < zanki\ ;
+逸書 < issho\ ;
+都会 < tokai\ ;
+欽慕 < kinbo\ ;
+部内 < bunai\ ;
+六腑 < roppu\ ;
+逓次 < teiji\ ;
+都人 < tojin\ ;
+運搬 < unpan\ ;
+前日 < maebi\ ;
+母体 < botai\ ;
+利権 < riken\ ;
+遷座 < senza\ ;
+加害 < kagai\ ;
+遠慮 < enryo\ ;
+勧化 < kange\ ;
+勇図 < yuuto\ ;
+菩提 < bodai\ ;
+僧都 < souzu\ ;
+武官 < bukan\ ;
+初歩 < shoho\ ;
+石器 < sekki\ ;
+退治 < taiji\ ;
+菲才 < hisai\ ;
+勤務 < kinmu\ ;
+正字 < seiji\ ;
+巨細 < kosai\ ;
+運指 < unshi\ ;
+鳥居 < torii\ ;
+平気 < heiki\ ;
+連架 < renka\ ;
+分派 < bunpa\ ;
+軍部 < gunbu\ ;
+出湯 < ideyu\ ;
+度数 < dosuu\ ;
+遊技 < yuugi\ ;
+退歩 < taiho\ ;
+邦土 < houdo\ ;
+避寒 < hikan\ ;
+部会 < bukai\ ;
+利根 < rikon\ ;
+崎陽 < kiyou\ ;
+年次 < nenji\ ;
+差等 < satou\ ;
+軌道 < kidou\ ;
+遺尿 < inyou\ ;
+死因 < shiin\ ;
+勲位 < kun''i\ ;
+葬具 < sougu\ ;
+円筒 < entou\ ;
+分母 < bunbo\ ;
+茶目 < chame\ ;
+店是 < tenze\ ;
+募兵 < bohei\ ;
+殿下 < denka\ ;
+欝憤 < uppun\ ;
+葬儀 < sougi\ ;
+違心 < ishin\ ;
+弱化 < jakka\ ;
+加増 < kazou\ ;
+遊惰 < yuuda\ ;
+募債 < bosai\ ;
+過怠 < katai\ ;
+出汁 < dashi\ ;
+監理 < kanri\ ;
+前戯 < zengi\ ;
+師父 < shifu\ ;
+庸愚 < yougu\ ;
+引喩 < in''yu\ ;
+帝王 < teiou\ ;
+避妊 < hinin\ ;
+内科 < naika\ ;
+序文 < jobun\ ;
+軍路 < gunro\ ;
+序数 < josuu\ ;
+残務 < zanmu\ ;
+初期 < shoki\ ;
+身重 < miomo\ ;
+座所 < zasho\ ;
+輪舞 < rinbu\ ;
+途方 < tohou\ ;
+儀装 < gisou\ ;
+幽暗 < yuuan\ ;
+英米 < eibei\ ;
+軍費 < gunpi\ ;
+魔街 < magai\ ;
+転訛 < tenka\ ;
+転記 < tenki\ ;
+凱歌 < gaika\ ;
+次年 < jinen\ ;
+遺墨 < iboku\ ;
+遅延 < chien\ ;
+幼時 < youji\ ;
+盆画 < bonga\ ;
+刑期 < keiki\ ;
+年期 < nenki\ ;
+動作 < dousa\ ;
+出様 < deyou\ ;
+芸苑 < geien\ ;
+弧光 < kokou\ ;
+歌壇 < kadan\ ;
+兵科 < heika\ ;
+助命 < jomei\ ;
+高雅 < kouga\ ;
+常温 < jouon\ ;
+前後 < zengo\ ;
+武問 < bumon\ ;
+労務 < roumu\ ;
+差益 < saeki\ ;
+連打 < renda\ ;
+優艶 < yuuen\ ;
+花茎 < kakei\ ;
+砂上 < sajou\ ;
+軍議 < gungi\ ;
+平時 < heiji\ ;
+伊呂波 < iroha\ ;
+円盤 < enban\ ;
+偽電 < giden\ ;
+皮相 < hisou\ ;
+返歌 < henka\ ;
+前座 < zenza\ ;
+痩躯 < souku\ ;
+分木 < bungi\ ;
+正員 < seiin\ ;
+内皮 < naihi\ ;
+模範 < mohan\ ;
+芽胞 < gahou\ ;
+刀架 < touka\ ;
+載荷 < saika\ ;
+皮癬 < hizen\ ;
+遊山 < yusan\ ;
+武名 < bumei\ ;
+亜鉛華 < aenka\ ;
+芙蓉 < fuyou\ ;
+死児 < shiji\ ;
+底意 < sokoi\ ;
+自首 < jishu\ ;
+軍記 < gunki\ ;
+劣化 < rekka\ ;
+遠大 < endai\ ;
+具眼 < gugan\ ;
+次官 < jikan\ ;
+次子 < jishi\ ;
+武勲 < bukun\ ;
+延命 < enmei\ ;
+元素 < genso\ ;
+武勇 < buyuu\ ;
+武功 < bukou\ ;
+廷吏 < teiri\ ;
+円環 < enkan\ ;
+岩魚 < iwana\ ;
+初手 < shote\ ;
+優美 < yuubi\ ;
+儒良 < jugon\ ;
+児童 < jidou\ ;
+歓呼 < kanko\ ;
+鳳凰 < houou\ ;
+知事 < chiji\ ;
+道央 < douou\ ;
+軍衣 < gun''i\ ;
+制度 < seido\ ;
+歩兵 < hohei\ ;
+停音 < teion\ ;
+引例 < inrei\ ;
+痴話 < chiwa\ ;
+加冠 < kakan\ ;
+連座 < renza\ ;
+遠地 < enchi\ ;
+白禍 < hakka\ ;
+過大 < kadai\ ;
+苛税 < kazei\ ;
+遊女 < yuujo\ ;
+輝線 < kisen\ ;
+入相 < iriai\ ;
+芋茎 < zuiki\ ;
+疎開 < sokai\ ;
+前婦 < zenpu\ ;
+偏頗 < henpa\ ;
+遷化 < senge\ ;
+維持費 < ijihi\ ;
+落下 < rakka\ ;
+具現 < gugen\ ;
+冷気 < reiki\ ;
+儒者 < jusha\ ;
+舗道 < hodou\ ;
+先祖 < senzo\ ;
+発破 < happa\ ;
+畳韻 < jouin\ ;
+相棒 < aibou\ ;
+廃園 < haien\ ;
+近時 < kinji\ ;
+魚肥 < gyohi\ ;
+躍起 < yakki\ ;
+花紋 < kamon\ ;
+元祖 < ganso\ ;
+盗汗 < nease\ ;
+武人 < bujin\ ;
+花粉 < kafun\ ;
+舞蹈 < butou\ ;
+幾度 < ikudo\ ;
+次回 < jikai\ ;
+鬱蒼 < ussou\ ;
+舞踊 < buyou\ ;
+輪禍 < rinka\ ;
+刑徒 < keito\ ;
+年後 < nengo\ ;
+連子 < renji\ ;
+相板 < aiban\ ;
+前場 < zenba\ ;
+田麩 < denbu\ ;
+凹所 < ousho\ ;
+偽造 < gizou\ ;
+苦界 < kugai\ ;
+常時 < jouji\ ;
+還付 < kanpu\ ;
+運営 < un''ei\ ;
+年度 < nendo\ ;
+逮夜 < taiya\ ;
+退座 < taiza\ ;
+利害 < rigai\ ;
+艱苦 < kanku\ ;
+次善 < jizen\ ;
+利子 < rishi\ ;
+別家 < bekke\ ;
+遺作 < isaku\ ;
+荒木 < araki\ ;
+岩間 < iwama\ ;
+庭園 < teien\ ;
+鯨波 < geiha\ ;
+年差 < nensa\ ;
+鯨油 < geiyu\ ;
+蹶起 < kekki\ ;
+円満 < enman\ ;
+農期 < nouki\ ;
+判子 < hanko\ ;
+華厳 < kegon\ ;
+遠出 < toode\ ;
+運命 < unmei\ ;
+道化 < douke\ ;
+歌仙 < kasen\ ;
+転義 < tengi\ ;
+次号 < jigou\ ;
+歌人 < kajin\ ;
+相撲 < sumou\ ;
+艶聞 < enbun\ ;
+序奏 < josou\ ;
+近所 < kinjo\ ;
+凡打 < bonda\ ;
+凹形 < oukei\ ;
+舎費 < shahi\ ;
+過勤 < kakin\ ;
+過労 < karou\ ;
+自邸 < jitei\ ;
+運勢 < unsei\ ;
+巨波 < kyoha\ ;
+運動 < undou\ ;
+辞柄 < jihei\ ;
+過剰 < kajou\ ;
+畝間 < unema\ ;
+自選 < jisen\ ;
+辞林 < jirin\ ;
+平家 < heike\ ;
+逸品 < ippin\ ;
+道具 < dougu\ ;
+平安 < heian\ ;
+皆無 < kaimu\ ;
+凡愚 < bongu\ ;
+分岐 < bunki\ ;
+前古 < zenko\ ;
+画餅 < gabei\ ;
+依估地 < ekoji\ ;
+辞書 < jisho\ ;
+造園 < zouen\ ;
+剰余 < jouyo\ ;
+庶務 < shomu\ ;
+画風 < gafuu\ ;
+儀範 < gihan\ ;
+芳眉 < houbi\ ;
+初夜 < shoya\ ;
+樹液 < jueki\ ;
+初夏 < shoka\ ;
+希望 < kibou\ ;
+巨歩 < kyoho\ ;
+幼女 < youjo\ ;
+画題 < gadai\ ;
+分家 < bunke\ ;
+希書 < kisho\ ;
+帰投 < kitou\ ;
+冤枉 < en''ou\ ;
+樹海 < jukai\ ;
+幾夜 < ikuyo\ ;
+幾多 < ikuta\ ;
+次兄 < jikei\ ;
+次元 < jigen\ ;
+迷子 < maigo\ ;
+機械 < kikai\ ;
+座右 < zayuu\ ;
+幻夢 < genmu\ ;
+先父 < senpu\ ;
+遡上 < sojou\ ;
+機根 < kikon\ ;
+偽誓 < gisei\ ;
+造営 < zouei\ ;
+舗装 < hosou\ ;
+異郷 < ikyou\ ;
+画面 < gamen\ ;
+倍音 < baion\ ;
+棋風 < kifuu\ ;
+偽計 < gikei\ ;
+相愛 < souai\ ;
+偽言 < gigen\ ;
+偶語 < guugo\ ;
+機材 < kizai\ ;
+次便 < jibin\ ;
+連呼 < renko\ ;
+左様 < sayou\ ;
+偶詠 < guuei\ ;
+魔神 < majin\ ;
+廊下 < rouka\ ;
+驟雨 < shuuu\ ;
+盲愛 < mouai\ ;
+再案 < saian\ ;
+意気地 < ikuji\ ;
+儀礼 < girei\ ;
+自賛 < jisan\ ;
+連句 < renku\ ;
+路頭 < rotou\ ;
+迷夢 < meimu\ ;
+英法 < eihou\ ;
+自販 < jihan\ ;
+苦渋 < kujuu\ ;
+相応 < souou\ ;
+次代 < jidai\ ;
+尾鰭 < obire\ ;
+師恩 < shion\ ;
+公武 < koubu\ ;
+転移 < ten''i\ ;
+路面 < romen\ ;
+岡辺 < okabe\ ;
+偉蹟 < iseki\ ;
+党派 < touha\ ;
+運上 < unjou\ ;
+業苦 < gouku\ ;
+層雲 < souun\ ;
+座像 < zazou\ ;
+帷幕 < ibaku\ ;
+帷帳 < ichou\ ;
+利口 < rikou\ ;
+機敏 < kibin\ ;
+入歯 < ireba\ ;
+庶事 < shoji\ ;
+魔睡 < masui\ ;
+横死 < oushi\ ;
+軌範 < kihan\ ;
+円本 < enpon\ ;
+儒生 < jusei\ ;
+巡査 < junsa\ ;
+再映 < saiei\ ;
+庵主 < anshu\ ;
+自認 < jinin\ ;
+花片 < kahen\ ;
+鬼神 < kijin\ ;
+輸液 < yueki\ ;
+甘露 < kanro\ ;
+檀徒 < danto\ ;
+異象 < ishou\ ;
+茂林 < morin\ ;
+保養 < hoyou\ ;
+光波 < kouha\ ;
+距離 < kyori\ ;
+左方 < sahou\ ;
+座乗 < zajou\ ;
+樹林 < jurin\ ;
+魔界 < makai\ ;
+平和 < heiwa\ ;
+具有 < guyuu\ ;
+公案 < kouan\ ;
+処女 < shojo\ ;
+帝座 < teiza\ ;
+刑吏 < keiri\ ;
+送受 < souju\ ;
+差損 < sason\ ;
+模様 < moyou\ ;
+機才 < kisai\ ;
+凡夫 < bonpu\ ;
+刻下 < kokka\ ;
+退化 < taika\ ;
+准尉 < jun''i\ ;
+冶工 < yakou\ ;
+横柄 < ouhei\ ;
+典故 < tenko\ ;
+色目 < irome\ ;
+利便 < riben\ ;
+画道 < gadou\ ;
+路銀 < rogin\ ;
+草履 < zouri\ ;
+保険 < hoken\ ;
+年利 < nenri\ ;
+英書 < eisho\ ;
+六日 < muika\ ;
+分区 < bunku\ ;
+八日 < youka\ ;
+公方 < kubou\ ;
+横暴 < oubou\ ;
+冥府 < meifu\ ;
+刑具 < keigu\ ;
+苦杯 < kuhai\ ;
+英明 < eimei\ ;
+檀家 < danka\ ;
+模本 < mohon\ ;
+入日 < irihi\ ;
+尾長 < onaga\ ;
+農婦 < noufu\ ;
+小鬢 < kobin\ ;
+判事 < hanji\ ;
+分利 < bunri\ ;
+英断 < eidan\ ;
+傅育 < fuiku\ ;
+横断 < oudan\ ;
+英文 < eibun\ ;
+凡器 < bonki\ ;
+英数 < eisuu\ ;
+冴寒 < gokan\ ;
+途上 < tojou\ ;
+布巾 < fukin\ ;
+相場 < souba\ ;
+騒音 < souon\ ;
+党是 < touze\ ;
+農奴 < noudo\ ;
+用途 < youto\ ;
+光栄 < kouei\ ;
+茶屋 < chaya\ ;
+輿望 < yobou\ ;
+自著 < jicho\ ;
+児曹 < jisou\ ;
+出前 < demae\ ;
+小馬 < kouma\ ;
+荷台 < nidai\ ;
+甘酢 < amazu\ ;
+苗木 < naegi\ ;
+駻馬 < kanba\ ;
+画賛 < gasan\ ;
+白旗 < hakki\ ;
+送付 < soufu\ ;
+内応 < naiou\ ;
+凍土 < toudo\ ;
+帯地 < obiji\ ;
+辺土 < hendo\ ;
+尾錠 < bijou\ ;
+刑事 < keiji\ ;
+円弾 < endan\ ;
+目垢 < meaka\ ;
+近古 < kinko\ ;
+軽浮 < keifu\ ;
+苛斂 < karen\ ;
+転炉 < tenro\ ;
+農園 < nouen\ ;
+巻尾 < kanbi\ ;
+秋刀魚 < sanma\ ;
+佳麗 < karei\ ;
+艶然 < enzen\ ;
+英才 < eisai\ ;
+腰部 < youbu\ ;
+軽油 < keiyu\ ;
+幇助 < houjo\ ;
+内帑 < naido\ ;
+画談 < gadan\ ;
+写字 < shaji\ ;
+供養 < kuyou\ ;
+倒語 < tougo\ ;
+鬼火 < onibi\ ;
+魚油 < gyoyu\ ;
+帝土 < teido\ ;
+機嫌 < kigen\ ;
+花梨 < karin\ ;
+兌換 < dakan\ ;
+魔法 < mahou\ ;
+苦戦 < kusen\ ;
+傷痍 < shoui\ ;
+候補 < kouho\ ;
+常務 < joumu\ ;
+帰参 < kisan\ ;
+円居 < madoi\ ;
+樹幹 < jukan\ ;
+苦慮 < kuryo\ ;
+馬齢 < barei\ ;
+余齢 < yorei\ ;
+痔瘻 < jirou\ ;
+巨富 < kyofu\ ;
+公庫 < kouko\ ;
+備砲 < bihou\ ;
+公序 < koujo\ ;
+苦情 < kujou\ ;
+茶園 < chaen\ ;
+苦悶 < kumon\ ;
+苦悩 < kunou\ ;
+用語 < yougo\ ;
+左官 < sakan\ ;
+槐樹 < kaiju\ ;
+冗多 < jouta\ ;
+軟派 < nanpa\ ;
+公布 < koufu\ ;
+異腹 < ifuku\ ;
+先手 < sente\ ;
+公差 < kousa\ ;
+茶器 < chaki\ ;
+臓腑 < zoufu\ ;
+鬱滞 < uttai\ ;
+桂馬 < keima\ ;
+返付 < henpu\ ;
+梅酢 < umezu\ ;
+農務 < noumu\ ;
+常備 < joubi\ ;
+苦役 < kueki\ ;
+舌禍 < zekka\ ;
+嵐気 < ranki\ ;
+梵語 < bongo\ ;
+県下 < kenka\ ;
+腕輪 < udewa\ ;
+起電 < kiden\ ;
+師儒 < shiju\ ;
+家鴨 < ahiru\ ;
+寝顔 < negao\ ;
+農具 < nougu\ ;
+市営 < shiei\ ;
+円墳 < enpun\ ;
+色気 < iroke\ ;
+辞去 < jikyo\ ;
+鬼歯 < oniba\ ;
+封鎖 < fuusa\ ;
+英屯 < eiton\ ;
+尖部 < senbu\ ;
+工場 < kouba\ ;
+発布 < happu\ ;
+帰任 < kinin\ ;
+兄後 < anigo\ ;
+八重歯 < yaeba\ ;
+倶者 < kusha\ ;
+俚諺 < rigen\ ;
+俎豆 < sotou\ ;
+生蝋 < kirou\ ;
+克己 < kokki\ ;
+内因 < naiin\ ;
+跛行 < hakou\ ;
+盲亀 < mouki\ ;
+苦寒 < kukan\ ;
+疫痢 < ekiri\ ;
+盛儀 < seigi\ ;
+市区 < shiku\ ;
+馬首 < bashu\ ;
+余香 < yokou\ ;
+登山 < tozan\ ;
+冗句 < jouku\ ;
+大伯父 < oooji\ ;
+農事 < nouji\ ;
+権威 < ken''i\ ;
+目下 < mokka\ ;
+嶮岨 < kenso\ ;
+自社 < jisha\ ;
+疣痔 < iboji\ ;
+余風 < yofuu\ ;
+余類 < yorui\ ;
+児孫 < jison\ ;
+馬頭 < batou\ ;
+甘藻 < amamo\ ;
+家風 < kafuu\ ;
+艶書 < ensho\ ;
+優弧 < yuuko\ ;
+辞令 < jirei\ ;
+棉花 < menka\ ;
+機内 < kinai\ ;
+公図 < kouzu\ ;
+兵営 < heiei\ ;
+田舎 < inaka\ ;
+左右 < sayuu\ ;
+全土 < zendo\ ;
+全図 < zenzu\ ;
+胯間 < kokan\ ;
+画聖 < gasei\ ;
+希代 < kidai\ ;
+小豆 < azuki\ ;
+兵員 < heiin\ ;
+案配 < anbai\ ;
+家電 < kaden\ ;
+内務 < naimu\ ;
+尊貴 < sonki\ ;
+差分 < sabun\ ;
+内助 < naijo\ ;
+瓦解 < gakai\ ;
+冠位 < kan''i\ ;
+梅見 < umemi\ ;
+工務 < koumu\ ;
+模型 < mokei\ ;
+栄養 < eiyou\ ;
+俘虜 < furyo\ ;
+魔手 < mashu\ ;
+低雲 < teiun\ ;
+布令 < furei\ ;
+白堊 < hakua\ ;
+兼務 < kenmu\ ;
+路肩 < roken\ ;
+似顔 < nigao\ ;
+甲羅 < koura\ ;
+自由 < jiyuu\ ;
+棄背 < kihai\ ;
+便衣 < ben''i\ ;
+円光 < enkou\ ;
+自用 < jiyou\ ;
+使途 < shito\ ;
+軽微 < keibi\ ;
+兵匪 < heihi\ ;
+工具 < kougu\ ;
+登坂 < tohan\ ;
+富鉱 < fukou\ ;
+侮言 < bugen\ ;
+輿地 < yochi\ ;
+芸子 < geiko\ ;
+背離 < hairi\ ;
+左傾 < sakei\ ;
+保菌 < hokin\ ;
+八卦 < hakke\ ;
+軽度 < keido\ ;
+巴人 < hajin\ ;
+画紙 < gashi\ ;
+公募 < koubo\ ;
+番目 < banme\ ;
+大伯母 < oooba\ ;
+兼備 < kenbi\ ;
+寄金 < kikin\ ;
+走路 < souro\ ;
+魔弾 < madan\ ;
+岡目 < okame\ ;
+官需 < kanju\ ;
+瑞雲 < zuiun\ ;
+高温 < kouon\ ;
+尾花 < obana\ ;
+対話 < taiwa\ ;
+伝馬 < tenma\ ;
+轍叉 < tessa\ ;
+依託 < itaku\ ;
+脳裡 < nouri\ ;
+権化 < gonge\ ;
+苦吟 < kugin\ ;
+芸妓 < geigi\ ;
+路線 < rosen\ ;
+赤身 < akami\ ;
+兵備 < heibi\ ;
+富農 < funou\ ;
+修羅 < shura\ ;
+芥子 < keshi\ ;
+疑点 < giten\ ;
+樽俎 < sonso\ ;
+侍講 < jikou\ ;
+軍手 < gunte\ ;
+権利 < kenri\ ;
+会飲 < kaiin\ ;
+典侍 < tenji\ ;
+安静 < ansei\ ;
+駅路 < ekiro\ ;
+入内 < judai\ ;
+党務 < toumu\ ;
+具体 < gutai\ ;
+発句 < hokku\ ;
+苦労 < kurou\ ;
+様子 < yousu\ ;
+保育 < hoiku\ ;
+画稿 < gakou\ ;
+例話 < reiwa\ ;
+全備 < zenbi\ ;
+党利 < touri\ ;
+自炊 < jisui\ ;
+佳賓 < kahin\ ;
+生糸 < kiito\ ;
+模写 < mosha\ ;
+僧徒 < souto\ ;
+疎漏 < sorou\ ;
+安閑 < ankan\ ;
+樹上 < jujou\ ;
+余輩 < yohai\ ;
+梅花 < baika\ ;
+儀容 < giyou\ ;
+田租 < denso\ ;
+馬車 < basha\ ;
+先務 < senmu\ ;
+俺等 < orera\ ;
+模倣 < mohou\ ;
+富豪 < fugou\ ;
+馬蹄 < batei\ ;
+践祚 < senso\ ;
+路程 < rotei\ ;
+紫雲英 < genge\ ;
+寄贈 < kizou\ ;
+体躯 < taiku\ ;
+痴愚 < chigu\ ;
+背部 < haibu\ ;
+保線 < hosen\ ;
+英主 < eishu\ ;
+元利 < genri\ ;
+倫理 < rinri\ ;
+車庫 < shako\ ;
+寓話 < guuwa\ ;
+疏水 < sosui\ ;
+余財 < yozai\ ;
+脾臟 < hizou\ ;
+僧尼 < souni\ ;
+発作 < hossa\ ;
+自治 < jichi\ ;
+癒合 < yugou\ ;
+充備 < juubi\ ;
+脾腫 < hishu\ ;
+尾籠 < birou\ ;
+痛手 < itade\ ;
+家財 < kazai\ ;
+転婆 < tenba\ ;
+鬼子 < onigo\ ;
+官途 < kanto\ ;
+自民 < jimin\ ;
+保管 < hokan\ ;
+栄転 < eiten\ ;
+検波 < kenpa\ ;
+字面 < jimen\ ;
+路盤 < roban\ ;
+舵手 < dashu\ ;
+余談 < yodan\ ;
+富裕 < fuyuu\ ;
+産着 < ubugi\ ;
+偏波 < henha\ ;
+偽本 < gihon\ ;
+艶姿 < enshi\ ;
+優利 < yuuri\ ;
+極意 < gokui\ ;
+仮面 < kamen\ ;
+偽書 < gisho\ ;
+岡湯 < okayu\ ;
+保税 < hozei\ ;
+余計 < yokei\ ;
+僅差 < kinsa\ ;
+俯瞰 < fukan\ ;
+臨機 < rinki\ ;
+未曾有 < mizou\ ;
+艇庫 < teiko\ ;
+尊者 < sonja\ ;
+跡目 < atome\ ;
+路用 < royou\ ;
+家訓 < kakun\ ;
+低語 < teigo\ ;
+実費 < jippi\ ;
+傾差 < keisa\ ;
+男猫 < oneko\ ;
+甦生 < sosei\ ;
+起草 < kisou\ ;
+余裕 < yoyuu\ ;
+嵩呼 < suuko\ ;
+官費 < kanpi\ ;
+養鯉 < youri\ ;
+軍夫 < gunpu\ ;
+疎林 < sorin\ ;
+家裁 < kasai\ ;
+俳画 < haiga\ ;
+他面 < tamen\ ;
+小紋 < komon\ ;
+生理 < seiri\ ;
+腋窩 < ekika\ ;
+付随 < fuzui\ ;
+家蝿 < iebae\ ;
+検査 < kensa\ ;
+備忘 < bibou\ ;
+小粋 < koiki\ ;
+実記 < jikki\ ;
+人馬 < jinba\ ;
+億劫 < okkuu\ ;
+自暴 < jibou\ ;
+便秘 < benpi\ ;
+官話 < kanwa\ ;
+伯父貴 < ojiki\ ;
+疎放 < sohou\ ;
+余薫 < yokun\ ;
+自明 < jimei\ ;
+臨時 < rinji\ ;
+餌食 < ejiki\ ;
+定規 < jougi\ ;
+船尾 < senbi\ ;
+今際 < imawa\ ;
+億円 < okuen\ ;
+儀刀 < gitou\ ;
+守護 < shugo\ ;
+会費 < kaihi\ ;
+岩根 < iwane\ ;
+男滝 < odaki\ ;
+瓜科 < urika\ ;
+軽侮 < keibu\ ;
+供米 < kumai\ ;
+栄螺 < sazae\ ;
+値段 < nedan\ ;
+孤軍 < kogun\ ;
+偽悪 < giaku\ ;
+亜麻仁 < amani\ ;
+疲弊 < hihei\ ;
+会議 < kaigi\ ;
+来駕 < raiga\ ;
+高座 < kouza\ ;
+良医 < ryoui\ ;
+伝記 < denki\ ;
+会話 < kaiwa\ ;
+余芳 < yohou\ ;
+乱麻 < ranma\ ;
+傘寿 < sanju\ ;
+山河 < sanga\ ;
+耳順 < jijun\ ;
+伽藍 < garan\ ;
+儀仗 < gijou\ ;
+守衛 < shuei\ ;
+軍務 < gunmu\ ;
+産湯 < ubuyu\ ;
+香華 < kouge\ ;
+尾燈 < bitou\ ;
+供祭 < gusai\ ;
+賓辞 < hinji\ ;
+五十路 < isoji\ ;
+舞子 < maiko\ ;
+自慢 < jiman\ ;
+楽器 < gakki\ ;
+疑念 < ginen\ ;
+余聞 < yobun\ ;
+学課 < gakka\ ;
+馬耕 < bakou\ ;
+踏査 < tousa\ ;
+画楼 < garou\ ;
+脱皮 < dappi\ ;
+来院 < raiin\ ;
+侍祭 < jisai\ ;
+軍備 < gunbi\ ;
+産気 < sanke\ ;
+産毛 < ubuge\ ;
+腐爛 < furan\ ;
+脱疽 < dasso\ ;
+岩戸 < iwato\ ;
+寿盃 < juhai\ ;
+自弁 < jiben\ ;
+番手 < bante\ ;
+偸安 < touan\ ;
+小琴 < ogoto\ ;
+俄然 < gazen\ ;
+画板 < gaban\ ;
+字訓 < jikun\ ;
+梳毛 < somou\ ;
+飛電 < hiden\ ;
+二階 < nikai\ ;
+画材 < gazai\ ;
+軍事 < gunji\ ;
+理財 < rizai\ ;
+画本 < gahon\ ;
+畸形 < kikei\ ;
+代議 < daigi\ ;
+走破 < souha\ ;
+債務 < saimu\ ;
+身分 < mibun\ ;
+賄賂 < wairo\ ;
+育英 < ikuei\ ;
+小犬 < koinu\ ;
+由来 < yurai\ ;
+伽羅 < kyara\ ;
+仏貨 < fukka\ ;
+東都 < touto\ ;
+東部 < toubu\ ;
+仮装 < kasou\ ;
+自尽 < jijin\ ;
+理論 < riron\ ;
+偏差 < hensa\ ;
+尊父 < sonpu\ ;
+偽報 < gihou\ ;
+定義 < teigi\ ;
+備品 < bihin\ ;
+貨車 < kasha\ ;
+俗気 < zokke\ ;
+自害 < jigai\ ;
+貸費 < taihi\ ;
+留意 < ryuui\ ;
+何箇 < nanko\ ;
+個数 < kosuu\ ;
+寝相 < nezou\ ;
+颶風 < gufuu\ ;
+桂皮 < keihi\ ;
+飲酒 < inshu\ ;
+亨運 < kouun\ ;
+理解 < rikai\ ;
+何等 < nanra\ ;
+販路 < hanro\ ;
+俗歌 < zokka\ ;
+乗馬 < jouba\ ;
+付言 < fugen\ ;
+赤目 < akame\ ;
+介護 < kaigo\ ;
+他言 < tagon\ ;
+五重 < gojuu\ ;
+舞台 < butai\ ;
+朝餉 < asage\ ;
+寡男 < yamoo\ ;
+他見 < taken\ ;
+舎営 < shaei\ ;
+伎芸 < gigei\ ;
+疎外 < sogai\ ;
+偶因 < guuin\ ;
+安置 < anchi\ ;
+傍受 < bouju\ ;
+岩屋 < iwaya\ ;
+二重 < futae\ ;
+肥育 < hiiku\ ;
+小滝 < otaki\ ;
+偽善 < gizen\ ;
+梧桐 < gotou\ ;
+画才 < gasai\ ;
+画手 < gashu\ ;
+風韻 < fuuin\ ;
+他行 < takou\ ;
+財貨 < zaika\ ;
+互選 < gosen\ ;
+風靡 < fuubi\ ;
+伎能 < ginou\ ;
+未開 < mikai\ ;
+貴覧 < kiran\ ;
+風雲 < fuuun\ ;
+乖離 < kairi\ ;
+疲労 < hirou\ ;
+偽名 < gimei\ ;
+人語 < jingo\ ;
+風雅 < fuuga\ ;
+五輪 < gorin\ ;
+偽史 < gishi\ ;
+予選 < yosen\ ;
+乗除 < joujo\ ;
+偏奇 < henki\ ;
+主馬 < shume\ ;
+保有 < hoyuu\ ;
+自在 < jizai\ ;
+二輪 < nirin\ ;
+朝間 < asama\ ;
+脳波 < nouha\ ;
+実科 < jikka\ ;
+屠所 < tosho\ ;
+疑問 < gimon\ ;
+舎利 < shari\ ;
+二軍 < nigun\ ;
+倒影 < touei\ ;
+他薦 < tazen\ ;
+駄犬 < daken\ ;
+飛車 < hisha\ ;
+屹度 < kitto\ ;
+倭寇 < wakou\ ;
+小歌 < kouta\ ;
+主音 < shuon\ ;
+容疑 < yougi\ ;
+余生 < yosei\ ;
+美麗 < birei\ ;
+定礎 < teiso\ ;
+岩場 < iwaba\ ;
+自問 < jimon\ ;
+偽兵 < gihei\ ;
+腕木 < udegi\ ;
+画帖 < gajou\ ;
+羽音 < haoto\ ;
+倉庫 < souko\ ;
+机辺 < kihen\ ;
+異国 < ikoku\ ;
+村費 < sonpi\ ;
+賢者 < kenja\ ;
+本部 < honbu\ ;
+互譲 < gojou\ ;
+対欧 < taiou\ ;
+老躯 < rouku\ ;
+産後 < sango\ ;
+用度 < youdo\ ;
+書院 < shoin\ ;
+桐油 < touyu\ ;
+未遂 < misui\ ;
+生徒 < seito\ ;
+生後 < seigo\ ;
+脚気 < kakke\ ;
+王道 < oudou\ ;
+賛美 < sanbi\ ;
+腐敗 < fuhai\ ;
+蹄叉 < teisa\ ;
+木通 < akebi\ ;
+仕舞 < jimai\ ;
+越権 < ekken\ ;
+跋扈 < bakko\ ;
+余燼 < yojin\ ;
+自前 < jimae\ ;
+胃痛 < itsuu\ ;
+小枝 < koeda\ ;
+胃病 < ibyou\ ;
+自分 < jibun\ ;
+起毛 < kimou\ ;
+瑪瑙 < menou\ ;
+風邪 < fuuja\ ;
+作為 < sakui\ ;
+安眠 < anmin\ ;
+自党 < jitou\ ;
+尿意 < nyoui\ ;
+望遠 < bouen\ ;
+予言 < yogen\ ;
+九輪 < kurin\ ;
+乱費 < ranpi\ ;
+他聞 < tabun\ ;
+未踏 < mitou\ ;
+対案 < taian\ ;
+予見 < yoken\ ;
+他者 < tasha\ ;
+仮納 < kanou\ ;
+猪首 < ikubi\ ;
+不順 < fujun\ ;
+一首 < isshu\ ;
+産屋 < ubuya\ ;
+仮粧 < kewai\ ;
+豪語 < gougo\ ;
+類韻 < ruiin\ ;
+類音 < ruion\ ;
+貧苦 < hinku\ ;
+男女 < danjo\ ;
+根気 < konki\ ;
+赤毛 < akage\ ;
+一飯 < ippan\ ;
+美風 < bifuu\ ;
+飛行 < hikou\ ;
+京華 < keika\ ;
+安産 < anzan\ ;
+一風 < ippuu\ ;
+美顔 < bigan\ ;
+実父 < jippu\ ;
+自伝 < jiden\ ;
+聖者 < seija\ ;
+便所 < benjo\ ;
+世間 < seken\ ;
+一頭 < ittou\ ;
+自今 < jikon\ ;
+主部 < shubu\ ;
+一項 < ikkou\ ;
+田夫 < denpu\ ;
+飛蝗 < batta\ ;
+理系 < rikei\ ;
+産婦 < sanpu\ ;
+寸暇 < sunka\ ;
+架空 < kakuu\ ;
+産婆 < sanba\ ;
+豌豆 < endou\ ;
+下阪 < gehan\ ;
+寸時 < sunji\ ;
+梵字 < bonji\ ;
+甘子 < amago\ ;
+体温 < taion\ ;
+仁義 < jingi\ ;
+主辞 < shuji\ ;
+暴飲 < bouin\ ;
+寝棺 < nekan\ ;
+走査 < sousa\ ;
+一階 < ikkai\ ;
+本訴 < honso\ ;
+一隊 < ittai\ ;
+曹達 < souda\ ;
+貧者 < hinja\ ;
+田圃 < denpo\ ;
+付箋 < fusen\ ;
+一閃 < issen\ ;
+侮慢 < buman\ ;
+作歌 < sakka\ ;
+木乃伊 < miira\ ;
+義金 < gikin\ ;
+保守 < hoshu\ ;
+風諭 < fuuyu\ ;
+世銀 < segin\ ;
+保存 < hozon\ ;
+甘夢 < kanmu\ ;
+尤度 < yuudo\ ;
+月賦 < geppu\ ;
+展墓 < tenbo\ ;
+珪素 < keiso\ ;
+核果 < kakka\ ;
+尊意 < son''i\ ;
+香油 < kouyu\ ;
+用器 < youki\ ;
+案文 < anmon\ ;
+朗詠 < rouei\ ;
+倒句 < touku\ ;
+倒叙 < toujo\ ;
+仮眠 < kamin\ ;
+五臓 < gozou\ ;
+背泳 < haiei\ ;
+亡者 < mouja\ ;
+万里 < banri\ ;
+理知 < richi\ ;
+仏祖 < busso\ ;
+駄文 < dabun\ ;
+義軍 < gigun\ ;
+倭人 < wajin\ ;
+七重 < nanae\ ;
+下郎 < gerou\ ;
+上部 < joubu\ ;
+頓馬 < tonma\ ;
+三部 < sanbu\ ;
+不遜 < fuson\ ;
+不遇 < fuguu\ ;
+便宜 < bengi\ ;
+不逞 < futei\ ;
+小川 < ogawa\ ;
+不退 < futai\ ;
+美酒 < bishu\ ;
+主訴 < shuso\ ;
+暗雲 < an''un\ ;
+二十重 < hatae\ ;
+男児 < danji\ ;
+二者 < nisha\ ;
+画像 < gazou\ ;
+俳味 < haimi\ ;
+用務 < youmu\ ;
+婦道 < fudou\ ;
+村翁 < sonou\ ;
+安泰 < antai\ ;
+肥満 < himan\ ;
+下輩 < gehai\ ;
+家来 < kerai\ ;
+値上 < neage\ ;
+甘味 < kanmi\ ;
+俳句 < haiku\ ;
+一遍 < ippen\ ;
+老舗 < rouho\ ;
+暗闘 < antou\ ;
+下車 < gesha\ ;
+甚句 < jinku\ ;
+些細 < sasai\ ;
+理由 < riyuu\ ;
+人祖 < jinso\ ;
+乱舞 < ranbu\ ;
+侍従 < jijuu\ ;
+娃鬟 < aikan\ ;
+会派 < kaiha\ ;
+他界 < takai\ ;
+五絃 < gogen\ ;
+小字 < koaza\ ;
+屋台 < yatai\ ;
+尊家 < sonka\ ;
+一転 < itten\ ;
+画人 < gajin\ ;
+題辞 < daiji\ ;
+一軒 < ikken\ ;
+実梅 < miume\ ;
+路傍 < robou\ ;
+本舗 < honpo\ ;
+不買 < fubai\ ;
+下賤 < gesen\ ;
+寝息 < neiki\ ;
+枯燥 < kosou\ ;
+木舞 < komai\ ;
+老翁 < rouou\ ;
+羽蟻 < haari\ ;
+寛恕 < kanjo\ ;
+費用 < hiyou\ ;
+代父 < daifu\ ;
+貫目 < kanme\ ;
+義訓 < gikun\ ;
+予納 < yonou\ ;
+万貨 < banka\ ;
+板目 < itame\ ;
+頭重 < zuomo\ ;
+梅園 < baien\ ;
+貴男 < takao\ ;
+定期 < teiki\ ;
+小声 < kogoe\ ;
+桂庵 < keian\ ;
+一貫 < ikkan\ ;
+生保 < seiho\ ;
+便器 < benki\ ;
+未聞 < mimon\ ;
+音韻 < on''in\ ;
+景雲 < keiun\ ;
+二等 < nitou\ ;
+上諭 < jouyu\ ;
+予算 < yosan\ ;
+類語 < ruigo\ ;
+路上 < rojou\ ;
+本義 < hongi\ ;
+豆腐 < toufu\ ;
+駄弁 < daben\ ;
+婦警 < fukei\ ;
+起居 < kikyo\ ;
+板画 < hanga\ ;
+体技 < taigi\ ;
+保冷 < horei\ ;
+余憤 < yofun\ ;
+上訴 < jouso\ ;
+保全 < hozen\ ;
+二種 < nishu\ ;
+果然 < kazen\ ;
+音階 < onkai\ ;
+美談 < bidan\ ;
+家憲 < kaken\ ;
+代演 < daien\ ;
+余情 < yojou\ ;
+寡居 < kakyo\ ;
+犬馬 < kenba\ ;
+尼僧 < nisou\ ;
+翡翠 < hisui\ ;
+枯淡 < kotan\ ;
+未練 < miren\ ;
+一計 < ikkei\ ;
+美観 < bikan\ ;
+預金 < yokin\ ;
+余念 < yonen\ ;
+題詠 < daiei\ ;
+木綿 < momen\ ;
+丹色 < niiro\ ;
+王統 < outou\ ;
+趣味 < shumi\ ;
+賢母 < kenbo\ ;
+暗転 < anten\ ;
+未納 < minou\ ;
+議題 < gidai\ ;
+余弊 < yohei\ ;
+赤字 < akaji\ ;
+養父 < youfu\ ;
+来由 < raiyu\ ;
+根子 < nekko\ ;
+寸土 < sundo\ ;
+何度 < nando\ ;
+胡座 < agura\ ;
+案外 < angai\ ;
+作務衣 < samue\ ;
+曳航 < eikou\ ;
+理法 < rihou\ ;
+風紀 < fuuki\ ;
+代母 < daibo\ ;
+人為 < jin''i\ ;
+伝播 < denpa\ ;
+罵言 < bagen\ ;
+騎兵 < kihei\ ;
+桑園 < souen\ ;
+互用 < goyou\ ;
+主義 < shugi\ ;
+条理 < jouri\ ;
+小勢 < kozei\ ;
+寄寓 < kiguu\ ;
+二番 < niban\ ;
+背後 < haigo\ ;
+牡鹿 < ojika\ ;
+本科 < honka\ ;
+馬屋 < umaya\ ;
+伝授 < denju\ ;
+小判 < koban\ ;
+羽翼 < uyoku\ ;
+枝毛 < edage\ ;
+寿司 < sushi\ ;
+首座 < shuza\ ;
+首府 < shufu\ ;
+亡父 < boufu\ ;
+普遍 < fuhen\ ;
+余寒 < yokan\ ;
+譜面 < fumen\ ;
+任期 < ninki\ ;
+赭土 < shado\ ;
+家屋 < kaoku\ ;
+聖油 < seiyu\ ;
+猟虎 < rakko\ ;
+寝坊 < nebou\ ;
+飴煮 < ameni\ ;
+枢機 < suuki\ ;
+住居 < sumai\ ;
+胃弱 < ijaku\ ;
+伝手 < tsute\ ;
+宵寝 < yoine\ ;
+足下 < sokka\ ;
+小僧 < kozou\ ;
+宝庫 < houko\ ;
+順路 < junro\ ;
+上荷 < uwani\ ;
+一葦 < ichii\ ;
+宮居 < miyai\ ;
+脱兎 < datto\ ;
+羽織 < haori\ ;
+暗視 < anshi\ ;
+林檎 < ringo\ ;
+代案 < daian\ ;
+首尾 < shubi\ ;
+越冬 < ettou\ ;
+安心 < anjin\ ;
+貪汚 < tan''o\ ;
+価値 < kachi\ ;
+妖魔 < youma\ ;
+一艘 < issou\ ;
+来演 < raien\ ;
+休意 < kyuui\ ;
+養母 < youbo\ ;
+一致 < itchi\ ;
+駅員 < ekiin\ ;
+会得 < etoku\ ;
+寝台 < nedai\ ;
+不老 < furou\ ;
+護送 < gosou\ ;
+他村 < tason\ ;
+杜漏 < zurou\ ;
+査定 < satei\ ;
+宗家 < souke\ ;
+牝馬 < hinba\ ;
+美育 < biiku\ ;
+案分 < anbun\ ;
+仏果 < bukka\ ;
+老爺 < rouya\ ;
+老父 < roufu\ ;
+頭蓋 < zugai\ ;
+理数 < risuu\ ;
+亜流 < aryuu\ ;
+象牙 < zouge\ ;
+警邏 < keira\ ;
+安居 < ankyo\ ;
+東欧 < touou\ ;
+駆動 < kudou\ ;
+贔屓 < hiiki\ ;
+寡兵 < kahei\ ;
+他方 < tahou\ ;
+任意 < nin''i\ ;
+類縁 < ruien\ ;
+余喘 < yozen\ ;
+讒誣 < zanbu\ ;
+亡母 < boubo\ ;
+居留守 < irusu\ ;
+安定 < antei\ ;
+下緒 < sageo\ ;
+宇宙 < uchuu\ ;
+讒訴 < zanso\ ;
+音詩 < onshi\ ;
+伎工 < gikou\ ;
+音訓 < onkun\ ;
+賢愚 < kengu\ ;
+胃壁 < iheki\ ;
+余命 < yomei\ ;
+不粋 < busui\ ;
+妖雲 < youun\ ;
+赴任 < funin\ ;
+賦性 < fusei\ ;
+代打 < daida\ ;
+案件 < anken\ ;
+獣皮 < juuhi\ ;
+五段 < godan\ ;
+賛意 < san''i\ ;
+板木 < hangi\ ;
+飢民 < kimin\ ;
+飛泉 < hisen\ ;
+未然 < mizen\ ;
+駐伊 < chuui\ ;
+映配 < eihai\ ;
+孤帆 < kohan\ ;
+作動 < sadou\ ;
+一糸 < isshi\ ;
+不等 < futou\ ;
+人時 < ninji\ ;
+頭脳 < zunou\ ;
+木灰 < kibai\ ;
+羅紗 < rasha\ ;
+奇麗 < kirei\ ;
+仕手 < shite\ ;
+馬券 < baken\ ;
+宮司 < guuji\ ;
+理想 < risou\ ;
+宥和 < yuuwa\ ;
+議論 < giron\ ;
+書画 < shoga\ ;
+獲物 < emono\ ;
+奮飛 < funpi\ ;
+肥大 < hidai\ ;
+余党 < yotou\ ;
+理性 < risei\ ;
+時論 < jiron\ ;
+警護 < keigo\ ;
+負数 < fusuu\ ;
+二様 < niyou\ ;
+義眼 < gigan\ ;
+査問 < samon\ ;
+理念 < rinen\ ;
+青馬 < aouma\ ;
+譫語 < sengo\ ;
+未満 < miman\ ;
+家内 < kanai\ ;
+世知 < sechi\ ;
+定員 < teiin\ ;
+買手 < kaite\ ;
+寝椅子 < neisu\ ;
+来期 < raiki\ ;
+井桁 < igeta\ ;
+暗翳 < an''ei\ ;
+未済 < misai\ ;
+姉貴 < aneki\ ;
+老母 < roubo\ ;
+他念 < tanen\ ;
+宛名 < atena\ ;
+女難 < jonan\ ;
+奴隷 < dorei\ ;
+世相 < sesou\ ;
+仲居 < nakai\ ;
+末派 < mappa\ ;
+非難 < hinan\ ;
+下知 < gedji\ ;
+太鼓 < taiko\ ;
+須臾 < shuyu\ ;
+朝湯 < asayu\ ;
+奔馬 < honba\ ;
+聖恩 < seion\ ;
+嫌気 < kenki\ ;
+不眠 < fumin\ ;
+亜族 < azoku\ ;
+仁慈 < jinji\ ;
+仮寓 < kaguu\ ;
+仏徒 < butto\ ;
+板戸 < itado\ ;
+人我 < jinga\ ;
+貧打 < hinda\ ;
+余人 < yonin\ ;
+他店 < taten\ ;
+大黄 < daiou\ ;
+上着 < uwagi\ ;
+大麻 < taima\ ;
+本気 < honki\ ;
+老樹 < rouju\ ;
+是認 < zenin\ ;
+負担 < futan\ ;
+暗線 < ansen\ ;
+上目 < uwame\ ;
+栄冠 < eikan\ ;
+低価 < teika\ ;
+王水 < ousui\ ;
+今後 < kongo\ ;
+世界 < sekai\ ;
+孟女 < moujo\ ;
+飛来 < hirai\ ;
+二更 < nikou\ ;
+馬上 < bajou\ ;
+家人 < kenin\ ;
+仁恕 < jinjo\ ;
+孟夏 < mouka\ ;
+斑鳩 < ikaru\ ;
+風波 < fuuha\ ;
+今度 < kondo\ ;
+下疳 < gekan\ ;
+音色 < neiro\ ;
+而来 < jirai\ ;
+杜撰 < zusan\ ;
+譎詐 < kissa\ ;
+下界 < gekai\ ;
+下男 < genan\ ;
+下田 < geden\ ;
+暖簾 < noren\ ;
+他山 < tazan\ ;
+子女 < shijo\ ;
+王権 < ouken\ ;
+飛散 < hisan\ ;
+嬌態 < shina\ ;
+美男 < binan\ ;
+美田 < biden\ ;
+一生 < issei\ ;
+安全 < anzen\ ;
+五指 < goshi\ ;
+仏家 < bukke\ ;
+特記 < tokki\ ;
+既遂 < kisui\ ;
+題画 < daiga\ ;
+聖寿 < seiju\ ;
+謹話 < kinwa\ ;
+不犯 < fubon\ ;
+今宵 < koyoi\ ;
+五戒 < gokai\ ;
+杞憂 < kiyuu\ ;
+面部 < menbu\ ;
+明記 < meiki\ ;
+他姓 < tasei\ ;
+女郎 < jorou\ ;
+財布 < saifu\ ;
+未来 < mirai\ ;
+不燃 < funen\ ;
+一献 < ikkon\ ;
+施錠 < sejou\ ;
+安住 < anjuu\ ;
+座椅子 < zaisu\ ;
+非道 < hidou\ ;
+霧雰 < mufun\ ;
+板屋 < itaya\ ;
+五悪 < goaku\ ;
+学区 < gakku\ ;
+人寿 < jinju\ ;
+与点 < yoten\ ;
+人家 < jinka\ ;
+未明 < mimei\ ;
+互恵 < gokei\ ;
+面輪 < omowa\ ;
+貧富 < hinpu\ ;
+現場 < genba\ ;
+貧家 < hinka\ ;
+類火 < ruika\ ;
+存否 < zonpi\ ;
+板子 < itago\ ;
+奠都 < tento\ ;
+聖夜 < seiya\ ;
+今夏 < konka\ ;
+予想 < yosou\ ;
+任務 < ninmu\ ;
+方里 < houri\ ;
+王政 < ousei\ ;
+美点 < biten\ ;
+二念 < ninen\ ;
+講話 < kouwa\ ;
+賛否 < sanpi\ ;
+大雨 < ooame\ ;
+夕餉 < yuuge\ ;
+太陰 < taiin\ ;
+朝日 < asahi\ ;
+代員 < daiin\ ;
+上演 < jouen\ ;
+文雅 < bunga\ ;
+不満 < fuman\ ;
+贈与 < zouyo\ ;
+乱打 < randa\ ;
+外題 < gedai\ ;
+牡蠣 < borei\ ;
+奮起 < funki\ ;
+人夫 < ninpu\ ;
+耶嬢 < yajou\ ;
+妄語 < mougo\ ;
+貞婦 < teifu\ ;
+義民 < gimin\ ;
+語類 < gorui\ ;
+方途 < houto\ ;
+仏器 < bukki\ ;
+日課 < nikka\ ;
+語順 < gojun\ ;
+主査 < shusa\ ;
+多難 < tanan\ ;
+不浄 < fujou\ ;
+日記 < nikki\ ;
+以北 < ihoku\ ;
+子分 < kobun\ ;
+外需 < gaiju\ ;
+学位 < gakui\ ;
+本手 < honte\ ;
+貞女 < teijo\ ;
+音程 < ontei\ ;
+翻意 < hon''i\ ;
+謀議 < bougi\ ;
+不法 < fuhou\ ;
+代務 < daimu\ ;
+羅漢 < rakan\ ;
+罹災 < risai\ ;
+未成 < misei\ ;
+最期 < saigo\ ;
+雪駄 < setta\ ;
+夕陽 < yuuhi\ ;
+夜間 < yakan\ ;
+老後 < rougo\ ;
+旅費 < ryohi\ ;
+井守 < imori\ ;
+青貝 < aogai\ ;
+下水 < gesui\ ;
+奈辺 < nahen\ ;
+整除 < seijo\ ;
+不毛 < fumou\ ;
+下民 < gemin\ ;
+嫌悪 < ken''o\ ;
+貧土 < hindo\ ;
+電離 < denri\ ;
+類比 < ruihi\ ;
+不死 < fushi\ ;
+下段 < gedan\ ;
+零露 < reiro\ ;
+二封 < nifuu\ ;
+雷雲 < raiun\ ;
+他動 < tadou\ ;
+上歯 < uwaba\ ;
+二宮 < niguu\ ;
+他励 < tarei\ ;
+班員 < hanin\ ;
+諷誦 < fuuju\ ;
+一水 < issui\ ;
+予定 < yotei\ ;
+貴君 < kikun\ ;
+断路 < danro\ ;
+狼煙 < rouen\ ;
+貴名 < kimei\ ;
+仮令 < tatoe\ ;
+一段 < ittan\ ;
+一歳 < issai\ ;
+来場 < raiba\ ;
+音盤 < onban\ ;
+介助 < kaijo\ ;
+万機 < banki\ ;
+雪花菜 < okara\ ;
+飯場 < hanba\ ;
+大部 < daibu\ ;
+時空 < jikuu\ ;
+音痴 < onchi\ ;
+文部 < monbu\ ;
+暗澹 < antan\ ;
+話題 < wadai\ ;
+多重 < tajuu\ ;
+話頭 < watou\ ;
+事変 < jihen\ ;
+晩生 < okute\ ;
+雨間 < amaai\ ;
+妖艶 < youen\ ;
+外野 < gaiya\ ;
+下校 < gekou\ ;
+論議 < rongi\ ;
+読過 < dokka\ ;
+明美 < meibi\ ;
+付会 < fukai\ ;
+請負 < ukeoi\ ;
+主我 < shuga\ ;
+飽和 < houwa\ ;
+二塁 < nirui\ ;
+誤配 < gohai\ ;
+離間 < rikan\ ;
+翻字 < honji\ ;
+飛報 < hihou\ ;
+他人 < tanin\ ;
+外部 < gaibu\ ;
+論語 < rongo\ ;
+曜日 < youbi\ ;
+外郎 < uirou\ ;
+青蝿 < aobae\ ;
+罨法 < anpou\ ;
+老婆 < rouba\ ;
+財務 < zaimu\ ;
+下書 < gesho\ ;
+施行 < sekou\ ;
+最愛 < saiai\ ;
+曖昧 < aimai\ ;
+早苗 < sanae\ ;
+万朶 < banda\ ;
+本家 < honke\ ;
+外道 < gedou\ ;
+媚態 < bitai\ ;
+時短 < jitan\ ;
+暗涙 < anrui\ ;
+有心 < ushin\ ;
+現世 < genze\ ;
+暢気 < nonki\ ;
+老妓 < rougi\ ;
+未定 < mitei\ ;
+不易 < fueki\ ;
+未完 < mikan\ ;
+不明 < fumei\ ;
+貼付 < tenpu\ ;
+末季 < makki\ ;
+老女 < roujo\ ;
+一杯 < ippai\ ;
+美本 < bihon\ ;
+上映 < jouei\ ;
+王孫 < ouson\ ;
+下旬 < gejun\ ;
+不断 < fudan\ ;
+一本 < ippon\ ;
+不文 < fubun\ ;
+材器 < zaiki\ ;
+八百屋 < yaoya\ ;
+三日 < mikka\ ;
+始祖 < shiso\ ;
+不敏 < fubin\ ;
+豊富 < houfu\ ;
+美景 < bikei\ ;
+義挙 < gikyo\ ;
+談話 < danwa\ ;
+敬遠 < keien\ ;
+未婚 < mikon\ ;
+朝寝 < asane\ ;
+貸与 < taiyo\ ;
+負債 < fusai\ ;
+乙子 < otogo\ ;
+大豆 < daizu\ ;
+雨量 < uryou\ ;
+義手 < gishu\ ;
+一方 < ippou\ ;
+一斤 < ikkin\ ;
+義戦 < gisen\ ;
+誹謗 < hibou\ ;
+緋鯉 < higoi\ ;
+羈旅 < kiryo\ ;
+義憤 < gifun\ ;
+二君 < nikun\ ;
+世才 < sesai\ ;
+二号 < nigou\ ;
+最左 < saisa\ ;
+亡児 < bouji\ ;
+書庫 < shoko\ ;
+電路 < denro\ ;
+乙女 < otome\ ;
+文語 < bungo\ ;
+世態 < setai\ ;
+玩味 < ganmi\ ;
+顧慮 < koryo\ ;
+夜警 < yakei\ ;
+隠顕 < inken\ ;
+王城 < oujou\ ;
+上手 < jouzu\ ;
+本土 < hondo\ ;
+美挙 < bikyo\ ;
+一挙 < ikkyo\ ;
+離農 < rinou\ ;
+万戸 < banko\ ;
+音源 < ongen\ ;
+二分 < nibun\ ;
+暫時 < zanji\ ;
+明示 < meiji\ ;
+隠面 < inmen\ ;
+訴願 < sogan\ ;
+義弟 < gitei\ ;
+率土 < sotto\ ;
+交互 < kougo\ ;
+誤認 < gonin\ ;
+面罵 < menba\ ;
+外語 < gaigo\ ;
+多言 < tagen\ ;
+五倍 < gobai\ ;
+順次 < junji\ ;
+願意 < gan''i\ ;
+風土 < fuudo\ ;
+難路 < nanro\ ;
+燃費 < nenpi\ ;
+五体 < gotai\ ;
+有夏 < yuuka\ ;
+二倍 < nibai\ ;
+下御 < gegyo\ ;
+玩具 < gangu\ ;
+詭辯 < kiben\ ;
+奥義 < okugi\ ;
+電話 < denwa\ ;
+猛打 < mouda\ ;
+需要 < juyou\ ;
+大蛇 < daija\ ;
+朱印 < shuin\ ;
+外被 < gaihi\ ;
+最多 < saita\ ;
+不平 < fuhei\ ;
+女系 < jokei\ ;
+谷地 < yachi\ ;
+上座 < jouza\ ;
+縁辺 < enpen\ ;
+事件 < jiken\ ;
+二乗 < nijou\ ;
+上布 < joufu\ ;
+本務 < honmu\ ;
+二世 < nisei\ ;
+二三 < nisan\ ;
+譲渡 < jouto\ ;
+風味 < fuumi\ ;
+護法 < gohou\ ;
+豚児 < tonji\ ;
+難語 < nango\ ;
+故買 < kobai\ ;
+雑費 < zappi\ ;
+雑貨 < zakka\ ;
+下山 < gezan\ ;
+敗訴 < haiso\ ;
+声誉 < seiyo\ ;
+上屋 < uwaya\ ;
+王冠 < oukan\ ;
+風化 < fuuka\ ;
+暴徒 < bouto\ ;
+義妹 < gimai\ ;
+万寿 < banju\ ;
+類字 < ruiji\ ;
+降魔 < gouma\ ;
+音栓 < onsen\ ;
+韻書 < insho\ ;
+施米 < semai\ ;
+譲歩 < jouho\ ;
+文苑 < bunen\ ;
+美容 < biyou\ ;
+談義 < dangi\ ;
+隠遁 < inton\ ;
+一定 < ittei\ ;
+頓挫 < tonza\ ;
+雑記 < zakki\ ;
+隠退 < intai\ ;
+靱皮 < jinpi\ ;
+風儀 < fuugi\ ;
+除霊 < jorei\ ;
+塩類 < enrui\ ;
+陰門 < inmon\ ;
+旧痾 < kyuua\ ;
+韻文 < inbun\ ;
+最古 < saiko\ ;
+繁茂 < hanmo\ ;
+多芸 < tagei\ ;
+除隊 < jotai\ ;
+外苑 < gaien\ ;
+末世 < masse\ ;
+万夫 < banpu\ ;
+主務 < shumu\ ;
+諭示 < yushi\ ;
+雅言 < gagen\ ;
+無風 < mufuu\ ;
+面皮 < menpi\ ;
+頭巾 < zukin\ ;
+無類 < murui\ ;
+美大 < bidai\ ;
+線路 < senro\ ;
+無題 < mudai\ ;
+無頼 < burai\ ;
+試補 < shiho\ ;
+美声 < bisei\ ;
+多能 < tanou\ ;
+下城 < gejou\ ;
+是正 < zesei\ ;
+散華 < sange\ ;
+夏至 < geshi\ ;
+総身 < soumi\ ;
+不在 < fuzai\ ;
+誤聞 < gobun\ ;
+面画 < menga\ ;
+無電 < muden\ ;
+無難 < bunan\ ;
+外耳 < gaiji\ ;
+非番 < hiban\ ;
+有余 < yuuyo\ ;
+無限 < mugen\ ;
+不善 < fuzen\ ;
+不問 < fumon\ ;
+有事 < yuuji\ ;
+硫黄華 < iouka\ ;
+義勇 < giyuu\ ;
+頒布 < hanpu\ ;
+論破 < ronpa\ ;
+罵声 < basei\ ;
+下品 < gehin\ ;
+月下 < gekka\ ;
+訓辞 < kunji\ ;
+夢精 < musei\ ;
+音感 < onkan\ ;
+不参 < fusan\ ;
+順序 < junjo\ ;
+類句 < ruiku\ ;
+上古 < jouko\ ;
+三叉 < sansa\ ;
+険路 < kenro\ ;
+防除 < boujo\ ;
+不勢 < buzei\ ;
+話芸 < wagei\ ;
+美名 < bimei\ ;
+塩酸 < ensan\ ;
+大穴 < ooana\ ;
+猪口 < choko\ ;
+斤目 < kinme\ ;
+牧歌 < bokka\ ;
+下剤 < gezai\ ;
+無銭 < musen\ ;
+場面 < bamen\ ;
+言辞 < genji\ ;
+無銘 < mumei\ ;
+誤算 < gosan\ ;
+爪牙 < souga\ ;
+太祖 < taiso\ ;
+暗夜 < an''ya\ ;
+天祖 < tenso\ ;
+護憲 < goken\ ;
+多端 < tatan\ ;
+詠草 < eisou\ ;
+壮美 < soubi\ ;
+多種 < tashu\ ;
+無配 < muhai\ ;
+犯意 < han''i\ ;
+下僧 < gesou\ ;
+義人 < gijin\ ;
+一分 < ippun\ ;
+奇瑞 < kizui\ ;
+論理 < ronri\ ;
+大破 < taiha\ ;
+雅致 < gachi\ ;
+不倫 < furin\ ;
+話者 < washa\ ;
+日波 < nippo\ ;
+世代 < sedai\ ;
+世人 < sejin\ ;
+故老 < korou\ ;
+上値 < uwane\ ;
+無道 < mudou\ ;
+不便 < fuben\ ;
+増補 < zouho\ ;
+織目 < orime\ ;
+訓話 < kunwa\ ;
+無辺 < muhen\ ;
+隠蔽 < inpei\ ;
+羅典 < raten\ ;
+陰謀 < inbou\ ;
+訓詁 < kunko\ ;
+妓楼 < girou\ ;
+文目 < ayame\ ;
+変移 < hen''i\ ;
+下人 < genin\ ;
+暴利 < bouri\ ;
+暗喩 < an''yu\ ;
+塑造 < sozou\ ;
+婚儀 < kongi\ ;
+紙魚 < shimi\ ;
+万事 < banji\ ;
+諸派 < shoha\ ;
+上下 < jouge\ ;
+三世 < sanze\ ;
+電磁 < denji\ ;
+頑固 < ganko\ ;
+美人 < bijin\ ;
+罷免 < himen\ ;
+大瓶 < oobin\ ;
+言語 < gengo\ ;
+夷狄 < iteki\ ;
+暗君 < ankun\ ;
+暗合 < angou\ ;
+護岸 < gogan\ ;
+御神酒 < omiki\ ;
+物故 < bukko\ ;
+天理 < tenri\ ;
+素養 < soyou\ ;
+姐御 < anego\ ;
+夜番 < yoban\ ;
+露点 < roten\ ;
+音大 < ondai\ ;
+音声 < onsei\ ;
+多用 < tayou\ ;
+多産 < tasan\ ;
+素顔 < sugao\ ;
+改組 < kaiso\ ;
+紫雲 < shiun\ ;
+編者 < henja\ ;
+女権 < joken\ ;
+天狗 < tengu\ ;
+奥歯 < okuba\ ;
+早期 < souki\ ;
+素面 < sumen\ ;
+縫目 < nuime\ ;
+無謀 < mubou\ ;
+旅次 < ryoji\ ;
+日本 < nihon\ ;
+無論 < muron\ ;
+非業 < higou\ ;
+旦暮 < tanbo\ ;
+糸魚 < itoyo\ ;
+雨着 < amagi\ ;
+威圧 < iatsu\ ;
+無言 < mugon\ ;
+如是 < nyoze\ ;
+威嚇 < ikaku\ ;
+数理 < suuri\ ;
+熱砂 < nessa\ ;
+天火 < tenpi\ ;
+猊下 < geika\ ;
+防護 < bougo\ ;
+頭上 < zujou\ ;
+青梅 < aoume\ ;
+塗装 < tosou\ ;
+故知 < kochi\ ;
+隠線 < insen\ ;
+視野 < shiya\ ;
+陰茎 < inkei\ ;
+燠火 < okibi\ ;
+音名 < onmei\ ;
+妥当 < datou\ ;
+時報 < jihou\ ;
+経路 < keiro\ ;
+塩蔵 < enzou\ ;
+映射 < eisha\ ;
+諺文 < onmon\ ;
+墨絵 < sumie\ ;
+細部 < saibu\ ;
+練磨 < renma\ ;
+謝恩 < shaon\ ;
+昆布 < konbu\ ;
+雲煙 < un''en\ ;
+好打 < kouda\ ;
+防衛 < bouei\ ;
+大河 < taiga\ ;
+雷火 < raika\ ;
+網羅 < moura\ ;
+訓義 < kungi\ ;
+昨夜 < yuube\ ;
+無蓋 < mugai\ ;
+覇道 < hadou\ ;
+西部 < seibu\ ;
+雇用 < koyou\ ;
+音像 < onzou\ ;
+伊佐木 < isaki\ ;
+妻女 < saijo\ ;
+大歌 < oouta\ ;
+文殊 < monju\ ;
+無菌 < mukin\ ;
+文武 < bunbu\ ;
+慰安婦 < ianfu\ ;
+無茶 < mucha\ ;
+音便 < onbin\ ;
+多毛 < tamou\ ;
+大樹 < taiju\ ;
+外気 < gaiki\ ;
+無芸 < mugei\ ;
+大様 < ooyou\ ;
+製麻 < seima\ ;
+総社 < souja\ ;
+警句 < keiku\ ;
+非情 < hijou\ ;
+時化 < shike\ ;
+雨滴 < uteki\ ;
+雲海 < unkai\ ;
+雑煮 < zouni\ ;
+星図 < seizu\ ;
+要路 < youro\ ;
+女御 < nyogo\ ;
+斡旋 < assen\ ;
+雲泥 < undei\ ;
+警務 < keimu\ ;
+無能 < munou\ ;
+犬儒 < kenju\ ;
+大見得 < oomie\ ;
+数次 < suuji\ ;
+敵機 < tekki\ ;
+雲水 < unsui\ ;
+妖婆 < youba\ ;
+青息 < aoiki\ ;
+閑雅 < kanga\ ;
+大枝 < ooeda\ ;
+売淫 < baiin\ ;
+霧散 < musan\ ;
+女帝 < jotei\ ;
+線画 < senga\ ;
+新手 < arate\ ;
+無罪 < muzai\ ;
+散歩 < sanpo\ ;
+雨氷 < uhyou\ ;
+文書 < monjo\ ;
+既定 < kitei\ ;
+紛議 < fungi\ ;
+除算 < jozan\ ;
+議会 < gikai\ ;
+射手座 < iteza\ ;
+試演 < shien\ ;
+撫育 < buiku\ ;
+語根 < gokon\ ;
+熱波 < neppa\ ;
+多望 < tabou\ ;
+女尊 < joson\ ;
+牢固 < rouko\ ;
+話法 < wahou\ ;
+炉辺 < rohen\ ;
+煩瑣 < hansa\ ;
+総理 < souri\ ;
+無糖 < mutou\ ;
+陽皮 < youhi\ ;
+大損 < oozon\ ;
+露悪 < roaku\ ;
+犀利 < sairi\ ;
+多数 < tasuu\ ;
+網目 < amime\ ;
+天授 < tenju\ ;
+外方 < soppo\ ;
+粗餐 < sosan\ ;
+粗飯 < sohan\ ;
+閉鎖 < heisa\ ;
+素行 < sokou\ ;
+絹絵 < kinue\ ;
+譜代 < fudai\ ;
+塩税 < enzei\ ;
+絵絹 < eginu\ ;
+隠然 < inzen\ ;
+語数 < gosuu\ ;
+映倫 < eirin\ ;
+精鋭 < seiei\ ;
+雲景 < unkei\ ;
+版図 < hanto\ ;
+奇巌 < kigan\ ;
+姉上 < aneue\ ;
+無稽 < mukei\ ;
+襲衣 < shuui\ ;
+間遠 < madoo\ ;
+無税 < muzei\ ;
+詠歎 < eitan\ ;
+大愚 < taigu\ ;
+雲散 < unsan\ ;
+離村 < rison\ ;
+夜戦 < yasen\ ;
+不意気 < buiki\ ;
+絵筆 < efude\ ;
+多才 < tasai\ ;
+文意 < bun''i\ ;
+襤褸 < ranru\ ;
+大悟 < daigo\ ;
+無礼 < burei\ ;
+繻子 < shusu\ ;
+開運 < kaiun\ ;
+大恩 < daion\ ;
+該案 < gaian\ ;
+夢想 < musou\ ;
+襦袢 < juban\ ;
+難易 < nan''i\ ;
+旨味 < umami\ ;
+話柄 < wahei\ ;
+奉安 < houan\ ;
+堕胎 < datai\ ;
+多感 < takan\ ;
+播種 < hashu\ ;
+課役 < kaeki\ ;
+院生 < insei\ ;
+補題 < hodai\ ;
+多情 < tajou\ ;
+離散 < risan\ ;
+試案 < shian\ ;
+多恨 < takon\ ;
+大度 < taido\ ;
+敵意 < tekii\ ;
+文庫 < bunko\ ;
+見舞 < mimai\ ;
+堕罪 < dazai\ ;
+塩田 < enden\ ;
+無益 < mueki\ ;
+大差 < taisa\ ;
+大工 < daiku\ ;
+多形 < takei\ ;
+敬慕 < keibo\ ;
+援軍 < engun\ ;
+敬愛 < keiai\ ;
+多弁 < taben\ ;
+非命 < himei\ ;
+謀叛 < muhon\ ;
+粗銅 < sodou\ ;
+摩耗 < mamou\ ;
+父君 < fukun\ ;
+放映 < houei\ ;
+紅蓮 < guren\ ;
+雁木 < gangi\ ;
+裏面 < rimen\ ;
+方図 < houzu\ ;
+雨戸 < amado\ ;
+無用 < muyou\ ;
+牡丹 < botan\ ;
+大尾 < taibi\ ;
+粗酒 < soshu\ ;
+売手 < urite\ ;
+増派 < zouha\ ;
+誘引 < yuuin\ ;
+大家 < taike\ ;
+雅文 < gabun\ ;
+覇者 < hasha\ ;
+数度 < suudo\ ;
+大字 < ooaza\ ;
+断固 < danko\ ;
+荏胡麻 < egoma\ ;
+文字 < monji\ ;
+燕巣 < ensou\ ;
+奥印 < okuin\ ;
+夫婦 < meoto\ ;
+多層 < tasou\ ;
+訴権 < soken\ ;
+零度 < reido\ ;
+点者 < tenja\ ;
+絵画 < kaiga\ ;
+非凡 < hibon\ ;
+女優 < joyuu\ ;
+誤射 < gosha\ ;
+外宮 < gekuu\ ;
+太夫 < tayuu\ ;
+大奥 < oooku\ ;
+排除 < haijo\ ;
+如上 < jojou\ ;
+大声 < oogoe\ ;
+擬毛 < gimou\ ;
+契印 < keiin\ ;
+要素 < youso\ ;
+雲居 < kumoi\ ;
+露命 < romei\ ;
+陰毛 < inmou\ ;
+織地 < oriji\ ;
+霊夢 < reimu\ ;
+多大 < tadai\ ;
+捕鯨 < hogei\ ;
+多売 < tabai\ ;
+露台 < rodai\ ;
+繁多 < hanta\ ;
+除法 < johou\ ;
+焜炉 < konro\ ;
+離岸 < rigan\ ;
+炭素 < tanso\ ;
+外場 < gaiba\ ;
+離山 < rizan\ ;
+大嘘 < oouso\ ;
+数多 < suuta\ ;
+随時 < zuiji\ ;
+霊園 < reien\ ;
+政府 < seifu\ ;
+阿漕 < akogi\ ;
+斗南 < tonan\ ;
+売子 < uriko\ ;
+電場 < denba\ ;
+外因 < gaiin\ ;
+防火 < bouka\ ;
+露光 < rokou\ ;
+大味 < ooaji\ ;
+施主 < seshu\ ;
+無法 < muhou\ ;
+故山 < kozan\ ;
+大台 < oodai\ ;
+在野 < zaiya\ ;
+火色 < hiiro\ ;
+文句 < monku\ ;
+鼿 < gotsu\ ;
+無水 < musui\ ;
+鼎 < kanae\ ;
+無毛 < mumou\ ;
+図面 < zumen\ ;
+放屁 < houhi\ ;
+売女 < baita\ ;
+天助 < tenjo\ ;
+米貨 < beika\ ;
+無残 < muzan\ ;
+開花 < kaika\ ;
+夜叉 < yasha\ ;
+基盤 < kiban\ ;
+鷩 < hetsu\ ;
+大判 < ooban\ ;
+素直 < sunao\ ;
+親爺 < oyaji\ ;
+需品 < juhin\ ;
+補講 < hokou\ ;
+難場 < nanba\ ;
+鶍 < isuka\ ;
+売場 < uriba\ ;
+鶉 < uzura\ ;
+院本 < inpon\ ;
+多勢 < tazei\ ;
+四顧 < shiko\ ;
+大儒 < daiju\ ;
+夜前 < yazen\ ;
+米語 < beigo\ ;
+阻止 < soshi\ ;
+外務 < gaimu\ ;
+雑多 < zatta\ ;
+夜分 < yabun\ ;
+敗因 < haiin\ ;
+米話 < beiwa\ ;
+鱗 < uroko\ ;
+鰻 < unagi\ ;
+斉備 < seibi\ ;
+絵文字 < emoji\ ;
+墓所 < bosho\ ;
+鰒 < awabi\ ;
+鰏 < hyoku\ ;
+語勢 < gosei\ ;
+鰍 < inada\ ;
+誤判 < gohan\ ;
+鰉 < higai\ ;
+鯏 < asari\ ;
+図鑑 < zukan\ ;
+鮭 < shake\ ;
+雲台 < undai\ ;
+認否 < ninpi\ ;
+無根 < mukon\ ;
+変化 < henge\ ;
+認可 < ninka\ ;
+髺 < gatsu\ ;
+網戸 < amido\ ;
+記憶 < kioku\ ;
+文事 < bunji\ ;
+擬態 < gitai\ ;
+粗茶 < socha\ ;
+夜会 < yakai\ ;
+純理 < junri\ ;
+離合 < rigou\ ;
+難句 < nanku\ ;
+緞子 < donsu\ ;
+離反 < rihan\ ;
+素片 < sohen\ ;
+誤伝 < goden\ ;
+糸目 < itome\ ;
+絵柄 < egara\ ;
+記念 < kinen\ ;
+無断 < mudan\ ;
+陰惨 < insan\ ;
+無数 < musuu\ ;
+絵札 < efuda\ ;
+数価 < suuka\ ;
+綿布 < menpu\ ;
+電位 < den''i\ ;
+精粗 < seiso\ ;
+雨具 < amagu\ ;
+靨 < ekubo\ ;
+掩蔽 < enpei\ ;
+難儀 < nangi\ ;
+隉 < getsu\ ;
+試合 < shiai\ ;
+隠士 < inshi\ ;
+墳墓 < funbo\ ;
+衰運 < suiun\ ;
+雅号 < gagou\ ;
+詠吟 < eigin\ ;
+政務 < seimu\ ;
+場末 < basue\ ;
+綾子 < rinzu\ ;
+無才 < musai\ ;
+炬火 < kyoka\ ;
+米英 < beiei\ ;
+隠坊 < onbou\ ;
+隻句 < sekku\ ;
+無慮 < muryo\ ;
+堀江 < horie\ ;
+離任 < rinin\ ;
+結果 < kekka\ ;
+衰躯 < suiku\ ;
+難事 < nanji\ ;
+地蔵 < jizou\ ;
+無情 < mujou\ ;
+鏉 < shyuu\ ;
+鎧 < yoroi\ ;
+詐取 < sashu\ ;
+雅兄 < gakei\ ;
+錨 < ikari\ ;
+錘 < tsumu\ ;
+無念 < munen\ ;
+回路 < kairo\ ;
+親木 < oyagi\ ;
+雑作 < zousa\ ;
+限度 < gendo\ ;
+鈺 < gyoku\ ;
+塁打 < ruida\ ;
+土蔵 < dozou\ ;
+見様 < miyou\ ;
+故主 < koshu\ ;
+西欧 < seiou\ ;
+覇権 < haken\ ;
+粗笨 < sohon\ ;
+紡機 < bouki\ ;
+図解 < zukai\ ;
+地色 < jiiro\ ;
+土葬 < dosou\ ;
+措置 < sochi\ ;
+墓地 < bochi\ ;
+在英 < zaiei\ ;
+糜爛 < biran\ ;
+場所 < basho\ ;
+街路 < gairo\ ;
+塗工 < tokou\ ;
+随員 < zuiin\ ;
+拗音 < youon\ ;
+見栄 < mibae\ ;
+絹布 < kenpu\ ;
+無尽 < mujin\ ;
+除外 < jogai\ ;
+増員 < zouin\ ;
+絵巻 < emaki\ ;
+見本 < mihon\ ;
+院外 < ingai\ ;
+総務 < soumu\ ;
+闊歩 < kappo\ ;
+躵 < nerau\ ;
+隠元 < ingen\ ;
+無官 < mukan\ ;
+基本 < kihon\ ;
+粗砥 < arato\ ;
+報恩 < houon\ ;
+素材 < sozai\ ;
+総出 < soude\ ;
+園芸 < engei\ ;
+跛 < bikko\ ;
+捕虜 < horyo\ ;
+隣保 < rinpo\ ;
+墓参 < bosan\ ;
+裸眼 < ragan\ ;
+絶家 < zekke\ ;
+記号 < kigou\ ;
+濾紙 < roshi\ ;
+摩損 < mason\ ;
+塔婆 < touba\ ;
+素数 < sosuu\ ;
+墓前 < bozen\ ;
+親御 < oyago\ ;
+点播 < tenpa\ ;
+訴人 < sonin\ ;
+街衢 < gaiku\ ;
+開演 < kaien\ ;
+紋日 < monbi\ ;
+除号 < jogou\ ;
+困苦 < konku\ ;
+除去 < jokyo\ ;
+院号 < ingou\ ;
+隊伍 < taigo\ ;
+蟻酸 < gisan\ ;
+地租 < chiso\ ;
+細微 < saibi\ ;
+拝辞 < haiji\ ;
+土管 < dokan\ ;
+塊土 < kaido\ ;
+裏目 < urame\ ;
+視度 < shido\ ;
+粗煮 < arani\ ;
+視差 < shisa\ ;
+素性 < sujou\ ;
+細工 < saiku\ ;
+陪侍 < baiji\ ;
+堰堤 < entei\ ;
+藜 < akaza\ ;
+圧砕 < assai\ ;
+無効 < mukou\ ;
+地盤 < jiban\ ;
+薊 < azami\ ;
+火桶 < hioke\ ;
+捕縄 < hojou\ ;
+絶句 < zekku\ ;
+簡素 < kanso\ ;
+蔦 < tsuta\ ;
+蔤 < bitsu\ ;
+押送 < ousou\ ;
+土砂 < dosha\ ;
+点差 < tensa\ ;
+堡塁 < horui\ ;
+純度 < jundo\ ;
+圧痕 < akkon\ ;
+茨 < ibara\ ;
+茜 < akane\ ;
+精査 < seisa\ ;
+茀 < hutsu\ ;
+苶 < detsu\ ;
+恵比寿 < ebisu\ ;
+場味 < baaji\ ;
+烈婦 < reppu\ ;
+授産 < jusan\ ;
+無体 < mutai\ ;
+行脚 < angya\ ;
+無住 < mujuu\ ;
+揺曳 < youei\ ;
+土用 < doyou\ ;
+螺鈿 < raden\ ;
+無人 < munin\ ;
+土瓶 < dobin\ ;
+防具 < bougu\ ;
+長柄 < nagae\ ;
+襟度 < kindo\ ;
+衣糧 < iryou\ ;
+防備 < boubi\ ;
+肭 < dotsu\ ;
+結句 < kekku\ ;
+肋 < abara\ ;
+打順 < dajun\ ;
+摂家 < sekke\ ;
+堅固 < kengo\ ;
+手順 < tejun\ ;
+打電 < daden\ ;
+提案 < teian\ ;
+圧点 < atten\ ;
+補正 < hosei\ ;
+握斧 < akufu\ ;
+打開 < dakai\ ;
+要図 < youzu\ ;
+要因 < youin\ ;
+競馬 < keiba\ ;
+漏話 < rouwa\ ;
+採油 < saiyu\ ;
+場代 < badai\ ;
+粗暴 < sobou\ ;
+地温 < chion\ ;
+裏毛 < urake\ ;
+門扉 < monpi\ ;
+門戸 < monko\ ;
+粒 < tsubu\ ;
+披見 < hiken\ ;
+篩 < furui\ ;
+炭団 < tadon\ ;
+回目 < kaime\ ;
+滅金 < mekki\ ;
+筏 < ikada\ ;
+地歩 < chiho\ ;
+手錠 < tejou\ ;
+地歌 < jiuta\ ;
+門徒 < monto\ ;
+秫 < jotsu\ ;
+図版 < zuhan\ ;
+火山 < kazan\ ;
+系図 < keizu\ ;
+圧死 < asshi\ ;
+手金 < tekin\ ;
+土民 < domin\ ;
+点前 < temae\ ;
+探査 < tansa\ ;
+納受 < nouju\ ;
+手配 < tehai\ ;
+授権 < juken\ ;
+筆記 < hikki\ ;
+粗悪 < soaku\ ;
+素体 < sotai\ ;
+糞土 < fundo\ ;
+留守居 < rusui\ ;
+長居 < nagai\ ;
+漫罵 < manba\ ;
+端銭 < hasen\ ;
+疙 < gitsu\ ;
+不得手 < fuete\ ;
+箪笥 < tansu\ ;
+図法 < zuhou\ ;
+潤目 < urume\ ;
+湖面 < komen\ ;
+揚屋 < ageya\ ;
+裏手 < urate\ ;
+螟蛾 < meiga\ ;
+圧政 < assei\ ;
+押絵 < oshie\ ;
+湯銭 < yusen\ ;
+閲兵 < eppei\ ;
+補弦 < hogen\ ;
+行灯 < andon\ ;
+手話 < shuwa\ ;
+圧排 < appai\ ;
+営農 < einou\ ;
+手製 < tesei\ ;
+城下 < jouka\ ;
+粗大 < sodai\ ;
+固有 < koyuu\ ;
+温顔 < ongan\ ;
+炊事 < suiji\ ;
+炎上 < enjou\ ;
+捻挫 < nenza\ ;
+演算 < enzan\ ;
+温順 < onjun\ ;
+突飛 < toppi\ ;
+無意義 < muigi\ ;
+米寿 < beiju\ ;
+投網 < toami\ ;
+損保 < sonpo\ ;
+裏屋 < uraya\ ;
+措定 < sotei\ ;
+戦記 < senki\ ;
+手薄 < teusu\ ;
+在庫 < zaiko\ ;
+童話 < douwa\ ;
+間代 < madai\ ;
+圧巻 < akkan\ ;
+漫画 < manga\ ;
+揚句 < ageku\ ;
+補填 < hoten\ ;
+粗品 < sohin\ ;
+土工 < dokou\ ;
+四日 < yokka\ ;
+手荒 < teara\ ;
+米塩 < beien\ ;
+掩壕 < engou\ ;
+在家 < zaike\ ;
+補回 < hokai\ ;
+楾 < hazou\ ;
+椣 < shide\ ;
+門下 < monka\ ;
+噴火 < funka\ ;
+粗利 < arari\ ;
+裏地 < uraji\ ;
+淫風 < inpuu\ ;
+打者 < dasha\ ;
+栃 < tochi\ ;
+地声 < jigoe\ ;
+国庫 < kokko\ ;
+杁 < eburi\ ;
+筆禍 < hikka\ ;
+蜻蛉 < tonbo\ ;
+行方 < yukue\ ;
+裸像 < razou\ ;
+図形 < zukei\ ;
+ＰＣ < pīshī\ ;
+打線 < dasen\ ;
+地図 < chizu\ ;
+表意 < hyoui\ ;
+技研 < giken\ ;
+手織 < teori\ ;
+裸体 < ratai\ ;
+図工 < zukou\ ;
+衰微 < suibi\ ;
+裏名 < urana\ ;
+土塊 < dokai\ ;
+手練 < teren\ ;
+土塁 < dorui\ ;
+土塀 < dobei\ ;
+唐音 < touon\ ;
+因循 < injun\ ;
+簿外 < bogai\ ;
+採否 < saihi\ ;
+撥 < bachi\ ;
+技監 < gikan\ ;
+空輸 < kuuyu\ ;
+補充 < hojuu\ ;
+坑儒 < kouju\ ;
+固定 < kotei\ ;
+挙措 < kyoso\ ;
+打算 < dasan\ ;
+掟 < okite\ ;
+土嚢 < donou\ ;
+漸次 < zenji\ ;
+空路 < kuuro\ ;
+国威 < kokui\ ;
+潜時 < senji\ ;
+懤 < chyuu\ ;
+補任 < honin\ ;
+漫歩 < manpo\ ;
+漁火 < gyoka\ ;
+懇話 < konwa\ ;
+空費 < kuuhi\ ;
+蛮語 < bango\ ;
+戯絵 < zaree\ ;
+団子 < dango\ ;
+土台 < dodai\ ;
+涼雨 < ryouu\ ;
+坊主 < bouzu\ ;
+営繕 < eizen\ ;
+移駐 < ichuu\ ;
+虎魚 < okoze\ ;
+算木 < sangi\ ;
+手相 < tesou\ ;
+圧倒 < attou\ ;
+海鰻 < anago\ ;
+嶍 < shihu\ ;
+憂身 < ukimi\ ;
+批点 < hiten\ ;
+土偶 < doguu\ ;
+行宮 < anguu\ ;
+峠 < touge\ ;
+岏 < guwan\ ;
+哀願 < aigan\ ;
+土人 < dojin\ ;
+孰 < izure\ ;
+愛餐 < aisan\ ;
+嬇 < kuwai\ ;
+蛇行 < dakou\ ;
+浅黄 < asagi\ ;
+慶賀 < keiga\ ;
+街図 < gaizu\ ;
+壷 < tsubo\ ;
+打点 < daten\ ;
+漏斗 < routo\ ;
+渡船 < tosen\ ;
+淫行 < inkou\ ;
+垔 < shyou\ ;
+垏 < rotsu\ ;
+囮 < otori\ ;
+温習 < sarai\ ;
+節婦 < seppu\ ;
+喝破 < kappa\ ;
+嗧 < garon\ ;
+嗖 < shuhu\ ;
+和風 < wafuu\ ;
+螺旋 < rasen\ ;
+稟議 < ringi\ ;
+憂虞 < yuugu\ ;
+打法 < dahou\ ;
+哘 < sasou\ ;
+扶桑 < fusou\ ;
+虚辞 < kyoji\ ;
+衛兵 < eihei\ ;
+愚鈍 < gudon\ ;
+鼠輩 < sohai\ ;
+吋 < inchi\ ;
+回付 < kaifu\ ;
+卍 < manji\ ;
+鼠蹊 < sokei\ ;
+匁 < monme\ ;
+把握 < haaku\ ;
+渡米 < tobei\ ;
+拳固 < genko\ ;
+投打 < touda\ ;
+麒麟 < kirin\ ;
+憂苦 < yuuku\ ;
+嗟歎 < satan\ ;
+儲 < mouke\ ;
+海辺 < umibe\ ;
+愛車 < aisha\ ;
+打棒 < dabou\ ;
+偟 < kuwau\ ;
+倌 < kuwan\ ;
+悪魔 < akuma\ ;
+湯灌 < yukan\ ;
+手桶 < teoke\ ;
+稲荷 < inari\ ;
+浦辺 < urabe\ ;
+和金 < wakin\ ;
+麝香 < jakou\ ;
+鈍麻 < donma\ ;
+悪馬 < akume\ ;
+手本 < tehon\ ;
+乄 < shime\ ;
+減磨 < genma\ ;
+突破 < toppa\ ;
+海豚 < iruka\ ;
+蛇管 < jakan\ ;
+哀詩 < aishi\ ;
+打数 < dasuu\ ;
+愚論 < guron\ ;
+手斧 < teono\ ;
+拝受 < haiju\ ;
+浪費 < rouhi\ ;
+手数 < tesuu\ ;
+戸板 < toita\ ;
+漢土 < kando\ ;
+愚計 < gukei\ ;
+鉛錘 < ensui\ ;
+立派 < rippa\ ;
+愚見 < guken\ ;
+惹起 < jakki\ ;
+味醂 < mirin\ ;
+命運 < meiun\ ;
+秘計 < hikei\ ;
+蘇連 < soren\ ;
+愚行 < gukou\ ;
+空疎 < kuuso\ ;
+漁夫 < gyofu\ ;
+拝具 < haigu\ ;
+銀貨 < ginka\ ;
+端本 < hahon\ ;
+流転 < ruten\ ;
+浴衣 < yokui\ ;
+漁場 < gyoba\ ;
+意表 < ihyou\ ;
+戯文 < gibun\ ;
+液肥 < ekihi\ ;
+空理 < kuuri\ ;
+満期 < manki\ ;
+湖水 < kosui\ ;
+和讚 < wasan\ ;
+端数 < hasuu\ ;
+嘘字 < usoji\ ;
+成案 < seian\ ;
+波頭 < hatou\ ;
+愛蔵 < aizou\ ;
+麦酒 < biiru\ ;
+名馬 < meiba\ ;
+和訓 < wakun\ ;
+和解 < wakai\ ;
+波面 < hamen\ ;
+手当 < teate\ ;
+稲穂 < inaho\ ;
+鼻緒 < hanao\ ;
+和製 < wasei\ ;
+鋤簾 < joren\ ;
+和装 < wasou\ ;
+担保 < tanpo\ ;
+和裁 < wasai\ ;
+憂目 < ukime\ ;
+温湯 < ontou\ ;
+同音 < douon\ ;
+憮然 < buzen\ ;
+悪運 < akuun\ ;
+懸架 < kenga\ ;
+患部 < kanbu\ ;
+銘菓 < meika\ ;
+黒衣 < kokue\ ;
+悟道 < godou\ ;
+味見 < ajimi\ ;
+無意味 < muimi\ ;
+温水 < onsui\ ;
+鼻端 < bitan\ ;
+渡洋 < toyou\ ;
+愛育 < aiiku\ ;
+滅多 < metta\ ;
+淫猥 < inwai\ ;
+漁具 < gyogu\ ;
+悪路 < akuro\ ;
+情話 < jouwa\ ;
+種皮 < shuhi\ ;
+愚者 < gusha\ ;
+扇子 < sensu\ ;
+野馬 < nouma\ ;
+禅話 < zenwa\ ;
+我慢 < gaman\ ;
+古風 < kofuu\ ;
+空気 < kuuki\ ;
+空母 < kuubo\ ;
+唾液 < daeki\ ;
+満座 < manza\ ;
+営庭 < eitei\ ;
+虚空 < kokuu\ ;
+淵源 < engen\ ;
+和船 < wasen\ ;
+社運 < shaun\ ;
+批判 < hihan\ ;
+手垢 < teaka\ ;
+悪計 < akkei\ ;
+批准 < hijun\ ;
+鼓童 < kodou\ ;
+吏道 < rodou\ ;
+投与 < touyo\ ;
+懸想 < kesou\ ;
+受難 < junan\ ;
+戸外 < kogai\ ;
+懺悔 < zange\ ;
+鋳物 < imono\ ;
+温暖 < ondan\ ;
+渡来 < torai\ ;
+恥部 < chibu\ ;
+懸念 < kenen\ ;
+悪行 < akkou\ ;
+淡湖 < tanko\ ;
+成就 < jouju\ ;
+租税 < sozei\ ;
+善意 < zen''i\ ;
+古銭 < kosen\ ;
+童女 < doujo\ ;
+鼠疫 < soeki\ ;
+流罪 < ruzai\ ;
+嗚咽 < oetsu\ ;
+恩赦 < onsha\ ;
+手勢 < tezei\ ;
+意固地 < ikoji\ ;
+淘汰 < touta\ ;
+洒落 < share\ ;
+海砂 < kaisa\ ;
+台輪 < daiwa\ ;
+湖岸 < kogan\ ;
+洵美 < junbi\ ;
+第二 < daini\ ;
+示談 < jidan\ ;
+野郎 < yarou\ ;
+法語 < hougo\ ;
+合議 < gougi\ ;
+懇意 < kon''i\ ;
+懊悩 < ounou\ ;
+名誉 < meiyo\ ;
+愚痴 < guchi\ ;
+水鶏 < kuina\ ;
+叉銃 < sajuu\ ;
+温情 < onjou\ ;
+愛用 < aiyou\ ;
+懈怠 < getai\ ;
+愚生 < gusei\ ;
+釈迦 < shaka\ ;
+湯垢 < yuaka\ ;
+恋路 < koiji\ ;
+派米 < habei\ ;
+法被 < happi\ ;
+藍色 < aiiro\ ;
+端午 < tango\ ;
+虚無 < kyomu\ ;
+手代 < tedai\ ;
+受身 < ukemi\ ;
+渡御 < togyo\ ;
+水魔 < suima\ ;
+野趣 < yashu\ ;
+快音 < kaion\ ;
+所作 < shosa\ ;
+古豪 < kogou\ ;
+金貨 < kinka\ ;
+愛犬 < aiken\ ;
+磯辺 < isobe\ ;
+鼻汁 < bijuu\ ;
+惰眠 < damin\ ;
+悪罵 < akuba\ ;
+成句 < seiku\ ;
+所与 < shoyo\ ;
+古諺 < kogen\ ;
+稲木 < inagi\ ;
+古訓 < kokun\ ;
+空巣 < akisu\ ;
+悪縁 < akuen\ ;
+温存 < onzon\ ;
+受講 < jukou\ ;
+叡覧 < eiran\ ;
+危難 < kinan\ ;
+御辞儀 < ojigi\ ;
+必須 < hissu\ ;
+反語 < hango\ ;
+鼻根 < bikon\ ;
+反訴 < hanso\ ;
+鋭敏 < eibin\ ;
+愛液 < aieki\ ;
+名舗 < meiho\ ;
+派生 < hasei\ ;
+喇叭 < rappa\ ;
+鍼医 < harii\ ;
+怪訝 < kegen\ ;
+野蛮 < yaban\ ;
+印鑑 < inkan\ ;
+汚辱 < ojoku\ ;
+銃火 < juuka\ ;
+愚民 < gumin\ ;
+喪主 < moshu\ ;
+南阿 < nan''a\ ;
+黄班 < ouhan\ ;
+名義 < meigi\ ;
+民需 < minju\ ;
+虚栄 < kyoei\ ;
+涅槃 < nehan\ ;
+添字 < soeji\ ;
+員数 < inzuu\ ;
+浮気 < uwaki\ ;
+波紋 < hamon\ ;
+禅画 < zenga\ ;
+穴場 < anaba\ ;
+和漢 < wakan\ ;
+意欲 < iyoku\ ;
+野菜 < yasai\ ;
+古茶 < kocha\ ;
+神社 < jinja\ ;
+黄燐 < ourin\ ;
+浅瀬 < asase\ ;
+御難 < gonan\ ;
+野草 < yasou\ ;
+御陰 < okage\ ;
+蚕座 < sanza\ ;
+温厚 < onkou\ ;
+銀波 < ginpa\ ;
+銀河 < ginga\ ;
+慕情 < bojou\ ;
+和洋 < wayou\ ;
+名簿 < meibo\ ;
+淋巴 < rinpa\ ;
+慇懃 < ingin\ ;
+念誦 < nenju\ ;
+愛書 < aisho\ ;
+沿線 < ensen\ ;
+金肥 < kinpi\ ;
+原被 < genpi\ ;
+蕗草 < rosou\ ;
+気重 < kiomo\ ;
+南部 < nanbu\ ;
+淫売 < inbai\ ;
+秘本 < hihon\ ;
+愚昧 < gumai\ ;
+流浪 < rurou\ ;
+水路 < suiro\ ;
+気配 < kehai\ ;
+薬研 < yagen\ ;
+受胎 < jutai\ ;
+微醺 < bikun\ ;
+半里 < hanri\ ;
+稲子 < inago\ ;
+比類 < hirui\ ;
+流民 < rumin\ ;
+千里 < senri\ ;
+同祖 < douso\ ;
+鉄火 < tekka\ ;
+破顔 < hagan\ ;
+卑近 < hikin\ ;
+御釜 < okama\ ;
+御金 < okane\ ;
+浦曲 < urawa\ ;
+重縁 < juuen\ ;
+部首 < bushu\ ;
+都電 < toden\ ;
+愚挙 < gukyo\ ;
+哀憫 < aibin\ ;
+哀憐 < airen\ ;
+彩雲 < saiun\ ;
+部類 < burui\ ;
+蔬菜 < sosai\ ;
+和本 < wahon\ ;
+液安 < ekian\ ;
+空佐 < kuusa\ ;
+受納 < junou\ ;
+哀情 < aijou\ ;
+哀悼 < aitou\ ;
+和書 < washo\ ;
+憂哭 < ukine\ ;
+受粉 < jufun\ ;
+部面 < bumen\ ;
+矮鶏 < chabo\ ;
+毫釐 < gouri\ ;
+愛想 < aisou\ ;
+黄楊 < tsuge\ ;
+鋳型 < igata\ ;
+微賤 < bisen\ ;
+和文 < wabun\ ;
+薄着 < usugi\ ;
+波状 < hajou\ ;
+薄目 < usume\ ;
+徒輩 < tohai\ ;
+里程 < ritei\ ;
+蛇体 < jatai\ ;
+稽古 < keiko\ ;
+愚弟 < gutei\ ;
+愚弄 < gurou\ ;
+薫煙 < kunen\ ;
+治癒 < chiyu\ ;
+悲歎 < hitan\ ;
+汚臭 < oshuu\ ;
+卑言 < higen\ ;
+民話 < minwa\ ;
+比重 < hijuu\ ;
+禍根 < kakon\ ;
+野砲 < yahou\ ;
+愉快 < yukai\ ;
+穏健 < onken\ ;
+原義 < gengi\ ;
+阿弥陀 < amida\ ;
+油田 < yuden\ ;
+弾雨 < dan''u\ ;
+都邑 < toyuu\ ;
+半裸 < hanra\ ;
+御詠 < gyoei\ ;
+重目 < omome\ ;
+砂防 < sabou\ ;
+呪文 < jumon\ ;
+御覧 < goran\ ;
+吐瀉 < tosha\ ;
+淫乱 < inran\ ;
+神武 < jinmu\ ;
+合点 < gaten\ ;
+愛孫 < aison\ ;
+浅手 < asade\ ;
+蚕具 < sangu\ ;
+惰性 < dasei\ ;
+居合道 < iadou\ ;
+油状 < yujou\ ;
+野生 < yasei\ ;
+波浪 < harou\ ;
+蓮華 < renge\ ;
+愛婿 < aisei\ ;
+忍苦 < ninku\ ;
+銃座 < juuza\ ;
+原簿 < genbo\ ;
+銀座 < ginza\ ;
+愛妻 < aisai\ ;
+税吏 < zeiri\ ;
+愛好 < aikou\ ;
+労音 < rouon\ ;
+野獣 < yajuu\ ;
+野猪 < yacho\ ;
+水肥 < suihi\ ;
+募金 < bokin\ ;
+酸素 < sanso\ ;
+野犬 < yaken\ ;
+延髄 < enzui\ ;
+税務 < zeimu\ ;
+悪日 < akubi\ ;
+稚児 < chigo\ ;
+忍者 < ninja\ ;
+鼻内 < binai\ ;
+句点 < kuten\ ;
+破談 < hadan\ ;
+和尚 < oshou\ ;
+当路 < touro\ ;
+情愛 < jouai\ ;
+部財 < buzai\ ;
+鉄扉 < teppi\ ;
+海図 < kaizu\ ;
+愚問 < gumon\ ;
+水素 < suiso\ ;
+哀号 < aigou\ ;
+悲憤 < hifun\ ;
+麻幹 < ogara\ ;
+印籠 < inrou\ ;
+移入 < inyuu\ ;
+泰斗 < taito\ ;
+愛吟 < aigin\ ;
+重湯 < omoyu\ ;
+欺騙 < gihen\ ;
+御腹 < onaka\ ;
+悲恋 < hiren\ ;
+句法 < kuhou\ ;
+微罪 < bizai\ ;
+原画 < genga\ ;
+古法 < kohou\ ;
+虚偽 < kyogi\ ;
+勲記 < kunki\ ;
+金波 < kinpa\ ;
+海参 < iriko\ ;
+秘史 < hishi\ ;
+邪道 < jadou\ ;
+厳父 < genpu\ ;
+銀地 < ginji\ ;
+社是 < shaze\ ;
+海区 < kaiku\ ;
+印税 < inzei\ ;
+重油 < juuyu\ ;
+矮躯 < waiku\ ;
+悪心 < oshin\ ;
+汗疹 < asemo\ ;
+悪徒 < akuto\ ;
+硼素 < houso\ ;
+受洗 < jusen\ ;
+銀器 < ginki\ ;
+快癒 < kaiyu\ ;
+金歯 < kinba\ ;
+短路 < tanro\ ;
+遠音 < toone\ ;
+微細 < bisai\ ;
+勃起 < bokki\ ;
+愚僧 < gusou\ ;
+禅家 < zenke\ ;
+加配 < kahai\ ;
+品位 < hin''i\ ;
+欧風 < oufuu\ ;
+浄土 < joudo\ ;
+未通女 < oboko\ ;
+怒濤 < dotou\ ;
+惹句 < jakku\ ;
+磨淬 < masai\ ;
+永眠 < eimin\ ;
+強訴 < gouso\ ;
+咄嗟 < tossa\ ;
+武道 < budou\ ;
+反比 < hanpi\ ;
+印相 < inzou\ ;
+次類 < jirui\ ;
+反歯 < soppa\ ;
+剪除 < senjo\ ;
+醸母 < joubo\ ;
+武辺 < buhen\ ;
+座高 < zakou\ ;
+和名 < wamei\ ;
+愛人 < aijin\ ;
+和合 < wagou\ ;
+半端 < hanpa\ ;
+薄日 < usubi\ ;
+愚人 < gujin\ ;
+応用 < ouyou\ ;
+否応 < iyaou\ ;
+母艦 < bokan\ ;
+油断 < yudan\ ;
+母船 < bosen\ ;
+古来 < korai\ ;
+古書 < kosho\ ;
+野末 < nozue\ ;
+野望 < yabou\ ;
+正路 < seiro\ ;
+鉱区 < kouku\ ;
+波形 < hakei\ ;
+前非 < zenpi\ ;
+汚濁 < odaku\ ;
+碁盤 < goban\ ;
+弘誓 < guzei\ ;
+浮世 < ukiyo\ ;
+座頭 < zatou\ ;
+吐息 < toiki\ ;
+悪女 < akujo\ ;
+毛織 < keori\ ;
+江湖 < gouko\ ;
+恩愛 < on''ai\ ;
+悪夢 < akumu\ ;
+北緯 < hokui\ ;
+薄手 < usude\ ;
+恩恵 < onkei\ ;
+永牢 < eirou\ ;
+午睡 < gosui\ ;
+流刑 < rukei\ ;
+銀位 < gin''i\ ;
+南画 < nanga\ ;
+囲炉裏 < irori\ ;
+弁護 < bengo\ ;
+勤苦 < kinku\ ;
+助言 < jogon\ ;
+法度 < hatto\ ;
+情味 < joumi\ ;
+否定 < hitei\ ;
+影絵 < kagee\ ;
+同座 < douza\ ;
+破綻 < hatan\ ;
+派兵 < hahei\ ;
+禅味 < zenmi\ ;
+悪因 < akuin\ ;
+蒔絵 < makie\ ;
+匕箸 < hicho\ ;
+半田 < handa\ ;
+恋慕 < renbo\ ;
+重手 < omode\ ;
+武装 < busou\ ;
+卑猥 < hiwai\ ;
+破算 < hasan\ ;
+呑吐 < donto\ ;
+油彩 < yusai\ ;
+叡慮 < eiryo\ ;
+流人 < runin\ ;
+御璽 < gyoji\ ;
+取手 < totte\ ;
+名宛 < naate\ ;
+着類 < kirui\ ;
+歌論 < karon\ ;
+重愛 < juuai\ ;
+台座 < daiza\ ;
+割賦 < wappu\ ;
+真鯉 < magoi\ ;
+残花 < zanka\ ;
+黄人 < oujin\ ;
+水温 < suion\ ;
+運輸 < un''yu\ ;
+藩儒 < hanju\ ;
+麗句 < reiku\ ;
+葉茶 < hadja\ ;
+御玉 < otama\ ;
+道路 < douro\ ;
+運転 < unten\ ;
+初陣 < uijin\ ;
+連鎖 < rensa\ ;
+遍路 < henro\ ;
+鉛丹 < entan\ ;
+水泳 < suiei\ ;
+泥土 < deido\ ;
+友愛 < yuuai\ ;
+同夜 < douya\ ;
+重度 < juudo\ ;
+前輪 < maewa\ ;
+治安 < chian\ ;
+鈍器 < donki\ ;
+性愛 < seiai\ ;
+砂絵 < sunae\ ;
+沙弥 < shami\ ;
+祭具 < saigu\ ;
+配流 < hairu\ ;
+刈除 < gaijo\ ;
+怨恨 < enkon\ ;
+遠見 < toomi\ ;
+荷馬 < niuma\ ;
+真顔 < magao\ ;
+利鈍 < ridon\ ;
+思慕 < shibo\ ;
+怠惰 < taida\ ;
+利金 < rikin\ ;
+酔歩 < suiho\ ;
+凹面 < oumen\ ;
+吟味 < ginmi\ ;
+武芸 < bugei\ ;
+徒然 < tozen\ ;
+金子 < kinsu\ ;
+単比 < tanpi\ ;
+過言 < kagon\ ;
+社員 < shain\ ;
+悪事 < akuji\ ;
+彩画 < saiga\ ;
+薫化 < kunka\ ;
+祖先 < sosen\ ;
+鈍化 < donka\ ;
+別途 < betto\ ;
+台場 < daiba\ ;
+薄地 < usuji\ ;
+印材 < inzai\ ;
+平野 < heiya\ ;
+息吹 < ibuki\ ;
+名句 < meiku\ ;
+武者 < musha\ ;
+社務 < shamu\ ;
+原意 < gen''i\ ;
+古墳 < kofun\ ;
+野天 < noten\ ;
+合否 < gouhi\ ;
+労組 < rouso\ ;
+野外 < yagai\ ;
+座談 < zadan\ ;
+弗素 < fusso\ ;
+法務 < houmu\ ;
+御世辞 < oseji\ ;
+破片 < hahen\ ;
+吐剤 < tozai\ ;
+御殿 < goten\ ;
+区民 < kumin\ ;
+石 < koku\ ;
+迫 < haku\ ;
+迄 < made\ ;
+心 < shin\ ;
+込 < komu\ ;
+徴 < chou\ ;
+徳 < toku\ ;
+辱 < joku\ ;
+瞭 < ryou\ ;
+瞬 < shun\ ;
+復 < fuku\ ;
+彼 < kare\ ;
+役 < yaku\ ;
+影 < kage\ ;
+睦 < boku\ ;
+弾 < tama\ ;
+強 < kyou\ ;
+輯 < shuu\ ;
+眉 < mayu\ ;
+較 < kaku\ ;
+直 < hita\ ;
+軒 < noki\ ;
+廂 < shou\ ;
+皿 < sara\ ;
+庵 < iori\ ;
+皮 < kawa\ ;
+庭 < niwa\ ;
+店 < mise\ ;
+底 < soko\ ;
+躑 < teki\ ;
+躊 < chuu\ ;
+床 < yuka\ ;
+的 < mato\ ;
+幹 < miki\ ;
+平 < hira\ ;
+蹠 < seki\ ;
+癖 < kuse\ ;
+幅 < haba\ ;
+常 < towa\ ;
+希 < mare\ ;
+布 < nuno\ ;
+巻 < maki\ ;
+足 < ashi\ ;
+越 < etsu\ ;
+留 < ryuu\ ;
+申 < saru\ ;
+生 < nama\ ;
+崖 < gake\ ;
+崎 < saki\ ;
+峰 < mine\ ;
+賊 < zoku\ ;
+賃 < chin\ ;
+山 < yama\ ;
+屑 < kuzu\ ;
+豆 < mame\ ;
+琴 < koto\ ;
+対 < tsui\ ;
+寺 < tera\ ;
+富 < tomi\ ;
+寂 < sabi\ ;
+宿 < yado\ ;
+宮 < miya\ ;
+室 < muro\ ;
+玖 < kyuu\ ;
+玉 < dama\ ;
+安 < yasu\ ;
+守 < mori\ ;
+宅 < taku\ ;
+學 < gaku\ ;
+孫 < mago\ ;
+獨 < doku\ ;
+獄 < goku\ ;
+猫 < neko\ ;
+謡 < utai\ ;
+謎 < nazo\ ;
+嫁 < yome\ ;
+誰 < dare\ ;
+婿 < muko\ ;
+物 < mono\ ;
+牛 < ushi\ ;
+評 < hyou\ ;
+婆 < baba\ ;
+訳 < wake\ ;
+爆 < baku\ ;
+姫 < hime\ ;
+妙 < myou\ ;
+熊 < kuma\ ;
+煤 < susu\ ;
+焼 < yaki\ ;
+夫 < otto\ ;
+夢 < yume\ ;
+夜 < yoru\ ;
+外 < hoka\ ;
+裾 < suso\ ;
+壱 < ichi\ ;
+壓 < atsu\ ;
+壁 < kabe\ ;
+為 < tame\ ;
+炭 < sumi\ ;
+袖 < sode\ ;
+墓 < haka\ ;
+塩 < shio\ ;
+塞 < soku\ ;
+術 < sube\ ;
+行 < gyou\ ;
+瀝 < reki\ ;
+堀 < hori\ ;
+濁 < daku\ ;
+激 < geki\ ;
+垣 < kaki\ ;
+型 < kata\ ;
+蝉 < semi\ ;
+坂 < saka\ ;
+鼻 < hana\ ;
+園 < sono\ ;
+国 < kuni\ ;
+黴 < kabi\ ;
+黙 < moku\ ;
+黒 < kuro\ ;
+黍 < kibi\ ;
+蛇 < hebi\ ;
+溺 < deki\ ;
+麦 < mugi\ ;
+蚤 < nomi\ ;
+溢 < itsu\ ;
+溝 < mizo\ ;
+虎 < tora\ ;
+鷹 < taka\ ;
+藤 < fuji\ ;
+藁 < wara\ ;
+喉 < nodo\ ;
+浴 < yoku\ ;
+浜 < hama\ ;
+唯 < tada\ ;
+洞 < hora\ ;
+洛 < raku\ ;
+唖 < oshi\ ;
+蓮 < hasu\ ;
+鳩 < hato\ ;
+鳥 < tori\ ;
+泥 < doro\ ;
+波 < nami\ ;
+蓋 < futa\ ;
+沼 < numa\ ;
+蒻 < jaku\ ;
+蒲 < gama\ ;
+沢 < sawa\ ;
+鱈 < tara\ ;
+落 < ochi\ ;
+水 < mizu\ ;
+民 < tami\ ;
+右 < migi\ ;
+古 < furu\ ;
+母 < haha\ ;
+菊 < kiku\ ;
+友 < tomo\ ;
+又 < mata\ ;
+殿 < dono\ ;
+殻 < kara\ ;
+莢 < saya\ ;
+原 < hara\ ;
+草 < kusa\ ;
+升 < masu\ ;
+鬱 < utsu\ ;
+鬚 < hige\ ;
+匙 < saji\ ;
+北 < hoku\ ;
+茎 < kuki\ ;
+茅 < kaya\ ;
+匂 < niou\ ;
+髷 < mage\ ;
+髪 < kami\ ;
+苔 < koke\ ;
+骨 < hone\ ;
+助 < suke\ ;
+割 < wari\ ;
+機 < hata\ ;
+削 < saku\ ;
+船 < fune\ ;
+刺 < toge\ ;
+横 < yoko\ ;
+刈 < kari\ ;
+樅 < momi\ ;
+駒 < koma\ ;
+臍 < heso\ ;
+冬 < fuyu\ ;
+膝 < hiza\ ;
+膜 < maku\ ;
+首 < kubi\ ;
+円 < maru\ ;
+内 < uchi\ ;
+共 < domo\ ;
+業 < waza\ ;
+六 < roku\ ;
+入 < nyuu\ ;
+元 < moto\ ;
+儘 < mama\ ;
+脇 < waki\ ;
+脂 < yani\ ;
+胸 < mune\ ;
+棚 < tana\ ;
+肝 < kimo\ ;
+肘 < hiji\ ;
+傘 < kasa\ ;
+肌 < hada\ ;
+肉 < niku\ ;
+梃 < teko\ ;
+偽 < nise\ ;
+桐 < kiri\ ;
+桃 < momo\ ;
+桁 < keta\ ;
+耳 < mimi\ ;
+頬 < hoho\ ;
+栗 < kuri\ ;
+頃 < goro\ ;
+柚 < yuzu\ ;
+価 < atai\ ;
+杖 < tsue\ ;
+村 < mura\ ;
+杏 < anzu\ ;
+杉 < sugi\ ;
+伽 < togi\ ;
+札 < fuda\ ;
+雲 < kumo\ ;
+仲 < naka\ ;
+雪 < yuki\ ;
+雌 < mesu\ ;
+人 < hito\ ;
+隙 < suki\ ;
+暇 < hima\ ;
+之 < kore\ ;
+時 < toki\ ;
+昼 < hiru\ ;
+縦 < tate\ ;
+春 < haru\ ;
+丈 < dake\ ;
+縄 < nawa\ ;
+闇 < yami\ ;
+旅 < tabi\ ;
+綿 < wata\ ;
+絹 < kinu\ ;
+組 < kumi\ ;
+紐 < himo\ ;
+紅 < beni\ ;
+粥 < kayu\ ;
+粉 < kona\ ;
+米 < kome\ ;
+籠 < kago\ ;
+鐘 < kane\ ;
+揺 < yuri\ ;
+描 < byou\ ;
+箱 < hako\ ;
+管 < kuda\ ;
+鍵 < kagi\ ;
+鍋 < nabe\ ;
+筋 < suji\ ;
+等 < nado\ ;
+筈 < hazu\ ;
+筆 < fude\ ;
+笹 < sasa\ ;
+指 < yubi\ ;
+竹 < take\ ;
+窓 < mado\ ;
+銑 < zuku\ ;
+空 < sora\ ;
+扇 < ougi\ ;
+房 < fusa\ ;
+鈴 < suzu\ ;
+種 < tane\ ;
+我 < ware\ ;
+稍 < yaya\ ;
+程 < hodo\ ;
+針 < hari\ ;
+釜 < kama\ ;
+釘 < kugi\ ;
+禿 < hage\ ;
+憩 < ikoi\ ;
+酒 < sake\ ;
+態 < zama\ ;
+惑 < waku\ ;
+悪 < waru\ ;
+碧 < heki\ ;
+恥 < haji\ ;
+通 < tsuu\ ;
+砂 < suna\ ;
+応援 < ouen\ ;
+古器 < koki\ ;
+凍雨 < touu\ ;
+徒歩 < toho\ ;
+可否 < kahi\ ;
+徐歩 < joho\ ;
+庇護 < higo\ ;
+野営 < yaei\ ;
+法会 < houe\ ;
+同位 < doui\ ;
+危懼 < kigu\ ;
+句句 < kuku\ ;
+口受 < kuju\ ;
+治具 < jigu\ ;
+冷雨 < reiu\ ;
+当為 < toui\ ;
+右党 < utou\ ;
+遺精 < isei\ ;
+野卑 < yahi\ ;
+右傾 < ukei\ ;
+医書 < isho\ ;
+違背 < ihai\ ;
+怨嗟 < ensa\ ;
+鸚哥 < inko\ ;
+破毀 < haki\ ;
+反吐 < hedo\ ;
+反古 < hogo\ ;
+古儀 < kogi\ ;
+印度 < indo\ ;
+遺稿 < ikou\ ;
+相違 < soui\ ;
+座臥 < zaga\ ;
+帰途 < kito\ ;
+円顱 < enro\ ;
+磁場 < jiba\ ;
+古事 < koji\ ;
+永寿 < eiju\ ;
+往時 < ouji\ ;
+磁土 < jido\ ;
+鴉片 < ahen\ ;
+印字 < inji\ ;
+違算 < isan\ ;
+叙事 < joji\ ;
+磁器 < jiki\ ;
+微微 < bibi\ ;
+帰路 < kiro\ ;
+御意 < gyoi\ ;
+砂洲 < sasu\ ;
+午後 < gogo\ ;
+毀棄 < kiki\ ;
+遠祖 < enso\ ;
+後手 < gote\ ;
+干葉 < hiba\ ;
+引火 < inka\ ;
+御影 < goei\ ;
+樹陰 < juin\ ;
+英音 < eion\ ;
+汚名 < omei\ ;
+磁区 < jiku\ ;
+邪淫 < jain\ ;
+迂言 < ugen\ ;
+磁化 < jika\ ;
+医師 < ishi\ ;
+彼我 < higa\ ;
+危坐 < kiza\ ;
+機運 < kiun\ ;
+助演 < joen\ ;
+邪気 < jaki\ ;
+弥次 < yaji\ ;
+往往 < ouou\ ;
+刀自 < toji\ ;
+御子 < miko\ ;
+医官 < ikan\ ;
+加温 < kaon\ ;
+過疎 < kaso\ ;
+応募 < oubo\ ;
+遺漏 < irou\ ;
+後家 < goke\ ;
+医大 < idai\ ;
+殴打 < ouda\ ;
+歩武 < hobu\ ;
+違犯 < ihan\ ;
+円貨 < enka\ ;
+気味 < gimi\ ;
+気合 < kiai\ ;
+布衍 < fuen\ ;
+魔魅 < mami\ ;
+後場 < goba\ ;
+破家 < baka\ ;
+気化 < kika\ ;
+征夷 < seii\ ;
+水位 < suii\ ;
+円規 < enki\ ;
+盈虧 < eiki\ ;
+御名 < mina\ ;
+部屋 < heya\ ;
+英貨 < eika\ ;
+過渡 < kato\ ;
+違法 < ihou\ ;
+殷富 < inpu\ ;
+茣蓙 < goza\ ;
+英語 < eigo\ ;
+運河 < unga\ ;
+知恵 < chie\ ;
+運気 < unki\ ;
+輸贏 < yuei\ ;
+勢子 < seko\ ;
+包囲 < houi\ ;
+往古 < ouko\ ;
+加持 < kaji\ ;
+弧度 < kodo\ ;
+都営 < toei\ ;
+比喩 < hiyu\ ;
+遺文 < ibun\ ;
+逢瀬 < ouse\ ;
+出目 < deme\ ;
+武技 < bugi\ ;
+座洲 < zasu\ ;
+御代 < miyo\ ;
+医会 < ikai\ ;
+得体 < etai\ ;
+影印 < eiin\ ;
+円舞 < enbu\ ;
+鵜匠 < ujou\ ;
+母印 < boin\ ;
+逸機 < ikki\ ;
+部員 < buin\ ;
+皮膚 < hifu\ ;
+刷毛 < hake\ ;
+武庫 < buko\ ;
+機縁 < kien\ ;
+砂土 < sado\ ;
+遺恨 < ikon\ ;
+花譜 < kafu\ ;
+比価 < hika\ ;
+武家 < buke\ ;
+横臥 < ouga\ ;
+鬱金 < ukon\ ;
+比丘 < biku\ ;
+都下 < toka\ ;
+矢場 < yaba\ ;
+違憲 < iken\ ;
+延寿 < enju\ ;
+百舌 < mozu\ ;
+武夫 < bufu\ ;
+砂利 < jari\ ;
+部下 < buka\ ;
+瞽女 < goze\ ;
+出歯 < deba\ ;
+過度 < kado\ ;
+武器 < buki\ ;
+運座 < unza\ ;
+次序 < jijo\ ;
+模糊 < moko\ ;
+花芽 < kaga\ ;
+平易 < heii\ ;
+歩合 < buai\ ;
+疎音 < soin\ ;
+樹皮 < juhi\ ;
+府庫 < fuko\ ;
+遺品 < ihin\ ;
+疑雲 < giun\ ;
+遺命 < imei\ ;
+此処 < koko\ ;
+武具 < bugu\ ;
+几案 < kian\ ;
+武備 < bubi\ ;
+追手 < otte\ ;
+異風 < ifuu\ ;
+異類 < irui\ ;
+利己 < riko\ ;
+武事 < buji\ ;
+荊棘 < bara\ ;
+魔羅 < mara\ ;
+遺体 < itai\ ;
+遺伝 < iden\ ;
+過去 < kako\ ;
+欧化 < ouka\ ;
+疎遠 < soen\ ;
+疑辞 < giji\ ;
+左派 < saha\ ;
+艶美 < enbi\ ;
+驢馬 < roba\ ;
+岐阜 < gifu\ ;
+座員 < zain\ ;
+永々 < eiei\ ;
+真帆 < maho\ ;
+相手 < aite\ ;
+度合 < doai\ ;
+違例 < irei\ ;
+利器 < riki\ ;
+色絵 < iroe\ ;
+廃位 < haii\ ;
+布施 < fuse\ ;
+自費 < jihi\ ;
+自負 < jifu\ ;
+入江 < irie\ ;
+騾馬 < raba\ ;
+花王 < kaou\ ;
+棋院 < kiin\ ;
+帷幄 < iaku\ ;
+英武 < eibu\ ;
+異趣 < ishu\ ;
+具案 < guan\ ;
+自衛 < jiei\ ;
+異論 < iron\ ;
+相子 < aiko\ ;
+府下 < fuka\ ;
+魔王 < maou\ ;
+利他 < rita\ ;
+騎馬 < kiba\ ;
+機影 < kiei\ ;
+発条 < bane\ ;
+内意 < naii\ ;
+機序 < kijo\ ;
+帝威 < teii\ ;
+迂回 < ukai\ ;
+退位 < taii\ ;
+梅雨 < baiu\ ;
+模擬 < mogi\ ;
+円弧 < enko\ ;
+痲痺 < mahi\ ;
+目地 < meji\ ;
+円座 < enza\ ;
+花樹 < kaju\ ;
+画譜 < gafu\ ;
+機宜 < kigi\ ;
+尾部 < bibu\ ;
+盲唖 < moua\ ;
+依願 < igan\ ;
+依頼 < irai\ ;
+疑義 < gigi\ ;
+真似 < mane\ ;
+棋譜 < kifu\ ;
+児戯 < jigi\ ;
+真上 < maue\ ;
+希土 < kido\ ;
+臙脂 < enji\ ;
+偃臥 < enga\ ;
+胡麻 < goma\ ;
+栗鼠 < risu\ ;
+寺院 < jiin\ ;
+目処 < medo\ ;
+駄馬 < daba\ ;
+公家 < kuge\ ;
+鬱気 < ukki\ ;
+軽易 < keii\ ;
+英字 < eiji\ ;
+俚語 < rigo\ ;
+屠蘇 < toso\ ;
+駆除 < kujo\ ;
+寝間 < nema\ ;
+目上 < meue\ ;
+輪差 < wasa\ ;
+余韻 < yoin\ ;
+異端 < itan\ ;
+工合 < guai\ ;
+花序 < kajo\ ;
+山羊 < yagi\ ;
+苦土 < kudo\ ;
+寿賀 < juga\ ;
+自画 < jiga\ ;
+石斑魚 < ugui\ ;
+英和 < eiwa\ ;
+画素 < gaso\ ;
+梨花 < rika\ ;
+由縁 < yuen\ ;
+魚座 < uoza\ ;
+具備 < gubi\ ;
+越訴 < esso\ ;
+儒家 < juka\ ;
+起訴 < kiso\ ;
+俚耳 < riji\ ;
+家運 < kaun\ ;
+異状 < ijou\ ;
+楚楚 < soso\ ;
+饑餓 < kiga\ ;
+皇位 < koui\ ;
+家路 < ieji\ ;
+魔女 < majo\ ;
+饂飩 < udon\ ;
+字音 < jion\ ;
+寄語 < kigo\ ;
+耳鼻 < jibi\ ;
+餓鬼 < gaki\ ;
+胤裔 < inei\ ;
+儲位 < choi\ ;
+自棄 < yake\ ;
+理非 < rihi\ ;
+優位 < yuui\ ;
+栄誉 < eiyo\ ;
+輔佐 < hosa\ ;
+伊達 < date\ ;
+異様 < iyou\ ;
+余蘊 < youn\ ;
+家蚊 < ieka\ ;
+尼甫 < jiho\ ;
+偉材 < izai\ ;
+異本 < ihon\ ;
+植木 < ueki\ ;
+胼胝 < tako\ ;
+航宇 < kouu\ ;
+疑懼 < giku\ ;
+異数 < isuu\ ;
+疑惧 < gigu\ ;
+魁偉 < kaii\ ;
+保無 < homu\ ;
+自愛 < jiai\ ;
+栄華 < eiga\ ;
+偉挙 < ikyo\ ;
+偉才 < isai\ ;
+理路 < riro\ ;
+賦詠 < fuei\ ;
+畏敬 < ikei\ ;
+保温 < hoon\ ;
+画架 < gaka\ ;
+二院 < niin\ ;
+自己 < jiko\ ;
+豪雨 < gouu\ ;
+付議 < fugi\ ;
+保母 < hobo\ ;
+安臥 < anga\ ;
+亜鈴 < arei\ ;
+付記 < fuki\ ;
+小火 < boya\ ;
+駄目 < dame\ ;
+屋根 < yane\ ;
+依然 < izen\ ;
+異存 < izon\ ;
+二部 < nibu\ ;
+風雨 < fuuu\ ;
+楕円 < daen\ ;
+偽印 < giin\ ;
+異変 < ihen\ ;
+留守 < rusu\ ;
+位相 < isou\ ;
+一鼓 < ikko\ ;
+用意 < youi\ ;
+耳語 < jigo\ ;
+異域 < iiki\ ;
+保持 < hoji\ ;
+興亜 < koua\ ;
+瓦斯 < gasu\ ;
+自利 < jiri\ ;
+余煙 < yoen\ ;
+下駄 < geta\ ;
+下馬 < geba\ ;
+假名 < kana\ ;
+異同 < idou\ ;
+耶蘇 < yaso\ ;
+瑠璃 < ruri\ ;
+偉勲 < ikun\ ;
+久遠 < kuon\ ;
+自余 < jiyo\ ;
+不離 < furi\ ;
+自他 < jita\ ;
+美音 < bion\ ;
+子等 < kora\ ;
+下院 < kain\ ;
+不間 < buma\ ;
+画因 < gain\ ;
+余波 < yoha\ ;
+畏友 < iyuu\ ;
+小手 < kote\ ;
+趣意 < shui\ ;
+偉人 < ijin\ ;
+保安 < hoan\ ;
+余殃 < yoou\ ;
+路地 < roji\ ;
+琵琶 < biwa\ ;
+暮雲 < boun\ ;
+胃液 < ieki\ ;
+亜聖 < asei\ ;
+下野 < geya\ ;
+上野 < ueno\ ;
+肌理 < kime\ ;
+馴染 < naji\ ;
+亜群 < agun\ ;
+世辞 < seji\ ;
+不運 < fuun\ ;
+余栄 < yoei\ ;
+梨園 < rien\ ;
+供御 < gugo\ ;
+路加 < ruka\ ;
+亜綱 < akou\ ;
+余暇 < yoka\ ;
+一過 < ikka\ ;
+小屋 < koya\ ;
+一途 < itto\ ;
+美辞 < biji\ ;
+安気 < anki\ ;
+栄枯 < eiko\ ;
+寓意 < guui\ ;
+世話 < sewa\ ;
+亜種 < ashu\ ;
+晴雨 < seiu\ ;
+小夜 < sayo\ ;
+飛簷 < hien\ ;
+音頭 < ondo\ ;
+余技 < yogi\ ;
+不語 < fugo\ ;
+余所 < yoso\ ;
+王者 < ouja\ ;
+暗部 < anbu\ ;
+供奉 < gubu\ ;
+害意 < gaii\ ;
+予示 < yoji\ ;
+安易 < an''i\ ;
+下衆 < gesu\ ;
+上衣 < joui\ ;
+字母 < jibo\ ;
+背戸 < sedo\ ;
+寄席 < yose\ ;
+佳宴 < kaen\ ;
+犠飛 < gihi\ ;
+不虞 < fugu\ ;
+腐儒 < fuju\ ;
+罵詈 < bari\ ;
+他派 < taha\ ;
+安打 < anda\ ;
+暗譜 < anpu\ ;
+是非 < zehi\ ;
+家家 < ieie\ ;
+枸杞 < kuko\ ;
+猿臂 < enpi\ ;
+云爾 < unji\ ;
+亜炭 < atan\ ;
+以東 < itou\ ;
+安座 < anza\ ;
+旗鼓 < kiko\ ;
+鞍馬 < anba\ ;
+一臂 < ippi\ ;
+木瓜 < boke\ ;
+肩巾 < hire\ ;
+時運 < jiun\ ;
+韻語 < ingo\ ;
+音譜 < onpu\ ;
+上絵 < uwae\ ;
+孤影 < koei\ ;
+案価 < anka\ ;
+猛者 < mosa\ ;
+羽目 < hame\ ;
+護謨 < gomu\ ;
+二次 < niji\ ;
+如露 < joro\ ;
+不穏 < fuon\ ;
+安堵 < ando\ ;
+馬具 < bagu\ ;
+他愛 < taai\ ;
+家出 < iede\ ;
+安固 < anko\ ;
+家具 < kagu\ ;
+不磨 < fuma\ ;
+日間 < hiai\ ;
+伎女 < gijo\ ;
+寄与 < kiyo\ ;
+青青 < aoao\ ;
+二期 < niki\ ;
+安否 < anpi\ ;
+胡乱 < uron\ ;
+予期 < yoki\ ;
+義理 < giri\ ;
+譏誹 < kihi\ ;
+下痢 < geri\ ;
+賭場 < toba\ ;
+賀宴 < gaen\ ;
+宇内 < udai\ ;
+以外 < igai\ ;
+夢魔 < muma\ ;
+来意 < raii\ ;
+暗示 < anji\ ;
+安保 < anpo\ ;
+非運 < hiun\ ;
+聾唖 < roua\ ;
+羽毛 < umou\ ;
+音素 < onso\ ;
+贈位 < zoui\ ;
+付図 < fuzu\ ;
+予後 < yogo\ ;
+二度 < nido\ ;
+義気 < giki\ ;
+義母 < gibo\ ;
+語音 < goon\ ;
+以南 < inan\ ;
+夜陰 < yain\ ;
+付和 < fuwa\ ;
+王手 < oute\ ;
+羽根 < hane\ ;
+非議 < higi\ ;
+以内 < inai\ ;
+一派 < ippa\ ;
+三毛 < mike\ ;
+雷雨 < raiu\ ;
+雑魚 < jako\ ;
+護符 < gofu\ ;
+雲霧 < unmu\ ;
+賦与 < fuyo\ ;
+大野 < oono\ ;
+一歩 < ippo\ ;
+斎部 < inbe\ ;
+代位 < daii\ ;
+王座 < ouza\ ;
+代代 < yoyo\ ;
+他事 < taji\ ;
+狒狒 < hihi\ ;
+狐狸 < kori\ ;
+露語 < rogo\ ;
+大路 < ooji\ ;
+王家 < ouke\ ;
+義援 < gien\ ;
+王妃 < ouhi\ ;
+王女 < oujo\ ;
+青葉 < aoba\ ;
+青菜 < aona\ ;
+互助 < gojo\ ;
+五分 < gobu\ ;
+事務 < jimu\ ;
+下手 < heta\ ;
+下戸 < geko\ ;
+東亞 < toua\ ;
+木地 < kiji\ ;
+王土 < oudo\ ;
+美技 < bigi\ ;
+誤記 < goki\ ;
+音波 < onpa\ ;
+韻母 < inbo\ ;
+予備 < yobi\ ;
+二価 < nika\ ;
+施肥 < sehi\ ;
+二佐 < nisa\ ;
+早稲 < wase\ ;
+煙霧 < enmu\ ;
+煙雨 < en''u\ ;
+風呂 < furo\ ;
+乾位 < keni\ ;
+擬音 < gion\ ;
+縁起 < engi\ ;
+九分 < kubu\ ;
+不安 < fuan\ ;
+父祖 < fuso\ ;
+一家 < ikke\ ;
+陰阜 < infu\ ;
+暗愚 < angu\ ;
+与太 < yota\ ;
+下女 < gejo\ ;
+無駄 < muda\ ;
+縁語 < engo\ ;
+雅語 < gago\ ;
+獣医 < juui\ ;
+美姫 < biki\ ;
+婦女 < fujo\ ;
+風位 < fuui\ ;
+美女 < bijo\ ;
+青砥 < aoto\ ;
+無音 < muon\ ;
+議案 < gian\ ;
+不図 < futo\ ;
+隘路 < airo\ ;
+猛威 < moui\ ;
+多義 < tagi\ ;
+暴威 < boui\ ;
+語義 < gogi\ ;
+陰部 < inbu\ ;
+女王 < joou\ ;
+非理 < hiri\ ;
+雲脂 < fuke\ ;
+義務 < gimu\ ;
+離苦 < riku\ ;
+青田 < aota\ ;
+不味 < fumi\ ;
+三味 < sami\ ;
+下句 < geku\ ;
+縷縷 < ruru\ ;
+壁蝨 < dani\ ;
+美味 < bimi\ ;
+下卑 < gebi\ ;
+護持 < goji\ ;
+一句 < ikku\ ;
+無鉛 < muen\ ;
+美化 < bika\ ;
+不備 < fubi\ ;
+犠打 < gida\ ;
+外科 < geka\ ;
+大目 < oome\ ;
+縁者 < enja\ ;
+日歩 < hibu\ ;
+音字 < onji\ ;
+院議 < ingi\ ;
+一佐 < issa\ ;
+父母 < fubo\ ;
+非毀 < hiki\ ;
+時差 < jisa\ ;
+細雨 < saiu\ ;
+霊異 < reii\ ;
+基音 < kion\ ;
+緯線 < isen\ ;
+隠者 < inja\ ;
+閻魔 < enma\ ;
+日日 < hibi\ ;
+数珠 < juzu\ ;
+陰萎 < in''i\ ;
+音吐 < onto\ ;
+音叉 < onsa\ ;
+青木 < aoki\ ;
+威厳 < igen\ ;
+謝意 < shai\ ;
+綺羅 < kira\ ;
+基部 < kibu\ ;
+如意 < nyoi\ ;
+好悪 < kouo\ ;
+音価 < onka\ ;
+既往 < kiou\ ;
+奥意 < okui\ ;
+墓碑 < bohi\ ;
+雨水 < usui\ ;
+夜暗 < yaan\ ;
+時事 < jiji\ ;
+委任 < inin\ ;
+奴婢 < nuhi\ ;
+大手 < oode\ ;
+露座 < roza\ ;
+陰画 < inga\ ;
+壊死 < eshi\ ;
+無碍 < muge\ ;
+詐欺 < sagi\ ;
+青地 < aoji\ ;
+青図 < aozu\ ;
+粗野 < soya\ ;
+大屋 < ooya\ ;
+誤差 < gosa\ ;
+無理 < muri\ ;
+夢寐 < mubi\ ;
+多岐 < taki\ ;
+煙波 < enpa\ ;
+旧事 < kuji\ ;
+語尾 < gobi\ ;
+露営 < roei\ ;
+陰気 < inki\ ;
+多多 < tata\ ;
+土間 < doma\ ;
+措辞 < soji\ ;
+無派 < muha\ ;
+濾過 < roka\ ;
+齱 < seku\ ;
+雨天 < uten\ ;
+雨声 < usei\ ;
+鼏 < beki\ ;
+無比 < muhi\ ;
+見目 < mime\ ;
+麿 < maro\ ;
+雨域 < uiki\ ;
+夜半 < yowa\ ;
+鶪 < keki\ ;
+無機 < muki\ ;
+鴨 < kamo\ ;
+隠微 < inbi\ ;
+補記 < hoki\ ;
+随意 < zuii\ ;
+鱧 < hamo\ ;
+鱚 < kisu\ ;
+鰤 < buri\ ;
+鰙 < haya\ ;
+鰐 < wani\ ;
+夜具 < yagu\ ;
+鯖 < saba\ ;
+鯔 < bora\ ;
+鯊 < haze\ ;
+鮴 < gori\ ;
+鮲 < mate\ ;
+鮫 < same\ ;
+鮒 < funa\ ;
+魹 < todo\ ;
+骭 < hagi\ ;
+骉 < hyuu\ ;
+粗菓 < soka\ ;
+火箭 < hiya\ ;
+絵本 < ehon\ ;
+韮 < nira\ ;
+鞠 < mari\ ;
+土語 < dogo\ ;
+靄 < moya\ ;
+地衣 < chii\ ;
+雇員 < koin\ ;
+雅味 < gami\ ;
+簿記 < boki\ ;
+閖 < yuru\ ;
+無手 < mute\ ;
+無我 < muga\ ;
+鑓 < yari\ ;
+鑃 < tyou\ ;
+阿房 < ahou\ ;
+鍬 < kuwa\ ;
+補肥 < hohi\ ;
+鉾 < hoko\ ;
+規模 < kibo\ ;
+袈裟 < kesa\ ;
+鄙 < hina\ ;
+塗布 < tofu\ ;
+逩 < kamu\ ;
+逧 < sako\ ;
+迍 < chun\ ;
+轌 < sori\ ;
+除夜 < joya\ ;
+火炉 < karo\ ;
+賭 < kake\ ;
+押韻 < ouin\ ;
+擬古 < giko\ ;
+豚 < buta\ ;
+無垢 < muku\ ;
+無地 < muji\ ;
+襞 < hida\ ;
+素手 < sude\ ;
+褱 < kaie\ ;
+裛 < youu\ ;
+袰 < horo\ ;
+蟹 < kani\ ;
+無味 < mumi\ ;
+蚋 < buyo\ ;
+虙 < huku\ ;
+藪 < yabu\ ;
+蕪 < kabu\ ;
+蔇 < kike\ ;
+蓼 < tade\ ;
+蓑 < mino\ ;
+葱 < negi\ ;
+院主 < inju\ ;
+堂宇 < douu\ ;
+阿兄 < akei\ ;
+苆 < susa\ ;
+芹 < seri\ ;
+無価 < muka\ ;
+芒 < nogi\ ;
+場合 < baai\ ;
+絵像 < ezou\ ;
+無二 < muni\ ;
+膃 < otsu\ ;
+脛 < sune\ ;
+衣紋 < emon\ ;
+納屋 < naya\ ;
+見場 < miba\ ;
+笑顔 < egao\ ;
+罠 < wana\ ;
+揶揄 < yayu\ ;
+綛 < kase\ ;
+粗朶 < soda\ ;
+糠 < nuka\ ;
+糊 < nori\ ;
+手間 < tema\ ;
+図画 < zuga\ ;
+粂 < kume\ ;
+簗 < yana\ ;
+箍 < taga\ ;
+箆 < hera\ ;
+笊 < zaru\ ;
+火屋 < hoya\ ;
+瀬戸 < seto\ ;
+螻蛄 < kera\ ;
+瘤 < kobu\ ;
+間夫 < mabu\ ;
+甕 < mika\ ;
+粗布 < sofu\ ;
+瑕 < kizu\ ;
+獶 < nyou\ ;
+蛙黽 < abou\ ;
+掏摸 < suri\ ;
+燸 < jiyu\ ;
+裸婦 < rafu\ ;
+図案 < zuan\ ;
+土手 < dote\ ;
+滓 < kasu\ ;
+温雅 < onga\ ;
+援助 < enjo\ ;
+齟齬 < sogo\ ;
+橳 < nude\ ;
+橲 < zusa\ ;
+四方 < yomo\ ;
+樽 < taru\ ;
+樺 < kaba\ ;
+楅 < hyku\ ;
+椨 < tafu\ ;
+椥 < nagi\ ;
+栂 < toga\ ;
+杣 < soma\ ;
+国府 < kofu\ ;
+捻子 < neji\ ;
+手羽 < teba\ ;
+淫雨 < in''u\ ;
+補助 < hojo\ ;
+湯葉 < yuba\ ;
+土器 < doki\ ;
+按摩 < anma\ ;
+扨 < sate\ ;
+授受 < juju\ ;
+打破 < daha\ ;
+拿捕 < daho\ ;
+土匪 < dohi\ ;
+彶 < kihu\ ;
+弶 < gyau\ ;
+弗 < doru\ ;
+弓 < yumi\ ;
+廧 < shau\ ;
+帤 < geyo\ ;
+帢 < kahu\ ;
+巤 < rehu\ ;
+嶯 < shiu\ ;
+嵀 < chiu\ ;
+在位 < zaii\ ;
+崨 < sehu\ ;
+峅 < kura\ ;
+浮塵子 < unka\ ;
+屶 < nata\ ;
+愛馬 < aiba\ ;
+宨 < tewa\ ;
+授与 < juyo\ ;
+四囲 < shii\ ;
+固化 < koka\ ;
+愛飲 < aiin\ ;
+嬼 < riwa\ ;
+哀音 < aion\ ;
+嬶 < kaka\ ;
+媃 < jyuu\ ;
+回向 < ekou\ ;
+戯画 < giga\ ;
+塾 < juku\ ;
+埖 < gomi\ ;
+慰謝 < isha\ ;
+圾 < gyuu\ ;
+嘸 < sazo\ ;
+嘁 < sahu\ ;
+嗽 < ugai\ ;
+喢 < tehu\ ;
+啦 < rahu\ ;
+和音 < waon\ ;
+咶 < kuui\ ;
+押忍 < ossu\ ;
+移転 < iten\ ;
+銅鑼 < dora\ ;
+劋 < syou\ ;
+凸 < deko\ ;
+愛輝 < aiki\ ;
+湯煮 < yuni\ ;
+悪鬼 < akki\ ;
+俇 < kyau\ ;
+侠 < kyan\ ;
+佗 < wabi\ ;
+亀 < kame\ ;
+也 < nari\ ;
+愛護 < aigo\ ;
+哀話 < aiwa\ ;
+哀訴 < aiso\ ;
+呉須 < gosu\ ;
+秘話 < hiwa\ ;
+湯気 < yuge\ ;
+黄身 < kimi\ ;
+和議 < wagi\ ;
+和語 < wago\ ;
+吐露 < toro\ ;
+恩顧 < onko\ ;
+恵雨 < keiu\ ;
+海芋 < kaiu\ ;
+浄衣 < joue\ ;
+蕎麦 < soba\ ;
+鸚鵡 < oumu\ ;
+合間 < aima\ ;
+右面 < umen\ ;
+鼻祖 < biso\ ;
+悪貨 < akka\ ;
+渡欧 < toou\ ;
+古音 < koon\ ;
+嘔吐 < outo\ ;
+和英 < waei\ ;
+古雅 < koga\ ;
+滋味 < jimi\ ;
+唖然 < azen\ ;
+蘇芳 < suou\ ;
+藍褸 < boro\ ;
+悪衣 < akui\ ;
+湯屋 < yuya\ ;
+唾棄 < daki\ ;
+右辺 < uhen\ ;
+喜寿 < kiju\ ;
+湯女 < yuna\ ;
+厭離 < onri\ ;
+鼻炎 < bien\ ;
+野辺 < nobe\ ;
+恩誼 < ongi\ ;
+野路 < noji\ ;
+呪符 < jufu\ ;
+古語 < kogo\ ;
+営利 < eiri\ ;
+応需 < ouju\ ;
+我利 < gari\ ;
+移民 < imin\ ;
+喇嘛 < rama\ ;
+憎悪 < zouo\ ;
+右葉 < uyou\ ;
+哀歌 < aika\ ;
+受蘊 < juun\ ;
+御顔 < okao\ ;
+鹵簿 < robo\ ;
+十雨 < juuu\ ;
+右脳 < unou\ ;
+温和 < onwa\ ;
+永遠 < eien\ ;
+野良 < nora\ ;
+海松 < miru\ ;
+和歌 < waka\ ;
+汚行 < okou\ ;
+破風 < hafu\ ;
+愛撫 < aibu\ ;
+黄泉 < yomi\ ;
+応訴 < ouso\ ;
+哀慕 < aibo\ ;
+合着 < aigi\ ;
+御身 < onmi\ ;
+慰問 < imon\ ;
+区費 < kuhi\ ;
+呆気 < akke\ ;
+邪魔 < jama\ ;
+都鄙 < tohi\ ;
+破邪 < haja\ ;
+往路 < ouro\ ;
+邪飛 < jahi\ ;
+祖母 < sobo\ ;
+派手 < hade\ ;
+弥陀 < mida\ ;
+野猿 < yaen\ ;
+受理 < juri\ ;
+呼応 < koou\ ;
+秘奥 < hiou\ ;
+汚穢 < owai\ ;
+愚図 < guzu\ ;
+流布 < rufu\ ;
+母語 < bogo\ ;
+野火 < nobi\ ;
+和字 < waji\ ;
+合歓 < nemu\ ;
+御茶 < ocha\ ;
+麻布 < mafu\ ;
+悪感 < okan\ ;
+移住 < ijuu\ ;
+虚位 < kyoi\ ;
+恵方 < ehou\ ;
+愛児 < aiji\ ;
+沙汰 < sata\ ;
+武運 < buun\ ;
+御簾 < misu\ ;
+味噌 < miso\ ;
+右方 < uhou\ ;
+亜細亜 < ajia\ ;
+廈門 < amoi\ ;
+汚点 < oten\ ;
+毛羽 < keba\ ;
+野暮 < yabo\ ;
+合意 < goui\ ;
+御礼 < orei\ ;
+波布 < habu\ ;
+御碗 < owan\ ;
+遺贈 < izou\ ;
+汚泥 < odei\ ;
+石蓴 < aosa\ ;
+御盆 < obon\ ;
+汚水 < osui\ ;
+南無 < namu\ ;
+追風 < oite\ ;
+砒素 < hiso\ ;
+怪我 < kega\ ;
+右岸 < ugan\ ;
+汚染 < osen\ ;
+恩威 < on''i\ ;
+荷駄 < nida\ ;
+合図 < aizu\ ;
+遺著 < icho\ ;
+幾重 < ikue\ ;
+汚損 < oson\ ;
+吏員 < riin\ ;
+厭悪 < en''o\ ;
+去年 < kozo\ ;
+名医 < meii\ ;
+吏務 < rimu\ ;
+迷 < mei\ ;
+念 < nen\ ;
+短 < tan\ ;
+快 < kai\ ;
+迥 < kei\ ;
+知 < chi\ ;
+矜 < kin\ ;
+忙 < bou\ ;
+返 < hen\ ;
+迎 < gei\ ;
+忍 < nin\ ;
+迅 < jin\ ;
+辿 < ten\ ;
+瞻 < sen\ ;
+農 < nou\ ;
+辯 < ben\ ;
+循 < jun\ ;
+瞠 < dou\ ;
+從 < juu\ ;
+待 < tai\ ;
+彩 < sai\ ;
+睡 < sui\ ;
+轟 < gou\ ;
+当 < tou\ ;
+彈 < dan\ ;
+眩 < gen\ ;
+眠 < min\ ;
+弟 < tei\ ;
+弛 < shi\ ;
+弘 < kou\ ;
+県 < ken\ ;
+看 < kan\ ;
+弄 < rou\ ;
+省 < sei\ ;
+相 < sou\ ;
+廢 < hai\ ;
+軍 < gun\ ;
+廉 < ren\ ;
+盆 < bon\ ;
+庸 < you\ ;
+皰 < hou\ ;
+躇 < cho\ ;
+幾 < iku\ ;
+幽 < yuu\ ;
+癌 < gan\ ;
+跡 < ato\ ;
+跟 < kon\ ;
+距 < kyo\ ;
+疊 < jou\ ;
+番 < ban\ ;
+畦 < aze\ ;
+畔 < han\ ;
+産 < san\ ;
+贅 < zei\ ;
+瓶 < bin\ ;
+賣 < bai\ ;
+瓜 < uri\ ;
+岩 < iwa\ ;
+財 < zai\ ;
+象 < zou\ ;
+屏 < hei\ ;
+尚 < nao\ ;
+射 < sha\ ;
+封 < fuu\ ;
+寸 < sun\ ;
+宵 < yoi\ ;
+害 < gai\ ;
+宛 < ate\ ;
+存 < son\ ;
+嬪 < hin\ ;
+諸 < sho\ ;
+論 < ron\ ;
+嫌 < iya\ ;
+犬 < inu\ ;
+誄 < rui\ ;
+牡 < osu\ ;
+牌 < pai\ ;
+爛 < ran\ ;
+燻 < kun\ ;
+姉 < ane\ ;
+親 < oya\ ;
+奮 < fun\ ;
+奥 < oku\ ;
+襟 < eri\ ;
+然 < zen\ ;
+声 < koe\ ;
+裏 < ura\ ;
+袂 < bei\ ;
+蟻 < ari\ ;
+濘 < nei\ ;
+埋 < mai\ ;
+垢 < aka\ ;
+蝿 < hae\ ;
+齡 < rei\ ;
+滿 < man\ ;
+蛛 < shu\ ;
+四 < yon\ ;
+麻 < asa\ ;
+湾 < wan\ ;
+虜 < ryo\ ;
+渦 < uzu\ ;
+嘘 < uso\ ;
+蘂 < zui\ ;
+淋 < rin\ ;
+液 < eki\ ;
+喰 < kuu\ ;
+海 < umi\ ;
+問 < mon\ ;
+泡 < awa\ ;
+蒙 < mou\ ;
+沖 < oki\ ;
+沌 < ton\ ;
+味 < aji\ ;
+池 < ike\ ;
+汗 < ase\ ;
+呑 < don\ ;
+氏 < uji\ ;
+台 < dai\ ;
+殘 < zan\ ;
+歌 < uta\ ;
+午 < uma\ ;
+十 < too\ ;
+鬼 < oni\ ;
+茶 < cha\ ;
+勤 < gon\ ;
+苗 < nae\ ;
+色 < iro\ ;
+前 < mae\ ;
+分 < bun\ ;
+臼 < usu\ ;
+馭 < gyo\ ;
+腕 < ude\ ;
+免 < men\ ;
+兄 < ani\ ;
+飴 < ame\ ;
+飜 < hon\ ;
+傳 < den\ ;
+梅 < ume\ ;
+桶 < oke\ ;
+偶 < guu\ ;
+顔 < kao\ ;
+顎 < ago\ ;
+頼 < rai\ ;
+俺 < ore\ ;
+枝 < eda\ ;
+板 < ita\ ;
+何 < nan\ ;
+隈 < wai\ ;
+織 < ori\ ;
+丘 < oka\ ;
+網 < ami\ ;
+長 < osa\ ;
+數 < suu\ ;
+故 < yue\ ;
+糸 < ito\ ;
+粗 < ara\ ;
+握 < aku\ ;
+笛 < fue\ ;
+竿 < sao\ ;
+稲 < ine\ ;
+或 < aru\ ;
+重 < omo\ ;
+秋 < aki\ ;
+禰 < dei\ ;
+息 < iki\ ;
+恋 < koi\ ;
+迂遠 < uen\ ;
+微意 < bii\ ;
+叙位 < joi\ ;
+迂路 < uro\ ;
+得手 < ete\ ;
+気宇 < kiu\ ;
+医家 < ika\ ;
+八重 < yae\ ;
+医員 < iin\ ;
+医務 < imu\ ;
+医事 < iji\ ;
+遺愛 < iai\ ;
+遺影 < iei\ ;
+部位 < bui\ ;
+遺孤 < iko\ ;
+異音 < ion\ ;
+希有 < keu\ ;
+迂愚 < ugu\ ;
+欧亜 < oua\ ;
+次位 < jii\ ;
+次亜 < jia\ ;
+眉宇 < biu\ ;
+異議 < igi\ ;
+居間 < ima\ ;
+帰依 < kie\ ;
+香魚 < ayu\ ;
+機位 < kii\ ;
+似非 < ese\ ;
+尾羽 < oha\ ;
+異父 < ifu\ ;
+会陰 < ein\ ;
+異母 < ibo\ ;
+亜麻 < ama\ ;
+以遠 < ien\ ;
+伊語 < igo\ ;
+亜鉛 < aen\ ;
+尾根 < one\ ;
+椅子 < isu\ ;
+依怙 < eko\ ;
+云為 < uni\ ;
+亜欧 < aou\ ;
+以往 < iou\ ;
+有無 < umu\ ;
+会厭 < een\ ;
+栄位 < eii\ ;
+井戸 < ido\ ;
+非違 < hii\ ;
+夜雨 < yau\ ;
+多雨 < tau\ ;
+二尉 < nii\ ;
+不意 < fui\ ;
+威武 < ibu\ ;
+有卦 < uke\ ;
+王位 < oui\ ;
+羅宇 < rao\ ;
+羽化 < uka\ ;
+絵馬 < ema\ ;
+壊疽 < eso\ ;
+雨気 < uki\ ;
+語意 < goi\ ;
+雨後 < ugo\ ;
+無為 < mui\ ;
+補遺 < hoi\ ;
+龒 < ryu\ ;
+黶 < aza\ ;
+阿比 < abi\ ;
+鳰 < nio\ ;
+鰕 < ebi\ ;
+鰓 < era\ ;
+餌 < esa\ ;
+鎊 < hau\ ;
+鍑 < huu\ ;
+錵 < nie\ ;
+鈖 < hun\ ;
+鄼 < sab\ ;
+鄞 < gin\ ;
+邾 < chu\ ;
+轑 < rau\ ;
+褜 < ena\ ;
+絵図 < ezu\ ;
+見得 < mie\ ;
+虻 < abu\ ;
+阿吽 < aun\ ;
+葵 < aoi\ ;
+荻 < ogi\ ;
+芋 < imo\ ;
+臑 < dau\ ;
+滋雨 < jiu\ ;
+稗 < hie\ ;
+瓴 < rii\ ;
+紆余 < uyo\ ;
+樋 < toi\ ;
+棰 < soi\ ;
+杭 < kui\ ;
+斧 < ono\ ;
+愰 < kau\ ;
+彯 < heu\ ;
+弨 < seu\ ;
+廇 < riu\ ;
+廅 < ahu\ ;
+庣 < teu\ ;
+嶆 < sau\ ;
+嵺 < reu\ ;
+嵶 < tao\ ;
+海髪 < ogo\ ;
+嬈 < deu\ ;
+嫹 < bau\ ;
+嫙 < seb\ ;
+意馬 < iba\ ;
+奡 < gau\ ;
+垚 < geu\ ;
+圦 < iri\ ;
+嚷 < jau\ ;
+図会 < zue\ ;
+嘫 < dam\ ;
+僠 < fan\ ;
+佂 < yai\ ;
+悪露 < oro\ ;
+蝦夷 < ezo\ ;
+穢多 < eta\ ;
+穢土 < edo\ ;
+慰安 < ian\ ;
+十重 < toe\ ;
+愚意 < gui\ ;
+右派 < uha\ ;
+意味 < imi\ ;
+萎靡 < ibi\ ;
+迦 < ka\ ;
+矢 < ya\ ;
+応 < ou\ ;
+忌 < ki\ ;
+辭 < ji\ ;
+微 < bi\ ;
+御 < go\ ;
+徒 < to\ ;
+徐 < jo\ ;
+眼 < me\ ;
+輪 < wa\ ;
+弥 < mi\ ;
+真 < ma\ ;
+引 < in\ ;
+弐 < ni\ ;
+延 < en\ ;
+庫 < ko\ ;
+座 < za\ ;
+度 < do\ ;
+府 < fu\ ;
+庇 < hi\ ;
+踰 < yu\ ;
+路 < ro\ ;
+差 < sa\ ;
+巣 < su\ ;
+痛 < ts\ ;
+疑 < gi\ ;
+疎 < so\ ;
+田 < ta\ ;
+甥 < oi\ ;
+豫 < yo\ ;
+履 < ri\ ;
+寝 < ne\ ;
+家 < ke\ ;
+訝 < ga\ ;
+營 < ei\ ;
+襦 < ju\ ;
+奈 < na\ ;
+無 < mu\ ;
+褞 < on\ ;
+褓 < ho\ ;
+裳 < mo\ ;
+墮 < da\ ;
+場 < ba\ ;
+瀬 < se\ ;
+螺 < ra\ ;
+図 < zu\ ;
+嗟 < aa\ ;
+藍 < ai\ ;
+鵡 < bu\ ;
+派 < ha\ ;
+莫 < bo\ ;
+苦 < ku\ ;
+出 < de\ ;
+具 < gu\ ;
+案 < an\ ;
+青 < ao\ ;
+云 < un\ ;
+乃 < no\ ;
+是 < ze\ ;
+手 < te\ ;
+惹 < ja\ ;
+伊井 < ii\ ;
+闞 < kn\ ;
+鈇 < hu\ ;
+讄 < ru\ ;
+曽 < zo\ ;
+搙 < nu\ ;
+庮 < iu\ ;
+嶴 < au\ ;
+岆 < eu\ ;
+屁 < he\ ;
+帷 < i\ ;
+尾 < o\ ;
+宇 < u\ ;
+江 < e\ ;
+亞 < a\ ;
+法学系大学院共通入学試験 > hougakukeidaigakuinkyoutsuunyuugakushiken\ ;
+朝鮮民主主義人民共和国 > chousenminshushugijinminkyouwakoku\ ;
+自動車損害賠償責任保険 > jidoushasongaibaishousekininhoken\ ;
+米国大学入学共通試験 > beikokudaigakunyuugakukyoutsuushiken\ ;
+日本労働組合総評議会 > nihonroudoukumiaisouhyougikai\ ;
+拘束名簿式比例代表制 > kousokumeibohireidaihyousei\ ;
+臨兵闘者皆陣裂在前 > rinpyoutoushakaijinretsuzaizen\ ;
+太平洋機械翻訳協会 > taiheiyoukikaihon''yakukyoukai\ ;
+勤労者財産形成促進 > kinroushazaisankeiseisokushin\ ;
+超超大規模集積回路 > chouchoudaikiboshuusekikairo\ ;
+超々大規模集積回路 > chouchoudaikiboshuusekikairo\ ;
+太平洋安全保障条約 > taiheiyouanzenhoshoujouyaku\ ;
+操縦席音声記録装置 > soujuusekionseikirokusouchi\ ;
+航空宇宙技術研究所 > koukuuuchuugijutsukenkyuujo\ ;
+浮動小数点演算機構 > fudoushousuuten''enzankikou\ ;
+現金自動預金支払機 > genkinjidouyokinshiharaiki\ ;
+主辞駆動句構造文法 > shujikudoukukouzoubunpou\ ;
+経済協力開発機構 > keizaikyouryokukaihatsukikou\ ;
+北海道開発庁長官 > hokkaidoukaihatsuchouchoukan\ ;
+外国人登録証明書 > gaikokujintourokushoumeisho\ ;
+戦略兵器削減条約 > senryakuheikisakugenjouyaku\ ;
+国際機械翻訳協会 > kokusaikikaihon''yakukyoukai\ ;
+国際電気通信連合 > kokusaidenkitsuushinrengou\ ;
+海外経済協力基金 > kaigaikeizaikyouryokukikin\ ;
+日米安全保障条約 > nichibeianzenhoshoujouyaku\ ;
+戦没者追悼記念日 > senbotsushatsuitoukinenbi\ ;
+戦術航空統制本部 > senjutsukoukuutouseihonbu\ ;
+工業高等専門学校 > kougyoukoutousenmongakkou\ ;
+北大西洋条約機構 > kitataiseiyoujouyakukikou\ ;
+超大規模集積回路 > choudaikiboshuusekikairo\ ;
+化学兵器禁止条約 > kagakuheikikinshijouyaku\ ;
+関税貿易一般協定 > kanzeibouekiippankyoutei\ ;
+在留期間更新許可 > zairyuukikankoushinkyoka\ ;
+万国国際音標文字 > bankokukokusaionpyoumoji\ ;
+海洋投棄規制条約 > kaiyoutoukikiseijouyaku\ ;
+野生動物保護団体 > yaseidoubutsuhogodantai\ ;
+自動列車制御装置 > jidouresshaseigyosouchi\ ;
+天然資源保護論者 > ten''nenshigenhogoronsha\ ;
+非常事態対処計画 > hijoujitaitaishokeikaku\ ;
+自動列車停止装置 > jidouresshateishisouchi\ ;
+赤十字国際委員会 > sekijuujikokusaiiinkai\ ;
+談話表示構造理論 > danwahyoujikouzouriron\ ;
+共産党中央委員会 > kyousantouchuuouiinkai\ ;
+民主党全国委員会 > minshutouzenkokuiinkai\ ;
+英語基礎能力試験 > eigokisonouryokushiken\ ;
+一般命令演算機構 > ippanmeireienzankikou\ ;
+知識集約型産業 > chishikishuuyakugatasangyou\ ;
+自律神経失調症 > jiritsushinkeishitchoushou\ ;
+沖縄開発庁長官 > okinawakaihatsuchouchoukan\ ;
+弁証法的唯物論 > benshouhoutekiyuibutsuron\ ;
+国際協力事業団 > kokusaikyouryokujigyoudan\ ;
+総合的品質管理 > sougoutekihinshitsukanri\ ;
+疑似直接目的語 > gijichokusetsumokutekigo\ ;
+万国著作権条約 > bankokuchosakukenjouyaku\ ;
+言語学的実在論 > gengogakutekijitsuzairon\ ;
+冠状動脈血栓症 > kanjoudoumyakukessenshou\ ;
+科学技術庁長官 > kagakugijutsuchouchoukan\ ;
+赤血球沈降速度 > sekkekkyuuchinkousokudo\ ;
+石油輸出国機構 > sekiyuyushutsukokukikou\ ;
+公共職業安定所 > koukyoushokugyouanteijo\ ;
+戦術航空統制班 > senjutsukoukuutouseihan\ ;
+自動金銭出入機 > jidoukinsenshutsunyuuki\ ;
+地震雷火事親父 > jishinkaminarikajioyaji\ ;
+多肢選択式試問 > tashisentakushikishimon\ ;
+新関西国際空港 > shinkansaikokusaikuukou\ ;
+言語学的観念論 > gengogakutekikan''nenron\ ;
+後発発展途上国 > kouhatsuhattentojoukoku\ ;
+抹消登録証明書 > mashoutourokushoumeisho\ ;
+経済企画庁長官 > keizaikikakuchouchoukan\ ;
+再生不良性貧血 > saiseifuryouseihinketsu\ ;
+火力支援調整線 > karyokushienchouseisen\ ;
+破壊活動防止法 > hakaikatsudouboushihou\ ;
+国際返信切手券 > kokusaihenshinkitteken\ ;
+中華人民共和国 > chuukajinminkyouwakoku\ ;
+東海道五十三次 > toukaidougojuusantsugi\ ;
+宇宙開発事業団 > uchuukaihatsujigyoudan\ ;
+三軸圧縮試験機 > sanjikuasshukushikenki\ ;
+視聴者参加番組 > shichoushasankabangumi\ ;
+州際通商委員会 > shuusaitsuushouiinkai\ ;
+周波数変換装置 > shuuhasuuhenkansouchi\ ;
+慢性疲労症候群 > manseihiroushoukougun\ ;
+公害対策基本法 > kougaitaisakukihonhou\ ;
+経済団体連合会 > keizaidantairengoukai\ ;
+戦闘電子戦情報 > sentoudenshisenjouhou\ ;
+現金自動支払機 > genkinjidoushiharaiki\ ;
+最高経営責任者 > saikoukeieisekininsha\ ;
+装甲人員運搬車 > soukoujin''in''unpansha\ ;
+日本語能力試験 > nihongonouryokushiken\ ;
+音節主音的子音 > onsetsushuontekishiin\ ;
+証券取引委員会 > shoukentorihikiiinkai\ ;
+最高財務責任者 > saikouzaimusekininsha\ ;
+短距離離着陸機 > tankyoririchakurikuki\ ;
+機能単一化文法 > kinoutan''itsukabunpou\ ;
+知能情報研究部 > chinoujouhoukenkyuubu\ ;
+加圧水型原子炉 > kaatsusuigatagenshiro\ ;
+環太平洋地震帯 > kantaiheiyoujishintai\ ;
+人種差別主義者 > jinshusabetsushugisha\ ;
+自然環境保全法 > shizenkankyouhozenhou\ ;
+環太平洋造山帯 > kantaiheiyouzouzantai\ ;
+行動主義心理学 > koudoushugishinrigaku\ ;
+第一次世界大戦 > daiichijisekaitaisen\ ;
+変動為替相場制 > hendoukawasesoubasei\ ;
+歯内療法専門医 > shikaryouhousenmon''i\ ;
+環太平洋火山帯 > kantaiheiyoukazantai\ ;
+実情調査委員会 > jitsujouchousaiinkai\ ;
+科学基礎研究所 > kagakukisokenkyuusho\ ;
+変形生成統語論 > henkeiseiseitougoron\ ;
+大規模集積回路 > daikiboshuusekikairo\ ;
+南無妙法蓮華経 > namumyouhourengekyou\ ;
+未確認飛行物体 > mikakuninhikoubuttai\ ;
+一酸化炭素中毒 > issankatansochuudoku\ ;
+公正取引委員会 > kouseitorihikiiinkai\ ;
+税引前当期利益 > zeibikimaetoukirieki\ ;
+連邦取引委員会 > renpoutorihikiiinkai\ ;
+流行性耳下腺炎 > ryuukouseijikasen''en\ ;
+総理府総務長官 > sourifusoumuchoukan\ ;
+環境保護主義者 > kankyouhogoshugisha\ ;
+日本陸上自衛隊 > nihonrikujoujieitai\ ;
+金地金本位制度 > kinjiganehon''iseido\ ;
+重要無形文化財 > juuyoumukeibunkazai\ ;
+経済社会理事会 > keizaishakairijikai\ ;
+主語助動詞倒置 > shugojodoushitouchi\ ;
+合同技術委員会 > goudougijutsuiinkai\ ;
+自動方向探知機 > jidouhoukoutanchiki\ ;
+帰還不能限界点 > kikanfunougenkaiten\ ;
+国家公安委員長 > kokkakouan''iinchou\ ;
+国会対策委員会 > kokkaitaisakuinkai\ ;
+第二次世界大戦 > dainijisekaitaisen\ ;
+亜米利加合衆国 > amerikagasshuukoku\ ;
+日本航空自衛隊 > nihonkoukuujieitai\ ;
+符号化文字集合 > fugoukamojishuugou\ ;
+日本海上自衛隊 > nihonkaijoujieitai\ ;
+下位範疇化素性 > kaihanchuukasosei\ ;
+選挙管理委員会 > senkyokanriiinkai\ ;
+下位範疇化原理 > kaihanchuukagenri\ ;
+耳鼻咽喉専門医 > jibiinkousenmon''i\ ;
+議院運営委員会 > giin''un''eiiinkai\ ;
+２０００年問題 > nisen''nenmondai\ ;
+宗教的独立性 > shuukyoutekidokuritsusei\ ;
+直接照準射撃 > chokusetsushoujunshageki\ ;
+特殊取扱郵便 > tokushutoriatsukaiyuubin\ ;
+乾湿球湿度計 > kanshitsukyuushitsudokei\ ;
+圧密降伏応力 > atsumitsukoufukuouryoku\ ;
+公認卸売業者 > kounin''oroshiurigyousha\ ;
+核分裂生成物 > kakubunretsuseiseibutsu\ ;
+職業別電話帳 > shokugyoubetsudenwachou\ ;
+入学共通試験 > nyuugakukyoutsuushiken\ ;
+室内管弦楽団 > shitsunaikangengakudan\ ;
+東京株式市場 > toukyoukabushikishijou\ ;
+確率密度関数 > kakuritsumitsudokansuu\ ;
+原子力発電所 > genshiryokuhatsudensho\ ;
+勧善懲悪小説 > kanzenchouakushousetsu\ ;
+杭周面摩擦力 > kuishuumenmasatsuryoku\ ;
+間接照準射撃 > kansetsushoujunshageki\ ;
+新規株式公開 > shinkikabushikikoukai\ ;
+学習指導要領 > gakushuushidouyouryou\ ;
+早発性痴呆症 > souhatsuseichihoushou\ ;
+信用協同組合 > shin''youkyoudoukumiai\ ;
+弦楽四重奏曲 > gengakushijuusoukyoku\ ;
+演繹的説明法 > en''ekitekisetsumeihou\ ;
+深在性真菌症 > shinzaiseishinkinshou\ ;
+統率束縛理論 > tousotsusokubakuriron\ ;
+本態性高血圧 > hontaiseikouketsuatsu\ ;
+陸上端局装置 > rikujoutankyokusouchi\ ;
+日米貿易摩擦 > nichibeibouekimasatsu\ ;
+通商産業大臣 > tsuushousangyoudaijin\ ;
+通商航海条約 > tsuushoukoukaijouyaku\ ;
+軟判定識別器 > nanhanteishikibetsuki\ ;
+空想科学小説 > kuusoukagakushousetsu\ ;
+新入社員教育 > shin''nyuushainkyouiku\ ;
+推奨文献目録 > suishoubunkenmokuroku\ ;
+徳川三代家光 > tokugawasandaiiemitsu\ ;
+生活協同組合 > seikatsukyoudoukumiai\ ;
+料金別納郵便 > ryoukinbetsunouyuubin\ ;
+中距離核戦力 > chuukyorikakusenryoku\ ;
+農業協同組合 > nougyoukyoudoukumiai\ ;
+大陸横断鉄道 > tairikuoudantetsudou\ ;
+高分子吸収体 > koubunshikyuushuutai\ ;
+日米構造協議 > nichibeikouzoukyougi\ ;
+機械翻訳協会 > kikaihon''yakukyoukai\ ;
+中央行政官庁 > chuuougyouseikanchou\ ;
+北大西洋条約 > kitataiseiyoujouyaku\ ;
+電気通信大学 > denkitsuushindaigaku\ ;
+芳香族化合物 > houkouzokukagoubutsu\ ;
+内閣官房長官 > naikakukanbouchoukan\ ;
+弦楽五重奏曲 > gengakugojuusoukyoku\ ;
+宇宙開発計画 > uchuukaihatsukeikaku\ ;
+米連邦航空局 > beirenpoukuukoukyoku\ ;
+外国人登録法 > gaikokujintourokuhou\ ;
+共産党政治局 > kyousantouseijikyoku\ ;
+束縛継承原理 > sokubakukeishougenri\ ;
+三軸圧縮試験 > sanjikuasshukushiken\ ;
+空軍連絡将校 > kuugunrenrakushoukou\ ;
+卸売物価指数 > oroshiuribukkashisuu\ ;
+写真判定決勝 > shashinhanteikesshou\ ;
+前立腺肥大症 > zenritsusenhidaishou\ ;
+説明的妥当性 > setsumeitekidatousei\ ;
+共通一次試験 > kyoutsuuichijishiken\ ;
+第三種郵便物 > daisanshuyuubinbutsu\ ;
+友好通商航海 > yuukoutsuushoukoukai\ ;
+無担保貸付金 > mutanpokashitsukekin\ ;
+必要十分条件 > hitsuyoujuubunjouken\ ;
+精神的指導者 > seishintekishidousha\ ;
+原子物理学者 > genshibutsurigakusha\ ;
+精密機械工業 > seimitsukikaikougyou\ ;
+再入国許可書 > sainyuukokukyoukasho\ ;
+定形外郵便物 > teikeigaiyuubinbutsu\ ;
+超並列計算機 > chouheiretsukeisanki\ ;
+中枢神経系統 > chuusuushinkeikeitou\ ;
+伝送制御拡張 > densouseigyokakuchou\ ;
+日中友好協会 > nitchuuyuukoukyoukai\ ;
+国民金融公庫 > kokuminkin''yuukouko\ ;
+口辺単純疱疹 > kouhentanjunhoushin\ ;
+集団安全保障 > shuudan''anzenhoshou\ ;
+名神高速道路 > meishinkousokudouro\ ;
+放射性降下物 > houshaseikoukabutsu\ ;
+劣性遺伝形質 > resseiidenkeishitsu\ ;
+初期選択項目 > shokisentakukoumoku\ ;
+全国津津浦浦 > zenkokutsutsuuraura\ ;
+信任統治制度 > shin''nintouchiseido\ ;
+主要部終端型 > shuyoubushuutangata\ ;
+合成化学工業 > gouseikagakukougyou\ ;
+国民体育大会 > kokumintaiikutaikai\ ;
+国際電信電話 > kokusaidenshindenwa\ ;
+電子資金振替 > denshishikinfurikae\ ;
+弦楽四重奏団 > gengakushijuusoudan\ ;
+航空交通管制 > koukuukoutsuukansei\ ;
+財政均衡計画 > zaiseikinkoukeikaku\ ;
+日本規格協会 > nipponkikakukyoukai\ ;
+動物愛護協会 > doubutsuaigokyoukai\ ;
+米航空宇宙局 > beikoukuuuchuukyoku\ ;
+全国津々浦々 > zenkokutsutsuuraura\ ;
+日本学術会議 > nihongakujutsukaigi\ ;
+人間環境宣言 > ningenkankyousengen\ ;
+家宅捜索令状 > katakusousakureijou\ ;
+安土桃山時代 > azuchimomoyamajidai\ ;
+生理的食塩水 > seiritekishokuensui\ ;
+環太平洋諸国 > kantaiheiyoushokoku\ ;
+火力支援計画 > karyokushienkeikaku\ ;
+著作権所有者 > chosakukenshoyuusha\ ;
+数学的帰納法 > suugakutekikinouhou\ ;
+日本国特許庁 > nihonkokutokkyochou\ ;
+食糧管理制度 > shokuryoukanriseido\ ;
+生物化学兵器 > seibutsukagakuheiki\ ;
+女権拡張論者 > jokenkakuchouronsha\ ;
+統合幕僚会議 > tougoubakuryoukaigi\ ;
+射撃禁止地域 > shagekikinshichiiki\ ;
+特命全権公使 > tokumeizenkenkoushi\ ;
+新聞倫理綱領 > shinbunrinrikouryou\ ;
+記述的妥当性 > kijutsutekidatousei\ ;
+万国郵便連合 > bankokuyuubinrengou\ ;
+住宅金融公庫 > juutakukin''yuukouko\ ;
+単位体積重量 > tan''itaisekijuuryou\ ;
+統一地方選挙 > touitsuchihousenkyo\ ;
+公開市場政策 > koukaishijouseisaku\ ;
+地球観測衛星 > chikyuukansokueisei\ ;
+重量拳闘選手 > juuryoukentousenshu\ ;
+人工気胸療法 > jinkoukikyouryouhou\ ;
+地方公共団体 > chihoukoukyoudantai\ ;
+手根管症候群 > shukonkanshoukougun\ ;
+高分子化合物 > koubunshikagoubutsu\ ;
+陸上作戦本部 > rikujousakusenhonbu\ ;
+放射性廃棄物 > houshaseihaikibutsu\ ;
+逆転分布係数 > gyakutenbunpukeisuu\ ;
+蜘蛛膜下出血 > kumomakukashukketsu\ ;
+共同救済基金 > kyoudoukyuusaikikin\ ;
+保険金受取人 > hokenkin''uketorinin\ ;
+陸軍士官学校 > rikugunshikangakkou\ ;
+漁業専管水域 > gyogyousenkansuiiki\ ;
+芸術至上主義 > geijutsushijoushugi\ ;
+特命全権大使 > tokumeizenkentaishi\ ;
+近接航空支援 > kinsetsukoukuushien\ ;
+有機水銀中毒 > yuukisuiginchuudoku\ ;
+環太平洋構想 > kantaiheiyoukousou\ ;
+公的不法妨害 > koutekifuhoubougai\ ;
+戦闘支援計画 > sentoushienkeikaku\ ;
+回線制御規則 > kaisenseigyokisoku\ ;
+港湾運送事業 > kouwan''unsoujigyou\ ;
+門戸開放政策 > monkokaihouseisaku\ ;
+東名高速道路 > toumeikousokudouro\ ;
+内閣総理大臣 > naikakusouridaijin\ ;
+日本放送協会 > nihonhousoukyoukai\ ;
+航空宇宙工業 > koukuuuchuukougyou\ ;
+安全保障条約 > anzenhoshoujouyaku\ ;
+主働土圧係数 > shudoudoatsukeisuu\ ;
+反射的半順序 > hanshatekihanjunjo\ ;
+国際通貨基金 > kokusaitsuukakikin\ ;
+短期集中講座 > tankishuuchuukouza\ ;
+日本農林規格 > nihon''nourinkikaku\ ;
+航空宇宙産業 > koukuuuchuusangyou\ ;
+品質保持期限 > hinshitsuhojikigen\ ;
+日本工業規格 > nihonkougyoukikaku\ ;
+中距離核兵器 > chuukyorikakuheiki\ ;
+酸化還元反応 > sankakangenhan''nou\ ;
+公務執行妨害 > koumushikkoubougai\ ;
+高等専門学校 > koutousenmongakkou\ ;
+歩兵戦闘車両 > hoheisentousharyou\ ;
+共同記者会見 > kyoudoukishakaiken\ ;
+太陽熱温水器 > taiyounetsuonsuiki\ ;
+静止土圧係数 > seishidoatsukeisuu\ ;
+人口動態統計 > jinkoudoutaitoukei\ ;
+国連事務総長 > kokurenjimusouchou\ ;
+不動産取得税 > fudousanshutokuzei\ ;
+年次有給休暇 > nenjiyuukyuukyuuka\ ;
+十二指腸潰瘍 > juunishichoukaiyou\ ;
+戦争犯罪法廷 > sensouhanzaihoutei\ ;
+年功序列制度 > nenkoujoretsuseido\ ;
+農林水産大臣 > nourinsuisandaijin\ ;
+主要部先導型 > shuyoubusendougata\ ;
+国民健康保険 > kokuminkenkouhoken\ ;
+不定計量空間 > futeikeiryoukuukan\ ;
+反帝国主義者 > hanteikokushugisha\ ;
+電荷結合素子 > denkaketsugousoshi\ ;
+有限状態文法 > yuugenjoutaibunpou\ ;
+修正資本主義 > shuuseishihonshugi\ ;
+一卵性双生児 > ichiranseisouseiji\ ;
+地中海性気候 > chichuukaiseikikou\ ;
+投資有価証券 > toushiyuukashouken\ ;
+前方再補給点 > zenpousaihokyuuten\ ;
+立憲君主政体 > rikkenkunshuseitai\ ;
+放送禁止用語 > housoukinshiyougo\ ;
+十一面観世音 > juuichimenkanzeon\ ;
+形状記憶合金 > keijoukiokugoukin\ ;
+行動発起時刻 > koudouhakkijikoku\ ;
+十部門分類法 > juubumonbunruihou\ ;
+世界一周旅行 > sekaiisshuuryokou\ ;
+世界人権宣言 > sekaijinkensengen\ ;
+公的医療機関 > koutekiiryoukikan\ ;
+受働土圧係数 > judoudoatsukeisuu\ ;
+不確定性原理 > fukakuteiseigenri\ ;
+二等辺三角形 > nitouhensankakkei\ ;
+政令指定都市 > seireishiteitoshi\ ;
+無担保借入金 > mutanpokariirekin\ ;
+単位労働組合 > tan''iroudoukumiai\ ;
+中央処理装置 > chuuoushorisouchi\ ;
+欧州通貨単位 > oushuutsuukatan''i\ ;
+自由貿易帯域 > jiyuubouekitaiiki\ ;
+恋愛至上主義 > ren''aishijoushugi\ ;
+自動車保険料 > jidoushahokenryou\ ;
+戦場航空阻止 > senjoukoukuusoshi\ ;
+統合参謀本部 > tougousanbouhonbu\ ;
+最長不倒距離 > saichoufutoukyori\ ;
+印象主義音楽 > inshoushugiongaku\ ;
+近代五種競技 > kindaigoshukyougi\ ;
+後方地域警備 > kouhouchiikikeibi\ ;
+自動操縦装置 > jidousoujuusouchi\ ;
+都市対抗野球 > toshitaikouyakyuu\ ;
+金剛夜叉妙王 > kongouyashamyouou\ ;
+高速演算機構 > kousokuenzankikou\ ;
+飛行禁止空域 > hikoukinshikuuiki\ ;
+環境保護論者 > kankyouhogoronsha\ ;
+週間天気予報 > shuukantenkiyohou\ ;
+放射線感受性 > houshasenkanjusei\ ;
+社会民主主義 > shakaiminshushugi\ ;
+部分情報構造 > bubunjouhoukouzou\ ;
+一挙手一投足 > ikkyoshuittousoku\ ;
+有形固定資産 > yuukeikoteishisan\ ;
+飛行記録装置 > hikoukirokusouchi\ ;
+被担保債権額 > hitanposaikengaku\ ;
+二交替制労働 > nikoutaiseiroudou\ ;
+保守系無所属 > hoshukeimushozoku\ ;
+反転分布係数 > hantenbunpukeisuu\ ;
+空挺降下地域 > kuuteikoukachiiki\ ;
+火力支援部隊 > karyokushienbutai\ ;
+歌舞伎十八番 > kabukijuuhachiban\ ;
+大量破壊兵器 > tairyouhakaiheiki\ ;
+反射係数線図 > hanshakeisuusenzu\ ;
+素粒子加速器 > soryuushikasokuki\ ;
+自由貿易地域 > jiyuubouekichiiki\ ;
+公開市場操作 > koukaishijousousa\ ;
+人身保護令状 > jinshinhogoreijou\ ;
+母子健康手帳 > boshikenkoutechou\ ;
+厚生年金保険 > kouseinenkinhoken\ ;
+性行為感染症 > seikouikansenshou\ ;
+生命保険会社 > seimeihokengaisha\ ;
+私有財産制度 > shiyuuzaisanseido\ ;
+一国一党主義 > ikkokuittoushugi\ ;
+日本道路公団 > nihondourokoudan\ ;
+実践理性批判 > jissenriseihihan\ ;
+多重名前空間 > tajuunamaekuukan\ ;
+平和維持活動 > heiwaijikatsudou\ ;
+二卵性双生児 > niranseisouseiji\ ;
+主辞素性規約 > shujisoseikiyaku\ ;
+女性解放運動 > joseikaihouundou\ ;
+炭酸同化作用 > tansandoukasayou\ ;
+二大政党主義 > nidaiseitoushugi\ ;
+不純異性交遊 > fujun''iseikouyuu\ ;
+骨皮筋右衛門 > honekawasujiemon\ ;
+浅間山荘事件 > asamasansoujiken\ ;
+環境保護主義 > kankyouhogoshugi\ ;
+世界貿易機関 > sekaibouekikikan\ ;
+無形固定資産 > mukeikoteishisan\ ;
+音声多重放送 > onseitajuuhousou\ ;
+脳性小児麻痺 > nouseishounimahi\ ;
+大東亜共栄圏 > daitouakyoueiken\ ;
+小売物価指数 > kouribukkashisuu\ ;
+自由主義経済 > jiyuushugikeizai\ ;
+夜間預金々庫 > yakan''yokinkinko\ ;
+連邦準備制度 > renpoujunbiseido\ ;
+超過勤務手当 > choukakinmuteate\ ;
+予備士官学校 > yobishikangakkou\ ;
+画像処理装置 > gazoushorisouchi\ ;
+六十四分音符 > rokujuushibuonpu\ ;
+放射性同位体 > houshaseidouitai\ ;
+夜間預金金庫 > yakan''yokinkinko\ ;
+亜熱帯高気圧 > anettaikoukiatsu\ ;
+磁気共鳴画像 > jikikyoumeigazou\ ;
+鳥獣保護区域 > choujuuhogokuiki\ ;
+国際援助機関 > kokusaienjokikan\ ;
+無政府主義者 > museifushugisha\ ;
+世界保健機関 > sekaihokenkikan\ ;
+二十四時間制 > nijuuyojikansei\ ;
+看護婦養成所 > kangofuyouseijo\ ;
+不当労働行為 > futouroudoukoui\ ;
+苦情処理機関 > kujoushorikikan\ ;
+補助記憶装置 > hojokiokusouchi\ ;
+文字多重放送 > mojitajuuhousou\ ;
+医師国家試験 > ishikokkashiken\ ;
+肢体不自由児 > shitaifujiyuuji\ ;
+仮名漢字変換 > kanakanjihenkan\ ;
+国家公務員法 > kokkakoumuinhou\ ;
+意志決定機関 > ishiketteikikan\ ;
+主辞素性原理 > shujisoseigenri\ ;
+弁護士事務所 > bengoshijimusho\ ;
+自由主義国家 > jiyuushugikokka\ ;
+生命維持装置 > seimeiijisouchi\ ;
+文字符号化法 > mojifugoukahou\ ;
+南無阿弥陀仏 > namuamidabutsu\ ;
+語彙機能文法 > goikinoubunpou\ ;
+倶梨伽羅紋紋 > kurikaramonmon\ ;
+三十二分音符 > sanjuunibuonpu\ ;
+我利我利亡者 > garigarimouja\ ;
+守秘義務違反 > shuhigimuihan\ ;
+是是非非主義 > zezehihishugi\ ;
+烏芻沙摩妙王 > ususamamyouou\ ;
+代表取締役 > daihyoutorishimariyaku\ ;
+取扱説明書 > toriatsukaisetsumeisho\ ;
+国立博物館 > kokuritsuhakubutsukan\ ;
+集中治療室 > shuuchuuchiryoushitsu\ ;
+直轄植民地 > chokkatsushokuminchi\ ;
+木造建築物 > mokuzoukenchikubutsu\ ;
+植物性蛋白 > shokubutsuseitanpaku\ ;
+信用取引先 > shin''youtorihikisaki\ ;
+常務取締役 > joumutorishimariyaku\ ;
+七星天道虫 > nanahoshitentoumushi\ ;
+民族大虐殺 > minzokudaigyakusatsu\ ;
+越年生植物 > etsunenseishokubutsu\ ;
+構成素統御 > kouseisokouzoutougyo\ ;
+直接目的語 > chokusetsumokutekigo\ ;
+専務取締役 > senmutorishimariyaku\ ;
+一年生植物 > ichinenseishokubutsu\ ;
+麻薬取締班 > mayakutorishimarihan\ ;
+麻薬取締法 > mayakutorishimarihou\ ;
+中心的役割 > chuushintekiyakuwari\ ;
+収縮期血圧 > shuushukukiketsuatsu\ ;
+単子葉植物 > tanshiyoushokubutsu\ ;
+連立方程式 > renritsuhouteishiki\ ;
+通商産業省 > tsuushousangyoushou\ ;
+原子力発電 > genshiryokuhatsuden\ ;
+直接民主制 > chokusetsuminshusei\ ;
+進出制限線 > shinshutsuseigensen\ ;
+株式取引所 > kabushikitorihikijo\ ;
+直接教授法 > chokusetsukyoujuhou\ ;
+双子葉植物 > soushiyoushokubutsu\ ;
+芥川龍之介 > akutagawaryuunosuke\ ;
+貸借対照表 > taishakutaishouhyou\ ;
+公定割引率 > kouteiwaribikiritsu\ ;
+強迫神経症 > kyouhakushinkeishou\ ;
+商業信用状 > shougyoushin''youjou\ ;
+輸出信用状 > yushutsushin''youjou\ ;
+旧新約全書 > kyuushin''yakuzensho\ ;
+出入国管理 > shutsunyuukokukanri\ ;
+障害物競走 > shougaibutsukyousou\ ;
+昼光色電球 > chuukoushokudenkyuu\ ;
+天然色写真 > ten''nenshokushashin\ ;
+水力発電所 > suiryokuhatsudensho\ ;
+素出力条件 > soshutsuryokujouken\ ;
+国民総支出 > kokuminsoushishutsu\ ;
+植物性脂肪 > shokubutsuseishibou\ ;
+旧新約聖書 > kyuushin''yakuseisho\ ;
+長期貸付金 > choukikashitsukekin\ ;
+生物物理学 > seibutsubutsurigaku\ ;
+平家物語抄 > heikemonogatarishou\ ;
+観察的研究 > kansatsutekikenkyuu\ ;
+賃貸借契約 > chintaishakukeiyaku\ ;
+徳川公爵邸 > tokugawakoushakutei\ ;
+精神分裂症 > seishinbunretsushou\ ;
+太陽熱発電 > taiyounetsuhatsuden\ ;
+海外留学熱 > kaigairyuugakunetsu\ ;
+妊娠中毒症 > ninshinchuudokushou\ ;
+独立採算制 > dokuritsusaisansei\ ;
+市場占有率 > shijousen''yuuritsu\ ;
+視聴覚教材 > shichoukakukyouzai\ ;
+内閣法制局 > naikakuhouseikyoku\ ;
+中小企業庁 > chuushoukigyouchou\ ;
+書簡体小説 > shokantaishousetsu\ ;
+社会生物学 > shakaiseibutsugaku\ ;
+軍隊行進曲 > guntaikoushinkyoku\ ;
+葬送行進曲 > sousoukoushinkyoku\ ;
+物理的現象 > butsuritekigenshou\ ;
+心臓弁膜症 > shinzoubenmakushou\ ;
+膝蓋腱反射 > shitsugaikenhansha\ ;
+俸給生活者 > houkyuuseikatsusha\ ;
+生物情報学 > seibutsujouhougaku\ ;
+多年生植物 > tanenseishokubutsu\ ;
+量子物理学 > ryoushibutsurigaku\ ;
+北米合衆国 > hokubeigasshuukoku\ ;
+来客芳名録 > raikyakuhoumeiroku\ ;
+地方検察庁 > chihoukensatsuchou\ ;
+専門的知識 > senmontekichishiki\ ;
+結婚行進曲 > kekkonkoushinkyoku\ ;
+株式配当金 > kabushikihaitoukin\ ;
+特別配当金 > tokubetsuhaitoukin\ ;
+経済成長率 > keizaiseichouritsu\ ;
+産業別組合 > sangyoubetsukumiai\ ;
+優等卒業生 > yuutousotsugyousei\ ;
+入国管理局 > nyuukokukanrikyoku\ ;
+間接撮影法 > kansetsusatsueihou\ ;
+実物大模型 > jitsubutsudaimokei\ ;
+軍事的侵略 > gunjitekishinryaku\ ;
+積分方程式 > sekibunhouteishiki\ ;
+積算電力計 > sekisandenryokukei\ ;
+二年生植物 > ninenseishokubutsu\ ;
+千九百年代 > senkyuuhyakunendai\ ;
+科学博物館 > kagakuhakubutsukan\ ;
+中国共産党 > chuugokukyousantou\ ;
+高分子物質 > koubunshibusshitsu\ ;
+発達心理学 > hattatsushinrigaku\ ;
+精神薄弱者 > seishinhakujakusha\ ;
+特別行政区 > tokubetsugyouseiku\ ;
+三色印刷法 > sanshokuinsatsuhou\ ;
+排卵誘発剤 > hairan''yuuhatsuzai\ ;
+生活必需品 > seikatsuhitsujuhin\ ;
+少年鑑別所 > shounenkanbetsusho\ ;
+座骨神経痛 > zakotsushinkeitsuu\ ;
+植民地政策 > shokuminchiseisaku\ ;
+証券取引法 > shoukentorihikihou\ ;
+商品回転率 > shouhinkaitenritsu\ ;
+節足動物門 > sessokudoubutsumon\ ;
+計算生物学 > keisanseibutsugaku\ ;
+就職情報誌 > shuushokujouhoushi\ ;
+建設的関係 > kensetsutekikankei\ ;
+客室乗務員 > kyakushitsujoumuin\ ;
+支持力定式 > shijiryokuteishiki\ ;
+動物行動学 > doubutsukoudougaku\ ;
+職能代表制 > shokunoudaihyousei\ ;
+最高検察庁 > saikoukensatsuchou\ ;
+心神耗弱者 > shinshinmoujakusha\ ;
+無脊椎動物 > musekitsuidoubutsu\ ;
+家宅侵入罪 > katakushin''nyuuzai\ ;
+分子生物学 > bunshiseibutsugaku\ ;
+天体写真術 > tentaishashinjutsu\ ;
+秘密漏洩罪 > himitsurousetsuzai\ ;
+間接目的語 > kansetsumokutekigo\ ;
+粘液分泌腺 > nen''ekibunpitsusen\ ;
+瞬間接着剤 > shunkansetchakuzai\ ;
+人口密集率 > jinkoumisshuuritsu\ ;
+原色写真版 > genshokushashinban\ ;
+量子色力学 > ryoushiirorikigaku\ ;
+在日米陸軍 > zainichibeirikugun\ ;
+食品添加物 > shokuhintenkabutsu\ ;
+動物性蛋白 > doubutsuseitanpaku\ ;
+特定郵便局 > tokuteiyuubinkyoku\ ;
+火力発電所 > karyokuhatsudensho\ ;
+多角式農業 > takakushikinougyou\ ;
+永世中立国 > eiseichuuritsukoku\ ;
+唯物弁証法 > yuibutsubenshouhou\ ;
+史的唯物論 > shitekiyuibutsuron\ ;
+宣誓供述書 > senseikyoujutsusho\ ;
+熱膨張係数 > netsubouchoukeisuu\ ;
+植物性繊維 > shokubutsuseisen''i\ ;
+過失傷害罪 > kashitsushougaizai\ ;
+共同創設者 > kyoudousousetsusha\ ;
+上級副社長 > joukyuufukushachou\ ;
+戦略的提携 > senryakutekiteikei\ ;
+環境庁長官 > kankyouchouchoukan\ ;
+圧力調整器 > atsuryokuchouseiki\ ;
+生鮮食料品 > seisenshokuryouhin\ ;
+放射性物質 > houshaseibusshitsu\ ;
+地球物理学 > chikyuubutsurigaku\ ;
+反宗教改革 > hanshuukyoukaikaku\ ;
+学識経験者 > gakushikikeikensha\ ;
+赤面恐怖症 > sekimenkyoufushou\ ;
+食品衛生法 > shokuhin''eiseihou\ ;
+教職員組合 > kyoushokuinkumiai\ ;
+毛沢東主席 > moutakutoushuseki\ ;
+別途積立金 > bettotsumitatekin\ ;
+返信料葉書 > henshinryouhagaki\ ;
+諸車通行止 > shoshatsuukoudome\ ;
+国土庁長官 > kokudochouchoukan\ ;
+勧善懲悪劇 > kanzenchouakugeki\ ;
+医学生物学 > igakuseibutsugaku\ ;
+非標準拡張 > hihyoujunkakuchou\ ;
+太陽光発電 > taiyoukouhatsuden\ ;
+返信用葉書 > henshin''youhagaki\ ;
+真珠養殖場 > shinjuyoushokujou\ ;
+肋間神経痛 > rokkanshinkeitsuu\ ;
+海洋物理学 > kaiyoubutsurigaku\ ;
+精神的苦痛 > seishintekikutsuu\ ;
+交流発電機 > kouryuuhatsudenki\ ;
+狩猟採集民 > shuryousaishuumin\ ;
+戦闘正面幅 > sentoushoumenhaba\ ;
+不信任投票 > fushin''nintouhyou\ ;
+送金受取人 > soukin''uketorinin\ ;
+ＤＲＳ理論 > di\ ̄a\ ̄ruesuriron\ ;
+食糧管理法 > shokuryoukanrihou\ ;
+盲腸炎手術 > mouchouenshujutsu\ ;
+第一級殺人 > daiikkyuusatsujin\ ;
+戦略核兵器 > senryakukakuheiki\ ;
+凍結防止剤 > touketsuboushizai\ ;
+中間配当額 > chuukanhaitougaku\ ;
+高速増殖炉 > kousokuzoushokuro\ ;
+返信料封筒 > henshinryoufuutou\ ;
+衛星地球局 > eiseichikyuukyoku\ ;
+在留外国人 > zairyuugaikokujin\ ;
+産業廃棄物 > sangyouhaikibutsu\ ;
+天然記念物 > ten''nenkinenbutsu\ ;
+出生証明書 > shusseishoumeisho\ ;
+上級管理職 > joukyuukanrishoku\ ;
+税関申告書 > zeikanshinkokusho\ ;
+返信用封筒 > henshin''youfuutou\ ;
+熱狂的信者 > nekkyoutekishinja\ ;
+企業間信用 > kigyoukanshin''you\ ;
+開拓者精神 > kaitakushaseishin\ ;
+深在性真菌 > shinzaiseishinkin\ ;
+村落共同体 > sonrakukyoudoutai\ ;
+上陸用舟艇 > jourikuyoushuutei\ ;
+古生物学者 > koseibutsugakusha\ ;
+開発途上国 > kaihatsutojoukoku\ ;
+血圧降下剤 > ketsuatsukoukazai\ ;
+無差別爆撃 > musabetsubakugeki\ ;
+平和的解決 > heiwatekikaisetsu\ ;
+食品加工業 > shokuhinkakougyou\ ;
+高級住宅地 > koukyuujuutakuchi\ ;
+過失致死罪 > kashitsuchishizai\ ;
+高額所得者 > kougakushotokusha\ ;
+十一面観音 > juuichimenkan''non\ ;
+月経困難症 > gekkeikon''nanshou\ ;
+国際見本市 > kokusaimihon''ichi\ ;
+緑地化計画 > ryokuchikakeikaku\ ;
+中枢神経系 > chuusuushinkeikei\ ;
+実験的研究 > jikkentekikenkyuu\ ;
+専用駐車場 > sen''youchuushajou\ ;
+無過失責任 > mukashitsusekinin\ ;
+一次方程式 > ichijihouteishiki\ ;
+就業時間中 > shuugyoujikanchuu\ ;
+国民休暇村 > kokuminkyuukamura\ ;
+子宮外妊娠 > shikyuugaininshin\ ;
+無担保貸付 > mutanpokashitsuke\ ;
+一粒子既約 > ichiryuushikiyaku\ ;
+企業別組合 > kigyoubetsukumiai\ ;
+不法侵入者 > fuhoushin''nyuusha\ ;
+収穫感謝祭 > shuukakukanshasai\ ;
+指向性爆薬 > shikouseibakuyaku\ ;
+心因性反応 > shin''inseihan''nou\ ;
+亜熱帯植物 > anettaishokubutsu\ ;
+内閣総辞職 > naikakusoujishoku\ ;
+証券取引所 > shoukentorihikijo\ ;
+屈折望遠鏡 > kussetsubouenkyou\ ;
+歯牙矯正術 > shigakyouseijutsu\ ;
+単細胞生物 > tansaibouseibutsu\ ;
+日本薬局方 > nihon''yakkyokuhou\ ;
+深層心理学 > shinsoushinrigaku\ ;
+精神薄弱児 > seishinhakujakuji\ ;
+化学方程式 > kagakuhouteishiki\ ;
+急降下爆撃 > kyuukoukabakugeki\ ;
+水上生活者 > suijouseikatsusha\ ;
+在学証明書 > zaigakushoumeisho\ ;
+植民地統治 > shokuminchitouchi\ ;
+関数方程式 > kansuuhouteishiki\ ;
+推進研究所 > suishinkenkyuusho\ ;
+戦術核兵器 > senjutsukakuheiki\ ;
+発展的解消 > hattentekikaishou\ ;
+国立図書館 > kokuritsutoshokan\ ;
+三行広告欄 > sangyoukoukokuran\ ;
+勧業博覧会 > kangyouhakurankai\ ;
+分析心理学 > bunsekishinrigaku\ ;
+教育心理学 > kyouikushinrigaku\ ;
+業務上過失 > gyoumujoukashitsu\ ;
+成績証明書 > seisekishoumeisho\ ;
+入学志願者 > nyuugakushigansha\ ;
+中央放送局 > chuuouhousoukyoku\ ;
+共同相続人 > kyoudousouzokunin\ ;
+研究発表会 > kenkyuuhappyoukai\ ;
+天体分光術 > tentaibunkoujutsu\ ;
+球面三角法 > kyuumensankakuhou\ ;
+計量経済学 > keiryoukeizaigaku\ ;
+著作権侵害 > chosakukenshingai\ ;
+特別弁護人 > tokubetsubengonin\ ;
+富国強兵策 > fukokukyouheisaku\ ;
+予想収穫高 > yosoushuukakudaka\ ;
+血友病患者 > ketsuyuubyoukanja\ ;
+直角三角形 > chokkakusankakkei\ ;
+闇価格協定 > yamikakakukyoutei\ ;
+赤外線写真 > sekigaisenshashin\ ;
+天皇機関説 > ten''noukikansetsu\ ;
+公証人役場 > koushounin''yakuba\ ;
+超現実主義 > chougenjitsushugi\ ;
+二極真空管 > nikyokushinkuukan\ ;
+阪神大震災 > hanshindaishinsai\ ;
+法定得票数 > houteitokuhyousuu\ ;
+設立趣意書 > setsuritsushuisho\ ;
+外国人登録 > gaikokujintouroku\ ;
+身体障害者 > shintaishougaisha\ ;
+消費者信用 > shouhishashin''you\ ;
+鈍角三角形 > donkakusankakukei\ ;
+海難審判庁 > kainanshinpanchou\ ;
+犯罪発生率 > hanzaihasseiritsu\ ;
+微生物学者 > biseibutsugakusha\ ;
+七色唐辛子 > nanairotougarashi\ ;
+公職選挙法 > koushokusenkyohou\ ;
+定形郵便物 > teikeiyuubinbutsu\ ;
+対中国関係 > taichuugokukankei\ ;
+科学技術庁 > kagakugijutsuchou\ ;
+大英博物館 > daieihakubutsukan\ ;
+動脈硬化症 > doumyakukoukashou\ ;
+帝王神権説 > teioushinkensetsu\ ;
+宇宙大爆発 > uchuudaibakuhatsu\ ;
+首相兼外相 > shushoukengaishou\ ;
+生物地理学 > seibutsuchirigaku\ ;
+原子物理学 > genshibutsurigaku\ ;
+略取誘拐罪 > ryakushuyuukaizai\ ;
+天体物理学 > tentaibutsurigaku\ ;
+降圧変圧器 > kouatsuhen''atsuki\ ;
+東印度会社 > higashiindogaisha\ ;
+物質主義者 > busshitsushugisha\ ;
+国際的貿易 > kokusaitekiboueki\ ;
+中性子爆弾 > chuuseishibakudan\ ;
+代数方程式 > daisuuhouteishiki\ ;
+平均太陽日 > heikintaiyoujitsu\ ;
+乳児死亡率 > nyuujishibouritsu\ ;
+万国博覧会 > bankokuhakurankai\ ;
+防衛施設庁 > boueishisetsuchou\ ;
+有料駐車場 > yuuryouchuushajou\ ;
+臨床心理学 > rinshoushinrigaku\ ;
+写真週刊誌 > shashinshuukanshi\ ;
+巨石記念物 > kyosekikinenbutsu\ ;
+二元方程式 > nigenhouteishiki\ ;
+道義的責任 > dougitekisekinin\ ;
+獅子唐辛子 > shishitougarashi\ ;
+気象観測船 > kishoukansokusen\ ;
+人猿同祖説 > jin''endousosetsu\ ;
+団体交渉権 > dantaikoushouken\ ;
+対人恐怖症 > taijinkyoufushou\ ;
+脳脊髄膜炎 > nousekizuimakuen\ ;
+要注意人物 > youchuuijinbutsu\ ;
+学校教育法 > gakkoukyouikuhou\ ;
+王権神授説 > oukenshinjusetsu\ ;
+真部分集合 > shinbubunshuugou\ ;
+独占禁止法 > dokusenkinshihou\ ;
+居間兼寝室 > imakenshinshitsu\ ;
+公称資本金 > koushoushihonkin\ ;
+電動発動機 > dendouhatsudouki\ ;
+応用物理学 > ouyoubutsurigaku\ ;
+三十八度線 > sanjuuhachidosen\ ;
+認知心理学 > ninchishinrigaku\ ;
+工業所有権 > kougyoushoyuuken\ ;
+多変量解析 > tahenryoukaiseki\ ;
+清涼飲料水 > seiryouinryousui\ ;
+金利生活者 > kinriseikatsusha\ ;
+遺言執行者 > yuigonshikkousha\ ;
+貿易外収支 > bouekigaishuushi\ ;
+染色体地図 > senshokutaichizu\ ;
+主席研究員 > shusekikenkyuuin\ ;
+高速度写真 > kousokudoshashin\ ;
+高次方程式 > koujihouteishiki\ ;
+微分方程式 > bibunhouteishiki\ ;
+郵便私書箱 > yuubinshishobako\ ;
+斜格性統御 > shakakuseitougyo\ ;
+経口避妊薬 > keikouhinin''yaku\ ;
+人材開発部 > jinzaikaihatsubu\ ;
+万国標準時 > bankokuhyoujunji\ ;
+防衛庁長官 > boueichouchoukan\ ;
+含水化合物 > gansuikagoubutsu\ ;
+関東大震災 > kantoudaishinsai\ ;
+装甲回収車 > soukoukaishuusha\ ;
+地方行財政 > chihougyouzaisei\ ;
+性表現情報 > seihyougenjouhou\ ;
+希望的観測 > kiboutekikansoku\ ;
+反射減衰量 > hanshagensuiryou\ ;
+変態心理学 > hentaishinrigaku\ ;
+欧州共同体 > oushuukyoudoutai\ ;
+紫外線療法 > shigaisenryouhou\ ;
+非武装中立 > hibusouchuuritsu\ ;
+主席外交官 > shusekigaikoukan\ ;
+細胞質遺伝 > saiboushitsuiden\ ;
+共産党宣言 > kyousantousengen\ ;
+巡回診療所 > junkaishinryoujo\ ;
+源泉所得税 > gensenshotokuzei\ ;
+組職労働者 > soshokuroudousha\ ;
+労働者階級 > roudoushakaikyuu\ ;
+拡大再生産 > kakudaisaiseisan\ ;
+上級裁判所 > joukyuusaibansho\ ;
+禁欲主義者 > kin''yokushugisha\ ;
+特殊潜航艇 > tokushusenkoutei\ ;
+最恵国待遇 > saikeikokutaiguu\ ;
+共産主義国 > kyousanshugikoku\ ;
+原告対被告 > genkokutaihikoku\ ;
+受託収賄罪 > jutakushuuwaizai\ ;
+流行性感冒 > ryuukouseikanbou\ ;
+国民総生産 > kokuminsouseisan\ ;
+中距離競走 > chuukyorikyousou\ ;
+全国的範囲 > zenkokutekihan''i\ ;
+連邦共和国 > renpoukyouwakoku\ ;
+普遍的法則 > fuhentekihousoku\ ;
+大統領選挙 > daitouryousenkyo\ ;
+日猶同祖論 > nichiyuudousoron\ ;
+両替手数料 > ryougaetesuuryou\ ;
+資本利益率 > shihonriekiritsu\ ;
+戦車揚陸艦 > senshayourikukan\ ;
+売春防止法 > baishunboushihou\ ;
+光化学反応 > koukagakuhan''nou\ ;
+軍事当局者 > gunjitoukyokusha\ ;
+肉体労働者 > nikutairoudousha\ ;
+自主流通米 > jishuryuutsuumai\ ;
+第一次産業 > daiichijisangyou\ ;
+実存主義者 > jitsuzonshugisha\ ;
+現実主義者 > genjitsushugisha\ ;
+反政府勢力 > hanseifuseiryoku\ ;
+免疫不全症 > men''ekifuzenshou\ ;
+十進分類法 > jisshinbunruihou\ ;
+偶像教徒的 > guuzoukyoutoteki\ ;
+紅白歌合戦 > kouhakuutagassen\ ;
+経済研究所 > keizaikenkyuusho\ ;
+軍事通信員 > gunjitsuushin''in\ ;
+基準内賃金 > kijun''naichingin\ ;
+県庁所在地 > kenchoushozaichi\ ;
+真宗大谷派 > shinshuuootaniha\ ;
+再入国許可 > sainyuukokukyoka\ ;
+英国国教会 > eikokukokkyoukai\ ;
+清教徒革命 > seikyoutokakumei\ ;
+太陽神経叢 > taiyoushinkeisou\ ;
+経営学修士 > keieigakushuushi\ ;
+健康証明書 > kenkoushoumeisho\ ;
+社会心理学 > shakaishinrigaku\ ;
+公共企業体 > koukyoukigyoutai\ ;
+都市再開発 > toshisaikaihatsu\ ;
+放射線療法 > houshasenryouhou\ ;
+国連分担金 > kokurenbuntankin\ ;
+定期刊行物 > teikikankoubutsu\ ;
+攻撃開始線 > kougekikaishisen\ ;
+平面三角法 > heimensankakuhou\ ;
+法定伝染病 > houteidensenbyou\ ;
+中距離競争 > chuukyorikyousou\ ;
+三叉神経痛 > sansashinkeitsuu\ ;
+優勝決定戦 > yuushouketteisen\ ;
+最低生活費 > saiteiseikatsuhi\ ;
+府県別人口 > fukenbetsujinkou\ ;
+推定相続人 > suiteisouzokunin\ ;
+多国籍企業 > takokusekikigyou\ ;
+晴一時小雨 > hareichijikosame\ ;
+季節労働者 > kisetsuroudousha\ ;
+中小諸国家 > choushoushokokka\ ;
+不平等条約 > fubyoudoujouyaku\ ;
+最低賃金制 > saiteichinginsei\ ;
+帝国主義的 > teikokushugiteki\ ;
+納税通知書 > nouzeitsuuchisho\ ;
+関税割当制 > kanzeiwariatesei\ ;
+居住証明書 > kyojuushoumeisho\ ;
+大使級会談 > taishikyuukaidan\ ;
+民主活動家 > minshukatsudouka\ ;
+客員研究員 > kyakuinkenkyuuin\ ;
+支持力係数 > shijiryokukeisuu\ ;
+直下型地震 > chokkagatajishin\ ;
+未解決問題 > mikaiketsumondai\ ;
+建築基準法 > kenchikukijunhou\ ;
+知的所有権 > chitekishoyuuken\ ;
+職業安定所 > shokugyouanteijo\ ;
+共産党細胞 > kyousantousaibou\ ;
+一年生草本 > ichinenseisouhon\ ;
+条約加盟国 > jouyakukameikoku\ ;
+立正佼成会 > risshoukouseikai\ ;
+共観福音書 > kyoukanfukuinsho\ ;
+高所恐怖症 > koushokyoufushou\ ;
+新聞販売店 > shinbunhanbaiten\ ;
+農林水産省 > nourinsuisanshou\ ;
+二者選一法 > nishasen''itsuhou\ ;
+境界値問題 > kyoukaichimondai\ ;
+社会人野球 > shakaijin''yakyuu\ ;
+菜食主義者 > saishokushugisha\ ;
+軍産複合体 > gunsanfukugoutai\ ;
+精神医学者 > seishin''igakusha\ ;
+経済企画庁 > keizaikikakuchou\ ;
+先端支持力 > sentanshijiryoku\ ;
+保健物理学 > hokenbutsurigaku\ ;
+分解蒸溜法 > bunkaijouryuuhou\ ;
+計量言語学 > keiryougengogaku\ ;
+地域振興券 > chiikishinkouken\ ;
+急進主義者 > kyuushinshugisha\ ;
+交通運輸業 > koutsuuun''yugyou\ ;
+無制限供給 > museigenkyoukyuu\ ;
+給与所得者 > kyuuyoshotokusha\ ;
+戦闘爆撃機 > sentoubakugekiki\ ;
+林業試験場 > ringyoushikenjou\ ;
+擲弾発射筒 > tekidanhasshatou\ ;
+産軍複合体 > sangunfukugoutai\ ;
+最大公約数 > saidaikouyakusuu\ ;
+国内消費税 > kokunaishouhizei\ ;
+少年審判所 > shounenshinpanjo\ ;
+流行性肝炎 > ryuukouseikan''en\ ;
+準準決勝戦 > junjunkesshousen\ ;
+不完全燃焼 > fukanzen''nenshou\ ;
+原子力時代 > genshiryokujidai\ ;
+農業試験場 > nougyoushikenjou\ ;
+高速度撮影 > kousokudosatsuei\ ;
+好気性生物 > koukiseiseibutsu\ ;
+家庭内暴力 > kateinaibouryoku\ ;
+在籍専従者 > zaisekisenjuusha\ ;
+官費留学生 > kanpiryuugakusei\ ;
+南北朝時代 > nanbokuchoujidai\ ;
+死亡診断書 > shiboushindansho\ ;
+弦楽四重奏 > gengakushijuusou\ ;
+仲裁裁判所 > chuusaisaibansho\ ;
+理論物理学 > rironbutsurigaku\ ;
+全般前哨線 > zenpanzenshousen\ ;
+十二指腸虫 > juunishichouchuu\ ;
+土木工学者 > dobokukougakusha\ ;
+日中韓統合 > nitchuukantougou\ ;
+拡張倍精度 > kakuchoubaiseido\ ;
+労働収容所 > roudoushuuyousho\ ;
+無着陸飛行 > muchakurikuhikou\ ;
+日付変更線 > hidzukehenkousen\ ;
+当事者能力 > toujishanouryoku\ ;
+損益計算書 > son''ekikeisansho\ ;
+急行停車駅 > kyuukouteishaeki\ ;
+反植民主義 > hanshokuminshugi\ ;
+極低温科学 > kyokuteionkagaku\ ;
+写真望遠鏡 > shashinbouenkyou\ ;
+妙法蓮華経 > myouhourengekyou\ ;
+実用主義者 > jitsuyoushugisha\ ;
+後方連絡線 > kouhourenrakusen\ ;
+実験心理学 > jikkenshinrigaku\ ;
+不法入国者 > fuhounyuukokusha\ ;
+多元方程式 > tagenhouteishiki\ ;
+国内総生産 > kokunaisouseisan\ ;
+鉄道公安官 > tetsudoukouankan\ ;
+平台型貨車 > hiradaigatakasha\ ;
+人称代名詞 > ninshoudaimeishi\ ;
+実業之日本 > jitsugyounonihon\ ;
+積層乾電池 > sekisoukandenchi\ ;
+行政管理庁 > gyouseikanrichou\ ;
+赤十字条約 > sekijuujijouyaku\ ;
+光学顕微鏡 > kougakukenbikyou\ ;
+強制収容所 > kyouseishuuyoujo\ ;
+犯罪心理学 > hanzaishinrigaku\ ;
+連邦捜査局 > renpousousakyoku\ ;
+大陸移動説 > tairikuidousetsu\ ;
+企業内教育 > kigyounaikyouiku\ ;
+窒素酸化物 > chissosankabutsu\ ;
+帝王切開術 > teiousekkaijutsu\ ;
+春機発動期 > shunkihatsudouki\ ;
+天幕製造人 > tenmakuseizounin\ ;
+最優秀選手 > saiyuushuusenshu\ ;
+勝利又勝利 > shourimatashouri\ ;
+女流文学者 > joryuubungakusha\ ;
+耐久消費財 > taikyuushouhizai\ ;
+非公式協議 > hikoushikikyougi\ ;
+空港使用料 > kuukoushiyouryou\ ;
+無重力状態 > mujuuryokujoutai\ ;
+天照皇大神 > tenshoukoudaijin\ ;
+精神安定剤 > seishin''anteizai\ ;
+酸性酸化物 > sanseisankabutsu\ ;
+写実主義者 > shajitsushugisha\ ;
+冷戦型思考 > reisengatashikou\ ;
+電子工業会 > denshikougyoukai\ ;
+電子工学者 > denshikougakusha\ ;
+民主共和国 > minshukyouwakoku\ ;
+独立記念日 > dokuritsukinenbi\ ;
+化学調味料 > kagakuchoumiryou\ ;
+終身雇用制 > shuushinkoyousei\ ;
+不定方程式 > futeihouteishiki\ ;
+大修道院長 > daishuudouinchou\ ;
+港湾運送業 > kouwan''unsougyou\ ;
+周波数変調 > shuuhasuuhenchou\ ;
+乾燥地農業 > kansouchinougyou\ ;
+環境配慮書 > kankyouhairyosho\ ;
+固体物理学 > kotaibutsurigaku\ ;
+組織労働者 > soshikiroudousha\ ;
+営業報告書 > eigyouhoukokusho\ ;
+広告代理店 > koukokudairiten\ ;
+戦時国際法 > senjikokusaihou\ ;
+多額納税者 > tagakunouzeisha\ ;
+太元帥妙王 > daigensuimyouou\ ;
+中部太平洋 > chuubutaiheiyou\ ;
+企業内組合 > kigyounaikumiai\ ;
+太平洋戦争 > taiheiyousensou\ ;
+連帯保証人 > rentaihoshounin\ ;
+軍国主義者 > gunkokushugisha\ ;
+反帝国主義 > hanteikokushugi\ ;
+会社更生法 > kaishakouseihou\ ;
+国選弁護人 > kokusenbengonin\ ;
+自然地理学 > shizenchirigaku\ ;
+地域的分布 > chiikitekibunpu\ ;
+剪断安定性 > sendan''anteisei\ ;
+高分子化学 > koubunshikagaku\ ;
+情報公開法 > jouhoukoukaihou\ ;
+反射望遠鏡 > hanshabouenkyou\ ;
+特別委員会 > tokubetsuiinkai\ ;
+内需主導型 > naijushudougata\ ;
+晴天乱気流 > seitenrankiryuu\ ;
+基本的人権 > kihontekijinken\ ;
+戦争犯罪人 > sensouhanzainin\ ;
+反対貿易風 > hantaibouekifuu\ ;
+道路交通法 > dourokoutsuuhou\ ;
+共産国家郡 > kyousankokkagun\ ;
+仮装巡洋艦 > kasoujun''youkan\ ;
+教育基本法 > kyouikukihonhou\ ;
+生産者価格 > seisanshakakaku\ ;
+最小二乗法 > saishounijouhou\ ;
+主幹研究員 > shukankenkyuuin\ ;
+官僚主義者 > kanryoushugisha\ ;
+小選挙区制 > shousenkyokusei\ ;
+自転車操業 > jitenshasougyou\ ;
+世界新記録 > sekaishinkiroku\ ;
+商工会議所 > shoukoukaigisho\ ;
+弾劾裁判所 > dangaisaibansho\ ;
+保護関税率 > hogokanzeiritsu\ ;
+準禁治産者 > junkinchisansha\ ;
+議院内閣制 > giin''naikakusei\ ;
+生活保護法 > seikatsuhogohou\ ;
+共産主義者 > kyousanshugisha\ ;
+正安息香酸 > seiansokukousan\ ;
+公害病患者 > kougaibyoukanja\ ;
+財政投融資 > zaiseitouyuushi\ ;
+港湾労働者 > kouwanroudousha\ ;
+内陸性気候 > nairikuseikikou\ ;
+中央標準時 > chuuouhyoujunji\ ;
+投光照明器 > toukoushoumeiki\ ;
+総同盟罷業 > soudoumeihigyou\ ;
+最高裁判所 > saikousaibansho\ ;
+営団地下鉄 > eidanchikatetsu\ ;
+飽和化合物 > houwakagoubutsu\ ;
+金属探知機 > kinzokutanchiki\ ;
+浮動小数点 > fudoushousuuten\ ;
+言語心理学 > gengoshinrigaku\ ;
+一姫二太郎 > ichihimenitarou\ ;
+界面活性剤 > kaimenkasseizai\ ;
+人生案内欄 > jinseian''nairan\ ;
+一分二十秒 > ippun''nijuubyou\ ;
+南阿共和国 > nan''akyouwakoku\ ;
+主戦闘戦車 > shusentousensha\ ;
+比較言語学 > hikakugengogaku\ ;
+内政不干渉 > naiseifukanshou\ ;
+高等裁判所 > koutousaibansho\ ;
+球面幾何学 > kyuumenkikagaku\ ;
+電子顕微鏡 > denshikenbikyou\ ;
+労働生産性 > roudouseisansei\ ;
+平行四辺形 > heikoushihenkei\ ;
+感傷主義者 > kanshoushugisha\ ;
+学生自治会 > gakuseijichikai\ ;
+年金受給者 > nenkinjukyuusha\ ;
+非同期通信 > hidoukitsuushin\ ;
+三十年戦争 > sanjuunensensou\ ;
+閉所恐怖症 > heijokyoufushou\ ;
+司法研修所 > shihoukenshuujo\ ;
+低金利政策 > teikinriseisaku\ ;
+麻薬常用者 > mayakujouyousha\ ;
+長距離列車 > choukyoriressha\ ;
+懲罰委員会 > choubatsuiinkai\ ;
+有機化合物 > yuukikagoubutsu\ ;
+楽天主義者 > rakutenshugisha\ ;
+無条件降伏 > mujoukenkoufuku\ ;
+運転免許証 > untenmenkyoshou\ ;
+格闘戦部隊 > kakutousenbutai\ ;
+展示即売会 > tenjisokubaikai\ ;
+軍事境界線 > gunjikyoukaisen\ ;
+消費者団体 > shouhishadantai\ ;
+全体主義国 > zentaishugikoku\ ;
+不可侵条約 > fukashinjouyaku\ ;
+座席指定券 > zasekishiteiken\ ;
+帰国子女枠 > kikokushijowaku\ ;
+遺言補足書 > yuigonhosokusho\ ;
+炭鉱労働者 > tankouroudousha\ ;
+解析幾何学 > kaisekikikagaku\ ;
+経済性向上 > keizaiseikoujou\ ;
+地下核実験 > chikakakujikken\ ;
+比例代表制 > hireidaihyousei\ ;
+立憲君主政 > rikkenkunshusei\ ;
+魚雷発射管 > gyoraihasshakan\ ;
+損益分岐点 > son''ekibunkiten\ ;
+社会保険庁 > shakaihokenchou\ ;
+歩行者天国 > hokoushatengoku\ ;
+国民皆保険 > kokuminkaihoken\ ;
+単純再生産 > tanjunsaiseisan\ ;
+被選挙資格 > hisenkyoshikaku\ ;
+基準外賃金 > kijungaichingin\ ;
+熱帯低気圧 > nettaiteikiatsu\ ;
+現在完了時 > genzaikanryouji\ ;
+等辺三角形 > touhensankakkei\ ;
+日常茶飯事 > nichijousahanji\ ;
+連鎖状球菌 > rensajoukyuukin\ ;
+原爆犠牲者 > genbakugiseisha\ ;
+外国投資家 > gaikokutoushika\ ;
+電波天文学 > denpatenmongaku\ ;
+構造言語学 > kouzougengogaku\ ;
+地域冷暖房 > chiikireidanbou\ ;
+人工呼吸法 > jinkoukokyuuhou\ ;
+実証主義者 > jisshoushugisha\ ;
+支持力理論 > shijiryokuriron\ ;
+公開討論会 > koukaitouronkai\ ;
+文部科学省 > monbukagakushou\ ;
+特許明細書 > tokkyomeisaisho\ ;
+税制調査会 > zeiseichousakai\ ;
+発展途上国 > hattentojoukoku\ ;
+公共図書館 > koukyoutoshokan\ ;
+国内規格化 > kokunaikikakuka\ ;
+創立記念日 > souritsukinenbi\ ;
+金銭登録器 > kinsentourokuki\ ;
+労働組合法 > roudoukumiaihou\ ;
+素形材産業 > sokeizaisangyou\ ;
+交換貿易制 > koukanbouekisei\ ;
+現地駐在員 > genchichuuzaiin\ ;
+最小自乗法 > saishoujijouhou\ ;
+小型乗用車 > kogatajouyousha\ ;
+属性値行列 > zokusegyouretsu\ ;
+海軍兵学校 > kaigunheigakkou\ ;
+黄道十二宮 > koudoujuunikyuu\ ;
+出来高仕事 > dekidakashigoto\ ;
+資産負債表 > shisanfusaihyou\ ;
+版権所有者 > hankenshoyuusha\ ;
+信徒伝動者 > shintodendousha\ ;
+官能主義者 > kan''noushugisha\ ;
+聖霊降臨祭 > seireikourinsai\ ;
+流行性脳炎 > ryuukouseinouen\ ;
+記念論文集 > kinenronbunshuu\ ;
+自動連結機 > jidourenketsuki\ ;
+大陸性気候 > tairikuseikikou\ ;
+核兵器実験 > kakuheikijikken\ ;
+誇大妄想狂 > kodaimousoukyou\ ;
+身分証明書 > mibunshoumeisho\ ;
+文化人類学 > bunkajinruigaku\ ;
+第三次産業 > daisanjisangyou\ ;
+文化大革命 > bunkadaikakumei\ ;
+非局所分岐 > hikyokushobunki\ ;
+関係代名詞 > kankeidaimeishi\ ;
+多国籍言語 > takokusekigengo\ ;
+水銀気圧計 > suiginkiatsukei\ ;
+児童心理学 > jidoushinrigaku\ ;
+空洞化現象 > kuudoukagenshou\ ;
+無理方程式 > murihouteishiki\ ;
+交差対称性 > kousataishousei\ ;
+喧嘩両成敗 > kenkaryouseibai\ ;
+視聴覚機器 > shichoukakukiki\ ;
+染色体異常 > senshokutaiijou\ ;
+結婚適齢期 > kekkontekireiki\ ;
+漸近的自由 > zenkintekijiyuu\ ;
+社会民主党 > shakaiminshutou\ ;
+私設応援団 > shisetsuouendan\ ;
+経済同友会 > keizaidouyuukai\ ;
+反証可能性 > hanshoukanousei\ ;
+搬送周波数 > hansoushuuhasuu\ ;
+最高指導者 > saikoushidousha\ ;
+葡萄状球菌 > budoujoukyuukin\ ;
+全翼飛行機 > zen''yokuhikouki\ ;
+速効性肥料 > sokkouseihiryou\ ;
+遅効性肥料 > chikouseihiryou\ ;
+国粋主義者 > kokusuishugisha\ ;
+断弾性係数 > dandanseikeisuu\ ;
+二次方程式 > nijihouteishiki\ ;
+応用心理学 > ouyoushinrigaku\ ;
+精神異常者 > seishin''ijousha\ ;
+出生年月日 > shusseinengappi\ ;
+動詞状名詞 > doushijoumeishi\ ;
+自由裁量権 > jiyuusairyouken\ ;
+中央集権化 > chuuoushuukenka\ ;
+無利息証券 > murisokushouken\ ;
+仁義礼智信 > jingireichishin\ ;
+更年期障害 > kounenkishougai\ ;
+国語審議会 > kokugoshingikai\ ;
+地方裁判所 > chihousaibansho\ ;
+自動改札機 > jidoukaisatsuki\ ;
+未就学児童 > mishuugakujidou\ ;
+実時間処理 > jitsujikanshori\ ;
+預金準備率 > yokinjunbiritsu\ ;
+天体望遠鏡 > tentaibouenkyou\ ;
+社会諸科学 > shakaishokagaku\ ;
+法律事務所 > houritsujimusho\ ;
+実利主義者 > jitsurishugisha\ ;
+未確認情報 > mikakuninjouhou\ ;
+老人性痴呆 > roujinseichihou\ ;
+在外研究員 > zaigaikenkyuuin\ ;
+客観主義者 > kyakkanshugisha\ ;
+選手権大会 > senshukentaikai\ ;
+下級裁判所 > kakyuusaibansho\ ;
+逓降変圧器 > teikouhenatsuki\ ;
+限界顕微鏡 > genkaikenbikyou\ ;
+要撃戦闘機 > yougekisentouki\ ;
+不公平競争 > fukouheikyousou\ ;
+公認会計士 > kouninkaikeishi\ ;
+犯行声明文 > hankouseimeibun\ ;
+消費者価格 > shouhishakakaku\ ;
+音楽評論家 > ongakuhyouronka\ ;
+公安調査庁 > kouanchousachou\ ;
+乗降車優先 > joukoushayuusen\ ;
+人工甘味料 > jinkoukanmiryou\ ;
+在郷軍人会 > zaigougunjinkai\ ;
+自記湿度計 > jikishitsudokei\ ;
+大統一理論 > daitouitsuriron\ ;
+検定教科書 > kenteikyoukasho\ ;
+医学技術士 > igakugijutsushi\ ;
+天皇誕生日 > ten''noutanjoubi\ ;
+太平洋地域 > taiheiyouchiiki\ ;
+資産再評価 > shisansaihyouka\ ;
+情緒障害児 > jouchoshougaiji\ ;
+日本国憲法 > nihonkokukenpou\ ;
+人民解放軍 > jinminkaihougun\ ;
+絶対君主制 > zettaikunshusei\ ;
+芸術愛好家 > geijutsuaikouka\ ;
+私生児出産 > shiseijishussan\ ;
+両院協議会 > ryouinkyougikai\ ;
+小田原提灯 > odawaradjouchin\ ;
+貨物自動車 > kamotsujidousha\ ;
+片手間仕事 > katatemashigoto\ ;
+神経回路網 > shinkeikairomou\ ;
+炭素化合物 > tansokagoubutsu\ ;
+気管支喘息 > kikanshizensoku\ ;
+不動産業者 > fudousangyousha\ ;
+海洋気象台 > kaiyoukishoudai\ ;
+自動翻訳機 > jidouhon''yakuki\ ;
+縄文式土器 > joumonshikidoki\ ;
+輸入課徴金 > yunyuukachoukin\ ;
+重商主義者 > juushoushugisha\ ;
+遺産相続税 > isansouzokuzei\ ;
+毘廬遮那仏 > birushanabutsu\ ;
+関税自主権 > kanzeijishuken\ ;
+基本周波数 > kihonshuuhasuu\ ;
+四輪駆動車 > yonrinkudousha\ ;
+静電気防止 > seidenkiboushi\ ;
+煙突掃除夫 > entotsusoujifu\ ;
+休戦記念日 > kyuusenkinenbi\ ;
+学校群制度 > gakkougunseido\ ;
+放射線技師 > houshasengishi\ ;
+家庭裁判所 > kateisaibansho\ ;
+長距離打者 > choukyoridasha\ ;
+日本標準時 > nihonhyoujunji\ ;
+誘導電動機 > yuudoudendouki\ ;
+建国記念日 > kenkokukinenbi\ ;
+伝統主義者 > dentoushugisha\ ;
+登記番号欄 > toukibangouran\ ;
+歩行者優先 > hokoushayuusen\ ;
+無人宇宙船 > mujin''uchuusen\ ;
+羅萄日辞典 > raponichijiten\ ;
+温暖化現象 > ondankagenshou\ ;
+婦人参政権 > fujinsanseiken\ ;
+自由民主党 > jiyuuminshutou\ ;
+個体発生論 > kotaihasseiron\ ;
+大威徳妙王 > daiitokumyouou\ ;
+大韓航空機 > taikankoukuuki\ ;
+不特定多数 > futokuteitasuu\ ;
+主情主義者 > shujoushugisha\ ;
+法定代理人 > houteidairinin\ ;
+公開図書館 > koukaitoshokan\ ;
+一時間以内 > ichijikan''inai\ ;
+数理言語学 > suurigengogaku\ ;
+遺産相続人 > isansouzokunin\ ;
+方向探知器 > houkoutanchiki\ ;
+熱可塑樹脂 > netsukasojushi\ ;
+無機化合物 > mukikagoubutsu\ ;
+重要文化財 > juuyoubunkazai\ ;
+居間兼食堂 > imakenshokudou\ ;
+異方導電膜 > ihoudoudenmaku\ ;
+指示代名詞 > shijidaimeishi\ ;
+回復不可能 > kaifukufukanou\ ;
+拝金主義者 > haikinshugisha\ ;
+人道主義者 > jindoushugisha\ ;
+中央分離帯 > chuuoubunritai\ ;
+温帯低気圧 > ontaiteikiatsu\ ;
+超国家主義 > choukokkashugi\ ;
+利害関係者 > rigaikankeisha\ ;
+衆議員議長 > shuugiingichou\ ;
+導波管定数 > douhakanteisuu\ ;
+丁字形定規 > teijigatajougi\ ;
+簡易裁判所 > kan''isaibansho\ ;
+反動主義者 > handoushugisha\ ;
+音楽図書館 > ongakutoshokan\ ;
+乗用自動車 > jouyoujidousha\ ;
+圧倒的多数 > attoutekitasuu\ ;
+非政府組織 > hiseifusoshiki\ ;
+自由労働者 > jiyuuroudousha\ ;
+博愛主義者 > hakuaishugisha\ ;
+定期乗車券 > teikijoushaken\ ;
+電気洗濯機 > denkisentakuki\ ;
+終戦記念日 > shuusenkinenbi\ ;
+社会主義者 > shakaishugisha\ ;
+小型自動車 > kogatajidousha\ ;
+民事訴訟法 > minjisoshouhou\ ;
+第二量子化 > dainiryoushika\ ;
+二原子分子 > nigenshibunshi\ ;
+常任指揮者 > jouninshikisha\ ;
+農事試験場 > noujishikenjou\ ;
+情報化社会 > jouhoukashakai\ ;
+主観主義者 > shukanshugisha\ ;
+無教会主義 > mukyoukaishugi\ ;
+米価審議会 > beikashingikai\ ;
+時間外労働 > jikangairoudou\ ;
+百科全書派 > hyakkazenshoha\ ;
+二百二十日 > nihyakuhatsuka\ ;
+二重価格制 > nijuukakakusei\ ;
+刑事訴訟法 > keijisoshouhou\ ;
+販売代理店 > hanbaidairiten\ ;
+東亜諸民族 > touashominzoku\ ;
+単葉飛行機 > tan''youhikouki\ ;
+国会議事録 > kokkaigijiroku\ ;
+政府保証債 > seifuhoshousai\ ;
+便乗主義者 > binjoushugisha\ ;
+二大政党制 > nidaiseitousei\ ;
+無利息公債 > murisokukousai\ ;
+足素性原理 > ashisujougenri\ ;
+資本主義者 > shihonshugisha\ ;
+文化地理学 > bunkachirigaku\ ;
+公認候補者 > kouninkouhosha\ ;
+世界選手権 > sekaisenshuken\ ;
+新石器時代 > shinsekkijidai\ ;
+受験参考書 > jukensankousho\ ;
+静止画放送 > seishigahousou\ ;
+少年感化院 > shounenkankain\ ;
+長距離輸送 > choukyoriyusou\ ;
+再帰代名詞 > saikidaimeishi\ ;
+控訴裁判所 > kousohaibansho\ ;
+文化功労者 > bunkakourousha\ ;
+真空掃除機 > shinkuusoujiki\ ;
+人形浄瑠璃 > ningyoujoururi\ ;
+政治評論家 > seijihyouronka\ ;
+伝承叙事詩 > denshoujojishi\ ;
+有視界飛行 > yuushikaihikou\ ;
+降三世妙王 > gouzanzemyouou\ ;
+等高線地図 > toukousenchizu\ ;
+製造年月日 > seizounengappi\ ;
+地方交付税 > chihoukoufuzei\ ;
+日本語教本 > nihongokyouhon\ ;
+俘虜収容所 > furyoshuuyoujo\ ;
+空気圧縮機 > kuukiasshukuki\ ;
+国連記念日 > kokurenkinenbi\ ;
+無記名投票 > mukimeitouhyou\ ;
+自然主義者 > shizenshugisha\ ;
+管区気象台 > kankukishoudai\ ;
+法定準備金 > houteijunbikin\ ;
+海洋性気候 > kaiyouseikikou\ ;
+外貨準備高 > gaikajunbidaka\ ;
+旅行代理店 > ryokoudairiten\ ;
+予選通過者 > yosentsuukasha\ ;
+女性解放論 > joseikaihouron\ ;
+遺伝子治療 > idenshichiryou\ ;
+絶対主義者 > zettaishugisha\ ;
+共同炊事場 > kyoudousuijiba\ ;
+福祉事務所 > fukushijimusho\ ;
+三角系異常 > sankakukeiijou\ ;
+水産試験所 > suisanshikenjo\ ;
+軍事裁判所 > gunjisaibansho\ ;
+隠退蔵物資 > intaizoubusshi\ ;
+参考図書館 > sankoutoshokan\ ;
+無線周波数 > musenshuuhasuu\ ;
+重農主義者 > juunoushugisha\ ;
+乗合自動車 > noriaijidousha\ ;
+細胞遺伝学 > saibouidengaku\ ;
+超音波洗浄 > chouonpasenjou\ ;
+刑事被告人 > keijihikokunin\ ;
+群伝搬時間 > gundenpanjikan\ ;
+健康保険法 > kenkouhokenhou\ ;
+常任理事国 > jouninrijikoku\ ;
+非金属元素 > hikinzokugenso\ ;
+陸上自衛隊 > rikujoujieitai\ ;
+保険勧誘員 > hokenkan''yuuin\ ;
+窒素固定法 > chissokoteihou\ ;
+相対性原理 > soutaiseigenri\ ;
+美術愛好家 > bijutsuaikouka\ ;
+中石器時代 > chuusekkijidai\ ;
+主知主義者 > shuchishugisha\ ;
+蚕糸試験所 > sanshishikenjo\ ;
+立体幾何学 > rittaikikagaku\ ;
+不動産鑑定 > fudousankantei\ ;
+長距離飛行 > choukyorihikou\ ;
+第二次性徴 > dainijiseichou\ ;
+句構造文法 > kukouzoubunpou\ ;
+士官候補生 > shikankouhosei\ ;
+巡回図書館 > junkaitoshokan\ ;
+徴兵忌避者 > chouheikihisha\ ;
+出訴期限法 > shussokigenhou\ ;
+軍用輸送機 > gun''youyusouki\ ;
+言語地理学 > gengochirigaku\ ;
+前方後円墳 > zenpoukouenfun\ ;
+虫様突起炎 > chuuyoutokkien\ ;
+有形文化財 > yuukeibunkazai\ ;
+旧石器時代 > kyuusekkijidai\ ;
+自由民権論 > jiyuuminkenron\ ;
+破産裁判所 > hasansaibansho\ ;
+人身保護法 > jinshinhogohou\ ;
+放射性元素 > houshaseigenso\ ;
+捕虜収容所 > horyoshuuyoujo\ ;
+生計費指数 > seikeihishisuu\ ;
+国会図書館 > kokkaitoshokan\ ;
+高等弁務官 > koutoubenmukan\ ;
+時間順序積 > jikanjunjoseki\ ;
+地球温暖化 > chikyuuondanka\ ;
+非常勤講師 > hijoukinkoushi\ ;
+自動車学校 > jidoushagakkou\ ;
+税金避難地 > zeikinhinanchi\ ;
+人道的援助 > jindoutekienjo\ ;
+消費者運動 > shouhishaundou\ ;
+労働基準法 > roudoukijunhou\ ;
+漢字制限論 > kanjiseigenron\ ;
+周波数偏移 > shuuhasuuhen''i\ ;
+無制限貿易 > museigenboueki\ ;
+次元正則化 > jigenseisokuka\ ;
+人名用漢字 > jinmeiyoukanji\ ;
+征夷大将軍 > seiitaishougun\ ;
+産業予備軍 > sangyouyobigun\ ;
+利子平衡税 > rishiheikouzei\ ;
+無任所大臣 > muninshodaijin\ ;
+二重盲検法 > nijuumoukenhou\ ;
+自賠責保険 > jibaisekihoken\ ;
+重炭酸曹達 > juutansansouda\ ;
+長距離電話 > choukyoridenwa\ ;
+遺伝子工学 > idenshikougaku\ ;
+不可能選択 > fukanousentaku\ ;
+句構造規則 > kukouzoukisoku\ ;
+手形交換所 > tegatakoukanjo\ ;
+地方自治体 > chihoujichitai\ ;
+不規則動詞 > fukisokudoushi\ ;
+完全主義者 > kanzenshugisha\ ;
+構成素構造 > kouseisokouzou\ ;
+載貨吃水線 > saikakissuisen\ ;
+水銀温度計 > suigin''ondokei\ ;
+数理論理学 > suurironrigaku\ ;
+皇太子殿下 > koutaishidenka\ ;
+戦争未亡人 > sensoumiboujin\ ;
+破産管財人 > hasankanzainin\ ;
+協定世界時 > kyouteisekaiji\ ;
+海上保安庁 > kaijouhoanchou\ ;
+特異値分解 > tokuichibunkai\ ;
+民営化企業 > min''eikakigyou\ ;
+大西洋横断 > taiseiyououdan\ ;
+人工避妊法 > jinkouhininhou\ ;
+魚群探知機 > gyoguntanchiki\ ;
+遊離基反応 > yuurikihan''nou\ ;
+小田原評定 > odawarahyoujou\ ;
+騒音防止法 > souonboushihou\ ;
+疑問代名詞 > gimondaimeishi\ ;
+相対性理論 > soutaiseiriron\ ;
+酸化防止剤 > sankaboushizai\ ;
+第二次産業 > dainijisangyou\ ;
+有機塩溶媒 > yuukien''youbai\ ;
+電子計算機 > denshikeisanki\ ;
+戦闘犠牲者 > sentougiseisha\ ;
+民間航空機 > minkankoukuuki\ ;
+反戦主義者 > hansenshugisha\ ;
+観光案内所 > kankouan''naijo\ ;
+高齢化社会 > koureikashakai\ ;
+記号論理学 > kigouronrigaku\ ;
+指名手配人 > shimeitehaijin\ ;
+自転車旅行 > jitensharyokou\ ;
+平均太陽時 > heikintaiyouji\ ;
+好気性細菌 > koukiseisaikin\ ;
+電波望遠鏡 > denpabouenkyou\ ;
+労働運動者 > roudouundousha\ ;
+震災記念日 > shinsaikinenbi\ ;
+悪徳政治家 > akutokuseijika\ ;
+情報主要素 > jouhoushuyouso\ ;
+公武合体論 > koubugattairon\ ;
+電光掲示板 > denkoukeijiban\ ;
+価電子状態 > kadenshijoutai\ ;
+水産加工品 > suisankakouhin\ ;
+平面幾何学 > heimenkikagaku\ ;
+自転車置場 > jitenshaokiba\ ;
+教育委員会 > kyouikuiinkai\ ;
+水上飛行機 > suijouhikouki\ ;
+厭世悲観者 > enseihikansha\ ;
+後期印象派 > koukiinshouha\ ;
+大規模戦争 > daikibosensou\ ;
+無担保社債 > mutanposhasai\ ;
+遠心分離機 > enshinbunriki\ ;
+電気冷蔵庫 > denkireizouko\ ;
+最低温度計 > saiteiondokei\ ;
+顧問弁護士 > komonbengoshi\ ;
+二硫化炭素 > niryuukatanso\ ;
+早期警戒機 > soukikeikaiki\ ;
+構造遺伝子 > kouzouidenshi\ ;
+青銅器時代 > seidoukijidai\ ;
+会計検査院 > kaikeikensain\ ;
+首位攻防戦 > shuikoubousen\ ;
+全方位外交 > zenhouigaikou\ ;
+無人化工場 > mujinkakoujou\ ;
+火事場泥棒 > kajibadorobou\ ;
+人工栄養児 > jinkoueiyouji\ ;
+欧米諸言語 > oubeishogengo\ ;
+人工孵化法 > jinkoufukahou\ ;
+軍事顧問団 > gunjikomondan\ ;
+高層天気図 > kousoutenkizu\ ;
+仮面舞踏会 > kamenbutoukai\ ;
+作業部会案 > sagyoubukaian\ ;
+映画評論家 > eigahyouronka\ ;
+第二次大戦 > dainijitaisen\ ;
+野次馬根性 > yajiumakonjou\ ;
+英会話学校 > eikaiwagakkou\ ;
+前方不注意 > zenpoufuchuui\ ;
+地方公務員 > chihoukoumuin\ ;
+自動販売機 > jidouhanbaiki\ ;
+電磁調理器 > denjichouriki\ ;
+航空自衛隊 > koukuujieitai\ ;
+機関投資家 > kikantoushika\ ;
+回路遮断機 > kairoshadanki\ ;
+聖路加病院 > seirokabyouin\ ;
+分離主義者 > bunrishugisha\ ;
+憲法記念日 > kenpoukinenbi\ ;
+加減抵抗器 > kagenteikouki\ ;
+自動販売器 > jidouhanbaiki\ ;
+無免許運転 > mumenkyounten\ ;
+不可視光線 > fukashikousen\ ;
+貿易自由化 > bouekijiyuuka\ ;
+空気制動機 > kuukiseidouki\ ;
+五十歩百歩 > gojuppohyappo\ ;
+原理主義者 > genrishugisha\ ;
+多元文化論 > tagenbunkaron\ ;
+譲渡性預金 > joutoseiyokin\ ;
+国家主義者 > kokkashugisha\ ;
+沿岸警備隊 > engankeibitai\ ;
+個人主義者 > kojinshugisha\ ;
+外交委員長 > gaikouiinchou\ ;
+無抵抗主義 > muteikoushugi\ ;
+放射能汚染 > houshanouosen\ ;
+電気自動車 > denkijidousha\ ;
+優生保護法 > yuuseihogohou\ ;
+地方事務所 > chihoujimusho\ ;
+輸入自由化 > yunyuujiyuuka\ ;
+無利息債務 > murisokusaimu\ ;
+硫黄酸化物 > iousankabutsu\ ;
+道路掃除人 > dourosoujijin\ ;
+仁輪加狂言 > niwakakyougen\ ;
+自自公３党 > jijikousantou\ ;
+気管支肺炎 > kikanshihaien\ ;
+多重債務者 > tajuusaimusha\ ;
+諮問委員会 > shimon''iinkai\ ;
+高高度飛行 > koukoudohikou\ ;
+国会議事堂 > kokkaigijidou\ ;
+二十四節気 > nijuushisekki\ ;
+無形文化財 > mukeibunkazai\ ;
+市場自由化 > shijoujiyuuka\ ;
+経営多角化 > keieitakakuka\ ;
+主我主義者 > shugashugisha\ ;
+暗号化手法 > angoukashuhou\ ;
+不見転芸者 > mizutengeisha\ ;
+功利主義者 > kourishugisha\ ;
+自動車保険 > jidoushahoken\ ;
+自己顕示欲 > jikokenjiyoku\ ;
+無配当保険 > muhaitouhoken\ ;
+果樹栽培者 > kajusaibaisha\ ;
+裁判官忌避 > saibankankihi\ ;
+非武装地帯 > hibusouchitai\ ;
+空気清浄機 > kuukiseijouki\ ;
+一事不再議 > ichijifusaigi\ ;
+創建記念日 > soukenkinenbi\ ;
+普遍妥当性 > fuhendatousei\ ;
+原子破壊機 > genshihakaiki\ ;
+結婚記念日 > kekkonkinenbi\ ;
+大雨注意報 > ooamechuuihou\ ;
+米東部時間 > beitoubujikan\ ;
+劣性遺伝子 > resseiidenshi\ ;
+無価値資産 > mukachishisan\ ;
+健康保険医 > kenkouhoken''i\ ;
+常任委員会 > jounin''iinkai\ ;
+自由主義者 > jiyuushugisha\ ;
+短波受信機 > tanpajushinki\ ;
+破壊主義者 > hakaishugisha\ ;
+御都合主義 > gotsugoushugi\ ;
+二十日大根 > hatsukadaikon\ ;
+落下傘部隊 > rakkasanbutai\ ;
+長距離依存 > choukyoriizon\ ;
+符号変換器 > fugouhenkanki\ ;
+送金小切手 > soukinkogitte\ ;
+対戦車火器 > taisenshakaki\ ;
+弗化水素酸 > fukkasuisosan\ ;
+相補性原理 > souhoseigenri\ ;
+蒸気機関車 > joukikikansha\ ;
+文化事業部 > bunkajigyoubu\ ;
+無記名社債 > mukimeishasai\ ;
+合同慰霊祭 > goudouireisai\ ;
+火災報知機 > kasaihouchiki\ ;
+電波探知機 > denpatanchiki\ ;
+可変抵抗器 > kahenteikouki\ ;
+公務員試験 > koumuinshiken\ ;
+宇宙飛行士 > uchuuhikoushi\ ;
+看護婦学院 > kangofugakuin\ ;
+十字軍騎士 > juujigunkishi\ ;
+無機高分子 > mukikoubunshi\ ;
+火災報知器 > kasaihouchiki\ ;
+電波探知器 > denpatanchiki\ ;
+指揮所演習 > shikijoenshuu\ ;
+二酸化窒素 > nisankachisso\ ;
+自動車電話 > jidoushadenwa\ ;
+情報可視化 > jouhoukashika\ ;
+摂氏２０度 > sesshinijuudo\ ;
+小型赤家蚊 > kogataakaieka\ ;
+結婚披露宴 > kekkonhirouen\ ;
+海上自衛隊 > kaijoujieitai\ ;
+原案委員会 > gen''an''iinkai\ ;
+選手権試合 > senshukenjiai\ ;
+日和見主義 > hiyorimishugi\ ;
+仮装舞踏会 > kasoubutoukai\ ;
+遮光器土偶 > shakoukidoguu\ ;
+下水処理場 > gesuishorijou\ ;
+合理主義者 > gourishugisha\ ;
+楽器演奏者 > gakkiensousha\ ;
+古典主義者 > kotenshugisha\ ;
+国土地理院 > kokudochiriin\ ;
+市街化区域 > shigaikakuiki\ ;
+電気機関車 > denkikikansha\ ;
+弥次馬根性 > yajiumakonjou\ ;
+開校記念日 > kaikoukinenbi\ ;
+不可知論者 > fukachironsha\ ;
+無記名債権 > mukimeisaiken\ ;
+全波受信機 > zenpajushinki\ ;
+平和主義者 > heiwashugisha\ ;
+青天井予算 > aotenjouyosan\ ;
+状況意味論 > joukyouimiron\ ;
+漢字文化圏 > kanjibunkaken\ ;
+歯科技工士 > shikagikoushi\ ;
+海上輸送路 > kaijouyusouro\ ;
+調停委員会 > chouteiiinkai\ ;
+行方不明者 > yukuefumeisha\ ;
+個人的意見 > kojintekiiken\ ;
+北国赤海老 > hokkokuakaebi\ ;
+使途不明金 > shitofumeikin\ ;
+民主化運動 > minshukaundou\ ;
+天気相談所 > tenkisoudanjo\ ;
+参加希望者 > sankakibousha\ ;
+懐疑主義者 > kaigishugisha\ ;
+市議会議員 > shigikaigiin\ ;
+中央委員会 > chuuouiinkai\ ;
+胃酸過多症 > isankatashou\ ;
+電気陰性度 > denkiinseido\ ;
+無記名預金 > mukimeiyokin\ ;
+利己主義者 > rikoshugisha\ ;
+国家公務員 > kokkakoumuin\ ;
+希土類元素 > kidoruigenso\ ;
+電気掃除機 > denkisoujiki\ ;
+薔薇十字団 > barajuujidan\ ;
+富士火山帯 > fujikazantai\ ;
+星座投影機 > seizatoueiki\ ;
+欧州委員会 > oushuuiinkai\ ;
+上位互換性 > jouigokansei\ ;
+放射線科医 > houshasenkai\ ;
+火炎放射器 > kaenhoushaki\ ;
+合同委員会 > goudouiinkai\ ;
+遺産管理人 > isankanrinin\ ;
+貿易依存度 > bouekiizondo\ ;
+労働委員会 > roudouiinkai\ ;
+模型飛行機 > mokeihikouki\ ;
+下位範疇化 > kaihanchuuka\ ;
+非営利団体 > hieiridantai\ ;
+亜熱帯気候 > anettaikikou\ ;
+無政府主義 > museifushugi\ ;
+移動図書館 > idoutoshokan\ ;
+実行委員会 > jikkouiinkai\ ;
+留守番電話 > rusubandenwa\ ;
+検討委員会 > kentouiinkai\ ;
+衆議院議員 > shuugiingiin\ ;
+選考委員会 > senkouiinkai\ ;
+類義語辞典 > ruigigojiten\ ;
+右方高麗楽 > uhoukomagaku\ ;
+肥厚性鼻炎 > hikouseibien\ ;
+亜酸化窒素 > asankachisso\ ;
+安定同位体 > anteidouitai\ ;
+文字符号系 > mojifugoukei\ ;
+医療輸送機 > iryouyusouki\ ;
+過酸化水素 > kasankasuiso\ ;
+代理委任状 > dairiininjou\ ;
+亜寒帯気候 > akantaikikou\ ;
+高音部記号 > kouonbukigou\ ;
+位相幾何学 > isoukikagaku\ ;
+伊勢大神宮 > isedaijinguu\ ;
+二酸化炭素 > nisankatanso\ ;
+低音部記号 > teionbukigou\ ;
+愛他主義者 > aitashugisha\ ;
+主意主義者 > shuishugisha\ ;
+次酸化炭素 > jisankatanso\ ;
+治安維持法 > chian''ijihou\ ;
+井戸端会議 > idobatakaigi\ ;
+度数分布図 > dosuubunpuzu\ ;
+自動車事故 > jidoushajiko\ ;
+農地委員会 > nouchiiinkai\ ;
+債務不履行 > saimufurikou\ ;
+一酸化炭素 > issankatanso\ ;
+付加価値税 > fukakachizei\ ;
+常置委員会 > jouchiiinkai\ ;
+公安委員会 > kouan''iinkai\ ;
+非営利事業 > hieirijigyou\ ;
+経営合理化 > keieigourika\ ;
+弁護依頼人 > bengoirainin\ ;
+利他主義者 > ritashugisha\ ;
+尊皇王攘夷 > son''noujoui\ ;
+非開示合意 > hikaijigoui\ ;
+見様見真似 > miyoumimane\ ;
+阿呆陀羅経 > ahodarakyou\ ;
+法務委員会 > houmuiinkai\ ;
+脊黄青鸚哥 > sekiseiinko\ ;
+屋根裏部屋 > yaneurabeya\ ;
+阿多福風邪 > otafukukaze\ ;
+不随意運動 > fuzuiiundou\ ;
+日本語文字 > nihongomoji\ ;
+平和維持軍 > heiwaijigun\ ;
+耳鼻咽喉科 > jibiinkouka\ ;
+参議院議員 > sangiingiin\ ;
+江戸前寿司 > edomaezushi\ ;
+自記温度計 > jikiondokei\ ;
+準備委員会 > junbiiinkai\ ;
+下位互換性 > kaigokansei\ ;
+亜鉛華軟膏 > aenkanankou\ ;
+亜米利加杉 > amerikasugi\ ;
+摩訶不思議 > makafushigi\ ;
+産婦人科医 > sanfujinkai\ ;
+運営委員会 > un''eiiinkai\ ;
+同音異義語 > douon''igigo\ ;
+出来不出来 > dekifudeki\ ;
+御高祖頭巾 > okosozukin\ ;
+二酸化硫黄 > nisankaiou\ ;
+十重二十重 > toehatae\ ;
+長日植物 > choujitsushokubutsu\ ;
+律令格式 > ritsuryoukyakushiki\ ;
+食肉植物 > shokunikushokubutsu\ ;
+直接接続 > chokusetsusetsuzoku\ ;
+食虫植物 > shokuchuushokubutsu\ ;
+一日一日 > ichinichiichinichi\ ;
+短日植物 > tanjitsushokubutsu\ ;
+標準出力 > hyoujunshutsuryoku\ ;
+信賞必罰 > shinshouhitsubatsu\ ;
+特徴抽出 > tokuchouchuushutsu\ ;
+着生植物 > chakuseishokubutsu\ ;
+実物取引 > jitsubutsutorihiki\ ;
+直接接触 > chokusetsusesshoku\ ;
+貸付信託 > kashitsukeshintaku\ ;
+即日速達 > sokujitsusokutatsu\ ;
+百発百中 > hyappatsuhyakuchuu\ ;
+取締役会 > torishimariyakukai\ ;
+出力装置 > shutsuryokusouchi\ ;
+複雑骨折 > fukuzatsukossetsu\ ;
+物的流通 > butsutekiryuutsuu\ ;
+十年一昔 > juunenhitomukashi\ ;
+祥月命日 > shoutsukimeinichi\ ;
+戦略物質 > senryakubusshitsu\ ;
+就職活動 > shuushokukatsudou\ ;
+弱肉強食 > jakunikukyoushoku\ ;
+伸縮税率 > shinshukuzeiritsu\ ;
+神出鬼没 > shinshutsukibotsu\ ;
+吸血動物 > kyuuketsudoubutsu\ ;
+熱力学的 > netsurikigakuteki\ ;
+植物採集 > shokubutsusaishuu\ ;
+出力端子 > shutsuryokutanshi\ ;
+標準入力 > hyoujun''nyuuryoku\ ;
+観葉植物 > kan''youshokubutsu\ ;
+七生報国 > shichishouhoukoku\ ;
+実物描写 > jitsubutsubyousha\ ;
+殺真菌薬 > satsushinkin''yaku\ ;
+標本抽出 > hyouhonchuushutsu\ ;
+総括質問 > soukatsushitsumon\ ;
+潮力発電 > chouryokuhatsuden\ ;
+直接購入 > chokusetsukounyuu\ ;
+窮極目的 > kyuukyokumokuteki\ ;
+天照大神 > amaterasuoomikami\ ;
+質実剛健 > shitsujitsugouken\ ;
+局外中立 > kyokugaichuuritsu\ ;
+色彩調節 > shikisaichousetsu\ ;
+薬用植物 > yakuyoushokubutsu\ ;
+秋霜烈日 > shuusouretsujitsu\ ;
+直接請求 > chokusetsuseikyuu\ ;
+宗教哲学 > shuukyoutetsugaku\ ;
+薬物中毒 > yakubutsuchuudoku\ ;
+小心翼翼 > shoushin''yokuyoku\ ;
+特別幕僚 > tokubetsubakuryou\ ;
+分裂物質 > bunretsubusshitsu\ ;
+直接照明 > chokusetsushoumei\ ;
+嘱託殺人 > shokutakusatsujin\ ;
+湿生植物 > shisseishokubutsu\ ;
+七十人訳 > shichijuunin''yaku\ ;
+発癌物質 > hatsuganbusshitsu\ ;
+白長須鯨 > shironagasukujira\ ;
+観賞植物 > kanshoushokubutsu\ ;
+心神喪失 > shinshinsoushitsu\ ;
+通俗小説 > tsuuzokushousetsu\ ;
+百戦百勝 > hyakusenhyakushou\ ;
+提灯行列 > chouchingyouretsu\ ;
+失業対策 > shitsugyoutaisaku\ ;
+小心翼々 > shoushin''yokuyoku\ ;
+左側通行 > hidarigawatsuukou\ ;
+救出作戦 > kyuushutsusakusen\ ;
+室内装飾 > shitsunaisoushoku\ ;
+直接競争 > chokusetsukyousou\ ;
+旭日昇天 > kyokujitsushouten\ ;
+蘚苔植物 > sentaishokubutsu\ ;
+研究室棟 > kenkyuushitsutou\ ;
+西側諸国 > nishigawashokoku\ ;
+脊椎動物 > sekitsuidoubutsu\ ;
+桑原桑原 > kuwabarakuwabara\ ;
+享楽生活 > kyourakuseikatsu\ ;
+入力電流 > nyuuryokudenryuu\ ;
+十年一日 > juunen''ichijitsu\ ;
+風俗小説 > fuuzokushousetsu\ ;
+低血圧症 > teiketsuatsushou\ ;
+虚々実々 > kyokyojitsujitsu\ ;
+技術協力 > gijutsukyouryoku\ ;
+空中衝突 > kuuchuushoutotsu\ ;
+千篇一律 > senpen''ichiritsu\ ;
+料理教室 > ryourikyoushitsu\ ;
+本格小説 > honkakushousetsu\ ;
+国立劇場 > kokuritsugekijou\ ;
+草食動物 > soushokudoubutsu\ ;
+直接選挙 > chokusetsusenkyo\ ;
+生者必滅 > shoujahitsumetsu\ ;
+熱帯植物 > nettaishokubutsu\ ;
+松下電工 > matsushitadenkou\ ;
+商業算術 > shougyousanjutsu\ ;
+戦戦栗栗 > sensenritsuritsu\ ;
+揮発物質 > kihatsubusshitsu\ ;
+発光植物 > hakkoushokubutsu\ ;
+電力供給 > denryokukyoukyuu\ ;
+戦略爆撃 > senryakubakugeki\ ;
+妊娠中絶 > ninshinchuuzetsu\ ;
+直接会談 > chokusetsukaidan\ ;
+割増賃金 > warimashichingin\ ;
+作付面積 > sakudzukemenseki\ ;
+日独協会 > nichidokukyoukai\ ;
+日常生活 > nichijouseikatsu\ ;
+歳入歳出 > sainyuusaishutsu\ ;
+特別急行 > tokubetsukyuukou\ ;
+転出証明 > tenshutsushoumei\ ;
+救荒作物 > kyuukousakumotsu\ ;
+地熱発電 > chinetsuhatsuden\ ;
+薬物療法 > yakubutsuryouhou\ ;
+食糧配給 > shokuryouhaikyuu\ ;
+直系血族 > chokkeiketsuzoku\ ;
+質問用紙 > shitsumon''youshi\ ;
+独身生活 > dokushinseikatsu\ ;
+警察当局 > keisatsutoukyoku\ ;
+直接伝染 > chokusetsudensen\ ;
+青空教室 > aozorakyoushitsu\ ;
+非嫡出子 > hichakushutsushi\ ;
+生活様式 > seikatsuyoushiki\ ;
+片道料金 > katamichiryoukin\ ;
+原油流出 > gen''yuryuushutsu\ ;
+略式命令 > ryakushikimeirei\ ;
+芸術活動 > geijutsukatsudou\ ;
+歴史哲学 > rekishitetsugaku\ ;
+下町言葉 > shitamachikotoba\ ;
+緊急着陸 > kinkyuuchakuriku\ ;
+冷血動物 > reiketsudoubutsu\ ;
+取扱注意 > toriatsukaichuui\ ;
+割増料金 > warimashiryoukin\ ;
+直截簡明 > chokusetsukanmei\ ;
+黄道吉日 > koudoukichinichi\ ;
+一触即発 > isshokusokuhatsu\ ;
+即日開票 > sokujitsukaihyou\ ;
+実質賃金 > jisshitsuchingin\ ;
+教養小説 > kyouyoushousetsu\ ;
+抽象芸術 > chuushougeijutsu\ ;
+直接支配 > chokusetsushihai\ ;
+集団就職 > shuudanshuushoku\ ;
+水生植物 > suiseishokubutsu\ ;
+職務質問 > shokumushitsumon\ ;
+乾生植物 > kanseishokubutsu\ ;
+宿泊設備 > shukuhakusetsubi\ ;
+国立大学 > kokuritsudaigaku\ ;
+一言二言 > hitokotofutakoto\ ;
+正面衝突 > shoumenshoutotsu\ ;
+一日千秋 > ichinichisenshuu\ ;
+商業目的 > shougyoumokuteki\ ;
+複式学級 > fukushikigakkyuu\ ;
+卒業証書 > sotsugyoushousho\ ;
+焼肉定食 > yakinikuteishoku\ ;
+表面張力 > hyoumenchouryoku\ ;
+特別番組 > tokubetsubangumi\ ;
+学習能力 > gakushuunouryoku\ ;
+信用取引 > shin''youtorihiki\ ;
+高血圧症 > kouketsuatsushou\ ;
+中心人物 > chuushinjinbutsu\ ;
+食料品商 > shokuryouhinshou\ ;
+超現実的 > chougenjitsuteki\ ;
+即身成仏 > sokushinjoubutsu\ ;
+国外脱出 > kokugaidasshutsu\ ;
+直接回答 > chokusetsukaitou\ ;
+先物取引 > sakimonotorihiki\ ;
+歴史小説 > rekishishousetsu\ ;
+煮沸消毒 > shafutsushoudoku\ ;
+海外進出 > kaigaishinshutsu\ ;
+水力発電 > suiryokuhatsuden\ ;
+形質導入 > keishitsudounyuu\ ;
+直接関係 > chokusetsukankei\ ;
+直接簡明 > chokusetsukanmei\ ;
+振替休日 > furikaekyuujitsu\ ;
+千編一律 > senpen''ichiritsu\ ;
+郵便小包 > yuubinkodzutsumi\ ;
+単一神教 > tan''itsushinkyou\ ;
+虚弱体質 > kyojakutaishitsu\ ;
+脊索動物 > sekisakudoubutsu\ ;
+武力衝突 > buryokushoutotsu\ ;
+熱核反応 > netsukakuhan''nou\ ;
+種子植物 > shushishokubutsu\ ;
+直接行動 > chokusetsukoudou\ ;
+求職広告 > kyuushokukoukoku\ ;
+実証哲学 > jisshoutetsugaku\ ;
+花嫁花婿 > hanayomehanamuko\ ;
+大名行列 > daimyougyouretsu\ ;
+高山植物 > kouzanshokubutsu\ ;
+特別料金 > tokubetsuryoukin\ ;
+中間小説 > chuukanshousetsu\ ;
+生物濃縮 > seibutsunoushuku\ ;
+入力信号 > nyuuryokushingou\ ;
+彫刻室座 > choukokushitsuza\ ;
+確率標本 > kakuritsuhyouhon\ ;
+州立大学 > shuuritsudaigaku\ ;
+多肉植物 > tanikushokubutsu\ ;
+熱伝導率 > netsudendouritsu\ ;
+植物人間 > shokubutsuningen\ ;
+虚虚実実 > kyokyojitsujitsu\ ;
+物物交換 > butsubutsukoukan\ ;
+実力行使 > jitsuryokukoushi\ ;
+型式証明 > katashikishoumei\ ;
+連勝複式 > renshoufukushiki\ ;
+直接協議 > chokusetsukyougi\ ;
+罪障消滅 > zaishoushoumetsu\ ;
+晩生植物 > banseishokubutsu\ ;
+潜在失業 > senzaishitsugyou\ ;
+直接比較 > chokusetsuhikaku\ ;
+核抑止力 > kakuyokushiryoku\ ;
+万物流転 > banbutsuryuuten\ ;
+軟式庭球 > nanshikiteikyuu\ ;
+修道生活 > shuudouseikatsu\ ;
+秘密警察 > himitsukeisatsu\ ;
+法人株主 > houjinkabunushi\ ;
+間接照明 > kansetsushoumei\ ;
+紛骨砕身 > funkotsusaishin\ ;
+両棲動物 > ryouseidoubutsu\ ;
+集約農業 > shuuyakunougyou\ ;
+廃疾条件 > haishitsujouken\ ;
+能率賃金 > nouritsuchingin\ ;
+単刀直入 > tantouchokunyuu\ ;
+三文小説 > sanmonshousetsu\ ;
+筋肉注射 > kin''nikuchuusha\ ;
+四通八達 > shitsuuhattatsu\ ;
+割増運賃 > warimashiunchin\ ;
+南極観測 > nankyokukansoku\ ;
+一目瞭然 > ichimokuryouzen\ ;
+素人下宿 > shiroutogeshuku\ ;
+学校給食 > gakkoukyuushoku\ ;
+間接撮影 > kansetsusatsuei\ ;
+白川夜船 > shirakawayofune\ ;
+特筆大書 > tokuhitsutaisho\ ;
+食品工業 > shokuhinkougyou\ ;
+棘皮動物 > kyokuhidoubutsu\ ;
+怪力乱神 > kairyokuranshin\ ;
+人生哲学 > jinseitetsugaku\ ;
+新婚生活 > shinkonseikatsu\ ;
+公開入札 > koukainyuusatsu\ ;
+株式市場 > kabushikishijou\ ;
+学業成績 > gakugyouseiseki\ ;
+物質名詞 > busshitsumeishi\ ;
+短編小説 > tanpenshousetsu\ ;
+商業数学 > shougyousuugaku\ ;
+脱出速度 > dasshutsusokudo\ ;
+特別総会 > tokubetsusoukai\ ;
+第一楽章 > daiichigakushou\ ;
+索条鉄道 > sakujoutetsudou\ ;
+軍記物語 > gunkimonogatari\ ;
+厳正中立 > genseichuuritsu\ ;
+一日一夜 > ichinichiichiya\ ;
+陰陰滅滅 > in''inmetsumetsu\ ;
+就職浪人 > shuushokurounin\ ;
+純潔教育 > junketsukyouiku\ ;
+宗教改革 > shuukyoukaikaku\ ;
+支離滅裂 > shirimetsuretsu\ ;
+国民宿舎 > kokuminshukusha\ ;
+独立宣言 > dokuritsusengen\ ;
+副腎皮質 > fukujinhishitsu\ ;
+国民生活 > kokuminseikatsu\ ;
+積載能力 > sekisainouryoku\ ;
+収容能力 > shuuyounouryoku\ ;
+腰高障子 > koshidakashouji\ ;
+年頃日頃 > toshigorohigoro\ ;
+通俗文学 > tsuuzokubungaku\ ;
+優先株主 > yuusenkabunushi\ ;
+写真測量 > shashinsokuryou\ ;
+企業体質 > kigyoutaishitsu\ ;
+猪突猛進 > chototsumoushin\ ;
+学生割引 > gakuseiwaribiki\ ;
+価格圧力 > kakakuatsuryoku\ ;
+表現形式 > hyougenkeishiki\ ;
+出願書類 > shutsuganshorui\ ;
+宗教教育 > shuukyoukyouiku\ ;
+余裕綽綽 > yoyuushakushaku\ ;
+知的能力 > chitekinouryoku\ ;
+反骨精神 > hankotsuseishin\ ;
+正確爆撃 > seikakubakugeki\ ;
+日英通訳 > nichieitsuuyaku\ ;
+食物繊維 > shokumotsusen''i\ ;
+算術級数 > sanjutsukyuusuu\ ;
+入力装置 > nyuuryokusouchi\ ;
+職業訓練 > shokugyoukunren\ ;
+探偵小説 > tanteishousetsu\ ;
+生活反応 > seikatsuhan''nou\ ;
+松下電器 > matsushitadenki\ ;
+知識階級 > chishikikaikyuu\ ;
+株式会社 > kabushikigaisha\ ;
+一時預所 > ichijiazukarijo\ ;
+拡大解釈 > kakudaikaishaku\ ;
+品質保証 > hinshitsuhoshou\ ;
+信仰告白 > shinkoukokuhaku\ ;
+格物致知 > kakubutsuchichi\ ;
+米穀通帳 > beikokutsuuchou\ ;
+実用新案 > jitsuyoushin''an\ ;
+心身障害 > shinshinshougai\ ;
+速戦即決 > sokusensokketsu\ ;
+化学吸着 > kagakukyuuchaku\ ;
+四方山話 > yomoyamabanashi\ ;
+皇室典範 > koushitsutenpan\ ;
+特別国会 > tokubetsukokkai\ ;
+一坪本社 > hitotsubohonsha\ ;
+早口言葉 > hayakuchikotoba\ ;
+深山幽谷 > shinzan''yuukoku\ ;
+通商産業 > tsuushousangyou\ ;
+建築面積 > kenchikumenseki\ ;
+盤根錯節 > bankonsakusetsu\ ;
+内的生活 > naitekiseikatsu\ ;
+秘密漏洩 > himitsurousetsu\ ;
+玉石混淆 > gyokusekikonkou\ ;
+雛鑑別者 > hinakanbetsusha\ ;
+終身年金 > shuushin''nenkin\ ;
+粉骨砕身 > funkotsusaishin\ ;
+人物寸描 > jinbutsusunbyou\ ;
+商品目録 > shouhinmokuroku\ ;
+外食産業 > gaishokusangyou\ ;
+資源節約 > shigensetsuyaku\ ;
+静脈注射 > joumyakuchuusha\ ;
+冒険小説 > boukenshousetsu\ ;
+熱硬化物 > netsukoukabutsu\ ;
+国有鉄道 > kokuyuutetsudou\ ;
+確率変数 > kakuritsuhensuu\ ;
+開発計画 > kaihatsukeikaku\ ;
+有害物質 > yuugaibusshitsu\ ;
+情状酌量 > joujoushakuryou\ ;
+侵略戦争 > shinryakusensou\ ;
+冒頭陳述 > boutouchinjutsu\ ;
+焼身自殺 > shoushinjisatsu\ ;
+大安吉日 > taiankichinichi\ ;
+矯正視力 > kyouseishiryoku\ ;
+研究開発 > kenkyuukaihatsu\ ;
+談合入札 > dangounyuusatsu\ ;
+陸生動物 > rikuseidoubutsu\ ;
+南太平洋 > minamitaiheiyou\ ;
+学生生活 > gakuseiseikatsu\ ;
+１１９番 > hyakujuukyuuban\ ;
+結合組織 > ketsugousoshiki\ ;
+彫心鏤骨 > choushinrukotsu\ ;
+縁日商人 > en''nichishounin\ ;
+心神耗弱 > shinshinmoujaku\ ;
+短期貸付 > tankikashitsuke\ ;
+玉石混交 > gyokusekikonkou\ ;
+左中括弧 > hidarichuukakko\ ;
+黒色人種 > kokushokujinshu\ ;
+公式発表 > koushikihappyou\ ;
+軟骨組織 > nankotsusoshiki\ ;
+星間物質 > seikanbusshitsu\ ;
+生涯学習 > shougaigakushuu\ ;
+知識表現 > chishikihyougen\ ;
+源氏物語 > genjimonogatari\ ;
+七転八倒 > shichitenbattou\ ;
+白色人種 > hakushokujinshu\ ;
+平家物語 > heikemonogatari\ ;
+余裕綽々 > yoyuushakushaku\ ;
+拒絶反応 > kyozetsuhan''nou\ ;
+特別待遇 > tokubetsutaiguu\ ;
+青天白日 > seitenhakujitsu\ ;
+天罰覿面 > tenbatsutekimen\ ;
+血族結婚 > ketsuzokukekkon\ ;
+発色現像 > hasshokugenshou\ ;
+入札価格 > nyuusatsukakaku\ ;
+連立内閣 > renritsunaikaku\ ;
+腹式呼吸 > fukushikikokyuu\ ;
+低開発国 > teikaihatsukoku\ ;
+軽妙洒脱 > keimyoushadatsu\ ;
+鋼索鉄道 > kousakutetsudou\ ;
+現有勢力 > gen''yuuseiryoku\ ;
+遊休施設 > yuukyuushisetsu\ ;
+跳躍振動 > chouyakushindou\ ;
+超然内閣 > chouzen''naikaku\ ;
+実業学校 > jitsugyougakkou\ ;
+私立大学 > shiritsudaigaku\ ;
+最低血圧 > saiteiketsuatsu\ ;
+尊属殺人 > sonzokusatsujin\ ;
+中立地帯 > chuuritsuchitai\ ;
+両極地方 > ryoukyokuchihou\ ;
+連続殺人 > renzokusatsujin\ ;
+垂直分業 > suichokubungyou\ ;
+洗濯石鹸 > sentakusetsuken\ ;
+闘病生活 > toubyouseikatsu\ ;
+同文通達 > doubuntsuutatsu\ ;
+円転滑脱 > entenkatsudatsu\ ;
+生物工学 > seibutsukougaku\ ;
+一律減反 > ichiritsugentan\ ;
+人員縮少 > jin''inshukushou\ ;
+独立変数 > dokuritsuhensuu\ ;
+人定質問 > jinteishitsumon\ ;
+新約聖書 > shin''yakuseisho\ ;
+生殺与奪 > seisatsuyodatsu\ ;
+殿様仕事 > tonosamashigoto\ ;
+台所用品 > daidokoroyouhin\ ;
+貴金属卸 > kikinzokuoroshi\ ;
+上方贅六 > kamigatazeiroku\ ;
+血族関係 > ketsuzokukankei\ ;
+子宮後屈 > shikyuukoukutsu\ ;
+南征北伐 > nanseihokubatsu\ ;
+真実一路 > shinjitsuichiro\ ;
+特別運賃 > tokubetsuunchin\ ;
+通常戦力 > tsuujousenryoku\ ;
+利害得失 > rigaitokushitsu\ ;
+浅酌低唱 > senshakuteishou\ ;
+裸子植物 > rashishokubutsu\ ;
+借用証書 > shakuyoushousho\ ;
+共有結合 > kyouyuuketsugou\ ;
+回折領域 > kaisetsuryouiki\ ;
+職業意識 > shokugyouishiki\ ;
+単式学級 > tanshikigakkyuu\ ;
+学術雑誌 > gakujutsuzasshi\ ;
+卒業試験 > sotsugyoushiken\ ;
+優性形質 > yuuseikeishitsu\ ;
+成長曲線 > seichoukyokusen\ ;
+百八十度 > hyakuhachijuudo\ ;
+大和撫子 > yamatonadeshiko\ ;
+好色文学 > koushokubungaku\ ;
+霊魂消滅 > reikonshoumetsu\ ;
+特別配当 > tokubetsuhaitou\ ;
+風力階級 > fuuryokukaikyuu\ ;
+流体力学 > ryuutairikigaku\ ;
+劣弱意識 > retsujakuishiki\ ;
+二股膏薬 > futamatakouyaku\ ;
+物質代謝 > busshitsutaisha\ ;
+管轄官庁 > kankatsukanchou\ ;
+修正申告 > shuuseishinkoku\ ;
+心理小説 > shinrishousetsu\ ;
+着陸地点 > chakurikuchiten\ ;
+実験小説 > jikkenshousetsu\ ;
+原子爆発 > genshibakuhatsu\ ;
+入力情報 > nyuuryokujouhou\ ;
+量子力学 > ryoushirikigaku\ ;
+奪三振王 > datsusanshin''ou\ ;
+年末調整 > nenmatsuchousei\ ;
+学術論文 > gakujutsuronbun\ ;
+生物学者 > seibutsugakusha\ ;
+六百六号 > roppyakurokugou\ ;
+思弁哲学 > shibentetsugaku\ ;
+抗生物質 > kouseibusshitsu\ ;
+活動写真 > katsudoushashin\ ;
+両生動物 > ryouseidoubutsu\ ;
+精神薄弱 > seishinhakujaku\ ;
+強迫観念 > kyouhakukan''nen\ ;
+軍縮協定 > gunshukukyoutei\ ;
+着陸地帯 > chakurikuchitai\ ;
+炭塵爆発 > tanjinbakuhatsu\ ;
+生活環境 > seikatsukankyou\ ;
+技術革新 > gijutsukakushin\ ;
+粟粒結核 > zokuryuukekkaku\ ;
+仮受取証 > kariuketorishou\ ;
+新聞配達 > shinbunhaitatsu\ ;
+卒業論文 > sotsugyouronbun\ ;
+登録商標 > tourokushouhyou\ ;
+信用銘柄 > shin''youmeigara\ ;
+操浄瑠璃 > ayatsurijoururi\ ;
+共同生活 > kyoudouseikatsu\ ;
+伝達特性 > dentatsutokusei\ ;
+信仰生活 > shinkouseikatsu\ ;
+郷土小説 > kyoudoshousetsu\ ;
+集団生活 > shuudanseikatsu\ ;
+駐日大使 > chuunichitaishi\ ;
+島国根性 > shimagunikonjou\ ;
+左小括弧 > hidarishoukakko\ ;
+民族宗教 > minzokushuukyou\ ;
+日中韓越 > nitchuukan''etsu\ ;
+黒色火薬 > kokushokukayaku\ ;
+万有神教 > ban''yuushinkyou\ ;
+頭脳流出 > zunouryuushutsu\ ;
+直接話法 > chokusetsuwahou\ ;
+形質転換 > keishitsutenkan\ ;
+正真正銘 > shoushinshoumei\ ;
+爆弾発言 > bakudanhatsugen\ ;
+直立不動 > chokuritsufudou\ ;
+商業道徳 > shougyoudoutoku\ ;
+特設会場 > tokusetsukaijou\ ;
+核物理学 > kakubutsurigaku\ ;
+直立猿人 > chokuritsuenjin\ ;
+超連結子 > chourenketsushi\ ;
+甲論乙駁 > kouron''otsubaku\ ;
+物的資源 > butsutekishigen\ ;
+直接支援 > chokusetsushien\ ;
+新制中学 > shinseichuugaku\ ;
+圧力団体 > atsuryokudantai\ ;
+温血動物 > onketsudoubutsu\ ;
+中立労連 > chuuritsurouren\ ;
+研究活動 > kenkyuukatsudou\ ;
+自然哲学 > shizentetsugaku\ ;
+株主総会 > kabunushisoukai\ ;
+性格判別 > seikakuhanbetsu\ ;
+過失傷害 > kashitsushougai\ ;
+通信工学 > tsuushinkougaku\ ;
+同一人物 > douitsujinbutsu\ ;
+商学博士 > shougakuhakushi\ ;
+心頭滅却 > shintoumekkyaku\ ;
+七顛八倒 > shichitenbattou\ ;
+強行採決 > kyoukousaiketsu\ ;
+就任演説 > shuunin''enzetsu\ ;
+名論卓説 > meirontakusetsu\ ;
+注入教育 > chuunyuukyouiku\ ;
+向精神薬 > kouseishin''yaku\ ;
+分列行進 > bunretsukoushin\ ;
+食料品店 > shokuryouhinten\ ;
+潮汐摩擦 > chousekimasatsu\ ;
+節足動物 > sessokudoubutsu\ ;
+食物連鎖 > shokumotsurensa\ ;
+中肉中背 > chuunikuchuuzei\ ;
+集中攻撃 > shuuchuukougeki\ ;
+確定判決 > kakuteihanketsu\ ;
+少女小説 > shoujoshousetsu\ ;
+博学力行 > hakugakuryokkou\ ;
+傍系血族 > boukeiketsuzoku\ ;
+中間内閣 > chuukan''naikaku\ ;
+単独供給 > tandokukyoukyuu\ ;
+失業保険 > shitsugyouhoken\ ;
+特別会計 > tokubetsukaikei\ ;
+振幅変調 > shinpukuhenchou\ ;
+広告収入 > koukokushuunyuu\ ;
+中国大陸 > chuugokutairiku\ ;
+放出物資 > houshutsubusshi\ ;
+配達証明 > haitatsushoumei\ ;
+最終目的 > saishuumokuteki\ ;
+一蓮托生 > ichirentakushou\ ;
+三角測量 > sankakusokuryou\ ;
+動物学者 > doubutsugakusha\ ;
+化学物質 > kagakubusshitsu\ ;
+熱原子核 > netsugenshikaku\ ;
+地質調査 > chishitsuchousa\ ;
+歯列矯正 > shiretsukyousei\ ;
+四十七士 > shijuushichishi\ ;
+十月革命 > juugatsukakumei\ ;
+文質彬彬 > bunshitsuhinpin\ ;
+信託契約 > shintakukeiyaku\ ;
+独立戦争 > dokuritsusensou\ ;
+火力発電 > karyokuhatsuden\ ;
+速達郵便 > sokutatsuyuubin\ ;
+四百四病 > shihyakushibyou\ ;
+元帳残高 > motochouzandaka\ ;
+抽象美術 > chuushoubijutsu\ ;
+物質文明 > busshitsubunmei\ ;
+超物理学 > choubutsurigaku\ ;
+食糧不足 > shokuryoubusoku\ ;
+公共施設 > koukyoushisetsu\ ;
+南極条約 > nankyokujouyaku\ ;
+兵力削減 > heiryokusakugen\ ;
+公職追放 > koushokutsuihou\ ;
+学術団体 > gakujutsudantai\ ;
+共生生物 > kyouseiseibutsu\ ;
+被子植物 > hishishokubutsu\ ;
+有畜農業 > yuuchikunougyou\ ;
+寄生植物 > kiseishokubutsu\ ;
+武侠小説 > bukyoushousetsu\ ;
+木質繊維 > mokushitsusen''i\ ;
+直通列車 > chokutsuuressha\ ;
+一一九番 > hyakujuukyuuban\ ;
+転置行列 > tenchigyouretsu\ ;
+出動命令 > shutsudoumeirei\ ;
+舌先三寸 > shitasakisanzun\ ;
+大衆食堂 > taishuushokudou\ ;
+内閣閣僚 > naikakukakuryou\ ;
+人口爆発 > jinkoubakuhatsu\ ;
+圧縮効率 > asshukukouritsu\ ;
+国立銀行 > kokuritsuginkou\ ;
+一病息災 > ichibyousokusai\ ;
+正金取引 > shoukintorihiki\ ;
+流通革命 > ryuutsuukakumei\ ;
+芸術作品 > geijutsusakuhin\ ;
+新興宗教 > shinkoushuukyou\ ;
+知識工学 > chishikikougaku\ ;
+体質改善 > taishitsukaizen\ ;
+片側通行 > katagawatsuukou\ ;
+南極大陸 > nankyokutairiku\ ;
+艶笑小話 > enshoukobanashi\ ;
+商業美術 > shougyoubijutsu\ ;
+神色自若 > shinshokujijaku\ ;
+水際作戦 > mizugiwasakusen\ ;
+物的証拠 > butsutekishouko\ ;
+操業短縮 > sougyoutanshuku\ ;
+内股膏薬 > uchimatagouyaku\ ;
+色彩感覚 > shikisaikankaku\ ;
+超能力者 > chounouryokusha\ ;
+木食上人 > mokujikishounin\ ;
+連載小説 > rensaishousetsu\ ;
+焦熱地獄 > shounetsujigoku\ ;
+骨粗鬆症 > kotsusoshoushou\ ;
+流通証券 > ryuutsuushouken\ ;
+差引勘定 > sashihikikanjou\ ;
+開腹手術 > kaifukushujutsu\ ;
+即日出荷 > sokujitsushukka\ ;
+株式配当 > kabushikihaitou\ ;
+蛍光物質 > keikoubusshitsu\ ;
+聴覚神経 > choukakushinkei\ ;
+懲戒免職 > choukaimenshoku\ ;
+確定申告 > kakuteishinkoku\ ;
+職業軍人 > shokugyougunjin\ ;
+白河夜船 > shirakawayofune\ ;
+株式公開 > kabushikikoukai\ ;
+廃仏毀釈 > haibutsukishaku\ ;
+眼底出血 > ganteishukketsu\ ;
+信任投票 > shin''nintouhyou\ ;
+関連質問 > kanrenshitsumon\ ;
+建築業者 > kenchikugyousha\ ;
+哲学史要 > tetsugakushiyou\ ;
+知識産業 > chishikisangyou\ ;
+浚渫作業 > shunsetsusagyou\ ;
+卸売市場 > oroshiurishijou\ ;
+通信教育 > tsuushinkyouiku\ ;
+北斗七星 > hokutoshichisei\ ;
+正式発表 > seishikihappyou\ ;
+暴力革命 > bouryokukakumei\ ;
+共産中国 > kyousanchuugoku\ ;
+森林鉄道 > shinrintetsudou\ ;
+経済協力 > keizaikyouryoku\ ;
+物的損害 > butsutekisongai\ ;
+空中爆撃 > kuuchuubakugeki\ ;
+年中失言 > nenjuushitsugen\ ;
+正方行列 > seihougyouretsu\ ;
+老若男女 > rounyakunan''nyo\ ;
+修了証書 > shuuryoushousho\ ;
+下等植物 > katoushokubutsu\ ;
+顕花植物 > kenkashokubutsu\ ;
+地元警察 > jimotokeisatsu\ ;
+中国地方 > chuugokuchihou\ ;
+三校終了 > sankoushuuryou\ ;
+人工血液 > jinkouketsueki\ ;
+有性生殖 > yuuseiseishoku\ ;
+錬金術師 > renkinjutsushi\ ;
+対日感情 > tainichikanjou\ ;
+猥褻文書 > waisetsubunsho\ ;
+仮装行列 > kasougyouretsu\ ;
+正弦曲線 > seigenkyokusen\ ;
+没個性的 > botsukoseiteki\ ;
+独立運動 > dokuritsuundou\ ;
+脱脂粉乳 > dasshifun''nyuu\ ;
+原子力船 > genshiryokusen\ ;
+三球三振 > sankyuusanshin\ ;
+面白半分 > omoshirohanbun\ ;
+商船大学 > shousendaigaku\ ;
+天地万物 > tenchibanbutsu\ ;
+耐熱合金 > tainetsugoukin\ ;
+政略結婚 > seiryakukekkon\ ;
+特高警察 > tokkoukeisatsu\ ;
+商慣習法 > shoukanshuuhou\ ;
+昆虫採集 > konchuusaishuu\ ;
+中国拳法 > chuugokukenpou\ ;
+美術監督 > bijutsukantoku\ ;
+副大統領 > fukudaitouryou\ ;
+焦性硫酸 > shouseiryuusan\ ;
+周旋業者 > shuusengyousha\ ;
+南回帰線 > minamikaikisen\ ;
+胎生動物 > taiseidoubutsu\ ;
+全国中継 > zenkokuchuukei\ ;
+牛歩戦術 > gyuuhosenjutsu\ ;
+突撃隊員 > totsugekitaiin\ ;
+約百万円 > yakuhyakumanen\ ;
+人海戦術 > jinkaisenjutsu\ ;
+天文学的 > tenmongakuteki\ ;
+思案投首 > shian''nagekubi\ ;
+裏口営業 > uraguchieigyou\ ;
+伝奇小説 > denkishousetsu\ ;
+中立主義 > chuuritsushugi\ ;
+研究資料 > kenkyuushiryou\ ;
+古生物学 > koseibutsugaku\ ;
+更生施設 > kouseishisetsu\ ;
+片道切符 > katamichikippu\ ;
+接続助詞 > setsuzokujoshi\ ;
+英仏海峡 > eifutsukaikyou\ ;
+稔実不良 > nenjitsufuryou\ ;
+公衆浴場 > koushuuyokujou\ ;
+端末装置 > tanmatsusouchi\ ;
+駐車料金 > chuusharyoukin\ ;
+資本取引 > shihontorihiki\ ;
+株式相場 > kabushikisouba\ ;
+免疫反応 > men''ekihan''nou\ ;
+建設会社 > kensetsugaisha\ ;
+本末顛倒 > honmatsutentou\ ;
+初志貫徹 > shoshikantetsu\ ;
+産業革命 > sangyoukakumei\ ;
+定年退職 > teinentaishoku\ ;
+国際親善 > kokusaishinzen\ ;
+性格診断 > seikakushindan\ ;
+全身衰弱 > zenshinsuijaku\ ;
+問題解決 > mondaikaiketsu\ ;
+哺乳動物 > honyuudoubutsu\ ;
+資本注入 > shihonchuunyuu\ ;
+修業年限 > shuugyounengen\ ;
+緑綬褒章 > ryokujuhoushou\ ;
+研究題目 > kenkyuudaimoku\ ;
+病床日誌 > byoushounisshi\ ;
+算術計算 > sanjutsukeisan\ ;
+帰化植物 > kikashokubutsu\ ;
+金融恐慌 > kin''yuukyoukou\ ;
+特別措置 > tokubetsusochi\ ;
+弛張振動 > shichoushindou\ ;
+戦戦兢兢 > sensenkyoukyou\ ;
+観光施設 > kankoushisetsu\ ;
+善男善女 > zen''nanzen''nyo\ ;
+信用販売 > shin''youhanbai\ ;
+末梢神経 > masshoushinkei\ ;
+骨髄移植 > kotsuzuiishoku\ ;
+道徳教育 > doutokukyouiku\ ;
+金殿玉楼 > kindengyokurou\ ;
+点滴注射 > tentekichuusha\ ;
+工学修士 > kougakushuushi\ ;
+門外不出 > mongaifushutsu\ ;
+通信装置 > tsuushinsouchi\ ;
+作戦計画 > sakusenkeikaku\ ;
+場外取引 > jougaitorihiki\ ;
+信託銀行 > shintakuginkou\ ;
+境界調整 > kyoukaichousei\ ;
+主力艦隊 > shuryokukantai\ ;
+職場環境 > shokubakankyou\ ;
+割引価格 > waribikikakaku\ ;
+整形手術 > seikeishujutsu\ ;
+酸性食品 > sanseishokuhin\ ;
+原子力学 > genshirikigaku\ ;
+水中翼船 > suichuuyokusen\ ;
+発達段階 > hattatsudankai\ ;
+諸説紛紛 > shosetsufunpun\ ;
+乳酸飲料 > nyuusan''inryou\ ;
+個々別別 > kokobetsubetsu\ ;
+口不調法 > kuchibuchouhou\ ;
+超自然的 > choushizenteki\ ;
+国防長官 > kokubouchoukan\ ;
+正統信教 > seitoushinkyou\ ;
+強化合宿 > kyoukagasshuku\ ;
+朝鮮人参 > chousen''ninjin\ ;
+束縛変項 > sokubakuhenkou\ ;
+神経組織 > shinkeisoshiki\ ;
+超越関数 > chouetsukansuu\ ;
+効率向上 > kouritsukoujou\ ;
+大脳皮質 > dainouhishitsu\ ;
+生体力学 > seitairikigaku\ ;
+山下公園 > yamashitakouen\ ;
+口述試験 > koujutsushiken\ ;
+一日片時 > ichinichihenji\ ;
+社会生活 > shakaiseikatsu\ ;
+出版目録 > shupanmokuroku\ ;
+別途支出 > bettoshishutsu\ ;
+申告納税 > shinkokunouzei\ ;
+即決裁判 > sokketsusaiban\ ;
+独立自尊 > dokuritsujison\ ;
+婚約指輪 > kon''yakuyubiwa\ ;
+血液凝固 > ketsuekigyouko\ ;
+出処進退 > shusshoshintai\ ;
+弓矢八幡 > yumiyahachiman\ ;
+警察手帳 > keisatsutechou\ ;
+職業婦人 > shokugyoufujin\ ;
+至福千年 > shifukusen''nen\ ;
+天地開闢 > tenchikaibyaku\ ;
+冷凍食品 > reitoushokuhin\ ;
+補足説明 > hosokusetsumei\ ;
+信用状態 > shin''youjoutai\ ;
+絶対湿度 > zettaishitsudo\ ;
+明明白白 > meimeihakuhaku\ ;
+軍備縮小 > gunbishukushou\ ;
+暴力団員 > bouryokudan''in\ ;
+大学教育 > daigakukyouiku\ ;
+第三人称 > daisan''ninshou\ ;
+永世中立 > eiseichuuritsu\ ;
+研究領域 > kenkyuuryouiki\ ;
+教育勅語 > kyouikuchokugo\ ;
+精神障害 > seishinshougai\ ;
+天空海濶 > tenkuukaikatsu\ ;
+食餌療法 > shokujiryouhou\ ;
+作者不知 > sakushashirazu\ ;
+生活水準 > seikatsusuijun\ ;
+卵生動物 > ranseidoubutsu\ ;
+筋肉労働 > kin''nikuroudou\ ;
+南支那海 > minamishinakai\ ;
+学術用語 > gakujutsuyougo\ ;
+自然食品 > shizenshokuhin\ ;
+商業組合 > shougyoukumiai\ ;
+職権乱用 > shokkenran''you\ ;
+伴食大臣 > banshokudaijin\ ;
+岡目八目 > okamehachimoku\ ;
+斬新奇抜 > zanshinkibatsu\ ;
+直情径行 > chokujoukeikou\ ;
+私立学校 > shiritsugakkou\ ;
+中日辞典 > chuunichijiten\ ;
+分類目録 > bunruimokuroku\ ;
+内分泌腺 > naibunpitsusen\ ;
+活路開拓 > katsurokaitaku\ ;
+平板測量 > heibansokuryou\ ;
+源泉徴収 > gensenchoushuu\ ;
+通信衛星 > tsuushin''eisei\ ;
+清算取引 > seisantorihiki\ ;
+特殊学級 > tokushugakkyuu\ ;
+信用調査 > shin''youchousa\ ;
+先物売買 > sakimonobaibai\ ;
+七難八苦 > shichinanhakku\ ;
+角膜移植 > kakumakuishoku\ ;
+救急病院 > kyuukyuubyouin\ ;
+接触感染 > sesshokukansen\ ;
+税金申告 > zeikinshinkoku\ ;
+絨毯爆撃 > juutanbakugeki\ ;
+七転八起 > shichitenhakki\ ;
+水銀中毒 > suiginchuudoku\ ;
+露出不足 > roshutsubusoku\ ;
+平上去入 > hyoujoukyonyuu\ ;
+国立公園 > kokuritsukouen\ ;
+公立学校 > kouritsugakkou\ ;
+通信圏外 > tsuushinkengai\ ;
+約束手形 > yakusokutegata\ ;
+召集令状 > shoushuureijou\ ;
+新入社員 > shin''nyuushain\ ;
+日南海岸 > nichinankaigan\ ;
+汎整数式 > hanseisuushiki\ ;
+古物商人 > kobutsushounin\ ;
+武力干渉 > buryokukanshou\ ;
+公衆道徳 > koushuudoutoku\ ;
+怪奇小説 > kaikishousetsu\ ;
+秘密投票 > himitsutouhyou\ ;
+圧力容器 > atsuryokuyouki\ ;
+傍目八目 > okamehachimoku\ ;
+求婚広告 > kyuukonkoukoku\ ;
+心因反応 > shin''inhan''nou\ ;
+麦藁帽子 > mugiwaraboushi\ ;
+納税申告 > nouzeishinkoku\ ;
+反対称的 > hantaishouteki\ ;
+住友銀行 > sumitomoginkou\ ;
+出所進退 > shusshoshintai\ ;
+就業人口 > shuugyoujinkou\ ;
+全勝優勝 > zenshouyuushou\ ;
+建設大臣 > kensetsudaijin\ ;
+非良心的 > hiryoushinteki\ ;
+絶対必要 > zettaihitsuyou\ ;
+蛸足配線 > takoashihaisen\ ;
+工業大学 > kougyoudaigaku\ ;
+金壱万円 > kin''ichiman''en\ ;
+旅客列車 > ryokyakuressha\ ;
+立会演説 > tachiaienzetsu\ ;
+奨学資金 > shougakushikin\ ;
+現金収入 > genkinshuunyuu\ ;
+学術会議 > gakujutsukaigi\ ;
+法律問題 > houritsumondai\ ;
+直通電話 > chokutsuudenwa\ ;
+台所道具 > daidokorodougu\ ;
+電源供給 > dengenkyoukyuu\ ;
+停年退職 > teinentaishoku\ ;
+水陸両用 > suirikuryouyou\ ;
+通信手段 > tsuushinshudan\ ;
+下請会社 > shitaukegaisha\ ;
+第一人称 > daiichininshou\ ;
+学歴社会 > gakurekishakai\ ;
+演奏曲目 > ensoukyokumoku\ ;
+思想警察 > shisoukeisatsu\ ;
+公益質屋 > kouekishichiya\ ;
+偕老同穴 > kairoudouketsu\ ;
+健康食品 > kenkoushokuhin\ ;
+抽象名詞 > chuushoumeishi\ ;
+小乗仏教 > shoujoubukkyou\ ;
+合目的性 > goumokutekisei\ ;
+電力会社 > denryokugaisha\ ;
+海洋開発 > kaiyoukaihatsu\ ;
+細胞分裂 > saiboubunretsu\ ;
+急行料金 > kyuukouryoukin\ ;
+丁丁発止 > chouchouhasshi\ ;
+教職課程 > kyoushokukatei\ ;
+出版業者 > shuppangyousha\ ;
+就職運動 > shuushokuundou\ ;
+略奪行為 > ryakudatsukoui\ ;
+理非曲直 > rihikyokuchoku\ ;
+別冊付録 > bessatsufuroku\ ;
+三権分立 > sankenbunritsu\ ;
+共同研究 > kyoudoukenkyuu\ ;
+新刊紹介 > shinkanshoukai\ ;
+棟割長屋 > munewarinagaya\ ;
+修好条約 > shuukoujouyaku\ ;
+冠状動脈 > kanjoudoumyaku\ ;
+空空漠漠 > kuukuubakubaku\ ;
+悪性貧血 > akuseihinketsu\ ;
+休戦協定 > kyuusenkyoutei\ ;
+神経衰弱 > shinkeisuijaku\ ;
+回折格子 > kaisetsukoushi\ ;
+先決問題 > senketsumondai\ ;
+就業日数 > shuugyounissuu\ ;
+実験動物 > jikkendoubutsu\ ;
+忠君愛国 > chuukun''aikoku\ ;
+求人広告 > kyuujinkoukoku\ ;
+独立独歩 > dokuritsudoppo\ ;
+諸説紛々 > shosetsufunpun\ ;
+有害食品 > yuugaishokuhin\ ;
+麻薬中毒 > mayakuchuudoku\ ;
+金属工業 > kinzokukougyou\ ;
+卸売物価 > oroshiuribukka\ ;
+共同出資 > kyoudoushusshi\ ;
+狭軌鉄道 > kyoukitetsudou\ ;
+商業手形 > shougyoutegata\ ;
+郵便配達 > yuubinhaitatsu\ ;
+港湾当局 > kouwantoukyoku\ ;
+商業銀行 > shougyouginkou\ ;
+省略記号 > shouryakukigou\ ;
+中間報告 > chuukanhoukoku\ ;
+中心思想 > chuushinshisou\ ;
+五月人形 > gogatsuningyou\ ;
+伝承文学 > denshoubungaku\ ;
+軟体動物 > nantaidoubutsu\ ;
+強制収容 > kyouseishuuyou\ ;
+一陽来腹 > ichiyouraifuku\ ;
+漁業協定 > gyogyoukyoutei\ ;
+水生動物 > suiseidoubutsu\ ;
+楔形文字 > kusabigatamoji\ ;
+信用組合 > shin''youkumiai\ ;
+研究報告 > kenkyuuhoukoku\ ;
+水天彷彿 > suitenhoufutsu\ ;
+住宅産業 > juutakusangyou\ ;
+泡沫会社 > houmatsugaisha\ ;
+談論風発 > danronfuuhatsu\ ;
+先発投手 > senpatsutoushu\ ;
+推理小説 > suirishousetsu\ ;
+紳士協定 > shinshikyoutei\ ;
+大名屋敷 > daimyouyashiki\ ;
+特異体質 > tokuitaishitsu\ ;
+中間搾取 > chuukansakushu\ ;
+協調作業 > kyouchousagyou\ ;
+指圧療法 > shiatsuryouhou\ ;
+工業技術 > kougyougijutsu\ ;
+総合芸術 > sougougeijutsu\ ;
+中産階級 > chuusankaikyuu\ ;
+南十字星 > minamijuujisei\ ;
+心霊手術 > shinreitejutsu\ ;
+成長産業 > seichousangyou\ ;
+国際収支 > kokusaishuushi\ ;
+厚生施設 > kouseishisetsu\ ;
+上陸作戦 > jourikusakusen\ ;
+動力資源 > douryokushigen\ ;
+必要条件 > hitsuyoujouken\ ;
+中流意識 > chuuryuuishiki\ ;
+出漁区域 > shutsugyokuiki\ ;
+財形貯蓄 > zaikeichochiku\ ;
+職人気質 > shokuninkatagi\ ;
+単位行列 > tan''igyouretsu\ ;
+国連憲章 > kokurenkenshou\ ;
+水先案内 > mizusakian''nai\ ;
+収容設備 > shuuyousetsubi\ ;
+深海漁業 > shinkaigyogyou\ ;
+直往邁進 > chokuoumaishin\ ;
+天体力学 > tentairikigaku\ ;
+真空電球 > shinkuudenkyuu\ ;
+上層建築 > jousoukenchiku\ ;
+役職手当 > yakushokuteate\ ;
+高圧電流 > kouatsudenryuu\ ;
+交通道徳 > koutsuudoutoku\ ;
+水準測量 > suijunsokuryou\ ;
+弁証法的 > benshouhouteki\ ;
+松茸御飯 > matsutakegohan\ ;
+関税障壁 > kanzeishouheki\ ;
+統括部長 > toukatsubuchou\ ;
+損失補填 > sonshitsuhoten\ ;
+事事物物 > jijibutsubutsu\ ;
+戦々恐々 > sensenkyoukyou\ ;
+連続写真 > renzokushashin\ ;
+四百余州 > shihyakuyoshuu\ ;
+一陽来復 > ichiyouraifuku\ ;
+心筋梗塞 > shinkinkousoku\ ;
+宗教裁判 > shuukyousaiban\ ;
+写真石版 > shashinsekiban\ ;
+隠花植物 > inkashokubutsu\ ;
+微生物学 > biseibutsugaku\ ;
+戦略空軍 > senryakukuugun\ ;
+恭賀新年 > kyougashin''nen\ ;
+国際協定 > kokusaikyoutei\ ;
+色即是空 > shikisokuzekuu\ ;
+頭寒足熱 > zukansokunetsu\ ;
+区検察庁 > kukensatsuchou\ ;
+核防衛力 > kakuboueiryoku\ ;
+完全燃焼 > kanzen''nenshou\ ;
+重量感覚 > juuryoukankaku\ ;
+雌雄鑑別 > shiyuukanbetsu\ ;
+原生動物 > genseidoubutsu\ ;
+目的意識 > mokutekiishiki\ ;
+海生動物 > kaiseidoubutsu\ ;
+攻撃精神 > kougekiseishin\ ;
+作成技術 > sakuseigijutsu\ ;
+金銭信託 > kinsenshintaku\ ;
+吸収合併 > kyuushuugappei\ ;
+換骨奪胎 > kankotsudattai\ ;
+硬質陶器 > koushitsutouki\ ;
+寝台料金 > shindairyoukin\ ;
+購入注文 > kounyuuchuumon\ ;
+焦土戦術 > shoudosenjutsu\ ;
+有職故実 > yuusokukojitsu\ ;
+無償信託 > mushoushintaku\ ;
+消費生活 > shouhiseikatsu\ ;
+室内遊戯 > shitsunaiyuugi\ ;
+宗教団体 > shuukyoudantai\ ;
+進行状況 > shinkoujoukyou\ ;
+高等動物 > koutoudoubutsu\ ;
+一膳飯屋 > ichizenmeshiya\ ;
+時代小説 > jidaishousetsu\ ;
+曲線座標 > kyokusenzahyou\ ;
+当該人物 > tougaijinbutsu\ ;
+要求送信 > youkyuusoushin\ ;
+百人一首 > hyakunin''isshu\ ;
+集団検診 > shuudankenshin\ ;
+安寧秩序 > an''neichitsujo\ ;
+極楽鳥花 > gokurakuchouka\ ;
+中越紛争 > chuuetsufunsou\ ;
+一括購入 > ikkatsukounyuu\ ;
+民族自決 > minzokujiketsu\ ;
+正面攻撃 > shoumenkougeki\ ;
+教育産業 > kyouikusangyou\ ;
+空調設備 > kuuchousetsubi\ ;
+単独内閣 > tandokunaikaku\ ;
+教育実習 > kyouikujisshuu\ ;
+就業規則 > shuugyoukisoku\ ;
+教養番組 > kyouyoubangumi\ ;
+凍結資産 > touketsushisan\ ;
+集団農場 > shuudan''noujou\ ;
+周辺諸国 > shuuhenshokoku\ ;
+国籍条項 > kokusekijoukou\ ;
+現物給与 > genbutsukyuuyo\ ;
+豪雪地帯 > gousetsuchitai\ ;
+海千山千 > umisen''yamasen\ ;
+革新政党 > kakushinseitou\ ;
+少数民族 > shousuuminzoku\ ;
+労働協約 > roudoukyouyaku\ ;
+電撃作戦 > dengekisakusen\ ;
+七顛八起 > shichitenhakki\ ;
+脊髄神経 > sekizuishinkei\ ;
+美術大学 > bijutsudaigaku\ ;
+選択項目 > sentakukoumoku\ ;
+間接選挙 > kansetsusenkyo\ ;
+貝殻追放 > kaigaratsuihou\ ;
+群発地震 > gunpatsujishin\ ;
+緊褌一番 > kinkon''ichiban\ ;
+独身貴族 > dokushinkizoku\ ;
+科学知識 > kagakuchishiki\ ;
+石部金吉 > ishibekinkichi\ ;
+花鳥風月 > kachoufuugetsu\ ;
+提出期限 > teishutsukigen\ ;
+天長地久 > tenchouchikyuu\ ;
+百万長者 > hyakumanchouja\ ;
+対症療法 > taishouryouhou\ ;
+中枢神経 > chuusuushinkei\ ;
+商工業者 > shoukougyousha\ ;
+開票速報 > kaihyousokuhou\ ;
+性的衝動 > seitekishoudou\ ;
+特殊撮影 > tokushusatsuei\ ;
+輸出手形 > yushutsutegata\ ;
+史料館学 > shiryoukangaku\ ;
+空中楼閣 > kuuchuuroukaku\ ;
+少年文学 > shounenbungaku\ ;
+調整攻撃 > chouseikougeki\ ;
+精神年齢 > seishin''nenrei\ ;
+居中調停 > kyochuuchoutei\ ;
+税別価格 > zeibetsukakaku\ ;
+軍人生活 > gunjinseikatsu\ ;
+皇宮警察 > kouguukeisatsu\ ;
+粒々辛苦 > ryuuryuushinku\ ;
+東京大学 > toukyoudaigaku\ ;
+興味津津 > kyoumishinshin\ ;
+千客万来 > senkyakubanrai\ ;
+選抜試験 > senbatsushiken\ ;
+航路標識 > kourohyoushiki\ ;
+緊急発進 > kinkyuuhasshin\ ;
+空中写真 > kuuchuushashin\ ;
+営業活動 > eigyoukatsudou\ ;
+救援活動 > kyuuenkatsudou\ ;
+天然硝子 > ten''nenshoushi\ ;
+信託資金 > shintakushikin\ ;
+市民生活 > shiminseikatsu\ ;
+絶対権力 > zettaikenryoku\ ;
+周章狼狽 > shuushouroubai\ ;
+民族学者 > minzokugakusha\ ;
+膠着状態 > kouchakujoutai\ ;
+面接試験 > mensetsushiken\ ;
+政策協定 > seisakukyoutei\ ;
+販売戦略 > hanbaisenryaku\ ;
+公設市場 > kousetsuichiba\ ;
+人物経済 > jinbutsukeizai\ ;
+心的状態 > shintekijoutai\ ;
+丘陵地帯 > kyuuryouchitai\ ;
+生涯教育 > shougaikyouiku\ ;
+旧約全書 > kyuuyakuzensho\ ;
+大根役者 > daikon''yakusha\ ;
+万年新造 > man''nenshinzou\ ;
+座骨神経 > zakotsushinkei\ ;
+長老教会 > chouroukyoukai\ ;
+貯蓄債券 > chochikusaiken\ ;
+武力介入 > buryokukainyuu\ ;
+精密科学 > seimitsukagaku\ ;
+私鉄総連 > shitetsusouren\ ;
+伝送終了 > densoushuuryou\ ;
+薫蒸消毒 > kunjoushoudoku\ ;
+麦稈帽子 > mugiwaraboushi\ ;
+法律相談 > houritsusoudan\ ;
+地域開発 > chiikikaihatsu\ ;
+国内産業 > kokunaisangyou\ ;
+一打逆転 > ichidagyakuten\ ;
+水生生物 > suiseiseibutsu\ ;
+有線通信 > yuusentsuushin\ ;
+起承転結 > kishoutenketsu\ ;
+物質主義 > busshitsushugi\ ;
+信託会社 > shintakugaisha\ ;
+中間商人 > chuukanshounin\ ;
+静電容量 > seiden''youryou\ ;
+中流社会 > chuuryuushakai\ ;
+私立探偵 > shiritsutantei\ ;
+国民投票 > kokumintouhyou\ ;
+有罪判決 > yuuzaihanketsu\ ;
+強化食品 > kyoukashokuhin\ ;
+伸縮自在 > shinshukujizai\ ;
+陸軍大学 > rikugundaigaku\ ;
+通信速度 > tsuushinsokudo\ ;
+黒金剛石 > kurokongouseki\ ;
+中国人街 > chuugokujingai\ ;
+学芸大学 > gakugeidaigaku\ ;
+大河小説 > taigashousetsu\ ;
+鉄道会社 > tetsudougaisha\ ;
+音楽形式 > ongakukeishiki\ ;
+性格分析 > seikakubunseki\ ;
+現金書留 > genkinkakitome\ ;
+休戦条約 > kyuusenjouyaku\ ;
+二足動物 > nisokudoubutsu\ ;
+心理学的 > shinrigakuteki\ ;
+侃々諤諤 > kankangakugaku\ ;
+直線運動 > chokusen''undou\ ;
+悪徳新聞 > akutokushinbun\ ;
+未決拘留 > miketsukouryuu\ ;
+定量分析 > teiryoubunseki\ ;
+紙屑同然 > kamikuzudouzen\ ;
+温室栽培 > onshitsusaibai\ ;
+針小棒大 > shinshouboudai\ ;
+太刀二腰 > tachifutakoshi\ ;
+認識不足 > ninshikibusoku\ ;
+団体協約 > dantaikyouyaku\ ;
+戦々兢々 > sensenkyoukyou\ ;
+信頼回復 > shinraikaifuku\ ;
+修学旅行 > shuugakuryokou\ ;
+電源開発 > dengenkaihatsu\ ;
+模式標本 > moshikihyouhon\ ;
+追跡調査 > tsuisekichousa\ ;
+割引手形 > waribikitegata\ ;
+直流回路 > chokuryuukairo\ ;
+興行成績 > kougyouseiseki\ ;
+北洋漁業 > hokuyougyogyou\ ;
+国文学史 > kokubungakushi\ ;
+永久脱毛 > eikyuudatsumou\ ;
+排出基準 > haishutsukijun\ ;
+組職改革 > soshokukaikaku\ ;
+過失致死 > kashitsuchishi\ ;
+交通信号 > koutsuushingou\ ;
+動物実験 > doubutsujikken\ ;
+水上警察 > suijoukeisatsu\ ;
+労作教育 > rousakukyouiku\ ;
+核廃棄物 > kakuhaikibutsu\ ;
+鎮魂曲歌 > chinkonkyokuka\ ;
+非鉄金属 > hitetsukinzoku\ ;
+三百代言 > sanbyakudaigen\ ;
+中国伝来 > chuugokudenrai\ ;
+筋無力症 > kinmuryokushou\ ;
+流通資本 > ryuutsuushihon\ ;
+空即是色 > kuusokuzeshiki\ ;
+教育改革 > kyouikukaikaku\ ;
+切開手術 > sekkaishujutsu\ ;
+救護活動 > kyuugokatsudou\ ;
+宣伝活動 > sendenkatsudou\ ;
+財産目録 > zaisanmokuroku\ ;
+正常終了 > seijoushuuryou\ ;
+亡命生活 > boumeiseikatsu\ ;
+優越複合 > yuuetsufukugou\ ;
+純日本式 > jun''nihonshiki\ ;
+手形割引 > tegatawaribiki\ ;
+動物崇拝 > doubutsusuuhai\ ;
+共同住宅 > kyoudoujuutaku\ ;
+有袋動物 > yuutaidoubutsu\ ;
+袋小路文 > fukurokoujibun\ ;
+白砂青松 > hakushaseishou\ ;
+花嫁御寮 > hanayomegoryou\ ;
+新陳代謝 > shinchintaisha\ ;
+一六銀行 > ichirokuginkou\ ;
+就職斡旋 > shuushokuassen\ ;
+鞭毛虫症 > benmouchuushou\ ;
+絶体絶命 > zettaizetsumei\ ;
+精神分析 > seishinbunseki\ ;
+系列会社 > keiretsugaisha\ ;
+分子間力 > bunshikanryoku\ ;
+企業戦略 > kigyousenryaku\ ;
+国民所得 > kokuminshotoku\ ;
+輸出制限 > yushutsuseigen\ ;
+特定銘柄 > tokuteimeigara\ ;
+財務体質 > zaimutaishitsu\ ;
+警察学校 > keisatsugakkou\ ;
+不法侵入 > fuhoushin''nyuu\ ;
+生活設計 > seikatsusekkei\ ;
+軽薄短小 > keihakutanshou\ ;
+算術平均 > sanjutsuheikin\ ;
+即席料理 > sokusekiryouri\ ;
+物理療法 > butsuriryouhou\ ;
+青酸中毒 > seisanchuudoku\ ;
+宗教法人 > shuukyouhoujin\ ;
+写真植字 > shashinshokuji\ ;
+緊縮財政 > kinshukuzaisei\ ;
+単性生殖 > tanseiseishoku\ ;
+高等生物 > koutouseibutsu\ ;
+興味津々 > kyoumishinshin\ ;
+保証牛乳 > hoshougyuunyuu\ ;
+受胎調節 > jutaichousetsu\ ;
+透析療法 > tousekiryouhou\ ;
+感覚神経 > kankakushinkei\ ;
+専門知識 > senmonchishiki\ ;
+軍拡競争 > gunkakukyousou\ ;
+登場人物 > toujoujinbutsu\ ;
+非現実的 > higenjitsuteki\ ;
+逆性石鹸 > gyakuseisekken\ ;
+幽門狭窄 > yuumonkyousaku\ ;
+連邦当局 > renpoutoukyoku\ ;
+直射日光 > chokushanikkou\ ;
+先任将校 > sen''ninshoukou\ ;
+謹厳実直 > kingenjitchoku\ ;
+店頭取引 > tentoutorihiki\ ;
+発売禁止 > hatsubaikinshi\ ;
+品質管理 > hinshitsukanri\ ;
+編入試験 > hen''nyuushiken\ ;
+伝達関数 > dentatsukansuu\ ;
+尽忠報国 > jinchuuhoukoku\ ;
+労使協調 > roushikyouchou\ ;
+百色眼鏡 > hyakuiromegane\ ;
+中性子束 > chuuseishisoku\ ;
+緊急対策 > kinkyuutaisaku\ ;
+印刷技術 > insatsugijutsu\ ;
+心的表示 > shintekihyouji\ ;
+名所旧跡 > meishokyuuseki\ ;
+投資信託 > toushishintaku\ ;
+新韓国党 > shinkankokutou\ ;
+国際条約 > kokusaijouyaku\ ;
+七堂伽藍 > shichidougaran\ ;
+親族関係 > shinzokukankei\ ;
+傘形碍子 > kasagatagaishi\ ;
+悪漢小説 > akkanshousetsu\ ;
+公敵一号 > koutekiichigou\ ;
+水質汚濁 > suishitsuodaku\ ;
+精神療法 > seishinryouhou\ ;
+茫然自失 > bouzenjishitsu\ ;
+地質時代 > chishitsujidai\ ;
+立入禁止 > tachiirikinshi\ ;
+大同団結 > daidoudanketsu\ ;
+貯金通帳 > chokintsuuchou\ ;
+斎戒沐浴 > saikaimokuyoku\ ;
+新制大学 > shinseidaigaku\ ;
+共同責任 > kyoudousekinin\ ;
+新聞発表 > shinbunhappyou\ ;
+車内改札 > shanaikaisatsu\ ;
+昆虫学者 > konchuugakusha\ ;
+退職年金 > taishokunenkin\ ;
+分割統治 > bunkatsutouchi\ ;
+確率過程 > kakuritsukatei\ ;
+研究発表 > kenkyuuhappyou\ ;
+旧約聖書 > kyuuyakuseisho\ ;
+蒲鉾兵舎 > kamabokoheisha\ ;
+経費節約 > keihisetsuyaku\ ;
+筋萎縮症 > kin''ishukushou\ ;
+優生手術 > yuuseishujutsu\ ;
+公共料金 > koukyouryoukin\ ;
+強制中断 > kyouseichuudan\ ;
+万有引力 > ban''yuuinryoku\ ;
+立太子式 > rittaishishiki\ ;
+日内周期 > nichinaishuuki\ ;
+憲法解釈 > kenpoukaishaku\ ;
+美的生活 > bitekiseikatsu\ ;
+団体割引 > dantaiwaribiki\ ;
+国際交流 > kokusaikouryuu\ ;
+冠状静脈 > kanjoujoumyaku\ ;
+逆三角形 > gyakusankakkei\ ;
+市立学校 > shiritsugakkou\ ;
+複雑怪奇 > fukuzatsukaiki\ ;
+高層建築 > kousougenchiku\ ;
+真珠養殖 > shinjuyoushoku\ ;
+申告用紙 > shinkokuyoushi\ ;
+局地戦争 > kyokuchisensou\ ;
+重要人物 > juuyoujinbutsu\ ;
+活版印刷 > kappan''insatsu\ ;
+連日連夜 > renjitsuren''ya\ ;
+三者対立 > sanshatairitsu\ ;
+求妻広告 > kyuusaikoukoku\ ;
+狂言自殺 > kyougenjisatsu\ ;
+性染色体 > seisenshokutai\ ;
+凸版印刷 > toppan''insatsu\ ;
+刺身包丁 > sashimibouchou\ ;
+日米貿易 > nichibeiboueki\ ;
+軍事協力 > gunjikyouryoku\ ;
+極限状態 > kyokugenjoutai\ ;
+物理現象 > butsurigenshou\ ;
+人身攻撃 > jinshinkougeki\ ;
+記憶喪失 > kiokusoushitsu\ ;
+社会秩序 > shakaichitsujo\ ;
+侃侃諤諤 > kankangakugaku\ ;
+減価償却 > genkashoukyaku\ ;
+空中査察 > kuuchuusasatsu\ ;
+素人芝居 > shiroutoshibai\ ;
+一六勝負 > ichirokushoubu\ ;
+交響楽団 > koukyougakudan\ ;
+血液銀行 > ketsuekiginkou\ ;
+商品在高 > shouhinzaidaka\ ;
+物理学者 > butsurigakusha\ ;
+年百年中 > nenbyakunenjuu\ ;
+枝葉末節 > shiyoumassetsu\ ;
+軍隊生活 > guntaiseikatsu\ ;
+比較的小 > hikakutekishou\ ;
+潜在能力 > senzainouryoku\ ;
+工学博士 > kougakuhakushi\ ;
+有償契約 > yuushoukeiyaku\ ;
+新聞広告 > shinbunkoukoku\ ;
+上級曹長 > joukyuusouchou\ ;
+乱診乱療 > ranshinranryou\ ;
+集合住宅 > shuugoujuutaku\ ;
+御食事処 > oshokujidokoro\ ;
+養殖真珠 > youshokushinju\ ;
+内部告発 > naibukokuhatsu\ ;
+名目賃金 > meimokuchingin\ ;
+相対湿度 > soutaishitsudo\ ;
+本末転倒 > honmatsutentou\ ;
+学校生活 > gakkouseikatsu\ ;
+入国査証 > nyuukokusashou\ ;
+自律神経 > jiritsushinkei\ ;
+姉様人形 > anesamaningyou\ ;
+戦戦恐恐 > sensenkyoukyou\ ;
+衝撃関数 > shougekikansuu\ ;
+巧言令色 > kougenreishoku\ ;
+変温動物 > hen''ondoubutsu\ ;
+原始動物 > genshidoubutsu\ ;
+空間芸術 > kuukangeijutsu\ ;
+侃々諤々 > kankangakugaku\ ;
+開店休業 > kaitenkyuugyou\ ;
+娯楽施設 > gorakushisetsu\ ;
+半永久的 > han''eikyuuteki\ ;
+食糧事情 > shokuryoujijou\ ;
+可逆反応 > kagyakuhan''nou\ ;
+特別会員 > tokubetsukaiin\ ;
+死活問題 > shikatsumondai\ ;
+系統神学 > keitoushingaku\ ;
+軟骨魚類 > nankotsugyorui\ ;
+各人各様 > kakujinkakuyou\ ;
+通信事業 > tsuushinjigyou\ ;
+貿易障壁 > bouekishouheki\ ;
+単一通貨 > tan''itsutsuuka\ ;
+千両役者 > senryouyakusha\ ;
+到着時刻 > touchakujikoku\ ;
+概算要求 > gaisan''youkyuu\ ;
+国民年金 > kokumin''nenkin\ ;
+泥水稼業 > doromizukagyou\ ;
+在日米軍 > zainichibeigun\ ;
+越境入学 > ekkyounyuugaku\ ;
+数理哲学 > suuritetsugaku\ ;
+唯物史観 > yuibutsushikan\ ;
+商業学校 > shougyougakkou\ ;
+左大括弧 > hidaridaikakko\ ;
+民族精神 > minzokuseishin\ ;
+実力行為 > jitsuryokukoui\ ;
+海綿動物 > kaimendoubutsu\ ;
+米軍兵力 > beigunheiryoku\ ;
+就学年齢 > shuugakunenrei\ ;
+鉱物資源 > koubutsushigen\ ;
+軟式野球 > nanshikiyakyuu\ ;
+信託統治 > shintakutouchi\ ;
+経済活動 > keizaikatsudou\ ;
+兵式体操 > heishikitaisou\ ;
+生殖細胞 > seishokusaibou\ ;
+地形測量 > chikeisokuryou\ ;
+商業資本 > shougyoushihon\ ;
+数値目標 > suuchimokuhyou\ ;
+一得一失 > ittokuisshitsu\ ;
+通信販売 > tsuushinhanbai\ ;
+強制執行 > kyouseishikkou\ ;
+幻覚症状 > genkakushoujou\ ;
+北陸地方 > hokurikuchihou\ ;
+割引発行 > waribikihakkou\ ;
+広報活動 > kouhoukatsudou\ ;
+山高帽子 > yamatakaboushi\ ;
+染色工場 > senshokukoujou\ ;
+公式訪問 > koushikihoumon\ ;
+総合開発 > sougoukaihatsu\ ;
+連立政権 > renritsuseiken\ ;
+差別表現 > sabetsuhyougen\ ;
+権力闘争 > kenryokutousou\ ;
+製品戦略 > seihinsenryaku\ ;
+分水山脈 > bunsuisanmyaku\ ;
+誘電正接 > yuudenseisetsu\ ;
+知覚神経 > chikakushinkei\ ;
+逐条審議 > chikujoushingi\ ;
+千島列島 > chishimarettou\ ;
+輸出超過 > yushutsuchouka\ ;
+尊王討幕 > son''noutoubaku\ ;
+情報通信 > jouhoutsuushin\ ;
+超越交代 > chouetsukoutai\ ;
+生活空間 > seikatsukuukan\ ;
+前立腺炎 > zenritsusen''en\ ;
+行政改革 > gyouseikaikaku\ ;
+律令国家 > ritsuryoukokka\ ;
+心霊現象 > shinreigenshou\ ;
+生誕百年 > seitanhyakunen\ ;
+自動着信 > jidouchakushin\ ;
+第三勢力 > daisanseiryoku\ ;
+書留郵便 > kakitomeyuubin\ ;
+知識体系 > chishikitaikei\ ;
+集合記述 > shuugoukijutsu\ ;
+三百諸侯 > sanbyakushokou\ ;
+大衆文学 > taishuubungaku\ ;
+中等教育 > chuutoukyouiku\ ;
+教育行政 > kyouikugyousei\ ;
+武装中立 > busouchuuritsu\ ;
+平和協力 > heiwakyouryoku\ ;
+電鉄会社 > dentetsugaisha\ ;
+出席日数 > shussekinissuu\ ;
+県立病院 > kenritsubyouin\ ;
+粒粒辛苦 > ryuuryuushinku\ ;
+偏旁冠脚 > henboukankyaku\ ;
+販売促進 > hanbaisokushin\ ;
+信託投資 > shintakutoushi\ ;
+中小企業 > chuushoukigyou\ ;
+三行広告 > sangyoukoukoku\ ;
+血液循環 > ketsuekijunkan\ ;
+連結決算 > renketsukessan\ ;
+骨軟化症 > kotsunankashou\ ;
+政治哲学 > seijitetsugaku\ ;
+商業放送 > shougyouhousou\ ;
+国防総省 > kokubousoushou\ ;
+生活指導 > seikatsushidou\ ;
+炎熱地獄 > en''netsujigoku\ ;
+八面玲瓏 > hachimenreirou\ ;
+面会謝絶 > menkaishazetsu\ ;
+道路標識 > dourohyoushiki\ ;
+国営通信 > kokueitsuushin\ ;
+適材適所 > tekizaitekisho\ ;
+劇症肝炎 > gekishoukan''en\ ;
+物情騒然 > butsujousouzen\ ;
+公民生活 > kouminseikatsu\ ;
+入学試験 > nyuugakushiken\ ;
+絶対絶命 > zettaizetsumei\ ;
+事々物々 > jijibutsubutsu\ ;
+個個別別 > kokobetsubetsu\ ;
+合唱隊長 > gasshoutaichou\ ;
+乾燥牛乳 > kansougyuunyuu\ ;
+直系尊属 > chokkeisonzoku\ ;
+入学願書 > nyuugakugansho\ ;
+出発時間 > shuppatsujikan\ ;
+主要人物 > shuyoujinbutsu\ ;
+文学作品 > bungakusakuhin\ ;
+軽便鉄道 > keibentetsudou\ ;
+割引市場 > waribikishijou\ ;
+失踪宣告 > shissousenkoku\ ;
+化学結合 > kagakuketsugou\ ;
+保険料率 > hokenryouritsu\ ;
+信越本線 > shinetsuhonsen\ ;
+神経中枢 > shinkeichuusuu\ ;
+発光動物 > hakkoudoubutsu\ ;
+複式火山 > fukushikikazan\ ;
+堅忍不抜 > ken''ninfubatsu\ ;
+耐乏生活 > taibouseikatsu\ ;
+社会通念 > shakaitsuunen\ ;
+接客態度 > sekkyakutaido\ ;
+軽爆撃機 > keibakugekiki\ ;
+署名捺印 > shomeinatsuin\ ;
+胸部疾患 > kyoubushikkan\ ;
+象牙取引 > zougetorihiki\ ;
+日曜大工 > nichiyoudaiku\ ;
+目玉商品 > medamashouhin\ ;
+製薬会社 > seiyakugaisha\ ;
+投光照明 > toukoushoumei\ ;
+清廉潔白 > seirenkeppaku\ ;
+敵前逃亡 > tekizentoubou\ ;
+日刊新聞 > nikkanshinbun\ ;
+抱腹絶倒 > houfukuzettou\ ;
+悪虐無道 > akugyakumudou\ ;
+国家権力 > kokkakenryoku\ ;
+南洋諸島 > nan''youshotou\ ;
+囚人労働 > shuujinroudou\ ;
+劣等観念 > rettoukan''nen\ ;
+関係官庁 > kankeikanchou\ ;
+農民文学 > nouminbungaku\ ;
+自然現象 > shizengenshou\ ;
+腎臓結石 > jinzoukesseki\ ;
+施政方針 > shiseihoushin\ ;
+天竺浪人 > tenjikurounin\ ;
+霊魂不滅 > reikonfumetsu\ ;
+公共組合 > koukyoukumiai\ ;
+有線電信 > yuusendenshin\ ;
+血行障害 > kekkoushougai\ ;
+人的資源 > jintekishigen\ ;
+地方行政 > chihougyousei\ ;
+震天動地 > shintendouchi\ ;
+第三帝国 > daisanteikoku\ ;
+天文学者 > tenmongakusha\ ;
+深夜放送 > shin''yahousou\ ;
+音声形式 > onseikeishiki\ ;
+交通問題 > koutsuumondai\ ;
+公共投資 > koukyoutoushi\ ;
+劃時代的 > kakujidaiteki\ ;
+同族会社 > douzokugaisha\ ;
+心理描写 > shinribyousha\ ;
+技術水準 > gijutsusuijun\ ;
+理学博士 > rigakuhakushi\ ;
+局所麻酔 > kyokushomasui\ ;
+産別会議 > sanbetsukaigi\ ;
+就学児童 > shuugakujidou\ ;
+空中給油 > kuuchuukyuuyu\ ;
+国際規格 > kokusaikikaku\ ;
+学校新聞 > gakkoushinbun\ ;
+情報産業 > jouhousangyou\ ;
+登録番号 > tourokubangou\ ;
+土木工学 > dobokukougaku\ ;
+生体反応 > seitaihan''nou\ ;
+象徴主義 > shouchoushugi\ ;
+音楽教育 > ongakukyouiku\ ;
+観測地点 > kansokuchiten\ ;
+技術同士 > gijutsudoushi\ ;
+応急攻撃 > oukyuukougeki\ ;
+同仁教会 > doujinkyoukai\ ;
+実働時間 > jitsudoujikan\ ;
+青空駐車 > aozorachuusha\ ;
+電力輸送 > denryokuyusou\ ;
+軍隊教育 > guntaikyouiku\ ;
+遠洋漁業 > en''yougyogyou\ ;
+保障占領 > hoshousenryou\ ;
+交換法則 > koukanhousoku\ ;
+牽引療法 > ken''inryouhou\ ;
+駅伝競走 > ekidenkyousou\ ;
+切歯扼腕 > sesshiyakuwan\ ;
+団体交渉 > dantaikoushou\ ;
+亭主関白 > teishukanpaku\ ;
+一段動詞 > ichidandoushi\ ;
+一般幕僚 > ippanbakuryou\ ;
+寝台列車 > shindairessha\ ;
+投擲競技 > toutekikyougi\ ;
+気象通報 > kishoutsuuhou\ ;
+開析台地 > kaisekidaichi\ ;
+実用主義 > jitsuyoushugi\ ;
+工場実習 > koujoujisshuu\ ;
+中継貿易 > chuukeiboueki\ ;
+性能特性 > seinoutokusei\ ;
+最後通牒 > saigotsuuchou\ ;
+国際結婚 > kokusaikekkon\ ;
+造本技術 > zouhongijutsu\ ;
+妨害工作 > bougaikousaku\ ;
+民族意識 > minzokuishiki\ ;
+贅沢三昧 > zeitakuzanmai\ ;
+写真製版 > shashinseihan\ ;
+学校教育 > gakkoukyouiku\ ;
+霧中信号 > muchuushingou\ ;
+精神状態 > seishinjoutai\ ;
+商科大学 > shoukadaigaku\ ;
+写真結婚 > shashinkekkon\ ;
+共同戦線 > kyoudousensen\ ;
+火山活動 > kazankatsudou\ ;
+麦稈細工 > mugiwarazaiku\ ;
+勤労所得 > kinroushotoku\ ;
+首相官邸 > shushoukantei\ ;
+読書三昧 > dokushozanmai\ ;
+中等教員 > chuutoukyouin\ ;
+一次電流 > ichijidenryuu\ ;
+台中関係 > taichuukankei\ ;
+秘密結社 > himitsukessha\ ;
+東方拡大 > touhoukakudai\ ;
+近隣諸国 > kinrinshokoku\ ;
+労働階級 > roudoukaikyuu\ ;
+貞操観念 > teisoukan''nen\ ;
+民間伝承 > minkandenshou\ ;
+膀胱結石 > boukoukesseki\ ;
+転居通知 > tenkyotsuuchi\ ;
+純正数学 > junseisuugaku\ ;
+男爵夫人 > danshakufujin\ ;
+塩蔵食品 > enzoushokuhin\ ;
+一致団結 > itchidanketsu\ ;
+警察国家 > keisatsukokka\ ;
+経済白書 > keizaihakusho\ ;
+穀倉地帯 > kokusouchitai\ ;
+環境事業 > kankyoujigyou\ ;
+総合商社 > sougoushousha\ ;
+少年労働 > shounenroudou\ ;
+一挙両得 > ikkyoryoutoku\ ;
+測定装置 > sokuteisouchi\ ;
+前衛美術 > zen''eibijutsu\ ;
+皆既月食 > kaikigesshoku\ ;
+公団住宅 > koudanjuutaku\ ;
+設備投資 > setsubitoushi\ ;
+日常茶飯 > nichijousahan\ ;
+群集心理 > gunshuushinri\ ;
+百戦練磨 > hyakusenrenma\ ;
+即興詩人 > sokkyoushijin\ ;
+善隣政策 > zenrinseisaku\ ;
+前受収益 > maeukeshuueki\ ;
+国民皆兵 > kokuminkaihei\ ;
+骨相学者 > kossougakusha\ ;
+戸別訪問 > kobetsuhoumon\ ;
+爆弾声明 > bakudanseimei\ ;
+道楽息子 > dourakumusuko\ ;
+癒傷組織 > yushousoshiki\ ;
+男子学生 > danshigakusei\ ;
+貫通銃創 > kantsuujuusou\ ;
+新郎新婦 > shinroushinpu\ ;
+空挺作戦 > kuuteisakusen\ ;
+配管工業 > haikankougyou\ ;
+宇宙通信 > uchuutsuushin\ ;
+等比数列 > touhisuuretsu\ ;
+床上浸水 > yukaueshinsui\ ;
+自然環境 > shizenkankyou\ ;
+日中戦争 > nitchuusensou\ ;
+標題音楽 > hyoudaiongaku\ ;
+劣等複合 > rettoufukugou\ ;
+眼球銀行 > gankyuuginkou\ ;
+市場分析 > shijoubunseki\ ;
+中間試験 > chuukanshiken\ ;
+証券会社 > shoukengaisha\ ;
+漏話結合 > rouwagetsugou\ ;
+国際紛争 > kokusaifunsou\ ;
+集団行動 > shuudankoudou\ ;
+車両縦隊 > sharyoujuutai\ ;
+交代操業 > koutaisougyou\ ;
+作者未詳 > sakushamishou\ ;
+西本願寺 > nishihonganji\ ;
+永代借地 > eitaishakuchi\ ;
+子宮筋腫 > shikyuukinshu\ ;
+切手蒐集 > kitteshuushuu\ ;
+官費留学 > kanpiryuugaku\ ;
+編集主幹 > henshuushukan\ ;
+生産技術 > seisangijutsu\ ;
+水平応力 > suiheiouryoku\ ;
+先端技術 > sentangijutsu\ ;
+神宮球場 > jinguukyuujou\ ;
+音楽大学 > ongakudaigaku\ ;
+侵略行為 > shinryakukoui\ ;
+入射光線 > nyuushakousen\ ;
+三角函数 > sankakukansuu\ ;
+立体写真 > rittaishashin\ ;
+国際関係 > kokusaikankei\ ;
+浄土真宗 > joudoshinshuu\ ;
+三国同盟 > sangokudoumei\ ;
+驚天動地 > kyoutendouchi\ ;
+空中滑走 > kuuchuukassou\ ;
+国際問題 > kokusaimondai\ ;
+社外発信 > shagaihasshin\ ;
+跳梁跋扈 > chouryoubakko\ ;
+集中砲火 > shuuchuuhouka\ ;
+人間工学 > ningenkougaku\ ;
+身元確認 > mimotokakunin\ ;
+差別待遇 > sabetsutaiguu\ ;
+千鳥格子 > chidorigoushi\ ;
+仏像二体 > butsuzounitai\ ;
+全景写真 > zenkeishashin\ ;
+公共団体 > koukyoudantai\ ;
+堆積輪廻 > taisekirin''ne\ ;
+一般生活 > ippanseikatsu\ ;
+横河電機 > yokogawadenki\ ;
+中継放送 > chuukeihousou\ ;
+禁止条約 > kinshijouyaku\ ;
+全国放送 > zenkokuhousou\ ;
+党利党略 > touritouryaku\ ;
+外交交渉 > gaikoukoushou\ ;
+学士院賞 > gakushiinshou\ ;
+行動計画 > koudoukeikaku\ ;
+共有財産 > kyouyuuzaisan\ ;
+逸失利益 > isshitsurieki\ ;
+農地改革 > nouchikaikaku\ ;
+交通渋滞 > koutsuujuutai\ ;
+神経細胞 > shinkeisaibou\ ;
+業界団体 > gyoukaidantai\ ;
+勧善懲悪 > kanzenchouaku\ ;
+共産陣営 > kyousanjin''ei\ ;
+欠席裁判 > kessekisaiban\ ;
+半革装丁 > hankawasoutei\ ;
+競争市場 > kyousoushijou\ ;
+知的財産 > chitekizaisan\ ;
+南北問題 > nanbokumondai\ ;
+突然変異 > totsuzenhen''i\ ;
+適応障害 > tekioushougai\ ;
+混載貨物 > konsaikamotsu\ ;
+耐障害性 > taishougaisei\ ;
+近親相姦 > kinshinsoukan\ ;
+大道商人 > daidoushounin\ ;
+不信任案 > fushin''nin''an\ ;
+宮廷音楽 > kyuuteiongaku\ ;
+緩衝地帯 > kanshouchitai\ ;
+血清注射 > kesseichuusha\ ;
+加糖粉乳 > katoufun''nyuu\ ;
+信販会社 > shinpangaisha\ ;
+十一献金 > juuichikenkin\ ;
+福祉事業 > fukushijigyou\ ;
+暖衣飽食 > dan''ihoushoku\ ;
+準決勝戦 > junkesshousen\ ;
+野生動物 > yaseidoubutsu\ ;
+社会現象 > shakaigenshou\ ;
+北欧諸国 > hokuoushokoku\ ;
+自然休会 > shizenkyuukai\ ;
+良二千石 > ryounisenseki\ ;
+文学青年 > bungakuseinen\ ;
+修道誓願 > shuudouseigan\ ;
+食糧援助 > shokuryouenjo\ ;
+衆議一決 > shuugiikketsu\ ;
+酸素吸入 > sansokyuunyuu\ ;
+生臭坊主 > namagusabouzu\ ;
+軍事施設 > gunjishisetsu\ ;
+郵便振替 > yuubinfurikae\ ;
+方針決定 > houshinkettei\ ;
+就業時間 > shuugyoujikan\ ;
+人口抑制 > jinkouyokusei\ ;
+軍人恩給 > gunjin''onkyuu\ ;
+人工流産 > jinkouryuuzan\ ;
+真剣勝負 > shinkenshoubu\ ;
+隠退生活 > intaiseikatsu\ ;
+役員報酬 > yakuinhoushuu\ ;
+割引時間 > waribikijikan\ ;
+白葡萄酒 > shirobudoushu\ ;
+制服制帽 > seifukuseibou\ ;
+古色蒼然 > koshokusouzen\ ;
+留置郵便 > tomeokiyuubin\ ;
+計画倒産 > keikakutousan\ ;
+皆既日食 > kaikinisshoku\ ;
+連戦連勝 > rensenrenshou\ ;
+享楽主義 > kyourakushugi\ ;
+広告媒体 > koukokubaitai\ ;
+国民審査 > kokuminshinsa\ ;
+混声合唱 > konseigasshou\ ;
+神道信者 > shintoushinja\ ;
+実況放送 > jikkyouhousou\ ;
+分光分析 > bunkoubunseki\ ;
+産業組合 > sangyoukumiai\ ;
+取捨選択 > shushasentaku\ ;
+地震学者 > jishingakusha\ ;
+大阪大学 > oosakadaigaku\ ;
+研究方法 > kenkyuuhouhou\ ;
+断郊競走 > dankoukyousou\ ;
+比較文学 > hikakubungaku\ ;
+士農工商 > shinoukoushou\ ;
+乾坤一擲 > kenkon''itteki\ ;
+停止信号 > teishishingou\ ;
+建築現場 > kenchikugenba\ ;
+国連大使 > kokurentaishi\ ;
+眉目秀麗 > bimokushuurei\ ;
+情緒障害 > joushoshougai\ ;
+謹賀新年 > kingashin''nen\ ;
+練習問題 > renshuumondai\ ;
+人畜無害 > jinchikumugai\ ;
+上流社会 > jouryuushakai\ ;
+陸海空軍 > rikukaikuugun\ ;
+真相調査 > shinsouchousa\ ;
+表敬訪問 > hyoukeihoumon\ ;
+普通教育 > futsuukyouiku\ ;
+公民教育 > kouminkyouiku\ ;
+水害対策 > suigaitaisaku\ ;
+将来展望 > shouraitenbou\ ;
+尋問調書 > jinmonchousho\ ;
+着弾距離 > chakudankyori\ ;
+天真爛漫 > tenshinranman\ ;
+反射神経 > hanshashinkei\ ;
+青色申告 > aoiroshinkoku\ ;
+造形美術 > zoukeibijutsu\ ;
+史的現在 > shitekigenzai\ ;
+内部生活 > naibuseikatsu\ ;
+構造記述 > kouzoukijutsu\ ;
+共存共栄 > kyouzonkyouei\ ;
+帯状疱疹 > taijouhoushin\ ;
+現実主義 > genjitsushugi\ ;
+年々歳々 > nen''nensaisai\ ;
+研究論文 > kenkyuuronbun\ ;
+最終編成 > saishuuhensei\ ;
+専修学校 > senshuugakkou\ ;
+右中括弧 > migichuukakko\ ;
+修道院長 > shuudouinchou\ ;
+家督相続 > katokusouzoku\ ;
+宿命論者 > shukumeironja\ ;
+温度調節 > ondochousetsu\ ;
+言語能力 > gengonouryoku\ ;
+利潤追求 > rijuntsuikyuu\ ;
+統率理論 > tousotsuriron\ ;
+良風美俗 > ryoufuubizoku\ ;
+国民学校 > kokumingakkou\ ;
+単為生殖 > tan''iseishoku\ ;
+二十日鼠 > hatsukanezumi\ ;
+貿易収支 > bouekishuushi\ ;
+人工心臓 > jinkoushinzou\ ;
+天津日嗣 > amatsuhitsugi\ ;
+群雄割拠 > gun''yuukakkyo\ ;
+先天梅毒 > sentenbaidoku\ ;
+人工心肺 > jinkoushinbai\ ;
+呼吸中枢 > kokyuuchuusuu\ ;
+駐留部隊 > chuuryuubutai\ ;
+殺生禁断 > sesshoukindan\ ;
+無銭遊興 > musen''yuukyou\ ;
+主席全権 > shusekizenken\ ;
+甲乙丙丁 > kouotsuheitei\ ;
+補欠選挙 > hoketsusenkyo\ ;
+微量分析 > biryoubunseki\ ;
+地域代表 > chiikidaihyou\ ;
+画一主義 > kakuitsushugi\ ;
+京都大学 > kyoutodaigaku\ ;
+生体工学 > seitaikougaku\ ;
+泡沫候補 > houmatsukouho\ ;
+相続財産 > souzokuzaisan\ ;
+対戦成績 > taisenseiseki\ ;
+国際空港 > kokusaikuukou\ ;
+国連総会 > kokurensoukai\ ;
+専門教育 > senmonkyouiku\ ;
+営業報告 > eigyouhoukoku\ ;
+血液検査 > ketsuekikensa\ ;
+革新主義 > kakushinshugi\ ;
+露出時間 > roshutsujikan\ ;
+投票用紙 > touhyouyoushi\ ;
+薬用石鹸 > yakuyousekken\ ;
+単独行動 > tandokukoudou\ ;
+夫婦生活 > fuufuseikatsu\ ;
+肉体関係 > nikutaikankei\ ;
+軍事警察 > gunjikeisatsu\ ;
+新婚旅行 > shinkonryokou\ ;
+陽性反応 > youseihan''nou\ ;
+軸差応力 > jikusaouryoku\ ;
+人類学者 > jinruigakusha\ ;
+武士気質 > bushikishitsu\ ;
+第一人者 > daiichininsha\ ;
+家庭生活 > kateiseikatsu\ ;
+危険人物 > kikenjinbutsu\ ;
+大学教授 > daigakukyouju\ ;
+前進運動 > zenshin''undou\ ;
+活動成果 > katsudouseika\ ;
+総合収支 > sougoushuushi\ ;
+各駅停車 > kakuekiteisha\ ;
+触媒作用 > shokubaisayou\ ;
+科学技術 > kagakugijutsu\ ;
+印刷用紙 > insatsuyoushi\ ;
+人的証拠 > jintekishouko\ ;
+抗議活動 > kougikatsudou\ ;
+先取得点 > senshutokuten\ ;
+複合企業 > fukugoukigyou\ ;
+無差別級 > musabetsukyuu\ ;
+多国籍軍 > takokusekigun\ ;
+競争価格 > kyousoukakaku\ ;
+社会人枠 > shakaijinwaku\ ;
+商業地区 > shougyouchiku\ ;
+表層構造 > hyousoukouzou\ ;
+精神衛生 > seishin''eisei\ ;
+航空写真 > koukuushashin\ ;
+上昇気流 > joushoukiryuu\ ;
+北大西洋 > kitataiseiyou\ ;
+行政指導 > gyouseishidou\ ;
+定置漁業 > teichigyogyou\ ;
+最高級品 > saikoukyuuhin\ ;
+出頭命令 > shuttoumeirei\ ;
+出血過多 > shukketsukata\ ;
+電子出版 > denshishuppan\ ;
+色素細胞 > shikisosaibou\ ;
+花嫁衣裳 > hanayomeishou\ ;
+小口現金 > koguchigenkin\ ;
+博学多才 > hakugakutasai\ ;
+外様大名 > tozamadaimyou\ ;
+国民主権 > kokuminshuken\ ;
+公金横領 > koukin''ouryou\ ;
+近郊農業 > kinkounougyou\ ;
+全国大会 > zenkokutaikai\ ;
+吟遊詩人 > gin''yuushijin\ ;
+冷水摩擦 > reisuimasatsu\ ;
+曲学阿世 > kyokugakuasei\ ;
+価格競争 > kakakukyousou\ ;
+禁断症状 > kindanshoujou\ ;
+竜攘虎搏 > ryuujoukohaku\ ;
+正味重量 > shoumijuuryou\ ;
+公証役場 > koushouyakuba\ ;
+清涼飲料 > seiryouinryou\ ;
+毛管現象 > moukangenshou\ ;
+作戦地域 > sakusenchiiki\ ;
+出張旅費 > shutchouryohi\ ;
+放送番組 > housoubangumi\ ;
+永久磁石 > eikyuujishaku\ ;
+売掛勘定 > urikakekanjou\ ;
+間宮海峡 > mamiyakaikyou\ ;
+獄中日記 > gokuchuunikki\ ;
+沈思黙考 > chinshimokkou\ ;
+超国家的 > choukokkateki\ ;
+防火建築 > boukakenchiku\ ;
+金融市場 > kin''yuushijou\ ;
+集団心理 > shuudanshinri\ ;
+入社試験 > nyuushashiken\ ;
+選択値群 > sentakuchigun\ ;
+確率誤差 > kakuritsugosa\ ;
+第四階級 > daiyonkaikyuu\ ;
+逍遥学派 > shouyougakuha\ ;
+黒点周期 > kokutenshuuki\ ;
+美術学校 > bijutsugakkou\ ;
+半死半生 > hanshihanshou\ ;
+快速電車 > kaisokudensha\ ;
+南北戦争 > nanbokusensou\ ;
+小児喘息 > shounizensoku\ ;
+内政干渉 > naiseikanshou\ ;
+公平政策 > kouheiseisaku\ ;
+工業規格 > kougyoukikaku\ ;
+四角四面 > shikakushimen\ ;
+少年少女 > shounenshoujo\ ;
+再販業者 > saihangyousha\ ;
+超高速度 > choukousokudo\ ;
+調査報告 > chousahoukoku\ ;
+海難審判 > kainanshinpan\ ;
+理学修士 > rigakushuushi\ ;
+外的根拠 > gaitekikonkyo\ ;
+生命工学 > seimeikougaku\ ;
+天佑神助 > ten''yuushinjo\ ;
+外国旅行 > gaikokuryokou\ ;
+共同水栓 > kyoudousuisen\ ;
+拡大均衡 > kakudaikinkou\ ;
+凱旋将軍 > gaisenshougun\ ;
+集積回路 > shuusekikairo\ ;
+裾野産業 > susonosangyou\ ;
+鎮魂帰神 > chinkonkishin\ ;
+合格者名 > goukakushamei\ ;
+有資格者 > yuushikakusha\ ;
+化学反応 > kagakuhan''nou\ ;
+需要供給 > juyoukyoukyuu\ ;
+召喚令状 > shoukanreijou\ ;
+試験勉強 > shikenbenkyou\ ;
+温室効果 > onshitsukouka\ ;
+有鉤条虫 > yuukoujouchuu\ ;
+内的根拠 > naitekikonkyo\ ;
+近海漁業 > kinkaigyogyou\ ;
+決戦投票 > kessentouhyou\ ;
+共同社会 > kyoudoushakai\ ;
+唐草模様 > karakusamoyou\ ;
+包皮切断 > houhisetsudan\ ;
+定期取引 > teikitorihiki\ ;
+乾燥洗濯 > kansousentaku\ ;
+集合名詞 > shuugoumeishi\ ;
+小型新聞 > kogatashinbun\ ;
+医療施設 > iryoushisetsu\ ;
+動物油脂 > doubutsuyushi\ ;
+反面教師 > hanmenkyoushi\ ;
+日常会話 > nichijoukaiwa\ ;
+輸入業者 > yunyuugyousha\ ;
+標準価格 > hyoujunkakaku\ ;
+不妊手術 > funinshujutsu\ ;
+山猫争議 > yamanekosougi\ ;
+出世間的 > shussekenteki\ ;
+年中行事 > nenchuugyouji\ ;
+鎌倉時代 > kamakurajidai\ ;
+炎症病巣 > enshoubyousou\ ;
+注意人物 > chuuijinbutsu\ ;
+日洪親善 > nikkoushinzen\ ;
+追加注文 > tsuikachuumon\ ;
+筆写略字 > hissharyakuji\ ;
+献血運動 > kenketsuundou\ ;
+舞台芸術 > butaigeijutsu\ ;
+試験監督 > shikenkantoku\ ;
+撤頭徹尾 > tettoutetsubi\ ;
+疾風迅雷 > shippuujinrai\ ;
+市場環境 > shijoukankyou\ ;
+原成岩石 > genseiganseki\ ;
+前大統領 > zendaitouryou\ ;
+強制送還 > kyouseisoukan\ ;
+同業組合 > dougyoukumiai\ ;
+電気剃刀 > denkikamisori\ ;
+事務局長 > jimukyokuchou\ ;
+経済改革 > keizaikaikaku\ ;
+民俗芸能 > minzokugeinou\ ;
+収穫予想 > shuukakuyosou\ ;
+塩辛蜻蛉 > shiokaratonbo\ ;
+紆余曲折 > uyokyokusetsu\ ;
+極超短波 > gokuchoutanpa\ ;
+主権侵犯 > shukenshinpan\ ;
+中性洗剤 > chuuseisenzai\ ;
+貨物列車 > kamotsuressha\ ;
+血清療法 > kesseiryouhou\ ;
+新案特許 > shin''antokkyo\ ;
+死後硬直 > shigokouchoku\ ;
+唯物主義 > yuibutsushugi\ ;
+日露戦争 > nichirosensou\ ;
+断郊競争 > dankoukyousou\ ;
+同盟条約 > doumeijouyaku\ ;
+一攫千金 > ikkakkusenkin\ ;
+階級闘争 > kaikyuutousou\ ;
+熱硬化剤 > netsukoukazai\ ;
+専用回線 > sen''youkaisen\ ;
+交換学生 > koukangakusei\ ;
+動線計画 > dousenkeikaku\ ;
+民政長官 > minseichoukan\ ;
+判断中止 > handanchuushi\ ;
+局所分岐 > kyokushobunki\ ;
+通常国会 > tsuujoukokkai\ ;
+数値解析 > suuchikaiseki\ ;
+軍備拡張 > gunbikakuchou\ ;
+適者生存 > tekishaseizon\ ;
+精神鑑定 > seishinkantei\ ;
+鉄道輸送 > tetsudouyusou\ ;
+第三階級 > daisankaikyuu\ ;
+千態万様 > sentaiban''you\ ;
+電子工学 > denshikougaku\ ;
+経済状況 > keizaijoukyou\ ;
+社会教育 > shakaikyouiku\ ;
+農耕民族 > noukouminzoku\ ;
+全身全霊 > zenshinzenrei\ ;
+公称資本 > koushoushihon\ ;
+大字片山 > ooazakatayama\ ;
+薬師如来 > yakushinyorai\ ;
+百戦錬磨 > hyakusenrenma\ ;
+同盟休校 > doumeikyuukou\ ;
+中央計画 > chuuoukeikaku\ ;
+中央集権 > chuuoushuuken\ ;
+三角貿易 > sankakuboueki\ ;
+分析化学 > bunsekikagaku\ ;
+少壮士官 > shousoushikan\ ;
+法的根拠 > houtekikonkyo\ ;
+殺害事件 > satsugaijiken\ ;
+自然増収 > shizenzoushuu\ ;
+良性腫瘍 > ryouseishuyou\ ;
+通勤電車 > tsuukindensha\ ;
+少年犯罪 > shounenhanzai\ ;
+水酸化物 > suisankabutsu\ ;
+親戚知己 > shinsekichiki\ ;
+単独決算 > tandokukessan\ ;
+国際情勢 > kokusaijousei\ ;
+街頭演説 > gaitouenzetsu\ ;
+欣喜雀躍 > kinkijakuyaku\ ;
+品種改良 > hinshukairyou\ ;
+公称馬力 > koushoubariki\ ;
+四六時中 > shirokujichuu\ ;
+交通遮断 > koutsuushadan\ ;
+大学紛争 > daigakufunsou\ ;
+財政収支 > zaiseishuushi\ ;
+衆参両院 > shuusanryouin\ ;
+耐火建築 > taikakenchiku\ ;
+視力検査 > shiryokukensa\ ;
+小刀細工 > kogatanazaiku\ ;
+質疑応答 > shitsugioutou\ ;
+捜査当局 > sousatoukyoku\ ;
+照葉狂言 > terihakyougen\ ;
+出征軍人 > shusseigunjin\ ;
+放射能雲 > houshanougumo\ ;
+社会政策 > shakaiseisaku\ ;
+電極電位 > denkyokuden''i\ ;
+人工透析 > jinkoutouseki\ ;
+複合媒体 > fukugoubaitai\ ;
+住民投票 > juumintouhyou\ ;
+工業地帯 > kougyouchitai\ ;
+呼吸困難 > kokyuukon''nan\ ;
+養護施設 > yougoshisetsu\ ;
+輸出規制 > yushutsukisei\ ;
+戦力組成 > senryokusosei\ ;
+決選投票 > kessentouhyou\ ;
+統一見解 > touitsukenkai\ ;
+催眠療法 > saiminryouhou\ ;
+工業製品 > kougyouseihin\ ;
+役人根性 > yakuninkonjou\ ;
+独房監禁 > dokuboukankin\ ;
+導通抵抗 > doutsuuteikou\ ;
+協調主義 > kyouchoushugi\ ;
+会計報告 > kaikeihoukoku\ ;
+台湾海峡 > taiwankaikyou\ ;
+日清戦争 > nisshinsensou\ ;
+宣言発表 > sengenhappyou\ ;
+天体写真 > tentaishashin\ ;
+重量噸数 > juuryoutonsuu\ ;
+明鏡止水 > meikyoushisui\ ;
+年間計画 > nenkankeikaku\ ;
+口述筆記 > koujutsuhikki\ ;
+国際通貨 > kokusaitsuuka\ ;
+健康診断 > kenkoushindan\ ;
+桃山時代 > momoyamajidai\ ;
+職場結婚 > shokubakekkon\ ;
+環境問題 > kankyoumondai\ ;
+証人喚問 > shouninkanmon\ ;
+攻撃方向 > kougekihoukou\ ;
+競争売買 > kyousoubaibai\ ;
+著作権法 > chosakukenhou\ ;
+国際社会 > kokusaishakai\ ;
+新制高校 > shinseikoukou\ ;
+寄生虫症 > kiseichuushou\ ;
+中折帽子 > nakaoreboushi\ ;
+公開練習 > koukairenshuu\ ;
+経済政策 > keizaiseisaku\ ;
+合成写真 > gouseishashin\ ;
+新進作家 > shinshinsakka\ ;
+酸素供給 > sansokyoukyuu\ ;
+交通公社 > koutsuukousha\ ;
+活殺自在 > kassatsujizai\ ;
+電送写真 > densoushashin\ ;
+全知全能 > zenchizen''nou\ ;
+国勢調査 > kokuseichousa\ ;
+流通機構 > ryuutsuukikou\ ;
+兵器輸出 > heikiyushutsu\ ;
+天皇崇拝 > ten''nousuuhai\ ;
+保証人要 > hoshounin''you\ ;
+浮遊生物 > fuyuuseibutsu\ ;
+終身保険 > shuushinhoken\ ;
+懸賞論文 > kenshouronbun\ ;
+市場改革 > shijoukaikaku\ ;
+電力需要 > denryokujuyou\ ;
+臨床尋問 > rinshoujinmon\ ;
+陰極線管 > inkyokusenkan\ ;
+旋光分析 > senkoubunseki\ ;
+化石燃料 > kasekinenryou\ ;
+電信為替 > denshinkawase\ ;
+懐中電灯 > kaichuudentou\ ;
+才色兼備 > saishokukenbi\ ;
+指導要領 > shidouyouryou\ ;
+郵便年金 > yuubin''nenkin\ ;
+関連商品 > kanrenshouhin\ ;
+限界状況 > genkaijoukyou\ ;
+現在完了 > genzaikanryou\ ;
+制約伝搬 > seiyakudenpan\ ;
+丸一週間 > maruisshuukan\ ;
+工業団地 > kougyoudanchi\ ;
+極楽浄土 > gokurakujoudo\ ;
+化学分析 > kagakubunseki\ ;
+同点決勝 > doutenkesshou\ ;
+体外離脱 > taigairidatsu\ ;
+生物兵器 > seibutsuheiki\ ;
+単音節語 > tan''onsetsugo\ ;
+攻撃隊形 > kougekitaikei\ ;
+法人所得 > houjinshotoku\ ;
+大逆事件 > taigyakujiken\ ;
+原始教会 > genshikyoukai\ ;
+価格協定 > kakakukyoutei\ ;
+寓意小説 > guuishousetsu\ ;
+専門技術 > senmongijutsu\ ;
+拡張可能 > kakuchoukanou\ ;
+急進主義 > kyuushinshugi\ ;
+記念式典 > kinenshikiten\ ;
+競合脱線 > kyougoudassen\ ;
+暑中休暇 > shochuukyuuka\ ;
+繁文縟礼 > hanbunjokurei\ ;
+目標管理 > mokuhyoukanri\ ;
+方向観念 > houkoukan''nen\ ;
+海底電信 > kaiteidenshin\ ;
+業界動向 > gyoukaidoukou\ ;
+必要経費 > hitsuyoukeihi\ ;
+水玉模様 > mizutamamoyou\ ;
+出征家族 > shusseikazoku\ ;
+経常収支 > keijoushuushi\ ;
+地球科学 > chikyuukagaku\ ;
+情報技術 > jouhougijutsu\ ;
+空中分解 > kuuchuubunkai\ ;
+強制労働 > kyouseiroudou\ ;
+階級意識 > kaikyuuishiki\ ;
+博士論文 > hakushironbun\ ;
+人格形成 > jinkakukeisei\ ;
+絹糸紡績 > kenshibouseki\ ;
+職場闘争 > shokubatousou\ ;
+教育学部 > kyouikugakubu\ ;
+変速装置 > hensokusouchi\ ;
+真円真珠 > shin''enshinju\ ;
+国民経済 > kokuminkeizai\ ;
+内面描写 > naimenbyousha\ ;
+媒体終端 > baitaishuutan\ ;
+心理療法 > shinriryouhou\ ;
+性的関係 > seitekikankei\ ;
+無銭飲食 > musen''inshoku\ ;
+範疇文法 > hanchuubunpou\ ;
+長期借款 > choukishakkan\ ;
+全体集合 > zentaishuugou\ ;
+右小括弧 > migishoukakko\ ;
+仮想敵国 > kasoutekikoku\ ;
+極楽往生 > gokurakuoujou\ ;
+初等教育 > shotoukyouiku\ ;
+行政命令 > gyouseimeirei\ ;
+対地攻撃 > taichikougeki\ ;
+自然描写 > shizenbyousha\ ;
+金融資本 > kin''yuushihon\ ;
+無能力者 > munouryokusha\ ;
+化学工業 > kagakukougyou\ ;
+行政区画 > gyouseikukaku\ ;
+学習辞典 > gakushuujiten\ ;
+閨閥政治 > keibatsuseiji\ ;
+事業拡充 > jigyoukakujuu\ ;
+農村工業 > nousonkougyou\ ;
+秋雨前線 > akisamezensen\ ;
+共同農場 > kyoudounoujou\ ;
+女権拡張 > jokenkakuchou\ ;
+講習会場 > koushuukaijou\ ;
+汚染物質 > osenbusshitsu\ ;
+状況判断 > joukyouhandan\ ;
+当該官庁 > tougaikanchou\ ;
+仲介貿易 > chuukaiboueki\ ;
+国内市場 > kokunaishijou\ ;
+一枚看板 > ichimaikanban\ ;
+無線通信 > musentsuushin\ ;
+経済大国 > keizaitaikoku\ ;
+反社会的 > hanshakaiteki\ ;
+一利一害 > ichiriichigai\ ;
+二律背反 > niritsuhaihan\ ;
+復元作業 > fukugensagyou\ ;
+人間爆弾 > ningenbakudan\ ;
+季節労働 > kisetsuroudou\ ;
+陸軍大臣 > rikugundaijin\ ;
+断抵抗角 > danteikoukaku\ ;
+通信機関 > tsuushinkikan\ ;
+写真凸版 > shashintoppan\ ;
+化学療法 > kagakuryouhou\ ;
+綱紀粛正 > koukishukusei\ ;
+税制改革 > zeiseikaikaku\ ;
+調停裁判 > chouteisaiban\ ;
+無罪判決 > muzaihanketsu\ ;
+軍事戦略 > gunjisenryaku\ ;
+臨床試験 > rinshoushiken\ ;
+防止指針 > boushishishin\ ;
+気象観測 > kishoukansoku\ ;
+舞台生活 > butaiseikatsu\ ;
+大名旅行 > daimyouryokou\ ;
+作業療法 > sagyouryouhou\ ;
+外国為替 > gaikokukawase\ ;
+都立高校 > toritsukoukou\ ;
+形式主義 > keishikishugi\ ;
+化学工学 > kagakukougaku\ ;
+角運動量 > kakuundouryou\ ;
+完全無欠 > kanzenmuketsu\ ;
+政策決定 > seisakukettei\ ;
+循環小数 > junkanshousuu\ ;
+大韓民国 > daikanminkoku\ ;
+適用業務 > tekiyougyoumu\ ;
+戦争文学 > sensoubungaku\ ;
+九天直下 > kyuutenchokka\ ;
+面従腹背 > menjuufukuhai\ ;
+確保失敗 > kakuhoshippai\ ;
+共通言語 > kyoutsuugengo\ ;
+強制処分 > kyouseishobun\ ;
+断崖絶壁 > dangaizeppeki\ ;
+産業社会 > sangyoushakai\ ;
+各種学校 > kakushugakkou\ ;
+分解写真 > bunkaishashin\ ;
+印刷媒体 > insatsubaitai\ ;
+研究所報 > kenkyuushohou\ ;
+乱射乱撃 > ransharangeki\ ;
+棒腹絶倒 > houfukuzettou\ ;
+特許侵害 > tokkyoshingai\ ;
+定額貯金 > teigakuchokin\ ;
+公衆伝動 > koushuudendou\ ;
+鉄道馬車 > tetsudoubasha\ ;
+内国為替 > naikokukawase\ ;
+種種様様 > shujusamazama\ ;
+喜色満面 > kishokumanmen\ ;
+弁別素性 > benbetsusosei\ ;
+作戦命令 > sakusenmeirei\ ;
+議長職権 > gichoushokken\ ;
+啓蒙思潮 > keimoushichou\ ;
+公娼全廃 > koushouzenpai\ ;
+対面交通 > taimenkoutsuu\ ;
+一問一答 > ichimon''ittou\ ;
+電子密度 > denshimitsudo\ ;
+超低価格 > chouteikakaku\ ;
+一括売買 > ikkatsubaibai\ ;
+制約条件 > seiyakujouken\ ;
+休戦会談 > kyuusenkaidan\ ;
+版権侵害 > hankenshingai\ ;
+隔離病棟 > kakuribyoutou\ ;
+生鮮料品 > seisenryouhin\ ;
+上昇傾向 > joushoukeikou\ ;
+不法入国 > fuhounyuugoku\ ;
+教養学部 > kyouyougakubu\ ;
+高信頼性 > koushinraisei\ ;
+家宅捜索 > katakusousaku\ ;
+計画経済 > keikakukeizai\ ;
+三軸試験 > sanjikushiken\ ;
+最終段階 > saishuudankai\ ;
+収入印紙 > shuunyuuinshi\ ;
+半熟練工 > hanjukurenkou\ ;
+写真判定 > shashinhantei\ ;
+経済観念 > keizaikan''nen\ ;
+賃金水準 > chinginsuijun\ ;
+営業収支 > eigyoushuushi\ ;
+三相交流 > sansoukouryuu\ ;
+経営戦略 > keieisenryaku\ ;
+春夏秋冬 > shunkashuutou\ ;
+焦点深度 > shoutenshindo\ ;
+一時所得 > ichijishotoku\ ;
+杉花粉症 > sugikafunshou\ ;
+人民投票 > jinmintouhyou\ ;
+合従連衡 > gasshourenkou\ ;
+烏野豌豆 > karasunoendou\ ;
+無芸大食 > mugeitaishoku\ ;
+国際連合 > kokusairengou\ ;
+熱交換器 > netsukoukanki\ ;
+宇宙開発 > uchuukaihatsu\ ;
+漢文訓読 > kanbunkundoku\ ;
+空間感覚 > kuukankankaku\ ;
+二人三脚 > nininsankyaku\ ;
+権力主義 > kenryokushugi\ ;
+募集広告 > boshuukoukoku\ ;
+学習理論 > gakushuuriron\ ;
+駐車禁止 > chuushakinshi\ ;
+共同宣言 > kyoudousengen\ ;
+天地神明 > tenchishinmei\ ;
+詳細情報 > shousaijouhou\ ;
+牛飲馬食 > gyuuinbashoku\ ;
+金城鉄壁 > kinjouteppeki\ ;
+集中講義 > shuuchuukougi\ ;
+変形虫類 > henkeichuurui\ ;
+公的年金 > koutekinenkin\ ;
+週刊雑誌 > shuukanzasshi\ ;
+紡績工場 > bousekikoujou\ ;
+初等数学 > shotousuugaku\ ;
+残存日数 > zanson''nissuu\ ;
+国際展開 > kokusaitenkai\ ;
+年功序列 > nenkoujoretsu\ ;
+商業都市 > shougyoutoshi\ ;
+中途退学 > chuutotaigaku\ ;
+共同会見 > kyoudoukaiken\ ;
+憲法学者 > kenpougakusha\ ;
+急転直下 > kyuutenchokka\ ;
+原子爆弾 > genshibakudan\ ;
+登山鉄道 > tozantetsudou\ ;
+物理化学 > butsurikagaku\ ;
+給水制限 > kyuusuiseigen\ ;
+朝鮮戦争 > chousensensou\ ;
+嫌気生物 > kenkiseibutsu\ ;
+選択状態 > sentakujoutai\ ;
+高峰八座 > kouhouhachiza\ ;
+不消化物 > fushoukabutsu\ ;
+法的文書 > houtekibunsho\ ;
+秘密選挙 > himitsusenkyo\ ;
+地球化学 > chikyuukagaku\ ;
+新熱帯区 > shin''nettaiku\ ;
+結婚指輪 > kekkon''yubiwa\ ;
+善隣友好 > zenrin''yuukou\ ;
+受取手形 > uketoritegata\ ;
+決算報告 > kessanhoukoku\ ;
+心理学者 > shinrigakusha\ ;
+論理形式 > ronrikeishiki\ ;
+低頭平身 > teitouheishin\ ;
+混合農業 > kongounougyou\ ;
+文芸作品 > bungeisakuhin\ ;
+有閑階級 > yuukankaikyuu\ ;
+友好条約 > yuukoujouyaku\ ;
+則天去私 > sokutenkyoshi\ ;
+写実主義 > shajitsushugi\ ;
+国際市場 > kokusaishijou\ ;
+二重生活 > nijuuseikatsu\ ;
+臨機目標 > rinkimokuhyou\ ;
+商業登記 > shougyoutouki\ ;
+黄色人種 > oushokujinshu\ ;
+周波変調 > shuuhahenchou\ ;
+欠陥商品 > kekkanshouhin\ ;
+従属変数 > juuzokuhensuu\ ;
+既約表現 > kiyakuhyougen\ ;
+不良少年 > furyoushounen\ ;
+測量技師 > sokuryougishi\ ;
+森羅万象 > shinrabanshou\ ;
+産業構造 > sangyoukouzou\ ;
+欧州諸国 > oushuushokoku\ ;
+通勤地獄 > tsuukinjigoku\ ;
+昼間人口 > chuukanjinkou\ ;
+性格判断 > seikakuhandan\ ;
+信頼関係 > shinraikankei\ ;
+同期通信 > doukitsuushin\ ;
+三重焦点 > sanjuushouten\ ;
+投票総数 > touhyousousuu\ ;
+大幅刷新 > oohabasasshin\ ;
+切断患者 > setsudankanja\ ;
+袖手傍観 > shuushuboukan\ ;
+拍手喝采 > hakushukassai\ ;
+作業仮説 > sagyoukasetsu\ ;
+経済成長 > keizaiseichou\ ;
+合成宝石 > gouseihouseki\ ;
+結締組織 > ketteisoshiki\ ;
+円錐曲線 > ensuikyokusen\ ;
+聖体拝領 > seitaihairyou\ ;
+庶民金融 > shominkin''yuu\ ;
+体積抵抗 > taisekiteikou\ ;
+協同組合 > kyoudoukumiai\ ;
+先住民族 > senjuuminzoku\ ;
+統一戦線 > touitsusensen\ ;
+同時通訳 > doujitsuuyaku\ ;
+周知徹底 > shuuchitettei\ ;
+艱難辛苦 > kan''nanshinku\ ;
+政党内閣 > seitounaikaku\ ;
+現地報告 > genchihoukoku\ ;
+懸賞問題 > kenshoumondai\ ;
+傭船契約 > yousenkeiyaku\ ;
+今上天皇 > kinjouten''nou\ ;
+他覚症状 > takakushoujou\ ;
+欠食児童 > kesshokujidou\ ;
+娯楽番組 > gorakubangumi\ ;
+精神医学 > seishin''igaku\ ;
+内容証明 > naiyoushoumei\ ;
+出港停止 > shukkouteishi\ ;
+夫婦約束 > fuufuyakusoku\ ;
+旅行業者 > ryokougyousha\ ;
+使徒信経 > shitoshinkyou\ ;
+外資導入 > gaishidounyuu\ ;
+成人教育 > seijinkyouiku\ ;
+公式主義 > koushikishugi\ ;
+一獲千金 > ikkakkusenkin\ ;
+複数業務 > fukusuugyoumu\ ;
+禁欲主義 > kin''yokushugi\ ;
+空襲警報 > kuushuukeihou\ ;
+産業再生 > sangyousaisei\ ;
+賃貸価格 > chintaikakaku\ ;
+戦闘前哨 > sentouzenshou\ ;
+一言一行 > ichigen''ikkou\ ;
+吹奏楽団 > suisougakudan\ ;
+直線距離 > chokusenkyori\ ;
+近親結婚 > kinshinkekkon\ ;
+米英仏蘭 > beieibutsuran\ ;
+共同作業 > kyoudousagyou\ ;
+減反政策 > gentanseisaku\ ;
+心理作戦 > shinrisakusen\ ;
+心臓移植 > shinzouishoku\ ;
+有限責任 > yuugensekinin\ ;
+組織再編 > soshikisaihen\ ;
+福音教会 > fukuinkyoukai\ ;
+関係副詞 > kankeifukushi\ ;
+史料編纂 > shiryouhensan\ ;
+猟官運動 > ryoukan''undou\ ;
+肉体労働 > nikutairoudou\ ;
+参照文献 > sanshoubunken\ ;
+音楽監督 > ongakukantoku\ ;
+平身低頭 > heishinteitou\ ;
+共産分子 > kyousanbunshi\ ;
+予約出版 > yoyakushuppan\ ;
+炭水化物 > tansuikabutsu\ ;
+近代文学 > kindaibungaku\ ;
+地方官庁 > chihoukanchou\ ;
+四分五裂 > shibungoretsu\ ;
+経済回復 > keizaikaifuku\ ;
+実存主義 > jitsuzonshugi\ ;
+恒温動物 > kouondoubutsu\ ;
+野菜一皿 > yasaihitosara\ ;
+形式論理 > keishikironri\ ;
+大学浪人 > daigakurounin\ ;
+暫定協定 > zanteikyoutei\ ;
+放送大学 > housoudaigaku\ ;
+法律制度 > houritsuseido\ ;
+信用金庫 > shin''youkinko\ ;
+有名無実 > yuumeimujitsu\ ;
+終身会員 > shuushinkaiin\ ;
+三角関数 > sankakukansuu\ ;
+笑止千万 > shoushisenban\ ;
+文学博士 > bungakuhakase\ ;
+庭先相場 > niwasakisouba\ ;
+消費者側 > shouhishagawa\ ;
+精神構造 > seishinkouzou\ ;
+鉄骨工事 > tekkotsukouji\ ;
+国利民福 > kokuriminpuku\ ;
+軽佻浮薄 > keichoufuhaku\ ;
+沖積平野 > chuusekiheiya\ ;
+酪農製品 > rakunouseihin\ ;
+謝罪広告 > shazaikoukoku\ ;
+富国強兵 > fukokukyouhei\ ;
+外郭団体 > gaikakudantai\ ;
+共同企業 > kyoudoukigyou\ ;
+階級社会 > kaikyuushakai\ ;
+対外政策 > taigaiseisaku\ ;
+精霊信仰 > seireishinkou\ ;
+ＧＢ理論 > ji\ ̄bi\ ̄riron\ ;
+春風駘蕩 > shunpuutaitou\ ;
+死刑執行 > shikeishikkou\ ;
+二者択一 > nishatakuitsu\ ;
+酸性反応 > sanseihan''nou\ ;
+水道料金 > suidouryoukin\ ;
+空気力学 > kuukirikigaku\ ;
+商売気質 > shoubaikatagi\ ;
+記録文学 > kirokubungaku\ ;
+彼方此方 > achirakochira\ ;
+立身出世 > risshinshusse\ ;
+正金銀行 > shoukinginkou\ ;
+共済事業 > kyousaijigyou\ ;
+先行技術 > senkougijutsu\ ;
+図書目録 > toshomokuroku\ ;
+証拠隠滅 > shoukoinmetsu\ ;
+競争関係 > kyousoukankei\ ;
+事前検閲 > jizenken''etsu\ ;
+行政処分 > gyouseishobun\ ;
+全面広告 > zenmenkoukoku\ ;
+国務長官 > kokumuchoukan\ ;
+精神病院 > seishinbyouin\ ;
+四十九日 > shijuukunichi\ ;
+杓子定規 > shakushijougi\ ;
+可塑物質 > kasobusshitsu\ ;
+半農半漁 > han''nouhangyo\ ;
+暴飲暴食 > bouinboushoku\ ;
+研究分野 > kenkyuubun''ya\ ;
+人口密度 > jinkoumitsudo\ ;
+人身売買 > jinshinbaibai\ ;
+殺人未遂 > satsujinmisui\ ;
+足利時代 > ashikagajidai\ ;
+弾着距離 > danchakukyori\ ;
+動物検査 > doubutsukensa\ ;
+薬餌療法 > yakujiryouhou\ ;
+人間国宝 > ningenkokuhou\ ;
+緊要地形 > kin''youchikei\ ;
+市場成長 > shijouseichou\ ;
+指名投票 > shimeitouhyou\ ;
+呉越同舟 > goetsudoushuu\ ;
+宅地造成 > takuchizousei\ ;
+精神労働 > seishinroudou\ ;
+家族計画 > kazokukeikaku\ ;
+開口一番 > kaikouichiban\ ;
+直系卑属 > chokkeihizoku\ ;
+割賦方式 > kappuhoushiki\ ;
+勤労大衆 > kinroutaishuu\ ;
+未収入金 > mishuunyuukin\ ;
+風俗営業 > fuuzokueigyou\ ;
+民俗音楽 > minzokuongaku\ ;
+海水浴場 > kaisuiyokujou\ ;
+連合作戦 > rengousakusen\ ;
+両蓋時計 > ryoubutadokei\ ;
+主客転倒 > shukakutentou\ ;
+損益勘定 > son''ekikanjou\ ;
+動力降下 > douryokukouka\ ;
+三角闘争 > sankakutousou\ ;
+退学処分 > taigakushobun\ ;
+実験材料 > jikkenzairyou\ ;
+重要産業 > juuyousangyou\ ;
+液体燃料 > ekitainenryou\ ;
+伝道集会 > dendoushuukai\ ;
+八面六臂 > hachimenroppi\ ;
+才気煥発 > saikikanpatsu\ ;
+感情表現 > kanjouhyougen\ ;
+人種差別 > jinshusabetsu\ ;
+英国発音 > eikokuhatsuon\ ;
+無限数列 > mugensuuretsu\ ;
+悪逆無道 > akugyakumudou\ ;
+熟慮断行 > jukuryodankou\ ;
+直交座標 > chokkouzahyou\ ;
+北太平洋 > kitataiheiyou\ ;
+男声合唱 > danseigasshou\ ;
+胃腸病学 > ichoubyougaku\ ;
+三角関係 > sankakukankei\ ;
+民族音楽 > minzokuongaku\ ;
+単独会見 > tandokukaiken\ ;
+財産相続 > zaisansouzoku\ ;
+上智大学 > jouchidaigaku\ ;
+僧庵生活 > souanseikatsu\ ;
+法律用語 > houritsuyougo\ ;
+雌雄選択 > shiyuusentaku\ ;
+百花繚乱 > hyakkaryouran\ ;
+音楽療法 > ongakuryouhou\ ;
+住民登録 > juumintouroku\ ;
+断層写真 > dansoushashin\ ;
+占領地帯 > senryouchitai\ ;
+薬品会社 > yakuhingaisha\ ;
+出口調査 > deguchichousa\ ;
+能動免疫 > noudoumen''eki\ ;
+在留邦人 > zairyuuhoujin\ ;
+麦藁細工 > mugiwarasaiku\ ;
+工芸美術 > kougeibijutsu\ ;
+航空攻撃 > koukuukougeki\ ;
+重量選手 > juuryousenshu\ ;
+赤立羽蝶 > akatatehachou\ ;
+愛鳥週間 > aichoushuukan\ ;
+工業化学 > kougyoukagaku\ ;
+技術提携 > gijutsuteikei\ ;
+中性子星 > chuuseishisei\ ;
+公共事業 > koukyoujigyou\ ;
+上越本線 > jouetsuhonsen\ ;
+無償契約 > mushoukeiyaku\ ;
+閃光電球 > senkoudenkyuu\ ;
+国籍言語 > kokusekigengo\ ;
+定温動物 > teiondoubutsu\ ;
+空前絶後 > kuuzenzetsugo\ ;
+武力外交 > buryokugaikou\ ;
+戸籍抄本 > kosekishouhon\ ;
+朝鮮半島 > chousenhantou\ ;
+非常召集 > hijoushoushuu\ ;
+全般前哨 > zenpanzenshou\ ;
+大乗仏教 > daijoubukkyou\ ;
+分析試験 > bunsekishiken\ ;
+幽霊屋敷 > yuureiyashiki\ ;
+有産階級 > yuusankaikyuu\ ;
+権力政治 > kenryokuseiji\ ;
+脅迫電話 > kyouhakudenwa\ ;
+船荷証券 > funanishouken\ ;
+手旗信号 > tebatashingou\ ;
+栄養失調 > eiyoushitchou\ ;
+作況指数 > sakkyoushisuu\ ;
+相互通信 > sougotsuushin\ ;
+表層雪崩 > hyousounadare\ ;
+災害対策 > saigaitaisaku\ ;
+事実調査 > jijitsuchousa\ ;
+日経新聞 > nikkeishinbun\ ;
+中間選挙 > chuukansenkyo\ ;
+市長選挙 > shichousenkyo\ ;
+沈降海岸 > chinkoukaigan\ ;
+社会福祉 > shakaifukushi\ ;
+論功行賞 > ronkoukoushou\ ;
+実践躬行 > jissenkyuukou\ ;
+正副二通 > seifukunitsuu\ ;
+交感神経 > koukanshinkei\ ;
+消費革命 > shouhikakumei\ ;
+専任講師 > sen''ninkoushi\ ;
+大量生産 > tairyouseisan\ ;
+最高機密 > saikoukimitsu\ ;
+管弦楽法 > kangengakuhou\ ;
+新品同様 > shinpindouyou\ ;
+備荒貯蓄 > bikouchochiku\ ;
+薄志弱行 > hakushijakkou\ ;
+勤労階級 > kinroukaikyuu\ ;
+日印関係 > nichiinkankei\ ;
+長期計画 > choukikeikaku\ ;
+不時着陸 > fujichakuriku\ ;
+排泄器官 > haisetsukikan\ ;
+英文解釈 > eibunkaishaku\ ;
+免責条項 > mensekijoukou\ ;
+鉄道線路 > tetsudousenro\ ;
+攻撃態勢 > kougekitaisei\ ;
+定期昇給 > teikishoukyuu\ ;
+記述文法 > kijutsubunpou\ ;
+臣籍降下 > shinsekikouka\ ;
+炭酸飲料 > tansan''inryou\ ;
+市場拡大 > shijoukakudai\ ;
+精密機械 > seimitsukikai\ ;
+機動警察 > kidoukeisatsu\ ;
+年間収益 > nenkanshuueki\ ;
+仲裁裁定 > chuusaisaitei\ ;
+偵察要員 > teisatsuyouin\ ;
+文藝春秋 > bungeishunjuu\ ;
+人形芝居 > ningyoushibai\ ;
+水中眼鏡 > suichuumegane\ ;
+公序良俗 > koujoryouzoku\ ;
+婚前交渉 > konzenkoushou\ ;
+太陽黒点 > taiyoukokuten\ ;
+上御一人 > kamigoichinin\ ;
+主要工業 > shuyoukougyou\ ;
+下等動物 > katoudoubutsu\ ;
+臥薪嘗胆 > gashinshoutan\ ;
+診療支援 > shinryoushien\ ;
+転地療養 > tenchiryouyou\ ;
+万能選手 > ban''nousenshu\ ;
+教会音楽 > kyoukaiongaku\ ;
+千載一遇 > senzaiichiguu\ ;
+売買契約 > baibaikeiyaku\ ;
+住宅地帯 > juutakuchitai\ ;
+減速装置 > gensokusouchi\ ;
+住宅問題 > juutakumondai\ ;
+免疫血清 > men''ekikessei\ ;
+核反応炉 > kakuhan''nouro\ ;
+放射線学 > houshasengaku\ ;
+流通経路 > ryuutsuukeiro\ ;
+尋常一様 > jinjouichiyou\ ;
+国有財産 > kokuyuuzaisan\ ;
+市民階級 > shiminkaikyuu\ ;
+言語知識 > gengochishiki\ ;
+公共放送 > koukyouhousou\ ;
+斑状組織 > hanjousoshiki\ ;
+重爆撃機 > juubakugekiki\ ;
+婚外交渉 > kongaikoushou\ ;
+仲裁裁判 > chuusaisaiban\ ;
+侯爵夫人 > koushakufujin\ ;
+有色野菜 > yuushokuyasai\ ;
+集団訴訟 > shuudansoshou\ ;
+一次産業 > ichijisangyou\ ;
+練習不足 > renshuubusoku\ ;
+商船学校 > shousengakkou\ ;
+麦藁蜻蛉 > mugiwaratonbo\ ;
+有限集合 > yuugenshuugou\ ;
+追加料金 > tsuikaryoukin\ ;
+Π中間子 > paichuukanshi\ ;
+遠隔教育 > enkakukyouiku\ ;
+脳脊髄液 > nousekizuieki\ ;
+東西南北 > touzainanboku\ ;
+許容線量 > kyoyousenryou\ ;
+正札値段 > shoufudanedan\ ;
+差別関税 > sabetsukanzei\ ;
+中等学校 > chuutougakkou\ ;
+管弦楽団 > kangengakudan\ ;
+寄生生物 > kiseiseibutsu\ ;
+主権回復 > shukenkaifuku\ ;
+両部神道 > ryoubushintou\ ;
+終業時間 > shuugyoujikan\ ;
+絹布一巻 > kenpuhitomaki\ ;
+過圧密比 > kaatsumitsuhi\ ;
+自然選択 > shizensentaku\ ;
+反応速度 > han''nousokudo\ ;
+偵察衛星 > teisatsueisei\ ;
+正副議長 > seifukugichou\ ;
+神前結婚 > shinzenkekkon\ ;
+法的手段 > houtekishudan\ ;
+作業領域 > sagyouryouiki\ ;
+年金証書 > nenkinshousho\ ;
+交通妨害 > koutsuubougai\ ;
+町村合併 > chousongappei\ ;
+教会旋法 > kyoukaisenpou\ ;
+幕藩体制 > bakuhantaisei\ ;
+第一印象 > daiichiinshou\ ;
+真空包装 > shinkuuhousou\ ;
+監査証跡 > kansashouseki\ ;
+誘導電流 > yuudoudenryuu\ ;
+復旧作業 > fukkyuusagyou\ ;
+損害賠償 > songaibaishou\ ;
+想像妊娠 > souzouninshin\ ;
+虚心坦懐 > kyoshintankai\ ;
+耐震構造 > taishinkouzou\ ;
+有限級数 > yuugenkyuusuu\ ;
+国土計画 > kokudokeikaku\ ;
+生存競争 > seizonkyousou\ ;
+市民革命 > shiminkakumei\ ;
+大統領選 > daitouryousen\ ;
+補習教育 > hoshuukyouiku\ ;
+司令長官 > shireichoukan\ ;
+賃金体系 > chingintaikei\ ;
+全人教育 > zenjinkyouiku\ ;
+官房長官 > kanbouchoukan\ ;
+企業秘密 > kigyouhimitsu\ ;
+殺人事件 > satsujinjiken\ ;
+凶悪犯罪 > kyouakuhanzai\ ;
+天然資源 > ten''nenshigen\ ;
+百姓一揆 > hyakushouikki\ ;
+総合大学 > sougoudaigaku\ ;
+仏頂尊勝 > buchousonshou\ ;
+千差万別 > sensabanbetsu\ ;
+網状組織 > moujousoshiki\ ;
+第一部長 > daiichibuchou\ ;
+準準決勝 > junjunkesshou\ ;
+大和民族 > yamatominzoku\ ;
+年年歳歳 > nen''nensaisai\ ;
+地殻変動 > chikakuhendou\ ;
+財政改革 > zaiseikaikaku\ ;
+共同計算 > kyoudoukeisan\ ;
+写真電送 > shashindensou\ ;
+不良診断 > furyoushindan\ ;
+水産大学 > suisandaigaku\ ;
+単式火山 > tanshikikazan\ ;
+一分一厘 > ichibuichirin\ ;
+実地検証 > jitchikenshou\ ;
+北清事変 > hokushinjihen\ ;
+人面獣心 > ninmenjuushin\ ;
+計画段階 > keikakudankai\ ;
+社員食堂 > shainshokudou\ ;
+捧腹絶倒 > houfukuzettou\ ;
+郵便料金 > yuubinryoukin\ ;
+五十三次 > gojuusantsugi\ ;
+優勝劣敗 > yuushoureppai\ ;
+快速列車 > kaisokuressha\ ;
+難民条約 > nanminjouyaku\ ;
+国際放送 > kokusaihousou\ ;
+六十余州 > rokujuuyoshuu\ ;
+急行列車 > kyuukouressha\ ;
+森林地帯 > shinrinchitai\ ;
+鎖国政策 > sakokuseisaku\ ;
+具象美術 > gushoubijutsu\ ;
+懐石料理 > kaisekiryouri\ ;
+簡易食堂 > kan''ishokudou\ ;
+暗黒大陸 > ankokutairiku\ ;
+反動革命 > handoukakumei\ ;
+六根清浄 > rokkonshoujou\ ;
+商業主義 > shougyoushugi\ ;
+信頼醸成 > shinraijousei\ ;
+共同声明 > kyoudouseimei\ ;
+割引切符 > waribikikippu\ ;
+冷却期間 > reikyakukikan\ ;
+九死一生 > kyuushiisshou\ ;
+中華民国 > chuukaminkoku\ ;
+拡声装置 > kakuseisouchi\ ;
+道路建設 > dourokensetsu\ ;
+人造宝石 > jinzouhouseki\ ;
+輸出保険 > yushutsuhoken\ ;
+必修科目 > hisshuukamoku\ ;
+給与所得 > kyuuyoshotoku\ ;
+歴史学派 > rekishigakuha\ ;
+等差数列 > tousasuuretsu\ ;
+君子豹変 > kunshihyouhen\ ;
+下表参照 > kahyousanshou\ ;
+勢力範囲 > seiryokuhan''i\ ;
+通貨政策 > tsuukaseisaku\ ;
+独占企業 > dokusenkigyou\ ;
+特権階級 > tokkenkaikyuu\ ;
+正規曲線 > seikikyokusen\ ;
+傍聴無料 > bouchoumuryou\ ;
+産業資本 > sangyoushihon\ ;
+立石電機 > tateishidenki\ ;
+夜間中学 > yakanchuugaku\ ;
+貿易摩擦 > bouekimasatsu\ ;
+年輪史学 > nenrinshigaku\ ;
+機械翻訳 > kikaihon''yaku\ ;
+徹頭徹尾 > tettoutetsubi\ ;
+金科玉条 > kinkagyokujou\ ;
+民間療法 > minkanryouhou\ ;
+情況証拠 > joukyoushouko\ ;
+心悸亢進 > shinkikoushin\ ;
+定性分析 > teiseibunseki\ ;
+囃子言葉 > hayashikotoba\ ;
+特許技術 > tokkyogijutsu\ ;
+報道写真 > houdoushashin\ ;
+最低賃金 > saiteichingin\ ;
+瞬間電断 > shunkandendan\ ;
+年頭教書 > nentoukyousho\ ;
+東洋段通 > touyoudantsuu\ ;
+独占資本 > dokusenshihon\ ;
+東方教会 > touhoukyoukai\ ;
+自覚症状 > jikakushoujou\ ;
+天体観測 > tentaikansoku\ ;
+群集行動 > gunshuukoudou\ ;
+衆人環視 > shuujinkanshi\ ;
+迷走神経 > meisoushinkei\ ;
+戦略兵器 > senryakuheiki\ ;
+先制攻撃 > senseikougeki\ ;
+有給休暇 > yuukyuukyuuka\ ;
+見学旅行 > kengakuryokou\ ;
+国内経済 > kokunaikeizai\ ;
+対空射撃 > taikuushageki\ ;
+比較対照 > hikakutaishou\ ;
+市中銀行 > shichuuginkou\ ;
+定点観測 > teitenkansoku\ ;
+促成栽培 > sokuseisaibai\ ;
+賃金格差 > chinginkakusa\ ;
+支配階級 > shihaikaikyuu\ ;
+二重露出 > nijuuroshutsu\ ;
+動脈硬化 > doumyakukouka\ ;
+隣接部隊 > rinsetsubutai\ ;
+建設機械 > kensetsukikai\ ;
+上層階級 > jousoukaikyuu\ ;
+三拝九拝 > sanpaikyuuhai\ ;
+特殊法人 > tokushuhoujin\ ;
+士魂商才 > shikonshousai\ ;
+虚心担懐 > kyoshintankai\ ;
+傷病捕虜 > shoubyouhoryo\ ;
+無性生殖 > museiseishoku\ ;
+財政政策 > zaiseiseisaku\ ;
+陸上競技 > rikujoukyougi\ ;
+博覧強記 > hakurankyouki\ ;
+人権侵害 > jinkenshingai\ ;
+総領息子 > souryoumusuko\ ;
+菜食主義 > saishokushugi\ ;
+赤外発散 > sekigaihassan\ ;
+衛星通信 > eiseitsuushin\ ;
+人員削減 > jin''insakugen\ ;
+率先躬行 > sossenkyuukou\ ;
+免税所得 > menzeishotoku\ ;
+防縮加工 > boushukukakou\ ;
+複式簿記 > fukushikiboki\ ;
+責任分担 > sekininbuntan\ ;
+武力行使 > buryokukoushi\ ;
+番組編成 > bangumihensei\ ;
+休息時間 > kyuusokujikan\ ;
+二重関節 > nijuukansetsu\ ;
+観光産業 > kankousangyou\ ;
+博引旁証 > hakuinboushou\ ;
+共販会社 > kyouhangaisha\ ;
+揚陸艦艇 > yourikukantei\ ;
+主客顛倒 > shukakutentou\ ;
+公害対策 > kougaitaisaku\ ;
+陽動作戦 > youdousakusen\ ;
+誘拐犯人 > yuukaihan''nin\ ;
+内臓疾患 > naizoushikkan\ ;
+修士論文 > shuushironbun\ ;
+高等教育 > koutoukyouiku\ ;
+測量機械 > sokuryoukikai\ ;
+霊感商法 > reikanshouhou\ ;
+呪物崇拝 > jubutsusuuhai\ ;
+文人墨客 > bunjinbokkaku\ ;
+承知之助 > shouchinosuke\ ;
+越年草本 > etsunensouhon\ ;
+通勤列車 > tsuukinressha\ ;
+精進料理 > shoujinryouri\ ;
+主力部隊 > shuryokubutai\ ;
+郷土文学 > kyoudobungaku\ ;
+期末試験 > kimatsushiken\ ;
+連邦首相 > renpoushushou\ ;
+情報工学 > jouhoukougaku\ ;
+七分三分 > shichibusanbu\ ;
+公爵夫人 > koushakufujin\ ;
+参考資料 > sankoushiryou\ ;
+独断専行 > dokudansenkou\ ;
+入学考査 > nyuugakukousa\ ;
+遭難信号 > sounanshingou\ ;
+流動資産 > ryuudoushisan\ ;
+下四半期 > shimoshihanki\ ;
+選択科目 > sentakukamoku\ ;
+情報検索 > jouhoukensaku\ ;
+頂上会談 > choujoukaidan\ ;
+共済組合 > kyousaikumiai\ ;
+参考書目 > sankoushomoku\ ;
+治安警察 > chiankeisatsu\ ;
+興業銀行 > kougyouginkou\ ;
+行政書士 > gyouseishoshi\ ;
+関連項目 > kanrenkoumoku\ ;
+難行苦行 > nangyoukugyou\ ;
+預金通帳 > yokintsuuchou\ ;
+網膜剥離 > moumakuhakuri\ ;
+輸出検査 > yushutsukensa\ ;
+指定銘柄 > shiteimeigara\ ;
+酒池肉林 > shuchinikurin\ ;
+優等賞状 > yuutoushoujou\ ;
+黄金分割 > ougonbunkatsu\ ;
+修繕工場 > shuuzenkoujou\ ;
+二者選一 > nishasen''itsu\ ;
+状況証拠 > joukyoushouko\ ;
+菌類学者 > kinruigakusha\ ;
+仲裁々判 > chuusaisaiban\ ;
+外国郵便 > gaikokuyuubin\ ;
+交通地獄 > koutsuujigoku\ ;
+集団結婚 > shuudankekkon\ ;
+愛玩動物 > aigandoubutsu\ ;
+間接話法 > kansetsuwahou\ ;
+学生部長 > gakuseibuchou\ ;
+雲形定規 > kumogatajougi\ ;
+屋外広告 > okugaikoukoku\ ;
+亡命文学 > boumeibungaku\ ;
+連続関数 > renzokukansuu\ ;
+筆跡鑑定 > hissekikantei\ ;
+廃物利用 > haibutsuriyou\ ;
+車両会社 > sharyougaisha\ ;
+麻薬常習 > mayakujoushuu\ ;
+不得要領 > futokuyouryou\ ;
+山岳地帯 > sangakuchitai\ ;
+問題領域 > mondairyouiki\ ;
+個別販売 > kobetsuhanbai\ ;
+平衡感覚 > heikoukankaku\ ;
+内国郵便 > naikokuyuubin\ ;
+報道番組 > houdoubangumi\ ;
+共同組合 > kyoudoukumiai\ ;
+紙上計画 > shijoukeikaku\ ;
+二重国籍 > nijuukokuseki\ ;
+行政訴訟 > gyouseisoshou\ ;
+絶縁抵抗 > zetsuenteikou\ ;
+匿名批評 > tokumeihihyou\ ;
+長期国債 > choukikokusai\ ;
+光線療法 > kousenryouhou\ ;
+流動資本 > ryuudoushihon\ ;
+証券市場 > shoukenshijou\ ;
+建設工事 > kensetsukouji\ ;
+変態性欲 > hentaiseiyoku\ ;
+空中細菌 > kuuchuusaikin\ ;
+代金引換 > daikinhikikae\ ;
+茶番狂言 > chabankyougen\ ;
+交通規則 > koutsuukisoku\ ;
+会席料理 > kaisekiryouri\ ;
+現物相場 > genbutsusouba\ ;
+束縛理論 > sokubakuriron\ ;
+公正証書 > kouseishousho\ ;
+同盟怠業 > doumeitaigyou\ ;
+行動方針 > koudouhoushin\ ;
+適正価格 > tekiseikakaku\ ;
+人種改良 > jinshukairyou\ ;
+半流動体 > hanryuudoutai\ ;
+普仏戦争 > fufutsusensou\ ;
+二重結合 > nijuuketsugou\ ;
+免責特権 > mensekitokken\ ;
+懲戒処分 > choukaishobun\ ;
+不心得者 > fukokoroemono\ ;
+豪放磊落 > gouhourairaku\ ;
+艦砲射撃 > kanpoushageki\ ;
+関数解析 > kansuukaiseki\ ;
+通信講座 > tsuushinkouza\ ;
+外貨獲得 > gaikakakutoku\ ;
+心悸昂進 > shinkikoushin\ ;
+電気溶接 > denkiyousetsu\ ;
+吮癰舐痔 > sen''youshiji\ ;
+労働条件 > roudoujouken\ ;
+外国航路 > gaikokukouro\ ;
+伝送速度 > densousokudo\ ;
+一本調子 > ippondjoushi\ ;
+墜落事故 > tsuirakujiko\ ;
+線香花火 > senkouhanabi\ ;
+東京都政 > toukyoutosei\ ;
+軍事産業 > gunjisangyou\ ;
+代理牧師 > dairibokushi\ ;
+三十三所 > sanjuusansho\ ;
+一次線輪 > ichijisenrin\ ;
+価格変動 > kakakuhendou\ ;
+悠悠自適 > yuuyuujiteki\ ;
+山紫水明 > sanshisuimei\ ;
+空輸貨物 > kuuyukamotsu\ ;
+観光資源 > kankoushigen\ ;
+視覚言語 > shikakugengo\ ;
+麻薬常用 > mayakujouyou\ ;
+日朝辞典 > nitchoujiten\ ;
+店頭債券 > tentousaiken\ ;
+版権所有 > hankenshoyuu\ ;
+一泊行軍 > ippakukougun\ ;
+青空市場 > aozorashijou\ ;
+開票結果 > kaihyoukekka\ ;
+単独講和 > tandokukouwa\ ;
+近代科学 > kindaikagaku\ ;
+無神論者 > mushinronsha\ ;
+有形財産 > yuukeizaisan\ ;
+河岸段丘 > kagandankyuu\ ;
+太陽光線 > taiyoukousen\ ;
+億万長者 > okumanchouja\ ;
+化粧石鹸 > keshousekken\ ;
+言語療法 > gengoryouhou\ ;
+安定成長 > anteiseichou\ ;
+神権政治 > shinkenseiji\ ;
+至上命令 > shijoumeirei\ ;
+音楽美学 > ongakubigaku\ ;
+労働大臣 > roudoudaijin\ ;
+降格人事 > koukakujinji\ ;
+窒素肥料 > chissohiryou\ ;
+軍部独裁 > gunbudokusai\ ;
+公務疾病 > koumushippei\ ;
+花火大会 > hanabitaikai\ ;
+行雲流水 > kouunryuusui\ ;
+反対訊問 > hantaijinmon\ ;
+方向転換 > houkoutenkan\ ;
+無線技術 > musengijutsu\ ;
+艮下艮上 > gonkagonshou\ ;
+未来完了 > miraikanryou\ ;
+前進部隊 > zenshinbutai\ ;
+既約分数 > kiyakubunsuu\ ;
+公営住宅 > koueijuutaku\ ;
+監査報告 > kansahoukoku\ ;
+月経周期 > gekkeishuuki\ ;
+科学雑誌 > kagakuzasshi\ ;
+通貨統合 > tsuukatougou\ ;
+対地速度 > taichisokudo\ ;
+官僚主義 > kanryoushugi\ ;
+御調子者 > ochoushimono\ ;
+二足三文 > nisokusanmon\ ;
+酸性肥料 > sanseihiryou\ ;
+言文一致 > genbun''itchi\ ;
+共同管理 > kyoudoukanri\ ;
+海外旅行 > kaigairyokou\ ;
+不審尋問 > fushinjinmon\ ;
+責任転嫁 > sekinintenka\ ;
+長期手形 > choukitegata\ ;
+給与水準 > kyuuyosuijun\ ;
+少数精鋭 > shousuuseiei\ ;
+転換社債 > tenkanshasai\ ;
+沿岸漁業 > engangyogyou\ ;
+交際社会 > kousaishakai\ ;
+制限事項 > seigenjikoku\ ;
+刑事責任 > keijisekinin\ ;
+混合火薬 > kongoukayaku\ ;
+双務契約 > soumukeiyaku\ ;
+古典学者 > kotengakusha\ ;
+生活扶助 > seikatsufujo\ ;
+用益物権 > youekibukken\ ;
+出勤時間 > shukkinjikan\ ;
+相関係数 > soukankeisuu\ ;
+社会保障 > shakaihoshou\ ;
+協同動作 > kyoudoudousa\ ;
+情緒纒綿 > jouchotenmen\ ;
+立憲君主 > rikkenkunshu\ ;
+旅券査証 > ryokensashou\ ;
+落花狼藉 > rakkarouzeki\ ;
+化学製品 > kagakuseihin\ ;
+適性検査 > tekiseikensa\ ;
+生命科学 > seimeikagaku\ ;
+工作機械 > kousakukikai\ ;
+図書館学 > toshokangaku\ ;
+人口問題 > jinkoumondai\ ;
+御用学者 > goyougakusha\ ;
+気圧配置 > kiatsuhaichi\ ;
+時限爆弾 > jigenbakudan\ ;
+自然対数 > shizentaisuu\ ;
+夜間撮影 > yakansatsuei\ ;
+神経繊維 > shinkeisen''i\ ;
+流動負債 > ryuudoufusai\ ;
+最高記録 > saikoukiroku\ ;
+新規事業 > shinkijigyou\ ;
+姓名判断 > seimeihandan\ ;
+反対給付 > hantaikyuufu\ ;
+敗戦投手 > haisentoushu\ ;
+武漢三鎮 > bukansanchin\ ;
+一朝一夕 > itchouisseki\ ;
+家内工業 > kanaikougyou\ ;
+浅学菲才 > sengakuhisai\ ;
+混合経済 > kongoukeizai\ ;
+市民団体 > shimindantai\ ;
+企業連合 > kigyourengou\ ;
+時代感覚 > jidaikankaku\ ;
+共同因子 > kyoudouinshi\ ;
+一意専心 > ichiisenshin\ ;
+欧米諸国 > oubeishokoku\ ;
+革命運動 > kakumeiundou\ ;
+純粋培養 > junsuibaiyou\ ;
+再三再四 > saisansaishi\ ;
+形而上学 > keijijougaku\ ;
+地方団体 > chihoudantai\ ;
+公民学校 > koumingakkou\ ;
+価格統制 > kakakutousei\ ;
+意匠登録 > ishoutouroku\ ;
+受動喫煙 > judoukitsuen\ ;
+製缶工場 > seikankoujou\ ;
+固形燃料 > kokeinenryou\ ;
+郵便為替 > yuubinkawase\ ;
+口頭弁論 > koutoubenron\ ;
+立体化学 > rittaikagaku\ ;
+品行方正 > hinkouhousei\ ;
+販売価格 > hanbaikakaku\ ;
+恋愛結婚 > ren''aikekkon\ ;
+北米土人 > hokubeidojin\ ;
+臨海学校 > rinkaigakkou\ ;
+一語一語 > ichigoichigo\ ;
+半官半民 > hankanhanmin\ ;
+大国主義 > taikokushugi\ ;
+洋服箪笥 > youfukudansu\ ;
+一方通行 > ippoutsuukou\ ;
+参考文献 > sankoubunken\ ;
+信仰箇条 > shinkoukajou\ ;
+民間資本 > minkanshihon\ ;
+一汁一菜 > ichijuuissai\ ;
+十種競技 > jisshukyougi\ ;
+平和共存 > heiwakyouzon\ ;
+単線運転 > tansen''unten\ ;
+事後承諾 > jigoshoudaku\ ;
+映像信号 > eizoushingou\ ;
+安全対策 > anzentaisaku\ ;
+生産組合 > seisankumiai\ ;
+居住水準 > kyojuusuijun\ ;
+算用数字 > san''yousuuji\ ;
+姉妹会社 > shimaigaisha\ ;
+選挙公報 > senkyokouhou\ ;
+仏像二座 > butsuzouniza\ ;
+観光旅行 > kankouryokou\ ;
+研究課題 > kenkyuukadai\ ;
+金拾万円 > kinjuuman''en\ ;
+屎尿処理 > shinyoushori\ ;
+商事会社 > shoujigaisha\ ;
+集合場所 > shuugoubasho\ ;
+形容詞幹 > keiyoushikan\ ;
+条件反射 > joukenhansha\ ;
+信徒伝動 > shintodendou\ ;
+有料道路 > yuuryoudouro\ ;
+業務妨害 > gyoumubougai\ ;
+阿片中毒 > ahenchuudoku\ ;
+細胞融合 > saibouyuugou\ ;
+名人気質 > meijinkatagi\ ;
+郵政大臣 > yuuseidaijin\ ;
+人権擁護 > jinken''yougo\ ;
+兄弟喧嘩 > kyoudaigenka\ ;
+巡航速度 > junkousokudo\ ;
+一夜大臣 > ichiyadaijin\ ;
+獅子奮迅 > shishifunjin\ ;
+閨秀作家 > keishuusakka\ ;
+専門学校 > senmongakkou\ ;
+改革過程 > kaikakukatei\ ;
+緊急措置 > kinkyuusochi\ ;
+画竜天睛 > garyoutensei\ ;
+一進一退 > isshin''ittai\ ;
+定常状態 > teijoujoutai\ ;
+指数関数 > shisuukansuu\ ;
+試験科目 > shikenkamoku\ ;
+災害救助 > saigaikyuujo\ ;
+冶金学者 > yakingakusha\ ;
+地方銀行 > chihouginkou\ ;
+経済発展 > keizaihatten\ ;
+特殊兵器 > tokushuheiki\ ;
+海中公園 > kaichuukouen\ ;
+団体旅行 > dantairyokou\ ;
+三叉神経 > sansashinkei\ ;
+欲求不満 > yokkyuufuman\ ;
+終夜営業 > shuuyaeigyou\ ;
+地下組織 > chikasoshiki\ ;
+耐震家屋 > taishinkaoku\ ;
+正三角形 > seisankakkei\ ;
+走行車線 > soukoushasen\ ;
+空気調整 > kuukichousei\ ;
+運動神経 > undoushinkei\ ;
+受胎告知 > jutaikokuchi\ ;
+解答用紙 > kaitouyoushi\ ;
+不所存者 > fushozonmono\ ;
+加工産業 > kakousangyou\ ;
+規格原案 > kikakugen''an\ ;
+和魂洋才 > wakon''yousai\ ;
+反戦運動 > hansen''undou\ ;
+諸行無常 > shogyoumujou\ ;
+契約期間 > keiyakukikan\ ;
+人文科学 > jinbunkagaku\ ;
+一人一人 > hitoribitori\ ;
+励振素子 > reishinsoshi\ ;
+宇宙工学 > uchuukougaku\ ;
+事前日付 > jizenhidzuke\ ;
+自家撞着 > jikadouchaku\ ;
+石灰肥料 > sekkaihiryou\ ;
+公益優先 > kouekiyuusen\ ;
+日豊本線 > nippouhonsen\ ;
+石油化学 > sekiyukagaku\ ;
+相対速度 > soutaisokudo\ ;
+黒字倒産 > kurojitousan\ ;
+内憂外患 > naiyuugaikan\ ;
+関数空間 > kansuukuukan\ ;
+付属病院 > fuzokubyouin\ ;
+臨床医学 > rinshouigaku\ ;
+米海兵隊 > beikaiheitai\ ;
+拱手傍観 > koushuboukan\ ;
+順法闘争 > junpoutousou\ ;
+戦闘陣地 > sentoujinchi\ ;
+一挙一動 > ikkyoichidou\ ;
+威嚇射撃 > ikakushageki\ ;
+実地試験 > jitchishiken\ ;
+中間景気 > chuukankeiki\ ;
+司教権座 > shikyoukenza\ ;
+変更履歴 > henkourireki\ ;
+連戦連敗 > rensenrenpai\ ;
+歯槽膿漏 > shisounourou\ ;
+素粒子論 > soryuushiron\ ;
+衛星中継 > eiseichuukei\ ;
+圧延工場 > atsuenkoujou\ ;
+分娩臥床 > bunbengashou\ ;
+人造絹糸 > jinzoukenshi\ ;
+痕跡器官 > konsekikikan\ ;
+蛍光塗料 > keikoutoryou\ ;
+公判調査 > kouhanchousa\ ;
+連絡会議 > renrakukaigi\ ;
+公教要理 > koukyouyouri\ ;
+骨董品店 > kottouhinten\ ;
+十二指腸 > juunishichou\ ;
+財政問題 > zaiseimondai\ ;
+言語学者 > gengogakusha\ ;
+金融機関 > kin''yuukikan\ ;
+田園詩人 > den''enshijin\ ;
+等比級数 > touhikyuusuu\ ;
+道化役者 > doukeyakusha\ ;
+津津浦浦 > tsudzuuraura\ ;
+乾燥地帯 > kansouchitai\ ;
+音節主音 > onsetsushuon\ ;
+航海日誌 > koukainisshi\ ;
+半封建性 > hanhoukensei\ ;
+恋愛関係 > ren''aikankei\ ;
+成長過程 > seichoukatei\ ;
+連帯保証 > rentaihoshou\ ;
+心臓肥大 > shinzouhidai\ ;
+天壌無窮 > tenjoumukyuu\ ;
+全身麻酔 > zenshinmasui\ ;
+回線交換 > kaisenkoukan\ ;
+輸入制限 > yunyuuseigen\ ;
+構造不況 > kouzoufukyou\ ;
+自己共役 > jikokyouyaku\ ;
+構成分子 > kouseibunshi\ ;
+市場展開 > shijoutenkai\ ;
+店頭販売 > tentouhanbai\ ;
+合唱隊員 > gasshoutaiin\ ;
+経費削減 > keihisakugen\ ;
+文芸復興 > bungeifukkou\ ;
+環太平洋 > kantaiheiyou\ ;
+名義書換 > meigikakikae\ ;
+重大問題 > juudaimondai\ ;
+非科学的 > hikagakuteki\ ;
+限定戦争 > genteisensou\ ;
+不在証明 > fuzaishoumei\ ;
+医学博士 > igakuhakushi\ ;
+案内書呈 > an''naishotei\ ;
+専制君主 > senseikunshu\ ;
+勤務実績 > kinmujisseki\ ;
+機密事項 > kimitsujikou\ ;
+早期診断 > soukishindan\ ;
+停止価格 > teishikakaku\ ;
+記憶容量 > kiokuyouryou\ ;
+出生過剰 > shusseikajou\ ;
+引退興行 > intaikougyou\ ;
+三味線弾 > shamisenhiki\ ;
+試験段階 > shikendankai\ ;
+軍事介入 > gunjikainyuu\ ;
+政治道徳 > seijidoutoku\ ;
+国営企業 > kokueikigyou\ ;
+帰巣本能 > kisouhon''nou\ ;
+両性具有 > ryouseiguyuu\ ;
+黄金万能 > ougonban''nou\ ;
+担当課長 > tantoukachou\ ;
+混成競技 > konseikyougi\ ;
+労働攻勢 > roudoukousei\ ;
+閑話休題 > kanwakyuudai\ ;
+役務賠償 > ekimubaishou\ ;
+平和産業 > heiwasangyou\ ;
+印象批評 > inshouhihyou\ ;
+停滞前線 > teitaizensen\ ;
+民間放送 > minkanhousou\ ;
+属地主義 > zokuchishugi\ ;
+出版部数 > shuppanbusuu\ ;
+自動人形 > jidouningyou\ ;
+意志薄弱 > ishihakujaku\ ;
+心理戦争 > shinrisensou\ ;
+課税所得 > kazeishotoku\ ;
+流行作家 > ryuukousakka\ ;
+根気仕事 > konkishigoto\ ;
+軽犯罪法 > keihanzaihou\ ;
+揣摩憶測 > shimaokusoku\ ;
+改修工事 > kaishuukouji\ ;
+対抗意識 > taikouishiki\ ;
+道路交通 > dourokoutsuu\ ;
+法廷侮辱 > houteibujoku\ ;
+光学機械 > kougakukikai\ ;
+脱字記号 > datsujikigou\ ;
+公有水面 > kouyuusuimen\ ;
+陰性反応 > inseihan''nou\ ;
+均衡経済 > kinkoukeizai\ ;
+蘭栽培法 > ransaibaihou\ ;
+武装集団 > busoushuudan\ ;
+印鑑証明 > inkanshoumei\ ;
+域内貿易 > ikinaiboueki\ ;
+使徒行伝 > shitogyouden\ ;
+佳人薄命 > kajinhakumei\ ;
+有体資産 > yuutaishisan\ ;
+対泰関係 > taitaikankei\ ;
+欧州連合 > oushuurengou\ ;
+女子学生 > joshigakusei\ ;
+単純平均 > tanjunheikin\ ;
+再度確認 > saidokakunin\ ;
+鬼面伝心 > kimendenshin\ ;
+貿易黒字 > bouekikuroji\ ;
+組合員証 > kumiaiinshou\ ;
+熟柿主義 > jukushishugi\ ;
+冷房装置 > reibousouchi\ ;
+現地生産 > genchiseisan\ ;
+新聞記者 > shinbunkisha\ ;
+大山鳴動 > taizanmeidou\ ;
+波状攻撃 > hajoukougeki\ ;
+単記投票 > tankitouhyou\ ;
+一次関数 > ichijikansuu\ ;
+幼形進化 > youkeishinka\ ;
+青物市場 > aomonoichiba\ ;
+学生運動 > gakuseiundou\ ;
+報復措置 > houfukusochi\ ;
+回復可能 > kaifukukanou\ ;
+正角定木 > seikakujougi\ ;
+歴史地理 > rekishichiri\ ;
+年中無休 > nenjuumukyuu\ ;
+画竜点睛 > garyoutensei\ ;
+代数的和 > daisuutekiwa\ ;
+左右相称 > sayuusoushou\ ;
+帝国主義 > teikokushugi\ ;
+西洋松露 > seiyoushouro\ ;
+回転勘定 > kaitenkanjou\ ;
+依託射撃 > itakushageki\ ;
+正規表現 > seikihyougen\ ;
+総領事館 > souryoujikan\ ;
+盗難防止 > tounanboushi\ ;
+滅私奉公 > messhihoukou\ ;
+総合科学 > sougoukagaku\ ;
+拘束時間 > kousokujikan\ ;
+四方八方 > shihouhappou\ ;
+主要諸元 > shuyoushogen\ ;
+十分条件 > juubunjouken\ ;
+時代思潮 > jidaishichou\ ;
+代理投票 > dairitouhyou\ ;
+古典音楽 > koten''ongaku\ ;
+銀行強盗 > ginkougoutou\ ;
+起爆装置 > kibakusouchi\ ;
+逮捕許諾 > taihokyodaku\ ;
+歯牙疾患 > shigashikkan\ ;
+共同祖界 > kyoudousokai\ ;
+油断大敵 > yudantaiteki\ ;
+専業農家 > sengyounouka\ ;
+熱可塑性 > netsukasosei\ ;
+市有財産 > shiyuuzaisan\ ;
+国家賠償 > kokkabaishou\ ;
+静態総計 > seitaisoukei\ ;
+専門雑誌 > senmonzasshi\ ;
+弾丸列車 > danganressha\ ;
+大正時代 > taishoujidai\ ;
+設計変更 > sekkeihenkou\ ;
+了解事項 > ryoukaijikou\ ;
+実験段階 > jikkendankai\ ;
+官僚政治 > kanryouseiji\ ;
+人種問題 > jinshumondai\ ;
+演習問題 > enshuumondai\ ;
+労働組合 > roudoukumiai\ ;
+醇風美俗 > junpuubizoku\ ;
+造反有理 > zouhan''yuuri\ ;
+消費性向 > shouhiseikou\ ;
+御用新聞 > goyoushinbun\ ;
+公定価格 > kouteikakaku\ ;
+堆積作用 > taisekisayou\ ;
+攻守同盟 > koushudoumei\ ;
+工科大学 > koukadaigaku\ ;
+社公連合 > shakourengou\ ;
+軍事教練 > gunjikyouren\ ;
+平和条約 > heiwajouyaku\ ;
+無資格者 > mushikakusha\ ;
+相殺関税 > sousaikanzei\ ;
+即時停戦 > sokujiteisen\ ;
+測地衛星 > sokuchieisei\ ;
+空中浮遊 > kuuchuufuyuu\ ;
+信用詐欺 > shin''yousagi\ ;
+明眸皓歯 > meiboukoushi\ ;
+上等兵曹 > joutouheisou\ ;
+金利政策 > kinriseisaku\ ;
+草根木皮 > soukonmokuhi\ ;
+労働災害 > roudousaigai\ ;
+推定年齢 > suiteinenrei\ ;
+日本文学 > nihonbungaku\ ;
+実験科学 > jikkenkagaku\ ;
+危険信号 > kikenshingou\ ;
+西欧諸国 > seioushokoku\ ;
+夜間営業 > yakan''eigyou\ ;
+使徒承伝 > shitoshouden\ ;
+国家主席 > kokkashuseki\ ;
+雪見灯籠 > yukimidourou\ ;
+主席判事 > shusekihanji\ ;
+官製葉書 > kanseihagaki\ ;
+伝記文学 > denkibungaku\ ;
+制動放射 > seidouhousha\ ;
+法律行為 > houritsukoui\ ;
+共産国家 > kyousankokka\ ;
+教育機関 > kyouikukikan\ ;
+非常信号 > hijoushingou\ ;
+雪見障子 > yukimishouji\ ;
+機構改革 > kikoukaikaku\ ;
+御玉杓子 > otamajakushi\ ;
+最終結果 > saishuukekka\ ;
+特恵関税 > tokkeikanzei\ ;
+地震予知 > jishin''yochi\ ;
+共同募金 > kyoudoubokin\ ;
+事務当局 > jimutoukyoku\ ;
+三号雑誌 > sangouzasshi\ ;
+漏洩電流 > roueidenryuu\ ;
+宣戦布告 > sensenfukoku\ ;
+共産地区 > kyousanchiku\ ;
+代用教員 > daiyoukyouin\ ;
+三角定規 > sankakujougi\ ;
+西洋将棋 > seiyoushougi\ ;
+信号無視 > shingoumushi\ ;
+土地改革 > tochikaikaku\ ;
+瀬戸物市 > setomonoichi\ ;
+安倍川餅 > abekawamochi\ ;
+東欧諸国 > tououshokoku\ ;
+跡目相続 > atomesouzoku\ ;
+人工呼吸 > jinkoukokyuu\ ;
+航空郵便 > koukuuyuubin\ ;
+並行輸入 > heikouyunyuu\ ;
+経済格差 > keizaikakusa\ ;
+社会資本 > shakaishihon\ ;
+外交特権 > gaikoutokken\ ;
+業務提携 > gyoumuteikei\ ;
+潜在意識 > senzaiishiki\ ;
+制御装置 > seigyosouchi\ ;
+所所方方 > shoshohoubou\ ;
+固体燃料 > kotainenryou\ ;
+鼻元思案 > hanamotojian\ ;
+右折禁止 > usetsukinshi\ ;
+千思万考 > senshibankou\ ;
+依願退職 > igantaishoku\ ;
+三部合唱 > sanbugasshou\ ;
+言語中枢 > gengochuusuu\ ;
+現代文明 > gendaibunmei\ ;
+養護学級 > yougogakkyuu\ ;
+回転運動 > kaiten''undou\ ;
+運輸業者 > un''yugyousha\ ;
+石油公団 > sekiyukoudan\ ;
+局部麻酔 > kyokubumasui\ ;
+義太夫節 > gidayuubushi\ ;
+金属加工 > kinzokukakou\ ;
+悪性腫瘍 > akuseishuyou\ ;
+馬鹿正直 > bakashoujiki\ ;
+合弁会社 > goubengaisha\ ;
+公益事業 > kouekijigyou\ ;
+信号電波 > shingoudenpa\ ;
+津々浦々 > tsudzuuraura\ ;
+内輪同志 > uchiwadoushi\ ;
+社会事業 > shakaijigyou\ ;
+零細企業 > reisaikigyou\ ;
+国定公園 > kokuteikouen\ ;
+応力径路 > ouryokukeiro\ ;
+控訴棄却 > kousokikyaku\ ;
+通勤定期 > tsuukinteiki\ ;
+歴史地図 > rekishichizu\ ;
+電子郵便 > denshiyuubin\ ;
+人工知能 > jinkouchinou\ ;
+空中投下 > kuuchuutouka\ ;
+楽天主義 > rakutenshugi\ ;
+海外投資 > kaigaitoushi\ ;
+暗証番号 > anshoubangou\ ;
+年齢制限 > nenreiseigen\ ;
+価格戦争 > kakakusensou\ ;
+高速度鋼 > kousokudokou\ ;
+火力支援 > karyokushien\ ;
+高速道路 > kousokudouro\ ;
+使用禁止 > shiyoukinshi\ ;
+冠婚葬祭 > kankonsousai\ ;
+水平尾翼 > suiheibiyoku\ ;
+決議機関 > ketsugikikan\ ;
+連鎖反応 > rensahan''nou\ ;
+市民社会 > shiminshakai\ ;
+部分集合 > bubunshuugou\ ;
+四捨五入 > shishagonyuu\ ;
+受託会社 > jutakugaisha\ ;
+問題意識 > mondaiishiki\ ;
+金融公庫 > kin''yuukouko\ ;
+友達甲斐 > tomodachigai\ ;
+一般教養 > ippankyouyou\ ;
+安定恐慌 > anteikyoukou\ ;
+水素化物 > suisokabutsu\ ;
+環境変化 > kankyouhenka\ ;
+体格検査 > taikakukensa\ ;
+化学合成 > kagakugousei\ ;
+平平凡凡 > heiheibonbon\ ;
+市場価格 > shijoukakaku\ ;
+善隣関係 > zenrinkankei\ ;
+合成洗剤 > gouseisenzai\ ;
+観念主義 > kan''nenshugi\ ;
+通勤時間 > tsuukinjikan\ ;
+経済体制 > keizaitaisei\ ;
+住所氏名 > juushoshimei\ ;
+疾風怒濤 > shippuudotou\ ;
+医療材料 > iryouzairyou\ ;
+有機農業 > yuukinougyou\ ;
+妨害放送 > bougaihousou\ ;
+金属元素 > kinzokugenso\ ;
+歯内療法 > shikaryouhou\ ;
+悪戯小僧 > itazurakozou\ ;
+全権大使 > zenkentaishi\ ;
+危急存亡 > kikyuusonbou\ ;
+宇宙中継 > uchuuchuukei\ ;
+非人間的 > hiningenteki\ ;
+受信装置 > jushinsouchi\ ;
+数値計算 > suuchikeisan\ ;
+片言隻語 > hengensekigo\ ;
+懐中時計 > kaichuudokei\ ;
+競輪選手 > keirinsenshu\ ;
+暗号解読 > angoukaidoku\ ;
+反動思想 > handoushisou\ ;
+実証主義 > jisshoushugi\ ;
+標準偏差 > hyoujunhensa\ ;
+資源問題 > shigenmondai\ ;
+運送業者 > unsougyousha\ ;
+行動地帯 > koudouchitai\ ;
+平等主義 > byoudoushugi\ ;
+交代投手 > koutaitoushu\ ;
+国家独占 > kokkadokusen\ ;
+土地改良 > tochikairyou\ ;
+環境基準 > kankyoukijun\ ;
+外交文書 > gaikoubunsho\ ;
+軽挙妄動 > keikyomoudou\ ;
+防虫加工 > bouchuukakou\ ;
+不在投票 > fuzaitouhyou\ ;
+嫌煙運動 > ken''en''undou\ ;
+封緘葉書 > fuukanhagaki\ ;
+泰然自若 > taizenjijaku\ ;
+敗北主義 > haibokushugi\ ;
+価格性能 > kakakuseinou\ ;
+書類送検 > shoruisouken\ ;
+人権問題 > jinkenmondai\ ;
+一死報国 > isshihoukoku\ ;
+練馬大根 > nerimadaikon\ ;
+一糸一毫 > isshiichigou\ ;
+特殊事情 > tokushujijou\ ;
+老少不定 > roushoufutei\ ;
+相乗平均 > soujouheikin\ ;
+万年候補 > man''nenkouho\ ;
+安全教育 > anzenkyouiku\ ;
+無賃乗車 > muchinjousha\ ;
+片務契約 > henmukeiyaku\ ;
+一般大衆 > ippantaishuu\ ;
+古典文学 > kotenbungaku\ ;
+高校野球 > koukouyakyuu\ ;
+不審訊問 > fushinjinmon\ ;
+中華料理 > chuukaryouri\ ;
+健康状態 > kenkoujoutai\ ;
+鹿児島県 > kagoshimaken\ ;
+準備状況 > junbijoukyou\ ;
+選外佳作 > sengaikasaku\ ;
+言語教育 > gengokyouiku\ ;
+同文同種 > doubundoushu\ ;
+給与体系 > kyuuyotaikei\ ;
+麻薬犯罪 > mayakuhanzai\ ;
+朝令暮改 > choureibokai\ ;
+互恵条約 > gokeijouyaku\ ;
+一国一票 > ikkokuippyou\ ;
+砲艦外交 > houkangaikou\ ;
+流行言葉 > hayarikotoba\ ;
+交通機関 > koutsuukikan\ ;
+水銀電池 > suigindenchi\ ;
+追善供養 > tsuizenkuyou\ ;
+他力本願 > tarikihongan\ ;
+符号解読 > fugoukaidoku\ ;
+知能指数 > chinoushisuu\ ;
+当営業所 > toueigyousho\ ;
+職員会議 > shokuinkaigi\ ;
+言語特有 > gengotokuyuu\ ;
+最小限度 > saishougendo\ ;
+染井吉野 > someiyoshino\ ;
+完全犯罪 > kanzenhanzai\ ;
+教育制度 > kyouikuseido\ ;
+戦国時代 > sengokujidai\ ;
+前駆症状 > zenkushoujou\ ;
+紫綬褒賞 > shijuhoushou\ ;
+一言半句 > ichigonhanku\ ;
+不法占有 > fuhousen''yuu\ ;
+家庭環境 > kateikankyou\ ;
+舞台監督 > butaikantoku\ ;
+合成皮革 > gouseihikaku\ ;
+在宅勤務 > zaitakukinmu\ ;
+不在地主 > fuzaijinushi\ ;
+一宿一飯 > isshukuippan\ ;
+老人病院 > roujinbyouin\ ;
+片肺飛行 > katahaihikou\ ;
+対潜水艦 > taisensuikan\ ;
+警戒警報 > keikaikeihou\ ;
+累積赤字 > ruisekiakaji\ ;
+家族構成 > kazokukousei\ ;
+内柔外剛 > naijuugaigou\ ;
+属人主義 > zokujinshugi\ ;
+硬軟両派 > kounanryouha\ ;
+座席番号 > zasekibangou\ ;
+空中浮揚 > kuuchuufuyou\ ;
+丁稚奉公 > detchiboukou\ ;
+一方交通 > ippoukoutsuu\ ;
+三日月形 > mikadzukikei\ ;
+検事総長 > kenjisouchou\ ;
+新規投資 > shinkitoushi\ ;
+単語検索 > tangokensaku\ ;
+隠匿物資 > intokubusshi\ ;
+女人禁制 > nyoninkinsei\ ;
+大修道院 > daishuudouin\ ;
+森林公園 > shinrinkouen\ ;
+受験資格 > jukenshikaku\ ;
+大和言葉 > yamatokotoba\ ;
+儀式主義 > gishikishugi\ ;
+造山運動 > zouzan''undou\ ;
+一般教育 > ippankyouiku\ ;
+立体音響 > rittaionkyou\ ;
+特集記事 > tokushuukiji\ ;
+付帯決議 > futaiketsugi\ ;
+製紙工場 > seishikoujou\ ;
+救援投手 > kyuuentoushu\ ;
+財団法人 > zaidanhoujin\ ;
+民俗舞踊 > minzokubuyou\ ;
+戦争犯罪 > sensouhanzai\ ;
+難燃加工 > nan''nenkakou\ ;
+南船北馬 > nansenhokuba\ ;
+機能障害 > kinoushougai\ ;
+日本国民 > nihonkokumin\ ;
+舞踏教師 > butoukyoushi\ ;
+林間学校 > rinkangakkou\ ;
+花魁道中 > oirandouchuu\ ;
+滑降競技 > kakkoukyougi\ ;
+在外公館 > zaigaikoukan\ ;
+地方選挙 > chihousenkyo\ ;
+合成化学 > gouseikagaku\ ;
+私製葉書 > shiseihagaki\ ;
+不定積分 > futeisekibun\ ;
+正々堂々 > seiseidoudou\ ;
+半信半疑 > hanshinhangi\ ;
+輸入超過 > yunyuuchouka\ ;
+四元速度 > shigensokudo\ ;
+付属学校 > fuzokugakkou\ ;
+人工真珠 > jinkoushinju\ ;
+人権団体 > jinkendantai\ ;
+本文批評 > honmonhihyou\ ;
+画龍点睛 > garyoutensei\ ;
+乾地農法 > kanchinouhou\ ;
+喧喧囂囂 > kenkengougou\ ;
+人定尋問 > jinteijinmon\ ;
+任期満了 > ninkimanryou\ ;
+競馬新聞 > keibashinbun\ ;
+電気工学 > denkikougaku\ ;
+供給過多 > kyoukyuukata\ ;
+口頭審理 > koutoushinri\ ;
+平和教育 > heiwakyouiku\ ;
+総合病院 > sougoubyouin\ ;
+上層気流 > jousoukiryuu\ ;
+老齢年金 > roureinenkin\ ;
+演奏練習 > ensourenshuu\ ;
+仕掛地雷 > shikakejirai\ ;
+回転資金 > kaitenshikin\ ;
+暗中模索 > anchuumosaku\ ;
+唯我独尊 > yuigadokuson\ ;
+集散主義 > shuusanshugi\ ;
+土産物屋 > miyagemonoya\ ;
+自給自足 > jikyuujisoku\ ;
+和平協定 > waheikyoutei\ ;
+地方分権 > chihoubunken\ ;
+市内観光 > shinaikankou\ ;
+放射能雨 > houshanouame\ ;
+諜報機関 > chouhoukikan\ ;
+就学義務 > shuugakugimu\ ;
+航空優勢 > koukuuyuusei\ ;
+人才登用 > jinzaitouyou\ ;
+複本位制 > fukuhon''isei\ ;
+生活保護 > seikatsuhogo\ ;
+集中豪雨 > shuuchuugouu\ ;
+徴兵免除 > chouheimenjo\ ;
+公害問題 > kougaimondai\ ;
+単身赴任 > tanshinfunin\ ;
+差別用語 > sabetsuyougo\ ;
+人口動態 > jinkoudoutai\ ;
+宇宙物理 > uchuubutsuri\ ;
+全面戦争 > zenmensensou\ ;
+経済状態 > keizaijoutai\ ;
+委託研究 > itakukenkyuu\ ;
+千辛万苦 > senshinbanku\ ;
+医療報酬 > iryouhoushuu\ ;
+水晶時計 > suishoudokei\ ;
+三文文士 > sanmonbunshi\ ;
+回転木馬 > kaitenmokuba\ ;
+不戦条約 > fusenjouyaku\ ;
+一生懸命 > isshoukenmei\ ;
+日進月歩 > nisshingeppo\ ;
+受託販売 > jutakuhanbai\ ;
+文化勲章 > bunkakunshou\ ;
+悠悠閑閑 > yuuyuukankan\ ;
+仏英辞典 > futsueijiten\ ;
+衛生工学 > eiseikougaku\ ;
+政見放送 > seikenhousou\ ;
+水性塗料 > suiseitoryou\ ;
+先進兵器 > senshinheiki\ ;
+自己中心 > jikochuushin\ ;
+同和教育 > douwakyouiku\ ;
+学齢児童 > gakureijidou\ ;
+聖地巡礼 > seichijunrei\ ;
+社団法人 > shadanhoujin\ ;
+貨物輸送 > kamotsuyusou\ ;
+正多角形 > seitakakukei\ ;
+電気容量 > denkiyouryou\ ;
+準禁治産 > junkinchisan\ ;
+化学構造 > kagakukouzou\ ;
+一党独裁 > ittoudokusai\ ;
+無限小数 > mugenshousuu\ ;
+渾然一体 > konzen''ittai\ ;
+海底地震 > kaiteijishin\ ;
+博士課程 > hakushikatei\ ;
+平均寿命 > heikinjumyou\ ;
+市民運動 > shimin''undou\ ;
+記念出版 > kinenshuppan\ ;
+装置制御 > souchiseigyo\ ;
+原裁判所 > gensaibansho\ ;
+厚生大臣 > kouseidaijin\ ;
+油脂工業 > yushikougyou\ ;
+総支配人 > soushihainin\ ;
+日照時間 > nisshoujikan\ ;
+一般教書 > ippankyousho\ ;
+一部始終 > ichibushijuu\ ;
+関数原型 > kansuugenkei\ ;
+三重宝冠 > sanjuuhoukan\ ;
+歓送迎会 > kansougeikai\ ;
+緊急避難 > kinkyuuhinan\ ;
+刹那主義 > setsunashugi\ ;
+工業地区 > kougyouchiku\ ;
+我楽多市 > garakutaichi\ ;
+転写捺染 > tenshanassen\ ;
+自然災害 > shizensaigai\ ;
+天井棧敷 > tenjousajiki\ ;
+先行条件 > senkoujouken\ ;
+月下氷人 > gekkahyoujin\ ;
+医薬分業 > iyakubungyou\ ;
+身元保証 > mimotohoshou\ ;
+純正科学 > junseikagaku\ ;
+二重道徳 > nijuudoutoku\ ;
+悲喜交交 > hikikomogomo\ ;
+緊急動議 > kinkyuudougi\ ;
+太陽電池 > taiyoudenchi\ ;
+街頭録音 > gaitourokuon\ ;
+国際機関 > kokusaikikan\ ;
+前傾姿勢 > zenkeishisei\ ;
+帰属意識 > kizokuishiki\ ;
+公衆便所 > koushuubenjo\ ;
+日本国内 > nihonkokunai\ ;
+選民思想 > senminshisou\ ;
+咀嚼運動 > soshakuundou\ ;
+共同疎開 > kyoudousokai\ ;
+記念写真 > kinenshashin\ ;
+火燵布団 > kotatsubuton\ ;
+全面禁止 > zenmenkinshi\ ;
+北回帰線 > kitakaikisen\ ;
+連合艦隊 > rengoukantai\ ;
+人命救助 > jinmeikyuujo\ ;
+戦争状態 > sensoujoutai\ ;
+女子大学 > joshidaigaku\ ;
+国士無双 > kokushimusou\ ;
+平均余命 > heikin''yomei\ ;
+事例研究 > jireikenkyuu\ ;
+分散投資 > bunsantoushi\ ;
+偶像礼拝 > guuzoureihai\ ;
+効果覿面 > koukatekimen\ ;
+緊張緩和 > kinchoukanwa\ ;
+不許複製 > fukyofukusei\ ;
+北欧神話 > hokuoushinwa\ ;
+人事行政 > jinjigyousei\ ;
+昭和年間 > shouwanenkan\ ;
+国字問題 > kokujimondai\ ;
+国務大臣 > kokumudaijin\ ;
+言語障害 > gengoshougai\ ;
+再販価格 > saihankakaku\ ;
+平均株価 > heikinkabuka\ ;
+安息香酸 > ansokukousan\ ;
+譜代大名 > fudaidaimyou\ ;
+道路計画 > dourokeikaku\ ;
+古自動車 > furujidousha\ ;
+容姿端麗 > youshitanrei\ ;
+請負業者 > ukeoigyousha\ ;
+通常口語 > tsuujoukougo\ ;
+在外邦人 > zaigaihoujin\ ;
+開放経済 > kaihoukeizai\ ;
+体操競技 > taisoukyougi\ ;
+労働同盟 > roudoudoumei\ ;
+国際都市 > kokusaitoshi\ ;
+有刺鉄線 > yuushitessen\ ;
+団体行動 > dantaikoudou\ ;
+応用数学 > ouyousuugaku\ ;
+交通巡査 > koutsuujunsa\ ;
+無敵艦隊 > mutekikantai\ ;
+航空会社 > koukuugaisha\ ;
+大政奉還 > taiseihoukan\ ;
+不撓不屈 > futoufukutsu\ ;
+相関関係 > soukankankei\ ;
+同盟罷業 > doumeihigyou\ ;
+軍備競争 > gunbikyousou\ ;
+形容動詞 > keiyoudoushi\ ;
+補給幹線 > hokyuukansen\ ;
+為替裁定 > kawasesaitei\ ;
+表現主義 > hyougenshugi\ ;
+文教地区 > bunkyouchiku\ ;
+金属疲労 > kinzokuhirou\ ;
+強制疎開 > kyouseisokai\ ;
+警視総監 > keishisoukan\ ;
+代表社員 > daihyoushain\ ;
+借屋住居 > shakuyazumai\ ;
+徴兵制度 > chouheiseido\ ;
+短期大学 > tankidaigaku\ ;
+立体放送 > rittaihousou\ ;
+天井桟敷 > tenjousajiki\ ;
+圧迫包帯 > appakuhoutai\ ;
+通用期間 > tsuuyoukikan\ ;
+勉強時間 > benkyoujikan\ ;
+戸籍謄本 > kosekitouhon\ ;
+家庭教育 > kateikyouiku\ ;
+地震探鉱 > jishintankou\ ;
+避難梯子 > hinanbashigo\ ;
+社会奉仕 > shakaihoushi\ ;
+婚外性交 > kongaiseikou\ ;
+不可抗力 > fukakouryoku\ ;
+執行機関 > shikkoukikan\ ;
+勤務評定 > kinmuhyoutei\ ;
+常用対数 > jouyoutaisuu\ ;
+大道芸人 > daidougeinin\ ;
+黒風白雨 > kokufuuhakuu\ ;
+銀行業務 > ginkougyoumu\ ;
+現地調査 > genchichousa\ ;
+遠洋航海 > en''youkoukai\ ;
+外交関係 > gaikoukankei\ ;
+私学助成 > shigakujosei\ ;
+無痛分娩 > mutsuubunben\ ;
+不良債権 > furyousaiken\ ;
+地域時刻 > chiikijikoku\ ;
+凹版印刷 > ouhaninsatsu\ ;
+基幹産業 > kikansangyou\ ;
+路上駐車 > rojouchuusha\ ;
+首脳会談 > shunoukaidan\ ;
+独裁政治 > dokusaiseiji\ ;
+外交問題 > gaikoumondai\ ;
+破産申請 > hasanshinsei\ ;
+郷土芸能 > kyoudogeinou\ ;
+後方地域 > kouhouchiiki\ ;
+太陽放射 > taiyouhousha\ ;
+西洋文明 > seiyoubunmei\ ;
+振替輸送 > furikaeyusou\ ;
+交換条件 > koukanjouken\ ;
+発行市場 > hakkoushijou\ ;
+一昨昨年 > sakiototoshi\ ;
+製菓業者 > seikagyousha\ ;
+愛国団体 > aikokudantai\ ;
+変形規則 > henkeikisoku\ ;
+人気投票 > ninkitouhyou\ ;
+男女平等 > danjobyoudou\ ;
+郵便葉書 > yuubinhagaki\ ;
+浅学非才 > sengakuhisai\ ;
+市場撤退 > shijoutettai\ ;
+定期検診 > teikikenshin\ ;
+団体競技 > dantaikyougi\ ;
+民間団体 > minkandantai\ ;
+封建思想 > houkenshisou\ ;
+航続距離 > kouzokukyori\ ;
+双峰駱駝 > souhourakuda\ ;
+百科全書 > hyakkazensho\ ;
+試行錯誤 > shikousakugo\ ;
+工場地帯 > koujouchitai\ ;
+政治改革 > seijikaikaku\ ;
+市民会館 > shiminkaikan\ ;
+有限会社 > yuugengaisha\ ;
+重商主義 > juushoushugi\ ;
+駅前広場 > ekimaehiroba\ ;
+政治責任 > seijisekinin\ ;
+専業主婦 > sengyoushufu\ ;
+現場監督 > genbakantoku\ ;
+公転周期 > koutenshuuki\ ;
+口三味線 > kuchijamisen\ ;
+一昨昨夜 > issakusakuya\ ;
+血清肝炎 > kesseikan''en\ ;
+人跡未踏 > jinsekimitou\ ;
+強制保険 > kyouseihoken\ ;
+一望千里 > ichibousenri\ ;
+刑務所長 > keimushochou\ ;
+場内放送 > jounaihousou\ ;
+朝三暮四 > chousanboshi\ ;
+福祉国家 > fukushikokka\ ;
+長刀一枝 > choutouisshi\ ;
+悲喜交々 > hikikomogomo\ ;
+無線工学 > musenkougaku\ ;
+勝利投手 > shouritoushu\ ;
+天気概況 > tenkigaikyou\ ;
+無常迅速 > mujoujinsoku\ ;
+行動科学 > koudoukagaku\ ;
+予防注射 > yobouchuusha\ ;
+極秘情報 > gokuhijouhou\ ;
+封建社会 > houkenshakai\ ;
+労使紛争 > roushifunsou\ ;
+自学自習 > jigakujishuu\ ;
+不連続線 > furenzokusen\ ;
+治外法権 > chigaihouken\ ;
+経済外交 > keizaigaikou\ ;
+刃物三昧 > hamonozanmai\ ;
+光学繊維 > kougakusen''i\ ;
+全休止符 > zenkyuushifu\ ;
+和洋折衷 > wayousetchuu\ ;
+清算会社 > seisangaisha\ ;
+廃藩置県 > haihanchiken\ ;
+臨床講義 > rinshoukougi\ ;
+純日本風 > jun''nihonfuu\ ;
+挙国一致 > kyokokuitchi\ ;
+大衆運動 > taishuuundou\ ;
+市場調査 > shijouchousa\ ;
+公開外交 > koukaigaikou\ ;
+大蔵大臣 > ookuradaijin\ ;
+修正予算 > shuuseiyosan\ ;
+行政機関 > gyouseikikan\ ;
+政教分離 > seikyoubunri\ ;
+搭乗案内 > toujouan''nai\ ;
+五人囃子 > goninbayashi\ ;
+独善主義 > dokuzenshugi\ ;
+航空書簡 > koukuushokan\ ;
+賛否同票 > sanpidouhyou\ ;
+人文学派 > jinbungakuha\ ;
+援用生産 > en''youseisan\ ;
+不耕作地 > fukousakuchi\ ;
+大使公邸 > taishikoutei\ ;
+決議事項 > ketsugijikou\ ;
+温泉療法 > onsenryouhou\ ;
+一顰一笑 > ippin''isshou\ ;
+電気信号 > denkishingou\ ;
+専管水域 > senkansuiiki\ ;
+天体崇拝 > tentaisuuhai\ ;
+相互参照 > sougosanshou\ ;
+割烹料理 > kappouryouri\ ;
+郊外電車 > kougaidensha\ ;
+修正主義 > shuuseishugi\ ;
+補強証拠 > hokyoushouko\ ;
+人材銀行 > jinzaiginkou\ ;
+近代音楽 > kindaiongaku\ ;
+裏面工作 > rimenkousaku\ ;
+法治社会 > houchishakai\ ;
+大盤振舞 > oobanburumai\ ;
+三岐代表 > sangidaihyou\ ;
+教員組合 > kyouinkumiai\ ;
+海難救助 > kainankyuujo\ ;
+録音放送 > rokuonhousou\ ;
+三者凡退 > sanshabontai\ ;
+日本海流 > nihonkairyuu\ ;
+史上最大 > shijousaidai\ ;
+記憶障害 > kiokushougai\ ;
+不労所得 > furoushotoku\ ;
+老荘思想 > rousoushisou\ ;
+軍需工業 > gunjukougyou\ ;
+離合集散 > rigoushuusan\ ;
+良妻賢母 > ryousaikenbo\ ;
+軍司令官 > gunshireikan\ ;
+貿易会社 > bouekigaisha\ ;
+燐酸肥料 > rinsanhiryou\ ;
+無限責任 > mugensekinin\ ;
+科学思想 > kagakushisou\ ;
+四海同胞 > shikaidouhou\ ;
+健康問題 > kenkoumondai\ ;
+感傷主義 > kanshoushugi\ ;
+馬頭観音 > batoukan''non\ ;
+天頂距離 > tenchoukyori\ ;
+調査部長 > chousabuchou\ ;
+千紫万紅 > senshibankou\ ;
+行動命令 > koudoumeirei\ ;
+為替手形 > kawasetegata\ ;
+赤道気団 > sekidoukidan\ ;
+空中落下 > kuuchuurakka\ ;
+定格荷重 > teikakukajuu\ ;
+為替銀行 > kawaseginkou\ ;
+官能主義 > kan''noushugi\ ;
+家庭教師 > kateikyoushi\ ;
+昼夜兼行 > chuuyakenkou\ ;
+会社営業 > kaishaeigyou\ ;
+啓蒙思想 > keimoushisou\ ;
+非循環的 > hijunkanteki\ ;
+文民統制 > bunmintousei\ ;
+過酸化物 > kasankabutsu\ ;
+一念発起 > ichinenhokki\ ;
+育成栽培 > ikuseisaibai\ ;
+現場検証 > genbakenshou\ ;
+時代考証 > jidaikoushou\ ;
+感度良好 > kandoryoukou\ ;
+透明人間 > toumeiningen\ ;
+常套手段 > joutoushudan\ ;
+和平工作 > waheikousaku\ ;
+暗中飛躍 > anchuuhiyaku\ ;
+人民裁判 > jinminsaiban\ ;
+施行規則 > shikoukisoku\ ;
+半身不随 > hanshinfuzui\ ;
+普通名詞 > futsuumeishi\ ;
+対象範囲 > taishouhan''i\ ;
+人民戦線 > jinminsensen\ ;
+簡明強固 > kanmeikyouko\ ;
+可能選択 > kanousentaku\ ;
+屋内競技 > okunaikyougi\ ;
+多情仏心 > tajoubusshin\ ;
+単純計算 > tanjunkeisan\ ;
+公衆電話 > koushuudenwa\ ;
+花自動車 > hanajidousha\ ;
+放蕩息子 > houtoumusuko\ ;
+写真機店 > shashinkiten\ ;
+三等軍曹 > santougunsou\ ;
+緊急逮捕 > kinkyuutaiho\ ;
+貞操蹂躪 > teisoujuurin\ ;
+心肺機能 > shinpaikinou\ ;
+雌雄同株 > shiyuudoushu\ ;
+順風満帆 > junpuumanpan\ ;
+学校法人 > gakkouhoujin\ ;
+変位電流 > hen''idenryuu\ ;
+前哨勤務 > zenshoukinmu\ ;
+海洋科学 > kaiyoukagaku\ ;
+農民運動 > noumin''undou\ ;
+責任範囲 > sekininhan''i\ ;
+発光塗料 > hakkoutoryou\ ;
+感応作用 > kan''nousayou\ ;
+子持昆布 > komochikonbu\ ;
+市営住宅 > shieijuutaku\ ;
+事業部長 > jigyoubuchou\ ;
+大胆不敵 > daitanfuteki\ ;
+天地創造 > tenchisouzou\ ;
+市場経済 > shijoukeizai\ ;
+予定期日 > yoteikijitsu\ ;
+医療技術 > iryougijutsu\ ;
+使役動詞 > shiekidoushi\ ;
+徴兵検査 > chouheikensa\ ;
+自家発電 > jikahatsuden\ ;
+同語反復 > dougohanpuku\ ;
+弁論大会 > benrontaikai\ ;
+一般投票 > ippantouhyou\ ;
+一人息子 > hitorimusuko\ ;
+退役軍人 > taiekigunjin\ ;
+人生最悪 > jinseisaiaku\ ;
+印加電圧 > inkaden''atsu\ ;
+液性限界 > ekiseigenkai\ ;
+栄養学者 > eiyougakusha\ ;
+都市交通 > toshikoutsuu\ ;
+交換教授 > koukankyouju\ ;
+学生時代 > gakuseijidai\ ;
+愛社精神 > aishaseishin\ ;
+老化現象 > roukagenshou\ ;
+社会問題 > shakaimondai\ ;
+盲管銃創 > moukanjuusou\ ;
+東海地方 > toukaichihou\ ;
+発行会社 > hakkougaisha\ ;
+近所合壁 > kinjogappeki\ ;
+音声圧縮 > onseiasshuku\ ;
+民族主義 > minzokushugi\ ;
+専門科目 > senmonkamoku\ ;
+減量経営 > genryoukeiei\ ;
+睡眠不足 > suiminbusoku\ ;
+兄妹喧嘩 > kyoudaigenka\ ;
+運送契約 > unsoukeiyaku\ ;
+舞台中継 > butaichuukei\ ;
+下層階級 > kasoukaikyuu\ ;
+経済闘争 > keizaitousou\ ;
+不良少女 > furyoushoujo\ ;
+応援演説 > ouen''enzetsu\ ;
+行動半径 > koudouhankei\ ;
+地震地帯 > jishinchitai\ ;
+通過貿易 > tsuukaboueki\ ;
+統計年鑑 > toukeinenkan\ ;
+人手不足 > hitodebusoku\ ;
+十中八九 > jitchuuhakku\ ;
+滋強飲料 > jikyouinryou\ ;
+四角号碼 > shikakugouma\ ;
+固定観念 > koteikan''nen\ ;
+経験科学 > keikenkagagu\ ;
+荷電粒子 > kadenryuushi\ ;
+人工生命 > jinkouseimei\ ;
+電気料金 > denkiryoukin\ ;
+往復葉書 > oufukuhagaki\ ;
+人造石油 > jinzousekiyu\ ;
+天竺牡丹 > tenjikubotan\ ;
+御馳走様 > gochisousama\ ;
+天路歴程 > tenrorekitei\ ;
+共同便所 > kyoudoubenjo\ ;
+暗殺未遂 > ansatsumisui\ ;
+未払費用 > miharaihiyou\ ;
+相互配属 > sougohaizoku\ ;
+破顔一笑 > hagan''isshou\ ;
+治療効果 > chiryoukouka\ ;
+猟官制度 > ryoukanseido\ ;
+収容患者 > shuuyoukanja\ ;
+武陵桃源 > buryoutougen\ ;
+人民所有 > jinminshoyuu\ ;
+反射係数 > hanshakeisuu\ ;
+工業意匠 > kougyouishou\ ;
+相対評価 > soutaihyouka\ ;
+経済問題 > keizaimondai\ ;
+三十六計 > sanjuurokkei\ ;
+残業手当 > zangyouteate\ ;
+投球動作 > toukyuudousa\ ;
+防災訓練 > bousaikunren\ ;
+耐用年数 > taiyounensuu\ ;
+民定憲法 > minteikenpou\ ;
+福利厚生 > fukurikousei\ ;
+消耗品費 > shoumouhinhi\ ;
+私有財産 > shiyuuzaisan\ ;
+学級閉鎖 > gakkyuuheisa\ ;
+人生記録 > jinseikiroku\ ;
+実利主義 > jitsurishugi\ ;
+公使館員 > koushikan''in\ ;
+進化論者 > shinkaronsha\ ;
+空中機動 > kuuchuukidou\ ;
+投票結果 > touhyoukekka\ ;
+前提条件 > zenteijouken\ ;
+外人選手 > gaijinsenshu\ ;
+巨大分子 > kyodaibunshi\ ;
+贋造紙幣 > ganzoushihei\ ;
+検定試験 > kenteishiken\ ;
+藍綬褒章 > ranjuhoushou\ ;
+司法試験 > shihoushiken\ ;
+柔軟体操 > juunantaisou\ ;
+不良導体 > furyoudoutai\ ;
+対戦車砲 > taisenshahou\ ;
+死体解剖 > shitaikaibou\ ;
+兼業農家 > kengyounouka\ ;
+公開録音 > koukairokuon\ ;
+海軍大臣 > kaigundaijin\ ;
+南京花火 > nankinhanabi\ ;
+扁桃腺炎 > hentousen''en\ ;
+中央銀行 > chuuouginkou\ ;
+圧縮空気 > asshukukuuki\ ;
+決済手段 > kessaishudan\ ;
+代理業者 > dairigyousha\ ;
+配置転換 > haichitenkan\ ;
+禁治産者 > kinchisansha\ ;
+全身不随 > zenshinfuzui\ ;
+運転技術 > untengijutsu\ ;
+電子音楽 > denshiongaku\ ;
+千万無量 > senmanmuryou\ ;
+自殺幇助 > jisatsuhoujo\ ;
+代数関数 > daisuukansuu\ ;
+音響設計 > onkyousekkei\ ;
+乳様突起 > nyuuyoutokki\ ;
+事前割当 > jizenwariate\ ;
+兵役免状 > heiekimenjou\ ;
+天涯孤独 > tengaikodoku\ ;
+不承不承 > fushoubushou\ ;
+無所属現 > mushozokugen\ ;
+木造家屋 > mokuzoukaoku\ ;
+養老年金 > yourounenkin\ ;
+悠々自適 > yuuyuujiteki\ ;
+事前研修 > jizenkenshuu\ ;
+体系文法 > taikeibunpou\ ;
+雌雄同体 > shiyuudoutai\ ;
+構造汚職 > kouzouoshoku\ ;
+基礎知識 > kisochishiki\ ;
+地域紛争 > chiikifunsou\ ;
+単峰駱駝 > tanpourakuda\ ;
+人気商売 > ninkishoubai\ ;
+姉妹喧嘩 > kyoudaigenka\ ;
+千姿万態 > senshibantai\ ;
+公有財産 > kouyuuzaisan\ ;
+先行投資 > senkoutoushi\ ;
+製造工程 > seizoukoutei\ ;
+自由競争 > jiyuukyousou\ ;
+川魚料理 > kawauoryouri\ ;
+現代科学 > gendaikagaku\ ;
+産業機械 > sangyoukikai\ ;
+不合格者 > fugoukakusha\ ;
+暑中見舞 > shochuumimai\ ;
+誘導尋問 > yuudoujinmon\ ;
+瑠璃唐草 > rurikarakusa\ ;
+定形動詞 > teikeidoushi\ ;
+喧々囂々 > kenkengougou\ ;
+人間関係 > ningenkankei\ ;
+赤十字社 > sekijuujisha\ ;
+無産階級 > musankaikyuu\ ;
+六法全書 > roppouzensho\ ;
+集権排除 > shuukenhaijo\ ;
+国際会議 > kokusaikaigi\ ;
+児童文学 > jidoubungaku\ ;
+軍事秘密 > gunjihimitsu\ ;
+任意出頭 > nin''ishuttou\ ;
+付随現象 > fuzuigenshou\ ;
+唇歯輔車 > shinshihosha\ ;
+原因調査 > gen''inchousa\ ;
+人跡未到 > jinsekimitou\ ;
+担当部長 > tantoubuchou\ ;
+主任教授 > shuninkyouju\ ;
+軍備削減 > gunbisakugen\ ;
+公開裁判 > koukaisaiban\ ;
+分解修理 > bunkaishuuri\ ;
+百花斉放 > hyakkaseihou\ ;
+人造真珠 > jinzoushinju\ ;
+神経過敏 > shinkeikabin\ ;
+送金為替 > soukinkawase\ ;
+厳正科学 > genseikagaku\ ;
+司法書士 > shihoushoshi\ ;
+在外資産 > zaigaishisan\ ;
+法律違反 > houritsuihan\ ;
+進路指導 > shinroshidou\ ;
+予備協約 > yobikyouyaku\ ;
+教育玩具 > kyouikugangu\ ;
+文法規則 > bunpoukisoku\ ;
+完了時制 > kanryoujisei\ ;
+事実誤認 > jijitsugonin\ ;
+軍需産業 > gunjusangyou\ ;
+自然科学 > shizenkagaku\ ;
+武者修行 > mushashugyou\ ;
+生成文法 > seiseibunpou\ ;
+司法大臣 > shihoudaijin\ ;
+主脳会談 > shunoukaidan\ ;
+御用商人 > goyoushounin\ ;
+使徒信条 > shitoshinjou\ ;
+証拠物件 > shoukobukken\ ;
+予備知識 > yobichishiki\ ;
+合名会社 > goumeigaisha\ ;
+共同一致 > kyoudouitchi\ ;
+武力政治 > buryokuseiji\ ;
+軌道修正 > kidoushuusei\ ;
+湾岸戦争 > wangansensou\ ;
+合格祈願 > goukakukigan\ ;
+化学肥料 > kagakuhiryou\ ;
+独裁国家 > dokusaikokka\ ;
+低利金融 > teirikin''yuu\ ;
+土類金属 > doruikinzoku\ ;
+共和政体 > kyouwaseitai\ ;
+法廷闘争 > houteitousou\ ;
+再生装置 > saiseisouchi\ ;
+北方領土 > hoppouryoudo\ ;
+全廃論者 > zenpaironsha\ ;
+累進課税 > ruishinkazei\ ;
+国防会議 > kokuboukaigi\ ;
+二百十日 > nihyakutooka\ ;
+事前通報 > jizentsuuhou\ ;
+社会意識 > shakaiishiki\ ;
+援助凍結 > enjotouketsu\ ;
+安全第一 > anzendaiichi\ ;
+個人攻撃 > kojinkougeki\ ;
+悪戯坊主 > itazurabouzu\ ;
+遊動円木 > yuudouenboku\ ;
+円形劇場 > enkeigekijou\ ;
+芭蕉梶木 > bashoukajiki\ ;
+情報科学 > jouhoukagaku\ ;
+傷害保険 > shougaihoken\ ;
+破産宣告 > hasansenkoku\ ;
+癩病患者 > raibyoukanja\ ;
+正正堂堂 > seiseidoudou\ ;
+因子分析 > inshibunseki\ ;
+待合政治 > machiaiseiji\ ;
+末法思想 > mappoushisou\ ;
+航続時間 > kouzokujikan\ ;
+専売特許 > senbaitokkyo\ ;
+同種同文 > doushudoubun\ ;
+鉄道事故 > tetsudoujiko\ ;
+真理関数 > shinrikansuu\ ;
+子子孫孫 > shishisonson\ ;
+英国石油 > eikokusekiyu\ ;
+保護観察 > hogokansatsu\ ;
+秘密兵器 > himitsuheiki\ ;
+郵便貯金 > yuubinchokin\ ;
+二重人格 > nijuujinkaku\ ;
+白衣明妃 > byakuemyouhi\ ;
+生体解剖 > seitaikaibou\ ;
+立太子礼 > rittaishirei\ ;
+実際問題 > jissaimondai\ ;
+公転速度 > koutensokudo\ ;
+一石二鳥 > issekinichou\ ;
+教育課程 > kyouikukatei\ ;
+人代名詞 > jindaimeishi\ ;
+優生結婚 > yuuseikekkon\ ;
+口頭試問 > koutoushimon\ ;
+交通安全 > koutsuuanzen\ ;
+和文英訳 > wabun''eiyaku\ ;
+本家本元 > honkehonmoto\ ;
+盲目飛行 > moumokuhikou\ ;
+滞空記録 > taikuukiroku\ ;
+立体裁断 > rittaisaidan\ ;
+国内事情 > kokunaijijou\ ;
+接触事故 > sesshokujiko\ ;
+乾燥腐朽 > kansoufukyuu\ ;
+合資会社 > goushigaisha\ ;
+彫刻具座 > choukokuguza\ ;
+戸外撮影 > kogaisatsuei\ ;
+応急修理 > oukyuushuuri\ ;
+麻酔注射 > masuichuusha\ ;
+末端価格 > mattankakaku\ ;
+偶像崇拝 > guuzousuuhai\ ;
+普通列車 > futsuuressha\ ;
+和平交渉 > waheikoushou\ ;
+循環論法 > junkanronpou\ ;
+飽食暖衣 > houshokudani\ ;
+機械工業 > kikaikougyou\ ;
+無限集合 > mugenshuugou\ ;
+有価証券 > yuukashouken\ ;
+総統選挙 > soutousenkyo\ ;
+人気役者 > ninkiyakusha\ ;
+市内通話 > shinaitsuuwa\ ;
+一等陸士 > ittourikushi\ ;
+講和条約 > kouwajouyaku\ ;
+工業都市 > kougyoutoshi\ ;
+卓上電話 > takujoudenwa\ ;
+客観主義 > kyakkanshugi\ ;
+共同謀議 > kyoudoubougi\ ;
+購買組合 > koubaikumiai\ ;
+請負仕事 > ukeoishigoto\ ;
+雇用契約 > koyoukeiyaku\ ;
+当意即妙 > touisokumyou\ ;
+労働市場 > roudoushijou\ ;
+反対尋問 > hantaijinmon\ ;
+士官学校 > shikangakkou\ ;
+名誉会長 > meiyokaichou\ ;
+平均給与 > heikinkyuuyo\ ;
+小便小僧 > shoubenkozou\ ;
+人権蹂躪 > jinkenjuurin\ ;
+圧縮酸素 > asshukusanso\ ;
+人権蹂躙 > jinkenjuurin\ ;
+年次報告 > nenjihoukoku\ ;
+郵便番号 > yuubinbangou\ ;
+計算問題 > keisanmondai\ ;
+総合雑誌 > sougouzasshi\ ;
+土地収用 > tochishuuyou\ ;
+広告効果 > koukokukouka\ ;
+幼児教育 > youjikyouiku\ ;
+近所迷惑 > kinjomeiwaku\ ;
+無限級数 > mugenkyuusuu\ ;
+一刻千金 > ikkokusenkin\ ;
+陪審制度 > baishinseido\ ;
+編集機能 > henshuukinou\ ;
+先取特権 > senshutokken\ ;
+専門分野 > senmonbun''ya\ ;
+担子菌類 > tanshikinrui\ ;
+関係強化 > kankeikyouka\ ;
+攻撃部隊 > kougekibutai\ ;
+秘密会議 > himitsukaigi\ ;
+武者修業 > mushashugyou\ ;
+消音装置 > shouonsouchi\ ;
+満州事変 > manshuujihen\ ;
+資産評価 > shisanhyouka\ ;
+出版許可 > shuppankyoka\ ;
+国内需要 > kokunaijuyou\ ;
+千万長者 > senbanchouja\ ;
+化学試験 > kagakushiken\ ;
+細胞培養 > saiboubaiyou\ ;
+音韻組織 > on''insoshiki\ ;
+処処方方 > shoshohoubou\ ;
+座標変換 > zahyouhenkan\ ;
+機械工学 > kikaikougaku\ ;
+第三部長 > daisanbuchou\ ;
+奇岩怪石 > kigankaiseki\ ;
+耐風構造 > taifuukouzou\ ;
+石鹸工場 > sekkenkoujou\ ;
+在郷軍人 > zaigougunjin\ ;
+幽霊会社 > yuureigaisha\ ;
+環境破壊 > kankyouhakai\ ;
+国際主義 > kokusaishugi\ ;
+御節料理 > osechiryouri\ ;
+修理工場 > shuurikoujou\ ;
+拒否反応 > kyohihan''nou\ ;
+一言一句 > ichigon''ikku\ ;
+単独飛行 > tandokuhikou\ ;
+主権在民 > shukenzaimin\ ;
+人格主義 > jinkakushugi\ ;
+自殺未遂 > jisatsumisui\ ;
+出家遁世 > shukketonsei\ ;
+紐革饂飩 > himokawaudon\ ;
+愚民政策 > guminseisaku\ ;
+単科大学 > tankadaigaku\ ;
+適正利潤 > tekiseirijun\ ;
+発音記号 > hatsuonkigou\ ;
+軍事協定 > gunjikyoutei\ ;
+西高東低 > seikoutoutei\ ;
+損耗人員 > sonmoujin''in\ ;
+実勢価格 > jisseikakaku\ ;
+援用設計 > en''yousekkei\ ;
+現場中継 > genbachuukei\ ;
+感知装置 > kanchisouchi\ ;
+議決機関 > giketsukikan\ ;
+安心立命 > anjinryoumei\ ;
+合同事業 > goudoujigyou\ ;
+同期信号 > doukishingou\ ;
+仲間意識 > nakamaishiki\ ;
+媒介変数 > baikaihensuu\ ;
+寒中水泳 > kanchuusuiei\ ;
+被保険物 > hihokenbutsu\ ;
+暗殺事件 > ansatsujiken\ ;
+折衷主義 > setchuushugi\ ;
+単式簿記 > tanshikiboki\ ;
+教養課程 > kyouyoukatei\ ;
+三者会談 > sanshakaidan\ ;
+連記投票 > renkitouhyou\ ;
+心理状態 > shinrijoutai\ ;
+海外市場 > kaigaishijou\ ;
+既成事実 > kiseijijitsu\ ;
+事務総局 > jimusoukyoku\ ;
+前進基地 > zenshinkichi\ ;
+同工異曲 > doukouikyoku\ ;
+命題関数 > meidaikansuu\ ;
+北西航路 > hokuseikouro\ ;
+合同会合 > goudoukaigou\ ;
+立地条件 > ritchijouken\ ;
+地理学者 > chirigakusha\ ;
+大所高所 > taishokousho\ ;
+重複保険 > juufukuhoken\ ;
+通常兵器 > tsuujouheiki\ ;
+外国部隊 > gaikokubutai\ ;
+文化交流 > bunkakouryuu\ ;
+市外通話 > shigaitsuuwa\ ;
+毛細血管 > mousaikekkan\ ;
+動態統計 > doutaitoukei\ ;
+社内情報 > shanaijouhou\ ;
+中公文庫 > chuukoubunko\ ;
+圧電効果 > atsudenkouka\ ;
+魑魅魍魎 > chimimouryou\ ;
+循環系統 > junkankeitou\ ;
+対人関係 > taijinkankei\ ;
+普通選挙 > futsuusenkyo\ ;
+条件闘争 > joukentousou\ ;
+千状万態 > senjoubantai\ ;
+化成工業 > kaseikougyou\ ;
+経済原論 > keizaigenron\ ;
+権謀術数 > kenboujussuu\ ;
+不揮発性 > fukihatsusei\ ;
+高等学校 > koutougakkou\ ;
+連合王国 > rengououkoku\ ;
+郵便書簡 > yuubinshokan\ ;
+深謀遠慮 > shinbouenryo\ ;
+住民運動 > juumin''undou\ ;
+法文学部 > houbungakubu\ ;
+普通郵便 > futsuuyuubin\ ;
+君主政体 > kunshuseitai\ ;
+捲土重来 > kendochourai\ ;
+女声合唱 > joseigasshou\ ;
+米西戦争 > beiseisensou\ ;
+高度成長 > koudoseichou\ ;
+乾布摩擦 > kanpumasatsu\ ;
+中華思想 > chuukashisou\ ;
+贈与証書 > zouyoshousho\ ;
+公衆衛生 > koushuueisei\ ;
+社会科学 > shakaikagaku\ ;
+農芸化学 > nougeikagaku\ ;
+交通整理 > koutsuuseiri\ ;
+特殊部隊 > tokushubutai\ ;
+事実無根 > jijitsumukon\ ;
+孔雀妙王 > kujakumyouou\ ;
+財産分与 > zaisanbun''yo\ ;
+邦字新聞 > houjishinbun\ ;
+機動計画 > kidoukeikaku\ ;
+孤立主義 > koritsushugi\ ;
+明治天皇 > meijiten''nou\ ;
+焦点距離 > shoutenkyori\ ;
+集合時間 > shuugoujikan\ ;
+住宅地区 > juutakuchiku\ ;
+多角貿易 > takakuboueki\ ;
+非喫煙者 > hikitsuensha\ ;
+消化不良 > shoukafuryou\ ;
+舞台照明 > butaishoumei\ ;
+不生産的 > fuseisanteki\ ;
+非生産的 > hiseisanteki\ ;
+募集人員 > boshuujin''in\ ;
+原稿用紙 > genkouyoushi\ ;
+無意識的 > muishikiteki\ ;
+総司令官 > soushireikan\ ;
+譲渡所得 > joutoshotoku\ ;
+学童保育 > gakudouhoiku\ ;
+最終兵器 > saishuuheiki\ ;
+滑走車輪 > kassousharin\ ;
+月刊雑誌 > gekkanzasshi\ ;
+傍若無人 > boujakubujin\ ;
+勤労奉仕 > kinrouhoushi\ ;
+性腺摘除 > seisentekijo\ ;
+憲法改正 > kenpoukaisei\ ;
+行路病者 > kourobyousha\ ;
+一人芝居 > hitorishibai\ ;
+共同防衛 > kyoudoubouei\ ;
+闘志満満 > toushimanman\ ;
+市勢調査 > shiseichousa\ ;
+会厭軟骨 > een''nankotsu\ ;
+軍用地図 > gun''youchizu\ ;
+東奔西走 > touhonseisou\ ;
+交代作業 > koutaisagyou\ ;
+日記文学 > nikkibungaku\ ;
+日系米人 > nikkeibeijin\ ;
+至公至平 > shikoushihei\ ;
+関連会社 > kanrengaisha\ ;
+人権宣言 > jinkensengen\ ;
+人造人間 > jinzouningen\ ;
+傾斜家賃 > keishayachin\ ;
+自民党則 > jimintousoku\ ;
+反復記号 > hanpukukigou\ ;
+日本航空 > nipponkoukuu\ ;
+英才教育 > eisaikyouiku\ ;
+排水条件 > haisuijouken\ ;
+英国航空 > eikokukoukuu\ ;
+暗中摸索 > anchuumosaku\ ;
+前哨騎兵 > zenshoukihei\ ;
+水素爆弾 > suisobakudan\ ;
+潅漑用水 > kangaiyousui\ ;
+一斉射撃 > isseishageki\ ;
+基軸通貨 > kijikutsuuka\ ;
+傾斜生産 > keishaseisan\ ;
+境界理論 > kyoukairiron\ ;
+天皇陛下 > ten''nouheika\ ;
+天然果汁 > ten''nenkajuu\ ;
+霊肉一致 > reinikuitchi\ ;
+経済復興 > keizaifukkou\ ;
+人口統計 > jinkoutoukei\ ;
+戦時産業 > senjisangyou\ ;
+古銭学者 > kosengakusha\ ;
+対弾道弾 > taidandoudan\ ;
+製造番号 > seizoubangou\ ;
+多重人格 > tajuujinkaku\ ;
+一刀両断 > ittouryoudan\ ;
+共産主義 > kyousanshugi\ ;
+記名投票 > kimeitouhyou\ ;
+休憩時間 > kyuukeijikan\ ;
+丸太足場 > marutaashiba\ ;
+桃色遊戯 > momoiroyuugi\ ;
+武士階級 > bushikaikyuu\ ;
+国際電話 > kokusaidenwa\ ;
+人工地震 > jinkoujishin\ ;
+潜在主権 > senzaishuken\ ;
+過小評価 > kashouhyouka\ ;
+範疇部門 > hanchuubumon\ ;
+修道制度 > shuudouseido\ ;
+統語範疇 > tougohanchuu\ ;
+衛生設備 > eiseisetsubi\ ;
+一次産品 > ichijisanpin\ ;
+公明正大 > koumeiseidai\ ;
+花火線香 > hanabisenkou\ ;
+舶用機関 > hakuyoukikan\ ;
+公民権法 > kouminkenhou\ ;
+昏睡状態 > konsuijoutai\ ;
+対向車線 > taikoushasen\ ;
+鉄拳制裁 > tekkenseisai\ ;
+桂冠詩人 > keikanshijin\ ;
+人口調査 > jinkouchousa\ ;
+司法解剖 > shihoukaibou\ ;
+人口静態 > jinkouseitai\ ;
+有体動産 > yuutaidousan\ ;
+採用試験 > saiyoushiken\ ;
+気象情報 > kishoujouhou\ ;
+有線放送 > yuusenhousou\ ;
+喀痰検査 > kakutankensa\ ;
+郷土料理 > kyoudoryouri\ ;
+三段論法 > sandanronpou\ ;
+時代精神 > jidaiseishin\ ;
+誇大広告 > kodaikoukoku\ ;
+一昨々夜 > issakusakuya\ ;
+都市計画 > toshikeikaku\ ;
+関東一円 > kantouichien\ ;
+自然発生 > shizenhassei\ ;
+欽定憲法 > kinteikenpou\ ;
+数値制御 > suuchiseigyo\ ;
+武者人形 > mushaningyou\ ;
+分周回路 > bunshuukairo\ ;
+臥龍点睛 > garyoutensei\ ;
+市民大会 > shimintaikai\ ;
+赤字国債 > akajikokusai\ ;
+使用方法 > shiyouhouhou\ ;
+小春日和 > koharubiyori\ ;
+公式試合 > koushikijiai\ ;
+照射処理 > shoushashori\ ;
+参勤交替 > sankinkoutai\ ;
+羊頭狗肉 > youtoukuniku\ ;
+斡旋業者 > assengyousha\ ;
+会社概要 > kaishagaiyou\ ;
+民主政体 > minshuseitai\ ;
+粗放農業 > sohounougyou\ ;
+財務諸表 > zaimushohyou\ ;
+蚊取線香 > katorisenkou\ ;
+広報情報 > kouhoujouhou\ ;
+緊急事態 > kinkyuujitai\ ;
+均衡価格 > kinkoukakaku\ ;
+季節変異 > kisetsuhen''i\ ;
+有感地震 > yuukanjishin\ ;
+緩和振動 > kanwashindou\ ;
+幽霊人口 > yuureijinkou\ ;
+統語指標 > tougoshihyou\ ;
+最高価格 > saikoukakaku\ ;
+酸性白土 > sanseihakudo\ ;
+民族衣装 > minzokuishou\ ;
+修士課程 > shuushikatei\ ;
+公益法人 > kouekihoujin\ ;
+歴史主義 > rekishishugi\ ;
+弁慶格子 > benkeigoushi\ ;
+第二人称 > dainininshou\ ;
+下流社会 > karyuushakai\ ;
+快楽主義 > kairakushugi\ ;
+不精不精 > fushoubushou\ ;
+制限速度 > seigensokudo\ ;
+文武両道 > bunburyoudou\ ;
+上昇限度 > joushougendo\ ;
+作用積分 > sayousekibun\ ;
+腹筋運動 > fukkin''undou\ ;
+公認記録 > kouninkiroku\ ;
+一網打尽 > ichimoudajin\ ;
+学校用品 > gakkouyouhin\ ;
+住宅手当 > juutakuteate\ ;
+認知科学 > ninchikagaku\ ;
+商売道具 > shoubaidougu\ ;
+原子戦争 > genshisensou\ ;
+二重焦点 > nijuushouten\ ;
+口答試問 > koutoushimon\ ;
+図書館長 > toshokanchou\ ;
+在庫調整 > zaikochousei\ ;
+対数関数 > taisuukansuu\ ;
+政教一致 > seikyouitchi\ ;
+文芸批評 > bungeihihyou\ ;
+線形代数 > senkeidaisuu\ ;
+連合政権 > rengouseiken\ ;
+頼母子講 > tanomoshikou\ ;
+在韓米軍 > zaikanbeigun\ ;
+一夜乞食 > ichiyakojiki\ ;
+異常終了 > ijoushuuryou\ ;
+試験地獄 > shikenjigoku\ ;
+社員教育 > shainkyouiku\ ;
+企業年金 > kigyounenkin\ ;
+乞食根性 > kojikikonjou\ ;
+企業合同 > kigyougoudou\ ;
+自主指針 > jishushishin\ ;
+感慨無量 > kangaimuryou\ ;
+敵性国家 > tekiseikokka\ ;
+等差級数 > tousakyuusuu\ ;
+師範学校 > shihangakkou\ ;
+経済社会 > keizaishakai\ ;
+改良主義 > kairyoushugi\ ;
+経済制裁 > keizaiseisai\ ;
+主戦投手 > shusentoushu\ ;
+遊撃隊員 > yuugekitaiin\ ;
+一時帰休 > ichijikikyuu\ ;
+受益証券 > juekishouken\ ;
+拙速主義 > sessokushugi\ ;
+未開拓地 > mikaitakuchi\ ;
+全権公使 > zenkenkoushi\ ;
+統制経済 > touseikeizai\ ;
+田園風景 > den''enfuukei\ ;
+旅行日程 > ryokounittei\ ;
+無量大数 > muryoudaisuu\ ;
+割引歩合 > waribikibuai\ ;
+反核運動 > hankakuundou\ ;
+香港返還 > honkonhenkan\ ;
+企業合併 > kigyougappei\ ;
+非行少年 > hikoushounen\ ;
+野外撮影 > yagaisatsuei\ ;
+千手観音 > senjukan''non\ ;
+精神主義 > seishinshugi\ ;
+終始一貫 > shuushiikkan\ ;
+県民会館 > kenminkaikan\ ;
+教条主義 > kyoujoushugi\ ;
+更生会社 > kouseigaisha\ ;
+繊維工業 > sen''ikougyou\ ;
+人間同士 > ningendoushi\ ;
+勘合貿易 > kangouboueki\ ;
+百家争鳴 > hyakkasoumei\ ;
+世界政策 > sekaiseisaku\ ;
+家屋台帳 > kaokudaichou\ ;
+東海道線 > toukaidousen\ ;
+過当競争 > katoukyousou\ ;
+液体窒素 > ekitaichisso\ ;
+平和協定 > heiwakyoutei\ ;
+無線電信 > musendenshin\ ;
+専門用語 > senmon''yougo\ ;
+人造肥料 > jinzouhiryou\ ;
+大砲三門 > taihousanmon\ ;
+実験装置 > jikkensouchi\ ;
+中央労働 > chuuouroudou\ ;
+内線番号 > naisenbangou\ ;
+伝記作者 > denkisakusha\ ;
+人民公社 > jinminkousha\ ;
+連絡切符 > renrakukippu\ ;
+共同墓地 > kyoudoubochi\ ;
+実態調査 > jittaichousa\ ;
+総務長官 > soumuchoukan\ ;
+混乱状態 > konranjoutai\ ;
+家族意識 > kazokuishiki\ ;
+外柔内剛 > gaijuunaigou\ ;
+訪問販売 > houmonhanbai\ ;
+排斥運動 > haisekiundou\ ;
+原子弾頭 > genshidantou\ ;
+営業案内 > eigyouan''nai\ ;
+天文航法 > tenmonkouhou\ ;
+非実際的 > hijissaiteki\ ;
+参勤交代 > sankinkoutai\ ;
+裏書譲渡 > uragakijouto\ ;
+関係書類 > kankeishorui\ ;
+免許皆伝 > menkyokaiden\ ;
+回転競技 > kaitenkyougi\ ;
+経済水域 > keizaisuiiki\ ;
+無欲恬淡 > muyokutentan\ ;
+自我実現 > jigajitsugen\ ;
+執行猶予 > shikkouyuuyo\ ;
+融通手形 > yuuzuutegata\ ;
+厚生年金 > kouseinenkin\ ;
+院内感染 > in''naikansen\ ;
+悪性水腫 > akuseisuishu\ ;
+団十郎丈 > danjuuroujou\ ;
+以心伝心 > ishindenshin\ ;
+一字千金 > ichijisenkin\ ;
+業績悪化 > gyousekiakka\ ;
+二束三文 > nisokusanmon\ ;
+兵器拡散 > heikikakusan\ ;
+交友関係 > kouyuukankei\ ;
+国際政治 > kokusaiseiji\ ;
+書面審理 > shomenshinri\ ;
+人間社会 > ningenshakai\ ;
+軍国主義 > gunkokushugi\ ;
+水上競技 > suijoukyougi\ ;
+河原乞食 > kawarakojiki\ ;
+二重撮影 > nijuusatsuei\ ;
+絶対評価 > zettaihyouka\ ;
+在米邦人 > zaibeihoujin\ ;
+四月馬鹿 > shigatsubaka\ ;
+新進気鋭 > shinshinkiei\ ;
+所得控除 > shotokukoujo\ ;
+関係会社 > kankeigaisha\ ;
+自信満満 > jishinmanman\ ;
+日本学者 > nihongakusha\ ;
+春日大社 > kasugataisha\ ;
+文明社会 > bunmeishakai\ ;
+同人雑誌 > doujinzasshi\ ;
+司法裁判 > shihousaiban\ ;
+人体実験 > jintaijikken\ ;
+亡命政権 > boumeiseiken\ ;
+仲間同士 > nakamadoushi\ ;
+経営工学 > keieikougaku\ ;
+賛否両論 > sanpiryouron\ ;
+不法集会 > fuhoushuukai\ ;
+眼高手低 > gankoushutei\ ;
+自動小銃 > jidoushoujuu\ ;
+地域社会 > chiikishakai\ ;
+交流人事 > kouryuujinji\ ;
+特殊効果 > tokushukouka\ ;
+自家中毒 > jikachuudoku\ ;
+盲貫銃創 > moukanjuusou\ ;
+人気番組 > ninkibangumi\ ;
+敵本主義 > tekihonshugi\ ;
+口内性交 > kounaiseikou\ ;
+脳軟化症 > nounankashou\ ;
+現地法人 > genchihoujin\ ;
+自動車泥 > jidoushadoro\ ;
+一時停止 > ichijiteishi\ ;
+学園紛争 > gakuenfunsou\ ;
+最高学府 > saikougakufu\ ;
+保険契約 > hokenkeiyaku\ ;
+女性差別 > joseisabetsu\ ;
+児童福祉 > jidoufukushi\ ;
+試験問題 > shikenmondai\ ;
+漸進主義 > zenshinshugi\ ;
+音信不通 > onshinfutsuu\ ;
+勇往邁進 > yuuoumaishin\ ;
+静止状態 > seishijoutai\ ;
+北支事変 > hokushijihen\ ;
+寸借詐欺 > sunshakusagi\ ;
+指名通話 > shimeitsuuwa\ ;
+苦心惨憺 > kushinsantan\ ;
+牽強付会 > kenkyoufukai\ ;
+寒冷前線 > kanreizensen\ ;
+速度制限 > sokudoseigen\ ;
+四部合唱 > shibugasshou\ ;
+電電公社 > dendenkousha\ ;
+優勝候補 > yuushoukouho\ ;
+友好関係 > yuukoukankei\ ;
+救援物資 > kyuuenbusshi\ ;
+神社仏閣 > jinjabukkaku\ ;
+水平思考 > suiheishikou\ ;
+音感教育 > onkankyouiku\ ;
+滞納処分 > tainoushobun\ ;
+共同経営 > kyoudoukeiei\ ;
+二六時中 > nirokujichuu\ ;
+一時賜金 > ichijishikin\ ;
+自然崇拝 > shizensuuhai\ ;
+審議未了 > shingimiryou\ ;
+養子縁組 > youshiengumi\ ;
+氏族制度 > shizokuseido\ ;
+軍陣医学 > gunjin''igaku\ ;
+正四面体 > seishimentai\ ;
+定格請負 > teikakuukeoi\ ;
+待遇改善 > taiguukaizen\ ;
+繊維光学 > sen''ikougaku\ ;
+黒人霊歌 > kokujinreika\ ;
+特殊機能 > tokushukinou\ ;
+経路積分 > keirosekibun\ ;
+国営農場 > kokueinoujou\ ;
+国粋主義 > kokusuishugi\ ;
+甲状腺炎 > koujousen''en\ ;
+資産合計 > shisangoukei\ ;
+鯨飲馬食 > geiinbashoku\ ;
+心臓発作 > shinzouhossa\ ;
+新人歌手 > shinjinkashu\ ;
+輸入手形 > yunyuutegata\ ;
+圧着端子 > atsugitanshi\ ;
+未改心者 > mikaishinsha\ ;
+無効投票 > mukoutouhyou\ ;
+難攻不落 > nankoufuraku\ ;
+一心同体 > isshindoutai\ ;
+宥和政策 > yuuwaseisaku\ ;
+限界効用 > genkaikouyou\ ;
+十万億土 > juuman''okudo\ ;
+変態心理 > hentaishinri\ ;
+拍子記号 > hyoushikigou\ ;
+公会問答 > koukaimondou\ ;
+考古学者 > koukogakusha\ ;
+野球選手 > yakyuusenshu\ ;
+夢遊病者 > muyuubyousha\ ;
+要所要所 > youshoyousho\ ;
+使徒継承 > shitokeishou\ ;
+励磁電流 > reijidenryuu\ ;
+社会制度 > shakaiseido\ ;
+代理領事 > dairiryouji\ ;
+点数切符 > tensuukippu\ ;
+化成肥料 > kaseihiryou\ ;
+未成年者 > miseinensha\ ;
+一天万乗 > ittenbanjou\ ;
+親子関係 > oyakokankei\ ;
+恐怖政治 > kyoufuseiji\ ;
+虚数単位 > kyosuutan''i\ ;
+選挙制度 > senkyoseido\ ;
+大願成就 > daiganjouju\ ;
+円卓会議 > entakukaigi\ ;
+大宮御所 > oomiyagosho\ ;
+上下関係 > jougekankei\ ;
+公営企業 > koueikigyou\ ;
+重液分離 > juuekibunri\ ;
+実践理性 > jissenrisei\ ;
+行住坐臥 > gyoujuuzaga\ ;
+言行一致 > genkouitchi\ ;
+広大無辺 > koudaimuhen\ ;
+優先事項 > yuusenjikou\ ;
+携帯電話 > keitaidenwa\ ;
+時代錯誤 > jidaisakugo\ ;
+人工衛星 > jinkoueisei\ ;
+線形順序 > senkeijunjo\ ;
+外交官補 > gaikoukanho\ ;
+住居手当 > juukyoteate\ ;
+道路標示 > dourohyouji\ ;
+予備将校 > yobishoukou\ ;
+民間飛行 > minkanhikou\ ;
+永子作権 > eikosakuken\ ;
+社会運動 > shakaiundou\ ;
+移行計画 > ikoukeikaku\ ;
+接近経路 > sekkinkeiro\ ;
+世界経済 > sekaikeizai\ ;
+浮世草子 > ukiyozoushi\ ;
+定数是正 > teisuuzesei\ ;
+安保条約 > anpojouyaku\ ;
+販売値段 > hanbainedan\ ;
+基底構造 > kiteikouzou\ ;
+必須条件 > hissujouken\ ;
+区裁判所 > kusaibansho\ ;
+予行演習 > yokouenshuu\ ;
+選挙運動 > senkyoundou\ ;
+国際規模 > kokusaikibo\ ;
+運転免許 > untenmenkyo\ ;
+線形論理 > senkeironri\ ;
+年賀郵便 > nengayuubin\ ;
+温風暖房 > onpuudanbou\ ;
+内部構造 > naibukouzou\ ;
+不定型詩 > futeikeishi\ ;
+黄金崇拝 > ougonsuuhai\ ;
+世話女房 > sewanyoubou\ ;
+犬儒学派 > kenjugakuha\ ;
+一品料理 > ippinryouri\ ;
+亜硫酸塩 > aryuusan''en\ ;
+有声子音 > yuuseishiin\ ;
+皆兵制度 > kaiheiseido\ ;
+未経験者 > mikeikensha\ ;
+上意下達 > jouikatatsu\ ;
+車間距離 > shakankyori\ ;
+氷河時代 > hyougajidai\ ;
+情報理論 > jouhouriron\ ;
+御多忙中 > gotabouchuu\ ;
+愛染明王 > aizenmyouou\ ;
+平面交差 > heimenkousa\ ;
+経験主義 > keikenshugi\ ;
+弁護士会 > bengoshikai\ ;
+純情可憐 > junjoukaren\ ;
+載貨吃水 > saikakissui\ ;
+半濁音符 > handakuonfu\ ;
+愛染妙王 > aizenmyouou\ ;
+閨秀画家 > keishuugaka\ ;
+三半規管 > sanhankikan\ ;
+封建時代 > houkenjidai\ ;
+越冬資金 > ettoushikin\ ;
+所帯道具 > shotaidougu\ ;
+傲岸無礼 > gouganburei\ ;
+社会保険 > shakaihoken\ ;
+較優位論 > kakuyuuiron\ ;
+世論調査 > yoronchousa\ ;
+冬期休暇 > toukikyuuka\ ;
+上部構造 > joubukouzou\ ;
+象形文字 > shoukeimoji\ ;
+農本主義 > nouhonshugi\ ;
+一切衆生 > issaishujou\ ;
+旧態依然 > kyuutaiizen\ ;
+整理番号 > seiribangou\ ;
+当座資産 > touzashisan\ ;
+残品整理 > zanpinseiri\ ;
+宇宙速度 > uchuusokudo\ ;
+加水分解 > kasuibunkai\ ;
+宣伝価値 > sendenkachi\ ;
+年季奉公 > nenkiboukou\ ;
+貨幣経済 > kaheikeizai\ ;
+無期懲役 > mukichoueki\ ;
+市場区分 > shijoukubun\ ;
+初期設定 > shokisettei\ ;
+人造繊維 > jinzousen''i\ ;
+普通預金 > futsuuyokin\ ;
+低利資金 > teirishikin\ ;
+真珠細工 > shinjuzaiku\ ;
+主知主義 > shuchishugi\ ;
+二項係数 > nikoukeisuu\ ;
+素性構造 > soseikouzou\ ;
+愛国主義 > aikokushugi\ ;
+戦闘支援 > sentoushien\ ;
+人名辞書 > jinmeijisho\ ;
+前輪駆動 > zenrinkudou\ ;
+価格操作 > kakakusousa\ ;
+形而下学 > keijikagaku\ ;
+一期一会 > ichigoichie\ ;
+土木工事 > dobokukouji\ ;
+女子高生 > joshikousei\ ;
+王道楽土 > oudourakudo\ ;
+悪戦苦闘 > akusenkutou\ ;
+神経外科 > shinkeigeka\ ;
+不眠不休 > fuminfukyuu\ ;
+名誉教授 > meiyokyouju\ ;
+図書館員 > toshokan''in\ ;
+高歌放吟 > koukahougin\ ;
+構成単位 > kouseitan''i\ ;
+外人記者 > gaijinkisha\ ;
+例外処理 > reigaishori\ ;
+夫婦茶碗 > meotodjawan\ ;
+全面講和 > zenmenkouwa\ ;
+義務教育 > gimukyouiku\ ;
+悲観論者 > hikanronsha\ ;
+個人情報 > kojinjouhou\ ;
+町段畝歩 > choutansebu\ ;
+代理大使 > dairitaishi\ ;
+構造主義 > kouzoushugi\ ;
+内線電話 > naisendenwa\ ;
+公示価格 > koujikakaku\ ;
+液体酸素 > ekitaisanso\ ;
+沃度丁幾 > youdochinki\ ;
+刑事訴訟 > keijisoshou\ ;
+稼働人口 > kadoujinkou\ ;
+軽機関銃 > keikikanjuu\ ;
+機密保護 > kimitsuhogo\ ;
+予備交渉 > yobikoushou\ ;
+透視図法 > toushizuhou\ ;
+練習試合 > renshuujiai\ ;
+可視光線 > kashikousen\ ;
+筆記試験 > hikkishiken\ ;
+公定相場 > kouteisouba\ ;
+価格規制 > kakakukisei\ ;
+加重平均 > kajuuheikin\ ;
+武装警官 > busoukeikan\ ;
+水子供養 > mizugokuyou\ ;
+千変万化 > senpenbanka\ ;
+査定価格 > sateikakaku\ ;
+下層社会 > kasoushakai\ ;
+自然主義 > shizenshugi\ ;
+興味本位 > kyoumihon''i\ ;
+無体資産 > mutaishisan\ ;
+経済封鎖 > keizaifuusa\ ;
+競争相手 > kyousouaite\ ;
+五輪大会 > gorintaikai\ ;
+日本三景 > nihonsankei\ ;
+油性塗料 > yuseitoryou\ ;
+改訂増補 > kaiteizouho\ ;
+一般概念 > ippangainen\ ;
+小一時間 > koichijikan\ ;
+三脚椅子 > sankyakuisu\ ;
+皮膚感覚 > hifukankaku\ ;
+権利行使 > kenrikoushi\ ;
+漢字変換 > kanjihenkan\ ;
+無体財産 > mutaizaisan\ ;
+全体会議 > zentaikaigi\ ;
+二重抵当 > nijuuteitou\ ;
+機械文明 > kikaibunmei\ ;
+天津乙女 > amatsuotome\ ;
+利害関係 > rigaikankei\ ;
+多角経営 > takakukeiei\ ;
+夫婦別姓 > fuufubessei\ ;
+日本語訳 > nihongoyaku\ ;
+交換機能 > koukankinou\ ;
+産卵場所 > sanranbasho\ ;
+走行距離 > soukoukyori\ ;
+無尽組合 > mujinkumiai\ ;
+再生利用 > saiseiriyou\ ;
+航空母艦 > koukuubokan\ ;
+人名辞典 > jinmeijiten\ ;
+昨非今是 > sakuhikonze\ ;
+新古典派 > shinkotenha\ ;
+経営資源 > keieishigen\ ;
+被害妄想 > higaimousou\ ;
+細菌兵器 > saikinheiki\ ;
+飽和溶液 > houwayoueki\ ;
+一般会計 > ippankaikei\ ;
+準備資金 > junbishikin\ ;
+政党政治 > seitouseiji\ ;
+母子年金 > boshinenkin\ ;
+美容整形 > biyouseikei\ ;
+初期投資 > shokitoushi\ ;
+最短距離 > saitankyori\ ;
+周辺機器 > shuuhenkiki\ ;
+制限時間 > seigenjikan\ ;
+勤労意欲 > kinrouiyoku\ ;
+倉庫会社 > soukogaisha\ ;
+未開社会 > mikaishakai\ ;
+過大評価 > kadaihyouka\ ;
+破廉恥罪 > harenchizai\ ;
+時限装置 > jigensouchi\ ;
+景気変動 > keikihendou\ ;
+一次記憶 > ichijikioku\ ;
+衝動行為 > shoudoukoui\ ;
+許容範囲 > kyoyouhan''i\ ;
+生産管理 > seisankanri\ ;
+医療伝道 > iryoudendou\ ;
+突貫工事 > tokkankouji\ ;
+選考基準 > senkoukijun\ ;
+都市銀行 > toshiginkou\ ;
+宣伝映画 > senden''eiga\ ;
+慈善事業 > jizenjigyou\ ;
+加速度計 > kasokudokei\ ;
+傲慢不遜 > goumanfuson\ ;
+刑務作業 > keimusagyou\ ;
+地球規模 > chikyuukibo\ ;
+途中計時 > tochuukeiji\ ;
+高射特科 > koushatokka\ ;
+三面六臂 > sanmenroppi\ ;
+微分断面 > bibundanmen\ ;
+分娩作用 > bunbensayou\ ;
+保健体育 > hokentaiiku\ ;
+暴走運転 > bousouunten\ ;
+諮問機関 > shimonkikan\ ;
+田舎芝居 > inakashibai\ ;
+癌遺伝子 > gan''idenshi\ ;
+百鬼夜行 > hyakkiyakou\ ;
+永小作権 > eikosakuken\ ;
+無死満塁 > mushimanrui\ ;
+二番抵当 > nibanteitou\ ;
+総務部長 > soumubuchou\ ;
+自由貿易 > jiyuuboueki\ ;
+平和条項 > heiwajoukou\ ;
+気分転換 > kibuntenkan\ ;
+儒教主義 > jukyoushugi\ ;
+女歌舞伎 > on''nakabuki\ ;
+飛行機雲 > hikoukigumo\ ;
+路面電車 > romendensha\ ;
+単独行為 > tandokukoui\ ;
+誠心誠意 > seishinseii\ ;
+日本料理 > nihonryouri\ ;
+故事来歴 > kojiraireki\ ;
+内輪喧嘩 > uchiwagenka\ ;
+亜硝酸塩 > ashousan''en\ ;
+一角獣座 > ikkakujuuza\ ;
+反体制派 > hantaiseiha\ ;
+区劃整理 > kukakuseiri\ ;
+放任主義 > houninshugi\ ;
+遺族給付 > izokukyuufu\ ;
+変位制御 > hen''iseigyo\ ;
+文部大臣 > monbudaijin\ ;
+女権論者 > jokenronsha\ ;
+下士官兵 > kashikanhei\ ;
+中禅寺湖 > chuuzenjiko\ ;
+製品原価 > seihingenka\ ;
+人民主義 > jinminshugi\ ;
+勉強部屋 > benkyoubeya\ ;
+神宮外苑 > jinguugaien\ ;
+全般支援 > zenpanshien\ ;
+少壮有為 > shousouyuui\ ;
+経口投与 > keikoutouyo\ ;
+換気装置 > kankisouchi\ ;
+共和制度 > kyouwaseido\ ;
+二課勉強 > nikabenkyou\ ;
+予防接種 > yobousesshu\ ;
+異国情緒 > ikokujoucho\ ;
+運転停止 > untenteishi\ ;
+悪口雑言 > akkouzougon\ ;
+軍法会議 > gunpoukaigi\ ;
+天地無用 > tenchimuyou\ ;
+異常性欲 > ijouseiyoku\ ;
+人工受胎 > jinkoujutai\ ;
+日本文法 > nihonbunpou\ ;
+上下水道 > jougesuidou\ ;
+銀行口座 > ginkoukouza\ ;
+夏期大学 > kakidaigaku\ ;
+連邦議会 > renpougikai\ ;
+末期症状 > makkijoutai\ ;
+五段動詞 > godandoushi\ ;
+立法機関 > rippoukikan\ ;
+因循姑息 > injunkosoku\ ;
+大山椒魚 > oosanshouuo\ ;
+虎視眈眈 > koshitantan\ ;
+背面飛行 > haimenhikou\ ;
+弾丸道路 > dangandouro\ ;
+優先外貨 > yuusengaika\ ;
+当用漢字 > touyoukanji\ ;
+民本主義 > minponshugi\ ;
+人工受紛 > jinkoujufun\ ;
+主要物価 > shuyoubukka\ ;
+人工受精 > jinkoujusei\ ;
+登山電車 > tozandensha\ ;
+暫定政府 > zanteiseifu\ ;
+乗合馬車 > noriaibasha\ ;
+期成同盟 > kiseidoumei\ ;
+散光星雲 > sankouseiun\ ;
+飢餓療法 > kigaryouhou\ ;
+糸偏景気 > itohenkeiki\ ;
+物価変動 > bukkahendou\ ;
+近郊都市 > kinkoutoshi\ ;
+公開期間 > koukaikikan\ ;
+前後不覚 > zengofukaku\ ;
+準備体操 > junbitaisou\ ;
+母系家族 > bokeikazoku\ ;
+歯科医術 > shikaijutsu\ ;
+金管楽器 > kinkangakki\ ;
+切磋琢磨 > sessatakuma\ ;
+一時解雇 > ichijikaiko\ ;
+運転資金 > untenshikin\ ;
+塑性限界 > soseigenkai\ ;
+金権政治 > kinkenseiji\ ;
+防御部隊 > bougyobutai\ ;
+静止衛星 > seishieisei\ ;
+再度協議 > saidokyougi\ ;
+一切合財 > issaigassai\ ;
+遺産相続 > isansouzoku\ ;
+塑性変形 > soseihenkei\ ;
+一天四海 > ittenshikai\ ;
+音響効果 > onkyoukouka\ ;
+単本位性 > tanhon''isei\ ;
+雲散霧消 > unsanmushou\ ;
+全体主義 > zentaishugi\ ;
+停止時間 > teishijikan\ ;
+低空飛行 > teikuuhikou\ ;
+支度部屋 > shitakubeya\ ;
+加工貿易 > kakouboueki\ ;
+衛星放送 > eiseihousou\ ;
+電気分解 > denkibunkai\ ;
+風致地区 > fuuchichiku\ ;
+密閉容器 > mippeiyouki\ ;
+連帯債務 > rentaisaimu\ ;
+金剛薩堕 > kongousatta\ ;
+一人天下 > hitoridenka\ ;
+時間反転 > jikanhanten\ ;
+西欧文明 > seioubunmei\ ;
+下部組織 > kabusoshiki\ ;
+相乗効果 > soujoukouka\ ;
+水平距離 > suiheikyori\ ;
+軍備撤廃 > gunbiteppai\ ;
+固有名詞 > koyuumeishi\ ;
+人間疎外 > ningensogai\ ;
+有機化学 > yuukikagaku\ ;
+仲間値段 > nakamanedan\ ;
+温故知新 > onkochishin\ ;
+暗視装置 > anshisouchi\ ;
+国家試験 > kokkashiken\ ;
+青果市場 > seikaichiba\ ;
+民事裁判 > minjisaiban\ ;
+原子兵器 > genshiheiki\ ;
+肯定応答 > kouteioutou\ ;
+変更不能 > henkoufunou\ ;
+紀勢本線 > kiseihonsen\ ;
+麻裏草履 > asaurazouri\ ;
+台湾坊主 > taiwanbouzu\ ;
+季刊雑誌 > kikanzasshi\ ;
+南阿戦争 > nan''asensou\ ;
+無線周波 > musenshuuha\ ;
+長期金利 > choukikinri\ ;
+飛行機等 > hikoukinado\ ;
+傀儡政府 > kairaiseifu\ ;
+市外電話 > shigaidenwa\ ;
+連邦政府 > renpouseifu\ ;
+放歌高吟 > houkakougin\ ;
+微量元素 > biryougenso\ ;
+英字新聞 > eijishinbun\ ;
+満身創痍 > manshinsoui\ ;
+第二組合 > dainikumiai\ ;
+婦人警官 > fujinkeikan\ ;
+第三世界 > daisansekai\ ;
+毘沙門天 > bishamonten\ ;
+社会主義 > shakaishugi\ ;
+学位論文 > gakuironbun\ ;
+社交辞令 > shakoujirei\ ;
+徴兵忌避 > chouheikihi\ ;
+機会均等 > kikaikintou\ ;
+暫定措置 > zanteisochi\ ;
+方向音痴 > houkouonchi\ ;
+世界銀行 > sekaiginkou\ ;
+全権委任 > zenken''inin\ ;
+自然言語 > shizengengo\ ;
+誇大妄想 > kodaimousou\ ;
+化粧道具 > keshoudougu\ ;
+不変資本 > fuhenshihon\ ;
+賞味期限 > shoumikigen\ ;
+心臓外科 > shinzougeka\ ;
+幾何級数 > kikakyuusuu\ ;
+三部合奏 > sanbugassou\ ;
+蒙古人種 > moukojinshu\ ;
+電気化学 > denkikagaku\ ;
+豆腐一丁 > toufuitchou\ ;
+消費都市 > shouhitoshi\ ;
+一一〇番 > hyakutooban\ ;
+家族制度 > kazokuseido\ ;
+生存期間 > seizonkikan\ ;
+野良仕事 > norashigoto\ ;
+日伊辞典 > nichiijiten\ ;
+不正乗車 > fuseijousha\ ;
+調査結果 > chousakekka\ ;
+不当廉売 > futourenbai\ ;
+滅多矢鱈 > mettayatara\ ;
+前人未踏 > zenjinmitou\ ;
+不当利得 > futouritoku\ ;
+回教寺院 > kaikyoujiin\ ;
+軍事訓練 > gunjikunren\ ;
+総合口座 > sougoukouza\ ;
+郡県制度 > gunkenseido\ ;
+使用可能 > shiyoukanou\ ;
+内部留保 > naiburyuuho\ ;
+再販制度 > saihanseido\ ;
+被選挙権 > hisenkyoken\ ;
+物価統制 > bukkatousei\ ;
+因数分解 > insuubunkai\ ;
+生生流転 > seiseiruten\ ;
+無知蒙昧 > muchimoumai\ ;
+堕落坊主 > darakubouzu\ ;
+舞台度胸 > butaidokyou\ ;
+泰西名画 > taiseimeiga\ ;
+法治国家 > houchikokka\ ;
+優先順位 > yuusenjun''i\ ;
+単位組合 > tan''ikumiai\ ;
+管理情報 > kanrijouhou\ ;
+完全主義 > kanzenshugi\ ;
+七不思議 > nanafushigi\ ;
+報復行為 > houfukukoui\ ;
+宣伝文句 > sendenmonku\ ;
+二成文系 > niseibunkei\ ;
+体内時計 > tainaidokei\ ;
+区画整理 > kukakuseiri\ ;
+終夜運転 > shuuyaunten\ ;
+加速運動 > kasokuundou\ ;
+対抗部隊 > taikoubutai\ ;
+結婚費用 > kekkonhiyou\ ;
+軍事政権 > gunjiseiken\ ;
+有機農法 > yuukinouhou\ ;
+防衛部長 > boueibuchou\ ;
+運営資金 > un''eishikin\ ;
+月見蕎麦 > tsukimisoba\ ;
+人生航路 > jinseikouro\ ;
+生命保険 > seimeihoken\ ;
+応急手当 > oukyuuteate\ ;
+有形無形 > yuukeimukei\ ;
+受信回路 > jushinkairo\ ;
+参考図書 > sankoutosho\ ;
+英雄崇拝 > eiyuusuuhai\ ;
+受験番号 > jukenbangou\ ;
+重農主義 > juunoushugi\ ;
+護国神社 > gokokujinja\ ;
+明治神宮 > meijijinguu\ ;
+少数意見 > shousuuiken\ ;
+比翼連理 > hiyokurenri\ ;
+有期年金 > yuukinenkin\ ;
+二元放送 > nigenhousou\ ;
+自信過剰 > jishinkajou\ ;
+奉納相撲 > hounouzumou\ ;
+人身御供 > hitomigokuu\ ;
+保護検束 > hogokensoku\ ;
+分県地図 > bunkenchizu\ ;
+阿諛追従 > ayutsuishou\ ;
+電光石火 > denkousekka\ ;
+波瀾万丈 > haranbanjou\ ;
+相互関係 > sougokankei\ ;
+内部仕様 > naibushiyou\ ;
+皮下注射 > hikachuusha\ ;
+乾燥野菜 > kansouyasai\ ;
+短機関銃 > tankikanjuu\ ;
+現地時間 > genchijikan\ ;
+一等軍曹 > ittougunsou\ ;
+家庭用品 > kateiyouhin\ ;
+鉱山技師 > kouzangishi\ ;
+一子相伝 > isshisouden\ ;
+時限立法 > jigenrippou\ ;
+愛別離苦 > aibetsuriku\ ;
+固定資産 > koteishisan\ ;
+和独辞典 > wadokujiten\ ;
+登校拒否 > toukoukyohi\ ;
+演奏旅行 > ensouryokou\ ;
+書画骨董 > shogakottou\ ;
+運動選手 > undousenshu\ ;
+学園都市 > gakuentoshi\ ;
+東洋主義 > touyoushugi\ ;
+大風呂敷 > ooburoshiki\ ;
+有蓋貨車 > yuugaikasha\ ;
+政治資金 > seijishikin\ ;
+言論機関 > genronkikan\ ;
+養護学校 > yougogakkou\ ;
+走行時間 > soukoujikan\ ;
+評価基準 > hyoukakijun\ ;
+新聞記事 > shinbunkiji\ ;
+夫唱婦随 > fushoufuzui\ ;
+電子辞書 > denshijisho\ ;
+同時録音 > doujirokuon\ ;
+管理社会 > kanrishakai\ ;
+一視同仁 > isshidoujin\ ;
+一視同人 > isshidoujin\ ;
+構造変化 > kouzouhenka\ ;
+女流作家 > joryuusakka\ ;
+１１０番 > hyakutooban\ ;
+司法制度 > shihouseido\ ;
+勤務交代 > kinmukoutai\ ;
+短編映画 > tanpen''eiga\ ;
+会員規約 > kaiinkiyaku\ ;
+二点先取 > nitensenshu\ ;
+反戦主義 > hansenshugi\ ;
+暴虎馮河 > boukohyouga\ ;
+左腕投手 > sawantoushu\ ;
+前期試験 > zenkishiken\ ;
+被選挙人 > hisenkyonin\ ;
+背後関係 > haigokankei\ ;
+餓鬼大将 > gakidaishou\ ;
+番号記号 > bangoukigou\ ;
+刑事補償 > keijihoshou\ ;
+一体全体 > ittaizentai\ ;
+海運同盟 > kaiundoumei\ ;
+専守防衛 > senshubouei\ ;
+南阿連邦 > nan''arenpou\ ;
+発行部数 > hakkoubusuu\ ;
+刑事裁判 > keijisaiban\ ;
+公平無私 > kouheimushi\ ;
+物価指数 > bukkashisuu\ ;
+刑事被告 > keijihikoku\ ;
+記者会見 > kishakaiken\ ;
+従軍記者 > juugunkisha\ ;
+空気抵抗 > kuukiteikou\ ;
+現金正価 > genkinseika\ ;
+大同小異 > daidoushoui\ ;
+生命倫理 > seimeirinri\ ;
+駆動装置 > kudousouchi\ ;
+千軍万馬 > sengunbanba\ ;
+変幻自在 > hengenjizai\ ;
+相対主義 > soutaishugi\ ;
+軍医学校 > gun''igakkou\ ;
+都民会館 > tominkaikan\ ;
+市場価値 > shijoukachi\ ;
+平和論者 > heiwaronsha\ ;
+尿素樹脂 > nyousojushi\ ;
+掃除当番 > soujitouban\ ;
+代理戦争 > dairisensou\ ;
+地盤沈下 > jibanchinka\ ;
+構成主義 > kouseishugi\ ;
+正多面体 > seitamentai\ ;
+一切合切 > issaigassai\ ;
+保税地域 > hozeichiiki\ ;
+人員整理 > jin''inseiri\ ;
+人間以前 > ningen''izen\ ;
+平面図形 > heimenzukei\ ;
+宇宙旅行 > uchuuryokou\ ;
+荘園制度 > shouenseido\ ;
+自社製品 > jishaseihin\ ;
+初期段階 > shokidankai\ ;
+前途遼遠 > zentoryouen\ ;
+赤葡萄酒 > akabudoushu\ ;
+原始時代 > genshijidai\ ;
+参謀本部 > sanbouhonbu\ ;
+女子大生 > joshidaisei\ ;
+排外運動 > haigaiundou\ ;
+水平飛行 > suiheihikou\ ;
+低回趣味 > teikaishumi\ ;
+互恵貿易 > gokeiboueki\ ;
+人間以上 > ningen''ijou\ ;
+傲慢無礼 > goumanburei\ ;
+徒手空拳 > toshukuuken\ ;
+亜炭化物 > atankabutsu\ ;
+水泳大会 > suieitaikai\ ;
+男女同権 > danjodouken\ ;
+年金制度 > nenkinseido\ ;
+空軍基地 > kuugunkichi\ ;
+大和時代 > yamatojidai\ ;
+帝王切開 > teiousekkai\ ;
+反政府党 > hanseifutou\ ;
+虎視眈々 > koshitantan\ ;
+歯科病院 > shikabyouin\ ;
+載貨屯数 > saikatonsuu\ ;
+論説委員 > ronsetsuiin\ ;
+勝手次第 > katteshidai\ ;
+空挺隊員 > kuuteitaiin\ ;
+自由経済 > jiyuukeizai\ ;
+財政破綻 > zaiseihatan\ ;
+政治献金 > seijikenkin\ ;
+手間仕事 > temashigoto\ ;
+一本勝負 > ipponshoubu\ ;
+中途半端 > chuutohanpa\ ;
+通過儀礼 > tsuukagirei\ ;
+英字集合 > eijishuugou\ ;
+署名運動 > shomeiundou\ ;
+塑性指数 > soseishisuu\ ;
+合同労組 > goudourouso\ ;
+主管機関 > shukankikan\ ;
+天気都合 > tenkitsugou\ ;
+兵器工場 > heikikoujou\ ;
+平民主義 > heiminshugi\ ;
+家族会議 > kazokukaigi\ ;
+減債基金 > gensaikikin\ ;
+祖先崇拝 > sosensuuhai\ ;
+事大思想 > jidaishisou\ ;
+地場産業 > jibasangyou\ ;
+連邦国家 > renpoukokka\ ;
+立憲主義 > rikkenshugi\ ;
+八方美人 > happoubijin\ ;
+世界情勢 > sekaijousei\ ;
+不快指数 > fukaishisuu\ ;
+遠洋航路 > en''youkouro\ ;
+国家経済 > kokkakeizai\ ;
+臨時増刊 > rinjizoukan\ ;
+公武合体 > koubugattai\ ;
+予讚本線 > yosanhonsen\ ;
+根本主義 > konponshugi\ ;
+非常警戒 > hijoukeikai\ ;
+中央政府 > chuuouseifu\ ;
+刺状突起 > shijoutokki\ ;
+公的扶助 > koutekifujo\ ;
+合成樹脂 > gouseijushi\ ;
+割賦購買 > kappukoubai\ ;
+未来指向 > miraishikou\ ;
+自由放任 > jiyuuhounin\ ;
+自転周期 > jitenshuuki\ ;
+自己主張 > jikoshuchou\ ;
+千言万語 > sengenbango\ ;
+徒歩競走 > tohokyousou\ ;
+親善試合 > shinzenjiai\ ;
+窒素固定 > chissokotei\ ;
+海上保険 > kaijouhoken\ ;
+飛行甲板 > hikoukouban\ ;
+指導主事 > shidoushuji\ ;
+相互銀行 > sougoginkou\ ;
+軍司令部 > gunshireibu\ ;
+諸事万端 > shojibantan\ ;
+労災保険 > rousaihoken\ ;
+時輪金剛 > jirinkongou\ ;
+意気銷沈 > ikishouchin\ ;
+関税回避 > kanzeikaihi\ ;
+意気消沈 > ikishouchin\ ;
+前人未到 > zenjinmitou\ ;
+共和主義 > kyouwashugi\ ;
+予防戦争 > yobousensou\ ;
+酸性土壌 > sanseidojou\ ;
+人身保護 > jinshinhogo\ ;
+年金保険 > nenkinhoken\ ;
+指向言語 > shikougengo\ ;
+巡査部長 > junsabuchou\ ;
+保証期間 > hoshoukikan\ ;
+不法監禁 > fuhoukankin\ ;
+御苦労様 > gokurousama\ ;
+行住座臥 > gyoujuuzaga\ ;
+自治大臣 > jichidaijin\ ;
+立体交差 > rittaikousa\ ;
+竜頭蛇尾 > ryuutoudabi\ ;
+充電期間 > juudenkikan\ ;
+記憶媒体 > kiokubaitai\ ;
+養護教諭 > yougokyouyu\ ;
+人本主義 > jinponshugi\ ;
+海洋投棄 > kaiyoutouki\ ;
+和歌山県 > wakayamaken\ ;
+太陽電波 > taiyoudenpa\ ;
+理科大学 > rikadaigaku\ ;
+近衛師団 > konoeshidan\ ;
+一衣帯水 > ichiitaisui\ ;
+資本主義 > shihonshugi\ ;
+自由結婚 > jiyuukekkon\ ;
+必須科目 > hissukamoku\ ;
+近代主義 > kindaishugi\ ;
+守護天使 > shugotenshi\ ;
+作業部会 > sagyoubukai\ ;
+都市再生 > toshisaisei\ ;
+幼生器官 > youseikikan\ ;
+御用組合 > goyoukumiai\ ;
+軍事演習 > gunjienshuu\ ;
+人道主義 > jindoushugi\ ;
+前史時代 > zenshijidai\ ;
+海上封鎖 > kaijoufuusa\ ;
+意味深長 > imishinchou\ ;
+交通違反 > koutsuuihan\ ;
+四十八手 > yonjuuhatte\ ;
+手巻寿司 > temakizushi\ ;
+公開講座 > koukaikouza\ ;
+片言隻句 > hengensekku\ ;
+高関税化 > koukanzeika\ ;
+運送会社 > unsougaisha\ ;
+東宮御所 > touguugosho\ ;
+延滞利息 > entairisoku\ ;
+火災警報 > kasaikeihou\ ;
+総指揮官 > soushikikan\ ;
+放送時間 > housoujikan\ ;
+有害無益 > yuugaimueki\ ;
+婦人問題 > fujinmondai\ ;
+晴耕雨読 > seikouudoku\ ;
+尊皇攘夷 > son''noujoui\ ;
+不文憲法 > fubunkenpou\ ;
+一寸法師 > issunboushi\ ;
+可能動詞 > kanoudoushi\ ;
+古事来歴 > kojiraireki\ ;
+完全雇用 > kanzenkoyou\ ;
+副鼻腔炎 > fukubikuuen\ ;
+多元放送 > tagenhousou\ ;
+気息奄奄 > kisokuen''en\ ;
+釈迦如来 > shakanyorai\ ;
+予約名簿 > yoyakumeibo\ ;
+不買同盟 > fubaidoumei\ ;
+非買同盟 > hibaidoumei\ ;
+相対敬語 > soutaikeigo\ ;
+経済特区 > keizaitokku\ ;
+任意団体 > nin''idantai\ ;
+接敵移動 > settekiidou\ ;
+鰥寡孤独 > kankakodoku\ ;
+相対売買 > aitaibaibai\ ;
+無人工場 > mujinkoujou\ ;
+不換紙幣 > fukanshihei\ ;
+相乗作用 > soujousayou\ ;
+予算不足 > yosanfusoku\ ;
+薬理作用 > yakurisayou\ ;
+為替管理 > kawasekanri\ ;
+事前協議 > jisenkyougi\ ;
+厚顔無恥 > kouganmuchi\ ;
+安全装置 > anzensouchi\ ;
+空気感染 > kuukikansen\ ;
+水道工事 > suidoukouji\ ;
+一紙半銭 > isshihansen\ ;
+反射運動 > hanshaundou\ ;
+塩類溶液 > enruiyoueki\ ;
+外人部隊 > gaijinbutai\ ;
+拝金主義 > haikinshugi\ ;
+異体同心 > itaidoushin\ ;
+乗数効果 > jousuukouka\ ;
+全盛時代 > zenseijidai\ ;
+面向不背 > menkoufuhai\ ;
+空理空論 > kuurikuuron\ ;
+非常階段 > hijoukaidan\ ;
+傷痍軍人 > shouigunjin\ ;
+月賦販売 > geppuhanbai\ ;
+万世一系 > banseiikkei\ ;
+第二部長 > dainibuchou\ ;
+行儀作法 > gyougisahou\ ;
+重加算税 > juukasanzei\ ;
+一心不乱 > isshinfuran\ ;
+軍事裁判 > gunjisaiban\ ;
+照明器具 > shoumeikigu\ ;
+屍陀林王 > shidarin''ou\ ;
+過去完了 > kakokanryou\ ;
+戦後欧州 > sengooushuu\ ;
+首脳会議 > shunoukaigi\ ;
+家庭料理 > kateiryouri\ ;
+日本銀行 > nihonginkou\ ;
+遠交近攻 > enkoukinkou\ ;
+旋回運動 > senkaiundou\ ;
+帰国子女 > kikokushijo\ ;
+雌雄淘汰 > shiyuutouta\ ;
+銀本位制 > ginhon''isei\ ;
+自業自得 > jigoujitoku\ ;
+主格補語 > shukakuhogo\ ;
+傘形器官 > sankeikikan\ ;
+電化製品 > denkaseihin\ ;
+資産価値 > shisankachi\ ;
+中央競馬 > chuuoukeiba\ ;
+赤字財政 > akajizaisei\ ;
+政治亡命 > seijiboumei\ ;
+五十年祭 > gojuunensai\ ;
+遺族年金 > izokunenkin\ ;
+人工栄養 > jinkoueiyou\ ;
+擬古典的 > gikotenteki\ ;
+電気会社 > denkigaisha\ ;
+気随気儘 > kizuikimama\ ;
+無反動銃 > muhandoujuu\ ;
+遠心分離 > enshinbunri\ ;
+場外馬券 > jougaibaken\ ;
+青年時代 > seinenjidai\ ;
+自由問題 > jiyuumondai\ ;
+漫画雑誌 > mangazasshi\ ;
+亜鉛中毒 > aenchuudoku\ ;
+祖先伝来 > sosendenrai\ ;
+一党支配 > ittoushihai\ ;
+主観主義 > shukanshugi\ ;
+呼吸器系 > kokyuukikei\ ;
+為替投機 > kawasetouki\ ;
+一知半解 > itchihankai\ ;
+不定冠詞 > futeikanshi\ ;
+代議政体 > daigiseitai\ ;
+平和攻勢 > heiwakousei\ ;
+低価格化 > teikakakuka\ ;
+肘掛椅子 > hijikakeisu\ ;
+公務災害 > koumusaigai\ ;
+景気循環 > keikijunkan\ ;
+関係法規 > kankeihouki\ ;
+賀詞交換 > gashikoukan\ ;
+耕地整理 > kouchiseiri\ ;
+表裏一体 > hyouriittai\ ;
+奴隷解放 > doreikaihou\ ;
+阿多福豆 > otafukumame\ ;
+企業整備 > kigyouseibi\ ;
+軍事行動 > gunjikoudou\ ;
+地方自治 > chihoujichi\ ;
+世俗主義 > sezokushugi\ ;
+高炭素鋼 > koutansokou\ ;
+有機肥料 > yuukihiryou\ ;
+比例配分 > hireihaibun\ ;
+反対運動 > hantaiundou\ ;
+添付書類 > tenpushorui\ ;
+恋愛遊戯 > ren''aiyuugi\ ;
+投射原理 > toushagenri\ ;
+大言壮語 > taigensougo\ ;
+金本位制 > kinhon''isei\ ;
+造語成分 > zougoseibun\ ;
+百科辞典 > hyakkajiten\ ;
+万代不易 > bandaifueki\ ;
+危険角度 > kikenkakudo\ ;
+化学兵器 > kagakuheiki\ ;
+漢字制限 > kanjiseigen\ ;
+年功制度 > nenkouseido\ ;
+海底火山 > kaiteikazan\ ;
+隔靴掻痒 > kakkasouyou\ ;
+非戦論者 > hisenronsha\ ;
+万世不易 > banseifueki\ ;
+再生繊維 > saiseisen''i\ ;
+運転系統 > untenkeitou\ ;
+任意同行 > nin''idoukou\ ;
+臨時国会 > rinjikokkai\ ;
+試験期間 > shikenkikan\ ;
+年功加俸 > nenkoukahou\ ;
+応援団長 > ouendanchou\ ;
+軍医総監 > gun''isoukan\ ;
+慈善団体 > jizendantai\ ;
+自習時間 > jishuujikan\ ;
+国家補償 > kokkahoshou\ ;
+盛者必衰 > seijahissui\ ;
+人文主義 > jinbunshugi\ ;
+電話番号 > denwabangou\ ;
+理論体系 > rirontaikei\ ;
+日本海溝 > nihonkaikou\ ;
+経常利益 > keijourieki\ ;
+引責辞任 > insekijinin\ ;
+処女航海 > shojokoukai\ ;
+一軒一軒 > ikken''ikken\ ;
+問答無用 > mondoumuyou\ ;
+運命論者 > unmeironsha\ ;
+菜種梅雨 > natanedzuyu\ ;
+課外授業 > kagaijugyou\ ;
+難民帰還 > nanminkikan\ ;
+偶像破壊 > guuzouhakai\ ;
+指示装置 > shijisouchi\ ;
+安全地帯 > anzenchitai\ ;
+自己複製 > jikofukusei\ ;
+他人行儀 > taningyougi\ ;
+判官贔屓 > houganbiiki\ ;
+圧搾空気 > assakukuuki\ ;
+健康管理 > kenkoukanri\ ;
+試験飛行 > shikenhikou\ ;
+生産過剰 > seisankajou\ ;
+生理休暇 > seirikyuuka\ ;
+交際場裏 > kousaijouri\ ;
+豊肥本線 > houhihonsen\ ;
+判断規準 > handankijun\ ;
+気息奄々 > kisokuen''en\ ;
+判断基準 > handankijun\ ;
+天資英邁 > tenshieimai\ ;
+抵抗運動 > teikouundou\ ;
+郵便切手 > yuubinkitte\ ;
+田園都市 > den''entoshi\ ;
+衣料品店 > iryouhinten\ ;
+二部合唱 > nibugasshou\ ;
+電子頭脳 > denshizunou\ ;
+割賦販売 > kappuhanbai\ ;
+骨董趣味 > kottoushumi\ ;
+軍備制限 > gunbiseigen\ ;
+運動不足 > undoubusoku\ ;
+制限漢字 > seigenkanji\ ;
+無反動砲 > muhandouhou\ ;
+原因不明 > gen''infumei\ ;
+軽自動車 > keijidousha\ ;
+原子時代 > genshijidai\ ;
+狐疑逡巡 > kogishunjun\ ;
+程度問題 > teidomondai\ ;
+規定打席 > kiteidaseki\ ;
+風紀紊乱 > fuukibinran\ ;
+市参事会 > shisanjikai\ ;
+記憶装置 > kiokusouchi\ ;
+電気伝導 > denkidendou\ ;
+海外派兵 > kaigaihahei\ ;
+天賦人権 > tenpujinken\ ;
+懸垂運動 > kensuiundou\ ;
+神秘主義 > shinpishugi\ ;
+遠慮会釈 > enryoeshaku\ ;
+暗号手法 > angoushuhou\ ;
+運輸大臣 > un''yudaijin\ ;
+非論理的 > hironriteki\ ;
+右翼団体 > uyokudantai\ ;
+保健衛生 > hoken''eisei\ ;
+盗品故買 > touhinkobai\ ;
+静止軌道 > seishikidou\ ;
+慶應義塾 > keiougijuku\ ;
+快刀乱麻 > kaitouranma\ ;
+至近距離 > shikinkyori\ ;
+損害保険 > songaihoken\ ;
+構成要素 > kouseiyouso\ ;
+協議事項 > kyougijikou\ ;
+舞台俳優 > butaihaiyuu\ ;
+危機一髪 > kikiippatsu\ ;
+医学雑誌 > igakuzasshi\ ;
+物価水準 > bukkasuijun\ ;
+赤十字附 > sekijuujifu\ ;
+扶養家族 > fuyoukazoku\ ;
+立憲政治 > rikkenseiji\ ;
+人工臓器 > jinkouzouki\ ;
+祭政一致 > saiseiitchi\ ;
+不言実行 > fugenjikkou\ ;
+仕事部屋 > shigotobeya\ ;
+成人映画 > seijin''eiga\ ;
+自由営業 > jiyuueigyou\ ;
+標準誤差 > hyoujungosa\ ;
+乳児脚気 > nyuujikakke\ ;
+軍需工場 > gunjukoujou\ ;
+相加平均 > soukaheikin\ ;
+粗製乱造 > soseiranzou\ ;
+御名御璽 > gyomeigyoji\ ;
+文治主義 > bunchishugi\ ;
+自然淘汰 > shizentouta\ ;
+家宅捜査 > katakusousa\ ;
+既成概念 > kiseigainen\ ;
+整備工場 > seibikoujou\ ;
+対空砲火 > taikuuhouka\ ;
+滞空時間 > taikuujikan\ ;
+貿易赤字 > bouekiakaji\ ;
+一言居士 > ichigenkoji\ ;
+屋上庭園 > okujouteien\ ;
+音声表記 > onseihyouki\ ;
+審美主義 > shinbishugi\ ;
+応用問題 > ouyoumondai\ ;
+互恵関税 > gokeikanzei\ ;
+軟性下疳 > nanseigekan\ ;
+国語辞典 > kokugojiten\ ;
+公認候補 > kouninkouho\ ;
+生年月日 > seinengappi\ ;
+奇策縦横 > kisakujuuou\ ;
+光学文字 > kougakumoji\ ;
+停車時間 > teishajikan\ ;
+共和政治 > kyouwaseiji\ ;
+国庫債権 > kokkosaiken\ ;
+声帯模写 > seitaimosha\ ;
+最大限度 > saidaigendo\ ;
+八分音符 > hachibuonpu\ ;
+仮想空間 > kasoukuukan\ ;
+平成時代 > heiseijidai\ ;
+利益社会 > riekishakai\ ;
+家庭訪問 > kateihoumon\ ;
+薄利多売 > hakuritabai\ ;
+民主主義 > minshushugi\ ;
+女性名詞 > joseimeishi\ ;
+愛憎併存 > aizouheison\ ;
+反射作用 > hanshasayou\ ;
+有事立法 > yuujirippou\ ;
+発声器官 > hasseikikan\ ;
+婚礼衣装 > konreiishou\ ;
+中央突破 > chuuoutoppa\ ;
+三頭政治 > santouseiji\ ;
+危険地帯 > kikenchitai\ ;
+化学作用 > kagakusayou\ ;
+無間地獄 > mugenjigoku\ ;
+往復切符 > oufukukippu\ ;
+存在理由 > sonzairiyuu\ ;
+非社交的 > hijakouteki\ ;
+封建制度 > houkenseido\ ;
+人身事故 > jinshinjiko\ ;
+公開捜査 > koukaisousa\ ;
+我田引水 > gaden''insui\ ;
+動作記録 > dousakiroku\ ;
+成層火山 > seisoukazan\ ;
+利益配当 > riekihaitou\ ;
+一所懸命 > isshokenmei\ ;
+源泉課税 > gensenkazei\ ;
+政治結社 > seijikessha\ ;
+騎馬民族 > kibaminzoku\ ;
+隔世遺伝 > kakuseiiden\ ;
+古道具屋 > furudouguya\ ;
+吹奏楽器 > suisougakki\ ;
+機銃掃射 > kijuusousha\ ;
+武家屋敷 > bukeyashiki\ ;
+睡眠時間 > suiminjikan\ ;
+無記名株 > mukimeikabu\ ;
+事務総長 > jimusouchou\ ;
+主治効能 > shujikounou\ ;
+天津御祖 > amatsumioya\ ;
+気象衛星 > kishoueisei\ ;
+有効期限 > yuukoukigen\ ;
+農奴解放 > noudokaihou\ ;
+心臓麻痺 > shinzoumahi\ ;
+酔生夢死 > suiseimushi\ ;
+有効期間 > yuukoukigen\ ;
+無法地帯 > muhouchitai\ ;
+街頭募金 > gaitoubokin\ ;
+荒唐無稽 > koutoumukei\ ;
+栄養不足 > eiyoufusoku\ ;
+名誉市民 > meiyoshimin\ ;
+軍事同盟 > gunjidoumei\ ;
+有効作用 > yuukousayou\ ;
+先遣部隊 > senkenbutai\ ;
+嘉言善行 > kagenzenkou\ ;
+合同会議 > goudoukaigi\ ;
+起死回生 > kishikaisei\ ;
+透視画法 > toushigahou\ ;
+無銭旅行 > musenryokou\ ;
+保安設備 > hoansetsubi\ ;
+内部闘争 > naibutousou\ ;
+不正融資 > fuseiyuushi\ ;
+漢英辞典 > kan''eijiten\ ;
+領土保全 > ryoudohozen\ ;
+無事息災 > bujisokusai\ ;
+指名手配 > shimeitehai\ ;
+遊覧飛行 > yuuranhikou\ ;
+受験地獄 > jukenjigoku\ ;
+警備強化 > keibikyouka\ ;
+心理主義 > shinrishugi\ ;
+離婚訴訟 > rikonsoshou\ ;
+音訓索引 > onkunsakuin\ ;
+危険因子 > kiken''inshi\ ;
+超過勤務 > choukakinmu\ ;
+進歩主義 > shinposhugi\ ;
+保全会社 > hozenkaisha\ ;
+自己紹介 > jikoshoukai\ ;
+人道支援 > jindoushien\ ;
+希少価値 > kishoukachi\ ;
+婦人科学 > fujinkagaku\ ;
+支援団体 > shiendantai\ ;
+宇宙空間 > uchuukuukan\ ;
+化粧煉瓦 > keshourenga\ ;
+早期発見 > soukihakken\ ;
+自然治癒 > shizenchiyu\ ;
+不可知的 > fukachiteki\ ;
+訴訟費用 > soshouhiyou\ ;
+災害保険 > saigaihoken\ ;
+大器晩成 > taikibansei\ ;
+数珠一連 > juzuichiren\ ;
+文明開化 > bunmeikaika\ ;
+反動主義 > handoushugi\ ;
+政府高官 > seifukoukan\ ;
+京都府警 > kyoutofukei\ ;
+勤王攘夷 > kin''noujoui\ ;
+空挺部隊 > kuuteibutai\ ;
+多士済済 > tashiseisei\ ;
+不器用者 > bukiyoumono\ ;
+兵站基地 > heitankichi\ ;
+有理関数 > yuurikansuu\ ;
+低徊趣味 > teikaishumi\ ;
+人工頭脳 > jinkouzunou\ ;
+十六音符 > juurokuonpu\ ;
+奇想天外 > kisoutengai\ ;
+内容見本 > naiyoumihon\ ;
+料理道具 > ryouridougu\ ;
+大圏航路 > taikenkouro\ ;
+準備管制 > junbikansei\ ;
+主脳会議 > shunoukaigi\ ;
+陣頭指揮 > jintoushiki\ ;
+臓器移植 > zoukiishoku\ ;
+基本概念 > kihongainen\ ;
+会議日程 > kaiginittei\ ;
+公定地価 > kouteichika\ ;
+基礎研究 > kisokenkyuu\ ;
+環境汚染 > kankyouosen\ ;
+疑心暗鬼 > gishin''anki\ ;
+総理大臣 > souridaijin\ ;
+自己満足 > jikomanzoku\ ;
+絶対主義 > zettaishugi\ ;
+正味値段 > shouminedan\ ;
+個人教授 > kojinkyouju\ ;
+少壮気鋭 > shousoukiei\ ;
+東亜諸国 > touashokoku\ ;
+喇叭水仙 > rappazuisen\ ;
+実行可能 > jikkoukanou\ ;
+事前運動 > jizen''undou\ ;
+外来患者 > gairaikanja\ ;
+避難訓練 > hinankunren\ ;
+販売部門 > hanbaibumon\ ;
+労働運動 > roudouundou\ ;
+準備銀行 > junbiginkou\ ;
+幹線道路 > kansendouro\ ;
+不透明性 > futoumeisei\ ;
+加圧水炉 > kaatsusuiro\ ;
+年期奉公 > nenkiboukou\ ;
+表音文字 > hyouonmonji\ ;
+指名打者 > shimeidasha\ ;
+総司令部 > soushireibu\ ;
+伝統主義 > dentoushugi\ ;
+主要都市 > shuyoutoshi\ ;
+低温殺菌 > teionsakkin\ ;
+夫婦関係 > fuufukankei\ ;
+作業時間 > sagyoujikan\ ;
+非常手段 > hijoushudan\ ;
+専制政治 > senseiseiji\ ;
+映画監督 > eigakantoku\ ;
+濃淡画像 > noutangazou\ ;
+灯火管制 > toukakansei\ ;
+重要事項 > juuyoujikou\ ;
+非常呼集 > hijoukoshuu\ ;
+立候補者 > rikkouhosha\ ;
+浄化装置 > joukasouchi\ ;
+御生憎様 > oainikusama\ ;
+人員淘汰 > jin''intouta\ ;
+交通事故 > koutsuujiko\ ;
+四輪駆動 > yonrinkudou\ ;
+代理公使 > dairikoushi\ ;
+外務大臣 > gaimudaijin\ ;
+野戦砲兵 > yasenhouhei\ ;
+地名辞典 > chimeijiten\ ;
+不動産屋 > fudousan''ya\ ;
+体感温度 > taikan''ondo\ ;
+観光都市 > kankoutoshi\ ;
+同性愛者 > douseiaisha\ ;
+部隊撤退 > butaitettai\ ;
+協議会員 > kyougikaiin\ ;
+啓蒙運動 > keimouundou\ ;
+亀甲模様 > kikkoumoyou\ ;
+衛生状態 > eiseijoutai\ ;
+鎖国主義 > sakokushugi\ ;
+器用貧乏 > kiyoubinbou\ ;
+眼精疲労 > ganseihirou\ ;
+宣伝機関 > sendenkikan\ ;
+何時何時 > itsunandoki\ ;
+民権主義 > minkenshugi\ ;
+年次総会 > nenjisoukai\ ;
+温古知新 > onkochishin\ ;
+無償交付 > mushoukoufu\ ;
+短期手形 > tankitegata\ ;
+内務大臣 > naimudaijin\ ;
+一世一代 > isseichidai\ ;
+事項索引 > jikousakuin\ ;
+放射線科 > houshasenka\ ;
+皇太子妃 > koutaishihi\ ;
+妖怪変化 > youkaihenge\ ;
+変形部門 > henkeibumon\ ;
+野戦病院 > yasenbyouin\ ;
+戦災地区 > sensaichiku\ ;
+特務機関 > tokumukikan\ ;
+砂糖大根 > satoudaikon\ ;
+半加工品 > hankakouhin\ ;
+二等分線 > nitoubunsen\ ;
+授業時間 > jugyoujikan\ ;
+天神地祇 > tenjinchigi\ ;
+追加予算 > tsuikayosan\ ;
+非合理的 > higouriteki\ ;
+労農政府 > rounouseifu\ ;
+下意上達 > kaijoutatsu\ ;
+乗車拒否 > joushakyohi\ ;
+水洗便所 > suisenbenjo\ ;
+収納家具 > shuunoukagu\ ;
+未開墾地 > mikaikonchi\ ;
+正当防衛 > seitoubouei\ ;
+学科試験 > gakkashiken\ ;
+潜水母艦 > sensuibokan\ ;
+使用価値 > shiyoukachi\ ;
+官尊民卑 > kansonminpi\ ;
+普遍文法 > fuhenbunpou\ ;
+過剰人口 > kajoujinkou\ ;
+出先機関 > desakikikan\ ;
+宣伝効果 > sendenkouka\ ;
+時々刻々 > jijikokkoku\ ;
+近似計算 > kinjikeisan\ ;
+護憲運動 > goken''undou\ ;
+原因結果 > gen''inkekka\ ;
+友軍部隊 > yuugunbutai\ ;
+無尽会社 > mujingaisha\ ;
+古今東西 > kokontouzai\ ;
+看護婦長 > kangofuchou\ ;
+悲憤慷慨 > hifunkougai\ ;
+古代文明 > kodaibunmei\ ;
+無産政党 > musanseitou\ ;
+選挙準備 > senkyojunbi\ ;
+意識不明 > ishikifumei\ ;
+組合主義 > kumiaishugi\ ;
+個体発生 > kotaihassei\ ;
+四分音符 > shibun''onpu\ ;
+使徒書簡 > shitoshokan\ ;
+優柔不断 > yuujuufudan\ ;
+煎餅蒲団 > senbeibuton\ ;
+予定調和 > yoteichouwa\ ;
+先祖伝来 > senzodenrai\ ;
+事業部制 > jigyoubusei\ ;
+臨時列車 > rinjiressha\ ;
+定期試験 > teikishiken\ ;
+総合課税 > sougoukazei\ ;
+遠隔講義 > enkakukougi\ ;
+海底油田 > kaiteiyuden\ ;
+真一文字 > maichimonji\ ;
+電話調査 > denwachousa\ ;
+技術援助 > gijutsuenjo\ ;
+偏向回路 > henkoukairo\ ;
+予定納税 > yoteinouzei\ ;
+皇后陛下 > kougouheika\ ;
+連邦制度 > renpouseido\ ;
+電気電子 > denkidenshi\ ;
+代行機関 > daikoukikan\ ;
+疲労困憊 > hiroukonpai\ ;
+盗難保険 > tounanhoken\ ;
+純真無垢 > junshinmuku\ ;
+法務大臣 > houmudaijin\ ;
+刑事処分 > keijishobun\ ;
+駐車違反 > chuushaihan\ ;
+時機尚早 > jikishousou\ ;
+年金基金 > nenkinkikin\ ;
+適法行為 > tekihoukoui\ ;
+物見遊山 > monomiyusan\ ;
+得意満面 > tokuimanmen\ ;
+時差出勤 > jisashukkin\ ;
+政治問題 > seijimondai\ ;
+絶対敬語 > zettaikeigo\ ;
+鍵盤楽器 > kenbangakki\ ;
+訴訟事件 > soshoujiken\ ;
+意味役割 > imiyakuwari\ ;
+価格安定 > kakakuantei\ ;
+今上陛下 > kinjouheika\ ;
+電気系統 > denkikeitou\ ;
+兌換銀行 > dakanginkou\ ;
+百科事典 > hyakkajiten\ ;
+全会一致 > zenkaiitchi\ ;
+麻薬患者 > mayakukanja\ ;
+心機一転 > shinkiitten\ ;
+無名戦士 > mumeisenshi\ ;
+唯一無二 > yuiitsumuni\ ;
+財政安定 > zaiseiantei\ ;
+看護学校 > kangogakkou\ ;
+分類基準 > bunruikijun\ ;
+文書偽造 > bunshogizou\ ;
+孤軍奮闘 > kogunfuntou\ ;
+数次旅券 > suujiryoken\ ;
+合成繊維 > gouseisen''i\ ;
+貴族政治 > kizokuseiji\ ;
+博愛主義 > hakuaishugi\ ;
+一斉検挙 > isseikenkyo\ ;
+低温輸送 > teion''yusou\ ;
+風光明媚 > fuukoumeibi\ ;
+後部座席 > koubuzaseki\ ;
+個人投資 > kojintoushi\ ;
+保険会社 > hokengaisha\ ;
+硫化水素 > ryuukasuiso\ ;
+日本列島 > nihonrettou\ ;
+戦時公債 > senjikousai\ ;
+海員組合 > kaiinkumiai\ ;
+修辞疑問 > shuujigimon\ ;
+法定貨幣 > houteikahei\ ;
+体内受精 > tainaijusei\ ;
+楽観主義 > rakkanshugi\ ;
+入院患者 > nyuuinkanja\ ;
+関連事項 > kanrenjikou\ ;
+原価計算 > genkakeisan\ ;
+電子回路 > denshikairo\ ;
+重点主義 > juutenshugi\ ;
+価電子帯 > kadenshitai\ ;
+有効需要 > yuukoujuyou\ ;
+事業年度 > jigyounendo\ ;
+相反定理 > souhanteiri\ ;
+六分儀座 > rokubungiza\ ;
+安定状態 > anteijoutai\ ;
+民主政治 > minshuseiji\ ;
+化学繊維 > kagakusen''i\ ;
+絶対音感 > zettaionkan\ ;
+自然破壊 > shizenhakai\ ;
+報道機関 > houdoukikan\ ;
+捕虜交換 > horyokoukan\ ;
+価値判断 > kachihandan\ ;
+手練手管 > terentekuda\ ;
+器械体操 > kikaitaisou\ ;
+養老保険 > yourouhoken\ ;
+不当表示 > futouhyouji\ ;
+安全運転 > anzen''unten\ ;
+交際範囲 > kousaihan''i\ ;
+応用科学 > ouyoukagaku\ ;
+不整合人 > fuseigoujin\ ;
+単元制度 > tangenseido\ ;
+一歩前進 > ippozenshin\ ;
+国王陛下 > kokuouheika\ ;
+放送衛星 > housoueisei\ ;
+寂光浄土 > jakkoujoudo\ ;
+後生大事 > goshoudaiji\ ;
+三民主義 > sanminshugi\ ;
+気管切開 > kikansekkai\ ;
+傲岸不遜 > gouganfuson\ ;
+家父長制 > kafuchousei\ ;
+暗黒星雲 > ankokuseiun\ ;
+近代国家 > kindaikokka\ ;
+前途有望 > zentoyuubou\ ;
+音楽理論 > ongakuriron\ ;
+委託販売 > itakuhanbai\ ;
+三寒四温 > sankanshion\ ;
+貧乏所帯 > binboujotai\ ;
+御伽草子 > otogizoushi\ ;
+神奈川県 > kanagawaken\ ;
+輿論調査 > yoronchousa\ ;
+電気装置 > denkisouchi\ ;
+地方議会 > chihougikai\ ;
+装甲部隊 > soukoubutai\ ;
+不可入性 > fukanyuusei\ ;
+南京木綿 > nankinmomen\ ;
+印象主義 > inshoushugi\ ;
+多士済々 > tashiseisei\ ;
+一張一弛 > itchouisshi\ ;
+区間列車 > kukanressha\ ;
+相思相愛 > soushisouai\ ;
+航空基地 > koukuukichi\ ;
+監査記録 > kansakiroku\ ;
+技術移転 > gijutsuiten\ ;
+産児制限 > sanjiseigen\ ;
+飽和状態 > houwajoutai\ ;
+知能検査 > chinoukensa\ ;
+孤影悄然 > koeishouzen\ ;
+五種競技 > goshukyougi\ ;
+団体保険 > dantaihoken\ ;
+姉妹都市 > shimaitoshi\ ;
+不通箇所 > futsuukasho\ ;
+破邪顕正 > hajakenshou\ ;
+政治団体 > seijidantai\ ;
+一喜一憂 > ikkiichiyuu\ ;
+準備命令 > junbimeirei\ ;
+受験科目 > jukenkamoku\ ;
+木管楽器 > mokkangakki\ ;
+中高音部 > chuukouonbu\ ;
+友愛結婚 > yuuaikekkon\ ;
+海軍基地 > kaigunkichi\ ;
+電子素子 > denshisoshi\ ;
+愛国運動 > aikokuundou\ ;
+人文地理 > jinmonchiri\ ;
+労働争議 > roudousougi\ ;
+情報処理 > jouhoushori\ ;
+可変資本 > kahenshihon\ ;
+為替差益 > kawasesaeki\ ;
+誘拐事件 > yuukaijiken\ ;
+三大都市 > sandaitoshi\ ;
+所要時間 > shoyoujikan\ ;
+女権運動 > joken''undou\ ;
+分散処理 > bunsanshori\ ;
+走行可能 > soukoukanou\ ;
+流言飛語 > ryuugenhigo\ ;
+一新紀元 > isshinkigen\ ;
+徒手体操 > toshutaisou\ ;
+封建主義 > houkenshugi\ ;
+受験戦争 > jukensensou\ ;
+出雲大社 > izumotaisha\ ;
+権門勢家 > kenmonseika\ ;
+無線操縦 > musensoujuu\ ;
+借家争議 > shakkasougi\ ;
+宇宙科学 > uchuukagaku\ ;
+古典芸能 > kotengeinou\ ;
+豪華絢爛 > goukakenran\ ;
+漢英字典 > kan''eijiten\ ;
+婦人運動 > fujin''undou\ ;
+不動明王 > fudoumyouou\ ;
+体外受精 > taigaijusei\ ;
+勤務年限 > kinmunengen\ ;
+満場一致 > manjouitchi\ ;
+前世生存 > zenseseizon\ ;
+会計年度 > kaikeinendo\ ;
+万葉仮名 > man''yougana\ ;
+傍聴随意 > bouchouzuii\ ;
+絶対多数 > zettaitasuu\ ;
+紅白試合 > kouhakujiai\ ;
+会計監査 > kaikeikansa\ ;
+八紘一宇 > hakkouichiu\ ;
+舞台装置 > butaisouchi\ ;
+事務長官 > jimuchoukan\ ;
+一般社会 > ippanshakai\ ;
+日帝時代 > nitteijidai\ ;
+登坂車線 > tohanshasen\ ;
+世界最大 > sekaisaidai\ ;
+指導原理 > shidougenri\ ;
+造次顛沛 > zoujitenpai\ ;
+航空管理 > koukuukanri\ ;
+感染経路 > kansenkeiro\ ;
+二等軍曹 > nitougunsou\ ;
+防火塗料 > boukatoryou\ ;
+自縄自縛 > jijoujibaku\ ;
+途中下車 > tochuugesha\ ;
+煎餅布団 > senbeibuton\ ;
+環境保護 > kankyouhogo\ ;
+嘘発見器 > usohakkenki\ ;
+面会時間 > menkaijikan\ ;
+重機関銃 > juukikanjuu\ ;
+法案審議 > houanshingi\ ;
+自動制御 > jidouseigyo\ ;
+個人指導 > kojinshidou\ ;
+自然発火 > shizenhakka\ ;
+主務大臣 > shumudaijin\ ;
+短期決戦 > tankikessen\ ;
+言語運用 > gengoun''you\ ;
+粗製濫造 > soseiranzou\ ;
+危険思想 > kikenshisou\ ;
+空域管理 > kuuikikanri\ ;
+御殿女中 > gotenjochuu\ ;
+隣保事業 > rinpojigyou\ ;
+合意心中 > gouishinjuu\ ;
+世界記録 > sekaikiroku\ ;
+基本条件 > kihonjouken\ ;
+農民一揆 > noumin''ikki\ ;
+前代未聞 > zendaimimon\ ;
+複合汚染 > fukugouosen\ ;
+絶対零度 > zettaireido\ ;
+構成可能 > kouseikanou\ ;
+一人舞台 > hitoributai\ ;
+皮下組織 > hikasoshiki\ ;
+地下資源 > chikashigen\ ;
+白化個体 > hakukakotai\ ;
+電話回線 > denwakaisen\ ;
+不正咬合 > fuseikougou\ ;
+美容体操 > biyoutaisou\ ;
+協議離婚 > kyougirikon\ ;
+温暖前線 > ondanzensen\ ;
+新規保管 > shinkihokan\ ;
+一貫番号 > ikkanbangou\ ;
+現行法規 > genkouhouki\ ;
+祖国復帰 > sokokufukki\ ;
+含水炭素 > gansuitanso\ ;
+労働時間 > roudoujikan\ ;
+為替相場 > kawasesouba\ ;
+世界一周 > sekaiisshuu\ ;
+医療法人 > iryouhoujin\ ;
+鼓舞激励 > kobugekirei\ ;
+時期尚早 > jikishousou\ ;
+粒度分布 > ryuudobunpu\ ;
+投下資本 > toukashihon\ ;
+用意周到 > youishuutou\ ;
+内燃機関 > nainenkikan\ ;
+防水加工 > bousuikakou\ ;
+個人消費 > kojinshouhi\ ;
+仮性近視 > kaseikinshi\ ;
+尊王攘夷 > son''noujoui\ ;
+空気伝染 > kuukidensen\ ;
+幼年時代 > younenjidai\ ;
+社会復帰 > shakaifukki\ ;
+電気製品 > denkiseihin\ ;
+時時刻刻 > jijikokkoku\ ;
+一貫作業 > ikkansagyou\ ;
+滞在期間 > taizaikikan\ ;
+無形財産 > mukeizaisan\ ;
+無断転載 > mudantensai\ ;
+均衡予算 > kinkouyosan\ ;
+付帯条件 > futaijouken\ ;
+軍事工場 > gunjikoujou\ ;
+有効数字 > yuukousuuji\ ;
+臍下丹田 > seikatanden\ ;
+試用期間 > shiyoukikan\ ;
+化学変化 > kagakuhenka\ ;
+自動車税 > jidoushazei\ ;
+言語道断 > gongodoudan\ ;
+担保物権 > tanpobukken\ ;
+営業時間 > eigyoujikan\ ;
+愛妻弁当 > aisaibentou\ ;
+美的嫌悪 > bitekiken''o\ ;
+三千世界 > sanzensekai\ ;
+多重放送 > tajuuhousou\ ;
+二重外交 > nijuugaikou\ ;
+予備工作 > yobikousaku\ ;
+肱掛椅子 > hijikakeisu\ ;
+短波放送 > tanpahousou\ ;
+風光絶佳 > fuukouzekka\ ;
+主情主義 > shujoushugi\ ;
+行動主義 > koudoushugi\ ;
+自分自身 > jibunjishin\ ;
+夜光塗料 > yakoutoryou\ ;
+帰無仮説 > kimukasetsu\ ;
+市場原理 > shijougenri\ ;
+京滋地方 > keijichihou\ ;
+大義名分 > taigimeibun\ ;
+呼吸運動 > kokyuuundou\ ;
+螺旋階段 > rasenkaidan\ ;
+英語教育 > eigokyouiku\ ;
+象牙海岸 > zougekaigan\ ;
+日本脳炎 > nihon''nouen\ ;
+和魂漢才 > wakonkansai\ ;
+経営再建 > keieisaiken\ ;
+脳下垂体 > noukasuitai\ ;
+募金運動 > bokin''undou\ ;
+刻苦勉励 > kokkubenrei\ ;
+既婚男性 > kikondansei\ ;
+治水工事 > chisuikouji\ ;
+日本人論 > nihonjinron\ ;
+軍事公債 > gunjikousai\ ;
+十人十色 > juunintoiro\ ;
+無配会社 > muhaigaisha\ ;
+家族手当 > kazokuteate\ ;
+羅針盤座 > rashinbanza\ ;
+福祉機器 > fukushikiki\ ;
+暫定予算 > zanteiyosan\ ;
+自費出版 > jihishuppan\ ;
+常用漢字 > jouyoukanji\ ;
+王侯貴族 > oukoukizoku\ ;
+人体模型 > jintaimokei\ ;
+日西辞典 > nisseijiten\ ;
+感情移入 > kanjouinyuu\ ;
+地方競馬 > chihoukeiba\ ;
+経済効果 > keizaikouka\ ;
+民事訴訟 > minjisoshou\ ;
+化学記号 > kagakukigou\ ;
+参加意識 > sankaishiki\ ;
+戦時体制 > senjitaisei\ ;
+自由市場 > jiyuushijou\ ;
+冷房完備 > reiboukanbi\ ;
+自己双対 > jikosoutsui\ ;
+火燵掛布 > kotatsugake\ ;
+希望価格 > kiboukakaku\ ;
+選対本部 > sentaihonbu\ ;
+先頭打者 > sentoudasha\ ;
+名前空間 > namaekuukan\ ;
+浅草海苔 > asakusanori\ ;
+事業本部 > jigyouhonbu\ ;
+理論闘争 > rirontousou\ ;
+人口増加 > jinkouzouka\ ;
+外交辞令 > gaikoujirei\ ;
+氏姓制度 > shiseiseido\ ;
+縄文時代 > joumonjidai\ ;
+世界大戦 > sekaitaisen\ ;
+機動演習 > kidouenshuu\ ;
+自警団員 > jikeidan''in\ ;
+電気抵抗 > denkiteikou\ ;
+防音装置 > bouonsouchi\ ;
+負債合計 > fusaigoukei\ ;
+遊軍記者 > yuugunkisha\ ;
+価値体系 > kachitaikei\ ;
+二重結婚 > nijuukekkon\ ;
+一長一短 > itchouittan\ ;
+護送船団 > gosousendan\ ;
+犯行現場 > hankougenba\ ;
+意見広告 > ikenkoukoku\ ;
+善因善果 > zen''inzenka\ ;
+無人地帯 > mujinchitai\ ;
+経営転換 > keieitenkan\ ;
+販売機会 > hanbaikikai\ ;
+遠隔操作 > enkakusousa\ ;
+慣用語句 > kan''yougoku\ ;
+液体空気 > ekitaikuuki\ ;
+出刃包丁 > debabouchou\ ;
+土讚本線 > dosanhonsen\ ;
+財政支援 > zaiseishien\ ;
+宮廷画家 > kyuuteigaka\ ;
+最後列車 > saigoressha\ ;
+理工学部 > rikougakubu\ ;
+保管会社 > hokangaisha\ ;
+配合禁忌 > haigoukinki\ ;
+過剰投資 > kajoutoushi\ ;
+家長制度 > kachouseido\ ;
+可聴距離 > kachoukyori\ ;
+親類縁者 > shinruienja\ ;
+宇宙化学 > uchuukagaku\ ;
+無理心中 > murishinjuu\ ;
+年賀葉書 > nengahagaki\ ;
+連邦予算 > renpouyosan\ ;
+創価学会 > soukagakkai\ ;
+利子補給 > rishihokyuu\ ;
+根本原理 > konpongenri\ ;
+安全保障 > anzenhoshou\ ;
+健康保険 > kenkouhoken\ ;
+暗黒時代 > ankokujidai\ ;
+世代交代 > sedaikoutai\ ;
+転送電話 > tensoudenwa\ ;
+昭和時代 > shouwajidai\ ;
+使用許可 > shiyoukyoka\ ;
+音楽映画 > ongakueiga\ ;
+宇宙遊泳 > uchuuyuuei\ ;
+保健制度 > hokenseido\ ;
+準備運動 > junbiundou\ ;
+代議制度 > daigiseido\ ;
+模型地図 > mokeichizu\ ;
+無茶苦茶 > muchakucha\ ;
+古往今来 > kooukonrai\ ;
+摩利支天 > marishiten\ ;
+人為淘汰 > jin''itouta\ ;
+稼働時間 > kadoujikan\ ;
+医療制度 > iryouseido\ ;
+面罵罵倒 > menbabatou\ ;
+選挙違反 > senkyoihan\ ;
+日本時間 > nihonjikan\ ;
+奴隷制度 > doreiseido\ ;
+構造保持 > kouzouhoji\ ;
+自動車化 > jidoushaka\ ;
+日本書紀 > nihonshoki\ ;
+不空成就 > fukuujouju\ ;
+平和運動 > heiwaundou\ ;
+公定歩合 > kouteibuai\ ;
+天衣無縫 > ten''imuhou\ ;
+理路整然 > riroseizen\ ;
+南京繻子 > nankinjusu\ ;
+虚無主義 > kyomushugi\ ;
+権威主義 > ken''ishugi\ ;
+気炎万丈 > kienbanjou\ ;
+三三九度 > sansankudo\ ;
+計算機間 > keisankima\ ;
+礼儀作法 > reigisahou\ ;
+滅茶苦茶 > mechakucha\ ;
+耳下腺炎 > jikasen''en\ ;
+石油危機 > sekiyukiki\ ;
+刑事事件 > keijijiken\ ;
+利用価値 > riyoukachi\ ;
+回線負荷 > kaisenfuka\ ;
+首尾一貫 > shubiikkan\ ;
+医療保険 > iryouhoken\ ;
+武装解除 > busoukaijo\ ;
+表意文字 > hyouimonji\ ;
+都市国家 > toshikokka\ ;
+無為徒食 > muitoshoku\ ;
+映画音楽 > eigaongaku\ ;
+前後左右 > zengosayuu\ ;
+野戦特科 > yasentokka\ ;
+不羈奔放 > fukihonpou\ ;
+一手販売 > ittehanbai\ ;
+当座預金 > touzayokin\ ;
+桜花爛漫 > oukaranman\ ;
+自由自在 > jiyuujizai\ ;
+乾燥無味 > kansoumumi\ ;
+二項定理 > nikouteiri\ ;
+活性汚泥 > kasseiodei\ ;
+三三五五 > sansangogo\ ;
+在庫管理 > zaikokanri\ ;
+火災保険 > kasaihoken\ ;
+罵詈雑言 > barizougon\ ;
+道路封鎖 > dourofuusa\ ;
+小委員会 > shouiinkai\ ;
+交渉委員 > koushouiin\ ;
+合同行為 > goudoukoui\ ;
+炉辺談話 > rohendanwa\ ;
+過去分詞 > kakobunshi\ ;
+営利会社 > eirigaisha\ ;
+人事不省 > jinjifusei\ ;
+異性関係 > iseikankei\ ;
+事故原因 > jikogen''in\ ;
+家出少女 > iedeshoujo\ ;
+古典主義 > kotenshugi\ ;
+不法投棄 > fuhoutouki\ ;
+二重螺旋 > nijuurasen\ ;
+位相速度 > isousokudo\ ;
+音韻部門 > on''inbumon\ ;
+機能主義 > kinoushugi\ ;
+機械警備 > kikaikeibi\ ;
+基礎試験 > kisoshiken\ ;
+家庭菜園 > kateisaien\ ;
+道路工事 > dourokouji\ ;
+亜爾然丁 > aruzenchin\ ;
+四苦八苦 > shikuhakku\ ;
+委細面談 > isaimendan\ ;
+対校試合 > taikoujiai\ ;
+人気作家 > ninkisakka\ ;
+暖冬異変 > dantouihen\ ;
+女性一般 > joseiippan\ ;
+怪獣映画 > kaijuueiga\ ;
+多種多様 > tashutayou\ ;
+二部教授 > nibukyouju\ ;
+速度違反 > sokudoihan\ ;
+横断歩道 > oudanhodou\ ;
+舗装道路 > hosoudouro\ ;
+無線技師 > musengishi\ ;
+飛鳥時代 > asukajidai\ ;
+回路基板 > kairokiban\ ;
+形成外科 > keiseigeka\ ;
+宇宙兵器 > uchuuheiki\ ;
+異常気象 > ijoukishou\ ;
+無機化学 > mukikagaku\ ;
+自由主義 > jiyuushugi\ ;
+位記追贈 > ikitsuisou\ ;
+実写映画 > jisshaeiga\ ;
+自由時間 > jiyuujikan\ ;
+御礼奉公 > oreiboukou\ ;
+園芸用具 > engeiyougu\ ;
+破茶目茶 > hachamecha\ ;
+不穏文書 > fuonbunsho\ ;
+漢字文化 > kanjibunka\ ;
+予備試験 > yobishiken\ ;
+労務管理 > roumukanri\ ;
+平和会議 > heiwakaigi\ ;
+任務部隊 > ninmubutai\ ;
+小間物屋 > komamonoya\ ;
+縦横無尽 > juuoumujin\ ;
+国家主義 > kokkashugi\ ;
+過剰投与 > kajoutouyo\ ;
+論理回路 > ronrikairo\ ;
+自壊作用 > jikaisayou\ ;
+準備期間 > junbikikan\ ;
+天下無双 > tenkamusou\ ;
+一瀉千里 > isshasenri\ ;
+横行闊歩 > oukoukappo\ ;
+剰余価値 > jouyokachi\ ;
+文化国家 > bunkakokka\ ;
+舞台稽古 > butaigeiko\ ;
+伊勢大廟 > isetaibyou\ ;
+相互支援 > sougoshien\ ;
+普遍原理 > fuhengenri\ ;
+不即不離 > fusokufuri\ ;
+悪因悪果 > akuin''akka\ ;
+三々九度 > sansankudo\ ;
+附和雷同 > fuwaraidou\ ;
+化粧部屋 > keshoubeya\ ;
+磨製石器 > maseisekki\ ;
+父子家庭 > fushikatei\ ;
+余韻嫋嫋 > yoinjoujou\ ;
+縄文土器 > joumondoki\ ;
+財務管理 > zaimukanri\ ;
+穂状花序 > suijoukajo\ ;
+辞書部門 > jishobumon\ ;
+機動部隊 > kidoubutai\ ;
+保安処分 > hoanshobun\ ;
+意思表示 > ishihyouji\ ;
+営利事業 > eirijigyou\ ;
+皮膚移植 > hifuishoku\ ;
+議事妨害 > gijibougai\ ;
+付和雷同 > fuwaraidou\ ;
+一騎当千 > ikkitousen\ ;
+阿鼻叫喚 > abikyoukan\ ;
+絶対温度 > zettaiondo\ ;
+黄金世界 > ougonsekai\ ;
+棒温度計 > bouondokei\ ;
+反対意見 > hantaiiken\ ;
+欣求浄土 > gongujoudo\ ;
+金貨準備 > kinkajunbi\ ;
+論理素子 > ronrisoshi\ ;
+露地栽培 > rojisaibai\ ;
+古墳時代 > kofunjidai\ ;
+無煙火薬 > muenkayaku\ ;
+政治機構 > seijikikou\ ;
+意志決定 > ishikettei\ ;
+負荷分散 > fukabunsan\ ;
+不偏不党 > fuhenfutou\ ;
+同床異夢 > doushouimu\ ;
+無限軌道 > mugenkidou\ ;
+軍事顧問 > gunjikomon\ ;
+耽美主義 > tanbishugi\ ;
+喜劇映画 > kigekieiga\ ;
+曼珠沙華 > manjushage\ ;
+模擬試験 > mogishiken\ ;
+規則違反 > kisokuihan\ ;
+夏炉冬扇 > karotousen\ ;
+雨天決行 > utenkekkou\ ;
+意見交換 > ikenkoukan\ ;
+不乾性油 > fukanseiyu\ ;
+泌尿器科 > hinyoukika\ ;
+帷幄上奏 > iakujousou\ ;
+全権委員 > zenken''iin\ ;
+演算機構 > enzankikou\ ;
+無蓋貨車 > mugaikasha\ ;
+二十世紀 > nijisseiki\ ;
+保護処分 > hogoshobun\ ;
+皮膚科学 > hifukagaku\ ;
+衆愚政治 > shuguseiji\ ;
+侍従武官 > jijuubukan\ ;
+控訴期間 > kousokikan\ ;
+上位構造 > jouikouzou\ ;
+常任委員 > jounin''iin\ ;
+芝居小屋 > shibaigoya\ ;
+公租公課 > kousokouka\ ;
+易感染性 > ikansensei\ ;
+紀伊國屋 > kinokuniya\ ;
+夜鷹蕎麦 > yotakasoba\ ;
+勤務時間 > kinmujikan\ ;
+厭世主義 > enseishugi\ ;
+単位記号 > tan''ikigou\ ;
+排他主義 > haitashugi\ ;
+宇宙飛行 > uchuuhikou\ ;
+仮名草紙 > kanazoushi\ ;
+坑内事故 > kounaijiko\ ;
+論理演算 > ronrienzan\ ;
+電気毛布 > denkimoufu\ ;
+雲鬢花顔 > unbinkagan\ ;
+御前会議 > gozenkaigi\ ;
+予備調査 > yobichousa\ ;
+平和主義 > heiwashugi\ ;
+稲荷寿司 > inarizushi\ ;
+注意事項 > chuuijikou\ ;
+胸部外科 > kyoubugeka\ ;
+非可換群 > hikakangun\ ;
+遺伝情報 > idenjouhou\ ;
+寄生火山 > kiseikazan\ ;
+二部授業 > nibujugyou\ ;
+非営利的 > hieiriteki\ ;
+河川工事 > kasenkouji\ ;
+相手次第 > aiteshidai\ ;
+便宜主義 > bengishugi\ ;
+皮膚呼吸 > hifukokyuu\ ;
+亜成層圏 > aseisouken\ ;
+空軍大尉 > kuuguntaii\ ;
+三々五々 > sansangogo\ ;
+梵和辞典 > bonwajiten\ ;
+控訴理由 > kousoriyuu\ ;
+部隊区分 > butaikubun\ ;
+悪魔主義 > akumashugi\ ;
+護岸工事 > gogankouji\ ;
+余韻嫋々 > yoinjoujou\ ;
+田夫野人 > denpuyajin\ ;
+奇奇怪怪 > kikikaikai\ ;
+神代文字 > jindaimoji\ ;
+古典時代 > kotenjidai\ ;
+市会議員 > shikaigiin\ ;
+危険負担 > kikenfutan\ ;
+健康不安 > kenkoufuan\ ;
+応急渡河 > oukyuutoka\ ;
+二重否定 > nijuuhitei\ ;
+意気衝天 > ikishouten\ ;
+医学用語 > igakuyougo\ ;
+舞台効果 > butaikouka\ ;
+電位差計 > den''isakei\ ;
+度数分布 > dosuubunpu\ ;
+運送保険 > unsouhoken\ ;
+高手小手 > takatekote\ ;
+無味乾燥 > mumikansou\ ;
+下院議長 > kaingichou\ ;
+軍備管理 > gunbikanri\ ;
+樹脂加工 > jushikakou\ ;
+利水工事 > risuikouji\ ;
+非常事態 > hijoujitai\ ;
+武装蜂起 > busouhouki\ ;
+有声音化 > yuuseionka\ ;
+価値基準 > kachikijun\ ;
+調理器具 > chourikigu\ ;
+砲煙弾雨 > houendan''u\ ;
+馬耳東風 > bajitoufuu\ ;
+平行移動 > heikouidou\ ;
+補助動詞 > hojodoushi\ ;
+否定応答 > hiteioutou\ ;
+自己資本 > jikoshihon\ ;
+黄金時代 > ougonjidai\ ;
+命令一下 > meireiikka\ ;
+納付期限 > noufukigen\ ;
+摸擬試験 > mogishiken\ ;
+小児麻痺 > shounimahi\ ;
+宣伝記事 > sendenkiji\ ;
+夏季休暇 > kakikyuuka\ ;
+臨時政府 > rinjiseifu\ ;
+三日三晩 > mikkamiban\ ;
+無理難題 > murinandai\ ;
+予備装置 > yobisouchi\ ;
+果樹栽培 > kajusaibai\ ;
+粗衣粗食 > soisoshoku\ ;
+人民委員 > jinmin''iin\ ;
+飽和蒸気 > houwajouki\ ;
+匹夫匹婦 > hippuhippu\ ;
+二分音符 > nibun''onpu\ ;
+千波万波 > senpabanpa\ ;
+異常発生 > ijouhassei\ ;
+治安部隊 > chianbutai\ ;
+刃傷沙汰 > ninjouzata\ ;
+不活性化 > fukasseika\ ;
+工事現場 > koujigenba\ ;
+自己宣伝 > jikosenden\ ;
+気管支炎 > kikanshien\ ;
+手前勝手 > temaegatte\ ;
+保守主義 > hoshushugi\ ;
+木端微塵 > koppamijin\ ;
+死亡記事 > shiboukiji\ ;
+過剰利益 > kajourieki\ ;
+女尊男卑 > josondanpi\ ;
+十二単衣 > juunihitoe\ ;
+分離課税 > bunrikazei\ ;
+任意捜査 > nin''isousa\ ;
+上位概念 > jouigainen\ ;
+舞台道具 > butaidougu\ ;
+上映時間 > joueijikan\ ;
+計器飛行 > keikihikou\ ;
+戦災孤児 > sensaikoji\ ;
+基本原理 > kihongenri\ ;
+情意投合 > jouitougou\ ;
+管理機能 > kanrikinou\ ;
+臨時記号 > rinjikigou\ ;
+兵役忌避 > heiekikihi\ ;
+戦争映画 > sensoueiga\ ;
+財政危機 > zaiseikiki\ ;
+有限花序 > yuugenkajo\ ;
+軍事基地 > gunjikichi\ ;
+不正事件 > fuseijiken\ ;
+出来次第 > dekishidai\ ;
+変体仮名 > hentaigana\ ;
+英雄主義 > eiyuushugi\ ;
+痴話喧嘩 > chiwagenka\ ;
+烏有先生 > uyuusensei\ ;
+憲法違反 > kenpouihan\ ;
+回転椅子 > kaiten''isu\ ;
+能登半島 > notohantou\ ;
+劣性遺伝 > resseiiden\ ;
+請負制度 > ukeoiseido\ ;
+水車小屋 > suishagoya\ ;
+褐毛和種 > akagewashu\ ;
+固定負債 > koteifusai\ ;
+依願免官 > iganmenkan\ ;
+政府機関 > seifukikan\ ;
+事件記者 > jikenkisha\ ;
+平安後期 > heiankouki\ ;
+雇用保険 > koyouhoken\ ;
+保護貿易 > hogoboueki\ ;
+世界制覇 > sekaiseiha\ ;
+無機肥料 > mukihiryou\ ;
+高野豆腐 > kouyadoufu\ ;
+代議政治 > daigiseiji\ ;
+意馬心猿 > ibashin''en\ ;
+交通遺児 > koutsuuiji\ ;
+遺棄貨物 > ikikamotsu\ ;
+炭化水素 > tankasuiso\ ;
+囲碁三級 > igosankyuu\ ;
+産婦人科 > sanfujinka\ ;
+理想主義 > risoushugi\ ;
+十字砲火 > juujihouka\ ;
+都道府県 > todoufuken\ ;
+麝香豌豆 > jakouendou\ ;
+盲唖学校 > mouagakkou\ ;
+保安条例 > hoanjourei\ ;
+石器時代 > sekkijidai\ ;
+似非理屈 > eserikutsu\ ;
+記念切手 > kinenkitte\ ;
+個人個人 > kojinkojin\ ;
+延滞利子 > entairishi\ ;
+分派主義 > bunpashugi\ ;
+毀誉褒貶 > kiyohouhen\ ;
+唯美主義 > yuibishugi\ ;
+軍事衛星 > gunjieisei\ ;
+無我夢中 > mugamuchuu\ ;
+予定期限 > yoteikigen\ ;
+立体映画 > rittaieiga\ ;
+天気模様 > tenkimoyou\ ;
+火口原湖 > kakougenko\ ;
+表音字母 > hyouonjibo\ ;
+音声言語 > onseigengo\ ;
+一昨昨日 > sakiototoi\ ;
+脱法行為 > dappoukoui\ ;
+個人主義 > kojinshugi\ ;
+不正規軍 > fuseikigun\ ;
+准看護婦 > junkangofu\ ;
+母子家庭 > boshikatei\ ;
+同名異人 > doumeiijin\ ;
+育児時間 > ikujijikan\ ;
+時価発行 > jikahakkou\ ;
+会議事項 > kaigijikou\ ;
+仮想記憶 > kasoukioku\ ;
+部分麻酔 > bubunmasui\ ;
+検事控訴 > kenjikouso\ ;
+経営管理 > keieikanri\ ;
+飛行時間 > hikoujikan\ ;
+四字熟語 > yojijukugo\ ;
+臨機応変 > rinkiouhen\ ;
+定期保険 > teikihoken\ ;
+造言飛語 > zougenhigo\ ;
+事務用品 > jimuyouhin\ ;
+言語地理 > gengochiri\ ;
+犯罪行為 > hanzaikoui\ ;
+輸送機関 > yusoukikan\ ;
+補助艦艇 > hojokantei\ ;
+五里霧中 > gorimuchuu\ ;
+三日天下 > mikkatenka\ ;
+基本単位 > kihontan''i\ ;
+猶予期間 > yuuyokikan\ ;
+請負工事 > ukeoikouji\ ;
+意思決定 > ishikettei\ ;
+後退文字 > koutaimoji\ ;
+男尊女卑 > dansonjohi\ ;
+大慈大悲 > daijidaihi\ ;
+如何様師 > ikasamashi\ ;
+臨界事故 > rinkaijiko\ ;
+因果関係 > ingakankei\ ;
+異種交配 > ishukouhai\ ;
+夜間勤務 > yakankinmu\ ;
+御国自慢 > okunijiman\ ;
+神経科医 > shinkeikai\ ;
+完全試合 > kanzenjiai\ ;
+公示地価 > koujichika\ ;
+一字一句 > ichijiikku\ ;
+原理主義 > genrishugi\ ;
+童話作家 > douwasakka\ ;
+妨害行為 > bougaikoui\ ;
+運営経費 > un''eikeihi\ ;
+二部合奏 > nibugassou\ ;
+名誉毀損 > meiyokison\ ;
+記録映画 > kirokueiga\ ;
+運搬管理 > unpankanri\ ;
+医科大学 > ikadaigaku\ ;
+加減乗除 > kagenjoujo\ ;
+阿片戦争 > ahensensou\ ;
+唯唯諾諾 > iidakudaku\ ;
+相対誤差 > soutaigosa\ ;
+飲酒運転 > inshuunten\ ;
+指名試合 > shimeijiai\ ;
+徒弟制度 > toteiseido\ ;
+紋羽二重 > monhabutae\ ;
+貨幣制度 > kaheiseido\ ;
+日和下駄 > hiyorigeta\ ;
+世界平和 > sekaiheiwa\ ;
+無理関数 > murikansuu\ ;
+音吐朗朗 > ontorourou\ ;
+梅雨前線 > baiuzensen\ ;
+電気時計 > denkidokei\ ;
+二十四日 > nijuuyokka\ ;
+悲歌慷慨 > hikakougai\ ;
+予防医学 > yobouigaku\ ;
+当期利益 > toukirieki\ ;
+皮下脂肪 > hikashibou\ ;
+陶磁器店 > toujikiten\ ;
+切符売場 > kippuuriba\ ;
+裸体主義 > rataishugi\ ;
+音標文字 > onpyoumoji\ ;
+不正規戦 > fuseikisen\ ;
+絶対位置 > zettaiichi\ ;
+簡易保険 > kan''ihoken\ ;
+寡頭政治 > katouseiji\ ;
+下水処理 > gesuishori\ ;
+記憶素子 > kiokusoshi\ ;
+音声記号 > onseikigou\ ;
+和平会議 > waheikaigi\ ;
+破壊主義 > hakaishugi\ ;
+宇宙基地 > uchuukichi\ ;
+不可知論 > fukachiron\ ;
+自衛手段 > jieishudan\ ;
+小売値段 > kourinedan\ ;
+市場規模 > shijoukibo\ ;
+議員立法 > giinrippou\ ;
+学級委員 > gakkyuuiin\ ;
+議会主義 > gikaishugi\ ;
+基礎科学 > kisokagaku\ ;
+捜査本部 > sousahonbu\ ;
+宇宙探査 > uchuutansa\ ;
+亜麻織物 > amaorimono\ ;
+順序不同 > junjofudou\ ;
+経済援助 > keizaienjo\ ;
+累算温度 > ruisanondo\ ;
+浪漫主義 > romanshugi\ ;
+武装都市 > busoutoshi\ ;
+平和国家 > heiwakokka\ ;
+道路地図 > dourochizu\ ;
+御朱印船 > goshuinsen\ ;
+夜郎自大 > yaroujidai\ ;
+部分否定 > bubunhitei\ ;
+講和会議 > kouwakaigi\ ;
+編組機械 > hensokikai\ ;
+医療器械 > iryoukikai\ ;
+正規分布 > seikibunpu\ ;
+会員名簿 > kaiinmeibo\ ;
+天変地異 > tenpenchii\ ;
+有史以来 > yuushiirai\ ;
+保護関税 > hogokanzei\ ;
+未帰還者 > mikikansha\ ;
+三日坊主 > mikkabouzu\ ;
+確固不動 > kakkofudou\ ;
+不側不離 > fusokufuri\ ;
+文房具屋 > bunbouguya\ ;
+康煕字典 > koukijiten\ ;
+未来永劫 > miraieigou\ ;
+無理算段 > murisandan\ ;
+虞美人草 > gubijinsou\ ;
+象牙細工 > zougezaiku\ ;
+滅茶滅茶 > mechamecha\ ;
+風車小屋 > fuushagoya\ ;
+子供部屋 > kodomobeya\ ;
+求愛誇示 > kyuuaikoji\ ;
+王政復古 > ouseifukko\ ;
+一人部屋 > hitoribeya\ ;
+不買運動 > fubaiundou\ ;
+吝嗇吝嗇 > kechikechi\ ;
+定期預金 > teikiyokin\ ;
+一定期間 > itteikikan\ ;
+地下運動 > chikaundou\ ;
+懐疑主義 > kaigishugi\ ;
+融通無碍 > yuuzuumuge\ ;
+保安要員 > hoan''youin\ ;
+主我主義 > shugashugi\ ;
+不作為犯 > fusakuihan\ ;
+舗装煉瓦 > hosourenga\ ;
+投影図法 > toueizuhou\ ;
+総状花序 > soujoukajo\ ;
+清浄無垢 > seijoumuku\ ;
+三面記事 > sanmenkiji\ ;
+才気縦横 > saikijuuou\ ;
+本位貨幣 > hon''ikahei\ ;
+馬鹿丁寧 > bakateinei\ ;
+日葡辞書 > nippojisho\ ;
+位相空間 > isoukuukan\ ;
+海事衛星 > kaijieisei\ ;
+空気機械 > kuukikikai\ ;
+共同井戸 > kyoudouido\ ;
+合理主義 > gourishugi\ ;
+天津御姉 > amatsumiko\ ;
+天手古舞 > tentekomai\ ;
+夜光時計 > yakoudokei\ ;
+自転車屋 > jitenshaya\ ;
+自家用車 > jikayousha\ ;
+単位制度 > tan''iseido\ ;
+文字情報 > mojijouhou\ ;
+規制解除 > kiseikaijo\ ;
+気焔万丈 > kienbanjou\ ;
+下水工事 > gesuikouji\ ;
+合意情死 > gouijoushi\ ;
+武装平和 > busouheiwa\ ;
+付帯事項 > futaijikou\ ;
+行方不明 > yukuefumei\ ;
+天気予報 > tenkiyohou\ ;
+不平不満 > fuheifuman\ ;
+被保険者 > hihokensha\ ;
+親子電話 > oyakodenwa\ ;
+多情多恨 > tajoutakon\ ;
+経営破綻 > keieihatan\ ;
+賛助会員 > sanjokaiin\ ;
+下部構造 > kabukouzou\ ;
+毎土曜日 > maidoyoubi\ ;
+予算措置 > yosansochi\ ;
+不穏分子 > fuonbunshi\ ;
+喜怒哀楽 > kidoairaku\ ;
+漢和辞典 > kanwajiten\ ;
+友誼国家 > yuugikokka\ ;
+相互保険 > sougohoken\ ;
+事大主義 > jidaishugi\ ;
+五輪会議 > gorinkaigi\ ;
+語形変化 > gokeihenka\ ;
+非戦闘員 > hisentouin\ ;
+無念無想 > munenmusou\ ;
+演算手順 > enzantejun\ ;
+武断主義 > budanshugi\ ;
+世話人間 > sewaningen\ ;
+幾何平均 > kikaheikin\ ;
+人工降雨 > jinkoukouu\ ;
+自問自答 > jimonjitou\ ;
+皇紀年度 > koukinendo\ ;
+口腔外科 > koukougeka\ ;
+脳性麻痺 > nouseimahi\ ;
+五十音順 > gojuuonjun\ ;
+演算精度 > enzanseido\ ;
+十字架状 > juujikajou\ ;
+不老不死 > furoufushi\ ;
+世界主義 > sekaishugi\ ;
+螺鈿細工 > radenzaiku\ ;
+記載事項 > kisaijikou\ ;
+炭素繊維 > tansosen''i\ ;
+無線電話 > musendenwa\ ;
+温情主義 > onjoushugi\ ;
+個人経営 > kojinkeiei\ ;
+奔放不羈 > honpoufuki\ ;
+鉄器時代 > tekkijidai\ ;
+物価騰貴 > bukkatouki\ ;
+日本舞踊 > nihonbuyou\ ;
+聾唖学校 > rouagakkou\ ;
+現代英語 > gendaieigo\ ;
+十二使徒 > juunishito\ ;
+日本庭園 > nihonteien\ ;
+遺伝暗号 > iden''angou\ ;
+軍事輸送 > gunjiyusou\ ;
+伴性遺伝 > hanseiiden\ ;
+経営参加 > keieisanka\ ;
+予備選挙 > yobisenkyo\ ;
+予備艦隊 > yobikantai\ ;
+予備選手 > yobisenshu\ ;
+不倶戴天 > fugutaiten\ ;
+平和部隊 > heiwabutai\ ;
+唯々諾々 > iidakudaku\ ;
+裁判沙汰 > saibanzata\ ;
+営利法人 > eirihoujin\ ;
+議会政治 > gikaiseiji\ ;
+雨天順延 > utenjun''en\ ;
+付帯費用 > futaihiyou\ ;
+代議員団 > daigiindan\ ;
+二重課税 > nijuukazei\ ;
+扶養控除 > fuyoukoujo\ ;
+衛星都市 > eiseitoshi\ ;
+電気回路 > denkikairo\ ;
+地下二階 > chikanikai\ ;
+預金口座 > yokinkouza\ ;
+色恋沙汰 > irokoizata\ ;
+貨幣価値 > kaheikachi\ ;
+残務整理 > zanmuseiri\ ;
+公営保険 > koueihoken\ ;
+譲渡担保 > joutotanpo\ ;
+一家団欒 > ikkadanran\ ;
+代議員会 > daigiinkai\ ;
+補正予算 > hoseiyosan\ ;
+過剰防衛 > kajoubouei\ ;
+予備座席 > yobizaseki\ ;
+衛生基準 > eiseikijun\ ;
+保護団体 > hogodantai\ ;
+儀装馬車 > gisoubasha\ ;
+時事問題 > jijimondai\ ;
+夫婦喧嘩 > fuufugenka\ ;
+断固抗議 > dankokougi\ ;
+五輪聖火 > gorinseika\ ;
+自分勝手 > jibunkatte\ ;
+軍需景気 > gunjukeiki\ ;
+基底部門 > kiteibumon\ ;
+丸太小屋 > marutagoya\ ;
+予想利益 > yosourieki\ ;
+五音音階 > goon''onkai\ ;
+火気厳禁 > kakigenkin\ ;
+十字架像 > juujikazou\ ;
+処理過程 > shorikatei\ ;
+一定不変 > itteifuhen\ ;
+月下美人 > gekkabijin\ ;
+瀬戸内海 > setonaikai\ ;
+老政治家 > rouseijika\ ;
+功利主義 > kourishugi\ ;
+規制緩和 > kiseikanwa\ ;
+如是我聞 > nyozegamon\ ;
+明治時代 > meijijidai\ ;
+同化作用 > doukasayou\ ;
+別途預金 > bettoyokin\ ;
+下種根性 > gesukonjou\ ;
+援助交際 > enjokousai\ ;
+国会議員 > kokkaigiin\ ;
+土地利用 > tochiriyou\ ;
+栄枯盛衰 > eikoseisui\ ;
+相互作用 > sougosayou\ ;
+舞台衣装 > butaiishou\ ;
+合議制度 > gougiseido\ ;
+雌雄異株 > shiyuuishu\ ;
+反射誤差 > hanshagosa\ ;
+塩素酸塩 > ensosan''en\ ;
+絶対誤差 > zettaigosa\ ;
+物損事故 > bussonjiko\ ;
+全部保険 > zenbuhoken\ ;
+悪巫山戯 > warufuzake\ ;
+整形外科 > seikeigeka\ ;
+武家政権 > bukeseiken\ ;
+二項分布 > nikoubunpu\ ;
+映画会社 > eigagaisha\ ;
+鉄砲百合 > teppouyuri\ ;
+名誉会員 > meiyokaiin\ ;
+応募用紙 > ouboyoushi\ ;
+自浄作用 > jijousayou\ ;
+外貨預金 > gaikayokin\ ;
+恐怖映画 > kyoufueiga\ ;
+課税控除 > kazeikoujo\ ;
+許容誤差 > kyoyougosa\ ;
+不定期刑 > futeikikei\ ;
+明治維新 > meijiishin\ ;
+言語機能 > gengokinou\ ;
+保税倉庫 > hozeisouko\ ;
+医療機関 > iryoukikan\ ;
+石井聰互 > ishiisougo\ ;
+軍事封鎖 > gunjifuusa\ ;
+位階勲等 > ikaikuntou\ ;
+耐火煉瓦 > taikarenga\ ;
+古今無類 > kokonmurui\ ;
+電波管理 > denpakanri\ ;
+民事事件 > minjijiken\ ;
+自然保護 > shizenhogo\ ;
+画像処理 > gazoushori\ ;
+種種雑多 > shujuzatta\ ;
+映画俳優 > eigahaiyuu\ ;
+目茶目茶 > mechamecha\ ;
+磁気録音 > jikirokuon\ ;
+不協和音 > fukyouwaon\ ;
+本位記号 > hon''ikigou\ ;
+衛生管理 > eiseikanri\ ;
+相互主義 > sougoshugi\ ;
+応募資金 > ouboshikin\ ;
+復古主義 > fukkoshugi\ ;
+次亜硫酸 > jiaryuusan\ ;
+平安時代 > heianjidai\ ;
+情報機器 > jouhoukiki\ ;
+三位一体 > sanmiittai\ ;
+政務次官 > seimujikan\ ;
+雌雄異体 > shiyuuitai\ ;
+武断政治 > budanseiji\ ;
+酸化炭素 > sankatanso\ ;
+水彩画家 > suisaigaka\ ;
+基礎代謝 > kisotaisha\ ;
+一杯機嫌 > ippaikigen\ ;
+道路輸送 > douroyusou\ ;
+亜熱帯林 > anettairin\ ;
+青息吐息 > aoikitoiki\ ;
+慇懃無礼 > inginburei\ ;
+糞真面目 > kusomajime\ ;
+自主規制 > jishukisei\ ;
+弥生時代 > yayoijidai\ ;
+目茶苦茶 > mechakucha\ ;
+予備会談 > yobikaidan\ ;
+等位構造 > touikouzou\ ;
+他流試合 > taryuujiai\ ;
+安定操作 > anteisousa\ ;
+無償行為 > mushoukoui\ ;
+夏期休暇 > kakikyuuka\ ;
+夏期学校 > kakigakkou\ ;
+宇宙医学 > uchuuigaku\ ;
+名誉除隊 > meiyojotai\ ;
+五臓六腑 > gozouroppu\ ;
+執行委員 > shikkouiin\ ;
+四面楚歌 > shimensoka\ ;
+威風堂堂 > ifuudoudou\ ;
+軍事会議 > gunjikaigi\ ;
+跛行景気 > hakoukeiki\ ;
+饂飩粉病 > udonkobyou\ ;
+天下一品 > tenkaippin\ ;
+基地閉鎖 > kichiheisa\ ;
+筆記用具 > hikkiyougu\ ;
+蒸気機関 > joukikikan\ ;
+磁気抵抗 > jikiteikou\ ;
+丁字定規 > teijijougi\ ;
+固定金利 > koteikinri\ ;
+起動時間 > kidoujikan\ ;
+自己欺瞞 > jikogiman\ ;
+慰安旅行 > ianryokou\ ;
+電気器具 > denkikigu\ ;
+危機打者 > kikidasha\ ;
+塩化水素 > enkasuiso\ ;
+人事異動 > jinjiidou\ ;
+亜鉛鉄板 > aenteppan\ ;
+遮二無二 > shanimuni\ ;
+遺伝地図 > idenchizu\ ;
+不法行為 > fuhoukoui\ ;
+死体遺棄 > shitaiiki\ ;
+内野安打 > naiyaanda\ ;
+平穏無事 > heionbuji\ ;
+明明後日 > shiasatte\ ;
+一気呵成 > ikkikasei\ ;
+武器貸与 > bukitaiyo\ ;
+一夫多妻 > ipputasai\ ;
+危機突破 > kikitoppa\ ;
+医療機器 > iryoukiki\ ;
+天下無比 > tenkamuhi\ ;
+掩護部隊 > engobutai\ ;
+馬鹿野郎 > bakayarou\ ;
+口語英語 > kougoeigo\ ;
+鉄火味噌 > tekkamiso\ ;
+阿弥陀経 > amidakyou\ ;
+阿弥陀籤 > amidakuji\ ;
+存在意義 > sonzaiigi\ ;
+又従兄弟 > mataitoko\ ;
+羽毛布団 > umoufuton\ ;
+利己主義 > rikoshugi\ ;
+営利主義 > eirishugi\ ;
+無声映画 > museieiga\ ;
+補助漢字 > hojokanji\ ;
+和英辞書 > waeijisho\ ;
+同位元素 > douigenso\ ;
+再従兄弟 > futaitoko\ ;
+亜鉛凸版 > aentoppan\ ;
+磁気浮上 > jikifujou\ ;
+不法移民 > fuhouimin\ ;
+越権行為 > ekkenkoui\ ;
+主意主義 > shuishugi\ ;
+自己検査 > jikokensa\ ;
+多事多難 > tajitanan\ ;
+ＡＢＣ順 > ēbīshījun\ ;
+意気揚揚 > ikiyouyou\ ;
+和英辞典 > waeijiten\ ;
+不意試験 > fuishiken\ ;
+模範試合 > mohanjiai\ ;
+二重母音 > nijuuboin\ ;
+栄耀栄華 > eiyoueiga\ ;
+母語話者 > bogowasha\ ;
+木戸御免 > kidogomen\ ;
+自己疎外 > jikosogai\ ;
+基礎控除 > kisokoujo\ ;
+一定温度 > itteiondo\ ;
+手前味噌 > temaemiso\ ;
+允文允武 > inbuninbu\ ;
+自暴自棄 > jiboujiki\ ;
+相撲部屋 > sumoubeya\ ;
+自己保存 > jikohozon\ ;
+多事多端 > tajitatan\ ;
+明々後日 > shiasatte\ ;
+曖昧模糊 > aimaimoko\ ;
+事務次官 > jimujikan\ ;
+気宇広大 > kiukoudai\ ;
+多数意見 > tasuuiken\ ;
+歯科医師 > shikaishi\ ;
+美化運動 > bikaundou\ ;
+自己主義 > jikoshugi\ ;
+実行委員 > jikkouiin\ ;
+合気道家 > aikidouka\ ;
+遺族扶助 > izokufujo\ ;
+娑羅双樹 > sarasouju\ ;
+意気揚々 > ikiyouyou\ ;
+自己顕示 > jikokenji\ ;
+自己負担 > jikofutan\ ;
+露天風呂 > rotenburo\ ;
+意気投合 > ikitougou\ ;
+運否天賦 > unputenpu\ ;
+富栄養化 > fueiyouka\ ;
+印度支那 > indoshina\ ;
+欧化主義 > oukashugi\ ;
+無二無三 > munimuzan\ ;
+三日三夜 > mikkamiyo\ ;
+牡丹海老 > botan''ebi\ ;
+電気機器 > denkikiki\ ;
+自己嫌悪 > jikoken''o\ ;
+基本合意 > kihongoui\ ;
+小児科医 > shounikai\ ;
+我武者羅 > gamushara\ ;
+自己犠牲 > jikogisei\ ;
+相互扶助 > sougofujo\ ;
+同音異義 > douon''igi\ ;
+自己本位 > jikohon''i\ ;
+異常高温 > ijoukouon\ ;
+軍事援助 > gunjienjo\ ;
+弊衣破帽 > heiihabou\ ;
+七五三縄 > shimenawa\ ;
+文化遺産 > bunkaisan\ ;
+又従姉妹 > mataitoko\ ;
+自家受精 > jikajusei\ ;
+自家受粉 > jikajufun\ ;
+民生委員 > minseiiin\ ;
+愛他主義 > aitashugi\ ;
+一党一派 > ittouippa\ ;
+怪奇映画 > kaikieiga\ ;
+釈迦牟尼 > shakamuni\ ;
+社会経済 > shakaikei\ ;
+結跏趺座 > kekkafuza\ ;
+蓖麻子油 > himashiyu\ ;
+天気具合 > tenkiguai\ ;
+一口同音 > ikkudouon\ ;
+不可思議 > fukashigi\ ;
+医事伝道 > ijidendou\ ;
+音部記号 > onbukigou\ ;
+奈良時代 > narajidai\ ;
+耳鼻咽喉 > jibiinkou\ ;
+空気汚染 > kuukiosen\ ;
+烏帽子貝 > eboshigai\ ;
+有象無象 > uzoumuzou\ ;
+起訴猶予 > kisoyuuyo\ ;
+伊勢神宮 > isejinguu\ ;
+尸位素餐 > shiisosan\ ;
+野天風呂 > notenburo\ ;
+無理無体 > murimutai\ ;
+意気軒高 > ikikenkou\ ;
+語尾変化 > gobihenka\ ;
+九分九厘 > kubukurin\ ;
+自己規制 > jikokisei\ ;
+同委員会 > douiinkai\ ;
+沙羅双樹 > sarasouju\ ;
+一妻多夫 > issaitafu\ ;
+不正行為 > fuseikoui\ ;
+現状維持 > genjouiji\ ;
+美辞麗句 > bijireiku\ ;
+不言不語 > fugenfugo\ ;
+下部機関 > kabukikan\ ;
+個人誤差 > kojingosa\ ;
+自由意志 > jiyuuishi\ ;
+二次記憶 > nijikioku\ ;
+区会議員 > kukaigiin\ ;
+古事記伝 > kojikiden\ ;
+無為無策 > muimusaku\ ;
+小生意気 > konamaiki\ ;
+汚染除去 > osenjokyo\ ;
+扶養義務 > fuyougimu\ ;
+擬古主義 > gikoshugi\ ;
+九寸五分 > kusungobu\ ;
+意気軒昂 > ikikenkou\ ;
+女郎蜘蛛 > jorougumo\ ;
+不随意筋 > fuzuiikin\ ;
+移行期間 > ikoukikan\ ;
+付加価値 > fukakachi\ ;
+土壌汚染 > dojouosen\ ;
+上院議員 > jouingiin\ ;
+御家騒動 > oiesoudou\ ;
+二度三度 > nidosando\ ;
+高祖頭巾 > kosozukin\ ;
+予備部品 > yobibuhin\ ;
+自己批判 > jikohihan\ ;
+自画自賛 > jigajisan\ ;
+自画自讚 > jigajisan\ ;
+首位打者 > shuidasha\ ;
+因果応報 > ingaouhou\ ;
+下女下男 > gejogenan\ ;
+安楽椅子 > anrakuisu\ ;
+委員付託 > iinfutaku\ ;
+予備運動 > yobiundou\ ;
+遺産管理 > isankanri\ ;
+争議行為 > sougikoui\ ;
+麻婆豆腐 > mābodoufu\ ;
+文化映画 > bunkaeiga\ ;
+意味内容 > iminaiyou\ ;
+予備判事 > yobihanji\ ;
+武家時代 > bukejidai\ ;
+医療過誤 > iryoukago\ ;
+武家政治 > bukeseiji\ ;
+女王陛下 > joouheika\ ;
+大気汚染 > taikiosen\ ;
+基礎工事 > kisokouji\ ;
+無理往生 > murioujou\ ;
+何時時分 > itsujibun\ ;
+相互依存 > sougoizon\ ;
+語彙規則 > goikisoku\ ;
+自己弁護 > jikobengo\ ;
+五十音図 > gojuuonzu\ ;
+利他主義 > ritashugi\ ;
+加持祈祷 > kajikitou\ ;
+花卉園芸 > kakiengei\ ;
+和製英語 > waseieigo\ ;
+仮名手本 > kanadehon\ ;
+英和辞典 > eiwajiten\ ;
+予備会議 > yobikaigi\ ;
+二院制度 > niinseido\ ;
+夏期時間 > kakijikan\ ;
+井戸屋形 > idoyakata\ ;
+自己矛盾 > jikomujun\ ;
+危機管理 > kikikanri\ ;
+基礎体温 > kisotaion\ ;
+盂蘭盆会 > urabon''e\ ;
+医科歯科 > ikashika\ ;
+二度手間 > nidodema\ ;
+于蘭盆会 > urabon''e\ ;
+恵比寿顔 > ebisugao\ ;
+愚図愚図 > guzuguzu\ ;
+和気藹藹 > wakiaiai\ ;
+不真面目 > fumajime\ ;
+得手勝手 > etekatte\ ;
+寄付行為 > kifukoui\ ;
+乎古止点 > okototen\ ;
+富士五湖 > fujigoko\ ;
+是是非非 > zezehihi\ ;
+我利我利 > garigari\ ;
+江戸時代 > edojidai\ ;
+歯科医院 > shikaiin\ ;
+意気阻喪 > ikisosou\ ;
+違犯行為 > ihankoui\ ;
+恵比須講 > ebisukou\ ;
+一歩一歩 > ippoippo\ ;
+和気藹々 > wakiaiai\ ;
+無期延期 > mukienki\ ;
+赤鳥赤腹 > akakokko\ ;
+天爾乎波 > teniwoha\ ;
+依怙贔屓 > ekohiiki\ ;
+事務機器 > jimukiki\ ;
+自己暗示 > jikoanji\ ;
+伯剌西爾 > burajiru\ ;
+下院議員 > kaingiin\ ;
+電気椅子 > denkiisu\ ;
+平和維持 > heiwaiji\ ;
+有為転変 > uitenpen\ ;
+英小文字 > eikomoji\ ;
+何処其処 > dokosoko\ ;
+弖爾乎波 > teniwoha\ ;
+出来具合 > dekiguai\ ;
+意味部門 > imibumon\ ;
+土左衛門 > dozaemon\ ;
+意味原理 > imigenri\ ;
+依估贔屓 > ekohiiki\ ;
+婦人科医 > fujinkai\ ;
+烏帽子名 > eboshina\ ;
+風邪気味 > kazegimi\ ;
+左顧右眄 > sakouben\ ;
+仮名文字 > kanamoji\ ;
+地下足袋 > jikatabi\ ;
+大真面目 > oomajime\ ;
+検非違使 > kebiishi\ ;
+御無沙汰 > gobusata\ ;
+右顧左眄 > ukosaben\ ;
+違法行為 > ihoukoui\ ;
+会意文字 > kaiimoji\ ;
+合縁奇縁 > aienkien\ ;
+監査委員 > kansaiin\ ;
+異口同音 > ikudouon\ ;
+引火温度 > inkaondo\ ;
+阿古屋貝 > akoyagai\ ;
+生真面目 > kimajime\ ;
+是々非々 > zezehihi\ ;
+無理矢理 > muriyari\ ;
+示威運動 > jiiundou\ ;
+一夫一婦 > ippuippu\ ;
+五分五分 > gobugobu\ ;
+天爾遠波 > teniwoha\ ;
+後鳥羽院 > gotobain\ ;
+有耶無耶 > uyamuya\ ;
+亜米利加 > amerika\ ;
+荏胡麻油 > egomayu\ ;
+皮膚科医 > hifukai\ ;
+右往左往 > uousaou\ ;
+亜麻仁油 > amaniyu\ ;
+障泥烏賊 > aoriika\ ;
+御披露目 > ohirome\ ;
+赤啄木鳥 > akagera\ ;
+保護委員 > hogoiin\ ;
+阿弗利加 > afurika\ ;
+今日明日 > kyouasu\ ;
+亜拉毘亜 > arabia\ ;
+伊勢海老 > iseebi\ ;
+亜剌比亜 > arabia\ ;
+緑啄木鳥 > aogera\ ;
+御目見得 > omemie\ ;
+寿教室 > kotobukikyoushitsu\ ;
+私小説 > watakushishousetsu\ ;
+七七日 > shichishichinichi\ ;
+紫露草 > murasakitsuyukusa\ ;
+七々日 > shichishichinichi\ ;
+軽口話 > karukuchibanashi\ ;
+植物質 > shokubutsushitsu\ ;
+宿直室 > shukuchokushitsu\ ;
+一口話 > hitokuchibanashi\ ;
+筍生活 > takenokoseikatsu\ ;
+譲渡人 > yuzuriwatashinin\ ;
+内幕話 > uchimakubanashi\ ;
+集札係 > shuusatsugakari\ ;
+金槌頭 > kanadzuchiatama\ ;
+出札掛 > shussatsugakari\ ;
+三指鴎 > mitsuyubikamome\ ;
+出札係 > shussatsugakari\ ;
+腰赤燕 > koshiakatsubame\ ;
+診察室 > shinsatsushitsu\ ;
+識別力 > shikibetsuryoku\ ;
+私自身 > watakushijishin\ ;
+平清盛 > tairanokiyomori\ ;
+入出力 > nyuushutsuryoku\ ;
+紛失届 > funshitsutodoke\ ;
+求職係 > kyuushokugakari\ ;
+金壺眼 > kanatsubomanako\ ;
+陳列室 > chinretsushitsu\ ;
+特別室 > tokubetsushitsu\ ;
+紫水晶 > murasakizuishou\ ;
+取締役 > torishimariyaku\ ;
+片口鰯 > katakuchiiwashi\ ;
+不倒翁 > okiagarikoboshi\ ;
+不肖私 > fushouwatakushi\ ;
+失業率 > shitsugyouritsu\ ;
+抽出物 > chuushutsubutsu\ ;
+女友達 > on''natomodachi\ ;
+百日咳 > hyakunichizeki\ ;
+行列式 > gyouretsushiki\ ;
+取扱人 > toriatsukainin\ ;
+出入国 > shutsunyuukoku\ ;
+才槌頭 > saidzuchiatama\ ;
+逆説的 > gyakusetsuteki\ ;
+副食物 > fukushokubutsu\ ;
+瓢箪鯰 > hyoutan''namazu\ ;
+東半球 > higashihankyuu\ ;
+動物質 > doubutsushitsu\ ;
+越中褌 > etchuufundoshi\ ;
+印半纏 > shirushibanten\ ;
+仕方話 > shikatabanashi\ ;
+改札係 > kaisatsugakari\ ;
+剃刀触 > kamisorikabure\ ;
+売渡証 > uriwatashishou\ ;
+告別式 > kokubetsushiki\ ;
+夾雑物 > kyouzatsubutsu\ ;
+緑白色 > ryokuhakushoku\ ;
+膝関節 > shitsukansetsu\ ;
+接続口 > setsuzokuguchi\ ;
+凝着力 > gyouchakuryoku\ ;
+懐勘定 > futokorokanjou\ ;
+提出物 > teishutsubutsu\ ;
+出札口 > shussatsuguchi\ ;
+天日瓦 > tenjitsugawara\ ;
+夢物語 > yumemonogatari\ ;
+一昔前 > hitomukashimae\ ;
+百卒長 > hyakusotsuchou\ ;
+逆行列 > gyakugyouretsu\ ;
+旭日章 > kyokujitsushou\ ;
+幼友達 > osanatomodachi\ ;
+尻軽女 > shirigaruon''na\ ;
+白鉢巻 > shirohachimaki\ ;
+薄紫色 > usumurasakiiro\ ;
+出塁率 > shutsuruiritsu\ ;
+電信柱 > denshinbashira\ ;
+内証話 > naishoubanashi\ ;
+緑玉石 > ryokugyokuseki\ ;
+膝蓋骨 > shitsugaikotsu\ ;
+仮出獄 > karishutsugoku\ ;
+特別職 > tokubetsushoku\ ;
+命辛辛 > inochigaragara\ ;
+転入届 > ten''nyuutodoke\ ;
+受付係 > uketsukegakari\ ;
+就職率 > shuushokuritsu\ ;
+給料袋 > kyuuryoubukuro\ ;
+植物学 > shokubutsugaku\ ;
+大和魂 > yamatodamashii\ ;
+下台所 > shimodaidokoro\ ;
+就職口 > shuushokuguchi\ ;
+筋肉質 > kin''nikushitsu\ ;
+力仕事 > chikarashigoto\ ;
+嫡出子 > chakushutsushi\ ;
+片袖机 > katasodedzukue\ ;
+卒業式 > sotsugyoushiki\ ;
+光通信 > hikaritsuushin\ ;
+取締法 > torishimarihou\ ;
+手術室 > shujutsushitsu\ ;
+試着室 > shichakushitsu\ ;
+爆発物 > bakuhatsubutsu\ ;
+猪武者 > inoshishimusha\ ;
+大黒柱 > daikokubashira\ ;
+鎖帷子 > kusarikatabira\ ;
+不躾者 > bushitsukemono\ ;
+三色菫 > sanshokusumire\ ;
+命辛々 > inochigaragara\ ;
+出力線 > shutsuryokusen\ ;
+爆発力 > bakuhatsuryoku\ ;
+着信局 > chakushinkyoku\ ;
+排出物 > haishutsubutsu\ ;
+鉱物質 > koubutsushitsu\ ;
+振出局 > furidashikyoku\ ;
+執務室 > shitsumushitsu\ ;
+発熱量 > hatsunetsuryou\ ;
+大八車 > daihachiguruma\ ;
+直接的 > chokusetsuteki\ ;
+θ理論 > shi\ ̄ta\ ̄riron\ ;
+改札鋏 > kaisatsuhasami\ ;
+不束者 > futsutsukamono\ ;
+燕千鳥 > tsubamechidori\ ;
+休憩室 > kyuukeishitsu\ ;
+日没前 > nichibotsuzen\ ;
+狐格子 > kitsunegoushi\ ;
+閲覧室 > etsuranshitsu\ ;
+建築物 > kenchikubutsu\ ;
+実質的 > jisshitsuteki\ ;
+翌々日 > yokuyokujitsu\ ;
+試聴室 > shichoushitsu\ ;
+古強者 > furutsuwamono\ ;
+狸囃子 > tanukibayashi\ ;
+植毛術 > shokumoujutsu\ ;
+旧正月 > kyuushougatsu\ ;
+丸鼻蜂 > maruhanabachi\ ;
+脚色者 > kyakushokusha\ ;
+東海岸 > higashikaigan\ ;
+直立茎 > chokuritsukei\ ;
+白雪姫 > shirayukihime\ ;
+断熱的 > dan''netsuteki\ ;
+泥縄式 > doronawashiki\ ;
+観閲式 > kan''etsushiki\ ;
+吸湿性 > kyuushitsusei\ ;
+消極的 > shoukyokuteki\ ;
+漂流物 > hyouryuubutsu\ ;
+下二桁 > shimofutaketa\ ;
+憂鬱質 > yuuutsushitsu\ ;
+俄成金 > niwakanarikin\ ;
+収穫物 > shuukakubutsu\ ;
+貸付金 > kashitsukekin\ ;
+動物達 > doubutsutachi\ ;
+食糧庁 > shokuryouchou\ ;
+腺病質 > senbyoushitsu\ ;
+民約説 > min''yakusetsu\ ;
+吸湿剤 > kyuushitsuzai\ ;
+二筋道 > futasujimichi\ ;
+半長靴 > han''nagagutsu\ ;
+校長室 > kouchoushitsu\ ;
+決断力 > ketsudanryoku\ ;
+差出人 > sashidashinin\ ;
+七曜表 > shichiyouhyou\ ;
+灰緑色 > kairyokushoku\ ;
+本質的 > honshitsuteki\ ;
+求心力 > kyuushinryoku\ ;
+結団式 > ketsudanshiki\ ;
+改札口 > kaisatsuguchi\ ;
+繁殖力 > hanshokuryoku\ ;
+囃子詞 > hayashikotoba\ ;
+人差指 > hitosashiyubi\ ;
+七面鳥 > shichimenchou\ ;
+発言力 > hatsugenryoku\ ;
+出世頭 > shussegashira\ ;
+集中力 > shuuchuuryoku\ ;
+屈辱的 > kutsujokuteki\ ;
+商売敵 > shoubaigataki\ ;
+出生届 > shusseitodoke\ ;
+脱獄囚 > datsugokushuu\ ;
+古武士 > furutsuwamono\ ;
+土産話 > miyagebanashi\ ;
+白装束 > shiroshouzoku\ ;
+腰巾着 > koshiginchaku\ ;
+半熟卵 > hanjukutamago\ ;
+没常識 > botsujoushiki\ ;
+集塵袋 > shuujinbukuro\ ;
+三下奴 > sanshitayakko\ ;
+地質学 > chishitsugaku\ ;
+楽屋話 > gakuyabanashi\ ;
+強奪物 > goudatsubutsu\ ;
+閑日月 > kanjitsugetsu\ ;
+挑発的 > chouhatsuteki\ ;
+祝祭日 > shukusaijitsu\ ;
+彫刻術 > choukokujutsu\ ;
+中立国 > chuuritsukoku\ ;
+喫煙室 > kitsuenshitsu\ ;
+一両日 > ichiryoujitsu\ ;
+橋脚舟 > kyoukyakushuu\ ;
+漬物石 > tsukemonoishi\ ;
+外出中 > gaishutsuchuu\ ;
+鉄染色 > tetsusenshoku\ ;
+独立心 > dokuritsushin\ ;
+今月末 > kongetsumatsu\ ;
+実物大 > jitsubutsudai\ ;
+拾得物 > shuutokubutsu\ ;
+倉敷料 > kurashikiryou\ ;
+資料室 > shiryoushitsu\ ;
+買物袋 > kaimonobukuro\ ;
+吸収力 > kyuushuuryoku\ ;
+独立国 > dokuritsukoku\ ;
+血尿症 > ketsunyoushou\ ;
+彫刻物 > choukokubutsu\ ;
+堪忍袋 > kan''ninbukuro\ ;
+社長室 > shachoushitsu\ ;
+丼勘定 > donburikanjou\ ;
+玉子丼 > tamagodonburi\ ;
+縮刷版 > shukusatsuban\ ;
+今日的 > kon''nichiteki\ ;
+洞察力 > dousatsuryoku\ ;
+松食虫 > matsukuimushi\ ;
+芋蔓式 > imodzurushiki\ ;
+質量数 > shitsuryousuu\ ;
+別配達 > betsuhaitatsu\ ;
+今日様 > kon''nichisama\ ;
+冠大会 > kanmuritaikai\ ;
+追複曲 > tsuifukukyoku\ ;
+組合頭 > kumiaigashira\ ;
+散歩旁 > sanpokatagata\ ;
+供託物 > kyoutakubutsu\ ;
+出願人 > shutsugan''nin\ ;
+粘着力 > nenchakuryoku\ ;
+宿泊料 > shukuhakuryou\ ;
+枝垂桜 > shidarezakura\ ;
+古代紫 > kodaimurasaki\ ;
+枝垂柳 > shidareyanagi\ ;
+深緑色 > fukamidoriiro\ ;
+積雪量 > sekisetsuryou\ ;
+研究室 > kenkyuushitsu\ ;
+工作室 > kousakushitsu\ ;
+作劇術 > sakugekijutsu\ ;
+短日月 > tanjitsugetsu\ ;
+車掌室 > shashoushitsu\ ;
+診察料 > shinsatsuryou\ ;
+俸給袋 > houkyuubukuro\ ;
+消失点 > shoushitsuten\ ;
+読書室 > dokushoshitsu\ ;
+宿泊先 > shukuhakusaki\ ;
+識別子 > shikibetsushi\ ;
+南半球 > minamihankyuu\ ;
+職員室 > shokuinshitsu\ ;
+信玄袋 > shingenbukuro\ ;
+恋物語 > koimonogatari\ ;
+一粒種 > hitotsubudane\ ;
+緑柱石 > ryokuchuuseki\ ;
+昔気質 > mukashikatagi\ ;
+俄勉強 > niwakabenkyou\ ;
+進学率 > shingakuritsu\ ;
+殿様蛙 > tonosamagaeru\ ;
+静脈血 > joumyakuketsu\ ;
+一筋道 > hitosujimichi\ ;
+就業率 > shuugyouritsu\ ;
+内緒話 > naishobanashi\ ;
+躁鬱質 > souutsushitsu\ ;
+熱効率 > netsukouritsu\ ;
+目的物 > mokutekibutsu\ ;
+反発力 > hanpatsuryoku\ ;
+植物誌 > shokubutsushi\ ;
+警察力 > keisatsuryoku\ ;
+貨物室 > kamotsushitsu\ ;
+懐中鏡 > kaichuukagami\ ;
+淡緑色 > tanryokushoku\ ;
+天竺鼠 > tenjikunezumi\ ;
+統率力 > touritsuryoku\ ;
+実録物 > jitsurokumono\ ;
+密入国 > mitsunyuugoku\ ;
+直輸出 > chokuyushutsu\ ;
+惚気話 > norokebanashi\ ;
+休養室 > kyuuyoushitsu\ ;
+陳列窓 > chinretsumado\ ;
+百分率 > hyakubunritsu\ ;
+出血症 > shukketsushou\ ;
+密輸出 > mitsuyushutsu\ ;
+判別式 > hanbetsushiki\ ;
+植物界 > shokubutsukai\ ;
+熱力学 > netsurikigaku\ ;
+新正月 > shinshougatsu\ ;
+主食物 > shushokubutsu\ ;
+陳列棚 > chinretsudana\ ;
+雑収入 > zatsushuunyuu\ ;
+翌翌日 > yokuyokujitsu\ ;
+話半分 > hanashihanbun\ ;
+力不足 > chikarabusoku\ ;
+就学率 > shuugakuritsu\ ;
+水上町 > minakamimachi\ ;
+親切心 > shinsetsushin\ ;
+制作室 > seisakushitsu\ ;
+即物的 > sokubutsuteki\ ;
+汲取口 > kumitoriguchi\ ;
+廿日鼠 > hatsukanezumi\ ;
+総領娘 > souryoumusume\ ;
+七福神 > shichifukujin\ ;
+特別席 > tokubetsuseki\ ;
+多血質 > taketsushitsu\ ;
+核爆発 > kakubakuhatsu\ ;
+得票率 > tokuhyouritsu\ ;
+表彰式 > hyoushoushiki\ ;
+入学式 > nyuugakushiki\ ;
+灰白質 > kaihakushitsu\ ;
+食用油 > shokuyouabura\ ;
+職業的 > shokugyouteki\ ;
+食生活 > shokuseikatsu\ ;
+丸一月 > maruhitotsuki\ ;
+職業病 > shokugyoubyou\ ;
+丸一日 > maruichinichi\ ;
+毒物学 > dokubutsugaku\ ;
+就職先 > shuushokusaki\ ;
+口約束 > kuchiyakusoku\ ;
+実力者 > jitsuryokusha\ ;
+湧出量 > yuushutsuryou\ ;
+筒井筒 > tsutsuidzutsu\ ;
+会堂司 > kaidoudzukasa\ ;
+間歇熱 > kanketsunetsu\ ;
+哲学的 > tetsugakuteki\ ;
+読唇術 > dokushinjutsu\ ;
+間欠熱 > kanketsunetsu\ ;
+裸電球 > hadakadenkyuu\ ;
+蛋白質 > tanpakushitsu\ ;
+排泄物 > haisetsubutsu\ ;
+食肉目 > shokunikumoku\ ;
+活動力 > katsudouryoku\ ;
+侵略的 > shinryakuteki\ ;
+凝集力 > gyoushuuryoku\ ;
+俄狂言 > niwakakyougen\ ;
+獅子頭 > shishigashira\ ;
+観察力 > kansatsuryoku\ ;
+脱力感 > datsuryokukan\ ;
+支出額 > shishutsugaku\ ;
+大虐殺 > daigyakusatsu\ ;
+前渡金 > maewatashikin\ ;
+乳白色 > nyuuhakushoku\ ;
+終業式 > shuugyoushiki\ ;
+爆発的 > bakuhatsuteki\ ;
+清元節 > kiyomotobushi\ ;
+雷親父 > kaminarioyaji\ ;
+神経質 > shinkeishitsu\ ;
+接着力 > setchakuryoku\ ;
+五月幟 > satsukinobori\ ;
+逆輸出 > gyakuyushutsu\ ;
+的中率 > tekichuuritsu\ ;
+建設費 > kensetsuhiyou\ ;
+屈折率 > kussetsuritsu\ ;
+船長室 > senchoushitsu\ ;
+主教室 > shukyoushitsu\ ;
+室内楽 > shitsunaigaku\ ;
+人情話 > ninjoubanashi\ ;
+濃緑色 > nouryokushoku\ ;
+応接室 > ousetsushitsu\ ;
+侵略国 > shinryakukoku\ ;
+侍気質 > samuraikatagi\ ;
+申込書 > moushikomisho\ ;
+直説法 > chokusetsuhou\ ;
+下町風 > shitamachifuu\ ;
+食中毒 > shokuchuudoku\ ;
+産出高 > sanshutsudaka\ ;
+供出米 > kyoushutsumai\ ;
+増設率 > zousetsuritsu\ ;
+圧力鍋 > atsuryokunabe\ ;
+団栗眼 > dongurimanako\ ;
+圧力釜 > atsuryokugama\ ;
+気密室 > kimitsushitsu\ ;
+応接係 > ousetsugakari\ ;
+女房詞 > nyouboukotoba\ ;
+分列式 > bunretsushiki\ ;
+親任式 > shin''ninshiki\ ;
+生活力 > seikatsuryoku\ ;
+読心術 > dokushinjutsu\ ;
+駅長室 > ekichoushitsu\ ;
+家付娘 > ietsukimusume\ ;
+百日草 > hyakunichisou\ ;
+両三日 > ryousan''nichi\ ;
+旗行列 > hatagyouretsu\ ;
+眉唾物 > mayutsubamono\ ;
+進行係 > shinkougakari\ ;
+動植物 > doushokubutsu\ ;
+必要物 > hitsuyoubutsu\ ;
+三軸室 > sanjikushitsu\ ;
+待合室 > machiaishitsu\ ;
+博物学 > hakubutsugaku\ ;
+結紮術 > kessatsujutsu\ ;
+混入物 > kon''nyuubutsu\ ;
+人情噺 > ninjoubanashi\ ;
+出席率 > shussekiritsu\ ;
+直接税 > chokusetsuzei\ ;
+失業者 > shitsugyousha\ ;
+牧畜業 > bokuchikugyou\ ;
+構築物 > kouchikubutsu\ ;
+設立者 > setsuritsusha\ ;
+足長蜂 > ashinagabachi\ ;
+粘液質 > nen''ekishitsu\ ;
+直接法 > chokusetsuhou\ ;
+幽霊話 > yuureibanashi\ ;
+同質的 > doushitsuteki\ ;
+執着心 > shuuchakushin\ ;
+力関係 > chikarakankei\ ;
+物質的 > busshitsuteki\ ;
+蒸発熱 > jouhatsunetsu\ ;
+薩摩閥 > satsumabatsu\ ;
+視聴率 > shichouritsu\ ;
+畳水練 > tatamisuiren\ ;
+幕僚長 > bakuryouchou\ ;
+現実的 > genjitsuteki\ ;
+画一的 > kakuitsuteki\ ;
+卸酒販 > oroshishuhan\ ;
+親日家 > shin''nichika\ ;
+内出血 > naishukketsu\ ;
+潤筆料 > junpitsuryou\ ;
+田舎侍 > inakazamurai\ ;
+金釘流 > kanakugiryuu\ ;
+創作力 > sousakuryoku\ ;
+即戦力 > sokusenryoku\ ;
+括約筋 > katsuyakukin\ ;
+説得力 > settokuryoku\ ;
+鐘撞堂 > kanetsukidou\ ;
+旧形式 > kyuukeishiki\ ;
+黄玉石 > kougyokuseki\ ;
+実験室 > jikkenshitsu\ ;
+密漁者 > mitsuryousha\ ;
+潮汐表 > chousekihyou\ ;
+白熱戦 > hakunetsusen\ ;
+従属節 > juuzokusetsu\ ;
+押切帳 > oshikirichou\ ;
+鉱物学 > koubutsugaku\ ;
+左心室 > sashinshitsu\ ;
+極彩色 > gokusaishiki\ ;
+肝心要 > kanjinkaname\ ;
+建築業 > kenchikugyou\ ;
+拒食症 > kyoshokushou\ ;
+熱電対 > netsudentsui\ ;
+鎖伝動 > kusaridendou\ ;
+拡大率 > kakudairitsu\ ;
+狂信的 > kyoushinteki\ ;
+表現力 > hyougenryoku\ ;
+中立面 > chuuritsumen\ ;
+貝殻虫 > kaigaramushi\ ;
+一番星 > ichibanboshi\ ;
+賃借人 > chinshakunin\ ;
+装飾的 > soushokuteki\ ;
+澱粉質 > denpunshitsu\ ;
+千日草 > sen''nichisou\ ;
+七五調 > shichigochou\ ;
+中国服 > chuugokufuku\ ;
+高天原 > takamagahara\ ;
+勘定係 > kanjougakari\ ;
+拘束力 > kousokuryoku\ ;
+沈澱物 > chindenbutsu\ ;
+器質的 > kishitsuteki\ ;
+千日紅 > sen''nichikou\ ;
+建築学 > kenchikugaku\ ;
+敗血症 > haiketsushou\ ;
+十一月 > juuichigatsu\ ;
+袋戸棚 > fukurotodana\ ;
+拝物教 > haibutsukyou\ ;
+復讐心 > fukushuushin\ ;
+旧年末 > kyuunenmatsu\ ;
+失職者 > shisshokusha\ ;
+内割引 > uchiwaribiki\ ;
+出産率 > shussanritsu\ ;
+写実的 > shajitsuteki\ ;
+接続駅 > setsuzokueki\ ;
+製鉄業 > seitetsugyou\ ;
+出生率 > shusseiritsu\ ;
+着物姿 > kimonosugata\ ;
+積極策 > sekkyokusaku\ ;
+小文節 > shoubunsetsu\ ;
+組織力 > soshikiryoku\ ;
+断熱材 > dan''netsuzai\ ;
+著作物 > chosakubutsu\ ;
+盲滅法 > mekurameppou\ ;
+附着力 > fuchakuryoku\ ;
+漂流木 > hyouryuuboku\ ;
+紳士靴 > shinshigutsu\ ;
+浚渫船 > shunsetsusen\ ;
+深山烏 > miyamagarasu\ ;
+生臭物 > namagusamono\ ;
+審判役 > shinpan''yaku\ ;
+積極的 > sekkyokuteki\ ;
+発売元 > hatsubaimoto\ ;
+仏頂面 > butchoudzura\ ;
+取引高 > torihikidaka\ ;
+闖入者 > chin''nyuusha\ ;
+毬栗頭 > igaguriatama\ ;
+建築中 > kenchikuchuu\ ;
+弱小国 > jakushoukoku\ ;
+発売中 > hatsubaichuu\ ;
+復讐劇 > fukushuugeki\ ;
+下仕事 > shitashigoto\ ;
+消極性 > shoukyokusei\ ;
+金欠病 > kinketsubyou\ ;
+聴視率 > choushiritsu\ ;
+深山桜 > miyamazakura\ ;
+質問者 > shitsumonsha\ ;
+空約束 > karayakusoku\ ;
+接続詞 > setsuzokushi\ ;
+抹香鯨 > makkoukujira\ ;
+花盗人 > hananusubito\ ;
+乾燥室 > kansoushitsu\ ;
+尿毒症 > nyoudokushou\ ;
+癇癪玉 > kanshakudama\ ;
+一人物 > ichijinbutsu\ ;
+協約国 > kyouyakukoku\ ;
+末代物 > matsudaimono\ ;
+剃刀負 > kamisorimake\ ;
+一足先 > hitoashisaki\ ;
+果物籠 > kudamonokago\ ;
+世間話 > sekenbanashi\ ;
+行楽客 > kourakukyaku\ ;
+紋白蝶 > monshirochou\ ;
+入湯客 > nyuutoukyaku\ ;
+闇取引 > yamitorihiki\ ;
+進水式 > shinsuishiki\ ;
+仮払金 > karibaraikin\ ;
+紙屑籠 > kamikuzukago\ ;
+乾燥卵 > kansoutamago\ ;
+緑内障 > ryokunaishou\ ;
+極楽鳥 > gokurakuchou\ ;
+賃貸借 > chintaishaku\ ;
+告発者 > kokuhatsusha\ ;
+白血病 > hakketsubyou\ ;
+真珠質 > shinjushitsu\ ;
+片山里 > katayamazato\ ;
+独立祭 > dokuritsusai\ ;
+予約係 > yoyakugakari\ ;
+黄緑色 > ouryokushoku\ ;
+前進力 > zenshinryoku\ ;
+確率論 > kakuritsuron\ ;
+独立班 > dokuritsuhan\ ;
+等圧式 > touatsushiki\ ;
+素人筋 > shiroutosuji\ ;
+美人局 > tsutsumotase\ ;
+借地料 > shakuchiryou\ ;
+黄熱病 > kounetsubyou\ ;
+投票率 > touhyouritsu\ ;
+脅迫的 > kyouhakuteki\ ;
+団結心 > danketsushin\ ;
+質問書 > shitsumonsho\ ;
+中立性 > chuuritsusei\ ;
+告発状 > kokuhatsujou\ ;
+反復説 > hanpukusetsu\ ;
+印刷術 > insatsujutsu\ ;
+能力給 > nouryokukyuu\ ;
+練習曲 > renshuukyoku\ ;
+超能力 > chounouryoku\ ;
+核分裂 > kakubunretsu\ ;
+独立権 > dokuritsuken\ ;
+待宵草 > matsuyoigusa\ ;
+一人娘 > hitorimusume\ ;
+国税局 > kokuzeikyoku\ ;
+一面識 > ichimenshiki\ ;
+出願者 > shutsugansha\ ;
+勿忘草 > wasurenagusa\ ;
+強綿薬 > kyoumen''yaku\ ;
+梶木鮪 > kajikimaguro\ ;
+失明者 > shitsumeisha\ ;
+女道楽 > on''nadouraku\ ;
+成長率 > seichouritsu\ ;
+確実性 > kakujitsusei\ ;
+黒装束 > kuroshouzoku\ ;
+熱拡散 > netsukakusan\ ;
+忠臣蔵 > chuushingura\ ;
+動物学 > doubutsugaku\ ;
+一枚下 > ichimaishita\ ;
+至東京 > itarutoukyou\ ;
+独立性 > dokuritsusei\ ;
+雨後雪 > amenochiyuki\ ;
+八目鰻 > yatsumeunagi\ ;
+天狗話 > tengubanashi\ ;
+案内係 > an''naigakari\ ;
+流行色 > ryuukoushoku\ ;
+鍾乳石 > shounyuuseki\ ;
+接続性 > setsuzokusei\ ;
+真実性 > shinjitsusei\ ;
+骨肉腫 > kotsunikushu\ ;
+犬畜生 > inuchikushou\ ;
+領収証 > ryoushuushou\ ;
+昼光色 > chuukoushoku\ ;
+北極熊 > hokkyokuguma\ ;
+司令室 > shireishitsu\ ;
+印刷物 > insatsubutsu\ ;
+抽象的 > chuushouteki\ ;
+白拍子 > shirabyoushi\ ;
+提出者 > teishutsusha\ ;
+耐圧力 > taiatsuryoku\ ;
+凸面鏡 > totsumenkyou\ ;
+高血圧 > kouketsuatsu\ ;
+柱時計 > hashiradokei\ ;
+傘歯車 > kasahaguruma\ ;
+軍国色 > gunkokushoku\ ;
+八郎潟 > hachirougata\ ;
+宿命的 > shukumeiteki\ ;
+中心角 > chuushinkaku\ ;
+長須鯨 > nagasukujira\ ;
+修了証 > shuuryoushou\ ;
+段々畠 > dandanbatake\ ;
+段々畑 > dandanbatake\ ;
+多肉質 > tanikushitsu\ ;
+進入灯 > shin''nyuutou\ ;
+集約的 > shuuyakuteki\ ;
+兵六玉 > hyourokudama\ ;
+摩擦熱 > masatsunetsu\ ;
+技術力 > gijutsuryoku\ ;
+仮溶接 > kariyousetsu\ ;
+高品質 > kouhinshitsu\ ;
+晒木綿 > sarashimomen\ ;
+伸縮法 > shinshukuhou\ ;
+六連発 > rokurenpatsu\ ;
+併発症 > heihatsushou\ ;
+欠乏症 > ketsuboushou\ ;
+関節技 > kansetsuwaza\ ;
+沈没船 > chinbotsusen\ ;
+容積率 > yousekiritsu\ ;
+主力株 > shuryokukabu\ ;
+乾湿計 > kanshitsukei\ ;
+九星術 > kyuuseijutsu\ ;
+口八丁 > kuchihatchou\ ;
+検察庁 > kensatsuchou\ ;
+表表紙 > omotebyoushi\ ;
+直取引 > jikitorihiki\ ;
+大学卒 > daigakusotsu\ ;
+失語症 > shitsugoshou\ ;
+降雪量 > kousetsuryou\ ;
+漁師町 > ryoushimachi\ ;
+物見櫓 > monomiyagura\ ;
+取次店 > toritsugiten\ ;
+朧月夜 > oborodzukiyo\ ;
+享楽的 > kyourakuteki\ ;
+水力学 > suiryokugaku\ ;
+取引先 > torihikisaki\ ;
+入力線 > nyuuryokusen\ ;
+低血圧 > teiketsuatsu\ ;
+伸縮性 > shinshukusei\ ;
+律令制 > ritsuryousei\ ;
+形式的 > keishikiteki\ ;
+仲立人 > nakadachinin\ ;
+昇降口 > shoukouguchi\ ;
+記録係 > kirokugakari\ ;
+工作物 > kousakubutsu\ ;
+正直者 > shoujikimono\ ;
+中心的 > chuushinteki\ ;
+自習室 > jishuushitsu\ ;
+今明日 > konmyounichi\ ;
+間接的 > kansetsuteki\ ;
+出版物 > shuppanbutsu\ ;
+核軍縮 > kakugunshuku\ ;
+一見識 > ichikenshiki\ ;
+攻撃力 > kougekiryoku\ ;
+整髪料 > seihatsuryou\ ;
+七面倒 > shichimendou\ ;
+耐湿性 > taishitsusei\ ;
+仏文学 > futsubungaku\ ;
+畑水練 > hatakesuiren\ ;
+勅撰集 > chokusenshuu\ ;
+七面体 > shichimentai\ ;
+効率的 > kouritsuteki\ ;
+熱量計 > netsuryoukei\ ;
+注釈者 > chuushakusha\ ;
+狭心症 > kyoushinshou\ ;
+弥猛心 > yatakegokoro\ ;
+総花式 > soubanashiki\ ;
+協商国 > kyoushoukoku\ ;
+七絃琴 > shichigenkin\ ;
+爆裂弾 > bakuretsudan\ ;
+宗教心 > shuukyoushin\ ;
+公共物 > koukyoubutsu\ ;
+救急箱 > kyuukyuubako\ ;
+狂詩曲 > kyoushikyoku\ ;
+俄分限 > niwakabungen\ ;
+宗教学 > shuukyougaku\ ;
+一日中 > ichinichijuu\ ;
+求職者 > kyuushokusha\ ;
+畜殺場 > chikusatsuba\ ;
+学年末 > gakunenmatsu\ ;
+穀象虫 > kokuzoumushi\ ;
+無響室 > mukyoushitsu\ ;
+筍医者 > takenokoisha\ ;
+潛心力 > senshinryoku\ ;
+興行主 > kougyounushi\ ;
+修飾子 > shuushokushi\ ;
+収益率 > shuuekiritsu\ ;
+祝儀袋 > shuugibukuro\ ;
+婚姻届 > kon''intodoke\ ;
+障害物 > shougaibutsu\ ;
+黒銹病 > kurosabibyou\ ;
+人物評 > jinbutsuhyou\ ;
+雑所得 > zatsushotoku\ ;
+剥製術 > hakuseijutsu\ ;
+独占欲 > dokusen''yoku\ ;
+絶望的 > zetsubouteki\ ;
+天然色 > ten''nenshoku\ ;
+脂肪質 > shiboushitsu\ ;
+宗教劇 > shuukyougeki\ ;
+出場者 > shutsujousha\ ;
+乾漆像 > kanshitsuzou\ ;
+内罰的 > naibatsuteki\ ;
+七角形 > shichikakkei\ ;
+即興曲 > sokkyoukyoku\ ;
+散発的 > sanpatsuteki\ ;
+広口瓶 > hirokuchibin\ ;
+圧縮率 > asshukuritsu\ ;
+宿泊人 > shukuhakunin\ ;
+猩紅熱 > shoukounetsu\ ;
+協力鋼 > kyouryokukou\ ;
+所番地 > tokorobanchi\ ;
+注釈書 > chuushakusho\ ;
+特徴量 > tokuchouryou\ ;
+懐工合 > futokoroguai\ ;
+描写力 > byousharyoku\ ;
+生物学 > seibutsugaku\ ;
+懐具合 > futokoroguai\ ;
+読書力 > dokushoryoku\ ;
+知識欲 > chishikiyoku\ ;
+全速力 > zensokuryoku\ ;
+表々紙 > omotebyoushi\ ;
+深紅色 > shinkoushoku\ ;
+軟着陸 > nanchakuriku\ ;
+色情狂 > shikijoukyou\ ;
+郵便袋 > yuubinbukuro\ ;
+診察台 > shinsatsudai\ ;
+泡沫的 > houmatsuteki\ ;
+仮釈放 > karishakuhou\ ;
+急進的 > kyuushinteki\ ;
+診察券 > shinsatsuken\ ;
+極小値 > kyokushouchi\ ;
+供血者 > kyouketsusha\ ;
+収入役 > shuunyuuyaku\ ;
+段段畠 > dandanbatake\ ;
+段段畑 > dandanbatake\ ;
+節用集 > setsuyoushuu\ ;
+配達料 > haitatsuryou\ ;
+新卒者 > shinsotsusha\ ;
+収監力 > shuukanryoku\ ;
+百葉箱 > hyakuyoubako\ ;
+協力者 > kyouryokusha\ ;
+速達便 > sokutatsubin\ ;
+銀白色 > ginhakushoku\ ;
+夾竹桃 > kyouchikutou\ ;
+畜生道 > chikushoudou\ ;
+雪辱戦 > setsujokusen\ ;
+東京着 > toukyouchaku\ ;
+電信局 > denshinkyoku\ ;
+青色症 > seishokushou\ ;
+広告主 > koukokunushi\ ;
+東京発 > toukyouhatsu\ ;
+全身浴 > zenshin''yoku\ ;
+変質者 > henshitsusha\ ;
+夏木立 > natsukodachi\ ;
+警察庁 > keisatsuchou\ ;
+業界初 > gyoukaihatsu\ ;
+天長節 > tenchousetsu\ ;
+産褥熱 > sanjokunetsu\ ;
+単勝式 > tanshoushiki\ ;
+頭頂骨 > touchoukotsu\ ;
+壊血病 > kaiketsubyou\ ;
+看板娘 > kanbanmusume\ ;
+編集局 > henshuukyoku\ ;
+晴後雨 > harenochiame\ ;
+流動食 > ryuudoushoku\ ;
+食道楽 > shokudouraku\ ;
+毛織錦 > keorinishiki\ ;
+求人口 > kyuujinguchi\ ;
+終着駅 > shuuchakueki\ ;
+黒水熱 > kokusuinetsu\ ;
+仮進級 > karishinkyuu\ ;
+配達先 > haitatsusaki\ ;
+寝物語 > nemonogatari\ ;
+若殿原 > wakatonobara\ ;
+冷蔵室 > reizoushitsu\ ;
+没交渉 > botsukoushou\ ;
+静脈瘤 > joumyakuryuu\ ;
+骨組織 > kotsusoshiki\ ;
+千卒長 > sensotsuchou\ ;
+直轄地 > chokkatsuchi\ ;
+一筋繩 > hitosujinawa\ ;
+一筋縄 > hitosujinawa\ ;
+就職難 > shuushokunan\ ;
+説経節 > sekkyoubushi\ ;
+心身症 > shinshinshou\ ;
+面会室 > menkaishitsu\ ;
+独創力 > dokusouryoku\ ;
+始業式 > shigyoushiki\ ;
+来客筋 > raikyakusuji\ ;
+進学塾 > shingakujuku\ ;
+目的格 > mokutekikaku\ ;
+校正係 > kouseigakari\ ;
+力自慢 > chikarajiman\ ;
+屋敷町 > yashikimachi\ ;
+服飾品 > fukushokuhin\ ;
+膨張率 > bouchouritsu\ ;
+良心的 > ryoushinteki\ ;
+空念仏 > soranenbutsu\ ;
+皆皆様 > minaminasama\ ;
+能率給 > nouritsukyuu\ ;
+堆積物 > taisekibutsu\ ;
+出納係 > suitougakari\ ;
+蓄積管 > chikusekikan\ ;
+独身者 > dokushinmono\ ;
+石竹色 > sekichikuiro\ ;
+直腸癌 > chokuchougan\ ;
+突発的 > toppatsuteki\ ;
+芸術的 > geijutsuteki\ ;
+非晶質 > hishoushitsu\ ;
+玉蜀黍 > toumorokoshi\ ;
+小心者 > shoushinmono\ ;
+黒水引 > kuromizuhiki\ ;
+感熱剤 > kan''netsuzai\ ;
+娯楽室 > gorakushitsu\ ;
+鎮痛薬 > chintsuuyaku\ ;
+能率的 > nouritsuteki\ ;
+合唱曲 > gasshoukyoku\ ;
+丹頂鶴 > tanchoudzuru\ ;
+革新的 > kakushinteki\ ;
+客商売 > kyakushoubai\ ;
+一括式 > ikkatsushiki\ ;
+畜産業 > chikusangyou\ ;
+出血死 > shukketsushi\ ;
+白髪頭 > shiragaatama\ ;
+新形式 > shinkeishiki\ ;
+共有物 > kyouyuubutsu\ ;
+申告箱 > shinkokubako\ ;
+書留料 > kakitomeryou\ ;
+希釈熱 > kishakunetsu\ ;
+山口県 > yamaguchiken\ ;
+執筆者 > shippitsusha\ ;
+商取引 > shoutorihiki\ ;
+植物油 > shokubutsuyu\ ;
+出血斑 > shukketsuhan\ ;
+企画室 > kikakushitsu\ ;
+侵入軍 > shin''nyuugun\ ;
+漁獲物 > gyokakubutsu\ ;
+力学的 > rikigakuteki\ ;
+疳癪玉 > kanshakudama\ ;
+約束事 > yakusokugoto\ ;
+経帷子 > kyoukatabira\ ;
+火消壷 > hikeshitsubo\ ;
+利休鼠 > rikyuunezumi\ ;
+順応力 > jun''nouryoku\ ;
+下半身 > shimohanshin\ ;
+表決権 > hyouketsuken\ ;
+択一的 > takuitsuteki\ ;
+流動物 > ryuudoubutsu\ ;
+陳述書 > chinjutsusho\ ;
+追悼式 > tsuitoushiki\ ;
+飲食物 > inshokubutsu\ ;
+昼食会 > chuushokukai\ ;
+畜産学 > chikusangaku\ ;
+識字率 > shikijiritsu\ ;
+鼻高高 > hanatakadaka\ ;
+特別法 > tokubetsuhou\ ;
+出漁権 > shutsugyoken\ ;
+鳶職人 > tobishokunin\ ;
+鎮魂曲 > chinkonkyoku\ ;
+出演料 > shutsuenryou\ ;
+通俗的 > tsuuzokuteki\ ;
+侵入者 > shin''nyuusha\ ;
+空出張 > karashutchou\ ;
+血圧計 > ketsuatsukei\ ;
+胆汁質 > tanjuushitsu\ ;
+黄碧玉 > kouhekigyoku\ ;
+隔月刊 > kakugetsukan\ ;
+復原力 > fukugenryoku\ ;
+竣工式 > shunkoushiki\ ;
+競争率 > kyousouritsu\ ;
+積立金 > tsumitatekin\ ;
+植物園 > shokubutsuen\ ;
+独身寮 > dokushinryou\ ;
+入札者 > nyuusatsusha\ ;
+新入生 > shin''nyuusei\ ;
+神謡集 > shin''youshuu\ ;
+両極端 > ryoukyokutan\ ;
+帳面面 > choumendzura\ ;
+見積書 > mitsumorisho\ ;
+研削代 > kensakushiro\ ;
+活動的 > katsudouteki\ ;
+全能力 > zen''nouryoku\ ;
+食肉類 > shokunikurui\ ;
+肺活量 > haikatsuryou\ ;
+開票率 > kaihyouritsu\ ;
+常識的 > joushikiteki\ ;
+収容力 > shuuyouryoku\ ;
+象徴的 > shouchouteki\ ;
+自慢話 > jimanbanashi\ ;
+招待客 > shoutaikyaku\ ;
+交響曲 > koukyoukyoku\ ;
+電解質 > denkaishitsu\ ;
+平底船 > hirasokobune\ ;
+就任式 > shuuninshiki\ ;
+冷凍室 > reitoushitsu\ ;
+配膳室 > haizenshitsu\ ;
+広島県 > hiroshimaken\ ;
+暦改正 > koyomikaisei\ ;
+徳川方 > tokugawagata\ ;
+仮入学 > karinyuugaku\ ;
+原形質 > genkeishitsu\ ;
+黒色腫 > kokushokushu\ ;
+卒業生 > sotsugyousei\ ;
+回復力 > kaifukuryoku\ ;
+入会式 > nyuukaishiki\ ;
+向心力 > koushinryoku\ ;
+玉虫色 > tamamushiiro\ ;
+特別号 > tokubetsugou\ ;
+脱毛症 > datsumoushou\ ;
+始球式 > shikyuushiki\ ;
+何色搨 > nanshokuzuri\ ;
+信託業 > shintakugyou\ ;
+僻根性 > higamikonjou\ ;
+奪三振 > datsusanshin\ ;
+鉄火丼 > tekkadonburi\ ;
+大福餅 > daifukumochi\ ;
+侵略軍 > shinryakugun\ ;
+反物質 > hanbusshitsu\ ;
+制球力 > seikyuuryoku\ ;
+陸産物 > rikusanbutsu\ ;
+農作物 > nousakubutsu\ ;
+竜舌蘭 > ryuuzetsuran\ ;
+営業畑 > eigyoubatake\ ;
+肉食獣 > nikushokujuu\ ;
+法律学 > houritsugaku\ ;
+新発明 > shinhatsumei\ ;
+逗留客 > touryuukyaku\ ;
+徳島県 > tokushimaken\ ;
+清水寺 > kiyomizudera\ ;
+熱容量 > netsuyouryou\ ;
+文筆業 > bunpitsugyou\ ;
+脳出血 > noushukketsu\ ;
+露出症 > roshutsushou\ ;
+高足蟹 > takaashigani\ ;
+私娼窟 > shishoukutsu\ ;
+黒色癌 > kokushokugan\ ;
+貧血症 > hinketsushou\ ;
+認識票 > ninshikihyou\ ;
+疫病神 > yakubyougami\ ;
+露出狂 > roshutsukyou\ ;
+密猟者 > mitsuryousha\ ;
+八丈島 > hachijoujima\ ;
+降神術 > koushinjutsu\ ;
+哲学者 > tetsugakusha\ ;
+力一杯 > chikaraippai\ ;
+出品物 > shuppinbutsu\ ;
+灰白色 > kaihakushoku\ ;
+独居室 > dokkyoshitsu\ ;
+接待係 > settaigakari\ ;
+万年雪 > man''nen''yuki\ ;
+狂想曲 > kyousoukyoku\ ;
+侵略者 > shinryakusha\ ;
+町役人 > machiyakunin\ ;
+蚰蜒眉 > gejigejimayu\ ;
+学習塾 > gakushuujuku\ ;
+新発売 > shinhatsubai\ ;
+競争力 > kyousouryoku\ ;
+失名氏 > shitsumeishi\ ;
+表座敷 > omotezashiki\ ;
+徴発令 > chouhatsurei\ ;
+副収入 > fukushuunyuu\ ;
+恐喝罪 > kyoukatsuzai\ ;
+屈折軸 > kussetsujiku\ ;
+合切袋 > gassaibukuro\ ;
+消息通 > shousokutsuu\ ;
+株主権 > kabunushiken\ ;
+占有率 > sen''yuuritsu\ ;
+南京袋 > nankinbukuro\ ;
+高高指 > takatakayubi\ ;
+白色光 > hakushokukou\ ;
+鐘乳石 > shounyuuseki\ ;
+日米協 > nichibeikyou\ ;
+屈折角 > kussetsukaku\ ;
+殺人的 > satsujinteki\ ;
+左団扇 > hidariuchiwa\ ;
+防塵室 > boujinshitsu\ ;
+含有率 > gan''yuuritsu\ ;
+脈搏数 > myakuhakusuu\ ;
+推進力 > suishinryoku\ ;
+聾桟敷 > tsunbosajiki\ ;
+縮緬皺 > chirimenjiwa\ ;
+殺人狂 > satsujinkyou\ ;
+輸出入 > yushutsunyuu\ ;
+観客席 > kankyakuseki\ ;
+命冥加 > inochimyouga\ ;
+表六玉 > hyourokudama\ ;
+森林浴 > shinrin''yoku\ ;
+耕作物 > kousakubutsu\ ;
+爆発管 > bakuhatsukan\ ;
+黒八丈 > kurohachijou\ ;
+半身浴 > hanshin''yoku\ ;
+暗緑色 > anryokushoku\ ;
+筋肉痛 > kin''nikutsuu\ ;
+職能給 > shokunoukyuu\ ;
+新生物 > shinseibutsu\ ;
+凌霄花 > nouzenkazura\ ;
+黒色尉 > kokushikijou\ ;
+偶発的 > guuhatsuteki\ ;
+特産物 > tokusanbutsu\ ;
+化粧室 > keshoushitsu\ ;
+総支出 > soushishutsu\ ;
+哲学書 > tetsugakusho\ ;
+博物館 > hakubutsukan\ ;
+仲介物 > chuukaibutsu\ ;
+白頭鷲 > hakutouwashi\ ;
+最新式 > saishinshiki\ ;
+山躑躅 > yamatsutsuji\ ;
+省電力 > shoudenryoku\ ;
+一匹狼 > ippikiookami\ ;
+消息筋 > shousokusuji\ ;
+万年筆 > man''nenhitsu\ ;
+仇同氏 > katakidoushi\ ;
+局地的 > kyokuchiteki\ ;
+革手袋 > kawatebukuro\ ;
+七分袖 > shichibusode\ ;
+心霊術 > shinreijutsu\ ;
+松竹梅 > shouchikubai\ ;
+核開発 > kakukaihatsu\ ;
+国際色 > kokusaishoku\ ;
+子供心 > kodomogokoro\ ;
+勅選集 > chokusenshuu\ ;
+精神力 > seishinryoku\ ;
+再突入 > saitotsunyuu\ ;
+発信局 > hasshinkyoku\ ;
+大和心 > yamatogokoro\ ;
+調律師 > chouritsushi\ ;
+辞職願 > jishokunegai\ ;
+親密感 > shinmitsukan\ ;
+窓際族 > madogiwazoku\ ;
+写真術 > shashinjutsu\ ;
+復元力 > fukugenryoku\ ;
+輻射熱 > fukushanetsu\ ;
+供述者 > kyoujutsusha\ ;
+神経節 > shinkeisetsu\ ;
+爆発性 > bakuhatsusei\ ;
+全日制 > zen''nichisei\ ;
+消毒薬 > shoudokuyaku\ ;
+道徳律 > doutokuritsu\ ;
+国防色 > kokuboushoku\ ;
+終末論 > shuumatsuron\ ;
+将軍職 > shougunshoku\ ;
+草月流 > sougetsuryuu\ ;
+明赤色 > meisekishoku\ ;
+付着力 > fuchakuryoku\ ;
+解決策 > kaiketsusaku\ ;
+口唇裂 > koushinretsu\ ;
+七草粥 > nanakusagayu\ ;
+商業学 > shougyougaku\ ;
+建設省 > kensetsushou\ ;
+分別心 > funbetsushin\ ;
+建設的 > kensetsuteki\ ;
+二翻役 > ryanfan''yaku\ ;
+口拍子 > kuchibyoushi\ ;
+認証式 > ninshoushiki\ ;
+総括的 > soukatsuteki\ ;
+托鉢僧 > takuhatsuzou\ ;
+商業国 > shougyoukoku\ ;
+仲人口 > nakoudoguchi\ ;
+桜前線 > sakurazensen\ ;
+龍舌蘭 > ryuuzetsuran\ ;
+強制力 > kyouseiryoku\ ;
+必読書 > hitsudokusho\ ;
+圧力計 > atsuryokukei\ ;
+随筆集 > zuihitsushuu\ ;
+猫目石 > nekomokuseki\ ;
+勉強机 > benkyouzukue\ ;
+白玉楼 > hakugyokurou\ ;
+開通式 > kaitsuushiki\ ;
+西半球 > nishihankyuu\ ;
+啄木鳥 > takubokuchou\ ;
+単一形 > tan''ichigata\ ;
+必然的 > hitsuzenteki\ ;
+水蟷螂 > mizukamakiri\ ;
+星月夜 > hoshidzukuyo\ ;
+縞織物 > shimaorimono\ ;
+建設業 > kensetsugyou\ ;
+鼻高々 > hanatakadaka\ ;
+商人街 > shouninmachi\ ;
+一幕物 > hitomakumono\ ;
+百人力 > hyakuninriki\ ;
+供述書 > kyoujutsusho\ ;
+実業界 > jitsugyoukai\ ;
+行平鍋 > yukihiranabe\ ;
+落成式 > rakuseishiki\ ;
+柳川鍋 > yanagawanabe\ ;
+航続力 > kouzokuryoku\ ;
+直接費 > chokusetsuhi\ ;
+山梨県 > yamanashiken\ ;
+棗椰子 > natsumeyashi\ ;
+刺激物 > shigekibutsu\ ;
+漫遊客 > man''yuukyaku\ ;
+食物油 > shokubutsuyu\ ;
+瓦煎餅 > kawarasenbei\ ;
+親子丼 > oyakodonburi\ ;
+著述業 > chojutsugyou\ ;
+蒼白色 > souhakushoku\ ;
+七辺形 > shichihenkei\ ;
+年末迄 > nenmatsumade\ ;
+売春宿 > baishun''yado\ ;
+質点系 > shitsutenkei\ ;
+御伽話 > otogibanashi\ ;
+操業率 > sougyouritsu\ ;
+枕屏風 > makurabyoubu\ ;
+血液学 > ketsuekigaku\ ;
+基督教 > kirisutokyou\ ;
+鼠花火 > nezumihanabi\ ;
+捕物帳 > torimonochou\ ;
+捕物帖 > torimonochou\ ;
+貯蔵室 > chozoushitsu\ ;
+弔問客 > choumonkyaku\ ;
+遺失物 > ishitsubutsu\ ;
+動脈血 > doumyakketsu\ ;
+入場式 > nyuujoushiki\ ;
+細胞質 > saiboushitsu\ ;
+血液型 > ketsuekigata\ ;
+標識灯 > hyoushikitou\ ;
+包括的 > houkatsuteki\ ;
+劇中劇 > gekichuugeki\ ;
+実用的 > jitsuyouteki\ ;
+侍八騎 > samuraihakki\ ;
+中間色 > chuukanshoku\ ;
+開腹術 > kaifukujutsu\ ;
+直撃弾 > chokugekidan\ ;
+副産物 > fukusanbutsu\ ;
+命中率 > meichuuritsu\ ;
+血友病 > ketsuyuubyou\ ;
+精白率 > seihakuritsu\ ;
+均質性 > kinshitsusei\ ;
+戸籍係 > kosekigakari\ ;
+接客業 > sekkyakugyou\ ;
+蓄膿症 > chikunoushou\ ;
+花形株 > hanagatakabu\ ;
+振出人 > furidashinin\ ;
+註釈者 > chuushakusha\ ;
+禁欲的 > kin''yokuteki\ ;
+一分別 > hitofunbetsu\ ;
+半独立 > handokuritsu\ ;
+執務中 > shitsumuchuu\ ;
+親日派 > shin''nichiha\ ;
+福島県 > fukushimaken\ ;
+調色板 > choushokuban\ ;
+剪定鋏 > senteibasami\ ;
+緑黄色 > ryokuoushoku\ ;
+下屋敷 > shimoyashiki\ ;
+車用品 > kurumayouhin\ ;
+耐久力 > taikyuuryoku\ ;
+寝台虫 > shindaimushi\ ;
+嗜虐的 > shigyakuteki\ ;
+中継局 > chuukeikyoku\ ;
+長広舌 > choukouzetsu\ ;
+日没後 > nichibotsugo\ ;
+動脈瘤 > doumyakuryuu\ ;
+一輪挿 > ichirinzashi\ ;
+蒸発皿 > jouhatsuzara\ ;
+賃借権 > chinshakuken\ ;
+卸問屋 > oroshidon''ya\ ;
+防湿剤 > boushitsuzai\ ;
+収穫高 > shuukakudaka\ ;
+再出発 > saishuppatsu\ ;
+協奏曲 > kyousoukyoku\ ;
+周極星 > shuukyokusei\ ;
+零行列 > reigyouretsu\ ;
+出発点 > shuppatsuten\ ;
+合格率 > goukakuritsu\ ;
+行進曲 > koushinkyoku\ ;
+白熱灯 > hakunetsutou\ ;
+食料品 > shokuryouhin\ ;
+操車係 > soushagakari\ ;
+刺戟物 > shigekibutsu\ ;
+湿電池 > shitsudenchi\ ;
+観掌術 > kanshoujutsu\ ;
+真骨頂 > shinkotchou\ ;
+必要品 > hitsuyouhin\ ;
+画世的 > kakuseiteki\ ;
+熨斗袋 > noshibukuro\ ;
+測地学 > sokuchigaku\ ;
+雁木鑢 > gangiyasuri\ ;
+再割引 > saiwaribiki\ ;
+奉献式 > houkenshiki\ ;
+初誕生 > hatsutanjou\ ;
+三本足 > sanbon''ashi\ ;
+判断力 > handanryoku\ ;
+協調性 > kyouchousei\ ;
+天道乾 > tentouboshi\ ;
+白日夢 > hakujitsumu\ ;
+分析表 > bunsekihyou\ ;
+承諾書 > shoudakusho\ ;
+少食家 > shoushokuka\ ;
+仮執行 > karishikkou\ ;
+握力計 > akuryokukei\ ;
+不足勝 > fusokugachi\ ;
+後進国 > koushinkoku\ ;
+洗眼薬 > sengan''yaku\ ;
+復習文 > fukushuubun\ ;
+止血帯 > shiketsutai\ ;
+下宿料 > geshukuryou\ ;
+重量級 > juuryoukyuu\ ;
+前進軸 > zenshinjiku\ ;
+鉄石心 > tessekishin\ ;
+甘茶蔓 > amachadzuru\ ;
+署名式 > shomeishiki\ ;
+人心地 > hitogokochi\ ;
+囚人服 > shuujinfuku\ ;
+律儀者 > richigimono\ ;
+雁木車 > gangiguruma\ ;
+憂欝症 > yuuutsushou\ ;
+実験式 > jikkenshiki\ ;
+狂信者 > kyoushinsha\ ;
+民族的 > minzokuteki\ ;
+発言者 > hatsugensha\ ;
+単縦列 > tanjuuretsu\ ;
+三人組 > san''ningumi\ ;
+黒斑病 > kokuhanbyou\ ;
+悪悪戯 > waruitazura\ ;
+実用品 > jitsuyouhin\ ;
+大腿骨 > daitaikotsu\ ;
+水蜜桃 > suimitsutou\ ;
+漂流船 > hyouryuusen\ ;
+頸動脈 > keidoumyaku\ ;
+生兵法 > namabyouhou\ ;
+烏羽色 > karasubairo\ ;
+弟弟子 > otoutodeshi\ ;
+劇文学 > gekibungaku\ ;
+加薬飯 > kayakumeshi\ ;
+北半球 > kitahankyuu\ ;
+集中線 > shuuchuusen\ ;
+得業士 > tokugyoushi\ ;
+前進角 > zenshinkaku\ ;
+養殖池 > youshokuchi\ ;
+嗜虐性 > shigyakusei\ ;
+三人称 > san''ninshou\ ;
+中級品 > chuukyuuhin\ ;
+漂流者 > hyouryuusha\ ;
+誘惑物 > yuuwakumono\ ;
+頭蓋骨 > tougaikotsu\ ;
+発明品 > hatsumeihin\ ;
+失格者 > shikkakusha\ ;
+成績表 > seisekihyou\ ;
+注文先 > chuumonsaki\ ;
+既決囚 > kiketsushuu\ ;
+摂動論 > setsudouron\ ;
+伏流水 > fukuryuusui\ ;
+独裁的 > dokusaiteki\ ;
+高調子 > takachoushi\ ;
+立脚地 > rikkyakuchi\ ;
+再構築 > saikouchiku\ ;
+櫓太鼓 > yaguradaiko\ ;
+止血剤 > shiketsuzai\ ;
+両方共 > ryouhoutomo\ ;
+松葉杖 > matsubadzue\ ;
+沖積統 > chuusekitou\ ;
+仕事箱 > shigotobako\ ;
+氷醋酸 > hyousakusan\ ;
+書籍商 > shosekishou\ ;
+仮綴本 > karitojihon\ ;
+発電所 > hatsudensho\ ;
+官能的 > kan''nouteki\ ;
+末梢的 > masshouteki\ ;
+中間国 > chuukankoku\ ;
+思索的 > shisakuteki\ ;
+出身校 > shusshinkou\ ;
+灰青色 > haiseishoku\ ;
+航海術 > koukaijutsu\ ;
+小東京 > shoutoukyou\ ;
+千人力 > sen''ninriki\ ;
+人工芝 > jinkoushiba\ ;
+軽量級 > keiryoukyuu\ ;
+拘束圧 > kousokuatsu\ ;
+戦闘力 > sentouryoku\ ;
+球面鏡 > kyuumenkyou\ ;
+人形劇 > ningyougeki\ ;
+無骨者 > bukotsumono\ ;
+町奉行 > machibugyou\ ;
+空証文 > karashoumon\ ;
+氷酢酸 > hyousakusan\ ;
+放物線 > houbutsusen\ ;
+調子者 > choushimono\ ;
+現実感 > genjitsukan\ ;
+積分学 > sekibungaku\ ;
+現実性 > genjitsusei\ ;
+高電圧 > kouden''atsu\ ;
+学問的 > gakumonteki\ ;
+学究的 > gakkyuuteki\ ;
+収穫祭 > shuukakusai\ ;
+物理学 > butsurigaku\ ;
+垂直線 > suichokusen\ ;
+歴史学 > rekishigaku\ ;
+潤滑剤 > junkatsuzai\ ;
+組織学 > soshikigaku\ ;
+発電子 > hatsudenshi\ ;
+三尊仏 > sanzonbutsu\ ;
+引取人 > hikitorinin\ ;
+漂泊者 > hyouhakusha\ ;
+真田虫 > sanadamushi\ ;
+闇商人 > yamishounin\ ;
+入漁料 > nyuugyoryou\ ;
+七宝焼 > shippouyaki\ ;
+鋼鉄板 > koutetsuban\ ;
+優良株 > yuuryoukabu\ ;
+本格的 > honkakuteki\ ;
+復讐戦 > fukushuusen\ ;
+暴力団 > bouryokudan\ ;
+初診料 > shoshinryou\ ;
+口達者 > kuchidassha\ ;
+耐熱性 > tainetsusei\ ;
+増血剤 > zouketsuzai\ ;
+北北東 > hokuhokutou\ ;
+発言権 > hatsugenken\ ;
+急成長 > kyuuseichou\ ;
+出資額 > shusshigaku\ ;
+内分泌 > naibunpitsu\ ;
+四旬節 > shijunsetsu\ ;
+九官鳥 > kyuukanchou\ ;
+老人力 > roujinryoku\ ;
+建築士 > kenchikushi\ ;
+太極拳 > taikyokuken\ ;
+生番組 > namabangumi\ ;
+養殖場 > youshokujou\ ;
+虚脱感 > kyodatsukan\ ;
+象牙質 > zougeshitsu\ ;
+隆鼻術 > ryuubijutsu\ ;
+表面積 > hyoumenseki\ ;
+努力賞 > doryokushou\ ;
+十人並 > juunin''nami\ ;
+薬鑵頭 > yakan''atama\ ;
+商売筋 > shoubaisuji\ ;
+港湾局 > kouwankyoku\ ;
+水商売 > mizushoubai\ ;
+鉄道便 > tetsudoubin\ ;
+民族学 > minzokugaku\ ;
+歴史劇 > rekishigeki\ ;
+溝形鋼 > mizogatakou\ ;
+明晰夢 > meisekiyume\ ;
+造血剤 > zouketsuzai\ ;
+断続的 > danzokuteki\ ;
+式部省 > shikibushou\ ;
+極道者 > gokudoumono\ ;
+開校式 > kaikoushiki\ ;
+民約論 > min''yakuron\ ;
+防御率 > bougyoritsu\ ;
+表面的 > hyoumenteki\ ;
+計時係 > keijigakari\ ;
+後発品 > kouhatsuhin\ ;
+薩摩焼 > satsumayaki\ ;
+出身地 > shusshinchi\ ;
+護身術 > goshinjutsu\ ;
+与太話 > yotabanashi\ ;
+再入学 > sainyuugaku\ ;
+協約書 > kyouyakusho\ ;
+調子物 > choushimono\ ;
+三羽烏 > sanbagarasu\ ;
+訪問客 > houmonkyaku\ ;
+治験薬 > chiken''yaku\ ;
+性善説 > seizensetsu\ ;
+仕事柄 > shigotogara\ ;
+大根足 > daikon''ashi\ ;
+光瀬龍 > mitsuseryuu\ ;
+狼藉者 > rouzekimono\ ;
+心拍数 > shinpakusuu\ ;
+動物誌 > doubutsushi\ ;
+返却値 > henkyakuchi\ ;
+無駄話 > mudabanashi\ ;
+分子式 > bunshishiki\ ;
+降車口 > koushaguchi\ ;
+検出器 > kenshutsuki\ ;
+落葉松 > rakuyoushou\ ;
+極前線 > kyokuzensen\ ;
+超越点 > chouetsuten\ ;
+黒猩々 > kuroshoujou\ ;
+国慶節 > kokkeisetsu\ ;
+天産物 > tensanbutsu\ ;
+紳士録 > shinshiroku\ ;
+再入国 > sainyuukoku\ ;
+簡潔性 > kanketsusei\ ;
+切断面 > setsudanmen\ ;
+引込線 > hikikomisen\ ;
+粗忽者 > sokotsumono\ ;
+開会式 > kaikaishiki\ ;
+感傷的 > kanshouteki\ ;
+市有物 > shiyuubutsu\ ;
+聖職者 > seishokusha\ ;
+中衣嚢 > nakagakushi\ ;
+独立語 > dokuritsugo\ ;
+育児室 > ikujishitsu\ ;
+繁殖地 > hanshokuchi\ ;
+一人称 > ichininshou\ ;
+長崎県 > nagasakiken\ ;
+電力計 > denryokukei\ ;
+製氷皿 > seihyouzara\ ;
+主税局 > shuzeikyoku\ ;
+接続語 > setsuzokugo\ ;
+特集号 > tokushuugou\ ;
+黒褐色 > kokkasshoku\ ;
+中国人 > chuugokujin\ ;
+従属国 > juuzokukoku\ ;
+口返答 > kuchihentou\ ;
+減衰率 > gensuiritsu\ ;
+導電率 > doudenritsu\ ;
+一了簡 > ichiryoukan\ ;
+再輸出 > saiyushutsu\ ;
+青銅色 > seidoushoku\ ;
+隊商宿 > taishouyado\ ;
+式次第 > shikishidai\ ;
+生産物 > seisanbutsu\ ;
+幻覚症 > genkakushou\ ;
+投手力 > toushuryoku\ ;
+閉会式 > heikaishiki\ ;
+沖積層 > chuusekisou\ ;
+催眠術 > saiminjutsu\ ;
+蝙蝠傘 > koumorigasa\ ;
+向日性 > kounichisei\ ;
+吸取紙 > suitorigami\ ;
+憂鬱症 > yuuutsushou\ ;
+高圧的 > kouatsuteki\ ;
+有力者 > yuuryokusha\ ;
+別問題 > betsumondai\ ;
+代数式 > daisuushiki\ ;
+入港料 > nyuukouryou\ ;
+無宿者 > mushukumono\ ;
+原子力 > genshiryoku\ ;
+成文律 > seibunritsu\ ;
+男一匹 > otokoippiki\ ;
+塞栓症 > sokusenshou\ ;
+商売柄 > shoubaigara\ ;
+腹足類 > fukusokurui\ ;
+東印度 > higashiindo\ ;
+資本力 > shihonryoku\ ;
+祇園祭 > gionmatsuri\ ;
+上京中 > joukyouchuu\ ;
+催眠薬 > saimin''yaku\ ;
+現象学 > genshougaku\ ;
+秋津島 > akitsushima\ ;
+羊小屋 > hitsujigoya\ ;
+装飾品 > soushokuhin\ ;
+千日手 > sen''nichite\ ;
+植民地 > shokuminchi\ ;
+外分泌 > gaibunpitsu\ ;
+隣近所 > tonarikinjo\ ;
+対頂角 > taichoukaku\ ;
+肩甲骨 > kenkoukotsu\ ;
+腰弁当 > koshibentou\ ;
+口巧者 > kuchigousha\ ;
+不世出 > fuseishutsu\ ;
+先日付 > sakihidzuke\ ;
+透視力 > toushiryoku\ ;
+創設者 > sousetsusha\ ;
+金魚鉢 > kingyobachi\ ;
+衒学的 > gengakuteki\ ;
+金石学 > kinsekigaku\ ;
+野菜畑 > yasaibatake\ ;
+直感的 > chokkanteki\ ;
+動物相 > doubutsusou\ ;
+賃仕事 > chinshigoto\ ;
+特許主 > tokkyonushi\ ;
+奉納物 > hounoubutsu\ ;
+保釈中 > hoshakuchuu\ ;
+青藍色 > seiranshoku\ ;
+脅迫者 > kyouhakusha\ ;
+動物界 > doubutsukai\ ;
+通行上 > tsuukoudome\ ;
+強奪者 > goudatsusha\ ;
+脅迫罪 > kyouhakuzai\ ;
+団結権 > danketsuken\ ;
+約半年 > yakuhan''nen\ ;
+投票箱 > touhyoubako\ ;
+素人芸 > shiroutogei\ ;
+積極性 > sekkyokusei\ ;
+極座標 > kyokuzahyou\ ;
+寝正月 > neshougatsu\ ;
+浚渫機 > shunsetsuki\ ;
+翼面積 > yokumenseki\ ;
+総目録 > soumokuroku\ ;
+核反応 > kakuhan''nou\ ;
+制酸薬 > seisan''yaku\ ;
+超人的 > choujinteki\ ;
+第一流 > daiichiryuu\ ;
+足拍子 > ashibyoushi\ ;
+弱材料 > yowazairyou\ ;
+接触線 > sesshokusen\ ;
+役力士 > yakurikishi\ ;
+統轄者 > toukatsusha\ ;
+仕事中 > shigotochuu\ ;
+土百姓 > dobyakushou\ ;
+文学賞 > bungakushou\ ;
+招請国 > shouseikoku\ ;
+総収入 > soushuunyuu\ ;
+測量船 > sokuryousen\ ;
+借地権 > shakuchiken\ ;
+沖積世 > chuusekisei\ ;
+口述書 > koujutsusho\ ;
+殉職者 > junshokusha\ ;
+病虫害 > byouchuugai\ ;
+技術的 > gijutsuteki\ ;
+小説家 > shousetsuka\ ;
+特約店 > tokuyakuten\ ;
+交通量 > koutsuuryou\ ;
+道案内 > michian''nai\ ;
+道普請 > michibushin\ ;
+好色者 > koushokusha\ ;
+消臭剤 > shoushuuzai\ ;
+独善的 > dokuzenteki\ ;
+解像力 > kaizouryoku\ ;
+浸透圧 > shintouatsu\ ;
+熱血漢 > nekketsukan\ ;
+岩石学 > gansekigaku\ ;
+蜜柑畑 > mikanbatake\ ;
+烏天狗 > karasutengu\ ;
+紳士的 > shinshiteki\ ;
+窒息死 > chissokushi\ ;
+三大節 > sandaisetsu\ ;
+活断層 > katsudansou\ ;
+目鼻立 > mehanadachi\ ;
+周期律 > shuukiritsu\ ;
+退紅色 > taikoushoku\ ;
+撮像管 > satsuzoukan\ ;
+腹八分 > harahachibu\ ;
+進入路 > shin''nyuuro\ ;
+背日性 > haijitsusei\ ;
+間奏曲 > kansoukyoku\ ;
+指南役 > shinan''yaku\ ;
+脅迫状 > kyouhakujou\ ;
+功名心 > koumyoushin\ ;
+回教国 > kaikyoukoku\ ;
+骨膜炎 > kotsumakuen\ ;
+沢庵漬 > takuandzuke\ ;
+根切虫 > nekirimushi\ ;
+送料共 > souryoutomo\ ;
+張本人 > chouhon''nin\ ;
+乗車口 > joushaguchi\ ;
+一日路 > ichinichiji\ ;
+地質図 > chishitsuzu\ ;
+立明戦 > ritsumeisen\ ;
+抽象論 > chuushouron\ ;
+仕訳表 > shiwakehyou\ ;
+国税庁 > kokuzeichou\ ;
+性悪説 > seiakusetsu\ ;
+懐郷病 > kaikyoubyou\ ;
+柑橘類 > kankitsurui\ ;
+一音節 > ichionsetsu\ ;
+肩胛骨 > kenkoukotsu\ ;
+脱炭酸 > datsutansan\ ;
+新技術 > shingijutsu\ ;
+逆探知 > gyakutanchi\ ;
+拾得者 > shuutokusha\ ;
+宝物殿 > houmotsuden\ ;
+喫煙席 > kitsuenseki\ ;
+冷血漢 > reiketsukan\ ;
+主力艦 > shuryokukan\ ;
+車大工 > kurumadaiku\ ;
+過食症 > kashokushou\ ;
+宿命論 > shukumeiron\ ;
+入金票 > nyuukinhyou\ ;
+花屋敷 > hanayashiki\ ;
+共白髪 > tomoshiraga\ ;
+口座係 > kouzakakari\ ;
+生存率 > seizonritsu\ ;
+熊本県 > kumamotoken\ ;
+直銭形 > chokusenkei\ ;
+動物性 > doubutsusei\ ;
+原爆症 > genbakushou\ ;
+電動式 > dendoushiki\ ;
+生産力 > seisanryoku\ ;
+副牧師 > fukubokushi\ ;
+聖餐式 > seisanshiki\ ;
+逆関数 > gyakukansuu\ ;
+七五三 > shichigosan\ ;
+駐留軍 > chuuryuugun\ ;
+唯物論 > yuibutsuron\ ;
+旅商人 > tabishounin\ ;
+技術料 > gijutsuryou\ ;
+練習帳 > renshuuchou\ ;
+造石高 > zoukokudaka\ ;
+軍隊式 > guntaishiki\ ;
+翻訳者 > hon''yakusha\ ;
+潤目鰯 > urumeiwashi\ ;
+茶褐色 > chakasshoku\ ;
+確実度 > kakujitsudo\ ;
+総力戦 > souryokusen\ ;
+好色漢 > koushokukan\ ;
+初投稿 > hatsutoukou\ ;
+万万一 > manman''ichi\ ;
+紳士服 > shinshifuku\ ;
+一仕事 > hitoshigoto\ ;
+嗅神経 > kyuushinkei\ ;
+継続的 > keizokuteki\ ;
+文学的 > bungakuteki\ ;
+六重唱 > rokujuushou\ ;
+玄人筋 > kuroutosuji\ ;
+囃子方 > hayashikata\ ;
+大人物 > daijinbutsu\ ;
+同系色 > doukeishoku\ ;
+紅白粉 > benioshiroi\ ;
+宣誓式 > senseishiki\ ;
+中和熱 > chuuwanetsu\ ;
+消耗的 > shoukouteki\ ;
+攻撃的 > kougekiteki\ ;
+埋蔵物 > maizoubutsu\ ;
+副読本 > fukudokuhon\ ;
+麝香鼠 > jakounezumi\ ;
+木賃宿 > kichin''yado\ ;
+四角柱 > shikakuchuu\ ;
+中空壁 > chuukuukabe\ ;
+考証学 > koushougaku\ ;
+実証的 > jisshouteki\ ;
+救済策 > kyuusaisaku\ ;
+軍国調 > gunkokuchou\ ;
+白蝋病 > hakuroubyou\ ;
+狂犬病 > kyoukenbyou\ ;
+民衆的 > minshuuteki\ ;
+一両年 > ichiryounen\ ;
+大仏殿 > daibutsuden\ ;
+刹那的 > setsunateki\ ;
+勅任官 > chokuninkan\ ;
+双十節 > soujuusetsu\ ;
+好色本 > koushokubon\ ;
+窒化物 > chikkabutsu\ ;
+三角翼 > sankakuyoku\ ;
+成長株 > seichoukabu\ ;
+石材商 > sekizaishou\ ;
+供託金 > kyoutakukin\ ;
+猫額大 > byougakudai\ ;
+地方色 > chihoushoku\ ;
+生中継 > namachuukei\ ;
+吸収剤 > kyuushuuzai\ ;
+建蔽率 > kenpeiritsu\ ;
+客観的 > kyakkanteki\ ;
+律義者 > richigimono\ ;
+下級職 > kakyuushoku\ ;
+修飾語 > shuushokugo\ ;
+大食漢 > taishokukan\ ;
+冷笑的 > reishouteki\ ;
+支給額 > shikyuugaku\ ;
+不均質 > fukinshitsu\ ;
+代表的 > daihyouteki\ ;
+入道雲 > nyuudougumo\ ;
+共通点 > kyoutsuuten\ ;
+公徳心 > koutokushin\ ;
+形式論 > keishikiron\ ;
+金環食 > kinkanshoku\ ;
+出札所 > shussatsujo\ ;
+北極海 > hokkyokukai\ ;
+行官庁 > gyoukanchou\ ;
+保身術 > hoshinjutsu\ ;
+鑑識眼 > kanshikigan\ ;
+北極洋 > hokkyokuyou\ ;
+彫刻界 > choukokukai\ ;
+馬鹿話 > bakabanashi\ ;
+物納税 > butsunouzei\ ;
+下女中 > shimojochuu\ ;
+地下室 > chikashitsu\ ;
+貸本屋 > kashihon''ya\ ;
+鍾乳洞 > shounyuudou\ ;
+職員録 > shokuinroku\ ;
+梯子酒 > hashigozake\ ;
+滞在客 > taizaikyaku\ ;
+蓄電池 > chikudenchi\ ;
+試掘者 > shikutsusha\ ;
+大学寮 > daigakuryou\ ;
+姫小松 > himekomatsu\ ;
+真実味 > shinjitsumi\ ;
+旅役者 > tabiyakusha\ ;
+国民的 > kokuminteki\ ;
+戦没者 > senbotsusha\ ;
+流行病 > ryuukoubyou\ ;
+彫刻版 > choukokuban\ ;
+周旋業 > shuusengyou\ ;
+団扇虫 > uchiwamushi\ ;
+口小言 > kuchikogoto\ ;
+任命式 > ninmeishiki\ ;
+電力債 > denryokusai\ ;
+力動的 > rikidouteki\ ;
+夏帽子 > natsuboushi\ ;
+睡眠薬 > suimin''yaku\ ;
+卸相場 > oroshisouba\ ;
+印刷業 > insatsugyou\ ;
+伝導率 > dendouritsu\ ;
+蛸入道 > takonyuudou\ ;
+談話室 > danwashitsu\ ;
+安月給 > yasugekkyuu\ ;
+北極星 > hokkyokusei\ ;
+御霊代 > mitamashiro\ ;
+測量士 > sokuryoushi\ ;
+出願時 > shutsuganji\ ;
+三角琴 > sankakugoto\ ;
+鉄条網 > tetsujoumou\ ;
+翻訳権 > hon''yakuken\ ;
+玉杓子 > tamajakushi\ ;
+工業国 > kougyoukoku\ ;
+周旋料 > shuusenryou\ ;
+追撃戦 > tsuigekisen\ ;
+傷病兵 > shoubyouhei\ ;
+彼岸桜 > higanzakura\ ;
+一時払 > ichijibarai\ ;
+内容物 > naiyoubutsu\ ;
+無一物 > muichimotsu\ ;
+労働力 > roudouryoku\ ;
+若竹亭 > wakataketei\ ;
+翻訳書 > hon''yakusho\ ;
+到着駅 > touchakueki\ ;
+少国民 > shoukokumin\ ;
+生学問 > namagakumon\ ;
+今月分 > kongetsubun\ ;
+分数式 > bunsuushiki\ ;
+授賞式 > jushoushiki\ ;
+掌中本 > shouchuubon\ ;
+省力化 > shouryokuka\ ;
+代表格 > daihyoukaku\ ;
+昼興行 > hirukougyou\ ;
+黙示録 > mokushiroku\ ;
+検察官 > kensatsukan\ ;
+供託者 > kyoutakusha\ ;
+海産物 > kaisanbutsu\ ;
+褪紅色 > taikoushoku\ ;
+返信用 > henshin''you\ ;
+遁走曲 > tonsoukyoku\ ;
+辻強盗 > tsujigoutou\ ;
+公式戦 > koushikisen\ ;
+金環蝕 > kinkanshoku\ ;
+靴一足 > kutsuissoku\ ;
+浪花節 > naniwabushi\ ;
+各大学 > kakudaigaku\ ;
+総退却 > soutaikyaku\ ;
+国民服 > kokuminfuku\ ;
+実在論 > jitsuzairon\ ;
+救急車 > kyuukyuusha\ ;
+間接税 > kansetsuzei\ ;
+乱開発 > rankaihatsu\ ;
+所帯主 > shotainushi\ ;
+防寒靴 > boukangutsu\ ;
+三角柱 > sankakuchuu\ ;
+仕訳帳 > shiwakechou\ ;
+粘着性 > nenchakusei\ ;
+密造酒 > mitsuzoushu\ ;
+一夜漬 > ichiyadzuke\ ;
+斜角柱 > shakakuchuu\ ;
+対照的 > taishouteki\ ;
+役人風 > yakuninkaze\ ;
+船舶業 > senpakugyou\ ;
+水道局 > suidoukyoku\ ;
+始発駅 > shihatsueki\ ;
+北極圏 > hokkyokuken\ ;
+日用品 > nichiyouhin\ ;
+反逆者 > hangyakusha\ ;
+登録済 > tourokuzumi\ ;
+専売局 > senbaikyoku\ ;
+権力者 > kenryokusha\ ;
+恒久的 > koukyuuteki\ ;
+反逆罪 > hangyakuzai\ ;
+特等席 > tokutouseki\ ;
+内服薬 > naifukuyaku\ ;
+臆病風 > okubyoukaze\ ;
+供給者 > kyoukyuusha\ ;
+彫刻師 > choukokushi\ ;
+求人難 > kyuujin''nan\ ;
+頚動脈 > keidoumyaku\ ;
+試掘権 > shikutsuken\ ;
+在京中 > zaikyouchuu\ ;
+方程式 > houteishiki\ ;
+静力学 > seirikigaku\ ;
+一覧表 > ichiranhyou\ ;
+北朝鮮 > kitachousen\ ;
+百千鳥 > momochidori\ ;
+銃剣術 > juukenjutsu\ ;
+納骨堂 > noukotsudou\ ;
+耳小骨 > jishoukotsu\ ;
+大静脈 > daijoumyaku\ ;
+経済力 > keizairyoku\ ;
+学協会 > gakukyoukai\ ;
+中心点 > chuushinten\ ;
+北極光 > hokkyokukou\ ;
+食品店 > shokuhinten\ ;
+領収書 > ryoushuusho\ ;
+通知表 > tsuuchihyou\ ;
+連発銃 > renpatsujuu\ ;
+攻撃側 > kougekigawa\ ;
+大中小 > daichuushou\ ;
+平均律 > heikinritsu\ ;
+赤棟蛇 > yamakagashi\ ;
+観念的 > kan''nenteki\ ;
+専門職 > senmonshoku\ ;
+共進会 > kyoushinkai\ ;
+信用状 > shin''youjou\ ;
+織物業 > orimonogyou\ ;
+超特急 > choutokkyuu\ ;
+返信料 > henshinryou\ ;
+壁新聞 > kabeshinbun\ ;
+融解熱 > yuukainetsu\ ;
+節博士 > fushihakase\ ;
+見物人 > kenbutsunin\ ;
+登録料 > tourokuryou\ ;
+周旋人 > shuusen''nin\ ;
+高麗芝 > kouraishiba\ ;
+不親切 > fushinsetsu\ ;
+親告罪 > shinkokuzai\ ;
+蔦紅葉 > tsutamomiji\ ;
+五目鮨 > gomokuzushi\ ;
+編集長 > henshuuchou\ ;
+出版業 > shuppangyou\ ;
+調教師 > choukyoushi\ ;
+進駐軍 > shinchuugun\ ;
+別動隊 > betsudoutai\ ;
+逆噴射 > gyakufunsha\ ;
+二口目 > futakuchime\ ;
+逆命題 > gyakumeidai\ ;
+粘着剤 > nenchakuzai\ ;
+生物界 > seibutsukai\ ;
+五目飯 > gomokumeshi\ ;
+採掘権 > saikutsuken\ ;
+全幅的 > zenpukuteki\ ;
+彫刻刀 > choukokutou\ ;
+研究心 > kenkyuushin\ ;
+独占的 > dokusenteki\ ;
+酸中毒 > sanchuudoku\ ;
+超新星 > choushinsei\ ;
+頂戴物 > choudaimono\ ;
+宿泊所 > shukuhakujo\ ;
+売却益 > baikyakueki\ ;
+構造式 > kouzoushiki\ ;
+代表作 > daihyousaku\ ;
+過失犯 > kashitsuhan\ ;
+紙一枚 > kamiichimai\ ;
+再認識 > saininshiki\ ;
+風物詩 > fuubutsushi\ ;
+実関数 > jitsukansuu\ ;
+大好物 > daikoubutsu\ ;
+乳濁液 > nyuudakueki\ ;
+水冷式 > suireishiki\ ;
+心配性 > shinpaishou\ ;
+後始末 > atoshimatsu\ ;
+全勢力 > zenseiryoku\ ;
+離心率 > rishinritsu\ ;
+供給源 > kyoukyuugen\ ;
+大文節 > daibunsetsu\ ;
+一夜妻 > hitoyodzuma\ ;
+結合子 > ketsugoushi\ ;
+死亡率 > shibouritsu\ ;
+時局柄 > jikyokugara\ ;
+配当率 > haitouritsu\ ;
+整骨師 > seikotsushi\ ;
+関税率 > kanzeiritsu\ ;
+中毒死 > chuudokushi\ ;
+最前列 > saizenretsu\ ;
+御所車 > goshoguruma\ ;
+内曲球 > naikyokkyuu\ ;
+解散説 > kaisansetsu\ ;
+建造物 > kenzoubutsu\ ;
+献血車 > kenketsusha\ ;
+小品集 > shouhinshuu\ ;
+霊安室 > reianshitsu\ ;
+離着陸 > richakuriku\ ;
+高野聖 > kouyahijiri\ ;
+整髪剤 > seihatsuzai\ ;
+処世術 > shoseijutsu\ ;
+八幡宮 > hachimanguu\ ;
+歌唱力 > kashouryoku\ ;
+回折損 > kaisetsuson\ ;
+骨仕事 > honeshigoto\ ;
+臆病者 > okubyoumono\ ;
+朝飯前 > asameshimae\ ;
+刊行物 > kankoubutsu\ ;
+眼鏡橋 > meganebashi\ ;
+購入先 > kounyuusaki\ ;
+弘仁格 > kouninkyaku\ ;
+旧大陸 > kyuutairiku\ ;
+診察日 > shinsatsubi\ ;
+東宮職 > touguushoku\ ;
+警察署 > keisatsusho\ ;
+冗談口 > joudanguchi\ ;
+織物商 > orimonoshou\ ;
+八辺形 > hachihenkei\ ;
+針仕事 > harishigoto\ ;
+好人物 > koujinbutsu\ ;
+征服欲 > seifukuyoku\ ;
+解説者 > kaisetsusha\ ;
+広告業 > koukokugyou\ ;
+創立者 > souritsusha\ ;
+解熱薬 > genetsuyaku\ ;
+日曜版 > nichiyouban\ ;
+新快速 > shinkaisoku\ ;
+中年者 > chuunenmono\ ;
+戴冠式 > taikanshiki\ ;
+軽業師 > karuwazashi\ ;
+中心地 > chuushinchi\ ;
+商慣習 > shoukanshuu\ ;
+生物戦 > seibutsusen\ ;
+救急法 > kyuukyuuhou\ ;
+食前酒 > shokuzenshu\ ;
+深夜族 > shin''yazoku\ ;
+迫撃砲 > hakugekihou\ ;
+進軍中 > shingunchuu\ ;
+媒酌人 > baishakunin\ ;
+両性的 > ryouseiteki\ ;
+潜勢力 > senseiryoku\ ;
+武骨者 > bukotsumono\ ;
+保健室 > hokenshitsu\ ;
+広告料 > koukokuryou\ ;
+速力度 > sokuryokudo\ ;
+盆提灯 > bondjouchin\ ;
+聴神経 > choushinkei\ ;
+超大国 > choutaikoku\ ;
+出版元 > shuppanmoto\ ;
+馬鹿力 > bakadjikara\ ;
+陸半球 > rikuhankyuu\ ;
+統率者 > tousotsusha\ ;
+公共心 > koukyoushin\ ;
+中共軍 > chuukyougun\ ;
+漂白剤 > hyouhakuzai\ ;
+収入源 > shuunyuugen\ ;
+殿様風 > tonosamafuu\ ;
+心配事 > shinpaigoto\ ;
+太陽熱 > taiyounetsu\ ;
+判決文 > hanketsubun\ ;
+信仰的 > shinkouteki\ ;
+膝拍子 > hizabyoushi\ ;
+跡始末 > atoshimatsu\ ;
+盲目的 > moumokuteki\ ;
+神通力 > jintsuuriki\ ;
+恐妻病 > kyousaibyou\ ;
+忠実度 > chuujitsudo\ ;
+信任状 > shin''ninjou\ ;
+新参者 > shinzanmono\ ;
+真犯人 > shinhan''nin\ ;
+警察犬 > keisatsuken\ ;
+叢時雨 > murashigure\ ;
+海食洞 > kaishokudou\ ;
+参列者 > sanretsusha\ ;
+生物圏 > seibutsuken\ ;
+供給地 > kyoukyuuchi\ ;
+干渉縞 > kanshoujima\ ;
+独創的 > dokusouteki\ ;
+染色体 > senshokutai\ ;
+座頭鯨 > zatoukujira\ ;
+目的論 > mokutekiron\ ;
+省略時 > shouryakuji\ ;
+石炭殻 > sekitangara\ ;
+分裂性 > bunretsusei\ ;
+短縮形 > tanshukukei\ ;
+有職者 > yuushokusha\ ;
+親和力 > shinwaryoku\ ;
+先々月 > sensengetsu\ ;
+有体物 > yuutaibutsu\ ;
+短絡的 > tanrakuteki\ ;
+魅力的 > miryokuteki\ ;
+化学式 > kagakushiki\ ;
+太陽日 > taiyoujitsu\ ;
+野球熱 > yakyuunetsu\ ;
+警察権 > keisatsuken\ ;
+熱気球 > netsukikyuu\ ;
+空想力 > kuusouryoku\ ;
+静岡県 > shizuokaken\ ;
+反逆人 > hangyakunin\ ;
+染髪剤 > senpatsuzai\ ;
+全身病 > zenshinbyou\ ;
+腹話術 > fukuwajutsu\ ;
+流量計 > ryuuryoukei\ ;
+線織面 > senshikimen\ ;
+完結編 > kanketsuhen\ ;
+学生証 > gakuseishou\ ;
+造幣局 > zouheikyoku\ ;
+説明書 > setsumeisho\ ;
+自給率 > jikyuuritsu\ ;
+打物師 > uchimonoshi\ ;
+惨殺者 > zansatsusha\ ;
+磯巾着 > isoginchaku\ ;
+証人席 > shouninseki\ ;
+若白髪 > wakashiraga\ ;
+数学的 > suugakuteki\ ;
+直円柱 > chokuenchuu\ ;
+説明文 > setsumeibun\ ;
+水産物 > suisanbutsu\ ;
+教則本 > kyousokubon\ ;
+乙女心 > otomegokoro\ ;
+戦勝国 > senshoukoku\ ;
+南北朝 > nanbokuchou\ ;
+幻想曲 > gensoukyoku\ ;
+旅興行 > tabikougyou\ ;
+豆電球 > mamedenkyuu\ ;
+解説書 > kaisetsusho\ ;
+翼手目 > yokushumoku\ ;
+婚約者 > kon''yakusha\ ;
+郡役所 > gun''yakusho\ ;
+知識層 > chishikisou\ ;
+撞木鮫 > shumokuzame\ ;
+硼酸末 > housanmatsu\ ;
+妖術者 > youjutsusha\ ;
+余白頁 > yohakupeeji\ ;
+統一的 > touitsuteki\ ;
+身障者 > shinshousha\ ;
+食卓塩 > shokutakuen\ ;
+八字髭 > hachijihige\ ;
+復活祭 > fukkatsusai\ ;
+主産物 > shusanbutsu\ ;
+美術的 > bijutsuteki\ ;
+珍現象 > chingenshou\ ;
+三稜鏡 > sanryoukyou\ ;
+大陸棚 > tairikudana\ ;
+殿様芸 > tonosamagei\ ;
+海食崖 > kaishokugai\ ;
+元禄袖 > genrokusode\ ;
+文教族 > bunkyouzoku\ ;
+湿度計 > shitsudokei\ ;
+召集者 > shoushuusha\ ;
+八極拳 > hakkyokuken\ ;
+信仰心 > shinkoushin\ ;
+人一倍 > hitoichibai\ ;
+合衆国 > gasshuukoku\ ;
+機関室 > kikanshitsu\ ;
+冷却液 > reikyakueki\ ;
+漁獲高 > gyokakudaka\ ;
+公用物 > kouyoubutsu\ ;
+単発銃 > tanpatsujuu\ ;
+冷却水 > reikyakusui\ ;
+献立表 > kondatehyou\ ;
+若草色 > wakakusairo\ ;
+三国一 > sangokuichi\ ;
+督促状 > tokusokujou\ ;
+仮受取 > kariuketori\ ;
+袋小路 > fukurokouji\ ;
+警察官 > keisatsukan\ ;
+自然律 > shizenritsu\ ;
+職務給 > shokumukyuu\ ;
+療養中 > ryouyouchuu\ ;
+合成物 > gouseibutsu\ ;
+三行半 > mikudarihan\ ;
+行政学 > gyouseigaku\ ;
+実行力 > jikkouryoku\ ;
+長火鉢 > nagahibachi\ ;
+海食台 > kaishokudai\ ;
+郵便物 > yuubinbutsu\ ;
+空気枕 > kuukimakura\ ;
+奨学金 > shougakukin\ ;
+公生活 > kouseikatsu\ ;
+遮蔽物 > shaheibutsu\ ;
+絹織物 > kinuorimono\ ;
+芸術論 > geijutsuron\ ;
+薬効物 > yakkoubutsu\ ;
+庭仕事 > niwashigoto\ ;
+悪質化 > akushitsuka\ ;
+知識人 > chishikijin\ ;
+白内障 > hakunaishou\ ;
+楽天的 > rakutenteki\ ;
+別勘定 > betsukanjou\ ;
+金杓子 > kanajakushi\ ;
+長大息 > choutaisoku\ ;
+聴取料 > choushuryou\ ;
+頸静脈 > keijoumyaku\ ;
+漁獲量 > gyokakuryou\ ;
+語学力 > gogakuryoku\ ;
+準備室 > junbishitsu\ ;
+中年増 > chuudoshima\ ;
+背筋力 > haikinryoku\ ;
+所有物 > shoyuubutsu\ ;
+産土神 > ubusunagami\ ;
+暗赤色 > ansekishoku\ ;
+仕立物 > shitatemono\ ;
+七回忌 > shichikaiki\ ;
+溶解熱 > youkainetsu\ ;
+米十粒 > komejuuryuu\ ;
+特注品 > tokuchuuhin\ ;
+別働隊 > betsudoutai\ ;
+古新聞 > furushinbun\ ;
+配達人 > haitatsunin\ ;
+京人形 > kyouningyou\ ;
+完結文 > kanketsubun\ ;
+反対色 > hantaishoku\ ;
+商品学 > shouhingaku\ ;
+入射角 > nyuushakaku\ ;
+消防庁 > shoubouchou\ ;
+奇麗所 > kireidokoro\ ;
+山吹色 > yamabukiiro\ ;
+打撃率 > dagekiritsu\ ;
+請求額 > seikyuugaku\ ;
+百年祭 > hyakunensai\ ;
+抑留者 > yokuryuusha\ ;
+食連星 > shokurensei\ ;
+落札値 > rakusatsune\ ;
+自然力 > shizenryoku\ ;
+秘書室 > hishoshitsu\ ;
+千秋楽 > senshuuraku\ ;
+探究心 > tankyuushin\ ;
+副社長 > fukushachou\ ;
+月例会 > getsureikai\ ;
+数日間 > suujitsukan\ ;
+命名式 > meimeishiki\ ;
+指導力 > shidouryoku\ ;
+感覚的 > kankakuteki\ ;
+再開発 > saikaihatsu\ ;
+入学難 > nyuugakunan\ ;
+分折学 > bunsekigaku\ ;
+若輩者 > jakuhaimono\ ;
+幅変調 > habahenchou\ ;
+小惑星 > shouwakusei\ ;
+人物像 > jinbutsuzou\ ;
+躁鬱病 > souutsubyou\ ;
+直輸入 > chokuyunyuu\ ;
+促進剤 > sokushinzai\ ;
+鼻出血 > bishukketsu\ ;
+急進党 > kyuushintou\ ;
+金婚式 > kinkonshiki\ ;
+満艦飾 > mankanshoku\ ;
+傍迷惑 > hatameiwaku\ ;
+昼食時 > chuushokuji\ ;
+芸術祭 > geijutsusai\ ;
+学生服 > gakuseifuku\ ;
+就業地 > shuugyouchi\ ;
+表示物 > hyoujibutsu\ ;
+転入生 > ten''nyuusei\ ;
+入学金 > nyuugakukin\ ;
+革新系 > kakushinkei\ ;
+陽極線 > youkyokusen\ ;
+出演者 > shutsuensha\ ;
+会議室 > kaigishitsu\ ;
+陸運局 > rikuunkyoku\ ;
+追徴金 > tsuichoukin\ ;
+殺菌力 > sakkinryoku\ ;
+投宿者 > toushukusha\ ;
+新庁舎 > shinchousha\ ;
+冷却剤 > reikyakuzai\ ;
+遊覧客 > yuurankyaku\ ;
+黄金虫 > koganemushi\ ;
+黒死病 > kokushibyou\ ;
+郵便局 > yuubinkyoku\ ;
+反射率 > hansharitsu\ ;
+教皇庁 > kyoukouchou\ ;
+若鳥丼 > wakadoridon\ ;
+美術商 > bijutsushou\ ;
+滴定量 > tekiteiryou\ ;
+神学者 > shingakusha\ ;
+密輸入 > mitsuyunyuu\ ;
+踏切番 > fumikiriban\ ;
+前奏曲 > zensoukyoku\ ;
+裸一貫 > hadakaikkan\ ;
+奏鳴曲 > soumeikyoku\ ;
+私生活 > shiseikatsu\ ;
+甲鉄艦 > koutetsukan\ ;
+心臓病 > shinzoubyou\ ;
+錬金術 > renkinjutsu\ ;
+黒内障 > kokunaishou\ ;
+有識者 > yuushikisha\ ;
+山津波 > yamatsunami\ ;
+袖珍本 > shuuchinbon\ ;
+先着順 > senchakujun\ ;
+実名詞 > jitsumeishi\ ;
+防食剤 > boushokuzai\ ;
+対称軸 > taishoujiku\ ;
+近日点 > kinjitsuten\ ;
+藍晶石 > ranshouseki\ ;
+女子供 > on''nakodomo\ ;
+没食子 > mosshokushi\ ;
+修繕中 > shuuzenchuu\ ;
+耳学問 > mimigakumon\ ;
+長粒米 > chouryuumai\ ;
+神信心 > kamishinjin\ ;
+奨学生 > shougakusei\ ;
+観兵式 > kanpeishiki\ ;
+若年型 > jakunengata\ ;
+鼠海豚 > nezumiiruka\ ;
+集積場 > shuusekijou\ ;
+指人形 > yubiningyou\ ;
+曲芸師 > kyokugeishi\ ;
+麦粒腫 > bakuryuushu\ ;
+目的地 > mokutekichi\ ;
+学生寮 > gakuseiryou\ ;
+合成力 > gouseiryoku\ ;
+提供側 > teikyougawa\ ;
+乗降客 > joukoukyaku\ ;
+内親王 > naishin''nou\ ;
+糞勉強 > kusobenkyou\ ;
+矢継早 > yatsugibaya\ ;
+変曲点 > henkyokuten\ ;
+長四角 > nagashikaku\ ;
+親切気 > shinsetsugi\ ;
+副神経 > fukushinkei\ ;
+葉緑体 > youryokutai\ ;
+菊人形 > kikuningyou\ ;
+玩弄物 > ganroubutsu\ ;
+口言葉 > kuchikotoba\ ;
+集合的 > shuugouteki\ ;
+割当額 > wariategaku\ ;
+常習的 > joushuuteki\ ;
+感圧紙 > kan''atsushi\ ;
+紅猿子 > benimashiko\ ;
+弾性率 > danseiritsu\ ;
+淡紅色 > tankoushoku\ ;
+柳行李 > yanagigouri\ ;
+流動的 > ryuudouteki\ ;
+環境庁 > kankyouchou\ ;
+昆虫学 > konchuugaku\ ;
+常日頃 > tsunehigoro\ ;
+比翼塚 > hiyokudzuka\ ;
+混成物 > konseibutsu\ ;
+溶解力 > youkairyoku\ ;
+教育長 > kyouikuchou\ ;
+焼却炉 > shoukyakuro\ ;
+白檀油 > byakudan''yu\ ;
+牽引力 > ken''inryoku\ ;
+観光局 > kankoukyoku\ ;
+入学者 > nyuugakusha\ ;
+国学者 > kokugakusha\ ;
+活動誌 > katsudoushi\ ;
+出土品 > shutsudohin\ ;
+紙表紙 > kamibyoushi\ ;
+観光客 > kankoukyaku\ ;
+共学制 > kyougakusei\ ;
+羞恥心 > shuuchishin\ ;
+虫眼鏡 > mushimegane\ ;
+言葉質 > kotobajichi\ ;
+学者膚 > gakushahada\ ;
+通信網 > tsuushinmou\ ;
+普及率 > fukyuuritsu\ ;
+千鳥足 > chidoriashi\ ;
+転轍手 > tentetsushu\ ;
+購買力 > koubairyoku\ ;
+学者肌 > gakushahada\ ;
+入賞者 > nyuushousha\ ;
+陸軍省 > rikugunshou\ ;
+仮出所 > karishussho\ ;
+古物商 > kobutsushou\ ;
+象徴詩 > shouchoushi\ ;
+下協議 > shitakyougi\ ;
+召集令 > shoushuurei\ ;
+照会先 > shoukaisaki\ ;
+堆積学 > taisekigaku\ ;
+読解力 > dokkairyoku\ ;
+腸結核 > choukekkaku\ ;
+年恰好 > toshikakkou\ ;
+通産省 > tsuusanshou\ ;
+通産相 > tsuusanshou\ ;
+督学官 > tokugakukan\ ;
+懐中物 > kaichuumono\ ;
+通信社 > tsuushinsha\ ;
+千石船 > sengokubune\ ;
+金牛宮 > kingyuukyuu\ ;
+接合子 > setsugoushi\ ;
+皇室費 > koushitsuhi\ ;
+追徴税 > tsuichouzei\ ;
+局外者 > kyokugaisha\ ;
+翌翌年 > yokuyokunen\ ;
+特別機 > tokubetsuki\ ;
+淡褐色 > tankasshoku\ ;
+偏執病 > henshuubyou\ ;
+学習者 > gakushuusha\ ;
+防音室 > bouonshitsu\ ;
+肉体的 > nikutaiteki\ ;
+料金表 > ryoukinhyou\ ;
+内陸国 > nairikukoku\ ;
+包容力 > houyouryoku\ ;
+出漁期 > shutsugyoki\ ;
+主人役 > shujin''yaku\ ;
+成功率 > seikouritsu\ ;
+公有物 > kouyuubutsu\ ;
+観艦式 > kankanshiki\ ;
+月夜茸 > tsukiyotake\ ;
+入学生 > nyuugakusei\ ;
+明後日 > myougonichi\ ;
+活動者 > katsudousha\ ;
+三原色 > sangenshoku\ ;
+偏執狂 > henshuukyou\ ;
+蒋介石 > shoukaiseki\ ;
+申告書 > shinkokusho\ ;
+編笠茸 > amigasatake\ ;
+小半日 > kohan''nichi\ ;
+表彰状 > hyoushoujou\ ;
+内証事 > naishougoto\ ;
+診断学 > shindangaku\ ;
+南極点 > nankyokuten\ ;
+曲射砲 > kyokushahou\ ;
+対称的 > taishouteki\ ;
+甲鉄板 > koutetsuban\ ;
+先発隊 > senpatsutai\ ;
+性生活 > seiseikatsu\ ;
+検閲官 > ken''etsukan\ ;
+流通税 > ryuutsuuzei\ ;
+洗濯糊 > sentakunori\ ;
+半直線 > hanchokusen\ ;
+洗濯籠 > sentakukago\ ;
+接合剤 > setsugouzai\ ;
+農産物 > nousanbutsu\ ;
+接受国 > setsujukoku\ ;
+南極海 > nankyokukai\ ;
+結膜炎 > ketsumakuen\ ;
+親睦会 > shinbokukai\ ;
+硫化物 > ryuukabutsu\ ;
+想像力 > souzouryoku\ ;
+芸術品 > geijutsuhin\ ;
+南極洋 > nankyokuyou\ ;
+再測量 > saisokuryou\ ;
+露出計 > roshutsukei\ ;
+留学生 > ryuugakusei\ ;
+水仕事 > mizushigoto\ ;
+学習用 > gakushuuyou\ ;
+注射針 > chuushabari\ ;
+観察者 > kansatsusha\ ;
+通信欄 > tsuushinran\ ;
+五月闇 > satsukiyami\ ;
+発着場 > hatchakujou\ ;
+輸出税 > yushutsuzei\ ;
+就職時 > shuushokuji\ ;
+着眼点 > chakuganten\ ;
+空冷式 > kuureishiki\ ;
+溶接工 > yousetsukou\ ;
+丸木橋 > marukibashi\ ;
+山形県 > yamagataken\ ;
+交霊術 > koureijutsu\ ;
+創造説 > souzousetsu\ ;
+招待席 > shoutaiseki\ ;
+雪上車 > setsujousha\ ;
+交響楽 > koukyougaku\ ;
+農業国 > nougyoukoku\ ;
+卓越風 > takuetsufuu\ ;
+鎮痛性 > chintsuusei\ ;
+認識論 > ninshikiron\ ;
+就寝前 > shuushinzen\ ;
+双曲線 > soukyokusen\ ;
+夏時刻 > natsujikoku\ ;
+夏大根 > natsudaikon\ ;
+村八分 > murahachibu\ ;
+傘伐林 > sanbatsurin\ ;
+常設館 > jousetsukan\ ;
+南極星 > nankyokusei\ ;
+神学士 > shingakushi\ ;
+上告審 > joukokushin\ ;
+先入観 > sen''nyuukan\ ;
+先入見 > sen''nyuuken\ ;
+洗濯物 > sentakumono\ ;
+万葉集 > man''youshuu\ ;
+満州国 > manshuukoku\ ;
+表忠塔 > hyouchuutou\ ;
+三重殺 > sanjuusatsu\ ;
+分泌液 > bunpitsueki\ ;
+隣接県 > rinsetsuken\ ;
+嘘八百 > usohappyaku\ ;
+舞踏室 > butoushitsu\ ;
+当局者 > toukyokusha\ ;
+緩衝国 > kanshoukoku\ ;
+藁人形 > waraningyou\ ;
+影響力 > eikyouryoku\ ;
+文節数 > bunsetsusuu\ ;
+悪推量 > waruzuiryou\ ;
+含有量 > gan''yuuryou\ ;
+誘電率 > yuudenritsu\ ;
+観察眼 > kansatsugan\ ;
+抛物線 > houbutsusen\ ;
+裏切者 > uragirimono\ ;
+防雪林 > bousetsurin\ ;
+天神髭 > tenshinhige\ ;
+殺害者 > satsugaisha\ ;
+教育省 > kyouikushou\ ;
+離乳食 > rinyuushoku\ ;
+教育的 > kyouikuteki\ ;
+特別区 > tokubetsuku\ ;
+財政力 > zaiseiryoku\ ;
+強硬策 > kyoukousaku\ ;
+新年号 > shin''nengou\ ;
+磯馴松 > sonarematsu\ ;
+入館料 > nyuukanryou\ ;
+物相飯 > mossoumeshi\ ;
+製革業 > seikakugyou\ ;
+中学生 > chuugakusei\ ;
+輸出港 > yushutsukou\ ;
+南極帯 > nankyokutai\ ;
+溶接剤 > yousetsuzai\ ;
+急病人 > kyuubyounin\ ;
+寄宿料 > kishukuryou\ ;
+高島田 > takashimada\ ;
+小正月 > koshougatsu\ ;
+動力計 > douryokukei\ ;
+極大値 > kyokudaichi\ ;
+出金額 > shukkingaku\ ;
+申告制 > shinkokusei\ ;
+子供達 > kodomotachi\ ;
+媒介物 > baikaibutsu\ ;
+黄道色 > koudoushoku\ ;
+三葉虫 > san''youchuu\ ;
+全質化 > zenshitsuka\ ;
+生活難 > seikatsunan\ ;
+細動脈 > saidoumyaku\ ;
+私有物 > shiyuubutsu\ ;
+複雑化 > fukuzatsuka\ ;
+勢力圏 > seiryokuken\ ;
+複複線 > fukufukusen\ ;
+新年会 > shin''nenkai\ ;
+不確実 > fukakujitsu\ ;
+鎮痛剤 > chintsuuzai\ ;
+怪人物 > kaijinbutsu\ ;
+通学生 > tsuugakusei\ ;
+爆心地 > bakushinchi\ ;
+始末書 > shimatsusho\ ;
+競争心 > kyousoushin\ ;
+剽軽者 > hyoukinmono\ ;
+腸閉塞 > chouheisoku\ ;
+軍当局 > guntoukyoku\ ;
+白子鳩 > shirakobato\ ;
+町役場 > machiyakuba\ ;
+不忠実 > fuchuujitsu\ ;
+博学者 > hakugakusha\ ;
+戦略上 > senryakujou\ ;
+南極圏 > nankyokuken\ ;
+両脚規 > ryoukyakuki\ ;
+共訳者 > kyouyakusha\ ;
+忍耐力 > nintairyoku\ ;
+集金人 > shuukin''nin\ ;
+十八金 > juuhachikin\ ;
+借用者 > shakuyousha\ ;
+持久力 > jikyuuryoku\ ;
+局地風 > kyokuchifuu\ ;
+発癌性 > hatsugansei\ ;
+揚陸料 > yourikuryou\ ;
+密貿易 > mitsuboueki\ ;
+通信員 > tsuushin''in\ ;
+冠動脈 > kandoumyaku\ ;
+変奏曲 > hensoukyoku\ ;
+表彰台 > hyoushoudai\ ;
+葬送曲 > sousoukyoku\ ;
+千分率 > senbunritsu\ ;
+丸一年 > maruichinen\ ;
+老廃物 > rouhaibutsu\ ;
+南極光 > nankyokukou\ ;
+皮算用 > kawazan''you\ ;
+追分節 > oiwakebushi\ ;
+徳川勢 > tokugawazei\ ;
+創造物 > souzoubutsu\ ;
+初航海 > hatsukoukai\ ;
+購読料 > koudokuryou\ ;
+得票数 > tokuhyousuu\ ;
+雪景色 > yukigeshiki\ ;
+精神的 > seishinteki\ ;
+徳川公 > tokugawakou\ ;
+活動家 > katsudousha\ ;
+自立心 > jiritsushin\ ;
+漸進的 > zenshinteki\ ;
+教会暦 > kyoukaireki\ ;
+殺人者 > satsujinsha\ ;
+精神病 > seishinbyou\ ;
+殺人罪 > satsujinzai\ ;
+成年式 > seinenshiki\ ;
+脱石油 > datsusekiyu\ ;
+先進国 > senshinkoku\ ;
+土団子 > tsuchidango\ ;
+混合物 > kongoubutsu\ ;
+軍楽長 > gungakuchou\ ;
+法律上 > houritsujou\ ;
+畜犬税 > chikukenzei\ ;
+梁山泊 > ryouzanpaku\ ;
+彫塑術 > chousojutsu\ ;
+代用食 > daiyoushoku\ ;
+並木道 > namikimichi\ ;
+帳本人 > chouhon''nin\ ;
+宝石箱 > housekibako\ ;
+卒業後 > sotsugyougo\ ;
+口角力 > kuchidzumou\ ;
+事業主 > jigyounushi\ ;
+自虐的 > jigyakuteki\ ;
+下相談 > shitasoudan\ ;
+禿頭病 > tokutoubyou\ ;
+弾着点 > danchakuten\ ;
+五月病 > gogatsubyou\ ;
+弾力性 > danryokusei\ ;
+核爆弾 > kakubakudan\ ;
+並木路 > namikimichi\ ;
+商業街 > shougyougai\ ;
+頭文字 > kashiramoji\ ;
+縮緬紙 > chirimenshi\ ;
+截断面 > setsudanmen\ ;
+南京虫 > nankinmushi\ ;
+裁決書 > saiketsusho\ ;
+核燃料 > kakunenryou\ ;
+逐字訳 > chikujiyaku\ ;
+一徹者 > ittetsumono\ ;
+御協力 > gokyouryoku\ ;
+係属中 > keizokuchuu\ ;
+病中吟 > byouchuugin\ ;
+極限値 > kyokugenchi\ ;
+教育学 > kyouikugaku\ ;
+電話室 > denwashitsu\ ;
+遠心力 > enshinryoku\ ;
+宮崎県 > miyazakiken\ ;
+商工業 > shoukougyou\ ;
+衝動的 > shoudouteki\ ;
+胆石症 > tansekishou\ ;
+輸出品 > yushutsuhin\ ;
+三眠蚕 > sanminkaiko\ ;
+間欠泉 > kanketsusen\ ;
+天龍川 > tenryuukawa\ ;
+教習生 > kyoushuusei\ ;
+隣接地 > rinsetsuchi\ ;
+発生率 > hasseiritsu\ ;
+葡萄畑 > budoubatake\ ;
+境界標 > kyoukaihyou\ ;
+空軍力 > kuugunryoku\ ;
+交声曲 > kouseikyoku\ ;
+現内閣 > gen''naikaku\ ;
+占星術 > senseijutsu\ ;
+香辛料 > koushinryou\ ;
+町道場 > machidoujou\ ;
+動力源 > douryokugen\ ;
+恒等式 > koutoushiki\ ;
+討伐軍 > toubatsugun\ ;
+表看板 > omotekanban\ ;
+濃青色 > nouseishoku\ ;
+殺人犯 > satsujinhan\ ;
+残念賞 > zan''nenshou\ ;
+脳充血 > noujuuketsu\ ;
+食人種 > shokujinshu\ ;
+赤褐色 > sekkasshoku\ ;
+興信録 > koushinroku\ ;
+電熱器 > den''netsuki\ ;
+作曲者 > sakkyokusha\ ;
+商標権 > shouhyouken\ ;
+常識人 > joushikijin\ ;
+観客層 > kankyakusou\ ;
+一重桜 > hitoezakura\ ;
+先先月 > sensengetsu\ ;
+地動説 > chidousetsu\ ;
+白亜質 > hakuashitsu\ ;
+膠着剤 > kouchakuzai\ ;
+一段落 > ichidanraku\ ;
+軍用鳩 > gun''youbato\ ;
+俗文学 > zokubungaku\ ;
+電圧計 > den''atsukei\ ;
+薬局方 > yakkyokuhou\ ;
+法制局 > houseikyoku\ ;
+薬学者 > yakugakusha\ ;
+係争物 > keisoubutsu\ ;
+鐘乳洞 > shounyuudou\ ;
+脱毛剤 > datsumouzai\ ;
+管轄権 > kankatsuken\ ;
+借用書 > shakuyousho\ ;
+奉公口 > houkouguchi\ ;
+放送局 > housoukyoku\ ;
+黄白色 > kohakushoku\ ;
+羽織袴 > haorihakama\ ;
+除幕式 > jomakushiki\ ;
+強制的 > kyouseiteki\ ;
+強心剤 > kyoushinzai\ ;
+生活環 > seikatsukan\ ;
+春一番 > haruichiban\ ;
+十八番 > juuhachiban\ ;
+終身官 > shuushinkan\ ;
+月長石 > getchouseki\ ;
+教職員 > kyoushokuin\ ;
+送別会 > soubetsukai\ ;
+出品国 > shuppinkoku\ ;
+南京町 > nankinmachi\ ;
+道徳的 > doutokuteki\ ;
+商業界 > shougyoukai\ ;
+収納額 > shuunougaku\ ;
+鼎立戦 > teiritsusen\ ;
+原則的 > gensokuteki\ ;
+傍聴料 > bouchouryou\ ;
+千円札 > sen''ensatsu\ ;
+定収入 > teishuunyuu\ ;
+六大州 > rokudaishuu\ ;
+割引券 > waribikiken\ ;
+住生活 > juuseikatsu\ ;
+前立腺 > zenritsusen\ ;
+写真集 > shashinshuu\ ;
+百万遍 > hyakumanben\ ;
+蝉時雨 > semishigure\ ;
+割引債 > waribikisai\ ;
+接着剤 > setchakuzai\ ;
+手術台 > shujutsudai\ ;
+防火扉 > boukatobira\ ;
+乱入者 > ran''nyuusha\ ;
+計画的 > keikakuteki\ ;
+調印式 > chouinshiki\ ;
+逆転層 > gyakutensou\ ;
+黄色虫 > koganemushi\ ;
+生活法 > seikatsuhou\ ;
+粘土質 > nendoshitsu\ ;
+逆輸入 > gyakuyunyuu\ ;
+新興国 > shinkoukoku\ ;
+創造力 > souzouryoku\ ;
+合目的 > goumokuteki\ ;
+新人賞 > shinjinshou\ ;
+頚静脈 > keijoumyaku\ ;
+電報局 > denpoukyoku\ ;
+三幕物 > sanmakumono\ ;
+白木蓮 > hakumokuren\ ;
+商業港 > shougyoukou\ ;
+薬罐頭 > yakan''atama\ ;
+一里塚 > ichiridzuka\ ;
+終身刑 > shuushinkei\ ;
+動力学 > dourikigaku\ ;
+節料理 > sechiryouri\ ;
+出品人 > shuppin''nin\ ;
+傍聴席 > bouchouseki\ ;
+不適切 > futekisetsu\ ;
+学際的 > gakusaiteki\ ;
+竜骨座 > ryuukotsuza\ ;
+仮条約 > karijouyaku\ ;
+階級章 > kaikyuushou\ ;
+抵抗力 > teikouryoku\ ;
+森林学 > shinringaku\ ;
+百万言 > hyakumangen\ ;
+化粧下 > keshoushita\ ;
+赤提灯 > akachouchin\ ;
+創造主 > souzounushi\ ;
+候孝賢 > houshaushen\ ;
+薬缶頭 > yakan''atama\ ;
+冬将軍 > fuyushougun\ ;
+独習書 > dokushuusho\ ;
+公証料 > koushouryou\ ;
+綿織物 > men''orimono\ ;
+先入主 > sen''nyuushu\ ;
+最終的 > saishuuteki\ ;
+本建築 > honkenchiku\ ;
+狗尾草 > enokorogusa\ ;
+行商人 > gyoushounin\ ;
+切分法 > setsubunhou\ ;
+小百姓 > kobyakushou\ ;
+心丈夫 > kokorojoubu\ ;
+鳥類学 > chouruigaku\ ;
+弱年者 > jakunenmono\ ;
+中隊長 > chuutaichou\ ;
+相談役 > soudan''yaku\ ;
+食事時 > shokujidoki\ ;
+八面体 > hachimentai\ ;
+原判決 > genhanketsu\ ;
+極地圏 > kyokuchiken\ ;
+監察官 > kansatsukan\ ;
+白玉粉 > shiratamako\ ;
+商業文 > shougyoubun\ ;
+天動説 > tendousetsu\ ;
+辻説法 > tsujiseppou\ ;
+煉丹術 > rentanjutsu\ ;
+西海岸 > nishikaigan\ ;
+急上昇 > kyuujoushou\ ;
+宝石商 > housekishou\ ;
+換算率 > kansanritsu\ ;
+建設者 > kensetsusha\ ;
+北々西 > hokuhokusei\ ;
+銀婚式 > ginkonshiki\ ;
+両脚器 > ryoukyakuki\ ;
+原動力 > gendouryoku\ ;
+俄景気 > niwakageiki\ ;
+悪戯者 > itazuramono\ ;
+大福帳 > daifukuchou\ ;
+時節柄 > jisetsugara\ ;
+吸血鬼 > kyuuketsuki\ ;
+糖尿病 > tounyoubyou\ ;
+転任先 > ten''ninsaki\ ;
+支配力 > shihairyoku\ ;
+単音節 > tan''onsetsu\ ;
+新聞種 > shinbundane\ ;
+弟々子 > otoutodeshi\ ;
+低丘陵 > teikyuuryou\ ;
+国際的 > kokusaiteki\ ;
+郷土色 > kyoudoshoku\ ;
+竜田姫 > tatsutahime\ ;
+小学館 > shougakukan\ ;
+使節団 > shisetsudan\ ;
+消息文 > shousokubun\ ;
+緋衣草 > higoromosou\ ;
+主計局 > shukeikyoku\ ;
+道徳心 > doutokushin\ ;
+未決囚 > miketsushuu\ ;
+愛唱曲 > aishoukyoku\ ;
+山棟蛇 > yamakagashi\ ;
+偵察隊 > teisatsutai\ ;
+発信側 > hasshingawa\ ;
+遠山里 > tooyamazato\ ;
+神経痛 > shinkeitsuu\ ;
+神経症 > shinkeishou\ ;
+神経病 > shinkeibyou\ ;
+定着液 > teichakueki\ ;
+弁証学 > benshougaku\ ;
+発信人 > hasshin''nin\ ;
+緑地帯 > ryokuchitai\ ;
+生活圏 > seikatsuken\ ;
+熱伝導 > netsudendou\ ;
+道徳学 > doutokugaku\ ;
+適格者 > tekikakusha\ ;
+図書室 > toshoshitsu\ ;
+観音様 > kan''nonsama\ ;
+結婚式 > kekkonshiki\ ;
+西洋式 > seiyoushiki\ ;
+男冥利 > otokomyouri\ ;
+上腕骨 > jouwankotsu\ ;
+生命力 > seimeiryoku\ ;
+硬骨漢 > koukotsukan\ ;
+商業地 > shougyouchi\ ;
+万年床 > man''nendoko\ ;
+講釈師 > koushakushi\ ;
+淡黄色 > tankoushoku\ ;
+三幅対 > sanpukutsui\ ;
+蛋白尿 > tanpakunyou\ ;
+刺激臭 > shigekishuu\ ;
+草鞋虫 > warajimushi\ ;
+金融業 > kin''yuugyou\ ;
+菜種油 > nataneabura\ ;
+雛人形 > hinaningyou\ ;
+無着陸 > muchakuriku\ ;
+上分別 > joufunbetsu\ ;
+大動脈 > daidoumyaku\ ;
+神無月 > kan''nadzuki\ ;
+幼馴染 > osananajimi\ ;
+円周率 > enshuuritsu\ ;
+商業史 > shougyoushi\ ;
+山岳病 > sangakubyou\ ;
+親任官 > shin''ninkan\ ;
+追跡者 > tsuisekisha\ ;
+発会式 > hakkaishiki\ ;
+天道虫 > tentoumushi\ ;
+床面積 > yukamenseki\ ;
+狸親父 > tanukioyaji\ ;
+木石漢 > bokusekikan\ ;
+国防省 > kokuboushou\ ;
+国文学 > kokubungaku\ ;
+民俗学 > minzokugaku\ ;
+生殖腺 > seishokusen\ ;
+自殺的 > jisatsuteki\ ;
+造物主 > zoubutsushu\ ;
+用兵術 > youheijutsu\ ;
+退職金 > taishokukin\ ;
+彎月状 > wangetsujou\ ;
+生没年 > seibotsunen\ ;
+単一性 > tan''itsusei\ ;
+持続力 > jizokuryoku\ ;
+新聞業 > shinbungyou\ ;
+神経核 > shinkeikaku\ ;
+枢軸国 > suujikukoku\ ;
+三色版 > sanshokuban\ ;
+直観的 > chokkanteki\ ;
+中間駅 > chuukan''eki\ ;
+能装束 > noushouzoku\ ;
+結晶学 > kesshougaku\ ;
+解決法 > kaiketsuhou\ ;
+警戒色 > keikaishoku\ ;
+一毛作 > ichimousaku\ ;
+温熱性 > on''netsusei\ ;
+内反脚 > naihankyaku\ ;
+延縄漁 > haenawaryou\ ;
+直方体 > chokuhoutai\ ;
+家族達 > kazokutachi\ ;
+刺激的 > shigekiteki\ ;
+交換局 > koukankyoku\ ;
+七年忌 > shichinenki\ ;
+悪戯書 > itazuragaki\ ;
+千人針 > sen''ninbari\ ;
+消毒液 > shoudokueki\ ;
+油砥石 > aburatoishi\ ;
+狐饂飩 > kitsuneudon\ ;
+合州国 > gasshuukoku\ ;
+濃褐色 > noukasshoku\ ;
+材木商 > zaimokushou\ ;
+原色版 > genshokuban\ ;
+単項式 > tankoushiki\ ;
+土気色 > tsuchikeiro\ ;
+付属節 > fuzokusetsu\ ;
+一番鶏 > ichibandori\ ;
+紋章学 > monshougaku\ ;
+真只中 > mattadanaka\ ;
+出席者 > shussekisha\ ;
+門前町 > monzenmachi\ ;
+教訓的 > kyoukunteki\ ;
+貯金局 > chokinkyoku\ ;
+官僚臭 > kanryoushuu\ ;
+蹄鉄工 > teitetsukou\ ;
+神経学 > shinkeigaku\ ;
+表玄関 > omotegenkan\ ;
+出張店 > shutchouten\ ;
+旅行鞄 > ryokoukaban\ ;
+北々東 > hokuhokutou\ ;
+減塩食 > gen''enshoku\ ;
+団体客 > dantaikyaku\ ;
+心霊学 > shinreigaku\ ;
+大正琴 > taishougoto\ ;
+欠勤率 > kekkinritsu\ ;
+定着剤 > teichakuzai\ ;
+入場料 > nyuujouryou\ ;
+逐語訳 > chikugoyaku\ ;
+思考力 > shikouryoku\ ;
+乳用牛 > nyuuyougyuu\ ;
+正覚坊 > shougakubou\ ;
+緑藻類 > ryokusourui\ ;
+目撃者 > mokugekisha\ ;
+黒曜石 > kokuyouseki\ ;
+満一年 > man''ichinen\ ;
+没我的 > botsugateki\ ;
+含塵率 > ganjinritsu\ ;
+退職者 > taishokusha\ ;
+蔵屋敷 > kurayashiki\ ;
+再建築 > saikenchiku\ ;
+献身的 > kenshinteki\ ;
+妨害物 > bougaibutsu\ ;
+点眼薬 > tengan''yaku\ ;
+元首相 > motoshushou\ ;
+恐水病 > kyousuibyou\ ;
+密売品 > mitsubaihin\ ;
+石川県 > ishikawaken\ ;
+副会長 > fukukaichou\ ;
+発明者 > hatsumeisha\ ;
+創作的 > sousakuteki\ ;
+大逆罪 > taigyakuzai\ ;
+一元的 > ichigenteki\ ;
+百面相 > hyakumensou\ ;
+不侵略 > fushinryaku\ ;
+小学生 > shougakusei\ ;
+付属物 > fuzokubutsu\ ;
+勉強中 > benkyouchuu\ ;
+写真帳 > shashinchou\ ;
+一目散 > ichimokusan\ ;
+風力計 > fuuryokukei\ ;
+活用形 > katsuyoukei\ ;
+自動扉 > jidoutobira\ ;
+会社立 > kaisharitsu\ ;
+見目形 > mimekatachi\ ;
+鑑別所 > kanbetsusho\ ;
+仮契約 > karikeiyaku\ ;
+核拡散 > kakukakusan\ ;
+周辺国 > shuuhenkoku\ ;
+必然性 > hitsuzensei\ ;
+黒猩猩 > kuroshoujou\ ;
+両替商 > ryougaeshou\ ;
+脱色剤 > dasshokuzai\ ;
+右心室 > ushinshitsu\ ;
+中央口 > chuuouguchi\ ;
+真菌症 > shinkinshou\ ;
+圧力波 > atsuryokuha\ ;
+全国的 > zenkokuteki\ ;
+縄梯子 > nawabashigo\ ;
+我物顔 > wagamonogao\ ;
+食堂車 > shokudousha\ ;
+善知識 > zenchishiki\ ;
+一円札 > ichiensatsu\ ;
+視聴覚 > shichoukaku\ ;
+耐熱鋼 > tainetsukou\ ;
+革命的 > kakumeiteki\ ;
+小休止 > shoukyuushi\ ;
+好取組 > koutorikumi\ ;
+博奕宿 > bakuchiyado\ ;
+脳貧血 > nouhinketsu\ ;
+悪々戯 > waruitazura\ ;
+洗礼式 > senreishiki\ ;
+甲骨文 > koukotsubun\ ;
+日銀券 > nichiginken\ ;
+貧民窟 > hinminkutsu\ ;
+奉献物 > houkenbutsu\ ;
+実業家 > jitsugyouka\ ;
+胸算用 > munezan''you\ ;
+冬木立 > fuyukodachi\ ;
+結紮糸 > kessatsushi\ ;
+逆宣伝 > gyakusenden\ ;
+鮮紅色 > senkoushoku\ ;
+入国税 > nyuukokuzei\ ;
+拡大鏡 > kakudaikyou\ ;
+道楽者 > dourakumono\ ;
+女房役 > nyoubouyaku\ ;
+条約国 > jouyakukoku\ ;
+代替物 > daitaibutsu\ ;
+混凝土 > konkurizeto\ ;
+消毒剤 > shoudokuzai\ ;
+万能薬 > man''nouyaku\ ;
+信憑性 > shinpyousei\ ;
+列伝体 > retsudentai\ ;
+口可笑 > kuchiokashi\ ;
+実生活 > jisseikatsu\ ;
+百姓家 > hyakushouya\ ;
+一局部 > ichikyokubu\ ;
+間一髪 > kan''ippatsu\ ;
+年格好 > toshikakkou\ ;
+鎧一具 > yoroiichigu\ ;
+町人物 > chouninmono\ ;
+通訳官 > tsuuyakukan\ ;
+必要悪 > hitsuyouaku\ ;
+鉄道網 > tetsudoumou\ ;
+原産物 > gensanbutsu\ ;
+器楽曲 > kigakukyoku\ ;
+必要性 > hitsuyousei\ ;
+半面識 > hanmenshiki\ ;
+夢心地 > yumegokochi\ ;
+今週中 > konshuuchuu\ ;
+話下手 > hanashibeta\ ;
+防蝕剤 > boushokuzai\ ;
+小乗的 > shoujouteki\ ;
+立脚点 > rikkyakuten\ ;
+不信実 > fushinjitsu\ ;
+争奪戦 > soudatsusen\ ;
+商学士 > shougakushi\ ;
+上屋敷 > kamiyashiki\ ;
+若大将 > wakadaishou\ ;
+操舵室 > soudashitsu\ ;
+成人式 > seijinshiki\ ;
+新面目 > shinmenmoku\ ;
+注文服 > chuumonfuku\ ;
+上棟式 > joutoushiki\ ;
+赤銅色 > shakudouiro\ ;
+向学心 > kougakushin\ ;
+渇望者 > katsubousha\ ;
+汽缶室 > kikanshitsu\ ;
+執達吏 > shittatsuri\ ;
+乗心地 > norigokochi\ ;
+弔祭料 > chousairyou\ ;
+刺戟的 > shigekiteki\ ;
+下検分 > shitakenbun\ ;
+開催式 > kaisaishiki\ ;
+田舎娘 > inakamusume\ ;
+箱火鉢 > hakohibachi\ ;
+副首相 > fukushushou\ ;
+敵愾心 > tekigaishin\ ;
+釈空海 > shakukuukai\ ;
+北北西 > hokuhokusei\ ;
+組織票 > soshikihyou\ ;
+出身者 > shusshinsha\ ;
+仕事量 > shigotoryou\ ;
+半月形 > hangetsukei\ ;
+分子説 > bunshisetsu\ ;
+半月弁 > hangetsuben\ ;
+正答率 > seitouritsu\ ;
+季節的 > kisetsuteki\ ;
+原子説 > genshisetsu\ ;
+神嘗祭 > kan''namesai\ ;
+桧舞台 > hinokibutai\ ;
+対局者 > taikyokusha\ ;
+貝殻骨 > kaigarabone\ ;
+千両箱 > senryoubako\ ;
+純収入 > junshuunyuu\ ;
+物理的 > butsuriteki\ ;
+林産物 > rinsanbutsu\ ;
+突然死 > totsuzenshi\ ;
+証取法 > shoutorihou\ ;
+歴史的 > rekishiteki\ ;
+組織的 > soshikiteki\ ;
+贈呈式 > zouteishiki\ ;
+積載量 > sekisairyou\ ;
+自発的 > jihatsuteki\ ;
+土石流 > dosekiryuu\ ;
+市町村 > shichouson\ ;
+食塩水 > shokuensui\ ;
+潤滑油 > junkatsuyu\ ;
+流星群 > ryuuseigun\ ;
+契約金 > keiyakukin\ ;
+決議文 > ketsugibun\ ;
+蒸留酒 > jouryuushu\ ;
+針葉樹 > shin''youju\ ;
+猛勉強 > moubenkyou\ ;
+深刻化 > shinkokuka\ ;
+所得顔 > tokoroegao\ ;
+御客様 > okyakusama\ ;
+蔵書票 > zoushohyou\ ;
+人工雪 > jinkouyuki\ ;
+同腹仔 > doufukushi\ ;
+射倖心 > shakoushin\ ;
+博士号 > hakushigou\ ;
+入漁者 > nyuugyosha\ ;
+別除権 > betsujoken\ ;
+戦闘服 > sentoufuku\ ;
+養鶏業 > youkeigyou\ ;
+議決権 > giketsuken\ ;
+入園料 > nyuuenryou\ ;
+優先的 > yuusenteki\ ;
+同一視 > douitsushi\ ;
+難行道 > nangyoudou\ ;
+遺失品 > ishitsuhin\ ;
+食文化 > shokubunka\ ;
+民主国 > minshukoku\ ;
+再帰熱 > saikinetsu\ ;
+炭化物 > tankabutsu\ ;
+断片的 > danpenteki\ ;
+溺死体 > dekishitai\ ;
+海洋学 > kaiyougaku\ ;
+歯神経 > shishinkei\ ;
+反抗的 > hankouteki\ ;
+開催国 > kaisaikoku\ ;
+御両親 > goryoushin\ ;
+修正液 > shuuseieki\ ;
+厚生省 > kouseishou\ ;
+高級車 > koukyuusha\ ;
+軟文学 > nanbungaku\ ;
+試作品 > shisakuhin\ ;
+観覧料 > kanranryou\ ;
+不信任 > fushin''nin\ ;
+三脚架 > sankyakuka\ ;
+変態的 > hentaiteki\ ;
+乞高評 > koukouhyou\ ;
+毛氈苔 > mousengoke\ ;
+三尺帯 > sanjakuobi\ ;
+応急策 > oukyuusaku\ ;
+人道的 > jindouteki\ ;
+海酸漿 > umihoozuki\ ;
+承認状 > shouninjou\ ;
+随筆家 > zuihitsuka\ ;
+核融合 > kakuyuugou\ ;
+抽選券 > chuusenken\ ;
+免許証 > menkyoshou\ ;
+美容術 > biyoujutsu\ ;
+裏貸屋 > uragashiya\ ;
+防毒面 > boudokumen\ ;
+弁慶蟹 > benkeigani\ ;
+二線式 > nisenshiki\ ;
+必要事 > hitsuyouji\ ;
+発明家 > hatsumeika\ ;
+独裁者 > dokusaisha\ ;
+眺望権 > choubouken\ ;
+内通者 > naitsuusha\ ;
+中長期 > chuuchouki\ ;
+現象論 > genshouron\ ;
+魔術師 > majutsushi\ ;
+国土庁 > kokudochou\ ;
+積分法 > sekibunhou\ ;
+信号灯 > shingoutou\ ;
+半陰陽 > han''in''you\ ;
+平面鏡 > heimenkyou\ ;
+宅配便 > takuhaibin\ ;
+萎縮症 > ishukushou\ ;
+天目山 > tenmokuzan\ ;
+偏平足 > henpeisoku\ ;
+法学士 > hougakushi\ ;
+発煙筒 > hatsuentou\ ;
+側頭葉 > sokutouyou\ ;
+天皇杯 > ten''nouhai\ ;
+細胞核 > saiboukaku\ ;
+独擅場 > dokusenjou\ ;
+製鋼業 > seikougyou\ ;
+光熱費 > kounetsuhi\ ;
+愛郷心 > aikyoushin\ ;
+生産高 > seisandaka\ ;
+海水浴 > kaisuiyoku\ ;
+仮繃帯 > karihoutai\ ;
+及第者 > kyuudaisha\ ;
+米陸軍 > beirikugun\ ;
+注文品 > chuumonhin\ ;
+恒常的 > koujouteki\ ;
+人形師 > ningyoushi\ ;
+榴散弾 > ryuusandan\ ;
+発電機 > hatsudenki\ ;
+旧市街 > kyuushigai\ ;
+観覧席 > kanranseki\ ;
+実用化 > jitsuyouka\ ;
+考現学 > kougengaku\ ;
+開催中 > kaisaichuu\ ;
+産業界 > sangyoukai\ ;
+庶民劇 > shomingeki\ ;
+不仕末 > fushimatsu\ ;
+呆気者 > utsukemono\ ;
+解剖学 > kaibougaku\ ;
+仮埋葬 > karimaisou\ ;
+釣道具 > tsuridougu\ ;
+生産額 > seisangaku\ ;
+悲劇的 > higekiteki\ ;
+北氷洋 > hoppyouyou\ ;
+十二月 > juunigatsu\ ;
+同学年 > dougakunen\ ;
+現代的 > gendaiteki\ ;
+夢判断 > yumehandan\ ;
+岳友会 > gakuyuukai\ ;
+勘定尻 > kanjoujiri\ ;
+合宿所 > gasshukujo\ ;
+蠱惑的 > kowakuteki\ ;
+空間軸 > kuukanjiku\ ;
+中間層 > chuukansou\ ;
+特級酒 > tokkyuushu\ ;
+署名国 > shomeikoku\ ;
+演劇的 > engekiteki\ ;
+交戦国 > kousenkoku\ ;
+外形的 > gaikeiteki\ ;
+中間子 > chuukanshi\ ;
+整流子 > seiryuushi\ ;
+優先株 > yuusenkabu\ ;
+短兵急 > tanpeikyuu\ ;
+弁慶縞 > benkeijima\ ;
+牡丹雪 > botan''yuki\ ;
+斜格性 > shakakusei\ ;
+高角砲 > koukakuhou\ ;
+歴年齢 > rekinenrei\ ;
+無分別 > mufunbetsu\ ;
+刺戟性 > shigekisei\ ;
+通行税 > tsuukouzei\ ;
+超自然 > choushizen\ ;
+削氷機 > sakuhyouki\ ;
+契約者 > keiyakusha\ ;
+夜盗虫 > yotoumushi\ ;
+安全率 > anzenritsu\ ;
+原子症 > genshishou\ ;
+原子病 > genshibyou\ ;
+季節感 > kisetsukan\ ;
+旧勘定 > kyuukanjou\ ;
+仮調印 > karichouin\ ;
+乗車賃 > joushachin\ ;
+防虫剤 > bouchuuzai\ ;
+核戦争 > kakusensou\ ;
+発売日 > hatsubaibi\ ;
+定足数 > teisokusuu\ ;
+里神楽 > satokagura\ ;
+薩摩芋 > satsumaimo\ ;
+姦通罪 > kantsuuzai\ ;
+山林学 > sanringaku\ ;
+副議長 > fukugichou\ ;
+航空病 > koukuubyou\ ;
+漢越音 > kan''etsuon\ ;
+出入口 > deiriguchi\ ;
+仮納税 > karinouzei\ ;
+総合的 > sougouteki\ ;
+仲裁者 > chuusaisha\ ;
+出展者 > shuttensha\ ;
+活字体 > katsujitai\ ;
+肘鉄砲 > hijideppou\ ;
+対蹠地 > taisekichi\ ;
+廻漕業 > kaisougyou\ ;
+低障碍 > teishougai\ ;
+残余額 > zan''yogaku\ ;
+治療法 > chiryouhou\ ;
+機械油 > kikaiabura\ ;
+自発性 > jihatsusei\ ;
+信号手 > shingoushu\ ;
+栃木県 > tochigiken\ ;
+調査票 > chousahyou\ ;
+編年史 > hen''nenshi\ ;
+土着民 > dochakumin\ ;
+進呈本 > shinteibon\ ;
+瑞宝章 > zuihoushou\ ;
+落選者 > rakusensha\ ;
+内勘定 > uchikanjou\ ;
+奉納額 > hounougaku\ ;
+細胞学 > saibougaku\ ;
+果実店 > kajitsuten\ ;
+実時間 > jitsujikan\ ;
+入漁権 > nyuugyoken\ ;
+著作者 > chosakusha\ ;
+脱脂乳 > dasshinyuu\ ;
+祭祀料 > saishiryou\ ;
+内弁慶 > uchibenkei\ ;
+向上心 > koujoushin\ ;
+牧羊者 > bokuyousha\ ;
+参観人 > sankan''nin\ ;
+均一化 > kin''itsuka\ ;
+共同者 > kyoudousha\ ;
+明朝体 > minchoutai\ ;
+塩胡椒 > shiokoshou\ ;
+耐震性 > taishinsei\ ;
+新西蘭 > nyūjīrando\ ;
+一枚貝 > ichimaigai\ ;
+乱暴者 > ranboumono\ ;
+各一部 > kakuichibu\ ;
+陰日向 > kagehinata\ ;
+紫宸殿 > shishinden\ ;
+幽霊株 > yuureikabu\ ;
+所得者 > shotokusha\ ;
+軍事力 > gunjiryoku\ ;
+勝負事 > shoubugoto\ ;
+給水車 > kyuusuisha\ ;
+細胞壁 > saibouheki\ ;
+可逆性 > kagyakusei\ ;
+懸賞金 > kenshoukin\ ;
+暦年齢 > rekinenrei\ ;
+含嗽薬 > gansouyaku\ ;
+見学者 > kengakusha\ ;
+優先席 > yuusenseki\ ;
+少数者 > shousuusha\ ;
+共同線 > kyoudousen\ ;
+及第点 > kyuudaiten\ ;
+分類表 > bunruihyou\ ;
+近眼鏡 > kingankyou\ ;
+関数族 > kansuuzoku\ ;
+町村制 > chousonsei\ ;
+極悪人 > gokuakunin\ ;
+引受人 > hikiukenin\ ;
+編年体 > hen''nentai\ ;
+代願人 > daigan''nin\ ;
+有力馬 > yuuryokuba\ ;
+除雪車 > josetsusha\ ;
+大審院 > daishin''in\ ;
+税関長 > zeikanchou\ ;
+中間体 > chuukantai\ ;
+滋養物 > jiyoubutsu\ ;
+九工大 > kyuukoudai\ ;
+加湿器 > kashitsuki\ ;
+新訂版 > shinteiban\ ;
+十人力 > juuninriki\ ;
+下宿人 > geshukunin\ ;
+大業物 > oowazamono\ ;
+側面観 > sokumenkan\ ;
+現象界 > genshoukai\ ;
+追試験 > tsuishiken\ ;
+先天的 > sententeki\ ;
+建築家 > kenchikuka\ ;
+水量計 > suiryoukei\ ;
+親衛隊 > shin''eitai\ ;
+先天病 > sentenbyou\ ;
+繁殖期 > hanshokuki\ ;
+船幽霊 > funayuurei\ ;
+民族性 > minzokusei\ ;
+御了承 > goryoushou\ ;
+水蛇座 > mizuhebiza\ ;
+拝外的 > haigaiteki\ ;
+刺戟剤 > shigekizai\ ;
+所得税 > shotokuzei\ ;
+棉実油 > menjitsuyu\ ;
+勤続者 > kinzokusha\ ;
+天皇制 > ten''nousei\ ;
+喫煙車 > kitsuensha\ ;
+実習生 > jisshuusei\ ;
+体系的 > taikeiteki\ ;
+遊興税 > yuukyouzei\ ;
+修道士 > shuudoushi\ ;
+新教徒 > shinkyouto\ ;
+博覧会 > hakurankai\ ;
+前登録 > zentouroku\ ;
+東洋学 > touyougaku\ ;
+大将軍 > daishougun\ ;
+信号塔 > shingoutou\ ;
+原子核 > genshikaku\ ;
+大公国 > taikoukoku\ ;
+休息所 > kyuusokujo\ ;
+高障害 > koushougai\ ;
+求道者 > kyuudousha\ ;
+天守閣 > tenshukaku\ ;
+乾物屋 > kanbutsuya\ ;
+水鉄砲 > mizudeppou\ ;
+千三屋 > senmitsuya\ ;
+入港税 > nyuukouzei\ ;
+銀行業 > ginkougyou\ ;
+休泊所 > kyuuhakujo\ ;
+人工的 > jinkouteki\ ;
+聴視者 > choushisha\ ;
+両国語 > ryoukokugo\ ;
+高瀬舟 > takasebune\ ;
+組織名 > soshikimei\ ;
+同期式 > doukishiki\ ;
+大腸菌 > daichoukin\ ;
+半狂乱 > hankyouran\ ;
+贅沢品 > zeitakuhin\ ;
+一本道 > ipponmichi\ ;
+利潤率 > rijunritsu\ ;
+迫害者 > hakugaisha\ ;
+大極殿 > daigokuden\ ;
+重量感 > juuryoukan\ ;
+美学的 > bigakuteki\ ;
+写生帳 > shaseichou\ ;
+廃棄物 > haikibutsu\ ;
+電磁石 > denjishaku\ ;
+写生帖 > shaseichou\ ;
+造営物 > zoueibutsu\ ;
+技術面 > gijutsumen\ ;
+仕置者 > shiokimono\ ;
+時刻表 > jikokuhyou\ ;
+毒科学 > dokukagaku\ ;
+直行便 > chokkoubin\ ;
+手内職 > tenaishoku\ ;
+旅行先 > ryokousaki\ ;
+核弾頭 > kakudantou\ ;
+空集合 > kuushuugou\ ;
+特許料 > tokkyoryou\ ;
+主情的 > shujouteki\ ;
+更衣室 > kouishitsu\ ;
+会席膳 > kaisekizen\ ;
+千一夜 > sen''ichiya\ ;
+真田紐 > sanadahimo\ ;
+道学者 > dougakusha\ ;
+揮発性 > kihatsusei\ ;
+出資金 > shusshikin\ ;
+牧羊犬 > bokuyouken\ ;
+蒸留水 > jouryuusui\ ;
+等圧線 > touatsusen\ ;
+毒味役 > dokumiyaku\ ;
+優良店 > yuuryouten\ ;
+内芸者 > uchigeisha\ ;
+悪達者 > warudassha\ ;
+三面鏡 > sanmenkyou\ ;
+狸蕎麦 > tanukisoba\ ;
+裏書人 > uragakinin\ ;
+特大号 > tokudaigou\ ;
+組織体 > soshikitai\ ;
+現実化 > genjitsuka\ ;
+多目的 > tamokuteki\ ;
+将来性 > shouraisei\ ;
+一人腹 > hitoribara\ ;
+画一化 > kakuitsuka\ ;
+重金属 > juukinzoku\ ;
+立会人 > tachiainin\ ;
+歴史上 > rekishijou\ ;
+製鉄所 > seitetsujo\ ;
+一人者 > hitorimono\ ;
+遮断壁 > shadanpeki\ ;
+特売場 > tokubaijou\ ;
+告知板 > kokuchiban\ ;
+沖積期 > chuusekiki\ ;
+仮記入 > karikinyuu\ ;
+修道会 > shuudoukai\ ;
+桟梯子 > sanbashigo\ ;
+番号札 > bangoufuda\ ;
+少数点 > shousuuten\ ;
+山猫座 > yamanekoza\ ;
+寝台券 > shindaiken\ ;
+水銀柱 > suiginchuu\ ;
+赤海亀 > akaumigame\ ;
+骨相学 > kossougaku\ ;
+大臼歯 > daikyuushi\ ;
+民族史 > minzokushi\ ;
+五稜郭 > goryoukaku\ ;
+扁平足 > henpeisoku\ ;
+契約書 > keiyakusho\ ;
+影法師 > kageboushi\ ;
+金剛石 > kongouseki\ ;
+特許庁 > tokkyochou\ ;
+特売品 > tokubaihin\ ;
+下請負 > shitaukeoi\ ;
+収穫期 > shuukakuki\ ;
+陸戦隊 > rikusentai\ ;
+給水管 > kyuusuikan\ ;
+神秘的 > shinpiteki\ ;
+重量噸 > juuryouton\ ;
+収穫時 > shuukakuji\ ;
+高圧縮 > kouasshuku\ ;
+著作権 > chosakuken\ ;
+代執行 > daishikkou\ ;
+限定的 > genteiteki\ ;
+高圧線 > kouatsusen\ ;
+仮採用 > karisaiyou\ ;
+改革者 > kaikakusha\ ;
+地下鉄 > chikatetsu\ ;
+尊王党 > son''noutou\ ;
+喫煙者 > kitsuensha\ ;
+土俵際 > dohyougiwa\ ;
+大山猫 > ooyamaneko\ ;
+航空学 > koukuugaku\ ;
+原材料 > genzairyou\ ;
+出産数 > shussansuu\ ;
+欄参照 > ransanshou\ ;
+出生数 > shusseisuu\ ;
+守備率 > shubiritsu\ ;
+文芸学 > bungeigaku\ ;
+紅冠鳥 > koukanchou\ ;
+初場所 > hatsubasho\ ;
+乳状液 > nyuujoueki\ ;
+単坐式 > tanzashiki\ ;
+在留民 > zairyuumin\ ;
+美顔術 > biganjutsu\ ;
+煮沸器 > shafutsuki\ ;
+優良品 > yuuryouhin\ ;
+戦術家 > senjutsuka\ ;
+仕事師 > shigotoshi\ ;
+無生物 > museibutsu\ ;
+雑文家 > zatsubunka\ ;
+同調者 > douchousha\ ;
+予約席 > yoyakuseki\ ;
+金石文 > kinsekibun\ ;
+練習船 > renshuusen\ ;
+測深機 > sokushinki\ ;
+発見料 > hakkenryou\ ;
+衒学者 > gengakusha\ ;
+小数点 > shousuuten\ ;
+引出物 > hikidemono\ ;
+開架式 > kaikashiki\ ;
+包含的 > houganteki\ ;
+合奏調 > gassouchou\ ;
+共和国 > kyouwakoku\ ;
+審判員 > shinpan''in\ ;
+清朝体 > seichoutai\ ;
+表日本 > omotenihon\ ;
+現代劇 > gendaigeki\ ;
+即効薬 > sokkouyaku\ ;
+日運動 > nichiundou\ ;
+職階制 > shokkaisei\ ;
+前車軸 > zenshajiku\ ;
+上昇線 > joushousen\ ;
+機密性 > kimitsusei\ ;
+明細表 > meisaihyou\ ;
+修辞学 > shuujigaku\ ;
+名誉職 > meiyoshoku\ ;
+四天王 > shiten''nou\ ;
+人相学 > ninsougaku\ ;
+授業料 > jugyouryou\ ;
+鉛中毒 > enchuudoku\ ;
+治療代 > chiryoudai\ ;
+帯黄色 > taioushoku\ ;
+起工式 > kikoushiki\ ;
+取得者 > shutokusha\ ;
+悪平等 > akubyoudou\ ;
+朱子学 > shushigaku\ ;
+軽金属 > keikinzoku\ ;
+健脚家 > kenkyakuka\ ;
+先覚者 > senkakusha\ ;
+不整脈 > fuseimyaku\ ;
+仲間内 > nakamauchi\ ;
+将来像 > shouraizou\ ;
+低教会 > teikyoukai\ ;
+性衝動 > seishoudou\ ;
+紙芝居 > kamishibai\ ;
+作成者 > sakuseisha\ ;
+回春剤 > kaishunzai\ ;
+消費量 > shouhiryou\ ;
+並製品 > namiseihin\ ;
+専有権 > sen''yuuken\ ;
+乗馬靴 > joubagutsu\ ;
+出資者 > shusshisha\ ;
+化石学 > kasekigaku\ ;
+聴診器 > choushinki\ ;
+猩猩蠅 > shoujoubae\ ;
+乱数表 > ransuuhyou\ ;
+埋立地 > umetatechi\ ;
+共同性 > kyoudousei\ ;
+熟練者 > jukurensha\ ;
+東北東 > touhokutou\ ;
+生体膜 > seitaimaku\ ;
+民衆駅 > minshuueki\ ;
+宇宙食 > uchuushoku\ ;
+日光浴 > nikkouyoku\ ;
+代数学 > daisuugaku\ ;
+能役者 > nouyakusha\ ;
+沖積土 > chuusekido\ ;
+引力圏 > inryokuken\ ;
+中折帽 > nakaorebou\ ;
+非活動 > hikatsudou\ ;
+不始末 > fushimatsu\ ;
+有功章 > yuukoushou\ ;
+投票者 > touhyousha\ ;
+攻撃隊 > kougekitai\ ;
+報告者 > houkokusha\ ;
+発表者 > happyousha\ ;
+惣管領 > soukanryou\ ;
+選択肢 > sentakushi\ ;
+技術者 > gijutsusha\ ;
+進歩的 > shinpoteki\ ;
+埋蔵量 > maizouryou\ ;
+仕事台 > shigotodai\ ;
+性成熟 > seiseijuku\ ;
+永年間 > naganenkan\ ;
+背教者 > haikyousha\ ;
+手工業 > shukougyou\ ;
+申請者 > shinseisha\ ;
+演出家 > enshutsuka\ ;
+一安心 > hitoanshin\ ;
+行楽地 > kourakuchi\ ;
+食管法 > shokkanhou\ ;
+観測船 > kansokusen\ ;
+競合者 > kyougousha\ ;
+健脳剤 > ken''nouzai\ ;
+金剛杖 > kongoudzue\ ;
+謝肉祭 > shanikusai\ ;
+複写紙 > fukushashi\ ;
+週刊誌 > shuukanshi\ ;
+収税所 > shuuzeisho\ ;
+通行人 > tsuukounin\ ;
+鑑定料 > kanteiryou\ ;
+同一人 > douitsunin\ ;
+高潮線 > kouchousen\ ;
+浸透性 > shintousei\ ;
+血色素 > kesshikiso\ ;
+脳震盪 > noushintou\ ;
+賃貸人 > chintainin\ ;
+出生地 > shusseichi\ ;
+練習生 > renshuusei\ ;
+座席表 > zasekihyou\ ;
+観測者 > kansokusha\ ;
+地獄耳 > jigokumimi\ ;
+高級品 > koukyuuhin\ ;
+遠日点 > enjitsuten\ ;
+漢学者 > kangakusha\ ;
+牧場鳥 > makibatori\ ;
+死刑囚 > shikeishuu\ ;
+氷砂糖 > koorizatou\ ;
+共著者 > kyouchosha\ ;
+骨髄炎 > kotsuzuien\ ;
+放牧地 > houbokuchi\ ;
+白血球 > hakkekkyuu\ ;
+溶岩流 > youganryuu\ ;
+死傷者 > shishousha\ ;
+式部官 > shikibukan\ ;
+脆弱性 > zeijakusei\ ;
+給水栓 > kyuusuisen\ ;
+観測網 > kansokumou\ ;
+急行券 > kyuukouken\ ;
+御鞭撻 > gobentatsu\ ;
+緑十字 > ryokujuuji\ ;
+流線形 > ryuusenkei\ ;
+原始的 > genshiteki\ ;
+牧羊地 > bokuyouchi\ ;
+埼玉県 > saitamaken\ ;
+攻撃軍 > kougekigun\ ;
+敵艦隊 > tekikantai\ ;
+食器棚 > shokkidana\ ;
+伝送先 > densousaki\ ;
+稲荷鮨 > inarizushi\ ;
+復調器 > fukuchouki\ ;
+大病人 > daibyounin\ ;
+共労者 > kyourousha\ ;
+病原菌 > byougenkin\ ;
+朝鮮人 > chousenjin\ ;
+優越権 > yuuetsuken\ ;
+一人旅 > hitoritabi\ ;
+文学論 > bungakuron\ ;
+肉感的 > nikkanteki\ ;
+急行便 > kyuukoubin\ ;
+甲乙丙 > kouotsuhei\ ;
+中波長 > chuuhachou\ ;
+無職者 > mushokusha\ ;
+収税官 > shuuzeikan\ ;
+学部長 > gakubuchou\ ;
+超格子 > choukoushi\ ;
+闊葉樹 > katsuyouju\ ;
+共鳴者 > kyoumeisha\ ;
+無体物 > mutaibutsu\ ;
+浮気女 > uwakion''na\ ;
+登竜門 > touryuumon\ ;
+一義的 > ichigiteki\ ;
+第一条 > daiichijou\ ;
+内用薬 > naiyouyaku\ ;
+座標軸 > zahyoujiku\ ;
+策源地 > sakugenchi\ ;
+優生学 > yuuseigaku\ ;
+分隊長 > buntaichou\ ;
+前借金 > zenshakkin\ ;
+仲裁人 > chuusainin\ ;
+赤道祭 > sekidousai\ ;
+東北大 > touhokudai\ ;
+実証論 > jisshouron\ ;
+不燃物 > funenbutsu\ ;
+全強風 > zenkyoufuu\ ;
+小天地 > shoutenchi\ ;
+酢酸塩 > sakusan''en\ ;
+超音速 > chouonsoku\ ;
+密告者 > mikkokusha\ ;
+分類学 > bunruigaku\ ;
+彫金師 > choukinshi\ ;
+共通語 > kyoutsuugo\ ;
+神秘学 > shinhigaku\ ;
+一本橋 > ipponbashi\ ;
+第五列 > daigoretsu\ ;
+紳士用 > shinshiyou\ ;
+一枚岩 > ichimaiiwa\ ;
+流線型 > ryuusenkei\ ;
+一本槍 > ippon''yari\ ;
+困窮者 > konkyuusha\ ;
+冬支度 > fuyujitaku\ ;
+共同体 > kyoudoutai\ ;
+少数党 > shousuutou\ ;
+全民衆 > zenminshuu\ ;
+相反的 > souhanteki\ ;
+浮遊物 > fuyuubutsu\ ;
+労働省 > roudoushou\ ;
+孫息子 > magomusuko\ ;
+労働相 > roudoushou\ ;
+供養塚 > kuyoudzuka\ ;
+駆逐艦 > kuchikukan\ ;
+素人目 > shiroutome\ ;
+週刊紙 > shuukanshi\ ;
+精肉店 > seinikuten\ ;
+双殻類 > soukakurui\ ;
+奨励金 > shoureikin\ ;
+不精髭 > bushouhige\ ;
+能動的 > noudouteki\ ;
+約半分 > yakuhanbun\ ;
+網漁業 > amigyogyou\ ;
+授業中 > jugyouchuu\ ;
+岩石圏 > gansekiken\ ;
+役目柄 > yakumegara\ ;
+一本松 > ipponmatsu\ ;
+塩煎餅 > shiosenbei\ ;
+不如帰 > hototogisu\ ;
+南々西 > nan''nansei\ ;
+在学生 > zaigakusei\ ;
+剃刀砥 > kamisorido\ ;
+多発性 > tahatsusei\ ;
+優越感 > yuuetsukan\ ;
+特級品 > tokkyuuhin\ ;
+三角錐 > sankakusui\ ;
+必治薬 > hitchiyaku\ ;
+単振動 > tanshindou\ ;
+主張者 > shuchousha\ ;
+排他律 > haitaritsu\ ;
+優越性 > yuuetsusei\ ;
+形態学 > keitaigaku\ ;
+工業界 > kougyoukai\ ;
+工業用 > kougyouyou\ ;
+積乱雲 > sekiran''un\ ;
+拝観料 > haikanryou\ ;
+領海線 > ryoukaisen\ ;
+角分散 > kakubunsan\ ;
+不見識 > fukenshiki\ ;
+大学生 > daigakusei\ ;
+最北端 > saihokutan\ ;
+表面上 > hyoumenjou\ ;
+濃硫酸 > nouryuusan\ ;
+水化物 > suikabutsu\ ;
+超伝導 > choudendou\ ;
+文学者 > bungakusha\ ;
+粗目雪 > zarameyuki\ ;
+史学者 > shigakusha\ ;
+国民軍 > kokumingun\ ;
+咀嚼筋 > soshakukin\ ;
+住所録 > juushoroku\ ;
+駐停車 > chuuteisha\ ;
+植樹祭 > shokujusai\ ;
+角速度 > kakusokudo\ ;
+大赤斑 > daisekihan\ ;
+地中海 > chichuukai\ ;
+商売人 > shoubainin\ ;
+受取人 > uketorinin\ ;
+見本市 > mihon''ichi\ ;
+投票権 > touhyouken\ ;
+探照灯 > tanshoutou\ ;
+全勝軍 > zenshougun\ ;
+給水塔 > kyuusuitou\ ;
+潮干狩 > shiohigari\ ;
+牡羊座 > ohitsujiza\ ;
+収税人 > shuuzeinin\ ;
+選択権 > sentakuken\ ;
+採点表 > saitenhyou\ ;
+工工四 > kunkunshii\ ;
+記録的 > kirokuteki\ ;
+豆板銀 > mameitagin\ ;
+絶対量 > zettairyou\ ;
+東北人 > touhokujin\ ;
+海軍省 > kaigunshou\ ;
+金剛力 > kongouriki\ ;
+真暗闇 > makurayami\ ;
+検疫官 > ken''ekikan\ ;
+対象外 > taishougai\ ;
+新潟県 > niigataken\ ;
+闇再販 > yamisaihan\ ;
+動物愛 > doubutsuai\ ;
+使用量 > shiyouryou\ ;
+藁半紙 > warabanshi\ ;
+新開地 > shinkaichi\ ;
+非常識 > hijoushiki\ ;
+一面観 > ichimenkan\ ;
+管絃楽 > kangengaku\ ;
+最恵国 > saikeikoku\ ;
+慢性的 > manseiteki\ ;
+推計学 > suikeigaku\ ;
+副領事 > fukuryouji\ ;
+印刷者 > insatsusha\ ;
+耐火力 > taikaryoku\ ;
+友禅染 > yuuzenzome\ ;
+報告書 > houkokusho\ ;
+骨格筋 > kokkakukin\ ;
+藻塩草 > moshiogusa\ ;
+集大成 > shuutaisei\ ;
+慢性病 > manseibyou\ ;
+宣言的 > sengenteki\ ;
+六重奏 > rokujuusou\ ;
+音響学 > onkyougaku\ ;
+工業港 > kougyoukou\ ;
+総辞職 > soujishoku\ ;
+軍団長 > gundanchou\ ;
+年長者 > nenchousha\ ;
+総務局 > soumukyoku\ ;
+面相筆 > mensoufude\ ;
+散歩道 > sanpomichi\ ;
+示圧計 > shiatsukei\ ;
+世紀末 > seikimatsu\ ;
+第三国 > daisangoku\ ;
+投票数 > touhyousuu\ ;
+何箇月 > nankagetsu\ ;
+申請書 > shinseisho\ ;
+腹膜炎 > fukumakuen\ ;
+温泉町 > onsenmachi\ ;
+主動的 > shudouteki\ ;
+不文律 > fubunritsu\ ;
+弁当箱 > bentoubako\ ;
+天体学 > tentaigaku\ ;
+印刷紙 > insatsushi\ ;
+低成長 > teiseichou\ ;
+俯仰角 > fugyoukaku\ ;
+放熱器 > hounetsuki\ ;
+純良品 > junryouhin\ ;
+備後表 > bingoomote\ ;
+暗殺者 > ansatsusha\ ;
+平教員 > hirakyouin\ ;
+不覚者 > fukakumono\ ;
+成長点 > seichouten\ ;
+東横線 > touyokosen\ ;
+救済者 > kyuusaisha\ ;
+知能的 > chinouteki\ ;
+幻覚剤 > genkakuzai\ ;
+果物屋 > kudamonoya\ ;
+人格者 > jinkakusha\ ;
+金属間 > kinzokukan\ ;
+花柳病 > karyuubyou\ ;
+老大国 > routaikoku\ ;
+代言人 > daigen''nin\ ;
+心得顔 > kokoroegao\ ;
+代表者 > daihyousha\ ;
+主知的 > shuchiteki\ ;
+文学界 > bungakukai\ ;
+切断機 > setsudanki\ ;
+一時的 > ichijiteki\ ;
+交通網 > koutsuumou\ ;
+地球人 > chikyuujin\ ;
+地球上 > chikyuujou\ ;
+逆提案 > gyakuteian\ ;
+対数表 > taisuuhyou\ ;
+敗戦国 > haisenkoku\ ;
+印刷社 > insatsusha\ ;
+新製品 > shinseihin\ ;
+極距離 > kyokukyori\ ;
+熟練工 > jukurenkou\ ;
+色素体 > shikisotai\ ;
+丸砥石 > marutoishi\ ;
+同族会 > douzokukai\ ;
+経済的 > keizaiteki\ ;
+牛乳屋 > gyuunyuuya\ ;
+練習場 > renshuujou\ ;
+特製品 > tokuseihin\ ;
+不誠実 > fuseijitsu\ ;
+従来型 > juuraigata\ ;
+対象体 > taishoutai\ ;
+粉石鹸 > konasekken\ ;
+夜尿症 > yanyoushou\ ;
+超文面 > choubunmen\ ;
+動物園 > doubutsuen\ ;
+総監督 > soukantoku\ ;
+実際的 > jissaiteki\ ;
+頼信紙 > raishinshi\ ;
+宣教師 > senkyoushi\ ;
+責任者 > sekininsha\ ;
+関節炎 > kansetsuen\ ;
+共鳴板 > kyoumeiban\ ;
+宗主国 > soushukoku\ ;
+旧軍人 > kyuugunjin\ ;
+半濁点 > handakuten\ ;
+半長形 > hanchoukei\ ;
+中水道 > chuusuidou\ ;
+選手村 > senshumura\ ;
+印刷用 > insatsuyou\ ;
+霊柩車 > reikyuusha\ ;
+海岸端 > kaiganbata\ ;
+外用薬 > gaiyouyaku\ ;
+紫斑病 > shihanbyou\ ;
+蛸配当 > takohaitou\ ;
+高所病 > koushobyou\ ;
+大小便 > daishouben\ ;
+米国民 > beikokumin\ ;
+吸水性 > kyuusuisei\ ;
+念五日 > nengonichi\ ;
+出来心 > dekigokoro\ ;
+中心部 > chuushinbu\ ;
+生体学 > seitaigaku\ ;
+肯定的 > kouteiteki\ ;
+選択子 > sentakushi\ ;
+動物化 > doubutsuka\ ;
+水平翼 > suiheiyoku\ ;
+貿易業 > bouekigyou\ ;
+腰布団 > koshibuton\ ;
+爆撃機 > bakugekiki\ ;
+言行録 > genkouroku\ ;
+団地族 > danchizoku\ ;
+乱調子 > ranchoushi\ ;
+備蓄米 > bichikumai\ ;
+大乗的 > daijouteki\ ;
+無能力 > munouryoku\ ;
+酪農場 > rakunoujou\ ;
+貨客船 > kakyakusen\ ;
+感染症 > kansenshou\ ;
+真理教 > shinrikyou\ ;
+慈善鍋 > jizen''nabe\ ;
+技術士 > gijutsushi\ ;
+哨戒艇 > shoukaitei\ ;
+酒石酸 > shusekisan\ ;
+敷布団 > shikibuton\ ;
+反則金 > hansokukin\ ;
+有機物 > yuukibutsu\ ;
+抽象画 > chuushouga\ ;
+租借権 > soshakuken\ ;
+内申書 > naishinsho\ ;
+同級生 > doukyuusei\ ;
+向米的 > koubeiteki\ ;
+親衛兵 > shin''eihei\ ;
+仏文科 > futsubunka\ ;
+取引所 > torihikijo\ ;
+電車賃 > denshachin\ ;
+集散地 > shuusanchi\ ;
+綺想曲 > kisoukyoku\ ;
+上調子 > uwachoushi\ ;
+内臓弓 > naizoukyuu\ ;
+半開国 > hankaikoku\ ;
+製造業 > seizougyou\ ;
+追撃機 > tsuigekiki\ ;
+三角筋 > sankakukin\ ;
+等深線 > toushinsen\ ;
+駆動力 > kudouryoku\ ;
+重工業 > juukougyou\ ;
+麻織物 > asaorimono\ ;
+日射病 > nisshabyou\ ;
+熱血児 > nekketsuji\ ;
+金属製 > kinzokusei\ ;
+本契約 > honkeiyaku\ ;
+黄褐色 > oukasshoku\ ;
+購入者 > kounyuusha\ ;
+不精者 > bushoumono\ ;
+主応力 > shuouryoku\ ;
+埼玉勢 > saitamazei\ ;
+重傷者 > juushousha\ ;
+傷害罪 > shougaizai\ ;
+作戦上 > sakusenjou\ ;
+潜水病 > sensuibyou\ ;
+中性紙 > chuuseishi\ ;
+診療所 > shinryoujo\ ;
+日本食 > nihonshoku\ ;
+稼働率 > kadouritsu\ ;
+連合国 > rengoukoku\ ;
+公民学 > koumingaku\ ;
+研究者 > kenkyuusha\ ;
+静水圧 > seisuiatsu\ ;
+登録者 > tourokusha\ ;
+興行界 > kougyoukai\ ;
+準決勝 > junkesshou\ ;
+天王星 > ten''nousei\ ;
+梯子車 > hashigosha\ ;
+三親等 > sanshintou\ ;
+不純物 > fujunbutsu\ ;
+上女中 > kamijochuu\ ;
+鳥取県 > tottoriken\ ;
+重症者 > juushousha\ ;
+貧乏鬮 > binboukuji\ ;
+唯一度 > tadaichido\ ;
+好色家 > koushokuka\ ;
+毛皮商 > kegawashou\ ;
+比較級 > hikakukyuu\ ;
+現在高 > genzaidaka\ ;
+陸海空 > rikukaikuu\ ;
+双眼鏡 > sougankyou\ ;
+駐輪場 > chuurinjou\ ;
+白鉄鉱 > hakutekkou\ ;
+大宮人 > oomiyabito\ ;
+雪合戦 > yukigassen\ ;
+片栗粉 > katakuriko\ ;
+発表会 > happyoukai\ ;
+吐瀉物 > toshabutsu\ ;
+裏表紙 > urabyoushi\ ;
+切断図 > setsudanzu\ ;
+思惑買 > omowakugai\ ;
+観念論 > kan''nenron\ ;
+玉音盤 > gyokuonban\ ;
+反動的 > handouteki\ ;
+救命艇 > kyuumeitei\ ;
+絶対的 > zettaiteki\ ;
+測量図 > sokuryouzu\ ;
+三大国 > sandaikoku\ ;
+地方病 > chihoubyou\ ;
+出版者 > shuppansha\ ;
+供給路 > kyoukyuuro\ ;
+竜涎香 > ryuuzenkou\ ;
+射爆場 > shabakujou\ ;
+測量器 > sokuryouki\ ;
+土俗学 > dozokugaku\ ;
+美女桜 > bijozakura\ ;
+南々東 > nan''nantou\ ;
+人格権 > jinkakuken\ ;
+分解的 > bunkaiteki\ ;
+他覚的 > takakuteki\ ;
+天主教 > tenshukyou\ ;
+雪化粧 > yukigeshou\ ;
+形式美 > keishikibi\ ;
+電通大 > dentsuudai\ ;
+研究社 > kenkyuusha\ ;
+三角点 > sankakuten\ ;
+伝書鳩 > denshobato\ ;
+他覚症 > takakushou\ ;
+消耗戦 > shoumousen\ ;
+仕訳書 > shiwakesho\ ;
+遊休地 > yuukyuuchi\ ;
+反応性 > han''nousei\ ;
+暴走族 > bousouzoku\ ;
+紀元節 > kigensetsu\ ;
+温泉宿 > onsen''yado\ ;
+唐辛子 > tougarashi\ ;
+日中韓 > nitchuukan\ ;
+理解力 > rikairyoku\ ;
+公共財 > koukyouzai\ ;
+検定料 > kenteiryou\ ;
+市長選 > shichousen\ ;
+安普請 > yasubushin\ ;
+水道料 > suidouryou\ ;
+両成敗 > ryouseibai\ ;
+初節句 > hatsuzekku\ ;
+比較的 > hikakuteki\ ;
+国連軍 > kokurengun\ ;
+上級生 > joukyuusei\ ;
+無頓着 > mutonchaku\ ;
+学友会 > gakuyuukai\ ;
+再来月 > saraigetsu\ ;
+後日談 > gojitsudan\ ;
+備荒食 > bikoushoku\ ;
+不行跡 > fugyouseki\ ;
+斜陽族 > shayouzoku\ ;
+青化物 > seikabutsu\ ;
+天王山 > ten''nouzan\ ;
+厄介者 > yakkaimono\ ;
+勇猛心 > yuumoushin\ ;
+武力戦 > buryokusen\ ;
+三角法 > sankakuhou\ ;
+宗教画 > shuukyouga\ ;
+研究生 > kenkyuusei\ ;
+出奔者 > shupponsha\ ;
+収益金 > shuuekikin\ ;
+氷菓子 > koorigashi\ ;
+軽工業 > keikougyou\ ;
+記憶力 > kiokuryoku\ ;
+即興詩 > sokkyoushi\ ;
+古生物 > koseibutsu\ ;
+熱愛者 > netsuaisha\ ;
+天頂点 > tenchouten\ ;
+無資力 > mushiryoku\ ;
+興行権 > kougyouken\ ;
+松根油 > shoukon''yu\ ;
+百済楽 > kudaragaku\ ;
+在任中 > zaininchuu\ ;
+滞在中 > taizaichuu\ ;
+出版社 > shuppansha\ ;
+製茶業 > seichagyou\ ;
+貿易商 > bouekishou\ ;
+国務省 > kokumushou\ ;
+中南米 > chuunanbei\ ;
+桐一葉 > kirihitoha\ ;
+初節供 > hatsuzekku\ ;
+入選者 > nyuusensha\ ;
+縦社会 > tateshakai\ ;
+操縦席 > soujuuseki\ ;
+周旋屋 > shuusen''ya\ ;
+文学士 > bungakushi\ ;
+工学者 > kougakusha\ ;
+古伝説 > kodensetsu\ ;
+印刷工 > insatsukou\ ;
+潜水服 > sensuifuku\ ;
+大主教 > daishukyou\ ;
+上場株 > joujoukabu\ ;
+類型的 > ruikeiteki\ ;
+吹出物 > fukidemono\ ;
+抗真菌 > koushinkin\ ;
+難波潟 > naniwagata\ ;
+租借地 > soshakuchi\ ;
+加農砲 > kan''nonhou\ ;
+造石税 > zoukokuzei\ ;
+駐車場 > chuushajou\ ;
+試算表 > shisanhyou\ ;
+経済学 > keizaigaku\ ;
+急勾配 > kyuukoubai\ ;
+儀式用 > gishikiyou\ ;
+血栓症 > kessenshou\ ;
+伊達姿 > datesugata\ ;
+病原体 > byougentai\ ;
+八分目 > hachibunme\ ;
+解析性 > kaisekisei\ ;
+客観性 > kyakkansei\ ;
+超媒体 > choubaitai\ ;
+水芭蕉 > mizubashou\ ;
+長期的 > choukiteki\ ;
+眼鏡蛇 > meganehebi\ ;
+出版界 > shuppankai\ ;
+弁償金 > benshoukin\ ;
+排外的 > haigaiteki\ ;
+未熟者 > mijukumono\ ;
+分散型 > bunsangata\ ;
+短編集 > tanpenshuu\ ;
+淡路島 > awajishima\ ;
+増殖炉 > zoushokuro\ ;
+下見板 > shitamiita\ ;
+分教場 > bunkyoujou\ ;
+史料館 > shiryoukan\ ;
+血小板 > kesshouban\ ;
+金色堂 > konjikidou\ ;
+漢方薬 > kanpouyaku\ ;
+翻訳家 > hon''yakuka\ ;
+平等観 > byoudoukan\ ;
+検査官 > kenshoukan\ ;
+文学史 > bungakushi\ ;
+変分学 > henbungaku\ ;
+前栽物 > senzaimono\ ;
+強壮剤 > kyousouzai\ ;
+海産業 > kaisangyou\ ;
+献納者 > ken''nousha\ ;
+六連星 > rokurensei\ ;
+勅願寺 > chokuganji\ ;
+伝染病 > densenbyou\ ;
+中華鍋 > chuukanabe\ ;
+天上川 > tenjougawa\ ;
+洋芥子 > yougarashi\ ;
+皆勤賞 > kaikinshou\ ;
+金属片 > kinzokuhen\ ;
+奇術師 > kijutsushi\ ;
+増加率 > zoukaritsu\ ;
+標準型 > hyoujunkei\ ;
+金赤色 > kin''akairo\ ;
+責任感 > sekininkan\ ;
+淋巴節 > rinpasetsu\ ;
+供物台 > kumotsudai\ ;
+米国人 > beikokujin\ ;
+等温式 > touonshiki\ ;
+前任者 > zen''ninsha\ ;
+製造元 > seizoumoto\ ;
+情報量 > jouhouryou\ ;
+消耗品 > shoumouhin\ ;
+両手利 > ryoutekiki\ ;
+蓄電器 > chikudenki\ ;
+対角線 > taikakusen\ ;
+一晩中 > hitobanjuu\ ;
+暗剣殺 > ankensatsu\ ;
+頭足類 > tousokurui\ ;
+在東京 > zaitoukyou\ ;
+棄言葉 > sutekotoba\ ;
+免税表 > menzeihyou\ ;
+国民性 > kokuminsei\ ;
+彫刻家 > choukokuka\ ;
+読書界 > dokushokai\ ;
+使用料 > shiyouryou\ ;
+居留民 > kyoryuumin\ ;
+旋光角 > senkoukaku\ ;
+小間使 > komadzukai\ ;
+角膜炎 > kakumakuen\ ;
+鰭脚類 > kikyakurui\ ;
+鑑識家 > kanshikika\ ;
+興行師 > kougyoushi\ ;
+嬶天下 > kakaadenka\ ;
+固形物 > kokeibutsu\ ;
+紡績糸 > bousekiito\ ;
+吝嗇家 > rinshokuka\ ;
+為替尻 > kawasejiri\ ;
+読者欄 > dokusharan\ ;
+厄介物 > yakkaimono\ ;
+出世作 > shussesaku\ ;
+動摩擦 > doumasatsu\ ;
+部分食 > bubunshoku\ ;
+出版法 > shuppanhou\ ;
+課題曲 > kadaikyoku\ ;
+殺虫剤 > satchuuzai\ ;
+薄雪草 > usuyukisou\ ;
+人体学 > jintaigaku\ ;
+平城京 > heijoukyou\ ;
+三角帽 > sankakubou\ ;
+衝撃波 > shougekiha\ ;
+三角巾 > sankakukin\ ;
+郵送料 > yuusouryou\ ;
+石炭酸 > sekitansan\ ;
+征服者 > seifukusha\ ;
+強行軍 > kyoukougun\ ;
+代表団 > daihyoudan\ ;
+脚本家 > kyakuhonka\ ;
+菓子鉢 > kashibachi\ ;
+直円錐 > chokuensui\ ;
+出版権 > shuppanken\ ;
+再服役 > saifukueki\ ;
+生放送 > namahousou\ ;
+計算尺 > keisanjaku\ ;
+通勤者 > tsuukinsha\ ;
+一塁線 > ichiruisen\ ;
+液量計 > ekiryoukei\ ;
+切支丹 > kirishitan\ ;
+闇市場 > yamishijou\ ;
+障害者 > shougaisha\ ;
+貴族的 > kizokuteki\ ;
+印刷人 > insatsunin\ ;
+海賊船 > kaizokusen\ ;
+南南西 > nan''nansei\ ;
+脳振盪 > noushintou\ ;
+抽象化 > chuushouka\ ;
+講習会 > koushuukai\ ;
+愛玩物 > aiganbutsu\ ;
+麻雀屋 > mazejan''ya\ ;
+伝染毒 > densendoku\ ;
+他国者 > takokumono\ ;
+重層的 > juusouteki\ ;
+五重塔 > gojuunotou\ ;
+下級審 > kakyuushin\ ;
+低所得 > teishotoku\ ;
+専門章 > senmonshou\ ;
+鋳造所 > chuuzousho\ ;
+短時日 > tanjijitsu\ ;
+休業日 > kyuugyoubi\ ;
+先端的 > sentanteki\ ;
+喧嘩腰 > kenkagoshi\ ;
+草双紙 > kusazoushi\ ;
+空想的 > kuusouteki\ ;
+雪達磨 > yukidaruma\ ;
+内交渉 > naikoushou\ ;
+広告社 > koukokusha\ ;
+貨物駅 > kamotsueki\ ;
+貧乏籤 > binbouguji\ ;
+対話式 > taiwashiki\ ;
+共産軍 > kyousangun\ ;
+不承諾 > fushoudaku\ ;
+求人誌 > kyuujinshi\ ;
+鞭毛虫 > benmouchuu\ ;
+簡単服 > kantanfuku\ ;
+中性子 > chuuseishi\ ;
+黒穂病 > kurohobyou\ ;
+分担額 > buntangaku\ ;
+太陽虫 > taiyouchuu\ ;
+暫定的 > zanteiteki\ ;
+代表例 > daihyourei\ ;
+同国民 > doukokumin\ ;
+記念物 > kinenbutsu\ ;
+旧体制 > kyuutaisei\ ;
+南洋材 > nan''youzai\ ;
+非常口 > hijouguchi\ ;
+上表紙 > uwabyoushi\ ;
+面白味 > omoshiromi\ ;
+保存食 > hozonshoku\ ;
+半意識 > han''ishiki\ ;
+本調子 > honchoushi\ ;
+織女星 > shokujosei\ ;
+専門的 > senmonteki\ ;
+報償金 > houshoukin\ ;
+擲弾筒 > tekidantou\ ;
+貧乏神 > binbougami\ ;
+回漕業 > kaisougyou\ ;
+大統領 > daitouryou\ ;
+量子論 > ryoushiron\ ;
+中力粉 > chuurikiko\ ;
+眼鏡猿 > meganezaru\ ;
+業界紙 > gyoukaishi\ ;
+非公式 > hikoushiki\ ;
+水兵服 > suiheifuku\ ;
+貯木場 > chobokujou\ ;
+梯子段 > hashigodan\ ;
+当歳駒 > tousaigoma\ ;
+宗教家 > shuukyouka\ ;
+研究官 > kenkyuukan\ ;
+殉教者 > junkyousha\ ;
+殉難者 > jun''nansha\ ;
+壁訴訟 > kabezoshou\ ;
+玉整理 > gyokuseiri\ ;
+茨城県 > ibarakiken\ ;
+屈曲部 > kukkyokubu\ ;
+褒奨金 > houshoukin\ ;
+消防隊 > shouboutai\ ;
+朧昆布 > oborokonbu\ ;
+看病人 > kanbyounin\ ;
+花電車 > hanadensha\ ;
+地文学 > chimongaku\ ;
+口供書 > koukyousho\ ;
+金属性 > kinzokusei\ ;
+草野球 > kusayakyuu\ ;
+検事局 > kenjikyoku\ ;
+六辺形 > rokuhenkei\ ;
+読者層 > dokushasou\ ;
+催促状 > saisokujou\ ;
+傾斜角 > keishakaku\ ;
+収監状 > shuukanjou\ ;
+地震学 > jishingaku\ ;
+在世中 > zaiseichuu\ ;
+奥座敷 > okuzashiki\ ;
+美術館 > bijutsukan\ ;
+許容量 > kyoyouryou\ ;
+射撃場 > shagekijou\ ;
+後天的 > koutenteki\ ;
+駐屯地 > chuutonchi\ ;
+脳溢血 > nouikketsu\ ;
+存命中 > zonmeichuu\ ;
+系列化 > keiretsuka\ ;
+出版屋 > shuppan''ya\ ;
+審美的 > shinbiteki\ ;
+恒久性 > koukyuusei\ ;
+片貿易 > kataboueki\ ;
+文献学 > bunkengaku\ ;
+時代色 > jidaishoku\ ;
+大大的 > daidaiteki\ ;
+二重橋 > nijuubashi\ ;
+地誌学 > chishigaku\ ;
+化学的 > kagakuteki\ ;
+肉弾戦 > nikudansen\ ;
+一絃琴 > ichigenkin\ ;
+遊牧民 > yuubokumin\ ;
+核実験 > kakujikken\ ;
+貨物車 > kamotsusha\ ;
+求人者 > kyuujinsha\ ;
+地震国 > jishinkoku\ ;
+居留地 > kyoryuuchi\ ;
+障子紙 > shoujigami\ ;
+潜函病 > senkanbyou\ ;
+引率者 > insotsusha\ ;
+海賊版 > kaizokuban\ ;
+信仰者 > shinkousha\ ;
+消防車 > shoubousha\ ;
+三等賞 > santoushou\ ;
+無警察 > mukeisatsu\ ;
+彩色画 > saishokuga\ ;
+勧告者 > kankokusha\ ;
+広告欄 > koukokuran\ ;
+賞金王 > shoukin''ou\ ;
+通知状 > tsuuchijou\ ;
+工作品 > kousakuhin\ ;
+地政学 > chiseigaku\ ;
+太陽神 > taiyoushin\ ;
+継承者 > keishousha\ ;
+乳製品 > nyuuseihin\ ;
+遊撃隊 > yuugekitai\ ;
+卑怯者 > hikyoumono\ ;
+再教育 > saikyouiku\ ;
+国内線 > kokunaisen\ ;
+噛煙草 > kamitabako\ ;
+慈善市 > jizen''ichi\ ;
+回想録 > kaisouroku\ ;
+外交的 > gaikouteki\ ;
+修理中 > shuurichuu\ ;
+三等親 > santoushin\ ;
+地表面 > chihyoumen\ ;
+干渉計 > kanshoukei\ ;
+研究会 > kenkyuukai\ ;
+肖像権 > shouzouken\ ;
+役不足 > yakubusoku\ ;
+注意力 > chuuiryoku\ ;
+腹上死 > fukujoushi\ ;
+編集者 > henshuusha\ ;
+広告板 > koukokuban\ ;
+渉禽類 > shoukinrui\ ;
+倒錯者 > tousakusha\ ;
+水疱瘡 > mizubousou\ ;
+平等権 > byoudouken\ ;
+大震災 > daishinsai\ ;
+重症例 > juushourei\ ;
+地域的 > chiikiteki\ ;
+共産系 > kyousankei\ ;
+開閉橋 > kaiheikyou\ ;
+超電導 > choudendou\ ;
+陳情書 > chinjousho\ ;
+投機熱 > toukinetsu\ ;
+冗談事 > joudankoto\ ;
+最高級 > saikoukyuu\ ;
+思惑師 > omowakushi\ ;
+西日本 > nishinihon\ ;
+近代的 > kindaiteki\ ;
+超大型 > chouoogata\ ;
+砕氷船 > saihyousen\ ;
+漁業法 > gyogyouhou\ ;
+未解決 > mikaiketsu\ ;
+巨人国 > kyojinkoku\ ;
+最小限 > saishougen\ ;
+公共性 > koukyousei\ ;
+無精髭 > bushouhige\ ;
+工学士 > kougakushi\ ;
+酒造業 > shuzougyou\ ;
+色鉛筆 > iroenpitsu\ ;
+火打石 > hiuchiishi\ ;
+醸造業 > jouzougyou\ ;
+単眼鏡 > tangankyou\ ;
+漁業権 > gyogyouken\ ;
+石灯籠 > ishidourou\ ;
+南氷洋 > nanpyouyou\ ;
+鱈場蟹 > tarabagani\ ;
+岡山県 > okayamaken\ ;
+紡績工 > bousekikou\ ;
+起爆薬 > kibakuyaku\ ;
+確認書 > kakuninsho\ ;
+誕生石 > tanjouseki\ ;
+防臭剤 > boushuuzai\ ;
+錫製品 > suzuseihin\ ;
+貨物船 > kamotsusen\ ;
+一塁手 > ichiruishu\ ;
+脚線美 > kyakusenbi\ ;
+有価物 > yuukabutsu\ ;
+植生図 > shokuseizu\ ;
+発情期 > hatsujouki\ ;
+白水社 > hakusuisha\ ;
+採算株 > saisankabu\ ;
+長丁場 > nagachouba\ ;
+有孔虫 > yuukouchuu\ ;
+天然痘 > ten''nentou\ ;
+四拍子 > yonbyoushi\ ;
+冗長系 > jouchoukei\ ;
+日本式 > nihonshiki\ ;
+満年齢 > man''nenrei\ ;
+消防艇 > shouboutei\ ;
+小液胞 > shouekihou\ ;
+首唱者 > shushousha\ ;
+日本平 > nihondaira\ ;
+鉄面皮 > tetsumenpi\ ;
+主権国 > shukenkoku\ ;
+買掛金 > kaikakekin\ ;
+石灰石 > sekkaiseki\ ;
+米問屋 > komedon''ya\ ;
+思想劇 > shisougeki\ ;
+万国民 > bankokumin\ ;
+勧告状 > kankokujou\ ;
+敗北感 > haibokukan\ ;
+密輸船 > mitsuyusen\ ;
+可変翼 > kahen''yoku\ ;
+偏頭痛 > hentoutsuu\ ;
+年齢給 > nenreikyuu\ ;
+透磁率 > toujiritsu\ ;
+厄介事 > yakkaigoto\ ;
+伏射濠 > fukushagou\ ;
+懸壅垂 > ken''yousui\ ;
+界磁極 > kaijikyoku\ ;
+応用力 > ouyouryoku\ ;
+日曜日 > nichiyoubi\ ;
+消防署 > shoubousho\ ;
+貧乏性 > binboushou\ ;
+核崩壊 > kakuhoukai\ ;
+読書会 > dokushokai\ ;
+不潔感 > fuketsukan\ ;
+数学者 > suugakusha\ ;
+聴取者 > choushusha\ ;
+読書人 > dokushojin\ ;
+前任地 > zen''ninchi\ ;
+漁色家 > gyoshokuka\ ;
+製作者 > seisakusha\ ;
+没個性 > botsukosei\ ;
+全店中 > zentenchuu\ ;
+官給品 > kankyuuhin\ ;
+白金族 > hakkinzoku\ ;
+天文学 > tenmongaku\ ;
+兵学者 > heigakusha\ ;
+合唱隊 > gasshoutai\ ;
+不成立 > fuseiritsu\ ;
+献納品 > ken''nouhin\ ;
+細粒分 > sairyuubun\ ;
+猛練習 > mourenshuu\ ;
+例外的 > reigaiteki\ ;
+効率化 > kouritsuka\ ;
+除虫菊 > jochuugiku\ ;
+紅生姜 > benishouga\ ;
+干拓地 > kantakuchi\ ;
+凍傷者 > toushousha\ ;
+南南東 > nan''nantou\ ;
+同国人 > doukokujin\ ;
+目的語 > mokutekigo\ ;
+三国志 > sangokushi\ ;
+人物画 > jinbutsuga\ ;
+吸入器 > kyuunyuuki\ ;
+防寒服 > boukanfuku\ ;
+修院長 > shuuinchou\ ;
+国内法 > kokunaihou\ ;
+探究者 > tankyuusha\ ;
+初心者 > shoshinsha\ ;
+未開発 > mikaihatsu\ ;
+広告塔 > koukokutou\ ;
+開拓者 > kaitakusha\ ;
+人類学 > jinruigaku\ ;
+知日派 > chinichiha\ ;
+最高潮 > saikouchou\ ;
+天然港 > ten''nenkou\ ;
+反逆児 > hangyakuji\ ;
+一国者 > ikkokumono\ ;
+好材料 > kouzairyou\ ;
+太陽暦 > taiyoureki\ ;
+常用癖 > jouyouheki\ ;
+早教育 > soukyouiku\ ;
+格子縞 > koushijima\ ;
+反軍的 > hangunteki\ ;
+薬包紙 > yakuhoushi\ ;
+兵曹長 > heisouchou\ ;
+漢文学 > kanbungaku\ ;
+急先鋒 > kyuusenpou\ ;
+口奇麗 > kuchigirei\ ;
+行政法 > gyouseihou\ ;
+花言葉 > hanakotoba\ ;
+送金額 > soukingaku\ ;
+求婚者 > kyuukonsha\ ;
+再調整 > saichousei\ ;
+風見鶏 > kazamidori\ ;
+執政官 > shisseikan\ ;
+能楽堂 > nougakudou\ ;
+好下物 > koukabutsu\ ;
+双発機 > souhatsuki\ ;
+公共債 > koukyousai\ ;
+昨年来 > sakunenrai\ ;
+提供者 > teikyousha\ ;
+醸造学 > jouzougaku\ ;
+得点圏 > tokutenken\ ;
+審美学 > shinbigaku\ ;
+女便所 > on''nabenjo\ ;
+呉服物 > gofukumono\ ;
+症候群 > shoukougun\ ;
+格子窓 > koushimado\ ;
+文明国 > bunmeikoku\ ;
+行政権 > gyouseiken\ ;
+金木犀 > kinmokusei\ ;
+科学的 > kagakuteki\ ;
+手札型 > tefudagata\ ;
+全般的 > zenpanteki\ ;
+特殊鋼 > tokushukou\ ;
+圧縮性 > asshukusei\ ;
+官房長 > kanbouchou\ ;
+白砂糖 > shirozatou\ ;
+春分点 > shunbunten\ ;
+旧主人 > kyuushujin\ ;
+葉緑素 > youryokuso\ ;
+内面的 > naimenteki\ ;
+肺結核 > haikekkaku\ ;
+回収金 > kaishuukin\ ;
+綿帽子 > wataboushi\ ;
+急進派 > kyuushinha\ ;
+芸術院 > geijutsuin\ ;
+榴弾砲 > ryuudanpou\ ;
+冒険心 > boukenshin\ ;
+可燃物 > kanenbutsu\ ;
+日本一 > nihon''ichi\ ;
+修練者 > shuurensha\ ;
+反射鏡 > hanshakyou\ ;
+二直角 > nichokkaku\ ;
+型変換 > katahenkan\ ;
+去勢牛 > kyoseiushi\ ;
+犯罪学 > hanzaigaku\ ;
+原籍地 > gensekichi\ ;
+性道徳 > seidoutoku\ ;
+平滑化 > heikatsuka\ ;
+郵便箱 > yuubinbako\ ;
+受信料 > jushinryou\ ;
+再組織 > saisoshiki\ ;
+美術界 > bijutsukai\ ;
+不等式 > fudoushiki\ ;
+約定書 > yakujousho\ ;
+三箇日 > sanganichi\ ;
+発祥地 > hasshouchi\ ;
+勝手口 > katteguchi\ ;
+夕食後 > yuushokugo\ ;
+搬入日 > han''nyuubi\ ;
+豪商層 > goushousou\ ;
+奴豆腐 > yakkodoufu\ ;
+感覚論 > kankakuron\ ;
+国産車 > kokusansha\ ;
+不流通 > furyuutsuu\ ;
+橋頭堡 > kyoutouhou\ ;
+夏時間 > natsujikan\ ;
+石炭層 > sekitansou\ ;
+絹一匹 > kinuippiki\ ;
+建白書 > kenpakusho\ ;
+消防法 > shoubouhou\ ;
+中近東 > chuukintou\ ;
+証人台 > shounindai\ ;
+水産業 > suisangyou\ ;
+奇想曲 > kisoukyoku\ ;
+比例式 > hireishiki\ ;
+男所帯 > otokojotai\ ;
+修整版 > shuuseihan\ ;
+冷水浴 > reisuiyoku\ ;
+夏羽織 > natsubaori\ ;
+褒言葉 > homekotoba\ ;
+事務机 > jimudzukue\ ;
+主催国 > shusaikoku\ ;
+大外刈 > oosotogari\ ;
+清算人 > seisan''nin\ ;
+住民票 > juuminhyou\ ;
+無線局 > musenkyoku\ ;
+悪材料 > akuzairyou\ ;
+日照計 > nisshoukei\ ;
+支持率 > shijiritsu\ ;
+二連発 > nirenpatsu\ ;
+具象的 > gushouteki\ ;
+副抵当 > fukuteitou\ ;
+胸膜炎 > kyoumakuen\ ;
+除湿器 > joshitsuki\ ;
+乗換駅 > norikaeeki\ ;
+古本屋 > furuhon''ya\ ;
+巨大症 > kyodaishou\ ;
+知日家 > chinichika\ ;
+白眼視 > hakuganshi\ ;
+照射法 > shoushahou\ ;
+赤信号 > akashingou\ ;
+長方形 > chouhoukei\ ;
+万国史 > bankokushi\ ;
+造兵廠 > zouheishou\ ;
+東京湾 > toukyouwan\ ;
+独創性 > dokusousei\ ;
+放浪癖 > hourouheki\ ;
+行政官 > gyouseikan\ ;
+没趣味 > botsushumi\ ;
+陶酔境 > tousuikyou\ ;
+反射角 > hanshakaku\ ;
+公生涯 > koushougai\ ;
+特効薬 > tokkouyaku\ ;
+多項式 > takoushiki\ ;
+表情筋 > hyoujoukin\ ;
+利益率 > riekiritsu\ ;
+三拍子 > sanbyoushi\ ;
+量販店 > ryouhanten\ ;
+編集子 > henshuushi\ ;
+冗長性 > jouchousei\ ;
+鼻眼鏡 > hanamegane\ ;
+内視鏡 > naishikyou\ ;
+赤翡翠 > akashoubin\ ;
+熱機関 > netsukikan\ ;
+摂護腺 > setsugosen\ ;
+対抗策 > taikousaku\ ;
+近代劇 > kindaigeki\ ;
+徹底的 > tetteiteki\ ;
+歴代史 > rekidaishi\ ;
+早見表 > hayamihyou\ ;
+投射角 > toushakaku\ ;
+監督者 > kantokusha\ ;
+共産圏 > kyousanken\ ;
+実行中 > jikkouchuu\ ;
+猛攻撃 > moukougeki\ ;
+電子殻 > denshikaku\ ;
+村役場 > murayakuba\ ;
+陸軟風 > rikunanpuu\ ;
+政治色 > seijishoku\ ;
+母子草 > hahakogusa\ ;
+特待生 > tokutaisei\ ;
+中盤戦 > chuubansen\ ;
+舞踏靴 > butougutsu\ ;
+大陪審 > daibaishin\ ;
+無縁仏 > muenbotoke\ ;
+認定証 > ninteishou\ ;
+美術書 > bijutsusho\ ;
+計量法 > keiryouhou\ ;
+原振動 > genshindou\ ;
+学芸会 > gakugeikai\ ;
+脂肪心 > shiboushin\ ;
+狸饂飩 > tanukiudon\ ;
+水産庁 > suisanchou\ ;
+合憲的 > goukenteki\ ;
+主体的 > shutaiteki\ ;
+窃盗狂 > settoukyou\ ;
+女一般 > on''naippan\ ;
+決勝線 > kesshousen\ ;
+口上手 > kuchijouzu\ ;
+工場長 > koujouchou\ ;
+旗二流 > hataniryuu\ ;
+即位式 > sokuishiki\ ;
+懐柔策 > kaijuusaku\ ;
+幻想劇 > gensougeki\ ;
+事務室 > jimushitsu\ ;
+超規則 > choukisoku\ ;
+核家族 > kakukazoku\ ;
+夕月夜 > yuudzukeyo\ ;
+大衆車 > daishuusha\ ;
+無籍者 > musekimono\ ;
+日独伊 > nichidokui\ ;
+悪習慣 > akushuukan\ ;
+硫酸銅 > ryuusandou\ ;
+水産学 > suisangaku\ ;
+幸福感 > koufukukan\ ;
+賠償金 > baishoukin\ ;
+共産党 > kyousantou\ ;
+船板塀 > funaitabei\ ;
+全学連 > zengakuren\ ;
+直走路 > chokusouro\ ;
+氷豆腐 > kooridoufu\ ;
+入居者 > nyuukyosha\ ;
+日陰者 > hikagemono\ ;
+絶縁線 > zetsuensen\ ;
+品評会 > hinpyoukai\ ;
+水瓶座 > mizugameza\ ;
+各団体 > kakudantai\ ;
+来来週 > rairaishuu\ ;
+四十雀 > shijuukara\ ;
+通用門 > tsuuyoumon\ ;
+爪楊枝 > tsumayouji\ ;
+散髪屋 > sanpatsuya\ ;
+校正刷 > kouseizuri\ ;
+黒眼鏡 > kuromegane\ ;
+造船業 > zousengyou\ ;
+観劇会 > kangekikai\ ;
+公害病 > kougaibyou\ ;
+受信側 > jushingawa\ ;
+企業心 > kigyoushin\ ;
+修繕工 > shuuzenkou\ ;
+単身銃 > tanshinjuu\ ;
+百年目 > hyakunenme\ ;
+没理想 > botsurisou\ ;
+静脈炎 > joumyakuen\ ;
+全能者 > zen''nousha\ ;
+呉服商 > gofukushou\ ;
+省資源 > shoushigen\ ;
+集合論 > shuugouron\ ;
+禁煙席 > kin''enseki\ ;
+長方体 > chouhoutai\ ;
+受信人 > jushin''nin\ ;
+旗二旒 > hataniryuu\ ;
+急停車 > kyuuteisha\ ;
+糞度胸 > kusodokyou\ ;
+消防士 > shouboushi\ ;
+有理式 > yuurishiki\ ;
+終列車 > shuuressha\ ;
+所有格 > shoyuukaku\ ;
+知覚知 > chikakuchi\ ;
+遊撃手 > yuugekishu\ ;
+解熱剤 > genetsuzai\ ;
+店屋物 > ten''yamono\ ;
+遊撃戦 > yuugekisen\ ;
+山水閣 > sansuikaku\ ;
+説教師 > sekkyoushi\ ;
+島帝国 > touteikoku\ ;
+卑劣漢 > hiretsukan\ ;
+全生涯 > zenshougai\ ;
+全会衆 > zenkaishuu\ ;
+収容者 > shuuyousha\ ;
+解集合 > kaishuugou\ ;
+相対的 > soutaiteki\ ;
+石灰乳 > sekkainyuu\ ;
+共有者 > kyouyuusha\ ;
+指定席 > shiteiseki\ ;
+商品名 > shouhinmei\ ;
+根本的 > konponteki\ ;
+美術展 > bijutsuten\ ;
+縞模様 > shimamoyou\ ;
+消防団 > shouboudan\ ;
+乾葡萄 > hoshibudou\ ;
+羽根車 > haneguruma\ ;
+発動機 > hatsudouki\ ;
+闘牛士 > tougyuushi\ ;
+同情票 > doujouhyou\ ;
+入会金 > nyuukaikin\ ;
+熱硬化 > netsukouka\ ;
+闘牛場 > tougyuujou\ ;
+反対票 > hantaihyou\ ;
+冷却器 > reikyakuki\ ;
+借入金 > kariirekin\ ;
+商品券 > shouhinken\ ;
+歓楽街 > kanrakugai\ ;
+研削盤 > kensakuban\ ;
+本籍地 > honsekichi\ ;
+気欝症 > kiutsushou\ ;
+恋女房 > koinyoubou\ ;
+脳神経 > noushinkei\ ;
+膠原病 > kougenbyou\ ;
+牽制球 > kenseikyuu\ ;
+新造船 > shinzousen\ ;
+感覚点 > kankakuten\ ;
+偽君子 > nisekunshi\ ;
+決勝点 > kesshouten\ ;
+多数決 > tasuuketsu\ ;
+意識的 > ishikiteki\ ;
+反射的 > hanshateki\ ;
+不活発 > fukappatsu\ ;
+受領証 > juryoushou\ ;
+純文学 > junbungaku\ ;
+特急券 > tokkyuuken\ ;
+黄金術 > ougonjutsu\ ;
+仮勘定 > karikanjou\ ;
+霊長類 > reichourui\ ;
+全身像 > zenshinzou\ ;
+密輸品 > mitsuyuhin\ ;
+既設線 > kisetsusen\ ;
+二連式 > nirenshiki\ ;
+減速材 > gensokuzai\ ;
+光磁気 > hikarijiki\ ;
+証明書 > shoumeisho\ ;
+開拓地 > kaitakuchi\ ;
+記述子 > kijutsushi\ ;
+仮免許 > karimenkyo\ ;
+印象的 > inshouteki\ ;
+旧教徒 > kyuukyouto\ ;
+貨物便 > kamotsubin\ ;
+有望株 > yuuboukabu\ ;
+慣例的 > kanreiteki\ ;
+観相学 > kansougaku\ ;
+肉用種 > nikuyoushu\ ;
+基地局 > kichikyoku\ ;
+視神経 > shishinkei\ ;
+適応症 > tekioushou\ ;
+中高生 > chuukousei\ ;
+下準備 > shitajunbi\ ;
+信頼感 > shinraikan\ ;
+発酵乳 > hakkounyuu\ ;
+旅芸人 > tabigeinin\ ;
+人雪崩 > hitonadare\ ;
+主信号 > shushingou\ ;
+信奉者 > shinpousha\ ;
+尺貫法 > shakkanhou\ ;
+美術品 > bijutsuhin\ ;
+通信費 > tsuushinhi\ ;
+信頼性 > shinraisei\ ;
+感覚毛 > kankakumou\ ;
+順応性 > jun''nousei\ ;
+常習者 > joushuusha\ ;
+美術史 > bijutsushi\ ;
+檀那寺 > dan''nadera\ ;
+千歳飴 > chitoseame\ ;
+製材業 > seizaigyou\ ;
+新機軸 > shinkijiku\ ;
+肉饅頭 > nikumanjuu\ ;
+水資源 > mizushigen\ ;
+白鳥座 > hakuchouza\ ;
+百分比 > hyakubunhi\ ;
+試金石 > shikinseki\ ;
+優等賞 > yuutoushou\ ;
+大衆紙 > taishuushi\ ;
+花見時 > hanamidoki\ ;
+塗擦剤 > tosatsuzai\ ;
+木製品 > mokuseihin\ ;
+内角球 > naikakkyuu\ ;
+饒舌家 > jouzetsuka\ ;
+熱処理 > netsushori\ ;
+新幹線 > shinkansen\ ;
+動向表 > doukouhyou\ ;
+交響詩 > koukyoushi\ ;
+挨拶状 > aisatsujou\ ;
+陥没湖 > kanbotsuko\ ;
+不活溌 > fukappatsu\ ;
+信天翁 > shinten''ou\ ;
+起電力 > kidenryoku\ ;
+鎮魂祭 > chinkonsai\ ;
+舶来品 > hakuraihin\ ;
+手塩皿 > teshiozara\ ;
+黒底翳 > kurosokohi\ ;
+学生帽 > gakuseibou\ ;
+水栽培 > mizusaibai\ ;
+営造物 > eizoubutsu\ ;
+日照権 > nisshouken\ ;
+光量子 > kouryoushi\ ;
+万愚節 > bangusetsu\ ;
+能狂言 > noukyougen\ ;
+支持力 > shijiryoku\ ;
+統計表 > toukeihyou\ ;
+先史学 > senshigaku\ ;
+硫酸紙 > ryuusanshi\ ;
+性差別 > seisabetsu\ ;
+本国人 > hongokujin\ ;
+巨視的 > kyoshiteki\ ;
+転轍機 > tentetsuki\ ;
+表忠碑 > hyouchuuhi\ ;
+収賄罪 > shuuwaizai\ ;
+薬剤師 > yakuzaishi\ ;
+後見人 > kouken''nin\ ;
+連用形 > ren''youkei\ ;
+余白注 > yohakuchuu\ ;
+伝統的 > dentouteki\ ;
+親権者 > shinkensha\ ;
+円天井 > marutenjou\ ;
+少年院 > shounen''in\ ;
+歴青炭 > rekiseitan\ ;
+蠏工船 > kanikousen\ ;
+目八分 > mehachibun\ ;
+四十肩 > shijuukata\ ;
+楽観的 > rakkanteki\ ;
+心停止 > shinteishi\ ;
+速射砲 > sokushahou\ ;
+多角的 > takakuteki\ ;
+新建材 > shinkenzai\ ;
+決勝戦 > kesshousen\ ;
+不必要 > fuhitsuyou\ ;
+扁青石 > henseiseki\ ;
+双球菌 > soukyuukin\ ;
+水羊羮 > mizuyoukan\ ;
+抜本的 > bapponteki\ ;
+単発機 > tanpatsuki\ ;
+転送先 > tensousaki\ ;
+入会者 > nyuukaisha\ ;
+丸木船 > marukibune\ ;
+丸木舟 > marukibune\ ;
+希釈液 > kishakueki\ ;
+月曜日 > getsuyoubi\ ;
+最賃法 > saichinhou\ ;
+革新派 > kakushinha\ ;
+探求者 > tankyuusha\ ;
+戦病死 > senbyoushi\ ;
+男性的 > danseiteki\ ;
+乳酸菌 > nyuusankin\ ;
+前照灯 > zenshoutou\ ;
+腸捻転 > chounenten\ ;
+親分株 > oyabunkabu\ ;
+学用品 > gakuyouhin\ ;
+特殊性 > tokushusei\ ;
+単色画 > tanshokuga\ ;
+仕立券 > shitateken\ ;
+陰弁慶 > kagebenkei\ ;
+混血児 > konketsuji\ ;
+販売元 > hanbaimoto\ ;
+常習犯 > joushuuhan\ ;
+清涼剤 > seiryouzai\ ;
+最小値 > saishouchi\ ;
+水族館 > suizokukan\ ;
+共犯者 > kyouhansha\ ;
+寿司飯 > sushimeshi\ ;
+急転換 > kyuutenkan\ ;
+招待状 > shoutaijou\ ;
+打撲傷 > dabokushou\ ;
+特待券 > tokutaiken\ ;
+毒人参 > dokuninjin\ ;
+天竺葵 > tenjikuaoi\ ;
+女世帯 > on''najotai\ ;
+人間的 > ningenteki\ ;
+診断書 > shindansho\ ;
+蘚苔学 > sentaigaku\ ;
+原稿料 > genkouryou\ ;
+監督官 > kantokukan\ ;
+商務省 > shoumushou\ ;
+宣告書 > senkokusho\ ;
+夜夜中 > yoruyonaka\ ;
+通信簿 > tsuushinbo\ ;
+堆積岩 > taisekigan\ ;
+抑留所 > yokuryuujo\ ;
+撞木杖 > shumokuzue\ ;
+黄金率 > ougonritsu\ ;
+堆積層 > taisekisou\ ;
+合唱団 > gasshoudan\ ;
+好敵手 > koutekishu\ ;
+文章題 > bunshoudai\ ;
+金物屋 > kanamonoya\ ;
+団菊祭 > dangikusai\ ;
+緩衝液 > kanshoueki\ ;
+寄宿舎 > kishukusha\ ;
+潜望鏡 > senboukyou\ ;
+新左翼 > shinsayoku\ ;
+遡及的 > sokyuuteki\ ;
+同情心 > doujoushin\ ;
+下稽古 > shitageiko\ ;
+競争者 > kyousousha\ ;
+商店街 > shoutengai\ ;
+玉手箱 > tamatebako\ ;
+上半身 > jouhanshin\ ;
+測定法 > sokuteihou\ ;
+降圧剤 > kouatsuzai\ ;
+急傾斜 > kyuukeisha\ ;
+両棲類 > ryouseirui\ ;
+最上級 > saijoukyuu\ ;
+偃月刀 > engetsutou\ ;
+看護卒 > kangosotsu\ ;
+罫線表 > keisenhyou\ ;
+針土竜 > harimogura\ ;
+灯台守 > toudaimori\ ;
+仮免状 > karimenjou\ ;
+弾薬庫 > dan''yakuko\ ;
+合法的 > gouhouteki\ ;
+挫折感 > zasetsukan\ ;
+干葡萄 > hoshibudou\ ;
+赤新聞 > akashinbun\ ;
+膠着語 > kouchakugo\ ;
+終止形 > shuushikei\ ;
+出港船 > shukkousen\ ;
+輸入額 > yunyuugaku\ ;
+甲殻類 > koukakurui\ ;
+障壁画 > shouhekiga\ ;
+溶接機 > yousetsuki\ ;
+乗組員 > norikumiin\ ;
+腎臓病 > jinzoubyou\ ;
+可搬式 > kahanshiki\ ;
+健筆家 > kenpitsuka\ ;
+正中線 > seichuusen\ ;
+千年間 > sen''nenkan\ ;
+棒磁石 > boujishaku\ ;
+観賞魚 > kanshougyo\ ;
+神学校 > shingakkou\ ;
+作業服 > sagyoufuku\ ;
+発着所 > hatchakujo\ ;
+親近感 > shinkinkan\ ;
+乱泥流 > randeiryuu\ ;
+当直員 > touchokuin\ ;
+統計的 > toukeiteki\ ;
+芸術家 > geijutsuka\ ;
+玄関先 > genkansaki\ ;
+深海魚 > shinkaigyo\ ;
+同志的 > doushiteki\ ;
+価千金 > ataisenkin\ ;
+九回戦 > kyuukaisen\ ;
+半永久 > han''eikyuu\ ;
+雑役婦 > zatsuekifu\ ;
+冷凍業 > reitougyou\ ;
+両生類 > ryouseirui\ ;
+儒教的 > jukyouteki\ ;
+揚陸艦 > yourikukan\ ;
+重謹慎 > juukinshin\ ;
+凍豆腐 > shimidoufu\ ;
+永谷園 > nagatanien\ ;
+二槽式 > nisoushiki\ ;
+相乗積 > soujouseki\ ;
+菌類学 > kinruigaku\ ;
+雑役夫 > zatsuekifu\ ;
+新刊書 > shinkansho\ ;
+青少年 > seishounen\ ;
+推進者 > suishinsha\ ;
+列席者 > ressekisha\ ;
+国産品 > kokusanhin\ ;
+懐旧談 > kaikyuudan\ ;
+枯草熱 > kosounetsu\ ;
+中甲板 > chuukanpan\ ;
+綿実油 > menjitsuyu\ ;
+埋伏歯 > maifukushi\ ;
+内緒事 > naishogoto\ ;
+一等卒 > ittousotsu\ ;
+神代杉 > jindaisugi\ ;
+値嵩株 > negasakabu\ ;
+政治力 > seijiryoku\ ;
+答申書 > toushinsho\ ;
+乱心者 > ranshinsha\ ;
+人間業 > ningenwaza\ ;
+共謀者 > kyoubousha\ ;
+来賓席 > raihinseki\ ;
+舞踏曲 > butoukyoku\ ;
+修行者 > shugyousha\ ;
+島根県 > shimaneken\ ;
+強硬論 > kyoukouron\ ;
+法治国 > houchikoku\ ;
+不得策 > futokusaku\ ;
+在米中 > zaibeichuu\ ;
+匿名性 > tokumeisei\ ;
+登山靴 > tozangutsu\ ;
+座敷牢 > zashikirou\ ;
+神格化 > shinkakuka\ ;
+赤外線 > sekigaisen\ ;
+薬用酒 > yakuyoushu\ ;
+結核菌 > kekkakukin\ ;
+草履虫 > zourimushi\ ;
+大衆性 > taishuusei\ ;
+寄宿生 > kishukusei\ ;
+昇汞水 > shoukousui\ ;
+武者慄 > mushaburui\ ;
+文章論 > bunshouron\ ;
+特選品 > tokusenhin\ ;
+近親者 > kinshinsha\ ;
+複数形 > fukusuukei\ ;
+幽邃境 > yuusuikyou\ ;
+再投票 > saitouhyou\ ;
+不活動 > fukatsudou\ ;
+全寮制 > zenryousei\ ;
+追悼会 > tsuitoukai\ ;
+白兵戦 > hakuheisen\ ;
+請求権 > seikyuuken\ ;
+忠霊塔 > chuureitou\ ;
+隙間風 > sukimakaze\ ;
+共有地 > kyouyuuchi\ ;
+片為替 > katagawase\ ;
+緩衝弁 > kanshouben\ ;
+宿根草 > shukkonsou\ ;
+大立者 > oodatemono\ ;
+泰山木 > taisanboku\ ;
+抽籤券 > chuusenken\ ;
+糸状虫 > shijouchuu\ ;
+絶縁体 > zetsuentai\ ;
+青果物 > seikabutsu\ ;
+里言葉 > satokotoba\ ;
+購読者 > koudokusha\ ;
+売買高 > baibaidaka\ ;
+挺進隊 > teishintai\ ;
+脱水症 > dassuishou\ ;
+勧進帳 > kanjinchou\ ;
+拡張化 > kakuchouka\ ;
+殺人鬼 > satsujinki\ ;
+流動性 > ryuudousei\ ;
+四重唱 > shijuushou\ ;
+教育者 > kyouikusha\ ;
+反対側 > hantaigawa\ ;
+琴一張 > kotoitchou\ ;
+内在的 > naizaiteki\ ;
+三段跳 > sandantobi\ ;
+飛躍的 > hiyakuteki\ ;
+手長猿 > tenagazaru\ ;
+老眼鏡 > rougankyou\ ;
+仮処分 > karishobun\ ;
+全人格 > zenjinkaku\ ;
+分泌物 > bunpibutsu\ ;
+請求書 > seikyuusho\ ;
+不決断 > fuketsudan\ ;
+先先週 > sensenshuu\ ;
+致命的 > chimeiteki\ ;
+乳石英 > nyuusekiei\ ;
+財政学 > zaiseigaku\ ;
+管弦楽 > kangengaku\ ;
+飲食店 > inshokuten\ ;
+紙製品 > kamiseihin\ ;
+黄金律 > ougonritsu\ ;
+法律案 > houritsuan\ ;
+半盲症 > hanmoushou\ ;
+硝酸銀 > shousangin\ ;
+防総省 > bousoushou\ ;
+逆比例 > gyakuhirei\ ;
+投書箱 > toushobako\ ;
+城下町 > joukamachi\ ;
+特別委 > tokubetsui\ ;
+村芝居 > murashibai\ ;
+継息子 > mamamusuko\ ;
+発信音 > hasshin''on\ ;
+四死球 > shishikyuu\ ;
+献金箱 > kenkinbako\ ;
+戦略家 > senryakuka\ ;
+公聴会 > kouchoukai\ ;
+気鬱症 > kiutsushou\ ;
+複数回 > fukusuukai\ ;
+会計学 > kaikeigaku\ ;
+簡略化 > kanryakuka\ ;
+給電線 > kyuudensen\ ;
+吉祥天 > kisshouten\ ;
+御影石 > mikageishi\ ;
+内国産 > naikokusan\ ;
+雪月花 > setsugekka\ ;
+私書箱 > shishobako\ ;
+直映館 > chokueikan\ ;
+病理学 > byourigaku\ ;
+復刻版 > fukkokuban\ ;
+退廃的 > taihaiteki\ ;
+人間学 > ningengaku\ ;
+下着類 > shitagirui\ ;
+唐変木 > touhenboku\ ;
+線撮影 > sensatsuei\ ;
+新生面 > shinseimen\ ;
+数日後 > suujitsugo\ ;
+超合金 > chougoukin\ ;
+多国籍 > takokuseki\ ;
+積算法 > sekisanhou\ ;
+外為法 > gaitamehou\ ;
+出品者 > shuppinsha\ ;
+覚醒剤 > kakuseizai\ ;
+高山蝶 > kouzanchou\ ;
+近縁属 > kin''enzoku\ ;
+上達部 > kandachime\ ;
+可鍛鉄 > katantetsu\ ;
+心理的 > shinriteki\ ;
+乗換券 > norikaeken\ ;
+教育界 > kyouikukai\ ;
+陰極線 > inkyokusen\ ;
+半艇身 > hanteishin\ ;
+親兄弟 > oyakyoudai\ ;
+旅館業 > ryokangyou\ ;
+学期末 > gakkimatsu\ ;
+到来物 > touraimono\ ;
+沖仲仕 > okinakashi\ ;
+外国製 > gaikokusei\ ;
+終盤戦 > shuubansen\ ;
+逆光線 > gyakkousen\ ;
+象徴派 > shouchouha\ ;
+勧進元 > kanjinmoto\ ;
+魚類学 > gyoruigaku\ ;
+縞瑪瑙 > shimamenou\ ;
+真空管 > shinkuukan\ ;
+舎利別 > sharibetsu\ ;
+京阪神 > keihanshin\ ;
+慣習法 > kanshuuhou\ ;
+頭陀袋 > zudabukuro\ ;
+陰極管 > inkyokukan\ ;
+混和物 > konwabutsu\ ;
+刀鍛冶 > katanakaji\ ;
+潜伏性 > senpukusei\ ;
+招待券 > shoutaiken\ ;
+受難節 > junansetsu\ ;
+測定値 > sokuteichi\ ;
+化粧紙 > keshougami\ ;
+大憲章 > daikenshou\ ;
+単色光 > tanshokkou\ ;
+甲殻綱 > koukakukou\ ;
+集合体 > shuugoutai\ ;
+立往生 > tachioujou\ ;
+子宮頸 > shikyuukei\ ;
+経験的 > keikenteki\ ;
+化粧箱 > keshoubako\ ;
+二番星 > nibanboshi\ ;
+法律家 > houritsuka\ ;
+洗濯板 > sentakuita\ ;
+滑沢剤 > kattakuzai\ ;
+対称性 > taishousei\ ;
+少年法 > shounenhou\ ;
+徳川家 > tokugawake\ ;
+流動体 > ryuudoutai\ ;
+終刊号 > shuukangou\ ;
+監修者 > kanshuusha\ ;
+共編者 > kyouhensha\ ;
+統計学 > toukeigaku\ ;
+輪郭線 > rinkakusen\ ;
+軍艦鳥 > gunkandori\ ;
+商船隊 > shousentai\ ;
+超満員 > chouman''in\ ;
+片手鍋 > katatenabe\ ;
+股関節 > kokansetsu\ ;
+調味料 > choumiryou\ ;
+又小作 > matakosaku\ ;
+不正直 > fushoujiki\ ;
+洪積層 > kousekisou\ ;
+検圧器 > ken''atsuki\ ;
+染物屋 > somemonoya\ ;
+配膳人 > haizen''nin\ ;
+境界線 > kyoukaisen\ ;
+静物画 > seibutsuga\ ;
+教育法 > kyouikuhou\ ;
+収集魔 > shuushuuma\ ;
+離職者 > rishokusha\ ;
+報奨金 > houshoukin\ ;
+股間節 > kokansetsu\ ;
+牧師館 > bokushikan\ ;
+占領軍 > senryougun\ ;
+中生代 > chuuseidai\ ;
+下半期 > shimohanki\ ;
+教会法 > kyoukaihou\ ;
+原水爆 > gensuibaku\ ;
+刺繍糸 > shishuuito\ ;
+搭乗橋 > toujoukyou\ ;
+石鹸箱 > sekkenbako\ ;
+回転軸 > kaitenjiku\ ;
+刻一刻 > kokuikkoku\ ;
+創造的 > souzouteki\ ;
+痴呆症 > chihoushou\ ;
+排水量 > haisuiryou\ ;
+各情報 > kakujouhou\ ;
+核文法 > kakubunpou\ ;
+大々的 > daidaiteki\ ;
+売上高 > uriagedaka\ ;
+深成岩 > shinseigan\ ;
+胸三寸 > munesanzun\ ;
+得意客 > tokuikyaku\ ;
+徴兵制 > chouheisei\ ;
+性本能 > seihon''nou\ ;
+休診日 > kyuushinbi\ ;
+執金鋼 > shikkongou\ ;
+竜皮巻 > ryuuhimaki\ ;
+回帰熱 > kaikinetsu\ ;
+祝賀会 > shukugakai\ ;
+生活費 > seikatsuhi\ ;
+法務局 > houmukyoku\ ;
+中学校 > chuugakkou\ ;
+月見草 > tsukimisou\ ;
+通俗化 > tsuuzokuka\ ;
+直交性 > chokkousei\ ;
+稲熱病 > imochibyou\ ;
+高踏的 > koutouteki\ ;
+給料日 > kyuuryoubi\ ;
+万年青 > man''nensei\ ;
+小前提 > shouzentei\ ;
+六三制 > rokusansei\ ;
+造林学 > zouringaku\ ;
+全責任 > zensekinin\ ;
+照明弾 > shoumeidan\ ;
+愛国心 > aikokushin\ ;
+石鹸皿 > sekkenzara\ ;
+予定説 > yoteisetsu\ ;
+脳硬塞 > noukousoku\ ;
+総大将 > soudaishou\ ;
+始末屋 > shimatsuya\ ;
+国有林 > kokuyuurin\ ;
+薬学部 > yakugakubu\ ;
+批判力 > hihanryoku\ ;
+等身大 > toushindai\ ;
+総攻撃 > soukougeki\ ;
+高山病 > kouzanbyou\ ;
+五月祭 > gogatsusai\ ;
+軍楽隊 > gungakutai\ ;
+三重唱 > sanjuushou\ ;
+南京豆 > nankinmame\ ;
+曲馬師 > kyokubashi\ ;
+副司令 > fukushirei\ ;
+昼日中 > hiruhinaka\ ;
+常識家 > joushikika\ ;
+言葉尻 > kotobajiri\ ;
+肺浸潤 > haishinjun\ ;
+耕作者 > kousakusha\ ;
+同心円 > doushin''en\ ;
+致死量 > chishiryou\ ;
+弁証論 > benshouron\ ;
+新登場 > shintoujou\ ;
+強力粉 > kyourikiko\ ;
+予備室 > yobishitsu\ ;
+店頭株 > tentoukabu\ ;
+発射薬 > hasshayaku\ ;
+化粧水 > keshoumizu\ ;
+十進法 > jisshinhou\ ;
+文筆家 > bunpitsuka\ ;
+従量税 > juuryouzei\ ;
+瓦屋根 > kawarayane\ ;
+関係調 > kankeichou\ ;
+唯心論 > yuishinron\ ;
+励振管 > reishinkan\ ;
+全日空 > zen''nikkuu\ ;
+二枚腰 > nimaigoshi\ ;
+流刑地 > ryuukeichi\ ;
+洪積世 > kousekisei\ ;
+震災地 > shinsaichi\ ;
+眼軟膏 > gan''nankou\ ;
+水晶体 > suishoutai\ ;
+点滅器 > tenmetsuki\ ;
+兄弟分 > kyoudaibun\ ;
+金門橋 > kinmonkyou\ ;
+景勝地 > keishouchi\ ;
+内接円 > naisetsuen\ ;
+生活苦 > seikatsuku\ ;
+東照宮 > toushouguu\ ;
+受難曲 > junankyoku\ ;
+対流圏 > tairyuuken\ ;
+危険物 > kikenbutsu\ ;
+研修生 > kenshuusei\ ;
+近親婚 > kinshinkon\ ;
+交読文 > koudokubun\ ;
+脳卒中 > nousotchuu\ ;
+焼死体 > shoushitai\ ;
+一神教 > isshinkyou\ ;
+派出所 > hashutsujo\ ;
+振動計 > shindoukei\ ;
+屈折語 > kussetsugo\ ;
+曲馬団 > kyokubadan\ ;
+注射液 > chuushaeki\ ;
+福禄寿 > fukurokuju\ ;
+紙吹雪 > kamifubuki\ ;
+仲介者 > chuukaisha\ ;
+集配人 > shuuhainin\ ;
+定礎式 > teisoshiki\ ;
+裁判長 > saibanchou\ ;
+電話局 > denwakyoku\ ;
+俸祿米 > hourokumai\ ;
+花吹雪 > hanafubuki\ ;
+兵糧米 > hyouroumai\ ;
+角細工 > tsunozaiku\ ;
+輸送力 > yusouryoku\ ;
+林野庁 > rin''yachou\ ;
+支配的 > shihaiteki\ ;
+太鼓橋 > taikobashi\ ;
+箔力粉 > hakurikiko\ ;
+獅子鼻 > shishibana\ ;
+連隊長 > rentaichou\ ;
+端末機 > tanmatsuki\ ;
+吹奏楽 > suisougaku\ ;
+熱射病 > nesshabyou\ ;
+徳用瓶 > tokuyoubin\ ;
+天津神 > amatsukami\ ;
+降水量 > kousuiryou\ ;
+出金者 > shukkinsha\ ;
+典型的 > tenkeiteki\ ;
+中枢性 > chuusuusei\ ;
+迷彩服 > meisaifuku\ ;
+住宅難 > juutakunan\ ;
+化粧料 > keshouryou\ ;
+心理学 > shinrigaku\ ;
+芳名録 > houmeiroku\ ;
+動力炉 > douryokuro\ ;
+小児病 > shounibyou\ ;
+少年団 > shounendan\ ;
+全面的 > zenmenteki\ ;
+小市民 > shoushimin\ ;
+副次的 > fukujiteki\ ;
+椎間板 > tsuikanban\ ;
+課税率 > kazeiritsu\ ;
+郵政省 > yuuseishou\ ;
+夏場所 > natsubasho\ ;
+厚化粧 > atsugeshou\ ;
+二人組 > futarigumi\ ;
+致命傷 > chimeishou\ ;
+副都心 > fukutoshin\ ;
+発案者 > hatsuansha\ ;
+強力犯 > gourikihan\ ;
+洗濯代 > sentakudai\ ;
+遊泳術 > yuueijutsu\ ;
+製陶業 > seitougyou\ ;
+球座標 > kyuuzahyou\ ;
+占有権 > sen''yuuken\ ;
+沈丁花 > chinchouge\ ;
+葡萄牙 > porutogaru\ ;
+教会堂 > kyoukaidou\ ;
+支店長 > shitenchou\ ;
+御年玉 > otoshidama\ ;
+西洋葱 > seiyounegi\ ;
+瓜実顔 > urizanegao\ ;
+真空帯 > shinkuutai\ ;
+追送検 > tsuisouken\ ;
+未決監 > miketsukan\ ;
+普通株 > futsuukabu\ ;
+商店主 > shoutenshu\ ;
+採石場 > saisekijou\ ;
+牢名主 > rounanushi\ ;
+累進税 > ruishinzei\ ;
+大競争 > daikyousou\ ;
+森林法 > shinrinhou\ ;
+同郷人 > doukyoujin\ ;
+派出婦 > hashutsufu\ ;
+内国債 > naikokusai\ ;
+支度金 > shitakukin\ ;
+再浸礼 > saishinrei\ ;
+国有地 > kokuyuuchi\ ;
+親展書 > shintensho\ ;
+廉恥心 > renchishin\ ;
+皆既食 > kaikishoku\ ;
+転居先 > tenkyosaki\ ;
+連絡駅 > renrakueki\ ;
+電話口 > denwaguchi\ ;
+精勤賞 > seikinshou\ ;
+健忘症 > kenboushou\ ;
+教会史 > kyoukaishi\ ;
+少年会 > shounenkai\ ;
+贋手紙 > nisetegami\ ;
+出征軍 > shusseigun\ ;
+計画者 > keikakusha\ ;
+散文的 > sanbunteki\ ;
+挺身隊 > teishintai\ ;
+友好的 > yuukouteki\ ;
+召喚状 > shoukanjou\ ;
+認証者 > ninshousha\ ;
+年産額 > nensangaku\ ;
+換算表 > kanzanhyou\ ;
+沖縄県 > okinawaken\ ;
+救世軍 > kyuuseigun\ ;
+満足感 > manzokukan\ ;
+奉公先 > houkousaki\ ;
+電報料 > denpouryou\ ;
+荒事師 > aragotoshi\ ;
+桃源郷 > tougenkyou\ ;
+蓮月尼 > rengetsuni\ ;
+羽斑蚊 > hamadaraka\ ;
+私書函 > shishobako\ ;
+朴念仁 > bokunenjin\ ;
+子宮癌 > shikyuugan\ ;
+磁力計 > jiryokukei\ ;
+根粒菌 > konryuukin\ ;
+縦旋盤 > tatesenban\ ;
+市役所 > shiyakusho\ ;
+検流計 > kenryuukei\ ;
+即売会 > sokubaikai\ ;
+延人員 > nobejin''in\ ;
+調合剤 > chougouzai\ ;
+要確認 > youkakunin\ ;
+常緑樹 > jouryokuju\ ;
+選球眼 > senkyuugan\ ;
+石合戦 > ishigassen\ ;
+封建的 > houkenteki\ ;
+駐在所 > chuuzaisho\ ;
+世帯主 > setainushi\ ;
+平常心 > heijoushin\ ;
+豆台風 > mametaifuu\ ;
+鉱山業 > kouzangyou\ ;
+構文木 > koubunmoku\ ;
+参謀長 > sanbouchou\ ;
+写真館 > shashinkan\ ;
+戦時色 > senjishoku\ ;
+住宅街 > juutakugai\ ;
+頓珍漢 > tonchinkan\ ;
+弱酸性 > jakusansei\ ;
+中仕切 > nakajikiri\ ;
+初舞台 > hatsubutai\ ;
+写真顔 > shashingao\ ;
+南京玉 > nankindama\ ;
+船籍港 > sensekikou\ ;
+燐灰石 > rinkaiseki\ ;
+一年間 > ichinenkan\ ;
+非接触 > hisesshoku\ ;
+持続的 > jizokuteki\ ;
+営業中 > eigyouchuu\ ;
+超過額 > choukagaku\ ;
+預貸率 > yotairitsu\ ;
+代用肉 > daiyouniku\ ;
+時系列 > jikeiretsu\ ;
+子供服 > kodomofuku\ ;
+警視庁 > keishichou\ ;
+免疫性 > men''ekisei\ ;
+系統的 > keitouteki\ ;
+軍用金 > gun''youkin\ ;
+荒仕事 > arashigoto\ ;
+登山客 > tozankyaku\ ;
+低賃金 > teichingin\ ;
+侵害者 > shingaisha\ ;
+売上票 > uriagepyou\ ;
+放送劇 > housougeki\ ;
+日程表 > nitteihyou\ ;
+副葬品 > fukusouhin\ ;
+挿入文 > sounyuubun\ ;
+初学者 > shogakusha\ ;
+教習所 > kyoushuujo\ ;
+入場門 > nyuujoumon\ ;
+官庁街 > kanchougai\ ;
+規則的 > kisokuteki\ ;
+小冊子 > shousasshi\ ;
+輻射線 > fukushasen\ ;
+十進制 > jisshinsei\ ;
+複製品 > fukuseihin\ ;
+蟹工船 > kanikousen\ ;
+森林帯 > shinrintai\ ;
+結晶系 > kesshoukei\ ;
+無秩序 > muchitsujo\ ;
+主観的 > shukanteki\ ;
+破壊力 > hakairyoku\ ;
+三毛作 > sanmousaku\ ;
+桧皮葺 > hiwadabuki\ ;
+力織機 > rikishokki\ ;
+六面体 > rokumentai\ ;
+白人種 > hakujinshu\ ;
+汎神論 > hanshinron\ ;
+仮定款 > kariteikan\ ;
+納税額 > nouzeigaku\ ;
+諸外国 > shogaikoku\ ;
+外接円 > gaisetsuen\ ;
+製紙業 > seishigyou\ ;
+鉛直線 > enchokusen\ ;
+心電計 > shindenkei\ ;
+福利表 > fukurihyou\ ;
+微生物 > biseibutsu\ ;
+宝石店 > housekiten\ ;
+創業者 > sougyousha\ ;
+革製品 > kawaseihin\ ;
+平年作 > heinensaku\ ;
+生態学 > seitaigaku\ ;
+猿芝居 > sarushibai\ ;
+場外株 > jougaikabu\ ;
+弁証法 > benshouhou\ ;
+協定書 > kyouteisho\ ;
+五旬節 > gojunsetsu\ ;
+初任給 > shoninkyuu\ ;
+陸曹等 > rikusoutou\ ;
+好成績 > kouseiseki\ ;
+通有性 > tsuuyuusei\ ;
+聴導犬 > choudouken\ ;
+磁力線 > jiryokusen\ ;
+離婚率 > rikonritsu\ ;
+硝酸塩 > shousan''en\ ;
+再確認 > saikakunin\ ;
+発案権 > hatsuanken\ ;
+皆既蝕 > kaikishoku\ ;
+酪製品 > rakuseihin\ ;
+土性骨 > doshoubone\ ;
+避妊薬 > hinin''yaku\ ;
+発生学 > hasseigaku\ ;
+人種的 > jinshuteki\ ;
+磁石盤 > jishakuban\ ;
+大蔵経 > daizoukyou\ ;
+河原鶸 > kawarahiwa\ ;
+留置場 > ryuuchijou\ ;
+通風孔 > tsuufuukou\ ;
+要求者 > youkyuusha\ ;
+製糸業 > seishigyou\ ;
+知恵袋 > chiebukuro\ ;
+紙鉄砲 > kamideppou\ ;
+初飛行 > hatsuhikou\ ;
+登山口 > tozanguchi\ ;
+貯水量 > chosuiryou\ ;
+社会鍋 > shakainabe\ ;
+殊勲賞 > shukunshou\ ;
+運動靴 > undougutsu\ ;
+交際国 > kousaikoku\ ;
+八文字 > hachimonji\ ;
+開発部 > kaihatsubu\ ;
+調印国 > chouinkoku\ ;
+相続税 > souzokuzei\ ;
+蝋人形 > rouningyou\ ;
+人名録 > jinmeiroku\ ;
+落第生 > rakudaisei\ ;
+凝灰岩 > gyoukaigan\ ;
+利付債 > ritsukisai\ ;
+体腔壁 > taikouheki\ ;
+指掌紋 > shishoumon\ ;
+奇跡的 > kisekiteki\ ;
+蛋白源 > tanpakugen\ ;
+断末魔 > danmatsuma\ ;
+詳伝社 > shoudensha\ ;
+葬儀式 > sougishiki\ ;
+損害額 > songaigaku\ ;
+鉄鋼業 > tekkougyou\ ;
+一弦琴 > ichigenkin\ ;
+暗紫色 > anshishoku\ ;
+先任順 > sen''ninjun\ ;
+好戦的 > kousenteki\ ;
+防長官 > bouchoukan\ ;
+水圧計 > suiatsukei\ ;
+外国勢 > gaikokuzei\ ;
+韓国人 > kankokujin\ ;
+敢闘賞 > kantoushou\ ;
+毒見役 > dokumiyaku\ ;
+機内食 > kinaishoku\ ;
+裏番組 > urabangumi\ ;
+国防論 > kokubouron\ ;
+官求品 > kankyuuhin\ ;
+国際線 > kokusaisen\ ;
+貸金庫 > kashikinko\ ;
+速記術 > sokkijutsu\ ;
+国言葉 > kunikotoba\ ;
+匐行疹 > fukkoushin\ ;
+町工場 > machikouba\ ;
+至急便 > shikyuubin\ ;
+宝冠章 > houkanshou\ ;
+製糖業 > seitougyou\ ;
+若旦那 > wakadan''na\ ;
+挑戦者 > chousensha\ ;
+鉄鉱石 > tekkouseki\ ;
+横隔膜 > oukakumaku\ ;
+同業者 > dougyousha\ ;
+活用語 > katsuyougo\ ;
+深呼吸 > shinkokyuu\ ;
+三番鶏 > sanbandori\ ;
+判任官 > han''ninkan\ ;
+出勤者 > shukkinsha\ ;
+外国債 > gaikokusai\ ;
+連絡船 > renrakusen\ ;
+落第点 > rakudaiten\ ;
+進行相 > shinkousou\ ;
+三番鳥 > sanbandori\ ;
+決定的 > ketteiteki\ ;
+肉料理 > nikuryouri\ ;
+文法的 > bunpouteki\ ;
+国文法 > kokubunpou\ ;
+超弩級 > choudokyuu\ ;
+大蔵省 > ookurashou\ ;
+感情的 > kanjouteki\ ;
+乗合船 > noriaibune\ ;
+徳用品 > tokuyouhin\ ;
+燃料棒 > nenryoubou\ ;
+二日酔 > futsukayoi\ ;
+神経系 > shinkeikei\ ;
+仮議長 > karigichou\ ;
+独断論 > dokudanron\ ;
+外国人 > gaikokujin\ ;
+珍糞漢 > chinpunkan\ ;
+振動板 > shindouban\ ;
+主教冠 > shukyoukan\ ;
+正教師 > seikyoushi\ ;
+細菌学 > saikingaku\ ;
+耕作地 > kousakuchi\ ;
+改進党 > kaishintou\ ;
+三分搗 > sanbutsuki\ ;
+休閑地 > kyuukanchi\ ;
+軍用艦 > gun''youkan\ ;
+新聞紙 > shinbunshi\ ;
+輻射点 > fukushaten\ ;
+世俗的 > sezokuteki\ ;
+重圧感 > juuatsukan\ ;
+豆鉄砲 > mamedeppou\ ;
+優秀品 > yuushuuhin\ ;
+金融界 > kin''yuukai\ ;
+傍聴券 > bouchouken\ ;
+貯金箱 > chokinbako\ ;
+国境線 > kokkyousen\ ;
+蚕糸業 > sanshigyou\ ;
+一年草 > ichinensou\ ;
+高密度 > koumitsudo\ ;
+免疫体 > men''ekitai\ ;
+磁気嵐 > jikiarashi\ ;
+振動数 > shindousuu\ ;
+大礼服 > taireifuku\ ;
+改良種 > kairyoushu\ ;
+北国人 > hokkokujin\ ;
+連絡線 > renrakusen\ ;
+牢役人 > rouyakunin\ ;
+内祝言 > naishuugen\ ;
+半身像 > hanshinzou\ ;
+大黒天 > daikokuten\ ;
+不分割 > fubunkatsu\ ;
+西北西 > seihokusei\ ;
+中世史 > chuuseishi\ ;
+怒髪天 > dohatsuten\ ;
+反革命 > hankakumei\ ;
+新聞社 > shinbunsha\ ;
+一機軸 > ichikijiku\ ;
+集魚灯 > shuugyotou\ ;
+雪見酒 > yukimizake\ ;
+坊主頭 > bouzuatama\ ;
+先験的 > senkenteki\ ;
+闇給与 > yamikyuuyo\ ;
+傍聴人 > bouchounin\ ;
+事実上 > jijitsujou\ ;
+義侠心 > gikyoushin\ ;
+用水堀 > yousuibori\ ;
+仮普請 > karibushin\ ;
+占領地 > senryouchi\ ;
+寝装品 > shinsouhin\ ;
+町内会 > chounaikai\ ;
+同盟国 > doumeikoku\ ;
+発育期 > hatsuikuki\ ;
+誓約書 > seiyakusho\ ;
+発展中 > hattenchuu\ ;
+茶番的 > chabanteki\ ;
+特産品 > tokusanhin\ ;
+製粉業 > seifungyou\ ;
+消去法 > shoukyohou\ ;
+肛門学 > koumongaku\ ;
+大司教 > daishikyou\ ;
+妄想症 > mousoushou\ ;
+御用達 > goyoudatsu\ ;
+展示物 > tenjibutsu\ ;
+自殺者 > jisatsusha\ ;
+射幸心 > shakoushin\ ;
+作曲家 > sakkyokuka\ ;
+公教会 > koukyoukai\ ;
+計画性 > keikakusei\ ;
+切迫感 > seppakukan\ ;
+丸天井 > marutenjou\ ;
+枢密院 > suumitsuin\ ;
+四六判 > shirokuban\ ;
+追体験 > tsuitaiken\ ;
+入場者 > nyuujousha\ ;
+半病人 > hanbyounin\ ;
+捜索隊 > sousakutai\ ;
+友好国 > yuukoukoku\ ;
+殿上人 > tenjoubito\ ;
+截断機 > setsudanki\ ;
+無水物 > musuibutsu\ ;
+健康的 > kenkouteki\ ;
+新体操 > shintaisou\ ;
+空中線 > kuuchuusen\ ;
+田舎道 > inakamichi\ ;
+波乃花 > naminohana\ ;
+偶像教 > guuzoukyou\ ;
+神話学 > shinwagaku\ ;
+相続権 > souzokuken\ ;
+性教育 > seikyouiku\ ;
+前哨線 > zenshousen\ ;
+独奏者 > dokusousha\ ;
+赤血球 > sekkekkyuu\ ;
+天台宗 > tendaishuu\ ;
+軍楽手 > gungakushu\ ;
+軍艦巻 > gunkanmaki\ ;
+暗褐色 > ankasshoku\ ;
+逆作用 > gyakusayou\ ;
+挑戦状 > chousenjou\ ;
+検量線 > kenryousen\ ;
+網杓子 > amijakushi\ ;
+再注文 > saichuumon\ ;
+内反足 > naihansoku\ ;
+社用族 > shayouzoku\ ;
+年少者 > nenshousha\ ;
+新生代 > shinseidai\ ;
+保管物 > hokanbutsu\ ;
+優勝者 > yuushousha\ ;
+改良点 > kairyouten\ ;
+給排水 > kyuuhaisui\ ;
+天眼鏡 > tengankyou\ ;
+三連勝 > sanrenshou\ ;
+不発弾 > fuhatsudan\ ;
+半官的 > hankanteki\ ;
+振動子 > shindoushi\ ;
+活発化 > kappatsuka\ ;
+収集家 > shuushuuka\ ;
+酸化鉄 > sankatetsu\ ;
+新人王 > shinjin''ou\ ;
+延日数 > nobenissuu\ ;
+奉献頌 > houkenshou\ ;
+貸店舗 > kashitenpo\ ;
+二人共 > futaritomo\ ;
+収斂剤 > shuurenzai\ ;
+国際法 > kokusaihou\ ;
+高学年 > kougakunen\ ;
+核災害 > kakusaigai\ ;
+伽草子 > togizoushi\ ;
+煽情的 > senjouteki\ ;
+認証官 > ninshoukan\ ;
+養蚕業 > yousangyou\ ;
+火山脈 > kazanmyaku\ ;
+菜種殻 > natanegara\ ;
+避暑客 > hishokyaku\ ;
+汎心論 > hanshinron\ ;
+書評欄 > shohyouran\ ;
+入場税 > nyuujouzei\ ;
+試作車 > shisakusha\ ;
+獄中記 > gokuchuuki\ ;
+乳兄弟 > chikyoudai\ ;
+二七日 > futananoka\ ;
+正教会 > seikyoukai\ ;
+先生方 > senseigata\ ;
+草雲雀 > kusahibari\ ;
+侍従職 > jijuushoku\ ;
+地形学 > chikeigaku\ ;
+一直線 > itchokusen\ ;
+天眼通 > tengantsuu\ ;
+仲買人 > nakagainin\ ;
+薬理学 > yakurigaku\ ;
+国文専 > kokubunsen\ ;
+一年生 > ichinensei\ ;
+定式化 > teishikika\ ;
+商業化 > shougyouka\ ;
+一輪車 > ichirinsha\ ;
+滲炭鋼 > shintankou\ ;
+軍用犬 > gun''youken\ ;
+六角堂 > rokkakudou\ ;
+床暖房 > yukadanbou\ ;
+筆不精 > fudebushou\ ;
+公証人 > koushounin\ ;
+薄力粉 > hakurikiko\ ;
+牧草地 > bokusouchi\ ;
+属性値 > zokuseichi\ ;
+解毒薬 > gedokuyaku\ ;
+満期日 > mankijitsu\ ;
+名作選 > meisakusen\ ;
+商用文 > shouyoubun\ ;
+国語学 > kokugogaku\ ;
+可及的 > kakyuuteki\ ;
+写真班 > shashinhan\ ;
+一元論 > ichigenron\ ;
+調剤師 > chouzaishi\ ;
+単三形 > tansangata\ ;
+甲冑師 > katchuushi\ ;
+先任者 > sen''ninsha\ ;
+曲線美 > kyokusenbi\ ;
+公約数 > kouyakusuu\ ;
+熱狂者 > nekkyousha\ ;
+水紋学 > suimongaku\ ;
+人種学 > jinshugaku\ ;
+残忍性 > zan''ninsei\ ;
+相関的 > soukanteki\ ;
+写真版 > shashinban\ ;
+生息地 > seisokuchi\ ;
+知性的 > chiseiteki\ ;
+未発達 > mihattatsu\ ;
+開幕戦 > kaimakusen\ ;
+後配株 > kouhaikabu\ ;
+停泊地 > teihakuchi\ ;
+罹患率 > rikanritsu\ ;
+進行形 > shinkoukei\ ;
+道徳上 > doutokujou\ ;
+社会的 > shakaiteki\ ;
+震源地 > shingenchi\ ;
+星雲説 > seiunsetsu\ ;
+河原者 > kawaramono\ ;
+溺死者 > dekishisha\ ;
+海商法 > kaishouhou\ ;
+理髪店 > rihatsuten\ ;
+革命軍 > kakumeigun\ ;
+書誌学 > shoshigaku\ ;
+理髪師 > rihatsushi\ ;
+世俗心 > sezokushin\ ;
+適任者 > tekininsha\ ;
+変圧所 > hen''atsujo\ ;
+漢民族 > kanminzoku\ ;
+適用性 > tekiyousei\ ;
+直談判 > jikadanpan\ ;
+背信者 > haishinsha\ ;
+筆耕料 > hikkouryou\ ;
+伝法肌 > denbouhada\ ;
+繊毛虫 > senmouchuu\ ;
+競売人 > kyoubainin\ ;
+作詞者 > sakushisha\ ;
+安死術 > anshijutsu\ ;
+機動力 > kidouryoku\ ;
+最終回 > saishuukai\ ;
+主要国 > shuyoukoku\ ;
+反陽子 > han''youshi\ ;
+内向的 > naikouteki\ ;
+防潮堤 > bouchoutei\ ;
+液晶盤 > ekishouban\ ;
+神経戦 > shinkeisen\ ;
+黄八丈 > kihachijou\ ;
+表二階 > omotenikai\ ;
+試験的 > shikenteki\ ;
+屠殺場 > tosatsujou\ ;
+旅支度 > tabijitaku\ ;
+書簡集 > shokanshuu\ ;
+好戦国 > kousenkoku\ ;
+営林局 > eirinkyoku\ ;
+無重力 > mujuuryoku\ ;
+遺失者 > ishitsusha\ ;
+生得権 > seitokuken\ ;
+米騒動 > komesoudou\ ;
+新体制 > shintaisei\ ;
+血清学 > kesseigaku\ ;
+部長閲 > buchouetsu\ ;
+夜想曲 > yasoukyoku\ ;
+概念的 > gainenteki\ ;
+空中権 > kuuchuuken\ ;
+周遊券 > shuuyuuken\ ;
+創作者 > sousakusha\ ;
+含糖量 > gantouryou\ ;
+倹約家 > ken''yakuka\ ;
+出張所 > shutchoujo\ ;
+管理職 > kanrishoku\ ;
+恐怖症 > kyoufushou\ ;
+政略家 > seiryakuka\ ;
+公衆網 > koushuumou\ ;
+入場権 > nyuujouken\ ;
+督戦隊 > tokusentai\ ;
+千羽鶴 > senbadzuru\ ;
+住宅地 > juutakuchi\ ;
+内惑星 > naiwakusei\ ;
+真正直 > mashoujiki\ ;
+季節風 > kisetsufuu\ ;
+低学年 > teigakunen\ ;
+学籍簿 > gakusekibo\ ;
+立体鏡 > rittaikyou\ ;
+二項式 > nikoushiki\ ;
+百日紅 > sarusuberi\ ;
+軍略家 > gunryakuka\ ;
+民譚集 > mindanshuu\ ;
+慰問袋 > imonbukuro\ ;
+消石灰 > shousekkai\ ;
+単一化 > tan''itsuka\ ;
+専用車 > sen''yousha\ ;
+仕舞物 > shimaimono\ ;
+大白鳥 > oohakuchou\ ;
+緩徐曲 > kanjokyoku\ ;
+刀剣商 > toukenshou\ ;
+伽芝居 > togishibai\ ;
+夜々中 > yoruyonaka\ ;
+気象庁 > kishouchou\ ;
+瀝青炭 > rekiseitan\ ;
+一円玉 > ichiendama\ ;
+獅子宮 > shishikyuu\ ;
+巡洋艦 > jun''youkan\ ;
+必需品 > hitsujuhin\ ;
+不信用 > fushin''you\ ;
+測地線 > sokuchisen\ ;
+高木層 > koubokusou\ ;
+桃源境 > tougenkyou\ ;
+表層性 > hyousousei\ ;
+出席簿 > shussekibo\ ;
+親王妃 > shin''nouhi\ ;
+配給系 > haikyuukei\ ;
+変圧器 > hen''atsuki\ ;
+実体鏡 > jittaikyou\ ;
+優勝杯 > yuushouhai\ ;
+適不適 > tekifuteki\ ;
+社交的 > shakouteki\ ;
+配給米 > haikyuumai\ ;
+書記局 > shokikyoku\ ;
+贈収賄 > zoushuuwai\ ;
+凸凹紙 > totsuoushi\ ;
+裁判人 > saiban''nin\ ;
+今道心 > imadoushin\ ;
+紹介者 > shoukaisha\ ;
+空中戦 > kuuchuusen\ ;
+気象学 > kishougaku\ ;
+相続人 > souzokunin\ ;
+被告席 > hikokuseki\ ;
+乳脂肪 > nyuushibou\ ;
+農牧地 > noubokuchi\ ;
+悪戯子 > itazurakko\ ;
+射的場 > shatekijou\ ;
+前哨戦 > zenshousen\ ;
+法学者 > hougakusha\ ;
+全国紙 > zenkokushi\ ;
+救難船 > kyuunansen\ ;
+金融債 > kin''yuusai\ ;
+上載圧 > jousaiatsu\ ;
+口喧嘩 > kuchigenka\ ;
+成人病 > seijinbyou\ ;
+花水木 > hanamizuki\ ;
+造園術 > zouenjutsu\ ;
+乳腺炎 > nyuusen''en\ ;
+海流瓶 > kairyuubin\ ;
+分光学 > bunkougaku\ ;
+民主的 > minshuteki\ ;
+精白糖 > seihakutou\ ;
+無機質 > mukishitsu\ ;
+通話料 > tsuuwaryou\ ;
+改良品 > kairyouhin\ ;
+精白米 > seihakumai\ ;
+快削鋼 > kaisakukou\ ;
+日向水 > hinatamizu\ ;
+扇情的 > senjouteki\ ;
+陪審員 > baishin''in\ ;
+師団長 > shidanchou\ ;
+組職体 > soshokutai\ ;
+果実酒 > kajitsushu\ ;
+婿養子 > mukoyoushi\ ;
+写真師 > shashinshi\ ;
+下検査 > shitakensa\ ;
+風邪薬 > kazegusuri\ ;
+優勝戦 > yuushousen\ ;
+連続体 > renzokutai\ ;
+天刑病 > tenkeibyou\ ;
+半翅目 > hanshimoku\ ;
+茶番劇 > chabangeki\ ;
+写真屋 > shashin''ya\ ;
+良導体 > ryoudoutai\ ;
+救世主 > kyuuseishu\ ;
+沓手鳥 > hototogisu\ ;
+未着手 > michakushu\ ;
+作詩法 > sakushihou\ ;
+真魚鰹 > managatsuo\ ;
+出張員 > shutchouin\ ;
+人力車 > jinrikisha\ ;
+国際人 > kokusaijin\ ;
+測長機 > sokuchouki\ ;
+小主観 > shoushukan\ ;
+実践的 > jissenteki\ ;
+連結器 > renketsuki\ ;
+耐久性 > taikyuusei\ ;
+杉並木 > suginamiki\ ;
+終了後 > shuuryougo\ ;
+天道様 > tentousama\ ;
+撮影隊 > satsueitai\ ;
+花菖蒲 > hanashoubu\ ;
+検眼鏡 > kengankyou\ ;
+酸化物 > sankabutsu\ ;
+小作料 > kosakuryou\ ;
+庶民的 > shominteki\ ;
+輪舞曲 > rinbukyoku\ ;
+凍結器 > touketsuki\ ;
+夏蜜柑 > natsumikan\ ;
+等方的 > touhouteki\ ;
+岩清水 > iwashimizu\ ;
+立案者 > ritsuansha\ ;
+著述家 > chojutsuka\ ;
+脳梅毒 > noubaidoku\ ;
+軍用品 > gun''youhin\ ;
+僕仲間 > bokunakama\ ;
+難視聴 > nanshichou\ ;
+徳義心 > tokugishin\ ;
+刺激性 > shigekisei\ ;
+連絡先 > renrakusen\ ;
+近海物 > kinkaimono\ ;
+東洋通 > touyoutsuu\ ;
+鉄砲玉 > teppoudama\ ;
+価格表 > kakakuhyou\ ;
+調停者 > chouteisha\ ;
+歴史観 > rekishikan\ ;
+建築費 > kenchikuhi\ ;
+人情劇 > ninjougeki\ ;
+多神教 > tashinkyou\ ;
+前哨地 > zenshouchi\ ;
+一度丈 > ichidodake\ ;
+連絡会 > renrakukai\ ;
+一般職 > ippanshoku\ ;
+社会学 > shakaigaku\ ;
+偵察機 > teisatsuki\ ;
+寝台車 > shindaisha\ ;
+年代物 > nendaimono\ ;
+両替人 > ryougaenin\ ;
+合格者 > goukakusha\ ;
+専用線 > sen''yousen\ ;
+帯域幅 > taiikihaba\ ;
+初一念 > shoichinen\ ;
+紹介状 > shoukaijou\ ;
+消毒器 > shoudokuki\ ;
+旦那衆 > dan''nashuu\ ;
+堅信礼 > kenshinrei\ ;
+官公庁 > kankouchou\ ;
+聴聞僧 > choumonsou\ ;
+太平楽 > taiheiraku\ ;
+両天秤 > ryoutenbin\ ;
+孔雀石 > kujakuseki\ ;
+創作権 > sousakuken\ ;
+色事師 > irogotoshi\ ;
+降魔術 > koumajutsu\ ;
+少資本 > shoushihon\ ;
+資産株 > shisankabu\ ;
+恐怖心 > kyoufushin\ ;
+実験的 > jikkenteki\ ;
+使徒達 > shitotachi\ ;
+安酒場 > yasusakaba\ ;
+聴聞会 > choumonkai\ ;
+育児食 > ikujishoku\ ;
+男便所 > otokobenjo\ ;
+首実検 > kubijikken\ ;
+細胞膜 > saiboumaku\ ;
+名人肌 > meijinhada\ ;
+小学校 > shougakkou\ ;
+旧藩主 > kyuuhanshu\ ;
+民有林 > min''yuurin\ ;
+赤鉄鉱 > sekitekkou\ ;
+本草学 > honzougaku\ ;
+修正者 > shuuseisha\ ;
+風速計 > fuusokukei\ ;
+潜在的 > senzaiteki\ ;
+変拍子 > henbyoushi\ ;
+旧思想 > kyuushisou\ ;
+雑木林 > zoubokurin\ ;
+入場券 > nyuujouken\ ;
+戦闘的 > sentouteki\ ;
+終電車 > shuudensha\ ;
+背美鯨 > semikujira\ ;
+穴杓子 > anajakushi\ ;
+一年中 > ichinenjuu\ ;
+鉄砲水 > teppoumizu\ ;
+全国民 > zenkokumin\ ;
+人口学 > jinkougaku\ ;
+直滑降 > chokkakkou\ ;
+上申書 > joushinsho\ ;
+針千本 > harisenbon\ ;
+三業地 > sangyouchi\ ;
+並大抵 > namitaitei\ ;
+白雲石 > hakuunseki\ ;
+欠席者 > kessekisha\ ;
+引当金 > hikiatekin\ ;
+装飾音 > soushokuon\ ;
+視聴者 > shichousha\ ;
+乳臭児 > nyuushuuji\ ;
+手沢本 > shutakubon\ ;
+警戒心 > keikaishin\ ;
+中国語 > chuugokugo\ ;
+入手難 > nyuushunan\ ;
+電流計 > denryuukei\ ;
+山梔子 > kuchinashi\ ;
+君主国 > kunshukoku\ ;
+音楽学 > ongakugaku\ ;
+錯字症 > sakujishou\ ;
+大盤石 > daibanjaku\ ;
+分子量 > bunshiryou\ ;
+一番茶 > ichibancha\ ;
+遅刻者 > chikokusha\ ;
+再発足 > saihossoku\ ;
+対蹠的 > taishoteki\ ;
+槍術家 > soujutsuka\ ;
+歌謡曲 > kayoukyoku\ ;
+活人画 > katsujinga\ ;
+二言目 > futakotome\ ;
+原子量 > genshiryou\ ;
+大幅物 > oohabamono\ ;
+独奏会 > dokusoukai\ ;
+脱臭剤 > dasshuuzai\ ;
+快速船 > kaisokusen\ ;
+生殖器 > seishokuki\ ;
+車中談 > shachuudan\ ;
+鎮静剤 > chinseizai\ ;
+合併症 > gappeishou\ ;
+懇親会 > konshinkai\ ;
+牽牛星 > kengyuusei\ ;
+刺激剤 > shigekizai\ ;
+茶柄杓 > chabishaku\ ;
+有神論 > yuushinron\ ;
+命中数 > meichuusuu\ ;
+方解石 > houkaiseki\ ;
+売掛金 > urikakekin\ ;
+超巨星 > choukyosei\ ;
+立体的 > rittaiteki\ ;
+白昼夢 > hakuchuumu\ ;
+新記録 > shinkiroku\ ;
+注解者 > chuukaisha\ ;
+保釈金 > hoshakukin\ ;
+反粒子 > hanryuushi\ ;
+下足料 > gesokuryou\ ;
+注文書 > chuumonsho\ ;
+化合物 > kagoubutsu\ ;
+屋形船 > yakatabune\ ;
+運動力 > undouryoku\ ;
+銘銘皿 > meimeizara\ ;
+黒曜岩 > kokuyougan\ ;
+原作者 > gensakusha\ ;
+兵站学 > heitangaku\ ;
+細密画 > saimitsuga\ ;
+一番線 > ichibansen\ ;
+半人前 > han''ninmae\ ;
+脳梗塞 > noukousoku\ ;
+劇場街 > gekijougai\ ;
+来々週 > rairaishuu\ ;
+決議権 > ketsugiken\ ;
+劃一化 > kakuitsuka\ ;
+一槽式 > issoushiki\ ;
+宅急便 > takkyuubin\ ;
+老人病 > roujinbyou\ ;
+合格点 > goukakuten\ ;
+試供品 > shikyouhin\ ;
+中堅手 > chuukenshu\ ;
+葛饅頭 > kuzumanjuu\ ;
+接客婦 > sekkyakufu\ ;
+活字本 > katsujihon\ ;
+霍公鳥 > hototogisu\ ;
+問題劇 > mondaigeki\ ;
+聴講生 > choukousei\ ;
+賽銭箱 > saisenbako\ ;
+提唱者 > teishousha\ ;
+噴飯物 > funpanmono\ ;
+分極化 > bunkyokuka\ ;
+管理局 > kanrikyoku\ ;
+角錐台 > kakusuidai\ ;
+福岡県 > fukuokaken\ ;
+独壇場 > dokudanjou\ ;
+仲間褒 > nakamabome\ ;
+随想録 > zuisouroku\ ;
+撮影者 > satsueisha\ ;
+如菩薩 > nyobosatsu\ ;
+命中弾 > meichuudan\ ;
+真分数 > shinbunsuu\ ;
+雇用主 > koyounushi\ ;
+鉄砲弾 > teppoudama\ ;
+屯田兵 > tondenhei\ ;
+敵部隊 > tekibutai\ ;
+抵当権 > teitouken\ ;
+村夫子 > sonpuushi\ ;
+揚水車 > yousuisha\ ;
+救援軍 > kyuuengun\ ;
+育毛剤 > ikumouzai\ ;
+黒頭巾 > kurozukin\ ;
+解毒剤 > gedokuzai\ ;
+高姿勢 > koushisei\ ;
+屋台店 > yataimise\ ;
+起磁力 > kijiryoku\ ;
+原生林 > genseirin\ ;
+歴史画 > rekishiga\ ;
+前半生 > zenhansei\ ;
+存在論 > sonzairon\ ;
+希望的 > kibouteki\ ;
+人工雷 > jinkourai\ ;
+専用機 > sen''youki\ ;
+度量衡 > doryoukou\ ;
+党大会 > toutaikai\ ;
+同乗者 > doujousha\ ;
+労動者 > roudousha\ ;
+単数型 > tansuukei\ ;
+従兄弟 > juukeitei\ ;
+齧歯類 > gesshirui\ ;
+冠木門 > kabukimon\ ;
+付属品 > fuzokuhin\ ;
+訪問者 > houmonsha\ ;
+発頭人 > hottounin\ ;
+文選工 > bunsenkou\ ;
+同居人 > doukyonin\ ;
+参詣人 > sankeinin\ ;
+役員会 > yakuinkai\ ;
+孤立語 > koritsugo\ ;
+生菓子 > namagashi\ ;
+勘定書 > kanjousho\ ;
+開催地 > kaisaichi\ ;
+落後者 > rakugosha\ ;
+男子校 > danshikou\ ;
+一苦労 > hitokurou\ ;
+催涙弾 > sairuidan\ ;
+統治権 > touchiken\ ;
+禁転載 > kintensai\ ;
+港湾税 > kouwanzei\ ;
+不寛容 > fukan''you\ ;
+不信仰 > fushinkou\ ;
+太公望 > taikoubou\ ;
+丸括弧 > marugakko\ ;
+外向性 > gaikousei\ ;
+不足前 > tarazumae\ ;
+二国間 > nikokukan\ ;
+会葬者 > kaisousha\ ;
+福寿草 > fukujusou\ ;
+法曹界 > housoukai\ ;
+運輸省 > un''yushou\ ;
+運輸相 > un''yushou\ ;
+乗車駅 > joushaeki\ ;
+朝鮮語 > chousengo\ ;
+革命家 > kakumeika\ ;
+機密費 > kimitsuhi\ ;
+人造米 > jinzoumai\ ;
+洋品店 > youhinten\ ;
+個人的 > kojinteki\ ;
+一元化 > ichigenka\ ;
+伝道船 > dendousen\ ;
+圧迫感 > appakukan\ ;
+予防策 > yobousaku\ ;
+若隠居 > wakainkyo\ ;
+定住者 > teijuusha\ ;
+水溶性 > suiyousei\ ;
+遺言書 > yuigonsho\ ;
+代燃車 > dainensha\ ;
+変成岩 > henseigan\ ;
+一定量 > itteiryou\ ;
+苦灰石 > kukaiseki\ ;
+左心房 > sashinbou\ ;
+輪番制 > rinbansei\ ;
+請願者 > seigansha\ ;
+圧迫性 > appakusei\ ;
+羅生門 > rashoumon\ ;
+個人用 > kojin''you\ ;
+享受者 > kyoujusha\ ;
+御足労 > gosokurou\ ;
+爬虫類 > hachuurui\ ;
+迷信家 > meishinka\ ;
+書簡文 > shokanbun\ ;
+許可証 > kyokashou\ ;
+民主党 > minshutou\ ;
+太刀先 > tachisaki\ ;
+伝道者 > dendousha\ ;
+監視船 > kanshisen\ ;
+縄暖簾 > nawanoren\ ;
+綿製品 > menseihin\ ;
+出走馬 > shussouba\ ;
+二階建 > nikaidate\ ;
+修正案 > shuuseian\ ;
+宣伝戦 > sendensen\ ;
+請負業 > ukeoigyou\ ;
+類人猿 > ruijin''en\ ;
+合理的 > gouriteki\ ;
+勝負師 > shoubushi\ ;
+糸蚯蚓 > itomimizu\ ;
+延長戦 > enchousen\ ;
+土建業 > dokengyou\ ;
+贈呈品 > zouteihin\ ;
+金鉱地 > kinkouchi\ ;
+昼御飯 > hirugohan\ ;
+蒙古襞 > moukohida\ ;
+半月刊 > hangekkan\ ;
+県民税 > kenminzei\ ;
+扇動者 > sendousha\ ;
+集会所 > shuukaijo\ ;
+木工場 > mokkoujou\ ;
+洒落者 > sharemono\ ;
+戦闘帽 > sentoubou\ ;
+夕化粧 > yuugeshou\ ;
+可動堰 > kadouzeki\ ;
+大年増 > ootoshima\ ;
+法理学 > hourigaku\ ;
+黄頷蛇 > aodaishou\ ;
+透明体 > toumeitai\ ;
+故障車 > koshousha\ ;
+監視者 > kanshisha\ ;
+弁慶草 > benkeisou\ ;
+存在者 > sonzaisha\ ;
+全国区 > zenkokuku\ ;
+天皇旗 > ten''nouki\ ;
+官僚化 > kanryouka\ ;
+既得権 > kitokuken\ ;
+光線銃 > kousenjuu\ ;
+仮面劇 > kamengeki\ ;
+機械的 > kikaiteki\ ;
+熨斗紙 > noshigami\ ;
+写植機 > shashokki\ ;
+本体論 > hontairon\ ;
+発声法 > hasseihou\ ;
+給湯器 > kyuutouki\ ;
+遊興費 > yuukyouhi\ ;
+平安京 > heiankyou\ ;
+生欠伸 > namaakubi\ ;
+送付先 > soufusaki\ ;
+外野席 > gaiyaseki\ ;
+立体戦 > rittaisen\ ;
+監視網 > kanshimou\ ;
+月水金 > gessuikin\ ;
+正投手 > seitoushu\ ;
+遠赤外 > ensekigai\ ;
+指示薬 > shijiyaku\ ;
+信号機 > shingouki\ ;
+井戸車 > idoguruma\ ;
+有名税 > yuumeizei\ ;
+立体感 > rittaikan\ ;
+優先権 > yuusenken\ ;
+実験場 > jikkenjou\ ;
+牡丹餅 > botamochi\ ;
+経団連 > keidanren\ ;
+断頭台 > dantoudai\ ;
+予約者 > yoyakusha\ ;
+終夜灯 > shuuyatou\ ;
+暗黒面 > ankokumen\ ;
+宣伝屋 > senden''ya\ ;
+代替品 > daitaihin\ ;
+炭酸塩 > tansan''en\ ;
+下宿屋 > geshukuya\ ;
+補給線 > hokyuusen\ ;
+名人戦 > meijinsen\ ;
+一般席 > ippanseki\ ;
+遭難者 > sounansha\ ;
+原子砲 > genshihou\ ;
+倒置法 > touchihou\ ;
+照準器 > shoujunki\ ;
+原住民 > genjuumin\ ;
+聖公会 > seikoukai\ ;
+原産地 > gensanchi\ ;
+革命児 > kakumeiji\ ;
+優駿馬 > yuushunba\ ;
+主情論 > shujouron\ ;
+骨董品 > kottouhin\ ;
+管財人 > kanzainin\ ;
+演劇界 > engekikai\ ;
+銀閣寺 > ginkakuji\ ;
+風鳥座 > fuuchouza\ ;
+挟瞼器 > kyoukenki\ ;
+教授法 > kyoujuhou\ ;
+電気釜 > denkigama\ ;
+電気量 > denkiryou\ ;
+点光源 > tenkougen\ ;
+日刊紙 > nikkanshi\ ;
+間狂言 > aikyougen\ ;
+老人性 > roujinsei\ ;
+計数管 > keisuukan\ ;
+金利鞘 > kinrishou\ ;
+仮政府 > kariseifu\ ;
+現代版 > gendaiban\ ;
+低姿勢 > teishisei\ ;
+急降下 > kyuukouka\ ;
+信号旗 > shingouki\ ;
+童話劇 > douwageki\ ;
+実験台 > jikkendai\ ;
+水成岩 > suiseigan\ ;
+御寮人 > goryounin\ ;
+自身番 > jishinban\ ;
+砂時計 > sunadokei\ ;
+血達磨 > chidaruma\ ;
+養鶏場 > youkeijou\ ;
+脱走兵 > dassouhei\ ;
+荘園制 > shouensei\ ;
+前半戦 > zenpansen\ ;
+訓詁学 > kunkogaku\ ;
+車井戸 > kurumaido\ ;
+外務省 > gaimushou\ ;
+新時代 > shinjidai\ ;
+渉外部 > shougaibu\ ;
+感光紙 > kankoushi\ ;
+撮影機 > satsueiki\ ;
+一生涯 > isshougai\ ;
+水源地 > suigenchi\ ;
+整流器 > seiryuuki\ ;
+銀行界 > ginkoukai\ ;
+現住所 > genjuusho\ ;
+前口上 > maekoujou\ ;
+地対空 > chitaikuu\ ;
+第一集 > daiisshuu\ ;
+天皇家 > ten''nouke\ ;
+給油船 > kyuuyusen\ ;
+代書人 > daishonin\ ;
+創始者 > soushisha\ ;
+価格帯 > kakakutai\ ;
+場所柄 > bashogara\ ;
+信号所 > shingoujo\ ;
+悪循環 > akujunkan\ ;
+実験値 > jikkenchi\ ;
+不風流 > bufuuryuu\ ;
+宣伝員 > senden''in\ ;
+除電針 > jodenbari\ ;
+衛生学 > eiseigaku\ ;
+発見者 > hakkensha\ ;
+法王庁 > hououchou\ ;
+一番手 > ichibante\ ;
+限界点 > genkaiten\ ;
+板目紙 > itamegami\ ;
+愁嘆場 > shuutanba\ ;
+花相撲 > hanazumou\ ;
+歯科学 > shikagaku\ ;
+仕事着 > shigotogi\ ;
+光文社 > koubunsha\ ;
+高燥地 > kousouchi\ ;
+農地法 > nouchihou\ ;
+葛根湯 > kakkontou\ ;
+光電管 > koudenkan\ ;
+身分柄 > mibungara\ ;
+観覧券 > kanranken\ ;
+禁制品 > kinseihin\ ;
+当籤者 > tousensha\ ;
+進化論 > shinkaron\ ;
+再検討 > saikentou\ ;
+半夏生 > hangeshou\ ;
+御飯時 > gohandoki\ ;
+愛弟子 > manadeshi\ ;
+手引書 > tebikisho\ ;
+揮発油 > kihatsuyu\ ;
+翰林院 > kanrin''in\ ;
+整合性 > seigousei\ ;
+料理番 > ryouriban\ ;
+十二宮 > juunikyuu\ ;
+生産財 > seisanzai\ ;
+一代記 > ichidaiki\ ;
+元始祭 > genshisai\ ;
+亡命者 > boumeisha\ ;
+有税品 > yuuzeihin\ ;
+大使館 > taishikan\ ;
+限定詞 > genteishi\ ;
+無駄飯 > mudameshi\ ;
+総決算 > soukessan\ ;
+歴史家 > rekishika\ ;
+海水帽 > kaisuibou\ ;
+控除額 > koujogaku\ ;
+家政学 > kaseigaku\ ;
+内弟子 > uchideshi\ ;
+多忙中 > tabouchuu\ ;
+原寸大 > gensundai\ ;
+機能的 > kinouteki\ ;
+女性的 > joseiteki\ ;
+滑翔機 > kasshouki\ ;
+年始状 > nenshijou\ ;
+子煩悩 > kobon''nou\ ;
+指南車 > shinansha\ ;
+写生文 > shaseibun\ ;
+内遊星 > naiyuusei\ ;
+苦行者 > kugyousha\ ;
+罪悪感 > zaiakukan\ ;
+無症状 > mushoujou\ ;
+角砂糖 > kakuzatou\ ;
+生返事 > namahenji\ ;
+単純性 > tanjunsei\ ;
+大僧正 > daisoujou\ ;
+一身上 > isshinjou\ ;
+修道尼 > shuudouni\ ;
+軍放送 > gunhousou\ ;
+登記料 > toukiryou\ ;
+英国人 > eikokujin\ ;
+偽証者 > gishousha\ ;
+道路橋 > dourokyou\ ;
+撮影所 > satsueijo\ ;
+形態論 > keitairon\ ;
+偽証罪 > gishouzai\ ;
+首謀者 > shubousha\ ;
+複号化 > fukugouka\ ;
+第一輯 > daiisshuu\ ;
+始祖鳥 > shisochou\ ;
+特許法 > tokkyohou\ ;
+養毛剤 > youmouzai\ ;
+浮気者 > uwakimono\ ;
+暗黒街 > ankokugai\ ;
+大元帥 > daigensui\ ;
+免許状 > menkyojou\ ;
+夜光虫 > yakouchuu\ ;
+奇天烈 > kiteretsu\ ;
+匙加減 > sajikagen\ ;
+投手板 > toushuban\ ;
+従業員 > juugyouin\ ;
+批評眼 > hihyougan\ ;
+修道女 > shuudoujo\ ;
+圧痛点 > attsuuten\ ;
+海兵隊 > kaiheitai\ ;
+考課表 > koukahyou\ ;
+麦芽糖 > bakugatou\ ;
+文芸欄 > bungeiran\ ;
+夜盲症 > yamoushou\ ;
+投稿者 > toukousha\ ;
+無差別 > musabetsu\ ;
+空挺隊 > kuuteitai\ ;
+微調整 > bichousei\ ;
+口忠実 > kuchimame\ ;
+花模様 > hanamoyou\ ;
+有名校 > yuumeikou\ ;
+特許権 > tokkyoken\ ;
+構成子 > kouseishi\ ;
+請願書 > seigansho\ ;
+拡声機 > kakuseiki\ ;
+討論会 > touronkai\ ;
+拘置所 > kouchisho\ ;
+交渉員 > koushouin\ ;
+労役場 > rouekijou\ ;
+長尾鶏 > nagaodori\ ;
+水銀灯 > suigintou\ ;
+主成分 > shuseibun\ ;
+修辞法 > shuujihou\ ;
+卓話会 > takuwakai\ ;
+手工芸 > shukougei\ ;
+料理法 > ryourihou\ ;
+承認図 > shouninzu\ ;
+本島人 > hontoujin\ ;
+恒常性 > koujousei\ ;
+長尾鳥 > nagaodori\ ;
+組織化 > soshikika\ ;
+御新造 > goshinzou\ ;
+乾電池 > kandenchi\ ;
+自作農 > jisakunou\ ;
+制空権 > seikuuken\ ;
+花椰菜 > hanayasai\ ;
+競技場 > kyougijou\ ;
+旧制度 > kyuuseido\ ;
+共和政 > kyouwasei\ ;
+尊王家 > son''nouka\ ;
+遅進児 > chishinji\ ;
+栄養学 > eiyougaku\ ;
+不介入 > fukainyuu\ ;
+投手戦 > toushusen\ ;
+犬張子 > inuhariko\ ;
+送電線 > soudensen\ ;
+卵黄嚢 > ran''ounou\ ;
+気圧計 > kiatsukei\ ;
+駆虫剤 > kuchuuzai\ ;
+犬追物 > inuoumono\ ;
+三斑鶉 > mifuuzura\ ;
+拍子木 > hyoushigi\ ;
+多毛作 > tamousaku\ ;
+手荷物 > tenimotsu\ ;
+几帳面 > kichoumen\ ;
+模範的 > mohanteki\ ;
+筆記帳 > hikkichou\ ;
+長距離 > choukyori\ ;
+美少年 > bishounen\ ;
+乾燥材 > kansouzai\ ;
+生産者 > seisansha\ ;
+不服従 > fufukujuu\ ;
+本格派 > honkakuha\ ;
+原子戦 > genshisen\ ;
+不変量 > fuhenryou\ ;
+顔馴染 > kaonajimi\ ;
+落葉樹 > rakuyouju\ ;
+三頭筋 > santoukin\ ;
+代言者 > daigensha\ ;
+揮発度 > kihatsudo\ ;
+大自然 > daishizen\ ;
+不時着 > fujichaku\ ;
+統制線 > touseisen\ ;
+光電池 > koudenchi\ ;
+花供養 > hanakuyou\ ;
+難問題 > nanmondai\ ;
+継電鍵 > keidenken\ ;
+機械学 > kikaigaku\ ;
+婦人病 > fujinbyou\ ;
+同好者 > doukousha\ ;
+偽妊娠 > gininshin\ ;
+火縄銃 > hinawajuu\ ;
+前勘定 > maekanjou\ ;
+既発表 > kihappyou\ ;
+甲状腺 > koujousen\ ;
+稽古事 > keikogoto\ ;
+成文法 > seibunhou\ ;
+規格品 > kikakuhin\ ;
+仕事日 > shigotobi\ ;
+分与税 > bun''yozei\ ;
+白無垢 > shiromuku\ ;
+二等賞 > nitoushou\ ;
+定休日 > teikyuubi\ ;
+白灯油 > hakutouyu\ ;
+運転席 > untenseki\ ;
+公民館 > kouminkan\ ;
+篤農家 > tokunouka\ ;
+茉莉花 > matsurika\ ;
+人工港 > jinkoukou\ ;
+高陵土 > kouryoudo\ ;
+感光板 > kankouban\ ;
+三乗根 > sanjoukon\ ;
+男風呂 > otokoburo\ ;
+女郎花 > ominaeshi\ ;
+滞納者 > tainousha\ ;
+伝道師 > dendoushi\ ;
+応召兵 > oushouhei\ ;
+複十字 > fukujuuji\ ;
+再構成 > saikousei\ ;
+有段者 > yuudansha\ ;
+単衣物 > hitoemono\ ;
+規格判 > kikakuban\ ;
+第三者 > daisansha\ ;
+体操場 > taisoujou\ ;
+主流派 > shuryuuha\ ;
+広報官 > kouhoukan\ ;
+人工池 > jinkouike\ ;
+口蓋垂 > kougaisui\ ;
+金剛砂 > kongousha\ ;
+十三夜 > juusan''ya\ ;
+大学院 > daigakuin\ ;
+乗用車 > jouyousha\ ;
+不明確 > fumeikaku\ ;
+蜃気楼 > shinkirou\ ;
+複葉機 > fukuyouki\ ;
+二等親 > nitoushin\ ;
+草競馬 > kusakeiba\ ;
+隠元豆 > ingenmame\ ;
+累乗根 > ruijoukon\ ;
+東洋人 > touyoujin\ ;
+競技会 > kyougikai\ ;
+勧誘員 > kan''yuuin\ ;
+老婆心 > roubashin\ ;
+債権者 > saikensha\ ;
+第一義 > daiichigi\ ;
+圧倒的 > attouteki\ ;
+不明瞭 > fumeiryou\ ;
+放電管 > houdenkan\ ;
+前身頃 > maemigoro\ ;
+少数派 > shousuuha\ ;
+特捜部 > tokusoubu\ ;
+調馬師 > choubashi\ ;
+理論的 > rironteki\ ;
+飲水量 > insuiryou\ ;
+調理法 > chourihou\ ;
+累犯者 > ruihansha\ ;
+好都合 > koutsugou\ ;
+安全域 > anzen''iki\ ;
+虚栄心 > kyoeishin\ ;
+定期的 > teikiteki\ ;
+認可証 > ninkashou\ ;
+信心家 > shinjinka\ ;
+強姦罪 > goukanzai\ ;
+教授会 > kyoujukai\ ;
+連合軍 > rengougun\ ;
+重合体 > juugoutai\ ;
+加虐愛 > kagyakuai\ ;
+河川敷 > kasenjiki\ ;
+軍隊葬 > guntaisou\ ;
+数年間 > suunenkan\ ;
+軽気球 > keikikyuu\ ;
+青浮草 > aoukikusa\ ;
+安楽死 > anrakushi\ ;
+金平糖 > konpeitou\ ;
+定住地 > teijuuchi\ ;
+金輪際 > konrinzai\ ;
+料理店 > ryouriten\ ;
+貿易風 > bouekifuu\ ;
+人工林 > jinkourin\ ;
+海運業 > kaiungyou\ ;
+衣食住 > ishokujuu\ ;
+寝具類 > shingurui\ ;
+東南東 > tounantou\ ;
+甲板員 > kouhan''in\ ;
+現代史 > gendaishi\ ;
+根菜類 > konsairui\ ;
+定例会 > teireikai\ ;
+決闘状 > kettoujou\ ;
+蚕卵紙 > sanranshi\ ;
+外蒙古 > sotomouko\ ;
+車両化 > sharyouka\ ;
+感光性 > kankousei\ ;
+第一章 > daiisshou\ ;
+臨界点 > rinkaiten\ ;
+商売気 > shoubaigi\ ;
+国憲法 > kokkenpou\ ;
+両陛下 > ryouheika\ ;
+限定版 > genteiban\ ;
+前車輪 > zensharin\ ;
+雄牛糞 > oushikuso\ ;
+不妊症 > funinshou\ ;
+変流器 > henryuuki\ ;
+針供養 > harikuyou\ ;
+微視的 > bishiteki\ ;
+監視塔 > kanshitou\ ;
+占拠地 > senkyochi\ ;
+指向性 > shikousei\ ;
+一人用 > hitoriyou\ ;
+調馬場 > choubajou\ ;
+再輸入 > saiyunyuu\ ;
+綿津見 > watatsumi\ ;
+優良児 > yuuryouji\ ;
+浮動票 > fudouhyou\ ;
+先天性 > sentensei\ ;
+形成層 > keiseisou\ ;
+師範代 > shihandai\ ;
+休止符 > kyuushifu\ ;
+不面目 > fumenmoku\ ;
+小糠雨 > konukaame\ ;
+本予算 > hon''yosan\ ;
+指南番 > shinanban\ ;
+拡声器 > kakuseiki\ ;
+自由業 > jiyuugyou\ ;
+禁輸品 > kin''yuhin\ ;
+司会者 > shikaisha\ ;
+投稿欄 > toukouran\ ;
+挿話的 > souwateki\ ;
+道中記 > douchuuki\ ;
+半塩水 > han''ensui\ ;
+排他的 > haitateki\ ;
+大腸炎 > daichouen\ ;
+尼法師 > amahoushi\ ;
+定置網 > teichiami\ ;
+芸能界 > geinoukai\ ;
+半濁音 > handakuon\ ;
+配管工 > haikankou\ ;
+現代人 > gendaijin\ ;
+農漁民 > nougyomin\ ;
+女性学 > joseigaku\ ;
+乾燥地 > kansouchi\ ;
+分類法 > bunruihou\ ;
+石膏像 > sekkouzou\ ;
+影武者 > kagemusha\ ;
+活版本 > kappanbon\ ;
+仕事場 > shigotoba\ ;
+婦人服 > fujinfuku\ ;
+寝心地 > negokochi\ ;
+絵巻物 > emakimono\ ;
+不料簡 > furyouken\ ;
+化石層 > kasekisou\ ;
+晩餐会 > bansankai\ ;
+仕放題 > shihoudai\ ;
+共和制 > kyouwasei\ ;
+案内状 > an''naijou\ ;
+多元的 > tagenteki\ ;
+制海権 > seikaiken\ ;
+交配種 > kouhaishu\ ;
+在住者 > zaijuusha\ ;
+成熟期 > seijukuki\ ;
+共和党 > kyouwatou\ ;
+平方根 > heihoukon\ ;
+諜報員 > chouhouin\ ;
+興奮剤 > koufunzai\ ;
+先見者 > senkensha\ ;
+航空券 > koukuuken\ ;
+光電子 > koudenshi\ ;
+売国奴 > baikokudo\ ;
+繁分数 > hanbunsuu\ ;
+性行動 > seikoudou\ ;
+銀行券 > ginkouken\ ;
+万万歳 > banbanzai\ ;
+停船場 > teisenjou\ ;
+嘆願書 > tangansho\ ;
+再生産 > saiseisan\ ;
+地対地 > chitaichi\ ;
+文体論 > buntairon\ ;
+調査団 > chousadan\ ;
+単行本 > tankoubon\ ;
+小夜曲 > sayokyoku\ ;
+出世間 > shusseken\ ;
+単行書 > tankousho\ ;
+一時間 > ichijikan\ ;
+温泉郷 > onsenkyou\ ;
+有名人 > yuumeijin\ ;
+後甲板 > koukanpan\ ;
+弱体化 > jakutaika\ ;
+経済面 > keizaimen\ ;
+修験道 > shugendou\ ;
+往生際 > oujougiwa\ ;
+残存者 > zanzonsha\ ;
+航空便 > koukuubin\ ;
+核武装 > kakubusou\ ;
+埋蔵金 > maizoukin\ ;
+孤立化 > koritsuka\ ;
+聖家族 > seikazoku\ ;
+乾燥剤 > kansouzai\ ;
+泥炭地 > deitanchi\ ;
+外輪船 > gairinsen\ ;
+複利法 > fukurihou\ ;
+蒸留器 > jouryuuki\ ;
+鑑定書 > kanteisho\ ;
+製氷機 > seihyouki\ ;
+巻寿司 > makizushi\ ;
+消費財 > shouhizai\ ;
+著作家 > chosakuka\ ;
+市販品 > shihanhin\ ;
+巻頭言 > kantougen\ ;
+調理師 > chourishi\ ;
+真桑瓜 > makuwauri\ ;
+随従者 > zuijuusha\ ;
+一寸先 > issunsaki\ ;
+文学部 > bungakubu\ ;
+予約制 > yoyakusei\ ;
+線速度 > sensokudo\ ;
+平面形 > heimenkei\ ;
+複比例 > fukuhirei\ ;
+散水車 > sansuisha\ ;
+一時金 > ichijikin\ ;
+前年度 > zen''nendo\ ;
+発行者 > hakkousha\ ;
+停留所 > teiryuujo\ ;
+宮城県 > miyagiken\ ;
+前前回 > zenzenkai\ ;
+燗徳利 > kandokuri\ ;
+死刑場 > shikeijou\ ;
+巻子本 > kanshihon\ ;
+町議会 > chougikai\ ;
+人生観 > jinseikan\ ;
+真珠貝 > shinjugai\ ;
+京都市 > kyoutoshi\ ;
+雨台風 > ametaifuu\ ;
+自由形 > jiyuugata\ ;
+免許制 > menkyosei\ ;
+雑報欄 > zappouran\ ;
+愛党心 > aitoushin\ ;
+防止法 > boushihou\ ;
+選挙法 > senkyohou\ ;
+天井裏 > tenjouura\ ;
+半陰影 > han''in''ei\ ;
+最重点 > saijuuten\ ;
+一対一 > ittaiichi\ ;
+選挙民 > senkyomin\ ;
+教唆者 > kyousasha\ ;
+料理人 > ryourinin\ ;
+自由席 > jiyuuseki\ ;
+月刊誌 > gekkanshi\ ;
+不熟練 > fujukuren\ ;
+古典的 > kotenteki\ ;
+変死者 > henshisha\ ;
+本格化 > honkakuka\ ;
+仕上工 > shiagekou\ ;
+牡丹杏 > botankyou\ ;
+平方形 > heihoukei\ ;
+労働者 > roudousha\ ;
+変化球 > henkakyuu\ ;
+遠隔視 > enkakushi\ ;
+雑記帳 > zakkichou\ ;
+在校生 > zaikousei\ ;
+摩擦音 > masatsuon\ ;
+蛍烏賊 > hotaruika\ ;
+再生法 > saiseihou\ ;
+多発機 > tahatsuki\ ;
+活版屋 > kappan''ya\ ;
+金剛手 > kongoushu\ ;
+被害額 > higaigaku\ ;
+選挙権 > senkyoken\ ;
+基本給 > kihonkyuu\ ;
+非金属 > hikinzoku\ ;
+猩猩緋 > shoujouhi\ ;
+回教徒 > kaikyouto\ ;
+指示先 > shijisaki\ ;
+備忘録 > bibouroku\ ;
+砂糖黍 > satoukibi\ ;
+案内書 > an''naisho\ ;
+功労金 > kouroukin\ ;
+被差別 > hisabetsu\ ;
+痘痕面 > abatazura\ ;
+朱文金 > shubunkin\ ;
+不謹慎 > fukinshin\ ;
+肝硬変 > kankouhen\ ;
+末期的 > makkiteki\ ;
+礼奉公 > reiboukou\ ;
+協技者 > kyougisha\ ;
+多足類 > tasokurui\ ;
+神秘性 > shinpisei\ ;
+沸騰点 > futtouten\ ;
+養魚池 > yougyochi\ ;
+魔法的 > mahouteki\ ;
+製氷所 > seihyoujo\ ;
+関西弁 > kansaiben\ ;
+八千草 > yachigusa\ ;
+道交法 > doukouhou\ ;
+野菜汁 > yasaijiru\ ;
+斡旋料 > assenryou\ ;
+航海士 > koukaishi\ ;
+浮動株 > fudoukabu\ ;
+混交林 > konkourin\ ;
+模範囚 > mohanshuu\ ;
+講義録 > kougiroku\ ;
+生存者 > seizonsha\ ;
+不謬性 > fubyuusei\ ;
+導電性 > doudensei\ ;
+改革案 > kaikakuan\ ;
+法改正 > houkaisei\ ;
+生産性 > seisansei\ ;
+上中下 > jouchuuge\ ;
+給水所 > kyuusuijo\ ;
+猜疑心 > saigishin\ ;
+不調法 > buchouhou\ ;
+受動的 > judouteki\ ;
+自由型 > jiyuugata\ ;
+調理台 > chouridai\ ;
+空閑地 > kuukanchi\ ;
+労働祭 > roudousai\ ;
+再来週 > saraishuu\ ;
+代表部 > daihyoubu\ ;
+僅少差 > kinshousa\ ;
+周期性 > shuukisei\ ;
+飛行服 > hikoufuku\ ;
+不特定 > futokutei\ ;
+表面化 > hyoumenka\ ;
+市有地 > shiyuuchi\ ;
+標準語 > hyoujungo\ ;
+水平面 > suiheimen\ ;
+交通路 > koutsuuro\ ;
+消費者 > shouhisha\ ;
+古道具 > furudougu\ ;
+基本的 > kihonteki\ ;
+草団子 > kusadango\ ;
+真珠色 > shinjuiro\ ;
+統帥権 > tousuiken\ ;
+練習機 > renshuuki\ ;
+昇降舵 > shoukouda\ ;
+兵庫県 > hyougoken\ ;
+公海上 > koukaijou\ ;
+激戦区 > gekisenku\ ;
+儀礼的 > gireiteki\ ;
+有平糖 > aruheitou\ ;
+交通費 > koutsuuhi\ ;
+金魚草 > kingyosou\ ;
+着火点 > chakkaten\ ;
+選挙戦 > senkyosen\ ;
+宗主権 > soushuken\ ;
+水酸根 > suisankon\ ;
+赤十字 > sekijuuji\ ;
+蓄音機 > chikuonki\ ;
+自尊心 > jisonshin\ ;
+表記法 > hyoukihou\ ;
+露天商 > rotenshou\ ;
+休廷日 > kyuuteibi\ ;
+飲酒癖 > inshuheki\ ;
+一斉高 > isseidaka\ ;
+処刑台 > shokeidai\ ;
+冷房車 > reibousha\ ;
+検疫所 > ken''ekijo\ ;
+照度計 > shoudokei\ ;
+収税吏 > shuuzeiri\ ;
+喉自慢 > nodojiman\ ;
+金看板 > kinkanban\ ;
+散弾銃 > sandanjuu\ ;
+培養液 > baiyoueki\ ;
+天狗風 > tengukaze\ ;
+一本杉 > ipponsugi\ ;
+測微計 > sokubikei\ ;
+風致林 > fuuchirin\ ;
+地理学 > chirigaku\ ;
+美食家 > bishokuka\ ;
+尿道炎 > nyoudouen\ ;
+螳螂拳 > tourouken\ ;
+調理人 > chourinin\ ;
+喫煙所 > kitsuenjo\ ;
+時分時 > jibundoki\ ;
+八重桜 > yaezakura\ ;
+南蛮船 > nanbansen\ ;
+豌豆豆 > endoumame\ ;
+回数券 > kaisuuken\ ;
+製造者 > seizousha\ ;
+重役会 > juuyakkai\ ;
+北欧人 > hokuoujin\ ;
+一人子 > hitorikko\ ;
+死生観 > shiseikan\ ;
+炭疽病 > tansobyou\ ;
+白地図 > hakuchizu\ ;
+鼈甲色 > bekkouiro\ ;
+乗車券 > joushaken\ ;
+測程器 > sokuteiki\ ;
+案内嬢 > an''naijou\ ;
+円舞曲 > enbukyoku\ ;
+消費税 > shouhizei\ ;
+壁一重 > kabehitoe\ ;
+四面体 > shimentai\ ;
+在来線 > zairaisen\ ;
+大理石 > dairiseki\ ;
+生産地 > seisanchi\ ;
+片田舎 > katainaka\ ;
+複写機 > fukushaki\ ;
+風俗画 > fuuzokuga\ ;
+側面図 > sokumenzu\ ;
+言語学 > gengogaku\ ;
+巡航船 > junkousen\ ;
+原始林 > genshirin\ ;
+至上権 > shijouken\ ;
+小売商 > kourishou\ ;
+統制品 > touseihin\ ;
+第一審 > daiisshin\ ;
+紅毛人 > koumoujin\ ;
+謄写版 > toushaban\ ;
+控訴審 > kousoshin\ ;
+中古車 > chuukosha\ ;
+新紀元 > shinkigen\ ;
+練習所 > renshuujo\ ;
+立方根 > rippoukon\ ;
+短音階 > tan''onkai\ ;
+宣誓書 > senseisho\ ;
+二拍子 > nibyoushi\ ;
+労農党 > rounoutou\ ;
+彼岸花 > higanbana\ ;
+忠魂碑 > chuukonhi\ ;
+有効性 > yuukousei\ ;
+三日月 > mikadzuki\ ;
+発振機 > hasshinki\ ;
+総務庁 > soumuchou\ ;
+流行語 > ryuukougo\ ;
+内鮮人 > naisenjin\ ;
+生理的 > seiriteki\ ;
+名誉慾 > meiyoyoku\ ;
+努力家 > doryokuka\ ;
+在来種 > zairaishu\ ;
+加硫法 > karyuuhou\ ;
+大家族 > daikazoku\ ;
+景教徒 > keikyouto\ ;
+高積雲 > kousekiun\ ;
+乗船券 > jousenken\ ;
+再審査 > saishinsa\ ;
+用語集 > yougoshuu\ ;
+負傷者 > fushousha\ ;
+労働法 > roudouhou\ ;
+汎用機 > han''youki\ ;
+名誉心 > meiyoshin\ ;
+鑑定人 > kanteinin\ ;
+投票日 > touhyoubi\ ;
+先行詞 > senkoushi\ ;
+独演会 > dokuenkai\ ;
+音韻学 > on''ingaku\ ;
+功労者 > kourousha\ ;
+脳細胞 > nousaibou\ ;
+美文調 > bibunchou\ ;
+明細書 > meisaisho\ ;
+男文字 > otokomoji\ ;
+総勘定 > soukanjou\ ;
+回覧板 > kairanban\ ;
+任命状 > ninmeijou\ ;
+上納金 > jounoukin\ ;
+拷問台 > goumondai\ ;
+上奏文 > jousoubun\ ;
+自責点 > jisekiten\ ;
+助監督 > jokantoku\ ;
+処生訓 > shoseikun\ ;
+本試験 > honshiken\ ;
+外信部 > gaishinbu\ ;
+一人前 > hitorimae\ ;
+労働権 > roudouken\ ;
+地球儀 > chikyuugi\ ;
+地上権 > chijouken\ ;
+金屏風 > kinbyoubu\ ;
+導電体 > doudentai\ ;
+共益費 > kyouekihi\ ;
+不認承 > funinshou\ ;
+馬鹿面 > bakadzura\ ;
+土用波 > doyounami\ ;
+総選挙 > sousenkyo\ ;
+制御盤 > seigyoban\ ;
+心意気 > kokoroiki\ ;
+重労働 > juuroudou\ ;
+手榴弾 > teryuudan\ ;
+一枚上 > ichimaiue\ ;
+天井灯 > tenjoutou\ ;
+養魚場 > yougyojou\ ;
+投票所 > touhyoujo\ ;
+座標系 > zahyoukei\ ;
+円借款 > enshakkan\ ;
+絶対論 > zettairon\ ;
+捕虫網 > hochuuami\ ;
+出来星 > dekiboshi\ ;
+花柳界 > karyuukai\ ;
+公民権 > kouminken\ ;
+如何許 > ikabakari\ ;
+清教徒 > seikyouto\ ;
+紫外線 > shigaisen\ ;
+同好会 > doukoukai\ ;
+洗車場 > senshajou\ ;
+展望車 > tenbousha\ ;
+暗号帳 > angouchou\ ;
+幌馬車 > horobasha\ ;
+大企業 > daikigyou\ ;
+売笑婦 > baishoufu\ ;
+採点者 > saitensha\ ;
+間隙比 > kangekihi\ ;
+壮行会 > soukoukai\ ;
+再生品 > saiseihin\ ;
+公社債 > koushasai\ ;
+未来学 > miraigaku\ ;
+末始終 > sueshijuu\ ;
+潜水艦 > sensuikan\ ;
+水道管 > suidoukan\ ;
+天理教 > tenrikyou\ ;
+予想高 > yosoudaka\ ;
+手柄顔 > tegaragao\ ;
+手芸品 > shugeihin\ ;
+平衡錘 > heikousui\ ;
+抗毒素 > koudokuso\ ;
+大豆粕 > daizukasu\ ;
+研究費 > kenkyuuhi\ ;
+知能犯 > chinouhan\ ;
+選手権 > senshuken\ ;
+麝香鹿 > jakoujika\ ;
+海岸線 > kaigansen\ ;
+貿易港 > bouekikou\ ;
+暦年度 > rekinendo\ ;
+天宮図 > tenkyuuzu\ ;
+有権者 > yuukensha\ ;
+体裁上 > teisaijou\ ;
+伊達男 > dateotoko\ ;
+休刊日 > kyuukanbi\ ;
+古典学 > kotengaku\ ;
+改訂版 > kaiteiban\ ;
+生存権 > seizonken\ ;
+該問題 > gaimondai\ ;
+暗号学 > angougaku\ ;
+代行者 > daikousha\ ;
+八千歳 > yachitose\ ;
+口真似 > kuchimane\ ;
+出版部 > shuppanbu\ ;
+観測所 > kansokujo\ ;
+経済界 > keizaikai\ ;
+不熱心 > funesshin\ ;
+公法人 > kouhoujin\ ;
+休眠期 > kyuuminki\ ;
+副総理 > fukusouri\ ;
+伴奏者 > bansousha\ ;
+対談者 > taidansha\ ;
+貿易法 > bouekihou\ ;
+園遊会 > en''yuukai\ ;
+賛成者 > sanseisha\ ;
+芸能人 > geinoujin\ ;
+分譲地 > bunjouchi\ ;
+屈光性 > kukkousei\ ;
+真珠湾 > shinjuwan\ ;
+交通禍 > koutsuuka\ ;
+拝火教 > haikakyou\ ;
+箇条書 > kajougaki\ ;
+選挙人 > senkyonin\ ;
+酪農家 > rakunouka\ ;
+工芸品 > kougeihin\ ;
+未来型 > miraigata\ ;
+弁鰓類 > bensairui\ ;
+無資格 > mushikaku\ ;
+任命権 > ninmeiken\ ;
+虫垂炎 > chuusuien\ ;
+破落戸 > gorotsuki\ ;
+蓄音器 > chikuonki\ ;
+緩下薬 > kangeyaku\ ;
+有機的 > yuukiteki\ ;
+正反対 > seihantai\ ;
+青海原 > aounabara\ ;
+凹面鏡 > oumenkyou\ ;
+報道陣 > houdoujin\ ;
+劣勢感 > resseikan\ ;
+御料地 > goryouchi\ ;
+計算者 > keisansha\ ;
+無駄口 > mudaguchi\ ;
+李承晩 > rishouban\ ;
+福音書 > fukuinsho\ ;
+八卦掌 > hakkeshou\ ;
+自主的 > jishuteki\ ;
+進歩党 > shinpotou\ ;
+相反性 > souhansei\ ;
+能動態 > noudoutai\ ;
+司令官 > shireikan\ ;
+地震計 > jishinkei\ ;
+紙一重 > kamihitoe\ ;
+水加減 > mizukagen\ ;
+出版費 > shuppanhi\ ;
+果報者 > kahoumono\ ;
+成長期 > seichouki\ ;
+浄土教 > joudokyou\ ;
+天井板 > tenjouita\ ;
+集塵機 > shuujinki\ ;
+凌波性 > ryouhasei\ ;
+快男子 > kaidanshi\ ;
+天狗茸 > tengutake\ ;
+狙撃兵 > sogekihei\ ;
+外輪山 > gairinzan\ ;
+昇降機 > shoukouki\ ;
+放火狂 > houkakyou\ ;
+風馬牛 > fuubagyuu\ ;
+陶器商 > toukishou\ ;
+三塁線 > sanruisen\ ;
+道義心 > dougishin\ ;
+超時空 > choujikuu\ ;
+微粒子 > biryuushi\ ;
+水平線 > suiheisen\ ;
+再尋問 > saijinmon\ ;
+清掃車 > seisousha\ ;
+最前線 > saizensen\ ;
+絶対者 > zettaisha\ ;
+正確度 > seikakudo\ ;
+氷削機 > hyousakki\ ;
+分解能 > bunkainou\ ;
+四角形 > shikakkei\ ;
+宣言書 > sengensho\ ;
+司令塔 > shireitou\ ;
+立太子 > rittaishi\ ;
+有蹄類 > yuuteirui\ ;
+使用者 > shiyousha\ ;
+天上界 > tenjoukai\ ;
+青海亀 > aoumigame\ ;
+来遊者 > raiyuusha\ ;
+巨人軍 > kyojingun\ ;
+学部生 > gakubusei\ ;
+工学部 > kougakubu\ ;
+教科書 > kyoukasho\ ;
+経済法 > keizaihou\ ;
+破傷風 > hashoufuu\ ;
+持参人 > jisan''nin\ ;
+総督府 > soutokufu\ ;
+日本髪 > nihongami\ ;
+制御棒 > seigyobou\ ;
+検案書 > ken''ansho\ ;
+歩道橋 > hodoukyou\ ;
+地方紙 > chihoushi\ ;
+日傭取 > hiyoutori\ ;
+地獄変 > jigokuhen\ ;
+合奏団 > gassoudan\ ;
+発振器 > hasshinki\ ;
+天井扇 > tenjousen\ ;
+全反射 > zenhansha\ ;
+変速機 > hensokuki\ ;
+無理式 > murishiki\ ;
+軽労働 > keiroudou\ ;
+正反合 > seihangou\ ;
+経済欄 > keizairan\ ;
+生字引 > ikijibiki\ ;
+投票区 > touhyouku\ ;
+木曜日 > mokuyoubi\ ;
+出木年 > dekidoshi\ ;
+碓氷峠 > usuitouge\ ;
+加入金 > kanyuukin\ ;
+民間人 > minkanjin\ ;
+公募株 > koubokabu\ ;
+乗馬服 > joubafuku\ ;
+日本領 > nihonryou\ ;
+著書名 > choshomei\ ;
+経営学 > keieigaku\ ;
+白鉛鉱 > hakuenkou\ ;
+粗目糖 > zarametou\ ;
+内玄関 > naigenkan\ ;
+地方税 > chihouzei\ ;
+巡査長 > junsachou\ ;
+印刷機 > insatsuki\ ;
+凍死者 > toushisha\ ;
+白銅貨 > hakudouka\ ;
+天球図 > tenkyuuzu\ ;
+八千年 > yachitose\ ;
+原始人 > genshijin\ ;
+加工賃 > kakouchin\ ;
+竹輪麩 > chikuwafu\ ;
+一方的 > ippouteki\ ;
+出仕事 > deshigoto\ ;
+正念場 > shounenba\ ;
+柔道場 > juudoujou\ ;
+脊髄炎 > sekizuien\ ;
+二重釜 > nijuugama\ ;
+立方体 > rippoutai\ ;
+遠隔性 > enkakusei\ ;
+軽歌劇 > keikageki\ ;
+制動灯 > seidoutou\ ;
+催眠剤 > saiminzai\ ;
+今一度 > imaichido\ ;
+攻防戦 > koubousen\ ;
+浄土宗 > joudoshuu\ ;
+操縦桿 > soujuukan\ ;
+文明館 > bunmeikan\ ;
+導関数 > doukansuu\ ;
+滞在地 > taizaichi\ ;
+上納米 > jounoumai\ ;
+宇宙服 > uchuufuku\ ;
+利口者 > rikoumono\ ;
+方法論 > houhouron\ ;
+蓋然性 > gaizensei\ ;
+半製品 > hanseihin\ ;
+一場面 > ichibamen\ ;
+石版画 > sekibanga\ ;
+登録簿 > tourokubo\ ;
+一昨晩 > issakuban\ ;
+多極化 > takyokuka\ ;
+大一番 > ooichiban\ ;
+衛星国 > eiseikoku\ ;
+下級生 > kakyuusei\ ;
+標準時 > hyoujunji\ ;
+高齢者 > koureisha\ ;
+一丁前 > itchoumae\ ;
+横恋慕 > yokorenbo\ ;
+財産税 > zaisanzei\ ;
+二重身 > nijuushin\ ;
+生理学 > seirigaku\ ;
+熱器具 > netsukigu\ ;
+寒冷紗 > kanreisha\ ;
+水道栓 > suidousen\ ;
+探索木 > tansakugi\ ;
+研究科 > kenkyuuka\ ;
+実施例 > jisshirei\ ;
+長音階 > chouonkai\ ;
+不評判 > fuhyouban\ ;
+選手団 > senshudan\ ;
+功利的 > kouriteki\ ;
+天球儀 > tenkyuugi\ ;
+真珠層 > shinjusou\ ;
+平均点 > heikinten\ ;
+連合会 > rengoukai\ ;
+工業化 > kougyouka\ ;
+赤道儀 > sekidougi\ ;
+文学座 > bungakuza\ ;
+労働党 > roudoutou\ ;
+経済戦 > keizaisen\ ;
+米空軍 > beikuugun\ ;
+敷居置 > shikiichi\ ;
+配当金 > haitoukin\ ;
+飛蚊症 > hibunshou\ ;
+赤痢菌 > sekirikin\ ;
+五十肩 > gojuukata\ ;
+高等官 > koutoukan\ ;
+地方版 > chihouban\ ;
+片脳油 > hen''nouyu\ ;
+奉行所 > bugyousho\ ;
+肯定文 > kouteibun\ ;
+芳香剤 > houkouzai\ ;
+火災流 > kasairyuu\ ;
+印刷所 > insatsujo\ ;
+大聖堂 > daiseidou\ ;
+経済性 > keizaisei\ ;
+蛇紋石 > jamonseki\ ;
+流行歌 > ryuukouka\ ;
+三角洲 > sankakusu\ ;
+三文判 > sanmonban\ ;
+三角波 > sankakuha\ ;
+実際性 > jissaisei\ ;
+竹矢来 > takeyarai\ ;
+平行線 > heikousen\ ;
+葱坊主 > negibouzu\ ;
+孫弟子 > magodeshi\ ;
+容積比 > yousekihi\ ;
+制酸剤 > seisanzai\ ;
+占取権 > senshuken\ ;
+主眼点 > shuganten\ ;
+遠隔地 > enkakuchi\ ;
+三角比 > sankakuhi\ ;
+長時間 > choujikan\ ;
+半端者 > hanpamono\ ;
+独禁法 > dokkinhou\ ;
+広告費 > koukokuhi\ ;
+最優遇 > saiyuuguu\ ;
+台風眼 > taifuugan\ ;
+未教育 > mikyouiku\ ;
+裁断師 > saidanshi\ ;
+全単射 > zentansha\ ;
+効果的 > koukateki\ ;
+空手形 > kuutegata\ ;
+印刻師 > inkokushi\ ;
+青年輩 > seinenhai\ ;
+割烹店 > kappouten\ ;
+貿易品 > bouekihin\ ;
+削岩機 > sakuganki\ ;
+完了後 > kanryougo\ ;
+大上段 > daijoudan\ ;
+園芸学 > engeigaku\ ;
+指相撲 > yubizumou\ ;
+肩甲帯 > kenkoutai\ ;
+正当性 > seitousei\ ;
+砂糖水 > satoumizu\ ;
+方錐形 > housuikei\ ;
+相当数 > soutousuu\ ;
+醸造酒 > jouzoushu\ ;
+左中間 > sachuukan\ ;
+伝令者 > denreisha\ ;
+木綿針 > momenbari\ ;
+木版画 > mokuhanga\ ;
+検査役 > kensayaku\ ;
+忘年会 > bounenkai\ ;
+宇宙学 > uchuugaku\ ;
+真理値 > shinrichi\ ;
+配水管 > haisuikan\ ;
+太陽風 > taiyoufuu\ ;
+使用法 > shiyouhou\ ;
+印刷屋 > insatsuya\ ;
+音声学 > onseigaku\ ;
+伊達女 > dateon''na\ ;
+副詞句 > fukushiku\ ;
+実数体 > jissuutai\ ;
+裏長屋 > uranagaya\ ;
+東工大 > toukoudai\ ;
+花時計 > hanadokei\ ;
+製造品 > seizouhin\ ;
+計算書 > keisansho\ ;
+制動手 > seidoushu\ ;
+不規律 > fukiritsu\ ;
+口腔癌 > koukougan\ ;
+回答者 > kaitousha\ ;
+単従陣 > tanjuujin\ ;
+反英雄 > han''eiyuu\ ;
+主権者 > shukensha\ ;
+大本山 > daihonzan\ ;
+中和剤 > chuuwazai\ ;
+慈善箱 > jizenbako\ ;
+最左翼 > saisayoku\ ;
+三角旗 > sankakuki\ ;
+加入者 > kanyuusha\ ;
+裾模様 > susomoyou\ ;
+一隻眼 > issekigan\ ;
+使用権 > shiyouken\ ;
+近体詩 > kintaishi\ ;
+天狼星 > tenrousei\ ;
+再犯者 > saihansha\ ;
+哨戒機 > shoukaiki\ ;
+通過駅 > tsuukaeki\ ;
+大人共 > otonadomo\ ;
+為放題 > shihoudai\ ;
+苦心談 > kushindan\ ;
+操縦士 > soujuushi\ ;
+真珠光 > shinjukou\ ;
+速度計 > sokudokei\ ;
+無責任 > musekinin\ ;
+播但線 > bantansen\ ;
+聖誕祭 > seitansai\ ;
+無一文 > muichimon\ ;
+常分数 > joubunsuu\ ;
+再考慮 > saikouryo\ ;
+儀典長 > gitenchou\ ;
+工学科 > kougakuka\ ;
+交歓会 > koukankai\ ;
+天象儀 > tenshougi\ ;
+引用文 > in''youbun\ ;
+荒法師 > arahoushi\ ;
+療養費 > ryouyouhi\ ;
+機関長 > kikanchou\ ;
+向地性 > kouchisei\ ;
+凱旋門 > gaisenmon\ ;
+設備費 > setsubihi\ ;
+裁縫師 > saihoushi\ ;
+財産権 > zaisanken\ ;
+同行者 > doukousha\ ;
+投石機 > tousekiki\ ;
+愛校心 > aikoushin\ ;
+伏魔殿 > fukumaden\ ;
+茶器組 > chakigumi\ ;
+三塁手 > sanruishu\ ;
+虚無的 > kyomuteki\ ;
+伝導性 > dendousei\ ;
+文字列 > mojiretsu\ ;
+反芻類 > hansuurui\ ;
+定型詩 > teikeishi\ ;
+水菓子 > mizugashi\ ;
+使用方 > shiyouhou\ ;
+黍団子 > kibidango\ ;
+軟口蓋 > nankougai\ ;
+闇相場 > yamisouba\ ;
+宇宙博 > uchuuhaku\ ;
+最前戦 > saizensen\ ;
+芥子菜 > karashina\ ;
+珍道具 > chindougu\ ;
+黄表紙 > kibyoushi\ ;
+従姉妹 > juushimai\ ;
+子福者 > kobukusha\ ;
+思想界 > shisoukai\ ;
+民衆化 > minshuuka\ ;
+鈍黄色 > nibukiiro\ ;
+三角形 > sankakkei\ ;
+大本営 > daihon''ei\ ;
+猛特訓 > moutokkun\ ;
+予告編 > yokokuhen\ ;
+冷湿布 > reishippu\ ;
+標準化 > hyoujunka\ ;
+南蛮人 > nanbanjin\ ;
+田園詩 > den''enshi\ ;
+三角座 > sankakuza\ ;
+再試験 > saishiken\ ;
+寒帯林 > kantairin\ ;
+傾斜面 > keishamen\ ;
+死亡者 > shibousha\ ;
+三角帆 > sankakuho\ ;
+半端物 > hanpamono\ ;
+婚姻法 > kon''inhou\ ;
+三角州 > sankakusu\ ;
+二重窓 > nijuumado\ ;
+自然類 > shizenrui\ ;
+専売品 > senbaihin\ ;
+不統一 > futouitsu\ ;
+夜会服 > yakaifuku\ ;
+予告篇 > yokokuhen\ ;
+党派心 > touhashin\ ;
+思想犯 > shisouhan\ ;
+弁当代 > bentoudai\ ;
+肝臓癌 > kanzougan\ ;
+経済人 > keizaijin\ ;
+仏教徒 > bukkyouto\ ;
+米海軍 > beikaigun\ ;
+含油層 > gan''yusou\ ;
+情報誌 > jouhoushi\ ;
+凱旋軍 > gaisengun\ ;
+落伍者 > rakugosha\ ;
+融解点 > yuukaiten\ ;
+淋巴球 > rinpakyuu\ ;
+嫌煙権 > ken''enken\ ;
+夫婦仲 > fuufunaka\ ;
+感染原 > kansengen\ ;
+迎賓館 > geihinkan\ ;
+評議会 > hyougikai\ ;
+好男子 > koudanshi\ ;
+早春賦 > soushunfu\ ;
+喉頭癌 > koutougan\ ;
+寝業師 > newazashi\ ;
+人格化 > jinkakuka\ ;
+綺麗事 > kireigoto\ ;
+記名株 > kimeikabu\ ;
+携帯品 > keitaihin\ ;
+駐屯所 > chuutonjo\ ;
+研究所 > kenkyuujo\ ;
+最先端 > saisentan\ ;
+居住者 > kyojuusha\ ;
+誇張法 > kochouhou\ ;
+視覚化 > shikakuka\ ;
+中華街 > chuukagai\ ;
+連判状 > renbanjou\ ;
+麝香猫 > jakouneko\ ;
+変光星 > henkousei\ ;
+審査官 > shinsakan\ ;
+多用中 > tayouchuu\ ;
+早東戦 > soutousen\ ;
+黙秘権 > mokuhiken\ ;
+冒険談 > boukendan\ ;
+常備薬 > joubiyaku\ ;
+妊婦服 > ninpufuku\ ;
+体重計 > taijuukei\ ;
+警官隊 > keikantai\ ;
+講談社 > koudansha\ ;
+近代詩 > kindaishi\ ;
+煙草銭 > tabakosen\ ;
+間投詞 > kantoushi\ ;
+答弁者 > toubensha\ ;
+平行棒 > heikoubou\ ;
+蟻地獄 > arijigoku\ ;
+扁桃腺 > hentousen\ ;
+公判廷 > kouhantei\ ;
+数億年 > suuokunen\ ;
+盆灯籠 > bondourou\ ;
+終戦後 > shuusengo\ ;
+編集部 > henshuubu\ ;
+周囲長 > shuuichou\ ;
+公選制 > kousensei\ ;
+修理工 > shuurikou\ ;
+最適化 > saitekika\ ;
+化学者 > kagakusha\ ;
+贈賄罪 > zouwaizai\ ;
+不承認 > fushounin\ ;
+五重唱 > gojuushou\ ;
+年齢順 > nenreijun\ ;
+賭博場 > tobakujou\ ;
+看守者 > kanshusha\ ;
+弱電器 > jakudenki\ ;
+日本的 > nihonteki\ ;
+開墾地 > kaikonchi\ ;
+禁猟期 > kinryouki\ ;
+前額部 > zengakubu\ ;
+評論家 > hyouronka\ ;
+一斉安 > isseiyasu\ ;
+一親等 > isshintou\ ;
+再放送 > saihousou\ ;
+興行化 > kougyouka\ ;
+化学線 > kagakusen\ ;
+戦死者 > senshisha\ ;
+一文字 > ichimonji\ ;
+文士連 > bunshiren\ ;
+木綿糸 > momen''ito\ ;
+焦電気 > shoudenki\ ;
+授与式 > juyoshiki\ ;
+目分量 > mebunryou\ ;
+天下一 > tenkaichi\ ;
+中古品 > chuukohin\ ;
+市場性 > shijousei\ ;
+中性塩 > chuuseien\ ;
+文語調 > bungochou\ ;
+散兵線 > sanpeisen\ ;
+流行児 > ryuukouji\ ;
+又従弟 > mataitoko\ ;
+腹時計 > haradokei\ ;
+布袋腹 > hoteibara\ ;
+無教育 > mukyouiku\ ;
+研究家 > kenkyuuka\ ;
+教区民 > kyoukumin\ ;
+地震帯 > jishintai\ ;
+長期戦 > choukisen\ ;
+通知簿 > tsuuchibo\ ;
+加工業 > kakougyou\ ;
+不行状 > fugyoujou\ ;
+胡麻油 > gomaabura\ ;
+日本猿 > nihonzaru\ ;
+旧世界 > kyuusekai\ ;
+水平動 > suiheidou\ ;
+短大生 > tandaisei\ ;
+肖像画 > shouzouga\ ;
+一角獣 > ikkakujuu\ ;
+可変長 > kahenchou\ ;
+一要素 > ichiyouso\ ;
+児童劇 > jidougeki\ ;
+埋葬地 > maisouchi\ ;
+上製本 > jouseibon\ ;
+両性花 > ryouseika\ ;
+実行者 > jikkousha\ ;
+傾斜計 > keishakei\ ;
+犯罪者 > hanzaisha\ ;
+絶交状 > zekkoujou\ ;
+外来者 > gairaisha\ ;
+伝導体 > dendoutai\ ;
+斜滑降 > shakakkou\ ;
+常平倉 > jouheisou\ ;
+主催者 > shusaisha\ ;
+柔軟性 > juunansei\ ;
+分担金 > buntankin\ ;
+冷蔵車 > reizousha\ ;
+最高裁 > saikousai\ ;
+加入権 > kanyuuken\ ;
+前住所 > zenjuusho\ ;
+展望塔 > tenboutou\ ;
+過敏症 > kabinshou\ ;
+人頭税 > nintouzei\ ;
+舞台劇 > butaigeki\ ;
+平均値 > heikinchi\ ;
+格子面 > koushimen\ ;
+水茶屋 > mizuchaya\ ;
+情報網 > jouhoumou\ ;
+巴旦杏 > hatankyou\ ;
+審美眼 > shinbigan\ ;
+処世訓 > shoseikun\ ;
+自然観 > shizenkan\ ;
+脂肪酸 > shibousan\ ;
+門外漢 > mongaikan\ ;
+抗菌性 > koukinsei\ ;
+伝染性 > densensei\ ;
+未組織 > misoshiki\ ;
+水様液 > suiyoueki\ ;
+救助隊 > kyuujotai\ ;
+保存量 > hozonryou\ ;
+核兵器 > kakuheiki\ ;
+不満足 > fumanzoku\ ;
+長談議 > nagadangi\ ;
+冒険者 > boukensha\ ;
+羽蒲団 > hanebuton\ ;
+地方債 > chihousai\ ;
+本場物 > honbamono\ ;
+語学者 > gogakusha\ ;
+再試行 > saishikou\ ;
+居丈高 > itakedaka\ ;
+太陽系 > taiyoukei\ ;
+研究員 > kenkyuuin\ ;
+弥縫策 > bihousaku\ ;
+無報酬 > muhoushuu\ ;
+蘆溝橋 > rokoukyou\ ;
+絶対値 > zettaichi\ ;
+天頂儀 > tenchougi\ ;
+海賊王 > kaizokuou\ ;
+財界人 > zaikaijin\ ;
+風来坊 > fuuraibou\ ;
+寒冷地 > kanreichi\ ;
+前置詞 > zenchishi\ ;
+加判人 > kahan''nin\ ;
+動滑車 > doukassha\ ;
+結氷期 > keppyouki\ ;
+展望台 > tenboudai\ ;
+礼拝堂 > reihaidou\ ;
+高性能 > kouseinou\ ;
+乾海苔 > hoshinori\ ;
+使用例 > shiyourei\ ;
+有田焼 > aritayaki\ ;
+高周波 > koushuuha\ ;
+尿検査 > nyoukensa\ ;
+環状線 > kanjousen\ ;
+発想法 > hassouhou\ ;
+免税点 > menzeiten\ ;
+値段表 > nedanhyou\ ;
+直弟子 > jikideshi\ ;
+連邦制 > renpousei\ ;
+使用人 > shiyounin\ ;
+植木鉢 > uekibachi\ ;
+照射野 > shoushaya\ ;
+慈善心 > jizenshin\ ;
+木煉瓦 > mokurenga\ ;
+木綿物 > momenmono\ ;
+六分儀 > rokubungi\ ;
+視地平 > shichihei\ ;
+工作員 > kousakuin\ ;
+回漕店 > kaisouten\ ;
+石炭紀 > sekitanki\ ;
+投機的 > toukiteki\ ;
+猟犬座 > ryoukenza\ ;
+皮財布 > kawazaifu\ ;
+脳血栓 > noukessen\ ;
+正則化 > seisokuka\ ;
+大奥様 > oookusama\ ;
+欠陥車 > kekkansha\ ;
+一大事 > ichidaiji\ ;
+連分数 > renbunsuu\ ;
+修理代 > shuuridai\ ;
+蕁麻疹 > jinmashin\ ;
+具申書 > gushinsho\ ;
+読書家 > dokushoka\ ;
+美術部 > bijutsubu\ ;
+感謝祭 > kanshasai\ ;
+貴方方 > anatagata\ ;
+東京都 > toukyouto\ ;
+旧字体 > kyuujitai\ ;
+無調法 > buchouhou\ ;
+製作費 > seisakuhi\ ;
+二週間 > nishuukan\ ;
+部落民 > burakumin\ ;
+加盟国 > kameikoku\ ;
+一夜中 > hitoyajuu\ ;
+構造体 > kouzoutai\ ;
+中医学 > chuuigaku\ ;
+受信者 > jushinsha\ ;
+会議録 > kaigiroku\ ;
+禁煙車 > kin''ensha\ ;
+電子銃 > denshijuu\ ;
+具体策 > gutaisaku\ ;
+車掌区 > shashouku\ ;
+他国民 > takokumin\ ;
+儒学者 > jugakusha\ ;
+名探偵 > meitantei\ ;
+国連旗 > kokurenki\ ;
+又従兄 > mataitoko\ ;
+鯣烏賊 > surumeika\ ;
+全市民 > zenshimin\ ;
+報道官 > houdoukan\ ;
+日本晴 > nihonbare\ ;
+布団皮 > futongawa\ ;
+修繕費 > shuuzenhi\ ;
+専門書 > senmonsho\ ;
+公用車 > kouyousha\ ;
+耐性菌 > taiseikin\ ;
+同種類 > doushurui\ ;
+音域外 > on''ikigai\ ;
+親和性 > shinwasei\ ;
+前頭葉 > zentouyou\ ;
+珠暖簾 > tamanoren\ ;
+九星家 > kyuuseika\ ;
+通気孔 > tsuukikou\ ;
+隣人愛 > rinjin''ai\ ;
+不承知 > fushouchi\ ;
+死亡数 > shibousuu\ ;
+居住権 > kyojuuken\ ;
+鉤括弧 > kagikakko\ ;
+倦怠感 > kentaikan\ ;
+冷蔵船 > reizousen\ ;
+合成酒 > gouseishu\ ;
+味噌汁 > misoshiru\ ;
+指導者 > shidousha\ ;
+半可通 > hankatsuu\ ;
+無警告 > mukeikoku\ ;
+大西郷 > daisaigou\ ;
+睡眠剤 > suiminzai\ ;
+旋盤工 > senbankou\ ;
+帯分数 > taibunsuu\ ;
+後継者 > koukeisha\ ;
+長談義 > nagadangi\ ;
+天日塩 > tenpishio\ ;
+威圧的 > iatsuteki\ ;
+二重底 > nijuuzoko\ ;
+又弟子 > matadeshi\ ;
+救命具 > kyuumeigu\ ;
+禁猟区 > kinryouku\ ;
+弩級艦 > dokyuukan\ ;
+恒久化 > koukyuuka\ ;
+具体的 > gutaiteki\ ;
+腹一杯 > haraippai\ ;
+格理論 > kakuriron\ ;
+感謝状 > kanshajou\ ;
+現行犯 > genkouhan\ ;
+日付印 > hidzukein\ ;
+太陽灯 > taiyoutou\ ;
+常用者 > jouyousha\ ;
+情報源 > jouhougen\ ;
+公使館 > koushikan\ ;
+帆立貝 > hotategai\ ;
+若武者 > wakamusha\ ;
+清算書 > seisansho\ ;
+本街道 > honkaidou\ ;
+郵便車 > yuubinsha\ ;
+一点機 > ichitenki\ ;
+夏風邪 > natsukaze\ ;
+中道派 > chuudouha\ ;
+暴風域 > boufuuiki\ ;
+発禁本 > hakkinbon\ ;
+圧電気 > atsudenki\ ;
+巨人党 > kyojintou\ ;
+時代物 > jidaimono\ ;
+屏風岩 > byoubuiwa\ ;
+快記録 > kaikiroku\ ;
+暴風圏 > boufuuken\ ;
+講談師 > koudanshi\ ;
+不成績 > fuseiseki\ ;
+多音節 > taonsetsu\ ;
+連帯感 > rentaikan\ ;
+部分的 > bubunteki\ ;
+専門店 > senmonten\ ;
+慣用音 > kan''youon\ ;
+夜仕事 > yoshigoto\ ;
+演習林 > enshuurin\ ;
+某高校 > boukoukou\ ;
+綿菓子 > watagashi\ ;
+跨線橋 > kosenkyou\ ;
+煙草盆 > tabakobon\ ;
+受験票 > jukenhyou\ ;
+内斜視 > naishashi\ ;
+電信機 > denshinki\ ;
+圧縮機 > asshukuki\ ;
+実行権 > jikkouken\ ;
+科学者 > kagakusha\ ;
+現行法 > genkouhou\ ;
+自然界 > shizenkai\ ;
+懸垂線 > kensuisen\ ;
+上手者 > jouzumono\ ;
+日本学 > nihongaku\ ;
+排障器 > haishouki\ ;
+真夏日 > manatsubi\ ;
+感無量 > kanmuryou\ ;
+給付金 > kyuufukin\ ;
+代名詞 > daimeishi\ ;
+救助船 > kyuujosen\ ;
+牽引車 > ken''insha\ ;
+居住性 > kyojuusei\ ;
+抗凝固 > kougyouko\ ;
+看護長 > kangochou\ ;
+低性能 > teiseinou\ ;
+無計画 > mukeikaku\ ;
+多面角 > tamenkaku\ ;
+低周波 > teishuuha\ ;
+理想郷 > risoukyou\ ;
+被爆者 > hibakusha\ ;
+精製糖 > seiseitou\ ;
+化学戦 > kagakusen\ ;
+有用性 > yuuyousei\ ;
+娯楽街 > gorakugai\ ;
+後天性 > koutensei\ ;
+校友会 > kouyuukai\ ;
+単利表 > tanrihyou\ ;
+療養所 > ryouyoujo\ ;
+保守的 > hoshuteki\ ;
+皇民党 > koumintou\ ;
+二重唱 > nijuushou\ ;
+免税店 > menzeiten\ ;
+卵胎生 > rantaisei\ ;
+線香代 > senkoudai\ ;
+対角化 > taikakuka\ ;
+最高点 > saikouten\ ;
+最低限 > saiteigen\ ;
+歌合戦 > utagassen\ ;
+平和賞 > heiwashou\ ;
+数係数 > suukeisuu\ ;
+木炭画 > mokutanga\ ;
+再降臨 > saikourin\ ;
+再調査 > saichousa\ ;
+高野槙 > kouyamaki\ ;
+定滑車 > teikassha\ ;
+似我蜂 > jigabachi\ ;
+旋光性 > senkousei\ ;
+名投手 > meitoushu\ ;
+採算性 > saisansei\ ;
+企業者 > kigyousha\ ;
+銀砂子 > ginsunago\ ;
+国分寺 > kokubunji\ ;
+養豚場 > youtonjou\ ;
+非対称 > hitaishou\ ;
+不銹鋼 > fushuukou\ ;
+一院制 > ichiinsei\ ;
+手仕事 > teshigoto\ ;
+胆嚢炎 > tan''nouen\ ;
+強打者 > kyoudasha\ ;
+規範的 > kihanteki\ ;
+羅紗紙 > rashagami\ ;
+脱衣場 > datsuijou\ ;
+救助網 > kyuujomou\ ;
+当選者 > tousensha\ ;
+太陰暦 > taiinreki\ ;
+揚羽蝶 > agehachou\ ;
+士君子 > shikunshi\ ;
+腰羽目 > koshibame\ ;
+片一方 > kataippou\ ;
+阿片窟 > ahenkutsu\ ;
+吾木香 > waremokou\ ;
+大型車 > oogatasha\ ;
+夏季熱 > kakinetsu\ ;
+内陸霧 > nairikumu\ ;
+植字機 > shokujiki\ ;
+遊覧船 > yuuransen\ ;
+乳房炎 > nyuubouen\ ;
+脳挫傷 > nouzashou\ ;
+学生課 > gakuseika\ ;
+藁布団 > warabuton\ ;
+投機心 > toukishin\ ;
+郵便船 > yuubinsen\ ;
+青年団 > seinendan\ ;
+勧告案 > kankokuan\ ;
+天文台 > tenmondai\ ;
+自然法 > shizenhou\ ;
+石灰洞 > sekkaidou\ ;
+増刊号 > zoukangou\ ;
+内大臣 > naidaijin\ ;
+現在地 > genzaichi\ ;
+戦車隊 > senshatai\ ;
+二重丸 > nijuumaru\ ;
+酒造場 > shuzoujou\ ;
+愛読者 > aidokusha\ ;
+石灰水 > sekkaisui\ ;
+大地震 > daijishin\ ;
+不拡大 > fukakudai\ ;
+主導者 > shudousha\ ;
+高蒔絵 > takamakie\ ;
+自然死 > shizenshi\ ;
+居住地 > kyojuuchi\ ;
+決死隊 > kesshitai\ ;
+主脳者 > shunousha\ ;
+舞楽面 > bugakumen\ ;
+魚介類 > gyokairui\ ;
+最高検 > saikouken\ ;
+熱汚染 > netsuosen\ ;
+恒星年 > kouseinen\ ;
+自在鉤 > jizaikagi\ ;
+競走馬 > kyousouba\ ;
+御手洗 > mitarashi\ ;
+増幅器 > zoufukuki\ ;
+日本側 > nihongawa\ ;
+人類史 > jinruishi\ ;
+苦労様 > kurousama\ ;
+禀請書 > rinseisho\ ;
+俳諧師 > haikaishi\ ;
+慣用語 > kan''yougo\ ;
+女学生 > jogakusei\ ;
+電子管 > denshikan\ ;
+梵天王 > bonten''ou\ ;
+合成紙 > gouseishi\ ;
+黄銅鉱 > koudoukou\ ;
+司教区 > shikyouku\ ;
+解散権 > kaisanken\ ;
+適齢期 > tekireiki\ ;
+威嚇的 > ikakuteki\ ;
+銃連射 > juurensha\ ;
+免税品 > menzeihin\ ;
+高水準 > kousuijun\ ;
+太陽年 > taiyounen\ ;
+石細工 > ishizaiku\ ;
+寝小便 > neshouben\ ;
+冷蔵法 > reizouhou\ ;
+配分法 > haibunhou\ ;
+耽美的 > tanbiteki\ ;
+潜航艇 > senkoutei\ ;
+同窓生 > dousousei\ ;
+放浪者 > hourousha\ ;
+種概念 > shugainen\ ;
+早明戦 > soumeisen\ ;
+微積分 > bisekibun\ ;
+鳥瞰図 > choukanzu\ ;
+女王蜂 > jooubachi\ ;
+外交官 > gaikoukan\ ;
+歯肉炎 > shinikuen\ ;
+自然林 > shizenrin\ ;
+演習場 > enshuujou\ ;
+小麦色 > komugiiro\ ;
+魚貝類 > gyokairui\ ;
+復古調 > fukkochou\ ;
+反省会 > hanseikai\ ;
+熱帯魚 > nettaigyo\ ;
+単葉機 > tan''youki\ ;
+所有者 > shoyuusha\ ;
+販売者 > hanbaisha\ ;
+主人顔 > shujingao\ ;
+滑稽者 > odokemono\ ;
+水飢饉 > mizukikin\ ;
+海上法 > kaijouhou\ ;
+熱可塑 > netsukaso\ ;
+化学品 > kagakuhin\ ;
+子沢山 > kodakusan\ ;
+余水吐 > yosuihaki\ ;
+昨年度 > sakunendo\ ;
+自然数 > shizensuu\ ;
+再訂版 > saiteiban\ ;
+青年会 > seinenkai\ ;
+現地人 > genchijin\ ;
+市街戦 > shigaisen\ ;
+懐疑心 > kaigishin\ ;
+朝日影 > asahikage\ ;
+誘導弾 > yuudoudan\ ;
+販売網 > hanbaimou\ ;
+八百万 > yaoyorozu\ ;
+貧乏人 > binbounin\ ;
+工事中 > koujichuu\ ;
+窃盗罪 > settouzai\ ;
+原裁判 > gensaiban\ ;
+点火薬 > tenkayaku\ ;
+海上権 > kaijouken\ ;
+化学剤 > kagakuzai\ ;
+精製法 > seiseihou\ ;
+方眼紙 > houganshi\ ;
+受賞者 > jushousha\ ;
+推薦者 > suisensha\ ;
+雪模様 > yukimoyou\ ;
+一級品 > ikkyuuhin\ ;
+格子点 > koushiten\ ;
+購買者 > koubaisha\ ;
+一等賞 > ittoushou\ ;
+他国人 > takokujin\ ;
+空気浴 > kuukiyoku\ ;
+外交団 > gaikoudan\ ;
+執行部 > shikkoubu\ ;
+理神論 > rishinron\ ;
+受験料 > jukenryou\ ;
+勝手元 > kattemoto\ ;
+相対論 > soutairon\ ;
+刊行会 > kankoukai\ ;
+卑金属 > hikinzoku\ ;
+保育料 > hoikuryou\ ;
+総資産 > soushisan\ ;
+住民税 > juuminzei\ ;
+圧縮器 > asshukuki\ ;
+俸給日 > houkyuubi\ ;
+行政府 > gyouseifu\ ;
+処女膜 > shojomaku\ ;
+随伴者 > zuihansha\ ;
+車海老 > kurumaebi\ ;
+悪宣伝 > akusenden\ ;
+多面的 > tamenteki\ ;
+対戦車 > taisensha\ ;
+苦労性 > kuroushou\ ;
+恐妻家 > kyousaika\ ;
+主宰者 > shusaisha\ ;
+半鹹水 > hankansui\ ;
+密航者 > mikkousha\ ;
+一等親 > ittoushin\ ;
+注連縄 > shimenawa\ ;
+補強筋 > hokyoukin\ ;
+看板屋 > kanban''ya\ ;
+社員寮 > shainryou\ ;
+呼吸法 > kokyuuhou\ ;
+体量器 > tairyouki\ ;
+化学上 > kagakujou\ ;
+伽藍鳥 > garanchou\ ;
+心臓部 > shinzoubu\ ;
+最高峰 > saikouhou\ ;
+競輪場 > keirinjou\ ;
+重婚者 > juukonsha\ ;
+要撃機 > yougekiki\ ;
+気化熱 > kikanetsu\ ;
+日教組 > nikkyouso\ ;
+三等星 > santousei\ ;
+命名法 > meimeihou\ ;
+参加国 > sankakoku\ ;
+未開拓 > mikaitaku\ ;
+再編成 > saihensei\ ;
+透水性 > tousuisei\ ;
+反対論 > hantairon\ ;
+学芸員 > gakugeiin\ ;
+冷凍魚 > reitougyo\ ;
+敗残兵 > haizanhei\ ;
+書生論 > shoseiron\ ;
+志望者 > shibousha\ ;
+財政難 > zaiseinan\ ;
+制癌剤 > seiganzai\ ;
+発泡剤 > happouzai\ ;
+伝奇的 > denkiteki\ ;
+絆創膏 > bansoukou\ ;
+保存料 > hozonryou\ ;
+石灰岩 > sekkaigan\ ;
+兵学校 > heigakkou\ ;
+富山県 > toyamaken\ ;
+近代史 > kindaishi\ ;
+該当者 > gaitousha\ ;
+点数制 > tensuusei\ ;
+高知県 > kouchiken\ ;
+口上書 > koujousho\ ;
+解放感 > kaihoukan\ ;
+平和的 > heiwateki\ ;
+自閉症 > jiheishou\ ;
+飲用水 > in''yousui\ ;
+太陽光 > taiyoukou\ ;
+橋頭保 > kyoutouho\ ;
+古書市 > koshoichi\ ;
+天然塩 > ten''nenen\ ;
+公害罪 > kougaizai\ ;
+淫売宿 > inbaiyado\ ;
+起請文 > kishoumon\ ;
+碁盤縞 > gobanjima\ ;
+俗世間 > zokuseken\ ;
+甘納豆 > amanattou\ ;
+乾酪素 > kanrakuso\ ;
+冶金学 > yakingaku\ ;
+冗長度 > jouchoudo\ ;
+私家集 > shikashuu\ ;
+市街地 > shigaichi\ ;
+可読性 > kadokusei\ ;
+明示的 > meijiteki\ ;
+大回転 > daikaiten\ ;
+呉服店 > gofukuten\ ;
+中華丼 > chuukadon\ ;
+大西洋 > taiseiyou\ ;
+理想的 > risouteki\ ;
+妻帯者 > saitaisha\ ;
+八宝菜 > happousai\ ;
+双蹄獸 > souteijuu\ ;
+国全土 > kokuzendo\ ;
+二進法 > nishinhou\ ;
+羽布団 > hanebuton\ ;
+自然増 > shizenzou\ ;
+時代劇 > jidaigeki\ ;
+混成酒 > konseishu\ ;
+公倍数 > koubaisuu\ ;
+処方箋 > shohousen\ ;
+癌細胞 > gansaibou\ ;
+累減税 > ruigenzei\ ;
+所作事 > shosagoto\ ;
+無限小 > mugenshou\ ;
+窃盗犯 > settouhan\ ;
+仕手株 > shitekabu\ ;
+口下手 > kuchibeta\ ;
+金曜日 > kin''youbi\ ;
+低水準 > teisuijun\ ;
+製作所 > seisakujo\ ;
+伝声管 > denseikan\ ;
+陰武者 > kagemusha\ ;
+量子化 > ryoushika\ ;
+好一対 > kouittsui\ ;
+事務局 > jimukyoku\ ;
+副鼻腔 > fukubikuu\ ;
+浪費癖 > rouhiheki\ ;
+給費生 > kyuuhisei\ ;
+県人会 > kenjinkai\ ;
+主任者 > shuninsha\ ;
+公用文 > kouyoubun\ ;
+行政区 > gyouseiku\ ;
+推薦状 > suisenjou\ ;
+中距離 > chuukyori\ ;
+共産化 > kyousanka\ ;
+会期中 > kaikichuu\ ;
+野球場 > yakyuujou\ ;
+閑古鳥 > kankodori\ ;
+産褥期 > sanjokuki\ ;
+主導権 > shudouken\ ;
+募金箱 > bokinbako\ ;
+硬口蓋 > koukougai\ ;
+史記抄 > shikishou\ ;
+年齢層 > nenreisou\ ;
+頭頂部 > touchoubu\ ;
+早場米 > hayabamai\ ;
+口語訳 > kougoyaku\ ;
+油圧計 > yuatsukei\ ;
+二毛作 > nimousaku\ ;
+検糖計 > kentoukei\ ;
+誘導体 > yuudoutai\ ;
+真四角 > mashikaku\ ;
+申命記 > shinmeiki\ ;
+脂肪層 > shibousou\ ;
+物品税 > buppinzei\ ;
+鳳翅鐘 > houshitou\ ;
+層積雲 > sousekiun\ ;
+秒時計 > byoudokei\ ;
+珊瑚礁 > sangoshou\ ;
+連体詞 > rentaishi\ ;
+屁理屈 > herikutsu\ ;
+同情者 > doujousha\ ;
+志願者 > shigansha\ ;
+浪人生 > rouninsei\ ;
+不可逆 > fukagyaku\ ;
+大阪市 > oosakashi\ ;
+愛読書 > aidokusho\ ;
+可塑物 > kasobutsu\ ;
+新造語 > shinzougo\ ;
+反対者 > hantaisha\ ;
+黒砂糖 > kurozatou\ ;
+玄米茶 > genmaicha\ ;
+演繹法 > en''ekihou\ ;
+臨場感 > rinjoukan\ ;
+偏西風 > henseifuu\ ;
+香味料 > koumiryou\ ;
+正甲板 > seikanpan\ ;
+審議会 > shingikai\ ;
+青森県 > aomoriken\ ;
+不感症 > fukanshou\ ;
+禁衛隊 > kin''eitai\ ;
+放水車 > housuisha\ ;
+耐水性 > taisuisei\ ;
+玄関番 > genkanban\ ;
+前夜祭 > zen''yasai\ ;
+月桂冠 > gekkeikan\ ;
+二刀流 > nitouryuu\ ;
+所有権 > shoyuuken\ ;
+冷凍車 > reitousha\ ;
+来会者 > raikaisha\ ;
+上等品 > joutouhin\ ;
+荒療治 > araryouji\ ;
+楽観論 > rakkanron\ ;
+倶舎宗 > kushashuu\ ;
+無言劇 > mugongeki\ ;
+入苑券 > nyuuenken\ ;
+腱鞘炎 > kenshouen\ ;
+高年者 > kounensha\ ;
+探海灯 > tankaitou\ ;
+無規律 > mukiritsu\ ;
+形容詞 > keiyoushi\ ;
+岩雲雀 > iwahibari\ ;
+徒競走 > tokyousou\ ;
+不戦勝 > fusenshou\ ;
+自然人 > shizenjin\ ;
+家庭的 > kateiteki\ ;
+高気圧 > koukiatsu\ ;
+滑稽本 > kokkeibon\ ;
+女子寮 > joshiryou\ ;
+政治的 > seijiteki\ ;
+上等兵 > joutouhei\ ;
+原稿紙 > genkoushi\ ;
+色眼鏡 > iromegane\ ;
+楽譜台 > gakufudai\ ;
+冷水塊 > reisuikai\ ;
+保護色 > hogoshoku\ ;
+色収差 > iroshuusa\ ;
+美術家 > bijutsuka\ ;
+再評価 > saihyouka\ ;
+競争馬 > kyousouba\ ;
+準備中 > junbichuu\ ;
+光合成 > kougousei\ ;
+悪条件 > akujouken\ ;
+三悪趣 > sanakushu\ ;
+主産地 > shusanchi\ ;
+貴方々 > anatagata\ ;
+巻積雲 > kensekiun\ ;
+希硫酸 > kiryuusan\ ;
+脱穀機 > dakkokuki\ ;
+鼎談会 > teidankai\ ;
+複本位 > fukuhon''i\ ;
+俗趣味 > zokushumi\ ;
+終止符 > shuushifu\ ;
+精製品 > seiseihin\ ;
+憲兵隊 > kenpeitai\ ;
+配偶者 > haiguusha\ ;
+充当金 > juutoukin\ ;
+消火栓 > shoukasen\ ;
+寄留者 > kiryuusha\ ;
+灰神楽 > haikagura\ ;
+不量見 > furyouken\ ;
+金一封 > kin''ippuu\ ;
+床運動 > yukaundou\ ;
+寄生虫 > kiseichuu\ ;
+三等分 > santoubun\ ;
+喫水線 > kissuisen\ ;
+悪玉化 > akudamaka\ ;
+超簡易 > choukan''i\ ;
+戯作者 > gesakusha\ ;
+青瓢箪 > aobyoutan\ ;
+患者様 > kanjasama\ ;
+五寸釘 > gosunkugi\ ;
+仮登記 > karitouki\ ;
+合同軍 > goudougun\ ;
+非現業 > higengyou\ ;
+勤労者 > kinrousha\ ;
+固定長 > koteichou\ ;
+殺菌剤 > sakkinzai\ ;
+洋服屋 > youfukuya\ ;
+起爆剤 > kibakuzai\ ;
+表示灯 > hyoujitou\ ;
+便利帳 > benrichou\ ;
+取材班 > shuzaihan\ ;
+脂肪体 > shiboutai\ ;
+郵便屋 > yuubin''ya\ ;
+中辞典 > chuujiten\ ;
+洗面台 > senmendai\ ;
+内裏雛 > dairibina\ ;
+全二重 > zen''nijuu\ ;
+溶解性 > youkaisei\ ;
+整数論 > seisuuron\ ;
+民社党 > minshatou\ ;
+企画書 > kikakusho\ ;
+生地獄 > ikijigoku\ ;
+純米酒 > junmaishu\ ;
+回遊魚 > kaiyuugyo\ ;
+無関心 > mukanshin\ ;
+友人間 > yuujinkan\ ;
+有斐閣 > yuuhikaku\ ;
+販売店 > hanbaiten\ ;
+志望校 > shiboukou\ ;
+奉迎門 > hougeimon\ ;
+面会人 > menkainin\ ;
+一箇月 > ikkagetsu\ ;
+送水管 > sousuikan\ ;
+冷凍船 > reitousen\ ;
+年配者 > nenpaisha\ ;
+手数料 > tesuuryou\ ;
+離魂病 > rikonbyou\ ;
+水中花 > suichuuka\ ;
+動名詞 > doumeishi\ ;
+黄金色 > koganeiro\ ;
+二元的 > nigenteki\ ;
+縞栗鼠 > shimarisu\ ;
+娯楽場 > gorakujou\ ;
+遊覧地 > yuuranchi\ ;
+本因坊 > hon''inbou\ ;
+共栄圏 > kyoueiken\ ;
+相対死 > aitaijini\ ;
+国自慢 > kunijiman\ ;
+重大視 > juudaishi\ ;
+企業内 > kigyounai\ ;
+同窓会 > dousoukai\ ;
+法蓮草 > hourensou\ ;
+海外版 > kaigaiban\ ;
+扇状地 > senjouchi\ ;
+打撃戦 > dagekisen\ ;
+透写紙 > toushashi\ ;
+人文史 > jinbunshi\ ;
+指定券 > shiteiken\ ;
+香水瓶 > kousuibin\ ;
+熱帯病 > netaibyou\ ;
+伝記物 > denkimono\ ;
+計量器 > keiryouki\ ;
+補償金 > hoshoukin\ ;
+軽犯罪 > keihanzai\ ;
+霰弾銃 > sandanjuu\ ;
+合憲性 > goukensei\ ;
+地鎮祭 > jichinsai\ ;
+主体性 > shutaisei\ ;
+素粒子 > soryuushi\ ;
+奇麗事 > kireigoto\ ;
+蝿地獄 > haejigoku\ ;
+大災害 > daisaigai\ ;
+楽天家 > rakutenka\ ;
+理性的 > riseiteki\ ;
+鼓笛隊 > kotekitai\ ;
+寒暖計 > kandankei\ ;
+花粉症 > kafunshou\ ;
+人為的 > jin''iteki\ ;
+受領者 > juryousha\ ;
+企画性 > kikakusei\ ;
+内需型 > naijugata\ ;
+原成岩 > genseigan\ ;
+表示板 > hyoujiban\ ;
+永久歯 > eikyuushi\ ;
+千社札 > senjafuda\ ;
+菩提心 > bodaishin\ ;
+表示書 > hyoujisho\ ;
+精算書 > seisansho\ ;
+放水管 > housuikan\ ;
+双子葉 > soushiyou\ ;
+性転換 > seitenkan\ ;
+輸送量 > yusouryou\ ;
+所有地 > shoyuuchi\ ;
+鼓手長 > koshuchou\ ;
+総本店 > souhonten\ ;
+元気者 > genkimono\ ;
+代弁者 > daibensha\ ;
+町医者 > machiisha\ ;
+製材所 > seizaisho\ ;
+反乱軍 > hanrangun\ ;
+総人口 > soujinkou\ ;
+店仕舞 > misejimai\ ;
+中保者 > chuuhosha\ ;
+立法者 > rippousha\ ;
+草相撲 > kusazumou\ ;
+予備錨 > yobiikari\ ;
+歓送会 > kansoukai\ ;
+双翅類 > soushirui\ ;
+紙細工 > kamizaiku\ ;
+山水荘 > sansuisou\ ;
+表沙汰 > omotezata\ ;
+唐獅子 > karajishi\ ;
+平和国 > heiwakoku\ ;
+低気圧 > teikiatsu\ ;
+作業用 > sagyouyou\ ;
+水害地 > suigaichi\ ;
+総本山 > souhonzan\ ;
+演説家 > enzetsuka\ ;
+盲腸炎 > mouchouen\ ;
+稀硫酸 > kiryuusan\ ;
+遣唐使 > kentoushi\ ;
+作業班 > sagyouhan\ ;
+活性炭 > kasseitan\ ;
+最小化 > saishouka\ ;
+乗降場 > joukoujou\ ;
+俗世界 > zokusekai\ ;
+毛織物 > keorimono\ ;
+志願書 > shigansho\ ;
+不死鳥 > fushichou\ ;
+悲観的 > hikanteki\ ;
+成功者 > seikousha\ ;
+看護学 > kangogaku\ ;
+上向線 > joukousen\ ;
+消炎剤 > shouenzai\ ;
+公休日 > koukyuubi\ ;
+総罷業 > souhigyou\ ;
+再投資 > saitoushi\ ;
+歌劇場 > kagekijou\ ;
+浄水場 > jousuijou\ ;
+水耕法 > suikouhou\ ;
+大演習 > daienshuu\ ;
+実測図 > jissokuzu\ ;
+膨張度 > bouchoudo\ ;
+映写幕 > eishamaku\ ;
+上水道 > jousuidou\ ;
+全住民 > zenjuumin\ ;
+浄水地 > jousuichi\ ;
+男性用 > danseiyou\ ;
+好奇心 > koukishin\ ;
+肉体美 > nikutaibi\ ;
+国家的 > kokkateki\ ;
+犠牲的 > giseiteki\ ;
+連子窓 > renjimado\ ;
+相対性 > soutaisei\ ;
+関心事 > kanshinji\ ;
+蒲団皮 > futongawa\ ;
+北斗星 > hokutosei\ ;
+本拠地 > honkyochi\ ;
+舞踏病 > butoubyou\ ;
+内外人 > naigaijin\ ;
+下種女 > gesuon''na\ ;
+赤電車 > akadensha\ ;
+粘板岩 > nenbangan\ ;
+事業者 > jigyousha\ ;
+歓迎会 > kangeikai\ ;
+託児所 > takujisho\ ;
+保証金 > hoshoukin\ ;
+猩々緋 > shoujouhi\ ;
+水時計 > mizudokei\ ;
+盲導犬 > moudouken\ ;
+販売人 > hanbainin\ ;
+人国記 > jinkokuki\ ;
+普及版 > fukyuuban\ ;
+半部族 > hanbuzoku\ ;
+飛道具 > tobidougu\ ;
+人間界 > ningenkai\ ;
+乳母車 > ubaguruma\ ;
+惨死体 > zanshitai\ ;
+運搬人 > unpan''nin\ ;
+抗生剤 > kouseizai\ ;
+世迷言 > yomaigoto\ ;
+伝言板 > dengonban\ ;
+自立語 > jiritsugo\ ;
+熱帯林 > nettairin\ ;
+永久性 > eikyuusei\ ;
+製本屋 > seihon''ya\ ;
+汽車賃 > kishachin\ ;
+禁裏様 > kinrisama\ ;
+慣用句 > kan''youku\ ;
+観光地 > kankouchi\ ;
+会見者 > kaikensha\ ;
+東天紅 > toutenkou\ ;
+観光団 > kankoudan\ ;
+技巧的 > gikouteki\ ;
+楽隠居 > rakuinkyo\ ;
+高速度 > kousokudo\ ;
+私生子 > shiseishi\ ;
+日記帳 > nikkichou\ ;
+政治学 > seijigaku\ ;
+水理学 > suirigaku\ ;
+母子寮 > boshiryou\ ;
+着心地 > kigokochi\ ;
+戒厳令 > kaigenrei\ ;
+投与量 > touyoryou\ ;
+哺乳類 > honyuurui\ ;
+大蝙蝠 > ookoumori\ ;
+無投票 > mutouhyou\ ;
+指了図 > shiryouzu\ ;
+適応性 > tekiousei\ ;
+回送車 > kaisousha\ ;
+漫才師 > manzaishi\ ;
+花火師 > hanabishi\ ;
+事業税 > jigyouzei\ ;
+収容所 > shuuyoujo\ ;
+国璽書 > kokujisho\ ;
+感覚器 > kankakuki\ ;
+教育費 > kyouikuhi\ ;
+固定給 > koteikyuu\ ;
+展覧会 > tenrankai\ ;
+交代制 > koutaisei\ ;
+巡視艇 > junshitei\ ;
+巡視船 > junshisen\ ;
+汎関数 > hankansuu\ ;
+全人生 > zenjinsei\ ;
+断強度 > dankyoudo\ ;
+処女作 > shojosaku\ ;
+個性的 > koseiteki\ ;
+全音階 > zen''onkai\ ;
+反乱者 > hanransha\ ;
+軽音楽 > keiongaku\ ;
+鑿岩機 > sakuganki\ ;
+回復期 > kaifukuki\ ;
+不合格 > fugoukaku\ ;
+周波計 > shuuhakei\ ;
+不可欠 > fukaketsu\ ;
+硬化症 > koukashou\ ;
+逆効果 > gyakkouka\ ;
+一等国 > ittoukoku\ ;
+全封地 > zenhouchi\ ;
+分配金 > bunpaikin\ ;
+回遊船 > kaiyuusen\ ;
+公会堂 > koukaidou\ ;
+無表情 > muhyoujou\ ;
+水餃子 > suigyouza\ ;
+風土病 > fuudobyou\ ;
+逃避的 > touhiteki\ ;
+古文学 > kobungaku\ ;
+優等生 > yuutousei\ ;
+固定票 > koteihyou\ ;
+対向車 > taikousha\ ;
+事業界 > jigyoukai\ ;
+批判的 > hihanteki\ ;
+天地人 > tenchijin\ ;
+血統書 > kettousho\ ;
+中二階 > chuunikai\ ;
+山葡萄 > yamabudou\ ;
+黄道面 > koudoumen\ ;
+受難週 > junanshuu\ ;
+尊厳死 > songenshi\ ;
+考古学 > koukogaku\ ;
+保険証 > hokenshou\ ;
+高分子 > koubunshi\ ;
+冥加金 > myougakin\ ;
+内地米 > naichimai\ ;
+枯葉剤 > karehazai\ ;
+招待日 > shoutaibi\ ;
+誓願権 > seiganken\ ;
+愛国者 > aikokusha\ ;
+訴願人 > sogan''nin\ ;
+領事館 > ryoujikan\ ;
+主犯者 > shuhansha\ ;
+防護壁 > bougoheki\ ;
+資金源 > shikingen\ ;
+鼠咬症 > sokoushou\ ;
+三重盗 > sanjuutou\ ;
+連体形 > rentaikei\ ;
+現段階 > gendankai\ ;
+成年者 > seinensha\ ;
+金解禁 > kinkaikin\ ;
+羽子突 > hanetsuki\ ;
+洗濯粉 > sentakuko\ ;
+光化学 > koukagaku\ ;
+農学部 > nougakubu\ ;
+主任制 > shuninsei\ ;
+舞踏服 > butoufuku\ ;
+経験論 > keikenron\ ;
+経験談 > keikendan\ ;
+擦過傷 > sakkashou\ ;
+再製品 > saiseihin\ ;
+四重奏 > shijuusou\ ;
+相対値 > soutaichi\ ;
+母子共 > boshitomo\ ;
+鉄火巻 > tekkamaki\ ;
+英作文 > eisakubun\ ;
+戦車兵 > senshahei\ ;
+再投稿 > saitoukou\ ;
+教養部 > kyouyoubu\ ;
+立法権 > rippouken\ ;
+妥協点 > dakyouten\ ;
+雲仙岳 > unzendake\ ;
+受領書 > juryousho\ ;
+不活化 > fukatsuka\ ;
+文章語 > bunshougo\ ;
+青信号 > aoshingou\ ;
+時計皿 > tokeizara\ ;
+幽冥界 > yuumeikai\ ;
+執行吏 > shikkouri\ ;
+等高線 > toukousen\ ;
+絞首台 > koushudai\ ;
+破擦音 > hasatsuon\ ;
+送受信 > soujushin\ ;
+一神論 > isshinron\ ;
+着道楽 > kidouraku\ ;
+明後年 > myougonen\ ;
+法務省 > houmushou\ ;
+酵素学 > kousogaku\ ;
+混合酒 > kongoushu\ ;
+図像学 > zuzougaku\ ;
+奉加帳 > hougachou\ ;
+感嘆詞 > kantanshi\ ;
+前売券 > maeuriken\ ;
+志願兵 > shiganhei\ ;
+反射光 > hanshakou\ ;
+皮細工 > kawazaiku\ ;
+復水器 > fukusuiki\ ;
+関連性 > kanrensei\ ;
+統語学 > tougogaku\ ;
+晴眼者 > seigansha\ ;
+講演料 > kouenryou\ ;
+敬老会 > keiroukai\ ;
+時間軸 > jikanjiku\ ;
+反対党 > hantaitou\ ;
+搭乗者 > toujousha\ ;
+社民党 > shamintou\ ;
+絞首刑 > koushukei\ ;
+創建者 > soukensha\ ;
+最大限 > saidaigen\ ;
+楓子香 > fuushikou\ ;
+混成岩 > konseigan\ ;
+紙粘土 > kaminendo\ ;
+条件文 > joukenbun\ ;
+意識体 > ishikitai\ ;
+私企業 > shikigyou\ ;
+空模様 > soramoyou\ ;
+公有林 > kouyuurin\ ;
+山水楼 > sansuirou\ ;
+寄留地 > kiryuuchi\ ;
+断剛性 > dangousei\ ;
+空元気 > karagenki\ ;
+打算的 > dasanteki\ ;
+退蔵品 > taizouhin\ ;
+影響圏 > eikyouken\ ;
+真善美 > shinzenbi\ ;
+仲保者 > chuuhosha\ ;
+手術衣 > shujutsui\ ;
+人間愛 > ningen''ai\ ;
+理知的 > richiteki\ ;
+琥珀色 > kohakuiro\ ;
+御蔭様 > okagesama\ ;
+毛細管 > mousaikan\ ;
+白胡麻 > shirogoma\ ;
+主人公 > shujinkou\ ;
+人間性 > ningensei\ ;
+単孔類 > tankourui\ ;
+同労者 > dourousha\ ;
+即時性 > sokujisei\ ;
+乳呑児 > chinomigo\ ;
+不徳漢 > futokukan\ ;
+遭遇戦 > souguusen\ ;
+又家来 > matagerai\ ;
+正書法 > seishohou\ ;
+独自性 > dokujisei\ ;
+弁財天 > benzaiten\ ;
+勤務先 > kinmusaki\ ;
+持久戦 > jikyuusen\ ;
+重要視 > juuyoushi\ ;
+空梅雨 > karatsuyu\ ;
+混成団 > konseidan\ ;
+火口壁 > kakouheki\ ;
+時間表 > jikanhyou\ ;
+砂利道 > jarimichi\ ;
+会計官 > kaikeikan\ ;
+賤業婦 > sengyoufu\ ;
+経験者 > keikensha\ ;
+韓国語 > hankokugo\ ;
+教材費 > kyouzaihi\ ;
+勝利者 > shourisha\ ;
+潜伏期 > senpukuki\ ;
+大団円 > daidan''en\ ;
+午前様 > gozensama\ ;
+海潮音 > kaichouon\ ;
+正犯者 > seihansha\ ;
+可圧性 > kaatsusei\ ;
+船大工 > funadaiku\ ;
+土地柄 > tochigara\ ;
+登舷礼 > tougenrei\ ;
+政府筋 > seifusuji\ ;
+活性剤 > kasseizai\ ;
+反体制 > hantaisei\ ;
+藻菌類 > soukinrui\ ;
+滑石粉 > kassekiko\ ;
+緩衝器 > kanshouki\ ;
+鳩羽色 > hatobairo\ ;
+顕微鏡 > kenbikyou\ ;
+測定器 > sokuteiki\ ;
+名店街 > meitengai\ ;
+利休色 > rikyuuiro\ ;
+国事犯 > kokujihan\ ;
+混成品 > konseihin\ ;
+分配者 > bunpaisha\ ;
+半透明 > hantoumei\ ;
+分水線 > bunsuisen\ ;
+遊戯的 > yuugiteki\ ;
+近視眼 > kinshigan\ ;
+主謀者 > shubousha\ ;
+会計士 > kaikeishi\ ;
+初年兵 > shonenhei\ ;
+同年輩 > dounenpai\ ;
+珍無類 > chinmurui\ ;
+箝口令 > kankourei\ ;
+合法性 > gouhousei\ ;
+総領事 > souryouji\ ;
+州政府 > shuuseifu\ ;
+商務官 > shoumukan\ ;
+応接間 > ousetsuma\ ;
+参会者 > sankaisha\ ;
+五人組 > goningumi\ ;
+黄水晶 > kizuishou\ ;
+内裏様 > dairisama\ ;
+大衆化 > taishuuka\ ;
+重大性 > juudaisei\ ;
+外国語 > gaikokugo\ ;
+勢力家 > seiryokka\ ;
+声楽家 > seigakuka\ ;
+製靴業 > seikagyou\ ;
+箱馬車 > hakobasha\ ;
+宮内省 > kunaishou\ ;
+事業所 > jigyousho\ ;
+穿山甲 > senzankou\ ;
+臨港線 > rinkousen\ ;
+唯名論 > yuimeiron\ ;
+改造車 > kaizousha\ ;
+黄金国 > ougonkoku\ ;
+芋羊羹 > imoyoukan\ ;
+更生品 > kouseihin\ ;
+芋羊羮 > imoyoukan\ ;
+広小路 > hirokouji\ ;
+空返事 > sorahenji\ ;
+腐植土 > fushokudo\ ;
+次善策 > jizensaku\ ;
+遠眼鏡 > toomegane\ ;
+創造者 > souzousha\ ;
+休電日 > kyuudenbi\ ;
+板門店 > hanmonten\ ;
+導入部 > dounyuubu\ ;
+禅問答 > zenmondou\ ;
+複数個 > fukusuuko\ ;
+盲学校 > mougakkou\ ;
+詞華集 > shikashuu\ ;
+研修課 > kenshuuka\ ;
+弾性体 > danseitai\ ;
+献呈本 > kenteibon\ ;
+尾長鶏 > onagadori\ ;
+放送網 > housoumou\ ;
+麻酔薬 > masuiyaku\ ;
+千年紀 > sen''nenki\ ;
+僧帽弁 > soubouben\ ;
+太鼓腹 > taikobara\ ;
+前装砲 > zensouhou\ ;
+分遣隊 > bunkentai\ ;
+吹奏者 > suisousha\ ;
+好角家 > koukakuka\ ;
+悪天候 > akutenkou\ ;
+推進機 > suishinki\ ;
+鉤十字 > kagijuuji\ ;
+乱気流 > rankiryuu\ ;
+冷凍剤 > reitouzai\ ;
+初対面 > shotaimen\ ;
+未収載 > mishuusai\ ;
+嗜好品 > shikouhin\ ;
+火砕流 > kasairyuu\ ;
+悪天使 > akutenshi\ ;
+強化米 > kyoukamai\ ;
+水雷艇 > suiraitei\ ;
+観楓会 > kanpuukai\ ;
+体験談 > taikendan\ ;
+無感覚 > mukankaku\ ;
+群速度 > gunsokudo\ ;
+電総研 > densouken\ ;
+不確定 > fukakutei\ ;
+白百合 > shirayuri\ ;
+舞踊劇 > buyougeki\ ;
+火口丘 > kakoukyuu\ ;
+不正確 > fuseikaku\ ;
+陽子線 > youshisen\ ;
+時間給 > jikankyuu\ ;
+分水界 > bunsuikai\ ;
+乱反射 > ranhansha\ ;
+解答欄 > kaitouran\ ;
+魚雷艇 > gyoraitei\ ;
+公有地 > kouyuuchi\ ;
+欺瞞的 > gimanteki\ ;
+明瞭度 > meiryoudo\ ;
+会計係 > kaikeikei\ ;
+輸入税 > yunyuuzei\ ;
+不心得 > fukokoroe\ ;
+二業地 > nigyouchi\ ;
+単子論 > tanshiron\ ;
+証拠金 > shoukokin\ ;
+生演奏 > namaensou\ ;
+微分学 > bibungaku\ ;
+専従者 > senjuusha\ ;
+仙台侯 > sendaikou\ ;
+兄弟愛 > kyoudaiai\ ;
+万華鏡 > mangekyou\ ;
+禁漁期 > kinryouki\ ;
+人間像 > ningenzou\ ;
+回帰的 > kaikiteki\ ;
+市民税 > shiminzei\ ;
+富士額 > fujibitai\ ;
+光速度 > kousokudo\ ;
+開票所 > kaihyoujo\ ;
+体育館 > taiikukan\ ;
+変調波 > henchouha\ ;
+同盟軍 > doumeigun\ ;
+告訴人 > kokusonin\ ;
+学士院 > gakushiin\ ;
+倫理的 > rinriteki\ ;
+点鼻薬 > tenbiyaku\ ;
+投書欄 > toushoran\ ;
+訴訟法 > soshouhou\ ;
+四半分 > shihanbun\ ;
+吸音材 > kyuuonzai\ ;
+初体験 > shotaiken\ ;
+輸入盤 > yunyuuban\ ;
+不知火 > shiranuhi\ ;
+卵細胞 > ransaibou\ ;
+二極化 > nikyokuka\ ;
+南京錠 > nankinjou\ ;
+鳩時計 > hatodokei\ ;
+哺乳瓶 > honyuubin\ ;
+西洋風 > seiyoufuu\ ;
+既製服 > kiseifuku\ ;
+野外劇 > yagaigeki\ ;
+普遍的 > fuhenteki\ ;
+事業団 > jigyoudan\ ;
+小役人 > koyakunin\ ;
+鳥媒花 > choubaika\ ;
+自治領 > jichiryou\ ;
+破壊的 > hakaiteki\ ;
+窮措大 > kyuusodai\ ;
+達磨船 > darumasen\ ;
+内在性 > naizaisei\ ;
+小荷物 > konimotsu\ ;
+日系人 > nikkeijin\ ;
+精神科 > seishinka\ ;
+一合目 > ichigoume\ ;
+住居跡 > juukyoato\ ;
+再抗弁 > saikouben\ ;
+農作業 > nousagyou\ ;
+螢光燈 > keikoutou\ ;
+付年表 > funenpyou\ ;
+正誤表 > seigohyou\ ;
+四輪車 > yonrinsha\ ;
+金米糖 > konpeitou\ ;
+三重奏 > sanjuusou\ ;
+保証書 > hoshousho\ ;
+否定的 > hiteiteki\ ;
+不連続 > furenzoku\ ;
+武断的 > budanteki\ ;
+出穂期 > shussuiki\ ;
+上半期 > kamihanki\ ;
+単子葉 > tanshiyou\ ;
+微分商 > bibunshou\ ;
+義兄弟 > gikyoudai\ ;
+複素数 > fukusosuu\ ;
+転校生 > tenkousei\ ;
+昼夜帯 > chuuyaobi\ ;
+事件表 > jikenhyou\ ;
+螢光灯 > keikoutou\ ;
+強硬派 > kyoukouha\ ;
+排気量 > haikiryou\ ;
+女文字 > on''namoji\ ;
+無所属 > mushozoku\ ;
+周波数 > shuuhasuu\ ;
+猛禽類 > moukinrui\ ;
+生態系 > seitaikei\ ;
+散文詩 > sanbunshi\ ;
+栽培種 > saibaishu\ ;
+原著者 > genchosha\ ;
+電話料 > denwaryou\ ;
+技能賞 > ginoushou\ ;
+料金所 > ryoukinjo\ ;
+支配者 > shihaisha\ ;
+洗濯屋 > sentakuya\ ;
+側近者 > sokkinsha\ ;
+実社会 > jisshakai\ ;
+御連絡 > gorenraku\ ;
+香川県 > kagawaken\ ;
+点滴器 > tentekiki\ ;
+予定表 > yoteihyou\ ;
+弁護料 > bengoryou\ ;
+主要駅 > shuyoueki\ ;
+対応策 > taiousaku\ ;
+輸入港 > yunyuukou\ ;
+同志会 > doushikai\ ;
+迎撃機 > geigekiki\ ;
+人地名 > jinchimei\ ;
+保険料 > hokenryou\ ;
+大和芋 > yamatoimo\ ;
+高優先 > kouyuusen\ ;
+放送法 > housouhou\ ;
+示力図 > jiryokuzu\ ;
+雪女郎 > yukijorou\ ;
+零細農 > reisainou\ ;
+真清水 > mashimizu\ ;
+助太刀 > sukedachi\ ;
+克己心 > kokkishin\ ;
+設計者 > sekkeisha\ ;
+無神論 > mushinron\ ;
+有袋類 > yuutairui\ ;
+一殺那 > issetsuna\ ;
+心理戦 > shinrisen\ ;
+御歴歴 > orekireki\ ;
+不平等 > fubyoudou\ ;
+利尿剤 > rinyouzai\ ;
+絹積雲 > kensekiun\ ;
+牧歌的 > bokkateki\ ;
+漸近線 > zenkinsen\ ;
+子安貝 > koyasukai\ ;
+旅日記 > tabinikki\ ;
+売上金 > uriagekin\ ;
+受給者 > jukyuusha\ ;
+明年度 > myounendo\ ;
+二枚舌 > nimaijita\ ;
+三重冠 > sanjuukan\ ;
+誘電子 > yuudenshi\ ;
+関係詞 > kankeishi\ ;
+紡錘形 > bousuikei\ ;
+奉幣使 > houheishi\ ;
+革細工 > kawazaiku\ ;
+市民法 > shiminhou\ ;
+最敬礼 > saikeirei\ ;
+苦学生 > kugakusei\ ;
+得意先 > tokuisaki\ ;
+雨仕度 > amajitaku\ ;
+周波帯 > shuuhatai\ ;
+管制官 > kanseikan\ ;
+燃料費 > nenryouhi\ ;
+年輩者 > nenpaisha\ ;
+量記号 > ryoukigou\ ;
+発光体 > hakkoutai\ ;
+半円形 > han''enkei\ ;
+円虫類 > enchuurui\ ;
+懸想文 > kesoubumi\ ;
+検潮器 > kenchouki\ ;
+姉妹編 > shimaihen\ ;
+血糖値 > kettouchi\ ;
+無重量 > mujuuryou\ ;
+電話帳 > denwachou\ ;
+午前中 > gozenchuu\ ;
+営業所 > eigyousho\ ;
+米市場 > beiichiba\ ;
+不動心 > fudoushin\ ;
+推進器 > suishinki\ ;
+小判形 > kobangata\ ;
+回送店 > kaisouten\ ;
+照明器 > shoumeiki\ ;
+徹甲弾 > tekkoudan\ ;
+宮内庁 > kunaichou\ ;
+市民権 > shiminken\ ;
+千年期 > sen''nenki\ ;
+半舷砲 > hangenhou\ ;
+権威筋 > ken''isuji\ ;
+変電所 > hendensho\ ;
+電解液 > denkaieki\ ;
+雲上人 > unjoubito\ ;
+一周年 > isshuunen\ ;
+管制塔 > kanseitou\ ;
+華厳経 > kegonkyou\ ;
+対情報 > taijouhou\ ;
+格変化 > kakuhenka\ ;
+教育家 > kyouikuka\ ;
+安息香 > ansokukou\ ;
+石鹸水 > sekkensui\ ;
+不勉強 > fubenkyou\ ;
+塩化物 > enkabutsu\ ;
+両用機 > ryouyouki\ ;
+当世風 > touseifuu\ ;
+格天井 > goutenjou\ ;
+中耕機 > chuukouki\ ;
+不適格 > futekkaku\ ;
+遠心分 > enshinbun\ ;
+普通法 > futsuuhou\ ;
+媒染剤 > baisenzai\ ;
+破裂音 > haretsuon\ ;
+主観論 > shukanron\ ;
+二番作 > nibansaku\ ;
+生命線 > seimeisen\ ;
+空対空 > kuutaikuu\ ;
+猛吹雪 > moufubuki\ ;
+高射砲 > koushahou\ ;
+一歩銀 > ichibugin\ ;
+禁漁区 > kinryouku\ ;
+奈良漬 > naradzuke\ ;
+形象化 > keishouka\ ;
+内地人 > naichijin\ ;
+石南花 > shakunage\ ;
+傀儡師 > kairaishi\ ;
+一歩金 > ichibukin\ ;
+痩我慢 > yasegaman\ ;
+悪因縁 > akuin''nen\ ;
+不眠症 > fuminshou\ ;
+電解槽 > denkaisou\ ;
+法華宗 > hokkeshuu\ ;
+一瞬間 > isshunkan\ ;
+正三位 > shousanmi\ ;
+弾道弾 > dandoudan\ ;
+混合林 > kongourin\ ;
+水墨画 > suibokuga\ ;
+交易会 > kouekikai\ ;
+高楊子 > takayouji\ ;
+権威的 > ken''iteki\ ;
+社用車 > shayousha\ ;
+分水嶺 > bunsuirei\ ;
+子供用 > kodomoyou\ ;
+親孝行 > oyakoukou\ ;
+発射筒 > hasshatou\ ;
+拾万円 > juuman''en\ ;
+勤皇家 > kin''nouka\ ;
+乳化剤 > nyuukazai\ ;
+近地点 > kinchiten\ ;
+無競争 > mukyousou\ ;
+交際法 > kousaihou\ ;
+私有地 > shiyuuchi\ ;
+参与者 > san''yosha\ ;
+飲料水 > inryousui\ ;
+秋日和 > akibiyori\ ;
+区役所 > kuyakusho\ ;
+立志伝 > risshiden\ ;
+天秤棒 > tenbinbou\ ;
+変調器 > henchouki\ ;
+小判型 > kobangata\ ;
+関係者 > kankeisha\ ;
+大成功 > daiseikou\ ;
+二人称 > nininshou\ ;
+偶像視 > guuzoushi\ ;
+偶蹄類 > guuteirui\ ;
+来訪者 > raihousha\ ;
+騒乱罪 > souranzai\ ;
+完成品 > kanseihin\ ;
+創造性 > souzousei\ ;
+排水管 > haisuikan\ ;
+又請負 > mataukeoi\ ;
+金閣寺 > kinkakuji\ ;
+誘電体 > yuudentai\ ;
+南京米 > nankinmai\ ;
+無神経 > mushinkei\ ;
+銀交換 > ginkoukan\ ;
+不干渉 > fukanshou\ ;
+製塩業 > seiengyou\ ;
+教会員 > kyoukaiin\ ;
+搭乗券 > toujouken\ ;
+過硫酸 > karyuusan\ ;
+運命的 > unmeiteki\ ;
+観桜会 > kan''oukai\ ;
+無礼者 > bureimono\ ;
+構文法 > koubunpou\ ;
+接近戦 > sekkinsen\ ;
+無法者 > muhoumono\ ;
+不適当 > futekitou\ ;
+無水鍋 > musuinabe\ ;
+月給日 > gekkyuubi\ ;
+斥候隊 > sekkoutai\ ;
+創業費 > sougyouhi\ ;
+重要性 > juuyousei\ ;
+総売上 > souuriage\ ;
+十円玉 > juuendama\ ;
+倫理学 > rinrigaku\ ;
+一週間 > isshuukan\ ;
+社内報 > shanaihou\ ;
+住宅費 > juutakuhi\ ;
+屈地性 > kutchisei\ ;
+国有化 > kokuyuuka\ ;
+通風機 > tsuufuuki\ ;
+家屋敷 > ieyashiki\ ;
+山椒魚 > sanshouuo\ ;
+公文書 > koubunsho\ ;
+決定論 > ketteiron\ ;
+保証人 > hoshounin\ ;
+沿海州 > enkaishuu\ ;
+不道徳 > fudoutoku\ ;
+便乗者 > binjousha\ ;
+一升瓶 > isshoubin\ ;
+空腹時 > kuufukuji\ ;
+前衛戦 > zen''eisen\ ;
+感情論 > kanjouron\ ;
+支配権 > shihaiken\ ;
+団子鼻 > dangobana\ ;
+全論点 > zenronten\ ;
+道化者 > doukemono\ ;
+西洋紙 > seiyoushi\ ;
+書記長 > shokichou\ ;
+忌言葉 > imikotoba\ ;
+難事業 > nanjigyou\ ;
+付帯的 > futaiteki\ ;
+高飛車 > takabisha\ ;
+電話中 > denwachuu\ ;
+黄道帯 > koudoutai\ ;
+高校生 > koukousei\ ;
+肺水腫 > haisuishu\ ;
+商用語 > shouyougo\ ;
+略記法 > ryakkihou\ ;
+葡萄棚 > budoudana\ ;
+奉公人 > houkounin\ ;
+仏法僧 > buppousou\ ;
+体育祭 > taiikusai\ ;
+普通弾 > futsuudan\ ;
+戦中派 > senchuuha\ ;
+高山帯 > kouzantai\ ;
+性犯罪 > seihanzai\ ;
+民芸品 > mingeihin\ ;
+親会社 > oyagaisha\ ;
+参賀帳 > sangachou\ ;
+三輪車 > sanrinsha\ ;
+産科学 > sankagaku\ ;
+車内灯 > shanaitou\ ;
+医務室 > imushitsu\ ;
+永続性 > eizokusei\ ;
+探検隊 > tankentai\ ;
+実務家 > jitsumuka\ ;
+必須格 > hissukaku\ ;
+大和歌 > yamatouta\ ;
+丸太材 > marutazai\ ;
+研修所 > kenshuujo\ ;
+一刹那 > issetsuna\ ;
+公明党 > koumeitou\ ;
+絵空言 > esoragoto\ ;
+羅針盤 > rashinban\ ;
+器量人 > kiryoujin\ ;
+国際語 > kokusaigo\ ;
+四辺形 > shihenkei\ ;
+発作的 > hossateki\ ;
+聾学校 > rougakkou\ ;
+掃海艇 > soukaitei\ ;
+参考書 > sankousho\ ;
+化粧品 > keshouhin\ ;
+地平面 > chiheimen\ ;
+低能者 > teinousha\ ;
+先験論 > senkenron\ ;
+集英社 > shuueisha\ ;
+用水池 > yousuichi\ ;
+受難劇 > junangeki\ ;
+倉庫業 > soukogyou\ ;
+千六本 > senroppon\ ;
+輸入品 > yunyuuhin\ ;
+化粧台 > keshoudai\ ;
+塩加減 > shiokagen\ ;
+蛍光燈 > keikoutou\ ;
+娘子軍 > joushigun\ ;
+自治省 > jichishou\ ;
+尾長猿 > onagazaru\ ;
+警防団 > keiboudan\ ;
+正解者 > seikaisha\ ;
+限度額 > gendogaku\ ;
+再洗礼 > saisenrei\ ;
+姉妹校 > shimaikou\ ;
+格闘技 > kakutougi\ ;
+青春期 > seishunki\ ;
+速記録 > sokkiroku\ ;
+優勝馬 > yuushouba\ ;
+気候学 > kikougaku\ ;
+病院船 > byouinsen\ ;
+国文科 > kokubunka\ ;
+担当者 > tantousha\ ;
+来場者 > raijousha\ ;
+蛍光灯 > keikoutou\ ;
+排水溝 > haisuikou\ ;
+峻下剤 > shungezai\ ;
+外商部 > gaishoubu\ ;
+正方形 > seihoukei\ ;
+月経帯 > gekkeitai\ ;
+角行灯 > kakuandon\ ;
+課徴金 > kachoukin\ ;
+交換船 > koukansen\ ;
+保管証 > hokanshou\ ;
+添加物 > tenkamono\ ;
+一分銀 > ichibugin\ ;
+来観者 > raikansha\ ;
+綺羅星 > kiraboshi\ ;
+山岳部 > sangakubu\ ;
+発展性 > hattensei\ ;
+一分金 > ichibukin\ ;
+協定案 > kyouteian\ ;
+注射器 > chuushaki\ ;
+司法権 > shihouken\ ;
+正攻法 > seikouhou\ ;
+手拍子 > tebyoushi\ ;
+社会面 > shakaimen\ ;
+象皮病 > zouhibyou\ ;
+禁反言 > kinhangen\ ;
+無双窓 > musoumado\ ;
+時間割 > jikanwari\ ;
+用心棒 > youjinbou\ ;
+再感染 > saikansen\ ;
+毛製品 > mouseihin\ ;
+化粧代 > keshoudai\ ;
+格納庫 > kakunouko\ ;
+総索引 > sousakuin\ ;
+予審廷 > yoshintei\ ;
+茶屋酒 > chayazake\ ;
+四分円 > shibun''en\ ;
+佗住居 > wabizumai\ ;
+片手桶 > katateoke\ ;
+創刊号 > soukangou\ ;
+四分六 > shiburoku\ ;
+防潜網 > bousenmou\ ;
+名刺判 > meishiban\ ;
+河童巻 > kappamaki\ ;
+向光性 > koukousei\ ;
+勲一等 > kun''ittou\ ;
+反物屋 > tanmonoya\ ;
+互譲的 > gojouteki\ ;
+世界的 > sekaiteki\ ;
+御迷惑 > gomeiwaku\ ;
+三部作 > sanbusaku\ ;
+正面図 > shoumenzu\ ;
+表具師 > hyougushi\ ;
+不適任 > futekinin\ ;
+経企庁 > keikichou\ ;
+運動領 > undouryou\ ;
+先般来 > senpanrai\ ;
+定冠詞 > teikanshi\ ;
+黄道光 > koudoukou\ ;
+接尾辞 > setsubiji\ ;
+水無月 > minadzuki\ ;
+駐在員 > chuuzaiin\ ;
+輸尿管 > yunyoukan\ ;
+国防費 > kokubouhi\ ;
+侍従長 > jijuuchou\ ;
+殺風景 > sappuukei\ ;
+中支那 > nakashina\ ;
+誤挿入 > gosounyuu\ ;
+正教授 > seikyouju\ ;
+休火山 > kyuukazan\ ;
+子守歌 > komoriuta\ ;
+決定稿 > ketteikou\ ;
+防火壁 > boukaheki\ ;
+台湾人 > taiwanjin\ ;
+日章旗 > nisshouki\ ;
+部隊長 > butaichou\ ;
+御真影 > goshin''ei\ ;
+凝固点 > gyoukoten\ ;
+支店網 > shitenmou\ ;
+数表示 > suuhyouji\ ;
+風向計 > fuukoukei\ ;
+蛍光板 > keikouban\ ;
+新聞舗 > shinbunho\ ;
+西南西 > seinansei\ ;
+避雷針 > hiraishin\ ;
+獅子舞 > shishimai\ ;
+任期中 > ninkichuu\ ;
+方面隊 > houmentai\ ;
+風鈴草 > fuurinsou\ ;
+花野菜 > hanayasai\ ;
+曲独楽 > kyokugoma\ ;
+真向法 > makkouhou\ ;
+商船旗 > shousenki\ ;
+研修員 > kenshuuin\ ;
+評判記 > hyoubanki\ ;
+普通便 > futsuubin\ ;
+副知事 > fukuchiji\ ;
+母集団 > boshuudan\ ;
+三冠王 > sankan''ou\ ;
+恋愛観 > ren''aikan\ ;
+併行線 > heikousen\ ;
+地役権 > chiekiken\ ;
+普通人 > futsuujin\ ;
+先導者 > sendousha\ ;
+再協議 > saikyouki\ ;
+投降者 > toukousha\ ;
+代赭色 > taishairo\ ;
+接尾語 > setsubigo\ ;
+劇作家 > gekisakka\ ;
+重戦車 > juusensha\ ;
+音楽隊 > ongakutai\ ;
+再禁止 > saikinshi\ ;
+燻蒸剤 > kunjouzai\ ;
+洋裁師 > yousaishi\ ;
+真正面 > mashoumen\ ;
+月経前 > gekkeimae\ ;
+運動量 > undouryou\ ;
+低山帯 > teizantai\ ;
+励振器 > reishinki\ ;
+英雄的 > eiyuuteki\ ;
+記者席 > kishaseki\ ;
+健康者 > kenkousha\ ;
+肥満症 > himanshou\ ;
+最大値 > saidaichi\ ;
+計画案 > keikakuan\ ;
+華厳宗 > kegonshuu\ ;
+主要点 > shuyouten\ ;
+仮住居 > karizumai\ ;
+会員証 > kaiinshou\ ;
+精薄児 > seihakuji\ ;
+挿入図 > sounyuuzu\ ;
+丁年者 > teinensha\ ;
+監査役 > kansayaku\ ;
+薄化粧 > usugeshou\ ;
+出勤簿 > shukkinbo\ ;
+中央線 > chuuousen\ ;
+履歴書 > rirekisho\ ;
+養嗣子 > youshishi\ ;
+大海原 > oounabara\ ;
+低価格 > teikakaku\ ;
+交際上 > kousaijou\ ;
+参考品 > sankouhin\ ;
+神経科 > shinkeika\ ;
+小作農 > kosakunou\ ;
+私文書 > shibunsho\ ;
+決定版 > ketteiban\ ;
+心不全 > shinfuzen\ ;
+乳幼児 > nyuuyouji\ ;
+規則書 > kisokusho\ ;
+加除式 > kajoshiki\ ;
+司法官 > shihoukan\ ;
+空対地 > kuutaichi\ ;
+正視眼 > seishigan\ ;
+早慶戦 > soukeisen\ ;
+掘削機 > kussakuki\ ;
+未確定 > mikakutei\ ;
+高架橋 > koukakyou\ ;
+個別化 > kobetsuka\ ;
+挿入句 > sounyuuku\ ;
+政権党 > seikentou\ ;
+射利心 > sharishin\ ;
+監察医 > kansatsui\ ;
+道化方 > doukegata\ ;
+半二重 > han''nijuu\ ;
+禁治産 > kinchisan\ ;
+単語集 > tangoshuu\ ;
+用水地 > yousuiike\ ;
+車高短 > shakoutan\ ;
+消化腺 > shoukasen\ ;
+近海魚 > kinkaigyo\ ;
+排水孔 > haisuikou\ ;
+木金土 > mokukindo\ ;
+持続性 > jizokusei\ ;
+名工大 > meikoudai\ ;
+支配人 > shihainin\ ;
+幹事長 > kanjichou\ ;
+長水路 > chousuiro\ ;
+平党員 > hiratouin\ ;
+循環線 > junkansen\ ;
+下剋上 > gekokujou\ ;
+上層風 > jousoufuu\ ;
+圧延鋼 > atsuenkou\ ;
+菠薐草 > hourensou\ ;
+準教員 > junkyouin\ ;
+凹眼鏡 > ougankyou\ ;
+物価高 > bukkadaka\ ;
+誘拐罪 > yuukaizai\ ;
+循環系 > junkankei\ ;
+派生的 > haseiteki\ ;
+素反応 > sohan''nou\ ;
+在郷者 > zaigousha\ ;
+北海道 > hokkaidou\ ;
+林檎病 > ringobyou\ ;
+薬事法 > yakujihou\ ;
+短毛種 > tanmoushu\ ;
+概念論 > gainenron\ ;
+道徳家 > doutokuka\ ;
+参与官 > san''yokan\ ;
+最終案 > saishuuan\ ;
+世界新 > sekaishin\ ;
+参考人 > sankounin\ ;
+屋台骨 > yataibone\ ;
+大歓迎 > daikangei\ ;
+上層階 > jousoukai\ ;
+一切経 > issaikyou\ ;
+再配置 > saihaichi\ ;
+肌襦袢 > hadajuban\ ;
+六角形 > rokkakkei\ ;
+新生児 > shinseiji\ ;
+先住者 > senjuusha\ ;
+醜業婦 > shugyoufu\ ;
+裁判権 > saibanken\ ;
+大神宮 > daijinguu\ ;
+正教員 > seikyouin\ ;
+悪戯着 > itazuragi\ ;
+昼行灯 > hiruandon\ ;
+地平線 > chiheisen\ ;
+配電線 > haidensen\ ;
+白頭翁 > hakutouou\ ;
+発射台 > hasshadai\ ;
+主陣地 > shujinchi\ ;
+感想文 > kansoubun\ ;
+消化系 > shoukakei\ ;
+主観性 > shukansei\ ;
+大法廷 > daihoutei\ ;
+最終日 > saishuubi\ ;
+決定権 > ketteiken\ ;
+兎小屋 > usagigoya\ ;
+多神論 > tashinron\ ;
+後半生 > kouhansei\ ;
+増訂版 > zouteiban\ ;
+所在地 > shozaichi\ ;
+災害地 > saigaichi\ ;
+消化管 > shoukakan\ ;
+年代順 > nendaijun\ ;
+神経炎 > shinkeien\ ;
+奉仕者 > houshisha\ ;
+再受浸 > saijushin\ ;
+操業費 > sougyouhi\ ;
+二人前 > futarimae\ ;
+富士壺 > fujitsubo\ ;
+百貨店 > hyakkaten\ ;
+横断幕 > oudanmaku\ ;
+二人分 > futaribun\ ;
+納税者 > nouzeisha\ ;
+酸性紙 > sanseishi\ ;
+左右軸 > sayuujiku\ ;
+天水桶 > tensuioke\ ;
+公開状 > koukaijou\ ;
+貴金属 > kikinzoku\ ;
+波羅蜜 > haramitsu\ ;
+狩猟期 > shuryouki\ ;
+文法書 > bunpousho\ ;
+占領下 > senryouka\ ;
+燃焼炉 > nenshouro\ ;
+古筆家 > kohitsuka\ ;
+防衛庁 > boueichou\ ;
+大祭司 > daisaishi\ ;
+雛罌粟 > hinageshi\ ;
+全天候 > zentenkou\ ;
+超短波 > choutanpa\ ;
+放射能 > houshanou\ ;
+前科者 > zenkamono\ ;
+長野県 > naganoken\ ;
+青大将 > aodaishou\ ;
+知恵熱 > chienetsu\ ;
+包装紙 > housoushi\ ;
+会員章 > kaiinshou\ ;
+米産地 > beisanchi\ ;
+八角形 > hakkakkei\ ;
+五大洲 > godaishuu\ ;
+新学期 > shingakki\ ;
+配電盤 > haidenban\ ;
+英文学 > eibungaku\ ;
+子守唄 > komoriuta\ ;
+御兄弟 > gokyoudai\ ;
+裁判所 > saibansho\ ;
+参院選 > san''insen\ ;
+軍人風 > gunjinfuu\ ;
+無得点 > mutokuten\ ;
+論理的 > ronriteki\ ;
+劃期的 > kakkiteki\ ;
+三省堂 > sanseidou\ ;
+虚弱児 > kyojakuji\ ;
+当事国 > toujikoku\ ;
+論争者 > ronsousha\ ;
+放射線 > houshasen\ ;
+崇拝者 > suuhaisha\ ;
+健康法 > kenkouhou\ ;
+怪文書 > kaibunsho\ ;
+逮捕歴 > taihoreki\ ;
+筆頭者 > hittousha\ ;
+乾生姜 > kanshouga\ ;
+生残者 > seizansha\ ;
+淡水魚 > tansuigyo\ ;
+贈答品 > zoutouhin\ ;
+交換手 > koukanshu\ ;
+蛍光体 > keikoutai\ ;
+氷点下 > hyoutenka\ ;
+誘拐犯 > yuukaihan\ ;
+煎玉子 > iritamago\ ;
+興信所 > koushinjo\ ;
+甘味料 > kanmiryou\ ;
+試験紙 > shikenshi\ ;
+熏蒸剤 > kunjouzai\ ;
+肉襦袢 > nikujuban\ ;
+監守人 > kanshunin\ ;
+増大号 > zoudaigou\ ;
+滑走輪 > kassourin\ ;
+再創造 > saisouzou\ ;
+西洋史 > seiyoushi\ ;
+戸籍法 > kosekihou\ ;
+荒物屋 > aramonoya\ ;
+中西部 > chuuseibu\ ;
+自動的 > jidouteki\ ;
+借家人 > shakkanin\ ;
+法学部 > hougakubu\ ;
+軍資金 > gunshikin\ ;
+文法性 > bunpousei\ ;
+農夫症 > noufushou\ ;
+材料費 > zairyouhi\ ;
+催涙銃 > sairuijuu\ ;
+変換子 > henkanshi\ ;
+材木屋 > zaimokuya\ ;
+貧窮化 > hinkyuuka\ ;
+早合点 > hayagaten\ ;
+肥満性 > himanshou\ ;
+車馬賃 > shabachin\ ;
+竜騎兵 > ryuukihei\ ;
+土台石 > dodaiishi\ ;
+帰納的 > kinouteki\ ;
+試験管 > shikenkan\ ;
+男子高 > danshikou\ ;
+大反対 > daihantai\ ;
+非国民 > hikokumin\ ;
+小豆鱒 > azukimasu\ ;
+莢豌豆 > sayaendou\ ;
+両替機 > ryougaeki\ ;
+綿火薬 > menkayaku\ ;
+人民軍 > jinmingun\ ;
+欠勤者 > kekkinsha\ ;
+小作米 > kosakumai\ ;
+泥板岩 > deibangan\ ;
+擬革紙 > gikakushi\ ;
+貴重品 > kichouhin\ ;
+火山礫 > kazanreki\ ;
+顔写真 > kaojashin\ ;
+共演者 > kyouensha\ ;
+救護班 > kyuugohan\ ;
+再循環 > saijunkan\ ;
+荻江節 > ogiebushi\ ;
+集光器 > shuukouki\ ;
+一部分 > ichibubun\ ;
+装甲車 > soukousha\ ;
+新世紀 > shinseiki\ ;
+裁判官 > saibankan\ ;
+出勤日 > shukkinbi\ ;
+送信機 > soushinki\ ;
+雑居地 > zakkyochi\ ;
+英数国 > eisuukoku\ ;
+保管料 > hokanryou\ ;
+半貴石 > hankiseki\ ;
+軍用機 > gun''youki\ ;
+虎落笛 > mogaribue\ ;
+生還者 > seikansha\ ;
+懇談会 > kondankai\ ;
+未公表 > mikouhyou\ ;
+西洋人 > seiyoujin\ ;
+田舎者 > inakamono\ ;
+消化液 > shoukaeki\ ;
+健康方 > kenkouhou\ ;
+穴居人 > kekkyojin\ ;
+妨業員 > bougyouin\ ;
+風呂敷 > furoshiki\ ;
+何曜日 > nan''youbi\ ;
+警戒線 > keikaisen\ ;
+交換嬢 > koukanjou\ ;
+大道芸 > daidougei\ ;
+停止線 > teishisen\ ;
+勉強家 > benkyouka\ ;
+浪漫的 > romanteki\ ;
+勧世縒 > kanzeyori\ ;
+竹細工 > takezaiku\ ;
+産卵口 > sanrankou\ ;
+感動詞 > kandoushi\ ;
+水圧機 > suiatsuki\ ;
+音楽祭 > ongakusai\ ;
+人情本 > ninjoubon\ ;
+皇霊殿 > koureiden\ ;
+使命者 > shimeisha\ ;
+代用品 > daiyouhin\ ;
+葉菜類 > yousairui\ ;
+写真機 > shashinki\ ;
+男伊達 > otokodate\ ;
+兵站線 > heitansen\ ;
+帯電体 > taidentai\ ;
+文化的 > bunkateki\ ;
+未発表 > mihappyou\ ;
+先住民 > senjuumin\ ;
+途上国 > tojoukoku\ ;
+半音階 > han''onkai\ ;
+白木屋 > shirokiya\ ;
+仕様書 > shiyousho\ ;
+民事的 > minjiteki\ ;
+成層圏 > seisouken\ ;
+蒸気圧 > joukiatsu\ ;
+両替所 > ryougaejo\ ;
+後半戦 > kouhansen\ ;
+幽寂味 > yuujakumi\ ;
+帝王学 > teiougaku\ ;
+貯水池 > chosuichi\ ;
+新世界 > shinsekai\ ;
+命令法 > meireihou\ ;
+現像液 > genzoueki\ ;
+観覧車 > kanransha\ ;
+会社葬 > kaishasou\ ;
+禁酒法 > kinshuhou\ ;
+脳膜炎 > noumakuen\ ;
+五大州 > godaishuu\ ;
+文部省 > monbushou\ ;
+軍事通 > gunjitsuu\ ;
+脳腫瘍 > noushuyou\ ;
+世界一 > sekaiichi\ ;
+再分配 > saibunpai\ ;
+掛布団 > kakebuton\ ;
+外洋船 > gaiyousen\ ;
+組職図 > soshokuzu\ ;
+交換品 > koukanhin\ ;
+火食鳥 > hikuidori\ ;
+貯水槽 > chosuisou\ ;
+海水魚 > kaisuigyo\ ;
+精進日 > shoujinbi\ ;
+三色旗 > sanshokki\ ;
+逃亡者 > toubousha\ ;
+道具箱 > dougubako\ ;
+出廷日 > shutteibi\ ;
+画学紙 > gagakushi\ ;
+貯蔵所 > chozousho\ ;
+東海道 > toukaidou\ ;
+交換台 > koukandai\ ;
+戦時中 > senjichuu\ ;
+混分数 > konbunsuu\ ;
+生石灰 > seisekkai\ ;
+不検束 > fukensoku\ ;
+小松菜 > komatsuna\ ;
+舟大工 > funadaiku\ ;
+贈呈者 > zouteisha\ ;
+類概念 > ruigainen\ ;
+任天堂 > nintendou\ ;
+南方産 > nanpousan\ ;
+結納金 > yuinoukin\ ;
+太刀筋 > tachisuji\ ;
+熟字訓 > jukujikun\ ;
+声明書 > seimeisho\ ;
+問題点 > mondaiten\ ;
+分工場 > bunkoujou\ ;
+定年制 > teinensei\ ;
+地元紙 > jimotoshi\ ;
+預託金 > yotakukin\ ;
+防空砲 > boukuuhou\ ;
+静圧比 > seiatsuhi\ ;
+回顧録 > kaikoroku\ ;
+両替屋 > ryougaeya\ ;
+人気者 > ninkimono\ ;
+不良品 > furyouhin\ ;
+小便所 > shoubenjo\ ;
+循環性 > junkansei\ ;
+商用化 > shouyouka\ ;
+交換円 > koukan''en\ ;
+試験法 > shikenhou\ ;
+学園祭 > gakuensai\ ;
+感歎詞 > kantanshi\ ;
+第六感 > dairokkan\ ;
+貧民街 > hinmingai\ ;
+命令書 > meireisho\ ;
+半導体 > handoutai\ ;
+兵器廠 > heikishou\ ;
+裁判上 > saibanjou\ ;
+売春婦 > baishunpu\ ;
+下克上 > gekokujou\ ;
+配電所 > haidensho\ ;
+社交界 > shakoukai\ ;
+優勝旗 > yuushouki\ ;
+手品師 > tejinashi\ ;
+髄膜炎 > zuimakuen\ ;
+雨支度 > amajitaku\ ;
+修道院 > shuudouin\ ;
+海蛇座 > umihebiza\ ;
+命令文 > meireibun\ ;
+東洋風 > touyoufuu\ ;
+弟息子 > otomusuko\ ;
+五大国 > godaikoku\ ;
+接骨医 > sekkotsui\ ;
+望遠鏡 > bouenkyou\ ;
+梅雨空 > tsuyuzora\ ;
+工員寮 > kouinryou\ ;
+無遊病 > muyuubyou\ ;
+国際化 > kokusaika\ ;
+驚異的 > kyouiteki\ ;
+関東弁 > kantouben\ ;
+複合語 > fukugougo\ ;
+弘済会 > kousaikai\ ;
+至近弾 > shikindan\ ;
+本年度 > hon''nendo\ ;
+救護所 > kyuugosho\ ;
+呑気者 > nonkimono\ ;
+小作権 > kosakuken\ ;
+代理母 > dairihaha\ ;
+分界線 > bunkaisen\ ;
+端境期 > hazakaiki\ ;
+前々回 > zenzenkai\ ;
+語源学 > gogengaku\ ;
+心電図 > shindenzu\ ;
+健康地 > kenkouchi\ ;
+氏子札 > ujikofuda\ ;
+諸問題 > shomondai\ ;
+口唇期 > koushinki\ ;
+将棋盤 > shougiban\ ;
+獅子唐 > shishitou\ ;
+平信徒 > heishinto\ ;
+大気圧 > taikiatsu\ ;
+将軍家 > shougunke\ ;
+千代紙 > chiyogami\ ;
+主戦論 > shusenron\ ;
+劣等生 > rettousei\ ;
+新字体 > shinjitai\ ;
+納品書 > nouhinsho\ ;
+皇太子 > koutaishi\ ;
+騒擾罪 > soujouzai\ ;
+半官報 > hankanpou\ ;
+同伴者 > douhansha\ ;
+海鼠板 > namakoban\ ;
+准士官 > junshikan\ ;
+実験者 > jikkensha\ ;
+代理業 > dairigyou\ ;
+一次元 > ichijigen\ ;
+用益権 > youekiken\ ;
+上腕筋 > jouwankin\ ;
+参政権 > sanseiken\ ;
+巡礼者 > junreisha\ ;
+実験群 > jikkengun\ ;
+空景気 > karageiki\ ;
+写真家 > shashinka\ ;
+車椅子 > kurumaisu\ ;
+揮毫料 > kigouryou\ ;
+警告音 > keikokuon\ ;
+教授陣 > kyoujujin\ ;
+初七日 > shonanoka\ ;
+安心感 > anshinkan\ ;
+大入道 > oonyuudou\ ;
+社会悪 > shakaiaku\ ;
+主製品 > shuseihin\ ;
+無気力 > mukiryoku\ ;
+社会性 > shakaisei\ ;
+脱脂綿 > dasshimen\ ;
+気象台 > kishoudai\ ;
+命令形 > meireikei\ ;
+論理学 > ronrigaku\ ;
+実体論 > jittairon\ ;
+小会派 > shoukaiha\ ;
+同値性 > douchisei\ ;
+酸性岩 > sanseigan\ ;
+下足番 > gesokuban\ ;
+斥候兵 > sekkouhei\ ;
+好影響 > koueikyou\ ;
+邯鄲師 > kantanshi\ ;
+生化学 > seikagaku\ ;
+試乗車 > shijousha\ ;
+観覧者 > kanransha\ ;
+奉賀帳 > hougachou\ ;
+圧制的 > asseiteki\ ;
+炭酸紙 > tansanshi\ ;
+再従弟 > saijuutei\ ;
+余計者 > yokeimono\ ;
+不寝番 > fushinban\ ;
+理屈屋 > rikutsuya\ ;
+保管人 > hokan''nin\ ;
+優良馬 > yuuryouba\ ;
+運輸量 > un''yuryou\ ;
+太平洋 > taiheiyou\ ;
+貯蔵品 > chozouhin\ ;
+単糖類 > tantourui\ ;
+聚楽第 > jurakudai\ ;
+生半可 > namahanka\ ;
+協議所 > kyougisho\ ;
+今年度 > kon''nendo\ ;
+准教員 > junkyouin\ ;
+社会層 > shakaisou\ ;
+健康体 > kenkoutai\ ;
+思春期 > shishunki\ ;
+放射性 > houshasei\ ;
+虫媒花 > chuubaika\ ;
+写真器 > shashinki\ ;
+内向性 > naikousei\ ;
+改宗者 > kaisousha\ ;
+優待券 > yuutaiken\ ;
+四人組 > yoningumi\ ;
+退嬰的 > taieiteki\ ;
+善後策 > zengosaku\ ;
+助手席 > joshuseki\ ;
+火木金 > kamokukin\ ;
+氏子帳 > ujikochou\ ;
+皇太后 > koutaigou\ ;
+特攻隊 > tokkoutai\ ;
+遺言者 > yuigonsha\ ;
+郷土史 > kyoudoshi\ ;
+付属校 > fuzokukou\ ;
+統治者 > touchisha\ ;
+名人芸 > meijingei\ ;
+凄文句 > sugomonku\ ;
+戦災者 > sensaisha\ ;
+試作機 > shisakuki\ ;
+黄枯茶 > kigaracha\ ;
+胃腸薬 > ichouyaku\ ;
+陽電子 > youdenshi\ ;
+文殊様 > monjusama\ ;
+付属書 > fuzokusho\ ;
+討論者 > touronsha\ ;
+多汗症 > takanshou\ ;
+投手陣 > toushujin\ ;
+中継所 > chuukeijo\ ;
+根拠地 > konkyochi\ ;
+法人税 > houjinzei\ ;
+地元民 > jimotomin\ ;
+年期者 > nenkimono\ ;
+音楽性 > ongakusei\ ;
+被告人 > hikokunin\ ;
+文化庁 > bunkachou\ ;
+偏向板 > henkouban\ ;
+背任罪 > haininzai\ ;
+傍観者 > boukansha\ ;
+星状体 > seijoutai\ ;
+消化剤 > shoukazai\ ;
+欧州版 > oushuuban\ ;
+小豆粥 > azukigayu\ ;
+系図学 > keizugaku\ ;
+試験官 > shikenkan\ ;
+石楠花 > shakunage\ ;
+書簡箋 > shokansen\ ;
+再配分 > saihaibun\ ;
+協議官 > kyougikan\ ;
+同類項 > douruikou\ ;
+自転軸 > jitenjiku\ ;
+上甲板 > joukanpan\ ;
+全地方 > zenchihou\ ;
+会社法 > kaishahou\ ;
+奉仕品 > houshihin\ ;
+截拳道 > sekkendou\ ;
+仕舞屋 > shimotaya\ ;
+折衷案 > setchuuan\ ;
+航空隊 > koukuutai\ ;
+蝦蟇口 > gamaguchi\ ;
+禁止法 > kinshihou\ ;
+道具方 > dougukata\ ;
+旦那芸 > dan''nagei\ ;
+扶養料 > fuyouryou\ ;
+不信心 > fushinjin\ ;
+平安朝 > heianchou\ ;
+内野席 > naiyaseki\ ;
+因果律 > ingaritsu\ ;
+軽演劇 > keiengeki\ ;
+板金工 > bankinkou\ ;
+定価表 > teikahyou\ ;
+篤志家 > tokushika\ ;
+試験場 > shikenjou\ ;
+旅行者 > ryokousha\ ;
+歯齦炎 > shigin''en\ ;
+蛸坊主 > takobouzu\ ;
+参政官 > sanseikan\ ;
+軍事的 > gunjiteki\ ;
+古銭学 > kosengaku\ ;
+軍官憲 > gunkanken\ ;
+関数論 > kansuuron\ ;
+治療費 > chiryouhi\ ;
+板金屋 > bankin''ya\ ;
+操車場 > soushajou\ ;
+投融資 > touyuushi\ ;
+革命歌 > kakumeika\ ;
+社交性 > shakousei\ ;
+擬爆弾 > gibakudan\ ;
+竹蜻蛉 > taketonbo\ ;
+超党派 > choutouha\ ;
+問題外 > mondaigai\ ;
+一般的 > ippanteki\ ;
+資本金 > shihonkin\ ;
+男子用 > danshiyou\ ;
+対生葉 > taiseiyou\ ;
+社会党 > shakaitou\ ;
+厭世的 > enseiteki\ ;
+訓練生 > kunrensei\ ;
+贈呈本 > zouteibon\ ;
+夢遊病 > muyuubyou\ ;
+家族法 > kazokuhou\ ;
+人気株 > ninkikabu\ ;
+読後感 > dokugokan\ ;
+単細胞 > tansaibou\ ;
+鳴禽類 > meikinrui\ ;
+内部的 > naibuteki\ ;
+練兵場 > renpeijou\ ;
+大前提 > daizentei\ ;
+再従兄 > saijuukei\ ;
+可動橋 > kadoukyou\ ;
+画期的 > kakkiteki\ ;
+音楽堂 > ongakudou\ ;
+荒隠元 > sayaingen\ ;
+洗礼名 > senreimei\ ;
+現業員 > gengyouin\ ;
+一工夫 > hitokufuu\ ;
+膝小僧 > hizakozou\ ;
+作詞家 > sakushika\ ;
+作為的 > sakuiteki\ ;
+小宇宙 > shouuchuu\ ;
+風水害 > fuusuigai\ ;
+単数形 > tansuukei\ ;
+水溶液 > suiyoueki\ ;
+大車輪 > daisharin\ ;
+改定版 > kaiteihan\ ;
+社会人 > shakaijin\ ;
+悪影響 > akueikyou\ ;
+西部劇 > seibugeki\ ;
+雑貨商 > zakkashou\ ;
+劣等感 > rettoukan\ ;
+透明性 > toumeisei\ ;
+若夫婦 > wakafuufu\ ;
+現代詩 > gendaishi\ ;
+陰陽道 > onmyoudou\ ;
+休憩所 > kyuukeijo\ ;
+配給所 > haikyuujo\ ;
+装身具 > soushingu\ ;
+無欠席 > mukesseki\ ;
+自制心 > jiseishin\ ;
+副作用 > fukusayou\ ;
+再選挙 > saisenkyo\ ;
+隠匿者 > intokusha\ ;
+同人種 > doujinshu\ ;
+運送業 > unsougyou\ ;
+内務省 > naimushou\ ;
+炭酸水 > tansansui\ ;
+勤王家 > kin''nouka\ ;
+衛生的 > eiseiteki\ ;
+競技者 > kyougisha\ ;
+再発行 > saihakkou\ ;
+遺言状 > yuigonjou\ ;
+点眼水 > tengansui\ ;
+軽合金 > keigoukin\ ;
+一発屋 > ippatsuya\ ;
+全製品 > zenseihin\ ;
+応召者 > oushousha\ ;
+古印紙 > furuinshi\ ;
+資本財 > shihonzai\ ;
+回顧的 > kaikoteki\ ;
+二親等 > nishintou\ ;
+交戦権 > kousenken\ ;
+広報誌 > kouhoushi\ ;
+例年祭 > reinensai\ ;
+予防薬 > yobouyaku\ ;
+和声学 > waseigaku\ ;
+音楽史 > ongakushi\ ;
+萎縮腎 > ishukujin\ ;
+盗聴器 > touchouki\ ;
+予約金 > yoyakukin\ ;
+春場所 > harubasho\ ;
+租庸調 > soyouchou\ ;
+原子論 > genshiron\ ;
+無機物 > mukibutsu\ ;
+決議案 > ketsugian\ ;
+創作家 > sousakuka\ ;
+爛熟期 > ranjukuki\ ;
+中間派 > chuukanha\ ;
+里程標 > riteihyou\ ;
+資本論 > shihonron\ ;
+今様歌 > imayouuta\ ;
+会津塗 > aidzunuri\ ;
+丸坊主 > marubouzu\ ;
+移植性 > ishokusei\ ;
+前後策 > zengosaku\ ;
+別天地 > bettenchi\ ;
+協議会 > kyougikai\ ;
+防空壕 > boukuugou\ ;
+運送料 > unsouryou\ ;
+幽霊船 > yuureisen\ ;
+伯備線 > hakubisen\ ;
+胃腸病 > ichoubyou\ ;
+告示板 > kokujiban\ ;
+小作人 > kosakunin\ ;
+離間策 > rikansaku\ ;
+民数記 > minsuuki\ ;
+鉄砲座 > teppouza\ ;
+文化人 > bunkajin\ ;
+木工所 > mokkoujo\ ;
+一般法 > ippanhou\ ;
+労務者 > roumusha\ ;
+文庫本 > bunkobon\ ;
+代理人 > dairinin\ ;
+海水着 > kaisuigi\ ;
+自己流 > jikoryuu\ ;
+丁寧語 > teineigo\ ;
+音楽会 > ongakkai\ ;
+同胞愛 > douhouai\ ;
+毛唐人 > ketoujin\ ;
+民事上 > minjijou\ ;
+淡彩画 > tansaiga\ ;
+期待値 > kitaichi\ ;
+全裸体 > zenratai\ ;
+立体派 > rittaiha\ ;
+護送船 > gosousen\ ;
+野蛮人 > yabanjin\ ;
+女性軍 > joseigun\ ;
+同趣味 > doushumi\ ;
+可動性 > kadousei\ ;
+不養生 > fuyoujou\ ;
+飽和点 > houwaten\ ;
+既往症 > kioushou\ ;
+一致点 > itchiten\ ;
+筆記者 > hikkisha\ ;
+送風機 > soufuuki\ ;
+姫御子 > himemiko\ ;
+手配書 > tehaisho\ ;
+脳珊瑚 > nousango\ ;
+上層土 > jousoudo\ ;
+予約語 > yoyakugo\ ;
+油槽船 > yusousen\ ;
+一寸見 > chottomi\ ;
+予防線 > yobousen\ ;
+勘定日 > kanjoubi\ ;
+内帑金 > naidokin\ ;
+伝送路 > densouro\ ;
+銀細工 > ginzaiku\ ;
+人相見 > ninsoumi\ ;
+風刺画 > fuushiga\ ;
+午餐会 > gosankai\ ;
+無欠勤 > mukekkin\ ;
+比重計 > hijuukei\ ;
+運送店 > unsouten\ ;
+操作盤 > sousaban\ ;
+在庫品 > zaikohin\ ;
+民主化 > minshuka\ ;
+延滞金 > entaikin\ ;
+唐破風 > karahafu\ ;
+自公民 > jikoumin\ ;
+賢夫人 > kenpujin\ ;
+運転者 > untensha\ ;
+不格好 > bukakkou\ ;
+催淫剤 > saiinzai\ ;
+栄養短 > eiyoutan\ ;
+医学界 > igakukai\ ;
+無常感 > mujoukan\ ;
+背格好 > sekakkou\ ;
+山査子 > sanzashi\ ;
+医学生 > igakusei\ ;
+開業医 > kaigyoui\ ;
+便衣隊 > ben''itai\ ;
+幹事会 > kanjikai\ ;
+多原子 > tagenshi\ ;
+十字形 > juujikei\ ;
+外野手 > gaiyashu\ ;
+健胃錠 > ken''ijou\ ;
+関西馬 > kansaiba\ ;
+指示詞 > shijishi\ ;
+明日葉 > ashitaba\ ;
+短距離 > tankyori\ ;
+一軒屋 > ikken''ya\ ;
+芸備線 > geibisen\ ;
+陣太鼓 > jindaiko\ ;
+真冬日 > mafuyubi\ ;
+四季報 > shikihou\ ;
+一軒家 > ikken''ya\ ;
+繁華街 > hankagai\ ;
+訓練所 > kunrenjo\ ;
+海水温 > kaisuion\ ;
+筋電図 > kindenzu\ ;
+泌尿幾 > hinyouki\ ;
+不安心 > fuanshin\ ;
+訪問着 > houmongi\ ;
+会社員 > kaishain\ ;
+法王権 > hououken\ ;
+不導体 > fudoutai\ ;
+単試合 > tanshiai\ ;
+写生画 > shaseiga\ ;
+管理人 > kanrinin\ ;
+一家言 > ikkagoto\ ;
+同期生 > doukisei\ ;
+丁定規 > teijougi\ ;
+守備隊 > shubitai\ ;
+併合罪 > heigozai\ ;
+気無精 > kibushou\ ;
+三枚目 > sanmaime\ ;
+手配師 > tehaishi\ ;
+無自覚 > mujikaku\ ;
+火事泥 > kajidoro\ ;
+人工語 > jinkougo\ ;
+既往歴 > kioureki\ ;
+一般性 > ippansei\ ;
+年月日 > nengappi\ ;
+変成器 > henseiki\ ;
+未信者 > mishinja\ ;
+不案内 > fuan''nai\ ;
+自棄酒 > yakezake\ ;
+塑弾性 > sodansei\ ;
+武器倉 > bukigura\ ;
+聴音器 > chouonki\ ;
+平仮名 > hiragana\ ;
+感知器 > kanchiki\ ;
+前半期 > zenpanki\ ;
+空論家 > kuuronka\ ;
+農閑期 > noukanki\ ;
+不賛成 > fusansei\ ;
+養鶏家 > youkeika\ ;
+十二支 > juunishi\ ;
+構成比 > kouseihi\ ;
+向日葵 > himawari\ ;
+機業家 > kigyouka\ ;
+水滸伝 > suikoden\ ;
+御嬢様 > ojousama\ ;
+臨床医 > rinshoui\ ;
+栄養源 > eiyougen\ ;
+多年草 > tanensou\ ;
+荷厄介 > niyakkai\ ;
+励磁損 > reijison\ ;
+安全瓣 > anzenben\ ;
+重酸素 > juusanso\ ;
+二塁手 > niruishu\ ;
+木工具 > mokkougu\ ;
+点眼器 > tenganki\ ;
+莫大小 > meriyasu\ ;
+製鋼所 > seikoujo\ ;
+隠蔽子 > inpeishi\ ;
+勘定場 > kanjouba\ ;
+羽団扇 > hauchiwa\ ;
+破戒僧 > hakaisou\ ;
+瀬戸物 > setomono\ ;
+大英断 > daieidan\ ;
+泌尿器 > hinyouki\ ;
+先議権 > sengiken\ ;
+反抗期 > hankouki\ ;
+本会議 > honkaigi\ ;
+英米人 > eibeijin\ ;
+低順位 > teijun''i\ ;
+不老泉 > furousen\ ;
+名宛人 > naatenin\ ;
+自由詩 > jiyuushi\ ;
+意志的 > ishiteki\ ;
+戦闘員 > sentouin\ ;
+原画像 > gengazou\ ;
+大腿部 > daitaibu\ ;
+滋賀県 > shigaken\ ;
+重水素 > juusuiso\ ;
+人造湖 > jinzouko\ ;
+請負師 > ukeoishi\ ;
+水準器 > suijunki\ ;
+漫画本 > mangahon\ ;
+互換性 > gokansei\ ;
+種種相 > shujusou\ ;
+予防法 > yobouhou\ ;
+安全灯 > anzentou\ ;
+運送人 > unsounin\ ;
+上首尾 > joushubi\ ;
+仏舎利 > busshari\ ;
+與太者 > yotamono\ ;
+満天下 > mantenka\ ;
+価格差 > kakakusa\ ;
+無花果 > ichijiku\ ;
+不人情 > funinjou\ ;
+土建屋 > doken''ya\ ;
+遮断機 > shadanki\ ;
+乱杭歯 > ranguiba\ ;
+蝋細工 > rouzaiku\ ;
+糜爛性 > biransei\ ;
+貴公子 > kikoushi\ ;
+廉価版 > renkaban\ ;
+原子炉 > genshiro\ ;
+転換炉 > tenkanro\ ;
+黎明期 > reimeiki\ ;
+菖蒲湯 > shoubuyu\ ;
+無駄骨 > mudabone\ ;
+類似品 > ruijihin\ ;
+飛行隊 > hikoutai\ ;
+金鳳花 > kinpouge\ ;
+黒雲母 > kurounmo\ ;
+相手方 > aitegata\ ;
+不完全 > fukanzen\ ;
+祖国愛 > sokokuai\ ;
+募集費 > boshuuhi\ ;
+生産費 > seisanhi\ ;
+統合化 > tougouka\ ;
+旅行家 > ryokouka\ ;
+社外秘 > shagaihi\ ;
+従価税 > juukazei\ ;
+使徒書 > shitosho\ ;
+寝化粧 > negeshou\ ;
+創世期 > souseiki\ ;
+金目鯛 > kinmedai\ ;
+上下線 > jougesen\ ;
+理事国 > rijikoku\ ;
+水準儀 > suijungi\ ;
+再保険 > saihoken\ ;
+下馬先 > gebasaki\ ;
+泉貨紙 > senkashi\ ;
+御令嬢 > goreijou\ ;
+電気街 > denkigai\ ;
+軍政部 > gunseibu\ ;
+御題目 > odaimoku\ ;
+無保証 > muhoshou\ ;
+可分性 > kabunsei\ ;
+亜鉛鉄 > aentetsu\ ;
+動安定 > douantei\ ;
+刑事上 > keijijou\ ;
+女性用 > joseiyou\ ;
+乾燥炉 > kansouro\ ;
+育児法 > ikujihou\ ;
+愛鳥家 > aichouka\ ;
+本舞台 > honbutai\ ;
+個人性 > kojinsei\ ;
+依存症 > izonshou\ ;
+悪性度 > akuseido\ ;
+美男子 > binanshi\ ;
+電波法 > denpahou\ ;
+軍事上 > gunjijou\ ;
+烏犀角 > usaikaku\ ;
+偏微分 > henbibun\ ;
+素寒貧 > sukanpin\ ;
+豚小屋 > butagoya\ ;
+延滞税 > entaizei\ ;
+冥王星 > meiousei\ ;
+円盤状 > enbanjou\ ;
+蔵書家 > zoushoka\ ;
+録音機 > rokuonki\ ;
+過般来 > kahanrai\ ;
+鑚孔機 > sankouki\ ;
+一般人 > ippanjin\ ;
+相手役 > aiteyaku\ ;
+歩合給 > buaikyuu\ ;
+井戸綱 > idodzuna\ ;
+既知数 > kichisuu\ ;
+工務店 > koumuten\ ;
+一朱銀 > isshugin\ ;
+航空機 > koukuuki\ ;
+黒繻子 > kurojusu\ ;
+登記所 > toukisho\ ;
+適時打 > tekijida\ ;
+合理性 > gourisei\ ;
+陰電子 > indenshi\ ;
+助動詞 > jodoushi\ ;
+慰藉料 > isharyou\ ;
+衛生兵 > eiseihei\ ;
+低物価 > teibukka\ ;
+個人展 > kojinten\ ;
+実体化 > jittaika\ ;
+邪魔者 > jamamono\ ;
+米議会 > beigikai\ ;
+無尽蔵 > mujinzou\ ;
+転換期 > tenkanki\ ;
+代議士 > daigishi\ ;
+鼻濁音 > bidakuon\ ;
+高電位 > kouden''i\ ;
+持参金 > jisankin\ ;
+唯理論 > yuiriron\ ;
+名望家 > meibouka\ ;
+多元論 > tagenron\ ;
+自棄糞 > yakekuso\ ;
+正符号 > seifugou\ ;
+無産者 > musansha\ ;
+育児書 > ikujisho\ ;
+定期船 > teikisen\ ;
+手弁当 > tebentou\ ;
+乾燥機 > kansouki\ ;
+三日間 > mikkakan\ ;
+十二分 > juunibun\ ;
+稽古台 > keikodai\ ;
+先頭伍 > sentougo\ ;
+出来高 > dekidaka\ ;
+三世相 > sanzesou\ ;
+運根鈍 > unkondon\ ;
+衛生上 > eiseijou\ ;
+医学士 > igakushi\ ;
+請負人 > ukeoinin\ ;
+断面図 > danmenzu\ ;
+虚仮猿 > kokezaru\ ;
+未使用 > mishiyou\ ;
+電波星 > denpasei\ ;
+音韻論 > on''inron\ ;
+機械工 > kikaikou\ ;
+再封鎖 > saifuusa\ ;
+防波堤 > bouhatei\ ;
+運転手 > untenshu\ ;
+争覇戦 > souhasen\ ;
+黒文字 > kuromoji\ ;
+無駄足 > mudaashi\ ;
+着物地 > kimonoji\ ;
+外気圏 > gaikiken\ ;
+開会日 > kaikaibi\ ;
+由来書 > yuraisho\ ;
+鵝口瘡 > gakousou\ ;
+乾燥果 > kansouka\ ;
+安全性 > anzensei\ ;
+乾燥期 > kansouki\ ;
+栄養士 > eiyoushi\ ;
+台布巾 > daibukin\ ;
+構成員 > kouseiin\ ;
+模範生 > mohansei\ ;
+安全弁 > anzenben\ ;
+駆動輪 > kudourin\ ;
+東洋史 > toyofumi\ ;
+単精度 > tanseido\ ;
+火木土 > kamokudo\ ;
+代議制 > daigisei\ ;
+未定稿 > miteikou\ ;
+世話物 > sewamono\ ;
+観戦記 > kansenki\ ;
+天瓜粉 > tenkafun\ ;
+形成期 > keiseiki\ ;
+放映権 > houeiken\ ;
+監視所 > kanshijo\ ;
+御本尊 > gohonzon\ ;
+単純化 > tanjunka\ ;
+個人名 > kojinmei\ ;
+検眼医 > kengan''i\ ;
+医学史 > igakushi\ ;
+未踏峰 > mitouhou\ ;
+断断固 > dandanko\ ;
+暖房器 > danbouki\ ;
+斡旋者 > assensha\ ;
+仏生会 > busshoue\ ;
+規格化 > kikakuka\ ;
+司令部 > shireibu\ ;
+意匠権 > ishouken\ ;
+尊敬語 > sonkeigo\ ;
+形態素 > keitaiso\ ;
+美少女 > bishoujo\ ;
+円運動 > en''undou\ ;
+象牙色 > zougeiro\ ;
+遮断器 > shadanki\ ;
+許可書 > kyokasho\ ;
+商議員 > shougiin\ ;
+御一新 > goisshin\ ;
+愉快犯 > yukaihan\ ;
+指示板 > shijiban\ ;
+鉄工所 > tekkoujo\ ;
+経営難 > keieinan\ ;
+陰陽師 > on''youji\ ;
+換気扇 > kankisen\ ;
+非合法 > higouhou\ ;
+飛行艇 > hikoutei\ ;
+飛行船 > hikousen\ ;
+経営陣 > keieijin\ ;
+御来光 > goraikou\ ;
+不断草 > fudansou\ ;
+栄養剤 > eiyouzai\ ;
+連鎖店 > rensaten\ ;
+兵法家 > heihouka\ ;
+頻度数 > hindosuu\ ;
+資本家 > shihonka\ ;
+最右翼 > saiuyoku\ ;
+栄養分 > eiyoubun\ ;
+可処分 > kashobun\ ;
+蒙古斑 > moukohan\ ;
+寒稽古 > kangeiko\ ;
+第三紀 > daisanki\ ;
+砂風呂 > sunaburo\ ;
+運転士 > untenshi\ ;
+第一線 > daiissen\ ;
+邪魔物 > jamamono\ ;
+銀行家 > ginkouka\ ;
+三仙叉 > sansensa\ ;
+再工事 > saikouji\ ;
+裏日本 > uranihon\ ;
+被傭者 > hiyousha\ ;
+軽水炉 > keisuiro\ ;
+自由港 > jiyuukou\ ;
+御曹子 > onzoushi\ ;
+防水扉 > bousuihi\ ;
+居心地 > igokochi\ ;
+地下道 > chikadou\ ;
+無駄花 > mudabana\ ;
+与太者 > yotamono\ ;
+無定見 > muteiken\ ;
+美容師 > biyoushi\ ;
+発火点 > hakkaten\ ;
+現代化 > gendaika\ ;
+福井県 > fukuiken\ ;
+不敬虔 > fukeiken\ ;
+丁子油 > choujiyu\ ;
+乾燥季 > kansouki\ ;
+断断乎 > dandanko\ ;
+財務官 > zaimukan\ ;
+料理屋 > ryouriya\ ;
+停車場 > teishaba\ ;
+感光度 > kankoudo\ ;
+無能者 > munousha\ ;
+交叉点 > kousaten\ ;
+氷河期 > hyougaki\ ;
+低電位 > teiden''i\ ;
+出世魚 > shusseuo\ ;
+運転台 > untendai\ ;
+野心家 > yashinka\ ;
+自由権 > jiyuuken\ ;
+防水布 > bousuifu\ ;
+再臨派 > sairinha\ ;
+名場面 > meibamen\ ;
+筆記体 > hikkitai\ ;
+弦楽器 > gengakki\ ;
+滞在費 > taizaihi\ ;
+規定値 > kiteichi\ ;
+一体感 > ittaikan\ ;
+赤砂糖 > akazatou\ ;
+牛小屋 > ushigoya\ ;
+廉価品 > renkahin\ ;
+民需品 > minjuhin\ ;
+真人間 > maningen\ ;
+金盞花 > kinsenka\ ;
+取沙汰 > torizata\ ;
+銀行員 > ginkouin\ ;
+層位学 > souigaku\ ;
+透視図 > toushizu\ ;
+名義人 > meiginin\ ;
+給油所 > kyuuyujo\ ;
+自走砲 > jisouhou\ ;
+寄稿者 > kikousha\ ;
+抒情詩 > jojoushi\ ;
+円刃刀 > enjintou\ ;
+乾燥器 > kansouki\ ;
+三七日 > minanoka\ ;
+寺小屋 > terakoya\ ;
+御曹司 > onzoushi\ ;
+田雲雀 > tahibari\ ;
+温湿布 > onshippu\ ;
+御面相 > gomensou\ ;
+上景気 > joukeiki\ ;
+育英会 > ikueikai\ ;
+乗馬隊 > joubatai\ ;
+地下街 > chikagai\ ;
+青懸巣 > aokakesu\ ;
+不敬罪 > fukeizai\ ;
+原子価 > genshika\ ;
+総武線 > soubusen\ ;
+不縹緻 > bukiryou\ ;
+解像度 > kaizoudo\ ;
+控訴状 > kousojou\ ;
+再検査 > saikensa\ ;
+複座機 > fukuzaki\ ;
+批評家 > hihyouka\ ;
+御中元 > ochuugen\ ;
+人真似 > hitomane\ ;
+的地位 > tekichii\ ;
+換気口 > kankikou\ ;
+調査員 > chousain\ ;
+世話役 > sewayaku\ ;
+悪知恵 > warudjie\ ;
+短期間 > tankikan\ ;
+御主人 > goshujin\ ;
+同時性 > doujisei\ ;
+黄変米 > ouhenmai\ ;
+余所者 > yosomono\ ;
+滋養分 > jiyoubun\ ;
+棚牡丹 > tanabota\ ;
+銘酒屋 > meishuya\ ;
+塩類泉 > enruisen\ ;
+保菌者 > hokinsha\ ;
+防砂林 > bousarin\ ;
+閉世界 > heisekai\ ;
+地下茎 > chikakei\ ;
+多辺形 > tahenkei\ ;
+不明朗 > fumeirou\ ;
+泥火山 > deikazan\ ;
+京都府 > kyoutofu\ ;
+令夫人 > reifujin\ ;
+罷免権 > himenken\ ;
+丁字形 > teijikei\ ;
+候補者 > kouhosha\ ;
+絵画館 > kaigakan\ ;
+国営化 > kokueika\ ;
+物故者 > bukkosha\ ;
+前相撲 > maezumou\ ;
+研米機 > kenmaiki\ ;
+暗黒期 > ankokuki\ ;
+現時点 > genjiten\ ;
+隣保館 > rinpokan\ ;
+焼夷弾 > shouidan\ ;
+丁字帯 > teijitai\ ;
+加配米 > kahaimai\ ;
+高精度 > kouseido\ ;
+陰関数 > inkansuu\ ;
+水泳帽 > suieibou\ ;
+貸費生 > taihisei\ ;
+増税案 > zouzeian\ ;
+餓鬼共 > gakidomo\ ;
+許可制 > kyokasei\ ;
+女性像 > joseizou\ ;
+火星年 > kaseinen\ ;
+亜硫酸 > aryuusan\ ;
+再軍備 > saigunbi\ ;
+板屋貝 > itayagai\ ;
+斡旋案 > assen''an\ ;
+花崗岩 > kakougan\ ;
+未完成 > mikansei\ ;
+無用心 > buyoujin\ ;
+成文化 > seibunka\ ;
+粗悪品 > soakuhin\ ;
+控訴権 > kousoken\ ;
+調理場 > chouriba\ ;
+地下線 > chikasen\ ;
+亜硝酸 > ashousan\ ;
+定期戦 > teikisen\ ;
+体系化 > taikeika\ ;
+経営者 > keieisha\ ;
+被写体 > hishatai\ ;
+分娩期 > bunbenki\ ;
+後仕舞 > atojimai\ ;
+裏面史 > rimenshi\ ;
+見世物 > misemono\ ;
+被用者 > hiyousha\ ;
+語彙力 > goiryoku\ ;
+魔法瓶 > mahoubin\ ;
+分娩時 > bunbenji\ ;
+上下動 > jougedou\ ;
+平面図 > heimenzu\ ;
+耐火性 > taikasei\ ;
+再定義 > saiteigi\ ;
+電気工 > denkikou\ ;
+反古籠 > hogukago\ ;
+御降誕 > gokoutan\ ;
+明文化 > meibunka\ ;
+腹具合 > haraguai\ ;
+選挙日 > senkyobi\ ;
+輸精管 > yuseikan\ ;
+小売店 > kouriten\ ;
+宇宙論 > uchuuron\ ;
+鑑定家 > kanteika\ ;
+固溶体 > koyoutai\ ;
+案内所 > an''naijo\ ;
+自信家 > jishinka\ ;
+亜鉛末 > aenmatsu\ ;
+導電度 > doudendo\ ;
+県知事 > kenchiji\ ;
+宇宙観 > uchuukan\ ;
+電動機 > dendouki\ ;
+一丁目 > itchoume\ ;
+伊達衆 > dateshuu\ ;
+腋窩腺 > ekikasen\ ;
+不文法 > fubunpou\ ;
+一貫性 > ikkansei\ ;
+口内炎 > kounaien\ ;
+過不足 > kafusoku\ ;
+愛用者 > aiyousha\ ;
+公民科 > kouminka\ ;
+出格子 > degoushi\ ;
+今世紀 > konseiki\ ;
+未婚者 > mikonsha\ ;
+候補生 > kouhosei\ ;
+東南亜 > tounan''a\ ;
+供養塔 > kuyoutou\ ;
+健胃剤 > ken''izai\ ;
+修験者 > shugenja\ ;
+柔道着 > juudougi\ ;
+微系数 > bikeisuu\ ;
+仕置場 > shiokiba\ ;
+平方和 > heihouwa\ ;
+伴奏部 > bansoubu\ ;
+古写本 > koshahon\ ;
+出来物 > dekimono\ ;
+土饅頭 > domanjuu\ ;
+世話人 > sewabito\ ;
+美顔水 > bigansui\ ;
+自由刑 > jiyuukei\ ;
+塩風呂 > shioburo\ ;
+充電器 > juudenki\ ;
+被験者 > hikensha\ ;
+小熊座 > kogumaza\ ;
+手信語 > teshingo\ ;
+赤毛布 > akagetto\ ;
+水彩画 > suisaiga\ ;
+一人寝 > hitorine\ ;
+青味泥 > aomidoro\ ;
+自由党 > jiyuutou\ ;
+芙蓉峰 > fuyouhou\ ;
+落花生 > rakkasei\ ;
+山間部 > sankanbu\ ;
+同時代 > doujidai\ ;
+無宗派 > mushuuha\ ;
+軍政府 > gunseifu\ ;
+婦人会 > fujinkai\ ;
+寺子屋 > terakoya\ ;
+原繊維 > gensen''i\ ;
+継電気 > keidenki\ ;
+右中間 > uchuukan\ ;
+不文明 > fubunmei\ ;
+平土間 > hiradoma\ ;
+次男坊 > jinanbou\ ;
+膀胱炎 > boukouen\ ;
+有効打 > yuukouda\ ;
+雨量計 > uryoukei\ ;
+宇宙船 > uchuusen\ ;
+減衰器 > gensuiki\ ;
+繰糸機 > soushiki\ ;
+多芸性 > tageisei\ ;
+赤切符 > akagippu\ ;
+火星人 > kaseijin\ ;
+日航機 > nikkouki\ ;
+今世界 > konsekai\ ;
+軍需品 > gunjuhin\ ;
+水蒸気 > suijouki\ ;
+単漢字 > tankanji\ ;
+十文字 > juumonji\ ;
+守備兵 > shubihei\ ;
+暗号文 > angoubun\ ;
+高等科 > koutouka\ ;
+添乗員 > tenjouin\ ;
+案内図 > an''naizu\ ;
+合言葉 > aikotoba\ ;
+定期券 > teikiken\ ;
+予算案 > yosan''an\ ;
+多様性 > tayousei\ ;
+名文家 > meibunka\ ;
+自賠法 > jibaihou\ ;
+出不精 > debushou\ ;
+安山岩 > anzangan\ ;
+老大家 > routaika\ ;
+氏素性 > ujisujou\ ;
+上天気 > joutenki\ ;
+第一声 > daiissei\ ;
+導火線 > doukasen\ ;
+依頼心 > iraishin\ ;
+宇宙線 > uchuusen\ ;
+負債者 > fusaisha\ ;
+後頭部 > koutoubu\ ;
+皮膚病 > hifubyou\ ;
+老夫婦 > roufuufu\ ;
+地下水 > chikasui\ ;
+電気代 > denkidai\ ;
+定義域 > teigiiki\ ;
+放火罪 > houkazai\ ;
+雨合羽 > amagappa\ ;
+受刑者 > jukeisha\ ;
+非公開 > hikoukai\ ;
+普請場 > fushinba\ ;
+多島海 > tatoukai\ ;
+労働歌 > roudouka\ ;
+寄港地 > kikouchi\ ;
+定期便 > teikibin\ ;
+未来形 > miraikei\ ;
+飛行士 > hikoushi\ ;
+妊産婦 > ninsanpu\ ;
+短時間 > tanjikan\ ;
+偏差値 > hensachi\ ;
+下降線 > kakousen\ ;
+洋菓子 > yougashi\ ;
+断裁機 > dansaiki\ ;
+飛行場 > hikoujou\ ;
+工具入 > kouguire\ ;
+体温計 > taionkei\ ;
+発行日 > hakkoubi\ ;
+拷問具 > goumongu\ ;
+除外例 > jogairei\ ;
+寿老人 > juroujin\ ;
+公取委 > koutorii\ ;
+院外団 > ingaidan\ ;
+不変性 > fuhensei\ ;
+多産系 > tasankei\ ;
+小規模 > shoukibo\ ;
+合議制 > gougisei\ ;
+維管束 > ikansoku\ ;
+高温計 > kouonkei\ ;
+初等科 > shotouka\ ;
+記憶法 > kiokuhou\ ;
+今朝方 > kesagata\ ;
+選挙区 > senkyoku\ ;
+破砕性 > hasaisei\ ;
+鹿野苑 > rokuyaon\ ;
+舞台裏 > butaiura\ ;
+経営権 > keieiken\ ;
+不燃性 > funensei\ ;
+神祇官 > jingikan\ ;
+氏素姓 > ujisujou\ ;
+被害者 > higaisha\ ;
+水酸基 > suisanki\ ;
+天体図 > tentaizu\ ;
+近距離 > kinkyori\ ;
+準社員 > junshain\ ;
+人件費 > jinkenhi\ ;
+常得意 > joutokui\ ;
+皮脂腺 > hishisen\ ;
+無定形 > muteikei\ ;
+可用性 > kayousei\ ;
+人生派 > jinseiha\ ;
+発行所 > hakkoujo\ ;
+摩天楼 > matenrou\ ;
+小間物 > komamono\ ;
+御大層 > gotaisou\ ;
+警備隊 > keibitai\ ;
+割烹着 > kappougi\ ;
+協和音 > kyouwaon\ ;
+受動態 > judoutai\ ;
+総動員 > soudouin\ ;
+花林糖 > karintou\ ;
+正社員 > seishain\ ;
+等温線 > touonsen\ ;
+御霊屋 > mitamaya\ ;
+一夕話 > issekiwa\ ;
+小為替 > kogawase\ ;
+第一位 > daiichii\ ;
+税関吏 > zeikanri\ ;
+養育費 > youikuhi\ ;
+流鏑馬 > yabusame\ ;
+控訴人 > kousonin\ ;
+茶話会 > chawakai\ ;
+喫緊事 > kikkinji\ ;
+吸金剛 > kokongou\ ;
+老練家 > rourenka\ ;
+不調和 > fuchouwa\ ;
+気管支 > kikanshi\ ;
+水酸化 > suisanka\ ;
+大人気 > daininki\ ;
+青銅器 > seidouki\ ;
+飛行便 > hikoubin\ ;
+可能法 > kanouhou\ ;
+真珠母 > shinjubo\ ;
+専攻科 > senkouka\ ;
+化膿菌 > kanoukin\ ;
+非常線 > hijousen\ ;
+精一杯 > seiippai\ ;
+遇不遇 > guufuguu\ ;
+未耕地 > mikouchi\ ;
+門下生 > monkasei\ ;
+一風呂 > hitofuro\ ;
+培養基 > baiyouki\ ;
+軍隊化 > guntaika\ ;
+演芸会 > engeikai\ ;
+文人画 > bunjinga\ ;
+現時代 > genjidai\ ;
+広範囲 > kouhan''i\ ;
+円屋根 > maruyane\ ;
+培養土 > baiyoudo\ ;
+寒気団 > kankidan\ ;
+粗利益 > ararieki\ ;
+予算外 > yosangai\ ;
+非民主 > himinshu\ ;
+受益者 > juekisha\ ;
+安定板 > anteiban\ ;
+記念館 > kinenkan\ ;
+大宇宙 > daiuchuu\ ;
+亜急性 > akyuusei\ ;
+計算簿 > keisanbo\ ;
+静止画 > seishiga\ ;
+不整合 > fuseigou\ ;
+二重顎 > nijuuago\ ;
+制御機 > seigyoki\ ;
+二等分 > nitoubun\ ;
+平炉法 > heirohou\ ;
+五稜堡 > goryouho\ ;
+未来像 > miraizou\ ;
+足温器 > sokuonki\ ;
+二等兵 > nitouhei\ ;
+貴族院 > kizokuin\ ;
+継電器 > keidenki\ ;
+記号論 > kigouron\ ;
+名詞句 > meishiku\ ;
+伝馬船 > tenmasen\ ;
+銀河系 > gingakei\ ;
+大宮司 > daiguuji\ ;
+流行目 > hayarime\ ;
+遠視眼 > enshigan\ ;
+卵巣炎 > ransouen\ ;
+未亡人 > miboujin\ ;
+不経済 > fukeizai\ ;
+引用符 > in''youfu\ ;
+柔道家 > juudouka\ ;
+不均衡 > fukinkou\ ;
+対話者 > taiwasha\ ;
+訟務部 > shoumubu\ ;
+御霊前 > goreizen\ ;
+兌換券 > dakanken\ ;
+不摂生 > fusessei\ ;
+日本風 > nihonfuu\ ;
+候補地 > kouhochi\ ;
+砂防林 > sabourin\ ;
+下士官 > kashikan\ ;
+市議会 > shigikai\ ;
+一時期 > ichijiki\ ;
+自負心 > jifushin\ ;
+相合傘 > aiaigasa\ ;
+謙譲語 > kenjougo\ ;
+扶持米 > fuchimai\ ;
+再起動 > saikidou\ ;
+獣医学 > juuigaku\ ;
+非常用 > hijouyou\ ;
+破廉恥 > harenchi\ ;
+出放題 > dehoudai\ ;
+安定感 > anteikan\ ;
+養老院 > yourouin\ ;
+野良猫 > noraneko\ ;
+未丁年 > miteinen\ ;
+安定性 > anteisei\ ;
+決算期 > kessanki\ ;
+自乗根 > jijoukon\ ;
+全荷重 > zenkajuu\ ;
+奥御殿 > okugoten\ ;
+製造所 > seizoujo\ ;
+快男児 > kaidanji\ ;
+旺文社 > oubunsha\ ;
+超音波 > chouonpa\ ;
+守護霊 > shugorei\ ;
+木曾川 > kisogawa\ ;
+弱音器 > jakuonki\ ;
+決算日 > kessanbi\ ;
+自主権 > jishuken\ ;
+能弁家 > noubenka\ ;
+可能性 > kanousei\ ;
+大旦那 > oodan''na\ ;
+印度教 > indokyou\ ;
+無人島 > mujintou\ ;
+真似事 > manegoto\ ;
+謄写器 > toushaki\ ;
+帰還者 > kikansha\ ;
+助産院 > josan''in\ ;
+女店員 > joten''in\ ;
+蛸部屋 > takobeya\ ;
+予算上 > yosanjou\ ;
+定時制 > teijisei\ ;
+正弦波 > seigenha\ ;
+余所事 > yosogoto\ ;
+馬鹿者 > bakamono\ ;
+儀礼兵 > gireihei\ ;
+日本酒 > nihonshu\ ;
+早産児 > souzanji\ ;
+採綿器 > saimenki\ ;
+英連邦 > eirenpou\ ;
+早生児 > souseiji\ ;
+加盟者 > kameisha\ ;
+降雨量 > kouuryou\ ;
+警備艇 > keibitei\ ;
+出来事 > dekigoto\ ;
+価電子 > kadenshi\ ;
+古生界 > koseikai\ ;
+制動機 > seidouki\ ;
+金魚屋 > kingyoya\ ;
+木天蓼 > matatabi\ ;
+半裸体 > hanratai\ ;
+日本軍 > nihongun\ ;
+日本車 > nihonsha\ ;
+修羅道 > shuradou\ ;
+商行為 > shoukoui\ ;
+条里制 > jourisei\ ;
+投影法 > toueihou\ ;
+有尾類 > yuubirui\ ;
+欧羅巴 > youroppa\ ;
+世間体 > sekentei\ ;
+伊達巻 > datemaki\ ;
+水利権 > suiriken\ ;
+史学家 > shigakka\ ;
+納付金 > noufukin\ ;
+蕎麦殻 > sobagara\ ;
+方向舵 > houkouda\ ;
+夏至線 > geshisen\ ;
+不均等 > fukintou\ ;
+宇宙帽 > uchuubou\ ;
+無頼漢 > buraikan\ ;
+濃度計 > noudokei\ ;
+一昨年 > ototoshi\ ;
+未経験 > mikeiken\ ;
+朝寝坊 > asanebou\ ;
+過大視 > kadaishi\ ;
+翡翠色 > hisuiiro\ ;
+土根性 > dokonjou\ ;
+総模様 > soumoyou\ ;
+計算機 > keisanki\ ;
+弁当屋 > bentouya\ ;
+代打者 > daidasha\ ;
+風媒花 > fuubaika\ ;
+無試験 > mushiken\ ;
+醸造酢 > jouzousu\ ;
+反動派 > handouha\ ;
+経済家 > keizaika\ ;
+淋巴腺 > rinpasen\ ;
+自主性 > jishusei\ ;
+越天楽 > etenraku\ ;
+権利金 > kenrikin\ ;
+慢性化 > manseika\ ;
+授乳期 > junyuuki\ ;
+専門語 > senmongo\ ;
+前舞台 > maebutai\ ;
+選科生 > senkasei\ ;
+季刊誌 > kikanshi\ ;
+実際家 > jissaika\ ;
+一昼夜 > itchuuya\ ;
+衆議院 > shuugiin\ ;
+日本製 > nihonsei\ ;
+印判師 > inbanshi\ ;
+小火器 > shoukaki\ ;
+無風帯 > mufuutai\ ;
+制御器 > seigyoki\ ;
+走査線 > sousasen\ ;
+空手家 > karateka\ ;
+不器量 > bukiryou\ ;
+天井値 > tenjoune\ ;
+計算木 > keisangi\ ;
+採炭所 > saitanjo\ ;
+弁務官 > benmukan\ ;
+受益権 > juekiken\ ;
+加工紙 > kakoushi\ ;
+教務課 > kyoumuka\ ;
+連動機 > rendouki\ ;
+交差点 > kousaten\ ;
+議事録 > gijiroku\ ;
+再来年 > sarainen\ ;
+一昨夜 > issakuya\ ;
+宇宙塵 > uchuujin\ ;
+水道屋 > suidouya\ ;
+重軌条 > juukijou\ ;
+違約金 > iyakukin\ ;
+鸚鵡病 > oumubyou\ ;
+単性花 > tanseika\ ;
+注意点 > chuuiten\ ;
+常備金 > joubikin\ ;
+転移性 > ten''isei\ ;
+活火山 > kakkazan\ ;
+加工税 > kakouzei\ ;
+美粧院 > bishouin\ ;
+茶箪笥 > chadansu\ ;
+噴火山 > funkazan\ ;
+地方時 > chihouji\ ;
+悪餓鬼 > warugaki\ ;
+博愛家 > hakuaika\ ;
+情報部 > jouhoubu\ ;
+日本茶 > nihoncha\ ;
+光行差 > koukousa\ ;
+外耳道 > gaijidou\ ;
+地震波 > jishinha\ ;
+三塁打 > sanruida\ ;
+勾引状 > kouinjou\ ;
+地雷源 > jiraigen\ ;
+電機子 > denkishi\ ;
+常備軍 > joubigun\ ;
+小型化 > kogataka\ ;
+刷毛先 > hakesaki\ ;
+青内障 > aosokohi\ ;
+評議員 > hyougiin\ ;
+公分母 > koubunbo\ ;
+可聴度 > kachoudo\ ;
+無条件 > mujouken\ ;
+矢飛白 > yagasuri\ ;
+手腕家 > shuwanka\ ;
+検事正 > kenjisei\ ;
+偽善者 > gizensha\ ;
+伝導度 > dendoudo\ ;
+公募債 > koubosai\ ;
+機関銃 > kikanjuu\ ;
+武勇伝 > buyuuden\ ;
+制御下 > seigyoka\ ;
+蓮華草 > rengesou\ ;
+報知機 > houchiki\ ;
+夏至点 > geshiten\ ;
+武芸者 > bugeisha\ ;
+走馬灯 > soumatou\ ;
+歯軌条 > shikijou\ ;
+二重税 > nijuuzei\ ;
+正比例 > seihirei\ ;
+預金者 > yokinsha\ ;
+加速度 > kasokudo\ ;
+正当化 > seitouka\ ;
+手不足 > tebusoku\ ;
+側火山 > sokkazan\ ;
+過不及 > kafukyuu\ ;
+殺鼠剤 > sassozai\ ;
+記念祭 > kinensai\ ;
+不手際 > futegiwa\ ;
+不等辺 > futouhen\ ;
+被害地 > higaichi\ ;
+機関車 > kikansha\ ;
+日本紙 > nihonshi\ ;
+宇宙人 > uchuujin\ ;
+潜水夫 > sensuifu\ ;
+御陀仏 > odabutsu\ ;
+夜学校 > yagakkou\ ;
+再上映 > saijouei\ ;
+外来語 > gairaigo\ ;
+難破船 > nanpasen\ ;
+駒下駄 > komageta\ ;
+注意書 > chuuisho\ ;
+五重奏 > gojuusou\ ;
+漫談家 > mandanka\ ;
+倍精度 > baiseido\ ;
+納付者 > noufusha\ ;
+噴火口 > funkakou\ ;
+介護人 > kaigonin\ ;
+道議会 > dougikai\ ;
+有機体 > yuukitai\ ;
+死産児 > shizanji\ ;
+不規則 > fukisoku\ ;
+潜水器 > sensuiki\ ;
+整備工 > seibikou\ ;
+荒武者 > aramusha\ ;
+遠地点 > enchiten\ ;
+外字紙 > gaijishi\ ;
+今時分 > imajibun\ ;
+反動家 > handouka\ ;
+機関誌 > kikanshi\ ;
+大晦日 > oomisoka\ ;
+不精巧 > fuseikou\ ;
+大丈夫 > daijoubu\ ;
+保全会 > hozenkai\ ;
+同素体 > dousotai\ ;
+再交付 > saikoufu\ ;
+天日法 > tenpihou\ ;
+守護神 > shugojin\ ;
+組合費 > kumiaihi\ ;
+荒蕪地 > koubuchi\ ;
+愛媛県 > ehimeken\ ;
+計算器 > keisanki\ ;
+未青年 > miseinen\ ;
+人事欄 > jinjiran\ ;
+長音符 > chouonpu\ ;
+不均斉 > fukinsei\ ;
+準備金 > junbikin\ ;
+淋巴液 > rinpaeki\ ;
+事務長 > jimuchou\ ;
+修理屋 > shuuriya\ ;
+懐疑論 > kaigiron\ ;
+喉頭炎 > koutouen\ ;
+疎外感 > sogaikan\ ;
+加速器 > kasokuki\ ;
+加工歯 > kakoushi\ ;
+庭下駄 > niwageta\ ;
+非常勤 > hijoukin\ ;
+野球部 > yakyuubu\ ;
+前駆戦 > zenkusen\ ;
+指導部 > shidoubu\ ;
+財産家 > zaisanka\ ;
+居催促 > izaisoku\ ;
+当歳馬 > tousaiba\ ;
+仁王力 > niouriki\ ;
+多肉果 > tanikuka\ ;
+最盛期 > saiseiki\ ;
+反比例 > hanpirei\ ;
+女子高 > joshikou\ ;
+開回路 > kaikairo\ ;
+審査員 > shinsain\ ;
+麝香水 > jakousui\ ;
+日本犬 > nihonken\ ;
+事務量 > jimuryou\ ;
+引用句 > in''youku\ ;
+科学院 > kagakuin\ ;
+前頭部 > zentoubu\ ;
+十四日 > juuyokka\ ;
+連歌師 > rengashi\ ;
+支援者 > shiensha\ ;
+梶木座 > kajikiza\ ;
+地方区 > chihouku\ ;
+山火事 > yamakaji\ ;
+才未満 > saimiman\ ;
+人類猿 > jinruien\ ;
+議定書 > giteisho\ ;
+茶坊主 > chabouzu\ ;
+加盟店 > kameiten\ ;
+緩下剤 > kangezai\ ;
+萌黄色 > moegiiro\ ;
+空気銃 > kuukijuu\ ;
+鹹水湖 > kansuiko\ ;
+海老腰 > ebigoshi\ ;
+生計費 > seikeihi\ ;
+参加者 > sankasha\ ;
+日本海 > nihonkai\ ;
+被乗数 > hijousuu\ ;
+手風琴 > tefuukin\ ;
+注意報 > chuuihou\ ;
+風景画 > fuukeiga\ ;
+電子音 > denshion\ ;
+転化糖 > tenkatou\ ;
+閉経期 > heikeiki\ ;
+出無精 > debushou\ ;
+互助的 > gojoteki\ ;
+乾所帯 > kanjotai\ ;
+大音声 > daionjou\ ;
+破産者 > hasansha\ ;
+閉回路 > heikairo\ ;
+機関紙 > kikanshi\ ;
+胡麻擂 > gomasuri\ ;
+機雷原 > kiraigen\ ;
+多孔性 > takousei\ ;
+合成音 > gouseion\ ;
+破魔弓 > hamayumi\ ;
+造影剤 > zoueizai\ ;
+倦怠期 > kentaiki\ ;
+未納者 > minousha\ ;
+二重星 > nijuusei\ ;
+繁体字 > hantaiji\ ;
+消音器 > shouonki\ ;
+多人数 > taninzuu\ ;
+赴任地 > funinchi\ ;
+古生代 > koseidai\ ;
+芝居気 > shibaige\ ;
+横座標 > ouzahyou\ ;
+自警団 > jikeidan\ ;
+暫定案 > zanteian\ ;
+魚市場 > uoichiba\ ;
+駅馬車 > ekibasha\ ;
+対話体 > taiwatai\ ;
+清掃夫 > seisoufu\ ;
+高感度 > koukando\ ;
+紀元前 > kigenzen\ ;
+磨研紙 > makenshi\ ;
+火蜥蜴 > hitokage\ ;
+既婚者 > kikonsha\ ;
+搬送波 > hansouha\ ;
+疎開者 > sokaisha\ ;
+思想家 > shisouka\ ;
+岩田帯 > iwataobi\ ;
+開閉機 > kaiheiki\ ;
+序破急 > johakyuu\ ;
+足忠実 > ashimame\ ;
+半減期 > hangenki\ ;
+自然美 > shizenbi\ ;
+前世紀 > zenseiki\ ;
+研磨紙 > kenmashi\ ;
+青写真 > aojashin\ ;
+祈祷書 > kitousho\ ;
+帰還兵 > kikanhei\ ;
+閉経後 > heikeigo\ ;
+多方面 > tahoumen\ ;
+燕尾服 > enbifuku\ ;
+禀議書 > ringisho\ ;
+父兄会 > fukeikai\ ;
+高麗楽 > komagaku\ ;
+全盛期 > zenseiki\ ;
+予想外 > yosougai\ ;
+扁桃油 > hentouyu\ ;
+青年期 > seinenki\ ;
+均等化 > kintouka\ ;
+受験者 > jukensha\ ;
+時代相 > jidaisou\ ;
+増加分 > zoukabun\ ;
+二連銃 > nirenjuu\ ;
+一回転 > ikkaiten\ ;
+主脳部 > shunoubu\ ;
+納付書 > noufusho\ ;
+単弁花 > tanbenka\ ;
+流浪者 > rurousha\ ;
+荒利益 > ararieki\ ;
+菓子盆 > kashibon\ ;
+公用語 > kouyougo\ ;
+太陽炉 > taiyouro\ ;
+受身形 > ukemikei\ ;
+民営化 > min''eika\ ;
+人望家 > jinbouka\ ;
+総二階 > sounikai\ ;
+解雇者 > kaikosha\ ;
+漢時代 > kanjidai\ ;
+内外野 > naigaiya\ ;
+片仮名 > katakana\ ;
+脱衣所 > datsuijo\ ;
+不錆鋼 > fuseikou\ ;
+贈与者 > zouyosha\ ;
+保守系 > hoshukei\ ;
+海馬回 > kaibakai\ ;
+自堕落 > jidaraku\ ;
+本塁打 > honruida\ ;
+愛餐会 > aisankai\ ;
+対抗馬 > taikouba\ ;
+仮名文 > kanabumi\ ;
+胡麻塩 > gomashio\ ;
+加工品 > kakouhin\ ;
+権利書 > kenrisho\ ;
+廃要素 > haiyouso\ ;
+空想家 > kuusouka\ ;
+既定値 > kiteichi\ ;
+販売部 > hanbaibu\ ;
+眼鏡屋 > meganeya\ ;
+前世界 > zensekai\ ;
+本場所 > honbasho\ ;
+虚無党 > kyomutou\ ;
+人類愛 > jinruiai\ ;
+二重奏 > nijuusou\ ;
+愛好者 > aikousha\ ;
+合成語 > gouseigo\ ;
+石火矢 > ishibiya\ ;
+出納簿 > suitoubo\ ;
+軍管区 > gunkanku\ ;
+秋田県 > akitaken\ ;
+儒学界 > jugakkai\ ;
+下手糞 > hetakuso\ ;
+未墾地 > mikonchi\ ;
+大多数 > daitasuu\ ;
+子午線 > shigosen\ ;
+正常化 > seijouka\ ;
+発酵素 > hakkouso\ ;
+距離計 > kyorikei\ ;
+船小屋 > funagoya\ ;
+醸造所 > jouzoujo\ ;
+大納言 > dainagon\ ;
+天文家 > tenmonka\ ;
+模造者 > mozousha\ ;
+寝不足 > nebusoku\ ;
+専門家 > senmonka\ ;
+未然形 > mizenkei\ ;
+剪裁機 > sensaiki\ ;
+購買部 > koubaibu\ ;
+慈善会 > jizenkai\ ;
+悪趣味 > akushumi\ ;
+贈与税 > zouyozei\ ;
+保存系 > hozonkei\ ;
+気動車 > kidousha\ ;
+永住者 > eijuusha\ ;
+未熟児 > mijukuji\ ;
+記念品 > kinenhin\ ;
+破瓜病 > hakabyou\ ;
+破産法 > hasanhou\ ;
+停電日 > teidenbi\ ;
+受験生 > jukensei\ ;
+陸蒸気 > okajouki\ ;
+実行時 > jikkouji\ ;
+模造紙 > mozoushi\ ;
+二原子 > nigenshi\ ;
+他所者 > yosomono\ ;
+秋田犬 > akitaken\ ;
+万国旗 > bankokki\ ;
+事務的 > jimuteki\ ;
+推移的 > suiiteki\ ;
+空気穴 > kuukiana\ ;
+受容者 > juyousha\ ;
+糠味噌 > nukamiso\ ;
+方形波 > houkeiha\ ;
+戦前派 > senzenha\ ;
+処理場 > shorijou\ ;
+二弦琴 > nigenkin\ ;
+酒造家 > shuzouka\ ;
+掲示板 > keijiban\ ;
+内風呂 > uchiburo\ ;
+中労委 > chuuroui\ ;
+愛猫家 > aibyouka\ ;
+三回忌 > sankaiki\ ;
+総仕舞 > soujimai\ ;
+醸造家 > jouzouka\ ;
+交付金 > koufukin\ ;
+扇風機 > senpuuki\ ;
+全候補 > zenkouho\ ;
+理想論 > risouron\ ;
+日本史 > nihonshi\ ;
+漢数字 > kansuuji\ ;
+輝煌帝 > kikoutei\ ;
+支持者 > shijisha\ ;
+大文字 > daimonji\ ;
+子午環 > shigokan\ ;
+艶福家 > enpukuka\ ;
+開閉器 > kaiheiki\ ;
+専門医 > senmon''i\ ;
+更年期 > kounenki\ ;
+専門化 > senmonka\ ;
+日本刀 > nihontou\ ;
+不行儀 > fugyougi\ ;
+帰巣性 > kisousei\ ;
+下手物 > getemono\ ;
+提案者 > teiansha\ ;
+受信機 > jushinki\ ;
+揚子江 > yousukou\ ;
+経常費 > keijouhi\ ;
+海王星 > kaiousei\ ;
+幼稚園 > youchien\ ;
+企画課 > kikakuka\ ;
+月桂樹 > gekkeiju\ ;
+未記入 > mikinyuu\ ;
+研磨材 > kenmazai\ ;
+二年草 > ninensou\ ;
+義勇軍 > giyuugun\ ;
+文語文 > bungobun\ ;
+誕生日 > tanjoubi\ ;
+金時計 > kindokei\ ;
+空洞化 > kuudouka\ ;
+糞味噌 > kusomiso\ ;
+日本人 > nihonjin\ ;
+性遊戯 > seiyuugi\ ;
+次点者 > jitensha\ ;
+防腐剤 > boufuzai\ ;
+日本中 > nihonjuu\ ;
+腕相撲 > udezumou\ ;
+不節制 > fusessei\ ;
+地域差 > chiikisa\ ;
+保護鳥 > hogochou\ ;
+小手先 > kotesaki\ ;
+無降水 > mukousui\ ;
+鼻呼吸 > bikokyuu\ ;
+重騎兵 > juukihei\ ;
+古代史 > kodaishi\ ;
+能舞台 > noubutai\ ;
+競馬馬 > keibauma\ ;
+免租地 > mensochi\ ;
+二次的 > nijiteki\ ;
+演奏者 > ensousha\ ;
+具体性 > gutaisei\ ;
+一等車 > ittousha\ ;
+不品行 > fuhinkou\ ;
+特科兵 > tokkahei\ ;
+脂肪油 > shibouyu\ ;
+左大臣 > sadaijin\ ;
+金字塔 > kinjitou\ ;
+高野山 > kouyasan\ ;
+大熊座 > oogumaza\ ;
+冒険家 > boukenka\ ;
+塩濃度 > en''noudo\ ;
+日乃丸 > hinomaru\ ;
+何処迄 > dokomade\ ;
+近似値 > kinjichi\ ;
+透磁性 > toujisei\ ;
+保護領 > hogoryou\ ;
+特派員 > tokuhain\ ;
+唾液腺 > daekisen\ ;
+庭木戸 > niwakido\ ;
+後援者 > kouensha\ ;
+黄鉄鉱 > outekkou\ ;
+古代人 > kodaijin\ ;
+事務服 > jimufuku\ ;
+小麦粉 > komugiko\ ;
+不溶性 > fuyousei\ ;
+顧問団 > komondan\ ;
+保有者 > hoyuusha\ ;
+避病院 > hibyouin\ ;
+前景気 > maegeiki\ ;
+機関士 > kikanshi\ ;
+外交員 > gaikouin\ ;
+銅相場 > dousouba\ ;
+傾斜度 > keishado\ ;
+高度計 > koudokei\ ;
+近未来 > kinmirai\ ;
+捕鯨船 > hogeisen\ ;
+加害者 > kagaisha\ ;
+数珠玉 > juzudama\ ;
+手羽先 > tebasaki\ ;
+補助翼 > hojoyoku\ ;
+慈悲心 > jihishin\ ;
+外貨債 > gaikasai\ ;
+情報化 > jouhouka\ ;
+総予算 > souyosan\ ;
+真夜中 > mayonaka\ ;
+下意識 > kaishiki\ ;
+代稽古 > daigeiko\ ;
+永住権 > eijuuken\ ;
+保有米 > hoyuumai\ ;
+自国語 > jikokugo\ ;
+反対語 > hantaigo\ ;
+変異体 > hen''itai\ ;
+利己的 > rikoteki\ ;
+建具屋 > tateguya\ ;
+防寒具 > boukangu\ ;
+女学校 > jogakkou\ ;
+保守性 > hoshusei\ ;
+好景気 > koukeiki\ ;
+交付者 > koufusha\ ;
+可変数 > kahensuu\ ;
+花文字 > hanamoji\ ;
+面会日 > menkaibi\ ;
+煙草屋 > tabakoya\ ;
+雨模様 > amemoyou\ ;
+揺籃期 > youranki\ ;
+突破口 > toppakou\ ;
+近代化 > kindaika\ ;
+点火系 > tenkakei\ ;
+二年生 > ninensei\ ;
+星気体 > seikitai\ ;
+不等号 > fudougou\ ;
+五辺形 > gohenkei\ ;
+二輪車 > nirinsha\ ;
+用箪笥 > youdansu\ ;
+冷蔵庫 > reizouko\ ;
+不所存 > fushozon\ ;
+投光器 > toukouki\ ;
+女子校 > joshikou\ ;
+浜茄子 > hamanasu\ ;
+古書展 > koshoten\ ;
+二十代 > nijuudai\ ;
+市街図 > shigaizu\ ;
+樹枝状 > jushijou\ ;
+序盤戦 > jobansen\ ;
+火成岩 > kaseigan\ ;
+組合員 > kumiaiin\ ;
+亜脱臼 > adakkyuu\ ;
+鬱金色 > ukon''iro\ ;
+鬼武者 > onimusha\ ;
+斜投影 > shatouei\ ;
+滑空機 > kakkuuki\ ;
+軽騎兵 > keikihei\ ;
+二元論 > nigenron\ ;
+手料理 > teryouri\ ;
+単利法 > tanrihou\ ;
+御神輿 > omikoshi\ ;
+先鋭化 > sen''eika\ ;
+撒布剤 > sappuzai\ ;
+呉服屋 > gofukuya\ ;
+受信器 > jushinki\ ;
+溶解炉 > youkairo\ ;
+可変性 > kahensei\ ;
+年齢差 > nenreisa\ ;
+刀圭家 > toukeika\ ;
+鳳仙花 > housenka\ ;
+導波管 > douhakan\ ;
+単比例 > tanpirei\ ;
+捕鯨砲 > hogeihou\ ;
+直足袋 > jikatabi\ ;
+悪太郎 > akutarou\ ;
+有理数 > yuurisuu\ ;
+部分品 > bubunhin\ ;
+可燃性 > kanensei\ ;
+不善感 > fuzenkan\ ;
+洗面所 > senmenjo\ ;
+送油管 > souyukan\ ;
+格子戸 > koushido\ ;
+具体例 > gutairei\ ;
+支持杭 > shijikou\ ;
+無限大 > mugendai\ ;
+精米所 > seimaijo\ ;
+統語論 > tougoron\ ;
+未開墾 > mikaikon\ ;
+作業費 > sagyouhi\ ;
+大阪府 > oosakafu\ ;
+猊美渓 > geibikei\ ;
+打撃王 > dagekiou\ ;
+広葉樹 > kouyouju\ ;
+草創期 > sousouki\ ;
+侍衛長 > jieichou\ ;
+二進木 > nishingi\ ;
+顕在化 > kenzaika\ ;
+再試合 > saishiai\ ;
+伝音器 > den''onki\ ;
+義務的 > gimuteki\ ;
+輸卵管 > yurankan\ ;
+低利金 > teirikin\ ;
+戦利品 > senrihin\ ;
+文語体 > bungotai\ ;
+乾性油 > kanseiyu\ ;
+擂粉木 > surikogi\ ;
+指導員 > shidouin\ ;
+未開地 > mikaichi\ ;
+秘書官 > hishokan\ ;
+武家物 > bukemono\ ;
+整理券 > seiriken\ ;
+育雛器 > ikusuuki\ ;
+圧搾機 > assakuki\ ;
+二分法 > nibunhou\ ;
+混成語 > konseigo\ ;
+珈琲苑 > kouhiien\ ;
+二部作 > nibusaku\ ;
+総会屋 > soukaiya\ ;
+仕手戦 > shitesen\ ;
+好好爺 > koukouya\ ;
+税務署 > zeimusho\ ;
+販売機 > hanbaiki\ ;
+空気孔 > kuukikou\ ;
+疲労感 > hiroukan\ ;
+放水路 > housuiro\ ;
+会議所 > kaigisho\ ;
+形容語 > keiyougo\ ;
+一回戦 > ikkaisen\ ;
+疑問詞 > gimonshi\ ;
+苦労人 > kurounin\ ;
+聖火台 > seikadai\ ;
+水位標 > suiihyou\ ;
+悲観論 > hikanron\ ;
+妄語戒 > mougokai\ ;
+永小作 > eikosaku\ ;
+炭素鋼 > tansokou\ ;
+繊維束 > senisoku\ ;
+解放区 > kaihouku\ ;
+保守党 > hoshutou\ ;
+紅一点 > kouitten\ ;
+企業家 > kigyouka\ ;
+家庭用 > kateiyou\ ;
+虚空蔵 > kokuuzou\ ;
+会計課 > kaikeika\ ;
+勤務者 > kinmusha\ ;
+距離感 > kyorikan\ ;
+不成功 > fuseikou\ ;
+祈年祭 > kinensai\ ;
+看護法 > kangohou\ ;
+催事場 > saijijou\ ;
+鬼兵隊 > kiheitai\ ;
+女子大 > joshidai\ ;
+唯我論 > yuigaron\ ;
+未製品 > miseihin\ ;
+無統制 > mutousei\ ;
+造船所 > zousenjo\ ;
+身支度 > mijitaku\ ;
+金本位 > kinhon''i\ ;
+多面性 > tamensei\ ;
+大型機 > oogataki\ ;
+未開人 > mikaijin\ ;
+藁屋根 > warayane\ ;
+月世界 > gessekai\ ;
+得意顔 > tokuigao\ ;
+手間隙 > temahima\ ;
+空気口 > kuukikou\ ;
+政治犯 > seijihan\ ;
+洗面器 > senmenki\ ;
+人文字 > hitomoji\ ;
+模造品 > mozouhin\ ;
+呼吸器 > kokyuuki\ ;
+土地鑑 > tochikan\ ;
+気送管 > kisoukan\ ;
+低金利 > teikinri\ ;
+帽子屋 > boushiya\ ;
+御成功 > goseikou\ ;
+珊瑚海 > sangokai\ ;
+曳光弾 > eikoudan\ ;
+千里眼 > senrigan\ ;
+落下傘 > rakkasan\ ;
+渡航者 > tokousha\ ;
+下手人 > geshunin\ ;
+処女林 > shojorin\ ;
+事業部 > jigyoubu\ ;
+富山房 > fuzanbou\ ;
+接待費 > settaihi\ ;
+繊維性 > sen''isei\ ;
+手話法 > shuwahou\ ;
+保養地 > hoyouchi\ ;
+利己心 > rikoshin\ ;
+点火栓 > tenkasen\ ;
+鎔鉱炉 > youkouro\ ;
+可換群 > kakangun\ ;
+会議場 > kaigijou\ ;
+人非人 > ninpinin\ ;
+花粉管 > kafunkan\ ;
+過激派 > kagekiha\ ;
+溶解度 > youkaido\ ;
+句読点 > kutouten\ ;
+捜査陣 > sousajin\ ;
+企業化 > kigyouka\ ;
+営利的 > eiriteki\ ;
+被災者 > hisaisha\ ;
+不従順 > fujuujun\ ;
+反射炉 > hansharo\ ;
+佝僂病 > kurubyou\ ;
+都会人 > tokaijin\ ;
+呪禁道 > jukondou\ ;
+古版本 > kohanbon\ ;
+測候所 > sokkoujo\ ;
+派遣隊 > hakentai\ ;
+歓迎宴 > kangeien\ ;
+成功裡 > seikouri\ ;
+家庭欄 > kateiran\ ;
+多変数 > tahensuu\ ;
+男性美 > danseibi\ ;
+高機能 > koukinou\ ;
+人間苦 > ningenku\ ;
+三味線 > shamisen\ ;
+寿喜焼 > sukiyaki\ ;
+同程度 > douteido\ ;
+好塩菌 > kouenkin\ ;
+送気管 > soukikan\ ;
+犠牲者 > giseisha\ ;
+花紋板 > kamonban\ ;
+電子化 > denshika\ ;
+尽未来 > jinmirai\ ;
+句読法 > kutouhou\ ;
+好天気 > koutenki\ ;
+浄化槽 > joukasou\ ;
+有声音 > yuuseion\ ;
+反作用 > hansayou\ ;
+全自動 > zenjidou\ ;
+反対派 > hantaiha\ ;
+処女性 > shojosei\ ;
+手間賃 > temachin\ ;
+一回分 > ikkaibun\ ;
+罹災者 > risaisha\ ;
+貯炭所 > chotanjo\ ;
+有人化 > yuujinka\ ;
+印象派 > inshouha\ ;
+講演者 > kouensha\ ;
+槍騎兵 > soukihei\ ;
+逃避行 > touhikou\ ;
+内火艇 > naikatei\ ;
+圧搾器 > assakuki\ ;
+利権屋 > riken''ya\ ;
+光度計 > koudokei\ ;
+閲兵台 > eppeidai\ ;
+混種語 > konshugo\ ;
+透過性 > toukasei\ ;
+会見記 > kaikenki\ ;
+相似点 > soujiten\ ;
+螺子釘 > nejikugi\ ;
+処女峰 > shojohou\ ;
+看護師 > kangoshi\ ;
+有頂点 > uchouten\ ;
+一等星 > ittousei\ ;
+下水道 > gesuidou\ ;
+非人情 > hininjou\ ;
+主義者 > shugisha\ ;
+派遣軍 > hakengun\ ;
+再提案 > saiteian\ ;
+美意識 > biishiki\ ;
+総本家 > souhonke\ ;
+度外視 > dogaishi\ ;
+遠征隊 > enseitai\ ;
+理想型 > risoukei\ ;
+仮分数 > kabunsuu\ ;
+助数詞 > josuushi\ ;
+精算所 > seisanjo\ ;
+消火器 > shoukaki\ ;
+多面体 > tamentai\ ;
+形骸化 > keigaika\ ;
+欧米人 > oubeijin\ ;
+経師屋 > kyoujiya\ ;
+誤変換 > gohenkan\ ;
+還付金 > kanpukin\ ;
+晩御飯 > bangohan\ ;
+腕自慢 > udejiman\ ;
+浄水器 > jousuiki\ ;
+助教諭 > jokyouyu\ ;
+看護士 > kangoshi\ ;
+永子作 > eikosaku\ ;
+処女地 > shojochi\ ;
+利用者 > riyousha\ ;
+無精卵 > museiran\ ;
+無関係 > mukankei\ ;
+正字法 > seijihou\ ;
+軍医監 > gun''ikan\ ;
+警世家 > keiseika\ ;
+来学期 > raigakki\ ;
+映画評 > eigahyou\ ;
+批判者 > hihansha\ ;
+平叙文 > heijobun\ ;
+三重苦 > sanjuuku\ ;
+模倣者 > mohousha\ ;
+予選会 > yosenkai\ ;
+演奏会 > ensoukai\ ;
+不活性 > fukassei\ ;
+開口部 > kaikoubu\ ;
+双胴機 > soudouki\ ;
+須弥山 > shumisen\ ;
+偽造罪 > gizouzai\ ;
+秀画家 > shuugaka\ ;
+交代員 > koutaiin\ ;
+赤電話 > akadenwa\ ;
+有期刑 > yuukikei\ ;
+口話法 > kouwahou\ ;
+戸主権 > koshuken\ ;
+公安官 > kouankan\ ;
+歯牙状 > shigajou\ ;
+伝声器 > denseiki\ ;
+保険金 > hokenkin\ ;
+指数部 > shisuubu\ ;
+豪華船 > goukasen\ ;
+丸暗記 > maruanki\ ;
+基準点 > kijunten\ ;
+後援会 > kouenkai\ ;
+県議会 > kengikai\ ;
+行在所 > anzaisho\ ;
+口語文 > kougobun\ ;
+寝煙草 > netabako\ ;
+断破壊 > danhakai\ ;
+磁鉄鉱 > jitekkou\ ;
+円為替 > engawase\ ;
+看護兵 > kangohei\ ;
+営業部 > eigyoubu\ ;
+不消化 > fushouka\ ;
+不徳義 > futokugi\ ;
+地吹雪 > jifubuki\ ;
+須弥壇 > shumidan\ ;
+佐幕派 > sabakuha\ ;
+頓痴気 > tonchiki\ ;
+多数党 > tasuutou\ ;
+輸送船 > yusousen\ ;
+採油権 > saiyuken\ ;
+来世紀 > raiseiki\ ;
+山水画 > sansuiga\ ;
+掃除人 > soujinin\ ;
+一等地 > ittouchi\ ;
+税務官 > zeimukan\ ;
+看護人 > kangonin\ ;
+半切符 > hankippu\ ;
+圧瀘器 > atsuroki\ ;
+基準法 > kijunhou\ ;
+受講者 > jukousha\ ;
+測距儀 > sokkyogi\ ;
+冷凍機 > reitouki\ ;
+等距離 > toukyori\ ;
+不名数 > fumeisuu\ ;
+試運転 > shiunten\ ;
+義勇兵 > giyuuhei\ ;
+親画面 > oyagamen\ ;
+拒否権 > kyohiken\ ;
+二番線 > nibansen\ ;
+営業費 > eigyouhi\ ;
+相似形 > soujikei\ ;
+双生児 > souseiji\ ;
+罹災民 > risaimin\ ;
+寄生木 > yadorigi\ ;
+火薬庫 > kayakuko\ ;
+赤頭巾 > akazukin\ ;
+蜥蜴座 > tokageza\ ;
+警報音 > keihouon\ ;
+大蜥蜴 > ootokage\ ;
+更生期 > kouseiki\ ;
+疑問文 > gimonbun\ ;
+荷為替 > nigawase\ ;
+圧濾器 > atsuroki\ ;
+腎臓炎 > jinzouen\ ;
+線維束 > senisoku\ ;
+寄贈者 > kizousha\ ;
+家庭内 > kateinai\ ;
+落語家 > rakugoka\ ;
+無節操 > musessou\ ;
+容疑者 > yougisha\ ;
+展開図 > tenkaizu\ ;
+私生児 > shiseiji\ ;
+大手筋 > ootesuji\ ;
+公定価 > kouteika\ ;
+気分屋 > kibun''ya\ ;
+一等兵 > ittouhei\ ;
+下水管 > gesuikan\ ;
+整数比 > seisuuhi\ ;
+社務所 > shamusho\ ;
+高層雲 > kousouun\ ;
+常套語 > joutougo\ ;
+船外機 > sengaiki\ ;
+双暗車 > souansha\ ;
+旅客機 > ryokakki\ ;
+運営者 > un''eisha\ ;
+恣意的 > shiiteki\ ;
+破天荒 > hatenkou\ ;
+熱帯夜 > nettaiya\ ;
+達成度 > tasseido\ ;
+多角形 > takakkei\ ;
+入会権 > iriaiken\ ;
+千葉県 > chibaken\ ;
+五月雨 > samidare\ ;
+有頂天 > uchouten\ ;
+準会員 > junkaiin\ ;
+水曜日 > suiyoubi\ ;
+渇水期 > kassuiki\ ;
+競馬場 > keibajou\ ;
+鳩小屋 > hatogoya\ ;
+不正視 > fuseishi\ ;
+四半期 > shihanki\ ;
+熔鉱炉 > youkouro\ ;
+作用点 > sayouten\ ;
+遊園地 > yuuenchi\ ;
+軌道船 > kidousen\ ;
+弁理士 > benrishi\ ;
+麻酔銃 > masuijuu\ ;
+木螺子 > mokuneji\ ;
+歩数計 > hosuukei\ ;
+主題歌 > shudaika\ ;
+正会員 > seikaiin\ ;
+微分法 > bibunhou\ ;
+動員令 > douinrei\ ;
+青瓦台 > seigadai\ ;
+渡船場 > tosenjou\ ;
+意識下 > ishikika\ ;
+保護国 > hogokoku\ ;
+同性愛 > douseiai\ ;
+油圧器 > yuatsuki\ ;
+燕青拳 > enseiken\ ;
+幼年期 > younenki\ ;
+豪華版 > goukaban\ ;
+医原病 > igenbyou\ ;
+電話線 > denwasen\ ;
+冷凍庫 > reitouko\ ;
+還付税 > kanpuzei\ ;
+弁護者 > bengosha\ ;
+電話網 > denwamou\ ;
+登山道 > tozandou\ ;
+重電機 > juudenki\ ;
+不恰好 > bukakkou\ ;
+阿房鳥 > ahoudori\ ;
+予備的 > yobiteki\ ;
+扶助料 > fujoryou\ ;
+猿知恵 > sarudjie\ ;
+地蔵顔 > jizougao\ ;
+作業場 > sagyouba\ ;
+空相場 > kuusouba\ ;
+混合語 > kongougo\ ;
+妥協案 > dakyouan\ ;
+慰謝料 > isharyou\ ;
+無抵抗 > muteikou\ ;
+葉節点 > hasetten\ ;
+他動詞 > tadoushi\ ;
+未成年 > miseinen\ ;
+拘引状 > kouinjou\ ;
+映画狂 > eigakyou\ ;
+法華経 > hokekyou\ ;
+酢料理 > suryouri\ ;
+政府米 > seifumai\ ;
+好結果 > koukekka\ ;
+活性化 > kasseika\ ;
+助言者 > jogonsha\ ;
+裏千家 > urasenke\ ;
+舎利塔 > sharitou\ ;
+不祝儀 > bushuugi\ ;
+過渡的 > katoteki\ ;
+陶芸家 > tougeika\ ;
+作業員 > sagyouin\ ;
+全世界 > zensekai\ ;
+多摩川 > tamagawa\ ;
+微苦笑 > bikushou\ ;
+欺瞞者 > gimansha\ ;
+立法府 > rippoufu\ ;
+被災地 > hisaichi\ ;
+猛打者 > moudasha\ ;
+不祥事 > fushouji\ ;
+結果論 > kekkaron\ ;
+下水溝 > gesuikou\ ;
+水風呂 > mizuburo\ ;
+方位角 > houikaku\ ;
+防塵着 > boujingi\ ;
+既視想 > kishikan\ ;
+口語体 > kougotai\ ;
+幹部会 > kanbukai\ ;
+交際費 > kousaihi\ ;
+手間暇 > temahima\ ;
+武士道 > bushidou\ ;
+魔方陣 > mahoujin\ ;
+葡萄酒 > budoushu\ ;
+冷凍器 > reitouki\ ;
+双子座 > futagoza\ ;
+脱水機 > dassuiki\ ;
+火口原 > kakougen\ ;
+低次元 > teijigen\ ;
+厳冬期 > gentouki\ ;
+丸諳記 > maruanki\ ;
+不退転 > futaiten\ ;
+手土産 > temiyage\ ;
+危険視 > kikenshi\ ;
+舞踊団 > butoudan\ ;
+不決定 > fukettei\ ;
+回帰線 > kaikisen\ ;
+区民税 > kuminzei\ ;
+何番目 > nanbanme\ ;
+脱気水 > dakkisui\ ;
+刑務所 > keimusho\ ;
+健啖家 > kentanka\ ;
+破壊者 > hakaisha\ ;
+自意識 > jiishiki\ ;
+七十路 > nanasoji\ ;
+観自在 > kanjizai\ ;
+遠心機 > enshinki\ ;
+朱印船 > shuinsen\ ;
+洗濯機 > sentakki\ ;
+不動産 > fudousan\ ;
+噴気孔 > funkikou\ ;
+蝦夷松 > ezomatsu\ ;
+鬼刑事 > onikeiji\ ;
+感嘆符 > kantanfu\ ;
+法医学 > houigaku\ ;
+鳥小屋 > torigoya\ ;
+自営業 > jieigyou\ ;
+精錬所 > seirenjo\ ;
+黄菖蒲 > kishoubu\ ;
+亜大陸 > atairiku\ ;
+備考欄 > bikouran\ ;
+未成品 > miseihin\ ;
+片手間 > katatema\ ;
+人間味 > ningenmi\ ;
+無意識 > muishiki\ ;
+投資家 > toushika\ ;
+下水板 > gesuiita\ ;
+馬蹄形 > bateikei\ ;
+全音符 > zen''onpu\ ;
+高輝度 > koukidou\ ;
+不可侵 > fukashin\ ;
+黄口児 > koukouji\ ;
+分科会 > bunkakai\ ;
+蜘蛛膜 > kumomaku\ ;
+事業家 > jigyouka\ ;
+入会地 > iriaichi\ ;
+図書館 > toshokan\ ;
+製版所 > seihanjo\ ;
+東大寺 > toudaiji\ ;
+中位数 > chuuisuu\ ;
+参賀者 > sangasha\ ;
+批准書 > hijunsho\ ;
+舞踏会 > butoukai\ ;
+理化学 > rikagaku\ ;
+登山者 > tozansha\ ;
+助教授 > jokyouju\ ;
+刑務官 > keimukan\ ;
+政務官 > seimukan\ ;
+正義感 > seigikan\ ;
+医薬品 > iyakuhin\ ;
+化粧着 > keshougi\ ;
+火達磨 > hidaruma\ ;
+不徹底 > futettei\ ;
+留守宅 > rusutaku\ ;
+凡試合 > bonshiai\ ;
+万歩計 > manpokei\ ;
+二枚貝 > nimaigai\ ;
+用水路 > yousuiro\ ;
+時計店 > tokeiten\ ;
+固定子 > koteishi\ ;
+有煙炭 > yuuentan\ ;
+講演会 > kouenkai\ ;
+裏鬼門 > urakimon\ ;
+御母様 > okaasama\ ;
+道祖神 > dousojin\ ;
+合法化 > gouhouka\ ;
+首都圏 > shutoken\ ;
+三毛猫 > mikeneko\ ;
+探知機 > tanchiki\ ;
+死火山 > shikazan\ ;
+色模様 > iromoyou\ ;
+糸電話 > itodenwa\ ;
+重大化 > juudaika\ ;
+三段目 > sandanme\ ;
+祭壇座 > saidanza\ ;
+兄弟子 > anideshi\ ;
+運命論 > unmeiron\ ;
+普通科 > futsuuka\ ;
+上古史 > joukoshi\ ;
+預貯金 > yochokin\ ;
+妥当性 > datousei\ ;
+葡萄色 > budouiro\ ;
+排水路 > haisuiro\ ;
+横断面 > oudanmen\ ;
+整経機 > seikeiki\ ;
+事業化 > jigyouka\ ;
+簡体字 > kantaiji\ ;
+可溶片 > kayouhen\ ;
+儀仗兵 > gijouhei\ ;
+陸屋根 > rokuyane\ ;
+座談会 > zadankai\ ;
+帆前船 > homaesen\ ;
+指話法 > shiwahou\ ;
+偽造品 > gizouhin\ ;
+世帯数 > setaisuu\ ;
+一周期 > isshuuki\ ;
+中耳炎 > chuujien\ ;
+富士通 > fujitsuu\ ;
+家屋税 > kaokuzei\ ;
+機動隊 > kidoutai\ ;
+防火線 > boukasen\ ;
+教護院 > kyougoin\ ;
+螺子山 > nejiyama\ ;
+乳児院 > nyuujiin\ ;
+腕時計 > udedokei\ ;
+朱印状 > shuinjou\ ;
+真意義 > shin''igi\ ;
+遊技場 > yuugijou\ ;
+勧工場 > kankouba\ ;
+三冠馬 > sankanba\ ;
+天才児 > tensaiji\ ;
+逆茂木 > sakamogi\ ;
+補充兵 > hojuuhei\ ;
+建議者 > kengisha\ ;
+常夜灯 > jouyatou\ ;
+草屋根 > kusayane\ ;
+権威者 > ken''isha\ ;
+砕岩機 > saiganki\ ;
+葡萄糖 > budoutou\ ;
+白亜館 > hakuakan\ ;
+混和性 > konwasei\ ;
+化粧殿 > kewaiden\ ;
+千分比 > senbunhi\ ;
+時計台 > tokeidai\ ;
+同母姉 > douboshi\ ;
+上得意 > joutokui\ ;
+黄水仙 > kisuisen\ ;
+弱味噌 > yowamiso\ ;
+留守中 > rusuchuu\ ;
+変声期 > henseiki\ ;
+小児科 > shounika\ ;
+三十戸 > sanjikko\ ;
+電離層 > denrisou\ ;
+高踏派 > koutouha\ ;
+理工系 > rikoukei\ ;
+無礼講 > bureikou\ ;
+一周忌 > isshuuki\ ;
+不十分 > fujuubun\ ;
+哺乳期 > honyuuki\ ;
+石油王 > sekiyuou\ ;
+可鎔片 > kayouhen\ ;
+御利益 > goriyaku\ ;
+投書家 > toushoka\ ;
+遺留品 > iryuuhin\ ;
+遺伝病 > idenbyou\ ;
+揚炭機 > youtanki\ ;
+非変換 > hihenkan\ ;
+改正案 > kaiseian\ ;
+高高度 > koukoudo\ ;
+経産婦 > keisanpu\ ;
+赤裸裸 > sekirara\ ;
+混合機 > kongouki\ ;
+寄贈品 > kizouhin\ ;
+夜行性 > yakousei\ ;
+鑽孔機 > sankouki\ ;
+前衛派 > zen''eiha\ ;
+未決算 > mikessan\ ;
+主要部 > shuyoubu\ ;
+避寒地 > hikanchi\ ;
+水垢離 > mizugori\ ;
+委託生 > itakusei\ ;
+警報機 > keihouki\ ;
+温罨法 > on''anpou\ ;
+対応版 > taiouban\ ;
+喇嘛教 > ramakyou\ ;
+遺留分 > iryuubun\ ;
+昆布茶 > konbucha\ ;
+乗算器 > jouzanki\ ;
+葬儀社 > sougisha\ ;
+判検事 > hankenji\ ;
+特異点 > tokuiten\ ;
+保険屋 > hoken''ya\ ;
+不都合 > futsugou\ ;
+所持金 > shojikin\ ;
+虎河豚 > torafugu\ ;
+技能者 > ginousha\ ;
+抗議文 > kougibun\ ;
+既製品 > kiseihin\ ;
+基礎的 > kisoteki\ ;
+貝細工 > kaizaiku\ ;
+黒百合 > kuroyuri\ ;
+茶菓子 > chagashi\ ;
+否定文 > hiteibun\ ;
+弁護士 > bengoshi\ ;
+手裏剣 > shuriken\ ;
+銀時計 > gindokei\ ;
+三連符 > sanrenpu\ ;
+小切子 > kokiriko\ ;
+形而上 > keijijou\ ;
+搭乗員 > toujouin\ ;
+世界観 > sekaikan\ ;
+探知器 > tanchiki\ ;
+倉庫番 > soukoban\ ;
+文科系 > bunkakei\ ;
+能文家 > noubunka\ ;
+弁護団 > bengodan\ ;
+銀世界 > ginsekai\ ;
+普遍性 > fuhensei\ ;
+可溶性 > kayousei\ ;
+匈牙利 > hangarii\ ;
+猿真似 > sarumane\ ;
+猪口才 > chokozai\ ;
+鋳物師 > imonoshi\ ;
+無鉄砲 > muteppou\ ;
+同分母 > doubunbo\ ;
+未消化 > mishouka\ ;
+広東語 > kantongo\ ;
+一私人 > isshijin\ ;
+漢蔵語 > kanzougo\ ;
+二人目 > futarime\ ;
+富士絹 > fujiginu\ ;
+肛門科 > koumonka\ ;
+静電気 > seidenki\ ;
+原動機 > gendouki\ ;
+乾船渠 > kandokku\ ;
+鼓吹者 > kosuisha\ ;
+大和煮 > yamatoni\ ;
+茶道具 > chadougu\ ;
+排気管 > haikikan\ ;
+当事者 > toujisha\ ;
+墓誌銘 > boshimei\ ;
+短水路 > tansuiro\ ;
+喫茶店 > kissaten\ ;
+時間帯 > jikantai\ ;
+無水酸 > musuisan\ ;
+破防法 > habouhou\ ;
+合歓木 > nemunoki\ ;
+聖歌隊 > seikatai\ ;
+印紙税 > inshizei\ ;
+指揮者 > shikisha\ ;
+文房具 > bunbougu\ ;
+保管金 > hokankin\ ;
+最多数 > saitasuu\ ;
+不透明 > futoumei\ ;
+栽培所 > saibaijo\ ;
+林檎酒 > ringoshu\ ;
+母細胞 > bosaibou\ ;
+好打者 > koudasha\ ;
+円筒形 > entoukei\ ;
+摂関家 > sekkanke\ ;
+正規軍 > seikigun\ ;
+常套句 > joutouku\ ;
+未決済 > mikessai\ ;
+絃楽器 > gengakki\ ;
+納戸色 > nandoiro\ ;
+非線形 > hisenkei\ ;
+風呂釜 > furogama\ ;
+弁護人 > bengonin\ ;
+鎮守府 > chinjufu\ ;
+一張羅 > itchoura\ ;
+子会社 > kogaisha\ ;
+不凍港 > futoukou\ ;
+卵塔場 > rantouba\ ;
+中央部 > chuuoubu\ ;
+不凍液 > futoueki\ ;
+天秤座 > tenbinza\ ;
+危険性 > kikensei\ ;
+不凍海 > futoukai\ ;
+登山帽 > tozanbou\ ;
+煎豆腐 > iridoufu\ ;
+券売機 > kenbaiki\ ;
+時間外 > jikangai\ ;
+気候帯 > kikoutai\ ;
+楽器店 > gakkiten\ ;
+不分明 > fubunmei\ ;
+正電気 > seidenki\ ;
+本金庫 > honkinko\ ;
+可鎔性 > kayousei\ ;
+雄弁家 > yuubenka\ ;
+付帯犯 > futaihan\ ;
+西洋碁 > seiyougo\ ;
+戦争後 > sensougo\ ;
+敏腕家 > binwanka\ ;
+中以上 > chuuijou\ ;
+高下駄 > takageta\ ;
+非売品 > hibaihin\ ;
+何代目 > nandaime\ ;
+高架線 > koukasen\ ;
+水面下 > suimenka\ ;
+精油所 > seiyusho\ ;
+東西屋 > touzaiya\ ;
+銅版画 > douhanga\ ;
+炊飯器 > suihanki\ ;
+元帥府 > gensuifu\ ;
+鳥之巣 > torinosu\ ;
+医療車 > iryousha\ ;
+特異性 > tokuisei\ ;
+冬至線 > toujisen\ ;
+穿孔機 > senkouki\ ;
+無蓋車 > mugaisha\ ;
+抵抗器 > teikouki\ ;
+蒸気船 > joukisen\ ;
+非許容 > hikyoyou\ ;
+遠近法 > enkinhou\ ;
+仮定法 > kateihou\ ;
+混合器 > kongouki\ ;
+西洋画 > seiyouga\ ;
+達磨忌 > darumaki\ ;
+畳成語 > jouseigo\ ;
+怪事件 > kaijiken\ ;
+所持者 > shojisha\ ;
+擬人法 > gijinhou\ ;
+準大手 > jun''oote\ ;
+回転機 > kaitenki\ ;
+可哀相 > kawaisou\ ;
+交際家 > kousaika\ ;
+離乳期 > rinyuuki\ ;
+磁性層 > jiseisou\ ;
+越冬隊 > ettoutai\ ;
+譜面台 > fumendai\ ;
+仮小屋 > karigoya\ ;
+目論見 > mokuromi\ ;
+仙花紙 > senkashi\ ;
+演算子 > enzanshi\ ;
+有限個 > yuugenko\ ;
+戸障子 > toshouji\ ;
+可鍛性 > katansei\ ;
+太鼓判 > taikoban\ ;
+海坊主 > umibouzu\ ;
+黍魚子 > kibinago\ ;
+営林署 > eirinsho\ ;
+普辺性 > fuhensei\ ;
+固有値 > koyuuchi\ ;
+遺伝学 > idengaku\ ;
+育種所 > ikushujo\ ;
+金鍍金 > kinmekki\ ;
+鼻風邪 > hanakaze\ ;
+参事官 > sanjikan\ ;
+相談所 > soudanjo\ ;
+無税品 > muzeihin\ ;
+応答能 > outounou\ ;
+検問所 > kenmonjo\ ;
+岡場所 > okabasho\ ;
+地蔵尊 > jizouson\ ;
+空世辞 > karaseji\ ;
+表具屋 > hyouguya\ ;
+弔慰金 > chouikin\ ;
+初産婦 > shosanpu\ ;
+暗記物 > ankimono\ ;
+麻酔剤 > masuizai\ ;
+藪医者 > yabuisha\ ;
+何時頃 > itsugoro\ ;
+二義的 > nigiteki\ ;
+雁皮紙 > ganpishi\ ;
+日和見 > hiyorimi\ ;
+社会部 > shakaibu\ ;
+別世界 > bessekai\ ;
+無名氏 > mumeishi\ ;
+雇傭者 > koyousha\ ;
+絢緞子 > ayadonsu\ ;
+渦状文 > kajoumon\ ;
+自動車 > jidousha\ ;
+除草剤 > josouzai\ ;
+不公正 > fukousei\ ;
+闘技場 > tougijou\ ;
+主記憶 > shukioku\ ;
+鼻下長 > bikachou\ ;
+最大化 > saidaika\ ;
+防炎剤 > bouenzai\ ;
+溶鉱炉 > youkouro\ ;
+何時間 > nanjikan\ ;
+系統樹 > keitouju\ ;
+御自身 > gojishin\ ;
+上菓子 > jougashi\ ;
+被減数 > higensuu\ ;
+星条旗 > seijouki\ ;
+疎水性 > sosuisei\ ;
+自治権 > jichiken\ ;
+逮捕者 > taihosha\ ;
+二頭筋 > nitoukin\ ;
+素浪人 > surounin\ ;
+秋場所 > akibasho\ ;
+船火事 > funakaji\ ;
+育種家 > ikushuka\ ;
+正課外 > seikagai\ ;
+煉瓦塀 > rengabei\ ;
+英文法 > eibunpou\ ;
+未決定 > mikettei\ ;
+首脳部 > shunoubu\ ;
+健康美 > kenkoubi\ ;
+両議院 > ryougiin\ ;
+愛唱歌 > aishouka\ ;
+二本棒 > nihonbou\ ;
+青物屋 > aomonoya\ ;
+仮定形 > kateikei\ ;
+自動詞 > jidoushi\ ;
+便宜上 > bengijou\ ;
+田舎風 > inakafuu\ ;
+朝御飯 > asagohan\ ;
+指揮権 > shikiken\ ;
+設計図 > sekkeizu\ ;
+部外者 > bugaisha\ ;
+葬儀場 > sougijou\ ;
+磁性体 > jiseitai\ ;
+銀本位 > ginhon''i\ ;
+政党員 > seitouin\ ;
+対応値 > taiouchi\ ;
+軍艦旗 > gunkanki\ ;
+二乗根 > nijoukon\ ;
+指揮棒 > shikibou\ ;
+母国語 > bokokugo\ ;
+画用紙 > gayoushi\ ;
+検温器 > ken''onki\ ;
+駆潜艇 > kusentei\ ;
+堕胎罪 > dataizai\ ;
+磁気学 > jikigaku\ ;
+懐炉灰 > kairobai\ ;
+要注意 > youchuui\ ;
+初生児 > shoseiji\ ;
+不鮮明 > fusenmei\ ;
+天鵞絨 > biroudou\ ;
+製糖所 > seitoujo\ ;
+先駆者 > senkusha\ ;
+助成金 > joseikin\ ;
+渡来人 > toraijin\ ;
+速記者 > sokkisha\ ;
+艦載機 > kansaiki\ ;
+無名指 > mumeishi\ ;
+製粉機 > seifunki\ ;
+乱層雲 > ransouun\ ;
+参事会 > sanjikai\ ;
+排気弁 > haikiben\ ;
+正統派 > seitouha\ ;
+補佐役 > hosayaku\ ;
+未配当 > mihaitou\ ;
+是非共 > zehitomo\ ;
+未刊行 > mikankou\ ;
+枢機卿 > suukikei\ ;
+未遂罪 > misuizai\ ;
+文化財 > bunkazai\ ;
+武装船 > busousen\ ;
+記者団 > kishadan\ ;
+御用邸 > goyoutei\ ;
+御先棒 > osakibou\ ;
+定比例 > teihirei\ ;
+富士川 > fujikawa\ ;
+産卵期 > sanranki\ ;
+分相機 > bunsouki\ ;
+上層雲 > jousouun\ ;
+三次元 > sanjigen\ ;
+群馬県 > gunmaken\ ;
+兵站部 > heitanbu\ ;
+不公平 > fukouhei\ ;
+前鼻緒 > maehanao\ ;
+不凍剤 > futouzai\ ;
+物真似 > monomane\ ;
+遊歩道 > yuuhodou\ ;
+可哀想 > kawaisou\ ;
+稟議書 > ringisho\ ;
+無制限 > museigen\ ;
+体育家 > taiikuka\ ;
+分岐駅 > bunkieki\ ;
+医療用 > iryouyou\ ;
+逮捕状 > taihojou\ ;
+過去帳 > kakochou\ ;
+機動性 > kidousei\ ;
+熱風炉 > neppuuro\ ;
+歩行者 > hokousha\ ;
+円錐形 > ensuikei\ ;
+守銭奴 > shusendo\ ;
+道化師 > doukeshi\ ;
+下腹部 > kafukubu\ ;
+反政府 > hanseifu\ ;
+回転儀 > kaitengi\ ;
+上草履 > uwazouri\ ;
+米上院 > beijouin\ ;
+一帳羅 > itchoura\ ;
+朝稽古 > asageiko\ ;
+製粉所 > seifunjo\ ;
+被治者 > hichisha\ ;
+宮田家 > miyatake\ ;
+近衛兵 > konoehei\ ;
+岩手県 > iwateken\ ;
+連隊旗 > rentaiki\ ;
+管楽器 > kangakki\ ;
+謝恩会 > shaonkai\ ;
+養蜂家 > youhouka\ ;
+五線紙 > gosenshi\ ;
+平生着 > heizeigi\ ;
+機帆船 > kihansen\ ;
+非排水 > hihaisui\ ;
+着番号 > kibangou\ ;
+不倫罪 > furinzai\ ;
+飴細工 > amezaiku\ ;
+偽似症 > gijishou\ ;
+大広間 > oohiroma\ ;
+避難者 > hinansha\ ;
+定常波 > teijouha\ ;
+指揮官 > shikikan\ ;
+付属語 > fuzokugo\ ;
+年会費 > nenkaihi\ ;
+故買者 > kobaisha\ ;
+五大洋 > godaiyou\ ;
+珪藻土 > keisoudo\ ;
+人名簿 > jinmeibo\ ;
+排気口 > haikikou\ ;
+避妊法 > hininhou\ ;
+萌木色 > moegiiro\ ;
+特価品 > tokkahin\ ;
+揚抗比 > youkouhi\ ;
+雇用者 > koyousha\ ;
+辞書類 > jishorui\ ;
+大往生 > daioujou\ ;
+追起訴 > tsuikiso\ ;
+過半数 > kahansuu\ ;
+安息日 > ansokubi\ ;
+再浮上 > saifujou\ ;
+図書券 > toshoken\ ;
+発起人 > hokkinin\ ;
+道具論 > douguron\ ;
+分相応 > bunsouou\ ;
+立候補 > rikkouho\ ;
+避暑地 > hishochi\ ;
+接骨木 > niwatoko\ ;
+社会科 > shakaika\ ;
+上機嫌 > joukigen\ ;
+交換所 > koukanjo\ ;
+喜歌劇 > kikageki\ ;
+添加剤 > tenkazai\ ;
+未復員 > mifukuin\ ;
+謙遜語 > kensongo\ ;
+未処置 > mishochi\ ;
+地形図 > chikeizu\ ;
+未知数 > michisuu\ ;
+八潮路 > yashioji\ ;
+代理者 > dairisha\ ;
+軍令部 > gunreibu\ ;
+横文字 > yokomoji\ ;
+太古代 > taikodai\ ;
+幾何学 > kikagaku\ ;
+西洋化 > seiyouka\ ;
+刑余者 > keiyosha\ ;
+渡世人 > toseinin\ ;
+羅針儀 > rashingi\ ;
+子音群 > shiingun\ ;
+暗証化 > anshouka\ ;
+滑走路 > kassouro\ ;
+製図板 > seizuban\ ;
+皇統譜 > koutoufu\ ;
+理学部 > rigakubu\ ;
+英語塾 > eigojuku\ ;
+悲喜劇 > hikigeki\ ;
+保管林 > hokanrin\ ;
+再武装 > saibusou\ ;
+赤蜻蛉 > akatonbo\ ;
+予饌会 > yosenkai\ ;
+無辺際 > muhenzai\ ;
+不自然 > fushizen\ ;
+腎不全 > jinfuzen\ ;
+宴会場 > enkaijou\ ;
+経世家 > keiseika\ ;
+不信者 > fushinja\ ;
+単本位 > tanhon''i\ ;
+円錐台 > ensuidai\ ;
+因果者 > ingamono\ ;
+不信義 > fushingi\ ;
+軍事面 > gunjimen\ ;
+恒河沙 > gougasha\ ;
+創案者 > souansha\ ;
+自治体 > jichitai\ ;
+着尺地 > kijakuji\ ;
+後半期 > kouhanki\ ;
+自治会 > jichikai\ ;
+価値観 > kachikan\ ;
+西遊記 > seiyuuki\ ;
+年代記 > nendaiki\ ;
+感情家 > kanjouka\ ;
+文化祭 > bunkasai\ ;
+変換器 > henkanki\ ;
+世界史 > sekaishi\ ;
+受精卵 > juseiran\ ;
+総指揮 > soushiki\ ;
+年甲斐 > toshigai\ ;
+不充分 > fujuubun\ ;
+泥仕合 > dorojiai\ ;
+清子音 > seishiin\ ;
+二期作 > nikisaku\ ;
+横紋筋 > oumonkin\ ;
+運動界 > undoukai\ ;
+未発見 > mihakken\ ;
+偶像化 > guuzouka\ ;
+補聴器 > hochouki\ ;
+英語劇 > eigogeki\ ;
+電算機 > densanki\ ;
+再吟味 > saiginmi\ ;
+円錐体 > ensuitai\ ;
+予餞会 > yosenkai\ ;
+青天井 > aotenjou\ ;
+非戦論 > hisenron\ ;
+未発行 > mihakkou\ ;
+相場師 > soubashi\ ;
+古戦場 > kosenjou\ ;
+三畳紀 > sanjouki\ ;
+好意的 > kouiteki\ ;
+御馳走 > gochisou\ ;
+扶養者 > fuyousha\ ;
+十字軍 > juujigun\ ;
+按手礼 > anshurei\ ;
+同位角 > douikaku\ ;
+輪転機 > rintenki\ ;
+厭人者 > enjinsha\ ;
+無配当 > muhaitou\ ;
+富裕税 > fuyuuzei\ ;
+過労死 > karoushi\ ;
+紅衛兵 > koueihei\ ;
+管理者 > kanrisha\ ;
+夜商人 > yoakindo\ ;
+舌下腺 > zekkasen\ ;
+所持品 > shojihin\ ;
+紀行文 > kikoubun\ ;
+火山灰 > kazanbai\ ;
+騎士道 > kishidou\ ;
+剰余金 > jouyokin\ ;
+豊水期 > housuiki\ ;
+低能児 > teinouji\ ;
+帰納法 > kinouhou\ ;
+獅子座 > shishiza\ ;
+交換器 > koukanki\ ;
+世界人 > sekaijin\ ;
+衛生隊 > eiseitai\ ;
+理事長 > rijichou\ ;
+平屋根 > hirayane\ ;
+元老院 > genrouin\ ;
+棄権者 > kikensha\ ;
+世界中 > sekaijuu\ ;
+河口港 > kakoukou\ ;
+不体裁 > futeisai\ ;
+毒蜘蛛 > dokugumo\ ;
+単語篇 > tangohen\ ;
+生徒数 > seitosuu\ ;
+羊皮紙 > youhishi\ ;
+母系制 > bokeisei\ ;
+展示場 > tenjijou\ ;
+後遺症 > kouishou\ ;
+不定詞 > futeishi\ ;
+加担者 > katansha\ ;
+陽電気 > youdenki\ ;
+宣伝費 > sendenhi\ ;
+劇映画 > gekieiga\ ;
+無常観 > mujoukan\ ;
+遊蕩児 > yuutouji\ ;
+金満家 > kinmanka\ ;
+錠前屋 > joumaeya\ ;
+知名度 > chimeido\ ;
+出鱈目 > detarame\ ;
+懇話会 > konwakai\ ;
+避難民 > hinanmin\ ;
+十字街 > juujigai\ ;
+主演者 > shuensha\ ;
+世俗化 > sezokuka\ ;
+粗製品 > soseihin\ ;
+右心房 > ushinbou\ ;
+圧制者 > asseisha\ ;
+展示品 > tenjihin\ ;
+書記官 > shokikan\ ;
+郷土愛 > kyoudoai\ ;
+貯蔵庫 > chozouko\ ;
+下馬評 > gebahyou\ ;
+不能者 > funousha\ ;
+不良化 > furyouka\ ;
+薄荷糖 > hakkatou\ ;
+薄荷精 > hakkasei\ ;
+比喩的 > hiyuteki\ ;
+争議権 > sougiken\ ;
+重禁錮 > juukinko\ ;
+運動欄 > undouran\ ;
+普偏性 > fuhensei\ ;
+農繁期 > nouhanki\ ;
+感受性 > kanjusei\ ;
+兵器工 > heikikou\ ;
+倪雲林 > geiunrin\ ;
+運送船 > unsousen\ ;
+遊冶郎 > yuuyarou\ ;
+画仙紙 > gasenshi\ ;
+多段階 > tadankai\ ;
+試験機 > shikenki\ ;
+一般論 > ippanron\ ;
+加算税 > kasanzei\ ;
+分岐線 > bunkisen\ ;
+喇叭手 > rappashu\ ;
+免罪符 > menzaifu\ ;
+犬黄楊 > inutsuge\ ;
+厭世観 > enseikan\ ;
+半世紀 > hanseiki\ ;
+酵母菌 > koubokin\ ;
+冷罨法 > reianpou\ ;
+愛蔵版 > aizouban\ ;
+御偉方 > oeragata\ ;
+記数法 > kisuuhou\ ;
+空下手 > karaheta\ ;
+不健康 > fukenkou\ ;
+探検家 > tankenka\ ;
+大気圏 > taikiken\ ;
+獅子吼 > shishiku\ ;
+代理権 > dairiken\ ;
+物件費 > bukkenhi\ ;
+正規兵 > seikihei\ ;
+再配布 > saihaifu\ ;
+四畳半 > yojouhan\ ;
+展示会 > tenjikai\ ;
+大都市 > daitoshi\ ;
+先学期 > sengakki\ ;
+悪洒落 > warujare\ ;
+自民党 > jimintou\ ;
+医療品 > iryouhin\ ;
+内沙汰 > uchizata\ ;
+分光器 > bunkouki\ ;
+親不孝 > oyafukou\ ;
+縁起物 > engimono\ ;
+流星雨 > ryuuseiu\ ;
+年貢米 > nengumai\ ;
+洗浄器 > senjouki\ ;
+油送船 > yusousen\ ;
+循環器 > junkanki\ ;
+健康児 > kenkouji\ ;
+税理士 > zeirishi\ ;
+人情味 > ninjoumi\ ;
+嫌疑者 > kengisha\ ;
+等語線 > tougosen\ ;
+十字線 > juujisen\ ;
+不使用 > fushiyou\ ;
+一生面 > isseimen\ ;
+旅行記 > ryokouki\ ;
+個体群 > kotaigun\ ;
+口蓋音 > kougaion\ ;
+圧延機 > atsuenki\ ;
+和声法 > waseihou\ ;
+高頻度 > kouhindo\ ;
+小豆色 > azukiiro\ ;
+厳美渓 > genbikei\ ;
+火山弾 > kazandan\ ;
+半諧音 > hankaion\ ;
+消化器 > shoukaki\ ;
+求法者 > guhousha\ ;
+火山帯 > kazantai\ ;
+下駄箱 > getabako\ ;
+芝海老 > shibaebi\ ;
+大分県 > ooitaken\ ;
+山羊髭 > yagihige\ ;
+瀬戸際 > setogiwa\ ;
+火山島 > kazantou\ ;
+不審火 > fushinbi\ ;
+奉仕女 > houshime\ ;
+火山岩 > kazangan\ ;
+玉砂利 > tamajari\ ;
+一分半 > ippunhan\ ;
+花鳥画 > kachouga\ ;
+無菌法 > mukinhou\ ;
+無免許 > mumenkyo\ ;
+待避線 > taihisen\ ;
+等時性 > toujisei\ ;
+年賀状 > nengajou\ ;
+古参者 > kosansha\ ;
+感歎符 > kantanfu\ ;
+分岐点 > bunkiten\ ;
+侍従官 > jijuukan\ ;
+内野手 > naiyashu\ ;
+油送管 > yusoukan\ ;
+不用心 > buyoujin\ ;
+誘蛾灯 > yuugatou\ ;
+計理士 > keirishi\ ;
+雑貨店 > zakkaten\ ;
+座右銘 > zayuumei\ ;
+子音性 > shiinsei\ ;
+期待感 > kitaikan\ ;
+運動家 > undousha\ ;
+愚連隊 > gurentai\ ;
+原子雲 > genshiun\ ;
+代理店 > dairiten\ ;
+諸器械 > shokikai\ ;
+操舵手 > soudashu\ ;
+出歯亀 > debakame\ ;
+不健全 > fukenzen\ ;
+相補性 > souhosei\ ;
+自転車 > jitensha\ ;
+初期値 > shokichi\ ;
+接頭辞 > settouji\ ;
+生徒会 > seitokai\ ;
+赤裸々 > sekirara\ ;
+預言者 > yogensha\ ;
+開催日 > kaisaibi\ ;
+胴間声 > doumagoe\ ;
+背番号 > sebangou\ ;
+浮浪者 > furousha\ ;
+会員券 > kaiinken\ ;
+会員制 > kaiinsei\ ;
+英米法 > eibeihou\ ;
+合理論 > gouriron\ ;
+大部分 > daibubun\ ;
+五角形 > gokakkei\ ;
+社会化 > shakaika\ ;
+中規模 > chuukibo\ ;
+大都会 > daitokai\ ;
+護送車 > gosousha\ ;
+重手代 > omotedai\ ;
+広報部 > kouhoubu\ ;
+創世記 > souseiki\ ;
+三杯酢 > sanbaizu\ ;
+節炭器 > settanki\ ;
+希望者 > kibousha\ ;
+外科学 > gekagaku\ ;
+刑事犯 > keijihan\ ;
+配線図 > haisenzu\ ;
+機械論 > kikairon\ ;
+川秋沙 > kawaaisa\ ;
+文化圏 > bunkaken\ ;
+接頭語 > settougo\ ;
+事故歴 > jikoreki\ ;
+山小屋 > yamagoya\ ;
+糸蜻蛉 > itotonbo\ ;
+移転先 > itensaki\ ;
+大勲位 > daikun''i\ ;
+大目玉 > oomedama\ ;
+官公吏 > kankouri\ ;
+協議員 > kyougiin\ ;
+軍事犯 > gunjihan\ ;
+随行員 > zuikouin\ ;
+一辺倒 > ippentou\ ;
+現代語 > gendaigo\ ;
+聴音機 > chouonki\ ;
+不導性 > fudousei\ ;
+理容師 > riyoushi\ ;
+乱高下 > rankouge\ ;
+叙情詩 > jojoushi\ ;
+社交家 > shakouka\ ;
+文化史 > bunkashi\ ;
+不用品 > fuyouhin\ ;
+透明度 > toumeido\ ;
+不定法 > futeihou\ ;
+温排水 > onhaisui\ ;
+天花粉 > tenkafun\ ;
+航空路 > koukuuro\ ;
+資産家 > shisanka\ ;
+類似点 > ruijiten\ ;
+淡水湖 > tansuiko\ ;
+予言者 > yogensha\ ;
+広報課 > kouhouka\ ;
+小人数 > koninzuu\ ;
+愛知県 > aichiken\ ;
+人造藍 > jinzouai\ ;
+医学者 > igakusha\ ;
+悪感情 > akkanjou\ ;
+仮納金 > kanoukin\ ;
+未処分 > mishobun\ ;
+差配人 > sahainin\ ;
+低頻度 > teihindo\ ;
+作為犯 > sakuihan\ ;
+歯科用 > shikayou\ ;
+再処理 > saishori\ ;
+運動会 > undoukai\ ;
+花茣蓙 > hanagoza\ ;
+玄武岩 > genbugan\ ;
+液状化 > ekijouka\ ;
+無利息 > murisoku\ ;
+陣羽織 > jinbaori\ ;
+戦闘機 > sentouki\ ;
+有意的 > yuuiteki\ ;
+問題児 > mondaiji\ ;
+債務者 > saimusha\ ;
+一騎討 > ikkiuchi\ ;
+補給路 > hokyuuro\ ;
+下層土 > kasoudo\ ;
+起動機 > kidouki\ ;
+十字架 > juujika\ ;
+人工雨 > jinkouu\ ;
+餓鬼道 > gakidou\ ;
+不定期 > futeiki\ ;
+模擬店 > mogiten\ ;
+古武道 > kobudou\ ;
+栄養素 > eiyouso\ ;
+身勝手 > migatte\ ;
+無利子 > murishi\ ;
+瑠璃色 > ruriiro\ ;
+胃腸炎 > ichouen\ ;
+起動時 > kidouji\ ;
+殺陣師 > tateshi\ ;
+類義語 > ruigigo\ ;
+家計簿 > kakeibo\ ;
+登記簿 > toukibo\ ;
+重母音 > juuboin\ ;
+遅知恵 > osodjie\ ;
+大過去 > daikako\ ;
+加算器 > kasanki\ ;
+大相撲 > oozumou\ ;
+機能語 > kinougo\ ;
+有気音 > yuukion\ ;
+不条理 > fujouri\ ;
+大道具 > oodougu\ ;
+定位置 > teiichi\ ;
+運送屋 > unsouya\ ;
+造営費 > zoueihi\ ;
+蒙古語 > moukogo\ ;
+機械科 > kikaika\ ;
+次年度 > jinendo\ ;
+多重化 > tajuuka\ ;
+千代女 > chiyojo\ ;
+古社寺 > koshaji\ ;
+一層目 > issoume\ ;
+娑婆気 > shabake\ ;
+励磁機 > reijiki\ ;
+不首尾 > fushubi\ ;
+悪感化 > akkanka\ ;
+待避所 > taihijo\ ;
+四股名 > shikona\ ;
+不人気 > funinki\ ;
+西欧化 > seiouka\ ;
+二階屋 > nikaiya\ ;
+棒暗記 > bouanki\ ;
+不一致 > fuitchi\ ;
+血反吐 > chihedo\ ;
+曳火弾 > eikadan\ ;
+二階家 > nikaiya\ ;
+簡素化 > kansoka\ ;
+個体差 > kotaisa\ ;
+同音語 > douongo\ ;
+乗務員 > joumuin\ ;
+裏木戸 > urakido\ ;
+金毘羅 > konpira\ ;
+無造作 > muzousa\ ;
+十二時 > juuniji\ ;
+意想外 > isougai\ ;
+不安定 > fuantei\ ;
+陰電気 > indenki\ ;
+薄馬鹿 > usubaka\ ;
+丁字路 > teijiro\ ;
+提示部 > teijibu\ ;
+慰問品 > imonhin\ ;
+親文字 > oyamoji\ ;
+理財家 > rizaika\ ;
+稽古日 > keikobi\ ;
+二塁打 > niruida\ ;
+手相見 > tesoumi\ ;
+夜盗蛾 > yotouga\ ;
+女性美 > joseibi\ ;
+風邪声 > kazegoe\ ;
+厭世家 > enseika\ ;
+熨斗目 > noshime\ ;
+陰謀家 > inbouka\ ;
+随意筋 > zuiikin\ ;
+手加減 > tekagen\ ;
+讚美歌 > sanbika\ ;
+同位体 > douitai\ ;
+類音語 > ruiongo\ ;
+叉手網 > sadeami\ ;
+小綬鶏 > kojukei\ ;
+晴雨計 > seiukei\ ;
+文庫化 > bunkoka\ ;
+野次馬 > yajiuma\ ;
+街路樹 > gairoju\ ;
+控訴院 > kousoin\ ;
+仙人掌 > saboten\ ;
+義援金 > gienkin\ ;
+俯瞰図 > fukanzu\ ;
+御新香 > oshinko\ ;
+御家人 > gokenin\ ;
+大寺院 > daijiin\ ;
+烏羽玉 > ubatama\ ;
+性行為 > seikoui\ ;
+一般化 > ippanka\ ;
+十五夜 > juugoya\ ;
+二院制 > niinsei\ ;
+家政婦 > kaseifu\ ;
+第二義 > dainigi\ ;
+真魚板 > manaita\ ;
+円軌道 > enkidou\ ;
+野葡萄 > nobudou\ ;
+応募者 > oubosha\ ;
+麻実油 > asamiyu\ ;
+茶飯事 > sahanji\ ;
+八重雲 > yaeguma\ ;
+未踏査 > mitousa\ ;
+絵葉書 > ehagaki\ ;
+稽古場 > keikoba\ ;
+安全期 > anzenki\ ;
+反意語 > han''igo\ ;
+個人差 > kojinsa\ ;
+総務部 > soumubu\ ;
+警部補 > keibuho\ ;
+与太郎 > yotarou\ ;
+位牌堂 > ihaidou\ ;
+義太夫 > gidayuu\ ;
+三鞭酒 > shanpen\ ;
+妃殿下 > hidenka\ ;
+漫画家 > mangaka\ ;
+不本意 > fuhon''i\ ;
+歩合算 > buaizan\ ;
+語彙的 > goiteki\ ;
+第一課 > daiikka\ ;
+井戸端 > idobata\ ;
+理事会 > rijikai\ ;
+火曜日 > kayoubi\ ;
+御不浄 > gofujou\ ;
+未定義 > miteigi\ ;
+対位法 > taiihou\ ;
+浮浪児 > furouji\ ;
+婦人科 > fujinka\ ;
+他世界 > tasekai\ ;
+慰労金 > iroukin\ ;
+理不尽 > rifujin\ ;
+単坐機 > tanzaki\ ;
+不飽和 > fuhouwa\ ;
+代議員 > daigiin\ ;
+非合理 > higouri\ ;
+総務課 > soumuka\ ;
+椰子油 > yashiyu\ ;
+水泳着 > suieigi\ ;
+絵草紙 > ezoushi\ ;
+小犬座 > koinuza\ ;
+赤味噌 > akamiso\ ;
+対義語 > taigigo\ ;
+汚染菌 > osenkin\ ;
+三日路 > mikkaji\ ;
+居酒屋 > izakaya\ ;
+自家製 > jikasei\ ;
+塗布剤 > tofuzai\ ;
+古典語 > kotengo\ ;
+義捐金 > gienkin\ ;
+不景気 > fukeiki\ ;
+合理化 > gourika\ ;
+拉丁語 > ratengo\ ;
+電磁波 > denjiha\ ;
+電磁気 > denjiki\ ;
+安全器 > anzenki\ ;
+機械化 > kikaika\ ;
+栄養価 > eiyouka\ ;
+第二次 > dainiji\ ;
+井戸水 > idomizu\ ;
+一個人 > ikkojin\ ;
+亡祖父 > bousofu\ ;
+御朱印 > goshuin\ ;
+異性体 > iseitai\ ;
+非同期 > hidouki\ ;
+十露盤 > soroban\ ;
+筆記具 > hikkigu\ ;
+穏健派 > onkenha\ ;
+育児園 > ikujien\ ;
+電気炉 > denkiro\ ;
+依存性 > izonsei\ ;
+比叡山 > hieizan\ ;
+依頼者 > iraisha\ ;
+製油所 > seiyujo\ ;
+基本語 > kihongo\ ;
+御三家 > gosanke\ ;
+五節句 > gosekku\ ;
+誤動作 > godousa\ ;
+影印本 > eiinhon\ ;
+経営費 > keieihi\ ;
+円相場 > ensouba\ ;
+被疑者 > higisha\ ;
+放火魔 > houkama\ ;
+不断着 > fudangi\ ;
+聖路加 > seiroka\ ;
+下線部 > kasenbu\ ;
+多次元 > tajigen\ ;
+似非者 > esemono\ ;
+脳外科 > nougeka\ ;
+御下問 > gokamon\ ;
+膃肭臍 > ottosei\ ;
+女性器 > joseiki\ ;
+孵卵器 > furanki\ ;
+無理解 > murikai\ ;
+父性愛 > fuseiai\ ;
+非武装 > hibusou\ ;
+同父母 > doufubo\ ;
+女性化 > joseika\ ;
+無期限 > mukigen\ ;
+自家用 > jikayou\ ;
+家系図 > kakeizu\ ;
+一世紀 > isseiki\ ;
+自由度 > jiyuudo\ ;
+汚染源 > osengen\ ;
+依頼状 > iraijou\ ;
+第一歩 > daiippo\ ;
+微塵子 > mijinko\ ;
+贔屓目 > hiikime\ ;
+電磁場 > denjiba\ ;
+一体化 > ittaika\ ;
+御日様 > ohisama\ ;
+音羽屋 > otowaya\ ;
+医院長 > iinchou\ ;
+印欧語 > in''ougo\ ;
+出来秋 > dekiaki\ ;
+飛行機 > hikouki\ ;
+無作為 > musakui\ ;
+都市部 > toshibu\ ;
+座蒲団 > zabuton\ ;
+放課後 > houkago\ ;
+一本気 > ippongi\ ;
+電気屋 > denkiya\ ;
+未来派 > miraiha\ ;
+栄誉礼 > eiyorei\ ;
+糖衣錠 > touijou\ ;
+理論家 > rironka\ ;
+打楽器 > dagakki\ ;
+無作法 > busahou\ ;
+仁王門 > nioumon\ ;
+古典派 > kotenha\ ;
+素封家 > sohouka\ ;
+歩合制 > buaisei\ ;
+魚河岸 > uogashi\ ;
+自由化 > jiyuuka\ ;
+授産所 > jusanjo\ ;
+駆動機 > kudouki\ ;
+二箇所 > nikasho\ ;
+違犯者 > ihansha\ ;
+自画像 > jigazou\ ;
+形意拳 > keiiken\ ;
+母性愛 > boseiai\ ;
+井戸側 > idogawa\ ;
+破砕機 > hasaiki\ ;
+違警罪 > ikeizai\ ;
+希土類 > kidorui\ ;
+亜鉛引 > aenbiki\ ;
+太宰府 > dazaifu\ ;
+伊達者 > datesha\ ;
+送話器 > souwaki\ ;
+伴天連 > bateren\ ;
+亜麻布 > amanuno\ ;
+女郎屋 > jorouya\ ;
+噴霧器 > funmuki\ ;
+英単語 > eitango\ ;
+荷馬車 > nibasha\ ;
+擬態語 > gitaigo\ ;
+異邦人 > ihoujin\ ;
+怪我人 > keganin\ ;
+効果音 > koukaon\ ;
+墓碑銘 > bohimei\ ;
+飛行家 > hikouka\ ;
+火熨斗 > hinoshi\ ;
+優位性 > yuuisei\ ;
+無趣味 > mushumi\ ;
+過現未 > kagenmi\ ;
+長椅子 > nagaisu\ ;
+聾唖者 > rouasha\ ;
+文字盤 > mojiban\ ;
+五十音 > gojuuon\ ;
+天婦羅 > tenpura\ ;
+寝道具 > nedougu\ ;
+異分子 > ibunshi\ ;
+自販機 > jihanki\ ;
+八重垣 > yaegaki\ ;
+無価値 > mukachi\ ;
+人事院 > jinjiin\ ;
+不夜城 > fuyajou\ ;
+美丈夫 > bijoufu\ ;
+易損品 > isonhin\ ;
+尼僧院 > nisouin\ ;
+無理数 > murisuu\ ;
+無韻詩 > muinshi\ ;
+多様化 > tayouka\ ;
+甲斐性 > kaishou\ ;
+屋根裏 > yaneura\ ;
+暴風雨 > boufuuu\ ;
+生理日 > seiribi\ ;
+分限者 > bugenja\ ;
+人事部 > jinjibu\ ;
+鸚鵡貝 > oumugai\ ;
+一丁字 > itteiji\ ;
+分離派 > bunriha\ ;
+小細工 > kozaiku\ ;
+暗号化 > angouka\ ;
+印度洋 > indoyou\ ;
+塩素酸 > ensosan\ ;
+依頼人 > irainin\ ;
+父母会 > fubokai\ ;
+飲酒家 > inshuka\ ;
+不認可 > funinka\ ;
+慰労会 > iroukai\ ;
+豆腐屋 > toufuya\ ;
+分離機 > bunriki\ ;
+火炎瓶 > kaenbin\ ;
+御多分 > gotabun\ ;
+臨時費 > rinjihi\ ;
+大太鼓 > oodaiko\ ;
+如何程 > ikahodo\ ;
+牡牛座 > oushiza\ ;
+加工費 > kakouhi\ ;
+人事課 > jinjika\ ;
+野良犬 > norainu\ ;
+讃美歌 > sanbika\ ;
+日本間 > nihonma\ ;
+大豆油 > daizuyu\ ;
+児童画 > jidouga\ ;
+演舞場 > enbujou\ ;
+似非事 > esegoto\ ;
+不結果 > fukekka\ ;
+地下化 > chikaka\ ;
+八百長 > yaochou\ ;
+過飽和 > kahouwa\ ;
+早少女 > saotome\ ;
+如何物 > ikamono\ ;
+版画家 > hangaka\ ;
+愛飲者 > aiinsha\ ;
+安定器 > anteiki\ ;
+駄菓子 > dagashi\ ;
+唐胡麻 > tougoma\ ;
+停音符 > teionpu\ ;
+園芸家 > engeika\ ;
+投影機 > toueiki\ ;
+英吉利 > igirisu\ ;
+座布団 > zabuton\ ;
+無声音 > museion\ ;
+唐茄子 > tounasu\ ;
+日本語 > nihongo\ ;
+従三位 > jusanmi\ ;
+婦女子 > fujoshi\ ;
+工事費 > koujihi\ ;
+温度計 > ondokei\ ;
+安定化 > anteika\ ;
+法螺貝 > horagai\ ;
+非常時 > hijouji\ ;
+八千代 > yachiyo\ ;
+不細工 > busaiku\ ;
+余水路 > yosuiro\ ;
+相違点 > souiten\ ;
+曼荼羅 > mandara\ ;
+地雷火 > jiraika\ ;
+公務員 > koumuin\ ;
+案山子 > kakashi\ ;
+古代語 > kodaigo\ ;
+生一本 > kiippon\ ;
+身贔屓 > mibiiki\ ;
+未整理 > miseiri\ ;
+予科生 > yokasei\ ;
+未経過 > mikeika\ ;
+海松貝 > mirugai\ ;
+兵児帯 > hekoobi\ ;
+身奇麗 > migirei\ ;
+検査員 > kensain\ ;
+危機感 > kikikan\ ;
+赤茄子 > akanasu\ ;
+端武者 > hamusha\ ;
+印度人 > indojin\ ;
+内安打 > naianda\ ;
+屋根板 > yaneita\ ;
+無期刑 > mukikei\ ;
+記念碑 > kinenhi\ ;
+都市化 > toshika\ ;
+府知事 > fuchiji\ ;
+内耳炎 > naijien\ ;
+北京語 > pekingo\ ;
+犬小屋 > inugoya\ ;
+彼岸会 > higan''e\ ;
+相弟子 > aideshi\ ;
+鳳凰座 > hououza\ ;
+咽頭炎 > intouen\ ;
+投影図 > toueizu\ ;
+不衛生 > fueisei\ ;
+整理部 > seiribu\ ;
+入母屋 > irimoya\ ;
+多趣味 > tashumi\ ;
+音記号 > onkigou\ ;
+小坊主 > kobouzu\ ;
+日本画 > nihonga\ ;
+紀元後 > kigengo\ ;
+体温器 > taionki\ ;
+微温湯 > biontou\ ;
+貴婦人 > kifujin\ ;
+右大臣 > udaijin\ ;
+帰化人 > kikajin\ ;
+戦後派 > sengoha\ ;
+受像機 > juzouki\ ;
+記念樹 > kinenju\ ;
+粉微塵 > komijin\ ;
+為政者 > iseisha\ ;
+大犬座 > ooinuza\ ;
+日時計 > hidokei\ ;
+時事論 > jijiron\ ;
+保養院 > hoyouin\ ;
+自然薯 > jinenjo\ ;
+保健所 > hokenjo\ ;
+離弁花 > ribenka\ ;
+次世代 > jisedai\ ;
+不器用 > bukiyou\ ;
+手奇麗 > tegirei\ ;
+塩基性 > enkisei\ ;
+記念日 > kinenbi\ ;
+高祖父 > kousofu\ ;
+今日中 > kyoujuu\ ;
+身綺麗 > migirei\ ;
+萎黄病 > ioubyou\ ;
+擬古文 > gikobun\ ;
+地衣類 > chiirui\ ;
+婆羅門 > baramon\ ;
+秘書課 > hishoka\ ;
+印画紙 > ingashi\ ;
+予想屋 > yosouya\ ;
+慈善家 > jizenka\ ;
+早乙女 > saotome\ ;
+土曜日 > doyoubi\ ;
+降雨林 > kouurin\ ;
+朝風呂 > asaburo\ ;
+再下付 > saikafu\ ;
+洋画家 > yougaka\ ;
+定規座 > jougiza\ ;
+需用家 > juyouka\ ;
+保健婦 > hokenfu\ ;
+高祖母 > kousobo\ ;
+外耳炎 > gaijien\ ;
+不裁可 > fusaika\ ;
+警備員 > keibiin\ ;
+誤作動 > gosadou\ ;
+仮名本 > kanahon\ ;
+助産所 > josanjo\ ;
+大時代 > oojidai\ ;
+枸櫞酸 > kuensan\ ;
+虚無僧 > komusou\ ;
+嬰記号 > eikigou\ ;
+保健医 > hoken''i\ ;
+二十歳 > hatachi\ ;
+頭字語 > toujigo\ ;
+木太刀 > kidachi\ ;
+蓮華座 > rengeza\ ;
+愛書家 > aishoka\ ;
+馬刀貝 > mategai\ ;
+趣意書 > shuisho\ ;
+運搬費 > unpanhi\ ;
+攘夷論 > jouiron\ ;
+懐疑派 > kaigiha\ ;
+無煙炭 > muentan\ ;
+安静時 > anseiji\ ;
+女生徒 > joseito\ ;
+虎燕拳 > koenken\ ;
+正常位 > seijoui\ ;
+補助金 > hojokin\ ;
+阿婆擦 > abazure\ ;
+二十日 > hatsuka\ ;
+琵琶行 > biwakou\ ;
+秘書科 > hishoka\ ;
+助産婦 > josanpu\ ;
+修羅場 > shuraba\ ;
+手一杯 > teippai\ ;
+無線機 > musenki\ ;
+万灯会 > mandoue\ ;
+手綺麗 > tegirei\ ;
+水位計 > suiikei\ ;
+漢方医 > kanpoui\ ;
+羽目板 > hameita\ ;
+具体案 > gutaian\ ;
+日本化 > nihonka\ ;
+研磨機 > kenmaki\ ;
+大雑把 > oozappa\ ;
+古井戸 > furuido\ ;
+胃潰瘍 > ikaiyou\ ;
+多義性 > tagisei\ ;
+甘露煮 > kanroni\ ;
+乙女座 > otomeza\ ;
+保守派 > hoshuha\ ;
+叙事詩 > jojishi\ ;
+大掃除 > oosouji\ ;
+烏龍茶 > ūroncha\ ;
+女王蟻 > joouari\ ;
+半母音 > hanboin\ ;
+無政府 > museifu\ ;
+義和団 > giwadan\ ;
+好事家 > kouzuka\ ;
+行為者 > kouisha\ ;
+機関庫 > kikanko\ ;
+機関座 > kikanza\ ;
+同意見 > douiken\ ;
+議事堂 > gijidou\ ;
+天糸瓜 > hechima\ ;
+保安林 > hoanrin\ ;
+腐葉土 > fuyoudo\ ;
+海豚座 > irukaza\ ;
+自衛隊 > jieitai\ ;
+繊維素 > sen''iso\ ;
+移行性 > ikousei\ ;
+湯湯婆 > yutanpo\ ;
+交尾期 > koubiki\ ;
+陶磁器 > toujiki\ ;
+重馬場 > omobaba\ ;
+歳時記 > saijiki\ ;
+阿多福 > otafuku\ ;
+御節介 > osekkai\ ;
+菓子屋 > kashiya\ ;
+番小屋 > bangoya\ ;
+愛犬家 > aikenka\ ;
+耽美派 > tanbiha\ ;
+保育所 > hoikujo\ ;
+遊離基 > yuuriki\ ;
+互助会 > gojokai\ ;
+補助線 > hojosen\ ;
+事務所 > jimusho\ ;
+保護金 > hogokin\ ;
+菓子器 > kashiki\ ;
+愛妻家 > aisaika\ ;
+養父母 > youfubo\ ;
+起電機 > kidenki\ ;
+二死後 > nishigo\ ;
+葉牡丹 > habotan\ ;
+已然形 > izenkei\ ;
+単座機 > tanzaki\ ;
+大規模 > daikibo\ ;
+具体化 > gutaika\ ;
+保安官 > hoankan\ ;
+野獣派 > yajuuha\ ;
+電位差 > den''isa\ ;
+非対応 > hitaiou\ ;
+蓖麻子 > himashi\ ;
+裸体画 > rataiga\ ;
+事務官 > jimukan\ ;
+起訴状 > kisojou\ ;
+野暮用 > yaboyou\ ;
+無灯火 > mutouka\ ;
+無記名 > mukimei\ ;
+都議選 > togisen\ ;
+保育園 > hoikuen\ ;
+保育器 > hoikuki\ ;
+愛好家 > aikouka\ ;
+委任状 > ininjou\ ;
+用器画 > youkiga\ ;
+保養所 > hoyoujo\ ;
+家庭科 > kateika\ ;
+不名誉 > fumeiyo\ ;
+五輪旗 > gorinki\ ;
+作業衣 > sagyoui\ ;
+木戸銭 > kidosen\ ;
+耳下腺 > jikasen\ ;
+家庭着 > kateigi\ ;
+外陰部 > gaiinbu\ ;
+和菓子 > wagashi\ ;
+自在画 > jizaiga\ ;
+耕運機 > kouunki\ ;
+一回忌 > ikkaiki\ ;
+不可解 > fukakai\ ;
+不可視 > fukashi\ ;
+総理府 > sourifu\ ;
+二分木 > nibungi\ ;
+広辞苑 > koujien\ ;
+多数派 > tasuuha\ ;
+保護者 > hogosha\ ;
+夜間部 > yakanbu\ ;
+留守電 > rusuden\ ;
+掃除機 > soujiki\ ;
+事務会 > jimukai\ ;
+事前後 > jizengo\ ;
+菩提樹 > bodaiju\ ;
+貝独楽 > baigoma\ ;
+無防備 > muboubi\ ;
+不思議 > fushigi\ ;
+不穏当 > fuontou\ ;
+可塑材 > kasozai\ ;
+梳綿機 > somenki\ ;
+無手順 > mutejun\ ;
+尾状花 > bijouka\ ;
+便利屋 > benriya\ ;
+予知夢 > yochimu\ ;
+御神籤 > omikuji\ ;
+映写機 > eishaki\ ;
+保護税 > hogozei\ ;
+叙事文 > jojibun\ ;
+英会話 > eikaiwa\ ;
+不可能 > fukanou\ ;
+映画館 > eigakan\ ;
+風雲児 > fuuunji\ ;
+楕円形 > daenkei\ ;
+演奏家 > ensouka\ ;
+可塑性 > kasosei\ ;
+被除数 > hijosuu\ ;
+二次元 > nijigen\ ;
+手文庫 > tebunko\ ;
+一箇所 > ikkasho\ ;
+予備隊 > yobitai\ ;
+疑問符 > gimonfu\ ;
+固定費 > koteihi\ ;
+明治座 > meijiza\ ;
+理想家 > risouka\ ;
+土壇場 > dotanba\ ;
+二次会 > nijikai\ ;
+義務感 > gimukan\ ;
+三叉路 > sansaro\ ;
+波布茶 > habucha\ ;
+不愛想 > buaisou\ ;
+一箇年 > ikkanen\ ;
+予備金 > yobikin\ ;
+不可知 > fukachi\ ;
+菩提寺 > bodaiji\ ;
+硫黄山 > iouyama\ ;
+素因数 > soinsuu\ ;
+仏蘭西 > furansu\ ;
+不合理 > fugouri\ ;
+掃除婦 > soujifu\ ;
+野暮天 > yaboten\ ;
+家具等 > kagutou\ ;
+薔薇色 > barairo\ ;
+不愉快 > fuyukai\ ;
+農機具 > noukigu\ ;
+輸送費 > yusouhi\ ;
+看護婦 > kangofu\ ;
+御神火 > gojinka\ ;
+予備軍 > yobigun\ ;
+古文書 > komonjo\ ;
+自衛権 > jieiken\ ;
+掃除器 > soujiki\ ;
+理想化 > risouka\ ;
+合氣道 > aikidou\ ;
+点火器 > tenkaki\ ;
+羽二重 > habutae\ ;
+規準化 > kijunka\ ;
+高度差 > koudosa\ ;
+合気道 > aikidou\ ;
+無器用 > bukiyou\ ;
+寄付金 > kifukin\ ;
+火口湖 > kakouko\ ;
+政治屋 > seijiya\ ;
+個々人 > kokojin\ ;
+可塑剤 > kasozai\ ;
+政治家 > seijika\ ;
+運営費 > un''eihi\ ;
+蝦夷菊 > ezogiku\ ;
+保護林 > hogorin\ ;
+木戸番 > kidoban\ ;
+浅知恵 > asadjie\ ;
+青豌豆 > aoendou\ ;
+女丈夫 > jojoubu\ ;
+円記号 > enkigou\ ;
+亜寒帯 > akantai\ ;
+江戸川 > edogawa\ ;
+比電荷 > hidenka\ ;
+幼児語 > youjigo\ ;
+暗暗裡 > an''anri\ ;
+不浄場 > fujouba\ ;
+暗暗裏 > an''anri\ ;
+湯治場 > toujiba\ ;
+脳味噌 > noumiso\ ;
+子画面 > kogamen\ ;
+可視化 > kashika\ ;
+不注意 > fuchuui\ ;
+護衛艦 > goeikan\ ;
+次打者 > jidasha\ ;
+披露宴 > hirouen\ ;
+自衛官 > jieikan\ ;
+留守番 > rusuban\ ;
+亜音速 > aonsoku\ ;
+御注意 > gochuui\ ;
+医科学 > ikagaku\ ;
+異方性 > ihousei\ ;
+無鑑査 > mukansa\ ;
+二番目 > nibanme\ ;
+硬化油 > koukayu\ ;
+映画祭 > eigasai\ ;
+映画社 > eigasha\ ;
+不正規 > fuseiki\ ;
+荊棘線 > barasen\ ;
+慰霊祭 > ireisai\ ;
+学校医 > gakkoui\ ;
+金文字 > kinmoji\ ;
+御法度 > gohatto\ ;
+気保養 > kihoyou\ ;
+鉄火場 > tekkaba\ ;
+勤務員 > kinmuin\ ;
+異星人 > iseijin\ ;
+映画界 > eigakai\ ;
+五畿内 > gokinai\ ;
+御破算 > gohasan\ ;
+普段着 > fudangi\ ;
+否定語 > hiteigo\ ;
+違憲性 > ikensei\ ;
+塩化銀 > enkagin\ ;
+保護司 > hogoshi\ ;
+得意気 > tokuige\ ;
+手細工 > tezaiku\ ;
+舎利塩 > sharien\ ;
+親馬鹿 > oyabaka\ ;
+舞踊家 > butouka\ ;
+奇形児 > kikeiji\ ;
+午後中 > gogojuu\ ;
+詭弁家 > kibenka\ ;
+胃洗浄 > isenjou\ ;
+不同化 > fudouka\ ;
+異教徒 > ikyouto\ ;
+湯加減 > yukagen\ ;
+非課税 > hikazei\ ;
+和楽器 > wagakki\ ;
+違法者 > ihousha\ ;
+輸送機 > yusouki\ ;
+与野党 > yoyatou\ ;
+引火点 > inkaten\ ;
+羽子板 > hagoita\ ;
+音沙汰 > otosata\ ;
+禾本科 > kahonka\ ;
+不可分 > fukabun\ ;
+鼠径部 > sokeibu\ ;
+乾菓子 > higashi\ ;
+無技巧 > mugikou\ ;
+都議会 > togikai\ ;
+予備校 > yobikou\ ;
+観世音 > kanzeon\ ;
+半過去 > hankako\ ;
+不参加 > fusanka\ ;
+違反者 > ihansha\ ;
+恣意性 > shiisei\ ;
+付加税 > fukazei\ ;
+時計座 > tokeiza\ ;
+部屋代 > heyadai\ ;
+母音性 > boinsei\ ;
+不得意 > futokui\ ;
+電話機 > denwaki\ ;
+無担保 > mutanpo\ ;
+措辞法 > sojihou\ ;
+八九分 > hakkubu\ ;
+根太板 > nedaita\ ;
+火加減 > hikagen\ ;
+亜燐酸 > arinsan\ ;
+時計屋 > tokeiya\ ;
+青二才 > aonisai\ ;
+野放図 > nohouzu\ ;
+幼児期 > youjiki\ ;
+按摩膏 > anmakou\ ;
+気苦労 > kigurou\ ;
+政府案 > seifuan\ ;
+二王門 > nioumon\ ;
+予備役 > yobieki\ ;
+不道理 > fudouri\ ;
+金無垢 > kinmuku\ ;
+偽造印 > gizouin\ ;
+無批判 > muhihan\ ;
+図書費 > toshohi\ ;
+幸運児 > kouunji\ ;
+塩水湖 > ensuiko\ ;
+流布本 > rufubon\ ;
+山茶花 > sazanka\ ;
+移民法 > iminhou\ ;
+鬼百合 > oniyuri\ ;
+奈良県 > naraken\ ;
+不勝手 > fukatte\ ;
+天麩羅 > tenpura\ ;
+不利益 > furieki\ ;
+市吏員 > shiriin\ ;
+意見書 > ikensho\ ;
+慰霊塔 > ireitou\ ;
+我利勉 > gariben\ ;
+擬宝珠 > giboshi\ ;
+大和絵 > yamatoe\ ;
+小切手 > kogitte\ ;
+転路器 > tenroki\ ;
+判事補 > hanjiho\ ;
+屠蘇散 > tososan\ ;
+御広目 > ohirome\ ;
+参議院 > sangiin\ ;
+予備品 > yobihin\ ;
+理工科 > rikouka\ ;
+火葬場 > kasouba\ ;
+寒垢離 > kangori\ ;
+防衛費 > boueihi\ ;
+馬小屋 > umagoya\ ;
+予備兵 > yobihei\ ;
+小道具 > kodougu\ ;
+希元素 > kigenso\ ;
+世界語 > sekaigo\ ;
+護衛兵 > goeihei\ ;
+形而下 > keijika\ ;
+青電話 > aodenwa\ ;
+二枚目 > nimaime\ ;
+三差路 > sansaro\ ;
+他府県 > tafuken\ ;
+保線区 > hosenku\ ;
+出稽古 > degeiko\ ;
+不具者 > fugusha\ ;
+演算機 > enzanki\ ;
+干菓子 > higashi\ ;
+遺伝法 > idenhou\ ;
+医化学 > ikagaku\ ;
+遺家族 > ikazoku\ ;
+小利口 > korikou\ ;
+天気運 > tenkiun\ ;
+府議会 > fugikai\ ;
+保険医 > hoken''i\ ;
+止音器 > shionki\ ;
+合気会 > aikikai\ ;
+醍醐味 > daigomi\ ;
+意図的 > itoteki\ ;
+地磁気 > chijiki\ ;
+生意気 > namaiki\ ;
+四次元 > yojigen\ ;
+御目玉 > omedama\ ;
+公文所 > kumonjo\ ;
+御座所 > gozasho\ ;
+大鋸屑 > ogakuzu\ ;
+甘海苔 > amanori\ ;
+建議案 > kengian\ ;
+碁会所 > gokaijo\ ;
+防火戸 > boukado\ ;
+登山家 > tozanka\ ;
+炊事場 > suijiba\ ;
+無愛想 > buaisou\ ;
+英文科 > eibunka\ ;
+酸性雨 > sanseiu\ ;
+尊皇王 > son''nou\ ;
+派生語 > haseigo\ ;
+遺伝性 > idensei\ ;
+医療費 > iryouhi\ ;
+大祖父 > daisofu\ ;
+軍荼利 > gundari\ ;
+白亜紀 > hakuaki\ ;
+騎馬戦 > kibasen\ ;
+目一杯 > meippai\ ;
+記事文 > kijibun\ ;
+和太鼓 > wadaiko\ ;
+予定案 > yoteian\ ;
+符号器 > fugouki\ ;
+書記補 > shokiho\ ;
+応援団 > ouendan\ ;
+遺伝子 > idenshi\ ;
+除草器 > josouki\ ;
+予定日 > yoteibi\ ;
+保持者 > hojisha\ ;
+曼陀羅 > mandara\ ;
+単位元 > tanigen\ ;
+意地悪 > ijiwaru\ ;
+益荒男 > masurao\ ;
+上出来 > joudeki\ ;
+符号化 > fugouka\ ;
+不相応 > fusouou\ ;
+英語版 > eigoban\ ;
+重火器 > juukaki\ ;
+摩利支 > marishi\ ;
+異端視 > itanshi\ ;
+葬儀屋 > sougiya\ ;
+項位置 > kouichi\ ;
+医師法 > ishihou\ ;
+葡萄園 > budouen\ ;
+五斗米 > gotobei\ ;
+可愛気 > kawaige\ ;
+五線譜 > gosenfu\ ;
+御府内 > gofunai\ ;
+子馬座 > koumaza\ ;
+小芥子 > kokeshi\ ;
+恒温器 > kouonki\ ;
+知恵者 > chiesha\ ;
+遺贈分 > izoubun\ ;
+太刀魚 > tachiuo\ ;
+助演者 > joensha\ ;
+代理部 > dairibu\ ;
+移動体 > idoutai\ ;
+運動費 > undouhi\ ;
+天鵝絨 > biroudo\ ;
+一酸化 > issanka\ ;
+遠距離 > enkyori\ ;
+佐賀県 > sagaken\ ;
+高音部 > kouonbu\ ;
+異端者 > itansha\ ;
+弥次馬 > yajiuma\ ;
+耕耘機 > kouunki\ ;
+感化院 > kankain\ ;
+不機嫌 > fukigen\ ;
+部外秘 > bugaihi\ ;
+亜熱帯 > anettai\ ;
+富士山 > fujisan\ ;
+指揮所 > shikijo\ ;
+生醤油 > kijouyu\ ;
+浄瑠璃 > joururi\ ;
+補佐官 > hosakan\ ;
+過去形 > kakokei\ ;
+草仮名 > sougana\ ;
+御機嫌 > gokigen\ ;
+不履行 > furikou\ ;
+擬人化 > gijinka\ ;
+分度器 > bundoki\ ;
+出目金 > demekin\ ;
+夜汽車 > yogisha\ ;
+左派系 > sahakei\ ;
+詐欺罪 > sagizai\ ;
+饂飩屋 > udon''ya\ ;
+夢想家 > musouka\ ;
+記譜法 > kifuhou\ ;
+一死後 > isshigo\ ;
+非衛生 > hieisei\ ;
+誤投下 > gotouka\ ;
+不自由 > fujiyuu\ ;
+英数字 > eisuuji\ ;
+知情意 > chijoui\ ;
+風呂桶 > furooke\ ;
+英語圏 > eigoken\ ;
+低音部 > teionbu\ ;
+二期制 > nikisei\ ;
+擬声語 > giseigo\ ;
+用務員 > youmuin\ ;
+御苦労 > gokurou\ ;
+未登記 > mitouki\ ;
+簡易化 > kan''ika\ ;
+一過性 > ikkasei\ ;
+運送費 > unsouhi\ ;
+医師会 > ishikai\ ;
+自叙伝 > jijoden\ ;
+天気屋 > tenkiya\ ;
+難易度 > nan''ido\ ;
+仮数部 > kasuubu\ ;
+十字路 > juujiro\ ;
+鼠蹊部 > sokeibu\ ;
+負符号 > fufugou\ ;
+大御所 > oogosho\ ;
+分布図 > bunpuzu\ ;
+製図家 > seizuka\ ;
+戦時下 > senjika\ ;
+天気図 > tenkizu\ ;
+賛美歌 > sanbika\ ;
+軍事費 > gunjihi\ ;
+炎天下 > entenka\ ;
+肥満児 > himanji\ ;
+浪漫派 > romanha\ ;
+起重機 > kijuuki\ ;
+圧砕機 > assaiki\ ;
+回路図 > kairozu\ ;
+兵器庫 > heikiko\ ;
+岐阜県 > gifuken\ ;
+庶務課 > shomuka\ ;
+離縁状 > rienjou\ ;
+正規化 > seikika\ ;
+今出来 > imadeki\ ;
+検波器 > kenpaki\ ;
+絵双紙 > ezoushi\ ;
+下付金 > kafukin\ ;
+避難所 > hinanjo\ ;
+片意地 > kataiji\ ;
+医学部 > igakubu\ ;
+予報音 > yohouon\ ;
+風呂代 > furodai\ ;
+後知恵 > atodjie\ ;
+差機関 > sakikan\ ;
+委員長 > iinchou\ ;
+詐欺師 > sagishi\ ;
+外祖父 > gaisofu\ ;
+論理和 > ronriwa\ ;
+野営地 > yaeichi\ ;
+雰囲気 > fun''iki\ ;
+因美線 > inbisen\ ;
+気丈夫 > kijoubu\ ;
+初期化 > shokika\ ;
+歩行器 > hokouki\ ;
+湯豆腐 > yudoufu\ ;
+裏背戸 > urasedo\ ;
+加算機 > kasanki\ ;
+放生会 > houjoue\ ;
+育児院 > ikujiin\ ;
+不作為 > fusakui\ ;
+武装具 > busougu\ ;
+下駄番 > getaban\ ;
+自動化 > jidouka\ ;
+無遠慮 > buenryo\ ;
+運動場 > undouba\ ;
+家計費 > kakeihi\ ;
+音楽家 > ongakka\ ;
+外祖母 > gaisobo\ ;
+労務課 > roumuka\ ;
+無軌道 > mukidou\ ;
+不作法 > busahou\ ;
+十字火 > juujika\ ;
+胃痙攣 > ikeiren\ ;
+運動員 > undouin\ ;
+機械語 > kikaigo\ ;
+美容院 > biyouin\ ;
+一転機 > ittenki\ ;
+杓文字 > shamoji\ ;
+探査機 > tansaki\ ;
+田舎家 > inakaya\ ;
+運転費 > untenhi\ ;
+橙皮油 > touhiyu\ ;
+過年度 > kanendo\ ;
+運動具 > undougu\ ;
+御存知 > gozonji\ ;
+家政科 > kaseika\ ;
+小奇麗 > kogirei\ ;
+移住者 > ijuusha\ ;
+道具屋 > douguya\ ;
+同義語 > dougigo\ ;
+模擬戦 > mogisen\ ;
+蒲公英 > tanpopo\ ;
+稽古着 > keikogi\ ;
+下世話 > gesewa\ ;
+迦楼羅 > karura\ ;
+手忠実 > temame\ ;
+駄洒落 > dajare\ ;
+下駄屋 > getaya\ ;
+駄法螺 > dabora\ ;
+過保護 > kahogo\ ;
+非営利 > hieiri\ ;
+経緯儀 > keiigi\ ;
+呑兵衛 > nonbee\ ;
+不義理 > fugiri\ ;
+有意差 > yuuisa\ ;
+高緯度 > kouido\ ;
+不貞寝 > futene\ ;
+歯医者 > haisha\ ;
+似顔絵 > nigaoe\ ;
+歯科医 > shikai\ ;
+火事場 > kajiba\ ;
+豪雨禍 > gouuka\ ;
+亜麻製 > amasei\ ;
+似顔画 > nigaoe\ ;
+駄酒落 > dajare\ ;
+山羊座 > yagiza\ ;
+卒塔婆 > sotoba\ ;
+亜麻色 > amairo\ ;
+青海苔 > aonori\ ;
+似非親 > eseoya\ ;
+亜麻糸 > amaito\ ;
+六十路 > musoji\ ;
+亜温帯 > aontai\ ;
+余所見 > yosomi\ ;
+委員会 > iinkai\ ;
+依存度 > izondo\ ;
+阿僧祇 > asougi\ ;
+八十路 > yasoji\ ;
+伊勢蝦 > iseebi\ ;
+伊勢蛯 > iseebi\ ;
+曾祖父 > hijiji\ ;
+見栄坊 > miebou\ ;
+亜鉛版 > aenban\ ;
+御猪口 > ochoko\ ;
+鮎並女 > ainame\ ;
+平易化 > heiika\ ;
+安保理 > anpori\ ;
+曾祖母 > hibaba\ ;
+籐椅子 > touisu\ ;
+小文字 > komoji\ ;
+余所目 > yosome\ ;
+下院議 > kaingi\ ;
+孵化器 > fukaki\ ;
+亜鉛板 > aenban\ ;
+手真似 > temane\ ;
+不如意 > funyoi\ ;
+湯文字 > yumoji\ ;
+異機種 > ikishu\ ;
+亜砒酸 > ahisan\ ;
+阿修羅 > ashura\ ;
+御雑煮 > ozouni\ ;
+皮膚科 > hifuka\ ;
+弟小父 > otooji\ ;
+主治医 > shujii\ ;
+不誠意 > fuseii\ ;
+御詠歌 > goeika\ ;
+胃下垂 > ikasui\ ;
+刷毛目 > hakeme\ ;
+甲烏賊 > kouika\ ;
+伊達着 > dategi\ ;
+御見舞 > omimai\ ;
+背文字 > semoji\ ;
+優曇華 > udonge\ ;
+御襁褓 > omutsu\ ;
+西班牙 > supein\ ;
+不見目 > mijime\ ;
+蕎麦粉 > sobako\ ;
+梭子魚 > kamasu\ ;
+不随意 > fuzuii\ ;
+紫陽花 > ajisai\ ;
+野良着 > noragi\ ;
+于蘭盆 > urabon\ ;
+苦味素 > kumiso\ ;
+無事故 > mujiko\ ;
+一昨日 > ototoi\ ;
+出来値 > dekine\ ;
+伊勢丹 > isetan\ ;
+飲兵衛 > nonbee\ ;
+此処等 > kokora\ ;
+露西亜 > roshia\ ;
+目医者 > meisha\ ;
+如何様 > ikayou\ ;
+破魔矢 > hamaya\ ;
+相部屋 > aibeya\ ;
+孤児院 > kojiin\ ;
+今日日 > kyoubi\ ;
+荼枳尼 > dakini\ ;
+海老錠 > ebijou\ ;
+蕎麦屋 > sobaya\ ;
+雌捻子 > meneji\ ;
+古事記 > kojiki\ ;
+真面目 > majime\ ;
+那由他 > nayuta\ ;
+倶楽部 > kurabu\ ;
+屋根屋 > yaneya\ ;
+海老茶 > ebicha\ ;
+阿媽港 > amakou\ ;
+磁方位 > jihoui\ ;
+鍛冶屋 > kajiya\ ;
+塩基度 > enkido\ ;
+矢羽根 > yabane\ ;
+百合根 > yurine\ ;
+阿羅漢 > arakan\ ;
+野路子 > nojiko\ ;
+雌螺子 > meneji\ ;
+土下座 > dogeza\ ;
+慰安者 > iansha\ ;
+絵日記 > enikki\ ;
+陀羅尼 > darani\ ;
+羅方位 > rahoui\ ;
+異体字 > itaiji\ ;
+同意語 > douigo\ ;
+韋駄天 > idaten\ ;
+為政家 > iseika\ ;
+二度目 > nidome\ ;
+数寄屋 > sukiya\ ;
+同意義 > douigi\ ;
+大袈裟 > oogesa\ ;
+事務屋 > jimuya\ ;
+浮世絵 > ukiyoe\ ;
+琵琶湖 > biwako\ ;
+事務家 > jimuka\ ;
+加留多 > karuta\ ;
+不可避 > fukahi\ ;
+事務器 > jimuki\ ;
+御洒落 > oshare\ ;
+事務員 > jimuin\ ;
+植木屋 > uekiya\ ;
+不可誤 > fukago\ ;
+御釈迦 > oshaka\ ;
+印字機 > injiki\ ;
+硫黄泉 > iousen\ ;
+卒都婆 > sotoba\ ;
+偉丈夫 > ijoufu\ ;
+布海苔 > funori\ ;
+眼医者 > meisha\ ;
+眼科医 > gankai\ ;
+慰安会 > iankai\ ;
+披露目 > hirome\ ;
+予備馬 > yobiba\ ;
+気化器 > kikaki\ ;
+武者絵 > mushae\ ;
+風土記 > fudoki\ ;
+御河童 > okappa\ ;
+愛煙家 > aienka\ ;
+部屋着 > heyagi\ ;
+予備費 > yobihi\ ;
+瀘過器 > rokaki\ ;
+補助員 > hojoin\ ;
+比丘尼 > bikuni\ ;
+波止場 > hatoba\ ;
+易動度 > idoudo\ ;
+絵図面 > ezumen\ ;
+裸婦画 > rafuga\ ;
+歩一歩 > hoippo\ ;
+三十路 > misoji\ ;
+不沙汰 > busata\ ;
+不死身 > fujimi\ ;
+告天子 > hibari\ ;
+加奈陀 > kanada\ ;
+以遠権 > ienken\ ;
+施餓鬼 > segaki\ ;
+三重県 > mieken\ ;
+御沙汰 > gosata\ ;
+毛繻子 > kejusu\ ;
+不同意 > fudoui\ ;
+予備科 > yobika\ ;
+江戸前 > edomae\ ;
+盂蘭盆 > urabon\ ;
+保護区 > hogoku\ ;
+浅茅生 > asajiu\ ;
+家具屋 > kaguya\ ;
+小気味 > kokimi\ ;
+天蚕糸 > tegusu\ ;
+異文化 > ibunka\ ;
+夜見世 > yomise\ ;
+位相差 > isousa\ ;
+数奇屋 > sukiya\ ;
+薔薇園 > baraen\ ;
+過渡期 > katoki\ ;
+居場所 > ibasho\ ;
+違和感 > iwakan\ ;
+生蕎麦 > kisoba\ ;
+寝間着 > nemaki\ ;
+三十日 > misoka\ ;
+不気味 > bukimi\ ;
+最下位 > saikai\ ;
+御歳暮 > oseibo\ ;
+予備員 > yobiin\ ;
+映画化 > eigaka\ ;
+欧印語 > ouingo\ ;
+図案家 > zuanka\ ;
+応援歌 > ouenka\ ;
+韋陀天 > idaten\ ;
+歌舞伎 > kabuki\ ;
+阿蘭陀 > oranda\ ;
+歌留多 > karuta\ ;
+無慈悲 > mujihi\ ;
+受話器 > juwaki\ ;
+翻車魚 > manbou\ ;
+不出来 > fudeki\ ;
+雑魚寝 > zakone\ ;
+伊太利 > itarii\ ;
+饂飩粉 > udonko\ ;
+甘海老 > amaebi\ ;
+小馬鹿 > kobaka\ ;
+御菓子 > okashi\ ;
+産科医 > sankai\ ;
+三知土 > tataki\ ;
+賓位語 > hinigo\ ;
+摩莫枳 > mamaki\ ;
+小百合 > sayuri\ ;
+無沙汰 > busata\ ;
+烏帽子 > eboshi\ ;
+祖父母 > sofubo\ ;
+十六夜 > izayoi\ ;
+迂回路 > ukairo\ ;
+襤褸家 > boroya\ ;
+青紫蘇 > aojiso\ ;
+濾過器 > rokaki\ ;
+不具合 > fuguai\ ;
+知恵歯 > chieba\ ;
+不起訴 > fukiso\ ;
+無医村 > muison\ ;
+果樹園 > kajuen\ ;
+御転婆 > otenba\ ;
+風呂屋 > furoya\ ;
+意味論 > imiron\ ;
+無邪気 > mujaki\ ;
+風呂場 > furoba\ ;
+阿蘇山 > asosan\ ;
+鮎魚女 > ainame\ ;
+御家芸 > oiegei\ ;
+無気味 > bukimi\ ;
+内科医 > naikai\ ;
+大部屋 > oobeya\ ;
+堕胎医 > dataii\ ;
+不用意 > fuyoui\ ;
+久慈目 > kujime\ ;
+大御代 > oomiyo\ ;
+有意義 > yuuigi\ ;
+野薔薇 > nobara\ ;
+梅雨期 > baiuki\ ;
+耳鼻科 > jibika\ ;
+画架座 > gakaza\ ;
+不安気 > fuange\ ;
+大出来 > oodeki\ ;
+風邪気 > kazeke\ ;
+武器庫 > bukiko\ ;
+伊呂波 > iroha\ ;
+亜鉛華 > aenka\ ;
+維持費 > ijihi\ ;
+依估地 > ekoji\ ;
+意気地 > ikuji\ ;
+秋刀魚 > sanma\ ;
+八重歯 > yaeba\ ;
+大伯父 > oooji\ ;
+大伯母 > oooba\ ;
+紫雲英 > genge\ ;
+未曾有 > mizou\ ;
+伯父貴 > ojiki\ ;
+亜麻仁 > amani\ ;
+五十路 > isoji\ ;
+木乃伊 > miira\ ;
+二十重 > hatae\ ;
+作務衣 > samue\ ;
+居留守 > irusu\ ;
+寝椅子 > neisu\ ;
+座椅子 > zaisu\ ;
+雪花菜 > okara\ ;
+八百屋 > yaoya\ ;
+硫黄華 > iouka\ ;
+小意気 > koiki\ ;
+御神酒 > omiki\ ;
+伊佐木 > isaki\ ;
+慰安婦 > ianfu\ ;
+大見得 > oomie\ ;
+射手座 > iteza\ ;
+不意気 > buiki\ ;
+荏胡麻 > egoma\ ;
+絵文字 > emoji\ ;
+五倍子 > fushi\ ;
+恵比寿 > ebisu\ ;
+留守居 > rusui\ ;
+不得手 > fuete\ ;
+無意義 > muigi\ ;
+依怙地 > ekoji\ ;
+香具師 > yashi\ ;
+大叔父 > oooji\ ;
+無意味 > muimi\ ;
+大叔母 > oooba\ ;
+意固地 > ikoji\ ;
+御辞儀 > ojigi\ ;
+阿弥陀 > amida\ ;
+居合道 > iadou\ ;
+未通女 > oboko\ ;
+囲炉裏 > irori\ ;
+御世辞 > oseji\ ;
+外科医 > gekai\ ;
+石斑魚 > ugui\ ;
+如雨露 > joro\ ;
+百舌鳥 > mozu\ ;
+浮塵子 > unka\ ;
+亜細亜 > ajia\ ;
+似而非 > ese\ ;
+昔話 > mukashibanashi\ ;
+亥年 > inoshishidoshi\ ;
+話話 > hanashibanashi\ ;
+下唇 > shitakuchibiru\ ;
+昔昔 > mukashimukashi\ ;
+昔々 > mukashimukashi\ ;
+話々 > hanashibanashi\ ;
+私立 > watakushiritsu\ ;
+懐刀 > futokorogatana\ ;
+忝涙 > katajikenamida\ ;
+南東 > minamihigashi\ ;
+古兵 > furutsuwamono\ ;
+内踝 > uchikurubushi\ ;
+舌鼓 > shitatsudzumi\ ;
+健者 > shitatakamono\ ;
+桜祭 > sakuramatsuri\ ;
+乳窄 > chichishibori\ ;
+賢所 > kashikodokoro\ ;
+面魂 > tsuradamashii\ ;
+仏作 > hotokedzukuru\ ;
+東南 > higashiminami\ ;
+天牛 > kamikirimushi\ ;
+夢幻 > yumemaboroshi\ ;
+恙虫 > tsutsugamushi\ ;
+私共 > watakushidomo\ ;
+私事 > watakushigoto\ ;
+都忘 > miyakowasure\ ;
+道標 > michishirube\ ;
+辻社 > tsujiyashiro\ ;
+若紫 > wakamurasaki\ ;
+畳鰯 > tatamiiwashi\ ;
+盲暦 > mekuragoyomi\ ;
+腹鼓 > haratsudzumi\ ;
+内懐 > uchibutokoro\ ;
+鰻丼 > unagidonburi\ ;
+躾方 > shitsukekata\ ;
+僻心 > higamigokoro\ ;
+椿油 > tsubakiabura\ ;
+柏餅 > kashiwamochi\ ;
+柄頭 > tsukagashira\ ;
+俄盲 > niwakamekura\ ;
+枕詞 > makurakotoba\ ;
+候所 > souroutokoro\ ;
+桂男 > katsuraotoko\ ;
+山懐 > yamafutokoro\ ;
+丼飯 > donburimeshi\ ;
+丼鉢 > donburibachi\ ;
+倒事 > sakasamagoto\ ;
+暁闇 > akatsukiyami\ ;
+松毬 > matsupokkuri\ ;
+頭虱 > atamashirami\ ;
+松林 > matsubayashi\ ;
+束柱 > tsukabashira\ ;
+仏心 > hotokegokoro\ ;
+未年 > hitsujidoshi\ ;
+谷懐 > tanibutokoro\ ;
+雁骨 > kariganebone\ ;
+東口 > higashiguchi\ ;
+杯事 > sakazukigoto\ ;
+独枕 > hitorimakura\ ;
+一塊 > hitokatamari\ ;
+娘心 > musumegokoro\ ;
+夏祭 > natsumatsuri\ ;
+昔式 > mukashishiki\ ;
+妹娘 > imoutomusume\ ;
+霜柱 > shimobashira\ ;
+星印 > hoshijirushi\ ;
+袋鼠 > fukuronezumi\ ;
+続柄 > tsudzukigara\ ;
+土蛍 > tsuchibotaru\ ;
+土煙 > tsuchikemuri\ ;
+懐銭 > futokorozeni\ ;
+鋸鮫 > nokogirizame\ ;
+土埃 > tsuchibokori\ ;
+蛍袋 > hotarubukuro\ ;
+懐紙 > futokorogami\ ;
+私達 > watashitachi\ ;
+所所 > tokorodokoro\ ;
+金鋸 > kanenokogiri\ ;
+戯事 > tawamuregoto\ ;
+品形 > shinakatachi\ ;
+勢車 > hazumiguruma\ ;
+哀哉 > kanashiikana\ ;
+所々 > tokorodokoro\ ;
+水盃 > mizusakazuki\ ;
+包紙 > tsutsumigami\ ;
+水杯 > mizusakazuki\ ;
+帯鋸 > obinokogiri\ ;
+召使 > meshitsukai\ ;
+力石 > chikaraishi\ ;
+白鼠 > shironezumi\ ;
+力瘤 > chikarakobu\ ;
+力水 > chikaramizu\ ;
+南口 > minamiguchi\ ;
+力業 > chikarawaza\ ;
+逆睫 > sakamatsuge\ ;
+鰹節 > katsuobushi\ ;
+兜虫 > kabutomushi\ ;
+形体 > narikatachi\ ;
+床柱 > tokobashira\ ;
+出没 > shutsubotsu\ ;
+左端 > hidarihashi\ ;
+巴瓦 > tomoegawara\ ;
+切日 > shimekiribi\ ;
+幼心 > osanagokoro\ ;
+花筵 > hanamushiro\ ;
+男鰥 > otokoyamome\ ;
+花祭 > hanamatsuri\ ;
+初姿 > hatsusugata\ ;
+高話 > takabanashi\ ;
+膝頭 > hizagashira\ ;
+巻柱 > makibashira\ ;
+底力 > sokodjikara\ ;
+畳表 > tatamiomote\ ;
+出力 > shutsuryoku\ ;
+桜餅 > sakuramochi\ ;
+桜飯 > sakurameshi\ ;
+直出 > chokushutsu\ ;
+畳職 > tatamishoku\ ;
+草冠 > kusakanmuri\ ;
+瓢虫 > tentoumushi\ ;
+左下 > hidarishita\ ;
+百出 > hyakushutsu\ ;
+若侍 > wakazamurai\ ;
+候由 > sourouyoshi\ ;
+伽話 > togibanashi\ ;
+松飾 > matsukazari\ ;
+東風 > higashikaze\ ;
+赤紫 > akamurasaki\ ;
+柳腰 > yanagigoshi\ ;
+男心 > otokogokoro\ ;
+人虱 > hitoshirami\ ;
+獣道 > kemonomichi\ ;
+一雫 > hitoshizuku\ ;
+羊雲 > hitsujigumo\ ;
+猿轡 > sarugutsuwa\ ;
+脈所 > myakudokoro\ ;
+但書 > tadashigaki\ ;
+腰刀 > koshigatana\ ;
+貢物 > mitsugimono\ ;
+客室 > kyakushitsu\ ;
+人柱 > hitobashira\ ;
+旗頭 > hatagashira\ ;
+子年 > nezumidoshi\ ;
+旋風 > tsumujikaze\ ;
+質実 > shitsujitsu\ ;
+丼物 > donburimono\ ;
+杖柱 > tsuehashira\ ;
+下瞼 > shitamabuta\ ;
+杉林 > sugibayashi\ ;
+晒者 > sarashimono\ ;
+一滴 > hitoshizuku\ ;
+中柱 > nakabashira\ ;
+狸爺 > tanukijijii\ ;
+嫡室 > chakushitsu\ ;
+狐猿 > kitsunezaru\ ;
+東北 > higashikita\ ;
+七月 > shichigatsu\ ;
+一昔 > hitomukashi\ ;
+東側 > higashigawa\ ;
+一撮 > hitotsumami\ ;
+飾付 > kazaritsuke\ ;
+嫡出 > chakushutsu\ ;
+下心 > shitagokoro\ ;
+夏衣 > natsugoromo\ ;
+不嗜 > butashinami\ ;
+雀蜂 > suzumebachi\ ;
+組頭 > kumigashira\ ;
+緑虫 > midorimushi\ ;
+雪礫 > yukitsubute\ ;
+旗標 > hatajirushi\ ;
+夢現 > yumeutsutsu\ ;
+雛祭 > hinamatsuri\ ;
+女旱 > on''nahideri\ ;
+女心 > on''nagokoro\ ;
+握鮨 > nigirizushi\ ;
+静心 > shizugokoro\ ;
+隣町 > tonarimachi\ ;
+大晦 > ootsugomori\ ;
+握飯 > nigirimeshi\ ;
+紫色 > murasakiiro\ ;
+旗印 > hatajirushi\ ;
+雪庇 > yukibisashi\ ;
+長話 > nagabanashi\ ;
+紙礫 > kamitsubute\ ;
+裸虫 > hadakamushi\ ;
+話中 > hanashichuu\ ;
+塵埃 > chirihokori\ ;
+鏡餅 > kagamimochi\ ;
+烏口 > karasuguchi\ ;
+端金 > hashitagane\ ;
+控室 > hikaeshitsu\ ;
+米印 > komejirushi\ ;
+唐錦 > karanishiki\ ;
+蝸牛 > dendenmushi\ ;
+黒鶫 > kurotsugumi\ ;
+錦蛇 > nishikihebi\ ;
+国侍 > kunizamurai\ ;
+港町 > minatomachi\ ;
+虫薬 > mushigusuri\ ;
+唐紅 > karakurenai\ ;
+磯鵯 > isohiyodori\ ;
+命綱 > inochidzuna\ ;
+金轡 > kanagutsuwa\ ;
+口車 > kuchiguruma\ ;
+取調 > torishirabe\ ;
+鼻柱 > hanabashira\ ;
+窯印 > kamajirushi\ ;
+蔦蘿 > tsutakazura\ ;
+取締 > torishimari\ ;
+蔦蔓 > tsutakazura\ ;
+氷袋 > kooribukuro\ ;
+南西 > minaminishi\ ;
+包金 > tsutsumikin\ ;
+古狐 > furugitsune\ ;
+力革 > chikaragawa\ ;
+私儀 > watakushigi\ ;
+力足 > chikaraashi\ ;
+私供 > watashidomo\ ;
+力負 > chikaramake\ ;
+水澄 > mizusumashi\ ;
+取扱 > toriatsukai\ ;
+鉄兜 > tetsukabuto\ ;
+氷枕 > koorimakura\ ;
+水柱 > mizubashira\ ;
+切通 > kiridooshi\ ;
+鯰髭 > namazuhige\ ;
+口口 > kuchiguchi\ ;
+初詣 > hatsumoude\ ;
+石畳 > ishidatami\ ;
+逆説 > gyakusetsu\ ;
+茸雲 > kinokogumo\ ;
+近道 > chikamichi\ ;
+近近 > chikadjika\ ;
+水心 > mizugokoro\ ;
+砂煙 > sunakemuri\ ;
+川魚 > kawazakana\ ;
+卯年 > usagidoshi\ ;
+近路 > chikamichi\ ;
+辻辻 > tsujitsuji\ ;
+北枕 > kitamakura\ ;
+確執 > kakushitsu\ ;
+氷室 > hyoushitsu\ ;
+決別 > ketsubetsu\ ;
+後技 > ushirowaza\ ;
+卍巴 > manjidomoe\ ;
+心室 > shinshitsu\ ;
+着色 > chakushoku\ ;
+円鏡 > marukagami\ ;
+遣直 > yarinaoshi\ ;
+着脱 > chakudatsu\ ;
+彗星 > houkiboshi\ ;
+円鉋 > marugan''na\ ;
+後後 > nochinochi\ ;
+卸商 > oroshishou\ ;
+辻褄 > tsujitsuma\ ;
+花鰹 > hanagatsuo\ ;
+鶴嘴 > tsuruhashi\ ;
+先隣 > sakidonari\ ;
+左足 > hidariashi\ ;
+得失 > tokushitsu\ ;
+咄々 > totsutotsu\ ;
+酒処 > sakedokoro\ ;
+歳月 > toshitsuki\ ;
+横車 > yokoguruma\ ;
+卓出 > takushutsu\ ;
+式日 > shikijitsu\ ;
+入質 > nyuushichi\ ;
+着着 > chakuchaku\ ;
+南側 > minamigawa\ ;
+皮衣 > kawagoromo\ ;
+区区 > machimachi\ ;
+着発 > chakuhatsu\ ;
+花鋏 > hanabasami\ ;
+庭漆 > niwaurushi\ ;
+砂嵐 > sunaarashi\ ;
+年男 > toshiotoko\ ;
+次次 > tsugitsugi\ ;
+刀疵 > katanakizu\ ;
+違棚 > chigaidana\ ;
+直筆 > chokuhitsu\ ;
+弐心 > futagokoro\ ;
+直立 > chokuritsu\ ;
+兜蟹 > kabutogani\ ;
+盲窓 > mekuramado\ ;
+出獄 > shutsugoku\ ;
+出猟 > shutsuryou\ ;
+砂埃 > sunabokori\ ;
+左耳 > hidarimimi\ ;
+力帯 > chikaraobi\ ;
+砂嚢 > sunabukuro\ ;
+光蘚 > hikarigoke\ ;
+花詞 > hanakotoba\ ;
+初氷 > hatsugoori\ ;
+苦艾 > nigayomogi\ ;
+出漁 > shutsuryou\ ;
+皿秤 > sarabakari\ ;
+殺伐 > satsubatsu\ ;
+沸々 > futsufutsu\ ;
+兎脣 > mitsukuchi\ ;
+座技 > suwariwaza\ ;
+口々 > kuchiguchi\ ;
+良質 > ryoushitsu\ ;
+槍衾 > yaribusuma\ ;
+逐日 > chikujitsu\ ;
+若緑 > wakamidori\ ;
+車賃 > kurumachin\ ;
+逆接 > gyakusetsu\ ;
+畑鼠 > hatanezumi\ ;
+着払 > chakubarai\ ;
+出撃 > shutsugeki\ ;
+峠道 > tougemichi\ ;
+年強 > toshidzuyo\ ;
+艶艶 > tsuyatsuya\ ;
+田鵑 > hototogisu\ ;
+山鯨 > yamakujira\ ;
+草枕 > kusamakura\ ;
+着実 > chakujitsu\ ;
+傷薬 > kizugusuri\ ;
+茶柱 > chabashira\ ;
+帚星 > houkiboshi\ ;
+直接 > chokusetsu\ ;
+底土 > sokotsuchi\ ;
+畳針 > tatamihari\ ;
+発熱 > hatsunetsu\ ;
+切実 > setsujitsu\ ;
+山颪 > yamaoroshi\ ;
+光物 > hikarimono\ ;
+剔出 > tekishutsu\ ;
+生魚 > namazakana\ ;
+直截 > chokusetsu\ ;
+偏辺 > katahorori\ ;
+花畑 > hanabatake\ ;
+候間 > sourouaida\ ;
+進出 > shinshutsu\ ;
+店卸 > tanaoroshi\ ;
+略述 > ryakujutsu\ ;
+常常 > tsunedzune\ ;
+疵薬 > kizugusuri\ ;
+別口 > betsukuchi\ ;
+八橋 > yatsuhashi\ ;
+辰年 > tatsudoshi\ ;
+別別 > betsubetsu\ ;
+尻餠 > shirimochi\ ;
+出国 > shutsugoku\ ;
+尻餅 > shirimochi\ ;
+区々 > machimachi\ ;
+白樺 > shirakanba\ ;
+八月 > hachigatsu\ ;
+踏車 > fumiguruma\ ;
+後々 > nochinochi\ ;
+略説 > ryakusetsu\ ;
+申込 > moushikomi\ ;
+切切 > setsusetsu\ ;
+盲壁 > mekurakabe\ ;
+鯨幕 > kujiramaku\ ;
+白星 > shiroboshi\ ;
+百日 > hyakunichi\ ;
+膜質 > makushitsu\ ;
+出入 > shutsunyuu\ ;
+年下 > toshishita\ ;
+係長 > kakarichou\ ;
+候調 > sourouchou\ ;
+鯨尺 > kujirajaku\ ;
+盛土 > moritsuchi\ ;
+花暦 > hanagoyomi\ ;
+直列 > chokuretsu\ ;
+甲蟹 > kabutogani\ ;
+冽冽 > retsuretsu\ ;
+入室 > nyuushitsu\ ;
+山荒 > yamaarashi\ ;
+傑物 > ketsubutsu\ ;
+略筆 > ryakuhitsu\ ;
+左利 > hidarikiki\ ;
+伸餅 > noshimochi\ ;
+内冑 > uchikabuto\ ;
+内兜 > uchikabuto\ ;
+左側 > hidarigawa\ ;
+入口 > hairiguchi\ ;
+室長 > shitsuchou\ ;
+優姿 > yasasugata\ ;
+兎口 > mitsukuchi\ ;
+申立 > moushitate\ ;
+核質 > kakushitsu\ ;
+植物 > shokubutsu\ ;
+岩燕 > iwatsubame\ ;
+次々 > tsugitsugi\ ;
+儲口 > moukeguchi\ ;
+棟瓦 > munagawara\ ;
+高枕 > takamakura\ ;
+脹脛 > fukurahagi\ ;
+高曇 > takagumori\ ;
+桜花 > sakurabana\ ;
+桑苺 > kuwaichigo\ ;
+脚色 > kyakushoku\ ;
+桜肉 > sakuraniku\ ;
+肩車 > kataguruma\ ;
+別々 > betsubetsu\ ;
+質量 > shitsuryou\ ;
+畜殺 > chikusatsu\ ;
+杜鵑 > hototogisu\ ;
+脈脈 > myakumyaku\ ;
+着々 > chakuchaku\ ;
+楔形 > kusabigata\ ;
+桜紙 > sakuragami\ ;
+切々 > setsusetsu\ ;
+病室 > byoushitsu\ ;
+芋侍 > imozamurai\ ;
+肉質 > nikushitsu\ ;
+近々 > chikadjika\ ;
+宝船 > takarabune\ ;
+山桜 > yamazakura\ ;
+側室 > sokushitsu\ ;
+膝枕 > hizamakura\ ;
+乳首 > chichikubi\ ;
+常々 > tsunedzune\ ;
+子規 > hototogisu\ ;
+極力 > kyokuryoku\ ;
+辻々 > tsujitsuji\ ;
+桑畑 > kuwabatake\ ;
+略式 > ryakushiki\ ;
+冽々 > retsuretsu\ ;
+枕許 > makuramoto\ ;
+宝籤 > takarakuji\ ;
+宝箱 > takarabako\ ;
+質草 > shichigusa\ ;
+骨壷 > kotsutsubo\ ;
+宿直 > shukuchoku\ ;
+備付 > sonaetsuke\ ;
+略奪 > ryakudatsu\ ;
+山嵐 > yamaarashi\ ;
+松虫 > matsumushi\ ;
+乳質 > nyuushitsu\ ;
+両隣 > ryoudonari\ ;
+屡屡 > shibashiba\ ;
+群雀 > murasuzume\ ;
+木質 > mokushitsu\ ;
+実物 > jitsubutsu\ ;
+質種 > shichigusa\ ;
+下露 > shitatsuyu\ ;
+畜力 > chikuryoku\ ;
+寒椿 > kantsubaki\ ;
+質的 > shitsuteki\ ;
+棚卸 > tanaoroshi\ ;
+梔子 > kuchinashi\ ;
+驀地 > masshigura\ ;
+山刀 > yamagatana\ ;
+下道 > shitamichi\ ;
+不躾 > bushitsuke\ ;
+生卵 > namatamago\ ;
+風薬 > kazegusuri\ ;
+曲説 > kyokusetsu\ ;
+丸裸 > maruhadaka\ ;
+飯粒 > meshitsubu\ ;
+猫車 > nekoguruma\ ;
+三越 > mitsukoshi\ ;
+客月 > kyakugetsu\ ;
+時鳥 > hototogisu\ ;
+顔貌 > kaokatachi\ ;
+室料 > shitsuryou\ ;
+尺八 > shakuhachi\ ;
+艶々 > tsuyatsuya\ ;
+東男 > azumaotoko\ ;
+寝室 > shinshitsu\ ;
+質樸 > shitsuboku\ ;
+肘枕 > hijimakura\ ;
+仏滅 > butsumetsu\ ;
+小包 > kodzutsumi\ ;
+密密 > mitsumitsu\ ;
+就中 > nakandzuku\ ;
+上蓆 > uwamushiro\ ;
+質朴 > shitsuboku\ ;
+脱力 > datsuryoku\ ;
+質札 > shichifuda\ ;
+三菱 > mitsubishi\ ;
+仮枕 > karimakura\ ;
+供出 > kyoushutsu\ ;
+宮室 > kyuushitsu\ ;
+春霞 > harugasumi\ ;
+食物 > shokumotsu\ ;
+昔風 > mukashifuu\ ;
+宝島 > takarajima\ ;
+仏様 > hotokesama\ ;
+脚力 > kyakuryoku\ ;
+下職 > shitashoku\ ;
+曲節 > kyokusetsu\ ;
+曲筆 > kyokuhitsu\ ;
+一纏 > hitomatome\ ;
+飯櫃 > meshibitsu\ ;
+貝柱 > kaibashira\ ;
+上筵 > uwamushiro\ ;
+曲直 > kyokuchoku\ ;
+丸瓦 > marugawara\ ;
+七竈 > nanakamado\ ;
+一穴 > hitotsuana\ ;
+孫娘 > magomusume\ ;
+仏性 > hotokeshou\ ;
+静静 > shizushizu\ ;
+実力 > jitsuryoku\ ;
+曲率 > kyokuritsu\ ;
+大鼓 > ootsudzumi\ ;
+狐色 > kitsuneiro\ ;
+特質 > tokushitsu\ ;
+一睡 > hitonemuri\ ;
+下町 > shitamachi\ ;
+人心 > hitogokoro\ ;
+七生 > shichishou\ ;
+燕麦 > karasumugi\ ;
+一番 > hitotsugai\ ;
+物語 > monogatari\ ;
+女達 > on''natachi\ ;
+朧月 > oborodzuki\ ;
+片跛 > katachinba\ ;
+末日 > matsujitsu\ ;
+望月 > mochidzuki\ ;
+二心 > futagokoro\ ;
+革質 > kakushitsu\ ;
+大隼 > oohayabusa\ ;
+月月 > tsukidzuki\ ;
+一渡 > hitowatari\ ;
+屡々 > shibashiba\ ;
+杜宇 > hototogisu\ ;
+妾腹 > mekakebara\ ;
+雲霞 > kumokasumi\ ;
+革袋 > kawabukuro\ ;
+析出 > sekishutsu\ ;
+枕元 > makuramoto\ ;
+不束 > futsutsuka\ ;
+猫柳 > nekoyanagi\ ;
+曲折 > kyokusetsu\ ;
+貸付 > kashitsuke\ ;
+狸汁 > tanukijiru\ ;
+不抱 > kakawarazu\ ;
+一所 > hitotokoro\ ;
+曲尺 > kyokushaku\ ;
+雪質 > yukishitsu\ ;
+顔形 > kaokatachi\ ;
+犇犇 > hishihishi\ ;
+雛豆 > hiyokomame\ ;
+網頭 > amigashira\ ;
+塩魚 > shiozakana\ ;
+中執 > chuushitsu\ ;
+夏虫 > natsumushi\ ;
+綾錦 > ayanishiki\ ;
+月別 > tsukibetsu\ ;
+奪略 > datsuryaku\ ;
+繁繁 > shigeshige\ ;
+烏麦 > karasumugi\ ;
+一周 > hitomeguri\ ;
+烏鳩 > karasubato\ ;
+訥訥 > totsutotsu\ ;
+旅烏 > tabigarasu\ ;
+七光 > nanahikari\ ;
+娘婿 > musumemuko\ ;
+日没 > nichibotsu\ ;
+細雪 > sasameyuki\ ;
+頭分 > kashirabun\ ;
+斑牛 > madaraushi\ ;
+緑色 > ryokushoku\ ;
+日月 > nichigetsu\ ;
+旭日 > kyokujitsu\ ;
+角質 > kakushitsu\ ;
+隣組 > tonarigumi\ ;
+烏金 > karasugane\ ;
+隼科 > hayabusaka\ ;
+物心 > monogokoro\ ;
+旅枕 > tabimakura\ ;
+紅雀 > benisuzume\ ;
+父方 > chichikata\ ;
+塵芥 > chiriakuta\ ;
+雨燕 > amatsubame\ ;
+妹婿 > imoutomuko\ ;
+雪煙 > yukikemuri\ ;
+奪掠 > datsuryaku\ ;
+角蛙 > tsunogaeru\ ;
+失業 > shitsugyou\ ;
+設立 > setsuritsu\ ;
+雑物 > zatsubutsu\ ;
+熱烈 > netsuretsu\ ;
+随神 > kan''nagara\ ;
+裸麦 > hadakamugi\ ;
+霜月 > shimotsuki\ ;
+夢枕 > yumemakura\ ;
+旅心 > tabigokoro\ ;
+犬侍 > inuzamurai\ ;
+識別 > shikibetsu\ ;
+妾出 > shoushutsu\ ;
+緑玉 > ryokugyoku\ ;
+烏蛇 > karasuhebi\ ;
+特出 > tokushutsu\ ;
+紙袋 > kamibukuro\ ;
+雪柳 > yukiyanagi\ ;
+春休 > haruyasumi\ ;
+月々 > tsukidzuki\ ;
+触発 > shokuhatsu\ ;
+継父 > mamachichi\ ;
+烏紙 > karasugami\ ;
+日仏 > nichifutsu\ ;
+掛長 > kakarichou\ ;
+靴下 > kutsushita\ ;
+縮尺 > shukushaku\ ;
+女主 > on''naaruji\ ;
+敵失 > tekishitsu\ ;
+教室 > kyoushitsu\ ;
+絶滅 > zetsumetsu\ ;
+要石 > kanameishi\ ;
+裏話 > urabanashi\ ;
+粉薬 > konagusuri\ ;
+縮刷 > shukusatsu\ ;
+土豚 > tsuchibuta\ ;
+烈烈 > retsuretsu\ ;
+救出 > kyuushutsu\ ;
+壁土 > kabetsuchi\ ;
+結末 > ketsumatsu\ ;
+親柱 > oyabashira\ ;
+粛粛 > shukushuku\ ;
+国訛 > kuninamari\ ;
+綿埃 > watabokori\ ;
+親日 > shin''nichi\ ;
+灼熱 > shakunetsu\ ;
+雇主 > yatoinushi\ ;
+継娘 > mamamusume\ ;
+焼失 > shoushitsu\ ;
+訳出 > yakushutsu\ ;
+烈日 > retsujitsu\ ;
+締付 > shimetsuke\ ;
+訣別 > ketsubetsu\ ;
+筒鳥 > tsutsudori\ ;
+袋耳 > fukuromimi\ ;
+結実 > ketsujitsu\ ;
+続出 > zokushutsu\ ;
+濃紫 > komurasaki\ ;
+溝鼠 > dobunezumi\ ;
+粛殺 > shukusatsu\ ;
+血脈 > ketsumyaku\ ;
+鎌鼬 > kamaitachi\ ;
+袋物 > fukuromono\ ;
+西口 > nishiguchi\ ;
+摘出 > tekishutsu\ ;
+節節 > fushibushi\ ;
+筒袖 > tsutsusode\ ;
+糸印 > itojirushi\ ;
+為人 > hitotonari\ ;
+炭俵 > sumidawara\ ;
+蜀魂 > hototogisu\ ;
+米所 > komedokoro\ ;
+端近 > hashidjika\ ;
+鎖鎌 > kusarigama\ ;
+滅裂 > metsuretsu\ ;
+潮煙 > shiokemuri\ ;
+筆舌 > hitsuzetsu\ ;
+錦鯉 > nishikigoi\ ;
+滑脱 > katsudatsu\ ;
+掠奪 > ryakudatsu\ ;
+筆筒 > fudedzutsu\ ;
+描出 > byoushutsu\ ;
+土壁 > tsuchikabe\ ;
+手続 > tetsudzuki\ ;
+螢石 > hotaruishi\ ;
+蜜蜂 > mitsubachi\ ;
+箱柳 > hakoyanagi\ ;
+箱枕 > hakomakura\ ;
+米俵 > komedawara\ ;
+蜂蜜 > hachimitsu\ ;
+竹筒 > takedzutsu\ ;
+端端 > hashibashi\ ;
+箒星 > houkiboshi\ ;
+蝶番 > choutsugai\ ;
+拠所 > yoridokoro\ ;
+黒鼠 > kuronezumi\ ;
+表口 > omoteguchi\ ;
+竈神 > kamadogami\ ;
+黒鮪 > kuromaguro\ ;
+簇出 > zokushutsu\ ;
+表出 > hyoushutsu\ ;
+唐衣 > karakoromo\ ;
+筆旁 > fudezukuri\ ;
+齣落 > komaotoshi\ ;
+錨綱 > ikaridzuna\ ;
+筒形 > tsutsugata\ ;
+深緑 > fukamidori\ ;
+鼻薬 > hanagusuri\ ;
+所柄 > tokorogara\ ;
+持主 > mochinushi\ ;
+拙劣 > setsuretsu\ ;
+蛍石 > hotaruishi\ ;
+漂失 > hyoushitsu\ ;
+針鼠 > harinezumi\ ;
+流質 > ryuushichi\ ;
+抽出 > chuushutsu\ ;
+蜜月 > mitsugetsu\ ;
+空涙 > soranamida\ ;
+渋渋 > shibushibu\ ;
+滲出 > shinshutsu\ ;
+福袋 > fukubukuro\ ;
+筒先 > tsutsusaki\ ;
+筆力 > hitsuryoku\ ;
+抄出 > shoushutsu\ ;
+我心 > wagakokoro\ ;
+黒苺 > kuroichigo\ ;
+秩禄 > chitsuroku\ ;
+又隣 > matadonari\ ;
+金鋏 > kanabasami\ ;
+懐手 > futokorode\ ;
+黒緑 > kuromidori\ ;
+慄烈 > ritsuretsu\ ;
+鋸歯 > nokogiriba\ ;
+溌剌 > hatsuratsu\ ;
+惟神 > kan''nagara\ ;
+海燕 > umitsubame\ ;
+金袋 > kanabukuro\ ;
+油虫 > aburamushi\ ;
+銀狐 > gingitsune\ ;
+南風 > minamikaze\ ;
+虐殺 > gyakusatsu\ ;
+水鏡 > mizukagami\ ;
+活物 > katsubutsu\ ;
+卵酒 > tamagozake\ ;
+節々 > fushibushi\ ;
+都鳥 > miyakodori\ ;
+決裂 > ketsuretsu\ ;
+薬箱 > kusuribako\ ;
+麦畑 > mugibatake\ ;
+黒漆 > kokushitsu\ ;
+喉仏 > nodobotoke\ ;
+金聾 > kanatsunbo\ ;
+吸湿 > kyuushitsu\ ;
+水薬 > mizugusuri\ ;
+泉熱 > izuminetsu\ ;
+浴室 > yokushitsu\ ;
+愛娘 > manamusume\ ;
+古狸 > furudanuki\ ;
+河烏 > kawagarasu\ ;
+私宛 > watashiate\ ;
+必罰 > hitsubatsu\ ;
+祝日 > shukujitsu\ ;
+吊橋 > tsuribashi\ ;
+形許 > katabakari\ ;
+沸沸 > futsufutsu\ ;
+波枕 > namimakura\ ;
+碇綱 > ikaridzuna\ ;
+水秤 > mizubakari\ ;
+流失 > ryuushitsu\ ;
+浸出 > shinshutsu\ ;
+鉋屑 > kan''nakuzu\ ;
+菱餅 > hishimochi\ ;
+吉日 > kichinichi\ ;
+薬指 > kusuriyubi\ ;
+各方 > onoonogata\ ;
+金槌 > kanadzuchi\ ;
+砂袋 > sunabukuro\ ;
+咄咄 > totsutotsu\ ;
+前頭 > maegashira\ ;
+流出 > ryuushutsu\ ;
+活力 > katsuryoku\ ;
+卵焼 > tamagoyaki\ ;
+水煙 > mizukemuri\ ;
+道道 > michimichi\ ;
+強腰 > tsuyogoshi\ ;
+活仏 > katsubutsu\ ;
+初霜 > hatsushimo\ ;
+右左 > migihidari\ ;
+各室 > kakushitsu\ ;
+着雪 > chakusetsu\ ;
+必滅 > hitsumetsu\ ;
+里心 > satogokoro\ ;
+葵祭 > aoimatsuri\ ;
+油壷 > aburatsubo\ ;
+渋々 > shibushibu\ ;
+刻足 > kizamiashi\ ;
+水枕 > mizumakura\ ;
+勅筆 > chokuhitsu\ ;
+鰯雲 > iwashigumo\ ;
+心柄 > kokorogara\ ;
+睦言 > mutsugoto\ ;
+収奪 > shuudatsu\ ;
+恐喝 > kyoukatsu\ ;
+目頭 > megashira\ ;
+草餠 > kusamochi\ ;
+劇職 > gekishoku\ ;
+薬代 > kusuridai\ ;
+強直 > kyouchoku\ ;
+各冊 > kakusatsu\ ;
+通説 > tsuusetsu\ ;
+河口 > kawaguchi\ ;
+逆賊 > gyakuzoku\ ;
+道草 > michikusa\ ;
+死神 > shinigami\ ;
+適職 > tekishoku\ ;
+欠落 > ketsuraku\ ;
+巻鮨 > makizushi\ ;
+勝率 > shouritsu\ ;
+出軍 > shutsugun\ ;
+半日 > han''nichi\ ;
+厄年 > yakudoshi\ ;
+剥脱 > hakudatsu\ ;
+徒桜 > adazakura\ ;
+千日 > sen''nichi\ ;
+別行 > betsugyou\ ;
+落着 > rakuchaku\ ;
+逆襲 > gyakushuu\ ;
+毒殺 > dokusatsu\ ;
+確実 > kakujitsu\ ;
+重出 > juushutsu\ ;
+口先 > kuchisaki\ ;
+口元 > kuchimoto\ ;
+式目 > shikimoku\ ;
+卓抜 > takubatsu\ ;
+没入 > botsunyuu\ ;
+右下 > migishita\ ;
+強烈 > kyouretsu\ ;
+逸脱 > itsudatsu\ ;
+白黒 > shirokuro\ ;
+直達 > jikitatsu\ ;
+恋仇 > koigataki\ ;
+直進 > chokushin\ ;
+直通 > chokutsuu\ ;
+剽窃 > hyousetsu\ ;
+割箸 > waribashi\ ;
+免黜 > menchutsu\ ;
+金仏 > kanabutsu\ ;
+白鷺 > shirasagi\ ;
+醵出 > kyoshutsu\ ;
+直轄 > chokkatsu\ ;
+占師 > uranaishi\ ;
+皮靴 > kawagutsu\ ;
+急切 > kyuusetsu\ ;
+酉年 > toridoshi\ ;
+真裸 > mappadaka\ ;
+出血 > shukketsu\ ;
+白鱚 > shirogisu\ ;
+道筋 > michisuji\ ;
+道端 > michibata\ ;
+卸売 > oroshiuri\ ;
+忘失 > boushitsu\ ;
+蔭口 > kageguchi\ ;
+卵大 > tamagodai\ ;
+初花 > hatsuhana\ ;
+道程 > michinori\ ;
+白髪 > hakuhatsu\ ;
+磔刑 > haritsuke\ ;
+彦星 > hikoboshi\ ;
+辛辣 > shinratsu\ ;
+正物 > shoubutsu\ ;
+品々 > shinajina\ ;
+出藍 > shutsuran\ ;
+年若 > toshiwaka\ ;
+逆臣 > gyakushin\ ;
+平芝 > hirashiba\ ;
+横面 > yokotsura\ ;
+直読 > chokudoku\ ;
+凝血 > gyouketsu\ ;
+逃腰 > nigegoshi\ ;
+心太 > tokoroten\ ;
+心天 > tokoroten\ ;
+直訳 > chokuyaku\ ;
+初耳 > hatsumimi\ ;
+白雪 > hakusetsu\ ;
+出色 > shusshoku\ ;
+廃疾 > haishitsu\ ;
+劇烈 > gekiretsu\ ;
+速筆 > sokuhitsu\ ;
+水口 > mizuguchi\ ;
+殺戮 > satsuriku\ ;
+後室 > koushitsu\ ;
+蓄妾 > chikushou\ ;
+出群 > shutsugun\ ;
+進発 > shinpatsu\ ;
+茶袋 > chabukuro\ ;
+初空 > hatsuzora\ ;
+横道 > yokomichi\ ;
+落札 > rakusatsu\ ;
+刮目 > katsumoku\ ;
+白酒 > shirozake\ ;
+勘所 > kandokoro\ ;
+追突 > tsuitotsu\ ;
+式服 > shikifuku\ ;
+協力 > kyouryoku\ ;
+石持 > ishimochi\ ;
+落日 > rakujitsu\ ;
+逸物 > ichimotsu\ ;
+直腸 > chokuchou\ ;
+歴日 > rekijitsu\ ;
+進物 > shinmotsu\ ;
+出立 > shuttatsu\ ;
+真筆 > shinpitsu\ ;
+正月 > shougatsu\ ;
+凝縮 > gyoushuku\ ;
+着目 > chakumoku\ ;
+六識 > rokushiki\ ;
+凝結 > gyouketsu\ ;
+眼疾 > ganshitsu\ ;
+歌枕 > utamakura\ ;
+Ｘ線 > ekkususen\ ;
+知悉 > chishitsu\ ;
+別物 > betsumono\ ;
+直結 > chokketsu\ ;
+凝立 > gyouritsu\ ;
+常節 > tokobushi\ ;
+標識 > hyoushiki\ ;
+後出 > koushutsu\ ;
+初物 > hatsumono\ ;
+花道 > hanamichi\ ;
+出発 > shuppatsu\ ;
+北口 > kitaguchi\ ;
+年玉 > toshidama\ ;
+橙色 > daidaiiro\ ;
+矩差 > kanezashi\ ;
+千万 > chiyorozu\ ;
+弓弦 > yumidzuru\ ;
+盲穴 > mekuraana\ ;
+草箒 > kusabouki\ ;
+出現 > shutsugen\ ;
+凝着 > gyouchaku\ ;
+劣弱 > retsujaku\ ;
+真率 > shinsotsu\ ;
+苦虫 > nigamushi\ ;
+橋脚 > kyoukyaku\ ;
+左腕 > hidariude\ ;
+高鼾 > takaibiki\ ;
+真物 > shinbutsu\ ;
+弔客 > choukyaku\ ;
+百薬 > hyakuyaku\ ;
+茶筒 > chadzutsu\ ;
+弟娘 > otomusume\ ;
+省略 > shouryaku\ ;
+逆流 > gyakuryuu\ ;
+歌心 > utagokoro\ ;
+週末 > shuumatsu\ ;
+着氷 > chakuhyou\ ;
+白菊 > shiragiku\ ;
+年波 > toshinami\ ;
+正室 > seishitsu\ ;
+菊月 > kikudzuki\ ;
+別業 > betsugyou\ ;
+年毎 > toshigoto\ ;
+週日 > shuujitsu\ ;
+花街 > hanamachi\ ;
+川縁 > kawabuchi\ ;
+形代 > katashiro\ ;
+白色 > hakushoku\ ;
+別棟 > betsumune\ ;
+冊立 > sakuritsu\ ;
+島風 > shimakaze\ ;
+弱卒 > jakusotsu\ ;
+僕達 > bokutachi\ ;
+髭面 > higedzura\ ;
+張力 > chouryoku\ ;
+軟質 > nanshitsu\ ;
+菱形 > hishigata\ ;
+進捗 > shinchoku\ ;
+僻説 > hekisetsu\ ;
+茶畑 > chabatake\ ;
+横綱 > yokodzuna\ ;
+兎耳 > usagimimi\ ;
+出欠 > shukketsu\ ;
+島陰 > shimakage\ ;
+矢印 > yajirushi\ ;
+着服 > chakufuku\ ;
+建坪 > tatetsubo\ ;
+副尺 > fukushaku\ ;
+初春 > hatsuharu\ ;
+共立 > kyouritsu\ ;
+花菱 > hanabishi\ ;
+延坪 > nobetsubo\ ;
+極量 > kyokuryou\ ;
+良識 > ryoushiki\ ;
+弟分 > otoutobun\ ;
+色調 > shikichou\ ;
+鳶口 > tobiguchi\ ;
+八福 > hachifuku\ ;
+色覚 > shikikaku\ ;
+石仏 > sekibutsu\ ;
+歳出 > saishutsu\ ;
+直流 > chokuryuu\ ;
+芍薬 > shakuyaku\ ;
+出札 > shussatsu\ ;
+割増 > warimashi\ ;
+芝草 > shibakusa\ ;
+真東 > mahigashi\ ;
+樸直 > bokuchoku\ ;
+剥奪 > hakudatsu\ ;
+幕末 > bakumatsu\ ;
+椎骨 > tsuikotsu\ ;
+正出 > seishutsu\ ;
+凶日 > kyoujitsu\ ;
+遊失 > yuushitsu\ ;
+車蝦 > kurumaebi\ ;
+初役 > hatsuyaku\ ;
+選出 > senshutsu\ ;
+逆心 > gyakushin\ ;
+迫持 > serimochi\ ;
+着床 > chakushou\ ;
+年弱 > toshiyowa\ ;
+山鶉 > yamauzura\ ;
+Ｗ杯 > daburuhai\ ;
+着席 > chakuseki\ ;
+辻札 > tsujifuda\ ;
+適切 > tekisetsu\ ;
+発病 > hatsubyou\ ;
+病識 > byoushiki\ ;
+創出 > soushutsu\ ;
+別室 > besshitsu\ ;
+年嵩 > toshikasa\ ;
+初孫 > hatsumago\ ;
+出御 > shutsugyo\ ;
+幽室 > yuushitsu\ ;
+白玉 > shiratama\ ;
+直撃 > chokugeki\ ;
+年寄 > toshiyori\ ;
+榎茸 > enokitake\ ;
+船虫 > funamushi\ ;
+白熱 > hakunetsu\ ;
+極薄 > kyokuhaku\ ;
+白熊 > shirokuma\ ;
+帆柱 > hobashira\ ;
+割付 > waritsuke\ ;
+初夢 > hatsuyume\ ;
+分室 > bunshitsu\ ;
+庶出 > shoshutsu\ ;
+入滅 > nyuumetsu\ ;
+割下 > warishita\ ;
+市松 > ichimatsu\ ;
+優男 > yasaotoko\ ;
+花町 > hanamachi\ ;
+轢殺 > rekisatsu\ ;
+癈疾 > haishitsu\ ;
+真実 > shinjitsu\ ;
+白滝 > shirataki\ ;
+速口 > hayakuchi\ ;
+進入 > shin''nyuu\ ;
+儲物 > moukemono\ ;
+腰高 > koshidaka\ ;
+橋桁 > hashigeta\ ;
+骨質 > kosshitsu\ ;
+腰骨 > koshibone\ ;
+修飾 > shuushoku\ ;
+白浪 > shiranami\ ;
+白浜 > shirahama\ ;
+艶種 > tsuyadane\ ;
+速力 > sokuryoku\ ;
+辻店 > tsujimise\ ;
+白波 > shiranami\ ;
+茶所 > chadokoro\ ;
+広口 > hirokuchi\ ;
+尺骨 > shakkotsu\ ;
+出塁 > shutsurui\ ;
+目庇 > mabisashi\ ;
+白水 > shiromizu\ ;
+色神 > shikishin\ ;
+入植 > nyuushoku\ ;
+直属 > chokuzoku\ ;
+初出 > shoshutsu\ ;
+凡失 > bonshitsu\ ;
+六月 > rokugatsu\ ;
+入札 > nyuusatsu\ ;
+送出 > soushutsu\ ;
+山道 > yamamichi\ ;
+退出 > taishutsu\ ;
+楽節 > gakusetsu\ ;
+常夏 > tokonatsu\ ;
+申達 > shintatsu\ ;
+若松 > wakamatsu\ ;
+局長 > kyokuchou\ ;
+鬼瓦 > onigawara\ ;
+帝室 > teishitsu\ ;
+床下 > yukashita\ ;
+着信 > chakushin\ ;
+白札 > shirofuda\ ;
+切入 > setsunyuu\ ;
+標札 > hyousatsu\ ;
+出動 > shutsudou\ ;
+迫力 > hakuryoku\ ;
+屑鉄 > kuzutetsu\ ;
+髪綱 > kamidzuna\ ;
+逐一 > chikuichi\ ;
+侵食 > shinshoku\ ;
+花氷 > hanagoori\ ;
+俄雨 > niwakaame\ ;
+膠質 > koushitsu\ ;
+茶室 > chashitsu\ ;
+白日 > hakujitsu\ ;
+侠骨 > kyoukotsu\ ;
+少食 > shoushoku\ ;
+巳年 > hebidoshi\ ;
+艶物 > tsuyamono\ ;
+小食 > shoushoku\ ;
+冷奴 > hiyayakko\ ;
+小頭 > kogashira\ ;
+屈辱 > kutsujoku\ ;
+骨膜 > kotsumaku\ ;
+町角 > machikado\ ;
+辻君 > tsujigimi\ ;
+省力 > shouryoku\ ;
+鯉幟 > koinobori\ ;
+赤鰯 > akaiwashi\ ;
+骨肉 > kotsuniku\ ;
+内室 > naishitsu\ ;
+川岸 > kawagishi\ ;
+幕下 > makushita\ ;
+目印 > mejirushi\ ;
+尻軽 > shirigaru\ ;
+男衆 > otokoshuu\ ;
+鰐口 > waniguchi\ ;
+信越 > shin''etsu\ ;
+俊逸 > shun''itsu\ ;
+属託 > shokutaku\ ;
+盲判 > mekuraban\ ;
+胸骨 > kyoukotsu\ ;
+寝食 > shinshoku\ ;
+色沢 > shikitaku\ ;
+六尺 > rokushaku\ ;
+辛口 > karakuchi\ ;
+色欲 > shikiyoku\ ;
+極熱 > gokunetsu\ ;
+跳虫 > tobimushi\ ;
+痛烈 > tsuuretsu\ ;
+臣節 > shinsetsu\ ;
+骨箱 > kotsubako\ ;
+皇室 > koushitsu\ ;
+俗説 > zokusetsu\ ;
+儲役 > moukeyaku\ ;
+供述 > kyoujutsu\ ;
+峻烈 > shunretsu\ ;
+男腹 > otokobara\ ;
+極流 > kyokuryuu\ ;
+略章 > ryakushou\ ;
+再出 > saishutsu\ ;
+川口 > kawaguchi\ ;
+良日 > ryoujitsu\ ;
+略称 > ryakushou\ ;
+左前 > hidarimae\ ;
+対質 > taishitsu\ ;
+小説 > shousetsu\ ;
+左党 > hidaritou\ ;
+脇道 > wakimichi\ ;
+棹秤 > saobakari\ ;
+桜貝 > sakuragai\ ;
+病没 > byoubotsu\ ;
+共力 > kyouryoku\ ;
+船橋 > funabashi\ ;
+髪油 > kamiabura\ ;
+病歿 > byoubotsu\ ;
+侵蝕 > shinshoku\ ;
+病欠 > byouketsu\ ;
+八切 > yatsugiri\ ;
+入力 > nyuuryoku\ ;
+町筋 > machisuji\ ;
+色慾 > shikiyoku\ ;
+脂足 > aburaashi\ ;
+町立 > chouritsu\ ;
+脚註 > kyakuchuu\ ;
+極月 > gokugetsu\ ;
+脂質 > shishitsu\ ;
+舟橋 > funahashi\ ;
+供血 > kyouketsu\ ;
+川下 > kawashimo\ ;
+実録 > jitsuroku\ ;
+畜生 > chikushou\ ;
+色弱 > shikijaku\ ;
+発出 > hasshutsu\ ;
+腰縄 > koshinawa\ ;
+生節 > namabushi\ ;
+就職 > shuushoku\ ;
+足腰 > ashikoshi\ ;
+入仏 > nyuubutsu\ ;
+入交 > irimajiri\ ;
+腰紐 > koshihimo\ ;
+修築 > shuuchiku\ ;
+肉食 > nikushoku\ ;
+信約 > shin''yaku\ ;
+脱落 > datsuraku\ ;
+体質 > taishitsu\ ;
+輩出 > haishutsu\ ;
+修祓 > shuufutsu\ ;
+学閥 > gakubatsu\ ;
+位負 > kuraimake\ ;
+苗代 > nawashiro\ ;
+山男 > yamaotoko\ ;
+桜草 > sakurasou\ ;
+客足 > kyakuashi\ ;
+属目 > shokumoku\ ;
+俗筆 > zokuhitsu\ ;
+小職 > shoushoku\ ;
+償却 > shoukyaku\ ;
+楽律 > gakuritsu\ ;
+桜色 > sakurairo\ ;
+小羊 > kohitsuji\ ;
+実質 > jisshitsu\ ;
+肘鉄 > hijitetsu\ ;
+賃餅 > chinmochi\ ;
+宝貝 > takaragai\ ;
+軽口 > karukuchi\ ;
+超脱 > choudatsu\ ;
+男物 > otokomono\ ;
+職長 > shokuchou\ ;
+仏顔 > hotokegao\ ;
+仏領 > futsuryou\ ;
+略歴 > ryakureki\ ;
+骨柄 > kotsugara\ ;
+赤色 > sekishoku\ ;
+小節 > shousetsu\ ;
+尻癖 > shirikuse\ ;
+膠漆 > koushitsu\ ;
+島影 > shimakage\ ;
+極小 > kyokushou\ ;
+俵物 > hyoumotsu\ ;
+生爪 > namadzume\ ;
+松風 > matsukaze\ ;
+超絶 > chouzetsu\ ;
+船室 > senshitsu\ ;
+腺熱 > sen''netsu\ ;
+束髪 > sokuhatsu\ ;
+転出 > tenshutsu\ ;
+脩竹 > shuuchiku\ ;
+島島 > shimajima\ ;
+略服 > ryakufuku\ ;
+島山 > shimayama\ ;
+鬱勃 > utsubotsu\ ;
+東雲 > shinonome\ ;
+生滅 > shoumetsu\ ;
+俗物 > zokubutsu\ ;
+脱硫 > datsuryuu\ ;
+脈絡 > myakuraku\ ;
+学識 > gakushiki\ ;
+侵略 > shinryaku\ ;
+学説 > gakusetsu\ ;
+職責 > shokuseki\ ;
+艶事 > tsuyagoto\ ;
+玉鴫 > tamashigi\ ;
+瓦版 > kawaraban\ ;
+傷口 > kizuguchi\ ;
+密約 > mitsuyaku\ ;
+学術 > gakujutsu\ ;
+軒下 > nokishita\ ;
+車代 > kurumadai\ ;
+借料 > shakuryou\ ;
+資質 > shishitsu\ ;
+人達 > hitotachi\ ;
+候文 > souroubun\ ;
+寺男 > teraotoko\ ;
+極北 > kyokuhoku\ ;
+脱獄 > datsugoku\ ;
+町方 > machikata\ ;
+痛切 > tsuusetsu\ ;
+高坏 > takatsuki\ ;
+貸賃 > kashichin\ ;
+倉敷 > kurashiki\ ;
+乞食 > kotsujiki\ ;
+伸縮 > shinshuku\ ;
+人質 > hitojichi\ ;
+朝食 > choushoku\ ;
+疵口 > kizuguchi\ ;
+峻別 > shunbetsu\ ;
+届書 > todokesho\ ;
+客筋 > kyakusuji\ ;
+服飾 > fukushoku\ ;
+傑出 > kesshutsu\ ;
+休職 > kyuushoku\ ;
+甲所 > kandokoro\ ;
+二道 > futamichi\ ;
+船主 > funanushi\ ;
+食通 > shokutsuu\ ;
+客種 > kyakudane\ ;
+賊虐 > zokugyaku\ ;
+乳鉢 > nyuubachi\ ;
+月額 > getsugaku\ ;
+月頃 > tsukigoro\ ;
+作男 > sakuotoko\ ;
+男役 > otokoyaku\ ;
+上鶲 > joubitaki\ ;
+腕枕 > udemakura\ ;
+赤熱 > sekinetsu\ ;
+舌先 > shitasaki\ ;
+腹持 > haramochi\ ;
+珍説 > chinsetsu\ ;
+付落 > tsukeochi\ ;
+腰掛 > koshikake\ ;
+久闊 > kyuukatsu\ ;
+密猟 > mitsuryou\ ;
+申年 > sarudoshi\ ;
+材質 > zaishitsu\ ;
+松蝉 > matsuzemi\ ;
+京表 > kyouomote\ ;
+脚注 > kyakuchuu\ ;
+梅暦 > umegoyomi\ ;
+作物 > sakumotsu\ ;
+賞罰 > shoubatsu\ ;
+子羊 > kohitsuji\ ;
+室町 > muromachi\ ;
+小曲 > shoukyoku\ ;
+検出 > kenshutsu\ ;
+俊抜 > shunbatsu\ ;
+密漁 > mitsuryou\ ;
+肉筆 > nikuhitsu\ ;
+腰弱 > koshiyowa\ ;
+胆玉 > kimottama\ ;
+松茸 > matsutake\ ;
+桜桃 > sakuranbo\ ;
+寂滅 > jakumetsu\ ;
+本質 > honshitsu\ ;
+仔羊 > kohitsuji\ ;
+産室 > sanshitsu\ ;
+腰布 > koshinuno\ ;
+腰巻 > koshimaki\ ;
+佃煮 > tsukudani\ ;
+侵掠 > shinryaku\ ;
+桁橋 > ketabashi\ ;
+朴訥 > bokutotsu\ ;
+食虫 > shokuchuu\ ;
+松脂 > matsuyani\ ;
+七難 > shichinan\ ;
+低湿 > teishitsu\ ;
+男坂 > otokozaka\ ;
+宿泊 > shukuhaku\ ;
+伯爵 > hakushaku\ ;
+梓弓 > azusayumi\ ;
+餅肌 > mochihada\ ;
+居室 > kyoshitsu\ ;
+木訥 > bokutotsu\ ;
+額際 > hitaigiwa\ ;
+留別 > ryuubetsu\ ;
+信実 > shinjitsu\ ;
+贈物 > okurimono\ ;
+駐日 > chuunichi\ ;
+柿渋 > kakishibu\ ;
+下金 > shitagane\ ;
+中越 > chuugoshi\ ;
+媒質 > baishitsu\ ;
+乾草 > hoshigusa\ ;
+琴爪 > kotodzume\ ;
+腰垣 > koshigaki\ ;
+係官 > kakarikan\ ;
+脈搏 > myakuhaku\ ;
+玉虫 > tamamushi\ ;
+生唾 > namatsuba\ ;
+食肉 > shokuniku\ ;
+松笠 > matsukasa\ ;
+脈拍 > myakuhaku\ ;
+七道 > shichidou\ ;
+申入 > moushiire\ ;
+客様 > kyakusama\ ;
+乳色 > nyuushoku\ ;
+曲調 > kyokuchou\ ;
+借主 > karinushi\ ;
+乾肉 > hoshiniku\ ;
+宿料 > shukuryou\ ;
+実業 > jitsugyou\ ;
+宿敵 > shukuteki\ ;
+七輪 > shichirin\ ;
+産出 > sanshutsu\ ;
+何日 > nan''nichi\ ;
+質点 > shitsuten\ ;
+脳室 > noushitsu\ ;
+山伏 > yamabushi\ ;
+実株 > jitsukabu\ ;
+侵奪 > shindatsu\ ;
+町中 > machinaka\ ;
+町並 > machinami\ ;
+上質 > joushitsu\ ;
+下貼 > shitabari\ ;
+食紅 > shokubeni\ ;
+侠客 > kyoukyaku\ ;
+更衣 > koromogae\ ;
+食糧 > shokuryou\ ;
+中表 > nakaomote\ ;
+小姑 > kojuutome\ ;
+栃木 > tochinoki\ ;
+脂性 > aburashou\ ;
+倉主 > kuranushi\ ;
+七賢 > shichiken\ ;
+尻取 > shiritori\ ;
+格式 > kakushiki\ ;
+昼鳶 > hirutonbi\ ;
+亮直 > ryouchoku\ ;
+暢達 > choutatsu\ ;
+腰元 > koshimoto\ ;
+脇差 > wakizashi\ ;
+杉箸 > sugibashi\ ;
+付焼 > tsukeyaki\ ;
+学殖 > gakushoku\ ;
+株式 > kabushiki\ ;
+柏槙 > byakushin\ ;
+独酌 > dokushaku\ ;
+寅年 > toradoshi\ ;
+質権 > shichiken\ ;
+小咄 > kobanashi\ ;
+丸腰 > marugoshi\ ;
+昼飯 > hirumeshi\ ;
+伐木 > batsuboku\ ;
+俊傑 > shunketsu\ ;
+職歴 > shokureki\ ;
+之繞 > shin''nyuu\ ;
+架橋 > kakehashi\ ;
+柏木 > kashiwagi\ ;
+仮橋 > karibashi\ ;
+豆粒 > mametsubu\ ;
+休日 > kyuujitsu\ ;
+中腰 > chuugoshi\ ;
+上薬 > uwagusuri\ ;
+密室 > misshitsu\ ;
+玉章 > gyokushou\ ;
+侵入 > shin''nyuu\ ;
+宿将 > shukushou\ ;
+将卒 > shousotsu\ ;
+両舌 > ryouzetsu\ ;
+職業 > shokugyou\ ;
+導出 > doushutsu\ ;
+宿学 > shukugaku\ ;
+小冊 > shousatsu\ ;
+両脚 > ryoukyaku\ ;
+脱出 > dasshutsu\ ;
+客席 > kyakuseki\ ;
+下草 > shitakusa\ ;
+射出 > shashutsu\ ;
+暦術 > rekijutsu\ ;
+朴直 > bokuchoku\ ;
+赤土 > akatsuchi\ ;
+脅喝 > kyoukatsu\ ;
+中絶 > chuuzetsu\ ;
+下腹 > shitabara\ ;
+脱俗 > datsuzoku\ ;
+柏手 > kashiwade\ ;
+乾物 > hoshimono\ ;
+実学 > jitsugaku\ ;
+桟俵 > sandawara\ ;
+猟色 > ryoushoku\ ;
+一脈 > ichimyaku\ ;
+赤口 > sekiguchi\ ;
+中立 > chuuritsu\ ;
+職掌 > shokushou\ ;
+室外 > shitsugai\ ;
+寒卵 > kantamago\ ;
+島々 > shimajima\ ;
+質感 > shitsukan\ ;
+格別 > kakubetsu\ ;
+核力 > kakuryoku\ ;
+両端 > ryouhashi\ ;
+両立 > ryouritsu\ ;
+耐湿 > taishitsu\ ;
+下紐 > shitahimo\ ;
+今日 > kon''nichi\ ;
+早飯 > hayameshi\ ;
+貸方 > kashikata\ ;
+乾湿 > kanshitsu\ ;
+額縁 > gakubuchi\ ;
+一粒 > hitotsubu\ ;
+嫡流 > chakuryuu\ ;
+曲目 > kyokumoku\ ;
+食欲 > shokuyoku\ ;
+柴垣 > shibagaki\ ;
+亮月 > ryougetsu\ ;
+下穿 > shitabaki\ ;
+一節 > hitofushi\ ;
+革靴 > kawagutsu\ ;
+中略 > chuuryaku\ ;
+状袋 > joubukuro\ ;
+物量 > butsuryou\ ;
+末流 > matsuryuu\ ;
+株主 > kabunushi\ ;
+下石 > shitaishi\ ;
+飯時 > meshidoki\ ;
+作付 > sakudzuke\ ;
+上瞼 > uwamabuta\ ;
+伯叔 > hakushuku\ ;
+爪革 > tsumakawa\ ;
+室内 > shitsunai\ ;
+宿主 > yadonushi\ ;
+久濶 > kyuukatsu\ ;
+二月 > futatsuki\ ;
+日録 > nichiroku\ ;
+一瞥 > ichibetsu\ ;
+令室 > reishitsu\ ;
+体中 > karadajuu\ ;
+仲好 > nakayoshi\ ;
+食料 > shokuryou\ ;
+調髪 > chouhatsu\ ;
+物質 > busshitsu\ ;
+早道 > hayamichi\ ;
+新雪 > shinsetsu\ ;
+片道 > katamichi\ ;
+特設 > tokusetsu\ ;
+仏学 > butsugaku\ ;
+露霜 > tsuyujimo\ ;
+札束 > satsutaba\ ;
+夏鳥 > natsudori\ ;
+質問 > shitsumon\ ;
+独立 > dokuritsu\ ;
+月次 > tsukinami\ ;
+謬説 > byuusetsu\ ;
+学卒 > gakusotsu\ ;
+曲流 > kyokuryuu\ ;
+食慾 > shokuyoku\ ;
+一物 > ichimotsu\ ;
+奴輩 > yatsubara\ ;
+学力 > gakuryoku\ ;
+亮察 > ryousatsu\ ;
+中次 > nakatsugi\ ;
+質券 > shichiken\ ;
+孤児 > minashigo\ ;
+旧識 > kyuushiki\ ;
+人妻 > hitodzuma\ ;
+新釈 > shinshaku\ ;
+日諾 > nichidaku\ ;
+旧説 > kyuusetsu\ ;
+股下 > matashita\ ;
+珍客 > chinkyaku\ ;
+外面 > sotodzura\ ;
+春色 > shunshoku\ ;
+翌月 > yokugetsu\ ;
+聴力 > chouryoku\ ;
+京女 > kyouon''na\ ;
+串柿 > kushigaki\ ;
+九折 > kyuusetsu\ ;
+翌日 > yokujitsu\ ;
+斟酌 > shinshaku\ ;
+両極 > ryoukyoku\ ;
+仏名 > butsumyou\ ;
+特色 > tokushoku\ ;
+亡失 > boushitsu\ ;
+食客 > shokkyaku\ ;
+父親 > chichioya\ ;
+仮住 > karizumai\ ;
+了察 > ryousatsu\ ;
+雪靴 > yukigutsu\ ;
+現出 > genshutsu\ ;
+仏力 > butsuriki\ ;
+調達 > choutatsu\ ;
+下様 > shimozama\ ;
+繰越 > kurikoshi\ ;
+物腰 > monogoshi\ ;
+三椏 > mitsumata\ ;
+両日 > ryoujitsu\ ;
+松原 > matsubara\ ;
+賃借 > chinshaku\ ;
+熟食 > jukushoku\ ;
+新説 > shinsetsu\ ;
+付人 > tsukebito\ ;
+新訳 > shin''yaku\ ;
+新設 > shinsetsu\ ;
+玉将 > gyokushou\ ;
+月影 > tsukikage\ ;
+月形 > tsukigata\ ;
+七曜 > shichiyou\ ;
+一月 > hitotsuki\ ;
+天質 > tenshitsu\ ;
+下敷 > shitajiki\ ;
+七星 > shichisei\ ;
+星空 > hoshizora\ ;
+特筆 > tokuhitsu\ ;
+一日 > tsuitachi\ ;
+人伝 > hitodzute\ ;
+狐火 > kitsunebi\ ;
+爆裂 > bakuretsu\ ;
+特立 > tokuritsu\ ;
+人付 > hitodzuki\ ;
+青萍 > aoukikusa\ ;
+失言 > shitsugen\ ;
+雪道 > yukimichi\ ;
+雑録 > zatsuroku\ ;
+女腹 > on''nabara\ ;
+食卓 > shokutaku\ ;
+熱量 > netsuryou\ ;
+雪辱 > setsujoku\ ;
+新薬 > shin''yaku\ ;
+頭株 > atamakabu\ ;
+失血 > shikketsu\ ;
+暦月 > rekigetsu\ ;
+変質 > henshitsu\ ;
+食出 > hamidashi\ ;
+夜話 > yobanashi\ ;
+一抹 > ichimatsu\ ;
+天袋 > tenbukuro\ ;
+靴紐 > kutsuhimo\ ;
+暦日 > rekijitsu\ ;
+詳述 > shoujutsu\ ;
+食傷 > shokushou\ ;
+特発 > tokuhatsu\ ;
+靴篦 > kutsubera\ ;
+下役 > shitayaku\ ;
+両岸 > ryougishi\ ;
+曲学 > kyokugaku\ ;
+熟達 > jukutatsu\ ;
+靴箆 > kutsubera\ ;
+丑年 > ushidoshi\ ;
+露草 > tsuyukusa\ ;
+評釈 > hyoushaku\ ;
+一律 > ichiritsu\ ;
+物療 > butsuryou\ ;
+風口 > kazaguchi\ ;
+夏蝉 > natsuzemi\ ;
+霞草 > kasumisou\ ;
+牧畜 > bokuchiku\ ;
+調色 > choushoku\ ;
+焼餅 > yakimochi\ ;
+末僚 > batsuryou\ ;
+註釈 > chuushaku\ ;
+詳説 > shousetsu\ ;
+新緑 > shinryoku\ ;
+失脚 > shikkyaku\ ;
+失職 > shisshoku\ ;
+新約 > shin''yaku\ ;
+夏菊 > natsugiku\ ;
+縞蛇 > shimahebi\ ;
+中哲 > chuutetsu\ ;
+訳述 > yakujutsu\ ;
+新築 > shinchiku\ ;
+夏草 > natsugusa\ ;
+玉串 > tamagushi\ ;
+中口 > nakaguchi\ ;
+女癖 > on''naguse\ ;
+姥桜 > ubazakura\ ;
+中卒 > chuusotsu\ ;
+下坂 > shimosaka\ ;
+風下 > kazashimo\ ;
+霞網 > kasumiami\ ;
+両口 > ryouguchi\ ;
+爪皮 > tsumakawa\ ;
+爆竹 > bakuchiku\ ;
+日独 > nichidoku\ ;
+旧物 > kyuubutsu\ ;
+獣偏 > kemonohen\ ;
+露程 > tsuyuhodo\ ;
+調節 > chousetsu\ ;
+頭字 > kashiraji\ ;
+獄卒 > gokusotsu\ ;
+給食 > kyuushoku\ ;
+且又 > katsumata\ ;
+月並 > tsukinami\ ;
+物流 > butsuryuu\ ;
+両凸 > ryoutotsu\ ;
+陳述 > chinjutsu\ ;
+新着 > shinchaku\ ;
+女物 > on''namono\ ;
+不印 > fujirushi\ ;
+書付 > kakitsuke\ ;
+詰草 > tsumekusa\ ;
+中位 > chuugurai\ ;
+熊蜂 > kumabachi\ ;
+教職 > kyoushoku\ ;
+失礼 > shitsurei\ ;
+七厘 > shichirin\ ;
+物欲 > butsuyoku\ ;
+一口 > hitokuchi\ ;
+擂鉢 > suribachi\ ;
+爆発 > bakuhatsu\ ;
+昨日 > sakujitsu\ ;
+縮約 > shukuyaku\ ;
+失着 > shitchaku\ ;
+一別 > ichibetsu\ ;
+一列 > ichiretsu\ ;
+下側 > shitagawa\ ;
+雀色 > suzumeiro\ ;
+一儲 > hitomouke\ ;
+族滅 > zokumetsu\ ;
+下作 > shitasaku\ ;
+調略 > chouryaku\ ;
+昔日 > sekijitsu\ ;
+断熱 > dan''netsu\ ;
+明日 > myounichi\ ;
+下下 > shimojimo\ ;
+敷石 > shikiishi\ ;
+特撮 > tokusatsu\ ;
+親閲 > shin''etsu\ ;
+願事 > negaigoto\ ;
+頻出 > hinshutsu\ ;
+網袋 > amibukuro\ ;
+料率 > ryouritsu\ ;
+角逐 > kakuchiku\ ;
+七三 > shichisan\ ;
+細面 > hosoomote\ ;
+集結 > shuuketsu\ ;
+西風 > nishikaze\ ;
+夏痩 > natsuyase\ ;
+物指 > monosashi\ ;
+星影 > hoshikage\ ;
+独力 > dokuryoku\ ;
+触診 > shokushin\ ;
+壺皿 > tsubozara\ ;
+罪人 > tsumibito\ ;
+物慾 > butsuyoku\ ;
+敷物 > shikimono\ ;
+雪男 > yukiotoko\ ;
+夏物 > natsumono\ ;
+統計 > baratsuki\ ;
+女方 > on''nagata\ ;
+新橋 > shinbashi\ ;
+熱病 > netsubyou\ ;
+電熱 > den''netsu\ ;
+星屑 > hoshikuzu\ ;
+隔絶 > kakuzetsu\ ;
+独仏 > dokufutsu\ ;
+妻室 > saishitsu\ ;
+物干 > monohoshi\ ;
+細道 > hosomichi\ ;
+糧食 > ryoushoku\ ;
+物差 > monosashi\ ;
+熱球 > netsukyuu\ ;
+縞物 > shimamono\ ;
+新枕 > niimakura\ ;
+給血 > kyuuketsu\ ;
+新札 > shinsatsu\ ;
+新月 > shingetsu\ ;
+新曲 > shinkyoku\ ;
+旧式 > kyuushiki\ ;
+詰物 > tsumemono\ ;
+烏貝 > karasugai\ ;
+靴底 > kutsuzoko\ ;
+旧年 > furutoshi\ ;
+星型 > hoshigata\ ;
+長髪 > chouhatsu\ ;
+女形 > on''nagata\ ;
+失望 > shitsubou\ ;
+焼結 > shouketsu\ ;
+塵紙 > chirigami\ ;
+失明 > shitsumei\ ;
+紙質 > shishitsu\ ;
+雪沓 > yukigutsu\ ;
+文月 > fumidzuki\ ;
+炭質 > tanshitsu\ ;
+誅殺 > chuusatsu\ ;
+大昔 > oomukashi\ ;
+長靴 > nagagutsu\ ;
+糸車 > itoguruma\ ;
+夜晒 > yozarashi\ ;
+夏服 > natsufuku\ ;
+靴墨 > kutsuzumi\ ;
+裸馬 > hadakauma\ ;
+妹分 > imoutobun\ ;
+日墨 > nichiboku\ ;
+新式 > shinshiki\ ;
+夏時 > natsudoki\ ;
+炸裂 > sakuretsu\ ;
+特別 > tokubetsu\ ;
+複雑 > fukuzatsu\ ;
+靴型 > kutsugata\ ;
+粒食 > ryuushoku\ ;
+結膜 > ketsumaku\ ;
+縞柄 > shimagara\ ;
+失恋 > shitsuren\ ;
+失念 > shitsunen\ ;
+雨曇 > amagumori\ ;
+評決 > hyouketsu\ ;
+調律 > chouritsu\ ;
+女坂 > on''nazaka\ ;
+続発 > zokuhatsu\ ;
+雑株 > zatsukabu\ ;
+諒察 > ryousatsu\ ;
+牛刺 > gyuusashi\ ;
+執著 > shuuchaku\ ;
+早口 > hayakuchi\ ;
+糖質 > toushitsu\ ;
+片口 > katakuchi\ ;
+細腰 > hosogoshi\ ;
+集札 > shuusatsu\ ;
+日出 > nisshutsu\ ;
+終結 > shuuketsu\ ;
+坪量 > tsuboryou\ ;
+奴凧 > yakkodako\ ;
+親筆 > shinpitsu\ ;
+綿油 > wataabura\ ;
+然然 > shikajika\ ;
+焦熱 > shounetsu\ ;
+夏山 > natsuyama\ ;
+爪切 > tsumekiri\ ;
+政所 > mandokoro\ ;
+教式 > kyoushiki\ ;
+爪先 > tsumasaki\ ;
+塩漬 > shiodzuke\ ;
+縮小 > shukushou\ ;
+下々 > shimojimo\ ;
+奔出 > honshutsu\ ;
+隔月 > kakugetsu\ ;
+撃発 > gekihatsu\ ;
+執筆 > shippitsu\ ;
+隔日 > kakujitsu\ ;
+新入 > shin''nyuu\ ;
+斥力 > sekiryoku\ ;
+終発 > shuuhatsu\ ;
+失命 > shitsumei\ ;
+坂道 > sakamichi\ ;
+失名 > shitsumei\ ;
+撲滅 > bokumetsu\ ;
+詳察 > shousatsu\ ;
+雪女 > yukion''na\ ;
+詳密 > shoumitsu\ ;
+雑学 > zatsugaku\ ;
+防湿 > boushitsu\ ;
+均質 > kinshitsu\ ;
+執着 > shuuchaku\ ;
+烏瓜 > karasuuri\ ;
+撲殺 > bokusatsu\ ;
+摘発 > tekihatsu\ ;
+夏向 > natsumuki\ ;
+捨鉢 > sutebachi\ ;
+地質 > chishitsu\ ;
+堅物 > katabutsu\ ;
+国鉄 > kokutetsu\ ;
+角樽 > tsunodaru\ ;
+撃滅 > gekimetsu\ ;
+糧秣 > ryoumatsu\ ;
+隣室 > rinshitsu\ ;
+診察 > shinsatsu\ ;
+外付 > sotodzuke\ ;
+夏作 > natsusaku\ ;
+照尺 > shoushaku\ ;
+雪兎 > yukiusagi\ ;
+終決 > shuuketsu\ ;
+襲爵 > shuushaku\ ;
+覆滅 > fukumetsu\ ;
+墨壷 > sumitsubo\ ;
+誅伐 > chuubatsu\ ;
+放出 > houshutsu\ ;
+終極 > shuukyoku\ ;
+裸線 > hadakasen\ ;
+覆没 > fukubotsu\ ;
+煩型 > urusagata\ ;
+詔勅 > shouchoku\ ;
+支出 > shishutsu\ ;
+綢密 > chuumitsu\ ;
+組曲 > kumikyoku\ ;
+終末 > shuumatsu\ ;
+終曲 > shuukyoku\ ;
+継室 > keishitsu\ ;
+国表 > kuniomote\ ;
+終日 > shuujitsu\ ;
+締切 > shimekiri\ ;
+土色 > tsuchiiro\ ;
+接続 > setsuzoku\ ;
+米粒 > kometsubu\ ;
+糟漬 > kasudzuke\ ;
+粛白 > shukuhaku\ ;
+街角 > machikado\ ;
+撫子 > nadeshiko\ ;
+糠油 > nukaabura\ ;
+長物 > choubutsu\ ;
+陰口 > kageguchi\ ;
+親心 > oyagokoro\ ;
+衆説 > shuusetsu\ ;
+絶妙 > zetsumyou\ ;
+糸桜 > itozakura\ ;
+陳列 > chinretsu\ ;
+糸柳 > itoyanagi\ ;
+執拗 > shitsuyou\ ;
+焼却 > shoukyaku\ ;
+激職 > gekishoku\ ;
+親密 > shinmitsu\ ;
+終局 > shuukyoku\ ;
+筒音 > tsutsuoto\ ;
+紋所 > mondokoro\ ;
+袋網 > fukuroami\ ;
+言伝 > kotodzute\ ;
+火柱 > hibashira\ ;
+閥族 > batsuzoku\ ;
+褶曲 > shuukyoku\ ;
+角叉 > tsunomata\ ;
+抜錨 > batsubyou\ ;
+国立 > kokuritsu\ ;
+激突 > gekitotsu\ ;
+門松 > kadomatsu\ ;
+抜道 > nukemichi\ ;
+長月 > nagatsuki\ ;
+血肉 > ketsuniku\ ;
+紛失 > funshitsu\ ;
+振粛 > shinshuku\ ;
+土牢 > tsuchirou\ ;
+激発 > gekihatsu\ ;
+米油 > komeabura\ ;
+筋道 > sujimichi\ ;
+篳篥 > hichiriki\ ;
+衝突 > shoutotsu\ ;
+親切 > shinsetsu\ ;
+米櫃 > komebitsu\ ;
+竜骨 > ryuukotsu\ ;
+結了 > ketsuryou\ ;
+托鉢 > takuhatsu\ ;
+閏年 > uruudoshi\ ;
+等質 > toushitsu\ ;
+嘱託 > shokutaku\ ;
+節約 > setsuyaku\ ;
+激烈 > gekiretsu\ ;
+蟇蛙 > hikigaeru\ ;
+蜀黍 > morokoshi\ ;
+血眼 > chimanako\ ;
+箸箱 > hashibako\ ;
+複式 > fukushiki\ ;
+西側 > nishigawa\ ;
+損失 > sonshitsu\ ;
+闖入 > chin''nyuu\ ;
+蜂鳥 > hachidori\ ;
+為体 > teitaraku\ ;
+挑発 > chouhatsu\ ;
+溶質 > youshitsu\ ;
+灰土 > haitsuchi\ ;
+裏扉 > uratobira\ ;
+搬出 > hanshutsu\ ;
+粛学 > shukugaku\ ;
+閾値 > shikiichi\ ;
+裏情 > uranasake\ ;
+蟇股 > kaerumata\ ;
+血煙 > chikemuri\ ;
+表決 > hyouketsu\ ;
+滑落 > katsuraku\ ;
+持物 > mochimono\ ;
+門口 > kadoguchi\ ;
+潜熱 > sen''netsu\ ;
+挟殺 > kyousatsu\ ;
+表札 > hyousatsu\ ;
+表書 > omotegaki\ ;
+糊代 > norishiro\ ;
+穴隙 > ketsugeki\ ;
+錯雑 > sakuzatsu\ ;
+圧密 > atsumitsu\ ;
+在室 > zaishitsu\ ;
+漬物 > tsukemono\ ;
+蜜豆 > mitsumame\ ;
+漂着 > hyouchaku\ ;
+提出 > teishutsu\ ;
+深靴 > fukagutsu\ ;
+節欲 > setsuyoku\ ;
+袋帯 > fukuroobi\ ;
+嘱目 > shokumoku\ ;
+穀食 > kokushoku\ ;
+積雪 > sekisetsu\ ;
+節榑 > fushikure\ ;
+血族 > ketsuzoku\ ;
+策略 > sakuryaku\ ;
+鍼術 > shinjutsu\ ;
+挑撥 > chouhatsu\ ;
+拓殖 > takushoku\ ;
+蛙跳 > kaerutobi\ ;
+排出 > haishutsu\ ;
+圧力 > atsuryoku\ ;
+竹箒 > takebouki\ ;
+鼻面 > hanadzura\ ;
+竿秤 > saobakari\ ;
+袖口 > sodeguchi\ ;
+捻出 > nenshutsu\ ;
+鋳鉄 > chuutetsu\ ;
+章節 > shousetsu\ ;
+啓蟄 > keichitsu\ ;
+涙雨 > namidaame\ ;
+篤実 > tokujitsu\ ;
+鎖糸 > kusariito\ ;
+禿鷲 > hagewashi\ ;
+血尿 > ketsunyou\ ;
+懲罰 > choubatsu\ ;
+国力 > kokuryoku\ ;
+国別 > kunibetsu\ ;
+抽斗 > hikidashi\ ;
+浸食 > shinshoku\ ;
+築山 > tsukiyama\ ;
+袖付 > sodetsuke\ ;
+扼殺 > yakusatsu\ ;
+血塗 > chimidoro\ ;
+麹黴 > koujikabi\ ;
+涙金 > namidakin\ ;
+血圧 > ketsuatsu\ ;
+潮境 > shiozakai\ ;
+稟質 > hinshitsu\ ;
+湿田 > shitsuden\ ;
+黒髪 > kokuhatsu\ ;
+打消 > uchikeshi\ ;
+表側 > omotegawa\ ;
+蛙股 > kaerumata\ ;
+鐘撞 > kanetsuki\ ;
+行列 > gyouretsu\ ;
+笑殺 > shousatsu\ ;
+才槌 > saidzuchi\ ;
+湿潤 > shitsujun\ ;
+街並 > machinami\ ;
+鼻衝 > hanatsuki\ ;
+渋紙 > shibugami\ ;
+品質 > hinshitsu\ ;
+鼠講 > nezumikou\ ;
+鏡板 > kagamiita\ ;
+空穴 > karaketsu\ ;
+麦飯 > mugimeshi\ ;
+鋼色 > haganeiro\ ;
+払暁 > futsugyou\ ;
+虫螻 > mushikera\ ;
+童歌 > warabeuta\ ;
+打擲 > chouchaku\ ;
+活量 > katsuryou\ ;
+拠出 > kyoshutsu\ ;
+噴出 > funshutsu\ ;
+渋皮 > shibukawa\ ;
+藁靴 > waragutsu\ ;
+算出 > sanshutsu\ ;
+鎖樋 > kusaritoi\ ;
+活軸 > katsujiku\ ;
+湿板 > shitsuban\ ;
+浮袋 > ukibukuro\ ;
+浸蝕 > shinshoku\ ;
+商略 > shouryaku\ ;
+活躍 > katsuyaku\ ;
+鉱質 > koushitsu\ ;
+虫腹 > mushibara\ ;
+鼠色 > nezumiiro\ ;
+泥靴 > dorogutsu\ ;
+涜職 > tokushoku\ ;
+筆墨 > hitsuboku\ ;
+針鰻 > hariunagi\ ;
+鼻綱 > hanadzuna\ ;
+筆塚 > fudedzuka\ ;
+滝壺 > takitsubo\ ;
+滝壷 > takitsubo\ ;
+告達 > kokutatsu\ ;
+漏出 > roushutsu\ ;
+筆圧 > hitsuatsu\ ;
+窮極 > kyuukyoku\ ;
+金鯱 > kinshachi\ ;
+禀質 > hinshitsu\ ;
+口髭 > kuchihige\ ;
+虫籠 > mushikago\ ;
+流血 > ryuuketsu\ ;
+憑物 > tsukimono\ ;
+積率 > sekiritsu\ ;
+鼻突 > hanatsuki\ ;
+釜飯 > kamameshi\ ;
+深爪 > fukadzume\ ;
+竹帛 > chikuhaku\ ;
+秋色 > shuushoku\ ;
+泡銭 > abukuzeni\ ;
+注釈 > chuushaku\ ;
+愁色 > shuushoku\ ;
+悪質 > akushitsu\ ;
+淋疾 > rinshitsu\ ;
+麗質 > reishitsu\ ;
+麻袋 > asabukuro\ ;
+滝口 > takiguchi\ ;
+鼠算 > nezumizan\ ;
+湿式 > shisshiki\ ;
+穀物 > kokumotsu\ ;
+泥道 > doromichi\ ;
+古靴 > furugutsu\ ;
+沈鬱 > chin''utsu\ ;
+君達 > kimitachi\ ;
+鷲鼻 > washibana\ ;
+折伏 > shakubuku\ ;
+鼠穴 > nezumiana\ ;
+滑台 > suberidai\ ;
+竜巻 > tatsumaki\ ;
+釣鐘 > tsurigane\ ;
+黒色 > kokushoku\ ;
+究極 > kyuukyoku\ ;
+満室 > manshitsu\ ;
+鷦鷯 > misosazai\ ;
+端女 > hashitame\ ;
+釣針 > tsuribari\ ;
+金鎖 > kingusari\ ;
+藤蔓 > fujidzuru\ ;
+鉛色 > namariiro\ ;
+渋柿 > shibugaki\ ;
+吸血 > kyuuketsu\ ;
+古鉄 > furutetsu\ ;
+海神 > watatsumi\ ;
+鈴虫 > suzumushi\ ;
+同質 > doushitsu\ ;
+口金 > kuchigane\ ;
+突撃 > totsugeki\ ;
+鷓鴣 > yamauzura\ ;
+黒縁 > kurobuchi\ ;
+鎮圧 > chin''atsu\ ;
+喪失 > soushitsu\ ;
+種油 > taneabura\ ;
+唐櫃 > karabitsu\ ;
+口軽 > kuchigaru\ ;
+窮屈 > kyuukutsu\ ;
+黒竹 > kurochiku\ ;
+友達 > tomodachi\ ;
+品物 > shinamono\ ;
+竹光 > takemitsu\ ;
+藁苞 > waradzuto\ ;
+湿原 > shitsugen\ ;
+神色 > shinshoku\ ;
+唐松 > karamatsu\ ;
+神職 > shinshoku\ ;
+口許 > kuchimoto\ ;
+蚊柱 > kabashira\ ;
+竹串 > takegushi\ ;
+消滅 > shoumetsu\ ;
+針術 > shinjutsu\ ;
+黒白 > kokubyaku\ ;
+神罰 > shinbatsu\ ;
+油蝉 > aburazemi\ ;
+性質 > seishitsu\ ;
+取説 > torisetsu\ ;
+氷雪 > hyousetsu\ ;
+蛸壼 > takotsubo\ ;
+蛸壷 > takotsubo\ ;
+湧出 > youshutsu\ ;
+空室 > kuushitsu\ ;
+錘形 > tsumugata\ ;
+憩室 > keishitsu\ ;
+急設 > kyuusetsu\ ;
+金蔓 > kanedzuru\ ;
+消極 > shoukyoku\ ;
+釣船 > tsuribune\ ;
+氷釈 > hyoushaku\ ;
+鉢物 > hachimono\ ;
+浚渫 > shunsetsu\ ;
+淑徳 > shukutoku\ ;
+祝福 > shukufuku\ ;
+没落 > botsuraku\ ;
+窓口 > madoguchi\ ;
+告発 > kokuhatsu\ ;
+品柄 > shinagara\ ;
+悪疾 > akushitsu\ ;
+吸着 > kyuuchaku\ ;
+酌量 > shakuryou\ ;
+口脇 > kuchiwaki\ ;
+確説 > kakusetsu\ ;
+薄緑 > usumidori\ ;
+品数 > shinakazu\ ;
+鹿皮 > shikagawa\ ;
+蛙又 > kaerumata\ ;
+黙殺 > mokusatsu\ ;
+恐縮 > kyoushuku\ ;
+蚕室 > sanshitsu\ ;
+突出 > tosshutsu\ ;
+都風 > miyakofuu\ ;
+油糟 > aburakasu\ ;
+水質 > suishitsu\ ;
+突入 > totsunyuu\ ;
+油粕 > aburakasu\ ;
+稠密 > choumitsu\ ;
+黒樫 > kurogashi\ ;
+活歴 > katsureki\ ;
+口紅 > kuchibeni\ ;
+秋日 > shuujitsu\ ;
+右端 > migihashi\ ;
+薬瓶 > kusuribin\ ;
+哲学 > tetsugaku\ ;
+鉄渋 > kanashibu\ ;
+収縮 > shuushuku\ ;
+忌詞 > imikotoba\ ;
+台秤 > daibakari\ ;
+海扇 > hotategai\ ;
+必読 > hitsudoku\ ;
+博識 > hakushiki\ ;
+黒松 > kuromatsu\ ;
+〆切 > shimekiri\ ;
+卓識 > takushiki\ ;
+薬物 > yakubutsu\ ;
+深切 > shinsetsu\ ;
+硬質 > koushitsu\ ;
+氷蝕 > hyoushoku\ ;
+卓説 > takusetsu\ ;
+黒星 > kuroboshi\ ;
+秀抜 > shuubatsu\ ;
+心血 > shinketsu\ ;
+水虫 > mizumushi\ ;
+蔓草 > tsurukusa\ ;
+強飯 > kowameshi\ ;
+票決 > hyouketsu\ ;
+葛餅 > kuzumochi\ ;
+鶉豆 > uzuramame\ ;
+金盥 > kanadarai\ ;
+矯飾 > kyoushoku\ ;
+口癖 > kuchiguse\ ;
+石頭 > ishiatama\ ;
+鳥黐 > torimochi\ ;
+涙声 > namidagoe\ ;
+落髪 > rakuhatsu\ ;
+勅額 > chokugaku\ ;
+卵色 > tamagoiro\ ;
+稲光 > inabikari\ ;
+収着 > shuuchaku\ ;
+消失 > soushitsu\ ;
+殿達 > tonotachi\ ;
+求職 > kyuushoku\ ;
+落飾 > rakushoku\ ;
+沈着 > chinchaku\ ;
+薬殺 > yakusatsu\ ;
+祥月 > shoutsuki\ ;
+私室 > shishitsu\ ;
+形質 > keishitsu\ ;
+収率 > shuuritsu\ ;
+神曲 > shinkyoku\ ;
+確立 > kakuritsu\ ;
+占者 > uranaisha\ ;
+品品 > shinajina\ ;
+氷結 > hyouketsu\ ;
+忠節 > chuusetsu\ ;
+鉢巻 > hachimaki\ ;
+咄家 > hanashika\ ;
+銷却 > shoukyaku\ ;
+消却 > shoukyaku\ ;
+矍鑠 > kakushaku\ ;
+復職 > fukushoku\ ;
+毒虫 > dokumushi\ ;
+卓絶 > takuzetsu\ ;
+取消 > torikeshi\ ;
+周密 > shuumitsu\ ;
+副食 > fukushoku\ ;
+蒟蒻 > kon''nyaku\ ;
+各月 > kakutsuki\ ;
+段袋 > danbukuro\ ;
+浸入 > shin''nyuu\ ;
+収没 > shuubotsu\ ;
+鉄屑 > tetsukuzu\ ;
+卓筆 > takuhitsu\ ;
+確率 > kakuritsu\ ;
+取次 > toritsugi\ ;
+卓立 > takuritsu\ ;
+神式 > shinshiki\ ;
+正道 > masamichi\ ;
+沈没 > chinbotsu\ ;
+毒舌 > dokuzetsu\ ;
+磨汁 > togishiru\ ;
+役職 > yakushoku\ ;
+洋室 > youshitsu\ ;
+碧玉 > hekigyoku\ ;
+歯質 > shishitsu\ ;
+酷熱 > kokunetsu\ ;
+蔵浚 > kurazarae\ ;
+恋敵 > koigataki\ ;
+口早 > kuchibaya\ ;
+汁物 > shirumono\ ;
+酷烈 > kokuretsu\ ;
+蓄積 > chikuseki\ ;
+弱虫 > yowamushi\ ;
+徴発 > chouhatsu\ ;
+忠烈 > chuuretsu\ ;
+惜別 > sekibetsu\ ;
+活劇 > katsugeki\ ;
+台所 > daidokoro\ ;
+後程 > nochihodo\ ;
+反日 > han''nichi\ ;
+弓術 > kyuujutsu\ ;
+遠近 > ochikochi\ ;
+力説 > rikisetsu\ ;
+鴬色 > uguisuiro\ ;
+博物 > hakubutsu\ ;
+単物 > hitoemono\ ;
+毒筆 > dokuhitsu\ ;
+呑口 > nomiguchi\ ;
+命乞 > inochigoi\ ;
+同室 > doushitsu\ ;
+恋心 > koigokoro\ ;
+悪口 > waruguchi\ ;
+初雪 > hatsuyuki\ ;
+弱腰 > yowagoshi\ ;
+逆鞘 > gyakuzaya\ ;
+年頃 > toshigoro\ ;
+着陸 > chakuriku\ ;
+告別 > kokubetsu\ ;
+水油 > mizuabura\ ;
+氷水 > koorimizu\ ;
+呈出 > teishutsu\ ;
+前輿 > sakigoshi\ ;
+号室 > goushitsu\ ;
+河岸 > kawagishi\ ;
+強縮 > kyoushuku\ ;
+出願 > shutsugan\ ;
+出題 > shutsudai\ ;
+恐察 > kyousatsu\ ;
+鱗雲 > urokogumo\ ;
+鴃舌 > gekizetsu\ ;
+神勅 > shinchoku\ ;
+祝勝 > shukushou\ ;
+通釈 > tsuushaku\ ;
+砂粒 > sunatsubu\ ;
+速達 > sokutatsu\ ;
+出陣 > shutsujin\ ;
+通達 > tsuutatsu\ ;
+初釜 > hatsugama\ ;
+出門 > shutsumon\ ;
+釣堀 > tsuribori\ ;
+近頃 > chikagoro\ ;
+鳶職 > tobishoku\ ;
+石筆 > sekihitsu\ ;
+石竹 > sekichiku\ ;
+引綱 > hikidzuna\ ;
+神仏 > shinbutsu\ ;
+短筒 > tandzutsu\ ;
+毒物 > dokubutsu\ ;
+即日 > sokujitsu\ ;
+逃道 > nigemichi\ ;
+神主 > kan''nushi\ ;
+合印 > aijirushi\ ;
+卒業 > sotsugyou\ ;
+勝着 > shouchaku\ ;
+吐出 > toshutsu\ ;
+金型 > kanagata\ ;
+石神 > shakujin\ ;
+名刹 > meisatsu\ ;
+弾着 > danchaku\ ;
+落籍 > rakuseki\ ;
+矢筒 > yadzutsu\ ;
+心服 > shinpuku\ ;
+逆転 > gyakuten\ ;
+合力 > gouryoku\ ;
+薙刀 > naginata\ ;
+同列 > douretsu\ ;
+直面 > chokumen\ ;
+復業 > fukugyou\ ;
+薄口 > usukuchi\ ;
+草食 > soushoku\ ;
+常闇 > tokoyami\ ;
+合冊 > gousatsu\ ;
+剥落 > hakuraku\ ;
+茶髪 > chapatsu\ ;
+速読 > sokudoku\ ;
+厳密 > genmitsu\ ;
+出郷 > shukkyou\ ;
+厚底 > atsuzoko\ ;
+引窓 > hikimado\ ;
+分轄 > bunkatsu\ ;
+通読 > tsuudoku\ ;
+遜色 > sonshoku\ ;
+追跡 > tsuiseki\ ;
+勲爵 > kunshaku\ ;
+通訳 > tsuuyaku\ ;
+只只 > tadatada\ ;
+友垣 > tomogaki\ ;
+半月 > hantsuki\ ;
+真迹 > shinseki\ ;
+吉例 > kitsurei\ ;
+近鉄 > kintetsu\ ;
+茶飯 > chameshi\ ;
+別言 > betsugen\ ;
+殖産 > shokusan\ ;
+金口 > kinguchi\ ;
+造血 > zouketsu\ ;
+鳥籠 > torikago\ ;
+勃発 > boppatsu\ ;
+建築 > kenchiku\ ;
+出身 > shusshin\ ;
+十月 > juugatsu\ ;
+口占 > kuchiura\ ;
+正立 > seiritsu\ ;
+鯨骨 > geikotsu\ ;
+求心 > kyuushin\ ;
+相鎚 > aidzuchi\ ;
+眼識 > ganshiki\ ;
+心拍 > shinpaku\ ;
+彼此 > karekore\ ;
+歯磨 > hamigaki\ ;
+落石 > rakuseki\ ;
+帝闕 > teiketsu\ ;
+内鰐 > uchiwani\ ;
+真蹟 > shinseki\ ;
+古創 > furukizu\ ;
+鴨猟 > kamoryou\ ;
+没却 > bokkyaku\ ;
+金力 > kinryoku\ ;
+右側 > migigawa\ ;
+出超 > shutchou\ ;
+口前 > kuchimae\ ;
+刻薄 > kokuhaku\ ;
+真跡 > shinseki\ ;
+水性 > mizushou\ ;
+広袖 > hirosode\ ;
+重力 > juuryoku\ ;
+相鉄 > soutetsu\ ;
+荷車 > niguruma\ ;
+動物 > doubutsu\ ;
+知略 > chiryaku\ ;
+目録 > mokuroku\ ;
+切論 > setsuron\ ;
+凶賊 > kyouzoku\ ;
+着装 > chakusou\ ;
+遅脈 > chimyaku\ ;
+水引 > mizuhiki\ ;
+橈骨 > toukotsu\ ;
+殲滅 > senmetsu\ ;
+古傷 > furukizu\ ;
+冠雪 > kansetsu\ ;
+北極 > hokkyoku\ ;
+幻術 > genjutsu\ ;
+氷床 > hyoushou\ ;
+劃策 > kakusaku\ ;
+即席 > sokuseki\ ;
+又又 > matamata\ ;
+水底 > minasoko\ ;
+直配 > chokuhai\ ;
+切言 > setsugen\ ;
+急告 > kyuukoku\ ;
+釈典 > shakuten\ ;
+毫末 > goumatsu\ ;
+半折 > hansetsu\ ;
+平袖 > hirasode\ ;
+鯛飯 > taimeshi\ ;
+切要 > setsuyou\ ;
+巻雲 > makigumo\ ;
+残物 > zanbutsu\ ;
+態々 > wazawaza\ ;
+劫略 > gouryaku\ ;
+反別 > tanbetsu\ ;
+正直 > shoujiki\ ;
+効率 > kouritsu\ ;
+只事 > tadagoto\ ;
+碩学 > sekigaku\ ;
+水嵩 > mizukasa\ ;
+直送 > chokusou\ ;
+分裂 > bunretsu\ ;
+役柄 > yakugara\ ;
+凌辱 > ryoujoku\ ;
+律文 > ritsubun\ ;
+程々 > hodohodo\ ;
+収入 > shuunyuu\ ;
+若鶏 > wakadori\ ;
+沈勇 > chin''yuu\ ;
+双六 > sugoroku\ ;
+廃絶 > haizetsu\ ;
+道糸 > michiito\ ;
+創立 > souritsu\ ;
+協心 > kyoushin\ ;
+北朝 > hokuchou\ ;
+勇烈 > yuuretsu\ ;
+性別 > seibetsu\ ;
+勃然 > botsuzen\ ;
+単式 > tanshiki\ ;
+参列 > sanretsu\ ;
+気心 > kigokoro\ ;
+川風 > kawakaze\ ;
+刀術 > toujutsu\ ;
+匡救 > kyoukyuu\ ;
+死物 > shibutsu\ ;
+刳舟 > kuribune\ ;
+彼是 > karekore\ ;
+分蝕 > bunshoku\ ;
+白鳥 > hakuchou\ ;
+兵食 > heishoku\ ;
+殿様 > tonosama\ ;
+参入 > san''nyuu\ ;
+受付 > uketsuke\ ;
+単帯 > hitoeobi\ ;
+矯激 > kyougeki\ ;
+怪傑 > kaiketsu\ ;
+刺股 > sasumata\ ;
+汲取 > kumitori\ ;
+砂浜 > sunahama\ ;
+達筆 > tappitsu\ ;
+割礼 > katsurei\ ;
+毎月 > maitsuki\ ;
+升形 > masugata\ ;
+川霧 > kawagiri\ ;
+劇的 > gekiteki\ ;
+分蘖 > bunketsu\ ;
+叔世 > shukusei\ ;
+兀鷹 > hagetaka\ ;
+勘決 > kanketsu\ ;
+即妙 > sokumyou\ ;
+剣突 > kentsuku\ ;
+必定 > hitsujou\ ;
+急信 > kyuushin\ ;
+前約 > zen''yaku\ ;
+劇痛 > gekitsuu\ ;
+午年 > umadoshi\ ;
+平落 > hiraochi\ ;
+硬式 > koushiki\ ;
+常識 > joushiki\ ;
+心学 > shingaku\ ;
+毎日 > mainichi\ ;
+白骨 > hakkotsu\ ;
+升席 > masuseki\ ;
+横風 > yokokaze\ ;
+急伸 > kyuushin\ ;
+鰐足 > waniashi\ ;
+遅筆 > chihitsu\ ;
+母方 > hahakata\ ;
+氷壁 > hyouheki\ ;
+瞞着 > manchaku\ ;
+辛辛 > karagara\ ;
+相識 > soushiki\ ;
+菜箸 > saibashi\ ;
+週給 > shuukyuu\ ;
+八面 > hachimen\ ;
+博学 > hakugaku\ ;
+殖民 > shokumin\ ;
+進級 > shinkyuu\ ;
+前節 > zensetsu\ ;
+得心 > tokushin\ ;
+着船 > chakusen\ ;
+引潮 > hikishio\ ;
+常設 > jousetsu\ ;
+得得 > tokutoku\ ;
+落潮 > rakuchou\ ;
+弱毒 > jakudoku\ ;
+厥冷 > ketsurei\ ;
+蔵元 > kuramoto\ ;
+建物 > tatemono\ ;
+死滅 > shimetsu\ ;
+勇決 > yuuketsu\ ;
+先高 > sakidaka\ ;
+発駅 > hatsueki\ ;
+退色 > taishoku\ ;
+気室 > kishitsu\ ;
+円錐 > marugiri\ ;
+勝楽 > shouraku\ ;
+兎馬 > usagiuma\ ;
+欠礼 > ketsurei\ ;
+当月 > tougetsu\ ;
+千島 > chishima\ ;
+横雲 > yokogumo\ ;
+徐徐 > sorosoro\ ;
+元高 > motodaka\ ;
+師説 > shisetsu\ ;
+包摂 > housetsu\ ;
+殿方 > tonogata\ ;
+民宿 > minshuku\ ;
+連結 > renketsu\ ;
+直言 > chokugen\ ;
+彎月 > wangetsu\ ;
+巡錫 > junshaku\ ;
+彎曲 > wankyoku\ ;
+直角 > chokkaku\ ;
+廉直 > renchoku\ ;
+直覚 > chokkaku\ ;
+直視 > chokushi\ ;
+死活 > shikatsu\ ;
+心境 > shinkyou\ ;
+平脈 > heimyaku\ ;
+当日 > toujitsu\ ;
+復学 > fukugaku\ ;
+入閣 > nyuukaku\ ;
+横長 > yokonaga\ ;
+死没 > shibotsu\ ;
+包括 > houkatsu\ ;
+退職 > taishoku\ ;
+忠告 > chuukoku\ ;
+巻軸 > makijiku\ ;
+百雷 > hyakurai\ ;
+百難 > hyakunan\ ;
+出芽 > shutsuga\ ;
+菅笠 > sugegasa\ ;
+剛直 > gouchoku\ ;
+加湿 > kashitsu\ ;
+発電 > hatsuden\ ;
+分脈 > bunmyaku\ ;
+監訳 > kan''yaku\ ;
+式法 > shikihou\ ;
+遅着 > chichaku\ ;
+党閥 > toubatsu\ ;
+別納 > betsunou\ ;
+刑罰 > keibatsu\ ;
+内達 > naitatsu\ ;
+死歿 > shibotsu\ ;
+心嚢 > shin''nou\ ;
+役得 > yakutoku\ ;
+連立 > renritsu\ ;
+郷愁 > kyoushuu\ ;
+彷彿 > houfutsu\ ;
+庭石 > niwaishi\ ;
+切者 > kiremono\ ;
+遅発 > chihatsu\ ;
+元鞘 > motosaya\ ;
+忘却 > boukyaku\ ;
+歴歴 > rekireki\ ;
+確信 > kakushin\ ;
+石柱 > sekichuu\ ;
+欠番 > ketsuban\ ;
+彰徳 > shoutoku\ ;
+鱈腹 > tarafuku\ ;
+割物 > waremono\ ;
+幕臣 > bakushin\ ;
+入鋏 > nyuukyou\ ;
+軽鴨 > karugamo\ ;
+弯曲 > wankyoku\ ;
+念仏 > nenbutsu\ ;
+菊石 > kikuishi\ ;
+冷血 > reiketsu\ ;
+平絹 > hiraginu\ ;
+酒呑 > sakenomi\ ;
+葉桜 > hazakura\ ;
+着米 > chakubei\ ;
+強敵 > kyouteki\ ;
+求償 > kyuushou\ ;
+通称 > tsuushou\ ;
+忠僕 > chuuboku\ ;
+水力 > suiryoku\ ;
+残月 > zangetsu\ ;
+勅書 > chokusho\ ;
+共通 > kyoutsuu\ ;
+前略 > zenryaku\ ;
+殊更 > kotosara\ ;
+弦月 > gengetsu\ ;
+目薬 > megusuri\ ;
+協商 > kyoushou\ ;
+百錬 > hyakuren\ ;
+公達 > koutatsu\ ;
+弱敵 > jakuteki\ ;
+逆算 > gyakusan\ ;
+黙々 > mokumoku\ ;
+八達 > hattatsu\ ;
+八道 > hachidou\ ;
+北山 > kitayama\ ;
+剿滅 > soumetsu\ ;
+廃物 > haibutsu\ ;
+公述 > koujutsu\ ;
+忠信 > chuushin\ ;
+皮質 > hishitsu\ ;
+石文 > ishibumi\ ;
+形式 > keishiki\ ;
+凋落 > chouraku\ ;
+勅旨 > chokushi\ ;
+卸値 > oroshine\ ;
+短日 > tanjitsu\ ;
+水先 > mizusaki\ ;
+巷説 > kousetsu\ ;
+共軛 > kyouyaku\ ;
+黒々 > kuroguro\ ;
+剥焼 > sukiyaki\ ;
+逢着 > houchaku\ ;
+廃熱 > hainetsu\ ;
+役宅 > yakutaku\ ;
+到着 > touchaku\ ;
+茹蛸 > yudedako\ ;
+強振 > kyoushin\ ;
+再説 > saisetsu\ ;
+連発 > renpatsu\ ;
+復唱 > fukushou\ ;
+知日 > chinichi\ ;
+徴収 > choushuu\ ;
+勅撰 > chokusen\ ;
+分節 > bunsetsu\ ;
+配列 > hairetsu\ ;
+処罰 > shobatsu\ ;
+再設 > saisetsu\ ;
+歴朝 > rekichou\ ;
+劇毒 > gekidoku\ ;
+追究 > tsuikyuu\ ;
+歳末 > saimatsu\ ;
+横軸 > yokojiku\ ;
+分筆 > bunpitsu\ ;
+輯録 > shuuroku\ ;
+半口 > hankuchi\ ;
+十哲 > juttetsu\ ;
+百選 > hyakusen\ ;
+廉潔 > renketsu\ ;
+先金 > sakigane\ ;
+軽食 > keishoku\ ;
+分立 > bunritsu\ ;
+内訳 > uchiwake\ ;
+追福 > tsuifuku\ ;
+発達 > hattatsu\ ;
+欲深 > yokubuka\ ;
+歪曲 > waikyoku\ ;
+入超 > nyuuchou\ ;
+割注 > warichuu\ ;
+民力 > minryoku\ ;
+北壁 > hokuheki\ ;
+廃滅 > haimetsu\ ;
+水上 > minakami\ ;
+初盆 > hatsubon\ ;
+正札 > shoufuda\ ;
+葬式 > soushiki\ ;
+入賞 > nyuushou\ ;
+先達 > sendatsu\ ;
+止木 > tomarigi\ ;
+着眼 > chakugan\ ;
+半切 > hansetsu\ ;
+初発 > shohatsu\ ;
+軟骨 > nankotsu\ ;
+当局 > toukyoku\ ;
+殺害 > satsugai\ ;
+落掌 > rakushou\ ;
+共訳 > kyouyaku\ ;
+強弱 > kyoujaku\ ;
+心中 > shinchuu\ ;
+平皿 > hirazara\ ;
+初産 > hatsuzan\ ;
+常緑 > jouryoku\ ;
+南仏 > nanfutsu\ ;
+劫掠 > gouryaku\ ;
+十八 > juuhachi\ ;
+公設 > kousetsu\ ;
+適業 > tekigyou\ ;
+鬱鬱 > utsuutsu\ ;
+追白 > tsuihaku\ ;
+従卒 > juusotsu\ ;
+御冠 > okanmuri\ ;
+律呂 > ritsuryo\ ;
+辣腕 > ratsuwan\ ;
+着用 > chakuyou\ ;
+逆用 > gyakuyou\ ;
+逆産 > gyakuzan\ ;
+六親 > rokushin\ ;
+後口 > atokuchi\ ;
+全訳 > zen''yaku\ ;
+単一 > tan''itsu\ ;
+帯緑 > tairyoku\ ;
+石弓 > ishiyumi\ ;
+選曲 > senkyoku\ ;
+通牒 > tsuuchou\ ;
+直線 > chokusen\ ;
+県立 > kenritsu\ ;
+別状 > betsujou\ ;
+凍結 > touketsu\ ;
+川蝉 > kawasemi\ ;
+郷国 > kyoukoku\ ;
+副業 > fukugyou\ ;
+追申 > tsuishin\ ;
+砂山 > sunayama\ ;
+律動 > ritsudou\ ;
+正接 > seisetsu\ ;
+迫真 > hakushin\ ;
+省筆 > seihitsu\ ;
+弟御 > otoutogo\ ;
+兇賊 > kyouzoku\ ;
+凄絶 > seizetsu\ ;
+後列 > kouretsu\ ;
+強将 > kyoushou\ ;
+年率 > nenritsu\ ;
+冗舌 > jouzetsu\ ;
+標註 > hyouchuu\ ;
+真白 > masshiro\ ;
+典薬 > ten''yaku\ ;
+弱少 > jakushou\ ;
+弱小 > jakushou\ ;
+直答 > chokutou\ ;
+石山 > ishiyama\ ;
+茜色 > akaneiro\ ;
+発言 > hatsugen\ ;
+弓形 > yuminari\ ;
+副木 > fukuboku\ ;
+真症 > shinshou\ ;
+劣情 > retsujou\ ;
+冥罰 > meibatsu\ ;
+神々 > kamigami\ ;
+劣悪 > retsuaku\ ;
+鮮血 > senketsu\ ;
+役割 > yakuwari\ ;
+石室 > ishimuro\ ;
+若衆 > wakashuu\ ;
+母君 > hahagimi\ ;
+平熱 > heinetsu\ ;
+直税 > chokuzei\ ;
+近着 > kinchaku\ ;
+道板 > michiita\ ;
+勅宣 > chokusen\ ;
+矩尺 > kanejaku\ ;
+切物 > kiremono\ ;
+選抜 > senbatsu\ ;
+白蟻 > shiroari\ ;
+強奪 > goudatsu\ ;
+刺殺 > shisatsu\ ;
+凡百 > bonpyaku\ ;
+律令 > ritsurei\ ;
+内腿 > uchimomo\ ;
+軍閥 > gunbatsu\ ;
+幣物 > heimotsu\ ;
+逸楽 > itsuraku\ ;
+速決 > sokketsu\ ;
+北側 > hokusoku\ ;
+彫刻 > choukoku\ ;
+逆潮 > sakashio\ ;
+砲列 > houretsu\ ;
+正式 > seishiki\ ;
+冠絶 > kanzetsu\ ;
+殿原 > tonobara\ ;
+凸状 > totsujou\ ;
+内股 > uchimomo\ ;
+達文 > tatsubun\ ;
+征伐 > seibatsu\ ;
+幻滅 > genmetsu\ ;
+弾圧 > dan''atsu\ ;
+軽軽 > karugaru\ ;
+充血 > juuketsu\ ;
+内職 > naishoku\ ;
+軟鉄 > nantetsu\ ;
+干潮 > hikishio\ ;
+石墨 > sekiboku\ ;
+判決 > hanketsu\ ;
+短夜 > mijikayo\ ;
+強圧 > kyouatsu\ ;
+平滑 > heikatsu\ ;
+強国 > kyoukoku\ ;
+鬢長 > bin''naga\ ;
+円罐 > marugama\ ;
+直直 > jikijiki\ ;
+巻紙 > makigami\ ;
+兼職 > kenshoku\ ;
+欠文 > ketsubun\ ;
+冬空 > fuyuzora\ ;
+遅日 > chijitsu\ ;
+別殿 > betsuden\ ;
+別段 > betsudan\ ;
+逆浪 > sakanami\ ;
+白蓮 > byakuren\ ;
+石垣 > ishigaki\ ;
+郷俗 > kyouzoku\ ;
+軸足 > jikuashi\ ;
+逆波 > sakanami\ ;
+目的 > mokuteki\ ;
+萩属 > hagizoku\ ;
+速業 > hayawaza\ ;
+段別 > tanbetsu\ ;
+市立 > shiritsu\ ;
+若草 > wakakusa\ ;
+着水 > chakusui\ ;
+転轍 > tentetsu\ ;
+鰐皮 > wanigawa\ ;
+止宿 > shishuku\ ;
+芸術 > geijutsu\ ;
+正宗 > masamune\ ;
+横腹 > yokobara\ ;
+冗筆 > jouhitsu\ ;
+公職 > koushoku\ ;
+各々 > sorezore\ ;
+刃渡 > hawatari\ ;
+鳩尾 > mizoochi\ ;
+髣髴 > houfutsu\ ;
+出演 > shutsuen\ ;
+適役 > tekiyaku\ ;
+身長 > shinchou\ ;
+力学 > rikigaku\ ;
+色道 > shikidou\ ;
+百芸 > hyakugei\ ;
+勢力 > seiryoku\ ;
+船霊 > funadama\ ;
+追求 > tsuikyuu\ ;
+砂原 > sunahara\ ;
+彎入 > wan''nyuu\ ;
+制札 > seisatsu\ ;
+楽長 > gakuchou\ ;
+直球 > chokkyuu\ ;
+分泌 > bunpitsu\ ;
+極限 > kyokugen\ ;
+鮫膚 > samehada\ ;
+発色 > hasshoku\ ;
+葬列 > souretsu\ ;
+勅問 > chokumon\ ;
+弾力 > danryoku\ ;
+式場 > shikijou\ ;
+高高 > takadaka\ ;
+割引 > waribiki\ ;
+欲心 > yokushin\ ;
+選局 > senkyoku\ ;
+剔抉 > tekketsu\ ;
+欲得 > yokutoku\ ;
+鮮肉 > sen''niku\ ;
+逆様 > sakasama\ ;
+進撃 > shingeki\ ;
+動力 > douryoku\ ;
+勅命 > chokumei\ ;
+凛烈 > rinretsu\ ;
+武士 > mononofu\ ;
+鮫肌 > samehada\ ;
+殺人 > satsujin\ ;
+僭越 > sen''etsu\ ;
+連日 > renjitsu\ ;
+正夢 > masayume\ ;
+刷数 > satsusuu\ ;
+軋轢 > atsureki\ ;
+別条 > betsujou\ ;
+儲蓄 > chochiku\ ;
+円窓 > marumado\ ;
+若者 > wakamono\ ;
+車轄 > shakatsu\ ;
+恐々 > kowagowa\ ;
+通暁 > tsuugyou\ ;
+前払 > maebarai\ ;
+百聞 > hyakubun\ ;
+発育 > hatsuiku\ ;
+只々 > tadatada\ ;
+逐条 > chikujou\ ;
+益益 > masumasu\ ;
+横縞 > yokojima\ ;
+達弁 > tatsuben\ ;
+巣窟 > soukutsu\ ;
+川筋 > kawasuji\ ;
+僣越 > sen''etsu\ ;
+巾着 > kinchaku\ ;
+免職 > menshoku\ ;
+勇力 > yuuryoku\ ;
+川端 > kawabata\ ;
+勁卒 > keisotsu\ ;
+内祝 > uchiiwai\ ;
+草物 > kusamono\ ;
+岳麓 > gakuroku\ ;
+分極 > bunkyoku\ ;
+槍術 > soujutsu\ ;
+連接 > rensetsu\ ;
+入籍 > nyuuseki\ ;
+副将 > fukushou\ ;
+副審 > fukushin\ ;
+知力 > chiryoku\ ;
+割安 > wariyasu\ ;
+処決 > shoketsu\ ;
+年末 > nenmatsu\ ;
+幾日 > ikunichi\ ;
+年月 > nengetsu\ ;
+切株 > kirikabu\ ;
+効力 > kouryoku\ ;
+骸骨 > gaikotsu\ ;
+公立 > kouritsu\ ;
+式台 > shikidai\ ;
+骨鱗 > kotsurin\ ;
+再発 > saihatsu\ ;
+死力 > shiryoku\ ;
+労力 > rouryoku\ ;
+横筋 > yokosuji\ ;
+巌窟 > gankutsu\ ;
+冬物 > fuyumono\ ;
+逆数 > gyakusuu\ ;
+兎網 > usagiami\ ;
+白糸 > shiraito\ ;
+死別 > shibetsu\ ;
+切札 > kirifuda\ ;
+切望 > setsubou\ ;
+平日 > heijitsu\ ;
+左目 > hidarime\ ;
+軽蔑 > keibetsu\ ;
+剣客 > kenkyaku\ ;
+内発 > naihatsu\ ;
+勅使 > chokushi\ ;
+芋虫 > imomushi\ ;
+又々 > matamata\ ;
+椋鳥 > mukudori\ ;
+平政 > hiramasa\ ;
+骨髄 > kotsuzui\ ;
+目測 > mokusoku\ ;
+元締 > motojime\ ;
+石亀 > ishigame\ ;
+先細 > sakiboso\ ;
+勅任 > chokunin\ ;
+矛先 > hokosaki\ ;
+度度 > tabitabi\ ;
+勅令 > chokurei\ ;
+先約 > sen''yaku\ ;
+萩原 > hagiwara\ ;
+入神 > nyuushin\ ;
+歯列 > shiretsu\ ;
+切断 > setsudan\ ;
+廃嫡 > haichaku\ ;
+歪力 > wairyoku\ ;
+式典 > shikiten\ ;
+追撃 > tsuigeki\ ;
+芋蔓 > imodzuru\ ;
+標章 > hyoushou\ ;
+巻物 > makimono\ ;
+相殺 > sousatsu\ ;
+冗物 > joubutsu\ ;
+前屈 > zenkutsu\ ;
+刳形 > kurikata\ ;
+正割 > seikatsu\ ;
+躍進 > yakushin\ ;
+弁別 > benbetsu\ ;
+着手 > chakushu\ ;
+正切 > seisetsu\ ;
+茶漬 > chadzuke\ ;
+怖々 > kowagowa\ ;
+留鳥 > ryuuchou\ ;
+過失 > kashitsu\ ;
+船足 > funaashi\ ;
+兵略 > heiryaku\ ;
+白票 > hakuhyou\ ;
+偏食 > henshoku\ ;
+工率 > kouritsu\ ;
+歌合 > utaawase\ ;
+躑躅 > tsutsuji\ ;
+歌口 > utaguchi\ ;
+鰹木 > katsuogi\ ;
+迫撃 > hakugeki\ ;
+相槌 > aidzuchi\ ;
+汲々 > kyuukyuu\ ;
+初恋 > hatsukoi\ ;
+先程 > sakihodo\ ;
+着想 > chakusou\ ;
+船賃 > funachin\ ;
+茶渋 > chashibu\ ;
+透徹 > toutetsu\ ;
+病身 > byoushin\ ;
+進学 > shingaku\ ;
+概説 > gaisetsu\ ;
+落丁 > rakuchou\ ;
+通帳 > tsuuchou\ ;
+床店 > tokomise\ ;
+良薬 > ryouyaku\ ;
+欠場 > ketsujou\ ;
+切戻 > setsurai\ ;
+標石 > hyouseki\ ;
+偽金 > nisegane\ ;
+目標 > mokuhyou\ ;
+楽調 > gakuchou\ ;
+力倆 > rikiryou\ ;
+選別 > senbetsu\ ;
+刺客 > shikyaku\ ;
+帝欠 > teiketsu\ ;
+出捐 > shutsuen\ ;
+着心 > kigokoro\ ;
+逐年 > chikunen\ ;
+鮫皮 > samegawa\ ;
+広広 > hirobiro\ ;
+横町 > yokochou\ ;
+近日 > kinjitsu\ ;
+広幅 > hirohaba\ ;
+力作 > rikisaku\ ;
+鳩信 > kyuushin\ ;
+検閲 > ken''etsu\ ;
+瞬刻 > shunkoku\ ;
+発着 > hatchaku\ ;
+極論 > kyokuron\ ;
+着弾 > chakudan\ ;
+典物 > tenbutsu\ ;
+白皙 > hakuseki\ ;
+白白 > hakuhaku\ ;
+切情 > setsujou\ ;
+刑律 > keiritsu\ ;
+標的 > hyouteki\ ;
+出所 > dedokoro\ ;
+追徴 > tsuichou\ ;
+着底 > chakutei\ ;
+党略 > touryaku\ ;
+極言 > kyokugen\ ;
+床山 > tokoyama\ ;
+痛覚 > tsuukaku\ ;
+年式 > nenshiki\ ;
+発癌 > hatsugan\ ;
+着帽 > chakubou\ ;
+内濠 > uchibori\ ;
+先着 > senchaku\ ;
+着帯 > chakutai\ ;
+常春 > tokoharu\ ;
+追弔 > tsuichou\ ;
+荷捌 > nisabaki\ ;
+平庭 > hiraniwa\ ;
+山鳩 > yamabato\ ;
+進境 > shinkyou\ ;
+山鳥 > yamadori\ ;
+通学 > tsuugaku\ ;
+畜類 > chikurui\ ;
+平底 > hirazoko\ ;
+入獄 > nyuugoku\ ;
+公爵 > koushaku\ ;
+色艶 > irotsuya\ ;
+平幕 > hiramaku\ ;
+先発 > senpatsu\ ;
+剴切 > gaisetsu\ ;
+白瓜 > shirouri\ ;
+近接 > kinsetsu\ ;
+蹲踞 > tsukubai\ ;
+転職 > tenshoku\ ;
+透察 > tousatsu\ ;
+劇作 > gekisaku\ ;
+着岸 > chakugan\ ;
+軸索 > jikusaku\ ;
+席料 > sekiryou\ ;
+欠号 > ketsugou\ ;
+発現 > hatsugen\ ;
+百獣 > hyakujuu\ ;
+僚船 > tomobune\ ;
+真心 > magokoro\ ;
+劇中 > gekichuu\ ;
+蹄鉄 > teitetsu\ ;
+出張 > shutchou\ ;
+僧職 > soushoku\ ;
+退屈 > taikutsu\ ;
+前哲 > zentetsu\ ;
+出廬 > shutsuro\ ;
+適作 > tekisaku\ ;
+内法 > uchinori\ ;
+出度 > shutsudo\ ;
+劃一 > kakuitsu\ ;
+軸箱 > jikubako\ ;
+峡谷 > kyoukoku\ ;
+出席 > shusseki\ ;
+別売 > betsubai\ ;
+帝日 > teijitsu\ ;
+構築 > kouchiku\ ;
+目撃 > mokugeki\ ;
+軍職 > gunshoku\ ;
+分局 > bunkyoku\ ;
+冬服 > fuyufuku\ ;
+茶杓 > chashaku\ ;
+鮮烈 > senretsu\ ;
+高説 > kousetsu\ ;
+写植 > shashoku\ ;
+別堂 > betsudou\ ;
+分宿 > bunshuku\ ;
+全滅 > zenmetsu\ ;
+山風 > yamakaze\ ;
+草摺 > kusazuri\ ;
+先物 > sakimono\ ;
+百点 > hyakuten\ ;
+逆夢 > sakayume\ ;
+光熱 > kounetsu\ ;
+前列 > zenretsu\ ;
+逆境 > gyakkyou\ ;
+癇癪 > kanshaku\ ;
+軍縮 > gunshuku\ ;
+鮭漁 > sakeryou\ ;
+達人 > tatsujin\ ;
+色紙 > shikishi\ ;
+白濁 > hakudaku\ ;
+儁秀 > shunshuu\ ;
+幅広 > habahiro\ ;
+平声 > hyoushou\ ;
+山霧 > yamagiri\ ;
+逸出 > isshutsu\ ;
+盗撮 > tousatsu\ ;
+入浴 > nyuuyoku\ ;
+欠便 > ketsubin\ ;
+軽石 > karuishi\ ;
+切妻 > kirizuma\ ;
+巻末 > kanmatsu\ ;
+通商 > tsuushou\ ;
+距骨 > kyokotsu\ ;
+入津 > nyuushin\ ;
+生首 > namakubi\ ;
+入洛 > nyuuraku\ ;
+直情 > chokujou\ ;
+凶宅 > kyoutaku\ ;
+山際 > yamagiwa\ ;
+庭先 > niwasaki\ ;
+山陰 > yamakage\ ;
+剃刀 > kamisori\ ;
+横波 > yokonami\ ;
+着地 > chakuchi\ ;
+盗掘 > toukutsu\ ;
+省庁 > shouchou\ ;
+留金 > tomegane\ ;
+橋梁 > kyouryou\ ;
+町長 > chouchou\ ;
+属領 > zokuryou\ ;
+通告 > tsuukoku\ ;
+前借 > zenshaku\ ;
+欠乏 > ketsubou\ ;
+極致 > kyokuchi\ ;
+別命 > betsumei\ ;
+良策 > ryousaku\ ;
+甘食 > amashoku\ ;
+内枠 > uchiwaku\ ;
+別名 > betsumei\ ;
+橋杭 > hashigui\ ;
+別号 > betsugou\ ;
+橋杙 > hashigui\ ;
+借銭 > shakusen\ ;
+眉尻 > mayujiri\ ;
+真如 > shin''nyo\ ;
+若水 > wakamizu\ ;
+通力 > tsuuriki\ ;
+店先 > misesaki\ ;
+畔道 > azemichi\ ;
+若殿 > wakatono\ ;
+通則 > tsuusoku\ ;
+初口 > shokuchi\ ;
+樽柿 > tarugaki\ ;
+臭覚 > shuukaku\ ;
+週休 > shuukyuu\ ;
+省察 > seisatsu\ ;
+横様 > yokozama\ ;
+横槍 > yokoyari\ ;
+冷徹 > reitetsu\ ;
+督促 > tokusoku\ ;
+判別 > hanbetsu\ ;
+芳烈 > houretsu\ ;
+常客 > joukyaku\ ;
+帳尻 > choujiri\ ;
+出土 > shutsudo\ ;
+苗水 > nawamizu\ ;
+先決 > senketsu\ ;
+軽率 > keisotsu\ ;
+山鉾 > yamaboko\ ;
+髄虫 > zuimushi\ ;
+皆様 > minasama\ ;
+別册 > bessatsu\ ;
+別冊 > bessatsu\ ;
+帷子 > katabira\ ;
+草市 > kusaichi\ ;
+白檀 > byakudan\ ;
+若様 > wakasama\ ;
+直射 > chokusha\ ;
+山里 > yamazato\ ;
+退却 > taikyaku\ ;
+追及 > tsuikyuu\ ;
+槍玉 > yaridama\ ;
+甲鉄 > koutetsu\ ;
+局面 > kyokumen\ ;
+通信 > tsuushin\ ;
+極線 > kyokusen\ ;
+通俗 > tsuuzoku\ ;
+船縁 > funaberi\ ;
+皓月 > kougetsu\ ;
+色相 > shikisou\ ;
+色盲 > shikimou\ ;
+眉墨 > mayuzumi\ ;
+内接 > naisetsu\ ;
+巴戦 > tomoesen\ ;
+全曲 > zenkyoku\ ;
+徐々 > sorosoro\ ;
+軸物 > jikumono\ ;
+業績 > gyouseki\ ;
+入木 > nyuuboku\ ;
+登極 > toukyoku\ ;
+極細 > gokuboso\ ;
+入朝 > nyuuchou\ ;
+送別 > soubetsu\ ;
+足首 > ashikubi\ ;
+兼摂 > kensetsu\ ;
+別便 > betsubin\ ;
+年別 > nenbetsu\ ;
+局限 > kyokugen\ ;
+生録 > namaroku\ ;
+巧拙 > kousetsu\ ;
+白梅 > shiraume\ ;
+臆説 > okusetsu\ ;
+先様 > sakisama\ ;
+全日 > zenjitsu\ ;
+布引 > nunobiki\ ;
+監察 > kansatsu\ ;
+分力 > bunryoku\ ;
+傍耳 > katamimi\ ;
+略言 > ryakugen\ ;
+別人 > betsunin\ ;
+分割 > bunkatsu\ ;
+小魚 > kozakana\ ;
+左手 > hidarite\ ;
+色町 > iromachi\ ;
+色男 > irootoko\ ;
+楽章 > gakushou\ ;
+分別 > bunbetsu\ ;
+分列 > bunretsu\ ;
+鬱病 > utsubyou\ ;
+逆修 > gyakushu\ ;
+直売 > chokubai\ ;
+借貸 > shakutai\ ;
+借財 > shakuzai\ ;
+冬山 > fuyuyama\ ;
+分冊 > bunsatsu\ ;
+軍略 > gunryaku\ ;
+用達 > youtatsu\ ;
+荒夷 > araebisu\ ;
+極端 > kyokutan\ ;
+真南 > maminami\ ;
+略装 > ryakusou\ ;
+列伝 > retsuden\ ;
+共振 > kyoushin\ ;
+船端 > funabata\ ;
+鯨座 > kujiraza\ ;
+着任 > chakunin\ ;
+辻堂 > tsujidou\ ;
+俺達 > oretachi\ ;
+真勇 > shin''yuu\ ;
+傘紙 > kasagami\ ;
+白昼 > hakuchuu\ ;
+痼疾 > koshitsu\ ;
+出処 > dedokoro\ ;
+偽者 > nisemono\ ;
+克服 > kokufuku\ ;
+画質 > gashitsu\ ;
+跳躍 > chouyaku\ ;
+追伸 > tsuishin\ ;
+発明 > hatsumei\ ;
+逆上 > gyakujou\ ;
+先月 > sengetsu\ ;
+平仄 > hyousoku\ ;
+円形 > marugata\ ;
+少額 > shougaku\ ;
+返却 > henkyaku\ ;
+小額 > shougaku\ ;
+凶兆 > kyouchou\ ;
+驀進 > bakushin\ ;
+楓糖 > kaedetou\ ;
+幕内 > makuuchi\ ;
+巻尺 > makijaku\ ;
+先日 > senjitsu\ ;
+借覧 > shakuran\ ;
+駒鳥 > komadori\ ;
+健脚 > kenkyaku\ ;
+幕僚 > bakuryou\ ;
+写実 > shajitsu\ ;
+元日 > ganjitsu\ ;
+白描 > hakubyou\ ;
+尻重 > shiriomo\ ;
+脛骨 > keikotsu\ ;
+元方 > motokata\ ;
+発揚 > hatsuyou\ ;
+茶壺 > chatsubo\ ;
+修身 > shuushin\ ;
+発掘 > hakkutsu\ ;
+川底 > kawazoko\ ;
+川床 > kawadoko\ ;
+凶作 > kyousaku\ ;
+概略 > gairyaku\ ;
+川幅 > kawahaba\ ;
+出京 > shukkyou\ ;
+傷病 > shoubyou\ ;
+椎茸 > shiitake\ ;
+州州 > shuushuu\ ;
+停職 > teishoku\ ;
+侑食 > yuushoku\ ;
+内局 > naikyoku\ ;
+男親 > otokooya\ ;
+凛冽 > rinretsu\ ;
+花柄 > hanagara\ ;
+公式 > koushiki\ ;
+山襞 > yamahida\ ;
+辻占 > tsujiura\ ;
+様様 > samazama\ ;
+真中 > man''naka\ ;
+内密 > naimitsu\ ;
+花束 > hanataba\ ;
+内実 > naijitsu\ ;
+共布 > tomonuno\ ;
+山裾 > yamasuso\ ;
+高空 > takazora\ ;
+花札 > hanafuda\ ;
+百態 > hyakutai\ ;
+痔疾 > jishitsu\ ;
+八幡 > hachiman\ ;
+巡察 > junsatsu\ ;
+軽業 > karuwaza\ ;
+川尻 > kawajiri\ ;
+直前 > chokuzen\ ;
+棒術 > boujutsu\ ;
+草叢 > kusamura\ ;
+花時 > hanadoki\ ;
+入幕 > nyuumaku\ ;
+直刀 > chokutou\ ;
+発情 > hatsujou\ ;
+俳謔 > haigyaku\ ;
+岩脈 > ganmyaku\ ;
+帳元 > choumoto\ ;
+病的 > byouteki\ ;
+横幅 > yokohaba\ ;
+病癖 > byouheki\ ;
+胸高 > munadaka\ ;
+促進 > sokushin\ ;
+標徴 > hyouchou\ ;
+病症 > byoushou\ ;
+冷却 > reikyaku\ ;
+膏血 > kouketsu\ ;
+傷物 > kizumono\ ;
+百弊 > hyakuhei\ ;
+凝乳 > gyounyuu\ ;
+畜舎 > chikusha\ ;
+共学 > kyougaku\ ;
+内壕 > uchibori\ ;
+少量 > shouryou\ ;
+全局 > zenkyoku\ ;
+克復 > kokufuku\ ;
+百年 > hyakunen\ ;
+足軽 > ashigaru\ ;
+小量 > shouryou\ ;
+健筆 > kenpitsu\ ;
+寒餅 > kanmochi\ ;
+寮長 > ryouchou\ ;
+先役 > sen''yaku\ ;
+俊足 > shunsoku\ ;
+内堀 > uchibori\ ;
+入寂 > nyuujaku\ ;
+臣籍 > shinseki\ ;
+信認 > shin''nin\ ;
+円型 > marugata\ ;
+辛勝 > shinshou\ ;
+入学 > nyuugaku\ ;
+業物 > wazamono\ ;
+赤靴 > akagutsu\ ;
+足跡 > sokuseki\ ;
+信証 > shinshou\ ;
+州境 > shuukyou\ ;
+信託 > shintaku\ ;
+宿駅 > shukueki\ ;
+極点 > kyokuten\ ;
+俗調 > zokuchou\ ;
+舌癌 > zetsugan\ ;
+直中 > tadanaka\ ;
+花房 > hanafusa\ ;
+直上 > chokujou\ ;
+疫病 > yakubyou\ ;
+若宮 > wakamiya\ ;
+元帳 > motochou\ ;
+寛闊 > kankatsu\ ;
+寸鉄 > suntetsu\ ;
+百害 > hyakugai\ ;
+偶発 > guuhatsu\ ;
+小身 > shoushin\ ;
+宿願 > shukugan\ ;
+生薬 > shouyaku\ ;
+宿題 > shukudai\ ;
+瓶詰 > bindzume\ ;
+偏窟 > henkutsu\ ;
+先山 > sakiyama\ ;
+男色 > nanshoku\ ;
+脱輪 > datsurin\ ;
+蹴球 > shuukyuu\ ;
+倹約 > ken''yaku\ ;
+草丈 > kusatake\ ;
+入塾 > nyuujuku\ ;
+高率 > kouritsu\ ;
+駿足 > shunsoku\ ;
+優形 > yasagata\ ;
+先客 > senkyaku\ ;
+疵物 > kizumono\ ;
+俗衆 > zokushuu\ ;
+山膚 > yamahada\ ;
+榕樹 > gajumaru\ ;
+先安 > sakiyasu\ ;
+馬面 > umadzura\ ;
+盗伐 > toubatsu\ ;
+百姓 > hyakusei\ ;
+岩窟 > gankutsu\ ;
+歴々 > rekireki\ ;
+充実 > juujitsu\ ;
+花形 > hanagata\ ;
+盗人 > nusubito\ ;
+白妙 > shirotae\ ;
+山脈 > yamanami\ ;
+花弁 > hanabira\ ;
+山肌 > yamahada\ ;
+入国 > nyuukoku\ ;
+極洋 > kyokuyou\ ;
+白壁 > hakuheki\ ;
+高熱 > kounetsu\ ;
+白墨 > hakuboku\ ;
+発売 > hatsubai\ ;
+内力 > nairyoku\ ;
+赤銅 > shakudou\ ;
+偽物 > nisemono\ ;
+皮剥 > kawahagi\ ;
+巨刹 > kyosatsu\ ;
+骨盤 > kotsuban\ ;
+鯉口 > koiguchi\ ;
+生色 > seishoku\ ;
+先太 > sakibuto\ ;
+超越 > chouetsu\ ;
+定食 > teishoku\ ;
+兵卒 > heisotsu\ ;
+様式 > youshiki\ ;
+伴食 > banshoku\ ;
+兵力 > heiryoku\ ;
+楽楽 > rakuraku\ ;
+高潮 > takashio\ ;
+内側 > uchigawa\ ;
+脅迫 > kyouhaku\ ;
+高潔 > kouketsu\ ;
+腹膜 > fukumaku\ ;
+内倉 > uchigura\ ;
+花守 > hanamori\ ;
+胸郭 > kyoukaku\ ;
+其其 > sorezore\ ;
+病毒 > byoudoku\ ;
+極楽 > gokuraku\ ;
+極極 > gokugoku\ ;
+病歴 > byoureki\ ;
+花嫁 > hanayome\ ;
+全力 > zenryoku\ ;
+共共 > tomodomo\ ;
+花婿 > hanamuko\ ;
+贋首 > nisekubi\ ;
+供託 > kyoutaku\ ;
+若君 > wakagimi\ ;
+局舎 > kyokusha\ ;
+州俗 > shuuzoku\ ;
+信腹 > shinpuku\ ;
+植生 > shokusei\ ;
+権力 > kenryoku\ ;
+優女 > yasaon''a\ ;
+画策 > kakusaku\ ;
+染髪 > senpatsu\ ;
+宿酔 > shukusui\ ;
+赫赫 > kakukaku\ ;
+伸長 > shinchou\ ;
+密造 > mitsuzou\ ;
+楽曲 > gakkyoku\ ;
+高波 > takanami\ ;
+会食 > kaishoku\ ;
+倒立 > touritsu\ ;
+俗臭 > zokushuu\ ;
+色感 > shikikan\ ;
+左上 > hidariue\ ;
+先哲 > sentetsu\ ;
+極東 > kyokutou\ ;
+色情 > shikijou\ ;
+魚屋 > sakanaya\ ;
+跳箱 > tobibako\ ;
+軟式 > nanshiki\ ;
+高殿 > takadono\ ;
+偏片 > katahara\ ;
+川上 > kawakami\ ;
+山程 > yamahodo\ ;
+発動 > hatsudou\ ;
+先口 > senkuchi\ ;
+肋骨 > rokkotsu\ ;
+畜産 > chikusan\ ;
+色彩 > shikisai\ ;
+良心 > ryoushin\ ;
+生米 > namagome\ ;
+用筆 > youhitsu\ ;
+入信 > nyuushin\ ;
+臓物 > zoumotsu\ ;
+俗習 > zokushuu\ ;
+遙々 > harubaru\ ;
+骨灰 > kotsubai\ ;
+船旅 > funatabi\ ;
+船方 > funakata\ ;
+花園 > hanazono\ ;
+入伸 > nyuushin\ ;
+光力 > kouryoku\ ;
+軍律 > gunritsu\ ;
+軍役 > gun''yaku\ ;
+百億 > hyakuoku\ ;
+屑籠 > kuzukago\ ;
+痛撃 > tsuugeki\ ;
+全乳 > zen''nyuu\ ;
+格調 > kakuchou\ ;
+入京 > nyuukyou\ ;
+輸出 > yushutsu\ ;
+概括 > gaikatsu\ ;
+膠着 > kouchaku\ ;
+信経 > shinkyou\ ;
+併設 > heisetsu\ ;
+百倍 > hyakubai\ ;
+車座 > kurumaza\ ;
+先入 > sen''nyuu\ ;
+横丁 > yokochou\ ;
+借用 > shakuyou\ ;
+宿賃 > yadochin\ ;
+畜犬 > chikuken\ ;
+傍杖 > sobadzue\ ;
+元元 > motomoto\ ;
+寝袋 > nebukuro\ ;
+芝地 > shibachi\ ;
+的中 > tekichuu\ ;
+就縛 > shuubaku\ ;
+密謀 > mitsubou\ ;
+密談 > mitsudan\ ;
+発令 > hatsurei\ ;
+良将 > ryoushou\ ;
+客車 > kyakusha\ ;
+脱色 > dasshoku\ ;
+百世 > hyakusei\ ;
+高札 > kousatsu\ ;
+百万 > hyakuman\ ;
+小腸 > shouchou\ ;
+仙骨 > senkotsu\ ;
+安酒 > yasuzake\ ;
+僻境 > hekikyou\ ;
+学長 > gakuchou\ ;
+車屋 > kurumaya\ ;
+優劣 > yuuretsu\ ;
+身心 > shinshin\ ;
+痛惜 > tsuuseki\ ;
+偽札 > nisefuda\ ;
+贋金 > nisegane\ ;
+借物 > karimono\ ;
+度々 > tabitabi\ ;
+赤蛙 > akagaeru\ ;
+傷心 > shoushin\ ;
+付馬 > tsukeuma\ ;
+赤虫 > akamushi\ ;
+佗言 > wabigoto\ ;
+生皮 > namakawa\ ;
+側杖 > sobadzue\ ;
+極性 > kyokusei\ ;
+痛心 > tsuushin\ ;
+色女 > iroon''na\ ;
+輪伐 > rinbatsu\ ;
+倍率 > bairitsu\ ;
+俗称 > zokushou\ ;
+山猿 > yamazaru\ ;
+山猫 > yamaneko\ ;
+伝達 > dentatsu\ ;
+植民 > shokumin\ ;
+寵臣 > choushin\ ;
+植毛 > shokumou\ ;
+肉鍋 > nikunabe\ ;
+男爵 > danshaku\ ;
+人魂 > hitodama\ ;
+腹痛 > fukutsuu\ ;
+船底 > funazoko\ ;
+船床 > funadoko\ ;
+駆落 > kakeochi\ ;
+極希 > gokumare\ ;
+俊秀 > shunshuu\ ;
+人骨 > jinkotsu\ ;
+小結 > komusubi\ ;
+実説 > jissetsu\ ;
+履物 > hakimono\ ;
+病徴 > byouchou\ ;
+定説 > teisetsu\ ;
+臨月 > ringetsu\ ;
+病弱 > byoujaku\ ;
+広々 > hirobiro\ ;
+骨材 > kotsuzai\ ;
+産物 > sanbutsu\ ;
+官設 > kansetsu\ ;
+検札 > kensatsu\ ;
+臣服 > shinpuku\ ;
+貪食 > donshoku\ ;
+病床 > byoushou\ ;
+信用 > shin''you\ ;
+脇腹 > wakibara\ ;
+生物 > namamono\ ;
+供給 > kyoukyuu\ ;
+局番 > kyokuban\ ;
+小策 > shousaku\ ;
+槍先 > yarisaki\ ;
+痰壺 > tantsubo\ ;
+髪床 > kamidoko\ ;
+寒色 > kanshoku\ ;
+植栽 > shokusai\ ;
+休足 > kyuusoku\ ;
+船宿 > funayado\ ;
+仏門 > butsumon\ ;
+船客 > senkyaku\ ;
+傍役 > wakiyaku\ ;
+肉迫 > nikuhaku\ ;
+核膜 > kakumaku\ ;
+亡骸 > nakigara\ ;
+臘月 > rougetsu\ ;
+植林 > shokurin\ ;
+完訳 > kan''yaku\ ;
+胸膜 > kyoumaku\ ;
+飽食 > houshoku\ ;
+修熟 > shuujuku\ ;
+宅診 > takushin\ ;
+小禄 > shouroku\ ;
+伝説 > densetsu\ ;
+足癖 > ashikuse\ ;
+脱税 > datsuzei\ ;
+京響 > kyoukyou\ ;
+転入 > ten''nyuu\ ;
+対立 > tairitsu\ ;
+腫物 > shumotsu\ ;
+極大 > kyokudai\ ;
+略書 > ryakusho\ ;
+宿舎 > shukusha\ ;
+軍卒 > gunsotsu\ ;
+峰峰 > minemine\ ;
+容色 > youshoku\ ;
+介錯 > kaishaku\ ;
+森森 > shinshin\ ;
+嵌入 > kan''nyuu\ ;
+軒別 > kenbetsu\ ;
+側役 > sobayaku\ ;
+転借 > tenshaku\ ;
+脊索 > sekisaku\ ;
+休診 > kyuushin\ ;
+財閥 > zaibatsu\ ;
+環節 > kansetsu\ ;
+木鼠 > kinezumi\ ;
+骨折 > kossetsu\ ;
+脚立 > kyatatsu\ ;
+僻事 > higagoto\ ;
+略文 > ryakubun\ ;
+軒先 > nokisaki\ ;
+根絶 > konzetsu\ ;
+極地 > kyokuchi\ ;
+枝道 > edamichi\ ;
+宿老 > shukurou\ ;
+使節 > shisetsu\ ;
+貸金 > kashikin\ ;
+高察 > kousatsu\ ;
+倒様 > sakasama\ ;
+生活 > seikatsu\ ;
+高密 > koumitsu\ ;
+仏道 > butsudou\ ;
+何者 > nanimono\ ;
+良俗 > ryouzoku\ ;
+住職 > juushoku\ ;
+柔術 > juujutsu\ ;
+生水 > namamizu\ ;
+胸糞 > munekuso\ ;
+客船 > kyakusen\ ;
+耐食 > taishoku\ ;
+老骨 > roukotsu\ ;
+枕辺 > makurabe\ ;
+尤物 > yuubutsu\ ;
+客舎 > kyakusha\ ;
+乱髪 > ranpatsu\ ;
+体罰 > taibatsu\ ;
+痛哭 > tsuukoku\ ;
+生殖 > seishoku\ ;
+人里 > hitozato\ ;
+客膳 > kyakuzen\ ;
+肉親 > nikushin\ ;
+富籤 > tomikuji\ ;
+偵察 > teisatsu\ ;
+能筆 > nouhitsu\ ;
+乾風 > karakaze\ ;
+髪型 > kamigata\ ;
+良久 > ryoukyuu\ ;
+村雨 > murasame\ ;
+軒並 > nokinami\ ;
+軒丈 > nokitake\ ;
+寒竹 > kanchiku\ ;
+月齢 > getsurei\ ;
+楽匠 > gakushou\ ;
+楽勝 > rakushou\ ;
+跳梁 > chouryou\ ;
+寒空 > samuzora\ ;
+仰角 > gyoukaku\ ;
+楽劇 > gakugeki\ ;
+飄飄 > hyouhyou\ ;
+木骨 > mokkotsu\ ;
+侯爵 > koushaku\ ;
+玉髄 > gyokuzui\ ;
+聴診 > choushin\ ;
+俗流 > zokuryuu\ ;
+定職 > teishoku\ ;
+官職 > kanshoku\ ;
+健実 > kenjitsu\ ;
+豪雪 > gousetsu\ ;
+聴覚 > choukaku\ ;
+珍重 > chinchou\ ;
+直々 > jikijiki\ ;
+自室 > jishitsu\ ;
+側壁 > sokuheki\ ;
+検尿 > ken''nyou\ ;
+乱雑 > ranzatsu\ ;
+属望 > shokubou\ ;
+聴衆 > choushuu\ ;
+中黒 > nakaguro\ ;
+検察 > kensatsu\ ;
+人足 > hitoashi\ ;
+対物 > taibutsu\ ;
+肉薄 > nikuhaku\ ;
+玉顔 > gyokugan\ ;
+颯颯 > sassatsu\ ;
+偏屈 > henkutsu\ ;
+仏説 > bussetsu\ ;
+島台 > shimadai\ ;
+仇讎 > kyuushuu\ ;
+併発 > heihatsu\ ;
+駐留 > chuuryuu\ ;
+略帽 > ryakubou\ ;
+朝飯 > asameshi\ ;
+何程 > nanihodo\ ;
+風食 > fuushoku\ ;
+畳屋 > tatamiya\ ;
+側圧 > sokuatsu\ ;
+贖罪 > shokuzai\ ;
+肩肘 > katahiji\ ;
+染色 > senshoku\ ;
+身中 > shinchuu\ ;
+村里 > murazato\ ;
+仙術 > senjutsu\ ;
+自失 > jishitsu\ ;
+俗楽 > zokugaku\ ;
+首筋 > kubisuji\ ;
+佇立 > choritsu\ ;
+贋者 > nisemono\ ;
+密着 > mitchaku\ ;
+腰板 > koshiita\ ;
+股肉 > momoniku\ ;
+脱漏 > datsurou\ ;
+胸痛 > kyoutsuu\ ;
+丸髷 > marumage\ ;
+屈曲 > kukkyoku\ ;
+船人 > funabito\ ;
+骨太 > honebuto\ ;
+高卒 > kousotsu\ ;
+就業 > shuugyou\ ;
+食道 > shokudou\ ;
+谷風 > tanikaze\ ;
+信服 > shinpuku\ ;
+仮葺 > karibuki\ ;
+風雪 > fuusetsu\ ;
+完結 > kanketsu\ ;
+柔肌 > yawahada\ ;
+駐独 > chuudoku\ ;
+玉門 > gyokumon\ ;
+饒舌 > jouzetsu\ ;
+月食 > gesshoku\ ;
+栗石 > kuriishi\ ;
+小波 > sazanami\ ;
+益々 > masumasu\ ;
+定立 > teiritsu\ ;
+丸首 > marukubi\ ;
+中高 > nakadaka\ ;
+官立 > kanritsu\ ;
+能率 > nouritsu\ ;
+足業 > ashiwaza\ ;
+木鐸 > bokutaku\ ;
+主食 > shushoku\ ;
+驚愕 > kyougaku\ ;
+俗曲 > zokkyoku\ ;
+仙薬 > sen''yaku\ ;
+作病 > sakubyou\ ;
+何百 > nanbyaku\ ;
+仁術 > jinjutsu\ ;
+信教 > shinkyou\ ;
+桜湯 > sakurayu\ ;
+検圧 > ken''atsu\ ;
+一齣 > hitokoma\ ;
+足械 > ashikase\ ;
+月面 > getsumen\ ;
+乳酪 > nyuuraku\ ;
+尽日 > jinjitsu\ ;
+少欲 > shouyoku\ ;
+画引 > kakubiki\ ;
+留学 > ryuugaku\ ;
+学習 > gakushuu\ ;
+跋文 > batsubun\ ;
+山彦 > yamabiko\ ;
+山形 > yamagata\ ;
+病中 > byouchuu\ ;
+小欲 > shouyoku\ ;
+偶力 > guuryoku\ ;
+染織 > senshoku\ ;
+任職 > ninshoku\ ;
+脱毛 > datsumou\ ;
+専決 > senketsu\ ;
+梟敵 > kyouteki\ ;
+木鋏 > kibasami\ ;
+舟人 > funabito\ ;
+貧血 > hinketsu\ ;
+足枷 > ashikase\ ;
+耳許 > mimimoto\ ;
+傑人 > ketsujin\ ;
+対決 > taiketsu\ ;
+射殺 > shasatsu\ ;
+令色 > reishoku\ ;
+封殺 > fuusatsu\ ;
+小槌 > kodzuchi\ ;
+学績 > gakuseki\ ;
+山川 > yamagawa\ ;
+高低 > takahiku\ ;
+中頃 > nakagoro\ ;
+職能 > shokunou\ ;
+屈折 > kussetsu\ ;
+実直 > jitchoku\ ;
+腰折 > koshiore\ ;
+実益 > jitsueki\ ;
+定着 > teichaku\ ;
+梁木 > ryouboku\ ;
+偶偶 > tamatama\ ;
+曲面 > kyokumen\ ;
+足早 > ashibaya\ ;
+中震 > chuushin\ ;
+舌代 > zetsudai\ ;
+柱石 > chuuseki\ ;
+山山 > yamayama\ ;
+中隔 > chuukaku\ ;
+局所 > kyokusho\ ;
+貯蓄 > chochiku\ ;
+低率 > teiritsu\ ;
+州々 > shuushuu\ ;
+染筆 > senpitsu\ ;
+信憑 > shinpyou\ ;
+桟橋 > sanbashi\ ;
+画室 > gashitsu\ ;
+肉細 > nikuboso\ ;
+客用 > kyakuyou\ ;
+中限 > nakagiri\ ;
+何物 > nanimono\ ;
+山寺 > yamadera\ ;
+猟鳥 > ryouchou\ ;
+学籍 > gakuseki\ ;
+万骨 > bankotsu\ ;
+修復 > shuufuku\ ;
+仏艦 > futsukan\ ;
+腹心 > fukushin\ ;
+実用 > jitsuyou\ ;
+修得 > shuutoku\ ;
+胆略 > tanryaku\ ;
+其々 > sorezore\ ;
+丸鑿 > marunomi\ ;
+山守 > yamamori\ ;
+足摺 > ashizuri\ ;
+食言 > shokugen\ ;
+個室 > koshitsu\ ;
+二言 > futakoto\ ;
+体熱 > tainetsu\ ;
+共々 > tomodomo\ ;
+仮綴 > karitoji\ ;
+休祥 > kyuushou\ ;
+屈従 > kutsujuu\ ;
+実現 > jitsugen\ ;
+現職 > genshoku\ ;
+豁達 > kattatsu\ ;
+信念 > shin''nen\ ;
+顎骨 > gakkotsu\ ;
+三食 > sanshoku\ ;
+了覚 > ryoukaku\ ;
+一駒 > hitokoma\ ;
+群雲 > murakumo\ ;
+月金 > getsukin\ ;
+赤沈 > sekichin\ ;
+下顎 > shitaago\ ;
+山姫 > yamahime\ ;
+脂汗 > aburaase\ ;
+腰弁 > koshiben\ ;
+宝玉 > hougyoku\ ;
+少敵 > shouteki\ ;
+侵撃 > shingeki\ ;
+驍将 > gyoushou\ ;
+丘陵 > kyuuryou\ ;
+略名 > ryakumei\ ;
+小敵 > shouteki\ ;
+略号 > ryakugou\ ;
+足技 > ashiwaza\ ;
+略史 > ryakushi\ ;
+定率 > teiritsu\ ;
+番卒 > bansotsu\ ;
+略取 > ryakushu\ ;
+実状 > jitsujou\ ;
+借地 > shakuchi\ ;
+併殺 > heisatsu\ ;
+聖職 > seishoku\ ;
+腰帯 > koshiobi\ ;
+上靴 > uwagutsu\ ;
+膜壁 > makuheki\ ;
+脱文 > datsubun\ ;
+存立 > sonritsu\ ;
+宝物 > houmotsu\ ;
+俗形 > zokugyou\ ;
+人膚 > hitohada\ ;
+風足 > kazaashi\ ;
+乾裂 > kanretsu\ ;
+桎梏 > shikkoku\ ;
+一頃 > hitokoro\ ;
+翌週 > yokushuu\ ;
+対日 > tainichi\ ;
+枠組 > wakugumi\ ;
+人脚 > hitoashi\ ;
+翻訳 > hon''yaku\ ;
+人脈 > jinmyaku\ ;
+山城 > yamajiro\ ;
+頸骨 > keikotsu\ ;
+供料 > kyouryou\ ;
+脚本 > kyakuhon\ ;
+東芝 > toushiba\ ;
+赤樫 > akagashi\ ;
+耐蝕 > taishoku\ ;
+脊椎 > sekitsui\ ;
+柴犬 > shibainu\ ;
+修学 > shuugaku\ ;
+俊徳 > shuntoku\ ;
+月輪 > getsurin\ ;
+仲秋 > chuushuu\ ;
+主述 > shujutsu\ ;
+人肌 > hitohada\ ;
+人肉 > jin''niku\ ;
+媒酌 > baishaku\ ;
+例月 > reigetsu\ ;
+生娘 > kimusume\ ;
+代筆 > daihitsu\ ;
+脊梁 > sekiryou\ ;
+密殺 > missatsu\ ;
+暴食 > boushoku\ ;
+山国 > yamaguni\ ;
+職種 > shokushu\ ;
+一際 > hitokiwa\ ;
+乾蝕 > kanshoku\ ;
+一隅 > hitosumi\ ;
+就床 > shuushou\ ;
+丈長 > takenaga\ ;
+頭髪 > touhatsu\ ;
+猥雑 > waizatsu\ ;
+聯立 > renritsu\ ;
+脊柱 > sekichuu\ ;
+頭骨 > toukotsu\ ;
+足形 > ashigata\ ;
+安物 > yasumono\ ;
+寒極 > kankyoku\ ;
+足弱 > ashiyowa\ ;
+候哉 > sourouya\ ;
+例日 > reijitsu\ ;
+中速 > chuusoku\ ;
+生壁 > namakabe\ ;
+更迭 > koutetsu\ ;
+梟将 > kyoushou\ ;
+元々 > motomoto\ ;
+肉的 > nikuteki\ ;
+胸椎 > kyoutsui\ ;
+風説 > fuusetsu\ ;
+桂月 > keigetsu\ ;
+室温 > shitsuon\ ;
+仙窟 > senkutsu\ ;
+寧日 > neijitsu\ ;
+贋物 > nisemono\ ;
+番付 > bandzuke\ ;
+赤松 > akamatsu\ ;
+略体 > ryakutai\ ;
+梅干 > umeboshi\ ;
+俗学 > zokugaku\ ;
+腹壁 > fukuheki\ ;
+中軸 > chuujiku\ ;
+略伝 > ryakuden\ ;
+腸壁 > chouheki\ ;
+象虫 > zoumushi\ ;
+林立 > rinritsu\ ;
+嬌羞 > kyoushuu\ ;
+質疑 > shitsugi\ ;
+山吹 > yamabuki\ ;
+踏切 > fumikiri\ ;
+就寝 > shuushin\ ;
+杏茸 > anzutake\ ;
+生国 > shoukoku\ ;
+信女 > shin''nyo\ ;
+束脩 > sokushuu\ ;
+小心 > shoushin\ ;
+宿業 > shukugou\ ;
+申告 > shinkoku\ ;
+寒月 > kangetsu\ ;
+有識 > yuushiki\ ;
+佚楽 > itsuraku\ ;
+就学 > shuugaku\ ;
+餅網 > mochiami\ ;
+何様 > nanisama\ ;
+翁貝 > okinagai\ ;
+富札 > tomifuda\ ;
+局外 > kyokugai\ ;
+食膳 > shokuzen\ ;
+杉苔 > sugigoke\ ;
+密林 > mitsurin\ ;
+倉卒 > sousotsu\ ;
+甲卒 > kousotsu\ ;
+客殿 > kyakuden\ ;
+並足 > namiashi\ ;
+交織 > koushoku\ ;
+畑作 > hatasaku\ ;
+瓦屋 > kawaraya\ ;
+客死 > kyakushi\ ;
+男前 > otokomae\ ;
+局報 > kyokuhou\ ;
+顰蹙 > hinshuku\ ;
+宮様 > miyasama\ ;
+作柄 > sakugara\ ;
+献酌 > kenshaku\ ;
+食育 > shokuiku\ ;
+風蝕 > fuushoku\ ;
+両足 > ryousoku\ ;
+二股 > futamata\ ;
+瓦家 > kawaraya\ ;
+上達 > joutatsu\ ;
+膝元 > hizamoto\ ;
+望蜀 > boushoku\ ;
+宿望 > shukubou\ ;
+脱帽 > datsubou\ ;
+申出 > moushide\ ;
+柄物 > garamono\ ;
+上述 > joujutsu\ ;
+作曲 > sakkyoku\ ;
+耳糞 > mimikuso\ ;
+老若 > rounyaku\ ;
+肉牛 > nikugyuu\ ;
+山元 > yamamoto\ ;
+局地 > kyokuchi\ ;
+貞節 > teisetsu\ ;
+束縛 > sokubaku\ ;
+末葉 > matsuyou\ ;
+何月 > nangatsu\ ;
+尺地 > shakuchi\ ;
+豚草 > butakusa\ ;
+曲論 > kyokuron\ ;
+山側 > yamagawa\ ;
+少少 > shoushou\ ;
+少将 > shoushou\ ;
+暗闇 > kurayami\ ;
+休漁 > kyuuryou\ ;
+玉葱 > tamanegi\ ;
+乳臭 > nyuushuu\ ;
+甘口 > amakuchi\ ;
+木菟 > mimizuku\ ;
+嬌笑 > kyoushou\ ;
+産別 > sanbetsu\ ;
+月蝕 > gesshoku\ ;
+小学 > shougaku\ ;
+様々 > samazama\ ;
+便壺 > bentsubo\ ;
+一輛 > ichiryou\ ;
+賜物 > tamamono\ ;
+生別 > seibetsu\ ;
+首枷 > kubikase\ ;
+子爵 > shishaku\ ;
+例式 > reishiki\ ;
+現生 > gen''nama\ ;
+木苺 > kiichigo\ ;
+犬鷲 > inuwashi\ ;
+本色 > honshoku\ ;
+乱脈 > ranmyaku\ ;
+定植 > teishoku\ ;
+軽々 > karugaru\ ;
+密接 > missetsu\ ;
+一躍 > ichiyaku\ ;
+山人 > yamabito\ ;
+脇息 > kyousoku\ ;
+羽衣 > hagoromo\ ;
+服薬 > fukuyaku\ ;
+属僚 > zokuryou\ ;
+足型 > ashigata\ ;
+画一 > kakuitsu\ ;
+梵刹 > bonsetsu\ ;
+伏流 > fukuryuu\ ;
+対局 > taikyoku\ ;
+猫足 > nekoashi\ ;
+小娘 > komusume\ ;
+代物 > daibutsu\ ;
+姫鱒 > himemasu\ ;
+本腰 > hongoshi\ ;
+一足 > hitoashi\ ;
+腹切 > harakiri\ ;
+両親 > ryoushin\ ;
+晩飯 > banmeshi\ ;
+翼翼 > yokuyoku\ ;
+生傷 > namakizu\ ;
+豚肉 > butaniku\ ;
+脇役 > wakiyaku\ ;
+頭金 > atamakin\ ;
+美質 > bishitsu\ ;
+届出 > todokede\ ;
+赤心 > sekishin\ ;
+本職 > honshoku\ ;
+状骨 > joukotsu\ ;
+翠色 > suishoku\ ;
+両袖 > ryousode\ ;
+核心 > kakushin\ ;
+丸薬 > gan''yaku\ ;
+伸暢 > shinchou\ ;
+朝臣 > choushin\ ;
+宿所 > shukusho\ ;
+果物 > kudamono\ ;
+現物 > genbutsu\ ;
+下請 > shitauke\ ;
+木耳 > kikurage\ ;
+尽力 > jinryoku\ ;
+人畜 > jinchiku\ ;
+仮漆 > kashitsu\ ;
+村立 > sonritsu\ ;
+風脚 > kazaashi\ ;
+係員 > kakariin\ ;
+一諾 > ichidaku\ ;
+小国 > shoukoku\ ;
+学歴 > gakureki\ ;
+宿悪 > shukuaku\ ;
+胸座 > munagura\ ;
+一読 > ichidoku\ ;
+宗教 > shuukyou\ ;
+寥寥 > ryouryou\ ;
+有色 > yuushoku\ ;
+狭量 > kyouryou\ ;
+来着 > raichaku\ ;
+休業 > kyuugyou\ ;
+月色 > gesshoku\ ;
+修了 > shuuryou\ ;
+胸幅 > munehaba\ ;
+一言 > hitokoto\ ;
+宿志 > shukushi\ ;
+耳疾 > jishitsu\ ;
+腕力 > wanryoku\ ;
+腹中 > fukuchuu\ ;
+一角 > hitokado\ ;
+肉欲 > nikuyoku\ ;
+珠玉 > shugyoku\ ;
+什物 > juumotsu\ ;
+主色 > shushoku\ ;
+贋札 > nisefuda\ ;
+肩書 > katagaki\ ;
+信伏 > shinpuku\ ;
+信任 > shin''nin\ ;
+宿弊 > shukuhei\ ;
+鬱々 > utsuutsu\ ;
+乱筆 > ranpitsu\ ;
+人物 > jinbutsu\ ;
+俗信 > zokushin\ ;
+献血 > kenketsu\ ;
+格安 > kakuyasu\ ;
+両蓋 > ryoubuta\ ;
+学業 > gakugyou\ ;
+人爵 > jinshaku\ ;
+猥褻 > waisetsu\ ;
+豚箱 > butabako\ ;
+仮殿 > karidono\ ;
+飛石 > tobiishi\ ;
+乱立 > ranritsu\ ;
+宿帳 > yadochou\ ;
+寒寒 > samuzamu\ ;
+朱筆 > shuhitsu\ ;
+主脈 > shumyaku\ ;
+付添 > tsukisoi\ ;
+本節 > honbushi\ ;
+曲芸 > kyokugei\ ;
+末節 > massetsu\ ;
+足元 > ashimoto\ ;
+財物 > zaibutsu\ ;
+小名 > shoumyou\ ;
+乗組 > norikumi\ ;
+寝姿 > nesugata\ ;
+曳船 > hikibune\ ;
+翌翌 > yokuyoku\ ;
+末筆 > mappitsu\ ;
+昼頃 > hirugoro\ ;
+股旅 > matatabi\ ;
+独身 > dokushin\ ;
+琴曲 > kinkyoku\ ;
+京物 > kyoumono\ ;
+某月 > bougetsu\ ;
+豆粕 > mamekasu\ ;
+実情 > jitsujou\ ;
+中腹 > chuufuku\ ;
+順逆 > jungyaku\ ;
+杉皮 > sugikawa\ ;
+将又 > hatamata\ ;
+脱却 > dakkyaku\ ;
+寂寥 > sekiryou\ ;
+寂寞 > sekibaku\ ;
+食用 > shokuyou\ ;
+某日 > boujitsu\ ;
+晩酌 > banshaku\ ;
+中肉 > chuuniku\ ;
+貞烈 > teiretsu\ ;
+飲物 > nomimono\ ;
+両膚 > ryouhada\ ;
+仲核 > chuukaku\ ;
+九穀 > kyuukoku\ ;
+実弾 > jitsudan\ ;
+下萠 > shitamoe\ ;
+曲者 > kusemono\ ;
+定律 > teiritsu\ ;
+桃園 > momozono\ ;
+首巻 > kubimaki\ ;
+仏気 > hotokegi\ ;
+春風 > harukaze\ ;
+並肉 > naminiku\ ;
+客年 > kyakunen\ ;
+越南 > betonamu\ ;
+両脇 > ryouwaki\ ;
+伸張 > shinchou\ ;
+風窓 > kazamado\ ;
+風穴 > fuuketsu\ ;
+仏殿 > butsuden\ ;
+胸壁 > kyouheki\ ;
+定式 > teishiki\ ;
+星食 > seishoku\ ;
+両肘 > ryouhiji\ ;
+両肌 > ryouhada\ ;
+貞潔 > teiketsu\ ;
+嫡男 > chakunan\ ;
+乳白 > nyuuhaku\ ;
+低密 > teimitsu\ ;
+両耳 > ryoumimi\ ;
+乱発 > ranpatsu\ ;
+脅嚇 > kyoukaku\ ;
+暴虐 > bougyaku\ ;
+肘掛 > hijikake\ ;
+両翼 > ryouyoku\ ;
+密売 > mitsubai\ ;
+木石 > bokuseki\ ;
+玉砕 > gyokusai\ ;
+七草 > nanakusa\ ;
+宮守 > miyamori\ ;
+曠職 > koushoku\ ;
+玉石 > tamaishi\ ;
+三色 > sanshoku\ ;
+仲春 > chuushun\ ;
+桑原 > kuwabara\ ;
+識閾 > shikiiki\ ;
+人波 > hitonami\ ;
+春雨 > harusame\ ;
+翳目 > kasumime\ ;
+猿股 > sarumata\ ;
+曲線 > kyokusen\ ;
+休戚 > kyuuseki\ ;
+客層 > kyakusou\ ;
+春陽 > shun''you\ ;
+貞淑 > teishuku\ ;
+守役 > moriyaku\ ;
+主節 > shusetsu\ ;
+一花 > hitohana\ ;
+顔色 > ganshoku\ ;
+中細 > chuuboso\ ;
+中級 > chuukyuu\ ;
+超克 > choukoku\ ;
+主筆 > shuhitsu\ ;
+率直 > sotchoku\ ;
+猫舌 > nekojita\ ;
+三脚 > sankyaku\ ;
+智識 > chishiki\ ;
+下肥 > shimogoe\ ;
+実害 > jitsugai\ ;
+養殖 > youshoku\ ;
+小一 > shouichi\ ;
+貪欲 > don''yoku\ ;
+人欲 > jin''yoku\ ;
+耐熱 > tainetsu\ ;
+実存 > jitsuzon\ ;
+領袖 > ryoushuu\ ;
+休息 > kyuusoku\ ;
+旱魃 > kanbatsu\ ;
+特集 > tokushuu\ ;
+末男 > batsunan\ ;
+宿坊 > shukubou\ ;
+音質 > onshitsu\ ;
+丸窓 > marumado\ ;
+猫脚 > nekoashi\ ;
+寸借 > sunshaku\ ;
+超俗 > chouzoku\ ;
+曲管 > kyokukan\ ;
+休心 > kyuushin\ ;
+脈動 > myakudou\ ;
+顕職 > kenshoku\ ;
+肩幅 > katahaba\ ;
+案出 > anshutsu\ ;
+股引 > momohiki\ ;
+丸禿 > maruhage\ ;
+供人 > tomobito\ ;
+人様 > hitosama\ ;
+乳牛 > nyuugyuu\ ;
+専一 > sen''itsu\ ;
+枕木 > makuragi\ ;
+股座 > matagura\ ;
+特長 > tokuchou\ ;
+頂角 > choukaku\ ;
+狸藻 > tanukimo\ ;
+缶詰 > kandzume\ ;
+一翼 > ichiyoku\ ;
+実妹 > jitsumai\ ;
+中空 > nakazora\ ;
+柔弱 > nyuujaku\ ;
+飲水 > nomimizu\ ;
+中程 > nakahodo\ ;
+今月 > kongetsu\ ;
+貸本 > kashihon\ ;
+並立 > heiritsu\ ;
+安宿 > yasuyado\ ;
+能力 > nouryoku\ ;
+中秋 > chuushuu\ ;
+物陰 > monokage\ ;
+安安 > yasuyasu\ ;
+学徳 > gakutoku\ ;
+習癖 > shuuheki\ ;
+丸石 > maruishi\ ;
+万緑 > banryoku\ ;
+宿命 > shukumei\ ;
+仏文 > futsubun\ ;
+牛革 > gyuukawa\ ;
+聖日 > seijitsu\ ;
+人柄 > hitogara\ ;
+高々 > takadaka\ ;
+享楽 > kyouraku\ ;
+松柏 > shouhaku\ ;
+群竹 > muratake\ ;
+警蹕 > keihitsu\ ;
+乳濁 > nyuudaku\ ;
+翠玉 > suigyoku\ ;
+日食 > nisshoku\ ;
+仇敵 > kyuuteki\ ;
+靺鞨 > makkatsu\ ;
+姿見 > sugatami\ ;
+実在 > jitsuzai\ ;
+月番 > tsukiban\ ;
+環七 > kan''nana\ ;
+胸先 > munasaki\ ;
+胸元 > munamoto\ ;
+一組 > hitokumi\ ;
+猫糞 > nekobaba\ ;
+旧領 > kyuuryou\ ;
+靴音 > kutsuoto\ ;
+乗物 > norimono\ ;
+風物 > fuubutsu\ ;
+作劇 > sakugeki\ ;
+暖色 > danshoku\ ;
+何卒 > nanitozo\ ;
+率然 > sotsuzen\ ;
+休学 > kyuugaku\ ;
+三筆 > sanpitsu\ ;
+住友 > sumitomo\ ;
+松明 > taimatsu\ ;
+偶々 > tamatama\ ;
+仮役 > kariyaku\ ;
+中皿 > chuuzara\ ;
+胸倉 > munagura\ ;
+人数 > hitokazu\ ;
+婚約 > kon''yaku\ ;
+下穴 > shitaana\ ;
+体力 > tairyoku\ ;
+宿六 > yadoroku\ ;
+耳朶 > mimitabu\ ;
+書留 > kakitome\ ;
+一筋 > hitosuji\ ;
+学寮 > gakuryou\ ;
+一筆 > hitofude\ ;
+片隅 > katasumi\ ;
+豁然 > katsuzen\ ;
+低劣 > teiretsu\ ;
+片陰 > katakage\ ;
+亥月 > gaigetsu\ ;
+特進 > tokushin\ ;
+質屋 > shichiya\ ;
+猪突 > chototsu\ ;
+京方 > kyougata\ ;
+牛鍋 > gyuunabe\ ;
+実名 > jitsumei\ ;
+来月 > raigetsu\ ;
+胸中 > kyouchuu\ ;
+一種 > hitokusa\ ;
+習熟 > shuujuku\ ;
+明達 > meitatsu\ ;
+枡形 > masugata\ ;
+宿便 > shukuben\ ;
+密令 > mitsurei\ ;
+特輯 > tokushuu\ ;
+一秒 > ichibyou\ ;
+主物 > shubutsu\ ;
+群発 > gunpatsu\ ;
+曲球 > kyokkyuu\ ;
+早鐘 > hayagane\ ;
+賢察 > kensatsu\ ;
+二桁 > futaketa\ ;
+来日 > rainichi\ ;
+昇進 > shoushin\ ;
+爪音 > tsumaoto\ ;
+断髪 > danpatsu\ ;
+曲玉 > magatama\ ;
+客分 > kyakubun\ ;
+丘疹 > kyuushin\ ;
+何何 > naninani\ ;
+胆力 > tanryoku\ ;
+事柄 > kotogara\ ;
+仮宮 > karimiya\ ;
+書物 > shomotsu\ ;
+牛酪 > gyuuraku\ ;
+独習 > dokushuu\ ;
+仮宅 > karitaku\ ;
+子宝 > kodakara\ ;
+韮葱 > niranegi\ ;
+佗人 > wabibito\ ;
+仏式 > busshiki\ ;
+頸筋 > kubisuji\ ;
+貪慾 > don''yoku\ ;
+講釈 > koushaku\ ;
+三直 > sanchoku\ ;
+何事 > nanigoto\ ;
+肉太 > nikubuto\ ;
+三百 > sanbyaku\ ;
+族長 > zokuchou\ ;
+特賞 > tokushou\ ;
+客僧 > kyakusou\ ;
+交接 > kousetsu\ ;
+顔着 > ganchaku\ ;
+乳業 > nyuugyou\ ;
+日銀 > nichigin\ ;
+枕席 > chinseki\ ;
+賓客 > hinkyaku\ ;
+実像 > jitsuzou\ ;
+実働 > jitsudou\ ;
+宮人 > miyabito\ ;
+旧里 > furusato\ ;
+一皿 > hitosara\ ;
+一皮 > hitokawa\ ;
+二方 > futakata\ ;
+上略 > jouryaku\ ;
+賊将 > zokushou\ ;
+貫徹 > kantetsu\ ;
+枢密 > suumitsu\ ;
+一癖 > hitokuse\ ;
+球審 > kyuushin\ ;
+宮中 > kyuuchuu\ ;
+豆殻 > mamegara\ ;
+現尺 > genshaku\ ;
+人影 > hitokage\ ;
+客体 > kyakutai\ ;
+実例 > jitsurei\ ;
+木槌 > kidzuchi\ ;
+令姪 > reitetsu\ ;
+現実 > genjitsu\ ;
+肇国 > choukoku\ ;
+客人 > kyakujin\ ;
+霹靂 > hekireki\ ;
+譲葉 > yuzuriha\ ;
+谷水 > tanimizu\ ;
+豪日 > gounichi\ ;
+服毒 > fukudoku\ ;
+職域 > shokuiki\ ;
+暴発 > bouhatsu\ ;
+京形 > kyougata\ ;
+食指 > shokushi\ ;
+牴触 > teishoku\ ;
+日輪 > nichirin\ ;
+肩先 > katasaki\ ;
+外鰐 > sotowani\ ;
+頻発 > hinpatsu\ ;
+伯仲 > hakuchuu\ ;
+本本 > motomoto\ ;
+本末 > honmatsu\ ;
+万物 > banmotsu\ ;
+狭窄 > kyousaku\ ;
+玉杯 > gyokuhai\ ;
+献物 > kenmotsu\ ;
+人山 > hitoyama\ ;
+早足 > hayaashi\ ;
+了承 > ryoushou\ ;
+中流 > chuuryuu\ ;
+霧雨 > kirisame\ ;
+大食 > taishoku\ ;
+文飾 > bunshoku\ ;
+賢哲 > kentetsu\ ;
+片足 > kataashi\ ;
+一片 > hitohira\ ;
+本日 > honjitsu\ ;
+乾拭 > karabuki\ ;
+食感 > shokukan\ ;
+整髪 > seihatsu\ ;
+仏壇 > butsudan\ ;
+学割 > gakuwari\ ;
+整骨 > seikotsu\ ;
+贋作 > nisesaku\ ;
+学則 > gakusoku\ ;
+曲水 > kyokusui\ ;
+風月 > fuugetsu\ ;
+霜雪 > sousetsu\ ;
+乱掘 > rankutsu\ ;
+中毒 > chuudoku\ ;
+九日 > kokonoka\ ;
+日豪 > nichigou\ ;
+仏堂 > butsudou\ ;
+九族 > kyuuzoku\ ;
+響笛 > kyouteki\ ;
+読響 > yomikyou\ ;
+講説 > kousetsu\ ;
+牛角 > gyuukaku\ ;
+大雪 > taisetsu\ ;
+外食 > gaishoku\ ;
+耳屎 > mimikuso\ ;
+夕飯 > yuumeshi\ ;
+職名 > shokumei\ ;
+晩節 > bansetsu\ ;
+二役 > futayaku\ ;
+夕食 > yuushoku\ ;
+二形 > futanari\ ;
+春菊 > shungiku\ ;
+学僕 > gakuboku\ ;
+豆料 > mameryou\ ;
+玉摧 > gyokusai\ ;
+朝敵 > chouteki\ ;
+散髪 > sanpatsu\ ;
+謎謎 > nazonazo\ ;
+山々 > yamayama\ ;
+妄説 > mousetsu\ ;
+頓着 > tonchaku\ ;
+仏噸 > futsuton\ ;
+妖術 > youjutsu\ ;
+雛鳥 > hinadori\ ;
+電飾 > denshoku\ ;
+学修 > gakushuu\ ;
+旧訳 > kyuuyaku\ ;
+月末 > tsukizue\ ;
+独白 > dokuhaku\ ;
+猛烈 > mouretsu\ ;
+爪跡 > tsumeato\ ;
+仮初 > karisome\ ;
+来客 > raikyaku\ ;
+月曜 > getsuyou\ ;
+翌朝 > yokuchou\ ;
+繁雑 > hanzatsu\ ;
+職制 > shokusei\ ;
+新進 > shinshin\ ;
+職分 > shokubun\ ;
+乾式 > kanshiki\ ;
+面識 > menshiki\ ;
+人垣 > hitogaki\ ;
+失錯 > shissaku\ ;
+久方 > hisakata\ ;
+月明 > getsumei\ ;
+声高 > kowadaka\ ;
+論述 > ronjutsu\ ;
+翌春 > yokushun\ ;
+諾諾 > dakudaku\ ;
+識者 > shikisha\ ;
+仕口 > shikuchi\ ;
+中核 > chuukaku\ ;
+象徴 > shouchou\ ;
+珍妙 > chinmyou\ ;
+貝塚 > kaidzuka\ ;
+聖哲 > seitetsu\ ;
+面詰 > menkitsu\ ;
+縞馬 > shimauma\ ;
+食尽 > shokujin\ ;
+賭事 > kakegoto\ ;
+一流 > ichiryuu\ ;
+中柄 > chuugara\ ;
+書札 > shosatsu\ ;
+妙薬 > myouyaku\ ;
+主日 > shujitsu\ ;
+諸諸 > moromoro\ ;
+静謐 > seihitsu\ ;
+諸説 > shosetsu\ ;
+資力 > shiryoku\ ;
+女親 > on''naoya\ ;
+更更 > sarasara\ ;
+杓子 > shakushi\ ;
+曲曲 > kumaguma\ ;
+智略 > chiryaku\ ;
+明色 > meishoku\ ;
+日蝕 > nisshoku\ ;
+他出 > tashutsu\ ;
+雨靴 > amagutsu\ ;
+本式 > honshiki\ ;
+仏前 > butsuzen\ ;
+調進 > choushin\ ;
+雪雲 > yukigumo\ ;
+雨霰 > amearare\ ;
+仏刹 > bussetsu\ ;
+木彫 > mokuchou\ ;
+暑熱 > shonetsu\ ;
+物色 > busshoku\ ;
+職人 > shokunin\ ;
+諧謔 > kaigyaku\ ;
+独特 > dokutoku\ ;
+失速 > shissoku\ ;
+春繭 > harumayu\ ;
+餞別 > senbetsu\ ;
+熱願 > netsugan\ ;
+末年 > matsunen\ ;
+嫡孫 > chakuson\ ;
+物臭 > monogusa\ ;
+聖別 > seibetsu\ ;
+嫡子 > chakushi\ ;
+諤諤 > gakugaku\ ;
+狡猾 > koukatsu\ ;
+考察 > kousatsu\ ;
+雑食 > zasshoku\ ;
+主持 > shumochi\ ;
+嬰児 > midorigo\ ;
+縦長 > tatenaga\ ;
+施設 > shisetsu\ ;
+狂的 > kyouteki\ ;
+争奪 > soudatsu\ ;
+鞏膜 > kyoumaku\ ;
+仏像 > butsuzou\ ;
+老実 > roujitsu\ ;
+大逆 > daigyaku\ ;
+日蓮 > nichiren\ ;
+熱雷 > netsurai\ ;
+試食 > shishoku\ ;
+敷金 > shikikin\ ;
+人力 > jinryoku\ ;
+九州 > kyuushuu\ ;
+新調 > shinchou\ ;
+食堂 > shokudou\ ;
+嫡妻 > chakusai\ ;
+一棟 > hitomune\ ;
+失跡 > shisseki\ ;
+人刺 > jinsashi\ ;
+電鉄 > dentetsu\ ;
+人別 > ninbetsu\ ;
+論説 > ronsetsu\ ;
+本局 > honkyoku\ ;
+中指 > nakayubi\ ;
+貸借 > taishaku\ ;
+獲得 > kakutoku\ ;
+論詰 > ronkitsu\ ;
+一桁 > hitoketa\ ;
+施術 > shijutsu\ ;
+顛末 > tenmatsu\ ;
+貫入 > kan''nyuu\ ;
+財力 > zairyoku\ ;
+語部 > kataribe\ ;
+習得 > shuutoku\ ;
+三曲 > sankyoku\ ;
+景物 > keibutsu\ ;
+方術 > houjutsu\ ;
+特約 > tokuyaku\ ;
+一枚 > hitohira\ ;
+繰言 > kurigoto\ ;
+牛肉 > gyuuniku\ ;
+杉垣 > sugigaki\ ;
+王室 > oushitsu\ ;
+一束 > hitotaba\ ;
+京劇 > kyougeki\ ;
+牡羊 > ohitsuji\ ;
+谷底 > tanizoko\ ;
+一木 > ichiboku\ ;
+人傑 > jinketsu\ ;
+韜略 > touryaku\ ;
+旧臣 > kyuushin\ ;
+昨秋 > sakushuu\ ;
+好色 > koushoku\ ;
+谷川 > tanigawa\ ;
+仄仄 > honobono\ ;
+買主 > kainushi\ ;
+一時 > hitotoki\ ;
+昇給 > shoukyuu\ ;
+片膝 > katahiza\ ;
+乗客 > joukyaku\ ;
+丸形 > marugata\ ;
+飲助 > nomisuke\ ;
+曲悪 > kyokuaku\ ;
+昇級 > shoukyuu\ ;
+一旗 > hitohata\ ;
+一族 > ichizoku\ ;
+食品 > shokuhin\ ;
+物納 > butsunou\ ;
+失調 > shitchou\ ;
+煮魚 > nizakana\ ;
+失語 > shitsugo\ ;
+耳元 > mimimoto\ ;
+早耳 > hayamimi\ ;
+丸底 > maruzoko\ ;
+面色 > menshoku\ ;
+人人 > hitobito\ ;
+散逸 > san''itsu\ ;
+中心 > chuushin\ ;
+片肌 > katahada\ ;
+詳録 > shouroku\ ;
+嫡嗣 > chakushi\ ;
+書式 > shoshiki\ ;
+人事 > hitogoto\ ;
+総髪 > souhatsu\ ;
+服属 > fukuzoku\ ;
+特種 > tokudane\ ;
+中形 > chuugata\ ;
+片耳 > katamimi\ ;
+旧習 > kyuushuu\ ;
+人中 > hitonaka\ ;
+人並 > hitonami\ ;
+特称 > tokushou\ ;
+一撃 > ichigeki\ ;
+中庭 > nakaniwa\ ;
+少々 > shoushou\ ;
+始発 > shihatsu\ ;
+謝絶 > shazetsu\ ;
+乾咳 > karazeki\ ;
+中幕 > nakamaku\ ;
+中幅 > chuuhaba\ ;
+諸膝 > morohiza\ ;
+諸膚 > morohada\ ;
+中席 > nakaseki\ ;
+朝夕 > chouseki\ ;
+牧笛 > bokuteki\ ;
+両得 > ryoutoku\ ;
+縦軸 > tatejiku\ ;
+青色 > seishoku\ ;
+食前 > shokuzen\ ;
+姦物 > kanbutsu\ ;
+食刻 > shokkoku\ ;
+玉垣 > tamagaki\ ;
+集録 > shuuroku\ ;
+雲足 > kumoashi\ ;
+緑風 > ryokufuu\ ;
+物種 > monodane\ ;
+並幅 > namihaba\ ;
+妙策 > myousaku\ ;
+静脈 > joumyaku\ ;
+物税 > butsuzei\ ;
+主客 > shukyaku\ ;
+飼主 > kainushi\ ;
+諸肌 > morohada\ ;
+並巾 > namihaba\ ;
+交交 > komogomo\ ;
+爆薬 > bakuyaku\ ;
+中島 > nakajima\ ;
+故郷 > furusato\ ;
+事共 > kotodomo\ ;
+不悉 > fushitsu\ ;
+旧約 > kyuuyaku\ ;
+牧神 > bokushin\ ;
+緑青 > rokushou\ ;
+方舟 > hakobune\ ;
+飯事 > mamagoto\ ;
+中小 > chuushou\ ;
+曲射 > kyokusha\ ;
+雁金 > karigane\ ;
+日米 > nichibei\ ;
+焼鳥 > yakitori\ ;
+謹直 > kinchoku\ ;
+中学 > chuugaku\ ;
+練鉄 > rentetsu\ ;
+調薬 > chouyaku\ ;
+変説 > hensetsu\ ;
+敵襲 > tekishuu\ ;
+放逐 > houchiku\ ;
+三役 > san''yaku\ ;
+煩雑 > hanzatsu\ ;
+認識 > ninshiki\ ;
+旧章 > kyuushou\ ;
+緑門 > ryokumon\ ;
+村人 > murabito\ ;
+下帯 > shitaobi\ ;
+一役 > hitoyaku\ ;
+豪傑 > gouketsu\ ;
+事事 > kotogoto\ ;
+綿雲 > watagumo\ ;
+乱入 > ran''nyuu\ ;
+綿雪 > watayuki\ ;
+予予 > kanegane\ ;
+旧称 > kyuushou\ ;
+世局 > seikyoku\ ;
+練達 > rentatsu\ ;
+暇暇 > himahima\ ;
+一廉 > hitokado\ ;
+隆隆 > ryuuryuu\ ;
+一度 > hitotabi\ ;
+隅隅 > sumizumi\ ;
+一年 > hitotose\ ;
+静粛 > seishuku\ ;
+塩鮭 > shiozake\ ;
+族籍 > zokuseki\ ;
+大蒜 > nin''niku\ ;
+一幕 > hitomaku\ ;
+丸型 > marugata\ ;
+奉職 > houshoku\ ;
+赫々 > kakukaku\ ;
+一巻 > hitomaki\ ;
+難詰 > nankitsu\ ;
+雀躍 > jakuyaku\ ;
+中塗 > nakanuri\ ;
+陪食 > baishoku\ ;
+頌春 > shoushun\ ;
+万屋 > yorozuya\ ;
+中垣 > nakagaki\ ;
+中型 > chuugata\ ;
+風力 > fuuryoku\ ;
+上客 > joukyaku\ ;
+乱伐 > ranbatsu\ ;
+智日 > chinichi\ ;
+猫属 > nekozoku\ ;
+寒々 > samuzamu\ ;
+一山 > hitoyama\ ;
+中国 > chuugoku\ ;
+天色 > tenshoku\ ;
+頃日 > keijitsu\ ;
+詳註 > shouchuu\ ;
+雑談 > zatsudan\ ;
+族称 > zokushou\ ;
+日直 > nitchoku\ ;
+緑酒 > ryokushu\ ;
+一室 > isshitsu\ ;
+太腿 > futomomo\ ;
+領承 > ryoushou\ ;
+断絶 > danzetsu\ ;
+一子 > hitorigo\ ;
+姫様 > himesama\ ;
+電蓄 > denchiku\ ;
+末代 > matsudai\ ;
+壜詰 > bindzume\ ;
+言霊 > kotodama\ ;
+両国 > ryougoku\ ;
+主取 > shuudori\ ;
+雨蛙 > amagaeru\ ;
+熟読 > jukudoku\ ;
+玉体 > gyokutai\ ;
+牧牛 > bokugyuu\ ;
+塾長 > jukuchou\ ;
+太股 > futomomo\ ;
+有力 > yuuryoku\ ;
+熱血 > nekketsu\ ;
+散薬 > san''yaku\ ;
+玉代 > gyokudai\ ;
+天職 > tenshoku\ ;
+文脈 > bunmyaku\ ;
+集註 > shuuchuu\ ;
+隔週 > kakushuu\ ;
+日用 > nichiyou\ ;
+書取 > kakitori\ ;
+主力 > shuryoku\ ;
+月内 > getsunai\ ;
+七夜 > shichiya\ ;
+乞丐 > kotsugai\ ;
+七夕 > tanabata\ ;
+謡物 > utaimono\ ;
+頻尿 > hin''nyou\ ;
+天罰 > tenbatsu\ ;
+面白 > omoshiro\ ;
+曲名 > kyokumei\ ;
+総轄 > soukatsu\ ;
+中古 > chuuburu\ ;
+何々 > naninani\ ;
+一失 > isshitsu\ ;
+狼座 > ookamiza\ ;
+証跡 > shouseki\ ;
+奮発 > funpatsu\ ;
+新穀 > shinkoku\ ;
+評註 > hyouchuu\ ;
+変色 > henshoku\ ;
+明滅 > meimetsu\ ;
+陸釣 > okadzuri\ ;
+謀略 > bouryaku\ ;
+一塩 > hitoshio\ ;
+風上 > kazakami\ ;
+外股 > sotomata\ ;
+習俗 > shuuzoku\ ;
+降雪 > kousetsu\ ;
+独得 > dokutoku\ ;
+絶食 > zesshoku\ ;
+書初 > kakizome\ ;
+訓釈 > kunshaku\ ;
+誦習 > shoushuu\ ;
+爆笑 > bakushou\ ;
+習作 > shuusaku\ ;
+書冊 > shosatsu\ ;
+特注 > tokuchuu\ ;
+月例 > getsurei\ ;
+暦学 > rekigaku\ ;
+丸傷 > tamakizu\ ;
+奉祝 > houshuku\ ;
+頌徳 > shoutoku\ ;
+防食 > boushoku\ ;
+爪痕 > tsumeato\ ;
+中共 > chuukyou\ ;
+並列 > heiretsu\ ;
+久久 > hisabisa\ ;
+緑豆 > ryokutou\ ;
+好物 > koubutsu\ ;
+雲脚 > kumoashi\ ;
+青畳 > aodatami\ ;
+雛菊 > hinagiku\ ;
+失策 > shissaku\ ;
+時時 > tokidoki\ ;
+中傷 > chuushou\ ;
+失笑 > shisshou\ ;
+敗色 > haishoku\ ;
+雪膚 > yukihada\ ;
+難色 > nanshoku\ ;
+暗室 > anshitsu\ ;
+陵辱 > ryoujoku\ ;
+下味 > shitaaji\ ;
+結髪 > keppatsu\ ;
+焼酎 > shouchuu\ ;
+昼時 > hirudoki\ ;
+声色 > seishoku\ ;
+丸事 > marugoto\ ;
+文節 > bunsetsu\ ;
+文箱 > fumibako\ ;
+大筒 > oodzutsu\ ;
+丸丸 > marumaru\ ;
+防雪 > bousetsu\ ;
+雪肌 > yukihada\ ;
+訳読 > yakudoku\ ;
+七味 > shichimi\ ;
+方略 > houryaku\ ;
+丸一 > maruichi\ ;
+狭小 > kyoushou\ ;
+中低 > nakabiku\ ;
+総説 > sousetsu\ ;
+始末 > shimatsu\ ;
+文筆 > bunpitsu\ ;
+大童 > oowarawa\ ;
+青玉 > seigyoku\ ;
+両側 > ryousoku\ ;
+失神 > shisshin\ ;
+集落 > shuuraku\ ;
+静物 > seibutsu\ ;
+万卒 > bansotsu\ ;
+中京 > chuukyou\ ;
+一向 > hitasura\ ;
+独学 > dokugaku\ ;
+昨朝 > sakuchou\ ;
+一叢 > hitomura\ ;
+曲事 > kusegoto\ ;
+雑色 > zasshoku\ ;
+中中 > nakanaka\ ;
+安々 > yasuyasu\ ;
+教習 > kyoushuu\ ;
+陞進 > shoushin\ ;
+類別 > ruibetsu\ ;
+縮緬 > chirimen\ ;
+昨暁 > sakugyou\ ;
+結願 > kechigan\ ;
+昨春 > sakushun\ ;
+万別 > banbetsu\ ;
+焼身 > shoushin\ ;
+頁岩 > ketsugan\ ;
+並並 > naminami\ ;
+縦縞 > tatejima\ ;
+覗魔 > nozokima\ ;
+増設 > zousetsu\ ;
+一割 > ichiwari\ ;
+夕立 > yuudachi\ ;
+塩辛 > shiokara\ ;
+解釈 > kaishaku\ ;
+旧流 > kyuuryuu\ ;
+両両 > ryouryou\ ;
+警抜 > keibatsu\ ;
+変節 > hensetsu\ ;
+絹針 > kinubari\ ;
+獄中 > gokuchuu\ ;
+一入 > hitoshio\ ;
+一先 > hitomazu\ ;
+昇格 > shoukaku\ ;
+繭玉 > mayudama\ ;
+明月 > meigetsu\ ;
+鞭撻 > bentatsu\ ;
+雨粒 > ametsubu\ ;
+増血 > zouketsu\ ;
+暴力 > bouryoku\ ;
+観閲 > kan''etsu\ ;
+易易 > yasuyasu\ ;
+緑藻 > ryokusou\ ;
+壮絶 > souzetsu\ ;
+教籍 > kyouseki\ ;
+領国 > ryougoku\ ;
+明春 > myoushun\ ;
+万代 > yorozuyo\ ;
+支脈 > shimyaku\ ;
+独国 > dokukoku\ ;
+撰述 > senjutsu\ ;
+三下 > sanshita\ ;
+大略 > tairyaku\ ;
+女気 > on''nakke\ ;
+塩豆 > shiomame\ ;
+万世 > yorozuyo\ ;
+万一 > man''ichi\ ;
+雪空 > yukizora\ ;
+謀殺 > bousatsu\ ;
+組長 > kumichou\ ;
+言説 > gensetsu\ ;
+早業 > hayawaza\ ;
+角通 > kakutsuu\ ;
+一両 > ichiryou\ ;
+一一 > itsuitsu\ ;
+統轄 > toukatsu\ ;
+謡曲 > youkyoku\ ;
+紅鱒 > benimasu\ ;
+独唱 > dokushou\ ;
+新潮 > shinchou\ ;
+緑茶 > ryokucha\ ;
+昼席 > hiruseki\ ;
+紅鮭 > benizake\ ;
+納骨 > noukotsu\ ;
+旧株 > kyuukabu\ ;
+姫宮 > himemiya\ ;
+墜落 > tsuiraku\ ;
+数百 > suuhyaku\ ;
+集約 > shuuyaku\ ;
+誘発 > yuuhatsu\ ;
+領収 > ryoushuu\ ;
+片栗 > katakuri\ ;
+旬月 > jungetsu\ ;
+天爵 > tenshaku\ ;
+煎薬 > sen''yaku\ ;
+電略 > denryaku\ ;
+文物 > bunbutsu\ ;
+改築 > kaichiku\ ;
+試筋 > tamesuji\ ;
+試筆 > shihitsu\ ;
+旧暦 > kyuureki\ ;
+日曜 > nichiyou\ ;
+隔膜 > kakumaku\ ;
+旬日 > junjitsu\ ;
+散発 > sanpatsu\ ;
+雑税 > zatsuzei\ ;
+読物 > yomimono\ ;
+雪盲 > setsumou\ ;
+警察 > keisatsu\ ;
+解説 > kaisetsu\ ;
+緩緩 > yuruyuru\ ;
+早早 > hayabaya\ ;
+角貝 > tsunogai\ ;
+摂食 > sesshoku\ ;
+西陣 > nishijin\ ;
+触角 > shokkaku\ ;
+壁紙 > kabegami\ ;
+触覚 > shokkaku\ ;
+旧敵 > kyuuteki\ ;
+特徴 > tokuchou\ ;
+紐革 > himokawa\ ;
+旧教 > kyuukyou\ ;
+集積 > shuuseki\ ;
+埋骨 > maikotsu\ ;
+旗本 > hatamoto\ ;
+外物 > gaibutsu\ ;
+觝触 > teishoku\ ;
+級長 > kyuuchou\ ;
+斬殺 > zansatsu\ ;
+物情 > butsujou\ ;
+締結 > teiketsu\ ;
+革新 > kakushin\ ;
+集票 > shuuhyou\ ;
+智力 > chiryoku\ ;
+雨男 > ameotoko\ ;
+爆沈 > bakuchin\ ;
+夜烏 > yogarasu\ ;
+姫垣 > himegaki\ ;
+熊笹 > kumazasa\ ;
+熱発 > neppatsu\ ;
+順列 > junretsu\ ;
+墨繩 > suminawa\ ;
+謙抑 > ken''yoku\ ;
+撮要 > satsuyou\ ;
+独修 > dokushuu\ ;
+変物 > henbutsu\ ;
+墨縄 > suminawa\ ;
+春宵 > shunshou\ ;
+物影 > monokage\ ;
+闇雲 > yamikumo\ ;
+続落 > zokuraku\ ;
+雪玉 > yukidama\ ;
+摘録 > tekiroku\ ;
+仄々 > honobono\ ;
+早技 > hayawaza\ ;
+終身 > shuushin\ ;
+緊縮 > kinshuku\ ;
+試着 > shichaku\ ;
+外濠 > sotobori\ ;
+妾宅 > shoutaku\ ;
+星宿 > seishuku\ ;
+角袖 > kakusode\ ;
+闇闇 > yamiyami\ ;
+多湿 > tashitsu\ ;
+人々 > hitobito\ ;
+面接 > mensetsu\ ;
+雑用 > zatsuyou\ ;
+新株 > shinkabu\ ;
+摺足 > suriashi\ ;
+旁旁 > katagata\ ;
+新柄 > shingara\ ;
+政略 > seiryaku\ ;
+見通 > mitooshi\ ;
+難物 > nanbutsu\ ;
+見返 > mikaeshi\ ;
+増結 > zouketsu\ ;
+明察 > meisatsu\ ;
+姫君 > himegimi\ ;
+攻略 > kouryaku\ ;
+結論 > ketsuron\ ;
+奏曲 > soukyoku\ ;
+霽月 > seigetsu\ ;
+防蝕 > boushoku\ ;
+新暦 > shinreki\ ;
+焼肉 > yakiniku\ ;
+熾烈 > shiretsu\ ;
+結言 > ketsugen\ ;
+証票 > shouhyou\ ;
+随筆 > zuihitsu\ ;
+外法 > sotonori\ ;
+新春 > shinshun\ ;
+新旧 > shinkyuu\ ;
+陸続 > rikuzoku\ ;
+熱熱 > atsuatsu\ ;
+増築 > zouchiku\ ;
+交々 > komogomo\ ;
+間食 > kanshoku\ ;
+縮減 > shukugen\ ;
+新教 > shinkyou\ ;
+壮烈 > souretsu\ ;
+繁殖 > hanshoku\ ;
+天極 > tenkyoku\ ;
+狂信 > kyoushin\ ;
+旧幕 > kyuubaku\ ;
+絹莢 > kinusaya\ ;
+失格 > shikkaku\ ;
+閨閥 > keibatsu\ ;
+日常 > nichijou\ ;
+雑然 > zatsuzen\ ;
+敗滅 > haimetsu\ ;
+放熱 > hounetsu\ ;
+誘殺 > yuusatsu\ ;
+闊達 > kattatsu\ ;
+降職 > koushoku\ ;
+素質 > soshitsu\ ;
+垂髪 > taregami\ ;
+雁爪 > gandzume\ ;
+縦波 > tatenami\ ;
+細説 > saisetsu\ ;
+診療 > shinryou\ ;
+続続 > zokuzoku\ ;
+爆撃 > bakugeki\ ;
+見識 > kenshiki\ ;
+誰某 > daresore\ ;
+焼糞 > yakekuso\ ;
+旋律 > senritsu\ ;
+諸式 > shoshiki\ ;
+熱源 > netsugen\ ;
+解職 > kaishoku\ ;
+事々 > kotogoto\ ;
+夜桜 > yozakura\ ;
+文末 > bunmatsu\ ;
+旧宅 > kyuutaku\ ;
+調教 > choukyou\ ;
+予々 > kanegane\ ;
+時偶 > tokitama\ ;
+如実 > nyojitsu\ ;
+斎日 > saijitsu\ ;
+角膜 > kakumaku\ ;
+熱涙 > netsurui\ ;
+諒承 > ryoushou\ ;
+電極 > denkyoku\ ;
+塵箱 > gomibako\ ;
+敏活 > binkatsu\ ;
+開闢 > kaibyaku\ ;
+煥発 > kanpatsu\ ;
+大日 > dainichi\ ;
+韓人 > karabito\ ;
+外枠 > sotowaku\ ;
+敷板 > shikiita\ ;
+説明 > setsumei\ ;
+縦横 > tateyoko\ ;
+要訣 > youketsu\ ;
+増発 > zouhatsu\ ;
+明哲 > meitetsu\ ;
+夜昼 > yoruhiru\ ;
+点訳 > ten''yaku\ ;
+夕月 > yuudzuki\ ;
+方式 > houshiki\ ;
+門閥 > monbatsu\ ;
+飄々 > hyouhyou\ ;
+春先 > harusaki\ ;
+始値 > hajimene\ ;
+新形 > shingata\ ;
+翼々 > yokuyoku\ ;
+陸相 > rikushou\ ;
+絹綿 > kinuwata\ ;
+牆壁 > shouheki\ ;
+壊滅 > kaimetsu\ ;
+際物 > kiwamono\ ;
+夭折 > yousetsu\ ;
+奨学 > shougaku\ ;
+集注 > shuuchuu\ ;
+敵方 > tekigata\ ;
+長長 > naganaga\ ;
+新年 > shin''nen\ ;
+爆心 > bakushin\ ;
+約諾 > yakudaku\ ;
+数日 > suujitsu\ ;
+本々 > motomoto\ ;
+防縮 > boushuku\ ;
+擁立 > youritsu\ ;
+数数 > kazukazu\ ;
+大所 > oodokoro\ ;
+旧国 > kyuukoku\ ;
+地鼠 > jinezumi\ ;
+純血 > junketsu\ ;
+粉飾 > funshoku\ ;
+縦書 > tategaki\ ;
+擦疵 > surikizu\ ;
+粉食 > funshoku\ ;
+塚穴 > tsukaana\ ;
+外接 > gaisetsu\ ;
+評注 > hyouchuu\ ;
+照焼 > teriyaki\ ;
+失心 > shisshin\ ;
+絶筆 > zeppitsu\ ;
+難曲 > nankyoku\ ;
+計略 > keiryaku\ ;
+夙成 > shukusei\ ;
+見落 > miotoshi\ ;
+点薬 > ten''yaku\ ;
+炸薬 > sakuyaku\ ;
+新宅 > shintaku\ ;
+埋設 > maisetsu\ ;
+接骨 > sekkotsu\ ;
+陽物 > youbutsu\ ;
+論客 > ronkyaku\ ;
+角笛 > tsunobue\ ;
+熱望 > netsubou\ ;
+長針 > choushin\ ;
+閲読 > etsudoku\ ;
+誰彼 > tarekare\ ;
+米食 > beishoku\ ;
+索莫 > sakubaku\ ;
+結縄 > ketsujou\ ;
+久々 > hisabisa\ ;
+雑曲 > zakkyoku\ ;
+太巻 > futomaki\ ;
+新妻 > niidzuma\ ;
+結紮 > kessatsu\ ;
+夙志 > shukushi\ ;
+翌々 > yokuyoku\ ;
+旧劇 > kyuugeki\ ;
+摘芯 > tekishin\ ;
+関説 > kansetsu\ ;
+物事 > monogoto\ ;
+訳注 > yakuchuu\ ;
+改札 > kaisatsu\ ;
+煮沸 > shafutsu\ ;
+大嵐 > ooarashi\ ;
+製鉄 > seitetsu\ ;
+装飾 > soushoku\ ;
+雑文 > zatsubun\ ;
+丸々 > marumaru\ ;
+紙花 > kamibana\ ;
+焼物 > yakimono\ ;
+敵役 > tekiyaku\ ;
+結節 > kessetsu\ ;
+長軸 > choujiku\ ;
+外庭 > sotoniwa\ ;
+組紐 > kumihimo\ ;
+粒銀 > tsubugin\ ;
+震幅 > shinpuku\ ;
+整式 > seishiki\ ;
+開豁 > kaikatsu\ ;
+長身 > choushin\ ;
+縁日 > en''nichi\ ;
+大局 > taikyoku\ ;
+新型 > shingata\ ;
+夜嵐 > yoarashi\ ;
+数式 > suushiki\ ;
+更々 > sarasara\ ;
+牛乳 > gyuunyuu\ ;
+中々 > nakanaka\ ;
+曲々 > kumaguma\ ;
+長足 > chousoku\ ;
+塩物 > shiomono\ ;
+要職 > youshoku\ ;
+片側 > katagawa\ ;
+褶襞 > shuuheki\ ;
+雀斑 > sobakasu\ ;
+旧俗 > kyuuzoku\ ;
+雲形 > kumogata\ ;
+経穴 > keiketsu\ ;
+並々 > naminami\ ;
+撞着 > douchaku\ ;
+旧作 > kyuusaku\ ;
+紅花 > benibana\ ;
+陰湿 > inshitsu\ ;
+編曲 > henkyoku\ ;
+組立 > kumitate\ ;
+開設 > kaisetsu\ ;
+両々 > ryouryou\ ;
+細細 > hosoboso\ ;
+試掘 > shikutsu\ ;
+塩焼 > shioyaki\ ;
+外局 > gaikyoku\ ;
+増殖 > zoushoku\ ;
+旧人 > furubito\ ;
+訳業 > yakugyou\ ;
+排雪 > haisetsu\ ;
+粛軍 > shukugun\ ;
+熱感 > netsukan\ ;
+失墜 > shittsui\ ;
+国鳥 > kokuchou\ ;
+諸共 > morotomo\ ;
+夫夫 > sorezore\ ;
+紡織 > boushoku\ ;
+外客 > gaikyaku\ ;
+熱情 > netsujou\ ;
+外孫 > sotomago\ ;
+糖蜜 > toumitsu\ ;
+誠実 > seijitsu\ ;
+難役 > nan''yaku\ ;
+救急 > kyuukyuu\ ;
+塗物 > nurimono\ ;
+版下 > hanshita\ ;
+除湿 > joshitsu\ ;
+熔接 > yousetsu\ ;
+統率 > tousotsu\ ;
+長調 > chouchou\ ;
+旅先 > tabisaki\ ;
+点綴 > tentetsu\ ;
+細筆 > saihitsu\ ;
+雪嶺 > setsurei\ ;
+絹物 > kinumono\ ;
+訳柄 > wakegara\ ;
+襟腰 > erikoshi\ ;
+結着 > ketchaku\ ;
+緑林 > ryokurin\ ;
+結盟 > ketsumei\ ;
+熱弁 > netsuben\ ;
+雑念 > zatsunen\ ;
+討死 > uchijini\ ;
+支払 > shiharai\ ;
+親睦 > shinboku\ ;
+堀端 > horibata\ ;
+陥没 > kanbotsu\ ;
+新劇 > shingeki\ ;
+角牛 > kakugyuu\ ;
+雑役 > zatsueki\ ;
+雪山 > yukiyama\ ;
+諸人 > morobito\ ;
+陣没 > jinbotsu\ ;
+陽極 > youkyoku\ ;
+父上 > chichiue\ ;
+雪害 > setsugai\ ;
+長袖 > nagasode\ ;
+一々 > itsuitsu\ ;
+防熱 > bounetsu\ ;
+難局 > nankyoku\ ;
+縄張 > nawabari\ ;
+外堀 > sotobori\ ;
+経略 > keiryaku\ ;
+裏道 > uramichi\ ;
+隣接 > rinsetsu\ ;
+継母 > mamahaha\ ;
+大喝 > daikatsu\ ;
+紙筆 > shihitsu\ ;
+教学 > kyougaku\ ;
+露出 > roshutsu\ ;
+訪日 > hounichi\ ;
+塩水 > shiomizu\ ;
+敷地 > shikichi\ ;
+隆昌 > ryuushou\ ;
+新修 > shinshuu\ ;
+大吉 > daikichi\ ;
+新作 > shinsaku\ ;
+関脇 > sekiwake\ ;
+燭台 > shokudai\ ;
+炭窯 > sumigama\ ;
+電圧 > den''atsu\ ;
+雨女 > ameon''na\ ;
+爆傷 > bakushou\ ;
+新任 > shin''nin\ ;
+激震 > gekishin\ ;
+間色 > kanshoku\ ;
+変圧 > hen''atsu\ ;
+親王 > shin''nou\ ;
+大卒 > daisotsu\ ;
+総括 > soukatsu\ ;
+解決 > kaiketsu\ ;
+政局 > seikyoku\ ;
+壁役 > kabeyaku\ ;
+掛軸 > kakejiku\ ;
+縄尻 > nawajiri\ ;
+裲襠 > uchikake\ ;
+基督 > kirisuto\ ;
+褪色 > taishoku\ ;
+大別 > taibetsu\ ;
+大切 > taisetsu\ ;
+斉列 > seiretsu\ ;
+雪国 > yukiguni\ ;
+大冊 > taisatsu\ ;
+緻密 > chimitsu\ ;
+閑職 > kanshoku\ ;
+変哲 > hentetsu\ ;
+糸竹 > shichiku\ ;
+開脚 > kaikyaku\ ;
+支局 > shikyoku\ ;
+失保 > shitsuho\ ;
+終熄 > shuusoku\ ;
+外力 > gairyoku\ ;
+調伏 > choubuku\ ;
+雛型 > hinagata\ ;
+要略 > youryaku\ ;
+救国 > kyuukoku\ ;
+門脈 > monmyaku\ ;
+褐色 > kasshoku\ ;
+整列 > seiretsu\ ;
+電力 > denryoku\ ;
+接触 > sesshoku\ ;
+数列 > suuretsu\ ;
+大仏 > daibutsu\ ;
+関節 > kansetsu\ ;
+放埒 > houratsu\ ;
+絞殺 > kousatsu\ ;
+外側 > sotogawa\ ;
+表門 > omotemon\ ;
+数冊 > suusatsu\ ;
+雲助 > kumosuke\ ;
+雪原 > setsugen\ ;
+雑嚢 > zatsunou\ ;
+濁酒 > doburoku\ ;
+土質 > doshitsu\ ;
+敵側 > tekigawa\ ;
+訥弁 > totsuben\ ;
+裏表 > uraomote\ ;
+読了 > dokuryou\ ;
+灰篩 > haifurui\ ;
+粥腹 > kayubara\ ;
+瀉血 > shaketsu\ ;
+堅炭 > katazumi\ ;
+綿弓 > watayumi\ ;
+縮写 > shukusha\ ;
+教卓 > kyoutaku\ ;
+垂耳 > taremimi\ ;
+詰問 > kitsumon\ ;
+売却 > baikyaku\ ;
+採血 > saiketsu\ ;
+縦列 > juuretsu\ ;
+行革 > gyoukaku\ ;
+絶望 > zetsubou\ ;
+撃沈 > gekichin\ ;
+角柱 > kakuchuu\ ;
+国辱 > kokujoku\ ;
+教則 > kyousoku\ ;
+墨客 > bokkyaku\ ;
+士卒 > shisotsu\ ;
+地袋 > jibukuro\ ;
+敵中 > tekichuu\ ;
+売出 > uridashi\ ;
+緊密 > kinmitsu\ ;
+揺篭 > yurikago\ ;
+雪像 > setsuzou\ ;
+紅玉 > kougyoku\ ;
+米蔵 > komegura\ ;
+潮風 > shiokaze\ ;
+型紙 > katagami\ ;
+訪客 > houkyaku\ ;
+許嫁 > iinazuke\ ;
+捏造 > netsuzou\ ;
+散佚 > san''itsu\ ;
+許婚 > iinazuke\ ;
+索漠 > sakubaku\ ;
+閏秒 > uruubyou\ ;
+潤飾 > junshoku\ ;
+拳骨 > genkotsu\ ;
+綿密 > menmitsu\ ;
+激越 > gekietsu\ ;
+綿実 > menjitsu\ ;
+細波 > sazanami\ ;
+障壁 > shouheki\ ;
+国賊 > kokuzoku\ ;
+点滅 > tenmetsu\ ;
+触手 > shokushu\ ;
+節食 > sesshoku\ ;
+激賞 > gekishou\ ;
+製織 > seishoku\ ;
+給料 > kyuuryou\ ;
+純潔 > junketsu\ ;
+隔壁 > kakuheki\ ;
+放列 > houretsu\ ;
+陸将 > rikushou\ ;
+終業 > shuugyou\ ;
+雪上 > setsujou\ ;
+粟粒 > zokuryuu\ ;
+観月 > kangetsu\ ;
+統括 > toukatsu\ ;
+拾集 > shuushuu\ ;
+緑地 > ryokuchi\ ;
+焦心 > shoushin\ ;
+節電 > setsuden\ ;
+粘粘 > nebaneba\ ;
+炎熱 > en''netsu\ ;
+国許 > kunimoto\ ;
+開発 > kaihatsu\ ;
+粒粒 > ryuuryuu\ ;
+時々 > tokidoki\ ;
+解式 > kaishiki\ ;
+親族 > shinzoku\ ;
+長石 > chouseki\ ;
+粉粉 > konagona\ ;
+損率 > sonritsu\ ;
+表象 > hyoushou\ ;
+雇人 > yatoinin\ ;
+設問 > setsumon\ ;
+覚書 > oboegaki\ ;
+漆黒 > shikkoku\ ;
+編入 > hen''nyuu\ ;
+拒食 > kyoshoku\ ;
+集中 > shuuchuu\ ;
+累月 > ruigetsu\ ;
+垂直 > suichoku\ ;
+紅殻 > benigara\ ;
+招集 > shoushuu\ ;
+撥弦 > hatsugen\ ;
+行跡 > gyouseki\ ;
+角店 > kadomise\ ;
+練乳 > ren''nyuu\ ;
+米糠 > komenuka\ ;
+総力 > souryoku\ ;
+累日 > ruijitsu\ ;
+在職 > zaishoku\ ;
+総別 > soubetsu\ ;
+埋没 > maibotsu\ ;
+親戚 > shinseki\ ;
+粘着 > nenchaku\ ;
+糞溜 > kusodame\ ;
+緊切 > kinsetsu\ ;
+築造 > chikuzou\ ;
+触媒 > shokubai\ ;
+隊列 > tairetsu\ ;
+索敵 > sakuteki\ ;
+増刷 > zousatsu\ ;
+易々 > yasuyasu\ ;
+緑便 > ryokuben\ ;
+潮足 > shioashi\ ;
+閲歴 > etsureki\ ;
+納札 > nousatsu\ ;
+終息 > shuusoku\ ;
+振袖 > furisode\ ;
+糟汁 > kasujiru\ ;
+約束 > yakusoku\ ;
+衆評 > shuuhyou\ ;
+抑鬱 > yokuutsu\ ;
+指貫 > yubinuki\ ;
+絶大 > zetsudai\ ;
+激臭 > gekishuu\ ;
+見所 > midokoro\ ;
+換物 > kanbutsu\ ;
+粗率 > araritsu\ ;
+終幕 > shuumaku\ ;
+襲撃 > shuugeki\ ;
+結局 > kekkyoku\ ;
+筋骨 > sujibone\ ;
+擦傷 > surikizu\ ;
+観察 > kansatsu\ ;
+観客 > kankyaku\ ;
+濫立 > ranritsu\ ;
+接着 > setchaku\ ;
+陣列 > jinretsu\ ;
+間歇 > kanketsu\ ;
+土筆 > tsukushi\ ;
+衰色 > suishoku\ ;
+粛然 > shukuzen\ ;
+間欠 > kanketsu\ ;
+細引 > hosobiki\ ;
+親局 > oyakyoku\ ;
+管轄 > kankatsu\ ;
+陥入 > kan''nyuu\ ;
+表芸 > omotegei\ ;
+早々 > hayabaya\ ;
+装着 > souchaku\ ;
+終審 > shuushin\ ;
+濃縮 > noushuku\ ;
+討伐 > toubatsu\ ;
+謎々 > nazonazo\ ;
+終宵 > shuushou\ ;
+執心 > shuushin\ ;
+提灯 > chouchin\ ;
+摘心 > tekishin\ ;
+裏町 > uramachi\ ;
+煉乳 > ren''nyuu\ ;
+土神 > uchigami\ ;
+堀川 > horikawa\ ;
+絶命 > zetsumei\ ;
+陋劣 > rouretsu\ ;
+要式 > youshiki\ ;
+筆順 > hitsujun\ ;
+袴着 > hakamagi\ ;
+視察 > shisatsu\ ;
+簡約 > kan''yaku\ ;
+国籍 > kokuseki\ ;
+挽肉 > hikiniku\ ;
+続伸 > zokushin\ ;
+粛清 > shukusei\ ;
+細密 > saimitsu\ ;
+間柄 > aidagara\ ;
+撃墜 > gekitsui\ ;
+堅実 > kenjitsu\ ;
+諸々 > moromoro\ ;
+国策 > kokusaku\ ;
+濫発 > ranpatsu\ ;
+筆陣 > hitsujin\ ;
+結団 > ketsudan\ ;
+螢雪 > keisetsu\ ;
+閏月 > jungetsu\ ;
+覆審 > fukushin\ ;
+開札 > kaisatsu\ ;
+索寞 > sakubaku\ ;
+蝶鮫 > chouzame\ ;
+搦手 > karamete\ ;
+団結 > danketsu\ ;
+旁々 > katagata\ ;
+紙屑 > kamikuzu\ ;
+粕汁 > kasujiru\ ;
+血色 > kesshoku\ ;
+粛正 > shukusei\ ;
+門札 > monsatsu\ ;
+諤々 > gakugaku\ ;
+絶倫 > zetsurin\ ;
+型枠 > katawaku\ ;
+抽象 > chuushou\ ;
+抄録 > shouroku\ ;
+鑑識 > kanshiki\ ;
+闇市 > yamiichi\ ;
+融雪 > yuusetsu\ ;
+簒立 > sanritsu\ ;
+結合 > ketsugou\ ;
+地熱 > chinetsu\ ;
+間接 > kansetsu\ ;
+筋金 > sujigane\ ;
+親告 > shinkoku\ ;
+算術 > sanjutsu\ ;
+潤色 > junshoku\ ;
+表章 > hyoushou\ ;
+親友 > shin''yuu\ ;
+漢訳 > kan''yaku\ ;
+長旅 > nagatabi\ ;
+防人 > sakimori\ ;
+紳商 > shinshou\ ;
+蟻蜂 > aribachi\ ;
+激痛 > gekitsuu\ ;
+観入 > kan''nyuu\ ;
+衝立 > tsuitate\ ;
+抵触 > teishoku\ ;
+簡略 > kanryaku\ ;
+採決 > saiketsu\ ;
+捨猫 > suteneko\ ;
+箱船 > hakobune\ ;
+箱舟 > hakobune\ ;
+蟀谷 > komekami\ ;
+蟯虫 > gyouchuu\ ;
+夫々 > sorezore\ ;
+裁決 > saiketsu\ ;
+視力 > shiryoku\ ;
+粉末 > funmatsu\ ;
+掃滅 > soumetsu\ ;
+埒外 > rachigai\ ;
+排泄 > haisetsu\ ;
+西哲 > seitetsu\ ;
+坪数 > tsubosuu\ ;
+糞尿 > fun''nyou\ ;
+表白 > hyouhaku\ ;
+四百 > yonhyaku\ ;
+細別 > saibetsu\ ;
+手鏡 > tekagami\ ;
+親任 > shin''nin\ ;
+蠏股 > ganimata\ ;
+堀割 > horiwari\ ;
+関守 > sekimori\ ;
+血税 > ketsuzei\ ;
+執務 > shitsumu\ ;
+捕物 > torimono\ ;
+成香 > narikyou\ ;
+終了 > shuuryou\ ;
+米松 > beimatsu\ ;
+節糸 > fushiito\ ;
+型式 > keishiki\ ;
+節米 > setsumai\ ;
+数々 > kazukazu\ ;
+承諾 > shoudaku\ ;
+筆談 > hitsudan\ ;
+抄訳 > shouyaku\ ;
+開局 > kaikyoku\ ;
+窮鳥 > kyuuchou\ ;
+蟹股 > ganimata\ ;
+鎌首 > kamakubi\ ;
+立食 > risshoku\ ;
+衆目 > shuumoku\ ;
+筆触 > hisshoku\ ;
+簡潔 > kanketsu\ ;
+垂幕 > taremaku\ ;
+立願 > ritsugan\ ;
+摂動 > setsudou\ ;
+精密 > seimitsu\ ;
+節穴 > fushiana\ ;
+接断 > setsudan\ ;
+血盟 > ketsumei\ ;
+節税 > setsuzei\ ;
+糸口 > itoguchi\ ;
+手車 > teguruma\ ;
+長尻 > nagajiri\ ;
+濁流 > dakuryuu\ ;
+素人 > shirouto\ ;
+激流 > gekiryuu\ ;
+執事 > shitsuji\ ;
+所轄 > shokatsu\ ;
+拒絶 > kyozetsu\ ;
+排日 > hainichi\ ;
+系列 > keiretsu\ ;
+熱々 > atsuatsu\ ;
+衰滅 > suimetsu\ ;
+採掘 > saikutsu\ ;
+埒内 > rachinai\ ;
+在日 > zainichi\ ;
+漁色 > gyoshoku\ ;
+拙筆 > seppitsu\ ;
+純一 > jun''itsu\ ;
+搬入 > han''nyuu\ ;
+関取 > sekitori\ ;
+搾乳 > sakunyuu\ ;
+蛮骨 > bankotsu\ ;
+漫筆 > manpitsu\ ;
+節用 > setsuyou\ ;
+抜群 > batsugun\ ;
+所説 > shosetsu\ ;
+国柄 > kunigara\ ;
+溶血 > youketsu\ ;
+閑却 > kankyaku\ ;
+手袋 > tebukuro\ ;
+閣僚 > kakuryou\ ;
+手術 > shujutsu\ ;
+緩々 > yuruyuru\ ;
+籤引 > kujibiki\ ;
+簡札 > kansatsu\ ;
+蝶蝶 > chouchou\ ;
+筋肉 > kin''niku\ ;
+窓際 > madogiwa\ ;
+間八 > kanpachi\ ;
+減食 > genshoku\ ;
+笹舟 > sasabune\ ;
+接岸 > setsugan\ ;
+戯言 > tawagoto\ ;
+精力 > seiryoku\ ;
+血液 > ketsueki\ ;
+空風 > karakaze\ ;
+蠏玉 > kanitama\ ;
+血涙 > ketsurui\ ;
+潰滅 > kaimetsu\ ;
+戸袋 > tobukuro\ ;
+推察 > suisatsu\ ;
+接客 > sekkyaku\ ;
+嗅覚 > kyuukaku\ ;
+折節 > orifushi\ ;
+潤滑 > junkatsu\ ;
+間伐 > kanbatsu\ ;
+鎌足 > kamaashi\ ;
+潮流 > chouryuu\ ;
+四月 > shigatsu\ ;
+長刀 > naginata\ ;
+嘲笑 > choushou\ ;
+窮追 > kyuutsui\ ;
+窮迫 > kyuuhaku\ ;
+戦術 > senjutsu\ ;
+握力 > akuryoku\ ;
+複勝 > fukushou\ ;
+蟹玉 > kanitama\ ;
+潮汐 > chouseki\ ;
+簡抜 > kanbatsu\ ;
+潮水 > shiomizu\ ;
+節減 > setsugen\ ;
+鍛鉄 > tantetsu\ ;
+隆々 > ryuuryuu\ ;
+隅々 > sumizumi\ ;
+揚力 > youryoku\ ;
+竹薮 > takeyabu\ ;
+才色 > saishoku\ ;
+蛍雪 > keisetsu\ ;
+立論 > ritsuron\ ;
+米坪 > beitsubo\ ;
+筆箱 > fudebako\ ;
+測量 > sokuryou\ ;
+等等 > nadonado\ ;
+立言 > ritsugen\ ;
+粛党 > shukutou\ ;
+裸出 > rashutsu\ ;
+鍋釜 > nabekama\ ;
+衝撃 > shougeki\ ;
+漂白 > hyouhaku\ ;
+混雑 > konzatsu\ ;
+長久 > choukyuu\ ;
+回折 > kaisetsu\ ;
+地境 > djizakai\ ;
+挿抜 > soubatsu\ ;
+蝦腰 > ebigoshi\ ;
+衣手 > koromode\ ;
+衷心 > chuushin\ ;
+蛸足 > takoashi\ ;
+続々 > zokuzoku\ ;
+深長 > shinchou\ ;
+商量 > shouryou\ ;
+挟撃 > kyougeki\ ;
+接合 > setsugou\ ;
+裏口 > uraguchi\ ;
+蚕食 > sanshoku\ ;
+抑留 > yokuryuu\ ;
+錬鉄 > rentetsu\ ;
+潮時 > shiodoki\ ;
+濃密 > noumitsu\ ;
+表徴 > hyouchou\ ;
+表彰 > hyoushou\ ;
+国学 > kokugaku\ ;
+漠漠 > bakubaku\ ;
+推力 > suiryoku\ ;
+揉事 > momegoto\ ;
+競翔 > kyoushou\ ;
+鼻髭 > hanahige\ ;
+立葵 > tachiaoi\ ;
+粉乳 > fun''nyuu\ ;
+衝心 > shoushin\ ;
+鼻高 > hanataka\ ;
+喀血 > kakketsu\ ;
+才筆 > saihitsu\ ;
+投物 > nagemono\ ;
+地卵 > jitamago\ ;
+米倉 > komegura\ ;
+袖垣 > sodegaki\ ;
+深酒 > fukazake\ ;
+地力 > chiryoku\ ;
+空豆 > soramame\ ;
+振幅 > shinpuku\ ;
+鼻風 > hanakaze\ ;
+排列 > hairetsu\ ;
+米仏 > beifutsu\ ;
+捕失 > hoshitsu\ ;
+竪縞 > tatejima\ ;
+抄物 > shoumono\ ;
+竹簡 > chikukan\ ;
+漂漂 > hyouhyou\ ;
+抹殺 > massatsu\ ;
+裏付 > uradzuke\ ;
+唐鋤 > karasuki\ ;
+憶説 > okusetsu\ ;
+圧出 > asshutsu\ ;
+立脚 > rikkyaku\ ;
+竹箆 > takebera\ ;
+国国 > kuniguni\ ;
+簒奪 > sandatsu\ ;
+均一 > kin''itsu\ ;
+漏泄 > rousetsu\ ;
+鼻革 > hanagawa\ ;
+空説 > kuusetsu\ ;
+圧入 > atsunyuu\ ;
+挙式 > kyoshiki\ ;
+濫入 > ran''nyuu\ ;
+鋼鉄 > koutetsu\ ;
+空言 > soragoto\ ;
+唐金 > karakane\ ;
+虎鬚 > torahige\ ;
+溶発 > youhatsu\ ;
+滴滴 > tekiteki\ ;
+漂流 > hyouryuu\ ;
+虎髭 > torahige\ ;
+鏑矢 > kaburaya\ ;
+漂泊 > hyouhaku\ ;
+虚飾 > kyoshoku\ ;
+拙文 > setsubun\ ;
+箏曲 > soukyoku\ ;
+螢火 > hotarubi\ ;
+鑑札 > kansatsu\ ;
+才略 > sairyaku\ ;
+銀鼠 > gin''nezu\ ;
+濫伐 > ranbatsu\ ;
+拾得 > shuutoku\ ;
+国原 > kunibara\ ;
+蛞蝓 > namekuji\ ;
+掌中 > shouchuu\ ;
+禿鷹 > hagetaka\ ;
+空蝉 > utsusemi\ ;
+築庭 > chikutei\ ;
+篤学 > tokugaku\ ;
+融熱 > yuunetsu\ ;
+黙黙 > mokumoku\ ;
+鍋蓋 > nabebuta\ ;
+成立 > seiritsu\ ;
+筆洗 > fudearai\ ;
+困却 > konkyaku\ ;
+懸絶 > kenzetsu\ ;
+黒黴 > kurokabi\ ;
+海食 > kaishoku\ ;
+黒黒 > kuroguro\ ;
+慎重 > shinchou\ ;
+黒麦 > kuromugi\ ;
+成程 > naruhodo\ ;
+国元 > kunimoto\ ;
+才物 > saibutsu\ ;
+黒鷺 > kurosagi\ ;
+鉤鼻 > kagibana\ ;
+混血 > konketsu\ ;
+箱庭 > hakoniwa\ ;
+拙悪 > setsuaku\ ;
+消長 > shouchou\ ;
+細々 > hosoboso\ ;
+黒鴨 > kurogamo\ ;
+拡張 > kakuchou\ ;
+銀髪 > ginpatsu\ ;
+蛆虫 > ujimushi\ ;
+蝕甚 > shokujin\ ;
+蚕豆 > soramame\ ;
+蠍座 > sasoriza\ ;
+袖丈 > sodetake\ ;
+戦略 > senryaku\ ;
+回勅 > kaichoku\ ;
+国人 > kunibito\ ;
+湿疹 > shisshin\ ;
+嘱望 > shokubou\ ;
+浜風 > hamakaze\ ;
+竪琴 > tategoto\ ;
+渋茶 > shibucha\ ;
+行商 > gyoushou\ ;
+窮策 > kyuusaku\ ;
+蚰蜒 > gejigeji\ ;
+抗日 > kounichi\ ;
+渋色 > shibuiro\ ;
+活魚 > katsugyo\ ;
+築堤 > chikutei\ ;
+空耳 > soramimi\ ;
+銭金 > zenikane\ ;
+拝察 > haisatsu\ ;
+承服 > shoufuku\ ;
+截然 > setsuzen\ ;
+龍舟 > ryuushuu\ ;
+混色 > konshoku\ ;
+溢流 > itsuryuu\ ;
+滞日 > tainichi\ ;
+投技 > nagewaza\ ;
+戛然 > katsuzen\ ;
+我物 > wagamono\ ;
+鼻許 > hanamoto\ ;
+秒針 > byoushin\ ;
+振作 > shinsaku\ ;
+溝泥 > dobudoro\ ;
+銑鉄 > sentetsu\ ;
+禄高 > rokudaka\ ;
+溝水 > dobumizu\ ;
+憂色 > yuushoku\ ;
+空籤 > karakuji\ ;
+鉄骨 > tekkotsu\ ;
+湯煙 > yukemuri\ ;
+洗髪 > senpatsu\ ;
+淡色 > tanshoku\ ;
+私鉄 > shitetsu\ ;
+秒速 > byousoku\ ;
+篤信 > tokushin\ ;
+空箱 > karabako\ ;
+突立 > tottatsu\ ;
+唐草 > karakusa\ ;
+蟻塚 > aridzuka\ ;
+潮先 > shiosaki\ ;
+虚説 > kyosetsu\ ;
+血便 > ketsuben\ ;
+行中 > gyouchuu\ ;
+洋髪 > youhatsu\ ;
+戦没 > senbotsu\ ;
+指先 > yubisaki\ ;
+錦絵 > nishikie\ ;
+商策 > shousaku\ ;
+手枕 > temakura\ ;
+秀逸 > shuuitsu\ ;
+節分 > setsubun\ ;
+戦歿 > senbotsu\ ;
+竹槍 > takeyari\ ;
+融接 > yuusetsu\ ;
+黒鉄 > kurogane\ ;
+潜入 > sen''nyuu\ ;
+黒金 > kurogane\ ;
+洋食 > youshoku\ ;
+等式 > toushiki\ ;
+藩閥 > hanbatsu\ ;
+流量 > ryuuryou\ ;
+感触 > kanshoku\ ;
+鍼灸 > shinkyuu\ ;
+突発 > toppatsu\ ;
+鉤針 > kagibari\ ;
+投宿 > toushuku\ ;
+竹林 > chikurin\ ;
+溶接 > yousetsu\ ;
+啓発 > keihatsu\ ;
+竹材 > chikuzai\ ;
+空発 > kuuhatsu\ ;
+払拭 > fusshoku\ ;
+神風 > kamikaze\ ;
+窃用 > setsuyou\ ;
+流速 > ryuusoku\ ;
+流通 > ryuutsuu\ ;
+滝川 > takigawa\ ;
+穀粒 > kokuryuu\ ;
+筑子 > kokiriko\ ;
+端末 > tanmatsu\ ;
+唐紙 > karakami\ ;
+薦骨 > senkotsu\ ;
+長々 > naganaga\ ;
+蛸焼 > takoyaki\ ;
+祝電 > shukuden\ ;
+恐龍 > kyouryuu\ ;
+私説 > shisetsu\ ;
+品薄 > shinausu\ ;
+拝借 > haishaku\ ;
+截断 > setsudan\ ;
+海蝕 > kaishoku\ ;
+算入 > san''nyuu\ ;
+種紙 > tanegami\ ;
+温熱 > on''netsu\ ;
+鉄鉢 > teppachi\ ;
+私設 > shisetsu\ ;
+満月 > mangetsu\ ;
+鍋物 > nabemono\ ;
+湾曲 > wankyoku\ ;
+波風 > namikaze\ ;
+鑑別 > kanbetsu\ ;
+黒豹 > kurohyou\ ;
+房房 > fusafusa\ ;
+黒豆 > kuromame\ ;
+唐突 > toutotsu\ ;
+黙諾 > mokudaku\ ;
+野鼠 > nonezumi\ ;
+喬木 > kyouboku\ ;
+黙読 > mokudoku\ ;
+恥骨 > chikotsu\ ;
+手心 > tegokoro\ ;
+突然 > totsuzen\ ;
+押切 > oshikiri\ ;
+抑圧 > yokuatsu\ ;
+慶祝 > keishuku\ ;
+筆太 > fudebuto\ ;
+鉄道 > tetsudou\ ;
+粘々 > nebaneba\ ;
+神鏡 > shinkyou\ ;
+渉猟 > shouryou\ ;
+虚脱 > kyodatsu\ ;
+河鱒 > kawamasu\ ;
+銭苔 > zenigoke\ ;
+立札 > tatefuda\ ;
+噛傷 > kamikizu\ ;
+野鶲 > nobitaki\ ;
+演出 > enshutsu\ ;
+測深 > sokushin\ ;
+鼻紙 > hanagami\ ;
+温温 > nukunuku\ ;
+鼻糞 > hanakuso\ ;
+粉々 > konagona\ ;
+悪逆 > akugyaku\ ;
+悪辣 > akuratsu\ ;
+戦慄 > senritsu\ ;
+黒表 > kokuhyou\ ;
+涼秋 > ryoushuu\ ;
+鼻筋 > hanasuji\ ;
+麩質 > fushitsu\ ;
+沈黙 > chinmoku\ ;
+蛍火 > hotarubi\ ;
+金髪 > kinpatsu\ ;
+鉈豆 > natamame\ ;
+磯鷸 > isoshigi\ ;
+溝川 > dobugawa\ ;
+鎔接 > yousetsu\ ;
+鍵束 > kagitaba\ ;
+神速 > shinsoku\ ;
+黒蛇 > kurohebi\ ;
+満悦 > man''etsu\ ;
+我我 > wareware\ ;
+清潔 > seiketsu\ ;
+筆名 > hitsumei\ ;
+程程 > hodohodo\ ;
+蝎座 > sasoriza\ ;
+種畜 > shuchiku\ ;
+筋力 > kinryoku\ ;
+銅色 > doushoku\ ;
+反骨 > hankotsu\ ;
+準尺 > junshaku\ ;
+召集 > shoushuu\ ;
+注進 > chuushin\ ;
+商況 > shoukyou\ ;
+鋼玉 > kougyoku\ ;
+湿度 > shitsudo\ ;
+蟄伏 > chippuku\ ;
+浅葱 > asatsuki\ ;
+戒律 > kairitsu\ ;
+竺学 > jikugaku\ ;
+吹貫 > fukinuki\ ;
+笹原 > sasahara\ ;
+窓枠 > madowaku\ ;
+唐物 > toumotsu\ ;
+叢雲 > murakumo\ ;
+叢雨 > murasame\ ;
+涜神 > tokushin\ ;
+端局 > tankyoku\ ;
+択一 > takuitsu\ ;
+戦局 > senkyoku\ ;
+筆先 > fudesaki\ ;
+銭箱 > zenibako\ ;
+錨泊 > byouhaku\ ;
+鉄血 > tekketsu\ ;
+混浴 > kon''yoku\ ;
+深深 > fukabuka\ ;
+藪蛇 > yabuhebi\ ;
+種物 > tanemono\ ;
+種牛 > taneushi\ ;
+蛇毒 > hebidoku\ ;
+戌年 > inudoshi\ ;
+鼻疾 > bishitsu\ ;
+滑剤 > katsuzai\ ;
+黒船 > kurofune\ ;
+商標 > shouhyou\ ;
+鼎立 > teiritsu\ ;
+銀翼 > gin''yoku\ ;
+泥足 > doroashi\ ;
+鎌形 > kamagata\ ;
+滅却 > mekkyaku\ ;
+釣銭 > tsurisen\ ;
+商業 > shougyou\ ;
+鉱脈 > koumyaku\ ;
+収集 > shuushuu\ ;
+蚊燻 > kaibushi\ ;
+各週 > kakushuu\ ;
+神託 > shintaku\ ;
+承伏 > shoufuku\ ;
+吃逆 > shakkuri\ ;
+麹菌 > koujikin\ ;
+黄色 > koushoku\ ;
+命脈 > meimyaku\ ;
+黒肉 > kuroniku\ ;
+麦藁 > mugiwara\ ;
+竹垣 > takegaki\ ;
+鍛接 > tansetsu\ ;
+針金 > harigane\ ;
+銀縁 > ginbuchi\ ;
+金錆 > kanasabi\ ;
+税率 > zeiritsu\ ;
+立山 > tateyama\ ;
+麦蒔 > mugimaki\ ;
+金鉄 > kintetsu\ ;
+古金 > furugane\ ;
+古里 > furusato\ ;
+啄木 > takuboku\ ;
+口重 > kuchiomo\ ;
+渇望 > katsubou\ ;
+才力 > sairyoku\ ;
+古酒 > furuzake\ ;
+清朝 > shinchou\ ;
+鼻熊 > hanaguma\ ;
+笑劇 > shougeki\ ;
+錫杖 > shakujou\ ;
+空撮 > kuusatsu\ ;
+黙約 > mokuyaku\ ;
+社説 > shasetsu\ ;
+浅緑 > senryoku\ ;
+収録 > shuuroku\ ;
+手刀 > tegatana\ ;
+積極 > sekkyoku\ ;
+打傷 > uchikizu\ ;
+鉄色 > tetsuiro\ ;
+国々 > kuniguni\ ;
+福耳 > fukumimi\ ;
+滅亡 > metsubou\ ;
+慄然 > ritsuzen\ ;
+口述 > koujutsu\ ;
+同説 > dousetsu\ ;
+窒息 > chissoku\ ;
+右足 > migiashi\ ;
+沖釣 > okidzuri\ ;
+竹叢 > takamura\ ;
+黒米 > kurogome\ ;
+収量 > shuuryou\ ;
+鉄腕 > tetsuwan\ ;
+叛逆 > hangyaku\ ;
+點穴 > tenketsu\ ;
+水鳥 > mizudori\ ;
+満喫 > mankitsu\ ;
+呈色 > teishoku\ ;
+我国 > wagakuni\ ;
+薮蛇 > yabuhebi\ ;
+叱責 > shisseki\ ;
+悪舌 > akuzetsu\ ;
+虎猫 > toraneko\ ;
+洒脱 > shadatsu\ ;
+麻綱 > asadzuna\ ;
+黐竿 > mochizao\ ;
+含蓄 > ganchiku\ ;
+反逆 > hangyaku\ ;
+参酌 > sanshaku\ ;
+戦力 > senryoku\ ;
+収輯 > shuushuu\ ;
+各行 > kakugyou\ ;
+戦列 > senretsu\ ;
+鍋底 > nabezoko\ ;
+急進 > kyuushin\ ;
+悪者 > warumono\ ;
+急速 > kyuusoku\ ;
+急追 > kyuutsui\ ;
+急迫 > kyuuhaku\ ;
+鼻水 > hanamizu\ ;
+悽絶 > seizetsu\ ;
+窮境 > kyuukyou\ ;
+悶絶 > monzetsu\ ;
+周章 > shuushou\ ;
+快闊 > kaikatsu\ ;
+水食 > suishoku\ ;
+競作 > kyousaku\ ;
+立命 > ritsumei\ ;
+厳達 > gentatsu\ ;
+厳逹 > gentatsu\ ;
+湾入 > wan''nyuu\ ;
+温室 > onshitsu\ ;
+重説 > juusetsu\ ;
+鍋尻 > nabejiri\ ;
+深憂 > shin''yuu\ ;
+氷震 > hyoushin\ ;
+鉄筆 > teppitsu\ ;
+活眼 > katsugan\ ;
+口裏 > kuchiura\ ;
+洞窟 > doukutsu\ ;
+我儘 > wagamama\ ;
+水際 > mizugiwa\ ;
+重複 > choufuku\ ;
+私物 > shibutsu\ ;
+活発 > kappatsu\ ;
+麦稈 > mugiwara\ ;
+窒塞 > chissoku\ ;
+消沈 > shouchin\ ;
+同色 > doushoku\ ;
+悪筆 > akuhitsu\ ;
+硬骨 > koukotsu\ ;
+我侭 > wagamama\ ;
+沢蠏 > sawagani\ ;
+沢蟹 > sawagani\ ;
+憫察 > binsatsu\ ;
+麗筆 > reihitsu\ ;
+藁紙 > waragami\ ;
+立像 > ritsuzou\ ;
+活用 > katsuyou\ ;
+消毒 > shoudoku\ ;
+商学 > shougaku\ ;
+我人 > warehito\ ;
+鍋墨 > nabezumi\ ;
+成仏 > joubutsu\ ;
+黒猫 > kuroneko\ ;
+我事 > wagakoto\ ;
+同胞 > harakara\ ;
+鉱物 > koubutsu\ ;
+急襲 > kyuushuu\ ;
+同職 > doushoku\ ;
+空夢 > sorayume\ ;
+泥縄 > doronawa\ ;
+徴集 > choushuu\ ;
+酋長 > shuuchou\ ;
+半靴 > hangutsu\ ;
+悶着 > monchaku\ ;
+黄玉 > kougyoku\ ;
+黒熊 > kuroguma\ ;
+蒲魚 > kamatoto\ ;
+惨烈 > sanretsu\ ;
+喉元 > nodomoto\ ;
+空堀 > karabori\ ;
+薄膜 > hakumaku\ ;
+窯元 > kamamoto\ ;
+減圧 > gen''atsu\ ;
+私淑 > shishuku\ ;
+稚拙 > chisetsu\ ;
+祐筆 > yuuhitsu\ ;
+古草 > furukusa\ ;
+口荒 > kuchiara\ ;
+神神 > kamigami\ ;
+祝祷 > shukutou\ ;
+神祐 > shin''yuu\ ;
+祝祭 > shukusai\ ;
+告白 > kokuhaku\ ;
+黄熱 > kounetsu\ ;
+半長 > han''naga\ ;
+鉄瓶 > tetsubin\ ;
+水部 > mizunobu\ ;
+悪癖 > waruguse\ ;
+黒潮 > kuroshio\ ;
+蓄電 > chikuden\ ;
+母鳥 > hahadori\ ;
+口舌 > kouzetsu\ ;
+祝砲 > shukuhou\ ;
+毛髪 > mouhatsu\ ;
+礼節 > reisetsu\ ;
+及落 > kyuuraku\ ;
+銃殺 > juusatsu\ ;
+清国 > shinkoku\ ;
+情熱 > jounetsu\ ;
+空咳 > karazeki\ ;
+蛮力 > banryoku\ ;
+態態 > wazawaza\ ;
+金脈 > kinmyaku\ ;
+只者 > tadamono\ ;
+懇切 > konsetsu\ ;
+禁物 > kinmotsu\ ;
+虐政 > gyakusei\ ;
+名筆 > meihitsu\ ;
+確証 > kakushou\ ;
+社稷 > shashoku\ ;
+同筆 > douhitsu\ ;
+急落 > kyuuraku\ ;
+活溌 > kappatsu\ ;
+配達 > haitatsu\ ;
+鋸屑 > nokokuzu\ ;
+重職 > juushoku\ ;
+流流 > ryuuryuu\ ;
+淀川 > yodogawa\ ;
+惑溺 > wakudeki\ ;
+浅沓 > asagutsu\ ;
+同穴 > douketsu\ ;
+惨殺 > zansatsu\ ;
+酷評 > kokuhyou\ ;
+釣糸 > tsuriito\ ;
+洗熊 > araiguma\ ;
+心身 > shinshin\ ;
+重罰 > juubatsu\ ;
+流氷 > ryuuhyou\ ;
+注目 > chuumoku\ ;
+双脚 > soukyaku\ ;
+汗血 > kanketsu\ ;
+浪曲 > roukyoku\ ;
+金縁 > kinbuchi\ ;
+半道 > hanmichi\ ;
+北陸 > hokuriku\ ;
+原薬 > gen''yaku\ ;
+即諾 > sokudaku\ ;
+活殺 > kassatsu\ ;
+唯唯 > tadatada\ ;
+周流 > shuuryuu\ ;
+稲妻 > inadzuma\ ;
+右筆 > yuuhitsu\ ;
+唐墨 > karasumi\ ;
+史筆 > shihitsu\ ;
+釣竿 > tsurizao\ ;
+針箱 > haribako\ ;
+私曲 > shikyoku\ ;
+心象 > shinshou\ ;
+唱名 > shoumyou\ ;
+只管 > hitasura\ ;
+同着 > douchaku\ ;
+津津 > shinshin\ ;
+卓越 > takuetsu\ ;
+恐竜 > kyouryuu\ ;
+鼻屎 > hanakuso\ ;
+清冽 > seiretsu\ ;
+蒐集 > shuushuu\ ;
+取組 > torikumi\ ;
+蒲鉾 > kamaboko\ ;
+海抜 > kaibatsu\ ;
+金箱 > kanebako\ ;
+虚式 > kyoshiki\ ;
+消息 > shousoku\ ;
+気質 > kishitsu\ ;
+殻頂 > kakuchou\ ;
+口笛 > kuchibue\ ;
+各省 > kakushou\ ;
+原茸 > haratake\ ;
+鴛鴦 > oshidori\ ;
+薬玉 > kusudama\ ;
+虐待 > gyakutai\ ;
+黒枠 > kurowaku\ ;
+酷薄 > kokuhaku\ ;
+心証 > shinshou\ ;
+金穴 > kinketsu\ ;
+原色 > genshoku\ ;
+黒服 > kurofuku\ ;
+勝馬 > kachiuma\ ;
+深刻 > shinkoku\ ;
+破鐘 > waregane\ ;
+必要 > hitsuyou\ ;
+混入 > kon''nyuu\ ;
+忍術 > ninjutsu\ ;
+厳罰 > genbatsu\ ;
+流木 > ryuuboku\ ;
+鈍物 > donbutsu\ ;
+司直 > shichoku\ ;
+協調 > kyouchou\ ;
+後述 > koujutsu\ ;
+禁欲 > kin''yoku\ ;
+渇仰 > katsugou\ ;
+秩序 > chitsujo\ ;
+卒論 > sotsuron\ ;
+水蝕 > suishoku\ ;
+流暢 > ryuuchou\ ;
+水蜜 > suimitsu\ ;
+石高 > kokudaka\ ;
+漂々 > hyouhyou\ ;
+徴証 > choushou\ ;
+命日 > meinichi\ ;
+復讐 > fukushuu\ ;
+復讎 > fukushuu\ ;
+同率 > douritsu\ ;
+惜春 > sekishun\ ;
+礼物 > reimotsu\ ;
+短髪 > tanpatsu\ ;
+虚実 > kyojitsu\ ;
+沖積 > chuuseki\ ;
+蓄財 > chikuzai\ ;
+収穫 > shuukaku\ ;
+恋着 > renchaku\ ;
+復調 > fukuchou\ ;
+悩殺 > nousatsu\ ;
+復誦 > fukushou\ ;
+治略 > chiryaku\ ;
+名物 > meibutsu\ ;
+北進 > hokushin\ ;
+黄昏 > tasogare\ ;
+史略 > shiryaku\ ;
+泥濘 > nukarumi\ ;
+藤棚 > fujidana\ ;
+北辰 > hokushin\ ;
+厳粛 > genshuku\ ;
+鉄棒 > tetsubou\ ;
+鼓室 > koshitsu\ ;
+鳩麦 > hatomugi\ ;
+沈積 > chinseki\ ;
+鉄梃 > kanateko\ ;
+強震 > kyoushin\ ;
+落魄 > rakuhaku\ ;
+量的 > ryouteki\ ;
+忠良 > chuuryou\ ;
+藩札 > hansatsu\ ;
+古疵 > furukizu\ ;
+勅願 > chokugan\ ;
+酒蔵 > sakagura\ ;
+勅題 > chokudai\ ;
+忠臣 > chuushin\ ;
+弱震 > jakushin\ ;
+等々 > nadonado\ ;
+禁札 > kinsatsu\ ;
+種別 > shubetsu\ ;
+黒房 > kurobusa\ ;
+悦楽 > etsuraku\ ;
+水草 > mizukusa\ ;
+愛子 > itoshigo\ ;
+鉄材 > tetsuzai\ ;
+弦音 > tsuruoto\ ;
+唐傘 > karakasa\ ;
+麦束 > mugitaba\ ;
+水茎 > mizuguki\ ;
+憂事 > ureigoto\ ;
+短靴 > tangutsu\ ;
+水苔 > mizugoke\ ;
+洋梨 > younashi\ ;
+残雪 > zansetsu\ ;
+厚紙 > atsugami\ ;
+浴客 > yokkyaku\ ;
+神橋 > shinkyou\ ;
+水船 > mizubune\ ;
+泥沼 > doronuma\ ;
+反発 > hanpatsu\ ;
+神様 > kamisama\ ;
+双発 > souhatsu\ ;
+磨石 > togiishi\ ;
+弁髪 > benpatsu\ ;
+泥水 > doromizu\ ;
+泡沫 > houmatsu\ ;
+神業 > kamiwaza\ ;
+水腹 > mizubara\ ;
+参着 > sanchaku\ ;
+薬毒 > yakudoku\ ;
+確約 > kakuyaku\ ;
+酒色 > shushoku\ ;
+水脈 > suimyaku\ ;
+神棚 > kamidana\ ;
+古物 > furumono\ ;
+快絶 > kaizetsu\ ;
+配色 > haishoku\ ;
+金物 > kanamono\ ;
+神格 > shinkaku\ ;
+禿山 > hageyama\ ;
+十薬 > dokudami\ ;
+沈痛 > chintsuu\ ;
+急病 > kyuubyou\ ;
+針灸 > shinkyuu\ ;
+石鏃 > sekizoku\ ;
+祭日 > saijitsu\ ;
+単色 > tanshoku\ ;
+心腹 > shinpuku\ ;
+決着 > ketchaku\ ;
+税別 > zeibetsu\ ;
+黒幕 > kuromaku\ ;
+祝杯 > shukuhai\ ;
+神木 > shinboku\ ;
+悪擦 > waruzure\ ;
+鼻先 > hanasaki\ ;
+鼻元 > hanamoto\ ;
+神月 > koudzuki\ ;
+収獲 > shuukaku\ ;
+民草 > tamigusa\ ;
+活弁 > katsuben\ ;
+硝薬 > shouyaku\ ;
+和室 > washitsu\ ;
+釈然 > shakuzen\ ;
+称名 > shoumyou\ ;
+禁慾 > kin''yoku\ ;
+哲人 > tetsujin\ ;
+福徳 > fukutoku\ ;
+黒山 > kuroyama\ ;
+勿論 > mochiron\ ;
+強迫 > kyouhaku\ ;
+弔鐘 > choushou\ ;
+怪物 > kaibutsu\ ;
+福引 > fukubiki\ ;
+沼沢 > shoutaku\ ;
+蝶々 > chouchou\ ;
+薄氷 > hakuhyou\ ;
+卒者 > sotsusha\ ;
+油汗 > aburaase\ ;
+原発 > genpatsu\ ;
+割高 > waridaka\ ;
+著述 > chojutsu\ ;
+砲術 > houjutsu\ ;
+厚皮 > atsukawa\ ;
+勅選 > chokusen\ ;
+求積 > kyuuseki\ ;
+毛虱 > kejirami\ ;
+酒糟 > sakekasu\ ;
+酒粕 > sakekasu\ ;
+劇震 > gekishin\ ;
+引金 > hikigane\ ;
+古河 > furukawa\ ;
+復習 > fukushuu\ ;
+毒蛇 > dokuhebi\ ;
+鉄床 > kanatoko\ ;
+名月 > meigetsu\ ;
+名曲 > meikyoku\ ;
+鉄帽 > tetsubou\ ;
+同月 > dougetsu\ ;
+急激 > kyuugeki\ ;
+占算 > urayasan\ ;
+協約 > kyouyaku\ ;
+毒薬 > dokuyaku\ ;
+決然 > ketsuzen\ ;
+殖財 > shokuzai\ ;
+重殺 > juusatsu\ ;
+情実 > joujitsu\ ;
+秋口 > akiguchi\ ;
+金欠 > kinketsu\ ;
+単節 > tansetsu\ ;
+洋式 > youshiki\ ;
+取決 > torikime\ ;
+同日 > doujitsu\ ;
+祭式 > saishiki\ ;
+虐使 > gyakushi\ ;
+沐浴 > mokuyoku\ ;
+徒者 > tadamono\ ;
+鉄山 > tetsuzan\ ;
+原物 > genbutsu\ ;
+力量 > rikiryou\ ;
+洞察 > dousatsu\ ;
+強調 > kyouchou\ ;
+道順 > michijun\ ;
+神徳 > shintoku\ ;
+心神 > shinshin\ ;
+遊食 > yuushoku\ ;
+復籍 > fukuseki\ ;
+欠食 > kesshoku\ ;
+急流 > kyuuryuu\ ;
+毒茸 > dokutake\ ;
+延金 > nobegane\ ;
+碌碌 > rokuroku\ ;
+銭亀 > zenigame\ ;
+歯車 > haguruma\ ;
+強襲 > kyoushuu\ ;
+引越 > hikkoshi\ ;
+剃髪 > teihatsu\ ;
+忽然 > kotsuzen\ ;
+金梃 > kanateko\ ;
+古株 > furukabu\ ;
+勅諚 > chokujou\ ;
+菜食 > saishoku\ ;
+悄悄 > sugosugo\ ;
+硬筆 > kouhitsu\ ;
+神州 > shinshuu\ ;
+彩色 > saishoku\ ;
+必着 > hitchaku\ ;
+知識 > chishiki\ ;
+我々 > wareware\ ;
+進駐 > shinchuu\ ;
+愁傷 > shuushou\ ;
+古服 > furufuku\ ;
+水瓶 > mizugame\ ;
+心的 > shinteki\ ;
+黙劇 > mokugeki\ ;
+吾子 > wagimoko\ ;
+気短 > kimijika\ ;
+蕃殖 > hanshoku\ ;
+得策 > tokusaku\ ;
+勅裁 > chokusai\ ;
+従節 > juusetsu\ ;
+適量 > tekiryou\ ;
+心痛 > shintsuu\ ;
+劇通 > gekitsuu\ ;
+金星 > kinboshi\ ;
+汲汲 > kyuukyuu\ ;
+弾薬 > dan''yaku\ ;
+単発 > tanpatsu\ ;
+必用 > hitsuyou\ ;
+卒直 > sotchoku\ ;
+水玉 > mizutama\ ;
+神学 > shingaku\ ;
+禁圧 > kin''atsu\ ;
+秀作 > shuusaku\ ;
+徳目 > tokumoku\ ;
+里方 > satokata\ ;
+法律 > houritsu\ ;
+礼式 > reishiki\ ;
+収束 > shuusoku\ ;
+釈明 > shakumei\ ;
+活動 > katsudou\ ;
+黒円 > kuromaru\ ;
+法式 > houshiki\ ;
+水物 > mizumono\ ;
+得票 > tokuhyou\ ;
+遥遥 > harubaru\ ;
+派出 > hashutsu\ ;
+釈放 > shakuhou\ ;
+流入 > ryuunyuu\ ;
+残虐 > zangyaku\ ;
+薬屋 > kusuriya\ ;
+薬局 > yakkyoku\ ;
+硬直 > kouchoku\ ;
+合式 > goushiki\ ;
+神妙 > shinmyou\ ;
+遠道 > toomichi\ ;
+当職 > toushoku\ ;
+底革 > sokogawa\ ;
+醜業 > shuugyou\ ;
+薬学 > yakugaku\ ;
+硝石 > shouseki\ ;
+遙遙 > harubaru\ ;
+福助 > fukusuke\ ;
+毛筆 > mouhitsu\ ;
+快活 > kaikatsu\ ;
+去月 > kyogetsu\ ;
+正覚 > shougaku\ ;
+着駅 > chakueki\ ;
+反撥 > hanpatsu\ ;
+建設 > kensetsu\ ;
+恐悦 > kyouetsu\ ;
+蔭様 > kagesama\ ;
+神域 > shin''iki\ ;
+千生 > sen''nari\ ;
+薄弱 > hakujaku\ ;
+恍惚 > koukotsu\ ;
+必然 > hitsuzen\ ;
+恐恐 > kowagowa\ ;
+同局 > doukyoku\ ;
+黒丸 > kuromaru\ ;
+蒸着 > jouchaku\ ;
+半玉 > hangyoku\ ;
+逆風 > gyakufuu\ ;
+分骨 > bunkotsu\ ;
+神国 > shinkoku\ ;
+幼顔 > osanagao\ ;
+強膜 > kyoumaku\ ;
+同宿 > doushuku\ ;
+名実 > meijitsu\ ;
+止血 > shiketsu\ ;
+逐電 > chikuden\ ;
+収拾 > shuushuu\ ;
+動脈 > doumyaku\ ;
+着順 > chakujun\ ;
+蒸発 > jouhatsu\ ;
+逆順 > gyakujun\ ;
+合宿 > gasshuku\ ;
+劇評 > gekihyou\ ;
+酸欠 > sanketsu\ ;
+鉄剤 > tetsuzai\ ;
+硬玉 > kougyoku\ ;
+決断 > ketsudan\ ;
+後発 > kouhatsu\ ;
+副賞 > fukushou\ ;
+鉄分 > tetsubun\ ;
+河底 > kawazoko\ ;
+卒然 > sotsuzen\ ;
+着電 > chakuden\ ;
+広闊 > koukatsu\ ;
+友成 > tomonari\ ;
+水洟 > mizubana\ ;
+即決 > sokketsu\ ;
+後略 > kouryaku\ ;
+前述 > zenjutsu\ ;
+割譲 > katsujou\ ;
+原曲 > genkyoku\ ;
+切願 > setsugan\ ;
+出駕 > shutsuga\ ;
+後産 > nochizan\ ;
+落莫 > rakubaku\ ;
+適評 > tekihyou\ ;
+忙殺 > bousatsu\ ;
+蓋物 > futamono\ ;
+温々 > nukunuku\ ;
+出馬 > shutsuba\ ;
+適訳 > tekiyaku\ ;
+水没 > suibotsu\ ;
+御物 > gyobutsu\ ;
+当節 > tousetsu\ ;
+吸口 > suikuchi\ ;
+悋嗇 > rinshoku\ ;
+吸収 > kyuushuu\ ;
+古川 > furukawa\ ;
+創設 > sousetsu\ ;
+針山 > hariyama\ ;
+殉職 > junshoku\ ;
+取引 > torihiki\ ;
+没年 > botsunen\ ;
+史実 > shijitsu\ ;
+葉脈 > youmyaku\ ;
+台密 > taimitsu\ ;
+達識 > tasshiki\ ;
+収得 > shuutoku\ ;
+麦作 > mugisaku\ ;
+性悪 > shouwaru\ ;
+卑湿 > hishitsu\ ;
+吝嗇 > rinshoku\ ;
+従物 > juubutsu\ ;
+役畜 > ekichiku\ ;
+鉄人 > tetsujin\ ;
+死脈 > shimyaku\ ;
+凡骨 > bonkotsu\ ;
+金屑 > kanakuzu\ ;
+必殺 > hissatsu\ ;
+古寺 > furudera\ ;
+洛中 > rakuchuu\ ;
+凸面 > totsumen\ ;
+吸入 > kyuunyuu\ ;
+到達 > toutatsu\ ;
+口実 > koujitsu\ ;
+劇薬 > gekiyaku\ ;
+短縮 > tanshuku\ ;
+冷麦 > hiyamugi\ ;
+祝典 > shukuten\ ;
+出陳 > shutchin\ ;
+正色 > seishoku\ ;
+葛籠 > tsudzura\ ;
+徳沢 > tokutaku\ ;
+釈尊 > shakuson\ ;
+平鍋 > hiranabe\ ;
+酒樽 > sakadaru\ ;
+弁舌 > benzetsu\ ;
+追録 > tsuiroku\ ;
+恋妻 > koidzuma\ ;
+怖怖 > kowagowa\ ;
+復活 > fukkatsu\ ;
+氷柱 > hyouchuu\ ;
+恫喝 > doukatsu\ ;
+適薬 > tekiyaku\ ;
+剣術 > kenjutsu\ ;
+厳律 > genritsu\ ;
+劫罰 > goubatsu\ ;
+彫琢 > choutaku\ ;
+化物 > bakemono\ ;
+薪割 > makiwari\ ;
+当直 > touchoku\ ;
+前説 > zensetsu\ ;
+副虹 > fukuniji\ ;
+北爆 > hokubaku\ ;
+矢絣 > yagasuri\ ;
+莫逆 > bakugeki\ ;
+常食 > joushoku\ ;
+鰐鮫 > wanizame\ ;
+注入 > chuunyuu\ ;
+急峻 > kyuushun\ ;
+鳩胸 > hatomune\ ;
+勅答 > chokutou\ ;
+氷晶 > hyoushou\ ;
+店賃 > tanachin\ ;
+辮髪 > benpatsu\ ;
+南極 > nankyoku\ ;
+心根 > kokorone\ ;
+冬鳥 > fuyudori\ ;
+破物 > waremono\ ;
+唯々 > tadatada\ ;
+協業 > kyougyou\ ;
+凝集 > gyoushuu\ ;
+各各 > sorezore\ ;
+送達 > soutatsu\ ;
+彫物 > horimono\ ;
+底豆 > sokomame\ ;
+鳥肌 > torihada\ ;
+勾玉 > magatama\ ;
+鳥肉 > toriniku\ ;
+劇臭 > gekishuu\ ;
+母物 > hahamono\ ;
+恐嚇 > kyoukaku\ ;
+深々 > fukabuka\ ;
+真鍮 > shinchuu\ ;
+怠屈 > taikutsu\ ;
+社共 > shakyou\ ;
+心材 > shinzai\ ;
+近間 > chikama\ ;
+去就 > kyoshuu\ ;
+前表 > zenpyou\ ;
+君側 > kunsoku\ ;
+追送 > tsuisou\ ;
+占有 > sen''yuu\ ;
+忌日 > kinichi\ ;
+占書 > urabumi\ ;
+帳面 > choumen\ ;
+直音 > chokuon\ ;
+功績 > kouseki\ ;
+民業 > mingyou\ ;
+薄命 > hakumei\ ;
+席順 > sekijun\ ;
+益鳥 > ekichou\ ;
+沖天 > chuuten\ ;
+応接 > ousetsu\ ;
+瞠若 > doujaku\ ;
+後流 > kouryuu\ ;
+召喚 > shoukan\ ;
+引算 > hikizan\ ;
+卜書 > urabumi\ ;
+帯革 > obikawa\ ;
+出金 > shukkin\ ;
+叫喚 > kyoukan\ ;
+吉凶 > kikkyou\ ;
+重圧 > juuatsu\ ;
+述部 > jutsubu\ ;
+鷲座 > washiza\ ;
+弓箭 > kyuusen\ ;
+分進 > bunshin\ ;
+菩薩 > bosatsu\ ;
+分速 > funsoku\ ;
+水撃 > suigeki\ ;
+沢地 > sawachi\ ;
+切迫 > seppaku\ ;
+南朝 > nanchou\ ;
+念念 > nen''nen\ ;
+Ｎ響 > enukyou\ ;
+正続 > seizoku\ ;
+落第 > rakudai\ ;
+釣合 > tsuriai\ ;
+正絹 > shouken\ ;
+厳容 > gen''you\ ;
+進行 > shinkou\ ;
+吉兆 > kitchou\ ;
+動的 > douteki\ ;
+同僚 > douryou\ ;
+正経 > seikyou\ ;
+北満 > hokuman\ ;
+半格 > hankaku\ ;
+通謀 > tsuubou\ ;
+召命 > shoumei\ ;
+通論 > tsuuron\ ;
+序説 > josetsu\ ;
+泥中 > deichuu\ ;
+底角 > teikaku\ ;
+割興 > warikou\ ;
+徳望 > tokubou\ ;
+急変 > kyuuhen\ ;
+口唇 > koushin\ ;
+鳥網 > toriami\ ;
+恭倹 > kyouken\ ;
+叫号 > kyougou\ ;
+分身 > bunshin\ ;
+刺衝 > shishou\ ;
+幽谷 > yuukoku\ ;
+鄙歌 > hinauta\ ;
+段物 > danmono\ ;
+同信 > doushin\ ;
+石盤 > sekiban\ ;
+死票 > shihyou\ ;
+割腹 > kappuku\ ;
+廐舎 > kyuusha\ ;
+通計 > tsuukei\ ;
+同侶 > douryou\ ;
+台北 > taihoku\ ;
+勤王 > kin''nou\ ;
+廏舎 > kyuusha\ ;
+快復 > kaifuku\ ;
+民有 > min''yuu\ ;
+歴程 > rekitei\ ;
+破滅 > hametsu\ ;
+急増 > kyuuzou\ ;
+通解 > tsuukai\ ;
+判読 > handoku\ ;
+重唱 > juushou\ ;
+名作 > meisaku\ ;
+通観 > tsuukan\ ;
+弔祭 > chousai\ ;
+各停 > kakutei\ ;
+恩借 > onshaku\ ;
+史劇 > shigeki\ ;
+北洋 > hokuyou\ ;
+通覧 > tsuuran\ ;
+適者 > tekisha\ ;
+副腎 > fukujin\ ;
+社中 > shachuu\ ;
+追贈 > tsuizou\ ;
+急報 > kyuuhou\ ;
+師長 > shichou\ ;
+刀身 > toushin\ ;
+加筆 > kahitsu\ ;
+去声 > kyoshou\ ;
+名代 > myoudai\ ;
+匡正 > kyousei\ ;
+合作 > gassaku\ ;
+従業 > juugyou\ ;
+半時 > hantoki\ ;
+落磐 > rakuban\ ;
+原審 > genshin\ ;
+毒液 > dokueki\ ;
+彼氏 > kareshi\ ;
+帝陵 > teiryou\ ;
+徳政 > tokusei\ ;
+民族 > minzoku\ ;
+遠耳 > toomimi\ ;
+名主 > nanushi\ ;
+急坂 > kyuuhan\ ;
+初診 > shoshin\ ;
+広角 > koukaku\ ;
+吉事 > kitsuji\ ;
+氏族 > shizoku\ ;
+弔砲 > chouhou\ ;
+建策 > kensaku\ ;
+前葉 > zen''you\ ;
+通行 > tsuukou\ ;
+同一 > douitsu\ ;
+幾許 > ikubaku\ ;
+重厚 > choukou\ ;
+荷送 > niokuri\ ;
+復旧 > fukkyuu\ ;
+没収 > bosshuu\ ;
+廻章 > kaishou\ ;
+博捜 > hakusou\ ;
+知的 > chiteki\ ;
+各人 > kakujin\ ;
+残留 > zanryuu\ ;
+幕軍 > bakugun\ ;
+建立 > konryuu\ ;
+沃地 > yokuchi\ ;
+遊興 > yuukyou\ ;
+復文 > fukubun\ ;
+合一 > gouitsu\ ;
+別表 > beppyou\ ;
+副署 > fukusho\ ;
+受取 > uketori\ ;
+心房 > shinbou\ ;
+古刹 > kosatsu\ ;
+労相 > roushou\ ;
+郭清 > kakusei\ ;
+出走 > shussou\ ;
+幻覚 > genkaku\ ;
+剛腹 > goufuku\ ;
+歯石 > shiseki\ ;
+恥丘 > chikyuu\ ;
+落盤 > rakuban\ ;
+全麦 > zenbaku\ ;
+博打 > bakuchi\ ;
+追認 > tsuinin\ ;
+量刑 > ryoukei\ ;
+確定 > kakutei\ ;
+重刻 > juukoku\ ;
+確守 > kakushu\ ;
+追試 > tsuishi\ ;
+出資 > shusshi\ ;
+真贋 > shingan\ ;
+気持 > kimochi\ ;
+平角 > heikaku\ ;
+正確 > seikaku\ ;
+追討 > tsuitou\ ;
+毬栗 > igaguri\ ;
+死病 > shibyou\ ;
+共鳴 > kyoumei\ ;
+反収 > tanshuu\ ;
+忖度 > sontaku\ ;
+帯金 > obigane\ ;
+荘重 > souchou\ ;
+心情 > shinjou\ ;
+匹敵 > hitteki\ ;
+部活 > bukatsu\ ;
+野兎 > nousagi\ ;
+永年 > naganen\ ;
+逆行 > gyakkou\ ;
+迅速 > jinsoku\ ;
+後書 > atogaki\ ;
+前膊 > zenpaku\ ;
+金側 > kingawa\ ;
+心性 > shinsei\ ;
+石版 > sekiban\ ;
+述語 > jutsugo\ ;
+碧山 > hekizan\ ;
+沈吟 > chingin\ ;
+重傷 > juushou\ ;
+前脳 > zen''nou\ ;
+年表 > nenpyou\ ;
+前脚 > maeashi\ ;
+歎称 > tanshou\ ;
+出講 > shukkou\ ;
+刺草 > irakusa\ ;
+千振 > senburi\ ;
+進航 > shinkou\ ;
+心得 > kokoroe\ ;
+恒久 > koukyuu\ ;
+只今 > tadaima\ ;
+反則 > hansoku\ ;
+口供 > koukyou\ ;
+強火 > tsuyobi\ ;
+恋仲 > koinaka\ ;
+前肢 > maeashi\ ;
+死球 > shikyuu\ ;
+助番 > sukeban\ ;
+後日 > gonichi\ ;
+配役 > haiyaku\ ;
+恋人 > koibito\ ;
+市長 > shichou\ ;
+怪力 > kairiki\ ;
+征服 > seifuku\ ;
+母様 > kaasama\ ;
+真諦 > shintei\ ;
+弱点 > jakuten\ ;
+連荘 > renchan\ ;
+円顔 > marugao\ ;
+盲進 > moushin\ ;
+忠孝 > chuukou\ ;
+鳥瞰 > choukan\ ;
+幼虫 > youchuu\ ;
+落球 > rakkyuu\ ;
+巨額 > kyogaku\ ;
+割算 > warizan\ ;
+反共 > hankyou\ ;
+残照 > zanshou\ ;
+北東 > hokutou\ ;
+心底 > shintei\ ;
+逸聞 > itsubun\ ;
+酒席 > shuseki\ ;
+石炭 > sekitan\ ;
+氷山 > hyouzan\ ;
+引率 > insotsu\ ;
+延着 > enchaku\ ;
+氷屋 > kooriya\ ;
+危局 > kikyoku\ ;
+凸角 > tokkaku\ ;
+目送 > mokusou\ ;
+徳性 > tokusei\ ;
+直輸 > chokuyu\ ;
+砕氷 > saihyou\ ;
+真言 > shingon\ ;
+建白 > kenpaku\ ;
+武略 > buryaku\ ;
+性分 > shoubun\ ;
+冗長 > jouchou\ ;
+確報 > kakuhou\ ;
+座職 > zashoku\ ;
+口中 > kouchuu\ ;
+眞言 > shingon\ ;
+冷酷 > reikoku\ ;
+殴殺 > ousatsu\ ;
+入魂 > nyuukon\ ;
+志学 > shigaku\ ;
+往日 > oujitsu\ ;
+求婚 > kyuukon\ ;
+反側 > hansoku\ ;
+延発 > enpatsu\ ;
+真西 > manishi\ ;
+弓状 > kyuujou\ ;
+醜名 > shuumei\ ;
+民心 > minshin\ ;
+権高 > kendaka\ ;
+民徳 > mintoku\ ;
+反俗 > hanzoku\ ;
+決勝 > kesshou\ ;
+内陸 > nairiku\ ;
+直路 > chokuro\ ;
+適確 > tekkaku\ ;
+茶釜 > chagama\ ;
+通航 > tsuukou\ ;
+辛酸 > shinsan\ ;
+希釈 > kishaku\ ;
+凶行 > kyoukou\ ;
+毎朝 > maichou\ ;
+白鯨 > hakugei\ ;
+半弓 > hankyuu\ ;
+初荷 > hatsuni\ ;
+北支 > hokushi\ ;
+内閲 > naietsu\ ;
+内閣 > naikaku\ ;
+配属 > haizoku\ ;
+蔵匿 > zoutoku\ ;
+師走 > shiwasu\ ;
+沈倫 > chinrin\ ;
+彰明 > shoumei\ ;
+酒客 > shukaku\ ;
+比日 > hinichi\ ;
+原告 > genkoku\ ;
+白魚 > shirauo\ ;
+半年 > han''nen\ ;
+前納 > zen''nou\ ;
+運筆 > unpitsu\ ;
+鷹匠 > takajou\ ;
+歴然 > rekizen\ ;
+公領 > kouryou\ ;
+近親 > kinshin\ ;
+急使 > kyuushi\ ;
+剽盗 > hyoutou\ ;
+幼若 > youjaku\ ;
+全額 > zengaku\ ;
+標高 > hyoukou\ ;
+即売 > sokubai\ ;
+千度 > chitabi\ ;
+強気 > tsuyoki\ ;
+庁舎 > chousha\ ;
+劇界 > gekikai\ ;
+千年 > chitose\ ;
+劇甚 > gekijin\ ;
+横顔 > yokogao\ ;
+勧業 > kangyou\ ;
+凝視 > gyoushi\ ;
+刺繍 > shishuu\ ;
+瞠目 > doumoku\ ;
+再録 > sairoku\ ;
+真虫 > mamushi\ ;
+鳥獣 > choujuu\ ;
+徹宵 > tesshou\ ;
+卑屈 > hikutsu\ ;
+加熱 > kanetsu\ ;
+再鋳 > saichuu\ ;
+氷塊 > hyoukai\ ;
+卒寿 > sotsuju\ ;
+強欲 > gouyoku\ ;
+協定 > kyoutei\ ;
+兵長 > heichou\ ;
+酌婦 > shakufu\ ;
+砲撃 > hougeki\ ;
+気密 > kimitsu\ ;
+選球 > senkyuu\ ;
+原則 > gensoku\ ;
+共闘 > kyoutou\ ;
+直諫 > chokkan\ ;
+発馬 > hatsuba\ ;
+刺絡 > shiraku\ ;
+全集 > zenshuu\ ;
+卓子 > teiburu\ ;
+直諌 > chokkan\ ;
+直談 > jikidan\ ;
+入電 > nyuuden\ ;
+前章 > zenshou\ ;
+石段 > ishidan\ ;
+武烈 > buretsu\ ;
+直話 > chokuwa\ ;
+磁力 > jiryoku\ ;
+水垢 > mizuaka\ ;
+平臼 > hirausu\ ;
+役所 > yakusho\ ;
+適用 > tekiyou\ ;
+連続 > renzoku\ ;
+強権 > kyouken\ ;
+卵嚢 > ran''nou\ ;
+氏寺 > ujidera\ ;
+入隊 > nyuutai\ ;
+心外 > shingai\ ;
+半宵 > hanshou\ ;
+連絡 > renraku\ ;
+制約 > seiyaku\ ;
+瞑目 > meimoku\ ;
+力点 > rikiten\ ;
+水圧 > suiatsu\ ;
+幻聴 > genchou\ ;
+矯正 > kyousei\ ;
+標題 > hyoudai\ ;
+氷嚢 > hyounou\ ;
+念力 > nenriki\ ;
+直観 > chokkan\ ;
+博奕 > bakuchi\ ;
+直覧 > jikiran\ ;
+千尋 > chihiro\ ;
+全長 > zenchou\ ;
+博大 > hakudai\ ;
+落涙 > rakurui\ ;
+内金 > uchikin\ ;
+登頂 > touchou\ ;
+盗賊 > touzoku\ ;
+博士 > hakushi\ ;
+皇陵 > kouryou\ ;
+発音 > hatsuon\ ;
+入門 > nyuumon\ ;
+毒手 > dokushu\ ;
+石橋 > sekkyou\ ;
+真菌 > shinkin\ ;
+白面 > hakumen\ ;
+徹夜 > tetsuya\ ;
+石槨 > sekkaku\ ;
+快勝 > kaishou\ ;
+切腹 > seppuku\ ;
+忠君 > chuukun\ ;
+蔵人 > kuroudo\ ;
+凶荒 > kyoukou\ ;
+年老 > toshioi\ ;
+苔類 > kokerui\ ;
+発露 > hatsuro\ ;
+兇類 > kyourui\ ;
+途絶 > tozetsu\ ;
+直行 > chokkou\ ;
+力漕 > rikisou\ ;
+占地 > shimeji\ ;
+心地 > kokochi\ ;
+先頃 > senkoro\ ;
+死毒 > shidoku\ ;
+府立 > furitsu\ ;
+師表 > shihyou\ ;
+原作 > gensaku\ ;
+印哲 > intetsu\ ;
+冷評 > reihyou\ ;
+心因 > shin''in\ ;
+出航 > shukkou\ ;
+速算 > sokusan\ ;
+厄前 > yakumae\ ;
+残業 > zangyou\ ;
+荒行 > aragyou\ ;
+内通 > naitsuu\ ;
+勝景 > shoukei\ ;
+瞭然 > ryouzen\ ;
+従属 > juuzoku\ ;
+弦楽 > gengaku\ ;
+劃然 > kakuzen\ ;
+即吟 > sokugin\ ;
+千姫 > senhime\ ;
+忠勤 > chuukin\ ;
+忠勇 > chuuyuu\ ;
+冷覚 > reikaku\ ;
+通算 > tsuusan\ ;
+逆縁 > gyakuen\ ;
+初級 > shokyuu\ ;
+毒性 > dokusei\ ;
+巡遊 > jun''yuu\ ;
+従容 > shouyou\ ;
+南国 > nangoku\ ;
+強暴 > kyoubou\ ;
+幕舎 > bakusha\ ;
+氷原 > hyougen\ ;
+平織 > hiraori\ ;
+応力 > ouryoku\ ;
+勝敗 > shouhai\ ;
+求刑 > kyuukei\ ;
+巻貝 > makigai\ ;
+式次 > shikiji\ ;
+石板 > sekiban\ ;
+写象 > shashou\ ;
+残柱 > zanchuu\ ;
+石材 > sekizai\ ;
+後宮 > koukyuu\ ;
+邦楽 > hougaku\ ;
+剣玉 > kendama\ ;
+北嶺 > hokurei\ ;
+年給 > nenkyuu\ ;
+全量 > zenryou\ ;
+後学 > kougaku\ ;
+還流 > kanryuu\ ;
+即刻 > sokkoku\ ;
+凶聞 > kyoubun\ ;
+民国 > minkoku\ ;
+入金 > nyuukin\ ;
+剛球 > goukyuu\ ;
+半国 > hangoku\ ;
+永別 > eibetsu\ ;
+酷使 > kokushi\ ;
+快作 > kaisaku\ ;
+印刷 > insatsu\ ;
+追納 > tsuinou\ ;
+氷刃 > hyoujin\ ;
+六道 > rokudou\ ;
+北岸 > hokugan\ ;
+前生 > zenshou\ ;
+送籍 > souseki\ ;
+別称 > besshou\ ;
+庭番 > niwaban\ ;
+農薬 > nouyaku\ ;
+近臣 > kinshin\ ;
+遊猟 > yuuryou\ ;
+登録 > touroku\ ;
+占卜 > senboku\ ;
+葉月 > hadzuki\ ;
+巨賊 > kyozoku\ ;
+華燭 > kashoku\ ;
+当惑 > touwaku\ ;
+彫工 > choukou\ ;
+分納 > bun''nou\ ;
+初穂 > hatsuho\ ;
+必勝 > hisshou\ ;
+白銑 > hakusen\ ;
+全速 > zensoku\ ;
+入選 > nyuusen\ ;
+全通 > zentsuu\ ;
+白銅 > hakudou\ ;
+白銀 > hakugin\ ;
+入道 > nyuudou\ ;
+邪曲 > jakyoku\ ;
+卜占 > bokusen\ ;
+工賃 > kouchin\ ;
+氷像 > hyouzou\ ;
+遊牧 > yuuboku\ ;
+週番 > shuuban\ ;
+心労 > shinrou\ ;
+初秋 > shoshuu\ ;
+幾程 > ikuhodo\ ;
+残敵 > zanteki\ ;
+通研 > tsuuken\ ;
+協同 > kyoudou\ ;
+平等 > byoudou\ ;
+過熱 > kanetsu\ ;
+即値 > sokuchi\ ;
+通知 > tsuuchi\ ;
+療養 > ryouyou\ ;
+年端 > toshiha\ ;
+庭球 > teikyuu\ ;
+殉教 > junkyou\ ;
+歌沢 > utazawa\ ;
+勁敵 > keiteki\ ;
+再調 > saichou\ ;
+凝脂 > gyoushi\ ;
+再読 > saidoku\ ;
+求人 > kyuujin\ ;
+功業 > kougyou\ ;
+色黒 > iroguro\ ;
+南北 > nanboku\ ;
+博労 > bakurou\ ;
+破局 > hakyoku\ ;
+単勝 > tanshou\ ;
+正業 > seigyou\ ;
+帯芯 > obishin\ ;
+半周 > hanshuu\ ;
+遡源 > sakugen\ ;
+全身 > zenshin\ ;
+毒害 > dokugai\ ;
+内謁 > naietsu\ ;
+内諾 > naidaku\ ;
+幸福 > koufuku\ ;
+勤恪 > kinkaku\ ;
+出精 > shussei\ ;
+復命 > fukumei\ ;
+若造 > wakazou\ ;
+庚申 > koushin\ ;
+直航 > chokkou\ ;
+店番 > miseban\ ;
+魍魎 > mouryou\ ;
+光量 > kouryou\ ;
+廓清 > kakusei\ ;
+適法 > tekihou\ ;
+優長 > yuuchou\ ;
+忙中 > bouchuu\ ;
+卑劣 > hiretsu\ ;
+利発 > rihatsu\ ;
+復号 > fukugou\ ;
+心像 > shinzou\ ;
+連用 > ren''you\ ;
+気力 > kiryoku\ ;
+氷人 > hyoujin\ ;
+段平 > danbira\ ;
+共販 > kyouhan\ ;
+内証 > naishou\ ;
+内診 > naishin\ ;
+削片 > sakuhen\ ;
+正格 > seikaku\ ;
+強慾 > gouyoku\ ;
+復原 > fukugen\ ;
+発進 > hasshin\ ;
+弔文 > choubun\ ;
+北天 > hokuten\ ;
+北大 > hokudai\ ;
+元金 > motokin\ ;
+内角 > naikaku\ ;
+若輩 > jakuhai\ ;
+益虫 > ekichuu\ ;
+徳利 > tokkuri\ ;
+勁捷 > keishou\ ;
+必修 > hisshuu\ ;
+盲腸 > mouchou\ ;
+徳分 > tokubun\ ;
+蒸器 > mushiki\ ;
+微力 > biryoku\ ;
+匿名 > tokumei\ ;
+庵点 > ioriten\ ;
+延棒 > nobebou\ ;
+常習 > joushuu\ ;
+制球 > seikyuu\ ;
+分秒 > funbyou\ ;
+歓楽 > kanraku\ ;
+水中 > suichuu\ ;
+部局 > bukyoku\ ;
+凍肉 > touniku\ ;
+通用 > tsuuyou\ ;
+草色 > kusairo\ ;
+北境 > hokkyou\ ;
+魂魄 > konpaku\ ;
+徴兵 > chouhei\ ;
+配信 > haishin\ ;
+逗留 > touryuu\ ;
+適正 > tekisei\ ;
+正朝 > seichou\ ;
+正朔 > seisaku\ ;
+全豹 > zenpyou\ ;
+凄腕 > sugoude\ ;
+正服 > seifuku\ ;
+協働 > kyoudou\ ;
+光速 > kousoku\ ;
+勘忍 > kan''nin\ ;
+先進 > senshin\ ;
+先週 > senshuu\ ;
+入貢 > nyuukou\ ;
+酒代 > sakadai\ ;
+白身 > shiromi\ ;
+巫術 > fujutsu\ ;
+速球 > sokkyuu\ ;
+返納 > hen''nou\ ;
+復刻 > fukkoku\ ;
+共謀 > kyoubou\ ;
+軽震 > keishin\ ;
+荒肝 > aragimo\ ;
+出穂 > shussui\ ;
+引換 > hikikae\ ;
+輻輳 > fukusou\ ;
+欲求 > yokkyuu\ ;
+延板 > nobeita\ ;
+真空 > shinkuu\ ;
+眼目 > ganmoku\ ;
+引接 > insetsu\ ;
+色魔 > shikima\ ;
+必中 > hitchuu\ ;
+輪郭 > rinkaku\ ;
+単作 > tansaku\ ;
+省線 > shousen\ ;
+徴候 > choukou\ ;
+弾幕 > danmaku\ ;
+年益 > nen''eki\ ;
+復党 > fukutou\ ;
+光軸 > koujiku\ ;
+廿日 > hatsuka\ ;
+弱志 > jakushi\ ;
+北国 > hokkoku\ ;
+強弓 > goukyuu\ ;
+復元 > fukugen\ ;
+強弁 > kyouben\ ;
+還暦 > kanreki\ ;
+励振 > reishin\ ;
+辞色 > jishoku\ ;
+出社 > shussha\ ;
+草肥 > kusagoe\ ;
+利率 > riritsu\ ;
+発足 > hossoku\ ;
+公評 > kouhyou\ ;
+正教 > seikyou\ ;
+公証 > koushou\ ;
+十六 > juuroku\ ;
+別珍 > betchin\ ;
+協会 > kyoukai\ ;
+先蹴 > senshuu\ ;
+区別 > kubetsu\ ;
+千億 > sen''oku\ ;
+気位 > kigurai\ ;
+弱弟 > jakutei\ ;
+共襟 > tomoeri\ ;
+眼病 > ganbyou\ ;
+六角 > rokkaku\ ;
+卒伍 > sotsugo\ ;
+民俗 > minzoku\ ;
+殯宮 > hinkyuu\ ;
+研学 > kengaku\ ;
+残念 > zan''nen\ ;
+荷積 > nidzumi\ ;
+南中 > nanchuu\ ;
+冷肉 > reiniku\ ;
+落手 > rakushu\ ;
+相続 > souzoku\ ;
+残忍 > zan''nin\ ;
+気付 > kidzuke\ ;
+入試 > nyuushi\ ;
+残心 > zanshin\ ;
+創業 > sougyou\ ;
+凡策 > bonsaku\ ;
+勉強 > benkyou\ ;
+共裏 > tomoura\ ;
+後厄 > atoyaku\ ;
+落成 > rakusei\ ;
+全角 > zenkaku\ ;
+弱年 > jakunen\ ;
+勧学 > kangaku\ ;
+半作 > hansaku\ ;
+得分 > tokubun\ ;
+載録 > sairoku\ ;
+庶流 > shoryuu\ ;
+歴戦 > rekisen\ ;
+川蝦 > kawaebi\ ;
+歌曲 > kakyoku\ ;
+待合 > machiai\ ;
+帰結 > kiketsu\ ;
+石庭 > sekitei\ ;
+卒中 > sotchuu\ ;
+卓上 > takujou\ ;
+削減 > sakugen\ ;
+充足 > juusoku\ ;
+半休 > hankyuu\ ;
+茶腹 > chabara\ ;
+免責 > menseki\ ;
+匹儔 > hitchuu\ ;
+適格 > tekkaku\ ;
+荒縄 > aranawa\ ;
+僻隅 > hekiguu\ ;
+劇暑 > gekisho\ ;
+直経 > chokkei\ ;
+目縁 > mabuchi\ ;
+僻陬 > hekisuu\ ;
+遍歴 > henreki\ ;
+帯紙 > obigami\ ;
+広狭 > koukyou\ ;
+刺激 > shigeki\ ;
+干瓢 > kanpyou\ ;
+鄙劣 > hiretsu\ ;
+辞職 > jishoku\ ;
+償金 > shoukin\ ;
+氏人 > ujihito\ ;
+直系 > chokkei\ ;
+盗聴 > touchou\ ;
+公表 > kouhyou\ ;
+知徳 > chitoku\ ;
+遊歴 > yuureki\ ;
+公衆 > koushuu\ ;
+先負 > senmake\ ;
+知得 > chitoku\ ;
+眼球 > gankyuu\ ;
+帽章 > boushou\ ;
+近称 > kinshou\ ;
+復仇 > fukkyuu\ ;
+発議 > hatsugi\ ;
+出監 > shukkan\ ;
+送球 > soukyuu\ ;
+良風 > ryoufuu\ ;
+分留 > bunryuu\ ;
+勘審 > kanshin\ ;
+適材 > tekizai\ ;
+邀撃 > yougeki\ ;
+連濁 > rendaku\ ;
+歿後 > botsugo\ ;
+真相 > shinsou\ ;
+真直 > massugu\ ;
+役名 > yakumei\ ;
+従僕 > juuboku\ ;
+道楽 > douraku\ ;
+瞬断 > shundan\ ;
+発語 > hatsugo\ ;
+勧奨 > kanshou\ ;
+力投 > rikitou\ ;
+刑獄 > keigoku\ ;
+百計 > hyakkei\ ;
+償還 > shoukan\ ;
+千両 > senryou\ ;
+後先 > atosaki\ ;
+十九 > juukyuu\ ;
+発話 > hatsuwa\ ;
+較量 > kouryou\ ;
+北半 > hokuhan\ ;
+廃業 > haigyou\ ;
+発註 > hatchuu\ ;
+十両 > juuryou\ ;
+力戦 > rikisen\ ;
+十七 > juunana\ ;
+十一 > juuichi\ ;
+引当 > hikiate\ ;
+逸民 > itsumin\ ;
+律儀 > richigi\ ;
+前歴 > zenreki\ ;
+副本 > fukuhon\ ;
+艱難 > kan''nan\ ;
+式微 > shikibi\ ;
+遊楽 > yuuraku\ ;
+軽量 > keiryou\ ;
+軽重 > keichou\ ;
+目算 > mokusan\ ;
+副書 > fukusho\ ;
+出産 > shussan\ ;
+出生 > shussei\ ;
+発覚 > hakkaku\ ;
+進水 > shinsui\ ;
+欲望 > yokubou\ ;
+勇将 > yuushou\ ;
+盟約 > meiyaku\ ;
+相称 > soushou\ ;
+彼処 > kashiko\ ;
+矮小 > waishou\ ;
+睫毛 > matsuge\ ;
+邸宅 > teitaku\ ;
+短小 > tanshou\ ;
+目端 > mehashi\ ;
+勉学 > bengaku\ ;
+鯨肉 > geiniku\ ;
+茉莉 > matsuri\ ;
+優越 > yuuetsu\ ;
+百行 > hyakkou\ ;
+近眼 > chikame\ ;
+菌毒 > kindoku\ ;
+歴年 > rekinen\ ;
+弓師 > yumishi\ ;
+光覚 > koukaku\ ;
+先覚 > senkaku\ ;
+後作 > atosaku\ ;
+巨舶 > kyohaku\ ;
+底流 > teiryuu\ ;
+近目 > chikame\ ;
+発表 > happyou\ ;
+選択 > sentaku\ ;
+欠格 > kekkaku\ ;
+共著 > kyoucho\ ;
+広漠 > koubaku\ ;
+草笛 > kusabue\ ;
+勝報 > shouhou\ ;
+初潮 > shochou\ ;
+助平 > sukebei\ ;
+強大 > kyoudai\ ;
+輪読 > rindoku\ ;
+知将 > chishou\ ;
+内膜 > naimaku\ ;
+強壮 > kyousou\ ;
+役僧 > yakusou\ ;
+劇戦 > gekisen\ ;
+毒刃 > dokujin\ ;
+白蝋 > hakurou\ ;
+帆綱 > hodzuna\ ;
+軍長 > gunchou\ ;
+力役 > rikieki\ ;
+冷笑 > reishou\ ;
+茶粥 > chagayu\ ;
+廻心 > kaishin\ ;
+看病 > kanbyou\ ;
+目礼 > mokurei\ ;
+輸血 > yuketsu\ ;
+勝地 > shouchi\ ;
+初湯 > hatsuyu\ ;
+兇行 > kyoukou\ ;
+凶猛 > kyoumou\ ;
+艦長 > kanchou\ ;
+凍石 > touseki\ ;
+制欲 > seiyoku\ ;
+形勝 > keishou\ ;
+出版 > shuppan\ ;
+弟嫁 > otoyome\ ;
+凶状 > kyoujou\ ;
+樺色 > kabairo\ ;
+退潮 > taichou\ ;
+砂地 > sunachi\ ;
+道教 > doukyou\ ;
+過日 > kajitsu\ ;
+郷党 > kyoutou\ ;
+転針 > tenshin\ ;
+茶箱 > chabako\ ;
+帰着 > kichaku\ ;
+適所 > tekisho\ ;
+僻邑 > hekiyuu\ ;
+歎息 > tansoku\ ;
+苛虐 > kagyaku\ ;
+写経 > shakyou\ ;
+歓心 > kanshin\ ;
+彫像 > chouzou\ ;
+石塔 > sekitou\ ;
+返球 > henkyuu\ ;
+石塀 > ishibei\ ;
+弟姫 > otohime\ ;
+利殖 > rishoku\ ;
+役人 > yakunin\ ;
+帯皮 > obikawa\ ;
+辱知 > jokuchi\ ;
+勧告 > kankoku\ ;
+盲目 > moumoku\ ;
+痛風 > tsuufuu\ ;
+逸材 > itsuzai\ ;
+出炭 > shuttan\ ;
+弱国 > jakkoku\ ;
+幹流 > kanryuu\ ;
+歯学 > shigaku\ ;
+干渉 > kanshou\ ;
+荷物 > nimotsu\ ;
+北上 > hokujou\ ;
+副手 > fukushu\ ;
+剽悍 > hyoukan\ ;
+色里 > irozato\ ;
+転進 > tenshin\ ;
+盤石 > banjaku\ ;
+農相 > noushou\ ;
+遊撃 > yuugeki\ ;
+入船 > nyuusen\ ;
+分溜 > bunryuu\ ;
+入舎 > nyuusha\ ;
+逐次 > chikuji\ ;
+辺疆 > henkyou\ ;
+前方 > maekata\ ;
+白菜 > hakusai\ ;
+割愛 > katsuai\ ;
+適性 > tekisei\ ;
+監督 > kantoku\ ;
+躁鬱 > souutsu\ ;
+研削 > kensaku\ ;
+楽隊 > gakutai\ ;
+正客 > seikaku\ ;
+殉国 > junkoku\ ;
+全能 > zen''nou\ ;
+逆比 > gyakuhi\ ;
+冥福 > meifuku\ ;
+睦月 > mutsuki\ ;
+逸文 > itsubun\ ;
+刻本 > kokuhon\ ;
+正子 > shoushi\ ;
+幽欝 > yuuutsu\ ;
+殺傷 > sasshou\ ;
+内約 > naiyaku\ ;
+強味 > tsuyomi\ ;
+剣戟 > kengeki\ ;
+返照 > henshou\ ;
+艇長 > teichou\ ;
+適当 > tekitou\ ;
+転身 > tenshin\ ;
+分流 > bunryuu\ ;
+権能 > ken''nou\ ;
+凶漢 > kyoukan\ ;
+正嫡 > seiteki\ ;
+欲情 > yokujou\ ;
+座敷 > zashiki\ ;
+楼閣 > roukaku\ ;
+分注 > bunchuu\ ;
+包丁 > houchou\ ;
+制服 > seifuku\ ;
+発芽 > hatsuga\ ;
+進数 > shinsuu\ ;
+出港 > shukkou\ ;
+百般 > hyappan\ ;
+出渠 > shukkyo\ ;
+進攻 > shinkou\ ;
+落城 > rakujou\ ;
+割当 > wariate\ ;
+欲念 > yokunen\ ;
+樟脳 > shounou\ ;
+近火 > chikabi\ ;
+別格 > bekkaku\ ;
+疾風 > shippuu\ ;
+落地 > rakuchi\ ;
+共編 > kyouhen\ ;
+此奴 > koyatsu\ ;
+強勢 > kyousei\ ;
+盗癖 > touheki\ ;
+船長 > senchou\ ;
+研修 > kenshuu\ ;
+刷新 > sasshin\ ;
+殿中 > denchuu\ ;
+強力 > gouriki\ ;
+序曲 > jokyoku\ ;
+床板 > yukaita\ ;
+通有 > tsuuyuu\ ;
+剛愎 > goufuku\ ;
+兵糧 > hyourou\ ;
+遷客 > senkaku\ ;
+強剛 > kyougou\ ;
+盆石 > bonseki\ ;
+欣悦 > kinetsu\ ;
+強制 > kyousei\ ;
+兵粮 > hyourou\ ;
+道心 > doushin\ ;
+典籍 > tenseki\ ;
+道徳 > doutoku\ ;
+病難 > byounan\ ;
+力士 > rikishi\ ;
+車輛 > sharyou\ ;
+車輌 > sharyou\ ;
+兵籍 > heiseki\ ;
+劃定 > kakutei\ ;
+速断 > sokudan\ ;
+車軸 > shajiku\ ;
+内積 > naiseki\ ;
+透析 > touseki\ ;
+冠省 > kanshou\ ;
+剣形 > kengata\ ;
+荒物 > aramono\ ;
+盲爆 > moubaku\ ;
+僻論 > hekiron\ ;
+強兵 > kyouhei\ ;
+公約 > kouyaku\ ;
+段丘 > dankyuu\ ;
+農牧 > nouboku\ ;
+入綿 > irewata\ ;
+横線 > yokosen\ ;
+白羽 > shiraha\ ;
+峻険 > shunken\ ;
+巫祝 > fushuku\ ;
+軸装 > jikusou\ ;
+監獄 > kangoku\ ;
+別時 > betsuji\ ;
+弔問 > choumon\ ;
+勅勘 > chokkan\ ;
+全級 > zenkyuu\ ;
+内福 > naifuku\ ;
+写真 > shashin\ ;
+全納 > zen''nou\ ;
+凝滞 > gyoutai\ ;
+道床 > doushou\ ;
+殊勝 > shushou\ ;
+軍足 > gunsoku\ ;
+高額 > kougaku\ ;
+僻言 > hekigen\ ;
+剣幕 > kenmaku\ ;
+凶歳 > kyousai\ ;
+剛強 > goukyou\ ;
+分業 > bungyou\ ;
+真正 > shinsei\ ;
+転調 > tenchou\ ;
+歌姫 > utahime\ ;
+遠山 > tooyama\ ;
+横糸 > yokoito\ ;
+次式 > jishiki\ ;
+強健 > kyouken\ ;
+遊弋 > yuuyoku\ ;
+遺失 > ishitsu\ ;
+選奨 > senshou\ ;
+僻見 > hekiken\ ;
+花葵 > hanaaoi\ ;
+落命 > rakumei\ ;
+遊廓 > yuukaku\ ;
+軟調 > nanchou\ ;
+樹立 > juritsu\ ;
+魔術 > majutsu\ ;
+凡流 > bonryuu\ ;
+市町 > shichou\ ;
+舌音 > zetsuon\ ;
+初日 > hatsuhi\ ;
+引受 > hikiuke\ ;
+劇変 > gekihen\ ;
+建国 > kenkoku\ ;
+短冊 > tanzaku\ ;
+石像 > sekizou\ ;
+督戦 > tokusen\ ;
+刺戟 > shigeki\ ;
+眺望 > choubou\ ;
+劇壇 > gekidan\ ;
+近況 > kinkyou\ ;
+欠席 > kesseki\ ;
+巨石 > kyoseki\ ;
+前徴 > zenchou\ ;
+歴史 > rekishi\ ;
+白線 > hakusen\ ;
+平服 > heifuku\ ;
+転覆 > tenpuku\ ;
+機略 > kiryaku\ ;
+劇場 > gekijou\ ;
+身近 > midjika\ ;
+優良 > yuuryou\ ;
+逆旅 > gekiryo\ ;
+身辺 > shinpen\ ;
+分析 > bunseki\ ;
+弱体 > jakutai\ ;
+出棺 > shukkan\ ;
+白紙 > hakushi\ ;
+党籍 > touseki\ ;
+横笛 > yokobue\ ;
+発給 > hakkyuu\ ;
+軽薄 > keihaku\ ;
+引力 > inryoku\ ;
+内相 > naishou\ ;
+公称 > koushou\ ;
+円盆 > marubon\ ;
+著作 > chosaku\ ;
+痩身 > soushin\ ;
+花色 > hanairo\ ;
+速成 > sokusei\ ;
+高閣 > koukaku\ ;
+左直 > sachoku\ ;
+前年 > zen''nen\ ;
+送料 > souryou\ ;
+鱗木 > rinboku\ ;
+白粉 > oshiroi\ ;
+内的 > naiteki\ ;
+苦節 > kusetsu\ ;
+白米 > hakumai\ ;
+短信 > tanshin\ ;
+華実 > kajitsu\ ;
+横穴 > yokoana\ ;
+興隆 > kouryuu\ ;
+極道 > gokudou\ ;
+良計 > ryoukei\ ;
+眷族 > kenzoku\ ;
+道学 > dougaku\ ;
+側面 > sokumen\ ;
+出校 > shukkou\ ;
+幣束 > heisoku\ ;
+助勢 > sukezei\ ;
+功名 > koumyou\ ;
+艇身 > teishin\ ;
+過密 > kamitsu\ ;
+劇団 > gekidan\ ;
+努力 > doryoku\ ;
+庭師 > niwashi\ ;
+石亭 > sekitei\ ;
+骨骼 > kokkaku\ ;
+助力 > joryoku\ ;
+廟堂 > byoudou\ ;
+追放 > tsuihou\ ;
+峡間 > kyoukan\ ;
+荒涼 > kouryou\ ;
+死傷 > shishou\ ;
+遊客 > yuukaku\ ;
+入社 > nyuusha\ ;
+橋畔 > kyouhan\ ;
+遊学 > yuugaku\ ;
+歳入 > sainyuu\ ;
+内申 > naishin\ ;
+鳩合 > kyuugou\ ;
+欠字 > ketsuji\ ;
+正北 > seihoku\ ;
+傷跡 > kizuato\ ;
+武力 > buryoku\ ;
+適地 > tekichi\ ;
+功力 > kouriki\ ;
+荒波 > aranami\ ;
+近業 > kingyou\ ;
+真書 > shinsho\ ;
+舶載 > hakusai\ ;
+庵室 > anjitsu\ ;
+凶暴 > kyoubou\ ;
+共益 > kyoueki\ ;
+正副 > seifuku\ ;
+通性 > tsuusei\ ;
+正則 > seisoku\ ;
+前審 > zenshin\ ;
+鬱血 > ukketsu\ ;
+兼用 > ken''you\ ;
+労作 > rousaku\ ;
+通念 > tsuunen\ ;
+凋残 > chouzan\ ;
+冷涼 > reiryou\ ;
+軽舟 > keishuu\ ;
+落体 > rakutai\ ;
+的確 > tekkaku\ ;
+連年 > ren''nen\ ;
+切換 > kirikae\ ;
+痕跡 > konseki\ ;
+干拓 > kantaku\ ;
+死人 > shibito\ ;
+公的 > kouteki\ ;
+建前 > tatemae\ ;
+切掛 > kikkake\ ;
+進展 > shinten\ ;
+欠如 > ketsujo\ ;
+骨頂 > kotchou\ ;
+横着 > ouchaku\ ;
+分掌 > bunshou\ ;
+弁償 > benshou\ ;
+刑戮 > keiriku\ ;
+通弊 > tsuuhei\ ;
+発祥 > hasshou\ ;
+通弁 > tsuuben\ ;
+歴伝 > rekiden\ ;
+幽愁 > yuushuu\ ;
+落人 > ochuudo\ ;
+入監 > nyuukan\ ;
+死中 > shichuu\ ;
+歴任 > rekinin\ ;
+別後 > betsugo\ ;
+歴代 > rekidai\ ;
+歴仕 > rekishi\ ;
+共用 > kyouyou\ ;
+極貧 > gokuhin\ ;
+共産 > kyousan\ ;
+共生 > kyousei\ ;
+権益 > ken''eki\ ;
+幻惑 > genwaku\ ;
+転落 > tenraku\ ;
+幕政 > bakusei\ ;
+県有 > ken''yuu\ ;
+追懐 > tsuikai\ ;
+魚腹 > gyofuku\ ;
+通常 > tsuujou\ ;
+追憶 > tsuioku\ ;
+盛況 > seikyou\ ;
+初心 > shoshin\ ;
+躊躇 > chuucho\ ;
+川獺 > kawauso\ ;
+鬼蓮 > onibasu\ ;
+真摯 > shinshi\ ;
+皆目 > kaimoku\ ;
+白砂 > hakusha\ ;
+通巻 > tsuukan\ ;
+歴世 > rekishi\ ;
+概評 > gaihyou\ ;
+弋人 > yokujin\ ;
+航跡 > kouseki\ ;
+凝望 > gyoubou\ ;
+傾角 > keikaku\ ;
+典獄 > tengoku\ ;
+鯛焼 > taiyaki\ ;
+適合 > tekigou\ ;
+劇剤 > gekizai\ ;
+別席 > besseki\ ;
+元禄 > genroku\ ;
+追想 > tsuisou\ ;
+傾覆 > keifuku\ ;
+魚肉 > gyoniku\ ;
+追悼 > tsuitou\ ;
+入用 > nyuuyou\ ;
+白眼 > hakugan\ ;
+高進 > koushin\ ;
+荒業 > arawaza\ ;
+痛論 > tsuuron\ ;
+刺子 > sashiko\ ;
+正体 > shoutai\ ;
+逆徒 > gyakuto\ ;
+高速 > kousoku\ ;
+山麓 > sanroku\ ;
+幼弱 > youjaku\ ;
+迎春 > geishun\ ;
+白目 > shirome\ ;
+列強 > rekkyou\ ;
+農業 > nougyou\ ;
+切愛 > setsuai\ ;
+候鳥 > kouchou\ ;
+還俗 > genzoku\ ;
+速射 > sokusha\ ;
+迷惑 > meiwaku\ ;
+広州 > koushuu\ ;
+逼塞 > hissoku\ ;
+平復 > heifuku\ ;
+白癬 > hakusen\ ;
+痛言 > tsuugen\ ;
+初巳 > hatsumi\ ;
+疾走 > shissou\ ;
+列座 > retsuza\ ;
+着座 > chakuza\ ;
+共犯 > kyouhan\ ;
+茶殻 > chagara\ ;
+追従 > tsuijuu\ ;
+正中 > seichuu\ ;
+躬行 > kyuukou\ ;
+白痴 > hakuchi\ ;
+凶手 > kyoushu\ ;
+市況 > shikyou\ ;
+列席 > resseki\ ;
+帝業 > teigyou\ ;
+前垂 > maedare\ ;
+眩惑 > genwaku\ ;
+念々 > nen''nen\ ;
+着工 > chakkou\ ;
+割勘 > warikan\ ;
+退庁 > taichou\ ;
+発疹 > hosshin\ ;
+年年 > nen''nen\ ;
+鳥人 > choujin\ ;
+迎撃 > geigeki\ ;
+進塁 > shinrui\ ;
+剣呑 > ken''non\ ;
+冒涜 > boutoku\ ;
+検鏡 > kenkyou\ ;
+先皇 > sen''nou\ ;
+退席 > taiseki\ ;
+別宴 > betsuen\ ;
+週報 > shuuhou\ ;
+割前 > warimae\ ;
+円滑 > enkotsu\ ;
+別宅 > bettaku\ ;
+免疫 > men''eki\ ;
+盛業 > seigyou\ ;
+岡陵 > kouryou\ ;
+割判 > warihan\ ;
+軸線 > jikusen\ ;
+高足 > kousoku\ ;
+優秀 > yuushuu\ ;
+側辺 > sokuhen\ ;
+欠員 > ketsuin\ ;
+棒鱈 > boudara\ ;
+入物 > iremono\ ;
+入牢 > nyuurou\ ;
+真情 > shinjou\ ;
+選任 > sen''nin\ ;
+凶悪 > kyouaku\ ;
+初審 > shoshin\ ;
+番長 > banchou\ ;
+幼少 > youshou\ ;
+草木 > soumoku\ ;
+再注 > saichuu\ ;
+目星 > meboshi\ ;
+真性 > shinsei\ ;
+幽寂 > yuujaku\ ;
+創傷 > soushou\ ;
+側車 > sokusha\ ;
+全焼 > zenshou\ ;
+初子 > hatsugo\ ;
+僚艦 > ryoukan\ ;
+出征 > shussei\ ;
+幽客 > yuukaku\ ;
+分巻 > bunmaki\ ;
+通好 > tsuukou\ ;
+興趣 > kyoushu\ ;
+剣劇 > kengeki\ ;
+癩病 > raibyou\ ;
+通奏 > tsuusou\ ;
+疣足 > iboashi\ ;
+良能 > ryounou\ ;
+載積 > saiseki\ ;
+茶棚 > chadana\ ;
+幼子 > osanago\ ;
+適例 > tekirei\ ;
+検針 > kenshin\ ;
+出廷 > shuttei\ ;
+前哨 > zenshou\ ;
+崩落 > houraku\ ;
+真影 > shin''ei\ ;
+年少 > nenshou\ ;
+幣帛 > heihaku\ ;
+凶弾 > kyoudan\ ;
+速報 > sokuhou\ ;
+甲高 > koudaka\ ;
+白状 > hakujou\ ;
+適任 > tekinin\ ;
+制圧 > seiatsu\ ;
+剛力 > gouriki\ ;
+疾視 > shisshi\ ;
+苦熱 > kunetsu\ ;
+発狂 > hakkyou\ ;
+創作 > sousaku\ ;
+檄文 > gekibun\ ;
+内池 > uchiike\ ;
+目撥 > mebachi\ ;
+偏針 > henshin\ ;
+退学 > taigaku\ ;
+偏重 > henchou\ ;
+年子 > toshigo\ ;
+通報 > tsuuhou\ ;
+傍証 > boushou\ ;
+傍註 > bouchuu\ ;
+出帆 > shuppan\ ;
+剣先 > kensaki\ ;
+先王 > sen''nou\ ;
+凶年 > kyounen\ ;
+真平 > mappira\ ;
+癒着 > yuchaku\ ;
+副使 > fukushi\ ;
+高調 > kouchou\ ;
+莫大 > bakudai\ ;
+前厄 > maeyaku\ ;
+魚竜 > gyoryuu\ ;
+共済 > kyousai\ ;
+兇猛 > kyoumou\ ;
+迷宮 > meikyuu\ ;
+遅刻 > chikoku\ ;
+相承 > soushou\ ;
+高評 > kouhyou\ ;
+幔幕 > manmaku\ ;
+森閑 > shinkan\ ;
+進呈 > shintei\ ;
+辟易 > hekieki\ ;
+兇状 > kyoujou\ ;
+入漁 > nyuugyo\ ;
+直披 > chokuhi\ ;
+発煙 > hatsuen\ ;
+舟行 > shuukou\ ;
+岸辺 > kishibe\ ;
+高角 > koukaku\ ;
+道俗 > douzoku\ ;
+進取 > shinshu\ ;
+膨隆 > bouryuu\ ;
+倍額 > baigaku\ ;
+目指 > mokushi\ ;
+魔窟 > makutsu\ ;
+凝念 > gyounen\ ;
+巡歴 > junreki\ ;
+山頂 > sanchou\ ;
+転籍 > tenseki\ ;
+入湯 > nyuutou\ ;
+幽境 > yuukyou\ ;
+出展 > shutten\ ;
+荒技 > arawaza\ ;
+入港 > nyuukou\ ;
+入渠 > nyuukyo\ ;
+苛烈 > karetsu\ ;
+光照 > koushou\ ;
+迫害 > hakugai\ ;
+八洲 > yashima\ ;
+轟沈 > gouchin\ ;
+県庁 > kenchou\ ;
+凡庸 > bon''you\ ;
+癇癖 > kanpeki\ ;
+色素 > shikiso\ ;
+近年 > kin''nen\ ;
+直感 > chokkan\ ;
+盆暮 > bonkure\ ;
+蹉跌 > satetsu\ ;
+年増 > toshima\ ;
+遊侠 > yuukyou\ ;
+前兆 > zenchou\ ;
+癇症 > kanshou\ ;
+轢死 > rekishi\ ;
+道主 > doushuu\ ;
+凋悴 > chousui\ ;
+僧籍 > souseki\ ;
+道中 > douchuu\ ;
+山陽 > san''you\ ;
+工業 > kougyou\ ;
+山陵 > sanryou\ ;
+欠伸 > kenshin\ ;
+遊休 > yuukyuu\ ;
+痘苗 > toubyou\ ;
+幽囚 > yuushuu\ ;
+週刊 > shuukan\ ;
+庖厨 > houchuu\ ;
+倒閣 > toukaku\ ;
+列国 > rekkoku\ ;
+督励 > tokurei\ ;
+巡業 > jungyou\ ;
+標準 > hyoujun\ ;
+菊判 > kikuban\ ;
+産額 > sangaku\ ;
+週内 > shuunai\ ;
+傾聴 > keichou\ ;
+鰻屋 > unagiya\ ;
+帯心 > obishin\ ;
+入水 > nyuusui\ ;
+制勝 > seishou\ ;
+刻刻 > kokkoku\ ;
+備蓄 > bichiku\ ;
+興行 > kougyou\ ;
+通名 > toorina\ ;
+軍籍 > gunseki\ ;
+船舶 > senpaku\ ;
+連勝 > renshou\ ;
+通史 > tsuushi\ ;
+直後 > chokugo\ ;
+直径 > chokkei\ ;
+直往 > chokuou\ ;
+修養 > shuuyou\ ;
+兇漢 > kyoukan\ ;
+病菌 > byoukin\ ;
+僭称 > senshou\ ;
+出奔 > shuppon\ ;
+辛抱 > shinbou\ ;
+楽聖 > gakusei\ ;
+健診 > kenshin\ ;
+軽症 > keishou\ ;
+船腹 > senpuku\ ;
+白洲 > shirasu\ ;
+凡小 > bonshou\ ;
+前任 > zen''nin\ ;
+巨木 > kyoboku\ ;
+般若 > han''nya\ ;
+傷者 > shousha\ ;
+円曲 > enkyoku\ ;
+尾骨 > bikotsu\ ;
+内服 > naifuku\ ;
+広告 > koukoku\ ;
+芝生 > shibafu\ ;
+通勤 > tsuukin\ ;
+自説 > jisetsu\ ;
+充溢 > juuitsu\ ;
+看客 > kankaku\ ;
+茶托 > chataku\ ;
+真夏 > manatsu\ ;
+凶変 > kyouhen\ ;
+辺幅 > henpuku\ ;
+店内 > ten''nai\ ;
+刺傷 > shishou\ ;
+川柳 > senryuu\ ;
+発注 > hatchuu\ ;
+業腹 > gouhara\ ;
+良種 > ryoushu\ ;
+共棲 > kyousei\ ;
+借金 > shakkin\ ;
+削井 > sakusei\ ;
+異質 > ishitsu\ ;
+序列 > joretsu\ ;
+速写 > sokusha\ ;
+倒錯 > tousaku\ ;
+帝徳 > teitoku\ ;
+通分 > tsuubun\ ;
+追善 > tsuizen\ ;
+兼有 > ken''yuu\ ;
+凶報 > kyouhou\ ;
+検認 > ken''nin\ ;
+荒巻 > aramaki\ ;
+病舎 > byousha\ ;
+舞茸 > maitake\ ;
+梟首 > kyoushu\ ;
+週令 > shuurei\ ;
+准州 > junshuu\ ;
+共栓 > tomosen\ ;
+検証 > kenshou\ ;
+検診 > kenshin\ ;
+常宿 > jouyado\ ;
+信頼 > shinrai\ ;
+光沢 > koutaku\ ;
+帝廟 > teibyou\ ;
+凹地 > kubochi\ ;
+凸坊 > dekobou\ ;
+腱鞘 > kenshou\ ;
+軍票 > gunpyou\ ;
+盛徳 > seitoku\ ;
+生長 > seichou\ ;
+業者 > gyousha\ ;
+軍神 > gunshin\ ;
+入棺 > nyuukan\ ;
+蹈襲 > toushuu\ ;
+進上 > shinjou\ ;
+舟艇 > shuutei\ ;
+幽勝 > yuushou\ ;
+巨擘 > kyohaku\ ;
+舟航 > shuukou\ ;
+横棒 > yokobou\ ;
+制作 > seisaku\ ;
+年収 > nenshuu\ ;
+凋尽 > choujin\ ;
+盗心 > toushin\ ;
+入梅 > nyuubai\ ;
+腓骨 > hikotsu\ ;
+共有 > kyouyuu\ ;
+鰤子 > burikko\ ;
+相客 > aikyaku\ ;
+真因 > shin''in\ ;
+追号 > tsuigou\ ;
+連作 > rensaku\ ;
+兎欠 > toketsu\ ;
+兆民 > choumin\ ;
+別儀 > betsugi\ ;
+入校 > nyuukou\ ;
+良知 > ryouchi\ ;
+連休 > renkyuu\ ;
+切味 > kireaji\ ;
+造作 > zousaku\ ;
+六書 > rokusho\ ;
+着剣 > chakken\ ;
+分周 > bunshuu\ ;
+六曜 > rokuyou\ ;
+八朔 > hassaku\ ;
+刪修 > sanshuu\ ;
+准将 > junshou\ ;
+県境 > kenkyou\ ;
+腕首 > udekubi\ ;
+眼力 > ganriki\ ;
+荒寥 > kouryou\ ;
+通例 > tsuurei\ ;
+岬角 > koukaku\ ;
+標榜 > hyoubou\ ;
+入来 > nyuurai\ ;
+略譜 > ryakufu\ ;
+轢断 > rekidan\ ;
+転用 > ten''you\ ;
+皐月 > satsuki\ ;
+連中 > renchuu\ ;
+元歌 > motouta\ ;
+色白 > irojiro\ ;
+岩角 > iwakado\ ;
+逓信 > teishin\ ;
+庖丁 > houchou\ ;
+茶店 > chamise\ ;
+凝塊 > gyoukai\ ;
+逆光 > gyakkou\ ;
+梟雄 > kyouyuu\ ;
+出品 > shuppin\ ;
+梵鐘 > bonshou\ ;
+船級 > senkyuu\ ;
+農学 > nougaku\ ;
+通人 > tsuujin\ ;
+略語 > ryakugo\ ;
+僭用 > sen''you\ ;
+通交 > tsuukou\ ;
+踊躍 > youyaku\ ;
+茶席 > chaseki\ ;
+追刊 > tsuikan\ ;
+用量 > youryou\ ;
+自虐 > jigyaku\ ;
+鬼畜 > kichiku\ ;
+腐食 > fushoku\ ;
+年内 > nen''nai\ ;
+公敵 > kouteki\ ;
+傍聴 > bouchou\ ;
+左折 > sasetsu\ ;
+公教 > koukyou\ ;
+白桃 > hakutou\ ;
+若枝 > wakaeda\ ;
+出向 > shukkou\ ;
+近国 > kingoku\ ;
+船籍 > senseki\ ;
+元標 > genpyou\ ;
+出口 > deguchi\ ;
+切削 > sessaku\ ;
+略解 > ryakkai\ ;
+刀匠 > toushou\ ;
+発案 > hatsuan\ ;
+産量 > sanryou\ ;
+軟球 > nankyuu\ ;
+別事 > betsuji\ ;
+修錬 > shuuren\ ;
+直奏 > jikisou\ ;
+市庁 > shichou\ ;
+航続 > kouzoku\ ;
+良田 > ryouden\ ;
+足音 > ashioto\ ;
+先棒 > sakibou\ ;
+刈入 > kariire\ ;
+白木 > shiraki\ ;
+標本 > hyouhon\ ;
+皇族 > kouzoku\ ;
+出勤 > shukkin\ ;
+白書 > hakusho\ ;
+辺境 > henkyou\ ;
+送信 > soushin\ ;
+軍用 > gun''you\ ;
+初乳 > shonyuu\ ;
+平信 > heishin\ ;
+百景 > hyakkei\ ;
+荒壁 > arakabe\ ;
+八掛 > hakkake\ ;
+輪業 > ringyou\ ;
+茶寮 > charyou\ ;
+平作 > heisaku\ ;
+盲執 > moushuu\ ;
+甘酒 > amazake\ ;
+光束 > kousoku\ ;
+元栓 > motosen\ ;
+八挺 > hatchou\ ;
+真剣 > shinken\ ;
+凹凸 > outotsu\ ;
+辛子 > karashi\ ;
+凸凹 > totsuou\ ;
+百方 > hyappou\ ;
+平伏 > heifuku\ ;
+内心 > naishin\ ;
+側背 > sokuhai\ ;
+療法 > ryouhou\ ;
+入掛 > irekaku\ ;
+迷信 > meishin\ ;
+凶刃 > kyoujin\ ;
+出典 > shutten\ ;
+出兵 > shuppei\ ;
+白斑 > hakuhan\ ;
+刀傷 > toushou\ ;
+退京 > taikyou\ ;
+白文 > hakubun\ ;
+凸円 > totsuen\ ;
+山賊 > sanzoku\ ;
+眼中 > ganchuu\ ;
+側聞 > sokubun\ ;
+業種 > gyoushu\ ;
+兇暴 > kyoubou\ ;
+八手 > yatsude\ ;
+色物 > iromono\ ;
+元朝 > genchou\ ;
+痳病 > rinbyou\ ;
+元服 > genpuku\ ;
+修道 > shuudou\ ;
+凶党 > kyoutou\ ;
+克明 > kokumei\ ;
+年上 > toshiue\ ;
+信金 > shinkin\ ;
+光明 > koumyou\ ;
+共感 > kyoukan\ ;
+工廠 > koushou\ ;
+高給 > koukyuu\ ;
+保釈 > hoshaku\ ;
+入手 > nyuushu\ ;
+入所 > nyuusho\ ;
+述作 > jussaku\ ;
+内幕 > naimaku\ ;
+機密 > kimitsu\ ;
+踏襲 > toushuu\ ;
+高級 > koukyuu\ ;
+直営 > chokuei\ ;
+直喩 > chokuyu\ ;
+小面 > shoumen\ ;
+尿酸 > nyousan\ ;
+辛夷 > kobushi\ ;
+六情 > rokujou\ ;
+高粱 > kouryan\ ;
+小難 > shounan\ ;
+局部 > kyokubu\ ;
+帝国 > teikoku\ ;
+出会 > shukkai\ ;
+小隊 > shoutai\ ;
+鬱然 > utsuzen\ ;
+共役 > kyoueki\ ;
+出仕 > shusshi\ ;
+傷痕 > shoukon\ ;
+再審 > saishin\ ;
+県内 > ken''nai\ ;
+申請 > shinsei\ ;
+発振 > hasshin\ ;
+尿道 > nyoudou\ ;
+側線 > sokusen\ ;
+公徳 > koutoku\ ;
+少関 > shoukan\ ;
+常勝 > joushou\ ;
+少閑 > shoukan\ ;
+冥境 > meikyou\ ;
+真人 > shinjin\ ;
+白扇 > hakusen\ ;
+小閑 > shoukan\ ;
+冷嘲 > reichou\ ;
+全心 > zenshin\ ;
+痛痒 > tsuuyou\ ;
+馴鹿 > tonakai\ ;
+直参 > jikisan\ ;
+入念 > nyuunen\ ;
+脊髄 > sekizui\ ;
+真下 > mashita\ ;
+円安 > en''yasu\ ;
+尊長 > sonchou\ ;
+公庁 > kouchou\ ;
+返信 > henshin\ ;
+偽筆 > gihitsu\ ;
+相剋 > soukoku\ ;
+師匠 > shishou\ ;
+膝行 > shikkou\ ;
+転注 > tenchuu\ ;
+入廷 > nyuutei\ ;
+俗輩 > zokuhai\ ;
+脚韻 > kyakuin\ ;
+工学 > kougaku\ ;
+凡俗 > bonzoku\ ;
+寒鮒 > kanbuna\ ;
+業病 > goubyou\ ;
+農博 > nouhaku\ ;
+農協 > noukyou\ ;
+兇手 > kyoushu\ ;
+全幅 > zenpuku\ ;
+八州 > yashima\ ;
+全席 > zenseki\ ;
+高禄 > kouroku\ ;
+近作 > kinsaku\ ;
+荷主 > ninushi\ ;
+良港 > ryoukou\ ;
+寸隙 > sungeki\ ;
+凡作 > bonsaku\ ;
+業界 > gyoukai\ ;
+相克 > soukoku\ ;
+目前 > mokuzen\ ;
+岩肌 > iwahada\ ;
+凡人 > bon''nin\ ;
+信販 > shinpan\ ;
+俗趣 > zokushu\ ;
+修論 > shuuron\ ;
+巧妙 > koumyou\ ;
+兵学 > heigaku\ ;
+田螺 > tanishi\ ;
+発心 > hosshin\ ;
+凍傷 > toushou\ ;
+産褥 > sanjoku\ ;
+小銃 > shoujuu\ ;
+良法 > ryouhou\ ;
+兇悪 > kyouaku\ ;
+便通 > bentsuu\ ;
+小鉢 > kobachi\ ;
+若年 > jakunen\ ;
+兇悍 > kyoukan\ ;
+赤飯 > sekihan\ ;
+帝劇 > teigeki\ ;
+共存 > kyouzon\ ;
+省令 > shourei\ ;
+自粛 > jishuku\ ;
+百度 > hyakudo\ ;
+内壁 > naiheki\ ;
+修訂 > shuutei\ ;
+免役 > men''eki\ ;
+疾病 > shippei\ ;
+元悪 > gen''aku\ ;
+疼痛 > toutsuu\ ;
+害鳥 > gaichou\ ;
+傍白 > bouhaku\ ;
+検索 > kensaku\ ;
+良民 > ryoumin\ ;
+全寮 > zenryou\ ;
+入居 > nyuukyo\ ;
+甲虫 > kouchuu\ ;
+躁病 > soubyou\ ;
+登庁 > touchou\ ;
+全容 > zen''you\ ;
+入射 > nyuusha\ ;
+田虫 > tamushi\ ;
+盲信 > moushin\ ;
+白帆 > shiraho\ ;
+高直 > koujiki\ ;
+膿胸 > noukyou\ ;
+尊重 > sonchou\ ;
+生血 > namachi\ ;
+入寇 > nyuukou\ ;
+全学 > zengaku\ ;
+兇弾 > kyoudan\ ;
+入定 > nyuujou\ ;
+転業 > tengyou\ ;
+屈託 > kuttaku\ ;
+直伝 > jikiden\ ;
+茶匙 > chasaji\ ;
+自筆 > jihitsu\ ;
+苗床 > naedoko\ ;
+赤面 > sekimen\ ;
+辛労 > shinrou\ ;
+兄弟 > kyoudai\ ;
+俊賢 > shunken\ ;
+公娼 > koushou\ ;
+内圧 > naiatsu\ ;
+痛点 > tsuuten\ ;
+直交 > chokkou\ ;
+先年 > sen''nen\ ;
+疱疹 > houshin\ ;
+俗謡 > zokuyou\ ;
+鮮少 > senshou\ ;
+小道 > komichi\ ;
+自立 > jiritsu\ ;
+修行 > shugyou\ ;
+内国 > naikoku\ ;
+俗諺 > zokugen\ ;
+膏薬 > kouyaku\ ;
+至福 > shifuku\ ;
+寺銭 > terasen\ ;
+農作 > nousaku\ ;
+俗諦 > zokutai\ ;
+小逕 > shoukei\ ;
+俊豪 > shungou\ ;
+俗論 > zokuron\ ;
+症状 > shoujou\ ;
+俗談 > zokudan\ ;
+導通 > doutsuu\ ;
+魚族 > gyozoku\ ;
+入婿 > irimuko\ ;
+臼砲 > kyuuhou\ ;
+僻村 > hekison\ ;
+鮨屋 > sushiya\ ;
+健祥 > kenshou\ ;
+寄食 > kishoku\ ;
+白山 > hakusan\ ;
+病状 > byoujou\ ;
+元年 > gan''nen\ ;
+小農 > shounou\ ;
+席上 > sekijou\ ;
+荒事 > aragoto\ ;
+監修 > kanshuu\ ;
+偸盗 > chuutou\ ;
+僻書 > hekisho\ ;
+留置 > ryuuchi\ ;
+辛党 > karatou\ ;
+格闘 > kakutou\ ;
+番組 > bangumi\ ;
+俗言 > zokugen\ ;
+魂柱 > konchuu\ ;
+輪廓 > rinkaku\ ;
+百官 > hyakkan\ ;
+作風 > sakufuu\ ;
+馬食 > bashoku\ ;
+艦橋 > kankyou\ ;
+標定 > hyoutei\ ;
+膨脹 > bouchou\ ;
+倖臣 > koushin\ ;
+横奪 > oudatsu\ ;
+白子 > shiroko\ ;
+巨商 > kyoshou\ ;
+再告 > saikoku\ ;
+駅長 > ekichou\ ;
+軍楽 > gungaku\ ;
+山芋 > yamaimo\ ;
+帝京 > teikyou\ ;
+輻射 > fukusha\ ;
+入声 > nisshou\ ;
+軽捷 > keishou\ ;
+密雲 > mitsuun\ ;
+傾注 > keichuu\ ;
+入墨 > irezumi\ ;
+密集 > misshuu\ ;
+胸間 > kyoukan\ ;
+色柄 > irogara\ ;
+背高 > seitaka\ ;
+将軍 > shougun\ ;
+概況 > gaikyou\ ;
+全域 > zen''iki\ ;
+芳心 > houshin\ ;
+入場 > nyuujou\ ;
+盗作 > tousaku\ ;
+光学 > kougaku\ ;
+山腹 > sanpuku\ ;
+先学 > sengaku\ ;
+脚部 > kyakubu\ ;
+公国 > koukoku\ ;
+入城 > nyuujou\ ;
+胴長 > dounaga\ ;
+橋台 > kyoudai\ ;
+僧服 > soufuku\ ;
+馘首 > kakushu\ ;
+再勝 > saishou\ ;
+腹蔵 > fukuzou\ ;
+良材 > ryouzai\ ;
+癇性 > kanshou\ ;
+低額 > teigaku\ ;
+魚拓 > gyotaku\ ;
+輔弼 > hohitsu\ ;
+全国 > zengoku\ ;
+入坑 > nyuukou\ ;
+辛亥 > shingai\ ;
+良書 > ryousho\ ;
+宰領 > sairyou\ ;
+白太 > shirata\ ;
+白夜 > byakuya\ ;
+蹴爪 > kedzume\ ;
+巨匠 > kyoshou\ ;
+赤錆 > akasabi\ ;
+入団 > nyuudan\ ;
+工博 > kouhaku\ ;
+兄嫁 > aniyome\ ;
+差別 > sabetsu\ ;
+冪乗 > bekijou\ ;
+軍服 > gunpuku\ ;
+工匠 > koushou\ ;
+甲胄 > katchuu\ ;
+自発 > jihatsu\ ;
+畢竟 > hikkyou\ ;
+校閲 > kouetsu\ ;
+疎略 > soryaku\ ;
+岩礁 > ganshou\ ;
+校長 > kouchou\ ;
+傷歎 > shoutan\ ;
+色文 > irobumi\ ;
+皇国 > koukoku\ ;
+首領 > shuryou\ ;
+赤金 > akagane\ ;
+驕肆 > kyoushi\ ;
+学齢 > gakurei\ ;
+共同 > kyoudou\ ;
+宵闇 > yoiyami\ ;
+小論 > shouron\ ;
+兇変 > kyouhen\ ;
+体長 > taichou\ ;
+停留 > teiryuu\ ;
+市中 > shichuu\ ;
+岩石 > ganseki\ ;
+腹芸 > haragei\ ;
+公告 > koukoku\ ;
+白地 > shiroji\ ;
+核酸 > kakusan\ ;
+六合 > rikugou\ ;
+船歌 > funauta\ ;
+対象 > taishou\ ;
+騰落 > touraku\ ;
+検疫 > ken''eki\ ;
+腐蝕 > fushoku\ ;
+定額 > teigaku\ ;
+偏癖 > henpeki\ ;
+小計 > shoukei\ ;
+内傷 > naishou\ ;
+典則 > tensoku\ ;
+充塞 > juusoku\ ;
+棒縞 > boujima\ ;
+六十 > rokujuu\ ;
+赤道 > sekidou\ ;
+併進 > heishin\ ;
+生肉 > seiniku\ ;
+植皮 > shokuhi\ ;
+実需 > jitsuju\ ;
+免囚 > menshuu\ ;
+駆逐 > kuchiku\ ;
+駐車 > chuusha\ ;
+株金 > kabukin\ ;
+自玉 > jigyoku\ ;
+宿銭 > yadosen\ ;
+首長 > shuchou\ ;
+腹背 > fukuhai\ ;
+全勝 > zenshou\ ;
+柱頭 > chuutou\ ;
+痛棒 > tsuubou\ ;
+病死 > byoushi\ ;
+傍流 > bouryuu\ ;
+射角 > shakaku\ ;
+客間 > kyakuma\ ;
+工作 > kousaku\ ;
+儀式 > gishiki\ ;
+車掌 > shashou\ ;
+田紳 > denshin\ ;
+傍注 > bouchuu\ ;
+対訳 > taiyaku\ ;
+兼修 > kenshuu\ ;
+赤軍 > sekigun\ ;
+脂身 > aburami\ ;
+峡湾 > kyouwan\ ;
+軍拡 > gunkaku\ ;
+百味 > hyakumi\ ;
+対角 > taikaku\ ;
+柱面 > chuumen\ ;
+巨乳 > kyonyuu\ ;
+公共 > koukyou\ ;
+共働 > kyoudou\ ;
+画筆 > gahitsu\ ;
+供覧 > kyouran\ ;
+寸評 > sunpyou\ ;
+共催 > kyousai\ ;
+内中 > uchijuu\ ;
+容量 > youryou\ ;
+腫脹 > shuchou\ ;
+密通 > mittsuu\ ;
+舟歌 > funauta\ ;
+倶発 > guhatsu\ ;
+兼任 > ken''nin\ ;
+公僕 > kouboku\ ;
+入冦 > nyuukou\ ;
+体量 > tairyou\ ;
+公傷 > koushou\ ;
+宗門 > shuumon\ ;
+臆病 > okubyou\ ;
+全優 > zen''yuu\ ;
+軽少 > keishou\ ;
+入党 > nyuutou\ ;
+侑觴 > yuushou\ ;
+偏狭 > henkyou\ ;
+略画 > ryakuga\ ;
+俸給 > houkyuu\ ;
+宿運 > shukuun\ ;
+船板 > funaita\ ;
+俊英 > shun''ei\ ;
+芳墨 > houboku\ ;
+偏狂 > henkyou\ ;
+百匁 > hyakume\ ;
+生絹 > suzushi\ ;
+軟弱 > nanjaku\ ;
+休館 > kyuukan\ ;
+密輸 > mitsuyu\ ;
+党則 > tousoku\ ;
+修繕 > shuuzen\ ;
+就航 > shuukou\ ;
+休養 > kyuuyou\ ;
+例証 > reishou\ ;
+榴弾 > ryuudan\ ;
+山積 > sanseki\ ;
+舶来 > hakurai\ ;
+山稜 > sanryou\ ;
+赤貧 > sekihin\ ;
+修練 > shuuren\ ;
+英傑 > eiketsu\ ;
+極暑 > gokusho\ ;
+病棟 > byoutou\ ;
+肌骨 > kikotsu\ ;
+良性 > ryousei\ ;
+足芸 > ashigei\ ;
+腸線 > chousen\ ;
+僧形 > sougyou\ ;
+輪唱 > rinshou\ ;
+偉物 > eramono\ ;
+白刃 > hakujin\ ;
+公休 > koukyuu\ ;
+侮蔑 > bubetsu\ ;
+若党 > wakatou\ ;
+病根 > byoukon\ ;
+会集 > kaishuu\ ;
+屑糸 > kuzuito\ ;
+梟罪 > kyouzai\ ;
+若僧 > wakazou\ ;
+白兵 > hakuhei\ ;
+先勝 > senshou\ ;
+低速 > teisoku\ ;
+入会 > nyuukai\ ;
+屑米 > kuzumai\ ;
+軽妙 > keimyou\ ;
+自滅 > jimetsu\ ;
+休電 > kyuuden\ ;
+島根 > shimane\ ;
+学風 > gakufuu\ ;
+僵屍 > kyonshi\ ;
+八丁 > hatchou\ ;
+先刻 > senkoku\ ;
+肉饅 > nikuman\ ;
+併読 > heidoku\ ;
+馬跳 > umatobi\ ;
+転属 > tenzoku\ ;
+赤誠 > sekisei\ ;
+良師 > ryoushi\ ;
+会長 > kaichou\ ;
+兇刃 > kyoujin\ ;
+定量 > teiryou\ ;
+良工 > ryoukou\ ;
+格言 > kakugen\ ;
+駁論 > bakuron\ ;
+元凶 > genkyou\ ;
+肉類 > nikurui\ ;
+臼歯 > kyuushi\ ;
+疼木 > hiiragi\ ;
+転宅 > tentaku\ ;
+栄達 > eitatsu\ ;
+転学 > tengaku\ ;
+発信 > hasshin\ ;
+休閑 > kyuukan\ ;
+舞曲 > bukyoku\ ;
+自活 > jikatsu\ ;
+俸禄 > houroku\ ;
+俸祿 > houroku\ ;
+若人 > wakoudo\ ;
+楽才 > gakusai\ ;
+密議 > mitsugi\ ;
+興業 > kougyou\ ;
+元兇 > genkyou\ ;
+香車 > kyousha\ ;
+俗累 > zokurui\ ;
+学際 > gakusai\ ;
+停泊 > teihaku\ ;
+楊柳 > youryuu\ ;
+白人 > hakujin\ ;
+信管 > shinkan\ ;
+小舅 > kojuuto\ ;
+自決 > jiketsu\ ;
+百事 > hyakuji\ ;
+岩漿 > ganshou\ ;
+理髪 > rihatsu\ ;
+密語 > mitsugo\ ;
+兆候 > choukou\ ;
+胸襟 > kyoukin\ ;
+高木 > kouboku\ ;
+尿管 > nyoukan\ ;
+鬱屈 > ukkutsu\ ;
+軍属 > gunzoku\ ;
+痛憤 > tsuufun\ ;
+山番 > yamaban\ ;
+楽想 > gakusou\ ;
+自殺 > jisatsu\ ;
+小脳 > shounou\ ;
+優勝 > yuushou\ ;
+脱臼 > dakkyuu\ ;
+首足 > shusoku\ ;
+脱臭 > dasshuu\ ;
+軍将 > gunshou\ ;
+傷悴 > shousui\ ;
+偏流 > henryuu\ ;
+脳膜 > noumaku\ ;
+寒行 > kangyou\ ;
+先任 > sen''nin\ ;
+小胞 > shouhou\ ;
+痛感 > tsuukan\ ;
+現高 > gendaka\ ;
+小胆 > shoutan\ ;
+臣民 > shinmin\ ;
+軍容 > gun''you\ ;
+鬼婆 > onibaba\ ;
+作詩 > sakushi\ ;
+作詞 > sakushi\ ;
+脱腸 > datchou\ ;
+宅配 > takuhai\ ;
+軍学 > gungaku\ ;
+校註 > kouchuu\ ;
+休錘 > kyuusui\ ;
+田畑 > denpata\ ;
+傷忰 > shousui\ ;
+少者 > shousha\ ;
+痛恨 > tsuukon\ ;
+至極 > shigoku\ ;
+極悪 > gokuaku\ ;
+安逸 > an''itsu\ ;
+体調 > taichou\ ;
+僻地 > hekichi\ ;
+僻在 > hekizai\ ;
+定跡 > jouseki\ ;
+高教 > koukyou\ ;
+業態 > gyoutai\ ;
+輪作 > rinsaku\ ;
+痛快 > tsuukai\ ;
+岩波 > iwanami\ ;
+峻拒 > shunkyo\ ;
+低調 > teichou\ ;
+良妻 > ryousai\ ;
+刻々 > kokkoku\ ;
+臆測 > okusoku\ ;
+作製 > sakusei\ ;
+産痛 > santsuu\ ;
+職階 > shokkai\ ;
+良好 > ryoukou\ ;
+畝溝 > unemizo\ ;
+極微 > kyokubi\ ;
+果食 > kashoku\ ;
+桑苗 > soubyou\ ;
+膜状 > makujou\ ;
+甘皮 > amakawa\ ;
+赤蕪 > akakabu\ ;
+山犬 > yamainu\ ;
+俊童 > shundou\ ;
+楽師 > gakushi\ ;
+桑色 > kuwairo\ ;
+腕章 > wanshou\ ;
+馬術 > bajutsu\ ;
+病態 > byoutai\ ;
+腕立 > udetate\ ;
+柩車 > kyuusha\ ;
+腹癒 > haraise\ ;
+舞扇 > maiougi\ ;
+僅少 > kinshou\ ;
+寮舎 > ryousha\ ;
+極度 > kyokudo\ ;
+偕楽 > kairaku\ ;
+球面 > kyuumen\ ;
+小編 > shouhen\ ;
+芳信 > houshin\ ;
+病患 > byoukan\ ;
+画然 > kakuzen\ ;
+球電 > kyuuden\ ;
+客語 > kyakugo\ ;
+枕頭 > chintou\ ;
+船幅 > senpuku\ ;
+極左 > kyokusa\ ;
+瓢箪 > hyoutan\ ;
+芸事 > geigoto\ ;
+植樹 > shokuju\ ;
+実話 > jitsuwa\ ;
+疾患 > shikkan\ ;
+骨格 > kokkaku\ ;
+桃色 > momoiro\ ;
+検校 > kengyou\ ;
+実証 > jisshou\ ;
+今頃 > imagoro\ ;
+腰痛 > youtsuu\ ;
+小粒 > kotsubu\ ;
+業師 > wazashi\ ;
+花代 > hanadai\ ;
+客観 > kyakkan\ ;
+俗眼 > zokugan\ ;
+使臣 > shishin\ ;
+寒菊 > kangiku\ ;
+休載 > kyuusai\ ;
+尻目 > shirime\ ;
+定評 > teihyou\ ;
+休転 > kyuuten\ ;
+病弊 > byouhei\ ;
+傷害 > shougai\ ;
+定訳 > teiyaku\ ;
+軍国 > gunkoku\ ;
+魔力 > maryoku\ ;
+検束 > kensoku\ ;
+居留 > kyoryuu\ ;
+軽傷 > keishou\ ;
+館長 > kanchou\ ;
+岩棚 > iwadana\ ;
+仏陀 > butsuda\ ;
+害虫 > gaichuu\ ;
+就眠 > shuumin\ ;
+脇能 > wakinou\ ;
+億兆 > okuchou\ ;
+病巣 > byousou\ ;
+赤膚 > akahada\ ;
+賞金 > shoukin\ ;
+小童 > kowappa\ ;
+仏閣 > bukkaku\ ;
+俐発 > rihatsu\ ;
+仏間 > butsuma\ ;
+赤腹 > akahara\ ;
+軽信 > keishin\ ;
+腎石 > jinseki\ ;
+島庁 > touchou\ ;
+良品 > ryouhin\ ;
+俗用 > zokuyou\ ;
+胃袋 > ibukuro\ ;
+軽佻 > keichou\ ;
+峻嶺 > shunrei\ ;
+峻嶮 > shunken\ ;
+年々 > nen''nen\ ;
+儒仏 > jubutsu\ ;
+魅力 > miryoku\ ;
+高徳 > koutoku\ ;
+貸間 > kashima\ ;
+胸臆 > kyouoku\ ;
+魚信 > gyoshin\ ;
+腕白 > wanpaku\ ;
+赤肌 > akahada\ ;
+胸腺 > kyousen\ ;
+京風 > kyoufuu\ ;
+胸腔 > kyoukou\ ;
+楽天 > rakuten\ ;
+良友 > ryouyuu\ ;
+脱穀 > dakkoku\ ;
+班長 > hanchou\ ;
+伝誦 > denshou\ ;
+尊称 > sonshou\ ;
+偃月 > engetsu\ ;
+修煉 > shuuren\ ;
+対策 > taisaku\ ;
+小社 > shousha\ ;
+楽士 > gakushi\ ;
+借款 > shakkan\ ;
+楽壇 > gakudan\ ;
+便益 > ben''eki\ ;
+会読 > kaidoku\ ;
+棺桶 > kan''oke\ ;
+起結 > kiketsu\ ;
+航宙 > kouchuu\ ;
+低落 > teiraku\ ;
+病害 > byougai\ ;
+偉方 > eragata\ ;
+梟猛 > kyoumou\ ;
+界標 > kaihyou\ ;
+賃銭 > chinsen\ ;
+佞臣 > neishin\ ;
+余色 > yoshoku\ ;
+飲食 > inshoku\ ;
+僚友 > ryouyuu\ ;
+休講 > kyuukou\ ;
+賃銀 > chingin\ ;
+学資 > gakushi\ ;
+町民 > choumin\ ;
+傾国 > keikoku\ ;
+交響 > koukyou\ ;
+良剤 > ryouzai\ ;
+係留 > keiryuu\ ;
+男気 > otokogi\ ;
+小知 > shouchi\ ;
+対称 > taishou\ ;
+賃金 > chingin\ ;
+楓属 > fuuzoku\ ;
+胃薬 > igusuri\ ;
+仙郷 > senkyou\ ;
+栗色 > kuriiro\ ;
+購読 > koudoku\ ;
+車力 > shariki\ ;
+楽団 > gakudan\ ;
+臥所 > fushido\ ;
+体臭 > taishuu\ ;
+馬脚 > bakyaku\ ;
+侍立 > jiritsu\ ;
+寸秒 > sunbyou\ ;
+甲殻 > koukaku\ ;
+起筆 > kihitsu\ ;
+駐米 > chuubei\ ;
+乾魚 > hoshiuo\ ;
+至急 > shikyuu\ ;
+肝要 > kan''you\ ;
+生涯 > shougai\ ;
+会衆 > kaishuu\ ;
+森林 > shinrin\ ;
+赤組 > akagumi\ ;
+転任 > ten''nin\ ;
+格納 > kakunou\ ;
+高尚 > koushou\ ;
+小癪 > koshaku\ ;
+赤紙 > akagami\ ;
+驚歎 > kyoutan\ ;
+起立 > kiritsu\ ;
+傷嘆 > shoutan\ ;
+作者 > sakusha\ ;
+食餌 > shokuji\ ;
+腸満 > chouman\ ;
+仲買 > nakagai\ ;
+病変 > byouhen\ ;
+僥倖 > gyoukou\ ;
+賠責 > baiseki\ ;
+僧俗 > souzoku\ ;
+賞賛 > shousan\ ;
+尊皇 > son''nou\ ;
+玄麦 > genbaku\ ;
+脈管 > myakkan\ ;
+枢軸 > suujiku\ ;
+舞姫 > maihime\ ;
+痛嘆 > tsuutan\ ;
+尨犬 > mukuinu\ ;
+棟梁 > touryou\ ;
+家職 > kashoku\ ;
+根粒 > konryuu\ ;
+屠殺 > tosatsu\ ;
+賊軍 > zokugun\ ;
+腸液 > choueki\ ;
+舎宅 > shataku\ ;
+宸翰 > shinkan\ ;
+身命 > shinmei\ ;
+疫学 > ekigaku\ ;
+小町 > komachi\ ;
+小男 > kootoko\ ;
+腰湯 > koshiyu\ ;
+射的 > shateki\ ;
+小用 > shouyou\ ;
+脳症 > noushou\ ;
+脳病 > noubyou\ ;
+小生 > shousei\ ;
+自律 > jiritsu\ ;
+山椒 > sanshou\ ;
+佳節 > kasetsu\ ;
+修法 > shuuhou\ ;
+今週 > konshuu\ ;
+聖週 > seishuu\ ;
+低翼 > teiyoku\ ;
+色事 > irogoto\ ;
+柿色 > kakiiro\ ;
+環礁 > kanshou\ ;
+田楽 > dengaku\ ;
+今迄 > imamade\ ;
+乾飯 > hoshiii\ ;
+良人 > ryoujin\ ;
+宿縁 > shukuen\ ;
+臣従 > shinjuu\ ;
+側射 > sokusha\ ;
+腹水 > fukusui\ ;
+臨床 > rinshou\ ;
+跋渉 > basshou\ ;
+侵犯 > shinpan\ ;
+対症 > taishou\ ;
+乳香 > nyuukou\ ;
+仮説 > kasetsu\ ;
+専用 > sen''you\ ;
+町村 > chouson\ ;
+倒木 > touboku\ ;
+偏心 > henshin\ ;
+臨席 > rinseki\ ;
+賞詞 > shoushi\ ;
+架設 > kasetsu\ ;
+修正 > shuusei\ ;
+木魚 > mokugyo\ ;
+聴講 > choukou\ ;
+催告 > saikoku\ ;
+高声 > takagoe\ ;
+併称 > heishou\ ;
+交錯 > kousaku\ ;
+概則 > gaisoku\ ;
+仮設 > kasetsu\ ;
+耐震 > taishin\ ;
+栄職 > eishoku\ ;
+仏跡 > busseki\ ;
+供用 > kyouyou\ ;
+貫通 > kantsuu\ ;
+聖蹟 > seiseki\ ;
+島国 > tougoku\ ;
+尊王 > son''nou\ ;
+産業 > sangyou\ ;
+腰気 > koshike\ ;
+車中 > shachuu\ ;
+仰視 > gyoushi\ ;
+傷創 > shousou\ ;
+車両 > sharyou\ ;
+食間 > shokkan\ ;
+仮親 > karioya\ ;
+育苗 > ikubyou\ ;
+官能 > kan''nou\ ;
+賃貸 > chintai\ ;
+岡惚 > okabore\ ;
+聖跡 > seiseki\ ;
+枝豆 > edamame\ ;
+村長 > sonchou\ ;
+聴許 > choukyo\ ;
+朝鮮 > chousen\ ;
+生業 > nariwai\ ;
+代読 > daidoku\ ;
+現象 > genshou\ ;
+乳頭 > nyuutou\ ;
+小片 > shouhen\ ;
+実習 > jisshuu\ ;
+仲裁 > chuusai\ ;
+小爪 > kodzume\ ;
+疎密 > somitsu\ ;
+聴解 > choukai\ ;
+貧農 > hin''nou\ ;
+代診 > daishin\ ;
+聴視 > choushi\ ;
+腺様 > sen''you\ ;
+属格 > zokkaku\ ;
+傷兵 > shouhei\ ;
+楽典 > gakuten\ ;
+画数 > kakusuu\ ;
+低級 > teikyuu\ ;
+膺懲 > youchou\ ;
+倍旧 > baikyuu\ ;
+高圧 > kouatsu\ ;
+肝葉 > kan''you\ ;
+町政 > chousei\ ;
+修業 > shugyou\ ;
+極刑 > kyokkei\ ;
+岩床 > ganshou\ ;
+寮生 > ryousei\ ;
+病名 > byoumei\ ;
+東進 > toushin\ ;
+校章 > koushou\ ;
+梶棒 > kajibou\ ;
+極冠 > kyokkan\ ;
+極内 > gokunai\ ;
+病友 > byouyuu\ ;
+骰子 > saikoro\ ;
+岡引 > okahiki\ ;
+傴僂 > semushi\ ;
+停学 > teigaku\ ;
+朱鞘 > shuzaya\ ;
+実績 > jisseki\ ;
+病原 > byougen\ ;
+極光 > kyokkou\ ;
+亨通 > koutsuu\ ;
+本領 > honryou\ ;
+人跡 > hitoato\ ;
+付設 > fusetsu\ ;
+首級 > shukyuu\ ;
+供物 > kumotsu\ ;
+峻厳 > shungen\ ;
+象限 > shougen\ ;
+身体 > shintai\ ;
+至妙 > shimyou\ ;
+甘栗 > amaguri\ ;
+仕訳 > shiwake\ ;
+興国 > koukoku\ ;
+交通 > koutsuu\ ;
+躍動 > yakudou\ ;
+代表 > daihyou\ ;
+亢進 > koushin\ ;
+病勢 > byousei\ ;
+棲息 > seisoku\ ;
+背約 > haiyaku\ ;
+容積 > youseki\ ;
+仏語 > butsugo\ ;
+腰椎 > youtsui\ ;
+身代 > shindai\ ;
+玉音 > gyokuon\ ;
+寓目 > guumoku\ ;
+来週 > raishuu\ ;
+船側 > sensoku\ ;
+本震 > honshin\ ;
+体積 > taiseki\ ;
+木靴 > kigutsu\ ;
+香箱 > koubako\ ;
+休航 > kyuukou\ ;
+朝風 > asakaze\ ;
+対照 > taishou\ ;
+舷側 > gensoku\ ;
+根瘤 > konryuu\ ;
+岩山 > iwayama\ ;
+楽人 > gakujin\ ;
+豆類 > mamerui\ ;
+官給 > kankyuu\ ;
+玉露 > gyokuro\ ;
+身上 > shinjou\ ;
+船便 > funabin\ ;
+催促 > saisoku\ ;
+生新 > seishin\ ;
+脳漿 > noushou\ ;
+脹満 > chouman\ ;
+超然 > chouzen\ ;
+伝習 > denshuu\ ;
+留年 > ryuunen\ ;
+贅肉 > zeiniku\ ;
+高台 > takadai\ ;
+岩室 > iwamuro\ ;
+俵数 > hyousuu\ ;
+朔風 > sakufuu\ ;
+学芸 > gakugei\ ;
+首章 > shushou\ ;
+男手 > otokode\ ;
+梅毒 > baidoku\ ;
+植字 > shokuji\ ;
+朝靄 > asamoya\ ;
+屈服 > kuppuku\ ;
+朝霧 > asagiri\ ;
+信条 > shinjou\ ;
+翰長 > kanchou\ ;
+肌色 > hadairo\ ;
+学舎 > gakusha\ ;
+信望 > shinbou\ ;
+修整 > shuusei\ ;
+信書 > shinsho\ ;
+極上 > gokujou\ ;
+症候 > shoukou\ ;
+休耕 > kyuukou\ ;
+船中 > senchuu\ ;
+伸筋 > shinkin\ ;
+肉色 > nikuiro\ ;
+修改 > shuukai\ ;
+岸壁 > ganpeki\ ;
+完納 > kan''nou\ ;
+人証 > ninshou\ ;
+乾酪 > kanraku\ ;
+症例 > shourei\ ;
+略字 > ryakuji\ ;
+膨張 > bouchou\ ;
+屋敷 > yashiki\ ;
+修撰 > shuusen\ ;
+伏罪 > fukuzai\ ;
+密画 > mitsuga\ ;
+病体 > byoutai\ ;
+考量 > kouryou\ ;
+餡蜜 > anmitsu\ ;
+官窯 > kan''you\ ;
+仔虫 > shichuu\ ;
+耽読 > tandoku\ ;
+小水 > shousui\ ;
+肉腫 > nikushu\ ;
+俗書 > zokusho\ ;
+老醜 > roushuu\ ;
+驕慢 > kyouman\ ;
+倔強 > kukkyou\ ;
+病人 > byounin\ ;
+偏執 > henshuu\ ;
+俎板 > manaita\ ;
+乳酸 > nyuusan\ ;
+学者 > gakusha\ ;
+宰相 > saishou\ ;
+主領 > shuryou\ ;
+岩壁 > ganpeki\ ;
+佯狂 > youkyou\ ;
+丸顔 > marugao\ ;
+曳馬 > hikiuma\ ;
+対流 > tairyuu\ ;
+顔黒 > ganguro\ ;
+伏縫 > fusenui\ ;
+曲馬 > kyokuba\ ;
+赤燐 > sekirin\ ;
+傑作 > kessaku\ ;
+瑞祥 > zuishou\ ;
+驕恣 > kyoushi\ ;
+伏線 > fukusen\ ;
+傀儡 > kugutsu\ ;
+珍談 > chindan\ ;
+俗文 > zokubun\ ;
+交読 > koudoku\ ;
+倒幕 > toubaku\ ;
+家畜 > kachiku\ ;
+中飯 > chuuhan\ ;
+球菌 > kyuukin\ ;
+首相 > shushou\ ;
+中風 > chuubuu\ ;
+風鎮 > fuuchin\ ;
+借屋 > shakuya\ ;
+島中 > touchuu\ ;
+宝石 > houseki\ ;
+胆石 > tanseki\ ;
+山師 > yamashi\ ;
+食費 > shokuhi\ ;
+交角 > koukaku\ ;
+木金 > mokukin\ ;
+定石 > jouseki\ ;
+属性 > zokusei\ ;
+脳橋 > noukyou\ ;
+中項 > chuukou\ ;
+来診 > raishin\ ;
+球茎 > kyuukei\ ;
+山嶽 > sangaku\ ;
+肩章 > kenshou\ ;
+生息 > seisoku\ ;
+便服 > benpuku\ ;
+亡親 > boushin\ ;
+健勝 > kenshou\ ;
+仕草 > shigusa\ ;
+九重 > kokonoe\ ;
+俊敏 > shunbin\ ;
+来襲 > raishuu\ ;
+主長 > shuchou\ ;
+踊字 > odoriji\ ;
+山峡 > yamakai\ ;
+赤潮 > akashio\ ;
+最長 > saichou\ ;
+学級 > gakkyuu\ ;
+聴聞 > choumon\ ;
+山岳 > sangaku\ ;
+生得 > seitoku\ ;
+略図 > ryakuzu\ ;
+両頭 > ryoutou\ ;
+尚更 > naosara\ ;
+屏息 > heisoku\ ;
+中隊 > chuutai\ ;
+木造 > mokuzou\ ;
+伝票 > denpyou\ ;
+朝酒 > asazake\ ;
+容物 > iremono\ ;
+画定 > kakutei\ ;
+寂然 > sekizen\ ;
+甘心 > kanshin\ ;
+専業 > sengyou\ ;
+跡形 > atokata\ ;
+偶作 > guusaku\ ;
+曹長 > souchou\ ;
+小柄 > kodzuka\ ;
+孝経 > koukyou\ ;
+聴罪 > chouzai\ ;
+余熱 > yonetsu\ ;
+山容 > san''you\ ;
+両面 > ryoumen\ ;
+信愛 > shin''ai\ ;
+俗才 > zokusai\ ;
+存続 > sonzoku\ ;
+望郷 > boukyou\ ;
+猛鳥 > mouchou\ ;
+宝生 > houshou\ ;
+美髪 > bihatsu\ ;
+尚早 > shousou\ ;
+中間 > chuukan\ ;
+一髪 > ippatsu\ ;
+仲継 > chuukei\ ;
+将校 > shoukou\ ;
+安着 > anchaku\ ;
+両雄 > ryouyuu\ ;
+季節 > kisetsu\ ;
+争訟 > soushou\ ;
+二親 > futaoya\ ;
+豚足 > tonsoku\ ;
+官用 > kan''you\ ;
+余烈 > yoretsu\ ;
+松葉 > matsuba\ ;
+安直 > anchoku\ ;
+風速 > fuusoku\ ;
+顎髭 > agohige\ ;
+翼賛 > yokusan\ ;
+属島 > zokutou\ ;
+肺病 > haibyou\ ;
+小智 > shouchi\ ;
+実理 > jitsuri\ ;
+小景 > shoukei\ ;
+学童 > gakudou\ ;
+棋客 > kikyaku\ ;
+末路 > matsuro\ ;
+侵攻 > shinkou\ ;
+将来 > shourai\ ;
+了解 > ryoukai\ ;
+畑地 > hatachi\ ;
+信心 > shinjin\ ;
+対格 > taikaku\ ;
+屈強 > kukkyou\ ;
+学窓 > gakusou\ ;
+梟悪 > kyouaku\ ;
+男娼 > danshou\ ;
+孤立 > koritsu\ ;
+腹帯 > fukutai\ ;
+学究 > gakkyuu\ ;
+俗情 > zokujou\ ;
+了見 > ryouken\ ;
+丸鋼 > marukou\ ;
+俊才 > shunsai\ ;
+俗悪 > zokuaku\ ;
+職組 > shokuso\ ;
+寒流 > kanryuu\ ;
+群集 > gunshuu\ ;
+群雄 > gun''yuu\ ;
+山姥 > yamauba\ ;
+上顎 > jougaku\ ;
+寝殿 > shinden\ ;
+少数 > shousuu\ ;
+男妾 > danshou\ ;
+小斎 > shousai\ ;
+脂気 > aburake\ ;
+専有 > sen''yuu\ ;
+尽忠 > jinchuu\ ;
+小数 > shousuu\ ;
+条虫 > jouchuu\ ;
+略叙 > ryakujo\ ;
+美食 > bishoku\ ;
+山奥 > yamaoku\ ;
+珍蔵 > chinzou\ ;
+尊族 > sonzoku\ ;
+俗念 > zokunen\ ;
+格段 > kakudan\ ;
+一食 > isshoku\ ;
+将星 > shousei\ ;
+聯絡 > renraku\ ;
+学祭 > gakusai\ ;
+獄門 > gokumon\ ;
+促成 > sokusei\ ;
+考証 > koushou\ ;
+完璧 > kanpeki\ ;
+生害 > shougai\ ;
+乱調 > ranchou\ ;
+人臣 > jinshin\ ;
+一類 > ichirui\ ;
+乱読 > randoku\ ;
+亀裂 > kiretsu\ ;
+胸水 > kyousui\ ;
+枠線 > wakusen\ ;
+休眠 > kyuumin\ ;
+臨休 > rinkyuu\ ;
+仄聞 > sokubun\ ;
+低潮 > teichou\ ;
+伏目 > fushime\ ;
+万難 > ban''nan\ ;
+驕奢 > kyousha\ ;
+屎尿 > shinyou\ ;
+上陸 > jouriku\ ;
+尺度 > shakudo\ ;
+賤称 > senshou\ ;
+万障 > banshou\ ;
+最適 > saiteki\ ;
+就役 > shuueki\ ;
+一面 > ichimen\ ;
+対敵 > taiteki\ ;
+朝貢 > choukou\ ;
+仏縁 > butsuen\ ;
+仕組 > shikumi\ ;
+桐材 > kirizai\ ;
+射撃 > shageki\ ;
+校注 > kouchuu\ ;
+一雨 > hitoame\ ;
+柱状 > chuujou\ ;
+作況 > sakkyou\ ;
+一難 > ichinan\ ;
+山地 > yamachi\ ;
+俊彦 > shungen\ ;
+胴欲 > douyoku\ ;
+額面 > gakumen\ ;
+上長 > jouchou\ ;
+珍芸 > chingei\ ;
+森厳 > shingen\ ;
+男囚 > danshuu\ ;
+梯子 > hashigo\ ;
+枕絵 > makurae\ ;
+番傘 > bangasa\ ;
+一陣 > ichijin\ ;
+仏経 > bukkyou\ ;
+頬髭 > hoohige\ ;
+未設 > misetsu\ ;
+略儀 > ryakugi\ ;
+駿才 > shunsai\ ;
+能楽 > nougaku\ ;
+小才 > shousai\ ;
+主軸 > shujiku\ ;
+頬骨 > hoobone\ ;
+乱行 > rangyou\ ;
+嫉視 > shisshi\ ;
+小成 > shousei\ ;
+肉眼 > nikugan\ ;
+中道 > chuudou\ ;
+少憩 > shoukei\ ;
+客演 > kyakuen\ ;
+完熟 > kanjuku\ ;
+一門 > ichimon\ ;
+暗鬱 > an''utsu\ ;
+小憩 > shoukei\ ;
+中退 > chuutai\ ;
+植付 > uetsuke\ ;
+理窟 > rikutsu\ ;
+実演 > jitsuen\ ;
+修好 > shuukou\ ;
+尼寺 > amadera\ ;
+中農 > chuunou\ ;
+村落 > sonraku\ ;
+末裔 > matsuei\ ;
+尺寸 > sekisun\ ;
+驚嘆 > kyoutan\ ;
+梢子 > shoushi\ ;
+寸描 > sunbyou\ ;
+木製 > mokusei\ ;
+佗歌 > wabiuta\ ;
+並進 > heishin\ ;
+修士 > shuushi\ ;
+風評 > fuuhyou\ ;
+番人 > ban''nin\ ;
+害毒 > gaidoku\ ;
+学生 > gakusei\ ;
+朗読 > roudoku\ ;
+朗誦 > roushou\ ;
+実測 > jissoku\ ;
+生垣 > ikegaki\ ;
+属国 > zokkoku\ ;
+五色 > goshoku\ ;
+赤札 > akafuda\ ;
+板締 > itajime\ ;
+珍聞 > chinbun\ ;
+町名 > choumei\ ;
+朝見 > chouken\ ;
+暮雪 > bosetsu\ ;
+仕種 > shigusa\ ;
+佳月 > kagetsu\ ;
+肉界 > nikukai\ ;
+宮殿 > kyuuden\ ;
+来聴 > raichou\ ;
+頭領 > touryou\ ;
+任用 > nin''you\ ;
+胸板 > munaita\ ;
+信奉 > shinpou\ ;
+梓宮 > shikyuu\ ;
+板紙 > itagami\ ;
+頭頂 > touchou\ ;
+二色 > nishoku\ ;
+駐支 > chuushi\ ;
+小径 > shoukei\ ;
+曲路 > kyokuro\ ;
+少弟 > shoutei\ ;
+両輪 > ryourin\ ;
+木蝋 > mokurou\ ;
+一錠 > ichijou\ ;
+実況 > jikkyou\ ;
+赤旗 > akahata\ ;
+小弟 > shoutei\ ;
+俗姓 > zokusei\ ;
+係属 > keizoku\ ;
+佳日 > kajitsu\ ;
+両軍 > ryougun\ ;
+胎毒 > taidoku\ ;
+留任 > ryuunin\ ;
+朽葉 > kuchiba\ ;
+松籟 > shourai\ ;
+小康 > shoukou\ ;
+山勘 > yamakan\ ;
+少年 > shounen\ ;
+今程 > imahodo\ ;
+駒損 > komason\ ;
+罪障 > zaishou\ ;
+小店 > shouten\ ;
+宿根 > shukkon\ ;
+月評 > geppyou\ ;
+署長 > shochou\ ;
+今秋 > konshuu\ ;
+町制 > chousei\ ;
+下部 > shimobe\ ;
+専念 > sen''nen\ ;
+束群 > sokugun\ ;
+実母 > jitsubo\ ;
+専心 > senshin\ ;
+献酬 > kenshuu\ ;
+丁重 > teichou\ ;
+不達 > futatsu\ ;
+主調 > shuchou\ ;
+下達 > katatsu\ ;
+飛脚 > hikyaku\ ;
+町内 > chounai\ ;
+月見 > tsukimi\ ;
+俗塵 > zokujin\ ;
+個別 > kobetsu\ ;
+属名 > zokumei\ ;
+倡佯 > shouyou\ ;
+付着 > fuchaku\ ;
+上進 > joushin\ ;
+服装 > fukusou\ ;
+体格 > taikaku\ ;
+猟銃 > ryoujuu\ ;
+交絡 > kouraku\ ;
+棄却 > kikyaku\ ;
+何某 > nanibou\ ;
+校服 > koufuku\ ;
+仕着 > shikise\ ;
+木蔦 > kidzuta\ ;
+貧窮 > hinkyuu\ ;
+肉片 > nikuhen\ ;
+将帥 > shousui\ ;
+男優 > dan''yuu\ ;
+木蓮 > mokuren\ ;
+曲譜 > kyokufu\ ;
+梗塞 > kousoku\ ;
+甲冑 > katchuu\ ;
+侵害 > shingai\ ;
+肥溜 > koedame\ ;
+賞玩 > shougan\ ;
+借人 > karinin\ ;
+人称 > ninshou\ ;
+俊士 > shunshi\ ;
+有衆 > yuushuu\ ;
+書評 > shohyou\ ;
+密教 > mikkyou\ ;
+豪腹 > goufuku\ ;
+一道 > ichidou\ ;
+一遇 > ichiguu\ ;
+書証 > shoshou\ ;
+貫禄 > kanroku\ ;
+越年 > etsunen\ ;
+一連 > ichiren\ ;
+生協 > seikyou\ ;
+三軸 > sanjiku\ ;
+老臣 > roushin\ ;
+条約 > jouyaku\ ;
+修史 > shuushi\ ;
+豆蔵 > mamezou\ ;
+余日 > yojitsu\ ;
+球界 > kyuukai\ ;
+作文 > sakubun\ ;
+小寒 > shoukan\ ;
+賞状 > shoujou\ ;
+杜絶 > tozetsu\ ;
+低木 > teiboku\ ;
+尊属 > sonzoku\ ;
+馬方 > umakata\ ;
+乱臣 > ranshin\ ;
+何時 > nandoki\ ;
+赤手 > sekishu\ ;
+小官 > shoukan\ ;
+乳腺 > nyuusen\ ;
+少子 > shoushi\ ;
+献身 > kenshin\ ;
+倒伏 > toufuku\ ;
+賞牌 > shouhai\ ;
+曲解 > kyokkai\ ;
+珍答 > chintou\ ;
+一輪 > ichirin\ ;
+寵幸 > choukou\ ;
+町会 > choukai\ ;
+定業 > teigyou\ ;
+驕傲 > kyougou\ ;
+驚倒 > kyoutou\ ;
+尊容 > son''you\ ;
+現用 > gen''you\ ;
+上足 > jousoku\ ;
+官業 > kangyou\ ;
+両論 > ryouron\ ;
+一軍 > ichigun\ ;
+町人 > chounin\ ;
+上越 > jouetsu\ ;
+尊宅 > sontaku\ ;
+項領 > kouryou\ ;
+香木 > kouboku\ ;
+局員 > kyokuin\ ;
+専属 > senzoku\ ;
+何故 > naniyue\ ;
+亢竜 > kouryou\ ;
+猛進 > moushin\ ;
+介病 > kaibyou\ ;
+将官 > shoukan\ ;
+仏画 > butsuga\ ;
+脱字 > datsuji\ ;
+猛追 > moutsui\ ;
+贅沢 > zeitaku\ ;
+信号 > shingou\ ;
+田作 > densaku\ ;
+伯楽 > bakurou\ ;
+定格 > teikaku\ ;
+山中 > sanchuu\ ;
+胸懐 > kyoukai\ ;
+本腹 > honpuku\ ;
+対審 > taishin\ ;
+五節 > gosetsu\ ;
+主虹 > shuniji\ ;
+並製 > namisei\ ;
+甚六 > jinroku\ ;
+狂騒 > kyousou\ ;
+赤恥 > akahaji\ ;
+朱肉 > shuniku\ ;
+余接 > yosetsu\ ;
+甲乙 > kouotsu\ ;
+井筒 > idzutsu\ ;
+本能 > hon''nou\ ;
+万象 > banshou\ ;
+瑣末 > samatsu\ ;
+香料 > kouryou\ ;
+俗名 > zokumei\ ;
+球状 > kyuujou\ ;
+胴慾 > douyoku\ ;
+人皇 > nin''nou\ ;
+人的 > jinteki\ ;
+伏水 > fukusui\ ;
+少壮 > shousou\ ;
+脆弱 > zeijaku\ ;
+饑渇 > kikatsu\ ;
+小変 > shouhen\ ;
+主薬 > shuyaku\ ;
+購求 > koukyuu\ ;
+官有 > kan''yuu\ ;
+休止 > kyuushi\ ;
+了簡 > ryouken\ ;
+他物 > tabutsu\ ;
+羽虫 > hamushi\ ;
+産休 > sankyuu\ ;
+胎教 > taikyou\ ;
+作戦 > sakusen\ ;
+伯林 > berurin\ ;
+作成 > sakusei\ ;
+寒心 > kanshin\ ;
+狂風 > kyoufuu\ ;
+宣教 > senkyou\ ;
+背教 > haikyou\ ;
+豊胸 > houkyou\ ;
+柳条 > ryuujou\ ;
+将士 > shoushi\ ;
+生乳 > seinyuu\ ;
+宗旨 > shuushi\ ;
+侯国 > koukoku\ ;
+群衆 > gunshuu\ ;
+宗族 > souzoku\ ;
+肉池 > nikuchi\ ;
+梓匠 > shishou\ ;
+三角 > sankaku\ ;
+下見 > shitami\ ;
+伏樋 > fusedoi\ ;
+肉汁 > nikujuu\ ;
+乳糖 > nyuutou\ ;
+玄翁 > gen''nou\ ;
+一説 > issetsu\ ;
+駐屯 > chuuton\ ;
+就労 > shuurou\ ;
+胸底 > kyoutei\ ;
+宣揚 > sen''you\ ;
+買物 > kaimono\ ;
+顛覆 > tenpuku\ ;
+修交 > shuukou\ ;
+居候 > isourou\ ;
+服膺 > fukuyou\ ;
+宿怨 > shukuen\ ;
+而立 > jiritsu\ ;
+枯渇 > kokatsu\ ;
+風習 > fuushuu\ ;
+乗羃 > joubeki\ ;
+屈伸 > kusshin\ ;
+俗僧 > zokusou\ ;
+顕要 > ken''you\ ;
+肇歳 > chousai\ ;
+屈伏 > kuppuku\ ;
+本給 > honkyuu\ ;
+中葉 > chuuyou\ ;
+罪跡 > zaiseki\ ;
+飛礫 > tsubute\ ;
+条目 > joumoku\ ;
+一覧 > ichiran\ ;
+密度 > mitsudo\ ;
+上表 > jouhyou\ ;
+下血 > geketsu\ ;
+最良 > sairyou\ ;
+足労 > sokurou\ ;
+守旧 > shukyuu\ ;
+小善 > shouzen\ ;
+仮決 > kaketsu\ ;
+寛容 > kan''you\ ;
+休校 > kyuukou\ ;
+信仰 > shinkou\ ;
+栖息 > seisoku\ ;
+井目 > seimoku\ ;
+尚又 > naomata\ ;
+暗躍 > an''yaku\ ;
+考究 > koukyuu\ ;
+晩鐘 > banshou\ ;
+貨物 > kamotsu\ ;
+実技 > jitsugi\ ;
+本籤 > honkuji\ ;
+脱営 > datsuei\ ;
+体得 > taitoku\ ;
+本籍 > honseki\ ;
+木精 > mokusei\ ;
+小品 > shouhin\ ;
+有職 > yuusoku\ ;
+佳客 > kakyaku\ ;
+美術 > bijutsu\ ;
+罪責 > zaiseki\ ;
+赤子 > sekishi\ ;
+害心 > gaishin\ ;
+俗体 > zokutai\ ;
+昼餐 > chuusan\ ;
+二着 > nichaku\ ;
+俗伝 > zokuden\ ;
+了知 > ryouchi\ ;
+核子 > kakushi\ ;
+本箱 > honbako\ ;
+服罪 > fukuzai\ ;
+二直 > nichoku\ ;
+馬市 > umaichi\ ;
+環境 > kankyou\ ;
+小史 > shoushi\ ;
+俗人 > zokujin\ ;
+何年 > nan''nen\ ;
+猛襲 > moushuu\ ;
+小口 > koguchi\ ;
+松煤 > shoubai\ ;
+本筋 > honsuji\ ;
+東独 > toudoku\ ;
+獣肉 > juuniku\ ;
+中興 > chuukou\ ;
+二百 > nihyaku\ ;
+曲舞 > kusemai\ ;
+珍獣 > chinjuu\ ;
+本章 > honshou\ ;
+主翼 > shuyoku\ ;
+俗世 > zokusei\ ;
+群落 > gunraku\ ;
+飴玉 > amedama\ ;
+耄碌 > mouroku\ ;
+宮廷 > kyuutei\ ;
+就任 > shuunin\ ;
+妙齢 > myourei\ ;
+時雨 > shigure\ ;
+宮庭 > kyuutei\ ;
+中脳 > chuunou\ ;
+木立 > kodachi\ ;
+王立 > ouritsu\ ;
+小勇 > shouyuu\ ;
+職権 > shokken\ ;
+侵冦 > shinkou\ ;
+現況 > genkyou\ ;
+寄宿 > kishuku\ ;
+背徳 > haitoku\ ;
+習練 > shuuren\ ;
+格外 > kakugai\ ;
+上蔟 > jouzoku\ ;
+中背 > chuuzei\ ;
+赤外 > sekigai\ ;
+両舷 > ryougen\ ;
+季末 > kimatsu\ ;
+染料 > senryou\ ;
+松濤 > shoutou\ ;
+柄杓 > hishaku\ ;
+独走 > dokusou\ ;
+仮植 > kashoku\ ;
+玉稿 > gyokkou\ ;
+小刀 > shoutou\ ;
+便侫 > ben''nei\ ;
+頭註 > touchuu\ ;
+他殺 > tasatsu\ ;
+下葉 > shitaba\ ;
+足代 > ashidai\ ;
+有給 > yuukyuu\ ;
+便佞 > ben''nei\ ;
+中老 > chuurou\ ;
+月給 > gekkyuu\ ;
+駐在 > chuuzai\ ;
+首席 > shuseki\ ;
+有終 > yuushuu\ ;
+両腕 > ryouude\ ;
+獄舎 > gokusha\ ;
+頭角 > toukaku\ ;
+顛落 > tenraku\ ;
+小党 > shoutou\ ;
+侠勇 > kyouyuu\ ;
+導入 > dounyuu\ ;
+伝承 > denshou\ ;
+胸声 > kyousei\ ;
+乙種 > otsushu\ ;
+乗積 > jouseki\ ;
+牝鶏 > mendori\ ;
+群臣 > gunshin\ ;
+孟春 > moushun\ ;
+供勢 > tomozei\ ;
+乾留 > kanryuu\ ;
+審問 > shinmon\ ;
+賎業 > sengyou\ ;
+賞杯 > shouhai\ ;
+介殻 > kaikaku\ ;
+一葉 > ichiyou\ ;
+最終 > saishuu\ ;
+乳癌 > nyuugan\ ;
+将兵 > shouhei\ ;
+牝鳥 > mendori\ ;
+仰望 > gyoubou\ ;
+宗廟 > soubyou\ ;
+乾瓢 > kanpyou\ ;
+耽溺 > tandeki\ ;
+住宅 > juutaku\ ;
+両者 > ryousha\ ;
+超勤 > choukin\ ;
+貫流 > kanryuu\ ;
+官庁 > kanchou\ ;
+老病 > roubyou\ ;
+定席 > jouseki\ ;
+賓格 > hinkaku\ ;
+朝礼 > chourei\ ;
+小便 > shonben\ ;
+寸劇 > sungeki\ ;
+封入 > fuunyuu\ ;
+警鐘 > keishou\ ;
+春雷 > shunrai\ ;
+寒国 > kankoku\ ;
+侯伯 > kouhaku\ ;
+中編 > chuuhen\ ;
+未着 > michaku\ ;
+本省 > honshou\ ;
+書経 > shokyou\ ;
+寸刻 > sunkoku\ ;
+事物 > jibutsu\ ;
+仕業 > shiwaza\ ;
+首将 > shushou\ ;
+休戦 > kyuusen\ ;
+現業 > gengyou\ ;
+曳網 > hikiami\ ;
+尊信 > sonshin\ ;
+中継 > chuukei\ ;
+超凡 > choubon\ ;
+仲断 > chuudan\ ;
+小伝 > shouden\ ;
+鞦韆 > buranko\ ;
+豪球 > goukyuu\ ;
+乱用 > ran''you\ ;
+領解 > ryoukai\ ;
+七色 > nanairo\ ;
+上膊 > jouhaku\ ;
+何奴 > doyatsu\ ;
+林業 > ringyou\ ;
+一芸 > ichigei\ ;
+休憩 > kyuukei\ ;
+東清 > toushin\ ;
+犬釘 > inukugi\ ;
+球根 > kyuukon\ ;
+未発 > mihatsu\ ;
+小人 > shounin\ ;
+佗声 > wabigoe\ ;
+一色 > hitoiro\ ;
+主筋 > shusuji\ ;
+下脚 > kakyaku\ ;
+中糸 > chuuito\ ;
+群羊 > gun''you\ ;
+資格 > shikaku\ ;
+書籍 > shoseki\ ;
+宿場 > shukuba\ ;
+春闘 > shuntou\ ;
+専修 > senshuu\ ;
+小乗 > shoujou\ ;
+伸展 > shinten\ ;
+例刻 > reikoku\ ;
+暴落 > bouraku\ ;
+狂躁 > kyousou\ ;
+貨殖 > kashoku\ ;
+京洛 > keiraku\ ;
+会心 > kaishin\ ;
+中米 > chuubei\ ;
+交渉 > koushou\ ;
+頌詞 > shoushi\ ;
+万能 > man''nou\ ;
+三育 > san''iku\ ;
+三股 > sanmata\ ;
+一膳 > ichizen\ ;
+学才 > gakusai\ ;
+特電 > tokuden\ ;
+順調 > junchou\ ;
+羽箒 > habouki\ ;
+脚光 > kyakkou\ ;
+定宿 > jouyado\ ;
+審判 > shinpan\ ;
+独裁 > dokusai\ ;
+羊膜 > youmaku\ ;
+末生 > suenari\ ;
+査察 > sasatsu\ ;
+豪物 > eramono\ ;
+中篇 > chuuhen\ ;
+専任 > sen''nin\ ;
+羊腸 > youchou\ ;
+上翼 > jouyoku\ ;
+休怠 > kyuutai\ ;
+乱獲 > rankaku\ ;
+交流 > kouryuu\ ;
+姦通 > kantsuu\ ;
+義絶 > gizetsu\ ;
+昇順 > shoujun\ ;
+貝毒 > kaidoku\ ;
+官学 > kangaku\ ;
+現有 > gen''yuu\ ;
+貝殼 > kaigara\ ;
+貝殻 > kaigara\ ;
+賞揚 > shouyou\ ;
+中等 > chuutou\ ;
+物音 > monooto\ ;
+乳状 > nyuujou\ ;
+主神 > shushin\ ;
+林木 > rinboku\ ;
+玉璽 > gyokuji\ ;
+会席 > kaiseki\ ;
+狼藉 > rouzeki\ ;
+羊肉 > youniku\ ;
+翼状 > yokujou\ ;
+預血 > yoketsu\ ;
+風疹 > fuushin\ ;
+休廷 > kyuutei\ ;
+玉瑛 > gyokuei\ ;
+宮城 > kyuujou\ ;
+超人 > choujin\ ;
+宿営 > shukuei\ ;
+枝族 > shizoku\ ;
+他日 > tajitsu\ ;
+老熟 > roujuku\ ;
+讃賞 > sanshou\ ;
+資料 > shiryou\ ;
+駐兵 > chuuhei\ ;
+一群 > ichigun\ ;
+低圧 > teiatsu\ ;
+松楓 > shoufuu\ ;
+今朝 > konchou\ ;
+丹碧 > tanpeki\ ;
+暮色 > boshoku\ ;
+仕方 > shikata\ ;
+飢渇 > kikatsu\ ;
+今更 > imasara\ ;
+密告 > mikkoku\ ;
+昇降 > shoukou\ ;
+犯跡 > hanseki\ ;
+貴札 > kisatsu\ ;
+飄然 > hyouzen\ ;
+今暁 > kongyou\ ;
+早馬 > hayauma\ ;
+作品 > sakuhin\ ;
+負極 > fukyoku\ ;
+人格 > jinkaku\ ;
+本物 > honmono\ ;
+今時 > imadoki\ ;
+来歴 > raireki\ ;
+音訳 > on''yaku\ ;
+今春 > konshun\ ;
+今昔 > konseki\ ;
+聚斂 > shuuren\ ;
+仏教 > bukkyou\ ;
+貯木 > choboku\ ;
+木犀 > mokusei\ ;
+買春 > baishun\ ;
+富力 > furyoku\ ;
+上級 > joukyuu\ ;
+上紙 > uwagami\ ;
+聚散 > shuusan\ ;
+上紐 > uwahimo\ ;
+三級 > sankyuu\ ;
+今方 > imagata\ ;
+両種 > ryoushu\ ;
+木版 > mokuhan\ ;
+木片 > mokuhen\ ;
+孝心 > koushin\ ;
+狂詩 > kyoushi\ ;
+背圧 > haiatsu\ ;
+乾溜 > kanryuu\ ;
+肉弾 > nikudan\ ;
+獄窓 > gokusou\ ;
+学年 > gakunen\ ;
+聖教 > seikyou\ ;
+客土 > kyakudo\ ;
+譴責 > kenseki\ ;
+服用 > fukuyou\ ;
+低唱 > teishou\ ;
+旧風 > kyuufuu\ ;
+献納 > ken''nou\ ;
+存念 > zon''nen\ ;
+率爾 > sotsuji\ ;
+学帽 > gakubou\ ;
+明鏡 > meikyou\ ;
+本然 > hon''nen\ ;
+狂言 > kyougen\ ;
+仕掛 > shikake\ ;
+株券 > kabuken\ ;
+飛沫 > himatsu\ ;
+風狂 > fuukyou\ ;
+子息 > shisoku\ ;
+馬匹 > bahitsu\ ;
+書目 > shomoku\ ;
+上箱 > uwabako\ ;
+胸像 > kyouzou\ ;
+伏射 > fukusha\ ;
+胴元 > doumoto\ ;
+定圧 > teiatsu\ ;
+暗色 > anshoku\ ;
+完壁 > kanbeki\ ;
+胆嚢 > tan''nou\ ;
+豊熟 > houjuku\ ;
+上策 > jousaku\ ;
+顎紐 > agohimo\ ;
+木炭 > mokutan\ ;
+余力 > yoryoku\ ;
+体協 > taikyou\ ;
+首唱 > shushou\ ;
+中盤 > chuuban\ ;
+校則 > kousoku\ ;
+耳栓 > mimisen\ ;
+余割 > yokatsu\ ;
+万策 > bansaku\ ;
+令息 > reisoku\ ;
+片面 > katamen\ ;
+密儀 > mitsugi\ ;
+特配 > tokuhai\ ;
+乳清 > nyuusei\ ;
+日露 > nichiro\ ;
+献策 > kensaku\ ;
+余切 > yosetsu\ ;
+享有 > kyouyuu\ ;
+聴従 > choujuu\ ;
+乳液 > nyuueki\ ;
+核仁 > kakujin\ ;
+客員 > kyakuin\ ;
+星辰 > seishin\ ;
+献立 > kondate\ ;
+両眼 > ryougan\ ;
+何処 > dokoira\ ;
+豆炭 > mametan\ ;
+実員 > jitsuin\ ;
+特選 > tokusen\ ;
+宣告 > senkoku\ ;
+佝僂 > semushi\ ;
+珍本 > chinpon\ ;
+代役 > daiyaku\ ;
+乱流 > ranryuu\ ;
+一端 > ippashi\ ;
+三秋 > sanshuu\ ;
+容共 > youkyou\ ;
+校僕 > kouboku\ ;
+珍書 > chinsho\ ;
+何共 > nantomo\ ;
+寒中 > kanchuu\ ;
+丞相 > joushou\ ;
+中瓶 > chuubin\ ;
+万福 > manpuku\ ;
+来朝 > raichou\ ;
+職工 > shokkou\ ;
+宅地 > takuchi\ ;
+乳汁 > nyuujuu\ ;
+宮刑 > kyuukei\ ;
+飼料 > shiryou\ ;
+伏奏 > fukusou\ ;
+実収 > jisshuu\ ;
+校倉 > azekura\ ;
+翕然 > kyuuzen\ ;
+新鮮 > shinsen\ ;
+豊漁 > houryou\ ;
+譫言 > uwagoto\ ;
+朝潮 > asashio\ ;
+風潮 > fuuchou\ ;
+球形 > kyuukei\ ;
+胴中 > dounaka\ ;
+頚肉 > keiniku\ ;
+実印 > jitsuin\ ;
+作例 > sakurei\ ;
+本流 > honryuu\ ;
+密事 > mitsuji\ ;
+仰山 > gyousan\ ;
+仏恩 > butsuon\ ;
+他律 > taritsu\ ;
+来春 > raiharu\ ;
+乳歯 > nyuushi\ ;
+休場 > kyuujou\ ;
+現役 > gen''eki\ ;
+一礼 > ichirei\ ;
+順良 > junryou\ ;
+仕形 > shikata\ ;
+上石 > uwaishi\ ;
+両用 > ryouyou\ ;
+両生 > ryousei\ ;
+実務 > jitsumu\ ;
+五月 > satsuki\ ;
+子局 > kokyoku\ ;
+不着 > fuchaku\ ;
+下着 > shitagi\ ;
+未決 > miketsu\ ;
+大黒 > daikoku\ ;
+校了 > kouryou\ ;
+昂進 > koushin\ ;
+仕度 > shitaku\ ;
+学外 > gakugai\ ;
+実利 > jitsuri\ ;
+宗匠 > soushou\ ;
+頬紅 > hoobeni\ ;
+子宮 > shikyuu\ ;
+面長 > omonaga\ ;
+識語 > shikigo\ ;
+低俗 > teizoku\ ;
+学士 > gakushi\ ;
+下目 > shitame\ ;
+奇骨 > kikotsu\ ;
+杏林 > kyourin\ ;
+孑孑 > boufuri\ ;
+聖徳 > seitoku\ ;
+暗緑 > anryoku\ ;
+馬主 > banushi\ ;
+特赦 > tokusha\ ;
+不発 > fuhatsu\ ;
+九泉 > kyuusen\ ;
+何人 > nanpito\ ;
+伏在 > fukuzai\ ;
+職安 > shokuan\ ;
+定則 > teisoku\ ;
+新香 > shinkou\ ;
+景色 > keshiki\ ;
+定刻 > teikoku\ ;
+村有 > son''yuu\ ;
+材木 > zaimoku\ ;
+朧気 > oboroge\ ;
+万目 > banmoku\ ;
+買得 > kaidoku\ ;
+露骨 > rokotsu\ ;
+仏座 > butsuza\ ;
+飛札 > hisatsu\ ;
+伝唱 > denshou\ ;
+大鷺 > daisagi\ ;
+上白 > jouhaku\ ;
+論駁 > ronbaku\ ;
+風流 > fuuryuu\ ;
+学報 > gakuhou\ ;
+肉声 > nikusei\ ;
+代将 > daishou\ ;
+豊沃 > houyoku\ ;
+新館 > shinkan\ ;
+会商 > kaishou\ ;
+聖廟 > seibyou\ ;
+家主 > yanushi\ ;
+一着 > itchaku\ ;
+一眼 > ichigan\ ;
+一眸 > ichibou\ ;
+識見 > shikken\ ;
+某国 > boukoku\ ;
+杉材 > sugizai\ ;
+仁心 > jinshin\ ;
+一眠 > ichimin\ ;
+仁徳 > jintoku\ ;
+宛先 > atesaki\ ;
+理屈 > rikutsu\ ;
+新風 > shinpuu\ ;
+一直 > itchoku\ ;
+今年 > kon''nen\ ;
+胚乳 > hainyuu\ ;
+二日 > futsuka\ ;
+断食 > danjiki\ ;
+完勝 > kanshou\ ;
+乳棒 > nyuubou\ ;
+九死 > kyuushi\ ;
+下略 > geryaku\ ;
+瑞兆 > zuichou\ ;
+新顔 > shingao\ ;
+万病 > manbyou\ ;
+背信 > haishin\ ;
+讒臣 > zanshin\ ;
+主潮 > shuchou\ ;
+韻脚 > inkyaku\ ;
+一発 > ippatsu\ ;
+上申 > joushin\ ;
+翼棟 > yokutou\ ;
+三男 > san''nan\ ;
+材料 > zairyou\ ;
+官僚 > kanryou\ ;
+文鳥 > bunchou\ ;
+人徳 > nintoku\ ;
+仰天 > gyouten\ ;
+賊害 > zokugai\ ;
+中点 > chuuten\ ;
+題目 > daimoku\ ;
+人形 > ningyou\ ;
+牛車 > gyuusha\ ;
+賊子 > zokushi\ ;
+本業 > hongyou\ ;
+老松 > roushou\ ;
+旧邦 > kyuuhou\ ;
+果実 > kajitsu\ ;
+一畳 > ichijou\ ;
+貧弱 > hinjaku\ ;
+爆風 > bakufuu\ ;
+老朽 > roukyuu\ ;
+早速 > sassoku\ ;
+旧道 > kyuudou\ ;
+老木 > rouboku\ ;
+特認 > tokunin\ ;
+一男 > ichinan\ ;
+本棚 > hondana\ ;
+妙趣 > myoushu\ ;
+霊鳥 > reichou\ ;
+物象 > busshou\ ;
+仏寺 > butsuji\ ;
+末梢 > masshou\ ;
+論難 > ron''nan\ ;
+上玉 > joudama\ ;
+定休 > teikyuu\ ;
+論集 > ronshuu\ ;
+林学 > ringaku\ ;
+学問 > gakumon\ ;
+豪族 > gouzoku\ ;
+職場 > shokuba\ ;
+本格 > honkaku\ ;
+好適 > kouteki\ ;
+会則 > kaisoku\ ;
+主流 > shuryuu\ ;
+既述 > kijutsu\ ;
+義烈 > giretsu\ ;
+物議 > butsugi\ ;
+貸家 > kashiya\ ;
+有毒 > yuudoku\ ;
+新開 > shinkai\ ;
+下物 > kabutsu\ ;
+仙女 > sen''nyo\ ;
+爆雷 > bakurai\ ;
+伏勢 > fusezei\ ;
+特製 > tokusei\ ;
+上物 > joumono\ ;
+狂者 > kyousha\ ;
+枠外 > wakugai\ ;
+本朝 > honchou\ ;
+特装 > tokusou\ ;
+領空 > ryoukuu\ ;
+学名 > gakumei\ ;
+旧蹟 > furuato\ ;
+末期 > matsugo\ ;
+木杯 > mokuhai\ ;
+謬論 > byuuron\ ;
+木材 > mokuzai\ ;
+享年 > kyounen\ ;
+学友 > gakuyuu\ ;
+猩猩 > shoujou\ ;
+休刊 > kyuukan\ ;
+木本 > mokuhon\ ;
+下熱 > genetsu\ ;
+物証 > busshou\ ;
+安佚 > an''itsu\ ;
+来復 > raifuku\ ;
+旧跡 > furuato\ ;
+雷鳥 > raichou\ ;
+仙境 > senkyou\ ;
+丹毒 > tandoku\ ;
+旧趾 > kyuushi\ ;
+木曜 > mokuyou\ ;
+曲浦 > kyokuho\ ;
+類焼 > ruishou\ ;
+風格 > fuukaku\ ;
+球場 > kyuujou\ ;
+松屋 > matsuya\ ;
+完了 > kanryou\ ;
+頭目 > toumoku\ ;
+九月 > kugatsu\ ;
+伏兵 > fukuhei\ ;
+特融 > tokuyuu\ ;
+乱撃 > rangeki\ ;
+獣欲 > juuyoku\ ;
+天領 > tenryou\ ;
+貨客 > kakyaku\ ;
+豆板 > mameita\ ;
+天頂 > tenchou\ ;
+木星 > mokusei\ ;
+期末 > kimatsu\ ;
+購入 > kounyuu\ ;
+餅屋 > mochiya\ ;
+嫡披 > chakuhi\ ;
+朝来 > chourai\ ;
+謬見 > byuuken\ ;
+震駭 > shingai\ ;
+下火 > shitabi\ ;
+豆本 > mamehon\ ;
+賞品 > shouhin\ ;
+学制 > gakusei\ ;
+妙計 > myoukei\ ;
+今夕 > kon''yuu\ ;
+猟犬 > ryouken\ ;
+九星 > kyuusei\ ;
+姿絵 > sugatae\ ;
+失陥 > shikkan\ ;
+職員 > shokuin\ ;
+方針 > houshin\ ;
+夜食 > yashoku\ ;
+球団 > kyuudan\ ;
+新鋭 > shin''ei\ ;
+中段 > chuudan\ ;
+両洋 > ryouyou\ ;
+多食 > tashoku\ ;
+肖像 > shouzou\ ;
+東屋 > azumaya\ ;
+講読 > koudoku\ ;
+天雲 > amagumo\ ;
+不潔 > fuketsu\ ;
+学内 > gakunai\ ;
+中正 > chuusei\ ;
+中止 > chuushi\ ;
+文革 > bunkaku\ ;
+束帯 > sokutai\ ;
+期日 > kijitsu\ ;
+講評 > kouhyou\ ;
+食後 > shokugo\ ;
+不滅 > fumetsu\ ;
+猛爆 > moubaku\ ;
+学僧 > gakusou\ ;
+朝方 > asagata\ ;
+夕風 > yuukaze\ ;
+音節 > onsetsu\ ;
+大陸 > tairiku\ ;
+乳房 > nyuubou\ ;
+休会 > kyuukai\ ;
+文集 > bunshuu\ ;
+両氏 > ryoushi\ ;
+仏国 > fukkoku\ ;
+聴取 > choushu\ ;
+職印 > shokuin\ ;
+独眼 > dokugan\ ;
+朝政 > chousei\ ;
+下湯 > shimoyu\ ;
+風教 > fuukyou\ ;
+新酒 > shinshu\ ;
+夜露 > yotsuyu\ ;
+面責 > menseki\ ;
+人声 > hitogoe\ ;
+珍宝 > chinpou\ ;
+纒足 > tensoku\ ;
+主格 > shukaku\ ;
+村庄 > sonshou\ ;
+妄評 > mouhyou\ ;
+職務 > shokumu\ ;
+飯屋 > meshiya\ ;
+昆虫 > konchuu\ ;
+板壁 > itakabe\ ;
+新郎 > shinrou\ ;
+人境 > jinkyou\ ;
+纏足 > tensoku\ ;
+仲冬 > chuutou\ ;
+乾徳 > kentoku\ ;
+書棚 > shodana\ ;
+好調 > kouchou\ ;
+夕靄 > yuumoya\ ;
+新選 > shinsen\ ;
+来宅 > raitaku\ ;
+置物 > okimono\ ;
+獄死 > gokushi\ ;
+末技 > matsugi\ ;
+札所 > fudasho\ ;
+夕霧 > yuugiri\ ;
+頒白 > hanpaku\ ;
+旧観 > kyuukan\ ;
+上海 > shanhai\ ;
+斤量 > kinryou\ ;
+新道 > shindou\ ;
+仲兄 > chuukei\ ;
+既設 > kisetsu\ ;
+賊名 > zokumei\ ;
+晩秋 > banshuu\ ;
+好評 > kouhyou\ ;
+上流 > jouryuu\ ;
+嬌姿 > kyoushi\ ;
+新造 > shinzou\ ;
+乗換 > norikae\ ;
+三流 > sanryuu\ ;
+上洛 > jouraku\ ;
+雌鶏 > mendori\ ;
+末成 > uranari\ ;
+片親 > kataoya\ ;
+賠償 > baishou\ ;
+三洋 > san''you\ ;
+翌晩 > yokuban\ ;
+九拝 > kyuuhai\ ;
+仮免 > karimen\ ;
+丸材 > maruzai\ ;
+任侠 > ninkyou\ ;
+京大 > kyoudai\ ;
+旧製 > kyuusei\ ;
+丸本 > marubon\ ;
+肉体 > nikutai\ ;
+月日 > tsukihi\ ;
+両様 > ryouyou\ ;
+霊長 > reichou\ ;
+有料 > yuuryou\ ;
+雌鳥 > mendori\ ;
+敵陣 > tekijin\ ;
+項目 > koumoku\ ;
+変革 > henkaku\ ;
+乱心 > ranshin\ ;
+一浪 > ichirou\ ;
+放鳥 > houchou\ ;
+嬌声 > kyousei\ ;
+料金 > ryoukin\ ;
+老弱 > roujaku\ ;
+夕闇 > yuuyami\ ;
+数隻 > suuseki\ ;
+朽廃 > kyuuhai\ ;
+象形 > shoukei\ ;
+新車 > shinsha\ ;
+中枢 > chuusuu\ ;
+事局 > jikyoku\ ;
+文鎮 > bunchin\ ;
+両棲 > ryousei\ ;
+仮借 > kashaku\ ;
+中東 > chuutou\ ;
+代入 > dainyuu\ ;
+一泡 > hitoawa\ ;
+教養 > kyouyou\ ;
+雨風 > amekaze\ ;
+下歯 > shitaba\ ;
+豪州 > goushuu\ ;
+最新 > saishin\ ;
+代償 > daishou\ ;
+革装 > kawasou\ ;
+仏印 > futsuin\ ;
+主教 > shukyou\ ;
+一決 > ikketsu\ ;
+事実 > jijitsu\ ;
+中更 > chuukou\ ;
+予察 > yosatsu\ ;
+一汗 > hitoase\ ;
+諸訳 > showake\ ;
+朝憲 > chouken\ ;
+姦策 > kansaku\ ;
+仲仕 > nakashi\ ;
+本心 > honshin\ ;
+仲介 > chuukai\ ;
+仲人 > nakoudo\ ;
+京地 > kyouchi\ ;
+本復 > honpuku\ ;
+買収 > baishuu\ ;
+教頭 > kyoutou\ ;
+一毫 > ichigou\ ;
+枠内 > wakunai\ ;
+中景 > chuukei\ ;
+一毛 > ichimou\ ;
+耳垢 > mimiaka\ ;
+牧草 > bokusou\ ;
+時節 > jisetsu\ ;
+顕正 > kenshou\ ;
+東国 > tougoku\ ;
+大量 > tairyou\ ;
+教鞭 > kyouben\ ;
+館内 > kan''nai\ ;
+中旬 > chuujun\ ;
+狩猟 > shuryou\ ;
+更新 > koushin\ ;
+縦隔 > juukaku\ ;
+中断 > chuudan\ ;
+雑駁 > zappaku\ ;
+頓狂 > tonkyou\ ;
+雨雲 > amagumo\ ;
+失透 > shittou\ ;
+両替 > ryougae\ ;
+雪隠 > setchin\ ;
+旧藩 > kyuuhan\ ;
+中数 > chuusuu\ ;
+末座 > matsuza\ ;
+飴坊 > amenbou\ ;
+代作 > daisaku\ ;
+本庁 > honchou\ ;
+丸損 > maruzon\ ;
+林内 > rin''nai\ ;
+本年 > hon''nen\ ;
+諧調 > kaichou\ ;
+末広 > suehiro\ ;
+中支 > chuushi\ ;
+旁註 > bouchuu\ ;
+代休 > daikyuu\ ;
+牧舎 > bokusha\ ;
+仏具 > butsugu\ ;
+亡国 > boukoku\ ;
+警笛 > keiteki\ ;
+末席 > masseki\ ;
+謹聴 > kinchou\ ;
+諸行 > shogyou\ ;
+玉座 > gyokuza\ ;
+老少 > roushou\ ;
+本州 > honshuu\ ;
+旧蔵 > kyuuzou\ ;
+久懐 > kyuukai\ ;
+老将 > roushou\ ;
+猛毒 > moudoku\ ;
+緘黙 > kanmoku\ ;
+介入 > kainyuu\ ;
+昨紙 > sakushi\ ;
+一様 > ichiyou\ ;
+習慣 > shuukan\ ;
+曝書 > bakusho\ ;
+両方 > ryouhou\ ;
+豹変 > hyouhen\ ;
+救難 > kyuunan\ ;
+球体 > kyuutai\ ;
+両断 > ryoudan\ ;
+奥行 > okuyuki\ ;
+朝廷 > choutei\ ;
+文通 > buntsuu\ ;
+食塩 > shokuen\ ;
+熱雲 > netsuun\ ;
+電鋳 > denchuu\ ;
+教門 > kyoumon\ ;
+雑音 > zatsuon\ ;
+方角 > hougaku\ ;
+狛犬 > komainu\ ;
+珍問 > chinmon\ ;
+失踪 > shissou\ ;
+牛舎 > gyuusha\ ;
+仙人 > sen''nin\ ;
+雁首 > gankubi\ ;
+暦法 > rekihou\ ;
+天軸 > tenjiku\ ;
+語釈 > goshaku\ ;
+人前 > hitomae\ ;
+現任 > gen''nin\ ;
+夜道 > yomichi\ ;
+論調 > ronchou\ ;
+乙巡 > otsujun\ ;
+夏野 > natsuno\ ;
+習性 > shuusei\ ;
+外郭 > gaikaku\ ;
+珍品 > chinpin\ ;
+朝市 > asaichi\ ;
+奉読 > houdoku\ ;
+嬌名 > kyoumei\ ;
+昼礼 > chuurei\ ;
+牧者 > bokusha\ ;
+獣慾 > juuyoku\ ;
+末尾 > matsubi\ ;
+下期 > shimoki\ ;
+大身 > taishin\ ;
+頭注 > touchuu\ ;
+数量 > suuryou\ ;
+燗酒 > kanzake\ ;
+仕事 > shigoto\ ;
+新訂 > shintei\ ;
+論評 > ronpyou\ ;
+上服 > uwafuku\ ;
+木履 > pokkuri\ ;
+末寺 > matsuji\ ;
+論証 > ronshou\ ;
+物置 > monooki\ ;
+服従 > fukujuu\ ;
+三月 > mitsuki\ ;
+服役 > fukueki\ ;
+両損 > ryouzon\ ;
+牛脂 > gyuushi\ ;
+牧羊 > bokuyou\ ;
+文身 > bunshin\ ;
+士長 > shichou\ ;
+変量 > henryou\ ;
+万有 > ban''yuu\ ;
+本宅 > hontaku\ ;
+曲技 > kyokugi\ ;
+青蛙 > aogaeru\ ;
+有徳 > yuutoku\ ;
+特級 > tokkyuu\ ;
+献木 > kenboku\ ;
+飛地 > tobichi\ ;
+猫板 > nekoita\ ;
+日英 > nichiei\ ;
+仏事 > butsuji\ ;
+請謁 > seietsu\ ;
+易経 > ekikyou\ ;
+詩集 > shishuu\ ;
+貝割 > kaiwari\ ;
+不日 > fujitsu\ ;
+暖流 > danryuu\ ;
+一条 > ichijou\ ;
+青虫 > aomushi\ ;
+諒解 > ryoukai\ ;
+改革 > kaikaku\ ;
+上昇 > joushou\ ;
+三春 > sanshun\ ;
+朽壊 > kyuukai\ ;
+一札 > issatsu\ ;
+耐圧 > taiatsu\ ;
+一望 > ichibou\ ;
+新装 > shinsou\ ;
+縫針 > nuibari\ ;
+仁侠 > jinkyou\ ;
+頂点 > chouten\ ;
+一曲 > ikkyoku\ ;
+丹念 > tan''nen\ ;
+音物 > inmotsu\ ;
+日舞 > nichibu\ ;
+旧臘 > kyuurou\ ;
+獣心 > juushin\ ;
+請託 > seitaku\ ;
+丹心 > tanshin\ ;
+老境 > roukyou\ ;
+主役 > shuyaku\ ;
+大賞 > taishou\ ;
+今一 > imaichi\ ;
+万斛 > bankoku\ ;
+三教 > sankyou\ ;
+一晩 > hitoban\ ;
+領海 > ryoukai\ ;
+主張 > shuchou\ ;
+天象 > tenshou\ ;
+晩熟 > banjuku\ ;
+妥結 > daketsu\ ;
+春秋 > haruaki\ ;
+販促 > hansoku\ ;
+牛缶 > gyuukan\ ;
+最強 > saikyou\ ;
+変速 > hensoku\ ;
+変通 > hentsuu\ ;
+狂犬 > kyouken\ ;
+翌年 > yokunen\ ;
+晩照 > banshou\ ;
+講習 > koushuu\ ;
+文責 > bunseki\ ;
+暗殺 > ansatsu\ ;
+敵軍 > tekigun\ ;
+特等 > tokutou\ ;
+片腕 > kataude\ ;
+奇術 > kijutsu\ ;
+一旬 > ichijun\ ;
+乞婿 > koimuko\ ;
+頸椎 > keitsui\ ;
+責任 > sekinin\ ;
+顔料 > ganryou\ ;
+誕辰 > tanshin\ ;
+斜角 > shakaku\ ;
+末女 > matsujo\ ;
+顕教 > kenkyou\ ;
+中性 > chuusei\ ;
+朱墨 > shuboku\ ;
+丁数 > chousuu\ ;
+一文 > ichimon\ ;
+旗色 > hatairo\ ;
+暗欝 > an''utsu\ ;
+女色 > joshoku\ ;
+旧聞 > kyuubun\ ;
+片肺 > katahai\ ;
+主席 > shuseki\ ;
+支障 > shishou\ ;
+朱塗 > shunuri\ ;
+什一 > juuichi\ ;
+領水 > ryousui\ ;
+面舵 > omokaji\ ;
+領民 > ryoumin\ ;
+丸帯 > maruobi\ ;
+総高 > soudaka\ ;
+謀臣 > boushin\ ;
+声量 > seiryou\ ;
+朧夜 > oboroyo\ ;
+変身 > henshin\ ;
+壁面 > hekimen\ ;
+翰墨 > kanboku\ ;
+乙姫 > otohime\ ;
+玄妙 > genmyou\ ;
+羸弱 > ruijaku\ ;
+天誅 > tenchuu\ ;
+九天 > kyuuten\ ;
+九大 > kyuudai\ ;
+三振 > sanshin\ ;
+二十 > hatachi\ ;
+不抜 > fubatsu\ ;
+中庸 > chuuyou\ ;
+顕揚 > ken''you\ ;
+大詰 > oodzume\ ;
+両性 > ryousei\ ;
+調製 > chousei\ ;
+豪商 > goushou\ ;
+文調 > bunchou\ ;
+大詔 > taishou\ ;
+曲度 > kyokudo\ ;
+中年 > chuunen\ ;
+編集 > henshuu\ ;
+一握 > ichiaku\ ;
+曲庇 > kyokuhi\ ;
+婉曲 > enkyoku\ ;
+説諭 > setsuyu\ ;
+狂瀾 > kyouran\ ;
+交信 > koushin\ ;
+中帽 > chuubou\ ;
+春眠 > shunmin\ ;
+頬桁 > hoogeta\ ;
+中巻 > chuukan\ ;
+牧童 > bokudou\ ;
+東京 > toukyou\ ;
+本国 > hongoku\ ;
+説話 > setsuwa\ ;
+食券 > shokken\ ;
+主将 > shushou\ ;
+来信 > raishin\ ;
+最少 > saishou\ ;
+最小 > saishou\ ;
+主審 > shushin\ ;
+二列 > niretsu\ ;
+一括 > ikkatsu\ ;
+非職 > hishoku\ ;
+改鋳 > kaichuu\ ;
+猛撃 > mougeki\ ;
+敏速 > binsoku\ ;
+頬杖 > hoodzue\ ;
+新著 > shincho\ ;
+珍什 > chinjuu\ ;
+羞恥 > shuuchi\ ;
+九地 > kyuuchi\ ;
+明確 > meikaku\ ;
+総額 > sougaku\ ;
+二八 > nihachi\ ;
+諫臣 > kanshin\ ;
+静聴 > seichou\ ;
+景況 > keikyou\ ;
+総領 > souryou\ ;
+日給 > nikkyuu\ ;
+大衆 > taishuu\ ;
+朱唇 > shushin\ ;
+集金 > shuukin\ ;
+雨足 > ameashi\ ;
+整調 > seichou\ ;
+敷設 > fusetsu\ ;
+暦数 > rekisuu\ ;
+新茶 > shincha\ ;
+風圧 > fuuatsu\ ;
+総革 > sougawa\ ;
+中尊 > chuuzon\ ;
+外角 > gaikaku\ ;
+中将 > chuujou\ ;
+明瞭 > meiryou\ ;
+縷説 > rusetsu\ ;
+集配 > shuuhai\ ;
+月央 > getsuou\ ;
+中宮 > chuuguu\ ;
+綿飴 > wataame\ ;
+月夜 > tsukiyo\ ;
+版籍 > hanseki\ ;
+変調 > henchou\ ;
+三徳 > santoku\ ;
+陰鬱 > in''utsu\ ;
+緑陰 > ryokuin\ ;
+敵視 > tekishi\ ;
+講究 > koukyuu\ ;
+放逸 > houitsu\ ;
+上役 > uwayaku\ ;
+増額 > zougaku\ ;
+一息 > hitoiki\ ;
+新興 > shinkou\ ;
+乳剤 > nyuuzai\ ;
+明白 > meihaku\ ;
+改進 > kaishin\ ;
+下座 > shimoza\ ;
+謙称 > kenshou\ ;
+領有 > ryouyuu\ ;
+一念 > ichinen\ ;
+万引 > manbiki\ ;
+耕作 > kousaku\ ;
+特産 > tokusan\ ;
+顕彰 > kenshou\ ;
+木口 > kiguchi\ ;
+一徹 > ittetsu\ ;
+顔役 > kaoyaku\ ;
+翻刻 > honkoku\ ;
+食事 > shokuji\ ;
+総長 > souchou\ ;
+三年 > san''nen\ ;
+日立 > hitachi\ ;
+救貧 > kyuuhin\ ;
+断腸 > danchou\ ;
+上席 > jouseki\ ;
+認証 > ninshou\ ;
+杏仁 > kyounin\ ;
+万年 > man''nen\ ;
+物的 > butteki\ ;
+旧稿 > kyuukou\ ;
+陸風 > rikufuu\ ;
+一式 > isshiki\ ;
+朗唱 > roushou\ ;
+狂死 > kyoushi\ ;
+老僕 > rouboku\ ;
+群小 > gunshou\ ;
+状況 > joukyou\ ;
+新聞 > shinbun\ ;
+中夭 > chuuyou\ ;
+本則 > honsoku\ ;
+中天 > chuuten\ ;
+綱領 > kouryou\ ;
+中外 > chuugai\ ;
+教誨 > kyoukai\ ;
+奴等 > yatsura\ ;
+独断 > dokudan\ ;
+詰責 > kisseki\ ;
+耐久 > taikyuu\ ;
+隊長 > taichou\ ;
+難読 > nandoku\ ;
+顧客 > kokyaku\ ;
+独文 > dokubun\ ;
+一帖 > ichijou\ ;
+旗竿 > hatazao\ ;
+霊薬 > reiyaku\ ;
+一巡 > ichijun\ ;
+焼香 > shoukou\ ;
+教訓 > kyoukun\ ;
+不屈 > fukutsu\ ;
+木刀 > bokutou\ ;
+続騰 > zokutou\ ;
+新羅 > shiragi\ ;
+声調 > seichou\ ;
+増長 > zouchou\ ;
+暁星 > gyousei\ ;
+険難 > ken''nan\ ;
+上履 > uwabaki\ ;
+本元 > honmoto\ ;
+中堅 > chuuken\ ;
+中堂 > chuudou\ ;
+夏蚕 > natsugo\ ;
+三尺 > sanjaku\ ;
+天草 > tengusa\ ;
+月商 > gesshou\ ;
+線量 > senryou\ ;
+不実 > fujitsu\ ;
+面積 > menseki\ ;
+下宿 > geshuku\ ;
+議決 > giketsu\ ;
+乱作 > ransaku\ ;
+下家 > shitaya\ ;
+上宿 > jouyado\ ;
+豊凶 > houkyou\ ;
+猟師 > ryoushi\ ;
+旧知 > kyuuchi\ ;
+牛痘 > gyuutou\ ;
+詳論 > shouron\ ;
+物理 > butsuri\ ;
+更地 > sarachi\ ;
+牛疫 > gyuueki\ ;
+木像 > mokuzou\ ;
+朝刊 > choukan\ ;
+朝凪 > asanagi\ ;
+主唱 > shushou\ ;
+編輯 > henshuu\ ;
+一局 > ikkyoku\ ;
+一尺 > isshaku\ ;
+独探 > dokutan\ ;
+緑野 > ryokuya\ ;
+七宝 > shippou\ ;
+詳言 > shougen\ ;
+総量 > souryou\ ;
+旧盤 > kyuuban\ ;
+詳解 > shoukai\ ;
+契約 > keiyaku\ ;
+難行 > nangyou\ ;
+月収 > gesshuu\ ;
+雑話 > zatsuwa\ ;
+旧盆 > kyuubon\ ;
+一宿 > isshuku\ ;
+乱丁 > ranchou\ ;
+無骨 > bukotsu\ ;
+売行 > ureyuki\ ;
+頁数 > pējisuu\ ;
+断続 > danzoku\ ;
+音曲 > ongyoku\ ;
+一存 > ichizon\ ;
+夕菅 > yuusuge\ ;
+施策 > shisaku\ ;
+日白 > nippaku\ ;
+大腸 > daichou\ ;
+牢獄 > rougoku\ ;
+犬橇 > inuzori\ ;
+与奪 > yodatsu\ ;
+本人 > hon''nin\ ;
+除雪 > josetsu\ ;
+熟談 > jukudan\ ;
+失考 > shikkou\ ;
+牡猫 > osuneko\ ;
+晩春 > banshun\ ;
+夜色 > yashoku\ ;
+独房 > dokubou\ ;
+景教 > keikyou\ ;
+中啓 > chuukei\ ;
+新米 > shinmai\ ;
+方策 > housaku\ ;
+犬槙 > inumaki\ ;
+木仏 > kibutsu\ ;
+早番 > hayaban\ ;
+多色 > tashoku\ ;
+暦年 > rekinen\ ;
+本丸 > honmaru\ ;
+晩方 > bangata\ ;
+天聴 > tenchou\ ;
+繭紬 > kenchuu\ ;
+猟官 > ryoukan\ ;
+青票 > seihyou\ ;
+豊作 > housaku\ ;
+猛将 > moushou\ ;
+風俗 > fuuzoku\ ;
+狂暴 > kyoubou\ ;
+上声 > joushou\ ;
+丈夫 > masurao\ ;
+月利 > getsuri\ ;
+改訳 > kaiyaku\ ;
+増量 > zouryou\ ;
+零落 > reiraku\ ;
+丸十 > marujuu\ ;
+集計 > shuukei\ ;
+話術 > wajutsu\ ;
+牝犬 > mesuinu\ ;
+熟覧 > jukuran\ ;
+熟視 > jukushi\ ;
+面目 > menmoku\ ;
+煎鍋 > irinabe\ ;
+玄人 > kurouto\ ;
+断箱 > danbako\ ;
+朝会 > choukai\ ;
+填隙 > tengeki\ ;
+上塗 > uwanuri\ ;
+一如 > ichinyo\ ;
+不埒 > furachi\ ;
+緊迫 > kinpaku\ ;
+万境 > bankyou\ ;
+論策 > ronsaku\ ;
+訳載 > yakusai\ ;
+有償 > yuushou\ ;
+明澄 > meichou\ ;
+一大 > ichidai\ ;
+評論 > hyouron\ ;
+調練 > chouren\ ;
+中原 > chuugen\ ;
+誤脱 > godatsu\ ;
+狂文 > kyoubun\ ;
+読者 > dokusha\ ;
+売薬 > baiyaku\ ;
+豆乳 > tounyuu\ ;
+一声 > hitokoe\ ;
+霊肉 > reiniku\ ;
+中半 > chuuhan\ ;
+料紙 > ryoushi\ ;
+整腸 > seichou\ ;
+下地 > shitaji\ ;
+新種 > shinshu\ ;
+増進 > zoushin\ ;
+面疔 > menchou\ ;
+頂戴 > choudai\ ;
+論究 > ronkyuu\ ;
+新税 > shinzei\ ;
+降雹 > kouhyou\ ;
+静的 > seiteki\ ;
+評言 > hyougen\ ;
+下図 > shitazu\ ;
+一塁 > ichirui\ ;
+改行 > kaigyou\ ;
+一場 > ichijou\ ;
+丸公 > marukou\ ;
+語脈 > gomyaku\ ;
+好球 > koukyuu\ ;
+三国 > sangoku\ ;
+両名 > ryoumei\ ;
+随身 > zuishin\ ;
+一堂 > ichidou\ ;
+万国 > bankoku\ ;
+無雑 > muzatsu\ ;
+中前 > chuuzen\ ;
+親鸞 > shinran\ ;
+料簡 > ryouken\ ;
+電脳 > den''nou\ ;
+中判 > chuuban\ ;
+中分 > chuubun\ ;
+絶頂 > zetchou\ ;
+頑強 > gankyou\ ;
+旧版 > kyuuban\ ;
+繋縛 > keibaku\ ;
+族生 > zokusei\ ;
+談笑 > danshou\ ;
+太糸 > futoito\ ;
+始業 > shigyou\ ;
+一団 > ichidan\ ;
+記述 > kijutsu\ ;
+早熟 > soujuku\ ;
+誇色 > koshoku\ ;
+託送 > takusou\ ;
+計量 > keiryou\ ;
+統領 > touryou\ ;
+雌蘂 > meshibe\ ;
+中元 > chuugen\ ;
+順応 > jun''nou\ ;
+陸送 > rikusou\ ;
+月事 > getsuji\ ;
+親鳥 > oyadori\ ;
+給養 > kyuuyou\ ;
+特段 > tokudan\ ;
+両前 > ryoumae\ ;
+大粒 > ootsubu\ ;
+三唱 > sanshou\ ;
+上唇 > joushin\ ;
+訓迪 > kunteki\ ;
+特殊 > tokushu\ ;
+説経 > sekkyou\ ;
+境遇 > kyouguu\ ;
+日照 > nisshou\ ;
+救荒 > kyuukou\ ;
+試薬 > shiyaku\ ;
+詐術 > sajutsu\ ;
+両分 > ryoubun\ ;
+雌蕊 > meshibe\ ;
+両刀 > ryoutou\ ;
+撥音 > hatsuon\ ;
+書信 > shoshin\ ;
+時日 > jijitsu\ ;
+一喝 > ikkatsu\ ;
+不吉 > fukitsu\ ;
+緩衝 > kanshou\ ;
+上告 > joukoku\ ;
+両全 > ryouzen\ ;
+陸軍 > rikugun\ ;
+両党 > ryoutou\ ;
+一問 > ichimon\ ;
+証言 > shougen\ ;
+昇汞 > shoukou\ ;
+雨脚 > ameashi\ ;
+新盤 > shinban\ ;
+註解 > chuukai\ ;
+韻律 > inritsu\ ;
+暴圧 > bouatsu\ ;
+天竺 > tenjiku\ ;
+許諾 > kyodaku\ ;
+爆砕 > bakusai\ ;
+両像 > ryouzou\ ;
+狂態 > kyoutai\ ;
+大笑 > taishou\ ;
+婿入 > mukoiri\ ;
+訳詩 > yakushi\ ;
+昇殿 > shouden\ ;
+離脱 > ridatsu\ ;
+訳詞 > yakushi\ ;
+昇段 > shoudan\ ;
+牧民 > bokumin\ ;
+天窓 > tenmado\ ;
+一命 > ichimei\ ;
+教育 > kyouiku\ ;
+一味 > hitoaji\ ;
+失禁 > shikkin\ ;
+総評 > souhyou\ ;
+妙法 > myouhou\ ;
+給電 > kyuuden\ ;
+中仕 > nakashi\ ;
+親骨 > oyabone\ ;
+文章 > bunshou\ ;
+書中 > shochuu\ ;
+万博 > banpaku\ ;
+一名 > ichimei\ ;
+一同 > ichidou\ ;
+音律 > onritsu\ ;
+下劣 > geretsu\ ;
+難聴 > nanchou\ ;
+一号 > ichigou\ ;
+一台 > ichidai\ ;
+離職 > rishoku\ ;
+三助 > sansuke\ ;
+両便 > ryouben\ ;
+春本 > shunpon\ ;
+七十 > nanajuu\ ;
+中世 > chuusei\ ;
+覿面 > tekimen\ ;
+天福 > tenpuku\ ;
+新田 > shinden\ ;
+万力 > manriki\ ;
+新生 > shinsei\ ;
+上刻 > joukoku\ ;
+丁半 > chouhan\ ;
+大福 > daifuku\ ;
+願力 > ganriki\ ;
+天祐 > ten''yuu\ ;
+昨晩 > sakuban\ ;
+晩年 > ban''nen\ ;
+照覧 > shouran\ ;
+春暖 > shundan\ ;
+緊要 > kin''you\ ;
+一勺 > isshaku\ ;
+誓約 > seiyaku\ ;
+智将 > chishou\ ;
+妨業 > bougyou\ ;
+詩興 > shikyou\ ;
+両人 > ryounin\ ;
+観音 > kan''non\ ;
+時折 > tokiori\ ;
+牽束 > kensoku\ ;
+撰録 > senroku\ ;
+改良 > kairyou\ ;
+施物 > semotsu\ ;
+奮激 > fungeki\ ;
+両三 > ryousan\ ;
+電算 > densoro\ ;
+親類 > shinrui\ ;
+独奏 > dokusou\ ;
+結露 > ketsuro\ ;
+旧法 > kyuuhou\ ;
+教練 > kyouren\ ;
+特有 > tokuyuu\ ;
+上側 > uwagawa\ ;
+晶子 > shoushi\ ;
+縦糸 > tateito\ ;
+一冊 > issatsu\ ;
+姦悪 > kan''aku\ ;
+角錐 > kakusui\ ;
+結集 > kesshuu\ ;
+下値 > shitane\ ;
+女湯 > on''nayu\ ;
+一元 > ichigen\ ;
+羅列 > raretsu\ ;
+暖国 > dankoku\ ;
+爽涼 > souryou\ ;
+天真 > tenshin\ ;
+陳謝 > chinsha\ ;
+斑白 > hanpaku\ ;
+一億 > ichioku\ ;
+訓読 > kundoku\ ;
+丘上 > kyuujou\ ;
+爛熟 > ranjuku\ ;
+好況 > koukyou\ ;
+既決 > kiketsu\ ;
+試聴 > shichou\ ;
+明朝 > minchou\ ;
+託言 > takugen\ ;
+領域 > ryouiki\ ;
+暁天 > gyouten\ ;
+言責 > genseki\ ;
+新版 > shinpan\ ;
+親電 > shinden\ ;
+太白 > taihaku\ ;
+特旨 > tokushi\ ;
+上作 > jousaku\ ;
+天皇 > ten''nou\ ;
+上伸 > joushin\ ;
+数秒 > suubyou\ ;
+散策 > sansaku\ ;
+文相 > bunshou\ ;
+売約 > baiyaku\ ;
+三伸 > sanshin\ ;
+旧歓 > kyuukan\ ;
+大白 > taihaku\ ;
+万作 > mansaku\ ;
+明晰 > meiseki\ ;
+晩学 > bangaku\ ;
+領地 > ryouchi\ ;
+焦躁 > shousou\ ;
+明晩 > myouban\ ;
+一倍 > ichibai\ ;
+敬称 > keishou\ ;
+終電 > shuuden\ ;
+上人 > shounin\ ;
+日欧 > nichiou\ ;
+上京 > joukyou\ ;
+明星 > myoujou\ ;
+三人 > san''nin\ ;
+縦笛 > tatebue\ ;
+集群 > shuugun\ ;
+万人 > man''nin\ ;
+教範 > kyouhan\ ;
+一例 > ichirei\ ;
+大病 > taibyou\ ;
+敬神 > keishin\ ;
+特撰 > tokusen\ ;
+調琴 > choukin\ ;
+頭取 > toudori\ ;
+順境 > junkyou\ ;
+雨笠 > amagasa\ ;
+給金 > kyuukin\ ;
+詳細 > shousai\ ;
+縦穴 > tateana\ ;
+一任 > ichinin\ ;
+大男 > oootoko\ ;
+一代 > ichidai\ ;
+罰則 > bassoku\ ;
+震盪 > shintou\ ;
+霊的 > reiteki\ ;
+静注 > jouchuu\ ;
+外相 > gaishou\ ;
+多発 > tahatsu\ ;
+雨空 > amazora\ ;
+然諾 > zendaku\ ;
+詮索 > sensaku\ ;
+繋留 > keiryuu\ ;
+散票 > sanpyou\ ;
+練習 > renshuu\ ;
+評者 > hyousha\ ;
+熟練 > jukuren\ ;
+一丸 > ichigan\ ;
+外的 > gaiteki\ ;
+独善 > dokuzen\ ;
+夏着 > natsugi\ ;
+詩経 > shikyou\ ;
+特捜 > tokusou\ ;
+天球 > tenkyuu\ ;
+旧棲 > kyuusei\ ;
+妻戸 > tsumado\ ;
+教程 > kyoutei\ ;
+斑猫 > hanmyou\ ;
+晋山 > shinzan\ ;
+猟人 > ryoujin\ ;
+旋毛 > tsumuji\ ;
+報酬 > houshuu\ ;
+烈震 > resshin\ ;
+春情 > shunjou\ ;
+緬羊 > men''you\ ;
+旧栖 > kyuusei\ ;
+縟礼 > jokurei\ ;
+大獄 > taigoku\ ;
+大猟 > tairyou\ ;
+狂奔 > kyouhon\ ;
+墨色 > sumiiro\ ;
+総花 > soubana\ ;
+敦睦 > tonboku\ ;
+要領 > youryou\ ;
+独吟 > dokugin\ ;
+覆面 > fukumen\ ;
+織物 > orimono\ ;
+敬白 > keihaku\ ;
+奔流 > honryuu\ ;
+旧来 > kyuurai\ ;
+早朝 > souchou\ ;
+旧村 > kyuuson\ ;
+時局 > jikyoku\ ;
+支給 > shikyuu\ ;
+政策 > seisaku\ ;
+独占 > dokusen\ ;
+変症 > henshou\ ;
+日朝 > nitchou\ ;
+支索 > shisaku\ ;
+如月 > nigatsu\ ;
+早暁 > sougyou\ ;
+失点 > shitten\ ;
+雑穀 > zakkoku\ ;
+襟髪 > erigami\ ;
+親里 > oyazato\ ;
+照臨 > shourin\ ;
+早春 > soushun\ ;
+昨年 > sakunen\ ;
+謹慎 > kinshin\ ;
+解読 > kaidoku\ ;
+天然 > ten''nen\ ;
+新法 > shinpou\ ;
+奥様 > okusama\ ;
+独創 > dokusou\ ;
+日時 > nichiji\ ;
+緑肥 > ryokuhi\ ;
+領分 > ryoubun\ ;
+緯糸 > yokoito\ ;
+雪白 > seppaku\ ;
+特性 > tokusei\ ;
+特急 > tokkyuu\ ;
+攻究 > koukyuu\ ;
+領内 > ryounai\ ;
+附設 > fusetsu\ ;
+電球 > denkyuu\ ;
+牽強 > kenkyou\ ;
+片方 > katahou\ ;
+教皇 > kyoukou\ ;
+詞章 > shishou\ ;
+訳者 > yakusha\ ;
+特待 > tokutai\ ;
+襟首 > erikubi\ ;
+奪格 > dakkaku\ ;
+敵状 > tekijou\ ;
+撃退 > gekitai\ ;
+難癖 > nankuse\ ;
+改称 > kaishou\ ;
+妙手 > myoushu\ ;
+春嵐 > shunran\ ;
+襲雷 > shuurai\ ;
+妙所 > myousho\ ;
+親近 > shinkin\ ;
+明徴 > meichou\ ;
+明徳 > meitoku\ ;
+難症 > nanshou\ ;
+難病 > nanbyou\ ;
+無血 > muketsu\ ;
+覚醒 > kakusei\ ;
+締約 > teiyaku\ ;
+識字 > shikiji\ ;
+防諜 > bouchou\ ;
+暁光 > gyoukou\ ;
+教生 > kyousei\ ;
+昔年 > sekinen\ ;
+請求 > seikyuu\ ;
+大漁 > tairyou\ ;
+炒飯 > chaahan\ ;
+頃刻 > keikoku\ ;
+陥落 > kanraku\ ;
+誘爆 > yuubaku\ ;
+青松 > seishou\ ;
+外為 > gaitame\ ;
+証紙 > shoushi\ ;
+震災 > shinsai\ ;
+景勝 > keishou\ ;
+春寒 > shunkan\ ;
+統覚 > toukaku\ ;
+爆死 > bakushi\ ;
+網膜 > moumaku\ ;
+熟知 > jukuchi\ ;
+明年 > myounen\ ;
+天測 > tensoku\ ;
+天減 > tenbiki\ ;
+奏楽 > sougaku\ ;
+領会 > ryoukai\ ;
+調法 > chouhou\ ;
+昌平 > shouhei\ ;
+姉婿 > anemuko\ ;
+終車 > shuusha\ ;
+暑中 > shochuu\ ;
+綿羊 > men''you\ ;
+精麦 > seibaku\ ;
+熟睡 > jukusui\ ;
+縫物 > nuimono\ ;
+斯業 > shigyou\ ;
+晶光 > shoukou\ ;
+緊縛 > kinbaku\ ;
+観賞 > kanshou\ ;
+韓国 > kankoku\ ;
+難球 > nankyuu\ ;
+熟眠 > jukumin\ ;
+墨糸 > sumiito\ ;
+陰膳 > kagezen\ ;
+詩的 > shiteki\ ;
+領主 > ryoushu\ ;
+星学 > seigaku\ ;
+天津 > tenshin\ ;
+青春 > seishun\ ;
+暇人 > himajin\ ;
+観象 > kanshou\ ;
+音力 > onryoku\ ;
+為銀 > tamegin\ ;
+訓育 > kun''iku\ ;
+奥方 > okugata\ ;
+狩人 > karyudo\ ;
+累進 > ruishin\ ;
+天泣 > tenkyuu\ ;
+奮撃 > fungeki\ ;
+焼芋 > yakiimo\ ;
+旧懐 > kyuukai\ ;
+陪臣 > baishin\ ;
+牧師 > bokushi\ ;
+新案 > shin''an\ ;
+震源 > shingen\ ;
+旧慣 > kyuukan\ ;
+階級 > kaikyuu\ ;
+旧態 > kyuutai\ ;
+特定 > tokutei\ ;
+昨夕 > sakuyuu\ ;
+隻眼 > sekigan\ ;
+燃焼 > nenshou\ ;
+新来 > shinrai\ ;
+易学 > ekigaku\ ;
+増給 > zoukyuu\ ;
+旧悪 > kyuuaku\ ;
+数滴 > suuteki\ ;
+綾絹 > ayaginu\ ;
+索道 > sakudou\ ;
+妻妾 > saishou\ ;
+旧恨 > kyuukon\ ;
+早急 > soukyuu\ ;
+結語 > ketsugo\ ;
+新書 > shinsho\ ;
+純量 > junryou\ ;
+女手 > on''nade\ ;
+熱狂 > nekkyou\ ;
+女房 > nyoubou\ ;
+外海 > sotoumi\ ;
+大正 > taishou\ ;
+失権 > shikken\ ;
+大欲 > taiyoku\ ;
+結託 > kettaku\ ;
+外注 > gaichuu\ ;
+防虫 > bouchuu\ ;
+外泊 > gaihaku\ ;
+新星 > shinsei\ ;
+覆輪 > fukurin\ ;
+整流 > seiryuu\ ;
+頂上 > choujou\ ;
+熱燗 > atsukan\ ;
+日当 > hiatari\ ;
+糠雨 > nukaame\ ;
+総称 > soushou\ ;
+旧弊 > kyuuhei\ ;
+火食 > kashoku\ ;
+特大 > tokudai\ ;
+親許 > oyamoto\ ;
+春坊 > harubou\ ;
+詫状 > wabijou\ ;
+電流 > denryuu\ ;
+警告 > keikoku\ ;
+特売 > tokubai\ ;
+新政 > shinsei\ ;
+斬新 > zanshin\ ;
+犯則 > hansoku\ ;
+障碍 > shougai\ ;
+無色 > mushoku\ ;
+外殻 > gaikaku\ ;
+雌犬 > mesuinu\ ;
+天業 > tengyou\ ;
+論敵 > ronteki\ ;
+雀球 > jankyuu\ ;
+文様 > mon''you\ ;
+大業 > taigyou\ ;
+旧師 > kyuushi\ ;
+旅所 > tabisho\ ;
+糸鋸 > itonoko\ ;
+新撰 > shinsen\ ;
+観衆 > kanshuu\ ;
+放牧 > houboku\ ;
+特報 > tokuhou\ ;
+文楽 > bunraku\ ;
+無腰 > mugoshi\ ;
+親裁 > shinsai\ ;
+面影 > omokage\ ;
+煙突 > entotsu\ ;
+墓穴 > boketsu\ ;
+狂人 > kyoujin\ ;
+調書 > chousho\ ;
+昇天 > shouten\ ;
+親衛 > shin''ei\ ;
+狂乱 > kyouran\ ;
+革帯 > kawaobi\ ;
+天柱 > tenchuu\ ;
+旅愁 > ryoshuu\ ;
+解脱 > gedatsu\ ;
+昼前 > hirumae\ ;
+続編 > zokuhen\ ;
+熱演 > netsuen\ ;
+雪洞 > bonbori\ ;
+無職 > mushoku\ ;
+総督 > soutoku\ ;
+間隙 > kangeki\ ;
+視診 > shishin\ ;
+間隔 > kankaku\ ;
+靴屋 > kutsuya\ ;
+堅調 > kenchou\ ;
+斎服 > saifuku\ ;
+旧居 > kyuukyo\ ;
+緩球 > kankyuu\ ;
+継続 > keizoku\ ;
+天朝 > tenchou\ ;
+視角 > shikaku\ ;
+旧封 > kyuuhou\ ;
+誤植 > goshoku\ ;
+陋習 > roushuu\ ;
+大木 > taiboku\ ;
+城郭 > joukaku\ ;
+救済 > kyuusai\ ;
+視覚 > shikaku\ ;
+総皮 > sougawa\ ;
+陸稲 > rikutou\ ;
+教法 > kyouhou\ ;
+調整 > chousei\ ;
+旧官 > kyuukan\ ;
+失敬 > shikkei\ ;
+開陳 > kaichin\ ;
+失敗 > shippai\ ;
+好尚 > koushou\ ;
+奇抜 > kibatsu\ ;
+失政 > shissei\ ;
+討究 > toukyuu\ ;
+霊柩 > reikyuu\ ;
+読本 > dokuhon\ ;
+防臭 > boushuu\ ;
+読書 > dokusho\ ;
+犯人 > han''nin\ ;
+奥庭 > okuniwa\ ;
+説服 > seppuku\ ;
+妊娠 > ninshin\ ;
+奥底 > okuzoko\ ;
+牧地 > bokuchi\ ;
+敦樸 > tonboku\ ;
+好学 > kougaku\ ;
+編物 > amimono\ ;
+続篇 > zokuhen\ ;
+天敵 > tenteki\ ;
+経蔵 > kyouzou\ ;
+霊木 > reiboku\ ;
+夜曲 > yakyoku\ ;
+総画 > soukaku\ ;
+大敵 > taiteki\ ;
+特命 > tokumei\ ;
+陣笠 > jingasa\ ;
+隆盛 > ryuusei\ ;
+評点 > hyouten\ ;
+新患 > shinkan\ ;
+救民 > kyuumin\ ;
+要訳 > youyaku\ ;
+旧姓 > kyuusei\ ;
+降給 > koukyuu\ ;
+旧妻 > kyuusai\ ;
+文教 > bunkyou\ ;
+面容 > men''you\ ;
+変梃 > henteko\ ;
+米麦 > beibaku\ ;
+細螺 > kishago\ ;
+熱気 > netsuke\ ;
+昨冬 > sakutou\ ;
+春分 > shunbun\ ;
+観菊 > kangiku\ ;
+旧好 > kyuukou\ ;
+電柱 > denchuu\ ;
+開鑿 > kaisaku\ ;
+長雨 > nagaame\ ;
+変格 > henkaku\ ;
+旧套 > kyuutou\ ;
+語末 > gomatsu\ ;
+糧道 > ryoudou\ ;
+襟足 > eriashi\ ;
+謹告 > kinkoku\ ;
+説教 > sekkyou\ ;
+摘要 > tekiyou\ ;
+證券 > shouken\ ;
+教権 > kyouken\ ;
+旦夕 > tanseki\ ;
+断念 > dan''nen\ ;
+日夜 > nichiya\ ;
+城跡 > jouseki\ ;
+日夕 > nisseki\ ;
+春光 > shunkou\ ;
+放流 > houryuu\ ;
+震旦 > shintan\ ;
+奥山 > okuyama\ ;
+旧墟 > kyuukyo\ ;
+静寂 > seijaku\ ;
+解約 > kaiyaku\ ;
+失投 > shittou\ ;
+綱目 > koumoku\ ;
+火鉢 > hibachi\ ;
+絶縁 > zetsuen\ ;
+夕方 > yuugata\ ;
+執行 > shikkou\ ;
+粗食 > soshoku\ ;
+敬服 > keifuku\ ;
+外敵 > gaiteki\ ;
+故殺 > kosatsu\ ;
+要衝 > youshou\ ;
+妄執 > moushuu\ ;
+境目 > sakaime\ ;
+夏日 > kajitsu\ ;
+震撼 > shinkan\ ;
+敦朴 > tonboku\ ;
+声楽 > seigaku\ ;
+旧型 > kyuukei\ ;
+旅客 > ryokaku\ ;
+面妖 > men''you\ ;
+昭代 > shoudai\ ;
+無筆 > muhitsu\ ;
+特写 > tokusha\ ;
+失態 > shittai\ ;
+旧址 > kyuushi\ ;
+結腸 > ketchou\ ;
+旧地 > kyuuchi\ ;
+特典 > tokuten\ ;
+堪能 > tan''nou\ ;
+製革 > seikaku\ ;
+失意 > shitsui\ ;
+爆弾 > bakudan\ ;
+特免 > tokumen\ ;
+支流 > shiryuu\ ;
+揚陸 > youriku\ ;
+親船 > oyabune\ ;
+陸産 > rikusan\ ;
+陸生 > rikusei\ ;
+面壁 > menpeki\ ;
+探鳥 > tanchou\ ;
+親臨 > shinrin\ ;
+約言 > yakugen\ ;
+境界 > kyoukai\ ;
+教条 > kyoujou\ ;
+粗雑 > sozatsu\ ;
+教材 > kyouzai\ ;
+教本 > kyouhon\ ;
+電撃 > dengeki\ ;
+教書 > kyousho\ ;
+降神 > koushin\ ;
+間近 > madjika\ ;
+新居 > shinkyo\ ;
+紺色 > kon''iro\ ;
+継目 > tsugime\ ;
+雷撃 > raigeki\ ;
+塾生 > jukusei\ ;
+調弦 > chougen\ ;
+失当 > shittou\ ;
+燃料 > nenryou\ ;
+計画 > keikaku\ ;
+特例 > tokurei\ ;
+隠滅 > inmetsu\ ;
+特使 > tokushi\ ;
+大息 > taisoku\ ;
+集権 > shuuken\ ;
+開通 > kaitsuu\ ;
+陣痛 > jintsuu\ ;
+外戚 > gaiseki\ ;
+天心 > tenshin\ ;
+組職 > soshoku\ ;
+網猟 > amiryou\ ;
+斯学 > shigaku\ ;
+敵手 > tekishu\ ;
+売春 > baishun\ ;
+大徳 > daitoku\ ;
+離日 > rinichi\ ;
+精進 > shoujin\ ;
+大役 > taiyaku\ ;
+精通 > seitsuu\ ;
+煉獄 > rengoku\ ;
+親署 > shinsho\ ;
+諸国 > shokoku\ ;
+旧名 > kyuumei\ ;
+牛刀 > gyuutou\ ;
+難敵 > nanteki\ ;
+旧号 > kyuugou\ ;
+瀝青 > rekisei\ ;
+大弓 > daikyuu\ ;
+旧友 > kyuuyuu\ ;
+結縁 > kechien\ ;
+袞龍 > konryou\ ;
+新婚 > shinkon\ ;
+文弱 > bunjaku\ ;
+日収 > nisshuu\ ;
+雑木 > zouboku\ ;
+説得 > settoku\ ;
+靖国 > seikoku\ ;
+明亮 > meiryou\ ;
+天幕 > tenmaku\ ;
+士族 > shizoku\ ;
+熟柿 > jukushi\ ;
+閲覧 > etsuran\ ;
+革命 > kakumei\ ;
+織布 > shokufu\ ;
+日印 > nichiin\ ;
+繊弱 > senjaku\ ;
+細腕 > hosoude\ ;
+織工 > shokkou\ ;
+照準 > shoujun\ ;
+零戦 > zerosen\ ;
+敵情 > tekijou\ ;
+昇任 > shounin\ ;
+覚者 > kakusha\ ;
+視聴 > shichou\ ;
+組織 > soshiki\ ;
+長逝 > chousei\ ;
+附着 > fuchaku\ ;
+謬伝 > byuuden\ ;
+外心 > gaishin\ ;
+敵性 > tekisei\ ;
+誠忠 > seichuu\ ;
+誘惑 > yuuwaku\ ;
+牧人 > bokujin\ ;
+旧制 > kyuusei\ ;
+経糸 > tateito\ ;
+長辺 > chouhen\ ;
+誠心 > seishin\ ;
+霊廟 > reibyou\ ;
+詮方 > senkata\ ;
+旧刊 > kyuukan\ ;
+旭光 > kyokkou\ ;
+失対 > shittai\ ;
+片前 > katamae\ ;
+諜報 > chouhou\ ;
+墨池 > bokuchi\ ;
+垂迹 > suijaku\ ;
+整復 > seifuku\ ;
+旧冬 > kyuutou\ ;
+支柱 > shichuu\ ;
+墨汁 > bokujuu\ ;
+改暦 > kaireki\ ;
+新報 > shinpou\ ;
+外廓 > gaikaku\ ;
+阪神 > hanshin\ ;
+調子 > choushi\ ;
+旧典 > kyuuten\ ;
+敵弾 > tekidan\ ;
+門跡 > monzeki\ ;
+粗金 > aragane\ ;
+政敵 > seiteki\ ;
+親米 > shinbei\ ;
+敏捷 > binshou\ ;
+版元 > hanmoto\ ;
+政教 > seikyou\ ;
+試料 > shiryou\ ;
+襁褓 > mutsuki\ ;
+純良 > junryou\ ;
+変心 > henshin\ ;
+教戒 > kyoukai\ ;
+大小 > daishou\ ;
+大将 > daishou\ ;
+旧債 > kyuusai\ ;
+間諜 > kanchou\ ;
+見習 > minarai\ ;
+改新 > kaishin\ ;
+新地 > shinchi\ ;
+繋属 > keizoku\ ;
+放擲 > houteki\ ;
+敷布 > shikifu\ ;
+集散 > shuusan\ ;
+採集 > saishuu\ ;
+牛丼 > gyuudon\ ;
+角盆 > kakubon\ ;
+爽凉 > souryou\ ;
+詔書 > shousho\ ;
+大学 > daigaku\ ;
+親等 > shintou\ ;
+壁板 > kabeita\ ;
+妄信 > moushin\ ;
+文学 > bungaku\ ;
+攻撃 > kougeki\ ;
+緑樹 > ryokuju\ ;
+爪印 > tsumein\ ;
+旧例 > kyuurei\ ;
+支族 > shizoku\ ;
+糞蝿 > kusobae\ ;
+墜死 > tsuishi\ ;
+奨励 > shourei\ ;
+織姫 > orihime\ ;
+調声 > chousei\ ;
+褒賞 > houshou\ ;
+紅色 > beniiro\ ;
+陸海 > rikukai\ ;
+終端 > shuutan\ ;
+日伯 > nippaku\ ;
+旋削 > sensaku\ ;
+角番 > kadoban\ ;
+精読 > seidoku\ ;
+織女 > shokujo\ ;
+旧交 > kyuukou\ ;
+日付 > hidzuke\ ;
+熱愛 > netsuai\ ;
+境涯 > kyougai\ ;
+霜夜 > shimoyo\ ;
+焦燥 > shousou\ ;
+女傑 > joketsu\ ;
+天女 > ten''nyo\ ;
+角瓶 > kakubin\ ;
+紡績 > bouseki\ ;
+詩抄 > shishou\ ;
+旧主 > kyuushu\ ;
+大女 > ooon''na\ ;
+敵対 > tekitai\ ;
+計測 > keisoku\ ;
+新品 > shinpin\ ;
+奉唱 > houshou\ ;
+親祭 > shinsai\ ;
+料地 > ryouchi\ ;
+無熱 > munetsu\ ;
+結石 > kesseki\ ;
+長講 > choukou\ ;
+総桐 > sougiri\ ;
+焦点 > shouten\ ;
+熟成 > jukusei\ ;
+証書 > shousho\ ;
+論告 > ronkoku\ ;
+熱心 > nesshin\ ;
+解熱 > genetsu\ ;
+奉告 > houkoku\ ;
+失地 > shitchi\ ;
+新参 > shinzan\ ;
+集成 > shuusei\ ;
+数学 > suugaku\ ;
+教師 > kyoushi\ ;
+撃砕 > gekisai\ ;
+読売 > yomiuri\ ;
+掘鑿 > kussaku\ ;
+雹害 > hyougai\ ;
+総柄 > sougara\ ;
+霊妙 > reimyou\ ;
+変容 > hen''you\ ;
+旅僧 > tabisou\ ;
+裸足 > hadashi\ ;
+論及 > ronkyuu\ ;
+採録 > sairoku\ ;
+熟慮 > jukuryo\ ;
+要約 > youyaku\ ;
+炎色 > enshoku\ ;
+熱延 > netsuen\ ;
+訳本 > yakuhon\ ;
+証明 > shoumei\ ;
+墨書 > bokusho\ ;
+紛糾 > funkyuu\ ;
+訳書 > yakusho\ ;
+推量 > suiryou\ ;
+撞球 > doukyuu\ ;
+夙夜 > shukuya\ ;
+熱度 > netsudo\ ;
+震央 > shin''ou\ ;
+堆積 > taiseki\ ;
+累積 > ruiseki\ ;
+隻手 > sekishu\ ;
+天国 > tengoku\ ;
+裏釘 > urakugi\ ;
+裏金 > uragane\ ;
+攪拌 > kakuhan\ ;
+焙烙 > houroku\ ;
+陸橋 > rikkyou\ ;
+認容 > nin''you\ ;
+証文 > shoumon\ ;
+診断 > shindan\ ;
+大国 > taikoku\ ;
+陰欝 > in''utsu\ ;
+註文 > chuumon\ ;
+紺碧 > konpeki\ ;
+新制 > shinsei\ ;
+改悛 > kaishun\ ;
+詩心 > shishin\ ;
+絶無 > zetsumu\ ;
+外壁 > gaiheki\ ;
+熟思 > jukushi\ ;
+新刊 > shinkan\ ;
+新刀 > shintou\ ;
+霄壌 > shoujou\ ;
+放心 > houshin\ ;
+猩々 > shoujou\ ;
+塞源 > sokugen\ ;
+大嘴 > oohashi\ ;
+終盤 > shuuban\ ;
+納経 > noukyou\ ;
+教導 > kyoudou\ ;
+新兵 > shinpei\ ;
+焼死 > shoushi\ ;
+訳文 > yakubun\ ;
+新党 > shintou\ ;
+改心 > kaishin\ ;
+照星 > shousei\ ;
+掛金 > kakekin\ ;
+敗将 > haishou\ ;
+推進 > suishin\ ;
+照明 > shoumei\ ;
+雄心 > yuushin\ ;
+陸棲 > rikusei\ ;
+複視 > fukushi\ ;
+精虫 > seichuu\ ;
+敵塁 > tekirui\ ;
+網棚 > amidana\ ;
+陸棚 > rikuhou\ ;
+教官 > kyoukan\ ;
+国風 > kokufuu\ ;
+隆替 > ryuutai\ ;
+線描 > senbyou\ ;
+見神 > kenshin\ ;
+裁量 > sairyou\ ;
+調合 > chougou\ ;
+政庁 > seichou\ ;
+調号 > chougou\ ;
+陰極 > inkyoku\ ;
+夏場 > natsuba\ ;
+紅組 > akagumi\ ;
+角灯 > kakutou\ ;
+複製 > fukusei\ ;
+外圧 > gaiatsu\ ;
+斉唱 > seishou\ ;
+熟年 > jukunen\ ;
+結球 > kekkyuu\ ;
+堆石 > taiseki\ ;
+外国 > gaikoku\ ;
+接辞 > setsuji\ ;
+精薄 > seihaku\ ;
+敵地 > tekichi\ ;
+捕食 > hoshoku\ ;
+敵国 > tekkoku\ ;
+終生 > shuusei\ ;
+解消 > kaishou\ ;
+変域 > hen''iki\ ;
+陽暦 > youreki\ ;
+大名 > daimyou\ ;
+失効 > shikkou\ ;
+新体 > shintai\ ;
+国電 > kokuden\ ;
+大口 > ooguchi\ ;
+掘進 > kusshin\ ;
+調剤 > chouzai\ ;
+陸曹 > rikusou\ ;
+国難 > kokunan\ ;
+緩急 > kankyuu\ ;
+支度 > shitaku\ ;
+陽春 > youshun\ ;
+国際 > kokusai\ ;
+大厄 > taiyaku\ ;
+紋章 > monshou\ ;
+支庁 > shichou\ ;
+地道 > jimichi\ ;
+親玉 > oyadama\ ;
+新人 > shinjin\ ;
+故実 > kojitsu\ ;
+外商 > gaishou\ ;
+国防 > kokubou\ ;
+放尿 > hounyou\ ;
+解氷 > kaihyou\ ;
+文博 > bunhaku\ ;
+擯斥 > hinseki\ ;
+大勝 > taishou\ ;
+教壇 > kyoudan\ ;
+縮図 > shukuzu\ ;
+間膜 > kanmaku\ ;
+大力 > dairiki\ ;
+操業 > sougyou\ ;
+天則 > tensoku\ ;
+推賞 > suishou\ ;
+無欠 > muketsu\ ;
+詩学 > shigaku\ ;
+激闘 > gekitou\ ;
+観照 > kanshou\ ;
+外周 > gaishuu\ ;
+間脳 > kan''nou\ ;
+教場 > kyoujou\ ;
+困難 > kon''nan\ ;
+縦坑 > tatekou\ ;
+給源 > kyuugen\ ;
+露仏 > rofutsu\ ;
+誡告 > kaikoku\ ;
+給湯 > kyuutou\ ;
+地軸 > chijiku\ ;
+為着 > shikise\ ;
+大凶 > daikyou\ ;
+要目 > youmoku\ ;
+攻学 > kougaku\ ;
+組版 > kumihan\ ;
+調停 > choutei\ ;
+改宗 > kaishuu\ ;
+織元 > orimoto\ ;
+襟章 > erishou\ ;
+開腹 > kaifuku\ ;
+雛壇 > hinadan\ ;
+大兵 > daihyou\ ;
+燭光 > shokkou\ ;
+表題 > hyoudai\ ;
+震動 > shindou\ ;
+教団 > kyoudan\ ;
+純真 > junshin\ ;
+隷属 > reizoku\ ;
+斜交 > hasukai\ ;
+繁劇 > hangeki\ ;
+煩悩 > bon''nou\ ;
+製薬 > seiyaku\ ;
+売国 > baikoku\ ;
+失体 > shittai\ ;
+純益 > jun''eki\ ;
+料亭 > ryoutei\ ;
+親炙 > shinsha\ ;
+複葉 > fukuyou\ ;
+詳報 > shouhou\ ;
+緞帳 > donchou\ ;
+敵勢 > tekizei\ ;
+表面 > hyoumen\ ;
+長芋 > nagaimo\ ;
+隣席 > rinseki\ ;
+純白 > junpaku\ ;
+評定 > hyoutei\ ;
+防毒 > boudoku\ ;
+数匹 > suuhiki\ ;
+夕刻 > yuukoku\ ;
+電卓 > dentaku\ ;
+終点 > shuuten\ ;
+緊急 > kinkyuu\ ;
+降格 > koukaku\ ;
+給水 > kyuusui\ ;
+精肉 > seiniku\ ;
+敵前 > tekizen\ ;
+夕凪 > yuunagi\ ;
+塞栓 > sokusen\ ;
+繚乱 > ryouran\ ;
+天佑 > ten''yuu\ ;
+詩境 > shikyou\ ;
+縄墨 > jouboku\ ;
+大作 > taisaku\ ;
+親潮 > oyashio\ ;
+団長 > danchou\ ;
+闘病 > toubyou\ ;
+補血 > hoketsu\ ;
+観測 > kansoku\ ;
+煮干 > niboshi\ ;
+四阿 > azumaya\ ;
+綱手 > tsunade\ ;
+陸戦 > rikusen\ ;
+天人 > ten''nin\ ;
+灌腸 > kanchou\ ;
+緊張 > kinchou\ ;
+集塵 > shuujin\ ;
+隔年 > kakunen\ ;
+降服 > koufuku\ ;
+外傷 > gaishou\ ;
+変則 > hensoku\ ;
+集塊 > shuukai\ ;
+無札 > musatsu\ ;
+紅白 > kouhaku\ ;
+解析 > kaiseki\ ;
+無月 > mugetsu\ ;
+増徴 > zouchou\ ;
+襲用 > shuuyou\ ;
+説伏 > seppuku\ ;
+熱唱 > nesshou\ ;
+斉一 > seiitsu\ ;
+外信 > gaishin\ ;
+文中 > bunchuu\ ;
+増強 > zoukyou\ ;
+険悪 > ken''aku\ ;
+長考 > choukou\ ;
+長老 > chourou\ ;
+行頭 > gyoutou\ ;
+線審 > senshin\ ;
+西独 > seidoku\ ;
+救命 > kyuumei\ ;
+隠密 > onmitsu\ ;
+閨秀 > keishuu\ ;
+霍乱 > kakuran\ ;
+国道 > kokudou\ ;
+結氷 > keppyou\ ;
+集団 > shuudan\ ;
+国連 > kokuren\ ;
+陳情 > chinjou\ ;
+火箸 > hibashi\ ;
+売卜 > baiboku\ ;
+敗北 > haiboku\ ;
+障害 > shougai\ ;
+増幅 > zoufuku\ ;
+擲弾 > tekidan\ ;
+潮騒 > shiosai\ ;
+索然 > sakuzen\ ;
+焼成 > shousei\ ;
+電信 > denshin\ ;
+続投 > zokutou\ ;
+濫読 > randoku\ ;
+継承 > keishou\ ;
+綾布 > ayanuno\ ;
+粘膜 > nenmaku\ ;
+摂理 > setsuri\ ;
+雪冤 > setsuen\ ;
+政商 > seishou\ ;
+墨守 > bokushu\ ;
+粉茶 > konacha\ ;
+角材 > kakuzai\ ;
+経歴 > keireki\ ;
+離別 > ribetsu\ ;
+闘牛 > tougyuu\ ;
+照射 > shousha\ ;
+摩滅 > mametsu\ ;
+国軍 > kokugun\ ;
+塗擦 > tosatsu\ ;
+濫觴 > ranshou\ ;
+長編 > chouhen\ ;
+教典 > kyouten\ ;
+地表 > chihyou\ ;
+該博 > gaihaku\ ;
+推薬 > suiyaku\ ;
+陳弁 > chinben\ ;
+糸瓜 > hechima\ ;
+炬燵 > kotatsu\ ;
+行間 > gyoukan\ ;
+雨傘 > amagasa\ ;
+開立 > kairyuu\ ;
+終止 > shuushi\ ;
+撞木 > shumoku\ ;
+雑務 > zatsumu\ ;
+細流 > sairyuu\ ;
+討幕 > toubaku\ ;
+集合 > shuugou\ ;
+捨象 > shashou\ ;
+炮烙 > houroku\ ;
+地蜂 > jibachi\ ;
+険峻 > kenshun\ ;
+親権 > shinken\ ;
+街録 > gairoku\ ;
+複線 > fukusen\ ;
+雑則 > zassoku\ ;
+装薬 > souyaku\ ;
+国賓 > kokuhin\ ;
+点滴 > tenteki\ ;
+陸岸 > rikugan\ ;
+塗抹 > tomatsu\ ;
+詩劇 > shigeki\ ;
+開票 > kaihyou\ ;
+撹拌 > kakuhan\ ;
+陽射 > hizashi\ ;
+熱傷 > nesshou\ ;
+関白 > kanpaku\ ;
+補色 > hoshoku\ ;
+焦慮 > shouryo\ ;
+陪席 > baiseki\ ;
+結核 > kekkaku\ ;
+振鈴 > shinrei\ ;
+教会 > kyoukai\ ;
+雑兵 > zouhyou\ ;
+隣国 > ringoku\ ;
+絃楽 > gengaku\ ;
+雀卓 > jantaku\ ;
+陸封 > rikufuu\ ;
+雪中 > setchuu\ ;
+墨堤 > bokutei\ ;
+託宣 > takusen\ ;
+精神 > seishin\ ;
+損益 > son''eki\ ;
+陣幕 > jinmaku\ ;
+灰皿 > haizara\ ;
+粗縄 > aranawa\ ;
+挌闘 > kakutou\ ;
+挺進 > teishin\ ;
+糸爪 > hechima\ ;
+褒章 > houshou\ ;
+結束 > kessoku\ ;
+灰白 > kaihaku\ ;
+教主 > kyoushu\ ;
+触感 > shokkan\ ;
+招魂 > shoukon\ ;
+親株 > oyakabu\ ;
+精確 > seikaku\ ;
+国論 > kokuron\ ;
+緑土 > ryokudo\ ;
+集光 > shuukou\ ;
+結晶 > kesshou\ ;
+補職 > hoshoku\ ;
+激論 > gekiron\ ;
+詳伝 > shouden\ ;
+紅潮 > kouchou\ ;
+救世 > kyuusei\ ;
+要求 > youkyuu\ ;
+陪審 > baishin\ ;
+挺身 > teishin\ ;
+熱中 > netchuu\ ;
+親書 > shinsho\ ;
+裏腹 > urahara\ ;
+評判 > hyouban\ ;
+納涼 > nouryou\ ;
+図説 > zusetsu\ ;
+詩作 > shisaku\ ;
+間男 > maotoko\ ;
+摺本 > shouhon\ ;
+雑事 > zatsuji\ ;
+改修 > kaishuu\ ;
+雌伏 > shifuku\ ;
+経文 > kyoumon\ ;
+絶息 > zessoku\ ;
+陣容 > jin''you\ ;
+試作 > shisaku\ ;
+陸大 > rikudai\ ;
+褥瘡 > jokusou\ ;
+粗筋 > arasuji\ ;
+精白 > seihaku\ ;
+行進 > koushin\ ;
+長短 > choutan\ ;
+掣肘 > seichuu\ ;
+親方 > oyakata\ ;
+改作 > kaisaku\ ;
+設営 > setsuei\ ;
+集会 > shuukai\ ;
+執権 > shikken\ ;
+絵心 > egokoro\ ;
+拝領 > hairyou\ ;
+絶後 > zetsugo\ ;
+親政 > shinsei\ ;
+管領 > kanryou\ ;
+粘稠 > nenchuu\ ;
+撮影 > satsuei\ ;
+塩害 > shiogai\ ;
+補綴 > hotetsu\ ;
+篤農 > tokunou\ ;
+揮発 > kihatsu\ ;
+訳名 > yakumei\ ;
+烏木 > kokutan\ ;
+隊商 > taishou\ ;
+堆朱 > tsuishu\ ;
+陸地 > rikuchi\ ;
+境域 > kyouiki\ ;
+指針 > shishin\ ;
+回読 > kaidoku\ ;
+照合 > shougou\ ;
+証券 > shouken\ ;
+評伝 > hyouden\ ;
+灸点 > kyuuten\ ;
+型番 > kataban\ ;
+焼売 > shuumai\ ;
+回診 > kaishin\ ;
+複眼 > fukugan\ ;
+詔令 > shourei\ ;
+境地 > kyouchi\ ;
+編修 > henshuu\ ;
+統幕 > toubaku\ ;
+火燵 > kotatsu\ ;
+播州 > banshuu\ ;
+無宿 > mushuku\ ;
+角帽 > kakubou\ ;
+火熱 > kanetsu\ ;
+長男 > chounan\ ;
+親指 > oyayubi\ ;
+角帯 > kakuobi\ ;
+無実 > mujitsu\ ;
+長生 > chousei\ ;
+索条 > sakujou\ ;
+表解 > hyoukai\ ;
+総則 > sousoku\ ;
+四角 > shikaku\ ;
+紋様 > mon''you\ ;
+増収 > zoushuu\ ;
+行賞 > koushou\ ;
+管長 > kanchou\ ;
+綾取 > ayatori\ ;
+続報 > zokuhou\ ;
+探索 > tansaku\ ;
+血路 > ketsuro\ ;
+報徳 > houtoku\ ;
+摩擦 > masatsu\ ;
+報復 > houfuku\ ;
+提督 > teitoku\ ;
+見料 > kenryou\ ;
+表装 > hyousou\ ;
+終戦 > shuusen\ ;
+国葬 > kokusou\ ;
+西暦 > seireki\ ;
+籠絡 > rouraku\ ;
+粗皮 > arakawa\ ;
+炭柱 > tanchuu\ ;
+堪忍 > kan''nin\ ;
+親愛 > shin''ai\ ;
+術語 > jutsugo\ ;
+観念 > kan''nen\ ;
+純朴 > junboku\ ;
+訓告 > kunkoku\ ;
+西日 > nishibi\ ;
+襲来 > shuurai\ ;
+米穀 > beikoku\ ;
+節迫 > seppaku\ ;
+執政 > shissei\ ;
+擁壁 > youheki\ ;
+設備 > setsubi\ ;
+血豆 > chimame\ ;
+証人 > shounin\ ;
+圧縮 > asshuku\ ;
+掌編 > shouhen\ ;
+緒作 > shosaku\ ;
+塁審 > ruishin\ ;
+墳丘 > funkyuu\ ;
+粗略 > soryaku\ ;
+級数 > kyuusuu\ ;
+紋服 > monpuku\ ;
+裕福 > yuufuku\ ;
+掛算 > kakezan\ ;
+衆論 > shuuron\ ;
+回虫 > kaichuu\ ;
+推称 > suishou\ ;
+絵姿 > esugata\ ;
+要撃 > yougeki\ ;
+地籍 > chiseki\ ;
+探究 > tankyuu\ ;
+掌紋 > shoumon\ ;
+粒界 > ryuukai\ ;
+捧腹 > houfuku\ ;
+損流 > sonryuu\ ;
+漆食 > shikkui\ ;
+照会 > shoukai\ ;
+挙証 > kyoshou\ ;
+点描 > tenbyou\ ;
+在籍 > zaiseki\ ;
+拓銀 > takugin\ ;
+絶壁 > zeppeki\ ;
+隔世 > kakusei\ ;
+陸兵 > rikuhei\ ;
+綱具 > tsunagu\ ;
+粗玉 > aratama\ ;
+網元 > amimoto\ ;
+言及 > genkyuu\ ;
+糸枠 > itowaku\ ;
+除却 > jokyaku\ ;
+漫録 > manroku\ ;
+随一 > zuiichi\ ;
+糸杉 > itosugi\ ;
+灰殻 > haigara\ ;
+訪中 > houchuu\ ;
+摂政 > sesshou\ ;
+塩味 > shioaji\ ;
+地積 > chiseki\ ;
+結尾 > ketsubi\ ;
+約数 > yakusuu\ ;
+防壁 > bouheki\ ;
+糾明 > kyuumei\ ;
+塁壁 > ruiheki\ ;
+結審 > kesshin\ ;
+細心 > saishin\ ;
+採石 > saiseki\ ;
+堅忍 > ken''nin\ ;
+粒状 > ryuujou\ ;
+拙速 > sessoku\ ;
+潮解 > choukai\ ;
+撮土 > satsudo\ ;
+漸進 > zenshin\ ;
+親展 > shinten\ ;
+規律 > kiritsu\ ;
+持説 > jisetsu\ ;
+視床 > shishou\ ;
+角地 > kadochi\ ;
+経学 > keigaku\ ;
+粋狂 > suikyou\ ;
+裏白 > urajiro\ ;
+塵入 > gomiire\ ;
+報奨 > houshou\ ;
+細帯 > hosoobi\ ;
+親子 > shinshi\ ;
+無口 > mukuchi\ ;
+執念 > shuunen\ ;
+陸上 > rikujou\ ;
+漫遊 > man''yuu\ ;
+絶唱 > zesshou\ ;
+回腸 > kaichou\ ;
+長江 > choukou\ ;
+地目 > chimoku\ ;
+拍車 > hakusha\ ;
+無力 > muryoku\ ;
+抽選 > chuusen\ ;
+捜索 > sousaku\ ;
+開業 > kaigyou\ ;
+絶叫 > zekkyou\ ;
+国粋 > kokusui\ ;
+掛留 > keiryuu\ ;
+親好 > shinkou\ ;
+閉業 > heigyou\ ;
+報国 > houkoku\ ;
+米独 > beidoku\ ;
+振舞 > furumai\ ;
+箴言 > shingen\ ;
+終始 > shuushi\ ;
+長歎 > choutan\ ;
+長歌 > nagauta\ ;
+振興 > shinkou\ ;
+視学 > shigaku\ ;
+陞任 > shounin\ ;
+紙幅 > shifuku\ ;
+紙帳 > shichou\ ;
+経堂 > kyoudou\ ;
+陣中 > jinchuu\ ;
+納得 > nattoku\ ;
+絶勝 > zesshou\ ;
+粘液 > nen''eki\ ;
+土着 > dochaku\ ;
+国等 > kokutou\ ;
+堂守 > doumori\ ;
+拝謁 > haietsu\ ;
+撤収 > tesshuu\ ;
+籠球 > roukyuu\ ;
+灯明 > toumyou\ ;
+拝読 > haidoku\ ;
+蟶貝 > mategai\ ;
+等閑 > naozari\ ;
+招請 > shousei\ ;
+鏤骨 > rukotsu\ ;
+見学 > kengaku\ ;
+投錨 > toubyou\ ;
+経国 > keikoku\ ;
+在留 > zairyuu\ ;
+損料 > sonryou\ ;
+紐帯 > chuutai\ ;
+鏡高 > kyoukou\ ;
+圭璧 > keiheki\ ;
+描法 > byouhou\ ;
+製氷 > seihyou\ ;
+地球 > chikyuu\ ;
+鑑賞 > kanshou\ ;
+国税 > kokuzei\ ;
+濫用 > ran''you\ ;
+紀律 > kiritsu\ ;
+門柱 > monchuu\ ;
+降伏 > koufuku\ ;
+報告 > houkoku\ ;
+紳士 > shinshi\ ;
+糾弾 > kyuudan\ ;
+衒耀 > gen''you\ ;
+困窮 > konkyuu\ ;
+表紙 > hyoushi\ ;
+烈女 > retsujo\ ;
+防共 > boukyou\ ;
+撰修 > senshuu\ ;
+闘将 > toushou\ ;
+親善 > shinzen\ ;
+濫獲 > rankaku\ ;
+漫読 > mandoku\ ;
+関所 > sekisho\ ;
+瀟洒 > shousha\ ;
+城廓 > joukaku\ ;
+糸底 > itozoko\ ;
+漫評 > manpyou\ ;
+灌木 > kanboku\ ;
+見境 > misakai\ ;
+経史 > kyoushi\ ;
+折込 > orikomi\ ;
+回章 > kaishou\ ;
+授爵 > jushaku\ ;
+等量 > touryou\ ;
+鏡面 > kyoumen\ ;
+経協 > keikyou\ ;
+固着 > kochaku\ ;
+推測 > suisoku\ ;
+国益 > kokueki\ ;
+滲透 > shintou\ ;
+観劇 > kangeki\ ;
+約定 > yakujou\ ;
+報償 > houshou\ ;
+複本 > fukuhon\ ;
+長文 > choubun\ ;
+撩乱 > ryouran\ ;
+探測 > tansoku\ ;
+投身 > toushin\ ;
+統一 > touitsu\ ;
+開拓 > kaitaku\ ;
+関心 > kanshin\ ;
+補殺 > hosatsu\ ;
+糸屑 > itokuzu\ ;
+撃剣 > gekiken\ ;
+扁額 > hengaku\ ;
+演説 > enzetsu\ ;
+垂教 > suikyou\ ;
+複星 > fukusei\ ;
+等速 > tousoku\ ;
+所領 > shoryou\ ;
+竹馬 > chikuba\ ;
+補欠 > hoketsu\ ;
+国産 > kokusan\ ;
+血縁 > ketsuen\ ;
+複方 > fukuhou\ ;
+粗末 > somatsu\ ;
+術策 > jussaku\ ;
+複文 > fukubun\ ;
+激甚 > gekijin\ ;
+鎮魂 > chingon\ ;
+複数 > fukusuu\ ;
+灯心 > toushin\ ;
+損得 > sontoku\ ;
+堕力 > daryoku\ ;
+終刊 > shuukan\ ;
+探求 > tankyuu\ ;
+親元 > oyamoto\ ;
+成鳥 > seichou\ ;
+鏡鑑 > kyoukan\ ;
+血糊 > chinori\ ;
+等身 > toushin\ ;
+漸落 > zenraku\ ;
+粗方 > arakata\ ;
+糸姫 > itohime\ ;
+節義 > setsugi\ ;
+筆蹟 > hisseki\ ;
+長所 > chousho\ ;
+筆跡 > hisseki\ ;
+潮紅 > choukou\ ;
+所長 > shochou\ ;
+終値 > owarine\ ;
+細則 > saisoku\ ;
+血筋 > chisuji\ ;
+潅腸 > kanchou\ ;
+城壁 > jouheki\ ;
+地殻 > chikaku\ ;
+摘取 > tekishu\ ;
+招致 > shouchi\ ;
+策謀 > sakubou\ ;
+親交 > shinkou\ ;
+精強 > seikyou\ ;
+折角 > sekkaku\ ;
+融通 > yuudzuu\ ;
+開幕 > kaimaku\ ;
+喫驚 > bikkuri\ ;
+開帳 > kaichou\ ;
+簇生 > zokusei\ ;
+坑木 > kouboku\ ;
+級友 > kyuuyuu\ ;
+閉幕 > heimaku\ ;
+鎖骨 > sakotsu\ ;
+満額 > mangaku\ ;
+街着 > machigi\ ;
+振盪 > shintou\ ;
+西北 > seihoku\ ;
+覆刻 > fukkoku\ ;
+圧殺 > assatsu\ ;
+鎮静 > chinsei\ ;
+蟋蟀 > koorogi\ ;
+濠洲 > goushuu\ ;
+拝聴 > haichou\ ;
+才量 > sairyou\ ;
+濁点 > dakuten\ ;
+終世 > shuusei\ ;
+蠏缶 > kanikan\ ;
+竜顔 > ryougan\ ;
+長径 > choukei\ ;
+長征 > chousei\ ;
+執刀 > shittou\ ;
+折衷 > setchuu\ ;
+襲名 > shuumei\ ;
+招聘 > shouhei\ ;
+折衝 > sesshou\ ;
+紹介 > shoukai\ ;
+紅唇 > koushin\ ;
+表現 > hyougen\ ;
+四球 > shikyuu\ ;
+垂心 > suishin\ ;
+推服 > suifuku\ ;
+衆知 > shuuchi\ ;
+閑寂 > kanjaku\ ;
+糾問 > kyuumon\ ;
+裏書 > uragaki\ ;
+筆誅 > hitchuu\ ;
+承認 > shounin\ ;
+長幼 > chouyou\ ;
+長年 > naganen\ ;
+閣外 > kakugai\ ;
+要償 > youshou\ ;
+等角 > toukaku\ ;
+嘆賞 > tanshou\ ;
+等親 > toushin\ ;
+搾取 > sakushu\ ;
+堅人 > katajin\ ;
+装束 > souzoku\ ;
+土橋 > dobashi\ ;
+地核 > chikaku\ ;
+手近 > tedjika\ ;
+裏方 > urakata\ ;
+糾合 > kyuugou\ ;
+蟹缶 > kanikan\ ;
+激減 > gekigen\ ;
+粗忽 > sokotsu\ ;
+納入 > nounyuu\ ;
+技術 > gijutsu\ ;
+投薬 > touyaku\ ;
+激浪 > gekirou\ ;
+約分 > yakubun\ ;
+国法 > kokuhou\ ;
+手蹟 > shuseki\ ;
+成長 > seichou\ ;
+粒径 > ryuukei\ ;
+長官 > choukan\ ;
+手跡 > shuseki\ ;
+長子 > choushi\ ;
+国民 > kokumin\ ;
+精妙 > seimyou\ ;
+濁水 > dakusui\ ;
+蛟龍 > kouryou\ ;
+排斥 > haiseki\ ;
+閉塞 > heisoku\ ;
+行状 > gyoujou\ ;
+蝶貝 > chougai\ ;
+襟元 > erimoto\ ;
+血球 > kekkyuu\ ;
+拙策 > sessaku\ ;
+懸隔 > kenkaku\ ;
+裏技 > urawaza\ ;
+在方 > zaikata\ ;
+竹輪 > chikuwa\ ;
+排撃 > haigeki\ ;
+節目 > fushime\ ;
+採択 > saitaku\ ;
+捕殺 > hosatsu\ ;
+開国 > kaikoku\ ;
+螟虫 > meichuu\ ;
+災厄 > saiyaku\ ;
+土日 > donichi\ ;
+褒奨 > houshou\ ;
+長大 > choudai\ ;
+成銀 > narigin\ ;
+範疇 > hanchuu\ ;
+回流 > kairyuu\ ;
+粗密 > somitsu\ ;
+掌握 > shouaku\ ;
+成金 > narikin\ ;
+潔白 > keppaku\ ;
+潔癖 > keppeki\ ;
+漢籍 > kanseki\ ;
+圧接 > assetsu\ ;
+抽籤 > chuusen\ ;
+競走 > kyousou\ ;
+粒子 > ryuushi\ ;
+才覚 > saikaku\ ;
+火口 > higuchi\ ;
+所謂 > iwayuru\ ;
+笑覧 > shouran\ ;
+間口 > maguchi\ ;
+搏動 > hakudou\ ;
+戦跡 > senseki\ ;
+閣内 > kakunai\ ;
+満身 > manshin\ ;
+国本 > kokuhon\ ;
+裏庭 > uraniwa\ ;
+裏店 > uradana\ ;
+国有 > kokuyuu\ ;
+国書 > kokusho\ ;
+火力 > karyoku\ ;
+長嘆 > choutan\ ;
+竜車 > ryuusha\ ;
+我輩 > wagahai\ ;
+満足 > manzoku\ ;
+血潮 > chishio\ ;
+漆絵 > urushie\ ;
+粗壁 > arakabe\ ;
+血漿 > kesshou\ ;
+齷齪 > akuseku\ ;
+激暑 > gekisho\ ;
+商魂 > shoukon\ ;
+地心 > chishin\ ;
+空馬 > karauma\ ;
+長唄 > nagauta\ ;
+損傷 > sonshou\ ;
+算盤 > soroban\ ;
+国文 > kokubun\ ;
+開削 > kaisaku\ ;
+所行 > shogyou\ ;
+国教 > kokkyou\ ;
+長命 > choumei\ ;
+国政 > kokusei\ ;
+溢血 > ikketsu\ ;
+米審 > beishin\ ;
+坩堝 > rutsubo\ ;
+節煙 > setsuen\ ;
+団栗 > donguri\ ;
+減額 > gengaku\ ;
+図星 > zuboshi\ ;
+裏山 > urayama\ ;
+折紙 > origami\ ;
+拘留 > kouryuu\ ;
+行水 > gyouzui\ ;
+粉壁 > funpeki\ ;
+立身 > risshin\ ;
+接尾 > setsubi\ ;
+竹製 > takesei\ ;
+商館 > shoukan\ ;
+算用 > san''you\ ;
+血沈 > ketchin\ ;
+間作 > kansaku\ ;
+手蔓 > tedzuru\ ;
+複合 > fukugou\ ;
+長剣 > chouken\ ;
+火付 > hitsuke\ ;
+唐黍 > toukibi\ ;
+地峡 > chikyou\ ;
+築港 > chikkou\ ;
+提唱 > teishou\ ;
+空隙 > kuugeki\ ;
+抜穴 > nukeana\ ;
+閑人 > himajin\ ;
+空陸 > kuuriku\ ;
+蝙蝠 > henpuku\ ;
+抄紙 > shoushi\ ;
+回春 > kaishun\ ;
+間中 > aidajuu\ ;
+承継 > shoukei\ ;
+等級 > toukyuu\ ;
+排尿 > hainyou\ ;
+捷径 > shoukei\ ;
+国手 > kokushu\ ;
+推奨 > suishou\ ;
+行楽 > kouraku\ ;
+長兄 > choukei\ ;
+表明 > hyoumei\ ;
+激戦 > gekisen\ ;
+回教 > kaikyou\ ;
+地学 > chigaku\ ;
+漁礁 > gyoshou\ ;
+表敬 > hyoukei\ ;
+憂鬱 > yuuutsu\ ;
+懸賞 > kenshou\ ;
+激憤 > gekifun\ ;
+穿鑿 > sensaku\ ;
+潤沢 > juntaku\ ;
+振替 > furikae\ ;
+篦棒 > berabou\ ;
+複写 > fukusha\ ;
+投票 > touhyou\ ;
+国情 > kokujou\ ;
+在宅 > zaitaku\ ;
+在学 > zaigaku\ ;
+懐郷 > kaikyou\ ;
+激情 > gekijou\ ;
+精一 > seiitsu\ ;
+器物 > kibutsu\ ;
+米国 > beikoku\ ;
+立証 > risshou\ ;
+掛声 > kakegoe\ ;
+行末 > yukusue\ ;
+行書 > gyousho\ ;
+渾身 > konshin\ ;
+扁舟 > henshuu\ ;
+投石 > touseki\ ;
+指標 > shihyou\ ;
+困惑 > konwaku\ ;
+挟書 > kyousho\ ;
+描写 > byousha\ ;
+衆望 > shuubou\ ;
+長上 > choujou\ ;
+衷情 > chuujou\ ;
+減量 > genryou\ ;
+澄明 > choumei\ ;
+衆智 > shuuchi\ ;
+嘉節 > kasetsu\ ;
+行数 > gyousuu\ ;
+図式 > zushiki\ ;
+行政 > gyousei\ ;
+成虫 > seichuu\ ;
+漿液 > shoueki\ ;
+地坪 > jitsubo\ ;
+穀類 > kokurui\ ;
+漠然 > bakuzen\ ;
+競艇 > kyoutei\ ;
+製作 > seisaku\ ;
+突進 > tosshin\ ;
+提供 > teikyou\ ;
+深閑 > shinkan\ ;
+米収 > beishuu\ ;
+穿通 > sentsuu\ ;
+減速 > gensoku\ ;
+表情 > hyoujou\ ;
+符節 > fusetsu\ ;
+噴流 > funryuu\ ;
+承知 > shouchi\ ;
+種馬 > taneuma\ ;
+淡雪 > awayuki\ ;
+啓迪 > keiteki\ ;
+接受 > setsuju\ ;
+挨拶 > aisatsu\ ;
+挫折 > zasetsu\ ;
+接収 > sesshuu\ ;
+手綱 > tadzuna\ ;
+衰弱 > suijaku\ ;
+回心 > kaishin\ ;
+国対 > kokutai\ ;
+漁獲 > gyokaku\ ;
+回復 > kaifuku\ ;
+答申 > toushin\ ;
+扉絵 > tobirae\ ;
+国宝 > kokuhou\ ;
+漁猟 > gyoryou\ ;
+国定 > kokutei\ ;
+国守 > kokushu\ ;
+笑納 > shounou\ ;
+投球 > toukyuu\ ;
+囚役 > shuueki\ ;
+唇音 > shin''on\ ;
+捷報 > shouhou\ ;
+探勝 > tanshou\ ;
+投獄 > tougoku\ ;
+行成 > ikinari\ ;
+滑石 > kasseki\ ;
+清適 > seiteki\ ;
+満腹 > manpuku\ ;
+鼻骨 > bikotsu\ ;
+地口 > jiguchi\ ;
+手箒 > tebouki\ ;
+漂然 > hyouzen\ ;
+唐門 > karamon\ ;
+涼風 > ryoufuu\ ;
+滞留 > tairyuu\ ;
+指摘 > shiteki\ ;
+涵養 > kan''you\ ;
+抹消 > masshou\ ;
+竜脳 > ryuunou\ ;
+国大 > kokudai\ ;
+米俗 > beizoku\ ;
+国外 > kokugai\ ;
+掘削 > kussaku\ ;
+術後 > jutsugo\ ;
+国士 > kokushi\ ;
+裏側 > uragawa\ ;
+濁声 > damigoe\ ;
+米作 > beisaku\ ;
+激変 > gekihen\ ;
+唱道 > shoudou\ ;
+問責 > monseki\ ;
+挑戦 > chousen\ ;
+国境 > kokkyou\ ;
+表層 > hyousou\ ;
+空谷 > kuukoku\ ;
+戦績 > senseki\ ;
+激増 > gekizou\ ;
+懇親 > konshin\ ;
+端綱 > hadzuna\ ;
+深遠 > shin''en\ ;
+渓谷 > keikoku\ ;
+篤志 > tokushi\ ;
+裏作 > urasaku\ ;
+喜色 > kishoku\ ;
+裂傷 > resshou\ ;
+蛮襟 > bankara\ ;
+米中 > beichuu\ ;
+立腹 > rippuku\ ;
+税額 > zeigaku\ ;
+招来 > shourai\ ;
+竿竹 > saodake\ ;
+漫楽 > mangaku\ ;
+淫逸 > in''itsu\ ;
+拘束 > kousoku\ ;
+空調 > kuuchou\ ;
+突角 > tokkaku\ ;
+虫類 > chuurui\ ;
+捺印 > natsuin\ ;
+衆庶 > shuusho\ ;
+竹竿 > takezao\ ;
+問診 > monshin\ ;
+拓本 > takuhon\ ;
+漂浪 > hyourou\ ;
+拡散 > kakusan\ ;
+蛹虫 > youchuu\ ;
+鋳鋼 > chuukou\ ;
+積載 > sekisai\ ;
+海鳥 > kaichou\ ;
+国喪 > kokusou\ ;
+商談 > shoudan\ ;
+空襲 > kuushuu\ ;
+成績 > seiseki\ ;
+箆棒 > berabou\ ;
+在俗 > zaizoku\ ;
+拱手 > kyoushu\ ;
+善良 > zenryou\ ;
+衒学 > gengaku\ ;
+鋳金 > chuukin\ ;
+空行 > kuugyou\ ;
+地主 > jinushi\ ;
+地中 > chichuu\ ;
+成約 > seiyaku\ ;
+囃子 > hayashi\ ;
+秀麗 > shuurei\ ;
+濫作 > ransaku\ ;
+街娼 > gaishou\ ;
+国名 > kokumei\ ;
+国司 > kokushi\ ;
+国号 > kokugou\ ;
+国史 > kokushi\ ;
+錯角 > sakkaku\ ;
+在京 > zaikyou\ ;
+衝天 > shouten\ ;
+箇月 > kagetsu\ ;
+圏内 > ken''nai\ ;
+錯覚 > sakkaku\ ;
+拍数 > hakusuu\ ;
+漢朝 > kanchou\ ;
+管掌 > kanshou\ ;
+在中 > zaichuu\ ;
+潜心 > senshin\ ;
+回国 > kaikoku\ ;
+潛心 > senshin\ ;
+表在 > hyouzai\ ;
+滴水 > tekisui\ ;
+打率 > daritsu\ ;
+鋳造 > chuuzou\ ;
+国勢 > kokusei\ ;
+四国 > shikoku\ ;
+国労 > kokurou\ ;
+深謝 > shinsha\ ;
+拝承 > haishou\ ;
+深謀 > shinbou\ ;
+嚮導 > kyoudou\ ;
+激動 > gekidou\ ;
+立米 > ryuubei\ ;
+筋注 > kinchuu\ ;
+激励 > gekirei\ ;
+抑止 > yokushi\ ;
+漢族 > kanzoku\ ;
+満票 > manpyou\ ;
+節度 > setsudo\ ;
+禽鳥 > kinchou\ ;
+戴白 > taihaku\ ;
+拙技 > setsugi\ ;
+漁業 > gyogyou\ ;
+演曲 > enkyoku\ ;
+液量 > ekiryou\ ;
+蛇蠍 > dakatsu\ ;
+国内 > kokunai\ ;
+鼎革 > teikaku\ ;
+蛔虫 > kaichuu\ ;
+国典 > kokuten\ ;
+蝋石 > rouseki\ ;
+竜神 > ryuujin\ ;
+消防 > shoubou\ ;
+流麗 > ryuurei\ ;
+端的 > tanteki\ ;
+温色 > onshoku\ ;
+蛇蝎 > dakatsu\ ;
+国債 > kokusai\ ;
+準用 > jun''you\ ;
+穴蔵 > anagura\ ;
+拍手 > hakushu\ ;
+消閑 > shoukan\ ;
+手燭 > teshoku\ ;
+喪神 > soushin\ ;
+四周 > shishuu\ ;
+回収 > kaishuu\ ;
+箱師 > hakoshi\ ;
+表号 > hyougou\ ;
+黄麻 > tsunaso\ ;
+虫酸 > mushizu\ ;
+満目 > manmoku\ ;
+拝復 > haifuku\ ;
+鐘楼 > shourou\ ;
+立秋 > risshuu\ ;
+秋風 > shuufuu\ ;
+押捺 > ounatsu\ ;
+国使 > kokushi\ ;
+招待 > shoutai\ ;
+浦風 > urakaze\ ;
+空茶 > karacha\ ;
+国体 > kokutai\ ;
+竜眼 > ryuugan\ ;
+海陸 > kairiku\ ;
+稀釈 > kishaku\ ;
+税込 > zeikomi\ ;
+黒鯛 > kurodai\ ;
+空色 > sorairo\ ;
+挙国 > kyokoku\ ;
+国主 > kokushu\ ;
+衰兆 > suichou\ ;
+国中 > kunijuu\ ;
+秋霜 > shuusou\ ;
+喉笛 > nodobue\ ;
+秋霖 > shuurin\ ;
+蛮習 > banshuu\ ;
+黄鳥 > kouchou\ ;
+行啓 > gyoukei\ ;
+秋雨 > akisame\ ;
+空腹 > kuufuku\ ;
+滋殖 > jishoku\ ;
+衝動 > shoudou\ ;
+挿入 > sounyuu\ ;
+和食 > washoku\ ;
+抜擢 > batteki\ ;
+溯源 > sakugen\ ;
+抛擲 > houteki\ ;
+商船 > shousen\ ;
+鍵穴 > kagiana\ ;
+振動 > shindou\ ;
+蟻巻 > arimaki\ ;
+扶植 > fushoku\ ;
+抄本 > shouhon\ ;
+指圧 > shiatsu\ ;
+投擲 > touteki\ ;
+指図 > sashizu\ ;
+溺水 > dekisui\ ;
+築地 > tsukiji\ ;
+黒風 > kokufuu\ ;
+蝋燭 > rousoku\ ;
+溺死 > dekishi\ ;
+拙宅 > settaku\ ;
+手沢 > shutaku\ ;
+惣領 > souryou\ ;
+禁鳥 > kinchou\ ;
+抑揚 > yokuyou\ ;
+囚人 > shuujin\ ;
+清聴 > seichou\ ;
+笊法 > zaruhou\ ;
+懇篤 > kontoku\ ;
+競漕 > kyousou\ ;
+淳良 > junryou\ ;
+減給 > genkyuu\ ;
+鏖殺 > ousatsu\ ;
+唐薯 > karaimo\ ;
+税調 > zeichou\ ;
+笑止 > shoushi\ ;
+蘭鋳 > ranchuu\ ;
+拡大 > kakudai\ ;
+銅鐸 > doutaku\ ;
+拍子 > hyoushi\ ;
+銅鏡 > doukyou\ ;
+浸透 > shintou\ ;
+策戦 > sakusen\ ;
+成熟 > seijuku\ ;
+溜池 > tameike\ ;
+浦里 > urazato\ ;
+湯熨 > yunoshi\ ;
+喫煙 > kitsuen\ ;
+嘉日 > kajitsu\ ;
+満潮 > manchou\ ;
+称賛 > shousan\ ;
+嚇嚇 > kakkaku\ ;
+商経 > shoukei\ ;
+拓大 > takudai\ ;
+源流 > genryuu\ ;
+穎脱 > eidatsu\ ;
+突端 > toppana\ ;
+行体 > gyoutai\ ;
+漢学 > kangaku\ ;
+黄雀 > koujaku\ ;
+喀痰 > kakutan\ ;
+鼻血 > hanadji\ ;
+錯綜 > sakusou\ ;
+深耕 > shinkou\ ;
+術中 > jutchuu\ ;
+派閥 > habatsu\ ;
+善用 > zen''you\ ;
+蛟竜 > kouryou\ ;
+漆工 > shikkou\ ;
+憲章 > kenshou\ ;
+麻雀 > mazejan\ ;
+戦況 > senkyou\ ;
+漁師 > ryoushi\ ;
+篆刻 > tenkoku\ ;
+衆人 > shuujin\ ;
+所業 > shogyou\ ;
+究竟 > kukkyou\ ;
+嘲弄 > chourou\ ;
+戯歌 > zareuta\ ;
+蠢動 > shundou\ ;
+唐臼 > karausu\ ;
+満洲 > manshuu\ ;
+湾流 > wanryuu\ ;
+善玉 > zendama\ ;
+私通 > shitsuu\ ;
+種苗 > shubyou\ ;
+海賊 > kaizoku\ ;
+種芋 > taneimo\ ;
+湮滅 > inmetsu\ ;
+戦歴 > senreki\ ;
+指値 > sashine\ ;
+海豹 > kaihyou\ ;
+海象 > seiuchi\ ;
+窮状 > kyuujou\ ;
+押売 > oshiuri\ ;
+品評 > hinpyou\ ;
+惨酷 > zankoku\ ;
+悪食 > akujiki\ ;
+蛮的 > banteki\ ;
+深紅 > shinkou\ ;
+神髄 > shinzui\ ;
+蘇鉄 > sotetsu\ ;
+等張 > touchou\ ;
+蟄居 > chikkyo\ ;
+愚説 > gusetsu\ ;
+懸濁 > kendaku\ ;
+商社 > shousha\ ;
+銃身 > juushin\ ;
+溝板 > dobuita\ ;
+清秋 > seishuu\ ;
+感覚 > kankaku\ ;
+清福 > seifuku\ ;
+減益 > gen''eki\ ;
+清祥 > seishou\ ;
+嚢中 > nouchuu\ ;
+神饌 > shinsen\ ;
+龍神 > ryuujin\ ;
+秘訣 > hiketsu\ ;
+空白 > kuuhaku\ ;
+潜伏 > senpuku\ ;
+嘆息 > tansoku\ ;
+虹色 > nijiiro\ ;
+策定 > sakutei\ ;
+流連 > ryuuren\ ;
+浮説 > fusetsu\ ;
+積算 > sekisan\ ;
+悪阻 > tsuwari\ ;
+憶病 > okubyou\ ;
+慣習 > kanshuu\ ;
+深窓 > shinsou\ ;
+戯曲 > gikyoku\ ;
+手掌 > shushou\ ;
+患難 > kan''nan\ ;
+拡充 > kakujuu\ ;
+神韻 > shin''in\ ;
+穀粉 > kokufun\ ;
+哨舎 > shousha\ ;
+管内 > kan''nai\ ;
+鑿井 > sakusei\ ;
+唐糸 > karaito\ ;
+鉄鎚 > tettsui\ ;
+空瓶 > karabin\ ;
+満株 > mankabu\ ;
+鋼索 > kousaku\ ;
+拍動 > hakudou\ ;
+手抄 > shushou\ ;
+秘術 > hijutsu\ ;
+滑席 > kasseki\ ;
+神霊 > shinrei\ ;
+成業 > seigyou\ ;
+蛋白 > tanpaku\ ;
+周遊 > shuuyuu\ ;
+悠長 > yuuchou\ ;
+商用 > shouyou\ ;
+滅度 > metsudo\ ;
+満更 > manzara\ ;
+策士 > sakushi\ ;
+周辺 > shuuhen\ ;
+成桂 > narikei\ ;
+海蛇 > umihebi\ ;
+活路 > katsuro\ ;
+黒貂 > kuroten\ ;
+鐘声 > shousei\ ;
+拙作 > sessaku\ ;
+銭葵 > zeniaoi\ ;
+漆喰 > shikkui\ ;
+波音 > namioto\ ;
+稜線 > ryousen\ ;
+窮民 > kyuumin\ ;
+才徳 > saitoku\ ;
+立案 > ritsuan\ ;
+黙認 > mokunin\ ;
+慶福 > keifuku\ ;
+呵責 > kashaku\ ;
+空爆 > kuubaku\ ;
+吃驚 > bikkuri\ ;
+蝿帳 > haichou\ ;
+窮死 > kyuushi\ ;
+各駅 > kakueki\ ;
+商状 > shoujou\ ;
+秋蚕 > shuusan\ ;
+押入 > oshiire\ ;
+混用 > kon''you\ ;
+渦潮 > uzushio\ ;
+黙視 > mokushi\ ;
+蘭虫 > ranchuu\ ;
+釣魚 > chougyo\ ;
+我方 > wagahou\ ;
+同額 > dougaku\ ;
+穴熊 > anaguma\ ;
+流説 > rusetsu\ ;
+所得 > shotoku\ ;
+溜息 > tameiki\ ;
+深甚 > shinjin\ ;
+恭順 > kyoujun\ ;
+漏刻 > roukoku\ ;
+薩長 > satchou\ ;
+流言 > ryuugen\ ;
+担任 > tan''nin\ ;
+感興 > kankyou\ ;
+淡白 > tanpaku\ ;
+立春 > risshun\ ;
+窯業 > yougyou\ ;
+抜去 > bakkyou\ ;
+抗告 > koukoku\ ;
+温浴 > on''yoku\ ;
+禁足 > kinsoku\ ;
+準急 > junkyuu\ ;
+吃音 > kitsuon\ ;
+鉄路 > tetsuro\ ;
+社長 > shachou\ ;
+空漠 > kuubaku\ ;
+各面 > kakumen\ ;
+黒血 > kurochi\ ;
+消耗 > shoumou\ ;
+竣成 > shunsei\ ;
+洗足 > sensoku\ ;
+黒蟻 > kuroari\ ;
+憶測 > okusoku\ ;
+流行 > ryuukou\ ;
+窒死 > chisshi\ ;
+金高 > kindaka\ ;
+筺体 > kyoutai\ ;
+各階 > kakukai\ ;
+含量 > ganryou\ ;
+秋草 > akikusa\ ;
+才学 > saigaku\ ;
+神道 > shintou\ ;
+吾輩 > wagahai\ ;
+憤激 > fungeki\ ;
+情調 > jouchou\ ;
+愉色 > yushoku\ ;
+種目 > shumoku\ ;
+清濁 > seidaku\ ;
+策動 > sakudou\ ;
+周覧 > shuuran\ ;
+清澄 > seichou\ ;
+所属 > shozoku\ ;
+策励 > sakurei\ ;
+戦役 > sen''eki\ ;
+薄雲 > usugumo\ ;
+薄雪 > usuyuki\ ;
+祝辞 > shukuji\ ;
+抑制 > yokusei\ ;
+恋風 > koikaze\ ;
+商港 > shoukou\ ;
+神輿 > mikoshi\ ;
+蕁麻 > irakusa\ ;
+渓流 > keiryuu\ ;
+湿性 > shissei\ ;
+童心 > doushin\ ;
+戒慎 > kaishin\ ;
+投入 > tounyuu\ ;
+鹿追 > shikaoi\ ;
+祖述 > sojutsu\ ;
+淋病 > rinbyou\ ;
+戊戌 > bojutsu\ ;
+薬酒 > yakushu\ ;
+呪術 > jujutsu\ ;
+古顔 > furugao\ ;
+浅薄 > senpaku\ ;
+手妻 > tedzuma\ ;
+混濁 > kondaku\ ;
+金額 > kingaku\ ;
+鉤虫 > kouchuu\ ;
+浣腸 > kanchou\ ;
+清涼 > seiryou\ ;
+惨落 > sanraku\ ;
+商法 > shouhou\ ;
+慣用 > kan''you\ ;
+銅臭 > doushuu\ ;
+笑声 > shousei\ ;
+蘊蓄 > unchiku\ ;
+銀色 > gin''iro\ ;
+麦角 > bakkaku\ ;
+戒心 > kaishin\ ;
+投信 > toushin\ ;
+清流 > seiryuu\ ;
+私腹 > shifuku\ ;
+満幅 > manpuku\ ;
+台閣 > daikaku\ ;
+満席 > manseki\ ;
+承前 > shouzen\ ;
+喬志 > kyoushi\ ;
+深潭 > shintan\ ;
+反駁 > hanpaku\ ;
+竣工 > shunkou\ ;
+満州 > manshuu\ ;
+喪心 > soushin\ ;
+同量 > douryou\ ;
+祝賀 > shukuga\ ;
+悪評 > akuhyou\ ;
+哄笑 > koushou\ ;
+悪訳 > akuyaku\ ;
+急騰 > kyuutou\ ;
+蕪雑 > buzatsu\ ;
+黒茶 > kurocha\ ;
+税目 > zeimoku\ ;
+折中 > setchuu\ ;
+秘結 > hiketsu\ ;
+同郷 > doukyou\ ;
+懲戒 > choukai\ ;
+示達 > jitatsu\ ;
+重陽 > chouyou\ ;
+深淵 > shin''en\ ;
+懐旧 > kaikyuu\ ;
+筐体 > kyoutai\ ;
+虎穴 > koketsu\ ;
+喘息 > zensoku\ ;
+反響 > hankyou\ ;
+鎮定 > chintei\ ;
+深海 > shinkai\ ;
+商権 > shouken\ ;
+筒井 > tsutsui\ ;
+深浅 > shinsen\ ;
+哲理 > tetsuri\ ;
+鈍足 > donsoku\ ;
+空桶 > karaoke\ ;
+薄鈍 > usunoro\ ;
+懲悪 > chouaku\ ;
+空株 > kuukabu\ ;
+蛮族 > banzoku\ ;
+蕉風 > shoufuu\ ;
+笛吹 > fuefuki\ ;
+法身 > hosshin\ ;
+竜宮 > ryuuguu\ ;
+祝言 > shuugen\ ;
+鏡台 > kyoudai\ ;
+恥辱 > chijoku\ ;
+沈静 > chinsei\ ;
+懲役 > choueki\ ;
+善悪 > zen''aku\ ;
+滞京 > taikyou\ ;
+重鎮 > juuchin\ ;
+名跡 > meiseki\ ;
+急難 > kyuunan\ ;
+薄遇 > hakuguu\ ;
+参集 > sanshuu\ ;
+淡泊 > tanpaku\ ;
+手口 > teguchi\ ;
+沈降 > chinkou\ ;
+浸礼 > shinrei\ ;
+周航 > shuukou\ ;
+善心 > zenshin\ ;
+善徳 > zentoku\ ;
+打力 > daryoku\ ;
+淫欲 > in''yoku\ ;
+銀紙 > gingami\ ;
+鈴蘭 > suzuran\ ;
+戦域 > sen''iki\ ;
+吟誦 > ginshou\ ;
+究明 > kyuumei\ ;
+品目 > hinmoku\ ;
+醜類 > shuurui\ ;
+齲歯 > mushiba\ ;
+召還 > shoukan\ ;
+注解 > chuukai\ ;
+可逆 > kagyaku\ ;
+憂欝 > yuuutsu\ ;
+銅箔 > douhaku\ ;
+注視 > chuushi\ ;
+重量 > juuryou\ ;
+戦国 > sengoku\ ;
+所収 > shoshuu\ ;
+愛着 > aichaku\ ;
+鈍角 > donkaku\ ;
+麦茶 > mugicha\ ;
+黒線 > kokusen\ ;
+愚直 > guchoku\ ;
+銀箔 > ginpaku\ ;
+鏡像 > kyouzou\ ;
+藤色 > fujiiro\ ;
+史蹟 > shiseki\ ;
+戸口 > toguchi\ ;
+空揚 > karaage\ ;
+銀笛 > ginteki\ ;
+湿地 > shitchi\ ;
+海相 > kaishou\ ;
+第一 > daiichi\ ;
+清新 > seishin\ ;
+恭謙 > kyouken\ ;
+野道 > nomichi\ ;
+唐歌 > karauta\ ;
+同調 > douchou\ ;
+史跡 > shiseki\ ;
+鷹隼 > youshun\ ;
+競合 > kyougou\ ;
+名訳 > meiyaku\ ;
+収金 > shuukin\ ;
+合調 > gouchou\ ;
+口輪 > kuchiwa\ ;
+淳朴 > junboku\ ;
+黄緑 > ouryoku\ ;
+忠魂 > chuukon\ ;
+各論 > kakuron\ ;
+涸渇 > kokatsu\ ;
+合評 > gappyou\ ;
+叙述 > jojutsu\ ;
+深更 > shinkou\ ;
+洗脳 > sen''nou\ ;
+戸別 > kobetsu\ ;
+神葬 > shinsou\ ;
+立場 > tachiba\ ;
+唐様 > karayou\ ;
+麻縄 > asanawa\ ;
+鶺鴒 > sekirei\ ;
+悪臭 > akushuu\ ;
+積木 > tsumiki\ ;
+古跡 > furuato\ ;
+準則 > junsoku\ ;
+戦友 > sen''yuu\ ;
+浴用 > yokuyou\ ;
+吐血 > toketsu\ ;
+鈎虫 > kouchuu\ ;
+薄謝 > hakusha\ ;
+鎮台 > chindai\ ;
+沈酔 > chinsui\ ;
+商才 > shousai\ ;
+黙祷 > mokutou\ ;
+金赤 > kin''aka\ ;
+所信 > shoshin\ ;
+商戦 > shousen\ ;
+立国 > rikkoku\ ;
+黙礼 > mokurei\ ;
+黙示 > mokushi\ ;
+蚕業 > sangyou\ ;
+戦勝 > senshou\ ;
+叛跡 > hanseki\ ;
+思量 > shiryou\ ;
+手中 > shuchuu\ ;
+消燈 > shoutou\ ;
+神苑 > shin''en\ ;
+手下 > teshita\ ;
+収載 > shuusai\ ;
+急遽 > kyuukyo\ ;
+私的 > shiteki\ ;
+満卓 > mantaku\ ;
+急造 > kyuuzou\ ;
+急逝 > kyuusei\ ;
+渦巻 > uzumaki\ ;
+海猫 > umineko\ ;
+愚物 > gubutsu\ ;
+重責 > juuseki\ ;
+鼻汗 > hanaase\ ;
+反身 > hanshin\ ;
+急送 > kyuusou\ ;
+戒告 > kaikoku\ ;
+善女 > zen''nyo\ ;
+神興 > mikoshi\ ;
+悪習 > akushuu\ ;
+召請 > shousei\ ;
+鉛筆 > enpitsu\ ;
+叛賊 > hanzoku\ ;
+戒名 > kaimyou\ ;
+厳酷 > genkoku\ ;
+竣功 > shunkou\ ;
+唐朝 > touchou\ ;
+消灯 > shoutou\ ;
+心魂 > shinkon\ ;
+厄難 > yakunan\ ;
+房中 > bouchuu\ ;
+反跳 > hanchou\ ;
+海牛 > kaigyuu\ ;
+鉱石 > kouseki\ ;
+薬莢 > yakkyou\ ;
+鼻歌 > hanauta\ ;
+憑拠 > hyoukyo\ ;
+鉄索 > tessaku\ ;
+心髄 > shinzui\ ;
+急転 > kyuuten\ ;
+反越 > hanetsu\ ;
+吹聴 > fuichou\ ;
+湯口 > yuguchi\ ;
+戦傷 > senshou\ ;
+古説 > kosetsu\ ;
+水飴 > mizuame\ ;
+名薬 > meiyaku\ ;
+稿料 > kouryou\ ;
+即題 > sokudai\ ;
+忠霊 > chuurei\ ;
+口説 > kuzetsu\ ;
+口誦 > koushou\ ;
+薬草 > yakusou\ ;
+種板 > taneita\ ;
+虫気 > mushike\ ;
+空席 > kuuseki\ ;
+測定 > sokutei\ ;
+流砂 > ryuusha\ ;
+湾内 > wan''nai\ ;
+愕然 > gakuzen\ ;
+種本 > tanehon\ ;
+神聖 > shinsei\ ;
+収賄 > shuuwai\ ;
+反賊 > hanzoku\ ;
+感激 > kangeki\ ;
+鶴首 > kakushu\ ;
+虫歯 > mushiba\ ;
+各藩 > kakuhan\ ;
+洪積 > kouseki\ ;
+競争 > kyousou\ ;
+口角 > koukaku\ ;
+窮地 > kyuuchi\ ;
+商店 > shouten\ ;
+氷面 > hyoumen\ ;
+重訳 > juuyaku\ ;
+鈍色 > nibiiro\ ;
+千鳥 > chidori\ ;
+叙説 > josetsu\ ;
+志集 > shishuu\ ;
+窪地 > kubochi\ ;
+憔悴 > shousui\ ;
+深慮 > shinryo\ ;
+福祉 > fukushi\ ;
+禎祥 > teishou\ ;
+気骨 > kikotsu\ ;
+種族 > shuzoku\ ;
+里親 > satooya\ ;
+商工 > shoukou\ ;
+減少 > genshou\ ;
+黒痣 > kuroaza\ ;
+醋酸 > sakusan\ ;
+麦笛 > mugibue\ ;
+君臣 > kunshin\ ;
+洞穴 > horaana\ ;
+懸吊 > kenchou\ ;
+銃猟 > juuryou\ ;
+心願 > shingan\ ;
+淫慾 > in''yoku\ ;
+浸潤 > shinjun\ ;
+満作 > mansaku\ ;
+古血 > furuchi\ ;
+憂戚 > yuuseki\ ;
+含羞 > ganshuu\ ;
+空将 > kuushou\ ;
+心頭 > shintou\ ;
+唐揚 > karaage\ ;
+戦中 > senchuu\ ;
+水陸 > suiriku\ ;
+占領 > senryou\ ;
+浸漬 > shinshi\ ;
+心音 > shin''on\ ;
+周知 > shuuchi\ ;
+啓学 > keigaku\ ;
+薫育 > kun''iku\ ;
+愁然 > shuuzen\ ;
+黄白 > kouhaku\ ;
+反証 > hanshou\ ;
+流用 > ryuuyou\ ;
+満了 > manryou\ ;
+流産 > ryuuzan\ ;
+積悪 > sekiaku\ ;
+鉛直 > enchoku\ ;
+悪策 > akusaku\ ;
+麦秋 > mugiaki\ ;
+金融 > kin''yuu\ ;
+必需 > hitsuju\ ;
+憂愁 > yuushuu\ ;
+神経 > shinkei\ ;
+心霊 > shinrei\ ;
+感泣 > kankyuu\ ;
+収覧 > shuuran\ ;
+同舟 > doushuu\ ;
+惇睦 > tonboku\ ;
+海深 > kaishin\ ;
+蛮境 > bankyou\ ;
+反覆 > hanpuku\ ;
+福相 > fukusou\ ;
+突如 > totsujo\ ;
+液晶 > ekishou\ ;
+同腹 > doufuku\ ;
+海流 > kairyuu\ ;
+各般 > kakuhan\ ;
+測地 > sokuchi\ ;
+憂心 > yuushin\ ;
+積弊 > sekihei\ ;
+虚業 > kyogyou\ ;
+油菜 > aburana\ ;
+半額 > hangaku\ ;
+決議 > ketsugi\ ;
+鉄石 > tesseki\ ;
+快適 > kaiteki\ ;
+積年 > sekinen\ ;
+浸水 > shinsui\ ;
+酷遇 > kokuguu\ ;
+秘決 > hiketsu\ ;
+快速 > kaisoku\ ;
+黙然 > mokunen\ ;
+酪酸 > rakusan\ ;
+神童 > shindou\ ;
+釉薬 > yuuyaku\ ;
+唱導 > shoudou\ ;
+告知 > kokuchi\ ;
+急行 > kyuukou\ ;
+商大 > shoudai\ ;
+深層 > shinsou\ ;
+商売 > shoubai\ ;
+恋草 > koigusa\ ;
+慶弔 > keichou\ ;
+酢酸 > sakusan\ ;
+求道 > kyuudou\ ;
+浦波 > uranami\ ;
+薬籠 > yakurou\ ;
+渉外 > shougai\ ;
+黒点 > kokuten\ ;
+黒炭 > kokutan\ ;
+水量 > suiryou\ ;
+空圧 > kuuatsu\ ;
+秋水 > shuusui\ ;
+右腕 > migiude\ ;
+口茶 > kuchija\ ;
+品格 > hinkaku\ ;
+徒食 > toshoku\ ;
+酪農 > rakunou\ ;
+薄肉 > usuniku\ ;
+召致 > shouchi\ ;
+北鮮 > hokusen\ ;
+黴毒 > baidoku\ ;
+黄熟 > koujuku\ ;
+呪物 > jubutsu\ ;
+快足 > kaisoku\ ;
+収蔵 > shuuzou\ ;
+古色 > koshoku\ ;
+浴槽 > yokusou\ ;
+涼感 > ryoukan\ ;
+金色 > konjiki\ ;
+酒量 > shuryou\ ;
+慢心 > manshin\ ;
+同級 > doukyuu\ ;
+原註 > genchuu\ ;
+愁歎 > shuutan\ ;
+口臭 > koushuu\ ;
+嚇々 > kakkaku\ ;
+悪症 > akushou\ ;
+悪病 > akubyou\ ;
+化骨 > kakotsu\ ;
+里芋 > satoimo\ ;
+醜行 > shuukou\ ;
+哨戒 > shoukai\ ;
+反落 > hanraku\ ;
+半鐘 > hanshou\ ;
+薬種 > yakushu\ ;
+口腹 > koufuku\ ;
+心酔 > shinsui\ ;
+心配 > shinpai\ ;
+禁獄 > kingoku\ ;
+氷輪 > hyourin\ ;
+感服 > kanpuku\ ;
+毒魚 > dokugyo\ ;
+禁猟 > kinryou\ ;
+重臣 > juushin\ ;
+善人 > zen''nin\ ;
+吸盤 > kyuuban\ ;
+蛮勇 > ban''yuu\ ;
+深奥 > shin''ou\ ;
+各紙 > kakushi\ ;
+私欲 > shiyoku\ ;
+鹿砦 > rokusai\ ;
+祉福 > shifuku\ ;
+叛臣 > hanshin\ ;
+社章 > shashou\ ;
+窮乏 > kyuubou\ ;
+浸染 > shinsen\ ;
+鋳工 > chuukou\ ;
+深夜 > shin''ya\ ;
+確認 > kakunin\ ;
+減収 > genshuu\ ;
+薬礼 > yakurei\ ;
+錨地 > byouchi\ ;
+薄縁 > usuberi\ ;
+治績 > chiseki\ ;
+消散 > shousan\ ;
+票田 > hyouden\ ;
+確言 > kakugen\ ;
+薄絹 > usuginu\ ;
+快諾 > kaidaku\ ;
+北風 > hokufuu\ ;
+薄給 > hakkyuu\ ;
+重聴 > juuchou\ ;
+商品 > shouhin\ ;
+快調 > kaichou\ ;
+銘柄 > meigara\ ;
+悪玉 > akudama\ ;
+秘曲 > hikyoku\ ;
+薄紙 > usugami\ ;
+薄紅 > usubeni\ ;
+称揚 > shouyou\ ;
+蓚酸 > shuusan\ ;
+渋味 > shibumi\ ;
+南進 > nanshin\ ;
+黙止 > mokushi\ ;
+銘木 > meiboku\ ;
+鉱毒 > koudoku\ ;
+名称 > meishou\ ;
+商号 > shougou\ ;
+怨色 > enshoku\ ;
+流汗 > ryuukan\ ;
+北面 > hokumen\ ;
+悉皆 > shikkai\ ;
+流水 > ryuusui\ ;
+突先 > tossaki\ ;
+活況 > kakkyou\ ;
+釈義 > shakugi\ ;
+復配 > fukuhai\ ;
+忠誠 > chuusei\ ;
+原虫 > genchuu\ ;
+各種 > kakushu\ ;
+史籍 > shiseki\ ;
+吉祥 > kisshou\ ;
+硫酸 > ryuusan\ ;
+懐中 > kaichuu\ ;
+単身 > tanshin\ ;
+弱齢 > jakurei\ ;
+鄭重 > teichou\ ;
+忠言 > chuugen\ ;
+泡盛 > awamori\ ;
+北限 > hokugen\ ;
+升遷 > shousen\ ;
+秋晴 > akibare\ ;
+穴凹 > anaboko\ ;
+金網 > kanaami\ ;
+号笛 > gouteki\ ;
+蛇口 > jaguchi\ ;
+黒檀 > kokutan\ ;
+淑女 > shukujo\ ;
+憂国 > yuukoku\ ;
+洗濯 > sentaku\ ;
+各社 > kakusha\ ;
+双翼 > souyoku\ ;
+半農 > han''nou\ ;
+禁漁 > kinryou\ ;
+口約 > kouyaku\ ;
+清勝 > seishou\ ;
+鈍痛 > dontsuu\ ;
+私服 > shifuku\ ;
+口糧 > kouryou\ ;
+金納 > kin''nou\ ;
+北門 > kitamon\ ;
+吸物 > suimono\ ;
+厚薄 > kouhaku\ ;
+鉱業 > kougyou\ ;
+十進 > jisshin\ ;
+薬用 > yakuyou\ ;
+永訣 > eiketsu\ ;
+積善 > sekizen\ ;
+銀杏 > gin''nan\ ;
+渡仏 > tofutsu\ ;
+硝酸 > shousan\ ;
+磊落 > rairaku\ ;
+虚心 > kyoshin\ ;
+減作 > gensaku\ ;
+半身 > hanshin\ ;
+情況 > joukyou\ ;
+洗滌 > sendeki\ ;
+氷解 > hyoukai\ ;
+名目 > meimoku\ ;
+句節 > kusetsu\ ;
+同省 > doushou\ ;
+津波 > tsunami\ ;
+収繭 > shuuken\ ;
+法的 > houteki\ ;
+泉石 > senseki\ ;
+沖縄 > okinawa\ ;
+民踊 > min''you\ ;
+虚弱 > kyojaku\ ;
+協賛 > kyousan\ ;
+即製 > sokusei\ ;
+金箔 > kinpaku\ ;
+古筆 > kohitsu\ ;
+後釜 > atogama\ ;
+深厚 > shinkou\ ;
+御輿 > mikoshi\ ;
+重篤 > juutoku\ ;
+添削 > tensaku\ ;
+金策 > kinsaku\ ;
+鉱柱 > kouchuu\ ;
+金筋 > kinsuji\ ;
+得道 > tokudou\ ;
+礦石 > kouseki\ ;
+郷関 > kyoukan\ ;
+重箱 > juubako\ ;
+各県 > kakuken\ ;
+厩舎 > kyuusha\ ;
+可祝 > kashiku\ ;
+同病 > doubyou\ ;
+情欲 > jouyoku\ ;
+収納 > shuunou\ ;
+空中 > kuuchuu\ ;
+黒板 > kokuban\ ;
+神灯 > shintou\ ;
+藁灰 > warabai\ ;
+同町 > douchou\ ;
+虫害 > chuugai\ ;
+感応 > kan''nou\ ;
+商会 > shoukai\ ;
+感心 > kanshin\ ;
+単調 > tanchou\ ;
+銃撃 > juugeki\ ;
+黄梢 > koushou\ ;
+感得 > kantoku\ ;
+惇樸 > tonboku\ ;
+石鯛 > ishidai\ ;
+醜聞 > shuubun\ ;
+商人 > shounin\ ;
+後逸 > kouitsu\ ;
+後進 > koushin\ ;
+重積 > juuseki\ ;
+台石 > daiishi\ ;
+卓論 > takuron\ ;
+殿閣 > denkaku\ ;
+薄皮 > usukawa\ ;
+厚臼 > atsuusu\ ;
+博覧 > hakuran\ ;
+単角 > tankaku\ ;
+虎巻 > torakan\ ;
+当限 > tougiri\ ;
+積分 > sekibun\ ;
+悄然 > shouzen\ ;
+民謡 > min''you\ ;
+錯乱 > sakuran\ ;
+黒斑 > kokuhan\ ;
+流星 > ryuusei\ ;
+治療 > chiryou\ ;
+史的 > shiteki\ ;
+混信 > konshin\ ;
+郡長 > gunchou\ ;
+単複 > tanpuku\ ;
+残高 > zandaka\ ;
+思索 > shisaku\ ;
+及第 > kyuudai\ ;
+秀才 > shuusai\ ;
+鉄橋 > tekkyou\ ;
+強風 > kyoufuu\ ;
+薪炭 > shintan\ ;
+混作 > konsaku\ ;
+金石 > kinseki\ ;
+鉄槌 > tettsui\ ;
+収税 > shuuzei\ ;
+惜敗 > sekihai\ ;
+稲叢 > inamura\ ;
+私慾 > shiyoku\ ;
+硬調 > kouchou\ ;
+半角 > hankaku\ ;
+彫金 > choukin\ ;
+毒酒 > dokushu\ ;
+浮彫 > ukibori\ ;
+秋思 > shuushi\ ;
+後足 > atoashi\ ;
+北辺 > hokuhen\ ;
+唯今 > tadaima\ ;
+釣瓶 > tsurube\ ;
+慟哭 > doukoku\ ;
+惑星 > wakusei\ ;
+半襟 > han''eri\ ;
+惇朴 > tonboku\ ;
+死魄 > shihaku\ ;
+強靭 > kyoujin\ ;
+吸水 > kyuusui\ ;
+確聞 > kakubun\ ;
+恋病 > koiyami\ ;
+金的 > kinteki\ ;
+深交 > shinkou\ ;
+周易 > shuueki\ ;
+矯風 > kyoufuu\ ;
+慶兆 > keichou\ ;
+半袖 > hansode\ ;
+吸殻 > suigara\ ;
+郷邑 > kyouyuu\ ;
+虫垂 > chuusui\ ;
+周旋 > shuusen\ ;
+正鵠 > seikoku\ ;
+民衆 > minshuu\ ;
+海峡 > kaikyou\ ;
+鉄柵 > tessaku\ ;
+鉄柱 > tetchuu\ ;
+毎週 > maishuu\ ;
+私心 > shishin\ ;
+神殿 > shinden\ ;
+残額 > zangaku\ ;
+息災 > sokusai\ ;
+弱電 > jakuden\ ;
+蔵米 > kuramai\ ;
+海山 > umiyama\ ;
+残響 > zankyou\ ;
+洋楽 > yougaku\ ;
+穀倉 > kokusou\ ;
+重症 > juushou\ ;
+重病 > juubyou\ ;
+薬液 > yakueki\ ;
+海将 > kaishou\ ;
+薄物 > usumono\ ;
+原級 > genkyuu\ ;
+重畳 > choujou\ ;
+薄片 > hakuhen\ ;
+黙想 > mokusou\ ;
+量産 > ryousan\ ;
+泥海 > doroumi\ ;
+鼻唄 > hanauta\ ;
+否決 > hiketsu\ ;
+御袋 > ofukuro\ ;
+怪石 > kaiseki\ ;
+水芸 > mizugei\ ;
+重用 > chouyou\ ;
+落首 > rakushu\ ;
+即興 > sokkyou\ ;
+秘密 > himitsu\ ;
+咫尺 > shiseki\ ;
+当量 > touryou\ ;
+収監 > shuukan\ ;
+卵膜 > ranmaku\ ;
+反目 > hanmoku\ ;
+水色 > mizuiro\ ;
+砲身 > houshin\ ;
+収益 > shuueki\ ;
+神権 > shinken\ ;
+原籍 > genseki\ ;
+悲曲 > hikyoku\ ;
+蕃神 > banshin\ ;
+針状 > harijou\ ;
+殉難 > jun''nan\ ;
+律語 > ritsugo\ ;
+銃床 > juushou\ ;
+黙思 > mokushi\ ;
+注水 > chuusui\ ;
+召状 > shoujou\ ;
+黙念 > mokunen\ ;
+恋猫 > koineko\ ;
+適齢 > tekirei\ ;
+武骨 > bukotsu\ ;
+和式 > washiki\ ;
+虜囚 > ryoshuu\ ;
+流感 > ryuukan\ ;
+銚子 > choushi\ ;
+禁教 > kinkyou\ ;
+単葉 > tan''you\ ;
+黙従 > mokujuu\ ;
+金玉 > kintama\ ;
+銀幕 > ginmaku\ ;
+薪水 > shinsui\ ;
+矢面 > yaomote\ ;
+税収 > zeishuu\ ;
+稲作 > inasaku\ ;
+洋服 > youfuku\ ;
+祭服 > saifuku\ ;
+性的 > seiteki\ ;
+収用 > shuuyou\ ;
+印肉 > in''niku\ ;
+性癖 > seiheki\ ;
+酒興 > shukyou\ ;
+弁駁 > benpaku\ ;
+蘭学 > rangaku\ ;
+名流 > meiryuu\ ;
+恵沢 > keitaku\ ;
+形跡 > keiseki\ ;
+同流 > douryuu\ ;
+重犯 > chouhan\ ;
+砂鉄 > satetsu\ ;
+性病 > seibyou\ ;
+告文 > kokubun\ ;
+心臓 > shinzou\ ;
+弔電 > chouden\ ;
+落雷 > rakurai\ ;
+双璧 > souheki\ ;
+悪方 > akugata\ ;
+鉱床 > koushou\ ;
+合流 > gouryuu\ ;
+落雁 > rakugan\ ;
+流弾 > ryuudan\ ;
+社歴 > shareki\ ;
+私宅 > shitaku\ ;
+落陽 > rakuyou\ ;
+重爆 > juubaku\ ;
+確答 > kakutou\ ;
+鳩首 > kyuushu\ ;
+私学 > shigaku\ ;
+参画 > sankaku\ ;
+勧農 > kan''nou\ ;
+原票 > genpyou\ ;
+正風 > shoufuu\ ;
+急用 > kyuuyou\ ;
+黒帯 > kuroobi\ ;
+動量 > douryou\ ;
+哨兵 > shouhei\ ;
+銀将 > ginshou\ ;
+叙爵 > joshaku\ ;
+心胆 > shintan\ ;
+情慾 > jouyoku\ ;
+北西 > hokusei\ ;
+浴場 > yokujou\ ;
+形象 > keishou\ ;
+気色 > kishoku\ ;
+心肝 > shinkan\ ;
+忠純 > chuujun\ ;
+磐石 > banjaku\ ;
+票数 > hyousuu\ ;
+口火 > kuchibi\ ;
+叔父 > shukufu\ ;
+反独 > handoku\ ;
+私娼 > shishou\ ;
+泥棒 > dorobou\ ;
+秋声 > shuusei\ ;
+神明 > shinmei\ ;
+汁粉 > shiruko\ ;
+弱酸 > jakusan\ ;
+海国 > kaikoku\ ;
+蔵相 > zoushou\ ;
+千草 > chigusa\ ;
+勘進 > kanshin\ ;
+博聞 > hakubun\ ;
+含有 > gan''yuu\ ;
+反物 > tanmono\ ;
+原石 > genseki\ ;
+卜者 > bokusha\ ;
+鳥類 > chourui\ ;
+称号 > shougou\ ;
+弁難 > ben''nan\ ;
+即納 > sokunou\ ;
+社業 > shagyou\ ;
+気脈 > kimyaku\ ;
+号泣 > goukyuu\ ;
+礼楽 > reigaku\ ;
+神政 > shinsei\ ;
+短針 > tanshin\ ;
+母親 > hahaoya\ ;
+酷税 > kokuzei\ ;
+移出 > ishutsu\ ;
+徳育 > tokuiku\ ;
+磁石 > jishaku\ ;
+残酷 > zankoku\ ;
+法楽 > houraku\ ;
+反照 > hanshou\ ;
+消去 > shoukyo\ ;
+醜男 > buotoko\ ;
+破裂 > haretsu\ ;
+水精 > suishou\ ;
+周年 > shuunen\ ;
+蔑称 > besshou\ ;
+消印 > keshiin\ ;
+同業 > dougyou\ ;
+私塾 > shijuku\ ;
+勧賞 > kanshou\ ;
+悪戯 > itazura\ ;
+動軸 > doujiku\ ;
+浅学 > sengaku\ ;
+碧空 > hekikuu\ ;
+劈頭 > hekitou\ ;
+厚相 > koushou\ ;
+力闘 > rikitou\ ;
+石造 > sekizou\ ;
+油気 > aburake\ ;
+蘭国 > rankoku\ ;
+心緒 > shincho\ ;
+可決 > kaketsu\ ;
+勇進 > yuushin\ ;
+即答 > sokutou\ ;
+弱輩 > jakuhai\ ;
+鉄心 > tesshin\ ;
+毛虫 > kemushi\ ;
+弔銃 > choujuu\ ;
+参照 > sanshou\ ;
+恋河 > koikawa\ ;
+配給 > haikyuu\ ;
+同格 > doukaku\ ;
+注文 > chuumon\ ;
+叱正 > shissei\ ;
+薬方 > yakuhou\ ;
+活字 > katsuji\ ;
+原由 > gen''yuu\ ;
+哀別 > aibetsu\ ;
+徒花 > adabana\ ;
+週齡 > shuurei\ ;
+礼服 > reifuku\ ;
+選集 > senshuu\ ;
+恋水 > koimizu\ ;
+哀切 > aisetsu\ ;
+合格 > goukaku\ ;
+愁嘆 > shuutan\ ;
+礦業 > kougyou\ ;
+海原 > unabara\ ;
+麻屑 > asakuzu\ ;
+古池 > furuike\ ;
+鶏肉 > keiniku\ ;
+法服 > houfuku\ ;
+勘責 > kanseki\ ;
+愚劣 > guretsu\ ;
+消光 > shoukou\ ;
+単級 > tankyuu\ ;
+名木 > meiboku\ ;
+短軸 > tanjiku\ ;
+勇躍 > yuuyaku\ ;
+醜状 > shuujou\ ;
+各校 > kakukou\ ;
+叢氷 > souhyou\ ;
+恋死 > koijini\ ;
+勧誘 > kan''yuu\ ;
+悪徳 > akutoku\ ;
+気絶 > kizetsu\ ;
+黒壇 > kokutan\ ;
+心算 > shinzan\ ;
+沈澱 > chinden\ ;
+強豪 > kyougou\ ;
+悪役 > akuyaku\ ;
+劈開 > hekikai\ ;
+悪形 > akugata\ ;
+心筋 > shinkin\ ;
+古歌 > furuuta\ ;
+落選 > rakusen\ ;
+沈潜 > chinsen\ ;
+神慮 > shinryo\ ;
+副題 > fukudai\ ;
+式部 > shikibu\ ;
+弓道 > kyuudou\ ;
+正銘 > shoumei\ ;
+卜筮 > bokuzei\ ;
+呂律 > roretsu\ ;
+葉身 > youshin\ ;
+徐脈 > jomyaku\ ;
+感傷 > kanshou\ ;
+碧眼 > hekigan\ ;
+後腹 > atobara\ ;
+洋弓 > youkyuu\ ;
+瞬間 > shunkan\ ;
+短足 > tansoku\ ;
+示教 > shikyou\ ;
+卿相 > keishou\ ;
+歴遊 > rekiyuu\ ;
+沈滞 > chintai\ ;
+同族 > douzoku\ ;
+剳青 > irezumi\ ;
+彬蔚 > hinutsu\ ;
+禅寺 > zendera\ ;
+後脚 > atoashi\ ;
+思潮 > shichou\ ;
+浮力 > furyoku\ ;
+磨滅 > mametsu\ ;
+死軸 > shijiku\ ;
+正金 > shoukin\ ;
+流域 > ryuuiki\ ;
+禅宗 > zenshuu\ ;
+鶴科 > tsuruka\ ;
+藩学 > hangaku\ ;
+恭敬 > kyoukei\ ;
+汎用 > han''you\ ;
+急減 > kyuugen\ ;
+神性 > shinsei\ ;
+悔悛 > kaishun\ ;
+禅学 > zengaku\ ;
+叔母 > shukubo\ ;
+式辞 > shikiji\ ;
+秀吟 > shuugin\ ;
+過食 > kashoku\ ;
+原爆 > genbaku\ ;
+鳥銃 > choujuu\ ;
+前髪 > maegami\ ;
+咀嚼 > soshaku\ ;
+租借 > soshaku\ ;
+殺虫 > satchuu\ ;
+勤行 > gongyou\ ;
+悖徳 > haitoku\ ;
+毒草 > dokusou\ ;
+卵白 > ranpaku\ ;
+秋分 > shuubun\ ;
+参洛 > sanraku\ ;
+咬傷 > koushou\ ;
+律義 > richigi\ ;
+秋冷 > shuurei\ ;
+強要 > kyouyou\ ;
+金棒 > kanabou\ ;
+薄明 > hakumei\ ;
+座骨 > zakotsu\ ;
+剣難 > ken''nan\ ;
+徴税 > chouzei\ ;
+復答 > fukutou\ ;
+勅諭 > chokuyu\ ;
+労賃 > rouchin\ ;
+弱視 > jakushi\ ;
+合掌 > gasshou\ ;
+勅語 > chokugo\ ;
+短調 > tanchou\ ;
+司教 > shikyou\ ;
+沈殿 > chinden\ ;
+鵬翼 > houyoku\ ;
+勅許 > chokkyo\ ;
+短評 > tanpyou\ ;
+秘仏 > hibutsu\ ;
+急死 > kyuushi\ ;
+強行 > kyoukou\ ;
+性欲 > seiyoku\ ;
+海亀 > umigame\ ;
+毒腺 > dokusen\ ;
+史料 > shiryou\ ;
+氷田 > hyouden\ ;
+心眼 > shingan\ ;
+邁進 > maishin\ ;
+古本 > furubon\ ;
+確然 > kakuzen\ ;
+洋学 > yougaku\ ;
+役者 > yakusha\ ;
+惰力 > daryoku\ ;
+反様 > kaisama\ ;
+民福 > minpuku\ ;
+前額 > zengaku\ ;
+海中 > kaichuu\ ;
+後続 > kouzoku\ ;
+古曲 > kokyoku\ ;
+遅霜 > osojimo\ ;
+周回 > shuukai\ ;
+洛外 > rakugai\ ;
+半神 > hanshin\ ;
+当落 > touraku\ ;
+酒癖 > shuheki\ ;
+邪説 > jasetsu\ ;
+欠除 > ketsujo\ ;
+氏神 > ujigami\ ;
+金曜 > kin''you\ ;
+段落 > danraku\ ;
+座食 > zashoku\ ;
+呻吟 > shingin\ ;
+鉄壁 > teppeki\ ;
+秋作 > akisaku\ ;
+千秋 > senshuu\ ;
+区立 > kuritsu\ ;
+忠犬 > chuuken\ ;
+各所 > kakusho\ ;
+劇道 > gekidou\ ;
+惨劇 > sangeki\ ;
+恋文 > koibumi\ ;
+銃傷 > juushou\ ;
+法悦 > houetsu\ ;
+知覚 > chikaku\ ;
+邦訳 > houyaku\ ;
+水球 > suikyuu\ ;
+私信 > shishin\ ;
+力走 > rikisou\ ;
+浦人 > urabito\ ;
+反核 > hankaku\ ;
+幽鳥 > yuuchou\ ;
+薬師 > yakushi\ ;
+神宝 > shinpou\ ;
+神官 > shinkan\ ;
+祝宴 > shukuen\ ;
+銀側 > gingawa\ ;
+取替 > torikae\ ;
+弔詞 > choushi\ ;
+占用 > sen''you\ ;
+前陳 > zenchin\ ;
+石蝋 > sekirou\ ;
+死角 > shikaku\ ;
+蓬生 > yomogiu\ ;
+流動 > ryuudou\ ;
+厄災 > yakusai\ ;
+叫換 > kyoukan\ ;
+怠業 > taigyou\ ;
+歴訪 > rekihou\ ;
+同心 > doushin\ ;
+原注 > genchuu\ ;
+逆鱗 > gekirin\ ;
+知行 > chigyou\ ;
+性格 > seikaku\ ;
+同役 > douyaku\ ;
+酸漿 > hoozuki\ ;
+吉徴 > kitchou\ ;
+歴覧 > rekiran\ ;
+水牢 > mizurou\ ;
+水牛 > suigyuu\ ;
+合従 > gasshou\ ;
+半白 > hanpaku\ ;
+鳥貝 > torigai\ ;
+池沼 > chishou\ ;
+配球 > haikyuu\ ;
+幽鬱 > yuuutsu\ ;
+水爆 > suibaku\ ;
+北米 > hokubei\ ;
+卓用 > takuyou\ ;
+蕃椒 > banshou\ ;
+剽軽 > hyoukin\ ;
+注射 > chuusha\ ;
+徴用 > chouyou\ ;
+酔狂 > suikyou\ ;
+咎人 > toganin\ ;
+葉蜂 > habachi\ ;
+心猿 > shin''en\ ;
+徳用 > tokuyou\ ;
+恰幅 > kappuku\ ;
+迷鳥 > meichou\ ;
+通風 > tsuufuu\ ;
+十目 > juumoku\ ;
+薄情 > hakujou\ ;
+正調 > seichou\ ;
+同席 > douseki\ ;
+参朝 > sanchou\ ;
+真黒 > makkuro\ ;
+劣角 > rekkaku\ ;
+薬害 > yakugai\ ;
+恢復 > kaifuku\ ;
+週間 > shuukan\ ;
+禄命 > rokumei\ ;
+古拙 > kosetsu\ ;
+刻限 > kokugen\ ;
+収斂 > shuuren\ ;
+神変 > shinpen\ ;
+氷点 > hyouten\ ;
+弁証 > benshou\ ;
+氷炭 > hyoutan\ ;
+歎賞 > tanshou\ ;
+吸塵 > kyuujin\ ;
+君寵 > kunchou\ ;
+干魚 > hoshiuo\ ;
+収支 > shuushi\ ;
+収攬 > shuuran\ ;
+各店 > kakuten\ ;
+卓球 > takkyuu\ ;
+恐慌 > kyoukou\ ;
+口承 > koushou\ ;
+厳格 > genkaku\ ;
+薄志 > hakushi\ ;
+禀告 > rinkoku\ ;
+周到 > shuutou\ ;
+汗水 > asemizu\ ;
+北端 > hokutan\ ;
+単独 > tandoku\ ;
+各市 > kakushi\ ;
+反撃 > hangeki\ ;
+流体 > ryuutai\ ;
+黒人 > kokujin\ ;
+彼程 > arehodo\ ;
+社宅 > shataku\ ;
+流会 > ryuukai\ ;
+半球 > hankyuu\ ;
+遊郭 > yuukaku\ ;
+道辺 > michibe\ ;
+店長 > tenchou\ ;
+恒心 > koushin\ ;
+武術 > bujutsu\ ;
+残菊 > zangiku\ ;
+名将 > meishou\ ;
+没我 > botsuga\ ;
+同小 > doushou\ ;
+流亡 > ryuubou\ ;
+初音 > hatsune\ ;
+都立 > toritsu\ ;
+后宮 > koukyuu\ ;
+別離 > betsuri\ ;
+従的 > juuteki\ ;
+命中 > meichuu\ ;
+破竹 > hachiku\ ;
+蒼白 > souhaku\ ;
+水滴 > suiteki\ ;
+量感 > ryoukan\ ;
+法学 > hougaku\ ;
+劇論 > gekiron\ ;
+卒爾 > sotsuji\ ;
+劇談 > gekidan\ ;
+思料 > shiryou\ ;
+硬球 > koukyuu\ ;
+力行 > ryokkou\ ;
+同宗 > doushuu\ ;
+蕃族 > banzoku\ ;
+禁則 > kinsoku\ ;
+選評 > senpyou\ ;
+礫岩 > rekigan\ ;
+各層 > kakusou\ ;
+別院 > betsuin\ ;
+同学 > dougaku\ ;
+磁極 > jikyoku\ ;
+通関 > tsuukan\ ;
+勝者 > shousha\ ;
+劇詩 > gekishi\ ;
+干飯 > hoshiii\ ;
+鉄則 > tessoku\ ;
+遅速 > chisoku\ ;
+碧水 > hekisui\ ;
+石臼 > ishiusu\ ;
+年額 > nengaku\ ;
+強肩 > kyouken\ ;
+台帳 > daichou\ ;
+水深 > suishin\ ;
+氷海 > hyoukai\ ;
+泰国 > taikoku\ ;
+別間 > betsuma\ ;
+汁気 > shiruke\ ;
+洛内 > rakunai\ ;
+毎秒 > maibyou\ ;
+微熱 > binetsu\ ;
+水浴 > suiyoku\ ;
+惑乱 > wakuran\ ;
+落葉 > rakuyou\ ;
+加虐 > kagyaku\ ;
+強者 > kyousha\ ;
+古式 > koshiki\ ;
+蒸留 > jouryuu\ ;
+重心 > juushin\ ;
+半熟 > hanjuku\ ;
+水流 > suiryuu\ ;
+真髄 > shinzui\ ;
+前進 > zenshin\ ;
+前週 > zenshuu\ ;
+原木 > genboku\ ;
+重役 > juuyaku\ ;
+叛心 > hanshin\ ;
+勤続 > kinzoku\ ;
+逼迫 > hippaku\ ;
+半焼 > hanshou\ ;
+神品 > shinpin\ ;
+厚板 > atsuita\ ;
+没後 > botsugo\ ;
+泥坊 > dorobou\ ;
+弱者 > jakusha\ ;
+卵殻 > rankaku\ ;
+金平 > kinpira\ ;
+危気 > abunage\ ;
+急所 > kyuusho\ ;
+殻竿 > karasao\ ;
+醇朴 > junboku\ ;
+取得 > shutoku\ ;
+即死 > sokushi\ ;
+鴇色 > tokiiro\ ;
+台尻 > daijiri\ ;
+君国 > kunkoku\ ;
+性慾 > seiyoku\ ;
+追随 > tsuizui\ ;
+勲章 > kunshou\ ;
+進退 > shintai\ ;
+連量 > renryou\ ;
+前身 > zenshin\ ;
+原料 > genryou\ ;
+死臭 > shishuu\ ;
+邑落 > yuuraku\ ;
+副詞 > fukushi\ ;
+合壁 > gappeki\ ;
+前蹤 > zenshou\ ;
+史学 > shigaku\ ;
+反応 > han''nou\ ;
+出額 > debitai\ ;
+刹那 > setsuna\ ;
+年長 > nenchou\ ;
+反復 > hanpuku\ ;
+出頭 > shuttou\ ;
+切除 > setsujo\ ;
+葭簀 > yoshizu\ ;
+凶類 > kyourui\ ;
+碇泊 > teihaku\ ;
+急患 > kyuukan\ ;
+前足 > maeashi\ ;
+吟唱 > ginshou\ ;
+洋傘 > yougasa\ ;
+研究 > kenkyuu\ ;
+進軍 > shingun\ ;
+性急 > seikyuu\ ;
+禁中 > kinchuu\ ;
+神剣 > shinken\ ;
+酒毒 > shudoku\ ;
+神前 > shinzen\ ;
+金属 > kinzoku\ ;
+急性 > kyuusei\ ;
+葦簾 > yoshizu\ ;
+薬品 > yakuhin\ ;
+沈思 > chinshi\ ;
+南洋 > nan''you\ ;
+同国 > doukoku\ ;
+死肉 > shiniku\ ;
+性徴 > seichou\ ;
+平鑿 > heisaku\ ;
+葦簀 > yoshizu\ ;
+勝算 > shousan\ ;
+金将 > kinshou\ ;
+思惑 > omowaku\ ;
+鳶色 > tobiiro\ ;
+石綿 > sekimen\ ;
+落胆 > rakutan\ ;
+鳥葬 > chousou\ ;
+危極 > kikyoku\ ;
+沢山 > takusan\ ;
+得点 > tokuten\ ;
+叉庫 > azekura\ ;
+酷暑 > kokusho\ ;
+双幅 > soufuku\ ;
+当確 > toukaku\ ;
+刺身 > sashimi\ ;
+広量 > kouryou\ ;
+各地 > kakuchi\ ;
+薄墨 > usuzumi\ ;
+泊地 > hakuchi\ ;
+厨房 > chuubou\ ;
+叛将 > hanshou\ ;
+各国 > kakkoku\ ;
+葦笛 > ashibue\ ;
+重宝 > chouhou\ ;
+量子 > ryoushi\ ;
+幕電 > makuden\ ;
+剥製 > hakusei\ ;
+醜態 > shuutai\ ;
+功臣 > koushin\ ;
+短絡 > tanraku\ ;
+薬包 > yakuhou\ ;
+民泊 > minpaku\ ;
+社告 > shakoku\ ;
+弁膜 > benmaku\ ;
+進貢 > shinkou\ ;
+常駐 > jouchuu\ ;
+醜悪 > shuuaku\ ;
+決心 > kesshin\ ;
+砕石 > saiseki\ ;
+正腹 > seifuku\ ;
+鳩舎 > kyuusha\ ;
+薬剤 > yakuzai\ ;
+比率 > hiritsu\ ;
+合唱 > gasshou\ ;
+勾留 > kouryuu\ ;
+別辞 > betsuji\ ;
+弊習 > heishuu\ ;
+役牛 > ekigyuu\ ;
+逍遥 > shouyou\ ;
+沼地 > numachi\ ;
+逍遙 > shouyou\ ;
+莫連 > bakuren\ ;
+法名 > houmyou\ ;
+廷臣 > teishin\ ;
+石筍 > sekijun\ ;
+神体 > shintai\ ;
+収容 > shuuyou\ ;
+悠久 > yuukyuu\ ;
+治国 > chikoku\ ;
+初速 > shosoku\ ;
+名号 > myougou\ ;
+心棒 > shinbou\ ;
+神仙 > shinsen\ ;
+進講 > shinkou\ ;
+法博 > houhaku\ ;
+神人 > shinjin\ ;
+逆運 > gyakuun\ ;
+眉雪 > bisetsu\ ;
+選良 > senryou\ ;
+凸鏡 > tokkyou\ ;
+蒸溜 > jouryuu\ ;
+合口 > aikuchi\ ;
+社則 > shasoku\ ;
+欝血 > ukketsu\ ;
+水晶 > suishou\ ;
+荒駒 > aragoma\ ;
+名匠 > meishou\ ;
+永日 > eijitsu\ ;
+殺生 > sesshou\ ;
+即断 > sokudan\ ;
+分針 > funshin\ ;
+千歳 > chitose\ ;
+分量 > bunryou\ ;
+名勝 > meishou\ ;
+別路 > betsuro\ ;
+法力 > houriki\ ;
+比熱 > hinetsu\ ;
+勤皇 > kin''nou\ ;
+強硬 > kyoukou\ ;
+法則 > housoku\ ;
+進言 > shingen\ ;
+廃虚 > haikyo\ ;
+忿怒 > fun''nu\ ;
+送迎 > sougei\ ;
+迅雷 > jinrai\ ;
+志操 > shisou\ ;
+通貨 > tsuuka\ ;
+名刺 > meishi\ ;
+同前 > douzen\ ;
+礼典 > reiten\ ;
+前衛 > zen''ei\ ;
+矢筈 > yahazu\ ;
+金坑 > kinkou\ ;
+原形 > genkei\ ;
+復権 > fukken\ ;
+前行 > zenkou\ ;
+名分 > meibun\ ;
+形状 > keijou\ ;
+列車 > ressha\ ;
+名刀 > meitou\ ;
+廃藩 > haihan\ ;
+配本 > haihon\ ;
+厚志 > koushi\ ;
+薄味 > hakumi\ ;
+社僧 > shasou\ ;
+合剤 > gouzai\ ;
+同処 > dousho\ ;
+法典 > houten\ ;
+社債 > shasai\ ;
+年輪 > nenrin\ ;
+年輩 > nenpai\ ;
+磁心 > jishin\ ;
+分遣 > bunken\ ;
+友好 > yuukou\ ;
+勤番 > kinban\ ;
+石碑 > sekihi\ ;
+合切 > gassai\ ;
+退転 > taiten\ ;
+正編 > seihen\ ;
+反変 > hanpen\ ;
+叱咤 > shitta\ ;
+同党 > doutou\ ;
+幽趣 > yuushu\ ;
+加給 > kakyuu\ ;
+名優 > meiyuu\ ;
+厳封 > genpuu\ ;
+帯電 > taiden\ ;
+律法 > rippou\ ;
+凌雲 > ryouun\ ;
+快感 > kaikan\ ;
+選考 > senkou\ ;
+矢種 > yadane\ ;
+汎愛 > han''ai\ ;
+強盗 > goutou\ ;
+厳寒 > genkan\ ;
+量器 > ryouki\ ;
+名僧 > meisou\ ;
+正統 > seitou\ ;
+遊蕩 > yuutou\ ;
+決定 > kettei\ ;
+蒸民 > joumin\ ;
+弾痕 > dankon\ ;
+重噸 > juuton\ ;
+迂闊 > ukatsu\ ;
+造詣 > zoukei\ ;
+淡々 > tantan\ ;
+厳守 > genshu\ ;
+台名 > taimei\ ;
+厳存 > genson\ ;
+正系 > seikei\ ;
+邪神 > jashin\ ;
+辺陬 > hensuu\ ;
+造言 > zougen\ ;
+逃走 > tousou\ ;
+通語 > tsuugo\ ;
+分載 > bunsai\ ;
+酸性 > sansei\ ;
+相関 > soukan\ ;
+後段 > koudan\ ;
+社会 > shakai\ ;
+通話 > tsuuwa\ ;
+復校 > fukkou\ ;
+同値 > douchi\ ;
+切身 > kirimi\ ;
+君主 > kunshu\ ;
+草鞋 > waraji\ ;
+法例 > hourei\ ;
+河原 > kawara\ ;
+制裁 > seisai\ ;
+南方 > nanpou\ ;
+北海 > hokkai\ ;
+忠愛 > chuuai\ ;
+金員 > kin''in\ ;
+単文 > tanbun\ ;
+確度 > kakudo\ ;
+民望 > minbou\ ;
+薄利 > hakuri\ ;
+社交 > shakou\ ;
+微服 > bifuku\ ;
+求愛 > kyuuai\ ;
+単数 > tansuu\ ;
+必携 > hikkei\ ;
+金品 > kinpin\ ;
+劣等 > rettou\ ;
+盤面 > banmen\ ;
+匠気 > shouki\ ;
+動産 > dousan\ ;
+延納 > en''nou\ ;
+砕片 > saihen\ ;
+真逆 > masaka\ ;
+同体 > doutai\ ;
+河北 > kahoku\ ;
+社主 > shashu\ ;
+南支 > nanshi\ ;
+口吻 > koufun\ ;
+弾琴 > dankin\ ;
+師門 > shimon\ ;
+気早 > kibaya\ ;
+法令 > hourei\ ;
+急場 > kyuuba\ ;
+同伴 > douhan\ ;
+連衡 > renkou\ ;
+口吟 > kougin\ ;
+連行 > renkou\ ;
+法人 > houjin\ ;
+冷静 > reisei\ ;
+返金 > henkin\ ;
+参堂 > sandou\ ;
+快弁 > kaiben\ ;
+忠恕 > chuujo\ ;
+召募 > shoubo\ ;
+合併 > gouhei\ ;
+吐乳 > tonyuu\ ;
+迷走 > meisou\ ;
+正答 > seitou\ ;
+名人 > meijin\ ;
+合体 > gattai\ ;
+薄光 > hakkou\ ;
+蔓延 > man''en\ ;
+当然 > touzen\ ;
+反噬 > hanzei\ ;
+原寸 > gensun\ ;
+同仁 > doujin\ ;
+同人 > dounin\ ;
+典麗 > tenrei\ ;
+向上 > koujou\ ;
+巣鶏 > sudori\ ;
+十本 > juppon\ ;
+廃艦 > haikan\ ;
+江山 > kouzan\ ;
+座薬 > zayaku\ ;
+萎縮 > ishuku\ ;
+重合 > juugou\ ;
+広言 > kougen\ ;
+廃船 > haisen\ ;
+廐肥 > kyuuhi\ ;
+同乗 > doujou\ ;
+応急 > oukyuu\ ;
+金印 > kin''in\ ;
+遊芸 > yuugei\ ;
+残痕 > zankon\ ;
+前著 > zencho\ ;
+菖蒲 > shoubu\ ;
+野原 > nohara\ ;
+決壊 > kekkai\ ;
+原子 > genshi\ ;
+毛氈 > mousen\ ;
+占拠 > senkyo\ ;
+同上 > doujou\ ;
+別製 > bessei\ ;
+弊社 > heisha\ ;
+比況 > hikyou\ ;
+透視 > toushi\ ;
+半数 > hansuu\ ;
+醜女 > shuujo\ ;
+効目 > kikime\ ;
+民政 > minsei\ ;
+鳴禽 > meikin\ ;
+民放 > minpou\ ;
+近郷 > kingou\ ;
+酒手 > sakate\ ;
+返還 > henkan\ ;
+弓矢 > yumiya\ ;
+前菜 > zensai\ ;
+反問 > hanmon\ ;
+処遇 > shoguu\ ;
+心技 > shingi\ ;
+近郊 > kinkou\ ;
+薄倖 > hakkou\ ;
+初見 > shoken\ ;
+欠航 > kekkou\ ;
+盗電 > touden\ ;
+巨鯨 > kyogei\ ;
+沃土 > yokudo\ ;
+巻首 > kanshu\ ;
+出足 > deashi\ ;
+残生 > zansei\ ;
+北欧 > hokuou\ ;
+盗難 > tounan\ ;
+加禄 > karoku\ ;
+号俸 > gouhou\ ;
+死相 > shisou\ ;
+危急 > kikyuu\ ;
+剛臆 > gouoku\ ;
+弾片 > danpen\ ;
+県道 > kendou\ ;
+即応 > sokuou\ ;
+武神 > bushin\ ;
+返送 > hensou\ ;
+復改 > fukkai\ ;
+金剛 > kongou\ ;
+幣貢 > heikou\ ;
+配所 > haisho\ ;
+卵形 > rankei\ ;
+金券 > kinken\ ;
+酔態 > suitai\ ;
+幻視 > genshi\ ;
+巨魁 > kyokai\ ;
+蕃地 > banchi\ ;
+十数 > juusuu\ ;
+汽圧 > kiatsu\ ;
+凡退 > bontai\ ;
+達者 > tassha\ ;
+従来 > juurai\ ;
+選管 > senkan\ ;
+分譲 > bunjou\ ;
+司会 > shikai\ ;
+御料 > goryou\ ;
+円高 > endaka\ ;
+近辺 > kinpen\ ;
+原始 > genshi\ ;
+口内 > kounai\ ;
+出費 > shuppi\ ;
+金冠 > kinkan\ ;
+印形 > ingyou\ ;
+司令 > shirei\ ;
+重刑 > juukei\ ;
+追訴 > tsuiso\ ;
+号令 > gourei\ ;
+加硫 > karyuu\ ;
+剛胆 > goutan\ ;
+金具 > kanagu\ ;
+収受 > shuuju\ ;
+配慮 > hairyo\ ;
+迷論 > meiron\ ;
+毎毎 > maimai\ ;
+追記 > tsuiki\ ;
+睡蓮 > suiren\ ;
+心意 > shin''i\ ;
+割線 > kassen\ ;
+切諌 > sekkan\ ;
+忘年 > bounen\ ;
+即座 > sokuza\ ;
+巻頭 > kantou\ ;
+効用 > kouyou\ ;
+劫盗 > goutou\ ;
+蒲柳 > horyuu\ ;
+恒例 > kourei\ ;
+史伝 > shiden\ ;
+忍従 > ninjuu\ ;
+酷寒 > kokkan\ ;
+市電 > shiden\ ;
+勇猛 > yuumou\ ;
+毬果 > kyuuka\ ;
+荷足 > niashi\ ;
+常道 > joudou\ ;
+分詞 > bunshi\ ;
+治乱 > chiran\ ;
+卵巣 > ransou\ ;
+死産 > shizan\ ;
+死生 > shisei\ ;
+博愛 > hakuai\ ;
+常連 > jouren\ ;
+冒頭 > boutou\ ;
+性向 > seikou\ ;
+帰郷 > kikyou\ ;
+水平 > suihei\ ;
+治世 > chisei\ ;
+引用 > in''you\ ;
+鮮麗 > senrei\ ;
+目釘 > mekugi\ ;
+反動 > handou\ ;
+前腕 > maeude\ ;
+史乗 > shijou\ ;
+分解 > bunkai\ ;
+参向 > sankou\ ;
+右上 > migiue\ ;
+遣米 > kenbei\ ;
+古俗 > kozoku\ ;
+後景 > koukei\ ;
+史上 > shijou\ ;
+厖大 > boudai\ ;
+退行 > taikou\ ;
+可也 > kanari\ ;
+平衡 > heikou\ ;
+座興 > zakyou\ ;
+正眼 > seigan\ ;
+平行 > heikou\ ;
+待望 > taibou\ ;
+磁壁 > jiheki\ ;
+差額 > sagaku\ ;
+残片 > zanpen\ ;
+句作 > kusaku\ ;
+後昆 > koukon\ ;
+正目 > masame\ ;
+矢玉 > yadama\ ;
+十指 > jusshi\ ;
+単性 > tansei\ ;
+原型 > genkei\ ;
+毛根 > moukon\ ;
+市門 > shimon\ ;
+蒸散 > jousan\ ;
+後方 > kouhou\ ;
+配当 > haitou\ ;
+加療 > karyou\ ;
+律旋 > rissen\ ;
+口伝 > kouden\ ;
+酒店 > shuten\ ;
+師道 > shidou\ ;
+底荷 > sokoni\ ;
+刊行 > kankou\ ;
+出訴 > shusso\ ;
+博徒 > bakuto\ ;
+廃線 > haisen\ ;
+砂漠 > sabaku\ ;
+急募 > kyuubo\ ;
+弱火 > yowabi\ ;
+前者 > zensha\ ;
+急務 > kyuumu\ ;
+巨頭 > kyotou\ ;
+葉物 > hamono\ ;
+分袂 > bunbei\ ;
+円頂 > enchou\ ;
+気息 > kisoku\ ;
+後攻 > koukou\ ;
+鳩目 > hatome\ ;
+重体 > juutai\ ;
+厳命 > genmei\ ;
+冒険 > bouken\ ;
+原因 > gen''in\ ;
+内項 > naikou\ ;
+前翅 > zenshi\ ;
+度胸 > dokyou\ ;
+看貫 > kankan\ ;
+卑怯 > hikyou\ ;
+博引 > hakuin\ ;
+機長 > kichou\ ;
+割符 > warifu\ ;
+気性 > kishou\ ;
+十戒 > jikkai\ ;
+友党 > yuutou\ ;
+受信 > jushin\ ;
+目途 > mokuto\ ;
+農道 > noudou\ ;
+石灰 > sekkai\ ;
+民情 > minjou\ ;
+厚地 > atsuji\ ;
+重任 > juunin\ ;
+迎賓 > geihin\ ;
+厳君 > genkun\ ;
+前置 > zenchi\ ;
+重代 > juudai\ ;
+列藩 > reppan\ ;
+鳥目 > torime\ ;
+単弁 > tanben\ ;
+段段 > dandan\ ;
+水屋 > mizuya\ ;
+往昔 > ouseki\ ;
+金主 > kinshu\ ;
+破格 > hakaku\ ;
+千慮 > senryo\ ;
+去勢 > kyosei\ ;
+口上 > koujou\ ;
+当歳 > tousai\ ;
+皮革 > hikaku\ ;
+内面 > naimen\ ;
+巷間 > koukan\ ;
+冷酒 > reishu\ ;
+卵子 > ranshi\ ;
+怪光 > kaikou\ ;
+兼題 > kendai\ ;
+檀那 > dan''na\ ;
+野中 > nonaka\ ;
+造船 > zousen\ ;
+参内 > sandai\ ;
+水害 > suigai\ ;
+徹底 > tettei\ ;
+気弱 > kiyowa\ ;
+叛乱 > hanran\ ;
+御慶 > gyokei\ ;
+県警 > kenkei\ ;
+帝道 > teidou\ ;
+別荘 > bessou\ ;
+碁席 > goseki\ ;
+初葉 > shoyou\ ;
+彼方 > kanata\ ;
+盟邦 > meihou\ ;
+快報 > kaihou\ ;
+厭厭 > iyaiya\ ;
+水子 > mizugo\ ;
+再開 > saikai\ ;
+遠称 > enshou\ ;
+北方 > hoppou\ ;
+内陣 > naijin\ ;
+半径 > hankei\ ;
+葛湯 > kuzuyu\ ;
+鮮魚 > sengyo\ ;
+冷遇 > reiguu\ ;
+半影 > han''ei\ ;
+反例 > hanrei\ ;
+巣雛 > suhina\ ;
+微弱 > bijaku\ ;
+郷村 > gouson\ ;
+硬性 > kousei\ ;
+酒屋 > sakaya\ ;
+公館 > koukan\ ;
+前編 > zenpen\ ;
+退蔵 > taizou\ ;
+凝議 > gyougi\ ;
+前線 > zensen\ ;
+歯状 > shijou\ ;
+川面 > kawamo\ ;
+原品 > genpin\ ;
+引照 > inshou\ ;
+占居 > senkyo\ ;
+全館 > zenkan\ ;
+厳刑 > genkei\ ;
+近詠 > kin''ei\ ;
+蒙昧 > moumai\ ;
+残滓 > zanshi\ ;
+沙丘 > sakyuu\ ;
+死点 > shiten\ ;
+相貌 > soubou\ ;
+送葬 > sousou\ ;
+白魔 > hakuma\ ;
+卜居 > bokkyo\ ;
+碍子 > gaishi\ ;
+毎晩 > maiban\ ;
+厳冬 > gentou\ ;
+死灰 > shikai\ ;
+友人 > yuujin\ ;
+益金 > ekikin\ ;
+労災 > rousai\ ;
+反乱 > hanran\ ;
+南岸 > nangan\ ;
+着荷 > chakka\ ;
+友交 > yuukou\ ;
+葦毛 > ashige\ ;
+次第 > shidai\ ;
+厚味 > atsumi\ ;
+兵難 > heinan\ ;
+即夜 > sokuya\ ;
+形木 > katagi\ ;
+師資 > shishi\ ;
+南山 > nanzan\ ;
+志士 > shishi\ ;
+看視 > kanshi\ ;
+近視 > kinshi\ ;
+巌頭 > gantou\ ;
+茶道 > chadou\ ;
+次章 > jishou\ ;
+具陳 > guchin\ ;
+怪人 > kaijin\ ;
+登高 > toukou\ ;
+盤踞 > bankyo\ ;
+兵隊 > heitai\ ;
+連署 > rensho\ ;
+正犯 > seihan\ ;
+単射 > tansha\ ;
+参会 > sankai\ ;
+劇画 > gekiga\ ;
+全音 > zen''on\ ;
+卵塔 > rantou\ ;
+党首 > toushu\ ;
+過称 > kashou\ ;
+性交 > seikou\ ;
+十干 > jikkan\ ;
+英領 > eiryou\ ;
+卑屬 > hizoku\ ;
+巨鐘 > oogane\ ;
+横領 > ouryou\ ;
+卑属 > hizoku\ ;
+石油 > sekiyu\ ;
+廻状 > kaijou\ ;
+前篇 > zenpen\ ;
+達磨 > daruma\ ;
+原動 > gendou\ ;
+南宋 > nansou\ ;
+公電 > kouden\ ;
+弱気 > yowaki\ ;
+全面 > zenmen\ ;
+御幸 > miyuki\ ;
+徘徊 > haikai\ ;
+郵政 > yuusei\ ;
+半島 > hantou\ ;
+卑小 > hishou\ ;
+白馬 > hakuba\ ;
+相談 > soudan\ ;
+欝積 > usseki\ ;
+征戦 > seisen\ ;
+割目 > wareme\ ;
+菌糸 > kinshi\ ;
+全霊 > zenrei\ ;
+後患 > koukan\ ;
+市道 > shidou\ ;
+連繋 > renkei\ ;
+当板 > ateita\ ;
+参与 > san''yo\ ;
+後悔 > koukai\ ;
+参上 > sanjou\ ;
+沈下 > chinka\ ;
+真薯 > shinjo\ ;
+函蓋 > kangai\ ;
+原初 > gensho\ ;
+前端 > zentan\ ;
+快哉 > kaisai\ ;
+気学 > kigaku\ ;
+水域 > suiiki\ ;
+微少 > bishou\ ;
+微小 > bishou\ ;
+全隊 > zentai\ ;
+送致 > souchi\ ;
+連綿 > renmen\ ;
+創痕 > soukon\ ;
+欲目 > yokume\ ;
+得度 > tokudo\ ;
+従弟 > juutei\ ;
+部族 > buzoku\ ;
+蕃人 > banjin\ ;
+菜種 > natane\ ;
+直訴 > jikiso\ ;
+原典 > genten\ ;
+公開 > koukai\ ;
+鱗茎 > rinkei\ ;
+入院 > nyuuin\ ;
+短毛 > tanmou\ ;
+幻肢 > genshi\ ;
+荒誕 > koutan\ ;
+初老 > shorou\ ;
+酷吏 > kokuri\ ;
+連累 > renrui\ ;
+死海 > shikai\ ;
+蕃主 > banshu\ ;
+師訓 > shikun\ ;
+権限 > kengen\ ;
+勘検 > kanken\ ;
+遺物 > ibutsu\ ;
+准許 > junkyo\ ;
+酒場 > sakaba\ ;
+全開 > zenkai\ ;
+殉死 > junshi\ ;
+原像 > genzou\ ;
+延焼 > enshou\ ;
+目許 > memoto\ ;
+水嚢 > suinou\ ;
+当方 > touhou\ ;
+出荷 > shukka\ ;
+真菰 > makomo\ ;
+元首 > genshu\ ;
+南天 > nanten\ ;
+目角 > mekado\ ;
+再選 > saisen\ ;
+廃盤 > haiban\ ;
+硫安 > ryuuan\ ;
+機軸 > kijiku\ ;
+勢望 > seibou\ ;
+権門 > kenmon\ ;
+銘々 > meimei\ ;
+勘案 > kan''an\ ;
+後年 > kounen\ ;
+医局 > ikyoku\ ;
+再遊 > saiyuu\ ;
+砲手 > houshu\ ;
+白露 > hakuro\ ;
+花鳥 > kachou\ ;
+追肥 > tsuihi\ ;
+勘校 > kankou\ ;
+念写 > nensha\ ;
+知歯 > chishi\ ;
+帆走 > hansou\ ;
+往復 > oufuku\ ;
+石榴 > zakuro\ ;
+白雲 > hakuun\ ;
+再送 > saisou\ ;
+光頭 > koutou\ ;
+律師 > risshi\ ;
+愈々 > iyoiyo\ ;
+兵鋒 > heihou\ ;
+出花 > debana\ ;
+歩測 > hosoku\ ;
+先頭 > sentou\ ;
+広縁 > hiroen\ ;
+浪々 > rourou\ ;
+力演 > rikien\ ;
+邪欲 > jayoku\ ;
+心土 > shindo\ ;
+微妙 > bimyou\ ;
+径庭 > keitei\ ;
+別紙 > besshi\ ;
+応召 > oushou\ ;
+出船 > defune\ ;
+酷刑 > kokkei\ ;
+快刀 > kaitou\ ;
+石棺 > sekkan\ ;
+先鞭 > senben\ ;
+巧遅 > kouchi\ ;
+座礁 > zashou\ ;
+選炭 > sentan\ ;
+弁済 > bensai\ ;
+半天 > hanten\ ;
+志向 > shikou\ ;
+監視 > kanshi\ ;
+出臍 > debeso\ ;
+彷徨 > houkou\ ;
+半夜 > han''ya\ ;
+制空 > seikuu\ ;
+原人 > genjin\ ;
+再転 > saiten\ ;
+形成 > keisei\ ;
+市販 > shihan\ ;
+州都 > shuuto\ ;
+光電 > kouden\ ;
+硝安 > shouan\ ;
+初経 > shokei\ ;
+半壊 > hankai\ ;
+弔歌 > chouka\ ;
+近著 > kincho\ ;
+落款 > rakkan\ ;
+切羽 > kiriha\ ;
+硝子 > garasu\ ;
+幹線 > kansen\ ;
+都心 > toshin\ ;
+確保 > kakuho\ ;
+歳歳 > saisai\ ;
+充電 > juuden\ ;
+池亭 > chitei\ ;
+内輪 > uchiwa\ ;
+運用 > un''you\ ;
+盛観 > seikan\ ;
+千夜 > sen''ya\ ;
+序章 > joshou\ ;
+制禦 > seigyo\ ;
+分署 > bunsho\ ;
+形態 > keitai\ ;
+硬変 > kouhen\ ;
+先陣 > senjin\ ;
+気圧 > kiatsu\ ;
+公金 > koukin\ ;
+鳥渡 > chotto\ ;
+遅番 > osoban\ ;
+力泳 > rikiei\ ;
+正油 > shouyu\ ;
+印匣 > inbako\ ;
+即効 > sokkou\ ;
+荷船 > nibune\ ;
+広範 > kouhan\ ;
+石木 > ishiki\ ;
+江上 > koujou\ ;
+即功 > sokkou\ ;
+碩儒 > sekiju\ ;
+著書 > chosho\ ;
+川辺 > kawabe\ ;
+鳩派 > hatoha\ ;
+母御 > hahago\ ;
+鄭声 > teisei\ ;
+砲弾 > houdan\ ;
+当所 > tousho\ ;
+盛装 > seisou\ ;
+芳香 > houkou\ ;
+快便 > kaiben\ ;
+水勢 > suisei\ ;
+都庁 > tochou\ ;
+六部 > rokubu\ ;
+止水 > shisui\ ;
+鮮鋭 > sen''ei\ ;
+酒名 > shumei\ ;
+盛衰 > seisui\ ;
+民団 > mindan\ ;
+芸風 > geifuu\ ;
+弦材 > genzai\ ;
+初等 > shotou\ ;
+公邸 > koutei\ ;
+印刻 > inkoku\ ;
+割烹 > kappou\ ;
+蓮台 > rendai\ ;
+正殿 > seiden\ ;
+冠詞 > kanshi\ ;
+再販 > saihan\ ;
+切線 > sessen\ ;
+剣状 > kenjou\ ;
+卵円 > ran''en\ ;
+酷似 > kokuji\ ;
+別種 > besshu\ ;
+睥睨 > heigei\ ;
+葉柄 > youhei\ ;
+著明 > chomei\ ;
+従姉 > juushi\ ;
+殺意 > satsui\ ;
+辞表 > jihyou\ ;
+公選 > kousen\ ;
+従妹 > juumai\ ;
+利福 > rifuku\ ;
+占取 > senshu\ ;
+歯槽 > shisou\ ;
+真義 > shingi\ ;
+毎年 > mainen\ ;
+残暑 > zansho\ ;
+公道 > koudou\ ;
+正正 > seisei\ ;
+平米 > heibei\ ;
+配合 > haigou\ ;
+水分 > suibun\ ;
+真美 > shinbi\ ;
+幄舎 > akusha\ ;
+魚鱗 > gyorin\ ;
+矢柄 > yagara\ ;
+入部 > nyuubu\ ;
+石斧 > sekifu\ ;
+冗談 > joudan\ ;
+水冷 > suirei\ ;
+兵車 > heisha\ ;
+矮星 > waisei\ ;
+蒼天 > souten\ ;
+全道 > zendou\ ;
+幼童 > youdou\ ;
+轟轟 > gougou\ ;
+睡眠 > suimin\ ;
+巨資 > kyoshi\ ;
+葉書 > hagaki\ ;
+公辺 > kouhen\ ;
+包帯 > houtai\ ;
+厄介 > yakkai\ ;
+民営 > min''ei\ ;
+勇断 > yuudan\ ;
+動揺 > douyou\ ;
+殿御 > tonogo\ ;
+水兵 > suihei\ ;
+十回 > jukkai\ ;
+十四 > juuyon\ ;
+巨財 > kyozai\ ;
+協和 > kyouwa\ ;
+幽窓 > yuusou\ ;
+川路 > kawaji\ ;
+巷談 > koudan\ ;
+目蓋 > mabuta\ ;
+勇敢 > yuukan\ ;
+巨象 > kyozou\ ;
+権道 > kendou\ ;
+冗言 > jougen\ ;
+短文 > tanbun\ ;
+欠片 > kakera\ ;
+連盟 > renmei\ ;
+幼稚 > youchi\ ;
+後天 > kouten\ ;
+具足 > gusoku\ ;
+鱗粉 > rinpun\ ;
+化学 > kagaku\ ;
+遵法 > junpou\ ;
+白金 > hakkin\ ;
+公転 > kouten\ ;
+適温 > tekion\ ;
+南半 > nanhan\ ;
+逸球 > ikkyuu\ ;
+配剤 > haizai\ ;
+皇道 > koudou\ ;
+歯根 > shikon\ ;
+卒去 > sokkyo\ ;
+再誕 > saitan\ ;
+先鋭 > sen''ei\ ;
+選民 > senmin\ ;
+市街 > shigai\ ;
+嵩高 > suukou\ ;
+先鋒 > senpou\ ;
+真綿 > mawata\ ;
+欣然 > kinzen\ ;
+後塵 > koujin\ ;
+全軍 > zengun\ ;
+送稿 > soukou\ ;
+冷蔵 > reizou\ ;
+配分 > haibun\ ;
+復員 > fukuin\ ;
+出納 > suitou\ ;
+処置 > shochi\ ;
+徘回 > haikai\ ;
+迷答 > meitou\ ;
+発酵 > hakkou\ ;
+再訪 > saihou\ ;
+後報 > kouhou\ ;
+草葉 > kusaba\ ;
+彩層 > saisou\ ;
+年税 > nenzei\ ;
+再訂 > saitei\ ;
+苛酷 > kakoku\ ;
+強打 > kyouda\ ;
+邪教 > jakyou\ ;
+矢文 > yabumi\ ;
+内談 > naidan\ ;
+氏名 > shimei\ ;
+具象 > gushou\ ;
+真紅 > shinku\ ;
+卓効 > takkou\ ;
+艦齢 > kanrei\ ;
+勤怠 > kintai\ ;
+即今 > sokkon\ ;
+連番 > renban\ ;
+徴募 > choubo\ ;
+邦文 > houbun\ ;
+当店 > touten\ ;
+欠点 > ketten\ ;
+弊村 > heison\ ;
+当年 > tounen\ ;
+年祭 > nensai\ ;
+彼女 > kanojo\ ;
+死斑 > shihan\ ;
+荷縄 > ninawa\ ;
+死文 > shibun\ ;
+荏苒 > jinzen\ ;
+歳晩 > saiban\ ;
+包容 > houyou\ ;
+農芸 > nougei\ ;
+年礼 > nenrei\ ;
+弔旗 > chouki\ ;
+退社 > taisha\ ;
+半半 > hanhan\ ;
+別盃 > beppai\ ;
+過激 > kageki\ ;
+内訓 > naikun\ ;
+皇軍 > kougun\ ;
+内訌 > naikou\ ;
+水仙 > suisen\ ;
+草草 > sousou\ ;
+却下 > kyakka\ ;
+動態 > doutai\ ;
+再製 > saisei\ ;
+歳星 > saisei\ ;
+強慢 > gouman\ ;
+巧言 > kougen\ ;
+希薄 > kihaku\ ;
+単元 > tangen\ ;
+遠浅 > tooasa\ ;
+轆轤 > rokuro\ ;
+毒婦 > dokufu\ ;
+歳旦 > saitan\ ;
+南光 > nankou\ ;
+十台 > juudai\ ;
+配偶 > haiguu\ ;
+内観 > naikan\ ;
+発送 > hassou\ ;
+御告 > otsuge\ ;
+内覧 > nairan\ ;
+遠洋 > en''you\ ;
+弾性 > dansei\ ;
+内見 > naiken\ ;
+形容 > keiyou\ ;
+部属 > buzoku\ ;
+正東 > seitou\ ;
+強情 > goujou\ ;
+千千 > chidji\ ;
+近縁 > kin''en\ ;
+真箇 > shinko\ ;
+魚類 > gyorui\ ;
+勇戦 > yuusen\ ;
+鶏口 > keikou\ ;
+常置 > jouchi\ ;
+卒先 > sossen\ ;
+出端 > debana\ ;
+遠沈 > enchin\ ;
+正本 > seihon\ ;
+正木 > masaki\ ;
+全貌 > zenbou\ ;
+部将 > bushou\ ;
+先遣 > senken\ ;
+硫化 > ryuuka\ ;
+遡求 > sokyuu\ ;
+眼瞼 > ganken\ ;
+半分 > hanpun\ ;
+分社 > bunsha\ ;
+正書 > seisho\ ;
+入費 > nyuuhi\ ;
+短所 > tansho\ ;
+午刻 > gokoku\ ;
+登載 > tousai\ ;
+弊方 > heihou\ ;
+占住 > senjuu\ ;
+巡覧 > junran\ ;
+気儘 > kimama\ ;
+忌中 > kichuu\ ;
+内装 > naisou\ ;
+勧工 > kankou\ ;
+役場 > yakuba\ ;
+魔風 > makaze\ ;
+出窓 > demado\ ;
+後嗣 > koushi\ ;
+目脂 > meyani\ ;
+巡視 > junshi\ ;
+助教 > jokyou\ ;
+酒仙 > shusen\ ;
+鶏卵 > keiran\ ;
+真竹 > madake\ ;
+看経 > kankin\ ;
+建材 > kenzai\ ;
+発車 > hassha\ ;
+民兵 > minpei\ ;
+復刊 > fukkan\ ;
+半円 > han''en\ ;
+勘当 > kandou\ ;
+弊政 > heisei\ ;
+匈奴 > kyoudo\ ;
+酒乱 > shuran\ ;
+盲者 > mousha\ ;
+廃液 > haieki\ ;
+矇昧 > moumai\ ;
+左表 > sahyou\ ;
+遅滞 > chitai\ ;
+刀礼 > tourei\ ;
+弁明 > benmei\ ;
+心事 > shinji\ ;
+勘弁 > kanben\ ;
+欲気 > yokuke\ ;
+短慮 > tanryo\ ;
+千分 > senbun\ ;
+劣敗 > reppai\ ;
+毎夕 > maiyuu\ ;
+砲声 > housei\ ;
+光輪 > kourin\ ;
+卒倒 > sottou\ ;
+単体 > tantai\ ;
+百足 > mukade\ ;
+欧洲 > oushuu\ ;
+勅意 > chokui\ ;
+公論 > kouron\ ;
+十分 > juppun\ ;
+魚雷 > gyorai\ ;
+先輩 > senpai\ ;
+平目 > hirame\ ;
+郷士 > goushi\ ;
+此方 > konata\ ;
+剣法 > kenpou\ ;
+微傷 > bishou\ ;
+茶茶 > chacha\ ;
+正方 > seihou\ ;
+武教 > bukyou\ ;
+剪毛 > senmou\ ;
+辛苦 > shinku\ ;
+配乗 > haijou\ ;
+市葬 > shisou\ ;
+矜持 > kyouji\ ;
+農耕 > noukou\ ;
+卑俗 > hizoku\ ;
+千円 > sen''en\ ;
+初生 > shosei\ ;
+公認 > kounin\ ;
+巡行 > junkou\ ;
+区劃 > kukaku\ ;
+正文 > seibun\ ;
+公試 > koushi\ ;
+気侭 > kimama\ ;
+歌格 > kakaku\ ;
+幽界 > yuukai\ ;
+正数 > seisuu\ ;
+後味 > atoaji\ ;
+砲塔 > houtou\ ;
+硝化 > shouka\ ;
+兼行 > kenkou\ ;
+強度 > kyoudo\ ;
+彫塑 > chouso\ ;
+十全 > juuzen\ ;
+公許 > koukyo\ ;
+発走 > hassou\ ;
+南京 > nankin\ ;
+知慮 > chiryo\ ;
+死所 > shisho\ ;
+幼生 > yousei\ ;
+道民 > doumin\ ;
+半値 > han''ne\ ;
+公言 > kougen\ ;
+悶々 > monmon\ ;
+返答 > hentou\ ;
+茶色 > chairo\ ;
+権謀 > kenbou\ ;
+鶏冠 > tosaka\ ;
+百貨 > hyakka\ ;
+廻文 > kaibun\ ;
+勁悍 > keikan\ ;
+元軍 > gengun\ ;
+十億 > juuoku\ ;
+引手 > hikite\ ;
+形声 > keisei\ ;
+魔障 > mashou\ ;
+切目 > kireme\ ;
+引戸 > hikido\ ;
+軟風 > nanpuu\ ;
+幸甚 > koujin\ ;
+待命 > taimei\ ;
+眼界 > gankai\ ;
+茶臼 > chausu\ ;
+選書 > sensho\ ;
+英訳 > eiyaku\ ;
+転音 > ten''on\ ;
+残影 > zan''ei\ ;
+後半 > kouhan\ ;
+芳醇 > houjun\ ;
+年産 > nensan\ ;
+年生 > nensei\ ;
+千倍 > senbai\ ;
+廃残 > haizan\ ;
+良馬 > ryouba\ ;
+従前 > juuzen\ ;
+平生 > heizei\ ;
+郷土 > kyoudo\ ;
+遊民 > yuumin\ ;
+葛布 > kuzufu\ ;
+廃止 > haishi\ ;
+輪転 > rinten\ ;
+帆船 > hobune\ ;
+十倍 > juubai\ ;
+知性 > chisei\ ;
+剛毛 > goumou\ ;
+毎回 > maikai\ ;
+母国 > bokoku\ ;
+民人 > minjin\ ;
+真砂 > masago\ ;
+助手 > sukete\ ;
+止揚 > shiyou\ ;
+幽玄 > yuugen\ ;
+芸道 > geidou\ ;
+先賢 > senken\ ;
+加振 > kashin\ ;
+盛者 > jousha\ ;
+役員 > yakuin\ ;
+微乳 > binyuu\ ;
+県税 > kenzei\ ;
+帳簿 > choubo\ ;
+邪心 > jashin\ ;
+優遇 > yuuguu\ ;
+石工 > sekkou\ ;
+内蔵 > naizou\ ;
+船齢 > senrei\ ;
+民主 > minshu\ ;
+初犯 > shohan\ ;
+後刻 > gokoku\ ;
+殿堂 > dendou\ ;
+復交 > fukkou\ ;
+庶民 > shomin\ ;
+瞬時 > shunji\ ;
+優退 > yuutai\ ;
+凹目 > kubome\ ;
+従兄 > juukei\ ;
+劣才 > ressai\ ;
+千仭 > senjin\ ;
+分界 > bunkai\ ;
+千仞 > senjin\ ;
+輪距 > rinkyo\ ;
+艦首 > kanshu\ ;
+返礼 > henrei\ ;
+刀痕 > toukon\ ;
+初版 > shohan\ ;
+鳴戸 > naruto\ ;
+十代 > juudai\ ;
+勘定 > kanjou\ ;
+内蒙 > naimou\ ;
+目糞 > mekuso\ ;
+座浴 > zayoku\ ;
+標語 > hyougo\ ;
+白話 > hakuwa\ ;
+判然 > hanzen\ ;
+砂子 > sunago\ ;
+弁才 > bensai\ ;
+悠々 > yuuyuu\ ;
+権衡 > kenkou\ ;
+労役 > roueki\ ;
+茗荷 > myouga\ ;
+目籠 > mekago\ ;
+着物 > kimono\ ;
+車風 > shafuu\ ;
+標記 > hyouki\ ;
+鬚髯 > shuzen\ ;
+前段 > zendan\ ;
+遮断 > shadan\ ;
+茎葉 > keiyou\ ;
+適時 > tekiji\ ;
+師範 > shihan\ ;
+草紙 > soushi\ ;
+落後 > rakugo\ ;
+盲管 > moukan\ ;
+十三 > juusan\ ;
+十万 > juuman\ ;
+毒味 > dokumi\ ;
+葉巻 > hamaki\ ;
+市肆 > shishi\ ;
+張子 > hariko\ ;
+石屋 > ishiya\ ;
+御主 > onushi\ ;
+都合 > tsugou\ ;
+幻燈 > gentou\ ;
+御中 > onchuu\ ;
+花輪 > hanawa\ ;
+弁慶 > benkei\ ;
+免許 > menkyo\ ;
+干犯 > kanpan\ ;
+剪枝 > senshi\ ;
+花軸 > kajiku\ ;
+幽然 > yuuzen\ ;
+凹田 > kubota\ ;
+苦衷 > kuchuu\ ;
+発見 > hakken\ ;
+兎角 > tokaku\ ;
+当地 > touchi\ ;
+干物 > himono\ ;
+平版 > heihan\ ;
+苦行 > kugyou\ ;
+鯨脂 > geishi\ ;
+再興 > saikou\ ;
+落度 > ochido\ ;
+砲台 > houdai\ ;
+再臨 > sairin\ ;
+砲口 > houkou\ ;
+真田 > sanada\ ;
+助役 > joyaku\ ;
+毎号 > maigou\ ;
+劣性 > ressei\ ;
+目笊 > mezaru\ ;
+歯形 > hagata\ ;
+弾奏 > dansou\ ;
+包含 > hougan\ ;
+廃校 > haikou\ ;
+後便 > koubin\ ;
+選挙 > senkyo\ ;
+匍匐 > hofuku\ ;
+郊外 > kougai\ ;
+強姦 > goukan\ ;
+白衣 > byakue\ ;
+剖検 > bouken\ ;
+巨艦 > kyokan\ ;
+進歩 > shinpo\ ;
+凡眼 > bongan\ ;
+僧門 > soumon\ ;
+返盃 > henpai\ ;
+工芸 > kougei\ ;
+軍隊 > guntai\ ;
+近県 > kinken\ ;
+落差 > rakusa\ ;
+幻灯 > gentou\ ;
+巨船 > kyosen\ ;
+鱗状 > rinjou\ ;
+内航 > naikou\ ;
+先見 > senken\ ;
+軍陣 > gunjin\ ;
+輪講 > rinkou\ ;
+残存 > zanzon\ ;
+着火 > chakka\ ;
+平然 > heizen\ ;
+切片 > seppen\ ;
+発行 > hakkou\ ;
+北光 > hokkou\ ;
+武徳 > butoku\ ;
+眉目 > bimoku\ ;
+眈眈 > tantan\ ;
+眼点 > ganten\ ;
+動天 > douten\ ;
+功徳 > kudoku\ ;
+後任 > kounin\ ;
+廃材 > haizai\ ;
+内臓 > naizou\ ;
+後件 > kouken\ ;
+艦隊 > kantai\ ;
+苗裔 > byouei\ ;
+加役 > kayaku\ ;
+選手 > senshu\ ;
+後代 > koudai\ ;
+鱗片 > rinpen\ ;
+弊店 > heiten\ ;
+真理 > shinri\ ;
+刃物 > hamono\ ;
+儕輩 > saihai\ ;
+皮膜 > himaku\ ;
+後人 > koujin\ ;
+役儀 > yakugi\ ;
+真珠 > shinju\ ;
+否々 > iyaiya\ ;
+剪断 > sendan\ ;
+公葬 > kousou\ ;
+砂場 > sunaba\ ;
+弁当 > bentou\ ;
+内腔 > naikou\ ;
+逓減 > teigen\ ;
+巡航 > junkou\ ;
+往信 > oushin\ ;
+軍門 > gunmon\ ;
+座標 > zahyou\ ;
+正当 > seitou\ ;
+荒神 > koujin\ ;
+魚道 > gyodou\ ;
+死屍 > shishi\ ;
+艇首 > teishu\ ;
+邪宗 > jashuu\ ;
+正弦 > seigen\ ;
+草稿 > soukou\ ;
+勇姿 > yuushi\ ;
+再考 > saikou\ ;
+分煙 > bun''en\ ;
+欠本 > keppon\ ;
+後世 > kousei\ ;
+先行 > senkou\ ;
+軟鋼 > nankou\ ;
+毎分 > maifun\ ;
+制止 > seishi\ ;
+郵券 > yuuken\ ;
+荒磯 > araiso\ ;
+軽輩 > keihai\ ;
+華族 > kazoku\ ;
+形勢 > keisei\ ;
+構造 > kouzou\ ;
+著大 > chodai\ ;
+出物 > demono\ ;
+茅舎 > bousha\ ;
+座業 > zagyou\ ;
+勝因 > shouin\ ;
+白虹 > hakkou\ ;
+皮肉 > hiniku\ ;
+前栽 > senzai\ ;
+高齢 > kourei\ ;
+砲兵 > houhei\ ;
+内聞 > naibun\ ;
+分点 > bunten\ ;
+死守 > shishu\ ;
+底止 > teishi\ ;
+兵船 > heisen\ ;
+別法 > beppou\ ;
+凸版 > toppan\ ;
+八荒 > hakkou\ ;
+通気 > tsuuki\ ;
+加州 > kashuu\ ;
+正帽 > seibou\ ;
+兵舎 > heisha\ ;
+正常 > seijou\ ;
+廻廊 > kairou\ ;
+速歩 > sokuho\ ;
+干潟 > higata\ ;
+軽躁 > keisou\ ;
+遥拝 > youhai\ ;
+遊星 > yuusei\ ;
+芸談 > geidan\ ;
+過料 > karyou\ ;
+勇壮 > yuusou\ ;
+勇士 > yuushi\ ;
+監禁 > kankin\ ;
+巧者 > kousha\ ;
+優諚 > yuujou\ ;
+鳩座 > hatoza\ ;
+短大 > tandai\ ;
+左翼 > sayoku\ ;
+茶筅 > chasen\ ;
+前板 > maeita\ ;
+僻遠 > hekien\ ;
+高麗 > kourai\ ;
+身頃 > migoro\ ;
+石塊 > sekkai\ ;
+前条 > zenjou\ ;
+入荷 > nyuuka\ ;
+崇高 > suukou\ ;
+割拠 > kakkyo\ ;
+強固 > kyouko\ ;
+歓待 > kantai\ ;
+平準 > heijun\ ;
+船首 > senshu\ ;
+弟妹 > teimai\ ;
+痛飲 > tsuuin\ ;
+劾奏 > gaisou\ ;
+干満 > kanman\ ;
+前書 > zensho\ ;
+延年 > en''nen\ ;
+病魔 > byouma\ ;
+広汎 > kouhan\ ;
+利欲 > riyoku\ ;
+郭公 > kakkou\ ;
+公舎 > kousha\ ;
+庭木 > niwaki\ ;
+楽音 > gakuon\ ;
+残塁 > zanrui\ ;
+入苑 > nyuuen\ ;
+若葉 > wakaba\ ;
+准看 > junkan\ ;
+再編 > saihen\ ;
+凍瘡 > tousou\ ;
+常用 > jouyou\ ;
+勲功 > kunkou\ ;
+弊害 > heigai\ ;
+此岸 > shigan\ ;
+全船 > zensen\ ;
+平淡 > heitan\ ;
+全般 > zenpan\ ;
+前景 > zenkei\ ;
+遠戚 > enseki\ ;
+殺到 > sattou\ ;
+出火 > shukka\ ;
+目盛 > memori\ ;
+若菜 > wakana\ ;
+帆立 > hotate\ ;
+郡制 > gunsei\ ;
+郵便 > yuubin\ ;
+転送 > tensou\ ;
+遷延 > sen''en\ ;
+武将 > bushou\ ;
+目白 > mejiro\ ;
+庶政 > shosei\ ;
+盪盪 > toutou\ ;
+初段 > shodan\ ;
+当初 > tousho\ ;
+船頭 > sendou\ ;
+当分 > toubun\ ;
+週期 > shuuki\ ;
+郎君 > roukun\ ;
+弘大 > koudai\ ;
+近状 > kinjou\ ;
+巨編 > kyohen\ ;
+残在 > zanzon\ ;
+花見 > hanami\ ;
+毀傷 > kishou\ ;
+内線 > naisen\ ;
+巧緻 > kouchi\ ;
+欠損 > kesson\ ;
+内緒 > naisho\ ;
+遷幸 > senkou\ ;
+刑法 > keihou\ ;
+鳴子 > naruko\ ;
+前文 > zenbun\ ;
+舷頭 > gentou\ ;
+武学 > bugaku\ ;
+遣悶 > kenmon\ ;
+出潮 > deshio\ ;
+席画 > sekiga\ ;
+逆毛 > sakage\ ;
+適応 > tekiou\ ;
+魚貝 > gyobai\ ;
+若芽 > wakame\ ;
+転載 > tensai\ ;
+冷眼 > reigan\ ;
+勤勉 > kinben\ ;
+励声 > reisei\ ;
+櫛比 > shippi\ ;
+送水 > sousui\ ;
+勤労 > kinrou\ ;
+市税 > shizei\ ;
+砲丸 > hougan\ ;
+母乳 > bonyuu\ ;
+転転 > tenten\ ;
+達成 > tassei\ ;
+内紛 > naifun\ ;
+勿体 > mottai\ ;
+勘合 > kangou\ ;
+茶碗 > chawan\ ;
+軍配 > gunbai\ ;
+平水 > heisui\ ;
+弘報 > kouhou\ ;
+鳥屋 > toriya\ ;
+款待 > kantai\ ;
+平民 > heimin\ ;
+平氏 > heishi\ ;
+百花 > hyakka\ ;
+連枝 > renshi\ ;
+母上 > hahaue\ ;
+動向 > doukou\ ;
+疾駆 > shikku\ ;
+函渠 > kankyo\ ;
+農産 > nousan\ ;
+刑死 > keishi\ ;
+楼門 > roumon\ ;
+公署 > kousho\ ;
+瞑想 > meisou\ ;
+年歯 > nenshi\ ;
+造林 > zourin\ ;
+船隊 > sentai\ ;
+遠心 > enshin\ ;
+苛苛 > iraira\ ;
+弱味 > yowami\ ;
+適度 > tekido\ ;
+削摩 > sakuma\ ;
+輪蔵 > rinzou\ ;
+弾劾 > dangai\ ;
+達意 > tatsui\ ;
+底本 > teihon\ ;
+到来 > tourai\ ;
+発艦 > hakkan\ ;
+刎死 > funshi\ ;
+軍道 > gundou\ ;
+創建 > souken\ ;
+前提 > zentei\ ;
+死地 > shichi\ ;
+冬着 > fuyugi\ ;
+造本 > zouhon\ ;
+看点 > kanten\ ;
+欣懐 > kinkai\ ;
+薄々 > usuusu\ ;
+前掲 > zenkei\ ;
+冬眠 > toumin\ ;
+発航 > hakkou\ ;
+勝利 > shouri\ ;
+巨篇 > kyohen\ ;
+登臨 > tourin\ ;
+車道 > shadou\ ;
+強化 > kyouka\ ;
+正妻 > seisai\ ;
+辛目 > karame\ ;
+動勢 > dousei\ ;
+痴鈍 > chidon\ ;
+著名 > chomei\ ;
+残品 > zanpin\ ;
+庸才 > yousai\ ;
+動労 > dourou\ ;
+軒輊 > kenchi\ ;
+光芒 > koubou\ ;
+帯状 > obijou\ ;
+苦肉 > kuniku\ ;
+鳳声 > housei\ ;
+連星 > rensei\ ;
+皇考 > koukou\ ;
+目玉 > medama\ ;
+高騰 > koutou\ ;
+茶盆 > chabon\ ;
+郎党 > roudou\ ;
+布石 > fuseki\ ;
+臥龍 > garyou\ ;
+弁天 > benten\ ;
+切歯 > sesshi\ ;
+軽視 > keishi\ ;
+短命 > tanmei\ ;
+巣箱 > subako\ ;
+殿上 > tenjou\ ;
+舷門 > genmon\ ;
+選定 > sentei\ ;
+勇名 > yuumei\ ;
+正大 > seidai\ ;
+髑髏 > dokuro\ ;
+利札 > rifuda\ ;
+遷宮 > senguu\ ;
+転貸 > tentai\ ;
+幽棲 > yuusei\ ;
+歯垢 > shikou\ ;
+弁士 > benshi\ ;
+道念 > dounen\ ;
+瞳孔 > doukou\ ;
+瞳子 > doushi\ ;
+歯型 > hagata\ ;
+当代 > toudai\ ;
+床机 > shougi\ ;
+別杯 > beppai\ ;
+先般 > senpan\ ;
+当今 > toukon\ ;
+勤倹 > kinken\ ;
+剛情 > goujou\ ;
+当人 > tounin\ ;
+遵守 > junshu\ ;
+車輪 > sharin\ ;
+初校 > shokou\ ;
+軍車 > gunsha\ ;
+歌学 > kagaku\ ;
+連敗 > renpai\ ;
+全編 > zenpen\ ;
+底数 > teisuu\ ;
+出水 > demizu\ ;
+全線 > zensen\ ;
+軽装 > keisou\ ;
+身銭 > mizeni\ ;
+艦載 > kansai\ ;
+傍題 > boudai\ ;
+違式 > ishiki\ ;
+広東 > kanton\ ;
+布目 > nunome\ ;
+典範 > tenpan\ ;
+当主 > toushu\ ;
+病院 > byouin\ ;
+送検 > souken\ ;
+峰頭 > houtou\ ;
+知命 > chimei\ ;
+幽栖 > yuusei\ ;
+盗用 > touyou\ ;
+剛性 > gousei\ ;
+欣快 > kinkai\ ;
+当世 > tousei\ ;
+八紘 > hakkou\ ;
+勉励 > benrei\ ;
+速攻 > sokkou\ ;
+出殻 > degara\ ;
+兎肉 > toniku\ ;
+眠気 > nemuke\ ;
+茶番 > chaban\ ;
+真水 > mamizu\ ;
+左程 > sahodo\ ;
+分権 > bunken\ ;
+高風 > koufuu\ ;
+知名 > chimei\ ;
+工程 > koutei\ ;
+幽林 > yuurin\ ;
+返済 > hensai\ ;
+全紙 > zenshi\ ;
+冬瓜 > tougan\ ;
+殊勲 > shukun\ ;
+光背 > kouhai\ ;
+軌跡 > kiseki\ ;
+弱冠 > jakkan\ ;
+弾倉 > dansou\ ;
+知友 > chiyuu\ ;
+加圧 > kaatsu\ ;
+茶瓶 > chabin\ ;
+連携 > renkei\ ;
+初更 > shokou\ ;
+利敵 > riteki\ ;
+判明 > hanmei\ ;
+死命 > shimei\ ;
+適宜 > tekigi\ ;
+殊功 > shukou\ ;
+弥勒 > miroku\ ;
+冥界 > meikai\ ;
+芭蕉 > bashou\ ;
+運弓 > unkyuu\ ;
+剣帯 > kentai\ ;
+退校 > taikou\ ;
+高音 > takane\ ;
+良貨 > ryouka\ ;
+兵端 > heitan\ ;
+短剣 > tanken\ ;
+先聖 > sensei\ ;
+全米 > zenbei\ ;
+盲点 > mouten\ ;
+判断 > handan\ ;
+兵站 > heitan\ ;
+歓声 > kansei\ ;
+欽定 > kintei\ ;
+透明 > toumei\ ;
+重々 > juujuu\ ;
+軟論 > nanron\ ;
+邸内 > teinai\ ;
+皇統 > koutou\ ;
+近海 > kinkai\ ;
+免罪 > menzai\ ;
+廃帝 > haitei\ ;
+先考 > senkou\ ;
+短刀 > tantou\ ;
+勘例 > kanrei\ ;
+公算 > kousan\ ;
+舌頭 > zettou\ ;
+選外 > sengai\ ;
+死去 > shikyo\ ;
+軍資 > gunshi\ ;
+欧州 > oushuu\ ;
+引合 > hikiai\ ;
+幽景 > yuukei\ ;
+遊底 > yuutei\ ;
+知勇 > chiyuu\ ;
+矩則 > kusoku\ ;
+巡礼 > junrei\ ;
+遵奉 > junpou\ ;
+年来 > nenrai\ ;
+初旬 > shojun\ ;
+平板 > heiban\ ;
+儀表 > gihyou\ ;
+歎声 > tansei\ ;
+全篇 > zenpen\ ;
+兵種 > heishu\ ;
+巨砲 > kyohou\ ;
+皆納 > kainou\ ;
+至高 > shikou\ ;
+幽明 > yuumei\ ;
+残党 > zantou\ ;
+次席 > jiseki\ ;
+歌声 > utagoe\ ;
+模索 > mosaku\ ;
+残光 > zankou\ ;
+動体 > doutai\ ;
+元老 > genrou\ ;
+鮮紅 > senkou\ ;
+副官 > fukkan\ ;
+芳草 > housou\ ;
+真横 > mayoko\ ;
+八端 > hattan\ ;
+巧知 > kouchi\ ;
+分校 > bunkou\ ;
+連投 > rentou\ ;
+典礼 > tenrei\ ;
+盗犯 > touhan\ ;
+弾丸 > dangan\ ;
+歌境 > kakyou\ ;
+写生 > shasei\ ;
+残像 > zanzou\ ;
+労動 > roudou\ ;
+歩哨 > hoshou\ ;
+県民 > kenmin\ ;
+勇健 > yuuken\ ;
+冗用 > jouyou\ ;
+剪定 > sentei\ ;
+剣山 > kenzan\ ;
+労功 > roukou\ ;
+連戦 > rensen\ ;
+冷然 > reizen\ ;
+砂丘 > sakyuu\ ;
+動乱 > douran\ ;
+制憲 > seiken\ ;
+弓勢 > yunzei\ ;
+内省 > naisei\ ;
+廃山 > haizan\ ;
+前庭 > zentei\ ;
+平明 > heimei\ ;
+死刑 > shikei\ ;
+創始 > soushi\ ;
+眉毛 > mayuge\ ;
+造成 > zousei\ ;
+巨盗 > kyotou\ ;
+廃屋 > haioku\ ;
+切替 > settai\ ;
+公私 > koushi\ ;
+死処 > shisho\ ;
+逃散 > tousan\ ;
+身軽 > migaru\ ;
+光線 > kousen\ ;
+廣報 > kouhou\ ;
+矢先 > yasaki\ ;
+平方 > heihou\ ;
+軍談 > gundan\ ;
+華客 > kakaku\ ;
+過少 > kashou\ ;
+過小 > kashou\ ;
+年数 > nensuu\ ;
+正味 > shoumi\ ;
+退散 > taisan\ ;
+公社 > kousha\ ;
+芸能 > geinou\ ;
+連想 > rensou\ ;
+再生 > saisei\ ;
+残余 > zan''yo\ ;
+過客 > kakaku\ ;
+遣外 > kengai\ ;
+冠状 > kanjou\ ;
+次将 > jishou\ ;
+弁口 > benkou\ ;
+干支 > kanshi\ ;
+皓礬 > kouban\ ;
+正号 > seigou\ ;
+正史 > seishi\ ;
+苦笑 > kushou\ ;
+全社 > zensha\ ;
+分明 > bunmei\ ;
+弓具 > kyuugu\ ;
+進度 > shindo\ ;
+癌腫 > ganshu\ ;
+劣勢 > ressei\ ;
+労働 > roudou\ ;
+矮人 > waijin\ ;
+廻向 > kaikou\ ;
+荒海 > araumi\ ;
+鳴動 > meidou\ ;
+内界 > naikai\ ;
+座席 > zaseki\ ;
+正南 > seinan\ ;
+芸者 > geisha\ ;
+遊子 > yuushi\ ;
+正午 > shougo\ ;
+内用 > naiyou\ ;
+別懇 > bekkon\ ;
+制御 > seigyo\ ;
+分数 > bunsuu\ ;
+分散 > bunsan\ ;
+優者 > yuusha\ ;
+登第 > toudai\ ;
+歯冠 > shikan\ ;
+再現 > saigen\ ;
+康寧 > kounei\ ;
+公知 > kouchi\ ;
+功労 > kourou\ ;
+欄干 > rankan\ ;
+列挙 > rekkyo\ ;
+前山 > zenzan\ ;
+弥久 > bikyuu\ ;
+発端 > hottan\ ;
+初戦 > shosen\ ;
+軍装 > gunsou\ ;
+別意 > betsui\ ;
+出時 > dedoki\ ;
+連弾 > rendan\ ;
+全知 > zenchi\ ;
+知人 > chijin\ ;
+茫然 > bouzen\ ;
+輔翼 > hoyoku\ ;
+農法 > nouhou\ ;
+歌唱 > kashou\ ;
+利息 > risoku\ ;
+府庁 > fuchou\ ;
+真暗 > makura\ ;
+庶子 > shoshi\ ;
+華奢 > kyasha\ ;
+至難 > shinan\ ;
+凍死 > toushi\ ;
+労使 > roushi\ ;
+廉売 > renbai\ ;
+造形 > zoukei\ ;
+死体 > shitai\ ;
+逢引 > aibiki\ ;
+停頓 > teiton\ ;
+百科 > hyakka\ ;
+遺告 > yuigou\ ;
+函数 > kansuu\ ;
+冷淡 > reitan\ ;
+逆手 > sakate\ ;
+真昼 > mahiru\ ;
+出方 > dekata\ ;
+道士 > doushi\ ;
+前官 > zenkan\ ;
+剣士 > kenshi\ ;
+公益 > koueki\ ;
+船路 > funaji\ ;
+邦人 > houjin\ ;
+疎隔 > sokaku\ ;
+制帽 > seibou\ ;
+加入 > kanyuu\ ;
+再犯 > saihan\ ;
+先端 > sentan\ ;
+農民 > noumin\ ;
+遠国 > ongoku\ ;
+具申 > gushin\ ;
+荷札 > nifuda\ ;
+席次 > sekiji\ ;
+利得 > ritoku\ ;
+全盲 > zenmou\ ;
+死亡 > shibou\ ;
+巨獣 > kyojuu\ ;
+岸頭 > gantou\ ;
+落伍 > rakugo\ ;
+正兵 > seihei\ ;
+全盛 > zensei\ ;
+蹈鞴 > tatara\ ;
+連帯 > rentai\ ;
+速度 > sokudo\ ;
+到底 > toutei\ ;
+免税 > menzei\ ;
+再版 > saihan\ ;
+副因 > fukuin\ ;
+発禁 > hakkin\ ;
+舌鋒 > zeppou\ ;
+造幣 > zouhei\ ;
+道場 > doujou\ ;
+標示 > hyouji\ ;
+廃墟 > haikyo\ ;
+平手 > hirate\ ;
+返杯 > henpai\ ;
+停電 > teiden\ ;
+健闘 > kentou\ ;
+舟運 > shuuun\ ;
+横目 > yokome\ ;
+平成 > heisei\ ;
+凱旋 > gaisen\ ;
+厭々 > iyaiya\ ;
+目次 > mokuji\ ;
+冷泉 > reisen\ ;
+全癒 > zen''yu\ ;
+白磁 > hakuji\ ;
+返本 > henpon\ ;
+別形 > bekkei\ ;
+幻想 > gensou\ ;
+看板 > kanban\ ;
+再燃 > sainen\ ;
+着意 > chakui\ ;
+内状 > naijou\ ;
+別当 > bettou\ ;
+近東 > kintou\ ;
+建具 > tategu\ ;
+近来 > kinrai\ ;
+返書 > hensho\ ;
+序幕 > jomaku\ ;
+側鎖 > sokusa\ ;
+概論 > gairon\ ;
+病躯 > byouku\ ;
+楽譜 > gakufu\ ;
+冷汗 > reikan\ ;
+分担 > buntan\ ;
+辣油 > razeyu\ ;
+高配 > kouhai\ ;
+廷内 > teinai\ ;
+劇化 > gekika\ ;
+冷水 > reisui\ ;
+初志 > shoshi\ ;
+公田 > kouden\ ;
+還元 > kangen\ ;
+逕庭 > keitei\ ;
+利幅 > rihaba\ ;
+公用 > kouyou\ ;
+凡書 > bonsho\ ;
+連峰 > renpou\ ;
+劇務 > gekimu\ ;
+巡狩 > junshu\ ;
+切手 > kirete\ ;
+幻怪 > genkai\ ;
+追慕 > tsuibo\ ;
+武侠 > bukyou\ ;
+発砲 > happou\ ;
+廃坑 > haikou\ ;
+身許 > mimoto\ ;
+適否 > tekihi\ ;
+出掛 > degake\ ;
+円熟 > enjuku\ ;
+全甲 > zenkou\ ;
+近景 > kinkei\ ;
+歌劇 > kageki\ ;
+連山 > renzan\ ;
+高邁 > koumai\ ;
+前奏 > zensou\ ;
+店屋 > miseya\ ;
+処方 > shohou\ ;
+航走 > kousou\ ;
+処断 > shodan\ ;
+遍在 > henzai\ ;
+正使 > seishi\ ;
+刻字 > kokuji\ ;
+別巻 > bekkan\ ;
+冗漫 > jouman\ ;
+概観 > gaikan\ ;
+前夜 > zen''ya\ ;
+建値 > tatene\ ;
+幻影 > gen''ei\ ;
+連射 > rensha\ ;
+前売 > maeuri\ ;
+概要 > gaiyou\ ;
+傍輩 > houbai\ ;
+白眉 > hakubi\ ;
+峡部 > kyoubu\ ;
+制定 > seitei\ ;
+正伝 > seiden\ ;
+軽罪 > keizai\ ;
+番頭 > bantou\ ;
+初年 > shonen\ ;
+述懐 > jukkai\ ;
+辛気 > shinki\ ;
+楽観 > rakkan\ ;
+割合 > wariai\ ;
+楼観 > roukan\ ;
+苦痛 > kutsuu\ ;
+希求 > kikyuu\ ;
+幾年 > ikunen\ ;
+冬毛 > fuyuge\ ;
+先知 > senchi\ ;
+店子 > tanako\ ;
+魚群 > gyogun\ ;
+遡及 > sokyuu\ ;
+退役 > taieki\ ;
+幼年 > younen\ ;
+迂曲 > ukyoku\ ;
+優等 > yuutou\ ;
+軍葬 > gunsou\ ;
+割印 > wariin\ ;
+華商 > kashou\ ;
+利尿 > rinyou\ ;
+兵燹 > heisen\ ;
+延伸 > enshin\ ;
+床屋 > tokoya\ ;
+退廷 > taitei\ ;
+権現 > gongen\ ;
+側部 > sokubu\ ;
+帰朝 > kichou\ ;
+帰服 > kifuku\ ;
+眼底 > gantei\ ;
+退廃 > taihai\ ;
+別居 > bekkyo\ ;
+留飲 > ryuuin\ ;
+刪定 > santei\ ;
+遮光 > shakou\ ;
+前坊 > zenbou\ ;
+軟膏 > nankou\ ;
+欄外 > rangai\ ;
+冠水 > kansui\ ;
+別封 > beppuu\ ;
+眼帯 > gantai\ ;
+平年 > heinen\ ;
+平平 > heihei\ ;
+臆面 > okumen\ ;
+廃品 > haihin\ ;
+迷彩 > meisai\ ;
+市民 > shimin\ ;
+庄屋 > shouya\ ;
+色色 > iroiro\ ;
+高踏 > koutou\ ;
+冠毛 > kanmou\ ;
+巨漢 > kyokan\ ;
+常数 > jousuu\ ;
+創刊 > soukan\ ;
+先登 > sentou\ ;
+前回 > zenkai\ ;
+農林 > nourin\ ;
+平常 > heijou\ ;
+苔癬 > taisen\ ;
+癲癇 > tenkan\ ;
+草根 > soukon\ ;
+登用 > touyou\ ;
+高距 > koukyo\ ;
+判定 > hantei\ ;
+判官 > hangan\ ;
+川瀬 > kawase\ ;
+廷丁 > teitei\ ;
+発生 > hassei\ ;
+農村 > nouson\ ;
+側近 > sokkin\ ;
+盤根 > bankon\ ;
+莚席 > enseki\ ;
+真意 > shin''i\ ;
+魂胆 > kontan\ ;
+列島 > rettou\ ;
+轟然 > gouzen\ ;
+廃合 > haigou\ ;
+別嬪 > beppin\ ;
+欠品 > keppin\ ;
+魚網 > gyomou\ ;
+連奏 > rensou\ ;
+内湯 > uchiyu\ ;
+生麩 > namafu\ ;
+幽居 > yuukyo\ ;
+連夜 > ren''ya\ ;
+巡演 > jun''en\ ;
+分店 > bunten\ ;
+歌会 > utakai\ ;
+内港 > naikou\ ;
+公然 > kouzen\ ;
+巻毛 > makige\ ;
+軍艦 > gunkan\ ;
+連声 > renjou\ ;
+自重 > jichou\ ;
+内済 > naisai\ ;
+先番 > senban\ ;
+遊吟 > yuugin\ ;
+遊君 > yuukun\ ;
+軍船 > gunsen\ ;
+華北 > kahoku\ ;
+草本 > souhon\ ;
+盲断 > moudan\ ;
+着尺 > kijaku\ ;
+艨艟 > moudou\ ;
+返戻 > henrei\ ;
+先生 > sensei\ ;
+剪刀 > sentou\ ;
+偽足 > gisoku\ ;
+草書 > sousho\ ;
+全然 > zenzen\ ;
+列寧 > reenin\ ;
+魚精 > gyosei\ ;
+艦艇 > kantei\ ;
+艦船 > kansen\ ;
+内海 > naikai\ ;
+目方 > mekata\ ;
+凡才 > bonsai\ ;
+凡手 > bonshu\ ;
+光環 > koukan\ ;
+充用 > juuyou\ ;
+輝石 > kiseki\ ;
+魚粉 > gyofun\ ;
+凡戦 > bonsen\ ;
+庸君 > youkun\ ;
+値頃 > negoro\ ;
+凶徒 > kyouto\ ;
+疎通 > sotsuu\ ;
+至近 > shikin\ ;
+幢幡 > douban\ ;
+平屋 > hiraya\ ;
+遅参 > chisan\ ;
+逆子 > sakago\ ;
+白狐 > byakko\ ;
+値鞘 > nezaya\ ;
+出庫 > shukko\ ;
+追尾 > tsuibi\ ;
+刀工 > toukou\ ;
+出府 > shuppu\ ;
+初婚 > shokon\ ;
+出店 > demise\ ;
+内治 > naichi\ ;
+農政 > nousei\ ;
+剛勇 > gouyuu\ ;
+欠勤 > kekkin\ ;
+共演 > kyouen\ ;
+自適 > jiteki\ ;
+凡慮 > bonryo\ ;
+廃刊 > haikan\ ;
+退官 > taikan\ ;
+眼孔 > gankou\ ;
+界面 > kaimen\ ;
+工法 > kouhou\ ;
+遯世 > tonsei\ ;
+平定 > heitei\ ;
+華冑 > kachuu\ ;
+輪番 > rinban\ ;
+干害 > kangai\ ;
+出師 > suishi\ ;
+造型 > zoukei\ ;
+航行 > koukou\ ;
+前名 > zenmei\ ;
+函嶺 > kanrei\ ;
+道元 > dougen\ ;
+癌研 > ganken\ ;
+前号 > zengou\ ;
+判士 > hanshi\ ;
+前史 > zenshi\ ;
+輪生 > rinsei\ ;
+内気 > uchiki\ ;
+傍訓 > boukun\ ;
+眸子 > boushi\ ;
+遅効 > chikou\ ;
+盛暑 > seisho\ ;
+近情 > kinjou\ ;
+廃兵 > haihei\ ;
+免状 > menjou\ ;
+全潰 > zenkai\ ;
+広大 > koudai\ ;
+高論 > kouron\ ;
+帆桁 > hogeta\ ;
+高談 > koudan\ ;
+機業 > kigyou\ ;
+逓増 > teizou\ ;
+幕府 > bakufu\ ;
+席捲 > sekken\ ;
+荷役 > niyaku\ ;
+幻姿 > genshi\ ;
+内殿 > naiden\ ;
+広壮 > kousou\ ;
+傍観 > boukan\ ;
+華僑 > kakyou\ ;
+帝政 > teisei\ ;
+界隈 > kaiwai\ ;
+分封 > bunpou\ ;
+別報 > beppou\ ;
+公準 > koujun\ ;
+傍視 > wakimi\ ;
+前半 > zenpan\ ;
+白煙 > hakuen\ ;
+幽契 > yuukei\ ;
+生鮮 > seisen\ ;
+苔状 > taijou\ ;
+魔笛 > mateki\ ;
+創世 > sousei\ ;
+盆栽 > bonsai\ ;
+高言 > kougen\ ;
+跳馬 > chouba\ ;
+常態 > joutai\ ;
+広場 > hiroba\ ;
+広報 > kouhou\ ;
+山顛 > santen\ ;
+分子 > bunshi\ ;
+自身 > jishin\ ;
+兵法 > heihou\ ;
+停車 > teisha\ ;
+年始 > nenshi\ ;
+高覧 > kouran\ ;
+甘鯛 > amadai\ ;
+近影 > kin''ei\ ;
+広域 > kouiki\ ;
+横溢 > ouitsu\ ;
+冬日 > fuyubi\ ;
+高見 > takami\ ;
+僧綱 > sougou\ ;
+前前 > maemae\ ;
+座卓 > zataku\ ;
+公海 > koukai\ ;
+冠木 > kabuki\ ;
+良縁 > ryouen\ ;
+剛健 > gouken\ ;
+偽証 > gishou\ ;
+過信 > kashin\ ;
+市有 > shiyuu\ ;
+庭前 > teizen\ ;
+優生 > yuusei\ ;
+検車 > kensha\ ;
+店員 > ten''in\ ;
+進化 > shinka\ ;
+樹氷 > juhyou\ ;
+庄園 > shouen\ ;
+自足 > jisoku\ ;
+骨身 > honemi\ ;
+六法 > roppou\ ;
+出家 > shukke\ ;
+干天 > kanten\ ;
+凡庶 > bonsho\ ;
+高裁 > kousai\ ;
+画集 > gashuu\ ;
+公法 > kouhou\ ;
+分娩 > bunben\ ;
+輪状 > rinjou\ ;
+色糸 > iroito\ ;
+画障 > gashou\ ;
+平壌 > heijou\ ;
+山霊 > sanrei\ ;
+写本 > shahon\ ;
+入海 > iriumi\ ;
+蹂躪 > juurin\ ;
+蹂躙 > juurin\ ;
+幕屋 > makuya\ ;
+鬼籍 > kiseki\ ;
+刻印 > kokuin\ ;
+光点 > kouten\ ;
+凡常 > bonjou\ ;
+迷妄 > meimou\ ;
+痛苦 > tsuuku\ ;
+盆景 > bonkei\ ;
+船荷 > funani\ ;
+連吟 > rengin\ ;
+初回 > shokai\ ;
+廃人 > haijin\ ;
+剛体 > goutai\ ;
+車線 > shasen\ ;
+几帳 > kichou\ ;
+全治 > zenchi\ ;
+連名 > renmei\ ;
+連合 > rengou\ ;
+皆済 > kaisai\ ;
+盲想 > mousou\ ;
+刑場 > keijou\ ;
+年報 > nenpou\ ;
+退場 > taijou\ ;
+内検 > naiken\ ;
+再校 > saikou\ ;
+相性 > aishou\ ;
+若湯 > wakayu\ ;
+運休 > unkyuu\ ;
+相思 > soushi\ ;
+公民 > koumin\ ;
+市日 > ichibi\ ;
+花環 > hanawa\ ;
+様相 > yousou\ ;
+華中 > kachuu\ ;
+偸視 > toushi\ ;
+前傾 > zenkei\ ;
+鱈子 > tarako\ ;
+屍骸 > shigai\ ;
+自責 > jiseki\ ;
+分外 > bungai\ ;
+監房 > kanbou\ ;
+布教 > fukyou\ ;
+造反 > zouhan\ ;
+分売 > bunbai\ ;
+凄惨 > seisan\ ;
+盛挙 > seikyo\ ;
+干城 > kanjou\ ;
+軽目 > karume\ ;
+帰心 > kishin\ ;
+茘枝 > reishi\ ;
+相役 > aiyaku\ ;
+市政 > shisei\ ;
+座元 > zamoto\ ;
+再来 > sairai\ ;
+公正 > kousei\ ;
+兼業 > kengou\ ;
+盾座 > tateza\ ;
+冷房 > reibou\ ;
+制動 > seidou\ ;
+艶笑 > enshou\ ;
+相当 > soutou\ ;
+巡検 > junken\ ;
+平坦 > heitan\ ;
+兵権 > heiken\ ;
+冷戦 > reisen\ ;
+百済 > kudara\ ;
+全段 > zendan\ ;
+至論 > shiron\ ;
+船艙 > sensou\ ;
+逝去 > seikyo\ ;
+山間 > yamaai\ ;
+刺刺 > iraira\ ;
+皓歯 > koushi\ ;
+別品 > beppin\ ;
+平均 > heikin\ ;
+山門 > sanmon\ ;
+傭船 > yousen\ ;
+円柱 > enchuu\ ;
+生類 > seirui\ ;
+平地 > heichi\ ;
+連動 > rendou\ ;
+前便 > zenbin\ ;
+至誠 > shisei\ ;
+庸人 > youjin\ ;
+年回 > nenkai\ ;
+退団 > taidan\ ;
+盲従 > moujuu\ ;
+前例 > zenrei\ ;
+冗文 > joubun\ ;
+橋架 > kyouka\ ;
+全欧 > zen''ou\ ;
+軟禁 > nankin\ ;
+速効 > sokkou\ ;
+睾丸 > kougan\ ;
+至言 > shigen\ ;
+巨材 > kyozai\ ;
+光源 > kougen\ ;
+連判 > renpan\ ;
+軒端 > nokiba\ ;
+師弟 > shitei\ ;
+前件 > zenken\ ;
+公権 > kouken\ ;
+屏風 > byoubu\ ;
+相席 > aiseki\ ;
+前代 > zendai\ ;
+生面 > seimen\ ;
+苦汁 > nigari\ ;
+前人 > zenjin\ ;
+切地 > kireji\ ;
+半々 > hanhan\ ;
+遁世 > tonsei\ ;
+至要 > shiyou\ ;
+凶夢 > kyoumu\ ;
+分地 > bunchi\ ;
+看守 > kanshu\ ;
+艶福 > enpuku\ ;
+充満 > juuman\ ;
+若気 > wakage\ ;
+病苦 > byouku\ ;
+全権 > zenken\ ;
+荒廃 > kouhai\ ;
+発泡 > happou\ ;
+産院 > san''in\ ;
+分団 > bundan\ ;
+自註 > jichuu\ ;
+広原 > kougen\ ;
+初号 > shogou\ ;
+席巻 > sekken\ ;
+再敗 > saihai\ ;
+前世 > zensei\ ;
+造兵 > zouhei\ ;
+逸事 > itsuji\ ;
+僻目 > higame\ ;
+傭聘 > youhei\ ;
+鬱積 > usseki\ ;
+巨星 > kyosei\ ;
+刀圭 > toukei\ ;
+冊数 > sassuu\ ;
+幼君 > youkun\ ;
+発汗 > hakkan\ ;
+画鋲 > gabyou\ ;
+出城 > dejiro\ ;
+幼名 > youmei\ ;
+車窓 > shasou\ ;
+小鼻 > kobana\ ;
+内旨 > naishi\ ;
+痛罵 > tsuuba\ ;
+自覚 > jikaku\ ;
+疾苦 > shikku\ ;
+内方 > naihou\ ;
+偽薬 > giyaku\ ;
+病臥 > byouga\ ;
+帽子 > boushi\ ;
+共栄 > kyouei\ ;
+車種 > shashu\ ;
+値遇 > chiguu\ ;
+并呑 > heidon\ ;
+床几 > shougi\ ;
+幾千 > ikusen\ ;
+高著 > koucho\ ;
+農工 > noukou\ ;
+小麦 > komugi\ ;
+検討 > kentou\ ;
+分営 > bun''ei\ ;
+棒鋼 > boukou\ ;
+送呈 > soutei\ ;
+座中 > zachuu\ ;
+内政 > naisei\ ;
+内攻 > naikou\ ;
+并合 > heigou\ ;
+公栽 > kousai\ ;
+修院 > shuuin\ ;
+底値 > sokone\ ;
+帰属 > kizoku\ ;
+工数 > kousuu\ ;
+兵曹 > heisou\ ;
+兵書 > heisho\ ;
+刑名 > keimei\ ;
+軍礼 > gunrei\ ;
+樹木 > jumoku\ ;
+高菜 > takana\ ;
+相対 > soutai\ ;
+連係 > renkei\ ;
+年号 > nengou\ ;
+検視 > kenshi\ ;
+冥想 > meisou\ ;
+花火 > hanabi\ ;
+展開 > tenkai\ ;
+相宿 > aiyado\ ;
+舞舞 > maimai\ ;
+退去 > taikyo\ ;
+全校 > zenkou\ ;
+帯封 > obifuu\ ;
+凍寒 > toukan\ ;
+平原 > heigen\ ;
+県外 > kengai\ ;
+凍害 > tougai\ ;
+山野 > san''ya\ ;
+透写 > tousha\ ;
+制令 > seirei\ ;
+六本 > roppon\ ;
+苦楽 > kuraku\ ;
+帰宅 > kitaku\ ;
+盲射 > mousha\ ;
+疽腫 > soshou\ ;
+横根 > yokone\ ;
+幾分 > ikubun\ ;
+異説 > isetsu\ ;
+魔球 > makyuu\ ;
+凶器 > kyouki\ ;
+初冬 > shotou\ ;
+保革 > hokaku\ ;
+再挙 > saikyo\ ;
+目屎 > mekuso\ ;
+俊馬 > shunme\ ;
+甲鈑 > kouban\ ;
+八本 > happon\ ;
+公有 > kouyuu\ ;
+偏見 > henken\ ;
+府中 > fuchuu\ ;
+目尻 > mejiri\ ;
+其方 > sonata\ ;
+盛年 > seinen\ ;
+小鴨 > kogamo\ ;
+再拝 > saihai\ ;
+退勢 > taisei\ ;
+返報 > henpou\ ;
+連亘 > renkou\ ;
+幽冥 > yuumei\ ;
+載炭 > saitan\ ;
+内探 > naitan\ ;
+権柄 > kenpei\ ;
+小鳥 > kotori\ ;
+年功 > nenkou\ ;
+田野 > den''ya\ ;
+兵数 > heisuu\ ;
+盪尽 > toujin\ ;
+眼前 > ganzen\ ;
+全書 > zensho\ ;
+艦砲 > kanpou\ ;
+店主 > tenshu\ ;
+転生 > tensei\ ;
+足駄 > ashida\ ;
+八景 > hakkei\ ;
+登楼 > tourou\ ;
+保障 > hoshou\ ;
+目安 > meyasu\ ;
+内挿 > naisou\ ;
+概算 > gaisan\ ;
+分厘 > bunrin\ ;
+追加 > tsuika\ ;
+横木 > yokogi\ ;
+優渥 > yuuaku\ ;
+再戦 > saisen\ ;
+帆影 > hokage\ ;
+年初 > nensho\ ;
+腰間 > youkan\ ;
+草屋 > souoku\ ;
+公明 > koumei\ ;
+年刊 > nenkan\ ;
+年分 > nenbun\ ;
+全智 > zenchi\ ;
+逆児 > sakago\ ;
+全景 > zenkei\ ;
+幕営 > bakuei\ ;
+小鰭 > kohada\ ;
+別使 > besshi\ ;
+平分 > heibun\ ;
+相姦 > soukan\ ;
+六方 > roppou\ ;
+判例 > hanrei\ ;
+平凡 > heibon\ ;
+瘋癲 > fuuten\ ;
+幻像 > genzou\ ;
+八方 > happou\ ;
+追分 > oiwake\ ;
+鰥夫 > yamome\ ;
+用金 > youkin\ ;
+魔物 > mamono\ ;
+公文 > koubun\ ;
+眼光 > gankou\ ;
+茶巾 > chakin\ ;
+相好 > sougou\ ;
+刑典 > keiten\ ;
+近在 > kinzai\ ;
+別件 > bekken\ ;
+逓伝 > teiden\ ;
+山辺 > yamabe\ ;
+内所 > naisho\ ;
+略記 > ryakki\ ;
+巧手 > koushu\ ;
+内戦 > naisen\ ;
+真味 > shinmi\ ;
+身空 > misora\ ;
+近因 > kin''in\ ;
+草子 > soushi\ ;
+芋版 > imoban\ ;
+全文 > zenbun\ ;
+巡拝 > junpai\ ;
+産金 > sankin\ ;
+登校 > toukou\ ;
+全数 > zensuu\ ;
+監守 > kanshu\ ;
+工手 > koushu\ ;
+工房 > koubou\ ;
+全敗 > zenpai\ ;
+真否 > shinpi\ ;
+若木 > wakagi\ ;
+列候 > rekkou\ ;
+追儺 > tsuina\ ;
+冷害 > reigai\ ;
+床上 > yukaue\ ;
+偽膜 > gimaku\ ;
+帆布 > honuno\ ;
+凝固 > gyouko\ ;
+途中 > tochuu\ ;
+内憂 > naiyuu\ ;
+俗間 > zokkan\ ;
+促音 > sokuon\ ;
+小骨 > kobone\ ;
+幽体 > yuutai\ ;
+典拠 > tenkyo\ ;
+登板 > touban\ ;
+初代 > shodai\ ;
+刀剣 > touken\ ;
+帳場 > chouba\ ;
+幕吏 > bakuri\ ;
+魚灯 > gyotou\ ;
+膚身 > hadami\ ;
+癖毛 > kusege\ ;
+幸便 > koubin\ ;
+僭王 > sen''ou\ ;
+幣制 > heisei\ ;
+再思 > saishi\ ;
+県営 > ken''ei\ ;
+鮮明 > senmei\ ;
+荒天 > kouten\ ;
+生酒 > kizake\ ;
+分党 > buntou\ ;
+年俸 > nenpou\ ;
+分光 > bunkou\ ;
+刀刃 > toujin\ ;
+幾人 > ikunin\ ;
+脳髄 > nouzui\ ;
+驥足 > kisoku\ ;
+内情 > naijou\ ;
+真北 > makita\ ;
+巨悪 > kyoaku\ ;
+内患 > naikan\ ;
+荊妻 > keisai\ ;
+全損 > zenson\ ;
+刃先 > hasaki\ ;
+山路 > yamaji\ ;
+再征 > saisei\ ;
+駿馬 > shunme\ ;
+産道 > sandou\ ;
+帯域 > taiiki\ ;
+希少 > kishou\ ;
+船窓 > sensou\ ;
+返品 > henpin\ ;
+小首 > kokubi\ ;
+年余 > nen''yo\ ;
+甘酸 > kansan\ ;
+生還 > seikan\ ;
+舷窓 > gensou\ ;
+騒霊 > sourei\ ;
+幅員 > fukuin\ ;
+光来 > kourai\ ;
+至芸 > shigei\ ;
+年会 > nenkai\ ;
+退会 > taikai\ ;
+寡黙 > kamoku\ ;
+刃傷 > ninjou\ ;
+再建 > saikon\ ;
+極秘 > gokuhi\ ;
+逃亡 > toubou\ ;
+退任 > tainin\ ;
+円心 > enshin\ ;
+年令 > nenrei\ ;
+年代 > nendai\ ;
+傍線 > bousen\ ;
+標旗 > hyouki\ ;
+省営 > shouei\ ;
+帰国 > kikoku\ ;
+着丈 > kitake\ ;
+農場 > noujou\ ;
+軽減 > keigen\ ;
+骨董 > kottou\ ;
+荒城 > koujou\ ;
+践踏 > sentou\ ;
+荘園 > shouen\ ;
+療治 > ryouji\ ;
+辺地 > henchi\ ;
+駝鳥 > dachou\ ;
+内径 > naikei\ ;
+腹部 > fukubu\ ;
+出先 > desaki\ ;
+元来 > ganrai\ ;
+真冬 > mafuyu\ ;
+輪栽 > rinsai\ ;
+巨弾 > kyodan\ ;
+元本 > genpon\ ;
+光景 > koukei\ ;
+凶具 > kyougu\ ;
+自若 > jijaku\ ;
+年中 > nenjuu\ ;
+看取 > kanshu\ ;
+発散 > hassan\ ;
+師団 > shidan\ ;
+駱駝 > rakuda\ ;
+内廷 > naitei\ ;
+傍系 > boukei\ ;
+分体 > buntai\ ;
+迎合 > geigou\ ;
+毎々 > maimai\ ;
+修造 > shuzou\ ;
+登攀 > touhan\ ;
+草堂 > soudou\ ;
+干与 > kan''yo\ ;
+分会 > bunkai\ ;
+髀肉 > hiniku\ ;
+機屋 > hataya\ ;
+内庭 > naitei\ ;
+農地 > nouchi\ ;
+公憤 > koufun\ ;
+盛大 > seidai\ ;
+航空 > koukuu\ ;
+市子 > ichiko\ ;
+尊顔 > songan\ ;
+軍犬 > genken\ ;
+先方 > senpou\ ;
+修辞 > shuuji\ ;
+生身 > namami\ ;
+横手 > yokote\ ;
+停船 > teisen\ ;
+県勢 > kensei\ ;
+六感 > rokkan\ ;
+真偽 > shingi\ ;
+航程 > koutei\ ;
+分乗 > bunjou\ ;
+草地 > souchi\ ;
+元旦 > gantan\ ;
+先攻 > senkou\ ;
+処刑 > shokei\ ;
+画調 > gachou\ ;
+冗官 > joukan\ ;
+処分 > shobun\ ;
+軽水 > keisui\ ;
+自腹 > jibara\ ;
+真個 > shinko\ ;
+価額 > kagaku\ ;
+分与 > bun''yo\ ;
+較正 > kousei\ ;
+処処 > shosho\ ;
+芒洋 > bouyou\ ;
+小雪 > koyuki\ ;
+小雨 > kosame\ ;
+巡幸 > junkou\ ;
+導電 > douden\ ;
+兵役 > heieki\ ;
+小雀 > kogara\ ;
+真価 > shinka\ ;
+近刊 > kinkan\ ;
+函人 > kanjin\ ;
+盗塁 > tourui\ ;
+兼帯 > kentai\ ;
+苦手 > nigate\ ;
+対顔 > taigan\ ;
+若手 > wakate\ ;
+巨峰 > kyohou\ ;
+冬場 > fuyuba\ ;
+催眠 > saimin\ ;
+優柔 > yuujuu\ ;
+芸林 > geirin\ ;
+軒灯 > kentou\ ;
+相反 > souhan\ ;
+巨岩 > kyogan\ ;
+帯同 > taidou\ ;
+常勤 > joukin\ ;
+荘司 > shouji\ ;
+公役 > koueki\ ;
+全快 > zenkai\ ;
+内層 > naisou\ ;
+高等 > koutou\ ;
+凍原 > tougen\ ;
+楽界 > gakkai\ ;
+花柳 > karyuu\ ;
+花柱 > kachuu\ ;
+荘厳 > sougon\ ;
+出世 > shusse\ ;
+凶事 > kyouji\ ;
+市外 > shigai\ ;
+痘瘡 > tousou\ ;
+凄味 > sugomi\ ;
+自習 > jishuu\ ;
+凡僧 > bonsou\ ;
+対面 > taimen\ ;
+番茶 > bancha\ ;
+冊子 > soushi\ ;
+異色 > ishoku\ ;
+師友 > shiyuu\ ;
+痘痕 > toukon\ ;
+円寂 > enjaku\ ;
+全形 > zenkei\ ;
+段々 > dandan\ ;
+州崎 > susaki\ ;
+近傍 > kinbou\ ;
+入御 > nyuugo\ ;
+内容 > naiyou\ ;
+内宮 > naiguu\ ;
+公庭 > koutei\ ;
+内定 > naitei\ ;
+市塵 > shijin\ ;
+践言 > sengen\ ;
+芳書 > housho\ ;
+用談 > youdan\ ;
+花木 > kaboku\ ;
+荒原 > kougen\ ;
+公平 > kouhei\ ;
+内孫 > naison\ ;
+市場 > shijou\ ;
+男装 > dansou\ ;
+保身 > hoshin\ ;
+発憤 > happun\ ;
+再婚 > saikon\ ;
+舌端 > zettan\ ;
+全廃 > zenpai\ ;
+先投 > sentou\ ;
+偕老 > kairou\ ;
+全店 > zenten\ ;
+盲動 > moudou\ ;
+対陣 > taijin\ ;
+例題 > reidai\ ;
+帯剣 > taiken\ ;
+帝命 > teimei\ ;
+軟泥 > nandei\ ;
+茅屋 > bouoku\ ;
+入庫 > nyuuko\ ;
+用言 > yougen\ ;
+発意 > hatsui\ ;
+入府 > nyuufu\ ;
+芸文 > geibun\ ;
+凡例 > hanrei\ ;
+専門 > senmon\ ;
+発想 > hassou\ ;
+帯刀 > taitou\ ;
+近体 > kintai\ ;
+苦心 > kushin\ ;
+檀君 > dankun\ ;
+兼官 > kenkan\ ;
+全市 > zenshi\ ;
+尖鋭 > sen''ei\ ;
+全巻 > zenkan\ ;
+尿路 > nyouro\ ;
+県会 > kenkai\ ;
+盤台 > bandai\ ;
+布地 > nunoji\ ;
+至純 > shijun\ ;
+草原 > sougen\ ;
+自縛 > jibaku\ ;
+梅酒 > umeshu\ ;
+元手 > motode\ ;
+県令 > kenrei\ ;
+寝首 > nekubi\ ;
+生誕 > seitan\ ;
+俳諧 > haikai\ ;
+軟水 > nansui\ ;
+近代 > kindai\ ;
+県人 > kenjin\ ;
+盆地 > bonchi\ ;
+再変 > saihen\ ;
+偽称 > gishou\ ;
+軍港 > gunkou\ ;
+党弊 > touhei\ ;
+処世 > shosei\ ;
+冷厳 > reigen\ ;
+臭素 > shuuso\ ;
+内妻 > naisai\ ;
+茄子 > nasubi\ ;
+盟友 > meiyuu\ ;
+盗品 > touhin\ ;
+生計 > seikei\ ;
+舗石 > hoseki\ ;
+自給 > jikyuu\ ;
+返上 > henjou\ ;
+魚梯 > gyotei\ ;
+盛名 > seimei\ ;
+全島 > zentou\ ;
+赭顔 > shagan\ ;
+共寝 > tomone\ ;
+小銭 > kozeni\ ;
+皇帝 > koutei\ ;
+内奏 > naisou\ ;
+近世 > kinsei\ ;
+臨終 > rinjuu\ ;
+常例 > jourei\ ;
+草創 > sousou\ ;
+全岸 > zengan\ ;
+巨大 > kyodai\ ;
+辛味 > karami\ ;
+内外 > naigai\ ;
+若干 > jakkan\ ;
+屍諌 > shikan\ ;
+目先 > mesaki\ ;
+師僧 > shisou\ ;
+常体 > joutai\ ;
+目元 > memoto\ ;
+常住 > joujuu\ ;
+全山 > zenzan\ ;
+農兵 > nouhei\ ;
+傍目 > hatame\ ;
+展観 > tenkan\ ;
+展覧 > tenran\ ;
+甘言 > kangen\ ;
+常会 > joukai\ ;
+工大 > koudai\ ;
+公害 > kougai\ ;
+帥先 > sossen\ ;
+常任 > jounin\ ;
+俯角 > fukaku\ ;
+若布 > wakame\ ;
+帝制 > teisei\ ;
+痴漢 > chikan\ ;
+公定 > koutei\ ;
+軍法 > gunpou\ ;
+小金 > kogane\ ;
+登庸 > touyou\ ;
+全射 > zensha\ ;
+荊冠 > keikan\ ;
+冷剛 > reigou\ ;
+常人 > joujin\ ;
+魚板 > gyoban\ ;
+崩潰 > houkai\ ;
+公子 > koushi\ ;
+僧正 > soujou\ ;
+桑門 > soumon\ ;
+内報 > naihou\ ;
+允恭 > inkyou\ ;
+光彩 > kousai\ ;
+軸木 > jikugi\ ;
+兇徒 > kyouto\ ;
+相伝 > souden\ ;
+足蹴 > ashige\ ;
+帝冠 > teikan\ ;
+併音 > pin''in\ ;
+高目 > takame\ ;
+円域 > en''iki\ ;
+寒風 > kanpuu\ ;
+駅頭 > ekitou\ ;
+傾瀉 > keisha\ ;
+冷凍 > reitou\ ;
+軍民 > gunmin\ ;
+骨粉 > koppun\ ;
+病理 > byouri\ ;
+帰休 > kikyuu\ ;
+帰伏 > kifuku\ ;
+常世 > tokoyo\ ;
+傲然 > gouzen\ ;
+膵臓 > suizou\ ;
+其奴 > soitsu\ ;
+充当 > juutou\ ;
+修補 > shuuho\ ;
+布告 > fukoku\ ;
+皇居 > koukyo\ ;
+舎監 > shakan\ ;
+疱瘡 > housou\ ;
+権官 > kenkan\ ;
+儒教 > jukyou\ ;
+帰京 > kikyou\ ;
+俗議 > zokugi\ ;
+冷光 > reikou\ ;
+相乗 > soujou\ ;
+寝際 > negiwa\ ;
+師伝 > shiden\ ;
+内地 > naichi\ ;
+光年 > kounen\ ;
+的屋 > tekiya\ ;
+益友 > ekiyuu\ ;
+内在 > naizai\ ;
+兵変 > heihen\ ;
+山葵 > wasabi\ ;
+小過 > shouka\ ;
+兵士 > heishi\ ;
+偵知 > teichi\ ;
+疫癘 > ekirei\ ;
+盲人 > moujin\ ;
+皇宮 > kouguu\ ;
+能面 > noumen\ ;
+盛典 > seiten\ ;
+保証 > hoshou\ ;
+検算 > kenzan\ ;
+皇宗 > kousou\ ;
+先師 > senshi\ ;
+先帝 > sentei\ ;
+根雪 > neyuki\ ;
+茅場 > kayaba\ ;
+帰一 > kiitsu\ ;
+皇孫 > kouson\ ;
+侮辱 > bujoku\ ;
+番線 > bansen\ ;
+農会 > noukai\ ;
+俗語 > zokugo\ ;
+目今 > mokkon\ ;
+冥加 > myouga\ ;
+臥竜 > garyou\ ;
+直下 > chokka\ ;
+尸諌 > shikan\ ;
+山菜 > sansai\ ;
+転校 > tenkou\ ;
+輪形 > rinkei\ ;
+俗話 > zokuwa\ ;
+疥癬 > kaisen\ ;
+船灯 > sentou\ ;
+自称 > jishou\ ;
+苦学 > kugaku\ ;
+元帥 > gensui\ ;
+草体 > soutai\ ;
+白寿 > hakuju\ ;
+冥利 > myouri\ ;
+市勢 > shisei\ ;
+体験 > taiken\ ;
+発展 > hatten\ ;
+巡回 > junkai\ ;
+構文 > koubun\ ;
+舷灯 > gentou\ ;
+輪廻 > rin''ne\ ;
+典型 > tenkei\ ;
+山荘 > sansou\ ;
+公売 > koubai\ ;
+馨香 > keikou\ ;
+脱退 > dattai\ ;
+俗解 > zokkai\ ;
+背鰭 > sebire\ ;
+発射 > hassha\ ;
+僚機 > ryouki\ ;
+全天 > zenten\ ;
+校風 > koufuu\ ;
+赤門 > akamon\ ;
+冥冥 > meimei\ ;
+屍蝋 > shirou\ ;
+畝織 > uneori\ ;
+俗見 > zokken\ ;
+倉荷 > kurani\ ;
+芳情 > houjou\ ;
+市制 > shisei\ ;
+首魁 > shukai\ ;
+入夫 > nyuufu\ ;
+全壊 > zenkai\ ;
+生薑 > shouga\ ;
+公報 > kouhou\ ;
+優性 > yuusei\ ;
+兵団 > heidan\ ;
+対遇 > taiguu\ ;
+生蕃 > seiban\ ;
+供進 > gushin\ ;
+免官 > menkan\ ;
+桟道 > sandou\ ;
+先導 > sendou\ ;
+市内 > shinai\ ;
+小路 > shouji\ ;
+軽挙 > keikyo\ ;
+良案 > ryouan\ ;
+容顔 > yougan\ ;
+兼営 > ken''ei\ ;
+円味 > marumi\ ;
+盛会 > seikai\ ;
+円周 > enshuu\ ;
+芸当 > geitou\ ;
+優待 > yuutai\ ;
+甘薯 > kansho\ ;
+内命 > naimei\ ;
+車検 > shaken\ ;
+芳志 > houshi\ ;
+小足 > koashi\ ;
+皇天 > kouten\ ;
+対辺 > taihen\ ;
+超過 > chouka\ ;
+盛代 > seidai\ ;
+苗字 > myouji\ ;
+背骨 > sebone\ ;
+内含 > naigan\ ;
+馬革 > bakaku\ ;
+盟主 > meishu\ ;
+内向 > naikou\ ;
+光子 > koushi\ ;
+香香 > koukou\ ;
+内合 > naigou\ ;
+船渠 > senkyo\ ;
+甘蔗 > kansho\ ;
+巨口 > kyokou\ ;
+公団 > koudan\ ;
+再勤 > saikin\ ;
+市債 > shisai\ ;
+岩穴 > iwaana\ ;
+元寇 > genkou\ ;
+余震 > yoshin\ ;
+全地 > zenchi\ ;
+畏縮 > ishuku\ ;
+冕冠 > benkan\ ;
+茶会 > chakai\ ;
+瑶顔 > yougan\ ;
+低頭 > teitou\ ;
+円卓 > entaku\ ;
+密閉 > mippei\ ;
+山背 > yamase\ ;
+様態 > youtai\ ;
+茶代 > chadai\ ;
+体面 > taimen\ ;
+催涙 > sairui\ ;
+背馳 > haichi\ ;
+共営 > kyouei\ ;
+脱走 > dassou\ ;
+百夜 > momoyo\ ;
+苦境 > kukyou\ ;
+写像 > shazou\ ;
+実験 > jikken\ ;
+入園 > nyuuen\ ;
+茶人 > chajin\ ;
+苦塩 > nigari\ ;
+発奮 > happun\ ;
+英国 > eikoku\ ;
+内包 > naihou\ ;
+再刊 > saikan\ ;
+用船 > yousen\ ;
+高燥 > kousou\ ;
+内勤 > naikin\ ;
+花床 > kashou\ ;
+肺魚 > haigyo\ ;
+自白 > jihaku\ ;
+家集 > kashuu\ ;
+軍曹 > gunsou\ ;
+軍書 > gunsho\ ;
+傍点 > bouten\ ;
+便覧 > benran\ ;
+発声 > hassei\ ;
+登壇 > toudan\ ;
+構成 > kousei\ ;
+検眼 > kengan\ ;
+再再 > saisai\ ;
+倒置 > touchi\ ;
+校門 > koumon\ ;
+首題 > shudai\ ;
+内剛 > naigou\ ;
+軒昂 > kenkou\ ;
+先妻 > sensai\ ;
+川原 > kawara\ ;
+市会 > shikai\ ;
+骨相 > kossou\ ;
+転換 > tenkan\ ;
+共和 > kyouwa\ ;
+甘草 > kanzou\ ;
+内分 > naibun\ ;
+甘茶 > amacha\ ;
+登場 > toujou\ ;
+寝酒 > nezake\ ;
+兄姉 > keishi\ ;
+正々 > seisei\ ;
+市人 > shijin\ ;
+兄妹 > keimai\ ;
+入営 > nyuuei\ ;
+兼勤 > kenkin\ ;
+元始 > genshi\ ;
+膏肓 > koukou\ ;
+高点 > kouten\ ;
+軒数 > kensuu\ ;
+先天 > senten\ ;
+先夜 > sen''ya\ ;
+市井 > shisei\ ;
+円内 > en''nai\ ;
+内内 > nainai\ ;
+軍旅 > gunryo\ ;
+内典 > naiten\ ;
+軽快 > keikai\ ;
+航海 > koukai\ ;
+構想 > kousou\ ;
+家長 > kachou\ ;
+全員 > zen''in\ ;
+臨界 > rinkai\ ;
+高瀬 > takase\ ;
+全品 > zenpin\ ;
+検痰 > kentan\ ;
+入唐 > nittou\ ;
+市上 > shijou\ ;
+小話 > shouwa\ ;
+皇嗣 > koushi\ ;
+工兵 > kouhei\ ;
+背革 > segawa\ ;
+巨億 > kyooku\ ;
+背面 > haimen\ ;
+軍政 > gunsei\ ;
+債権 > saiken\ ;
+先塔 > sentou\ ;
+公司 > koushi\ ;
+輪姦 > rinkan\ ;
+航法 > kouhou\ ;
+巨像 > kyozou\ ;
+疑獄 > gigoku\ ;
+小言 > kogoto\ ;
+内債 > naisai\ ;
+検番 > kenban\ ;
+充填 > juuten\ ;
+層群 > sougun\ ;
+花屋 > hanaya\ ;
+軟投 > nantou\ ;
+内偵 > naitei\ ;
+全史 > zenshi\ ;
+転戦 > tensen\ ;
+偶然 > guuzen\ ;
+生育 > seiiku\ ;
+膀胱 > boukou\ ;
+転成 > tensei\ ;
+兵制 > heisei\ ;
+岩盤 > ganban\ ;
+魔性 > mashou\ ;
+共助 > kyoujo\ ;
+較差 > kakusa\ ;
+棒線 > bousen\ ;
+八十 > yasoji\ ;
+兵刃 > heijin\ ;
+再会 > saikai\ ;
+花客 > kakaku\ ;
+花実 > hanami\ ;
+苗圃 > byouho\ ;
+再任 > sainin\ ;
+余録 > yoroku\ ;
+病気 > byouki\ ;
+胸部 > kyoubu\ ;
+駅逓 > ekitei\ ;
+先在 > senzai\ ;
+実際 > jissai\ ;
+生者 > shouja\ ;
+由緒 > yuisho\ ;
+俳聖 > haisei\ ;
+山系 > sankei\ ;
+男系 > dankei\ ;
+佳辰 > kashin\ ;
+対論 > tairon\ ;
+権原 > kengen\ ;
+寮費 > ryouhi\ ;
+対談 > taidan\ ;
+身柄 > migara\ ;
+倫社 > rinsha\ ;
+巨体 > kyotai\ ;
+内住 > naijuu\ ;
+皇后 > kougou\ ;
+小袖 > kosode\ ;
+対語 > tsuigo\ ;
+能辯 > nouben\ ;
+苦味 > nigami\ ;
+僧房 > soubou\ ;
+公判 > kouhan\ ;
+魅惑 > miwaku\ ;
+公刊 > koukan\ ;
+再三 > saisan\ ;
+兇器 > kyouki\ ;
+島民 > toumin\ ;
+権勢 > kensei\ ;
+巨人 > kyojin\ ;
+内争 > naisou\ ;
+将補 > shouho\ ;
+内乱 > nairan\ ;
+兎唇 > toshin\ ;
+兼併 > kenpei\ ;
+工人 > koujin\ ;
+芸大 > geidai\ ;
+公党 > koutou\ ;
+自爆 > jibaku\ ;
+舷梯 > gentei\ ;
+脱衣 > datsui\ ;
+円丘 > enkyuu\ ;
+会館 > kaikan\ ;
+芝居 > shibai\ ;
+軟性 > nansei\ ;
+皆勤 > kaikin\ ;
+巨万 > kyoman\ ;
+軍扇 > gunsen\ ;
+査閲 > saetsu\ ;
+寸言 > sungen\ ;
+密送 > missou\ ;
+輪回 > rin''ne\ ;
+用紙 > youshi\ ;
+寄進 > kishin\ ;
+痔核 > jikaku\ ;
+全免 > zenmen\ ;
+発向 > hakkou\ ;
+体重 > taijuu\ ;
+公債 > kousai\ ;
+党勢 > tousei\ ;
+棄約 > kiyaku\ ;
+侍読 > jidoku\ ;
+骨牌 > karuta\ ;
+側溝 > sokkou\ ;
+審議 > shingi\ ;
+骨片 > koppen\ ;
+傾斜 > keisha\ ;
+儒学 > jugaku\ ;
+自然 > shizen\ ;
+専行 > senkou\ ;
+赤赤 > akaaka\ ;
+色悪 > iroaku\ ;
+苦力 > kuurii\ ;
+身方 > mikata\ ;
+楷書 > kaisho\ ;
+宝鑑 > houkan\ ;
+会頭 > kaitou\ ;
+信者 > shinja\ ;
+起請 > kishou\ ;
+膿瘍 > nouyou\ ;
+概数 > gaisuu\ ;
+芸域 > geiiki\ ;
+小虎 > kodora\ ;
+色恋 > irokoi\ ;
+肺門 > haimon\ ;
+兵仗 > heijou\ ;
+家郷 > kakyou\ ;
+畢生 > hissei\ ;
+信義 > shingi\ ;
+岳父 > gakufu\ ;
+高段 > koudan\ ;
+生紙 > kigami\ ;
+膿疱 > nouhou\ ;
+例言 > reigen\ ;
+皇典 > kouten\ ;
+先君 > senkun\ ;
+佳賞 > kashou\ ;
+公侯 > koukou\ ;
+赤貝 > akagai\ ;
+例解 > reikai\ ;
+皆兵 > kaihei\ ;
+軍情 > gunjou\ ;
+高歯 > takaba\ ;
+兵乱 > heiran\ ;
+何遍 > nanben\ ;
+公使 > koushi\ ;
+先取 > senshu\ ;
+発勁 > hakkei\ ;
+駄賃 > dachin\ ;
+発効 > hakkou\ ;
+尾翼 > biyoku\ ;
+髄液 > zuieki\ ;
+封蝋 > fuurou\ ;
+党内 > tounai\ ;
+用箋 > yousen\ ;
+公住 > koujuu\ ;
+全便 > zenbin\ ;
+生粋 > kissui\ ;
+甲種 > koushu\ ;
+俗耳 > zokuji\ ;
+高欄 > kouran\ ;
+桿菌 > kankin\ ;
+公会 > koukai\ ;
+舞楽 > bugaku\ ;
+宴遊 > en''yuu\ ;
+元号 > gengou\ ;
+骨炭 > kottan\ ;
+発券 > hakken\ ;
+側泳 > sobaei\ ;
+英俊 > eishun\ ;
+異物 > ibutsu\ ;
+全体 > zentai\ ;
+環視 > kanshi\ ;
+脱藩 > dappan\ ;
+発刊 > hakkan\ ;
+公人 > koujin\ ;
+儀宸 > gishin\ ;
+係船 > keisen\ ;
+柔順 > juujun\ ;
+全会 > zenkai\ ;
+番犬 > banken\ ;
+馬身 > bashin\ ;
+白光 > hakkou\ ;
+痙攣 > keiren\ ;
+低迷 > teimei\ ;
+芯地 > shinji\ ;
+便船 > binsen\ ;
+全人 > zenjin\ ;
+腎臓 > jinzou\ ;
+馳走 > chisou\ ;
+発光 > hakkou\ ;
+元勲 > genkun\ ;
+腋臭 > wakiga\ ;
+停滞 > teitai\ ;
+先制 > sensei\ ;
+香道 > koudou\ ;
+英京 > eikyou\ ;
+痴態 > chitai\ ;
+山砦 > sansai\ ;
+寝言 > negoto\ ;
+佳調 > kachou\ ;
+高楼 > kourou\ ;
+転居 > tenkyo\ ;
+偉烈 > iretsu\ ;
+光冠 > koukan\ ;
+魯国 > rokoku\ ;
+脇見 > wakimi\ ;
+充分 > juubun\ ;
+模作 > mosaku\ ;
+皆伝 > kaiden\ ;
+痴情 > chijou\ ;
+孝養 > kouyou\ ;
+臨港 > rinkou\ ;
+崇敬 > suukei\ ;
+転寝 > gorone\ ;
+腐肉 > funiku\ ;
+官金 > kankin\ ;
+輸入 > yunyuu\ ;
+先兵 > senpei\ ;
+軍帽 > gunbou\ ;
+兇具 > kyougu\ ;
+俗縁 > zokuen\ ;
+軍師 > gunshi\ ;
+腹筋 > fukkin\ ;
+自涜 > jitoku\ ;
+膚着 > hadagi\ ;
+走行 > soukou\ ;
+容赦 > yousha\ ;
+尿素 > nyouso\ ;
+栄進 > eishin\ ;
+構外 > kougai\ ;
+楓林 > fuurin\ ;
+党人 > toujin\ ;
+臨海 > rinkai\ ;
+余賊 > yozoku\ ;
+検温 > ken''on\ ;
+寓言 > guugen\ ;
+党争 > tousou\ ;
+遅々 > chichi\ ;
+首輪 > kubiwa\ ;
+芸名 > geimei\ ;
+健気 > kenage\ ;
+高校 > koukou\ ;
+孝順 > koujun\ ;
+肛門 > koumon\ ;
+自注 > jichuu\ ;
+栄辱 > eijoku\ ;
+官邸 > kantei\ ;
+赤裸 > sekira\ ;
+致死 > chishi\ ;
+小船 > kobune\ ;
+伍長 > gochou\ ;
+艶容 > en''you\ ;
+屈筋 > kukkin\ ;
+容貌 > youbou\ ;
+小舟 > kobune\ ;
+発会 > hakkai\ ;
+自沈 > jichin\ ;
+官選 > kansen\ ;
+痛打 > tsuuda\ ;
+臭気 > shuuki\ ;
+家賃 > yachin\ ;
+登仙 > tousen\ ;
+芳名 > houmei\ ;
+学院 > gakuin\ ;
+魔境 > makyou\ ;
+舌根 > zekkon\ ;
+倉皇 > soukou\ ;
+崩御 > hougyo\ ;
+体貌 > taibou\ ;
+饅頭 > manjuu\ ;
+作譜 > sakufu\ ;
+併行 > heikou\ ;
+先便 > senbin\ ;
+小膝 > kohiza\ ;
+前々 > maemae\ ;
+岬湾 > kouwan\ ;
+倒産 > tousan\ ;
+小腹 > kobara\ ;
+先例 > senrei\ ;
+元値 > motone\ ;
+低資 > teishi\ ;
+骨法 > koppou\ ;
+生硬 > seikou\ ;
+良家 > ryouke\ ;
+光体 > koutai\ ;
+官辺 > kanpen\ ;
+苟且 > kousho\ ;
+層相 > sousou\ ;
+実車 > jissha\ ;
+先住 > senjuu\ ;
+密計 > mikkei\ ;
+優勢 > yuusei\ ;
+傲慢 > gouman\ ;
+介鱗 > kairin\ ;
+胸裏 > kyouri\ ;
+小脇 > kowaki\ ;
+寄託 > kitaku\ ;
+崇拝 > suuhai\ ;
+概念 > gainen\ ;
+用益 > youeki\ ;
+屯田 > tonden\ ;
+膾炙 > kaisha\ ;
+癸丑 > kichuu\ ;
+先代 > sendai\ ;
+駘蕩 > taitou\ ;
+停止 > teishi\ ;
+小股 > komata\ ;
+先人 > senjin\ ;
+転変 > tenpen\ ;
+転売 > tenbai\ ;
+側根 > sokkon\ ;
+完遂 > kansui\ ;
+実践 > jissen\ ;
+官軍 > kangun\ ;
+背走 > haisou\ ;
+身形 > minari\ ;
+校訓 > koukun\ ;
+小耳 > komimi\ ;
+聴音 > chouon\ ;
+校訂 > koutei\ ;
+興替 > koutai\ ;
+容認 > younin\ ;
+脱脂 > dasshi\ ;
+先主 > senshu\ ;
+会釈 > eshaku\ ;
+孔雀 > kujaku\ ;
+検死 > kenshi\ ;
+小者 > komono\ ;
+代願 > daigan\ ;
+養鶏 > youkei\ ;
+係累 > keirui\ ;
+肝銘 > kanmei\ ;
+体認 > tainin\ ;
+余角 > yokaku\ ;
+脱肛 > dakkou\ ;
+寝藁 > newara\ ;
+優先 > yuusen\ ;
+賽銭 > saisen\ ;
+偶有 > guuyuu\ ;
+密行 > mikkou\ ;
+元三 > ganzan\ ;
+膠状 > koujou\ ;
+体言 > taigen\ ;
+健棒 > kenbou\ ;
+刺々 > iraira\ ;
+身幅 > mihaba\ ;
+仲間 > nakama\ ;
+伝道 > dendou\ ;
+伴走 > bansou\ ;
+身巾 > mihaba\ ;
+孔門 > koumon\ ;
+転地 > tenchi\ ;
+良夜 > ryouya\ ;
+体要 > taiyou\ ;
+伝送 > densou\ ;
+贋造 > ganzou\ ;
+鮎並 > ainame\ ;
+船影 > sen''ei\ ;
+興敗 > kouhai\ ;
+転回 > tenkai\ ;
+臨検 > rinken\ ;
+対聯 > tairen\ ;
+癈兵 > haihei\ ;
+首謀 > shubou\ ;
+僕婢 > bokuhi\ ;
+棒状 > boujou\ ;
+高揚 > kouyou\ ;
+他領 > taryou\ ;
+聯隊 > rentai\ ;
+寸胴 > zundou\ ;
+僧堂 > soudou\ ;
+侍臣 > jishin\ ;
+験算 > kenzan\ ;
+生産 > seisan\ ;
+生生 > seisei\ ;
+人魚 > ningyo\ ;
+体裁 > teisai\ ;
+軍士 > gunshi\ ;
+便管 > benkan\ ;
+偶数 > guusuu\ ;
+便箋 > binsen\ ;
+養魚 > yougyo\ ;
+導線 > dousen\ ;
+聖餐 > seisan\ ;
+完走 > kansou\ ;
+伉配 > kouhai\ ;
+馬蝿 > umabae\ ;
+花信 > kashin\ ;
+宣誓 > sensei\ ;
+令閨 > reikei\ ;
+僧坊 > soubou\ ;
+対置 > taichi\ ;
+駐英 > chuuei\ ;
+肩身 > katami\ ;
+今風 > imafuu\ ;
+這々 > houhou\ ;
+芸人 > geinin\ ;
+柔道 > juudou\ ;
+層状 > soujou\ ;
+脱線 > dassen\ ;
+根菜 > konsai\ ;
+宣言 > sengen\ ;
+胡蝶 > kochou\ ;
+小糠 > konuka\ ;
+検案 > ken''an\ ;
+枝隊 > shitai\ ;
+定論 > teiron\ ;
+楽屋 > gakuya\ ;
+高所 > kousho\ ;
+病後 > byougo\ ;
+膿汁 > noujuu\ ;
+傲岸 > gougan\ ;
+小米 > kogome\ ;
+学部 > gakubu\ ;
+臨書 > rinsho\ ;
+査読 > sadoku\ ;
+腫瘍 > shuyou\ ;
+楽寝 > rakune\ ;
+封緘 > fuukan\ ;
+根茎 > konkei\ ;
+膨満 > bouman\ ;
+修理 > shuuri\ ;
+脱糞 > dappun\ ;
+信疑 > shingi\ ;
+実見 > jikken\ ;
+軍団 > gundan\ ;
+臘梅 > roubai\ ;
+定言 > teigen\ ;
+査証 > sashou\ ;
+倒潰 > toukai\ ;
+舌戦 > zessen\ ;
+尖端 > sentan\ ;
+官許 > kankyo\ ;
+高慢 > kouman\ ;
+柔軟 > juunan\ ;
+小箱 > kobako\ ;
+聖霊 > seirei\ ;
+癈人 > haijin\ ;
+転向 > tenkou\ ;
+密葬 > missou\ ;
+尽瘁 > jinsui\ ;
+佳良 > karyou\ ;
+尊簡 > sonkan\ ;
+導管 > douken\ ;
+射精 > shasei\ ;
+定見 > teiken\ ;
+保留 > horyuu\ ;
+構内 > kounai\ ;
+瓦礫 > gareki\ ;
+実装 > jissou\ ;
+極寒 > gokkan\ ;
+駅舎 > ekisha\ ;
+来鮮 > raisen\ ;
+人類 > jinrui\ ;
+林間 > rinkan\ ;
+宗規 > shuuki\ ;
+審美 > shinbi\ ;
+崩壊 > houkai\ ;
+亡魂 > boukon\ ;
+贈賄 > zouwai\ ;
+使聘 > shihei\ ;
+人頭 > jintou\ ;
+走者 > sousha\ ;
+孝道 > koudou\ ;
+実行 > jikkou\ ;
+軍営 > gun''ei\ ;
+僭取 > senshu\ ;
+様体 > youtai\ ;
+賜金 > shikin\ ;
+校葬 > kousou\ ;
+軽便 > keiben\ ;
+使者 > shisha\ ;
+官製 > kansei\ ;
+偶成 > guusei\ ;
+俗界 > zokkai\ ;
+転勤 > tenkin\ ;
+交驩 > koukan\ ;
+俗画 > zokuga\ ;
+松韻 > shouin\ ;
+対米 > taibei\ ;
+宋詞 > soushi\ ;
+平々 > heihei\ ;
+距爪 > kyosou\ ;
+僧号 > sougou\ ;
+脂肪 > shibou\ ;
+人面 > jinmen\ ;
+専管 > senkan\ ;
+肌身 > hadami\ ;
+良否 > ryouhi\ ;
+飼養 > shiyou\ ;
+島嶼 > tousho\ ;
+老齢 > rourei\ ;
+良吏 > ryouri\ ;
+松露 > shouro\ ;
+封筒 > fuutou\ ;
+飛鳥 > hichou\ ;
+脚絆 > kyahan\ ;
+偶感 > guukan\ ;
+貝類 > kairui\ ;
+付録 > furoku\ ;
+偏旁 > henbou\ ;
+代金 > daikin\ ;
+高弟 > koutei\ ;
+購買 > koubai\ ;
+脱稿 > dakkou\ ;
+偏斜 > hensha\ ;
+山海 > sankai\ ;
+密航 > mikkou\ ;
+寒肥 > kangoe\ ;
+対等 > taitou\ ;
+転写 > tensha\ ;
+会談 > kaidan\ ;
+舎弟 > shatei\ ;
+傾城 > keisei\ ;
+健投 > kentou\ ;
+馴致 > junchi\ ;
+魚介 > gyokai\ ;
+傘屋 > kasaya\ ;
+高年 > kounen\ ;
+併置 > heichi\ ;
+射程 > shatei\ ;
+伝言 > dengon\ ;
+車台 > shadai\ ;
+畳数 > jousuu\ ;
+対空 > taikuu\ ;
+会計 > kaikei\ ;
+作興 > sakkou\ ;
+聯邦 > renpou\ ;
+腸炎 > chouen\ ;
+人間 > ningen\ ;
+学費 > gakuhi\ ;
+東面 > toumen\ ;
+高工 > koukou\ ;
+校舎 > kousha\ ;
+小破 > shouha\ ;
+資金 > shikin\ ;
+高嶺 > takane\ ;
+飛魚 > tobiuo\ ;
+山水 > sansui\ ;
+余興 > yokyou\ ;
+山気 > yamake\ ;
+小石 > koishi\ ;
+興廃 > kouhai\ ;
+軍勢 > gunzei\ ;
+余臭 > yoshuu\ ;
+会見 > kaiken\ ;
+倒死 > toushi\ ;
+封禅 > houzen\ ;
+贅言 > zeigen\ ;
+現金 > genkin\ ;
+居然 > kyozen\ ;
+億万 > okuman\ ;
+検挙 > kenkyo\ ;
+軍功 > gunkou\ ;
+転倒 > tentou\ ;
+町歩 > choubu\ ;
+僧兵 > souhei\ ;
+疑惑 > giwaku\ ;
+島守 > toushu\ ;
+代返 > daihen\ ;
+停戦 > teisen\ ;
+楽土 > rakudo\ ;
+臨戦 > rinsen\ ;
+宝蔵 > houzou\ ;
+楽園 > rakuen\ ;
+至情 > shijou\ ;
+高峰 > kouhou\ ;
+林野 > rin''ya\ ;
+軍制 > gunsei\ ;
+京阪 > keihan\ ;
+赤線 > akasen\ ;
+家臣 > kashin\ ;
+交霊 > kourei\ ;
+他郷 > takyou\ ;
+軍刀 > guntou\ ;
+香草 > kousou\ ;
+痴呆 > chihou\ ;
+条項 > joukou\ ;
+軟便 > nanben\ ;
+小目 > komoku\ ;
+某誌 > boushi\ ;
+栄落 > eiraku\ ;
+車券 > shaken\ ;
+転住 > tenjuu\ ;
+用法 > youhou\ ;
+艙口 > soukou\ ;
+臆断 > okudan\ ;
+高山 > kouzan\ ;
+躍如 > yakujo\ ;
+高層 > kousou\ ;
+小皿 > kozara\ ;
+小皺 > kojiwa\ ;
+亡霊 > bourei\ ;
+交際 > kousai\ ;
+船型 > senkei\ ;
+赤経 > sekkei\ ;
+佞者 > neisha\ ;
+業報 > gouhou\ ;
+馬肉 > baniku\ ;
+体腔 > taikou\ ;
+偕成 > kaisei\ ;
+疑心 > gishin\ ;
+軍兵 > gunpei\ ;
+来電 > raiden\ ;
+東門 > toumon\ ;
+高専 > kousen\ ;
+健忘 > kenbou\ ;
+用水 > yousui\ ;
+車内 > shanai\ ;
+馭者 > gyosha\ ;
+魅了 > miryou\ ;
+二食 > nijiki\ ;
+船団 > sendan\ ;
+脂粉 > shifun\ ;
+現送 > gensou\ ;
+高官 > koukan\ ;
+至当 > shitou\ ;
+玄黄 > genkou\ ;
+体育 > taiiku\ ;
+軍僧 > gunsou\ ;
+履歴 > rireki\ ;
+僧侶 > souryo\ ;
+林道 > rindou\ ;
+貴重 > kichou\ ;
+余習 > yoshuu\ ;
+豊麗 > hourei\ ;
+値札 > nefuda\ ;
+低能 > teinou\ ;
+来阪 > raihan\ ;
+僧体 > soutai\ ;
+例祭 > reisai\ ;
+貴酬 > kishuu\ ;
+胚胎 > haitai\ ;
+僧伽 > sougya\ ;
+桧皮 > hiwada\ ;
+傾向 > keikou\ ;
+子豚 > kobuta\ ;
+貯金 > chokin\ ;
+楽員 > gakuin\ ;
+健康 > kenkou\ ;
+自得 > jitoku\ ;
+僭主 > senshu\ ;
+代走 > daisou\ ;
+代赭 > taisha\ ;
+肺葉 > haiyou\ ;
+僭上 > senjou\ ;
+臨御 > ringyo\ ;
+貧鉱 > hinkou\ ;
+偏愛 > hen''ai\ ;
+偽学 > gigaku\ ;
+傑士 > kesshi\ ;
+首脳 > shunou\ ;
+軍使 > gunshi\ ;
+生残 > seizan\ ;
+生死 > seishi\ ;
+板金 > bankin\ ;
+棟木 > munagi\ ;
+番所 > bansho\ ;
+路標 > rohyou\ ;
+眈々 > tantan\ ;
+男根 > dankon\ ;
+低置 > teichi\ ;
+首肯 > shukou\ ;
+車体 > shatai\ ;
+船員 > sen''in\ ;
+病因 > byouin\ ;
+字訳 > jiyaku\ ;
+軍令 > gunrei\ ;
+偏性 > hensei\ ;
+棍棒 > konbou\ ;
+層楼 > sourou\ ;
+停年 > teinen\ ;
+傘地 > kasaji\ ;
+臨幸 > rinkou\ ;
+軍人 > gunjin\ ;
+自席 > jiseki\ ;
+予震 > yoshin\ ;
+官舎 > kansha\ ;
+騒然 > souzen\ ;
+高大 > koudai\ ;
+臥床 > gashou\ ;
+山林 > sanrin\ ;
+極右 > kyokuu\ ;
+木魂 > kodama\ ;
+高士 > koushi\ ;
+腎炎 > jin''en\ ;
+山村 > sanson\ ;
+人選 > jinsen\ ;
+小猫 > koneko\ ;
+仮託 > kataku\ ;
+対生 > taisei\ ;
+棒杭 > bougui\ ;
+船台 > sendai\ ;
+人道 > jindou\ ;
+骨幹 > kokkan\ ;
+棒杙 > bougui\ ;
+馬糧 > baryou\ ;
+資財 > shizai\ ;
+馬糞 > maguso\ ;
+人造 > jinzou\ ;
+僅僅 > kinkin\ ;
+極印 > gokuin\ ;
+代謝 > taisha\ ;
+代講 > daikou\ ;
+会葬 > kaisou\ ;
+孝行 > koukou\ ;
+甲板 > kouhan\ ;
+車上 > shajou\ ;
+至尊 > shison\ ;
+舅姑 > kyuuko\ ;
+争闘 > soutou\ ;
+興奮 > koufun\ ;
+艦上 > kanjou\ ;
+肺臓 > haizou\ ;
+身内 > miuchi\ ;
+小物 > komono\ ;
+高堂 > koudou\ ;
+小牛 > koushi\ ;
+身共 > midomo\ ;
+瑶緘 > youkan\ ;
+債券 > saiken\ ;
+至宝 > shihou\ ;
+体系 > taikei\ ;
+偏平 > henpei\ ;
+身元 > mimoto\ ;
+察知 > satchi\ ;
+生検 > seiken\ ;
+京都 > kyouto\ ;
+末香 > makkou\ ;
+至孝 > shikou\ ;
+木馬 > mokuba\ ;
+側女 > sobame\ ;
+本館 > honkan\ ;
+代言 > daigen\ ;
+東郊 > toukou\ ;
+肺胞 > haihou\ ;
+高地 > kouchi\ ;
+東邦 > touhou\ ;
+聖賢 > seiken\ ;
+人車 > jinsha\ ;
+痴人 > chijin\ ;
+朱顔 > shugan\ ;
+人身 > hitomi\ ;
+用材 > youzai\ ;
+交配 > kouhai\ ;
+東遷 > tousen\ ;
+肺肝 > haikan\ ;
+足湯 > ashiyu\ ;
+定置 > teichi\ ;
+傾倒 > keitou\ ;
+業務 > gyoumu\ ;
+倍数 > baisuu\ ;
+桑田 > souden\ ;
+老雄 > rouyuu\ ;
+船出 > funade\ ;
+自宅 > jitaku\ ;
+脇目 > wakime\ ;
+検屍 > kenshi\ ;
+本願 > hongan\ ;
+本題 > hondai\ ;
+乱雲 > ran''un\ ;
+疾呼 > shikko\ ;
+傭兵 > youhei\ ;
+船具 > funagu\ ;
+家筋 > iesuji\ ;
+豊饒 > houjou\ ;
+本音 > hon''ne\ ;
+付託 > futaku\ ;
+会舘 > kaikan\ ;
+末項 > makkou\ ;
+生来 > seirai\ ;
+交遊 > kouyuu\ ;
+倦憊 > kenpai\ ;
+枢要 > suuyou\ ;
+颱風 > taifuu\ ;
+実線 > jissen\ ;
+寝癖 > neguse\ ;
+臍帯 > seitai\ ;
+検定 > kentei\ ;
+来邸 > raitei\ ;
+腹案 > fukuan\ ;
+生木 > namaki\ ;
+草々 > sousou\ ;
+余程 > yohodo\ ;
+代行 > daikou\ ;
+島司 > toushi\ ;
+傲倨 > goukyo\ ;
+骨子 > kosshi\ ;
+至大 > shidai\ ;
+使用 > shiyou\ ;
+乱闘 > rantou\ ;
+来遊 > raiyuu\ ;
+東軍 > tougun\ ;
+展望 > tenbou\ ;
+耳輪 > mimiwa\ ;
+余禄 > yoroku\ ;
+小潮 > koshio\ ;
+審理 > shinri\ ;
+梶木 > kajiki\ ;
+貧賤 > hinsen\ ;
+貧賎 > hinsen\ ;
+来迎 > raigou\ ;
+有髪 > uhatsu\ ;
+赤痢 > sekiri\ ;
+便法 > benpou\ ;
+船倉 > sensou\ ;
+低空 > teikuu\ ;
+木霊 > kodama\ ;
+伝聞 > denbun\ ;
+本隊 > hontai\ ;
+岩層 > gansou\ ;
+肝臓 > kanzou\ ;
+朝顔 > asagao\ ;
+身丈 > mitake\ ;
+倦怠 > kentai\ ;
+本陣 > honjin\ ;
+本院 > hon''in\ ;
+尨毛 > mukuge\ ;
+定紋 > joumon\ ;
+養豚 > youton\ ;
+付表 > fuhyou\ ;
+家禄 > karoku\ ;
+朱門 > shumon\ ;
+肝腎 > kanjin\ ;
+併用 > heiyou\ ;
+高吟 > kougin\ ;
+木陰 > kokage\ ;
+船体 > sentai\ ;
+高名 > koumei\ ;
+倒懸 > touken\ ;
+債主 > saishu\ ;
+現行 > genkou\ ;
+環状 > kanjou\ ;
+来車 > raisha\ ;
+背筋 > haikin\ ;
+山手 > yamate\ ;
+腋毛 > wakige\ ;
+俳文 > haibun\ ;
+便殿 > benden\ ;
+最高 > saikou\ ;
+梗概 > kougai\ ;
+肝胆 > kantan\ ;
+高原 > kougen\ ;
+朝露 > chouro\ ;
+屯所 > tonsho\ ;
+傭人 > younin\ ;
+賀表 > gahyou\ ;
+朝霞 > chouka\ ;
+宝算 > housan\ ;
+茶々 > chacha\ ;
+風霜 > fuusou\ ;
+起爆 > kibaku\ ;
+興味 > kyoumi\ ;
+耐酸 > taisan\ ;
+健在 > kenzai\ ;
+肉芽 > nikuga\ ;
+臨場 > rinjou\ ;
+島内 > tounai\ ;
+用捨 > yousha\ ;
+孤舟 > koshuu\ ;
+二進 > nishin\ ;
+村道 > sondou\ ;
+偏好 > henkou\ ;
+二通 > nitsuu\ ;
+冥々 > meimei\ ;
+子葉 > shiyou\ ;
+肯綮 > koukei\ ;
+佩用 > haiyou\ ;
+乗降 > joukou\ ;
+事迹 > jiseki\ ;
+官等 > kantou\ ;
+値幅 > nehaba\ ;
+玄関 > genkan\ ;
+風防 > fuubou\ ;
+尚武 > shoubu\ ;
+枯葉 > kareha\ ;
+家督 > katoku\ ;
+偶吟 > guukin\ ;
+伝線 > densen\ ;
+値巾 > nehaba\ ;
+自国 > jikoku\ ;
+臨在 > rinzai\ ;
+余白 > yohaku\ ;
+宿痾 > shukua\ ;
+密生 > missei\ ;
+寄留 > kiryuu\ ;
+来賓 > raihin\ ;
+至善 > shizen\ ;
+伝統 > dentou\ ;
+画心 > gashin\ ;
+導水 > dousui\ ;
+来貢 > raikou\ ;
+男性 > dansei\ ;
+居敷 > ishiki\ ;
+脱法 > dappou\ ;
+値嵩 > negasa\ ;
+検地 > kenchi\ ;
+豪邸 > goutei\ ;
+健啖 > kentan\ ;
+余病 > yobyou\ ;
+自嘲 > jichou\ ;
+負託 > futaku\ ;
+老酒 > roushu\ ;
+主題 > shudai\ ;
+低目 > hikume\ ;
+作画 > sakuga\ ;
+獣類 > juurui\ ;
+豪邁 > goumai\ ;
+射法 > shahou\ ;
+交譲 > koujou\ ;
+事蹟 > jiseki\ ;
+山径 > sankei\ ;
+環濠 > kangou\ ;
+駄物 > damono\ ;
+脱水 > dassui\ ;
+豪遊 > gouyuu\ ;
+飛躍 > hiyaku\ ;
+高僧 > kousou\ ;
+致命 > chimei\ ;
+乱酔 > ransui\ ;
+乱酒 > ranshu\ ;
+舎兄 > shakei\ ;
+仰臥 > gyouga\ ;
+番外 > bangai\ ;
+岩塩 > gan''en\ ;
+生成 > seisei\ ;
+偏在 > henzai\ ;
+事跡 > jiseki\ ;
+何番 > nanban\ ;
+書風 > shofuu\ ;
+脳死 > noushi\ ;
+二足 > nisoku\ ;
+宗祖 > shuuso\ ;
+羽風 > hakaze\ ;
+豪農 > gounou\ ;
+島人 > toujin\ ;
+侠気 > kyouki\ ;
+画幅 > gafuku\ ;
+有限 > yuugen\ ;
+書類 > shorui\ ;
+香盒 > kougou\ ;
+画帳 > gachou\ ;
+生憎 > ainiku\ ;
+高値 > takane\ ;
+中飛 > chuuhi\ ;
+枝葉 > shiyou\ ;
+谷間 > tanima\ ;
+交詢 > koujun\ ;
+丹青 > tansei\ ;
+東西 > touzai\ ;
+臭味 > shuumi\ ;
+琴線 > kinsen\ ;
+胡瓜 > kyuuri\ ;
+再々 > saisai\ ;
+飛越 > hietsu\ ;
+生態 > seitai\ ;
+島主 > toushu\ ;
+来談 > raidan\ ;
+倉廩 > sourin\ ;
+腐朽 > fukyuu\ ;
+安穏 > an''non\ ;
+値安 > neyasu\ ;
+代艦 > daikan\ ;
+寸法 > sunpou\ ;
+胎盤 > taiban\ ;
+老農 > rounou\ ;
+乱造 > ranzou\ ;
+傍人 > boujin\ ;
+屈指 > kusshi\ ;
+育種 > ikushu\ ;
+検問 > kenmon\ ;
+梅林 > bairin\ ;
+木釘 > kikugi\ ;
+有閑 > yuukan\ ;
+用心 > youjin\ ;
+男工 > dankou\ ;
+豼貅 > hikyuu\ ;
+月間 > gekkan\ ;
+山巓 > santen\ ;
+仏葬 > bussou\ ;
+借家 > shakka\ ;
+書面 > shomen\ ;
+山嶺 > sanrei\ ;
+来訪 > raihou\ ;
+中音 > chuuon\ ;
+用役 > youeki\ ;
+珪藻 > keisou\ ;
+贈答 > zoutou\ ;
+老輩 > rouhai\ ;
+聾者 > rousha\ ;
+桑海 > soukai\ ;
+小楯 > kodate\ ;
+柱礎 > chuuso\ ;
+養蜂 > youhou\ ;
+実相 > jissou\ ;
+事象 > jishou\ ;
+寒点 > kanten\ ;
+聚落 > juraku\ ;
+検品 > kenpin\ ;
+内々 > nainai\ ;
+偶像 > guuzou\ ;
+存置 > sonchi\ ;
+本邸 > hontei\ ;
+体現 > taigen\ ;
+番地 > banchi\ ;
+東行 > toukou\ ;
+本邦 > honpou\ ;
+甲巡 > koujun\ ;
+来観 > raikan\ ;
+養蚕 > yousan\ ;
+本選 > honsen\ ;
+頽齢 > tairei\ ;
+環海 > kankai\ ;
+木部 > mokubu\ ;
+桃源 > tougen\ ;
+本道 > hondou\ ;
+居所 > kyosho\ ;
+風鈴 > fuurin\ ;
+路床 > roshou\ ;
+偽作 > gisaku\ ;
+乱軍 > rangun\ ;
+賞美 > shoubi\ ;
+展性 > tensei\ ;
+貯蔵 > chozou\ ;
+専横 > sen''ou\ ;
+専権 > senken\ ;
+倡婦 > shoufu\ ;
+朝野 > chouya\ ;
+胚珠 > haishu\ ;
+未進 > mishin\ ;
+休符 > kyuufu\ ;
+生彩 > seisai\ ;
+風采 > fuusai\ ;
+胎生 > taisei\ ;
+産廃 > sanpai\ ;
+令聞 > reibun\ ;
+俳徊 > haikai\ ;
+自力 > jiriki\ ;
+係数 > keisuu\ ;
+中陰 > chuuin\ ;
+検印 > ken''in\ ;
+町家 > chouka\ ;
+少林 > shorin\ ;
+健全 > kenzen\ ;
+偏向 > henkou\ ;
+寮母 > ryoubo\ ;
+興亡 > koubou\ ;
+画学 > gagaku\ ;
+将棋 > shougi\ ;
+互角 > gokaku\ ;
+質素 > shisso\ ;
+根源 > kongen\ ;
+柳眉 > ryuubi\ ;
+争論 > souron\ ;
+走法 > souhou\ ;
+上騰 > joutou\ ;
+山家 > yamaga\ ;
+会社 > kaisha\ ;
+実生 > mishou\ ;
+末輩 > mappai\ ;
+属差 > zokusa\ ;
+不馴 > funare\ ;
+生年 > seinen\ ;
+騒擾 > soujou\ ;
+椿事 > chinji\ ;
+寮歌 > ryouka\ ;
+首班 > shuhan\ ;
+定番 > teiban\ ;
+偶人 > guujin\ ;
+男子 > danshi\ ;
+代署 > daisho\ ;
+代置 > daichi\ ;
+肺癌 > haigan\ ;
+価格 > kakaku\ ;
+臨写 > rinsha\ ;
+官界 > kankai\ ;
+饌米 > senmai\ ;
+趣旨 > shushi\ ;
+今般 > konpan\ ;
+尊来 > sonrai\ ;
+梯形 > teikei\ ;
+轟々 > gougou\ ;
+膨大 > boudai\ ;
+二見 > futami\ ;
+自儘 > jimama\ ;
+果肉 > kaniku\ ;
+検分 > kenbun\ ;
+両院 > ryouin\ ;
+甲子 > kasshi\ ;
+一驚 > ikkyou\ ;
+少時 > shouji\ ;
+五行 > gogyou\ ;
+群青 > gunjou\ ;
+至便 > shiben\ ;
+尊書 > sonsho\ ;
+予覚 > yokaku\ ;
+小昼 > kohiru\ ;
+何点 > nanten\ ;
+曝露 > bakuro\ ;
+小春 > koharu\ ;
+余瀝 > yoreki\ ;
+宝珠 > houshu\ ;
+対校 > taikou\ ;
+子細 > shisai\ ;
+献饌 > kensen\ ;
+信徒 > shinto\ ;
+番号 > bangou\ ;
+番台 > bandai\ ;
+一駄 > ichida\ ;
+脇毛 > wakige\ ;
+類題 > ruidai\ ;
+曜霊 > yourei\ ;
+根治 > konchi\ ;
+寺格 > jikaku\ ;
+偉力 > iryoku\ ;
+寡欲 > kayoku\ ;
+有配 > yuuhai\ ;
+致仕 > chishi\ ;
+乗車 > jousha\ ;
+自修 > jishuu\ ;
+自信 > jishin\ ;
+仕置 > shioki\ ;
+風車 > fuusha\ ;
+暗黙 > anmoku\ ;
+山女 > yamame\ ;
+京葉 > keiyou\ ;
+暗黒 > ankoku\ ;
+封書 > fuusho\ ;
+仏者 > bussha\ ;
+棄子 > sutego\ ;
+倹吝 > kenrin\ ;
+胸泳 > kyouei\ ;
+属官 > zokkan\ ;
+倒壊 > toukai\ ;
+自供 > jikyou\ ;
+三韓 > sankan\ ;
+予表 > yohyou\ ;
+万頃 > bankei\ ;
+一飛 > ichihi\ ;
+起業 > kigyou\ ;
+偏光 > henkou\ ;
+桔梗 > kikyou\ ;
+根毛 > konmou\ ;
+余滴 > yoteki\ ;
+倍大 > baidai\ ;
+自作 > jisaku\ ;
+育生 > ikusei\ ;
+画境 > gakyou\ ;
+木賊 > tokusa\ ;
+尊敬 > sonkei\ ;
+男声 > dansei\ ;
+上面 > joumen\ ;
+居常 > kyojou\ ;
+代納 > dainou\ ;
+寒気 > samuke\ ;
+至上 > shijou\ ;
+三面 > sanmen\ ;
+尊攘 > sonjou\ ;
+停会 > teikai\ ;
+倍増 > baizou\ ;
+検便 > kenben\ ;
+生存 > seizon\ ;
+屑屋 > kuzuya\ ;
+願面 > ganmen\ ;
+山塞 > sansai\ ;
+風趣 > fuushu\ ;
+甲声 > kangoe\ ;
+暴騰 > boutou\ ;
+山塊 > sankai\ ;
+専断 > sendan\ ;
+胸毛 > munage\ ;
+山場 > yamaba\ ;
+屏居 > heikyo\ ;
+万雷 > banrai\ ;
+検体 > kentai\ ;
+官版 > kanpan\ ;
+三階 > sangai\ ;
+寝様 > nezama\ ;
+顔面 > ganmen\ ;
+上限 > jougen\ ;
+朋輩 > houbai\ ;
+専攻 > senkou\ ;
+仁者 > jinsha\ ;
+番兵 > banpei\ ;
+乱視 > ranshi\ ;
+朝賀 > chouga\ ;
+対数 > taisuu\ ;
+審査 > shinsa\ ;
+寝業 > newaza\ ;
+本論 > honron\ ;
+借問 > shamon\ ;
+曾遊 > souyuu\ ;
+臣事 > shinji\ ;
+琢磨 > takuma\ ;
+腹子 > harako\ ;
+桟敷 > sajiki\ ;
+対支 > taishi\ ;
+養育 > youiku\ ;
+風貌 > fuubou\ ;
+伯父 > hakufu\ ;
+本誌 > honshi\ ;
+子種 > kodane\ ;
+仔細 > shisai\ ;
+東航 > toukou\ ;
+小指 > koyubi\ ;
+最近 > saikin\ ;
+未読 > midoku\ ;
+仮称 > kashou\ ;
+体液 > taieki\ ;
+一隻 > isseki\ ;
+寸断 > sundan\ ;
+生姜 > shouga\ ;
+三門 > sanmon\ ;
+老衰 > rousui\ ;
+苛々 > iraira\ ;
+低減 > teigen\ ;
+臣下 > shinka\ ;
+倡和 > shouwa\ ;
+未詳 > mishou\ ;
+腐心 > fushin\ ;
+暴風 > boufuu\ ;
+余沢 > yotaku\ ;
+定点 > teiten\ ;
+書道 > shodou\ ;
+中部 > chuubu\ ;
+偏人 > henjin\ ;
+倦厭 > ken''en\ ;
+学監 > gakkan\ ;
+養老 > yourou\ ;
+肌着 > hadagi\ ;
+産声 > ubugoe\ ;
+飴色 > ameiro\ ;
+田地 > denchi\ ;
+朝議 > chougi\ ;
+田園 > den''en\ ;
+小我 > shouga\ ;
+婦長 > fuchou\ ;
+香港 > honkon\ ;
+梵妻 > bonsai\ ;
+桂林 > keirin\ ;
+一間 > hitoma\ ;
+存知 > zonchi\ ;
+中途 > chuuto\ ;
+琺瑯 > hourou\ ;
+画商 > gashou\ ;
+来航 > raikou\ ;
+頻頻 > hinpin\ ;
+尻尾 > shippo\ ;
+校正 > kousei\ ;
+例文 > reibun\ ;
+甚大 > jindai\ ;
+例数 > reisuu\ ;
+二葉 > futaba\ ;
+飼育 > shiiku\ ;
+俳壇 > haidan\ ;
+屯営 > ton''ei\ ;
+来臨 > rairin\ ;
+梵天 > bonten\ ;
+用地 > youchi\ ;
+貴紳 > kishin\ ;
+暴露 > bakuro\ ;
+寒梅 > kanbai\ ;
+根柢 > kontei\ ;
+射手 > shashu\ ;
+何歳 > nansai\ ;
+瑶池 > youchi\ ;
+学界 > gakkai\ ;
+栗毛 > kurige\ ;
+尊慮 > sonryo\ ;
+住民 > juumin\ ;
+驚喜 > kyouki\ ;
+少恩 > shouon\ ;
+産地 > sanchi\ ;
+俗字 > zokuji\ ;
+対抗 > taikou\ ;
+企画 > kikaku\ ;
+甘塩 > amajio\ ;
+赤本 > akahon\ ;
+風解 > fuukai\ ;
+併有 > heiyuu\ ;
+屋外 > okugai\ ;
+馬橇 > basori\ ;
+中身 > nakami\ ;
+理神 > rishin\ ;
+佳木 > kaboku\ ;
+根本 > nemoto\ ;
+聖算 > seisan\ ;
+人絹 > jinken\ ;
+主賓 > shuhin\ ;
+生地 > seichi\ ;
+風見 > kazami\ ;
+対戦 > taisen\ ;
+他称 > tashou\ ;
+望見 > bouken\ ;
+香水 > kousui\ ;
+寒村 > kanson\ ;
+杉菜 > sugina\ ;
+留保 > ryuuho\ ;
+能書 > nousho\ ;
+作業 > sagyou\ ;
+付票 > fuhyou\ ;
+倨傲 > kyogou\ ;
+根暗 > nekura\ ;
+跡地 > atochi\ ;
+人糞 > jinpun\ ;
+学理 > gakuri\ ;
+脳性 > nousei\ ;
+画匠 > gashou\ ;
+余業 > yogyou\ ;
+小形 > kogata\ ;
+信士 > shinji\ ;
+腫大 > shudai\ ;
+乾菜 > kansai\ ;
+月謝 > gessha\ ;
+密栓 > missen\ ;
+寒暖 > kandan\ ;
+寒暑 > kansho\ ;
+子癇 > shikan\ ;
+風袋 > fuutai\ ;
+倥偬 > kousou\ ;
+小引 > shouin\ ;
+体様 > taiyou\ ;
+人籟 > jinrai\ ;
+三重 > sanjuu\ ;
+財経 > zaikei\ ;
+存生 > zonjou\ ;
+字画 > jikaku\ ;
+万金 > mankin\ ;
+尊影 > son''ei\ ;
+根方 > nekata\ ;
+用品 > youhin\ ;
+仮病 > kebyou\ ;
+上酒 > joushu\ ;
+宗派 > shuuha\ ;
+定法 > jouhou\ ;
+家業 > kagyou\ ;
+献金 > kenkin\ ;
+環指 > kanshi\ ;
+用命 > youmei\ ;
+胡椒 > koshou\ ;
+聯盟 > renmei\ ;
+胆汁 > tanjuu\ ;
+琥珀 > kohaku\ ;
+能文 > noubun\ ;
+居城 > kyojou\ ;
+主謀 > shubou\ ;
+宗法 > souhou\ ;
+小幅 > kohaba\ ;
+孤独 > kodoku\ ;
+産品 > sanpin\ ;
+願酒 > ganshu\ ;
+東経 > toukei\ ;
+乾芻 > kansuu\ ;
+完済 > kansai\ ;
+不適 > futeki\ ;
+密書 > missho\ ;
+股火 > matabi\ ;
+須髯 > shuzen\ ;
+導師 > doushi\ ;
+美醜 > bishuu\ ;
+専従 > senjuu\ ;
+一里 > ichiri\ ;
+寵愛 > chouai\ ;
+宝殿 > houden\ ;
+乳菓 > nyuuka\ ;
+小差 > shousa\ ;
+珠算 > shuzan\ ;
+不通 > futsuu\ ;
+脳幹 > noukan\ ;
+供応 > kyouou\ ;
+玉藻 > tamamo\ ;
+肝炎 > kan''en\ ;
+三選 > sansen\ ;
+尋常 > jinjou\ ;
+修営 > shuuei\ ;
+丹誠 > tansei\ ;
+胡桃 > kurumi\ ;
+万邦 > banpou\ ;
+老荘 > rousou\ ;
+官民 > kanmin\ ;
+乾舷 > kangen\ ;
+属吏 > zokuri\ ;
+枡目 > masume\ ;
+丁酉 > teiyuu\ ;
+聞知 > bunchi\ ;
+家格 > kakaku\ ;
+越後 > echigo\ ;
+生命 > seimei\ ;
+尚尚 > naonao\ ;
+三連 > sanren\ ;
+義足 > gisoku\ ;
+主計 > shukei\ ;
+校本 > kouhon\ ;
+暮鐘 > boshou\ ;
+封建 > houken\ ;
+対当 > taitou\ ;
+木蔭 > kokage\ ;
+倒像 > touzou\ ;
+羅針 > rashin\ ;
+射幸 > shakou\ ;
+梵唄 > bonbai\ ;
+上辺 > jouhen\ ;
+一郭 > ikkaku\ ;
+一部 > ichibu\ ;
+定款 > teikan\ ;
+何枚 > nanmai\ ;
+寸志 > sunshi\ ;
+佞智 > neichi\ ;
+主観 > shukan\ ;
+家柄 > iegara\ ;
+小島 > kojima\ ;
+本葬 > honsou\ ;
+産卵 > sanran\ ;
+人種 > jinshu\ ;
+完治 > kanchi\ ;
+何条 > nanjou\ ;
+主要 > shuyou\ ;
+代用 > daiyou\ ;
+書誌 > shoshi\ ;
+甲兵 > kouhei\ ;
+伯母 > hakubo\ ;
+俳名 > haimei\ ;
+実権 > jikken\ ;
+俳号 > haigou\ ;
+越度 > ochido\ ;
+飛翔 > hishou\ ;
+予習 > yoshuu\ ;
+義賊 > gizoku\ ;
+寝技 > newaza\ ;
+小山 > koyama\ ;
+三輪 > sanrin\ ;
+尊崇 > sonsuu\ ;
+俳友 > haiyuu\ ;
+一週 > isshuu\ ;
+休演 > kyuuen\ ;
+一通 > ittsuu\ ;
+脇戸 > wakido\ ;
+三軽 > sankei\ ;
+尿器 > nyouki\ ;
+寝所 > shinjo\ ;
+尨大 > boudai\ ;
+三軍 > sangun\ ;
+狭霧 > sagiri\ ;
+子猫 > koneko\ ;
+根拠 > konkyo\ ;
+寡慾 > kayoku\ ;
+井綱 > idzuna\ ;
+万軍 > bangun\ ;
+驕児 > kyouji\ ;
+豪胆 > goutan\ ;
+東端 > toutan\ ;
+本草 > honzou\ ;
+生動 > seidou\ ;
+費目 > himoku\ ;
+書見 > shoken\ ;
+仙界 > senkai\ ;
+官権 > kanken\ ;
+更訂 > koutei\ ;
+産前 > sanzen\ ;
+小宴 > shouen\ ;
+玉菜 > tamana\ ;
+産制 > sansei\ ;
+孔版 > kouhan\ ;
+末茶 > matcha\ ;
+飯米 > hanmai\ ;
+順風 > junpuu\ ;
+朱色 > shuiro\ ;
+実検 > jikken\ ;
+伝法 > denpou\ ;
+画伯 > gahaku\ ;
+用兵 > youhei\ ;
+狭隘 > kyouai\ ;
+獣行 > juukou\ ;
+不足 > fusoku\ ;
+資産 > shisan\ ;
+嫁菜 > yomena\ ;
+五経 > gokyou\ ;
+駅手 > ekishu\ ;
+嬉笑 > kishou\ ;
+事績 > jiseki\ ;
+生前 > seizen\ ;
+棄児 > sutego\ ;
+子牛 > koushi\ ;
+他生 > tashou\ ;
+下足 > gesoku\ ;
+何方 > donata\ ;
+豚舎 > tonsha\ ;
+足場 > ashiba\ ;
+家族 > kazoku\ ;
+順順 > junjun\ ;
+一身 > isshin\ ;
+本船 > honsen\ ;
+肥沃 > hiyoku\ ;
+対岸 > taigan\ ;
+梱包 > konpou\ ;
+一蹴 > isshuu\ ;
+林産 > rinsan\ ;
+人知 > jinchi\ ;
+罰金 > bakkin\ ;
+家教 > kakyou\ ;
+令状 > reijou\ ;
+例年 > reinen\ ;
+狭間 > hazama\ ;
+脛巾 > habaki\ ;
+趣好 > shukou\ ;
+履修 > rishuu\ ;
+信受 > shinju\ ;
+膝下 > shikka\ ;
+二級 > nikyuu\ ;
+赫怒 > kakudo\ ;
+本膳 > honzen\ ;
+起床 > kishou\ ;
+一路 > ichiro\ ;
+脆性 > zeisei\ ;
+体操 > taisou\ ;
+使役 > shieki\ ;
+中衛 > chuuei\ ;
+晩餐 > bansan\ ;
+介甲 > kaikou\ ;
+肝油 > kan''yu\ ;
+山上 > sanjou\ ;
+群論 > gunron\ ;
+小姓 > koshou\ ;
+用便 > youben\ ;
+俳優 > haiyuu\ ;
+今生 > konjou\ ;
+少女 > shoujo\ ;
+人相 > ninsou\ ;
+予約 > yoyaku\ ;
+供宴 > kyouen\ ;
+人目 > hitome\ ;
+用例 > yourei\ ;
+甘党 > amatou\ ;
+貧相 > hinsou\ ;
+背景 > haikei\ ;
+駒座 > komaza\ ;
+俗吏 > zokuri\ ;
+安楽 > anraku\ ;
+根性 > konjou\ ;
+尖塔 > sentou\ ;
+世評 > sehyou\ ;
+乗艦 > joukan\ ;
+並行 > heikou\ ;
+班田 > handen\ ;
+有蓋 > yuugai\ ;
+仔猫 > koneko\ ;
+定本 > teihon\ ;
+用件 > youken\ ;
+乗船 > jousen\ ;
+騰勢 > tousei\ ;
+実景 > jikkei\ ;
+屋内 > okunai\ ;
+学派 > gakuha\ ;
+風船 > fuusen\ ;
+用人 > younin\ ;
+柔毛 > juumou\ ;
+来社 > raisha\ ;
+現状 > genjou\ ;
+音響 > onkyou\ ;
+木肌 > kihada\ ;
+尊大 > sondai\ ;
+脳天 > nouten\ ;
+媚薬 > biyaku\ ;
+風致 > fuuchi\ ;
+不調 > fuchou\ ;
+寝床 > nedoko\ ;
+某氏 > boushi\ ;
+五穀 > gokoku\ ;
+世襲 > seshuu\ ;
+老練 > rouren\ ;
+生体 > seitai\ ;
+仔牛 > koushi\ ;
+不詳 > fushou\ ;
+実施 > jisshi\ ;
+頸輪 > kubiwa\ ;
+万謝 > bansha\ ;
+三論 > sanron\ ;
+不評 > fuhyou\ ;
+俗務 > zokumu\ ;
+駅弁 > ekiben\ ;
+晩霜 > bansou\ ;
+侠女 > kyoujo\ ;
+本署 > honsho\ ;
+寝巻 > nemaki\ ;
+村童 > sondou\ ;
+実数 > jissuu\ ;
+能弁 > nouben\ ;
+人生 > jinsei\ ;
+守株 > shushu\ ;
+何才 > nansai\ ;
+争端 > soutan\ ;
+根底 > kontei\ ;
+中蘇 > chuuso\ ;
+一議 > ichigi\ ;
+伴星 > bansei\ ;
+飛竜 > hiryuu\ ;
+根幹 > konkan\ ;
+赤帽 > akabou\ ;
+小型 > kogata\ ;
+養生 > youjou\ ;
+杯盤 > haiban\ ;
+暴走 > bousou\ ;
+上計 > joukei\ ;
+尊堂 > sondou\ ;
+格差 > kakusa\ ;
+専売 > senbai\ ;
+宿意 > shukui\ ;
+不覚 > fukaku\ ;
+俳人 > haijin\ ;
+完本 > kanpon\ ;
+耳目 > jimoku\ ;
+定数 > teisuu\ ;
+佞悪 > neiaku\ ;
+俯伏 > fufuku\ ;
+献詠 > ken''ei\ ;
+富強 > fukyou\ ;
+騙取 > henshu\ ;
+俯仰 > fugyou\ ;
+上覧 > jouran\ ;
+万言 > mangen\ ;
+対外 > taigai\ ;
+住所 > juusho\ ;
+財界 > zaikai\ ;
+耕種 > koushu\ ;
+風聞 > fuubun\ ;
+上覆 > uwaooi\ ;
+容態 > youdai\ ;
+射場 > shajou\ ;
+屍体 > shitai\ ;
+財産 > zaisan\ ;
+一語 > ichigo\ ;
+寒帯 > kantai\ ;
+寵姫 > chouki\ ;
+献言 > kengen\ ;
+伝染 > densen\ ;
+寡少 > kashou\ ;
+両虎 > ryouko\ ;
+猥談 > waidan\ ;
+越境 > ekkyou\ ;
+小器 > shouki\ ;
+上製 > jousei\ ;
+本線 > honsen\ ;
+伎楽 > gigaku\ ;
+体感 > taikan\ ;
+俗儒 > zokuju\ ;
+乃至 > naishi\ ;
+上裁 > jousai\ ;
+伝来 > denrai\ ;
+色々 > iroiro\ ;
+寝小 > neshou\ ;
+本絹 > honken\ ;
+飯盒 > hangou\ ;
+下表 > kahyou\ ;
+賤民 > senmin\ ;
+居住 > kyojuu\ ;
+腕前 > udemae\ ;
+仮泊 > kahaku\ ;
+余徳 > yotoku\ ;
+本紙 > honshi\ ;
+趨向 > suukou\ ;
+佞弁 > neiben\ ;
+中華 > chuuka\ ;
+余得 > yotoku\ ;
+害悪 > gaiaku\ ;
+封地 > houchi\ ;
+完敗 > kanpai\ ;
+交番 > kouban\ ;
+俚俗 > rizoku\ ;
+題言 > daigen\ ;
+屋上 > okujou\ ;
+木組 > kigumi\ ;
+有能 > yuunou\ ;
+尚古 > shouko\ ;
+騒動 > soudou\ ;
+背戻 > hairei\ ;
+例外 > reigai\ ;
+宣戦 > sensen\ ;
+耳環 > mimiwa\ ;
+五目 > gomoku\ ;
+寓居 > guukyo\ ;
+趣向 > shukou\ ;
+貢献 > kouken\ ;
+独逸 > doitsu\ ;
+校庭 > koutei\ ;
+資源 > shigen\ ;
+寡婦 > yamome\ ;
+尋問 > jinmon\ ;
+暴論 > bouron\ ;
+条痕 > joukon\ ;
+格子 > koushi\ ;
+企業 > kigyou\ ;
+併存 > heizon\ ;
+飲用 > in''you\ ;
+体形 > taikei\ ;
+富岳 > fugaku\ ;
+実戦 > jissen\ ;
+主脳 > shunou\ ;
+胡弓 > kokyuu\ ;
+昼餉 > hiruge\ ;
+琴柱 > kotoji\ ;
+趨勢 > suusei\ ;
+依嘱 > ishoku\ ;
+昼食 > hiruge\ ;
+寒害 > kangai\ ;
+頑迷 > ganmei\ ;
+宛所 > atesho\ ;
+某某 > boubou\ ;
+獣脂 > juushi\ ;
+低徊 > teikai\ ;
+本管 > honkan\ ;
+貯炭 > chotan\ ;
+二目 > futame\ ;
+小吏 > shouri\ ;
+人煙 > jin''en\ ;
+暴言 > bougen\ ;
+俊偉 > shun''i\ ;
+尊命 > sonmei\ ;
+官房 > kanbou\ ;
+松煙 > shouen\ ;
+肥料 > hiryou\ ;
+休暇 > kyuuka\ ;
+俗事 > zokuji\ ;
+実態 > jittai\ ;
+木箱 > kibako\ ;
+有罪 > yuuzai\ ;
+狭軌 > kyouki\ ;
+購書 > kousho\ ;
+学校 > gakkou\ ;
+木管 > mokkan\ ;
+玄米 > genmai\ ;
+珈琲 > kouhii\ ;
+風紋 > fuumon\ ;
+株屋 > kabuya\ ;
+実感 > jikkan\ ;
+尊君 > sonkun\ ;
+実意 > jitsui\ ;
+尊名 > sonmei\ ;
+低廉 > teiren\ ;
+飼犬 > kaiinu\ ;
+尊号 > songou\ ;
+他流 > taryuu\ ;
+尊台 > sondai\ ;
+末端 > mattan\ ;
+官憲 > kanken\ ;
+付注 > fuchuu\ ;
+飛白 > kasuri\ ;
+賎民 > senmin\ ;
+佐幕 > sabaku\ ;
+人災 > jinsai\ ;
+下薬 > geyaku\ ;
+密封 > mippuu\ ;
+宴席 > enseki\ ;
+小匙 > kosaji\ ;
+尊厳 > songen\ ;
+肉桂 > nikkei\ ;
+走塁 > sourui\ ;
+格好 > kakkou\ ;
+伝搬 > denpan\ ;
+寛大 > kandai\ ;
+本稿 > honkou\ ;
+書肆 > shoshi\ ;
+完投 > kantou\ ;
+子様 > kosama\ ;
+宿屋 > yadoya\ ;
+書聖 > shosei\ ;
+寿命 > jumyou\ ;
+三蔵 > sanzou\ ;
+音量 > onryou\ ;
+亡状 > boujou\ ;
+費消 > hishou\ ;
+尖兵 > senpei\ ;
+乗算 > jouzan\ ;
+暴行 > boukou\ ;
+根太 > nebuto\ ;
+議長 > gichou\ ;
+乾盃 > kanpai\ ;
+完成 > kansei\ ;
+小利 > shouri\ ;
+書翰 > shokan\ ;
+来状 > raijou\ ;
+有線 > yuusen\ ;
+仏法 > buppou\ ;
+安手 > yasude\ ;
+僅々 > kinkin\ ;
+対向 > taikou\ ;
+定性 > teisei\ ;
+豪盛 > gousei\ ;
+乾癬 > kansen\ ;
+対句 > tsuiku\ ;
+中耳 > chuuji\ ;
+育成 > ikusei\ ;
+守戦 > shusen\ ;
+校定 > koutei\ ;
+寒天 > kanten\ ;
+本社 > honsha\ ;
+下落 > geraku\ ;
+警防 > keibou\ ;
+寒夜 > kan''ya\ ;
+守成 > shusei\ ;
+特高 > tokkou\ ;
+末社 > massha\ ;
+胸奥 > kyouou\ ;
+佳境 > kakyou\ ;
+普通 > futsuu\ ;
+佗寝 > wabine\ ;
+実弟 > jittei\ ;
+玲瓏 > reirou\ ;
+老眼 > rougan\ ;
+豊穣 > houjou\ ;
+栽培 > saibai\ ;
+義臣 > gishin\ ;
+牡鶏 > ondori\ ;
+小兵 > kohyou\ ;
+月経 > gekkei\ ;
+背広 > sebiro\ ;
+季春 > kishun\ ;
+小児 > shouni\ ;
+豊稔 > hounen\ ;
+牝鷄 > hinkei\ ;
+定形 > teikei\ ;
+条片 > jouhen\ ;
+係争 > keisou\ ;
+象眼 > zougan\ ;
+玳瑁 > taimai\ ;
+暗誦 > anshou\ ;
+騒人 > soujin\ ;
+宗徒 > shuuto\ ;
+子株 > kokabu\ ;
+昼間 > hiruma\ ;
+低層 > teisou\ ;
+根城 > nejiro\ ;
+亀甲 > kikkou\ ;
+賀正 > gashou\ ;
+顕著 > kencho\ ;
+牡鳥 > ondori\ ;
+騒乱 > souran\ ;
+尊公 > sonkou\ ;
+宵宮 > yomiya\ ;
+交点 > kouten\ ;
+住専 > juusen\ ;
+音速 > onsoku\ ;
+伐採 > bassai\ ;
+家宅 > kataku\ ;
+飛球 > hikyuu\ ;
+暗証 > anshou\ ;
+尊兄 > sonkei\ ;
+便乗 > binjou\ ;
+専制 > sensei\ ;
+乾田 > kanden\ ;
+家学 > kagaku\ ;
+伸度 > shindo\ ;
+会所 > kaisho\ ;
+使嗾 > shisou\ ;
+豆科 > mameka\ ;
+脱党 > dattou\ ;
+会戦 > kaisen\ ;
+佞姦 > neikan\ ;
+住家 > sumika\ ;
+玲玲 > reirei\ ;
+侶伴 > ryohan\ ;
+胞子 > houshi\ ;
+定年 > teinen\ ;
+時鐘 > jishou\ ;
+賜杯 > shihai\ ;
+財源 > zaigen\ ;
+並置 > heichi\ ;
+安息 > ansoku\ ;
+尊像 > sonzou\ ;
+不良 > furyou\ ;
+仕樣 > shiyou\ ;
+東漸 > touzen\ ;
+定常 > teijou\ ;
+佞奸 > neikan\ ;
+献茶 > kencha\ ;
+一菊 > ikkiku\ ;
+宮家 > miyake\ ;
+風神 > fuujin\ ;
+胚子 > haishi\ ;
+孝敬 > koukei\ ;
+対処 > taisho\ ;
+両義 > ryougi\ ;
+丹精 > tansei\ ;
+仕様 > shiyou\ ;
+寒地 > kanchi\ ;
+不興 > fukyou\ ;
+万芸 > bangei\ ;
+不臣 > fushin\ ;
+脚半 > kyahan\ ;
+賢明 > kenmei\ ;
+上船 > jousen\ ;
+貯水 > chosui\ ;
+容姿 > youshi\ ;
+上航 > joukou\ ;
+少佐 > shousa\ ;
+枯木 > kareki\ ;
+一荘 > iichan\ ;
+寸前 > sunzen\ ;
+宏弁 > kouben\ ;
+対内 > tainai\ ;
+老生 > rousei\ ;
+件数 > kensuu\ ;
+下臣 > kashin\ ;
+獺祭 > dassai\ ;
+独語 > dokugo\ ;
+上臼 > uwausu\ ;
+小作 > kosaku\ ;
+本盗 > hontou\ ;
+飽満 > houman\ ;
+校外 > kougai\ ;
+寸分 > sunbun\ ;
+独話 > dokuwa\ ;
+導体 > doutai\ ;
+万般 > banpan\ ;
+上臈 > jourou\ ;
+星霜 > seisou\ ;
+使命 > shimei\ ;
+物騒 > bussou\ ;
+木目 > mokume\ ;
+主管 > shukan\ ;
+令望 > reibou\ ;
+上腿 > joutai\ ;
+宦官 > kangan\ ;
+富国 > fukoku\ ;
+更紗 > sarasa\ ;
+人気 > hitoke\ ;
+木皿 > kizara\ ;
+人民 > jinmin\ ;
+射倖 > shakou\ ;
+上腕 > jouwan\ ;
+尊体 > sontai\ ;
+木皮 > mokuhi\ ;
+代替 > daitai\ ;
+代書 > daisho\ ;
+某所 > bousho\ ;
+昂騰 > koutou\ ;
+子方 > kokata\ ;
+小事 > shouji\ ;
+作場 > sakuba\ ;
+貧民 > hinmin\ ;
+今様 > imayou\ ;
+実射 > jissha\ ;
+対偶 > taiguu\ ;
+京浜 > keihin\ ;
+書簡 > shokan\ ;
+不肖 > fushou\ ;
+東海 > toukai\ ;
+有税 > yuuzei\ ;
+体外 > taigai\ ;
+果核 > kakaku\ ;
+預託 > yotaku\ ;
+脱会 > dakkai\ ;
+一興 > ikkyou\ ;
+上背 > uwazei\ ;
+寵児 > chouji\ ;
+完工 > kankou\ ;
+上肢 > joushi\ ;
+智謀 > chibou\ ;
+類聚 > ruijuu\ ;
+本番 > honban\ ;
+東洋 > touyou\ ;
+特需 > tokuju\ ;
+貴様 > kisama\ ;
+聰明 > soumei\ ;
+風眼 > fuugan\ ;
+上聞 > joubun\ ;
+実子 > jisshi\ ;
+老獪 > roukai\ ;
+杯洗 > haisen\ ;
+家塾 > kajuku\ ;
+令旨 > reishi\ ;
+併呑 > heidon\ ;
+資材 > shizai\ ;
+低声 > teisei\ ;
+争点 > souten\ ;
+資本 > shihon\ ;
+作土 > sakudo\ ;
+尊上 > sonjou\ ;
+寛厳 > kangen\ ;
+会式 > eshiki\ ;
+羚羊 > reiyou\ ;
+併合 > heigou\ ;
+乾燥 > kansou\ ;
+伶官 > reikan\ ;
+寛厚 > kankou\ ;
+三者 > sansha\ ;
+豪爽 > gousou\ ;
+作図 > sakuzu\ ;
+猫背 > nekoze\ ;
+飛火 > tobihi\ ;
+片鱗 > henrin\ ;
+警醒 > keisei\ ;
+駅名 > ekimei\ ;
+代数 > daisuu\ ;
+香奠 > kouden\ ;
+豐田 > toyota\ ;
+翔破 > shouha\ ;
+独行 > dokkou\ ;
+根号 > kongou\ ;
+肝心 > kanjin\ ;
+牛馬 > gyuuba\ ;
+人権 > jinken\ ;
+肺尖 > haisen\ ;
+丸秘 > maruhi\ ;
+飛瀑 > hibaku\ ;
+体型 > taikei\ ;
+頒行 > hankou\ ;
+東毎 > toumai\ ;
+須要 > shuyou\ ;
+対人 > taijin\ ;
+胡国 > kokoku\ ;
+案内 > an''nai\ ;
+何回 > nankai\ ;
+普請 > fushin\ ;
+時速 > jisoku\ ;
+孤愁 > koshuu\ ;
+護身 > goshin\ ;
+木琴 > mokkin\ ;
+実姉 > jisshi\ ;
+仏書 > bussho\ ;
+完封 > kanpuu\ ;
+耳殻 > jikaku\ ;
+類纂 > ruisan\ ;
+青黴 > aokabi\ ;
+木理 > mokuri\ ;
+供与 > kyouyo\ ;
+聡明 > soumei\ ;
+讒謗 > zanbou\ ;
+寝刃 > netaba\ ;
+一羽 > ichiwa\ ;
+肉感 > nikkan\ ;
+賢才 > kensai\ ;
+一義 > ichigi\ ;
+低地 > teichi\ ;
+桂冠 > keikan\ ;
+安寧 > an''nei\ ;
+能動 > noudou\ ;
+羊羹 > youkan\ ;
+饗応 > kyouou\ ;
+羊羮 > youkan\ ;
+聖書 > seisho\ ;
+主砲 > shuhou\ ;
+低回 > teikai\ ;
+寝具 > shingu\ ;
+貿易 > boueki\ ;
+現数 > gensuu\ ;
+音調 > onchou\ ;
+交歓 > koukan\ ;
+駅前 > ekimae\ ;
+守宮 > yamori\ ;
+景観 > keikan\ ;
+音読 > ondoku\ ;
+交款 > koukan\ ;
+枚数 > maisuu\ ;
+聡敏 > soubin\ ;
+貧棒 > binbou\ ;
+上線 > jousen\ ;
+順行 > junkou\ ;
+月相 > gessou\ ;
+子房 > shibou\ ;
+例会 > reikai\ ;
+最短 > saitan\ ;
+青鷺 > aosagi\ ;
+学徒 > gakuto\ ;
+丹砂 > tansha\ ;
+有益 > yuueki\ ;
+今晩 > konban\ ;
+井泉 > seisen\ ;
+寒剤 > kanzai\ ;
+賢慮 > kenryo\ ;
+孝悌 > koutei\ ;
+肯定 > koutei\ ;
+下絵 > shitae\ ;
+讒言 > zangen\ ;
+赦免 > shamen\ ;
+予測 > yosoku\ ;
+翻然 > honzen\ ;
+伴奏 > bansou\ ;
+賛成 > sansei\ ;
+風琴 > fuukin\ ;
+伝導 > dendou\ ;
+林政 > rinsei\ ;
+根冠 > konkan\ ;
+起伏 > kifuku\ ;
+下級 > kakyuu\ ;
+主眼 > shugan\ ;
+三組 > mikumi\ ;
+三絃 > sangen\ ;
+宝塔 > houtou\ ;
+聖旨 > seishi\ ;
+不精 > bushou\ ;
+上納 > jounou\ ;
+王物 > oumono\ ;
+一縷 > ichiru\ ;
+二流 > niryuu\ ;
+脚下 > kyakka\ ;
+根元 > nemoto\ ;
+寒冷 > kanrei\ ;
+聖断 > seidan\ ;
+佩剣 > haiken\ ;
+嫌煙 > ken''en\ ;
+校合 > kougou\ ;
+条款 > joukan\ ;
+学府 > gakufu\ ;
+仁智 > jinchi\ ;
+人材 > jinzai\ ;
+校友 > kouyuu\ ;
+佩刀 > haitou\ ;
+未熟 > mijuku\ ;
+朱点 > shuten\ ;
+上米 > joumai\ ;
+中破 > chuuha\ ;
+人望 > jinbou\ ;
+貴族 > kizoku\ ;
+寡作 > kasaku\ ;
+官報 > kanpou\ ;
+中砥 > nakato\ ;
+宏大 > koudai\ ;
+颯爽 > sassou\ ;
+実地 > jitchi\ ;
+孝弟 > koutei\ ;
+板書 > bansho\ ;
+背嚢 > hainou\ ;
+賦役 > buyaku\ ;
+有用 > yuuyou\ ;
+宏壮 > kousou\ ;
+有産 > yuusan\ ;
+丙種 > heishu\ ;
+定型 > teikei\ ;
+月産 > gessan\ ;
+伏屋 > fuseya\ ;
+一級 > ikkyuu\ ;
+人智 > jinchi\ ;
+完売 > kanbai\ ;
+村民 > sonmin\ ;
+球技 > kyuugi\ ;
+枚挙 > maikyo\ ;
+日頃 > higoro\ ;
+下策 > gesaku\ ;
+青鮫 > aozame\ ;
+字引 > jibiki\ ;
+仁政 > jinsei\ ;
+低吟 > teigin\ ;
+日韓 > nikkan\ ;
+球戯 > kyuugi\ ;
+何千 > nanzen\ ;
+何十 > nanjuu\ ;
+賢弟 > kentei\ ;
+上等 > joutou\ ;
+馬力 > bariki\ ;
+存廃 > zonpai\ ;
+聯想 > rensou\ ;
+使丁 > shitei\ ;
+三等 > santou\ ;
+主用 > shuyou\ ;
+一籌 > itchuu\ ;
+佳作 > kasaku\ ;
+寛仁 > kanjin\ ;
+瑶台 > youdai\ ;
+子役 > koyaku\ ;
+伏字 > fuseji\ ;
+耐水 > taisui\ ;
+上端 > joutan\ ;
+駄作 > dasaku\ ;
+丹田 > tanden\ ;
+三竿 > sankan\ ;
+人文 > jinmon\ ;
+駅伝 > ekiden\ ;
+体勢 > taisei\ ;
+字幕 > jimaku\ ;
+伝奏 > densou\ ;
+子弟 > shitei\ ;
+万端 > bantan\ ;
+上空 > joukuu\ ;
+獰猛 > neimou\ ;
+香合 > kougou\ ;
+片雲 > hen''un\ ;
+独英 > dokuei\ ;
+校内 > kounai\ ;
+日雀 > higara\ ;
+題簽 > daisen\ ;
+密偵 > mittei\ ;
+頻繁 > hinpan\ ;
+一策 > issaku\ ;
+何分 > nanpun\ ;
+牽連 > kenren\ ;
+孫子 > magoko\ ;
+介抱 > kaihou\ ;
+三種 > sanshu\ ;
+体制 > taisei\ ;
+饗宴 > kyouen\ ;
+上程 > joutei\ ;
+日陰 > hikage\ ;
+書生 > shosei\ ;
+旬間 > junkan\ ;
+馬克 > maruku\ ;
+官営 > kan''ei\ ;
+体刑 > taikei\ ;
+羽田 > haneda\ ;
+顆粒 > karyuu\ ;
+主班 > shuhan\ ;
+一笑 > isshou\ ;
+面頬 > menpoo\ ;
+日限 > higiri\ ;
+不祥 > fushou\ ;
+両目 > ryoume\ ;
+本源 > hongen\ ;
+肉屋 > nikuya\ ;
+胴体 > doutai\ ;
+姦計 > kankei\ ;
+交替 > koutai\ ;
+静養 > seiyou\ ;
+財政 > zaisei\ ;
+孤客 > kokaku\ ;
+令弟 > reitei\ ;
+株価 > kabuka\ ;
+美空 > misora\ ;
+更生 > kousei\ ;
+寄信 > kishin\ ;
+聖戦 > seisen\ ;
+中生 > nakate\ ;
+体内 > tainai\ ;
+背反 > haihan\ ;
+独自 > dokuji\ ;
+代弁 > daiben\ ;
+密使 > misshi\ ;
+東方 > touhou\ ;
+謹選 > kinsen\ ;
+豊潤 > houjun\ ;
+会場 > kaijou\ ;
+会報 > kaihou\ ;
+時評 > jihyou\ ;
+家元 > iemoto\ ;
+牧野 > bokuya\ ;
+面面 > menmen\ ;
+資性 > shisei\ ;
+事業 > jigyou\ ;
+丁稚 > detchi\ ;
+来書 > raisho\ ;
+日長 > hinaga\ ;
+五桁 > goketa\ ;
+会堂 > kaidou\ ;
+美称 > bishou\ ;
+密会 > mikkai\ ;
+賊徒 > zokuto\ ;
+猫科 > nekoka\ ;
+旅館 > ryokan\ ;
+胴乱 > douran\ ;
+任官 > ninkan\ ;
+貞操 > teisou\ ;
+交易 > koueki\ ;
+官命 > kanmei\ ;
+家僕 > kaboku\ ;
+主犯 > shuhan\ ;
+罫線 > keisen\ ;
+孟子 > moushi\ ;
+群盲 > gunmou\ ;
+胎動 > taidou\ ;
+昏迷 > konmei\ ;
+並用 > heiyou\ ;
+乳母 > nyuubo\ ;
+群盗 > guntou\ ;
+他心 > tashin\ ;
+老死 > roushi\ ;
+孝子 > koushi\ ;
+纏頭 > tentou\ ;
+犯行 > hankou\ ;
+豊満 > houman\ ;
+住僧 > juusou\ ;
+官名 > kanmei\ ;
+一票 > ippyou\ ;
+奔騰 > hontou\ ;
+査収 > sashuu\ ;
+二核 > nikaku\ ;
+実勢 > jissei\ ;
+仮屋 > kariya\ ;
+佞人 > neijin\ ;
+末法 > mappou\ ;
+香典 > kouden\ ;
+実効 > jikkou\ ;
+来方 > kikata\ ;
+警視 > keishi\ ;
+飲料 > inryou\ ;
+家信 > kashin\ ;
+官印 > kan''in\ ;
+人才 > jinsai\ ;
+人手 > hitode\ ;
+書状 > shojou\ ;
+容体 > youdai\ ;
+仮寝 > karine\ ;
+孔孟 > koumou\ ;
+仮家 > kariie\ ;
+孔子 > koushi\ ;
+胎内 > tainai\ ;
+仁愛 > jin''ai\ ;
+来攻 > raikou\ ;
+宝剣 > houken\ ;
+家作 > kasaku\ ;
+大麦 > oomugi\ ;
+狭義 > kyougi\ ;
+謝金 > shakin\ ;
+実刑 > jikkei\ ;
+養成 > yousei\ ;
+条文 > joubun\ ;
+校主 > koushu\ ;
+子守 > komori\ ;
+宿世 > sukuse\ ;
+奮闘 > funtou\ ;
+宗務 > shuumu\ ;
+婚礼 > konrei\ ;
+子孫 > shison\ ;
+三省 > sansei\ ;
+本殿 > honden\ ;
+三相 > sansou\ ;
+猛禽 > moukin\ ;
+宝刀 > houtou\ ;
+群生 > gunsei\ ;
+一石 > isseki\ ;
+実写 > jissha\ ;
+仁恵 > jinkei\ ;
+五日 > itsuka\ ;
+風浪 > fuurou\ ;
+智能 > chinou\ ;
+上皇 > joukou\ ;
+交換 > koukan\ ;
+享持 > kyouji\ ;
+一瞬 > isshun\ ;
+宝冠 > houkan\ ;
+官制 > kansei\ ;
+実兄 > jikkei\ ;
+宝典 > houten\ ;
+風洞 > fuudou\ ;
+斬首 > zanshu\ ;
+日銭 > hizeni\ ;
+乗法 > jouhou\ ;
+本欄 > honran\ ;
+献盃 > kenpai\ ;
+人情 > ninjou\ ;
+住人 > juunin\ ;
+仏師 > busshi\ ;
+家中 > kachuu\ ;
+家並 > yanami\ ;
+豊水 > housui\ ;
+賢妻 > kensai\ ;
+代官 > daikan\ ;
+丁目 > choume\ ;
+令孫 > reison\ ;
+仏工 > bukkou\ ;
+一目 > hitome\ ;
+肉塊 > nikkai\ ;
+京成 > keisei\ ;
+暮秋 > boshuu\ ;
+智者 > chisha\ ;
+方面 > houmen\ ;
+乾板 > kanpan\ ;
+存外 > zongai\ ;
+令嬢 > reijou\ ;
+美的 > biteki\ ;
+伶優 > reiyuu\ ;
+乾杯 > kanpai\ ;
+人性 > jinsei\ ;
+乗気 > noriki\ ;
+上番 > jouban\ ;
+狗肉 > kuniku\ ;
+風水 > fuusui\ ;
+乾材 > kanzai\ ;
+譜表 > fuhyou\ ;
+付属 > fuzoku\ ;
+上界 > joukai\ ;
+三番 > sanban\ ;
+学園 > gakuen\ ;
+旨酒 > shishu\ ;
+謙遜 > kenson\ ;
+上田 > jouden\ ;
+三界 > sangai\ ;
+夜鷹 > yotaka\ ;
+仲夏 > chuuka\ ;
+守勢 > shusei\ ;
+贈呈 > zoutei\ ;
+論題 > rondai\ ;
+伴僧 > bansou\ ;
+会同 > kaidou\ ;
+会合 > kaigou\ ;
+理学 > rigaku\ ;
+伺候 > shikou\ ;
+令婿 > reisei\ ;
+球宴 > kyuuen\ ;
+交戦 > kousen\ ;
+旧都 > kyuuto\ ;
+伯兄 > hakkei\ ;
+贈号 > zougou\ ;
+中火 > chuubi\ ;
+伝単 > dentan\ ;
+宣伝 > senden\ ;
+木槿 > mukuge\ ;
+方陣 > houjin\ ;
+贋印 > nisein\ ;
+令娘 > reijou\ ;
+背任 > hainin\ ;
+翻案 > hon''an\ ;
+王様 > ousama\ ;
+任地 > ninchi\ ;
+実体 > jittai\ ;
+一疋 > ippiki\ ;
+老来 > rourai\ ;
+物資 > busshi\ ;
+他宗 > tashuu\ ;
+旦那 > dan''na\ ;
+好配 > kouhai\ ;
+老杉 > rousan\ ;
+令姉 > reishi\ ;
+仕官 > shikan\ ;
+完全 > kanzen\ ;
+伝動 > dendou\ ;
+断面 > danmen\ ;
+令妹 > reimai\ ;
+夜鳥 > yachou\ ;
+猛省 > mousei\ ;
+一画 > ikkaku\ ;
+柔和 > nyuuwa\ ;
+早退 > soutai\ ;
+定例 > teirei\ ;
+現存 > genzon\ ;
+乱杭 > rangui\ ;
+伴侶 > hanryo\ ;
+交感 > koukan\ ;
+定住 > teijuu\ ;
+請願 > seigan\ ;
+守兵 > shuhei\ ;
+財形 > zaikei\ ;
+背中 > senaka\ ;
+特許 > tokkyo\ ;
+調馬 > chouba\ ;
+存在 > sonzai\ ;
+背丈 > setake\ ;
+特訓 > tokkun\ ;
+不猟 > furyou\ ;
+爆音 > bakuon\ ;
+交情 > koujou\ ;
+本案 > hon''an\ ;
+下獄 > gegoku\ ;
+今尚 > imanao\ ;
+本校 > honkou\ ;
+人工 > jinkou\ ;
+乱暴 > ranbou\ ;
+望樓 > bourou\ ;
+三猿 > mizaru\ ;
+論陣 > ronjin\ ;
+顕現 > kengen\ ;
+伶人 > reijin\ ;
+東征 > tousei\ ;
+斜頸 > shakei\ ;
+豪放 > gouhou\ ;
+一理 > ichiri\ ;
+主法 > shuhou\ ;
+謹言 > kingen\ ;
+朱書 > shusho\ ;
+館娃 > kan''ai\ ;
+片輪 > katawa\ ;
+望楼 > bourou\ ;
+安値 > yasune\ ;
+本来 > honrai\ ;
+明言 > meigen\ ;
+翰林 > kanrin\ ;
+令堂 > reidou\ ;
+明解 > meikai\ ;
+万状 > banjou\ ;
+宗主 > soushu\ ;
+霊魂 > reikon\ ;
+本木 > motoki\ ;
+青銅 > seidou\ ;
+一獲 > ikkaku\ ;
+本望 > honmou\ ;
+罹病 > ribyou\ ;
+願状 > ganjou\ ;
+末末 > suezue\ ;
+子嚢 > shinou\ ;
+本書 > honsho\ ;
+暗礁 > anshou\ ;
+明視 > meishi\ ;
+斜面 > shamen\ ;
+片身 > katami\ ;
+二手 > futate\ ;
+諒闇 > ryouan\ ;
+乱数 > ransuu\ ;
+調音 > chouon\ ;
+春蚕 > harugo\ ;
+好転 > kouten\ ;
+木末 > konure\ ;
+肌合 > hadaai\ ;
+京師 > keishi\ ;
+王朝 > ouchou\ ;
+館外 > kangai\ ;
+企及 > kikyuu\ ;
+謹製 > kinsei\ ;
+犬舎 > kensha\ ;
+雷鳴 > raimei\ ;
+任命 > ninmei\ ;
+書法 > shohou\ ;
+什宝 > juuhou\ ;
+人屋 > hitoya\ ;
+朦朧 > mourou\ ;
+朦朦 > moumou\ ;
+代地 > daichi\ ;
+中洲 > nakasu\ ;
+賛嘆 > santan\ ;
+日足 > hiashi\ ;
+青酸 > seisan\ ;
+斜陽 > shayou\ ;
+大風 > ookaze\ ;
+諸道 > shodou\ ;
+奪還 > dakkan\ ;
+中波 > chuuha\ ;
+音締 > nejime\ ;
+霊験 > reigen\ ;
+不為 > futame\ ;
+天顔 > tengan\ ;
+物見 > monomi\ ;
+本旨 > honshi\ ;
+壮齢 > sourei\ ;
+学務 > gakumu\ ;
+替歌 > kaeuta\ ;
+存命 > zonmei\ ;
+奮迅 > funjin\ ;
+賭博 > tobaku\ ;
+大願 > taigan\ ;
+杉戸 > sugido\ ;
+貧寒 > hinkan\ ;
+媾曳 > aibiki\ ;
+有様 > ariyou\ ;
+本文 > honmon\ ;
+件名 > kenmei\ ;
+来店 > raiten\ ;
+本数 > honsuu\ ;
+斧鑿 > fusaku\ ;
+来年 > rainen\ ;
+猛獣 > moujuu\ ;
+文題 > bundai\ ;
+王族 > ouzoku\ ;
+企劃 > kikaku\ ;
+五徳 > gotoku\ ;
+三災 > sansai\ ;
+好走 > kousou\ ;
+万点 > manten\ ;
+今夜 > kon''ya\ ;
+飯店 > hanten\ ;
+養子 > youshi\ ;
+中気 > chuuki\ ;
+顕然 > kenzen\ ;
+令嗣 > reishi\ ;
+謙譲 > kenjou\ ;
+壮麗 > sourei\ ;
+東岸 > tougan\ ;
+伝令 > denrei\ ;
+仏塔 > buttou\ ;
+霜雰 > soufun\ ;
+賞味 > shoumi\ ;
+頭痛 > zutsuu\ ;
+主権 > shuken\ ;
+雷魚 > raigyo\ ;
+万灯 > mandou\ ;
+聖壇 > seidan\ ;
+財宝 > zaihou\ ;
+講談 > koudan\ ;
+夜風 > yokaze\ ;
+貪婪 > donran\ ;
+献灯 > kentou\ ;
+伐倒 > battou\ ;
+現地 > genchi\ ;
+肢体 > shitai\ ;
+猛犬 > mouken\ ;
+更正 > kousei\ ;
+天雷 > tenrai\ ;
+朝晩 > asaban\ ;
+現在 > genzai\ ;
+他国 > takoku\ ;
+朗朗 > rourou\ ;
+仮名 > kemyou\ ;
+風景 > fuukei\ ;
+論鋒 > ronpou\ ;
+文面 > bunmen\ ;
+伎倆 > giryou\ ;
+餃子 > gyouza\ ;
+井底 > seitei\ ;
+学兄 > gakkei\ ;
+犯罪 > hanzai\ ;
+大難 > tainan\ ;
+中欧 > chuuou\ ;
+伝世 > densei\ ;
+賛同 > sandou\ ;
+不漁 > furyou\ ;
+太陽 > taiyou\ ;
+天際 > tensai\ ;
+暴状 > boujou\ ;
+旋転 > senten\ ;
+多額 > tagaku\ ;
+天険 > tenken\ ;
+聖堂 > seidou\ ;
+老手 > roushu\ ;
+会主 > kaishu\ ;
+東宮 > touguu\ ;
+東宝 > touhou\ ;
+聖域 > seiiki\ ;
+大隊 > daitai\ ;
+代品 > daihin\ ;
+月桂 > gekkei\ ;
+頓知 > tonchi\ ;
+老成 > rousei\ ;
+耐性 > taisei\ ;
+敵飛 > tekihi\ ;
+順礼 > junrei\ ;
+乗数 > jousuu\ ;
+夕顔 > yuugao\ ;
+乱戦 > ransen\ ;
+時習 > jishuu\ ;
+考慮 > kouryo\ ;
+断金 > dankin\ ;
+不測 > fusoku\ ;
+介在 > kaizai\ ;
+太閤 > taikou\ ;
+旧誼 > kyuugi\ ;
+整風 > seifuu\ ;
+任免 > ninmen\ ;
+存分 > zonbun\ ;
+令名 > reimei\ ;
+飲屋 > nomiya\ ;
+聖地 > seichi\ ;
+人外 > ningai\ ;
+斧鉞 > fuetsu\ ;
+夜霧 > yogiri\ ;
+猛然 > mouzen\ ;
+聯合 > rengou\ ;
+人士 > jinshi\ ;
+面貌 > menbou\ ;
+販売 > hanbai\ ;
+乾性 > kansei\ ;
+主根 > shukon\ ;
+大関 > oozeki\ ;
+旧詠 > kyuuei\ ;
+今回 > konkai\ ;
+日誌 > nisshi\ ;
+早計 > soukei\ ;
+代参 > daisan\ ;
+大門 > daimon\ ;
+本拠 > honkyo\ ;
+有望 > yuubou\ ;
+狡知 > kouchi\ ;
+飮屋 > nomiya\ ;
+整頓 > seiton\ ;
+旧記 > kyuuki\ ;
+課長 > kachou\ ;
+妄言 > mougen\ ;
+諸賢 > shoken\ ;
+晩稲 > bantou\ ;
+些少 > sashou\ ;
+亡子 > boushi\ ;
+貴国 > kikoku\ ;
+旅路 > tabiji\ ;
+豪快 > goukai\ ;
+日計 > nikkei\ ;
+早見 > hayami\ ;
+電顕 > denken\ ;
+館員 > kan''in\ ;
+賢兄 > kenkei\ ;
+外電 > gaiden\ ;
+現員 > gen''in\ ;
+板塀 > itabei\ ;
+片言 > hengen\ ;
+交媾 > koukou\ ;
+下流 > karyuu\ ;
+罪状 > zaijou\ ;
+旧規 > kyuuki\ ;
+斯道 > shidou\ ;
+現品 > genpin\ ;
+玩弄 > ganrou\ ;
+放鷹 > houyou\ ;
+学会 > gakkai\ ;
+奉還 > houkan\ ;
+不況 > fukyou\ ;
+奉遷 > housen\ ;
+誓願 > seigan\ ;
+本懐 > honkai\ ;
+丹朱 > tanshu\ ;
+大鑑 > taikan\ ;
+丸木 > maruki\ ;
+学事 > gakuji\ ;
+月旦 > gettan\ ;
+夜長 > yonaga\ ;
+東天 > touten\ ;
+奉送 > housou\ ;
+東大 > toudai\ ;
+面談 > mendan\ ;
+奉迎 > hougei\ ;
+書林 > shorin\ ;
+奸計 > kankei\ ;
+燕雀 > enjaku\ ;
+有数 > yuusuu\ ;
+狼狽 > roubai\ ;
+媒染 > baisen\ ;
+繁閑 > hankan\ ;
+仲値 > nakane\ ;
+上水 > jousui\ ;
+誘電 > yuuden\ ;
+時給 > jikyuu\ ;
+雄鶏 > ondori\ ;
+晴着 > haregi\ ;
+罰点 > batten\ ;
+亡姉 > boushi\ ;
+大鎌 > oogama\ ;
+亡妻 > bousai\ ;
+青豆 > aomame\ ;
+貧困 > hinkon\ ;
+仲保 > chuuho\ ;
+珍奇 > chinki\ ;
+謀計 > boukei\ ;
+主旨 > shushi\ ;
+亢奮 > koufun\ ;
+版行 > hankou\ ;
+大鍋 > oonabe\ ;
+暴漢 > boukan\ ;
+上段 > joudan\ ;
+最早 > mohaya\ ;
+雷電 > raiden\ ;
+万民 > banmin\ ;
+老廃 > rouhai\ ;
+令兄 > reikei\ ;
+委縮 > ishuku\ ;
+乗手 > norite\ ;
+仏参 > bussan\ ;
+昇華 > shouka\ ;
+一泊 > ippaku\ ;
+諷諌 > fuukan\ ;
+主文 > shubun\ ;
+雄鳥 > ondori\ ;
+現勢 > gensei\ ;
+老幼 > rouyou\ ;
+語長 > gochou\ ;
+奔走 > honsou\ ;
+老年 > rounen\ ;
+中期 > chuuki\ ;
+三死 > sanshi\ ;
+他力 > tariki\ ;
+本性 > honsei\ ;
+付則 > fusoku\ ;
+翻弄 > honrou\ ;
+財団 > zaidan\ ;
+謙虚 > kenkyo\ ;
+代僧 > daisou\ ;
+予審 > yoshin\ ;
+主攻 > shukou\ ;
+誌面 > shimen\ ;
+万死 > banshi\ ;
+老師 > roushi\ ;
+万歳 > manzai\ ;
+子供 > kodomo\ ;
+存亡 > sonbou\ ;
+二子 > futago\ ;
+上欄 > jouran\ ;
+仮作 > kasaku\ ;
+順番 > junban\ ;
+賢人 > kenjin\ ;
+雲集 > unshuu\ ;
+諳誦 > anshou\ ;
+雲雀 > hibari\ ;
+現前 > genzen\ ;
+老巧 > roukou\ ;
+介卵 > kairan\ ;
+大鉈 > oonata\ ;
+詩魂 > shikon\ ;
+奇蹟 > kiseki\ ;
+羊水 > yousui\ ;
+群棲 > gunsei\ ;
+難題 > nandai\ ;
+天金 > tenkin\ ;
+本影 > hon''ei\ ;
+耐寒 > taikan\ ;
+天重 > tenjuu\ ;
+並木 > namiki\ ;
+本当 > hontou\ ;
+斜辺 > shahen\ ;
+賢主 > kenshu\ ;
+書斎 > shosai\ ;
+羊毛 > youmou\ ;
+大金 > taikin\ ;
+静観 > seikan\ ;
+奇跡 > kiseki\ ;
+仁君 > jinkun\ ;
+不様 > buzama\ ;
+人員 > jin''in\ ;
+中日 > nakabi\ ;
+末弟 > mattei\ ;
+人品 > jinpin\ ;
+三権 > sanken\ ;
+諮詢 > shijun\ ;
+縦隊 > juutai\ ;
+一次 > ichiji\ ;
+熱風 > neppuu\ ;
+象嵌 > zougan\ ;
+大酔 > taisui\ ;
+上様 > uezama\ ;
+大酒 > oozake\ ;
+人命 > jinmei\ ;
+縦陣 > juujin\ ;
+嫁御 > yomego\ ;
+賞与 > shouyo\ ;
+朝恩 > chouon\ ;
+本店 > honten\ ;
+雲間 > kumoma\ ;
+始終 > shijuu\ ;
+論賛 > ronsan\ ;
+更改 > koukai\ ;
+敢闘 > kantou\ ;
+人君 > jinkun\ ;
+現像 > genzou\ ;
+人名 > jinmei\ ;
+夭逝 > yousei\ ;
+散開 > sankai\ ;
+仏典 > butten\ ;
+三業 > sangou\ ;
+諫言 > kangen\ ;
+代任 > dainin\ ;
+羨望 > senbou\ ;
+試験 > shiken\ ;
+世柄 > yogara\ ;
+人口 > jinkou\ ;
+語録 > goroku\ ;
+易者 > ekisha\ ;
+天道 > tendou\ ;
+人参 > ninjin\ ;
+天遍 > tenpen\ ;
+天運 > ten''un\ ;
+一樹 > ichiju\ ;
+代人 > dainin\ ;
+今冬 > kontou\ ;
+上棟 > joutou\ ;
+大道 > daidou\ ;
+離隔 > rikaku\ ;
+仏僧 > bussou\ ;
+多量 > taryou\ ;
+日蔭 > hikage\ ;
+聖典 > seiten\ ;
+暴民 > boumin\ ;
+離陸 > ririku\ ;
+老害 > rougai\ ;
+文選 > bunsen\ ;
+上梓 > joushi\ ;
+木工 > mokkou\ ;
+乱射 > ransha\ ;
+天辺 > teppen\ ;
+責務 > sekimu\ ;
+文運 > bun''un\ ;
+旅装 > ryosou\ ;
+諦観 > teikan\ ;
+老子 > roushi\ ;
+豊年 > hounen\ ;
+大農 > dainou\ ;
+方言 > hougen\ ;
+奏請 > sousei\ ;
+三桁 > miketa\ ;
+本島 > hontou\ ;
+主戦 > shusen\ ;
+老嬢 > roujou\ ;
+聖像 > seizou\ ;
+三校 > sankou\ ;
+旅行 > ryokou\ ;
+難関 > nankan\ ;
+新語 > shingo\ ;
+大輪 > tairin\ ;
+不朽 > fukyuu\ ;
+放題 > houdai\ ;
+本山 > honzan\ ;
+天軍 > tengun\ ;
+三枚 > sanmai\ ;
+板前 > itamae\ ;
+現代 > gendai\ ;
+頻死 > hinshi\ ;
+燐鉱 > rinkou\ ;
+仁兄 > jinkei\ ;
+本屋 > hon''ya\ ;
+不服 > fufuku\ ;
+電鈴 > denrei\ ;
+三板 > sanpan\ ;
+類本 > ruihon\ ;
+声門 > seimon\ ;
+曚昧 > moumai\ ;
+現今 > genkon\ ;
+風帯 > fuutai\ ;
+享受 > kyouju\ ;
+風師 > fuushi\ ;
+仙丹 > sentan\ ;
+人出 > hitode\ ;
+類書 > ruisho\ ;
+本尊 > honzon\ ;
+上期 > kamiki\ ;
+熱闘 > nettou\ ;
+珍味 > chinmi\ ;
+書房 > shobou\ ;
+一案 > ichian\ ;
+三本 > sanbon\ ;
+養分 > youbun\ ;
+有性 > yuusei\ ;
+万来 > banrai\ ;
+豪奢 > gousha\ ;
+改題 > kaidai\ ;
+上書 > jousho\ ;
+木屑 > kikuzu\ ;
+仏会 > butsue\ ;
+館主 > kanshu\ ;
+三曹 > sansou\ ;
+三更 > sankou\ ;
+献杯 > kenpai\ ;
+亡命 > boumei\ ;
+東半 > touhan\ ;
+故障 > koshou\ ;
+断言 > dangen\ ;
+外遊 > gaiyuu\ ;
+有志 > yuushi\ ;
+本官 > honkan\ ;
+玉屋 > tamaya\ ;
+交合 > kougou\ ;
+新規 > shinki\ ;
+老妻 > rousai\ ;
+王将 > oushou\ ;
+仕上 > shiage\ ;
+豪壮 > gousou\ ;
+願望 > ganmou\ ;
+爬虫 > hachuu\ ;
+聖体 > seitai\ ;
+献本 > kenpon\ ;
+耕地 > kouchi\ ;
+中手 > nakate\ ;
+上智 > jouchi\ ;
+最悪 > saiaku\ ;
+燐酸 > rinsan\ ;
+独演 > dokuen\ ;
+失費 > shippi\ ;
+交友 > kouyuu\ ;
+願書 > gansho\ ;
+末孫 > masson\ ;
+亡君 > boukun\ ;
+警砲 > keihou\ ;
+暗流 > anryuu\ ;
+聖伝 > seiden\ ;
+末子 > masshi\ ;
+三景 > sankei\ ;
+王宮 > oukyuu\ ;
+嫌嫌 > iyaiya\ ;
+放電 > houden\ ;
+雌雄 > shiyuu\ ;
+有形 > yuukei\ ;
+翠嵐 > suiran\ ;
+食器 > shokki\ ;
+大足 > ooashi\ ;
+聖代 > seidai\ ;
+亡友 > bouyuu\ ;
+美服 > bifuku\ ;
+今今 > imaima\ ;
+三昧 > sanmai\ ;
+一朶 > ichida\ ;
+今人 > konjin\ ;
+聖人 > seijin\ ;
+獣性 > juusei\ ;
+雲量 > unryou\ ;
+上旬 > joujun\ ;
+大赦 > taisha\ ;
+上旨 > joushi\ ;
+一朝 > itchou\ ;
+夢路 > yumeji\ ;
+一服 > ippuku\ ;
+奇襲 > kishuu\ ;
+不敵 > futeki\ ;
+談論 > danron\ ;
+両拳 > janken\ ;
+上方 > jouhou\ ;
+玉子 > tamago\ ;
+飯台 > handai\ ;
+日航 > nikkou\ ;
+明細 > meisai\ ;
+羈束 > kisoku\ ;
+罷業 > higyou\ ;
+人偏 > ninben\ ;
+外輪 > gairin\ ;
+天賜 > tenshi\ ;
+三方 > sanpou\ ;
+青藍 > seiran\ ;
+天資 > tenshi\ ;
+韲物 > aemono\ ;
+上文 > joubun\ ;
+主従 > shujuu\ ;
+断裁 > dansai\ ;
+人倫 > jinrin\ ;
+請訓 > seikun\ ;
+猥本 > waihon\ ;
+乾坤 > kenkon\ ;
+乱売 > ranbai\ ;
+三文 > sanmon\ ;
+大賢 > taiken\ ;
+万方 > banpou\ ;
+変遷 > hensen\ ;
+題材 > daizai\ ;
+今上 > kinjou\ ;
+聖上 > seijou\ ;
+外車 > gaisha\ ;
+電送 > densou\ ;
+玄孫 > genson\ ;
+攻防 > koubou\ ;
+両手 > ryoute\ ;
+七日 > nanoka\ ;
+断行 > dankou\ ;
+朝家 > chouka\ ;
+変造 > henzou\ ;
+願文 > ganmon\ ;
+本姓 > honsei\ ;
+一昨 > issaku\ ;
+奉行 > bugyou\ ;
+負傷 > fushou\ ;
+仁人 > jinjin\ ;
+本妻 > honsai\ ;
+風害 > fuugai\ ;
+嫉妬 > shitto\ ;
+謝罪 > shazai\ ;
+猟期 > ryouki\ ;
+人体 > nintei\ ;
+日脚 > hiashi\ ;
+文豪 > bungou\ ;
+一新 > isshin\ ;
+主幹 > shukan\ ;
+施薬 > seyaku\ ;
+独泳 > dokuei\ ;
+斜視 > shashi\ ;
+天譴 > tenken\ ;
+数軒 > suuken\ ;
+天警 > tenkei\ ;
+誹諧 > haikai\ ;
+罪業 > zaigou\ ;
+支隊 > shitai\ ;
+早老 > sourou\ ;
+電車 > densha\ ;
+獣帯 > juutai\ ;
+一攫 > ikkaku\ ;
+主帆 > shuhan\ ;
+類推 > ruisui\ ;
+明答 > meitou\ ;
+上提 > joutei\ ;
+線香 > senkou\ ;
+変転 > henten\ ;
+一擲 > itteki\ ;
+上掲 > joukei\ ;
+来冦 > raikou\ ;
+猛暑 > mousho\ ;
+諸芸 > shogei\ ;
+亡兄 > boukei\ ;
+予告 > yokoku\ ;
+不振 > fushin\ ;
+書店 > shoten\ ;
+人世 > jinsei\ ;
+本塁 > honrui\ ;
+貧乏 > binbou\ ;
+来光 > raikou\ ;
+外資 > gaishi\ ;
+燻製 > kunsei\ ;
+風姿 > fuushi\ ;
+離郷 > rikyou\ ;
+本堂 > hondou\ ;
+九夏 > kyuuka\ ;
+青草 > aokusa\ ;
+諸般 > shohan\ ;
+外貌 > gaibou\ ;
+既習 > kishuu\ ;
+中座 > chuuza\ ;
+犬猿 > ken''en\ ;
+主峰 > shuhou\ ;
+不承 > fushou\ ;
+罰杯 > bappai\ ;
+頸木 > kubiki\ ;
+三拝 > sanpai\ ;
+妖精 > yousei\ ;
+乙夜 > otsuya\ ;
+頓死 > tonshi\ ;
+有害 > yuugai\ ;
+習字 > shuuji\ ;
+大計 > taikei\ ;
+春着 > harugi\ ;
+一掬 > ikkiku\ ;
+編隊 > hentai\ ;
+亭亭 > teitei\ ;
+天覧 > tenran\ ;
+読誦 > dokuju\ ;
+順法 > junpou\ ;
+京人 > keijin\ ;
+敗退 > haitai\ ;
+猛攻 > moukou\ ;
+大観 > taikan\ ;
+二割 > niwari\ ;
+木型 > kigata\ ;
+三才 > sansai\ ;
+望外 > bougai\ ;
+中州 > nakasu\ ;
+義心 > gishin\ ;
+大要 > taiyou\ ;
+一挺 > itchou\ ;
+暮春 > boshun\ ;
+主導 > shudou\ ;
+娯楽 > goraku\ ;
+亭主 > teishu\ ;
+万才 > manzai\ ;
+暴政 > bousei\ ;
+誤謬 > gobyuu\ ;
+旧縁 > kyuuen\ ;
+亀卜 > kiboku\ ;
+読解 > dokkai\ ;
+主宰 > shusai\ ;
+王国 > oukoku\ ;
+多読 > tadoku\ ;
+風塵 > fuujin\ ;
+士道 > shidou\ ;
+頌歌 > shouka\ ;
+交代 > koutai\ ;
+乗場 > noriba\ ;
+東上 > toujou\ ;
+夢見 > yumemi\ ;
+両度 > ryoudo\ ;
+変貌 > henbou\ ;
+頻数 > hinsuu\ ;
+誤読 > godoku\ ;
+一把 > ichiwa\ ;
+頭書 > tousho\ ;
+晦渋 > kaijuu\ ;
+不惑 > fuwaku\ ;
+珍事 > chinji\ ;
+敗軍 > haigun\ ;
+来会 > raikai\ ;
+一打 > ichida\ ;
+条例 > jourei\ ;
+一手 > hitote\ ;
+来任 > rainin\ ;
+智歯 > chishi\ ;
+曾孫 > himago\ ;
+誤診 > goshin\ ;
+誤訳 > goyaku\ ;
+曽孫 > himago\ ;
+縦走 > juusou\ ;
+本営 > hon''ei\ ;
+日経 > nikkei\ ;
+朗報 > rouhou\ ;
+多角 > takaku\ ;
+万感 > bankan\ ;
+奈落 > naraku\ ;
+妨碍 > bougai\ ;
+語調 > gochou\ ;
+夜襲 > yashuu\ ;
+犠牛 > gigyuu\ ;
+豪勢 > gousei\ ;
+不急 > fukyuu\ ;
+日系 > nikkei\ ;
+春画 > shunga\ ;
+条件 > jouken\ ;
+雅量 > garyou\ ;
+条令 > jourei\ ;
+豪勇 > gouyuu\ ;
+散財 > sanzai\ ;
+熔銑 > yousen\ ;
+不忠 > fuchuu\ ;
+既約 > kiyaku\ ;
+外観 > gaikan\ ;
+随順 > zuijun\ ;
+来世 > raisei\ ;
+縦貫 > juukan\ ;
+不徳 > futoku\ ;
+緑雨 > ryokuu\ ;
+本員 > hon''in\ ;
+電請 > densei\ ;
+外見 > sotomi\ ;
+三思 > sanshi\ ;
+昏睡 > konsui\ ;
+詩選 > shisen\ ;
+面繋 > omogai\ ;
+際限 > saigen\ ;
+新芽 > shinme\ ;
+有声 > yuusei\ ;
+乳化 > nyuuka\ ;
+敗走 > haisou\ ;
+政道 > seidou\ ;
+数詞 > suushi\ ;
+訪韓 > houkan\ ;
+明眸 > meibou\ ;
+頭数 > tousuu\ ;
+暴挙 > boukyo\ ;
+獣姦 > juukan\ ;
+隔離 > kakuri\ ;
+本命 > honmei\ ;
+類形 > ruikei\ ;
+中子 > nakago\ ;
+老功 > roukou\ ;
+曳子 > hikiko\ ;
+天蚕 > tensan\ ;
+放送 > housou\ ;
+太虚 > taikyo\ ;
+外装 > gaisou\ ;
+本名 > honmei\ ;
+改選 > kaisen\ ;
+上弦 > jougen\ ;
+女給 > jokyuu\ ;
+電解 > denkai\ ;
+三弦 > sangen\ ;
+置換 > chikan\ ;
+誓詞 > seishi\ ;
+二伸 > nishin\ ;
+月報 > geppou\ ;
+最大 > saidai\ ;
+燻蒸 > kunjou\ ;
+云云 > un''nun\ ;
+隙間 > sukima\ ;
+最外 > saigai\ ;
+婦徳 > futoku\ ;
+暴戻 > bourei\ ;
+改造 > kaizou\ ;
+大虎 > oodora\ ;
+陵駕 > ryouga\ ;
+売買 > baibai\ ;
+支配 > shihai\ ;
+並存 > heizon\ ;
+丸太 > maruta\ ;
+村会 > sonkai\ ;
+美徳 > bitoku\ ;
+未収 > mishuu\ ;
+一応 > ichiou\ ;
+詠進 > eishin\ ;
+群島 > guntou\ ;
+誓言 > seigen\ ;
+群峰 > gunpou\ ;
+服地 > fukuji\ ;
+謝礼 > sharei\ ;
+一心 > isshin\ ;
+木叢 > komura\ ;
+両家 > ryouke\ ;
+一徳 > ittoku\ ;
+二人 > futari\ ;
+老兵 > rouhei\ ;
+狂気 > kyouki\ ;
+一得 > ittoku\ ;
+総門 > soumon\ ;
+老公 > roukou\ ;
+片端 > katawa\ ;
+獄屋 > gokuya\ ;
+講社 > kousha\ ;
+一往 > ichiou\ ;
+頌栄 > shouei\ ;
+煎餅 > senbei\ ;
+上帯 > uwaobi\ ;
+雑踏 > zattou\ ;
+更始 > koushi\ ;
+文藻 > bunsou\ ;
+上帝 > joutei\ ;
+老優 > rouyuu\ ;
+熱賛 > nessan\ ;
+教護 > kyougo\ ;
+乳児 > nyuuji\ ;
+一張 > itchou\ ;
+上巻 > joukan\ ;
+暴慢 > bouman\ ;
+上巳 > joushi\ ;
+群居 > gunkyo\ ;
+纏綿 > tenmen\ ;
+媾合 > kougou\ ;
+老僧 > rousou\ ;
+争乱 > souran\ ;
+猛悪 > mouaku\ ;
+奏聞 > soumon\ ;
+大蔵 > ookura\ ;
+変装 > hensou\ ;
+万巻 > mangan\ ;
+頓智 > tonchi\ ;
+狂歌 > kyouka\ ;
+日程 > nittei\ ;
+姦淫 > kan''in\ ;
+丁度 > choudo\ ;
+天蓋 > tengai\ ;
+教諭 > kyouyu\ ;
+獅子 > shishi\ ;
+一座 > ichiza\ ;
+中央 > chuuou\ ;
+奏者 > sousha\ ;
+丁年 > teinen\ ;
+乗合 > noriai\ ;
+音標 > onpyou\ ;
+散見 > sanken\ ;
+乗号 > jougou\ ;
+暴悪 > bouaku\ ;
+本初 > honsho\ ;
+風向 > fuukou\ ;
+詩趣 > shishu\ ;
+本分 > honbun\ ;
+救護 > kyuugo\ ;
+縦覧 > juuran\ ;
+一幅 > ippuku\ ;
+耐乏 > taibou\ ;
+服喪 > fukumo\ ;
+木剣 > bokken\ ;
+縫製 > housei\ ;
+一席 > isseki\ ;
+大葬 > taisou\ ;
+大著 > taicho\ ;
+擬革 > gikaku\ ;
+世子 > seishi\ ;
+論者 > ronsha\ ;
+論考 > ronkou\ ;
+音楽 > ongaku\ ;
+朗吟 > rougin\ ;
+雪見 > yukimi\ ;
+物産 > bussan\ ;
+乱倫 > ranrin\ ;
+雲表 > unpyou\ ;
+牛皮 > gyuuhi\ ;
+上層 > jousou\ ;
+難訓 > nankun\ ;
+乳価 > nyuuka\ ;
+不審 > fushin\ ;
+翻倒 > hontou\ ;
+老体 > routai\ ;
+陸離 > rikuri\ ;
+擡頭 > taitou\ ;
+奇習 > kishuu\ ;
+難解 > nankai\ ;
+断罪 > danzai\ ;
+訓電 > kunden\ ;
+牢番 > rouban\ ;
+時流 > jiryuu\ ;
+斬罪 > zanzai\ ;
+旅籠 > hatago\ ;
+敢行 > kankou\ ;
+赤々 > akaaka\ ;
+晴朗 > seirou\ ;
+三封 > sanpuu\ ;
+熱誠 > nessei\ ;
+三寸 > sanzun\ ;
+不学 > fugaku\ ;
+万尋 > banjin\ ;
+老人 > roujin\ ;
+猶子 > yuushi\ ;
+晴曇 > seidon\ ;
+上官 > joukan\ ;
+三宝 > sanpou\ ;
+風前 > fuuzen\ ;
+陣風 > jinpuu\ ;
+玄冬 > gentou\ ;
+集貨 > shuuka\ ;
+率先 > sossen\ ;
+風刺 > fuushi\ ;
+隧道 > suidou\ ;
+壮観 > soukan\ ;
+最善 > saizen\ ;
+罪悪 > zaiaku\ ;
+万宝 > banpou\ ;
+暖房 > danbou\ ;
+敬虔 > keiken\ ;
+隣邦 > rinpou\ ;
+乱交 > rankou\ ;
+老中 > roujuu\ ;
+本俸 > honpou\ ;
+女神 > megami\ ;
+犬歯 > kenshi\ ;
+青筋 > aosuji\ ;
+諸種 > shoshu\ ;
+陣頭 > jintou\ ;
+頽廃 > taihai\ ;
+有名 > yuumei\ ;
+朋友 > houyuu\ ;
+文芸 > bungei\ ;
+陰陽 > on''you\ ;
+有司 > yuushi\ ;
+有史 > yuushi\ ;
+詳記 > shouki\ ;
+丁寧 > teinei\ ;
+一将 > isshou\ ;
+一対 > ittsui\ ;
+義塾 > gijuku\ ;
+一寸 > chotto\ ;
+大船 > oobune\ ;
+青竹 > aodake\ ;
+一審 > isshin\ ;
+革砥 > kawato\ ;
+雑誌 > zasshi\ ;
+片眼 > katame\ ;
+断線 > dansen\ ;
+乱世 > ransei\ ;
+熟議 > jukugi\ ;
+世変 > seihen\ ;
+本体 > hontai\ ;
+風光 > fuukou\ ;
+主命 > shumei\ ;
+隠逸 > initsu\ ;
+大臣 > daijin\ ;
+美学 > bigaku\ ;
+一宗 > isshuu\ ;
+詩論 > shiron\ ;
+片目 > katame\ ;
+政論 > seiron\ ;
+丁子 > chouji\ ;
+率倒 > sottou\ ;
+服務 > fukumu\ ;
+青空 > aozora\ ;
+政談 > seidan\ ;
+有半 > yuuhan\ ;
+一字 > ichiji\ ;
+雑言 > zougon\ ;
+繋船 > keisen\ ;
+本件 > honken\ ;
+放談 > houdan\ ;
+主君 > shukun\ ;
+丸味 > marumi\ ;
+本代 > hondai\ ;
+大腿 > daitai\ ;
+試論 > shiron\ ;
+晩景 > bankei\ ;
+下姓 > geshou\ ;
+壮行 > soukou\ ;
+妙王 > myouou\ ;
+大脳 > dainou\ ;
+旅程 > ryotei\ ;
+奉納 > hounou\ ;
+熟語 > jukugo\ ;
+霊芝 > reishi\ ;
+有効 > yuukou\ ;
+狙撃 > sogeki\ ;
+有功 > yuukou\ ;
+猶太 > yudaya\ ;
+夜船 > yofune\ ;
+未了 > miryou\ ;
+姓氏 > seishi\ ;
+上奏 > jousou\ ;
+放言 > hougen\ ;
+大胆 > daitan\ ;
+上天 > jouten\ ;
+早産 > souzan\ ;
+大股 > oomata\ ;
+最南 > sainan\ ;
+天聞 > tenbun\ ;
+訴追 > sotsui\ ;
+猛射 > mousha\ ;
+詠誦 > eishou\ ;
+晦日 > misoka\ ;
+繭糸 > kenshi\ ;
+政見 > seiken\ ;
+猟季 > ryouki\ ;
+妄用 > bouyou\ ;
+曹司 > soushi\ ;
+記録 > kiroku\ ;
+書名 > shomei\ ;
+大聖 > taisei\ ;
+月刊 > gekkan\ ;
+万天 > banten\ ;
+三士 > sanshi\ ;
+中和 > chuuwa\ ;
+主動 > shudou\ ;
+改訂 > kaitei\ ;
+中味 > nakami\ ;
+日産 > nissan\ ;
+面相 > mensou\ ;
+美妙 > bimyou\ ;
+評議 > hyougi\ ;
+斜線 > shasen\ ;
+大老 > tairou\ ;
+朋党 > houtou\ ;
+風体 > fuutei\ ;
+牝牛 > meushi\ ;
+増配 > zouhai\ ;
+面皰 > menbou\ ;
+乃公 > naikou\ ;
+陣門 > jinmon\ ;
+昂然 > kouzen\ ;
+一女 > ichijo\ ;
+上場 > joujou\ ;
+降順 > koujun\ ;
+大群 > taigun\ ;
+院長 > inchou\ ;
+中句 > chuuku\ ;
+三塁 > sanrui\ ;
+最前 > saizen\ ;
+隻語 > sekigo\ ;
+曇天 > donten\ ;
+月光 > gekkou\ ;
+謝状 > shajou\ ;
+霊能 > reinou\ ;
+主刑 > shukei\ ;
+続開 > zokkai\ ;
+姻族 > inzoku\ ;
+丹前 > tanzen\ ;
+奉答 > houtou\ ;
+丸剤 > ganzai\ ;
+大罪 > daizai\ ;
+一夢 > ichimu\ ;
+最初 > saisho\ ;
+一夜 > hitoyo\ ;
+一夕 > isseki\ ;
+万場 > manjou\ ;
+諸相 > shosou\ ;
+類型 > ruikei\ ;
+奇策 > kisaku\ ;
+評語 > hyougo\ ;
+婚姻 > kon''in\ ;
+与圧 > yoatsu\ ;
+熔解 > youkai\ ;
+解題 > kaidai\ ;
+多肉 > taniku\ ;
+与国 > yokoku\ ;
+改装 > kaisou\ ;
+試行 > shikou\ ;
+暗幕 > anmaku\ ;
+隆運 > ryuuun\ ;
+旋盤 > senban\ ;
+降霜 > kousou\ ;
+誘致 > yuuchi\ ;
+暖帯 > dantai\ ;
+下国 > gekoku\ ;
+暫定 > zantei\ ;
+智慮 > chiryo\ ;
+警棒 > keibou\ ;
+断種 > danshu\ ;
+独往 > dokuou\ ;
+韜晦 > toukai\ ;
+晋書 > shinjo\ ;
+猟奇 > ryouki\ ;
+三囲 > mitsui\ ;
+外聞 > gaibun\ ;
+三回 > sankai\ ;
+月俸 > geppou\ ;
+特派 > tokuha\ ;
+主催 > shusai\ ;
+主傘 > shusan\ ;
+雁行 > gankou\ ;
+天網 > tenmou\ ;
+陶酔 > tousui\ ;
+書写 > shosha\ ;
+斑紋 > hanmon\ ;
+顕在 > kenzai\ ;
+有体 > yuutai\ ;
+大綱 > taikou\ ;
+姦智 > kanchi\ ;
+熏製 > kunsei\ ;
+獄吏 > gokuri\ ;
+独座 > dokuza\ ;
+緩解 > kankai\ ;
+三嘆 > santan\ ;
+奉祀 > houshi\ ;
+一国 > ikkoku\ ;
+娼家 > shouka\ ;
+晃曜 > kouyou\ ;
+猟場 > ryouba\ ;
+領布 > ryoufu\ ;
+片片 > henpen\ ;
+一因 > ichiin\ ;
+霧笛 > muteki\ ;
+陸運 > rikuun\ ;
+有人 > yuujin\ ;
+無闇 > muyami\ ;
+晩成 > bansei\ ;
+雄蜂 > obachi\ ;
+防風 > boufuu\ ;
+詩藻 > shisou\ ;
+大系 > taikei\ ;
+絹雲 > ken''un\ ;
+煮豆 > nimame\ ;
+熔融 > youyuu\ ;
+主体 > shutai\ ;
+訓連 > kunren\ ;
+万善 > manzen\ ;
+天籟 > tenrai\ ;
+文系 > bunkei\ ;
+最低 > saitei\ ;
+繋累 > keirui\ ;
+読経 > dokyou\ ;
+繊細 > sensai\ ;
+施療 > seryou\ ;
+主任 > shunin\ ;
+敬老 > keirou\ ;
+順当 > juntou\ ;
+陽転 > youten\ ;
+両刃 > ryouba\ ;
+絞首 > koushu\ ;
+日焼 > hiyake\ ;
+上品 > joubon\ ;
+放蕩 > houtou\ ;
+主人 > shujin\ ;
+顫動 > sendou\ ;
+雄蘂 > yuuzui\ ;
+阻隔 > sokaku\ ;
+難船 > nansen\ ;
+隆起 > ryuuki\ ;
+順延 > jun''en\ ;
+難航 > nankou\ ;
+娼婦 > shoufu\ ;
+委曲 > ikyoku\ ;
+中値 > nakane\ ;
+奇矯 > kikyou\ ;
+緩行 > kankou\ ;
+外線 > gaisen\ ;
+姻戚 > inseki\ ;
+昭栄 > shouei\ ;
+類同 > ruidou\ ;
+誦経 > zukyou\ ;
+早瀬 > hayase\ ;
+詞藻 > shisou\ ;
+書体 > shotai\ ;
+中保 > chuuho\ ;
+緒論 > choron\ ;
+上向 > joukou\ ;
+註記 > chuuki\ ;
+主上 > shujou\ ;
+最中 > monaka\ ;
+上司 > joushi\ ;
+姿態 > shitai\ ;
+雑菌 > zakkin\ ;
+文範 > bunpan\ ;
+新盆 > niibon\ ;
+増資 > zoushi\ ;
+雄蕊 > yuuzui\ ;
+最上 > mogami\ ;
+大筋 > oosuji\ ;
+媒体 > baitai\ ;
+爆破 > bakuha\ ;
+総論 > souron\ ;
+一員 > ichiin\ ;
+天童 > tendou\ ;
+献呈 > kentei\ ;
+独居 > dokkyo\ ;
+娼妓 > shougi\ ;
+特権 > tokken\ ;
+訳語 > yakugo\ ;
+外紙 > gaishi\ ;
+中佐 > chuusa\ ;
+万口 > bankou\ ;
+雑草 > zassou\ ;
+上半 > jouhan\ ;
+陸路 > rikuro\ ;
+媒介 > baikai\ ;
+天空 > tenkuu\ ;
+緒言 > chogen\ ;
+更代 > koutai\ ;
+訴訟 > soshou\ ;
+需給 > jukyuu\ ;
+頭声 > tousei\ ;
+三千 > sanzen\ ;
+三十 > sanjuu\ ;
+改葬 > kaisou\ ;
+与力 > yoriki\ ;
+経験 > keiken\ ;
+早漏 > sourou\ ;
+電線 > densen\ ;
+大空 > oozora\ ;
+外米 > gaimai\ ;
+総計 > soukei\ ;
+万千 > bansen\ ;
+天稟 > tenpin\ ;
+訳解 > yakkai\ ;
+繁簡 > hankan\ ;
+中二 > chuuni\ ;
+奇癖 > kiheki\ ;
+敏腕 > binwan\ ;
+天秤 > tenbin\ ;
+索麺 > soumen\ ;
+総覧 > souran\ ;
+群像 > gunzou\ ;
+総見 > souken\ ;
+素麺 > soumen\ ;
+曙光 > shokou\ ;
+敗者 > haisha\ ;
+奮然 > funzen\ ;
+万劫 > mangou\ ;
+上前 > uwamae\ ;
+設計 > sekkei\ ;
+斯界 > shikai\ ;
+新甫 > shinpo\ ;
+集荷 > shuuka\ ;
+附録 > furoku\ ;
+教義 > kyougi\ ;
+雌花 > mebana\ ;
+奇病 > kibyou\ ;
+晴嵐 > seiran\ ;
+青物 > aomono\ ;
+牢死 > roushi\ ;
+状態 > joutai\ ;
+天神 > tenjin\ ;
+然迄 > samade\ ;
+題名 > daimei\ ;
+一升 > isshou\ ;
+好漢 > koukan\ ;
+一匹 > ippiki\ ;
+題号 > daigou\ ;
+大祭 > taisai\ ;
+三分 > sanpun\ ;
+義侠 > gikyou\ ;
+熏蒸 > kunjou\ ;
+零細 > reisai\ ;
+大社 > taisha\ ;
+大礼 > tairei\ ;
+誓紙 > seishi\ ;
+総裏 > souura\ ;
+物権 > bukken\ ;
+夜空 > yozora\ ;
+一勝 > isshou\ ;
+壮者 > sousha\ ;
+総裁 > sousai\ ;
+無量 > muryou\ ;
+三冬 > santou\ ;
+一助 > ichijo\ ;
+雀荘 > jansou\ ;
+緊褌 > kinkon\ ;
+世俗 > sezoku\ ;
+頽唐 > taitou\ ;
+縦線 > juusen\ ;
+牛歩 > gyuuho\ ;
+万円 > man''en\ ;
+増訂 > zoutei\ ;
+順守 > junshu\ ;
+万全 > manzen\ ;
+一刻 > ikkoku\ ;
+旧派 > kyuuha\ ;
+羅北 > rahoku\ ;
+雪線 > sessen\ ;
+群体 > guntai\ ;
+下僚 > karyou\ ;
+細魚 > sayori\ ;
+下僕 > geboku\ ;
+一利 > ichiri\ ;
+大砲 > taihou\ ;
+暴君 > boukun\ ;
+旧波 > kyuuha\ ;
+数等 > suutou\ ;
+女滝 > medaki\ ;
+世伝 > seiden\ ;
+警手 > keishu\ ;
+随行 > zuikou\ ;
+操車 > sousha\ ;
+如法 > nyohou\ ;
+与信 > yoshin\ ;
+記誦 > kishou\ ;
+雷管 > raikan\ ;
+多祥 > tashou\ ;
+一円 > ichien\ ;
+一具 > ichigu\ ;
+不信 > fushin\ ;
+編著 > hencho\ ;
+警戒 > keikai\ ;
+塊鉱 > kaikou\ ;
+爛爛 > ranran\ ;
+暖地 > danchi\ ;
+綸言 > ringen\ ;
+放胆 > houtan\ ;
+訓諭 > kun''yu\ ;
+曠世 > kousei\ ;
+天眼 > tengan\ ;
+読破 > dokuha\ ;
+三倍 > sanbai\ ;
+顛倒 > tentou\ ;
+旁点 > bouten\ ;
+詩聖 > shisei\ ;
+猛勇 > mouyuu\ ;
+放肆 > houshi\ ;
+奉献 > houken\ ;
+一儀 > ichigi\ ;
+継走 > keisou\ ;
+日永 > hinaga\ ;
+類例 > ruirei\ ;
+訓誡 > kunkai\ ;
+不作 > fusaku\ ;
+言質 > genchi\ ;
+謹書 > kinsho\ ;
+署名 > shomei\ ;
+明朗 > meirou\ ;
+上例 > jourei\ ;
+闘鶏 > toukei\ ;
+天盃 > tenpai\ ;
+上使 > joushi\ ;
+昔時 > sekiji\ ;
+暴動 > boudou\ ;
+堤防 > teibou\ ;
+討論 > touron\ ;
+日毎 > higoto\ ;
+上体 > joutai\ ;
+不仲 > funaka\ ;
+課目 > kamoku\ ;
+大盃 > taihai\ ;
+大皿 > oozara\ ;
+三体 > santai\ ;
+文盲 > monmou\ ;
+熱線 > nessen\ ;
+頽勢 > taisei\ ;
+熟考 > jukkou\ ;
+変種 > henshu\ ;
+断片 > danpen\ ;
+猟具 > ryougu\ ;
+某々 > boubou\ ;
+墓表 > bohyou\ ;
+訓解 > kunkai\ ;
+昵懇 > jikkon\ ;
+女流 > joryuu\ ;
+音容 > on''you\ ;
+降車 > kousha\ ;
+霊知 > reichi\ ;
+声紋 > seimon\ ;
+上代 > joudai\ ;
+奇特 > kidoku\ ;
+領土 > ryoudo\ ;
+美俗 > bizoku\ ;
+順奉 > junpou\ ;
+易断 > ekidan\ ;
+三代 > sandai\ ;
+一俵 > ippyou\ ;
+綱要 > kouyou\ ;
+放置 > houchi\ ;
+闇黒 > ankoku\ ;
+不乙 > fuitsu\ ;
+献体 > kentai\ ;
+罪名 > zaimei\ ;
+昏昏 > konkon\ ;
+雑纂 > zassan\ ;
+妙案 > myouan\ ;
+女波 > menami\ ;
+明明 > akaaka\ ;
+万仞 > banjin\ ;
+離籍 > riseki\ ;
+不一 > fuitsu\ ;
+料理 > ryouri\ ;
+上乗 > joujou\ ;
+暗唱 > anshou\ ;
+三乗 > sanjou\ ;
+明断 > meidan\ ;
+紺青 > konjou\ ;
+敬礼 > keirei\ ;
+雷神 > raijin\ ;
+陶製 > tousei\ ;
+上世 > jousei\ ;
+上上 > joujou\ ;
+明文 > meibun\ ;
+晴天 > seiten\ ;
+万乗 > banjou\ ;
+調理 > chouri\ ;
+断然 > danzen\ ;
+天産 > tensan\ ;
+天生 > tensei\ ;
+晩婚 > bankon\ ;
+明敏 > meibin\ ;
+願主 > ganshu\ ;
+版権 > hanken\ ;
+烈風 > reppuu\ ;
+組閣 > sokaku\ ;
+万丈 > banjou\ ;
+万万 > manman\ ;
+言論 > genron\ ;
+陸行 > rikkou\ ;
+大生 > daisei\ ;
+雀羅 > jakura\ ;
+丁亥 > teigai\ ;
+議席 > giseki\ ;
+美事 > migoto\ ;
+姑息 > kosoku\ ;
+繁盛 > hanjou\ ;
+一人 > hitori\ ;
+放縦 > houjuu\ ;
+論点 > ronten\ ;
+詩編 > shihen\ ;
+献上 > kenjou\ ;
+日様 > hisama\ ;
+陪観 > baikan\ ;
+一二 > ichini\ ;
+一事 > ichiji\ ;
+素首 > sokubi\ ;
+爛漫 > ranman\ ;
+闘魂 > toukon\ ;
+特措 > tokuso\ ;
+政綱 > seikou\ ;
+試練 > shiren\ ;
+誇称 > koshou\ ;
+奉灯 > houtou\ ;
+言訳 > iiwake\ ;
+培養 > baiyou\ ;
+支署 > shisho\ ;
+丁丁 > toutou\ ;
+諸氏 > shoshi\ ;
+言言 > gengen\ ;
+一丁 > itchou\ ;
+総菜 > souzai\ ;
+政経 > seikei\ ;
+多病 > tabyou\ ;
+零砕 > reisai\ ;
+撤退 > tettai\ ;
+見頃 > migoro\ ;
+改編 > kaihen\ ;
+無賃 > muchin\ ;
+計装 > keisou\ ;
+雄編 > yuuhen\ ;
+教科 > kyouka\ ;
+綜覧 > souran\ ;
+霊界 > reikai\ ;
+智嚢 > chinou\ ;
+縁組 > engumi\ ;
+多生 > tashou\ ;
+講書 > kousho\ ;
+紫電 > shiden\ ;
+静止 > seishi\ ;
+特技 > tokugi\ ;
+独和 > dokuwa\ ;
+教祖 > kyouso\ ;
+教示 > kyouji\ ;
+堅陣 > kenjin\ ;
+認知 > ninchi\ ;
+狂女 > kyoujo\ ;
+外用 > gaiyou\ ;
+物損 > busson\ ;
+要項 > youkou\ ;
+要頂 > youkou\ ;
+点頭 > tentou\ ;
+支線 > shisen\ ;
+罰俸 > bappou\ ;
+文献 > bunken\ ;
+詩篇 > shihen\ ;
+日柄 > higara\ ;
+姉弟 > shimai\ ;
+縁籍 > enseki\ ;
+離礁 > rishou\ ;
+音域 > on''iki\ ;
+言行 > genkou\ ;
+角距 > kakkyo\ ;
+報道 > houdou\ ;
+方法 > houhou\ ;
+旭暉 > kyokki\ ;
+絶賛 > zessan\ ;
+如来 > nyorai\ ;
+大物 > oomono\ ;
+昂揚 > kouyou\ ;
+露滴 > roteki\ ;
+続行 > zokkou\ ;
+試算 > shisan\ ;
+諫死 > kanshi\ ;
+降誕 > koutan\ ;
+版本 > hanpon\ ;
+諫止 > kanshi\ ;
+暖冬 > dantou\ ;
+電番 > denban\ ;
+電界 > denkai\ ;
+讚嘆 > santan\ ;
+早晩 > souban\ ;
+霊獣 > reijuu\ ;
+編纂 > hensan\ ;
+時宗 > jishuu\ ;
+新派 > shinpa\ ;
+旭旗 > kyokki\ ;
+雄篇 > yuuhen\ ;
+雑種 > zasshu\ ;
+紙面 > shimen\ ;
+奏法 > souhou\ ;
+失火 > shikka\ ;
+斑点 > hanten\ ;
+雪目 > yukime\ ;
+好望 > koubou\ ;
+旧時 > kyuuji\ ;
+誕生 > tanjou\ ;
+昼寝 > hirune\ ;
+操行 > soukou\ ;
+特恵 > tokkei\ ;
+昼寐 > hirune\ ;
+煙草 > tabako\ ;
+詩稿 > shikou\ ;
+警官 > keikan\ ;
+絶讃 > zessan\ ;
+方正 > housei\ ;
+論法 > ronpou\ ;
+爛死 > ranshi\ ;
+敵王 > tekiou\ ;
+鞅掌 > oushou\ ;
+謄本 > touhon\ ;
+改竄 > kaizan\ ;
+妄断 > moudan\ ;
+特快 > tokkai\ ;
+天災 > tensai\ ;
+青楼 > seirou\ ;
+附託 > futaku\ ;
+旧故 > kyuuko\ ;
+牽引 > ken''in\ ;
+景品 > keihin\ ;
+日数 > hikazu\ ;
+版数 > hansuu\ ;
+断水 > dansui\ ;
+給費 > kyuuhi\ ;
+燦然 > sanzen\ ;
+妙技 > myougi\ ;
+紅顔 > kougan\ ;
+妻帯 > saitai\ ;
+雅称 > gashou\ ;
+威喝 > ikatsu\ ;
+頑冥 > ganmei\ ;
+読点 > touten\ ;
+煎茶 > sencha\ ;
+明快 > meikai\ ;
+妬心 > toshin\ ;
+智勇 > chiyuu\ ;
+譫妄 > senmou\ ;
+晶化 > shouka\ ;
+整版 > seihan\ ;
+雷獣 > raijuu\ ;
+青桐 > aogiri\ ;
+大潮 > ooshio\ ;
+普及 > fukyuu\ ;
+狂喜 > kyouki\ ;
+天漢 > tenkan\ ;
+陶芸 > tougei\ ;
+旗日 > hatabi\ ;
+青柳 > aoyagi\ ;
+設置 > setchi\ ;
+物性 > bussei\ ;
+附表 > fuhyou\ ;
+難産 > nanzan\ ;
+讒口 > zankou\ ;
+今々 > imaima\ ;
+頑健 > ganken\ ;
+暗中 > anchuu\ ;
+護国 > gokoku\ ;
+昼夜 > chuuya\ ;
+言葉 > kotoba\ ;
+親身 > shinmi\ ;
+整然 > seizen\ ;
+紡錘 > bousui\ ;
+諌止 > kanshi\ ;
+外灯 > gaitou\ ;
+妄挙 > boukyo\ ;
+縁石 > enseki\ ;
+埼銀 > saigin\ ;
+間鴨 > aigamo\ ;
+霧氷 > muhyou\ ;
+支社 > shisha\ ;
+青書 > seisho\ ;
+春季 > shunki\ ;
+教理 > kyouri\ ;
+諸方 > shohou\ ;
+増置 > zouchi\ ;
+天涯 > tengai\ ;
+詐称 > sashou\ ;
+摂関 > sekkan\ ;
+警報 > keihou\ ;
+綾羅 > ryoura\ ;
+総統 > soutou\ ;
+領事 > ryouji\ ;
+狂句 > kyouku\ ;
+妖怪 > youkai\ ;
+教王 > kyouou\ ;
+諸政 > shosei\ ;
+施条 > shijou\ ;
+陳腐 > chinpu\ ;
+大海 > taikai\ ;
+姉妹 > shimai\ ;
+報謝 > housha\ ;
+妻子 > saishi\ ;
+独乙 > doitsu\ ;
+煩累 > hanrui\ ;
+片手 > katate\ ;
+電灯 > dentou\ ;
+片戸 > katado\ ;
+大洋 > taiyou\ ;
+姿勢 > shisei\ ;
+角行 > kakkou\ ;
+威力 > iryoku\ ;
+好投 > koutou\ ;
+斑気 > muraki\ ;
+敦煌 > tonkou\ ;
+雪片 > seppen\ ;
+大波 > oonami\ ;
+変災 > hensai\ ;
+大法 > taihou\ ;
+零点 > reiten\ ;
+好手 > koushu\ ;
+晩冬 > bantou\ ;
+好戦 > kousen\ ;
+断案 > dan''an\ ;
+文法 > bunpou\ ;
+天水 > tensui\ ;
+頑丈 > ganjou\ ;
+外湯 > sotoyu\ ;
+文治 > bunchi\ ;
+敢然 > kanzen\ ;
+晦冥 > kaimei\ ;
+教父 > kyoufu\ ;
+妄想 > mousou\ ;
+純銀 > jungin\ ;
+夭死 > youshi\ ;
+政界 > seikai\ ;
+大水 > oomizu\ ;
+綿綿 > menmen\ ;
+外港 > gaikou\ ;
+説法 > seppou\ ;
+見込 > mikomi\ ;
+訪米 > houbei\ ;
+試用 > shiyou\ ;
+細身 > hosomi\ ;
+城門 > joumon\ ;
+文民 > bunmin\ ;
+炭鉱 > tankou\ ;
+旧恩 > kyuuon\ ;
+綿紡 > menbou\ ;
+好感 > koukan\ ;
+純金 > junkin\ ;
+西郊 > seikou\ ;
+夜泊 > yahaku\ ;
+施政 > shisei\ ;
+旧怨 > kyuuen\ ;
+方方 > houbou\ ;
+綿糸 > menshi\ ;
+旨念 > shinen\ ;
+操船 > sousen\ ;
+妨害 > bougai\ ;
+霊泉 > reisen\ ;
+綾糸 > ayaito\ ;
+電源 > dengen\ ;
+妄念 > mounen\ ;
+状勢 > jousei\ ;
+委嘱 > ishoku\ ;
+繊毛 > senmou\ ;
+関頭 > kantou\ ;
+奉書 > housho\ ;
+外洋 > gaiyou\ ;
+西遊 > seiyuu\ ;
+織機 > shokki\ ;
+奮戦 > funsen\ ;
+講師 > koushi\ ;
+霊水 > reisui\ ;
+炭酸 > tansan\ ;
+奔放 > honpou\ ;
+納金 > noukin\ ;
+景仰 > keikou\ ;
+納采 > nousai\ ;
+斃死 > heishi\ ;
+観覧 > kanran\ ;
+諸手 > morote\ ;
+音信 > onshin\ ;
+糖類 > tourui\ ;
+精魂 > seikon\ ;
+訓練 > kunren\ ;
+基軸 > kijiku\ ;
+難点 > nanten\ ;
+夜毎 > yogoto\ ;
+日影 > hikage\ ;
+散漫 > sanman\ ;
+緩目 > yurume\ ;
+片影 > hen''ei\ ;
+災難 > sainan\ ;
+妄弁 > bouben\ ;
+霊殿 > reiden\ ;
+既得 > kitoku\ ;
+大権 > taiken\ ;
+論旨 > ronshi\ ;
+精髄 > seizui\ ;
+斯文 > shibun\ ;
+埴輪 > haniwa\ ;
+論断 > rondan\ ;
+論文 > ronbun\ ;
+煙管 > kiseru\ ;
+爽快 > soukai\ ;
+降臨 > kourin\ ;
+大概 > taigai\ ;
+調査 > chousa\ ;
+静態 > seitai\ ;
+雌牛 > meushi\ ;
+締盟 > teimei\ ;
+開館 > kaikan\ ;
+課業 > kagyou\ ;
+無臭 > mushuu\ ;
+変法 > henpou\ ;
+靱帯 > jintai\ ;
+明大 > meidai\ ;
+牟子 > boushi\ ;
+電池 > denchi\ ;
+閉館 > heikan\ ;
+諸悪 > shoaku\ ;
+星団 > seidan\ ;
+壁画 > hekiga\ ;
+姓名 > seimei\ ;
+素足 > suashi\ ;
+敵歩 > tekifu\ ;
+雪渓 > sekkei\ ;
+雄犬 > osuinu\ ;
+靭帯 > jintai\ ;
+増税 > zouzei\ ;
+時刻 > jikoku\ ;
+墾田 > konden\ ;
+改版 > kaihan\ ;
+父御 > tetego\ ;
+関門 > kanmon\ ;
+細謹 > saikin\ ;
+塊茎 > kaikei\ ;
+隕石 > inseki\ ;
+昭和 > shouwa\ ;
+大根 > daikon\ ;
+斑条 > hanjou\ ;
+閑静 > kansei\ ;
+閑靖 > kansei\ ;
+静思 > seishi\ ;
+旱害 > kangai\ ;
+雑炊 > zousui\ ;
+夜業 > yagyou\ ;
+記章 > kishou\ ;
+昂奮 > koufun\ ;
+細論 > sairon\ ;
+試煉 > shiren\ ;
+牧夫 > bokufu\ ;
+文案 > bun''an\ ;
+旅情 > ryojou\ ;
+云々 > un''nun\ ;
+変死 > henshi\ ;
+難渋 > nanjuu\ ;
+外様 > tozama\ ;
+大柄 > oogara\ ;
+諸彦 > shogen\ ;
+間際 > magiwa\ ;
+天杯 > tenpai\ ;
+天来 > tenrai\ ;
+大枚 > taimai\ ;
+無聊 > buryou\ ;
+長駆 > chouku\ ;
+始原 > shigen\ ;
+散水 > sansui\ ;
+大杯 > taihai\ ;
+雲母 > kirara\ ;
+早寝 > hayane\ ;
+西貢 > saigon\ ;
+教派 > kyouha\ ;
+操縦 > soujuu\ ;
+総監 > soukan\ ;
+大本 > taihon\ ;
+熱湯 > nettou\ ;
+大望 > taimou\ ;
+論拠 > ronkyo\ ;
+日射 > nissha\ ;
+累計 > ruikei\ ;
+註疏 > chuuso\ ;
+奉拝 > houhai\ ;
+大書 > taisho\ ;
+旧家 > kyuuka\ ;
+牧場 > makiba\ ;
+計算 > keisan\ ;
+旋廻 > senkai\ ;
+除籍 > joseki\ ;
+始動 > shidou\ ;
+細見 > saiken\ ;
+繊条 > senjou\ ;
+糸遊 > itoyuu\ ;
+旧字 > kyuuji\ ;
+大暑 > taisho\ ;
+難治 > nanchi\ ;
+墨痕 > bokkon\ ;
+煙硝 > enshou\ ;
+関鍵 > kanken\ ;
+論戦 > ronsen\ ;
+精霊 > seirei\ ;
+日子 > nisshi\ ;
+奉戴 > houtai\ ;
+天明 > tenmei\ ;
+基調 > kichou\ ;
+繁栄 > han''ei\ ;
+墓石 > boseki\ ;
+見解 > kenkai\ ;
+放漫 > houman\ ;
+好守 > koushu\ ;
+雌滝 > medaki\ ;
+姦人 > kanjin\ ;
+墨画 > bokuga\ ;
+難民 > nanmin\ ;
+早婚 > soukon\ ;
+素読 > sodoku\ ;
+要諦 > youtei\ ;
+天文 > tenmon\ ;
+大方 > ookata\ ;
+要請 > yousei\ ;
+支点 > shiten\ ;
+要談 > youdan\ ;
+文明 > bunmei\ ;
+青年 > seinen\ ;
+開閉 > kaihei\ ;
+語格 > gokaku\ ;
+長音 > chouon\ ;
+旧婦 > kyuufu\ ;
+開門 > kaimon\ ;
+旱天 > kanten\ ;
+搬送 > hansou\ ;
+鞏固 > kyouko\ ;
+文旦 > buntan\ ;
+謹啓 > kinkei\ ;
+練炭 > rentan\ ;
+大数 > taisuu\ ;
+解纜 > kairan\ ;
+閉門 > heimon\ ;
+議了 > giryou\ ;
+奥州 > oushuu\ ;
+敗残 > haizan\ ;
+増益 > zoueki\ ;
+大敗 > taihai\ ;
+講壇 > koudan\ ;
+外来 > gairai\ ;
+闇路 > yamiji\ ;
+諸島 > shotou\ ;
+外材 > gaizai\ ;
+大政 > taisei\ ;
+女将 > joshou\ ;
+門院 > mon''in\ ;
+納豆 > nattou\ ;
+門限 > mongen\ ;
+方形 > houkei\ ;
+陥穽 > kansei\ ;
+霊智 > reichi\ ;
+文政 > bunsei\ ;
+女官 > nyokan\ ;
+搭載 > tousai\ ;
+無給 > mukyuu\ ;
+早天 > souten\ ;
+早大 > soudai\ ;
+講堂 > koudou\ ;
+要覧 > youran\ ;
+青嵐 > seiran\ ;
+雛段 > suudan\ ;
+面子 > mentsu\ ;
+謹呈 > kintei\ ;
+数枚 > suumai\ ;
+雨樋 > amadoi\ ;
+旧夫 > kyuufu\ ;
+旧夢 > kyuumu\ ;
+雄渾 > yuukon\ ;
+繁昌 > hanjou\ ;
+放浪 > hourou\ ;
+続稿 > zokkou\ ;
+雑沓 > zattou\ ;
+複音 > fukuon\ ;
+明君 > meikun\ ;
+旬報 > junpou\ ;
+険相 > kensou\ ;
+無精 > bushou\ ;
+警乗 > keijou\ ;
+謹厳 > kingen\ ;
+然程 > sahodo\ ;
+特務 > tokumu\ ;
+物品 > buppin\ ;
+警世 > keisei\ ;
+増産 > zousan\ ;
+損金 > sonkin\ ;
+青山 > seizan\ ;
+特効 > tokkou\ ;
+諸子 > shoshi\ ;
+牽制 > kensei\ ;
+好天 > kouten\ ;
+特功 > tokkou\ ;
+変更 > henkou\ ;
+長閑 > nodoka\ ;
+語族 > gozoku\ ;
+論弁 > ronben\ ;
+日報 > nippou\ ;
+門鑑 > monkan\ ;
+大挙 > taikyo\ ;
+堕落 > daraku\ ;
+関連 > kanren\ ;
+煮物 > nimono\ ;
+旅寝 > tabine\ ;
+嫌々 > iyaiya\ ;
+放水 > housui\ ;
+昇叙 > shoujo\ ;
+絹糸 > kenshi\ ;
+降等 > koutou\ ;
+陳皮 > chinpi\ ;
+整斉 > seisei\ ;
+整数 > seisuu\ ;
+大抵 > taitei\ ;
+紫蘭 > shiran\ ;
+開銀 > kaigin\ ;
+無策 > musaku\ ;
+謦咳 > keigai\ ;
+妥協 > dakyou\ ;
+斎戒 > saikai\ ;
+天才 > tensai\ ;
+末々 > suezue\ ;
+奉幣 > houhei\ ;
+大技 > oowaza\ ;
+精錬 > seiren\ ;
+旧土 > kyuudo\ ;
+電断 > dendan\ ;
+霰弾 > sandan\ ;
+教案 > kyouan\ ;
+天成 > tensei\ ;
+繊指 > senshi\ ;
+妙味 > myoumi\ ;
+電文 > denbun\ ;
+大戦 > taisen\ ;
+諸姉 > shoshi\ ;
+解答 > kaitou\ ;
+明初 > meisho\ ;
+絞罪 > kouzai\ ;
+大成 > taisei\ ;
+無窮 > mukyuu\ ;
+文才 > bunsai\ ;
+昨今 > sakkon\ ;
+精銅 > seidou\ ;
+変数 > hensuu\ ;
+絨緞 > juutan\ ;
+方寸 > housun\ ;
+誓文 > seimon\ ;
+変改 > henkai\ ;
+改正 > kaisei\ ;
+繊手 > senshu\ ;
+大慶 > taikei\ ;
+零敗 > reihai\ ;
+間道 > kandou\ ;
+製陶 > seitou\ ;
+断崖 > dangai\ ;
+襯衣 > shin''i\ ;
+奥妙 > oumyou\ ;
+総点 > souten\ ;
+政権 > seiken\ ;
+雪景 > sekkei\ ;
+操短 > soutan\ ;
+細菌 > saikin\ ;
+散文 > sanbun\ ;
+天恵 > tenkei\ ;
+散散 > sanzan\ ;
+天恩 > ten''on\ ;
+大患 > taikan\ ;
+断層 > dansou\ ;
+土龍 > mogura\ ;
+縦断 > juudan\ ;
+声望 > seibou\ ;
+謚号 > shigou\ ;
+天性 > tensei\ ;
+青天 > seiten\ ;
+電探 > dentan\ ;
+解禁 > kaikin\ ;
+変換 > henkan\ ;
+昏倒 > kontou\ ;
+朗々 > rourou\ ;
+調度 > choudo\ ;
+女囚 > joshuu\ ;
+夫役 > buyaku\ ;
+附票 > fuhyou\ ;
+新字 > shinji\ ;
+撚糸 > nenshi\ ;
+大志 > taishi\ ;
+断定 > dantei\ ;
+論定 > rontei\ ;
+粉雪 > koyuki\ ;
+精選 > seisen\ ;
+塵界 > jinkai\ ;
+雅楽 > gagaku\ ;
+霊感 > reikan\ ;
+携行 > keikou\ ;
+論孟 > ronmou\ ;
+日和 > hiyori\ ;
+網状 > moujou\ ;
+誘拐 > yuukai\ ;
+声明 > seimei\ ;
+大形 > oogyou\ ;
+難文 > nanbun\ ;
+諧声 > kaisei\ ;
+米飯 > beihan\ ;
+網版 > amihan\ ;
+売文 > baibun\ ;
+日向 > hinata\ ;
+精農 > seinou\ ;
+新婦 > shinpu\ ;
+奪回 > dakkai\ ;
+火足 > hiashi\ ;
+焦眉 > shoubi\ ;
+放校 > houkou\ ;
+防空 > boukuu\ ;
+天底 > tentei\ ;
+太平 > taihei\ ;
+読後 > dokugo\ ;
+日参 > nissan\ ;
+際涯 > saigai\ ;
+旋回 > senkai\ ;
+奥地 > okuchi\ ;
+天平 > tenbin\ ;
+霊性 > reisei\ ;
+大店 > oodana\ ;
+外患 > gaikan\ ;
+雑書 > zassho\ ;
+閣議 > kakugi\ ;
+灰貝 > haigai\ ;
+変成 > hensei\ ;
+天帝 > tentei\ ;
+経線 > keisen\ ;
+物体 > mottai\ ;
+大幅 > oohaba\ ;
+経綸 > keirin\ ;
+明主 > meishu\ ;
+大師 > daishi\ ;
+天工 > tenkou\ ;
+大帝 > taitei\ ;
+製錬 > seiren\ ;
+妄動 > moudou\ ;
+焔硝 > enshou\ ;
+結納 > yuinou\ ;
+旅団 > ryodan\ ;
+繁忙 > hanbou\ ;
+地髪 > jigami\ ;
+防禦 > bougyo\ ;
+細胞 > saibou\ ;
+物件 > bukken\ ;
+天嶮 > tenken\ ;
+製鋼 > seikou\ ;
+日勤 > nikkin\ ;
+大巧 > taikou\ ;
+点茶 > tencha\ ;
+旬刊 > junkan\ ;
+紅藻 > kousou\ ;
+新奇 > shinki\ ;
+陶然 > touzen\ ;
+長途 > chouto\ ;
+摘芽 > tekiga\ ;
+変態 > hentai\ ;
+換金 > kankin\ ;
+教授 > kyouju\ ;
+故旧 > kokyuu\ ;
+雄松 > omatsu\ ;
+早出 > hayade\ ;
+奇妙 > kimyou\ ;
+外径 > gaikei\ ;
+外征 > gaisei\ ;
+接頭 > settou\ ;
+外形 > gaikei\ ;
+訓点 > kunten\ ;
+論外 > rongai\ ;
+限界 > genkai\ ;
+夜店 > yomise\ ;
+絃線 > gensen\ ;
+諾否 > dakuhi\ ;
+探題 > tandai\ ;
+繊巧 > senkou\ ;
+無痛 > mutsuu\ ;
+無病 > mubyou\ ;
+日刊 > nikkan\ ;
+救援 > kyuuen\ ;
+論壇 > rondan\ ;
+壟断 > roudan\ ;
+片刃 > kataha\ ;
+敵影 > tekiei\ ;
+絹目 > kinume\ ;
+煮汁 > nijiru\ ;
+裾野 > susono\ ;
+訴求 > sokyuu\ ;
+煉炭 > rentan\ ;
+震度 > shindo\ ;
+整形 > seikei\ ;
+夜市 > yoichi\ ;
+増減 > zougen\ ;
+雁書 > gansho\ ;
+繃帯 > houtai\ ;
+詩文 > shibun\ ;
+変性 > hensei\ ;
+見聞 > kenmon\ ;
+大山 > taizan\ ;
+諸君 > shokun\ ;
+諮問 > shimon\ ;
+関西 > kansai\ ;
+長躯 > chouku\ ;
+大層 > taisou\ ;
+霜害 > sougai\ ;
+縄文 > joumon\ ;
+日光 > nikkou\ ;
+改易 > kaieki\ ;
+旧儀 > kyuugi\ ;
+大尽 > daijin\ ;
+壮挙 > soukyo\ ;
+紅葉 > momiji\ ;
+放散 > housan\ ;
+斎宮 > saiguu\ ;
+見者 > kensha\ ;
+難所 > nansho\ ;
+敗戦 > haisen\ ;
+奪取 > dasshu\ ;
+摸索 > mosaku\ ;
+牀几 > shougi\ ;
+太守 > taishu\ ;
+斉射 > seisha\ ;
+統監 > toukan\ ;
+大寒 > daikan\ ;
+坊間 > boukan\ ;
+夫子 > fuushi\ ;
+天守 > tenshu\ ;
+変形 > henkei\ ;
+素肌 > suhada\ ;
+雄断 > yuudan\ ;
+太字 > futoji\ ;
+太子 > taishi\ ;
+天孫 > tenson\ ;
+雑損 > zasson\ ;
+閑談 > kandan\ ;
+日傘 > higasa\ ;
+大宗 > taisou\ ;
+天子 > tenshi\ ;
+革具 > kawagu\ ;
+面前 > menzen\ ;
+霊峰 > reihou\ ;
+隷書 > reisho\ ;
+角皮 > kakuhi\ ;
+謄写 > tousha\ ;
+探険 > tanken\ ;
+視線 > shisen\ ;
+数年 > suunen\ ;
+奮励 > funrei\ ;
+非力 > hiriki\ ;
+諭告 > yukoku\ ;
+開講 > kaikou\ ;
+文官 > bunkan\ ;
+旬余 > jun''yo\ ;
+階段 > kaidan\ ;
+青史 > seishi\ ;
+紙背 > shihai\ ;
+紅茶 > koucha\ ;
+細緻 > saichi\ ;
+埋蔵 > maizou\ ;
+製造 > seizou\ ;
+霊山 > reizan\ ;
+熱戦 > nessen\ ;
+裏門 > uramon\ ;
+変幻 > hengen\ ;
+霊屋 > tamaya\ ;
+増水 > zousui\ ;
+講中 > koujuu\ ;
+離愁 > rishuu\ ;
+電工 > denkou\ ;
+散弾 > sandan\ ;
+斜塔 > shatou\ ;
+多少 > tashou\ ;
+夜寒 > yozamu\ ;
+諷刺 > fuushi\ ;
+塩煮 > shioni\ ;
+夜宮 > yomiya\ ;
+露国 > rokoku\ ;
+諸刃 > moroha\ ;
+外層 > gaisou\ ;
+埋葬 > maisou\ ;
+綿毛 > watage\ ;
+結社 > kessha\ ;
+褒貶 > houhen\ ;
+累累 > ruirui\ ;
+地霊 > chirei\ ;
+霊宝 > reihou\ ;
+地震 > jishin\ ;
+報知 > houchi\ ;
+細糸 > saishi\ ;
+夜学 > yagaku\ ;
+誤審 > goshin\ ;
+日伊 > nichii\ ;
+防疫 > boueki\ ;
+角界 > kakkai\ ;
+敏感 > binkan\ ;
+敷居 > shikii\ ;
+炭肺 > tanhai\ ;
+好例 > kourei\ ;
+奔命 > honmei\ ;
+煙毒 > endoku\ ;
+誇張 > kochou\ ;
+熱意 > netsui\ ;
+方向 > houkou\ ;
+紫紺 > shikon\ ;
+地階 > chikai\ ;
+教徒 > kyouto\ ;
+規約 > kiyaku\ ;
+諸兄 > shokei\ ;
+諸元 > shogen\ ;
+早世 > sousei\ ;
+開襟 > kaikin\ ;
+斜坑 > shakou\ ;
+縫工 > houkou\ ;
+旅券 > ryoken\ ;
+隣村 > rinson\ ;
+天外 > tengai\ ;
+詩才 > shisai\ ;
+堡礁 > hoshou\ ;
+天変 > tenpen\ ;
+面倒 > mendou\ ;
+日中 > hinaka\ ;
+天声 > tensei\ ;
+旋光 > senkou\ ;
+契合 > keigou\ ;
+霊媒 > reibai\ ;
+線条 > senjou\ ;
+解版 > kaihan\ ;
+整容 > seiyou\ ;
+新味 > shinmi\ ;
+天壌 > tenjou\ ;
+大変 > taihen\ ;
+続演 > zokuen\ ;
+壮快 > soukai\ ;
+裸身 > rashin\ ;
+米銭 > beisen\ ;
+熱性 > nessei\ ;
+語学 > gogaku\ ;
+誘導 > yuudou\ ;
+雑感 > zakkan\ ;
+斎場 > saijou\ ;
+要綱 > youkou\ ;
+累算 > ruisan\ ;
+文士 > bunshi\ ;
+点線 > tensen\ ;
+女体 > nyotai\ ;
+縁戚 > enseki\ ;
+面体 > mentei\ ;
+文壇 > bundan\ ;
+奉呈 > houtei\ ;
+撃破 > gekiha\ ;
+精製 > seisei\ ;
+面会 > menkai\ ;
+紡糸 > boushi\ ;
+天堂 > tendou\ ;
+離床 > rishou\ ;
+墓標 > bohyou\ ;
+階梯 > kaitei\ ;
+売店 > baiten\ ;
+論叢 > ronsou\ ;
+諸侯 > shokou\ ;
+電子 > denshi\ ;
+爵位 > shakui\ ;
+西経 > seikei\ ;
+詩想 > shisou\ ;
+塊状 > kaijou\ ;
+観相 > kansou\ ;
+女人 > nyonin\ ;
+改憲 > kaiken\ ;
+大域 > taiiki\ ;
+絶版 > zeppan\ ;
+雪崩 > nadare\ ;
+詩情 > shijou\ ;
+外姓 > gaisei\ ;
+言海 > genkai\ ;
+照査 > shousa\ ;
+政情 > seijou\ ;
+紛紛 > funpun\ ;
+奏効 > soukou\ ;
+壮年 > sounen\ ;
+大型 > oogata\ ;
+声帯 > seitai\ ;
+上々 > joujou\ ;
+奏功 > soukou\ ;
+純綿 > junmen\ ;
+天地 > tenchi\ ;
+塩湯 > shioyu\ ;
+該当 > gaitou\ ;
+坑道 > koudou\ ;
+女中 > jochuu\ ;
+激高 > gekkou\ ;
+探鉱 > tankou\ ;
+総書 > sousho\ ;
+外套 > gaitou\ ;
+綿棒 > menbou\ ;
+支所 > shisho\ ;
+採鉱 > saikou\ ;
+大地 > daichi\ ;
+純絹 > junken\ ;
+放恣 > houshi\ ;
+文型 > bunkei\ ;
+門衛 > mon''ei\ ;
+雌性 > shisei\ ;
+万々 > manman\ ;
+垂訓 > suikun\ ;
+大圏 > taiken\ ;
+防犯 > bouhan\ ;
+認定 > nintei\ ;
+火薬 > kayaku\ ;
+熱帯 > nettai\ ;
+練成 > rensei\ ;
+焚火 > takibi\ ;
+改悪 > kaiaku\ ;
+放念 > hounen\ ;
+奇勝 > kishou\ ;
+霊場 > reijou\ ;
+純系 > junkei\ ;
+奢侈 > shashi\ ;
+奥伝 > okuden\ ;
+塩浴 > enyoku\ ;
+談合 > dangou\ ;
+丁々 > toutou\ ;
+詩形 > shikei\ ;
+霊域 > reiiki\ ;
+論判 > ronpan\ ;
+煮方 > nikata\ ;
+熊手 > kumade\ ;
+純粋 > junsui\ ;
+読図 > dokuzu\ ;
+雄性 > yuusei\ ;
+火蓋 > hibuta\ ;
+装釘 > soutei\ ;
+調和 > chouwa\ ;
+訂正 > teisei\ ;
+照映 > shouei\ ;
+雄志 > yuushi\ ;
+調味 > choumi\ ;
+掲載 > keisai\ ;
+旅人 > ryojin\ ;
+旅亭 > ryotei\ ;
+換言 > kangen\ ;
+総数 > sousuu\ ;
+霊地 > reichi\ ;
+揚言 > yougen\ ;
+大喪 > taisou\ ;
+雑巾 > zoukin\ ;
+天啓 > tenkei\ ;
+隅木 > sumiki\ ;
+奉公 > houkou\ ;
+総攬 > souran\ ;
+編成 > hensei\ ;
+親疎 > shinso\ ;
+方便 > houben\ ;
+離宮 > rikyuu\ ;
+絢爛 > kenran\ ;
+外地 > gaichi\ ;
+外在 > gaizai\ ;
+塩気 > shioke\ ;
+接近 > sekkin\ ;
+雄弁 > yuuben\ ;
+米軍 > beigun\ ;
+詩巻 > shikan\ ;
+改廃 > kaihai\ ;
+階数 > kaisuu\ ;
+園長 > enchou\ ;
+地金 > jigane\ ;
+緩慢 > kanman\ ;
+電報 > denpou\ ;
+調印 > chouin\ ;
+防災 > bousai\ ;
+天命 > tenmei\ ;
+籤運 > kujiun\ ;
+補足 > hosoku\ ;
+濁音 > dakuon\ ;
+大和 > yamato\ ;
+談判 > danpan\ ;
+整地 > seichi\ ;
+大命 > taimei\ ;
+長蛇 > chouda\ ;
+方今 > houkon\ ;
+提言 > teigen\ ;
+証拠 > shouko\ ;
+紅粉 > beniko\ ;
+太后 > taikou\ ;
+地酒 > jizake\ ;
+隻影 > sekiei\ ;
+士官 > shikan\ ;
+土鍋 > donabe\ ;
+天后 > tenkou\ ;
+灰色 > haiiro\ ;
+天台 > tendai\ ;
+系統 > keitou\ ;
+大君 > taikun\ ;
+陰核 > inkaku\ ;
+大同 > daidou\ ;
+隷従 > reijuu\ ;
+細目 > hosome\ ;
+支弁 > shiben\ ;
+提要 > teiyou\ ;
+火花 > hibana\ ;
+変型 > henkei\ ;
+純種 > junshu\ ;
+雑居 > zakkyo\ ;
+降水 > kousui\ ;
+方丈 > houjou\ ;
+埋線 > maisen\ ;
+数回 > suukai\ ;
+文名 > bunmei\ ;
+奕世 > ekisei\ ;
+緩怠 > kantai\ ;
+解法 > kaihou\ ;
+支店 > shiten\ ;
+基石 > kiseki\ ;
+製袋 > seitai\ ;
+頻々 > hinpin\ ;
+斜光 > shakou\ ;
+奉体 > houtai\ ;
+附注 > fuchuu\ ;
+斥候 > sekkou\ ;
+関聯 > kanren\ ;
+奉伺 > houshi\ ;
+大半 > taihan\ ;
+褐藻 > kassou\ ;
+煽情 > senjou\ ;
+敵営 > tekiei\ ;
+無毒 > mudoku\ ;
+大匙 > oosaji\ ;
+在郷 > zaigou\ ;
+絶海 > zekkai\ ;
+雄峰 > yuuhou\ ;
+奉仕 > houshi\ ;
+納税 > nouzei\ ;
+土釜 > dogama\ ;
+大勢 > taizei\ ;
+奏上 > soujou\ ;
+断交 > dankou\ ;
+緒戦 > chosen\ ;
+放射 > housha\ ;
+大勇 > taiyuu\ ;
+視界 > shikai\ ;
+論争 > ronsou\ ;
+裳裾 > mosuso\ ;
+試射 > shisha\ ;
+除核 > jokaku\ ;
+大功 > taikou\ ;
+解毒 > gedoku\ ;
+詩宗 > shisou\ ;
+文勢 > bunsei\ ;
+陰暦 > inreki\ ;
+無欲 > muyoku\ ;
+太初 > taisho\ ;
+散在 > sanzai\ ;
+炭礦 > tankou\ ;
+火脚 > hiashi\ ;
+誣告 > bukoku\ ;
+天刑 > tenkei\ ;
+天分 > tenbun\ ;
+壮大 > soudai\ ;
+衰頽 > suitai\ ;
+点睛 > tensei\ ;
+大分 > daibun\ ;
+壮士 > soushi\ ;
+敗報 > haihou\ ;
+外向 > gaikou\ ;
+大刀 > daitou\ ;
+攻守 > koushu\ ;
+雑婚 > zakkon\ ;
+損耗 > sonmou\ ;
+点眼 > tengan\ ;
+圧迫 > appaku\ ;
+外史 > gaishi\ ;
+大凡 > ooyoso\ ;
+濫造 > ranzou\ ;
+熔岩 > yougan\ ;
+随所 > zuisho\ ;
+改定 > kaitei\ ;
+雅客 > gakaku\ ;
+統治 > touchi\ ;
+天兵 > tenpei\ ;
+観点 > kanten\ ;
+隠忍 > in''nin\ ;
+大典 > taiten\ ;
+除服 > jofuku\ ;
+大公 > taikou\ ;
+大全 > taizen\ ;
+整合 > seigou\ ;
+精舎 > shouja\ ;
+大兄 > taikei\ ;
+詞宗 > shisou\ ;
+声域 > seiiki\ ;
+電命 > denmei\ ;
+補註 > hochuu\ ;
+衣食 > ishoku\ ;
+無様 > buzama\ ;
+摸牌 > moupai\ ;
+文典 > bunten\ ;
+線形 > senkei\ ;
+霊剣 > reiken\ ;
+数名 > suumei\ ;
+表音 > hyouon\ ;
+外勤 > gaikin\ ;
+霊前 > reizen\ ;
+補角 > hokaku\ ;
+随感 > zuikan\ ;
+炯眼 > keigan\ ;
+煩悶 > hanmon\ ;
+計数 > keisuu\ ;
+夜凪 > yonagi\ ;
+随想 > zuisou\ ;
+防水 > bousui\ ;
+推論 > suiron\ ;
+変名 > henmei\ ;
+給油 > kyuuyu\ ;
+言明 > genmei\ ;
+天候 > tenkou\ ;
+終焉 > shuuen\ ;
+熱型 > nekkei\ ;
+雷名 > raimei\ ;
+雷同 > raidou\ ;
+霧中 > muchuu\ ;
+四面 > shimen\ ;
+糟糠 > soukou\ ;
+数千 > suusen\ ;
+数十 > suujuu\ ;
+要用 > youyou\ ;
+続映 > zokuei\ ;
+除斥 > joseki\ ;
+雄姿 > yuushi\ ;
+改姓 > kaisei\ ;
+外分 > gaibun\ ;
+煖房 > danbou\ ;
+政変 > seihen\ ;
+埴生 > hanyuu\ ;
+外出 > sotode\ ;
+雲呑 > wantan\ ;
+夕刊 > yuukan\ ;
+煩忙 > hanbou\ ;
+結滞 > kettai\ ;
+絨毯 > juutan\ ;
+炉端 > robata\ ;
+雑報 > zappou\ ;
+詩壇 > shidan\ ;
+大便 > daiben\ ;
+絨毛 > juumou\ ;
+天使 > tenshi\ ;
+防止 > boushi\ ;
+累犯 > ruihan\ ;
+推計 > suikei\ ;
+照応 > shouou\ ;
+天体 > tentai\ ;
+縫合 > hougou\ ;
+電動 > dendou\ ;
+然斯 > soukou\ ;
+大使 > taishi\ ;
+証左 > shousa\ ;
+四隣 > shirin\ ;
+電効 > denkou\ ;
+外典 > gaiten\ ;
+細片 > saihen\ ;
+見猿 > mizaru\ ;
+大体 > daitai\ ;
+四隅 > yosumi\ ;
+堅牢 > kenrou\ ;
+火縄 > hinawa\ ;
+敦厚 > tonkou\ ;
+改変 > kaihen\ ;
+変動 > hendou\ ;
+照影 > shouei\ ;
+随従 > zuijuu\ ;
+雄大 > yuudai\ ;
+文例 > bunrei\ ;
+降板 > kouban\ ;
+大会 > taikai\ ;
+難問 > nanmon\ ;
+教唆 > kyousa\ ;
+探訪 > tanbou\ ;
+捻転 > nenten\ ;
+街頭 > gaitou\ ;
+大任 > tainin\ ;
+雄壮 > yuusou\ ;
+文体 > buntai\ ;
+大仰 > oogyou\ ;
+教員 > kyouin\ ;
+図録 > zuroku\ ;
+大代 > daidai\ ;
+天井 > tenjou\ ;
+接見 > sekken\ ;
+裏襟 > uraeri\ ;
+土足 > dosoku\ ;
+大人 > dainin\ ;
+斎主 > saishu\ ;
+訓戒 > kunkai\ ;
+外債 > gaisai\ ;
+故国 > kokoku\ ;
+授賞 > jushou\ ;
+詩型 > shikei\ ;
+見物 > mimono\ ;
+経済 > keizai\ ;
+総帥 > sousui\ ;
+天丼 > tendon\ ;
+天主 > tenshu\ ;
+大乱 > tairan\ ;
+炭田 > tanden\ ;
+照度 > shoudo\ ;
+隊形 > taikei\ ;
+城砦 > jousai\ ;
+終演 > shuuen\ ;
+文人 > bunjin\ ;
+読会 > dokkai\ ;
+大乗 > daijou\ ;
+売品 > baihin\ ;
+天与 > ten''yo\ ;
+天上 > tenjou\ ;
+均衡 > kinkou\ ;
+攻城 > koujou\ ;
+地謡 > jiutai\ ;
+視点 > shiten\ ;
+撒水 > sansui\ ;
+製茶 > seicha\ ;
+灯籠 > tourou\ ;
+誤信 > goshin\ ;
+電光 > denkou\ ;
+夜伽 > yotogi\ ;
+繋争 > keisou\ ;
+無暗 > muyami\ ;
+裁許 > saikyo\ ;
+擅断 > sendan\ ;
+多作 > tasaku\ ;
+燐光 > rinkou\ ;
+長者 > chouja\ ;
+散剤 > sanzai\ ;
+地誌 > chishi\ ;
+売名 > baimei\ ;
+陽性 > yousei\ ;
+夢中 > muchuu\ ;
+雷光 > raikou\ ;
+塊根 > kaikon\ ;
+焚書 > funsho\ ;
+褪紅 > taikou\ ;
+摂生 > sessei\ ;
+関空 > kankuu\ ;
+無明 > mumyou\ ;
+教区 > kyouku\ ;
+精緻 > seichi\ ;
+精練 > seiren\ ;
+国運 > kokuun\ ;
+閉経 > heikei\ ;
+教化 > kyouka\ ;
+絹本 > kenpon\ ;
+血餅 > keppei\ ;
+外伝 > gaiden\ ;
+電停 > dentei\ ;
+順々 > junjun\ ;
+数値 > suuchi\ ;
+関税 > kanzei\ ;
+教務 > kyoumu\ ;
+数倍 > suubai\ ;
+無料 > muryou\ ;
+夜中 > yonaka\ ;
+解明 > kaimei\ ;
+無敵 > muteki\ ;
+散兵 > sanpei\ ;
+経水 > keisui\ ;
+外人 > gaijin\ ;
+紙片 > shihen\ ;
+外交 > gaikou\ ;
+壇場 > danjou\ ;
+散光 > sankou\ ;
+捨身 > sutemi\ ;
+障子 > shouji\ ;
+精細 > seisai\ ;
+塗料 > toryou\ ;
+素焼 > suyaki\ ;
+継投 > keitou\ ;
+煙幕 > enmaku\ ;
+外乱 > gairan\ ;
+雑品 > zappin\ ;
+解散 > kaisan\ ;
+精糖 > seitou\ ;
+闘犬 > touken\ ;
+擱座 > kakuza\ ;
+精精 > seizei\ ;
+解放 > kaihou\ ;
+絶景 > zekkei\ ;
+試問 > shimon\ ;
+許容 > kyoyou\ ;
+階層 > kaisou\ ;
+地裁 > chisai\ ;
+精粋 > seisui\ ;
+精粉 > seifun\ ;
+揺籃 > youran\ ;
+捕逸 > hoitsu\ ;
+紛然 > funzen\ ;
+救助 > kyuujo\ ;
+精米 > seimai\ ;
+改善 > kaizen\ ;
+変体 > hentai\ ;
+敬体 > keitai\ ;
+要点 > youten\ ;
+圧覚 > akkaku\ ;
+数人 > suunin\ ;
+陰徳 > intoku\ ;
+教具 > kyougu\ ;
+火種 > hidane\ ;
+点点 > tenten\ ;
+記帳 > kichou\ ;
+設定 > settei\ ;
+推薦 > suisen\ ;
+炎症 > enshou\ ;
+掃討 > soutou\ ;
+衆院 > shuuin\ ;
+詩吟 > shigin\ ;
+点灯 > tentou\ ;
+烝民 > joumin\ ;
+詠唱 > eishou\ ;
+変人 > henjin\ ;
+累減 > ruigen\ ;
+籐製 > tousei\ ;
+綱常 > koujou\ ;
+精管 > seikan\ ;
+純然 > junzen\ ;
+防暑 > bousho\ ;
+精算 > seisan\ ;
+数万 > suuman\ ;
+垂線 > suisen\ ;
+閉端 > heitan\ ;
+変乱 > henran\ ;
+関知 > kanchi\ ;
+詩友 > shiyuu\ ;
+結構 > kekkou\ ;
+士分 > shibun\ ;
+陪従 > baijuu\ ;
+衣鉢 > ihatsu\ ;
+四重 > shijuu\ ;
+潮音 > chouon\ ;
+被覆 > hifuku\ ;
+声優 > seiyuu\ ;
+陶工 > toukou\ ;
+散会 > sankai\ ;
+指頭 > shitou\ ;
+改名 > kaimei\ ;
+炯炯 > keikei\ ;
+改号 > kaigou\ ;
+製缶 > seikan\ ;
+誌代 > shidai\ ;
+西漸 > seizen\ ;
+衰退 > suitai\ ;
+散乱 > sanran\ ;
+陣形 > jinkei\ ;
+炭火 > sumibi\ ;
+国費 > kokuhi\ ;
+政労 > seirou\ ;
+地虫 > mimizu\ ;
+壮健 > souken\ ;
+観梅 > kanbai\ ;
+回遊 > kaiyuu\ ;
+観桜 > kan''ou\ ;
+攻勢 > kousei\ ;
+誌上 > shijou\ ;
+細民 > saimin\ ;
+回送 > kaisou\ ;
+要港 > youkou\ ;
+堅気 > katagi\ ;
+雄勁 > yuukei\ ;
+垂範 > suihan\ ;
+無慾 > muyoku\ ;
+陽子 > youshi\ ;
+難件 > nanken\ ;
+除幕 > jomaku\ ;
+絢文 > kenbun\ ;
+訓導 > kundou\ ;
+四辺 > shihen\ ;
+敗亡 > haibou\ ;
+離京 > rikyou\ ;
+紅灯 > koutou\ ;
+売人 > bainin\ ;
+政党 > seitou\ ;
+試写 > shisha\ ;
+潮間 > shioma\ ;
+離乳 > rinyuu\ ;
+放免 > houmen\ ;
+裏芸 > uragei\ ;
+放光 > houkou\ ;
+観望 > kanbou\ ;
+回転 > kaiten\ ;
+討尋 > toujin\ ;
+製紙 > seishi\ ;
+場数 > bakazu\ ;
+火皿 > hizara\ ;
+篆隷 > tenrei\ ;
+製糸 > seishi\ ;
+製糖 > seitou\ ;
+増大 > zoudai\ ;
+西洋 > seiyou\ ;
+縁先 > ensaki\ ;
+経木 > kyougi\ ;
+売上 > uriage\ ;
+雑俳 > zappai\ ;
+国語 > kokugo\ ;
+製粉 > seifun\ ;
+経書 > keisho\ ;
+練功 > renkou\ ;
+改元 > kaigen\ ;
+換算 > kanzan\ ;
+開眼 > kaigen\ ;
+行金 > koukin\ ;
+粗粗 > araara\ ;
+炊爨 > suisan\ ;
+激語 > gekigo\ ;
+街道 > kaidou\ ;
+紡毛 > boumou\ ;
+壮丁 > soutei\ ;
+無心 > mushin\ ;
+紫檀 > shitan\ ;
+点水 > tensui\ ;
+縁側 > engawa\ ;
+補習 > hoshuu\ ;
+陣屋 > jin''ya\ ;
+雑件 > zakken\ ;
+掃蕩 > soutou\ ;
+防戦 > bousen\ ;
+終期 > shuuki\ ;
+雑人 > zounin\ ;
+練兵 > renpei\ ;
+墓場 > hakaba\ ;
+垂示 > suishi\ ;
+政体 > seitai\ ;
+雅俗 > gazoku\ ;
+純水 > junsui\ ;
+詩仙 > shisen\ ;
+政令 > seirei\ ;
+放任 > hounin\ ;
+粉糠 > konuka\ ;
+詩人 > shijin\ ;
+推考 > suikou\ ;
+陽報 > youhou\ ;
+編制 > hensei\ ;
+純毛 > junmou\ ;
+拳闘 > kentou\ ;
+紅涙 > kourui\ ;
+政争 > seisou\ ;
+終映 > shuuei\ ;
+素樸 > soboku\ ;
+拝顔 > haigan\ ;
+紅海 > koukai\ ;
+陋巷 > roukou\ ;
+緘口 > kankou\ ;
+粉米 > kogome\ ;
+探聞 > tanbun\ ;
+噴飯 > funpan\ ;
+煽動 > sendou\ ;
+継子 > mamako\ ;
+純正 > junsei\ ;
+覇業 > hagyou\ ;
+陵墓 > ryoubo\ ;
+簡裁 > kansai\ ;
+証印 > shouin\ ;
+試乗 > shijou\ ;
+隠匿 > intoku\ ;
+規格 > kikaku\ ;
+火玉 > hidama\ ;
+訪問 > houmon\ ;
+長目 > nagame\ ;
+操守 > soushu\ ;
+統御 > tougyo\ ;
+蟻食 > arikui\ ;
+搾油 > sakuyu\ ;
+衿裏 > eriura\ ;
+振起 > shinki\ ;
+総合 > sougou\ ;
+補給 > hokyuu\ ;
+摂氏 > sesshi\ ;
+行軍 > kougun\ ;
+評価 > hyouka\ ;
+門番 > monban\ ;
+堅材 > kenzai\ ;
+図表 > zuhyou\ ;
+堅木 > katagi\ ;
+援用 > en''you\ ;
+防御 > bougyo\ ;
+米綿 > beimen\ ;
+灰燼 > kaijin\ ;
+点検 > tenken\ ;
+塹壕 > zangou\ ;
+紅毛 > koumou\ ;
+線分 > senbun\ ;
+緑化 > ryokka\ ;
+陋屋 > rouoku\ ;
+地肌 > jihada\ ;
+防弾 > boudan\ ;
+限定 > gentei\ ;
+装置 > souchi\ ;
+階名 > kaimei\ ;
+言外 > gengai\ ;
+角度 > kakudo\ ;
+垣牆 > enshou\ ;
+総勢 > souzei\ ;
+回訓 > kaikun\ ;
+壊乱 > kairan\ ;
+統帥 > tousui\ ;
+観戦 > kansen\ ;
+接線 > sessen\ ;
+結成 > kessei\ ;
+約款 > yakkan\ ;
+表記 > hyouki\ ;
+撤廃 > teppai\ ;
+附属 > fuzoku\ ;
+因襲 > inshuu\ ;
+回覧 > kairan\ ;
+米粉 > beifun\ ;
+煩労 > hanrou\ ;
+墨刑 > bokkei\ ;
+無学 > mugaku\ ;
+被膜 > himaku\ ;
+城池 > jouchi\ ;
+描破 > byouha\ ;
+摘果 > tekika\ ;
+絶島 > zettou\ ;
+陰嚢 > fuguri\ ;
+壇上 > danjou\ ;
+裏紋 > uramon\ ;
+素朴 > soboku\ ;
+間然 > kanzen\ ;
+抹香 > makkou\ ;
+拳銃 > kenjuu\ ;
+紫斑 > shihan\ ;
+要望 > youbou\ ;
+観想 > kansou\ ;
+節酒 > sesshu\ ;
+見方 > mikata\ ;
+納棺 > noukan\ ;
+裁縫 > saihou\ ;
+噴門 > funmon\ ;
+為替 > kawase\ ;
+表裏 > hyouri\ ;
+随分 > zuibun\ ;
+絶対 > zettai\ ;
+随処 > zuisho\ ;
+粗目 > zarame\ ;
+陣地 > jinchi\ ;
+漢音 > kan''on\ ;
+指輪 > yubiwa\ ;
+推算 > suisan\ ;
+均等 > kintou\ ;
+点景 > tenkei\ ;
+限外 > gengai\ ;
+粉砕 > funsai\ ;
+基教 > kikyou\ ;
+陰唇 > inshin\ ;
+要旨 > youshi\ ;
+訊問 > jinmon\ ;
+隣人 > rinjin\ ;
+米突 > mētoru\ ;
+素敵 > suteki\ ;
+増刊 > zoukan\ ;
+増分 > zoubun\ ;
+精煉 > seiren\ ;
+潮路 > shioji\ ;
+紅梅 > koubai\ ;
+降壇 > koudan\ ;
+西方 > seihou\ ;
+術計 > jukkei\ ;
+採算 > saisan\ ;
+納杯 > nouhai\ ;
+潰走 > kaisou\ ;
+衆議 > shuugi\ ;
+褒状 > houjou\ ;
+防寒 > boukan\ ;
+際会 > saikai\ ;
+点数 > tensuu\ ;
+納本 > nouhon\ ;
+拳道 > kondou\ ;
+増兵 > zouhei\ ;
+明々 > akaaka\ ;
+陣営 > jin''ei\ ;
+坐礁 > zashou\ ;
+紙数 > shisuu\ ;
+継嗣 > keishi\ ;
+総体 > soutai\ ;
+描画 > byouga\ ;
+紛擾 > funjou\ ;
+灸治 > kyuuji\ ;
+総会 > soukai\ ;
+接種 > sesshu\ ;
+総代 > soudai\ ;
+門灯 > montou\ ;
+拠金 > kyokin\ ;
+門火 > kadobi\ ;
+煎剤 > senzai\ ;
+絶好 > zekkou\ ;
+焦土 > shoudo\ ;
+素描 > sobyou\ ;
+紆曲 > ukyoku\ ;
+拝金 > haikin\ ;
+袱紗 > fukusa\ ;
+随伴 > zuihan\ ;
+陽光 > youkou\ ;
+経常 > keijou\ ;
+提琴 > teikin\ ;
+経師 > kyouji\ ;
+記入 > kinyuu\ ;
+在米 > zaibei\ ;
+覚悟 > kakugo\ ;
+増俸 > zouhou\ ;
+袢纏 > hanten\ ;
+開港 > kaikou\ ;
+増便 > zoubin\ ;
+綜合 > sougou\ ;
+陰刻 > inkoku\ ;
+漏電 > rouden\ ;
+褐炭 > kattan\ ;
+階乗 > kaijou\ ;
+掻痒 > souyou\ ;
+炉棚 > rodana\ ;
+解団 > kaidan\ ;
+境内 > keidai\ ;
+階上 > kaijou\ ;
+陞叙 > shoujo\ ;
+推知 > suichi\ ;
+擾乱 > jouran\ ;
+火水 > himizu\ ;
+製版 > seihan\ ;
+篤行 > tokkou\ ;
+要所 > yousho\ ;
+地税 > chizei\ ;
+絹地 > kinuji\ ;
+言動 > gendou\ ;
+精液 > seieki\ ;
+防塵 > boujin\ ;
+探知 > tanchi\ ;
+堅志 > kenshi\ ;
+防塞 > bousai\ ;
+器量 > kiryou\ ;
+挙行 > kyokou\ ;
+灌漑 > kangai\ ;
+阪大 > handai\ ;
+血行 > kekkou\ ;
+長湯 > nagayu\ ;
+続刊 > zokkan\ ;
+土竜 > mogura\ ;
+漸近 > zenkin\ ;
+土窯 > dogama\ ;
+院内 > in''nai\ ;
+場外 > jougai\ ;
+製炭 > seitan\ ;
+垂準 > suijun\ ;
+粉状 > funjou\ ;
+無告 > mukoku\ ;
+訓令 > kunrei\ ;
+見当 > kentou\ ;
+累年 > ruinen\ ;
+回船 > kaisen\ ;
+降参 > kousan\ ;
+圧神 > asshin\ ;
+米産 > beisan\ ;
+結婚 > kekkon\ ;
+回航 > kaikou\ ;
+閉止 > heishi\ ;
+納所 > nassho\ ;
+撤回 > tekkai\ ;
+籠目 > kagome\ ;
+純愛 > jun''ai\ ;
+投降 > toukou\ ;
+紺屋 > kon''ya\ ;
+手鼻 > tebana\ ;
+長波 > chouha\ ;
+操典 > souten\ ;
+垂涎 > zuizen\ ;
+索引 > sakuin\ ;
+純情 > junjou\ ;
+点心 > tenjin\ ;
+関東 > kantou\ ;
+煉丹 > rentan\ ;
+絶品 > zeppin\ ;
+探番 > tanban\ ;
+訌争 > kousou\ ;
+門歯 > monshi\ ;
+濃紺 > noukon\ ;
+約手 > yakute\ ;
+地相 > chisou\ ;
+衰耗 > suimou\ ;
+筆頭 > hittou\ ;
+採用 > saiyou\ ;
+灌水 > kansui\ ;
+捕縛 > hobaku\ ;
+裂痔 > kireji\ ;
+粉炭 > funtan\ ;
+陪乗 > baijou\ ;
+四肢 > shishi\ ;
+管財 > kanzai\ ;
+装甲 > soukou\ ;
+装用 > souyou\ ;
+計上 > keijou\ ;
+闘志 > toushi\ ;
+圧着 > atsugi\ ;
+垣根 > kakine\ ;
+因習 > inshuu\ ;
+面々 > menmen\ ;
+四聖 > shisei\ ;
+解剖 > kaibou\ ;
+統合 > tougou\ ;
+土石 > doseki\ ;
+開梱 > kaikon\ ;
+附則 > fusoku\ ;
+潜行 > senkou\ ;
+紙幣 > shihei\ ;
+襟懐 > kinkai\ ;
+解凍 > kaitou\ ;
+地番 > chiban\ ;
+焚刑 > funkei\ ;
+垂死 > suishi\ ;
+細字 > hosoji\ ;
+細孔 > saikou\ ;
+堅守 > kenshu\ ;
+無償 > mushou\ ;
+火木 > kamoku\ ;
+終夜 > shuuya\ ;
+地界 > chikai\ ;
+関数 > kansuu\ ;
+絃声 > gensei\ ;
+言上 > gonjou\ ;
+開校 > kaikou\ ;
+拝謝 > haisha\ ;
+間服 > aifuku\ ;
+解党 > kaitou\ ;
+閉校 > heikou\ ;
+無傷 > mukizu\ ;
+揚水 > yousui\ ;
+撤去 > tekkyo\ ;
+製法 > seihou\ ;
+滞陣 > taijin\ ;
+精根 > seikon\ ;
+因縁 > in''nen\ ;
+西岸 > seigan\ ;
+嘆願 > tangan\ ;
+澱粉 > denpun\ ;
+統制 > tousei\ ;
+持薬 > jiyaku\ ;
+回線 > kaisen\ ;
+間断 > kandan\ ;
+拝観 > haikan\ ;
+要害 > yougai\ ;
+紙屋 > kamiya\ ;
+降任 > kounin\ ;
+拝見 > haiken\ ;
+蟠踞 > bankyo\ ;
+間数 > makazu\ ;
+国禁 > kokkin\ ;
+挿絵 > sashie\ ;
+地獄 > jigoku\ ;
+無休 > mukyuu\ ;
+垂楊 > suiyou\ ;
+掌理 > shouri\ ;
+細大 > saidai\ ;
+閑散 > kansan\ ;
+開明 > kaimei\ ;
+土産 > miyage\ ;
+解体 > kaitai\ ;
+接点 > setten\ ;
+国礎 > kokuso\ ;
+滑降 > kakkou\ ;
+閨房 > keibou\ ;
+開方 > kaihou\ ;
+端麗 > tanrei\ ;
+血膿 > chiumi\ ;
+解任 > kainin\ ;
+方々 > houbou\ ;
+絶倒 > zettou\ ;
+紙子 > kamiko\ ;
+炭層 > tansou\ ;
+撤兵 > teppei\ ;
+紫外 > shigai\ ;
+累増 > ruizou\ ;
+行者 > gyouja\ ;
+採点 > saiten\ ;
+携帯 > keitai\ ;
+採炭 > saitan\ ;
+烈士 > resshi\ ;
+開放 > kaihou\ ;
+漫談 > mandan\ ;
+手駒 > tegoma\ ;
+堅塁 > kenrui\ ;
+手首 > tekubi\ ;
+堂塔 > doutou\ ;
+長期 > chouki\ ;
+堅城 > kenjou\ ;
+炉心 > roshin\ ;
+筆鋒 > hippou\ ;
+堂堂 > doudou\ ;
+漫言 > mangen\ ;
+回答 > kaitou\ ;
+親和 > shinwa\ ;
+経口 > keikou\ ;
+城市 > joushi\ ;
+絶交 > zekkou\ ;
+垂木 > taruki\ ;
+場内 > jounai\ ;
+按腹 > anpuku\ ;
+補注 > hochuu\ ;
+地点 > chiten\ ;
+漢詩 > kanshi\ ;
+闇屋 > yamiya\ ;
+絶世 > zessei\ ;
+技量 > giryou\ ;
+手頸 > tekubi\ ;
+組合 > kumiai\ ;
+炉床 > roshou\ ;
+手頃 > tegoro\ ;
+見地 > kenchi\ ;
+要塞 > yousai\ ;
+被爆 > hibaku\ ;
+蟷螂 > tourou\ ;
+覆土 > fukudo\ ;
+培地 > baichi\ ;
+潜航 > senkou\ ;
+西域 > seiiki\ ;
+給付 > kyuufu\ ;
+給仕 > kyuuji\ ;
+回礼 > kairei\ ;
+所願 > shogan\ ;
+闘士 > toushi\ ;
+結党 > kettou\ ;
+瀕死 > hinshi\ ;
+純増 > junzou\ ;
+開戦 > kaisen\ ;
+観光 > kankou\ ;
+製材 > seizai\ ;
+溜飲 > ryuuin\ ;
+表示 > hyouji\ ;
+要地 > youchi\ ;
+製本 > seihon\ ;
+烙印 > rakuin\ ;
+手際 > tegiwa\ ;
+手隙 > tesuki\ ;
+経典 > keiten\ ;
+親分 > oyabun\ ;
+紙型 > shikei\ ;
+等辺 > touhen\ ;
+点在 > tenzai\ ;
+地溝 > chikou\ ;
+給与 > kyuuyo\ ;
+炭塵 > tanjin\ ;
+国璽 > kokuji\ ;
+粗服 > sofuku\ ;
+血統 > kettou\ ;
+火急 > kakyuu\ ;
+域外 > ikigai\ ;
+竿頭 > kantou\ ;
+細君 > saikun\ ;
+灯影 > hokage\ ;
+投資 > toushi\ ;
+拙著 > setcho\ ;
+血糖 > kettou\ ;
+手長 > tenaga\ ;
+火影 > hokage\ ;
+排液 > haieki\ ;
+炭坑 > tankou\ ;
+闇夜 > yamiyo\ ;
+国王 > kokuou\ ;
+紅塵 > koujin\ ;
+見台 > kendai\ ;
+粉本 > funpon\ ;
+長打 > chouda\ ;
+見参 > kenzan\ ;
+精悍 > seikan\ ;
+圏点 > kenten\ ;
+火床 > hidoko\ ;
+血管 > kekkan\ ;
+経伝 > keiden\ ;
+捕球 > hokyuu\ ;
+成魚 > seigyo\ ;
+表皮 > hyouhi\ ;
+行程 > koutei\ ;
+揚揚 > youyou\ ;
+城外 > jougai\ ;
+指紋 > shimon\ ;
+排水 > haisui\ ;
+国父 > kokufu\ ;
+細分 > saibun\ ;
+災害 > saigai\ ;
+開廷 > kaitei\ ;
+嘉辰 > kashin\ ;
+捕獲 > hokaku\ ;
+持続 > jizoku\ ;
+溶銑 > yousen\ ;
+規則 > kisoku\ ;
+閉廷 > heitei\ ;
+握手 > akushu\ ;
+開店 > kaiten\ ;
+精彩 > seisai\ ;
+提携 > teikei\ ;
+手鍋 > tenabe\ ;
+掃海 > soukai\ ;
+竜馬 > ryuume\ ;
+城塞 > jousai\ ;
+経世 > keisei\ ;
+開平 > kaihei\ ;
+抗言 > kougen\ ;
+窮鼠 > kyuuso\ ;
+閉店 > heiten\ ;
+城塁 > jourui\ ;
+滑車 > kassha\ ;
+童顔 > dougan\ ;
+回生 > kaisei\ ;
+満願 > mangan\ ;
+開巻 > kaikan\ ;
+西南 > seinan\ ;
+探検 > tanken\ ;
+門弟 > montei\ ;
+戦雲 > sen''un\ ;
+手鉤 > tekagi\ ;
+湾頭 > wantou\ ;
+納品 > nouhin\ ;
+喧騒 > kensou\ ;
+損害 > songai\ ;
+米材 > beizai\ ;
+城址 > joushi\ ;
+戦隊 > sentai\ ;
+拝聞 > haibun\ ;
+蜚鳥 > hichou\ ;
+戦陣 > senjin\ ;
+精巧 > seikou\ ;
+精巣 > seisou\ ;
+満面 > manmen\ ;
+閑居 > kankyo\ ;
+竜頭 > ryuuzu\ ;
+滑走 > kassou\ ;
+喫飯 > kippan\ ;
+索具 > sakugu\ ;
+裏板 > uraita\ ;
+蝦錠 > ebijou\ ;
+火宅 > kataku\ ;
+戦闘 > sentou\ ;
+手酌 > tejaku\ ;
+拙者 > sessha\ ;
+開山 > kaisan\ ;
+長座 > chouza\ ;
+漢英 > kan''ei\ ;
+閉山 > heizan\ ;
+嘉賞 > kashou\ ;
+地検 > chiken\ ;
+閉居 > heikyo\ ;
+開封 > kaifuu\ ;
+摂取 > sesshu\ ;
+関大 > kandai\ ;
+国漢 > kokkan\ ;
+点光 > tenkou\ ;
+炭労 > tanrou\ ;
+抹茶 > matcha\ ;
+回状 > kaijou\ ;
+累代 > ruidai\ ;
+拘置 > kouchi\ ;
+純分 > junbun\ ;
+坦懐 > tankai\ ;
+均斉 > kinsei\ ;
+満開 > mankai\ ;
+均整 > kinsei\ ;
+累乗 > ruijou\ ;
+推断 > suidan\ ;
+散々 > sanzan\ ;
+批評 > hihyou\ ;
+授業 > jugyou\ ;
+融資 > yuushi\ ;
+推敲 > suikou\ ;
+累世 > ruisei\ ;
+血相 > kessou\ ;
+粘性 > nensei\ ;
+複座 > fukuza\ ;
+濃淡 > noutan\ ;
+掲揚 > keiyou\ ;
+見事 > migoto\ ;
+精子 > seishi\ ;
+堂上 > doujou\ ;
+螳螂 > tourou\ ;
+手軽 > tegaru\ ;
+灰塵 > haijin\ ;
+在校 > zaikou\ ;
+褥婦 > jokufu\ ;
+漕艇 > soutei\ ;
+長屋 > nagaya\ ;
+血痰 > kettan\ ;
+開始 > kaishi\ ;
+衆生 > shujou\ ;
+要件 > youken\ ;
+血痕 > kekkon\ ;
+域内 > ikinai\ ;
+長寿 > chouju\ ;
+要人 > youjin\ ;
+在来 > zairai\ ;
+挙用 > kyoyou\ ;
+長家 > nagaya\ ;
+裁断 > saidan\ ;
+抜萃 > bassui\ ;
+紛争 > funsou\ ;
+所載 > shosai\ ;
+手足 > teashi\ ;
+圧服 > appuku\ ;
+紛乱 > funran\ ;
+潰瘍 > kaiyou\ ;
+開墾 > kaikon\ ;
+地方 > chihou\ ;
+推挙 > suikyo\ ;
+国母 > kokubo\ ;
+粒度 > ryuudo\ ;
+地文 > chimon\ ;
+街燈 > gaitou\ ;
+游魚 > yuugyo\ ;
+抗菌 > koukin\ ;
+紙上 > shijou\ ;
+開場 > kaijou\ ;
+融解 > yuukai\ ;
+回漕 > kaisou\ ;
+土木 > doboku\ ;
+閉場 > heijou\ ;
+被服 > hifuku\ ;
+喉頭 > koutou\ ;
+閑地 > kanchi\ ;
+米懇 > beikon\ ;
+闘争 > tousou\ ;
+納会 > noukai\ ;
+開城 > kaijou\ ;
+閣員 > kakuin\ ;
+門外 > mongai\ ;
+捺染 > nassen\ ;
+被曝 > hibaku\ ;
+推戴 > suitai\ ;
+城内 > jounai\ ;
+管端 > kantan\ ;
+城兵 > jouhei\ ;
+漁船 > gyosen\ ;
+闇値 > yamine\ ;
+演習 > enshuu\ ;
+接戦 > sessen\ ;
+回游 > kaiyuu\ ;
+街灯 > gaitou\ ;
+競輪 > keirin\ ;
+持病 > jibyou\ ;
+長女 > choujo\ ;
+国権 > kokken\ ;
+紊乱 > bunran\ ;
+長夜 > chouya\ ;
+指環 > yubiwa\ ;
+拙稿 > sekkou\ ;
+土方 > dokata\ ;
+打診 > dashin\ ;
+善霊 > zenrei\ ;
+拝礼 > hairei\ ;
+四海 > shikai\ ;
+圧搾 > assaku\ ;
+溶解 > youkai\ ;
+演繹 > en''eki\ ;
+補強 > hokyou\ ;
+門地 > monchi\ ;
+拘禁 > koukin\ ;
+立錐 > rissui\ ;
+精嚢 > seinou\ ;
+善隣 > zenrin\ ;
+笑話 > shouwa\ ;
+鎔銑 > yousen\ ;
+戦車 > sensha\ ;
+坑底 > koutei\ ;
+灯台 > toudai\ ;
+算程 > santei\ ;
+手許 > temoto\ ;
+渠魁 > kyokai\ ;
+衰残 > suizan\ ;
+衰死 > suishi\ ;
+粉屋 > konaya\ ;
+城代 > joudai\ ;
+所論 > shoron\ ;
+四民 > shimin\ ;
+団欒 > danran\ ;
+満載 > mansai\ ;
+接待 > settai\ ;
+満車 > mansha\ ;
+所詮 > shosen\ ;
+城主 > joushu\ ;
+在所 > zaisho\ ;
+瀑布 > bakufu\ ;
+米帝 > beitei\ ;
+糖分 > toubun\ ;
+搭乗 > toujou\ ;
+喝采 > kassai\ ;
+開口 > kaikou\ ;
+溶融 > youyuu\ ;
+灰分 > kaibun\ ;
+嘲罵 > chouba\ ;
+筋腫 > kinshu\ ;
+閉口 > heikou\ ;
+蛮風 > banpuu\ ;
+懇願 > kongan\ ;
+筆致 > hitchi\ ;
+所見 > shoken\ ;
+所要 > shoyou\ ;
+図柄 > zugara\ ;
+装弾 > soudan\ ;
+戊辰 > boshin\ ;
+漁網 > gyomou\ ;
+国是 > kokuze\ ;
+灯光 > toukou\ ;
+糞便 > funben\ ;
+蝴蝶 > kochou\ ;
+潮瀬 > shiose\ ;
+関係 > kankei\ ;
+童貞 > doutei\ ;
+突風 > toppuu\ ;
+激昂 > gekkou\ ;
+折線 > sessen\ ;
+火先 > hosaki\ ;
+米屋 > komeya\ ;
+火元 > himoto\ ;
+地形 > chikei\ ;
+満貫 > mangan\ ;
+装幀 > soutei\ ;
+揺動 > youdou\ ;
+簡明 > kanmei\ ;
+戯評 > gihyou\ ;
+精勤 > seikin\ ;
+抜糸 > basshi\ ;
+血清 > kessei\ ;
+穴馬 > anauma\ ;
+精励 > seirei\ ;
+火傷 > yakedo\ ;
+滅菌 > mekkin\ ;
+筆耕 > hikkou\ ;
+鎮護 > chingo\ ;
+蛮隷 > banrei\ ;
+筆者 > hissha\ ;
+抜粋 > bassui\ ;
+地底 > chitei\ ;
+在役 > zaieki\ ;
+才藻 > saisou\ ;
+地平 > chihei\ ;
+精到 > seitou\ ;
+換喩 > kan''yu\ ;
+粉塵 > funjin\ ;
+地帯 > chitai\ ;
+節点 > setten\ ;
+推定 > suitei\ ;
+童謡 > douyou\ ;
+問題 > mondai\ ;
+門前 > monzen\ ;
+四桁 > yoketa\ ;
+行殊 > gyoujo\ ;
+坦坦 > tantan\ ;
+空音 > sorane\ ;
+関与 > kan''yo\ ;
+圧延 > atsuen\ ;
+衰替 > suitai\ ;
+開催 > kaisai\ ;
+門出 > kadode\ ;
+精兵 > seihei\ ;
+採寸 > saisun\ ;
+開傘 > kaisan\ ;
+扶翼 > fuyoku\ ;
+損亡 > sonbou\ ;
+閃光 > senkou\ ;
+籠居 > roukyo\ ;
+坑外 > kougai\ ;
+懸軍 > kengun\ ;
+龍馬 > ryuume\ ;
+空電 > kuuden\ ;
+四書 > shisho\ ;
+挙止 > kyoshi\ ;
+製品 > seihin\ ;
+空際 > kuusai\ ;
+善道 > zendou\ ;
+清風 > seifuu\ ;
+管状 > kanjou\ ;
+鍛錬 > tanren\ ;
+地層 > chisou\ ;
+火中 > kachuu\ ;
+国技 > kokugi\ ;
+録音 > rokuon\ ;
+鍛鋼 > tankou\ ;
+裁定 > seitei\ ;
+所蔵 > shozou\ ;
+長円 > chouen\ ;
+開会 > kaikai\ ;
+測鎖 > sokusa\ ;
+潟湖 > sekiko\ ;
+喉輪 > nodowa\ ;
+渋面 > juumen\ ;
+閉会 > heikai\ ;
+回旋 > kaisen\ ;
+筆紙 > hisshi\ ;
+捕捉 > hosoku\ ;
+空閨 > kuukei\ ;
+潮気 > shioke\ ;
+回文 > kaibun\ ;
+演目 > enmoku\ ;
+空間 > kuukan\ ;
+国憲 > kokken\ ;
+回数 > kaisuu\ ;
+投稿 > toukou\ ;
+国慶 > kokkei\ ;
+才芸 > saigei\ ;
+複利 > fukuri\ ;
+裏声 > uragoe\ ;
+滞納 > tainou\ ;
+四散 > shisan\ ;
+渓間 > keikan\ ;
+拠点 > kyoten\ ;
+手芸 > shugei\ ;
+測鉛 > sokuen\ ;
+在官 > zaikan\ ;
+噴煙 > fun''en\ ;
+滞米 > taibei\ ;
+漂砂 > hyousa\ ;
+門人 > monjin\ ;
+筆算 > hissan\ ;
+国恩 > kokuon\ ;
+掃射 > sousha\ ;
+鎔解 > youkai\ ;
+筆答 > hittou\ ;
+才腕 > saiwan\ ;
+困憊 > konpai\ ;
+節水 > sessui\ ;
+潅漑 > kangai\ ;
+筆端 > hittan\ ;
+答礼 > tourei\ ;
+手腕 > shuwan\ ;
+潜水 > sensui\ ;
+激怒 > gekido\ ;
+才能 > sainou\ ;
+装填 > souten\ ;
+拳法 > kenpou\ ;
+清閑 > seikan\ ;
+接地 > setchi\ ;
+鍛造 > tanzou\ ;
+竜蝦 > iseebi\ ;
+地変 > chihen\ ;
+血栓 > kessen\ ;
+排外 > haigai\ ;
+団扇 > uchiwa\ ;
+手職 > tejoku\ ;
+窓辺 > madobe\ ;
+術数 > jussuu\ ;
+籠城 > roujou\ ;
+漫然 > manzen\ ;
+滞空 > taikuu\ ;
+深雪 > miyuki\ ;
+地塊 > chikai\ ;
+回戦 > kaisen\ ;
+濁度 > dakudo\ ;
+手翰 > shukan\ ;
+在天 > zaiten\ ;
+行旅 > kouryo\ ;
+稽首 > keishu\ ;
+竜虎 > ryouko\ ;
+在外 > zaigai\ ;
+衰態 > suitai\ ;
+行文 > koubun\ ;
+血書 > kessho\ ;
+裂地 > kireji\ ;
+坑口 > koukou\ ;
+地域 > chiiki\ ;
+減配 > genpai\ ;
+積雲 > sekiun\ ;
+満蒙 > manmou\ ;
+漸減 > zengen\ ;
+回想 > kaisou\ ;
+滑空 > kakkuu\ ;
+深間 > fukama\ ;
+滑稽 > kokkei\ ;
+漫漫 > manman\ ;
+錬鋼 > renkou\ ;
+血斑 > keppan\ ;
+稚鰤 > warasa\ ;
+減退 > gentai\ ;
+端艇 > tantei\ ;
+接吻 > seppun\ ;
+推参 > suisan\ ;
+拘泥 > koudei\ ;
+筋目 > sujime\ ;
+戦艦 > senkan\ ;
+補則 > hosoku\ ;
+捨子 > sutego\ ;
+噴泉 > funsen\ ;
+稚鮎 > chiayu\ ;
+蜥蜴 > tokage\ ;
+拝殿 > haiden\ ;
+稚魚 > chigyo\ ;
+均勢 > kinsei\ ;
+国富 > kokufu\ ;
+採取 > saishu\ ;
+坑内 > kounai\ ;
+噴水 > funsui\ ;
+手紙 > tegami\ ;
+算法 > sanpou\ ;
+国字 > kokuji\ ;
+囚徒 > shuuto\ ;
+衰幣 > suihei\ ;
+篆書 > tensho\ ;
+種類 > shurui\ ;
+清酒 > seishu\ ;
+粉体 > funtai\ ;
+圏外 > kengai\ ;
+補償 > hoshou\ ;
+商運 > shouun\ ;
+回廊 > kairou\ ;
+空転 > kuuten\ ;
+均分 > kinbun\ ;
+滅私 > messhi\ ;
+空軍 > kuugun\ ;
+空車 > kuusha\ ;
+粋人 > suijin\ ;
+手籠 > tekago\ ;
+空身 > karami\ ;
+指数 > shisuu\ ;
+善行 > zenkou\ ;
+錚錚 > sousou\ ;
+手簡 > shukan\ ;
+算段 > sandan\ ;
+清遊 > seiyuu\ ;
+地名 > chimei\ ;
+満腔 > mankou\ ;
+披瀝 > hireki\ ;
+拒止 > kyoshi\ ;
+手箱 > tebako\ ;
+手管 > tekuda\ ;
+筆生 > hissei\ ;
+補修 > hoshuu\ ;
+接写 > sessha\ ;
+四川 > shisen\ ;
+手筋 > tesuji\ ;
+手筈 > tehazu\ ;
+挙手 > kyoshu\ ;
+突貫 > tokkan\ ;
+衡平 > kouhei\ ;
+準縄 > junjou\ ;
+竹縁 > takeen\ ;
+排卵 > hairan\ ;
+湯花 > yubana\ ;
+減資 > genshi\ ;
+血戦 > kessen\ ;
+懇請 > konsei\ ;
+懇談 > kondan\ ;
+捨場 > suteba\ ;
+採光 > saikou\ ;
+地勢 > chisei\ ;
+湯船 > yubune\ ;
+筒状 > toujou\ ;
+衆愚 > shuugu\ ;
+稲門 > toumon\ ;
+裁判 > saiban\ ;
+竜胆 > rindou\ ;
+所管 > shokan\ ;
+深部 > shinbu\ ;
+戸籍 > koseki\ ;
+探偵 > tantei\ ;
+節操 > sessou\ ;
+被告 > hikoku\ ;
+混迷 > konmei\ ;
+滅相 > messou\ ;
+端線 > tansen\ ;
+端緒 > tancho\ ;
+在勤 > zaikin\ ;
+潔斎 > kessai\ ;
+成育 > seiiku\ ;
+蜈蚣 > mukade\ ;
+圧勝 > asshou\ ;
+海鼠 > namako\ ;
+戦線 > sensen\ ;
+漿果 > shouka\ ;
+固執 > koshuu\ ;
+接伴 > seppan\ ;
+竹簀 > takesu\ ;
+器楽 > kigaku\ ;
+地元 > jimoto\ ;
+混載 > konsai\ ;
+液面 > ekimen\ ;
+蛇足 > dasoku\ ;
+滾滾 > konkon\ ;
+国土 > kokudo\ ;
+虹霓 > kougei\ ;
+行幸 > miyuki\ ;
+行年 > kounen\ ;
+空論 > kuuron\ ;
+空談 > kuudan\ ;
+漁港 > gyokou\ ;
+清貧 > seihin\ ;
+才知 > saichi\ ;
+蝋紙 > roushi\ ;
+愛鳥 > aichou\ ;
+蛮行 > bankou\ ;
+漏水 > rousui\ ;
+商議 > shougi\ ;
+蠱惑 > kowaku\ ;
+戯笑 > gishou\ ;
+筋炎 > kin''en\ ;
+排便 > haiben\ ;
+国営 > kokuei\ ;
+四姓 > shisei\ ;
+拮据 > kikkyo\ ;
+披歴 > hireki\ ;
+捕囚 > hoshuu\ ;
+回天 > kaiten\ ;
+振子 > furiko\ ;
+噸数 > tonsuu\ ;
+漁法 > gyohou\ ;
+装丁 > soutei\ ;
+団塊 > dankai\ ;
+捧呈 > houtei\ ;
+減衰 > gensui\ ;
+地代 > chidai\ ;
+戦端 > sentan\ ;
+喫緊 > kikkin\ ;
+四声 > shisei\ ;
+手癖 > tekuse\ ;
+拮抗 > kikkou\ ;
+錯誤 > sakugo\ ;
+税関 > zeikan\ ;
+漁民 > gyomin\ ;
+在住 > zaijuu\ ;
+蚊鉤 > kabari\ ;
+指弾 > shidan\ ;
+回報 > kaihou\ ;
+地上 > chijou\ ;
+在任 > zainin\ ;
+圧伏 > appuku\ ;
+潮干 > shiohi\ ;
+海魚 > kaigyo\ ;
+嗜眠 > shimin\ ;
+算数 > sansuu\ ;
+土俵 > dohyou\ ;
+園内 > en''nai\ ;
+団地 > danchi\ ;
+土俗 > dozoku\ ;
+蚊針 > kabari\ ;
+衆寡 > shuuka\ ;
+抜歯 > basshi\ ;
+潮差 > chousa\ ;
+濃厚 > noukou\ ;
+漢書 > kansho\ ;
+打球 > dakyuu\ ;
+鼻鏡 > bikyou\ ;
+符牒 > fuchou\ ;
+在世 > zaisei\ ;
+授乳 > junyuu\ ;
+海驢 > ashika\ ;
+漫文 > manbun\ ;
+表土 > hyoudo\ ;
+成算 > seisan\ ;
+国務 > kokumu\ ;
+消音 > shouon\ ;
+簡単 > kantan\ ;
+我等 > warera\ ;
+挽回 > bankai\ ;
+折檻 > sekkan\ ;
+空虚 > kuukyo\ ;
+激務 > gekimu\ ;
+土中 > dochuu\ ;
+所用 > shoyou\ ;
+所産 > shosan\ ;
+漢方 > kanpou\ ;
+淺見 > senken\ ;
+融点 > yuuten\ ;
+国利 > kokuri\ ;
+漢文 > kanbun\ ;
+手玉 > tedama\ ;
+滔滔 > toutou\ ;
+喪章 > moshou\ ;
+成空 > seikuu\ ;
+嚇怒 > kakudo\ ;
+団員 > dan''in\ ;
+筆法 > hippou\ ;
+海風 > kaifuu\ ;
+手狭 > tezema\ ;
+国光 > kokkou\ ;
+指導 > shidou\ ;
+鼾酔 > kansui\ ;
+銀鱗 > ginrin\ ;
+感電 > kanden\ ;
+啓蒙 > keimou\ ;
+衆多 > shuuta\ ;
+税金 > zeikin\ ;
+指定 > shitei\ ;
+温良 > onryou\ ;
+喪祭 > sousai\ ;
+懐胎 > kaitai\ ;
+海面 > kaimen\ ;
+黒鵐 > kuroji\ ;
+累々 > ruirui\ ;
+漫才 > manzai\ ;
+蠏座 > kaniza\ ;
+衰勢 > suisei\ ;
+漁村 > gyoson\ ;
+海難 > kainan\ ;
+堂々 > doudou\ ;
+囂囂 > gougou\ ;
+漁期 > ryouki\ ;
+空荷 > karani\ ;
+抱擁 > houyou\ ;
+鋳貨 > chuuka\ ;
+血塊 > kekkai\ ;
+四千 > yonsen\ ;
+四十 > yonjuu\ ;
+簡便 > kanben\ ;
+国会 > kokkai\ ;
+管弦 > kangen\ ;
+海防 > kaibou\ ;
+唐詩 > toushi\ ;
+鼻輪 > hanawa\ ;
+国交 > kokkou\ ;
+国事 > kokuji\ ;
+海関 > kaikan\ ;
+投書 > tousho\ ;
+海門 > kaimon\ ;
+図体 > zuutai\ ;
+箱屋 > hakoya\ ;
+滅法 > meppou\ ;
+四分 > shibun\ ;
+抵抗 > teikou\ ;
+鑽孔 > sankou\ ;
+濁世 > dakuse\ ;
+点々 > tenten\ ;
+齲蝕 > ushoku\ ;
+手漉 > tesuki\ ;
+表具 > hyougu\ ;
+鍛練 > tanren\ ;
+蟹座 > kaniza\ ;
+蚯蚓 > mimizu\ ;
+溶液 > youeki\ ;
+漁撈 > gyorou\ ;
+節奏 > sessou\ ;
+商舗 > shouho\ ;
+鋼製 > kousei\ ;
+拐帯 > kaitai\ ;
+減耗 > genmou\ ;
+端物 > hamono\ ;
+感銘 > kanmei\ ;
+戦犯 > senpan\ ;
+抱懐 > houkai\ ;
+行司 > gyouji\ ;
+担当 > tantou\ ;
+築城 > tsuiki\ ;
+窒素 > chisso\ ;
+団体 > dantai\ ;
+拠守 > kyoshu\ ;
+鋭角 > eikaku\ ;
+秘録 > hiroku\ ;
+招宴 > shouen\ ;
+私闘 > shitou\ ;
+衰亡 > suibou\ ;
+竜王 > ryuuou\ ;
+端然 > tanzen\ ;
+団交 > dankou\ ;
+噴射 > funsha\ ;
+行動 > koudou\ ;
+問罪 > monzai\ ;
+手法 > shuhou\ ;
+黛青 > taisei\ ;
+拙守 > sesshu\ ;
+衰世 > suisei\ ;
+蛇腹 > jabara\ ;
+等方 > touhou\ ;
+命題 > meidai\ ;
+潜在 > senzai\ ;
+慣行 > kankou\ ;
+手水 > temizu\ ;
+抵当 > teitou\ ;
+愛郷 > aikyou\ ;
+笑気 > shouki\ ;
+溝渠 > koukyo\ ;
+抗拒 > koukyo\ ;
+戦災 > sensai\ ;
+銘銘 > meimei\ ;
+手毬 > temari\ ;
+折折 > oriori\ ;
+湯玉 > yudama\ ;
+挫傷 > zashou\ ;
+算定 > santei\ ;
+競演 > kyouen\ ;
+挙動 > kyodou\ ;
+流音 > ryuuon\ ;
+手段 > shudan\ ;
+成犬 > seiken\ ;
+鎮火 > chinka\ ;
+抗戦 > kousen\ ;
+黒雲 > kokuun\ ;
+投手 > toushu\ ;
+満点 > manten\ ;
+行儀 > gyougi\ ;
+鍵盤 > kenban\ ;
+流露 > ryuuro\ ;
+把捉 > hasoku\ ;
+指向 > shikou\ ;
+血判 > keppan\ ;
+指名 > shimei\ ;
+藻類 > sourui\ ;
+流離 > ryuuri\ ;
+銘酒 > meishu\ ;
+海道 > kaidou\ ;
+鼠賊 > sozoku\ ;
+挙兵 > kyohei\ ;
+温突 > ondoru\ ;
+手機 > tebata\ ;
+鑑定 > kantei\ ;
+挙党 > kyotou\ ;
+拷問 > goumon\ ;
+指南 > shinan\ ;
+融朗 > yuurou\ ;
+麺類 > menrui\ ;
+減算 > genzan\ ;
+銅銭 > dousen\ ;
+競泳 > kyouei\ ;
+行使 > koushi\ ;
+戸毎 > kogoto\ ;
+銅鉱 > doukou\ ;
+減等 > gentou\ ;
+手業 > tewaza\ ;
+漸増 > zenzou\ ;
+福音 > fukuin\ ;
+源泉 > gensen\ ;
+海軍 > kaigun\ ;
+消費 > shouhi\ ;
+満満 > manman\ ;
+浪速 > naniwa\ ;
+銀鉱 > ginkou\ ;
+行人 > koujin\ ;
+問答 > mondou\ ;
+吹鳴 > suimei\ ;
+筆才 > hissai\ ;
+行事 > gyouji\ ;
+銀鈴 > ginrei\ ;
+清純 > seijun\ ;
+筆戦 > hissen\ ;
+移設 > isetsu\ ;
+虚誕 > kyotan\ ;
+戦法 > senpou\ ;
+淋菌 > rinkin\ ;
+溶材 > youzai\ ;
+減税 > genzei\ ;
+抗弁 > kouben\ ;
+策応 > sakuou\ ;
+空空 > kuukuu\ ;
+競歩 > kyouho\ ;
+清粋 > seisui\ ;
+私邸 > shitei\ ;
+麪類 > menrui\ ;
+温石 > onjaku\ ;
+虚言 > kyogen\ ;
+黒鍵 > kokken\ ;
+手柄 > tegara\ ;
+私選 > shisen\ ;
+手枷 > tekase\ ;
+混線 > konsen\ ;
+私道 > shidou\ ;
+筆意 > hitsui\ ;
+節制 > sessei\ ;
+端正 > tansei\ ;
+手札 > tefuda\ ;
+清算 > seisan\ ;
+答弁 > touben\ ;
+扁桃 > hentou\ ;
+潜函 > senkan\ ;
+洗顔 > sengan\ ;
+拝啓 > haikei\ ;
+戦死 > senshi\ ;
+手書 > shusho\ ;
+混紡 > konbou\ ;
+哀調 > aichou\ ;
+浜辺 > hamabe\ ;
+感謝 > kansha\ ;
+黒鉛 > kokuen\ ;
+才智 > saichi\ ;
+品詞 > hinshi\ ;
+満水 > mansui\ ;
+戸棚 > todana\ ;
+洋館 > youkan\ ;
+鼎談 > teidan\ ;
+湿気 > shikke\ ;
+蠕動 > zendou\ ;
+我流 > garyuu\ ;
+商科 > shouka\ ;
+拝命 > haimei\ ;
+悪風 > akufuu\ ;
+洗面 > senmen\ ;
+拝呈 > haitei\ ;
+潰乱 > kairan\ ;
+洋風 > youfuu\ ;
+空砲 > kuuhou\ ;
+潜像 > senzou\ ;
+愛読 > aidoku\ ;
+手旗 > tebata\ ;
+愛誦 > aishou\ ;
+所望 > shomou\ ;
+所有 > shoyuu\ ;
+黒酒 > kuroki\ ;
+打撲 > daboku\ ;
+指令 > shirei\ ;
+窃盗 > settou\ ;
+銀輪 > ginrin\ ;
+禅門 > zenmon\ ;
+打撃 > dageki\ ;
+節倹 > sekken\ ;
+承引 > shouin\ ;
+範例 > hanrei\ ;
+黄銅 > koudou\ ;
+意識 > ishiki\ ;
+洞門 > doumon\ ;
+神馬 > shinme\ ;
+投射 > tousha\ ;
+箝口 > kankou\ ;
+喫水 > kissui\ ;
+吸飲 > kyuuin\ ;
+空目 > sorame\ ;
+品行 > hinkou\ ;
+湯水 > yumizu\ ;
+扁旁 > henbou\ ;
+悪霊 > akurei\ ;
+黄金 > kogane\ ;
+手摺 > tesuri\ ;
+稀薄 > kihaku\ ;
+立法 > rippou\ ;
+持久 > jikyuu\ ;
+節会 > sechie\ ;
+我欲 > gayoku\ ;
+湯殿 > yudono\ ;
+端株 > hakabu\ ;
+節介 > sekkai\ ;
+精々 > seizei\ ;
+拐取 > kaishu\ ;
+私財 > shizai\ ;
+吸音 > kyuuon\ ;
+管制 > kansei\ ;
+湧水 > yuusui\ ;
+蝋梅 > roubai\ ;
+渚畔 > shohan\ ;
+営業 > eigyou\ ;
+減産 > gensan\ ;
+鋼線 > kousen\ ;
+準星 > junsei\ ;
+合鴨 > aigamo\ ;
+手指 > shushi\ ;
+黄道 > koudou\ ;
+手拭 > tefuki\ ;
+競映 > kyouei\ ;
+吹雪 > fubuki\ ;
+溺愛 > dekiai\ ;
+湯槽 > yubune\ ;
+筋子 > sujiko\ ;
+愁訴 > shuuso\ ;
+薫香 > kunkou\ ;
+鉄鋼 > tekkou\ ;
+私論 > shiron\ ;
+漢名 > kanmei\ ;
+湖沼 > koshou\ ;
+蚕紙 > sanshi\ ;
+蚕糸 > sanshi\ ;
+悌順 > teijun\ ;
+洗錬 > senren\ ;
+満杯 > manpai\ ;
+薬餌 > yakuji\ ;
+鍼治 > shinji\ ;
+鉄鉱 > tekkou\ ;
+福運 > fukuun\ ;
+押収 > oushuu\ ;
+端整 > tansei\ ;
+薫風 > kunpuu\ ;
+究理 > kyuuri\ ;
+録画 > rokuga\ ;
+銓衡 > senkou\ ;
+河鹿 > kajika\ ;
+鋼管 > koukan\ ;
+鼻翼 > biyoku\ ;
+漆器 > shikki\ ;
+禁酒 > kinshu\ ;
+藩邸 > hantei\ ;
+戦敗 > senpai\ ;
+私見 > shiken\ ;
+浄財 > jouzai\ ;
+虎落 > mogari\ ;
+海蘿 > funori\ ;
+所懐 > shokai\ ;
+温灸 > onkyuu\ ;
+海藻 > kaisou\ ;
+扇情 > senjou\ ;
+私製 > shisei\ ;
+悪銭 > akusen\ ;
+社風 > shafuu\ ;
+名香 > meikou\ ;
+和訳 > wayaku\ ;
+銅製 > dousei\ ;
+準拠 > junkyo\ ;
+涙腺 > ruisen\ ;
+等外 > tougai\ ;
+抱卵 > houran\ ;
+払底 > futtei\ ;
+所感 > shokan\ ;
+洋銀 > yougin\ ;
+秘薬 > hiyaku\ ;
+鎮撫 > chinbu\ ;
+社頭 > shatou\ ;
+私行 > shikou\ ;
+喪服 > mofuku\ ;
+算体 > santai\ ;
+和親 > washin\ ;
+手役 > teyaku\ ;
+銀製 > ginsei\ ;
+黙許 > mokkyo\ ;
+手形 > tegata\ ;
+競技 > kyougi\ ;
+蚕種 > sanshu\ ;
+打席 > daseki\ ;
+港湾 > kouwan\ ;
+薫陶 > kuntou\ ;
+手引 > tebiki\ ;
+渾沌 > konton\ ;
+減点 > genten\ ;
+扇形 > senkei\ ;
+演劇 > engeki\ ;
+悪酒 > akushu\ ;
+所思 > shoshi\ ;
+禁輸 > kin''yu\ ;
+浮薄 > fuhaku\ ;
+同類 > dourui\ ;
+銀行 > ginkou\ ;
+才幹 > saikan\ ;
+洋酒 > youshu\ ;
+龍王 > ryuuou\ ;
+情趣 > joushu\ ;
+成文 > seibun\ ;
+懸案 > ken''an\ ;
+手帳 > techou\ ;
+成敗 > seibai\ ;
+虚聞 > kyobun\ ;
+担体 > tantai\ ;
+手帖 > techou\ ;
+鈍間 > noroma\ ;
+針魚 > hariyo\ ;
+手工 > shukou\ ;
+波間 > namima\ ;
+鼓膜 > komaku\ ;
+憫然 > binzen\ ;
+悪道 > akudou\ ;
+浅見 > senken\ ;
+野鳥 > yachou\ ;
+波長 > hachou\ ;
+鼓腹 > kofuku\ ;
+鼓腸 > kochou\ ;
+治験 > chiken\ ;
+溶岩 > yougan\ ;
+海草 > kaisou\ ;
+法難 > hounan\ ;
+味読 > midoku\ ;
+洗車 > sensha\ ;
+告辞 > kokuji\ ;
+各項 > kakkou\ ;
+沸騰 > futtou\ ;
+温海 > atsumi\ ;
+善業 > zengou\ ;
+扁平 > henpei\ ;
+立方 > rippou\ ;
+笠子 > kasago\ ;
+活計 > kakkei\ ;
+投合 > tougou\ ;
+憤然 > funzen\ ;
+号館 > goukan\ ;
+滞在 > taizai\ ;
+渡渉 > toshou\ ;
+所帯 > shotai\ ;
+抗原 > kougen\ ;
+渦流 > karyuu\ ;
+漢人 > kanjin\ ;
+漁労 > gyorou\ ;
+浪華 > naniwa\ ;
+折半 > seppan\ ;
+金魚 > kingyo\ ;
+嘆声 > tansei\ ;
+銘茶 > meicha\ ;
+称美 > shoubi\ ;
+私蔵 > shizou\ ;
+味覚 > mikaku\ ;
+龕灯 > gandou\ ;
+黴菌 > baikin\ ;
+抜剣 > bakken\ ;
+善根 > zenkon\ ;
+名門 > meimon\ ;
+空港 > kuukou\ ;
+同門 > doumon\ ;
+蛮民 > banmin\ ;
+抜刀 > battou\ ;
+台風 > taifuu\ ;
+慧眼 > keigan\ ;
+才子 > saishi\ ;
+錘状 > suijou\ ;
+溶媒 > youbai\ ;
+禅譲 > zenjou\ ;
+沿革 > enkaku\ ;
+浪花 > naniwa\ ;
+端役 > hayaku\ ;
+台顔 > daigan\ ;
+呉越 > goetsu\ ;
+台頭 > taitou\ ;
+渋滞 > juutai\ ;
+混然 > konzen\ ;
+筋合 > sujiai\ ;
+減法 > genpou\ ;
+投函 > toukan\ ;
+善書 > zensho\ ;
+空洞 > kuudou\ ;
+鈑金 > bankin\ ;
+源平 > genpei\ ;
+名鑑 > meikan\ ;
+等号 > tougou\ ;
+嗣子 > shishi\ ;
+野駒 > nogoma\ ;
+浮腫 > mukumi\ ;
+減水 > gensui\ ;
+麻裏 > asaura\ ;
+種痘 > shutou\ ;
+鈍重 > donjuu\ ;
+叩頭 > koutou\ ;
+憲法 > kenpou\ ;
+所定 > shotei\ ;
+釘頭 > teitou\ ;
+禀請 > rinsei\ ;
+涙管 > ruikan\ ;
+所存 > shozon\ ;
+泥酔 > deisui\ ;
+減殺 > gensai\ ;
+減段 > gentan\ ;
+鎮座 > chinza\ ;
+穂状 > suijou\ ;
+口頭 > koutou\ ;
+清清 > seisei\ ;
+合鍵 > aikagi\ ;
+筆勢 > hissei\ ;
+立憲 > rikken\ ;
+善政 > zensei\ ;
+洞見 > douken\ ;
+礼金 > reikin\ ;
+懐柔 > kaijuu\ ;
+反騰 > hantou\ ;
+蘚苔 > sentai\ ;
+満干 > mankan\ ;
+禽舎 > kinsha\ ;
+告諭 > kokuyu\ ;
+清浄 > seijou\ ;
+等分 > toubun\ ;
+空欄 > kuuran\ ;
+没頭 > bottou\ ;
+抗体 > koutai\ ;
+句集 > kushuu\ ;
+手塩 > teshio\ ;
+湿布 > shippu\ ;
+端山 > hayama\ ;
+惣菜 > souzai\ ;
+成形 > seikei\ ;
+竜座 > ryuuza\ ;
+鉄製 > tessei\ ;
+告訴 > kokuso\ ;
+海綿 > kaimen\ ;
+嗜好 > shikou\ ;
+受領 > juryou\ ;
+筆写 > hissha\ ;
+渇水 > kassui\ ;
+済民 > saimin\ ;
+禁衛 > kin''ei\ ;
+抗争 > kousou\ ;
+清水 > seisui\ ;
+合金 > goukin\ ;
+混淆 > konkou\ ;
+品等 > hintou\ ;
+承允 > shouin\ ;
+悪言 > akugen\ ;
+礼遇 > reiguu\ ;
+喜悦 > kietsu\ ;
+立志 > risshi\ ;
+鼓笛 > koteki\ ;
+成年 > seinen\ ;
+私考 > shikou\ ;
+憤死 > funshi\ ;
+麻薬 > mayaku\ ;
+渇死 > kasshi\ ;
+端子 > tanshi\ ;
+懇望 > konmou\ ;
+虚礼 > kyorei\ ;
+融合 > yuugou\ ;
+同邦 > douhou\ ;
+沈香 > jinkou\ ;
+懇書 > konsho\ ;
+黄葉 > kouyou\ ;
+等値 > touchi\ ;
+湾岸 > wangan\ ;
+満山 > manzan\ ;
+螢光 > keikou\ ;
+双頭 > soutou\ ;
+商機 > shouki\ ;
+才噸 > saiton\ ;
+同道 > doudou\ ;
+稲熱 > imochi\ ;
+鎮守 > chinju\ ;
+滴下 > tekika\ ;
+品種 > hinshu\ ;
+黄菊 > kigiku\ ;
+技倆 > giryou\ ;
+愚策 > gusaku\ ;
+混沌 > konton\ ;
+各部 > kakubu\ ;
+波路 > namiji\ ;
+反面 > hanmen\ ;
+善戦 > zensen\ ;
+洋装 > yousou\ ;
+洋裁 > yousai\ ;
+所在 > shozai\ ;
+悪血 > oketsu\ ;
+神話 > shinwa\ ;
+慨然 > gaizen\ ;
+競売 > keibai\ ;
+藻草 > mogusa\ ;
+移着 > ichaku\ ;
+祝詞 > norito\ ;
+洋行 > youkou\ ;
+同輩 > douhai\ ;
+急須 > kyuusu\ ;
+秘策 > hisaku\ ;
+消磨 > shouma\ ;
+黙考 > mokkou\ ;
+憎気 > nikuge\ ;
+同車 > dousha\ ;
+消磁 > shouji\ ;
+唱歌 > shouka\ ;
+愛称 > aishou\ ;
+湖心 > koshin\ ;
+淡淡 > tantan\ ;
+善感 > zenkan\ ;
+沙門 > shamon\ ;
+種火 > tanebi\ ;
+銅線 > dousen\ ;
+怨霊 > onryou\ ;
+手品 > tejina\ ;
+我家 > wagaya\ ;
+空曹 > kuusou\ ;
+戦士 > senshi\ ;
+反間 > hankan\ ;
+才名 > saimei\ ;
+社賓 > shahin\ ;
+液状 > ekijou\ ;
+恵贈 > keizou\ ;
+口銭 > kousen\ ;
+善性 > zensei\ ;
+礼賛 > raisan\ ;
+戦塵 > senjin\ ;
+金銭 > kinsen\ ;
+懸巣 > kakesu\ ;
+穂波 > honami\ ;
+懐抱 > kaihou\ ;
+参院 > san''in\ ;
+鏤刻 > rukoku\ ;
+金銀 > kingin\ ;
+銀経 > ginkei\ ;
+戦場 > senjou\ ;
+金鉱 > kinkou\ ;
+憶断 > okudan\ ;
+減数 > gensuu\ ;
+満天 > manten\ ;
+和綴 > watoji\ ;
+浄罪 > jouzai\ ;
+感知 > kanchi\ ;
+泰西 > taisei\ ;
+洋蘭 > youran\ ;
+銀糸 > ginshi\ ;
+淡水 > tansui\ ;
+溶剤 > youzai\ ;
+空文 > kuubun\ ;
+黄肌 > kihada\ ;
+成婚 > seikon\ ;
+注記 > chuuki\ ;
+吟詠 > gin''ei\ ;
+懸崖 > kengai\ ;
+鍛成 > tansei\ ;
+銀粉 > ginpun\ ;
+懦弱 > dajaku\ ;
+恭賀 > kyouga\ ;
+卵黄 > ran''ou\ ;
+手動 > shudou\ ;
+藍藻 > ransou\ ;
+憲政 > kensei\ ;
+戦地 > senchi\ ;
+礼讃 > raisan\ ;
+満塁 > manrui\ ;
+合資 > goushi\ ;
+満場 > manjou\ ;
+号車 > gousha\ ;
+泣訴 > kyuuso\ ;
+重重 > juujuu\ ;
+恩賞 > onshou\ ;
+清書 > seisho\ ;
+満堂 > mandou\ ;
+扇動 > sendou\ ;
+才分 > saibun\ ;
+減損 > genson\ ;
+水黽 > amenbo\ ;
+神蛇 > shinja\ ;
+哀痛 > aitsuu\ ;
+戒壇 > kaidan\ ;
+麦芽 > bakuga\ ;
+台車 > daisha\ ;
+品番 > hinban\ ;
+薫製 > kunsei\ ;
+手写 > shusha\ ;
+清明 > seimei\ ;
+法論 > houron\ ;
+決闘 > kettou\ ;
+法談 > houdan\ ;
+原題 > gendai\ ;
+手兵 > shuhei\ ;
+所労 > shorou\ ;
+原頭 > gentou\ ;
+采配 > saihai\ ;
+名論 > meiron\ ;
+浅紅 > senkou\ ;
+第三 > daisan\ ;
+添書 > tensho\ ;
+手先 > tesaki\ ;
+手元 > temoto\ ;
+恩讐 > onshuu\ ;
+恩讎 > onshuu\ ;
+口辺 > kouhen\ ;
+原音 > gen''on\ ;
+我執 > gashuu\ ;
+空挺 > kuutei\ ;
+活線 > kassen\ ;
+同誌 > doushi\ ;
+厚顔 > kougan\ ;
+名詞 > meishi\ ;
+鈍行 > donkou\ ;
+懇情 > konjou\ ;
+添景 > tenkei\ ;
+手傷 > tekizu\ ;
+空拳 > kuuken\ ;
+針路 > shinro\ ;
+符丁 > fuchou\ ;
+名言 > meigen\ ;
+同訓 > doukun\ ;
+金輪 > kanawa\ ;
+成型 > seikei\ ;
+沢辺 > sawabe\ ;
+法要 > houyou\ ;
+科目 > kamoku\ ;
+鼈甲 > bekkou\ ;
+蜂巣 > housou\ ;
+空手 > karate\ ;
+礼装 > reisou\ ;
+同視 > doushi\ ;
+善導 > zendou\ ;
+空所 > kuusho\ ;
+念願 > nengan\ ;
+合計 > goukei\ ;
+麻織 > asaori\ ;
+古蹟 > koseki\ ;
+呪縛 > jubaku\ ;
+空戦 > kuusen\ ;
+慨歎 > gaitan\ ;
+汗顔 > kangan\ ;
+念頭 > nentou\ ;
+科白 > serifu\ ;
+原隊 > gentai\ ;
+醵金 > kyokin\ ;
+稼業 > kagyou\ ;
+端厳 > tangen\ ;
+薮蚊 > yabuka\ ;
+周縁 > shuuen\ ;
+喚声 > kansei\ ;
+海産 > kaisan\ ;
+戦史 > senshi\ ;
+満員 > man''in\ ;
+叛軍 > hangun\ ;
+黄粉 > kinako\ ;
+税源 > zeigen\ ;
+友邦 > yuuhou\ ;
+鎖国 > sakoku\ ;
+竹刀 > shinai\ ;
+愁眉 > shuubi\ ;
+黙秘 > mokuhi\ ;
+清掃 > seisou\ ;
+麻絲 > asaito\ ;
+銃砲 > juuhou\ ;
+才人 > saijin\ ;
+測度 > sokudo\ ;
+同衾 > doukin\ ;
+鍛工 > tankou\ ;
+酸類 > sanrui\ ;
+涼気 > ryouki\ ;
+立地 > ritchi\ ;
+同行 > doukou\ ;
+空想 > kuusou\ ;
+手交 > shukou\ ;
+黒穂 > kurobo\ ;
+情緒 > joucho\ ;
+沃野 > yokuya\ ;
+麻糸 > asaito\ ;
+喧噪 > kensou\ ;
+温床 > onshou\ ;
+感状 > kanjou\ ;
+合衾 > goukin\ ;
+愛猫 > aibyou\ ;
+醸造 > jouzou\ ;
+戦功 > senkou\ ;
+私益 > shieki\ ;
+湾口 > wankou\ ;
+史論 > shiron\ ;
+銃眼 > juugan\ ;
+史談 > shidan\ ;
+章句 > shouku\ ;
+銅盤 > douban\ ;
+憶念 > okunen\ ;
+呼称 > koshou\ ;
+戦前 > senzen\ ;
+鸞輿 > ran''yo\ ;
+憧憬 > doukei\ ;
+双輪 > sourin\ ;
+参道 > sandou\ ;
+液汁 > ekijuu\ ;
+稿本 > kouhon\ ;
+海獣 > kaijuu\ ;
+憤懣 > funman\ ;
+史詩 > shishi\ ;
+反転 > hanten\ ;
+反軍 > hangun\ ;
+可読 > kadoku\ ;
+懸垂 > kensui\ ;
+税法 > zeihou\ ;
+厳重 > genjuu\ ;
+薫蒸 > kunjou\ ;
+台詞 > serifu\ ;
+錬成 > rensei\ ;
+銀盤 > ginban\ ;
+友軍 > yuugun\ ;
+和睦 > waboku\ ;
+銀盃 > ginpai\ ;
+憤慨 > fungai\ ;
+唐本 > touhon\ ;
+鉄線 > tessen\ ;
+鋼板 > kouban\ ;
+鼻毛 > hanage\ ;
+史観 > shikan\ ;
+双蹄 > soutei\ ;
+受賞 > jushou\ ;
+消火 > shouka\ ;
+戒厳 > kaigen\ ;
+鋼材 > kouzai\ ;
+洗練 > senren\ ;
+台覧 > tairan\ ;
+私用 > shiyou\ ;
+志願 > shigan\ ;
+同藩 > douhan\ ;
+口論 > kouron\ ;
+口調 > kuchou\ ;
+叢談 > soudan\ ;
+厳選 > gensen\ ;
+端倪 > tangei\ ;
+金談 > kindan\ ;
+混戦 > konsen\ ;
+戯作 > gesaku\ ;
+混成 > konsei\ ;
+喚問 > kanmon\ ;
+社葬 > shasou\ ;
+憤怒 > fun''nu\ ;
+古註 > kochuu\ ;
+流石 > sasuga\ ;
+鉄粉 > teppun\ ;
+醗酵 > hakkou\ ;
+原鉱 > genkou\ ;
+温容 > on''you\ ;
+麦粉 > mugiko\ ;
+成功 > seikou\ ;
+深手 > fukade\ ;
+黒目 > kurome\ ;
+金言 > kingen\ ;
+洗米 > senmai\ ;
+憐憫 > renbin\ ;
+原野 > gen''ya\ ;
+気魄 > kihaku\ ;
+受諾 > judaku\ ;
+気鬱 > kiutsu\ ;
+成分 > seibun\ ;
+薬舗 > yakuho\ ;
+名著 > meicho\ ;
+鉄管 > tekkan\ ;
+重言 > juugon\ ;
+氷霧 > hyoumu\ ;
+愍然 > binzen\ ;
+金襴 > kinran\ ;
+懐妊 > kainin\ ;
+水面 > minomo\ ;
+禍福 > kafuku\ ;
+氷雨 > hisame\ ;
+鉄筋 > tekkin\ ;
+懸命 > kenmei\ ;
+酔顔 > suigan\ ;
+憐愍 > renbin\ ;
+洋紙 > youshi\ ;
+重視 > juushi\ ;
+成典 > seiten\ ;
+銭湯 > sentou\ ;
+清廉 > seiren\ ;
+洋紅 > youkou\ ;
+重要 > juuyou\ ;
+金製 > kinsei\ ;
+酒類 > shurui\ ;
+合著 > goucho\ ;
+鶏鳴 > keimei\ ;
+禽獣 > kinjuu\ ;
+水雷 > suirai\ ;
+受註 > juchuu\ ;
+受診 > jushin\ ;
+口装 > kousou\ ;
+深意 > shin''i\ ;
+磁針 > jishin\ ;
+憐情 > renjou\ ;
+水難 > suinan\ ;
+君臨 > kunrin\ ;
+戦争 > sensou\ ;
+受託 > jutaku\ ;
+戦乱 > senran\ ;
+浩然 > kouzen\ ;
+窓外 > sougai\ ;
+問屋 > ton''ya\ ;
+鉄窓 > tessou\ ;
+名茶 > meicha\ ;
+慧敏 > keibin\ ;
+港外 > kougai\ ;
+蛇座 > hebiza\ ;
+穿孔 > senkou\ ;
+湯元 > yumoto\ ;
+鼻梁 > biryou\ ;
+私版 > shihan\ ;
+反論 > hanron\ ;
+空寝 > sorane\ ;
+浄界 > joukai\ ;
+薄薄 > usuusu\ ;
+水防 > suibou\ ;
+銅牌 > douhai\ ;
+喜劇 > kigeki\ ;
+憂憤 > yuufun\ ;
+感涙 > kanrui\ ;
+穴居 > kekkyo\ ;
+立冬 > rittou\ ;
+憂慮 > yuuryo\ ;
+海溝 > kaikou\ ;
+立党 > rittou\ ;
+厚遇 > kouguu\ ;
+和独 > wadoku\ ;
+怪談 > kaidan\ ;
+浩瀚 > koukan\ ;
+金蝿 > kinbae\ ;
+銀牌 > ginpai\ ;
+水門 > suimon\ ;
+蛮声 > bansei\ ;
+善哉 > zenzai\ ;
+吏臭 > rishuu\ ;
+同船 > dousen\ ;
+単項 > tankou\ ;
+単音 > tan''on\ ;
+海港 > kaikou\ ;
+鉛白 > enpaku\ ;
+参謀 > sanbou\ ;
+悪童 > akudou\ ;
+憂悶 > yuumon\ ;
+憂患 > yuukan\ ;
+浮漂 > fuhyou\ ;
+鼻木 > hanagi\ ;
+配電 > haiden\ ;
+和牛 > wagyuu\ ;
+薄葉 > usuyou\ ;
+成体 > seitai\ ;
+唐手 > karate\ ;
+淫心 > inshin\ ;
+商家 > shouka\ ;
+唐戸 > karado\ ;
+洗礼 > senrei\ ;
+合致 > gatchi\ ;
+南面 > nanmen\ ;
+参詣 > sankei\ ;
+憂思 > yuushi\ ;
+向背 > kouhai\ ;
+深度 > shindo\ ;
+慷慨 > kougai\ ;
+惨状 > sanjou\ ;
+吾等 > warera\ ;
+海浜 > kaihin\ ;
+民風 > minpuu\ ;
+虚構 > kyokou\ ;
+博雅 > bakuga\ ;
+成人 > seijin\ ;
+悪税 > akuzei\ ;
+黄瓜 > kyuuri\ ;
+吹管 > suikan\ ;
+洋種 > youshu\ ;
+海洋 > kaiyou\ ;
+移植 > ishoku\ ;
+鉄砲 > teppou\ ;
+各自 > kakuji\ ;
+麻疹 > mashin\ ;
+喧伝 > kenden\ ;
+薄茶 > usucha\ ;
+参観 > sankan\ ;
+告示 > kokuji\ ;
+感歎 > kantan\ ;
+南隅 > nanguu\ ;
+含糖 > gantou\ ;
+蛮地 > banchi\ ;
+悪神 > akujin\ ;
+名聞 > meibun\ ;
+立体 > rittai\ ;
+半音 > han''on\ ;
+南限 > nangen\ ;
+情痴 > jouchi\ ;
+突堤 > tottei\ ;
+喪中 > mochuu\ ;
+減塩 > gen''en\ ;
+渥地 > akuchi\ ;
+淡彩 > tansai\ ;
+海水 > kaisui\ ;
+浮流 > furyuu\ ;
+祭神 > saijin\ ;
+神符 > shinpu\ ;
+金蔵 > kinzou\ ;
+愛欲 > aiyoku\ ;
+祭祀 > saishi\ ;
+厳談 > gendan\ ;
+薄色 > usuiro\ ;
+祭礼 > sairei\ ;
+民青 > minsei\ ;
+半面 > hanmen\ ;
+口蓋 > kougai\ ;
+浪浪 > rourou\ ;
+渓声 > keisei\ ;
+虚根 > kyokon\ ;
+微震 > bishin\ ;
+応酬 > oushuu\ ;
+南門 > nanmon\ ;
+原資 > genshi\ ;
+洗眼 > sengan\ ;
+酩酊 > meitei\ ;
+性行 > seikou\ ;
+善処 > zensho\ ;
+同罪 > douzai\ ;
+浮沈 > fuchin\ ;
+水銀 > suigin\ ;
+黒煙 > kokuen\ ;
+御題 > gyodai\ ;
+厳訓 > genkun\ ;
+即金 > sokkin\ ;
+哀楽 > airaku\ ;
+空域 > kuuiki\ ;
+銀漢 > ginkan\ ;
+深山 > miyama\ ;
+野蒜 > nobiru\ ;
+浮氷 > fuhyou\ ;
+鶏頭 > keitou\ ;
+秋波 > shuuha\ ;
+活版 > kappan\ ;
+社線 > shasen\ ;
+気長 > kinaga\ ;
+神秘 > shinpi\ ;
+空地 > akichi\ ;
+台臨 > tairin\ ;
+惨澹 > santan\ ;
+愛楽 > aigyou\ ;
+野菊 > nogiku\ ;
+秋気 > shuuki\ ;
+法線 > housen\ ;
+民間 > minkan\ ;
+懇命 > konmei\ ;
+港口 > koukou\ ;
+悪相 > akusou\ ;
+御霊 > mitama\ ;
+決裁 > kessai\ ;
+半開 > hankai\ ;
+法網 > houmou\ ;
+悲痛 > hitsuu\ ;
+麦田 > mugita\ ;
+鵞鳥 > gachou\ ;
+水郷 > suigou\ ;
+合繊 > gousen\ ;
+私法 > shihou\ ;
+鵝鳥 > gachou\ ;
+慣性 > kansei\ ;
+原論 > genron\ ;
+決行 > kekkou\ ;
+慢性 > mansei\ ;
+御陵 > goryou\ ;
+快走 > kaisou\ ;
+従順 > juujun\ ;
+鼠族 > sozoku\ ;
+治者 > chisha\ ;
+原詩 > genshi\ ;
+水道 > suidou\ ;
+感染 > kansen\ ;
+懐剣 > kaiken\ ;
+情状 > joujou\ ;
+同紙 > doushi\ ;
+鉱滓 > koushi\ ;
+向米 > koubei\ ;
+鉄琴 > tekkin\ ;
+同系 > doukei\ ;
+窮余 > kyuuyo\ ;
+浮標 > fuhyou\ ;
+銀泥 > gindei\ ;
+可聴 > kachou\ ;
+虚数 > kyosuu\ ;
+海棠 > kaidou\ ;
+悪疫 > akueki\ ;
+減員 > gen''in\ ;
+吃緊 > kikkin\ ;
+恩給 > onkyuu\ ;
+水辺 > mizube\ ;
+御門 > mikado\ ;
+双葉 > futaba\ ;
+後項 > koukou\ ;
+稟性 > hinsei\ ;
+混声 > konsei\ ;
+口腔 > koukou\ ;
+鍛冶 > tan''ya\ ;
+悪用 > akuyou\ ;
+窃取 > sesshu\ ;
+愉楽 > yuraku\ ;
+秀歌 > shuuka\ ;
+区長 > kuchou\ ;
+減号 > gengou\ ;
+港内 > kounai\ ;
+水車 > suisha\ ;
+減反 > gentan\ ;
+酒造 > shuzou\ ;
+虎斑 > torafu\ ;
+黒海 > kokkai\ ;
+名答 > meitou\ ;
+後難 > kounan\ ;
+空名 > kuumei\ ;
+浅海 > senkai\ ;
+錦地 > kinchi\ ;
+反英 > han''ei\ ;
+同等 > doutou\ ;
+液性 > ekisei\ ;
+鼻息 > bisoku\ ;
+悪球 > akkyuu\ ;
+合算 > gassan\ ;
+反芻 > hansuu\ ;
+洋琴 > youkin\ ;
+私権 > shiken\ ;
+鉄片 > teppen\ ;
+硼酸 > housan\ ;
+鉱泉 > kousen\ ;
+海月 > kurage\ ;
+海曹 > kaisou\ ;
+配送 > haisou\ ;
+後陣 > koujin\ ;
+南郊 > nankou\ ;
+汎論 > hanron\ ;
+唐子 > karako\ ;
+流派 > ryuuha\ ;
+薄紗 > hakusa\ ;
+虹彩 > kousai\ ;
+混在 > konzai\ ;
+同窓 > dousou\ ;
+禁煙 > kin''en\ ;
+銘板 > meiban\ ;
+鉱水 > kousui\ ;
+微量 > biryou\ ;
+油絵 > aburae\ ;
+海景 > kaikei\ ;
+空包 > kuuhou\ ;
+半金 > hankin\ ;
+毛頭 > moutou\ ;
+愛敬 > aikyou\ ;
+同種 > doushu\ ;
+穿刺 > senshi\ ;
+形骸 > keigai\ ;
+惨死 > zanshi\ ;
+海星 > hitode\ ;
+慈心 > jishin\ ;
+後門 > koumon\ ;
+浄水 > jousui\ ;
+減刑 > genkei\ ;
+重罪 > juuzai\ ;
+酢豚 > subuta\ ;
+千鈞 > senkin\ ;
+黄海 > koukai\ ;
+台紙 > daishi\ ;
+配車 > haisha\ ;
+神璽 > shinji\ ;
+空前 > kuuzen\ ;
+洗煉 > senren\ ;
+洋犬 > youken\ ;
+洸洸 > koukou\ ;
+印象 > inshou\ ;
+千金 > senkin\ ;
+種子 > shushi\ ;
+洸洋 > kouyou\ ;
+秋期 > shuuki\ ;
+気迫 > kihaku\ ;
+同社 > dousha\ ;
+影響 > eikyou\ ;
+蔑視 > besshi\ ;
+応諾 > oudaku\ ;
+減免 > genmen\ ;
+民選 > minsen\ ;
+空冷 > kuurei\ ;
+惚気 > noroke\ ;
+礼砲 > reihou\ ;
+単車 > tansha\ ;
+慶大 > keidai\ ;
+和楽 > waraku\ ;
+怪腕 > kaiwan\ ;
+合祭 > gousai\ ;
+双肩 > souken\ ;
+商務 > shoumu\ ;
+悪熱 > anetsu\ ;
+合祀 > goushi\ ;
+性腺 > seisen\ ;
+憲兵 > kenpei\ ;
+減債 > gensai\ ;
+黄水 > kimizu\ ;
+銘文 > meibun\ ;
+口絵 > kuchie\ ;
+科料 > karyou\ ;
+御酌 > oshaku\ ;
+気軽 > kigaru\ ;
+性能 > seinou\ ;
+呆然 > bouzen\ ;
+注疏 > chuuso\ ;
+注疎 > chuuso\ ;
+商利 > shouri\ ;
+銅板 > douban\ ;
+酒販 > shuhan\ ;
+蛮人 > banjin\ ;
+唱和 > shouwa\ ;
+周波 > shuuha\ ;
+海損 > kaison\ ;
+怪聞 > kaibun\ ;
+私有 > shiyuu\ ;
+慮外 > ryogai\ ;
+酒豪 > shugou\ ;
+私書 > shisho\ ;
+金糸 > kinshi\ ;
+減俸 > genpou\ ;
+半輪 > hanrin\ ;
+法眼 > hougen\ ;
+混同 > kondou\ ;
+銀杯 > ginpai\ ;
+混合 > kongou\ ;
+石鹸 > sekken\ ;
+金粉 > kinpun\ ;
+鉛毒 > endoku\ ;
+当駅 > toueki\ ;
+御遊 > gyoyuu\ ;
+渦中 > kachuu\ ;
+法相 > hossou\ ;
+深味 > fukami\ ;
+神父 > shinpu\ ;
+原著 > gencho\ ;
+悠然 > yuuzen\ ;
+感懐 > kankai\ ;
+麦湯 > mugiyu\ ;
+想望 > soubou\ ;
+参考 > sankou\ ;
+同県 > douken\ ;
+名盤 > meiban\ ;
+司祭 > shisai\ ;
+受給 > jukyuu\ ;
+同相 > dousou\ ;
+同盟 > doumei\ ;
+洪水 > kouzui\ ;
+哀愁 > aishuu\ ;
+感慨 > kangai\ ;
+千載 > senzai\ ;
+蛍光 > keikou\ ;
+哀惜 > aiseki\ ;
+吉相 > kissou\ ;
+空似 > sorani\ ;
+和服 > wafuku\ ;
+硬軟 > kounan\ ;
+金管 > kinkan\ ;
+薬理 > yakuri\ ;
+愛憎 > ainiku\ ;
+口答 > koutou\ ;
+後金 > atokin\ ;
+愛慾 > aiyoku\ ;
+感想 > kansou\ ;
+社用 > shayou\ ;
+銀映 > gin''ei\ ;
+鹵獲 > rokaku\ ;
+砲門 > houmon\ ;
+海戦 > kaisen\ ;
+感情 > kanjou\ ;
+思考 > shikou\ ;
+品性 > hinsei\ ;
+復路 > fukuro\ ;
+命根 > meikon\ ;
+情死 > joushi\ ;
+錠剤 > jouzai\ ;
+深化 > shinka\ ;
+即行 > sokkou\ ;
+錠前 > joumae\ ;
+気象 > kishou\ ;
+愛惜 > aiseki\ ;
+号砲 > gouhou\ ;
+法界 > hokkai\ ;
+啓上 > keijou\ ;
+洗浄 > senjou\ ;
+感性 > kansei\ ;
+神火 > shinka\ ;
+双紙 > soushi\ ;
+名産 > meisan\ ;
+愛息 > aisoku\ ;
+藤氏 > toushi\ ;
+協議 > kyougi\ ;
+黒木 > kuroki\ ;
+愚息 > gusoku\ ;
+古称 > koshou\ ;
+鴕鳥 > dachou\ ;
+泥状 > deijou\ ;
+当面 > toumen\ ;
+必見 > hikken\ ;
+鼓弓 > kokyuu\ ;
+哀弔 > aichou\ ;
+悲況 > hikyou\ ;
+泰然 > taizen\ ;
+反米 > hanbei\ ;
+活栓 > kassen\ ;
+浄書 > jousho\ ;
+破鏡 > hakyou\ ;
+稀少 > kishou\ ;
+商事 > shouji\ ;
+禁止 > kinshi\ ;
+後送 > kousou\ ;
+後退 > koutai\ ;
+受章 > jushou\ ;
+重税 > juuzei\ ;
+酢蛸 > sudako\ ;
+歯齦 > shigin\ ;
+各界 > kakkai\ ;
+叢祠 > hokora\ ;
+慨嘆 > gaitan\ ;
+従軍 > juugun\ ;
+毛鈎 > kebari\ ;
+部長 > buchou\ ;
+史眼 > shigan\ ;
+悶死 > monshi\ ;
+段階 > dankai\ ;
+鼾声 > kansei\ ;
+惨敗 > zanpai\ ;
+悪法 > akuhou\ ;
+待遇 > taiguu\ ;
+洋洋 > youyou\ ;
+麺棒 > menbou\ ;
+右目 > migime\ ;
+必衰 > hissui\ ;
+歯黒 > haguro\ ;
+重祚 > chouso\ ;
+後輪 > kourin\ ;
+後輩 > kouhai\ ;
+黎明 > reimei\ ;
+愈愈 > iyoiyo\ ;
+礼状 > reijou\ ;
+民論 > minron\ ;
+参籠 > sanrou\ ;
+悪水 > akusui\ ;
+滾々 > konkon\ ;
+匪躬 > hikyuu\ ;
+後軍 > kougun\ ;
+後車 > kousha\ ;
+愉悦 > yuetsu\ ;
+針目 > harime\ ;
+北部 > hokubu\ ;
+弾頭 > dantou\ ;
+悪気 > warugi\ ;
+矢鱈 > yatara\ ;
+礎石 > soseki\ ;
+浴後 > yokugo\ ;
+卓見 > takken\ ;
+命数 > meisuu\ ;
+北郊 > hokkou\ ;
+残骸 > zangai\ ;
+折々 > oriori\ ;
+泥炭 > deitan\ ;
+金砂 > kinsha\ ;
+名状 > meijou\ ;
+勧降 > kankou\ ;
+葛餡 > kuzuan\ ;
+浮心 > fushin\ ;
+重砲 > juuhou\ ;
+私憤 > shifun\ ;
+汗腺 > kansen\ ;
+海底 > kaitei\ ;
+怪童 > kaidou\ ;
+沼田 > numada\ ;
+祭殿 > saiden\ ;
+単行 > tankou\ ;
+砲金 > houkin\ ;
+古着 > furugi\ ;
+半解 > hankai\ ;
+南行 > nankou\ ;
+銀扇 > ginsen\ ;
+重石 > omoshi\ ;
+治産 > chisan\ ;
+募集 > boshuu\ ;
+添乗 > tenjou\ ;
+郷里 > kyouri\ ;
+周期 > shuuki\ ;
+原罪 > genzai\ ;
+錦上 > kinjou\ ;
+味方 > mikata\ ;
+種名 > shumei\ ;
+強音 > kyouon\ ;
+混交 > konkou\ ;
+蚕卵 > sanran\ ;
+私感 > shikan\ ;
+十誡 > jikkai\ ;
+残香 > zankou\ ;
+麪棒 > menbou\ ;
+汚職 > oshoku\ ;
+藩校 > hankou\ ;
+混乱 > konran\ ;
+穂先 > hosaki\ ;
+金目 > kaneme\ ;
+私情 > shijou\ ;
+海嶺 > kairei\ ;
+動静 > dousei\ ;
+恒産 > kousan\ ;
+量目 > ryoume\ ;
+徳行 > tokkou\ ;
+研鑽 > kensan\ ;
+弱音 > yowane\ ;
+匪賊 > hizoku\ ;
+吸気 > kyuuki\ ;
+勢門 > seimon\ ;
+快腕 > kaiwan\ ;
+私恨 > shikon\ ;
+残飯 > zanpan\ ;
+水葬 > suisou\ ;
+半裁 > hansai\ ;
+禅林 > zenrin\ ;
+唯一 > yuitsu\ ;
+重盗 > juutou\ ;
+同然 > douzen\ ;
+死骸 > shigai\ ;
+御託 > gotaku\ ;
+微衷 > bichuu\ ;
+御言 > mikoto\ ;
+氷菓 > hyouka\ ;
+神気 > shinki\ ;
+効験 > kouken\ ;
+南蛮 > nanban\ ;
+半衿 > haneri\ ;
+虚妄 > kyomou\ ;
+決算 > kessan\ ;
+感官 > kankan\ ;
+化身 > keshin\ ;
+恬然 > tenzen\ ;
+情景 > joukei\ ;
+薬湯 > yakuyu\ ;
+汽笛 > kiteki\ ;
+法灯 > houtou\ ;
+涼味 > ryoumi\ ;
+同点 > douten\ ;
+水菜 > mizuna\ ;
+海岸 > kaigan\ ;
+勾配 > koubai\ ;
+悪業 > akugou\ ;
+参禅 > sanzen\ ;
+原綿 > genmen\ ;
+惨憺 > santan\ ;
+藤本 > touhon\ ;
+鉄板 > teppan\ ;
+郵送 > yuusou\ ;
+比較 > hikaku\ ;
+浅才 > sensai\ ;
+短音 > tan''on\ ;
+禁書 > kinsho\ ;
+葉風 > hakaze\ ;
+叢生 > sousei\ ;
+御製 > gyosei\ ;
+蓴菜 > junsai\ ;
+含水 > gansui\ ;
+想念 > sounen\ ;
+影身 > kagemi\ ;
+原紙 > genshi\ ;
+愛嬌 > aikyou\ ;
+銷夏 > shouka\ ;
+毛足 > keashi\ ;
+原糸 > genshi\ ;
+歯髄 > shizui\ ;
+海容 > kaiyou\ ;
+銃弾 > juudan\ ;
+虚報 > kyohou\ ;
+原糖 > gentou\ ;
+落馬 > rakuba\ ;
+金環 > kinkan\ ;
+砕鉱 > saikou\ ;
+弓馬 > kyuuba\ ;
+双眼 > sougan\ ;
+双眸 > soubou\ ;
+鹹水 > kansui\ ;
+砲車 > housha\ ;
+憂世 > yuusei\ ;
+反省 > hansei\ ;
+注油 > chuuyu\ ;
+浅慮 > senryo\ ;
+郷軍 > gougun\ ;
+情操 > jousou\ ;
+神樹 > shinju\ ;
+消夏 > shouka\ ;
+沈砂 > chinsa\ ;
+勧銀 > kangin\ ;
+医術 > ijutsu\ ;
+邦題 > houdai\ ;
+蕃社 > bansha\ ;
+稿人 > koujin\ ;
+禁断 > kindan\ ;
+萌黎 > hourei\ ;
+惰弱 > dajaku\ ;
+律詩 > risshi\ ;
+感奮 > kanpun\ ;
+厳禁 > genkin\ ;
+涙嚢 > ruinou\ ;
+穂並 > honami\ ;
+卵胞 > ranhou\ ;
+同源 > dougen\ ;
+愛妾 > aishou\ ;
+名湯 > meitou\ ;
+野球 > yakyuu\ ;
+怪盗 > kaitou\ ;
+呉服 > gofuku\ ;
+神楽 > kagura\ ;
+忠義 > chuugi\ ;
+葷酒 > kunshu\ ;
+水腫 > suishu\ ;
+科学 > kagaku\ ;
+藍染 > aizome\ ;
+唐人 > toujin\ ;
+油然 > yuuzen\ ;
+悪書 > akusho\ ;
+当選 > tousen\ ;
+洋本 > youhon\ ;
+後見 > kouken\ ;
+君民 > kunmin\ ;
+洋書 > yousho\ ;
+葉陰 > hakage\ ;
+銀嶺 > ginrei\ ;
+礼法 > reihou\ ;
+沸点 > futten\ ;
+秋季 > shuuki\ ;
+態勢 > taisei\ ;
+和布 > wakame\ ;
+恬淡 > tentan\ ;
+黙座 > mokuza\ ;
+液剤 > ekizai\ ;
+死霊 > shirei\ ;
+殿軍 > dengun\ ;
+黒影 > kokuei\ ;
+弊風 > heifuu\ ;
+双生 > sousei\ ;
+必至 > hisshi\ ;
+往診 > oushin\ ;
+征討 > seitou\ ;
+蔗糖 > shotou\ ;
+金牌 > kinpai\ ;
+配船 > haisen\ ;
+銅山 > douzan\ ;
+慣例 > kanrei\ ;
+法治 > houchi\ ;
+海外 > kaigai\ ;
+原稿 > genkou\ ;
+原種 > genshu\ ;
+水耕 > suikou\ ;
+郵貯 > yuucho\ ;
+野牛 > yagyuu\ ;
+活性 > kassei\ ;
+社殿 > shaden\ ;
+愛執 > aishuu\ ;
+勧進 > kanjin\ ;
+重版 > juuhan\ ;
+悪文 > akubun\ ;
+砂金 > shakin\ ;
+正餐 > seisan\ ;
+配膳 > haizen\ ;
+求縁 > kyuuen\ ;
+銀山 > ginzan\ ;
+税制 > zeisei\ ;
+忍耐 > nintai\ ;
+悪政 > akusei\ ;
+歯面 > shimen\ ;
+合法 > gouhou\ ;
+死闘 > shitou\ ;
+祭文 > saimon\ ;
+各派 > kakuha\ ;
+遺髪 > ihatsu\ ;
+南航 > nankou\ ;
+慨世 > gaisei\ ;
+秘境 > hikyou\ ;
+酒肴 > shukou\ ;
+汀線 > teisen\ ;
+去痰 > kyotan\ ;
+海堡 > kaihou\ ;
+同氏 > doushi\ ;
+祭政 > saisei\ ;
+遺骨 > ikotsu\ ;
+黒巾 > kurogo\ ;
+恩沢 > ontaku\ ;
+海域 > kaiiki\ ;
+径行 > keikou\ ;
+愛国 > aikoku\ ;
+鉄拳 > tekken\ ;
+名残 > nagori\ ;
+沼湖 > shouko\ ;
+葬送 > sousou\ ;
+破調 > hachou\ ;
+想定 > soutei\ ;
+情感 > joukan\ ;
+虚名 > kyomei\ ;
+厚礼 > kourei\ ;
+禁所 > kinsho\ ;
+弾道 > dandou\ ;
+民芸 > mingei\ ;
+感嘆 > kantan\ ;
+哺乳 > honyuu\ ;
+重点 > juuten\ ;
+吃水 > kissui\ ;
+称呼 > shouko\ ;
+台湾 > taiwan\ ;
+泉水 > sensui\ ;
+鉄扇 > tessen\ ;
+怪獣 > kaijuu\ ;
+周忌 > shuuki\ ;
+永続 > eizoku\ ;
+正面 > matomo\ ;
+重灰 > juukai\ ;
+水練 > suiren\ ;
+短銃 > tanjuu\ ;
+哀哭 > aikoku\ ;
+水線 > suisen\ ;
+鉱山 > kouzan\ ;
+危絵 > abunae\ ;
+鉱層 > kousou\ ;
+恥毛 > chimou\ ;
+北行 > hokkou\ ;
+沛然 > haizen\ ;
+殷賑 > inshin\ ;
+毒見 > dokumi\ ;
+助長 > jochou\ ;
+液体 > ekitai\ ;
+司法 > shihou\ ;
+鈍根 > donkon\ ;
+情念 > jounen\ ;
+悽惨 > seisan\ ;
+惨害 > sangai\ ;
+虚勢 > kyosei\ ;
+碇置 > teichi\ ;
+配置 > haichi\ ;
+気胸 > kikyou\ ;
+咳嗽 > gaisou\ ;
+残金 > zankin\ ;
+復航 > fukkou\ ;
+同権 > douken\ ;
+毬藻 > marimo\ ;
+薫染 > kunsen\ ;
+私大 > shidai\ ;
+毛蟹 > kegani\ ;
+復興 > fukkou\ ;
+愛唱 > aishou\ ;
+性状 > seijou\ ;
+品名 > hinmei\ ;
+鉱害 > kougai\ ;
+同様 > douyou\ ;
+千般 > senpan\ ;
+水系 > suikei\ ;
+悠揚 > yuuyou\ ;
+悪投 > akutou\ ;
+原盤 > genban\ ;
+鳴門 > naruto\ ;
+動輪 > dourin\ ;
+河流 > karyuu\ ;
+厚着 > atsugi\ ;
+悪才 > akusai\ ;
+悪手 > akushu\ ;
+感吟 > kangin\ ;
+沼気 > shouki\ ;
+治水 > chisui\ ;
+悪所 > akusho\ ;
+銃声 > juusei\ ;
+卵管 > rankan\ ;
+歎願 > tangan\ ;
+黒字 > kuroji\ ;
+黒子 > hokuro\ ;
+悶悶 > monmon\ ;
+悪戦 > akusen\ ;
+動転 > douten\ ;
+禀性 > rinsei\ ;
+勇邁 > yuumai\ ;
+危篤 > kitoku\ ;
+私報 > shihou\ ;
+悲愁 > hishuu\ ;
+消化 > shouka\ ;
+正閏 > seijun\ ;
+正門 > seimon\ ;
+形見 > katami\ ;
+同棲 > dousei\ ;
+鶏舎 > keisha\ ;
+包装 > housou\ ;
+徳義 > tokugi\ ;
+葉酸 > yousan\ ;
+労銀 > rougin\ ;
+印箱 > inbako\ ;
+後葉 > kouyou\ ;
+郵袋 > yuutai\ ;
+配線 > haisen\ ;
+勇退 > yuutai\ ;
+吹挙 > suikyo\ ;
+殊遇 > shuguu\ ;
+蒼茫 > soubou\ ;
+水管 > suikan\ ;
+神授 > shinju\ ;
+悪態 > akutai\ ;
+古流 > koryuu\ ;
+十能 > juunou\ ;
+銀塊 > ginkai\ ;
+藻屑 > mokuzu\ ;
+虚像 > kyozou\ ;
+酒精 > shusei\ ;
+同根 > doukon\ ;
+沙漠 > sabaku\ ;
+水筒 > suitou\ ;
+黙契 > mokkei\ ;
+感動 > kandou\ ;
+同校 > doukou\ ;
+重液 > juueki\ ;
+古注 > kochuu\ ;
+単線 > tansen\ ;
+当該 > tougai\ ;
+印章 > inshou\ ;
+毒蛾 > dokuga\ ;
+原産 > gensan\ ;
+勝負 > shoubu\ ;
+原生 > gensei\ ;
+延長 > enchou\ ;
+金泥 > kondei\ ;
+知遇 > chiguu\ ;
+歌集 > kashuu\ ;
+池畔 > chihan\ ;
+卦算 > keisan\ ;
+黒奴 > kokudo\ ;
+急火 > kyuuka\ ;
+神技 > shingi\ ;
+銀坑 > ginkou\ ;
+法曹 > housou\ ;
+同村 > douson\ ;
+厚生 > kousei\ ;
+名札 > nafuda\ ;
+悪性 > akusei\ ;
+単純 > tanjun\ ;
+名望 > meibou\ ;
+勧説 > kanzei\ ;
+向暑 > kousho\ ;
+蘊奥 > un''nou\ ;
+快眠 > kaimin\ ;
+悪念 > akunen\ ;
+半纏 > hanten\ ;
+御者 > gyosha\ ;
+水稲 > suitou\ ;
+同朋 > doubou\ ;
+合板 > gouban\ ;
+同書 > dousho\ ;
+金気 > kanake\ ;
+秘匿 > hitoku\ ;
+感冒 > kanbou\ ;
+福寿 > fukuju\ ;
+怪漢 > kaikan\ ;
+鉄工 > tekkou\ ;
+合本 > gappon\ ;
+遭難 > sounan\ ;
+重水 > juusui\ ;
+水禽 > suikin\ ;
+感光 > kankou\ ;
+虚伝 > kyoden\ ;
+合服 > aifuku\ ;
+悠悠 > yuuyuu\ ;
+南米 > nanbei\ ;
+鶏群 > keigun\ ;
+配管 > haikan\ ;
+哀傷 > aishou\ ;
+受注 > juchuu\ ;
+労連 > rouren\ ;
+勦討 > soutou\ ;
+厳然 > genzen\ ;
+鉗子 > kanshi\ ;
+単簡 > tankan\ ;
+蔵版 > zouhan\ ;
+水神 > suijin\ ;
+悪弊 > akuhei\ ;
+創面 > soumen\ ;
+労農 > rounou\ ;
+復縁 > fukuen\ ;
+神意 > shin''i\ ;
+黽勉 > binben\ ;
+意力 > iryoku\ ;
+当行 > toukou\ ;
+禅尼 > zen''ni\ ;
+祝意 > shukui\ ;
+法文 > houbun\ ;
+加重 > kachou\ ;
+同断 > doudan\ ;
+取水 > shusui\ ;
+浄域 > jouiki\ ;
+名文 > meibun\ ;
+半紙 > hanshi\ ;
+弔辞 > chouji\ ;
+鉱坑 > koukou\ ;
+名数 > meisuu\ ;
+酒税 > shuzei\ ;
+同文 > doubun\ ;
+勝訴 > shouso\ ;
+原状 > genjou\ ;
+海内 > kaidai\ ;
+同数 > dousuu\ ;
+海兵 > kaihei\ ;
+従者 > juusha\ ;
+包蔵 > houzou\ ;
+徽章 > kishou\ ;
+毛茸 > moujou\ ;
+禅定 > zenjou\ ;
+合方 > aikata\ ;
+黒地 > kuroji\ ;
+沈渣 > chinsa\ ;
+後肢 > koushi\ ;
+黒土 > kokudo\ ;
+原版 > genpan\ ;
+薄板 > usuita\ ;
+短資 > tanshi\ ;
+金権 > kinken\ ;
+南端 > nantan\ ;
+強請 > gousei\ ;
+強談 > goudan\ ;
+銘刀 > meitou\ ;
+悔恨 > kaikon\ ;
+遠隔 > enkaku\ ;
+決潰 > kekkai\ ;
+薦挙 > senkyo\ ;
+黄塵 > koujin\ ;
+動詞 > doushi\ ;
+秀句 > shuuku\ ;
+釣果 > chouka\ ;
+古楽 > kogaku\ ;
+司書 > shisho\ ;
+後者 > kousha\ ;
+北航 > hokkou\ ;
+鈍才 > donsai\ ;
+吸引 > kyuuin\ ;
+廃頽 > haitai\ ;
+藻塩 > moshio\ ;
+銃口 > juukou\ ;
+強記 > kyouki\ ;
+急派 > kyuuha\ ;
+創開 > soukai\ ;
+反毛 > hanmou\ ;
+薄暮 > hakubo\ ;
+矩象 > kushou\ ;
+水着 > mizugi\ ;
+満々 > manman\ ;
+碑石 > hiseki\ ;
+愚作 > gusaku\ ;
+加速 > kasoku\ ;
+後置 > kouchi\ ;
+汚物 > obutsu\ ;
+史書 > shisho\ ;
+洪大 > koudai\ ;
+台本 > daihon\ ;
+鶏糞 > keifun\ ;
+水盤 > suiban\ ;
+包莖 > houkei\ ;
+咆哮 > houkou\ ;
+礼拝 > reihai\ ;
+微笑 > bishou\ ;
+剥離 > hakuri\ ;
+選鉱 > senkou\ ;
+原点 > genten\ ;
+蒐荷 > shuuka\ ;
+千篇 > senpen\ ;
+古格 > kokaku\ ;
+決済 > kessai\ ;
+卑称 > hishou\ ;
+鈍感 > donkan\ ;
+包茎 > houkei\ ;
+毛脛 > kezune\ ;
+毛脚 > keashi\ ;
+鳳輦 > houren\ ;
+労資 > roushi\ ;
+怪死 > kaishi\ ;
+砲艦 > houkan\ ;
+私刑 > shikei\ ;
+酔眼 > suigan\ ;
+幼齢 > yourei\ ;
+廻送 > kaisou\ ;
+建造 > kenzou\ ;
+刺魚 > togeuo\ ;
+部落 > buraku\ ;
+号数 > gousuu\ ;
+銃創 > juusou\ ;
+祖廟 > sobyou\ ;
+卵生 > ransei\ ;
+銃剣 > juuken\ ;
+参殿 > sanden\ ;
+引責 > inseki\ ;
+藩士 > hanshi\ ;
+水痘 > suitou\ ;
+金柑 > kinkan\ ;
+短詩 > tanshi\ ;
+恒星 > kousei\ ;
+情報 > jouhou\ ;
+麗容 > reiyou\ ;
+鄭箋 > teisen\ ;
+水疱 > suihou\ ;
+叢林 > sourin\ ;
+右文 > yuubun\ ;
+銃刑 > juukei\ ;
+郵船 > yuusen\ ;
+名手 > meishu\ ;
+後編 > kouhen\ ;
+私兵 > shihei\ ;
+名所 > meisho\ ;
+邂逅 > kaikou\ ;
+古木 > koboku\ ;
+金杯 > kinpai\ ;
+知謀 > chibou\ ;
+私党 > shitou\ ;
+同所 > dousho\ ;
+同房 > doubou\ ;
+君恩 > kun''on\ ;
+合抱 > gouhou\ ;
+想到 > soutou\ ;
+原潜 > gensen\ ;
+醤油 > shouyu\ ;
+微禄 > biroku\ ;
+碁石 > goishi\ ;
+後継 > koukei\ ;
+泰平 > taihei\ ;
+台数 > daisuu\ ;
+水田 > suiden\ ;
+海上 > kaijou\ ;
+水産 > suisan\ ;
+年齢 > nenrei\ ;
+水生 > suisei\ ;
+遼遠 > ryouen\ ;
+底魚 > sokouo\ ;
+恒数 > kousuu\ ;
+秘中 > hichuu\ ;
+前項 > zenkou\ ;
+叢書 > sousho\ ;
+殺菌 > sakkin\ ;
+廻転 > kaiten\ ;
+欠陥 > kekkan\ ;
+銘仙 > meisen\ ;
+短見 > tanken\ ;
+呼吸 > kokyuu\ ;
+弱行 > jakkou\ ;
+命名 > meimei\ ;
+禅堂 > zendou\ ;
+合戦 > kassen\ ;
+呼名 > yobina\ ;
+歓送 > kansou\ ;
+合成 > gousei\ ;
+決水 > kessui\ ;
+同憂 > douyuu\ ;
+銅像 > douzou\ ;
+同慶 > doukei\ ;
+単眼 > tangan\ ;
+歓迎 > kangei\ ;
+重曹 > juusou\ ;
+前面 > zenmen\ ;
+古昔 > koseki\ ;
+蒸籠 > seirou\ ;
+比翼 > hiyoku\ ;
+合憲 > gouken\ ;
+単相 > tansou\ ;
+鉄塔 > tettou\ ;
+同感 > doukan\ ;
+浪人 > rounin\ ;
+剔除 > tekijo\ ;
+合憎 > ainiku\ ;
+没書 > bossho\ ;
+次長 > jichou\ ;
+鷹派 > takaha\ ;
+悪妻 > akusai\ ;
+麗姿 > reishi\ ;
+前電 > zenden\ ;
+知見 > chiken\ ;
+決死 > kesshi\ ;
+想像 > souzou\ ;
+取材 > shuzai\ ;
+同情 > doujou\ ;
+制馭 > seigyo\ ;
+向性 > kousei\ ;
+蘭人 > ranjin\ ;
+殿舎 > densha\ ;
+菌類 > kinrui\ ;
+神宮 > jinguu\ ;
+悲境 > hikyou\ ;
+厳正 > gensei\ ;
+落語 > rakugo\ ;
+黄吻 > koufun\ ;
+重星 > juusei\ ;
+口数 > kousuu\ ;
+卵状 > ranjou\ ;
+正賓 > seihin\ ;
+引証 > inshou\ ;
+悪天 > akuten\ ;
+後篇 > kouhen\ ;
+黄口 > koukou\ ;
+同性 > dousei\ ;
+悪声 > akusei\ ;
+泰山 > taizan\ ;
+遭遇 > souguu\ ;
+重文 > juubun\ ;
+削除 > sakujo\ ;
+半睡 > hansui\ ;
+同志 > doushi\ ;
+吾妹 > wagimo\ ;
+半眼 > hangan\ ;
+合性 > aishou\ ;
+私人 > shijin\ ;
+右折 > usetsu\ ;
+祭壇 > saidan\ ;
+原油 > gen''yu\ ;
+歳計 > saikei\ ;
+性根 > shoune\ ;
+葛藤 > kattou\ ;
+半盲 > hanmou\ ;
+後端 > koutan\ ;
+浄写 > jousha\ ;
+同形 > doukei\ ;
+前門 > zenmon\ ;
+悪場 > waruba\ ;
+悪報 > akuhou\ ;
+法廷 > houtei\ ;
+右手 > migite\ ;
+双書 > sousho\ ;
+心理 > shinri\ ;
+友朋 > yuuhou\ ;
+快漢 > kaikan\ ;
+升目 > masume\ ;
+礼帽 > reibou\ ;
+出鼻 > debana\ ;
+叉木 > matagi\ ;
+歩調 > hochou\ ;
+店頭 > tentou\ ;
+祭場 > saijou\ ;
+幽魂 > yuukon\ ;
+神威 > shin''i\ ;
+又木 > matagi\ ;
+幼魚 > yougyo\ ;
+刺青 > shisei\ ;
+原民 > genmin\ ;
+創造 > souzou\ ;
+恰度 > choudo\ ;
+吹奏 > suisou\ ;
+名店 > meiten\ ;
+券面 > kenmen\ ;
+原毛 > genmou\ ;
+銃丸 > juugan\ ;
+干鱈 > hidara\ ;
+同店 > douten\ ;
+可成 > kanari\ ;
+到頭 > toutou\ ;
+合弁 > gouben\ ;
+法師 > houshi\ ;
+弁論 > benron\ ;
+反映 > han''ei\ ;
+同年 > dounen\ ;
+法帖 > houjou\ ;
+流儀 > ryuugi\ ;
+正論 > seiron\ ;
+情史 > joushi\ ;
+活写 > kassha\ ;
+水煮 > mizuni\ ;
+励行 > reikou\ ;
+惇厚 > tonkou\ ;
+座長 > zachou\ ;
+恐懼 > kyouku\ ;
+別館 > bekkan\ ;
+毒素 > dokuso\ ;
+名工 > meikou\ ;
+同市 > doushi\ ;
+氾濫 > hanran\ ;
+底面 > teimen\ ;
+双方 > souhou\ ;
+半畳 > hanjou\ ;
+破約 > hayaku\ ;
+彼等 > karera\ ;
+過量 > karyou\ ;
+厘毛 > rinmou\ ;
+反数 > hansuu\ ;
+民生 > minsei\ ;
+毛管 > moukan\ ;
+半生 > hansei\ ;
+正訓 > seikun\ ;
+反攻 > hankou\ ;
+去来 > kyorai\ ;
+弁解 > benkai\ ;
+運針 > unshin\ ;
+過酷 > kakoku\ ;
+古手 > furute\ ;
+正解 > seikai\ ;
+制限 > seigen\ ;
+毛筋 > kesuji\ ;
+社屋 > shaoku\ ;
+気球 > kikyuu\ ;
+可惜 > attara\ ;
+連隊 > rentai\ ;
+遊金 > yuukin\ ;
+口才 > kousai\ ;
+醇正 > junsei\ ;
+情勢 > jousei\ ;
+幽香 > yuukou\ ;
+金扇 > kinsen\ ;
+正視 > seishi\ ;
+君子 > kunshi\ ;
+止観 > shikan\ ;
+利鞘 > rizaya\ ;
+別項 > bekkou\ ;
+正西 > seisei\ ;
+福利 > fukuri\ ;
+遅鈍 > chidon\ ;
+取捨 > shusha\ ;
+剣道 > kendou\ ;
+怨敵 > onteki\ ;
+循環 > junkan\ ;
+建言 > kengen\ ;
+恋愛 > ren''ai\ ;
+欠配 > keppai\ ;
+鵬程 > houtei\ ;
+蕃書 > bansho\ ;
+恒性 > kousei\ ;
+廻覧 > kairan\ ;
+命令 > meirei\ ;
+名山 > meizan\ ;
+真鴨 > magamo\ ;
+連関 > renkan\ ;
+向寒 > koukan\ ;
+汀渚 > teisho\ ;
+恋情 > renjou\ ;
+歓談 > kandan\ ;
+恐怖 > kyoufu\ ;
+正装 > seisou\ ;
+参政 > sansei\ ;
+同居 > doukyo\ ;
+初頭 > shotou\ ;
+遅配 > chihai\ ;
+廃退 > haitai\ ;
+汁液 > juueki\ ;
+通院 > tsuuin\ ;
+恵存 > keizon\ ;
+薄幸 > hakkou\ ;
+同封 > doufuu\ ;
+台形 > daikei\ ;
+法定 > houtei\ ;
+法官 > houkan\ ;
+恋恋 > renren\ ;
+石英 > sekiei\ ;
+彩管 > saikan\ ;
+遠足 > ensoku\ ;
+区画 > kukaku\ ;
+厳暑 > gensho\ ;
+次週 > jishuu\ ;
+前金 > maekin\ ;
+重態 > juutai\ ;
+死蔵 > shizou\ ;
+治平 > chihei\ ;
+洋品 > youhin\ ;
+同定 > doutei\ ;
+名字 > myouji\ ;
+剥身 > mukimi\ ;
+水準 > suijun\ ;
+水源 > suigen\ ;
+禁制 > kinsei\ ;
+送風 > soufuu\ ;
+遺言 > yuigon\ ;
+息子 > musuko\ ;
+恩寵 > onchou\ ;
+遅遅 > chichi\ ;
+悪名 > akumei\ ;
+蔵本 > zouhon\ ;
+厳旨 > genshi\ ;
+原案 > gen''an\ ;
+重患 > juukan\ ;
+反抗 > hankou\ ;
+祖国 > sokoku\ ;
+廃車 > haisha\ ;
+蔵書 > zousho\ ;
+悪友 > akuyuu\ ;
+酔漢 > suikan\ ;
+重恩 > chouon\ ;
+年頭 > nentou\ ;
+河床 > kashou\ ;
+洗剤 > senzai\ ;
+幽霊 > yuurei\ ;
+祭司 > saishi\ ;
+勘考 > kankou\ ;
+恒常 > koujou\ ;
+悲劇 > higeki\ ;
+座金 > zagane\ ;
+禅僧 > zensou\ ;
+口径 > koukei\ ;
+双手 > morote\ ;
+石膏 > sekkou\ ;
+短艇 > tantei\ ;
+水涯 > suigai\ ;
+反戦 > hansen\ ;
+刎頸 > funkei\ ;
+度量 > doryou\ ;
+蒼生 > sousei\ ;
+分館 > bunkan\ ;
+分餐 > bunsan\ ;
+遊軍 > yuugun\ ;
+原板 > genpan\ ;
+郵税 > yuuzei\ ;
+野心 > yashin\ ;
+勃興 > bokkou\ ;
+化石 > kaseki\ ;
+社外 > shagai\ ;
+怯懦 > kyouda\ ;
+口弁 > kouben\ ;
+古廟 > kobyou\ ;
+当籤 > tousen\ ;
+広間 > hiroma\ ;
+原本 > genpon\ ;
+水洗 > suisen\ ;
+氷河 > hyouga\ ;
+醸成 > jousei\ ;
+参拝 > sanpai\ ;
+平面 > heimen\ ;
+平静 > heisei\ ;
+同姓 > dousei\ ;
+藉口 > shakou\ ;
+原書 > gensho\ ;
+含嗽 > gansou\ ;
+水泡 > suihou\ ;
+吻合 > fungou\ ;
+郷社 > gousha\ ;
+送電 > souden\ ;
+分類 > bunrui\ ;
+治山 > chisan\ ;
+後生 > goshou\ ;
+恰好 > kakkou\ ;
+加薬 > kayaku\ ;
+快楽 > keraku\ ;
+反感 > hankan\ ;
+同好 > doukou\ ;
+薬園 > yakuen\ ;
+藩侯 > hankou\ ;
+息女 > sokujo\ ;
+法外 > hougai\ ;
+鉄傘 > tessan\ ;
+江村 > kouson\ ;
+念校 > nenkou\ ;
+単漢 > tankan\ ;
+磁束 > jisoku\ ;
+名大 > meidai\ ;
+幽閑 > yuukan\ ;
+幽閉 > yuuhei\ ;
+忍法 > ninpou\ ;
+幽門 > yuumon\ ;
+参戦 > sansen\ ;
+同大 > doudai\ ;
+勲等 > kuntou\ ;
+役目 > yakume\ ;
+情人 > jounin\ ;
+著者 > chosha\ ;
+瞥見 > bekken\ ;
+名声 > meisei\ ;
+情交 > joukou\ ;
+古巣 > furusu\ ;
+名士 > meishi\ ;
+遵行 > junkou\ ;
+退陣 > taijin\ ;
+剣豪 > kengou\ ;
+水気 > mizuke\ ;
+同士 > doushi\ ;
+年限 > nengen\ ;
+友情 > yuujou\ ;
+沢庵 > takuan\ ;
+過賞 > kashou\ ;
+毒矢 > dokuya\ ;
+厳探 > gentan\ ;
+合奏 > gassou\ ;
+悲傷 > hishou\ ;
+金工 > kinkou\ ;
+毛皮 > kegawa\ ;
+南溟 > nanmei\ ;
+葉腋 > youeki\ ;
+前軍 > zengun\ ;
+勇者 > yuusha\ ;
+前車 > zensha\ ;
+水母 > kurage\ ;
+目鼻 > mehana\ ;
+都督 > totoku\ ;
+南満 > nanman\ ;
+悪党 > akutou\ ;
+史官 > shikan\ ;
+運賃 > unchin\ ;
+性感 > seikan\ ;
+水死 > suishi\ ;
+原文 > genbun\ ;
+遊資 > yuushi\ ;
+麦価 > bakuka\ ;
+重工 > juukou\ ;
+知能 > chinou\ ;
+創見 > souken\ ;
+祭典 > saiten\ ;
+動線 > dousen\ ;
+念書 > nensho\ ;
+年間 > nenkan\ ;
+必治 > hitchi\ ;
+禁令 > kinrei\ ;
+歯茎 > haguki\ ;
+性情 > seijou\ ;
+悪僧 > akusou\ ;
+従犯 > juuhan\ ;
+神化 > shinka\ ;
+藩主 > hanshu\ ;
+占法 > senpou\ ;
+知育 > chiiku\ ;
+社団 > shadan\ ;
+効能 > kounou\ ;
+分際 > bunzai\ ;
+遁走 > tonsou\ ;
+萵苣 > chisha\ ;
+吉報 > kippou\ ;
+分隊 > buntai\ ;
+反影 > han''ei\ ;
+怠慢 > taiman\ ;
+破目 > wareme\ ;
+造酒 > zoushu\ ;
+創製 > sousei\ ;
+分院 > bun''in\ ;
+神助 > shinjo\ ;
+分限 > bungen\ ;
+南海 > nankai\ ;
+同型 > doukei\ ;
+思慮 > shiryo\ ;
+決戦 > kessen\ ;
+連邦 > renpou\ ;
+凱風 > gaifuu\ ;
+怨念 > on''nen\ ;
+化生 > keshou\ ;
+金山 > kinzan\ ;
+知者 > chisha\ ;
+否否 > iyaiya\ ;
+厳戒 > genkai\ ;
+凶音 > kyouin\ ;
+心気 > shinki\ ;
+悟入 > gonyuu\ ;
+同地 > douchi\ ;
+硝煙 > shouen\ ;
+配水 > haisui\ ;
+逸足 > issoku\ ;
+思想 > shisou\ ;
+砥石 > toishi\ ;
+切開 > sekkai\ ;
+年鑑 > nenkan\ ;
+必死 > hisshi\ ;
+古家 > furuie\ ;
+当社 > tousha\ ;
+落胤 > rakuin\ ;
+薬味 > yakumi\ ;
+水槽 > suisou\ ;
+郎等 > roudou\ ;
+重層 > juusou\ ;
+前賢 > zenken\ ;
+眼鏡 > megane\ ;
+真面 > matomo\ ;
+悪例 > akurei\ ;
+口宣 > kousen\ ;
+矢羽 > yabane\ ;
+真青 > massao\ ;
+半減 > hangen\ ;
+気流 > kiryuu\ ;
+進路 > shinro\ ;
+古学 > kogaku\ ;
+号外 > gougai\ ;
+蒼然 > souzen\ ;
+欠講 > kekkou\ ;
+蕩尽 > toujin\ ;
+反帝 > hantei\ ;
+死者 > shisha\ ;
+快晴 > kaisei\ ;
+達観 > takkan\ ;
+出際 > degiwa\ ;
+収差 > shuusa\ ;
+形相 > keisou\ ;
+決意 > ketsui\ ;
+底辺 > teihen\ ;
+道観 > doukan\ ;
+君命 > kunmei\ ;
+達見 > takken\ ;
+野宿 > nojuku\ ;
+遊説 > yuuzei\ ;
+短編 > tanpen\ ;
+剪裁 > sensai\ ;
+葛粉 > kuzuko\ ;
+悪令 > akurei\ ;
+通過 > tsuuka\ ;
+思念 > shinen\ ;
+通運 > tsuuun\ ;
+薄塩 > usujio\ ;
+真際 > magiwa\ ;
+各回 > kakkai\ ;
+悪人 > akunin\ ;
+死罪 > shizai\ ;
+連載 > rensai\ ;
+祝儀 > shuugi\ ;
+水棲 > suisei\ ;
+武臣 > bushin\ ;
+別邸 > bettei\ ;
+快方 > kaihou\ ;
+波及 > hakyuu\ ;
+這這 > houhou\ ;
+原拠 > genkyo\ ;
+薨去 > koukyo\ ;
+弩級 > dokyuu\ ;
+毛玉 > kedama\ ;
+麗人 > reijin\ ;
+里子 > satogo\ ;
+社命 > shamei\ ;
+心機 > shinki\ ;
+歯肉 > haniku\ ;
+荷鞍 > nigura\ ;
+石粉 > ishiko\ ;
+悩乱 > nouran\ ;
+民法 > minpou\ ;
+酸敗 > sanpai\ ;
+厄日 > yakubi\ ;
+呈上 > teijou\ ;
+南欧 > nan''ou\ ;
+金婚 > kinkon\ ;
+遊覧 > yuuran\ ;
+清々 > seisei\ ;
+廻船 > kaisen\ ;
+匍球 > hokyuu\ ;
+遮蔽 > shahei\ ;
+社名 > shamei\ ;
+薬効 > yakkou\ ;
+葬祭 > sousai\ ;
+思弁 > shiben\ ;
+別送 > bessou\ ;
+社史 > shashi\ ;
+祭主 > saishu\ ;
+洋上 > youjou\ ;
+水栓 > suisen\ ;
+華表 > kahyou\ ;
+名品 > meihin\ ;
+葬礼 > sourei\ ;
+逓送 > teisou\ ;
+社友 > shayuu\ ;
+郡県 > gunken\ ;
+重婚 > juukon\ ;
+弛緩 > chikan\ ;
+志望 > shibou\ ;
+送金 > soukin\ ;
+厚手 > atsude\ ;
+幕間 > makuai\ ;
+年金 > nenkin\ ;
+反射 > hansha\ ;
+反対 > hantai\ ;
+氷期 > hyouki\ ;
+悟了 > goryou\ ;
+忿懣 > funman\ ;
+法号 > hougou\ ;
+劣者 > ressha\ ;
+死線 > shisen\ ;
+双射 > sousha\ ;
+名吟 > meigin\ ;
+双対 > soutai\ ;
+名君 > meikun\ ;
+目高 > medaka\ ;
+返電 > henden\ ;
+幽邃 > yuusui\ ;
+鈍刀 > dontou\ ;
+破獄 > hagoku\ ;
+口外 > kougai\ ;
+油圧 > yuatsu\ ;
+凌駕 > ryouga\ ;
+同名 > doumei\ ;
+短篇 > tanpen\ ;
+卯月 > udzuki\ ;
+水木 > mizuki\ ;
+半死 > hanshi\ ;
+砂礫 > sareki\ ;
+次表 > jihyou\ ;
+怒張 > dochou\ ;
+各員 > kakuin\ ;
+年配 > nenpai\ ;
+前言 > zengen\ ;
+硬水 > kousui\ ;
+神代 > jindai\ ;
+遊行 > yuukou\ ;
+古墨 > koboku\ ;
+台地 > daichi\ ;
+分銅 > fundou\ ;
+逸話 > itsuwa\ ;
+草魚 > sougyo\ ;
+即時 > sokuji\ ;
+水曜 > suiyou\ ;
+重奏 > juusou\ ;
+弁者 > bensha\ ;
+通路 > tsuuro\ ;
+蓮根 > renkon\ ;
+庭訓 > teikin\ ;
+双子 > futago\ ;
+合同 > goudou\ ;
+重大 > juudai\ ;
+近隣 > kinrin\ ;
+神事 > shinji\ ;
+凍餒 > toudai\ ;
+重変 > juuhen\ ;
+毒牙 > dokuga\ ;
+忌服 > kifuku\ ;
+徒渉 > toshou\ ;
+功罪 > kouzai\ ;
+送還 > soukan\ ;
+荒馬 > arauma\ ;
+金塊 > kinkai\ ;
+快挙 > kaikyo\ ;
+分野 > bun''ya\ ;
+当番 > touban\ ;
+水星 > suisei\ ;
+厚情 > koujou\ ;
+酒杯 > shuhai\ ;
+水明 > suimei\ ;
+同勢 > douzei\ ;
+金堂 > kondou\ ;
+叮嚀 > teinei\ ;
+遂行 > suikou\ ;
+気楽 > kiraku\ ;
+蒼海 > soukai\ ;
+民権 > minken\ ;
+刃針 > habari\ ;
+当用 > touyou\ ;
+幇間 > houkan\ ;
+励精 > reisei\ ;
+参宮 > sanguu\ ;
+同労 > dourou\ ;
+金城 > kinjou\ ;
+別趣 > besshu\ ;
+前装 > zensou\ ;
+社内 > shanai\ ;
+分配 > bunpai\ ;
+法制 > housei\ ;
+遺脱 > idatsu\ ;
+瞽者 > kosha\ ;
+名前 > namae\ ;
+古址 > koshi\ ;
+帰順 > kijun\ ;
+座視 > zashi\ ;
+快打 > kaida\ ;
+送辞 > souji\ ;
+名利 > meiri\ ;
+眉間 > miken\ ;
+磁性 > jisei\ ;
+薬価 > yakka\ ;
+砲煙 > houen\ ;
+礼儀 > reigi\ ;
+法具 > hougu\ ;
+吏党 > ritou\ ;
+目顔 > megao\ ;
+碑文 > hibun\ ;
+連語 > rengo\ ;
+重囲 > choui\ ;
+沮喪 > sosou\ ;
+遺習 > ishuu\ ;
+選者 > senja\ ;
+歌聖 > kasei\ ;
+造語 > zougo\ ;
+砲火 > houka\ ;
+蒸気 > jouki\ ;
+怪奇 > kaiki\ ;
+連記 > renki\ ;
+重器 > juuki\ ;
+加糖 > katou\ ;
+恩典 > onten\ ;
+徒死 > toshi\ ;
+序論 > joron\ ;
+毅然 > kizen\ ;
+制覇 > seiha\ ;
+歎美 > tanbi\ ;
+退路 > tairo\ ;
+応手 > oushu\ ;
+速記 > sokki\ ;
+波乱 > haran\ ;
+応戦 > ousen\ ;
+連覇 > renpa\ ;
+怨声 > ensei\ ;
+油単 > yutan\ ;
+序詞 > joshi\ ;
+医業 > igyou\ ;
+序言 > jogen\ ;
+忘我 > bouga\ ;
+荷重 > kajuu\ ;
+区検 > kuken\ ;
+南斗 > nanto\ ;
+沽券 > koken\ ;
+半期 > hanki\ ;
+同価 > douka\ ;
+動画 > douga\ ;
+河南 > kanan\ ;
+薄刃 > usuba\ ;
+加算 > kasan\ ;
+年賦 > nenpu\ ;
+口味 > koumi\ ;
+迷路 > meiro\ ;
+油剤 > yuzai\ ;
+年賀 > nenga\ ;
+可動 > kadou\ ;
+年貢 > nengu\ ;
+御株 > okabu\ ;
+厨子 > zushi\ ;
+別記 > bekki\ ;
+古史 > koshi\ ;
+吏人 > rijin\ ;
+各個 > kakko\ ;
+邪知 > jachi\ ;
+古参 > kosan\ ;
+法事 > houji\ ;
+蕃夷 > ban''i\ ;
+重味 > omomi\ ;
+樹齢 > jurei\ ;
+千木 > chigi\ ;
+歯科 > shika\ ;
+恵与 > keiyo\ ;
+酸度 > sando\ ;
+励磁 > reiji\ ;
+剣舞 > kenbu\ ;
+法主 > hossu\ ;
+母港 > bokou\ ;
+野合 > yagou\ ;
+同事 > douji\ ;
+可分 > kabun\ ;
+野史 > yashi\ ;
+助祭 > josai\ ;
+半旗 > hanki\ ;
+各位 > kakui\ ;
+御札 > ofuda\ ;
+過般 > kahan\ ;
+分賦 > bunpu\ ;
+種々 > shuju\ ;
+忘恩 > bouon\ ;
+待機 > taiki\ ;
+恩人 > onjin\ ;
+年譜 > nenpu\ ;
+忌憚 > kitan\ ;
+運航 > unkou\ ;
+河内 > hanoi\ ;
+恨事 > konji\ ;
+性器 > seiki\ ;
+怒声 > dosei\ ;
+機首 > kishu\ ;
+列記 > rekki\ ;
+古制 > kosei\ ;
+反哺 > hanpo\ ;
+十日 > tooka\ ;
+御昼 > ohiru\ ;
+都民 > tomin\ ;
+看過 > kanka\ ;
+古刀 > kotou\ ;
+弥生 > yayoi\ ;
+送話 > souwa\ ;
+平語 > heigo\ ;
+毒気 > dokke\ ;
+矛盾 > mujun\ ;
+破水 > hasui\ ;
+金利 > kinri\ ;
+泉下 > senka\ ;
+返辞 > henji\ ;
+鵞毛 > gamou\ ;
+叙勲 > jokun\ ;
+沖合 > okiai\ ;
+鵝毛 > gamou\ ;
+古典 > koten\ ;
+鯨飲 > geiin\ ;
+重利 > juuri\ ;
+印影 > in''ei\ ;
+単打 > tanda\ ;
+御数 > okazu\ ;
+受動 > judou\ ;
+道義 > dougi\ ;
+後架 > kouka\ ;
+遠縁 > tooen\ ;
+分課 > bunka\ ;
+邦画 > houga\ ;
+野党 > yatou\ ;
+着衣 > yakui\ ;
+受刑 > jukei\ ;
+毎次 > maiji\ ;
+後期 > kouki\ ;
+蕩児 > touji\ ;
+油井 > yusei\ ;
+建碑 > kenpi\ ;
+冥闇 > meian\ ;
+布陣 > fujin\ ;
+荒野 > kouya\ ;
+治下 > chika\ ;
+辺鄙 > henpi\ ;
+酒徒 > shuto\ ;
+機雷 > kirai\ ;
+歌稿 > kakou\ ;
+弧状 > kojou\ ;
+遷移 > sen''i\ ;
+選科 > senka\ ;
+帰還 > kikan\ ;
+歯痛 > haita\ ;
+民戸 > minko\ ;
+加盟 > kamei\ ;
+菊花 > kikka\ ;
+古例 > korei\ ;
+台下 > daika\ ;
+刻苦 > kokku\ ;
+母権 > boken\ ;
+古体 > kotai\ ;
+往来 > ourai\ ;
+受像 > juzou\ ;
+句会 > kukai\ ;
+古伝 > koden\ ;
+応対 > outai\ ;
+危峰 > kihou\ ;
+殺気 > sakki\ ;
+助産 > josan\ ;
+常軌 > jouki\ ;
+帰農 > kinou\ ;
+古代 > kodai\ ;
+古今 > kokon\ ;
+古人 > kojin\ ;
+違約 > iyaku\ ;
+原図 > genzu\ ;
+十手 > jitte\ ;
+機関 > kikan\ ;
+民意 > min''i\ ;
+参加 > sanka\ ;
+冶金 > yakin\ ;
+石火 > sekka\ ;
+兵馬 > heiba\ ;
+御所 > gosho\ ;
+野人 > yajin\ ;
+弁疏 > benso\ ;
+原器 > genki\ ;
+造花 > zouka\ ;
+帝都 > teito\ ;
+英魂 > eikon\ ;
+里人 > rijin\ ;
+厭味 > iyami\ ;
+危害 > kigai\ ;
+店舗 > tenpo\ ;
+配布 > haifu\ ;
+段歩 > tanbu\ ;
+単座 > tanza\ ;
+叙任 > jonin\ ;
+欧米 > oubei\ ;
+弧灯 > kotou\ ;
+怒号 > dogou\ ;
+永存 > eizon\ ;
+工面 > kumen\ ;
+内需 > naiju\ ;
+受任 > junin\ ;
+母校 > bokou\ ;
+後援 > kouen\ ;
+県議 > kengi\ ;
+勤求 > gongu\ ;
+看護 > kango\ ;
+円陣 > enjin\ ;
+酸基 > sanki\ ;
+確固 > kakko\ ;
+帰趨 > kisuu\ ;
+帰趣 > kishu\ ;
+当機 > touki\ ;
+弁理 > benri\ ;
+母材 > bozai\ ;
+徒手 > toshu\ ;
+盛運 > seiun\ ;
+歯牙 > shiga\ ;
+民度 > mindo\ ;
+運算 > unzan\ ;
+応変 > ouhen\ ;
+酒家 > shuka\ ;
+弥漫 > biman\ ;
+酒宴 > shuen\ ;
+鮟鱇 > ankou\ ;
+轟音 > gouon\ ;
+御念 > gonen\ ;
+得意 > tokui\ ;
+機鋒 > kihou\ ;
+典雅 > tenga\ ;
+双互 > sougo\ ;
+勘気 > kanki\ ;
+毎時 > maiji\ ;
+辞退 > jitai\ ;
+原句 > genku\ ;
+遺留 > iryuu\ ;
+機銃 > kijuu\ ;
+都政 > tosei\ ;
+動気 > douki\ ;
+応報 > ouhou\ ;
+幼芽 > youga\ ;
+硬度 > koudo\ ;
+復帰 > fukki\ ;
+欺瞞 > giman\ ;
+遠矢 > tooya\ ;
+過程 > katei\ ;
+水夫 > suifu\ ;
+母斑 > bohan\ ;
+怜俐 > reiri\ ;
+市部 > shibu\ ;
+劫火 > gouka\ ;
+冥途 > meido\ ;
+参事 > sanji\ ;
+御幣 > gohei\ ;
+弾機 > danki\ ;
+遠眼 > engan\ ;
+破摧 > hasai\ ;
+近衛 > konoe\ ;
+短波 > tanpa\ ;
+遠目 > toome\ ;
+醇化 > junka\ ;
+判者 > hanja\ ;
+破損 > hason\ ;
+道破 > douha\ ;
+英霊 > eirei\ ;
+勇気 > yuuki\ ;
+当期 > touki\ ;
+動機 > douki\ ;
+気孔 > kikou\ ;
+加点 > katen\ ;
+酸味 > sanmi\ ;
+冠辞 > kanji\ ;
+英雄 > eiyuu\ ;
+快味 > kaimi\ ;
+危地 > kichi\ ;
+平臥 > heiga\ ;
+厚利 > kouri\ ;
+徒弟 > totei\ ;
+短気 > tanki\ ;
+民家 > minka\ ;
+化成 > kasei\ ;
+差金 > sakin\ ;
+横隊 > outai\ ;
+部数 > busuu\ ;
+広義 > kougi\ ;
+勇武 > yuubu\ ;
+先駆 > senku\ ;
+邪法 > jahou\ ;
+半季 > hanki\ ;
+忌垣 > igaki\ ;
+当時 > touji\ ;
+前科 > zenka\ ;
+氏子 > ujiko\ ;
+差配 > sahai\ ;
+短歌 > tanka\ ;
+監護 > kango\ ;
+内野 > naiya\ ;
+相補 > souho\ ;
+弦歌 > genka\ ;
+千家 > senke\ ;
+苦難 > kunan\ ;
+弘法 > guhou\ ;
+厭人 > enjin\ ;
+酸化 > sanka\ ;
+機転 > kiten\ ;
+破戒 > hakai\ ;
+毀損 > kison\ ;
+十字 > juuji\ ;
+差遣 > saken\ ;
+御宴 > gyoen\ ;
+勘査 > kansa\ ;
+矮樹 > waiju\ ;
+白雨 > hakuu\ ;
+厭世 > ensei\ ;
+御宅 > otaku\ ;
+内部 > naibu\ ;
+原価 > genka\ ;
+冷語 > reigo\ ;
+座禅 > zazen\ ;
+荷葉 > kayou\ ;
+苦闘 > kutou\ ;
+辞譲 > jijou\ ;
+医学 > igaku\ ;
+加減 > kagen\ ;
+座礼 > zarei\ ;
+酒器 > shuki\ ;
+左遷 > sasen\ ;
+登院 > touin\ ;
+華甲 > kakou\ ;
+先非 > senpi\ ;
+運痴 > unchi\ ;
+市費 > shihi\ ;
+往年 > ounen\ ;
+府税 > fuzei\ ;
+研摩 > kenma\ ;
+巡邏 > junra\ ;
+剣璽 > kenji\ ;
+免除 > menjo\ ;
+花魁 > oiran\ ;
+延滞 > entai\ ;
+左辺 > sahen\ ;
+微塵 > mijin\ ;
+部所 > busho\ ;
+匹婦 > hippu\ ;
+光陰 > kouin\ ;
+次男 > jinan\ ;
+加法 > kahou\ ;
+後尾 > koubi\ ;
+円転 > enten\ ;
+道理 > douri\ ;
+歳次 > saiji\ ;
+冗費 > jouhi\ ;
+別箇 > bekko\ ;
+茶話 > chawa\ ;
+母性 > bosei\ ;
+遅疑 > chigi\ ;
+気圏 > kiken\ ;
+巨躯 > kyoku\ ;
+市議 > shigi\ ;
+気団 > kidan\ ;
+応分 > oubun\ ;
+御大 > ontai\ ;
+加水 > kasui\ ;
+化工 > kakou\ ;
+毛布 > moufu\ ;
+再起 > saiki\ ;
+永劫 > eigou\ ;
+気嚢 > kinou\ ;
+水化 > suika\ ;
+途端 > totan\ ;
+都度 > tsudo\ ;
+母形 > bokei\ ;
+正気 > seiki\ ;
+匹夫 > hippu\ ;
+平素 > heiso\ ;
+花香 > kakou\ ;
+勿怪 > mokke\ ;
+写譜 > shafu\ ;
+確乎 > kakko\ ;
+短期 > tanki\ ;
+正比 > seihi\ ;
+彼岸 > higan\ ;
+印判 > inpan\ ;
+都市 > toshi\ ;
+毎度 > maido\ ;
+全都 > zento\ ;
+印刀 > intou\ ;
+全部 > zenbu\ ;
+水利 > suiri\ ;
+連破 > renpa\ ;
+彩度 > saido\ ;
+形影 > keiei\ ;
+別科 > bekka\ ;
+遠火 > toobi\ ;
+葉末 > hazue\ ;
+効果 > kouka\ ;
+快事 > kaiji\ ;
+府県 > fuken\ ;
+冗語 > jougo\ ;
+区域 > kuiki\ ;
+勾引 > kouin\ ;
+巨費 > kyohi\ ;
+御坊 > gobou\ ;
+矢来 > yarai\ ;
+化導 > kedou\ ;
+英邁 > eimai\ ;
+後妻 > gosai\ ;
+比島 > hitou\ ;
+単句 > tanku\ ;
+気品 > kihin\ ;
+再議 > saigi\ ;
+工費 > kouhi\ ;
+勝手 > katte\ ;
+死期 > shiki\ ;
+眼窩 > ganka\ ;
+布袋 > hotei\ ;
+艶麗 > enrei\ ;
+優雅 > yuuga\ ;
+毛孔 > keana\ ;
+破屋 > haoku\ ;
+勤惰 > kinda\ ;
+内議 > naigi\ ;
+轗軻 > kanka\ ;
+歔欷 > kyoki\ ;
+輸銀 > yugin\ ;
+全躯 > zenku\ ;
+平穏 > heion\ ;
+即位 > sokui\ ;
+帰艦 > kikan\ ;
+序盤 > joban\ ;
+近習 > kinju\ ;
+模造 > mozou\ ;
+母屋 > omoya\ ;
+魑魅 > chimi\ ;
+永住 > eijuu\ ;
+眼科 > ganka\ ;
+目茶 > mecha\ ;
+公路 > kouro\ ;
+切符 > kippu\ ;
+帰航 > kikou\ ;
+横転 > outen\ ;
+年租 > nenso\ ;
+軍鼓 > gunko\ ;
+半可 > hanka\ ;
+半句 > hanku\ ;
+選歌 > senka\ ;
+単利 > tanri\ ;
+徳化 > tokka\ ;
+利益 > rieki\ ;
+次点 > jiten\ ;
+当座 > touza\ ;
+従因 > juuin\ ;
+永代 > eitai\ ;
+気勢 > kisei\ ;
+歯朶 > shida\ ;
+歳暮 > seibo\ ;
+母家 > omoya\ ;
+彼奴 > aitsu\ ;
+気功 > kikou\ ;
+復古 > fukko\ ;
+目色 > meiro\ ;
+凄艶 > seien\ ;
+母子 > boshi\ ;
+遠海 > enkai\ ;
+気前 > kimae\ ;
+千古 > senko\ ;
+冷菓 > reika\ ;
+引数 > insuu\ ;
+匪団 > hidan\ ;
+配備 > haibi\ ;
+微動 > bidou\ ;
+永世 > eisei\ ;
+段差 > dansa\ ;
+役夫 > ekifu\ ;
+気分 > kibun\ ;
+酒保 > shuho\ ;
+公費 > kouhi\ ;
+強意 > kyoui\ ;
+内規 > naiki\ ;
+遠泳 > en''ei\ ;
+草花 > souka\ ;
+分科 > bunka\ ;
+酔余 > suiyo\ ;
+動悸 > douki\ ;
+蒲団 > futon\ ;
+御台 > midai\ ;
+軍鶏 > shamo\ ;
+連理 > renri\ ;
+邪推 > jasui\ ;
+民利 > minri\ ;
+遺業 > igyou\ ;
+運漕 > unsou\ ;
+硬化 > kouka\ ;
+連珠 > renju\ ;
+利用 > riyou\ ;
+微分 > bibun\ ;
+短打 > tanda\ ;
+午前 > gozen\ ;
+英資 > eishi\ ;
+内裏 > dairi\ ;
+輸送 > yusou\ ;
+先途 > sendo\ ;
+兵語 > heigo\ ;
+助攻 > jokou\ ;
+殿宇 > den''u\ ;
+芟除 > sanjo\ ;
+切磋 > sessa\ ;
+民具 > mingu\ ;
+公議 > kougi\ ;
+鵄尾 > shibi\ ;
+医博 > ihaku\ ;
+茶菓 > chaka\ ;
+微光 > bikou\ ;
+単価 > tanka\ ;
+配付 > haifu\ ;
+歩数 > hosuu\ ;
+破壊 > hakai\ ;
+毎夜 > maiyo\ ;
+武断 > budan\ ;
+単位 > tan''i\ ;
+光輝 > kouki\ ;
+気候 > kikou\ ;
+兼補 > kenpo\ ;
+加数 > kasuu\ ;
+御前 > gozen\ ;
+公課 > kouka\ ;
+当家 > touke\ ;
+強引 > gouin\ ;
+徒名 > adana\ ;
+御凸 > odeko\ ;
+当字 > ateji\ ;
+配下 > haika\ ;
+公訴 > kouso\ ;
+平癒 > heiyu\ ;
+発起 > hokki\ ;
+選果 > senka\ ;
+気体 > kitai\ ;
+邪慳 > jaken\ ;
+区分 > kubun\ ;
+華氏 > kashi\ ;
+避暑 > hisho\ ;
+遊泳 > yuuei\ ;
+区処 > kusho\ ;
+母堂 > bodou\ ;
+御免 > gomen\ ;
+御先 > osaki\ ;
+冬至 > touji\ ;
+茶舗 > chaho\ ;
+英詩 > eishi\ ;
+勇往 > yuuou\ ;
+弓手 > yunde\ ;
+半価 > hanka\ ;
+南下 > nanka\ ;
+区内 > kunai\ ;
+色香 > iroka\ ;
+徒労 > torou\ ;
+母型 > bokei\ ;
+道歌 > douka\ ;
+党議 > tougi\ ;
+邪悪 > jaaku\ ;
+年甫 > nenpo\ ;
+部外 > bugai\ ;
+歌書 > kasho\ ;
+剛気 > gouki\ ;
+弧形 > kokei\ ;
+勢家 > seika\ ;
+劃期 > kakki\ ;
+砂岩 > sagan\ ;
+邪恋 > jaren\ ;
+帰納 > kinou\ ;
+弔慰 > choui\ ;
+気丈 > kijou\ ;
+剛毅 > gouki\ ;
+復位 > fukui\ ;
+徒刑 > tokei\ ;
+目線 > mesen\ ;
+萌木 > moegi\ ;
+冷罵 > reiba\ ;
+民事 > minji\ ;
+矩形 > kukei\ ;
+遺族 > izoku\ ;
+毛唐 > ketou\ ;
+全裸 > zenra\ ;
+邪念 > janen\ ;
+助成 > josei\ ;
+軍馬 > gunba\ ;
+弔意 > choui\ ;
+創案 > souan\ ;
+模試 > moshi\ ;
+遊歩 > yuuho\ ;
+凹眼 > ougan\ ;
+当夜 > touya\ ;
+車馬 > shaba\ ;
+加担 > katan\ ;
+鴨居 > kamoi\ ;
+御供 > otomo\ ;
+徒党 > totou\ ;
+円蓋 > engai\ ;
+千代 > chiyo\ ;
+兄貴 > aniki\ ;
+苦言 > kugen\ ;
+御伽 > otogi\ ;
+化合 > kagou\ ;
+利点 > riten\ ;
+鬼面 > kimen\ ;
+輿論 > yoron\ ;
+党規 > touki\ ;
+十五 > juugo\ ;
+死後 > shigo\ ;
+十二 > juuni\ ;
+横行 > oukou\ ;
+医伯 > ihaku\ ;
+御仁 > gojin\ ;
+後光 > gokou\ ;
+千世 > chiyo\ ;
+先議 > sengi\ ;
+区会 > kukai\ ;
+遠来 > enrai\ ;
+鴟尾 > shibi\ ;
+登記 > touki\ ;
+前歯 > maeba\ ;
+遠望 > enbou\ ;
+出番 > deban\ ;
+知己 > chiki\ ;
+励弧 > reiko\ ;
+後備 > koubi\ ;
+看破 > kanpa\ ;
+御上 > okami\ ;
+免訴 > menso\ ;
+役務 > ekimu\ ;
+機能 > kinou\ ;
+蒙古 > mouko\ ;
+冠者 > kanja\ ;
+廃棄 > haiki\ ;
+利潤 > rijun\ ;
+僧院 > souin\ ;
+軍靴 > gunka\ ;
+冤罪 > enzai\ ;
+遠景 > enkei\ ;
+内苑 > naien\ ;
+廃案 > haian\ ;
+母后 > bokou\ ;
+軍需 > gunju\ ;
+布置 > fuchi\ ;
+鬼門 > kimon\ ;
+儒道 > judou\ ;
+遠方 > enpou\ ;
+従事 > juuji\ ;
+債鬼 > saiki\ ;
+左舷 > sagen\ ;
+允許 > inkyo\ ;
+帰社 > kisha\ ;
+劣弧 > rekko\ ;
+部品 > buhin\ ;
+砂塵 > sajin\ ;
+剛果 > gouka\ ;
+初演 > shoen\ ;
+歩廊 > horou\ ;
+歌手 > kashu\ ;
+後事 > kouji\ ;
+勇婦 > yuufu\ ;
+歪度 > waido\ ;
+平炉 > heiro\ ;
+農科 > nouka\ ;
+次条 > jijou\ ;
+武弁 > buben\ ;
+軌間 > kikan\ ;
+都内 > tonai\ ;
+弟子 > deshi\ ;
+左脳 > sanou\ ;
+延性 > ensei\ ;
+邦家 > houka\ ;
+加年 > kanen\ ;
+近畿 > kinki\ ;
+弁座 > benza\ ;
+別派 > beppa\ ;
+正座 > seiza\ ;
+引導 > indou\ ;
+連歌 > renga\ ;
+魔道 > madou\ ;
+影像 > eizou\ ;
+巫者 > fusha\ ;
+邦字 > houji\ ;
+凹版 > ouban\ ;
+内耳 > naiji\ ;
+加工 > kakou\ ;
+勇夫 > yuufu\ ;
+欧文 > oubun\ ;
+当否 > touhi\ ;
+利水 > risui\ ;
+造次 > zouji\ ;
+六花 > rikka\ ;
+処理 > shori\ ;
+延引 > en''in\ ;
+睿智 > eichi\ ;
+八苦 > hakku\ ;
+比倫 > hirin\ ;
+帰省 > kisei\ ;
+過敏 > kabin\ ;
+序歯 > joshi\ ;
+延延 > en''en\ ;
+動因 > douin\ ;
+弊履 > heiri\ ;
+遺徳 > itoku\ ;
+破倫 > harin\ ;
+北京 > pekin\ ;
+砂嘴 > sashi\ ;
+前期 > zenki\ ;
+次数 > jisuu\ ;
+造機 > zouki\ ;
+比例 > hirei\ ;
+部分 > bubun\ ;
+平温 > heion\ ;
+再縁 > saien\ ;
+目眩 > memai\ ;
+樹脂 > jushi\ ;
+残基 > zanki\ ;
+逸書 > issho\ ;
+都会 > tokai\ ;
+欽慕 > kinbo\ ;
+部内 > bunai\ ;
+六腑 > roppu\ ;
+逓次 > teiji\ ;
+都人 > tojin\ ;
+運搬 > unpan\ ;
+前日 > maebi\ ;
+母体 > botai\ ;
+利権 > riken\ ;
+内縁 > naien\ ;
+遷座 > senza\ ;
+加害 > kagai\ ;
+遠慮 > enryo\ ;
+勧化 > kange\ ;
+勇図 > yuuto\ ;
+菩提 > bodai\ ;
+僧都 > souzu\ ;
+武官 > bukan\ ;
+初歩 > shoho\ ;
+石器 > sekki\ ;
+退治 > taiji\ ;
+動員 > douin\ ;
+菲才 > hisai\ ;
+勤務 > kinmu\ ;
+弥四 > yashi\ ;
+正字 > seiji\ ;
+巨細 > kosai\ ;
+運指 > unshi\ ;
+鳥居 > torii\ ;
+平気 > heiki\ ;
+連架 > renka\ ;
+分派 > bunpa\ ;
+軍部 > gunbu\ ;
+公義 > kougi\ ;
+出湯 > ideyu\ ;
+機種 > kishu\ ;
+度数 > dosuu\ ;
+遊技 > yuugi\ ;
+退歩 > taiho\ ;
+皇胤 > kouin\ ;
+邦土 > houdo\ ;
+避寒 > hikan\ ;
+部会 > bukai\ ;
+利根 > rikon\ ;
+崎陽 > kiyou\ ;
+年次 > nenji\ ;
+遊戯 > yuugi\ ;
+遠征 > ensei\ ;
+差等 > satou\ ;
+軌道 > kidou\ ;
+遺尿 > inyou\ ;
+死因 > shiin\ ;
+勲位 > kun''i\ ;
+葬具 > sougu\ ;
+円筒 > entou\ ;
+分母 > bunbo\ ;
+茶目 > chame\ ;
+店是 > tenze\ ;
+募兵 > bohei\ ;
+殿下 > denka\ ;
+欝憤 > uppun\ ;
+葬儀 > sougi\ ;
+違心 > ishin\ ;
+弱化 > jakka\ ;
+加増 > kazou\ ;
+遊惰 > yuuda\ ;
+募債 > bosai\ ;
+短句 > tanku\ ;
+当事 > touji\ ;
+過怠 > katai\ ;
+出汁 > dashi\ ;
+石化 > sekka\ ;
+監理 > kanri\ ;
+前戯 > zengi\ ;
+師父 > shifu\ ;
+正塩 > seien\ ;
+機知 > kichi\ ;
+庸愚 > yougu\ ;
+引喩 > in''yu\ ;
+帝王 > teiou\ ;
+避妊 > hinin\ ;
+内科 > naika\ ;
+逮捕 > taiho\ ;
+序文 > jobun\ ;
+過当 > katou\ ;
+軍路 > gunro\ ;
+序数 > josuu\ ;
+残務 > zanmu\ ;
+初期 > shoki\ ;
+遠島 > entou\ ;
+工科 > kouka\ ;
+身重 > miomo\ ;
+座所 > zasho\ ;
+内示 > naiji\ ;
+正坐 > seiza\ ;
+輪舞 > rinbu\ ;
+途方 > tohou\ ;
+儀装 > gisou\ ;
+幽暗 > yuuan\ ;
+英米 > eibei\ ;
+軍費 > gunpi\ ;
+魔街 > magai\ ;
+転訛 > tenka\ ;
+転記 > tenki\ ;
+凱歌 > gaika\ ;
+次年 > jinen\ ;
+遺墨 > iboku\ ;
+皇紀 > kouki\ ;
+遅延 > chien\ ;
+幼時 > youji\ ;
+盆画 > bonga\ ;
+刑期 > keiki\ ;
+年期 > nenki\ ;
+動作 > dousa\ ;
+出様 > deyou\ ;
+芸苑 > geien\ ;
+弧光 > kokou\ ;
+歌壇 > kadan\ ;
+兵科 > heika\ ;
+助命 > jomei\ ;
+高雅 > kouga\ ;
+常温 > jouon\ ;
+党紀 > touki\ ;
+前後 > zengo\ ;
+兵禍 > heika\ ;
+機甲 > kikou\ ;
+武問 > bumon\ ;
+労務 > roumu\ ;
+差益 > saeki\ ;
+連打 > renda\ ;
+優艶 > yuuen\ ;
+庶幾 > shoki\ ;
+花茎 > kakei\ ;
+砂上 > sajou\ ;
+軍議 > gungi\ ;
+転補 > tenpo\ ;
+平時 > heiji\ ;
+円盤 > enban\ ;
+偽電 > giden\ ;
+皮相 > hisou\ ;
+帰港 > kikou\ ;
+返歌 > henka\ ;
+前座 > zenza\ ;
+公租 > kouso\ ;
+痩躯 > souku\ ;
+分木 > bungi\ ;
+正員 > seiin\ ;
+内皮 > naihi\ ;
+道家 > douka\ ;
+模範 > mohan\ ;
+芽胞 > gahou\ ;
+刀架 > touka\ ;
+載荷 > saika\ ;
+皮癬 > hizen\ ;
+遊山 > yusan\ ;
+武名 > bumei\ ;
+全科 > zenka\ ;
+加号 > kagou\ ;
+芙蓉 > fuyou\ ;
+廃家 > haika\ ;
+公示 > kouji\ ;
+死児 > shiji\ ;
+正否 > seihi\ ;
+底意 > sokoi\ ;
+自首 > jishu\ ;
+軍記 > gunki\ ;
+荒淫 > kouin\ ;
+劣化 > rekka\ ;
+遠大 > endai\ ;
+別戸 > bekko\ ;
+歓喜 > kanki\ ;
+具眼 > gugan\ ;
+次官 > jikan\ ;
+眩暈 > memai\ ;
+軍規 > gunki\ ;
+次子 > jishi\ ;
+武勲 > bukun\ ;
+延命 > enmei\ ;
+加勢 > kasei\ ;
+元素 > genso\ ;
+武勇 > buyuu\ ;
+武功 > bukou\ ;
+廷吏 > teiri\ ;
+円環 > enkan\ ;
+岩魚 > iwana\ ;
+初手 > shote\ ;
+皇祖 > kouso\ ;
+優美 > yuubi\ ;
+儒良 > jugon\ ;
+儒艮 > jugon\ ;
+児童 > jidou\ ;
+歓呼 > kanko\ ;
+加判 > kahan\ ;
+功利 > kouri\ ;
+鳳凰 > houou\ ;
+知事 > chiji\ ;
+道央 > douou\ ;
+軍衣 > gun''i\ ;
+制度 > seido\ ;
+歩兵 > hohei\ ;
+英知 > eichi\ ;
+停音 > teion\ ;
+引例 > inrei\ ;
+痴話 > chiwa\ ;
+加冠 > kakan\ ;
+連座 > renza\ ;
+艤装 > gisou\ ;
+遠地 > enchi\ ;
+華壇 > kadan\ ;
+登科 > touka\ ;
+白禍 > hakka\ ;
+過大 > kadai\ ;
+苛税 > kazei\ ;
+遠因 > en''in\ ;
+遊女 > yuujo\ ;
+輝線 > kisen\ ;
+入相 > iriai\ ;
+免租 > menso\ ;
+芋茎 > zuiki\ ;
+菓子 > kashi\ ;
+干戈 > kanka\ ;
+疎開 > sokai\ ;
+前婦 > zenpu\ ;
+偏頗 > henpa\ ;
+遷化 > senge\ ;
+落下 > rakka\ ;
+具現 > gugen\ ;
+加俸 > kahou\ ;
+冷気 > reiki\ ;
+儒者 > jusha\ ;
+舗道 > hodou\ ;
+先祖 > senzo\ ;
+航路 > kouro\ ;
+発破 > happa\ ;
+畳韻 > jouin\ ;
+相棒 > aibou\ ;
+幽微 > yuubi\ ;
+芳紀 > houki\ ;
+廃園 > haien\ ;
+正価 > seika\ ;
+近時 > kinji\ ;
+魚肥 > gyohi\ ;
+躍起 > yakki\ ;
+高遠 > kouen\ ;
+前夫 > zenpu\ ;
+花紋 > kamon\ ;
+元祖 > ganso\ ;
+剰員 > jouin\ ;
+花糸 > kashi\ ;
+盗汗 > nease\ ;
+公理 > kouri\ ;
+武人 > bujin\ ;
+花粉 > kafun\ ;
+帰校 > kikou\ ;
+舞蹈 > butou\ ;
+幾度 > ikudo\ ;
+次回 > jikai\ ;
+年忌 > nenki\ ;
+舞踏 > butou\ ;
+鬱蒼 > ussou\ ;
+舞踊 > buyou\ ;
+内炎 > naien\ ;
+輪禍 > rinka\ ;
+刑徒 > keito\ ;
+年後 > nengo\ ;
+連子 > renji\ ;
+相板 > aiban\ ;
+前場 > zenba\ ;
+田麩 > denbu\ ;
+凹所 > ousho\ ;
+偽造 > gizou\ ;
+帰来 > kirai\ ;
+苦界 > kugai\ ;
+再演 > saien\ ;
+帰村 > kison\ ;
+常時 > jouji\ ;
+延会 > enkai\ ;
+欣喜 > kinki\ ;
+還付 > kanpu\ ;
+運営 > un''ei\ ;
+菜園 > saien\ ;
+年度 > nendo\ ;
+逮夜 > taiya\ ;
+退座 > taiza\ ;
+利害 > rigai\ ;
+艱苦 > kanku\ ;
+次善 > jizen\ ;
+利子 > rishi\ ;
+荷担 > katan\ ;
+別家 > bekke\ ;
+遺作 > isaku\ ;
+草案 > souan\ ;
+荒木 > araki\ ;
+岩間 > iwama\ ;
+庭園 > teien\ ;
+鯨波 > geiha\ ;
+年差 > nensa\ ;
+鯨油 > geiyu\ ;
+蹶起 > kekki\ ;
+円満 > enman\ ;
+花穂 > kasui\ ;
+農期 > nouki\ ;
+判子 > hanko\ ;
+華厳 > kegon\ ;
+遠出 > toode\ ;
+運命 > unmei\ ;
+兵火 > heika\ ;
+監査 > kansa\ ;
+華南 > kanan\ ;
+道化 > douke\ ;
+歌仙 > kasen\ ;
+転義 > tengi\ ;
+次号 > jigou\ ;
+歌人 > kajin\ ;
+高貴 > kouki\ ;
+過半 > kahan\ ;
+分布 > bunpu\ ;
+相撲 > sumou\ ;
+艶聞 > enbun\ ;
+序奏 > josou\ ;
+近所 > kinjo\ ;
+凡打 > bonda\ ;
+凹形 > oukei\ ;
+興起 > kouki\ ;
+舎費 > shahi\ ;
+過勤 > kakin\ ;
+通夜 > tsuya\ ;
+過労 > karou\ ;
+自邸 > jitei\ ;
+運勢 > unsei\ ;
+巨波 > kyoha\ ;
+運動 > undou\ ;
+辞柄 > jihei\ ;
+過剰 > kajou\ ;
+畝間 > unema\ ;
+自選 > jisen\ ;
+辞林 > jirin\ ;
+盛期 > seiki\ ;
+平家 > heike\ ;
+連坐 > renza\ ;
+逸品 > ippin\ ;
+道具 > dougu\ ;
+過分 > kabun\ ;
+平安 > heian\ ;
+年季 > nenki\ ;
+皆無 > kaimu\ ;
+凡愚 > bongu\ ;
+機構 > kikou\ ;
+分岐 > bunki\ ;
+前古 > zenko\ ;
+画餅 > gabei\ ;
+公演 > kouen\ ;
+辞書 > jisho\ ;
+造園 > zouen\ ;
+冬期 > touki\ ;
+高誼 > kougi\ ;
+剰余 > jouyo\ ;
+庶務 > shomu\ ;
+画風 > gafuu\ ;
+盛時 > seiji\ ;
+儀範 > gihan\ ;
+芳眉 > houbi\ ;
+初夜 > shoya\ ;
+傍見 > okami\ ;
+樹液 > jueki\ ;
+初夏 > shoka\ ;
+希望 > kibou\ ;
+巨歩 > kyoho\ ;
+幼女 > youjo\ ;
+画題 > gadai\ ;
+分家 > bunke\ ;
+希書 > kisho\ ;
+帰投 > kitou\ ;
+冤枉 > en''ou\ ;
+樹海 > jukai\ ;
+幾夜 > ikuyo\ ;
+幾多 > ikuta\ ;
+次兄 > jikei\ ;
+次元 > jigen\ ;
+迷子 > maigo\ ;
+自転 > jiten\ ;
+機械 > kikai\ ;
+座右 > zayuu\ ;
+幻夢 > genmu\ ;
+廉価 > renka\ ;
+先父 > senpu\ ;
+遡上 > sojou\ ;
+機根 > kikon\ ;
+偽誓 > gisei\ ;
+與論 > yoron\ ;
+造営 > zouei\ ;
+冥暗 > meian\ ;
+舗装 > hosou\ ;
+異郷 > ikyou\ ;
+画面 > gamen\ ;
+倍音 > baion\ ;
+棋風 > kifuu\ ;
+発火 > hakka\ ;
+偽計 > gikei\ ;
+相愛 > souai\ ;
+偽言 > gigen\ ;
+光焔 > kouen\ ;
+偶語 > guugo\ ;
+機材 > kizai\ ;
+次便 > jibin\ ;
+連呼 > renko\ ;
+左様 > sayou\ ;
+偶詠 > guuei\ ;
+魔神 > majin\ ;
+廊下 > rouka\ ;
+驟雨 > shuuu\ ;
+盲愛 > mouai\ ;
+花瓶 > kabin\ ;
+光炎 > kouen\ ;
+再案 > saian\ ;
+儀礼 > girei\ ;
+自賛 > jisan\ ;
+連句 > renku\ ;
+路頭 > rotou\ ;
+次会 > jikai\ ;
+迷夢 > meimu\ ;
+英法 > eihou\ ;
+自販 > jihan\ ;
+機智 > kichi\ ;
+苦渋 > kujuu\ ;
+偽装 > gisou\ ;
+相応 > souou\ ;
+次代 > jidai\ ;
+軍紀 > gunki\ ;
+尾鰭 > obire\ ;
+師恩 > shion\ ;
+公武 > koubu\ ;
+転移 > ten''i\ ;
+路面 > romen\ ;
+岡辺 > okabe\ ;
+偉蹟 > iseki\ ;
+転科 > tenka\ ;
+臀部 > denbu\ ;
+党派 > touha\ ;
+運上 > unjou\ ;
+業苦 > gouku\ ;
+層雲 > souun\ ;
+座像 > zazou\ ;
+帷幕 > ibaku\ ;
+造化 > zouka\ ;
+帷帳 > ichou\ ;
+自讃 > jisan\ ;
+利口 > rikou\ ;
+機敏 > kibin\ ;
+自警 > jikei\ ;
+偉跡 > iseki\ ;
+入歯 > ireba\ ;
+庶事 > shoji\ ;
+魔睡 > masui\ ;
+横死 > oushi\ ;
+軌範 > kihan\ ;
+円本 > enpon\ ;
+儒生 > jusei\ ;
+巡査 > junsa\ ;
+再映 > saiei\ ;
+庵主 > anshu\ ;
+自認 > jinin\ ;
+備荒 > bikou\ ;
+帰帆 > kihan\ ;
+花片 > kahen\ ;
+鬼神 > kijin\ ;
+膳部 > zenbu\ ;
+輸液 > yueki\ ;
+甘露 > kanro\ ;
+檀徒 > danto\ ;
+利刃 > rijin\ ;
+利刀 > ritou\ ;
+異象 > ishou\ ;
+茂林 > morin\ ;
+保養 > hoyou\ ;
+光波 > kouha\ ;
+距離 > kyori\ ;
+左方 > sahou\ ;
+座乗 > zajou\ ;
+草庵 > souan\ ;
+樹林 > jurin\ ;
+魔界 > makai\ ;
+平和 > heiwa\ ;
+省字 > seiji\ ;
+具有 > guyuu\ ;
+鰥寡 > kanka\ ;
+公案 > kouan\ ;
+自製 > jisei\ ;
+処女 > shojo\ ;
+帝座 > teiza\ ;
+刑吏 > keiri\ ;
+送受 > souju\ ;
+差損 > sason\ ;
+模様 > moyou\ ;
+機才 > kisai\ ;
+畳語 > jougo\ ;
+凡夫 > bonpu\ ;
+寿齢 > jurei\ ;
+元気 > genki\ ;
+刻下 > kokka\ ;
+退化 > taika\ ;
+准尉 > jun''i\ ;
+冶工 > yakou\ ;
+師家 > shika\ ;
+横柄 > ouhei\ ;
+典故 > tenko\ ;
+色目 > irome\ ;
+利便 > riben\ ;
+公暇 > kouka\ ;
+備考 > bikou\ ;
+別個 > bekko\ ;
+画道 > gadou\ ;
+路銀 > rogin\ ;
+幼児 > youji\ ;
+農家 > nouka\ ;
+草履 > zouri\ ;
+保険 > hoken\ ;
+年利 > nenri\ ;
+英書 > eisho\ ;
+六日 > muika\ ;
+分区 > bunku\ ;
+八日 > youka\ ;
+分化 > bunka\ ;
+公方 > kubou\ ;
+横暴 > oubou\ ;
+冥府 > meifu\ ;
+刑具 > keigu\ ;
+巧技 > kougi\ ;
+苦杯 > kuhai\ ;
+英明 > eimei\ ;
+檀家 > danka\ ;
+模本 > mohon\ ;
+入日 > irihi\ ;
+自薦 > jisen\ ;
+尾長 > onaga\ ;
+農婦 > noufu\ ;
+小鬢 > kobin\ ;
+棋道 > kidou\ ;
+判事 > hanji\ ;
+分利 > bunri\ ;
+英断 > eidan\ ;
+傅育 > fuiku\ ;
+横断 > oudan\ ;
+英文 > eibun\ ;
+凡器 > bonki\ ;
+英数 > eisuu\ ;
+横文 > oubun\ ;
+冴寒 > gokan\ ;
+途上 > tojou\ ;
+山車 > dashi\ ;
+布巾 > fukin\ ;
+相場 > souba\ ;
+盛宴 > seien\ ;
+騒音 > souon\ ;
+皆既 > kaiki\ ;
+党是 > touze\ ;
+農奴 > noudo\ ;
+用途 > youto\ ;
+光栄 > kouei\ ;
+茶屋 > chaya\ ;
+芳気 > houki\ ;
+輿望 > yobou\ ;
+農夫 > noufu\ ;
+自著 > jicho\ ;
+児曹 > jisou\ ;
+出前 > demae\ ;
+平価 > heika\ ;
+小馬 > kouma\ ;
+機巧 > kikou\ ;
+刑余 > keiyo\ ;
+荷台 > nidai\ ;
+甘酢 > amazu\ ;
+冬季 > touki\ ;
+苗木 > naegi\ ;
+兵戈 > heika\ ;
+幹事 > kanji\ ;
+駻馬 > kanba\ ;
+画賛 > gasan\ ;
+白旗 > hakki\ ;
+送付 > soufu\ ;
+内応 > naiou\ ;
+凍土 > toudo\ ;
+帯地 > obiji\ ;
+再度 > saido\ ;
+辺土 > hendo\ ;
+尾錠 > bijou\ ;
+刑事 > keiji\ ;
+円弾 > endan\ ;
+目垢 > meaka\ ;
+眼下 > ganka\ ;
+再帰 > saiki\ ;
+冷夏 > reika\ ;
+近古 > kinko\ ;
+己巳 > kishi\ ;
+軽浮 > keifu\ ;
+荒土 > koudo\ ;
+苛斂 > karen\ ;
+転炉 > tenro\ ;
+全戸 > zenko\ ;
+苛政 > kasei\ ;
+画讚 > gasan\ ;
+画讃 > gasan\ ;
+農園 > nouen\ ;
+巻尾 > kanbi\ ;
+盛夏 > seika\ ;
+佳麗 > karei\ ;
+艶然 > enzen\ ;
+英才 > eisai\ ;
+腰部 > youbu\ ;
+軽油 > keiyu\ ;
+幇助 > houjo\ ;
+内帑 > naido\ ;
+画談 > gadan\ ;
+写字 > shaji\ ;
+供養 > kuyou\ ;
+倒語 > tougo\ ;
+発揮 > hakki\ ;
+鬼火 > onibi\ ;
+魚油 > gyoyu\ ;
+帝土 > teido\ ;
+機嫌 > kigen\ ;
+生起 > seiki\ ;
+花梨 > karin\ ;
+兌換 > dakan\ ;
+刀下 > touka\ ;
+魔法 > mahou\ ;
+苦戦 > kusen\ ;
+傷痍 > shoui\ ;
+候補 > kouho\ ;
+常務 > joumu\ ;
+帰参 > kisan\ ;
+左岸 > sagan\ ;
+円居 > madoi\ ;
+皮層 > hisou\ ;
+樹幹 > jukan\ ;
+苦慮 > kuryo\ ;
+馬齢 > barei\ ;
+余齢 > yorei\ ;
+軽機 > keiki\ ;
+痔瘻 > jirou\ ;
+巨富 > kyofu\ ;
+再嫁 > saika\ ;
+内宴 > naien\ ;
+自署 > jisho\ ;
+公庫 > kouko\ ;
+備砲 > bihou\ ;
+公序 > koujo\ ;
+苦情 > kujou\ ;
+茶園 > chaen\ ;
+苦悶 > kumon\ ;
+苦悩 > kunou\ ;
+異臭 > ishuu\ ;
+用語 > yougo\ ;
+左官 > sakan\ ;
+槐樹 > kaiju\ ;
+冗多 > jouta\ ;
+軟派 > nanpa\ ;
+冥土 > meido\ ;
+公布 > koufu\ ;
+異腹 > ifuku\ ;
+先手 > sente\ ;
+公差 > kousa\ ;
+茶器 > chaki\ ;
+臓腑 > zoufu\ ;
+近侍 > kinji\ ;
+鬱滞 > uttai\ ;
+桂馬 > keima\ ;
+近似 > kinji\ ;
+返付 > henpu\ ;
+高祖 > kouso\ ;
+梅酢 > umezu\ ;
+農務 > noumu\ ;
+常備 > joubi\ ;
+苦役 > kueki\ ;
+布団 > futon\ ;
+返事 > henji\ ;
+舌禍 > zekka\ ;
+兵家 > heika\ ;
+近事 > kinji\ ;
+嵐気 > ranki\ ;
+鮮度 > sendo\ ;
+苛性 > kasei\ ;
+梵語 > bongo\ ;
+騰貴 > touki\ ;
+履行 > rikou\ ;
+県下 > kenka\ ;
+内奥 > naiou\ ;
+腕輪 > udewa\ ;
+起電 > kiden\ ;
+師儒 > shiju\ ;
+家鴨 > ahiru\ ;
+寝顔 > negao\ ;
+農具 > nougu\ ;
+市営 > shiei\ ;
+円墳 > enpun\ ;
+色気 > iroke\ ;
+工夫 > koufu\ ;
+辞去 > jikyo\ ;
+転機 > tenki\ ;
+鬼歯 > oniba\ ;
+封鎖 > fuusa\ ;
+英屯 > eiton\ ;
+公安 > kouan\ ;
+尖部 > senbu\ ;
+辭典 > jiten\ ;
+常事 > jouji\ ;
+全家 > zenka\ ;
+相似 > souji\ ;
+偉績 > iseki\ ;
+工場 > kouba\ ;
+発布 > happu\ ;
+帰任 > kinin\ ;
+兄後 > anigo\ ;
+相互 > sougo\ ;
+倶者 > kusha\ ;
+俚謡 > riyou\ ;
+光度 > koudo\ ;
+馳駆 > chiku\ ;
+俚諺 > rigen\ ;
+先度 > sendo\ ;
+俎豆 > sotou\ ;
+冗員 > jouin\ ;
+軍歌 > gunka\ ;
+生蝋 > kirou\ ;
+克己 > kokki\ ;
+内因 > naiin\ ;
+跛行 > hakou\ ;
+盲亀 > mouki\ ;
+師事 > shiji\ ;
+苦寒 > kukan\ ;
+辞典 > jiten\ ;
+疫痢 > ekiri\ ;
+盛儀 > seigi\ ;
+市区 > shiku\ ;
+馬首 > bashu\ ;
+俚言 > rigen\ ;
+余香 > yokou\ ;
+登山 > tozan\ ;
+疵瑕 > shika\ ;
+軍機 > gunki\ ;
+英姿 > eishi\ ;
+冗句 > jouku\ ;
+農事 > nouji\ ;
+権威 > ken''i\ ;
+目下 > mokka\ ;
+嶮岨 > kenso\ ;
+業火 > gouka\ ;
+自社 > jisha\ ;
+疣痔 > iboji\ ;
+余風 > yofuu\ ;
+機動 > kidou\ ;
+余類 > yorui\ ;
+児孫 > jison\ ;
+監事 > kanji\ ;
+馬頭 > batou\ ;
+倹素 > kenso\ ;
+甘藻 > amamo\ ;
+皇妃 > kouhi\ ;
+尾行 > bikou\ ;
+皇女 > koujo\ ;
+家風 > kafuu\ ;
+工員 > kouin\ ;
+兵器 > heiki\ ;
+艶書 > ensho\ ;
+優弧 > yuuko\ ;
+公園 > kouen\ ;
+辞任 > jinin\ ;
+盛事 > seiji\ ;
+辞令 > jirei\ ;
+棉花 > menka\ ;
+機内 > kinai\ ;
+公図 > kouzu\ ;
+兵営 > heiei\ ;
+田舎 > inaka\ ;
+左右 > sayuu\ ;
+機先 > kisen\ ;
+全土 > zendo\ ;
+全図 > zenzu\ ;
+胯間 > kokan\ ;
+異称 > ishou\ ;
+画聖 > gasei\ ;
+公器 > kouki\ ;
+低音 > teion\ ;
+自省 > jisei\ ;
+希代 > kidai\ ;
+辞世 > jisei\ ;
+先婦 > senpu\ ;
+軌条 > kijou\ ;
+小豆 > azuki\ ;
+兵員 > heiin\ ;
+案配 > anbai\ ;
+家電 > kaden\ ;
+内務 > naimu\ ;
+尊貴 > sonki\ ;
+市価 > shika\ ;
+差分 > sabun\ ;
+公営 > kouei\ ;
+内助 > naijo\ ;
+瓦解 > gakai\ ;
+冠位 > kan''i\ ;
+英噸 > eiton\ ;
+梅見 > umemi\ ;
+工務 > koumu\ ;
+模型 > mokei\ ;
+希世 > kisei\ ;
+栄養 > eiyou\ ;
+俘虜 > furyo\ ;
+魔手 > mashu\ ;
+生花 > seika\ ;
+偽版 > gihan\ ;
+低雲 > teiun\ ;
+先妣 > senpi\ ;
+布令 > furei\ ;
+巨利 > kyori\ ;
+白堊 > hakua\ ;
+棋聖 > kisei\ ;
+先夫 > zenpu\ ;
+兼務 > kenmu\ ;
+機体 > kitai\ ;
+甘苦 > kanku\ ;
+香露 > kouro\ ;
+高炉 > kouro\ ;
+登城 > tojou\ ;
+軍旗 > gunki\ ;
+佳醸 > kajou\ ;
+路肩 > roken\ ;
+機会 > kikai\ ;
+似顔 > nigao\ ;
+甲羅 > koura\ ;
+家門 > kamon\ ;
+自由 > jiyuu\ ;
+棄背 > kihai\ ;
+便衣 > ben''i\ ;
+円光 > enkou\ ;
+自用 > jiyou\ ;
+自生 > jisei\ ;
+使途 > shito\ ;
+軽微 > keibi\ ;
+兵匪 > heihi\ ;
+佳酒 > kashu\ ;
+工具 > kougu\ ;
+登坂 > tohan\ ;
+富鉱 > fukou\ ;
+公吏 > kouri\ ;
+内儀 > naigi\ ;
+侮言 > bugen\ ;
+騎行 > kikou\ ;
+輿地 > yochi\ ;
+延々 > en''en\ ;
+棄老 > kirou\ ;
+芸子 > geiko\ ;
+背離 > hairi\ ;
+左傾 > sakei\ ;
+保菌 > hokin\ ;
+機上 > kijou\ ;
+公印 > kouin\ ;
+輔導 > hodou\ ;
+八卦 > hakke\ ;
+軽度 > keido\ ;
+巴人 > hajin\ ;
+画紙 > gashi\ ;
+英名 > eimei\ ;
+腹腔 > fukko\ ;
+公募 > koubo\ ;
+公務 > koumu\ ;
+番目 > banme\ ;
+党員 > touin\ ;
+内侍 > naiji\ ;
+兼備 > kenbi\ ;
+鬼才 > kisai\ ;
+寄金 > kikin\ ;
+走路 > souro\ ;
+魔弾 > madan\ ;
+岡目 > okame\ ;
+官需 > kanju\ ;
+儀形 > gikei\ ;
+優婉 > yuuen\ ;
+瑞雲 > zuiun\ ;
+高温 > kouon\ ;
+尾花 > obana\ ;
+対話 > taiwa\ ;
+伝馬 > tenma\ ;
+轍叉 > tessa\ ;
+依託 > itaku\ ;
+脳裡 > nouri\ ;
+権化 > gonge\ ;
+脳裏 > nouri\ ;
+苦吟 > kugin\ ;
+芸妓 > geigi\ ;
+路線 > rosen\ ;
+赤身 > akami\ ;
+兵備 > heibi\ ;
+内事 > naiji\ ;
+甘美 > kanbi\ ;
+富農 > funou\ ;
+修羅 > shura\ ;
+芥子 > keshi\ ;
+疑点 > giten\ ;
+工事 > kouji\ ;
+樽俎 > sonso\ ;
+侍講 > jikou\ ;
+軍手 > gunte\ ;
+権利 > kenri\ ;
+会飲 > kaiin\ ;
+典侍 > tenji\ ;
+公儀 > kougi\ ;
+安静 > ansei\ ;
+駅路 > ekiro\ ;
+儒官 > jukan\ ;
+入内 > judai\ ;
+党務 > toumu\ ;
+具体 > gutai\ ;
+発句 > hokku\ ;
+併起 > heiki\ ;
+鬱憤 > uppun\ ;
+苦労 > kurou\ ;
+佳趣 > kashu\ ;
+様子 > yousu\ ;
+保育 > hoiku\ ;
+画稿 > gakou\ ;
+山窩 > sanka\ ;
+例話 > reiwa\ ;
+充員 > juuin\ ;
+花壇 > kadan\ ;
+全備 > zenbi\ ;
+党利 > touri\ ;
+踏破 > touha\ ;
+孤高 > kokou\ ;
+自炊 > jisui\ ;
+業果 > gouka\ ;
+佳賓 > kahin\ ;
+生糸 > kiito\ ;
+兵事 > heiji\ ;
+先古 > senko\ ;
+模写 > mosha\ ;
+僧徒 > souto\ ;
+胃鏡 > ikyou\ ;
+高歌 > kouka\ ;
+例規 > reiki\ ;
+高次 > kouji\ ;
+疎漏 > sorou\ ;
+安閑 > ankan\ ;
+樹上 > jujou\ ;
+余輩 > yohai\ ;
+梅花 > baika\ ;
+儀容 > giyou\ ;
+田租 > denso\ ;
+僧庵 > souan\ ;
+馬車 > basha\ ;
+公事 > kouji\ ;
+先務 > senmu\ ;
+俺等 > orera\ ;
+富貴 > fukki\ ;
+寡言 > kagen\ ;
+首都 > shuto\ ;
+模倣 > mohou\ ;
+富豪 > fugou\ ;
+饑饉 > kikin\ ;
+馬蹄 > batei\ ;
+践祚 > senso\ ;
+路程 > rotei\ ;
+寄贈 > kizou\ ;
+体躯 > taiku\ ;
+痴愚 > chigu\ ;
+背部 > haibu\ ;
+保線 > hosen\ ;
+英主 > eishu\ ;
+季題 > kidai\ ;
+元利 > genri\ ;
+併記 > heiki\ ;
+倫理 > rinri\ ;
+車庫 > shako\ ;
+股間 > kokan\ ;
+産科 > sanka\ ;
+寓話 > guuwa\ ;
+佳言 > kagen\ ;
+自浄 > jijou\ ;
+疏水 > sosui\ ;
+疎水 > sosui\ ;
+余財 > yozai\ ;
+脾臟 > hizou\ ;
+子馬 > kouma\ ;
+脾臓 > hizou\ ;
+僧尼 > souni\ ;
+発作 > hossa\ ;
+転嫁 > tenka\ ;
+自治 > jichi\ ;
+癒合 > yugou\ ;
+充備 > juubi\ ;
+僧寺 > souji\ ;
+脾腫 > hishu\ ;
+高架 > kouka\ ;
+尾籠 > birou\ ;
+痛手 > itade\ ;
+白亜 > hakua\ ;
+僧家 > souka\ ;
+家財 > kazai\ ;
+転婆 > tenba\ ;
+健歩 > kenpo\ ;
+鬼子 > onigo\ ;
+楊枝 > youji\ ;
+展示 > tenji\ ;
+官途 > kanto\ ;
+自民 > jimin\ ;
+保管 > hokan\ ;
+栄転 > eiten\ ;
+検波 > kenpa\ ;
+仮題 > kadai\ ;
+字面 > jimen\ ;
+路盤 > roban\ ;
+元価 > genka\ ;
+舵手 > dashu\ ;
+宏遠 > kouen\ ;
+子音 > shiin\ ;
+艦尾 > kanbi\ ;
+余談 > yodan\ ;
+儀型 > gikei\ ;
+富裕 > fuyuu\ ;
+構図 > kouzu\ ;
+産着 > ubugi\ ;
+偏波 > henha\ ;
+驚異 > kyoui\ ;
+偽本 > gihon\ ;
+艶姿 > enshi\ ;
+優利 > yuuri\ ;
+極意 > gokui\ ;
+仮面 > kamen\ ;
+偽書 > gisho\ ;
+岡湯 > okayu\ ;
+棋界 > kikai\ ;
+保税 > hozei\ ;
+余計 > yokei\ ;
+僅差 > kinsa\ ;
+兄事 > keiji\ ;
+躯幹 > kukan\ ;
+傾度 > keido\ ;
+俯瞰 > fukan\ ;
+校規 > kouki\ ;
+臨機 > rinki\ ;
+肩部 > kenbu\ ;
+艇庫 > teiko\ ;
+尊者 > sonja\ ;
+跡目 > atome\ ;
+路用 > royou\ ;
+家訓 > kakun\ ;
+字間 > jikan\ ;
+家計 > kakei\ ;
+花冠 > kakan\ ;
+低語 > teigo\ ;
+実費 > jippi\ ;
+傾差 > keisa\ ;
+男猫 > oneko\ ;
+甦生 > sosei\ ;
+起草 > kisou\ ;
+架間 > kakan\ ;
+余裕 > yoyuu\ ;
+嵩呼 > suuko\ ;
+官費 > kanpi\ ;
+養鯉 > youri\ ;
+軍夫 > gunpu\ ;
+疎林 > sorin\ ;
+家裁 > kasai\ ;
+俳画 > haiga\ ;
+車夫 > shafu\ ;
+他面 > tamen\ ;
+小紋 > komon\ ;
+桃花 > touka\ ;
+生理 > seiri\ ;
+腋窩 > ekika\ ;
+付随 > fuzui\ ;
+高批 > kouhi\ ;
+家蝿 > iebae\ ;
+検査 > kensa\ ;
+備忘 > bibou\ ;
+小粋 > koiki\ ;
+実記 > jikki\ ;
+自書 > jisho\ ;
+貫首 > kanju\ ;
+偉業 > igyou\ ;
+人馬 > jinba\ ;
+億劫 > okkuu\ ;
+貴顕 > kiken\ ;
+侍者 > jisha\ ;
+自暴 > jibou\ ;
+便秘 > benpi\ ;
+官話 > kanwa\ ;
+崎崖 > kigai\ ;
+疎放 > sohou\ ;
+余薫 > yokun\ ;
+自明 > jimei\ ;
+臨時 > rinji\ ;
+餌食 > ejiki\ ;
+軍器 > gunki\ ;
+定規 > jougi\ ;
+船尾 > senbi\ ;
+儀刑 > gikei\ ;
+今際 > imawa\ ;
+億円 > okuen\ ;
+儀刀 > gitou\ ;
+守護 > shugo\ ;
+会費 > kaihi\ ;
+岩根 > iwane\ ;
+饋還 > kikan\ ;
+寡聞 > kabun\ ;
+高恩 > kouon\ ;
+男滝 > odaki\ ;
+転化 > tenka\ ;
+儀典 > giten\ ;
+瓜科 > urika\ ;
+軽侮 > keibu\ ;
+家蔵 > kazou\ ;
+供米 > kumai\ ;
+栄螺 > sazae\ ;
+軟化 > nanka\ ;
+値段 > nedan\ ;
+孤軍 > kogun\ ;
+偽悪 > giaku\ ;
+異朝 > ichou\ ;
+佳肴 > kakou\ ;
+疲弊 > hihei\ ;
+会議 > kaigi\ ;
+甘煮 > amani\ ;
+偽性 > gisei\ ;
+来駕 > raiga\ ;
+画法 > gahou\ ;
+寄航 > kikou\ ;
+高座 > kouza\ ;
+高度 > koudo\ ;
+良医 > ryoui\ ;
+伝記 > denki\ ;
+会話 > kaiwa\ ;
+余芳 > yohou\ ;
+乱麻 > ranma\ ;
+傘寿 > sanju\ ;
+山河 > sanga\ ;
+尾状 > bijou\ ;
+耳順 > jijun\ ;
+伽藍 > garan\ ;
+賛辞 > sanji\ ;
+軍医 > gun''i\ ;
+専科 > senka\ ;
+異教 > ikyou\ ;
+儀仗 > gijou\ ;
+守衛 > shuei\ ;
+富者 > fusha\ ;
+会規 > kaiki\ ;
+軍務 > gunmu\ ;
+産湯 > ubuyu\ ;
+香華 > kouge\ ;
+自戒 > jikai\ ;
+尾燈 > bitou\ ;
+供祭 > gusai\ ;
+賓辞 > hinji\ ;
+胚芽 > haiga\ ;
+起算 > kisan\ ;
+舞子 > maiko\ ;
+佳編 > kahen\ ;
+自慢 > jiman\ ;
+転位 > ten''i\ ;
+飢饉 > kikin\ ;
+楽器 > gakki\ ;
+疑念 > ginen\ ;
+寺社 > jisha\ ;
+余聞 > yobun\ ;
+交附 > koufu\ ;
+学課 > gakka\ ;
+僭位 > sen''i\ ;
+付近 > fukin\ ;
+尾灯 > bitou\ ;
+馬耕 > bakou\ ;
+瓜田 > kaden\ ;
+踏査 > tousa\ ;
+高宜 > kougi\ ;
+起稿 > kikou\ ;
+画楼 > garou\ ;
+脱皮 > dappi\ ;
+畏服 > ifuku\ ;
+来院 > raiin\ ;
+侍祭 > jisai\ ;
+軍備 > gunbi\ ;
+産気 > sanke\ ;
+楊子 > youji\ ;
+小異 > shoui\ ;
+舞妓 > maiko\ ;
+棄死 > kishi\ ;
+余罪 > yozai\ ;
+産毛 > ubuge\ ;
+業因 > gouin\ ;
+例示 > reiji\ ;
+家老 > karou\ ;
+生気 > seiki\ ;
+事項 > jikou\ ;
+腐爛 > furan\ ;
+小瓶 > kobin\ ;
+佳篇 > kahen\ ;
+脱疽 > dasso\ ;
+岩戸 > iwato\ ;
+寿盃 > juhai\ ;
+生母 > seibo\ ;
+自弁 > jiben\ ;
+番手 > bante\ ;
+偸安 > touan\ ;
+小琴 > ogoto\ ;
+俄然 > gazen\ ;
+棄権 > kiken\ ;
+豪飲 > gouin\ ;
+亀頭 > kitou\ ;
+画板 > gaban\ ;
+字訓 > jikun\ ;
+梳毛 > somou\ ;
+飛電 > hiden\ ;
+二階 > nikai\ ;
+画材 > gazai\ ;
+字解 > jikai\ ;
+軍事 > gunji\ ;
+理財 > rizai\ ;
+画本 > gahon\ ;
+画期 > kakki\ ;
+自工 > jikou\ ;
+胃腸 > ichou\ ;
+校紀 > kouki\ ;
+畸形 > kikei\ ;
+代議 > daigi\ ;
+仮言 > kagen\ ;
+走破 > souha\ ;
+債務 > saimu\ ;
+身分 > mibun\ ;
+個条 > kajou\ ;
+赤禍 > sekka\ ;
+予防 > yobou\ ;
+偉徳 > itoku\ ;
+賄賂 > wairo\ ;
+育英 > ikuei\ ;
+小犬 > koinu\ ;
+栄耀 > eiyou\ ;
+由来 > yurai\ ;
+異心 > ishin\ ;
+船医 > sen''i\ ;
+椰子 > yashi\ ;
+家紋 > kamon\ ;
+家系 > kakei\ ;
+異形 > igyou\ ;
+伽羅 > kyara\ ;
+肺腑 > haifu\ ;
+仏貨 > fukka\ ;
+東都 > touto\ ;
+東部 > toubu\ ;
+仮装 > kasou\ ;
+自尽 > jijin\ ;
+理論 > riron\ ;
+偏差 > hensa\ ;
+尊父 > sonpu\ ;
+自尊 > jison\ ;
+偽報 > gihou\ ;
+定義 > teigi\ ;
+備品 > bihin\ ;
+貨車 > kasha\ ;
+俗気 > zokke\ ;
+自害 > jigai\ ;
+貸費 > taihi\ ;
+寄稿 > kikou\ ;
+留意 > ryuui\ ;
+何箇 > nanko\ ;
+個数 > kosuu\ ;
+寝相 > nezou\ ;
+颶風 > gufuu\ ;
+貴賤 > kisen\ ;
+自存 > jison\ ;
+桂皮 > keihi\ ;
+飲酒 > inshu\ ;
+貴賓 > kihin\ ;
+亨運 > kouun\ ;
+理解 > rikai\ ;
+貴賎 > kisen\ ;
+起用 > kiyou\ ;
+何等 > nanra\ ;
+販路 > hanro\ ;
+期首 > kishu\ ;
+俗歌 > zokka\ ;
+乗馬 > jouba\ ;
+付言 > fugen\ ;
+赤目 > akame\ ;
+介護 > kaigo\ ;
+他言 > tagon\ ;
+亀鑑 > kikan\ ;
+脳炎 > nouen\ ;
+検字 > kenji\ ;
+五重 > gojuu\ ;
+賀詞 > gashi\ ;
+舞台 > butai\ ;
+朝餉 > asage\ ;
+寡男 > yamoo\ ;
+他見 > taken\ ;
+舎営 > shaei\ ;
+伎芸 > gigei\ ;
+疎外 > sogai\ ;
+偶因 > guuin\ ;
+安置 > anchi\ ;
+貨財 > kazai\ ;
+傍受 > bouju\ ;
+胴着 > dougi\ ;
+家禽 > kakin\ ;
+岩屋 > iwaya\ ;
+二重 > futae\ ;
+肥育 > hiiku\ ;
+小滝 > otaki\ ;
+予鈴 > yorei\ ;
+偽善 > gizen\ ;
+梧桐 > gotou\ ;
+貢賦 > koufu\ ;
+画才 > gasai\ ;
+画手 > gashu\ ;
+官紀 > kanki\ ;
+貴誌 > kishi\ ;
+風韻 > fuuin\ ;
+畳字 > jouji\ ;
+他行 > takou\ ;
+股肱 > kokou\ ;
+財貨 > zaika\ ;
+異宗 > ishuu\ ;
+互選 > gosen\ ;
+自壊 > jikai\ ;
+棄損 > kison\ ;
+風靡 > fuubi\ ;
+養護 > yougo\ ;
+貝貨 > baika\ ;
+伎能 > ginou\ ;
+未開 > mikai\ ;
+個所 > kasho\ ;
+貴覧 > kiran\ ;
+走狗 > souku\ ;
+風雲 > fuuun\ ;
+乖離 > kairi\ ;
+疲労 > hirou\ ;
+仮葬 > kasou\ ;
+偽名 > gimei\ ;
+人語 > jingo\ ;
+風雅 > fuuga\ ;
+五輪 > gorin\ ;
+偽史 > gishi\ ;
+期限 > kigen\ ;
+予選 > yosen\ ;
+乗除 > joujo\ ;
+偏奇 > henki\ ;
+主馬 > shume\ ;
+保有 > hoyuu\ ;
+自在 > jizai\ ;
+高利 > kouri\ ;
+期間 > kikan\ ;
+起点 > kiten\ ;
+二輪 > nirin\ ;
+朝間 > asama\ ;
+脳波 > nouha\ ;
+実科 > jikka\ ;
+家相 > kasou\ ;
+来賀 > raiga\ ;
+屠所 > tosho\ ;
+疑問 > gimon\ ;
+舎利 > shari\ ;
+寄生 > kisei\ ;
+二軍 > nigun\ ;
+倒影 > touei\ ;
+他薦 > tazen\ ;
+個性 > kosei\ ;
+駄犬 > daken\ ;
+飛車 > hisha\ ;
+屹度 > kitto\ ;
+作用 > sayou\ ;
+倭寇 > wakou\ ;
+小歌 > kouta\ ;
+主音 > shuon\ ;
+異境 > ikyou\ ;
+容疑 > yougi\ ;
+画廊 > garou\ ;
+余生 > yosei\ ;
+美麗 > birei\ ;
+定礎 > teiso\ ;
+偏土 > hendo\ ;
+岩場 > iwaba\ ;
+自問 > jimon\ ;
+偽兵 > gihei\ ;
+交誼 > kougi\ ;
+腕木 > udegi\ ;
+傘下 > sanka\ ;
+健否 > kenpi\ ;
+画師 > gashi\ ;
+画帖 > gajou\ ;
+家産 > kasan\ ;
+画工 > gakou\ ;
+起源 > kigen\ ;
+羽音 > haoto\ ;
+高価 > kouka\ ;
+倉庫 > souko\ ;
+果菜 > kasai\ ;
+机辺 > kihen\ ;
+対比 > taihi\ ;
+異国 > ikoku\ ;
+村費 > sonpi\ ;
+賢者 > kenja\ ;
+本部 > honbu\ ;
+互譲 > gojou\ ;
+臓器 > zouki\ ;
+対欧 > taiou\ ;
+老躯 > rouku\ ;
+産後 > sango\ ;
+用度 > youdo\ ;
+書院 > shoin\ ;
+桐油 > touyu\ ;
+未遂 > misui\ ;
+生徒 > seito\ ;
+生後 > seigo\ ;
+条規 > jouki\ ;
+脚気 > kakke\ ;
+高下 > kouge\ ;
+自動 > jidou\ ;
+王道 > oudou\ ;
+賛美 > sanbi\ ;
+腐敗 > fuhai\ ;
+蹄叉 > teisa\ ;
+争議 > sougi\ ;
+木通 > akebi\ ;
+仕舞 > jimai\ ;
+越権 > ekken\ ;
+跋扈 > bakko\ ;
+余燼 > yojin\ ;
+個展 > koten\ ;
+自前 > jimae\ ;
+自制 > jisei\ ;
+健児 > kenji\ ;
+胃痛 > itsuu\ ;
+予謀 > yobou\ ;
+骨化 > kokka\ ;
+小枝 > koeda\ ;
+胃病 > ibyou\ ;
+自分 > jibun\ ;
+自刃 > jijin\ ;
+起毛 > kimou\ ;
+瑪瑙 > menou\ ;
+風邪 > fuuja\ ;
+起死 > kishi\ ;
+架線 > kasen\ ;
+上馬 > jouba\ ;
+作為 > sakui\ ;
+背理 > hairi\ ;
+安眠 > anmin\ ;
+自党 > jitou\ ;
+尿意 > nyoui\ ;
+望遠 > bouen\ ;
+田家 > denka\ ;
+予言 > yogen\ ;
+九輪 > kurin\ ;
+乱費 > ranpi\ ;
+他聞 > tabun\ ;
+未踏 > mitou\ ;
+争覇 > souha\ ;
+寝汗 > nease\ ;
+健保 > kenpo\ ;
+対案 > taian\ ;
+瑕疵 > kashi\ ;
+予見 > yoken\ ;
+下風 > kafuu\ ;
+他者 > tasha\ ;
+畿内 > kinai\ ;
+仮納 > kanou\ ;
+猪首 > ikubi\ ;
+定理 > teiri\ ;
+不順 > fujun\ ;
+一首 > isshu\ ;
+産屋 > ubuya\ ;
+仮粧 > kewai\ ;
+豪語 > gougo\ ;
+類韻 > ruiin\ ;
+類音 > ruion\ ;
+寒波 > kanpa\ ;
+用字 > youji\ ;
+学科 > gakka\ ;
+貧苦 > hinku\ ;
+男女 > danjo\ ;
+考課 > kouka\ ;
+根気 > konki\ ;
+赤毛 > akage\ ;
+一飯 > ippan\ ;
+画壇 > gadan\ ;
+寄港 > kikou\ ;
+香煙 > kouen\ ;
+美風 > bifuu\ ;
+飛行 > hikou\ ;
+予行 > yokou\ ;
+京華 > keika\ ;
+安産 > anzan\ ;
+自体 > jitai\ ;
+一風 > ippuu\ ;
+美顔 > bigan\ ;
+生家 > seika\ ;
+実父 > jippu\ ;
+自伝 > jiden\ ;
+聖者 > seija\ ;
+便所 > benjo\ ;
+画報 > gahou\ ;
+自任 > jinin\ ;
+世間 > seken\ ;
+一頭 > ittou\ ;
+甲夜 > kouya\ ;
+自今 > jikon\ ;
+不随 > fuzui\ ;
+香炉 > kouro\ ;
+主部 > shubu\ ;
+一項 > ikkou\ ;
+騎手 > kishu\ ;
+田夫 > denpu\ ;
+賦税 > fuzei\ ;
+飛蝗 > batta\ ;
+璽書 > jisho\ ;
+尻座 > kouza\ ;
+貴翰 > kikan\ ;
+理系 > rikei\ ;
+自乗 > jijou\ ;
+産婦 > sanpu\ ;
+下限 > kagen\ ;
+下降 > kakou\ ;
+上院 > jouin\ ;
+自主 > jishu\ ;
+寸暇 > sunka\ ;
+架空 > kakuu\ ;
+産婆 > sanba\ ;
+棋士 > kishi\ ;
+豌豆 > endou\ ;
+下阪 > gehan\ ;
+寸時 > sunji\ ;
+梵字 > bonji\ ;
+甘子 > amago\ ;
+体温 > taion\ ;
+便意 > ben''i\ ;
+仁義 > jingi\ ;
+宛然 > enzen\ ;
+作法 > sahou\ ;
+検事 > kenji\ ;
+主辞 > shuji\ ;
+暴飲 > bouin\ ;
+寝棺 > nekan\ ;
+果糖 > katou\ ;
+低温 > teion\ ;
+走査 > sousa\ ;
+一階 > ikkai\ ;
+本訴 > honso\ ;
+一隊 > ittai\ ;
+曹達 > souda\ ;
+畸人 > kijin\ ;
+貧者 > hinja\ ;
+俐巧 > rikou\ ;
+例時 > reiji\ ;
+家法 > kahou\ ;
+田圃 > denpo\ ;
+屠場 > tojou\ ;
+付箋 > fusen\ ;
+未見 > miken\ ;
+耳腔 > jikou\ ;
+一閃 > issen\ ;
+少慰 > shoui\ ;
+侮慢 > buman\ ;
+作歌 > sakka\ ;
+桃李 > touri\ ;
+校歌 > kouka\ ;
+義金 > gikin\ ;
+保守 > hoshu\ ;
+風諭 > fuuyu\ ;
+世銀 > segin\ ;
+保存 > hozon\ ;
+肺炎 > haien\ ;
+甘夢 > kanmu\ ;
+尤度 > yuudo\ ;
+耽美 > tanbi\ ;
+曠野 > kouya\ ;
+貴紙 > kishi\ ;
+月賦 > geppu\ ;
+展墓 > tenbo\ ;
+便座 > benza\ ;
+五芒 > gobou\ ;
+珪素 > keiso\ ;
+核果 > kakka\ ;
+尊意 > son''i\ ;
+香油 > kouyu\ ;
+用器 > youki\ ;
+案文 > anmon\ ;
+仮睡 > kasui\ ;
+朗詠 > rouei\ ;
+倒句 > touku\ ;
+倒叙 > toujo\ ;
+仮眠 > kamin\ ;
+貴簡 > kikan\ ;
+臍下 > seika\ ;
+定温 > teion\ ;
+仮相 > kasou\ ;
+五臓 > gozou\ ;
+背泳 > haiei\ ;
+香気 > kouki\ ;
+亡者 > mouja\ ;
+膠化 > kouka\ ;
+頭韻 > touin\ ;
+佳景 > kakei\ ;
+尖度 > sendo\ ;
+他社 > tasha\ ;
+豪華 > gouka\ ;
+富有 > fuyuu\ ;
+世途 > seito\ ;
+仮痘 > katou\ ;
+万里 > banri\ ;
+理知 > richi\ ;
+丘辺 > okabe\ ;
+腹囲 > fukui\ ;
+佐様 > sayou\ ;
+仏祖 > busso\ ;
+駄文 > dabun\ ;
+義軍 > gigun\ ;
+倍加 > baika\ ;
+倭人 > wajin\ ;
+七重 > nanae\ ;
+下郎 > gerou\ ;
+上部 > joubu\ ;
+頓馬 > tonma\ ;
+三部 > sanbu\ ;
+貴種 > kishu\ ;
+不遜 > fuson\ ;
+射影 > shaei\ ;
+不遇 > fuguu\ ;
+一重 > hitoe\ ;
+主語 > shugo\ ;
+便宜 > bengi\ ;
+騎射 > kisha\ ;
+寄書 > kisho\ ;
+不逞 > futei\ ;
+小川 > ogawa\ ;
+対応 > taiou\ ;
+不退 > futai\ ;
+美酒 > bishu\ ;
+瑞気 > zuiki\ ;
+主訴 > shuso\ ;
+暗雲 > an''un\ ;
+貴社 > kisha\ ;
+男児 > danji\ ;
+二者 > nisha\ ;
+画像 > gazou\ ;
+他県 > taken\ ;
+俳味 > haimi\ ;
+佚書 > issho\ ;
+婦選 > fusen\ ;
+用務 > youmu\ ;
+婦道 > fudou\ ;
+村翁 > sonou\ ;
+安泰 > antai\ ;
+肥満 > himan\ ;
+下輩 > gehai\ ;
+家来 > kerai\ ;
+対座 > taiza\ ;
+値上 > neage\ ;
+甘味 > kanmi\ ;
+俳句 > haiku\ ;
+一遍 > ippen\ ;
+老舗 > rouho\ ;
+暗闘 > antou\ ;
+書記 > shoki\ ;
+下車 > gesha\ ;
+少尉 > shoui\ ;
+甚句 > jinku\ ;
+家書 > kasho\ ;
+些細 > sasai\ ;
+理由 > riyuu\ ;
+人祖 > jinso\ ;
+小尉 > shoui\ ;
+校旗 > kouki\ ;
+乱舞 > ranbu\ ;
+五線 > gosen\ ;
+甘受 > kanju\ ;
+一辺 > ippen\ ;
+侍従 > jijuu\ ;
+孤灯 > kotou\ ;
+代理 > dairi\ ;
+貢租 > kouso\ ;
+娃鬟 > aikan\ ;
+会派 > kaiha\ ;
+子犬 > koinu\ ;
+聯珠 > renju\ ;
+用具 > yougu\ ;
+画会 > gakai\ ;
+他界 > takai\ ;
+五絃 > gogen\ ;
+小字 > koaza\ ;
+屋号 > yagou\ ;
+屋台 > yatai\ ;
+尊家 > sonka\ ;
+一転 > itten\ ;
+画人 > gajin\ ;
+題辞 > daiji\ ;
+一軒 > ikken\ ;
+実梅 > miume\ ;
+個体 > kotai\ ;
+騎士 > kishi\ ;
+対峙 > taiji\ ;
+産児 > sanji\ ;
+路傍 > robou\ ;
+本舗 > honpo\ ;
+群議 > gungi\ ;
+不買 > fubai\ ;
+家政 > kasei\ ;
+下賤 > gesen\ ;
+寝息 > neiki\ ;
+不貞 > futei\ ;
+下賜 > kashi\ ;
+下賎 > gesen\ ;
+枯燥 > kosou\ ;
+個人 > kojin\ ;
+木舞 > komai\ ;
+使徒 > shito\ ;
+老翁 > rouou\ ;
+羽蟻 > haari\ ;
+寛恕 > kanjo\ ;
+費用 > hiyou\ ;
+頸部 > keibu\ ;
+代父 > daifu\ ;
+貫目 > kanme\ ;
+小委 > shoui\ ;
+義訓 > gikun\ ;
+予納 > yonou\ ;
+万貨 > banka\ ;
+世論 > yoron\ ;
+豊艶 > houen\ ;
+起工 > kikou\ ;
+板目 > itame\ ;
+頭重 > zuomo\ ;
+梅園 > baien\ ;
+貴男 > takao\ ;
+定木 > jougi\ ;
+定期 > teiki\ ;
+小売 > kouri\ ;
+美貌 > bibou\ ;
+小声 > kogoe\ ;
+桂庵 > keian\ ;
+一貫 > ikkan\ ;
+上議 > jougi\ ;
+生保 > seiho\ ;
+便器 > benki\ ;
+与論 > yoron\ ;
+未聞 > mimon\ ;
+音韻 > on''in\ ;
+用事 > youji\ ;
+景雲 > keiun\ ;
+頭部 > toubu\ ;
+仔犬 > koinu\ ;
+二等 > nitou\ ;
+罪過 > zaika\ ;
+上諭 > jouyu\ ;
+俗化 > zokka\ ;
+字源 > jigen\ ;
+予算 > yosan\ ;
+類語 > ruigo\ ;
+路上 > rojou\ ;
+本義 > hongi\ ;
+賀状 > gajou\ ;
+定時 > teiji\ ;
+棄世 > kisei\ ;
+豆腐 > toufu\ ;
+駄弁 > daben\ ;
+婦警 > fukei\ ;
+起居 > kikyo\ ;
+獄衣 > gokui\ ;
+板画 > hanga\ ;
+不言 > fugen\ ;
+住持 > juuji\ ;
+体技 > taigi\ ;
+保冷 > horei\ ;
+余憤 > yofun\ ;
+上訴 > jouso\ ;
+上記 > jouki\ ;
+余慶 > yokei\ ;
+作意 > sakui\ ;
+保全 > hozen\ ;
+二種 > nishu\ ;
+果然 > kazen\ ;
+不要 > fuyou\ ;
+音階 > onkai\ ;
+美談 > bidan\ ;
+家憲 > kaken\ ;
+予稿 > yokou\ ;
+導因 > douin\ ;
+代演 > daien\ ;
+余情 > yojou\ ;
+寡居 > kakyo\ ;
+犬馬 > kenba\ ;
+餓狼 > garou\ ;
+尼僧 > nisou\ ;
+保健 > hoken\ ;
+翡翠 > hisui\ ;
+枯淡 > kotan\ ;
+頚部 > keibu\ ;
+未練 > miren\ ;
+一計 > ikkei\ ;
+美観 > bikan\ ;
+預金 > yokin\ ;
+余念 > yonen\ ;
+下行 > kakou\ ;
+題詠 > daiei\ ;
+木綿 > momen\ ;
+丹花 > tanka\ ;
+一見 > ikken\ ;
+丹色 > niiro\ ;
+王統 > outou\ ;
+会期 > kaiki\ ;
+封土 > houdo\ ;
+趣味 > shumi\ ;
+賢母 > kenbo\ ;
+暗転 > anten\ ;
+未納 > minou\ ;
+対坐 > taiza\ ;
+余弦 > yogen\ ;
+議題 > gidai\ ;
+聖火 > seika\ ;
+小唄 > kouta\ ;
+余弊 > yohei\ ;
+腐刑 > fukei\ ;
+佳容 > kayou\ ;
+家従 > kajuu\ ;
+赤字 > akaji\ ;
+養父 > youfu\ ;
+来由 > raiyu\ ;
+予知 > yochi\ ;
+仮死 > kashi\ ;
+一行 > ikkou\ ;
+便利 > benri\ ;
+仮歯 > kashi\ ;
+根子 > nekko\ ;
+寸土 > sundo\ ;
+何度 > nando\ ;
+二相 > nisou\ ;
+胡座 > agura\ ;
+賛歌 > sanka\ ;
+珊瑚 > sango\ ;
+案外 > angai\ ;
+事相 > jisou\ ;
+家庭 > katei\ ;
+枯死 > koshi\ ;
+脅威 > kyoui\ ;
+曳航 > eikou\ ;
+理法 > rihou\ ;
+風紀 > fuuki\ ;
+代母 > daibo\ ;
+瓦全 > gazen\ ;
+家常 > kajou\ ;
+人為 > jin''i\ ;
+伝播 > denpa\ ;
+罵言 > bagen\ ;
+騎兵 > kihei\ ;
+低度 > teido\ ;
+桑園 > souen\ ;
+互用 > goyou\ ;
+主義 > shugi\ ;
+条理 > jouri\ ;
+小勢 > kozei\ ;
+寄寓 > kiguu\ ;
+尊卑 > sonpi\ ;
+学期 > gakki\ ;
+二番 > niban\ ;
+時限 > jigen\ ;
+背後 > haigo\ ;
+牡鹿 > ojika\ ;
+企望 > kibou\ ;
+本科 > honka\ ;
+果汁 > kajuu\ ;
+馬屋 > umaya\ ;
+駅夫 > ekifu\ ;
+伝授 > denju\ ;
+事由 > jiyuu\ ;
+俎上 > sojou\ ;
+小判 > koban\ ;
+乾皮 > kanpi\ ;
+羽翼 > uyoku\ ;
+枝毛 > edage\ ;
+寿司 > sushi\ ;
+作家 > sakka\ ;
+首座 > shuza\ ;
+普選 > fusen\ ;
+首府 > shufu\ ;
+亡父 > boufu\ ;
+普遍 > fuhen\ ;
+余寒 > yokan\ ;
+時間 > jikan\ ;
+封印 > fuuin\ ;
+譜面 > fumen\ ;
+任期 > ninki\ ;
+赭土 > shado\ ;
+家屋 > kaoku\ ;
+家居 > kakyo\ ;
+讚辞 > sanji\ ;
+聖油 > seiyu\ ;
+腐乱 > furan\ ;
+専務 > senmu\ ;
+猟虎 > rakko\ ;
+普辺 > fuhen\ ;
+寝坊 > nebou\ ;
+飴煮 > ameni\ ;
+枢機 > suuki\ ;
+群舞 > gunbu\ ;
+根基 > konki\ ;
+住居 > sumai\ ;
+胃弱 > ijaku\ ;
+伝手 > tsute\ ;
+宵寝 > yoine\ ;
+宣布 > senpu\ ;
+足下 > sokka\ ;
+小僧 > kozou\ ;
+宝庫 > houko\ ;
+順路 > junro\ ;
+上荷 > uwani\ ;
+家宝 > kahou\ ;
+射利 > shari\ ;
+猛虎 > mouko\ ;
+字書 > jisho\ ;
+一葦 > ichii\ ;
+宮居 > miyai\ ;
+赤地 > akaji\ ;
+佐官 > sakan\ ;
+脱兎 > datto\ ;
+聖母 > seibo\ ;
+羽織 > haori\ ;
+腋下 > ekika\ ;
+義肢 > gishi\ ;
+騎乗 > kijou\ ;
+侍史 > jishi\ ;
+官府 > kanpu\ ;
+未知 > michi\ ;
+暗視 > anshi\ ;
+林檎 > ringo\ ;
+代案 > daian\ ;
+聖歌 > seika\ ;
+今次 > konji\ ;
+貴殿 > kiden\ ;
+下船 > gesen\ ;
+事犯 > jihan\ ;
+首尾 > shubi\ ;
+越冬 > ettou\ ;
+安心 > anjin\ ;
+献花 > kenka\ ;
+耳漏 > jirou\ ;
+賜暇 > shika\ ;
+一茎 > ikkei\ ;
+起原 > kigen\ ;
+胸囲 > kyoui\ ;
+字数 > jisuu\ ;
+貪汚 > tan''o\ ;
+班次 > hanji\ ;
+下腿 > katai\ ;
+餓死 > gashi\ ;
+星雲 > seiun\ ;
+寿像 > juzou\ ;
+価値 > kachi\ ;
+不能 > funou\ ;
+妖魔 > youma\ ;
+環化 > kanka\ ;
+一艘 > issou\ ;
+来演 > raien\ ;
+嫌疑 > kengi\ ;
+起動 > kidou\ ;
+仮数 > kasuu\ ;
+余塵 > yojin\ ;
+普賢 > fugen\ ;
+一般 > ippan\ ;
+休意 > kyuui\ ;
+養母 > youbo\ ;
+家声 > kasei\ ;
+実家 > jikka\ ;
+下肢 > kashi\ ;
+預言 > yogen\ ;
+一致 > itchi\ ;
+駅員 > ekiin\ ;
+会得 > etoku\ ;
+寝台 > nedai\ ;
+下聞 > kabun\ ;
+佳品 > kahin\ ;
+寡占 > kasen\ ;
+不老 > furou\ ;
+赤味 > akami\ ;
+護送 > gosou\ ;
+対価 > taika\ ;
+侏儒 > shuju\ ;
+尊下 > sonka\ ;
+他村 > tason\ ;
+杜漏 > zurou\ ;
+寡勢 > kazei\ ;
+宛字 > ateji\ ;
+査定 > satei\ ;
+宗家 > souke\ ;
+侍僧 > jisou\ ;
+余地 > yochi\ ;
+牝馬 > hinba\ ;
+美育 > biiku\ ;
+案分 > anbun\ ;
+能吏 > nouri\ ;
+仏果 > bukka\ ;
+耐火 > taika\ ;
+老爺 > rouya\ ;
+老父 > roufu\ ;
+警部 > keibu\ ;
+頭蓋 > zugai\ ;
+赤化 > sekka\ ;
+理数 > risuu\ ;
+亜流 > aryuu\ ;
+起債 > kisai\ ;
+象牙 > zouge\ ;
+一考 > ikkou\ ;
+東歌 > touka\ ;
+警邏 > keira\ ;
+安居 > ankyo\ ;
+東欧 > touou\ ;
+駆動 > kudou\ ;
+容器 > youki\ ;
+贔屓 > hiiki\ ;
+寡兵 > kahei\ ;
+世紀 > seiki\ ;
+他方 > tahou\ ;
+今期 > konki\ ;
+果断 > kadan\ ;
+任意 > nin''i\ ;
+類縁 > ruien\ ;
+余喘 > yozen\ ;
+讒誣 > zanbu\ ;
+亡母 > boubo\ ;
+果敢 > kakan\ ;
+安定 > antei\ ;
+下線 > kasen\ ;
+下緒 > sageo\ ;
+宇宙 > uchuu\ ;
+讒訴 > zanso\ ;
+官女 > kanjo\ ;
+音詩 > onshi\ ;
+不純 > fujun\ ;
+不納 > funou\ ;
+伎工 > gikou\ ;
+音訓 > onkun\ ;
+賢愚 > kengu\ ;
+胃壁 > iheki\ ;
+余命 > yomei\ ;
+伝家 > denka\ ;
+杜氏 > touji\ ;
+不粋 > busui\ ;
+妖雲 > youun\ ;
+赴任 > funin\ ;
+賦性 > fusei\ ;
+馴化 > junka\ ;
+一線 > issen\ ;
+一緒 > issho\ ;
+代打 > daida\ ;
+仮想 > kasou\ ;
+案件 > anken\ ;
+獣皮 > juuhi\ ;
+五段 > godan\ ;
+賛意 > san''i\ ;
+板木 > hangi\ ;
+貴方 > kihou\ ;
+飢民 > kimin\ ;
+一統 > ittou\ ;
+飛泉 > hisen\ ;
+未然 > mizen\ ;
+駐伊 > chuui\ ;
+好餌 > kouji\ ;
+映配 > eihai\ ;
+家君 > kakun\ ;
+孤帆 > kohan\ ;
+家名 > kamei\ ;
+一系 > ikkei\ ;
+寡人 > kajin\ ;
+仮性 > kasei\ ;
+作動 > sadou\ ;
+一糸 > isshi\ ;
+字形 > jikei\ ;
+不等 > futou\ ;
+校務 > koumu\ ;
+人時 > ninji\ ;
+羈絆 > kihan\ ;
+頭脳 > zunou\ ;
+余勢 > yosei\ ;
+下等 > katou\ ;
+駆使 > kushi\ ;
+佳例 > karei\ ;
+二死 > nishi\ ;
+宝器 > houki\ ;
+木灰 > kibai\ ;
+下端 > katan\ ;
+余剰 > yojou\ ;
+羅紗 > rasha\ ;
+奇麗 > kirei\ ;
+仕手 > shite\ ;
+孤島 > kotou\ ;
+馬券 > baken\ ;
+宮司 > guuji\ ;
+香味 > koumi\ ;
+余分 > yobun\ ;
+伝奇 > denki\ ;
+理想 > risou\ ;
+佳什 > kajuu\ ;
+佳人 > kajin\ ;
+一管 > ikkan\ ;
+宥和 > yuuwa\ ;
+佑助 > yuujo\ ;
+校具 > kougu\ ;
+議論 > giron\ ;
+一等 > ittou\ ;
+書画 > shoga\ ;
+獲物 > emono\ ;
+能事 > nouji\ ;
+奮飛 > funpi\ ;
+肥大 > hidai\ ;
+余党 > yotou\ ;
+余光 > yokou\ ;
+豪気 > gouki\ ;
+理性 > risei\ ;
+時論 > jiron\ ;
+警護 > keigo\ ;
+負数 > fusuu\ ;
+二様 > niyou\ ;
+義眼 > gigan\ ;
+査問 > samon\ ;
+理念 > rinen\ ;
+青馬 > aouma\ ;
+低利 > teiri\ ;
+譫語 > sengo\ ;
+未満 > miman\ ;
+家内 > kanai\ ;
+世知 > sechi\ ;
+定員 > teiin\ ;
+買手 > kaite\ ;
+容儀 > yougi\ ;
+実否 > jippi\ ;
+来期 > raiki\ ;
+乃父 > daifu\ ;
+家兄 > kakei\ ;
+季子 > kishi\ ;
+井桁 > igeta\ ;
+暗翳 > an''ei\ ;
+未済 > misai\ ;
+貴所 > kisho\ ;
+姉貴 > aneki\ ;
+時計 > tokei\ ;
+老母 > roubo\ ;
+他念 > tanen\ ;
+宛名 > atena\ ;
+女難 > jonan\ ;
+奴隷 > dorei\ ;
+世相 > sesou\ ;
+仲居 > nakai\ ;
+顕示 > kenji\ ;
+不知 > fuchi\ ;
+官吏 > kanri\ ;
+末派 > mappa\ ;
+何個 > nanko\ ;
+非難 > hinan\ ;
+下知 > gedji\ ;
+太鼓 > taiko\ ;
+下瞰 > kakan\ ;
+香具 > kougu\ ;
+須臾 > shuyu\ ;
+朝湯 > asayu\ ;
+五書 > gosho\ ;
+五更 > gokou\ ;
+奔馬 > honba\ ;
+聖恩 > seion\ ;
+嫌気 > kenki\ ;
+委託 > itaku\ ;
+不眠 > fumin\ ;
+亜族 > azoku\ ;
+王法 > ouhou\ ;
+仁慈 > jinji\ ;
+仮寓 > kaguu\ ;
+仏徒 > butto\ ;
+理工 > rikou\ ;
+板戸 > itado\ ;
+人我 > jinga\ ;
+家例 > karei\ ;
+貧打 > hinda\ ;
+余人 > yonin\ ;
+他店 > taten\ ;
+大黄 > daiou\ ;
+上着 > uwagi\ ;
+大麻 > taima\ ;
+本気 > honki\ ;
+仮定 > katei\ ;
+他年 > tanen\ ;
+老樹 > rouju\ ;
+付帯 > futai\ ;
+胎児 > taiji\ ;
+是認 > zenin\ ;
+負担 > futan\ ;
+家伝 > kaden\ ;
+暗線 > ansen\ ;
+上目 > uwame\ ;
+栄冠 > eikan\ ;
+低価 > teika\ ;
+王水 > ousui\ ;
+今後 > kongo\ ;
+聖徒 > seito\ ;
+世界 > sekai\ ;
+栄典 > eiten\ ;
+孟女 > moujo\ ;
+飛来 > hirai\ ;
+家令 > karei\ ;
+二曹 > nisou\ ;
+二更 > nikou\ ;
+宴会 > enkai\ ;
+青雲 > seiun\ ;
+馬上 > bajou\ ;
+上皮 > jouhi\ ;
+一矢 > isshi\ ;
+余世 > yosei\ ;
+馬丁 > batei\ ;
+家什 > kajuu\ ;
+栄光 > eikou\ ;
+家人 > kenin\ ;
+警衛 > keiei\ ;
+孝女 > koujo\ ;
+仁恕 > jinjo\ ;
+孟夏 > mouka\ ;
+斑鳩 > ikaru\ ;
+風波 > fuuha\ ;
+来援 > raien\ ;
+今度 > kondo\ ;
+下疳 > gekan\ ;
+会員 > kaiin\ ;
+乾枯 > kanko\ ;
+孤城 > kojou\ ;
+音色 > neiro\ ;
+乾果 > kanka\ ;
+而来 > jirai\ ;
+杜撰 > zusan\ ;
+譎詐 > kissa\ ;
+上疏 > jouso\ ;
+下番 > kaban\ ;
+不用 > fuyou\ ;
+考案 > kouan\ ;
+下界 > gekai\ ;
+下男 > genan\ ;
+下田 > geden\ ;
+低下 > teika\ ;
+理容 > riyou\ ;
+暖簾 > noren\ ;
+貴店 > kiten\ ;
+乾期 > kanki\ ;
+考査 > kousa\ ;
+他山 > tazan\ ;
+伝受 > denju\ ;
+主演 > shuen\ ;
+謝辞 > shaji\ ;
+予断 > yodan\ ;
+子女 > shijo\ ;
+人後 > jingo\ ;
+王権 > ouken\ ;
+飛散 > hisan\ ;
+暗算 > anzan\ ;
+胎仔 > taiji\ ;
+仮声 > kasei\ ;
+嬌態 > shina\ ;
+罪科 > zaika\ ;
+肥厚 > hikou\ ;
+負性 > fusei\ ;
+互換 > gokan\ ;
+美男 > binan\ ;
+露顕 > roken\ ;
+美田 > biden\ ;
+伶俐 > reiri\ ;
+天魔 > tenma\ ;
+定価 > teika\ ;
+露頭 > rotou\ ;
+讚美 > sanbi\ ;
+一生 > issei\ ;
+安全 > anzen\ ;
+五指 > goshi\ ;
+育児 > ikuji\ ;
+罌粟 > keshi\ ;
+宣下 > senge\ ;
+仏家 > bukke\ ;
+特記 > tokki\ ;
+貨幣 > kahei\ ;
+官位 > kan''i\ ;
+一環 > ikkan\ ;
+既遂 > kisui\ ;
+孵卵 > furan\ ;
+完備 > kanbi\ ;
+題画 > daiga\ ;
+好運 > kouun\ ;
+聖寿 > seiju\ ;
+飛揚 > hiyou\ ;
+球威 > kyuui\ ;
+謹話 > kinwa\ ;
+不犯 > fubon\ ;
+今宵 > koyoi\ ;
+守備 > shubi\ ;
+五戒 > gokai\ ;
+猜疑 > saigi\ ;
+官事 > kanji\ ;
+杞憂 > kiyuu\ ;
+今季 > konki\ ;
+理外 > rigai\ ;
+面部 > menbu\ ;
+明記 > meiki\ ;
+他姓 > tasei\ ;
+女郎 > jorou\ ;
+天馬 > tenba\ ;
+財布 > saifu\ ;
+未来 > mirai\ ;
+不燃 > funen\ ;
+一献 > ikkon\ ;
+五感 > gokan\ ;
+施錠 > sejou\ ;
+安住 > anjuu\ ;
+耳底 > jitei\ ;
+非道 > hidou\ ;
+五情 > gojou\ ;
+霧雰 > mufun\ ;
+板屋 > itaya\ ;
+一犬 > ikken\ ;
+五悪 > goaku\ ;
+学区 > gakku\ ;
+人寿 > jinju\ ;
+有機 > yuuki\ ;
+讃美 > sanbi\ ;
+与点 > yoten\ ;
+一版 > ippan\ ;
+人家 > jinka\ ;
+頭皮 > touhi\ ;
+未明 > mimei\ ;
+互恵 > gokei\ ;
+事態 > jitai\ ;
+果報 > kahou\ ;
+面輪 > omowa\ ;
+貧富 > hinpu\ ;
+現場 > genba\ ;
+貧家 > hinka\ ;
+養家 > youka\ ;
+課題 > kadai\ ;
+類火 > ruika\ ;
+存否 > zonpi\ ;
+交差 > kousa\ ;
+板子 > itago\ ;
+奠都 > tento\ ;
+事情 > jijou\ ;
+貴姉 > kishi\ ;
+予感 > yokan\ ;
+聖夜 > seiya\ ;
+今夏 > konka\ ;
+字号 > jigou\ ;
+予想 > yosou\ ;
+五彩 > gosai\ ;
+任務 > ninmu\ ;
+方里 > houri\ ;
+王政 > ousei\ ;
+季刊 > kikan\ ;
+架台 > kadai\ ;
+美点 > biten\ ;
+二念 > ninen\ ;
+講話 > kouwa\ ;
+一点 > itten\ ;
+賛否 > sanpi\ ;
+大雨 > ooame\ ;
+夕餉 > yuuge\ ;
+太陰 > taiin\ ;
+朝日 > asahi\ ;
+代員 > daiin\ ;
+上演 > jouen\ ;
+雲高 > unkou\ ;
+五常 > gojou\ ;
+文雅 > bunga\ ;
+交尾 > koubi\ ;
+不満 > fuman\ ;
+贈与 > zouyo\ ;
+乱打 > randa\ ;
+外題 > gedai\ ;
+牡蠣 > borei\ ;
+奮起 > funki\ ;
+人夫 > ninpu\ ;
+耶嬢 > yajou\ ;
+互市 > goshi\ ;
+養女 > youjo\ ;
+妄語 > mougo\ ;
+貞婦 > teifu\ ;
+義民 > gimin\ ;
+多面 > tamen\ ;
+耳孔 > jikou\ ;
+語類 > gorui\ ;
+方途 > houto\ ;
+仏器 > bukki\ ;
+交宜 > kougi\ ;
+日課 > nikka\ ;
+聯句 > renku\ ;
+語頭 > gotou\ ;
+亜属 > azoku\ ;
+有期 > yuuki\ ;
+賛助 > sanjo\ ;
+語順 > gojun\ ;
+主査 > shusa\ ;
+季候 > kikou\ ;
+多難 > tanan\ ;
+字典 > jiten\ ;
+貴地 > kichi\ ;
+代印 > daiin\ ;
+義歯 > gishi\ ;
+好誼 > kougi\ ;
+不浄 > fujou\ ;
+日記 > nikki\ ;
+以北 > ihoku\ ;
+子分 > kobun\ ;
+猛火 > mouka\ ;
+外需 > gaiju\ ;
+学位 > gakui\ ;
+本手 > honte\ ;
+来季 > raiki\ ;
+貞女 > teijo\ ;
+音程 > ontei\ ;
+翻意 > hon''i\ ;
+謀議 > bougi\ ;
+不法 > fuhou\ ;
+美港 > bikou\ ;
+代務 > daimu\ ;
+不治 > fuchi\ ;
+羅漢 > rakan\ ;
+餬口 > kokou\ ;
+罹災 > risai\ ;
+未成 > misei\ ;
+最期 > saigo\ ;
+雪駄 > setta\ ;
+夕陽 > yuuhi\ ;
+夜間 > yakan\ ;
+亡婦 > boufu\ ;
+奇遇 > kiguu\ ;
+書架 > shoka\ ;
+老後 > rougo\ ;
+什器 > juuki\ ;
+旅費 > ryohi\ ;
+井守 > imori\ ;
+青貝 > aogai\ ;
+下水 > gesui\ ;
+五官 > gokan\ ;
+奈辺 > nahen\ ;
+整除 > seijo\ ;
+不毛 > fumou\ ;
+下民 > gemin\ ;
+本意 > hon''i\ ;
+嫌悪 > ken''o\ ;
+旧衣 > kyuui\ ;
+貧土 > hindo\ ;
+既製 > kisei\ ;
+電離 > denri\ ;
+上気 > jouki\ ;
+類比 > ruihi\ ;
+飢寒 > kikan\ ;
+一洗 > issen\ ;
+下殿 > geden\ ;
+不死 > fushi\ ;
+下段 > gedan\ ;
+零露 > reiro\ ;
+不正 > fusei\ ;
+二封 > nifuu\ ;
+雷雲 > raiun\ ;
+字体 > jitai\ ;
+期成 > kisei\ ;
+他動 > tadou\ ;
+類歌 > ruika\ ;
+謁見 > ekken\ ;
+亡夫 > boufu\ ;
+上歯 > uwaba\ ;
+二宮 > niguu\ ;
+斗酒 > toshu\ ;
+他励 > tarei\ ;
+不欄 > furan\ ;
+班員 > hanin\ ;
+諷誦 > fuuju\ ;
+嫌忌 > kengi\ ;
+今古 > kinko\ ;
+諮議 > shigi\ ;
+三次 > sanji\ ;
+一水 > issui\ ;
+仇名 > adana\ ;
+予定 > yotei\ ;
+貴君 > kikun\ ;
+断路 > danro\ ;
+狼煙 > rouen\ ;
+貴名 > kimei\ ;
+貴台 > kidai\ ;
+仮令 > tatoe\ ;
+一段 > ittan\ ;
+女装 > josou\ ;
+牛蒡 > gobou\ ;
+暗然 > anzen\ ;
+一死 > isshi\ ;
+一歳 > issai\ ;
+来場 > raiba\ ;
+課金 > kakin\ ;
+音盤 > onban\ ;
+介助 > kaijo\ ;
+万機 > banki\ ;
+飯場 > hanba\ ;
+羊歯 > shida\ ;
+風情 > fuzei\ ;
+代価 > daika\ ;
+架上 > kajou\ ;
+声音 > seion\ ;
+暗点 > anten\ ;
+狼火 > rouka\ ;
+仕儀 > shigi\ ;
+暖炉 > danro\ ;
+非行 > hikou\ ;
+乾季 > kanki\ ;
+大部 > daibu\ ;
+奉賀 > houga\ ;
+豪家 > gouka\ ;
+時空 > jikuu\ ;
+音痴 > onchi\ ;
+期待 > kitai\ ;
+文部 > monbu\ ;
+井堰 > iseki\ ;
+大過 > taika\ ;
+暗澹 > antan\ ;
+王師 > oushi\ ;
+話題 > wadai\ ;
+事大 > jidai\ ;
+多重 > tajuu\ ;
+話頭 > watou\ ;
+二士 > nishi\ ;
+事変 > jihen\ ;
+晩生 > okute\ ;
+雨間 > amaai\ ;
+妖艶 > youen\ ;
+外野 > gaiya\ ;
+下校 > gekou\ ;
+現価 > genka\ ;
+論議 > rongi\ ;
+負号 > fugou\ ;
+試飲 > shiin\ ;
+読過 > dokka\ ;
+明美 > meibi\ ;
+付会 > fukai\ ;
+貴公 > kikou\ ;
+請負 > ukeoi\ ;
+主我 > shuga\ ;
+飽和 > houwa\ ;
+二塁 > nirui\ ;
+誤配 > gohai\ ;
+貴兄 > kikei\ ;
+奇警 > kikei\ ;
+離間 > rikan\ ;
+翻字 > honji\ ;
+飛報 > hihou\ ;
+貴僧 > kisou\ ;
+繋辞 > keiji\ ;
+日華 > nikka\ ;
+予報 > yohou\ ;
+他人 > tanin\ ;
+雄飛 > yuuhi\ ;
+外部 > gaibu\ ;
+論語 > rongo\ ;
+曜日 > youbi\ ;
+老婦 > roufu\ ;
+外郎 > uirou\ ;
+青蝿 > aobae\ ;
+罨法 > anpou\ ;
+暗渠 > ankyo\ ;
+老婆 > rouba\ ;
+奇談 > kidan\ ;
+財務 > zaimu\ ;
+下書 > gesho\ ;
+亭午 > teigo\ ;
+施行 > sekou\ ;
+一校 > ikkou\ ;
+最愛 > saiai\ ;
+曖昧 > aimai\ ;
+早苗 > sanae\ ;
+万朶 > banda\ ;
+本家 > honke\ ;
+外道 > gedou\ ;
+媚態 > bitai\ ;
+時短 > jitan\ ;
+暗涙 > anrui\ ;
+有心 > ushin\ ;
+現世 > genze\ ;
+二回 > nikai\ ;
+現下 > genka\ ;
+暢気 > nonki\ ;
+老妓 > rougi\ ;
+未定 > mitei\ ;
+耕土 > koudo\ ;
+本字 > honji\ ;
+不易 > fueki\ ;
+交叉 > kousa\ ;
+未完 > mikan\ ;
+奇計 > kikei\ ;
+不明 > fumei\ ;
+貼付 > tenpu\ ;
+末季 > makki\ ;
+老女 > roujo\ ;
+主恩 > shuon\ ;
+一杯 > ippai\ ;
+美本 > bihon\ ;
+三時 > sanji\ ;
+上映 > jouei\ ;
+奇観 > kikan\ ;
+王孫 > ouson\ ;
+下旬 > gejun\ ;
+不断 > fudan\ ;
+一本 > ippon\ ;
+不斉 > fusei\ ;
+不文 > fubun\ ;
+材器 > zaiki\ ;
+下方 > kahou\ ;
+不整 > fusei\ ;
+不敬 > fukei\ ;
+三日 > mikka\ ;
+一曹 > issou\ ;
+一書 > issho\ ;
+時相 > jisou\ ;
+一更 > ikkou\ ;
+始祖 > shiso\ ;
+不敗 > fuhai\ ;
+不敏 > fubin\ ;
+天賦 > tenpu\ ;
+豎子 > jushi\ ;
+豊富 > houfu\ ;
+美景 > bikei\ ;
+露見 > roken\ ;
+義挙 > gikyo\ ;
+下放 > kahou\ ;
+談話 > danwa\ ;
+最後 > saigo\ ;
+貴人 > kijin\ ;
+敬遠 > keien\ ;
+未婚 > mikon\ ;
+朝寝 > asane\ ;
+貸与 > taiyo\ ;
+亘古 > kouko\ ;
+暖気 > nonki\ ;
+乾固 > kanko\ ;
+不撓 > futou\ ;
+綺麗 > kirei\ ;
+負債 > fusai\ ;
+乙子 > otogo\ ;
+婚期 > konki\ ;
+大豆 > daizu\ ;
+講義 > kougi\ ;
+雨量 > uryou\ ;
+一旦 > ittan\ ;
+奇行 > kikou\ ;
+人位 > jin''i\ ;
+義手 > gishu\ ;
+美文 > bibun\ ;
+一方 > ippou\ ;
+暑気 > shoki\ ;
+一斤 > ikkin\ ;
+義戦 > gisen\ ;
+一斑 > ippan\ ;
+一斉 > issei\ ;
+誹謗 > hibou\ ;
+旗艦 > kikan\ ;
+緋鯉 > higoi\ ;
+一敗 > ippai\ ;
+羈旅 > kiryo\ ;
+五十 > gojuu\ ;
+義憤 > gifun\ ;
+二君 > nikun\ ;
+世才 > sesai\ ;
+貫主 > kanju\ ;
+二号 > nigou\ ;
+最左 > saisa\ ;
+未墾 > mikon\ ;
+亡児 > bouji\ ;
+書庫 > shoko\ ;
+本場 > honba\ ;
+電路 > denro\ ;
+外貨 > gaika\ ;
+乙女 > otome\ ;
+文語 > bungo\ ;
+世態 > setai\ ;
+玩味 > ganmi\ ;
+顧慮 > koryo\ ;
+誘起 > yuuki\ ;
+不才 > fusai\ ;
+夜警 > yakei\ ;
+隠顕 > inken\ ;
+不戦 > fusen\ ;
+王城 > oujou\ ;
+一掃 > issou\ ;
+上手 > jouzu\ ;
+本土 > hondo\ ;
+世情 > sejou\ ;
+上戸 > jougo\ ;
+美挙 > bikyo\ ;
+多謝 > tasha\ ;
+不憫 > fubin\ ;
+事前 > jizen\ ;
+一挙 > ikkyo\ ;
+離農 > rinou\ ;
+万戸 > banko\ ;
+一指 > isshi\ ;
+音源 > ongen\ ;
+不慮 > furyo\ ;
+耳介 > jikai\ ;
+二分 > nibun\ ;
+暫時 > zanji\ ;
+明示 > meiji\ ;
+壮途 > souto\ ;
+主家 > shuka\ ;
+隠面 > inmen\ ;
+交付 > koufu\ ;
+訴願 > sogan\ ;
+不愍 > fubin\ ;
+義弟 > gitei\ ;
+父老 > furou\ ;
+率土 > sotto\ ;
+交互 > kougo\ ;
+誤認 > gonin\ ;
+雪踏 > setta\ ;
+天衣 > ten''i\ ;
+面罵 > menba\ ;
+一才 > issai\ ;
+事典 > jiten\ ;
+外語 > gaigo\ ;
+多言 > tagen\ ;
+一戦 > issen\ ;
+下情 > kajou\ ;
+五倫 > gorin\ ;
+耕具 > kougu\ ;
+五倍 > gobai\ ;
+順次 > junji\ ;
+犠牲 > gisei\ ;
+誤解 > gokai\ ;
+誣言 > fugen\ ;
+書家 > shoka\ ;
+願意 > gan''i\ ;
+語誌 > goshi\ ;
+詭道 > kidou\ ;
+主婦 > shufu\ ;
+景気 > keiki\ ;
+不快 > fukai\ ;
+風土 > fuudo\ ;
+中尉 > chuui\ ;
+難路 > nanro\ ;
+燃費 > nenpi\ ;
+美感 > bikan\ ;
+有夫 > yuufu\ ;
+五体 > gotai\ ;
+老化 > rouka\ ;
+有夏 > yuuka\ ;
+嫌味 > iyami\ ;
+一意 > ichii\ ;
+普段 > fudan\ ;
+二倍 > nibai\ ;
+讚歌 > sanka\ ;
+下御 > gegyo\ ;
+玩具 > gangu\ ;
+詭辯 > kiben\ ;
+不当 > futou\ ;
+奥義 > okugi\ ;
+電話 > denwa\ ;
+世帯 > setai\ ;
+時点 > jiten\ ;
+敬語 > keigo\ ;
+夜行 > yakou\ ;
+猛打 > mouda\ ;
+需要 > juyou\ ;
+大蛇 > daija\ ;
+下弦 > kagen\ ;
+朱印 > shuin\ ;
+事例 > jirei\ ;
+外被 > gaihi\ ;
+事体 > jitai\ ;
+最多 > saita\ ;
+特異 > tokui\ ;
+不幸 > fukou\ ;
+風喩 > fuuyu\ ;
+不平 > fuhei\ ;
+顕微 > kenbi\ ;
+女系 > jokei\ ;
+谷地 > yachi\ ;
+上座 > jouza\ ;
+縁辺 > enpen\ ;
+雄途 > yuuto\ ;
+事件 > jiken\ ;
+三度 > sando\ ;
+三府 > sanpu\ ;
+支部 > shibu\ ;
+美形 > bikei\ ;
+媾和 > kouwa\ ;
+父系 > fukei\ ;
+乗員 > jouin\ ;
+予令 > yorei\ ;
+支那 > shina\ ;
+下巻 > gekan\ ;
+二乗 > nijou\ ;
+上布 > joufu\ ;
+老儒 > rouju\ ;
+本務 > honmu\ ;
+二世 > nisei\ ;
+二三 > nisan\ ;
+譲渡 > jouto\ ;
+風味 > fuumi\ ;
+義子 > gishi\ ;
+九十 > kujuu\ ;
+罹患 > rikan\ ;
+未到 > mitou\ ;
+護法 > gohou\ ;
+而今 > jikon\ ;
+豚児 > tonji\ ;
+一帯 > ittai\ ;
+讃歌 > sanka\ ;
+旺盛 > ousei\ ;
+未刊 > mikan\ ;
+難語 > nango\ ;
+故買 > kobai\ ;
+雑費 > zappi\ ;
+王制 > ousei\ ;
+主因 > shuin\ ;
+朱儒 > shuju\ ;
+雑貨 > zakka\ ;
+奇聞 > kibun\ ;
+不尽 > fujin\ ;
+下山 > gezan\ ;
+敗訴 > haiso\ ;
+下層 > kasou\ ;
+声誉 > seiyo\ ;
+雅趣 > gashu\ ;
+上屋 > uwaya\ ;
+王冠 > oukan\ ;
+風化 > fuuka\ ;
+壮語 > sougo\ ;
+乗務 > joumu\ ;
+暴徒 > bouto\ ;
+王公 > oukou\ ;
+義姉 > gishi\ ;
+不宣 > fusen\ ;
+義妹 > gimai\ ;
+王党 > outou\ ;
+不定 > futei\ ;
+三尉 > san''i\ ;
+険阻 > kenso\ ;
+不孝 > fukou\ ;
+万寿 > banju\ ;
+詮議 > sengi\ ;
+類字 > ruiji\ ;
+降魔 > gouma\ ;
+天花 > tenka\ ;
+音栓 > onsen\ ;
+義士 > gishi\ ;
+一層 > issou\ ;
+韻書 > insho\ ;
+施米 > semai\ ;
+詞賦 > shifu\ ;
+期内 > kinai\ ;
+既知 > kichi\ ;
+譲歩 > jouho\ ;
+詭謀 > kibou\ ;
+文苑 > bunen\ ;
+静穏 > seion\ ;
+机上 > kijou\ ;
+陰険 > inken\ ;
+一尉 > ichii\ ;
+一封 > ippuu\ ;
+美容 > biyou\ ;
+晩期 > banki\ ;
+繁華 > hanka\ ;
+頻度 > hindo\ ;
+談義 > dangi\ ;
+隠遁 > inton\ ;
+非礼 > hirei\ ;
+本位 > hon''i\ ;
+一定 > ittei\ ;
+王侯 > oukou\ ;
+頓挫 > tonza\ ;
+丁字 > teiji\ ;
+雑記 > zakki\ ;
+不姙 > funin\ ;
+隠退 > intai\ ;
+靱皮 > jinpi\ ;
+風儀 > fuugi\ ;
+詩語 > shigo\ ;
+詭計 > kikei\ ;
+除霜 > josou\ ;
+威服 > ifuku\ ;
+除霊 > jorei\ ;
+不妊 > funin\ ;
+塩類 > enrui\ ;
+陰門 > inmon\ ;
+旧痾 > kyuua\ ;
+韻文 > inbun\ ;
+縁談 > endan\ ;
+靭皮 > jinpi\ ;
+最古 > saiko\ ;
+繁茂 > hanmo\ ;
+多芸 > tagei\ ;
+除隊 > jotai\ ;
+婚家 > konka\ ;
+不変 > fuhen\ ;
+題字 > daiji\ ;
+三女 > sanjo\ ;
+外苑 > gaien\ ;
+末世 > masse\ ;
+有利 > yuuri\ ;
+下士 > kashi\ ;
+三夏 > sanka\ ;
+牡牛 > oushi\ ;
+万夫 > banpu\ ;
+主務 > shumu\ ;
+版画 > hanga\ ;
+諭示 > yushi\ ;
+電荷 > denka\ ;
+雅言 > gagen\ ;
+不堪 > fukan\ ;
+暗影 > an''ei\ ;
+青磁 > seiji\ ;
+無風 > mufuu\ ;
+面皮 > menpi\ ;
+頭巾 > zukin\ ;
+大義 > taigi\ ;
+無類 > murui\ ;
+美大 > bidai\ ;
+線路 > senro\ ;
+無題 > mudai\ ;
+無頼 > burai\ ;
+試補 > shiho\ ;
+頑愚 > gangu\ ;
+一天 > itten\ ;
+美声 > bisei\ ;
+多能 > tanou\ ;
+下城 > gejou\ ;
+是正 > zesei\ ;
+一変 > ippen\ ;
+罷官 > hikan\ ;
+散華 > sange\ ;
+一士 > isshi\ ;
+下垂 > kasui\ ;
+夏至 > geshi\ ;
+総身 > soumi\ ;
+不在 > fuzai\ ;
+中医 > chuui\ ;
+誤聞 > gobun\ ;
+一報 > ippou\ ;
+上図 > jouzu\ ;
+面画 > menga\ ;
+煙道 > endou\ ;
+女生 > josei\ ;
+無電 > muden\ ;
+無難 > bunan\ ;
+外耳 > gaiji\ ;
+非番 > hiban\ ;
+顧問 > komon\ ;
+有価 > yuuka\ ;
+有余 > yuuyo\ ;
+解離 > kairi\ ;
+無限 > mugen\ ;
+解雇 > kaiko\ ;
+不善 > fuzen\ ;
+雪花 > sekka\ ;
+曠古 > kouko\ ;
+解除 > kaijo\ ;
+不問 > fumon\ ;
+一回 > ikkai\ ;
+附随 > fuzui\ ;
+繊維 > sen''i\ ;
+有事 > yuuji\ ;
+下問 > kamon\ ;
+明治 > meiji\ ;
+丙午 > heigo\ ;
+義勇 > giyuu\ ;
+頒布 > hanpu\ ;
+論破 > ronpa\ ;
+罵声 > basei\ ;
+下品 > gehin\ ;
+防音 > bouon\ ;
+月下 > gekka\ ;
+記載 > kisai\ ;
+訓辞 > kunji\ ;
+夢精 > musei\ ;
+下命 > kamei\ ;
+主事 > shuji\ ;
+外縁 > gaien\ ;
+不同 > fudou\ ;
+音感 > onkan\ ;
+時文 > jibun\ ;
+奇知 > kichi\ ;
+総譜 > soufu\ ;
+下向 > gekou\ ;
+下名 > kamei\ ;
+講演 > kouen\ ;
+不参 > fusan\ ;
+順序 > junjo\ ;
+類句 > ruiku\ ;
+上句 > jouku\ ;
+上古 > jouko\ ;
+最下 > saika\ ;
+隠見 > inken\ ;
+義兵 > gihei\ ;
+三叉 > sansa\ ;
+一品 > ippin\ ;
+義兄 > gikei\ ;
+万古 > banko\ ;
+険路 > kenro\ ;
+始期 > shiki\ ;
+下半 > kahan\ ;
+防除 > boujo\ ;
+不勢 > buzei\ ;
+話芸 > wagei\ ;
+不動 > fudou\ ;
+不労 > furou\ ;
+美名 > bimei\ ;
+塩酸 > ensan\ ;
+大穴 > ooana\ ;
+猪口 > choko\ ;
+露盤 > roban\ ;
+万化 > banka\ ;
+威徳 > itoku\ ;
+一反 > ittan\ ;
+一双 > issou\ ;
+斤目 > kinme\ ;
+牧歌 > bokka\ ;
+下剤 > gezai\ ;
+無銭 > musen\ ;
+場面 > bamen\ ;
+言辞 > genji\ ;
+課税 > kazei\ ;
+課程 > katei\ ;
+無銘 > mumei\ ;
+誤算 > gosan\ ;
+不凡 > fubon\ ;
+爪牙 > souga\ ;
+太祖 > taiso\ ;
+暗夜 > an''ya\ ;
+不凍 > futou\ ;
+天祖 > tenso\ ;
+一半 > ippan\ ;
+一千 > issen\ ;
+妖気 > youki\ ;
+好演 > kouen\ ;
+誤答 > gotou\ ;
+文科 > bunka\ ;
+護憲 > goken\ ;
+多端 > tatan\ ;
+与党 > yotou\ ;
+不全 > fuzen\ ;
+詠草 > eisou\ ;
+不党 > futou\ ;
+雄花 > obana\ ;
+既済 > kisai\ ;
+壮美 > soubi\ ;
+墓誌 > boshi\ ;
+多種 > tashu\ ;
+綺談 > kidan\ ;
+無配 > muhai\ ;
+犯意 > han''i\ ;
+下僧 > gesou\ ;
+義人 > gijin\ ;
+一切 > issai\ ;
+一分 > ippun\ ;
+一刀 > ittou\ ;
+奇瑞 > kizui\ ;
+論理 > ronri\ ;
+大破 > taiha\ ;
+不偏 > fuhen\ ;
+雅致 > gachi\ ;
+不倫 > furin\ ;
+話者 > washa\ ;
+署員 > shoin\ ;
+講武 > koubu\ ;
+日波 > nippo\ ;
+世代 > sedai\ ;
+一再 > issai\ ;
+世人 > sejin\ ;
+故老 > korou\ ;
+猿人 > enjin\ ;
+星斗 > seito\ ;
+上値 > uwane\ ;
+一党 > ittou\ ;
+無道 > mudou\ ;
+不便 > fuben\ ;
+討議 > tougi\ ;
+増補 > zouho\ ;
+不例 > furei\ ;
+織目 > orime\ ;
+継起 > keiki\ ;
+訓話 > kunwa\ ;
+無辺 > muhen\ ;
+世上 > sejou\ ;
+与件 > yoken\ ;
+下体 > katai\ ;
+類似 > ruiji\ ;
+隠蔽 > inpei\ ;
+羅典 > raten\ ;
+陰謀 > inbou\ ;
+訓詁 > kunko\ ;
+三佐 > sansa\ ;
+三位 > sanmi\ ;
+娑婆 > shaba\ ;
+不仁 > fujin\ ;
+丈余 > jouyo\ ;
+明暗 > meian\ ;
+妓楼 > girou\ ;
+文目 > ayame\ ;
+好気 > kouki\ ;
+猶予 > yuuyo\ ;
+変移 > hen''i\ ;
+附近 > fukin\ ;
+下人 > genin\ ;
+暴利 > bouri\ ;
+暗喩 > an''yu\ ;
+塑造 > sozou\ ;
+婚儀 > kongi\ ;
+下乗 > gejou\ ;
+擬製 > gisei\ ;
+紙魚 > shimi\ ;
+万事 > banji\ ;
+擬装 > gisou\ ;
+一体 > ittai\ ;
+一位 > ichii\ ;
+諸派 > shoha\ ;
+上下 > jouge\ ;
+夜盗 > yatou\ ;
+三世 > sanze\ ;
+電磁 > denji\ ;
+晴夜 > seiya\ ;
+婦人 > fujin\ ;
+頑固 > ganko\ ;
+時弊 > jihei\ ;
+一件 > ikken\ ;
+美人 > bijin\ ;
+一介 > ikkai\ ;
+罷免 > himen\ ;
+大瓶 > oobin\ ;
+言語 > gengo\ ;
+好機 > kouki\ ;
+故紙 > koshi\ ;
+夷狄 > iteki\ ;
+暗君 > ankun\ ;
+外皮 > gaihi\ ;
+暗合 > angou\ ;
+暗号 > angou\ ;
+護岸 > gogan\ ;
+一世 > issei\ ;
+物故 > bukko\ ;
+天理 > tenri\ ;
+夏眠 > kamin\ ;
+素養 > soyou\ ;
+姐御 > anego\ ;
+夜番 > yoban\ ;
+露点 > roten\ ;
+晩夏 > banka\ ;
+音大 > ondai\ ;
+音声 > onsei\ ;
+文理 > bunri\ ;
+多用 > tayou\ ;
+多産 > tasan\ ;
+大王 > daiou\ ;
+罵倒 > batou\ ;
+素顔 > sugao\ ;
+改組 > kaiso\ ;
+紫雲 > shiun\ ;
+編者 > henja\ ;
+女権 > joken\ ;
+誤用 > goyou\ ;
+姉御 > anego\ ;
+外界 > gekai\ ;
+擁護 > yougo\ ;
+天狗 > tengu\ ;
+父権 > fuken\ ;
+奥歯 > okuba\ ;
+早期 > souki\ ;
+素面 > sumen\ ;
+議定 > gitei\ ;
+天父 > tenpu\ ;
+需用 > juyou\ ;
+縫目 > nuime\ ;
+無謀 > mubou\ ;
+旅次 > ryoji\ ;
+日本 > nihon\ ;
+版木 > hangi\ ;
+靈氣 > reiki\ ;
+無論 > muron\ ;
+非業 > higou\ ;
+填補 > tenpo\ ;
+難破 > nanpa\ ;
+旦暮 > tanbo\ ;
+変異 > hen''i\ ;
+既望 > kibou\ ;
+陛衛 > heiei\ ;
+糸魚 > itoyo\ ;
+雨着 > amagi\ ;
+威圧 > iatsu\ ;
+好期 > kouki\ ;
+姦婦 > kanpu\ ;
+解語 > kaigo\ ;
+整理 > seiri\ ;
+無言 > mugon\ ;
+如是 > nyoze\ ;
+爾来 > jirai\ ;
+片時 > henji\ ;
+綿花 > menka\ ;
+陰蔽 > inpei\ ;
+天為 > ten''i\ ;
+威嚇 > ikaku\ ;
+無視 > mushi\ ;
+数理 > suuri\ ;
+経過 > keika\ ;
+熱砂 > nessa\ ;
+星座 > seiza\ ;
+天火 > tenpi\ ;
+埠頭 > futou\ ;
+猊下 > geika\ ;
+附言 > fugen\ ;
+大火 > taika\ ;
+姦夫 > kanpu\ ;
+順化 > junka\ ;
+防護 > bougo\ ;
+非望 > hibou\ ;
+頭上 > zujou\ ;
+議士 > gishi\ ;
+時好 > jikou\ ;
+青梅 > aoume\ ;
+塗装 > tosou\ ;
+詩碑 > shihi\ ;
+故知 > kochi\ ;
+隠線 > insen\ ;
+契機 > keiki\ ;
+視野 > shiya\ ;
+議場 > gijou\ ;
+摸造 > mozou\ ;
+陰茎 > inkei\ ;
+斧正 > fusei\ ;
+青果 > seika\ ;
+燠火 > okibi\ ;
+音名 > onmei\ ;
+明度 > meido\ ;
+妥当 > datou\ ;
+時報 > jihou\ ;
+経路 > keiro\ ;
+斯様 > kayou\ ;
+塩蔵 > enzou\ ;
+映射 > eisha\ ;
+頒価 > hanka\ ;
+諺文 > onmon\ ;
+墨絵 > sumie\ ;
+細部 > saibu\ ;
+練磨 > renma\ ;
+除草 > josou\ ;
+譏嫌 > kigen\ ;
+奥旨 > oushi\ ;
+基金 > kikin\ ;
+経費 > keihi\ ;
+記者 > kisha\ ;
+謝恩 > shaon\ ;
+昆布 > konbu\ ;
+雲煙 > un''en\ ;
+天河 > tenga\ ;
+諭旨 > yushi\ ;
+燐火 > rinka\ ;
+好打 > kouda\ ;
+既成 > kisei\ ;
+防衛 > bouei\ ;
+大河 > taiga\ ;
+雷火 > raika\ ;
+緇素 > shiso\ ;
+網羅 > moura\ ;
+天気 > tenki\ ;
+順位 > jun''i\ ;
+訓義 > kungi\ ;
+昨夜 > yuube\ ;
+大気 > taiki\ ;
+無蓋 > mugai\ ;
+語源 > gogen\ ;
+覇道 > hadou\ ;
+普偏 > fuhen\ ;
+敢為 > kan''i\ ;
+陰翳 > in''ei\ ;
+旗手 > kishu\ ;
+西部 > seibu\ ;
+雇用 > koyou\ ;
+音像 > onzou\ ;
+妻女 > saijo\ ;
+操舵 > souda\ ;
+大歌 > oouta\ ;
+講座 > kouza\ ;
+文殊 > monju\ ;
+星夜 > seiya\ ;
+無菌 > mukin\ ;
+文武 > bunbu\ ;
+非才 > hisai\ ;
+奇書 > kisho\ ;
+夫権 > fuken\ ;
+天機 > tenki\ ;
+霊気 > reiki\ ;
+明媚 > meibi\ ;
+無茶 > mucha\ ;
+音便 > onbin\ ;
+牢屋 > rouya\ ;
+奇智 > kichi\ ;
+多毛 > tamou\ ;
+威信 > ishin\ ;
+語法 > gohou\ ;
+大樹 > taiju\ ;
+外気 > gaiki\ ;
+無芸 > mugei\ ;
+大様 > ooyou\ ;
+奥手 > okute\ ;
+綱紀 > kouki\ ;
+製麻 > seima\ ;
+総社 > souja\ ;
+電波 > denpa\ ;
+時半 > jihan\ ;
+警句 > keiku\ ;
+非情 > hijou\ ;
+請暇 > seika\ ;
+時化 > shike\ ;
+女性 > josei\ ;
+雨滴 > uteki\ ;
+奇数 > kisuu\ ;
+雄猫 > oneko\ ;
+時勢 > jisei\ ;
+斧斤 > fukin\ ;
+雲海 > unkai\ ;
+雑煮 > zouni\ ;
+時効 > jikou\ ;
+星図 > seizu\ ;
+父性 > fusei\ ;
+要路 > youro\ ;
+女御 > nyogo\ ;
+電気 > denki\ ;
+斡旋 > assen\ ;
+雲泥 > undei\ ;
+警務 > keimu\ ;
+時制 > jisei\ ;
+雄牛 > oushi\ ;
+時分 > jibun\ ;
+無能 > munou\ ;
+多様 > tayou\ ;
+犬儒 > kenju\ ;
+火難 > kanan\ ;
+数次 > suuji\ ;
+妖婦 > youfu\ ;
+敵機 > tekki\ ;
+雲水 > unsui\ ;
+妖婆 > youba\ ;
+旗幟 > kishi\ ;
+青息 > aoiki\ ;
+閑雅 > kanga\ ;
+大枝 > ooeda\ ;
+売淫 > baiin\ ;
+霧散 > musan\ ;
+女帝 > jotei\ ;
+雨注 > uchuu\ ;
+放火 > houka\ ;
+奉持 > houji\ ;
+女工 > jokou\ ;
+電機 > denki\ ;
+線画 > senga\ ;
+非常 > hijou\ ;
+妖女 > youjo\ ;
+新手 > arate\ ;
+静座 > seiza\ ;
+無罪 > muzai\ ;
+散歩 > sanpo\ ;
+雨氷 > uhyou\ ;
+文書 > monjo\ ;
+開院 > kaiin\ ;
+妊婦 > ninpu\ ;
+時候 > jikou\ ;
+閉院 > heiin\ ;
+既定 > kitei\ ;
+警備 > keibi\ ;
+奇才 > kisai\ ;
+奇手 > kishu\ ;
+天日 > tenpi\ ;
+大映 > daiei\ ;
+夜来 > yarai\ ;
+好宜 > kougi\ ;
+紛議 > fungi\ ;
+除算 > jozan\ ;
+既存 > kison\ ;
+議会 > gikai\ ;
+離水 > risui\ ;
+訓示 > kunji\ ;
+試演 > shien\ ;
+撫育 > buiku\ ;
+防腐 > boufu\ ;
+語根 > gokon\ ;
+撰者 > senja\ ;
+熱波 > neppa\ ;
+多望 > tabou\ ;
+陶磁 > touji\ ;
+女尊 > joson\ ;
+奇態 > kitai\ ;
+時代 > jidai\ ;
+譲与 > jouyo\ ;
+無線 > musen\ ;
+牢固 > rouko\ ;
+夜景 > yakei\ ;
+摘記 > tekki\ ;
+既婚 > kikon\ ;
+時人 > jijin\ ;
+雄滝 > odaki\ ;
+牙城 > gajou\ ;
+奇想 > kisou\ ;
+士気 > shiki\ ;
+話法 > wahou\ ;
+炉辺 > rohen\ ;
+女子 > joshi\ ;
+煩瑣 > hansa\ ;
+総理 > souri\ ;
+時世 > jisei\ ;
+父子 > fushi\ ;
+無糖 > mutou\ ;
+陽皮 > youhi\ ;
+施工 > sekou\ ;
+大損 > oozon\ ;
+解組 > kaiso\ ;
+奇怪 > kikai\ ;
+諸家 > shoka\ ;
+特化 > tokka\ ;
+露悪 > roaku\ ;
+犀利 > sairi\ ;
+多数 > tasuu\ ;
+大揚 > ooyou\ ;
+無粋 > busui\ ;
+網目 > amime\ ;
+天授 > tenju\ ;
+映写 > eisha\ ;
+夕日 > yuuhi\ ;
+女婿 > josei\ ;
+好奇 > kouki\ ;
+外方 > soppo\ ;
+政治 > seiji\ ;
+粗餐 > sosan\ ;
+粗飯 > sohan\ ;
+閉鎖 > heisa\ ;
+素行 > sokou\ ;
+絹絵 > kinue\ ;
+譜代 > fudai\ ;
+訴状 > sojou\ ;
+奇形 > kikei\ ;
+塩税 > enzei\ ;
+映像 > eizou\ ;
+絵絹 > eginu\ ;
+雑歌 > zouka\ ;
+隠然 > inzen\ ;
+奇弁 > kiben\ ;
+語数 > gosuu\ ;
+既報 > kihou\ ;
+陽画 > youga\ ;
+火酒 > kashu\ ;
+紫蘇 > shiso\ ;
+製靴 > seika\ ;
+零時 > reiji\ ;
+映倫 > eirin\ ;
+詩歌 > shika\ ;
+精鋭 > seiei\ ;
+女声 > josei\ ;
+放歌 > houka\ ;
+附箋 > fusen\ ;
+系譜 > keifu\ ;
+雲景 > unkei\ ;
+誉望 > yobou\ ;
+版図 > hanto\ ;
+露店 > roten\ ;
+奇巌 > kigan\ ;
+姉上 > aneue\ ;
+斜影 > shaei\ ;
+無稽 > mukei\ ;
+襲衣 > shuui\ ;
+間遠 > madoo\ ;
+露帝 > rotei\ ;
+雄武 > yuubu\ ;
+無税 > muzei\ ;
+天意 > ten''i\ ;
+詠歎 > eitan\ ;
+静夜 > seiya\ ;
+講和 > kouwa\ ;
+大愚 > taigu\ ;
+無私 > mushi\ ;
+煉瓦 > renga\ ;
+雲散 > unsan\ ;
+離村 > rison\ ;
+夜戦 > yasen\ ;
+紀要 > kiyou\ ;
+煤煙 > baien\ ;
+絵筆 > efude\ ;
+多才 > tasai\ ;
+文意 > bun''i\ ;
+襤褸 > ranru\ ;
+大悟 > daigo\ ;
+特価 > tokka\ ;
+奇岩 > kigan\ ;
+無礼 > burei\ ;
+繻子 > shusu\ ;
+開運 > kaiun\ ;
+大恩 > daion\ ;
+該案 > gaian\ ;
+夢想 > musou\ ;
+襦袢 > juban\ ;
+難易 > nan''i\ ;
+旨味 > umami\ ;
+話柄 > wahei\ ;
+奉安 > houan\ ;
+堕胎 > datai\ ;
+紀行 > kikou\ ;
+放棄 > houki\ ;
+多感 > takan\ ;
+播種 > hashu\ ;
+課役 > kaeki\ ;
+院生 > insei\ ;
+補題 > hodai\ ;
+多情 > tajou\ ;
+無知 > muchi\ ;
+離散 > risan\ ;
+試案 > shian\ ;
+天府 > tenpu\ ;
+多恨 > takon\ ;
+大度 > taido\ ;
+物価 > bukka\ ;
+語感 > gokan\ ;
+敵意 > tekii\ ;
+好古 > kouko\ ;
+文庫 > bunko\ ;
+多忙 > tabou\ ;
+見舞 > mimai\ ;
+煖炉 > danro\ ;
+堕罪 > dazai\ ;
+塩田 > enden\ ;
+故智 > kochi\ ;
+無益 > mueki\ ;
+陽炎 > youen\ ;
+大差 > taisa\ ;
+繊度 > sendo\ ;
+大工 > daiku\ ;
+諷喩 > fuuyu\ ;
+多彩 > tasai\ ;
+閉路 > heiro\ ;
+多形 > takei\ ;
+敬慕 > keibo\ ;
+堆肥 > taihi\ ;
+日加 > nikka\ ;
+援軍 > engun\ ;
+粗鋼 > sokou\ ;
+敬愛 > keiai\ ;
+多弁 > taben\ ;
+声援 > seien\ ;
+熨斗 > noshi\ ;
+非命 > himei\ ;
+謀叛 > muhon\ ;
+女史 > joshi\ ;
+謀反 > muhon\ ;
+粗銅 > sodou\ ;
+褒辞 > houji\ ;
+摩耗 > mamou\ ;
+粗鉱 > sokou\ ;
+父君 > fukun\ ;
+放映 > houei\ ;
+外延 > gaien\ ;
+多幸 > takou\ ;
+多年 > tanen\ ;
+紅蓮 > guren\ ;
+雁木 > gangi\ ;
+奇声 > kisei\ ;
+語形 > gokei\ ;
+奄奄 > en''en\ ;
+裏面 > rimen\ ;
+既刊 > kikan\ ;
+方図 > houzu\ ;
+雨戸 > amado\ ;
+露天 > roten\ ;
+補間 > hokan\ ;
+語弊 > gohei\ ;
+牢乎 > rouko\ ;
+無用 > muyou\ ;
+無産 > musan\ ;
+牡丹 > botan\ ;
+大尾 > taibi\ ;
+天寿 > tenju\ ;
+語幹 > gokan\ ;
+粗酒 > soshu\ ;
+控除 > koujo\ ;
+売手 > urite\ ;
+増派 > zouha\ ;
+誘引 > yuuin\ ;
+大家 > taike\ ;
+雅文 > gabun\ ;
+覇者 > hasha\ ;
+斉家 > seika\ ;
+露場 > rojou\ ;
+大安 > daian\ ;
+数度 > suudo\ ;
+大字 > ooaza\ ;
+閑話 > kanwa\ ;
+地頭 > jitou\ ;
+陸湯 > okayu\ ;
+断固 > danko\ ;
+雲影 > un''ei\ ;
+文字 > monji\ ;
+燕巣 > ensou\ ;
+奥印 > okuin\ ;
+夫婦 > meoto\ ;
+多層 > tasou\ ;
+訴権 > soken\ ;
+零度 > reido\ ;
+点者 > tenja\ ;
+絵画 > kaiga\ ;
+隠棲 > insei\ ;
+要義 > yougi\ ;
+非凡 > hibon\ ;
+訪欧 > houou\ ;
+地面 > jimen\ ;
+好個 > kouko\ ;
+女優 > joyuu\ ;
+天威 > ten''i\ ;
+夫妻 > fusai\ ;
+誤射 > gosha\ ;
+父兄 > fukei\ ;
+地雷 > jirai\ ;
+記法 > kihou\ ;
+煖気 > danki\ ;
+隠栖 > insei\ ;
+多孔 > takou\ ;
+外宮 > gekuu\ ;
+煙死 > enshi\ ;
+太夫 > tayuu\ ;
+陽気 > youki\ ;
+基線 > kisen\ ;
+大奥 > oooku\ ;
+排除 > haijo\ ;
+外字 > gaiji\ ;
+散布 > sanpu\ ;
+奇問 > kimon\ ;
+如上 > jojou\ ;
+好事 > kouzu\ ;
+大声 > oogoe\ ;
+課外 > kagai\ ;
+夷国 > ikoku\ ;
+支援 > shien\ ;
+擬毛 > gimou\ ;
+素絹 > soken\ ;
+契印 > keiin\ ;
+難度 > nando\ ;
+規範 > kihan\ ;
+擬死 > gishi\ ;
+数字 > suuji\ ;
+多妻 > tasai\ ;
+斎垣 > igaki\ ;
+要素 > youso\ ;
+旗亭 > kitei\ ;
+支持 > shiji\ ;
+雅懐 > gakai\ ;
+提起 > teiki\ ;
+雲居 > kumoi\ ;
+露命 > romei\ ;
+無灯 > mutou\ ;
+陰毛 > inmou\ ;
+変字 > henji\ ;
+西紀 > seiki\ ;
+織地 > oriji\ ;
+霊夢 > reimu\ ;
+露呈 > rotei\ ;
+多大 > tadai\ ;
+掃除 > souji\ ;
+塗炭 > totan\ ;
+捕鯨 > hogei\ ;
+非人 > hinin\ ;
+多売 > tabai\ ;
+露台 > rodai\ ;
+繁多 > hanta\ ;
+除法 > johou\ ;
+焜炉 > konro\ ;
+方円 > houen\ ;
+諸事 > shoji\ ;
+改悟 > kaigo\ ;
+継泳 > keiei\ ;
+奉加 > houga\ ;
+規程 > kitei\ ;
+離島 > ritou\ ;
+奇効 > kikou\ ;
+詭弁 > kiben\ ;
+隕星 > insei\ ;
+大器 > taiki\ ;
+離岸 > rigan\ ;
+炭素 > tanso\ ;
+誤報 > gohou\ ;
+外場 > gaiba\ ;
+数奇 > suuki\ ;
+離山 > rizan\ ;
+大嘘 > oouso\ ;
+糖菓 > touka\ ;
+数多 > suuta\ ;
+提議 > teigi\ ;
+随時 > zuiji\ ;
+経由 > keiyu\ ;
+火葬 > kasou\ ;
+霊園 > reien\ ;
+政府 > seifu\ ;
+奇兵 > kihei\ ;
+阿漕 > akogi\ ;
+防炎 > bouen\ ;
+斗南 > tonan\ ;
+売子 > uriko\ ;
+電場 > denba\ ;
+外因 > gaiin\ ;
+防火 > bouka\ ;
+提訴 > teiso\ ;
+露光 > rokou\ ;
+夫君 > fukun\ ;
+複衣 > fukui\ ;
+経理 > keiri\ ;
+大呼 > taiko\ ;
+大味 > ooaji\ ;
+施主 > seshu\ ;
+雲壌 > unjou\ ;
+奇偶 > kiguu\ ;
+太古 > taiko\ ;
+無法 > muhou\ ;
+故山 > kozan\ ;
+濃霧 > noumu\ ;
+離婚 > rikon\ ;
+大台 > oodai\ ;
+在野 > zaiya\ ;
+点示 > tenji\ ;
+教委 > kyoui\ ;
+誇大 > kodai\ ;
+火色 > hiiro\ ;
+然様 > sayou\ ;
+衣魚 > shimi\ ;
+誘因 > yuuin\ ;
+粗製 > sosei\ ;
+文句 > monku\ ;
+無水 > musui\ ;
+烽火 > houka\ ;
+精華 > seika\ ;
+奇体 > kitai\ ;
+無毛 > mumou\ ;
+繭価 > kenka\ ;
+電器 > denki\ ;
+図面 > zumen\ ;
+緩徐 > kanjo\ ;
+放屁 > houhi\ ;
+売女 > baita\ ;
+天助 > tenjo\ ;
+米貨 > beika\ ;
+固陋 > korou\ ;
+無残 > muzan\ ;
+開花 > kaika\ ;
+無死 > mushi\ ;
+文化 > bunka\ ;
+奇人 > kijin\ ;
+断乎 > danko\ ;
+増援 > zouen\ ;
+夜叉 > yasha\ ;
+基盤 > kiban\ ;
+太刀 > tachi\ ;
+陰晴 > insei\ ;
+士女 > shijo\ ;
+大判 > ooban\ ;
+素直 > sunao\ ;
+親爺 > oyaji\ ;
+親父 > oyaji\ ;
+課制 > kasei\ ;
+需品 > juhin\ ;
+補講 > hokou\ ;
+難場 > nanba\ ;
+維新 > ishin\ ;
+売場 > uriba\ ;
+夷俗 > izoku\ ;
+回顧 > kaiko\ ;
+夜勤 > yakin\ ;
+大円 > daien\ ;
+計時 > keiji\ ;
+塩梅 > anbai\ ;
+陰文 > inbun\ ;
+院本 > inpon\ ;
+多勢 > tazei\ ;
+隔意 > kakui\ ;
+四顧 > shiko\ ;
+間者 > kanja\ ;
+大儒 > daiju\ ;
+語原 > gogen\ ;
+大儀 > taigi\ ;
+夜前 > yazen\ ;
+補訂 > hotei\ ;
+米語 > beigo\ ;
+阻止 > soshi\ ;
+外務 > gaimu\ ;
+雑多 > zatta\ ;
+夜分 > yabun\ ;
+敗因 > haiin\ ;
+米話 > beiwa\ ;
+坐視 > zashi\ ;
+斉備 > seibi\ ;
+多分 > tabun\ ;
+墓所 > bosho\ ;
+語勢 > gosei\ ;
+誤判 > gohan\ ;
+採譜 > saifu\ ;
+壇家 > danka\ ;
+壮図 > souto\ ;
+図鑑 > zukan\ ;
+夜光 > yakou\ ;
+点画 > tenga\ ;
+除数 > josuu\ ;
+電化 > denka\ ;
+誤写 > gosha\ ;
+控訴 > kouso\ ;
+多元 > tagen\ ;
+天位 > ten''i\ ;
+雲台 > undai\ ;
+西瓜 > suika\ ;
+認否 > ninpi\ ;
+無根 > mukon\ ;
+変化 > henge\ ;
+院政 > insei\ ;
+大佐 > taisa\ ;
+認可 > ninka\ ;
+夫人 > fujin\ ;
+火線 > kasen\ ;
+網戸 > amido\ ;
+精義 > seigi\ ;
+誰何 > suika\ ;
+記憶 > kioku\ ;
+製菓 > seika\ ;
+大事 > daiji\ ;
+濫費 > ranpi\ ;
+天下 > tenka\ ;
+文事 > bunji\ ;
+擬態 > gitai\ ;
+隠居 > inkyo\ ;
+整備 > seibi\ ;
+紫煙 > shien\ ;
+敬具 > keigu\ ;
+粗茶 > socha\ ;
+夜会 > yakai\ ;
+無智 > muchi\ ;
+隣家 > rinka\ ;
+純理 > junri\ ;
+離合 > rigou\ ;
+難句 > nanku\ ;
+糊精 > kosei\ ;
+緞子 > donsu\ ;
+離反 > rihan\ ;
+素片 > sohen\ ;
+煙弾 > endan\ ;
+誤伝 > goden\ ;
+雪加 > sekka\ ;
+糸目 > itome\ ;
+絵柄 > egara\ ;
+記念 > kinen\ ;
+褒美 > houbi\ ;
+雄図 > yuuto\ ;
+災禍 > saika\ ;
+無断 > mudan\ ;
+烈火 > rekka\ ;
+数個 > suuko\ ;
+陰惨 > insan\ ;
+無数 > musuu\ ;
+絵札 > efuda\ ;
+外事 > gaiji\ ;
+数価 > suuka\ ;
+綿布 > menpu\ ;
+蠧魚 > shimi\ ;
+基点 > kiten\ ;
+陰性 > insei\ ;
+電位 > den''i\ ;
+詠嘆 > eitan\ ;
+精粗 > seiso\ ;
+雨具 > amagu\ ;
+変位 > hen''i\ ;
+陰影 > in''ei\ ;
+規準 > kijun\ ;
+総嫁 > souka\ ;
+点火 > tenka\ ;
+離党 > ritou\ ;
+掩蔽 > enpei\ ;
+変事 > henji\ ;
+詩句 > shiku\ ;
+難儀 > nangi\ ;
+絃歌 > genka\ ;
+試合 > shiai\ ;
+隠士 > inshi\ ;
+掩蓋 > engai\ ;
+墳墓 > funbo\ ;
+縁台 > endai\ ;
+雲井 > kumoi\ ;
+衰運 > suiun\ ;
+基準 > kijun\ ;
+零下 > reika\ ;
+雅号 > gagou\ ;
+基源 > kigen\ ;
+詠吟 > eigin\ ;
+土製 > dosei\ ;
+詠史 > eishi\ ;
+煙害 > engai\ ;
+政務 > seimu\ ;
+場末 > basue\ ;
+回避 > kaihi\ ;
+雲上 > unjou\ ;
+改印 > kaiin\ ;
+綾子 > rinzu\ ;
+無才 > musai\ ;
+炬火 > kyoka\ ;
+開祖 > kaiso\ ;
+火砲 > kahou\ ;
+開示 > kaiji\ ;
+売価 > baika\ ;
+米英 > beiei\ ;
+煩多 > hanta\ ;
+声価 > seika\ ;
+隠坊 > onbou\ ;
+綸子 > rinzu\ ;
+隻句 > sekku\ ;
+無慮 > muryo\ ;
+雪下 > sekka\ ;
+堀江 > horie\ ;
+離任 > rinin\ ;
+結果 > kekka\ ;
+雨中 > uchuu\ ;
+衰躯 > suiku\ ;
+紅炎 > kouen\ ;
+綴字 > teiji\ ;
+難事 > nanji\ ;
+地蔵 > jizou\ ;
+無想 > musou\ ;
+無惨 > muzan\ ;
+累次 > ruiji\ ;
+無情 > mujou\ ;
+緩和 > kanwa\ ;
+規正 > kisei\ ;
+詐取 > sashu\ ;
+無恥 > muchi\ ;
+装荷 > souka\ ;
+無性 > musei\ ;
+雅兄 > gakei\ ;
+粗糖 > sotou\ ;
+隠喩 > in''yu\ ;
+無念 > munen\ ;
+回路 > kairo\ ;
+雇傭 > koyou\ ;
+親木 > oyagi\ ;
+雑作 > zousa\ ;
+無形 > mukei\ ;
+限度 > gendo\ ;
+煙塵 > enjin\ ;
+塁打 > ruida\ ;
+故人 > kojin\ ;
+土蔵 > dozou\ ;
+西武 > seibu\ ;
+炎炎 > en''en\ ;
+見様 > miyou\ ;
+故主 > koshu\ ;
+西欧 > seiou\ ;
+覇権 > haken\ ;
+院宣 > inzen\ ;
+粗笨 > sohon\ ;
+紡機 > bouki\ ;
+図解 > zukai\ ;
+在荷 > zaika\ ;
+闘気 > touki\ ;
+地色 > jiiro\ ;
+無帽 > mubou\ ;
+無常 > mujou\ ;
+土葬 > dosou\ ;
+政事 > seiji\ ;
+措置 > sochi\ ;
+墓地 > bochi\ ;
+総員 > souin\ ;
+随喜 > zuiki\ ;
+在英 > zaiei\ ;
+糜爛 > biran\ ;
+総和 > souwa\ ;
+雅人 > gajin\ ;
+場所 > basho\ ;
+街路 > gairo\ ;
+附帯 > futai\ ;
+塗工 > tokou\ ;
+回議 > kaigi\ ;
+随員 > zuiin\ ;
+堅果 > kenka\ ;
+許否 > kyohi\ ;
+拗音 > youon\ ;
+許可 > kyoka\ ;
+見栄 > mibae\ ;
+絹布 > kenpu\ ;
+隊員 > taiin\ ;
+陶土 > toudo\ ;
+提示 > teiji\ ;
+按配 > anbai\ ;
+無尽 > mujin\ ;
+除外 > jogai\ ;
+増員 > zouin\ ;
+絵巻 > emaki\ ;
+行路 > kouro\ ;
+挿話 > souwa\ ;
+見本 > mihon\ ;
+院外 > ingai\ ;
+総務 > soumu\ ;
+闊歩 > kappo\ ;
+噪音 > souon\ ;
+基板 > kiban\ ;
+陶器 > touki\ ;
+継夫 > keifu\ ;
+無害 > mugai\ ;
+隠元 > ingen\ ;
+無官 > mukan\ ;
+訃報 > fuhou\ ;
+基本 > kihon\ ;
+粗砥 > arato\ ;
+報恩 > houon\ ;
+隷下 > reika\ ;
+素材 > sozai\ ;
+降嫁 > kouka\ ;
+総出 > soude\ ;
+見映 > mibae\ ;
+綽名 > adana\ ;
+園芸 > engei\ ;
+灯火 > touka\ ;
+解字 > kaiji\ ;
+捕虜 > horyo\ ;
+隣保 > rinpo\ ;
+墓参 > bosan\ ;
+火災 > kasai\ ;
+計器 > keiki\ ;
+組成 > sosei\ ;
+裸眼 > ragan\ ;
+粗相 > sosou\ ;
+拾遺 > shuui\ ;
+絶家 > zekke\ ;
+記名 > kimei\ ;
+衣裳 > ishou\ ;
+増加 > zouka\ ;
+記号 > kigou\ ;
+濾紙 > roshi\ ;
+阻害 > sogai\ ;
+地縁 > chien\ ;
+無始 > mushi\ ;
+囚衣 > shuui\ ;
+衣装 > ishou\ ;
+摩損 > mason\ ;
+基数 > kisuu\ ;
+衛視 > eishi\ ;
+国華 > kokka\ ;
+塔婆 > touba\ ;
+素数 > sosuu\ ;
+坐禅 > zazen\ ;
+墓前 > bozen\ ;
+隠亡 > onbou\ ;
+無声 > musei\ ;
+地紋 > jimon\ ;
+掲示 > keiji\ ;
+演題 > endai\ ;
+納期 > nouki\ ;
+撒布 > sanpu\ ;
+堅持 > kenji\ ;
+擬勢 > gisei\ ;
+国花 > kokka\ ;
+地米 > jimai\ ;
+親御 > oyago\ ;
+点播 > tenpa\ ;
+濃艶 > nouen\ ;
+訴人 > sonin\ ;
+街衢 > gaiku\ ;
+開演 > kaien\ ;
+討匪 > touhi\ ;
+経度 > keido\ ;
+擬制 > gisei\ ;
+紋日 > monbi\ ;
+授精 > jusei\ ;
+除名 > jomei\ ;
+灯油 > touyu\ ;
+除号 > jogou\ ;
+陶冶 > touya\ ;
+困苦 > konku\ ;
+披露 > hirou\ ;
+除去 > jokyo\ ;
+院号 > ingou\ ;
+隊伍 > taigo\ ;
+紅旗 > kouki\ ;
+階下 > kaika\ ;
+投飛 > touhi\ ;
+蟻酸 > gisan\ ;
+素懐 > sokai\ ;
+地租 > chiso\ ;
+細微 > saibi\ ;
+訛伝 > kaden\ ;
+拝辞 > haiji\ ;
+土管 > dokan\ ;
+地祇 > chigi\ ;
+塊土 > kaido\ ;
+裏目 > urame\ ;
+持論 > jiron\ ;
+視度 > shido\ ;
+炎暑 > ensho\ ;
+精油 > seiyu\ ;
+粗煮 > arani\ ;
+闘技 > tougi\ ;
+挿花 > souka\ ;
+擬人 > gijin\ ;
+精気 > seiki\ ;
+視差 > shisa\ ;
+無名 > mumei\ ;
+素性 > sujou\ ;
+親字 > oyaji\ ;
+阻喪 > sosou\ ;
+納戸 > nando\ ;
+無双 > musou\ ;
+塩分 > enbun\ ;
+素志 > soshi\ ;
+細工 > saiku\ ;
+陪侍 > baiji\ ;
+堰堤 > entei\ ;
+無勢 > buzei\ ;
+基底 > kitei\ ;
+掻爬 > souha\ ;
+圧砕 > assai\ ;
+基幹 > kikan\ ;
+揮毫 > kigou\ ;
+無効 > mukou\ ;
+地盤 > jiban\ ;
+囲繞 > inyou\ ;
+拝賀 > haiga\ ;
+火桶 > hioke\ ;
+推理 > suiri\ ;
+粗漏 > sorou\ ;
+扶養 > fuyou\ ;
+捕縄 > hojou\ ;
+絶句 > zekku\ ;
+四股 > shiko\ ;
+簡素 > kanso\ ;
+押送 > ousou\ ;
+土砂 > dosha\ ;
+無冠 > mukan\ ;
+点差 > tensa\ ;
+堡塁 > horui\ ;
+操作 > sousa\ ;
+純度 > jundo\ ;
+言下 > genka\ ;
+規定 > kitei\ ;
+火曜 > kayou\ ;
+滋養 > jiyou\ ;
+換気 > kanki\ ;
+開架 > kaika\ ;
+圧痕 > akkon\ ;
+批難 > hinan\ ;
+製油 > seiyu\ ;
+器財 > kizai\ ;
+閑暇 > kanka\ ;
+火星 > kasei\ ;
+陛下 > heika\ ;
+角力 > sumou\ ;
+精査 > seisa\ ;
+地理 > chiri\ ;
+場味 > baaji\ ;
+算譜 > sanpu\ ;
+烈婦 > reppu\ ;
+塑像 > sozou\ ;
+授産 > jusan\ ;
+無体 > mutai\ ;
+行脚 > angya\ ;
+無住 > mujuu\ ;
+揺曳 > youei\ ;
+素子 > soshi\ ;
+経営 > keiei\ ;
+土用 > doyou\ ;
+無代 > mudai\ ;
+蠑螺 > sazae\ ;
+螺鈿 > raden\ ;
+点字 > tenji\ ;
+無人 > munin\ ;
+土瓶 > dobin\ ;
+堂奥 > douou\ ;
+防具 > bougu\ ;
+降下 > kouka\ ;
+紺地 > konji\ ;
+長柄 > nagae\ ;
+襟度 > kindo\ ;
+無上 > mujou\ ;
+衣糧 > iryou\ ;
+絶佳 > zekka\ ;
+素姓 > sujou\ ;
+防備 > boubi\ ;
+図示 > zushi\ ;
+結句 > kekku\ ;
+城府 > joufu\ ;
+融除 > yuujo\ ;
+扣除 > koujo\ ;
+阿亀 > okame\ ;
+打順 > dajun\ ;
+抱負 > houfu\ ;
+排煙 > haien\ ;
+漢語 > kango\ ;
+摂家 > sekke\ ;
+堅固 > kengo\ ;
+火手 > kashu\ ;
+手順 > tejun\ ;
+打電 > daden\ ;
+答辞 > touji\ ;
+提案 > teian\ ;
+基地 > kichi\ ;
+圧点 > atten\ ;
+開扉 > kaihi\ ;
+補正 > hosei\ ;
+握斧 > akufu\ ;
+披講 > hikou\ ;
+打開 > dakai\ ;
+要図 > youzu\ ;
+西土 > seido\ ;
+要因 > youin\ ;
+競馬 > keiba\ ;
+粗木 > araki\ ;
+漏話 > rouwa\ ;
+採油 > saiyu\ ;
+被災 > hisai\ ;
+場代 > badai\ ;
+粗暴 > sobou\ ;
+地温 > chion\ ;
+措止 > soshi\ ;
+裏毛 > urake\ ;
+門扉 > monpi\ ;
+門戸 > monko\ ;
+糖度 > toudo\ ;
+開悟 > kaigo\ ;
+紙器 > shiki\ ;
+披見 > hiken\ ;
+摸写 > mosha\ ;
+表着 > uwagi\ ;
+炭団 > tadon\ ;
+回目 > kaime\ ;
+抗議 > kougi\ ;
+滅金 > mekki\ ;
+粗放 > sohou\ ;
+要員 > youin\ ;
+打鍵 > daken\ ;
+累加 > ruika\ ;
+蝟集 > ishuu\ ;
+炊婦 > suifu\ ;
+点呼 > tenko\ ;
+排気 > haiki\ ;
+摸倣 > mohou\ ;
+規制 > kisei\ ;
+炎天 > enten\ ;
+因由 > in''yu\ ;
+地歩 > chiho\ ;
+手錠 > tejou\ ;
+濶歩 > kappo\ ;
+地歌 > jiuta\ ;
+門徒 > monto\ ;
+営養 > eiyou\ ;
+炊夫 > suifu\ ;
+挿画 > souga\ ;
+図版 > zuhan\ ;
+精度 > seido\ ;
+援引 > en''in\ ;
+滞貨 > taika\ ;
+要務 > youmu\ ;
+火山 > kazan\ ;
+系図 > keizu\ ;
+圧死 > asshi\ ;
+手金 > tekin\ ;
+土民 > domin\ ;
+点前 > temae\ ;
+探査 > tansa\ ;
+純化 > junka\ ;
+納受 > nouju\ ;
+手配 > tehai\ ;
+拉致 > rachi\ ;
+衛生 > eisei\ ;
+補整 > hosei\ ;
+要具 > yougu\ ;
+補数 > hosuu\ ;
+炭化 > tanka\ ;
+授権 > juken\ ;
+純利 > junri\ ;
+筆記 > hikki\ ;
+細事 > saiji\ ;
+指示 > shiji\ ;
+粗悪 > soaku\ ;
+素体 > sotai\ ;
+演芸 > engei\ ;
+糞土 > fundo\ ;
+長居 > nagai\ ;
+漫罵 > manba\ ;
+紙価 > shika\ ;
+端銭 > hasen\ ;
+嘉言 > kagen\ ;
+粘度 > nendo\ ;
+箪笥 > tansu\ ;
+紀元 > kigen\ ;
+図法 > zuhou\ ;
+潤目 > urume\ ;
+国歌 > kokka\ ;
+開基 > kaiki\ ;
+湖面 > komen\ ;
+揚屋 > ageya\ ;
+土曜 > doyou\ ;
+納付 > noufu\ ;
+裏手 > urate\ ;
+螟蛾 > meiga\ ;
+圧政 > assei\ ;
+開園 > kaien\ ;
+土星 > dosei\ ;
+炎光 > enkou\ ;
+押絵 > oshie\ ;
+湯銭 > yusen\ ;
+閲兵 > eppei\ ;
+補弦 > hogen\ ;
+糸価 > shika\ ;
+行灯 > andon\ ;
+手話 > shuwa\ ;
+圧排 > appai\ ;
+手記 > shuki\ ;
+営造 > eizou\ ;
+地所 > jisho\ ;
+糖化 > touka\ ;
+営農 > einou\ ;
+補巻 > hokan\ ;
+裕度 > yuudo\ ;
+糊口 > kokou\ ;
+技芸 > gigei\ ;
+閹人 > enjin\ ;
+捜査 > sousa\ ;
+手製 > tesei\ ;
+城下 > jouka\ ;
+火勢 > kasei\ ;
+拝眉 > haibi\ ;
+挽歌 > banka\ ;
+授戒 > jukai\ ;
+粗大 > sodai\ ;
+戦費 > senpi\ ;
+固有 > koyuu\ ;
+温顔 > ongan\ ;
+炊事 > suiji\ ;
+炎上 > enjou\ ;
+捻挫 > nenza\ ;
+製塩 > seien\ ;
+火刑 > kakei\ ;
+演算 > enzan\ ;
+温順 > onjun\ ;
+開化 > kaika\ ;
+補導 > hodou\ ;
+因業 > ingou\ ;
+技能 > ginou\ ;
+突飛 > toppi\ ;
+国旗 > kokki\ ;
+図書 > tosho\ ;
+火光 > kakou\ ;
+補完 > hokan\ ;
+簡易 > kan''i\ ;
+衒気 > genki\ ;
+米寿 > beiju\ ;
+投網 > toami\ ;
+製図 > seizu\ ;
+粘土 > nendo\ ;
+損保 > sonpo\ ;
+裏屋 > uraya\ ;
+措定 > sotei\ ;
+扶育 > fuiku\ ;
+閣下 > kakka\ ;
+戦記 > senki\ ;
+手薄 > teusu\ ;
+管理 > kanri\ ;
+在庫 > zaiko\ ;
+捧持 > houji\ ;
+童話 > douwa\ ;
+蝦蛄 > shako\ ;
+援兵 > enpei\ ;
+坑夫 > koufu\ ;
+被弾 > hidan\ ;
+血気 > kekki\ ;
+嘉肴 > kakou\ ;
+器用 > kiyou\ ;
+間代 > madai\ ;
+圧巻 > akkan\ ;
+戒護 > kaigo\ ;
+灯下 > touka\ ;
+漫画 > manga\ ;
+揚句 > ageku\ ;
+喚起 > kanki\ ;
+補填 > hoten\ ;
+衣服 > ifuku\ ;
+粗品 > sohin\ ;
+土工 > dokou\ ;
+清音 > seion\ ;
+因数 > insuu\ ;
+成語 > seigo\ ;
+四日 > yokka\ ;
+手荒 > teara\ ;
+米塩 > beien\ ;
+掩壕 > engou\ ;
+嘆美 > tanbi\ ;
+蝗虫 > batta\ ;
+衣料 > iryou\ ;
+捕手 > hoshu\ ;
+在家 > zaike\ ;
+補回 > hokai\ ;
+衛星 > eisei\ ;
+門下 > monka\ ;
+行李 > kouri\ ;
+噴火 > funka\ ;
+粗利 > arari\ ;
+被害 > higai\ ;
+節気 > sekki\ ;
+裏地 > uraji\ ;
+鍍金 > mekki\ ;
+嘉納 > kanou\ ;
+淫風 > inpuu\ ;
+打者 > dasha\ ;
+地声 > jigoe\ ;
+蜿蜒 > en''en\ ;
+添附 > tenpu\ ;
+固形 > kokei\ ;
+折目 > orime\ ;
+国庫 > kokko\ ;
+濃度 > noudo\ ;
+筆禍 > hikka\ ;
+蜻蛉 > tonbo\ ;
+行方 > yukue\ ;
+衍文 > enbun\ ;
+裸像 > razou\ ;
+四手 > shide\ ;
+図形 > zukei\ ;
+垂下 > suika\ ;
+蜂起 > houki\ ;
+ＰＣ > pīshī\ ;
+打線 > dasen\ ;
+地図 > chizu\ ;
+表意 > hyoui\ ;
+技研 > giken\ ;
+土壌 > dojou\ ;
+手織 > teori\ ;
+裸体 > ratai\ ;
+図工 > zukou\ ;
+衛所 > eisho\ ;
+衰微 > suibi\ ;
+裏名 > urana\ ;
+土塊 > dokai\ ;
+手練 > teren\ ;
+土塁 > dorui\ ;
+土塀 > dobei\ ;
+唐音 > touon\ ;
+因循 > injun\ ;
+簿外 > bogai\ ;
+回忌 > kaiki\ ;
+採否 > saihi\ ;
+技監 > gikan\ ;
+国家 > kokka\ ;
+戎葵 > juuki\ ;
+噴気 > funki\ ;
+空輸 > kuuyu\ ;
+土地 > tochi\ ;
+補充 > hojuu\ ;
+坑儒 > kouju\ ;
+固定 > kotei\ ;
+地唄 > jiuta\ ;
+固守 > koshu\ ;
+挙措 > kyoso\ ;
+打算 > dasan\ ;
+坐像 > zazou\ ;
+土嚢 > donou\ ;
+裁可 > saika\ ;
+地味 > chimi\ ;
+突起 > tokki\ ;
+営舎 > eisha\ ;
+回帰 > kaiki\ ;
+漸次 > zenji\ ;
+喫茶 > kissa\ ;
+空路 > kuuro\ ;
+国威 > kokui\ ;
+潜時 > senji\ ;
+地区 > chiku\ ;
+指揮 > shiki\ ;
+按排 > anbai\ ;
+補任 > honin\ ;
+漫歩 > manpo\ ;
+米価 > beika\ ;
+衆意 > shuui\ ;
+漁火 > gyoka\ ;
+懇話 > konwa\ ;
+空費 > kuuhi\ ;
+蜉蝣 > fuyuu\ ;
+蛮語 > bango\ ;
+装具 > sougu\ ;
+戯絵 > zaree\ ;
+坐乗 > zajou\ ;
+団子 > dango\ ;
+土台 > dodai\ ;
+涼雨 > ryouu\ ;
+装備 > soubi\ ;
+因子 > inshi\ ;
+按手 > anshu\ ;
+坊主 > bouzu\ ;
+衆徒 > shuto\ ;
+漏洩 > rouei\ ;
+圧制 > assei\ ;
+四季 > shiki\ ;
+営繕 > eizen\ ;
+器械 > kikai\ ;
+移駐 > ichuu\ ;
+持戒 > jikai\ ;
+虎魚 > okoze\ ;
+算木 > sangi\ ;
+地価 > chika\ ;
+手相 > tesou\ ;
+器材 > kizai\ ;
+鑑査 > kansa\ ;
+圧倒 > attou\ ;
+海鰻 > anago\ ;
+担架 > tanka\ ;
+鋭鋒 > eihou\ ;
+排他 > haita\ ;
+憂身 > ukimi\ ;
+批点 > hiten\ ;
+土偶 > doguu\ ;
+行宮 > anguu\ ;
+地下 > chika\ ;
+箇条 > kajou\ ;
+土侯 > dokou\ ;
+戦禍 > senka\ ;
+等温 > touon\ ;
+濃化 > nouka\ ;
+哀願 > aigan\ ;
+挿図 > souzu\ ;
+土人 > dojin\ ;
+激化 > gekka\ ;
+愛餐 > aisan\ ;
+咽頭 > intou\ ;
+箇数 > kosuu\ ;
+善美 > zenbi\ ;
+投機 > touki\ ;
+蛇行 > dakou\ ;
+技法 > gihou\ ;
+衡器 > kouki\ ;
+浅黄 > asagi\ ;
+慶賀 > keiga\ ;
+括弧 > kakko\ ;
+等比 > touhi\ ;
+抛棄 > houki\ ;
+街図 > gaizu\ ;
+園丁 > entei\ ;
+拇指 > boshi\ ;
+投棄 > touki\ ;
+打点 > daten\ ;
+海霧 > kaimu\ ;
+漏斗 > routo\ ;
+篆字 > tenji\ ;
+渡船 > tosen\ ;
+渡航 > tokou\ ;
+滞欧 > taiou\ ;
+淫行 > inkou\ ;
+節季 > sekki\ ;
+箇所 > kasho\ ;
+固体 > kotai\ ;
+答案 > touan\ ;
+拘引 > kouin\ ;
+童画 > douga\ ;
+温習 > sarai\ ;
+節婦 > seppu\ ;
+拐引 > kaiin\ ;
+喝破 > kappa\ ;
+行員 > kouin\ ;
+街区 > gaiku\ ;
+黄鯛 > kidai\ ;
+和風 > wafuu\ ;
+螺旋 > rasen\ ;
+稟議 > ringi\ ;
+憂虞 > yuugu\ ;
+手淫 > shuin\ ;
+鋒起 > houki\ ;
+打法 > dahou\ ;
+淫蕩 > intou\ ;
+秘鍵 > hiken\ ;
+扶桑 > fusou\ ;
+虚辞 > kyoji\ ;
+衛兵 > eihei\ ;
+渦線 > kasen\ ;
+窺知 > kichi\ ;
+愚鈍 > gudon\ ;
+行務 > koumu\ ;
+鼠輩 > sohai\ ;
+挙句 > ageku\ ;
+回付 > kaifu\ ;
+範囲 > han''i\ ;
+渦紋 > kamon\ ;
+才気 > saiki\ ;
+海里 > kairi\ ;
+鼠蹊 > sokei\ ;
+戦火 > senka\ ;
+把握 > haaku\ ;
+悲鳴 > himei\ ;
+渡米 > tobei\ ;
+拳固 > genko\ ;
+投打 > touda\ ;
+指呼 > shiko\ ;
+麒麟 > kirin\ ;
+拷器 > gouki\ ;
+器官 > kikan\ ;
+鎖状 > sajou\ ;
+溢水 > issui\ ;
+慈訓 > jikun\ ;
+湖畔 > kohan\ ;
+海運 > kaiun\ ;
+憂苦 > yuuku\ ;
+嗟歎 > satan\ ;
+海辺 > umibe\ ;
+愛車 > aisha\ ;
+把手 > hashu\ ;
+持参 > jisan\ ;
+打棒 > dabou\ ;
+湯煎 > yusen\ ;
+浮遊 > fuyuu\ ;
+漢字 > kanji\ ;
+抒情 > jojou\ ;
+節句 > sekku\ ;
+移調 > ichou\ ;
+按分 > anbun\ ;
+悪魔 > akuma\ ;
+技手 > gishu\ ;
+湯灌 > yukan\ ;
+手桶 > teoke\ ;
+稲荷 > inari\ ;
+源氏 > genji\ ;
+投影 > touei\ ;
+海路 > kairo\ ;
+扶持 > fuchi\ ;
+浦辺 > urabe\ ;
+和金 > wakin\ ;
+麝香 > jakou\ ;
+鈍麻 > donma\ ;
+啓示 > keiji\ ;
+悪馬 > akume\ ;
+手本 > tehon\ ;
+減磨 > genma\ ;
+悲願 > higan\ ;
+突破 > toppa\ ;
+海豚 > iruka\ ;
+懐疑 > kaigi\ ;
+蛇管 > jakan\ ;
+哀詩 > aishi\ ;
+潮位 > choui\ ;
+哀詞 > aishi\ ;
+打数 > dasuu\ ;
+愚論 > guron\ ;
+戦機 > senki\ ;
+所期 > shoki\ ;
+漁家 > gyoka\ ;
+手斧 > teono\ ;
+演奏 > ensou\ ;
+黙過 > mokka\ ;
+拝受 > haiju\ ;
+浪費 > rouhi\ ;
+手数 > tesuu\ ;
+戸板 > toita\ ;
+漢土 > kando\ ;
+演壇 > endan\ ;
+愚計 > gukei\ ;
+湯治 > touji\ ;
+鉛錘 > ensui\ ;
+節供 > sekku\ ;
+立派 > rippa\ ;
+泥鰌 > dojou\ ;
+等差 > tousa\ ;
+管区 > kanku\ ;
+愚見 > guken\ ;
+技師 > gishi\ ;
+惹起 > jakki\ ;
+拒否 > kyohi\ ;
+鉛鉱 > enkou\ ;
+味醂 > mirin\ ;
+命運 > meiun\ ;
+技巧 > gikou\ ;
+技工 > gikou\ ;
+鼻茸 > bijou\ ;
+錬磨 > renma\ ;
+秘計 > hikei\ ;
+私費 > shihi\ ;
+意訳 > iyaku\ ;
+蘇連 > soren\ ;
+哺育 > hoiku\ ;
+派遣 > haken\ ;
+想起 > souki\ ;
+銅貨 > douka\ ;
+悍馬 > kanba\ ;
+戯書 > gisho\ ;
+銘記 > meiki\ ;
+愚行 > gukou\ ;
+空疎 > kuuso\ ;
+浮言 > fugen\ ;
+漁夫 > gyofu\ ;
+拝具 > haigu\ ;
+戸数 > kosuu\ ;
+波高 > hakou\ ;
+戦果 > senka\ ;
+銀貨 > ginka\ ;
+端本 > hahon\ ;
+麻酔 > masui\ ;
+洋間 > youma\ ;
+鉄鎖 > tessa\ ;
+私議 > shigi\ ;
+禁錮 > kinko\ ;
+流転 > ruten\ ;
+漢和 > kanwa\ ;
+手技 > shugi\ ;
+鼻腔 > bikou\ ;
+浴衣 > yokui\ ;
+漁場 > gyoba\ ;
+渦状 > kajou\ ;
+意表 > ihyou\ ;
+戯文 > gibun\ ;
+液肥 > ekihi\ ;
+技官 > gikan\ ;
+私語 > shigo\ ;
+戦時 > senji\ ;
+淫祠 > inshi\ ;
+空理 > kuuri\ ;
+所持 > shoji\ ;
+懐炉 > kairo\ ;
+満期 > manki\ ;
+営林 > eirin\ ;
+湖水 > kosui\ ;
+和讚 > wasan\ ;
+私記 > shiki\ ;
+戦旗 > senki\ ;
+端数 > hasuu\ ;
+嘘字 > usoji\ ;
+成案 > seian\ ;
+祈願 > kigan\ ;
+温点 > onten\ ;
+波頭 > hatou\ ;
+成果 > seika\ ;
+愛蔵 > aizou\ ;
+麦酒 > biiru\ ;
+名馬 > meiba\ ;
+和訓 > wakun\ ;
+戸戸 > kokou\ ;
+和解 > wakai\ ;
+波面 > hamen\ ;
+管下 > kanka\ ;
+手当 > teate\ ;
+悼辞 > touji\ ;
+秘蔵 > hizou\ ;
+稲穂 > inaho\ ;
+鼻緒 > hanao\ ;
+和製 > wasei\ ;
+鋤簾 > joren\ ;
+種種 > shuju\ ;
+游泳 > yuuei\ ;
+和装 > wasou\ ;
+担保 > tanpo\ ;
+和裁 > wasai\ ;
+憂目 > ukime\ ;
+野鶏 > yakei\ ;
+温湯 > ontou\ ;
+同音 > douon\ ;
+憮然 > buzen\ ;
+悪運 > akuun\ ;
+懸架 > kenga\ ;
+患部 > kanbu\ ;
+漁区 > gyoku\ ;
+拉丁 > raten\ ;
+薬鑵 > yakan\ ;
+銘菓 > meika\ ;
+蜜柑 > mikan\ ;
+黒衣 > kokue\ ;
+温泉 > onsen\ ;
+悠遠 > yuuen\ ;
+戦意 > sen''i\ ;
+悟道 > godou\ ;
+味見 > ajimi\ ;
+渡海 > tokai\ ;
+営所 > eisho\ ;
+温水 > onsui\ ;
+鼻端 > bitan\ ;
+渡洋 > toyou\ ;
+愛育 > aiiku\ ;
+滅多 > metta\ ;
+号音 > gouon\ ;
+淫猥 > inwai\ ;
+善果 > zenka\ ;
+情誼 > jougi\ ;
+漁具 > gyogu\ ;
+悪路 > akuro\ ;
+浅蜊 > asari\ ;
+情話 > jouwa\ ;
+種皮 > shuhi\ ;
+愚者 > gusha\ ;
+愚考 > gukou\ ;
+戦後 > sengo\ ;
+鉛製 > ensei\ ;
+禀議 > ringi\ ;
+才媛 > saien\ ;
+扇子 > sensu\ ;
+慰留 > iryuu\ ;
+移籍 > iseki\ ;
+野馬 > nouma\ ;
+端座 > tanza\ ;
+禅話 > zenwa\ ;
+我慢 > gaman\ ;
+喜捨 > kisha\ ;
+古風 > kofuu\ ;
+稲田 > inada\ ;
+受験 > juken\ ;
+空気 > kuuki\ ;
+我情 > gajou\ ;
+才女 > saijo\ ;
+空母 > kuubo\ ;
+唾液 > daeki\ ;
+満座 > manza\ ;
+営庭 > eitei\ ;
+禁裡 > kinri\ ;
+禁裏 > kinri\ ;
+味蕾 > mirai\ ;
+虚空 > kokuu\ ;
+悲観 > hikan\ ;
+淵源 > engen\ ;
+和船 > wasen\ ;
+洋語 > yougo\ ;
+慈眼 > jigen\ ;
+営巣 > eisou\ ;
+社運 > shaun\ ;
+批判 > hihan\ ;
+手垢 > teaka\ ;
+融和 > yuuwa\ ;
+悪計 > akkei\ ;
+批准 > hijun\ ;
+鼓童 > kodou\ ;
+吏道 > rodou\ ;
+投与 > touyo\ ;
+投下 > touka\ ;
+懸想 > kesou\ ;
+受難 > junan\ ;
+戸外 > kogai\ ;
+懺悔 > zange\ ;
+鋳物 > imono\ ;
+才器 > saiki\ ;
+竪子 > jushi\ ;
+符合 > fugou\ ;
+添水 > souzu\ ;
+符号 > fugou\ ;
+技倒 > gitou\ ;
+温暖 > ondan\ ;
+等価 > touka\ ;
+渡来 > torai\ ;
+名辞 > meiji\ ;
+恥部 > chibu\ ;
+童子 > douji\ ;
+懸念 > kenen\ ;
+悪行 > akkou\ ;
+酸鼻 > sanbi\ ;
+淡湖 > tanko\ ;
+黄花 > kouka\ ;
+成就 > jouju\ ;
+租税 > sozei\ ;
+善意 > zen''i\ ;
+嗟嘆 > satan\ ;
+清楚 > seiso\ ;
+鼠盗 > sotou\ ;
+泰語 > taigo\ ;
+愛社 > aisha\ ;
+沿道 > endou\ ;
+喪家 > souka\ ;
+古銭 > kosen\ ;
+社費 > shahi\ ;
+童女 > doujo\ ;
+否認 > hinin\ ;
+溶化 > youka\ ;
+湖底 > kotei\ ;
+淋漓 > rinri\ ;
+所員 > shoin\ ;
+嘉例 > karei\ ;
+清栄 > seiei\ ;
+鼠疫 > soeki\ ;
+善後 > zengo\ ;
+祈請 > kisei\ ;
+法貨 > houka\ ;
+祈誓 > kisei\ ;
+流罪 > ruzai\ ;
+端坐 > tanza\ ;
+嗚咽 > oetsu\ ;
+恩赦 > onsha\ ;
+和紙 > washi\ ;
+手勢 > tezei\ ;
+減摩 > genma\ ;
+台辞 > daiji\ ;
+淘汰 > touta\ ;
+恩賜 > onshi\ ;
+洒落 > share\ ;
+海砂 > kaisa\ ;
+手前 > temae\ ;
+台輪 > daiwa\ ;
+湖岸 > kogan\ ;
+洵美 > junbi\ ;
+古道 > kodou\ ;
+第五 > daigo\ ;
+第二 > daini\ ;
+示談 > jidan\ ;
+野郎 > yarou\ ;
+野選 > yasen\ ;
+法語 > hougo\ ;
+合議 > gougi\ ;
+法話 > houwa\ ;
+汗馬 > kanba\ ;
+懇意 > kon''i\ ;
+懊悩 > ounou\ ;
+打倒 > datou\ ;
+名誉 > meiyo\ ;
+愚痴 > guchi\ ;
+営団 > eidan\ ;
+水鶏 > kuina\ ;
+叉銃 > sajuu\ ;
+温情 > onjou\ ;
+移牒 > ichou\ ;
+立夏 > rikka\ ;
+唐檜 > touhi\ ;
+情義 > jougi\ ;
+錦旗 > kinki\ ;
+愛用 > aiyou\ ;
+法規 > houki\ ;
+懈怠 > getai\ ;
+租界 > sokai\ ;
+愚生 > gusei\ ;
+釈迦 > shaka\ ;
+湯垢 > yuaka\ ;
+恋路 > koiji\ ;
+派米 > habei\ ;
+成因 > seiin\ ;
+厦門 > kamon\ ;
+法被 > happi\ ;
+洋舞 > youbu\ ;
+虎狼 > korou\ ;
+古趾 > koshi\ ;
+藍色 > aiiro\ ;
+端午 > tango\ ;
+虚無 > kyomu\ ;
+手代 > tedai\ ;
+愛玩 > aigan\ ;
+受身 > ukemi\ ;
+惨禍 > sanka\ ;
+渡御 > togyo\ ;
+水魔 > suima\ ;
+野趣 > yashu\ ;
+古賢 > koken\ ;
+戦務 > senmu\ ;
+浮生 > fusei\ ;
+快音 > kaion\ ;
+喧嘩 > kenka\ ;
+稚気 > chiki\ ;
+温帯 > ontai\ ;
+所作 > shosa\ ;
+古豪 > kogou\ ;
+金貨 > kinka\ ;
+愛犬 > aiken\ ;
+海獺 > rakko\ ;
+成員 > seiin\ ;
+準備 > junbi\ ;
+惣社 > souja\ ;
+磯辺 > isobe\ ;
+鉛管 > enkan\ ;
+鼻汁 > bijuu\ ;
+海狸 > kairi\ ;
+惰眠 > damin\ ;
+房事 > bouji\ ;
+叙賜 > joshi\ ;
+成否 > seihi\ ;
+受贈 > juzou\ ;
+悪罵 > akuba\ ;
+成句 > seiku\ ;
+所与 > shoyo\ ;
+患者 > kanja\ ;
+古諺 > kogen\ ;
+可視 > kashi\ ;
+句読 > kutou\ ;
+黄禍 > kouka\ ;
+稲木 > inagi\ ;
+戦備 > senbi\ ;
+口語 > kougo\ ;
+古詩 > koshi\ ;
+戸主 > koshu\ ;
+里謡 > riyou\ ;
+古訓 > kokun\ ;
+空巣 > akisu\ ;
+古言 > kogen\ ;
+悪縁 > akuen\ ;
+温存 > onzon\ ;
+受講 > jukou\ ;
+印面 > inmen\ ;
+汽車 > kisha\ ;
+叡覧 > eiran\ ;
+黄砂 > kousa\ ;
+穎才 > eisai\ ;
+里言 > rigen\ ;
+単騎 > tanki\ ;
+醍醐 > daigo\ ;
+済度 > saido\ ;
+危難 > kinan\ ;
+泳者 > eisha\ ;
+名菓 > meika\ ;
+参賀 > sanga\ ;
+危険 > kiken\ ;
+営倉 > eisou\ ;
+喪具 > sougu\ ;
+必須 > hissu\ ;
+憂懼 > yuuku\ ;
+反語 > hango\ ;
+鼻根 > bikon\ ;
+友誼 > yuugi\ ;
+名花 > meika\ ;
+決起 > kekki\ ;
+麻睡 > masui\ ;
+反訴 > hanso\ ;
+鋭敏 > eibin\ ;
+蘇生 > sosei\ ;
+愛液 > aieki\ ;
+参議 > sangi\ ;
+名舗 > meiho\ ;
+派生 > hasei\ ;
+秘湯 > hitou\ ;
+黄疸 > oudan\ ;
+気風 > kifuu\ ;
+海淵 > kaien\ ;
+穴子 > anago\ ;
+喇叭 > rappa\ ;
+鍼医 > harii\ ;
+怪訝 > kegen\ ;
+薬罐 > yakan\ ;
+薬缶 > yakan\ ;
+思議 > shigi\ ;
+穏当 > ontou\ ;
+野蛮 > yaban\ ;
+印鑑 > inkan\ ;
+怨言 > engen\ ;
+午餐 > gosan\ ;
+微風 > bifuu\ ;
+港図 > kouzu\ ;
+汚辱 > ojoku\ ;
+哀歓 > aikan\ ;
+浮游 > fuyuu\ ;
+薄荷 > hakka\ ;
+銃火 > juuka\ ;
+愚民 > gumin\ ;
+秘法 > hihou\ ;
+呈示 > teiji\ ;
+喪主 > moshu\ ;
+南阿 > nan''a\ ;
+浮浪 > furou\ ;
+黄班 > ouhan\ ;
+渾名 > adana\ ;
+海気 > kaiki\ ;
+御飯 > gohan\ ;
+気随 > kizui\ ;
+名義 > meigi\ ;
+波線 > hasen\ ;
+沙蚕 > gokai\ ;
+同義 > dougi\ ;
+卑陋 > hirou\ ;
+民需 > minju\ ;
+稀書 > kisho\ ;
+虚栄 > kyoei\ ;
+涅槃 > nehan\ ;
+添字 > soeji\ ;
+合羽 > kappa\ ;
+員数 > inzuu\ ;
+浮気 > uwaki\ ;
+波紋 > hamon\ ;
+禅画 > zenga\ ;
+穴場 > anaba\ ;
+碑銘 > himei\ ;
+和漢 > wakan\ ;
+懐古 > kaiko\ ;
+意欲 > iyoku\ ;
+情理 > jouri\ ;
+鋭感 > eikan\ ;
+野菜 > yasai\ ;
+古茶 > kocha\ ;
+神祇 > jingi\ ;
+浄火 > jouka\ ;
+神社 > jinja\ ;
+黄燐 > ourin\ ;
+浅瀬 > asase\ ;
+油脂 > yushi\ ;
+御難 > gonan\ ;
+鉛版 > enban\ ;
+重荷 > juuka\ ;
+蛹化 > youka\ ;
+野草 > yasou\ ;
+御陰 > okage\ ;
+可能 > kanou\ ;
+原語 > gengo\ ;
+蚕座 > sanza\ ;
+水運 > suiun\ ;
+温厚 > onkou\ ;
+湖上 > kojou\ ;
+右翼 > uyoku\ ;
+銀波 > ginpa\ ;
+厚誼 > kougi\ ;
+後顧 > kouko\ ;
+銀河 > ginga\ ;
+慕情 > bojou\ ;
+和洋 > wayou\ ;
+啖呵 > tanka\ ;
+名簿 > meibo\ ;
+医長 > ichou\ ;
+区間 > kukan\ ;
+洋画 > youga\ ;
+淋巴 > rinpa\ ;
+善事 > zenji\ ;
+渦動 > kadou\ ;
+薬禍 > yakka\ ;
+慇懃 > ingin\ ;
+念誦 > nenju\ ;
+愛書 > aisho\ ;
+祈祷 > kitou\ ;
+匕首 > hishu\ ;
+沿線 > ensen\ ;
+金肥 > kinpi\ ;
+古聖 > kosei\ ;
+情焔 > jouen\ ;
+原被 > genpi\ ;
+蕗草 > rosou\ ;
+淫奔 > inpon\ ;
+口耳 > kouji\ ;
+古老 > korou\ ;
+気重 > kiomo\ ;
+南都 > nanto\ ;
+南部 > nanbu\ ;
+鉱油 > kouyu\ ;
+情炎 > jouen\ ;
+淫売 > inbai\ ;
+秘本 > hihon\ ;
+愚昧 > gumai\ ;
+流浪 > rurou\ ;
+情火 > jouka\ ;
+水路 > suiro\ ;
+慈恵 > jikei\ ;
+秘書 > hisho\ ;
+気配 > kehai\ ;
+薬研 > yagen\ ;
+受胎 > jutai\ ;
+微醺 > bikun\ ;
+半里 > hanri\ ;
+法科 > houka\ ;
+油紙 > yushi\ ;
+稲子 > inago\ ;
+気道 > kidou\ ;
+比類 > hirui\ ;
+流民 > rumin\ ;
+千里 > senri\ ;
+秘方 > hihou\ ;
+同祖 > douso\ ;
+態度 > taido\ ;
+鉄火 > tekka\ ;
+河系 > kakei\ ;
+私案 > shian\ ;
+禍源 > kagen\ ;
+破顔 > hagan\ ;
+卑近 > hikin\ ;
+黄河 > kouga\ ;
+御釜 > okama\ ;
+御金 > okane\ ;
+浦曲 > urawa\ ;
+活気 > kakki\ ;
+半途 > hanto\ ;
+程度 > teido\ ;
+重縁 > juuen\ ;
+古紙 > koshi\ ;
+部首 > bushu\ ;
+都電 > toden\ ;
+鼓手 > koshu\ ;
+銃架 > juuka\ ;
+混和 > konwa\ ;
+汽艇 > kitei\ ;
+汽船 > kisen\ ;
+比隣 > hirin\ ;
+愚挙 > gukyo\ ;
+友義 > yuugi\ ;
+古米 > komai\ ;
+哀憫 > aibin\ ;
+減価 > genka\ ;
+哀憐 > airen\ ;
+彩雲 > saiun\ ;
+河童 > kappa\ ;
+淵叢 > ensou\ ;
+部類 > burui\ ;
+哀感 > aikan\ ;
+法皇 > houou\ ;
+哀愍 > aibin\ ;
+蔬菜 > sosai\ ;
+磨耗 > mamou\ ;
+浮揚 > fuyou\ ;
+和本 > wahon\ ;
+液安 > ekian\ ;
+空佐 > kuusa\ ;
+渡世 > tosei\ ;
+受納 > junou\ ;
+唐土 > toudo\ ;
+添加 > tenka\ ;
+哀情 > aijou\ ;
+哀悼 > aitou\ ;
+和書 > washo\ ;
+愛憐 > airen\ ;
+破門 > hamon\ ;
+受精 > jusei\ ;
+悪漢 > akkan\ ;
+卑賤 > hisen\ ;
+憂哭 > ukine\ ;
+卑賎 > hisen\ ;
+受粉 > jufun\ ;
+部面 > bumen\ ;
+鼻孔 > bikou\ ;
+科挙 > kakyo\ ;
+矮鶏 > chabo\ ;
+毫釐 > gouri\ ;
+愛想 > aisou\ ;
+情歌 > jouka\ ;
+黄楊 > tsuge\ ;
+愛情 > aijou\ ;
+鋳型 > igata\ ;
+微賤 > bisen\ ;
+微賎 > bisen\ ;
+後部 > koubu\ ;
+印行 > inkou\ ;
+名画 > meiga\ ;
+鼠巣 > sosou\ ;
+部隊 > butai\ ;
+和文 > wabun\ ;
+汽罐 > kikan\ ;
+汽缶 > kikan\ ;
+意慾 > iyoku\ ;
+単語 > tango\ ;
+薄着 > usugi\ ;
+情機 > jouki\ ;
+波状 > hajou\ ;
+示現 > jigen\ ;
+黄桃 > outou\ ;
+古祠 > koshi\ ;
+薄目 > usume\ ;
+呑気 > nonki\ ;
+徒輩 > tohai\ ;
+法理 > houri\ ;
+里程 > ritei\ ;
+単記 > tanki\ ;
+硬貨 > kouka\ ;
+野禽 > yakin\ ;
+重科 > juuka\ ;
+部門 > bumon\ ;
+待避 > taihi\ ;
+慈姑 > kuwai\ ;
+蛇体 > jatai\ ;
+感度 > kando\ ;
+鼎座 > teiza\ ;
+法王 > houou\ ;
+稽古 > keiko\ ;
+愚弟 > gutei\ ;
+愚弄 > gurou\ ;
+鼻声 > bisei\ ;
+薫煙 > kunen\ ;
+口碑 > kouhi\ ;
+往還 > oukan\ ;
+沃素 > youso\ ;
+合理 > gouri\ ;
+治癒 > chiyu\ ;
+悲歎 > hitan\ ;
+汚臭 > oshuu\ ;
+卑言 > higen\ ;
+加齢 > karei\ ;
+征途 > seito\ ;
+鼠害 > sogai\ ;
+弧高 > kokou\ ;
+鉛板 > enban\ ;
+民話 > minwa\ ;
+比重 > hijuu\ ;
+卑見 > hiken\ ;
+員外 > ingai\ ;
+往返 > ouhen\ ;
+禍根 > kakon\ ;
+虚字 > kyoji\ ;
+添付 > tenpu\ ;
+憑依 > hyoui\ ;
+野砲 > yahou\ ;
+叡知 > eichi\ ;
+稼動 > kadou\ ;
+単衣 > hitoe\ ;
+愉快 > yukai\ ;
+穏健 > onken\ ;
+原義 > gengi\ ;
+波瀾 > haran\ ;
+油田 > yuden\ ;
+弾雨 > dan''u\ ;
+穏便 > onbin\ ;
+波濤 > hatou\ ;
+台甫 > taiho\ ;
+都邑 > toyuu\ ;
+和戦 > wasen\ ;
+可用 > kayou\ ;
+鹹湖 > kanko\ ;
+河畔 > kahan\ ;
+勇飛 > yuuhi\ ;
+半裸 > hanra\ ;
+径路 > keiro\ ;
+御詠 > gyoei\ ;
+重目 > omome\ ;
+半被 > happi\ ;
+私怨 > shien\ ;
+砂防 > sabou\ ;
+微行 > bikou\ ;
+呪文 > jumon\ ;
+泳法 > eihou\ ;
+御覧 > goran\ ;
+稼働 > kadou\ ;
+吐瀉 > tosha\ ;
+淫乱 > inran\ ;
+受益 > jueki\ ;
+神武 > jinmu\ ;
+合点 > gaten\ ;
+愛孫 > aison\ ;
+浅手 > asade\ ;
+愛孃 > aijou\ ;
+蚕具 > sangu\ ;
+銃後 > juugo\ ;
+愛嬢 > aijou\ ;
+原素 > genso\ ;
+蚕児 > sanji\ ;
+慈善 > jizen\ ;
+惰性 > dasei\ ;
+油状 > yujou\ ;
+野生 > yasei\ ;
+波浪 > harou\ ;
+秘宝 > hihou\ ;
+蓮華 > renge\ ;
+愛婿 > aisei\ ;
+忍苦 > ninku\ ;
+銃座 > juuza\ ;
+厳秘 > genpi\ ;
+原簿 > genbo\ ;
+厳科 > genka\ ;
+鋭兵 > eihei\ ;
+銀座 > ginza\ ;
+郡部 > gunbu\ ;
+鼻口 > bikou\ ;
+後記 > kouki\ ;
+愛妻 > aisai\ ;
+愚妻 > gusai\ ;
+慶事 > keiji\ ;
+税吏 > zeiri\ ;
+愛好 > aikou\ ;
+労音 > rouon\ ;
+可燃 > kanen\ ;
+液化 > ekika\ ;
+吝気 > rinki\ ;
+鄙見 > hiken\ ;
+和平 > wahei\ ;
+野獣 > yajuu\ ;
+鳳駕 > houga\ ;
+野猪 > yacho\ ;
+邪険 > jaken\ ;
+徒行 > tokou\ ;
+水肥 > suihi\ ;
+古版 > kohan\ ;
+募金 > bokin\ ;
+後裔 > kouei\ ;
+徐行 > jokou\ ;
+同派 > douha\ ;
+酸素 > sanso\ ;
+往訪 > ouhou\ ;
+野犬 > yaken\ ;
+延髄 > enzui\ ;
+税務 > zeimu\ ;
+悪日 > akubi\ ;
+稚児 > chigo\ ;
+加餐 > kasan\ ;
+加養 > kayou\ ;
+歯音 > shion\ ;
+後衛 > kouei\ ;
+酵素 > kouso\ ;
+郊野 > kouya\ ;
+私家 > shika\ ;
+鼎坐 > teiza\ ;
+忍者 > ninja\ ;
+医薬 > iyaku\ ;
+社歌 > shaka\ ;
+鼻内 > binai\ ;
+御蔭 > okage\ ;
+勢運 > seiun\ ;
+同気 > douki\ ;
+句点 > kuten\ ;
+破談 > hadan\ ;
+和尚 > oshou\ ;
+口炎 > kouen\ ;
+当路 > touro\ ;
+慈兄 > jikei\ ;
+情愛 > jouai\ ;
+正音 > seion\ ;
+名歌 > meika\ ;
+部財 > buzai\ ;
+可溶 > kayou\ ;
+沿海 > enkai\ ;
+華麗 > karei\ ;
+鉄扉 > teppi\ ;
+咽喉 > inkou\ ;
+海図 > kaizu\ ;
+御菜 > okazu\ ;
+印綿 > inmen\ ;
+浮城 > fujou\ ;
+恒温 > kouon\ ;
+古潭 > kotan\ ;
+河港 > kakou\ ;
+河清 > kasei\ ;
+印紙 > inshi\ ;
+気胞 > kihou\ ;
+口演 > kouen\ ;
+鼓吹 > kosui\ ;
+愚問 > gumon\ ;
+水素 > suiso\ ;
+虎口 > kokou\ ;
+御苑 > gyoen\ ;
+蒲薦 > hosen\ ;
+哀号 > aigou\ ;
+悲憤 > hifun\ ;
+哀史 > aishi\ ;
+麻幹 > ogara\ ;
+応答 > outou\ ;
+印籠 > inrou\ ;
+歌風 > kafuu\ ;
+武門 > bumon\ ;
+和姦 > wakan\ ;
+移入 > inyuu\ ;
+悲愴 > hisou\ ;
+残部 > zanbu\ ;
+泰斗 > taito\ ;
+感受 > kanju\ ;
+歌題 > kadai\ ;
+悲惨 > hisan\ ;
+禁忌 > kinki\ ;
+愛吟 > aigin\ ;
+海員 > kaiin\ ;
+避難 > hinan\ ;
+重湯 > omoyu\ ;
+惣嫁 > souka\ ;
+鼓動 > kodou\ ;
+欺騙 > gihen\ ;
+法案 > houan\ ;
+御腹 > onaka\ ;
+和声 > wasei\ ;
+河水 > kasui\ ;
+名案 > meian\ ;
+悲恋 > hiren\ ;
+感化 > kanka\ ;
+武鑑 > bukan\ ;
+遺集 > ishuu\ ;
+句法 > kuhou\ ;
+怪火 > kaika\ ;
+微罪 > bizai\ ;
+原画 > genga\ ;
+南緯 > nan''i\ ;
+古法 > kohou\ ;
+虚偽 > kyogi\ ;
+勲記 > kunki\ ;
+剣鬼 > kenki\ ;
+金波 > kinpa\ ;
+海参 > iriko\ ;
+秘史 > hishi\ ;
+邪道 > jadou\ ;
+稀代 > kidai\ ;
+厳父 > genpu\ ;
+鉱夫 > koufu\ ;
+戸々 > kokou\ ;
+銀地 > ginji\ ;
+社是 > shaze\ ;
+磁界 > jikai\ ;
+海区 > kaiku\ ;
+印税 > inzei\ ;
+口気 > kouki\ ;
+同期 > douki\ ;
+重油 > juuyu\ ;
+銅器 > douki\ ;
+矮躯 > waiku\ ;
+沮止 > soshi\ ;
+油槽 > yusou\ ;
+短躯 > tanku\ ;
+恋歌 > renka\ ;
+科名 > kamei\ ;
+悪心 > oshin\ ;
+銃器 > juuki\ ;
+弘遠 > kouen\ ;
+原理 > genri\ ;
+汗疹 > asemo\ ;
+汗疣 > asemo\ ;
+悪徒 > akuto\ ;
+硼素 > houso\ ;
+受洗 > jusen\ ;
+稀世 > kisei\ ;
+私営 > shiei\ ;
+意匠 > ishou\ ;
+銀器 > ginki\ ;
+水禍 > suika\ ;
+禍害 > kagai\ ;
+快癒 > kaiyu\ ;
+金歯 > kinba\ ;
+同時 > douji\ ;
+短路 > tanro\ ;
+遠音 > toone\ ;
+引退 > intai\ ;
+那辺 > nahen\ ;
+情宜 > jougi\ ;
+愚兄 > gukei\ ;
+悟性 > gosei\ ;
+微細 > bisai\ ;
+動議 > dougi\ ;
+浮動 > fudou\ ;
+勃起 > bokki\ ;
+愚僧 > gusou\ ;
+後胤 > kouin\ ;
+禅家 > zenke\ ;
+黄変 > ouhen\ ;
+加配 > kahai\ ;
+品位 > hin''i\ ;
+往航 > oukou\ ;
+遠雷 > enrai\ ;
+念珠 > nenju\ ;
+悔悟 > kaigo\ ;
+気管 > kikan\ ;
+欧風 > oufuu\ ;
+浄土 > joudo\ ;
+含意 > gan''i\ ;
+情婦 > joufu\ ;
+重機 > juuki\ ;
+悧巧 > rikou\ ;
+気筒 > kitou\ ;
+怒濤 > dotou\ ;
+惹句 > jakku\ ;
+歩道 > hodou\ ;
+磨淬 > masai\ ;
+毛色 > keiro\ ;
+永眠 > eimin\ ;
+強訴 > gouso\ ;
+咄嗟 > tossa\ ;
+私印 > shiin\ ;
+武道 > budou\ ;
+正邪 > seija\ ;
+反比 > hanpi\ ;
+功過 > kouka\ ;
+印相 > inzou\ ;
+化膿 > kanou\ ;
+次類 > jirui\ ;
+反歯 > soppa\ ;
+反歩 > tanbu\ ;
+剪除 > senjo\ ;
+台木 > daigi\ ;
+注意 > chuui\ ;
+反歌 > hanka\ ;
+醸母 > joubo\ ;
+前駆 > zenku\ ;
+武辺 > buhen\ ;
+座高 > zakou\ ;
+情夫 > joufu\ ;
+和名 > wamei\ ;
+愛人 > aijin\ ;
+和合 > wagou\ ;
+励起 > reiki\ ;
+半端 > hanpa\ ;
+薄日 > usubi\ ;
+愚人 > gujin\ ;
+黄土 > koudo\ ;
+応用 > ouyou\ ;
+邦貨 > houka\ ;
+私利 > shiri\ ;
+破船 > hasen\ ;
+否応 > iyaou\ ;
+医籍 > iseki\ ;
+化育 > kaiku\ ;
+秘伝 > hiden\ ;
+母艦 > bokan\ ;
+受検 > juken\ ;
+油断 > yudan\ ;
+睡魔 > suima\ ;
+母船 > bosen\ ;
+礎材 > sozai\ ;
+廃除 > haijo\ ;
+古来 > korai\ ;
+海事 > kaiji\ ;
+永生 > eisei\ ;
+助走 > josou\ ;
+遊離 > yuuri\ ;
+怒涛 > dotou\ ;
+祈念 > kinen\ ;
+歳費 > saihi\ ;
+祖師 > soshi\ ;
+古書 > kosho\ ;
+周囲 > shuui\ ;
+決河 > kekka\ ;
+遷都 > sento\ ;
+汽水 > kisui\ ;
+比肩 > hiken\ ;
+印環 > inkan\ ;
+野末 > nozue\ ;
+野望 > yabou\ ;
+意中 > ichuu\ ;
+悪婦 > akufu\ ;
+呼号 > kogou\ ;
+正路 > seiro\ ;
+鉱区 > kouku\ ;
+悪婆 > akuba\ ;
+鉱化 > kouka\ ;
+波形 > hakei\ ;
+邦語 > hougo\ ;
+叡智 > eichi\ ;
+各戸 > kakko\ ;
+前非 > zenpi\ ;
+汚濁 > odaku\ ;
+母胎 > botai\ ;
+歌道 > kadou\ ;
+碁盤 > goban\ ;
+死語 > shigo\ ;
+可撓 > katou\ ;
+悲壮 > hisou\ ;
+弘誓 > guzei\ ;
+浮世 > ukiyo\ ;
+座頭 > zatou\ ;
+吐息 > toiki\ ;
+浮上 > fujou\ ;
+古方 > kohou\ ;
+浄化 > jouka\ ;
+叡旨 > eishi\ ;
+邪見 > jaken\ ;
+古文 > komon\ ;
+悪女 > akujo\ ;
+化繊 > kasen\ ;
+午砲 > gohou\ ;
+毛織 > keori\ ;
+江湖 > gouko\ ;
+恩愛 > on''ai\ ;
+気相 > kisou\ ;
+悲報 > hihou\ ;
+御社 > onsha\ ;
+悪夢 > akumu\ ;
+北緯 > hokui\ ;
+叙景 > jokei\ ;
+正貨 > seika\ ;
+正負 > seifu\ ;
+禁固 > kinko\ ;
+向後 > kougo\ ;
+硅素 > keiso\ ;
+恩情 > onjou\ ;
+叛旗 > hanki\ ;
+薄手 > usude\ ;
+恩恵 > onkei\ ;
+永牢 > eirou\ ;
+遺蹟 > iseki\ ;
+里数 > risuu\ ;
+午睡 > gosui\ ;
+引見 > inken\ ;
+祖宗 > sosou\ ;
+流刑 > rukei\ ;
+助詞 > joshi\ ;
+銀位 > gin''i\ ;
+叙文 > jobun\ ;
+南画 > nanga\ ;
+示度 > shido\ ;
+遺跡 > iseki\ ;
+鉄器 > tekki\ ;
+遥遠 > youen\ ;
+弁護 > bengo\ ;
+勤苦 > kinku\ ;
+毛糸 > keito\ ;
+助言 > jogon\ ;
+法度 > hatto\ ;
+南瓜 > nanka\ ;
+幽鬼 > yuuki\ ;
+化粧 > kewai\ ;
+情味 > joumi\ ;
+江河 > kouga\ ;
+否定 > hitei\ ;
+破線 > hasen\ ;
+影絵 > kagee\ ;
+同座 > douza\ ;
+破綻 > hatan\ ;
+口授 > kouju\ ;
+派兵 > hahei\ ;
+思案 > shian\ ;
+葡萄 > budou\ ;
+建議 > kengi\ ;
+正課 > seika\ ;
+母線 > bosen\ ;
+反旗 > hanki\ ;
+正誤 > seigo\ ;
+悲嘆 > hitan\ ;
+禅味 > zenmi\ ;
+部署 > busho\ ;
+可憐 > karen\ ;
+悪因 > akuin\ ;
+蒔絵 > makie\ ;
+過重 > kajuu\ ;
+匕箸 > hicho\ ;
+半田 > handa\ ;
+欄間 > ranma\ ;
+葉蘭 > haran\ ;
+恩師 > onshi\ ;
+母系 > bokei\ ;
+遊里 > yuuri\ ;
+水火 > suika\ ;
+惨事 > sanji\ ;
+祭器 > saiki\ ;
+恨布 > konbu\ ;
+油性 > yusei\ ;
+正規 > seiki\ ;
+禁句 > kinku\ ;
+社寺 > shaji\ ;
+恋慕 > renbo\ ;
+医療 > iryou\ ;
+華道 > kadou\ ;
+野手 > yashu\ ;
+社家 > shake\ ;
+重手 > omode\ ;
+武装 > busou\ ;
+野戦 > yasen\ ;
+歩行 > hokou\ ;
+毛穴 > keana\ ;
+卑猥 > hiwai\ ;
+破算 > hasan\ ;
+呑吐 > donto\ ;
+油彩 > yusai\ ;
+叡慮 > eiryo\ ;
+御用 > goyou\ ;
+流人 > runin\ ;
+叡感 > eikan\ ;
+歌謡 > kayou\ ;
+名家 > meika\ ;
+御璽 > gyoji\ ;
+取手 > totte\ ;
+名宛 > naate\ ;
+同家 > douke\ ;
+着類 > kirui\ ;
+受戒 > jukai\ ;
+運送 > unsou\ ;
+黄体 > outai\ ;
+歌論 > karon\ ;
+酵母 > koubo\ ;
+祖型 > sokei\ ;
+重愛 > juuai\ ;
+神器 > jingi\ ;
+同字 > douji\ ;
+台座 > daiza\ ;
+割賦 > wappu\ ;
+真鯛 > madai\ ;
+叛意 > han''i\ ;
+歌詞 > kashi\ ;
+真鯉 > magoi\ ;
+残花 > zanka\ ;
+黄人 > oujin\ ;
+水温 > suion\ ;
+運輸 > un''yu\ ;
+藩儒 > hanju\ ;
+剰費 > jouhi\ ;
+前部 > zenbu\ ;
+麗句 > reiku\ ;
+磨損 > mason\ ;
+野性 > yasei\ ;
+葉茶 > hadja\ ;
+叙情 > jojou\ ;
+御玉 > otama\ ;
+道路 > douro\ ;
+運転 > unten\ ;
+幽雅 > yuuga\ ;
+初陣 > uijin\ ;
+沿岸 > engan\ ;
+連鎖 > rensa\ ;
+葉芽 > youga\ ;
+河川 > kasen\ ;
+遁辞 > tonji\ ;
+前途 > zento\ ;
+遍路 > henro\ ;
+鉛丹 > entan\ ;
+水泳 > suiei\ ;
+后妃 > kouhi\ ;
+名妓 > meigi\ ;
+口座 > kouza\ ;
+志気 > shiki\ ;
+叛徒 > hanto\ ;
+金庫 > kinko\ ;
+印池 > inchi\ ;
+泥土 > deido\ ;
+油層 > yusou\ ;
+労苦 > rouku\ ;
+友愛 > yuuai\ ;
+遠謀 > enbou\ ;
+同夜 > douya\ ;
+重度 > juudo\ ;
+前輪 > maewa\ ;
+退院 > taiin\ ;
+情事 > jouji\ ;
+破砕 > hasai\ ;
+危殆 > kitai\ ;
+治安 > chian\ ;
+剰語 > jougo\ ;
+野師 > yashi\ ;
+落花 > rakka\ ;
+史家 > shika\ ;
+鈍器 > donki\ ;
+性愛 > seiai\ ;
+引航 > inkou\ ;
+砂絵 > sunae\ ;
+得物 > emono\ ;
+沙弥 > shami\ ;
+祭具 > saigu\ ;
+含味 > ganmi\ ;
+往生 > oujou\ ;
+分離 > bunri\ ;
+配流 > hairu\ ;
+引致 > inchi\ ;
+反徒 > hanto\ ;
+刈除 > gaijo\ ;
+怨恨 > enkon\ ;
+遠視 > enshi\ ;
+祭儀 > saigi\ ;
+鄙猥 > hiwai\ ;
+歯芽 > shiga\ ;
+遠見 > toomi\ ;
+鹹味 > kanmi\ ;
+荷馬 > niuma\ ;
+真顔 > magao\ ;
+砂糖 > satou\ ;
+酒気 > shuki\ ;
+鷹揚 > ouyou\ ;
+利鈍 > ridon\ ;
+思慕 > shibo\ ;
+怠惰 > taida\ ;
+利金 > rikin\ ;
+沮害 > sogai\ ;
+同坐 > douza\ ;
+区点 > kuten\ ;
+友引 > yuuin\ ;
+酔歩 > suiho\ ;
+凹面 > oumen\ ;
+道話 > douwa\ ;
+包皮 > houhi\ ;
+逸走 > issou\ ;
+廃語 > haigo\ ;
+吟味 > ginmi\ ;
+厭戦 > ensen\ ;
+武芸 > bugei\ ;
+遡行 > sokou\ ;
+名器 > meiki\ ;
+華言 > kagen\ ;
+影画 > kagee\ ;
+徒然 > tozen\ ;
+連辞 > renji\ ;
+広野 > kouya\ ;
+気泡 > kihou\ ;
+金字 > kinji\ ;
+弥縫 > bihou\ ;
+金子 > kinsu\ ;
+弧線 > kosen\ ;
+欠課 > kekka\ ;
+単比 > tanpi\ ;
+過言 > kagon\ ;
+破産 > hasan\ ;
+社員 > shain\ ;
+印棉 > inmen\ ;
+研磨 > kenma\ ;
+悪事 > akuji\ ;
+示唆 > shisa\ ;
+可変 > kahen\ ;
+彩画 > saiga\ ;
+薫化 > kunka\ ;
+受容 > juyou\ ;
+祭事 > saiji\ ;
+祖先 > sosen\ ;
+鈍化 > donka\ ;
+性差 > seisa\ ;
+萠芽 > houga\ ;
+別途 > betto\ ;
+過褒 > kahou\ ;
+荷電 > kaden\ ;
+硬派 > kouha\ ;
+台場 > daiba\ ;
+吾人 > gojin\ ;
+波動 > hadou\ ;
+薄地 > usuji\ ;
+透過 > touka\ ;
+単機 > tanki\ ;
+殷盛 > insei\ ;
+社印 > shain\ ;
+印材 > inzai\ ;
+平野 > heiya\ ;
+印本 > inpon\ ;
+息吹 > ibuki\ ;
+幹部 > kanbu\ ;
+印書 > insho\ ;
+幽遠 > yuuen\ ;
+名句 > meiku\ ;
+前記 > zenki\ ;
+運行 > unkou\ ;
+武者 > musha\ ;
+社務 > shamu\ ;
+原意 > gen''i\ ;
+古墳 > kofun\ ;
+恩命 > onmei\ ;
+友宜 > yuugi\ ;
+野天 > noten\ ;
+合否 > gouhi\ ;
+労組 > rouso\ ;
+野外 > yagai\ ;
+座談 > zadan\ ;
+弗素 > fusso\ ;
+逃避 > touhi\ ;
+幸運 > kouun\ ;
+破牢 > harou\ ;
+遺臣 > ishin\ ;
+広軌 > kouki\ ;
+正義 > seigi\ ;
+法務 > houmu\ ;
+破片 > hahen\ ;
+同化 > douka\ ;
+退避 > taihi\ ;
+古城 > kojou\ ;
+吐剤 > tozai\ ;
+気概 > kigai\ ;
+府警 > fukei\ ;
+御殿 > goten\ ;
+萌芽 > houga\ ;
+区民 > kumin\ ;
+厚恩 > kouon\ ;
+応援 > ouen\ ;
+庫裏 > kuri\ ;
+古器 > koki\ ;
+凍雨 > touu\ ;
+徒歩 > toho\ ;
+可否 > kahi\ ;
+徐歩 > joho\ ;
+庇護 > higo\ ;
+野営 > yaei\ ;
+法会 > houe\ ;
+同位 > doui\ ;
+危懼 > kigu\ ;
+句句 > kuku\ ;
+古句 > koku\ ;
+口受 > kuju\ ;
+治具 > jigu\ ;
+冷雨 > reiu\ ;
+当為 > toui\ ;
+右党 > utou\ ;
+危惧 > kigu\ ;
+遺精 > isei\ ;
+野卑 > yahi\ ;
+右傾 > ukei\ ;
+医書 > isho\ ;
+違背 > ihai\ ;
+怨嗟 > ensa\ ;
+鸚哥 > inko\ ;
+破毀 > haki\ ;
+反吐 > hedo\ ;
+反古 > hogo\ ;
+古儀 > kogi\ ;
+華美 > kabi\ ;
+印度 > indo\ ;
+遺稿 > ikou\ ;
+相違 > soui\ ;
+座臥 > zaga\ ;
+帰途 > kito\ ;
+忠実 > mame\ ;
+円顱 > enro\ ;
+磁場 > jiba\ ;
+古事 > koji\ ;
+破棄 > haki\ ;
+永寿 > eiju\ ;
+歌碑 > kahi\ ;
+往時 > ouji\ ;
+磁土 > jido\ ;
+鴉片 > ahen\ ;
+印字 > inji\ ;
+違算 > isan\ ;
+叙事 > joji\ ;
+磁器 > jiki\ ;
+微微 > bibi\ ;
+帰路 > kiro\ ;
+御意 > gyoi\ ;
+砂洲 > sasu\ ;
+午後 > gogo\ ;
+毀棄 > kiki\ ;
+遠祖 > enso\ ;
+後手 > gote\ ;
+干葉 > hiba\ ;
+引火 > inka\ ;
+御影 > goei\ ;
+遺産 > isan\ ;
+樹陰 > juin\ ;
+英音 > eion\ ;
+汚名 > omei\ ;
+磁区 > jiku\ ;
+邪淫 > jain\ ;
+迂言 > ugen\ ;
+磁化 > jika\ ;
+医師 > ishi\ ;
+彼我 > higa\ ;
+危坐 > kiza\ ;
+創痍 > soui\ ;
+機運 > kiun\ ;
+匪徒 > hito\ ;
+助演 > joen\ ;
+邪気 > jaki\ ;
+弥次 > yaji\ ;
+御宇 > gyou\ ;
+往往 > ouou\ ;
+刀自 > toji\ ;
+御子 > miko\ ;
+医官 > ikan\ ;
+加温 > kaon\ ;
+過疎 > kaso\ ;
+刀背 > mine\ ;
+応募 > oubo\ ;
+遺漏 > irou\ ;
+後家 > goke\ ;
+医大 > idai\ ;
+殴打 > ouda\ ;
+歩武 > hobu\ ;
+違犯 > ihan\ ;
+円貨 > enka\ ;
+気味 > gimi\ ;
+気合 > kiai\ ;
+布衍 > fuen\ ;
+魔魅 > mami\ ;
+後場 > goba\ ;
+破家 > baka\ ;
+気化 > kika\ ;
+征夷 > seii\ ;
+午后 > gogo\ ;
+水位 > suii\ ;
+永久 > towa\ ;
+左記 > saki\ ;
+円規 > enki\ ;
+盈虧 > eiki\ ;
+遺構 > ikou\ ;
+御名 > mina\ ;
+部屋 > heya\ ;
+英貨 > eika\ ;
+過渡 > kato\ ;
+違法 > ihou\ ;
+殷富 > inpu\ ;
+延期 > enki\ ;
+横議 > ougi\ ;
+砂州 > sasu\ ;
+茣蓙 > goza\ ;
+英語 > eigo\ ;
+運河 > unga\ ;
+遺書 > isho\ ;
+知恵 > chie\ ;
+運気 > unki\ ;
+輸贏 > yuei\ ;
+卑下 > hige\ ;
+勢子 > seko\ ;
+包囲 > houi\ ;
+往古 > ouko\ ;
+加持 > kaji\ ;
+弧度 > kodo\ ;
+都営 > toei\ ;
+比喩 > hiyu\ ;
+遺文 > ibun\ ;
+逢瀬 > ouse\ ;
+出目 > deme\ ;
+彙報 > ihou\ ;
+武技 > bugi\ ;
+輝輝 > kiki\ ;
+座洲 > zasu\ ;
+御代 > miyo\ ;
+勢威 > seii\ ;
+医会 > ikai\ ;
+得体 > etai\ ;
+御世 > miyo\ ;
+影印 > eiin\ ;
+正意 > seii\ ;
+円舞 > enbu\ ;
+鵜匠 > ujou\ ;
+母印 > boin\ ;
+逸機 > ikki\ ;
+部員 > buin\ ;
+遺戒 > ikai\ ;
+皮膚 > hifu\ ;
+遺憾 > ikan\ ;
+刷毛 > hake\ ;
+歩度 > hodo\ ;
+次期 > jiki\ ;
+武庫 > buko\ ;
+機縁 > kien\ ;
+砂土 > sado\ ;
+遺恨 > ikon\ ;
+往事 > ouji\ ;
+花譜 > kafu\ ;
+遺志 > ishi\ ;
+序次 > joji\ ;
+比価 > hika\ ;
+途次 > toji\ ;
+創意 > soui\ ;
+武家 > buke\ ;
+横臥 > ouga\ ;
+鬱金 > ukon\ ;
+比丘 > biku\ ;
+都下 > toka\ ;
+矢場 > yaba\ ;
+花被 > kahi\ ;
+違憲 > iken\ ;
+延寿 > enju\ ;
+百舌 > mozu\ ;
+武夫 > bufu\ ;
+砂利 > jari\ ;
+部下 > buka\ ;
+遺子 > ishi\ ;
+瞽女 > goze\ ;
+句々 > kuku\ ;
+出歯 > deba\ ;
+過度 > kado\ ;
+武器 > buki\ ;
+運座 > unza\ ;
+次序 > jijo\ ;
+模糊 > moko\ ;
+花芽 > kaga\ ;
+遺址 > ishi\ ;
+平易 > heii\ ;
+加味 > kami\ ;
+歩合 > buai\ ;
+欧字 > ouji\ ;
+出来 > deki\ ;
+僧衣 > soui\ ;
+疎音 > soin\ ;
+座州 > zasu\ ;
+樹皮 > juhi\ ;
+府庫 > fuko\ ;
+遺品 > ihin\ ;
+疑雲 > giun\ ;
+遺命 > imei\ ;
+此処 > koko\ ;
+武具 > bugu\ ;
+過多 > kata\ ;
+次女 > jijo\ ;
+几案 > kian\ ;
+武備 > bubi\ ;
+追手 > otte\ ;
+遺功 > ikou\ ;
+異風 > ifuu\ ;
+遺制 > isei\ ;
+異類 > irui\ ;
+利己 > riko\ ;
+正位 > seii\ ;
+刷子 > hake\ ;
+武事 > buji\ ;
+荊棘 > bara\ ;
+魔羅 > mara\ ;
+遺体 > itai\ ;
+違反 > ihan\ ;
+遺伝 > iden\ ;
+過去 > kako\ ;
+欧化 > ouka\ ;
+疎遠 > soen\ ;
+疑辞 > giji\ ;
+左派 > saha\ ;
+艶美 > enbi\ ;
+驢馬 > roba\ ;
+岐阜 > gifu\ ;
+座員 > zain\ ;
+永々 > eiei\ ;
+真帆 > maho\ ;
+相手 > aite\ ;
+度合 > doai\ ;
+違例 > irei\ ;
+利器 > riki\ ;
+色絵 > iroe\ ;
+異邦 > ihou\ ;
+違令 > irei\ ;
+廃位 > haii\ ;
+布施 > fuse\ ;
+自費 > jihi\ ;
+自負 > jifu\ ;
+入江 > irie\ ;
+英気 > eiki\ ;
+騾馬 > raba\ ;
+花王 > kaou\ ;
+棋院 > kiin\ ;
+帷幄 > iaku\ ;
+英武 > eibu\ ;
+異趣 > ishu\ ;
+具案 > guan\ ;
+出場 > deba\ ;
+自記 > jiki\ ;
+座主 > zasu\ ;
+自衛 > jiei\ ;
+異論 > iron\ ;
+岐路 > kiro\ ;
+相子 > aiko\ ;
+府下 > fuka\ ;
+魔王 > maou\ ;
+偉観 > ikan\ ;
+異見 > iken\ ;
+利他 > rita\ ;
+騎馬 > kiba\ ;
+機微 > kibi\ ;
+機影 > kiei\ ;
+幾何 > kika\ ;
+往々 > ouou\ ;
+発条 > bane\ ;
+内意 > naii\ ;
+機序 > kijo\ ;
+癸未 > kibi\ ;
+帝威 > teii\ ;
+迂回 > ukai\ ;
+退位 > taii\ ;
+出刃 > deba\ ;
+梅雨 > baiu\ ;
+模擬 > mogi\ ;
+円弧 > enko\ ;
+痲痺 > mahi\ ;
+目地 > meji\ ;
+円座 > enza\ ;
+機尾 > kibi\ ;
+花樹 > kaju\ ;
+帰営 > kiei\ ;
+画譜 > gafu\ ;
+機宜 > kigi\ ;
+尾部 > bibu\ ;
+盲唖 > moua\ ;
+依願 > igan\ ;
+依頼 > irai\ ;
+疑義 > gigi\ ;
+真似 > mane\ ;
+棋譜 > kifu\ ;
+帰化 > kika\ ;
+児戯 > jigi\ ;
+真上 > maue\ ;
+巫子 > miko\ ;
+希土 > kido\ ;
+花期 > kaki\ ;
+希図 > kito\ ;
+馬鹿 > baka\ ;
+臙脂 > enji\ ;
+偃臥 > enga\ ;
+胡麻 > goma\ ;
+栗鼠 > risu\ ;
+寺院 > jiin\ ;
+異聞 > ibun\ ;
+巫女 > miko\ ;
+目処 > medo\ ;
+駄馬 > daba\ ;
+鬼気 > kiki\ ;
+几下 > kika\ ;
+機器 > kiki\ ;
+公家 > kuge\ ;
+艶歌 > enka\ ;
+保護 > hogo\ ;
+兵威 > heii\ ;
+鬱気 > ukki\ ;
+軽易 > keii\ ;
+英字 > eiji\ ;
+花押 > kaou\ ;
+俚語 > rigo\ ;
+皇子 > ouji\ ;
+屠蘇 > toso\ ;
+冀図 > kito\ ;
+駆除 > kujo\ ;
+寝間 > nema\ ;
+辞儀 > jigi\ ;
+目上 > meue\ ;
+帝位 > teii\ ;
+機化 > kika\ ;
+輪差 > wasa\ ;
+余韻 > yoin\ ;
+異端 > itan\ ;
+輝度 > kido\ ;
+寄附 > kifu\ ;
+機具 > kigu\ ;
+工合 > guai\ ;
+異種 > ishu\ ;
+児女 > jijo\ ;
+花序 > kajo\ ;
+具合 > guai\ ;
+足袋 > tabi\ ;
+山羊 > yagi\ ;
+苦土 > kudo\ ;
+位階 > ikai\ ;
+寿賀 > juga\ ;
+自画 > jiga\ ;
+英和 > eiwa\ ;
+公卿 > kuge\ ;
+画素 > gaso\ ;
+其処 > soko\ ;
+梨花 > rika\ ;
+由縁 > yuen\ ;
+円価 > enka\ ;
+花季 > kaki\ ;
+魚座 > uoza\ ;
+具備 > gubi\ ;
+越訴 > esso\ ;
+肥馬 > hiba\ ;
+百合 > yuri\ ;
+皮下 > hika\ ;
+儒家 > juka\ ;
+自火 > jika\ ;
+起訴 > kiso\ ;
+俚耳 > riji\ ;
+家運 > kaun\ ;
+異状 > ijou\ ;
+楚楚 > soso\ ;
+允可 > inka\ ;
+侍衛 > jiei\ ;
+饑餓 > kiga\ ;
+花器 > kaki\ ;
+皇位 > koui\ ;
+佳話 > kawa\ ;
+胃酸 > isan\ ;
+先先 > mama\ ;
+家路 > ieji\ ;
+桧葉 > hiba\ ;
+魔女 > majo\ ;
+饂飩 > udon\ ;
+字音 > jion\ ;
+寄語 > kigo\ ;
+花卉 > kaki\ ;
+家譜 > kafu\ ;
+胴衣 > doui\ ;
+鬼女 > kijo\ ;
+耳鼻 > jibi\ ;
+餓鬼 > gaki\ ;
+胤裔 > inei\ ;
+儲位 > choi\ ;
+自棄 > yake\ ;
+理非 > rihi\ ;
+以降 > ikou\ ;
+優位 > yuui\ ;
+起臥 > kiga\ ;
+胞衣 > houi\ ;
+栄誉 > eiyo\ ;
+嬰音 > eion\ ;
+輔佐 > hosa\ ;
+伊達 > date\ ;
+異様 > iyou\ ;
+余蘊 > youn\ ;
+家蚊 > ieka\ ;
+尼甫 > jiho\ ;
+偉材 > izai\ ;
+異本 > ihon\ ;
+植木 > ueki\ ;
+胼胝 > tako\ ;
+航宇 > kouu\ ;
+疑懼 > giku\ ;
+異文 > ibun\ ;
+異数 > isuu\ ;
+疑惧 > gigu\ ;
+自我 > jiga\ ;
+駕籠 > kago\ ;
+魁偉 > kaii\ ;
+保無 > homu\ ;
+駕篭 > kago\ ;
+飢餓 > kiga\ ;
+自愛 > jiai\ ;
+栄華 > eiga\ ;
+偉挙 > ikyo\ ;
+季語 > kigo\ ;
+肚裏 > tori\ ;
+僧位 > soui\ ;
+偉才 > isai\ ;
+異才 > isai\ ;
+費途 > hito\ ;
+理路 > riro\ ;
+賦課 > fuka\ ;
+賦詠 > fuei\ ;
+畏敬 > ikei\ ;
+保温 > hoon\ ;
+自序 > jijo\ ;
+画架 > gaka\ ;
+位置 > ichi\ ;
+二院 > niin\ ;
+自己 > jiko\ ;
+異性 > isei\ ;
+異彩 > isai\ ;
+疑字 > giji\ ;
+豪雨 > gouu\ ;
+付議 > fugi\ ;
+保母 > hobo\ ;
+安臥 > anga\ ;
+以西 > isei\ ;
+亜鈴 > arei\ ;
+自家 > jika\ ;
+異常 > ijou\ ;
+供犠 > kugi\ ;
+付記 > fuki\ ;
+小火 > boya\ ;
+駄目 > dame\ ;
+屋根 > yane\ ;
+依然 > izen\ ;
+伊艦 > ikan\ ;
+偉容 > iyou\ ;
+梨果 > rika\ ;
+異存 > izon\ ;
+二部 > nibu\ ;
+風雨 > fuuu\ ;
+棄捐 > kien\ ;
+楕円 > daen\ ;
+偽印 > giin\ ;
+肌膚 > kifu\ ;
+異姓 > isei\ ;
+偉大 > idai\ ;
+異変 > ihen\ ;
+留守 > rusu\ ;
+位相 > isou\ ;
+一鼓 > ikko\ ;
+自営 > jiei\ ;
+用意 > youi\ ;
+耳語 > jigo\ ;
+異域 > iiki\ ;
+画布 > gafu\ ;
+高位 > koui\ ;
+字義 > jigi\ ;
+自叙 > jijo\ ;
+保持 > hoji\ ;
+驥尾 > kibi\ ;
+倚子 > ishi\ ;
+自助 > jijo\ ;
+胃癌 > igan\ ;
+画家 > gaka\ ;
+興亜 > koua\ ;
+瓦斯 > gasu\ ;
+自利 > jiri\ ;
+家父 > kafu\ ;
+飛語 > higo\ ;
+余煙 > yoen\ ;
+下駄 > geta\ ;
+下馬 > geba\ ;
+假名 > kana\ ;
+異名 > imei\ ;
+位牌 > ihai\ ;
+異同 > idou\ ;
+耶蘇 > yaso\ ;
+余炎 > yoen\ ;
+瑠璃 > ruri\ ;
+一騎 > ikki\ ;
+疑似 > giji\ ;
+偉勲 > ikun\ ;
+偉効 > ikou\ ;
+偉功 > ikou\ ;
+異動 > idou\ ;
+負荷 > fuka\ ;
+久遠 > kuon\ ;
+自余 > jiyo\ ;
+不離 > furi\ ;
+一顧 > ikko\ ;
+自他 > jita\ ;
+美音 > bion\ ;
+子等 > kora\ ;
+下院 > kain\ ;
+起案 > kian\ ;
+不間 > buma\ ;
+画因 > gain\ ;
+余波 > yoha\ ;
+畏友 > iyuu\ ;
+異例 > irei\ ;
+小手 > kote\ ;
+異体 > itai\ ;
+趣意 > shui\ ;
+先々 > mama\ ;
+偉人 > ijin\ ;
+異人 > ijin\ ;
+保安 > hoan\ ;
+余殃 > yoou\ ;
+路地 > roji\ ;
+依拠 > ikyo\ ;
+琵琶 > biwa\ ;
+理科 > rika\ ;
+暮雲 > boun\ ;
+保姆 > hobo\ ;
+胃液 > ieki\ ;
+居士 > koji\ ;
+亜聖 > asei\ ;
+李花 > rika\ ;
+下野 > geya\ ;
+上野 > ueno\ ;
+肌理 > kime\ ;
+馴染 > naji\ ;
+亜群 > agun\ ;
+世辞 > seji\ ;
+不運 > fuun\ ;
+余栄 > yoei\ ;
+腰囲 > youi\ ;
+梨園 > rien\ ;
+供御 > gugo\ ;
+梃子 > teko\ ;
+路加 > ruka\ ;
+亜綱 > akou\ ;
+果皮 > kahi\ ;
+不軌 > fuki\ ;
+余暇 > yoka\ ;
+一過 > ikka\ ;
+小屋 > koya\ ;
+一途 > itto\ ;
+美辞 > biji\ ;
+安気 > anki\ ;
+琉璃 > ruri\ ;
+容易 > youi\ ;
+個個 > koko\ ;
+不起 > fuki\ ;
+尉官 > ikan\ ;
+栄枯 > eiko\ ;
+起座 > kiza\ ;
+寓意 > guui\ ;
+依存 > izon\ ;
+世話 > sewa\ ;
+亜種 > ashu\ ;
+晴雨 > seiu\ ;
+小夜 > sayo\ ;
+威風 > ifuu\ ;
+飛簷 > hien\ ;
+音頭 > ondo\ ;
+余技 > yogi\ ;
+不語 > fugo\ ;
+余所 > yoso\ ;
+王者 > ouja\ ;
+家扶 > kafu\ ;
+下記 > kaki\ ;
+暗部 > anbu\ ;
+供奉 > gubu\ ;
+胃散 > isan\ ;
+仁王 > niou\ ;
+侍婢 > jihi\ ;
+予科 > yoka\ ;
+害意 > gaii\ ;
+予示 > yoji\ ;
+安易 > an''i\ ;
+下衆 > gesu\ ;
+上衣 > joui\ ;
+侍女 > jijo\ ;
+字母 > jibo\ ;
+背戸 > sedo\ ;
+寄席 > yose\ ;
+佳宴 > kaen\ ;
+犠飛 > gihi\ ;
+不虞 > fugu\ ;
+腐儒 > fuju\ ;
+罵詈 > bari\ ;
+富家 > fuka\ ;
+他派 > taha\ ;
+議院 > giin\ ;
+起因 > kiin\ ;
+玻璃 > hari\ ;
+安打 > anda\ ;
+暗譜 > anpu\ ;
+馬子 > mago\ ;
+是非 > zehi\ ;
+事理 > jiri\ ;
+家家 > ieie\ ;
+枸杞 > kuko\ ;
+二王 > niou\ ;
+猿臂 > enpi\ ;
+暗記 > anki\ ;
+果樹 > kaju\ ;
+位官 > ikan\ ;
+云爾 > unji\ ;
+亜炭 > atan\ ;
+一荷 > ikka\ ;
+起句 > kiku\ ;
+会意 > kaii\ ;
+以東 > itou\ ;
+以来 > irai\ ;
+飛燕 > hien\ ;
+安座 > anza\ ;
+旗鼓 > kiko\ ;
+馬場 > baba\ ;
+鞍馬 > anba\ ;
+一臂 > ippi\ ;
+佳味 > kami\ ;
+不義 > fugi\ ;
+不羈 > fuki\ ;
+不羇 > fuki\ ;
+佳句 > kaku\ ;
+木瓜 > boke\ ;
+駄句 > daku\ ;
+肩巾 > hire\ ;
+時運 > jiun\ ;
+韻語 > ingo\ ;
+楚々 > soso\ ;
+音譜 > onpu\ ;
+不縁 > fuen\ ;
+位地 > ichi\ ;
+枇杷 > biwa\ ;
+上絵 > uwae\ ;
+孤影 > koei\ ;
+案価 > anka\ ;
+猛者 > mosa\ ;
+校医 > koui\ ;
+羽目 > hame\ ;
+案下 > anka\ ;
+柚子 > yuzu\ ;
+護謨 > gomu\ ;
+他所 > yoso\ ;
+二次 > niji\ ;
+如露 > joro\ ;
+不穏 > fuon\ ;
+安堵 > ando\ ;
+一箇 > ikko\ ;
+下種 > gesu\ ;
+馬具 > bagu\ ;
+位勲 > ikun\ ;
+他愛 > taai\ ;
+家出 > iede\ ;
+余儀 > yogi\ ;
+安固 > anko\ ;
+家具 > kagu\ ;
+不磨 > fuma\ ;
+家兎 > kato\ ;
+日間 > hiai\ ;
+伎女 > gijo\ ;
+委譲 > ijou\ ;
+位冠 > ikan\ ;
+護衛 > goei\ ;
+介意 > kaii\ ;
+寄付 > kifu\ ;
+鞍部 > anbu\ ;
+有為 > yuui\ ;
+寄与 > kiyo\ ;
+体位 > taii\ ;
+余事 > yoji\ ;
+青青 > aoao\ ;
+仮字 > kana\ ;
+二期 > niki\ ;
+低位 > teii\ ;
+安否 > anpi\ ;
+胡乱 > uron\ ;
+予期 > yoki\ ;
+家事 > kaji\ ;
+義理 > giri\ ;
+譏誹 > kihi\ ;
+下痢 > geri\ ;
+安危 > anki\ ;
+賭場 > toba\ ;
+首位 > shui\ ;
+嬉戯 > kigi\ ;
+事故 > jiko\ ;
+企図 > kito\ ;
+義父 > gifu\ ;
+他家 > take\ ;
+不理 > furi\ ;
+賀宴 > gaen\ ;
+定位 > teii\ ;
+宇内 > udai\ ;
+以外 > igai\ ;
+瑣事 > saji\ ;
+夢魔 > muma\ ;
+来意 > raii\ ;
+孵化 > fuka\ ;
+貴家 > kika\ ;
+暗示 > anji\ ;
+安保 > anpo\ ;
+安価 > anka\ ;
+木木 > kigi\ ;
+非運 > hiun\ ;
+聾唖 > roua\ ;
+贏余 > eiyo\ ;
+羽毛 > umou\ ;
+音素 > onso\ ;
+字句 > jiku\ ;
+贈位 > zoui\ ;
+貴女 > kijo\ ;
+付図 > fuzu\ ;
+肉刺 > mame\ ;
+事後 > jigo\ ;
+予後 > yogo\ ;
+二度 > nido\ ;
+音符 > onpu\ ;
+義気 > giki\ ;
+個々 > koko\ ;
+義母 > gibo\ ;
+語音 > goon\ ;
+以南 > inan\ ;
+而後 > jigo\ ;
+夜陰 > yain\ ;
+付和 > fuwa\ ;
+牡蛎 > kaki\ ;
+王手 > oute\ ;
+羽根 > hane\ ;
+木戸 > kido\ ;
+以前 > izen\ ;
+東夷 > toui\ ;
+非議 > higi\ ;
+韋編 > ihen\ ;
+以内 > inai\ ;
+一派 > ippa\ ;
+三毛 > mike\ ;
+雷雨 > raiu\ ;
+諳譜 > anpu\ ;
+付加 > fuka\ ;
+不次 > fuji\ ;
+雑魚 > jako\ ;
+護符 > gofu\ ;
+雲霧 > unmu\ ;
+事宜 > jigi\ ;
+曳曳 > eiei\ ;
+二字 > niji\ ;
+一気 > ikki\ ;
+賦与 > fuyo\ ;
+杏子 > anzu\ ;
+委細 > isai\ ;
+諳記 > anki\ ;
+大野 > oono\ ;
+一歩 > ippo\ ;
+斎部 > inbe\ ;
+代位 > daii\ ;
+狐疑 > kogi\ ;
+王座 > ouza\ ;
+代代 > yoyo\ ;
+奇貨 > kika\ ;
+以上 > ijou\ ;
+義旗 > giki\ ;
+理事 > riji\ ;
+有意 > yuui\ ;
+有情 > ujou\ ;
+不期 > fuki\ ;
+他事 > taji\ ;
+狒狒 > hihi\ ;
+付与 > fuyo\ ;
+主意 > shui\ ;
+狐狸 > kori\ ;
+世故 > seko\ ;
+不時 > fuji\ ;
+露語 > rogo\ ;
+大路 > ooji\ ;
+王家 > ouke\ ;
+義援 > gien\ ;
+王子 > ouji\ ;
+一期 > ikki\ ;
+義捐 > gien\ ;
+誹議 > higi\ ;
+貴下 > kika\ ;
+一斗 > itto\ ;
+王妃 > ouhi\ ;
+王女 > oujo\ ;
+青葉 > aoba\ ;
+語路 > goro\ ;
+青菜 > aona\ ;
+互助 > gojo\ ;
+木場 > kiba\ ;
+五分 > gobu\ ;
+一揆 > ikki\ ;
+事務 > jimu\ ;
+下手 > heta\ ;
+下戸 > geko\ ;
+東亞 > toua\ ;
+東亜 > toua\ ;
+木地 > kiji\ ;
+王土 > oudo\ ;
+美技 > bigi\ ;
+上意 > joui\ ;
+一戸 > ikko\ ;
+独楽 > koma\ ;
+誤記 > goki\ ;
+音波 > onpa\ ;
+些事 > saji\ ;
+韻母 > inbo\ ;
+映画 > eiga\ ;
+予備 > yobi\ ;
+二価 > nika\ ;
+施肥 > sehi\ ;
+題意 > daii\ ;
+二佐 > nisa\ ;
+予価 > yoka\ ;
+外衣 > gaii\ ;
+不帰 > fuki\ ;
+敷衍 > fuen\ ;
+早稲 > wase\ ;
+訛音 > kaon\ ;
+羽太 > hata\ ;
+煙霧 > enmu\ ;
+王化 > ouka\ ;
+煙霞 > enka\ ;
+煙雨 > en''u\ ;
+風呂 > furo\ ;
+乾位 > keni\ ;
+擬音 > gion\ ;
+威権 > iken\ ;
+一己 > ikko\ ;
+縁起 > engi\ ;
+九分 > kubu\ ;
+不安 > fuan\ ;
+妖異 > youi\ ;
+訃音 > fuon\ ;
+机下 > kika\ ;
+父祖 > fuso\ ;
+下婢 > kahi\ ;
+一家 > ikke\ ;
+陰阜 > infu\ ;
+奇縁 > kien\ ;
+暗愚 > angu\ ;
+与太 > yota\ ;
+下女 > gejo\ ;
+無駄 > muda\ ;
+縁語 > engo\ ;
+雅語 > gago\ ;
+王事 > ouji\ ;
+時機 > jiki\ ;
+早生 > wase\ ;
+獣医 > juui\ ;
+美姫 > biki\ ;
+婦女 > fujo\ ;
+美妓 > bigi\ ;
+風位 > fuui\ ;
+美女 > bijo\ ;
+九九 > kuku\ ;
+青砥 > aoto\ ;
+家々 > ieie\ ;
+無音 > muon\ ;
+議案 > gian\ ;
+不図 > futo\ ;
+隘路 > airo\ ;
+猛威 > moui\ ;
+降雨 > kouu\ ;
+智慧 > chie\ ;
+不器 > fuki\ ;
+多義 > tagi\ ;
+暴威 > boui\ ;
+多羅 > tara\ ;
+時期 > jiki\ ;
+語義 > gogi\ ;
+陰部 > inbu\ ;
+女王 > joou\ ;
+主位 > shui\ ;
+非理 > hiri\ ;
+雲脂 > fuke\ ;
+義務 > gimu\ ;
+離苦 > riku\ ;
+暮夜 > boya\ ;
+青田 > aota\ ;
+不和 > fuwa\ ;
+不味 > fumi\ ;
+隠語 > ingo\ ;
+護摩 > goma\ ;
+三味 > sami\ ;
+不可 > fuka\ ;
+下吏 > kari\ ;
+下司 > gesu\ ;
+下句 > geku\ ;
+縷縷 > ruru\ ;
+更位 > koui\ ;
+壁蝨 > dani\ ;
+美味 > bimi\ ;
+下卑 > gebi\ ;
+謳歌 > ouka\ ;
+護持 > goji\ ;
+一句 > ikku\ ;
+不利 > furi\ ;
+無鉛 > muen\ ;
+美化 > bika\ ;
+一区 > ikku\ ;
+頭垢 > fuke\ ;
+不具 > fugu\ ;
+頭囲 > toui\ ;
+記譜 > kifu\ ;
+不備 > fubi\ ;
+訛語 > kago\ ;
+犠打 > gida\ ;
+外科 > geka\ ;
+離縁 > rien\ ;
+世事 > seji\ ;
+韻字 > inji\ ;
+世世 > yoyo\ ;
+大目 > oome\ ;
+無辜 > muko\ ;
+上位 > joui\ ;
+下付 > kafu\ ;
+縁者 > enja\ ;
+日歩 > hibu\ ;
+不二 > fuji\ ;
+不予 > fuyo\ ;
+一個 > ikko\ ;
+爾汝 > jijo\ ;
+威容 > iyou\ ;
+音字 > onji\ ;
+夜着 > yogi\ ;
+院議 > ingi\ ;
+夜目 > yome\ ;
+一佐 > issa\ ;
+父母 > fubo\ ;
+非毀 > hiki\ ;
+時差 > jisa\ ;
+細雨 > saiu\ ;
+霊異 > reii\ ;
+誇示 > koji\ ;
+基音 > kion\ ;
+緯線 > isen\ ;
+附議 > fugi\ ;
+時宜 > jigi\ ;
+代々 > yoyo\ ;
+隠者 > inja\ ;
+時季 > jiki\ ;
+閻魔 > enma\ ;
+日日 > hibi\ ;
+数珠 > juzu\ ;
+附記 > fuki\ ;
+頤使 > ishi\ ;
+陰萎 > in''i\ ;
+音吐 > onto\ ;
+音叉 > onsa\ ;
+威名 > imei\ ;
+青木 > aoki\ ;
+威厳 > igen\ ;
+謝意 > shai\ ;
+綺羅 > kira\ ;
+威勢 > isei\ ;
+基部 > kibu\ ;
+如意 > nyoi\ ;
+譬喩 > hiyu\ ;
+議員 > giin\ ;
+威光 > ikou\ ;
+好意 > koui\ ;
+好悪 > kouo\ ;
+夜気 > yaki\ ;
+音価 > onka\ ;
+韻事 > inji\ ;
+記紀 > kiki\ ;
+既往 > kiou\ ;
+語気 > goki\ ;
+爾後 > jigo\ ;
+威令 > irei\ ;
+時務 > jimu\ ;
+奥意 > okui\ ;
+垢離 > kori\ ;
+雲気 > unki\ ;
+間間 > mama\ ;
+墓碑 > bohi\ ;
+雨水 > usui\ ;
+譲位 > joui\ ;
+塩素 > enso\ ;
+時価 > jika\ ;
+議事 > giji\ ;
+無縁 > muen\ ;
+夜暗 > yaan\ ;
+時事 > jiji\ ;
+時下 > jika\ ;
+夏期 > kaki\ ;
+委任 > inin\ ;
+奴婢 > nuhi\ ;
+縊死 > ishi\ ;
+大手 > oode\ ;
+木々 > kigi\ ;
+露座 > roza\ ;
+雅歌 > gaka\ ;
+詠歌 > eika\ ;
+陰画 > inga\ ;
+大意 > taii\ ;
+壊死 > eshi\ ;
+無碍 > muge\ ;
+詐欺 > sagi\ ;
+誠意 > seii\ ;
+煙火 > enka\ ;
+経緯 > keii\ ;
+青地 > aoji\ ;
+青図 > aozu\ ;
+敬意 > keii\ ;
+摩羅 > mara\ ;
+粗野 > soya\ ;
+大屋 > ooya\ ;
+誤差 > gosa\ ;
+大尉 > taii\ ;
+曳々 > eiei\ ;
+縁故 > enko\ ;
+無理 > muri\ ;
+夢寐 > mubi\ ;
+緯書 > isho\ ;
+多岐 > taki\ ;
+煙波 > enpa\ ;
+糖衣 > toui\ ;
+露地 > roji\ ;
+女児 > joji\ ;
+多寡 > taka\ ;
+援護 > engo\ ;
+旧事 > kuji\ ;
+語尾 > gobi\ ;
+誤字 > goji\ ;
+爾余 > jiyo\ ;
+露営 > roei\ ;
+世々 > yoyo\ ;
+夥多 > kata\ ;
+無煙 > muen\ ;
+数寄 > suki\ ;
+夏季 > kaki\ ;
+阿片 > ahen\ ;
+陰気 > inki\ ;
+夜夜 > yoyo\ ;
+多多 > tata\ ;
+旗下 > kika\ ;
+土間 > doma\ ;
+措辞 > soji\ ;
+縁座 > enza\ ;
+方位 > houi\ ;
+外囲 > gaii\ ;
+課員 > kain\ ;
+基礎 > kiso\ ;
+無派 > muha\ ;
+規矩 > kiku\ ;
+夜営 > yaei\ ;
+濾過 > roka\ ;
+雨天 > uten\ ;
+奈何 > ikan\ ;
+雨声 > usei\ ;
+無比 > muhi\ ;
+見目 > mime\ ;
+雨域 > uiki\ ;
+縁家 > enka\ ;
+夜半 > yowa\ ;
+雉子 > kiji\ ;
+衣香 > ikou\ ;
+語呂 > goro\ ;
+無機 > muki\ ;
+補語 > hogo\ ;
+総意 > soui\ ;
+隠微 > inbi\ ;
+語句 > goku\ ;
+掩護 > engo\ ;
+補記 > hoki\ ;
+随意 > zuii\ ;
+夷人 > ijin\ ;
+衣類 > irui\ ;
+夜具 > yagu\ ;
+無期 > muki\ ;
+粗菓 > soka\ ;
+多価 > taka\ ;
+霊位 > reii\ ;
+攻囲 > koui\ ;
+多事 > taji\ ;
+火箭 > hiya\ ;
+絵本 > ehon\ ;
+固辞 > koji\ ;
+狒々 > hihi\ ;
+土語 > dogo\ ;
+地衣 > chii\ ;
+攘夷 > joui\ ;
+雇員 > koin\ ;
+無援 > muen\ ;
+雅味 > gami\ ;
+簿記 > boki\ ;
+無手 > mute\ ;
+無我 > muga\ ;
+火矢 > hiya\ ;
+阿房 > ahou\ ;
+覇気 > haki\ ;
+補肥 > hohi\ ;
+訴因 > soin\ ;
+規模 > kibo\ ;
+雄偉 > yuui\ ;
+故事 > koji\ ;
+袈裟 > kesa\ ;
+塗布 > tofu\ ;
+絵師 > eshi\ ;
+除夜 > joya\ ;
+無季 > muki\ ;
+火焔 > kaen\ ;
+火炎 > kaen\ ;
+火炉 > karo\ ;
+押韻 > ouin\ ;
+塩基 > enki\ ;
+擬古 > giko\ ;
+為政 > isei\ ;
+無塩 > muen\ ;
+推移 > suii\ ;
+無垢 > muku\ ;
+無地 > muji\ ;
+附図 > fuzu\ ;
+素手 > sude\ ;
+火気 > kaki\ ;
+擬似 > giji\ ;
+塩化 > enka\ ;
+記事 > kiji\ ;
+無味 > mumi\ ;
+日々 > hibi\ ;
+阿呆 > ahou\ ;
+地異 > chii\ ;
+闇愚 > angu\ ;
+院主 > inju\ ;
+堂宇 > douu\ ;
+青々 > aoao\ ;
+阿兄 > akei\ ;
+無価 > muka\ ;
+場合 > baai\ ;
+絵像 > ezou\ ;
+無二 > muni\ ;
+無事 > buji\ ;
+衣紋 > emon\ ;
+納屋 > naya\ ;
+見場 > miba\ ;
+阿世 > asei\ ;
+笑顔 > egao\ ;
+揶揄 > yayu\ ;
+基因 > kiin\ ;
+素地 > soji\ ;
+素因 > soin\ ;
+粗朶 > soda\ ;
+手間 > tema\ ;
+図画 > zuga\ ;
+章魚 > tako\ ;
+夜々 > yoyo\ ;
+多々 > tata\ ;
+火屋 > hoya\ ;
+批議 > higi\ ;
+瀬戸 > seto\ ;
+螻蛄 > kera\ ;
+火夫 > kafu\ ;
+間夫 > mabu\ ;
+持碁 > jigo\ ;
+演舞 > enbu\ ;
+糊塗 > koto\ ;
+粗布 > sofu\ ;
+演者 > enja\ ;
+火器 > kaki\ ;
+蛙黽 > abou\ ;
+演義 > engi\ ;
+掏摸 > suri\ ;
+行為 > koui\ ;
+籠手 > kote\ ;
+行火 > anka\ ;
+箇箇 > koko\ ;
+裸婦 > rafu\ ;
+図案 > zuan\ ;
+土手 > dote\ ;
+温雅 > onga\ ;
+援助 > enjo\ ;
+蝦蟇 > gama\ ;
+因果 > inga\ ;
+衣桁 > ikou\ ;
+齟齬 > sogo\ ;
+火事 > kaji\ ;
+固持 > koji\ ;
+四時 > yoji\ ;
+四方 > yomo\ ;
+蝌蚪 > kato\ ;
+国府 > kofu\ ;
+捻子 > neji\ ;
+地場 > jiba\ ;
+淫靡 > inbi\ ;
+手羽 > teba\ ;
+蜚語 > higo\ ;
+淫雨 > in''u\ ;
+補助 > hojo\ ;
+捩子 > neji\ ;
+湯葉 > yuba\ ;
+慰霊 > irei\ ;
+土器 > doki\ ;
+蜘蛛 > kumo\ ;
+按摩 > anma\ ;
+衣帯 > itai\ ;
+補佐 > hosa\ ;
+授受 > juju\ ;
+打破 > daha\ ;
+拿捕 > daho\ ;
+鼻音 > bion\ ;
+土匪 > dohi\ ;
+唖鈴 > arei\ ;
+演武 > enbu\ ;
+演歌 > enka\ ;
+地位 > chii\ ;
+移項 > ikou\ ;
+在位 > zaii\ ;
+衍字 > enji\ ;
+園児 > enji\ ;
+愛馬 > aiba\ ;
+授与 > juyo\ ;
+四囲 > shii\ ;
+固化 > koka\ ;
+捕吏 > hori\ ;
+愛飲 > aiin\ ;
+哀音 > aion\ ;
+海馬 > todo\ ;
+愛顧 > aiko\ ;
+海鞘 > hoya\ ;
+回向 > ekou\ ;
+渡英 > toei\ ;
+戯画 > giga\ ;
+慰謝 > isha\ ;
+黴雨 > baiu\ ;
+演技 > engi\ ;
+衣冠 > ikan\ ;
+演戯 > engi\ ;
+移送 > isou\ ;
+和音 > waon\ ;
+押忍 > ossu\ ;
+移転 > iten\ ;
+銅鑼 > dora\ ;
+慰藉 > isha\ ;
+把持 > haji\ ;
+愛輝 > aiki\ ;
+湯煮 > yuni\ ;
+移譲 > ijou\ ;
+悪鬼 > akki\ ;
+意趣 > ishu\ ;
+愛護 > aigo\ ;
+移行 > ikou\ ;
+哀話 > aiwa\ ;
+哀訴 > aiso\ ;
+呉須 > gosu\ ;
+間々 > mama\ ;
+呉音 > goon\ ;
+黄鉛 > ouen\ ;
+秘話 > hiwa\ ;
+湯気 > yuge\ ;
+螺子 > neji\ ;
+意見 > iken\ ;
+拇印 > boin\ ;
+黄身 > kimi\ ;
+和議 > wagi\ ;
+押印 > ouin\ ;
+器具 > kigu\ ;
+和語 > wago\ ;
+悲運 > hiun\ ;
+鼓舞 > kobu\ ;
+吐露 > toro\ ;
+恩顧 > onko\ ;
+恵雨 > keiu\ ;
+浮華 > fuka\ ;
+海苔 > nori\ ;
+海芋 > kaiu\ ;
+神酒 > miki\ ;
+浄衣 > joue\ ;
+河馬 > kaba\ ;
+蕎麦 > soba\ ;
+押下 > ouka\ ;
+渡河 > toka\ ;
+鸚鵡 > oumu\ ;
+合間 > aima\ ;
+右面 > umen\ ;
+鼻祖 > biso\ ;
+悪貨 > akka\ ;
+渡欧 > toou\ ;
+移管 > ikan\ ;
+否運 > hiun\ ;
+古音 > koon\ ;
+嘔吐 > outo\ ;
+悲話 > hiwa\ ;
+和英 > waei\ ;
+古雅 > koga\ ;
+滋味 > jimi\ ;
+扶助 > fujo\ ;
+唖然 > azen\ ;
+蘇芳 > suou\ ;
+等位 > toui\ ;
+藍褸 > boro\ ;
+悪衣 > akui\ ;
+祖語 > sogo\ ;
+怪雨 > kaiu\ ;
+湯屋 > yuya\ ;
+唾棄 > daki\ ;
+右辺 > uhen\ ;
+慈父 > jifu\ ;
+喜寿 > kiju\ ;
+古都 > koto\ ;
+沿路 > enro\ ;
+野鄙 > yahi\ ;
+湯女 > yuna\ ;
+厭離 > onri\ ;
+鼻炎 > bien\ ;
+野辺 > nobe\ ;
+黄緯 > koui\ ;
+蕪辞 > buji\ ;
+恩誼 > ongi\ ;
+穎果 > eika\ ;
+鋭気 > eiki\ ;
+営営 > eiei\ ;
+法衣 > houe\ ;
+河豚 > fugu\ ;
+野路 > noji\ ;
+温度 > ondo\ ;
+法螺 > hora\ ;
+蓖麻 > hima\ ;
+所以 > yuen\ ;
+呪符 > jufu\ ;
+慈母 > jibo\ ;
+古語 > kogo\ ;
+営利 > eiri\ ;
+古記 > koki\ ;
+応需 > ouju\ ;
+薔薇 > bara\ ;
+我利 > gari\ ;
+移民 > imin\ ;
+喇嘛 > rama\ ;
+憎悪 > zouo\ ;
+空尉 > kuui\ ;
+穎悟 > eigo\ ;
+気韻 > kiin\ ;
+右葉 > uyou\ ;
+麻痺 > mahi\ ;
+哀歌 > aika\ ;
+気障 > kiza\ ;
+受蘊 > juun\ ;
+御顔 > okao\ ;
+愛機 > aiki\ ;
+右舷 > ugen\ ;
+鹵簿 > robo\ ;
+恩義 > ongi\ ;
+十雨 > juuu\ ;
+右脳 > unou\ ;
+温和 > onwa\ ;
+永遠 > eien\ ;
+愚案 > guan\ ;
+野良 > nora\ ;
+忌避 > kihi\ ;
+蒿雀 > aoji\ ;
+淫婦 > inpu\ ;
+気鋭 > kiei\ ;
+惰気 > daki\ ;
+和気 > waki\ ;
+蚊帳 > kaya\ ;
+海松 > miru\ ;
+慈愛 > jiai\ ;
+慈悲 > jihi\ ;
+句義 > kugi\ ;
+古義 > kogi\ ;
+和歌 > waka\ ;
+汚行 > okou\ ;
+呼気 > koki\ ;
+気運 > kiun\ ;
+蚊屋 > kaya\ ;
+破風 > hafu\ ;
+愛撫 > aibu\ ;
+黄泉 > yomi\ ;
+印譜 > inpu\ ;
+応訴 > ouso\ ;
+御酒 > miki\ ;
+母音 > boin\ ;
+都雅 > toga\ ;
+黄櫨 > haze\ ;
+忌諱 > kiki\ ;
+哀慕 > aibo\ ;
+医道 > idou\ ;
+合着 > aigi\ ;
+穏和 > onwa\ ;
+空位 > kuui\ ;
+秘技 > higi\ ;
+祖父 > sofu\ ;
+愛慕 > aibo\ ;
+御身 > onmi\ ;
+同異 > doui\ ;
+古稀 > koki\ ;
+殺陣 > tate\ ;
+慰問 > imon\ ;
+卑語 > higo\ ;
+危虞 > kigu\ ;
+意思 > ishi\ ;
+悲歌 > hika\ ;
+区費 > kuhi\ ;
+意志 > ishi\ ;
+呆気 > akke\ ;
+邪魔 > jama\ ;
+邪鬼 > jaki\ ;
+都鄙 > tohi\ ;
+区議 > kugi\ ;
+私意 > shii\ ;
+徒費 > tohi\ ;
+慰労 > irou\ ;
+破邪 > haja\ ;
+往路 > ouro\ ;
+淫事 > inji\ ;
+古画 > koga\ ;
+邪飛 > jahi\ ;
+祖母 > sobo\ ;
+御衣 > gyoi\ ;
+鋭利 > eiri\ ;
+派手 > hade\ ;
+悪果 > akka\ ;
+油煙 > yuen\ ;
+弥陀 > mida\ ;
+野猿 > yaen\ ;
+受理 > juri\ ;
+呼応 > koou\ ;
+秘奥 > hiou\ ;
+怪異 > kaii\ ;
+都議 > togi\ ;
+意外 > igai\ ;
+比諭 > hiyu\ ;
+遺骸 > igai\ ;
+汚穢 > owai\ ;
+愚図 > guzu\ ;
+征衣 > seii\ ;
+情意 > joui\ ;
+流布 > rufu\ ;
+母語 > bogo\ ;
+遺香 > ikou\ ;
+野火 > nobi\ ;
+和字 > waji\ ;
+合歓 > nemu\ ;
+移動 > idou\ ;
+印綬 > inju\ ;
+加除 > kajo\ ;
+御茶 > ocha\ ;
+意嚮 > ikou\ ;
+遺風 > ifuu\ ;
+毀誉 > kiyo\ ;
+麻布 > mafu\ ;
+鼻下 > bika\ ;
+悪感 > okan\ ;
+悪意 > akui\ ;
+意向 > ikou\ ;
+移住 > ijuu\ ;
+虚位 > kyoi\ ;
+医者 > isha\ ;
+恵方 > ehou\ ;
+虚仮 > koke\ ;
+移乗 > ijou\ ;
+愛児 > aiji\ ;
+加里 > kari\ ;
+野次 > yaji\ ;
+沙汰 > sata\ ;
+秘儀 > higi\ ;
+助辞 > joji\ ;
+武運 > buun\ ;
+欧露 > ouro\ ;
+御簾 > misu\ ;
+悪寒 > okan\ ;
+危疑 > kigi\ ;
+味噌 > miso\ ;
+右方 > uhou\ ;
+印画 > inga\ ;
+廈門 > amoi\ ;
+秘事 > hiji\ ;
+汚点 > oten\ ;
+印璽 > inji\ ;
+毛羽 > keba\ ;
+禍因 > kain\ ;
+野暮 > yabo\ ;
+呵呵 > kaka\ ;
+同意 > doui\ ;
+怒気 > doki\ ;
+合意 > goui\ ;
+御礼 > orei\ ;
+波布 > habu\ ;
+御碗 > owan\ ;
+恣意 > shii\ ;
+葵花 > kika\ ;
+加護 > kago\ ;
+遺贈 > izou\ ;
+汚泥 > odei\ ;
+遺賢 > iken\ ;
+磁気 > jiki\ ;
+遺財 > izai\ ;
+石蓴 > aosa\ ;
+御盆 > obon\ ;
+悲喜 > hiki\ ;
+汚水 > osui\ ;
+反故 > hogo\ ;
+弊衣 > heii\ ;
+悲哀 > hiai\ ;
+遠路 > enro\ ;
+医界 > ikai\ ;
+遺誡 > ikai\ ;
+医用 > iyou\ ;
+遺訓 > ikun\ ;
+南無 > namu\ ;
+征矢 > soya\ ;
+追風 > oite\ ;
+悪化 > akka\ ;
+気炎 > kien\ ;
+砒素 > hiso\ ;
+怪我 > kega\ ;
+右岸 > ugan\ ;
+麾下 > kika\ ;
+永永 > eiei\ ;
+汚染 > osen\ ;
+恩威 > on''i\ ;
+祇園 > gion\ ;
+古希 > koki\ ;
+荷駄 > nida\ ;
+危機 > kiki\ ;
+気温 > kion\ ;
+徒爾 > toji\ ;
+思惟 > shii\ ;
+微温 > bion\ ;
+過誤 > kago\ ;
+古字 > koji\ ;
+合図 > aizu\ ;
+破瓜 > haka\ ;
+遺著 > icho\ ;
+幾重 > ikue\ ;
+汚損 > oson\ ;
+吏員 > riin\ ;
+厭悪 > en''o\ ;
+可塑 > kaso\ ;
+去年 > kozo\ ;
+遺草 > isou\ ;
+莫迦 > baka\ ;
+遺芳 > ihou\ ;
+名医 > meii\ ;
+厚意 > koui\ ;
+吏務 > rimu\ ;
+歌舞 > kabu\ ;
+迂遠 > uen\ ;
+微意 > bii\ ;
+叙位 > joi\ ;
+迂路 > uro\ ;
+得手 > ete\ ;
+気宇 > kiu\ ;
+差違 > sai\ ;
+医家 > ika\ ;
+八重 > yae\ ;
+医員 > iin\ ;
+遺棄 > iki\ ;
+医務 > imu\ ;
+医事 > iji\ ;
+遺愛 > iai\ ;
+遺影 > iei\ ;
+部位 > bui\ ;
+武威 > bui\ ;
+遺孤 > iko\ ;
+差異 > sai\ ;
+異音 > ion\ ;
+遺児 > iji\ ;
+違和 > iwa\ ;
+遺事 > iji\ ;
+希有 > keu\ ;
+迂愚 > ugu\ ;
+欧亜 > oua\ ;
+次位 > jii\ ;
+次亜 > jia\ ;
+眉宇 > biu\ ;
+辞意 > jii\ ;
+異議 > igi\ ;
+辞彙 > jii\ ;
+居間 > ima\ ;
+異義 > igi\ ;
+帰依 > kie\ ;
+香魚 > ayu\ ;
+機位 > kii\ ;
+似非 > ese\ ;
+尾羽 > oha\ ;
+異父 > ifu\ ;
+会陰 > ein\ ;
+位記 > iki\ ;
+異母 > ibo\ ;
+亜麻 > ama\ ;
+以遠 > ien\ ;
+伊語 > igo\ ;
+自慰 > jii\ ;
+安芸 > aki\ ;
+亜鉛 > aen\ ;
+甲斐 > kai\ ;
+畏懼 > iku\ ;
+畏怖 > ifu\ ;
+尾根 > one\ ;
+画意 > gai\ ;
+椅子 > isu\ ;
+異図 > ito\ ;
+異化 > ika\ ;
+胃炎 > ien\ ;
+位次 > iji\ ;
+依怙 > eko\ ;
+亜科 > aka\ ;
+余意 > yoi\ ;
+仮有 > keu\ ;
+侍医 > jii\ ;
+云為 > uni\ ;
+依估 > eko\ ;
+亜欧 > aou\ ;
+以後 > igo\ ;
+以往 > iou\ ;
+他意 > tai\ ;
+賀意 > gai\ ;
+有無 > umu\ ;
+貴意 > kii\ ;
+会厭 > een\ ;
+栄位 > eii\ ;
+井戸 > ido\ ;
+非違 > hii\ ;
+夜雨 > yau\ ;
+多雨 > tau\ ;
+二尉 > nii\ ;
+雨露 > uro\ ;
+以下 > ika\ ;
+墨魚 > ika\ ;
+不意 > fui\ ;
+下意 > kai\ ;
+二位 > nii\ ;
+威武 > ibu\ ;
+有卦 > uke\ ;
+王位 > oui\ ;
+羅宇 > rao\ ;
+羽化 > uka\ ;
+絵馬 > ema\ ;
+委棄 > iki\ ;
+奇異 > kii\ ;
+下位 > kai\ ;
+阿諛 > ayu\ ;
+威儀 > igi\ ;
+壊疽 > eso\ ;
+烏賊 > ika\ ;
+委員 > iin\ ;
+雨気 > uki\ ;
+委付 > ifu\ ;
+雨期 > uki\ ;
+語意 > goi\ ;
+語彙 > goi\ ;
+女医 > joi\ ;
+如何 > dou\ ;
+雨後 > ugo\ ;
+故意 > koi\ ;
+無為 > mui\ ;
+補遺 > hoi\ ;
+雨季 > uki\ ;
+緯度 > ido\ ;
+阿比 > abi\ ;
+維持 > iji\ ;
+雲丹 > uni\ ;
+無意 > mui\ ;
+阿字 > aji\ ;
+阿媽 > ama\ ;
+灰汁 > aku\ ;
+絵図 > ezu\ ;
+見得 > mie\ ;
+阿吽 > aun\ ;
+無位 > mui\ ;
+滋雨 > jiu\ ;
+囲碁 > igo\ ;
+紆余 > uyo\ ;
+衣架 > ika\ ;
+慈雨 > jiu\ ;
+海髪 > ogo\ ;
+意馬 > iba\ ;
+図会 > zue\ ;
+所為 > sei\ ;
+悪露 > oro\ ;
+海胆 > uni\ ;
+海老 > ebi\ ;
+我意 > gai\ ;
+麻衣 > mai\ ;
+意義 > igi\ ;
+蝦夷 > ezo\ ;
+硫黄 > iou\ ;
+慰撫 > ibu\ ;
+微雨 > biu\ ;
+意気 > iki\ ;
+鋭意 > eii\ ;
+穢多 > eta\ ;
+医院 > iin\ ;
+穢土 > edo\ ;
+右縁 > uen\ ;
+慰安 > ian\ ;
+十重 > toe\ ;
+愚意 > gui\ ;
+海女 > ama\ ;
+意地 > iji\ ;
+意図 > ito\ ;
+右派 > uha\ ;
+意味 > imi\ ;
+萎靡 > ibi\ ;
+海人 > ama\ ;
+医科 > ika\ ;
+年魚 > ayu\ ;
+句意 > kui\ ;
+古意 > koi\ ;
+遺詠 > iei\ ;
+示威 > jii\ ;
+江戸 > edo\ ;
+伊井 > ii\ ;
+嗚呼 > aa\ ;
+軖 > tsumugikuruma\ ;
+糎 > senchimeitoru\ ;
+粨 > hekutomeetoru\ ;
+爫 > tsumekanmuri\ ;
+忄 > ritsushinben\ ;
+志 > kokorozashi\ ;
+政 > matsurigoto\ ;
+鶎 > kikuitadaki\ ;
+粍 > mirimeitoru\ ;
+粁 > kiromeitoru\ ;
+籵 > dekameetoru\ ;
+竰 > senchiritto\ ;
+竡 > hekutoritto\ ;
+竓 > miririttoru\ ;
+竏 > kirorittoru\ ;
+瓰 > deshiguramu\ ;
+己 > tsuchinoto\ ;
+屡 > shibashiba\ ;
+謀 > hakarigoto\ ;
+熟 > tsukudzuku\ ;
+嘴 > kuchibashi\ ;
+々 > kurikaeshi\ ;
+酛 > sakenomoto\ ;
+詔 > mikotonori\ ;
+蝟 > harinezumi\ ;
+萙 > kutabireru\ ;
+竕 > deshiritto\ ;
+甅 > senchigura\ ;
+瓸 > hekutogura\ ;
+瓱 > miriguramu\ ;
+瓩 > kiroguramu\ ;
+瓧 > dekaguramu\ ;
+擅 > hoshiimama\ ;
+勅 > mikotonori\ ;
+倩 > tsuratsura\ ;
+幻 > maboroshi\ ;
+屍 > shikabane\ ;
+孤 > minashigo\ ;
+猪 > inoshishi\ ;
+唇 > kuchibiru\ ;
+檣 > hobashira\ ;
+橘 > tachibana\ ;
+兵 > tsuwamono\ ;
+銀 > shirogane\ ;
+邪 > yokoshima\ ;
+鯐 > subashiri\ ;
+鮗 > konoshiro\ ;
+阝 > kozatohen\ ;
+踝 > kurubushi\ ;
+裃 > kamishimo\ ;
+衤 > koromohen\ ;
+竍 > dekaritto\ ;
+犭 > kemonohen\ ;
+椴 > todomatsu\ ;
+嵙 > yamashina\ ;
+尸 > shikabane\ ;
+凩 > kogarashi\ ;
+亥 > inoshishi\ ;
+弱 > nayonayo\ ;
+蹲 > tsukubai\ ;
+姑 > shuutome\ ;
+塊 > katamari\ ;
+堤 > tsutsumi\ ;
+鼓 > tsudzumi\ ;
+源 > minamoto\ ;
+鶏 > niwatori\ ;
+叢 > kusamura\ ;
+印 > shirushi\ ;
+魂 > tamashii\ ;
+腸 > harawata\ ;
+杯 > sakazuki\ ;
+雷 > kaminari\ ;
+雁 > karigane\ ;
+暁 > akatsuki\ ;
+紫 > murasaki\ ;
+掌 > tenohira\ ;
+抑 > somosomo\ ;
+懐 > futokoro\ ;
+黛 > mayuzumi\ ;
+鱩 > hatahata\ ;
+鰰 > hatahata\ ;
+鯑 > kazunoko\ ;
+魁 > sakigake\ ;
+鬣 > tategami\ ;
+餞 > hanamuke\ ;
+頑 > katakuna\ ;
+隼 > hayabusa\ ;
+陵 > misasagi\ ;
+閊 > tsukaeru\ ;
+鋸 > nokogiri\ ;
+躾 > shitsuke\ ;
+諺 > kotowaza\ ;
+褌 > fundoshi\ ;
+蛤 > hamaguri\ ;
+蒜 > nin''niku\ ;
+聾 > mimishii\ ;
+綴 > tsudzuri\ ;
+篁 > takamura\ ;
+筍 > takenoko\ ;
+碑 > ishibumi\ ;
+癸 > mizunoto\ ;
+漣 > sazanami\ ;
+楠 > kusunoki\ ;
+巫 > kan''nagi\ ;
+寿 > kotobuki\ ;
+圕 > toshokan\ ;
+形 > katachi\ ;
+轍 > wadachi\ ;
+巷 > chimata\ ;
+跣 > hadashi\ ;
+趣 > omomuki\ ;
+局 > tsubone\ ;
+寧 > mushiro\ ;
+獺 > kawauso\ ;
+狐 > kitsune\ ;
+嫂 > aniyome\ ;
+話 > hanashi\ ;
+燕 > tsubame\ ;
+滴 > shizuku\ ;
+湖 > mizuumi\ ;
+剣 > tsurugi\ ;
+凝 > shikori\ ;
+冠 > kanmuri\ ;
+椿 > tsubaki\ ;
+梟 > fukurou\ ;
+頂 > itadaki\ ;
+柱 > hashira\ ;
+俎 > manaita\ ;
+林 > hayashi\ ;
+侍 > samurai\ ;
+羊 > hitsuji\ ;
+東 > higashi\ ;
+昔 > mukashi\ ;
+経 > tateito\ ;
+筵 > mushiro\ ;
+錦 > nishiki\ ;
+私 > watashi\ ;
+祭 > matsuri\ ;
+社 > yashiro\ ;
+確 > tashika\ ;
+邸 > yashiki\ ;
+齲 > mushiba\ ;
+黥 > irezumi\ ;
+鶫 > tsugumi\ ;
+鵤 > ikaruga\ ;
+鵆 > chidori\ ;
+鰘 > muroaji\ ;
+鯳 > sukesou\ ;
+鬘 > katsura\ ;
+雫 > shizuku\ ;
+鎹 > kasugai\ ;
+鋩 > kissaki\ ;
+鋒 > kissaki\ ;
+銯 > kasugai\ ;
+蹄 > hidzume\ ;
+謬 > ayamari\ ;
+誼 > yoshimi\ ;
+誮 > yasashi\ ;
+襅 > chihaya\ ;
+蠎 > uwabami\ ;
+蝮 > mamushi\ ;
+蜆 > shijimi\ ;
+虱 > shirami\ ;
+蘰 > katsura\ ;
+蕾 > tsubomi\ ;
+蓆 > mushiro\ ;
+艀 > hashike\ ;
+聢 > shikato\ ;
+翼 > tsubasa\ ;
+籡 > shinshi\ ;
+礫 > tsubute\ ;
+礎 > ishizue\ ;
+睫 > matsuge\ ;
+甦 > yomigae\ ;
+牜 > ushihen\ ;
+毮 > mushiru\ ;
+毟 > mushiru\ ;
+楿 > katsura\ ;
+棗 > natsume\ ;
+梻 > shikimi\ ;
+柊 > hiiragi\ ;
+曙 > akebono\ ;
+晒 > sarashi\ ;
+旁 > tsukuri\ ;
+挘 > mushiru\ ;
+拳 > kobushi\ ;
+怺 > koraeru\ ;
+徤 > takeshi\ ;
+巽 > tatsumi\ ;
+壬 > mizunoe\ ;
+嚏 > kushami\ ;
+噺 > hanashi\ ;
+俤 > omokage\ ;
+丼 > donburi\ ;
+〃 > onajiku\ ;
+瞼 > mabuta\ ;
+辷 > suberu\ ;
+瞳 > hitomi\ ;
+輩 > yakara\ ;
+盲 > meshii\ ;
+車 > kuruma\ ;
+序 > tsuide\ ;
+皆 > min''na\ ;
+幕 > tobari\ ;
+帳 > tobari\ ;
+帝 > mikado\ ;
+左 > hidari\ ;
+疾 > shitsu\ ;
+畳 > tatami\ ;
+畠 > hatake\ ;
+畑 > hatake\ ;
+瓦 > kawara\ ;
+岬 > misaki\ ;
+届 > todoke\ ;
+尊 > mikoto\ ;
+宝 > takara\ ;
+獣 > kemono\ ;
+狼 > ookami\ ;
+独 > doitsu\ ;
+嫉 > shitsu\ ;
+誠 > makoto\ ;
+証 > akashi\ ;
+父 > chichi\ ;
+訛 > namari\ ;
+娘 > musume\ ;
+姿 > sugata\ ;
+妾 > warawa\ ;
+妹 > imouto\ ;
+要 > kaname\ ;
+襷 > tasuki\ ;
+煙 > kemuri\ ;
+襖 > fusuma\ ;
+失 > shitsu\ ;
+裸 > hadaka\ ;
+袴 > hakama\ ;
+袋 > fukuro\ ;
+衣 > koromo\ ;
+執 > shitsu\ ;
+濕 > shitsu\ ;
+蟋 > shitsu\ ;
+埃 > hokori\ ;
+蟀 > shutsu\ ;
+鼬 > itachi\ ;
+鼠 > nezumi\ ;
+土 > tsuchi\ ;
+漆 > urushi\ ;
+蛹 > sanagi\ ;
+蛙 > kawazu\ ;
+湿 > shitsu\ ;
+器 > utsuwa\ ;
+港 > minato\ ;
+薬 > kusuri\ ;
+薪 > takigi\ ;
+涙 > namida\ ;
+薇 > zenmai\ ;
+薄 > susuki\ ;
+鴉 > karasu\ ;
+叱 > shitsu\ ;
+厨 > kuriya\ ;
+卸 > oroshi\ ;
+卵 > tamago\ ;
+歪 > ibitsu\ ;
+魚 > sakana\ ;
+南 > minami\ ;
+匠 > takumi\ ;
+櫻 > sakura\ ;
+苺 > ichigo\ ;
+勢 > hazumi\ ;
+檜 > hinoki\ ;
+舅 > shuuto\ ;
+榊 > sakaki\ ;
+光 > hikari\ ;
+館 > yakata\ ;
+肴 > sakana\ ;
+桜 > sakura\ ;
+候 > sourou\ ;
+響 > hibiki\ ;
+柳 > yanagi\ ;
+俥 > kuruma\ ;
+信 > makoto\ ;
+俄 > niwaka\ ;
+係 > kakari\ ;
+便 > yosuga\ ;
+枕 > makura\ ;
+机 > tsukue\ ;
+仏 > hotoke\ ;
+曇 > kumori\ ;
+雀 > suzume\ ;
+京 > miyako\ ;
+隣 > tonari\ ;
+乳 > chichi\ ;
+乙 > kinoto\ ;
+乍 > nagara\ ;
+万 > yorozu\ ;
+七 > shichi\ ;
+縁 > yosuga\ ;
+丁 > hinoto\ ;
+緑 > midori\ ;
+絣 > kasuri\ ;
+絆 > kizuna\ ;
+簾 > sudare\ ;
+鏡 > kagami\ ;
+鎖 > kusari\ ;
+筒 > tsutsu\ ;
+捌 > sabaki\ ;
+鋼 > hagane\ ;
+童 > warabe\ ;
+鋏 > hasami\ ;
+銃 > tsutsu\ ;
+鉛 > namari\ ;
+扉 > tobira\ ;
+所 > tokoro\ ;
+都 > miyako\ ;
+悉 > shitsu\ ;
+齦 > haguki\ ;
+鼈 > suppon\ ;
+黜 > chutsu\ ;
+麩 > fusuma\ ;
+麓 > fumoto\ ;
+鵥 > kakesu\ ;
+鴬 > uguisu\ ;
+鴎 > kamome\ ;
+鱸 > suzuki\ ;
+鱰 > shiira\ ;
+鱪 > shiira\ ;
+鰹 > katsuo\ ;
+鰯 > iwashi\ ;
+鰮 > iwashi\ ;
+鰚 > haraka\ ;
+鰊 > nishin\ ;
+鰆 > sawara\ ;
+鯱 > shachi\ ;
+鯰 > namazu\ ;
+鯨 > kujira\ ;
+鯣 > surume\ ;
+鮪 > maguro\ ;
+鮖 > kajika\ ;
+鮃 > hirame\ ;
+魸 > namazu\ ;
+騭 > shitsu\ ;
+颪 > oroshi\ ;
+鞐 > kohaze\ ;
+霞 > kasumi\ ;
+霙 > mizore\ ;
+雛 > hiyoko\ ;
+隲 > shitsu\ ;
+隰 > shitsu\ ;
+鑢 > yasuri\ ;
+鑕 > shitsu\ ;
+鎺 > habaki\ ;
+錺 > kazari\ ;
+銍 > chitsu\ ;
+銊 > shutsu\ ;
+鉥 > shutsu\ ;
+鉋 > kan''na\ ;
+鈨 > habaki\ ;
+醪 > moromi\ ;
+郅 > shitsu\ ;
+遖 > appare\ ;
+迚 > totemo\ ;
+軈 > yagate\ ;
+軅 > yagate\ ;
+躻 > utsuke\ ;
+躮 > segare\ ;
+踵 > kakato\ ;
+賉 > shutsu\ ;
+貭 > shitsu\ ;
+豑 > chitsu\ ;
+訁 > gonben\ ;
+袠 > chitsu\ ;
+袟 > chitsu\ ;
+衾 > fusuma\ ;
+蠍 > sasori\ ;
+蟄 > chitsu\ ;
+蝨 > shitsu\ ;
+蛍 > hotaru\ ;
+薺 > nazuna\ ;
+蕨 > warabi\ ;
+蔶 > sonoko\ ;
+蓬 > yomogi\ ;
+蒺 > shitsu\ ;
+蒅 > sukumo\ ;
+蒁 > shutsu\ ;
+莨 > tabako\ ;
+茸 > kinoko\ ;
+膣 > chitsu\ ;
+膠 > nikawa\ ;
+腟 > chitsu\ ;
+纃 > kasuri\ ;
+縅 > odoshi\ ;
+緕 > kasuri\ ;
+絀 > chutsu\ ;
+糘 > sukumo\ ;
+糒 > hoshii\ ;
+粭 > sukumo\ ;
+笂 > utsubo\ ;
+竈 > kamado\ ;
+窒 > chitsu\ ;
+窋 > chutsu\ ;
+秩 > chitsu\ ;
+秤 > hakari\ ;
+禊 > misogi\ ;
+祑 > chitsu\ ;
+礩 > shitsu\ ;
+硲 > hazama\ ;
+砦 > toride\ ;
+甩 > shutsu\ ;
+瓼 > sarake\ ;
+璱 > shitsu\ ;
+瑟 > shitsu\ ;
+狸 > tanuki\ ;
+牃 > ouchou\ ;
+烏 > karasu\ ;
+渚 > nagisa\ ;
+涎 > yodare\ ;
+泏 > chutsu\ ;
+汢 > tsuchi\ ;
+汀 > migiwa\ ;
+氵 > sanzui\ ;
+橙 > daidai\ ;
+樵 > kikori\ ;
+樮 > hokuso\ ;
+楔 > kusabi\ ;
+楊 > yanagi\ ;
+椹 > sawara\ ;
+椪 > kunugi\ ;
+椡 > kunugi\ ;
+椛 > momiji\ ;
+椚 > kunugi\ ;
+梺 > fumoto\ ;
+桼 > shitsu\ ;
+桎 > shitsu\ ;
+栞 > shiori\ ;
+柒 > shitsu\ ;
+李 > sumomo\ ;
+暦 > koyomi\ ;
+晊 > shitsu\ ;
+昴 > subaru\ ;
+摔 > shutsu\ ;
+挃 > chitsu\ ;
+抶 > chitsu\ ;
+扖 > hameru\ ;
+憖 > namaji\ ;
+愱 > shitsu\ ;
+彠 > kuwaku\ ;
+彏 > kuwaku\ ;
+彍 > kuwaku\ ;
+彉 > kuwaku\ ;
+廓 > kuruwa\ ;
+庢 > chitsu\ ;
+幟 > nobori\ ;
+幉 > tazuna\ ;
+帙 > chitsu\ ;
+嵐 > arashi\ ;
+崒 > shutsu\ ;
+岀 > shutsu\ ;
+寡 > yamome\ ;
+嫟 > jiyuku\ ;
+妷 > chitsu\ ;
+墎 > kuwaku\ ;
+堲 > shitsu\ ;
+堛 > hiyoku\ ;
+圷 > akutsu\ ;
+咰 > shutsu\ ;
+后 > kisaki\ ;
+叺 > kamasu\ ;
+厠 > kawaya\ ;
+厔 > shitsu\ ;
+厀 > shitsu\ ;
+卛 > shutsu\ ;
+劕 > shitsu\ ;
+兜 > kabuto\ ;
+儨 > shitsu\ ;
+偪 > hiyoku\ ;
+倭 > yamato\ ;
+侄 > shitsu\ ;
+伡 > kuruma\ ;
+仝 > doujou\ ;
+仇 > kataki\ ;
+〒 > yuubin\ ;
+述 > jutsu\ ;
+必 > hitsu\ ;
+辻 > tsuji\ ;
+徹 > tetsu\ ;
+瞥 > betsu\ ;
+後 > nochi\ ;
+律 > ritsu\ ;
+着 > chaku\ ;
+式 > shiki\ ;
+皺 > shiwa\ ;
+躅 > choku\ ;
+百 > hyaku\ ;
+白 > shiro\ ;
+發 > hotsu\ ;
+発 > hatsu\ ;
+幸 > sachi\ ;
+年 > toshi\ ;
+癪 > shaku\ ;
+巴 > tomoe\ ;
+病 > yamai\ ;
+略 > ryaku\ ;
+畢 > hitsu\ ;
+畜 > chiku\ ;
+町 > machi\ ;
+男 > otoko\ ;
+由 > yoshi\ ;
+島 > shima\ ;
+質 > tachi\ ;
+岸 > kishi\ ;
+屈 > kutsu\ ;
+尻 > shiri\ ;
+尺 > shaku\ ;
+實 > jitsu\ ;
+察 > satsu\ ;
+密 > mitsu\ ;
+宴 > utage\ ;
+客 > kyaku\ ;
+率 > ritsu\ ;
+識 > shiki\ ;
+猾 > katsu\ ;
+説 > setsu\ ;
+詰 > kitsu\ ;
+爺 > jijii\ ;
+爵 > shaku\ ;
+設 > setsu\ ;
+爪 > tsume\ ;
+訣 > ketsu\ ;
+觸 > shoku\ ;
+燭 > shoku\ ;
+触 > shoku\ ;
+角 > tsuno\ ;
+妻 > tsuma\ ;
+熱 > netsu\ ;
+西 > nishi\ ;
+奴 > yatsu\ ;
+奪 > datsu\ ;
+夏 > natsu\ ;
+烈 > retsu\ ;
+裂 > retsu\ ;
+袷 > awase\ ;
+炎 > honoo\ ;
+境 > sakai\ ;
+灼 > shaku\ ;
+塵 > chiri\ ;
+塚 > tsuka\ ;
+街 > machi\ ;
+基 > motoi\ ;
+濶 > katsu\ ;
+埒 > rachi\ ;
+城 > shiro\ ;
+齢 > yowai\ ;
+蝕 > shoku\ ;
+潔 > ketsu\ ;
+鼾 > ibiki\ ;
+蜂 > hachi\ ;
+蜀 > shoku\ ;
+黐 > mochi\ ;
+滑 > katsu\ ;
+滅 > metsu\ ;
+蚕 > kaiko\ ;
+溌 > hatsu\ ;
+鹿 > shika\ ;
+虫 > mushi\ ;
+虞 > osore\ ;
+噂 > uwasa\ ;
+渇 > katsu\ ;
+淵 > fuchi\ ;
+鷲 > washi\ ;
+淑 > shuku\ ;
+嗇 > shoku\ ;
+鶴 > tsuru\ ;
+薔 > shoku\ ;
+喇 > ratsu\ ;
+啜 > setsu\ ;
+唾 > tsuba\ ;
+活 > katsu\ ;
+蔑 > betsu\ ;
+哲 > tetsu\ ;
+泉 > izumi\ ;
+蓄 > chiku\ ;
+油 > abura\ ;
+没 > botsu\ ;
+咄 > totsu\ ;
+決 > ketsu\ ;
+葦 > yoshi\ ;
+著 > chaku\ ;
+汁 > tsuyu\ ;
+鰌 > dojou\ ;
+吉 > kichi\ ;
+叭 > hatsu\ ;
+口 > kuchi\ ;
+叔 > shuku\ ;
+殺 > satsu\ ;
+殖 > shoku\ ;
+却 > kyaku\ ;
+単 > hitoe\ ;
+卒 > sotsu\ ;
+匹 > hitsu\ ;
+次 > tsugi\ ;
+勿 > mochi\ ;
+髮 > hatsu\ ;
+櫛 > kushi\ ;
+劣 > retsu\ ;
+芝 > shiba\ ;
+力 > ryoku\ ;
+艶 > tsuya\ ;
+橋 > hashi\ ;
+刹 > setsu\ ;
+刷 > satsu\ ;
+樫 > kashi\ ;
+別 > betsu\ ;
+初 > hatsu\ ;
+列 > retsu\ ;
+樒 > mitsu\ ;
+舌 > shita\ ;
+切 > setsu\ ;
+刃 > yaiba\ ;
+册 > satsu\ ;
+冊 > satsu\ ;
+腰 > koshi\ ;
+八 > yatsu\ ;
+兎 > usagi\ ;
+兀 > kotsu\ ;
+脱 > datsu\ ;
+植 > shoku\ ;
+脈 > myaku\ ;
+餅 > mochi\ ;
+飾 > shoku\ ;
+飯 > meshi\ ;
+食 > shoku\ ;
+梨 > nashi\ ;
+梢 > kozue\ ;
+梓 > azusa\ ;
+傑 > ketsu\ ;
+肅 > shuku\ ;
+職 > shoku\ ;
+額 > hitai\ ;
+借 > shaku\ ;
+頁 > peiji\ ;
+柄 > tsuka\ ;
+翁 > okina\ ;
+鞭 > muchi\ ;
+鞄 > kaban\ ;
+松 > matsu\ ;
+靴 > kutsu\ ;
+罰 > batsu\ ;
+罪 > tsumi\ ;
+束 > tsuka\ ;
+佛 > butsu\ ;
+杓 > shaku\ ;
+位 > kurai\ ;
+缺 > ketsu\ ;
+伸 > noshi\ ;
+露 > tsuyu\ ;
+霰 > arare\ ;
+末 > matsu\ ;
+霜 > shimo\ ;
+月 > tsuki\ ;
+曲 > kyoku\ ;
+雜 > zatsu\ ;
+仙 > sento\ ;
+雑 > zatsu\ ;
+雇 > yatoi\ ;
+乾 > hoshi\ ;
+乞 > kotsu\ ;
+主 > nushi\ ;
+縮 > shuku\ ;
+星 > hoshi\ ;
+縞 > shima\ ;
+下 > shita\ ;
+綱 > tsuna\ ;
+絶 > zetsu\ ;
+結 > ketsu\ ;
+終 > owari\ ;
+操 > misao\ ;
+撮 > satsu\ ;
+鐵 > tetsu\ ;
+鐡 > tetsu\ ;
+築 > chiku\ ;
+節 > bushi\ ;
+箸 > hashi\ ;
+接 > setsu\ ;
+掠 > ryaku\ ;
+掘 > kutsu\ ;
+箒 > houki\ ;
+捩 > retsu\ ;
+答 > kotae\ ;
+拶 > satsu\ ;
+拭 > shiki\ ;
+括 > katsu\ ;
+拙 > setsu\ ;
+拔 > batsu\ ;
+立 > ritsu\ ;
+竊 > setsu\ ;
+拂 > futsu\ ;
+抜 > batsu\ ;
+抉 > ketsu\ ;
+突 > totsu\ ;
+穴 > ketsu\ ;
+鉢 > hachi\ ;
+払 > futsu\ ;
+鉄 > tetsu\ ;
+截 > setsu\ ;
+戦 > ikusa\ ;
+釋 > shaku\ ;
+釈 > shaku\ ;
+祝 > shuku\ ;
+酌 > shaku\ ;
+慄 > ritsu\ ;
+惚 > kotsu\ ;
+達 > tachi\ ;
+道 > michi\ ;
+逹 > tatsu\ ;
+逐 > chiku\ ;
+逆 > gyaku\ ;
+忽 > kotsu\ ;
+龞 > betsu\ ;
+齧 > ketsu\ ;
+齕 > kotsu\ ;
+齃 > katsu\ ;
+鼿 > gotsu\ ;
+鼎 > kanae\ ;
+黻 > futsu\ ;
+黠 > katsu\ ;
+麹 > kouji\ ;
+鷫 > shuku\ ;
+鷩 > hetsu\ ;
+鶻 > kotsu\ ;
+鶡 > katsu\ ;
+鶍 > isuka\ ;
+鶉 > uzura\ ;
+鵓 > hotsu\ ;
+鴰 > katsu\ ;
+鴫 > shigi\ ;
+鴃 > ketsu\ ;
+鴂 > ketsu\ ;
+鲾 > hyaku\ ;
+鲬 > kochi\ ;
+鱗 > uroko\ ;
+鱐 > shuku\ ;
+鱉 > betsu\ ;
+鱁 > chiku\ ;
+鰻 > unagi\ ;
+鰒 > awabi\ ;
+鰏 > hyoku\ ;
+鰍 > inada\ ;
+鰉 > higai\ ;
+鰈 > karei\ ;
+鯲 > dojou\ ;
+鯒 > kochi\ ;
+鯏 > asari\ ;
+鮭 > shake\ ;
+鮨 > sushi\ ;
+鮚 > kitsu\ ;
+鮓 > sushi\ ;
+鮑 > awabi\ ;
+鮅 > hitsu\ ;
+鮄 > futsu\ ;
+魩 > hachi\ ;
+魃 > batsu\ ;
+鬻 > shuku\ ;
+鬠 > katsu\ ;
+鬎 > ratsu\ ;
+髺 > gatsu\ ;
+髴 > futsu\ ;
+驖 > tetsu\ ;
+驌 > shuku\ ;
+驋 > hatsu\ ;
+騄 > ryoku\ ;
+駜 > hitsu\ ;
+駃 > ketsu\ ;
+馹 > jitsu\ ;
+馝 > hitsu\ ;
+馛 > hatsu\ ;
+饆 > hitsu\ ;
+餮 > tetsu\ ;
+餟 > tetsu\ ;
+餝 > shoku\ ;
+餑 > hotsu\ ;
+飶 > hitsu\ ;
+飭 > choku\ ;
+颳 > katsu\ ;
+颰 > hatsu\ ;
+颯 > satsu\ ;
+顣 > shuku\ ;
+頡 > kitsu\ ;
+頊 > kyoku\ ;
+韤 > batsu\ ;
+韡 > sakan\ ;
+韠 > hitsu\ ;
+韍 > futsu\ ;
+韈 > betsu\ ;
+韃 > datsu\ ;
+鞸 > hitsu\ ;
+鞨 > katsu\ ;
+靺 > matsu\ ;
+靹 > ketsu\ ;
+靨 > ekubo\ ;
+隉 > getsu\ ;
+陟 > choku\ ;
+阢 > gotsu\ ;
+闥 > tatsu\ ;
+闕 > ketsu\ ;
+闑 > getsu\ ;
+闋 > ketsu\ ;
+闊 > katsu\ ;
+閦 > shuku\ ;
+閥 > batsu\ ;
+钃 > shoku\ ;
+鑠 > shaku\ ;
+鐽 > tatsu\ ;
+鐯 > shaku\ ;
+鐍 > tetsu\ ;
+鏺 > hatsu\ ;
+鏉 > shyuu\ ;
+鏅 > shyuu\ ;
+鎧 > yoroi\ ;
+鎋 > katsu\ ;
+鍥 > ketsu\ ;
+鍘 > satsu\ ;
+鍔 > tsuba\ ;
+錨 > ikari\ ;
+錘 > tsumu\ ;
+鋨 > tetsu\ ;
+鋝 > retsu\ ;
+鋍 > hotsu\ ;
+銽 > katsu\ ;
+銫 > shoku\ ;
+銕 > tetsu\ ;
+鉽 > shuku\ ;
+鉘 > futsu\ ;
+鈺 > gyoku\ ;
+鈸 > hatsu\ ;
+鈯 > totsu\ ;
+鈤 > jitsu\ ;
+鈅 > getsu\ ;
+釰 > jitsu\ ;
+釟 > hatsu\ ;
+醱 > hatsu\ ;
+醗 > hatsu\ ;
+醔 > shyuu\ ;
+醊 > tetsu\ ;
+醁 > ryoku\ ;
+酫 > setsu\ ;
+酦 > hatsu\ ;
+鄐 > chiku\ ;
+邲 > hitsu\ ;
+逼 > hitsu\ ;
+逯 > ryoku\ ;
+适 > katsu\ ;
+迾 > retsu\ ;
+迭 > tetsu\ ;
+达 > tatsu\ ;
+辶 > chaku\ ;
+辵 > chaku\ ;
+辰 > tatsu\ ;
+辥 > setsu\ ;
+辣 > ratsu\ ;
+辜 > tsumi\ ;
+轕 > katsu\ ;
+轄 > katsu\ ;
+輿 > koshi\ ;
+輵 > katsu\ ;
+輟 > tetsu\ ;
+輂 > kyoku\ ;
+軾 > shoku\ ;
+軷 > hatsu\ ;
+軏 > getsu\ ;
+軄 > shoku\ ;
+躵 > nerau\ ;
+躩 > kyaku\ ;
+躂 > tatsu\ ;
+蹶 > ketsu\ ;
+蹩 > hetsu\ ;
+蹜 > shuku\ ;
+蹙 > shuku\ ;
+蹕 > hitsu\ ;
+踧 > shuku\ ;
+踋 > kyaku\ ;
+跼 > kyoku\ ;
+跛 > bikko\ ;
+跌 > tetsu\ ;
+跋 > batsu\ ;
+跀 > getsu\ ;
+趹 > ketsu\ ;
+趷 > kotsu\ ;
+趞 > shaku\ ;
+趐 > ketsu\ ;
+赩 > kyoku\ ;
+贖 > shoku\ ;
+賡 > shoku\ ;
+貜 > kyaku\ ;
+豁 > katsu\ ;
+讞 > getsu\ ;
+譎 > kitsu\ ;
+謖 > shoku\ ;
+謔 > gyaku\ ;
+謐 > hitsu\ ;
+諔 > shuku\ ;
+誳 > kutsu\ ;
+說 > setsu\ ;
+誖 > hotsu\ ;
+詧 > satsu\ ;
+詘 > kutsu\ ;
+訥 > totsu\ ;
+訖 > kitsu\ ;
+訐 > ketsu\ ;
+觱 > hitsu\ ;
+觖 > ketsu\ ;
+覕 > betsu\ ;
+襭 > ketsu\ ;
+襪 > betsu\ ;
+襡 > shoku\ ;
+襒 > hetsu\ ;
+襏 > hatsu\ ;
+襍 > zatsu\ ;
+褻 > setsu\ ;
+褐 > katsu\ ;
+褄 > tsuma\ ;
+裰 > tatsu\ ;
+袺 > ketsu\ ;
+袜 > batsu\ ;
+袚 > hatsu\ ;
+衵 > jitsu\ ;
+衋 > kyoku\ ;
+衊 > betsu\ ;
+蠼 > kyaku\ ;
+蠞 > setsu\ ;
+蠛 > betsu\ ;
+蠘 > setsu\ ;
+蠋 > shoku\ ;
+蟙 > shoku\ ;
+蝲 > ratsu\ ;
+蝎 > katsu\ ;
+蜜 > mitsu\ ;
+蜇 > tetsu\ ;
+蛥 > setsu\ ;
+蛣 > kitsu\ ;
+蛞 > katsu\ ;
+蛚 > retsu\ ;
+虐 > gyaku\ ;
+蘖 > getsu\ ;
+藜 > akaza\ ;
+藚 > shoku\ ;
+薩 > satsu\ ;
+薥 > shoku\ ;
+薛 > setsu\ ;
+薘 > tatsu\ ;
+薊 > azami\ ;
+蕟 > hitsu\ ;
+蕝 > setsu\ ;
+蕀 > kyoku\ ;
+蔦 > tsuta\ ;
+蔤 > bitsu\ ;
+蔎 > setsu\ ;
+蓿 > shuku\ ;
+蓽 > hitsu\ ;
+蓇 > kotsu\ ;
+葧 > hotsu\ ;
+葜 > katsu\ ;
+葖 > totsu\ ;
+葎 > ritsu\ ;
+菽 > shuku\ ;
+菝 > hatsu\ ;
+菉 > ryoku\ ;
+莭 > setsu\ ;
+莂 > hetsu\ ;
+荸 > hotsu\ ;
+荗 > shoku\ ;
+茨 > ibara\ ;
+茢 > retsu\ ;
+茜 > akane\ ;
+茍 > kyoku\ ;
+茉 > matsu\ ;
+茇 > hatsu\ ;
+茁 > satsu\ ;
+茀 > hutsu\ ;
+苾 > hitsu\ ;
+苶 > detsu\ ;
+芴 > butsu\ ;
+芍 > shaku\ ;
+艴 > hotsu\ ;
+舳 > chiku\ ;
+舝 > katsu\ ;
+舄 > shaku\ ;
+舃 > shaku\ ;
+臸 > jitsu\ ;
+臲 > getsu\ ;
+臅 > shoku\ ;
+腷 > hyoku\ ;
+腯 > totsu\ ;
+脫 > datsu\ ;
+脖 > hotsu\ ;
+脉 > myaku\ ;
+胈 > hatsu\ ;
+肸 > kitsu\ ;
+肭 > dotsu\ ;
+肋 > abara\ ;
+聒 > katsu\ ;
+聀 > shoku\ ;
+耋 > tetsu\ ;
+耊 > tetsu\ ;
+羯 > katsu\ ;
+羍 > tatsu\ ;
+罸 > batsu\ ;
+缽 > hachi\ ;
+缼 > ketsu\ ;
+纈 > ketsu\ ;
+繳 > shaku\ ;
+繘 > kitsu\ ;
+縬 > shuku\ ;
+緤 > setsu\ ;
+綽 > shaku\ ;
+綠 > ryoku\ ;
+綍 > hutsu\ ;
+絰 > tetsu\ ;
+絜 > ketsu\ ;
+絗 > kotsu\ ;
+絕 > zetsu\ ;
+絏 > setsu\ ;
+紼 > hutsu\ ;
+紲 > setsu\ ;
+紱 > hutsu\ ;
+紮 > satsu\ ;
+紇 > kotsu\ ;
+糵 > getsu\ ;
+糏 > setsu\ ;
+糀 > kouji\ ;
+粛 > shuku\ ;
+粒 > tsubu\ ;
+籙 > ryoku\ ;
+篾 > betsu\ ;
+篳 > hitsu\ ;
+篩 > furui\ ;
+篥 > ritsu\ ;
+箻 > ritsu\ ;
+箚 > satsu\ ;
+筑 > chiku\ ;
+筏 > ikada\ ;
+筁 > kyoku\ ;
+笽 > souke\ ;
+笰 > hutsu\ ;
+笔 > hitsu\ ;
+笏 > kotsu\ ;
+竭 > ketsu\ ;
+窣 > sotsu\ ;
+窟 > kutsu\ ;
+窃 > setsu\ ;
+穡 > shoku\ ;
+稷 > shoku\ ;
+稭 > katsu\ ;
+稫 > hyoku\ ;
+稡 > sotsu\ ;
+稙 > choku\ ;
+秸 > katsu\ ;
+秫 > jotsu\ ;
+秣 > matsu\ ;
+秡 > hatsu\ ;
+禝 > shoku\ ;
+祓 > futsu\ ;
+磆 > katsu\ ;
+碿 > sotsu\ ;
+碣 > ketsu\ ;
+碟 > katsu\ ;
+碏 > shaku\ ;
+硈 > katsu\ ;
+矻 > kotsu\ ;
+矚 > shoku\ ;
+矗 > chiku\ ;
+瞮 > tetsu\ ;
+瞎 > katsu\ ;
+睰 > batsu\ ;
+眜 > batsu\ ;
+盋 > hatsu\ ;
+皭 > shaku\ ;
+皕 > hyoku\ ;
+皌 > batsu\ ;
+癶 > hatsu\ ;
+癤 > setsu\ ;
+癟 > hetsu\ ;
+瘧 > gyaku\ ;
+瘜 > shoku\ ;
+瘌 > ratsu\ ;
+瘄 > shaku\ ;
+瘃 > shoku\ ;
+痆 > datsu\ ;
+疙 > gitsu\ ;
+畷 > tetsu\ ;
+畧 > ryaku\ ;
+畟 > shoku\ ;
+甶 > futsu\ ;
+瓞 > tetsu\ ;
+瑮 > ritsu\ ;
+珿 > shuku\ ;
+珌 > hitsu\ ;
+玦 > ketsu\ ;
+玥 > getsu\ ;
+玐 > hatsu\ ;
+玃 > kyaku\ ;
+獦 > katsu\ ;
+獝 > kitsu\ ;
+獗 > ketsu\ ;
+猲 > katsu\ ;
+猝 > sotsu\ ;
+狘 > ketsu\ ;
+犮 > hatsu\ ;
+爝 > shaku\ ;
+爍 > shaku\ ;
+爇 > zetsu\ ;
+燵 > tatsu\ ;
+熚 > hitsu\ ;
+煞 > satsu\ ;
+焯 > shaku\ ;
+焫 > zetsu\ ;
+焔 > honoo\ ;
+焏 > kyoku\ ;
+烕 > ketsu\ ;
+瀒 > shoku\ ;
+濇 > shoku\ ;
+澈 > tetsu\ ;
+潚 > shuku\ ;
+潑 > hatsu\ ;
+潏 > ketsu\ ;
+滭 > hitsu\ ;
+滀 > chiku\ ;
+溭 > shoku\ ;
+溧 > ritsu\ ;
+溂 > ratsu\ ;
+湢 > hyoku\ ;
+湜 > shoku\ ;
+渴 > katsu\ ;
+渫 > setsu\ ;
+渤 > botsu\ ;
+渋 > shibu\ ;
+淈 > kotsu\ ;
+涅 > netsu\ ;
+浬 > kairi\ ;
+浡 > hotsu\ ;
+浙 > setsu\ ;
+洯 > ketsu\ ;
+洫 > kyoku\ ;
+洌 > retsu\ ;
+泬 > ketsu\ ;
+泐 > ryoku\ ;
+泌 > hitsu\ ;
+沸 > futsu\ ;
+沫 > matsu\ ;
+沕 > butsu\ ;
+沒 > botsu\ ;
+汔 > kitsu\ ;
+氟 > hutsu\ ;
+氒 > ketsu\ ;
+殛 > kyoku\ ;
+殁 > botsu\ ;
+歿 > botsu\ ;
+歾 > botsu\ ;
+歽 > setsu\ ;
+歹 > gatsu\ ;
+歠 > setsu\ ;
+歘 > kutsu\ ;
+歇 > ketsu\ ;
+欻 > kutsu\ ;
+欯 > kitsu\ ;
+欠 > ketsu\ ;
+欟 > tsuki\ ;
+櫱 > getsu\ ;
+櫁 > mitsu\ ;
+檫 > satsu\ ;
+檋 > kyoku\ ;
+橛 > ketsu\ ;
+樴 > shoku\ ;
+槭 > shuku\ ;
+榾 > kotsu\ ;
+榍 > setsu\ ;
+榀 > komai\ ;
+楾 > hazou\ ;
+楬 > ketsu\ ;
+椣 > shide\ ;
+椊 > sotsu\ ;
+椄 > setsu\ ;
+棁 > setsu\ ;
+梲 > setsu\ ;
+桲 > hotsu\ ;
+桰 > katsu\ ;
+桛 > kasei\ ;
+桔 > kitsu\ ;
+桀 > ketsu\ ;
+栻 > choku\ ;
+栰 > hatsu\ ;
+栨 > setsu\ ;
+栃 > tochi\ ;
+柷 > shuku\ ;
+柮 > totsu\ ;
+杰 > ketsu\ ;
+杤 > tochi\ ;
+杌 > gotsu\ ;
+杁 > eburi\ ;
+朸 > ryoku\ ;
+朳 > hatsu\ ;
+术 > jutsu\ ;
+朮 > jutsu\ ;
+朅 > ketsu\ ;
+曷 > katsu\ ;
+暼 > hetsu\ ;
+暱 > jitsu\ ;
+晢 > setsu\ ;
+昵 > jitsu\ ;
+昳 > tetsu\ ;
+昩 > batsu\ ;
+昢 > hotsu\ ;
+昒 > kotsu\ ;
+旭 > asahi\ ;
+斫 > shaku\ ;
+斣 > shuku\ ;
+敪 > tatsu\ ;
+敠 > tatsu\ ;
+敕 > choku\ ;
+攝 > setsu\ ;
+擽 > ryaku\ ;
+擷 > ketsu\ ;
+擦 > satsu\ ;
+撻 > tachi\ ;
+撥 > bachi\ ;
+撤 > tetsu\ ;
+撇 > hetsu\ ;
+撅 > ketsu\ ;
+摋 > satsu\ ;
+摂 > setsu\ ;
+搰 > kotsu\ ;
+搩 > ketsu\ ;
+搐 > chiku\ ;
+揳 > setsu\ ;
+揲 > setsu\ ;
+揬 > totsu\ ;
+揠 > satsu\ ;
+揑 > getsu\ ;
+掟 > okite\ ;
+掇 > tatsu\ ;
+捽 > sotsu\ ;
+捺 > natsu\ ;
+捸 > totsu\ ;
+捝 > tatsu\ ;
+捏 > detsu\ ;
+捋 > ratsu\ ;
+挶 > kyoku\ ;
+挩 > tatsu\ ;
+挈 > ketsu\ ;
+拮 > kitsu\ ;
+拉 > ratsu\ ;
+抹 > matsu\ ;
+抐 > dotsu\ ;
+抈 > getsu\ ;
+扤 > gotsu\ ;
+扎 > satsu\ ;
+戠 > shoku\ ;
+戞 > katsu\ ;
+戜 > tetsu\ ;
+戛 > katsu\ ;
+戄 > kyaku\ ;
+懤 > chyuu\ ;
+懎 > shoku\ ;
+憠 > ketsu\ ;
+憟 > shoku\ ;
+憋 > hetsu\ ;
+愎 > hyoku\ ;
+愊 > hyoku\ ;
+愂 > botsu\ ;
+惙 > tetsu\ ;
+悊 > tetsu\ ;
+恤 > jutsu\ ;
+怵 > jutsu\ ;
+怭 > hitsu\ ;
+怫 > futsu\ ;
+怛 > datsu\ ;
+忔 > kitsu\ ;
+徏 > choku\ ;
+彿 > futsu\ ;
+彴 > shaku\ ;
+彃 > hitsu\ ;
+彂 > hotsu\ ;
+弼 > hitsu\ ;
+弻 > hitsu\ ;
+弦 > tsuru\ ;
+弡 > kutsu\ ;
+廐 > umaya\ ;
+庂 > shoku\ ;
+幯 > setsu\ ;
+幭 > betsu\ ;
+帴 > satsu\ ;
+帥 > sotsu\ ;
+帚 > houki\ ;
+帕 > batsu\ ;
+巿 > hutsu\ ;
+巀 > satsu\ ;
+嶱 > katsu\ ;
+嶭 > gatsu\ ;
+嶍 > shihu\ ;
+嵽 > tetsu\ ;
+嵲 > getsu\ ;
+嵥 > ketsu\ ;
+嵑 > ketsu\ ;
+嵂 > ritsu\ ;
+崱 > shoku\ ;
+崫 > kutsu\ ;
+崛 > kutsu\ ;
+峠 > touge\ ;
+峚 > bitsu\ ;
+峌 > tetsu\ ;
+岪 > hutsu\ ;
+岤 > ketsu\ ;
+岏 > guwan\ ;
+岊 > setsu\ ;
+岉 > butsu\ ;
+屼 > gotsu\ ;
+屹 > kitsu\ ;
+屵 > gatsu\ ;
+屴 > ryoku\ ;
+屫 > kyaku\ ;
+屩 > kyaku\ ;
+尳 > kotsu\ ;
+尗 > shuku\ ;
+尐 > setsu\ ;
+寣 > kotsu\ ;
+寔 > shoku\ ;
+宻 > mitsu\ ;
+宓 > bitsu\ ;
+宊 > totsu\ ;
+孽 > getsu\ ;
+孼 > getsu\ ;
+孰 > izure\ ;
+孛 > botsu\ ;
+孒 > ketsu\ ;
+孑 > ketsu\ ;
+孎 > shoku\ ;
+嬇 > kuwai\ ;
+嬂 > shoku\ ;
+嫳 > hetsu\ ;
+嫡 > chaku\ ;
+媟 > setsu\ ;
+婼 > shaku\ ;
+婌 > shuku\ ;
+娎 > ketsu\ ;
+姴 > retsu\ ;
+姡 > katsu\ ;
+姞 > kitsu\ ;
+妺 > batsu\ ;
+妲 > datsu\ ;
+妰 > chaku\ ;
+妭 > hatsu\ ;
+妁 > shaku\ ;
+奯 > katsu\ ;
+契 > setsu\ ;
+夷 > ebisu\ ;
+夬 > ketsu\ ;
+夨 > shoku\ ;
+夙 > shuku\ ;
+壷 > tsubo\ ;
+墢 > hatsu\ ;
+墌 > shaku\ ;
+墆 > tetsu\ ;
+塛 > ritsu\ ;
+堨 > getsu\ ;
+埴 > shoku\ ;
+埱 > shyuu\ ;
+埓 > rachi\ ;
+垤 > tetsu\ ;
+垡 > hatsu\ ;
+垔 > shyou\ ;
+垏 > rotsu\ ;
+垃 > ratsu\ ;
+坺 > hatsu\ ;
+坹 > ketsu\ ;
+坲 > hutsu\ ;
+坪 > tsubo\ ;
+圿 > katsu\ ;
+圽 > botsu\ ;
+圴 > shaku\ ;
+圪 > gitsu\ ;
+圣 > kutsu\ ;
+囮 > otori\ ;
+囫 > kotsu\ ;
+囓 > ketsu\ ;
+囑 > shoku\ ;
+囐 > satsu\ ;
+囋 > satsu\ ;
+嚽 > setsu\ ;
+嚼 > shaku\ ;
+嚞 > tetsu\ ;
+噶 > katsu\ ;
+噲 > kuwai\ ;
+噱 > kyaku\ ;
+噠 > tatsu\ ;
+噘 > ketsu\ ;
+噈 > shuku\ ;
+噄 > kitsu\ ;
+嘱 > shoku\ ;
+嘠 > katsu\ ;
+嘎 > katsu\ ;
+嗶 > hitsu\ ;
+嗧 > garon\ ;
+嗢 > ratsu\ ;
+嗖 > shuhu\ ;
+嗕 > shoku\ ;
+嗐 > katsu\ ;
+喫 > kitsu\ ;
+喝 > katsu\ ;
+喌 > shuku\ ;
+喆 > tetsu\ ;
+啠 > tetsu\ ;
+啒 > kotsu\ ;
+唿 > kotsu\ ;
+唰 > setsu\ ;
+哾 > yatsu\ ;
+哷 > retsu\ ;
+哳 > tatsu\ ;
+哱 > hotsu\ ;
+哫 > shoku\ ;
+哘 > sasou\ ;
+哋 > tetsu\ ;
+咱 > satsu\ ;
+咭 > kitsu\ ;
+咧 > retsu\ ;
+咈 > hutsu\ ;
+咇 > hetsu\ ;
+呾 > tatsu\ ;
+呐 > totsu\ ;
+吷 > ketsu\ ;
+吶 > totsu\ ;
+吡 > hitsu\ ;
+吋 > inchi\ ;
+吃 > kitsu\ ;
+叕 > tetsu\ ;
+叐 > hatsu\ ;
+厩 > umaya\ ;
+厥 > ketsu\ ;
+卼 > gotsu\ ;
+卻 > kyaku\ ;
+卹 > jutsu\ ;
+卩 > setsu\ ;
+卨 > setsu\ ;
+卍 > manji\ ;
+卆 > sotsu\ ;
+匱 > hitsu\ ;
+匫 > kotsu\ ;
+匤 > kyaku\ ;
+匢 > kotsu\ ;
+匃 > katsu\ ;
+匁 > monme\ ;
+勺 > shaku\ ;
+勶 > ketsu\ ;
+勪 > kyaku\ ;
+勖 > kyaku\ ;
+勃 > botsu\ ;
+劽 > retsu\ ;
+劼 > katsu\ ;
+劚 > chaku\ ;
+劄 > satsu\ ;
+劂 > ketsu\ ;
+劀 > katsu\ ;
+剟 > tetsu\ ;
+剎 > satsu\ ;
+剌 > ratsu\ ;
+刮 > katsu\ ;
+别 > betsu\ ;
+刜 > hutsu\ ;
+刖 > getsu\ ;
+刔 > ketsu\ ;
+凓 > ritsu\ ;
+冽 > retsu\ ;
+冹 > hutsu\ ;
+决 > ketsu\ ;
+儲 > mouke\ ;
+僪 > kitsu\ ;
+僦 > shyuu\ ;
+僁 > setsu\ ;
+傠 > hatsu\ ;
+傈 > ritsu\ ;
+傄 > katsu\ ;
+偰 > setsu\ ;
+偟 > kuwau\ ;
+偈 > ketsu\ ;
+倔 > kutsu\ ;
+倐 > shuku\ ;
+倏 > shuku\ ;
+倌 > kuwan\ ;
+俶 > shuku\ ;
+侼 > hotsu\ ;
+侻 > tatsu\ ;
+侷 > kyoku\ ;
+侙 > choku\ ;
+侓 > rotsu\ ;
+侐 > kyoku\ ;
+佸 > katsu\ ;
+佶 > kitsu\ ;
+佪 > kuwai\ ;
+佚 > tetsu\ ;
+佖 > hitsu\ ;
+伵 > kyoku\ ;
+伳 > setsu\ ;
+伜 > sotsu\ ;
+伐 > batsu\ ;
+仴 > gatsu\ ;
+仡 > kitsu\ ;
+仈 > hatsu\ ;
+亟 > kyoku\ ;
+亍 > choku\ ;
+亅 > ketsu\ ;
+乴 > setsu\ ;
+乄 > shime\ ;
+乀 > futsu\ ;
+丿 > hetsu\ ;
+串 > kushi\ ;
+〆 > shime\ ;
+石 > koku\ ;
+迫 > haku\ ;
+迄 > made\ ;
+心 > shin\ ;
+込 > komu\ ;
+徴 > chou\ ;
+徳 > toku\ ;
+辱 > joku\ ;
+瞭 > ryou\ ;
+瞬 > shun\ ;
+復 > fuku\ ;
+辛 > shin\ ;
+得 > toku\ ;
+彼 > kare\ ;
+役 > yaku\ ;
+影 > kage\ ;
+彫 > chou\ ;
+睦 > boku\ ;
+督 > toku\ ;
+弾 > tama\ ;
+眺 > chou\ ;
+強 > kyou\ ;
+張 > chou\ ;
+輯 > shuu\ ;
+眞 > shin\ ;
+弔 > chou\ ;
+眉 > mayu\ ;
+較 > kaku\ ;
+直 > hita\ ;
+軒 > noki\ ;
+益 > yaku\ ;
+廂 > shou\ ;
+皿 > sara\ ;
+庵 > iori\ ;
+皮 > kawa\ ;
+庭 > niwa\ ;
+店 > mise\ ;
+底 > soko\ ;
+躑 > teki\ ;
+躍 > yaku\ ;
+躊 > chuu\ ;
+床 > yuka\ ;
+的 > mato\ ;
+庁 > chou\ ;
+幹 > miki\ ;
+蹴 > shuu\ ;
+平 > hira\ ;
+蹠 > seki\ ;
+蹟 > seki\ ;
+癖 > kuse\ ;
+幅 > haba\ ;
+療 > ryou\ ;
+常 > towa\ ;
+席 > seki\ ;
+希 > mare\ ;
+布 > nuno\ ;
+巻 > maki\ ;
+跳 > chou\ ;
+川 > kawa\ ;
+症 > shou\ ;
+足 > ashi\ ;
+越 > etsu\ ;
+超 > chou\ ;
+赫 > kaku\ ;
+畫 > kaku\ ;
+赤 > seki\ ;
+留 > ryuu\ ;
+画 > kaku\ ;
+申 > saru\ ;
+生 > nama\ ;
+甚 > shin\ ;
+崖 > gake\ ;
+崎 > saki\ ;
+峰 > mine\ ;
+賑 > shin\ ;
+賊 > zoku\ ;
+賃 > chin\ ;
+責 > seki\ ;
+山 > yama\ ;
+屬 > zoku\ ;
+属 > zoku\ ;
+屑 > kuzu\ ;
+豆 > mame\ ;
+琴 > koto\ ;
+就 > shuu\ ;
+少 > shou\ ;
+小 > shou\ ;
+将 > shou\ ;
+球 > tama\ ;
+対 > tsui\ ;
+寺 > tera\ ;
+寵 > chou\ ;
+審 > shin\ ;
+寥 > ryou\ ;
+寢 > shin\ ;
+珍 > chin\ ;
+富 > tomi\ ;
+寂 > sabi\ ;
+宿 > yado\ ;
+宮 > miya\ ;
+室 > muro\ ;
+宗 > shuu\ ;
+玖 > kyuu\ ;
+玉 > dama\ ;
+安 > yasu\ ;
+守 > mori\ ;
+宅 > taku\ ;
+讀 > toku\ ;
+學 > gaku\ ;
+獲 > kaku\ ;
+譯 > yaku\ ;
+孫 > mago\ ;
+獨 > doku\ ;
+学 > gaku\ ;
+證 > shou\ ;
+獄 > goku\ ;
+猿 > saru\ ;
+猫 > neko\ ;
+謡 > utai\ ;
+謎 > nazo\ ;
+嬌 > kyou\ ;
+謁 > etsu\ ;
+狹 > kyou\ ;
+狭 > kyou\ ;
+狂 > kyou\ ;
+嫁 > yome\ ;
+調 > chou\ ;
+誰 > dare\ ;
+読 > toku\ ;
+誂 > chou\ ;
+婿 > muko\ ;
+特 > toku\ ;
+詳 > shou\ ;
+物 > mono\ ;
+牧 > boku\ ;
+牛 > ushi\ ;
+評 > hyou\ ;
+牒 > chou\ ;
+婆 > baba\ ;
+診 > shin\ ;
+訳 > wake\ ;
+訟 > shou\ ;
+娠 > shin\ ;
+託 > taku\ ;
+爆 > baku\ ;
+姫 > hime\ ;
+燒 > shou\ ;
+覺 > kaku\ ;
+覚 > kaku\ ;
+妙 > myou\ ;
+熊 > kuma\ ;
+覆 > fuku\ ;
+襲 > shuu\ ;
+照 > shou\ ;
+煤 > susu\ ;
+襁 > kyou\ ;
+焼 > yaki\ ;
+夫 > otto\ ;
+焦 > shou\ ;
+夢 > yume\ ;
+夜 > yoru\ ;
+外 > hoka\ ;
+複 > fuku\ ;
+裾 > suso\ ;
+壱 > ichi\ ;
+壓 > atsu\ ;
+壁 > kabe\ ;
+為 > tame\ ;
+炭 > sumi\ ;
+墨 > sumi\ ;
+袖 > sode\ ;
+墓 > haka\ ;
+衷 > chuu\ ;
+表 > hyou\ ;
+塩 > shio\ ;
+衝 > shou\ ;
+塞 > soku\ ;
+術 > sube\ ;
+行 > gyou\ ;
+衆 > shuu\ ;
+蠢 > shun\ ;
+瀝 > reki\ ;
+堀 > hori\ ;
+濯 > taku\ ;
+濁 > daku\ ;
+激 > geki\ ;
+澤 > taku\ ;
+垣 > kaki\ ;
+型 > kata\ ;
+澄 > chou\ ;
+潮 > shio\ ;
+蝠 > fuku\ ;
+蝉 > semi\ ;
+坂 > saka\ ;
+漿 > shou\ ;
+鼻 > hana\ ;
+漲 > chou\ ;
+圧 > atsu\ ;
+漠 > baku\ ;
+園 > sono\ ;
+國 > koku\ ;
+蜃 > shin\ ;
+漂 > hyou\ ;
+漁 > ryou\ ;
+国 > kuni\ ;
+黴 > kabi\ ;
+黙 > moku\ ;
+默 > moku\ ;
+黒 > kuro\ ;
+黍 > kibi\ ;
+蛇 > hebi\ ;
+囁 > shou\ ;
+溺 > deki\ ;
+麦 > mugi\ ;
+麥 > baku\ ;
+蚤 > nomi\ ;
+溢 > itsu\ ;
+溝 > mizo\ ;
+溜 > ryuu\ ;
+虎 > tora\ ;
+測 > soku\ ;
+嘗 > shou\ ;
+渉 > shou\ ;
+鷹 > taka\ ;
+深 > shin\ ;
+藥 > yaku\ ;
+藤 > fuji\ ;
+嗅 > kyuu\ ;
+藁 > wara\ ;
+涼 > ryou\ ;
+涜 > toku\ ;
+喋 > chou\ ;
+喉 > nodo\ ;
+消 > shou\ ;
+浸 > shin\ ;
+浴 > yoku\ ;
+浜 > hama\ ;
+浚 > shun\ ;
+蕎 > kyou\ ;
+商 > shou\ ;
+流 > ryuu\ ;
+洲 > shuu\ ;
+唱 > shou\ ;
+唯 > tada\ ;
+蔭 > kage\ ;
+津 > shin\ ;
+洞 > hora\ ;
+洛 > raku\ ;
+唖 > oshi\ ;
+蓮 > hasu\ ;
+哭 > koku\ ;
+鳩 > hato\ ;
+注 > chuu\ ;
+鳥 > tori\ ;
+泥 > doro\ ;
+泣 > kyuu\ ;
+波 > nami\ ;
+蓋 > futa\ ;
+泊 > haku\ ;
+況 > kyou\ ;
+咽 > nodo\ ;
+沼 > numa\ ;
+蒻 > jaku\ ;
+河 > kawa\ ;
+蒲 > gama\ ;
+咳 > seki\ ;
+咲 > shou\ ;
+沢 > sawa\ ;
+咎 > kyuu\ ;
+沈 > chin\ ;
+汲 > kyuu\ ;
+周 > shuu\ ;
+鱈 > tara\ ;
+告 > koku\ ;
+求 > kyuu\ ;
+落 > ochi\ ;
+吸 > kyuu\ ;
+水 > mizu\ ;
+民 > tami\ ;
+吊 > chou\ ;
+各 > kaku\ ;
+右 > migi\ ;
+華 > hana\ ;
+毬 > kyuu\ ;
+召 > shou\ ;
+叫 > kyou\ ;
+只 > tada\ ;
+古 > furu\ ;
+取 > tori\ ;
+毒 > doku\ ;
+収 > shuu\ ;
+母 > haha\ ;
+双 > futa\ ;
+菊 > kiku\ ;
+友 > tomo\ ;
+及 > kyuu\ ;
+又 > mata\ ;
+殿 > dono\ ;
+殻 > kara\ ;
+莢 > saya\ ;
+原 > hara\ ;
+厄 > yaku\ ;
+歴 > reki\ ;
+即 > soku\ ;
+博 > baku\ ;
+協 > kyou\ ;
+卓 > taku\ ;
+草 > kusa\ ;
+升 > masu\ ;
+鬱 > utsu\ ;
+欲 > yoku\ ;
+欝 > utsu\ ;
+鬚 > hige\ ;
+匙 > saji\ ;
+北 > hoku\ ;
+茎 > kuki\ ;
+茅 > kaya\ ;
+匂 > niou\ ;
+髷 > mage\ ;
+髭 > hige\ ;
+髪 > kami\ ;
+若 > jaku\ ;
+勝 > shou\ ;
+高 > taka\ ;
+苔 > koke\ ;
+花 > hana\ ;
+骨 > hone\ ;
+助 > suke\ ;
+劇 > geki\ ;
+劃 > kaku\ ;
+剽 > hyou\ ;
+割 > wari\ ;
+良 > ryou\ ;
+剥 > haku\ ;
+機 > hata\ ;
+驚 > kyou\ ;
+削 > saku\ ;
+則 > soku\ ;
+刻 > koku\ ;
+船 > fune\ ;
+刺 > toge\ ;
+舶 > haku\ ;
+横 > yoko\ ;
+舟 > fune\ ;
+標 > hyou\ ;
+舎 > seki\ ;
+舊 > kyuu\ ;
+刈 > kari\ ;
+樅 > momi\ ;
+樂 > gaku\ ;
+臭 > shuu\ ;
+臣 > shin\ ;
+駒 > koma\ ;
+駐 > chuu\ ;
+臍 > heso\ ;
+槌 > tsui\ ;
+凌 > ryou\ ;
+槇 > maki\ ;
+馴 > shun\ ;
+冬 > fuyu\ ;
+膝 > hiza\ ;
+膜 > maku\ ;
+榛 > shin\ ;
+香 > kyou\ ;
+首 > kubi\ ;
+円 > maru\ ;
+内 > uchi\ ;
+楽 > raku\ ;
+腹 > hara\ ;
+極 > goku\ ;
+共 > domo\ ;
+業 > waza\ ;
+六 > roku\ ;
+兩 > ryou\ ;
+入 > nyuu\ ;
+元 > moto\ ;
+脣 > shin\ ;
+償 > shou\ ;
+脚 > ashi\ ;
+儘 > mama\ ;
+椎 > tsui\ ;
+脊 > seki\ ;
+脇 > waki\ ;
+脅 > kyou\ ;
+脂 > yani\ ;
+能 > yoku\ ;
+胸 > mune\ ;
+森 > mori\ ;
+棚 > tana\ ;
+僚 > ryou\ ;
+僕 > boku\ ;
+僑 > kyou\ ;
+傷 > shou\ ;
+肩 > kata\ ;
+肝 > kimo\ ;
+肘 > hiji\ ;
+傘 > kasa\ ;
+肖 > shou\ ;
+肌 > hada\ ;
+傍 > waki\ ;
+肉 > niku\ ;
+梃 > teko\ ;
+聽 > chou\ ;
+偽 > nise\ ;
+聴 > chou\ ;
+聳 > shou\ ;
+側 > hata\ ;
+聚 > shuu\ ;
+桐 > kiri\ ;
+聊 > ryou\ ;
+桃 > momo\ ;
+桁 > keta\ ;
+格 > kaku\ ;
+頸 > kubi\ ;
+耳 > mimi\ ;
+頬 > hoho\ ;
+領 > ryou\ ;
+栗 > kuri\ ;
+者 > mono\ ;
+頃 > goro\ ;
+柿 > kaki\ ;
+柵 > saku\ ;
+修 > shuu\ ;
+柚 > yuzu\ ;
+俗 > zoku\ ;
+柔 > nyuu\ ;
+習 > shuu\ ;
+翌 > yoku\ ;
+促 > soku\ ;
+侵 > shin\ ;
+価 > atai\ ;
+羞 > shuu\ ;
+供 > tomo\ ;
+鞘 > saya\ ;
+革 > kawa\ ;
+作 > saku\ ;
+杖 > tsue\ ;
+村 > mura\ ;
+杏 > anzu\ ;
+杉 > sugi\ ;
+伽 > togi\ ;
+朴 > boku\ ;
+伴 > tomo\ ;
+伯 > haku\ ;
+札 > fuda\ ;
+本 > moto\ ;
+霧 > kiri\ ;
+休 > kyuu\ ;
+伏 > fuku\ ;
+服 > fuku\ ;
+震 > shin\ ;
+雲 > kumo\ ;
+仲 > naka\ ;
+仰 > gyou\ ;
+仮 > kari\ ;
+雪 > yuki\ ;
+曝 > baku\ ;
+他 > hoka\ ;
+雌 > mesu\ ;
+集 > shuu\ ;
+仄 > soku\ ;
+人 > hito\ ;
+享 > kyou\ ;
+亦 > mata\ ;
+暢 > chou\ ;
+障 > shou\ ;
+隙 > suki\ ;
+隔 > kaku\ ;
+續 > zoku\ ;
+事 > koto\ ;
+隆 > ryuu\ ;
+暇 > hima\ ;
+隅 > sumi\ ;
+了 > ryou\ ;
+陸 > roku\ ;
+晶 > shou\ ;
+陰 > kage\ ;
+晝 > chuu\ ;
+之 > kore\ ;
+久 > kyuu\ ;
+時 > toki\ ;
+昼 > hiru\ ;
+丸 > maru\ ;
+昭 > shou\ ;
+中 > naka\ ;
+昨 > saku\ ;
+縦 > tate\ ;
+春 > haru\ ;
+両 > ryou\ ;
+縛 > baku\ ;
+縋 > tsui\ ;
+丈 > dake\ ;
+昇 > shou\ ;
+縄 > nawa\ ;
+一 > ichi\ ;
+旨 > mune\ ;
+旗 > hata\ ;
+族 > zoku\ ;
+闇 > yami\ ;
+旅 > tabi\ ;
+綿 > wata\ ;
+閾 > yoku\ ;
+綾 > ryou\ ;
+閲 > etsu\ ;
+新 > shin\ ;
+閣 > kaku\ ;
+斥 > seki\ ;
+関 > seki\ ;
+続 > zoku\ ;
+料 > ryou\ ;
+閑 > hima\ ;
+斑 > mura\ ;
+斎 > toki\ ;
+絹 > kinu\ ;
+敵 > teki\ ;
+給 > kyuu\ ;
+絡 > raku\ ;
+教 > kyou\ ;
+救 > kyuu\ ;
+組 > kumi\ ;
+紹 > shou\ ;
+收 > shuu\ ;
+紳 > shin\ ;
+攫 > kaku\ ;
+索 > saku\ ;
+級 > kyuu\ ;
+紙 > kami\ ;
+紐 > himo\ ;
+紅 > beni\ ;
+約 > yaku\ ;
+擱 > kaku\ ;
+糧 > ryou\ ;
+撲 > boku\ ;
+粧 > shou\ ;
+粥 > kayu\ ;
+粉 > kona\ ;
+撃 > geki\ ;
+摺 > shou\ ;
+米 > kome\ ;
+籠 > kago\ ;
+籍 > seki\ ;
+鐘 > kane\ ;
+鐐 > ryou\ ;
+揺 > yuri\ ;
+篭 > kago\ ;
+篤 > toku\ ;
+描 > byou\ ;
+掴 > kaku\ ;
+箱 > hako\ ;
+管 > kuda\ ;
+鍵 > kagi\ ;
+鍮 > chuu\ ;
+策 > saku\ ;
+鍋 > nabe\ ;
+筋 > suji\ ;
+等 > nado\ ;
+筈 > hazu\ ;
+筆 > fude\ ;
+挾 > kyou\ ;
+笹 > sasa\ ;
+録 > roku\ ;
+錯 > saku\ ;
+振 > shin\ ;
+笠 > kasa\ ;
+笑 > shou\ ;
+錐 > kiri\ ;
+指 > yubi\ ;
+竹 > take\ ;
+競 > kyou\ ;
+端 > hana\ ;
+章 > shou\ ;
+招 > shou\ ;
+拍 > haku\ ;
+抽 > chuu\ ;
+窮 > kyuu\ ;
+窓 > mado\ ;
+銑 > zuku\ ;
+技 > waza\ ;
+承 > shou\ ;
+空 > sora\ ;
+究 > kyuu\ ;
+積 > seki\ ;
+扇 > ougi\ ;
+房 > fusa\ ;
+鈴 > suzu\ ;
+稱 > shou\ ;
+種 > tane\ ;
+戟 > geki\ ;
+戚 > seki\ ;
+我 > ware\ ;
+稍 > yaya\ ;
+程 > hodo\ ;
+稀 > mare\ ;
+称 > shou\ ;
+釣 > chou\ ;
+針 > hari\ ;
+釜 > kama\ ;
+釘 > kugi\ ;
+秒 > byou\ ;
+秀 > shuu\ ;
+禿 > hage\ ;
+憩 > ikoi\ ;
+醤 > shou\ ;
+醜 > shuu\ ;
+憔 > shou\ ;
+憑 > hyou\ ;
+福 > fuku\ ;
+禄 > roku\ ;
+慾 > yoku\ ;
+酷 > koku\ ;
+酬 > shuu\ ;
+神 > kami\ ;
+酒 > sake\ ;
+態 > zama\ ;
+愕 > gaku\ ;
+郷 > kyou\ ;
+郭 > kaku\ ;
+惜 > seki\ ;
+惑 > waku\ ;
+悪 > waru\ ;
+碧 > heki\ ;
+碌 > roku\ ;
+悄 > shou\ ;
+恭 > kyou\ ;
+適 > teki\ ;
+恥 > haji\ ;
+硝 > shou\ ;
+恐 > kyou\ ;
+逸 > itsu\ ;
+進 > shin\ ;
+週 > shuu\ ;
+怯 > kyou\ ;
+急 > kyuu\ ;
+速 > soku\ ;
+通 > tsuu\ ;
+怎 > shin\ ;
+砂 > suna\ ;
+追 > tsui\ ;
+龥 > yaku\ ;
+龣 > kaku\ ;
+龠 > yaku\ ;
+龝 > shuu\ ;
+龔 > kyou\ ;
+龏 > kyou\ ;
+龍 > ryuu\ ;
+齺 > shuu\ ;
+齱 > seku\ ;
+齰 > saku\ ;
+齪 > soku\ ;
+齨 > kyuu\ ;
+齣 > koma\ ;
+齠 > chou\ ;
+齚 > saku\ ;
+齔 > shin\ ;
+齓 > shin\ ;
+齅 > kyuu\ ;
+鼼 > gyou\ ;
+鼫 > seki\ ;
+鼦 > chou\ ;
+鼚 > chou\ ;
+鼏 > beki\ ;
+鼂 > chou\ ;
+黷 > toku\ ;
+黰 > shin\ ;
+黑 > koku\ ;
+麿 > maro\ ;
+麴 > kiku\ ;
+麯 > kiku\ ;
+麨 > shou\ ;
+麞 > shou\ ;
+麘 > kyou\ ;
+麎 > shin\ ;
+鹶 > kyou\ ;
+鹢 > geki\ ;
+鹡 > seki\ ;
+鸴 > kaku\ ;
+鸙 > yaku\ ;
+鸖 > kaku\ ;
+鸑 > gaku\ ;
+鸐 > teki\ ;
+鸊 > heki\ ;
+鷽 > kaku\ ;
+鷸 > itsu\ ;
+鷯 > ryou\ ;
+鷮 > kyou\ ;
+鷦 > shou\ ;
+鷟 > saku\ ;
+鷚 > ryuu\ ;
+鷊 > geki\ ;
+鷁 > geki\ ;
+鶺 > seki\ ;
+鶹 > ryuu\ ;
+鶸 > jaku\ ;
+鶮 > koku\ ;
+鶪 > keki\ ;
+鶩 > boku\ ;
+鶚 > gaku\ ;
+鶖 > shuu\ ;
+鶓 > byou\ ;
+鶒 > seki\ ;
+鶃 > geki\ ;
+鵲 > jaku\ ;
+鵰 > chou\ ;
+鵩 > fuku\ ;
+鵢 > shin\ ;
+鵠 > koku\ ;
+鵟 > kyou\ ;
+鵙 > mozu\ ;
+鵔 > shun\ ;
+鵇 > toki\ ;
+鵅 > raku\ ;
+鵃 > chuu\ ;
+鵂 > kyuu\ ;
+鴪 > itsu\ ;
+鴨 > kamo\ ;
+鴗 > ryuu\ ;
+鴇 > toki\ ;
+鴆 > chin\ ;
+鳦 > itsu\ ;
+鲌 > haku\ ;
+鱷 > gaku\ ;
+鱶 > fuka\ ;
+鱵 > shin\ ;
+鱲 > ryou\ ;
+鱨 > shou\ ;
+鱧 > hamo\ ;
+鱜 > kyou\ ;
+鱚 > kisu\ ;
+鱘 > shin\ ;
+鱒 > masu\ ;
+鱏 > shin\ ;
+鱎 > kyou\ ;
+鱊 > itsu\ ;
+鱆 > shou\ ;
+鱅 > shou\ ;
+鱃 > shuu\ ;
+鱂 > shou\ ;
+鰾 > hyou\ ;
+鰽 > shuu\ ;
+鰷 > chou\ ;
+鰭 > hire\ ;
+鰨 > chou\ ;
+鰤 > buri\ ;
+鰡 > ryuu\ ;
+鰙 > haya\ ;
+鰐 > wani\ ;
+鰂 > soku\ ;
+鯽 > seki\ ;
+鯪 > ryou\ ;
+鯧 > shou\ ;
+鯥 > riku\ ;
+鯗 > shou\ ;
+鯖 > saba\ ;
+鯔 > bora\ ;
+鯎 > ugui\ ;
+鯊 > haze\ ;
+鮿 > chou\ ;
+鮼 > shin\ ;
+鮹 > tako\ ;
+鮴 > gori\ ;
+鮲 > mate\ ;
+鮱 > bora\ ;
+鮫 > same\ ;
+鮠 > haya\ ;
+鮝 > shou\ ;
+鮒 > funa\ ;
+鮊 > haku\ ;
+鮉 > chou\ ;
+魹 > todo\ ;
+魫 > shin\ ;
+魡 > teki\ ;
+魗 > shuu\ ;
+魎 > ryou\ ;
+魈 > shou\ ;
+魄 > haku\ ;
+鬺 > shou\ ;
+鬲 > reki\ ;
+鬰 > utsu\ ;
+鬯 > chou\ ;
+鬮 > kyuu\ ;
+鬩 > geki\ ;
+鬛 > ryou\ ;
+鬒 > shin\ ;
+鬆 > shou\ ;
+髹 > kyuu\ ;
+髫 > chou\ ;
+髤 > kyuu\ ;
+髟 > hyou\ ;
+髜 > kyou\ ;
+髑 > toku\ ;
+髎 > ryou\ ;
+髆 > haku\ ;
+骼 > kaku\ ;
+骲 > haku\ ;
+骮 > yoku\ ;
+骭 > hagi\ ;
+骎 > shin\ ;
+骉 > hyuu\ ;
+驫 > hyuu\ ;
+驟 > shuu\ ;
+驝 > taku\ ;
+驕 > kyou\ ;
+驑 > ryuu\ ;
+驍 > gyou\ ;
+驃 > hyou\ ;
+驀 > baku\ ;
+騶 > shuu\ ;
+騳 > toku\ ;
+騮 > ryuu\ ;
+騞 > kaku\ ;
+駿 > shun\ ;
+駸 > shin\ ;
+駵 > ryuu\ ;
+駲 > shuu\ ;
+駱 > raku\ ;
+駮 > haku\ ;
+駪 > shin\ ;
+駁 > baku\ ;
+馽 > chuu\ ;
+馲 > taku\ ;
+馰 > teki\ ;
+馮 > hyou\ ;
+馥 > fuku\ ;
+馘 > kaku\ ;
+饟 > shou\ ;
+饗 > kyou\ ;
+饈 > shuu\ ;
+餾 > ryuu\ ;
+餺 > haku\ ;
+餦 > chou\ ;
+餗 > soku\ ;
+餕 > shun\ ;
+餉 > shou\ ;
+飥 > taku\ ;
+飈 > hyou\ ;
+飇 > hyou\ ;
+飆 > hyou\ ;
+飅 > ryuu\ ;
+飄 > hyou\ ;
+飃 > hyou\ ;
+飂 > ryuu\ ;
+颷 > hyou\ ;
+颮 > hyou\ ;
+顳 > shou\ ;
+顦 > shou\ ;
+顖 > shin\ ;
+顒 > gyou\ ;
+頰 > kyou\ ;
+頣 > shin\ ;
+頞 > atsu\ ;
+頙 > saku\ ;
+頔 > teki\ ;
+頌 > shou\ ;
+韷 > raku\ ;
+韶 > shou\ ;
+韮 > nira\ ;
+韭 > kyuu\ ;
+韘 > shou\ ;
+韔 > chou\ ;
+韇 > toku\ ;
+韁 > kyou\ ;
+鞹 > kaku\ ;
+鞴 > fuku\ ;
+鞫 > kiku\ ;
+鞦 > shuu\ ;
+鞢 > shou\ ;
+鞠 > mari\ ;
+鞟 > kaku\ ;
+鞏 > kyou\ ;
+鞆 > tomo\ ;
+靮 > teki\ ;
+靕 > shin\ ;
+靏 > kaku\ ;
+靎 > kaku\ ;
+靄 > moya\ ;
+靃 > kaku\ ;
+靂 > reki\ ;
+霹 > heki\ ;
+霸 > haku\ ;
+霳 > ryuu\ ;
+霱 > itsu\ ;
+霤 > ryuu\ ;
+霢 > baku\ ;
+霡 > baku\ ;
+霍 > kaku\ ;
+霅 > shou\ ;
+霄 > shou\ ;
+霃 > chin\ ;
+霂 > boku\ ;
+雹 > hyou\ ;
+雘 > waku\ ;
+雕 > chou\ ;
+雒 > raku\ ;
+雉 > kiji\ ;
+隻 > seki\ ;
+隺 > koku\ ;
+隟 > geki\ ;
+陿 > kyou\ ;
+陳 > chin\ ;
+陞 > shou\ ;
+陗 > shou\ ;
+陌 > haku\ ;
+阞 > roku\ ;
+闢 > heki\ ;
+闟 > kyuu\ ;
+闝 > hyou\ ;
+闖 > chin\ ;
+闃 > geki\ ;
+閶 > shou\ ;
+閴 > keki\ ;
+閱 > etsu\ ;
+閠 > tama\ ;
+閖 > yuru\ ;
+閄 > koku\ ;
+镹 > kyuu\ ;
+镸 > chou\ ;
+镠 > ryuu\ ;
+锺 > shou\ ;
+钁 > kaku\ ;
+鑿 > nomi\ ;
+鑰 > yaku\ ;
+鑮 > haku\ ;
+鑣 > hyou\ ;
+鑡 > saku\ ;
+鑟 > toku\ ;
+鑜 > shou\ ;
+鑓 > yari\ ;
+鑊 > kaku\ ;
+鑄 > chuu\ ;
+鑃 > tyou\ ;
+鐸 > taku\ ;
+鐴 > heki\ ;
+鐲 > taku\ ;
+鐔 > shin\ ;
+鐎 > shou\ ;
+鐈 > kyou\ ;
+鐂 > ryuu\ ;
+鏽 > shuu\ ;
+鏹 > kyou\ ;
+鏷 > hoku\ ;
+鏦 > shou\ ;
+鏥 > shuu\ ;
+鏢 > hyou\ ;
+鏛 > shou\ ;
+鏘 > shou\ ;
+鏑 > teki\ ;
+鏐 > ryuu\ ;
+鏌 > baku\ ;
+鏊 > gyou\ ;
+鏃 > zoku\ ;
+鎴 > soku\ ;
+鎰 > itsu\ ;
+鎮 > chin\ ;
+鎭 > chin\ ;
+鎨 > shun\ ;
+鎦 > ryuu\ ;
+鎛 > haku\ ;
+鎚 > tsui\ ;
+鎘 > reki\ ;
+鎐 > soku\ ;
+鎏 > ryuu\ ;
+鎍 > saku\ ;
+鎌 > kama\ ;
+鎀 > shuu\ ;
+鍾 > shou\ ;
+鍼 > hari\ ;
+鍶 > shou\ ;
+鍬 > kuwa\ ;
+鍖 > chin\ ;
+錷 > atsu\ ;
+錶 > hyou\ ;
+錴 > roku\ ;
+錫 > suzu\ ;
+錩 > shou\ ;
+錞 > shun\ ;
+錆 > sabi\ ;
+錄 > roku\ ;
+錂 > ryou\ ;
+鋿 > shou\ ;
+鋹 > chou\ ;
+鋳 > chuu\ ;
+鋲 > byou\ ;
+鋤 > suki\ ;
+鋠 > shin\ ;
+鋜 > saku\ ;
+鋈 > yoku\ ;
+銿 > shou\ ;
+銹 > shuu\ ;
+銸 > shou\ ;
+銷 > shou\ ;
+銶 > kyuu\ ;
+銛 > mori\ ;
+銎 > kyou\ ;
+銉 > itsu\ ;
+鉾 > hoko\ ;
+鉻 > raku\ ;
+鉮 > shin\ ;
+鉦 > kane\ ;
+鉞 > etsu\ ;
+鉝 > ryuu\ ;
+鉚 > ryuu\ ;
+鉑 > haku\ ;
+鉐 > seki\ ;
+鉊 > shou\ ;
+鈾 > chuu\ ;
+鈼 > saku\ ;
+鈬 > taku\ ;
+鈕 > chuu\ ;
+鈔 > shou\ ;
+鈎 > kagi\ ;
+鈌 > etsu\ ;
+鈊 > shin\ ;
+釽 > heki\ ;
+釻 > kyuu\ ;
+釥 > shou\ ;
+釞 > shuu\ ;
+釛 > koku\ ;
+釚 > kyuu\ ;
+釙 > haku\ ;
+釗 > shou\ ;
+釔 > itsu\ ;
+釓 > hyuu\ ;
+量 > ryou\ ;
+釂 > shou\ ;
+醻 > shuu\ ;
+醮 > shou\ ;
+醭 > hoku\ ;
+醬 > shou\ ;
+醕 > shun\ ;
+醋 > saku\ ;
+醇 > shun\ ;
+酱 > shou\ ;
+酪 > raku\ ;
+酧 > shuu\ ;
+酙 > shin\ ;
+酎 > chuu\ ;
+酋 > shuu\ ;
+酉 > tori\ ;
+鄹 > shuu\ ;
+鄴 > gyou\ ;
+鄩 > shin\ ;
+鄥 > kyou\ ;
+鄣 > shou\ ;
+鄚 > baku\ ;
+鄙 > hina\ ;
+鄕 > kyou\ ;
+鄉 > kyou\ ;
+鄂 > gaku\ ;
+鄀 > jaku\ ;
+郴 > chin\ ;
+郰 > shuu\ ;
+郤 > geki\ ;
+郝 > kaku\ ;
+郇 > shun\ ;
+郄 > keki\ ;
+邵 > shou\ ;
+邱 > kyuu\ ;
+邦 > kuni\ ;
+邥 > shin\ ;
+邛 > kyou\ ;
+邋 > ryou\ ;
+邈 > baku\ ;
+遼 > ryou\ ;
+遹 > itsu\ ;
+遬 > soku\ ;
+遧 > shou\ ;
+遛 > ryuu\ ;
+遒 > shuu\ ;
+遏 > atsu\ ;
+遌 > gaku\ ;
+逷 > keki\ ;
+逴 > taku\ ;
+逪 > saku\ ;
+逩 > kamu\ ;
+逧 > sako\ ;
+逡 > shun\ ;
+逛 > kyou\ ;
+逖 > teki\ ;
+逑 > kyuu\ ;
+逎 > shuu\ ;
+逍 > shou\ ;
+迹 > seki\ ;
+迮 > saku\ ;
+迪 > teki\ ;
+迢 > chou\ ;
+迠 > shou\ ;
+迍 > chun\ ;
+辸 > shou\ ;
+辟 > heki\ ;
+轣 > reki\ ;
+轢 > reki\ ;
+轎 > kyou\ ;
+轌 > sori\ ;
+轆 > roku\ ;
+轃 > shin\ ;
+轂 > koku\ ;
+輻 > fuku\ ;
+輹 > fuku\ ;
+輴 > chun\ ;
+輬 > ryou\ ;
+輧 > byou\ ;
+輛 > ryou\ ;
+輙 > chou\ ;
+輘 > ryou\ ;
+輖 > shuu\ ;
+輒 > chou\ ;
+輌 > ryou\ ;
+輈 > chuu\ ;
+軿 > byou\ ;
+軼 > itsu\ ;
+軸 > jiku\ ;
+軭 > kyou\ ;
+軫 > shin\ ;
+軋 > atsu\ ;
+躳 > kyuu\ ;
+躬 > kyuu\ ;
+躞 > shou\ ;
+躒 > reki\ ;
+躐 > ryou\ ;
+躄 > heki\ ;
+躃 > heki\ ;
+蹼 > boku\ ;
+蹻 > kyou\ ;
+蹺 > kyou\ ;
+蹱 > shou\ ;
+蹰 > shuu\ ;
+蹤 > shou\ ;
+蹢 > teki\ ;
+蹐 > seki\ ;
+蹌 > shou\ ;
+蹀 > chou\ ;
+踸 > chin\ ;
+踳 > shun\ ;
+踱 > taku\ ;
+踪 > shou\ ;
+踢 > teki\ ;
+踖 > seki\ ;
+踉 > ryou\ ;
+踆 > shun\ ;
+踄 > haku\ ;
+跫 > kyou\ ;
+跖 > seki\ ;
+跕 > chou\ ;
+跅 > taku\ ;
+趻 > chin\ ;
+趵 > haku\ ;
+趬 > kyou\ ;
+趫 > kyou\ ;
+趠 > taku\ ;
+趙 > chou\ ;
+趂 > chin\ ;
+趁 > chin\ ;
+赳 > kyuu\ ;
+赥 > keki\ ;
+贐 > shin\ ;
+贋 > nise\ ;
+賾 > saku\ ;
+賰 > shun\ ;
+賭 > kake\ ;
+賬 > chou\ ;
+賞 > shou\ ;
+賝 > chin\ ;
+賙 > shuu\ ;
+賕 > kyuu\ ;
+貺 > kyou\ ;
+貘 > baku\ ;
+貓 > byou\ ;
+貊 > haku\ ;
+貉 > kaku\ ;
+貅 > kyuu\ ;
+貂 > chou\ ;
+豹 > hyou\ ;
+豚 > buta\ ;
+讬 > taku\ ;
+讟 > toku\ ;
+讖 > shin\ ;
+讐 > shuu\ ;
+讎 > shuu\ ;
+讍 > gaku\ ;
+讋 > shou\ ;
+讅 > shin\ ;
+讁 > taku\ ;
+譸 > chuu\ ;
+譛 > shin\ ;
+譙 > shou\ ;
+譖 > shin\ ;
+譅 > shuu\ ;
+謷 > gyou\ ;
+謫 > taku\ ;
+謞 > kaku\ ;
+謋 > kaku\ ;
+諿 > shuu\ ;
+諾 > daku\ ;
+諶 > shin\ ;
+諤 > gaku\ ;
+諜 > chou\ ;
+諗 > shin\ ;
+諒 > ryou\ ;
+諑 > taku\ ;
+諊 > kiku\ ;
+諃 > chin\ ;
+誯 > shou\ ;
+誦 > shou\ ;
+誚 > shou\ ;
+誑 > kyou\ ;
+誆 > kyou\ ;
+誅 > chuu\ ;
+詾 > kyou\ ;
+詻 > gaku\ ;
+詶 > shuu\ ;
+詵 > shin\ ;
+詗 > kyou\ ;
+註 > chuu\ ;
+訷 > shin\ ;
+訫 > shin\ ;
+訦 > shin\ ;
+訠 > shin\ ;
+訅 > kyuu\ ;
+訄 > kyuu\ ;
+觴 > shou\ ;
+觳 > koku\ ;
+觫 > soku\ ;
+觩 > kyuu\ ;
+覿 > teki\ ;
+覡 > geki\ ;
+覜 > chou\ ;
+覛 > biki\ ;
+覓 > beki\ ;
+覐 > kaku\ ;
+覈 > kaku\ ;
+襵 > shou\ ;
+襯 > shin\ ;
+襮 > haku\ ;
+襫 > seki\ ;
+襞 > hida\ ;
+襗 > taku\ ;
+襆 > hoku\ ;
+襂 > shin\ ;
+襀 > seki\ ;
+褾 > hyou\ ;
+褺 > chou\ ;
+褶 > chou\ ;
+褱 > kaie\ ;
+褥 > joku\ ;
+褎 > shuu\ ;
+褁 > seki\ ;
+裼 > seki\ ;
+裲 > ryou\ ;
+裱 > hyou\ ;
+裯 > chuu\ ;
+裛 > youu\ ;
+裘 > kyuu\ ;
+裓 > koku\ ;
+裑 > shin\ ;
+裄 > yuki\ ;
+袱 > fuku\ ;
+袰 > horo\ ;
+袗 > shin\ ;
+衱 > kyou\ ;
+衠 > shun\ ;
+衉 > kaku\ ;
+衄 > jiku\ ;
+衂 > jiku\ ;
+蠰 > shou\ ;
+蠮 > etsu\ ;
+蠨 > shou\ ;
+蠚 > kaku\ ;
+蠖 > kaku\ ;
+蠁 > kyou\ ;
+蟹 > kani\ ;
+蟯 > gyou\ ;
+蟭 > shou\ ;
+蟟 > ryou\ ;
+蟜 > kyou\ ;
+蟎 > dani\ ;
+蟉 > ryuu\ ;
+蟈 > kaku\ ;
+蟇 > hiki\ ;
+蟆 > hiki\ ;
+螿 > shou\ ;
+螽 > shuu\ ;
+螵 > hyou\ ;
+螫 > seki\ ;
+螓 > shin\ ;
+螋 > shuu\ ;
+蝶 > chou\ ;
+蝤 > shuu\ ;
+蝍 > soku\ ;
+蜽 > ryou\ ;
+蜮 > yoku\ ;
+蜩 > chou\ ;
+蜨 > shou\ ;
+蜥 > seki\ ;
+蜣 > kyou\ ;
+蜙 > shou\ ;
+蜐 > kyou\ ;
+蜄 > shin\ ;
+蛺 > kyou\ ;
+蛸 > tako\ ;
+蛭 > hiru\ ;
+蛬 > kyou\ ;
+蛩 > kyou\ ;
+蛒 > kaku\ ;
+蛁 > chou\ ;
+蚸 > reki\ ;
+蚱 > saku\ ;
+蚯 > kyuu\ ;
+蚋 > buyo\ ;
+虹 > niji\ ;
+虯 > kyuu\ ;
+虬 > kyuu\ ;
+虩 > keki\ ;
+虙 > huku\ ;
+虈 > kyou\ ;
+蘽 > ryuu\ ;
+蘗 > haku\ ;
+蘒 > hagi\ ;
+蘆 > ashi\ ;
+蘀 > taku\ ;
+藿 > kaku\ ;
+藶 > reki\ ;
+藭 > kyuu\ ;
+藪 > yabu\ ;
+藨 > hyou\ ;
+藠 > kyou\ ;
+藐 > baku\ ;
+藎 > shin\ ;
+藋 > chou\ ;
+薽 > shin\ ;
+薼 > chin\ ;
+薸 > hyou\ ;
+薜 > heki\ ;
+薓 > shin\ ;
+薑 > kyou\ ;
+薏 > yoku\ ;
+薌 > kyou\ ;
+蕺 > shuu\ ;
+蕭 > shou\ ;
+蕪 > kabu\ ;
+蕣 > shun\ ;
+蕚 > gaku\ ;
+蕗 > fuki\ ;
+蕐 > kuwa\ ;
+蕉 > shou\ ;
+蕈 > shin\ ;
+蔯 > chin\ ;
+蔣 > shou\ ;
+蔟 > zoku\ ;
+蔚 > utsu\ ;
+蔘 > shin\ ;
+蔕 > heta\ ;
+蔔 > fuku\ ;
+蔐 > teki\ ;
+蔏 > shou\ ;
+蔌 > soku\ ;
+蔇 > kike\ ;
+蔆 > ryou\ ;
+蔃 > kyou\ ;
+蓼 > tade\ ;
+蓻 > shuu\ ;
+蓴 > shun\ ;
+蓲 > kyuu\ ;
+蓧 > shou\ ;
+蓚 > chou\ ;
+蓑 > mino\ ;
+蓐 > joku\ ;
+蓁 > shin\ ;
+蒴 > saku\ ;
+蒪 > haku\ ;
+蒦 > waku\ ;
+蒖 > shin\ ;
+蒐 > shuu\ ;
+蒋 > shou\ ;
+葺 > shuu\ ;
+葴 > shin\ ;
+葱 > negi\ ;
+葯 > yaku\ ;
+葤 > chuu\ ;
+葠 > shin\ ;
+葛 > kuzu\ ;
+葚 > chin\ ;
+葙 > shou\ ;
+葍 > huku\ ;
+萼 > gaku\ ;
+萪 > kuwa\ ;
+萩 > hagi\ ;
+萢 > yaji\ ;
+萛 > kyuu\ ;
+萇 > chou\ ;
+萅 > shun\ ;
+菱 > ryou\ ;
+菨 > shou\ ;
+菖 > shou\ ;
+菔 > hoku\ ;
+菐 > hoku\ ;
+莜 > teki\ ;
+莘 > shin\ ;
+莍 > kyuu\ ;
+莀 > shin\ ;
+荍 > kyou\ ;
+茽 > chuu\ ;
+茺 > shuu\ ;
+茯 > fuku\ ;
+茮 > shou\ ;
+茭 > keki\ ;
+茟 > itsu\ ;
+茞 > shin\ ;
+茖 > kaku\ ;
+苜 > boku\ ;
+苙 > ryuu\ ;
+苕 > chou\ ;
+苆 > susa\ ;
+芹 > seri\ ;
+芲 > kuwa\ ;
+芯 > shin\ ;
+芨 > kyuu\ ;
+芒 > nogi\ ;
+芎 > kyuu\ ;
+芀 > shou\ ;
+艽 > kyuu\ ;
+艻 > roku\ ;
+艫 > tomo\ ;
+艧 > waku\ ;
+艢 > shou\ ;
+艝 > sori\ ;
+艏 > shuu\ ;
+舵 > kaji\ ;
+舴 > taku\ ;
+舜 > shun\ ;
+舏 > kyuu\ ;
+舂 > shou\ ;
+臻 > shin\ ;
+臹 > shuu\ ;
+臵 > kaku\ ;
+臰 > shuu\ ;
+臫 > kyou\ ;
+臛 > koku\ ;
+臕 > hyou\ ;
+膲 > shou\ ;
+膮 > kyou\ ;
+膤 > tara\ ;
+膘 > hyou\ ;
+膕 > kaku\ ;
+膓 > chou\ ;
+膋 > ryou\ ;
+膊 > haku\ ;
+膈 > kaku\ ;
+膄 > shuu\ ;
+膃 > otsu\ ;
+腿 > momo\ ;
+腽 > otsu\ ;
+腭 > gaku\ ;
+腘 > kaku\ ;
+腊 > seki\ ;
+脼 > ryou\ ;
+脹 > chou\ ;
+脩 > shuu\ ;
+脤 > shin\ ;
+脛 > sune\ ;
+脋 > kyou\ ;
+胺 > atsu\ ;
+胳 > kaku\ ;
+胤 > tane\ ;
+胗 > shin\ ;
+胄 > chuu\ ;
+肱 > hiji\ ;
+肫 > shun\ ;
+股 > momo\ ;
+肈 > chou\ ;
+肇 > chou\ ;
+肁 > chou\ ;
+聿 > itsu\ ;
+聼 > chou\ ;
+聄 > shin\ ;
+耴 > chou\ ;
+耤 > seki\ ;
+翹 > gyou\ ;
+翲 > hyou\ ;
+翯 > koku\ ;
+翮 > kaku\ ;
+翟 > keki\ ;
+翕 > kyuu\ ;
+翔 > shou\ ;
+翏 > ryuu\ ;
+翊 > yoku\ ;
+翀 > chuu\ ;
+羗 > kyou\ ;
+羌 > kyou\ ;
+羃 > beki\ ;
+羀 > ryuu\ ;
+罿 > shou\ ;
+罶 > ryuu\ ;
+罭 > yoku\ ;
+罧 > shin\ ;
+罠 > wana\ ;
+罅 > hibi\ ;
+纕 > shou\ ;
+纆 > boku\ ;
+繮 > kyou\ ;
+繭 > mayu\ ;
+繦 > kyou\ ;
+繡 > shuu\ ;
+繚 > ryou\ ;
+繒 > shou\ ;
+繍 > shuu\ ;
+繈 > kyou\ ;
+繆 > kyuu\ ;
+績 > seki\ ;
+縹 > hyou\ ;
+縶 > chuu\ ;
+縠 > koku\ ;
+縟 > joku\ ;
+縝 > shin\ ;
+縐 > shuu\ ;
+縉 > shin\ ;
+緲 > byou\ ;
+緝 > shuu\ ;
+緙 > kaku\ ;
+緗 > shou\ ;
+緎 > yoku\ ;
+緆 > seki\ ;
+緅 > shuu\ ;
+緃 > shou\ ;
+綹 > ryuu\ ;
+綶 > kuwa\ ;
+綧 > shun\ ;
+綢 > chuu\ ;
+綝 > chin\ ;
+綛 > kase\ ;
+綌 > keki\ ;
+綅 > shin\ ;
+綃 > shou\ ;
+絿 > kyuu\ ;
+絈 > baku\ ;
+紾 > shin\ ;
+紬 > chuu\ ;
+紖 > chin\ ;
+紃 > shun\ ;
+紂 > chuu\ ;
+糾 > kyuu\ ;
+糺 > kyuu\ ;
+糶 > chou\ ;
+糴 > teki\ ;
+糠 > nuka\ ;
+糗 > kyuu\ ;
+糔 > shuu\ ;
+糓 > koku\ ;
+糊 > nori\ ;
+粻 > chou\ ;
+粷 > kiku\ ;
+粶 > roku\ ;
+粵 > etsu\ ;
+粱 > ryou\ ;
+粮 > ryou\ ;
+粤 > etsu\ ;
+粕 > haku\ ;
+粂 > kume\ ;
+籾 > momi\ ;
+籰 > waku\ ;
+籥 > yaku\ ;
+籤 > kuji\ ;
+籜 > taku\ ;
+籕 > ryuu\ ;
+籒 > shuu\ ;
+籏 > hata\ ;
+籌 > chuu\ ;
+籊 > teki\ ;
+籆 > waku\ ;
+籀 > chuu\ ;
+簶 > roku\ ;
+簱 > hata\ ;
+簫 > shou\ ;
+簪 > shin\ ;
+簨 > shun\ ;
+簥 > kyou\ ;
+簙 > haku\ ;
+簘 > shou\ ;
+簗 > yana\ ;
+簏 > roku\ ;
+簎 > saku\ ;
+簌 > soku\ ;
+簉 > shuu\ ;
+簀 > saku\ ;
+篸 > shin\ ;
+篴 > teki\ ;
+篠 > shou\ ;
+篛 > jaku\ ;
+篗 > waku\ ;
+篋 > kyou\ ;
+箺 > shun\ ;
+箴 > shin\ ;
+箰 > shun\ ;
+箬 > joku\ ;
+箙 > fuku\ ;
+箔 > haku\ ;
+箍 > taga\ ;
+箆 > hera\ ;
+筿 > shou\ ;
+筺 > kyou\ ;
+筴 > kyou\ ;
+筱 > shou\ ;
+筰 > saku\ ;
+筐 > kyou\ ;
+筇 > kyou\ ;
+笿 > raku\ ;
+笮 > saku\ ;
+笧 > saku\ ;
+笊 > zaru\ ;
+笈 > kyuu\ ;
+竻 > roku\ ;
+竺 > toku\ ;
+竴 > shun\ ;
+竨 > chou\ ;
+竦 > shou\ ;
+竣 > shun\ ;
+竜 > ryuu\ ;
+竆 > kyuu\ ;
+竅 > kyou\ ;
+窿 > ryuu\ ;
+窵 > chou\ ;
+窯 > kama\ ;
+窕 > chou\ ;
+窄 > saku\ ;
+窀 > chun\ ;
+穹 > kyuu\ ;
+穸 > seki\ ;
+穵 > atsu\ ;
+穫 > kaku\ ;
+穪 > shou\ ;
+穙 > hoku\ ;
+穕 > shou\ ;
+穐 > shuu\ ;
+穆 > boku\ ;
+穀 > koku\ ;
+稹 > shin\ ;
+稸 > kiku\ ;
+稠 > chuu\ ;
+稜 > ryou\ ;
+稕 > shun\ ;
+稑 > riku\ ;
+秦 > shin\ ;
+秝 > reki\ ;
+种 > chuu\ ;
+秃 > toku\ ;
+禴 > yaku\ ;
+禛 > shin\ ;
+祿 > roku\ ;
+祾 > ryou\ ;
+祲 > shin\ ;
+票 > hyou\ ;
+祧 > chou\ ;
+祥 > shou\ ;
+祏 > seki\ ;
+礿 > yaku\ ;
+礴 > haku\ ;
+礭 > kaku\ ;
+礐 > kaku\ ;
+礁 > shou\ ;
+磿 > reki\ ;
+磶 > seki\ ;
+磧 > seki\ ;
+磦 > hyou\ ;
+磟 > riku\ ;
+磔 > taku\ ;
+碻 > kaku\ ;
+碵 > seki\ ;
+碪 > chin\ ;
+碩 > seki\ ;
+碡 > toku\ ;
+硾 > tsui\ ;
+硺 > taku\ ;
+硴 > kaki\ ;
+确 > kaku\ ;
+硫 > ryuu\ ;
+硞 > kaku\ ;
+硌 > raku\ ;
+砷 > shin\ ;
+砧 > chin\ ;
+砡 > giku\ ;
+砝 > kyou\ ;
+砉 > keki\ ;
+矱 > waku\ ;
+矯 > kyou\ ;
+矪 > chuu\ ;
+矧 > shin\ ;
+矤 > shin\ ;
+矠 > saku\ ;
+矟 > saku\ ;
+矞 > itsu\ ;
+矛 > hoko\ ;
+矍 > kaku\ ;
+瞾 > shou\ ;
+瞧 > shou\ ;
+瞟 > hyou\ ;
+瞚 > shun\ ;
+瞕 > shou\ ;
+瞔 > saku\ ;
+瞋 > shin\ ;
+瞄 > byou\ ;
+睗 > seki\ ;
+睖 > chou\ ;
+眾 > shuu\ ;
+眽 > baku\ ;
+眹 > chin\ ;
+眶 > kyou\ ;
+眕 > shin\ ;
+眒 > shin\ ;
+眇 > byou\ ;
+盾 > tate\ ;
+盹 > shun\ ;
+盅 > chuu\ ;
+皹 > hibi\ ;
+皸 > hibi\ ;
+皴 > shun\ ;
+皪 > reki\ ;
+皦 > kyou\ ;
+皢 > kyou\ ;
+皟 > saku\ ;
+皛 > kyou\ ;
+皙 > seki\ ;
+皍 > soku\ ;
+皀 > hyuu\ ;
+癨 > kaku\ ;
+癧 > reki\ ;
+癥 > chou\ ;
+癋 > kaku\ ;
+癅 > ryuu\ ;
+癄 > shou\ ;
+癃 > ryuu\ ;
+癁 > fuku\ ;
+瘼 > baku\ ;
+瘹 > chou\ ;
+瘴 > shou\ ;
+瘳 > chuu\ ;
+瘲 > shou\ ;
+瘮 > shin\ ;
+瘭 > hyou\ ;
+瘤 > kobu\ ;
+瘠 > seki\ ;
+瘇 > shou\ ;
+痮 > chou\ ;
+痟 > shou\ ;
+痜 > toku\ ;
+疹 > shin\ ;
+疢 > chin\ ;
+疚 > kyuu\ ;
+疔 > chou\ ;
+疒 > daku\ ;
+疇 > chuu\ ;
+疆 > kyou\ ;
+疅 > kyou\ ;
+畼 > chou\ ;
+畻 > shou\ ;
+畺 > kyou\ ;
+畵 > kaku\ ;
+畴 > chuu\ ;
+畱 > ryuu\ ;
+畯 > shun\ ;
+畩 > kesa\ ;
+畛 > shin\ ;
+畐 > fuku\ ;
+畄 > ryuu\ ;
+畃 > shun\ ;
+甼 > chou\ ;
+甪 > roku\ ;
+甧 > shin\ ;
+甡 > shin\ ;
+甞 > shou\ ;
+甕 > mika\ ;
+甓 > heki\ ;
+甃 > shuu\ ;
+瓺 > chou\ ;
+瓤 > shou\ ;
+瓢 > hyou\ ;
+瓟 > haku\ ;
+璹 > shuu\ ;
+璧 > heki\ ;
+璢 > ryuu\ ;
+璡 > shin\ ;
+璞 > haku\ ;
+璙 > ryou\ ;
+璋 > shou\ ;
+璆 > kyuu\ ;
+瑲 > shou\ ;
+瑨 > shin\ ;
+瑧 > shin\ ;
+瑠 > ryuu\ ;
+瑕 > kizu\ ;
+瑒 > chou\ ;
+瑃 > chun\ ;
+琱 > chou\ ;
+琭 > koku\ ;
+琩 > shou\ ;
+琢 > taku\ ;
+琛 > chin\ ;
+琉 > ryuu\ ;
+琇 > shuu\ ;
+珦 > kyou\ ;
+珣 > shun\ ;
+珞 > raku\ ;
+珙 > kyou\ ;
+珒 > shin\ ;
+珏 > kaku\ ;
+珎 > chin\ ;
+珋 > ryuu\ ;
+珅 > shin\ ;
+珀 > haku\ ;
+玿 > shou\ ;
+玓 > teki\ ;
+玅 > myou\ ;
+獶 > nyou\ ;
+獵 > ryou\ ;
+獠 > ryou\ ;
+獟 > gyou\ ;
+獐 > shou\ ;
+獏 > baku\ ;
+獎 > shou\ ;
+獍 > kyou\ ;
+猟 > ryou\ ;
+猖 > shou\ ;
+猋 > hyou\ ;
+狥 > shun\ ;
+狢 > kaku\ ;
+狛 > haku\ ;
+狇 > boku\ ;
+狆 > chin\ ;
+狄 > teki\ ;
+犱 > keki\ ;
+犨 > shuu\ ;
+犢 > toku\ ;
+犖 > raku\ ;
+牿 > koku\ ;
+牞 > kyuu\ ;
+牙 > kiba\ ;
+牘 > toku\ ;
+牔 > haku\ ;
+牆 > shou\ ;
+爿 > shou\ ;
+爴 > kaku\ ;
+爯 > shou\ ;
+爚 > yaku\ ;
+爀 > kaku\ ;
+燸 > jiyu\ ;
+燮 > shou\ ;
+燚 > itsu\ ;
+燖 > shin\ ;
+燎 > ryou\ ;
+燋 > shou\ ;
+熛 > hyou\ ;
+熇 > koku\ ;
+熄 > soku\ ;
+煁 > shin\ ;
+焻 > shou\ ;
+焌 > shun\ ;
+焇 > shou\ ;
+焆 > etsu\ ;
+焅 > koku\ ;
+焃 > kaku\ ;
+烙 > raku\ ;
+炸 > saku\ ;
+炤 > shou\ ;
+灸 > kyuu\ ;
+灬 > hyou\ ;
+灥 > shun\ ;
+灄 > shou\ ;
+瀹 > seku\ ;
+瀷 > yoku\ ;
+瀧 > taki\ ;
+瀟 > shou\ ;
+瀓 > chou\ ;
+瀑 > baku\ ;
+瀏 > ryuu\ ;
+瀋 > shin\ ;
+瀆 > toku\ ;
+濼 > roku\ ;
+濹 > boku\ ;
+濮 > hoku\ ;
+濬 > shun\ ;
+濩 > kaku\ ;
+濈 > shuu\ ;
+濅 > shin\ ;
+澼 > heki\ ;
+澵 > shin\ ;
+澠 > shou\ ;
+澙 > seki\ ;
+澓 > huku\ ;
+澑 > ryuu\ ;
+澆 > gyou\ ;
+澂 > chou\ ;
+潟 > kata\ ;
+潝 > kyuu\ ;
+潗 > shuu\ ;
+漻 > ryou\ ;
+漳 > shou\ ;
+漘 > shin\ ;
+漍 > kaku\ ;
+漉 > roku\ ;
+滲 > shin\ ;
+滮 > hyuu\ ;
+滫 > shuu\ ;
+滝 > taki\ ;
+滓 > kasu\ ;
+滌 > deki\ ;
+溽 > joku\ ;
+溱 > shin\ ;
+溍 > shin\ ;
+湫 > shou\ ;
+湨 > keki\ ;
+湘 > shou\ ;
+湒 > shuu\ ;
+渺 > byou\ ;
+渞 > shuu\ ;
+渗 > shin\ ;
+渌 > roku\ ;
+淼 > byou\ ;
+淴 > otsu\ ;
+淳 > shun\ ;
+淩 > ryou\ ;
+淥 > roku\ ;
+淢 > yoku\ ;
+淞 > shou\ ;
+淕 > riku\ ;
+淌 > shou\ ;
+淅 > seki\ ;
+涿 > toku\ ;
+涉 > shou\ ;
+浹 > shou\ ;
+浞 > saku\ ;
+浗 > kyuu\ ;
+洶 > kyou\ ;
+洵 > shun\ ;
+洦 > baku\ ;
+洟 > hana\ ;
+洓 > saku\ ;
+洑 > huku\ ;
+泵 > ryuu\ ;
+泧 > etsu\ ;
+泆 > itsu\ ;
+泅 > shuu\ ;
+沰 > taku\ ;
+沐 > boku\ ;
+沉 > chin\ ;
+沃 > yoku\ ;
+沁 > shin\ ;
+汹 > kyou\ ;
+汩 > itsu\ ;
+汨 > beki\ ;
+汛 > shin\ ;
+汐 > seki\ ;
+汋 > saku\ ;
+氻 > roku\ ;
+氶 > shou\ ;
+氎 > chou\ ;
+氅 > shou\ ;
+毱 > kiku\ ;
+毣 > boku\ ;
+毄 > keki\ ;
+毃 > kaku\ ;
+殾 > shun\ ;
+殼 > kaku\ ;
+殰 > toku\ ;
+殭 > kyou\ ;
+殤 > shou\ ;
+殠 > shuu\ ;
+殟 > otsu\ ;
+殑 > kyou\ ;
+殍 > hyou\ ;
+歵 > saku\ ;
+歰 > shuu\ ;
+歙 > kyuu\ ;
+歒 > teki\ ;
+歊 > kyou\ ;
+欶 > saku\ ;
+欫 > keki\ ;
+欇 > shou\ ;
+欂 > haku\ ;
+櫬 > shin\ ;
+櫪 > reki\ ;
+櫟 > reki\ ;
+櫝 > toku\ ;
+檴 > kaku\ ;
+檪 > reki\ ;
+檝 > shuu\ ;
+檗 > haku\ ;
+檍 > yoku\ ;
+檄 > geki\ ;
+橿 > kyou\ ;
+橸 > shou\ ;
+橳 > nude\ ;
+橲 > zusa\ ;
+橡 > shou\ ;
+橐 > taku\ ;
+橊 > ryou\ ;
+樾 > etsu\ ;
+樽 > taru\ ;
+樺 > kaba\ ;
+樸 > boku\ ;
+樰 > tara\ ;
+樢 > boku\ ;
+樟 > shou\ ;
+樛 > kyuu\ ;
+樚 > roku\ ;
+樕 > soku\ ;
+樑 > ryou\ ;
+樀 > teki\ ;
+槳 > shou\ ;
+槲 > koku\ ;
+槮 > shin\ ;
+槨 > kaku\ ;
+槢 > shuu\ ;
+槗 > kyou\ ;
+槖 > taku\ ;
+槍 > yari\ ;
+槊 > saku\ ;
+槅 > kaku\ ;
+榺 > shou\ ;
+榷 > kaku\ ;
+榴 > ryuu\ ;
+榲 > otsu\ ;
+榫 > shun\ ;
+榧 > kaya\ ;
+榖 > koku\ ;
+榒 > doku\ ;
+榅 > otsu\ ;
+榁 > muro\ ;
+楸 > shuu\ ;
+楫 > shuu\ ;
+楢 > shuu\ ;
+楉 > jaku\ ;
+楅 > hyku\ ;
+椨 > tafu\ ;
+椥 > nagi\ ;
+椙 > sugi\ ;
+椓 > taku\ ;
+椒 > shou\ ;
+椋 > ryou\ ;
+椈 > kiku\ ;
+椆 > chuu\ ;
+椁 > kaku\ ;
+棽 > chin\ ;
+棫 > yoku\ ;
+棟 > mune\ ;
+棘 > toge\ ;
+棏 > toku\ ;
+梮 > kiku\ ;
+梥 > shou\ ;
+梣 > shin\ ;
+梜 > kyou\ ;
+梏 > koku\ ;
+梂 > kyuu\ ;
+梁 > hari\ ;
+桺 > ryuu\ ;
+桷 > kaku\ ;
+桝 > masu\ ;
+桘 > tsui\ ;
+桕 > kyuu\ ;
+桑 > kuwa\ ;
+桌 > taku\ ;
+框 > kyou\ ;
+栿 > fuku\ ;
+核 > kaku\ ;
+栱 > kyou\ ;
+株 > kabu\ ;
+栢 > haku\ ;
+栅 > saku\ ;
+栂 > toga\ ;
+柾 > kyuu\ ;
+柩 > kyuu\ ;
+柞 > saku\ ;
+柝 > taku\ ;
+柗 > shou\ ;
+柏 > haku\ ;
+枷 > kase\ ;
+枵 > kyou\ ;
+枩 > shou\ ;
+枡 > masu\ ;
+枠 > waku\ ;
+析 > seki\ ;
+极 > kyou\ ;
+杻 > chuu\ ;
+杶 > chun\ ;
+杪 > byou\ ;
+杦 > sugi\ ;
+杣 > soma\ ;
+杢 > moku\ ;
+杙 > yoku\ ;
+杔 > taku\ ;
+朽 > kyuu\ ;
+朕 > chin\ ;
+朔 > saku\ ;
+朓 > chou\ ;
+朒 > niku\ ;
+朐 > kyou\ ;
+曻 > shou\ ;
+曰 > etsu\ ;
+曟 > shin\ ;
+曏 > kyou\ ;
+曌 > shou\ ;
+曉 > gyou\ ;
+曆 > reki\ ;
+暸 > ryou\ ;
+暲 > shou\ ;
+暙 > shun\ ;
+暍 > etsu\ ;
+晿 > shou\ ;
+晾 > ryou\ ;
+晳 > seki\ ;
+晰 > seki\ ;
+晫 > taku\ ;
+晨 > shin\ ;
+晙 > shun\ ;
+晑 > kyou\ ;
+晌 > shou\ ;
+晋 > shin\ ;
+晉 > shin\ ;
+晁 > chou\ ;
+晀 > chou\ ;
+昶 > chou\ ;
+昮 > shou\ ;
+昣 > shin\ ;
+昌 > shou\ ;
+昃 > soku\ ;
+旾 > shun\ ;
+旧 > kyuu\ ;
+旒 > ryuu\ ;
+旐 > chou\ ;
+旈 > ryuu\ ;
+斲 > taku\ ;
+斮 > saku\ ;
+斡 > atsu\ ;
+斠 > kaku\ ;
+斟 > shin\ ;
+斛 > koku\ ;
+斘 > shou\ ;
+斈 > gaku\ ;
+敿 > kyou\ ;
+敽 > kyou\ ;
+敫 > seku\ ;
+敞 > shou\ ;
+敒 > chin\ ;
+敐 > shin\ ;
+敎 > kyou\ ;
+敋 > kaku\ ;
+敇 > saku\ ;
+攵 > boku\ ;
+攴 > hoku\ ;
+攪 > kaku\ ;
+攊 > fuki\ ;
+攉 > kaku\ ;
+擿 > teki\ ;
+擴 > kaku\ ;
+擲 > teki\ ;
+擢 > teki\ ;
+擘 > haku\ ;
+擗 > heki\ ;
+擑 > shou\ ;
+擌 > saku\ ;
+擊 > geki\ ;
+擉 > saku\ ;
+擇 > taku\ ;
+撹 > kaku\ ;
+撬 > kyou\ ;
+撩 > ryou\ ;
+撨 > shou\ ;
+撟 > kyou\ ;
+撑 > chou\ ;
+撐 > chou\ ;
+摽 > hyou\ ;
+摭 > seki\ ;
+摝 > roku\ ;
+摘 > teki\ ;
+摑 > kaku\ ;
+摏 > shou\ ;
+摎 > kyuu\ ;
+搿 > kaku\ ;
+搾 > saku\ ;
+搶 > shou\ ;
+搦 > jaku\ ;
+搢 > shin\ ;
+搠 > saku\ ;
+搏 > haku\ ;
+搊 > shuu\ ;
+搉 > kaku\ ;
+揪 > shuu\ ;
+揕 > chin\ ;
+掵 > haba\ ;
+掬 > kiku\ ;
+掦 > teki\ ;
+掤 > hyou\ ;
+掚 > ryou\ ;
+掕 > ryou\ ;
+捷 > shou\ ;
+捔 > kaku\ ;
+捒 > shou\ ;
+捉 > soku\ ;
+捄 > kyuu\ ;
+捁 > kaku\ ;
+挟 > kyou\ ;
+挖 > atsu\ ;
+挑 > chou\ ;
+挌 > kaku\ ;
+挋 > shin\ ;
+拲 > kyou\ ;
+拱 > kyou\ ;
+拫 > shuu\ ;
+拡 > kaku\ ;
+拓 > taku\ ;
+拆 > taku\ ;
+抻 > shin\ ;
+択 > taku\ ;
+抍 > shou\ ;
+抄 > shou\ ;
+抂 > kyou\ ;
+扨 > sate\ ;
+扚 > chou\ ;
+托 > taku\ ;
+扑 > hoku\ ;
+扐 > roku\ ;
+扄 > shou\ ;
+戳 > taku\ ;
+戮 > riku\ ;
+戫 > yoku\ ;
+戢 > shuu\ ;
+戝 > zoku\ ;
+戕 > shou\ ;
+戉 > etsu\ ;
+戈 > hoko\ ;
+懾 > shou\ ;
+懲 > chou\ ;
+懟 > tsui\ ;
+懏 > shun\ ;
+憭 > ryou\ ;
+憍 > kyou\ ;
+憀 > ryou\ ;
+慿 > hyou\ ;
+慼 > seki\ ;
+慴 > shou\ ;
+慯 > shou\ ;
+慫 > shou\ ;
+慞 > shou\ ;
+慝 > toku\ ;
+慓 > hyou\ ;
+慎 > shin\ ;
+愽 > haku\ ;
+愼 > shin\ ;
+愶 > kyou\ ;
+愵 > deki\ ;
+愨 > kaku\ ;
+愜 > kyou\ ;
+愙 > kaku\ ;
+愖 > shin\ ;
+愁 > shuu\ ;
+愀 > shou\ ;
+惻 > soku\ ;
+惷 > shun\ ;
+惵 > chou\ ;
+惪 > toku\ ;
+惝 > shou\ ;
+惖 > teki\ ;
+惕 > teki\ ;
+惊 > ryou\ ;
+惆 > chuu\ ;
+惄 > deki\ ;
+悵 > chou\ ;
+悳 > toku\ ;
+悦 > etsu\ ;
+悥 > yoku\ ;
+悢 > ryou\ ;
+悚 > shou\ ;
+悅 > etsu\ ;
+恷 > kyuu\ ;
+恱 > etsu\ ;
+恪 > kaku\ ;
+恧 > jiku\ ;
+恟 > kyou\ ;
+恔 > kyou\ ;
+恌 > chou\ ;
+恊 > kyou\ ;
+恇 > kyou\ ;
+怳 > kyou\ ;
+怗 > chou\ ;
+怍 > saku\ ;
+怊 > chou\ ;
+忸 > jiku\ ;
+忷 > kyou\ ;
+忱 > shin\ ;
+忪 > shou\ ;
+忡 > chuu\ ;
+忠 > chuu\ ;
+忒 > toku\ ;
+忑 > toku\ ;
+忇 > roku\ ;
+徼 > kyou\ ;
+徸 > shou\ ;
+德 > toku\ ;
+徵 > chou\ ;
+徱 > hyou\ ;
+徢 > shou\ ;
+徜 > shou\ ;
+徇 > shun\ ;
+彸 > shou\ ;
+彶 > kihu\ ;
+彳 > teki\ ;
+彰 > shou\ ;
+彪 > hyou\ ;
+彟 > kaku\ ;
+彔 > roku\ ;
+彊 > kyou\ ;
+彅 > nagi\ ;
+强 > kyou\ ;
+弶 > gyau\ ;
+弫 > shin\ ;
+弜 > kyou\ ;
+弗 > doru\ ;
+弓 > yumi\ ;
+弌 > itsu\ ;
+弋 > yoku\ ;
+廾 > kyou\ ;
+廸 > teki\ ;
+廳 > chou\ ;
+廰 > chou\ ;
+廫 > ryou\ ;
+廧 > shau\ ;
+廦 > heki\ ;
+廠 > shou\ ;
+廟 > byou\ ;
+廙 > yoku\ ;
+廘 > roku\ ;
+廖 > ryou\ ;
+廋 > shuu\ ;
+庿 > byou\ ;
+庴 > seki\ ;
+庱 > chou\ ;
+庥 > kyuu\ ;
+庠 > shou\ ;
+幬 > chuu\ ;
+幦 > beki\ ;
+幞 > hoku\ ;
+幛 > shou\ ;
+幙 > baku\ ;
+幘 > saku\ ;
+幗 > kaku\ ;
+幖 > hyou\ ;
+幓 > shin\ ;
+幎 > beki\ ;
+幂 > beki\ ;
+帤 > geyo\ ;
+帢 > kahu\ ;
+帛 > haku\ ;
+巩 > kyou\ ;
+巤 > rehu\ ;
+巐 > chou\ ;
+嶽 > gaku\ ;
+嶯 > shiu\ ;
+嶫 > gyou\ ;
+嶪 > gyou\ ;
+嶨 > kaku\ ;
+嶢 > gyou\ ;
+嶠 > kyou\ ;
+嶜 > shin\ ;
+嶛 > ryou\ ;
+嶚 > ryou\ ;
+嶒 > shou\ ;
+嶐 > ryuu\ ;
+嶈 > shau\ ;
+嶂 > shou\ ;
+嵾 > shin\ ;
+嵹 > kyou\ ;
+嵷 > shou\ ;
+嵊 > shou\ ;
+嵀 > chiu\ ;
+崿 > gaku\ ;
+崷 > shiu\ ;
+崨 > sehu\ ;
+崧 > shuu\ ;
+崚 > ryou\ ;
+崈 > shuu\ ;
+峽 > kyou\ ;
+峻 > shun\ ;
+峷 > shin\ ;
+峭 > shou\ ;
+峪 > yoku\ ;
+峣 > gyou\ ;
+峡 > kyou\ ;
+峋 > shun\ ;
+峉 > gaku\ ;
+峈 > raku\ ;
+峆 > kahu\ ;
+峅 > kura\ ;
+峀 > shuu\ ;
+岼 > yuri\ ;
+岶 > haku\ ;
+岳 > take\ ;
+岫 > shuu\ ;
+岦 > ryuu\ ;
+岝 > saku\ ;
+岑 > shin\ ;
+岌 > kyuu\ ;
+屾 > shin\ ;
+屶 > nata\ ;
+屰 > geki\ ;
+屪 > ryou\ ;
+屐 > geki\ ;
+屌 > chou\ ;
+尿 > nyou\ ;
+尰 > shou\ ;
+尭 > gyou\ ;
+尦 > ryou\ ;
+尥 > ryou\ ;
+尞 > ryou\ ;
+尙 > shou\ ;
+將 > shou\ ;
+尅 > koku\ ;
+寴 > shin\ ;
+寯 > shun\ ;
+寮 > ryou\ ;
+寞 > baku\ ;
+寖 > shin\ ;
+寑 > shin\ ;
+寉 > kaku\ ;
+寅 > tora\ ;
+宸 > shin\ ;
+宷 > shin\ ;
+宫 > kyuu\ ;
+宨 > tewa\ ;
+宙 > chuu\ ;
+宒 > chun\ ;
+宍 > niku\ ;
+宆 > kyou\ ;
+孞 > shin\ ;
+孇 > sawa\ ;
+嬼 > riwa\ ;
+嬸 > shin\ ;
+嬶 > kaka\ ;
+嬧 > shin\ ;
+嬦 > chiu\ ;
+嬥 > chou\ ;
+嬙 > shou\ ;
+嬅 > kuwa\ ;
+嫿 > kaku\ ;
+嫞 > shou\ ;
+嫜 > shau\ ;
+嫖 > hyou\ ;
+嫀 > shin\ ;
+媷 > joku\ ;
+媳 > seki\ ;
+媰 > shiu\ ;
+媝 > shuu\ ;
+媛 > hime\ ;
+媋 > shun\ ;
+媃 > jyuu\ ;
+婳 > kaku\ ;
+婤 > shuu\ ;
+婕 > shou\ ;
+婊 > hyou\ ;
+婈 > ryou\ ;
+婅 > kiku\ ;
+娼 > shou\ ;
+娷 > tsui\ ;
+娖 > saku\ ;
+娕 > saku\ ;
+娀 > shuu\ ;
+姺 > shin\ ;
+姠 > shou\ ;
+姜 > kyou\ ;
+妽 > shin\ ;
+妱 > shou\ ;
+妯 > chuu\ ;
+妕 > chuu\ ;
+妐 > shou\ ;
+奭 > seki\ ;
+奬 > shou\ ;
+奨 > shou\ ;
+奞 > shun\ ;
+奝 > chou\ ;
+夌 > ryou\ ;
+夋 > shun\ ;
+壿 > shun\ ;
+壹 > ichi\ ;
+壳 > kaku\ ;
+壢 > reki\ ;
+壗 > mama\ ;
+壑 > gaku\ ;
+壆 > kaku\ ;
+墼 > keki\ ;
+墻 > shou\ ;
+墹 > mama\ ;
+墫 > shun\ ;
+墣 > haku\ ;
+墜 > tsui\ ;
+墒 > shou\ ;
+墑 > teki\ ;
+墏 > shou\ ;
+墋 > shin\ ;
+墇 > shou\ ;
+墄 > soku\ ;
+墂 > hyou\ ;
+塾 > juku\ ;
+塻 > baku\ ;
+塶 > koku\ ;
+塨 > kyou\ ;
+塥 > kaku\ ;
+塙 > kaku\ ;
+塖 > shou\ ;
+塓 > beki\ ;
+塍 > shou\ ;
+塉 > seki\ ;
+堻 > shin\ ;
+堹 > shou\ ;
+堯 > gyou\ ;
+堮 > gaku\ ;
+堘 > shou\ ;
+埻 > shun\ ;
+埫 > shou\ ;
+埖 > gomi\ ;
+埐 > shin\ ;
+埈 > shun\ ;
+埆 > kaku\ ;
+埁 > shin\ ;
+垳 > gake\ ;
+垬 > kyou\ ;
+垘 > huku\ ;
+坼 > taku\ ;
+坶 > boku\ ;
+坵 > kyou\ ;
+坴 > riku\ ;
+坧 > seki\ ;
+圾 > gyuu\ ;
+圸 > yama\ ;
+圳 > shiu\ ;
+圥 > roku\ ;
+圤 > haku\ ;
+圠 > atsu\ ;
+圀 > koku\ ;
+囻 > koku\ ;
+囶 > koku\ ;
+囯 > koku\ ;
+团 > shuu\ ;
+囟 > shin\ ;
+囚 > shuu\ ;
+嚳 > koku\ ;
+嚫 > shin\ ;
+嚩 > haku\ ;
+嚦 > reki\ ;
+嚠 > ryuu\ ;
+嚝 > kaku\ ;
+嚗 > haku\ ;
+嚐 > shou\ ;
+嚍 > shin\ ;
+嚋 > chuu\ ;
+嚇 > kaku\ ;
+嚄 > kaku\ ;
+嚁 > teki\ ;
+噭 > kyou\ ;
+噩 > kaku\ ;
+噦 > etsu\ ;
+噗 > boku\ ;
+噏 > kyuu\ ;
+噎 > itsu\ ;
+噊 > itsu\ ;
+嘿 > boku\ ;
+嘼 > kyuu\ ;
+嘺 > kyou\ ;
+嘸 > sazo\ ;
+嘯 > shou\ ;
+嘨 > shou\ ;
+嘞 > roku\ ;
+嘚 > toku\ ;
+嘖 > saku\ ;
+嘓 > kaku\ ;
+嘂 > kyou\ ;
+嘁 > sahu\ ;
+嘀 > saku\ ;
+嗽 > ugai\ ;
+嗼 > baku\ ;
+嗝 > kaku\ ;
+嗗 > atsu\ ;
+嗔 > shin\ ;
+嗑 > kahu\ ;
+嗍 > saku\ ;
+嗋 > kyou\ ;
+嗆 > shou\ ;
+嗀 > kaku\ ;
+喲 > yaku\ ;
+喬 > kyou\ ;
+喨 > ryou\ ;
+喢 > tehu\ ;
+喞 > soku\ ;
+喁 > gyou\ ;
+喀 > kaku\ ;
+啾 > shuu\ ;
+啯 > kaku\ ;
+啦 > rahu\ ;
+啢 > ryou\ ;
+啋 > kyou\ ;
+啇 > teki\ ;
+啅 > taku\ ;
+啄 > taku\ ;
+啃 > shuu\ ;
+唽 > seki\ ;
+唼 > sahu\ ;
+唴 > kyou\ ;
+售 > shuu\ ;
+唧 > soku\ ;
+唡 > ryou\ ;
+唚 > shin\ ;
+唙 > teki\ ;
+唒 > shuu\ ;
+唊 > kyou\ ;
+唃 > koku\ ;
+哨 > shou\ ;
+响 > kyou\ ;
+哂 > shin\ ;
+咹 > atsu\ ;
+咶 > kuui\ ;
+咯 > kaku\ ;
+咢 > gaku\ ;
+咠 > shuu\ ;
+咟 > kaku\ ;
+咋 > saku\ ;
+呻 > shin\ ;
+呺 > kyou\ ;
+呹 > itsu\ ;
+呫 > tehu\ ;
+呏 > shou\ ;
+呎 > seki\ ;
+呌 > kyou\ ;
+呄 > koku\ ;
+吿 > koku\ ;
+吵 > byou\ ;
+吲 > shin\ ;
+吣 > shin\ ;
+吢 > shin\ ;
+吜 > chuu\ ;
+叼 > chou\ ;
+叻 > roku\ ;
+叶 > kyou\ ;
+叠 > chou\ ;
+叒 > jaku\ ;
+叉 > mata\ ;
+厰 > shou\ ;
+厯 > reki\ ;
+厤 > reki\ ;
+厝 > saku\ ;
+厒 > kahu\ ;
+压 > atsu\ ;
+厇 > taku\ ;
+卾 > gaku\ ;
+卽 > soku\ ;
+卲 > shou\ ;
+卭 > kyou\ ;
+卡 > sahu\ ;
+卜 > boku\ ;
+卙 > shou\ ;
+卌 > shuu\ ;
+卂 > shin\ ;
+匿 > toku\ ;
+匵 > toku\ ;
+匩 > kyou\ ;
+匧 > kyou\ ;
+匣 > hako\ ;
+匡 > kyou\ ;
+匞 > shou\ ;
+匛 > kyuu\ ;
+匓 > kyou\ ;
+匑 > kyuu\ ;
+匐 > hoku\ ;
+匊 > kiku\ ;
+匉 > hyou\ ;
+匈 > kyou\ ;
+勼 > kyuu\ ;
+勰 > kyou\ ;
+勥 > kyou\ ;
+勣 > seki\ ;
+勠 > riku\ ;
+勒 > roku\ ;
+勀 > koku\ ;
+劻 > kyou\ ;
+劰 > baku\ ;
+劮 > itsu\ ;
+劭 > shou\ ;
+劦 > kyou\ ;
+劜 > atsu\ ;
+劐 > kaku\ ;
+劋 > syou\ ;
+劉 > ryuu\ ;
+劈 > heki\ ;
+劅 > taku\ ;
+劁 > syou\ ;
+剹 > riku\ ;
+副 > fuku\ ;
+剫 > taku\ ;
+剨 > kaku\ ;
+剢 > toku\ ;
+剝 > haku\ ;
+剔 > teki\ ;
+剒 > saku\ ;
+剋 > koku\ ;
+刼 > kyou\ ;
+刦 > kyou\ ;
+刟 > chou\ ;
+刘 > ryuu\ ;
+凸 > deko\ ;
+凶 > kyou\ ;
+凴 > hyou\ ;
+凪 > nagi\ ;
+凧 > tako\ ;
+凙 > taku\ ;
+凋 > chou\ ;
+凉 > ryou\ ;
+凇 > shou\ ;
+冾 > kyou\ ;
+冼 > shou\ ;
+况 > kyou\ ;
+冲 > chuu\ ;
+冰 > hyou\ ;
+冫 > hyou\ ;
+冪 > beki\ ;
+冢 > chou\ ;
+冖 > beki\ ;
+冑 > chuu\ ;
+典 > nori\ ;
+兢 > kyou\ ;
+兟 > shin\ ;
+兓 > shin\ ;
+兏 > chou\ ;
+克 > koku\ ;
+兇 > kyou\ ;
+兆 > chou\ ;
+兂 > shin\ ;
+儵 > shuu\ ;
+儴 > shou\ ;
+儮 > reki\ ;
+儭 > shin\ ;
+儬 > shin\ ;
+儦 > hyou\ ;
+儠 > ryou\ ;
+儔 > chuu\ ;
+儁 > shun\ ;
+僽 > shuu\ ;
+僻 > heki\ ;
+僺 > shou\ ;
+僵 > kyou\ ;
+僰 > hoku\ ;
+僥 > gyou\ ;
+僘 > shou\ ;
+僇 > riku\ ;
+傽 > shou\ ;
+傹 > kyou\ ;
+傶 > soku\ ;
+傱 > shou\ ;
+傕 > kaku\ ;
+偷 > chuu\ ;
+偱 > shun\ ;
+偮 > shuu\ ;
+偆 > shun\ ;
+偅 > shou\ ;
+偁 > shou\ ;
+倰 > ryou\ ;
+倯 > shou\ ;
+倬 > taku\ ;
+倢 > shou\ ;
+倡 > shou\ ;
+倜 > teki\ ;
+倘 > shou\ ;
+倆 > ryou\ ;
+倃 > kyuu\ ;
+倀 > chou\ ;
+俵 > hyou\ ;
+俣 > mata\ ;
+俢 > shuu\ ;
+俠 > kyou\ ;
+俍 > ryou\ ;
+俋 > chuu\ ;
+俈 > koku\ ;
+俇 > kyau\ ;
+俅 > kyuu\ ;
+侺 > shin\ ;
+侶 > tomo\ ;
+侴 > chuu\ ;
+侲 > shin\ ;
+侠 > kyan\ ;
+侜 > chuu\ ;
+侚 > shun\ ;
+侂 > taku\ ;
+侁 > shin\ ;
+佾 > itsu\ ;
+佻 > chou\ ;
+佰 > haku\ ;
+佬 > ryou\ ;
+佫 > kaku\ ;
+佗 > wabi\ ;
+佔 > chin\ ;
+佋 > shou\ ;
+伷 > chuu\ ;
+伩 > shin\ ;
+伔 > shin\ ;
+伋 > kyuu\ ;
+伈 > shin\ ;
+伄 > chou\ ;
+伀 > shou\ ;
+仼 > kyou\ ;
+仢 > haku\ ;
+仗 > tsue\ ;
+仉 > shou\ ;
+仂 > roku\ ;
+亼 > shuu\ ;
+亳 > haku\ ;
+亯 > kyou\ ;
+亮 > ryou\ ;
+亨 > kyou\ ;
+亀 > kame\ ;
+乣 > kyuu\ ;
+也 > nari\ ;
+乇 > taku\ ;
+乆 > kyuu\ ;
+丵 > saku\ ;
+丮 > keki\ ;
+丩 > kyuu\ ;
+两 > ryou\ ;
+丢 > chuu\ ;
+丠 > kyuu\ ;
+丟 > chuu\ ;
+丞 > shou\ ;
+丒 > chuu\ ;
+丑 > ushi\ ;
+丄 > shou\ ;
+〇 > maru\ ;
+迷 > mei\ ;
+念 > nen\ ;
+短 > tan\ ;
+快 > kai\ ;
+迥 > kei\ ;
+知 > chi\ ;
+矜 > kin\ ;
+忙 > bou\ ;
+忘 > bou\ ;
+返 > hen\ ;
+近 > kin\ ;
+迎 > gei\ ;
+忍 > nin\ ;
+迅 > jin\ ;
+辿 > ten\ ;
+瞻 > sen\ ;
+辺 > hen\ ;
+農 > nou\ ;
+辯 > ben\ ;
+循 > jun\ ;
+瞠 > dou\ ;
+從 > juu\ ;
+従 > juu\ ;
+徊 > kai\ ;
+待 > tai\ ;
+径 > kei\ ;
+彩 > sai\ ;
+睨 > gei\ ;
+睡 > sui\ ;
+轟 > gou\ ;
+当 > tou\ ;
+轉 > ten\ ;
+彈 > dan\ ;
+眩 > gen\ ;
+眠 > min\ ;
+弟 > tei\ ;
+弛 > shi\ ;
+弘 > kou\ ;
+輕 > kei\ ;
+県 > ken\ ;
+看 > kan\ ;
+載 > sai\ ;
+弄 > rou\ ;
+省 > sei\ ;
+弁 > ben\ ;
+軽 > kei\ ;
+廻 > kai\ ;
+建 > ken\ ;
+相 > sou\ ;
+盥 > kan\ ;
+監 > kan\ ;
+転 > ten\ ;
+廣 > kou\ ;
+廢 > hai\ ;
+盡 > jin\ ;
+盜 > tou\ ;
+盛 > sei\ ;
+盗 > tou\ ;
+軍 > gun\ ;
+廊 > rou\ ;
+廉 > ren\ ;
+盆 > bon\ ;
+盃 > hai\ ;
+廃 > hai\ ;
+庸 > you\ ;
+康 > kou\ ;
+皰 > hou\ ;
+庚 > kou\ ;
+庖 > hou\ ;
+躓 > chi\ ;
+躇 > cho\ ;
+皇 > kou\ ;
+庄 > sou\ ;
+広 > kou\ ;
+幾 > iku\ ;
+幽 > yuu\ ;
+幼 > you\ ;
+登 > tou\ ;
+干 > kan\ ;
+癌 > gan\ ;
+癇 > kan\ ;
+帽 > bou\ ;
+帶 > tai\ ;
+帯 > tai\ ;
+師 > shi\ ;
+踟 > chi\ ;
+踏 > tou\ ;
+踊 > you\ ;
+市 > shi\ ;
+巾 > kin\ ;
+痴 > chi\ ;
+痩 > sou\ ;
+巧 > kou\ ;
+工 > kou\ ;
+跡 > ato\ ;
+跟 > kon\ ;
+巡 > jun\ ;
+距 > kyo\ ;
+痕 > kon\ ;
+痒 > you\ ;
+嶮 > ken\ ;
+疊 > jou\ ;
+當 > tou\ ;
+走 > sou\ ;
+番 > ban\ ;
+赧 > tan\ ;
+畦 > aze\ ;
+畔 > han\ ;
+界 > kai\ ;
+嵌 > kan\ ;
+甲 > kou\ ;
+崩 > hou\ ;
+用 > you\ ;
+産 > san\ ;
+甘 > kan\ ;
+崗 > kou\ ;
+贅 > zei\ ;
+賽 > sai\ ;
+購 > kou\ ;
+賺 > tan\ ;
+瓶 > bin\ ;
+賣 > bai\ ;
+賢 > ken\ ;
+瓜 > uri\ ;
+資 > shi\ ;
+貼 > ten\ ;
+貸 > tai\ ;
+買 > bai\ ;
+貰 > sei\ ;
+貯 > cho\ ;
+岩 > iwa\ ;
+貧 > bin\ ;
+財 > zai\ ;
+岡 > kou\ ;
+貞 > tei\ ;
+貝 > kai\ ;
+豪 > gou\ ;
+層 > sou\ ;
+象 > zou\ ;
+展 > ten\ ;
+豐 > hou\ ;
+屏 > hei\ ;
+豊 > hou\ ;
+屆 > kai\ ;
+居 > kyo\ ;
+尽 > jin\ ;
+琲 > hai\ ;
+尤 > yuu\ ;
+尠 > sen\ ;
+尚 > nao\ ;
+尖 > sen\ ;
+導 > dou\ ;
+對 > tai\ ;
+尋 > jin\ ;
+尉 > jou\ ;
+專 > sen\ ;
+射 > sha\ ;
+封 > fuu\ ;
+現 > gen\ ;
+寸 > sun\ ;
+寫 > sha\ ;
+珪 > kei\ ;
+寒 > kan\ ;
+容 > you\ ;
+宵 > yoi\ ;
+害 > gai\ ;
+宰 > sai\ ;
+玩 > gan\ ;
+宣 > sen\ ;
+宛 > ate\ ;
+定 > tei\ ;
+官 > kan\ ;
+完 > kan\ ;
+變 > hen\ ;
+讃 > san\ ;
+玄 > gen\ ;
+獻 > ken\ ;
+獸 > juu\ ;
+譲 > jou\ ;
+譫 > sen\ ;
+警 > kei\ ;
+存 > son\ ;
+孔 > kou\ ;
+謹 > kin\ ;
+猶 > yuu\ ;
+嬪 > hin\ ;
+嬢 > jou\ ;
+謝 > sha\ ;
+猜 > sai\ ;
+講 > kou\ ;
+謙 > ken\ ;
+狽 > hai\ ;
+諸 > sho\ ;
+諦 > tei\ ;
+狡 > kou\ ;
+狙 > sho\ ;
+狗 > kou\ ;
+論 > ron\ ;
+請 > sei\ ;
+嫌 > iya\ ;
+談 > dan\ ;
+狃 > juu\ ;
+状 > jou\ ;
+犯 > han\ ;
+犬 > inu\ ;
+誘 > yuu\ ;
+誓 > sei\ ;
+媒 > bai\ ;
+認 > nin\ ;
+誌 > shi\ ;
+誄 > rui\ ;
+該 > gai\ ;
+牲 > sei\ ;
+詮 > sen\ ;
+詩 > shi\ ;
+試 > shi\ ;
+牢 > rou\ ;
+牡 > osu\ ;
+詞 > shi\ ;
+婚 > kon\ ;
+牌 > pai\ ;
+版 > han\ ;
+片 > hen\ ;
+牀 > sou\ ;
+爽 > sou\ ;
+許 > kyo\ ;
+爭 > sou\ ;
+訪 > hou\ ;
+爛 > ran\ ;
+娑 > sha\ ;
+訊 > jin\ ;
+計 > kei\ ;
+言 > gen\ ;
+燻 > kun\ ;
+解 > kai\ ;
+姓 > sei\ ;
+始 > shi\ ;
+姉 > ane\ ;
+燈 > tou\ ;
+燃 > nen\ ;
+觀 > kan\ ;
+覽 > ran\ ;
+観 > kan\ ;
+親 > oya\ ;
+覧 > ran\ ;
+覗 > shi\ ;
+視 > shi\ ;
+妖 > you\ ;
+妊 > nin\ ;
+妄 > bou\ ;
+煽 > sen\ ;
+好 > kou\ ;
+煮 > sha\ ;
+奮 > fun\ ;
+煩 > han\ ;
+襤 > ran\ ;
+奥 > oku\ ;
+奢 > sha\ ;
+襟 > eri\ ;
+套 > tou\ ;
+奏 > sou\ ;
+煎 > sen\ ;
+奉 > hou\ ;
+夾 > kou\ ;
+褸 > rou\ ;
+然 > zen\ ;
+褪 > tai\ ;
+天 > ten\ ;
+大 > tai\ ;
+焚 > fun\ ;
+夕 > yuu\ ;
+褒 > hou\ ;
+変 > hen\ ;
+製 > sei\ ;
+壻 > sei\ ;
+売 > bai\ ;
+声 > koe\ ;
+壯 > sou\ ;
+士 > shi\ ;
+裝 > sou\ ;
+壞 > kai\ ;
+裕 > yuu\ ;
+裏 > ura\ ;
+壊 > kai\ ;
+壇 > dan\ ;
+装 > sou\ ;
+裁 > sai\ ;
+点 > ten\ ;
+袢 > han\ ;
+増 > zou\ ;
+炊 > sui\ ;
+袂 > bei\ ;
+災 > sai\ ;
+灰 > hai\ ;
+衡 > kou\ ;
+塔 > tou\ ;
+灌 > kan\ ;
+血 > chi\ ;
+塀 > hei\ ;
+蠶 > san\ ;
+報 > hou\ ;
+堪 > kan\ ;
+瀕 > hin\ ;
+堆 > tai\ ;
+堅 > ken\ ;
+堂 > dou\ ;
+蟻 > ari\ ;
+濺 > sen\ ;
+濱 > hin\ ;
+濟 > sai\ ;
+濘 > nei\ ;
+埋 > mai\ ;
+濃 > nou\ ;
+澹 > tan\ ;
+螢 > kei\ ;
+垢 > aka\ ;
+龕 > gan\ ;
+融 > yuu\ ;
+垂 > sui\ ;
+蝿 > hae\ ;
+潰 > kai\ ;
+坦 > tan\ ;
+齡 > rei\ ;
+潜 > sen\ ;
+蝙 > hen\ ;
+齎 > sei\ ;
+齊 > sei\ ;
+蝋 > rou\ ;
+坊 > bou\ ;
+均 > kin\ ;
+蜻 > sei\ ;
+漸 > zen\ ;
+地 > chi\ ;
+漬 > shi\ ;
+在 > zai\ ;
+漢 > kan\ ;
+蜘 > chi\ ;
+團 > dan\ ;
+漕 > sou\ ;
+漏 > rou\ ;
+圏 > ken\ ;
+滿 > man\ ;
+困 > kon\ ;
+滯 > tai\ ;
+黨 > tou\ ;
+団 > dan\ ;
+點 > ten\ ;
+回 > kai\ ;
+蛛 > shu\ ;
+四 > yon\ ;
+蛉 > rei\ ;
+蛆 > sho\ ;
+麻 > asa\ ;
+溶 > you\ ;
+嚴 > gen\ ;
+溪 > kei\ ;
+麗 > rei\ ;
+準 > jun\ ;
+満 > man\ ;
+湾 > wan\ ;
+鹸 > ken\ ;
+噪 > sou\ ;
+湧 > yuu\ ;
+號 > gou\ ;
+虜 > ryo\ ;
+虚 > kyo\ ;
+噛 > gou\ ;
+處 > sho\ ;
+噌 > sou\ ;
+嘲 > tou\ ;
+蘭 > ran\ ;
+渦 > uzu\ ;
+渠 > kyo\ ;
+減 > gen\ ;
+嘘 > uso\ ;
+済 > sai\ ;
+嘆 > tan\ ;
+清 > sei\ ;
+蘂 > zui\ ;
+添 > ten\ ;
+淺 > sen\ ;
+混 > kon\ ;
+藩 > han\ ;
+嗣 > shi\ ;
+淡 > tan\ ;
+藝 > gei\ ;
+嗜 > shi\ ;
+淋 > rin\ ;
+藉 > sha\ ;
+鷄 > kei\ ;
+液 > eki\ ;
+薯 > sho\ ;
+喰 > kuu\ ;
+涯 > gai\ ;
+薮 > sou\ ;
+單 > tan\ ;
+薦 > sen\ ;
+喧 > ken\ ;
+喚 > kan\ ;
+喘 > zen\ ;
+涌 > yuu\ ;
+善 > zen\ ;
+啼 > tei\ ;
+海 > umi\ ;
+浪 > rou\ ;
+蕩 > tou\ ;
+啣 > kan\ ;
+問 > mon\ ;
+浅 > sen\ ;
+浄 > jou\ ;
+蔽 > hei\ ;
+唸 > ten\ ;
+蔵 > sou\ ;
+洗 > sen\ ;
+洒 > sei\ ;
+唐 > tou\ ;
+洋 > you\ ;
+鳴 > mei\ ;
+泡 > awa\ ;
+法 > hou\ ;
+品 > hin\ ;
+蒼 > sou\ ;
+蒸 > jou\ ;
+咬 > kou\ ;
+蒟 > kon\ ;
+蒙 > mou\ ;
+沖 > oki\ ;
+蒔 > shi\ ;
+沌 > ton\ ;
+命 > mei\ ;
+味 > aji\ ;
+葬 > sou\ ;
+董 > tou\ ;
+池 > ike\ ;
+呟 > gen\ ;
+汗 > ase\ ;
+呑 > don\ ;
+呆 > bou\ ;
+呂 > ryo\ ;
+鰺 > aji\ ;
+吻 > fun\ ;
+吹 > sui\ ;
+萬 > man\ ;
+含 > gan\ ;
+吝 > rin\ ;
+君 > kun\ ;
+向 > kou\ ;
+氏 > uji\ ;
+萌 > hou\ ;
+同 > dou\ ;
+氈 > sen\ ;
+合 > gou\ ;
+萄 > tou\ ;
+司 > shi\ ;
+史 > shi\ ;
+台 > dai\ ;
+菫 > kin\ ;
+毫 > kou\ ;
+菩 > hai\ ;
+叩 > kou\ ;
+句 > kou\ ;
+毎 > mai\ ;
+反 > han\ ;
+參 > san\ ;
+参 > san\ ;
+去 > kyo\ ;
+段 > dan\ ;
+厳 > gen\ ;
+鮮 > sen\ ;
+厭 > iya\ ;
+厚 > kou\ ;
+殘 > zan\ ;
+厘 > rin\ ;
+残 > zan\ ;
+殊 > shu\ ;
+殆 > tai\ ;
+卿 > kei\ ;
+死 > shi\ ;
+卷 > kan\ ;
+歳 > sai\ ;
+此 > shi\ ;
+正 > sei\ ;
+止 > shi\ ;
+歡 > kan\ ;
+占 > sen\ ;
+歔 > kyo\ ;
+荒 > kou\ ;
+歎 > tan\ ;
+歌 > uta\ ;
+半 > han\ ;
+午 > uma\ ;
+千 > chi\ ;
+十 > too\ ;
+鬼 > oni\ ;
+茶 > cha\ ;
+茫 > bou\ ;
+鬢 > hin\ ;
+匚 > hou\ ;
+權 > ken\ ;
+匆 > sou\ ;
+欅 > kyo\ ;
+包 > hou\ ;
+勾 > kou\ ;
+勸 > kan\ ;
+勧 > kan\ ;
+勤 > gon\ ;
+勞 > rou\ ;
+苗 > nae\ ;
+勘 > kan\ ;
+體 > tei\ ;
+動 > dou\ ;
+勉 > ben\ ;
+勇 > yuu\ ;
+髄 > zui\ ;
+骸 > kai\ ;
+芸 > gei\ ;
+効 > kou\ ;
+芳 > hou\ ;
+労 > rou\ ;
+励 > rei\ ;
+劫 > gou\ ;
+檢 > ken\ ;
+功 > kou\ ;
+劍 > ken\ ;
+檀 > tan\ ;
+艸 > sou\ ;
+創 > sou\ ;
+色 > iro\ ;
+驢 > ryo\ ;
+剛 > gou\ ;
+驗 > ken\ ;
+剖 > bou\ ;
+前 > mae\ ;
+剃 > tei\ ;
+騷 > sou\ ;
+制 > sei\ ;
+到 > tou\ ;
+般 > han\ ;
+航 > kou\ ;
+権 > ken\ ;
+判 > ban\ ;
+樣 > you\ ;
+騙 > hen\ ;
+験 > ken\ ;
+騒 > sou\ ;
+樓 > rou\ ;
+刑 > kei\ ;
+刊 > kan\ ;
+興 > kou\ ;
+分 > bun\ ;
+刀 > tou\ ;
+槽 > sou\ ;
+臼 > usu\ ;
+函 > kan\ ;
+臺 > tai\ ;
+致 > chi\ ;
+至 > shi\ ;
+自 > shi\ ;
+臨 > rin\ ;
+処 > sho\ ;
+凡 > bon\ ;
+臟 > zou\ ;
+駛 > shi\ ;
+様 > you\ ;
+凍 > tou\ ;
+構 > kou\ ;
+駅 > eki\ ;
+凄 > sei\ ;
+膿 > umi\ ;
+膽 > tan\ ;
+榻 > tou\ ;
+冷 > rei\ ;
+馳 > chi\ ;
+膳 > zen\ ;
+馭 > gyo\ ;
+馬 > uma\ ;
+写 > sha\ ;
+冗 > jou\ ;
+冒 > bou\ ;
+再 > sai\ ;
+概 > gai\ ;
+楼 > rou\ ;
+兼 > ken\ ;
+腮 > sai\ ;
+公 > kou\ ;
+全 > zen\ ;
+腦 > nou\ ;
+党 > tou\ ;
+腕 > ude\ ;
+饒 > jou\ ;
+楓 > fuu\ ;
+免 > men\ ;
+腋 > eki\ ;
+饅 > man\ ;
+先 > sen\ ;
+充 > juu\ ;
+兄 > ani\ ;
+脳 > nou\ ;
+優 > yuu\ ;
+検 > ken\ ;
+餐 > san\ ;
+養 > you\ ;
+億 > oku\ ;
+椀 > wan\ ;
+飽 > hou\ ;
+飼 > shi\ ;
+棺 > kan\ ;
+飴 > ame\ ;
+胴 > dou\ ;
+棲 > sei\ ;
+僧 > sou\ ;
+胞 > hou\ ;
+飜 > hon\ ;
+棒 > bou\ ;
+胎 > tai\ ;
+像 > zou\ ;
+背 > sei\ ;
+働 > dou\ ;
+胆 > tan\ ;
+僅 > kin\ ;
+傾 > kei\ ;
+育 > iku\ ;
+傳 > den\ ;
+械 > kai\ ;
+肯 > kou\ ;
+梯 > tei\ ;
+催 > sai\ ;
+風 > fuu\ ;
+肥 > koe\ ;
+條 > jou\ ;
+肆 > shi\ ;
+梅 > ume\ ;
+桶 > oke\ ;
+偶 > guu\ ;
+偵 > tei\ ;
+聲 > sei\ ;
+顯 > ken\ ;
+顫 > sen\ ;
+桧 > kai\ ;
+健 > ken\ ;
+類 > rui\ ;
+桟 > san\ ;
+聞 > bun\ ;
+顛 > ten\ ;
+停 > tei\ ;
+願 > gan\ ;
+聖 > sei\ ;
+顕 > ken\ ;
+顔 > kao\ ;
+顏 > gan\ ;
+顎 > ago\ ;
+題 > dai\ ;
+桂 > kei\ ;
+耽 > tan\ ;
+頼 > rai\ ;
+頻 > hin\ ;
+耻 > chi\ ;
+倹 > ken\ ;
+頭 > tou\ ;
+倦 > ken\ ;
+校 > kou\ ;
+頚 > kei\ ;
+耕 > kou\ ;
+頓 > ton\ ;
+栓 > sen\ ;
+倒 > tou\ ;
+耐 > tai\ ;
+倉 > sou\ ;
+順 > jun\ ;
+項 > kou\ ;
+考 > kou\ ;
+老 > rou\ ;
+翻 > hon\ ;
+俺 > ore\ ;
+柴 > sai\ ;
+染 > sen\ ;
+某 > bou\ ;
+羹 > kou\ ;
+羮 > kou\ ;
+侯 > kou\ ;
+侭 > jin\ ;
+羨 > sen\ ;
+群 > gun\ ;
+枝 > eda\ ;
+枚 > mai\ ;
+例 > rei\ ;
+來 > rai\ ;
+板 > ita\ ;
+使 > shi\ ;
+杵 > sho\ ;
+併 > hei\ ;
+置 > chi\ ;
+来 > rai\ ;
+面 > men\ ;
+条 > jou\ ;
+靜 > sei\ ;
+静 > sei\ ;
+靖 > sei\ ;
+何 > nan\ ;
+体 > tei\ ;
+罐 > kan\ ;
+材 > zai\ ;
+罎 > tan\ ;
+住 > juu\ ;
+低 > tei\ ;
+靈 > rei\ ;
+佇 > cho\ ;
+佃 > ten\ ;
+伺 > shi\ ;
+朱 > aka\ ;
+朧 > rou\ ;
+朦 > bou\ ;
+朝 > asa\ ;
+伝 > ten\ ;
+望 > bou\ ;
+会 > kai\ ;
+朗 > rou\ ;
+霊 > rei\ ;
+朋 > hou\ ;
+有 > yuu\ ;
+會 > kai\ ;
+最 > sai\ ;
+替 > tai\ ;
+曾 > sou\ ;
+電 > den\ ;
+曼 > ban\ ;
+任 > nin\ ;
+零 > rei\ ;
+書 > sho\ ;
+件 > ken\ ;
+更 > kou\ ;
+雨 > ame\ ;
+難 > nan\ ;
+令 > rei\ ;
+曜 > you\ ;
+雖 > sui\ ;
+仕 > shi\ ;
+仔 > shi\ ;
+介 > kai\ ;
+今 > kon\ ;
+雄 > osu\ ;
+仁 > nin\ ;
+暴 > bou\ ;
+亭 > tei\ ;
+險 > ken\ ;
+暫 > zan\ ;
+隨 > zui\ ;
+交 > kou\ ;
+亡 > bou\ ;
+際 > sai\ ;
+亙 > kou\ ;
+亘 > sen\ ;
+暖 > dan\ ;
+井 > sei\ ;
+纒 > ten\ ;
+暑 > sho\ ;
+随 > zui\ ;
+纏 > ten\ ;
+階 > kai\ ;
+隊 > tai\ ;
+隈 > wai\ ;
+争 > sou\ ;
+纂 > san\ ;
+亂 > ran\ ;
+陽 > you\ ;
+繼 > kei\ ;
+険 > ken\ ;
+智 > chi\ ;
+陶 > tou\ ;
+晴 > sei\ ;
+繰 > sou\ ;
+乱 > ran\ ;
+景 > kei\ ;
+繪 > kai\ ;
+繩 > jou\ ;
+晩 > ban\ ;
+陥 > kan\ ;
+陣 > jin\ ;
+繞 > jou\ ;
+乘 > jou\ ;
+繕 > zen\ ;
+乗 > jou\ ;
+織 > ori\ ;
+限 > gen\ ;
+降 > kou\ ;
+乏 > bou\ ;
+繁 > han\ ;
+總 > sou\ ;
+防 > bou\ ;
+縱 > juu\ ;
+縫 > hou\ ;
+阪 > han\ ;
+並 > hei\ ;
+丘 > oka\ ;
+且 > sha\ ;
+易 > eki\ ;
+明 > mei\ ;
+上 > jou\ ;
+昆 > kon\ ;
+昂 > kou\ ;
+練 > ren\ ;
+緬 > men\ ;
+旬 > jun\ ;
+緩 > kan\ ;
+早 > sou\ ;
+編 > hen\ ;
+旦 > tan\ ;
+締 > tei\ ;
+關 > kan\ ;
+線 > sen\ ;
+闘 > tou\ ;
+総 > sou\ ;
+旋 > sen\ ;
+緊 > kin\ ;
+方 > hou\ ;
+斷 > dan\ ;
+網 > ami\ ;
+斯 > shi\ ;
+断 > dan\ ;
+斬 > zan\ ;
+閤 > kou\ ;
+斜 > sha\ ;
+継 > kei\ ;
+經 > kei\ ;
+開 > kai\ ;
+閉 > hei\ ;
+斉 > sei\ ;
+文 > bun\ ;
+閃 > sen\ ;
+斃 > hei\ ;
+門 > mon\ ;
+長 > osa\ ;
+數 > suu\ ;
+整 > sei\ ;
+絲 > shi\ ;
+統 > tou\ ;
+数 > suu\ ;
+敬 > kei\ ;
+絨 > juu\ ;
+散 > san\ ;
+敢 > kan\ ;
+絞 > kou\ ;
+敗 > hai\ ;
+敏 > bin\ ;
+效 > kou\ ;
+故 > yue\ ;
+放 > hou\ ;
+紺 > kon\ ;
+改 > kai\ ;
+細 > sei\ ;
+累 > rui\ ;
+支 > shi\ ;
+紛 > fun\ ;
+純 > jun\ ;
+納 > tou\ ;
+紋 > mon\ ;
+糸 > ito\ ;
+擧 > kyo\ ;
+擡 > tai\ ;
+糞 > fun\ ;
+糖 > tou\ ;
+擔 > tan\ ;
+精 > sei\ ;
+粟 > awa\ ;
+粗 > ara\ ;
+鑵 > kan\ ;
+籖 > sen\ ;
+鑒 > kan\ ;
+籐 > tou\ ;
+携 > kei\ ;
+簡 > kan\ ;
+搜 > sou\ ;
+搖 > you\ ;
+損 > son\ ;
+握 > aku\ ;
+換 > kan\ ;
+揚 > you\ ;
+提 > tei\ ;
+揉 > juu\ ;
+範 > han\ ;
+揃 > sen\ ;
+掻 > sou\ ;
+掲 > kei\ ;
+箪 > tan\ ;
+推 > sui\ ;
+控 > kou\ ;
+掣 > sei\ ;
+探 > tan\ ;
+採 > sai\ ;
+算 > san\ ;
+排 > hai\ ;
+箋 > sen\ ;
+掃 > sou\ ;
+捻 > nen\ ;
+捲 > ken\ ;
+据 > kyo\ ;
+捨 > sha\ ;
+筧 > ken\ ;
+鍛 > tan\ ;
+捜 > sou\ ;
+挿 > sou\ ;
+挽 > ban\ ;
+第 > dai\ ;
+笥 > shi\ ;
+錢 > sen\ ;
+笛 > fue\ ;
+挙 > kyo\ ;
+笄 > kei\ ;
+竿 > sao\ ;
+拾 > juu\ ;
+拵 > son\ ;
+拠 > kyo\ ;
+竟 > kei\ ;
+竝 > hei\ ;
+拝 > hai\ ;
+拜 > hai\ ;
+拘 > kou\ ;
+担 > tan\ ;
+竃 > sou\ ;
+抵 > tei\ ;
+抱 > hou\ ;
+銭 > sen\ ;
+銜 > kan\ ;
+抛 > hou\ ;
+銘 > mei\ ;
+折 > ori\ ;
+抗 > kou\ ;
+投 > tou\ ;
+抓 > sou\ ;
+銅 > dou\ ;
+穿 > sen\ ;
+扱 > sou\ ;
+扮 > fun\ ;
+穗 > sui\ ;
+才 > sai\ ;
+穉 > chi\ ;
+稿 > kou\ ;
+稽 > kei\ ;
+稻 > tou\ ;
+戻 > rei\ ;
+戴 > tai\ ;
+稲 > ine\ ;
+戰 > sen\ ;
+稚 > chi\ ;
+或 > aru\ ;
+戒 > kai\ ;
+成 > sei\ ;
+鈍 > don\ ;
+税 > zei\ ;
+戌 > inu\ ;
+戀 > ren\ ;
+懸 > ken\ ;
+懷 > kai\ ;
+金 > kin\ ;
+重 > omo\ ;
+秋 > aki\ ;
+應 > you\ ;
+采 > sai\ ;
+懃 > kin\ ;
+禽 > kin\ ;
+憺 > tan\ ;
+憶 > oku\ ;
+禰 > dei\ ;
+禮 > rei\ ;
+憬 > kei\ ;
+憧 > dou\ ;
+憤 > fun\ ;
+醒 > sei\ ;
+憐 > ren\ ;
+憎 > zou\ ;
+醉 > sui\ ;
+禅 > zen\ ;
+憂 > yuu\ ;
+禁 > kin\ ;
+酸 > san\ ;
+祷 > tou\ ;
+慮 > ryo\ ;
+慨 > gai\ ;
+慥 > zou\ ;
+慣 > kan\ ;
+慢 > man\ ;
+慘 > san\ ;
+酔 > sui\ ;
+配 > hai\ ;
+慌 > kou\ ;
+慊 > ken\ ;
+礼 > rei\ ;
+示 > shi\ ;
+感 > kan\ ;
+礙 > gai\ ;
+郵 > yuu\ ;
+想 > sou\ ;
+惱 > nou\ ;
+惨 > san\ ;
+惠 > kei\ ;
+磐 > iwa\ ;
+郎 > rou\ ;
+郊 > kou\ ;
+情 > jou\ ;
+悼 > tou\ ;
+悶 > mon\ ;
+悴 > sui\ ;
+患 > kan\ ;
+悠 > yuu\ ;
+碗 > wan\ ;
+悖 > hai\ ;
+悔 > kai\ ;
+邊 > hen\ ;
+還 > kan\ ;
+邂 > kai\ ;
+選 > sen\ ;
+遲 > chi\ ;
+恰 > kou\ ;
+遮 > sha\ ;
+遭 > sou\ ;
+息 > iki\ ;
+硬 > kou\ ;
+恨 > kon\ ;
+遥 > you\ ;
+遣 > ken\ ;
+遠 > too\ ;
+遜 > son\ ;
+遙 > you\ ;
+遑 > kou\ ;
+遍 > hen\ ;
+恍 > kou\ ;
+遊 > yuu\ ;
+恋 > koi\ ;
+遇 > guu\ ;
+遅 > chi\ ;
+遂 > sui\ ;
+遁 > ton\ ;
+怪 > kai\ ;
+性 > sei\ ;
+砥 > shi\ ;
+連 > ren\ ;
+逢 > hou\ ;
+造 > zou\ ;
+怠 > tai\ ;
+逞 > tei\ ;
+逝 > sei\ ;
+思 > shi\ ;
+這 > gen\ ;
+砕 > sai\ ;
+研 > ken\ ;
+透 > tou\ ;
+逅 > kou\ ;
+逃 > tou\ ;
+送 > sou\ ;
+退 > tai\ ;
+忿 > fun\ ;
+龤 > kai\ ;
+龡 > sui\ ;
+龘 > tou\ ;
+龗 > rei\ ;
+龖 > tou\ ;
+龒 > ryu\ ;
+龐 > hou\ ;
+齽 > kin\ ;
+齷 > aku\ ;
+齶 > ago\ ;
+齵 > gou\ ;
+齳 > gun\ ;
+齯 > gei\ ;
+齭 > sho\ ;
+齬 > gyo\ ;
+齩 > gou\ ;
+齞 > gen\ ;
+齝 > chi\ ;
+齘 > kai\ ;
+齗 > kin\ ;
+齒 > shi\ ;
+齏 > sei\ ;
+齋 > sai\ ;
+齄 > sha\ ;
+齁 > kou\ ;
+鼺 > rui\ ;
+鼷 > kei\ ;
+鼲 > kon\ ;
+鼱 > sei\ ;
+鼪 > sei\ ;
+鼢 > fun\ ;
+鼡 > sho\ ;
+鼟 > tou\ ;
+鼛 > kou\ ;
+鼙 > hei\ ;
+鼗 > tou\ ;
+鼖 > fun\ ;
+鼕 > tou\ ;
+鼒 > shi\ ;
+鼑 > tei\ ;
+鼐 > dai\ ;
+鼇 > gou\ ;
+鼅 > chi\ ;
+鼃 > wai\ ;
+黿 > gen\ ;
+黽 > bou\ ;
+黹 > chi\ ;
+黶 > aza\ ;
+黵 > tan\ ;
+黲 > san\ ;
+黱 > tai\ ;
+黮 > tan\ ;
+黬 > kan\ ;
+黧 > rei\ ;
+黝 > yuu\ ;
+黕 > tan\ ;
+黔 > ken\ ;
+黏 > nen\ ;
+黎 > rei\ ;
+黌 > kou\ ;
+黋 > kou\ ;
+黈 > tou\ ;
+黆 > kou\ ;
+黃 > kou\ ;
+麺 > men\ ;
+麵 > ben\ ;
+麳 > rai\ ;
+麰 > bou\ ;
+麮 > kyo\ ;
+麭 > hou\ ;
+麪 > men\ ;
+麟 > rin\ ;
+麝 > sha\ ;
+麛 > bei\ ;
+麖 > kei\ ;
+麕 > kin\ ;
+麑 > gei\ ;
+麏 > kin\ ;
+麈 > shu\ ;
+麇 > kin\ ;
+麅 > hou\ ;
+麃 > hou\ ;
+麀 > yuu\ ;
+鹼 > ken\ ;
+鹻 > kan\ ;
+鹹 > kan\ ;
+鸰 > rei\ ;
+鸞 > ran\ ;
+鸛 > kan\ ;
+鸎 > you\ ;
+鸇 > sen\ ;
+鸂 > kei\ ;
+鷴 > kan\ ;
+鷳 > kan\ ;
+鷭 > ban\ ;
+鷥 > shi\ ;
+鷠 > gyo\ ;
+鷞 > sou\ ;
+鷙 > shi\ ;
+鷕 > you\ ;
+鷔 > gou\ ;
+鷓 > sha\ ;
+鷏 > ten\ ;
+鷉 > tei\ ;
+鷇 > kou\ ;
+鷆 > ten\ ;
+鷂 > you\ ;
+鶿 > shi\ ;
+鶼 > ken\ ;
+鶵 > suu\ ;
+鶱 > ken\ ;
+鶬 > sou\ ;
+鶤 > kon\ ;
+鶗 > tei\ ;
+鶊 > kou\ ;
+鶇 > tou\ ;
+鶆 > rai\ ;
+鶄 > sei\ ;
+鵾 > kon\ ;
+鵼 > kou\ ;
+鵻 > sui\ ;
+鵬 > hou\ ;
+鵫 > tou\ ;
+鵧 > hei\ ;
+鵣 > rai\ ;
+鵑 > ken\ ;
+鵊 > kou\ ;
+鵈 > ten\ ;
+鵄 > shi\ ;
+鵁 > kou\ ;
+鴿 > kou\ ;
+鴾 > bou\ ;
+鴻 > kou\ ;
+鴺 > tei\ ;
+鴴 > kou\ ;
+鴲 > shi\ ;
+鴦 > you\ ;
+鴟 > shi\ ;
+鴞 > you\ ;
+鴜 > shi\ ;
+鴘 > hen\ ;
+鴒 > rei\ ;
+鴋 > hou\ ;
+鴈 > gan\ ;
+鳹 > ken\ ;
+鳷 > shi\ ;
+鳳 > hou\ ;
+鳲 > shi\ ;
+鳰 > nio\ ;
+鳯 > hou\ ;
+鳮 > kei\ ;
+鳫 > gan\ ;
+鲹 > sou\ ;
+鲙 > kai\ ;
+鲉 > yuu\ ;
+鱻 > sen\ ;
+鱮 > sho\ ;
+鱤 > kan\ ;
+鱣 > tan\ ;
+鱠 > kai\ ;
+鱟 > kou\ ;
+鱞 > kan\ ;
+鱝 > fun\ ;
+鱛 > eso\ ;
+鱖 > kei\ ;
+鱔 > sen\ ;
+鱓 > sen\ ;
+鱇 > kou\ ;
+鱄 > sen\ ;
+鰶 > sei\ ;
+鰵 > bin\ ;
+鰲 > gou\ ;
+鰱 > ren\ ;
+鰪 > kou\ ;
+鰩 > you\ ;
+鰧 > tou\ ;
+鰦 > shi\ ;
+鰥 > kan\ ;
+鰣 > shi\ ;
+鰜 > ken\ ;
+鰕 > ebi\ ;
+鰔 > kan\ ;
+鰓 > era\ ;
+鰑 > you\ ;
+鰃 > wai\ ;
+鰁 > sen\ ;
+鰀 > kan\ ;
+鯿 > hen\ ;
+鯺 > sho\ ;
+鯹 > sei\ ;
+鯸 > kou\ ;
+鯷 > tei\ ;
+鯵 > aji\ ;
+鯯 > sei\ ;
+鯫 > sou\ ;
+鯤 > kon\ ;
+鯢 > gei\ ;
+鯟 > tou\ ;
+鯛 > tai\ ;
+鯘 > dai\ ;
+鯉 > koi\ ;
+鯈 > yuu\ ;
+鯇 > kan\ ;
+鯁 > kou\ ;
+鯀 > kon\ ;
+鮾 > dai\ ;
+鮸 > ben\ ;
+鮷 > tei\ ;
+鮰 > kai\ ;
+鮩 > hou\ ;
+鮦 > tou\ ;
+鮔 > kyo\ ;
+鮐 > tai\ ;
+鮏 > sei\ ;
+鮎 > ayu\ ;
+鮋 > yuu\ ;
+鮆 > sei\ ;
+魿 > rei\ ;
+魷 > yuu\ ;
+魵 > fun\ ;
+魴 > hou\ ;
+魳 > shi\ ;
+魭 > gen\ ;
+魬 > han\ ;
+魪 > kai\ ;
+魨 > ton\ ;
+魥 > gou\ ;
+魣 > sho\ ;
+魞 > eri\ ;
+魜 > jin\ ;
+魛 > tou\ ;
+魖 > kyo\ ;
+魑 > chi\ ;
+魍 > bou\ ;
+魋 > tai\ ;
+鬷 > sou\ ;
+鬵 > sen\ ;
+鬳 > ken\ ;
+鬭 > tou\ ;
+鬬 > tou\ ;
+鬫 > kan\ ;
+鬪 > tou\ ;
+鬨 > kou\ ;
+鬧 > tou\ ;
+鬦 > tou\ ;
+鬥 > tou\ ;
+鬟 > kan\ ;
+鬜 > kan\ ;
+鬙 > sou\ ;
+鬖 > san\ ;
+鬋 > sen\ ;
+鬉 > sou\ ;
+鬈 > ken\ ;
+鬅 > hou\ ;
+鬄 > tei\ ;
+鬃 > sou\ ;
+鬂 > bin\ ;
+鬀 > tei\ ;
+髻 > kei\ ;
+髳 > bou\ ;
+髱 > hou\ ;
+髯 > zen\ ;
+髩 > bin\ ;
+髧 > tan\ ;
+髦 > bou\ ;
+髥 > zen\ ;
+髣 > hou\ ;
+髢 > tei\ ;
+髠 > kon\ ;
+髞 > sou\ ;
+髛 > kou\ ;
+髙 > kou\ ;
+髖 > kan\ ;
+髕 > hin\ ;
+髓 > zui\ ;
+髒 > sou\ ;
+髐 > kou\ ;
+髏 > rou\ ;
+髈 > hou\ ;
+髁 > kai\ ;
+骿 > hen\ ;
+骾 > kou\ ;
+骹 > kou\ ;
+骶 > tei\ ;
+骵 > tai\ ;
+骴 > shi\ ;
+骰 > tou\ ;
+骯 > kou\ ;
+骔 > sou\ ;
+驩 > kan\ ;
+驤 > jou\ ;
+驛 > eki\ ;
+驔 > ten\ ;
+驒 > tan\ ;
+驎 > rin\ ;
+驇 > chi\ ;
+驄 > sou\ ;
+驂 > san\ ;
+驁 > gou\ ;
+騺 > chi\ ;
+騸 > sen\ ;
+騵 > gen\ ;
+騰 > tou\ ;
+騫 > ken\ ;
+騨 > tan\ ;
+騣 > sou\ ;
+騠 > tei\ ;
+騗 > hen\ ;
+騐 > ken\ ;
+騌 > sou\ ;
+騋 > rai\ ;
+騈 > hen\ ;
+騅 > sui\ ;
+騃 > gai\ ;
+騂 > sei\ ;
+騁 > tei\ ;
+駾 > tai\ ;
+駽 > ken\ ;
+駻 > kan\ ;
+駹 > bou\ ;
+駴 > kai\ ;
+駭 > kai\ ;
+駫 > kei\ ;
+駧 > tou\ ;
+駢 > hen\ ;
+駟 > shi\ ;
+駚 > you\ ;
+駘 > tai\ ;
+駔 > sou\ ;
+駉 > kei\ ;
+馼 > bun\ ;
+馺 > sou\ ;
+馵 > shu\ ;
+馨 > kei\ ;
+馦 > ken\ ;
+馓 > san\ ;
+饞 > san\ ;
+饛 > bou\ ;
+饙 > fun\ ;
+饘 > sen\ ;
+饕 > tou\ ;
+饔 > you\ ;
+饎 > shi\ ;
+饍 > zen\ ;
+饌 > sen\ ;
+饊 > san\ ;
+饉 > kin\ ;
+饁 > you\ ;
+饀 > tou\ ;
+餻 > kou\ ;
+餹 > tou\ ;
+餵 > dai\ ;
+餴 > fun\ ;
+餳 > tou\ ;
+餱 > kou\ ;
+餧 > dai\ ;
+餤 > tan\ ;
+餢 > hou\ ;
+餠 > hei\ ;
+餛 > kon\ ;
+餚 > kou\ ;
+餖 > tou\ ;
+餒 > dai\ ;
+餌 > esa\ ;
+餈 > shi\ ;
+餃 > kou\ ;
+餂 > ten\ ;
+餁 > jin\ ;
+飳 > shu\ ;
+飰 > han\ ;
+飪 > jin\ ;
+飩 > ton\ ;
+飧 > son\ ;
+飦 > ken\ ;
+飣 > tei\ ;
+飡 > san\ ;
+飌 > fuu\ ;
+颿 > han\ ;
+颻 > you\ ;
+颺 > you\ ;
+颸 > shi\ ;
+颴 > sen\ ;
+颱 > tai\ ;
+颭 > sen\ ;
+顴 > kan\ ;
+顰 > hin\ ;
+顪 > kai\ ;
+顥 > kou\ ;
+顢 > ban\ ;
+顚 > ten\ ;
+顙 > sou\ ;
+顓 > sen\ ;
+顑 > kan\ ;
+顋 > sai\ ;
+顇 > sui\ ;
+顄 > kan\ ;
+頾 > shi\ ;
+頽 > tai\ ;
+頹 > tai\ ;
+頷 > kan\ ;
+頳 > tei\ ;
+頲 > tei\ ;
+頯 > kai\ ;
+頮 > kai\ ;
+頦 > kai\ ;
+頠 > gai\ ;
+頜 > kan\ ;
+頖 > han\ ;
+頒 > han\ ;
+頏 > kou\ ;
+須 > shu\ ;
+頇 > kan\ ;
+韸 > hou\ ;
+韴 > sou\ ;
+韲 > sei\ ;
+韱 > sen\ ;
+韯 > sen\ ;
+韝 > kou\ ;
+韜 > tou\ ;
+韛 > hai\ ;
+韓 > kan\ ;
+韐 > kou\ ;
+韎 > bai\ ;
+韌 > jin\ ;
+韊 > ran\ ;
+韉 > sen\ ;
+韆 > sen\ ;
+韅 > ken\ ;
+韄 > aku\ ;
+鞺 > tou\ ;
+鞶 > han\ ;
+鞳 > tou\ ;
+鞲 > kou\ ;
+鞱 > tou\ ;
+鞮 > tei\ ;
+鞬 > ken\ ;
+鞣 > juu\ ;
+鞞 > hei\ ;
+鞜 > tou\ ;
+鞚 > kou\ ;
+鞙 > ken\ ;
+鞗 > tou\ ;
+鞖 > sai\ ;
+鞕 > gou\ ;
+鞉 > tou\ ;
+鞀 > tou\ ;
+靽 > ban\ ;
+靼 > tan\ ;
+靸 > sou\ ;
+靳 > kin\ ;
+靱 > jin\ ;
+靭 > jin\ ;
+靫 > sai\ ;
+靪 > tei\ ;
+靧 > kai\ ;
+靦 > ten\ ;
+靤 > hou\ ;
+靣 > men\ ;
+靠 > kou\ ;
+靛 > ten\ ;
+靚 > sei\ ;
+靗 > tei\ ;
+靑 > sei\ ;
+靊 > fuu\ ;
+靆 > tai\ ;
+靁 > rai\ ;
+霾 > bai\ ;
+霽 > sei\ ;
+霝 > rei\ ;
+霛 > rei\ ;
+霚 > bou\ ;
+霖 > rin\ ;
+霓 > gei\ ;
+霑 > ten\ ;
+霎 > sou\ ;
+霉 > bai\ ;
+霈 > hai\ ;
+霆 > tei\ ;
+雱 > hou\ ;
+雰 > fun\ ;
+雯 > bun\ ;
+雟 > kei\ ;
+雞 > kei\ ;
+雝 > you\ ;
+雚 > kan\ ;
+雙 > sou\ ;
+雎 > sho\ ;
+雍 > you\ ;
+雋 > sen\ ;
+雊 > kou\ ;
+雈 > kan\ ;
+隹 > sui\ ;
+隸 > rei\ ;
+隷 > rei\ ;
+隶 > tai\ ;
+隴 > rou\ ;
+隯 > tou\ ;
+隮 > sei\ ;
+隧 > sui\ ;
+隦 > hei\ ;
+隥 > tou\ ;
+隤 > tai\ ;
+隝 > tou\ ;
+隚 > tou\ ;
+隗 > kai\ ;
+隑 > kai\ ;
+隍 > kou\ ;
+隄 > tei\ ;
+隃 > shu\ ;
+陾 > jou\ ;
+陼 > sho\ ;
+陷 > kan\ ;
+陲 > sui\ ;
+陮 > tai\ ;
+陬 > suu\ ;
+陪 > bai\ ;
+陦 > tou\ ;
+陡 > tou\ ;
+陝 > sen\ ;
+陜 > kou\ ;
+陛 > hei\ ;
+陘 > kei\ ;
+陖 > kai\ ;
+陔 > gai\ ;
+陋 > rou\ ;
+阺 > kyo\ ;
+阸 > aku\ ;
+阷 > tei\ ;
+阳 > you\ ;
+阱 > sei\ ;
+阯 > shi\ ;
+阮 > gen\ ;
+阬 > kou\ ;
+阨 > aku\ ;
+阦 > you\ ;
+阤 > chi\ ;
+阡 > sen\ ;
+闦 > gon\ ;
+闤 > kan\ ;
+闡 > sen\ ;
+闠 > kai\ ;
+闙 > kei\ ;
+闗 > kan\ ;
+闔 > kou\ ;
+闓 > kai\ ;
+闒 > tou\ ;
+闐 > ten\ ;
+闌 > ran\ ;
+闆 > han\ ;
+閿 > bun\ ;
+閽 > kon\ ;
+閺 > ben\ ;
+閬 > rou\ ;
+閫 > kon\ ;
+閩 > ben\ ;
+閨 > kei\ ;
+閧 > kou\ ;
+閡 > gai\ ;
+閞 > hen\ ;
+閝 > rei\ ;
+閙 > tou\ ;
+閘 > kou\ ;
+閔 > bin\ ;
+閏 > jun\ ;
+閎 > kou\ ;
+閍 > hou\ ;
+閌 > kou\ ;
+閈 > kan\ ;
+閇 > hei\ ;
+閂 > san\ ;
+镴 > rou\ ;
+镮 > kan\ ;
+锽 > kou\ ;
+铦 > sen\ ;
+铓 > bou\ ;
+铇 > hou\ ;
+钄 > ran\ ;
+鑾 > ran\ ;
+鑽 > san\ ;
+鑷 > jou\ ;
+鑲 > jou\ ;
+鑱 > san\ ;
+鑯 > sen\ ;
+鑭 > ran\ ;
+鑫 > kin\ ;
+鑨 > rou\ ;
+鑞 > rou\ ;
+鑛 > kou\ ;
+鑚 > san\ ;
+鑙 > kei\ ;
+鑑 > kan\ ;
+鑌 > hin\ ;
+鑈 > gei\ ;
+鑅 > kou\ ;
+鑁 > ban\ ;
+鐻 > kyo\ ;
+鐺 > tou\ ;
+鐶 > kan\ ;
+鐳 > rai\ ;
+鐱 > sen\ ;
+鐮 > ren\ ;
+鐫 > sen\ ;
+鐟 > tei\ ;
+鐙 > tou\ ;
+鐗 > kan\ ;
+鐕 > san\ ;
+鐓 > tai\ ;
+鐏 > son\ ;
+鐉 > sen\ ;
+鐇 > han\ ;
+鐄 > kou\ ;
+鐃 > dou\ ;
+鐁 > shi\ ;
+鏻 > rin\ ;
+鏸 > tei\ ;
+鏨 > san\ ;
+鏧 > rou\ ;
+鏤 > rou\ ;
+鏟 > san\ ;
+鏞 > you\ ;
+鏝 > man\ ;
+鏜 > tou\ ;
+鏙 > sai\ ;
+鏗 > kou\ ;
+鏓 > sou\ ;
+鏋 > ban\ ;
+鏈 > ren\ ;
+鏇 > sen\ ;
+鏆 > kan\ ;
+鏄 > tan\ ;
+鎬 > kou\ ;
+鎫 > ban\ ;
+鎩 > sai\ ;
+鎤 > kou\ ;
+鎡 > shi\ ;
+鎞 > hei\ ;
+鎗 > sou\ ;
+鎕 > tou\ ;
+鎔 > you\ ;
+鎒 > dou\ ;
+鎊 > hau\ ;
+鍿 > shi\ ;
+鍽 > hen\ ;
+鍴 > tan\ ;
+鍳 > kan\ ;
+鍱 > you\ ;
+鍰 > kan\ ;
+鍯 > sou\ ;
+鍭 > kou\ ;
+鍪 > bou\ ;
+鍩 > ten\ ;
+鍧 > kou\ ;
+鍤 > sou\ ;
+鍠 > kou\ ;
+鍞 > kou\ ;
+鍚 > you\ ;
+鍗 > tei\ ;
+鍕 > kun\ ;
+鍒 > juu\ ;
+鍑 > huu\ ;
+鍐 > sou\ ;
+鍊 > ren\ ;
+鍉 > tei\ ;
+鍇 > kai\ ;
+鍄 > kei\ ;
+錵 > nie\ ;
+錳 > mou\ ;
+錬 > ren\ ;
+錪 > ten\ ;
+錧 > kan\ ;
+錥 > iku\ ;
+錣 > tei\ ;
+錠 > jou\ ;
+錟 > tan\ ;
+錝 > sou\ ;
+錜 > jou\ ;
+錚 > sou\ ;
+錙 > shi\ ;
+錕 > kon\ ;
+錔 > tou\ ;
+錑 > rai\ ;
+錈 > ken\ ;
+錀 > rin\ ;
+鋻 > ken\ ;
+鋮 > sei\ ;
+鋬 > han\ ;
+鋧 > ken\ ;
+鋥 > tou\ ;
+鋡 > kan\ ;
+鋟 > sen\ ;
+鋙 > gyo\ ;
+鋗 > ken\ ;
+鋕 > shi\ ;
+鋓 > ten\ ;
+鋐 > kou\ ;
+鋎 > kan\ ;
+鋌 > tei\ ;
+鋋 > sen\ ;
+鋇 > hai\ ;
+鋅 > shi\ ;
+鋃 > rou\ ;
+鋂 > bai\ ;
+鋁 > ryo\ ;
+鋀 > tou\ ;
+銻 > tei\ ;
+銺 > sou\ ;
+銲 > kan\ ;
+銧 > kou\ ;
+銤 > bei\ ;
+銠 > rou\ ;
+銚 > you\ ;
+銙 > kai\ ;
+銗 > kou\ ;
+銖 > shu\ ;
+銓 > sen\ ;
+銒 > kei\ ;
+銈 > tei\ ;
+鉿 > kou\ ;
+鉼 > hei\ ;
+鉹 > shi\ ;
+鉸 > kou\ ;
+鉷 > kou\ ;
+鉶 > kei\ ;
+鉵 > tou\ ;
+鉱 > kou\ ;
+鉰 > shi\ ;
+鉩 > jou\ ;
+鉨 > dei\ ;
+鉧 > bou\ ;
+鉤 > kou\ ;
+鉡 > han\ ;
+鉜 > fuu\ ;
+鉙 > tai\ ;
+鉗 > kan\ ;
+鉏 > sho\ ;
+鉎 > sou\ ;
+鉉 > ken\ ;
+鉈 > sha\ ;
+鉇 > shi\ ;
+鉆 > ten\ ;
+鉅 > kyo\ ;
+鉃 > shi\ ;
+鉂 > shi\ ;
+鉀 > kou\ ;
+鈿 > ten\ ;
+鈶 > shi\ ;
+鈵 > hei\ ;
+鈰 > shi\ ;
+鈮 > dei\ ;
+鈣 > kai\ ;
+鈞 > kin\ ;
+鈜 > kou\ ;
+鈖 > hun\ ;
+鈓 > jin\ ;
+鈒 > sou\ ;
+鈑 > han\ ;
+鈐 > ken\ ;
+鈉 > dou\ ;
+鈄 > tou\ ;
+鈁 > hou\ ;
+釿 > kin\ ;
+釼 > ken\ ;
+釶 > shi\ ;
+釱 > tei\ ;
+釯 > bou\ ;
+釮 > sen\ ;
+釭 > kou\ ;
+釬 > kan\ ;
+釩 > han\ ;
+釧 > sen\ ;
+釦 > kou\ ;
+釤 > san\ ;
+釖 > tou\ ;
+釉 > yuu\ ;
+釆 > han\ ;
+釅 > gen\ ;
+釃 > shi\ ;
+釁 > kin\ ;
+釀 > jou\ ;
+醽 > rei\ ;
+醺 > kun\ ;
+醸 > jou\ ;
+醶 > gen\ ;
+醵 > kyo\ ;
+醴 > rei\ ;
+醳 > eki\ ;
+醲 > jou\ ;
+醰 > tan\ ;
+醯 > kei\ ;
+醦 > san\ ;
+醢 > kai\ ;
+醘 > kou\ ;
+醓 > tan\ ;
+醑 > sho\ ;
+醎 > dai\ ;
+醍 > tei\ ;
+醆 > san\ ;
+醅 > hai\ ;
+醂 > rin\ ;
+酻 > sui\ ;
+酹 > rai\ ;
+酶 > bai\ ;
+酵 > kou\ ;
+酲 > tei\ ;
+酭 > yuu\ ;
+酩 > mei\ ;
+酣 > kan\ ;
+酚 > hun\ ;
+酘 > tou\ ;
+酖 > tan\ ;
+酊 > tei\ ;
+酇 > san\ ;
+酆 > fuu\ ;
+酃 > rei\ ;
+鄽 > ten\ ;
+鄼 > sab\ ;
+鄺 > kou\ ;
+鄷 > hou\ ;
+鄶 > kai\ ;
+鄲 > tan\ ;
+鄰 > rin\ ;
+鄯 > sen\ ;
+鄮 > bou\ ;
+鄭 > tei\ ;
+鄧 > tou\ ;
+鄞 > gin\ ;
+鄘 > you\ ;
+鄗 > kou\ ;
+鄒 > suu\ ;
+鄍 > mei\ ;
+鄄 > ken\ ;
+郯 > tan\ ;
+郥 > hai\ ;
+郡 > gun\ ;
+郟 > kou\ ;
+郞 > rou\ ;
+郜 > kou\ ;
+郘 > ryo\ ;
+郗 > chi\ ;
+郕 > sei\ ;
+郒 > rou\ ;
+郌 > kei\ ;
+郈 > kou\ ;
+郃 > kou\ ;
+郁 > iku\ ;
+邾 > chu\ ;
+邽 > kei\ ;
+邶 > hai\ ;
+邴 > hei\ ;
+邰 > tai\ ;
+邯 > kan\ ;
+邨 > son\ ;
+邢 > kei\ ;
+邡 > hou\ ;
+邠 > hin\ ;
+邙 > bou\ ;
+邗 > kan\ ;
+邕 > you\ ;
+邑 > yuu\ ;
+邎 > yuu\ ;
+邌 > rei\ ;
+邉 > hen\ ;
+邅 > ken\ ;
+邃 > sui\ ;
+邁 > bai\ ;
+邀 > you\ ;
+遽 > kyo\ ;
+遷 > sen\ ;
+遶 > jou\ ;
+遵 > jun\ ;
+遴 > rin\ ;
+遰 > tei\ ;
+遯 > ton\ ;
+遨 > gou\ ;
+遦 > kan\ ;
+遢 > tou\ ;
+遟 > chi\ ;
+遞 > tei\ ;
+遝 > tou\ ;
+遘 > kou\ ;
+遉 > tei\ ;
+遄 > sen\ ;
+遃 > gen\ ;
+逿 > tou\ ;
+逳 > iku\ ;
+逰 > yuu\ ;
+逮 > tai\ ;
+逭 > kan\ ;
+逬 > hou\ ;
+逨 > rai\ ;
+逥 > kai\ ;
+逗 > tou\ ;
+逕 > kei\ ;
+逓 > tei\ ;
+逌 > yuu\ ;
+逈 > kei\ ;
+逄 > hou\ ;
+迺 > dai\ ;
+迸 > hou\ ;
+迶 > yuu\ ;
+迵 > tou\ ;
+迴 > kai\ ;
+迯 > tou\ ;
+迨 > tai\ ;
+迣 > sei\ ;
+迒 > kou\ ;
+迊 > sou\ ;
+迁 > sen\ ;
+迀 > kan\ ;
+边 > hen\ ;
+辮 > hen\ ;
+辨 > ben\ ;
+辧 > ben\ ;
+辦 > han\ ;
+辡 > hen\ ;
+辠 > sai\ ;
+轥 > rin\ ;
+轞 > kan\ ;
+轘 > kan\ ;
+轗 > kan\ ;
+轔 > rin\ ;
+轓 > han\ ;
+轒 > hun\ ;
+轑 > rau\ ;
+轏 > san\ ;
+轇 > kou\ ;
+轁 > tou\ ;
+輾 > ten\ ;
+輺 > shi\ ;
+輷 > kou\ ;
+輶 > yuu\ ;
+輳 > sou\ ;
+輮 > juu\ ;
+輭 > zen\ ;
+輨 > kan\ ;
+輦 > ren\ ;
+輥 > kon\ ;
+輣 > hou\ ;
+輡 > kan\ ;
+輞 > bou\ ;
+輜 > shi\ ;
+輗 > gei\ ;
+輓 > ban\ ;
+輐 > kan\ ;
+輏 > yuu\ ;
+輊 > chi\ ;
+輇 > sen\ ;
+軺 > you\ ;
+軹 > shi\ ;
+軰 > hai\ ;
+軨 > rei\ ;
+軣 > gou\ ;
+軠 > jin\ ;
+軟 > nan\ ;
+軜 > dou\ ;
+軛 > aku\ ;
+軔 > jin\ ;
+軑 > tei\ ;
+軐 > sen\ ;
+軇 > tou\ ;
+軆 > tei\ ;
+軁 > rou\ ;
+躺 > tou\ ;
+躰 > tei\ ;
+躭 > tan\ ;
+躪 > rin\ ;
+躧 > shi\ ;
+躢 > tou\ ;
+躡 > jou\ ;
+躝 > ran\ ;
+躚 > sen\ ;
+躙 > rin\ ;
+躕 > chu\ ;
+躔 > ten\ ;
+躋 > sei\ ;
+躉 > ton\ ;
+躁 > sou\ ;
+蹹 > tou\ ;
+蹯 > han\ ;
+蹭 > sou\ ;
+蹬 > tou\ ;
+蹣 > man\ ;
+蹡 > you\ ;
+蹝 > shi\ ;
+蹛 > tai\ ;
+蹔 > san\ ;
+蹏 > tei\ ;
+蹎 > ten\ ;
+蹍 > ten\ ;
+蹋 > tou\ ;
+蹊 > kei\ ;
+蹈 > tou\ ;
+蹇 > ken\ ;
+蹂 > juu\ ;
+蹁 > hen\ ;
+踹 > sen\ ;
+踶 > tei\ ;
+踴 > you\ ;
+踣 > hou\ ;
+踡 > ken\ ;
+踞 > kyo\ ;
+踔 > tou\ ;
+踐 > sen\ ;
+踈 > sho\ ;
+踅 > tei\ ;
+踁 > kei\ ;
+践 > sen\ ;
+跴 > sai\ ;
+跲 > kou\ ;
+跱 > chi\ ;
+跰 > hou\ ;
+跧 > sen\ ;
+跤 > kou\ ;
+跚 > san\ ;
+跙 > sho\ ;
+跑 > hou\ ;
+跊 > bai\ ;
+跈 > den\ ;
+跆 > tai\ ;
+趾 > shi\ ;
+趼 > gen\ ;
+趲 > san\ ;
+趯 > kan\ ;
+趨 > suu\ ;
+趦 > shi\ ;
+趟 > tou\ ;
+趕 > kan\ ;
+趑 > shi\ ;
+趍 > chi\ ;
+趈 > tan\ ;
+趄 > sho\ ;
+赿 > chi\ ;
+赱 > sou\ ;
+赭 > sha\ ;
+赬 > tei\ ;
+赦 > sha\ ;
+贜 > zou\ ;
+贛 > kou\ ;
+贗 > ken\ ;
+贓 > zou\ ;
+贒 > ken\ ;
+贍 > sen\ ;
+贊 > san\ ;
+贉 > tan\ ;
+贈 > zou\ ;
+贄 > shi\ ;
+贃 > wan\ ;
+贁 > hai\ ;
+賿 > rou\ ;
+賸 > you\ ;
+賷 > sei\ ;
+賵 > huu\ ;
+賴 > rai\ ;
+賲 > hou\ ;
+賯 > kei\ ;
+賨 > sou\ ;
+賤 > sen\ ;
+賠 > bai\ ;
+賜 > shi\ ;
+賛 > san\ ;
+賚 > rai\ ;
+賖 > sha\ ;
+賔 > hin\ ;
+賓 > hin\ ;
+賒 > sha\ ;
+賎 > sen\ ;
+賍 > sou\ ;
+賋 > kou\ ;
+賆 > hen\ ;
+賅 > kai\ ;
+賄 > wai\ ;
+貿 > bou\ ;
+貹 > sei\ ;
+貶 > hen\ ;
+貲 > shi\ ;
+貫 > kan\ ;
+貪 > don\ ;
+販 > han\ ;
+貢 > kou\ ;
+貛 > kan\ ;
+貙 > chu\ ;
+貒 > tan\ ;
+貎 > gei\ ;
+貌 > bou\ ;
+貋 > kan\ ;
+貇 > kon\ ;
+貆 > kan\ ;
+豻 > kan\ ;
+豺 > sai\ ;
+豸 > chi\ ;
+豶 > hun\ ;
+豵 > sou\ ;
+豳 > hin\ ;
+豬 > cho\ ;
+豩 > hin\ ;
+豦 > kyo\ ;
+豤 > kon\ ;
+豣 > ken\ ;
+豢 > ken\ ;
+豜 > ken\ ;
+豛 > eki\ ;
+豘 > ton\ ;
+豕 > shi\ ;
+豏 > kan\ ;
+豋 > tou\ ;
+豉 > shi\ ;
+豇 > kou\ ;
+豅 > rou\ ;
+谿 > kei\ ;
+谾 > kou\ ;
+谽 > kan\ ;
+谹 > kou\ ;
+谸 > sen\ ;
+讜 > tou\ ;
+讚 > san\ ;
+讙 > kan\ ;
+讕 > ran\ ;
+讓 > jou\ ;
+讒 > san\ ;
+譾 > sen\ ;
+譼 > kan\ ;
+譹 > kou\ ;
+譶 > tou\ ;
+譴 > ken\ ;
+譱 > zen\ ;
+譣 > sen\ ;
+譟 > sou\ ;
+譞 > ken\ ;
+譚 > tan\ ;
+譔 > sen\ ;
+譓 > kei\ ;
+譍 > you\ ;
+譈 > tai\ ;
+譄 > sou\ ;
+譂 > sen\ ;
+謾 > ban\ ;
+謰 > ren\ ;
+謭 > sei\ ;
+謦 > kei\ ;
+謠 > you\ ;
+謟 > tou\ ;
+謜 > gen\ ;
+謚 > shi\ ;
+謗 > bou\ ;
+謑 > kei\ ;
+謊 > kou\ ;
+謇 > ken\ ;
+謆 > sen\ ;
+謅 > sou\ ;
+謄 > tou\ ;
+諼 > ken\ ;
+諷 > fuu\ ;
+諵 > nan\ ;
+諴 > kan\ ;
+諰 > shi\ ;
+諮 > shi\ ;
+諬 > kei\ ;
+諫 > kan\ ;
+諧 > kai\ ;
+諢 > kon\ ;
+諡 > shi\ ;
+諠 > ken\ ;
+諟 > shi\ ;
+諞 > hen\ ;
+諝 > sho\ ;
+諚 > jou\ ;
+諕 > kou\ ;
+諓 > sen\ ;
+諏 > shu\ ;
+諍 > sou\ ;
+諌 > kan\ ;
+諉 > zui\ ;
+諈 > sui\ ;
+諄 > jun\ ;
+諂 > ten\ ;
+誾 > gin\ ;
+誻 > tou\ ;
+誷 > bou\ ;
+誶 > sui\ ;
+誩 > kei\ ;
+誨 > kai\ ;
+誥 > kou\ ;
+誡 > kai\ ;
+誟 > kou\ ;
+誙 > kou\ ;
+誗 > ten\ ;
+誕 > tan\ ;
+誏 > rou\ ;
+誃 > shi\ ;
+詿 > kai\ ;
+詼 > kai\ ;
+詺 > bii\ ;
+詹 > sen\ ;
+詷 > tou\ ;
+詬 > kou\ ;
+詥 > kou\ ;
+詣 > kei\ ;
+詢 > jun\ ;
+詝 > cho\ ;
+詜 > tou\ ;
+詓 > kyo\ ;
+詒 > tai\ ;
+詎 > kyo\ ;
+詉 > dou\ ;
+詇 > you\ ;
+詆 > tei\ ;
+詅 > rei\ ;
+詃 > ken\ ;
+詀 > tan\ ;
+訾 > shi\ ;
+訽 > kou\ ;
+訵 > chi\ ;
+訬 > sou\ ;
+訤 > kon\ ;
+訢 > kin\ ;
+訞 > you\ ;
+訕 > san\ ;
+訔 > gin\ ;
+訓 > kun\ ;
+訒 > jin\ ;
+訑 > shi\ ;
+討 > tou\ ;
+訌 > kou\ ;
+訇 > kou\ ;
+訂 > tei\ ;
+觿 > kei\ ;
+觽 > kei\ ;
+觹 > kei\ ;
+觶 > shi\ ;
+觧 > kai\ ;
+觥 > kou\ ;
+觝 > tei\ ;
+觜 > shi\ ;
+觘 > sou\ ;
+觗 > shi\ ;
+觔 > kin\ ;
+覸 > kan\ ;
+覷 > shu\ ;
+覵 > kan\ ;
+覴 > tou\ ;
+覲 > kin\ ;
+覯 > kou\ ;
+覥 > ten\ ;
+覠 > kin\ ;
+覟 > shi\ ;
+覘 > ten\ ;
+覔 > eki\ ;
+覍 > hen\ ;
+覌 > kan\ ;
+覃 > tan\ ;
+襾 > aka\ ;
+襽 > ran\ ;
+襼 > gei\ ;
+襻 > han\ ;
+襺 > ken\ ;
+襴 > ran\ ;
+襳 > sen\ ;
+襰 > rai\ ;
+襢 > tan\ ;
+襠 > tou\ ;
+襜 > sen\ ;
+襛 > jou\ ;
+襚 > sui\ ;
+襕 > ran\ ;
+襌 > tan\ ;
+襉 > kan\ ;
+襄 > jou\ ;
+襃 > hou\ ;
+褹 > gei\ ;
+褰 > ken\ ;
+褫 > chi\ ;
+褧 > kei\ ;
+褦 > dai\ ;
+褠 > kou\ ;
+褝 > tan\ ;
+褜 > ena\ ;
+褚 > cho\ ;
+褙 > hai\ ;
+褖 > tan\ ;
+褏 > yuu\ ;
+褍 > tan\ ;
+褊 > hen\ ;
+褆 > shi\ ;
+褂 > kai\ ;
+裵 > hai\ ;
+裴 > hai\ ;
+裪 > tau\ ;
+裧 > sen\ ;
+裞 > sei\ ;
+裙 > kun\ ;
+裒 > hou\ ;
+裎 > tei\ ;
+裍 > kon\ ;
+裌 > kou\ ;
+裋 > shu\ ;
+裊 > jou\ ;
+裈 > kon\ ;
+袿 > kei\ ;
+袾 > chu\ ;
+袵 > jin\ ;
+袳 > shi\ ;
+袪 > kyo\ ;
+袨 > ken\ ;
+袤 > bou\ ;
+袞 > kon\ ;
+袛 > tei\ ;
+袒 > tan\ ;
+袍 > hou\ ;
+袀 > kin\ ;
+衿 > eri\ ;
+衽 > jin\ ;
+衻 > zen\ ;
+衲 > dou\ ;
+衮 > kon\ ;
+衫 > san\ ;
+衩 > sai\ ;
+衦 > kan\ ;
+衟 > dou\ ;
+衜 > dou\ ;
+衙 > gyo\ ;
+衘 > kan\ ;
+衖 > kou\ ;
+衕 > tou\ ;
+衒 > ken\ ;
+衑 > rei\ ;
+衎 > kan\ ;
+衅 > kin\ ;
+衃 > hai\ ;
+衁 > kou\ ;
+蠻 > ban\ ;
+蠺 > san\ ;
+蠵 > kei\ ;
+蠲 > ken\ ;
+蠭 > hou\ ;
+蠣 > rei\ ;
+蠡 > rei\ ;
+蠟 > rou\ ;
+蠜 > han\ ;
+蠙 > hen\ ;
+蠔 > kou\ ;
+蠓 > bou\ ;
+蠒 > ken\ ;
+蠐 > sei\ ;
+蠏 > kai\ ;
+蠊 > ren\ ;
+蠉 > ken\ ;
+蠆 > tai\ ;
+蠅 > you\ ;
+蟿 > kei\ ;
+蟾 > sen\ ;
+蟺 > sen\ ;
+蟸 > rei\ ;
+蟷 > tou\ ;
+蟶 > tei\ ;
+蟳 > jin\ ;
+蟱 > bou\ ;
+蟬 > sen\ ;
+蟪 > kei\ ;
+蟤 > sen\ ;
+蟠 > han\ ;
+蟚 > hou\ ;
+蟖 > shi\ ;
+蟕 > sui\ ;
+蟒 > bou\ ;
+蟐 > tou\ ;
+蟊 > bou\ ;
+蟁 > bun\ ;
+螻 > rou\ ;
+螳 > tou\ ;
+螯 > gou\ ;
+螮 > tei\ ;
+螭 > chi\ ;
+螬 > sou\ ;
+螧 > ebi\ ;
+螣 > tou\ ;
+螟 > mei\ ;
+螗 > tou\ ;
+螕 > hei\ ;
+螌 > han\ ;
+螈 > gen\ ;
+螇 > kei\ ;
+螆 > shi\ ;
+螅 > shi\ ;
+螄 > shi\ ;
+螃 > hou\ ;
+螂 > rou\ ;
+蝻 > nan\ ;
+蝱 > mou\ ;
+蝪 > tou\ ;
+蝦 > ebi\ ;
+蝥 > bou\ ;
+蝣 > yuu\ ;
+蝡 > zen\ ;
+蝗 > kou\ ;
+蝅 > san\ ;
+蝃 > tei\ ;
+蝀 > tou\ ;
+蜺 > gei\ ;
+蜹 > zei\ ;
+蜷 > ken\ ;
+蜴 > eki\ ;
+蜯 > hou\ ;
+蜡 > sho\ ;
+蜟 > iku\ ;
+蜖 > kai\ ;
+蜕 > zei\ ;
+蜔 > ten\ ;
+蜓 > ten\ ;
+蜑 > tan\ ;
+蜏 > yuu\ ;
+蜍 > sho\ ;
+蜋 > rou\ ;
+蛽 > bai\ ;
+蛼 > sha\ ;
+蛻 > zei\ ;
+蛯 > ebi\ ;
+蛮 > ban\ ;
+蛧 > bou\ ;
+蛠 > rei\ ;
+蛟 > kou\ ;
+蛗 > huu\ ;
+蛕 > kai\ ;
+蛔 > kai\ ;
+蛑 > bou\ ;
+蛎 > rei\ ;
+蛋 > tan\ ;
+蛅 > zen\ ;
+蛃 > hei\ ;
+蛀 > shu\ ;
+蚿 > ken\ ;
+蚷 > kyo\ ;
+蚶 > kan\ ;
+蚴 > yuu\ ;
+蚳 > chi\ ;
+蚰 > yuu\ ;
+蚫 > hou\ ;
+蚪 > tou\ ;
+蚩 > shi\ ;
+蚧 > kai\ ;
+蚦 > zen\ ;
+蚣 > kou\ ;
+蚡 > hun\ ;
+蚘 > kai\ ;
+蚖 > gen\ ;
+蚌 > hou\ ;
+蚈 > ken\ ;
+虻 > abu\ ;
+虷 > kan\ ;
+虵 > sha\ ;
+虤 > gan\ ;
+虣 > hou\ ;
+虢 > hou\ ;
+虡 > kyo\ ;
+虠 > kou\ ;
+虛 > kyo\ ;
+虗 > kyo\ ;
+虔 > ken\ ;
+虓 > kou\ ;
+虒 > shi\ ;
+虆 > rui\ ;
+虀 > sei\ ;
+蘸 > san\ ;
+蘯 > tou\ ;
+蘩 > han\ ;
+蘢 > rou\ ;
+蘞 > ren\ ;
+蘛 > iku\ ;
+蘚 > sen\ ;
+蘘 > jou\ ;
+蘐 > ken\ ;
+蘏 > kei\ ;
+蘍 > kun\ ;
+蘋 > hin\ ;
+蘅 > kou\ ;
+藾 > rai\ ;
+藼 > ken\ ;
+藺 > rin\ ;
+藷 > sho\ ;
+藳 > kou\ ;
+藟 > rui\ ;
+藘 > ryo\ ;
+藕 > guu\ ;
+藏 > zou\ ;
+藊 > hen\ ;
+藇 > sho\ ;
+藂 > sou\ ;
+薾 > shi\ ;
+薹 > tai\ ;
+薶 > bai\ ;
+薴 > nou\ ;
+薰 > kun\ ;
+薭 > hai\ ;
+薫 > kun\ ;
+薨 > kou\ ;
+薧 > kou\ ;
+薤 > kai\ ;
+薢 > kai\ ;
+薠 > han\ ;
+薟 > ren\ ;
+薝 > sen\ ;
+薙 > tei\ ;
+薐 > rou\ ;
+薋 > shi\ ;
+薉 > wai\ ;
+薈 > kai\ ;
+薅 > kou\ ;
+薁 > iku\ ;
+蕿 > ken\ ;
+蕽 > dou\ ;
+蕻 > kou\ ;
+蕹 > you\ ;
+蕯 > rou\ ;
+蕫 > tou\ ;
+蕤 > zui\ ;
+蕢 > kai\ ;
+蕡 > hun\ ;
+蕞 > sai\ ;
+蕙 > kei\ ;
+蕘 > jou\ ;
+蕖 > kyo\ ;
+蕕 > yuu\ ;
+蕒 > bai\ ;
+蕑 > kan\ ;
+蕏 > cho\ ;
+蕋 > zui\ ;
+蕊 > zui\ ;
+蕆 > ten\ ;
+蕃 > ban\ ;
+蕁 > jin\ ;
+蔳 > sen\ ;
+蔲 > kou\ ;
+蔪 > sen\ ;
+蔧 > sei\ ;
+蔥 > sou\ ;
+蔡 > sai\ ;
+蔞 > rou\ ;
+蔜 > gou\ ;
+蔗 > sho\ ;
+蔓 > ban\ ;
+蔂 > rui\ ;
+蔀 > hou\ ;
+蓺 > gei\ ;
+蓷 > tai\ ;
+蓱 > hei\ ;
+蓰 > shi\ ;
+蓯 > sou\ ;
+蓪 > tou\ ;
+蓜 > hai\ ;
+蓓 > hai\ ;
+蓍 > shi\ ;
+蓉 > you\ ;
+蓈 > kou\ ;
+蓂 > mei\ ;
+蓀 > son\ ;
+蒿 > kou\ ;
+蒾 > bei\ ;
+蒹 > ken\ ;
+蒯 > kai\ ;
+蒭 > suu\ ;
+蒨 > sen\ ;
+蒡 > hou\ ;
+蒓 > jun\ ;
+蒒 > shi\ ;
+蒄 > kan\ ;
+蒂 > tei\ ;
+葽 > you\ ;
+葼 > sou\ ;
+葹 > shi\ ;
+葸 > sai\ ;
+葷 > gun\ ;
+葶 > tei\ ;
+葵 > aoi\ ;
+葰 > sui\ ;
+葮 > tan\ ;
+葪 > kei\ ;
+葥 > sen\ ;
+葢 > gai\ ;
+葘 > shi\ ;
+葒 > kou\ ;
+葑 > hou\ ;
+葏 > sen\ ;
+葈 > shi\ ;
+葇 > juu\ ;
+葅 > sho\ ;
+萹 > hen\ ;
+萱 > ken\ ;
+萯 > huu\ ;
+萠 > hou\ ;
+萕 > sei\ ;
+萑 > kan\ ;
+萏 > tan\ ;
+萍 > hei\ ;
+萋 > sei\ ;
+萊 > rai\ ;
+萃 > sui\ ;
+菼 > tan\ ;
+菻 > rin\ ;
+菹 > sho\ ;
+菷 > sou\ ;
+菶 > hou\ ;
+菪 > tou\ ;
+菘 > suu\ ;
+菑 > shi\ ;
+菎 > kon\ ;
+菌 > kin\ ;
+菅 > kan\ ;
+菁 > sei\ ;
+莿 > shi\ ;
+莾 > mou\ ;
+莽 > bou\ ;
+莱 > rai\ ;
+莬 > bun\ ;
+莧 > kan\ ;
+莦 > sou\ ;
+莠 > yuu\ ;
+莟 > kan\ ;
+莞 > kan\ ;
+莛 > tei\ ;
+莙 > kin\ ;
+莖 > kei\ ;
+莕 > kou\ ;
+莔 > mou\ ;
+莓 > mai\ ;
+莒 > kyo\ ;
+莊 > sou\ ;
+莉 > chi\ ;
+莇 > cho\ ;
+莄 > kou\ ;
+荿 > sei\ ;
+荻 > ogi\ ;
+荵 > jin\ ;
+荳 > tou\ ;
+荘 > sou\ ;
+荖 > hou\ ;
+荕 > kin\ ;
+荓 > hei\ ;
+荑 > tei\ ;
+荐 > sen\ ;
+荎 > chi\ ;
+荊 > kei\ ;
+荇 > kou\ ;
+荆 > kei\ ;
+荅 > tou\ ;
+荄 > kai\ ;
+荃 > sen\ ;
+荀 > jun\ ;
+茼 > tou\ ;
+茷 > hai\ ;
+茴 > kai\ ;
+茳 > kou\ ;
+茱 > shu\ ;
+茬 > shi\ ;
+茝 > sai\ ;
+茛 > kon\ ;
+茗 > mei\ ;
+茋 > shi\ ;
+茊 > shi\ ;
+茈 > shi\ ;
+茆 > bou\ ;
+范 > han\ ;
+苹 > hei\ ;
+苷 > kan\ ;
+苳 > tou\ ;
+苯 > hon\ ;
+苭 > you\ ;
+苫 > sen\ ;
+苪 > hei\ ;
+苨 > dei\ ;
+苧 > cho\ ;
+苣 > kyo\ ;
+苠 > bin\ ;
+苟 > kou\ ;
+苞 > hou\ ;
+苚 > you\ ;
+苓 > rei\ ;
+苒 > zen\ ;
+苐 > tei\ ;
+苅 > gai\ ;
+芿 > jou\ ;
+芼 > bou\ ;
+芻 > suu\ ;
+芷 > shi\ ;
+芮 > zei\ ;
+芬 > fun\ ;
+芫 > gen\ ;
+芩 > kin\ ;
+芧 > cho\ ;
+芥 > kai\ ;
+芤 > kou\ ;
+芣 > huu\ ;
+芡 > ken\ ;
+芠 > bun\ ;
+芟 > san\ ;
+芚 > ton\ ;
+芖 > chi\ ;
+芋 > imo\ ;
+芊 > sen\ ;
+芉 > kai\ ;
+芇 > ben\ ;
+芄 > kan\ ;
+芃 > hou\ ;
+芁 > kou\ ;
+艿 > jou\ ;
+艾 > gai\ ;
+艱 > kan\ ;
+艮 > kon\ ;
+艭 > sou\ ;
+艨 > mou\ ;
+艦 > kan\ ;
+艠 > tou\ ;
+艟 > dou\ ;
+艜 > tai\ ;
+艚 > sou\ ;
+艙 > sou\ ;
+艘 > sou\ ;
+艑 > hen\ ;
+艎 > kou\ ;
+艋 > mou\ ;
+艇 > tei\ ;
+艆 > rou\ ;
+艄 > sou\ ;
+舺 > kou\ ;
+舷 > ken\ ;
+舲 > rei\ ;
+舫 > hou\ ;
+舩 > sen\ ;
+舨 > han\ ;
+舢 > san\ ;
+舡 > kou\ ;
+舛 > sen\ ;
+舚 > ten\ ;
+舙 > kuu\ ;
+舘 > kan\ ;
+舔 > ten\ ;
+舓 > shi\ ;
+舐 > shi\ ;
+舍 > sha\ ;
+舉 > kyo\ ;
+舀 > you\ ;
+臿 > sou\ ;
+臽 > kan\ ;
+臶 > sen\ ;
+臱 > ben\ ;
+臧 > zou\ ;
+臤 > kan\ ;
+臡 > dei\ ;
+臠 > ren\ ;
+臚 > ryo\ ;
+臘 > rou\ ;
+臗 > kon\ ;
+臓 > zou\ ;
+臑 > dau\ ;
+臏 > hin\ ;
+臎 > sui\ ;
+臋 > den\ ;
+臊 > sou\ ;
+臉 > ren\ ;
+臈 > rou\ ;
+臆 > oku\ ;
+臃 > you\ ;
+臀 > den\ ;
+膾 > kai\ ;
+膻 > tan\ ;
+膺 > you\ ;
+膸 > zui\ ;
+膵 > sui\ ;
+膰 > han\ ;
+膨 > bou\ ;
+膢 > rou\ ;
+膞 > sen\ ;
+膛 > tou\ ;
+膖 > hou\ ;
+膐 > ryo\ ;
+膏 > kou\ ;
+膎 > kai\ ;
+膅 > tou\ ;
+膂 > ryo\ ;
+膁 > ken\ ;
+膀 > hou\ ;
+腺 > sen\ ;
+腱 > ken\ ;
+腫 > shu\ ;
+腩 > dan\ ;
+腨 > sen\ ;
+腧 > shu\ ;
+腥 > sei\ ;
+腠 > sou\ ;
+腔 > kou\ ;
+腒 > kyo\ ;
+腎 > jin\ ;
+腌 > you\ ;
+腇 > dai\ ;
+腆 > ten\ ;
+腅 > tan\ ;
+腁 > hen\ ;
+脺 > zei\ ;
+脰 > tou\ ;
+脬 > hou\ ;
+脧 > sai\ ;
+脠 > sen\ ;
+脘 > kan\ ;
+脗 > bun\ ;
+脆 > zei\ ;
+脃 > zei\ ;
+胾 > shi\ ;
+胼 > hen\ ;
+胶 > kou\ ;
+胲 > kai\ ;
+胱 > kou\ ;
+胮 > hou\ ;
+胥 > sho\ ;
+胠 > kyo\ ;
+胝 > chi\ ;
+胛 > kou\ ;
+胚 > hai\ ;
+胘 > ken\ ;
+胖 > han\ ;
+胔 > shi\ ;
+胒 > dei\ ;
+胏 > shi\ ;
+肺 > hai\ ;
+肬 > yuu\ ;
+肪 > bou\ ;
+肧 > hai\ ;
+肦 > fun\ ;
+肢 > shi\ ;
+肜 > yuu\ ;
+肛 > kou\ ;
+肓 > kou\ ;
+肎 > kou\ ;
+聹 > dei\ ;
+聶 > jou\ ;
+聵 > gai\ ;
+聱 > gou\ ;
+聰 > sou\ ;
+聯 > ren\ ;
+聮 > ren\ ;
+聫 > ren\ ;
+聨 > ren\ ;
+聦 > sou\ ;
+聤 > tei\ ;
+聡 > sou\ ;
+聠 > hei\ ;
+聟 > sei\ ;
+聘 > hei\ ;
+聆 > rei\ ;
+耿 > kou\ ;
+耾 > kou\ ;
+耼 > tan\ ;
+耹 > kin\ ;
+耷 > tou\ ;
+耵 > tei\ ;
+耰 > yuu\ ;
+耮 > rou\ ;
+耬 > rou\ ;
+耨 > dou\ ;
+耦 > gou\ ;
+耠 > kou\ ;
+耟 > kyo\ ;
+耝 > sho\ ;
+耜 > shi\ ;
+耗 > mou\ ;
+耖 > sou\ ;
+耔 > shi\ ;
+耓 > tei\ ;
+耒 > rai\ ;
+耑 > tan\ ;
+耎 > zen\ ;
+耉 > kou\ ;
+耈 > kou\ ;
+耇 > kou\ ;
+耄 > mou\ ;
+耀 > you\ ;
+翿 > tou\ ;
+翾 > ken\ ;
+翽 > kai\ ;
+翺 > gou\ ;
+翰 > kan\ ;
+翫 > gan\ ;
+翩 > hen\ ;
+翨 > shi\ ;
+翦 > sen\ ;
+翥 > sho\ ;
+翣 > sou\ ;
+翠 > sui\ ;
+翛 > yuu\ ;
+翎 > rei\ ;
+翈 > kou\ ;
+翆 > sui\ ;
+翅 > shi\ ;
+翃 > kou\ ;
+羿 > gei\ ;
+羼 > san\ ;
+羸 > rui\ ;
+羶 > sen\ ;
+羴 > sen\ ;
+羪 > you\ ;
+羦 > kan\ ;
+羣 > gun\ ;
+羢 > jou\ ;
+羡 > sen\ ;
+羝 > tei\ ;
+羜 > cho\ ;
+羚 > rei\ ;
+羘 > sou\ ;
+羔 > kou\ ;
+羑 > yuu\ ;
+羐 > yuu\ ;
+羏 > you\ ;
+羂 > ken\ ;
+罾 > sou\ ;
+罽 > kei\ ;
+署 > sho\ ;
+罱 > gun\ ;
+罫 > kei\ ;
+罩 > tou\ ;
+罥 > ken\ ;
+罤 > tei\ ;
+罣 > kai\ ;
+罡 > kou\ ;
+罝 > sha\ ;
+罜 > shu\ ;
+罕 > kan\ ;
+罔 > mou\ ;
+罓 > mou\ ;
+罒 > mou\ ;
+网 > bou\ ;
+罍 > rai\ ;
+罇 > son\ ;
+罄 > kei\ ;
+缿 > tou\ ;
+缾 > hei\ ;
+缸 > kou\ ;
+缷 > sha\ ;
+缶 > kan\ ;
+缐 > sen\ ;
+绹 > tou\ ;
+纻 > cho\ ;
+纮 > kou\ ;
+纞 > ren\ ;
+纝 > rui\ ;
+纜 > ran\ ;
+纛 > tou\ ;
+纚 > shi\ ;
+纘 > sab\ ;
+纖 > sen\ ;
+纔 > san\ ;
+纐 > kou\ ;
+纎 > sen\ ;
+纍 > rui\ ;
+纊 > kou\ ;
+纉 > san\ ;
+纇 > rai\ ;
+纁 > kun\ ;
+繿 > ran\ ;
+繾 > ten\ ;
+繽 > hin\ ;
+繹 > eki\ ;
+繸 > sui\ ;
+繯 > ken\ ;
+繫 > kei\ ;
+繤 > san\ ;
+繢 > kai\ ;
+繟 > sen\ ;
+繝 > kan\ ;
+繙 > han\ ;
+繖 > san\ ;
+繐 > kei\ ;
+繎 > bin\ ;
+繋 > kei\ ;
+繊 > sen\ ;
+繇 > you\ ;
+繅 > sou\ ;
+繃 > hou\ ;
+縿 > san\ ;
+縺 > ren\ ;
+縵 > ban\ ;
+縴 > ken\ ;
+縳 > ten\ ;
+縲 > rui\ ;
+縨 > kou\ ;
+縧 > tou\ ;
+縣 > ken\ ;
+縢 > tou\ ;
+縡 > sai\ ;
+縗 > sai\ ;
+縒 > shi\ ;
+縑 > ken\ ;
+縆 > kou\ ;
+縂 > sou\ ;
+緻 > chi\ ;
+緺 > kai\ ;
+緹 > tei\ ;
+緶 > hen\ ;
+緵 > sou\ ;
+緱 > kou\ ;
+緫 > sou\ ;
+緪 > kou\ ;
+緦 > shi\ ;
+緥 > hou\ ;
+緢 > bou\ ;
+緡 > bin\ ;
+緞 > tan\ ;
+緜 > ben\ ;
+緘 > kan\ ;
+緖 > sho\ ;
+緍 > bin\ ;
+緌 > zui\ ;
+緇 > shi\ ;
+緄 > kon\ ;
+緂 > tan\ ;
+綻 > tan\ ;
+綸 > rin\ ;
+綷 > sai\ ;
+綵 > sai\ ;
+綳 > hou\ ;
+綰 > wan\ ;
+綯 > tou\ ;
+綮 > kei\ ;
+綫 > sen\ ;
+綪 > sen\ ;
+綣 > ken\ ;
+綟 > rei\ ;
+綜 > sou\ ;
+綗 > gei\ ;
+綑 > kon\ ;
+綏 > sui\ ;
+綋 > kou\ ;
+綉 > tou\ ;
+綈 > tei\ ;
+綆 > kou\ ;
+綂 > tou\ ;
+綁 > hou\ ;
+絽 > ryo\ ;
+絻 > bun\ ;
+絺 > chi\ ;
+絸 > ken\ ;
+絳 > kou\ ;
+絧 > tou\ ;
+絢 > ken\ ;
+絛 > jou\ ;
+絚 > kou\ ;
+絙 > kan\ ;
+絖 > kou\ ;
+絓 > kai\ ;
+絑 > shu\ ;
+絎 > kou\ ;
+絍 > jin\ ;
+絋 > kou\ ;
+絅 > kei\ ;
+絃 > gen\ ;
+絁 > shi\ ;
+紿 > tai\ ;
+紵 > cho\ ;
+紭 > kou\ ;
+紪 > sei\ ;
+紣 > sai\ ;
+紡 > bou\ ;
+紞 > tan\ ;
+紝 > jin\ ;
+紘 > kou\ ;
+紓 > sho\ ;
+紒 > kei\ ;
+紑 > huu\ ;
+紏 > tou\ ;
+紊 > bin\ ;
+紉 > jin\ ;
+紈 > kan\ ;
+系 > kei\ ;
+糲 > rei\ ;
+糰 > dan\ ;
+糫 > kai\ ;
+糩 > kai\ ;
+糦 > shi\ ;
+糤 > san\ ;
+糟 > sou\ ;
+糝 > san\ ;
+糚 > sou\ ;
+糙 > sou\ ;
+糕 > kou\ ;
+糍 > shi\ ;
+糉 > sou\ ;
+糈 > sho\ ;
+糇 > kou\ ;
+糅 > juu\ ;
+糄 > hen\ ;
+糂 > san\ ;
+粽 > sou\ ;
+粼 > rin\ ;
+粺 > hai\ ;
+粹 > sui\ ;
+粳 > kou\ ;
+粲 > san\ ;
+粰 > fuu\ ;
+粦 > rin\ ;
+粢 > shi\ ;
+粡 > tou\ ;
+粠 > kou\ ;
+粞 > sei\ ;
+粘 > nen\ ;
+粔 > kyo\ ;
+粋 > iki\ ;
+粇 > kou\ ;
+籽 > shi\ ;
+籼 > sen\ ;
+籭 > shi\ ;
+籩 > hen\ ;
+籧 > kyo\ ;
+籣 > ran\ ;
+籟 > rai\ ;
+籞 > gyo\ ;
+籛 > sen\ ;
+籘 > tou\ ;
+籓 > han\ ;
+籑 > sen\ ;
+籃 > ran\ ;
+簽 > sen\ ;
+簺 > sai\ ;
+簹 > tou\ ;
+簴 > kyo\ ;
+簳 > kan\ ;
+簧 > kou\ ;
+簦 > tou\ ;
+簟 > ten\ ;
+簞 > tan\ ;
+簛 > shi\ ;
+簓 > sen\ ;
+簒 > san\ ;
+簍 > rou\ ;
+簇 > sou\ ;
+簆 > kou\ ;
+簁 > shi\ ;
+篼 > tou\ ;
+篺 > hai\ ;
+篹 > san\ ;
+篷 > hou\ ;
+篵 > sou\ ;
+篲 > sui\ ;
+篪 > chi\ ;
+篨 > cho\ ;
+篦 > hei\ ;
+篡 > san\ ;
+篝 > kou\ ;
+篙 > kou\ ;
+篖 > tou\ ;
+篏 > kan\ ;
+篌 > kou\ ;
+篊 > kou\ ;
+篈 > hou\ ;
+篇 > hen\ ;
+篆 > ten\ ;
+篅 > sui\ ;
+篂 > sei\ ;
+箽 > tou\ ;
+箼 > oku\ ;
+箵 > sei\ ;
+箲 > sen\ ;
+箯 > hen\ ;
+箭 > sen\ ;
+箠 > sui\ ;
+箟 > kin\ ;
+箞 > ken\ ;
+箝 > kan\ ;
+箜 > kou\ ;
+箘 > kin\ ;
+箖 > rin\ ;
+箑 > sou\ ;
+箐 > sei\ ;
+箏 > sou\ ;
+箉 > kai\ ;
+箄 > hai\ ;
+筷 > kai\ ;
+筳 > tei\ ;
+筲 > sou\ ;
+筯 > cho\ ;
+筮 > sei\ ;
+筭 > san\ ;
+筬 > sei\ ;
+筪 > kou\ ;
+筩 > tou\ ;
+筦 > kan\ ;
+筥 > kyo\ ;
+筤 > rou\ ;
+筝 > sou\ ;
+筕 > kou\ ;
+筌 > sen\ ;
+筅 > sen\ ;
+筀 > kei\ ;
+笶 > shi\ ;
+笵 > han\ ;
+笱 > kou\ ;
+笭 > rei\ ;
+笫 > shi\ ;
+笪 > tan\ ;
+笩 > hai\ ;
+笨 > hon\ ;
+笣 > hou\ ;
+笞 > chi\ ;
+笙 > sou\ ;
+笘 > sen\ ;
+笋 > jun\ ;
+笇 > san\ ;
+竾 > shi\ ;
+竼 > hou\ ;
+竸 > kei\ ;
+竱 > sen\ ;
+竫 > sei\ ;
+竢 > shi\ ;
+竛 > rei\ ;
+竚 > cho\ ;
+站 > tan\ ;
+竑 > kou\ ;
+竎 > fuu\ ;
+竌 > sho\ ;
+竉 > rou\ ;
+竇 > tou\ ;
+竄 > zan\ ;
+窼 > sou\ ;
+窻 > sou\ ;
+窰 > you\ ;
+窞 > tan\ ;
+窘 > kin\ ;
+窗 > sou\ ;
+窖 > kou\ ;
+窔 > you\ ;
+窑 > you\ ;
+窐 > kei\ ;
+窈 > you\ ;
+窆 > bin\ ;
+窅 > you\ ;
+窂 > rou\ ;
+穾 > you\ ;
+穽 > sei\ ;
+穰 > jou\ ;
+穭 > ryo\ ;
+穧 > sei\ ;
+穣 > jou\ ;
+穠 > jou\ ;
+穟 > sui\ ;
+穝 > sai\ ;
+穜 > tou\ ;
+穈 > bon\ ;
+穇 > san\ ;
+穅 > kou\ ;
+穄 > sei\ ;
+穃 > you\ ;
+稾 > kou\ ;
+稺 > chi\ ;
+稵 > shi\ ;
+稴 > ren\ ;
+稰 > sho\ ;
+稯 > sou\ ;
+稧 > kei\ ;
+稟 > rin\ ;
+稛 > kon\ ;
+稗 > hie\ ;
+稔 > jin\ ;
+稊 > tei\ ;
+稉 > kou\ ;
+稈 > kan\ ;
+稇 > kon\ ;
+稅 > zei\ ;
+稂 > rou\ ;
+秼 > shu\ ;
+秱 > tou\ ;
+秭 > shi\ ;
+秬 > kyo\ ;
+秪 > chi\ ;
+秥 > den\ ;
+秢 > rei\ ;
+秞 > yuu\ ;
+秚 > han\ ;
+秖 > shi\ ;
+秔 > kou\ ;
+秏 > kou\ ;
+秊 > nen\ ;
+秉 > hei\ ;
+秈 > sen\ ;
+秇 > gei\ ;
+秄 > shi\ ;
+秂 > jin\ ;
+离 > chi\ ;
+禺 > guu\ ;
+禸 > juu\ ;
+禳 > jou\ ;
+禱 > tou\ ;
+禯 > jou\ ;
+禫 > tan\ ;
+禪 > zen\ ;
+禩 > shi\ ;
+禦 > gyo\ ;
+禘 > tei\ ;
+禖 > bai\ ;
+禔 > shi\ ;
+禓 > you\ ;
+禎 > tei\ ;
+禌 > shi\ ;
+禀 > rin\ ;
+祼 > kan\ ;
+祹 > tou\ ;
+祫 > kou\ ;
+祩 > shu\ ;
+祢 > dei\ ;
+祠 > shi\ ;
+祟 > sui\ ;
+祛 > kyo\ ;
+祘 > san\ ;
+祗 > shi\ ;
+祐 > yuu\ ;
+祋 > tai\ ;
+祊 > hou\ ;
+祉 > shi\ ;
+祆 > ken\ ;
+祅 > you\ ;
+祄 > kai\ ;
+祀 > shi\ ;
+礽 > jou\ ;
+礻 > shi\ ;
+礵 > sou\ ;
+礱 > rou\ ;
+礬 > ban\ ;
+礪 > rei\ ;
+礧 > rai\ ;
+礦 > kou\ ;
+礥 > kin\ ;
+礟 > hou\ ;
+礞 > bou\ ;
+礚 > kai\ ;
+礑 > tou\ ;
+礌 > rai\ ;
+礇 > iku\ ;
+礆 > ken\ ;
+礀 > kan\ ;
+磽 > kou\ ;
+磻 > han\ ;
+磺 > kou\ ;
+磷 > rin\ ;
+磴 > tou\ ;
+磳 > sou\ ;
+磲 > kyo\ ;
+磬 > kei\ ;
+磪 > sai\ ;
+磡 > kan\ ;
+磛 > san\ ;
+磚 > sen\ ;
+磖 > rou\ ;
+磕 > kai\ ;
+磓 > tai\ ;
+磑 > gai\ ;
+磎 > kei\ ;
+磌 > ten\ ;
+磊 > rai\ ;
+磉 > sou\ ;
+磇 > hei\ ;
+磅 > hou\ ;
+碾 > ten\ ;
+碽 > kou\ ;
+碳 > tan\ ;
+碲 > tei\ ;
+碱 > ken\ ;
+碰 > hou\ ;
+碯 > dou\ ;
+碭 > tou\ ;
+碨 > wai\ ;
+碞 > gan\ ;
+碝 > zen\ ;
+碚 > hai\ ;
+碘 > ten\ ;
+碓 > tai\ ;
+碎 > sai\ ;
+碍 > gai\ ;
+碊 > sen\ ;
+碇 > tei\ ;
+硼 > hou\ ;
+硯 > ken\ ;
+硨 > sha\ ;
+硤 > kou\ ;
+硣 > kou\ ;
+硡 > kou\ ;
+硠 > rou\ ;
+硜 > kou\ ;
+硙 > gai\ ;
+硒 > sei\ ;
+硏 > ken\ ;
+硎 > kei\ ;
+硇 > dou\ ;
+硅 > kei\ ;
+硄 > kou\ ;
+硃 > shu\ ;
+砿 > kou\ ;
+砺 > rei\ ;
+砲 > hou\ ;
+砰 > hou\ ;
+砭 > hen\ ;
+砠 > sho\ ;
+砎 > kai\ ;
+砍 > kan\ ;
+砌 > sei\ ;
+砅 > rei\ ;
+矼 > kou\ ;
+矸 > kan\ ;
+矴 > tei\ ;
+矰 > sou\ ;
+矮 > wai\ ;
+矦 > kou\ ;
+矙 > kan\ ;
+矕 > ban\ ;
+矒 > bou\ ;
+矉 > hin\ ;
+矈 > ben\ ;
+矇 > mou\ ;
+矃 > gei\ ;
+瞵 > rin\ ;
+瞱 > you\ ;
+瞰 > kan\ ;
+瞯 > kan\ ;
+瞪 > dou\ ;
+瞢 > bou\ ;
+瞞 > ban\ ;
+瞑 > mei\ ;
+瞍 > sou\ ;
+瞌 > kou\ ;
+瞀 > bou\ ;
+睾 > kou\ ;
+睽 > kei\ ;
+睺 > kou\ ;
+睴 > kon\ ;
+睳 > kei\ ;
+睲 > sei\ ;
+睬 > sai\ ;
+睪 > eki\ ;
+睧 > kon\ ;
+睥 > hei\ ;
+睤 > hei\ ;
+睠 > ken\ ;
+睟 > sui\ ;
+睞 > rai\ ;
+睜 > sei\ ;
+睛 > sei\ ;
+睚 > gai\ ;
+睒 > sen\ ;
+睏 > kon\ ;
+睍 > ken\ ;
+睇 > tei\ ;
+睆 > kan\ ;
+睅 > kan\ ;
+眸 > bou\ ;
+眷 > ken\ ;
+眵 > shi\ ;
+眴 > ken\ ;
+眯 > bei\ ;
+眮 > tou\ ;
+眨 > sou\ ;
+眦 > sei\ ;
+眥 > sei\ ;
+眤 > tei\ ;
+眢 > wan\ ;
+眛 > mai\ ;
+眚 > sei\ ;
+眙 > chi\ ;
+眔 > tou\ ;
+眎 > shi\ ;
+眊 > bou\ ;
+眈 > tan\ ;
+眆 > hou\ ;
+眄 > ben\ ;
+眀 > bei\ ;
+盼 > han\ ;
+盻 > kei\ ;
+盶 > gin\ ;
+盰 > kan\ ;
+盪 > tou\ ;
+盨 > shu\ ;
+盤 > ban\ ;
+盠 > rei\ ;
+盟 > mei\ ;
+盞 > san\ ;
+盖 > gai\ ;
+盔 > kai\ ;
+盒 > kou\ ;
+盍 > kou\ ;
+盌 > wan\ ;
+皽 > ten\ ;
+皨 > sei\ ;
+皥 > kou\ ;
+皣 > you\ ;
+皠 > sai\ ;
+皝 > kou\ ;
+皜 > kou\ ;
+皚 > gai\ ;
+皖 > kan\ ;
+皓 > kou\ ;
+皐 > kou\ ;
+皎 > kou\ ;
+皋 > kou\ ;
+皅 > hae\ ;
+皃 > bou\ ;
+皁 > sou\ ;
+癴 > ren\ ;
+癲 > ten\ ;
+癱 > tan\ ;
+癰 > you\ ;
+癬 > sen\ ;
+癩 > rai\ ;
+癢 > you\ ;
+癡 > chi\ ;
+癜 > den\ ;
+癙 > sho\ ;
+癘 > rei\ ;
+癕 > you\ ;
+癉 > tan\ ;
+癈 > hai\ ;
+癆 > rou\ ;
+癀 > kou\ ;
+瘻 > rou\ ;
+瘺 > rou\ ;
+瘵 > sai\ ;
+瘰 > rui\ ;
+瘩 > tou\ ;
+瘦 > sou\ ;
+瘣 > kai\ ;
+瘢 > han\ ;
+瘡 > sou\ ;
+瘝 > kan\ ;
+瘛 > sei\ ;
+瘙 > sou\ ;
+瘓 > tan\ ;
+瘒 > gon\ ;
+瘍 > you\ ;
+瘋 > fuu\ ;
+瘊 > kou\ ;
+瘈 > kei\ ;
+瘁 > sui\ ;
+痳 > rin\ ;
+痰 > tan\ ;
+痯 > kan\ ;
+痬 > eki\ ;
+痣 > aza\ ;
+痠 > san\ ;
+痙 > kei\ ;
+痘 > tou\ ;
+痗 > bai\ ;
+痎 > kai\ ;
+痌 > tou\ ;
+痊 > sen\ ;
+痃 > ken\ ;
+痁 > sen\ ;
+疽 > sho\ ;
+疼 > tou\ ;
+疺 > hou\ ;
+疸 > tan\ ;
+疵 > shi\ ;
+疳 > kan\ ;
+疱 > hou\ ;
+疫 > eki\ ;
+疥 > kai\ ;
+疣 > ibo\ ;
+疝 > san\ ;
+疓 > zai\ ;
+疐 > chi\ ;
+疉 > jou\ ;
+疂 > jou\ ;
+疁 > ryu\ ;
+畾 > sui\ ;
+畽 > ton\ ;
+畤 > shi\ ;
+畡 > kai\ ;
+畞 > bou\ ;
+畚 > hon\ ;
+畗 > tou\ ;
+畎 > ken\ ;
+畍 > kai\ ;
+畋 > ten\ ;
+畊 > kou\ ;
+畈 > han\ ;
+甿 > mou\ ;
+甾 > shi\ ;
+甽 > ken\ ;
+甹 > hei\ ;
+甸 > ten\ ;
+甴 > sou\ ;
+甯 > nei\ ;
+甬 > you\ ;
+甤 > zui\ ;
+產 > san\ ;
+甠 > sei\ ;
+甜 > ten\ ;
+甛 > ten\ ;
+甗 > gen\ ;
+甑 > sou\ ;
+甎 > sen\ ;
+甍 > bou\ ;
+甆 > shi\ ;
+甄 > ken\ ;
+甁 > hei\ ;
+瓿 > hou\ ;
+瓻 > chi\ ;
+瓷 > shi\ ;
+瓴 > rii\ ;
+瓲 > ton\ ;
+瓫 > hon\ ;
+瓪 > han\ ;
+瓨 > kou\ ;
+瓣 > ben\ ;
+瓛 > kan\ ;
+瓚 > san\ ;
+瓘 > kan\ ;
+瓓 > ran\ ;
+瓏 > rou\ ;
+瓌 > kai\ ;
+瓊 > kei\ ;
+瓉 > san\ ;
+瓈 > rei\ ;
+璿 > sen\ ;
+璻 > sui\ ;
+璲 > sui\ ;
+璯 > kai\ ;
+璮 > tan\ ;
+璫 > tou\ ;
+璪 > sou\ ;
+璩 > kyo\ ;
+璨 > san\ ;
+璠 > han\ ;
+璜 > kou\ ;
+璚 > kei\ ;
+璘 > rin\ ;
+璒 > tou\ ;
+璏 > tei\ ;
+璉 > rin\ ;
+璇 > sen\ ;
+璅 > sou\ ;
+璁 > sou\ ;
+璀 > sai\ ;
+瑾 > kin\ ;
+瑶 > you\ ;
+瑱 > ten\ ;
+瑰 > kai\ ;
+瑯 > rou\ ;
+瑭 > tou\ ;
+瑫 > tou\ ;
+瑤 > you\ ;
+瑢 > you\ ;
+瑞 > zui\ ;
+瑝 > kou\ ;
+瑙 > dou\ ;
+瑑 > ten\ ;
+瑍 > kan\ ;
+瑇 > tai\ ;
+瑆 > sei\ ;
+瑅 > tei\ ;
+瑄 > sen\ ;
+瑁 > bou\ ;
+琿 > kon\ ;
+琺 > hou\ ;
+琹 > kin\ ;
+琳 > rin\ ;
+琯 > kan\ ;
+琮 > sou\ ;
+琫 > hou\ ;
+琨 > kon\ ;
+琤 > sou\ ;
+琚 > kyo\ ;
+琅 > rou\ ;
+琄 > ken\ ;
+琁 > zen\ ;
+琀 > kan\ ;
+珽 > tei\ ;
+珻 > bai\ ;
+珺 > kun\ ;
+珹 > sei\ ;
+珵 > tei\ ;
+珮 > hai\ ;
+班 > han\ ;
+珩 > kou\ ;
+珧 > you\ ;
+珢 > gin\ ;
+珡 > kin\ ;
+珠 > shu\ ;
+珖 > kou\ ;
+珓 > kou\ ;
+珊 > san\ ;
+珉 > bin\ ;
+玽 > kou\ ;
+玼 > sei\ ;
+玹 > ken\ ;
+玷 > ten\ ;
+玵 > gan\ ;
+玳 > tai\ ;
+玲 > rei\ ;
+玭 > hin\ ;
+玫 > bai\ ;
+玪 > kan\ ;
+玢 > hin\ ;
+玠 > kai\ ;
+玟 > bin\ ;
+玜 > kou\ ;
+玕 > kan\ ;
+玎 > tei\ ;
+玁 > ken\ ;
+獷 > kou\ ;
+獱 > hin\ ;
+獰 > dou\ ;
+獯 > kun\ ;
+獮 > sen\ ;
+獬 > kai\ ;
+獫 > ken\ ;
+獪 > kai\ ;
+獩 > wai\ ;
+獧 > ken\ ;
+獞 > tou\ ;
+獘 > hei\ ;
+獖 > fun\ ;
+獒 > gou\ ;
+獊 > sou\ ;
+獅 > shi\ ;
+獃 > gai\ ;
+猽 > bei\ ;
+猻 > son\ ;
+猺 > you\ ;
+猷 > yuu\ ;
+猵 > hen\ ;
+猴 > kou\ ;
+猱 > dou\ ;
+猯 > tan\ ;
+献 > ken\ ;
+猩 > sei\ ;
+猥 > wai\ ;
+猞 > sha\ ;
+猛 > mou\ ;
+猙 > sou\ ;
+猘 > sei\ ;
+猍 > rai\ ;
+猊 > gei\ ;
+猅 > hai\ ;
+猄 > kei\ ;
+猂 > kan\ ;
+狾 > sei\ ;
+狻 > san\ ;
+狺 > gen\ ;
+狷 > ken\ ;
+狴 > hei\ ;
+狩 > shu\ ;
+狠 > gan\ ;
+狟 > kan\ ;
+狝 > sen\ ;
+狖 > yuu\ ;
+狎 > kou\ ;
+狌 > sei\ ;
+狀 > jou\ ;
+犾 > gin\ ;
+犹 > yuu\ ;
+犴 > kan\ ;
+犲 > sai\ ;
+犛 > bou\ ;
+犒 > kou\ ;
+犎 > hou\ ;
+犍 > ken\ ;
+犉 > jun\ ;
+犇 > hon\ ;
+犀 > sai\ ;
+牽 > ken\ ;
+牼 > kou\ ;
+牻 > bou\ ;
+牸 > shi\ ;
+牷 > sen\ ;
+牴 > tei\ ;
+牮 > sen\ ;
+牬 > hai\ ;
+牨 > kou\ ;
+牣 > jin\ ;
+牟 > bou\ ;
+牝 > hin\ ;
+牚 > tou\ ;
+牖 > yuu\ ;
+牕 > sou\ ;
+牓 > bou\ ;
+牐 > sou\ ;
+牏 > chu\ ;
+牎 > sou\ ;
+牋 > sen\ ;
+牅 > you\ ;
+牂 > sou\ ;
+爼 > sho\ ;
+爻 > kou\ ;
+爨 > san\ ;
+爤 > ran\ ;
+爟 > kan\ ;
+爗 > you\ ;
+爉 > rou\ ;
+爈 > ryo\ ;
+燿 > you\ ;
+燾 > tou\ ;
+燼 > jin\ ;
+燹 > sen\ ;
+燧 > sui\ ;
+燦 > san\ ;
+燥 > sou\ ;
+燠 > oki\ ;
+燜 > mon\ ;
+燙 > tou\ ;
+燗 > ran\ ;
+燔 > han\ ;
+燓 > fun\ ;
+燐 > rin\ ;
+燌 > fun\ ;
+燉 > ton\ ;
+燁 > you\ ;
+燀 > sen\ ;
+熿 > kou\ ;
+熾 > shi\ ;
+熳 > man\ ;
+熲 > kei\ ;
+熯 > zen\ ;
+熬 > gou\ ;
+熢 > hou\ ;
+熠 > yuu\ ;
+熕 > kou\ ;
+熔 > you\ ;
+熒 > kei\ ;
+熏 > kun\ ;
+熌 > sen\ ;
+熀 > you\ ;
+煹 > kou\ ;
+煬 > you\ ;
+煨 > wai\ ;
+煥 > kan\ ;
+煢 > kei\ ;
+煠 > you\ ;
+煜 > iku\ ;
+煚 > kei\ ;
+煗 > dan\ ;
+煖 > dan\ ;
+煑 > sha\ ;
+煌 > kou\ ;
+煋 > sei\ ;
+煊 > ken\ ;
+煉 > ren\ ;
+煅 > tan\ ;
+焭 > kei\ ;
+焠 > sai\ ;
+焞 > ton\ ;
+焜 > kon\ ;
+焙 > hou\ ;
+焕 > kan\ ;
+焋 > sou\ ;
+焄 > kun\ ;
+烽 > hou\ ;
+烺 > kou\ ;
+烹 > hou\ ;
+烱 > kei\ ;
+烤 > kou\ ;
+烝 > jou\ ;
+烜 > ten\ ;
+烘 > kou\ ;
+烖 > sai\ ;
+烔 > tou\ ;
+烑 > you\ ;
+烋 > kou\ ;
+烊 > you\ ;
+烉 > kan\ ;
+炷 > shu\ ;
+炴 > you\ ;
+炳 > hei\ ;
+炱 > tai\ ;
+炰 > hou\ ;
+炯 > kei\ ;
+炮 > hou\ ;
+炫 > ken\ ;
+炛 > you\ ;
+炙 > sha\ ;
+炘 > kin\ ;
+炗 > kou\ ;
+炖 > ton\ ;
+炕 > kou\ ;
+炔 > kei\ ;
+炒 > sou\ ;
+炆 > bun\ ;
+炅 > kei\ ;
+灾 > sai\ ;
+灶 > sou\ ;
+灵 > rei\ ;
+灮 > kou\ ;
+灤 > ran\ ;
+灣 > wan\ ;
+灝 > kou\ ;
+灘 > dan\ ;
+灑 > sai\ ;
+灋 > hou\ ;
+灊 > sen\ ;
+灉 > you\ ;
+灃 > huu\ ;
+瀾 > ran\ ;
+瀼 > jou\ ;
+瀲 > ren\ ;
+瀨 > rai\ ;
+瀦 > cho\ ;
+瀣 > kai\ ;
+瀞 > jou\ ;
+瀚 > kan\ ;
+瀗 > ken\ ;
+瀍 > ten\ ;
+瀉 > sha\ ;
+瀁 > you\ ;
+瀀 > yuu\ ;
+濾 > ryo\ ;
+濽 > san\ ;
+濵 > hin\ ;
+濳 > sen\ ;
+濫 > ran\ ;
+濨 > shi\ ;
+濤 > tou\ ;
+濠 > gou\ ;
+濔 > dei\ ;
+濊 > kai\ ;
+濆 > fun\ ;
+濂 > ren\ ;
+澶 > sen\ ;
+澳 > iku\ ;
+澱 > ten\ ;
+澰 > ren\ ;
+澯 > san\ ;
+澮 > kai\ ;
+澪 > rei\ ;
+澨 > sei\ ;
+澧 > rei\ ;
+澥 > kai\ ;
+澣 > kan\ ;
+澡 > sou\ ;
+澟 > rin\ ;
+澚 > iku\ ;
+澗 > kan\ ;
+澖 > kan\ ;
+澔 > kou\ ;
+澒 > kou\ ;
+澎 > hou\ ;
+澍 > shu\ ;
+澌 > shi\ ;
+澋 > kou\ ;
+澇 > rou\ ;
+澃 > gei\ ;
+澁 > juu\ ;
+澀 > juu\ ;
+潾 > rin\ ;
+潼 > dou\ ;
+潺 > san\ ;
+潸 > san\ ;
+潴 > cho\ ;
+潯 > jin\ ;
+潭 > tan\ ;
+潬 > tan\ ;
+潨 > sou\ ;
+潦 > rou\ ;
+潤 > jun\ ;
+潢 > kou\ ;
+潡 > ton\ ;
+潛 > sen\ ;
+潘 > han\ ;
+潓 > kei\ ;
+潒 > tou\ ;
+潅 > kan\ ;
+潀 > sou\ ;
+漾 > you\ ;
+漼 > sai\ ;
+漶 > kan\ ;
+漱 > sou\ ;
+漰 > hou\ ;
+漯 > tou\ ;
+漭 > bou\ ;
+漫 > man\ ;
+漩 > sen\ ;
+漛 > tou\ ;
+漖 > kou\ ;
+漑 > gai\ ;
+漌 > kin\ ;
+漈 > sei\ ;
+漄 > gai\ ;
+滾 > kon\ ;
+滽 > you\ ;
+滻 > san\ ;
+满 > man\ ;
+滞 > tai\ ;
+滚 > kon\ ;
+滕 > tou\ ;
+滔 > tou\ ;
+滎 > kei\ ;
+滍 > chi\ ;
+滉 > kou\ ;
+滈 > kou\ ;
+滇 > ten\ ;
+滄 > sou\ ;
+滂 > bou\ ;
+滁 > cho\ ;
+溿 > han\ ;
+溻 > tou\ ;
+溷 > kon\ ;
+溲 > sou\ ;
+溮 > shi\ ;
+溟 > mei\ ;
+溙 > tai\ ;
+溘 > kou\ ;
+溓 > ren\ ;
+溏 > tou\ ;
+溉 > gai\ ;
+湽 > shi\ ;
+湻 > jun\ ;
+湶 > sen\ ;
+湳 > dan\ ;
+湲 > kan\ ;
+湣 > bin\ ;
+湟 > kou\ ;
+湞 > tou\ ;
+湝 > kai\ ;
+湛 > tan\ ;
+湗 > hou\ ;
+湔 > sen\ ;
+湓 > hon\ ;
+湑 > sho\ ;
+湏 > kai\ ;
+湎 > ben\ ;
+湍 > tan\ ;
+湊 > sou\ ;
+湉 > ten\ ;
+湈 > bai\ ;
+湅 > ren\ ;
+湃 > hai\ ;
+渾 > kon\ ;
+渻 > sei\ ;
+渹 > kou\ ;
+游 > yuu\ ;
+渲 > sen\ ;
+渧 > tei\ ;
+渥 > aku\ ;
+渢 > huu\ ;
+渟 > tei\ ;
+渙 > kan\ ;
+渓 > kei\ ;
+渀 > hon\ ;
+淸 > sei\ ;
+淶 > rai\ ;
+淰 > den\ ;
+淯 > iku\ ;
+淮 > wai\ ;
+淬 > sai\ ;
+淪 > rin\ ;
+淨 > jou\ ;
+淦 > kan\ ;
+淟 > ten\ ;
+淛 > sei\ ;
+淚 > rui\ ;
+淙 > sou\ ;
+淘 > tou\ ;
+淖 > dou\ ;
+淒 > sei\ ;
+淏 > kou\ ;
+淎 > hou\ ;
+淊 > kan\ ;
+淆 > kou\ ;
+淄 > shi\ ;
+淀 > ten\ ;
+涽 > kon\ ;
+涷 > tou\ ;
+涵 > kan\ ;
+涬 > kei\ ;
+涪 > huu\ ;
+涣 > kan\ ;
+涛 > tou\ ;
+涚 > sei\ ;
+涘 > shi\ ;
+涗 > sei\ ;
+涖 > rei\ ;
+涕 > tei\ ;
+涔 > san\ ;
+涓 > ken\ ;
+涒 > ton\ ;
+涑 > sou\ ;
+涇 > tei\ ;
+浼 > bai\ ;
+浰 > ren\ ;
+浩 > kou\ ;
+浧 > tei\ ;
+浦 > ura\ ;
+浥 > yuu\ ;
+浤 > kou\ ;
+浣 > kan\ ;
+浟 > yuu\ ;
+洽 > kou\ ;
+洸 > kou\ ;
+洮 > tou\ ;
+洪 > kou\ ;
+洨 > kou\ ;
+洚 > kou\ ;
+洙 > shu\ ;
+洊 > sen\ ;
+洄 > kai\ ;
+泴 > kan\ ;
+泲 > sei\ ;
+泰 > tai\ ;
+泯 > bin\ ;
+泮 > han\ ;
+泫 > ken\ ;
+泪 > rui\ ;
+泩 > sou\ ;
+泠 > rei\ ;
+泜 > tei\ ;
+泛 > han\ ;
+泚 > sei\ ;
+泙 > hou\ ;
+泗 > shi\ ;
+泖 > bou\ ;
+泔 > kan\ ;
+泑 > yuu\ ;
+泍 > hon\ ;
+泂 > kei\ ;
+沾 > ten\ ;
+沺 > ten\ ;
+沵 > dei\ ;
+沴 > rei\ ;
+沮 > sho\ ;
+沟 > kou\ ;
+沜 > han\ ;
+沛 > hai\ ;
+沚 > shi\ ;
+沗 > ten\ ;
+沔 > ben\ ;
+沓 > tou\ ;
+沆 > kou\ ;
+沅 > gen\ ;
+汾 > fun\ ;
+汸 > hou\ ;
+汶 > bun\ ;
+汴 > hen\ ;
+汳 > hen\ ;
+汯 > kou\ ;
+汭 > zei\ ;
+汫 > kei\ ;
+汧 > ken\ ;
+汞 > kou\ ;
+汜 > shi\ ;
+汕 > san\ ;
+汒 > bou\ ;
+汏 > tai\ ;
+汎 > han\ ;
+汍 > kan\ ;
+氾 > han\ ;
+氽 > ton\ ;
+氺 > sui\ ;
+氹 > kan\ ;
+氮 > tan\ ;
+氧 > you\ ;
+氦 > gai\ ;
+氛 > fun\ ;
+氙 > sen\ ;
+氓 > bou\ ;
+氐 > tei\ ;
+氉 > sou\ ;
+氄 > juu\ ;
+毿 > san\ ;
+毷 > bou\ ;
+毳 > zei\ ;
+毯 > tan\ ;
+毧 > juu\ ;
+毡 > sen\ ;
+毚 > san\ ;
+毓 > iku\ ;
+每 > mai\ ;
+毌 > kan\ ;
+殽 > kou\ ;
+殸 > kei\ ;
+殳 > shu\ ;
+殲 > sen\ ;
+殱 > sen\ ;
+殯 > hin\ ;
+殮 > ren\ ;
+殫 > tan\ ;
+殩 > san\ ;
+殨 > kai\ ;
+殣 > kin\ ;
+殢 > tei\ ;
+殗 > you\ ;
+殕 > fuu\ ;
+殉 > jun\ ;
+殅 > sou\ ;
+殄 > ten\ ;
+殃 > you\ ;
+殀 > you\ ;
+歲 > sei\ ;
+歮 > juu\ ;
+歫 > kyo\ ;
+歝 > eki\ ;
+歛 > kan\ ;
+歓 > kan\ ;
+歉 > ken\ ;
+歆 > kin\ ;
+歃 > sou\ ;
+欿 > tan\ ;
+款 > kan\ ;
+欽 > kin\ ;
+欵 > kan\ ;
+欬 > kai\ ;
+欣 > gon\ ;
+欞 > rei\ ;
+欗 > ran\ ;
+欖 > ran\ ;
+欒 > ran\ ;
+欑 > san\ ;
+欐 > rei\ ;
+欉 > sou\ ;
+欆 > sou\ ;
+欄 > ran\ ;
+欃 > san\ ;
+櫼 > sen\ ;
+櫺 > rei\ ;
+櫰 > kai\ ;
+櫧 > sho\ ;
+櫥 > chu\ ;
+櫤 > sen\ ;
+櫜 > kou\ ;
+櫚 > ryo\ ;
+櫖 > ryo\ ;
+櫕 > san\ ;
+櫔 > rei\ ;
+櫑 > rai\ ;
+櫐 > rui\ ;
+櫌 > yuu\ ;
+櫉 > chu\ ;
+櫈 > tou\ ;
+櫆 > kai\ ;
+櫂 > kai\ ;
+檾 > kei\ ;
+檻 > ori\ ;
+檸 > nei\ ;
+檳 > bin\ ;
+檰 > hen\ ;
+檯 > tai\ ;
+檮 > tou\ ;
+檬 > bou\ ;
+檩 > rin\ ;
+檠 > kei\ ;
+檞 > kai\ ;
+檑 > rai\ ;
+檉 > tei\ ;
+檇 > sui\ ;
+檆 > san\ ;
+檁 > rin\ ;
+橾 > shu\ ;
+橪 > zen\ ;
+橧 > sou\ ;
+橦 > tou\ ;
+橤 > zui\ ;
+橖 > tou\ ;
+橕 > tou\ ;
+橑 > rou\ ;
+橎 > han\ ;
+橉 > rin\ ;
+橈 > kai\ ;
+橇 > zei\ ;
+橄 > kan\ ;
+樿 > sen\ ;
+樷 > sou\ ;
+樶 > sai\ ;
+樨 > sei\ ;
+樤 > jou\ ;
+樠 > bon\ ;
+樞 > suu\ ;
+樗 > cho\ ;
+樔 > sou\ ;
+樏 > rui\ ;
+樌 > kan\ ;
+樋 > toi\ ;
+樊 > han\ ;
+樃 > rou\ ;
+樁 > tou\ ;
+槿 > kin\ ;
+槾 > ban\ ;
+槹 > kou\ ;
+槵 > kan\ ;
+槱 > yuu\ ;
+槯 > sai\ ;
+槫 > tan\ ;
+槪 > gai\ ;
+槧 > san\ ;
+槞 > rou\ ;
+槝 > tou\ ;
+槙 > ten\ ;
+槓 > kou\ ;
+槑 > bai\ ;
+槐 > kai\ ;
+槈 > dou\ ;
+槃 > han\ ;
+槁 > kou\ ;
+榼 > kou\ ;
+榸 > tai\ ;
+榱 > sui\ ;
+榯 > shi\ ;
+榭 > sha\ ;
+榦 > kan\ ;
+榥 > kou\ ;
+榠 > bei\ ;
+榜 > bou\ ;
+榕 > you\ ;
+榔 > rou\ ;
+楻 > kou\ ;
+楺 > juu\ ;
+楷 > kai\ ;
+楴 > tei\ ;
+楳 > bai\ ;
+楱 > sou\ ;
+楯 > jun\ ;
+楮 > cho\ ;
+楪 > you\ ;
+楩 > hen\ ;
+楨 > tei\ ;
+楦 > ken\ ;
+楥 > ken\ ;
+楤 > sou\ ;
+楞 > rou\ ;
+楝 > ren\ ;
+楙 > bou\ ;
+楗 > ken\ ;
+楎 > kon\ ;
+椽 > ten\ ;
+椶 > shu\ ;
+椳 > wai\ ;
+椱 > fuu\ ;
+椦 > ken\ ;
+椢 > kai\ ;
+椗 > tei\ ;
+椖 > hou\ ;
+椑 > hei\ ;
+椐 > kyo\ ;
+椌 > kou\ ;
+椉 > jou\ ;
+棼 > hun\ ;
+棹 > sao\ ;
+棶 > rai\ ;
+棵 > kan\ ;
+棱 > rou\ ;
+棰 > soi\ ;
+棯 > jin\ ;
+棭 > eki\ ;
+棬 > ken\ ;
+棨 > kei\ ;
+棧 > san\ ;
+棥 > han\ ;
+棣 > tei\ ;
+棡 > kou\ ;
+棠 > tou\ ;
+棙 > rei\ ;
+棖 > tou\ ;
+棕 > shu\ ;
+棔 > kon\ ;
+棓 > hou\ ;
+棑 > hai\ ;
+棍 > kon\ ;
+棌 > sai\ ;
+棉 > men\ ;
+棈 > sen\ ;
+棆 > rin\ ;
+棅 > hei\ ;
+梼 > tou\ ;
+梹 > bin\ ;
+梵 > fuu\ ;
+梱 > kon\ ;
+梪 > tou\ ;
+梡 > kan\ ;
+梠 > ryo\ ;
+梚 > ban\ ;
+梘 > ken\ ;
+梗 > kou\ ;
+梖 > hai\ ;
+梔 > shi\ ;
+梍 > sou\ ;
+梈 > hou\ ;
+梆 > hou\ ;
+梄 > you\ ;
+桿 > kan\ ;
+桾 > kun\ ;
+桻 > hou\ ;
+桹 > rou\ ;
+桵 > zui\ ;
+桱 > kei\ ;
+桯 > tei\ ;
+桮 > hai\ ;
+档 > tou\ ;
+桓 > kan\ ;
+桒 > sou\ ;
+桊 > ken\ ;
+桅 > gai\ ;
+桄 > kou\ ;
+栽 > sai\ ;
+栴 > sen\ ;
+栳 > rou\ ;
+栲 > gou\ ;
+栯 > iku\ ;
+栬 > sei\ ;
+栫 > son\ ;
+栟 > hei\ ;
+栝 > ten\ ;
+栙 > kou\ ;
+栖 > sei\ ;
+栔 > kei\ ;
+栈 > san\ ;
+柹 > shi\ ;
+柶 > shi\ ;
+柬 > kan\ ;
+柦 > tan\ ;
+柢 > tei\ ;
+柜 > kyo\ ;
+柙 > kou\ ;
+柘 > sha\ ;
+柑 > kan\ ;
+柉 > han\ ;
+柈 > han\ ;
+柆 > rou\ ;
+柃 > rei\ ;
+枾 > shi\ ;
+枽 > sou\ ;
+枼 > you\ ;
+枹 > hou\ ;
+枴 > kai\ ;
+枲 > shi\ ;
+枰 > hei\ ;
+枢 > suu\ ;
+枛 > sou\ ;
+枘 > zei\ ;
+枖 > you\ ;
+枓 > shu\ ;
+枏 > dan\ ;
+枌 > fun\ ;
+枋 > hou\ ;
+枅 > kei\ ;
+构 > kou\ ;
+杼 > cho\ ;
+杴 > ken\ ;
+杳 > you\ ;
+杲 > kou\ ;
+杮 > hai\ ;
+杭 > kui\ ;
+杬 > gen\ ;
+杧 > man\ ;
+杠 > kou\ ;
+杝 > chi\ ;
+杕 > tei\ ;
+杆 > kan\ ;
+朿 > shi\ ;
+朾 > tou\ ;
+朷 > tou\ ;
+朩 > tou\ ;
+朢 > bou\ ;
+朜 > ton\ ;
+朙 > mei\ ;
+朘 > sen\ ;
+朖 > rou\ ;
+朎 > rei\ ;
+朌 > han\ ;
+曺 > sou\ ;
+曹 > sou\ ;
+曮 > gan\ ;
+曬 > sai\ ;
+曫 > ran\ ;
+曩 > dou\ ;
+曨 > rou\ ;
+曡 > jou\ ;
+曠 > kou\ ;
+曛 > kun\ ;
+曚 > bou\ ;
+曔 > kei\ ;
+曎 > eki\ ;
+曈 > tou\ ;
+曅 > you\ ;
+曄 > you\ ;
+曃 > tai\ ;
+曂 > kou\ ;
+暾 > ton\ ;
+暻 > kei\ ;
+暹 > sen\ ;
+暵 > kan\ ;
+暭 > kou\ ;
+暤 > kou\ ;
+暠 > kou\ ;
+暟 > kai\ ;
+暝 > mei\ ;
+暚 > you\ ;
+暘 > you\ ;
+暒 > sei\ ;
+暌 > kei\ ;
+暋 > bin\ ;
+暄 > ken\ ;
+晹 > eki\ ;
+晸 > tei\ ;
+晵 > kei\ ;
+晬 > sai\ ;
+晪 > ten\ ;
+晧 > kou\ ;
+晦 > kai\ ;
+晠 > sei\ ;
+晟 > sei\ ;
+晜 > kon\ ;
+晛 > ken\ ;
+晚 > ban\ ;
+晘 > kan\ ;
+晗 > kan\ ;
+晎 > kou\ ;
+晆 > kai\ ;
+晅 > ken\ ;
+晄 > kou\ ;
+晃 > kou\ ;
+昿 > kou\ ;
+昻 > kou\ ;
+昱 > iku\ ;
+昰 > shi\ ;
+昬 > kon\ ;
+昪 > hen\ ;
+昧 > mai\ ;
+昦 > kou\ ;
+昤 > rei\ ;
+昡 > ken\ ;
+昞 > hei\ ;
+昝 > san\ ;
+昜 > you\ ;
+昕 > kin\ ;
+昑 > kin\ ;
+昏 > kon\ ;
+昍 > ken\ ;
+昊 > kou\ ;
+昉 > hou\ ;
+昄 > han\ ;
+旻 > bin\ ;
+旵 > tan\ ;
+旲 > tai\ ;
+旱 > kan\ ;
+旰 > kan\ ;
+旛 > han\ ;
+旙 > han\ ;
+旘 > shi\ ;
+旔 > ken\ ;
+旌 > sei\ ;
+旆 > hai\ ;
+旄 > bou\ ;
+旃 > sen\ ;
+斿 > you\ ;
+施 > shi\ ;
+斴 > rin\ ;
+斳 > kin\ ;
+斧 > ono\ ;
+斦 > gin\ ;
+斤 > kin\ ;
+斕 > ran\ ;
+斒 > han\ ;
+斌 > hin\ ;
+斊 > sei\ ;
+斆 > kou\ ;
+斅 > kou\ ;
+斂 > ren\ ;
+斁 > eki\ ;
+敻 > kei\ ;
+敲 > kou\ ;
+敯 > bin\ ;
+敭 > you\ ;
+敩 > kou\ ;
+敦 > ton\ ;
+敟 > ten\ ;
+敝 > hei\ ;
+敖 > gou\ ;
+敔 > gyo\ ;
+敃 > bin\ ;
+攽 > han\ ;
+攼 > kan\ ;
+攻 > kou\ ;
+攸 > yuu\ ;
+攷 > kou\ ;
+攮 > dou\ ;
+攬 > ran\ ;
+攩 > tou\ ;
+攦 > rei\ ;
+攤 > tan\ ;
+攣 > ren\ ;
+攢 > san\ ;
+攟 > kun\ ;
+攜 > kei\ ;
+攛 > san\ ;
+攙 > sen\ ;
+攘 > jou\ ;
+攔 > ran\ ;
+攓 > ken\ ;
+攏 > rou\ ;
+攈 > kun\ ;
+攅 > san\ ;
+攄 > cho\ ;
+攁 > you\ ;
+攀 > han\ ;
+擾 > jou\ ;
+擻 > sou\ ;
+擺 > hai\ ;
+擶 > sen\ ;
+擰 > dou\ ;
+擯 > hin\ ;
+擭 > kyo\ ;
+擪 > you\ ;
+擥 > ran\ ;
+擤 > kou\ ;
+擣 > tou\ ;
+擠 > sei\ ;
+據 > kyo\ ;
+擕 > kei\ ;
+擒 > kin\ ;
+擐 > kan\ ;
+擎 > kei\ ;
+擋 > tou\ ;
+擄 > ryo\ ;
+擂 > rai\ ;
+擁 > you\ ;
+撿 > ren\ ;
+撽 > kou\ ;
+撼 > kan\ ;
+撳 > kin\ ;
+撰 > san\ ;
+撦 > sha\ ;
+撣 > tan\ ;
+撡 > sou\ ;
+撞 > shu\ ;
+撛 > rin\ ;
+撚 > nen\ ;
+撙 > son\ ;
+撘 > tou\ ;
+撕 > sei\ ;
+撓 > dou\ ;
+撒 > san\ ;
+撏 > san\ ;
+撈 > rou\ ;
+摻 > san\ ;
+摶 > tan\ ;
+摴 > cho\ ;
+摳 > kou\ ;
+摯 > shi\ ;
+摧 > sai\ ;
+摡 > kai\ ;
+摠 > sou\ ;
+摟 > rou\ ;
+摜 > kan\ ;
+摛 > chi\ ;
+摚 > tou\ ;
+摓 > hou\ ;
+摒 > hei\ ;
+摇 > you\ ;
+搴 > ken\ ;
+搯 > tou\ ;
+搭 > tou\ ;
+搬 > han\ ;
+搪 > tou\ ;
+搨 > tou\ ;
+搥 > tai\ ;
+搤 > aku\ ;
+搞 > kou\ ;
+搘 > shi\ ;
+搗 > tou\ ;
+搔 > sou\ ;
+搒 > hou\ ;
+搆 > kou\ ;
+揹 > hai\ ;
+揷 > sou\ ;
+揵 > ken\ ;
+揭 > kei\ ;
+揩 > kai\ ;
+揥 > tei\ ;
+揣 > shi\ ;
+揖 > yuu\ ;
+揔 > sou\ ;
+揓 > shi\ ;
+插 > sou\ ;
+揎 > sen\ ;
+揈 > kou\ ;
+揅 > ken\ ;
+揁 > tei\ ;
+揀 > kan\ ;
+掽 > hou\ ;
+掯 > kou\ ;
+掮 > ken\ ;
+掭 > ten\ ;
+掫 > sou\ ;
+掙 > sou\ ;
+掖 > eki\ ;
+掔 > kan\ ;
+掐 > kou\ ;
+掏 > tou\ ;
+掊 > hou\ ;
+掉 > tou\ ;
+掄 > ron\ ;
+掂 > ten\ ;
+掀 > kin\ ;
+捿 > sei\ ;
+捶 > sui\ ;
+捵 > ten\ ;
+捴 > fun\ ;
+捱 > gai\ ;
+捭 > hai\ ;
+捫 > mon\ ;
+捧 > hou\ ;
+捦 > kin\ ;
+捥 > wan\ ;
+换 > kan\ ;
+捛 > ryo\ ;
+捘 > son\ ;
+捎 > sou\ ;
+捍 > kan\ ;
+捊 > hou\ ;
+捆 > kon\ ;
+捃 > kun\ ;
+挺 > tei\ ;
+挹 > yuu\ ;
+挵 > rou\ ;
+挭 > kou\ ;
+挍 > kou\ ;
+挊 > rou\ ;
+挄 > kou\ ;
+挂 > kei\ ;
+拼 > hou\ ;
+拷 > gou\ ;
+拴 > sen\ ;
+拯 > jou\ ;
+拪 > sen\ ;
+拚 > hen\ ;
+拒 > kyo\ ;
+拑 > kan\ ;
+拐 > kai\ ;
+拎 > rei\ ;
+拌 > han\ ;
+拋 > hou\ ;
+拈 > den\ ;
+拄 > chu\ ;
+抿 > bin\ ;
+抾 > kyo\ ;
+抺 > bai\ ;
+抬 > tai\ ;
+抨 > hou\ ;
+抦 > hei\ ;
+抖 > tou\ ;
+抔 > hou\ ;
+抏 > gan\ ;
+抃 > ben\ ;
+扽 > ton\ ;
+扼 > aku\ ;
+扺 > tei\ ;
+扳 > han\ ;
+扭 > juu\ ;
+扣 > kou\ ;
+扞 > kan\ ;
+扛 > kou\ ;
+扔 > jou\ ;
+扒 > hai\ ;
+扌 > shu\ ;
+扃 > kei\ ;
+扂 > ten\ ;
+扁 > hen\ ;
+戾 > rei\ ;
+戼 > bou\ ;
+戹 > aku\ ;
+戩 > sen\ ;
+戧 > sou\ ;
+戡 > kan\ ;
+戔 > san\ ;
+戎 > juu\ ;
+戇 > tou\ ;
+戃 > tou\ ;
+戁 > dan\ ;
+懽 > kan\ ;
+懺 > zan\ ;
+懶 > ran\ ;
+懴 > zan\ ;
+懭 > kou\ ;
+懬 > kou\ ;
+懩 > you\ ;
+懣 > mon\ ;
+懢 > ran\ ;
+懞 > bou\ ;
+懝 > gai\ ;
+懜 > bou\ ;
+懔 > rin\ ;
+懍 > rin\ ;
+懌 > eki\ ;
+懋 > bou\ ;
+懈 > kai\ ;
+懇 > kon\ ;
+懆 > sou\ ;
+懂 > tou\ ;
+懁 > ken\ ;
+懀 > wai\ ;
+憾 > kan\ ;
+憼 > kei\ ;
+憹 > dou\ ;
+憸 > sen\ ;
+憲 > ken\ ;
+憫 > bin\ ;
+憪 > kan\ ;
+憨 > kan\ ;
+憥 > rou\ ;
+憝 > tai\ ;
+憚 > tan\ ;
+憗 > gin\ ;
+憓 > kei\ ;
+憒 > kai\ ;
+憊 > hai\ ;
+憇 > kei\ ;
+憄 > chi\ ;
+憃 > tou\ ;
+憁 > sou\ ;
+慻 > ken\ ;
+慸 > tei\ ;
+慷 > kou\ ;
+慶 > kei\ ;
+慵 > you\ ;
+慳 > kan\ ;
+慲 > ban\ ;
+慱 > tan\ ;
+慭 > gin\ ;
+慬 > kin\ ;
+慧 > kei\ ;
+慠 > gou\ ;
+慟 > dou\ ;
+慚 > zan\ ;
+慙 > zan\ ;
+慉 > kin\ ;
+慆 > tou\ ;
+慅 > sou\ ;
+慂 > you\ ;
+慁 > kon\ ;
+愿 > gen\ ;
+愹 > you\ ;
+愷 > kai\ ;
+愴 > sou\ ;
+愰 > kau\ ;
+愢 > sai\ ;
+愡 > sou\ ;
+愞 > zen\ ;
+愗 > bou\ ;
+愓 > tou\ ;
+愒 > kei\ ;
+愑 > you\ ;
+愐 > ben\ ;
+愍 > bin\ ;
+愌 > kan\ ;
+愆 > ken\ ;
+愃 > ken\ ;
+惽 > kon\ ;
+惼 > hen\ ;
+惺 > sei\ ;
+惸 > kei\ ;
+惶 > kou\ ;
+惴 > zui\ ;
+惥 > you\ ;
+惣 > sou\ ;
+惞 > kin\ ;
+惛 > kon\ ;
+惘 > bou\ ;
+惔 > tan\ ;
+惓 > ken\ ;
+惏 > ran\ ;
+惋 > wan\ ;
+惉 > sen\ ;
+惇 > ton\ ;
+惂 > kan\ ;
+悾 > kou\ ;
+悽 > sei\ ;
+悻 > kei\ ;
+悷 > rei\ ;
+悰 > sou\ ;
+悩 > nou\ ;
+悤 > sou\ ;
+悝 > kai\ ;
+悛 > sen\ ;
+悗 > ban\ ;
+悓 > ken\ ;
+悒 > yuu\ ;
+悎 > kou\ ;
+悍 > kan\ ;
+悌 > tei\ ;
+悋 > rin\ ;
+悈 > kai\ ;
+悃 > kon\ ;
+恿 > you\ ;
+恾 > bou\ ;
+恵 > kei\ ;
+恬 > ten\ ;
+恫 > dou\ ;
+恣 > shi\ ;
+恢 > kai\ ;
+恡 > rin\ ;
+恠 > kai\ ;
+恝 > kai\ ;
+恙 > you\ ;
+恖 > shi\ ;
+恒 > kou\ ;
+恉 > shi\ ;
+恈 > bou\ ;
+恆 > kou\ ;
+恂 > jun\ ;
+恀 > shi\ ;
+怱 > sou\ ;
+怦 > hou\ ;
+怟 > tei\ ;
+怜 > rei\ ;
+怚 > sho\ ;
+怔 > sei\ ;
+怓 > dou\ ;
+怐 > kou\ ;
+怏 > you\ ;
+怇 > kyo\ ;
+忼 > kou\ ;
+忻 > kin\ ;
+忺 > ken\ ;
+忶 > kon\ ;
+忳 > ton\ ;
+忲 > tai\ ;
+忰 > sui\ ;
+忮 > shi\ ;
+忭 > hen\ ;
+忩 > sou\ ;
+忨 > gan\ ;
+忞 > bin\ ;
+忝 > ten\ ;
+忖 > son\ ;
+忓 > kan\ ;
+忐 > kun\ ;
+忋 > kai\ ;
+忉 > tou\ ;
+忈 > jin\ ;
+徰 > sei\ ;
+徯 > kei\ ;
+徭 > you\ ;
+徬 > hou\ ;
+徨 > kou\ ;
+徧 > hen\ ;
+徠 > rai\ ;
+徝 > chi\ ;
+徙 > shi\ ;
+徘 > hai\ ;
+徖 > sou\ ;
+徑 > kei\ ;
+徉 > you\ ;
+很 > kon\ ;
+徆 > sei\ ;
+征 > sei\ ;
+彾 > rei\ ;
+彽 > chi\ ;
+彷 > hou\ ;
+彲 > chi\ ;
+彯 > heu\ ;
+彭 > hou\ ;
+彬 > hin\ ;
+彧 > iku\ ;
+彦 > gen\ ;
+彥 > gen\ ;
+彤 > tou\ ;
+彣 > bun\ ;
+彡 > san\ ;
+彘 > tei\ ;
+彗 > sui\ ;
+彖 > tan\ ;
+彑 > kei\ ;
+彐 > kei\ ;
+彎 > wan\ ;
+彋 > kau\ ;
+彇 > you\ ;
+彄 > kou\ ;
+彁 > sei\ ;
+彀 > kou\ ;
+弿 > ken\ ;
+弽 > you\ ;
+弹 > dan\ ;
+弸 > hou\ ;
+弴 > ton\ ;
+弰 > sou\ ;
+弯 > wan\ ;
+弮 > ken\ ;
+弨 > seu\ ;
+弤 > tei\ ;
+弢 > tou\ ;
+弚 > tai\ ;
+弒 > shi\ ;
+弑 > shi\ ;
+弎 > san\ ;
+弊 > hei\ ;
+弉 > jou\ ;
+弈 > eki\ ;
+弆 > kyo\ ;
+弅 > hun\ ;
+廿 > juu\ ;
+廽 > kai\ ;
+廼 > dai\ ;
+廷 > tei\ ;
+廵 > jun\ ;
+廲 > rei\ ;
+廱 > you\ ;
+廯 > sen\ ;
+廬 > ryo\ ;
+廪 > rin\ ;
+廩 > rin\ ;
+廨 > kai\ ;
+廥 > kai\ ;
+廞 > kin\ ;
+廝 > shi\ ;
+廛 > ten\ ;
+廗 > tai\ ;
+廔 > rou\ ;
+廒 > gou\ ;
+廑 > kin\ ;
+廎 > kei\ ;
+廌 > chi\ ;
+廇 > riu\ ;
+廆 > kai\ ;
+廅 > ahu\ ;
+廁 > shi\ ;
+廀 > sou\ ;
+庽 > dou\ ;
+庻 > sho\ ;
+庶 > sho\ ;
+庲 > rai\ ;
+庰 > hei\ ;
+庬 > bou\ ;
+庨 > kou\ ;
+庤 > chi\ ;
+庣 > teu\ ;
+庛 > shi\ ;
+庎 > kai\ ;
+庍 > hai\ ;
+庉 > ton\ ;
+庈 > kin\ ;
+广 > gen\ ;
+幺 > you\ ;
+幷 > hei\ ;
+并 > hei\ ;
+幵 > ken\ ;
+幱 > ran\ ;
+幰 > ken\ ;
+幮 > chu\ ;
+幫 > hou\ ;
+幪 > bou\ ;
+幩 > hun\ ;
+幨 > sen\ ;
+幧 > seu\ ;
+幤 > hei\ ;
+幣 > hei\ ;
+幢 > tou\ ;
+幡 > han\ ;
+幝 > sen\ ;
+幜 > kei\ ;
+幚 > hou\ ;
+幔 > ban\ ;
+幐 > tou\ ;
+幍 > tou\ ;
+幌 > kou\ ;
+幋 > han\ ;
+幊 > kou\ ;
+幈 > hei\ ;
+幇 > hou\ ;
+幄 > aku\ ;
+幀 > tei\ ;
+帵 > wan\ ;
+帲 > hei\ ;
+帮 > hou\ ;
+帬 > kun\ ;
+帩 > seu\ ;
+帨 > sei\ ;
+带 > tai\ ;
+帣 > ken\ ;
+帡 > hei\ ;
+帠 > gei\ ;
+帟 > eki\ ;
+帘 > ren\ ;
+帖 > jou\ ;
+帒 > tai\ ;
+帎 > tan\ ;
+帋 > shi\ ;
+帇 > den\ ;
+帄 > tei\ ;
+帀 > sou\ ;
+巺 > son\ ;
+巹 > kin\ ;
+巵 > shi\ ;
+巠 > kei\ ;
+巟 > kou\ ;
+巜 > kai\ ;
+巛 > sen\ ;
+巘 > gen\ ;
+巖 > gan\ ;
+巔 > ten\ ;
+巓 > ten\ ;
+巒 > ran\ ;
+巑 > san\ ;
+巏 > ken\ ;
+巎 > dou\ ;
+巌 > gan\ ;
+巉 > san\ ;
+巆 > kou\ ;
+巃 > rou\ ;
+巂 > sui\ ;
+嶼 > sho\ ;
+嶺 > rei\ ;
+嶹 > tou\ ;
+嶸 > kou\ ;
+嶵 > sai\ ;
+嶲 > kei\ ;
+嶰 > kai\ ;
+嶩 > dau\ ;
+嶧 > eki\ ;
+嶡 > kei\ ;
+嶟 > son\ ;
+嶝 > tou\ ;
+嶙 > rin\ ;
+嶕 > seu\ ;
+嶔 > kin\ ;
+嶌 > tou\ ;
+嶋 > tou\ ;
+嶊 > sui\ ;
+嶉 > sui\ ;
+嶆 > sau\ ;
+嶄 > san\ ;
+嶃 > san\ ;
+嵿 > tei\ ;
+嵼 > san\ ;
+嵺 > reu\ ;
+嵶 > tao\ ;
+嵱 > you\ ;
+嵰 > ken\ ;
+嵭 > hou\ ;
+嵬 > kai\ ;
+嵪 > kou\ ;
+嵩 > suu\ ;
+嵧 > riu\ ;
+嵤 > kei\ ;
+嵣 > tau\ ;
+嵢 > sou\ ;
+嵠 > gei\ ;
+嵗 > sei\ ;
+嵕 > sou\ ;
+嵓 > gan\ ;
+嵒 > gan\ ;
+嵎 > guu\ ;
+嵉 > tei\ ;
+嵈 > kan\ ;
+嵇 > kei\ ;
+嵆 > kei\ ;
+嵅 > kan\ ;
+嵃 > gen\ ;
+嵁 > kan\ ;
+崽 > sai\ ;
+崼 > shi\ ;
+崹 > tei\ ;
+崸 > ton\ ;
+崶 > hou\ ;
+崵 > seu\ ;
+崴 > wai\ ;
+崲 > kou\ ;
+崥 > hei\ ;
+崤 > kou\ ;
+崢 > sou\ ;
+崡 > kan\ ;
+崠 > tou\ ;
+崟 > gin\ ;
+崝 > sau\ ;
+崙 > ron\ ;
+崘 > ron\ ;
+崕 > gai\ ;
+崔 > sai\ ;
+崑 > kon\ ;
+崐 > kon\ ;
+崏 > bin\ ;
+崍 > rai\ ;
+崇 > suu\ ;
+崆 > kou\ ;
+崄 > ken\ ;
+崁 > kan\ ;
+峺 > kou\ ;
+峸 > sei\ ;
+峵 > kou\ ;
+峴 > ken\ ;
+峱 > dou\ ;
+峯 > hou\ ;
+峮 > kin\ ;
+峟 > you\ ;
+峝 > tou\ ;
+峜 > kei\ ;
+峘 > kan\ ;
+峕 > shi\ ;
+峒 > tou\ ;
+峐 > kai\ ;
+峎 > gon\ ;
+峇 > kou\ ;
+岾 > sen\ ;
+岺 > rei\ ;
+岷 > bin\ ;
+岲 > kou\ ;
+岱 > tai\ ;
+岰 > you\ ;
+岭 > rei\ ;
+岧 > teu\ ;
+岣 > kou\ ;
+岠 > kyo\ ;
+岟 > you\ ;
+岕 > kai\ ;
+岒 > ken\ ;
+岋 > gou\ ;
+岇 > gou\ ;
+岅 > han\ ;
+屽 > kan\ ;
+屻 > jin\ ;
+屳 > sen\ ;
+屯 > ton\ ;
+屧 > tei\ ;
+屣 > shi\ ;
+屟 > tei\ ;
+屜 > tei\ ;
+屛 > hei\ ;
+屚 > rou\ ;
+屖 > sei\ ;
+屔 > dei\ ;
+屎 > shi\ ;
+屇 > ten\ ;
+尼 > ama\ ;
+尷 > kan\ ;
+尶 > kan\ ;
+尵 > tai\ ;
+尲 > kan\ ;
+尬 > kai\ ;
+尨 > bou\ ;
+尟 > sen\ ;
+尌 > shu\ ;
+専 > sen\ ;
+寽 > rin\ ;
+对 > tai\ ;
+寶 > hou\ ;
+寳 > hou\ ;
+寱 > gei\ ;
+寰 > kan\ ;
+寬 > kan\ ;
+寨 > sai\ ;
+寜 > nei\ ;
+寛 > kan\ ;
+寚 > hou\ ;
+寘 > shi\ ;
+寗 > nei\ ;
+寕 > nei\ ;
+寓 > guu\ ;
+寏 > kan\ ;
+寎 > hei\ ;
+寍 > nei\ ;
+寋 > ken\ ;
+寊 > tei\ ;
+寇 > kou\ ;
+寁 > san\ ;
+寀 > sai\ ;
+宼 > kou\ ;
+宺 > kou\ ;
+宲 > hou\ ;
+宯 > kou\ ;
+宭 > kun\ ;
+宬 > sei\ ;
+宩 > shi\ ;
+宦 > kan\ ;
+宥 > yuu\ ;
+宖 > kou\ ;
+宕 > tou\ ;
+宔 > shu\ ;
+宑 > sei\ ;
+宏 > kou\ ;
+宋 > sou\ ;
+宁 > cho\ ;
+宀 > ben\ ;
+孿 > san\ ;
+孻 > dai\ ;
+孳 > shi\ ;
+孱 > sen\ ;
+孯 > kan\ ;
+孮 > sou\ ;
+孩 > kai\ ;
+孨 > sen\ ;
+孟 > mou\ ;
+孝 > kou\ ;
+孜 > shi\ ;
+孖 > shi\ ;
+孕 > you\ ;
+孍 > gen\ ;
+孌 > ren\ ;
+孈 > sui\ ;
+孅 > sen\ ;
+孃 > jou\ ;
+孁 > rei\ ;
+孀 > sou\ ;
+嬾 > ran\ ;
+嬲 > jou\ ;
+嬯 > tai\ ;
+嬭 > dai\ ;
+嬬 > shu\ ;
+嬨 > shi\ ;
+嬣 > tau\ ;
+嬠 > san\ ;
+嬞 > tou\ ;
+嬝 > jou\ ;
+嬛 > ken\ ;
+嬚 > ren\ ;
+嬗 > sen\ ;
+嬖 > hei\ ;
+嬓 > keu\ ;
+嬐 > sen\ ;
+嬏 > han\ ;
+嬎 > han\ ;
+嬋 > sen\ ;
+嬈 > deu\ ;
+嬃 > shu\ ;
+嬁 > tou\ ;
+嫽 > reu\ ;
+嫻 > kan\ ;
+嫺 > kan\ ;
+嫹 > bau\ ;
+嫸 > sen\ ;
+嫶 > seu\ ;
+嫬 > sha\ ;
+嫪 > rau\ ;
+嫩 > don\ ;
+嫨 > kan\ ;
+嫦 > kou\ ;
+嫥 > sen\ ;
+嫝 > kau\ ;
+嫚 > ban\ ;
+嫙 > seb\ ;
+嫘 > rui\ ;
+嫐 > jou\ ;
+嫏 > rou\ ;
+嫍 > tau\ ;
+嫋 > jou\ ;
+嫈 > seu\ ;
+嫇 > bei\ ;
+嫆 > you\ ;
+嫄 > gen\ ;
+媾 > kou\ ;
+媻 > han\ ;
+媹 > riu\ ;
+媸 > shi\ ;
+媶 > jou\ ;
+媵 > you\ ;
+媲 > hei\ ;
+媮 > tou\ ;
+媭 > shu\ ;
+媧 > kai\ ;
+媥 > hen\ ;
+媤 > shi\ ;
+媢 > bou\ ;
+媞 > shi\ ;
+媜 > tei\ ;
+媗 > ken\ ;
+媔 > ben\ ;
+媓 > kou\ ;
+媏 > tan\ ;
+媌 > bou\ ;
+媊 > sen\ ;
+婾 > tou\ ;
+婻 > dan\ ;
+婸 > tou\ ;
+婷 > tei\ ;
+婰 > ten\ ;
+婪 > ran\ ;
+婩 > gen\ ;
+婧 > sei\ ;
+婥 > dou\ ;
+婠 > wan\ ;
+婞 > kei\ ;
+婝 > ten\ ;
+婜 > kan\ ;
+婛 > kei\ ;
+婘 > ken\ ;
+婗 > gei\ ;
+婖 > ten\ ;
+婒 > tan\ ;
+婑 > zui\ ;
+婇 > sai\ ;
+婄 > hou\ ;
+婃 > sou\ ;
+婂 > ben\ ;
+婁 > rou\ ;
+娾 > gai\ ;
+娹 > ken\ ;
+娶 > shu\ ;
+娵 > shu\ ;
+娮 > den\ ;
+娩 > ben\ ;
+娨 > ban\ ;
+娧 > tai\ ;
+娤 > sou\ ;
+娣 > tei\ ;
+娟 > ken\ ;
+娞 > dai\ ;
+娚 > nan\ ;
+娙 > gou\ ;
+娗 > tei\ ;
+娏 > bou\ ;
+娍 > sei\ ;
+娊 > ken\ ;
+娉 > hei\ ;
+姾 > sen\ ;
+姼 > shi\ ;
+姸 > ken\ ;
+姷 > yuu\ ;
+姵 > hai\ ;
+姳 > bei\ ;
+姯 > kou\ ;
+姮 > kou\ ;
+姭 > ken\ ;
+姪 > mei\ ;
+姩 > den\ ;
+姧 > kan\ ;
+姦 > kan\ ;
+姤 > kou\ ;
+姣 > kou\ ;
+姢 > ken\ ;
+姟 > kai\ ;
+姛 > tou\ ;
+姚 > you\ ;
+姙 > nin\ ;
+姘 > hin\ ;
+姗 > san\ ;
+姖 > kyo\ ;
+姒 > shi\ ;
+姐 > ane\ ;
+姏 > ban\ ;
+姍 > san\ ;
+姌 > zen\ ;
+姊 > shi\ ;
+姈 > rei\ ;
+姅 > han\ ;
+姄 > bin\ ;
+姃 > sei\ ;
+妶 > ken\ ;
+妵 > tou\ ;
+妳 > dai\ ;
+妨 > bou\ ;
+妧 > gen\ ;
+妦 > hou\ ;
+妢 > hun\ ;
+妡 > kin\ ;
+妠 > dou\ ;
+妞 > juu\ ;
+妝 > sou\ ;
+妛 > shi\ ;
+妚 > huu\ ;
+妗 > sen\ ;
+妏 > bun\ ;
+妎 > kai\ ;
+妍 > ken\ ;
+妌 > sei\ ;
+妅 > kou\ ;
+奿 > gan\ ;
+奾 > sen\ ;
+奻 > dan\ ;
+她 > chi\ ;
+奸 > kan\ ;
+奷 > sen\ ;
+奶 > dai\ ;
+奵 > tei\ ;
+奲 > sha\ ;
+奱 > ren\ ;
+奩 > ren\ ;
+奣 > wan\ ;
+奡 > gau\ ;
+奠 > ten\ ;
+奟 > kou\ ;
+奛 > kou\ ;
+奚 > kei\ ;
+奙 > hon\ ;
+奘 > jou\ ;
+奕 > eki\ ;
+奔 > hon\ ;
+奒 > kai\ ;
+奐 > kan\ ;
+奎 > kei\ ;
+奌 > ten\ ;
+奆 > ken\ ;
+奅 > hou\ ;
+奃 > tei\ ;
+奀 > bou\ ;
+夳 > tai\ ;
+夲 > tou\ ;
+夰 > kou\ ;
+夯 > kou\ ;
+夭 > you\ ;
+夣 > bou\ ;
+夠 > kou\ ;
+夝 > sei\ ;
+夘 > bou\ ;
+夒 > dou\ ;
+夐 > kei\ ;
+夊 > sui\ ;
+夆 > hou\ ;
+夅 > kou\ ;
+夂 > chi\ ;
+壾 > bou\ ;
+壼 > kon\ ;
+壸 > kon\ ;
+壴 > shu\ ;
+壮 > sou\ ;
+壨 > rai\ ;
+壧 > gan\ ;
+壥 > ten\ ;
+壤 > jou\ ;
+壣 > rin\ ;
+壠 > rou\ ;
+壟 > oka\ ;
+壜 > tan\ ;
+壙 > kou\ ;
+壘 > rui\ ;
+壖 > zen\ ;
+壕 > gou\ ;
+壔 > tau\ ;
+壐 > shi\ ;
+壏 > kan\ ;
+壎 > ken\ ;
+壍 > zan\ ;
+壌 > jou\ ;
+壉 > kyo\ ;
+壅 > you\ ;
+壂 > ten\ ;
+墿 > eki\ ;
+墾 > kon\ ;
+墽 > kau\ ;
+墸 > sho\ ;
+墳 > fun\ ;
+墱 > tou\ ;
+墭 > sei\ ;
+墬 > chi\ ;
+墩 > ton\ ;
+墦 > han\ ;
+墥 > tou\ ;
+墡 > sen\ ;
+墠 > sen\ ;
+墟 > kyo\ ;
+增 > zou\ ;
+墝 > kou\ ;
+墖 > tou\ ;
+墔 > sai\ ;
+墐 > kin\ ;
+墊 > ten\ ;
+墉 > you\ ;
+墈 > kan\ ;
+墅 > sho\ ;
+墁 > ban\ ;
+墀 > chi\ ;
+塿 > rou\ ;
+塽 > sau\ ;
+塼 > sen\ ;
+塺 > bai\ ;
+塹 > zan\ ;
+塴 > hou\ ;
+塲 > jou\ ;
+塰 > ama\ ;
+填 > ten\ ;
+塤 > ken\ ;
+塣 > tei\ ;
+塡 > ten\ ;
+塟 > sou\ ;
+塝 > hau\ ;
+塜 > hou\ ;
+塘 > tou\ ;
+塒 > shi\ ;
+塏 > kai\ ;
+塎 > you\ ;
+塌 > tou\ ;
+塁 > rui\ ;
+堿 > kan\ ;
+堽 > kou\ ;
+堼 > kou\ ;
+堺 > kai\ ;
+堭 > kau\ ;
+堩 > kou\ ;
+堧 > zen\ ;
+堦 > kai\ ;
+堥 > bou\ ;
+堡 > hou\ ;
+堠 > kou\ ;
+堟 > ten\ ;
+堞 > teu\ ;
+堜 > ren\ ;
+堋 > hou\ ;
+堉 > iku\ ;
+堈 > kou\ ;
+堇 > kin\ ;
+堄 > gen\ ;
+堃 > kon\ ;
+埿 > dei\ ;
+埾 > shu\ ;
+埽 > sou\ ;
+培 > bai\ ;
+埸 > eki\ ;
+埶 > gei\ ;
+埳 > kan\ ;
+埲 > hou\ ;
+埰 > sai\ ;
+埮 > tan\ ;
+埭 > tai\ ;
+埬 > tou\ ;
+埩 > sau\ ;
+埦 > wan\ ;
+埥 > sei\ ;
+埣 > sai\ ;
+埢 > ken\ ;
+域 > iki\ ;
+埞 > tei\ ;
+埝 > ten\ ;
+埜 > sho\ ;
+埕 > tei\ ;
+埏 > sen\ ;
+埌 > rou\ ;
+埇 > you\ ;
+埄 > hou\ ;
+埂 > kau\ ;
+埀 > sui\ ;
+垿 > sho\ ;
+垾 > kan\ ;
+垽 > gin\ ;
+垼 > eki\ ;
+垻 > hai\ ;
+垹 > hou\ ;
+垸 > kan\ ;
+垶 > sei\ ;
+垰 > tao\ ;
+垩 > sei\ ;
+垨 > shu\ ;
+垧 > kei\ ;
+垥 > keu\ ;
+垠 > gin\ ;
+垟 > you\ ;
+垚 > geu\ ;
+垙 > kuu\ ;
+垗 > teu\ ;
+垕 > kou\ ;
+垓 > gai\ ;
+垐 > shi\ ;
+垌 > tou\ ;
+垉 > hou\ ;
+垈 > tai\ ;
+垁 > chi\ ;
+坾 > cho\ ;
+坽 > rei\ ;
+坻 > chi\ ;
+坰 > kei\ ;
+坮 > dai\ ;
+坭 > dei\ ;
+坫 > ten\ ;
+坩 > kan\ ;
+坥 > sho\ ;
+坤 > kon\ ;
+坢 > han\ ;
+坚 > ken\ ;
+坙 > kei\ ;
+块 > kai\ ;
+坑 > kou\ ;
+坏 > hai\ ;
+坎 > kan\ ;
+坍 > tan\ ;
+坌 > hon\ ;
+坋 > hun\ ;
+坉 > ton\ ;
+坆 > bai\ ;
+坅 > kin\ ;
+坁 > shi\ ;
+址 > shi\ ;
+圭 > kei\ ;
+圦 > iri\ ;
+圢 > tei\ ;
+圞 > ran\ ;
+圝 > ran\ ;
+圜 > kan\ ;
+圛 > eki\ ;
+圚 > kai\ ;
+圌 > sen\ ;
+圊 > sei\ ;
+圉 > gyo\ ;
+圈 > ken\ ;
+圇 > rin\ ;
+圅 > kan\ ;
+圄 > gyo\ ;
+圂 > kon\ ;
+圁 > gin\ ;
+囿 > yuu\ ;
+囹 > rei\ ;
+囷 > kin\ ;
+囱 > sou\ ;
+园 > gan\ ;
+囬 > kai\ ;
+囪 > sou\ ;
+囨 > hen\ ;
+囧 > kei\ ;
+囥 > kou\ ;
+囤 > ton\ ;
+囡 > juu\ ;
+囝 > ken\ ;
+囜 > jin\ ;
+囘 > kai\ ;
+囔 > dou\ ;
+囏 > kan\ ;
+囊 > nou\ ;
+囈 > gei\ ;
+囆 > tai\ ;
+囅 > ten\ ;
+囃 > sou\ ;
+囂 > gou\ ;
+囀 > ten\ ;
+嚾 > kan\ ;
+嚻 > gou\ ;
+嚷 > jau\ ;
+嚵 > san\ ;
+嚮 > kou\ ;
+嚬 > hin\ ;
+嚪 > tan\ ;
+嚨 > rou\ ;
+嚢 > nou\ ;
+嚚 > gin\ ;
+嚙 > gou\ ;
+嚔 > tei\ ;
+嚎 > kau\ ;
+嚌 > sei\ ;
+嚈 > you\ ;
+嚆 > kou\ ;
+嚃 > tou\ ;
+嚂 > ran\ ;
+嚀 > dei\ ;
+噿 > sui\ ;
+噹 > tou\ ;
+噸 > ton\ ;
+噷 > kin\ ;
+噵 > dou\ ;
+噴 > fun\ ;
+噰 > you\ ;
+噬 > zei\ ;
+噥 > dou\ ;
+噤 > kin\ ;
+噣 > chu\ ;
+噢 > iku\ ;
+噡 > sen\ ;
+噟 > you\ ;
+噞 > gen\ ;
+噙 > kin\ ;
+噔 > tou\ ;
+噓 > kyo\ ;
+噍 > seu\ ;
+噋 > ton\ ;
+噉 > tan\ ;
+噇 > tou\ ;
+噆 > sou\ ;
+噃 > han\ ;
+噀 > son\ ;
+嘾 > tan\ ;
+嘽 > tan\ ;
+嘹 > reu\ ;
+嘷 > kou\ ;
+嘶 > sei\ ;
+嘵 > keu\ ;
+嘮 > tou\ ;
+嘭 > hou\ ;
+嘬 > sai\ ;
+嘫 > dam\ ;
+嘪 > bai\ ;
+嘕 > ken\ ;
+嘒 > kei\ ;
+嘐 > hau\ ;
+嘍 > rou\ ;
+嘌 > heu\ ;
+嘊 > gai\ ;
+嘈 > sau\ ;
+嘅 > kai\ ;
+嘄 > keu\ ;
+嗿 > tan\ ;
+嗾 > sou\ ;
+嗻 > sha\ ;
+嗺 > sui\ ;
+嗹 > ren\ ;
+嗸 > gou\ ;
+嗷 > gou\ ;
+嗨 > kai\ ;
+嗥 > kou\ ;
+嗤 > shi\ ;
+嗡 > rou\ ;
+嗞 > shi\ ;
+嗛 > ken\ ;
+嗙 > hou\ ;
+嗘 > kei\ ;
+嗓 > sou\ ;
+嗒 > tou\ ;
+嗌 > eki\ ;
+嗊 > kou\ ;
+嗈 > you\ ;
+嗃 > kou\ ;
+嗁 > tei\ ;
+喿 > sou\ ;
+喭 > gen\ ;
+喦 > jou\ ;
+喤 > kou\ ;
+喛 > kan\ ;
+喙 > kai\ ;
+喗 > gin\ ;
+喕 > ben\ ;
+喔 > aku\ ;
+喒 > san\ ;
+喏 > sha\ ;
+喍 > sai\ ;
+喊 > kan\ ;
+喈 > kai\ ;
+喃 > nan\ ;
+啿 > tan\ ;
+啽 > gan\ ;
+啻 > shi\ ;
+啴 > tan\ ;
+啮 > gou\ ;
+啥 > sha\ ;
+啡 > hai\ ;
+啟 > kei\ ;
+啛 > sai\ ;
+啙 > shi\ ;
+啗 > tan\ ;
+啖 > tan\ ;
+啕 > tou\ ;
+啔 > kei\ ;
+啓 > kei\ ;
+啑 > sou\ ;
+啐 > sai\ ;
+啍 > ton\ ;
+啌 > kou\ ;
+啉 > ran\ ;
+啈 > kou\ ;
+啁 > tou\ ;
+啀 > gai\ ;
+唻 > rai\ ;
+唶 > sha\ ;
+唳 > rei\ ;
+唫 > gin\ ;
+唪 > hou\ ;
+唤 > kan\ ;
+唝 > kou\ ;
+唘 > kei\ ;
+唗 > tou\ ;
+唕 > sou\ ;
+唑 > zei\ ;
+唍 > kan\ ;
+唌 > sen\ ;
+唉 > kai\ ;
+唅 > kan\ ;
+唄 > uta\ ;
+唁 > gen\ ;
+哽 > kou\ ;
+哼 > kou\ ;
+哻 > kan\ ;
+哸 > sai\ ;
+哰 > rou\ ;
+哯 > ken\ ;
+哮 > kou\ ;
+哤 > bou\ ;
+哢 > rou\ ;
+哠 > kou\ ;
+哏 > kon\ ;
+哎 > gai\ ;
+哊 > iku\ ;
+哈 > gou\ ;
+哆 > shi\ ;
+哅 > kou\ ;
+哄 > kou\ ;
+哃 > tou\ ;
+咾 > rou\ ;
+咺 > ken\ ;
+咸 > kan\ ;
+咷 > tau\ ;
+咵 > kuu\ ;
+咴 > kai\ ;
+咮 > tou\ ;
+咫 > shi\ ;
+咨 > shi\ ;
+咣 > kou\ ;
+咔 > rou\ ;
+咒 > shu\ ;
+咍 > kai\ ;
+咆 > hou\ ;
+咅 > tou\ ;
+咂 > sou\ ;
+咁 > kan\ ;
+呷 > kou\ ;
+呲 > shi\ ;
+呰 > shi\ ;
+呯 > hei\ ;
+呩 > shi\ ;
+呧 > tei\ ;
+呥 > zen\ ;
+呤 > rei\ ;
+呣 > bou\ ;
+呡 > bun\ ;
+呠 > hon\ ;
+呞 > shi\ ;
+呈 > tei\ ;
+呇 > kei\ ;
+呅 > bai\ ;
+呃 > aku\ ;
+呁 > kin\ ;
+吼 > kou\ ;
+吺 > tou\ ;
+吱 > shi\ ;
+吰 > kou\ ;
+启 > kei\ ;
+吮 > sen\ ;
+吭 > kou\ ;
+听 > kin\ ;
+吪 > guu\ ;
+吩 > fun\ ;
+吨 > ton\ ;
+吥 > hou\ ;
+吤 > kai\ ;
+吠 > hai\ ;
+吟 > gin\ ;
+吞 > don\ ;
+吙 > kuu\ ;
+吘 > gou\ ;
+吕 > ryo\ ;
+吆 > you\ ;
+吅 > ten\ ;
+吂 > bou\ ;
+号 > gou\ ;
+叮 > tei\ ;
+叨 > tou\ ;
+另 > rei\ ;
+叟 > sou\ ;
+叝 > kou\ ;
+叛 > han\ ;
+变 > hen\ ;
+叓 > shi\ ;
+叏 > kai\ ;
+叇 > tai\ ;
+叅 > san\ ;
+叄 > san\ ;
+叁 > san\ ;
+叀 > sen\ ;
+厽 > rui\ ;
+厺 > kyo\ ;
+厹 > jiu\ ;
+厸 > rin\ ;
+厷 > kou\ ;
+厶 > shi\ ;
+厵 > gen\ ;
+厲 > rei\ ;
+厮 > shi\ ;
+厫 > gou\ ;
+厪 > kin\ ;
+厧 > ten\ ;
+厡 > gen\ ;
+厜 > shi\ ;
+厙 > sha\ ;
+厗 > tei\ ;
+厖 > bou\ ;
+厓 > gai\ ;
+厎 > shi\ ;
+厉 > rei\ ;
+厈 > kan\ ;
+厃 > sen\ ;
+厂 > kan\ ;
+卺 > kin\ ;
+卯 > bou\ ;
+卮 > shi\ ;
+卬 > gau\ ;
+卥 > sei\ ;
+卤 > sei\ ;
+卣 > yuu\ ;
+卞 > hen\ ;
+卝 > kan\ ;
+单 > tan\ ;
+卐 > ban\ ;
+卋 > sei\ ;
+卅 > sou\ ;
+卄 > juu\ ;
+匾 > hen\ ;
+匸 > kei\ ;
+匷 > kyo\ ;
+匴 > san\ ;
+匳 > ren\ ;
+匲 > ren\ ;
+匰 > tan\ ;
+匯 > wai\ ;
+匨 > zou\ ;
+匥 > hen\ ;
+匟 > kou\ ;
+匝 > sou\ ;
+匘 > dou\ ;
+匒 > tou\ ;
+匏 > hou\ ;
+匌 > kou\ ;
+匋 > tou\ ;
+匄 > kai\ ;
+勽 > bun\ ;
+勹 > hou\ ;
+勷 > jou\ ;
+勵 > rei\ ;
+勴 > ryo\ ;
+勳 > kun\ ;
+勲 > kun\ ;
+勱 > bai\ ;
+勯 > tan\ ;
+勬 > ken\ ;
+勫 > han\ ;
+勨 > you\ ;
+勦 > sou\ ;
+勡 > heu\ ;
+勛 > kun\ ;
+勗 > bou\ ;
+勔 > ben\ ;
+勓 > kai\ ;
+勑 > rai\ ;
+勐 > bau\ ;
+勏 > hou\ ;
+勍 > kei\ ;
+勌 > ken\ ;
+勈 > you\ ;
+勆 > rou\ ;
+勄 > bin\ ;
+勂 > kou\ ;
+勁 > kei\ ;
+势 > sei\ ;
+劾 > gai\ ;
+劺 > bou\ ;
+劷 > you\ ;
+劶 > kou\ ;
+劵 > ken\ ;
+劳 > rou\ ;
+劲 > kei\ ;
+劯 > sho\ ;
+劧 > shi\ ;
+劥 > kou\ ;
+劤 > kin\ ;
+办 > hen\ ;
+劝 > kan\ ;
+劗 > san\ ;
+劖 > san\ ;
+劔 > ken\ ;
+劒 > ken\ ;
+劑 > zai\ ;
+劎 > ken\ ;
+劌 > kei\ ;
+劊 > kai\ ;
+劆 > ren\ ;
+剿 > sou\ ;
+剼 > san\ ;
+剻 > huu\ ;
+剸 > tan\ ;
+剷 > san\ ;
+剴 > gai\ ;
+剳 > tou\ ;
+剱 > ken\ ;
+剰 > jou\ ;
+剭 > oku\ ;
+剬 > tan\ ;
+剪 > sen\ ;
+剩 > jou\ ;
+剤 > zai\ ;
+剠 > kei\ ;
+剜 > wan\ ;
+剚 > shi\ ;
+剙 > sou\ ;
+剗 > san\ ;
+剏 > sou\ ;
+剅 > rou\ ;
+剄 > kei\ ;
+券 > ken\ ;
+刲 > kei\ ;
+刱 > sou\ ;
+刬 > san\ ;
+刪 > san\ ;
+刨 > hou\ ;
+刧 > gou\ ;
+刢 > rei\ ;
+刡 > bin\ ;
+删 > san\ ;
+刞 > sho\ ;
+刓 > gun\ ;
+刐 > tan\ ;
+刎 > fun\ ;
+刌 > son\ ;
+刋 > sen\ ;
+刅 > sou\ ;
+刄 > jin\ ;
+刂 > tau\ ;
+刁 > teu\ ;
+凾 > kan\ ;
+凷 > kai\ ;
+凵 > kan\ ;
+凳 > tou\ ;
+凲 > kan\ ;
+凱 > gai\ ;
+凰 > kou\ ;
+凮 > fuu\ ;
+凭 > hei\ ;
+凨 > fuu\ ;
+凥 > kyo\ ;
+凤 > hou\ ;
+凣 > han\ ;
+凢 > bon\ ;
+凜 > rin\ ;
+凛 > rin\ ;
+凘 > shi\ ;
+凗 > sai\ ;
+凖 > jun\ ;
+凕 > bei\ ;
+凔 > sau\ ;
+凑 > sou\ ;
+减 > gen\ ;
+凊 > sei\ ;
+凈 > sou\ ;
+准 > jun\ ;
+凂 > bai\ ;
+冿 > sen\ ;
+冺 > bin\ ;
+冸 > han\ ;
+冭 > tai\ ;
+冩 > sha\ ;
+冦 > kou\ ;
+冥 > mei\ ;
+冣 > shu\ ;
+冡 > bou\ ;
+冕 > ben\ ;
+冓 > kou\ ;
+冐 > bou\ ;
+冏 > kei\ ;
+冋 > kei\ ;
+冉 > nen\ ;
+冄 > zen\ ;
+冃 > bou\ ;
+冂 > kei\ ;
+兮 > kei\ ;
+內 > dai\ ;
+兦 > bou\ ;
+兤 > kou\ ;
+兘 > shi\ ;
+兕 > shi\ ;
+兊 > tai\ ;
+儿 > jin\ ;
+儽 > rai\ ;
+儼 > gen\ ;
+儻 > tou\ ;
+儹 > san\ ;
+儷 > rei\ ;
+儳 > san\ ;
+儱 > rou\ ;
+儯 > tou\ ;
+儩 > shi\ ;
+儧 > san\ ;
+儥 > iku\ ;
+儤 > hou\ ;
+儣 > kou\ ;
+儢 > ryo\ ;
+儡 > rai\ ;
+儝 > kei\ ;
+儜 > dau\ ;
+儚 > bou\ ;
+儙 > ken\ ;
+儖 > ran\ ;
+儕 > sei\ ;
+儓 > tai\ ;
+儑 > gan\ ;
+儐 > hin\ ;
+儎 > sai\ ;
+儌 > keu\ ;
+儋 > tan\ ;
+儊 > sho\ ;
+儉 > ken\ ;
+儈 > kai\ ;
+儇 > ken\ ;
+儆 > kei\ ;
+儅 > tou\ ;
+儃 > sen\ ;
+儂 > dou\ ;
+僿 > shi\ ;
+僼 > hou\ ;
+僸 > kin\ ;
+僶 > bin\ ;
+僯 > rin\ ;
+僮 > dou\ ;
+僭 > sen\ ;
+僬 > seu\ ;
+僩 > kan\ ;
+僨 > hun\ ;
+僤 > tan\ ;
+僣 > sen\ ;
+僢 > sen\ ;
+僠 > fan\ ;
+僝 > san\ ;
+僜 > tou\ ;
+僙 > kou\ ;
+僗 > rau\ ;
+僔 > son\ ;
+僓 > tai\ ;
+僐 > sen\ ;
+僎 > sen\ ;
+僌 > you\ ;
+僋 > tan\ ;
+僊 > sen\ ;
+僉 > sen\ ;
+僈 > ban\ ;
+僆 > ren\ ;
+僄 > heu\ ;
+僂 > rou\ ;
+僀 > tei\ ;
+傺 > tei\ ;
+傸 > sau\ ;
+債 > sai\ ;
+傲 > gou\ ;
+傰 > hou\ ;
+傯 > sou\ ;
+傮 > sou\ ;
+傭 > you\ ;
+傪 > san\ ;
+傤 > sai\ ;
+傡 > hei\ ;
+傝 > tan\ ;
+傛 > you\ ;
+傚 > kou\ ;
+傖 > sau\ ;
+傔 > ken\ ;
+傓 > sen\ ;
+傒 > kei\ ;
+傐 > kou\ ;
+傏 > tou\ ;
+傎 > ten\ ;
+傋 > kau\ ;
+傇 > jou\ ;
+傆 > gen\ ;
+傂 > chi\ ;
+傁 > sou\ ;
+傀 > kai\ ;
+偻 > rou\ ;
+偺 > san\ ;
+偸 > tou\ ;
+偳 > tan\ ;
+偲 > shi\ ;
+偭 > ben\ ;
+偬 > sou\ ;
+偫 > chi\ ;
+偩 > huu\ ;
+偨 > shi\ ;
+偦 > sho\ ;
+偢 > seu\ ;
+偡 > tan\ ;
+偞 > you\ ;
+偝 > hai\ ;
+偛 > sou\ ;
+偙 > tei\ ;
+偘 > kan\ ;
+偗 > sei\ ;
+偖 > sha\ ;
+偕 > kai\ ;
+偓 > aku\ ;
+偒 > tou\ ;
+偑 > huu\ ;
+偐 > gan\ ;
+偏 > hen\ ;
+偎 > wai\ ;
+偍 > tei\ ;
+偋 > hei\ ;
+偄 > dan\ ;
+偂 > sen\ ;
+值 > chi\ ;
+倷 > dai\ ;
+倴 > hon\ ;
+倳 > shi\ ;
+倲 > tou\ ;
+倱 > kon\ ;
+倫 > rin\ ;
+倪 > gei\ ;
+倨 > kyo\ ;
+倧 > sou\ ;
+倥 > kou\ ;
+倣 > hou\ ;
+倞 > kei\ ;
+倝 > kan\ ;
+倗 > hou\ ;
+倖 > kou\ ;
+倕 > sui\ ;
+倓 > tan\ ;
+們 > mon\ ;
+倎 > ten\ ;
+倍 > bai\ ;
+倊 > sou\ ;
+倈 > rai\ ;
+倅 > sai\ ;
+倄 > kou\ ;
+倂 > hei\ ;
+倁 > chi\ ;
+俿 > chi\ ;
+俽 > kin\ ;
+俼 > iku\ ;
+俸 > hou\ ;
+俴 > sen\ ;
+俳 > hai\ ;
+俲 > kou\ ;
+俫 > rai\ ;
+俟 > shi\ ;
+俜 > hei\ ;
+俛 > ben\ ;
+俖 > hai\ ;
+俔 > ken\ ;
+俓 > gau\ ;
+俒 > kon\ ;
+俑 > you\ ;
+俏 > seu\ ;
+俊 > jun\ ;
+俆 > sho\ ;
+俀 > tai\ ;
+侾 > kou\ ;
+侽 > dan\ ;
+侹 > tei\ ;
+侫 > nei\ ;
+侣 > ryo\ ;
+侟 > sen\ ;
+侗 > tou\ ;
+侖 > ron\ ;
+侔 > bou\ ;
+侑 > yuu\ ;
+侏 > shu\ ;
+侊 > kou\ ;
+侈 > shi\ ;
+侅 > kai\ ;
+侃 > kan\ ;
+侀 > kei\ ;
+佽 > shi\ ;
+佼 > kou\ ;
+佺 > sen\ ;
+佷 > kou\ ;
+佱 > hou\ ;
+佯 > you\ ;
+佮 > kou\ ;
+佩 > hai\ ;
+佣 > you\ ;
+佢 > kyo\ ;
+佡 > ken\ ;
+佟 > tou\ ;
+佞 > nei\ ;
+佝 > kou\ ;
+佘 > sha\ ;
+佑 > yuu\ ;
+佌 > shi\ ;
+佉 > kyo\ ;
+但 > tan\ ;
+佂 > yai\ ;
+佀 > shi\ ;
+伻 > hou\ ;
+伹 > sho\ ;
+伶 > rei\ ;
+伭 > ken\ ;
+伣 > ken\ ;
+优 > yuu\ ;
+众 > gin\ ;
+伓 > hai\ ;
+伒 > kin\ ;
+伉 > kou\ ;
+伇 > eki\ ;
+伅 > ton\ ;
+伂 > hai\ ;
+仿 > hou\ ;
+仾 > tei\ ;
+份 > hin\ ;
+价 > kai\ ;
+仱 > ken\ ;
+仯 > sou\ ;
+仭 > jin\ ;
+仠 > kan\ ;
+仟 > sen\ ;
+仞 > jin\ ;
+仜 > kou\ ;
+仚 > ken\ ;
+仐 > san\ ;
+从 > juu\ ;
+仍 > jou\ ;
+仃 > tei\ ;
+什 > juu\ ;
+亾 > bou\ ;
+亷 > ren\ ;
+亶 > tan\ ;
+亰 > kei\ ;
+亢 > kou\ ;
+亠 > tou\ ;
+亝 > sei\ ;
+亗 > sai\ ;
+亖 > shi\ ;
+亃 > rin\ ;
+亁 > ken\ ;
+乿 > chi\ ;
+乹 > kan\ ;
+乪 > dou\ ;
+乩 > kei\ ;
+乨 > shi\ ;
+乢 > gai\ ;
+乖 > kai\ ;
+乓 > hau\ ;
+乒 > hei\ ;
+乑 > gin\ ;
+乂 > gai\ ;
+举 > kyo\ ;
+丽 > rei\ ;
+丶 > chu\ ;
+丳 > san\ ;
+丱 > kan\ ;
+丰 > hou\ ;
+丯 > kai\ ;
+丨 > kon\ ;
+丣 > yuu\ ;
+丙 > hei\ ;
+丗 > sei\ ;
+专 > sen\ ;
+丐 > kai\ ;
+丏 > ben\ ;
+丂 > kou\ ;
+迦 > ka\ ;
+矢 > ya\ ;
+応 > ou\ ;
+忌 > ki\ ;
+辭 > ji\ ;
+微 > bi\ ;
+御 > go\ ;
+辞 > ji\ ;
+徒 > to\ ;
+徐 > jo\ ;
+徃 > ou\ ;
+往 > ou\ ;
+眼 > me\ ;
+輪 > wa\ ;
+弥 > mi\ ;
+真 > ma\ ;
+輝 > ki\ ;
+引 > in\ ;
+弐 > ni\ ;
+延 > en\ ;
+目 > me\ ;
+身 > mi\ ;
+庫 > ko\ ;
+座 > za\ ;
+度 > do\ ;
+府 > fu\ ;
+庇 > hi\ ;
+踰 > yu\ ;
+帰 > ki\ ;
+痺 > hi\ ;
+路 > ro\ ;
+差 > sa\ ;
+跪 > ki\ ;
+巨 > ko\ ;
+巣 > su\ ;
+州 > su\ ;
+痛 > ts\ ;
+疲 > hi\ ;
+疑 > gi\ ;
+疎 > so\ ;
+疋 > so\ ;
+起 > ki\ ;
+赴 > fu\ ;
+田 > ta\ ;
+甥 > oi\ ;
+贔 > hi\ ;
+費 > hi\ ;
+貴 > ki\ ;
+環 > wa\ ;
+貨 > ka\ ;
+負 > fu\ ;
+豫 > yo\ ;
+履 > ri\ ;
+屓 > ki\ ;
+屋 > ya\ ;
+谷 > ya\ ;
+理 > ri\ ;
+寝 > ne\ ;
+寐 > bi\ ;
+珈 > ka\ ;
+寄 > ki\ ;
+家 > ke\ ;
+実 > mi\ ;
+宜 > gi\ ;
+王 > ou\ ;
+譽 > yo\ ;
+護 > go\ ;
+議 > gi\ ;
+譬 > hi\ ;
+季 > ki\ ;
+字 > ji\ ;
+子 > ne\ ;
+嬉 > ki\ ;
+媼 > ou\ ;
+課 > ka\ ;
+誤 > go\ ;
+犠 > gi\ ;
+語 > go\ ;
+媚 > bi\ ;
+誉 > yo\ ;
+誇 > ko\ ;
+婦 > fu\ ;
+婢 > hi\ ;
+婉 > en\ ;
+訴 > so\ ;
+訝 > ga\ ;
+記 > ki\ ;
+爐 > ro\ ;
+營 > ei\ ;
+妬 > to\ ;
+妓 > ki\ ;
+見 > mi\ ;
+如 > jo\ ;
+女 > jo\ ;
+襦 > ju\ ;
+奧 > ou\ ;
+奈 > na\ ;
+奇 > ki\ ;
+央 > ou\ ;
+太 > ta\ ;
+無 > mu\ ;
+褞 > on\ ;
+多 > ta\ ;
+褓 > ho\ ;
+裳 > mo\ ;
+裡 > ri\ ;
+烟 > en\ ;
+補 > ho\ ;
+墮 > da\ ;
+被 > hi\ ;
+衰 > sa\ ;
+灯 > hi\ ;
+火 > hi\ ;
+衞 > ei\ ;
+衛 > ei\ ;
+塗 > to\ ;
+堵 > to\ ;
+場 > ba\ ;
+瀬 > se\ ;
+堕 > da\ ;
+蟲 > ki\ ;
+濡 > ju\ ;
+螺 > ra\ ;
+坐 > za\ ;
+圖 > to\ ;
+演 > en\ ;
+圓 > en\ ;
+圃 > ho\ ;
+固 > ko\ ;
+図 > zu\ ;
+因 > in\ ;
+黄 > ki\ ;
+溯 > so\ ;
+蚊 > ka\ ;
+鹽 > en\ ;
+湯 > yu\ ;
+温 > on\ ;
+嘩 > ka\ ;
+渡 > to\ ;
+鸚 > ou\ ;
+嘔 > ou\ ;
+蘇 > so\ ;
+鷺 > ro\ ;
+淹 > en\ ;
+淫 > in\ ;
+嗟 > aa\ ;
+藍 > ai\ ;
+涸 > ko\ ;
+喪 > mo\ ;
+喜 > ki\ ;
+浮 > fu\ ;
+鵡 > bu\ ;
+派 > ha\ ;
+洩 > ei\ ;
+泳 > ei\ ;
+哩 > ri\ ;
+員 > in\ ;
+泄 > ei\ ;
+哀 > ai\ ;
+沿 > en\ ;
+治 > ji\ ;
+沙 > sa\ ;
+和 > wa\ ;
+汽 > ki\ ;
+呼 > ko\ ;
+汰 > ta\ ;
+呪 > ju\ ;
+葡 > ho\ ;
+汝 > jo\ ;
+葉 > ha\ ;
+呉 > go\ ;
+吾 > go\ ;
+永 > ei\ ;
+氷 > hi\ ;
+否 > hi\ ;
+氣 > ki\ ;
+気 > ki\ ;
+吐 > to\ ;
+吏 > ri\ ;
+名 > na\ ;
+可 > ka\ ;
+菜 > na\ ;
+毛 > ke\ ;
+叙 > jo\ ;
+毘 > hi\ ;
+受 > ju\ ;
+比 > hi\ ;
+菓 > ka\ ;
+毆 > ou\ ;
+莫 > bo\ ;
+歸 > ki\ ;
+荷 > ni\ ;
+魯 > ro\ ;
+危 > ki\ ;
+歯 > ha\ ;
+歩 > ho\ ;
+武 > bu\ ;
+歟 > yo\ ;
+魘 > en\ ;
+魔 > ma\ ;
+卑 > hi\ ;
+歐 > ou\ ;
+魅 > mi\ ;
+茹 > jo\ ;
+欺 > gi\ ;
+欷 > ki\ ;
+化 > ka\ ;
+匍 > ho\ ;
+茄 > ka\ ;
+茂 > mo\ ;
+英 > ei\ ;
+苦 > ku\ ;
+苛 > ka\ ;
+務 > mu\ ;
+苑 > en\ ;
+芽 > me\ ;
+努 > do\ ;
+加 > ka\ ;
+檐 > en\ ;
+檎 > go\ ;
+驅 > ku\ ;
+樹 > ju\ ;
+利 > ri\ ;
+模 > mo\ ;
+舞 > bu\ ;
+與 > yo\ ;
+出 > de\ ;
+臥 > ga\ ;
+駈 > ku\ ;
+駆 > ku\ ;
+駄 > ta\ ;
+冶 > ya\ ;
+膚 > fu\ ;
+榎 > ka\ ;
+具 > gu\ ;
+其 > ki\ ;
+饑 > ki\ ;
+腑 > fu\ ;
+兒 > ji\ ;
+腐 > fu\ ;
+児 > ji\ ;
+餘 > yo\ ;
+餓 > ga\ ;
+儀 > gi\ ;
+價 > ka\ ;
+飲 > in\ ;
+飮 > in\ ;
+飢 > ki\ ;
+胡 > ko\ ;
+僞 > gi\ ;
+飛 > hi\ ;
+棄 > ki\ ;
+備 > bi\ ;
+顧 > ko\ ;
+做 > sa\ ;
+顆 > ka\ ;
+案 > an\ ;
+假 > ka\ ;
+根 > ne\ ;
+倶 > ku\ ;
+値 > ne\ ;
+倚 > ki\ ;
+頗 > ha\ ;
+預 > yo\ ;
+個 > ko\ ;
+栄 > ei\ ;
+韻 > in\ ;
+査 > sa\ ;
+音 > ne\ ;
+翳 > ei\ ;
+俯 > fu\ ;
+保 > ho\ ;
+羽 > wa\ ;
+架 > ka\ ;
+枯 > ko\ ;
+侮 > bu\ ;
+義 > gi\ ;
+果 > ka\ ;
+侘 > ta\ ;
+美 > bi\ ;
+羅 > ra\ ;
+罹 > ri\ ;
+罵 > ba\ ;
+靡 > hi\ ;
+非 > hi\ ;
+余 > yo\ ;
+青 > ao\ ;
+佐 > sa\ ;
+似 > ni\ ;
+未 > mi\ ;
+木 > ki\ ;
+期 > ki\ ;
+伎 > gi\ ;
+伍 > go\ ;
+企 > ki\ ;
+曳 > ei\ ;
+離 > ri\ ;
+代 > yo\ ;
+付 > fu\ ;
+隱 > in\ ;
+暮 > bo\ ;
+隠 > in\ ;
+些 > sa\ ;
+暗 > an\ ;
+五 > go\ ;
+互 > go\ ;
+云 > un\ ;
+二 > ni\ ;
+予 > yo\ ;
+繻 > ju\ ;
+普 > fu\ ;
+除 > jo\ ;
+院 > in\ ;
+九 > ku\ ;
+附 > fu\ ;
+乃 > no\ ;
+陀 > da\ ;
+丹 > ni\ ;
+是 > ze\ ;
+映 > ei\ ;
+世 > yo\ ;
+与 > yo\ ;
+不 > fu\ ;
+三 > mi\ ;
+旺 > ou\ ;
+日 > hi\ ;
+既 > ki\ ;
+綺 > ki\ ;
+斗 > to\ ;
+間 > ma\ ;
+斐 > hi\ ;
+敷 > fu\ ;
+素 > so\ ;
+紀 > ki\ ;
+擬 > gi\ ;
+撫 > bu\ ;
+摩 > ma\ ;
+籔 > su\ ;
+簿 > bo\ ;
+簷 > en\ ;
+措 > so\ ;
+掩 > en\ ;
+掛 > ka\ ;
+授 > ju\ ;
+箇 > ka\ ;
+捗 > ho\ ;
+捕 > ho\ ;
+挨 > ai\ ;
+符 > fu\ ;
+持 > ji\ ;
+鋭 > ei\ ;
+鋪 > ho\ ;
+押 > ou\ ;
+窺 > ki\ ;
+窶 > ku\ ;
+披 > hi\ ;
+抒 > jo\ ;
+批 > hi\ ;
+扶 > fu\ ;
+打 > da\ ;
+穏 > on\ ;
+手 > te\ ;
+穂 > ho\ ;
+稼 > ka\ ;
+戸 > to\ ;
+戲 > gi\ ;
+戯 > gi\ ;
+懼 > ku\ ;
+秘 > hi\ ;
+科 > ka\ ;
+野 > no\ ;
+里 > ri\ ;
+祖 > so\ ;
+祕 > hi\ ;
+慕 > bo\ ;
+祈 > ki\ ;
+慇 > in\ ;
+愛 > ai\ ;
+愚 > gu\ ;
+愉 > yu\ ;
+愈 > yu\ ;
+惹 > ja\ ;
+部 > bu\ ;
+磨 > ma\ ;
+悸 > ki\ ;
+悲 > hi\ ;
+那 > da\ ;
+悟 > go\ ;
+避 > hi\ ;
+恩 > on\ ;
+過 > ka\ ;
+運 > un\ ;
+破 > ha\ ;
+怨 > en\ ;
+怖 > fu\ ;
+途 > to\ ;
+怒 > do\ ;
+龢 > ka\ ;
+龜 > ki\ ;
+龑 > en\ ;
+齮 > gi\ ;
+齟 > so\ ;
+齖 > ga\ ;
+齇 > sa\ ;
+齆 > ou\ ;
+鼽 > gu\ ;
+鼹 > en\ ;
+鼴 > en\ ;
+鼯 > go\ ;
+鼔 > ko\ ;
+鼉 > ta\ ;
+黼 > ho\ ;
+黸 > ro\ ;
+黯 > an\ ;
+黭 > en\ ;
+黤 > en\ ;
+黡 > en\ ;
+黟 > ei\ ;
+麾 > ki\ ;
+麼 > ma\ ;
+麸 > fu\ ;
+麬 > fu\ ;
+麤 > so\ ;
+麒 > ki\ ;
+麌 > gu\ ;
+麋 > bi\ ;
+麄 > so\ ;
+麂 > ki\ ;
+麁 > so\ ;
+鹺 > sa\ ;
+鹵 > ro\ ;
+鹟 > ou\ ;
+鹀 > bu\ ;
+鸝 > ri\ ;
+鸜 > ku\ ;
+鸕 > ro\ ;
+鸒 > yo\ ;
+鷰 > en\ ;
+鷗 > ou\ ;
+鷖 > ei\ ;
+鷃 > an\ ;
+鶲 > ou\ ;
+鶯 > ou\ ;
+鶘 > ko\ ;
+鶕 > an\ ;
+鵺 > ya\ ;
+鵷 > en\ ;
+鵯 > hi\ ;
+鵪 > an\ ;
+鵞 > ga\ ;
+鵝 > ga\ ;
+鵐 > bu\ ;
+鴽 > jo\ ;
+鴼 > ro\ ;
+鴳 > an\ ;
+鴯 > ji\ ;
+鴣 > ko\ ;
+鴝 > ku\ ;
+鴛 > en\ ;
+鴕 > ta\ ;
+鴑 > do\ ;
+鳶 > en\ ;
+鳬 > fu\ ;
+鳧 > fu\ ;
+鳁 > on\ ;
+鲏 > hi\ ;
+鲊 > sa\ ;
+鱫 > ai\ ;
+鰢 > ba\ ;
+鰛 > on\ ;
+鰖 > ta\ ;
+鰋 > en\ ;
+鯡 > hi\ ;
+鯝 > ko\ ;
+鯋 > sa\ ;
+鯆 > ho\ ;
+鮻 > sa\ ;
+鮬 > ho\ ;
+鮟 > an\ ;
+鮞 > ji\ ;
+鮍 > hi\ ;
+鮇 > bi\ ;
+鮀 > ta\ ;
+魲 > ro\ ;
+魮 > hi\ ;
+魦 > sa\ ;
+魕 > ki\ ;
+魏 > gi\ ;
+魌 > ki\ ;
+鬽 > bi\ ;
+鬹 > ki\ ;
+鬶 > ki\ ;
+鬴 > fu\ ;
+鬐 > ki\ ;
+鬍 > ko\ ;
+鬌 > ta\ ;
+鬁 > ri\ ;
+髿 > sa\ ;
+髽 > sa\ ;
+髵 > ji\ ;
+髲 > hi\ ;
+髬 > hi\ ;
+髗 > ro\ ;
+髃 > gu\ ;
+髀 > hi\ ;
+骻 > ka\ ;
+驪 > ri\ ;
+驥 > ki\ ;
+驊 > ka\ ;
+騾 > ra\ ;
+騧 > ka\ ;
+騤 > ki\ ;
+騢 > ka\ ;
+騖 > bu\ ;
+騑 > hi\ ;
+騏 > ki\ ;
+騎 > ki\ ;
+駰 > in\ ;
+駬 > ji\ ;
+駡 > ba\ ;
+駞 > da\ ;
+駝 > ta\ ;
+駙 > fu\ ;
+駕 > ga\ ;
+駓 > hi\ ;
+駑 > do\ ;
+馿 > ro\ ;
+馱 > ta\ ;
+馟 > to\ ;
+馗 > ki\ ;
+饠 > ra\ ;
+饜 > en\ ;
+饋 > ki\ ;
+饇 > yo\ ;
+饂 > un\ ;
+餽 > ki\ ;
+餼 > ki\ ;
+餲 > ei\ ;
+餬 > ko\ ;
+餫 > un\ ;
+餡 > an\ ;
+餜 > ka\ ;
+餔 > ho\ ;
+餇 > to\ ;
+飫 > yo\ ;
+颶 > ku\ ;
+颫 > fu\ ;
+颕 > ei\ ;
+顱 > ro\ ;
+顬 > ju\ ;
+顗 > gi\ ;
+頵 > in\ ;
+頴 > ei\ ;
+頫 > fu\ ;
+頎 > ki\ ;
+頍 > gi\ ;
+韺 > ei\ ;
+韵 > in\ ;
+韞 > on\ ;
+韗 > un\ ;
+鞿 > ki\ ;
+鞾 > ka\ ;
+鞼 > ki\ ;
+鞵 > ai\ ;
+鞍 > an\ ;
+鞋 > ai\ ;
+鞅 > ou\ ;
+鞁 > hi\ ;
+靿 > ou\ ;
+靻 > so\ ;
+靷 > in\ ;
+靶 > ha\ ;
+靉 > ai\ ;
+霪 > in\ ;
+霣 > in\ ;
+霏 > hi\ ;
+需 > ju\ ;
+雺 > mu\ ;
+雅 > ga\ ;
+隳 > ki\ ;
+隩 > ou\ ;
+隘 > ai\ ;
+隕 > in\ ;
+隐 > in\ ;
+隋 > ta\ ;
+隂 > in\ ;
+隁 > en\ ;
+陻 > in\ ;
+陴 > hi\ ;
+陒 > ki\ ;
+陏 > ta\ ;
+陂 > ha\ ;
+陁 > ta\ ;
+阽 > en\ ;
+阼 > so\ ;
+阻 > so\ ;
+阥 > in\ ;
+阜 > fu\ ;
+阇 > to\ ;
+闞 > kn\ ;
+闚 > ki\ ;
+闍 > to\ ;
+闉 > in\ ;
+閻 > en\ ;
+閹 > en\ ;
+閭 > ro\ ;
+閟 > hi\ ;
+镾 > bi\ ;
+鑼 > ra\ ;
+鑪 > ro\ ;
+鐖 > ki\ ;
+鏖 > ou\ ;
+鏍 > ra\ ;
+鏁 > sa\ ;
+鎶 > ka\ ;
+鎵 > ka\ ;
+鎣 > ei\ ;
+鎈 > sa\ ;
+鎂 > bi\ ;
+鎁 > ya\ ;
+鍺 > ta\ ;
+鍜 > ka\ ;
+鍍 > to\ ;
+鍈 > ei\ ;
+錻 > bu\ ;
+錮 > ko\ ;
+錤 > ki\ ;
+錡 > ki\ ;
+錍 > hi\ ;
+鋺 > en\ ;
+鋰 > ri\ ;
+鋣 > ya\ ;
+鋘 > ka\ ;
+鋆 > in\ ;
+銼 > sa\ ;
+銳 > ei\ ;
+銨 > an\ ;
+銟 > sa\ ;
+鉠 > ei\ ;
+鉍 > hi\ ;
+鈹 > hi\ ;
+鈷 > ko\ ;
+鈩 > ro\ ;
+鈦 > ta\ ;
+鈥 > ka\ ;
+鈝 > in\ ;
+鈘 > gi\ ;
+鈇 > hu\ ;
+鈆 > en\ ;
+鈀 > ha\ ;
+釹 > jo\ ;
+釷 > to\ ;
+釵 > sa\ ;
+釡 > fu\ ;
+釐 > ri\ ;
+醿 > bi\ ;
+醼 > en\ ;
+醨 > ri\ ;
+醡 > sa\ ;
+醞 > un\ ;
+醖 > un\ ;
+醐 > ko\ ;
+醃 > en\ ;
+酺 > ho\ ;
+酴 > to\ ;
+酳 > in\ ;
+酥 > so\ ;
+酤 > ko\ ;
+酢 > su\ ;
+酡 > ta\ ;
+酗 > ku\ ;
+酓 > en\ ;
+酈 > ri\ ;
+鄱 > ha\ ;
+鄢 > en\ ;
+鄠 > ko\ ;
+鄜 > hu\ ;
+鄖 > un\ ;
+鄈 > ki\ ;
+鄆 > un\ ;
+鄅 > gu\ ;
+郿 > bi\ ;
+郾 > en\ ;
+郶 > bu\ ;
+郫 > hi\ ;
+郢 > ei\ ;
+郛 > fu\ ;
+郙 > hu\ ;
+邳 > hi\ ;
+邐 > ri\ ;
+邏 > ra\ ;
+邇 > ji\ ;
+遡 > so\ ;
+遐 > ka\ ;
+逾 > yu\ ;
+逺 > en\ ;
+逵 > ki\ ;
+逘 > gi\ ;
+逋 > ho\ ;
+迱 > ta\ ;
+迬 > ou\ ;
+迩 > ji\ ;
+迕 > go\ ;
+迓 > ga\ ;
+运 > un\ ;
+迋 > ou\ ;
+辤 > ji\ ;
+辝 > ji\ ;
+轤 > ro\ ;
+轡 > hi\ ;
+轝 > yo\ ;
+轜 > ji\ ;
+轅 > en\ ;
+轀 > on\ ;
+輸 > yu\ ;
+輠 > ka\ ;
+輔 > fu\ ;
+輅 > ro\ ;
+輀 > ji\ ;
+軻 > ka\ ;
+軱 > ko\ ;
+軮 > ou\ ;
+軌 > ki\ ;
+軃 > ta\ ;
+軀 > ku\ ;
+躲 > ta\ ;
+躱 > ta\ ;
+躯 > ku\ ;
+躛 > ei\ ;
+躗 > ei\ ;
+蹞 > ki\ ;
+蹉 > sa\ ;
+踽 > ku\ ;
+踷 > ta\ ;
+踦 > ki\ ;
+踠 > en\ ;
+踑 > ki\ ;
+跿 > to\ ;
+跽 > ki\ ;
+跺 > ta\ ;
+跬 > ki\ ;
+跨 > ko\ ;
+跥 > ta\ ;
+跗 > fu\ ;
+跔 > ku\ ;
+跏 > ka\ ;
+跎 > ta\ ;
+跇 > ei\ ;
+跂 > ki\ ;
+趺 > fu\ ;
+赮 > ka\ ;
+赟 > in\ ;
+赑 > hi\ ;
+贏 > ei\ ;
+贇 > in\ ;
+賻 > fu\ ;
+賦 > fu\ ;
+賏 > ei\ ;
+賈 > ko\ ;
+賂 > ro\ ;
+賁 > hi\ ;
+賀 > ga\ ;
+貳 > ni\ ;
+貮 > ni\ ;
+貔 > hi\ ;
+貐 > yu\ ;
+貍 > ri\ ;
+豾 > hi\ ;
+豼 > hi\ ;
+豭 > ka\ ;
+豨 > ki\ ;
+豝 > ha\ ;
+豙 > gi\ ;
+豗 > ka\ ;
+豔 > en\ ;
+豓 > en\ ;
+豎 > ju\ ;
+豌 > en\ ;
+豈 > ki\ ;
+谺 > ka\ ;
+讔 > in\ ;
+讏 > ei\ ;
+讌 > en\ ;
+讆 > ei\ ;
+讄 > ru\ ;
+譭 > ki\ ;
+譜 > fu\ ;
+譒 > ha\ ;
+譏 > ki\ ;
+譌 > ka\ ;
+譆 > ki\ ;
+譃 > ku\ ;
+譁 > ka\ ;
+謼 > ko\ ;
+謳 > ou\ ;
+謨 > bo\ ;
+謌 > ka\ ;
+諳 > an\ ;
+諱 > ki\ ;
+諭 > yu\ ;
+諛 > yu\ ;
+諆 > ki\ ;
+誹 > hi\ ;
+誧 > ho\ ;
+誣 > fu\ ;
+誒 > ki\ ;
+誐 > ga\ ;
+誋 > ki\ ;
+誀 > ji\ ;
+詭 > ki\ ;
+詫 > ta\ ;
+詡 > ku\ ;
+詠 > ei\ ;
+詛 > so\ ;
+詖 > hi\ ;
+詑 > ta\ ;
+詐 > sa\ ;
+詍 > ei\ ;
+詈 > ri\ ;
+詁 > ko\ ;
+訶 > ka\ ;
+訯 > sa\ ;
+訏 > ku\ ;
+訃 > fu\ ;
+觭 > ki\ ;
+觚 > ko\ ;
+觕 > so\ ;
+覼 > ra\ ;
+覶 > ra\ ;
+覰 > so\ ;
+覬 > ki\ ;
+覩 > to\ ;
+覦 > yu\ ;
+覙 > ra\ ;
+規 > ki\ ;
+覊 > ki\ ;
+覉 > ki\ ;
+覇 > ha\ ;
+襣 > hi\ ;
+褵 > ri\ ;
+褲 > ko\ ;
+褨 > sa\ ;
+褕 > yu\ ;
+裹 > ka\ ;
+裷 > en\ ;
+裨 > hi\ ;
+裟 > sa\ ;
+裔 > ei\ ;
+裀 > in\ ;
+袽 > jo\ ;
+袮 > ne\ ;
+袙 > ha\ ;
+袈 > ka\ ;
+袁 > en\ ;
+衹 > ki\ ;
+衢 > ku\ ;
+衚 > ko\ ;
+衍 > en\ ;
+衈 > ji\ ;
+蠹 > to\ ;
+蠱 > ko\ ;
+蠧 > to\ ;
+蠕 > da\ ;
+蠑 > ei\ ;
+蠃 > ra\ ;
+蟫 > in\ ;
+蟣 > ki\ ;
+蟢 > ki\ ;
+螾 > in\ ;
+螞 > ba\ ;
+螘 > gi\ ;
+蝸 > ka\ ;
+蝴 > ko\ ;
+蝯 > en\ ;
+蝝 > en\ ;
+蝘 > en\ ;
+蝓 > yu\ ;
+蝌 > ka\ ;
+蜿 > en\ ;
+蜾 > ka\ ;
+蜱 > hi\ ;
+蜞 > ki\ ;
+蜚 > hi\ ;
+蜒 > en\ ;
+蜎 > en\ ;
+蜊 > ri\ ;
+蜉 > fu\ ;
+蜈 > go\ ;
+蜅 > hu\ ;
+蛾 > ga\ ;
+蛄 > ko\ ;
+蚹 > hu\ ;
+蚵 > ka\ ;
+蚭 > ji\ ;
+蚨 > hu\ ;
+蚜 > ka\ ;
+蚚 > ki\ ;
+蚓 > in\ ;
+蚑 > ki\ ;
+蚍 > hi\ ;
+虺 > ki\ ;
+虧 > ki\ ;
+虝 > ko\ ;
+虘 > sa\ ;
+虖 > ko\ ;
+虍 > ko\ ;
+虂 > ro\ ;
+虁 > ki\ ;
+蘿 > ra\ ;
+蘼 > bi\ ;
+蘺 > ri\ ;
+蘶 > gi\ ;
+蘧 > ku\ ;
+蘡 > ou\ ;
+蘙 > ei\ ;
+蘓 > so\ ;
+蘑 > ma\ ;
+蘎 > ki\ ;
+蘊 > un\ ;
+蘄 > ki\ ;
+藻 > mo\ ;
+藹 > ai\ ;
+藴 > un\ ;
+藦 > ba\ ;
+薿 > gi\ ;
+薷 > ju\ ;
+薗 > en\ ;
+薆 > ai\ ;
+薀 > un\ ;
+蕷 > yo\ ;
+蕰 > un\ ;
+蕠 > jo\ ;
+蕜 > hi\ ;
+蕓 > un\ ;
+蔴 > ma\ ;
+蔬 > so\ ;
+蔫 > en\ ;
+蔢 > ha\ ;
+蓙 > za\ ;
+蓖 > hi\ ;
+蓏 > ra\ ;
+蓌 > sa\ ;
+蓊 > ou\ ;
+蒽 > on\ ;
+蒱 > ho\ ;
+蒩 > so\ ;
+蒞 > ri\ ;
+蒕 > un\ ;
+葭 > ka\ ;
+葫 > ko\ ;
+葩 > ha\ ;
+葊 > an\ ;
+葆 > ho\ ;
+萸 > yu\ ;
+萵 > wa\ ;
+萓 > gi\ ;
+萆 > hi\ ;
+萁 > ki\ ;
+菸 > en\ ;
+菴 > an\ ;
+菲 > hi\ ;
+菰 > ko\ ;
+菠 > ha\ ;
+菟 > to\ ;
+菏 > ka\ ;
+菇 > ko\ ;
+菀 > en\ ;
+莵 > to\ ;
+莪 > ga\ ;
+莩 > hu\ ;
+莝 > sa\ ;
+莚 > en\ ;
+莎 > sa\ ;
+莆 > hu\ ;
+莅 > ri\ ;
+荼 > to\ ;
+荰 > to\ ;
+荔 > ri\ ;
+荂 > ka\ ;
+茵 > in\ ;
+茲 > ji\ ;
+茰 > yu\ ;
+茣 > go\ ;
+茘 > ri\ ;
+苽 > ko\ ;
+苻 > fu\ ;
+苴 > so\ ;
+苤 > hi\ ;
+芾 > hi\ ;
+芺 > ou\ ;
+芰 > ki\ ;
+芭 > ba\ ;
+芪 > ki\ ;
+芦 > ro\ ;
+芙 > fu\ ;
+芘 > hi\ ;
+芔 > ki\ ;
+芑 > ki\ ;
+芈 > ba\ ;
+艷 > en\ ;
+艪 > ro\ ;
+艤 > gi\ ;
+艣 > ro\ ;
+艖 > sa\ ;
+艅 > yo\ ;
+艃 > ri\ ;
+舸 > ka\ ;
+舮 > ro\ ;
+舗 > ho\ ;
+舖 > ho\ ;
+舒 > jo\ ;
+舁 > yo\ ;
+臾 > yu\ ;
+臞 > ku\ ;
+臝 > ra\ ;
+臙 > en\ ;
+臂 > hi\ ;
+膴 > ko\ ;
+膩 > ji\ ;
+膆 > so\ ;
+腴 > yu\ ;
+腡 > ra\ ;
+腗 > hi\ ;
+腓 > hi\ ;
+脾 > hi\ ;
+脵 > ko\ ;
+脯 > ho\ ;
+脞 > sa\ ;
+脜 > ju\ ;
+胹 > ji\ ;
+胯 > ko\ ;
+胭 > in\ ;
+胙 > so\ ;
+胕 > hu\ ;
+胍 > ko\ ;
+胊 > ku\ ;
+肹 > hi\ ;
+肞 > sa\ ;
+肚 > to\ ;
+聭 > ki\ ;
+耺 > un\ ;
+耶 > ya\ ;
+耡 > jo\ ;
+耞 > ka\ ;
+耙 > ha\ ;
+耘 > un\ ;
+耏 > ji\ ;
+耍 > sa\ ;
+而 > ji\ ;
+耆 > ki\ ;
+翬 > ki\ ;
+翡 > hi\ ;
+羲 > gi\ ;
+羭 > yu\ ;
+羖 > ko\ ;
+羋 > ba\ ;
+羈 > ki\ ;
+羇 > ki\ ;
+羆 > hi\ ;
+罷 > hi\ ;
+罨 > an\ ;
+罦 > hu\ ;
+罟 > ko\ ;
+罛 > ro\ ;
+罘 > fu\ ;
+罏 > ro\ ;
+罌 > ou\ ;
+罃 > ou\ ;
+缻 > fu\ ;
+纓 > ei\ ;
+纑 > ro\ ;
+繧 > un\ ;
+繥 > ki\ ;
+繄 > ei\ ;
+縻 > bi\ ;
+縷 > ru\ ;
+縯 > en\ ;
+縭 > ri\ ;
+縜 > in\ ;
+縕 > un\ ;
+縊 > ei\ ;
+縈 > ei\ ;
+縀 > ka\ ;
+緣 > en\ ;
+緋 > hi\ ;
+綬 > ju\ ;
+綦 > ki\ ;
+綞 > ta\ ;
+綖 > en\ ;
+絮 > jo\ ;
+絪 > in\ ;
+絥 > hi\ ;
+絝 > ku\ ;
+絇 > ku\ ;
+紽 > ta\ ;
+紦 > ha\ ;
+紜 > un\ ;
+紗 > sa\ ;
+紕 > hi\ ;
+糯 > da\ ;
+糢 > bo\ ;
+糜 > bi\ ;
+粿 > ka\ ;
+粫 > ji\ ;
+粐 > ro\ ;
+粏 > ta\ ;
+粆 > sa\ ;
+粃 > hi\ ;
+籹 > jo\ ;
+籲 > yu\ ;
+籮 > ra\ ;
+籬 > ri\ ;
+籝 > ei\ ;
+籚 > ro\ ;
+簸 > ha\ ;
+簬 > ro\ ;
+簣 > ki\ ;
+簠 > hu\ ;
+簔 > sa\ ;
+簑 > sa\ ;
+簋 > ki\ ;
+簄 > ko\ ;
+簂 > ke\ ;
+篶 > en\ ;
+篚 > hi\ ;
+篔 > un\ ;
+箶 > ko\ ;
+箥 > ha\ ;
+箛 > ko\ ;
+箕 > ki\ ;
+箎 > ko\ ;
+筠 > in\ ;
+筎 > jo\ ;
+笴 > ka\ ;
+笳 > ka\ ;
+笯 > do\ ;
+笟 > ko\ ;
+笆 > ha\ ;
+竬 > ku\ ;
+竪 > ju\ ;
+竩 > gi\ ;
+竒 > ki\ ;
+窹 > go\ ;
+窳 > wa\ ;
+窬 > yu\ ;
+窪 > wa\ ;
+窩 > ka\ ;
+窠 > ka\ ;
+窊 > wa\ ;
+穩 > on\ ;
+穥 > yo\ ;
+穢 > ai\ ;
+穖 > ki\ ;
+穎 > ei\ ;
+穌 > so\ ;
+稳 > on\ ;
+稞 > ka\ ;
+稘 > ki\ ;
+稌 > to\ ;
+稃 > hu\ ;
+秧 > ou\ ;
+秠 > hi\ ;
+租 > so\ ;
+秕 > hi\ ;
+禾 > ka\ ;
+禨 > ki\ ;
+禧 > ki\ ;
+禡 > ba\ ;
+禜 > ei\ ;
+禑 > gu\ ;
+禍 > ka\ ;
+禋 > in\ ;
+祻 > ko\ ;
+祺 > ki\ ;
+祜 > ko\ ;
+祚 > so\ ;
+祙 > mi\ ;
+祔 > hu\ ;
+祇 > ki\ ;
+祁 > ki\ ;
+礠 > ji\ ;
+礜 > yo\ ;
+礒 > gi\ ;
+磯 > ki\ ;
+磤 > in\ ;
+磠 > ro\ ;
+磒 > in\ ;
+磋 > sa\ ;
+磁 > ji\ ;
+碼 > ba\ ;
+碬 > ka\ ;
+碤 > ei\ ;
+碕 > ki\ ;
+碔 > bu\ ;
+碆 > ha\ ;
+碁 > go\ ;
+硪 > gi\ ;
+砵 > ou\ ;
+砮 > do\ ;
+砣 > ta\ ;
+砢 > ra\ ;
+砒 > hi\ ;
+砑 > ga\ ;
+砆 > hu\ ;
+矬 > sa\ ;
+矩 > ku\ ;
+矑 > ro\ ;
+瞿 > ku\ ;
+瞽 > ko\ ;
+瞹 > ai\ ;
+瞶 > ki\ ;
+瞖 > ei\ ;
+瞆 > ki\ ;
+睿 > ei\ ;
+睹 > to\ ;
+睱 > ka\ ;
+睢 > ki\ ;
+睎 > ki\ ;
+睊 > en\ ;
+睂 > bi\ ;
+眭 > ki\ ;
+眗 > ku\ ;
+盱 > ku\ ;
+盬 > ko\ ;
+盧 > ro\ ;
+盦 > ou\ ;
+盙 > fu\ ;
+盎 > ou\ ;
+盉 > ka\ ;
+盈 > ei\ ;
+盁 > ei\ ;
+皷 > ko\ ;
+皧 > ai\ ;
+皤 > ha\ ;
+皈 > ki\ ;
+癯 > ku\ ;
+癮 > in\ ;
+癭 > ei\ ;
+癒 > yu\ ;
+癊 > in\ ;
+瘸 > ka\ ;
+瘥 > sa\ ;
+瘟 > on\ ;
+瘞 > ei\ ;
+瘖 > in\ ;
+瘕 > ka\ ;
+瘏 > to\ ;
+瘉 > yu\ ;
+瘀 > yo\ ;
+痼 > ko\ ;
+痹 > hi\ ;
+痲 > ma\ ;
+痱 > hi\ ;
+痧 > sa\ ;
+痤 > sa\ ;
+痢 > ri\ ;
+痡 > ho\ ;
+痞 > hi\ ;
+痔 > ji\ ;
+痄 > sa\ ;
+痂 > ka\ ;
+痀 > ku\ ;
+疿 > hi\ ;
+疤 > ha\ ;
+疜 > ka\ ;
+疕 > hi\ ;
+疏 > so\ ;
+畿 > ki\ ;
+畸 > ki\ ;
+畲 > yo\ ;
+畭 > yo\ ;
+畬 > yo\ ;
+畝 > se\ ;
+畒 > ho\ ;
+畉 > fu\ ;
+畇 > in\ ;
+畆 > ho\ ;
+畀 > hi\ ;
+甫 > ho\ ;
+甖 > ou\ ;
+甒 > bu\ ;
+甌 > ou\ ;
+瓯 > ou\ ;
+瓮 > ou\ ;
+瓠 > ko\ ;
+瓔 > ei\ ;
+瓐 > ro\ ;
+璽 > ji\ ;
+璵 > yo\ ;
+璦 > ai\ ;
+璣 > ki\ ;
+璟 > ei\ ;
+璑 > bu\ ;
+璐 > ro\ ;
+璃 > ri\ ;
+瑳 > sa\ ;
+瑪 > ba\ ;
+瑩 > ei\ ;
+瑣 > sa\ ;
+瑜 > yu\ ;
+瑛 > ei\ ;
+瑚 > ko\ ;
+瑗 > en\ ;
+琶 > ha\ ;
+琵 > bi\ ;
+琰 > en\ ;
+琬 > en\ ;
+琪 > ki\ ;
+琦 > ki\ ;
+琥 > ko\ ;
+琑 > sa\ ;
+琊 > ya\ ;
+珸 > go\ ;
+珷 > bu\ ;
+珴 > ga\ ;
+珱 > ei\ ;
+珥 > ji\ ;
+珝 > ku\ ;
+珂 > ka\ ;
+玻 > ha\ ;
+玞 > hu\ ;
+玘 > ki\ ;
+玆 > ji\ ;
+玀 > ra\ ;
+獼 > bi\ ;
+獹 > ro\ ;
+猨 > en\ ;
+猧 > ka\ ;
+猤 > ki\ ;
+猢 > ko\ ;
+猓 > ka\ ;
+猒 > en\ ;
+猇 > ou\ ;
+狳 > yo\ ;
+狕 > ou\ ;
+狒 > hi\ ;
+狉 > hi\ ;
+狁 > in\ ;
+犧 > gi\ ;
+犓 > su\ ;
+犂 > ri\ ;
+犁 > ri\ ;
+牾 > go\ ;
+牱 > ka\ ;
+牯 > ko\ ;
+牫 > ka\ ;
+牠 > ta\ ;
+牁 > ka\ ;
+爾 > ji\ ;
+爹 > ta\ ;
+爸 > ha\ ;
+爰 > en\ ;
+爬 > ha\ ;
+爓 > en\ ;
+燬 > ki\ ;
+燄 > en\ ;
+熺 > ki\ ;
+熹 > ki\ ;
+熰 > ou\ ;
+熙 > ki\ ;
+熈 > ki\ ;
+熅 > un\ ;
+煦 > ku\ ;
+煕 > ki\ ;
+煐 > ei\ ;
+煇 > ki\ ;
+煆 > ka\ ;
+焸 > ko\ ;
+焱 > en\ ;
+焰 > en\ ;
+焉 > en\ ;
+烓 > ei\ ;
+炬 > ko\ ;
+炉 > ro\ ;
+炁 > ki\ ;
+灩 > en\ ;
+灧 > en\ ;
+灞 > ha\ ;
+灕 > ri\ ;
+灔 > en\ ;
+灎 > en\ ;
+灈 > ku\ ;
+瀴 > ei\ ;
+瀰 > bi\ ;
+瀯 > ei\ ;
+瀠 > ei\ ;
+瀛 > ei\ ;
+瀘 > ro\ ;
+瀇 > ou\ ;
+瀅 > ei\ ;
+濞 > hi\ ;
+濚 > ei\ ;
+澦 > yo\ ;
+澐 > un\ ;
+潽 > ho\ ;
+潞 > ro\ ;
+潙 > ki\ ;
+潁 > ei\ ;
+漦 > gi\ ;
+漚 > ou\ ;
+漓 > ri\ ;
+漊 > ru\ ;
+滹 > ko\ ;
+滸 > ko\ ;
+滷 > ro\ ;
+滬 > ko\ ;
+滏 > hu\ ;
+滋 > ji\ ;
+滊 > ki\ ;
+滃 > ou\ ;
+溳 > un\ ;
+溫 > on\ ;
+溦 > mi\ ;
+溥 > ho\ ;
+溠 > sa\ ;
+溈 > ki\ ;
+湮 > in\ ;
+湄 > bi\ ;
+渼 > bi\ ;
+渶 > ei\ ;
+渮 > ka\ ;
+渣 > sa\ ;
+渝 > yu\ ;
+渕 > en\ ;
+渊 > en\ ;
+渄 > hi\ ;
+淤 > yo\ ;
+淠 > hi\ ;
+淝 > hi\ ;
+淇 > ki\ ;
+涹 > wa\ ;
+涴 > en\ ;
+涂 > to\ ;
+浯 > go\ ;
+洼 > ai\ ;
+洹 > en\ ;
+洳 > jo\ ;
+洱 > ji\ ;
+洏 > ji\ ;
+洎 > ki\ ;
+洇 > in\ ;
+泱 > ou\ ;
+泝 > so\ ;
+泓 > ou\ ;
+泒 > ko\ ;
+沽 > ko\ ;
+沲 > ta\ ;
+沱 > ta\ ;
+沘 > hi\ ;
+沍 > go\ ;
+沇 > en\ ;
+沂 > ki\ ;
+汻 > ko\ ;
+汪 > ou\ ;
+汊 > sa\ ;
+氿 > ki\ ;
+氳 > un\ ;
+氲 > un\ ;
+氨 > an\ ;
+氤 > in\ ;
+气 > ki\ ;
+氍 > ku\ ;
+氂 > ri\ ;
+毹 > yu\ ;
+毦 > ji\ ;
+毖 > hi\ ;
+毋 > bu\ ;
+毅 > ki\ ;
+毁 > ki\ ;
+毀 > ki\ ;
+殹 > ei\ ;
+殷 > in\ ;
+殴 > ou\ ;
+殬 > to\ ;
+殪 > ei\ ;
+殞 > in\ ;
+殂 > so\ ;
+歧 > ki\ ;
+步 > ho\ ;
+歖 > ki\ ;
+欸 > ai\ ;
+欨 > ku\ ;
+欧 > ou\ ;
+欤 > yo\ ;
+欛 > ha\ ;
+欏 > ra\ ;
+櫽 > in\ ;
+櫲 > yo\ ;
+櫨 > ro\ ;
+櫞 > en\ ;
+櫓 > ro\ ;
+櫃 > ki\ ;
+檿 > en\ ;
+檽 > ji\ ;
+檼 > in\ ;
+檱 > ki\ ;
+檥 > gi\ ;
+檟 > ka\ ;
+檛 > ta\ ;
+檃 > in\ ;
+橱 > zu\ ;
+橫 > ou\ ;
+橢 > da\ ;
+橒 > un\ ;
+橆 > bu\ ;
+橅 > bo\ ;
+樻 > ki\ ;
+樲 > ji\ ;
+樝 > sa\ ;
+槻 > ki\ ;
+槥 > ei\ ;
+槎 > sa\ ;
+榿 > ki\ ;
+榮 > ei\ ;
+榨 > sa\ ;
+榡 > so\ ;
+榘 > ku\ ;
+榑 > fu\ ;
+榆 > yu\ ;
+楹 > ei\ ;
+楰 > yu\ ;
+楣 > bi\ ;
+楡 > yu\ ;
+楜 > ko\ ;
+楛 > ko\ ;
+楚 > so\ ;
+楕 > da\ ;
+楂 > sa\ ;
+椻 > en\ ;
+椵 > ka\ ;
+椰 > ya\ ;
+棪 > en\ ;
+棝 > ko\ ;
+棜 > yo\ ;
+棐 > hi\ ;
+棋 > ki\ ;
+棊 > ki\ ;
+梶 > bi\ ;
+梳 > so\ ;
+梭 > sa\ ;
+梩 > ri\ ;
+梧 > go\ ;
+梦 > mu\ ;
+梛 > da\ ;
+梎 > ou\ ;
+桴 > fu\ ;
+桫 > sa\ ;
+桗 > ta\ ;
+桍 > ko\ ;
+栭 > ji\ ;
+栩 > ku\ ;
+栧 > ei\ ;
+柲 > hi\ ;
+柰 > na\ ;
+柯 > ka\ ;
+柧 > ko\ ;
+查 > sa\ ;
+柤 > sa\ ;
+柡 > ei\ ;
+柎 > fu\ ;
+柅 > ji\ ;
+柁 > ta\ ;
+柀 > hi\ ;
+枻 > ei\ ;
+枸 > ku\ ;
+枳 > ki\ ;
+枦 > ro\ ;
+枙 > ga\ ;
+枑 > ko\ ;
+枎 > hu\ ;
+枉 > ou\ ;
+枇 > hi\ ;
+杷 > ha\ ;
+杞 > ko\ ;
+杜 > do\ ;
+杈 > sa\ ;
+朶 > da\ ;
+朵 > da\ ;
+朠 > ei\ ;
+朞 > ki\ ;
+朏 > hi\ ;
+朇 > hi\ ;
+曽 > zo\ ;
+曵 > ei\ ;
+曱 > ou\ ;
+曦 > gi\ ;
+曖 > ai\ ;
+曁 > ki\ ;
+曀 > ei\ ;
+暿 > ki\ ;
+暨 > ki\ ;
+暜 > fu\ ;
+暛 > sa\ ;
+暎 > ei\ ;
+暉 > ki\ ;
+暈 > un\ ;
+暃 > hi\ ;
+暀 > ou\ ;
+晼 > en\ ;
+晻 > an\ ;
+晷 > ki\ ;
+晤 > go\ ;
+晡 > ho\ ;
+晞 > ki\ ;
+晏 > an\ ;
+昹 > ai\ ;
+昷 > on\ ;
+昫 > ku\ ;
+昖 > en\ ;
+昈 > ko\ ;
+昀 > in\ ;
+旿 > go\ ;
+旹 > ji\ ;
+旴 > ku\ ;
+旣 > ki\ ;
+旡 > ki\ ;
+无 > bu\ ;
+旟 > yo\ ;
+旎 > ji\ ;
+旉 > fu\ ;
+旂 > ki\ ;
+斝 > ka\ ;
+敺 > ku\ ;
+敧 > ki\ ;
+敘 > jo\ ;
+敍 > jo\ ;
+敉 > bi\ ;
+攱 > ki\ ;
+攰 > ki\ ;
+攞 > ra\ ;
+攖 > ei\ ;
+擵 > ma\ ;
+擩 > ju\ ;
+撾 > ta\ ;
+播 > ha\ ;
+撝 > ki\ ;
+摸 > mo\ ;
+摣 > sa\ ;
+搽 > ta\ ;
+搵 > on\ ;
+搙 > nu\ ;
+搓 > sa\ ;
+揸 > sa\ ;
+揶 > ya\ ;
+援 > en\ ;
+揮 > ki\ ;
+揜 > en\ ;
+揆 > ki\ ;
+揄 > yu\ ;
+掾 > en\ ;
+掞 > en\ ;
+掎 > ki\ ;
+捼 > da\ ;
+捬 > hu\ ;
+捓 > se\ ;
+捐 > en\ ;
+捂 > go\ ;
+挼 > da\ ;
+挫 > za\ ;
+挪 > da\ ;
+挧 > ku\ ;
+挓 > ta\ ;
+挐 > da\ ;
+按 > an\ ;
+拿 > da\ ;
+拽 > ei\ ;
+拗 > ou\ ;
+拖 > ta\ ;
+拕 > ta\ ;
+拏 > da\ ;
+拊 > fu\ ;
+拇 > bo\ ;
+抷 > hi\ ;
+抳 > ji\ ;
+抎 > un\ ;
+把 > wa\ ;
+找 > ka\ ;
+扯 > ta\ ;
+扠 > sa\ ;
+扈 > ko\ ;
+戽 > ko\ ;
+户 > ko\ ;
+戶 > ko\ ;
+戱 > gi\ ;
+戣 > ki\ ;
+戓 > ka\ ;
+戍 > ju\ ;
+戊 > bo\ ;
+懯 > fu\ ;
+懧 > da\ ;
+懦 > da\ ;
+懡 > ba\ ;
+懕 > en\ ;
+懊 > ou\ ;
+憮 > bu\ ;
+憜 > ta\ ;
+憙 > ki\ ;
+憘 > ki\ ;
+慍 > un\ ;
+慈 > ji\ ;
+愾 > ki\ ;
+愬 > so\ ;
+愫 > so\ ;
+愪 > un\ ;
+愧 > ki\ ;
+愠 > un\ ;
+愔 > in\ ;
+惲 > un\ ;
+惰 > da\ ;
+惧 > ku\ ;
+惢 > sa\ ;
+惎 > ki\ ;
+惈 > ka\ ;
+悱 > hi\ ;
+您 > ji\ ;
+悧 > ri\ ;
+悞 > go\ ;
+悕 > ki\ ;
+悑 > ho\ ;
+悆 > yo\ ;
+悂 > hi\ ;
+悁 > en\ ;
+恗 > ko\ ;
+恕 > jo\ ;
+恑 > ki\ ;
+恃 > ji\ ;
+恁 > in\ ;
+怩 > ji\ ;
+怤 > hu\ ;
+怙 > ko\ ;
+怘 > ko\ ;
+怕 > ha\ ;
+忯 > ki\ ;
+忬 > yo\ ;
+忤 > go\ ;
+忢 > go\ ;
+徽 > ki\ ;
+徍 > ai\ ;
+徂 > so\ ;
+彺 > ou\ ;
+彵 > ta\ ;
+彌 > bi\ ;
+弭 > bi\ ;
+弩 > do\ ;
+弧 > ko\ ;
+弣 > hu\ ;
+弝 > ha\ ;
+弖 > te\ ;
+弍 > ni\ ;
+弇 > en\ ;
+弃 > ki\ ;
+廴 > in\ ;
+廮 > ei\ ;
+廡 > bu\ ;
+廜 > to\ ;
+廚 > zu\ ;
+廕 > in\ ;
+廈 > ka\ ;
+庾 > yu\ ;
+庳 > hi\ ;
+庯 > ho\ ;
+庮 > iu\ ;
+庪 > ki\ ;
+庌 > ga\ ;
+庋 > ki\ ;
+庀 > hi\ ;
+幠 > ko\ ;
+幑 > ki\ ;
+幏 > ka\ ;
+幁 > su\ ;
+帾 > to\ ;
+帔 > hi\ ;
+帑 > do\ ;
+帍 > ko\ ;
+帊 > ha\ ;
+帆 > ho\ ;
+巳 > mi\ ;
+巙 > ki\ ;
+巍 > gi\ ;
+巋 > ki\ ;
+巇 > ki\ ;
+嶷 > gi\ ;
+嶴 > au\ ;
+嶬 > gi\ ;
+嶞 > ta\ ;
+嶓 > ha\ ;
+嶇 > ku\ ;
+嶁 > ru\ ;
+嶀 > to\ ;
+嵳 > sa\ ;
+嵯 > sa\ ;
+嵡 > ou\ ;
+嵟 > ki\ ;
+嵞 > to\ ;
+嵜 > ki\ ;
+嵖 > sa\ ;
+嵋 > bi\ ;
+崳 > yu\ ;
+崦 > en\ ;
+崋 > ka\ ;
+峹 > to\ ;
+峲 > ri\ ;
+峬 > ho\ ;
+峫 > ya\ ;
+峩 > ga\ ;
+峨 > ga\ ;
+峞 > ki\ ;
+峛 > ri\ ;
+峙 > ji\ ;
+峗 > gi\ ;
+峖 > an\ ;
+峔 > bo\ ;
+峏 > ji\ ;
+峊 > hu\ ;
+岻 > ji\ ;
+岵 > ko\ ;
+岴 > ku\ ;
+岯 > hi\ ;
+岮 > ta\ ;
+岨 > so\ ;
+岥 > ha\ ;
+岔 > sa\ ;
+岓 > ki\ ;
+岐 > ki\ ;
+岈 > ka\ ;
+岆 > eu\ ;
+屺 > ki\ ;
+屮 > sa\ ;
+屭 > ki\ ;
+屨 > ku\ ;
+屢 > ru\ ;
+屠 > to\ ;
+屄 > hi\ ;
+屃 > ki\ ;
+屁 > he\ ;
+尹 > in\ ;
+尯 > ki\ ;
+尮 > ta\ ;
+尫 > ou\ ;
+尪 > ou\ ;
+尩 > ou\ ;
+尣 > ou\ ;
+尢 > ou\ ;
+尔 > ji\ ;
+尓 > ji\ ;
+尒 > ji\ ;
+尃 > hu\ ;
+尀 > ha\ ;
+寲 > gi\ ;
+寤 > go\ ;
+寠 > ku\ ;
+寙 > yu\ ;
+寃 > en\ ;
+宱 > sa\ ;
+宐 > gi\ ;
+宎 > eu\ ;
+宄 > ki\ ;
+它 > ta\ ;
+孾 > ei\ ;
+孺 > ju\ ;
+孷 > ri\ ;
+孵 > fu\ ;
+孥 > do\ ;
+孚 > fu\ ;
+孋 > ri\ ;
+嬿 > en\ ;
+嬽 > en\ ;
+嬷 > ba\ ;
+嬴 > ei\ ;
+嬰 > ei\ ;
+嬮 > en\ ;
+嬤 > ba\ ;
+嬡 > ai\ ;
+嬔 > hu\ ;
+嬍 > bi\ ;
+嬀 > ki\ ;
+嫷 > ta\ ;
+嫵 > bu\ ;
+嫴 > ko\ ;
+嫮 > ko\ ;
+嫭 > ko\ ;
+嫫 > bo\ ;
+嫣 > en\ ;
+嫢 > ki\ ;
+嫠 > ri\ ;
+嫛 > ei\ ;
+嫗 > ou\ ;
+嫕 > ei\ ;
+嫊 > so\ ;
+媿 > ki\ ;
+媽 > bo\ ;
+媺 > bi\ ;
+媴 > en\ ;
+媱 > eu\ ;
+媬 > ho\ ;
+媪 > ou\ ;
+媩 > ko\ ;
+媠 > ta\ ;
+媖 > ei\ ;
+媕 > en\ ;
+媐 > ki\ ;
+媎 > so\ ;
+媄 > bi\ ;
+婽 > ka\ ;
+婺 > bu\ ;
+婬 > in\ ;
+婣 > in\ ;
+婟 > ko\ ;
+婓 > hi\ ;
+婐 > wa\ ;
+婍 > ki\ ;
+娸 > ki\ ;
+娰 > ji\ ;
+娯 > go\ ;
+娭 > ki\ ;
+娬 > bu\ ;
+娪 > go\ ;
+娥 > ga\ ;
+娜 > da\ ;
+娛 > go\ ;
+娓 > bi\ ;
+娒 > bo\ ;
+娌 > ri\ ;
+娄 > ru\ ;
+姽 > ki\ ;
+姻 > in\ ;
+姹 > ta\ ;
+姶 > ou\ ;
+姲 > an\ ;
+姱 > ka\ ;
+姬 > ki\ ;
+姥 > bo\ ;
+姝 > su\ ;
+姎 > au\ ;
+姇 > hu\ ;
+姆 > bo\ ;
+姁 > ku\ ;
+姀 > ka\ ;
+妼 > hi\ ;
+妴 > en\ ;
+妮 > ji\ ;
+妥 > da\ ;
+妤 > yo\ ;
+妣 > hi\ ;
+妟 > an\ ;
+妘 > un\ ;
+妒 > to\ ;
+妋 > fu\ ;
+妃 > hi\ ;
+奼 > ta\ ;
+奰 > hi\ ;
+奫 > in\ ;
+奜 > hi\ ;
+奓 > ta\ ;
+奄 > en\ ;
+夿 > ha\ ;
+夸 > ko\ ;
+夶 > hi\ ;
+夵 > en\ ;
+夥 > ka\ ;
+夤 > in\ ;
+夡 > ki\ ;
+夛 > ta\ ;
+夗 > en\ ;
+夔 > ki\ ;
+夓 > ka\ ;
+夎 > sa\ ;
+夃 > ko\ ;
+壽 > ju\ ;
+壺 > ko\ ;
+壩 > ha\ ;
+壡 > ei\ ;
+壛 > en\ ;
+壚 > ro\ ;
+壒 > ai\ ;
+壈 > on\ ;
+壄 > ya\ ;
+墺 > ou\ ;
+墲 > bo\ ;
+墯 > da\ ;
+墍 > ki\ ;
+塸 > ou\ ;
+塧 > ai\ ;
+塕 > ou\ ;
+塑 > so\ ;
+塐 > so\ ;
+塋 > ei\ ;
+塈 > ki\ ;
+堸 > hu\ ;
+堷 > an\ ;
+堶 > ku\ ;
+堳 > bi\ ;
+堰 > en\ ;
+堬 > yu\ ;
+堣 > gu\ ;
+堝 > ka\ ;
+堙 > in\ ;
+堍 > to\ ;
+堌 > ko\ ;
+堁 > ka\ ;
+埼 > ki\ ;
+埵 > ta\ ;
+埯 > en\ ;
+埧 > ku\ ;
+埤 > hi\ ;
+埠 > fu\ ;
+埔 > ho\ ;
+垺 > hu\ ;
+垪 > ha\ ;
+垞 > ta\ ;
+垝 > ki\ ;
+垜 > da\ ;
+垛 > da\ ;
+垀 > ko\ ;
+坿 > fu\ ;
+坷 > ka\ ;
+坳 > au\ ;
+坱 > au\ ;
+坯 > hi\ ;
+坬 > ka\ ;
+坡 > ha\ ;
+坒 > hi\ ;
+圻 > ki\ ;
+圮 > hi\ ;
+圫 > au\ ;
+圗 > to\ ;
+圔 > ou\ ;
+圑 > ho\ ;
+圎 > en\ ;
+囦 > en\ ;
+囙 > in\ ;
+囎 > so\ ;
+囌 > so\ ;
+囉 > ra\ ;
+嚶 > ou\ ;
+嚲 > ta\ ;
+嚱 > ki\ ;
+嚭 > hi\ ;
+嚧 > ro\ ;
+嚥 > en\ ;
+嚟 > ri\ ;
+嚜 > bi\ ;
+嚘 > iu\ ;
+嚕 > ro\ ;
+嚊 > hi\ ;
+嚅 > ju\ ;
+噾 > in\ ;
+噳 > gu\ ;
+噯 > ai\ ;
+噮 > en\ ;
+噫 > aa\ ;
+噕 > ki\ ;
+噐 > ki\ ;
+噅 > ki\ ;
+嘻 > ki\ ;
+嘳 > ki\ ;
+嘰 > ki\ ;
+嘟 > to\ ;
+嘜 > ba\ ;
+嘛 > ma\ ;
+嘙 > ha\ ;
+嘑 > ko\ ;
+嘏 > ka\ ;
+嘉 > ka\ ;
+嗩 > sa\ ;
+嗦 > sa\ ;
+嗏 > sa\ ;
+嗎 > ba\ ;
+嗉 > so\ ;
+嗄 > sa\ ;
+嗂 > eu\ ;
+喻 > yu\ ;
+営 > ei\ ;
+喳 > sa\ ;
+喱 > ri\ ;
+喩 > yu\ ;
+喥 > to\ ;
+喣 > ku\ ;
+喟 > ki\ ;
+喓 > eu\ ;
+喑 > in\ ;
+喎 > ka\ ;
+喂 > ki\ ;
+啤 > hi\ ;
+啝 > ka\ ;
+啚 > hi\ ;
+啘 > en\ ;
+啎 > go\ ;
+唹 > yo\ ;
+唷 > yo\ ;
+唵 > an\ ;
+唲 > ji\ ;
+唭 > ki\ ;
+唬 > ka\ ;
+唔 > go\ ;
+唏 > ki\ ;
+唎 > ri\ ;
+唋 > to\ ;
+唈 > ou\ ;
+唆 > sa\ ;
+唀 > iu\ ;
+哿 > ka\ ;
+哺 > ho\ ;
+哶 > ba\ ;
+哬 > ka\ ;
+哪 > da\ ;
+哧 > ka\ ;
+哦 > ga\ ;
+哥 > ka\ ;
+哉 > ya\ ;
+哇 > ai\ ;
+咼 > ka\ ;
+咻 > ku\ ;
+咪 > bi\ ;
+咩 > bi\ ;
+咥 > ki\ ;
+咤 > ta\ ;
+咡 > ji\ ;
+咜 > ta\ ;
+咖 > ka\ ;
+咕 > ko\ ;
+咑 > da\ ;
+咐 > ho\ ;
+咏 > ei\ ;
+咊 > wa\ ;
+咉 > au\ ;
+咃 > ta\ ;
+咀 > so\ ;
+呿 > ka\ ;
+呸 > hi\ ;
+呶 > do\ ;
+呵 > ka\ ;
+呴 > ku\ ;
+呱 > ko\ ;
+呮 > ki\ ;
+呭 > ei\ ;
+呬 > ki\ ;
+呦 > iu\ ;
+呢 > ji\ ;
+呍 > un\ ;
+呋 > hu\ ;
+呀 > ga\ ;
+吽 > in\ ;
+吴 > go\ ;
+吳 > go\ ;
+吧 > ha\ ;
+吔 > se\ ;
+吓 > ka\ ;
+吒 > ta\ ;
+吁 > ku\ ;
+叹 > iu\ ;
+叵 > ha\ ;
+叧 > ka\ ;
+叡 > ei\ ;
+叚 > ka\ ;
+叆 > ai\ ;
+厴 > en\ ;
+厬 > ki\ ;
+厦 > ka\ ;
+厞 > hi\ ;
+厏 > sa\ ;
+厊 > ka\ ;
+卦 > ka\ ;
+卉 > ki\ ;
+區 > ku\ ;
+匽 > en\ ;
+匼 > an\ ;
+区 > ku\ ;
+匭 > ki\ ;
+匬 > yu\ ;
+匪 > hi\ ;
+匕 > hi\ ;
+匎 > ou\ ;
+匀 > in\ ;
+勻 > in\ ;
+勩 > ei\ ;
+募 > bo\ ;
+勜 > ou\ ;
+勚 > ei\ ;
+劸 > ai\ ;
+劬 > ku\ ;
+劙 > ri\ ;
+劘 > ba\ ;
+劓 > gi\ ;
+剺 > ri\ ;
+剮 > ka\ ;
+剦 > en\ ;
+剡 > en\ ;
+剞 > ki\ ;
+剘 > ki\ ;
+剕 > hi\ ;
+剉 > sa\ ;
+剆 > ra\ ;
+剁 > ta\ ;
+刵 > ji\ ;
+刴 > ta\ ;
+刳 > ko\ ;
+刕 > ri\ ;
+划 > ka\ ;
+刏 > ki\ ;
+刉 > ki\ ;
+凹 > ou\ ;
+几 > ki\ ;
+凞 > ki\ ;
+凒 > gi\ ;
+凐 > in\ ;
+凅 > ko\ ;
+冴 > go\ ;
+冱 > go\ ;
+冨 > fu\ ;
+冤 > en\ ;
+冞 > bi\ ;
+冝 > gi\ ;
+冘 > in\ ;
+冔 > ku\ ;
+冎 > ka\ ;
+冀 > ki\ ;
+兾 > ki\ ;
+兹 > ji\ ;
+兪 > yu\ ;
+兗 > en\ ;
+兔 > to\ ;
+兑 > da\ ;
+兌 > da\ ;
+允 > in\ ;
+儺 > na\ ;
+儸 > ra\ ;
+儞 > ji\ ;
+儛 > bu\ ;
+儗 > gi\ ;
+儒 > ju\ ;
+儍 > sa\ ;
+僾 > ai\ ;
+僱 > ko\ ;
+僟 > ki\ ;
+僛 > ki\ ;
+僖 > ki\ ;
+僃 > bi\ ;
+傿 > en\ ;
+傻 > sa\ ;
+傴 > ku\ ;
+傢 > ka\ ;
+傟 > au\ ;
+傞 > sa\ ;
+傜 > eu\ ;
+傌 > ba\ ;
+傊 > in\ ;
+傅 > fu\ ;
+傃 > so\ ;
+偹 > bi\ ;
+偧 > ta\ ;
+偤 > yu\ ;
+偣 > en\ ;
+偠 > eu\ ;
+偌 > ja\ ;
+偃 > en\ ;
+偀 > ei\ ;
+倻 > ya\ ;
+倵 > bu\ ;
+倮 > ra\ ;
+倠 > ki\ ;
+倛 > ki\ ;
+倇 > en\ ;
+俾 > hi\ ;
+俻 > bi\ ;
+俷 > hi\ ;
+俱 > ku\ ;
+俰 > ka\ ;
+俞 > yu\ ;
+俚 > ri\ ;
+俙 > ki\ ;
+俘 > fu\ ;
+俐 > ri\ ;
+俌 > fu\ ;
+俉 > go\ ;
+俁 > gu\ ;
+侳 > sa\ ;
+侢 > bu\ ;
+侞 > jo\ ;
+侕 > ji\ ;
+侒 > an\ ;
+侎 > bi\ ;
+侌 > in\ ;
+侉 > ka\ ;
+佹 > ki\ ;
+佴 > ji\ ;
+佳 > ka\ ;
+你 > ji\ ;
+佒 > au\ ;
+佈 > ho\ ;
+佁 > ai\ ;
+伾 > hi\ ;
+伲 > ji\ ;
+伱 > ji\ ;
+估 > ko\ ;
+伮 > do\ ;
+伙 > ka\ ;
+伖 > do\ ;
+伕 > hu\ ;
+伌 > ai\ ;
+伃 > yo\ ;
+仵 > ko\ ;
+仳 > hi\ ;
+仨 > sa\ ;
+仛 > ta\ ;
+仆 > fu\ ;
+仅 > hu\ ;
+亹 > bi\ ;
+亸 > ta\ ;
+亱 > ya\ ;
+亓 > ki\ ;
+亊 > ji\ ;
+乵 > en\ ;
+乜 > ba\ ;
+乚 > in\ ;
+乕 > ko\ ;
+乎 > ka\ ;
+么 > eu\ ;
+个 > ka\ ;
+丕 > hi\ ;
+丌 > ki\ ;
+丅 > ka\ ;
+帷 > i\ ;
+異 > i\ ;
+畏 > i\ ;
+尾 > o\ ;
+宇 > u\ ;
+謂 > i\ ;
+爲 > i\ ;
+威 > i\ ;
+委 > i\ ;
+圍 > i\ ;
+囲 > i\ ;
+嗚 > o\ ;
+江 > e\ ;
+汚 > o\ ;
+萎 > i\ ;
+医 > i\ ;
+椅 > i\ ;
+胃 > i\ ;
+偉 > i\ ;
+頤 > i\ ;
+依 > e\ ;
+伊 > i\ ;
+以 > i\ ;
+亞 > a\ ;
+阿 > a\ ;
+緒 > o\ ;
+於 > o\ ;
+維 > i\ ;
+絵 > e\ ;
+移 > i\ ;
+醫 > i\ ;
+慰 > i\ ;
+意 > i\ ;
+惡 > o\ ;
+遺 > i\ ;
+違 > i\ ;
+鷾 > i\ ;
+鷧 > i\ ;
+鵶 > a\ ;
+鵜 > u\ ;
+鰞 > o\ ;
+鰄 > i\ ;
+鮧 > i\ ;
+骬 > u\ ;
+骫 > i\ ;
+骪 > i\ ;
+饐 > i\ ;
+顊 > i\ ;
+頥 > i\ ;
+頉 > i\ ;
+韙 > i\ ;
+韑 > i\ ;
+韋 > i\ ;
+霨 > i\ ;
+雩 > u\ ;
+隖 > o\ ;
+闈 > i\ ;
+閼 > a\ ;
+铔 > a\ ;
+鐿 > i\ ;
+鐚 > a\ ;
+錏 > a\ ;
+銥 > i\ ;
+鉯 > i\ ;
+鈳 > a\ ;
+釪 > u\ ;
+酏 > i\ ;
+鄔 > o\ ;
+邘 > u\ ;
+逶 > i\ ;
+迻 > i\ ;
+迤 > i\ ;
+迆 > i\ ;
+迂 > u\ ;
+貽 > i\ ;
+貤 > i\ ;
+褘 > i\ ;
+袘 > i\ ;
+螱 > i\ ;
+螠 > i\ ;
+螐 > o\ ;
+螉 > o\ ;
+蜼 > i\ ;
+蜲 > i\ ;
+蛜 > i\ ;
+虶 > u\ ;
+蔿 > i\ ;
+葳 > i\ ;
+荽 > i\ ;
+荏 > e\ ;
+茡 > u\ ;
+苢 > i\ ;
+苡 > i\ ;
+芛 > i\ ;
+胰 > i\ ;
+肄 > i\ ;
+緯 > i\ ;
+緭 > i\ ;
+紆 > u\ ;
+簃 > i\ ;
+竽 > u\ ;
+禹 > u\ ;
+禕 > i\ ;
+磈 > i\ ;
+矣 > i\ ;
+盂 > u\ ;
+瘂 > a\ ;
+痿 > i\ ;
+痾 > a\ ;
+痏 > i\ ;
+痍 > i\ ;
+疴 > a\ ;
+瑦 > o\ ;
+瑋 > i\ ;
+瑀 > u\ ;
+珆 > i\ ;
+玗 > u\ ;
+猬 > i\ ;
+猗 > i\ ;
+犄 > i\ ;
+熨 > i\ ;
+煒 > i\ ;
+濰 > i\ ;
+漪 > i\ ;
+湋 > i\ ;
+渭 > i\ ;
+洿 > o\ ;
+洧 > i\ ;
+污 > o\ ;
+汙 > o\ ;
+氬 > a\ ;
+毉 > i\ ;
+歍 > o\ ;
+欹 > i\ ;
+楲 > i\ ;
+椸 > i\ ;
+椏 > a\ ;
+桙 > u\ ;
+柂 > i\ ;
+枱 > i\ ;
+杇 > o\ ;
+杅 > u\ ;
+暐 > i\ ;
+旖 > i\ ;
+敡 > i\ ;
+攺 > i\ ;
+扜 > u\ ;
+扆 > i\ ;
+扅 > i\ ;
+懿 > i\ ;
+愇 > i\ ;
+惟 > i\ ;
+悘 > i\ ;
+恚 > i\ ;
+怡 > i\ ;
+徫 > i\ ;
+彞 > i\ ;
+彝 > i\ ;
+彜 > i\ ;
+彛 > i\ ;
+彚 > i\ ;
+彙 > i\ ;
+弬 > i\ ;
+弙 > o\ ;
+异 > i\ ;
+幃 > i\ ;
+巸 > i\ ;
+已 > i\ ;
+嵨 > o\ ;
+崺 > i\ ;
+崣 > i\ ;
+屙 > a\ ;
+寪 > i\ ;
+孲 > a\ ;
+媦 > i\ ;
+媙 > i\ ;
+婭 > a\ ;
+婀 > a\ ;
+娿 > a\ ;
+娃 > a\ ;
+姨 > i\ ;
+妸 > a\ ;
+壝 > i\ ;
+塢 > o\ ;
+堊 > a\ ;
+埡 > o\ ;
+坨 > i\ ;
+圯 > i\ ;
+圬 > o\ ;
+圩 > u\ ;
+囗 > i\ ;
+噁 > o\ ;
+喴 > i\ ;
+喡 > i\ ;
+啞 > a\ ;
+啊 > a\ ;
+咿 > i\ ;
+咦 > i\ ;
+吚 > i\ ;
+叞 > i\ ;
+匜 > i\ ;
+儰 > i\ ;
+偯 > i\ ;
+偊 > u\ ;
+侇 > i\ ;
+伿 > i\ ;
+亜 > a\ ;
+亏 > u\ ;
+于 > u\ ;
+亄 > i\ ;
+乁 > i\ ;
+丫 > a\ ;
+。 <> '.';
+# End RAW data for converting CJK characters
+
+
+:: katakana-latin ();
+:: hiragana-latin ();
+:: fullwidth-halfwidth ();
diff --git a/src/com/ibm/icu/impl/data/icudata.jar b/src/com/ibm/icu/impl/data/icudata.jar
new file mode 100755
index 0000000..3b1b910
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/icudata.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2ce023850b3753cd1eebb5ac0341cb6cede1a82f20301b54b8046e924e81b9d
+size 6637974
diff --git a/src/com/ibm/icu/impl/data/package.html b/src/com/ibm/icu/impl/data/package.html
new file mode 100644
index 0000000..4f9bcd3
--- /dev/null
+++ b/src/com/ibm/icu/impl/data/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+</head>
+<body bgcolor="white">
+Resource data used by classes in com.ibm.text.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/BasicDurationFormat.java b/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
new file mode 100644
index 0000000..ec2a229
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
@@ -0,0 +1,187 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.duration;
+
+import java.text.FieldPosition;
+import java.util.Date;
+
+import com.ibm.icu.text.DurationFormat;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @author srl
+ */
+public class BasicDurationFormat extends DurationFormat {
+    
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -3146984141909457700L;
+    
+    transient DurationFormatter formatter;
+    transient PeriodFormatter pformatter;
+    transient PeriodFormatterService pfs = null;
+
+    public static DurationFormat getInstance(ULocale locale) {
+        return new BasicDurationFormat(locale);
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+    private static boolean checkXMLDuration = true; 
+//#endif
+
+    public StringBuffer format(Object object, StringBuffer toAppend, FieldPosition pos) {
+        if(object instanceof Long) {
+            String res = formatDurationFromNow(((Long)object).longValue());
+            return toAppend.append(res);
+        } else if(object instanceof Date) {
+            String res = formatDurationFromNowTo(((Date)object));
+            return toAppend.append(res);
+        }
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+        if(checkXMLDuration) try {
+            if(object instanceof javax.xml.datatype.Duration) {
+                String res = formatDuration(object);
+                return toAppend.append(res);
+            }
+        } catch ( NoClassDefFoundError ncdfe ) {
+            System.err.println("Skipping XML capability");
+            checkXMLDuration = false; // don't try again
+        }
+//#endif
+        throw new IllegalArgumentException("Cannot format given Object as a Duration");
+
+    }
+    
+    public BasicDurationFormat() {
+        pfs = BasicPeriodFormatterService.getInstance();
+        formatter = pfs.newDurationFormatterFactory().getFormatter();
+        pformatter = pfs.newPeriodFormatterFactory().setDisplayPastFuture(false).getFormatter();
+    }
+    /**
+     * 
+     */
+    public BasicDurationFormat(ULocale locale) {
+        super(locale);
+        pfs = BasicPeriodFormatterService.getInstance();
+        formatter = pfs.newDurationFormatterFactory().setLocale(locale.getName()).getFormatter();
+        pformatter = pfs.newPeriodFormatterFactory().setDisplayPastFuture(false).setLocale(locale.getName()).getFormatter();
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DurationFormat#formatDurationFrom(long, long)
+     */
+    public String formatDurationFrom(long duration, long referenceDate) {
+        return formatter.formatDurationFrom(duration, referenceDate);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DurationFormat#formatDurationFromNow(long)
+     */
+    public String formatDurationFromNow(long duration) {
+        return formatter.formatDurationFromNow(duration);
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.DurationFormat#formatDurationFromNowTo(java.util.Date)
+     */
+    public String formatDurationFromNowTo(Date targetDate) {
+        return formatter.formatDurationFromNowTo(targetDate);
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(J2SE14)
+//#else
+    /** 
+     *  JDK 1.5+ only
+     * @param o
+     * @return
+     * @see http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/datatype/Duration.html
+     */
+    public String formatDuration(Object obj) {
+        javax.xml.datatype.DatatypeConstants.Field inFields[] = { 
+                javax.xml.datatype.DatatypeConstants.YEARS,
+                javax.xml.datatype.DatatypeConstants.MONTHS,
+                javax.xml.datatype.DatatypeConstants.DAYS,
+                javax.xml.datatype.DatatypeConstants.HOURS,
+                javax.xml.datatype.DatatypeConstants.MINUTES,
+                javax.xml.datatype.DatatypeConstants.SECONDS,
+            };
+             TimeUnit outFields[] = { 
+                TimeUnit.YEAR,
+                TimeUnit.MONTH,
+                TimeUnit.DAY,
+                TimeUnit.HOUR,
+                TimeUnit.MINUTE,
+                TimeUnit.SECOND,
+            };
+
+        javax.xml.datatype.Duration inDuration = (javax.xml.datatype.Duration)obj;
+        Period p = null;
+        javax.xml.datatype.Duration duration = inDuration;
+        boolean inPast = false;
+        if(inDuration.getSign()<0) {
+            duration = inDuration.negate();
+            inPast = true;
+        }
+        // convert a Duration to a Period
+        boolean sawNonZero = false; // did we have a set, non-zero field?
+        for(int i=0;i<inFields.length;i++) {
+            if(duration.isSet(inFields[i])) {
+                Number n = duration.getField(inFields[i]);
+                if(n.intValue() == 0 && !sawNonZero) {
+                    continue; // ignore zero fields larger than the largest nonzero field
+                } else {
+                    sawNonZero = true;
+                }
+                float floatVal = n.floatValue();
+                // is there a 'secondary' unit to set?
+                TimeUnit alternateUnit = null;
+                float alternateVal = 0;
+                
+                // see if there is a fractional part
+                if(outFields[i]==TimeUnit.SECOND) {
+                    double fullSeconds = floatVal;
+                    double intSeconds = Math.floor(floatVal);
+                    double millis = (fullSeconds-intSeconds)*1000.0;
+                    if(millis > 0.0) {
+                        alternateUnit = TimeUnit.MILLISECOND;
+                        alternateVal=(float)millis;
+                        floatVal=(float)intSeconds;
+                    }
+                }
+                
+                if(p == null) {
+                    p = Period.at(floatVal, outFields[i]);
+                } else {
+                    p = p.and(floatVal, outFields[i]);
+                }
+                
+                if(alternateUnit != null) {
+                    p = p.and(alternateVal, alternateUnit); // add in MILLISECONDs
+                }
+            }
+        }
+        
+        if(p == null) {
+            // no fields set  = 0 seconds
+            return formatDurationFromNow(0);
+        } else {
+            if(inPast) {// was negated, above.
+                p = p.inPast();
+            } else {
+                p = p.inFuture();
+            }
+        }
+        
+        // now, format it.
+        return pformatter.format(p);
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java b/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java
new file mode 100644
index 0000000..67ee04d
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java
@@ -0,0 +1,118 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * Core implementation class for DurationFormatter.
+ */
+class BasicDurationFormatter implements DurationFormatter {
+  private PeriodFormatter formatter;
+  private PeriodBuilder builder;
+  private DateFormatter fallback;
+  private long fallbackLimit;
+  private String localeName;
+  private TimeZone timeZone;
+
+  /**
+   * Creates a basic duration formatter with the given formatter,
+   * builder, and fallback.  It's up to the caller to ensure that
+   * the locales and timezones of these are in sync.
+   */
+  public BasicDurationFormatter(PeriodFormatter formatter,
+                                PeriodBuilder builder, 
+                                DateFormatter fallback,
+                                long fallbackLimit) {
+    this.formatter = formatter;
+    this.builder = builder;
+    this.fallback = fallback;
+    this.fallbackLimit = fallbackLimit < 0 ? 0 : fallbackLimit;
+  }
+
+  protected BasicDurationFormatter(PeriodFormatter formatter,
+                                   PeriodBuilder builder, 
+                                   DateFormatter fallback,
+                                   long fallbackLimit,
+                                   String localeName,
+                                   TimeZone timeZone) {
+    this.formatter = formatter;
+    this.builder = builder;
+    this.fallback = fallback;
+    this.fallbackLimit = fallbackLimit;
+    this.localeName = localeName;
+    this.timeZone = timeZone;
+  }
+
+  public String formatDurationFromNowTo(Date targetDate) {
+    long now = System.currentTimeMillis();
+    long duration = now - targetDate.getTime();
+    return formatDurationFrom(duration, now);
+  }
+
+  public String formatDurationFromNow(long duration) {
+    return formatDurationFrom(duration, System.currentTimeMillis());
+  }
+
+  public String formatDurationFrom(long duration, long referenceDate) {
+    String s = doFallback(duration, referenceDate);
+    if (s == null) {
+      Period p = doBuild(duration, referenceDate);
+      s = doFormat(p);
+    }
+    return s;
+  }
+
+  public DurationFormatter withLocale(String locName) {
+    if (!locName.equals(localeName)) {
+      PeriodFormatter newFormatter = formatter.withLocale(locName);
+      PeriodBuilder newBuilder = builder.withLocale(locName);
+      DateFormatter newFallback = fallback == null 
+          ? null 
+          : fallback.withLocale(locName);
+      return new BasicDurationFormatter(newFormatter, newBuilder,
+                                        newFallback, fallbackLimit,
+                                        locName, timeZone);
+    }
+    return this;
+  }
+
+  public DurationFormatter withTimeZone(TimeZone tz) {
+    if (!tz.equals(timeZone)) {
+      PeriodBuilder newBuilder = builder.withTimeZone(tz);
+      DateFormatter newFallback = fallback == null 
+          ? null 
+          : fallback.withTimeZone(tz);
+      return new BasicDurationFormatter(formatter, newBuilder,
+                                        newFallback, fallbackLimit,
+                                        localeName, tz);
+    }
+    return this;
+  }
+
+  protected String doFallback(long duration, long referenceDate) {
+    if (fallback != null 
+        && fallbackLimit > 0
+        && Math.abs(duration) >= fallbackLimit) {
+      return fallback.format(referenceDate + duration);
+    }
+    return null;
+  }
+
+  protected Period doBuild(long duration, long referenceDate) {
+    return builder.createWithReferenceDate(duration, referenceDate);
+  }
+
+  protected String doFormat(Period period) {
+    if (!period.isSet()) {
+      throw new IllegalArgumentException("period is not set");
+    }
+    return formatter.format(period);
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java b/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
new file mode 100644
index 0000000..a40ae26
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
@@ -0,0 +1,247 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2009, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * Abstract factory object used to create DurationFormatters.
+ * DurationFormatters are immutable once created.
+ * <p>
+ * Setters on the factory mutate the factory and return it,
+ * for chaining.
+ * <p>
+ * Subclasses override getFormatter to return a custom
+ * DurationFormatter.
+ */
+class BasicDurationFormatterFactory implements DurationFormatterFactory {
+  private BasicPeriodFormatterService ps;
+  private PeriodFormatter formatter;
+  private PeriodBuilder builder;
+  private DateFormatter fallback;
+  private long fallbackLimit;
+  private String localeName;
+  private TimeZone timeZone;
+  private BasicDurationFormatter f; // cache
+
+  /**
+   * Create a default formatter for the current locale and time zone.
+   */
+  BasicDurationFormatterFactory(BasicPeriodFormatterService ps) {
+    this.ps = ps;
+    this.localeName = Locale.getDefault().toString();
+    this.timeZone = TimeZone.getDefault();
+  }
+
+  /**
+   * Set the period formatter used by the factory.  New formatters created
+   * with this factory will use the given period formatter.
+   *
+   * @param builder the builder to use
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setPeriodFormatter(
+      PeriodFormatter formatter) {
+    if (formatter != this.formatter) {
+      this.formatter = formatter;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set the builder used by the factory.  New formatters created
+   * with this factory will use the given locale.
+   *
+   * @param builder the builder to use
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setPeriodBuilder(PeriodBuilder builder) {
+    if (builder != this.builder) {
+      this.builder = builder;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set a fallback formatter for durations over a given limit.
+   *
+   * @param fallback the fallback formatter to use, or null
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setFallback(DateFormatter fallback) {
+    boolean doReset = fallback == null
+        ? this.fallback != null
+        : !fallback.equals(this.fallback);
+    if (doReset) {
+      this.fallback = fallback;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set a fallback limit for durations over a given limit.
+   *
+   * @param fallbackLimit the fallback limit to use, or 0 if none is desired.
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setFallbackLimit(long fallbackLimit) {
+    if (fallbackLimit < 0) {
+      fallbackLimit = 0;
+    }
+    if (fallbackLimit != this.fallbackLimit) {
+      this.fallbackLimit = fallbackLimit;
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setLocale(String localeName) {
+    if (!localeName.equals(this.localeName)) {
+      this.localeName = localeName;
+      if (builder != null) {
+          builder = builder.withLocale(localeName);
+      }
+      if (formatter != null) {
+          formatter = formatter.withLocale(localeName);
+      }
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this BasicDurationFormatterFactory
+   */
+  public DurationFormatterFactory setTimeZone(TimeZone timeZone) {
+    if (!timeZone.equals(this.timeZone)) {
+      this.timeZone = timeZone;
+      if (builder != null) {
+          builder = builder.withTimeZone(timeZone);
+      }
+      reset();
+    }
+    return this;
+  }
+
+  /**
+   * Return a formatter based on this factory's current settings.
+   *
+   * @return a BasicDurationFormatter
+   */
+  public DurationFormatter getFormatter() {
+    if (f == null) {
+      if (fallback != null) {
+        fallback = fallback.withLocale(localeName).withTimeZone(timeZone);
+      }
+      formatter = getPeriodFormatter();
+      builder = getPeriodBuilder();
+
+      f = createFormatter();
+    }
+    return f;
+  }
+
+  /**
+   * Return the current period formatter.
+   *
+   * @return the current period formatter
+   */
+  public PeriodFormatter getPeriodFormatter() {
+    if (formatter == null) {
+      formatter = ps.newPeriodFormatterFactory()
+          .setLocale(localeName)
+          .getFormatter();
+    }
+    return formatter;
+  }
+
+  /**
+   * Return the current builder.
+   *
+   * @return the current builder
+   */
+  public PeriodBuilder getPeriodBuilder() {
+    if (builder == null) {
+      builder = ps.newPeriodBuilderFactory()
+          .setLocale(localeName)
+          .setTimeZone(timeZone)
+          .getSingleUnitBuilder();
+    }
+    return builder;
+  }
+
+  /**
+   * Return the current fallback formatter.
+   *
+   * @return the fallback formatter, or null if there is no fallback
+   * formatter
+   */
+  public DateFormatter getFallback() {
+    return fallback;
+  }
+
+  /**
+   * Return the current fallback formatter limit
+   *
+   * @return the limit, or 0 if there is no fallback.
+   */
+  public long getFallbackLimit() {
+    return fallback == null ? 0 : fallbackLimit;
+  }
+
+  /**
+   * Return the current locale name.
+   *
+   * @return the current locale name
+   */
+  public String getLocaleName() {
+    return localeName;
+  }
+
+  /**
+   * Return the current locale name.
+   *
+   * @return the current locale name
+   */
+  public TimeZone getTimeZone() {
+    return timeZone;
+  }
+
+  /**
+   * Create the formatter.  All local fields are already initialized.
+   */
+  protected BasicDurationFormatter createFormatter() {
+    return new BasicDurationFormatter(formatter, builder, fallback, 
+                                      fallbackLimit, localeName,
+                                      timeZone);
+  }
+
+  /**
+   * Clear the cached formatter.  Subclasses must call this if their
+   * state has changed. This is automatically invoked by setBuilder,
+   * setFormatter, setFallback, setLocaleName, and setTimeZone
+   */
+  protected void reset() {
+    f = null;
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java b/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
new file mode 100644
index 0000000..027aa8d
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
@@ -0,0 +1,514 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2009, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.impl.DataRecord;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterData;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterDataService;
+
+import java.util.TimeZone;
+
+/**
+ * Default implementation of PeriodBuilderFactory.  This creates builders that
+ * use approximate durations.
+ */
+class BasicPeriodBuilderFactory implements PeriodBuilderFactory {
+  private PeriodFormatterDataService ds;
+  private Settings settings;
+  
+  private static final short allBits = 0xff;
+  
+  BasicPeriodBuilderFactory(PeriodFormatterDataService ds) {
+    this.ds = ds;
+    this.settings = new Settings();
+  }
+
+  static long approximateDurationOf(TimeUnit unit) {
+    return TimeUnit.approxDurations[unit.ordinal];
+  }
+
+  class Settings {
+    boolean inUse;
+    short uset = allBits;
+    TimeUnit maxUnit = TimeUnit.YEAR;
+    TimeUnit minUnit = TimeUnit.MILLISECOND;
+    int maxLimit;
+    int minLimit;
+    boolean allowZero = true;
+    boolean weeksAloneOnly;
+    boolean allowMillis = true;
+
+    Settings setUnits(int uset) {
+      if (this.uset == uset) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+        
+      result.uset = (short)uset;
+
+      if ((uset & allBits) == allBits) {
+        result.uset = allBits;
+        result.maxUnit = TimeUnit.YEAR;
+        result.minUnit = TimeUnit.MILLISECOND;
+      } else {
+        int lastUnit = -1;
+        for (int i = 0; i < TimeUnit.units.length; ++i) {
+          if (0 != (uset & (1 << i))) {
+            if (lastUnit == -1) {
+              result.maxUnit = TimeUnit.units[i];
+            }
+            lastUnit = i;
+          }
+        }
+        if (lastUnit == -1) { 
+            // currently empty, but this might be transient so no fail
+            result.minUnit = result.maxUnit = null;
+        } else {
+            result.minUnit = TimeUnit.units[lastUnit];
+        }
+      }
+
+      return result;
+    }
+
+    short effectiveSet() {
+      if (allowMillis) {
+        return uset;
+      }
+      return (short)(uset & ~(1 << TimeUnit.MILLISECOND.ordinal));
+    }
+    
+    TimeUnit effectiveMinUnit() {
+        if (allowMillis || minUnit != TimeUnit.MILLISECOND) {
+            return minUnit;
+        }
+        // -1 to skip millisecond
+        for (int i = TimeUnit.units.length - 1; --i >= 0;) {
+            if (0 != (uset & (1 << i))) {
+                return TimeUnit.units[i];
+            }
+        }
+        return TimeUnit.SECOND; // default for pathological case
+    }
+    
+    Settings setMaxLimit(float maxLimit) {
+      int val = maxLimit <= 0 ? 0 : (int)(maxLimit*1000);
+      if (maxLimit == val) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.maxLimit = val;
+      return result;
+    }
+
+    Settings setMinLimit(float minLimit) {
+      int val = minLimit <= 0 ? 0 : (int)(minLimit*1000);
+      if (minLimit == val) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.minLimit = val;
+      return result;
+    }
+
+    Settings setAllowZero(boolean allow) {
+      if (this.allowZero == allow) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.allowZero = allow;
+      return result;
+    }
+
+    Settings setWeeksAloneOnly(boolean weeksAlone) {
+      if (this.weeksAloneOnly == weeksAlone) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.weeksAloneOnly = weeksAlone;
+      return result;
+    }
+
+    Settings setAllowMilliseconds(boolean allowMillis) {
+      if (this.allowMillis == allowMillis) {
+        return this;
+      }
+      Settings result = inUse ? copy() : this;
+      result.allowMillis = allowMillis;
+      return result;
+    }
+
+    Settings setLocale(String localeName) {
+      PeriodFormatterData data = ds.get(localeName);
+      return this
+        .setAllowZero(data.allowZero())
+        .setWeeksAloneOnly(data.weeksAloneOnly())
+        .setAllowMilliseconds(data.useMilliseconds() != DataRecord.EMilliSupport.NO);  
+    }
+
+    Settings setInUse() {
+      inUse = true;
+      return this;
+    }
+
+    Period createLimited(long duration, boolean inPast) {
+      if (maxLimit > 0) {
+          long maxUnitDuration = approximateDurationOf(maxUnit);
+          if (duration * 1000 > maxLimit * maxUnitDuration) {
+              return Period.moreThan(maxLimit/1000f, maxUnit).inPast(inPast);
+          }
+      }
+      
+      if (minLimit > 0) {
+          TimeUnit emu = effectiveMinUnit();
+          long emud = approximateDurationOf(emu);
+          long eml = (emu == minUnit) ? minLimit :
+              Math.max(1000, (approximateDurationOf(minUnit) * minLimit) / emud);
+          if (duration * 1000 < eml * emud) {
+              return Period.lessThan(eml/1000f, emu).inPast(inPast);
+          }
+      }
+      return null;
+    }
+
+    public Settings copy() {
+        Settings result = new Settings();
+        result.inUse = inUse;
+        result.uset = uset;
+        result.maxUnit = maxUnit;
+        result.minUnit = minUnit;
+        result.maxLimit = maxLimit;
+        result.minLimit = minLimit;
+        result.allowZero = allowZero;
+        result.weeksAloneOnly = weeksAloneOnly;
+        result.allowMillis = allowMillis;
+        return result;
+    }
+  }
+
+  public PeriodBuilderFactory setAvailableUnitRange(TimeUnit minUnit,
+                                                    TimeUnit maxUnit) {
+    int uset = 0;
+    for (int i = maxUnit.ordinal; i <= minUnit.ordinal; ++i) {
+        uset |= 1 << i;
+    }
+    if (uset == 0) {
+        throw new IllegalArgumentException("range " + minUnit + " to " + maxUnit + " is empty");
+    }
+    settings = settings.setUnits(uset);
+    return this;
+  }
+
+  public PeriodBuilderFactory setUnitIsAvailable(TimeUnit unit, 
+                                                      boolean available) {
+    int uset = settings.uset;
+    if (available) {
+      uset |= 1 << unit.ordinal;
+    } else {
+      uset &= ~(1 << unit.ordinal);
+    }
+    settings = settings.setUnits(uset);
+    return this;
+  }
+
+  public PeriodBuilderFactory setMaxLimit(float maxLimit) {
+    settings = settings.setMaxLimit(maxLimit);
+    return this;
+  }
+
+  public PeriodBuilderFactory setMinLimit(float minLimit) {
+    settings = settings.setMinLimit(minLimit);
+    return this;
+  }
+
+  public PeriodBuilderFactory setAllowZero(boolean allow) {
+    settings = settings.setAllowZero(allow);
+    return this;
+  }
+
+  public PeriodBuilderFactory setWeeksAloneOnly(boolean aloneOnly) {
+    settings = settings.setWeeksAloneOnly(aloneOnly);
+    return this;
+  }
+
+  public PeriodBuilderFactory setAllowMilliseconds(boolean allow) {
+    settings = settings.setAllowMilliseconds(allow);
+    return this;
+  }
+
+  public PeriodBuilderFactory setLocale(String localeName) {
+    settings = settings.setLocale(localeName);
+    return this;
+  }
+  
+  public PeriodBuilderFactory setTimeZone(TimeZone timeZone) {
+      // ignore this
+      return this;
+  }
+
+  private Settings getSettings() {
+    if (settings.effectiveSet() == 0) {
+      return null;
+    }
+    return settings.setInUse();
+  }
+
+  /**
+   * Return a builder that represents relative time in terms of the single
+   * given TimeUnit
+   *
+   * @param unit the single TimeUnit with which to represent times
+   * @return a builder
+   */
+  public PeriodBuilder getFixedUnitBuilder(TimeUnit unit) {
+    return FixedUnitBuilder.get(unit, getSettings());
+  }
+
+  /**
+   * Return a builder that represents relative time in terms of the
+   * largest period less than or equal to the duration.
+   *
+   * @return a builder
+   */
+  public PeriodBuilder getSingleUnitBuilder() {
+    return SingleUnitBuilder.get(getSettings());
+  }
+
+  /**
+   * Return a builder that formats the largest one or two periods,
+   * Starting with the largest period less than or equal to the duration.
+   * It formats two periods if the first period has a count &lt; 2
+   * and the next period has a count &gt;= 1.
+   *
+   * @return a builder
+   */
+  public PeriodBuilder getOneOrTwoUnitBuilder() {
+    return OneOrTwoUnitBuilder.get(getSettings());
+  }
+
+  /**
+   * Return a builder that formats the given number of periods,
+   * starting with the largest period less than or equal to the
+   * duration.
+   *
+   * @return a builder
+   */
+  public PeriodBuilder getMultiUnitBuilder(int periodCount) {
+    return MultiUnitBuilder.get(periodCount, getSettings());
+  }
+}
+
+abstract class PeriodBuilderImpl implements PeriodBuilder {
+
+  protected BasicPeriodBuilderFactory.Settings settings;
+ 
+  public Period create(long duration) {
+    return createWithReferenceDate(duration, System.currentTimeMillis());
+  }
+
+  public long approximateDurationOf(TimeUnit unit) {
+    return BasicPeriodBuilderFactory.approximateDurationOf(unit);
+  }
+
+  public Period createWithReferenceDate(long duration, long referenceDate) {
+    boolean inPast = duration < 0;
+    if (inPast) {
+      duration = -duration;
+    }
+    Period ts = settings.createLimited(duration, inPast);
+    if (ts == null) {
+      ts = handleCreate(duration, referenceDate, inPast);
+      if (ts == null) {
+        ts = Period.lessThan(1, settings.effectiveMinUnit()).inPast(inPast);
+      }
+    }
+    return ts;
+  }
+
+  public PeriodBuilder withTimeZone(TimeZone timeZone) {
+      // ignore the time zone
+      return this;
+  }
+
+  public PeriodBuilder withLocale(String localeName) {
+    BasicPeriodBuilderFactory.Settings newSettings = settings.setLocale(localeName);
+    if (newSettings != settings) {
+      return withSettings(newSettings);
+    }
+    return this;
+  }
+
+  protected abstract PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse);
+
+  protected abstract Period handleCreate(long duration, long referenceDate, 
+                                         boolean inPast);
+
+  protected PeriodBuilderImpl(BasicPeriodBuilderFactory.Settings settings) {
+    this.settings = settings;
+  }
+}
+
+class FixedUnitBuilder extends PeriodBuilderImpl {
+  private TimeUnit unit;
+  
+  public static FixedUnitBuilder get(TimeUnit unit, BasicPeriodBuilderFactory.Settings settingsToUse) {
+    if (settingsToUse != null && (settingsToUse.effectiveSet() & (1 << unit.ordinal)) != 0) {
+      return new FixedUnitBuilder(unit, settingsToUse);
+    }
+    return null;
+  }
+
+  FixedUnitBuilder(TimeUnit unit, BasicPeriodBuilderFactory.Settings settings) {
+    super(settings);
+    this.unit = unit;
+  }
+
+  protected PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse) {
+    return get(unit, settingsToUse);
+  }
+
+  protected Period handleCreate(long duration, long referenceDate, 
+                                boolean inPast) {
+    if (unit == null) {
+      return null;
+    }
+    long unitDuration = approximateDurationOf(unit);
+    return Period.at((float)((double)duration/unitDuration), unit)
+        .inPast(inPast);
+  }
+}
+
+class SingleUnitBuilder extends PeriodBuilderImpl {
+  SingleUnitBuilder(BasicPeriodBuilderFactory.Settings settings) {
+    super(settings);
+  }
+
+  public static SingleUnitBuilder get(BasicPeriodBuilderFactory.Settings settings) {
+    if (settings == null) {
+      return null;
+    }
+    return new SingleUnitBuilder(settings);
+  }
+
+  protected PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse) {
+    return SingleUnitBuilder.get(settingsToUse);
+  }
+
+  protected Period handleCreate(long duration, long referenceDate, 
+                                boolean inPast) {
+    short uset = settings.effectiveSet();
+    for (int i = 0; i < TimeUnit.units.length; ++i) {
+      if (0 != (uset & (1 << i))) {
+        TimeUnit unit = TimeUnit.units[i];
+        long unitDuration = approximateDurationOf(unit);
+        if (duration >= unitDuration) {
+          return Period.at((float)((double)duration/unitDuration), unit)
+              .inPast(inPast);
+        }
+      }
+    }
+    return null;
+  }
+}
+
+class OneOrTwoUnitBuilder extends PeriodBuilderImpl {
+  OneOrTwoUnitBuilder(BasicPeriodBuilderFactory.Settings settings) {
+    super(settings);
+  }
+
+  public static OneOrTwoUnitBuilder get(BasicPeriodBuilderFactory.Settings settings) {
+    if (settings == null) {
+      return null;
+    }
+    return new OneOrTwoUnitBuilder(settings);
+  }
+
+  protected PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse) {
+    return OneOrTwoUnitBuilder.get(settingsToUse);
+  }
+
+  protected Period handleCreate(long duration, long referenceDate, 
+                                boolean inPast) {
+    Period period = null;
+    short uset = settings.effectiveSet();
+    for (int i = 0; i < TimeUnit.units.length; ++i) {
+      if (0 != (uset & (1 << i))) {
+        TimeUnit unit = TimeUnit.units[i];
+        long unitDuration = approximateDurationOf(unit);
+        if (duration >= unitDuration || period != null) {
+          double count = (double)duration/unitDuration;
+          if (period == null) {
+            if (count >= 2) {
+              period = Period.at((float)count, unit);
+              break;
+            }
+            period = Period.at(1, unit).inPast(inPast);
+            duration -= unitDuration;
+          } else {
+            if (count >= 1) {
+              period.and((float)count, unit);
+            }
+            break;
+          }
+        }
+      }
+    }
+    return period;
+  }
+}
+
+class MultiUnitBuilder extends PeriodBuilderImpl {
+  private int nPeriods;
+
+  MultiUnitBuilder(int nPeriods, BasicPeriodBuilderFactory.Settings settings) {
+    super(settings);
+    this.nPeriods = nPeriods;
+  }
+
+  public static MultiUnitBuilder get(int nPeriods, BasicPeriodBuilderFactory.Settings settings) {
+    if (nPeriods > 0 && settings != null) {
+      return new MultiUnitBuilder(nPeriods, settings);
+    }
+    return null;
+  }
+
+  protected PeriodBuilder withSettings(BasicPeriodBuilderFactory.Settings settingsToUse) {
+    return MultiUnitBuilder.get(nPeriods, settingsToUse);
+  }
+
+  protected Period handleCreate(long duration, long referenceDate, 
+                                boolean inPast) {
+    Period period = null;
+    int n = 0;
+    short uset = settings.effectiveSet();
+    for (int i = 0; i < TimeUnit.units.length; ++i) {
+      if (0 != (uset & (1 << i))) {
+        TimeUnit unit = TimeUnit.units[i];
+        if (n == nPeriods) {
+          break;
+        }
+        long unitDuration = approximateDurationOf(unit);
+        if (duration >= unitDuration || n > 0) {
+          ++n;
+          double count = (double)duration / unitDuration;
+          if (n < nPeriods) {
+            count = Math.floor(count);
+            duration -= (long)(count * unitDuration);
+          }
+          if (period == null) {
+            period = Period.at((float)count, unit).inPast(inPast);
+          } else {
+            period.and((float)count, unit);
+          }
+        }
+      }
+    }
+    return period;
+  }
+}
+
diff --git a/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java b/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java
new file mode 100644
index 0000000..6ec213d
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java
@@ -0,0 +1,192 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.BasicPeriodFormatterFactory.Customizations;
+
+import com.ibm.icu.impl.duration.impl.DataRecord.*;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterData;
+
+/**
+ * Core implementation class for PeriodFormatter.
+ */
+class BasicPeriodFormatter implements PeriodFormatter {
+  private BasicPeriodFormatterFactory factory;
+  private String localeName;
+  private PeriodFormatterData data;
+  private Customizations customs;
+
+  BasicPeriodFormatter(BasicPeriodFormatterFactory factory, 
+                       String localeName,
+                       PeriodFormatterData data, 
+                       Customizations customs) {
+    this.factory = factory;
+    this.localeName = localeName;
+    this.data = data;
+    this.customs = customs;
+  }
+
+  public String format(Period period) {
+    if (!period.isSet()) {
+      throw new IllegalArgumentException("period is not set");
+    }
+    return format(period.timeLimit, period.inFuture, period.counts);
+  }
+
+  public PeriodFormatter withLocale(String locName) {
+    if (!this.localeName.equals(locName)) {
+      PeriodFormatterData newData = factory.getData(locName);
+      return new BasicPeriodFormatter(factory, locName, newData, 
+                                      customs);
+    }
+    return this;
+  }
+
+  private String format(int tl, boolean inFuture, int[] counts) {
+    int mask = 0;
+    for (int i = 0; i < counts.length; ++i) {
+      if (counts[i] > 0) {
+        mask |= 1 << i;
+      }
+    }
+
+    // if the data does not allow formatting of zero periods, 
+    // remove these from consideration.  If the result has no
+    // periods set, return null to indicate we could not format
+    // the duration.
+    if (!data.allowZero()) {
+      for (int i = 0, m = 1; i < counts.length; ++i, m <<= 1) {
+        if ((mask & m) != 0 && counts[i] == 1) {
+          mask &= ~m;
+        }
+      }
+      if (mask == 0) {
+        return null;
+      }
+    }
+
+    // if the data does not allow milliseconds but milliseconds are
+    // set, merge them with seconds and force display of seconds to
+    // decimal with 3 places.
+    boolean forceD3Seconds = false;
+    if (data.useMilliseconds() != EMilliSupport.YES && 
+        (mask & (1 << TimeUnit.MILLISECOND.ordinal)) != 0) {
+      int sx = TimeUnit.SECOND.ordinal;
+      int mx = TimeUnit.MILLISECOND.ordinal;
+      int sf = 1 << sx;
+      int mf = 1 << mx;
+      switch (data.useMilliseconds()) {      
+        case EMilliSupport.WITH_SECONDS: {
+          // if there are seconds, merge with seconds, otherwise leave alone
+          if ((mask & sf) != 0) {
+            counts[sx] += (counts[mx]-1)/1000;
+            mask &= ~mf;
+            forceD3Seconds = true;
+          }
+        } break;
+        case EMilliSupport.NO: {
+          // merge with seconds, reset seconds before use just in case
+          if ((mask & sf) == 0) {
+            mask |= sf;
+            counts[sx] = 1;
+          }
+          counts[sx] += (counts[mx]-1)/1000;
+          mask &= ~mf;
+          forceD3Seconds = true;
+        } break;
+      }
+    }
+
+    // get the first and last units that are set.
+    int first = 0;
+    int last = counts.length - 1;
+    while (first < counts.length && (mask & (1 << first)) == 0) ++first;
+    while (last > first && (mask & (1 << last)) == 0) --last;
+
+    // determine if there is any non-zero unit
+    boolean isZero = true;
+    for (int i = first; i <= last; ++i) {
+      if (((mask & (1 << i)) != 0) &&  counts[i] > 1) {
+        isZero = false;
+        break;
+      }
+    }
+
+    StringBuffer sb = new StringBuffer();
+
+    // if we've been requested to not display a limit, or there are
+    // no non-zero units, do not display the limit.
+    if (!customs.displayLimit || isZero) {
+      tl = ETimeLimit.NOLIMIT;
+    }
+
+    // if we've been requested to not display the direction, or there
+    // are no non-zero units, do not display the direction.
+    int td;
+    if (!customs.displayDirection || isZero) {
+      td = ETimeDirection.NODIRECTION;
+    } else {
+      td = inFuture ? ETimeDirection.FUTURE : ETimeDirection.PAST;
+    }
+
+    // format the initial portion of the string before the units.
+    // record whether we need to use a digit prefix (because the
+    // initial portion forces it)
+    boolean useDigitPrefix = data.appendPrefix(tl, td, sb);
+
+    // determine some formatting params and initial values
+    boolean multiple = first != last;
+    boolean wasSkipped = true; // no initial skip marker
+    boolean skipped = false;
+    boolean countSep = customs.separatorVariant != ESeparatorVariant.NONE;
+
+    // loop for formatting the units
+    for (int i = first, j = i; i <= last; i = j) {
+      if (skipped) {
+        // we didn't format the previous unit
+        data.appendSkippedUnit(sb);
+        skipped = false;
+        wasSkipped = true;
+      }
+
+      while (++j < last && (mask & (1 << j)) == 0) {
+        skipped = true; // skip
+      }
+
+      TimeUnit unit = TimeUnit.units[i];
+      int count = counts[i] - 1;
+
+      int cv = customs.countVariant;
+      if (i == last) {
+        if (forceD3Seconds) {
+          cv = ECountVariant.DECIMAL3;
+        }
+        // else leave unchanged
+      } else {
+        cv = ECountVariant.INTEGER;
+      }
+      boolean isLast = i == last;
+      boolean mustSkip = data.appendUnit(unit, count, cv, customs.unitVariant, 
+                                         countSep, useDigitPrefix, multiple, isLast, wasSkipped, sb);
+      skipped |= mustSkip;
+      wasSkipped = false;
+
+      if (customs.separatorVariant != ESeparatorVariant.NONE && j <= last) {
+        boolean afterFirst = i == first;
+        boolean beforeLast = j == last;
+        boolean fullSep = customs.separatorVariant == ESeparatorVariant.FULL;
+        useDigitPrefix = data.appendUnitSeparator(unit, fullSep, afterFirst, beforeLast, sb);
+      } else {
+        useDigitPrefix = false;
+      }
+    }
+    data.appendSuffix(tl, td, sb);
+
+    return sb.toString();
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java b/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java
new file mode 100644
index 0000000..91a9c3e
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java
@@ -0,0 +1,234 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.impl.PeriodFormatterData;
+import com.ibm.icu.impl.duration.impl.PeriodFormatterDataService;
+
+import com.ibm.icu.impl.duration.impl.DataRecord.EUnitVariant;
+import com.ibm.icu.impl.duration.impl.DataRecord.ECountVariant;
+import com.ibm.icu.impl.duration.impl.DataRecord.ESeparatorVariant;
+
+import java.util.Locale;
+
+/**
+ * An implementation of PeriodFormatterFactory that provides customization of
+ * formatting behavior. Instances of this factory are created by
+ * BasicPeriodFormatterService.
+ *
+ * The settings on BasicPeriodFormatterFactory are:
+ * <ul>
+ *
+ * <li><b>setDisplayLimit</b> controls whether phrases like 'more than'
+ * or 'less than' will be displayed when the Period has a defined
+ * limit.  Default is to display them.</li>
+ *
+ * <li><b>setDisplayPastFuture</b> controls whether phrases like 'ago'
+ * or 'from now' will be displayed to indicate past or future
+ * time. Default is to display them.</li>
+ *
+ * <li><b>setSeparatorVariant</b> controls how separators (between
+ * count and period, and multiple periods) will be displayed, when
+ * appropriate for the language. Default is to use full
+ * separators.</li>
+ *
+ * <li><b>setUnitVariant</b> controls which of various types of
+ * unit names to use.  PLURALIZED indicates that full names will be
+ * used.  MEDIUM indicates that medium-length (usually 2-3 character)
+ * names will be used.  SHORT indicates that short (usually single
+ * character) names will be used.  If there is no localization data
+ * available for either the SHORT or MEDIUM names, the other will be
+ * used, if neither is available, the PLURALIZED names will be used.
+ * Default is PLURALIZED.</li>
+ *
+ * <li><b>setCountVariant</b> controls how the count for the smallest
+ * unit will be formatted: either as an integer, a fraction to the
+ * smallest half, or as a decimal with 1, 2, or 3 decimal points.</li>
+ * Counts for higher units will be formatted as integers.
+ *
+ * </ul>
+ */
+public class BasicPeriodFormatterFactory implements PeriodFormatterFactory {
+  private final PeriodFormatterDataService ds;
+  private PeriodFormatterData data;
+  private Customizations customizations;
+  private boolean customizationsInUse;
+  private String localeName;
+
+  // package-only constructor
+  BasicPeriodFormatterFactory(PeriodFormatterDataService ds) {
+    this.ds = ds;
+    this.customizations = new Customizations();
+    this.localeName = Locale.getDefault().toString();
+  }
+
+  /**
+   * Return the default rdf factory as a BasicPeriodFormatterFactory.
+   *
+   * @return a default BasicPeriodFormatterFactory
+   */
+  public static BasicPeriodFormatterFactory getDefault() {
+      return (BasicPeriodFormatterFactory)
+        BasicPeriodFormatterService.getInstance().newPeriodFormatterFactory();
+  }
+
+  /**
+   * Set the locale for this factory.
+   */
+  public PeriodFormatterFactory setLocale(String localeName) {
+    data = null;
+    this.localeName = localeName;
+    return this;
+  }
+
+  /**
+   * Set whether limits will be displayed.
+   *
+   * @param display true if limits will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setDisplayLimit(boolean display) {
+    updateCustomizations().displayLimit = display;
+    return this;
+  }
+
+  /**
+   * Return true if limits will be displayed.
+   *
+   * @return true if limits will be displayed
+   */
+  public boolean getDisplayLimit() {
+    return customizations.displayLimit;
+  }
+
+  /**
+   * Set whether past and future will be displayed.
+   *
+   * @param display true if past and future will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setDisplayPastFuture(boolean display) {
+    updateCustomizations().displayDirection = display;
+    return this;
+  }
+
+  /**
+   * Return true if past and future will be displayed.
+   *
+   * @return true if past and future will be displayed
+   */
+  public boolean getDisplayPastFuture() {
+    return customizations.displayDirection;
+  }
+
+  /**
+   * Set how separators will be displayed.
+   *
+   * @param variant the variant indicating separators will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setSeparatorVariant(int variant) {
+    updateCustomizations().separatorVariant = (byte) variant;
+    return this;
+  }
+
+  /**
+   * Return the variant indicating how separators will be displayed.
+   *
+   * @return the variant
+   */
+  public int getSeparatorVariant() {
+    return customizations.separatorVariant;
+  }
+
+  /**
+   * Set the variant of the time unit names to use.
+   *
+   * @param variant the variant to use
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setUnitVariant(int variant) {
+    updateCustomizations().unitVariant = (byte) variant;
+    return this;
+  }
+
+  /**
+   * Return the unit variant.
+   *
+   * @return the unit variant
+   */
+  public int getUnitVariant() {
+    return customizations.unitVariant;
+  }
+
+  /**
+   * Set the variant of the count to use.
+   *
+   * @param variant the variant to use
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setCountVariant(int variant) {
+    updateCustomizations().countVariant = (byte) variant;
+    return this;
+  }
+
+  /**
+   * Return the count variant.
+   *
+   * @return the count variant
+   */
+  public int getCountVariant() {
+    return customizations.countVariant;
+  }
+
+  public PeriodFormatter getFormatter() {
+    customizationsInUse = true;
+    return new BasicPeriodFormatter(this, localeName, getData(), 
+                                    customizations);
+  }
+
+  private Customizations updateCustomizations() {
+    if (customizationsInUse) {
+      customizations = customizations.copy();
+      customizationsInUse = false;
+    }
+    return customizations;
+  }
+
+  // package access only
+  PeriodFormatterData getData() {
+    if (data == null) {
+      data = ds.get(localeName);
+    }
+    return data;
+  }
+
+  // package access for use by BasicPeriodFormatter
+  PeriodFormatterData getData(String locName) {
+    return ds.get(locName);
+  }
+
+  // package access for use by BasicPeriodFormatter
+  static class Customizations {
+    boolean displayLimit = true;
+    boolean displayDirection = true;
+    byte separatorVariant = ESeparatorVariant.FULL;
+    byte unitVariant = EUnitVariant.PLURALIZED;
+    byte countVariant = ECountVariant.INTEGER;
+    
+    public Customizations copy() {
+        Customizations result = new Customizations();
+        result.displayLimit = displayLimit;
+        result.displayDirection = displayDirection;
+        result.separatorVariant = separatorVariant;
+        result.unitVariant = unitVariant;
+        result.countVariant = countVariant;
+        return result;
+    }
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java b/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
new file mode 100644
index 0000000..a9dca28
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
@@ -0,0 +1,63 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.impl.PeriodFormatterDataService;
+import com.ibm.icu.impl.duration.impl.ResourceBasedPeriodFormatterDataService;
+
+import java.util.Collection;
+
+/**
+ * An implementation of PeriodFormatterService that constructs a
+ * BasicPeriodFormatterFactory.
+ */
+public class BasicPeriodFormatterService implements PeriodFormatterService {
+  private static BasicPeriodFormatterService instance;
+  private PeriodFormatterDataService ds;
+
+  /**
+   * Return the default service instance.  This uses the
+   * default data service.
+   *
+   * @return an BasicPeriodFormatterService
+   */
+  public static BasicPeriodFormatterService getInstance() {
+    if (instance == null) {
+     PeriodFormatterDataService ds = 
+         ResourceBasedPeriodFormatterDataService.getInstance();
+      instance = new BasicPeriodFormatterService(ds);
+    }
+    return instance;
+  }
+
+  /**
+   * Construct a BasicPeriodFormatterService using the given 
+   * PeriodFormatterDataService.
+   *
+   * @param ds the data service to use
+   */
+  public BasicPeriodFormatterService(PeriodFormatterDataService ds) {
+    this.ds = ds;
+  }
+
+  public DurationFormatterFactory newDurationFormatterFactory() {
+    return new BasicDurationFormatterFactory(this);
+  }
+
+  public PeriodFormatterFactory newPeriodFormatterFactory() {
+    return new BasicPeriodFormatterFactory(ds);
+  }
+
+  public PeriodBuilderFactory newPeriodBuilderFactory() {
+    return new BasicPeriodBuilderFactory(ds);
+  }
+
+  public Collection getAvailableLocaleNames() {
+    return ds.getAvailableLocales();
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/DateFormatter.java b/src/com/ibm/icu/impl/duration/DateFormatter.java
new file mode 100644
index 0000000..e0232f7
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/DateFormatter.java
@@ -0,0 +1,50 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * Abstract formatter for dates.  Differs from DateFormat in that it
+ * provides <code>withLocale</code> and <code>withTimeZone</code> methods.
+ */
+public interface DateFormatter {
+
+  /**
+   * Format the date, provided as a java Date object.
+   * 
+   * @param date the date
+   * @return the formatted time
+   */
+  String format(Date date);
+
+  /**
+   * Format the date, provided as milliseconds.
+   *
+   * @param date the date in milliseconds
+   * @return the formatted time
+   */
+  String format(long date);
+
+  /**
+   * Returns a new DateFormatter that uses data for a new locale.
+   *
+   * @param locale the new locale to use
+   * @return a new formatter for the given locale
+   */
+  DateFormatter withLocale(String localeName);
+
+  /**
+   * Returns a new DateFormatter that uses the new time zone.
+   *
+   * @param tz the new time zone
+   * @return a new formatter for the given time zone
+   */
+  DateFormatter withTimeZone(TimeZone tz);
+}
diff --git a/src/com/ibm/icu/impl/duration/DurationFormatter.java b/src/com/ibm/icu/impl/duration/DurationFormatter.java
new file mode 100644
index 0000000..d78d80c
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/DurationFormatter.java
@@ -0,0 +1,76 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * Formatter for durations in milliseconds.
+ */
+public interface DurationFormatter {
+
+  /**
+   * Formats the duration between now and a target date.
+   * <p>
+   * This is a convenience method that calls
+   * formatDurationFrom(long, long) using now
+   * as the reference date, and the difference between now and
+   * <code>targetDate.getTime()</code> as the duration.
+   * 
+   * @param targetDate the ending date
+   * @return the formatted time
+   */
+  String formatDurationFromNowTo(Date targetDate);
+
+  /**
+   * Formats a duration expressed in milliseconds.
+   * <p>
+   * This is a convenience method that calls formatDurationFrom
+   * using the current system time as the reference date.
+   * 
+   * @param duration the duration in milliseconds
+   * @param tz the time zone
+   * @return the formatted time
+   */
+  String formatDurationFromNow(long duration);
+
+  /**
+   * Formats a duration expressed in milliseconds from a reference date.
+   * <p>
+   * The reference date allows formatters to use actual durations of
+   * variable-length periods (like months) if they wish.
+   * <p>
+   * The duration is expressed as the number of milliseconds in the
+   * past (negative values) or future (positive values) with respect
+   * to a reference date (expressed as milliseconds in epoch).
+   * 
+   * @param duration the duration in milliseconds
+   * @param referenceDate the date from which to compute the duration
+   * @return the formatted time
+   */
+  String formatDurationFrom(long duration, long referenceDate);
+
+  /**
+   * Returns a new DurationFormatter that's the same as this one 
+   * but formats for a new locale.
+   *
+   * @param localeName the name of the new locale
+   * @return a new formatter for the given locale
+   */
+  DurationFormatter withLocale(String localeName);
+
+  /**
+   * Returns a new DurationFormatter that's the same as this one but
+   * uses a different time zone.
+   *
+   * @param tz the time zone in which to compute durations.
+   * @return a new formatter for the given locale
+   */
+  DurationFormatter withTimeZone(TimeZone tz);
+}
diff --git a/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java b/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
new file mode 100644
index 0000000..38a2de4
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
@@ -0,0 +1,79 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.TimeZone;
+
+/**
+ * Factory used to construct DurationFormatters.
+ * Formatters are immutable once created.
+ * <p>
+ * Setters on the factory mutate the factory and return it,
+ * for chaining.
+ */
+public interface DurationFormatterFactory {
+
+  /**
+   * Set the period formatter used by the factory.  New formatters created
+   * with this factory will use the given period formatter.
+   *
+   * @param builder the builder to use
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setPeriodFormatter(PeriodFormatter formatter);
+
+  /**
+   * Set the builder used by the factory.  New formatters created
+   * with this factory will use the given locale.
+   *
+   * @param builder the builder to use
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setPeriodBuilder(PeriodBuilder builder);
+
+  /**
+   * Set a fallback formatter for durations over a given limit.
+   *
+   * @param fallback the fallback formatter to use, or null
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setFallback(DateFormatter fallback);
+
+  /**
+   * Set a fallback limit for durations over a given limit.
+   *
+   * @param fallbackLimit the fallback limit to use, or 0 if none is desired.
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setFallbackLimit(long fallbackLimit);
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setLocale(String localeName);
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this DurationFormatterFactory
+   */
+  public DurationFormatterFactory setTimeZone(TimeZone timeZone);
+
+  /**
+   * Return a formatter based on this factory's current settings.
+   *
+   * @return a DurationFormatter
+   */
+  public DurationFormatter getFormatter();
+}
diff --git a/src/com/ibm/icu/impl/duration/Period.java b/src/com/ibm/icu/impl/duration/Period.java
new file mode 100644
index 0000000..427de06
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/Period.java
@@ -0,0 +1,373 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import com.ibm.icu.impl.duration.impl.DataRecord.ETimeLimit;
+
+/**
+ * Represents an approximate duration in multiple TimeUnits.  Each unit,
+ * if set, has a count (which can be fractional and must be non-negative).
+ * In addition Period can either represent the duration as being into the past
+ * or future, and as being more or less than the defined value.
+ * <p>
+ * Use a PeriodFormatter to convert a Period to a String.  
+ * <p>
+ * Periods are immutable.  Mutating operations return the new 
+ * result leaving the original unchanged.
+ * <p>
+ * Example:<pre>
+ * Period p1 = Period.at(3, WEEK).and(2, DAY).inFuture();
+ * Period p2 = p1.and(12, HOUR);</pre>
+ */
+public final class Period {
+  final byte timeLimit;
+  final boolean inFuture;
+  final int[] counts;
+
+  /**
+   * Constructs a Period representing a duration of
+   * count units extending into the past.
+   * @param count the number of units, must be non-negative
+   * @param unit the unit
+   * @return the new Period
+   */
+  public static Period at(float count, TimeUnit unit) {
+    checkCount(count);
+    return new Period(ETimeLimit.NOLIMIT, false, count, unit);
+  }
+
+  /**
+   * Constructs a Period representing a duration more than
+   * count units extending into the past.
+   * @param count the number of units. must be non-negative
+   * @param unit the unit
+   * @return the new Period
+   */
+  public static Period moreThan(float count, TimeUnit unit) {
+    checkCount(count);
+    return new Period(ETimeLimit.MT, false, count, unit);
+  }
+
+  /**
+   * Constructs a Period representing a duration
+   * less than count units extending into the past.
+   * @param count the number of units. must be non-negative
+   * @param unit the unit
+   * @return the new Period
+   */
+  public static Period lessThan(float count, TimeUnit unit) {
+    checkCount(count);
+    return new Period(ETimeLimit.LT, false, count, unit);
+  }
+
+  /**
+   * Set the given unit to have the given count.  Marks the
+   * unit as having been set.  This can be used to set
+   * multiple units, or to reset a unit to have a new count.
+   * This does <b>not</b> add the count to an existing count
+   * for this unit.
+   *
+   * @param count the number of units.  must be non-negative
+   * @param unit the unit
+   * @return the new Period
+   */
+  public Period and(float count, TimeUnit unit) {
+    checkCount(count);
+    return setTimeUnitValue(unit, count);
+  }
+
+  /**
+   * Mark the given unit as not being set.
+   *
+   * @param unit the unit to unset
+   * @return the new Period
+   */
+  public Period omit(TimeUnit unit) {
+    return setTimeUnitInternalValue(unit, 0);
+  }
+  
+  /**
+   * Mark the duration as being at the defined duration.
+   *
+   * @return the new Period
+   */
+  public Period at() {
+    return setTimeLimit(ETimeLimit.NOLIMIT);
+  }
+
+  /**
+   * Mark the duration as being more than the defined duration.
+   *
+   * @return the new Period
+   */
+  public Period moreThan() {
+    return setTimeLimit(ETimeLimit.MT);
+  }
+
+  /**
+   * Mark the duration as being less than the defined duration.
+   *
+   * @return the new Period
+   */
+  public Period lessThan() {
+    return setTimeLimit(ETimeLimit.LT);
+  }
+
+  /**
+   * Mark the time as being in the future.
+   *
+   * @return the new Period
+   */
+  public Period inFuture() {
+    return setFuture(true);
+  }
+
+  /**
+   * Mark the duration as extending into the past.
+   *
+   * @return the new Period
+   */
+  public Period inPast() {
+    return setFuture(false);
+  }
+
+  /**
+   * Mark the duration as extending into the future if
+   * future is true, and into the past otherwise.
+   *
+   * @param future true if the time is in the future
+   * @return the new Period
+   */
+  public Period inFuture(boolean future) {
+    return setFuture(future);
+  }
+
+  /**
+   * Mark the duration as extending into the past if
+   * past is true, and into the future otherwise.
+   *
+   * @param past true if the time is in the past
+   * @return the new Period
+   */
+  public Period inPast(boolean past) {
+    return setFuture(!past);
+  }
+
+  /**
+   * Returns true if any unit is set.
+   * @return true if any unit is set
+   */
+  public boolean isSet() {
+    for (int i = 0; i < counts.length; ++i) {
+      if (counts[i] != 0) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Returns true if the given unit is set.
+   * @param unit the unit to test
+   * @return true if the given unit is set.
+   */
+  public boolean isSet(TimeUnit unit) {
+    return counts[unit.ordinal] > 0;
+  }
+
+  /**
+   * Returns the count for the specified unit.  If the
+   * unit is not set, returns 0.
+   * @param unit the unit to test
+   * @return the count
+   */
+  public float getCount(TimeUnit unit) {
+    int ord = unit.ordinal;
+    if (counts[ord] == 0) {
+      return 0;
+    }
+    return (counts[ord] - 1)/1000f;
+  }
+
+  /**
+   * Returns true if this represents a 
+   * duration into the future.
+   * @return true if this represents a 
+   * duration into the future.
+   */
+  public boolean isInFuture() {
+    return inFuture;
+  }
+
+  /**
+   * Returns true if this represents a 
+   * duration into the past
+   * @return true if this represents a 
+   * duration into the past
+   */
+  public boolean isInPast  () {
+    return !inFuture;
+  }
+
+  /**
+   * Returns true if this represents a duration in
+   * excess of the defined duration.
+   * @return true if this represents a duration in
+   * excess of the defined duration.
+   */
+  public boolean isMoreThan() {
+    return timeLimit == ETimeLimit.MT;
+  }
+
+  /**
+   * Returns true if this represents a duration
+   * less than the defined duration.
+   * @return true if this represents a duration
+   * less than the defined duration.
+   */
+  public boolean isLessThan() {
+    return timeLimit == ETimeLimit.LT;
+  }
+
+  /** 
+   * Returns true if rhs extends Period and
+   * the two Periods are equal.
+   * @param rhs the object to compare to
+   * @return true if rhs is a Period and is equal to this
+   */
+  public boolean equals(Object rhs) {
+    try {
+      return equals((Period)rhs);
+    }
+    catch (ClassCastException e) {
+      return false;
+    }
+  }
+
+  /**
+   * Returns true if the same units are defined with
+   * the same counts, both extend into the future or both into the
+   * past, and if the limits (at, more than, less than) are the same.
+   * Note that this means that a period of 1000ms and a period of 1sec
+   * will not compare equal.
+   *
+   * @param rhs the period to compare to
+   * @return true if the two periods are equal
+   */
+  public boolean equals(Period rhs) {
+    if (rhs != null &&
+        this.timeLimit == rhs.timeLimit &&
+        this.inFuture == rhs.inFuture) {
+      for (int i = 0; i < counts.length; ++i) {
+        if (counts[i] != rhs.counts[i]) {
+          return false;
+        }
+      }
+      return true;
+    }
+    return false;
+  }
+
+  /** 
+   * Returns the hashCode. 
+   * @return the hashCode
+   */
+  public int hashCode() {
+    int hc = (timeLimit << 1) | (inFuture ? 1 : 0);
+    for (int i = 0; i < counts.length; ++i) {
+      hc = (hc << 2) ^ counts[i];
+    }
+    return hc;
+  }
+
+  /**
+   * Private constructor used by static factory methods.
+   */
+  private Period(int limit, boolean future, float count, TimeUnit unit) {
+    this.timeLimit = (byte) limit;
+    this.inFuture = future;
+    this.counts = new int[TimeUnit.units.length];
+    this.counts[unit.ordinal] = (int)(count * 1000) + 1;
+  }
+
+  /**
+   * Package private constructor used by setters and factory.
+   */
+  Period(int timeLimit, boolean inFuture, int[] counts) {
+    this.timeLimit = (byte) timeLimit;
+    this.inFuture = inFuture;
+    this.counts = counts;
+  }
+
+  /**
+   * Set the unit's internal value, converting from float to int.
+   */
+  private Period setTimeUnitValue(TimeUnit unit, float value) {
+    if (value < 0) {
+      throw new IllegalArgumentException("value: " + value);
+    }
+    return setTimeUnitInternalValue(unit, (int)(value * 1000) + 1);
+  }
+
+  /** 
+   * Sets the period to have the provided value, 1/1000 of the
+   * unit plus 1.  Thus unset values are '0', 1' is the set value '0',
+   * 2 is the set value '1/1000', 3 is the set value '2/1000' etc.
+   * @param p the period to change
+   * @param value the int value as described above.
+   * @eturn the new Period object.
+   */
+  private Period setTimeUnitInternalValue(TimeUnit unit, int value) {
+    int ord = unit.ordinal;
+    if (counts[ord] != value) {
+      int[] newCounts = new int[counts.length];
+      for (int i = 0; i < counts.length; ++i) {
+        newCounts[i] = counts[i];
+      }
+      newCounts[ord] = value;
+      return new Period(timeLimit, inFuture, newCounts);
+    }
+    return this;
+  }
+
+  /**
+   * Sets whether this defines a future time.
+   * @param future true if the time is in the future
+   * @return  the new Period
+   */
+  private Period setFuture(boolean future) {
+    if (this.inFuture != future) {
+      return new Period(timeLimit, future, counts);
+    }
+    return this;
+  }
+
+  /**
+   * Sets whether this is more than, less than, or
+   * 'about' the specified time.
+   * @param limit the kind of limit
+   * @return the new Period
+   */
+  private Period setTimeLimit(byte limit) {
+    if (this.timeLimit != limit) {
+      return new Period(limit, inFuture, counts);
+
+    }
+    return this;
+  }
+
+  /**
+   * Validate count.
+   */
+  private static void checkCount(float count) {
+    if (count < 0) {
+      throw new IllegalArgumentException("count (" + count + 
+                                         ") cannot be negative");
+    }
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/PeriodBuilder.java b/src/com/ibm/icu/impl/duration/PeriodBuilder.java
new file mode 100644
index 0000000..188b352
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodBuilder.java
@@ -0,0 +1,53 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.TimeZone;
+
+/**
+ * Constructs a Period given a base time and a duration in milliseconds.
+ * <p>
+ * PeriodBuilder may be used alone or be set on a DurationFormatter
+ * to customize how that formatter constructs a Period for formatting.
+ * <p>
+ * None of the operations on PeriodBuilder change the current builder.
+ */
+public interface PeriodBuilder {
+  /**
+   * Create a period of the given duration using the current system
+   * time as the reference time.
+   *
+   * @param duration the duration in milliseconds from the current time
+   * to the target time.  A negative duration indicates a time in the past
+   * @return a Period that represents the duration
+   */
+  Period create(long duration);
+
+  /**
+   * Create a period of the given duration using the provided reference date.
+   *
+   * @param duration the duration in milliseconds from the referenct time
+   * to the target time.  A negative duration indicates a time before the
+   * reference time
+   * @param referenceDate the reference date from which to compute the period
+   * @return a Period that represents the duration
+   */
+  Period createWithReferenceDate(long duration, long referenceDate);
+
+  /**
+   * Returns a new PeriodBuilder that uses the provided locale to 
+   * determine what periods are available for use.
+   */
+  PeriodBuilder withLocale(String localeName);
+
+  /**
+   * Returns a new PeriodBuilder that computes periods starting at
+   * dates in the provided time zone.
+   */
+  PeriodBuilder withTimeZone(TimeZone tz);
+}
diff --git a/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java b/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
new file mode 100644
index 0000000..5b022ff
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
@@ -0,0 +1,131 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2009, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.TimeZone;
+
+/**
+ */
+public interface PeriodBuilderFactory {
+
+  /**
+   * Sets the time units available for use.  Default is all units.
+   * @param minUnit the smallest time unit available for use
+   * @param maxUnit the largest time unit available for use
+   * @return this factory
+   */
+  PeriodBuilderFactory setAvailableUnitRange(TimeUnit minUnit,
+                         TimeUnit maxUnit);
+
+  /**
+   * Sets whether the time unit is available for use.
+   * @param unit the time unit
+   * @param available true if the unit is available for use
+   * @return this factory
+   */
+  PeriodBuilderFactory setUnitIsAvailable(TimeUnit unit, boolean available);
+
+  /**
+   * Sets the maximum value for the largest available time unit (as
+   * set in setUnits).  Periods that represent a longer duration than
+   * this will be pinned to this value of that time unit and return
+   * true for 'isMoreThan'.  Default is no limit.  Setting a value of
+   * zero restores the default.
+   */
+  PeriodBuilderFactory setMaxLimit(float maxLimit);
+
+  /**
+   * Sets the minimum value for the smallest available time unit (as
+   * set in setUnits).  Periods that represent a shorter duration than
+   * this will be pinned to this value of that time unit and return
+   * true for 'isLessThan'.  Default is no limit.  Setting a value of
+   * zero restores the default.
+   */
+  PeriodBuilderFactory setMinLimit(float minLimit);
+
+  /**
+   * Sets whether units with a value of zero are represented in a
+   * period when 'gaps' appear between time units, e.g. 
+   * '2 hours, 0 minutes, and 33 seconds'.  Default is to
+   * not represent these explicitly ('2 hours and 33 seconds').
+   */
+  PeriodBuilderFactory setAllowZero(boolean allow);
+
+  /**
+   * Sets whether weeks are used with other units, or only when
+   * weeks are the only unit.  For example '3 weeks and 2 days'
+   * versus '23 days'.  Default is to use them alone only.
+   */
+  PeriodBuilderFactory setWeeksAloneOnly(boolean aloneOnly);
+
+  /**
+   * Sets whether milliseconds are allowed.  This is only examined
+   * when milliseconds are an available field. The default is to allow 
+   * milliseconds to display normally.
+   * <p>
+   * This is intended to be used to set locale-specific behavior.  Typically clients will
+   * not call this API and instead call {@link #setLocale}.
+   *
+   * @param allow whether milliseconds should be allowed.
+   * @return a builder
+   */
+   PeriodBuilderFactory setAllowMilliseconds(boolean allow);
+   
+  /**
+   * Sets the locale for the factory.  Setting the locale can adjust
+   * the values for some or all of the other properties to reflect
+   * language or cultural conventions.  Default is to use
+   * the default locale.
+   */
+  PeriodBuilderFactory setLocale(String localeName);
+
+  /**
+   * Sets the time zone for the factory.  This can affect the timezone
+   * used for date computations.
+   * @param timeZone the timeZone
+   * @return a builder
+   */
+  PeriodBuilderFactory setTimeZone(TimeZone timeZone);
+ /**
+   * Returns a builder that represents durations in terms of the single
+   * given TimeUnit.  If the factory settings don't make the given unit
+   * available, this will return null.
+   *
+   * @param unit the single TimeUnit with which to represent times
+   * @return a builder
+   */
+  PeriodBuilder getFixedUnitBuilder(TimeUnit unit);
+
+  /**
+   * Returns a builder that represents durations in terms of the
+   * single largest period less than or equal to the duration.
+   *
+   * @return a builder
+   */
+  PeriodBuilder getSingleUnitBuilder();
+
+  /**
+   * Returns a builder that formats the largest one or two time units,
+   * starting with the largest period less than or equal to the duration.
+   * It formats two periods if the first period has a count &lt; 2
+   * and the next period has a count &gt;= 1.
+   *
+   * @return a builder
+   */
+  PeriodBuilder getOneOrTwoUnitBuilder();
+
+  /**
+   * Returns a builder that formats up to the given number of time units,
+   * starting with the largest unit less than or equal to the
+   * duration.
+   *
+   * @return a builder
+   */
+  PeriodBuilder getMultiUnitBuilder(int unitCount);
+}
+
diff --git a/src/com/ibm/icu/impl/duration/PeriodFormatter.java b/src/com/ibm/icu/impl/duration/PeriodFormatter.java
new file mode 100644
index 0000000..a3363f1
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodFormatter.java
@@ -0,0 +1,41 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ * Formats a Period, such as '2 hours 23 minutes'.  
+ * The Period defines the fields to format and their
+ * values, and the formatter defines how to format them.
+ * <p>
+ * PeriodFormatters are immutable.
+ * <p> 
+ * PeriodFormatter can be instantiated using a PeriodFormatterFactory.
+ *
+ * @see Period
+ * @see PeriodBuilder
+ * @see PeriodFormatterFactory
+ */
+public interface PeriodFormatter {
+  /**
+   * Format a Period.
+   *
+   * @param ts the Period to format
+   * @return the formatted time
+   */
+  String format(Period period);
+
+  /**
+   * Return a new PeriodFormatter with the same customizations but
+   * using data for a new locale.  Some locales impose limits on the
+   * fields that can be directly formatter.
+   *
+   * @param localeName the name of the new locale
+   * @return a new formatter for the given locale
+   */
+  PeriodFormatter withLocale(String localeName);
+}
diff --git a/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java b/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java
new file mode 100644
index 0000000..2110d45
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java
@@ -0,0 +1,74 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ * Abstract factory interface used to create PeriodFormatters.
+ * PeriodFormatters are immutable once created.
+ * <p>
+ * Setters on the factory mutate the factory and return it,
+ * for chaining.
+ */
+public interface PeriodFormatterFactory {
+
+  /**
+   * Set the name of the locale that will be used when 
+   * creating new formatters.
+   *
+   * @param localeName the name of the Locale
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setLocale(String localeName);
+
+  /**
+   * Set whether limits will be displayed.
+   *
+   * @param display true if limits will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setDisplayLimit(boolean display);
+
+  /**
+   * Set whether past and future will be displayed.
+   *
+   * @param display true if past and future will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setDisplayPastFuture(boolean display);
+
+  /**
+   * Set how separators will be displayed.
+   *
+   * @param variant the variant indicating how separators will be displayed
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setSeparatorVariant(int variant);
+
+  /**
+   * Set the variant of the time unit names to use.
+   *
+   * @param variant the variant to use
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setUnitVariant(int variant);
+
+  /**
+   * Set the variant of the count to use.
+   *
+   * @param variant the variant to use
+   * @return this PeriodFormatterFactory
+   */
+  public PeriodFormatterFactory setCountVariant(int variant);
+
+  /**
+   * Return a formatter based on this factory's current settings.
+   *
+   * @return a PeriodFormatter
+   */
+  public PeriodFormatter getFormatter();
+}
diff --git a/src/com/ibm/icu/impl/duration/PeriodFormatterService.java b/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
new file mode 100644
index 0000000..c433c73
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
@@ -0,0 +1,45 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+import java.util.Collection;
+
+/**
+ * Provider of Factory instances for building PeriodBuilders, PeriodFormatters,
+ * and DurationFormatters.
+ */
+public interface PeriodFormatterService {
+
+  /**
+   * Creates a new factory for creating DurationFormatters.
+   *
+   * @return a new DurationFormatterFactory.
+   */
+  DurationFormatterFactory newDurationFormatterFactory();
+
+  /**
+   * Creates a new factory for creating PeriodFormatters.
+   *
+   * @return a new PeriodFormatterFactory
+   */
+  PeriodFormatterFactory newPeriodFormatterFactory();
+
+  /**
+   * Creates a new factory for creating PeriodBuilders.
+   *
+   * @return a new PeriodBuilderFactory
+   */
+  PeriodBuilderFactory newPeriodBuilderFactory();
+
+  /**
+   * Return the names of locales supported by factories produced by
+   * this service.
+   * @return a collection of String (locale names)
+   */
+  Collection getAvailableLocaleNames();
+}
diff --git a/src/com/ibm/icu/impl/duration/TimeUnit.java b/src/com/ibm/icu/impl/duration/TimeUnit.java
new file mode 100644
index 0000000..a9f1e01
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/TimeUnit.java
@@ -0,0 +1,85 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ * 'Enum' for individual time units.  Not an actual enum so that it can be 
+ * used by Java 1.4.
+ */
+public final class TimeUnit {
+  /** The name of this unit, a key, not for localization. */
+  final String name;
+
+  /** The ordinal of the unit, in order from largest to smallest. */
+  final byte ordinal;
+
+  /** Private constructor */
+  private TimeUnit(String name, int ordinal) {
+    this.name = name;
+    this.ordinal = (byte) ordinal;
+  }
+
+  public String toString() {
+    return name;
+  }
+  
+  /** Represents a year. */ 
+  public static final TimeUnit YEAR = new TimeUnit("year", 0);
+
+  /** Represents a month. */  
+  public static final TimeUnit MONTH = new TimeUnit("month", 1);
+
+  /** Represents a week. */ 
+  public static final TimeUnit WEEK = new TimeUnit("week", 2);
+
+  /** Represents a day. */ 
+  public static final TimeUnit DAY = new TimeUnit("day", 3);
+
+  /** Represents an hour. */ 
+  public static final TimeUnit HOUR = new TimeUnit("hour", 4);
+
+  /** Represents a minute. */ 
+  public static final TimeUnit MINUTE = new TimeUnit("minute", 5);
+
+  /** Represents a second. */ 
+  public static final TimeUnit SECOND = new TimeUnit("second", 6);
+
+  /** Represents a millisecond. */ 
+  public static final TimeUnit MILLISECOND = new TimeUnit("millisecond", 7);
+
+  /** Returns the next larger time unit, or null if this is the largest. */
+  public TimeUnit larger() {
+    return ordinal == 0 ? null : units[ordinal - 1];
+  }
+
+  /** Returns the next smaller time unit, or null if this is the smallest. */
+  public TimeUnit smaller() {
+    return ordinal == units.length - 1 ? null : units[ordinal + 1];
+  }
+
+  /** The list of units, in order from largest to smallest. */
+  static final TimeUnit[] units = {
+    YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND
+  };
+
+    /** Returns the ordinal value of this time unit, largest is 0. **/
+  public int ordinal() {
+    return ordinal;
+  }
+
+  /** Approximate, durations for the units independent of the time at which
+      they are measured */
+
+  // hack, initialization long array using expressions with 'L' at end doesn't
+  // compute entire expression using 'long'.  differs from initializtion of
+  // a single constant
+  static final long[] approxDurations = {
+    36525L*24*60*60*10, 3045*24*60*60*10L, 7*24*60*60*1000L, 24*60*60*1000L, 
+    60*60*1000L, 60*1000L, 1000L, 1L
+  };
+}
diff --git a/src/com/ibm/icu/impl/duration/TimeUnitConstants.java b/src/com/ibm/icu/impl/duration/TimeUnitConstants.java
new file mode 100644
index 0000000..9de023b
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/TimeUnitConstants.java
@@ -0,0 +1,37 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration;
+
+/**
+ * Easy access to time units for Java 1.4, which doesn't have static imports.
+ */
+public interface TimeUnitConstants {
+  /** Represents a year. */ 
+  public static final TimeUnit YEAR = TimeUnit.YEAR;
+
+  /** Represents a month. */  
+  public static final TimeUnit MONTH = TimeUnit.MONTH;
+
+  /** Represents a week. */ 
+  public static final TimeUnit WEEK = TimeUnit.WEEK;
+
+  /** Represents a day. */ 
+  public static final TimeUnit DAY = TimeUnit.DAY;
+
+  /** Represents an hour. */ 
+  public static final TimeUnit HOUR = TimeUnit.HOUR;
+
+  /** Represents a minute. */ 
+  public static final TimeUnit MINUTE = TimeUnit.MINUTE;
+
+  /** Represents a second. */ 
+  public static final TimeUnit SECOND = TimeUnit.SECOND;
+
+  /** Represents a millisecond. */ 
+  public static final TimeUnit MILLISECOND = TimeUnit.MILLISECOND;
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/DataRecord.java b/src/com/ibm/icu/impl/duration/impl/DataRecord.java
new file mode 100644
index 0000000..6264417
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/DataRecord.java
@@ -0,0 +1,317 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.util.*;
+
+/**
+ * DataRecord contains the data used by PeriodFormatterData.  Fields
+ * are package-private for ease of access.  This is a struct, it knows
+ * how to read and write itself to/from simple XML, that's all.
+ */
+public class DataRecord {
+  byte pl;
+  String[][] pluralNames;
+  byte[] genders; // EGender
+  String[] singularNames;
+  String[] halfNames;
+  String[] numberNames;
+  String[] mediumNames;
+  String[] shortNames;
+  String[] measures;
+  String[] rqdSuffixes;
+  String[] optSuffixes;
+  String[] halves;
+  byte[] halfPlacements; // EHalfPlacement
+  byte[] halfSupport; // EHalfSupport
+  String fifteenMinutes;
+  String fiveMinutes;
+  boolean requiresDigitSeparator;
+  String digitPrefix;
+  String countSep;
+  String shortUnitSep;
+  String[] unitSep;
+  boolean[] unitSepRequiresDP;
+  boolean[] requiresSkipMarker;
+  byte numberSystem; // ENumberSystem
+  char zero;
+  char decimalSep;
+  boolean omitSingularCount;
+  boolean omitDualCount;
+  byte zeroHandling; // EZeroHandling
+  byte decimalHandling; // EDecimalHandling
+  byte fractionHandling; // EFractionHandling
+  String skippedUnitMarker;
+  boolean allowZero;
+  boolean weeksAloneOnly;
+  byte useMilliseconds; // EMilliSupport
+  ScopeData[] scopeData;
+
+  public static DataRecord read(String ln, RecordReader in) {
+    if (in.open("DataRecord")) {
+      DataRecord record = new DataRecord();
+      record.pl = in.namedIndex("pl", EPluralization.names);
+      record.pluralNames = in.stringTable("pluralName");
+      record.genders = in.namedIndexArray("gender", EGender.names);
+      record.singularNames = in.stringArray("singularName");
+      record.halfNames = in.stringArray("halfName");
+      record.numberNames = in.stringArray("numberName");
+      record.mediumNames = in.stringArray("mediumName");
+      record.shortNames = in.stringArray("shortName");
+      record.measures = in.stringArray("measure");
+      record.rqdSuffixes = in.stringArray("rqdSuffix");
+      record.optSuffixes = in.stringArray("optSuffix");
+      record.halves = in.stringArray("halves");
+      record.halfPlacements = in.namedIndexArray("halfPlacement", EHalfPlacement.names);
+      record.halfSupport = in.namedIndexArray("halfSupport", EHalfSupport.names);
+      record.fifteenMinutes = in.string("fifteenMinutes");
+      record.fiveMinutes = in.string("fiveMinutes");
+      record.requiresDigitSeparator = in.bool("requiresDigitSeparator");
+      record.digitPrefix = in.string("digitPrefix");
+      record.countSep = in.string("countSep");
+      record.shortUnitSep = in.string("shortUnitSep");
+      record.unitSep = in.stringArray("unitSep");
+      record.unitSepRequiresDP = in.boolArray("unitSepRequiresDP");
+      record.requiresSkipMarker = in.boolArray("requiresSkipMarker");
+      record.numberSystem = in.namedIndex("numberSystem", ENumberSystem.names);
+      record.zero = in.character("zero");
+      record.decimalSep = in.character("decimalSep");
+      record.omitSingularCount = in.bool("omitSingularCount");
+      record.omitDualCount = in.bool("omitDualCount");
+      record.zeroHandling = in.namedIndex("zeroHandling", EZeroHandling.names);
+      record.decimalHandling = in.namedIndex("decimalHandling", EDecimalHandling.names);
+      record.fractionHandling = in.namedIndex("fractionHandling", EFractionHandling.names);
+      record.skippedUnitMarker = in.string("skippedUnitMarker");
+      record.allowZero = in.bool("allowZero");
+      record.weeksAloneOnly = in.bool("weeksAloneOnly");
+      record.useMilliseconds = in.namedIndex("useMilliseconds", EMilliSupport.names);
+      if (in.open("ScopeDataList")) {
+        List list = new ArrayList(); // of ScopeData
+        ScopeData data;
+        while (null != (data = ScopeData.read(in))) {
+          list.add(data);
+        }
+        if (in.close()) {
+          record.scopeData = (ScopeData[]) list.toArray(new ScopeData[list.size()]);
+        }
+      }
+      
+      if (in.close()) {
+        return record;
+      }
+    } else {
+        throw new InternalError("did not find DataRecord while reading " + ln);
+    }
+    throw new InternalError("null data read while reading "+ln);
+//    Thread.dumpStack();
+//    return null;
+  }
+
+  public void write(RecordWriter out) {
+    out.open("DataRecord");
+    out.namedIndex("pl", EPluralization.names, pl);
+    out.stringTable("pluralName", pluralNames);
+    out.namedIndexArray("gender", EGender.names, genders);
+    out.stringArray("singularName", singularNames);
+    out.stringArray("halfName", halfNames);
+    out.stringArray("numberName", numberNames);
+    out.stringArray("mediumName", mediumNames);
+    out.stringArray("shortName", shortNames);
+    out.stringArray("measure", measures);
+    out.stringArray("rqdSuffix", rqdSuffixes);
+    out.stringArray("optSuffix", optSuffixes);
+    out.stringArray("halves", halves);
+    out.namedIndexArray("halfPlacement", EHalfPlacement.names, halfPlacements);
+    out.namedIndexArray("halfSupport", EHalfSupport.names, halfSupport);
+    out.string("fifteenMinutes", fifteenMinutes);
+    out.string("fiveMinutes", fiveMinutes);
+    out.bool("requiresDigitSeparator", requiresDigitSeparator);
+    out.string("digitPrefix", digitPrefix);
+    out.string("countSep", countSep);
+    out.string("shortUnitSep", shortUnitSep);
+    out.stringArray("unitSep", unitSep);
+    out.boolArray("unitSepRequiresDP", unitSepRequiresDP);
+    out.boolArray("requiresSkipMarker", requiresSkipMarker);
+    out.namedIndex("numberSystem", ENumberSystem.names, numberSystem);
+    out.character("zero", zero);
+    out.character("decimalSep", decimalSep);
+    out.bool("omitSingularCount", omitSingularCount);
+    out.bool("omitDualCount", omitDualCount);
+    out.namedIndex("zeroHandling", EZeroHandling.names, zeroHandling);
+    out.namedIndex("decimalHandling", EDecimalHandling.names, decimalHandling);
+    out.namedIndex("fractionHandling", EFractionHandling.names, fractionHandling);
+    out.string("skippedUnitMarker", skippedUnitMarker);
+    out.bool("allowZero", allowZero);
+    out.bool("weeksAloneOnly", weeksAloneOnly);
+    out.namedIndex("useMilliseconds", EMilliSupport.names, useMilliseconds);
+    if (scopeData != null) {
+      out.open("ScopeDataList");
+      for (int i = 0; i < scopeData.length; ++i) {
+        scopeData[i].write(out);
+      }
+      out.close();
+    }
+    out.close();
+  }
+
+  public static class ScopeData {
+    String prefix;
+    boolean requiresDigitPrefix;
+    String suffix;
+
+    public void write(RecordWriter out)  {
+      out.open("ScopeData");
+      out.string("prefix", prefix);
+      out.bool("requiresDigitPrefix", requiresDigitPrefix);
+      out.string("suffix", suffix);
+      out.close();
+    }
+
+    public static ScopeData read(RecordReader in) {
+      if (in.open("ScopeData")) {
+        ScopeData scope = new ScopeData();
+        scope.prefix = in.string("prefix");
+        scope.requiresDigitPrefix = in.bool("requiresDigitPrefix");
+        scope.suffix = in.string("suffix");
+        if (in.close()) {
+          return scope;
+        }
+      }
+      return null;
+    }
+  }
+
+  public static interface ETimeLimit { 
+    public static final byte NOLIMIT = 0;
+    public static final byte LT = 1;
+    public static final byte MT = 2;
+    public static final String[] names = { "NOLIMIT", "LT", "MT" };
+  }
+
+  public static interface ETimeDirection { 
+    public static final byte NODIRECTION = 0;
+    public static final byte PAST = 1;
+    public static final byte FUTURE = 2;
+    public static final String[] names = { "NODIRECTION", "PAST", "FUTURE" };
+  }
+
+  public static interface EUnitVariant { 
+    public static final byte PLURALIZED = 0;
+    public static final byte MEDIUM = 1;
+    public static final byte SHORT = 2;
+    public static final String[] names = { "PLURALIZED", "MEDIUM", "SHORT" };
+  }
+
+  public static interface ECountVariant { 
+    public static final byte INTEGER = 0;
+    public static final byte INTEGER_CUSTOM = 1;
+    public static final byte HALF_FRACTION = 2;
+    public static final byte DECIMAL1 = 3;
+    public static final byte DECIMAL2 = 4;
+    public static final byte DECIMAL3 = 5;
+    public static final String[] names = { 
+      "INTEGER", "INTEGER_CUSTOM", "HALF_FRACTION", "DECIMAL1", 
+      "DECIMAL2", "DECIMAL3" };
+  }
+
+  public static interface EPluralization { 
+    public static final byte NONE = 0; 
+    public static final byte PLURAL = 1;
+    public static final byte DUAL = 2;
+    public static final byte PAUCAL = 3;
+    public static final byte HEBREW = 4;
+    public static final byte ARABIC = 5;
+    public static final String[] names = {
+      "NONE", "PLURAL", "DUAL", "PAUCAL", "HEBREW", "ARABIC"
+    };
+  }
+
+  public static interface EHalfPlacement { 
+    public static final byte PREFIX = 0;
+    public static final byte AFTER_FIRST = 1;
+    public static final byte LAST = 2;
+    public static final String[] names = {
+      "PREFIX", "AFTER_FIRST", "LAST"
+    };
+  }
+
+  public static interface ENumberSystem { 
+    public static final byte DEFAULT = 0;
+    public static final byte CHINESE_TRADITIONAL = 1;
+    public static final byte CHINESE_SIMPLIFIED = 2;
+    public static final byte KOREAN = 3;
+    public static final String[] names = {
+      "DEFAULT", "CHINESE_TRADITIONAL", "CHINESE_SIMPLIFIED", "KOREAN"
+    };
+  }
+
+  public static interface EZeroHandling { 
+    public static final byte ZPLURAL = 0;
+    public static final byte ZSINGULAR = 1;
+    public static final String[] names = {
+      "ZPLURAL", "ZSINGULAR"
+    };
+  }
+
+  public static interface EDecimalHandling { 
+    public static final byte DPLURAL = 0;
+    public static final byte DSINGULAR = 1;
+    public static final byte DSINGULAR_SUBONE = 2;
+    public static final byte DPAUCAL = 3;
+    public static final String[] names = {
+      "DPLURAL", "DSINGULAR", "DSINGULAR_SUBONE", "DPAUCAL"
+    };
+  }
+
+  public static interface EFractionHandling { 
+    public static final byte FPLURAL = 0;
+    public static final byte FSINGULAR_PLURAL = 1;
+    public static final byte FSINGULAR_PLURAL_ANDAHALF = 2;
+    public static final byte FPAUCAL = 3;
+    public static final String[] names = {
+      "FPLURAL", "FSINGULAR_PLURAL", "FSINGULAR_PLURAL_ANDAHALF",
+      "FPAUCAL"
+    };
+  }
+
+  public static interface EHalfSupport {
+    public static final byte YES = 0;
+    public static final byte NO = 1;
+    public static final byte ONE_PLUS = 2;
+    public static final String[] names = {
+      "YES", "NO", "ONE_PLUS"
+    };
+  }
+
+  public static interface EMilliSupport { 
+    public static final byte YES = 0;
+    public static final byte NO = 1;
+    public static final byte WITH_SECONDS = 2;
+    public static final String[] names = {
+      "YES", "NO", "WITH_SECONDS"
+    };
+  }
+
+  public static interface ESeparatorVariant { 
+    public static final byte NONE = 0;
+    public static final byte SHORT = 1;
+    public static final byte FULL = 2;
+    public static final String[] names = {
+      "NONE", "SHORT", "FULL"
+    };
+  }
+
+  public static interface EGender { 
+    public static final byte M = 0;
+    public static final byte F = 1;
+    public static final byte N = 2;
+    public static final String[] names = {
+      "M", "F", "N"
+    };
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java b/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
new file mode 100644
index 0000000..e38a64b
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
@@ -0,0 +1,660 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import com.ibm.icu.impl.duration.TimeUnit;
+
+import com.ibm.icu.impl.duration.impl.DataRecord.*;
+
+
+/**
+ * PeriodFormatterData provides locale-specific data used to format
+ * relative dates and times, and convenience api to access it.
+ *
+ * An instance of PeriodFormatterData is usually created by requesting
+ * data for a given locale from an PeriodFormatterDataService.
+ */
+public class PeriodFormatterData {
+  final DataRecord dr;
+  String localeName;
+
+  // debug
+  public static boolean trace = false;
+
+  public PeriodFormatterData(String localeName, DataRecord dr) {
+    this.dr = dr;
+    this.localeName = localeName;
+    if(localeName == null) {
+        throw new NullPointerException("localename is null");
+    }
+//    System.err.println("** localeName is " + localeName);
+    if (dr == null) {
+//      Thread.dumpStack();
+      throw new NullPointerException("data record is null");
+    }
+  }
+
+  // none - chinese (all forms the same)
+  // plural - english, special form for 1
+  // dual - special form for 1 and 2
+  // paucal - russian, special form for 1, for 2-4 and n > 20 && n % 10 == 2-4
+  // rpt_dual_few - slovenian, special form for 1, 2, 3-4 and n as above
+  // hebrew, dual plus singular form for years > 11
+  // arabic, dual, plus singular form for all terms > 10
+
+  /**
+   * Return the pluralization format used by this locale.
+   * @return the pluralization format
+   */
+  public int pluralization() {
+    return dr.pl;
+  }
+
+  /**
+   * Return true if zeros are allowed in the display.
+   * @return true if zeros should be allowed
+   */
+  public boolean allowZero() {
+    return dr.allowZero;
+  }
+
+  public boolean weeksAloneOnly() {
+    return dr.weeksAloneOnly;
+  }
+
+  public int useMilliseconds() {
+    return dr.useMilliseconds;
+  }
+
+  /**
+   * Append the appropriate prefix to the string builder, depending on whether and
+   * how a limit and direction are to be displayed.
+   *
+   * @param tl how and whether to display the time limit
+   * @param td how and whether to display the time direction
+   * @param sb the string builder to which to append the text
+   * @return true if a following digit will require a digit prefix
+   */
+  public boolean appendPrefix(int tl, int td, StringBuffer sb) {
+    if (dr.scopeData != null) {
+      int ix = tl * 3 + td;
+      ScopeData sd = dr.scopeData[ix];
+      if (sd != null) {
+        String prefix = sd.prefix;
+        if (prefix != null) {
+          sb.append(prefix);
+          return sd.requiresDigitPrefix;
+        }
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Append the appropriate suffix to the string builder, depending on whether and
+   * how a limit and direction are to be displayed.
+   *
+   * @param tl how and whether to display the time limit
+   * @param td how and whether to display the time direction
+   * @param sb the string builder to which to append the text
+   */
+  public void appendSuffix(int tl, int td, StringBuffer sb) {
+    if (dr.scopeData != null) {
+      int ix = tl * 3 + td;
+      ScopeData sd = dr.scopeData[ix];
+      if (sd != null) {
+        String suffix = sd.suffix;
+        if (suffix != null) {
+          if (trace) {
+            System.out.println("appendSuffix '" + suffix + "'");
+          }
+          sb.append(suffix);
+        }
+      }
+    }
+  }
+
+  /**
+   * Append the count and unit to the string builder.
+   *
+   * @param unit the unit to append
+   * @param count the count of units, * 1000
+   * @param cv the format to use for displaying the count
+   * @param uv the format to use for displaying the unit
+   * @param useCountSep if false, force no separator between count and unit
+   * @param useDigitPrefix if true, use the digit prefix
+   * @param multiple true if there are multiple units in this string
+   * @param last true if this is the last unit
+   * @param wasSkipped true if the unit(s) before this were skipped
+   * @param sb the string builder to which to append the text
+   * @param return true if will require skip marker
+   */
+  public boolean appendUnit(TimeUnit unit, int count, int cv, 
+                            int uv, boolean useCountSep, 
+                            boolean useDigitPrefix, boolean multiple, 
+                            boolean last, boolean wasSkipped, 
+                            StringBuffer sb) {
+    int px = unit.ordinal();
+
+    boolean willRequireSkipMarker = false;
+    if (dr.requiresSkipMarker != null && dr.requiresSkipMarker[px] && 
+        dr.skippedUnitMarker != null) {
+      if (!wasSkipped && last) {
+        sb.append(dr.skippedUnitMarker);
+      }
+      willRequireSkipMarker = true;
+    }
+
+    if (uv != EUnitVariant.PLURALIZED) {
+      boolean useMedium = uv == EUnitVariant.MEDIUM; 
+      String[] names = useMedium ? dr.mediumNames : dr.shortNames;
+      if (names == null || names[px] == null) {
+        names = useMedium ? dr.shortNames : dr.mediumNames;
+      }
+      if (names != null && names[px] != null) {
+        appendCount(unit, false, false, count, cv, useCountSep, 
+                    names[px], last, sb); // omit suffix, ok?
+        return false; // omit skip marker
+      }
+    }
+
+    // check cv
+    if (cv == ECountVariant.HALF_FRACTION && dr.halfSupport != null) {
+      switch (dr.halfSupport[px]) {
+        case EHalfSupport.YES: break;
+        case EHalfSupport.ONE_PLUS:
+          if (count > 1000) {
+            break;
+          }
+          // else fall through to decimal
+        case EHalfSupport.NO: {
+          count = (count / 500) * 500;  // round to 1/2
+          cv = ECountVariant.DECIMAL1; 
+        } break;
+      }
+    }
+          
+    String name = null;
+    int form = computeForm(unit, count, cv, multiple && last);
+    if (form == FORM_SINGULAR_SPELLED) {
+      if (dr.singularNames == null) {
+        form = FORM_SINGULAR;
+        name = dr.pluralNames[px][form];
+      } else {
+        name = dr.singularNames[px];
+      }
+    } else if (form == FORM_SINGULAR_NO_OMIT) {
+      name = dr.pluralNames[px][FORM_SINGULAR];
+    } else if (form == FORM_HALF_SPELLED) {
+      name = dr.halfNames[px];
+    } else { 
+      try {
+        name = dr.pluralNames[px][form];
+      } catch (NullPointerException e) {
+        System.out.println("Null Pointer in PeriodFormatterData["+localeName+"].au px: " + px + " form: " + form + " pn: " + dr.pluralNames);
+        throw e;
+      }
+    }
+    if (name == null) {
+      form = FORM_PLURAL;
+      name = dr.pluralNames[px][form];
+    }
+
+    boolean omitCount =
+      (form == FORM_SINGULAR_SPELLED || form == FORM_HALF_SPELLED) ||
+      (dr.omitSingularCount && form == FORM_SINGULAR) ||
+      (dr.omitDualCount && form == FORM_DUAL);
+
+    int suffixIndex = appendCount(unit, omitCount, useDigitPrefix, count, cv, 
+                                  useCountSep, name, last, sb);
+    if (last && suffixIndex >= 0) {
+      String suffix = null;
+      if (dr.rqdSuffixes != null && suffixIndex < dr.rqdSuffixes.length) {
+        suffix = dr.rqdSuffixes[suffixIndex];
+      }
+      if (suffix == null && dr.optSuffixes != null && 
+          suffixIndex < dr.optSuffixes.length) {
+        suffix = dr.optSuffixes[suffixIndex];
+      }
+      if (suffix != null) {
+        sb.append(suffix);
+      }
+    }
+    return willRequireSkipMarker;
+  }
+
+  /**
+   * Append a count to the string builder.
+   *
+   * @param unit the unit
+   * @param count the count
+   * @param cv the format to use for displaying the count
+   * @param useSep whether to use the count separator, if available
+   * @param name the term name
+   * @param last true if this is the last unit to be formatted
+   * @param sb the string builder to which to append the text
+   * @return index to use if might have required or optional suffix, or -1 if none required
+   */
+  public int appendCount(TimeUnit unit, boolean omitCount, 
+                         boolean useDigitPrefix, 
+                         int count, int cv, boolean useSep, 
+                         String name, boolean last, StringBuffer sb) {
+    if (cv == ECountVariant.HALF_FRACTION && dr.halves == null) {
+      cv = ECountVariant.INTEGER;
+    }
+
+    if (!omitCount && useDigitPrefix && dr.digitPrefix != null) {
+      sb.append(dr.digitPrefix);
+    }
+
+    int index = unit.ordinal();
+    switch (cv) {
+      case ECountVariant.INTEGER: {
+        if (!omitCount) {
+          appendInteger(count/1000, 1, 10, sb);
+        }
+      } break;
+
+      case ECountVariant.INTEGER_CUSTOM: {
+        int val = count / 1000;
+        // only custom names we have for now
+        if (unit == TimeUnit.MINUTE && 
+            (dr.fiveMinutes != null || dr.fifteenMinutes != null)) {
+          if (val != 0 && val % 5 == 0) {
+            if (dr.fifteenMinutes != null && (val == 15 || val == 45)) {
+              val = val == 15 ? 1 : 3;
+              if (!omitCount) appendInteger(val, 1, 10, sb);
+              name = dr.fifteenMinutes;
+              index = 8; // hack
+              break;
+            }
+            if (dr.fiveMinutes != null) {
+              val = val / 5;
+              if (!omitCount) appendInteger(val, 1, 10, sb);
+              name = dr.fiveMinutes;
+              index = 9; // hack
+              break;
+            }
+          }
+        }
+        if (!omitCount) appendInteger(val, 1, 10, sb);
+      } break;
+
+      case ECountVariant.HALF_FRACTION: {
+        // 0, 1/2, 1, 1-1/2...
+        int v = count / 500;
+        if (v != 1) {
+          if (!omitCount) appendCountValue(count, 1, 0, sb);
+        }
+        if ((v & 0x1) == 1) {
+          // hack, using half name
+          if (v == 1 && dr.halfNames != null && dr.halfNames[index] != null) {
+            sb.append(name);
+            return last ? index : -1;
+          }
+
+          int solox = v == 1 ? 0 : 1;
+          if (dr.genders != null && dr.halves.length > 2) {
+            if (dr.genders[index] == EGender.F) {
+              solox += 2;
+            }
+          }
+          int hp = dr.halfPlacements == null 
+              ? EHalfPlacement.PREFIX
+              : dr.halfPlacements[solox & 0x1];
+          String half = dr.halves[solox];
+          String measure = dr.measures == null ? null : dr.measures[index];
+          switch (hp) {
+            case EHalfPlacement.PREFIX:
+              sb.append(half);
+              break;
+            case EHalfPlacement.AFTER_FIRST: {
+              if (measure != null) {
+                sb.append(measure);
+                sb.append(half);
+                if (useSep && !omitCount) {
+                  sb.append(dr.countSep);
+                } 
+                sb.append(name);
+              } else { // ignore sep completely
+                sb.append(name);
+                sb.append(half);
+                return last ? index : -1; // might use suffix
+              }
+            } return -1; // exit early
+            case EHalfPlacement.LAST: {
+              if (measure != null) {
+                sb.append(measure);
+              }
+              if (useSep && !omitCount) {
+                sb.append(dr.countSep);
+              }
+              sb.append(name);
+              sb.append(half);
+            } return last ? index : -1; // might use suffix
+          }
+        }
+      } break;
+      default: {
+        int decimals = 1;
+        switch (cv) {
+          case ECountVariant.DECIMAL2: decimals = 2; break;
+          case ECountVariant.DECIMAL3: decimals = 3; break;
+          default: break;
+        }
+        if (!omitCount) appendCountValue(count, 1, decimals, sb);
+      } break;
+    }
+    if (!omitCount && useSep) {
+      sb.append(dr.countSep);
+    }
+    if (!omitCount && dr.measures != null && index < dr.measures.length) {
+      String measure = dr.measures[index];
+      if (measure != null) {
+        sb.append(measure);
+      }
+    }
+    sb.append(name);
+    return last ? index : -1;
+  }
+
+  /**
+   * Append a count value to the builder.
+   *
+   * @param count the count
+   * @param integralDigits the number of integer digits to display
+   * @param decimalDigits the number of decimal digits to display, <= 3
+   * @param sb the string builder to which to append the text
+   */
+  public void appendCountValue(int count, int integralDigits, 
+                               int decimalDigits, StringBuffer sb) {
+    int ival = count / 1000;
+    if (decimalDigits == 0) {
+      appendInteger(ival, integralDigits, 10, sb);
+      return;
+    }
+
+    if (dr.requiresDigitSeparator && sb.length() > 0) {
+      sb.append(' ');
+    }
+    appendDigits(ival, integralDigits, 10, sb);
+    int dval = count % 1000;
+    if (decimalDigits == 1) {
+      dval /= 100;
+    } else if (decimalDigits == 2) {
+      dval /= 10;
+    }
+    sb.append(dr.decimalSep);
+    appendDigits(dval, decimalDigits, decimalDigits, sb);
+    if (dr.requiresDigitSeparator) {
+      sb.append(' ');
+    }
+  }
+
+  public void appendInteger(int num, int mindigits, int maxdigits, 
+                            StringBuffer sb) {
+    if (dr.numberNames != null && num < dr.numberNames.length) {
+      String name = dr.numberNames[num];
+      if (name != null) {
+        sb.append(name);
+        return;
+      }
+    }
+
+    if (dr.requiresDigitSeparator && sb.length() > 0) {
+      sb.append(' ');
+    }
+    switch (dr.numberSystem) {
+      case ENumberSystem.DEFAULT: appendDigits(num, mindigits, maxdigits, sb); break;
+      case ENumberSystem.CHINESE_TRADITIONAL: sb.append(
+          Utils.chineseNumber(num, Utils.ChineseDigits.TRADITIONAL)); break;
+      case ENumberSystem.CHINESE_SIMPLIFIED: sb.append(
+          Utils.chineseNumber(num, Utils.ChineseDigits.SIMPLIFIED)); break;
+      case ENumberSystem.KOREAN: sb.append(
+          Utils.chineseNumber(num, Utils.ChineseDigits.KOREAN)); break;
+    }
+    if (dr.requiresDigitSeparator) {
+      sb.append(' ');
+    }
+  }
+
+  /**
+   * Append digits to the string builder, using this.zero for '0' etc.
+   *
+   * @param num the integer to append
+   * @param mindigits the minimum number of digits to append
+   * @param maxdigits the maximum number of digits to append
+   * @param sb the string builder to which to append the text
+   */
+  public void appendDigits(long num, int mindigits, int maxdigits,  
+                           StringBuffer sb) {
+    char[] buf = new char[maxdigits];
+    int ix = maxdigits;
+    while (ix > 0 && num > 0) {
+      buf[--ix] = (char)(dr.zero + (num % 10));
+      num /= 10;
+    }
+    for (int e = maxdigits - mindigits; ix > e;) {
+      buf[--ix] = dr.zero;
+    }
+    sb.append(buf, ix, maxdigits - ix);
+  }
+
+  /**
+   * Append a marker for skipped units internal to a string.
+   * @param sb the string builder to which to append the text
+   */
+  public void appendSkippedUnit(StringBuffer sb) {
+    if (dr.skippedUnitMarker != null) {
+      sb.append(dr.skippedUnitMarker);
+    }
+  }
+
+  /**
+   * Append the appropriate separator between units
+   *
+   * @param unit the unit to which to append the separator
+   * @param afterFirst true if this is the first unit formatted
+   * @param beforeLast true if this is the next-to-last unit to be formatted
+   * @param sb the string builder to which to append the text
+   * @return true if a prefix will be required before a following unit
+   */
+  public boolean appendUnitSeparator(TimeUnit unit, boolean longSep, 
+                                     boolean afterFirst, boolean beforeLast, 
+                                     StringBuffer sb) {
+    // long seps
+    // false, false "...b', '...d"
+    // false, true  "...', and 'c"
+    // true, false - "a', '...c"
+    // true, true - "a' and 'b"
+    if ((longSep && dr.unitSep != null) || dr.shortUnitSep != null) {
+      if (longSep && dr.unitSep != null) {
+        int ix = (afterFirst ? 2 : 0) + (beforeLast ? 1 : 0);
+        sb.append(dr.unitSep[ix]);
+        return dr.unitSepRequiresDP != null && dr.unitSepRequiresDP[ix];
+      }
+      sb.append(dr.shortUnitSep); // todo: investigate whether DP is required
+    }
+    return false;
+  }
+
+  private static final int 
+    FORM_PLURAL = 0,
+    FORM_SINGULAR = 1,
+    FORM_DUAL = 2,
+    FORM_PAUCAL = 3,
+    FORM_SINGULAR_SPELLED = 4, // following are not in the pluralization list
+    FORM_SINGULAR_NO_OMIT = 5, // a hack
+    FORM_HALF_SPELLED = 6;
+
+  private int computeForm(TimeUnit unit, int count, int cv, 
+                          boolean lastOfMultiple) {
+    // first check if a particular form is forced by the countvariant.  if
+    // SO, just return that.  otherwise convert the count to an integer
+    // and use pluralization rules to determine which form to use.
+    // careful, can't assume any forms but plural exist.
+
+    if (trace) {
+      System.err.println("pfd.cf unit: " + unit + " count: " + count + " cv: " + cv + " dr.pl: " + dr.pl);
+      Thread.dumpStack();
+    }
+    if (dr.pl == EPluralization.NONE) {
+      return FORM_PLURAL;
+    }
+    // otherwise, assume we have at least a singular and plural form
+
+    int val = count/1000;
+
+    switch (cv) {
+      case ECountVariant.INTEGER: 
+      case ECountVariant.INTEGER_CUSTOM: {
+        // do more analysis based on floor of count
+      } break;
+      case ECountVariant.HALF_FRACTION: {
+        switch (dr.fractionHandling) {
+          case EFractionHandling.FPLURAL:
+            return FORM_PLURAL;
+
+          case EFractionHandling.FSINGULAR_PLURAL_ANDAHALF:
+          case EFractionHandling.FSINGULAR_PLURAL: {
+            // if half-floor is 1/2, use singular
+            // else if half-floor is not integral, use plural
+            // else do more analysis
+            int v = (int)(count / 500);
+            if (v == 1) {
+              if (dr.halfNames != null && dr.halfNames[unit.ordinal()] != null) {
+                return FORM_HALF_SPELLED;
+              }
+              return FORM_SINGULAR_NO_OMIT;
+            }
+            if ((v & 0x1) == 1) {
+              if (dr.pl == EPluralization.ARABIC && v > 21) { // hack
+                return FORM_SINGULAR_NO_OMIT;
+              }
+              if (v == 3 && dr.pl == EPluralization.PLURAL &&
+                  dr.fractionHandling != EFractionHandling.FSINGULAR_PLURAL_ANDAHALF) {
+                return FORM_PLURAL;
+              }
+            }
+            
+            // it will display like an integer, so do more analysis
+          } break;
+
+          case EFractionHandling.FPAUCAL: {
+            int v = (int)(count / 500);
+            if (v == 1 || v == 3) {
+              return FORM_PAUCAL;
+            }
+            // else use integral form
+          } break;
+
+          default:
+            throw new IllegalStateException();
+        }
+      } break;
+      default: { // for all decimals
+        switch (dr.decimalHandling) {
+          case EDecimalHandling.DPLURAL: break;
+          case EDecimalHandling.DSINGULAR: return FORM_SINGULAR_NO_OMIT;
+          case EDecimalHandling.DSINGULAR_SUBONE:
+            if (count < 1000) {
+              return FORM_SINGULAR_NO_OMIT;
+            }
+            break;
+          case EDecimalHandling.DPAUCAL:
+            if (dr.pl == EPluralization.PAUCAL) {
+              return FORM_PAUCAL;
+            }
+            break;
+          default:
+            break;
+        }
+        return FORM_PLURAL;
+      }
+    }
+
+    // select among pluralization forms
+    if (trace && count == 0) {
+      System.err.println("EZeroHandling = " + dr.zeroHandling);
+    }
+    if (count == 0 && dr.zeroHandling == EZeroHandling.ZSINGULAR) {
+      return FORM_SINGULAR_SPELLED;
+    }
+
+    int form = FORM_PLURAL;
+    switch(dr.pl) {
+      case EPluralization.NONE: break; // never get here
+      case EPluralization.PLURAL: {
+        if (val == 1) { 
+          form = FORM_SINGULAR_SPELLED; // defaults to form_singular if no spelled forms
+        } 
+      } break;
+      case EPluralization.DUAL: {
+        if (val == 2) {
+          form = FORM_DUAL; 
+        } else if (val == 1) {
+          form = FORM_SINGULAR; 
+        } 
+      } break;
+      case EPluralization.PAUCAL: {
+        int v = val;
+        v = v % 100;
+        if (v > 20) {
+          v = v % 10;
+        }
+        if (v == 1) {
+          form = FORM_SINGULAR;
+        } else if (v > 1 && v < 5) {
+          form = FORM_PAUCAL;
+        }
+      } break;
+        /*
+      case EPluralization.RPT_DUAL_FEW: {
+        int v = val;
+        if (v > 20) {
+          v = v % 10;
+        }
+        if (v == 1) {
+          form = FORM_SINGULAR;
+        } else if (v == 2) {
+          form = FORM_DUAL;
+        } else if (v > 2 && v < 5) {
+          form = FORM_PAUCAL;
+        }
+      } break;
+        */
+      case EPluralization.HEBREW: {
+        if (val == 2) {
+          form = FORM_DUAL;
+        } else if (val == 1) {
+          if (lastOfMultiple) {
+            form = FORM_SINGULAR_SPELLED;
+          } else {
+            form = FORM_SINGULAR;
+          } 
+        } else if (unit == TimeUnit.YEAR && val > 11) {
+          form = FORM_SINGULAR_NO_OMIT;
+        }
+      } break;
+      case EPluralization.ARABIC: {
+        if (val == 2) {
+          form = FORM_DUAL;
+        } else if (val == 1) {
+          form = FORM_SINGULAR;
+        } else if (val > 10) {
+          form = FORM_SINGULAR_NO_OMIT;
+        }
+      } break;
+      default: 
+        System.err.println("dr.pl is " + dr.pl);
+        throw new IllegalStateException();
+    }
+
+    return form;
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java b/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
new file mode 100644
index 0000000..3bb3ff8
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
@@ -0,0 +1,32 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.util.Collection;
+
+/**
+ * Abstract service for PeriodFormatterData, which defines the
+ * localization data used by period formatters.
+ */
+public abstract class PeriodFormatterDataService {
+  /**
+   * Returns a PeriodFormatterData for the given locale name.
+   *
+   * @param localeName the name of the locale
+   * @return a PeriodFormatterData object
+   */
+  public abstract PeriodFormatterData get(String localeName);
+
+  /**
+   * Returns a collection of all the locale names supported by this
+   * service.
+   *
+   * @return a collection of locale names, as String
+   */
+  public abstract Collection getAvailableLocales();
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/RecordReader.java b/src/com/ibm/icu/impl/duration/impl/RecordReader.java
new file mode 100644
index 0000000..64e3fee
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/RecordReader.java
@@ -0,0 +1,23 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+interface RecordReader {
+  boolean open(String title);
+  boolean close();
+
+  boolean bool(String name);
+  boolean[] boolArray(String name);
+  char character(String name);
+  char[] characterArray(String name);
+  byte namedIndex(String name, String[] names);
+  byte[] namedIndexArray(String name, String[] names);
+  String string(String name);
+  String[] stringArray(String name);
+  String[][] stringTable(String name);
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/RecordWriter.java b/src/com/ibm/icu/impl/duration/impl/RecordWriter.java
new file mode 100644
index 0000000..bb94d76
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/RecordWriter.java
@@ -0,0 +1,23 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+interface RecordWriter {
+  boolean open(String title);
+  boolean close();
+
+  void bool(String name, boolean value);
+  void boolArray(String name, boolean[] values);
+  void character(String name, char value);
+  void characterArray(String name, char[] values);
+  void namedIndex(String name, String[] names, int value);
+  void namedIndexArray(String name, String[] names, byte[] values);
+  void string(String name, String value);
+  void stringArray(String name, String[] values);
+  void stringTable(String name, String[][] values);
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java b/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
new file mode 100644
index 0000000..908e325
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
@@ -0,0 +1,156 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUData;
+
+/**
+ * A PeriodFormatterDataService that serves PeriodFormatterData
+ * objects based on data files stored as resources in this directory.
+ * These are text files named after the locale, for example,
+ * 'pfd_he_IL.txt' specifies an period formatter data file for Hebrew
+ * as spoken in Israel.  Data is in a JSON-like format.
+ */
+public class ResourceBasedPeriodFormatterDataService 
+    extends PeriodFormatterDataService {
+  private Collection  availableLocales; // of String
+
+  private PeriodFormatterData lastData = null;
+  private String lastLocale = null;
+  private Map cache = new HashMap(); // String -> PeriodFormatterData
+  //private PeriodFormatterData fallbackFormatterData;
+
+  private static final String PATH = "data/";
+
+  private static final ResourceBasedPeriodFormatterDataService singleton = 
+    new ResourceBasedPeriodFormatterDataService();
+
+  /**
+   * Returns the singleton instance of this class.
+   */
+  public static ResourceBasedPeriodFormatterDataService getInstance() {
+    return singleton;
+  }
+
+  /**
+   * Constructs the service.
+   */
+  private ResourceBasedPeriodFormatterDataService() {
+    List localeNames = new ArrayList(); // of String
+    InputStream is = ICUData.getRequiredStream(getClass(), PATH + "index.txt");
+    try {
+        BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+        String string = null;
+        while (null != (string = br.readLine())) {
+          string = string.trim();
+          if(string.startsWith("#") || string.length()==0) {
+              continue;
+          }
+          localeNames.add(string);
+        }
+    }
+    catch (IOException e) {
+        throw new IllegalStateException("IO Error reading "+PATH + "index.txt: " + e.toString());
+    }
+    availableLocales = Collections.unmodifiableList(localeNames);
+  }
+
+  public PeriodFormatterData get(String localeName) {
+    // remove tag info including calendar, we don't use the calendar
+    int x = localeName.indexOf('@');
+    if (x != -1) {
+      localeName = localeName.substring(0, x);
+    }
+
+    synchronized(this) {
+      if (lastLocale != null && lastLocale.equals(localeName)) {
+        return lastData;
+      }
+
+      PeriodFormatterData ld = (PeriodFormatterData)cache.get(localeName);
+      if (ld == null) {
+        String ln = localeName;
+        while (!availableLocales.contains(ln)) {
+          int ix = ln.lastIndexOf("_");
+          if (ix > -1) {
+            ln = ln.substring(0, ix);
+          } else if (!"test".equals(ln)) {
+            ln = "test";
+          } else {
+            ln = null;
+            break;
+          }
+        }
+        if (ln != null) {
+          String name = PATH + "pfd_" + ln + ".xml";
+          try {
+            InputStream is = ICUData.getStream(getClass(), name);
+            if (is == null) {
+               throw new MissingResourceException("no resource named " + name,name,"");
+            } else {
+              DataRecord dr = DataRecord.read(ln,
+                  new XMLRecordReader(
+                      new InputStreamReader(is, "UTF-8")));
+              if (dr != null) {
+                  // debug
+//                if (false && ln.equals("ar_EG")) {
+//                  OutputStreamWriter osw = new OutputStreamWriter(System.out, "UTF-8");
+//                  XMLRecordWriter xrw = new XMLRecordWriter(osw);
+//                  dr.write(xrw);
+//                  osw.flush();
+//                }
+                ld = new PeriodFormatterData(localeName,dr);
+              }
+            }
+          } 
+          catch (UnsupportedEncodingException e) {
+              throw new MissingResourceException("Unhandled Encoding for resource " + name,name,"");
+          }
+        } else {
+            throw new MissingResourceException("Duration data not found for  " + localeName,PATH,localeName);
+        }
+
+//        if (ld == null) {
+//          ld = getFallbackFormatterData();
+//        }
+        cache.put(localeName, ld);
+      }
+      lastData = ld;
+      lastLocale = localeName;
+
+      return ld;
+    }
+  }
+  
+  public Collection  getAvailableLocales() {
+    return availableLocales;
+  }
+
+//  PeriodFormatterData getFallbackFormatterData() {
+//    synchronized (this) {
+//      if (fallbackFormatterData == null) {
+//        DataRecord dr = new DataRecord(); // hack, no default, will die if used
+//        fallbackFormatterData = new PeriodFormatterData(null, dr);
+//      }
+//      return fallbackFormatterData;
+//    }
+//  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/Utils.java b/src/com/ibm/icu/impl/duration/impl/Utils.java
new file mode 100644
index 0000000..d2ac08a
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/Utils.java
@@ -0,0 +1,224 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.util.Locale;
+
+public class Utils {
+  public static final Locale localeFromString(String s) {
+    String language = s;
+    String region = "";
+    String variant = "";
+
+    int x = language.indexOf("_");
+    if (x != -1) {
+      region = language.substring(x+1);
+      language = language.substring(0, x);
+    }
+    x = region.indexOf("_");
+    if (x != -1) {
+      variant = region.substring(x+1);
+      region = region.substring(0, x);
+    }
+    return new Locale(language, region, variant);
+  }
+    /*
+  public static <T> T[] arraycopy(T[] src) {
+    T[] result = (T[])Array.newInstance(src.getClass().getComponentType(), src.length); // can we do this without casting?
+    for (int i = 0; i < src.length; ++i) {
+      result[i] = src[i];
+    }
+    return result;
+  }
+    */
+
+  /**
+   * Interesting features of chinese numbers:
+   * - Each digit is followed by a unit symbol (10's, 100's, 1000's).
+   * - Units repeat in levels of 10,000, there are symbols for each level too (except 1's).
+   * - The digit 2 has a special form before the 10 symbol and at the end of the number.
+   * - If the first digit in the number is 1 and its unit is 10, the 1 is omitted.
+   * - Sequences of 0 digits and their units are replaced by a single 0 and no unit.
+   * - If there are two such sequences of 0 digits in a level (1000's and 10's), the 1000's 0 is also omitted.
+   * - The 1000's 0 is also omitted in alternating levels, such that it is omitted in the rightmost
+   *     level with a 10's 0, or if none, in the rightmost level.
+   * - Level symbols are omitted if all of their units are omitted
+   */
+  public static String chineseNumber(long n, ChineseDigits zh) {
+    if (n < 0) {
+      n = -n;
+    }
+    if (n <= 10) {
+      if (n == 2) {
+        return String.valueOf(zh.liang);
+      }
+      return String.valueOf(zh.digits[(int)n]);
+    }
+
+    // 9223372036854775807
+    char[] buf = new char[40]; // as long as we get, and actually we can't get this high, no units past zhao
+    char[] digits = String.valueOf(n).toCharArray();
+
+    // first, generate all the digits in place
+    // convert runs of zeros into a single zero, but keep places
+    // 
+    boolean inZero = true; // true if we should zap zeros in this block, resets at start of block
+    boolean forcedZero = false; // true if we have a 0 in tens's place
+    int x = buf.length;
+    for (int i = digits.length, u = -1, l = -1; --i >= 0;) {
+      if (u == -1) {
+        if (l != -1) {
+          buf[--x] = zh.levels[l];
+          inZero = true;
+          forcedZero = false;
+        }
+        ++u;
+      } else {
+        buf[--x] = zh.units[u++];
+        if (u == 3) {
+          u = -1;
+          ++l;
+        }
+      }
+      int d = digits[i] - '0';
+      if (d == 0) {
+        if (x < buf.length-1 && u != 0) {
+          buf[x] = '*';
+        }
+        if (inZero || forcedZero) {
+          buf[--x] = '*';
+        } else {
+          buf[--x] = zh.digits[0];
+          inZero = true;
+          forcedZero = u == 1;
+        }
+      } else {
+        inZero = false;
+        buf[--x] = zh.digits[d];
+      }
+    }
+
+    // scanning from right, find first required 'ling'
+    // we only care if n > 101,0000 as this is the first case where
+    // it might shift.  remove optional lings in alternating blocks.
+    if (n > 1000000) {
+      boolean last = true;
+      int i = buf.length - 3;
+      do {
+        if (buf[i] == '0') {
+          break;
+        }
+        i -= 8;
+        last = !last;
+      } while (i > x);
+
+      i = buf.length - 7;
+      do {
+        if (buf[i] == zh.digits[0] && !last) {
+          buf[i] = '*';
+        }
+        i -= 8;
+        last = !last;
+      } while (i > x);
+
+      // remove levels for empty blocks
+      if (n >= 100000000) {
+        i = buf.length - 8;
+        do {
+          boolean empty = true;
+          for (int j = i-1, e = Math.max(x-1, i-8); j > e; --j) {
+            if (buf[j] != '*') {
+              empty = false;
+              break;
+            }
+          }
+          if (empty) {
+            if (buf[i+1] != '*' && buf[i+1] != zh.digits[0]) {
+              buf[i] = zh.digits[0];
+            } else {
+              buf[i] = '*';
+            }
+          }
+          i -= 8;
+        } while (i > x);
+      }          
+    }
+
+    // replace er by liang except before or after shi or after ling
+    for (int i = x; i < buf.length; ++i) {
+      if (buf[i] != zh.digits[2]) continue;
+      if (i < buf.length - 1 && buf[i+1] == zh.units[0]) continue;
+      if (i > x && (buf[i-1] == zh.units[0] || buf[i-1] == zh.digits[0] || buf[i-1] == '*')) continue;
+
+      buf[i] = zh.liang;
+    }
+    
+    // eliminate leading 1 if following unit is shi
+    if (buf[x] == zh.digits[1] && (zh.ko || buf[x+1] == zh.units[0])) {
+      ++x;
+    }
+
+    // now, compress out the '*'
+    int w = x;
+    for (int r = x; r < buf.length; ++r) {
+      if (buf[r] != '*') {
+        buf[w++] = buf[r];
+      }
+    }
+    return new String(buf, x, w-x);
+  }
+
+  public static void main(String[] args) {
+    for (int i = 0; i < args.length; ++i) {
+      String arg = args[i];
+      System.out.print(arg);
+      System.out.print(" > ");
+      long n = Long.parseLong(arg);
+      System.out.println(chineseNumber(n, ChineseDigits.DEBUG));
+    }
+  }
+
+  public static class ChineseDigits {
+    final char[] digits;
+    final char[] units;
+    final char[] levels;
+    final char liang;
+    final boolean ko;
+
+    ChineseDigits(String digits, String units, String levels, char liang, boolean ko) {
+      this.digits = digits.toCharArray();
+      this.units = units.toCharArray();
+      this.levels = levels.toCharArray();
+      this.liang = liang;
+      this.ko = ko;
+    }
+
+    public static final ChineseDigits DEBUG = 
+      new ChineseDigits("0123456789s", "sbq", "WYZ", 'L', false);
+
+    public static final ChineseDigits TRADITIONAL = 
+      new ChineseDigits("\u96f6\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341", // to shi
+                        "\u5341\u767e\u5343", // shi, bai, qian
+                        "\u842c\u5104\u5146", // wan, yi, zhao
+                        '\u5169', false); // liang
+
+    public static final ChineseDigits SIMPLIFIED = 
+      new ChineseDigits("\u96f6\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\u5341", // to shi
+                        "\u5341\u767e\u5343", // shi, bai, qian
+                        "\u4e07\u4ebf\u5146", // wan, yi, zhao
+                        '\u4e24', false); // liang
+    
+    // no 1 before first unit no matter what it is
+    // not sure if there are 'ling' units
+    public static final ChineseDigits KOREAN =
+      new ChineseDigits("\uc601\uc77c\uc774\uc0bc\uc0ac\uc624\uc721\uce60\ud314\uad6c\uc2ed", // to ten
+                        "\uc2ed\ubc31\ucc9c", // 10, 100, 1000
+                        "\ub9cc\uc5b5?", // 10^4, 10^8, 10^12
+                        '\uc774', true);
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java b/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
new file mode 100644
index 0000000..9b8e77c
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
@@ -0,0 +1,306 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ibm.icu.lang.UCharacter;
+
+public class XMLRecordReader implements RecordReader {
+    private Reader r;
+
+    private List nameStack;
+
+    private boolean atTag;
+
+    private String tag; // cache
+
+    public XMLRecordReader(Reader r) {
+        this.r = r;
+        this.nameStack = new ArrayList();
+
+        // skip XML prologue
+        if (getTag().startsWith("?xml")) {
+            advance();
+        }
+
+        // skip FIRST comment
+        if (getTag().startsWith("!--")) {
+            advance();
+        }
+    }
+
+    public boolean open(String title) {
+        if (getTag().equals(title)) {
+            nameStack.add(title);
+            advance();
+            return true;
+        }
+        return false;
+    }
+
+    public boolean close() {
+        int ix = nameStack.size() - 1;
+        String name = (String) nameStack.get(ix);
+        if (getTag().equals("/" + name)) {
+            nameStack.remove(ix);
+            advance();
+            return true;
+        }
+        return false;
+    }
+
+    public boolean bool(String name) {
+        String s = string(name);
+        if (s != null) {
+            return "true".equals(s);
+        }
+        return false;
+    }
+
+    public boolean[] boolArray(String name) {
+        String[] sa = stringArray(name);
+        if (sa != null) {
+            boolean[] result = new boolean[sa.length];
+            for (int i = 0; i < sa.length; ++i) {
+                result[i] = "true".equals(sa[i]);
+            }
+            return result;
+        }
+        return null;
+    }
+
+    public char character(String name) {
+        String s = string(name);
+        if (s != null) {
+            return s.charAt(0);
+        }
+        return '\uffff';
+    }
+
+    public char[] characterArray(String name) {
+        String[] sa = stringArray(name);
+        if (sa != null) {
+            char[] result = new char[sa.length];
+            for (int i = 0; i < sa.length; ++i) {
+                result[i] = sa[i].charAt(0);
+            }
+            return result;
+        }
+        return null;
+    }
+
+    public byte namedIndex(String name, String[] names) {
+        String sa = string(name);
+        if (sa != null) {
+            for (int i = 0; i < names.length; ++i) {
+                if (sa.equals(names[i])) {
+                    return (byte) i;
+                }
+            }
+        }
+        return (byte) -1;
+    }
+
+    public byte[] namedIndexArray(String name, String[] names) {
+        String[] sa = stringArray(name);
+        if (sa != null) {
+            byte[] result = new byte[sa.length];
+            loop: for (int i = 0; i < sa.length; ++i) {
+                String s = sa[i];
+                for (int j = 0; j < names.length; ++j) {
+                    if (names[j].equals(s)) {
+                        result[i] = (byte) j;
+                        continue loop;
+                    }
+                }
+                result[i] = (byte) -1;
+            }
+            return result;
+        }
+        return null;
+    }
+
+    public String string(String name) {
+        if (match(name)) {
+            String result = readData();
+            if (match("/" + name)) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    public String[] stringArray(String name) {
+        if (match(name + "List")) {
+            List list = new ArrayList();
+            String s;
+            while (null != (s = string(name))) {
+                if ("Null".equals(s)) {
+                    s = null;
+                }
+                list.add(s);
+            }
+            if (match("/" + name + "List")) {
+                return (String[]) list.toArray(new String[list.size()]);
+            }
+        }
+        return null;
+    }
+
+    public String[][] stringTable(String name) {
+        if (match(name + "Table")) {
+            List list = new ArrayList();
+            String[] sa;
+            while (null != (sa = stringArray(name))) {
+                list.add(sa);
+            }
+            if (match("/" + name + "Table")) {
+                return (String[][]) list.toArray(new String[list.size()][]);
+            }
+        }
+        return null;
+    }
+
+    private boolean match(String target) {
+        if (getTag().equals(target)) {
+            // System.out.println("match '" + target + "'");
+            advance();
+            return true;
+        }
+        return false;
+    }
+
+    private String getTag() {
+        if (tag == null) {
+            tag = readNextTag();
+        }
+        return tag;
+    }
+
+    private void advance() {
+        tag = null;
+    }
+
+    private String readData() {
+        StringBuffer sb = new StringBuffer();
+        boolean inWhitespace = false;
+        // boolean inAmp = false;
+        while (true) {
+            int c = readChar();
+            if (c == -1 || c == '<') {
+                atTag = c == '<';
+                break;
+            }
+            if (c == '&') {
+                c = readChar();
+                if (c == '#') {
+                    StringBuffer numBuf = new StringBuffer();
+                    int radix = 10;
+                    c = readChar();
+                    if (c == 'x') {
+                        radix = 16;
+                        c = readChar();
+                    }
+                    while (c != ';' && c != -1) {
+                        numBuf.append((char) c);
+                        c = readChar();
+                    }
+                    try {
+                        int num = Integer.parseInt(numBuf.toString(), radix);
+                        c = (char) num;
+                    } catch (NumberFormatException ex) {
+                        System.err.println("numbuf: " + numBuf.toString()
+                                + " radix: " + radix);
+                        throw ex;
+                    }
+                } else {
+                    StringBuffer charBuf = new StringBuffer();
+                    while (c != ';' && c != -1) {
+                        charBuf.append((char) c);
+                        c = readChar();
+                    }
+                    String charName = charBuf.toString();
+                    if (charName.equals("lt")) {
+                        c = '<';
+                    } else if (charName.equals("gt")) {
+                        c = '>';
+                    } else if (charName.equals("quot")) {
+                        c = '"';
+                    } else if (charName.equals("apos")) {
+                        c = '\'';
+                    } else if (charName.equals("amp")) {
+                        c = '&';
+                    } else {
+                        System.err.println("unrecognized character entity: '"
+                                + charName + "'");
+                        continue;
+                    }
+                }
+            }
+
+            if (UCharacter.isWhitespace(c)) {
+                if (inWhitespace) {
+                    continue;
+                }
+                c = ' ';
+                inWhitespace = true;
+            } else {
+                inWhitespace = false;
+            }
+            sb.append((char) c);
+        }
+        //System.err.println("read data: '" + sb.toString() + "'");
+        return sb.toString();
+    }
+
+    private String readNextTag() {
+        int c = '\0';
+        while (!atTag) {
+            c = readChar();
+            if (c == '<' || c == -1) {
+                if (c == '<') {
+                    atTag = true;
+                }
+                break;
+            }
+            if (!UCharacter.isWhitespace(c)) {
+                System.err.println("Unexpected non-whitespace character "
+                        + Integer.toHexString(c));
+                break;
+            }
+        }
+
+        if (atTag) {
+            atTag = false;
+            StringBuffer sb = new StringBuffer();
+            while (true) {
+                c = readChar();
+                if (c == '>' || c == -1) {
+                    break;
+                }
+                sb.append((char) c);
+            }
+            // System.err.println("read tag: '" + sb.toString() + "'");
+            return sb.toString();
+        }
+        return null;
+    }
+
+    int readChar() {
+        try {
+            return r.read();
+        } catch (IOException e) {
+            // assume end of input
+        }
+        return -1;
+    }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java b/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
new file mode 100644
index 0000000..02f3800
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
@@ -0,0 +1,259 @@
+/*
+******************************************************************************
+* Copyright (C) 2007, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.ibm.icu.lang.UCharacter;
+
+public class XMLRecordWriter implements RecordWriter {
+  private Writer w;
+  private List nameStack;
+
+  public XMLRecordWriter(Writer w) {
+    this.w = w;
+    this.nameStack = new ArrayList();
+  }
+
+  public boolean open(String title) {
+    newline();
+    writeString("<" + title + ">");
+    nameStack.add(title);
+    return true;
+  }
+
+  public boolean close() {
+    int ix = nameStack.size() - 1;
+    if (ix >= 0) {
+      String name = (String) nameStack.remove(ix);
+      newline();
+      writeString("</" + name + ">");
+      return true;
+    }
+    return false;
+  }
+
+  public void flush() {
+    try {
+      w.flush();
+    }
+    catch (IOException e) {
+    }
+  }
+
+  public void bool(String name, boolean value) {
+    internalString(name, String.valueOf(value));
+  }
+
+  public void boolArray(String name, boolean[] values) {
+    if (values != null) {
+      String[] stringValues = new String[values.length];
+      for (int i = 0; i < values.length; ++i) {
+        stringValues[i] = String.valueOf(values[i]);
+      }
+      stringArray(name, stringValues);
+    }
+  }
+
+  private static String ctos(char value) {
+    if (value == '<') {
+      return "&lt;";
+    }
+    if (value == '&') {
+      return "&amp;";
+    }
+    return String.valueOf(value);
+  }
+
+  public void character(String name, char value) {
+    if (value != '\uffff') {
+      internalString(name, ctos(value));
+    }
+  }
+
+  public void characterArray(String name, char[] values) {
+    if (values != null) {
+      String[] stringValues = new String[values.length];
+      for (int i = 0; i < values.length; ++i) {
+        char value = values[i];
+        if (value == '\uffff') {
+          stringValues[i] = NULL_NAME;
+        } else {
+          stringValues[i] = ctos(value);
+        }
+      }
+      internalStringArray(name, stringValues);
+    }
+  }
+
+  public void namedIndex(String name, String[] names, int value) {
+    if (value >= 0) {
+      internalString(name, names[value]);
+    }
+  }
+
+  public void namedIndexArray(String name, String[] names, byte[] values) {
+    if (values != null) {
+      String[] stringValues = new String[values.length];
+      for (int i = 0; i < values.length; ++i) {
+        int value = values[i];
+        if (value < 0) {
+          stringValues[i] = NULL_NAME;
+        } else {
+          stringValues[i] = names[value];
+        }
+      }
+      internalStringArray(name, stringValues);
+    }
+  }
+
+  public static String normalize(String str) {
+    if (str == null) {
+      return null;
+    }
+    StringBuffer sb = null;
+    boolean inWhitespace = false;
+    char c = '\0';
+    boolean special = false;
+    for (int i = 0; i < str.length(); ++i) {
+      c = str.charAt(i);
+      if (UCharacter.isWhitespace(c)) {
+        if (sb == null && (inWhitespace || c != ' ')) {
+          sb = new StringBuffer(str.substring(0, i));
+        }
+        if (inWhitespace) {
+          continue;
+        }
+        inWhitespace = true;
+        special = false;
+        c = ' ';
+      } else {
+        inWhitespace = false;
+        special = c == '<' || c == '&';
+        if (special && sb == null) {
+          sb = new StringBuffer(str.substring(0, i));
+        }
+      }
+      if (sb != null) {
+        if (special) {
+          sb.append(c == '<' ? "&lt;" : "&amp;");
+        } else {
+          sb.append(c);
+        }
+      }
+    }
+    if (sb != null) {
+      /*
+      if (c == ' ') {
+        int len = sb.length();
+        if (len == 0) {
+          return " ";
+        }
+        if (len > 1 && c == ' ') {
+          sb.deleteCharAt(len - 1);
+        }
+      }
+      */
+      return sb.toString();
+    }
+    return str;
+  }
+
+  private void internalString(String name, String normalizedValue) {
+    if (normalizedValue != null) {
+      newline();
+      writeString("<" + name + ">" + normalizedValue + "</" + name + ">");
+    }
+  }
+
+  private void internalStringArray(String name, String[] normalizedValues) {
+    if (normalizedValues != null) {
+      push(name + "List");
+      for (int i = 0; i < normalizedValues.length; ++i) {
+        String value = normalizedValues[i];
+        if (value == null) {
+          value = NULL_NAME;
+        }
+        string(name, value);
+      }
+      pop();
+    }
+  }
+    
+  public void string(String name, String value) {
+    internalString(name, normalize(value));
+  }
+
+  public void stringArray(String name, String[] values) {
+    if (values != null) {
+      push(name + "List");
+      for (int i = 0; i < values.length; ++i) {
+        String value = normalize(values[i]);
+        if (value == null) {
+          value = NULL_NAME;
+        }
+        internalString(name, value);
+      }
+      pop();
+    }
+  }
+
+  public void stringTable(String name, String[][] values) {
+    if (values != null) {
+      push(name + "Table");
+      for (int i = 0; i < values.length; ++i) {
+        String[] rowValues = values[i];
+        if (rowValues == null) {
+          internalString(name + "List", NULL_NAME);
+        } else {
+          stringArray(name, rowValues);
+        }
+      }
+      pop();
+    }
+  }
+
+  private void push(String name) {
+    newline();
+    writeString("<" + name + ">");
+    nameStack.add(name);
+  }
+
+  private void pop() {
+    int ix = nameStack.size() - 1;
+    String name = (String) nameStack.remove(ix);
+    newline();
+    writeString("</" + name + ">");
+  }
+
+  private void newline() {
+      writeString("\n");
+      for (int i = 0; i < nameStack.size(); ++i) {
+        writeString(INDENT);
+      }
+  }
+
+  private void writeString(String str) {
+    if (w != null) {
+      try {
+        w.write(str);
+      }
+      catch (IOException e) {
+        // if there's a problem, record it and stop writing
+        System.err.println(e.getMessage());
+        w = null;
+      }
+    }
+  }
+
+  static final String NULL_NAME = "Null";
+  private static final String INDENT = "    ";
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/YMDDateFormatter.java b/src/com/ibm/icu/impl/duration/impl/YMDDateFormatter.java
new file mode 100644
index 0000000..6845e17
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/YMDDateFormatter.java
@@ -0,0 +1,98 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl.duration.impl;
+
+import  com.ibm.icu.impl.duration.DateFormatter;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * A DateFormatter that formats the requested date fields.
+ */
+public class YMDDateFormatter implements DateFormatter {
+  private String requestedFields;
+  private String localeName;
+  private TimeZone timeZone;
+  private SimpleDateFormat df; // cache
+
+  /**
+   * Creates a new formatter that formats the requested 
+   * fields.  The formatter defaults to the current locale
+   * and time zone.
+   *
+   * @param requestedFields the requested fields
+   */
+  public YMDDateFormatter(String requestedFields) {
+    this(requestedFields, Locale.getDefault().toString(),
+         TimeZone.getDefault());
+  }
+
+  /**
+   * Creates a new formatter that formats the requested 
+   * fields using the provided locale and time zone.
+   *
+   * @param requestedFields the requested fields
+   * @param localeName the locale to use
+   * @param timeZone the time zone to use
+   */
+  public YMDDateFormatter(String requestedFields, String localeName, 
+                             TimeZone timeZone) {
+    this.requestedFields = requestedFields;
+    this.localeName = localeName;
+    this.timeZone = timeZone;
+
+    Locale locale = Utils.localeFromString(localeName);
+    this.df = new SimpleDateFormat("yyyy/mm/dd", locale);
+    this.df.setTimeZone(timeZone);
+  }
+
+  /**
+   * Returns a string representing the formatted date.
+   * @param date the date in milliseconds
+   */
+  public String format(long date) {
+    return format(new Date(date));
+  }
+
+  /**
+   * Returns a string representing the formatted date.
+   * @param date the date
+   */
+  public String format(Date date) {
+    synchronized (this) {
+      if (df == null) {
+        // ignores requested fields
+        // todo: make this really work
+      }
+    }
+    return df.format(date);
+  }
+
+  /**
+   * Returns a version of this formatter customized to the provided locale.
+   */
+  public DateFormatter withLocale(String locName) {
+    if (!locName.equals(localeName)) {
+      return new YMDDateFormatter(requestedFields, locName, timeZone);
+    }
+    return this;
+  }
+
+  /**
+   * Returns a version of this formatter customized to the provided time zone.
+   */
+  public DateFormatter withTimeZone(TimeZone tz) {
+    if (!tz.equals(timeZone)) {
+      return new YMDDateFormatter(requestedFields, localeName, tz);
+    }
+    return this;
+  }
+}
diff --git a/src/com/ibm/icu/impl/duration/impl/data/index.txt b/src/com/ibm/icu/impl/duration/impl/data/index.txt
new file mode 100644
index 0000000..ead7988
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/index.txt
@@ -0,0 +1,19 @@
+#******************************************************************************
+#* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+#* others. All Rights Reserved.                                               *
+#******************************************************************************
+ar_EG
+en
+es
+fr
+he_IL
+hi
+it
+ja
+ko
+ru
+th
+zh_Hans
+zh_Hans_SG
+zh_Hant
+zh_Hant_HK
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml
new file mode 100644
index 0000000..f78c305
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>ARABIC</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>&#x0633;&#x0646;&#x0648;&#x0627;&#x062a;</pluralName>
+            <pluralName>&#x0633;&#x0646;&#x0629;</pluralName>
+            <pluralName>&#x0633;&#x0646;&#x062a;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0634;&#x0647;&#x0648;&#x0631;</pluralName>
+            <pluralName>&#x0634;&#x0647;&#x0631;</pluralName>
+            <pluralName>&#x0634;&#x0647;&#x0631;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0623;&#x0633;&#x0627;&#x0628;&#x064a;&#x0639;</pluralName>
+            <pluralName>&#x0623;&#x0633;&#x0628;&#x0648;&#x0639;</pluralName>
+            <pluralName>&#x0623;&#x0633;&#x0628;&#x0648;&#x0639;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0623;&#x064a;&#x0627;&#x0645;</pluralName>
+            <pluralName>&#x064a;&#x0648;&#x0645;</pluralName>
+            <pluralName>&#x064a;&#x0648;&#x0645;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0633;&#x0627;&#x0639;&#x0627;&#x062a;</pluralName>
+            <pluralName>&#x0633;&#x0627;&#x0639;&#x0629;</pluralName>
+            <pluralName>&#x0633;&#x0627;&#x0639;&#x062a;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x062f;&#x0642;&#x0627;&#x0626;&#x0642;</pluralName>
+            <pluralName>&#x062f;&#x0642;&#x064a;&#x0642;&#x0629;</pluralName>
+            <pluralName>&#x062f;&#x0642;&#x064a;&#x0642;&#x062a;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x062b;&#x0648;&#x0627;&#x0646;&#x064a;</pluralName>
+            <pluralName>&#x062b;&#x0627;&#x0646;&#x064a;&#x0629;</pluralName>
+            <pluralName>&#x062b;&#x0627;&#x0646;&#x064a;&#x062a;&#x064a;&#x0646;</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>&#x0623;&#x062c;&#x0632;&#x0627;&#x0621; &#x0645;&#x0646; &#x0627;&#x0644;&#x062b;&#x0627;&#x0646;&#x064a;&#x0629;</pluralName>
+            <pluralName>&#x062c;&#x0632;&#x0621; &#x0645;&#x0646; &#x0627;&#x0644;&#x062b;&#x0627;&#x0646;&#x064a;&#x0629;</pluralName>
+            <pluralName>&#x062c;&#x0632;&#x0626;&#x064a;&#x0646; &#x0645;&#x0646; &#x0627;&#x0644;&#x062b;&#x0627;&#x0646;&#x064a;&#x0629;</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>&#x0646;&#x0635;&#x0641;</halves>
+        <halves> &#x0648;&#x0646;&#x0635;&#x0641;</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>&#x060c; &#x0648;</unitSep>
+        <unitSep>&#x060c; &#x0648;</unitSep>
+        <unitSep>&#x060c; &#x0648;</unitSep>
+        <unitSep> &#x0648;</unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>&#x0660;</zero>
+    <decimalSep>&#x066b;</decimalSep>
+    <omitSingularCount>true</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DSINGULAR</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0645;&#x0646;&#x0630; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> &#x0628;&#x0639;&#x062f; &#x0627;&#x0644;&#x0622;&#x0646;</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0623;&#x0642;&#x0644; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0645;&#x0646;&#x0630; &#x0623;&#x0642;&#x0644; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0623;&#x0642;&#x0644; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> &#x0628;&#x0639;&#x062f; &#x0627;&#x0644;&#x0622;&#x0646;</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0623;&#x0643;&#x062b;&#x0631; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0645;&#x0646;&#x0630; &#x0623;&#x0643;&#x062b;&#x0631; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>&#x0623;&#x0643;&#x062b;&#x0631; &#x0645;&#x0646; </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> &#x0628;&#x0639;&#x062f; &#x0627;&#x0644;&#x0622;&#x0646;</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped b/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
new file mode 100644
index 0000000..63bc4f9
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>ARABIC</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>\u0633\u0646\u0648\u0627\u062a</pluralName>
+            <pluralName>\u0633\u0646\u0629</pluralName>
+            <pluralName>\u0633\u0646\u062a\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0634\u0647\u0648\u0631</pluralName>
+            <pluralName>\u0634\u0647\u0631</pluralName>
+            <pluralName>\u0634\u0647\u0631\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0623\u0633\u0627\u0628\u064a\u0639</pluralName>
+            <pluralName>\u0623\u0633\u0628\u0648\u0639</pluralName>
+            <pluralName>\u0623\u0633\u0628\u0648\u0639\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0623\u064a\u0627\u0645</pluralName>
+            <pluralName>\u064a\u0648\u0645</pluralName>
+            <pluralName>\u064a\u0648\u0645\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0633\u0627\u0639\u0627\u062a</pluralName>
+            <pluralName>\u0633\u0627\u0639\u0629</pluralName>
+            <pluralName>\u0633\u0627\u0639\u062a\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u062f\u0642\u0627\u0626\u0642</pluralName>
+            <pluralName>\u062f\u0642\u064a\u0642\u0629</pluralName>
+            <pluralName>\u062f\u0642\u064a\u0642\u062a\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u062b\u0648\u0627\u0646\u064a</pluralName>
+            <pluralName>\u062b\u0627\u0646\u064a\u0629</pluralName>
+            <pluralName>\u062b\u0627\u0646\u064a\u062a\u064a\u0646</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>\u0623\u062c\u0632\u0627\u0621 \u0645\u0646 \u0627\u0644\u062b\u0627\u0646\u064a\u0629</pluralName>
+            <pluralName>\u062c\u0632\u0621 \u0645\u0646 \u0627\u0644\u062b\u0627\u0646\u064a\u0629</pluralName>
+            <pluralName>\u062c\u0632\u0626\u064a\u0646 \u0645\u0646 \u0627\u0644\u062b\u0627\u0646\u064a\u0629</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>\u0646\u0635\u0641</halves>
+        <halves> \u0648\u0646\u0635\u0641</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>\u060c \u0648</unitSep>
+        <unitSep>\u060c \u0648</unitSep>
+        <unitSep>\u060c \u0648</unitSep>
+        <unitSep> \u0648</unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>\u0660</zero>
+    <decimalSep>\u066b</decimalSep>
+    <omitSingularCount>true</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DSINGULAR</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0645\u0646\u0630 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> \u0628\u0639\u062f \u0627\u0644\u0622\u0646</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0623\u0642\u0644 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0645\u0646\u0630 \u0623\u0642\u0644 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0623\u0642\u0644 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> \u0628\u0639\u062f \u0627\u0644\u0622\u0646</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0623\u0643\u062b\u0631 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0645\u0646\u0630 \u0623\u0643\u062b\u0631 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>\u0623\u0643\u062b\u0631 \u0645\u0646 </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> \u0628\u0639\u062f \u0627\u0644\u0622\u0646</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml
new file mode 100644
index 0000000..49b24f7
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>years</pluralName>
+            <pluralName>year</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>months</pluralName>
+            <pluralName>month</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>weeks</pluralName>
+            <pluralName>week</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>days</pluralName>
+            <pluralName>day</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>hours</pluralName>
+            <pluralName>hour</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>minutes</pluralName>
+            <pluralName>minute</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>seconds</pluralName>
+            <pluralName>second</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>milliseconds</pluralName>
+            <pluralName>millisecond</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <mediumNameList>
+        <mediumName>yr</mediumName>
+        <mediumName>mnth</mediumName>
+        <mediumName>wk</mediumName>
+        <mediumName>dy</mediumName>
+        <mediumName>hr</mediumName>
+        <mediumName>min</mediumName>
+        <mediumName>sec</mediumName>
+        <mediumName>ms</mediumName>
+    </mediumNameList>
+    <shortNameList>
+        <shortName>y</shortName>
+        <shortName>m</shortName>
+        <shortName>w</shortName>
+        <shortName>d</shortName>
+        <shortName>h</shortName>
+        <shortName>m</shortName>
+        <shortName>s</shortName>
+        <shortName>x</shortName>
+    </shortNameList>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep>, and </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> and </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> ago</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> from now</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>less than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>less than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> ago</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>less than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> from now</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>more than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>more than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> ago</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>more than </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> from now</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml
new file mode 100644
index 0000000..b1473e3
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>años</pluralName>
+            <pluralName>año</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>meses</pluralName>
+            <pluralName>mes</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>semanas</pluralName>
+            <pluralName>semana</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>días</pluralName>
+            <pluralName>día</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>horas</pluralName>
+            <pluralName>hora</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>minutos</pluralName>
+            <pluralName>minuto</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>segundos</pluralName>
+            <pluralName>segundo</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>milisegundos</pluralName>
+            <pluralName>milisegundo</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <genderList>
+        <gender>M</gender>
+        <gender>M</gender>
+        <gender>F</gender>
+        <gender>M</gender>
+        <gender>F</gender>
+        <gender>M</gender>
+        <gender>M</gender>
+        <gender>M</gender>
+    </genderList>
+    <singularNameList>
+        <singularName>un año</singularName>
+        <singularName>un mes</singularName>
+        <singularName>una semana</singularName>
+        <singularName>un día</singularName>
+        <singularName>una hora</singularName>
+        <singularName>un minuto</singularName>
+        <singularName>un segundo</singularName>
+        <singularName>un milisegundo</singularName>
+    </singularNameList>
+    <mediumNameList>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>d</mediumName>
+        <mediumName>hr</mediumName>
+        <mediumName>min</mediumName>
+        <mediumName>seg</mediumName>
+        <mediumName>mseg</mediumName>
+    </mediumNameList>
+    <shortNameList>
+        <shortName>a</shortName>
+        <shortName>m</shortName>
+        <shortName>s</shortName>
+        <shortName>d</shortName>
+        <shortName>h</shortName>
+        <shortName>m</shortName>
+        <shortName>s</shortName>
+        <shortName>ms</shortName>
+    </shortNameList>
+    <halvesList>
+        <halves>medio </halves>
+        <halves> y medio</halves>
+        <halves>media </halves>
+        <halves> y media</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> y </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> y </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>,</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL_ANDAHALF</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>hace </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dentro de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>menos de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>hace menos de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dentro de menos de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>más de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>hace más de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dentro más de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml
new file mode 100644
index 0000000..0809dd2
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>ans</pluralName>
+            <pluralName>an</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>mois</pluralName>
+            <pluralName>mois</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>semaines</pluralName>
+            <pluralName>semaine</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>jours</pluralName>
+            <pluralName>jour</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>heures</pluralName>
+            <pluralName>heure</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>minutes</pluralName>
+            <pluralName>minute</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>secondes</pluralName>
+            <pluralName>seconde</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>millisecondes</pluralName>
+            <pluralName>milliseconde</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> et </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> et </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <zeroHandling>ZSINGULAR</zeroHandling>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>il y a </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dans </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>moins de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>il y a moins de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dans moins de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>plus de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>il y a plus de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>dans plus de </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml
new file mode 100644
index 0000000..4018d0d
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>HEBREW</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>שנים</pluralName>
+            <pluralName>שנה</pluralName>
+            <pluralName>שנתיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>חודשים</pluralName>
+            <pluralName>חודש</pluralName>
+            <pluralName>חודשיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>שבועות</pluralName>
+            <pluralName>שבוע</pluralName>
+            <pluralName>שבועיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>ימים</pluralName>
+            <pluralName>יום</pluralName>
+            <pluralName>יומיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>שעות</pluralName>
+            <pluralName>שעה</pluralName>
+            <pluralName>שעתיים</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>דקות</pluralName>
+            <pluralName>דקה</pluralName>
+            <pluralName>Null</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>שניות</pluralName>
+            <pluralName>שנייה</pluralName>
+            <pluralName>Null</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>מילישניות</pluralName>
+            <pluralName>מילישניה</pluralName>
+            <pluralName>Null</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <singularNameList>
+        <singularName>שנה אחת</singularName>
+        <singularName>חודש אחד</singularName>
+        <singularName>שבוע אחד</singularName>
+        <singularName>יום אחד</singularName>
+        <singularName>שעה אחת</singularName>
+        <singularName>דקה אחת</singularName>
+        <singularName>שנייה אחת</singularName>
+        <singularName>מילישניה אחת</singularName>
+    </singularNameList>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <digitPrefix>־</digitPrefix>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> ו</unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> ו</unitSep>
+    </unitSepList>
+    <unitSepRequiresDPList>
+        <unitSepRequiresDP>false</unitSepRequiresDP>
+        <unitSepRequiresDP>true</unitSepRequiresDP>
+        <unitSepRequiresDP>false</unitSepRequiresDP>
+        <unitSepRequiresDP>true</unitSepRequiresDP>
+    </unitSepRequiresDPList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>true</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DSINGULAR_SUBONE</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>לפני </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>אחרי </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>יותר מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>לפני יותר מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>אחרי יותר מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>פחות מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>לפני פחות מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>אחרי פחות מ</prefix>
+            <requiresDigitPrefix>true</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml
new file mode 100644
index 0000000..6222ef5
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>साल</pluralName>
+            <pluralName>साल</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>महीने</pluralName>
+            <pluralName>महीना</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>सप्ताह</pluralName>
+            <pluralName>सप्ताह</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>दिन</pluralName>
+            <pluralName>दिन</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>घंटे</pluralName>
+            <pluralName>घंटा</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>मिनट</pluralName>
+            <pluralName>मिनट</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>सेकण्ड</pluralName>
+            <pluralName>सेकण्ड</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>मिली सेकण्ड</pluralName>
+            <pluralName>मिली सेकण्ड</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> और </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> और </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>०</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FPLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> पहले</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>अभी से </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> बाद</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से कम</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से कम पहले</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से कम from now</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से ज़्यादा</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से ज़्यादा ago</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> से ज़्यादा from now</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml
new file mode 100644
index 0000000..245a317
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PLURAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>anni</pluralName>
+            <pluralName>anno</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>mesi</pluralName>
+            <pluralName>mese</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>settimane</pluralName>
+            <pluralName>settimana</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>giorni</pluralName>
+            <pluralName>giorno</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>ore</pluralName>
+            <pluralName>ora</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>minuti</pluralName>
+            <pluralName>minuto</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>secondi</pluralName>
+            <pluralName>secondo</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>millisecondi</pluralName>
+            <pluralName>millisecondo</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <genderList>
+        <gender>M</gender>
+        <gender>M</gender>
+        <gender>F</gender>
+        <gender>M</gender>
+        <gender>F</gender>
+        <gender>M</gender>
+        <gender>M</gender>
+        <gender>M</gender>
+    </genderList>
+    <singularNameList>
+        <singularName>un anno</singularName>
+        <singularName>un mese</singularName>
+        <singularName>una settimana</singularName>
+        <singularName>un giorno</singularName>
+        <singularName>un'ora</singularName>
+        <singularName>un minuto</singularName>
+        <singularName>un secondo</singularName>
+        <singularName>un millisecondo</singularName>
+    </singularNameList>
+    <halfNameList>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+        <halfName>mezz'ora</halfName>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+        <halfName>Null</halfName>
+    </halfNameList>
+    <numberNameList>
+        <numberName>zero</numberName>
+        <numberName>Null</numberName>
+        <numberName>due</numberName>
+        <numberName>tre</numberName>
+        <numberName>quattro</numberName>
+        <numberName>cinque</numberName>
+        <numberName>sei</numberName>
+        <numberName>sette</numberName>
+        <numberName>otto</numberName>
+        <numberName>nove</numberName>
+        <numberName>dieci</numberName>
+    </numberNameList>
+    <mediumNameList>
+        <mediumName>ann.</mediumName>
+        <mediumName>mes.</mediumName>
+        <mediumName>sett.</mediumName>
+        <mediumName>gg.</mediumName>
+        <mediumName>or.</mediumName>
+        <mediumName>min.</mediumName>
+        <mediumName>sec.</mediumName>
+        <mediumName>msec.</mediumName>
+    </mediumNameList>
+    <shortNameList>
+        <shortName>A</shortName>
+        <shortName>M</shortName>
+        <shortName>S</shortName>
+        <shortName>G</shortName>
+        <shortName>H</shortName>
+        <shortName>M</shortName>
+        <shortName>S</shortName>
+        <shortName>Null</shortName>
+    </shortNameList>
+    <halvesList>
+        <halves>mezzo </halves>
+        <halves> e mezzo</halves>
+        <halves>mezza </halves>
+        <halves> e mezza</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> e </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> e </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL_ANDAHALF</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> fa</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>fra </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>meno di </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>meno di </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> fa</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>fra meno di </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>oltre </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>oltre </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> fa</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>fra oltre </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml
new file mode 100644
index 0000000..a309ce8
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>週間</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>日</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>時間</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>ミリ秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>か</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+    </measureList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <halfSupportList>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>NO</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>ONE_PLUS</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>NO</halfSupport>
+    </halfSupportList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <requiresSkipMarkerList>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>true</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+        <requiresSkipMarker>false</requiresSkipMarker>
+    </requiresSkipMarkerList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <skippedUnitMarker>と</skippedUnitMarker>
+    <allowZero>false</allowZero>
+    <weeksAloneOnly>true</weeksAloneOnly>
+    <useMilliseconds>WITH_SECONDS</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>今から</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>後</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以内</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>過去</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以内</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>今から</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以内</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以上</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以上前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>今から</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以上後</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml
new file mode 100644
index 0000000..32de9a7
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>년</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>개월</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>주</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>일</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>시간</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>분</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>초</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>밀리세컨드</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <unitSepList>
+        <unitSep> </unitSep>
+        <unitSep> </unitSep>
+        <unitSep> </unitSep>
+        <unitSep> </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>전</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>지금부터</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>전</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>지금부터</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>전</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>지금부터</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml
new file mode 100644
index 0000000..55dc352
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>PAUCAL</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>лет</pluralName>
+            <pluralName>год</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>года</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>месяцев</pluralName>
+            <pluralName>месяц</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>месяца</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>недель</pluralName>
+            <pluralName>неделя</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>недели</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>дней</pluralName>
+            <pluralName>день</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>дня</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>часов</pluralName>
+            <pluralName>час</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>часа</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>минут</pluralName>
+            <pluralName>минута</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>минуты</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>секунд</pluralName>
+            <pluralName>секунда</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>секунды</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>миллисекунд</pluralName>
+            <pluralName>миллисекунда</pluralName>
+            <pluralName>Null</pluralName>
+            <pluralName>миллисекунды</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <mediumNameList>
+        <mediumName>г</mediumName>
+        <mediumName>мес</mediumName>
+        <mediumName>нед</mediumName>
+        <mediumName>дн</mediumName>
+        <mediumName>ч</mediumName>
+        <mediumName>мин</mediumName>
+        <mediumName>с</mediumName>
+        <mediumName>мс</mediumName>
+        <mediumName>мкс</mediumName>
+    </mediumNameList>
+    <shortNameList>
+        <shortName>г</shortName>
+        <shortName>m</shortName>
+        <shortName>н</shortName>
+        <shortName>д</shortName>
+        <shortName>ч</shortName>
+        <shortName>м</shortName>
+        <shortName>с</shortName>
+        <shortName>x</shortName>
+    </shortNameList>
+    <halvesList>
+        <halves>½</halves>
+        <halves>½</halves>
+    </halvesList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep> </countSep>
+    <shortUnitSep> </shortUnitSep>
+    <unitSepList>
+        <unitSep>, </unitSep>
+        <unitSep> и </unitSep>
+        <unitSep>, </unitSep>
+        <unitSep> и </unitSep>
+    </unitSepList>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPAUCAL</decimalHandling>
+    <fractionHandling>FPAUCAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> назад</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>через </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>меньше, чем </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>меньше, чем </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> назад</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>через </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>больше, чем </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>больше, чем </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix> назад</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>через </prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml
new file mode 100644
index 0000000..f453651
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>ปี</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>เดือน</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>อาทิตย์</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>วัน</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>ชั่วโมง</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>นาที</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>วินาที</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>มิลลิวินาที</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <mediumNameList>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>ชม.</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+        <mediumName>Null</mediumName>
+    </mediumNameList>
+    <halvesList>
+        <halves>ครึ่ง</halves>
+        <halves>ครึ่ง</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>LAST</halfPlacement>
+    </halfPlacementList>
+    <halfSupportList>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>YES</halfSupport>
+        <halfSupport>NO</halfSupport>
+        <halfSupport>NO</halfSupport>
+    </halfSupportList>
+    <requiresDigitSeparator>true</requiresDigitSeparator>
+    <digitPrefix></digitPrefix>
+    <countSep></countSep>
+    <shortUnitSep></shortUnitSep>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>false</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FPLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>NO</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>ที่แล้ว</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>อีก</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>น้อยกว่า</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>น้อยกว่า</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>ที่แล้ว</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>ไม่ถึงอีก</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>มากกว่า</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>มากกว่า</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>ที่แล้ว</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>อีัก</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>กว่าๆ</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml
new file mode 100644
index 0000000..b3f60ae
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>周</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>天</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>小时</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>毫秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>个</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>个</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>个</measure>
+    </measureList>
+    <rqdSuffixList>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>钟</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+    </rqdSuffixList>
+    <optSuffixList>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>钟</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>钟</optSuffix>
+        <optSuffix>Null</optSuffix>
+    </optSuffixList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>AFTER_FIRST</halfPlacement>
+    </halfPlacementList>
+    <fifteenMinutes>刻</fifteenMinutes>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <numberSystem>CHINESE_SIMPLIFIED</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
new file mode 100644
index 0000000..bb8eca8
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>周</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>天</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>小时</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>毫秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>个</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>个</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>个</measure>
+    </measureList>
+    <rqdSuffixList>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>钟</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+    </rqdSuffixList>
+    <optSuffixList>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>钟</optSuffix>
+        <optSuffix>Null</optSuffix>
+    </optSuffixList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>AFTER_FIRST</halfPlacement>
+    </halfPlacementList>
+    <fiveMinutes>字</fiveMinutes>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <numberSystem>CHINESE_SIMPLIFIED</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超过</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以后</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml
new file mode 100644
index 0000000..8b84f23
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>週</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>天</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>小時</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>毫秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>個</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>個</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+    </measureList>
+    <rqdSuffixList>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>鐘</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+    </rqdSuffixList>
+    <optSuffixList>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>鐘</optSuffix>
+        <optSuffix>Null</optSuffix>
+        <optSuffix>鐘</optSuffix>
+        <optSuffix>Null</optSuffix>
+    </optSuffixList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>AFTER_FIRST</halfPlacement>
+    </halfPlacementList>
+    <fifteenMinutes>刻</fifteenMinutes>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <numberSystem>CHINESE_TRADITIONAL</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以後</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>不到</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以後</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以後</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
new file mode 100644
index 0000000..e474dee
--- /dev/null
+++ b/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+******************************************************************************
+* Copyright (C) 2007-2008 International Business Machines Corporation and        *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+-->
+<DataRecord>
+    <pl>NONE</pl>
+    <pluralNameTable>
+        <pluralNameList>
+            <pluralName>年</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>月</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>週</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>天</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>小時</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>分</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>秒</pluralName>
+        </pluralNameList>
+        <pluralNameList>
+            <pluralName>毫秒</pluralName>
+        </pluralNameList>
+    </pluralNameTable>
+    <measureList>
+        <measure>Null</measure>
+        <measure>個</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+        <measure>Null</measure>
+    </measureList>
+    <rqdSuffixList>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>鐘</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+        <rqdSuffix>Null</rqdSuffix>
+    </rqdSuffixList>
+    <halvesList>
+        <halves>半</halves>
+        <halves>半</halves>
+    </halvesList>
+    <halfPlacementList>
+        <halfPlacement>PREFIX</halfPlacement>
+        <halfPlacement>AFTER_FIRST</halfPlacement>
+    </halfPlacementList>
+    <requiresDigitSeparator>false</requiresDigitSeparator>
+    <countSep></countSep>
+    <numberSystem>DEFAULT</numberSystem>
+    <zero>0</zero>
+    <decimalSep>.</decimalSep>
+    <omitSingularCount>false</omitSingularCount>
+    <omitDualCount>true</omitDualCount>
+    <decimalHandling>DPLURAL</decimalHandling>
+    <fractionHandling>FSINGULAR_PLURAL</fractionHandling>
+    <allowZero>true</allowZero>
+    <weeksAloneOnly>false</weeksAloneOnly>
+    <useMilliseconds>YES</useMilliseconds>
+    <ScopeDataList>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>之前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>之後</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>少於</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以內</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>即時起</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>以內</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>超過</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>之前</suffix>
+        </ScopeData>
+        <ScopeData>
+            <prefix>即時起</prefix>
+            <requiresDigitPrefix>false</requiresDigitPrefix>
+            <suffix>之後</suffix>
+        </ScopeData>
+    </ScopeDataList>
+</DataRecord>
\ No newline at end of file
diff --git a/src/com/ibm/icu/lang/UCharacter.java b/src/com/ibm/icu/lang/UCharacter.java
new file mode 100644
index 0000000..5d7d893
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacter.java
@@ -0,0 +1,6579 @@
+//##header J2SE15
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import java.io.IOException;
+import java.lang.ref.SoftReference;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterUtility;
+import com.ibm.icu.impl.UCharacterName;
+import com.ibm.icu.impl.UCharacterNameChoice;
+import com.ibm.icu.impl.UPropertyAliases;
+import com.ibm.icu.lang.UCharacterEnums.*;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+ * <p>
+ * The UCharacter class provides extensions to the 
+ * <a href="http://java.sun.com/j2se/1.5/docs/api/java/lang/Character.html">
+ * java.lang.Character</a> class. These extensions provide support for 
+ * more Unicode properties and together with the <a href=../text/UTF16.html>UTF16</a> 
+ * class, provide support for supplementary characters (those with code 
+ * points above U+FFFF).
+ * Each ICU release supports the latest version of Unicode available at that time.
+ * </p>
+ * <p>
+ * Code points are represented in these API using ints. While it would be 
+ * more convenient in Java to have a separate primitive datatype for them, 
+ * ints suffice in the meantime.
+ * </p>
+ * <p>
+ * To use this class please add the jar file name icu4j.jar to the 
+ * class path, since it contains data files which supply the information used 
+ * by this file.<br>
+ * E.g. In Windows <br>
+ * <code>set CLASSPATH=%CLASSPATH%;$JAR_FILE_PATH/ucharacter.jar</code>.<br>
+ * Otherwise, another method would be to copy the files uprops.dat and 
+ * unames.icu from the icu4j source subdirectory
+ * <i>$ICU4J_SRC/src/com.ibm.icu.impl.data</i> to your class directory 
+ * <i>$ICU4J_CLASS/com.ibm.icu.impl.data</i>.
+ * </p>
+ * <p>
+ * Aside from the additions for UTF-16 support, and the updated Unicode
+ * properties, the main differences between UCharacter and Character are:
+ * <ul>
+ * <li> UCharacter is not designed to be a char wrapper and does not have 
+ *      APIs to which involves management of that single char.<br>
+ *      These include: 
+ *      <ul>
+ *        <li> char charValue(), 
+ *        <li> int compareTo(java.lang.Character, java.lang.Character), etc.
+ *      </ul>
+ * <li> UCharacter does not include Character APIs that are deprecated, nor
+ *      does it include the Java-specific character information, such as 
+ *      boolean isJavaIdentifierPart(char ch).
+ * <li> Character maps characters 'A' - 'Z' and 'a' - 'z' to the numeric 
+ *      values '10' - '35'. UCharacter also does this in digit and
+ *      getNumericValue, to adhere to the java semantics of these
+ *      methods.  New methods unicodeDigit, and
+ *      getUnicodeNumericValue do not treat the above code points 
+ *      as having numeric values.  This is a semantic change from ICU4J 1.3.1.
+ * </ul>
+ * <p>
+ * Further detail differences can be determined from the program 
+ *        <a href="http://source.icu-project.org/repos/icu/icu4j/trunk/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java">
+ *        com.ibm.icu.dev.test.lang.UCharacterCompare</a>
+ * </p>
+ * <p>
+ * In addition to Java compatibility functions, which calculate derived properties,
+ * this API provides low-level access to the Unicode Character Database.
+ * </p>
+ * <p>
+ * Unicode assigns each code point (not just assigned character) values for
+ * many properties.
+ * Most of them are simple boolean flags, or constants from a small enumerated list.
+ * For some properties, values are strings or other relatively more complex types.
+ * </p>
+ * <p>
+ * For more information see
+ * "About the Unicode Character Database" (http://www.unicode.org/ucd/)
+ * and the ICU User Guide chapter on Properties (http://www.icu-project.org/userguide/properties.html).
+ * </p>
+ * <p>
+ * There are also functions that provide easy migration from C/POSIX functions
+ * like isblank(). Their use is generally discouraged because the C/POSIX
+ * standards do not define their semantics beyond the ASCII range, which means
+ * that different implementations exhibit very different behavior.
+ * Instead, Unicode properties should be used directly.
+ * </p>
+ * <p>
+ * There are also only a few, broad C/POSIX character classes, and they tend
+ * to be used for conflicting purposes. For example, the "isalpha()" class
+ * is sometimes used to determine word boundaries, while a more sophisticated
+ * approach would at least distinguish initial letters from continuation
+ * characters (the latter including combining marks).
+ * (In ICU, BreakIterator is the most sophisticated API for word boundaries.)
+ * Another example: There is no "istitle()" class for titlecase characters.
+ * </p>
+ * <p>
+ * ICU 3.4 and later provides API access for all twelve C/POSIX character classes.
+ * ICU implements them according to the Standard Recommendations in
+ * Annex C: Compatibility Properties of UTS #18 Unicode Regular Expressions
+ * (http://www.unicode.org/reports/tr18/#Compatibility_Properties).
+ * </p>
+ * <p>
+ * API access for C/POSIX character classes is as follows:
+ * - alpha:     isUAlphabetic(c) or hasBinaryProperty(c, UProperty.ALPHABETIC)
+ * - lower:     isULowercase(c) or hasBinaryProperty(c, UProperty.LOWERCASE)
+ * - upper:     isUUppercase(c) or hasBinaryProperty(c, UProperty.UPPERCASE)
+ * - punct:     ((1<<getType(c)) & ((1<<DASH_PUNCTUATION)|(1<<START_PUNCTUATION)|(1<<END_PUNCTUATION)|(1<<CONNECTOR_PUNCTUATION)|(1<<OTHER_PUNCTUATION)|(1<<INITIAL_PUNCTUATION)|(1<<FINAL_PUNCTUATION)))!=0
+ * - digit:     isDigit(c) or getType(c)==DECIMAL_DIGIT_NUMBER
+ * - xdigit:    hasBinaryProperty(c, UProperty.POSIX_XDIGIT)
+ * - alnum:     hasBinaryProperty(c, UProperty.POSIX_ALNUM)
+ * - space:     isUWhiteSpace(c) or hasBinaryProperty(c, UProperty.WHITE_SPACE)
+ * - blank:     hasBinaryProperty(c, UProperty.POSIX_BLANK)
+ * - cntrl:     getType(c)==CONTROL
+ * - graph:     hasBinaryProperty(c, UProperty.POSIX_GRAPH)
+ * - print:     hasBinaryProperty(c, UProperty.POSIX_PRINT)
+ * </p>
+ * <p>
+ * The C/POSIX character classes are also available in UnicodeSet patterns,
+ * using patterns like [:graph:] or \p{graph}.
+ * </p>
+ * <p>
+ * Note: There are several ICU (and Java) whitespace functions.
+ * Comparison:
+ * - isUWhiteSpace=UCHAR_WHITE_SPACE: Unicode White_Space property;
+ *       most of general categories "Z" (separators) + most whitespace ISO controls
+ *       (including no-break spaces, but excluding IS1..IS4 and ZWSP)
+ * - isWhitespace: Java isWhitespace; Z + whitespace ISO controls but excluding no-break spaces
+ * - isSpaceChar: just Z (including no-break spaces)
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.1
+ * @see com.ibm.icu.lang.UCharacterEnums
+ */
+
+public final class UCharacter implements ECharacterCategory, ECharacterDirection
+{ 
+    // public inner classes ----------------------------------------------
+      
+    /**
+     * A family of character subsets representing the character blocks in the 
+     * Unicode specification, generated from Unicode Data file Blocks.txt. 
+     * Character blocks generally define characters used for a specific script 
+     * or purpose. A character is contained by at most one Unicode block. 
+     * @stable ICU 2.4
+     */
+    public static final class UnicodeBlock extends Character.Subset 
+    {
+        // block id corresponding to icu4c -----------------------------------
+        
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int INVALID_CODE_ID = -1;                          
+        /** 
+         * @stable ICU 2.4
+         */
+        public static final int BASIC_LATIN_ID = 1;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LATIN_1_SUPPLEMENT_ID = 2;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LATIN_EXTENDED_A_ID = 3;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LATIN_EXTENDED_B_ID = 4;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int IPA_EXTENSIONS_ID = 5;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SPACING_MODIFIER_LETTERS_ID = 6;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int COMBINING_DIACRITICAL_MARKS_ID = 7;
+        /**
+         * Unicode 3.2 renames this block to "Greek and Coptic".
+         * @stable ICU 2.4
+         */
+        public static final int GREEK_ID = 8;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CYRILLIC_ID = 9;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARMENIAN_ID = 10;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HEBREW_ID = 11;  
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARABIC_ID = 12;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SYRIAC_ID = 13;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int THAANA_ID = 14;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int DEVANAGARI_ID = 15;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BENGALI_ID = 16;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GURMUKHI_ID = 17;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GUJARATI_ID = 18;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ORIYA_ID = 19;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TAMIL_ID = 20;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TELUGU_ID = 21;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KANNADA_ID = 22;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MALAYALAM_ID = 23;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SINHALA_ID = 24;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int THAI_ID = 25;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LAO_ID = 26;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TIBETAN_ID = 27;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MYANMAR_ID = 28;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GEORGIAN_ID = 29;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HANGUL_JAMO_ID = 30;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ETHIOPIC_ID = 31;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CHEROKEE_ID = 32;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID = 33;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int OGHAM_ID = 34;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int RUNIC_ID = 35;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KHMER_ID = 36;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MONGOLIAN_ID = 37;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LATIN_EXTENDED_ADDITIONAL_ID = 38;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GREEK_EXTENDED_ID = 39;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GENERAL_PUNCTUATION_ID = 40;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPERSCRIPTS_AND_SUBSCRIPTS_ID = 41;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CURRENCY_SYMBOLS_ID = 42;
+        /**
+         * Unicode 3.2 renames this block to "Combining Diacritical Marks for 
+         * Symbols".
+         * @stable ICU 2.4
+         */
+        public static final int COMBINING_MARKS_FOR_SYMBOLS_ID = 43;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LETTERLIKE_SYMBOLS_ID = 44;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int NUMBER_FORMS_ID = 45;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARROWS_ID = 46;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MATHEMATICAL_OPERATORS_ID = 47;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MISCELLANEOUS_TECHNICAL_ID = 48;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CONTROL_PICTURES_ID = 49;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int OPTICAL_CHARACTER_RECOGNITION_ID = 50;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ENCLOSED_ALPHANUMERICS_ID = 51;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BOX_DRAWING_ID = 52;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BLOCK_ELEMENTS_ID = 53;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GEOMETRIC_SHAPES_ID = 54;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MISCELLANEOUS_SYMBOLS_ID = 55;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int DINGBATS_ID = 56;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BRAILLE_PATTERNS_ID = 57;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_RADICALS_SUPPLEMENT_ID = 58;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KANGXI_RADICALS_ID = 59;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID = 60;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_SYMBOLS_AND_PUNCTUATION_ID = 61;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HIRAGANA_ID = 62;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KATAKANA_ID = 63;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BOPOMOFO_ID = 64;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HANGUL_COMPATIBILITY_JAMO_ID = 65;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KANBUN_ID = 66;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BOPOMOFO_EXTENDED_ID = 67;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ENCLOSED_CJK_LETTERS_AND_MONTHS_ID = 68;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_COMPATIBILITY_ID = 69;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID = 70;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_UNIFIED_IDEOGRAPHS_ID = 71;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int YI_SYLLABLES_ID = 72;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int YI_RADICALS_ID = 73;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HANGUL_SYLLABLES_ID = 74;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HIGH_SURROGATES_ID = 75;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HIGH_PRIVATE_USE_SURROGATES_ID = 76;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int LOW_SURROGATES_ID = 77;
+        /**
+         * Same as public static final int PRIVATE_USE.
+         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
+         * and multiple code point ranges had this block.
+         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" 
+         * and adds separate blocks for the supplementary PUAs.
+         * @stable ICU 2.4
+         */
+        public static final int PRIVATE_USE_AREA_ID = 78;
+        /**
+         * Same as public static final int PRIVATE_USE_AREA.
+         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
+         * and multiple code point ranges had this block.
+         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" 
+         * and adds separate blocks for the supplementary PUAs.
+         * @stable ICU 2.4
+         */
+        public static final int PRIVATE_USE_ID = PRIVATE_USE_AREA_ID;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_COMPATIBILITY_IDEOGRAPHS_ID = 79;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ALPHABETIC_PRESENTATION_FORMS_ID = 80;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARABIC_PRESENTATION_FORMS_A_ID = 81;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int COMBINING_HALF_MARKS_ID = 82;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_COMPATIBILITY_FORMS_ID = 83;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SMALL_FORM_VARIANTS_ID = 84;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int ARABIC_PRESENTATION_FORMS_B_ID = 85;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SPECIALS_ID = 86;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HALFWIDTH_AND_FULLWIDTH_FORMS_ID = 87;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int OLD_ITALIC_ID = 88;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int GOTHIC_ID = 89;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int DESERET_ID = 90;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BYZANTINE_MUSICAL_SYMBOLS_ID = 91;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MUSICAL_SYMBOLS_ID = 92;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID = 93;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID = 94;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int 
+            CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID = 95;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TAGS_ID = 96;
+    
+        // New blocks in Unicode 3.2
+    
+        /** 
+         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
+         * @stable ICU 2.4 
+         */
+        public static final int CYRILLIC_SUPPLEMENTARY_ID = 97;
+        /** 
+         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
+         * @stable ICU 3.0
+         */
+
+        public static final int CYRILLIC_SUPPLEMENT_ID = 97;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TAGALOG_ID = 98;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int HANUNOO_ID = 99;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int BUHID_ID = 100;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int TAGBANWA_ID = 101;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID = 102;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTAL_ARROWS_A_ID = 103;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTAL_ARROWS_B_ID = 104;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID = 105;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID = 106;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int KATAKANA_PHONETIC_EXTENSIONS_ID = 107;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int VARIATION_SELECTORS_ID = 108;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID = 109;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID = 110;
+        
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int LIMBU_ID = 111; /*[1900]*/
+        /**
+         * @stable ICU 2.6 
+         */
+        public static final int TAI_LE_ID = 112; /*[1950]*/
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int KHMER_SYMBOLS_ID = 113; /*[19E0]*/
+        /** 
+         * @stable ICU 2.6
+         */
+        public static final int PHONETIC_EXTENSIONS_ID = 114; /*[1D00]*/
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID = 115; /*[2B00]*/
+        /**
+         * @stable ICU 2.6 
+         */
+        public static final int YIJING_HEXAGRAM_SYMBOLS_ID = 116; /*[4DC0]*/
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int LINEAR_B_SYLLABARY_ID = 117; /*[10000]*/
+        /**
+         * @stable ICU 2.6 
+         */
+        public static final int LINEAR_B_IDEOGRAMS_ID = 118; /*[10080]*/
+        /** 
+         * @stable ICU 2.6
+         */
+        public static final int AEGEAN_NUMBERS_ID = 119; /*[10100]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int UGARITIC_ID = 120; /*[10380]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int SHAVIAN_ID = 121; /*[10450]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int OSMANYA_ID = 122; /*[10480]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int CYPRIOT_SYLLABARY_ID = 123; /*[10800]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int TAI_XUAN_JING_SYMBOLS_ID = 124; /*[1D300]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int VARIATION_SELECTORS_SUPPLEMENT_ID = 125; /*[E0100]*/
+
+        /* New blocks in Unicode 4.1 */
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ANCIENT_GREEK_MUSICAL_NOTATION_ID = 126; /*[1D200]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ANCIENT_GREEK_NUMBERS_ID = 127; /*[10140]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ARABIC_SUPPLEMENT_ID = 128; /*[0750]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int BUGINESE_ID = 129; /*[1A00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int CJK_STROKES_ID = 130; /*[31C0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID = 131; /*[1DC0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int COPTIC_ID = 132; /*[2C80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ETHIOPIC_EXTENDED_ID = 133; /*[2D80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int ETHIOPIC_SUPPLEMENT_ID = 134; /*[1380]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int GEORGIAN_SUPPLEMENT_ID = 135; /*[2D00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int GLAGOLITIC_ID = 136; /*[2C00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int KHAROSHTHI_ID = 137; /*[10A00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int MODIFIER_TONE_LETTERS_ID = 138; /*[A700]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int NEW_TAI_LUE_ID = 139; /*[1980]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int OLD_PERSIAN_ID = 140; /*[103A0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int PHONETIC_EXTENSIONS_SUPPLEMENT_ID = 141; /*[1D80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int SUPPLEMENTAL_PUNCTUATION_ID = 142; /*[2E00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int SYLOTI_NAGRI_ID = 143; /*[A800]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int TIFINAGH_ID = 144; /*[2D30]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int VERTICAL_FORMS_ID = 145; /*[FE10]*/
+
+        /* New blocks in Unicode 5.0 */
+
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int NKO_ID = 146; /*[07C0]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int BALINESE_ID = 147; /*[1B00]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int LATIN_EXTENDED_C_ID = 148; /*[2C60]*/
+        /** 
+         * @stable ICU 3.6 
+         */
+        public static final int LATIN_EXTENDED_D_ID = 149; /*[A720]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int PHAGS_PA_ID = 150; /*[A840]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int PHOENICIAN_ID = 151; /*[10900]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int CUNEIFORM_ID = 152; /*[12000]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID = 153; /*[12400]*/
+        /**
+         * @stable ICU 3.6
+         */
+        public static final int COUNTING_ROD_NUMERALS_ID = 154; /*[1D360]*/
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int SUNDANESE_ID = 155; /* [1B80] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int LEPCHA_ID = 156; /* [1C00] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int OL_CHIKI_ID = 157; /* [1C50] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int CYRILLIC_EXTENDED_A_ID = 158; /* [2DE0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int VAI_ID = 159; /* [A500] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int CYRILLIC_EXTENDED_B_ID = 160; /* [A640] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int SAURASHTRA_ID = 161; /* [A880] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int KAYAH_LI_ID = 162; /* [A900] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int REJANG_ID = 163; /* [A930] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int CHAM_ID = 164; /* [AA00] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int ANCIENT_SYMBOLS_ID = 165; /* [10190] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int PHAISTOS_DISC_ID = 166; /* [101D0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int LYCIAN_ID = 167; /* [10280] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int CARIAN_ID = 168; /* [102A0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int LYDIAN_ID = 169; /* [10920] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int MAHJONG_TILES_ID = 170; /* [1F000] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final int DOMINO_TILES_ID = 171; /* [1F030] */
+
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final int COUNT = 172;
+
+        // blocks objects ---------------------------------------------------
+        
+        /** 
+         * @stable ICU 2.6
+         */
+        public static final UnicodeBlock NO_BLOCK 
+            = new UnicodeBlock("NO_BLOCK", 0);
+
+        /** 
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock BASIC_LATIN 
+            = new UnicodeBlock("BASIC_LATIN", BASIC_LATIN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LATIN_1_SUPPLEMENT 
+            = new UnicodeBlock("LATIN_1_SUPPLEMENT", LATIN_1_SUPPLEMENT_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_A
+            = new UnicodeBlock("LATIN_EXTENDED_A", LATIN_EXTENDED_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_B 
+            = new UnicodeBlock("LATIN_EXTENDED_B", LATIN_EXTENDED_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock IPA_EXTENSIONS 
+            = new UnicodeBlock("IPA_EXTENSIONS", IPA_EXTENSIONS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SPACING_MODIFIER_LETTERS 
+            = new UnicodeBlock("SPACING_MODIFIER_LETTERS", SPACING_MODIFIER_LETTERS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS 
+            = new UnicodeBlock("COMBINING_DIACRITICAL_MARKS", COMBINING_DIACRITICAL_MARKS_ID);
+        /**
+         * Unicode 3.2 renames this block to "Greek and Coptic".
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock GREEK
+            = new UnicodeBlock("GREEK", GREEK_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CYRILLIC 
+            = new UnicodeBlock("CYRILLIC", CYRILLIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARMENIAN 
+            = new UnicodeBlock("ARMENIAN", ARMENIAN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HEBREW 
+            = new UnicodeBlock("HEBREW", HEBREW_ID);  
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARABIC
+            = new UnicodeBlock("ARABIC", ARABIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SYRIAC 
+            = new UnicodeBlock("SYRIAC", SYRIAC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock THAANA 
+            = new UnicodeBlock("THAANA", THAANA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock DEVANAGARI 
+            = new UnicodeBlock("DEVANAGARI", DEVANAGARI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BENGALI 
+            = new UnicodeBlock("BENGALI", BENGALI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GURMUKHI 
+            = new UnicodeBlock("GURMUKHI", GURMUKHI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GUJARATI 
+            = new UnicodeBlock("GUJARATI", GUJARATI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ORIYA 
+            = new UnicodeBlock("ORIYA", ORIYA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TAMIL 
+            = new UnicodeBlock("TAMIL", TAMIL_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TELUGU 
+            = new UnicodeBlock("TELUGU", TELUGU_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KANNADA 
+            = new UnicodeBlock("KANNADA", KANNADA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MALAYALAM 
+            = new UnicodeBlock("MALAYALAM", MALAYALAM_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SINHALA 
+            = new UnicodeBlock("SINHALA", SINHALA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock THAI 
+            = new UnicodeBlock("THAI", THAI_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LAO 
+            = new UnicodeBlock("LAO", LAO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TIBETAN 
+            = new UnicodeBlock("TIBETAN", TIBETAN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MYANMAR 
+            = new UnicodeBlock("MYANMAR", MYANMAR_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GEORGIAN 
+            = new UnicodeBlock("GEORGIAN", GEORGIAN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HANGUL_JAMO 
+            = new UnicodeBlock("HANGUL_JAMO", HANGUL_JAMO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ETHIOPIC 
+            = new UnicodeBlock("ETHIOPIC", ETHIOPIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CHEROKEE 
+            = new UnicodeBlock("CHEROKEE", CHEROKEE_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS 
+            = new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock OGHAM 
+            = new UnicodeBlock("OGHAM", OGHAM_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock RUNIC 
+            = new UnicodeBlock("RUNIC", RUNIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KHMER 
+            = new UnicodeBlock("KHMER", KHMER_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MONGOLIAN 
+            = new UnicodeBlock("MONGOLIAN", MONGOLIAN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL 
+            = new UnicodeBlock("LATIN_EXTENDED_ADDITIONAL", LATIN_EXTENDED_ADDITIONAL_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GREEK_EXTENDED 
+            = new UnicodeBlock("GREEK_EXTENDED", GREEK_EXTENDED_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GENERAL_PUNCTUATION 
+            = new UnicodeBlock("GENERAL_PUNCTUATION", GENERAL_PUNCTUATION_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS 
+            = new UnicodeBlock("SUPERSCRIPTS_AND_SUBSCRIPTS", SUPERSCRIPTS_AND_SUBSCRIPTS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CURRENCY_SYMBOLS 
+            = new UnicodeBlock("CURRENCY_SYMBOLS", CURRENCY_SYMBOLS_ID);
+        /**
+         * Unicode 3.2 renames this block to "Combining Diacritical Marks for 
+         * Symbols".
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS 
+            = new UnicodeBlock("COMBINING_MARKS_FOR_SYMBOLS", COMBINING_MARKS_FOR_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LETTERLIKE_SYMBOLS 
+            = new UnicodeBlock("LETTERLIKE_SYMBOLS", LETTERLIKE_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock NUMBER_FORMS 
+            = new UnicodeBlock("NUMBER_FORMS", NUMBER_FORMS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARROWS 
+            = new UnicodeBlock("ARROWS", ARROWS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MATHEMATICAL_OPERATORS 
+            = new UnicodeBlock("MATHEMATICAL_OPERATORS", MATHEMATICAL_OPERATORS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_TECHNICAL 
+            = new UnicodeBlock("MISCELLANEOUS_TECHNICAL", MISCELLANEOUS_TECHNICAL_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CONTROL_PICTURES 
+            = new UnicodeBlock("CONTROL_PICTURES", CONTROL_PICTURES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION 
+            = new UnicodeBlock("OPTICAL_CHARACTER_RECOGNITION", OPTICAL_CHARACTER_RECOGNITION_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ENCLOSED_ALPHANUMERICS 
+            = new UnicodeBlock("ENCLOSED_ALPHANUMERICS", ENCLOSED_ALPHANUMERICS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BOX_DRAWING 
+            = new UnicodeBlock("BOX_DRAWING", BOX_DRAWING_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BLOCK_ELEMENTS 
+            = new UnicodeBlock("BLOCK_ELEMENTS", BLOCK_ELEMENTS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GEOMETRIC_SHAPES 
+            = new UnicodeBlock("GEOMETRIC_SHAPES", GEOMETRIC_SHAPES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS 
+            = new UnicodeBlock("MISCELLANEOUS_SYMBOLS", MISCELLANEOUS_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock DINGBATS 
+            = new UnicodeBlock("DINGBATS", DINGBATS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BRAILLE_PATTERNS 
+            = new UnicodeBlock("BRAILLE_PATTERNS", BRAILLE_PATTERNS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT 
+            = new UnicodeBlock("CJK_RADICALS_SUPPLEMENT", CJK_RADICALS_SUPPLEMENT_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KANGXI_RADICALS 
+            = new UnicodeBlock("KANGXI_RADICALS", KANGXI_RADICALS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS 
+            = new UnicodeBlock("IDEOGRAPHIC_DESCRIPTION_CHARACTERS", IDEOGRAPHIC_DESCRIPTION_CHARACTERS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION 
+            = new UnicodeBlock("CJK_SYMBOLS_AND_PUNCTUATION", CJK_SYMBOLS_AND_PUNCTUATION_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HIRAGANA 
+            = new UnicodeBlock("HIRAGANA", HIRAGANA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KATAKANA 
+            = new UnicodeBlock("KATAKANA", KATAKANA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BOPOMOFO 
+            = new UnicodeBlock("BOPOMOFO", BOPOMOFO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO 
+            = new UnicodeBlock("HANGUL_COMPATIBILITY_JAMO", HANGUL_COMPATIBILITY_JAMO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KANBUN 
+            = new UnicodeBlock("KANBUN", KANBUN_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BOPOMOFO_EXTENDED 
+            = new UnicodeBlock("BOPOMOFO_EXTENDED", BOPOMOFO_EXTENDED_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS 
+            = new UnicodeBlock("ENCLOSED_CJK_LETTERS_AND_MONTHS", ENCLOSED_CJK_LETTERS_AND_MONTHS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_COMPATIBILITY 
+            = new UnicodeBlock("CJK_COMPATIBILITY", CJK_COMPATIBILITY_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A 
+            = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS 
+            = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS", CJK_UNIFIED_IDEOGRAPHS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock YI_SYLLABLES 
+            = new UnicodeBlock("YI_SYLLABLES", YI_SYLLABLES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock YI_RADICALS 
+            = new UnicodeBlock("YI_RADICALS", YI_RADICALS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HANGUL_SYLLABLES 
+            = new UnicodeBlock("HANGUL_SYLLABLES", HANGUL_SYLLABLES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HIGH_SURROGATES 
+            = new UnicodeBlock("HIGH_SURROGATES", HIGH_SURROGATES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES 
+            = new UnicodeBlock("HIGH_PRIVATE_USE_SURROGATES", HIGH_PRIVATE_USE_SURROGATES_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock LOW_SURROGATES 
+            = new UnicodeBlock("LOW_SURROGATES", LOW_SURROGATES_ID);
+        /**
+         * Same as public static final int PRIVATE_USE.
+         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
+         * and multiple code point ranges had this block.
+         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" 
+         * and adds separate blocks for the supplementary PUAs.
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock PRIVATE_USE_AREA 
+            = new UnicodeBlock("PRIVATE_USE_AREA",  78);
+        /**
+         * Same as public static final int PRIVATE_USE_AREA.
+         * Until Unicode 3.1.1; the corresponding block name was "Private Use";
+         * and multiple code point ranges had this block.
+         * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" 
+         * and adds separate blocks for the supplementary PUAs.
+         * @stable ICU 2.4
+         */
+        public static final UnicodeBlock PRIVATE_USE 
+            = PRIVATE_USE_AREA;
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS 
+            = new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS", CJK_COMPATIBILITY_IDEOGRAPHS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS 
+            = new UnicodeBlock("ALPHABETIC_PRESENTATION_FORMS", ALPHABETIC_PRESENTATION_FORMS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A 
+            = new UnicodeBlock("ARABIC_PRESENTATION_FORMS_A", ARABIC_PRESENTATION_FORMS_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock COMBINING_HALF_MARKS 
+            = new UnicodeBlock("COMBINING_HALF_MARKS", COMBINING_HALF_MARKS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_COMPATIBILITY_FORMS 
+            = new UnicodeBlock("CJK_COMPATIBILITY_FORMS", CJK_COMPATIBILITY_FORMS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SMALL_FORM_VARIANTS 
+            = new UnicodeBlock("SMALL_FORM_VARIANTS", SMALL_FORM_VARIANTS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B 
+            = new UnicodeBlock("ARABIC_PRESENTATION_FORMS_B", ARABIC_PRESENTATION_FORMS_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SPECIALS 
+            = new UnicodeBlock("SPECIALS", SPECIALS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS 
+            = new UnicodeBlock("HALFWIDTH_AND_FULLWIDTH_FORMS", HALFWIDTH_AND_FULLWIDTH_FORMS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock OLD_ITALIC 
+            = new UnicodeBlock("OLD_ITALIC", OLD_ITALIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock GOTHIC 
+            = new UnicodeBlock("GOTHIC", GOTHIC_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock DESERET 
+            = new UnicodeBlock("DESERET", DESERET_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS 
+            = new UnicodeBlock("BYZANTINE_MUSICAL_SYMBOLS", BYZANTINE_MUSICAL_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MUSICAL_SYMBOLS 
+            = new UnicodeBlock("MUSICAL_SYMBOLS", MUSICAL_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS 
+            = new UnicodeBlock("MATHEMATICAL_ALPHANUMERIC_SYMBOLS", MATHEMATICAL_ALPHANUMERIC_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B  
+            = new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock 
+            CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT 
+            = new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TAGS 
+            = new UnicodeBlock("TAGS", TAGS_ID);
+    
+        // New blocks in Unicode 3.2
+    
+        /** 
+         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY 
+            = new UnicodeBlock("CYRILLIC_SUPPLEMENTARY", CYRILLIC_SUPPLEMENTARY_ID);
+        /** 
+         * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
+         * @stable ICU 3.0
+         */
+        public static final UnicodeBlock CYRILLIC_SUPPLEMENT 
+            = new UnicodeBlock("CYRILLIC_SUPPLEMENT", CYRILLIC_SUPPLEMENT_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TAGALOG 
+            = new UnicodeBlock("TAGALOG", TAGALOG_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock HANUNOO 
+            = new UnicodeBlock("HANUNOO", HANUNOO_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock BUHID 
+            = new UnicodeBlock("BUHID", BUHID_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock TAGBANWA 
+            = new UnicodeBlock("TAGBANWA", TAGBANWA_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A 
+            = new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A 
+            = new UnicodeBlock("SUPPLEMENTAL_ARROWS_A", SUPPLEMENTAL_ARROWS_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B 
+            = new UnicodeBlock("SUPPLEMENTAL_ARROWS_B", SUPPLEMENTAL_ARROWS_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B 
+            = new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS 
+            = new UnicodeBlock("SUPPLEMENTAL_MATHEMATICAL_OPERATORS", SUPPLEMENTAL_MATHEMATICAL_OPERATORS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS 
+            = new UnicodeBlock("KATAKANA_PHONETIC_EXTENSIONS", KATAKANA_PHONETIC_EXTENSIONS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock VARIATION_SELECTORS 
+            = new UnicodeBlock("VARIATION_SELECTORS", VARIATION_SELECTORS_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A 
+            = new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_A", SUPPLEMENTARY_PRIVATE_USE_AREA_A_ID);
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B 
+            = new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_B", SUPPLEMENTARY_PRIVATE_USE_AREA_B_ID);
+   
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock LIMBU 
+            = new UnicodeBlock("LIMBU", LIMBU_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock TAI_LE 
+            = new UnicodeBlock("TAI_LE", TAI_LE_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock KHMER_SYMBOLS 
+            = new UnicodeBlock("KHMER_SYMBOLS", KHMER_SYMBOLS_ID);
+
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock PHONETIC_EXTENSIONS 
+            = new UnicodeBlock("PHONETIC_EXTENSIONS", PHONETIC_EXTENSIONS_ID);
+
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS 
+            = new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_ARROWS", MISCELLANEOUS_SYMBOLS_AND_ARROWS_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS 
+            = new UnicodeBlock("YIJING_HEXAGRAM_SYMBOLS", YIJING_HEXAGRAM_SYMBOLS_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock LINEAR_B_SYLLABARY 
+            = new UnicodeBlock("LINEAR_B_SYLLABARY", LINEAR_B_SYLLABARY_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock LINEAR_B_IDEOGRAMS 
+            = new UnicodeBlock("LINEAR_B_IDEOGRAMS", LINEAR_B_IDEOGRAMS_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock AEGEAN_NUMBERS 
+            = new UnicodeBlock("AEGEAN_NUMBERS", AEGEAN_NUMBERS_ID);                                               
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock UGARITIC 
+            = new UnicodeBlock("UGARITIC", UGARITIC_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock SHAVIAN 
+            = new UnicodeBlock("SHAVIAN", SHAVIAN_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock OSMANYA 
+            = new UnicodeBlock("OSMANYA", OSMANYA_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock CYPRIOT_SYLLABARY 
+            = new UnicodeBlock("CYPRIOT_SYLLABARY", CYPRIOT_SYLLABARY_ID);
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS 
+            = new UnicodeBlock("TAI_XUAN_JING_SYMBOLS", TAI_XUAN_JING_SYMBOLS_ID);
+        
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT 
+            = new UnicodeBlock("VARIATION_SELECTORS_SUPPLEMENT", VARIATION_SELECTORS_SUPPLEMENT_ID);                                      
+
+        /* New blocks in Unicode 4.1 */
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION = new UnicodeBlock("ANCIENT_GREEK_MUSICAL_NOTATION", ANCIENT_GREEK_MUSICAL_NOTATION_ID); /*[1D200]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ANCIENT_GREEK_NUMBERS = new UnicodeBlock("ANCIENT_GREEK_NUMBERS", ANCIENT_GREEK_NUMBERS_ID); /*[10140]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ARABIC_SUPPLEMENT = new UnicodeBlock("ARABIC_SUPPLEMENT", ARABIC_SUPPLEMENT_ID); /*[0750]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock BUGINESE = new UnicodeBlock("BUGINESE", BUGINESE_ID); /*[1A00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock CJK_STROKES = new UnicodeBlock("CJK_STROKES", CJK_STROKES_ID); /*[31C0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_ID); /*[1DC0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock COPTIC = new UnicodeBlock("COPTIC", COPTIC_ID); /*[2C80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ETHIOPIC_EXTENDED = new UnicodeBlock("ETHIOPIC_EXTENDED", ETHIOPIC_EXTENDED_ID); /*[2D80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock ETHIOPIC_SUPPLEMENT = new UnicodeBlock("ETHIOPIC_SUPPLEMENT", ETHIOPIC_SUPPLEMENT_ID); /*[1380]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock GEORGIAN_SUPPLEMENT = new UnicodeBlock("GEORGIAN_SUPPLEMENT", GEORGIAN_SUPPLEMENT_ID); /*[2D00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock GLAGOLITIC = new UnicodeBlock("GLAGOLITIC", GLAGOLITIC_ID); /*[2C00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock KHAROSHTHI = new UnicodeBlock("KHAROSHTHI", KHAROSHTHI_ID); /*[10A00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock MODIFIER_TONE_LETTERS = new UnicodeBlock("MODIFIER_TONE_LETTERS", MODIFIER_TONE_LETTERS_ID); /*[A700]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock NEW_TAI_LUE = new UnicodeBlock("NEW_TAI_LUE", NEW_TAI_LUE_ID); /*[1980]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock OLD_PERSIAN = new UnicodeBlock("OLD_PERSIAN", OLD_PERSIAN_ID); /*[103A0]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT = new UnicodeBlock("PHONETIC_EXTENSIONS_SUPPLEMENT", PHONETIC_EXTENSIONS_SUPPLEMENT_ID); /*[1D80]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock SUPPLEMENTAL_PUNCTUATION = new UnicodeBlock("SUPPLEMENTAL_PUNCTUATION", SUPPLEMENTAL_PUNCTUATION_ID); /*[2E00]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock SYLOTI_NAGRI = new UnicodeBlock("SYLOTI_NAGRI", SYLOTI_NAGRI_ID); /*[A800]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock TIFINAGH = new UnicodeBlock("TIFINAGH", TIFINAGH_ID); /*[2D30]*/
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final UnicodeBlock VERTICAL_FORMS = new UnicodeBlock("VERTICAL_FORMS", VERTICAL_FORMS_ID); /*[FE10]*/
+
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock NKO = new UnicodeBlock("NKO", NKO_ID); /*[07C0]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock BALINESE = new UnicodeBlock("BALINESE", BALINESE_ID); /*[1B00]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_C = new UnicodeBlock("LATIN_EXTENDED_C", LATIN_EXTENDED_C_ID); /*[2C60]*/
+        /** 
+         * @stable ICU 3.6 
+         */
+        public static final UnicodeBlock LATIN_EXTENDED_D = new UnicodeBlock("LATIN_EXTENDED_D", LATIN_EXTENDED_D_ID); /*[A720]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock PHAGS_PA = new UnicodeBlock("PHAGS_PA", PHAGS_PA_ID); /*[A840]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock PHOENICIAN = new UnicodeBlock("PHOENICIAN", PHOENICIAN_ID); /*[10900]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock CUNEIFORM = new UnicodeBlock("CUNEIFORM", CUNEIFORM_ID); /*[12000]*/
+        /** 
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION = new UnicodeBlock("CUNEIFORM_NUMBERS_AND_PUNCTUATION", CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID); /*[12400]*/
+        /**
+         * @stable ICU 3.6
+         */
+        public static final UnicodeBlock COUNTING_ROD_NUMERALS = new UnicodeBlock("COUNTING_ROD_NUMERALS", COUNTING_ROD_NUMERALS_ID); /*[1D360]*/
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock SUNDANESE = new UnicodeBlock("SUNDANESE", SUNDANESE_ID); /* [1B80] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock LEPCHA = new UnicodeBlock("LEPCHA", LEPCHA_ID); /* [1C00] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock OL_CHIKI = new UnicodeBlock("OL_CHIKI", OL_CHIKI_ID); /* [1C50] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock CYRILLIC_EXTENDED_A = new UnicodeBlock("CYRILLIC_EXTENDED_A", CYRILLIC_EXTENDED_A_ID); /* [2DE0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock VAI = new UnicodeBlock("VAI", VAI_ID); /* [A500] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock CYRILLIC_EXTENDED_B = new UnicodeBlock("CYRILLIC_EXTENDED_B", CYRILLIC_EXTENDED_B_ID); /* [A640] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock SAURASHTRA = new UnicodeBlock("SAURASHTRA", SAURASHTRA_ID); /* [A880] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock KAYAH_LI = new UnicodeBlock("KAYAH_LI", KAYAH_LI_ID); /* [A900] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock REJANG = new UnicodeBlock("REJANG", REJANG_ID); /* [A930] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock CHAM = new UnicodeBlock("CHAM", CHAM_ID); /* [AA00] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock ANCIENT_SYMBOLS = new UnicodeBlock("ANCIENT_SYMBOLS", ANCIENT_SYMBOLS_ID); /* [10190] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock PHAISTOS_DISC = new UnicodeBlock("PHAISTOS_DISC", PHAISTOS_DISC_ID); /* [101D0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock LYCIAN = new UnicodeBlock("LYCIAN", LYCIAN_ID); /* [10280] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock CARIAN = new UnicodeBlock("CARIAN", CARIAN_ID); /* [102A0] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock LYDIAN = new UnicodeBlock("LYDIAN", LYDIAN_ID); /* [10920] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock MAHJONG_TILES = new UnicodeBlock("MAHJONG_TILES", MAHJONG_TILES_ID); /* [1F000] */
+
+        /**
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public static final UnicodeBlock DOMINO_TILES = new UnicodeBlock("DOMINO_TILES", DOMINO_TILES_ID); /* [1F030] */
+        /** 
+         * @stable ICU 2.4 
+         */
+        public static final UnicodeBlock INVALID_CODE 
+            = new UnicodeBlock("INVALID_CODE", INVALID_CODE_ID);
+                   
+        // public methods --------------------------------------------------
+        
+        /** 
+         * Gets the only instance of the UnicodeBlock with the argument ID.
+         * If no such ID exists, a INVALID_CODE UnicodeBlock will be returned.
+         * @param id UnicodeBlock ID
+         * @return the only instance of the UnicodeBlock with the argument ID
+         *         if it exists, otherwise a INVALID_CODE UnicodeBlock will be 
+         *         returned.
+         * @stable ICU 2.4
+         */
+        public static UnicodeBlock getInstance(int id)
+        {
+            if (id >= 0 && id < BLOCKS_.length) {
+                return BLOCKS_[id];
+            }
+            return INVALID_CODE;
+        }
+        
+        /**
+         * Returns the Unicode allocation block that contains the code point,
+         * or null if the code point is not a member of a defined block.
+         * @param ch code point to be tested
+         * @return the Unicode allocation block that contains the code point
+         * @stable ICU 2.4
+         */
+        public static UnicodeBlock of(int ch)
+        {
+            if (ch > MAX_VALUE) {
+                return INVALID_CODE;
+            }
+
+            return UnicodeBlock.getInstance((PROPERTY_.getAdditional(ch, 0)
+                         & BLOCK_MASK_) >> BLOCK_SHIFT_);
+        }
+
+        /**
+         * Internal function returning of(ch).getID().
+         *
+         * @param ch
+         * @return numeric block value
+         * @internal
+         */
+        static int idOf(int ch) {
+            if (ch < 0 || ch > MAX_VALUE) {
+                return -1;
+            }
+
+            return (PROPERTY_.getAdditional(ch, 0) & BLOCK_MASK_) >> BLOCK_SHIFT_;
+        }
+
+        /**
+         * Cover the JDK 1.5 API.  Return the Unicode block with the
+         * given name.  <br/><b>Note</b>: Unlike JDK 1.5, this only matches
+         * against the official UCD name and the Java block name
+         * (ignoring case).
+         * @param blockName the name of the block to match
+         * @return the UnicodeBlock with that name
+         * @throws IllegalArgumentException if the blockName could not be matched
+         * @stable ICU 3.0
+         */
+        public static final UnicodeBlock forName(String blockName) {
+            Map m = null;
+            if (mref != null) {
+                m = (Map)mref.get();
+            }
+            if (m == null) {
+                m = new HashMap(BLOCKS_.length);
+                for (int i = 0; i < BLOCKS_.length; ++i) {
+                    UnicodeBlock b = BLOCKS_[i];
+                    String name = trimBlockName(getPropertyValueName(UProperty.BLOCK, b.getID(), UProperty.NameChoice.LONG));
+                    m.put(name, b);
+                }
+                mref = new SoftReference(m);
+            }
+            UnicodeBlock b = (UnicodeBlock)m.get(trimBlockName(blockName));
+            if (b == null) {
+                throw new IllegalArgumentException();
+            }
+            return b;
+        }
+        private static SoftReference mref;
+
+        private static String trimBlockName(String name) {
+            String upper = name.toUpperCase();
+            StringBuffer result = new StringBuffer(upper.length());
+            for (int i = 0; i < upper.length(); i++) {
+                char c = upper.charAt(i);
+                if (c != ' ' && c != '_' && c != '-') {
+                    result.append(c);
+                }
+            }
+            return result.toString();
+        }
+        
+        /**
+         * Returns the type ID of this Unicode block
+         * @return integer type ID of this Unicode block
+         * @stable ICU 2.4
+         */
+        public int getID()
+        {
+            return m_id_;
+        }
+        
+        // private data members ---------------------------------------------
+        
+        /**
+         * Array of UnicodeBlocks, for easy access in getInstance(int)
+         */
+        private final static UnicodeBlock BLOCKS_[] = {
+            NO_BLOCK, BASIC_LATIN, 
+            LATIN_1_SUPPLEMENT, LATIN_EXTENDED_A, 
+            LATIN_EXTENDED_B, IPA_EXTENSIONS, 
+            SPACING_MODIFIER_LETTERS, COMBINING_DIACRITICAL_MARKS,
+            GREEK, CYRILLIC,
+            ARMENIAN, HEBREW,
+            ARABIC, SYRIAC, 
+            THAANA, DEVANAGARI, 
+            BENGALI, GURMUKHI, 
+            GUJARATI, ORIYA, 
+            TAMIL, TELUGU, 
+            KANNADA, MALAYALAM, 
+            SINHALA, THAI, 
+            LAO, TIBETAN, 
+            MYANMAR, GEORGIAN, 
+            HANGUL_JAMO, ETHIOPIC, 
+            CHEROKEE, UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,
+            OGHAM, RUNIC, 
+            KHMER, MONGOLIAN, 
+            LATIN_EXTENDED_ADDITIONAL, GREEK_EXTENDED, 
+            GENERAL_PUNCTUATION, SUPERSCRIPTS_AND_SUBSCRIPTS,
+            CURRENCY_SYMBOLS, COMBINING_MARKS_FOR_SYMBOLS, 
+            LETTERLIKE_SYMBOLS, NUMBER_FORMS, 
+            ARROWS, MATHEMATICAL_OPERATORS, 
+            MISCELLANEOUS_TECHNICAL, CONTROL_PICTURES,
+            OPTICAL_CHARACTER_RECOGNITION, ENCLOSED_ALPHANUMERICS,
+            BOX_DRAWING, BLOCK_ELEMENTS,
+            GEOMETRIC_SHAPES, MISCELLANEOUS_SYMBOLS,
+            DINGBATS, BRAILLE_PATTERNS,
+            CJK_RADICALS_SUPPLEMENT, KANGXI_RADICALS,
+            IDEOGRAPHIC_DESCRIPTION_CHARACTERS, CJK_SYMBOLS_AND_PUNCTUATION,
+            HIRAGANA, KATAKANA, 
+            BOPOMOFO, HANGUL_COMPATIBILITY_JAMO,
+            KANBUN, BOPOMOFO_EXTENDED, 
+            ENCLOSED_CJK_LETTERS_AND_MONTHS, CJK_COMPATIBILITY,
+            CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A, CJK_UNIFIED_IDEOGRAPHS,
+            YI_SYLLABLES, YI_RADICALS, 
+            HANGUL_SYLLABLES, HIGH_SURROGATES,
+            HIGH_PRIVATE_USE_SURROGATES, LOW_SURROGATES,
+            PRIVATE_USE_AREA, CJK_COMPATIBILITY_IDEOGRAPHS,
+            ALPHABETIC_PRESENTATION_FORMS, ARABIC_PRESENTATION_FORMS_A,
+            COMBINING_HALF_MARKS, CJK_COMPATIBILITY_FORMS,
+            SMALL_FORM_VARIANTS, ARABIC_PRESENTATION_FORMS_B,
+            SPECIALS, HALFWIDTH_AND_FULLWIDTH_FORMS,
+            OLD_ITALIC, GOTHIC, 
+            DESERET, BYZANTINE_MUSICAL_SYMBOLS,
+            MUSICAL_SYMBOLS, MATHEMATICAL_ALPHANUMERIC_SYMBOLS,
+            CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B, 
+            CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT, 
+            TAGS, CYRILLIC_SUPPLEMENT,
+            TAGALOG, HANUNOO, 
+            BUHID, TAGBANWA, 
+            MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A, SUPPLEMENTAL_ARROWS_A,
+            SUPPLEMENTAL_ARROWS_B, MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B,
+            SUPPLEMENTAL_MATHEMATICAL_OPERATORS, 
+            KATAKANA_PHONETIC_EXTENSIONS,
+            VARIATION_SELECTORS, SUPPLEMENTARY_PRIVATE_USE_AREA_A,
+            SUPPLEMENTARY_PRIVATE_USE_AREA_B,
+            LIMBU, TAI_LE, KHMER_SYMBOLS, PHONETIC_EXTENSIONS,
+            MISCELLANEOUS_SYMBOLS_AND_ARROWS, YIJING_HEXAGRAM_SYMBOLS,
+            LINEAR_B_SYLLABARY, LINEAR_B_IDEOGRAMS, AEGEAN_NUMBERS,
+            UGARITIC, SHAVIAN, OSMANYA, CYPRIOT_SYLLABARY,
+            TAI_XUAN_JING_SYMBOLS, VARIATION_SELECTORS_SUPPLEMENT,
+
+            /* New blocks in Unicode 4.1 */
+            ANCIENT_GREEK_MUSICAL_NOTATION,
+            ANCIENT_GREEK_NUMBERS,
+            ARABIC_SUPPLEMENT,
+            BUGINESE,
+            CJK_STROKES,
+            COMBINING_DIACRITICAL_MARKS_SUPPLEMENT,
+            COPTIC,
+            ETHIOPIC_EXTENDED,
+            ETHIOPIC_SUPPLEMENT,
+            GEORGIAN_SUPPLEMENT,
+            GLAGOLITIC,
+            KHAROSHTHI,
+            MODIFIER_TONE_LETTERS,
+            NEW_TAI_LUE,
+            OLD_PERSIAN,
+            PHONETIC_EXTENSIONS_SUPPLEMENT,
+            SUPPLEMENTAL_PUNCTUATION,
+            SYLOTI_NAGRI,
+            TIFINAGH,
+            VERTICAL_FORMS,
+            NKO,
+            BALINESE,
+            LATIN_EXTENDED_C,
+            LATIN_EXTENDED_D,
+            PHAGS_PA,
+            PHOENICIAN,
+            CUNEIFORM,
+            CUNEIFORM_NUMBERS_AND_PUNCTUATION,
+            COUNTING_ROD_NUMERALS,
+
+            /* New blocks in Unicode 5.8 */
+            SUNDANESE,
+            LEPCHA,
+            OL_CHIKI,
+            CYRILLIC_EXTENDED_A,
+            VAI,
+            CYRILLIC_EXTENDED_B,
+            SAURASHTRA,
+            KAYAH_LI,
+            REJANG,
+            CHAM,
+            ANCIENT_SYMBOLS,
+            PHAISTOS_DISC,
+            LYCIAN,
+            CARIAN,
+            LYDIAN,
+            MAHJONG_TILES,
+            DOMINO_TILES,
+        };
+
+        static {
+            if (COUNT!=BLOCKS_.length) {
+                throw new java.lang.IllegalStateException("UnicodeBlock fields are inconsistent!");
+            }
+        }
+        /**
+         * Identification code for this UnicodeBlock
+         */
+        private int m_id_;
+        
+        // private constructor ----------------------------------------------
+        
+        /**
+         * UnicodeBlock constructor
+         * @param name name of this UnicodeBlock
+         * @param id unique id of this UnicodeBlock
+         * @exception NullPointerException if name is <code>null</code>
+         */
+        private UnicodeBlock(String name, int id)
+        {
+            super(name);
+            m_id_ = id;
+        }
+    }
+    
+    /**
+     * East Asian Width constants.
+     * @see UProperty#EAST_ASIAN_WIDTH
+     * @see UCharacter#getIntPropertyValue
+     * @stable ICU 2.4
+     */
+    public static interface EastAsianWidth 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NEUTRAL = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int AMBIGUOUS = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HALFWIDTH = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FULLWIDTH = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NARROW = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int WIDE = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 6;
+    }
+
+    /**
+     * Decomposition Type constants.
+     * @see UProperty#DECOMPOSITION_TYPE
+     * @stable ICU 2.4
+     */
+    public static interface DecompositionType 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NONE = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CANONICAL = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COMPAT = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CIRCLE = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FINAL = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FONT = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FRACTION = 6;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int INITIAL = 7;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ISOLATED = 8;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int MEDIAL = 9;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NARROW = 10;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NOBREAK = 11;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SMALL = 12;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SQUARE = 13;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SUB = 14;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SUPER = 15;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int VERTICAL = 16;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int WIDE = 17;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 18;
+    }
+    
+    /**
+     * Joining Type constants.
+     * @see UProperty#JOINING_TYPE
+     * @stable ICU 2.4
+     */
+    public static interface JoiningType 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NON_JOINING = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int JOIN_CAUSING = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DUAL_JOINING = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int LEFT_JOINING = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int RIGHT_JOINING = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TRANSPARENT = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 6;
+    }
+    
+    /**
+     * Joining Group constants.
+     * @see UProperty#JOINING_GROUP
+     * @stable ICU 2.4
+     */
+    public static interface JoiningGroup 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NO_JOINING_GROUP = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int AIN = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ALAPH = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ALEF = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BEH = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BETH = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DAL = 6;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DALATH_RISH = 7;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int E = 8;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FEH = 9;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int FINAL_SEMKATH = 10;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int GAF = 11;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int GAMAL = 12;
+        /** 
+         * @stable ICU 2.4
+         */
+        public static final int HAH = 13;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HAMZA_ON_HEH_GOAL = 14;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HE = 15;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HEH = 16;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HEH_GOAL = 17;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HETH = 18;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int KAF = 19;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int KAPH = 20;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int KNOTTED_HEH = 21;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int LAM = 22;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int LAMADH = 23;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int MEEM = 24;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int MIM = 25;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NOON = 26;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NUN = 27;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int PE = 28;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int QAF = 29;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int QAPH = 30;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int REH = 31;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int REVERSED_PE = 32;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SAD = 33;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SADHE = 34;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SEEN = 35;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SEMKATH = 36;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SHIN = 37;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SWASH_KAF = 38;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SYRIAC_WAW = 39;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TAH = 40;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TAW = 41;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TEH_MARBUTA = 42;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int TETH = 43;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int WAW = 44;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YEH = 45;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YEH_BARREE = 46;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YEH_WITH_TAIL = 47;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YUDH = 48;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int YUDH_HE = 49;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ZAIN = 50;
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int FE = 51;        
+        /** 
+         * @stable ICU 2.6 
+         */
+        public static final int KHAPH = 52;
+        /**
+         * @stable ICU 2.6 
+         */
+        public static final int ZHAIN = 53;   
+        /**
+         * @stable ICU 4.0 
+         */
+        public static final int BURUSHASKI_YEH_BARREE = 54;   
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int COUNT = 55;
+    }
+
+    /**
+     * Grapheme Cluster Break constants.
+     * @see UProperty#GRAPHEME_CLUSTER_BREAK
+     * @stable ICU 3.4
+     */
+    public static interface GraphemeClusterBreak {
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int OTHER = 0;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int CONTROL = 1;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int CR = 2;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int EXTEND = 3;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int L = 4;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int LF = 5;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int LV = 6;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int LVT = 7;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int T = 8;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int V = 9;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int SPACING_MARK = 10;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int PREPEND = 11;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int COUNT = 12;
+    }
+
+    /**
+     * Word Break constants.
+     * @see UProperty#WORD_BREAK
+     * @stable ICU 3.4
+     */
+    public static interface WordBreak {
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int OTHER = 0;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int ALETTER = 1;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int FORMAT = 2;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int KATAKANA = 3;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int MIDLETTER = 4;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int MIDNUM = 5;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int NUMERIC = 6;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int EXTENDNUMLET = 7;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int CR = 8;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int EXTEND = 9;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int LF = 10;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int MIDNUMLET = 11;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int NEWLINE = 12;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int COUNT = 13;
+    }
+
+    /**
+     * Sentence Break constants.
+     * @see UProperty#SENTENCE_BREAK
+     * @stable ICU 3.4
+     */
+    public static interface SentenceBreak {
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int OTHER = 0;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int ATERM = 1;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int CLOSE = 2;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int FORMAT = 3;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int LOWER = 4;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int NUMERIC = 5;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int OLETTER = 6;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int SEP = 7;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int SP = 8;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int STERM = 9;
+        /**
+         * @stable ICU 3.8
+         */
+        public static final int UPPER = 10;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int CR = 11;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int EXTEND = 12;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int LF = 13;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int SCONTINUE = 14;
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int COUNT = 15;
+    }
+
+    /**
+     * Line Break constants.
+     * @see UProperty#LINE_BREAK
+     * @stable ICU 2.4
+     */
+    public static interface LineBreak 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int UNKNOWN = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int AMBIGUOUS = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ALPHABETIC = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BREAK_BOTH = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BREAK_AFTER = 4;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BREAK_BEFORE = 5;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int MANDATORY_BREAK = 6;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CONTINGENT_BREAK = 7;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CLOSE_PUNCTUATION = 8;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COMBINING_MARK = 9;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int CARRIAGE_RETURN = 10;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int EXCLAMATION = 11;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int GLUE = 12;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int HYPHEN = 13;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int IDEOGRAPHIC = 14;
+        /**
+         * @see #INSEPARABLE
+         * @stable ICU 2.4
+         */
+        public static final int INSEPERABLE = 15;
+        /**
+         * Renamed from the misspelled "inseperable" in Unicode 4.0.1.
+         * @stable ICU 3.0
+         */
+        public static final int INSEPARABLE = 15;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int INFIX_NUMERIC = 16;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int LINE_FEED = 17;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NONSTARTER = 18;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NUMERIC = 19;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int OPEN_PUNCTUATION = 20;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int POSTFIX_NUMERIC = 21;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int PREFIX_NUMERIC = 22;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int QUOTATION = 23;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COMPLEX_CONTEXT = 24;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SURROGATE = 25;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int SPACE = 26;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int BREAK_SYMBOLS = 27;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int ZWSPACE = 28;
+        
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int NEXT_LINE = 29;       /*[NL]*/ /* from here on: new in Unicode 4/ICU 2.6 */
+        
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int  WORD_JOINER = 30;      /*[WJ]*/
+        
+        /* from here on: new in Unicode 4.1/ICU 3.4 */
+
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  H2 = 31;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  H3 = 32;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  JL = 33;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  JT = 34;
+        /**
+         * @stable ICU 3.4
+         */
+        public static final int  JV = 35;
+
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 36;
+    }
+    
+    /**
+     * Numeric Type constants.
+     * @see UProperty#NUMERIC_TYPE
+     * @stable ICU 2.4
+     */
+    public static interface NumericType 
+    {
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NONE = 0;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DECIMAL = 1;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int DIGIT = 2;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int NUMERIC = 3;
+        /**
+         * @stable ICU 2.4
+         */
+        public static final int COUNT = 4;
+    }
+    
+    /**
+     * Hangul Syllable Type constants.
+     *
+     * @see UProperty#HANGUL_SYLLABLE_TYPE
+     * @stable ICU 2.6
+     */
+    public static interface HangulSyllableType 
+    {
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int NOT_APPLICABLE      = 0;   /*[NA]*/ /*See note !!*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int LEADING_JAMO        = 1;   /*[L]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int VOWEL_JAMO          = 2;   /*[V]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int TRAILING_JAMO       = 3;   /*[T]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int LV_SYLLABLE         = 4;   /*[LV]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int LVT_SYLLABLE        = 5;   /*[LVT]*/
+        /**
+         * @stable ICU 2.6
+         */
+        public static final int COUNT               = 6;
+    }
+
+    // public data members -----------------------------------------------
+  
+    /** 
+     * The lowest Unicode code point value.
+     * @stable ICU 2.1
+     */
+    public static final int MIN_VALUE = UTF16.CODEPOINT_MIN_VALUE;
+
+    /**
+     * The highest Unicode code point value (scalar value) according to the 
+     * Unicode Standard. 
+     * This is a 21-bit value (21 bits, rounded up).<br>
+     * Up-to-date Unicode implementation of java.lang.Character.MIN_VALUE
+     * @stable ICU 2.1
+     */
+    public static final int MAX_VALUE = UTF16.CODEPOINT_MAX_VALUE; 
+      
+    /**
+     * The minimum value for Supplementary code points
+     * @stable ICU 2.1
+     */
+    public static final int SUPPLEMENTARY_MIN_VALUE = 
+        UTF16.SUPPLEMENTARY_MIN_VALUE;
+      
+    /**
+     * Unicode value used when translating into Unicode encoding form and there 
+     * is no existing character.
+     * @stable ICU 2.1
+     */
+    public static final int REPLACEMENT_CHAR = '\uFFFD';
+        
+    /**
+     * Special value that is returned by getUnicodeNumericValue(int) when no 
+     * numeric value is defined for a code point.
+     * @stable ICU 2.4
+     * @see #getUnicodeNumericValue
+     */
+    public static final double NO_NUMERIC_VALUE = -123456789;
+
+    /**
+     * Compatibility constant for Java Character's MIN_RADIX.
+     * @stable ICU 3.4
+     */
+    public static final int MIN_RADIX = java.lang.Character.MIN_RADIX;
+
+    /**
+     * Compatibility constant for Java Character's MAX_RADIX.
+     * @stable ICU 3.4
+     */
+    public static final int MAX_RADIX = java.lang.Character.MAX_RADIX;
+
+    /**
+     * Do not lowercase non-initial parts of words when titlecasing.
+     * Option bit for titlecasing APIs that take an options bit set.
+     *
+     * By default, titlecasing will titlecase the first cased character
+     * of a word and lowercase all other characters.
+     * With this option, the other characters will not be modified.
+     *
+     * @see #toTitleCase
+     * @stable ICU 3.8
+     */
+    public static final int TITLECASE_NO_LOWERCASE = 0x100;
+
+    /**
+     * Do not adjust the titlecasing indexes from BreakIterator::next() indexes;
+     * titlecase exactly the characters at breaks from the iterator.
+     * Option bit for titlecasing APIs that take an options bit set.
+     *
+     * By default, titlecasing will take each break iterator index,
+     * adjust it by looking for the next cased character, and titlecase that one.
+     * Other characters are lowercased.
+     *
+     * This follows Unicode 4 & 5 section 3.13 Default Case Operations:
+     *
+     * R3  toTitlecase(X): Find the word boundaries based on Unicode Standard Annex
+     * #29, "Text Boundaries." Between each pair of word boundaries, find the first
+     * cased character F. If F exists, map F to default_title(F); then map each
+     * subsequent character C to default_lower(C).
+     *
+     * @see #toTitleCase
+     * @see #TITLECASE_NO_LOWERCASE
+     * @stable ICU 3.8
+     */
+    public static final int TITLECASE_NO_BREAK_ADJUSTMENT = 0x200;
+
+    // public methods ----------------------------------------------------
+      
+    /**
+     * Retrieves the numeric value of a decimal digit code point.
+     * <br>This method observes the semantics of
+     * <code>java.lang.Character.digit()</code>.  Note that this
+     * will return positive values for code points for which isDigit
+     * returns false, just like java.lang.Character.
+     * <br><em>Semantic Change:</em> In release 1.3.1 and
+     * prior, this did not treat the European letters as having a
+     * digit value, and also treated numeric letters and other numbers as 
+     * digits.  
+     * This has been changed to conform to the java semantics.
+     * <br>A code point is a valid digit if and only if:
+     * <ul>
+     *   <li>ch is a decimal digit or one of the european letters, and
+     *   <li>the value of ch is less than the specified radix.
+     * </ul>
+     * @param ch the code point to query
+     * @param radix the radix
+     * @return the numeric value represented by the code point in the
+     * specified radix, or -1 if the code point is not a decimal digit
+     * or if its value is too large for the radix
+     * @stable ICU 2.1
+     */
+    public static int digit(int ch, int radix)
+    {
+        // when ch is out of bounds getProperty == 0
+        int props = getProperty(ch);
+        int value;        
+        if (getNumericType(props) == NumericType.DECIMAL) {
+            value = UCharacterProperty.getUnsignedValue(props);
+        } else {
+            value = getEuropeanDigit(ch);
+        }
+        return (0 <= value && value < radix) ? value : -1;
+    }
+    
+    /**
+     * Retrieves the numeric value of a decimal digit code point.
+     * <br>This is a convenience overload of <code>digit(int, int)</code> 
+     * that provides a decimal radix.
+     * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this
+     * treated numeric letters and other numbers as digits.  This has
+     * been changed to conform to the java semantics.
+     * @param ch the code point to query
+     * @return the numeric value represented by the code point,
+     * or -1 if the code point is not a decimal digit or if its
+     * value is too large for a decimal radix 
+     * @stable ICU 2.1
+     */
+    public static int digit(int ch)
+    {
+        int props = getProperty(ch);
+        if (getNumericType(props) == NumericType.DECIMAL) {
+            return UCharacterProperty.getUnsignedValue(props);
+        } else {
+            return -1;
+        }
+    }
+
+    /** 
+     * Returns the numeric value of the code point as a nonnegative 
+     * integer.
+     * <br>If the code point does not have a numeric value, then -1 is returned. 
+     * <br>
+     * If the code point has a numeric value that cannot be represented as a 
+     * nonnegative integer (for example, a fractional value), then -2 is 
+     * returned.
+     * @param ch the code point to query
+     * @return the numeric value of the code point, or -1 if it has no numeric 
+     * value, or -2 if it has a numeric value that cannot be represented as a 
+     * nonnegative integer
+     * @stable ICU 2.1
+     */
+    public static int getNumericValue(int ch)
+    {
+        // slightly pruned version of getUnicodeNumericValue(), plus getEuropeanDigit()
+        int props = PROPERTY_.getProperty(ch);
+        int numericType = getNumericType(props);
+
+        if(numericType==0) {
+            return getEuropeanDigit(ch);
+        }
+        if(numericType==UCharacterProperty.NT_FRACTION || numericType>=UCharacterProperty.NT_COUNT) {
+            return -2;
+        }
+
+        int numericValue = UCharacterProperty.getUnsignedValue(props);
+
+        if(numericType<NumericType.COUNT) {
+            /* normal type, the value is stored directly */
+            return numericValue;
+        } else /* numericType==NT_LARGE */ {
+            /* large value with exponent */
+            long numValue;
+            int mant, exp;
+
+            mant=numericValue>>LARGE_MANT_SHIFT;
+            exp=numericValue&LARGE_EXP_MASK;
+            if(mant==0) {
+                mant=1;
+                exp+=LARGE_EXP_OFFSET_EXTRA;
+            } else if(mant>9) {
+                return -2; /* reserved mantissa value */
+            } else {
+                exp+=LARGE_EXP_OFFSET;
+            }
+            if(exp>9) {
+                return -2;
+            }
+
+            numValue=mant;
+
+            /* multiply by 10^exp without math.h */
+            while(exp>=4) {
+                numValue*=10000.;
+                exp-=4;
+            }
+            switch(exp) {
+            case 3:
+                numValue*=1000.;
+                break;
+            case 2:
+                numValue*=100.;
+                break;
+            case 1:
+                numValue*=10.;
+                break;
+            case 0:
+            default:
+                break;
+            }
+            if(numValue<=Integer.MAX_VALUE) {
+                return (int)numValue;
+            } else {
+                return -2;
+            }
+        }
+    }
+    
+    /**
+     * <p>Get the numeric value for a Unicode code point as defined in the 
+     * Unicode Character Database.</p>
+     * <p>A "double" return type is necessary because some numeric values are 
+     * fractions, negative, or too large for int.</p>
+     * <p>For characters without any numeric values in the Unicode Character 
+     * Database, this function will return NO_NUMERIC_VALUE.</p>
+     * <p><em>API Change:</em> In release 2.2 and prior, this API has a
+     * return type int and returns -1 when the argument ch does not have a 
+     * corresponding numeric value. This has been changed to synch with ICU4C
+     * </p>
+     * This corresponds to the ICU4C function u_getNumericValue.
+     * @param ch Code point to get the numeric value for.
+     * @return numeric value of ch, or NO_NUMERIC_VALUE if none is defined.
+     * @stable ICU 2.4
+     */
+    public static double getUnicodeNumericValue(int ch)
+    {
+        // equivalent to c version double u_getNumericValue(UChar32 c)
+        int props = PROPERTY_.getProperty(ch);
+        int numericType = getNumericType(props);
+
+        if(numericType==0 || numericType>=UCharacterProperty.NT_COUNT) {
+            return NO_NUMERIC_VALUE;
+        }
+
+        int numericValue = UCharacterProperty.getUnsignedValue(props);
+
+        if(numericType<NumericType.COUNT) {
+            /* normal type, the value is stored directly */
+            return numericValue;
+        } else if(numericType==UCharacterProperty.NT_FRACTION) {
+            /* fraction value */
+            int numerator, denominator;
+
+            numerator=numericValue>>FRACTION_NUM_SHIFT;
+            denominator=(numericValue&FRACTION_DEN_MASK)+FRACTION_DEN_OFFSET;
+
+            if(numerator==0) {
+                numerator=-1;
+            }
+            return (double)numerator/(double)denominator;
+        } else /* numericType==NT_LARGE */ {
+            /* large value with exponent */
+            double numValue;
+            int mant, exp;
+
+            mant=numericValue>>LARGE_MANT_SHIFT;
+            exp=numericValue&LARGE_EXP_MASK;
+            if(mant==0) {
+                mant=1;
+                exp+=LARGE_EXP_OFFSET_EXTRA;
+            } else if(mant>9) {
+                return NO_NUMERIC_VALUE; /* reserved mantissa value */
+            } else {
+                exp+=LARGE_EXP_OFFSET;
+            }
+
+            numValue=mant;
+
+            /* multiply by 10^exp without math.h */
+            while(exp>=4) {
+                numValue*=10000.;
+                exp-=4;
+            }
+            switch(exp) {
+            case 3:
+                numValue*=1000.;
+                break;
+            case 2:
+                numValue*=100.;
+                break;
+            case 1:
+                numValue*=10.;
+                break;
+            case 0:
+            default:
+                break;
+            }
+
+            return numValue;
+        }
+    }
+  
+    /**
+     * Compatibility override of Java deprecated method.  This
+     * method will always remain deprecated.  Delegates to
+     * java.lang.Character.isSpace.
+     * @param ch the code point
+     * @return true if the code point is a space character as
+     * defined by java.lang.Character.isSpace.
+     * @deprecated ICU 3.4 (Java)
+     */
+    public static boolean isSpace(int ch) {
+        return ch <= 0x20 &&
+            (ch == 0x20 || ch == 0x09 || ch == 0x0a || ch == 0x0c || ch == 0x0d);
+    }
+
+    /**
+     * Returns a value indicating a code point's Unicode category.
+     * Up-to-date Unicode implementation of java.lang.Character.getType() 
+     * except for the above mentioned code points that had their category 
+     * changed.<br>
+     * Return results are constants from the interface 
+     * <a href=UCharacterCategory.html>UCharacterCategory</a><br>
+     * <em>NOTE:</em> the UCharacterCategory values are <em>not</em> compatible with
+     * those returned by java.lang.Character.getType.  UCharacterCategory values
+     * match the ones used in ICU4C, while java.lang.Character type
+     * values, though similar, skip the value 17.</p>
+     * @param ch code point whose type is to be determined
+     * @return category which is a value of UCharacterCategory
+     * @stable ICU 2.1
+     */
+    public static int getType(int ch)
+    {
+        return getProperty(ch) & UCharacterProperty.TYPE_MASK;
+    }
+       
+    /**
+     * Determines if a code point has a defined meaning in the up-to-date 
+     * Unicode standard.
+     * E.g. supplementary code points though allocated space are not defined in 
+     * Unicode yet.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isDefined()
+     * @param ch code point to be determined if it is defined in the most 
+     *        current version of Unicode
+     * @return true if this code point is defined in unicode
+     * @stable ICU 2.1
+     */
+    public static boolean isDefined(int ch)
+    {
+        return getType(ch) != 0;
+    }
+                                    
+    /**
+     * Determines if a code point is a Java digit.
+     * <br>This method observes the semantics of
+     * <code>java.lang.Character.isDigit()</code>. It returns true for decimal 
+     * digits only.
+     * <br><em>Semantic Change:</em> In release 1.3.1 and prior, this treated 
+     * numeric letters and other numbers as digits. 
+     * This has been changed to conform to the java semantics.
+     * @param ch code point to query
+     * @return true if this code point is a digit 
+     * @stable ICU 2.1
+     */
+    public static boolean isDigit(int ch)
+    {
+        return getType(ch) == UCharacterCategory.DECIMAL_DIGIT_NUMBER;
+    }
+
+    /**
+     * Determines if the specified code point is an ISO control character.
+     * A code point is considered to be an ISO control character if it is in 
+     * the range &#92u0000 through &#92u001F or in the range &#92u007F through 
+     * &#92u009F.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isISOControl()
+     * @param ch code point to determine if it is an ISO control character
+     * @return true if code point is a ISO control character
+     * @stable ICU 2.1
+     */
+    public static boolean isISOControl(int ch)
+    {
+        return ch >= 0 && ch <= APPLICATION_PROGRAM_COMMAND_ && 
+            ((ch <= UNIT_SEPARATOR_) || (ch >= DELETE_));
+    }
+                                    
+    /**
+     * Determines if the specified code point is a letter.
+     * Up-to-date Unicode implementation of java.lang.Character.isLetter()
+     * @param ch code point to determine if it is a letter
+     * @return true if code point is a letter
+     * @stable ICU 2.1
+     */
+    public static boolean isLetter(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return ((1 << getType(ch)) 
+        & ((1 << UCharacterCategory.UPPERCASE_LETTER) 
+           | (1 << UCharacterCategory.LOWERCASE_LETTER)
+           | (1 << UCharacterCategory.TITLECASE_LETTER)
+           | (1 << UCharacterCategory.MODIFIER_LETTER)
+           | (1 << UCharacterCategory.OTHER_LETTER))) != 0;
+    }
+                
+    /**
+     * Determines if the specified code point is a letter or digit.
+     * Note this method, unlike java.lang.Character does not regard the ascii 
+     * characters 'A' - 'Z' and 'a' - 'z' as digits.
+     * @param ch code point to determine if it is a letter or a digit
+     * @return true if code point is a letter or a digit
+     * @stable ICU 2.1
+     */
+    public static boolean isLetterOrDigit(int ch)
+    {
+        return ((1 << getType(ch)) 
+        & ((1 << UCharacterCategory.UPPERCASE_LETTER) 
+           | (1 << UCharacterCategory.LOWERCASE_LETTER)
+           | (1 << UCharacterCategory.TITLECASE_LETTER)
+           | (1 << UCharacterCategory.MODIFIER_LETTER)
+           | (1 << UCharacterCategory.OTHER_LETTER)
+           | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER))) != 0;
+    }
+     
+    /**
+     * Compatibility override of Java deprecated method.  This
+     * method will always remain deprecated.  Delegates to
+     * java.lang.Character.isJavaIdentifierStart.
+     * @param cp the code point
+     * @return true if the code point can start a java identifier.
+     * @deprecated ICU 3.4 (Java)
+     */
+    public static boolean isJavaLetter(int cp) {
+        return isJavaIdentifierStart(cp);
+    }
+
+    /**
+     * Compatibility override of Java deprecated method.  This
+     * method will always remain deprecated.  Delegates to
+     * java.lang.Character.isJavaIdentifierPart.
+     * @param cp the code point
+     * @return true if the code point can continue a java identifier.
+     * @deprecated ICU 3.4 (Java)
+     */
+    public static boolean isJavaLetterOrDigit(int cp) {
+        return isJavaIdentifierPart(cp);
+    }
+
+    /**
+     * Compatibility override of Java method, delegates to
+     * java.lang.Character.isJavaIdentifierStart.
+     * @param cp the code point
+     * @return true if the code point can start a java identifier.
+     * @stable ICU 3.4
+     */
+    public static boolean isJavaIdentifierStart(int cp) {
+        // note, downcast to char for jdk 1.4 compatibility
+        return java.lang.Character.isJavaIdentifierStart((char)cp);
+    }
+
+    /**
+     * Compatibility override of Java method, delegates to
+     * java.lang.Character.isJavaIdentifierPart.
+     * @param cp the code point
+     * @return true if the code point can continue a java identifier.
+     * @stable ICU 3.4
+     */
+    public static boolean isJavaIdentifierPart(int cp) {
+        // note, downcast to char for jdk 1.4 compatibility
+        return java.lang.Character.isJavaIdentifierPart((char)cp);
+    }
+
+    /**
+     * Determines if the specified code point is a lowercase character.
+     * UnicodeData only contains case mappings for code points where they are 
+     * one-to-one mappings; it also omits information about context-sensitive 
+     * case mappings.<br> For more information about Unicode case mapping 
+     * please refer to the 
+     * <a href=http://www.unicode.org/unicode/reports/tr21/>Technical report 
+     * #21</a>.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isLowerCase()
+     * @param ch code point to determine if it is in lowercase
+     * @return true if code point is a lowercase character
+     * @stable ICU 2.1
+     */
+    public static boolean isLowerCase(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return getType(ch) == UCharacterCategory.LOWERCASE_LETTER;
+    }
+       
+    /**
+     * Determines if the specified code point is a white space character.
+     * A code point is considered to be an whitespace character if and only
+     * if it satisfies one of the following criteria:
+     * <ul>
+     * <li> It is a Unicode space separator (category "Zs"), but is not
+     *      a no-break space (&#92u00A0 or &#92u202F or &#92uFEFF).
+     * <li> It is a Unicode line separator (category "Zl").
+     * <li> It is a Unicode paragraph separator (category "Zp").
+     * <li> It is &#92u0009, HORIZONTAL TABULATION. 
+     * <li> It is &#92u000A, LINE FEED. 
+     * <li> It is &#92u000B, VERTICAL TABULATION. 
+     * <li> It is &#92u000C, FORM FEED. 
+     * <li> It is &#92u000D, CARRIAGE RETURN. 
+     * <li> It is &#92u001C, FILE SEPARATOR. 
+     * <li> It is &#92u001D, GROUP SEPARATOR. 
+     * <li> It is &#92u001E, RECORD SEPARATOR. 
+     * <li> It is &#92u001F, UNIT SEPARATOR.  
+     * </ul>
+     *
+     * This API tries to synch to the semantics of the Java API,
+     * java.lang.Character.isWhitespace(). 
+     * @param ch code point to determine if it is a white space
+     * @return true if the specified code point is a white space character
+     * @stable ICU 2.1
+     */
+    public static boolean isWhitespace(int ch)
+    {
+        // exclude no-break spaces
+        // if props == 0, it will just fall through and return false
+        return ((1 << getType(ch)) & 
+                ((1 << UCharacterCategory.SPACE_SEPARATOR)
+                 | (1 << UCharacterCategory.LINE_SEPARATOR)
+                 | (1 << UCharacterCategory.PARAGRAPH_SEPARATOR))) != 0 
+        && (ch != NO_BREAK_SPACE_) && (ch != NARROW_NO_BREAK_SPACE_) 
+        && (ch != ZERO_WIDTH_NO_BREAK_SPACE_)
+        // TAB VT LF FF CR FS GS RS US NL are all control characters
+        // that are white spaces.
+        || (ch >= 0x9 && ch <= 0xd) || (ch >= 0x1c && ch <= 0x1f);
+    }
+       
+    /**
+     * Determines if the specified code point is a Unicode specified space 
+     * character, i.e. if code point is in the category Zs, Zl and Zp.
+     * Up-to-date Unicode implementation of java.lang.Character.isSpaceChar().
+     * @param ch code point to determine if it is a space
+     * @return true if the specified code point is a space character
+     * @stable ICU 2.1
+     */
+    public static boolean isSpaceChar(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return ((1 << getType(ch)) & ((1 << UCharacterCategory.SPACE_SEPARATOR) 
+                      | (1 << UCharacterCategory.LINE_SEPARATOR)
+                      | (1 << UCharacterCategory.PARAGRAPH_SEPARATOR)))
+        != 0;
+    }
+                                    
+    /**
+     * Determines if the specified code point is a titlecase character.
+     * UnicodeData only contains case mappings for code points where they are 
+     * one-to-one mappings; it also omits information about context-sensitive 
+     * case mappings.<br>
+     * For more information about Unicode case mapping please refer to the 
+     * <a href=http://www.unicode.org/unicode/reports/tr21/>
+     * Technical report #21</a>.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isTitleCase().
+     * @param ch code point to determine if it is in title case
+     * @return true if the specified code point is a titlecase character
+     * @stable ICU 2.1
+     */
+    public static boolean isTitleCase(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return getType(ch) == UCharacterCategory.TITLECASE_LETTER;
+    }
+       
+    /**
+     * Determines if the specified code point may be any part of a Unicode 
+     * identifier other than the starting character.
+     * A code point may be part of a Unicode identifier if and only if it is 
+     * one of the following: 
+     * <ul>
+     * <li> Lu Uppercase letter
+     * <li> Ll Lowercase letter
+     * <li> Lt Titlecase letter
+     * <li> Lm Modifier letter
+     * <li> Lo Other letter
+     * <li> Nl Letter number
+     * <li> Pc Connecting punctuation character 
+     * <li> Nd decimal number
+     * <li> Mc Spacing combining mark 
+     * <li> Mn Non-spacing mark 
+     * <li> Cf formatting code
+     * </ul>
+     * Up-to-date Unicode implementation of 
+     * java.lang.Character.isUnicodeIdentifierPart().<br>
+     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+     * @param ch code point to determine if is can be part of a Unicode 
+     *        identifier
+     * @return true if code point is any character belonging a unicode 
+     *         identifier suffix after the first character
+     * @stable ICU 2.1
+     */
+    public static boolean isUnicodeIdentifierPart(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        // cat == format
+        return ((1 << getType(ch)) 
+        & ((1 << UCharacterCategory.UPPERCASE_LETTER) 
+           | (1 << UCharacterCategory.LOWERCASE_LETTER)
+           | (1 << UCharacterCategory.TITLECASE_LETTER)
+           | (1 << UCharacterCategory.MODIFIER_LETTER)
+           | (1 << UCharacterCategory.OTHER_LETTER)
+           | (1 << UCharacterCategory.LETTER_NUMBER) 
+           | (1 << UCharacterCategory.CONNECTOR_PUNCTUATION)
+           | (1 << UCharacterCategory.DECIMAL_DIGIT_NUMBER)
+           | (1 << UCharacterCategory.COMBINING_SPACING_MARK)
+           | (1 << UCharacterCategory.NON_SPACING_MARK))) != 0
+        || isIdentifierIgnorable(ch);
+    }
+                       
+    /**
+     * Determines if the specified code point is permissible as the first 
+     * character in a Unicode identifier.
+     * A code point may start a Unicode identifier if it is of type either 
+     * <ul> 
+     * <li> Lu Uppercase letter
+     * <li> Ll Lowercase letter
+     * <li> Lt Titlecase letter
+     * <li> Lm Modifier letter
+     * <li> Lo Other letter
+     * <li> Nl Letter number
+     * </ul>
+     * Up-to-date Unicode implementation of 
+     * java.lang.Character.isUnicodeIdentifierStart().<br>
+     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+     * @param ch code point to determine if it can start a Unicode identifier
+     * @return true if code point is the first character belonging a unicode 
+     *              identifier
+     * @stable ICU 2.1
+     */
+    public static boolean isUnicodeIdentifierStart(int ch)
+    {
+        /*int cat = getType(ch);*/
+        // if props == 0, it will just fall through and return false
+        return ((1 << getType(ch)) 
+        & ((1 << UCharacterCategory.UPPERCASE_LETTER) 
+           | (1 << UCharacterCategory.LOWERCASE_LETTER)
+           | (1 << UCharacterCategory.TITLECASE_LETTER)
+           | (1 << UCharacterCategory.MODIFIER_LETTER)
+           | (1 << UCharacterCategory.OTHER_LETTER)
+           | (1 << UCharacterCategory.LETTER_NUMBER))) != 0;
+    }
+
+    /**
+     * Determines if the specified code point should be regarded as an 
+     * ignorable character in a Unicode identifier.
+     * A character is ignorable in the Unicode standard if it is of the type 
+     * Cf, Formatting code.<br>
+     * Up-to-date Unicode implementation of 
+     * java.lang.Character.isIdentifierIgnorable().<br>
+     * See <a href=http://www.unicode.org/unicode/reports/tr8/>UTR #8</a>.
+     * @param ch code point to be determined if it can be ignored in a Unicode 
+     *        identifier.
+     * @return true if the code point is ignorable
+     * @stable ICU 2.1
+     */
+    public static boolean isIdentifierIgnorable(int ch)
+    {
+        // see java.lang.Character.isIdentifierIgnorable() on range of 
+        // ignorable characters.
+        if (ch <= 0x9f) {
+        return isISOControl(ch) 
+        && !((ch >= 0x9 && ch <= 0xd) 
+             || (ch >= 0x1c && ch <= 0x1f));
+        } 
+        return getType(ch) == UCharacterCategory.FORMAT;
+    }
+                      
+    /**
+     * Determines if the specified code point is an uppercase character.
+     * UnicodeData only contains case mappings for code point where they are 
+     * one-to-one mappings; it also omits information about context-sensitive 
+     * case mappings.<br> 
+     * For language specific case conversion behavior, use 
+     * toUpperCase(locale, str). <br>
+     * For example, the case conversion for dot-less i and dotted I in Turkish,
+     * or for final sigma in Greek.
+     * For more information about Unicode case mapping please refer to the 
+     * <a href=http://www.unicode.org/unicode/reports/tr21/>
+     * Technical report #21</a>.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.isUpperCase().
+     * @param ch code point to determine if it is in uppercase
+     * @return true if the code point is an uppercase character
+     * @stable ICU 2.1
+     */
+    public static boolean isUpperCase(int ch)
+    {
+        // if props == 0, it will just fall through and return false
+        return getType(ch) == UCharacterCategory.UPPERCASE_LETTER;
+    }
+                       
+    /**
+     * The given code point is mapped to its lowercase equivalent; if the code 
+     * point has no lowercase equivalent, the code point itself is returned.
+     * Up-to-date Unicode implementation of java.lang.Character.toLowerCase()
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They take into account the string context and the language and can map
+     * to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch code point whose lowercase equivalent is to be retrieved
+     * @return the lowercase equivalent code point
+     * @stable ICU 2.1
+     */
+    public static int toLowerCase(int ch) {
+        return gCsp.tolower(ch);
+    }
+
+    /**
+     * Converts argument code point and returns a String object representing 
+     * the code point's value in UTF16 format.
+     * The result is a string whose length is 1 for non-supplementary code 
+     * points, 2 otherwise.<br>
+     * com.ibm.ibm.icu.UTF16 can be used to parse Strings generated by this 
+     * function.<br>
+     * Up-to-date Unicode implementation of java.lang.Character.toString()
+     * @param ch code point
+     * @return string representation of the code point, null if code point is not
+     *         defined in unicode
+     * @stable ICU 2.1
+     */
+    public static String toString(int ch)
+    {
+        if (ch < MIN_VALUE || ch > MAX_VALUE) {
+            return null;
+        }
+        
+        if (ch < SUPPLEMENTARY_MIN_VALUE) {
+            return String.valueOf((char)ch);
+        }
+        
+        StringBuffer result = new StringBuffer();
+        result.append(UTF16.getLeadSurrogate(ch));
+        result.append(UTF16.getTrailSurrogate(ch));
+        return result.toString();
+    }
+                                    
+    /**
+     * Converts the code point argument to titlecase.
+     * If no titlecase is available, the uppercase is returned. If no uppercase 
+     * is available, the code point itself is returned.
+     * Up-to-date Unicode implementation of java.lang.Character.toTitleCase()
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They take into account the string context and the language and can map
+     * to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch code point  whose title case is to be retrieved
+     * @return titlecase code point
+     * @stable ICU 2.1
+     */
+    public static int toTitleCase(int ch) {
+        return gCsp.totitle(ch);
+    }
+       
+    /**
+     * Converts the character argument to uppercase.
+     * If no uppercase is available, the character itself is returned.
+     * Up-to-date Unicode implementation of java.lang.Character.toUpperCase()
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They take into account the string context and the language and can map
+     * to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch code point whose uppercase is to be retrieved
+     * @return uppercase code point
+     * @stable ICU 2.1
+     */
+    public static int toUpperCase(int ch) {
+        return gCsp.toupper(ch);
+    }
+       
+    // extra methods not in java.lang.Character --------------------------
+       
+    /**
+     * Determines if the code point is a supplementary character.
+     * A code point is a supplementary character if and only if it is greater 
+     * than <a href=#SUPPLEMENTARY_MIN_VALUE>SUPPLEMENTARY_MIN_VALUE</a>
+     * @param ch code point to be determined if it is in the supplementary 
+     *        plane
+     * @return true if code point is a supplementary character
+     * @stable ICU 2.1
+     */
+    public static boolean isSupplementary(int ch)
+    {
+        return ch >= UCharacter.SUPPLEMENTARY_MIN_VALUE && 
+            ch <= UCharacter.MAX_VALUE;
+    }
+      
+    /**
+     * Determines if the code point is in the BMP plane.
+     * @param ch code point to be determined if it is not a supplementary 
+     *        character
+     * @return true if code point is not a supplementary character
+     * @stable ICU 2.1
+     */
+    public static boolean isBMP(int ch) 
+    {
+        return (ch >= 0 && ch <= LAST_CHAR_MASK_);
+    }
+
+    /**
+     * Determines whether the specified code point is a printable character 
+     * according to the Unicode standard.
+     * @param ch code point to be determined if it is printable
+     * @return true if the code point is a printable character
+     * @stable ICU 2.1
+     */
+    public static boolean isPrintable(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return (cat != UCharacterCategory.UNASSIGNED && 
+        cat != UCharacterCategory.CONTROL && 
+        cat != UCharacterCategory.FORMAT &&
+        cat != UCharacterCategory.PRIVATE_USE &&
+        cat != UCharacterCategory.SURROGATE &&
+        cat != UCharacterCategory.GENERAL_OTHER_TYPES);
+    }
+
+    /**
+     * Determines whether the specified code point is of base form.
+     * A code point of base form does not graphically combine with preceding 
+     * characters, and is neither a control nor a format character.
+     * @param ch code point to be determined if it is of base form
+     * @return true if the code point is of base form
+     * @stable ICU 2.1
+     */
+    public static boolean isBaseForm(int ch)
+    {
+        int cat = getType(ch);
+        // if props == 0, it will just fall through and return false
+        return cat == UCharacterCategory.DECIMAL_DIGIT_NUMBER || 
+            cat == UCharacterCategory.OTHER_NUMBER || 
+            cat == UCharacterCategory.LETTER_NUMBER || 
+            cat == UCharacterCategory.UPPERCASE_LETTER || 
+            cat == UCharacterCategory.LOWERCASE_LETTER || 
+            cat == UCharacterCategory.TITLECASE_LETTER ||
+            cat == UCharacterCategory.MODIFIER_LETTER || 
+            cat == UCharacterCategory.OTHER_LETTER || 
+            cat == UCharacterCategory.NON_SPACING_MARK || 
+            cat == UCharacterCategory.ENCLOSING_MARK ||
+            cat == UCharacterCategory.COMBINING_SPACING_MARK;
+    }
+
+    /**
+     * Returns the Bidirection property of a code point.
+     * For example, 0x0041 (letter A) has the LEFT_TO_RIGHT directional 
+     * property.<br>
+     * Result returned belongs to the interface 
+     * <a href=UCharacterDirection.html>UCharacterDirection</a>
+     * @param ch the code point to be determined its direction
+     * @return direction constant from UCharacterDirection.
+     * @stable ICU 2.1
+     */
+    public static int getDirection(int ch)
+    {
+        return gBdp.getClass(ch);
+    }
+
+    /**
+     * Determines whether the code point has the "mirrored" property.
+     * This property is set for characters that are commonly used in
+     * Right-To-Left contexts and need to be displayed with a "mirrored"
+     * glyph.
+     * @param ch code point whose mirror is to be determined
+     * @return true if the code point has the "mirrored" property
+     * @stable ICU 2.1
+     */
+    public static boolean isMirrored(int ch)
+    {
+        return gBdp.isMirrored(ch);
+    }
+
+    /**
+     * Maps the specified code point to a "mirror-image" code point.
+     * For code points with the "mirrored" property, implementations sometimes 
+     * need a "poor man's" mapping to another code point such that the default 
+     * glyph may serve as the mirror-image of the default glyph of the 
+     * specified code point.<br> 
+     * This is useful for text conversion to and from codepages with visual 
+     * order, and for displays without glyph selection capabilities.
+     * @param ch code point whose mirror is to be retrieved
+     * @return another code point that may serve as a mirror-image substitute, 
+     *         or ch itself if there is no such mapping or ch does not have the 
+     *         "mirrored" property
+     * @stable ICU 2.1
+     */
+    public static int getMirror(int ch)
+    {
+        return gBdp.getMirror(ch);
+    }
+      
+    /**
+     * Gets the combining class of the argument codepoint
+     * @param ch code point whose combining is to be retrieved
+     * @return the combining class of the codepoint
+     * @stable ICU 2.1
+     */
+    public static int getCombiningClass(int ch)
+    {
+        if (ch < MIN_VALUE || ch > MAX_VALUE) {
+        throw new IllegalArgumentException("Codepoint out of bounds");
+        }
+        return NormalizerImpl.getCombiningClass(ch);
+    }
+      
+    /**
+     * A code point is illegal if and only if
+     * <ul>
+     * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
+     * <li> A surrogate value, 0xD800 to 0xDFFF
+     * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
+     * </ul>
+     * Note: legal does not mean that it is assigned in this version of Unicode.
+     * @param ch code point to determine if it is a legal code point by itself
+     * @return true if and only if legal. 
+     * @stable ICU 2.1
+     */
+    public static boolean isLegal(int ch) 
+    {
+        if (ch < MIN_VALUE) {
+            return false;
+        }
+        if (ch < UTF16.SURROGATE_MIN_VALUE) {
+            return true;
+        }
+        if (ch <= UTF16.SURROGATE_MAX_VALUE) {
+            return false;
+        }
+        if (UCharacterUtility.isNonCharacter(ch)) {
+            return false;
+        }
+        return (ch <= MAX_VALUE);
+    }
+      
+    /**
+     * A string is legal iff all its code points are legal.
+     * A code point is illegal if and only if
+     * <ul>
+     * <li> Out of bounds, less than 0 or greater than UCharacter.MAX_VALUE
+     * <li> A surrogate value, 0xD800 to 0xDFFF
+     * <li> Not-a-character, having the form 0x xxFFFF or 0x xxFFFE
+     * </ul>
+     * Note: legal does not mean that it is assigned in this version of Unicode.
+     * @param str containing code points to examin
+     * @return true if and only if legal. 
+     * @stable ICU 2.1
+     */
+    public static boolean isLegal(String str) 
+    {
+        int size = str.length();
+        int codepoint;
+        for (int i = 0; i < size; i ++)
+        {
+        codepoint = UTF16.charAt(str, i);
+        if (!isLegal(codepoint)) {
+            return false;
+        }
+        if (isSupplementary(codepoint)) {
+            i ++;
+        }
+        }
+        return true;
+    }
+
+    /**
+     * Gets the version of Unicode data used. 
+     * @return the unicode version number used
+     * @stable ICU 2.1
+     */
+    public static VersionInfo getUnicodeVersion()
+    {
+        return PROPERTY_.m_unicodeVersion_;
+    }
+      
+    /**
+     * Retrieve the most current Unicode name of the argument code point, or 
+     * null if the character is unassigned or outside the range 
+     * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
+     * <br>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param ch the code point for which to get the name
+     * @return most current Unicode name
+     * @stable ICU 2.1
+     */
+    public static String getName(int ch)
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getName(ch, UCharacterNameChoice.UNICODE_CHAR_NAME);
+    }
+    
+    /**
+     * Gets the names for each of the characters in a string
+     * @param s string to format
+     * @param separator string to go between names
+     * @return string of names
+     * @stable ICU 3.8
+     */
+    public static String getName(String s, String separator) {
+        if (s.length() == 1) { // handle common case
+            return getName(s.charAt(0));
+        }
+        int cp;
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s,i);
+            if (i != 0) sb.append(separator);
+            sb.append(UCharacter.getName(cp));
+        }
+        return sb.toString();
+    }
+      
+    /**
+     * Retrieve the earlier version 1.0 Unicode name of the argument code 
+     * point, or null if the character is unassigned or outside the range 
+     * UCharacter.MIN_VALUE and UCharacter.MAX_VALUE or does not have a name.
+     * <br>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param ch the code point for which to get the name
+     * @return version 1.0 Unicode name
+     * @stable ICU 2.1
+     */
+    public static String getName1_0(int ch)
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getName(ch, 
+                             UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Retrieves a name for a valid codepoint. Unlike, getName(int) and
+     * getName1_0(int), this method will return a name even for codepoints that
+     * are not assigned a name in UnicodeData.txt.
+     * </p>
+     * The names are returned in the following order.
+     * <ul>
+     * <li> Most current Unicode name if there is any
+     * <li> Unicode 1.0 name if there is any
+     * <li> Extended name in the form of 
+     *      "<codepoint_type-codepoint_hex_digits>". E.g. <noncharacter-fffe>
+     * </ul>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param ch the code point for which to get the name
+     * @return a name for the argument codepoint
+     * @stable ICU 2.6
+     */
+    public static String getExtendedName(int ch) 
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getName(ch, UCharacterNameChoice.EXTENDED_CHAR_NAME);
+    }
+    
+    /**
+     * Get the ISO 10646 comment for a character.
+     * The ISO 10646 comment is an informative field in the Unicode Character
+     * Database (UnicodeData.txt field 11) and is from the ISO 10646 names list.
+     * @param ch The code point for which to get the ISO comment.
+     *           It must be <code>0<=c<=0x10ffff</code>.
+     * @return The ISO comment, or null if there is no comment for this 
+     *         character.
+     * @stable ICU 2.4
+     */
+    public static String getISOComment(int ch)
+    {
+        if (ch < UCharacter.MIN_VALUE || ch > UCharacter.MAX_VALUE) {
+            return null;
+        }
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }    
+        String result = NAME_.getGroupName(ch, 
+                                           UCharacterNameChoice.ISO_COMMENT_);
+        return result;
+    }
+      
+    /**
+     * <p>Find a Unicode code point by its most current Unicode name and 
+     * return its code point value. All Unicode names are in uppercase.</p>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param name most current Unicode character name whose code point is to 
+     *        be returned
+     * @return code point or -1 if name is not found
+     * @stable ICU 2.1
+     */
+    public static int getCharFromName(String name)
+    {     
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getCharFromName(
+                     UCharacterNameChoice.UNICODE_CHAR_NAME, name);
+    }
+      
+    /**
+     * <p>Find a Unicode character by its version 1.0 Unicode name and return 
+     * its code point value. All Unicode names are in uppercase.</p>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param name Unicode 1.0 code point name whose code point is to 
+     *             returned
+     * @return code point or -1 if name is not found
+     * @stable ICU 2.1
+     */
+    public static int getCharFromName1_0(String name)
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getCharFromName(
+                     UCharacterNameChoice.UNICODE_10_CHAR_NAME, name);
+    }
+    
+    /**
+     * <p>Find a Unicode character by either its name and return its code 
+     * point value. All Unicode names are in uppercase. 
+     * Extended names are all lowercase except for numbers and are contained
+     * within angle brackets.</p>
+     * The names are searched in the following order
+     * <ul>
+     * <li> Most current Unicode name if there is any
+     * <li> Unicode 1.0 name if there is any
+     * <li> Extended name in the form of 
+     *      "<codepoint_type-codepoint_hex_digits>". E.g. <noncharacter-FFFE>
+     * </ul>
+     * Note calling any methods related to code point names, e.g. get*Name*() 
+     * incurs a one-time initialisation cost to construct the name tables.
+     * @param name codepoint name
+     * @return code point associated with the name or -1 if the name is not
+     *         found.
+     * @stable ICU 2.6
+     */
+    public static int getCharFromExtendedName(String name)
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return NAME_.getCharFromName(
+                     UCharacterNameChoice.EXTENDED_CHAR_NAME, name);
+    }
+
+    /**
+     * Return the Unicode name for a given property, as given in the
+     * Unicode database file PropertyAliases.txt.  Most properties
+     * have more than one name.  The nameChoice determines which one
+     * is returned.
+     *
+     * In addition, this function maps the property
+     * UProperty.GENERAL_CATEGORY_MASK to the synthetic names "gcm" /
+     * "General_Category_Mask".  These names are not in
+     * PropertyAliases.txt.
+     * 
+     * @param property UProperty selector.
+     *
+     * @param nameChoice UProperty.NameChoice selector for which name
+     * to get.  All properties have a long name.  Most have a short
+     * name, but some do not.  Unicode allows for additional names; if
+     * present these will be returned by UProperty.NameChoice.LONG + i,
+     * where i=1, 2,...
+     *
+     * @return a name, or null if Unicode explicitly defines no name
+     * ("n/a") for a given property/nameChoice.  If a given nameChoice
+     * throws an exception, then all larger values of nameChoice will
+     * throw an exception.  If null is returned for a given
+     * nameChoice, then other nameChoice values may return non-null
+     * results.
+     *
+     * @exception IllegalArgumentException thrown if property or
+     * nameChoice are invalid.
+     *
+     * @see UProperty
+     * @see UProperty.NameChoice
+     * @stable ICU 2.4
+     */
+    public static String getPropertyName(int property,
+                                         int nameChoice) {
+        return PNAMES_.getPropertyName(property, nameChoice);
+    }
+
+    /**
+     * Return the UProperty selector for a given property name, as
+     * specified in the Unicode database file PropertyAliases.txt.
+     * Short, long, and any other variants are recognized.
+     *
+     * In addition, this function maps the synthetic names "gcm" /
+     * "General_Category_Mask" to the property
+     * UProperty.GENERAL_CATEGORY_MASK.  These names are not in
+     * PropertyAliases.txt.
+     *
+     * @param propertyAlias the property name to be matched.  The name
+     * is compared using "loose matching" as described in
+     * PropertyAliases.txt.
+     *
+     * @return a UProperty enum.
+     *
+     * @exception IllegalArgumentException thrown if propertyAlias
+     * is not recognized.
+     *
+     * @see UProperty
+     * @stable ICU 2.4
+     */
+    public static int getPropertyEnum(String propertyAlias) {
+        return PNAMES_.getPropertyEnum(propertyAlias);
+    }
+
+    /**
+     * Return the Unicode name for a given property value, as given in
+     * the Unicode database file PropertyValueAliases.txt.  Most
+     * values have more than one name.  The nameChoice determines
+     * which one is returned.
+     *
+     * Note: Some of the names in PropertyValueAliases.txt can only be
+     * retrieved using UProperty.GENERAL_CATEGORY_MASK, not
+     * UProperty.GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
+     * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
+     * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
+     *
+     * @param property UProperty selector constant.
+     * UProperty.INT_START &lt;= property &lt; UProperty.INT_LIMIT or
+     * UProperty.BINARY_START &lt;= property &lt; UProperty.BINARY_LIMIT or
+     * UProperty.MASK_START &lt; = property &lt; UProperty.MASK_LIMIT.
+     * If out of range, null is returned.
+     *
+     * @param value selector for a value for the given property.  In
+     * general, valid values range from 0 up to some maximum.  There
+     * are a few exceptions: (1.) UProperty.BLOCK values begin at the
+     * non-zero value BASIC_LATIN.getID().  (2.)
+     * UProperty.CANONICAL_COMBINING_CLASS values are not contiguous
+     * and range from 0..240.  (3.)  UProperty.GENERAL_CATEGORY_MASK values
+     * are mask values produced by left-shifting 1 by
+     * UCharacter.getType().  This allows grouped categories such as
+     * [:L:] to be represented.  Mask values are non-contiguous.
+     *
+     * @param nameChoice UProperty.NameChoice selector for which name
+     * to get.  All values have a long name.  Most have a short name,
+     * but some do not.  Unicode allows for additional names; if
+     * present these will be returned by UProperty.NameChoice.LONG + i,
+     * where i=1, 2,...
+     *
+     * @return a name, or null if Unicode explicitly defines no name
+     * ("n/a") for a given property/value/nameChoice.  If a given
+     * nameChoice throws an exception, then all larger values of
+     * nameChoice will throw an exception.  If null is returned for a
+     * given nameChoice, then other nameChoice values may return
+     * non-null results.
+     *
+     * @exception IllegalArgumentException thrown if property, value,
+     * or nameChoice are invalid.
+     *
+     * @see UProperty
+     * @see UProperty.NameChoice
+     * @stable ICU 2.4
+     */
+    public static String getPropertyValueName(int property,
+                                              int value,
+                                              int nameChoice) 
+    {
+        if ((property == UProperty.CANONICAL_COMBINING_CLASS
+             || property == UProperty.LEAD_CANONICAL_COMBINING_CLASS
+             || property == UProperty.TRAIL_CANONICAL_COMBINING_CLASS)
+            && value >= UCharacter.getIntPropertyMinValue(
+                              UProperty.CANONICAL_COMBINING_CLASS)
+            && value <= UCharacter.getIntPropertyMaxValue(
+                              UProperty.CANONICAL_COMBINING_CLASS)
+            && nameChoice >= 0 && nameChoice < UProperty.NameChoice.COUNT) {
+            // this is hard coded for the valid cc
+            // because PropertyValueAliases.txt does not contain all of them
+            try {
+                return PNAMES_.getPropertyValueName(property, value, 
+                                                    nameChoice);
+            }
+            catch (IllegalArgumentException e) {
+                return null;
+            }
+        }
+        return PNAMES_.getPropertyValueName(property, value, nameChoice);
+    }
+
+    /**
+     * Return the property value integer for a given value name, as
+     * specified in the Unicode database file PropertyValueAliases.txt.
+     * Short, long, and any other variants are recognized.
+     *
+     * Note: Some of the names in PropertyValueAliases.txt will only be
+     * recognized with UProperty.GENERAL_CATEGORY_MASK, not
+     * UProperty.GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
+     * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
+     * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
+     *
+     * @param property UProperty selector constant.
+     * UProperty.INT_START &lt;= property &lt; UProperty.INT_LIMIT or
+     * UProperty.BINARY_START &lt;= property &lt; UProperty.BINARY_LIMIT or
+     * UProperty.MASK_START &lt; = property &lt; UProperty.MASK_LIMIT.
+     * Only these properties can be enumerated.
+     *
+     * @param valueAlias the value name to be matched.  The name is
+     * compared using "loose matching" as described in
+     * PropertyValueAliases.txt.
+     *
+     * @return a value integer.  Note: UProperty.GENERAL_CATEGORY
+     * values are mask values produced by left-shifting 1 by
+     * UCharacter.getType().  This allows grouped categories such as
+     * [:L:] to be represented.
+     *
+     * @see UProperty
+     * @throws IllegalArgumentException if property is not a valid UProperty
+     *         selector
+     * @stable ICU 2.4
+     */
+    public static int getPropertyValueEnum(int property, String valueAlias) {
+        return PNAMES_.getPropertyValueEnum(property, valueAlias);
+    }
+      
+    /**
+     * Returns a code point corresponding to the two UTF16 characters.
+     * @param lead the lead char
+     * @param trail the trail char
+     * @return code point if surrogate characters are valid.
+     * @exception IllegalArgumentException thrown when argument characters do
+     *            not form a valid codepoint
+     * @stable ICU 2.1
+     */
+    public static int getCodePoint(char lead, char trail) 
+    {
+        if (UTF16.isLeadSurrogate(lead) && UTF16.isTrailSurrogate(trail)) {
+            return UCharacterProperty.getRawSupplementary(lead, trail);
+        }
+        throw new IllegalArgumentException("Illegal surrogate characters");
+    }
+      
+    /**
+     * Returns the code point corresponding to the UTF16 character.
+     * @param char16 the UTF16 character
+     * @return code point if argument is a valid character.
+     * @exception IllegalArgumentException thrown when char16 is not a valid
+     *            codepoint
+     * @stable ICU 2.1
+     */
+    public static int getCodePoint(char char16) 
+    {
+        if (UCharacter.isLegal(char16)) {
+            return char16;
+        }
+        throw new IllegalArgumentException("Illegal codepoint");
+    }
+
+    /**
+     * Implementation of UCaseProps.ContextIterator, iterates over a String.
+     * See ustrcase.c/utf16_caseContextIterator().
+     */
+    private static class StringContextIterator implements UCaseProps.ContextIterator {
+        /**
+         * Constructor.
+         * @param s String to iterate over. 
+         */
+        StringContextIterator(String s) {
+            this.s=s;
+            limit=s.length();
+            cpStart=cpLimit=index=0;
+            dir=0;
+        }
+
+        /**
+         * Set the iteration limit for nextCaseMapCP() to an index within the string.
+         * If the limit parameter is negative or past the string, then the
+         * string length is restored as the iteration limit.
+         *
+         * This limit does not affect the next() function which always
+         * iterates to the very end of the string.
+         *
+         * @param lim The iteration limit.
+         */
+        public void setLimit(int lim) {
+            if(0<=lim && lim<=s.length()) {
+                limit=lim;
+            } else {
+                limit=s.length();
+            }
+        }
+
+        /**
+         * Move to the iteration limit without fetching code points up to there.
+         */
+        public void moveToLimit() {
+            cpStart=cpLimit=limit;
+        }
+
+        /**
+         * Iterate forward through the string to fetch the next code point
+         * to be case-mapped, and set the context indexes for it.
+         * Performance optimization, to save on function calls and redundant
+         * tests. Combines UTF16.charAt(), UTF16.getCharCount(), and setIndex().
+         *
+         * When the iteration limit is reached (and -1 is returned),
+         * getCPStart() will be at the iteration limit.
+         *
+         * Iteration with next() does not affect the position for nextCaseMapCP().
+         *
+         * @return The next code point to be case-mapped, or <0 when the iteration is done.
+         */
+        public int nextCaseMapCP() {
+            cpStart=cpLimit;
+            if(cpLimit<limit) {
+                int c=s.charAt(cpLimit++);
+                if(UTF16.LEAD_SURROGATE_MIN_VALUE<=c || c<=UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+                    char c2;
+                    if( c<=UTF16.LEAD_SURROGATE_MAX_VALUE && cpLimit<limit &&
+                        UTF16.TRAIL_SURROGATE_MIN_VALUE<=(c2=s.charAt(cpLimit)) && c2<=UTF16.TRAIL_SURROGATE_MAX_VALUE
+                    ) {
+                        // supplementary code point
+                        ++cpLimit;
+                        c=UCharacterProperty.getRawSupplementary((char)c, c2);
+                    // else unpaired surrogate code point
+                    }
+                // else BMP code point
+                }
+                return c;
+            } else {
+                return -1;
+            }
+        }
+
+        /**
+         * Get the start of the code point that was last returned
+         * by nextCaseMapCP().
+         */
+        public int getCPStart() {
+            return cpStart;
+        }
+
+        /**
+         * Get the limit of the code point that was last returned
+         * by nextCaseMapCP().
+         */
+        public int getCPLimit() {
+            return cpLimit;
+        }
+
+        // implement UCaseProps.ContextIterator
+        public void reset(int direction) {
+            if(direction>0) {
+                /* reset for forward iteration */
+                dir=1;
+                index=cpLimit;
+            } else if(direction<0) {
+                /* reset for backward iteration */
+                dir=-1;
+                index=cpStart;
+            } else {
+                // not a valid direction
+                dir=0;
+                index=0;
+            }
+        }
+
+        public int next() {
+            int c;
+
+            if(dir>0 && index<s.length()) {
+                c=UTF16.charAt(s, index);
+                index+=UTF16.getCharCount(c);
+                return c;
+            } else if(dir<0 && index>0) {
+                c=UTF16.charAt(s, index-1);
+                index-=UTF16.getCharCount(c);
+                return c;
+            }
+            return -1;
+        }
+
+        // variables
+        protected String s;
+        protected int index, limit, cpStart, cpLimit;
+        protected int dir; // 0=initial state  >0=forward  <0=backward
+    }
+
+    /**
+     * Gets uppercase version of the argument string. 
+     * Casing is dependent on the default locale and context-sensitive.
+     * @param str source string to be performed on
+     * @return uppercase version of the argument string
+     * @stable ICU 2.1
+     */
+    public static String toUpperCase(String str)
+    {
+        return toUpperCase(ULocale.getDefault(), str);
+    }
+      
+    /**
+     * Gets lowercase version of the argument string. 
+     * Casing is dependent on the default locale and context-sensitive
+     * @param str source string to be performed on
+     * @return lowercase version of the argument string
+     * @stable ICU 2.1
+     */
+    public static String toLowerCase(String str)
+    {
+        return toLowerCase(ULocale.getDefault(), str);
+    }
+    
+    /**
+     * <p>Gets the titlecase version of the argument string.</p>
+     * <p>Position for titlecasing is determined by the argument break 
+     * iterator, hence the user can customize his break iterator for 
+     * a specialized titlecasing. In this case only the forward iteration 
+     * needs to be implemented.
+     * If the break iterator passed in is null, the default Unicode algorithm
+     * will be used to determine the titlecase positions.
+     * </p>
+     * <p>Only positions returned by the break iterator will be title cased,
+     * character in between the positions will all be in lower case.</p>
+     * <p>Casing is dependent on the default locale and context-sensitive</p>
+     * @param str source string to be performed on
+     * @param breakiter break iterator to determine the positions in which
+     *        the character should be title cased.
+     * @return lowercase version of the argument string
+     * @stable ICU 2.6
+     */
+    public static String toTitleCase(String str, BreakIterator breakiter)
+    {
+        return toTitleCase(ULocale.getDefault(), str, breakiter);
+    }
+      
+    /**
+     * Gets uppercase version of the argument string. 
+     * Casing is dependent on the argument locale and context-sensitive.
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @return uppercase version of the argument string
+     * @stable ICU 2.1
+     */
+    public static String toUpperCase(Locale locale, String str)
+    {
+        return toUpperCase(ULocale.forLocale(locale), str);
+    }
+
+    /**
+     * Gets uppercase version of the argument string. 
+     * Casing is dependent on the argument locale and context-sensitive.
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @return uppercase version of the argument string
+     * @stable ICU 3.2
+     */
+    public static String toUpperCase(ULocale locale, String str) {
+        StringContextIterator iter = new StringContextIterator(str);
+        StringBuffer result = new StringBuffer(str.length());
+        int[] locCache = new int[1];
+        int c;
+
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        locCache[0]=0;
+
+        while((c=iter.nextCaseMapCP())>=0) {
+            c=gCsp.toFullUpper(c, iter, result, locale, locCache);
+
+            /* decode the result */
+            if(c<0) {
+                /* (not) original code point */
+                c=~c;
+            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                /* mapping already appended to result */
+                continue;
+            /* } else { append single-code point mapping */
+            }
+            if(c<=0xffff) {
+                result.append((char)c);
+            } else {
+                UTF16.append(result, c);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Gets lowercase version of the argument string. 
+     * Casing is dependent on the argument locale and context-sensitive
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @return lowercase version of the argument string
+     * @stable ICU 2.1
+     */
+    public static String toLowerCase(Locale locale, String str)
+    {
+        return toLowerCase(ULocale.forLocale(locale), str);
+    }
+
+    /**
+     * Gets lowercase version of the argument string. 
+     * Casing is dependent on the argument locale and context-sensitive
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @return lowercase version of the argument string
+     * @stable ICU 3.2
+     */
+    public static String toLowerCase(ULocale locale, String str) {
+        StringContextIterator iter = new StringContextIterator(str);
+        StringBuffer result = new StringBuffer(str.length());
+        int[] locCache = new int[1];
+        int c;
+
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        locCache[0]=0;
+
+        while((c=iter.nextCaseMapCP())>=0) {
+            c=gCsp.toFullLower(c, iter, result, locale, locCache);
+
+            /* decode the result */
+            if(c<0) {
+                /* (not) original code point */
+                c=~c;
+            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                /* mapping already appended to result */
+                continue;
+            /* } else { append single-code point mapping */
+            }
+            if(c<=0xffff) {
+                result.append((char)c);
+            } else {
+                UTF16.append(result, c);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * <p>Gets the titlecase version of the argument string.</p>
+     * <p>Position for titlecasing is determined by the argument break 
+     * iterator, hence the user can customize his break iterator for 
+     * a specialized titlecasing. In this case only the forward iteration 
+     * needs to be implemented.
+     * If the break iterator passed in is null, the default Unicode algorithm
+     * will be used to determine the titlecase positions.
+     * </p>
+     * <p>Only positions returned by the break iterator will be title cased,
+     * character in between the positions will all be in lower case.</p>
+     * <p>Casing is dependent on the argument locale and context-sensitive</p>
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @param breakiter break iterator to determine the positions in which
+     *        the character should be title cased.
+     * @return lowercase version of the argument string
+     * @stable ICU 2.6
+     */
+    public static String toTitleCase(Locale locale, String str, 
+                                     BreakIterator breakiter)
+    {
+        return toTitleCase(ULocale.forLocale(locale), str, breakiter);
+    }
+
+    /**
+     * <p>Gets the titlecase version of the argument string.</p>
+     * <p>Position for titlecasing is determined by the argument break 
+     * iterator, hence the user can customize his break iterator for 
+     * a specialized titlecasing. In this case only the forward iteration 
+     * needs to be implemented.
+     * If the break iterator passed in is null, the default Unicode algorithm
+     * will be used to determine the titlecase positions.
+     * </p>
+     * <p>Only positions returned by the break iterator will be title cased,
+     * character in between the positions will all be in lower case.</p>
+     * <p>Casing is dependent on the argument locale and context-sensitive</p>
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @param titleIter break iterator to determine the positions in which
+     *        the character should be title cased.
+     * @return lowercase version of the argument string
+     * @stable ICU 3.2
+     */
+    public static String toTitleCase(ULocale locale, String str, 
+                                     BreakIterator titleIter) {
+        return toTitleCase(locale, str, titleIter, 0);
+    }
+
+    /**
+     * <p>Gets the titlecase version of the argument string.</p>
+     * <p>Position for titlecasing is determined by the argument break 
+     * iterator, hence the user can customize his break iterator for 
+     * a specialized titlecasing. In this case only the forward iteration 
+     * needs to be implemented.
+     * If the break iterator passed in is null, the default Unicode algorithm
+     * will be used to determine the titlecase positions.
+     * </p>
+     * <p>Only positions returned by the break iterator will be title cased,
+     * character in between the positions will all be in lower case.</p>
+     * <p>Casing is dependent on the argument locale and context-sensitive</p>
+     * @param locale which string is to be converted in
+     * @param str source string to be performed on
+     * @param titleIter break iterator to determine the positions in which
+     *        the character should be title cased.
+     * @param options bit set to modify the titlecasing operation
+     * @return lowercase version of the argument string
+     * @stable ICU 3.8
+     * @see #TITLECASE_NO_LOWERCASE
+     * @see #TITLECASE_NO_BREAK_ADJUSTMENT
+     */
+    public static String toTitleCase(ULocale locale, String str, 
+                                     BreakIterator titleIter,
+                                     int options) {
+        StringContextIterator iter = new StringContextIterator(str);
+        StringBuffer result = new StringBuffer(str.length());
+        int[] locCache = new int[1];
+        int c, nc, srcLength = str.length();
+
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        locCache[0]=0;
+
+        if(titleIter == null) {
+            titleIter = BreakIterator.getWordInstance(locale);
+        }
+        titleIter.setText(str);
+
+        int prev, titleStart, index;
+        boolean isFirstIndex;
+        boolean isDutch = locale.getLanguage().equals("nl");
+        boolean FirstIJ = true;
+
+        /* set up local variables */
+        prev=0;
+        isFirstIndex=true;
+
+        /* titlecasing loop */
+        while(prev<srcLength) {
+            /* find next index where to titlecase */
+            if(isFirstIndex) {
+                isFirstIndex=false;
+                index=titleIter.first();
+            } else {
+                index=titleIter.next();
+            }
+            if(index==BreakIterator.DONE || index>srcLength) {
+                index=srcLength;
+            }
+
+            /*
+             * Unicode 4 & 5 section 3.13 Default Case Operations:
+             *
+             * R3  toTitlecase(X): Find the word boundaries based on Unicode Standard Annex
+             * #29, "Text Boundaries." Between each pair of word boundaries, find the first
+             * cased character F. If F exists, map F to default_title(F); then map each
+             * subsequent character C to default_lower(C).
+             *
+             * In this implementation, segment [prev..index[ into 3 parts:
+             * a) uncased characters (copy as-is) [prev..titleStart[
+             * b) first case letter (titlecase)         [titleStart..titleLimit[
+             * c) subsequent characters (lowercase)                 [titleLimit..index[
+             */
+            if(prev<index) {
+                /* find and copy uncased characters [prev..titleStart[ */
+                iter.setLimit(index);
+                c=iter.nextCaseMapCP();
+                if((options&TITLECASE_NO_BREAK_ADJUSTMENT)==0 && UCaseProps.NONE==gCsp.getType(c)) {
+                    while((c=iter.nextCaseMapCP())>=0 && UCaseProps.NONE==gCsp.getType(c)) {}
+                    titleStart=iter.getCPStart();
+                    if(prev<titleStart) {
+                        // TODO: With Java 5, this would want to be result.append(str, prev, titleStart);
+                        result.append(str.substring(prev, titleStart));
+                    }
+                } else {
+                    titleStart=prev;
+                }
+
+                if(titleStart<index) {
+                    FirstIJ = true;
+                    /* titlecase c which is from titleStart */
+                    c=gCsp.toFullTitle(c, iter, result, locale, locCache);
+
+                    /* decode the result and lowercase up to index */
+                    for(;;) {
+                        if(c<0) {
+                            /* (not) original code point */
+                            c=~c;
+                            if(c<=0xffff) {
+                                result.append((char)c);
+                            } else {
+                                UTF16.append(result, c);
+                            }
+                        } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                            /* mapping already appended to result */
+                        } else {
+                            /* append single-code point mapping */
+                            if(c<=0xffff) {
+                                result.append((char)c);
+                            } else {
+                                UTF16.append(result, c);
+                            }
+                        }
+
+                        if((options&TITLECASE_NO_LOWERCASE)!=0) {
+                            /* Optionally just copy the rest of the word unchanged. */
+
+                            int titleLimit=iter.getCPLimit();
+                            if(titleLimit<index) {
+                            // TODO: With Java 5, this would want to be result.append(str, titleLimit, index);
+                                String appendStr = str.substring(titleLimit,index);
+                                /* Special Case - Dutch IJ Titlecasing */
+                                if ( isDutch && c == 0x0049 && appendStr.startsWith("j")) {
+                                   appendStr = "J" + appendStr.substring(1);
+                                }
+                                result.append(appendStr);
+                                iter.moveToLimit();
+                                break;
+                            }
+                        } else if((nc=iter.nextCaseMapCP())>=0) {
+                            if ( isDutch && ( nc == 0x004A ||  nc == 0x006A ) && ( c == 0x0049 ) && ( FirstIJ == true )) {
+                                c = 0x004A; /* J */
+                                FirstIJ = false;
+                            } else {
+                                /* Normal operation: Lowercase the rest of the word. */
+                                c=gCsp.toFullLower(nc, iter, result, locale, locCache);
+                            }
+                        } else {
+                            break;
+                        }
+                    }
+                }
+            }
+
+            prev=index;
+        }
+        return result.toString();
+    }
+
+    /**
+     * The given character is mapped to its case folding equivalent according 
+     * to UnicodeData.txt and CaseFolding.txt; if the character has no case 
+     * folding equivalent, the character itself is returned.
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They can map to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch             the character to be converted
+     * @param defaultmapping Indicates if all mappings defined in 
+     *                       CaseFolding.txt is to be used, otherwise the 
+     *                       mappings for dotted I  and dotless i marked with 
+     *                       'I' in CaseFolding.txt will be skipped.
+     * @return               the case folding equivalent of the character, if 
+     *                       any; otherwise the character itself.
+     * @see                  #foldCase(String, boolean)
+     * @stable ICU 2.1
+     */
+    public static int foldCase(int ch, boolean defaultmapping) {
+        return foldCase(ch, defaultmapping ? FOLD_CASE_DEFAULT : FOLD_CASE_EXCLUDE_SPECIAL_I);
+    }
+
+    /**
+     * The given string is mapped to its case folding equivalent according to
+     * UnicodeData.txt and CaseFolding.txt; if any character has no case 
+     * folding equivalent, the character itself is returned.
+     * "Full", multiple-code point case folding mappings are returned here.
+     * For "simple" single-code point mappings use the API 
+     * foldCase(int ch, boolean defaultmapping).
+     * @param str            the String to be converted
+     * @param defaultmapping Indicates if all mappings defined in 
+     *                       CaseFolding.txt is to be used, otherwise the 
+     *                       mappings for dotted I and dotless i marked with 
+     *                       'I' in CaseFolding.txt will be skipped.
+     * @return               the case folding equivalent of the character, if 
+     *                       any; otherwise the character itself.
+     * @see                  #foldCase(int, boolean)
+     * @stable ICU 2.1
+     */
+    public static String foldCase(String str, boolean defaultmapping) {
+        return foldCase(str, defaultmapping ? FOLD_CASE_DEFAULT : FOLD_CASE_EXCLUDE_SPECIAL_I);
+    }
+    
+    /**
+     * Option value for case folding: use default mappings defined in CaseFolding.txt.
+     * @stable ICU 2.6
+     */
+    public static final int FOLD_CASE_DEFAULT    =      0x0000;
+    /** 
+     * Option value for case folding: exclude the mappings for dotted I 
+     * and dotless i marked with 'I' in CaseFolding.txt. 
+     * @stable ICU 2.6
+     */
+    public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 0x0001;
+    
+    /**
+     * The given character is mapped to its case folding equivalent according 
+     * to UnicodeData.txt and CaseFolding.txt; if the character has no case 
+     * folding equivalent, the character itself is returned.
+     *
+     * <p>This function only returns the simple, single-code point case mapping.
+     * Full case mappings should be used whenever possible because they produce
+     * better results by working on whole strings.
+     * They can map to a result string with a different length as appropriate.
+     * Full case mappings are applied by the case mapping functions
+     * that take String parameters rather than code points (int).
+     * See also the User Guide chapter on C/POSIX migration:
+     * http://www.icu-project.org/userguide/posix.html#case_mappings
+     *
+     * @param ch             the character to be converted
+     * @param options        A bit set for special processing. Currently the recognised options are
+     *                        FOLD_CASE_EXCLUDE_SPECIAL_I and FOLD_CASE_DEFAULT 
+     * @return               the case folding equivalent of the character, if 
+     *                       any; otherwise the character itself.
+     * @see #foldCase(String, boolean)
+     * @stable ICU 2.6
+     */
+    public static int foldCase(int ch, int options) {
+        return gCsp.fold(ch, options);
+    }
+    
+    /**
+     * The given string is mapped to its case folding equivalent according to
+     * UnicodeData.txt and CaseFolding.txt; if any character has no case 
+     * folding equivalent, the character itself is returned.
+     * "Full", multiple-code point case folding mappings are returned here.
+     * For "simple" single-code point mappings use the API 
+     * foldCase(int ch, boolean defaultmapping).
+     * @param str            the String to be converted
+     * @param options        A bit set for special processing. Currently the recognised options are
+     *                        FOLD_CASE_EXCLUDE_SPECIAL_I and FOLD_CASE_DEFAULT 
+     * @return               the case folding equivalent of the character, if 
+     *                       any; otherwise the character itself.
+     * @see #foldCase(int, boolean)
+     * @stable ICU 2.6
+     */
+    public static final String foldCase(String str, int options) {
+        StringBuffer result = new StringBuffer(str.length());
+        int c, i, length;
+
+        length = str.length();
+        for(i=0; i<length;) {
+            c=UTF16.charAt(str, i);
+            i+=UTF16.getCharCount(c);
+            c=gCsp.toFullFolding(c, result, options);
+
+            /* decode the result */
+            if(c<0) {
+                /* (not) original code point */
+                c=~c;
+            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                /* mapping already appended to result */
+                continue;
+            /* } else { append single-code point mapping */
+            }
+            if(c<=0xffff) {
+                result.append((char)c);
+            } else {
+                UTF16.append(result, c);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Return numeric value of Han code points.
+     * <br> This returns the value of Han 'numeric' code points,
+     * including those for zero, ten, hundred, thousand, ten thousand,
+     * and hundred million.
+     * This includes both the standard and 'checkwriting'
+     * characters, the 'big circle' zero character, and the standard
+     * zero character.
+     * @param ch code point to query
+     * @return value if it is a Han 'numeric character,' otherwise return -1.  
+     * @stable ICU 2.4
+     */
+    public static int getHanNumericValue(int ch)
+    {
+        // TODO: Are these all covered by Unicode numeric value data?
+        switch(ch)
+        {
+        case IDEOGRAPHIC_NUMBER_ZERO_ :
+        case CJK_IDEOGRAPH_COMPLEX_ZERO_ :
+        return 0; // Han Zero
+        case CJK_IDEOGRAPH_FIRST_ :
+        case CJK_IDEOGRAPH_COMPLEX_ONE_ :
+        return 1; // Han One
+        case CJK_IDEOGRAPH_SECOND_ :
+        case CJK_IDEOGRAPH_COMPLEX_TWO_ :
+        return 2; // Han Two
+        case CJK_IDEOGRAPH_THIRD_ :
+        case CJK_IDEOGRAPH_COMPLEX_THREE_ :
+        return 3; // Han Three
+        case CJK_IDEOGRAPH_FOURTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_FOUR_ :
+        return 4; // Han Four
+        case CJK_IDEOGRAPH_FIFTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_FIVE_ :
+        return 5; // Han Five
+        case CJK_IDEOGRAPH_SIXTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_SIX_ :
+        return 6; // Han Six
+        case CJK_IDEOGRAPH_SEVENTH_ :
+        case CJK_IDEOGRAPH_COMPLEX_SEVEN_ :
+        return 7; // Han Seven
+        case CJK_IDEOGRAPH_EIGHTH_ : 
+        case CJK_IDEOGRAPH_COMPLEX_EIGHT_ :
+        return 8; // Han Eight
+        case CJK_IDEOGRAPH_NINETH_ :
+        case CJK_IDEOGRAPH_COMPLEX_NINE_ :
+        return 9; // Han Nine
+        case CJK_IDEOGRAPH_TEN_ :
+        case CJK_IDEOGRAPH_COMPLEX_TEN_ :
+        return 10;
+        case CJK_IDEOGRAPH_HUNDRED_ :
+        case CJK_IDEOGRAPH_COMPLEX_HUNDRED_ :
+        return 100;
+        case CJK_IDEOGRAPH_THOUSAND_ :
+        case CJK_IDEOGRAPH_COMPLEX_THOUSAND_ :
+        return 1000;
+        case CJK_IDEOGRAPH_TEN_THOUSAND_ :
+        return 10000;
+        case CJK_IDEOGRAPH_HUNDRED_MILLION_ :
+        return 100000000;
+        }
+        return -1; // no value
+    }
+    
+    /**
+     * <p>Gets an iterator for character types, iterating over codepoints.</p>
+     * Example of use:<br>
+     * <pre>
+     * RangeValueIterator iterator = UCharacter.getTypeIterator();
+     * RangeValueIterator.Element element = new RangeValueIterator.Element();
+     * while (iterator.next(element)) {
+     *     System.out.println("Codepoint \\u" + 
+     *                        Integer.toHexString(element.start) + 
+     *                        " to codepoint \\u" +
+     *                        Integer.toHexString(element.limit - 1) + 
+     *                        " has the character type " + 
+     *                        element.value);
+     * }
+     * </pre>
+     * @return an iterator 
+     * @stable ICU 2.6
+     */
+    public static RangeValueIterator getTypeIterator()
+    {
+        return new UCharacterTypeIterator(PROPERTY_);
+    }
+
+    /**
+     * <p>Gets an iterator for character names, iterating over codepoints.</p>
+     * <p>This API only gets the iterator for the modern, most up-to-date 
+     * Unicode names. For older 1.0 Unicode names use get1_0NameIterator() or
+     * for extended names use getExtendedNameIterator().</p>
+     * Example of use:<br>
+     * <pre>
+     * ValueIterator iterator = UCharacter.getNameIterator();
+     * ValueIterator.Element element = new ValueIterator.Element();
+     * while (iterator.next(element)) {
+     *     System.out.println("Codepoint \\u" + 
+     *                        Integer.toHexString(element.codepoint) +
+     *                        " has the name " + (String)element.value);
+     * }
+     * </pre>
+     * <p>The maximal range which the name iterator iterates is from 
+     * UCharacter.MIN_VALUE to UCharacter.MAX_VALUE.</p>
+     * @return an iterator 
+     * @stable ICU 2.6
+     */
+    public static ValueIterator getNameIterator()
+    {
+        if(NAME_==null){
+            throw new RuntimeException("Could not load unames.icu");
+        }
+        return new UCharacterNameIterator(NAME_,
+                      UCharacterNameChoice.UNICODE_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Gets an iterator for character names, iterating over codepoints.</p>
+     * <p>This API only gets the iterator for the older 1.0 Unicode names. 
+     * For modern, most up-to-date Unicode names use getNameIterator() or
+     * for extended names use getExtendedNameIterator().</p>
+     * Example of use:<br>
+     * <pre>
+     * ValueIterator iterator = UCharacter.get1_0NameIterator();
+     * ValueIterator.Element element = new ValueIterator.Element();
+     * while (iterator.next(element)) {
+     *     System.out.println("Codepoint \\u" + 
+     *                        Integer.toHexString(element.codepoint) +
+     *                        " has the name " + (String)element.value);
+     * }
+     * </pre>
+     * <p>The maximal range which the name iterator iterates is from 
+     * @return an iterator 
+     * @stable ICU 2.6
+     */
+    public static ValueIterator getName1_0Iterator()
+    {
+        if(NAME_==null){
+            throw new RuntimeException("Could not load unames.icu");
+        }
+        return new UCharacterNameIterator(NAME_,
+                      UCharacterNameChoice.UNICODE_10_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Gets an iterator for character names, iterating over codepoints.</p>
+     * <p>This API only gets the iterator for the extended names. 
+     * For modern, most up-to-date Unicode names use getNameIterator() or
+     * for older 1.0 Unicode names use get1_0NameIterator().</p>
+     * Example of use:<br>
+     * <pre>
+     * ValueIterator iterator = UCharacter.getExtendedNameIterator();
+     * ValueIterator.Element element = new ValueIterator.Element();
+     * while (iterator.next(element)) {
+     *     System.out.println("Codepoint \\u" + 
+     *                        Integer.toHexString(element.codepoint) +
+     *                        " has the name " + (String)element.value);
+     * }
+     * </pre>
+     * <p>The maximal range which the name iterator iterates is from 
+     * @return an iterator 
+     * @stable ICU 2.6
+     */
+    public static ValueIterator getExtendedNameIterator()
+    {
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        return new UCharacterNameIterator(NAME_,
+                      UCharacterNameChoice.EXTENDED_CHAR_NAME);
+    }
+    
+    /**
+     * <p>Get the "age" of the code point.</p>
+     * <p>The "age" is the Unicode version when the code point was first
+     * designated (as a non-character or for Private Use) or assigned a 
+     * character.
+     * <p>This can be useful to avoid emitting code points to receiving 
+     * processes that do not accept newer characters.</p>
+     * <p>The data is from the UCD file DerivedAge.txt.</p>
+     * @param ch The code point.
+     * @return the Unicode version number
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getAge(int ch) 
+    {
+        if (ch < MIN_VALUE || ch > MAX_VALUE) {
+        throw new IllegalArgumentException("Codepoint out of bounds");
+        }
+        return PROPERTY_.getAge(ch);
+    }
+    
+    /**
+     * <p>Check a binary Unicode property for a code point.</p> 
+     * <p>Unicode, especially in version 3.2, defines many more properties 
+     * than the original set in UnicodeData.txt.</p>
+     * <p>This API is intended to reflect Unicode properties as defined in 
+     * the Unicode Character Database (UCD) and Unicode Technical Reports 
+     * (UTR).</p>
+     * <p>For details about the properties see 
+     * <a href=http://www.unicode.org/>http://www.unicode.org/</a>.</p>
+     * <p>For names of Unicode properties see the UCD file 
+     * PropertyAliases.txt.</p>
+     * <p>This API does not check the validity of the codepoint.</p>
+     * <p>Important: If ICU is built with UCD files from Unicode versions 
+     * below 3.2, then properties marked with "new" are not or 
+     * not fully available.</p>
+     * @param ch code point to test.
+     * @param property selector constant from com.ibm.icu.lang.UProperty, 
+     *        identifies which binary property to check.
+     * @return true or false according to the binary Unicode property value 
+     *         for ch. Also false if property is out of bounds or if the 
+     *         Unicode version does not have data for the property at all, or 
+     *         not for this code point.
+     * @see com.ibm.icu.lang.UProperty
+     * @stable ICU 2.6
+     */
+    public static boolean hasBinaryProperty(int ch, int property) 
+    {
+    if (ch < MIN_VALUE || ch > MAX_VALUE) {
+        throw new IllegalArgumentException("Codepoint out of bounds");
+        }
+        return PROPERTY_.hasBinaryProperty(ch, property);
+    }
+        
+    /**
+     * <p>Check if a code point has the Alphabetic Unicode property.</p> 
+     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.ALPHABETIC).</p>
+     * <p>Different from UCharacter.isLetter(ch)!</p> 
+     * @stable ICU 2.6
+     * @param ch codepoint to be tested
+     */
+    public static boolean isUAlphabetic(int ch)
+    {
+    return hasBinaryProperty(ch, UProperty.ALPHABETIC);
+    }
+
+    /**
+     * <p>Check if a code point has the Lowercase Unicode property.</p>
+     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.LOWERCASE).</p>
+     * <p>This is different from UCharacter.isLowerCase(ch)!</p>
+     * @param ch codepoint to be tested
+     * @stable ICU 2.6
+     */
+    public static boolean isULowercase(int ch) 
+    {
+    return hasBinaryProperty(ch, UProperty.LOWERCASE);
+    }
+
+    /**
+     * <p>Check if a code point has the Uppercase Unicode property.</p>
+     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.UPPERCASE).</p>
+     * <p>This is different from UCharacter.isUpperCase(ch)!</p>
+     * @param ch codepoint to be tested
+     * @stable ICU 2.6
+     */
+    public static boolean isUUppercase(int ch) 
+    {
+    return hasBinaryProperty(ch, UProperty.UPPERCASE);
+    }
+
+    /**
+     * <p>Check if a code point has the White_Space Unicode property.</p>
+     * <p>Same as UCharacter.hasBinaryProperty(ch, UProperty.WHITE_SPACE).</p>
+     * <p>This is different from both UCharacter.isSpace(ch) and 
+     * UCharacter.isWhitespace(ch)!</p>
+     * @param ch codepoint to be tested
+     * @stable ICU 2.6
+     */
+    public static boolean isUWhiteSpace(int ch) 
+    {
+    return hasBinaryProperty(ch, UProperty.WHITE_SPACE);
+    }
+
+
+    /**
+     * <p>Gets the property value for an Unicode property type of a code point. 
+     * Also returns binary and mask property values.</p>
+     * <p>Unicode, especially in version 3.2, defines many more properties than 
+     * the original set in UnicodeData.txt.</p>
+     * <p>The properties APIs are intended to reflect Unicode properties as 
+     * defined in the Unicode Character Database (UCD) and Unicode Technical 
+     * Reports (UTR). For details about the properties see 
+     * http://www.unicode.org/.</p>
+     * <p>For names of Unicode properties see the UCD file PropertyAliases.txt.
+     * </p>
+     * <pre>
+     * Sample usage:
+     * int ea = UCharacter.getIntPropertyValue(c, UProperty.EAST_ASIAN_WIDTH);
+     * int ideo = UCharacter.getIntPropertyValue(c, UProperty.IDEOGRAPHIC);
+     * boolean b = (ideo == 1) ? true : false; 
+     * </pre>
+     * @param ch code point to test.
+     * @param type UProperty selector constant, identifies which binary 
+     *        property to check. Must be 
+     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or 
+     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT or 
+     *        UProperty.MASK_START &lt;= type &lt; UProperty.MASK_LIMIT.
+     * @return numeric value that is directly the property value or,
+     *         for enumerated properties, corresponds to the numeric value of 
+     *         the enumerated constant of the respective property value 
+     *         enumeration type (cast to enum type if necessary).
+     *         Returns 0 or 1 (for false / true) for binary Unicode properties.
+     *         Returns a bit-mask for mask properties.
+     *         Returns 0 if 'type' is out of bounds or if the Unicode version
+     *         does not have data for the property at all, or not for this code 
+     *         point.
+     * @see UProperty
+     * @see #hasBinaryProperty
+     * @see #getIntPropertyMinValue
+     * @see #getIntPropertyMaxValue
+     * @see #getUnicodeVersion
+     * @stable ICU 2.4
+     */
+    public static int getIntPropertyValue(int ch, int type)
+    {
+        if (type < UProperty.BINARY_START) {
+            return 0; // undefined
+        } 
+        else if (type < UProperty.BINARY_LIMIT) {
+            return hasBinaryProperty(ch, type) ? 1 : 0;
+        } 
+        else if (type < UProperty.INT_START) {
+            return 0; // undefined
+        } 
+        else if (type < UProperty.INT_LIMIT) {
+            //int result = 0;
+            switch (type) {
+            case UProperty.BIDI_CLASS:
+                return getDirection(ch);
+            case UProperty.BLOCK:
+                return UnicodeBlock.idOf(ch);
+            case UProperty.CANONICAL_COMBINING_CLASS:
+                return getCombiningClass(ch);
+            case UProperty.DECOMPOSITION_TYPE:
+                return PROPERTY_.getAdditional(ch, 2) 
+            & DECOMPOSITION_TYPE_MASK_;
+            case UProperty.EAST_ASIAN_WIDTH:
+                return (PROPERTY_.getAdditional(ch, 0)
+            & EAST_ASIAN_MASK_) >> EAST_ASIAN_SHIFT_;
+            case UProperty.GENERAL_CATEGORY:
+                return getType(ch);
+            case UProperty.JOINING_GROUP:
+                return gBdp.getJoiningGroup(ch);
+            case UProperty.JOINING_TYPE:
+                return gBdp.getJoiningType(ch);
+            case UProperty.LINE_BREAK:
+                return (int)(PROPERTY_.getAdditional(ch, LB_VWORD)& LB_MASK)>>LB_SHIFT;
+            case UProperty.NUMERIC_TYPE:
+                type=getNumericType(PROPERTY_.getProperty(ch));
+                if(type>NumericType.NUMERIC) {
+                    /* keep internal variants of NumericType.NUMERIC from becoming visible */
+                    type=NumericType.NUMERIC;
+                }
+                return type;
+            case UProperty.SCRIPT:
+                return UScript.getScript(ch);
+            case UProperty.HANGUL_SYLLABLE_TYPE:
+        /* purely algorithmic; hardcode known characters, check for assigned new ones */ 
+        if(ch<NormalizerImpl.JAMO_L_BASE) { 
+            /* NA */ 
+        } else if(ch<=0x11ff) { 
+            /* Jamo range */ 
+            if(ch<=0x115f) { 
+            /* Jamo L range, HANGUL CHOSEONG ... */ 
+            if(ch==0x115f || ch<=0x1159 || getType(ch)==UCharacterCategory.OTHER_LETTER) { 
+                return HangulSyllableType.LEADING_JAMO; 
+            } 
+            } else if(ch<=0x11a7) { 
+            /* Jamo V range, HANGUL JUNGSEONG ... */ 
+            if(ch<=0x11a2 || getType(ch)==UCharacterCategory.OTHER_LETTER) { 
+                return HangulSyllableType.VOWEL_JAMO; 
+            } 
+            } else { 
+            /* Jamo T range */ 
+            if(ch<=0x11f9 || getType(ch)==UCharacterCategory.OTHER_LETTER) { 
+                return HangulSyllableType.TRAILING_JAMO; 
+            } 
+            } 
+        } else if((ch-=NormalizerImpl.HANGUL_BASE)<0) { 
+            /* NA */ 
+        } else if(ch<NormalizerImpl.HANGUL_COUNT) { 
+            /* Hangul syllable */ 
+            return ch%NormalizerImpl.JAMO_T_COUNT==0 ? HangulSyllableType.LV_SYLLABLE : HangulSyllableType.LVT_SYLLABLE; 
+        } 
+        return 0; /* NA */ 
+
+            case UProperty.NFD_QUICK_CHECK:
+            case UProperty.NFKD_QUICK_CHECK:
+            case UProperty.NFC_QUICK_CHECK:
+            case UProperty.NFKC_QUICK_CHECK:
+                return NormalizerImpl.quickCheck(ch, (type-UProperty.NFD_QUICK_CHECK)+2); // 2=UNORM_NFD
+            case UProperty.LEAD_CANONICAL_COMBINING_CLASS:
+                return NormalizerImpl.getFCD16(ch)>>8;
+            case UProperty.TRAIL_CANONICAL_COMBINING_CLASS:
+                return NormalizerImpl.getFCD16(ch)&0xff;
+            case UProperty.GRAPHEME_CLUSTER_BREAK:
+                return (int)(PROPERTY_.getAdditional(ch, 2)& GCB_MASK)>>GCB_SHIFT;
+            case UProperty.SENTENCE_BREAK:
+                return (int)(PROPERTY_.getAdditional(ch, 2)& SB_MASK)>>SB_SHIFT;
+            case UProperty.WORD_BREAK:
+                return (int)(PROPERTY_.getAdditional(ch, 2)& WB_MASK)>>WB_SHIFT;
+            default:
+               
+        return 0; /* undefined */
+            }
+        } else if (type == UProperty.GENERAL_CATEGORY_MASK) {
+            return UCharacterProperty.getMask(getType(ch));
+        }
+        return 0; // undefined
+    }
+    /**
+     * Returns a string version of the property value.
+     * @param propertyEnum
+     * @param codepoint
+     * @param nameChoice
+     * @return value as string
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static String getStringPropertyValue(int propertyEnum, int codepoint, int nameChoice) {
+        // TODO some of these are less efficient, since a string is forced!
+        if ((propertyEnum >= UProperty.BINARY_START && propertyEnum < UProperty.BINARY_LIMIT) ||
+                (propertyEnum >= UProperty.INT_START && propertyEnum < UProperty.INT_LIMIT)) {
+            return getPropertyValueName(propertyEnum, getIntPropertyValue(codepoint, propertyEnum), nameChoice);
+        }
+        if (propertyEnum == UProperty.NUMERIC_VALUE) {
+                return String.valueOf(getUnicodeNumericValue(codepoint));
+        }
+        // otherwise must be string property
+        switch (propertyEnum) {
+        case UProperty.AGE: return getAge(codepoint).toString();
+        case UProperty.ISO_COMMENT: return getISOComment(codepoint);
+        case UProperty.BIDI_MIRRORING_GLYPH: return UTF16.valueOf(getMirror(codepoint));
+        case UProperty.CASE_FOLDING: return foldCase(UTF16.valueOf(codepoint), true);
+        case UProperty.LOWERCASE_MAPPING: return toLowerCase(UTF16.valueOf(codepoint));
+        case UProperty.NAME: return getName(codepoint);
+        case UProperty.SIMPLE_CASE_FOLDING: return UTF16.valueOf(foldCase(codepoint,true));
+        case UProperty.SIMPLE_LOWERCASE_MAPPING: return UTF16.valueOf(toLowerCase(codepoint));
+        case UProperty.SIMPLE_TITLECASE_MAPPING: return UTF16.valueOf(toTitleCase(codepoint));
+        case UProperty.SIMPLE_UPPERCASE_MAPPING: return UTF16.valueOf(toUpperCase(codepoint));
+        case UProperty.TITLECASE_MAPPING: return toTitleCase(UTF16.valueOf(codepoint),null);
+        case UProperty.UNICODE_1_NAME: return getName1_0(codepoint);
+        case UProperty.UPPERCASE_MAPPING: return toUpperCase(UTF16.valueOf(codepoint));        
+        }
+        throw new IllegalArgumentException("Illegal Property Enum");
+    }
+    
+    /**
+     * Get the minimum value for an integer/binary Unicode property type.
+     * Can be used together with UCharacter.getIntPropertyMaxValue(int)
+     * to allocate arrays of com.ibm.icu.text.UnicodeSet or similar.
+     * @param type UProperty selector constant, identifies which binary 
+     *        property to check. Must be 
+     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or 
+     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT.
+     * @return Minimum value returned by UCharacter.getIntPropertyValue(int) 
+     *         for a Unicode property. 0 if the property 
+     *         selector 'type' is out of range.
+     * @see UProperty
+     * @see #hasBinaryProperty
+     * @see #getUnicodeVersion
+     * @see #getIntPropertyMaxValue
+     * @see #getIntPropertyValue
+     * @stable ICU 2.4
+     */
+    public static int getIntPropertyMinValue(int type)
+    {
+
+        return 0; // undefined; and: all other properties have a minimum value 
+    // of 0
+    }
+
+    
+    /**
+     * Get the maximum value for an integer/binary Unicode property.
+     * Can be used together with UCharacter.getIntPropertyMinValue(int)
+     * to allocate arrays of com.ibm.icu.text.UnicodeSet or similar.
+     * Examples for min/max values (for Unicode 3.2):
+     * <ul>
+     * <li> UProperty.BIDI_CLASS:    0/18 (UCharacterDirection.LEFT_TO_RIGHT/UCharacterDirection.BOUNDARY_NEUTRAL)
+     * <li> UProperty.SCRIPT:        0/45 (UScript.COMMON/UScript.TAGBANWA)
+     * <li> UProperty.IDEOGRAPHIC:   0/1  (false/true)
+     * </ul>
+     * For undefined UProperty constant values, min/max values will be 0/-1.
+     * @param type UProperty selector constant, identifies which binary 
+     *        property to check. Must be 
+     *        UProperty.BINARY_START &lt;= type &lt; UProperty.BINARY_LIMIT or 
+     *        UProperty.INT_START &lt;= type &lt; UProperty.INT_LIMIT.
+     * @return Maximum value returned by u_getIntPropertyValue for a Unicode 
+     *         property. &lt;= 0 if the property selector 'type' is out of range.
+     * @see UProperty
+     * @see #hasBinaryProperty
+     * @see #getUnicodeVersion
+     * @see #getIntPropertyMaxValue
+     * @see #getIntPropertyValue
+     * @stable ICU 2.4
+     */
+    public static int getIntPropertyMaxValue(int type)
+    { 
+        if (type < UProperty.BINARY_START) {
+            return -1; // undefined
+        } 
+        else if (type < UProperty.BINARY_LIMIT) {
+            return 1; // maximum TRUE for all binary properties
+        } 
+        else if (type < UProperty.INT_START) {
+            return -1; // undefined
+        } 
+        else if (type < UProperty.INT_LIMIT) {
+            switch (type) {
+            case UProperty.BIDI_CLASS:
+            case UProperty.JOINING_GROUP:
+            case UProperty.JOINING_TYPE:
+                return gBdp.getMaxValue(type);
+            case UProperty.BLOCK:
+                return (PROPERTY_.getMaxValues(0) & BLOCK_MASK_) >> BLOCK_SHIFT_;
+            case UProperty.CANONICAL_COMBINING_CLASS:
+            case UProperty.LEAD_CANONICAL_COMBINING_CLASS:
+            case UProperty.TRAIL_CANONICAL_COMBINING_CLASS:
+                return 0xff; // TODO do we need to be more precise, 
+                             // getting the actual maximum?
+            case UProperty.DECOMPOSITION_TYPE:
+                return PROPERTY_.getMaxValues(2) & DECOMPOSITION_TYPE_MASK_;
+            case UProperty.EAST_ASIAN_WIDTH:
+                return (PROPERTY_.getMaxValues(0) & EAST_ASIAN_MASK_) >> EAST_ASIAN_SHIFT_;
+            case UProperty.GENERAL_CATEGORY:
+                return UCharacterCategory.CHAR_CATEGORY_COUNT - 1;
+            case UProperty.LINE_BREAK:
+                return (PROPERTY_.getMaxValues(LB_VWORD) & LB_MASK) >> LB_SHIFT;
+            case UProperty.NUMERIC_TYPE:
+                return NumericType.COUNT - 1;
+            case UProperty.SCRIPT:
+                return PROPERTY_.getMaxValues(0) & SCRIPT_MASK_;   
+            case UProperty.HANGUL_SYLLABLE_TYPE:
+                return HangulSyllableType.COUNT-1;
+            case UProperty.NFD_QUICK_CHECK:
+            case UProperty.NFKD_QUICK_CHECK:
+                return 1; // YES -- these are never "maybe", only "no" or "yes"
+            case UProperty.NFC_QUICK_CHECK:
+            case UProperty.NFKC_QUICK_CHECK:
+                return 2; // MAYBE
+            case UProperty.GRAPHEME_CLUSTER_BREAK:
+                return (PROPERTY_.getMaxValues(2) & GCB_MASK) >> GCB_SHIFT;
+            case UProperty.SENTENCE_BREAK:
+                return (PROPERTY_.getMaxValues(2) & SB_MASK) >> SB_SHIFT;
+            case UProperty.WORD_BREAK:
+                return (PROPERTY_.getMaxValues(2) & WB_MASK) >> WB_SHIFT;
+            default:
+                return -1; // undefined
+            }
+
+        }
+        return -1; // undefined
+    }
+
+    /**
+     * Provide the java.lang.Character forDigit API, for convenience.
+     * @stable ICU 3.0
+     */
+    public static char forDigit(int digit, int radix) {
+        return java.lang.Character.forDigit(digit, radix);
+    }
+
+    // JDK 1.5 API coverage
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#LEAD_SURROGATE_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MIN_HIGH_SURROGATE = UTF16.LEAD_SURROGATE_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#LEAD_SURROGATE_MAX_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MAX_HIGH_SURROGATE = UTF16.LEAD_SURROGATE_MAX_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#TRAIL_SURROGATE_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MIN_LOW_SURROGATE = UTF16.TRAIL_SURROGATE_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#TRAIL_SURROGATE_MAX_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MAX_LOW_SURROGATE = UTF16.TRAIL_SURROGATE_MAX_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#SURROGATE_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MIN_SURROGATE = UTF16.SURROGATE_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#SURROGATE_MAX_VALUE
+     * @stable ICU 3.0
+     */
+    public static final char MAX_SURROGATE = UTF16.SURROGATE_MAX_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#SUPPLEMENTARY_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final int  MIN_SUPPLEMENTARY_CODE_POINT = UTF16.SUPPLEMENTARY_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#CODEPOINT_MAX_VALUE
+     * @stable ICU 3.0
+     */
+    public static final int  MAX_CODE_POINT = UTF16.CODEPOINT_MAX_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @see UTF16#CODEPOINT_MIN_VALUE
+     * @stable ICU 3.0
+     */
+    public static final int  MIN_CODE_POINT = UTF16.CODEPOINT_MIN_VALUE;
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @param cp the code point to check
+     * @return true if cp is a valid code point
+     * @stable ICU 3.0
+     */
+    public static final boolean isValidCodePoint(int cp) {
+        return cp >= 0 && cp <= MAX_CODE_POINT;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @param cp the code point to check
+     * @return true if cp is a supplementary code point
+     * @stable ICU 3.0
+     */
+    public static final boolean isSupplementaryCodePoint(int cp) {
+        return cp >= UTF16.SUPPLEMENTARY_MIN_VALUE
+            && cp <= UTF16.CODEPOINT_MAX_VALUE;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @param ch the char to check
+     * @return true if ch is a high (lead) surrogate
+     * @stable ICU 3.0
+     */
+    public static boolean isHighSurrogate(char ch) {
+        return ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.
+     * @param ch the char to check
+     * @return true if ch is a low (trail) surrogate
+     * @stable ICU 3.0
+     */
+    public static boolean isLowSurrogate(char ch) {
+        return ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return true if the chars
+     * form a valid surrogate pair.
+     * @param high the high (lead) char
+     * @param low the low (trail) char
+     * @return true if high, low form a surrogate pair
+     * @stable ICU 3.0
+     */
+    public static final boolean isSurrogatePair(char high, char low) {
+        return isHighSurrogate(high) && isLowSurrogate(low);
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the number of chars needed
+     * to represent the code point.  This does not check the
+     * code point for validity.
+     * @param cp the code point to check
+     * @return the number of chars needed to represent the code point
+     * @see UTF16#getCharCount
+     * @stable ICU 3.0
+     */
+    public static int charCount(int cp) {
+        return UTF16.getCharCount(cp);
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point represented by
+     * the characters.  This does not check the surrogate pair for validity.
+     * @param high the high (lead) surrogate
+     * @param low the low (trail) surrogate
+     * @return the code point formed by the surrogate pair
+     * @stable ICU 3.0
+     */
+    public static final int toCodePoint(char high, char low) {
+        return UCharacterProperty.getRawSupplementary(high, low);
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point at index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index and index+1.
+     * @param seq the characters to check
+     * @param index the index of the first or only char forming the code point
+     * @return the code point at the index
+     * @stable ICU 3.0
+     */
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public static final int codePointAt(String seq, int index) {
+//##        char c1 = seq.charAt(index++);
+//##        if (isHighSurrogate(c1)) {
+//##            if (index < seq.length()) {
+//##                char c2 = seq.charAt(index);
+//##                if (isLowSurrogate(c2)) {
+//##                    return toCodePoint(c1, c2);
+//##                }
+//##            }
+//##        }
+//##        return c1;
+//##    }
+//##    public static final int codePointAt(StringBuffer seq, int index) {
+//##        return codePointAt(seq.toString(), index);
+//##    }
+//#else
+//#if defined(ECLIPSE_FRAGMENT)
+//##    public static final int codePointAt(String seq, int index) {
+//##        return codePointAt((CharSequence)seq, index);
+//##    }
+//##    public static final int codePointAt(StringBuffer seq, int index) {
+//##        return codePointAt((CharSequence)seq, index);
+//##    }
+//#endif
+    public static final int codePointAt(CharSequence seq, int index) {
+        char c1 = seq.charAt(index++);
+        if (isHighSurrogate(c1)) {
+            if (index < seq.length()) {
+                char c2 = seq.charAt(index);
+                if (isLowSurrogate(c2)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c1;
+    }
+//#endif
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point at index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index and index+1.
+     * @param text the characters to check
+     * @param index the index of the first or only char forming the code point
+     * @return the code point at the index
+     * @stable ICU 3.0
+     */
+    public static final int codePointAt(char[] text, int index) {
+        char c1 = text[index++];
+        if (isHighSurrogate(c1)) {
+            if (index < text.length) {
+                char c2 = text[index];
+                if (isLowSurrogate(c2)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c1;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point at index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index and index+1.
+     * @param text the characters to check
+     * @param index the index of the first or only char forming the code point
+     * @param limit the limit of the valid text
+     * @return the code point at the index
+     * @stable ICU 3.0
+     */
+    public static final int codePointAt(char[] text, int index, int limit) {
+    if (index >= limit || limit > text.length) {
+        throw new IndexOutOfBoundsException();
+    }
+        char c1 = text[index++];
+        if (isHighSurrogate(c1)) {
+            if (index < limit) {
+                char c2 = text[index];
+                if (isLowSurrogate(c2)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c1;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point before index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index-1 and index-2.
+     * @param seq the characters to check
+     * @param index the index after the last or only char forming the code point
+     * @return the code point before the index
+     * @stable ICU 3.0
+     */
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public static final int codePointBefore(String seq, int index) {
+//##        char c2 = seq.charAt(--index);
+//##        if (isLowSurrogate(c2)) {
+//##            if (index > 0) {
+//##                char c1 = seq.charAt(--index);
+//##                if (isHighSurrogate(c1)) {
+//##                    return toCodePoint(c1, c2);
+//##                }
+//##            }
+//##        }
+//##        return c2;
+//##    }
+//##    public static final int codePointBefore(StringBuffer seq, int index) {
+//##        return codePointBefore(seq.toString(), index);
+//##    }
+//#else
+//#if defined(ECLIPSE_FRAGMENT)
+//##    public static final int codePointBefore(String seq, int index) {
+//##        return codePointBefore((CharSequence)seq, index);
+//##    }
+//##    public static final int codePointBefore(StringBuffer seq, int index) {
+//##        return codePointBefore((CharSequence)seq, index);
+//##    }
+//#endif
+    public static final int codePointBefore(CharSequence seq, int index) {
+        char c2 = seq.charAt(--index);
+        if (isLowSurrogate(c2)) {
+            if (index > 0) {
+                char c1 = seq.charAt(--index);
+                if (isHighSurrogate(c1)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c2;
+    }
+//#endif
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point before index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index-1 and index-2.
+     * @param text the characters to check
+     * @param index the index after the last or only char forming the code point
+     * @return the code point before the index
+     * @stable ICU 3.0
+     */
+    public static final int codePointBefore(char[] text, int index) {
+        char c2 = text[--index];
+        if (isLowSurrogate(c2)) {
+            if (index > 0) {
+                char c1 = text[--index];
+                if (isHighSurrogate(c1)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c2;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Return the code point before index.
+     * <br/><b>Note</b>: the semantics of this API is different from the related UTF16
+     * API.  This examines only the characters at index-1 and index-2.
+     * @param text the characters to check
+     * @param index the index after the last or only char forming the code point
+     * @param limit the start of the valid text
+     * @return the code point before the index
+     * @stable ICU 3.0
+     */
+    public static final int codePointBefore(char[] text, int index, int limit) {
+    if (index <= limit || limit < 0) {
+        throw new IndexOutOfBoundsException();
+    }
+        char c2 = text[--index];
+        if (isLowSurrogate(c2)) {
+            if (index > limit) {
+                char c1 = text[--index];
+                if (isHighSurrogate(c1)) {
+                    return toCodePoint(c1, c2);
+                }
+            }
+        }
+        return c2;
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Writes the chars representing the
+     * code point into the destination at the given index.
+     * @param cp the code point to convert
+     * @param dst the destination array into which to put the char(s) representing the code point
+     * @param dstIndex the index at which to put the first (or only) char
+     * @return the count of the number of chars written (1 or 2)
+     * @throws IllegalArgumentException if cp is not a valid code point
+     * @stable ICU 3.0
+     */
+    public static final int toChars(int cp, char[] dst, int dstIndex) {
+        if (cp >= 0) {
+            if (cp < MIN_SUPPLEMENTARY_CODE_POINT) {
+                dst[dstIndex] = (char)cp;
+                return 1;
+            }
+            if (cp <= MAX_CODE_POINT) {
+                dst[dstIndex] = UTF16.getLeadSurrogate(cp);
+                dst[dstIndex+1] = UTF16.getTrailSurrogate(cp);
+                return 2;
+            }
+        }
+        throw new IllegalArgumentException();
+    }
+
+    /**
+     * Cover the JDK 1.5 API, for convenience.  Returns a char array
+     * representing the code point.
+     * @param cp the code point to convert
+     * @return an array containing the char(s) representing the code point
+     * @throws IllegalArgumentException if cp is not a valid code point
+     * @stable ICU 3.0
+     */
+    public static final char[] toChars(int cp) {
+        if (cp >= 0) {
+            if (cp < MIN_SUPPLEMENTARY_CODE_POINT) {
+                return new char[] { (char)cp };
+            }
+            if (cp <= MAX_CODE_POINT) {
+                return new char[] {
+                    UTF16.getLeadSurrogate(cp),
+                    UTF16.getTrailSurrogate(cp)
+                };
+            }
+        }
+        throw new IllegalArgumentException();
+    }
+
+    /**
+     * Cover the JDK API, for convenience.  Return a byte representing the directionality of
+     * the character.
+     * <br/><b>Note</b>: Unlike the JDK, this returns DIRECTIONALITY_LEFT_TO_RIGHT for undefined or
+     * out-of-bounds characters.  <br/><b>Note</b>: The return value must be
+     * tested using the constants defined in {@link UCharacterEnums.ECharacterDirection}
+     * since the values are different from the ones defined by <code>java.lang.Character</code>.
+     * @param cp the code point to check
+     * @return the directionality of the code point
+     * @see #getDirection
+     * @stable ICU 3.0
+     */
+    public static byte getDirectionality(int cp)
+    {
+        return (byte)getDirection(cp);
+    }
+
+    /**
+     * Cover the JDK API, for convenience.  Count the number of code points in the range of text.
+     * @param text the characters to check
+     * @param start the start of the range
+     * @param limit the limit of the range
+     * @return the number of code points in the range
+     * @stable ICU 3.0
+     */
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public static int codePointCount(String text, int start, int limit) {
+//##        if (start < 0 || limit < start || limit > text.length()) {
+//##            throw new IndexOutOfBoundsException("start (" + start +
+//##                ") or limit (" + limit +
+//##                ") invalid or out of range 0, " + text.length());
+//##        }
+//##
+//##        int len = limit - start;
+//##        while (limit > start) {
+//##            char ch = text.charAt(--limit);
+//##            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
+//##                ch = text.charAt(--limit);
+//##                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
+//##                    --len;
+//##                    break;
+//##                }
+//##            }
+//##        }
+//##        return len;
+//##    }
+//##    public static int codePointCount(StringBuffer text, int start, int limit) {
+//##        return codePointCount(text.toString(), start, limit);
+//##    }
+//#else
+//#if defined(ECLIPSE_FRAGMENT)
+//##    public static int codePointCount(String text, int start, int limit) {
+//##        return codePointCount((CharSequence)text, start, limit);
+//##    }
+//##    public static int codePointCount(StringBuffer text, int start, int limit) {
+//##        return codePointCount((CharSequence)text, start, limit);
+//##    }
+//#endif
+    public static int codePointCount(CharSequence text, int start, int limit) {
+        if (start < 0 || limit < start || limit > text.length()) {
+            throw new IndexOutOfBoundsException("start (" + start +
+                ") or limit (" + limit +
+                ") invalid or out of range 0, " + text.length());
+        }
+
+        int len = limit - start;
+        while (limit > start) {
+            char ch = text.charAt(--limit);
+            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
+                ch = text.charAt(--limit);
+                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
+                    --len;
+                    break;
+                }
+            }
+        }
+        return len;
+    }
+//#endif
+
+    /**
+     * Cover the JDK API, for convenience.  Count the number of code points in the range of text.
+     * @param text the characters to check
+     * @param start the start of the range
+     * @param limit the limit of the range
+     * @return the number of code points in the range
+     * @stable ICU 3.0
+     */
+    public static int codePointCount(char[] text, int start, int limit) {
+        if (start < 0 || limit < start || limit > text.length) {
+            throw new IndexOutOfBoundsException("start (" + start +
+                                                ") or limit (" + limit +
+                                                ") invalid or out of range 0, " + text.length);
+        }
+
+        int len = limit - start;
+        while (limit > start) {
+            char ch = text[--limit];
+            while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && limit > start) {
+                ch = text[--limit];
+                if (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE) {
+                    --len;
+                    break;
+                }
+            }
+        }
+        return len;
+    }
+
+    /**
+     * Cover the JDK API, for convenience.  Adjust the char index by a code point offset.
+     * @param text the characters to check
+     * @param index the index to adjust
+     * @param codePointOffset the number of code points by which to offset the index
+     * @return the adjusted index
+     * @stable ICU 3.0
+     */
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##    public static int offsetByCodePoints(String text, int index, int codePointOffset) {
+//##        if (index < 0 || index > text.length()) {
+//##            throw new IndexOutOfBoundsException("index ( " + index +
+//##                                                ") out of range 0, " + text.length());
+//##        }
+//##
+//##        if (codePointOffset < 0) {
+//##            while (++codePointOffset <= 0) {
+//##                char ch = text.charAt(--index);
+//##                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > 0) {
+//##                    ch = text.charAt(--index);
+//##                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
+//##                        if (++codePointOffset > 0) {
+//##                            return index+1;
+//##                        }
+//##                    }
+//##                }
+//##            }
+//##        } else {
+//##            int limit = text.length();
+//##            while (--codePointOffset >= 0) {
+//##                char ch = text.charAt(index++);
+//##                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
+//##                    ch = text.charAt(index++);
+//##                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
+//##                        if (--codePointOffset < 0) {
+//##                            return index-1;
+//##                        }
+//##                    }
+//##                }
+//##            }
+//##        }
+//##
+//##        return index;
+//##    }
+//##    public static int offsetByCodePoints(StringBuffer text, int index, int codePointOffset) {
+//##        return offsetByCodePoints(text.toString(), index, codePointOffset);
+//##    }
+//#else
+//#if defined(ECLIPSE_FRAGMENT)
+//##    public static int offsetByCodePoints(String text, int index, int codePointOffset) {
+//##        return offsetByCodePoints((CharSequence)text, index, codePointOffset);
+//##    }
+//##    public static int offsetByCodePoints(StringBuffer text, int index, int codePointOffset) {
+//##        return offsetByCodePoints((CharSequence)text, index, codePointOffset);
+//##    }
+//#endif
+    public static int offsetByCodePoints(CharSequence text, int index, int codePointOffset) {
+        if (index < 0 || index > text.length()) {
+            throw new IndexOutOfBoundsException("index ( " + index +
+                                                ") out of range 0, " + text.length());
+        }
+
+        if (codePointOffset < 0) {
+            while (++codePointOffset <= 0) {
+                char ch = text.charAt(--index);
+                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > 0) {
+                    ch = text.charAt(--index);
+                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
+                        if (++codePointOffset > 0) {
+                            return index+1;
+                        }
+                    }
+                }
+            }
+        } else {
+            int limit = text.length();
+            while (--codePointOffset >= 0) {
+                char ch = text.charAt(index++);
+                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
+                    ch = text.charAt(index++);
+                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
+                        if (--codePointOffset < 0) {
+                            return index-1;
+                        }
+                    }
+                }
+            }
+        }
+
+        return index;
+    }
+//#endif
+
+    /**
+     * Cover the JDK API, for convenience.  Adjust the char index by a code point offset.
+     * @param text the characters to check
+     * @param start the start of the range to check
+     * @param count the length of the range to check
+     * @param index the index to adjust
+     * @param codePointOffset the number of code points by which to offset the index
+     * @return the adjusted index
+     * @stable ICU 3.0
+     */
+    public static int offsetByCodePoints(char[] text, int start, int count, int index, int codePointOffset) {
+        int limit = start + count;
+        if (start < 0 || limit < start || limit > text.length || index < start || index > limit) {
+            throw new IndexOutOfBoundsException("index ( " + index +
+                                                ") out of range " + start +
+                                                ", " + limit +
+                                                " in array 0, " + text.length);
+        }
+
+        if (codePointOffset < 0) {
+            while (++codePointOffset <= 0) {
+                char ch = text[--index];
+                if (index < start) {
+                    throw new IndexOutOfBoundsException("index ( " + index +
+                                                        ") < start (" + start +
+                                                        ")");
+                }
+                while (ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE && index > start) {
+                    ch = text[--index];
+                    if (ch < MIN_HIGH_SURROGATE || ch > MAX_HIGH_SURROGATE) {
+                        if (++codePointOffset > 0) {
+                            return index+1;
+                        }
+                    }
+                }
+            }
+        } else {
+            while (--codePointOffset >= 0) {
+                char ch = text[index++];
+                if (index > limit) {
+                    throw new IndexOutOfBoundsException("index ( " + index +
+                                                        ") > limit (" + limit +
+                                                        ")");
+                }
+                while (ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE && index < limit) {
+                    ch = text[index++];
+                    if (ch < MIN_LOW_SURROGATE || ch > MAX_LOW_SURROGATE) {
+                        if (--codePointOffset < 0) {
+                            return index-1;
+                        }
+                    }
+                }
+            }
+        }
+
+        return index;
+    }
+
+    // protected data members --------------------------------------------
+    
+    /**
+     * Database storing the sets of character name
+     */
+    static UCharacterName NAME_ = null;
+
+    /**
+     * Singleton object encapsulating the imported pnames.icu property aliases
+     */
+    static UPropertyAliases PNAMES_ = null;
+      
+    // block to initialise name database and unicode 1.0 data 
+    static {
+        try {
+            PNAMES_ = new UPropertyAliases();
+            NAME_ = UCharacterName.getInstance();
+        } catch (IOException e) {
+            // e.printStackTrace();
+            throw new MissingResourceException(e.getMessage(),"","");
+            //throw new RuntimeException(e.getMessage());
+            // DONOT throw an exception
+            // we might be building ICU modularly wothout names.icu and
+            // pnames.icu
+        }
+    }
+        
+    // private variables -------------------------------------------------
+    
+    /**
+     * Database storing the sets of character property
+     */
+    private static final UCharacterProperty PROPERTY_;
+    /**
+     * For optimization
+     */
+    private static final char[] PROPERTY_TRIE_INDEX_;
+    private static final char[] PROPERTY_TRIE_DATA_;
+    private static final int PROPERTY_INITIAL_VALUE_;
+
+    private static final UCaseProps gCsp;
+    private static final UBiDiProps gBdp;
+
+    // block to initialise character property database
+    static
+    {
+        try
+        {
+            PROPERTY_ = UCharacterProperty.getInstance();
+            PROPERTY_TRIE_INDEX_ = PROPERTY_.m_trieIndex_;
+            PROPERTY_TRIE_DATA_ = PROPERTY_.m_trieData_;
+            PROPERTY_INITIAL_VALUE_ = PROPERTY_.m_trieInitialValue_;
+        }
+        catch (Exception e)
+        {
+            throw new MissingResourceException(e.getMessage(),"","");
+        }
+
+        /*
+         * In ICU4J 3.2, most Unicode properties were loaded from uprops.icu.
+         * ICU4J 3.4 adds ucase.icu for case mapping properties and
+         * ubidi.icu for bidi/shaping properties and
+         * removes case/bidi/shaping properties from uprops.icu.
+         *
+         * Loading of uprops.icu was always done during class loading of UCharacter.class.
+         * In order to maintain performance for all such properties,
+         * ucase.icu and ubidi.icu are also loaded during class loading of UCharacter.class.
+         * It will not fail if they are missing.
+         * These data items are loaded early to avoid having to synchronize access to them,
+         * for thread safety and performance.
+         *
+         * We try to load these data items at most once.
+         * If it works, we use the resulting singleton object.
+         * If it fails, then we get a dummy object, which always works unless
+         * we are seriously out of memory.
+         * After UCharacter.class loading, we have a never-changing pointer to either the
+         * real singleton or the dummy.
+         *
+         * This method is used in Unicode properties APIs that
+         * do not have a service object and also do not have an error code parameter.
+         * Other API implementations get the singleton themselves
+         * (synchronized), store it in the service object, and report errors.
+         */
+        UCaseProps csp;
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch(IOException e) {
+            csp=UCaseProps.getDummy();
+        }
+        gCsp=csp;
+
+        UBiDiProps bdp;
+        try {
+            bdp=UBiDiProps.getSingleton();
+        } catch(IOException e) {
+            bdp=UBiDiProps.getDummy();
+        }
+        gBdp=bdp;
+    }
+    
+    /**
+     * To get the last character out from a data type
+     */
+    private static final int LAST_CHAR_MASK_ = 0xFFFF;
+      
+//    /**
+//     * To get the last byte out from a data type
+//     */
+//    private static final int LAST_BYTE_MASK_ = 0xFF;
+//      
+//    /**
+//     * Shift 16 bits
+//     */
+//    private static final int SHIFT_16_ = 16;
+//      
+//    /**
+//     * Shift 24 bits
+//     */
+//    private static final int SHIFT_24_ = 24;  
+//    
+//    /**
+//     * Decimal radix
+//     */
+//    private static final int DECIMAL_RADIX_ = 10;
+      
+    /**
+     * No break space code point
+     */
+    private static final int NO_BREAK_SPACE_ = 0xA0;
+      
+    /**
+     * Narrow no break space code point
+     */
+    private static final int NARROW_NO_BREAK_SPACE_ = 0x202F;
+      
+    /**
+     * Zero width no break space code point
+     */
+    private static final int ZERO_WIDTH_NO_BREAK_SPACE_ = 0xFEFF;
+      
+    /**
+     * Ideographic number zero code point
+     */
+    private static final int IDEOGRAPHIC_NUMBER_ZERO_ = 0x3007;
+            
+    /**
+     * CJK Ideograph, First code point
+     */
+    private static final int CJK_IDEOGRAPH_FIRST_ = 0x4e00;
+      
+    /**
+     * CJK Ideograph, Second code point
+     */
+    private static final int CJK_IDEOGRAPH_SECOND_ = 0x4e8c;
+            
+    /**
+     * CJK Ideograph, Third code point
+     */
+    private static final int CJK_IDEOGRAPH_THIRD_ = 0x4e09;
+      
+    /**
+     * CJK Ideograph, Fourth code point
+     */
+    private static final int CJK_IDEOGRAPH_FOURTH_ = 0x56d8;
+      
+    /**
+     * CJK Ideograph, FIFTH code point
+     */
+    private static final int CJK_IDEOGRAPH_FIFTH_ = 0x4e94;
+      
+    /**
+     * CJK Ideograph, Sixth code point
+     */
+    private static final int CJK_IDEOGRAPH_SIXTH_ = 0x516d;
+            
+    /**
+     * CJK Ideograph, Seventh code point
+     */
+    private static final int CJK_IDEOGRAPH_SEVENTH_ = 0x4e03;
+      
+    /**
+     * CJK Ideograph, Eighth code point
+     */
+    private static final int CJK_IDEOGRAPH_EIGHTH_ = 0x516b;
+      
+    /**
+     * CJK Ideograph, Nineth code point
+     */
+    private static final int CJK_IDEOGRAPH_NINETH_ = 0x4e5d;
+      
+    /**
+     * Application Program command code point
+     */
+    private static final int APPLICATION_PROGRAM_COMMAND_ = 0x009F;
+      
+    /**
+     * Unit separator code point
+     */
+    private static final int UNIT_SEPARATOR_ = 0x001F;
+      
+    /**
+     * Delete code point
+     */
+    private static final int DELETE_ = 0x007F;
+    /*
+     * ISO control character first range upper limit 0x0 - 0x1F
+     */
+    //private static final int ISO_CONTROL_FIRST_RANGE_MAX_ = 0x1F;
+    /**
+     * Shift to get numeric type
+     */
+    private static final int NUMERIC_TYPE_SHIFT_ = 5;
+    /**
+     * Mask to get numeric type
+     */
+    private static final int NUMERIC_TYPE_MASK_ = 0x7 << NUMERIC_TYPE_SHIFT_;
+      
+    /* encoding of fractional and large numbers */
+    //private static final int MAX_SMALL_NUMBER=0xff;
+
+    private static final int FRACTION_NUM_SHIFT=3;        /* numerator: bits 7..3 */
+    private static final int FRACTION_DEN_MASK=7;         /* denominator: bits 2..0 */
+
+    //private static final int FRACTION_MAX_NUM=31;
+    private static final int FRACTION_DEN_OFFSET=2;       /* denominator values are 2..9 */
+
+    //private static final int FRACTION_MIN_DEN=FRACTION_DEN_OFFSET;
+    //private static final int FRACTION_MAX_DEN=FRACTION_MIN_DEN+FRACTION_DEN_MASK;
+
+    private static final int LARGE_MANT_SHIFT=4;          /* mantissa: bits 7..4 */
+    private static final int LARGE_EXP_MASK=0xf;          /* exponent: bits 3..0 */
+    private static final int LARGE_EXP_OFFSET=2;          /* regular exponents 2..17 */
+    private static final int LARGE_EXP_OFFSET_EXTRA=18;   /* extra large exponents 18..33 */
+
+    //private static final int LARGE_MIN_EXP=LARGE_EXP_OFFSET;
+    //private static final int LARGE_MAX_EXP=LARGE_MIN_EXP+LARGE_EXP_MASK;
+    //private static final int LARGE_MAX_EXP_EXTRA=LARGE_EXP_OFFSET_EXTRA+LARGE_EXP_MASK;
+
+    /**
+     * Han digit characters
+     */
+    private static final int CJK_IDEOGRAPH_COMPLEX_ZERO_     = 0x96f6;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_ONE_      = 0x58f9;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_TWO_      = 0x8cb3;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_THREE_    = 0x53c3;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_FOUR_     = 0x8086;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_FIVE_     = 0x4f0d;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_SIX_      = 0x9678;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_SEVEN_    = 0x67d2;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_EIGHT_    = 0x634c;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_NINE_     = 0x7396;    
+    private static final int CJK_IDEOGRAPH_TEN_              = 0x5341;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_TEN_      = 0x62fe;    
+    private static final int CJK_IDEOGRAPH_HUNDRED_          = 0x767e;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_HUNDRED_  = 0x4f70;    
+    private static final int CJK_IDEOGRAPH_THOUSAND_         = 0x5343;    
+    private static final int CJK_IDEOGRAPH_COMPLEX_THOUSAND_ = 0x4edf;    
+    private static final int CJK_IDEOGRAPH_TEN_THOUSAND_     = 0x824c;    
+    private static final int CJK_IDEOGRAPH_HUNDRED_MILLION_  = 0x5104;
+
+//    /**
+//     * Zero Width Non Joiner.
+//     * Equivalent to icu4c ZWNJ.
+//     */
+//    private static final int ZERO_WIDTH_NON_JOINER_ = 0x200c;
+//    /**
+//     * Zero Width Joiner
+//     * Equivalent to icu4c ZWJ. 
+//     */
+//    private static final int ZERO_WIDTH_JOINER_ = 0x200d;
+
+    /*
+     * Properties in vector word 2
+     * Bits
+     * 31..26   reserved
+     * 25..20   Line Break
+     * 19..15   Sentence Break
+     * 14..10   Word Break
+     *  9.. 5   Grapheme Cluster Break
+     *  4.. 0   Decomposition Type
+     */
+    private static final int LB_MASK          = 0x03f00000;
+    private static final int LB_SHIFT         = 20;
+    private static final int LB_VWORD         = 2;
+
+    private static final int SB_MASK          = 0x000f8000;
+    private static final int SB_SHIFT         = 15;
+
+    private static final int WB_MASK          = 0x00007c00;
+    private static final int WB_SHIFT         = 10;
+
+    private static final int GCB_MASK         = 0x000003e0;
+    private static final int GCB_SHIFT        = 5;
+
+    /**
+     * Integer properties mask for decomposition type.
+     * Equivalent to icu4c UPROPS_DT_MASK. 
+     */    
+    private static final int DECOMPOSITION_TYPE_MASK_ = 0x0000001f;
+
+    /*
+     * Properties in vector word 0
+     * Bits
+     * 31..24   DerivedAge version major/minor one nibble each
+     * 23..20   reserved
+     * 19..17   East Asian Width
+     * 16.. 8   UBlockCode
+     *  7.. 0   UScriptCode
+     */
+
+    /**
+     * Integer properties mask and shift values for East Asian cell width.
+     * Equivalent to icu4c UPROPS_EA_MASK 
+     */    
+    private static final int EAST_ASIAN_MASK_ = 0x000e0000;
+    /**
+     * Integer properties mask and shift values for East Asian cell width.
+     * Equivalent to icu4c UPROPS_EA_SHIFT 
+     */    
+    private static final int EAST_ASIAN_SHIFT_ = 17;
+    /**
+     * Integer properties mask and shift values for blocks.
+     * Equivalent to icu4c UPROPS_BLOCK_MASK 
+     */    
+    private static final int BLOCK_MASK_ = 0x0001ff00;
+    /**
+     * Integer properties mask and shift values for blocks.
+     * Equivalent to icu4c UPROPS_BLOCK_SHIFT 
+     */    
+    private static final int BLOCK_SHIFT_ = 8;
+    /**
+     * Integer properties mask and shift values for scripts.
+     * Equivalent to icu4c UPROPS_SHIFT_MASK
+     */    
+    private static final int SCRIPT_MASK_ = 0x000000ff;
+                           
+    // private constructor -----------------------------------------------
+    ///CLOVER:OFF  
+    /**
+     * Private constructor to prevent instantiation
+     */
+    private UCharacter()
+    {
+    }
+    ///CLOVER:ON 
+    // private methods ---------------------------------------------------
+    
+    /**
+     * Getting the digit values of characters like 'A' - 'Z', normal, 
+     * half-width and full-width. This method assumes that the other digit 
+     * characters are checked by the calling method.
+     * @param ch character to test
+     * @return -1 if ch is not a character of the form 'A' - 'Z', otherwise
+     *         its corresponding digit will be returned.
+     */
+    private static int getEuropeanDigit(int ch) {
+        if ((ch > 0x7a && ch < 0xff21)  
+            || ch < 0x41 || (ch > 0x5a && ch < 0x61)
+            || ch > 0xff5a || (ch > 0xff31 && ch < 0xff41)) {
+            return -1;
+        } 
+        if (ch <= 0x7a) {
+            // ch >= 0x41 or ch < 0x61 
+            return ch + 10 - ((ch <= 0x5a) ? 0x41 : 0x61);
+        }
+        // ch >= 0xff21
+        if (ch <= 0xff3a) {
+            return ch + 10 - 0xff21;
+        } 
+        // ch >= 0xff41 && ch <= 0xff5a
+        return ch + 10 - 0xff41;
+    }
+    
+    /**
+     * Gets the numeric type of the property argument
+     * @param props 32 bit property
+     * @return the numeric type
+     */
+    private static int getNumericType(int props)
+    {
+        return (props & NUMERIC_TYPE_MASK_) >> NUMERIC_TYPE_SHIFT_;
+    }
+    
+    /**
+     * Gets the property value at the index.
+     * This is optimized.
+     * Note this is alittle different from CharTrie the index m_trieData_
+     * is never negative.
+     * This is a duplicate of UCharacterProperty.getProperty. For optimization
+     * purposes, this method calls the trie data directly instead of through 
+     * UCharacterProperty.getProperty.
+     * @param ch code point whose property value is to be retrieved
+     * @return property value of code point
+     * @stable ICU 2.6
+     */
+    private static final int getProperty(int ch)
+    {
+        if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE 
+            || (ch > UTF16.LEAD_SURROGATE_MAX_VALUE 
+                && ch < UTF16.SUPPLEMENTARY_MIN_VALUE)) {
+            // BMP codepoint 0000..D7FF or DC00..FFFF
+            try { // using try for ch < 0 is faster than using an if statement
+                return PROPERTY_TRIE_DATA_[
+                              (PROPERTY_TRIE_INDEX_[ch >> 5] << 2) 
+                              + (ch & 0x1f)];
+            } catch (ArrayIndexOutOfBoundsException e) {
+                return PROPERTY_INITIAL_VALUE_;
+            }
+        }
+        if (ch <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            // lead surrogate D800..DBFF
+            return PROPERTY_TRIE_DATA_[
+                              (PROPERTY_TRIE_INDEX_[(0x2800 >> 5) + (ch >> 5)] << 2) 
+                              + (ch & 0x1f)];
+        }
+        // for optimization
+        if (ch <= UTF16.CODEPOINT_MAX_VALUE) {
+            // supplementary code point 10000..10FFFF
+            // look at the construction of supplementary characters
+            // trail forms the ends of it.
+            return PROPERTY_.m_trie_.getSurrogateValue(
+                                      UTF16.getLeadSurrogate(ch), 
+                                      (char)(ch & 0x3ff));
+        }
+        // return m_dataOffset_ if there is an error, in this case we return 
+        // the default value: m_initialValue_
+        // we cannot assume that m_initialValue_ is at offset 0
+        // this is for optimization.
+        return PROPERTY_INITIAL_VALUE_;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterCategory.java b/src/com/ibm/icu/lang/UCharacterCategory.java
new file mode 100644
index 0000000..60c0a64
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterCategory.java
@@ -0,0 +1,112 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.lang.UCharacterEnums.ECharacterCategory;
+
+/**
+ * Enumerated Unicode category types from the UnicodeData.txt file.
+ * Used as return results from <a href=UCharacter.html>UCharacter</a>
+ * Equivalent to icu's UCharCategory.
+ * Refer to <a href="http://www.unicode.org/Public/UNIDATA/UCD.html">
+ * Unicode Consortium</a> for more information about UnicodeData.txt.
+ * <p>
+ * <em>NOTE:</em> the UCharacterCategory values are <em>not</em> compatible with
+ * those returned by java.lang.Character.getType.  UCharacterCategory values
+ * match the ones used in ICU4C, while java.lang.Character type
+ * values, though similar, skip the value 17.</p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.1
+ */
+
+public final class UCharacterCategory implements ECharacterCategory
+{
+    /**
+     * Gets the name of the argument category
+     * @param category to retrieve name
+     * @return category name
+     * @stable ICU 2.1
+     */
+    public static String toString(int category)
+    {
+        switch (category) {
+        case UPPERCASE_LETTER :
+            return "Letter, Uppercase";
+        case LOWERCASE_LETTER :
+            return "Letter, Lowercase";
+        case TITLECASE_LETTER :
+            return "Letter, Titlecase";
+        case MODIFIER_LETTER :
+            return "Letter, Modifier";
+        case OTHER_LETTER :
+            return "Letter, Other";
+        case NON_SPACING_MARK :
+            return "Mark, Non-Spacing";
+        case ENCLOSING_MARK : 
+            return "Mark, Enclosing";
+        case COMBINING_SPACING_MARK :
+            return "Mark, Spacing Combining";
+        case DECIMAL_DIGIT_NUMBER :
+            return "Number, Decimal Digit";
+        case LETTER_NUMBER :
+            return "Number, Letter";
+        case OTHER_NUMBER :
+            return "Number, Other";
+        case SPACE_SEPARATOR :
+            return "Separator, Space";
+        case LINE_SEPARATOR :
+            return "Separator, Line";
+        case PARAGRAPH_SEPARATOR :
+            return "Separator, Paragraph";
+        case CONTROL :
+            return "Other, Control";
+        case FORMAT :
+            return "Other, Format";
+        case PRIVATE_USE :
+            return "Other, Private Use";
+        case SURROGATE :
+            return "Other, Surrogate";
+        case DASH_PUNCTUATION :
+            return "Punctuation, Dash";
+        case START_PUNCTUATION :
+            return "Punctuation, Open";
+        case END_PUNCTUATION :
+            return "Punctuation, Close";
+        case CONNECTOR_PUNCTUATION :
+            return "Punctuation, Connector";
+        case OTHER_PUNCTUATION :
+            return "Punctuation, Other";
+        case MATH_SYMBOL :
+            return "Symbol, Math";
+        case CURRENCY_SYMBOL :
+            return "Symbol, Currency";
+        case MODIFIER_SYMBOL :
+            return "Symbol, Modifier";
+        case OTHER_SYMBOL :
+            return "Symbol, Other";
+        case INITIAL_PUNCTUATION :
+            return "Punctuation, Initial quote";
+        case FINAL_PUNCTUATION :
+            return "Punctuation, Final quote";
+        }
+        return "Unassigned";
+    }
+        
+    // private constructor -----------------------------------------------
+    ///CLOVER:OFF 
+    /**
+     * Private constructor to prevent initialisation
+     */
+    private UCharacterCategory()
+    {
+    }
+    ///CLOVER:ON
+}
diff --git a/src/com/ibm/icu/lang/UCharacterDirection.java b/src/com/ibm/icu/lang/UCharacterDirection.java
new file mode 100644
index 0000000..884c6be
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterDirection.java
@@ -0,0 +1,84 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.lang.UCharacterEnums.ECharacterDirection;
+
+/**
+ * Enumerated Unicode character linguistic direction constants.
+ * Used as return results from <a href=UCharacter.html>UCharacter</a>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.1
+ */
+
+public final class UCharacterDirection implements ECharacterDirection {
+
+    // private constructor =========================================
+    ///CLOVER:OFF  
+    /**
+     * Private constructor to prevent initialisation
+     */
+    private UCharacterDirection()
+    {
+    }
+    ///CLOVER:ON
+      
+    /**
+     * Gets the name of the argument direction
+     * @param dir direction type to retrieve name
+     * @return directional name
+     * @stable ICU 2.1
+     */
+    public static String toString(int dir) {
+        switch(dir)
+            {
+            case LEFT_TO_RIGHT :
+                return "Left-to-Right";
+            case RIGHT_TO_LEFT :
+                return "Right-to-Left";
+            case EUROPEAN_NUMBER :
+                return "European Number";
+            case EUROPEAN_NUMBER_SEPARATOR :
+                return "European Number Separator";
+            case EUROPEAN_NUMBER_TERMINATOR :
+                return "European Number Terminator";
+            case ARABIC_NUMBER :
+                return "Arabic Number";
+            case COMMON_NUMBER_SEPARATOR :
+                return "Common Number Separator";
+            case BLOCK_SEPARATOR :
+                return "Paragraph Separator";
+            case SEGMENT_SEPARATOR :
+                return "Segment Separator";
+            case WHITE_SPACE_NEUTRAL :
+                return "Whitespace";
+            case OTHER_NEUTRAL :
+                return "Other Neutrals";
+            case LEFT_TO_RIGHT_EMBEDDING :
+                return "Left-to-Right Embedding";
+            case LEFT_TO_RIGHT_OVERRIDE :
+                return "Left-to-Right Override";
+            case RIGHT_TO_LEFT_ARABIC :
+                return "Right-to-Left Arabic";
+            case RIGHT_TO_LEFT_EMBEDDING :
+                return "Right-to-Left Embedding";
+            case RIGHT_TO_LEFT_OVERRIDE :
+                return "Right-to-Left Override";
+            case POP_DIRECTIONAL_FORMAT :
+                return "Pop Directional Format";
+            case DIR_NON_SPACING_MARK :
+                return "Non-Spacing Mark";
+            case BOUNDARY_NEUTRAL :
+                return "Boundary Neutral";
+            }
+        return "Unassigned";
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterEnums.java b/src/com/ibm/icu/lang/UCharacterEnums.java
new file mode 100644
index 0000000..d1e8c26
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterEnums.java
@@ -0,0 +1,491 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.lang;
+
+/**
+ * A container for the different 'enumerated types' used by UCharacter.
+ * @stable ICU 3.0
+ */
+public class UCharacterEnums {
+
+    /** This is just a namespace, it is not instantiatable. */
+    ///CLOVER:OFF
+    private UCharacterEnums() {}
+
+    /**
+     * 'Enum' for the CharacterCategory constants.  These constants are 
+     * compatible in name <b>but not in value</b> with those defined in
+     * <code>java.lang.Character</code>.
+     * @see UCharacterCategory
+     * @stable ICU 3.0
+     */
+    public static interface ECharacterCategory {
+        /**
+         * Unassigned character type
+         * @stable ICU 2.1
+         */
+        public static final byte UNASSIGNED              = 0; 
+
+        /**
+         * Character type Cn
+         * Not Assigned (no characters in [UnicodeData.txt] have this property) 
+         * @stable ICU 2.6
+         */
+        public static final byte GENERAL_OTHER_TYPES     = 0;
+
+        /**
+         * Character type Lu
+         * @stable ICU 2.1
+         */
+        public static final byte UPPERCASE_LETTER        = 1;
+
+        /**
+         * Character type Ll
+         * @stable ICU 2.1
+         */
+        public static final byte LOWERCASE_LETTER        = 2;
+
+        /**
+         * Character type Lt
+         * @stable ICU 2.1
+         */
+
+        public static final byte TITLECASE_LETTER        = 3;
+
+        /**
+         * Character type Lm
+         * @stable ICU 2.1
+         */
+        public static final byte MODIFIER_LETTER         = 4;
+
+        /**
+         * Character type Lo
+         * @stable ICU 2.1
+         */
+        public static final byte OTHER_LETTER            = 5;
+
+        /**
+         * Character type Mn
+         * @stable ICU 2.1
+         */
+        public static final byte NON_SPACING_MARK        = 6;
+
+        /**
+         * Character type Me
+         * @stable ICU 2.1
+         */
+        public static final byte ENCLOSING_MARK          = 7;
+
+        /**
+         * Character type Mc
+         * @stable ICU 2.1
+         */
+        public static final byte COMBINING_SPACING_MARK  = 8;
+
+        /**
+         * Character type Nd
+         * @stable ICU 2.1      
+         */
+        public static final byte DECIMAL_DIGIT_NUMBER    = 9;
+
+        /**
+         * Character type Nl
+         * @stable ICU 2.1
+         */
+        public static final byte LETTER_NUMBER           = 10;
+        
+        /**
+         * Character type No
+         * @stable ICU 2.1
+         */
+        public static final byte OTHER_NUMBER            = 11;
+
+        /**
+         * Character type Zs
+         * @stable ICU 2.1
+         */
+        public static final byte SPACE_SEPARATOR         = 12;
+
+        /**
+         * Character type Zl
+         * @stable ICU 2.1
+         */
+        public static final byte LINE_SEPARATOR          = 13;
+
+        /**
+         * Character type Zp
+         * @stable ICU 2.1
+         */
+        public static final byte PARAGRAPH_SEPARATOR     = 14;
+
+        /**
+         * Character type Cc
+         * @stable ICU 2.1
+         */
+        public static final byte CONTROL                 = 15;
+
+        /**
+         * Character type Cf
+         * @stable ICU 2.1
+         */
+        public static final byte FORMAT                  = 16;
+
+        /**
+         * Character type Co
+         * @stable ICU 2.1
+         */
+        public static final byte PRIVATE_USE             = 17;
+
+        /**
+         * Character type Cs
+         * @stable ICU 2.1
+         */
+        public static final byte SURROGATE               = 18;
+
+        /**
+         * Character type Pd
+         * @stable ICU 2.1
+         */
+        public static final byte DASH_PUNCTUATION        = 19;
+
+        /**
+         * Character type Ps
+         * @stable ICU 2.1
+         */
+        public static final byte START_PUNCTUATION       = 20;
+        
+        /**
+         * Character type Pe
+         * @stable ICU 2.1
+         */
+        public static final byte END_PUNCTUATION         = 21;
+
+        /**
+         * Character type Pc
+         * @stable ICU 2.1
+         */
+        public static final byte CONNECTOR_PUNCTUATION   = 22;
+
+        /**
+         * Character type Po
+         * @stable ICU 2.1
+         */
+        public static final byte OTHER_PUNCTUATION       = 23;
+
+        /**
+         * Character type Sm
+         * @stable ICU 2.1
+         */
+        public static final byte MATH_SYMBOL             = 24;
+
+        /**
+         * Character type Sc
+         * @stable ICU 2.1
+         */
+        public static final byte CURRENCY_SYMBOL         = 25;
+        
+        /**
+         * Character type Sk
+         * @stable ICU 2.1
+         */
+        public static final byte MODIFIER_SYMBOL         = 26;
+        
+        /**
+         * Character type So
+         * @stable ICU 2.1
+         */
+        public static final byte OTHER_SYMBOL            = 27;
+        
+        /**
+         * Character type Pi
+         * @see #INITIAL_QUOTE_PUNCTUATION
+         * @stable ICU 2.1
+         */
+        public static final byte INITIAL_PUNCTUATION     = 28;
+
+        /**
+         * Character type Pi
+         * This name is compatible with java.lang.Character's name for this type.
+         * @see #INITIAL_PUNCTUATION
+         * @stable ICU 2.8
+         */
+        public static final byte INITIAL_QUOTE_PUNCTUATION = 28;
+
+        /**
+         * Character type Pf
+         * @see #FINAL_QUOTE_PUNCTUATION
+         * @stable ICU 2.1
+         */
+        public static final byte FINAL_PUNCTUATION       = 29;
+
+        /**
+         * Character type Pf
+         * This name is compatible with java.lang.Character's name for this type.
+         * @see #FINAL_PUNCTUATION
+         * @stable ICU 2.8
+         */
+        public static final byte FINAL_QUOTE_PUNCTUATION   = 29;
+        
+        /**
+         * Character type count
+         * @stable ICU 2.1
+         */
+        public static final byte CHAR_CATEGORY_COUNT     = 30;
+    }
+
+    /**
+     * 'Enum' for the CharacterDirection constants.  There are two sets
+     * of names, those used in ICU, and those used in the JDK.  The
+     * JDK constants are compatible in name <b>but not in value</b> 
+     * with those defined in <code>java.lang.Character</code>.
+     * @see UCharacterDirection
+     * @stable ICU 3.0
+     */
+    public static interface ECharacterDirection {
+        /**
+         * Directional type L
+         * @stable ICU 2.1
+         */
+        public static final int LEFT_TO_RIGHT              = 0;
+
+        /**
+         * JDK-compatible synonym for LEFT_TO_RIGHT.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = (byte)LEFT_TO_RIGHT;
+
+        /**
+         * Directional type R
+         * @stable ICU 2.1
+         */
+        public static final int RIGHT_TO_LEFT              = 1;
+
+        /**
+         * JDK-compatible synonym for RIGHT_TO_LEFT.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = (byte)RIGHT_TO_LEFT;
+
+        /**
+         * Directional type EN
+         * @stable ICU 2.1
+         */
+        public static final int EUROPEAN_NUMBER            = 2;
+
+        /**
+         * JDK-compatible synonym for EUROPEAN_NUMBER.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = (byte)EUROPEAN_NUMBER;
+
+        /**
+         * Directional type ES
+         * @stable ICU 2.1
+         */
+        public static final int EUROPEAN_NUMBER_SEPARATOR  = 3;
+
+        /**
+         * JDK-compatible synonym for EUROPEAN_NUMBER_SEPARATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = (byte)EUROPEAN_NUMBER_SEPARATOR;
+
+        /**
+         * Directional type ET
+         * @stable ICU 2.1
+         */
+        public static final int EUROPEAN_NUMBER_TERMINATOR = 4;
+
+        /**
+         * JDK-compatible synonym for EUROPEAN_NUMBER_TERMINATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = (byte)EUROPEAN_NUMBER_TERMINATOR;
+
+        /**
+         * Directional type AN
+         * @stable ICU 2.1
+         */                                                    
+        public static final int ARABIC_NUMBER              = 5;
+
+        /**
+         * JDK-compatible synonym for ARABIC_NUMBER.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_ARABIC_NUMBER = (byte)ARABIC_NUMBER;
+
+        /**
+         * Directional type CS
+         * @stable ICU 2.1
+         */
+        public static final int COMMON_NUMBER_SEPARATOR    = 6;
+
+        /**
+         * JDK-compatible synonym for COMMON_NUMBER_SEPARATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = (byte)COMMON_NUMBER_SEPARATOR;
+
+        /**
+         * Directional type B
+         * @stable ICU 2.1
+         */
+        public static final int BLOCK_SEPARATOR            = 7;
+
+        /**
+         * JDK-compatible synonym for BLOCK_SEPARATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = (byte)BLOCK_SEPARATOR;
+
+        /**
+         * Directional type S
+         * @stable ICU 2.1
+         */      
+        public static final int SEGMENT_SEPARATOR          = 8;
+
+        /**
+         * JDK-compatible synonym for SEGMENT_SEPARATOR.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = (byte)SEGMENT_SEPARATOR;
+
+        /**
+         * Directional type WS
+         * @stable ICU 2.1
+         */
+        public static final int WHITE_SPACE_NEUTRAL        = 9;
+
+        /**
+         * JDK-compatible synonym for WHITE_SPACE_NEUTRAL.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_WHITESPACE = (byte)WHITE_SPACE_NEUTRAL;
+
+        /**
+         * Directional type ON
+         * @stable ICU 2.1
+         */
+        public static final int OTHER_NEUTRAL              = 10;
+
+        /**
+         * JDK-compatible synonym for OTHER_NEUTRAL.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_OTHER_NEUTRALS = (byte)OTHER_NEUTRAL;
+
+        /**
+         * Directional type LRE
+         * @stable ICU 2.1
+         */
+        public static final int LEFT_TO_RIGHT_EMBEDDING    = 11;
+
+        /**
+         * JDK-compatible synonym for LEFT_TO_RIGHT_EMBEDDING.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = (byte)LEFT_TO_RIGHT_EMBEDDING;
+
+        /**
+         * Directional type LRO
+         * @stable ICU 2.1
+         */
+        public static final int LEFT_TO_RIGHT_OVERRIDE     = 12;  
+
+        /**
+         * JDK-compatible synonym for LEFT_TO_RIGHT_OVERRIDE.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = (byte)LEFT_TO_RIGHT_OVERRIDE;
+
+        /**
+         * Directional type AL
+         * @stable ICU 2.1
+         */
+        public static final int RIGHT_TO_LEFT_ARABIC       = 13;
+
+        /**
+         * JDK-compatible synonym for RIGHT_TO_LEFT_ARABIC.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = (byte)RIGHT_TO_LEFT_ARABIC;
+
+        /**
+         * Directional type RLE
+         * @stable ICU 2.1
+         */
+        public static final int RIGHT_TO_LEFT_EMBEDDING    = 14;
+
+        /**
+         * JDK-compatible synonym for RIGHT_TO_LEFT_EMBEDDING.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = (byte)RIGHT_TO_LEFT_EMBEDDING;
+
+        /**
+         * Directional type RLO
+         * @stable ICU 2.1
+         */
+        public static final int RIGHT_TO_LEFT_OVERRIDE     = 15;
+
+        /**
+         * JDK-compatible synonym for RIGHT_TO_LEFT_OVERRIDE.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = (byte)RIGHT_TO_LEFT_OVERRIDE;
+
+        /**
+         * Directional type PDF
+         * @stable ICU 2.1
+         */
+        public static final int POP_DIRECTIONAL_FORMAT     = 16;
+
+        /**
+         * JDK-compatible synonym for POP_DIRECTIONAL_FORMAT.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = (byte)POP_DIRECTIONAL_FORMAT;
+
+        /**
+         * Directional type NSM
+         * @stable ICU 2.1
+         */
+        public static final int DIR_NON_SPACING_MARK       = 17;
+
+        /**
+         * JDK-compatible synonym for DIR_NON_SPACING_MARK.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_NONSPACING_MARK = (byte)DIR_NON_SPACING_MARK;
+
+        /**
+         * Directional type BN
+         * @stable ICU 2.1
+         */
+        public static final int BOUNDARY_NEUTRAL           = 18;
+
+        /**
+         * JDK-compatible synonym for BOUNDARY_NEUTRAL.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = (byte)BOUNDARY_NEUTRAL;
+
+        /**
+         * Number of directional types
+         * @stable ICU 2.1
+         */
+        public static final int CHAR_DIRECTION_COUNT       = 19;
+
+        /**
+         * Undefined bidirectional character type. Undefined <code>char</code>
+         * values have undefined directionality in the Unicode specification.
+         * @stable ICU 3.0
+         */
+        public static final byte DIRECTIONALITY_UNDEFINED = -1;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterNameIterator.java b/src/com/ibm/icu/lang/UCharacterNameIterator.java
new file mode 100644
index 0000000..daa2ec1
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterNameIterator.java
@@ -0,0 +1,329 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.impl.UCharacterName;
+import com.ibm.icu.impl.UCharacterNameChoice;
+
+/**
+ * <p>Class enabling iteration of the codepoints and their names.</p>
+ * <p>Result of each iteration contains a valid codepoint that has valid
+ * name.</p>
+ * <p>See UCharacter.getNameIterator() for an example of use.</p>
+ * @author synwee
+ * @since release 2.1, March 5 2002
+ */
+class UCharacterNameIterator implements ValueIterator
+{
+    // public methods ----------------------------------------------------
+
+    /**
+    * <p>Gets the next result for this iteration and returns
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result codepoint and name
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    */
+    public boolean next(ValueIterator.Element element)
+    {
+        if (m_current_ >= m_limit_) {
+            return false;
+        }
+
+        if (m_choice_ != UCharacterNameChoice.UNICODE_10_CHAR_NAME) {
+            int length = m_name_.getAlgorithmLength();
+            if (m_algorithmIndex_ < length) {
+                while (m_algorithmIndex_ < length) {
+                    // find the algorithm range that could contain m_current_
+                    if (m_algorithmIndex_ < 0 ||
+                        m_name_.getAlgorithmEnd(m_algorithmIndex_) <
+                        m_current_) {
+                        m_algorithmIndex_ ++;
+                    }
+                    else {
+                        break;
+                    }
+                }
+
+                if (m_algorithmIndex_ < length) {
+                    // interleave the data-driven ones with the algorithmic ones
+                    // iterate over all algorithmic ranges; assume that they are
+                    // in ascending order
+                    int start = m_name_.getAlgorithmStart(m_algorithmIndex_);
+                    if (m_current_ < start) {
+                        // this should get rid of those codepoints that are not
+                        // in the algorithmic range
+                        int end = start;
+                        if (m_limit_ <= start) {
+                            end = m_limit_;
+                        }
+                        if (!iterateGroup(element, end)) {
+                            m_current_ ++;
+                            return true;
+                        }
+                    }
+
+                    if (m_current_ >= m_limit_) {
+                        // after iterateGroup fails, current codepoint may be
+                        // greater than limit
+                        return false;
+                    }
+
+                    element.integer = m_current_;
+                    element.value   = m_name_.getAlgorithmName(m_algorithmIndex_,
+                                                                   m_current_);
+                    // reset the group index if we are in the algorithmic names
+                    m_groupIndex_ = -1;
+                    m_current_ ++;
+                    return true;
+                }
+            }
+        }
+        // enumerate the character names after the last algorithmic range
+        if (!iterateGroup(element, m_limit_)) {
+            m_current_ ++;
+            return true;
+        }
+        else if (m_choice_ == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+            if (!iterateExtended(element, m_limit_)) {
+                m_current_ ++;
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+    * <p>Resets the iterator to start iterating from the integer index
+    * UCharacter.MIN_VALUE or X if a setRange(X, Y) has been called previously.
+    * </p>
+    */
+    public void reset()
+    {
+        m_current_        = m_start_;
+        m_groupIndex_     = -1;
+        m_algorithmIndex_ = -1;
+    }
+
+    /**
+     * <p>Restricts the range of integers to iterate and resets the iteration
+     * to begin at the index argument start.</p>
+     * <p>If setRange(start, end) is not performed before next(element) is
+     * called, the iteration will start from the integer index
+     * UCharacter.MIN_VALUE and end at UCharacter.MAX_VALUE.</p>
+     * <p>
+     * If this range is set outside the range of UCharacter.MIN_VALUE and
+     * UCharacter.MAX_VALUE, next(element) will always return false.
+     * </p>
+     * @param start first integer in range to iterate
+     * @param limit 1 integer after the last integer in range
+     * @exception IllegalArgumentException thrown when attempting to set an
+     *            illegal range. E.g limit <= start
+     */
+    public void setRange(int start, int limit)
+    {
+        if (start >= limit) {
+            throw new IllegalArgumentException(
+                "start or limit has to be valid Unicode codepoints and start < limit");
+        }
+        if (start < UCharacter.MIN_VALUE) {
+            m_start_ = UCharacter.MIN_VALUE;
+        }
+        else {
+            m_start_ = start;
+        }
+
+        if (limit > UCharacter.MAX_VALUE + 1) {
+            m_limit_ = UCharacter.MAX_VALUE + 1;
+        }
+        else {
+            m_limit_ = limit;
+        }
+        m_current_ = m_start_;
+    }
+
+    // protected constructor ---------------------------------------------
+
+    /**
+    * Constructor
+    * @param name name data
+    * @param choice name choice from the class
+    *               com.ibm.icu.lang.UCharacterNameChoice
+    */
+    protected UCharacterNameIterator(UCharacterName name, int choice)
+    {
+        if(name==null){
+            throw new IllegalArgumentException("UCharacterName name argument cannot be null. Missing unames.icu?");
+        }
+        m_name_    = name;
+        // no explicit choice in UCharacter so no checks on choice
+        m_choice_  = choice;
+        m_start_   = UCharacter.MIN_VALUE;
+        m_limit_   = UCharacter.MAX_VALUE + 1;
+        m_current_ = m_start_;
+    }
+
+    // private data members ---------------------------------------------
+
+    /**
+     * Name data
+     */
+    private UCharacterName m_name_;
+    /**
+     * Name choice
+     */
+    private int m_choice_;
+     /**
+     * Start iteration range
+     */
+    private int m_start_;
+    /**
+     * End + 1 iteration range
+     */
+    private int m_limit_;
+    /**
+     * Current codepoint
+     */
+    private int m_current_;
+    /**
+     * Group index
+     */
+    private int m_groupIndex_ = -1;
+    /**
+     * Algorithm index
+     */
+    private int m_algorithmIndex_ = -1;
+    /**
+    * Group use
+    */
+    private static char GROUP_OFFSETS_[] =
+                                new char[UCharacterName.LINES_PER_GROUP_ + 1];
+    private static char GROUP_LENGTHS_[] =
+                                new char[UCharacterName.LINES_PER_GROUP_ + 1];
+
+    // private methods --------------------------------------------------
+
+    /**
+     * Group name iteration, iterate all the names in the current 32-group and
+     * returns the first codepoint that has a valid name.
+     * @param result stores the result codepoint and name
+     * @param limit last codepoint + 1 in range to search
+     * @return false if a codepoint with a name is found in group and we can
+     *         bail from further iteration, true to continue on with the
+     *         iteration
+     */
+    private boolean iterateSingleGroup(ValueIterator.Element result, int limit)
+    {
+        synchronized(GROUP_OFFSETS_) {
+        synchronized(GROUP_LENGTHS_) {
+            int index = m_name_.getGroupLengths(m_groupIndex_, GROUP_OFFSETS_,
+                                                GROUP_LENGTHS_);
+            while (m_current_ < limit) {
+                int    offset = UCharacterName.getGroupOffset(m_current_);
+                String name   = m_name_.getGroupName(
+                                          index + GROUP_OFFSETS_[offset],
+                                          GROUP_LENGTHS_[offset], m_choice_);
+                if ((name == null || name.length() == 0) &&
+                    m_choice_ == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                    name = m_name_.getExtendedName(m_current_);
+                }
+                if (name != null && name.length() > 0) {
+                    result.integer = m_current_;
+                    result.value   = name;
+                    return false;
+                }
+                ++ m_current_;
+            }
+        }
+        }
+        return true;
+    }
+
+    /**
+     * Group name iteration, iterate all the names in the current 32-group and
+     * returns the first codepoint that has a valid name.
+     * @param result stores the result codepoint and name
+     * @param limit last codepoint + 1 in range to search
+     * @return false if a codepoint with a name is found in group and we can
+     *         bail from further iteration, true to continue on with the
+     *         iteration
+     */
+    private boolean iterateGroup(ValueIterator.Element result, int limit)
+    {
+        if (m_groupIndex_ < 0) {
+            m_groupIndex_ = m_name_.getGroup(m_current_);
+        }
+
+        while (m_groupIndex_ < m_name_.m_groupcount_ &&
+               m_current_ < limit) {
+            // iterate till the last group or the last codepoint
+            int startMSB = UCharacterName.getCodepointMSB(m_current_);
+            int gMSB     = m_name_.getGroupMSB(m_groupIndex_); // can be -1
+            if (startMSB == gMSB) {
+                if (startMSB == UCharacterName.getCodepointMSB(limit - 1)) {
+                    // if start and limit - 1 are in the same group, then enumerate
+                    // only in that one
+                    return iterateSingleGroup(result, limit);
+                }
+                // enumerate characters in the partial start group
+                // if (m_name_.getGroupOffset(m_current_) != 0) {
+                if (!iterateSingleGroup(result,
+                                        UCharacterName.getGroupLimit(gMSB))) {
+                    return false;
+                }
+                ++ m_groupIndex_; // continue with the next group
+            }
+            else if (startMSB > gMSB) {
+                    // make sure that we start enumerating with the first group
+                    // after start
+                    m_groupIndex_ ++;
+            }
+            else {
+                int gMIN = UCharacterName.getGroupMin(gMSB);
+                if (gMIN > limit) {
+                    gMIN = limit;
+                }
+                if (m_choice_ == UCharacterNameChoice.EXTENDED_CHAR_NAME) {
+                    if (!iterateExtended(result, gMIN)) {
+                        return false;
+                    }
+                }
+                m_current_ = gMIN;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Iterate extended names.
+     * @param result stores the result codepoint and name
+     * @param limit last codepoint + 1 in range to search
+     * @return false if a codepoint with a name is found and we can
+     *         bail from further iteration, true to continue on with the
+     *         iteration (this will always be false for valid codepoints)
+     */
+    private boolean iterateExtended(ValueIterator.Element result,
+                                    int limit)
+    {
+        while (m_current_ < limit) {
+            String name = m_name_.getExtendedOr10Name(m_current_);
+            if (name != null && name.length() > 0) {
+                result.integer = m_current_;
+                result.value   = name;
+                return false;
+            }
+            ++ m_current_;
+        }
+        return true;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UCharacterTypeIterator.java b/src/com/ibm/icu/lang/UCharacterTypeIterator.java
new file mode 100644
index 0000000..6025a98
--- /dev/null
+++ b/src/com/ibm/icu/lang/UCharacterTypeIterator.java
@@ -0,0 +1,62 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.UCharacterProperty;
+
+/**
+ * Class enabling iteration of the codepoints according to their types.
+ * Result of each iteration contains the interval of codepoints that have
+ * the same type.
+ * Example of use:<br>
+ * <pre>
+ * RangeValueIterator iterator = UCharacter.getTypeIterator();
+ * RangeValueIterator.Element element = new RangeValueIterator.Element();
+ * while (iterator.next(element)) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(element.start) + 
+ *                        " to codepoint \\u" +
+ *                        Integer.toHexString(element.limit - 1) + 
+ *                        " has the character type " + 
+ *                        element.value);
+ * }
+ * </pre>
+ * @author synwee
+ * @see com.ibm.icu.util.TrieIterator
+ * @since release 2.1, Jan 24 2002
+ */
+class UCharacterTypeIterator extends TrieIterator
+{
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * TrieEnumeration constructor
+    * @param property the unicode character properties to be used
+    */
+    protected UCharacterTypeIterator(UCharacterProperty property)
+    {
+       super(property.m_trie_);
+    }
+    
+    // protected methods ----------------------------------------------
+    
+    /**
+    * Called by nextElement() to extracts a 32 bit value from a trie value
+    * used for comparison.
+    * This method is to be overwritten if special manipulation is to be done
+    * to retrieve a relevant comparison.
+    * The default function is to return the value as it is.
+    * @param value a value from the trie
+    * @return extracted value
+    */
+    protected int extract(int value)
+    {
+        return value & UCharacterProperty.TYPE_MASK;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/lang/UProperty.java b/src/com/ibm/icu/lang/UProperty.java
new file mode 100644
index 0000000..27890be
--- /dev/null
+++ b/src/com/ibm/icu/lang/UProperty.java
@@ -0,0 +1,828 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+/**
+ * <p>Selection constants for Unicode properties. </p>
+ * <p>These constants are used in functions like 
+ * UCharacter.hasBinaryProperty(int) to select one of the Unicode properties. 
+ * </p>
+ * <p>The properties APIs are intended to reflect Unicode properties as 
+ * defined in the Unicode Character Database (UCD) and Unicode Technical 
+ * Reports (UTR).</p>
+ * <p>For details about the properties see <a href=http://www.unicode.org>
+ * http://www.unicode.org</a>.</p> 
+ * <p>For names of Unicode properties see the UCD file PropertyAliases.txt.
+ * </p> 
+ * <p>Important: If ICU is built with UCD files from Unicode versions below 
+ * 3.2, then properties marked with "new" are not or not fully 
+ * available. Check UCharacter.getUnicodeVersion() to be sure.</p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.6
+ * @see com.ibm.icu.lang.UCharacter
+ */
+public interface UProperty
+{
+    // public data member --------------------------------------------------
+  
+    /** 
+     * <p>Binary property Alphabetic. </p>
+     * <p>Property for UCharacter.isUAlphabetic(), different from the property 
+     * in UCharacter.isalpha().</p>
+     * <p>Lu + Ll + Lt + Lm + Lo + Nl + Other_Alphabetic.</p>
+     * @stable ICU 2.6
+     */ 
+    public static final int ALPHABETIC = 0; 
+
+    /** 
+     * First constant for binary Unicode properties. 
+     * @stable ICU 2.6
+     */ 
+    public static final int BINARY_START = ALPHABETIC;
+
+    /** 
+     * Binary property ASCII_Hex_Digit (0-9 A-F a-f).
+     * @stable ICU 2.6
+     */ 
+    public static final int ASCII_HEX_DIGIT = 1; 
+
+    /** 
+     * <p>Binary property Bidi_Control.</p>
+     * <p>Format controls which have specific functions in the Bidi Algorithm.
+     * </p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int BIDI_CONTROL = 2; 
+
+    /** 
+     * <p>Binary property Bidi_Mirrored.</p> 
+     * <p>Characters that may change display in RTL text.</p> 
+     * <p>Property for UCharacter.isMirrored().</p> 
+     * <p>See Bidi Algorithm; UTR 9.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int BIDI_MIRRORED = 3; 
+
+    /** 
+     * <p>Binary property Dash.</p> 
+     * <p>Variations of dashes.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int DASH = 4; 
+
+    /** 
+     * <p>Binary property Default_Ignorable_Code_Point (new).
+     * </p> 
+     * <p>Property that indicates codepoint is ignorable in most processing.
+     * </p>
+     * <p>Codepoints (2060..206F, FFF0..FFFB, E0000..E0FFF) + 
+     * Other_Default_Ignorable_Code_Point + (Cf + Cc + Cs - White_Space)</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int DEFAULT_IGNORABLE_CODE_POINT = 5; 
+
+    /** 
+     * <p>Binary property Deprecated (new).</p> 
+     * <p>The usage of deprecated characters is strongly discouraged.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int DEPRECATED = 6; 
+
+    /** 
+     * <p>Binary property Diacritic.</p> 
+     * <p>Characters that linguistically modify the meaning of another 
+     * character to which they apply.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int DIACRITIC = 7; 
+
+    /** 
+     * <p>Binary property Extender.</p> 
+     * <p>Extend the value or shape of a preceding alphabetic character, e.g.
+     * length and iteration marks.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int EXTENDER = 8; 
+
+    /** 
+     * <p>Binary property Full_Composition_Exclusion.</p> 
+     * <p>CompositionExclusions.txt + Singleton Decompositions + 
+     * Non-Starter Decompositions.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int FULL_COMPOSITION_EXCLUSION = 9; 
+
+    /** 
+     * <p>Binary property Grapheme_Base (new).</p>
+     * <p>For programmatic determination of grapheme cluster boundaries. 
+     * [0..10FFFF]-Cc-Cf-Cs-Co-Cn-Zl-Zp-Grapheme_Link-Grapheme_Extend-CGJ</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int GRAPHEME_BASE = 10; 
+
+    /** 
+     * <p>Binary property Grapheme_Extend (new).</p> 
+     * <p>For programmatic determination of grapheme cluster boundaries.</p> 
+     * <p>Me+Mn+Mc+Other_Grapheme_Extend-Grapheme_Link-CGJ</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int GRAPHEME_EXTEND = 11; 
+
+    /** 
+     * <p>Binary property Grapheme_Link (new).</p> 
+     * <p>For programmatic determination of grapheme cluster boundaries.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int GRAPHEME_LINK = 12; 
+
+    /** 
+     * <p>Binary property Hex_Digit.</p> 
+     * <p>Characters commonly used for hexadecimal numbers.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int HEX_DIGIT = 13; 
+
+    /** 
+     * <p>Binary property Hyphen.</p> 
+     * <p>Dashes used to mark connections between pieces of words, plus the 
+     * Katakana middle dot.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int HYPHEN = 14; 
+
+    /** 
+     * <p>Binary property ID_Continue.</p>
+     * <p>Characters that can continue an identifier.</p> 
+     * <p>ID_Start+Mn+Mc+Nd+Pc</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int ID_CONTINUE = 15; 
+
+    /** 
+     * <p>Binary property ID_Start.</p> 
+     * <p>Characters that can start an identifier.</p> 
+     * <p>Lu+Ll+Lt+Lm+Lo+Nl</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int ID_START = 16; 
+
+    /** 
+     * <p>Binary property Ideographic.</p> 
+     * <p>CJKV ideographs.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int IDEOGRAPHIC = 17; 
+
+    /** 
+     * <p>Binary property IDS_Binary_Operator (new).</p> 
+     * <p>For programmatic determination of Ideographic Description Sequences.
+     * </p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int IDS_BINARY_OPERATOR = 18; 
+
+    /** 
+     * <p>Binary property IDS_Trinary_Operator (new).</p> 
+     * <p?For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int IDS_TRINARY_OPERATOR = 19; 
+
+    /** 
+     * <p>Binary property Join_Control.</p> 
+     * <p>Format controls for cursive joining and ligation.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int JOIN_CONTROL = 20; 
+
+    /** 
+     * <p>Binary property Logical_Order_Exception (new).</p> 
+     * <p>Characters that do not use logical order and require special 
+     * handling in most processing.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int LOGICAL_ORDER_EXCEPTION = 21; 
+
+    /** 
+     * <p>Binary property Lowercase.</p> 
+     * <p>Same as UCharacter.isULowercase(), different from 
+     * UCharacter.islower().</p> 
+     * <p>Ll+Other_Lowercase</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int LOWERCASE = 22; 
+
+    /** <p>Binary property Math.</p> 
+     * <p>Sm+Other_Math</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int MATH = 23; 
+
+    /** 
+     * <p>Binary property Noncharacter_Code_Point.</p> 
+     * <p>Code points that are explicitly defined as illegal for the encoding 
+     * of characters.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int NONCHARACTER_CODE_POINT = 24; 
+
+    /** 
+     * <p>Binary property Quotation_Mark.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int QUOTATION_MARK = 25; 
+
+    /** 
+     * <p>Binary property Radical (new).</p> 
+     * <p>For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int RADICAL = 26; 
+
+    /** 
+     * <p>Binary property Soft_Dotted (new).</p> 
+     * <p>Characters with a "soft dot", like i or j.</p>
+     * <p>An accent placed on these characters causes the dot to disappear.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int SOFT_DOTTED = 27; 
+
+    /** 
+     * <p>Binary property Terminal_Punctuation.</p> 
+     * <p>Punctuation characters that generally mark the end of textual 
+     * units.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int TERMINAL_PUNCTUATION = 28; 
+
+    /** 
+     * <p>Binary property Unified_Ideograph (new).</p> 
+     * <p>For programmatic determination of Ideographic Description 
+     * Sequences.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int UNIFIED_IDEOGRAPH = 29; 
+
+    /** 
+     * <p>Binary property Uppercase.</p> 
+     * <p>Same as UCharacter.isUUppercase(), different from 
+     * UCharacter.isUpperCase().</p> 
+     * <p>Lu+Other_Uppercase</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int UPPERCASE = 30; 
+
+    /** 
+     * <p>Binary property White_Space.</p> 
+     * <p>Same as UCharacter.isUWhiteSpace(), different from 
+     * UCharacter.isSpace() and UCharacter.isWhitespace().</p> 
+     * Space characters+TAB+CR+LF-ZWSP-ZWNBSP</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int WHITE_SPACE = 31; 
+
+    /** 
+     * <p>Binary property XID_Continue.</p> 
+     * <p>ID_Continue modified to allow closure under normalization forms 
+     * NFKC and NFKD.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int XID_CONTINUE = 32; 
+
+    /** 
+     * <p>Binary property XID_Start.</p> 
+     * <p>ID_Start modified to allow closure under normalization forms NFKC 
+     * and NFKD.</p> 
+     * @stable ICU 2.6
+     */ 
+    public static final int XID_START = 33; 
+
+    /**
+     * <p>Binary property Case_Sensitive.</p>
+     * <p>Either the source of a case
+     * mapping or _in_ the target of a case mapping. Not the same as
+     * the general category Cased_Letter.</p>
+     * @stable ICU 2.6
+     */
+    public static final int CASE_SENSITIVE = 34;
+
+    /**
+     * Binary property STerm (new in Unicode 4.0.1).
+     * Sentence Terminal. Used in UAX #29: Text Boundaries
+     * (http://www.unicode.org/reports/tr29/)
+     * @stable ICU 3.0
+     */
+    public static final int S_TERM = 35;
+
+    /**
+     * Binary property Variation_Selector (new in Unicode 4.0.1).
+     * Indicates all those characters that qualify as Variation Selectors.
+     * For details on the behavior of these characters,
+     * see StandardizedVariants.html and 15.6 Variation Selectors.
+     * @stable ICU 3.0
+     */
+    public static final int VARIATION_SELECTOR = 36;
+
+    /** 
+     * Binary property NFD_Inert.
+     * ICU-specific property for characters that are inert under NFD,
+     * i.e., they do not interact with adjacent characters.
+     * Used for example in normalizing transforms in incremental mode
+     * to find the boundary of safely normalizable text despite possible
+     * text additions.
+     *
+     * There is one such property per normalization form.
+     * These properties are computed as follows - an inert character is:
+     * a) unassigned, or ALL of the following:
+     * b) of combining class 0.
+     * c) not decomposed by this normalization form.
+     * AND if NFC or NFKC,
+     * d) can never compose with a previous character.
+     * e) can never compose with a following character.
+     * f) can never change if another character is added.
+     * Example: a-breve might satisfy all but f, but if you
+     * add an ogonek it changes to a-ogonek + breve
+     *
+     * See also com.ibm.text.UCD.NFSkippable in the ICU4J repository,
+     * and icu/source/common/unormimp.h .
+     * @stable ICU 3.0
+     */
+    public static final int NFD_INERT = 37;
+
+    /** 
+     * Binary property NFKD_Inert.
+     * ICU-specific property for characters that are inert under NFKD,
+     * i.e., they do not interact with adjacent characters.
+     * Used for example in normalizing transforms in incremental mode
+     * to find the boundary of safely normalizable text despite possible
+     * text additions.
+     * @see #NFD_INERT
+     * @stable ICU 3.0 
+     */
+    public static final int NFKD_INERT = 38;
+
+    /** 
+     * Binary property NFC_Inert.
+     * ICU-specific property for characters that are inert under NFC,
+     * i.e., they do not interact with adjacent characters.
+     * Used for example in normalizing transforms in incremental mode
+     * to find the boundary of safely normalizable text despite possible
+     * text additions.
+     * @see #NFD_INERT
+     * @stable ICU 3.0 
+     */
+    public static final int NFC_INERT = 39;
+
+    /** 
+     * Binary property NFKC_Inert.
+     * ICU-specific property for characters that are inert under NFKC,
+     * i.e., they do not interact with adjacent characters.
+     * Used for example in normalizing transforms in incremental mode
+     * to find the boundary of safely normalizable text despite possible
+     * text additions.
+     * @see #NFD_INERT
+     * @stable ICU 3.0 
+     */
+    public static final int NFKC_INERT = 40;
+
+    /**
+     * Binary Property Segment_Starter.
+     * ICU-specific property for characters that are starters in terms of
+     * Unicode normalization and combining character sequences.
+     * They have ccc=0 and do not occur in non-initial position of the
+     * canonical decomposition of any character
+     * (like " in NFD(a-umlaut) and a Jamo T in an NFD(Hangul LVT)).
+     * ICU uses this property for segmenting a string for generating a set of
+     * canonically equivalent strings, e.g. for canonical closure while
+     * processing collation tailoring rules.
+     * @stable ICU 3.0 
+     */
+    public static final int SEGMENT_STARTER = 41;
+
+    /**
+     * Binary property Pattern_Syntax (new in Unicode 4.1).
+     * See UAX #31 Identifier and Pattern Syntax
+     * (http://www.unicode.org/reports/tr31/)
+     * @stable ICU 3.4
+     */
+    public static final int PATTERN_SYNTAX = 42;
+
+    /**
+     * Binary property Pattern_White_Space (new in Unicode 4.1).
+     * See UAX #31 Identifier and Pattern Syntax
+     * (http://www.unicode.org/reports/tr31/)
+     * @stable ICU 3.4
+     */
+    public static final int PATTERN_WHITE_SPACE = 43;
+
+    /**
+     * Binary property alnum (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_ALNUM = 44;
+
+    /**
+     * Binary property blank (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_BLANK = 45;
+
+    /**
+     * Binary property graph (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_GRAPH = 46;
+
+    /**
+     * Binary property print (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_PRINT = 47;
+
+    /**
+     * Binary property xdigit (a C/POSIX character class).
+     * Implemented according to the UTS #18 Annex C Standard Recommendation.
+     * See the UCharacter class documentation.
+     * @stable ICU 3.4
+     */
+    public static final int POSIX_XDIGIT = 48;
+
+    /** 
+     * <p>One more than the last constant for binary Unicode properties.</p> 
+     * @stable ICU 2.6
+     */
+    public static final int BINARY_LIMIT = 49;
+    
+    /** 
+     * Enumerated property Bidi_Class.
+     * Same as UCharacter.getDirection(int), returns UCharacterDirection values. 
+     * @stable ICU 2.4 
+     */
+    public static final int BIDI_CLASS = 0x1000;
+
+    /** 
+     * First constant for enumerated/integer Unicode properties. 
+     * @stable ICU 2.4
+     */
+    public static final int INT_START = BIDI_CLASS;
+
+    /** 
+     * Enumerated property Block.
+     * Same as UCharacter.UnicodeBlock.of(int), returns UCharacter.UnicodeBlock 
+     * values. 
+     * @stable ICU 2.4 
+     */
+    public static final int BLOCK = 0x1001;
+
+    /** 
+     * Enumerated property Canonical_Combining_Class.
+     * Same as UCharacter.getCombiningClass(int), returns 8-bit numeric values. 
+     * @stable ICU 2.4 
+     */
+    public static final int CANONICAL_COMBINING_CLASS = 0x1002;
+
+    /** 
+     * Enumerated property Decomposition_Type.
+     * Returns UCharacter.DecompositionType values. 
+     * @stable ICU 2.4
+     */
+    public static final int DECOMPOSITION_TYPE = 0x1003;
+
+    /** 
+     * Enumerated property East_Asian_Width.
+     * See http://www.unicode.org/reports/tr11/
+     * Returns UCharacter.EastAsianWidth values. 
+     * @stable ICU 2.4 
+     */
+    public static final int EAST_ASIAN_WIDTH = 0x1004;
+
+    /** 
+     * Enumerated property General_Category.
+     * Same as UCharacter.getType(int), returns UCharacterCategory values. 
+     * @stable ICU 2.4 
+     */
+    public static final int GENERAL_CATEGORY = 0x1005;
+
+    /** 
+     * Enumerated property Joining_Group.
+     * Returns UCharacter.JoiningGroup values. 
+     * @stable ICU 2.4 
+     */
+    public static final int JOINING_GROUP = 0x1006;
+
+    /** 
+     * Enumerated property Joining_Type.
+     * Returns UCharacter.JoiningType values. 
+     * @stable ICU 2.4 
+     */
+    public static final int JOINING_TYPE = 0x1007;
+
+    /** 
+     * Enumerated property Line_Break.
+     * Returns UCharacter.LineBreak values. 
+     * @stable ICU 2.4 
+     */
+    public static final int LINE_BREAK = 0x1008;
+
+    /** 
+     * Enumerated property Numeric_Type.
+     * Returns UCharacter.NumericType values. 
+     * @stable ICU 2.4 
+     */
+    public static final int NUMERIC_TYPE = 0x1009;
+
+    /** 
+     * Enumerated property Script.
+     * Same as UScript.getScript(int), returns UScript values. 
+     * @stable ICU 2.4 
+     */
+    public static final int SCRIPT = 0x100A;
+    
+    /** 
+     * Enumerated property Hangul_Syllable_Type, new in Unicode 4.
+     * Returns HangulSyllableType values. 
+     * @stable ICU 2.6 
+     */
+    public static final int HANGUL_SYLLABLE_TYPE = 0x100B;
+
+    /**
+     * Enumerated property NFD_Quick_Check.
+     * Returns numeric values compatible with Normalizer.QuickCheckResult.
+     * @stable ICU 3.0
+     */
+    public static final int NFD_QUICK_CHECK = 0x100C;
+
+    /**
+     * Enumerated property NFKD_Quick_Check.
+     * Returns numeric values compatible with Normalizer.QuickCheckResult.
+     * @stable ICU 3.0
+     */
+    public static final int NFKD_QUICK_CHECK = 0x100D;
+
+    /**
+     * Enumerated property NFC_Quick_Check.
+     * Returns numeric values compatible with Normalizer.QuickCheckResult.
+     * @stable ICU 3.0
+     */
+    public static final int NFC_QUICK_CHECK = 0x100E;
+
+    /**
+     * Enumerated property NFKC_Quick_Check.
+     * Returns numeric values compatible with Normalizer.QuickCheckResult.
+     * @stable ICU 3.0
+     */
+    public static final int NFKC_QUICK_CHECK = 0x100F;
+
+    /**
+     * Enumerated property Lead_Canonical_Combining_Class.
+     * ICU-specific property for the ccc of the first code point
+     * of the decomposition, or lccc(c)=ccc(NFD(c)[0]).
+     * Useful for checking for canonically ordered text;
+     * see Normalizer.FCD and http://www.unicode.org/notes/tn5/#FCD .
+     * Returns 8-bit numeric values like CANONICAL_COMBINING_CLASS.
+     * @stable ICU 3.0
+     */
+    public static final int LEAD_CANONICAL_COMBINING_CLASS = 0x1010;
+
+    /**
+     * Enumerated property Trail_Canonical_Combining_Class.
+     * ICU-specific property for the ccc of the last code point
+     * of the decomposition, or lccc(c)=ccc(NFD(c)[last]).
+     * Useful for checking for canonically ordered text;
+     * see Normalizer.FCD and http://www.unicode.org/notes/tn5/#FCD .
+     * Returns 8-bit numeric values like CANONICAL_COMBINING_CLASS.
+     * @stable ICU 3.0
+     */
+    public static final int TRAIL_CANONICAL_COMBINING_CLASS = 0x1011;
+
+    /**
+     * Enumerated property Grapheme_Cluster_Break (new in Unicode 4.1).
+     * Used in UAX #29: Text Boundaries
+     * (http://www.unicode.org/reports/tr29/)
+     * Returns UGraphemeClusterBreak values.
+     * @stable ICU 3.4
+     */
+    public static final int GRAPHEME_CLUSTER_BREAK = 0x1012;
+
+    /**
+     * Enumerated property Sentence_Break (new in Unicode 4.1).
+     * Used in UAX #29: Text Boundaries
+     * (http://www.unicode.org/reports/tr29/)
+     * Returns USentenceBreak values.
+     * @stable ICU 3.4
+     */
+    public static final int SENTENCE_BREAK = 0x1013;
+
+    /**
+     * Enumerated property Word_Break (new in Unicode 4.1).
+     * Used in UAX #29: Text Boundaries
+     * (http://www.unicode.org/reports/tr29/)
+     * Returns UWordBreakValues values.
+     * @stable ICU 3.4
+     */
+    public static final int WORD_BREAK = 0x1014;
+
+    /** 
+     * One more than the last constant for enumerated/integer Unicode 
+     * properties. 
+     * @stable ICU 2.4 
+     */
+    public static final int INT_LIMIT = 0x1015;
+
+    /** 
+     * Bitmask property General_Category_Mask.
+     * This is the General_Category property returned as a bit mask.
+     * When used in UCharacter.getIntPropertyValue(c),
+     * returns bit masks for UCharacterCategory values where exactly one bit is set. 
+     * When used with UCharacter.getPropertyValueName() and UCharacter.getPropertyValueEnum(), 
+     * a multi-bit mask is used for sets of categories like "Letters". 
+     * @stable ICU 2.4
+     */ 
+    public static final int GENERAL_CATEGORY_MASK = 0x2000; 
+
+    /** 
+     * First constant for bit-mask Unicode properties. 
+     * @stable ICU 2.4
+     */
+    public static final int MASK_START = GENERAL_CATEGORY_MASK;
+
+    /** 
+     * One more than the last constant for bit-mask Unicode properties. 
+     * @stable ICU 2.4
+     */ 
+    public static final int MASK_LIMIT = 0x2001; 
+    
+    /**
+     * Double property Numeric_Value.
+     * Corresponds to UCharacter.getUnicodeNumericValue(int).
+     * @stable ICU 2.4
+     */
+    public static final int NUMERIC_VALUE = 0x3000;
+
+    /**
+     * First constant for double Unicode properties.
+     * @stable ICU 2.4
+     */
+    public static final int DOUBLE_START = NUMERIC_VALUE;
+
+    /**
+     * One more than the last constant for double Unicode properties.
+     * @stable ICU 2.4
+     */
+    public static final int DOUBLE_LIMIT = 0x3001;
+
+    /**
+     * String property Age.
+     * Corresponds to UCharacter.getAge(int).
+     * @stable ICU 2.4
+     */
+    public static final int AGE = 0x4000;
+
+    /**
+     * First constant for string Unicode properties.
+     * @stable ICU 2.4
+     */
+    public static final int STRING_START = AGE;
+
+    /**
+     * String property Bidi_Mirroring_Glyph.
+     * Corresponds to UCharacter.getMirror(int).
+     * @stable ICU 2.4
+     */
+    public static final int BIDI_MIRRORING_GLYPH = 0x4001;
+
+    /**
+     * String property Case_Folding.
+     * Corresponds to UCharacter.foldCase(String, boolean).
+     * @stable ICU 2.4
+     */
+    public static final int CASE_FOLDING = 0x4002;
+
+    /**
+     * String property ISO_Comment.
+     * Corresponds to UCharacter.getISOComment(int).
+     * @stable ICU 2.4
+     */
+    public static final int ISO_COMMENT = 0x4003;
+
+    /**
+     * String property Lowercase_Mapping.
+     * Corresponds to UCharacter.toLowerCase(String).
+     * @stable ICU 2.4
+     */
+    public static final int LOWERCASE_MAPPING = 0x4004;
+
+    /**
+     * String property Name.
+     * Corresponds to UCharacter.getName(int).
+     * @stable ICU 2.4
+     */
+    public static final int NAME = 0x4005;
+
+    /**
+     * String property Simple_Case_Folding.
+     * Corresponds to UCharacter.foldCase(int, boolean).
+     * @stable ICU 2.4
+     */
+    public static final int SIMPLE_CASE_FOLDING = 0x4006;
+
+    /**
+     * String property Simple_Lowercase_Mapping.
+     * Corresponds to UCharacter.toLowerCase(int).
+     * @stable ICU 2.4
+     */
+    public static final int SIMPLE_LOWERCASE_MAPPING = 0x4007;
+
+    /**
+     * String property Simple_Titlecase_Mapping.
+     * Corresponds to UCharacter.toTitleCase(int).
+     * @stable ICU 2.4
+     */
+    public static final int SIMPLE_TITLECASE_MAPPING = 0x4008;
+
+    /**
+     * String property Simple_Uppercase_Mapping.
+     * Corresponds to UCharacter.toUpperCase(int).
+     * @stable ICU 2.4
+     */
+    public static final int SIMPLE_UPPERCASE_MAPPING = 0x4009;
+
+    /**
+     * String property Titlecase_Mapping.
+     * Corresponds to UCharacter.toTitleCase(String).
+     * @stable ICU 2.4
+     */
+    public static final int TITLECASE_MAPPING = 0x400A;
+
+    /**
+     * String property Unicode_1_Name.
+     * Corresponds to UCharacter.getName1_0(int).
+     * @stable ICU 2.4
+     */
+    public static final int UNICODE_1_NAME = 0x400B;
+
+    /**
+     * String property Uppercase_Mapping.
+     * Corresponds to UCharacter.toUpperCase(String).
+     * @stable ICU 2.4
+     */
+    public static final int UPPERCASE_MAPPING = 0x400C;
+
+    /**
+     * One more than the last constant for string Unicode properties.
+     * @stable ICU 2.4
+     */
+    public static final int STRING_LIMIT = 0x400D;
+
+    /**
+     * Selector constants for UCharacter.getPropertyName() and
+     * UCharacter.getPropertyValueName().  These selectors are used to
+     * choose which name is returned for a given property or value.
+     * All properties and values have a long name.  Most have a short
+     * name, but some do not.  Unicode allows for additional names,
+     * beyond the long and short name, which would be indicated by
+     * LONG + i, where i=1, 2,...
+     *
+     * @see UCharacter#getPropertyName
+     * @see UCharacter#getPropertyValueName
+     * @stable ICU 2.4
+     */
+    public interface NameChoice {
+        /**
+         * Selector for the abbreviated name of a property or value.
+         * Most properties and values have a short name; those that do
+         * not return null.
+         * @stable ICU 2.4
+         */
+        static final int SHORT = 0;
+
+        /**
+         * Selector for the long name of a property or value.  All
+         * properties and values have a long name.
+         * @stable ICU 2.4
+         */
+        static final int LONG = 1;
+
+        /**
+         * The number of predefined property name choices.  Individual
+         * properties or values may have more than COUNT aliases.
+         * @stable ICU 2.4
+         */
+        static final int COUNT = 2;
+    }
+}
diff --git a/src/com/ibm/icu/lang/UScript.java b/src/com/ibm/icu/lang/UScript.java
new file mode 100644
index 0000000..fa5a7c7
--- /dev/null
+++ b/src/com/ibm/icu/lang/UScript.java
@@ -0,0 +1,896 @@
+/**
+*******************************************************************************
+* Copyright (C) 2001-2008 International Business Machines Corporation and     *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+/**
+ * A class to reflect UTR #24: Script Names
+ * (based on ISO 15924:2000, "Code for the representation of names of
+ * scripts").  UTR #24 describes the basis for a new Unicode data file,
+ * Scripts.txt.
+ * @stable ICU 2.4
+ */
+public final class UScript {
+    /**
+     * Invalid code
+     * @stable ICU 2.4
+     */
+    public static final int INVALID_CODE = -1;
+    /**
+     * Common
+     * @stable ICU 2.4
+     */
+    public static final int COMMON       =  0;  /* Zyyy */
+    /**
+     * Inherited
+     * @stable ICU 2.4
+     */
+    public static final int INHERITED    =  1;  /* Qaai */
+    /**
+     * Arabic
+     * @stable ICU 2.4
+     */
+    public static final int ARABIC       =  2;  /* Arab */
+    /**
+     * Armenian
+     * @stable ICU 2.4
+     */
+    public static final int ARMENIAN     =  3;  /* Armn */
+    /**
+     * Bengali
+     * @stable ICU 2.4
+     */
+    public static final int BENGALI      =  4;  /* Beng */
+    /**
+     * Bopomofo
+     * @stable ICU 2.4
+     */
+    public static final int BOPOMOFO     =  5;  /* Bopo */
+    /**
+     * Cherokee
+     * @stable ICU 2.4
+     */
+    public static final int CHEROKEE     =  6;  /* Cher */
+    /**
+     * Coptic
+     * @stable ICU 2.4
+     */
+    public static final int COPTIC       =  7;  /* Qaac */
+    /**
+     * Cyrillic
+     * @stable ICU 2.4
+     */
+    public static final int CYRILLIC     =  8;  /* Cyrl (Cyrs) */
+    /**
+     * Deseret
+     * @stable ICU 2.4
+     */
+    public static final int DESERET      =  9;  /* Dsrt */
+    /**
+     * Devanagari
+     * @stable ICU 2.4
+     */
+    public static final int DEVANAGARI   = 10;  /* Deva */
+    /**
+     * Ethiopic
+     * @stable ICU 2.4
+     */
+    public static final int ETHIOPIC     = 11;  /* Ethi */
+    /**
+     * Georgian
+     * @stable ICU 2.4
+     */
+    public static final int GEORGIAN     = 12;  /* Geor (Geon; Geoa) */
+    /**
+     * Gothic
+     * @stable ICU 2.4
+     */
+    public static final int GOTHIC       = 13;  /* Goth */
+    /**
+     * Greek
+     * @stable ICU 2.4
+     */
+    public static final int GREEK        = 14;  /* Grek */
+    /**
+     * Gujarati
+     * @stable ICU 2.4
+     */
+    public static final int GUJARATI     = 15;  /* Gujr */
+    /**
+     * Gurmukhi
+     * @stable ICU 2.4
+     */
+    public static final int GURMUKHI     = 16;  /* Guru */
+    /**
+     * Han
+     * @stable ICU 2.4
+     */
+    public static final int HAN          = 17;  /* Hani */
+    /**
+     * Hangul
+     * @stable ICU 2.4
+     */
+    public static final int HANGUL       = 18;  /* Hang */
+    /**
+     * Hebrew
+     * @stable ICU 2.4
+     */
+    public static final int HEBREW       = 19;  /* Hebr */
+    /**
+     * Hiragana
+     * @stable ICU 2.4
+     */
+    public static final int HIRAGANA     = 20;  /* Hira */
+    /**
+     * Kannada
+     * @stable ICU 2.4
+     */
+    public static final int KANNADA      = 21;  /* Knda */
+    /**
+     * Katakana
+     * @stable ICU 2.4
+     */
+    public static final int KATAKANA     = 22;  /* Kana */
+    /**
+     * Khmer
+     * @stable ICU 2.4
+     */
+    public static final int KHMER        = 23;  /* Khmr */
+    /**
+     * Lao
+     * @stable ICU 2.4
+     */
+    public static final int LAO          = 24;  /* Laoo */
+    /**
+     * Latin
+     * @stable ICU 2.4
+     */
+    public static final int LATIN        = 25;  /* Latn (Latf; Latg) */
+    /**
+     * Malayalam
+     * @stable ICU 2.4
+     */
+    public static final int MALAYALAM    = 26;  /* Mlym */
+    /**
+     * Mangolian
+     * @stable ICU 2.4
+     */
+    public static final int MONGOLIAN    = 27;  /* Mong */
+    /**
+     * Myammar
+     * @stable ICU 2.4
+     */
+    public static final int MYANMAR      = 28;  /* Mymr */
+    /**
+     * Ogham
+     * @stable ICU 2.4
+     */
+    public static final int OGHAM        = 29;  /* Ogam */
+    /**
+     * Old Itallic
+     * @stable ICU 2.4
+     */
+    public static final int OLD_ITALIC   = 30;  /* Ital */
+    /**
+     * Oriya
+     * @stable ICU 2.4
+     */
+    public static final int ORIYA        = 31;  /* Orya */
+    /**
+     * Runic
+     * @stable ICU 2.4
+     */
+    public static final int RUNIC        = 32;  /* Runr */
+    /**
+     * Sinhala
+     * @stable ICU 2.4
+     */
+    public static final int SINHALA      = 33;  /* Sinh */
+    /**
+     * Syriac
+     * @stable ICU 2.4
+     */
+    public static final int SYRIAC       = 34;  /* Syrc (Syrj; Syrn; Syre) */
+    /**
+     * Tamil
+     * @stable ICU 2.4
+     */
+    public static final int TAMIL        = 35;  /* Taml */
+    /**
+     * Telugu
+     * @stable ICU 2.4
+     */
+    public static final int TELUGU       = 36;  /* Telu */
+    /**
+     * Thana
+     * @stable ICU 2.4
+     */
+    public static final int THAANA       = 37;  /* Thaa */
+    /**
+     * Thai
+     * @stable ICU 2.4
+     */
+    public static final int THAI         = 38;  /* Thai */
+    /**
+     * Tibetan
+     * @stable ICU 2.4
+     */
+    public static final int TIBETAN      = 39;  /* Tibt */
+    /**
+     * Unified Canadian Aboriginal Symbols
+     * @stable ICU 2.6
+     */
+    public static final int CANADIAN_ABORIGINAL = 40;  /* Cans */
+    /**
+     * Unified Canadian Aboriginal Symbols (alias)
+     * @stable ICU 2.4
+     */
+    public static final int UCAS         = CANADIAN_ABORIGINAL;  /* Cans */
+    /**
+     * Yi syllables
+     * @stable ICU 2.4
+     */
+    public static final int YI           = 41;  /* Yiii */
+    /**
+     * Tagalog
+     * @stable ICU 2.4
+     */
+    public static final int TAGALOG      = 42;  /* Tglg */
+    /**
+     * Hanunooo
+     * @stable ICU 2.4
+     */
+    public static final int HANUNOO      = 43;  /* Hano */
+    /**
+     * Buhid
+     * @stable ICU 2.4
+     */
+    public static final int BUHID        = 44;  /* Buhd */
+    /**
+     * Tagbanwa
+     * @stable ICU 2.4
+     */
+    public static final int TAGBANWA     = 45;  /* Tagb */
+    /**
+     * Braille
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int BRAILLE      = 46;  /* Brai */
+    /**
+     * Cypriot
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */  
+    public static final int CYPRIOT              = 47;  /* Cprt */ 
+    /**
+     * Limbu
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */       
+    public static final int LIMBU                = 48;  /* Limb */ 
+    /**
+     * Linear B
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int LINEAR_B     = 49;  /* Linb */ 
+    /**
+     * Osmanya
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int OSMANYA              = 50;  /* Osma */ 
+    /**
+     * Shavian
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int SHAVIAN              = 51;  /* Shaw */ 
+    /**
+     * Tai Le
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int TAI_LE               = 52;  /* Tale */ 
+    /**
+     * Ugaritic
+     * Script in Unicode 4 
+     * @stable ICU 2.6 
+     * 
+     */ 
+    public static final int UGARITIC     = 53;  /* Ugar */ 
+    /**
+     * Script in Unicode 4.0.1
+     * @stable ICU 3.0
+     */
+    public static final int KATAKANA_OR_HIRAGANA = 54;  /*Hrkt */
+
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int BUGINESE = 55;           /* Bugi */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int GLAGOLITIC = 56;         /* Glag */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int KHAROSHTHI = 57;         /* Khar */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int SYLOTI_NAGRI = 58;       /* Sylo */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int NEW_TAI_LUE = 59;        /* Talu */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int TIFINAGH = 60;           /* Tfng */
+    /**
+     * Script in Unicode 4.1
+     * @stable ICU 3.4
+     */
+    public static final int OLD_PERSIAN = 61;        /* Xpeo */
+
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int BALINESE                      = 62; /* Bali */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int BATAK                         = 63; /* Batk */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int BLISSYMBOLS                   = 64; /* Blis */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int BRAHMI                        = 65; /* Brah */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int CHAM                          = 66; /* Cham */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int CIRTH                         = 67; /* Cirt */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int OLD_CHURCH_SLAVONIC_CYRILLIC  = 68; /* Cyrs */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int DEMOTIC_EGYPTIAN              = 69; /* Egyd */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int HIERATIC_EGYPTIAN             = 70; /* Egyh */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int EGYPTIAN_HIEROGLYPHS          = 71; /* Egyp */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int KHUTSURI                      = 72; /* Geok */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int SIMPLIFIED_HAN                = 73; /* Hans */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int TRADITIONAL_HAN               = 74; /* Hant */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int PAHAWH_HMONG                  = 75; /* Hmng */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int OLD_HUNGARIAN                 = 76; /* Hung */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int HARAPPAN_INDUS                = 77; /* Inds */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int JAVANESE                      = 78; /* Java */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int KAYAH_LI                      = 79; /* Kali */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int LATIN_FRAKTUR                 = 80; /* Latf */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int LATIN_GAELIC                  = 81; /* Latg */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int LEPCHA                        = 82; /* Lepc */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int LINEAR_A                      = 83; /* Lina */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int MANDAEAN                      = 84; /* Mand */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int MAYAN_HIEROGLYPHS             = 85; /* Maya */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int MEROITIC                      = 86; /* Mero */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int NKO                           = 87; /* Nkoo */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int ORKHON                        = 88; /* Orkh */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int OLD_PERMIC                    = 89; /* Perm */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int PHAGS_PA                      = 90; /* Phag */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int PHOENICIAN                    = 91; /* Phnx */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int PHONETIC_POLLARD              = 92; /* Plrd */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int RONGORONGO                    = 93; /* Roro */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int SARATI                        = 94; /* Sara */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int ESTRANGELO_SYRIAC             = 95; /* Syre */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int WESTERN_SYRIAC                = 96; /* Syrj */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int EASTERN_SYRIAC                = 97; /* Syrn */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int TENGWAR                       = 98; /* Teng */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int VAI                           = 99; /* Vaii */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int VISIBLE_SPEECH                = 100;/* Visp */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int CUNEIFORM                     = 101;/* Xsux */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int UNWRITTEN_LANGUAGES           = 102;/* Zxxx */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.6
+     */
+    public static final int UNKNOWN                       = 103;/* Zzzz */ /* Unknown="Code for uncoded script", for unassigned code points */
+    
+    /* Private use codes from Qaaa - Qabx are not supported*/
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */ 
+    public static final int CARIAN                        = 104;/* Cari */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int JAPANESE                      = 105;/* Jpan */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int LANNA                         = 106;/* Lana */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int LYCIAN                        = 107;/* Lyci */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int LYDIAN                        = 108;/* Lydi */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int OL_CHIKI                      = 109;/* Olck */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int REJANG                        = 110;/* Rjng */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int SAURASHTRA                    = 111;/* Saur */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int SIGN_WRITING                  = 112;/* Sgnw */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int SUNDANESE                     = 113;/* Sund */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int MOON                          = 114;/* Moon */
+    /**
+     * ISO 15924 script code
+     * @stable ICU 3.8
+     */
+    public static final int MEITEI_MAYEK                  = 115;/* Mtei */
+    
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int IMPERIAL_ARAMAIC              = 116;/* Armi */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int AVESTAN                       = 117;/* Avst */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int CHAKMA                        = 118;/* Cakm */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int KOREAN                        = 119;/* Kore */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int KAITHI                        = 120;/* Kthi */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int MANICHAEAN                    = 121;/* Mani */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int INSCRIPTIONAL_PAHLAVI         = 122;/* Phli */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int PSALTER_PAHLAVI               = 123;/* Phlp */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int BOOK_PAHLAVI                  = 124;/* Phlv */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int INSCRIPTIONAL_PARTHIAN        = 125;/* Prti */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int SAMARITAN                     = 126;/* Samr */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int TAI_VIET                      = 127;/* Tavt */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int MATHEMATICAL_NOTATION         = 128;/* Zmth */
+
+    /**
+     * ISO 15924 script code
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int SYMBOLS                       = 129;/* Zsym */
+    /**
+     * Limit
+     * @stable ICU 2.4
+     */
+    public static final int CODE_LIMIT   = 130;
+
+    private static final int SCRIPT_MASK   = 0x0000007f;
+    private static final UCharacterProperty prop= UCharacterProperty.getInstance();
+    private static final String kLocaleScript = "LocaleScript";
+    
+    //private static final String INVALID_NAME = "Invalid";
+    /**
+     * Helper function to find the code from locale.
+     * @param locale The locale.
+     */
+    private static int[] findCodeFromLocale(ULocale locale) {
+        ICUResourceBundle rb;
+        try {
+            rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        }
+        catch (MissingResourceException e) {
+            return null;
+        }
+        
+        // if rb is not a strict fallback of the requested locale, return null
+        //if(!LocaleUtility.isFallbackOf(rb.getULocale().toString(), locale.toString())){
+        //    return null;
+        //}
+        //non existent locale check
+        if(rb.getLoadingStatus()==ICUResourceBundle.FROM_DEFAULT && ! locale.equals(ULocale.getDefault())){
+            return null;
+        }
+        UResourceBundle sub = rb.get(kLocaleScript);
+        
+        int[] result = new int[sub.getSize()];
+        int w = 0;
+        for (int i = 0; i < result.length; ++i) {
+            int code = UCharacter.getPropertyValueEnum(UProperty.SCRIPT,
+                                                       sub.getString(i));
+            result[w++] = code;
+
+        }
+
+        if (w < result.length) {
+            throw new IllegalStateException("bad locale data, listed " + 
+                 result.length + " scripts but found only " + w);
+        }
+
+        return result;
+    }
+
+    /**
+     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     * Returns LATIN given "en" OR "en_US"
+     * @param locale Locale
+     * @return The script codes array. null if the the code cannot be found.
+     * @stable ICU 2.4
+     */
+    public static final int[] getCode(Locale locale){
+        return findCodeFromLocale(ULocale.forLocale(locale));
+    }
+    /**
+     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     * Returns LATIN given "en" OR "en_US"
+     * @param locale ULocale
+     * @return The script codes array. null if the the code cannot be found.
+     * @stable ICU 3.0
+     */
+    public static final int[] getCode(ULocale locale){
+        return findCodeFromLocale(locale);
+    }
+    /**
+     * Gets a script codes associated with the given locale or ISO 15924 abbreviation or name.
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     * Returns LATIN given "en" OR "en_US"
+     *
+     * <p>Note: To search by short or long script alias only, use
+     * UCharacater.getPropertyValueEnum(UProperty.SCRIPT, alias)
+     * instead.  This does a fast lookup with no access of the locale
+     * data.
+     * @param nameOrAbbrOrLocale name of the script or ISO 15924 code or locale
+     * @return The script codes array. null if the the code cannot be found.
+     * @stable ICU 2.4
+     */
+    public static final int[] getCode(String nameOrAbbrOrLocale){
+        try {
+            return new int[] {
+                UCharacter.getPropertyValueEnum(UProperty.SCRIPT,
+                                                nameOrAbbrOrLocale)
+            };
+        } catch (IllegalArgumentException e) {
+            return findCodeFromLocale(new ULocale(nameOrAbbrOrLocale));
+        }
+    }
+
+    /**
+     * Gets a script codes associated with the given ISO 15924 abbreviation or name.
+     * Returns MALAYAM given "Malayam" OR "Mlym".
+     *
+     * @param nameOrAbbr name of the script or ISO 15924 code
+     * @return The script code value or INVALID_CODE if the code cannot be found.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int getCodeFromName(String nameOrAbbr) {
+        try {
+            return UCharacter.getPropertyValueEnum(UProperty.SCRIPT,
+                                                   nameOrAbbr);
+        } catch (IllegalArgumentException e) {
+            return INVALID_CODE;
+        }
+    }
+
+    /**
+     * Gets the script code associated with the given codepoint.
+     * Returns UScript.MALAYAM given 0x0D02
+     * @param codepoint UChar32 codepoint
+     * @return The script code
+     * @stable ICU 2.4
+     */
+    public static final int getScript(int codepoint){
+        if (codepoint >= UCharacter.MIN_VALUE & codepoint <= UCharacter.MAX_VALUE) {
+            return (prop.getAdditional(codepoint,0) & SCRIPT_MASK);
+        }else{
+            throw new IllegalArgumentException(Integer.toString(codepoint));
+        }
+    }
+
+    /**
+     * Gets a script name associated with the given script code.
+     * Returns  "Malayam" given MALAYAM
+     * @param scriptCode int script code
+     * @return script name as a string in full as given in TR#24
+     * @stable ICU 2.4
+     */
+    public static final String getName(int scriptCode){
+        return UCharacter.getPropertyValueName(UProperty.SCRIPT,
+                                               scriptCode,
+                                               UProperty.NameChoice.LONG);
+    }
+
+    /**
+     * Gets a script name associated with the given script code.
+     * Returns  "Mlym" given MALAYAM
+     * @param scriptCode int script code
+     * @return script abbreviated name as a string  as given in TR#24
+     * @stable ICU 2.4
+     */
+    public static final String getShortName(int scriptCode){
+        return UCharacter.getPropertyValueName(UProperty.SCRIPT,
+                                               scriptCode,
+                                               UProperty.NameChoice.SHORT);
+    }
+    ///CLOVER:OFF
+    /**
+     *  Private Constructor. Never default construct
+     */
+    private UScript(){}
+    ///CLOVER:ON
+}
diff --git a/src/com/ibm/icu/lang/UScriptRun.java b/src/com/ibm/icu/lang/UScriptRun.java
new file mode 100644
index 0000000..d1dc902
--- /dev/null
+++ b/src/com/ibm/icu/lang/UScriptRun.java
@@ -0,0 +1,628 @@
+/*
+ *******************************************************************************
+ *
+ *   Copyright (C) 1999-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.lang;
+
+import com.ibm.icu.text.UTF16;
+
+/**
+ * <code>UScriptRun</code> is used to find runs of characters in
+ * the same script, as defined in the <code>UScript</code> class.
+ * It implements a simple iterator over an array of characters.
+ * The iterator will assign <code>COMMON</code> and <code>INHERITED</code>
+ * characters to the same script as the preceeding characters. If the
+ * COMMON and INHERITED characters are first, they will be assigned to
+ * the same script as the following characters.
+ *
+ * The iterator will try to match paired punctuation. If it sees an
+ * opening punctuation character, it will remember the script that
+ * was assigned to that character, and assign the same script to the
+ * matching closing punctuation.
+ *
+ * No attempt is made to combine related scripts into a single run. In
+ * particular, Hiragana, Katakana, and Han characters will appear in separate
+ * runs.
+
+ * Here is an example of how to iterate over script runs:
+ * <pre>
+ * void printScriptRuns(char[] text)
+ * {
+ *     UScriptRun scriptRun = new UScriptRun(text);
+ *
+ *     while (scriptRun.next()) {
+ *         int start  = scriptRun.getScriptStart();
+ *         int limit  = scriptRun.getScriptLimit();
+ *         int script = scriptRun.getScriptCode();
+ *
+ *         System.out.println("Script \"" + UScript.getName(script) + "\" from " +
+ *                            start + " to " + limit + ".");
+ *     }
+ *  }
+ * </pre>
+ *
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public final class UScriptRun
+{
+    /**
+     * Construct an empty <code>UScriptRun</code> object. The <code>next()</code>
+     * method will return <code>false</code> the first time it is called.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun()
+    {
+        char[] nullChars = null;
+        
+        reset(nullChars, 0, 0);
+    }
+    
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over the
+     * characters in the given string.
+     *
+     * @param text the string of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun(String text)
+    {
+        reset (text);
+    }
+    
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over a subrange
+     * of the characetrs in the given string.
+     *
+     * @param text the string of characters over which to iterate.
+     * @param start the index of the first character over which to iterate
+     * @param count the number of characters over which to iterate
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun(String text, int start, int count)
+    {
+        reset(text, start, count);
+    }
+
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over the given
+     * characetrs.
+     *
+     * @param chars the array of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun(char[] chars)
+    {
+        reset(chars);
+    }
+
+    /**
+     * Construct a <code>UScriptRun</code> object which iterates over a subrange
+     * of the given characetrs.
+     *
+     * @param chars the array of characters over which to iterate.
+     * @param start the index of the first character over which to iterate
+     * @param count the number of characters over which to iterate
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UScriptRun(char[] chars, int start, int count)
+    {
+        reset(chars, start, count);
+    }
+
+
+    /**
+     * Reset the iterator to the start of the text.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset()
+    {
+        // empty any old parenStack contents.
+        // NOTE: this is not the most efficient way
+        // to do this, but it's the easiest to write...
+        while (stackIsNotEmpty()) {
+            pop();
+        }
+        
+        scriptStart = textStart;
+        scriptLimit = textStart;
+        scriptCode  = UScript.INVALID_CODE;
+        parenSP     = -1;
+        pushCount   =  0;
+        fixupCount  =  0;
+        
+        textIndex = textStart;
+    }
+
+    /**
+     * Reset the iterator to iterate over the given range of the text. Throws
+     * IllegalArgumentException if the range is outside of the bounds of the
+     * character array.
+     *
+     * @param start the index of the new first character over which to iterate
+     * @param count the new number of characters over which to iterate.
+     * @exception IllegalArgumentException
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(int start, int count)
+    throws IllegalArgumentException
+    {
+        int len = 0;
+        
+        if (text != null) {
+            len = text.length;
+        }
+        
+        if (start < 0 || count < 0 || start > len - count) {
+            throw new IllegalArgumentException();
+        }
+        
+        textStart = start;
+        textLimit = start + count;
+
+        reset();
+    }
+
+    /**
+     * Reset the iterator to iterate over <code>count</code> characters
+     * in <code>chars</code> starting at <code>start</code>. This allows
+     * clients to reuse an iterator.
+     *
+     * @param chars the new array of characters over which to iterate.
+     * @param start the index of the first character over which to iterate.
+     * @param count the number of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(char[] chars, int start, int count)
+    {
+        if (chars == null) {
+            chars = emptyCharArray;
+        }
+        
+        text = chars;
+
+        reset(start, count);
+    }
+    
+    /**
+     * Reset the iterator to iterate over the characters
+     * in <code>chars</code>. This allows clients to reuse an iterator.
+     *
+     * @param chars the new array of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(char[] chars)
+    {
+        int length = 0;
+        
+        if (chars != null) {
+            length = chars.length;
+        }
+        
+        reset(chars, 0, length);
+    }
+    
+    /**
+     * Reset the iterator to iterate over <code>count</code> characters
+     * in <code>text</code> starting at <code>start</code>. This allows
+     * clients to reuse an iterator.
+     *
+     * @param str the new string of characters over which to iterate.
+     * @param start the index of the first character over which to iterate.
+     * @param count the nuber of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(String str, int start, int count)
+    {
+        char[] chars = null;
+        
+        if (str != null) {
+            chars = str.toCharArray();
+        }
+        
+        reset(chars, start, count);
+    }
+    
+    /**
+     * Reset the iterator to iterate over the characters
+     * in <code>text</code>. This allows clients to reuse an iterator.
+     *
+     * @param str the new string of characters over which to iterate.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final void reset(String str)
+    {
+        int length   = 0;
+        
+        if (str != null) {
+            length = str.length();
+        }
+        
+        reset(str, 0, length);
+    }
+        
+
+
+    /**
+     * Get the starting index of the current script run.
+     *
+     * @return the index of the first character in the current script run.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final int getScriptStart()
+    {
+        return scriptStart;
+    }
+
+    /**
+     * Get the index of the first character after the current script run.
+     *
+     * @return the index of the first character after the current script run.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final int getScriptLimit()
+    {
+        return scriptLimit;
+    }
+
+    /**
+     * Get the script code for the script of the current script run.
+     *
+     * @return the script code for the script of the current script run.
+     * @see com.ibm.icu.lang.UScript
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final int getScriptCode()
+    {
+        return scriptCode;
+    }
+
+    /**
+     * Find the next script run. Returns <code>false</code> if there
+     * isn't another run, returns <code>true</code> if there is.
+     *
+     * @return <code>false</code> if there isn't another run, <code>true</code> if there is.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final boolean next()
+    {
+        // if we've fallen off the end of the text, we're done
+        if (scriptLimit >= textLimit) {
+            return false;
+        }
+    
+        scriptCode  = UScript.COMMON;
+        scriptStart = scriptLimit;
+        
+        syncFixup();
+        
+        while (textIndex < textLimit) {
+            int ch = UTF16.charAt(text, textStart, textLimit, textIndex - textStart);
+            int codePointCount = UTF16.getCharCount(ch);
+            int sc = UScript.getScript(ch);
+            int pairIndex = getPairIndex(ch);
+
+            textIndex += codePointCount;
+            
+            // Paired character handling:
+            //
+            // if it's an open character, push it onto the stack.
+            // if it's a close character, find the matching open on the
+            // stack, and use that script code. Any non-matching open
+            // characters above it on the stack will be poped.
+            if (pairIndex >= 0) {
+                if ((pairIndex & 1) == 0) {
+                    push(pairIndex, scriptCode);
+                } else {
+                    int pi = pairIndex & ~1;
+
+                    while (stackIsNotEmpty() && top().pairIndex != pi) {
+                        pop();
+                    }
+
+                    if (stackIsNotEmpty()) {
+                        sc = top().scriptCode;
+                    }
+                }
+            }
+
+            if (sameScript(scriptCode, sc)) {
+                if (scriptCode <= UScript.INHERITED && sc > UScript.INHERITED) {
+                    scriptCode = sc;
+
+                    fixup(scriptCode);
+                }
+
+                // if this character is a close paired character,
+                // pop the matching open character from the stack
+                if (pairIndex >= 0 && (pairIndex & 1) != 0) {
+                    pop();
+                }
+            } else {
+                // We've just seen the first character of
+                // the next run. Back over it so we'll see
+                // it again the next time.
+                textIndex -= codePointCount;
+                break;
+            }
+        }
+
+        scriptLimit = textIndex;
+        return true;
+    }
+
+    /**
+     * Compare two script codes to see if they are in the same script. If one script is
+     * a strong script, and the other is INHERITED or COMMON, it will compare equal.
+     *
+     * @param scriptOne one of the script codes.
+     * @param scriptTwo the other script code.
+     * @return <code>true</code> if the two scripts are the same.
+     * @see com.ibm.icu.lang.UScript
+     */
+    private static boolean sameScript(int scriptOne, int scriptTwo)
+    {
+        return scriptOne <= UScript.INHERITED || scriptTwo <= UScript.INHERITED || scriptOne == scriptTwo;
+    }
+
+    /*
+     * An internal class which holds entries on the paren stack.
+     */
+    private static final class ParenStackEntry
+    {
+        int pairIndex;
+        int scriptCode;
+        
+        public ParenStackEntry(int thePairIndex, int theScriptCode)
+        {
+            pairIndex  = thePairIndex;
+            scriptCode = theScriptCode;
+        }
+    }
+    
+    private static final int mod(int sp)
+    {
+        return sp % PAREN_STACK_DEPTH;
+    }
+    
+    private static final int inc(int sp, int count)
+    {
+        return mod(sp + count);
+    }
+    
+    private static final int inc(int sp)
+    {
+        return inc(sp, 1);
+    }
+    
+    private static final int dec(int sp, int count)
+    {
+        return mod(sp + PAREN_STACK_DEPTH - count);
+    }
+    
+    private static final int dec(int sp)
+    {
+        return dec(sp, 1);
+    }
+    
+    private static final int limitInc(int count)
+    {
+        if (count < PAREN_STACK_DEPTH) {
+            count += 1;
+        }
+        
+        return count;
+    }
+    
+    private final boolean stackIsEmpty()
+    {
+        return pushCount <= 0;
+    }
+    
+    private final boolean stackIsNotEmpty()
+    {
+        return ! stackIsEmpty();
+    }
+    
+    private final void push(int pairIndex, int scrptCode)
+    {
+        pushCount  = limitInc(pushCount);
+        fixupCount = limitInc(fixupCount);
+        
+        parenSP = inc(parenSP);
+        parenStack[parenSP] = new ParenStackEntry(pairIndex, scrptCode);
+    }
+    
+    private final void pop()
+    {
+        
+        if (stackIsEmpty()) {
+            return;
+        }
+        
+        parenStack[parenSP] = null;
+        
+        if (fixupCount > 0) {
+            fixupCount -= 1;
+        }
+        
+        pushCount -= 1;
+        parenSP = dec(parenSP);
+        
+        // If the stack is now empty, reset the stack
+        // pointers to their initial values.
+        if (stackIsEmpty()) {
+            parenSP = -1;
+        }
+    }
+    
+    private final ParenStackEntry top()
+    {
+        return parenStack[parenSP];
+    }
+    
+    private final void syncFixup()
+    {
+        fixupCount = 0;
+    }
+    
+    private final void fixup(int scrptCode)
+    {
+        int fixupSP = dec(parenSP, fixupCount);
+        
+        while (fixupCount-- > 0) {
+            fixupSP = inc(fixupSP);
+            parenStack[fixupSP].scriptCode = scrptCode;
+        }
+    }
+    
+    private char[] emptyCharArray = {};
+
+    private char[] text;
+
+    private int textIndex;
+    private int  textStart;
+    private int  textLimit;
+    
+    private int  scriptStart;
+    private int  scriptLimit;
+    private int  scriptCode;
+
+    private static int PAREN_STACK_DEPTH = 32;
+    private static ParenStackEntry parenStack[] = new ParenStackEntry[PAREN_STACK_DEPTH];
+    private int parenSP = -1;
+    private int pushCount = 0;
+    private int fixupCount = 0;
+
+    /**
+     * Find the highest bit that's set in a word. Uses a binary search through
+     * the bits.
+     *
+     * @param n the word in which to find the highest bit that's set.
+     * @return the bit number (counting from the low order bit) of the highest bit.
+     */
+    private static final byte highBit(int n)
+    {
+        if (n <= 0) {
+            return -32;
+        }
+
+        byte bit = 0;
+
+        if (n >= 1 << 16) {
+            n >>= 16;
+            bit += 16;
+        }
+
+        if (n >= 1 << 8) {
+            n >>= 8;
+            bit += 8;
+        }
+
+        if (n >= 1 << 4) {
+            n >>= 4;
+            bit += 4;
+        }
+
+        if (n >= 1 << 2) {
+            n >>= 2;
+            bit += 2;
+        }
+
+        if (n >= 1 << 1) {
+            n >>= 1;
+            bit += 1;
+        }
+
+        return bit;
+    }
+
+    /**
+     * Search the pairedChars array for the given character.
+     *
+     * @param ch the character for which to search.
+     * @return the index of the character in the table, or -1 if it's not there.
+     */
+    private static int getPairIndex(int ch)
+    {
+        int probe = pairedCharPower;
+        int index = 0;
+
+        if (ch >= pairedChars[pairedCharExtra]) {
+            index = pairedCharExtra;
+        }
+
+        while (probe > (1 << 0)) {
+            probe >>= 1;
+
+            if (ch >= pairedChars[index + probe]) {
+                index += probe;
+            }
+        }
+
+        if (pairedChars[index] != ch) {
+            index = -1;
+        }
+
+        return index;
+    }
+
+    private static int pairedChars[] = {
+        0x0028, 0x0029, // ascii paired punctuation
+        0x003c, 0x003e,
+        0x005b, 0x005d,
+        0x007b, 0x007d,
+        0x00ab, 0x00bb, // guillemets
+        0x2018, 0x2019, // general punctuation
+        0x201c, 0x201d,
+        0x2039, 0x203a,
+        0x3008, 0x3009, // chinese paired punctuation
+        0x300a, 0x300b,
+        0x300c, 0x300d,
+        0x300e, 0x300f,
+        0x3010, 0x3011,
+        0x3014, 0x3015,
+        0x3016, 0x3017,
+        0x3018, 0x3019,
+        0x301a, 0x301b
+    };
+
+    private static int pairedCharPower = 1 << highBit(pairedChars.length);
+    private static int pairedCharExtra = pairedChars.length - pairedCharPower;
+}
+
diff --git a/src/com/ibm/icu/lang/package.html b/src/com/ibm/icu/lang/package.html
new file mode 100644
index 0000000..913282d
--- /dev/null
+++ b/src/com/ibm/icu/lang/package.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2002, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .lang Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Enhanced character property and surrogate support.</p>
+
+UCharacter supports all characters and properties defined in the latest version of Unicode, including properties of surrogate characters.  It provides new API for querying surrogate characters (represented as int) and also supports the java.lang.Character API.  UScript and UScriptRun provide information about scripts, which is not available through the Java APIs.</p>
+</body>
+</html>
diff --git a/src/com/ibm/icu/math/BigDecimal.java b/src/com/ibm/icu/math/BigDecimal.java
new file mode 100644
index 0000000..87142e1
--- /dev/null
+++ b/src/com/ibm/icu/math/BigDecimal.java
@@ -0,0 +1,4406 @@
+//##header J2SE15
+/* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */
+/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
+package com.ibm.icu.math;
+import java.math.BigInteger;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+
+/* ------------------------------------------------------------------ */
+/* BigDecimal -- Decimal arithmetic for Java                          */
+/* ------------------------------------------------------------------ */
+/* Copyright IBM Corporation, 1996-2008.  All Rights Reserved.       */
+/*                                                                    */
+/* The BigDecimal class provides immutable arbitrary-precision        */
+/* floating point (including integer) decimal numbers.                */
+/*                                                                    */
+/* As the numbers are decimal, there is an exact correspondence       */
+/* between an instance of a BigDecimal object and its String          */
+/* representation; the BigDecimal class provides direct conversions   */
+/* to and from String and character array objects, and well as        */
+/* conversions to and from the Java primitive types (which may not    */
+/* be exact).                                                         */
+/* ------------------------------------------------------------------ */
+/* Notes:                                                             */
+/*                                                                    */
+/* 1. A BigDecimal object is never changed in value once constructed; */
+/*    this avoids the need for locking.  Note in particular that the  */
+/*    mantissa array may be shared between many BigDecimal objects,   */
+/*    so that once exposed it must not be altered.                    */
+/*                                                                    */
+/* 2. This class looks at MathContext class fields directly (for      */
+/*    performance).  It must not and does not change them.            */
+/*                                                                    */
+/* 3. Exponent checking is delayed until finish(), as we know         */
+/*    intermediate calculations cannot cause 31-bit overflow.         */
+/*    [This assertion depends on MAX_DIGITS in MathContext.]          */
+/*                                                                    */
+/* 4. Comments for the public API now follow the javadoc conventions. */
+/*    The NetRexx -comments option is used to pass these comments     */
+/*    through to the generated Java code (with -format, if desired).  */
+/*                                                                    */
+/* 5. System.arraycopy is faster than explicit loop as follows        */
+/*      Mean length 4:  equal                                         */
+/*      Mean length 8:  x2                                            */
+/*      Mean length 16: x3                                            */
+/*      Mean length 24: x4                                            */
+/*    From prior experience, we expect mean length a little below 8,  */
+/*    but arraycopy is still the one to use, in general, until later  */
+/*    measurements suggest otherwise.                                 */
+/*                                                                    */
+/* 6. 'DMSRCN' referred to below is the original (1981) IBM S/370     */
+/*    assembler code implementation of the algorithms below; it is    */
+/*    now called IXXRCN and is available with the OS/390 and VM/ESA   */
+/*    operating systems.                                              */
+/* ------------------------------------------------------------------ */
+/* Change History:                                                    */
+/* 1997.09.02 Initial version (derived from netrexx.lang classes)     */
+/* 1997.09.12 Add lostDigits checking                                 */
+/* 1997.10.06 Change mantissa to a byte array                         */
+/* 1997.11.22 Rework power [did not prepare arguments, etc.]          */
+/* 1997.12.13 multiply did not prepare arguments                      */
+/* 1997.12.14 add did not prepare and align arguments correctly       */
+/* 1998.05.02 0.07 packaging changes suggested by Sun and Oracle      */
+/* 1998.05.21 adjust remainder operator finalization                  */
+/* 1998.06.04 rework to pass MathContext to finish() and round()      */
+/* 1998.06.06 change format to use round(); support rounding modes    */
+/* 1998.06.25 rename to BigDecimal and begin merge                    */
+/*            zero can now have trailing zeros (i.e., exp\=0)         */
+/* 1998.06.28 new methods: movePointXxxx, scale, toBigInteger         */
+/*                         unscaledValue, valueof                     */
+/* 1998.07.01 improve byteaddsub to allow array reuse, etc.           */
+/* 1998.07.01 make null testing explicit to avoid JIT bug [Win32]     */
+/* 1998.07.07 scaled division  [divide(BigDecimal, int, int)]         */
+/* 1998.07.08 setScale, faster equals                                 */
+/* 1998.07.11 allow 1E6 (no sign) <sigh>; new double/float conversion */
+/* 1998.10.12 change package to com.ibm.icu.math                          */
+/* 1998.12.14 power operator no longer rounds RHS [to match ANSI]     */
+/*            add toBigDecimal() and BigDecimal(java.math.BigDecimal) */
+/* 1998.12.29 improve byteaddsub by using table lookup                */
+/* 1999.02.04 lostdigits=0 behaviour rounds instead of digits+1 guard */
+/* 1999.02.05 cleaner code for BigDecimal(char[])                     */
+/* 1999.02.06 add javadoc comments                                    */
+/* 1999.02.11 format() changed from 7 to 2 method form                */
+/* 1999.03.05 null pointer checking is no longer explicit             */
+/* 1999.03.05 simplify; changes from discussion with J. Bloch:        */
+/*            null no longer permitted for MathContext; drop boolean, */
+/*            byte, char, float, short constructor, deprecate double  */
+/*            constructor, no blanks in string constructor, add       */
+/*            offset and length version of char[] constructor;        */
+/*            add valueOf(double); drop booleanValue, charValue;      */
+/*            add ...Exact versions of remaining convertors           */
+/* 1999.03.13 add toBigIntegerExact                                   */
+/* 1999.03.13 1.00 release to IBM Centre for Java Technology          */
+/* 1999.05.27 1.01 correct 0-0.2 bug under scaled arithmetic          */
+/* 1999.06.29 1.02 constructors should not allow exponent > 9 digits  */
+/* 1999.07.03 1.03 lost digits should not be checked if digits=0      */
+/* 1999.07.06      lost digits Exception message changed              */
+/* 1999.07.10 1.04 more work on 0-0.2 (scaled arithmetic)             */
+/* 1999.07.17      improve messages from pow method                   */
+/* 1999.08.08      performance tweaks                                 */
+/* 1999.08.15      fastpath in multiply                               */
+/* 1999.11.05 1.05 fix problem in intValueExact [e.g., 5555555555]    */
+/* 1999.12.22 1.06 remove multiply fastpath, and improve performance  */
+/* 2000.01.01      copyright update [Y2K has arrived]                 */
+/* 2000.06.18 1.08 no longer deprecate BigDecimal(double)             */
+/* ------------------------------------------------------------------ */
+
+
+
+
+
+/**
+ * The <code>BigDecimal</code> class implements immutable
+ * arbitrary-precision decimal numbers.  The methods of the
+ * <code>BigDecimal</code> class provide operations for fixed and
+ * floating point arithmetic, comparison, format conversions, and
+ * hashing.
+ * <p>
+ * As the numbers are decimal, there is an exact correspondence between
+ * an instance of a <code>BigDecimal</code> object and its
+ * <code>String</code> representation; the <code>BigDecimal</code> class
+ * provides direct conversions to and from <code>String</code> and
+ * character array (<code>char[]</code>) objects, as well as conversions
+ * to and from the Java primitive types (which may not be exact) and
+ * <code>BigInteger</code>.
+ * <p>
+ * In the descriptions of constructors and methods in this documentation,
+ * the value of a <code>BigDecimal</code> number object is shown as the
+ * result of invoking the <code>toString()</code> method on the object.
+ * The internal representation of a decimal number is neither defined
+ * nor exposed, and is not permitted to affect the result of any
+ * operation.
+ * <p>
+ * The floating point arithmetic provided by this class is defined by
+ * the ANSI X3.274-1996 standard, and is also documented at
+ * <code>http://www2.hursley.ibm.com/decimal</code>
+ * <br><i>[This URL will change.]</i>
+ *
+ * <h3>Operator methods</h3>
+ * <p>
+ * Operations on <code>BigDecimal</code> numbers are controlled by a
+ * {@link MathContext} object, which provides the context (precision and
+ * other information) for the operation. Methods that can take a
+ * <code>MathContext</code> parameter implement the standard arithmetic
+ * operators for <code>BigDecimal</code> objects and are known as
+ * <i>operator methods</i>.  The default settings provided by the
+ * constant {@link MathContext#DEFAULT} (<code>digits=9,
+ * form=SCIENTIFIC, lostDigits=false, roundingMode=ROUND_HALF_UP</code>)
+ * perform general-purpose floating point arithmetic to nine digits of
+ * precision.  The <code>MathContext</code> parameter must not be
+ * <code>null</code>.
+ * <p>
+ * Each operator method also has a version provided which does
+ * not take a <code>MathContext</code> parameter.  For this version of
+ * each method, the context settings used are <code>digits=0,
+ * form=PLAIN, lostDigits=false, roundingMode=ROUND_HALF_UP</code>;
+ * these settings perform fixed point arithmetic with unlimited
+ * precision, as defined for the original BigDecimal class in Java 1.1
+ * and Java 1.2.
+ * <p>
+ * For monadic operators, only the optional <code>MathContext</code>
+ * parameter is present; the operation acts upon the current object.
+ * <p>
+ * For dyadic operators, a <code>BigDecimal</code> parameter is always
+ * present; it must not be <code>null</code>.
+ * The operation acts with the current object being the left-hand operand
+ * and the <code>BigDecimal</code> parameter being the right-hand operand.
+ * <p>
+ * For example, adding two <code>BigDecimal</code> objects referred to
+ * by the names <code>award</code> and <code>extra</code> could be
+ * written as any of:
+ * <p><code>
+ *     award.add(extra)
+ * <br>award.add(extra, MathContext.DEFAULT)
+ * <br>award.add(extra, acontext)
+ * </code>
+ * <p>
+ * (where <code>acontext</code> is a <code>MathContext</code> object),
+ * which would return a <code>BigDecimal</code> object whose value is
+ * the result of adding <code>award</code> and <code>extra</code> under
+ * the appropriate context settings.
+ * <p>
+ * When a <code>BigDecimal</code> operator method is used, a set of
+ * rules define what the result will be (and, by implication, how the
+ * result would be represented as a character string).
+ * These rules are defined in the BigDecimal arithmetic documentation
+ * (see the URL above), but in summary:
+ * <ul>
+ * <li>Results are normally calculated with up to some maximum number of
+ * significant digits.
+ * For example, if the <code>MathContext</code> parameter for an operation
+ * were <code>MathContext.DEFAULT</code> then the result would be
+ * rounded to 9 digits; the division of 2 by 3 would then result in
+ * 0.666666667.
+ * <br>
+ * You can change the default of 9 significant digits by providing the
+ * method with a suitable <code>MathContext</code> object. This lets you
+ * calculate using as many digits as you need -- thousands, if necessary.
+ * Fixed point (scaled) arithmetic is indicated by using a
+ * <code>digits</code> setting of 0 (or omitting the
+ * <code>MathContext</code> parameter).
+ * <br>
+ * Similarly, you can change the algorithm used for rounding from the
+ * default "classic" algorithm.
+ * <li>
+ * In standard arithmetic (that is, when the <code>form</code> setting
+ * is not <code>PLAIN</code>), a zero result is always expressed as the
+ * single digit <code>'0'</code> (that is, with no sign, decimal point,
+ * or exponent part).
+ * <li>
+ * Except for the division and power operators in standard arithmetic,
+ * trailing zeros are preserved (this is in contrast to binary floating
+ * point operations and most electronic calculators, which lose the
+ * information about trailing zeros in the fractional part of results).
+ * <br>
+ * So, for example:
+ * <p><code>
+ *     new BigDecimal("2.40").add(     new BigDecimal("2"))      =&gt; "4.40"
+ * <br>new BigDecimal("2.40").subtract(new BigDecimal("2"))      =&gt; "0.40"
+ * <br>new BigDecimal("2.40").multiply(new BigDecimal("2"))      =&gt; "4.80"
+ * <br>new BigDecimal("2.40").divide(  new BigDecimal("2"), def) =&gt; "1.2"
+ * </code>
+ * <p>where the value on the right of the <code>=&gt;</code> would be the
+ * result of the operation, expressed as a <code>String</code>, and
+ * <code>def</code> (in this and following examples) refers to
+ * <code>MathContext.DEFAULT</code>).
+ * This preservation of trailing zeros is desirable for most
+ * calculations (including financial calculations).
+ * If necessary, trailing zeros may be easily removed using division by 1.
+ * <li>
+ * In standard arithmetic, exponential form is used for a result
+ * depending on its value and the current setting of <code>digits</code>
+ * (the default is 9 digits).
+ * If the number of places needed before the decimal point exceeds the
+ * <code>digits</code> setting, or the absolute value of the number is
+ * less than <code>0.000001</code>, then the number will be expressed in
+ * exponential notation; thus
+ * <p><code>
+ *   new BigDecimal("1e+6").multiply(new BigDecimal("1e+6"), def)
+ * </code>
+ * <p>results in <code>1E+12</code> instead of
+ * <code>1000000000000</code>, and
+ * <p><code>
+ *   new BigDecimal("1").divide(new BigDecimal("3E+10"), def)
+ * </code>
+ * <p>results in <code>3.33333333E-11</code> instead of
+ * <code>0.0000000000333333333</code>.
+ * <p>
+ * The form of the exponential notation (scientific or engineering) is
+ * determined by the <code>form</code> setting.
+ * <eul>
+ * <p>
+ * The names of methods in this class follow the conventions established
+ * by <code>java.lang.Number</code>, <code>java.math.BigInteger</code>,
+ * and <code>java.math.BigDecimal</code> in Java 1.1 and Java 1.2.
+ *
+ * @see     MathContext
+ * @author  Mike Cowlishaw
+ * @stable ICU 2.0
+ */
+
+public class BigDecimal extends java.lang.Number implements java.io.Serializable,java.lang.Comparable{
+ //private static final java.lang.String $0="BigDecimal.nrx";
+ 
+ 
+ 
+ /* ----- Constants ----- */
+ /* properties constant public */ // useful to others
+ /**
+  * The <code>BigDecimal</code> constant "0".
+  *
+  * @see #ONE
+  * @see #TEN
+  * @stable ICU 2.0
+  */
+ public static final com.ibm.icu.math.BigDecimal ZERO=new com.ibm.icu.math.BigDecimal((long)0); // use long as we want the int constructor
+ // .. to be able to use this, for speed
+ 
+ /**
+  * The <code>BigDecimal</code> constant "1".
+  *
+  * @see #TEN
+  * @see #ZERO
+  * @stable ICU 2.0
+  */
+ public static final com.ibm.icu.math.BigDecimal ONE=new com.ibm.icu.math.BigDecimal((long)1); // use long as we want the int constructor
+ // .. to be able to use this, for speed
+ 
+ /**
+  * The <code>BigDecimal</code> constant "10".
+  *
+  * @see #ONE
+  * @see #ZERO
+  * @stable ICU 2.0
+  */
+ public static final com.ibm.icu.math.BigDecimal TEN=new com.ibm.icu.math.BigDecimal(10);
+ 
+ // the rounding modes (copied here for upwards compatibility)
+ /**
+  * Rounding mode to round to a more positive number.
+  * @see MathContext#ROUND_CEILING
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_CEILING=com.ibm.icu.math.MathContext.ROUND_CEILING;
+ 
+ /**
+  * Rounding mode to round towards zero.
+  * @see MathContext#ROUND_DOWN
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_DOWN=com.ibm.icu.math.MathContext.ROUND_DOWN;
+ 
+ /**
+  * Rounding mode to round to a more negative number.
+  * @see MathContext#ROUND_FLOOR
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_FLOOR=com.ibm.icu.math.MathContext.ROUND_FLOOR;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded down.
+  * @see MathContext#ROUND_HALF_DOWN
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_DOWN=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded to the nearest even neighbor.
+  * @see MathContext#ROUND_HALF_EVEN
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_EVEN=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded up.
+  * @see MathContext#ROUND_HALF_UP
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_UP=com.ibm.icu.math.MathContext.ROUND_HALF_UP;
+ 
+ /**
+  * Rounding mode to assert that no rounding is necessary.
+  * @see MathContext#ROUND_UNNECESSARY
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_UNNECESSARY=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY;
+ 
+ /**
+  * Rounding mode to round away from zero.
+  * @see MathContext#ROUND_UP
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_UP=com.ibm.icu.math.MathContext.ROUND_UP;
+ 
+ /* properties constant private */ // locals
+ private static final byte ispos=1; // ind: indicates positive (must be 1)
+ private static final byte iszero=0; // ind: indicates zero     (must be 0)
+ private static final byte isneg=-1; // ind: indicates negative (must be -1)
+ // [later could add NaN, +/- infinity, here]
+ 
+ private static final int MinExp=-999999999; // minimum exponent allowed
+ private static final int MaxExp=999999999; // maximum exponent allowed
+ private static final int MinArg=-999999999; // minimum argument integer
+ private static final int MaxArg=999999999; // maximum argument integer
+ 
+ private static final com.ibm.icu.math.MathContext plainMC=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN); // context for plain unlimited math
+ 
+ /* properties constant private unused */ // present but not referenced
+ 
+ // Serialization version
+ private static final long serialVersionUID=8245355804974198832L;
+ 
+ //private static final java.lang.String copyright=" Copyright (c) IBM Corporation 1996, 2000.  All rights reserved. ";
+ 
+ /* properties static private */
+ // Precalculated constant arrays (used by byteaddsub)
+ private static byte bytecar[]=new byte[(90+99)+1]; // carry/borrow array
+ private static byte bytedig[]=diginit(); // next digit array
+ 
+ /* ----- Instance properties [all private and immutable] ----- */
+ /* properties private */
+ 
+ /**
+  * The indicator. This may take the values:
+  * <ul>
+  * <li>ispos  -- the number is positive
+  * <li>iszero -- the number is zero
+  * <li>isneg  -- the number is negative
+  * </ul>
+  *
+  * @serial
+  */
+ private byte ind; // assumed undefined
+ // Note: some code below assumes IND = Sign [-1, 0, 1], at present.
+ // We only need two bits for this, but use a byte [also permits
+ // smooth future extension].
+ 
+ /**
+  * The formatting style. This may take the values:
+  * <ul>
+  * <li>MathContext.PLAIN        -- no exponent needed
+  * <li>MathContext.SCIENTIFIC   -- scientific notation required
+  * <li>MathContext.ENGINEERING  -- engineering notation required
+  * </ul>
+  * <p>
+  * This property is an optimization; it allows us to defer number
+  * layout until it is actually needed as a string, hence avoiding
+  * unnecessary formatting.
+  *
+  * @serial
+  */
+ private byte form=(byte)com.ibm.icu.math.MathContext.PLAIN; // assumed PLAIN
+ // We only need two bits for this, at present, but use a byte
+ // [again, to allow for smooth future extension]
+ 
+ /**
+  * The value of the mantissa.
+  * <p>
+  * Once constructed, this may become shared between several BigDecimal
+  * objects, so must not be altered.
+  * <p>
+  * For efficiency (speed), this is a byte array, with each byte
+  * taking a value of 0 -> 9.
+  * <p>
+  * If the first byte is 0 then the value of the number is zero (and
+  * mant.length=1, except when constructed from a plain number, for
+  * example, 0.000).
+  *
+  * @serial
+  */
+ private byte mant[]; // assumed null
+ 
+ /**
+  * The exponent.
+  * <p>
+  * For fixed point arithmetic, scale is <code>-exp</code>, and can
+  * apply to zero.
+  *
+  * Note that this property can have a value less than MinExp when
+  * the mantissa has more than one digit.
+  *
+  * @serial
+  */
+ private int exp;
+ // assumed 0
+ 
+ /* ---------------------------------------------------------------- */
+ /* Constructors                                                     */
+ /* ---------------------------------------------------------------- */
+ 
+//#if defined(FOUNDATION10)
+//#else
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>java.math.BigDecimal</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though the parameter had
+  * been represented as a <code>String</code> (using its
+  * <code>toString</code> method) and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been
+  * used.
+  * The parameter must not be <code>null</code>.
+  * <p>
+  * <i>(Note: this constructor is provided only in the
+  * <code>com.ibm.icu.math</code> version of the BigDecimal class.
+  * It would not be present in a <code>java.math</code> version.)</i>
+  *
+  * @param bd The <code>BigDecimal</code> to be translated.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(java.math.BigDecimal bd){
+  this(bd.toString());
+  return;}
+//#endif
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>BigInteger</code>, with scale 0.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the <code>BigInteger</code>, with a scale of
+  * zero.
+  * The value of the <code>BigDecimal</code> is identical to the value
+  * of the <code>BigInteger</code>.
+  * The parameter must not be <code>null</code>.
+  * <p>
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the
+  * <code>BigInteger</code> is negative.  A leading zero will be
+  * present only if the <code>BigInteger</code> is zero.
+  *
+  * @param bi The <code>BigInteger</code> to be converted.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(java.math.BigInteger bi){
+  this(bi.toString(10));
+  return;}
+ // exp remains 0
+ 
+ /**
+  * Constructs a <code>BigDecimal</code> object from a
+  * <code>BigInteger</code> and a scale.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the <code>BigInteger</code>, scaled by the
+  * second parameter, which may not be negative.
+  * The value of the <code>BigDecimal</code> is the
+  * <code>BigInteger</code> divided by ten to the power of the scale.
+  * The <code>BigInteger</code> parameter must not be
+  * <code>null</code>.
+  * <p>
+  * The <code>BigDecimal</code> will contain only decimal digits, (with
+  * an embedded decimal point followed by <code>scale</code> decimal
+  * digits if the scale is positive), prefixed with a leading minus
+  * sign (hyphen) if the <code>BigInteger</code> is negative.  A
+  * leading zero will be present only if the <code>BigInteger</code> is
+  * zero.
+  *
+  * @param  bi    The <code>BigInteger</code> to be converted.
+  * @param  scale The <code>int</code> specifying the scale.
+  * @throws NumberFormatException if the scale is negative.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(java.math.BigInteger bi,int scale){
+  this(bi.toString(10));
+  if (scale<0) 
+   throw new java.lang.NumberFormatException("Negative scale:"+" "+scale);
+  exp=(int)-scale; // exponent is -scale
+  return;}
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from an array of characters.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though a
+  * <code>String</code> had been constructed from the character array
+  * and the {@link #BigDecimal(java.lang.String)} constructor had then
+  * been used. The parameter must not be <code>null</code>.
+  * <p>
+  * Using this constructor is faster than using the
+  * <code>BigDecimal(String)</code> constructor if the string is
+  * already available in character array form.
+  *
+  * @param inchars The <code>char[]</code> array containing the number
+  *                to be converted.
+  * @throws NumberFormatException if the parameter is not a valid
+  *                number.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(char inchars[]){
+  this(inchars,0,inchars.length);
+  return;}
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from an array of characters.
+  * <p>
+  * Constructs a <code>BigDecimal</code> as though a
+  * <code>String</code> had been constructed from the character array
+  * (or a subarray of that array) and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been
+  * used. The first parameter must not be <code>null</code>, and the
+  * subarray must be wholly contained within it.
+  * <p>
+  * Using this constructor is faster than using the
+  * <code>BigDecimal(String)</code> constructor if the string is
+  * already available within a character array.
+  *
+  * @param inchars The <code>char[]</code> array containing the number
+  *                to be converted.
+  * @param offset  The <code>int</code> offset into the array of the
+  *                start of the number to be converted.
+  * @param length  The <code>int</code> length of the number.
+  * @throws NumberFormatException if the parameter is not a valid
+  *                number for any reason.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(char inchars[],int offset,int length){super();
+  boolean exotic;
+  boolean hadexp;
+  int d;
+  int dotoff;
+  int last;
+  int i=0;
+  char si=0;
+  boolean eneg=false;
+  int k=0;
+  int elen=0;
+  int j=0;
+  char sj=0;
+  int dvalue=0;
+  int mag=0;
+  // This is the primary constructor; all incoming strings end up
+  // here; it uses explicit (inline) parsing for speed and to avoid
+  // generating intermediate (temporary) objects of any kind.
+  // 1998.06.25: exponent form built only if E/e in string
+  // 1998.06.25: trailing zeros not removed for zero
+  // 1999.03.06: no embedded blanks; allow offset and length
+  if (length<=0) 
+   bad(inchars); // bad conversion (empty string)
+  // [bad offset will raise array bounds exception]
+  
+  /* Handle and step past sign */
+  ind=ispos; // assume positive
+  if (inchars[offset]==('-')) 
+   {
+    length--;
+    if (length==0) 
+     bad(inchars); // nothing after sign
+    ind=isneg;
+    offset++;
+   }
+  else 
+   if (inchars[offset]==('+')) 
+    {
+     length--;
+     if (length==0) 
+      bad(inchars); // nothing after sign
+     offset++;
+    }
+  
+  /* We're at the start of the number */
+  exotic=false; // have extra digits
+  hadexp=false; // had explicit exponent
+  d=0; // count of digits found
+  dotoff=-1; // offset where dot was found
+  last=-1; // last character of mantissa
+  {int $1=length;i=offset;i:for(;$1>0;$1--,i++){
+   si=inchars[i];
+   if (si>='0')  // test for Arabic digit
+    if (si<='9') 
+     {
+      last=i;
+      d++; // still in mantissa
+      continue i;
+     }
+   if (si=='.') 
+    { // record and ignore
+     if (dotoff>=0) 
+      bad(inchars); // two dots
+     dotoff=i-offset; // offset into mantissa
+     continue i;
+    }
+   if (si!='e') 
+    if (si!='E') 
+     { // expect an extra digit
+      if ((!(UCharacter.isDigit(si)))) 
+       bad(inchars); // not a number
+      // defer the base 10 check until later to avoid extra method call
+      exotic=true; // will need conversion later
+      last=i;
+      d++; // still in mantissa
+      continue i;
+     }
+   /* Found 'e' or 'E' -- now process explicit exponent */
+   // 1998.07.11: sign no longer required
+   if ((i-offset)>(length-2)) 
+    bad(inchars); // no room for even one digit
+   eneg=false;
+   if ((inchars[i+1])==('-')) 
+    {
+     eneg=true;
+     k=i+2;
+    }
+   else 
+    if ((inchars[i+1])==('+')) 
+     k=i+2;
+    else 
+     k=i+1;
+   // k is offset of first expected digit
+   elen=length-((k-offset)); // possible number of digits
+   if ((elen==0)|(elen>9)) 
+    bad(inchars); // 0 or more than 9 digits
+   {int $2=elen;j=k;for(;$2>0;$2--,j++){
+    sj=inchars[j];
+    if (sj<'0') 
+     bad(inchars); // always bad
+    if (sj>'9') 
+     { // maybe an exotic digit
+      if ((!(UCharacter.isDigit(sj)))) 
+       bad(inchars); // not a number
+      dvalue=UCharacter.digit(sj,10); // check base
+      if (dvalue<0) 
+       bad(inchars); // not base 10
+     }
+    else 
+     dvalue=((int)(sj))-((int)('0'));
+    exp=(exp*10)+dvalue;
+    }
+   }/*j*/
+   if (eneg) 
+    exp=(int)-exp; // was negative
+   hadexp=true; // remember we had one
+   break i; // we are done
+   }
+  }/*i*/
+  
+  /* Here when all inspected */
+  if (d==0) 
+   bad(inchars); // no mantissa digits
+  if (dotoff>=0) 
+   exp=(exp+dotoff)-d; // adjust exponent if had dot
+  
+  /* strip leading zeros/dot (leave final if all 0's) */
+  {int $3=last-1;i=offset;i:for(;i<=$3;i++){
+   si=inchars[i];
+   if (si=='0') 
+    {
+     offset++;
+     dotoff--;
+     d--;
+    }
+   else 
+    if (si=='.') 
+     {
+      offset++; // step past dot
+      dotoff--;
+     }
+    else 
+     if (si<='9') 
+      break i;/* non-0 */
+     else 
+      {/* exotic */
+       if ((UCharacter.digit(si,10))!=0) 
+        break i; // non-0 or bad
+       // is 0 .. strip like '0'
+       offset++;
+       dotoff--;
+       d--;
+      }
+   }
+  }/*i*/
+  
+  /* Create the mantissa array */
+  mant=new byte[d]; // we know the length
+  j=offset; // input offset
+  if (exotic) 
+   {do{ // slow: check for exotica
+    {int $4=d;i=0;for(;$4>0;$4--,i++){
+     if (i==dotoff) 
+      j++; // at dot
+     sj=inchars[j];
+     if (sj<='9') 
+      mant[i]=(byte)(((int)(sj))-((int)('0')));/* easy */
+     else 
+      {
+       dvalue=UCharacter.digit(sj,10);
+       if (dvalue<0) 
+        bad(inchars); // not a number after all
+       mant[i]=(byte)dvalue;
+      }
+     j++;
+     }
+    }/*i*/
+   }while(false);}/*exotica*/
+  else 
+   {do{
+    {int $5=d;i=0;for(;$5>0;$5--,i++){
+     if (i==dotoff) 
+      j++;
+     mant[i]=(byte)(((int)(inchars[j]))-((int)('0')));
+     j++;
+     }
+    }/*i*/
+   }while(false);}/*simple*/
+  
+  /* Looks good.  Set the sign indicator and form, as needed. */
+  // Trailing zeros are preserved
+  // The rule here for form is:
+  //   If no E-notation, then request plain notation
+  //   Otherwise act as though add(0,DEFAULT) and request scientific notation
+  // [form is already PLAIN]
+  if (mant[0]==0) 
+   {
+    ind=iszero; // force to show zero
+    // negative exponent is significant (e.g., -3 for 0.000) if plain
+    if (exp>0) 
+     exp=0; // positive exponent can be ignored
+    if (hadexp) 
+     { // zero becomes single digit from add
+      mant=ZERO.mant;
+      exp=0;
+     }
+   }
+  else 
+   { // non-zero
+    // [ind was set earlier]
+    // now determine form
+    if (hadexp) 
+     {
+      form=(byte)com.ibm.icu.math.MathContext.SCIENTIFIC;
+      // 1999.06.29 check for overflow
+      mag=(exp+mant.length)-1; // true exponent in scientific notation
+      if ((mag<MinExp)|(mag>MaxExp)) 
+       bad(inchars);
+     }
+   }
+  // say 'BD(c[]): mant[0] mantlen exp ind form:' mant[0] mant.length exp ind form
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>double</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 64-bit signed binary floating point
+  * parameter.
+  * <p>
+  * Note that this constructor it an exact conversion; it does not give
+  * the same result as converting <code>num</code> to a
+  * <code>String</code> using the <code>Double.toString()</code> method
+  * and then using the {@link #BigDecimal(java.lang.String)}
+  * constructor.
+  * To get that result, use the static {@link #valueOf(double)}
+  * method to construct a <code>BigDecimal</code> from a
+  * <code>double</code>.
+  *
+  * @param num The <code>double</code> to be converted.
+  * @throws NumberFormatException if the parameter is infinite or
+  *            not a number.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(double num){
+  // 1999.03.06: use exactly the old algorithm
+  // 2000.01.01: note that this constructor does give an exact result,
+  //             so perhaps it should not be deprecated
+  // 2000.06.18: no longer deprecated
+//#if defined(FOUNDATION10)
+//##    this(String.valueOf(num));
+//#else
+  this((new java.math.BigDecimal(num)).toString());
+//#endif
+  return;}
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>int</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 32-bit signed binary integer parameter.
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the parameter is
+  * negative.
+  * A leading zero will be present only if the parameter is zero.
+  *
+  * @param num The <code>int</code> to be converted.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(int num){super();
+  int mun;
+  int i=0;
+  // We fastpath commoners
+  if (num<=9) 
+   if (num>=(-9)) 
+    {do{
+     // very common single digit case
+     {/*select*/
+     if (num==0)
+      {
+       mant=ZERO.mant;
+       ind=iszero;
+      }
+     else if (num==1)
+      {
+       mant=ONE.mant;
+       ind=ispos;
+      }
+     else if (num==(-1))
+      {
+       mant=ONE.mant;
+       ind=isneg;
+      }
+     else{
+      {
+       mant=new byte[1];
+       if (num>0) 
+        {
+         mant[0]=(byte)num;
+         ind=ispos;
+        }
+       else 
+        { // num<-1
+         mant[0]=(byte)((int)-num);
+         ind=isneg;
+        }
+      }
+     }
+     }
+     return;
+    }while(false);}/*singledigit*/
+  
+  /* We work on negative numbers so we handle the most negative number */
+  if (num>0) 
+   {
+    ind=ispos;
+    num=(int)-num;
+   }
+  else 
+   ind=isneg;/* negative */ // [0 case already handled]
+  // [it is quicker, here, to pre-calculate the length with
+  // one loop, then allocate exactly the right length of byte array,
+  // then re-fill it with another loop]
+  mun=num; // working copy
+  {i=9;i:for(;;i--){
+   mun=mun/10;
+   if (mun==0) 
+    break i;
+   }
+  }/*i*/
+  // i is the position of the leftmost digit placed
+  mant=new byte[10-i];
+  {i=(10-i)-1;i:for(;;i--){
+   mant[i]=(byte)-(((byte)(num%10)));
+   num=num/10;
+   if (num==0) 
+    break i;
+   }
+  }/*i*/
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object directly from a
+  * <code>long</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> which is the exact decimal
+  * representation of the 64-bit signed binary integer parameter.
+  * The <code>BigDecimal</code> will contain only decimal digits,
+  * prefixed with a leading minus sign (hyphen) if the parameter is
+  * negative.
+  * A leading zero will be present only if the parameter is zero.
+  *
+  * @param num The <code>long</code> to be converted.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(long num){super();
+  long mun;
+  int i=0;
+  // Not really worth fastpathing commoners in this constructor [also,
+  // we use this to construct the static constants].
+  // This is much faster than: this(String.valueOf(num).toCharArray())
+  /* We work on negative num so we handle the most negative number */
+  if (num>0) 
+   {
+    ind=ispos;
+    num=(long)-num;
+   }
+  else 
+   if (num==0) 
+    ind=iszero;
+   else 
+    ind=isneg;/* negative */
+  mun=num;
+  {i=18;i:for(;;i--){
+   mun=mun/10;
+   if (mun==0) 
+    break i;
+   }
+  }/*i*/
+  // i is the position of the leftmost digit placed
+  mant=new byte[19-i];
+  {i=(19-i)-1;i:for(;;i--){
+   mant[i]=(byte)-(((byte)(num%10)));
+   num=num/10;
+   if (num==0) 
+    break i;
+   }
+  }/*i*/
+  return;
+  }
+
+ /**
+  * Constructs a <code>BigDecimal</code> object from a <code>String</code>.
+  * <p>
+  * Constructs a <code>BigDecimal</code> from the parameter, which must
+  * not be <code>null</code> and must represent a valid <i>number</i>,
+  * as described formally in the documentation referred to
+  * {@link BigDecimal above}.
+  * <p>
+  * In summary, numbers in <code>String</code> form must have at least
+  * one digit, may have a leading sign, may have a decimal point, and
+  * exponential notation may be used.  They follow conventional syntax,
+  * and may not contain blanks.
+  * <p>
+  * Some valid strings from which a <code>BigDecimal</code> might
+  * be constructed are:
+  * <pre>
+  *       "0"         -- Zero
+  *      "12"         -- A whole number
+  *     "-76"         -- A signed whole number
+  *      "12.70"      -- Some decimal places
+  *     "+0.003"      -- Plus sign is allowed
+  *      "17."        -- The same as 17
+  *        ".5"       -- The same as 0.5
+  *      "4E+9"       -- Exponential notation
+  *       "0.73e-7"   -- Exponential notation
+  * </pre>
+  * <p>
+  * (Exponential notation means that the number includes an optional
+  * sign and a power of ten following an '</code>E</code>' that
+  * indicates how the decimal point will be shifted.  Thus the
+  * <code>"4E+9"</code> above is just a short way of writing
+  * <code>4000000000</code>, and the <code>"0.73e-7"</code> is short
+  * for <code>0.000000073</code>.)
+  * <p>
+  * The <code>BigDecimal</code> constructed from the String is in a
+  * standard form, with no blanks, as though the
+  * {@link #add(BigDecimal)} method had been used to add zero to the
+  * number with unlimited precision.
+  * If the string uses exponential notation (that is, includes an
+  * <code>e</code> or an <code>E</code>), then the
+  * <code>BigDecimal</code> number will be expressed in scientific
+  * notation (where the power of ten is adjusted so there is a single
+  * non-zero digit to the left of the decimal point); in this case if
+  * the number is zero then it will be expressed as the single digit 0,
+  * and if non-zero it will have an exponent unless that exponent would
+  * be 0.  The exponent must fit in nine digits both before and after it
+  * is expressed in scientific notation.
+  * <p>
+  * Any digits in the parameter must be decimal; that is,
+  * <code>Character.digit(c, 10)</code> (where </code>c</code> is the
+  * character in question) would not return -1.
+  *
+  * @param string The <code>String</code> to be converted.
+  * @throws NumberFormatException if the parameter is not a valid
+  * number.
+  * @stable ICU 2.0
+  */
+ 
+ public BigDecimal(java.lang.String string){
+  this(string.toCharArray(),0,string.length());
+  return;}
+
+ /* <sgml> Make a default BigDecimal object for local use. </sgml> */
+ 
+ private BigDecimal(){super();
+  return;
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Operator methods [methods which take a context parameter]        */
+ /* ---------------------------------------------------------------- */
+ 
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is the absolute
+  * value of this <code>BigDecimal</code>.
+  * <p>
+  * The same as {@link #abs(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will
+  * be <code>this.scale()</code>
+  *
+  * @return A <code>BigDecimal</code> whose value is the absolute
+  *         value of this <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal abs(){
+  return this.abs(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the absolute value
+  * of this <code>BigDecimal</code>.
+  * <p>
+  * If the current object is zero or positive, then the same result as
+  * invoking the {@link #plus(MathContext)} method with the same
+  * parameter is returned.
+  * Otherwise, the same result as invoking the
+  * {@link #negate(MathContext)} method with the same parameter is
+  * returned.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the absolute
+  *             value of this <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal abs(com.ibm.icu.math.MathContext set){
+  if (this.ind==isneg) 
+   return this.negate(set);
+  return this.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this+rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #add(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the maximum of the scales of the two operands.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the addition.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this+rhs</code>, using fixed point arithmetic.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs){
+  return this.add(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this+rhs</code>.
+  * <p>
+  * Implements the addition (<b><code>+</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the addition.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this+rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  com.ibm.icu.math.BigDecimal res;
+  byte usel[];
+  int usellen;
+  byte user[];
+  int userlen;
+  int newlen=0;
+  int tlen=0;
+  int mult=0;
+  byte t[]=null;
+  int ia=0;
+  int ib=0;
+  int ea=0;
+  int eb=0;
+  byte ca=0;
+  byte cb=0;
+  /* determine requested digits and form */
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity and proxy
+  
+  /* Quick exit for add floating 0 */
+  // plus() will optimize to return same object if possible
+  if (lhs.ind==0) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    return rhs.plus(set);
+  if (rhs.ind==0) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    return lhs.plus(set);
+  
+  /* Prepare numbers (round, unless unlimited precision) */
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   // [we could reuse the new LHS for result in this case]
+   }
+  
+  res=new com.ibm.icu.math.BigDecimal(); // build result here
+  
+  /* Now see how much we have to pad or truncate lhs or rhs in order
+     to align the numbers.  If one number is much larger than the
+     other, then the smaller cannot affect the answer [but we may
+     still need to pad with up to DIGITS trailing zeros]. */
+  // Note sign may be 0 if digits (reqdig) is 0
+  // usel and user will be the byte arrays passed to the adder; we'll
+  // use them on all paths except quick exits
+  usel=lhs.mant;
+  usellen=lhs.mant.length;
+  user=rhs.mant;
+  userlen=rhs.mant.length;
+  {do{/*select*/
+  if (lhs.exp==rhs.exp)
+   {/* no padding needed */
+    // This is the most common, and fastest, path
+    res.exp=lhs.exp;
+   }
+  else if (lhs.exp>rhs.exp)
+   { // need to pad lhs and/or truncate rhs
+    newlen=(usellen+lhs.exp)-rhs.exp;
+    /* If, after pad, lhs would be longer than rhs by digits+1 or
+       more (and digits>0) then rhs cannot affect answer, so we only
+       need to pad up to a length of DIGITS+1. */
+    if (newlen>=((userlen+reqdig)+1)) 
+     if (reqdig>0) 
+      {
+       // LHS is sufficient
+       res.mant=usel;
+       res.exp=lhs.exp;
+       res.ind=lhs.ind;
+       if (usellen<reqdig) 
+        { // need 0 padding
+         res.mant=extend(lhs.mant,reqdig);
+         res.exp=res.exp-((reqdig-usellen));
+        }
+       return res.finish(set,false);
+      }
+    // RHS may affect result
+    res.exp=rhs.exp; // expected final exponent
+    if (newlen>(reqdig+1)) 
+     if (reqdig>0) 
+      {
+       // LHS will be max; RHS truncated
+       tlen=(newlen-reqdig)-1; // truncation length
+       userlen=userlen-tlen;
+       res.exp=res.exp+tlen;
+       newlen=reqdig+1;
+      }
+    if (newlen>usellen) 
+     usellen=newlen; // need to pad LHS
+   }
+  else{ // need to pad rhs and/or truncate lhs
+   newlen=(userlen+rhs.exp)-lhs.exp;
+   if (newlen>=((usellen+reqdig)+1)) 
+    if (reqdig>0) 
+     {
+      // RHS is sufficient
+      res.mant=user;
+      res.exp=rhs.exp;
+      res.ind=rhs.ind;
+      if (userlen<reqdig) 
+       { // need 0 padding
+        res.mant=extend(rhs.mant,reqdig);
+        res.exp=res.exp-((reqdig-userlen));
+       }
+      return res.finish(set,false);
+     }
+   // LHS may affect result
+   res.exp=lhs.exp; // expected final exponent
+   if (newlen>(reqdig+1)) 
+    if (reqdig>0) 
+     {
+      // RHS will be max; LHS truncated
+      tlen=(newlen-reqdig)-1; // truncation length
+      usellen=usellen-tlen;
+      res.exp=res.exp+tlen;
+      newlen=reqdig+1;
+     }
+   if (newlen>userlen) 
+    userlen=newlen; // need to pad RHS
+  }
+  }while(false);}/*padder*/
+  
+  /* OK, we have aligned mantissas.  Now add or subtract. */
+  // 1998.06.27 Sign may now be 0 [e.g., 0.000] .. treat as positive
+  // 1999.05.27 Allow for 00 on lhs [is not larger than 2 on rhs]
+  // 1999.07.10 Allow for 00 on rhs [is not larger than 2 on rhs]
+  if (lhs.ind==iszero) 
+   res.ind=ispos;
+  else 
+   res.ind=lhs.ind; // likely sign, all paths
+  if (((lhs.ind==isneg)?1:0)==((rhs.ind==isneg)?1:0))  // same sign, 0 non-negative
+   mult=1;
+  else 
+   {do{ // different signs, so subtraction is needed
+    mult=-1; // will cause subtract
+    /* Before we can subtract we must determine which is the larger,
+       as our add/subtract routine only handles non-negative results
+       so we may need to swap the operands. */
+    {do{/*select*/
+    if (rhs.ind==iszero){
+     // original A bigger
+    }else if ((usellen<userlen)|(lhs.ind==iszero))
+     { // original B bigger
+      t=usel;
+      usel=user;
+      user=t; // swap
+      tlen=usellen;
+      usellen=userlen;
+      userlen=tlen; // ..
+      res.ind=(byte)-res.ind; // and set sign
+     }
+    else if (usellen>userlen){
+     // original A bigger
+    }else{
+     {/* logical lengths the same */ // need compare
+      /* may still need to swap: compare the strings */
+      ia=0;
+      ib=0;
+      ea=usel.length-1;
+      eb=user.length-1;
+      {compare:for(;;){
+       if (ia<=ea) 
+        ca=usel[ia];
+       else 
+        {
+         if (ib>eb) 
+          {/* identical */
+           if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+            return ZERO;
+           // [if PLAIN we must do the subtract, in case of 0.000 results]
+           break compare;
+          }
+         ca=(byte)0;
+        }
+       if (ib<=eb) 
+        cb=user[ib];
+       else 
+        cb=(byte)0;
+       if (ca!=cb) 
+        {
+         if (ca<cb) 
+          {/* swap needed */
+           t=usel;
+           usel=user;
+           user=t; // swap
+           tlen=usellen;
+           usellen=userlen;
+           userlen=tlen; // ..
+           res.ind=(byte)-res.ind;
+          }
+         break compare;
+        }
+       /* mantissas the same, so far */
+       ia++;
+       ib++;
+       }
+      }/*compare*/
+     } // lengths the same
+    }
+    }while(false);}/*swaptest*/
+   }while(false);}/*signdiff*/
+  
+  /* here, A is > B if subtracting */
+  // add [A+B*1] or subtract [A+(B*-1)]
+  res.mant=byteaddsub(usel,usellen,user,userlen,mult,false);
+  // [reuse possible only after chop; accounting makes not worthwhile]
+  
+  // Finish() rounds before stripping leading 0's, then sets form, etc.
+  return res.finish(set,false);
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> to another, using unlimited
+  * precision.
+  * <p>
+  * The same as {@link #compareTo(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @see    #compareTo(Object)
+  * @stable ICU 2.0
+  */
+ 
+ public int compareTo(com.ibm.icu.math.BigDecimal rhs){
+  return this.compareTo(rhs,plainMC);
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> to another.
+  * <p>
+  * Implements numeric comparison,
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns a result of type <code>int</code>.
+  * <p>
+  * The result will be:
+  * <table cellpadding=2><tr>
+  * <td align=right><b>-1</b></td>
+  * <td>if the current object is less than the first parameter</td>
+  * </tr><tr>
+  * <td align=right><b>0</b></td>
+  * <td>if the current object is equal to the first parameter</td>
+  * </tr><tr>
+  * <td align=right><b>1</b></td>
+  * <td>if the current object is greater than the first parameter.</td>
+  * </tr></table>
+  * <p>
+  * A {@link #compareTo(Object)} method is also provided.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @see    #compareTo(Object)
+  * @stable ICU 2.0
+  */
+ 
+ public int compareTo(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  int thislength=0;
+  int i=0;
+  com.ibm.icu.math.BigDecimal newrhs;
+  // rhs=null will raise NullPointerException, as per Comparable interface
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  // [add will recheck in slowpath cases .. but would report -rhs]
+  if ((this.ind==rhs.ind)&(this.exp==rhs.exp)) 
+   {
+    /* sign & exponent the same [very common] */
+    thislength=this.mant.length;
+    if (thislength<rhs.mant.length) 
+     return (byte)-this.ind;
+    if (thislength>rhs.mant.length) 
+     return this.ind;
+    /* lengths are the same; we can do a straight mantissa compare
+       unless maybe rounding [rounding is very unusual] */
+    if ((thislength<=set.digits)|(set.digits==0)) 
+     {
+      {int $6=thislength;i=0;for(;$6>0;$6--,i++){
+       if (this.mant[i]<rhs.mant[i]) 
+        return (byte)-this.ind;
+       if (this.mant[i]>rhs.mant[i]) 
+        return this.ind;
+       }
+      }/*i*/
+      return 0; // identical
+     }
+   /* drop through for full comparison */
+   }
+  else 
+   {
+    /* More fastpaths possible */
+    if (this.ind<rhs.ind) 
+     return -1;
+    if (this.ind>rhs.ind) 
+     return 1;
+   }
+  /* carry out a subtract to make the comparison */
+  newrhs=clone(rhs); // safe copy
+  newrhs.ind=(byte)-newrhs.ind; // prepare to subtract
+  return this.add(newrhs,set).ind; // add, and return sign of result
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #divide(BigDecimal, int)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the rounding mode is {@link MathContext#ROUND_HALF_UP}.
+  *
+  * The length of the decimal part (the scale) of the result will be
+  * the same as the scale of the current object, if the latter were
+  * formatted without exponential notation.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the division.
+  * @return     A plain <code>BigDecimal</code> whose value is
+  *             <code>this/rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs){
+  return this.dodivide('D',rhs,plainMC,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic and a
+  * rounding mode.
+  * <p>
+  * The same as {@link #divide(BigDecimal, int, int)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the second parameter is <code>this.scale()</code>, and
+  * the third is <code>round</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will
+  * therefore be the same as the scale of the current object, if the
+  * latter were formatted without exponential notation.
+  * <p>
+  * @param  rhs   The <code>BigDecimal</code> for the right hand side of
+  *               the division.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> whose value is
+  *               <code>this/rhs</code>, using fixed point arithmetic
+  *               and the specified rounding mode.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if <code>round</code> is {@link
+  *               MathContext#ROUND_UNNECESSARY} and
+  *               <code>this.scale()</code> is insufficient to
+  *               represent the result exactly.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int round){
+  com.ibm.icu.math.MathContext set;
+  set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round, too]
+  return this.dodivide('D',rhs,set,-1); // take scale from LHS
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this/rhs</code>, using fixed point arithmetic and a
+  * given scale and rounding mode.
+  * <p>
+  * The same as {@link #divide(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * <code>new MathContext(0, MathContext.PLAIN, false, round)</code>,
+  * except that the length of the decimal part (the scale) to be used
+  * for the result is explicit rather than being taken from
+  * <code>this</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the same as the scale of the current object, if the latter were
+  * formatted without exponential notation.
+  * <p>
+  * @param  rhs   The <code>BigDecimal</code> for the right hand side of
+  *               the division.
+  * @param  scale The <code>int</code> scale to be used for the result.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> whose value is
+  *               <code>this/rhs</code>, using fixed point arithmetic
+  *               and the specified rounding mode.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if <code>round</code> is {@link
+  *               MathContext#ROUND_UNNECESSARY} and <code>scale</code>
+  *               is insufficient to represent the result exactly.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int scale,int round){
+  com.ibm.icu.math.MathContext set;
+  if (scale<0) 
+   throw new java.lang.ArithmeticException("Negative scale:"+" "+scale);
+  set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round]
+  return this.dodivide('D',rhs,set,scale);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this/rhs</code>.
+  * <p>
+  * Implements the division (<b><code>/</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the division.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  return this.dodivide('D',rhs,set,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is the integer
+  * part of <code>this/rhs</code>.
+  * <p>
+  * The same as {@link #divideInteger(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the integer division.
+  * @return     A <code>BigDecimal</code> whose value is the integer
+  *             part of <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs){
+  // scale 0 to drop .000 when plain
+  return this.dodivide('I',rhs,plainMC,0);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the integer
+  * part of <code>this/rhs</code>.
+  * <p>
+  * Implements the integer division operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the integer division.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the integer
+  *             part of <code>this/rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if the result will not fit in the
+  *             number of digits specified for the context.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  // scale 0 to drop .000 when plain
+  return this.dodivide('I',rhs,set,0);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the maximum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * The same as {@link #max(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the maximum of <code>this</code> and <code>rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs){
+  return this.max(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * the maximum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * Returns the larger of the current object and the first parameter.
+  * <p>
+  * If calling the {@link #compareTo(BigDecimal, MathContext)} method
+  * with the same parameters would return <code>1</code> or
+  * <code>0</code>, then the result of calling the
+  * {@link #plus(MathContext)} method on the current object (using the
+  * same <code>MathContext</code> parameter) is returned.
+  * Otherwise, the result of calling the {@link #plus(MathContext)}
+  * method on the first parameter object (using the same
+  * <code>MathContext</code> parameter) is returned.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the maximum of <code>this</code> and <code>rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  if ((this.compareTo(rhs,set))>=0) 
+   return this.plus(set);
+  else 
+   return rhs.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the minimum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * The same as {@link #min(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the minimum of <code>this</code> and <code>rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs){
+  return this.min(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * the minimum of <code>this</code> and <code>rhs</code>.
+  * <p>
+  * Returns the smaller of the current object and the first parameter.
+  * <p>
+  * If calling the {@link #compareTo(BigDecimal, MathContext)} method
+  * with the same parameters would return <code>-1</code> or
+  * <code>0</code>, then the result of calling the
+  * {@link #plus(MathContext)} method on the current object (using the
+  * same <code>MathContext</code> parameter) is returned.
+  * Otherwise, the result of calling the {@link #plus(MathContext)}
+  * method on the first parameter object (using the same
+  * <code>MathContext</code> parameter) is returned.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the comparison.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             the minimum of <code>this</code> and <code>rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  if ((this.compareTo(rhs,set))<=0) 
+   return this.plus(set);
+  else 
+   return rhs.plus(set);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this*rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #add(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the sum of the scales of the operands, if they were formatted
+  * without exponential notation.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the multiplication.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this*rhs</code>, using fixed point arithmetic.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs){
+  return this.multiply(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this*rhs</code>.
+  * <p>
+  * Implements the multiplication (<b><code>*</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the multiplication.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this*rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal lhs;
+  int padding;
+  int reqdig;
+  byte multer[]=null;
+  byte multand[]=null;
+  int multandlen;
+  int acclen=0;
+  com.ibm.icu.math.BigDecimal res;
+  byte acc[];
+  int n=0;
+  byte mult=0;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity and proxy
+  
+  /* Prepare numbers (truncate, unless unlimited precision) */
+  padding=0; // trailing 0's to add
+  reqdig=set.digits; // local copy
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   // [we could reuse the new LHS for result in this case]
+   }
+  else 
+   {/* unlimited */
+    // fixed point arithmetic will want every trailing 0; we add these
+    // after the calculation rather than before, for speed.
+    if (lhs.exp>0) 
+     padding=padding+lhs.exp;
+    if (rhs.exp>0) 
+     padding=padding+rhs.exp;
+   }
+  
+  // For best speed, as in DMSRCN, we use the shorter number as the
+  // multiplier and the longer as the multiplicand.
+  // 1999.12.22: We used to special case when the result would fit in
+  //             a long, but with Java 1.3 this gave no advantage.
+  if (lhs.mant.length<rhs.mant.length) 
+   {
+    multer=lhs.mant;
+    multand=rhs.mant;
+   }
+  else 
+   {
+    multer=rhs.mant;
+    multand=lhs.mant;
+   }
+  
+  /* Calculate how long result byte array will be */
+  multandlen=(multer.length+multand.length)-1; // effective length
+  // optimize for 75% of the cases where a carry is expected...
+  if ((multer[0]*multand[0])>9) 
+   acclen=multandlen+1;
+  else 
+   acclen=multandlen;
+  
+  /* Now the main long multiplication loop */
+  res=new com.ibm.icu.math.BigDecimal(); // where we'll build result
+  acc=new byte[acclen]; // accumulator, all zeros
+  // 1998.07.01: calculate from left to right so that accumulator goes
+  // to likely final length on first addition; this avoids a one-digit
+  // extension (and object allocation) each time around the loop.
+  // Initial number therefore has virtual zeros added to right.
+  {int $7=multer.length;n=0;for(;$7>0;$7--,n++){
+   mult=multer[n];
+   if (mult!=0) 
+    { // [optimization]
+     // accumulate [accumulator is reusable array]
+     acc=byteaddsub(acc,acc.length,multand,multandlen,mult,true);
+    }
+   // divide multiplicand by 10 for next digit to right
+   multandlen--; // 'virtual length'
+   }
+  }/*n*/
+  
+  res.ind=(byte)(lhs.ind*rhs.ind); // final sign
+  res.exp=(lhs.exp+rhs.exp)-padding; // final exponent
+  // [overflow is checked by finish]
+  
+  /* add trailing zeros to the result, if necessary */
+  if (padding==0) 
+   res.mant=acc;
+  else 
+   res.mant=extend(acc,acc.length+padding); // add trailing 0s
+  return res.finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>-this</code>.
+  * <p>
+  * The same as {@link #negate(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * be <code>this.scale()</code>
+  *
+  *
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>-this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal negate(){
+  return this.negate(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>-this</code>.
+  * <p>
+  * Implements the negation (Prefix <b><code>-</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>-this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal negate(com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal res;
+  // Originally called minus(), changed to matched Java precedents
+  // This simply clones, flips the sign, and possibly rounds
+  if (set.lostDigits) 
+   checkdigits((com.ibm.icu.math.BigDecimal)null,set.digits);
+  res=clone(this); // safe copy
+  res.ind=(byte)-res.ind;
+  return res.finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>+this</code>.
+  * Note that <code>this</code> is not necessarily a
+  * plain <code>BigDecimal</code>, but the result will always be.
+  * <p>
+  * The same as {@link #plus(MathContext)}, where the context is
+  * <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * be <code>this.scale()</code>
+  *
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>+this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal plus(){
+  return this.plus(plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is
+  * <code>+this</code>.
+  * <p>
+  * Implements the plus (Prefix <b><code>+</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * This method is useful for rounding or otherwise applying a context
+  * to a decimal value.
+  *
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return A <code>BigDecimal</code> whose value is
+  *         <code>+this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal plus(com.ibm.icu.math.MathContext set){
+  // This clones and forces the result to the new settings
+  // May return same object
+  if (set.lostDigits) 
+   checkdigits((com.ibm.icu.math.BigDecimal)null,set.digits);
+  // Optimization: returns same object for some common cases
+  if (set.form==com.ibm.icu.math.MathContext.PLAIN) 
+   if (this.form==com.ibm.icu.math.MathContext.PLAIN) 
+    {
+     if (this.mant.length<=set.digits) 
+      return this;
+     if (set.digits==0) 
+      return this;
+    }
+  return clone(this).finish(set,false);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this**rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #pow(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The parameter is the power to which the <code>this</code> will be
+  * raised; it must be in the range 0 through 999999999, and must
+  * have a decimal part of zero.  Note that these restrictions may be
+  * removed in the future, so they should not be used as a test for a
+  * whole number.
+  * <p>
+  * In addition, the power must not be negative, as no
+  * <code>MathContext</code> is used and so the result would then
+  * always be 0.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the operation (the power).
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this**rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is out of range or
+  *             is not a whole number.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs){
+  return this.pow(rhs,plainMC);
+  }
+ // The name for this method is inherited from the precedent set by the
+ // BigInteger and Math classes.
+ 
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this**rhs</code>.
+  * <p>
+  * Implements the power (<b><code>**</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * The first parameter is the power to which the <code>this</code>
+  * will be raised; it must be in the range -999999999 through
+  * 999999999, and must have a decimal part of zero.  Note that these
+  * restrictions may be removed in the future, so they should not be
+  * used as a test for a whole number.
+  * <p>
+  * If the <code>digits</code> setting of the <code>MathContext</code>
+  * parameter is 0, the power must be zero or positive.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the operation (the power).
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this**rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is out of range or
+  *             is not a whole number.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  int n;
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  int workdigits=0;
+  int L=0;
+  com.ibm.icu.math.MathContext workset;
+  com.ibm.icu.math.BigDecimal res;
+  boolean seenbit;
+  int i=0;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  n=rhs.intcheck(MinArg,MaxArg); // check RHS by the rules
+  lhs=this; // clarified name
+  
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig==0) 
+   {
+    if (rhs.ind==isneg) 
+     throw new java.lang.ArithmeticException("Negative power:"+" "+rhs.toString());
+    workdigits=0;
+   }
+  else 
+   {/* non-0 digits */
+    if ((rhs.mant.length+rhs.exp)>reqdig) 
+     throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString());
+    
+    /* Round the lhs to DIGITS if need be */
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    
+    /* L for precision calculation [see ANSI X3.274-1996] */
+    L=rhs.mant.length+rhs.exp; // length without decimal zeros/exp
+    workdigits=(reqdig+L)+1; // calculate the working DIGITS
+   }
+  
+  /* Create a copy of set for working settings */
+  // Note: no need to check for lostDigits again.
+  // 1999.07.17 Note: this construction must follow RHS check
+  workset=new com.ibm.icu.math.MathContext(workdigits,set.form,false,set.roundingMode);
+  
+  res=ONE; // accumulator
+  if (n==0) 
+   return res; // x**0 == 1
+  if (n<0) 
+   n=(int)-n; // [rhs.ind records the sign]
+  seenbit=false; // set once we've seen a 1-bit
+  {i=1;i:for(;;i++){ // for each bit [top bit ignored]
+   n=n+n; // shift left 1 bit
+   if (n<0) 
+    { // top bit is set
+     seenbit=true; // OK, we're off
+     res=res.multiply(lhs,workset); // acc=acc*x
+    }
+   if (i==31) 
+    break i; // that was the last bit
+   if ((!seenbit)) 
+    continue i; // we don't have to square 1
+   res=res.multiply(res,workset); // acc=acc*acc [square]
+   }
+  }/*i*/ // 32 bits
+  if (rhs.ind<0)  // was a **-n [hence digits>0]
+   res=ONE.divide(res,workset); // .. so acc=1/acc
+  return res.finish(set,true); // round and strip [original digits]
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * the remainder of <code>this/rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #remainder(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * This is not the modulo operator -- the result may be negative.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the remainder operation.
+  * @return     A <code>BigDecimal</code> whose value is the remainder
+  *             of <code>this/rhs</code>, using fixed point arithmetic.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs){
+  return this.dodivide('R',rhs,plainMC,-1);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is the remainder of
+  * <code>this/rhs</code>.
+  * <p>
+  * Implements the remainder operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  * <p>
+  * This is not the modulo operator -- the result may be negative.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the remainder operation.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is the remainder
+  *             of <code>this+rhs</code>.
+  * @throws ArithmeticException if <code>rhs</code> is zero.
+  * @throws ArithmeticException if the integer part of the result will
+  *             not fit in the number of digits specified for the
+  *             context.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  return this.dodivide('R',rhs,set,-1);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose value is
+  * <code>this-rhs</code>, using fixed point arithmetic.
+  * <p>
+  * The same as {@link #subtract(BigDecimal, MathContext)},
+  * where the <code>BigDecimal</code> is <code>rhs</code>,
+  * and the context is <code>new MathContext(0, MathContext.PLAIN)</code>.
+  * <p>
+  * The length of the decimal part (the scale) of the result will be
+  * the maximum of the scales of the two operands.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the subtraction.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this-rhs</code>, using fixed point arithmetic.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs){
+  return this.subtract(rhs,plainMC);
+  }
+
+ /**
+  * Returns a <code>BigDecimal</code> whose value is <code>this-rhs</code>.
+  * <p>
+  * Implements the subtraction (<b><code>-</code></b>) operator
+  * (as defined in the decimal documentation, see {@link BigDecimal
+  * class header}),
+  * and returns the result as a <code>BigDecimal</code> object.
+  *
+  * @param  rhs The <code>BigDecimal</code> for the right hand side of
+  *             the subtraction.
+  * @param  set The <code>MathContext</code> arithmetic settings.
+  * @return     A <code>BigDecimal</code> whose value is
+  *             <code>this-rhs</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){
+  com.ibm.icu.math.BigDecimal newrhs;
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  // [add will recheck .. but would report -rhs]
+  /* carry out the subtraction */
+  // we could fastpath -0, but it is too rare.
+  newrhs=clone(rhs); // safe copy
+  newrhs.ind=(byte)-newrhs.ind; // prepare to subtract
+  return this.add(newrhs,set); // arithmetic
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Other methods                                                    */
+ /* ---------------------------------------------------------------- */
+ 
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>byte</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>byte</code> (8-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>byte</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a <code>byte</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public byte byteValueExact(){
+  int num;
+  num=this.intValueExact(); // will check decimal part too
+  if ((num>127)|(num<(-128))) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+  return (byte)num;
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> with the value of the parameter.
+  * <p>
+  * If the parameter is <code>null</code>, or is not an instance of the
+  * <code>BigDecimal</code> type, an exception is thrown.
+  * Otherwise, the parameter is cast to type <code>BigDecimal</code>
+  * and the result of the {@link #compareTo(BigDecimal)} method,
+  * using the cast parameter, is returned.
+  * <p>
+  * The {@link #compareTo(BigDecimal, MathContext)} method should be
+  * used when a <code>MathContext</code> is needed for the comparison.
+  *
+  * @param  rhsobj The <code>Object</code> for the right hand side of
+  *             the comparison.
+  * @return     An <code>int</code> whose value is -1, 0, or 1 as
+  *             <code>this</code> is numerically less than, equal to,
+  *             or greater than <code>rhs</code>.
+  * @throws ClassCastException if <code>rhs</code> cannot be cast to
+  *                 a <code>BigDecimal</code> object.
+  * @see    #compareTo(BigDecimal)
+  * @stable ICU 2.0
+  */
+ 
+ public int compareTo(java.lang.Object rhsobj){
+  // the cast in the next line will raise ClassCastException if necessary
+  return compareTo((com.ibm.icu.math.BigDecimal)rhsobj,plainMC);
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>double</code>.
+  * If the <code>BigDecimal</code> is out of the possible range for a
+  * <code>double</code> (64-bit signed floating point) result then an
+  * <code>ArithmeticException</code> is thrown.
+  * <p>
+  * The double produced is identical to result of expressing the
+  * <code>BigDecimal</code> as a <code>String</code> and then
+  * converting it using the <code>Double(String)</code> constructor;
+  * this can result in values of <code>Double.NEGATIVE_INFINITY</code>
+  * or <code>Double.POSITIVE_INFINITY</code>.
+  *
+  * @return A <code>double</code> corresponding to <code>this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public double doubleValue(){
+  // We go via a String [as does BigDecimal in JDK 1.2]
+  // Next line could possibly raise NumberFormatException
+  return java.lang.Double.valueOf(this.toString()).doubleValue();
+  }
+
+ /**
+  * Compares this <code>BigDecimal</code> with <code>rhs</code> for
+  * equality.
+  * <p>
+  * If the parameter is <code>null</code>, or is not an instance of the
+  * BigDecimal type, or is not exactly equal to the current
+  * <code>BigDecimal</code> object, then <i>false</i> is returned.
+  * Otherwise, <i>true</i> is returned.
+  * <p>
+  * "Exactly equal", here, means that the <code>String</code>
+  * representations of the <code>BigDecimal</code> numbers are
+  * identical (they have the same characters in the same sequence).
+  * <p>
+  * The {@link #compareTo(BigDecimal, MathContext)} method should be
+  * used for more general comparisons.
+  * @param  obj The <code>Object</code> for the right hand side of
+  *             the comparison.
+  * @return     A <code>boolean</code> whose value <i>true</i> if and
+  *             only if the operands have identical string representations.
+  * @throws ClassCastException if <code>rhs</code> cannot be cast to
+  *                 a <code>BigDecimal</code> object.
+  * @stable ICU 2.0
+  * @see    #compareTo(Object)
+  * @see    #compareTo(BigDecimal)
+  * @see    #compareTo(BigDecimal, MathContext)
+  */
+ 
+ public boolean equals(java.lang.Object obj){
+  com.ibm.icu.math.BigDecimal rhs;
+  int i=0;
+  char lca[]=null;
+  char rca[]=null;
+  // We are equal iff toString of both are exactly the same
+  if (obj==null) 
+   return false; // not equal
+  if ((!(((obj instanceof com.ibm.icu.math.BigDecimal))))) 
+   return false; // not a decimal
+  rhs=(com.ibm.icu.math.BigDecimal)obj; // cast; we know it will work
+  if (this.ind!=rhs.ind) 
+   return false; // different signs never match
+  if (((this.mant.length==rhs.mant.length)&(this.exp==rhs.exp))&(this.form==rhs.form)) 
+   
+   { // mantissas say all
+    // here with equal-length byte arrays to compare
+    {int $8=this.mant.length;i=0;for(;$8>0;$8--,i++){
+     if (this.mant[i]!=rhs.mant[i]) 
+      return false;
+     }
+    }/*i*/
+   }
+  else 
+   { // need proper layout
+    lca=this.layout(); // layout to character array
+    rca=rhs.layout();
+    if (lca.length!=rca.length) 
+     return false; // mismatch
+    // here with equal-length character arrays to compare
+    {int $9=lca.length;i=0;for(;$9>0;$9--,i++){
+     if (lca[i]!=rca[i]) 
+      return false;
+     }
+    }/*i*/
+   }
+  return true; // arrays have identical content
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>float</code>.
+  * If the <code>BigDecimal</code> is out of the possible range for a
+  * <code>float</code> (32-bit signed floating point) result then an
+  * <code>ArithmeticException</code> is thrown.
+  * <p>
+  * The float produced is identical to result of expressing the
+  * <code>BigDecimal</code> as a <code>String</code> and then
+  * converting it using the <code>Float(String)</code> constructor;
+  * this can result in values of <code>Float.NEGATIVE_INFINITY</code>
+  * or <code>Float.POSITIVE_INFINITY</code>.
+  *
+  * @return A <code>float</code> corresponding to <code>this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public float floatValue(){
+  return java.lang.Float.valueOf(this.toString()).floatValue();
+  }
+
+ /**
+  * Returns the <code>String</code> representation of this
+  * <code>BigDecimal</code>, modified by layout parameters.
+  * <p>
+  * <i>This method is provided as a primitive for use by more
+  * sophisticated classes, such as <code>DecimalFormat</code>, that
+  * can apply locale-sensitive editing of the result.  The level of
+  * formatting that it provides is a necessary part of the BigDecimal
+  * class as it is sensitive to and must follow the calculation and
+  * rounding rules for BigDecimal arithmetic.
+  * However, if the function is provided elsewhere, it may be removed
+  * from this class. </i>
+  * <p>
+  * The parameters, for both forms of the <code>format</code> method
+  * are all of type <code>int</code>.
+  * A value of -1 for any parameter indicates that the default action
+  * or value for that parameter should be used.
+  * <p>
+  * The parameters, <code>before</code> and <code>after</code>,
+  * specify the number of characters to be used for the integer part
+  * and decimal part of the result respectively.  Exponential notation
+  * is not used. If either parameter is -1 (which indicates the default
+  * action), the number of characters used will be exactly as many as
+  * are needed for that part.
+  * <p>
+  * <code>before</code> must be a positive number; if it is larger than
+  * is needed to contain the integer part, that part is padded on the
+  * left with blanks to the requested length. If <code>before</code> is
+  * not large enough to contain the integer part of the number
+  * (including the sign, for negative numbers) an exception is thrown.
+  * <p>
+  * <code>after</code> must be a non-negative number; if it is not the
+  * same size as the decimal part of the number, the number will be
+  * rounded (or extended with zeros) to fit.  Specifying 0 for
+  * <code>after</code> will cause the number to be rounded to an
+  * integer (that is, it will have no decimal part or decimal point).
+  * The rounding method will be the default,
+  * <code>MathContext.ROUND_HALF_UP</code>.
+  * <p>
+  * Other rounding methods, and the use of exponential notation, can
+  * be selected by using {@link #format(int,int,int,int,int,int)}.
+  * Using the two-parameter form of the method has exactly the same
+  * effect as using the six-parameter form with the final four
+  * parameters all being -1.
+  *
+  * @param  before The <code>int</code> specifying the number of places
+  *                before the decimal point.  Use -1 for 'as many as
+  *                are needed'.
+  * @param  after  The <code>int</code> specifying the number of places
+  *                after the decimal point.  Use -1 for 'as many as are
+  *                needed'.
+  * @return        A <code>String</code> representing this
+  *                <code>BigDecimal</code>, laid out according to the
+  *                specified parameters
+  * @throws ArithmeticException if the number cannot be laid out as
+  *                requested.
+  * @throws IllegalArgumentException if a parameter is out of range.
+  * @stable ICU 2.0
+  * @see    #toString
+  * @see    #toCharArray
+  */
+ 
+ public java.lang.String format(int before,int after){
+  return format(before,after,-1,-1,com.ibm.icu.math.MathContext.SCIENTIFIC,ROUND_HALF_UP);
+  }
+
+ /**
+  * Returns the <code>String</code> representation of this
+  * <code>BigDecimal</code>, modified by layout parameters and allowing
+  * exponential notation.
+  * <p>
+  * <i>This method is provided as a primitive for use by more
+  * sophisticated classes, such as <code>DecimalFormat</code>, that
+  * can apply locale-sensitive editing of the result.  The level of
+  * formatting that it provides is a necessary part of the BigDecimal
+  * class as it is sensitive to and must follow the calculation and
+  * rounding rules for BigDecimal arithmetic.
+  * However, if the function is provided elsewhere, it may be removed
+  * from this class. </i>
+  * <p>
+  * The parameters are all of type <code>int</code>.
+  * A value of -1 for any parameter indicates that the default action
+  * or value for that parameter should be used.
+  * <p>
+  * The first two parameters (<code>before</code> and
+  * <code>after</code>) specify the number of characters to be used for
+  * the integer part and decimal part of the result respectively, as
+  * defined for {@link #format(int,int)}.
+  * If either of these is -1 (which indicates the default action), the
+  * number of characters used will be exactly as many as are needed for
+  * that part.
+  * <p>
+  * The remaining parameters control the use of exponential notation
+  * and rounding.  Three (<code>explaces</code>, <code>exdigits</code>,
+  * and <code>exform</code>) control the exponent part of the result.
+  * As before, the default action for any of these parameters may be
+  * selected by using the value -1.
+  * <p>
+  * <code>explaces</code> must be a positive number; it sets the number
+  * of places (digits after the sign of the exponent) to be used for
+  * any exponent part, the default (when <code>explaces</code> is -1)
+  * being to use as many as are needed.
+  * If <code>explaces</code> is not -1, space is always reserved for
+  * an exponent; if one is not needed (for example, if the exponent
+  * will be 0) then <code>explaces</code>+2 blanks are appended to the
+  * result.
+  * <!-- (This preserves vertical alignment of similarly formatted
+  *       numbers in a monospace font.) -->
+  * If <code>explaces</code> is not -1 and is not large enough to
+  * contain the exponent, an exception is thrown.
+  * <p>
+  * <code>exdigits</code> sets the trigger point for use of exponential
+  * notation. If, before any rounding, the number of places needed
+  * before the decimal point exceeds <code>exdigits</code>, or if the
+  * absolute value of the result is less than <code>0.000001</code>,
+  * then exponential form will be used, provided that
+  * <code>exdigits</code> was specified.
+  * When <code>exdigits</code> is -1, exponential notation will never
+  * be used. If 0 is specified for <code>exdigits</code>, exponential
+  * notation is always used unless the exponent would be 0.
+  * <p>
+  * <code>exform</code> sets the form for exponential notation (if
+  * needed).
+  * It  may be either {@link MathContext#SCIENTIFIC} or
+  * {@link MathContext#ENGINEERING}.
+  * If the latter, engineering, form is requested, up to three digits
+  * (plus sign, if negative) may be needed for the integer part of the
+  * result (<code>before</code>).  Otherwise, only one digit (plus
+  * sign, if negative) is needed.
+  * <p>
+  * Finally, the sixth argument, <code>exround</code>, selects the
+  * rounding algorithm to be used, and must be one of the values
+  * indicated by a public constant in the {@link MathContext} class
+  * whose name starts with <code>ROUND_</code>.
+  * The default (<code>ROUND_HALF_UP</code>) may also be selected by
+  * using the value -1, as before.
+  * <p>
+  * The special value <code>MathContext.ROUND_UNNECESSARY</code> may be
+  * used to detect whether non-zero digits are discarded -- if
+  * <code>exround</code> has this value than if non-zero digits would
+  * be discarded (rounded) during formatting then an
+  * <code>ArithmeticException</code> is thrown.
+  *
+  * @param  before   The <code>int</code> specifying the number of places
+  *                  before the decimal point.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  after    The <code>int</code> specifying the number of places
+  *                  after the decimal point.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  explaces The <code>int</code> specifying the number of places
+  *                  to be used for any exponent.
+  *                  Use -1 for 'as many as are needed'.
+  * @param  exdigits The <code>int</code> specifying the trigger
+  *                  (digits before the decimal point) which if
+  *                  exceeded causes exponential notation to be used.
+  *                  Use 0 to force exponential notation.
+  *                  Use -1 to force plain notation (no exponential
+  *                  notation).
+  * @param  exformint   The <code>int</code> specifying the form of
+  *                  exponential notation to be used
+  *                  ({@link MathContext#SCIENTIFIC} or
+  *                  {@link MathContext#ENGINEERING}).
+  * @param  exround  The <code>int</code> specifying the rounding mode
+  *                  to use.
+  *                  Use -1 for the default, {@link MathContext#ROUND_HALF_UP}.
+  * @return          A <code>String</code> representing this
+  *                  <code>BigDecimal</code>, laid out according to the
+  *                  specified parameters
+  * @throws ArithmeticException if the number cannot be laid out as
+  *                  requested.
+  * @throws IllegalArgumentException if a parameter is out of range.
+  * @see    #toString
+  * @see    #toCharArray
+  * @stable ICU 2.0
+  */
+ 
+ public java.lang.String format(int before,int after,int explaces,int exdigits,int exformint,int exround){
+  com.ibm.icu.math.BigDecimal num;
+  int mag=0;
+  int thisafter=0;
+  int lead=0;
+  byte newmant[]=null;
+  int chop=0;
+  int need=0;
+  int oldexp=0;
+  char a[];
+  int p=0;
+  char newa[]=null;
+  int i=0;
+  int places=0;
+  
+  
+  /* Check arguments */
+  if ((before<(-1))|(before==0)) 
+   badarg("format",1,java.lang.String.valueOf(before));
+  if (after<(-1)) 
+   badarg("format",2,java.lang.String.valueOf(after));
+  if ((explaces<(-1))|(explaces==0)) 
+   badarg("format",3,java.lang.String.valueOf(explaces));
+  if (exdigits<(-1)) 
+   badarg("format",4,java.lang.String.valueOf(explaces));
+  {/*select*/
+  if (exformint==com.ibm.icu.math.MathContext.SCIENTIFIC){
+  }else if (exformint==com.ibm.icu.math.MathContext.ENGINEERING){
+  }else if (exformint==(-1))
+   exformint=com.ibm.icu.math.MathContext.SCIENTIFIC;
+   // note PLAIN isn't allowed
+  else{
+   badarg("format",5,java.lang.String.valueOf(exformint));
+  }
+  }
+  // checking the rounding mode is done by trying to construct a
+  // MathContext object with that mode; it will fail if bad
+  if (exround!=ROUND_HALF_UP) 
+   {try{ // if non-default...
+    if (exround==(-1)) 
+     exround=ROUND_HALF_UP;
+    else 
+     new com.ibm.icu.math.MathContext(9,com.ibm.icu.math.MathContext.SCIENTIFIC,false,exround);
+   }
+   catch (java.lang.IllegalArgumentException $10){
+    badarg("format",6,java.lang.String.valueOf(exround));
+   }}
+  
+  num=clone(this); // make private copy
+  
+  /* Here:
+     num       is BigDecimal to format
+     before    is places before point [>0]
+     after     is places after point  [>=0]
+     explaces  is exponent places     [>0]
+     exdigits  is exponent digits     [>=0]
+     exformint is exponent form       [one of two]
+     exround   is rounding mode       [one of eight]
+     'before' through 'exdigits' are -1 if not specified
+  */
+  
+  /* determine form */
+  {do{/*select*/
+  if (exdigits==(-1))
+   num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  else if (num.ind==iszero)
+   num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  else{
+   // determine whether triggers
+   mag=num.exp+num.mant.length;
+   if (mag>exdigits) 
+    num.form=(byte)exformint;
+   else 
+    if (mag<(-5)) 
+     num.form=(byte)exformint;
+    else 
+     num.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+  }
+  }while(false);}/*setform*/
+  
+  /* If 'after' was specified then we may need to adjust the
+     mantissa.  This is a little tricky, as we must conform to the
+     rules of exponential layout if necessary (e.g., we cannot end up
+     with 10.0 if scientific). */
+  if (after>=0) 
+   {setafter:for(;;){
+    // calculate the current after-length
+    {/*select*/
+    if (num.form==com.ibm.icu.math.MathContext.PLAIN)
+     thisafter=(int)-num.exp; // has decimal part
+    else if (num.form==com.ibm.icu.math.MathContext.SCIENTIFIC)
+     thisafter=num.mant.length-1;
+    else{ // engineering
+     lead=(((num.exp+num.mant.length)-1))%3; // exponent to use
+     if (lead<0) 
+      lead=3+lead; // negative exponent case
+     lead++; // number of leading digits
+     if (lead>=num.mant.length) 
+      thisafter=0;
+     else 
+      thisafter=num.mant.length-lead;
+    }
+    }
+    if (thisafter==after) 
+     break setafter; // we're in luck
+    if (thisafter<after) 
+     { // need added trailing zeros
+      // [thisafter can be negative]
+      newmant=extend(num.mant,(num.mant.length+after)-thisafter);
+      num.mant=newmant;
+      num.exp=num.exp-((after-thisafter)); // adjust exponent
+      if (num.exp<MinExp) 
+       throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+num.exp);
+      break setafter;
+     }
+    // We have too many digits after the decimal point; this could
+    // cause a carry, which could change the mantissa...
+    // Watch out for implied leading zeros in PLAIN case
+    chop=thisafter-after; // digits to lop [is >0]
+    if (chop>num.mant.length) 
+     { // all digits go, no chance of carry
+      // carry on with zero
+      num.mant=ZERO.mant;
+      num.ind=iszero;
+      num.exp=0;
+      continue setafter; // recheck: we may need trailing zeros
+     }
+    // we have a digit to inspect from existing mantissa
+    // round the number as required
+    need=num.mant.length-chop; // digits to end up with [may be 0]
+    oldexp=num.exp; // save old exponent
+    num.round(need,exround);
+    // if the exponent grew by more than the digits we chopped, then
+    // we must have had a carry, so will need to recheck the layout
+    if ((num.exp-oldexp)==chop) 
+     break setafter; // number did not have carry
+    // mantissa got extended .. so go around and check again
+    }
+   }/*setafter*/
+  
+  a=num.layout(); // lay out, with exponent if required, etc.
+  
+  /* Here we have laid-out number in 'a' */
+  // now apply 'before' and 'explaces' as needed
+  if (before>0) 
+   {
+    // look for '.' or 'E'
+    {int $11=a.length;p=0;p:for(;$11>0;$11--,p++){
+     if (a[p]=='.') 
+      break p;
+     if (a[p]=='E') 
+      break p;
+     }
+    }/*p*/
+    // p is now offset of '.', 'E', or character after end of array
+    // that is, the current length of before part
+    if (p>before) 
+     badarg("format",1,java.lang.String.valueOf(before)); // won't fit
+    if (p<before) 
+     { // need leading blanks
+      newa=new char[(a.length+before)-p];
+      {int $12=before-p;i=0;for(;$12>0;$12--,i++){
+       newa[i]=' ';
+       }
+      }/*i*/
+      java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,i,a.length);
+      a=newa;
+     }
+   // [if p=before then it's just the right length]
+   }
+  
+  if (explaces>0) 
+   {
+    // look for 'E' [cannot be at offset 0]
+    {int $13=a.length-1;p=a.length-1;p:for(;$13>0;$13--,p--){
+     if (a[p]=='E') 
+      break p;
+     }
+    }/*p*/
+    // p is now offset of 'E', or 0
+    if (p==0) 
+     { // no E part; add trailing blanks
+      newa=new char[(a.length+explaces)+2];
+      java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,a.length);
+      {int $14=explaces+2;i=a.length;for(;$14>0;$14--,i++){
+       newa[i]=' ';
+       }
+      }/*i*/
+      a=newa;
+     }
+    else 
+     {/* found E */ // may need to insert zeros
+      places=(a.length-p)-2; // number so far
+      if (places>explaces) 
+       badarg("format",3,java.lang.String.valueOf(explaces));
+      if (places<explaces) 
+       { // need to insert zeros
+        newa=new char[(a.length+explaces)-places];
+        java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,p+2); // through E and sign
+        {int $15=explaces-places;i=p+2;for(;$15>0;$15--,i++){
+         newa[i]='0';
+         }
+        }/*i*/
+        java.lang.System.arraycopy((java.lang.Object)a,p+2,(java.lang.Object)newa,i,places); // remainder of exponent
+        a=newa;
+       }
+     // [if places=explaces then it's just the right length]
+     }
+   }
+  return new java.lang.String(a);
+  }
+
+ /**
+  * Returns the hashcode for this <code>BigDecimal</code>.
+  * This hashcode is suitable for use by the
+  * <code>java.util.Hashtable</code> class.
+  * <p>
+  * Note that two <code>BigDecimal</code> objects are only guaranteed
+  * to produce the same hashcode if they are exactly equal (that is,
+  * the <code>String</code> representations of the
+  * <code>BigDecimal</code> numbers are identical -- they have the same
+  * characters in the same sequence).
+  *
+  * @return An <code>int</code> that is the hashcode for <code>this</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public int hashCode(){
+  // Maybe calculate ourselves, later.  If so, note that there can be
+  // more than one internal representation for a given toString() result.
+  return this.toString().hashCode();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to an <code>int</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part it is
+  * discarded. If the <code>BigDecimal</code> is out of the possible
+  * range for an <code>int</code> (32-bit signed integer) result then
+  * only the low-order 32 bits are used. (That is, the number may be
+  * <i>decapitated</i>.)  To avoid unexpected errors when these
+  * conditions occur, use the {@link #intValueExact} method.
+  *
+  * @return An <code>int</code> converted from <code>this</code>,
+  *         truncated and decapitated if necessary.
+  * @stable ICU 2.0
+  */
+ 
+ public int intValue(){
+  return toBigInteger().intValue();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to an <code>int</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for an <code>int</code> (32-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return An <code>int</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in an
+  *                 <code>int</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public int intValueExact(){
+  int lodigit;
+  int useexp=0;
+  int result;
+  int i=0;
+  int topdig=0;
+  // This does not use longValueExact() as the latter can be much
+  // slower.
+  // intcheck (from pow) relies on this to check decimal part
+  if (ind==iszero) 
+   return 0; // easy, and quite common
+  /* test and drop any trailing decimal part */
+  lodigit=mant.length-1;
+  if (exp<0) 
+   {
+    lodigit=lodigit+exp; // reduces by -(-exp)
+    /* all decimal places must be 0 */
+    if ((!(allzero(mant,lodigit+1)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+    if (lodigit<0) 
+     return 0; // -1<this<1
+    useexp=0;
+   }
+  else 
+   {/* >=0 */
+    if ((exp+lodigit)>9)  // early exit
+     throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+    useexp=exp;
+   }
+  /* convert the mantissa to binary, inline for speed */
+  result=0;
+  {int $16=lodigit+useexp;i=0;for(;i<=$16;i++){
+   result=result*10;
+   if (i<=lodigit) 
+    result=result+mant[i];
+   }
+  }/*i*/
+  
+  /* Now, if the risky length, check for overflow */
+  if ((lodigit+useexp)==9) 
+   {
+    // note we cannot just test for -ve result, as overflow can move a
+    // zero into the top bit [consider 5555555555]
+    topdig=result/1000000000; // get top digit, preserving sign
+    if (topdig!=mant[0]) 
+     { // digit must match and be positive
+      // except in the special case ...
+      if (result==java.lang.Integer.MIN_VALUE)  // looks like the special
+       if (ind==isneg)  // really was negative
+        if (mant[0]==2) 
+         return result; // really had top digit 2
+      throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+     }
+   }
+  
+  /* Looks good */
+  if (ind==ispos) 
+   return result;
+  return (int)-result;
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>long</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part it is
+  * discarded. If the <code>BigDecimal</code> is out of the possible
+  * range for a <code>long</code> (64-bit signed integer) result then
+  * only the low-order 64 bits are used. (That is, the number may be
+  * <i>decapitated</i>.)  To avoid unexpected errors when these
+  * conditions occur, use the {@link #longValueExact} method.
+  *
+  * @return A <code>long</code> converted from <code>this</code>,
+  *         truncated and decapitated if necessary.
+  * @stable ICU 2.0
+  */
+ 
+ public long longValue(){
+  return toBigInteger().longValue();
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>long</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>long</code> (64-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>long</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a
+  *                 <code>long</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public long longValueExact(){
+  int lodigit;
+  int cstart=0;
+  int useexp=0;
+  long result;
+  int i=0;
+  long topdig=0;
+  // Identical to intValueExact except for result=long, and exp>=20 test
+  if (ind==0) 
+   return 0; // easy, and quite common
+  lodigit=mant.length-1; // last included digit
+  if (exp<0) 
+   {
+    lodigit=lodigit+exp; // -(-exp)
+    /* all decimal places must be 0 */
+    if (lodigit<0) 
+     cstart=0;
+    else 
+     cstart=lodigit+1;
+    if ((!(allzero(mant,cstart)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+    if (lodigit<0) 
+     return 0; // -1<this<1
+    useexp=0;
+   }
+  else 
+   {/* >=0 */
+    if ((exp+mant.length)>18)  // early exit
+     throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+    useexp=exp;
+   }
+  
+  /* convert the mantissa to binary, inline for speed */
+  // note that we could safely use the 'test for wrap to negative'
+  // algorithm here, but instead we parallel the intValueExact
+  // algorithm for ease of checking and maintenance.
+  result=(long)0;
+  {int $17=lodigit+useexp;i=0;for(;i<=$17;i++){
+   result=result*10;
+   if (i<=lodigit) 
+    result=result+mant[i];
+   }
+  }/*i*/
+  
+  /* Now, if the risky length, check for overflow */
+  if ((lodigit+useexp)==18) 
+   {
+    topdig=result/1000000000000000000L; // get top digit, preserving sign
+    if (topdig!=mant[0]) 
+     { // digit must match and be positive
+      // except in the special case ...
+      if (result==java.lang.Long.MIN_VALUE)  // looks like the special
+       if (ind==isneg)  // really was negative
+        if (mant[0]==9) 
+         return result; // really had top digit 9
+      throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+     }
+   }
+  
+  /* Looks good */
+  if (ind==ispos) 
+   return result;
+  return (long)-result;
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose decimal point has
+  * been moved to the left by a specified number of positions.
+  * The parameter, <code>n</code>, specifies the number of positions to
+  * move the decimal point.
+  * That is, if <code>n</code> is 0 or positive, the number returned is
+  * given by:
+  * <p><code>
+  * this.multiply(TEN.pow(new BigDecimal(-n)))
+  * </code>
+  * <p>
+  * <code>n</code> may be negative, in which case the method returns
+  * the same result as <code>movePointRight(-n)</code>.
+  *
+  * @param  n The <code>int</code> specifying the number of places to
+  *           move the decimal point leftwards.
+  * @return   A <code>BigDecimal</code> derived from
+  *           <code>this</code>, with the decimal point moved
+  *           <code>n</code> places to the left.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal movePointLeft(int n){
+  com.ibm.icu.math.BigDecimal res;
+  // very little point in optimizing for shift of 0
+  res=clone(this);
+  res.exp=res.exp-n;
+  return res.finish(plainMC,false); // finish sets form and checks exponent
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> whose decimal point has
+  * been moved to the right by a specified number of positions.
+  * The parameter, <code>n</code>, specifies the number of positions to
+  * move the decimal point.
+  * That is, if <code>n</code> is 0 or positive, the number returned is
+  * given by:
+  * <p><code>
+  * this.multiply(TEN.pow(new BigDecimal(n)))
+  * </code>
+  * <p>
+  * <code>n</code> may be negative, in which case the method returns
+  * the same result as <code>movePointLeft(-n)</code>.
+  *
+  * @param  n The <code>int</code> specifying the number of places to
+  *           move the decimal point rightwards.
+  * @return   A <code>BigDecimal</code> derived from
+  *           <code>this</code>, with the decimal point moved
+  *           <code>n</code> places to the right.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal movePointRight(int n){
+  com.ibm.icu.math.BigDecimal res;
+  res=clone(this);
+  res.exp=res.exp+n;
+  return res.finish(plainMC,false);
+  }
+
+ /**
+  * Returns the scale of this <code>BigDecimal</code>.
+  * Returns a non-negative <code>int</code> which is the scale of the
+  * number. The scale is the number of digits in the decimal part of
+  * the number if the number were formatted without exponential
+  * notation.
+  *
+  * @return An <code>int</code> whose value is the scale of this
+  *         <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public int scale(){
+  if (exp>=0) 
+   return 0; // scale can never be negative
+  return (int)-exp;
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> with a given scale.
+  * <p>
+  * If the given scale (which must be zero or positive) is the same as
+  * or greater than the length of the decimal part (the scale) of this
+  * <code>BigDecimal</code> then trailing zeros will be added to the
+  * decimal part as necessary.
+  * <p>
+  * If the given scale is less than the length of the decimal part (the
+  * scale) of this <code>BigDecimal</code> then trailing digits
+  * will be removed, and in this case an
+  * <code>ArithmeticException</code> is thrown if any discarded digits
+  * are non-zero.
+  * <p>
+  * The same as {@link #setScale(int, int)}, where the first parameter
+  * is the scale, and the second is
+  * <code>MathContext.ROUND_UNNECESSARY</code>.
+  *
+  * @param  scale The <code>int</code> specifying the scale of the
+  *               resulting <code>BigDecimal</code>.
+  * @return       A plain <code>BigDecimal</code> with the given scale.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if reducing scale would discard
+  *               non-zero digits.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal setScale(int scale){
+  return setScale(scale,ROUND_UNNECESSARY);
+  }
+
+ /**
+  * Returns a plain <code>BigDecimal</code> with a given scale.
+  * <p>
+  * If the given scale (which must be zero or positive) is the same as
+  * or greater than the length of the decimal part (the scale) of this
+  * <code>BigDecimal</code> then trailing zeros will be added to the
+  * decimal part as necessary.
+  * <p>
+  * If the given scale is less than the length of the decimal part (the
+  * scale) of this <code>BigDecimal</code> then trailing digits
+  * will be removed, and the rounding mode given by the second
+  * parameter is used to determine if the remaining digits are
+  * affected by a carry.
+  * In this case, an <code>IllegalArgumentException</code> is thrown if
+  * <code>round</code> is not a valid rounding mode.
+  * <p>
+  * If <code>round</code> is <code>MathContext.ROUND_UNNECESSARY</code>,
+  * an <code>ArithmeticException</code> is thrown if any discarded
+  * digits are non-zero.
+  *
+  * @param  scale The <code>int</code> specifying the scale of the
+  *               resulting <code>BigDecimal</code>.
+  * @param  round The <code>int</code> rounding mode to be used for
+  *               the division (see the {@link MathContext} class).
+  * @return       A plain <code>BigDecimal</code> with the given scale.
+  * @throws IllegalArgumentException if <code>round</code> is not a
+  *               valid rounding mode.
+  * @throws ArithmeticException if <code>scale</code> is negative.
+  * @throws ArithmeticException if <code>round</code> is
+  *               <code>MathContext.ROUND_UNNECESSARY</code>, and
+  *               reducing scale would discard non-zero digits.
+  * @stable ICU 2.0
+  */
+ 
+ public com.ibm.icu.math.BigDecimal setScale(int scale,int round){
+  int ourscale;
+  com.ibm.icu.math.BigDecimal res;
+  int padding=0;
+  int newlen=0;
+  // at present this naughtily only checks the round value if it is
+  // needed (used), for speed
+  ourscale=this.scale();
+  if (ourscale==scale)  // already correct scale
+   if (this.form==com.ibm.icu.math.MathContext.PLAIN)  // .. and form
+    return this;
+  res=clone(this); // need copy
+  if (ourscale<=scale) 
+   { // simply zero-padding/changing form
+    // if ourscale is 0 we may have lots of 0s to add
+    if (ourscale==0) 
+     padding=res.exp+scale;
+    else 
+     padding=scale-ourscale;
+    res.mant=extend(res.mant,res.mant.length+padding);
+    res.exp=(int)-scale; // as requested
+   }
+  else 
+   {/* ourscale>scale: shortening, probably */
+    if (scale<0) 
+     throw new java.lang.ArithmeticException("Negative scale:"+" "+scale);
+    // [round() will raise exception if invalid round]
+    newlen=res.mant.length-((ourscale-scale)); // [<=0 is OK]
+    res=res.round(newlen,round); // round to required length
+    // This could have shifted left if round (say) 0.9->1[.0]
+    // Repair if so by adding a zero and reducing exponent
+    if (res.exp!=((int)-scale)) 
+     {
+      res.mant=extend(res.mant,res.mant.length+1);
+      res.exp=res.exp-1;
+     }
+   }
+  res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // by definition
+  return res;
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a <code>short</code>.
+  * If the <code>BigDecimal</code> has a non-zero decimal part or is
+  * out of the possible range for a <code>short</code> (16-bit signed
+  * integer) result then an <code>ArithmeticException</code> is thrown.
+  *
+  * @return A <code>short</code> equal in value to <code>this</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *                 decimal part, or will not fit in a
+  *                 <code>short</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public short shortValueExact(){
+  int num;
+  num=this.intValueExact(); // will check decimal part too
+  if ((num>32767)|(num<(-32768))) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString());
+  return (short)num;
+  }
+
+ /**
+  * Returns the sign of this <code>BigDecimal</code>, as an
+  * <code>int</code>.
+  * This returns the <i>signum</i> function value that represents the
+  * sign of this <code>BigDecimal</code>.
+  * That is, -1 if the <code>BigDecimal</code> is negative, 0 if it is
+  * numerically equal to zero, or 1 if it is positive.
+  *
+  * @return An <code>int</code> which is -1 if the
+  *         <code>BigDecimal</code> is negative, 0 if it is
+  *         numerically equal to zero, or 1 if it is positive.
+  * @stable ICU 2.0
+  */
+ 
+ public int signum(){
+  return (int)this.ind; // [note this assumes values for ind.]
+  }
+
+//#if defined(FOUNDATION10)
+//#else
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigDecimal</code>.
+  * <p>
+  * This is an exact conversion; the result is the same as if the
+  * <code>BigDecimal</code> were formatted as a plain number without
+  * any rounding or exponent and then the
+  * <code>java.math.BigDecimal(java.lang.String)</code> constructor
+  * were used to construct the result.
+  * <p>
+  * <i>(Note: this method is provided only in the
+  * <code>com.ibm.icu.math</code> version of the BigDecimal class.
+  * It would not be present in a <code>java.math</code> version.)</i>
+  *
+  * @return The <code>java.math.BigDecimal</code> equal in value
+  *         to this <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public java.math.BigDecimal toBigDecimal(){
+  return new java.math.BigDecimal(this.unscaledValue(),this.scale());
+  }
+//#endif
+
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigInteger</code>.
+  * <p>
+  * Any decimal part is truncated (discarded).
+  * If an exception is desired should the decimal part be non-zero,
+  * use {@link #toBigIntegerExact()}.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value
+  *         to the integer part of this <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public java.math.BigInteger toBigInteger(){
+  com.ibm.icu.math.BigDecimal res=null;
+  int newlen=0;
+  byte newmant[]=null;
+  {/*select*/
+  if ((exp>=0)&(form==com.ibm.icu.math.MathContext.PLAIN))
+   res=this; // can layout simply
+  else if (exp>=0)
+   {
+    res=clone(this); // safe copy
+    res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // .. and request PLAIN
+   }
+  else{
+   { // exp<0; scale to be truncated
+    // we could use divideInteger, but we may as well be quicker
+    if (((int)-this.exp)>=this.mant.length) 
+     res=ZERO; // all blows away
+    else 
+     {
+      res=clone(this); // safe copy
+      newlen=res.mant.length+res.exp;
+      newmant=new byte[newlen]; // [shorter]
+      java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,newlen);
+      res.mant=newmant;
+      res.form=(byte)com.ibm.icu.math.MathContext.PLAIN;
+      res.exp=0;
+     }
+   }
+  }
+  }
+  return new BigInteger(new java.lang.String(res.layout()));
+  }
+
+ /**
+  * Converts this <code>BigDecimal</code> to a
+  * <code>java.math.BigInteger</code>.
+  * <p>
+  * An exception is thrown if the decimal part (if any) is non-zero.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value
+  *         to the integer part of this <code>BigDecimal</code>.
+  * @throws ArithmeticException if <code>this</code> has a non-zero
+  *         decimal part.
+  * @stable ICU 2.0
+  */
+ 
+ public java.math.BigInteger toBigIntegerExact(){
+  /* test any trailing decimal part */
+  if (exp<0) 
+   { // possible decimal part
+    /* all decimal places must be 0; note exp<0 */
+    if ((!(allzero(mant,mant.length+exp)))) 
+     throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString());
+   }
+  return toBigInteger();
+  }
+
+ /**
+  * Returns the <code>BigDecimal</code> as a character array.
+  * The result of this method is the same as using the
+  * sequence <code>toString().toCharArray()</code>, but avoids creating
+  * the intermediate <code>String</code> and <code>char[]</code>
+  * objects.
+  *
+  * @return The <code>char[]</code> array corresponding to this
+  *         <code>BigDecimal</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public char[] toCharArray(){
+  return layout();
+  }
+
+ /**
+  * Returns the <code>BigDecimal</code> as a <code>String</code>.
+  * This returns a <code>String</code> that exactly represents this
+  * <code>BigDecimal</code>, as defined in the decimal documentation
+  * (see {@link BigDecimal class header}).
+  * <p>
+  * By definition, using the {@link #BigDecimal(String)} constructor
+  * on the result <code>String</code> will create a
+  * <code>BigDecimal</code> that is exactly equal to the original
+  * <code>BigDecimal</code>.
+  *
+  * @return The <code>String</code> exactly corresponding to this
+  *         <code>BigDecimal</code>.
+  * @see    #format(int, int)
+  * @see    #format(int, int, int, int, int, int)
+  * @see    #toCharArray()
+  * @stable ICU 2.0
+  */
+ 
+ public java.lang.String toString(){
+  return new java.lang.String(layout());
+  }
+
+ /**
+  * Returns the number as a <code>BigInteger</code> after removing the
+  * scale.
+  * That is, the number is expressed as a plain number, any decimal
+  * point is then removed (retaining the digits of any decimal part),
+  * and the result is then converted to a <code>BigInteger</code>.
+  *
+  * @return The <code>java.math.BigInteger</code> equal in value to
+  *         this <code>BigDecimal</code> multiplied by ten to the
+  *         power of <code>this.scale()</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public java.math.BigInteger unscaledValue(){
+  com.ibm.icu.math.BigDecimal res=null;
+  if (exp>=0) 
+   res=this;
+  else 
+   {
+    res=clone(this); // safe copy
+    res.exp=0; // drop scale
+   }
+  return res.toBigInteger();
+  }
+
+ /**
+  * Translates a <code>double</code> to a <code>BigDecimal</code>.
+  * <p>
+  * Returns a <code>BigDecimal</code> which is the decimal
+  * representation of the 64-bit signed binary floating point
+  * parameter. If the parameter is infinite, or is not a number (NaN),
+  * a <code>NumberFormatException</code> is thrown.
+  * <p>
+  * The number is constructed as though <code>num</code> had been
+  * converted to a <code>String</code> using the
+  * <code>Double.toString()</code> method and the
+  * {@link #BigDecimal(java.lang.String)} constructor had then been used.
+  * This is typically not an exact conversion.
+  *
+  * @param  dub The <code>double</code> to be translated.
+  * @return     The <code>BigDecimal</code> equal in value to
+  *             <code>dub</code>.
+  * @throws NumberFormatException if the parameter is infinite or
+  *             not a number.
+  * @stable ICU 2.0
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(double dub){
+  // Reminder: a zero double returns '0.0', so we cannot fastpath to
+  // use the constant ZERO.  This might be important enough to justify
+  // a factory approach, a cache, or a few private constants, later.
+  return new com.ibm.icu.math.BigDecimal((new java.lang.Double(dub)).toString());
+  }
+
+ /**
+  * Translates a <code>long</code> to a <code>BigDecimal</code>.
+  * That is, returns a plain <code>BigDecimal</code> whose value is
+  * equal to the given <code>long</code>.
+  *
+  * @param  lint The <code>long</code> to be translated.
+  * @return      The <code>BigDecimal</code> equal in value to
+  *              <code>lint</code>.
+  * @stable ICU 2.0
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(long lint){
+  return valueOf(lint,0);
+  }
+
+ /**
+  * Translates a <code>long</code> to a <code>BigDecimal</code> with a
+  * given scale.
+  * That is, returns a plain <code>BigDecimal</code> whose unscaled
+  * value is equal to the given <code>long</code>, adjusted by the
+  * second parameter, <code>scale</code>.
+  * <p>
+  * The result is given by:
+  * <p><code>
+  * (new BigDecimal(lint)).divide(TEN.pow(new BigDecimal(scale)))
+  * </code>
+  * <p>
+  * A <code>NumberFormatException</code> is thrown if <code>scale</code>
+  * is negative.
+  *
+  * @param  lint  The <code>long</code> to be translated.
+  * @param  scale The <code>int</code> scale to be applied.
+  * @return       The <code>BigDecimal</code> equal in value to
+  *               <code>lint</code>.
+  * @throws NumberFormatException if the scale is negative.
+  * @stable ICU 2.0
+  */
+ 
+ public static com.ibm.icu.math.BigDecimal valueOf(long lint,int scale){
+  com.ibm.icu.math.BigDecimal res=null;
+  {/*select*/
+  if (lint==0)
+   res=ZERO;
+  else if (lint==1)
+   res=ONE;
+  else if (lint==10)
+   res=TEN;
+  else{
+   res=new com.ibm.icu.math.BigDecimal(lint);
+  }
+  }
+  if (scale==0) 
+   return res;
+  if (scale<0) 
+   throw new java.lang.NumberFormatException("Negative scale:"+" "+scale);
+  res=clone(res); // safe copy [do not mutate]
+  res.exp=(int)-scale; // exponent is -scale
+  return res;
+  }
+
+ /* ---------------------------------------------------------------- */
+ /* Private methods                                                  */
+ /* ---------------------------------------------------------------- */
+ 
+ /* <sgml> Return char array value of a BigDecimal (conversion from
+       BigDecimal to laid-out canonical char array).
+    <p>The mantissa will either already have been rounded (following an
+       operation) or will be of length appropriate (in the case of
+       construction from an int, for example).
+    <p>We must not alter the mantissa, here.
+    <p>'form' describes whether we are to use exponential notation (and
+       if so, which), or if we are to lay out as a plain/pure numeric.
+    </sgml> */
+ 
+ private char[] layout(){
+  char cmant[];
+  int i=0;
+  java.lang.StringBuffer sb=null;
+  int euse=0;
+  int sig=0;
+  char csign=0;
+  char rec[]=null;
+  int needsign;
+  int mag;
+  int len=0;
+  cmant=new char[mant.length]; // copy byte[] to a char[]
+  {int $18=mant.length;i=0;for(;$18>0;$18--,i++){
+   cmant[i]=(char)(mant[i]+((int)('0')));
+   }
+  }/*i*/
+  
+  if (form!=com.ibm.icu.math.MathContext.PLAIN) 
+   {/* exponential notation needed */
+    sb=new java.lang.StringBuffer(cmant.length+15); // -x.xxxE+999999999
+    if (ind==isneg) 
+     sb.append('-');
+    euse=(exp+cmant.length)-1; // exponent to use
+    /* setup sig=significant digits and copy to result */
+    if (form==com.ibm.icu.math.MathContext.SCIENTIFIC) 
+     { // [default]
+      sb.append(cmant[0]); // significant character
+      if (cmant.length>1)  // have decimal part
+       sb.append('.').append(cmant,1,cmant.length-1);
+     }
+    else 
+     {do{
+      sig=euse%3; // common
+      if (sig<0) 
+       sig=3+sig; // negative exponent
+      euse=euse-sig;
+      sig++;
+      if (sig>=cmant.length) 
+       { // zero padding may be needed
+        sb.append(cmant,0,cmant.length);
+        {int $19=sig-cmant.length;for(;$19>0;$19--){
+         sb.append('0');
+         }
+        }
+       }
+      else 
+       { // decimal point needed
+        sb.append(cmant,0,sig).append('.').append(cmant,sig,cmant.length-sig);
+       }
+     }while(false);}/*engineering*/
+    if (euse!=0) 
+     {
+      if (euse<0) 
+       {
+        csign='-';
+        euse=(int)-euse;
+       }
+      else 
+       csign='+';
+      sb.append('E').append(csign).append(euse);
+     }
+    rec=new char[sb.length()];
+    Utility.getChars(sb, 0,sb.length(),rec,0);
+    return rec;
+   }
+  
+  /* Here for non-exponential (plain) notation */
+  if (exp==0) 
+   {/* easy */
+    if (ind>=0) 
+     return cmant; // non-negative integer
+    rec=new char[cmant.length+1];
+    rec[0]='-';
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,1,cmant.length);
+    return rec;
+   }
+  
+  /* Need a '.' and/or some zeros */
+  needsign=(int)((ind==isneg)?1:0); // space for sign?  0 or 1
+  
+  /* MAG is the position of the point in the mantissa (index of the
+     character it follows) */
+  mag=exp+cmant.length;
+  
+  if (mag<1) 
+   {/* 0.00xxxx form */
+    len=(needsign+2)-exp; // needsign+2+(-mag)+cmant.length
+    rec=new char[len];
+    if (needsign!=0) 
+     rec[0]='-';
+    rec[needsign]='0';
+    rec[needsign+1]='.';
+    {int $20=(int)-mag;i=needsign+2;for(;$20>0;$20--,i++){ // maybe none
+     rec[i]='0';
+     }
+    }/*i*/
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,(needsign+2)-mag,cmant.length);
+    return rec;
+   }
+  
+  if (mag>cmant.length) 
+   {/* xxxx0000 form */
+    len=needsign+mag;
+    rec=new char[len];
+    if (needsign!=0) 
+     rec[0]='-';
+    java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,cmant.length);
+    {int $21=mag-cmant.length;i=needsign+cmant.length;for(;$21>0;$21--,i++){ // never 0
+     rec[i]='0';
+     }
+    }/*i*/
+    return rec;
+   }
+  
+  /* decimal point is in the middle of the mantissa */
+  len=(needsign+1)+cmant.length;
+  rec=new char[len];
+  if (needsign!=0) 
+   rec[0]='-';
+  java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,mag);
+  rec[needsign+mag]='.';
+  java.lang.System.arraycopy((java.lang.Object)cmant,mag,(java.lang.Object)rec,(needsign+mag)+1,cmant.length-mag);
+  return rec;
+  }
+
+ /* <sgml> Checks a BigDecimal argument to ensure it's a true integer
+       in a given range.
+    <p>If OK, returns it as an int. </sgml> */
+ // [currently only used by pow]
+ 
+ private int intcheck(int min,int max){
+  int i;
+  i=this.intValueExact(); // [checks for non-0 decimal part]
+  // Use same message as though intValueExact failed due to size
+  if ((i<min)|(i>max)) 
+   throw new java.lang.ArithmeticException("Conversion overflow:"+" "+i);
+  return i;
+  }
+
+ /* <sgml> Carry out division operations. </sgml> */
+ /*
+    Arg1 is operation code: D=divide, I=integer divide, R=remainder
+    Arg2 is the rhs.
+    Arg3 is the context.
+    Arg4 is explicit scale iff code='D' or 'I' (-1 if none).
+ 
+    Underlying algorithm (complications for Remainder function and
+    scaled division are omitted for clarity):
+ 
+      Test for x/0 and then 0/x
+      Exp =Exp1 - Exp2
+      Exp =Exp +len(var1) -len(var2)
+      Sign=Sign1 * Sign2
+      Pad accumulator (Var1) to double-length with 0's (pad1)
+      Pad Var2 to same length as Var1
+      B2B=1st two digits of var2, +1 to allow for roundup
+      have=0
+      Do until (have=digits+1 OR residue=0)
+        if exp<0 then if integer divide/residue then leave
+        this_digit=0
+        Do forever
+           compare numbers
+           if <0 then leave inner_loop
+           if =0 then (- quick exit without subtract -) do
+              this_digit=this_digit+1; output this_digit
+              leave outer_loop; end
+           Compare lengths of numbers (mantissae):
+           If same then CA=first_digit_of_Var1
+                   else CA=first_two_digits_of_Var1
+           mult=ca*10/b2b   -- Good and safe guess at divisor
+           if mult=0 then mult=1
+           this_digit=this_digit+mult
+           subtract
+           end inner_loop
+         if have\=0 | this_digit\=0 then do
+           output this_digit
+           have=have+1; end
+         var2=var2/10
+         exp=exp-1
+         end outer_loop
+      exp=exp+1   -- set the proper exponent
+      if have=0 then generate answer=0
+      Return to FINISHED
+      Result defined by MATHV1
+ 
+    For extended commentary, see DMSRCN.
+  */
+ 
+ private com.ibm.icu.math.BigDecimal dodivide(char code,com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set,int scale){
+  com.ibm.icu.math.BigDecimal lhs;
+  int reqdig;
+  int newexp;
+  com.ibm.icu.math.BigDecimal res;
+  int newlen;
+  byte var1[];
+  int var1len;
+  byte var2[];
+  int var2len;
+  int b2b;
+  int have;
+  int thisdigit=0;
+  int i=0;
+  byte v2=0;
+  int ba=0;
+  int mult=0;
+  int start=0;
+  int padding=0;
+  int d=0;
+  byte newvar1[]=null;
+  byte lasthave=0;
+  int actdig=0;
+  byte newmant[]=null;
+  
+  if (set.lostDigits) 
+   checkdigits(rhs,set.digits);
+  lhs=this; // name for clarity
+  
+  // [note we must have checked lostDigits before the following checks]
+  if (rhs.ind==0) 
+   throw new java.lang.ArithmeticException("Divide by 0"); // includes 0/0
+  if (lhs.ind==0) 
+   { // 0/x => 0 [possibly with .0s]
+    if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+     return ZERO;
+    if (scale==(-1)) 
+     return lhs;
+    return lhs.setScale(scale);
+   }
+  
+  /* Prepare numbers according to BigDecimal rules */
+  reqdig=set.digits; // local copy (heavily used)
+  if (reqdig>0) 
+   {
+    if (lhs.mant.length>reqdig) 
+     lhs=clone(lhs).round(set);
+    if (rhs.mant.length>reqdig) 
+     rhs=clone(rhs).round(set);
+   }
+  else 
+   {/* scaled divide */
+    if (scale==(-1)) 
+     scale=lhs.scale();
+    // set reqdig to be at least large enough for the computation
+    reqdig=lhs.mant.length; // base length
+    // next line handles both positive lhs.exp and also scale mismatch
+    if (scale!=((int)-lhs.exp)) 
+     reqdig=(reqdig+scale)+lhs.exp;
+    reqdig=(reqdig-((rhs.mant.length-1)))-rhs.exp; // reduce by RHS effect
+    if (reqdig<lhs.mant.length) 
+     reqdig=lhs.mant.length; // clamp
+    if (reqdig<rhs.mant.length) 
+     reqdig=rhs.mant.length; // ..
+   }
+  
+  /* precalculate exponent */
+  newexp=((lhs.exp-rhs.exp)+lhs.mant.length)-rhs.mant.length;
+  /* If new exponent -ve, then some quick exits are possible */
+  if (newexp<0) 
+   if (code!='D') 
+    {
+     if (code=='I') 
+      return ZERO; // easy - no integer part
+     /* Must be 'R'; remainder is [finished clone of] input value */
+     return clone(lhs).finish(set,false);
+    }
+  
+  /* We need slow division */
+  res=new com.ibm.icu.math.BigDecimal(); // where we'll build result
+  res.ind=(byte)(lhs.ind*rhs.ind); // final sign (for D/I)
+  res.exp=newexp; // initial exponent (for D/I)
+  res.mant=new byte[reqdig+1]; // where build the result
+  
+  /* Now [virtually pad the mantissae with trailing zeros */
+  // Also copy the LHS, which will be our working array
+  newlen=(reqdig+reqdig)+1;
+  var1=extend(lhs.mant,newlen); // always makes longer, so new safe array
+  var1len=newlen; // [remaining digits are 0]
+  
+  var2=rhs.mant;
+  var2len=newlen;
+  
+  /* Calculate first two digits of rhs (var2), +1 for later estimations */
+  b2b=(var2[0]*10)+1;
+  if (var2.length>1) 
+   b2b=b2b+var2[1];
+  
+  /* start the long-division loops */
+  have=0;
+  {outer:for(;;){
+   thisdigit=0;
+   /* find the next digit */
+   {inner:for(;;){
+    if (var1len<var2len) 
+     break inner; // V1 too low
+    if (var1len==var2len) 
+     { // compare needed
+      {compare:do{ // comparison
+       {int $22=var1len;i=0;for(;$22>0;$22--,i++){
+        // var1len is always <= var1.length
+        if (i<var2.length) 
+         v2=var2[i];
+        else 
+         v2=(byte)0;
+        if (var1[i]<v2) 
+         break inner; // V1 too low
+        if (var1[i]>v2) 
+         break compare; // OK to subtract
+        }
+       }/*i*/
+       /* reach here if lhs and rhs are identical; subtraction will
+          increase digit by one, and the residue will be 0 so we
+          are done; leave the loop with residue set to 0 (in case
+          code is 'R' or ROUND_UNNECESSARY or a ROUND_HALF_xxxx is
+          being checked) */
+       thisdigit++;
+       res.mant[have]=(byte)thisdigit;
+       have++;
+       var1[0]=(byte)0; // residue to 0 [this is all we'll test]
+       // var1len=1      -- [optimized out]
+       break outer;
+      }while(false);}/*compare*/
+      /* prepare for subtraction.  Estimate BA (lengths the same) */
+      ba=(int)var1[0]; // use only first digit
+     } // lengths the same
+    else 
+     {/* lhs longer than rhs */
+      /* use first two digits for estimate */
+      ba=var1[0]*10;
+      if (var1len>1) 
+       ba=ba+var1[1];
+     }
+    /* subtraction needed; V1>=V2 */
+    mult=(ba*10)/b2b;
+    if (mult==0) 
+     mult=1;
+    thisdigit=thisdigit+mult;
+    // subtract; var1 reusable
+    var1=byteaddsub(var1,var1len,var2,var2len,(int)-mult,true);
+    if (var1[0]!=0) 
+     continue inner; // maybe another subtract needed
+    /* V1 now probably has leading zeros, remove leading 0's and try
+       again. (It could be longer than V2) */
+    {int $23=var1len-2;start=0;start:for(;start<=$23;start++){
+     if (var1[start]!=0) 
+      break start;
+     var1len--;
+     }
+    }/*start*/
+    if (start==0) 
+     continue inner;
+    // shift left
+    java.lang.System.arraycopy((java.lang.Object)var1,start,(java.lang.Object)var1,0,var1len);
+    }
+   }/*inner*/
+   
+   /* We have the next digit */
+   if ((have!=0)|(thisdigit!=0)) 
+    { // put the digit we got
+     res.mant[have]=(byte)thisdigit;
+     have++;
+     if (have==(reqdig+1)) 
+      break outer; // we have all we need
+     if (var1[0]==0) 
+      break outer; // residue now 0
+    }
+   /* can leave now if a scaled divide and exponent is small enough */
+   if (scale>=0) 
+    if (((int)-res.exp)>scale) 
+     break outer;
+   /* can leave now if not Divide and no integer part left  */
+   if (code!='D') 
+    if (res.exp<=0) 
+     break outer;
+   res.exp=res.exp-1; // reduce the exponent
+   /* to get here, V1 is less than V2, so divide V2 by 10 and go for
+      the next digit */
+   var2len--;
+   }
+  }/*outer*/
+  
+  /* here when we have finished dividing, for some reason */
+  // have is the number of digits we collected in res.mant
+  if (have==0) 
+   have=1; // res.mant[0] is 0; we always want a digit
+  
+  if ((code=='I')|(code=='R')) 
+   {/* check for integer overflow needed */
+    if ((have+res.exp)>reqdig) 
+     throw new java.lang.ArithmeticException("Integer overflow");
+    
+    if (code=='R') 
+     {do{
+      /* We were doing Remainder -- return the residue */
+      if (res.mant[0]==0)  // no integer part was found
+       return clone(lhs).finish(set,false); // .. so return lhs, canonical
+      if (var1[0]==0) 
+       return ZERO; // simple 0 residue
+      res.ind=lhs.ind; // sign is always as LHS
+      /* Calculate the exponent by subtracting the number of padding zeros
+         we added and adding the original exponent */
+      padding=((reqdig+reqdig)+1)-lhs.mant.length;
+      res.exp=(res.exp-padding)+lhs.exp;
+      
+      /* strip insignificant padding zeros from residue, and create/copy
+         the resulting mantissa if need be */
+      d=var1len;
+      {i=d-1;i:for(;i>=1;i--){if(!((res.exp<lhs.exp)&(res.exp<rhs.exp)))break;
+       if (var1[i]!=0) 
+        break i;
+       d--;
+       res.exp=res.exp+1;
+       }
+      }/*i*/
+      if (d<var1.length) 
+       {/* need to reduce */
+        newvar1=new byte[d];
+        java.lang.System.arraycopy((java.lang.Object)var1,0,(java.lang.Object)newvar1,0,d); // shorten
+        var1=newvar1;
+       }
+      res.mant=var1;
+      return res.finish(set,false);
+     }while(false);}/*remainder*/
+   }
+   
+  else 
+   {/* 'D' -- no overflow check needed */
+    // If there was a residue then bump the final digit (iff 0 or 5)
+    // so that the residue is visible for ROUND_UP, ROUND_HALF_xxx and
+    // ROUND_UNNECESSARY checks (etc.) later.
+    // [if we finished early, the residue will be 0]
+    if (var1[0]!=0) 
+     { // residue not 0
+      lasthave=res.mant[have-1];
+      if (((lasthave%5))==0) 
+       res.mant[have-1]=(byte)(lasthave+1);
+     }
+   }
+  
+  /* Here for Divide or Integer Divide */
+  // handle scaled results first ['I' always scale 0, optional for 'D']
+  if (scale>=0) 
+   {do{
+    // say 'scale have res.exp len' scale have res.exp res.mant.length
+    if (have!=res.mant.length) 
+     // already padded with 0's, so just adjust exponent
+     res.exp=res.exp-((res.mant.length-have));
+    // calculate number of digits we really want [may be 0]
+    actdig=res.mant.length-((((int)-res.exp)-scale));
+    res.round(actdig,set.roundingMode); // round to desired length
+    // This could have shifted left if round (say) 0.9->1[.0]
+    // Repair if so by adding a zero and reducing exponent
+    if (res.exp!=((int)-scale)) 
+     {
+      res.mant=extend(res.mant,res.mant.length+1);
+      res.exp=res.exp-1;
+     }
+    return res.finish(set,true); // [strip if not PLAIN]
+   }while(false);}/*scaled*/
+  
+  // reach here only if a non-scaled
+  if (have==res.mant.length) 
+   { // got digits+1 digits
+    res.round(set);
+    have=reqdig;
+   }
+  else 
+   {/* have<=reqdig */
+    if (res.mant[0]==0) 
+     return ZERO; // fastpath
+    // make the mantissa truly just 'have' long
+    // [we could let finish do this, during strip, if we adjusted
+    // the exponent; however, truncation avoids the strip loop]
+    newmant=new byte[have]; // shorten
+    java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,have);
+    res.mant=newmant;
+   }
+  return res.finish(set,true);
+  }
+
+ 
+ /* <sgml> Report a conversion exception. </sgml> */
+ 
+ private void bad(char s[]){
+  throw new java.lang.NumberFormatException("Not a number:"+" "+java.lang.String.valueOf(s));
+  }
+
+ /* <sgml> Report a bad argument to a method. </sgml>
+    Arg1 is method name
+    Arg2 is argument position
+    Arg3 is what was found */
+ 
+ private void badarg(java.lang.String name,int pos,java.lang.String value){
+  throw new java.lang.IllegalArgumentException("Bad argument"+" "+pos+" "+"to"+" "+name+":"+" "+value);
+  }
+
+ /* <sgml> Extend byte array to given length, padding with 0s.  If no
+    extension is required then return the same array. </sgml>
+ 
+    Arg1 is the source byte array
+    Arg2 is the new length (longer)
+    */
+ 
+ private static final byte[] extend(byte inarr[],int newlen){
+  byte newarr[];
+  if (inarr.length==newlen) 
+   return inarr;
+  newarr=new byte[newlen];
+  java.lang.System.arraycopy((java.lang.Object)inarr,0,(java.lang.Object)newarr,0,inarr.length);
+  // 0 padding is carried out by the JVM on allocation initialization
+  return newarr;
+  }
+
+ /* <sgml> Add or subtract two >=0 integers in byte arrays
+    <p>This routine performs the calculation:
+    <pre>
+    C=A+(B*M)
+    </pre>
+    Where M is in the range -9 through +9
+    <p>
+    If M<0 then A>=B must be true, so the result is always
+    non-negative.
+ 
+    Leading zeros are not removed after a subtraction.  The result is
+    either the same length as the longer of A and B, or 1 longer than
+    that (if a carry occurred).
+ 
+    A is not altered unless Arg6 is 1.
+    B is never altered.
+ 
+    Arg1 is A
+    Arg2 is A length to use (if longer than A, pad with 0's)
+    Arg3 is B
+    Arg4 is B length to use (if longer than B, pad with 0's)
+    Arg5 is M, the multiplier
+    Arg6 is 1 if A can be used to build the result (if it fits)
+ 
+    This routine is severely performance-critical; *any* change here
+    must be measured (timed) to assure no performance degradation.
+    */
+ // 1996.02.20 -- enhanced version of DMSRCN algorithm (1981)
+ // 1997.10.05 -- changed to byte arrays (from char arrays)
+ // 1998.07.01 -- changed to allow destructive reuse of LHS
+ // 1998.07.01 -- changed to allow virtual lengths for the arrays
+ // 1998.12.29 -- use lookaside for digit/carry calculation
+ // 1999.08.07 -- avoid multiply when mult=1, and make db an int
+ // 1999.12.22 -- special case m=-1, also drop 0 special case
+ 
+ private static final byte[] byteaddsub(byte a[],int avlen,byte b[],int bvlen,int m,boolean reuse){
+  int alength;
+  int blength;
+  int ap;
+  int bp;
+  int maxarr;
+  byte reb[];
+  boolean quickm;
+  int digit;
+  int op=0;
+  int dp90=0;
+  byte newarr[];
+  int i=0;
+  
+  
+  
+  
+  // We'll usually be right if we assume no carry
+  alength=a.length; // physical lengths
+  blength=b.length; // ..
+  ap=avlen-1; // -> final (rightmost) digit
+  bp=bvlen-1; // ..
+  maxarr=bp;
+  if (maxarr<ap) 
+   maxarr=ap;
+  reb=(byte[])null; // result byte array
+  if (reuse) 
+   if ((maxarr+1)==alength) 
+    reb=a; // OK to reuse A
+  if (reb==null) 
+   reb=new byte[maxarr+1]; // need new array
+  
+  quickm=false; // 1 if no multiply needed
+  if (m==1) 
+   quickm=true; // most common
+  else 
+   if (m==(-1)) 
+    quickm=true; // also common
+  
+  digit=0; // digit, with carry or borrow
+  {op=maxarr;op:for(;op>=0;op--){
+   if (ap>=0) 
+    {
+     if (ap<alength) 
+      digit=digit+a[ap]; // within A
+     ap--;
+    }
+   if (bp>=0) 
+    {
+     if (bp<blength) 
+      { // within B
+       if (quickm) 
+        {
+         if (m>0) 
+          digit=digit+b[bp]; // most common
+         else 
+          digit=digit-b[bp]; // also common
+        }
+       else 
+        digit=digit+(b[bp]*m);
+      }
+     bp--;
+    }
+   /* result so far (digit) could be -90 through 99 */
+   if (digit<10) 
+    if (digit>=0) 
+     {do{ // 0-9
+      reb[op]=(byte)digit;
+      digit=0; // no carry
+      continue op;
+     }while(false);}/*quick*/
+   dp90=digit+90;
+   reb[op]=bytedig[dp90]; // this digit
+   digit=bytecar[dp90]; // carry or borrow
+   }
+  }/*op*/
+  
+  if (digit==0) 
+   return reb; // no carry
+  // following line will become an Assert, later
+  // if digit<0 then signal ArithmeticException("internal.error ["digit"]")
+  
+  /* We have carry -- need to make space for the extra digit */
+  newarr=(byte[])null;
+  if (reuse) 
+   if ((maxarr+2)==a.length) 
+    newarr=a; // OK to reuse A
+  if (newarr==null) 
+   newarr=new byte[maxarr+2];
+  newarr[0]=(byte)digit; // the carried digit ..
+  // .. and all the rest [use local loop for short numbers]
+  if (maxarr<10) 
+   {int $24=maxarr+1;i=0;for(;$24>0;$24--,i++){
+    newarr[i+1]=reb[i];
+    }
+   }/*i*/
+  else 
+   java.lang.System.arraycopy((java.lang.Object)reb,0,(java.lang.Object)newarr,1,maxarr+1);
+  return newarr;
+  }
+
+ /* <sgml> Initializer for digit array properties (lookaside). </sgml>
+    Returns the digit array, and initializes the carry array. */
+ 
+ private static final byte[] diginit(){
+  byte work[];
+  int op=0;
+  int digit=0;
+  work=new byte[(90+99)+1];
+  {op=0;op:for(;op<=(90+99);op++){
+   digit=op-90;
+   if (digit>=0) 
+    {
+     work[op]=(byte)(digit%10);
+     bytecar[op]=(byte)(digit/10); // calculate carry
+     continue op;
+    }
+   // borrowing...
+   digit=digit+100; // yes, this is right [consider -50]
+   work[op]=(byte)(digit%10);
+   bytecar[op]=(byte)((digit/10)-10); // calculate borrow [NB: - after %]
+   }
+  }/*op*/
+  return work;
+  }
+
+ /* <sgml> Create a copy of BigDecimal object for local use.
+    <p>This does NOT make a copy of the mantissa array.
+    </sgml>
+    Arg1 is the BigDecimal to clone (non-null)
+    */
+ 
+ private static final com.ibm.icu.math.BigDecimal clone(com.ibm.icu.math.BigDecimal dec){
+  com.ibm.icu.math.BigDecimal copy;
+  copy=new com.ibm.icu.math.BigDecimal();
+  copy.ind=dec.ind;
+  copy.exp=dec.exp;
+  copy.form=dec.form;
+  copy.mant=dec.mant;
+  return copy;
+  }
+
+ /* <sgml> Check one or two numbers for lost digits. </sgml>
+    Arg1 is RHS (or null, if none)
+    Arg2 is current DIGITS setting
+    returns quietly or throws an exception */
+ 
+ private void checkdigits(com.ibm.icu.math.BigDecimal rhs,int dig){
+  if (dig==0) 
+   return; // don't check if digits=0
+  // first check lhs...
+  if (this.mant.length>dig) 
+   if ((!(allzero(this.mant,dig)))) 
+    throw new java.lang.ArithmeticException("Too many digits:"+" "+this.toString());
+  if (rhs==null) 
+   return; // monadic
+  if (rhs.mant.length>dig) 
+   if ((!(allzero(rhs.mant,dig)))) 
+    throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString());
+  }
+
+ /* <sgml> Round to specified digits, if necessary. </sgml>
+    Arg1 is requested MathContext [with length and rounding mode]
+    returns this, for convenience */
+ 
+ private com.ibm.icu.math.BigDecimal round(com.ibm.icu.math.MathContext set){
+  return round(set.digits,set.roundingMode);
+  }
+
+ /* <sgml> Round to specified digits, if necessary.
+    Arg1 is requested length (digits to round to)
+            [may be <=0 when called from format, dodivide, etc.]
+    Arg2 is rounding mode
+    returns this, for convenience
+ 
+    ind and exp are adjusted, but not cleared for a mantissa of zero
+ 
+    The length of the mantissa returned will be Arg1, except when Arg1
+    is 0, in which case the returned mantissa length will be 1.
+    </sgml>
+    */
+ 
+ private com.ibm.icu.math.BigDecimal round(int len,int mode){
+  int adjust;
+  int sign;
+  byte oldmant[];
+  boolean reuse=false;
+  byte first=0;
+  int increment;
+  byte newmant[]=null;
+  adjust=mant.length-len;
+  if (adjust<=0) 
+   return this; // nowt to do
+  
+  exp=exp+adjust; // exponent of result
+  sign=(int)ind; // save [assumes -1, 0, 1]
+  oldmant=mant; // save
+  if (len>0) 
+   {
+    // remove the unwanted digits
+    mant=new byte[len];
+    java.lang.System.arraycopy((java.lang.Object)oldmant,0,(java.lang.Object)mant,0,len);
+    reuse=true; // can reuse mantissa
+    first=oldmant[len]; // first of discarded digits
+   }
+  else 
+   {/* len<=0 */
+    mant=ZERO.mant;
+    ind=iszero;
+    reuse=false; // cannot reuse mantissa
+    if (len==0) 
+     first=oldmant[0];
+    else 
+     first=(byte)0; // [virtual digit]
+   }
+  
+  // decide rounding adjustment depending on mode, sign, and discarded digits
+  increment=0; // bumper
+  {do{/*select*/
+  if (mode==ROUND_HALF_UP)
+   { // default first [most common]
+    if (first>=5) 
+     increment=sign;
+   }
+  else if (mode==ROUND_UNNECESSARY)
+   { // default for setScale()
+    // discarding any non-zero digits is an error
+    if ((!(allzero(oldmant,len)))) 
+     throw new java.lang.ArithmeticException("Rounding necessary");
+   }
+  else if (mode==ROUND_HALF_DOWN)
+   { // 0.5000 goes down
+    if (first>5) 
+     increment=sign;
+    else 
+     if (first==5) 
+      if ((!(allzero(oldmant,len+1)))) 
+       increment=sign;
+   }
+  else if (mode==ROUND_HALF_EVEN)
+   { // 0.5000 goes down if left digit even
+    if (first>5) 
+     increment=sign;
+    else 
+     if (first==5) 
+      {
+       if ((!(allzero(oldmant,len+1)))) 
+        increment=sign;
+       else /* 0.5000 */
+        if ((((mant[mant.length-1])%2))==1) 
+         increment=sign;
+      }
+   }
+  else if (mode==ROUND_DOWN){
+   // never increment
+  }else if (mode==ROUND_UP)
+   { // increment if discarded non-zero
+    if ((!(allzero(oldmant,len)))) 
+     increment=sign;
+   }
+  else if (mode==ROUND_CEILING)
+   { // more positive
+    if (sign>0) 
+     if ((!(allzero(oldmant,len)))) 
+      increment=sign;
+   }
+  else if (mode==ROUND_FLOOR)
+   { // more negative
+    if (sign<0) 
+     if ((!(allzero(oldmant,len)))) 
+      increment=sign;
+   }
+  else{
+   throw new java.lang.IllegalArgumentException("Bad round value:"+" "+mode);
+  }
+  }while(false);}/*modes*/
+  
+  if (increment!=0) 
+   {do{
+    if (ind==iszero) 
+     {
+      // we must not subtract from 0, but result is trivial anyway
+      mant=ONE.mant;
+      ind=(byte)increment;
+     }
+    else 
+     {
+      // mantissa is non-0; we can safely add or subtract 1
+      if (ind==isneg) 
+       increment=(int)-increment;
+      newmant=byteaddsub(mant,mant.length,ONE.mant,1,increment,reuse);
+      if (newmant.length>mant.length) 
+       { // had a carry
+        // drop rightmost digit and raise exponent
+        exp++;
+        // mant is already the correct length
+        java.lang.System.arraycopy((java.lang.Object)newmant,0,(java.lang.Object)mant,0,mant.length);
+       }
+      else 
+       mant=newmant;
+     }
+   }while(false);}/*bump*/
+  // rounding can increase exponent significantly
+  if (exp>MaxExp) 
+   throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+exp);
+  return this;
+  }
+
+ /* <sgml> Test if rightmost digits are all 0.
+    Arg1 is a mantissa array to test
+    Arg2 is the offset of first digit to check
+            [may be negative; if so, digits to left are 0's]
+    returns 1 if all the digits starting at Arg2 are 0
+ 
+    Arg2 may be beyond array bounds, in which case 1 is returned
+    </sgml> */
+ 
+ private static final boolean allzero(byte array[],int start){
+  int i=0;
+  if (start<0) 
+   start=0;
+  {int $25=array.length-1;i=start;for(;i<=$25;i++){
+   if (array[i]!=0) 
+    return false;
+   }
+  }/*i*/
+  return true;
+  }
+
+ /* <sgml> Carry out final checks and canonicalization
+    <p>
+    This finishes off the current number by:
+      1. Rounding if necessary (NB: length includes leading zeros)
+      2. Stripping trailing zeros (if requested and \PLAIN)
+      3. Stripping leading zeros (always)
+      4. Selecting exponential notation (if required)
+      5. Converting a zero result to just '0' (if \PLAIN)
+    In practice, these operations overlap and share code.
+    It always sets form.
+    </sgml>
+    Arg1 is requested MathContext (length to round to, trigger, and FORM)
+    Arg2 is 1 if trailing insignificant zeros should be removed after
+         round (for division, etc.), provided that set.form isn't PLAIN.
+   returns this, for convenience
+   */
+ 
+ private com.ibm.icu.math.BigDecimal finish(com.ibm.icu.math.MathContext set,boolean strip){
+  int d=0;
+  int i=0;
+  byte newmant[]=null;
+  int mag=0;
+  int sig=0;
+  /* Round if mantissa too long and digits requested */
+  if (set.digits!=0) 
+   if (this.mant.length>set.digits) 
+    this.round(set);
+  
+  /* If strip requested (and standard formatting), remove
+     insignificant trailing zeros. */
+  if (strip) 
+   if (set.form!=com.ibm.icu.math.MathContext.PLAIN) 
+    {
+     d=this.mant.length;
+     /* see if we need to drop any trailing zeros */
+     {i=d-1;i:for(;i>=1;i--){
+      if (this.mant[i]!=0) 
+       break i;
+      d--;
+      exp++;
+      }
+     }/*i*/
+     if (d<this.mant.length) 
+      {/* need to reduce */
+       newmant=new byte[d];
+       java.lang.System.arraycopy((java.lang.Object)this.mant,0,(java.lang.Object)newmant,0,d);
+       this.mant=newmant;
+      }
+    }
+  
+  form=(byte)com.ibm.icu.math.MathContext.PLAIN; // preset
+  
+  /* Now check for leading- and all- zeros in mantissa */
+  {int $26=this.mant.length;i=0;for(;$26>0;$26--,i++){
+   if (this.mant[i]!=0) 
+    {
+     // non-0 result; ind will be correct
+     // remove leading zeros [e.g., after subtract]
+     if (i>0) 
+      {do{
+       newmant=new byte[this.mant.length-i];
+       java.lang.System.arraycopy((java.lang.Object)this.mant,i,(java.lang.Object)newmant,0,this.mant.length-i);
+       this.mant=newmant;
+      }while(false);}/*delead*/
+     // now determine form if not PLAIN
+     mag=exp+mant.length;
+     if (mag>0) 
+      { // most common path
+       if (mag>set.digits) 
+        if (set.digits!=0) 
+         form=(byte)set.form;
+       if ((mag-1)<=MaxExp) 
+        return this; // no overflow; quick return
+      }
+     else 
+      if (mag<(-5)) 
+       form=(byte)set.form;
+     /* check for overflow */
+     mag--;
+     if ((mag<MinExp)|(mag>MaxExp)) 
+      {overflow:do{
+       // possible reprieve if form is engineering
+       if (form==com.ibm.icu.math.MathContext.ENGINEERING) 
+        {
+         sig=mag%3; // leftover
+         if (sig<0) 
+          sig=3+sig; // negative exponent
+         mag=mag-sig; // exponent to use
+         // 1999.06.29: second test here must be MaxExp
+         if (mag>=MinExp) 
+          if (mag<=MaxExp) 
+           break overflow;
+        }
+       throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+mag);
+      }while(false);}/*overflow*/
+     return this;
+    }
+   }
+  }/*i*/
+  
+  // Drop through to here only if mantissa is all zeros
+  ind=iszero;
+  {/*select*/
+  if (set.form!=com.ibm.icu.math.MathContext.PLAIN)
+   exp=0; // standard result; go to '0'
+  else if (exp>0)
+   exp=0; // +ve exponent also goes to '0'
+  else{
+   // a plain number with -ve exponent; preserve and check exponent
+   if (exp<MinExp) 
+    throw new java.lang.ArithmeticException("Exponent Overflow:"+" "+exp);
+  }
+  }
+  mant=ZERO.mant; // canonical mantissa
+  return this;
+  }
+ }
diff --git a/src/com/ibm/icu/math/MathContext.java b/src/com/ibm/icu/math/MathContext.java
new file mode 100644
index 0000000..725186a
--- /dev/null
+++ b/src/com/ibm/icu/math/MathContext.java
@@ -0,0 +1,601 @@
+/* Generated from 'MathContext.nrx' 8 Sep 2000 11:07:48 [v2.00] */
+/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */
+package com.ibm.icu.math;
+
+/* ------------------------------------------------------------------ */
+/* MathContext -- Math context settings                               */
+/* ------------------------------------------------------------------ */
+/* Copyright IBM Corporation, 1997, 2000, 2005, 2007.  All Rights Reserved. */
+/*                                                                    */
+/*   The MathContext object encapsulates the settings used by the     */
+/*   BigDecimal class; it could also be used by other arithmetics.    */
+/* ------------------------------------------------------------------ */
+/* Notes:                                                             */
+/*                                                                    */
+/* 1. The properties are checked for validity on construction, so     */
+/*    the BigDecimal class may assume that they are correct.          */
+/* ------------------------------------------------------------------ */
+/* Author:    Mike Cowlishaw                                          */
+/* 1997.09.03 Initial version (edited from netrexx.lang.RexxSet)      */
+/* 1997.09.12 Add lostDigits property                                 */
+/* 1998.05.02 Make the class immutable and final; drop set methods    */
+/* 1998.06.05 Add Round (rounding modes) property                     */
+/* 1998.06.25 Rename from DecimalContext; allow digits=0              */
+/* 1998.10.12 change to com.ibm.icu.math package                          */
+/* 1999.02.06 add javadoc comments                                    */
+/* 1999.03.05 simplify; changes from discussion with J. Bloch         */
+/* 1999.03.13 1.00 release to IBM Centre for Java Technology          */
+/* 1999.07.10 1.04 flag serialization unused                          */
+/* 2000.01.01 1.06 copyright update                                   */
+/* ------------------------------------------------------------------ */
+
+
+
+
+/**
+ * The <code>MathContext</code> immutable class encapsulates the
+ * settings understood by the operator methods of the {@link BigDecimal}
+ * class (and potentially other classes).  Operator methods are those
+ * that effect an operation on a number or a pair of numbers.
+ * <p>
+ * The settings, which are not base-dependent, comprise:
+ * <ol>
+ * <li><code>digits</code>:
+ * the number of digits (precision) to be used for an operation
+ * <li><code>form</code>:
+ * the form of any exponent that results from the operation
+ * <li><code>lostDigits</code>:
+ * whether checking for lost digits is enabled
+ * <li><code>roundingMode</code>:
+ * the algorithm to be used for rounding.
+ * </ol>
+ * <p>
+ * When provided, a <code>MathContext</code> object supplies the
+ * settings for an operation directly.
+ * <p>
+ * When <code>MathContext.DEFAULT</code> is provided for a
+ * <code>MathContext</code> parameter then the default settings are used
+ * (<code>9, SCIENTIFIC, false, ROUND_HALF_UP</code>).
+ * <p>
+ * In the <code>BigDecimal</code> class, all methods which accept a
+ * <code>MathContext</code> object defaults) also have a version of the
+ * method which does not accept a MathContext parameter.  These versions
+ * carry out unlimited precision fixed point arithmetic (as though the
+ * settings were (<code>0, PLAIN, false, ROUND_HALF_UP</code>).
+ * <p>
+ * The instance variables are shared with default access (so they are
+ * directly accessible to the <code>BigDecimal</code> class), but must
+ * never be changed.
+ * <p>
+ * The rounding mode constants have the same names and values as the
+ * constants of the same name in <code>java.math.BigDecimal</code>, to
+ * maintain compatibility with earlier versions of
+ * <code>BigDecimal</code>.
+ *
+ * @see     BigDecimal
+ * @author  Mike Cowlishaw
+ * @stable ICU 2.0
+ */
+
+public final class MathContext implements java.io.Serializable{
+ //private static final java.lang.String $0="MathContext.nrx";
+ 
+ /* ----- Properties ----- */
+ /* properties public constant */
+ /**
+  * Plain (fixed point) notation, without any exponent.
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #ENGINEERING
+  * @see #SCIENTIFIC
+  * @stable ICU 2.0
+  */
+ public static final int PLAIN=0; // [no exponent]
+ 
+ /**
+  * Standard floating point notation (with scientific exponential
+  * format, where there is one digit before any decimal point).
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #ENGINEERING
+  * @see #PLAIN
+  * @stable ICU 2.0
+  */
+ public static final int SCIENTIFIC=1; // 1 digit before .
+ 
+ /**
+  * Standard floating point notation (with engineering exponential
+  * format, where the power of ten is a multiple of 3).
+  * Used as a setting to control the form of the result of a
+  * <code>BigDecimal</code> operation.
+  * A zero result in plain form may have a decimal part of one or
+  * more zeros.
+  *
+  * @see #PLAIN
+  * @see #SCIENTIFIC
+  * @stable ICU 2.0
+  */
+ public static final int ENGINEERING=2; // 1-3 digits before .
+ 
+ // The rounding modes match the original BigDecimal class values
+ /**
+  * Rounding mode to round to a more positive number.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result
+  * should be rounded towards the next more positive digit.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_CEILING=2;
+ 
+ /**
+  * Rounding mode to round towards zero.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * All discarded digits are ignored (truncated).  The result is
+  * neither incremented nor decremented.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_DOWN=1;
+ 
+ /**
+  * Rounding mode to round to a more negative number.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result
+  * should be rounded towards the next more negative digit.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_FLOOR=3;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded down.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than half (0.5 times)
+  * the value of a one in the next position then the result should be
+  * rounded up (away from zero).  Otherwise the discarded digits are
+  * ignored.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_DOWN=5;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded to the nearest even neighbor.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than half (0.5 times)
+  * the value of a one in the next position then the result should be
+  * rounded up (away from zero).  If they represent less than half,
+  * then the result should be rounded down.
+  * <p>
+  * Otherwise (they represent exactly half) the result is rounded
+  * down if its rightmost digit is even, or rounded up if its
+  * rightmost digit is odd (to make an even digit).
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_EVEN=6;
+ 
+ /**
+  * Rounding mode to round to nearest neighbor, where an equidistant
+  * value is rounded up.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If the discarded digits represent greater than or equal to half
+  * (0.5 times) the value of a one in the next position then the result
+  * should be rounded up (away from zero).  Otherwise the discarded
+  * digits are ignored.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_HALF_UP=4;
+ 
+ /**
+  * Rounding mode to assert that no rounding is necessary.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * Rounding (potential loss of information) is not permitted.
+  * If any of the discarded digits are non-zero then an
+  * <code>ArithmeticException</code> should be thrown.
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_UNNECESSARY=7;
+ 
+ /**
+  * Rounding mode to round away from zero.
+  * Used as a setting to control the rounding mode used during a
+  * <code>BigDecimal</code> operation.
+  * <p>
+  * If any of the discarded digits are non-zero then the result will
+  * be rounded up (away from zero).
+  * @stable ICU 2.0
+  */
+ public static final int ROUND_UP=0;
+ 
+ 
+ /* properties shared */
+ /**
+  * The number of digits (precision) to be used for an operation.
+  * A value of 0 indicates that unlimited precision (as many digits
+  * as are required) will be used.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the precision of results.
+  * Note that leading zeros (in the integer part of a number) are
+  * never significant.
+  * <p>
+  * <code>digits</code> will always be non-negative.
+  *
+  * @serial
+  */
+ int digits;
+ 
+ /**
+  * The form of results from an operation.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the form of results, in particular whether and how
+  * exponential notation should be used.
+  *
+  * @see #ENGINEERING
+  * @see #PLAIN
+  * @see #SCIENTIFIC
+  * @serial
+  */
+ int form; // values for this must fit in a byte
+ 
+ /**
+  * Controls whether lost digits checking is enabled for an
+  * operation.
+  * Set to <code>true</code> to enable checking, or
+  * to <code>false</code> to disable checking.
+  * <p>
+  * When enabled, the {@link BigDecimal} operator methods check
+  * the precision of their operand or operands, and throw an
+  * <code>ArithmeticException</code> if an operand is more precise
+  * than the digits setting (that is, digits would be lost).
+  * When disabled, operands are rounded to the specified digits.
+  *
+  * @serial
+  */
+ boolean lostDigits;
+ 
+ /**
+  * The rounding algorithm to be used for an operation.
+  * <p>
+  * The {@link BigDecimal} operator methods use this value to
+  * determine the algorithm to be used when non-zero digits have to
+  * be discarded in order to reduce the precision of a result.
+  * The value must be one of the public constants whose name starts
+  * with <code>ROUND_</code>.
+  *
+  * @see #ROUND_CEILING
+  * @see #ROUND_DOWN
+  * @see #ROUND_FLOOR
+  * @see #ROUND_HALF_DOWN
+  * @see #ROUND_HALF_EVEN
+  * @see #ROUND_HALF_UP
+  * @see #ROUND_UNNECESSARY
+  * @see #ROUND_UP
+  * @serial
+  */
+ int roundingMode;
+ 
+ /* properties private constant */
+ // default settings
+ private static final int DEFAULT_FORM=SCIENTIFIC;
+ private static final int DEFAULT_DIGITS=9;
+ private static final boolean DEFAULT_LOSTDIGITS=false;
+ private static final int DEFAULT_ROUNDINGMODE=ROUND_HALF_UP;
+ 
+ /* properties private constant */
+ 
+ private static final int MIN_DIGITS=0; // smallest value for DIGITS.
+ private static final int MAX_DIGITS=999999999; // largest value for DIGITS.  If increased,
+ // the BigDecimal class may need update.
+ // list of valid rounding mode values, most common two first
+ private static final int ROUNDS[]=new int[]{ROUND_HALF_UP,ROUND_UNNECESSARY,ROUND_CEILING,ROUND_DOWN,ROUND_FLOOR,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UP};
+ 
+ 
+ private static final java.lang.String ROUNDWORDS[]=new java.lang.String[]{"ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"}; // matching names of the ROUNDS values
+ 
+ 
+ 
+ 
+ /* properties private constant unused */
+ 
+ // Serialization version
+ private static final long serialVersionUID=7163376998892515376L;
+ 
+ /* properties public constant */
+ /**
+  * A <code>MathContext</code> object initialized to the default
+  * settings for general-purpose arithmetic.  That is,
+  * <code>digits=9 form=SCIENTIFIC lostDigits=false
+  * roundingMode=ROUND_HALF_UP</code>.
+  *
+  * @see #SCIENTIFIC
+  * @see #ROUND_HALF_UP
+  * @stable ICU 2.0
+  */
+ public static final com.ibm.icu.math.MathContext DEFAULT=new com.ibm.icu.math.MathContext(DEFAULT_DIGITS,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+
+ 
+ 
+ 
+ /* ----- Constructors ----- */
+ 
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision.
+  * The other settings are set to the default values
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999).
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  * @stable ICU 2.0
+  */
+ 
+ public MathContext(int setdigits){
+  this(setdigits,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ 
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision and form.
+  * The other settings are set to the default values
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> parameter is not one of the appropriate
+  * constants.
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @param setform       The <code>int</code> form setting
+  *                      for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  * @stable ICU 2.0
+  */
+ 
+ public MathContext(int setdigits,int setform){
+  this(setdigits,setform,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision, form, and lostDigits setting.
+  * The roundingMode setting is set to its default value
+  * (see {@link #DEFAULT}).
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> parameter is not one of the appropriate
+  * constants.
+  *
+  * @param setdigits     The <code>int</code> digits setting
+  *                      for this <code>MathContext</code>.
+  * @param setform       The <code>int</code> form setting
+  *                      for this <code>MathContext</code>.
+  * @param setlostdigits The <code>boolean</code> lostDigits
+  *                      setting for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  * @stable ICU 2.0
+  */
+ 
+ public MathContext(int setdigits,int setform,boolean setlostdigits){
+  this(setdigits,setform,setlostdigits,DEFAULT_ROUNDINGMODE);
+  return;}
+
+ /**
+  * Constructs a new <code>MathContext</code> with a specified
+  * precision, form, lostDigits, and roundingMode setting.
+  *
+  * An <code>IllegalArgumentException</code> is thrown if the
+  * <code>setdigits</code> parameter is out of range
+  * (&lt;0 or &gt;999999999), or if the value given for the
+  * <code>setform</code> or <code>setroundingmode</code> parameters is
+  * not one of the appropriate constants.
+  *
+  * @param setdigits       The <code>int</code> digits setting
+  *                        for this <code>MathContext</code>.
+  * @param setform         The <code>int</code> form setting
+  *                        for this <code>MathContext</code>.
+  * @param setlostdigits   The <code>boolean</code> lostDigits
+  *                        setting for this <code>MathContext</code>.
+  * @param setroundingmode The <code>int</code> roundingMode setting
+  *                        for this <code>MathContext</code>.
+  * @throws IllegalArgumentException parameter out of range.
+  * @stable ICU 2.0
+  */
+ 
+ public MathContext(int setdigits,int setform,boolean setlostdigits,int setroundingmode){super();
+  
+  
+  // set values, after checking
+  if (setdigits!=DEFAULT_DIGITS) 
+   {
+    if (setdigits<MIN_DIGITS) 
+     throw new java.lang.IllegalArgumentException("Digits too small:"+" "+setdigits);
+    if (setdigits>MAX_DIGITS) 
+     throw new java.lang.IllegalArgumentException("Digits too large:"+" "+setdigits);
+   }
+  {/*select*/
+  if (setform==SCIENTIFIC){
+   // [most common]
+  }else if (setform==ENGINEERING){
+  }else if (setform==PLAIN){
+  }else{
+   throw new java.lang.IllegalArgumentException("Bad form value:"+" "+setform);
+  }
+  }
+  if ((!(isValidRound(setroundingmode)))) 
+   throw new java.lang.IllegalArgumentException("Bad roundingMode value:"+" "+setroundingmode);
+  digits=setdigits;
+  form=setform;
+  lostDigits=setlostdigits; // [no bad value possible]
+  roundingMode=setroundingmode;
+  return;}
+
+ /**
+  * Returns the digits setting.
+  * This value is always non-negative.
+  *
+  * @return an <code>int</code> which is the value of the digits
+  *         setting
+  * @stable ICU 2.0
+  */
+ 
+ public int getDigits(){
+  return digits;
+  }
+
+ /**
+  * Returns the form setting.
+  * This will be one of
+  * {@link #ENGINEERING},
+  * {@link #PLAIN}, or
+  * {@link #SCIENTIFIC}.
+  *
+  * @return an <code>int</code> which is the value of the form setting
+  * @stable ICU 2.0
+  */
+ 
+ public int getForm(){
+  return form;
+  }
+
+ /**
+  * Returns the lostDigits setting.
+  * This will be either <code>true</code> (enabled) or
+  * <code>false</code> (disabled).
+  *
+  * @return a <code>boolean</code> which is the value of the lostDigits
+  *           setting
+  * @stable ICU 2.0
+  */
+ 
+ public boolean getLostDigits(){
+  return lostDigits;
+  }
+
+ /**
+  * Returns the roundingMode setting.
+  * This will be one of
+  * {@link  #ROUND_CEILING},
+  * {@link  #ROUND_DOWN},
+  * {@link  #ROUND_FLOOR},
+  * {@link  #ROUND_HALF_DOWN},
+  * {@link  #ROUND_HALF_EVEN},
+  * {@link  #ROUND_HALF_UP},
+  * {@link  #ROUND_UNNECESSARY}, or
+  * {@link  #ROUND_UP}.
+  *
+  * @return an <code>int</code> which is the value of the roundingMode
+  *         setting
+  * @stable ICU 2.0
+  */
+ 
+ public int getRoundingMode(){
+  return roundingMode;
+  }
+
+ /** Returns the <code>MathContext</code> as a readable string.
+  * The <code>String</code> returned represents the settings of the
+  * <code>MathContext</code> object as four blank-delimited words
+  * separated by a single blank and with no leading or trailing blanks,
+  * as follows:
+  * <ol>
+  * <li>
+  * <code>digits=</code>, immediately followed by
+  * the value of the digits setting as a numeric word.
+  * <li>
+  * <code>form=</code>, immediately followed by
+  * the value of the form setting as an uppercase word
+  * (one of <code>SCIENTIFIC</code>, <code>PLAIN</code>, or
+  * <code>ENGINEERING</code>).
+  * <li>
+  * <code>lostDigits=</code>, immediately followed by
+  * the value of the lostDigits setting
+  * (<code>1</code> if enabled, <code>0</code> if disabled).
+  * <li>
+  * <code>roundingMode=</code>, immediately followed by
+  * the value of the roundingMode setting as a word.
+  * This word will be the same as the name of the corresponding public
+  * constant.
+  * </ol>
+  * <p>
+  * For example:
+  * <br><code>
+  * digits=9 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP
+  * </code>
+  * <p>
+  * Additional words may be appended to the result of
+  * <code>toString</code> in the future if more properties are added
+  * to the class.
+  *
+  * @return a <code>String</code> representing the context settings.
+  * @stable ICU 2.0
+  */
+ 
+ public java.lang.String toString(){
+  java.lang.String formstr=null;
+  int r=0;
+  java.lang.String roundword=null;
+  {/*select*/
+  if (form==SCIENTIFIC)
+   formstr="SCIENTIFIC";
+  else if (form==ENGINEERING)
+   formstr="ENGINEERING";
+  else{
+   formstr="PLAIN";/* form=PLAIN */
+  }
+  }
+  {int $1=ROUNDS.length;r=0;r:for(;$1>0;$1--,r++){
+   if (roundingMode==ROUNDS[r]) 
+    {
+     roundword=ROUNDWORDS[r];
+     break r;
+    }
+   }
+  }/*r*/
+  return "digits="+digits+" "+"form="+formstr+" "+"lostDigits="+(lostDigits?"1":"0")+" "+"roundingMode="+roundword;
+  }
+
+ 
+ /* <sgml> Test whether round is valid. </sgml> */
+ // This could be made shared for use by BigDecimal for setScale.
+ 
+ private static boolean isValidRound(int testround){
+  int r=0;
+  {int $2=ROUNDS.length;for(r=0;$2>0;$2--,r++){
+   if (testround==ROUNDS[r]) 
+    return true;
+   }
+  }/*r*/
+  return false;
+  }
+ }
diff --git a/src/com/ibm/icu/math/package.html b/src/com/ibm/icu/math/package.html
new file mode 100644
index 0000000..6336ead
--- /dev/null
+++ b/src/com/ibm/icu/math/package.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+
+<head><!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+
+<title>C:\cvs\icu4j\src\com\ibm\demo\package.html</title>
+</head>
+
+<body bgcolor="white">
+
+<p>IBM BigDecimal support.</p>
+</body>
+</html>
diff --git a/src/com/ibm/icu/text/AnyTransliterator.java b/src/com/ibm/icu/text/AnyTransliterator.java
new file mode 100644
index 0000000..5f544ec
--- /dev/null
+++ b/src/com/ibm/icu/text/AnyTransliterator.java
@@ -0,0 +1,341 @@
+/*
+*****************************************************************
+* Copyright (c) 2002-2006, International Business Machines Corporation
+* and others.  All Rights Reserved.
+*****************************************************************
+* Date        Name        Description
+* 06/06/2002  aliu        Creation.
+*****************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.lang.UScript;
+import java.lang.Math;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.MissingResourceException;
+/**
+ * A transliterator that translates multiple input scripts to a single
+ * output script.  It is named Any-T or Any-T/V, where T is the target
+ * and V is the optional variant.  The target T is a script.
+ *
+ * <p>An AnyTransliterator partitions text into runs of the same
+ * script, together with adjacent COMMON or INHERITED characters.
+ * After determining the script of each run, it transliterates from
+ * that script to the given target/variant.  It does so by
+ * instantiating a transliterator from the source script to the
+ * target/variant.  If a run consists only of the target script,
+ * COMMON, or INHERITED characters, then the run is not changed.
+ *
+ * <p>At startup, all possible AnyTransliterators are registered with
+ * the system, as determined by examining the registered script
+ * transliterators.
+ *
+ * @since ICU 2.2
+ * @author Alan Liu
+ */
+class AnyTransliterator extends Transliterator {
+
+    //------------------------------------------------------------
+    // Constants
+
+    static final char TARGET_SEP = '-';
+    static final char VARIANT_SEP = '/';
+    static final String ANY = "Any";
+    static final String NULL_ID = "Null";
+    static final String LATIN_PIVOT = "-Latin;Latin-";
+
+    /**
+     * Cache mapping UScriptCode values to Transliterator*.
+     */
+    private Map cache;
+
+    /**
+     * The target or target/variant string.
+     */
+    private String target;
+
+    /**
+     * The target script code.  Never USCRIPT_INVALID_CODE.
+     */
+    private int targetScript;
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean isIncremental) {
+        int allStart = pos.start;
+        int allLimit = pos.limit;
+
+        ScriptRunIterator it =
+            new ScriptRunIterator(text, pos.contextStart, pos.contextLimit);
+
+        while (it.next()) {
+            // Ignore runs in the ante context
+            if (it.limit <= allStart) continue;
+
+            // Try to instantiate transliterator from it.scriptCode to
+            // our target or target/variant
+            Transliterator t = getTransliterator(it.scriptCode);
+
+            if (t == null) {
+                // We have no transliterator.  Do nothing, but keep
+                // pos.start up to date.
+                pos.start = it.limit;
+                continue;
+            }
+
+            // If the run end is before the transliteration limit, do
+            // a non-incremental transliteration.  Otherwise do an
+            // incremental one.
+            boolean incremental = isIncremental && (it.limit >= allLimit);
+
+            pos.start = Math.max(allStart, it.start);
+            pos.limit = Math.min(allLimit, it.limit);
+            int limit = pos.limit;
+            t.filteredTransliterate(text, pos, incremental);
+            int delta = pos.limit - limit;
+            allLimit += delta;
+            it.adjustLimit(delta);
+
+            // We're done if we enter the post context
+            if (it.limit >= allLimit) break;
+        }
+
+        // Restore limit.  pos.start is fine where the last transliterator
+        // left it, or at the end of the last run.
+        pos.limit = allLimit;
+    }
+
+    /**
+     * Private constructor
+     * @param id the ID of the form S-T or S-T/V, where T is theTarget
+     * and V is theVariant.  Must not be empty.
+     * @param theTarget the target name.  Must not be empty, and must
+     * name a script corresponding to theTargetScript.
+     * @param theVariant the variant name, or the empty string if
+     * there is no variant
+     * @param theTargetScript the script code corresponding to
+     * theTarget.
+     */
+    private AnyTransliterator(String id,
+                              String theTarget,
+                              String theVariant,
+                              int theTargetScript) {
+        super(id, null);
+        targetScript = theTargetScript;
+        cache = new HashMap();
+
+        target = theTarget;
+        if (theVariant.length() > 0) {
+            target = theTarget + VARIANT_SEP + theVariant;
+        }
+    }
+
+    /**
+     * Returns a transliterator from the given source to our target or
+     * target/variant.  Returns NULL if the source is the same as our
+     * target script, or if the source is USCRIPT_INVALID_CODE.
+     * Caches the result and returns the same transliterator the next
+     * time.  The caller does NOT own the result and must not delete
+     * it.
+     */
+    private Transliterator getTransliterator(int source) {
+        if (source == targetScript || source == UScript.INVALID_CODE) {
+            return null;
+        }
+
+        Integer key = new Integer(source);
+        Transliterator t = (Transliterator) cache.get(key);
+        if (t == null) {
+            String sourceName = UScript.getName(source);
+            String id = sourceName + TARGET_SEP + target;
+
+            try {
+                t = Transliterator.getInstance(id, FORWARD);
+            } catch (RuntimeException e) { }
+            if (t == null) {
+
+                // Try to pivot around Latin, our most common script
+                id = sourceName + LATIN_PIVOT + target;
+                try {
+                    t = Transliterator.getInstance(id, FORWARD);
+                } catch (RuntimeException e) { }
+            }
+
+            if (t != null) {
+                cache.put(key, t);
+            }
+        }
+
+        return t;
+    }
+
+    /**
+     * Registers standard transliterators with the system.  Called by
+     * Transliterator during initialization.  Scan all current targets
+     * and register those that are scripts T as Any-T/V.
+     */
+    static void register() {
+
+        HashSet seen = new HashSet();
+
+        for (Enumeration s=Transliterator.getAvailableSources(); s.hasMoreElements(); ) {
+            String source = (String) s.nextElement();
+
+            // Ignore the "Any" source
+            if (source.equalsIgnoreCase(ANY)) continue;
+
+            for (Enumeration t=Transliterator.getAvailableTargets(source);
+                 t.hasMoreElements(); ) {
+                String target = (String) t.nextElement();
+
+                // Only process each target once
+                if (seen.contains(target)) continue;
+                seen.add(target);
+
+                // Get the script code for the target.  If not a script, ignore.
+                int targetScript = scriptNameToCode(target);
+                if (targetScript == UScript.INVALID_CODE) continue;
+
+                for (Enumeration v=Transliterator.getAvailableVariants(source, target);
+                     v.hasMoreElements(); ) {
+                    String variant = (String) v.nextElement();
+
+                    String id;
+                    id = TransliteratorIDParser.STVtoID(ANY, target, variant);
+                    AnyTransliterator trans = new AnyTransliterator(id, target, variant,
+                                                                    targetScript);
+                    Transliterator.registerInstance(trans);
+                    Transliterator.registerSpecialInverse(target, NULL_ID, false);
+                }
+            }
+        }
+    }
+
+    /**
+     * Return the script code for a given name, or
+     * UScript.INVALID_CODE if not found.
+     */
+    private static int scriptNameToCode(String name) {
+        try{
+            int[] codes = UScript.getCode(name);
+            return codes != null ? codes[0] : UScript.INVALID_CODE;
+        }catch( MissingResourceException e){
+            return UScript.INVALID_CODE;
+        }
+    }
+
+    //------------------------------------------------------------
+    // ScriptRunIterator
+
+    /**
+     * Returns a series of ranges corresponding to scripts. They will be
+     * of the form:
+     *
+     * ccccSScSSccccTTcTcccc   - c = common, S = first script, T = second
+     * |            |          - first run (start, limit)
+     *          |           |  - second run (start, limit)
+     *
+     * That is, the runs will overlap. The reason for this is so that a
+     * transliterator can consider common characters both before and after
+     * the scripts.
+     */
+    private static class ScriptRunIterator {
+
+        private Replaceable text;
+        private int textStart;
+        private int textLimit;
+
+        /**
+         * The code of the current run, valid after next() returns.  May
+         * be UScript.INVALID_CODE if and only if the entire text is
+         * COMMON/INHERITED.
+         */
+        public int scriptCode;
+
+        /**
+         * The start of the run, inclusive, valid after next() returns.
+         */
+        public int start;
+
+        /**
+         * The end of the run, exclusive, valid after next() returns.
+         */
+        public int limit;
+
+        /**
+         * Constructs a run iterator over the given text from start
+         * (inclusive) to limit (exclusive).
+         */
+        public ScriptRunIterator(Replaceable text, int start, int limit) {
+            this.text = text;
+            this.textStart = start;
+            this.textLimit = limit;
+            this.limit = start;
+        }
+
+
+        /**
+         * Returns TRUE if there are any more runs.  TRUE is always
+         * returned at least once.  Upon return, the caller should
+         * examine scriptCode, start, and limit.
+         */
+        public boolean next() {
+            int ch;
+            int s;
+
+            scriptCode = UScript.INVALID_CODE; // don't know script yet
+            start = limit;
+
+            // Are we done?
+            if (start == textLimit) {
+                return false;
+            }
+
+            // Move start back to include adjacent COMMON or INHERITED
+            // characters
+            while (start > textStart) {
+                ch = text.char32At(start - 1); // look back
+                s = UScript.getScript(ch);
+                if (s == UScript.COMMON || s == UScript.INHERITED) {
+                    --start;
+                } else {
+                    break;
+                }
+            }
+
+            // Move limit ahead to include COMMON, INHERITED, and characters
+            // of the current script.
+            while (limit < textLimit) {
+                ch = text.char32At(limit); // look ahead
+                s = UScript.getScript(ch);
+                if (s != UScript.COMMON && s != UScript.INHERITED) {
+                    if (scriptCode == UScript.INVALID_CODE) {
+                        scriptCode = s;
+                    } else if (s != scriptCode) {
+                        break;
+                    }
+                }
+                ++limit;
+            }
+
+            // Return TRUE even if the entire text is COMMON / INHERITED, in
+            // which case scriptCode will be UScript.INVALID_CODE.
+            return true;
+        }
+
+        /**
+         * Adjusts internal indices for a change in the limit index of the
+         * given delta.  A positive delta means the limit has increased.
+         */
+        public void adjustLimit(int delta) {
+            limit += delta;
+            textLimit += delta;
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/ArabicShaping.java b/src/com/ibm/icu/text/ArabicShaping.java
new file mode 100644
index 0000000..b352fbb
--- /dev/null
+++ b/src/com/ibm/icu/text/ArabicShaping.java
@@ -0,0 +1,1231 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.UBiDiProps;
+
+import com.ibm.icu.lang.*;
+
+/**
+ * Shape Arabic text on a character basis.
+ *
+ * <p>ArabicShaping performs basic operations for "shaping" Arabic text. It is most
+ * useful for use with legacy data formats and legacy display technology
+ * (simple terminals). All operations are performed on Unicode characters.</p>
+ *
+ * <p>Text-based shaping means that some character code points in the text are
+ * replaced by others depending on the context. It transforms one kind of text
+ * into another. In comparison, modern displays for Arabic text select
+ * appropriate, context-dependent font glyphs for each text element, which means
+ * that they transform text into a glyph vector.</p>
+ *
+ * <p>Text transformations are necessary when modern display technology is not
+ * available or when text needs to be transformed to or from legacy formats that
+ * use "shaped" characters. Since the Arabic script is cursive, connecting
+ * adjacent letters to each other, computers select images for each letter based
+ * on the surrounding letters. This usually results in four images per Arabic
+ * letter: initial, middle, final, and isolated forms. In Unicode, on the other
+ * hand, letters are normally stored abstract, and a display system is expected
+ * to select the necessary glyphs. (This makes searching and other text
+ * processing easier because the same letter has only one code.) It is possible
+ * to mimic this with text transformations because there are characters in
+ * Unicode that are rendered as letters with a specific shape
+ * (or cursive connectivity). They were included for interoperability with
+ * legacy systems and codepages, and for unsophisticated display systems.</p>
+ *
+ * <p>A second kind of text transformations is supported for Arabic digits:
+ * For compatibility with legacy codepages that only include European digits,
+ * it is possible to replace one set of digits by another, changing the
+ * character code points. These operations can be performed for either
+ * Arabic-Indic Digits (U+0660...U+0669) or Eastern (Extended) Arabic-Indic
+ * digits (U+06f0...U+06f9).</p>
+ *
+ * <p>Some replacements may result in more or fewer characters (code points).
+ * By default, this means that the destination buffer may receive text with a
+ * length different from the source length. Some legacy systems rely on the
+ * length of the text to be constant. They expect extra spaces to be added
+ * or consumed either next to the affected character or at the end of the
+ * text.</p>
+ * @stable ICU 2.0
+ */
+public final class ArabicShaping {
+    private final int options;
+    private boolean isLogical; // convenience
+
+    /**
+     * Convert a range of text in the source array, putting the result 
+     * into a range of text in the destination array, and return the number
+     * of characters written.
+     *
+     * @param source An array containing the input text
+     * @param sourceStart The start of the range of text to convert
+     * @param sourceLength The length of the range of text to convert
+     * @param dest The destination array that will receive the result.
+     *   It may be <code>NULL</code> only if  <code>destSize</code> is 0.  
+     * @param destStart The start of the range of the destination buffer to use.
+     * @param destSize The size (capacity) of the destination buffer.
+     *   If <code>destSize</code> is 0, then no output is produced,
+     *   but the necessary buffer size is returned ("preflighting").  This
+     *   does not validate the text against the options, for example, 
+     *   if letters are being unshaped, and spaces are being consumed
+     *   following lamalef, this will not detect a lamalef without a 
+     *   corresponding space.  An error will be thrown when the actual
+     *   conversion is attempted.
+     * @return The number of chars written to the destination buffer.
+     *   If an error occurs, then no output was written, or it may be
+     *   incomplete.
+     * @throws ArabicShapingException if the text cannot be converted according to the options.
+     * @stable ICU 2.0
+     */
+    public int shape(char[] source, int sourceStart, int sourceLength,
+                     char[] dest, int destStart, int destSize) throws ArabicShapingException {
+        if (source == null) {
+            throw new IllegalArgumentException("source can not be null");
+        }
+        if (sourceStart < 0 || sourceLength < 0 || sourceStart + sourceLength > source.length) {
+            throw new IllegalArgumentException("bad source start (" + sourceStart +
+                                               ") or length (" + sourceLength +
+                                               ") for buffer of length " + source.length);
+        }
+        if (dest == null && destSize != 0) {
+            throw new IllegalArgumentException("null dest requires destSize == 0");
+        }
+        if ((destSize != 0) &&
+            (destStart < 0 || destSize < 0 || destStart + destSize > dest.length)) {
+            throw new IllegalArgumentException("bad dest start (" + destStart + 
+                                               ") or size (" + destSize + 
+                                               ") for buffer of length " + dest.length);
+        }
+
+        return internalShape(source, sourceStart, sourceLength, dest, destStart, destSize);
+    }
+
+    /**
+     * Convert a range of text in place.  This may only be used if the Length option
+     * does not grow or shrink the text.
+     *
+     * @param source An array containing the input text
+     * @param start The start of the range of text to convert
+     * @param length The length of the range of text to convert
+     * @throws ArabicShapingException if the text cannot be converted according to the options.
+     * @stable ICU 2.0
+     */
+    public void shape(char[] source, int start, int length) throws ArabicShapingException {
+        if ((options & LENGTH_MASK) == LENGTH_GROW_SHRINK) {
+            throw new ArabicShapingException("Cannot shape in place with length option grow/shrink.");
+        }
+        shape(source, start, length, source, start, length);
+    }
+
+    /**
+     * Convert a string, returning the new string.
+     *
+     * @param text the string to convert
+     * @return the converted string
+     * @throws ArabicShapingException if the string cannot be converted according to the options.
+     * @stable ICU 2.0
+     */
+    public String shape(String text) throws ArabicShapingException {
+        char[] src = text.toCharArray();
+        char[] dest = src;
+        if (((options & LENGTH_MASK) == LENGTH_GROW_SHRINK) &&
+            ((options & LETTERS_MASK) == LETTERS_UNSHAPE)) {
+
+            dest = new char[src.length * 2]; // max
+        }
+        int len = shape(src, 0, src.length, dest, 0, dest.length);
+
+        return new String(dest, 0, len);
+    }
+
+    /**
+     * Construct ArabicShaping using the options flags.
+     * The flags are as follows:<br>
+     * 'LENGTH' flags control whether the text can change size, and if not,
+     * how to maintain the size of the text when LamAlef ligatures are 
+     * formed or broken.<br>
+     * 'TEXT_DIRECTION' flags control whether the text is read and written
+     * in visual order or in logical order.<br>
+     * 'LETTERS_SHAPE' flags control whether conversion is to or from
+     * presentation forms.<br>
+     * 'DIGITS' flags control whether digits are shaped, and whether from
+     * European to Arabic-Indic or vice-versa.<br>
+     * 'DIGIT_TYPE' flags control whether standard or extended Arabic-Indic
+     * digits are used when performing digit conversion.
+     * @stable ICU 2.0
+     */
+    public ArabicShaping(int options) {
+        this.options = options;
+        if ((options & DIGITS_MASK) > 0x80) {
+            throw new IllegalArgumentException("bad DIGITS options");
+        }
+        isLogical = (options & TEXT_DIRECTION_MASK) == TEXT_DIRECTION_LOGICAL;
+    }
+
+    /**
+     * Memory option: allow the result to have a different length than the source.
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_GROW_SHRINK = 0;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces next to modified characters.
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_FIXED_SPACES_NEAR = 1;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces at the end of the text.
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_FIXED_SPACES_AT_END = 2;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * If more room is necessary, then try to consume spaces at the beginning of the text.
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_FIXED_SPACES_AT_BEGINNING = 3;
+
+    /** 
+     * Bit mask for memory options. 
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_MASK = 3;
+
+
+    /** 
+     * Direction indicator: the source is in logical (keyboard) order. 
+     * @stable ICU 2.0
+     */
+    public static final int TEXT_DIRECTION_LOGICAL = 0;
+
+    /** 
+     * Direction indicator: the source is in visual (display) order, that is,
+     * the leftmost displayed character is stored first.
+     * @stable ICU 2.0
+     */
+    public static final int TEXT_DIRECTION_VISUAL_LTR = 4;
+
+    /** 
+     * Bit mask for direction indicators. 
+     * @stable ICU 2.0
+     */
+    public static final int TEXT_DIRECTION_MASK = 4;
+
+
+    /**
+     * Letter shaping option: do not perform letter shaping. 
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_NOOP = 0;
+
+    /** 
+     * Letter shaping option: replace normative letter characters in the U+0600 (Arabic) block,
+     * by shaped ones in the U+FE70 (Presentation Forms B) block. Performs Lam-Alef ligature
+     * substitution.
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_SHAPE = 8;
+
+    /** 
+     * Letter shaping option: replace shaped letter characters in the U+FE70 (Presentation Forms B) block
+     * by normative ones in the U+0600 (Arabic) block.  Converts Lam-Alef ligatures to pairs of Lam and
+     * Alef characters, consuming spaces if required.
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_UNSHAPE = 0x10;
+
+    /**
+     * Letter shaping option: replace normative letter characters in the U+0600 (Arabic) block,
+     * except for the TASHKEEL characters at U+064B...U+0652, by shaped ones in the U+Fe70
+     * (Presentation Forms B) block.  The TASHKEEL characters will always be converted to
+     * the isolated forms rather than to their correct shape.
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_SHAPE_TASHKEEL_ISOLATED = 0x18;
+
+    /** 
+     * Bit mask for letter shaping options. 
+     * @stable ICU 2.0
+     */
+    public static final int LETTERS_MASK = 0x18;
+
+
+    /** 
+     * Digit shaping option: do not perform digit shaping. 
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_NOOP = 0;
+
+    /**
+     * Digit shaping option: Replace European digits (U+0030...U+0039) by Arabic-Indic digits.
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_EN2AN = 0x20;
+
+    /**
+     * Digit shaping option: Replace Arabic-Indic digits by European digits (U+0030...U+0039).
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_AN2EN = 0x40;
+
+    /**
+     * Digit shaping option:
+     * Replace European digits (U+0030...U+0039) by Arabic-Indic digits
+     * if the most recent strongly directional character
+     * is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). 
+     * The initial state at the start of the text is assumed to be not an Arabic,
+     * letter, so European digits at the start of the text will not change.
+     * Compare to DIGITS_ALEN2AN_INIT_AL.
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_EN2AN_INIT_LR = 0x60;
+
+    /**
+     * Digit shaping option:
+     * Replace European digits (U+0030...U+0039) by Arabic-Indic digits
+     * if the most recent strongly directional character
+     * is an Arabic letter (its Bidi direction value is RIGHT_TO_LEFT_ARABIC). 
+     * The initial state at the start of the text is assumed to be an Arabic,
+     * letter, so European digits at the start of the text will change.
+     * Compare to DIGITS_ALEN2AN_INT_LR.
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_EN2AN_INIT_AL = 0x80;
+
+    /** Not a valid option value. */
+    //private static final int DIGITS_RESERVED = 0xa0;
+
+    /** 
+     * Bit mask for digit shaping options. 
+     * @stable ICU 2.0
+     */
+    public static final int DIGITS_MASK = 0xe0;
+
+    /** 
+     * Digit type option: Use Arabic-Indic digits (U+0660...U+0669). 
+     * @stable ICU 2.0
+     */
+    public static final int DIGIT_TYPE_AN = 0;
+
+    /** 
+     * Digit type option: Use Eastern (Extended) Arabic-Indic digits (U+06f0...U+06f9). 
+     * @stable ICU 2.0
+     */
+    public static final int DIGIT_TYPE_AN_EXTENDED = 0x100;
+
+    /** 
+     * Bit mask for digit type options. 
+     * @stable ICU 2.0
+     */
+    public static final int DIGIT_TYPE_MASK = 0x0100; // 0x3f00?
+
+    /**
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object rhs) {
+        return rhs != null && 
+            rhs.getClass() == ArabicShaping.class && 
+            options == ((ArabicShaping)rhs).options;
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+     ///CLOVER:OFF
+    public int hashCode() {
+        return options;
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer(super.toString());
+        buf.append('[');
+        switch (options & LENGTH_MASK) {
+        case LENGTH_GROW_SHRINK: buf.append("grow/shrink"); break;
+        case LENGTH_FIXED_SPACES_NEAR: buf.append("spaces near"); break;
+        case LENGTH_FIXED_SPACES_AT_END: buf.append("spaces at end"); break;
+        case LENGTH_FIXED_SPACES_AT_BEGINNING: buf.append("spaces at beginning"); break;
+        }
+        switch (options & TEXT_DIRECTION_MASK) {
+        case TEXT_DIRECTION_LOGICAL: buf.append(", logical"); break;
+        case TEXT_DIRECTION_VISUAL_LTR: buf.append(", visual"); break;
+        }
+        switch (options & LETTERS_MASK) {
+        case LETTERS_NOOP: buf.append(", no letter shaping"); break;
+        case LETTERS_SHAPE: buf.append(", shape letters"); break;
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED: buf.append(", shape letters tashkeel isolated"); break;
+        case LETTERS_UNSHAPE: buf.append(", unshape letters"); break;
+        }
+        switch (options & DIGITS_MASK) {
+        case DIGITS_NOOP: buf.append(", no digit shaping"); break;
+        case DIGITS_EN2AN: buf.append(", shape digits to AN"); break;
+        case DIGITS_AN2EN: buf.append(", shape digits to EN"); break;
+        case DIGITS_EN2AN_INIT_LR: buf.append(", shape digits to AN contextually: default EN"); break;
+        case DIGITS_EN2AN_INIT_AL: buf.append(", shape digits to AN contextually: default AL"); break;
+        }
+        switch (options & DIGIT_TYPE_MASK) {
+        case DIGIT_TYPE_AN: buf.append(", standard Arabic-Indic digits"); break;
+        case DIGIT_TYPE_AN_EXTENDED: buf.append(", extended Arabic-Indic digits"); break;
+        }
+        buf.append("]");
+
+        return buf.toString();
+    }
+    ///CLOVER:ON
+
+    //
+    // ported api
+    //
+
+    private static final int IRRELEVANT = 4;
+    private static final int LAMTYPE = 16;
+    private static final int ALEFTYPE = 32;
+
+    private static final int LINKR = 1;
+    private static final int LINKL = 2;
+    private static final int LINK_MASK = 3;
+
+    private static final int irrelevantPos[] = { 
+        0x0, 0x2, 0x4, 0x6, 0x8, 0xA, 0xC, 0xE 
+    };
+
+/*
+    private static final char convertLamAlef[] =  {
+        '\u0622', // FEF5 
+        '\u0622', // FEF6
+        '\u0623', // FEF7
+        '\u0623', // FEF8
+        '\u0625', // FEF9
+        '\u0625', // FEFA
+        '\u0627', // FEFB
+        '\u0627'  // FEFC 
+    };
+*/
+
+    private static final char convertNormalizedLamAlef[] = {
+        '\u0622', // 065C
+        '\u0623', // 065D
+        '\u0625', // 065E
+        '\u0627', // 065F
+    };
+
+    private static final int[] araLink = {
+        1           + 32 + 256 * 0x11,  /*0x0622*/
+        1           + 32 + 256 * 0x13,  /*0x0623*/
+        1                + 256 * 0x15,  /*0x0624*/
+        1           + 32 + 256 * 0x17,  /*0x0625*/
+        1 + 2            + 256 * 0x19,  /*0x0626*/
+        1           + 32 + 256 * 0x1D,  /*0x0627*/
+        1 + 2            + 256 * 0x1F,  /*0x0628*/
+        1                + 256 * 0x23,  /*0x0629*/
+        1 + 2            + 256 * 0x25,  /*0x062A*/
+        1 + 2            + 256 * 0x29,  /*0x062B*/
+        1 + 2            + 256 * 0x2D,  /*0x062C*/
+        1 + 2            + 256 * 0x31,  /*0x062D*/
+        1 + 2            + 256 * 0x35,  /*0x062E*/
+        1                + 256 * 0x39,  /*0x062F*/
+        1                + 256 * 0x3B,  /*0x0630*/
+        1                + 256 * 0x3D,  /*0x0631*/
+        1                + 256 * 0x3F,  /*0x0632*/
+        1 + 2            + 256 * 0x41,  /*0x0633*/
+        1 + 2            + 256 * 0x45,  /*0x0634*/
+        1 + 2            + 256 * 0x49,  /*0x0635*/
+        1 + 2            + 256 * 0x4D,  /*0x0636*/
+        1 + 2            + 256 * 0x51,  /*0x0637*/
+        1 + 2            + 256 * 0x55,  /*0x0638*/
+        1 + 2            + 256 * 0x59,  /*0x0639*/
+        1 + 2            + 256 * 0x5D,  /*0x063A*/
+        0, 0, 0, 0, 0,                  /*0x063B-0x063F*/
+        1 + 2,                          /*0x0640*/
+        1 + 2            + 256 * 0x61,  /*0x0641*/
+        1 + 2            + 256 * 0x65,  /*0x0642*/
+        1 + 2            + 256 * 0x69,  /*0x0643*/
+        1 + 2       + 16 + 256 * 0x6D,  /*0x0644*/
+        1 + 2            + 256 * 0x71,  /*0x0645*/
+        1 + 2            + 256 * 0x75,  /*0x0646*/
+        1 + 2            + 256 * 0x79,  /*0x0647*/
+        1                + 256 * 0x7D,  /*0x0648*/
+        1                + 256 * 0x7F,  /*0x0649*/
+        1 + 2            + 256 * 0x81,  /*0x064A*/
+        4, 4, 4, 4,                     /*0x064B-0x064E*/
+        4, 4, 4, 4,                     /*0x064F-0x0652*/
+        4, 4, 4, 0, 0,                  /*0x0653-0x0657*/
+        0, 0, 0, 0,                     /*0x0658-0x065B*/
+        1                + 256 * 0x85,  /*0x065C*/
+        1                + 256 * 0x87,  /*0x065D*/
+        1                + 256 * 0x89,  /*0x065E*/
+        1                + 256 * 0x8B,  /*0x065F*/
+        0, 0, 0, 0, 0,                  /*0x0660-0x0664*/
+        0, 0, 0, 0, 0,                  /*0x0665-0x0669*/
+        0, 0, 0, 0, 0, 0,               /*0x066A-0x066F*/
+        4,                              /*0x0670*/
+        0,                              /*0x0671*/
+        1           + 32,               /*0x0672*/
+        1           + 32,               /*0x0673*/
+        0,                              /*0x0674*/
+        1           + 32,               /*0x0675*/
+        1, 1,                           /*0x0676-0x0677*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x0678-0x067D*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x067E-0x0683*/
+        1+2, 1+2, 1+2, 1+2,             /*0x0684-0x0687*/
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,   /*0x0688-0x0691*/
+        1, 1, 1, 1, 1, 1, 1, 1,         /*0x0692-0x0699*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x069A-0x06A3*/
+        1+2, 1+2, 1+2, 1+2,             /*0x069A-0x06A3*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06A4-0x06AD*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06A4-0x06AD*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06AE-0x06B7*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06AE-0x06B7*/
+        1+2, 1+2, 1+2, 1+2, 1+2, 1+2,   /*0x06B8-0x06BF*/
+        1+2, 1+2,                       /*0x06B8-0x06BF*/
+        1,                              /*0x06C0*/
+        1+2,                            /*0x06C1*/
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,   /*0x06C2-0x06CB*/
+        1+2,                            /*0x06CC*/
+        1,                              /*0x06CD*/
+        1+2, 1+2, 1+2, 1+2,             /*0x06CE-0x06D1*/
+        1, 1                            /*0x06D2-0x06D3*/
+    };
+
+    private static final int[] presLink = {
+        1 + 2,                        /*0xFE70*/
+        1 + 2,                        /*0xFE71*/
+        1 + 2, 0, 1+ 2, 0, 1+ 2,      /*0xFE72-0xFE76*/
+        1 + 2,                        /*0xFE77*/
+        1+ 2, 1 + 2, 1+2, 1 + 2,      /*0xFE78-0xFE81*/
+        1+ 2, 1 + 2, 1+2, 1 + 2,      /*0xFE82-0xFE85*/
+        0, 0 + 32, 1 + 32, 0 + 32,    /*0xFE86-0xFE89*/
+        1 + 32, 0, 1,  0 + 32,        /*0xFE8A-0xFE8D*/
+        1 + 32, 0, 2,  1 + 2,         /*0xFE8E-0xFE91*/
+        1, 0 + 32, 1 + 32, 0,         /*0xFE92-0xFE95*/
+        2, 1 + 2, 1, 0,               /*0xFE96-0xFE99*/
+        1, 0, 2, 1 + 2,               /*0xFE9A-0xFE9D*/
+        1, 0, 2, 1 + 2,               /*0xFE9E-0xFEA1*/
+        1, 0, 2, 1 + 2,               /*0xFEA2-0xFEA5*/
+        1, 0, 2, 1 + 2,               /*0xFEA6-0xFEA9*/
+        1, 0, 2, 1 + 2,               /*0xFEAA-0xFEAD*/
+        1, 0, 1, 0,                   /*0xFEAE-0xFEB1*/
+        1, 0, 1, 0,                   /*0xFEB2-0xFEB5*/
+        1, 0, 2, 1+2,                 /*0xFEB6-0xFEB9*/
+        1, 0, 2, 1+2,                 /*0xFEBA-0xFEBD*/
+        1, 0, 2, 1+2,                 /*0xFEBE-0xFEC1*/
+        1, 0, 2, 1+2,                 /*0xFEC2-0xFEC5*/
+        1, 0, 2, 1+2,                 /*0xFEC6-0xFEC9*/
+        1, 0, 2, 1+2,                 /*0xFECA-0xFECD*/
+        1, 0, 2, 1+2,                 /*0xFECE-0xFED1*/
+        1, 0, 2, 1+2,                 /*0xFED2-0xFED5*/
+        1, 0, 2, 1+2,                 /*0xFED6-0xFED9*/
+        1, 0, 2, 1+2,                 /*0xFEDA-0xFEDD*/
+        1, 0, 2, 1+2,                 /*0xFEDE-0xFEE1*/
+        1, 0 + 16, 2 + 16, 1 + 2 +16, /*0xFEE2-0xFEE5*/
+        1 + 16, 0, 2, 1+2,            /*0xFEE6-0xFEE9*/
+        1, 0, 2, 1+2,                 /*0xFEEA-0xFEED*/
+        1, 0, 2, 1+2,                 /*0xFEEE-0xFEF1*/
+        1, 0, 1, 0,                   /*0xFEF2-0xFEF5*/
+        1, 0, 2, 1+2,                 /*0xFEF6-0xFEF9*/
+        1, 0, 1, 0,                   /*0xFEFA-0xFEFD*/
+        1, 0, 1, 0,
+        1
+    };
+
+    private static int[] convertFEto06 = {
+        /***********0******1******2******3******4******5******6******7******8******9******A******B******C******D******E******F***/
+        /*FE7*/   0x64B, 0x64B, 0x64C, 0x64C, 0x64D, 0x64D, 0x64E, 0x64E, 0x64F, 0x64F, 0x650, 0x650, 0x651, 0x651, 0x652, 0x652,
+        /*FE8*/   0x621, 0x622, 0x622, 0x623, 0x623, 0x624, 0x624, 0x625, 0x625, 0x626, 0x626, 0x626, 0x626, 0x627, 0x627, 0x628,
+        /*FE9*/   0x628, 0x628, 0x628, 0x629, 0x629, 0x62A, 0x62A, 0x62A, 0x62A, 0x62B, 0x62B, 0x62B, 0x62B, 0x62C, 0x62C, 0x62C,
+        /*FEA*/   0x62C, 0x62D, 0x62D, 0x62D, 0x62D, 0x62E, 0x62E, 0x62E, 0x62E, 0x62F, 0x62F, 0x630, 0x630, 0x631, 0x631, 0x632,
+        /*FEB*/   0x632, 0x633, 0x633, 0x633, 0x633, 0x634, 0x634, 0x634, 0x634, 0x635, 0x635, 0x635, 0x635, 0x636, 0x636, 0x636,
+        /*FEC*/   0x636, 0x637, 0x637, 0x637, 0x637, 0x638, 0x638, 0x638, 0x638, 0x639, 0x639, 0x639, 0x639, 0x63A, 0x63A, 0x63A,
+        /*FED*/   0x63A, 0x641, 0x641, 0x641, 0x641, 0x642, 0x642, 0x642, 0x642, 0x643, 0x643, 0x643, 0x643, 0x644, 0x644, 0x644,
+        /*FEE*/   0x644, 0x645, 0x645, 0x645, 0x645, 0x646, 0x646, 0x646, 0x646, 0x647, 0x647, 0x647, 0x647, 0x648, 0x648, 0x649,
+        /*FEF*/   0x649, 0x64A, 0x64A, 0x64A, 0x64A, 0x65C, 0x65C, 0x65D, 0x65D, 0x65E, 0x65E, 0x65F, 0x65F
+    };
+
+    private static final int shapeTable[][][] = {
+        { {0,0,0,0}, {0,0,0,0}, {0,1,0,3}, {0,1,0,1} },
+        { {0,0,2,2}, {0,0,1,2}, {0,1,1,2}, {0,1,1,3} },
+        { {0,0,0,0}, {0,0,0,0}, {0,1,0,3}, {0,1,0,3} },
+        { {0,0,1,2}, {0,0,1,2}, {0,1,1,2}, {0,1,1,3} }
+    };
+
+    /*
+     * This function shapes European digits to Arabic-Indic digits
+     * in-place, writing over the input characters.  Data is in visual
+     * order.
+     */
+    private void shapeToArabicDigitsWithContext(char[] dest,
+                                                int start,
+                                                int length,
+                                                char digitBase,
+                                                boolean lastStrongWasAL) {
+        UBiDiProps bdp;
+        try {
+            bdp=UBiDiProps.getSingleton();
+        } catch (IOException e) {
+            throw new MissingResourceException(e.getMessage(), "(BidiProps)", "");
+        }
+        digitBase -= '0'; // move common adjustment out of loop
+
+        for(int i = start + length; --i >= start;) {
+            char ch = dest[i];
+            switch (bdp.getClass(ch)) {
+            case UCharacterDirection.LEFT_TO_RIGHT:
+            case UCharacterDirection.RIGHT_TO_LEFT:
+                lastStrongWasAL = false;
+                break;
+            case UCharacterDirection.RIGHT_TO_LEFT_ARABIC:
+                lastStrongWasAL = true;
+                break;
+            case UCharacterDirection.EUROPEAN_NUMBER:
+                if (lastStrongWasAL && ch <= '\u0039') {
+                    dest[i] = (char)(ch + digitBase);
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+    /*
+     * Name    : invertBuffer
+     * Function: This function inverts the buffer, it's used
+     *           in case the user specifies the buffer to be
+     *           TEXT_DIRECTION_LOGICAL
+     */
+    private static void invertBuffer(char[] buffer,
+                                     int start,
+                                     int length) {
+
+        for(int i = start, j = start + length - 1; i < j; i++, --j) {
+            char temp = buffer[i];
+            buffer[i] = buffer[j];
+            buffer[j] = temp;
+        }
+    }
+
+    /*
+     * Name    : changeLamAlef
+     * Function: Converts the Alef characters into an equivalent
+     *           LamAlef location in the 0x06xx Range, this is an
+     *           intermediate stage in the operation of the program
+     *           later it'll be converted into the 0xFExx LamAlefs 
+     *           in the shaping function.
+     */
+    private static char changeLamAlef(char ch) {
+        switch(ch) {
+        case '\u0622': return '\u065C';
+        case '\u0623': return '\u065D';
+        case '\u0625': return '\u065E';
+        case '\u0627': return '\u065F';
+        default:  return '\u0000'; // not a lamalef
+        }
+    }
+
+    /*
+     * Name    : specialChar
+     * Function: Special Arabic characters need special handling in the shapeUnicode
+     *           function, this function returns 1 or 2 for these special characters
+     */
+    private static int specialChar(char ch) {
+        if ((ch > '\u0621' && ch < '\u0626') || 
+            (ch == '\u0627') ||
+            (ch > '\u062E' && ch < '\u0633') ||
+            (ch > '\u0647' && ch < '\u064A') ||
+            (ch == '\u0629')) {
+            return 1;
+        } else if (ch >= '\u064B' && ch<= '\u0652') {
+            return 2;
+        } else if (ch >= 0x0653 && ch <= 0x0655 || 
+                   ch == 0x0670 ||
+                   ch >= 0xFE70 && ch <= 0xFE7F) {
+            return 3;
+        } else {
+            return 0;
+        }
+    }
+    
+    /*
+     * Name    : getLink
+     * Function: Resolves the link between the characters as 
+     *           Arabic characters have four forms :
+     *           Isolated, Initial, Middle and Final Form
+     */
+    private static int getLink(char ch) {
+        if (ch >= '\u0622' && ch <= '\u06D3') {
+            return araLink[ch - '\u0622'];
+        } else if (ch == '\u200D') {
+            return 3;
+        } else if (ch >= '\u206D' && ch <= '\u206F') {
+            return 4;
+        } else if (ch >= '\uFE70' && ch <= '\uFEFC') {
+            return presLink[ch - '\uFE70'];
+        } else {
+            return 0;
+        }
+    }
+
+    /*
+     * Name    : countSpaces
+     * Function: Counts the number of spaces
+     *           at each end of the logical buffer
+     */
+    private static int countSpacesLeft(char[] dest, 
+                                       int start,
+                                       int count) {
+        for (int i = start, e = start + count; i < e; ++i) {
+            if (dest[i] != '\u0020') {
+                return i - start;
+            }
+        }
+        return count;
+    }
+
+    private static int countSpacesRight(char[] dest,
+                                        int start,
+                                        int count) {
+
+        for (int i = start + count; --i >= start;) {
+            if (dest[i] != '\u0020') {
+                return start + count - 1 - i;
+            }
+        }
+        return count;
+    }
+
+    /*
+     * Name    : isTashkeelChar
+     * Function: Returns 1 for Tashkeel characters else return 0
+     */
+    private static boolean isTashkeelChar(char ch) {
+        return ch >='\u064B' && ch <= '\u0652';
+    }
+
+    /*
+     * Name    : isAlefChar
+     * Function: Returns 1 for Alef characters else return 0
+     */
+    private static boolean isAlefChar(char ch) {
+        return ch == '\u0622' || ch == '\u0623' || ch == '\u0625' || ch == '\u0627';
+    }
+
+    /*
+     * Name    : isLamAlefChar
+     * Function: Returns 1 for LamAlef characters else return 0
+     */
+    private static boolean isLamAlefChar(char ch) {
+        return ch >= '\uFEF5' && ch <= '\uFEFC';
+    }
+
+    private static boolean isNormalizedLamAlefChar(char ch) {
+        return ch >= '\u065C' && ch <= '\u065F';
+    }
+
+    /*
+     * Name    : calculateSize
+     * Function: This function calculates the destSize to be used in preflighting
+     *           when the destSize is equal to 0
+     */
+    private int calculateSize(char[] source,
+                              int sourceStart,
+                              int sourceLength) {
+    
+        int destSize = sourceLength;
+
+        switch (options & LETTERS_MASK) {
+        case LETTERS_SHAPE:
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED:
+            if (isLogical) {
+                for (int i = sourceStart, e = sourceStart + sourceLength - 1; i < e; ++i) {
+                    if (source[i] == '\u0644' && isAlefChar(source[i+1])) {
+                        --destSize;
+                    }
+                }
+            } else { // visual
+                for(int i = sourceStart + 1, e = sourceStart + sourceLength; i < e; ++i) {
+                    if (source[i] == '\u0644' && isAlefChar(source[i-1])) {
+                        --destSize;
+                    }
+                }
+            }
+            break;
+
+        case LETTERS_UNSHAPE:
+            for(int i = sourceStart, e = sourceStart + sourceLength; i < e; ++i) {
+                if (isLamAlefChar(source[i])) {
+                    destSize++;
+                }
+            }
+            break;
+
+        default:
+            break;
+        }
+
+        return destSize;
+    }
+
+    /*
+     * Name    : removeLamAlefSpaces
+     * Function: The shapeUnicode function converts Lam + Alef into LamAlef + space,
+     *           this function removes the spaces behind the LamAlefs according to
+     *           the options the user specifies, the spaces are removed to the end
+     *           of the buffer, or shrink the buffer and remove spaces for good
+     *           or leave the buffer as it is LamAlef + space.
+     */
+    private int removeLamAlefSpaces(char[] dest, 
+                                    int start,
+                                    int length) {
+    
+        int lenOptions = options & LENGTH_MASK;
+        if (!isLogical) {
+            switch (lenOptions) {
+            case LENGTH_FIXED_SPACES_AT_BEGINNING: lenOptions = LENGTH_FIXED_SPACES_AT_END; break;
+            case LENGTH_FIXED_SPACES_AT_END: lenOptions = LENGTH_FIXED_SPACES_AT_BEGINNING; break;
+            default: break;
+            }
+        }
+
+        if (lenOptions == LENGTH_FIXED_SPACES_NEAR) {
+            for (int i = start, e = i + length; i < e; ++i) {
+                if (dest[i] == '\uffff') {
+                    dest[i] = '\u0020';
+                }
+            }
+        } else {
+            final int e = start + length;
+            int w = e;
+            int r = e;
+            while (--r >= start) {
+                char ch = dest[r];
+                if (ch != '\uffff') {
+                    --w;
+                    if (w != r) {
+                        dest[w] = ch;
+                    }
+                }
+            }
+
+            if (lenOptions == LENGTH_FIXED_SPACES_AT_END) {
+                while (w > start) {
+                    dest[--w] = '\u0020';
+                }
+            } else {
+                if (w > start) {
+                    // shift, assume small buffer size so don't use arraycopy
+                    r = w;
+                    w = start;
+                    while (r < e) {
+                        dest[w++] = dest[r++];
+                    }
+                } else {
+                    w = e;
+                }
+                if (lenOptions == LENGTH_GROW_SHRINK) {
+                    length = w - start;
+                } else { // spaces at beginning
+                    while (w < e) {
+                        dest[w++] = '\u0020';
+                    }
+                }
+            }
+        }
+        return length;
+    }
+
+    /*
+     * Name    : expandLamAlef
+     * Function: LamAlef needs special handling as the LamAlef is
+     *           one character while expanding it will give two
+     *           characters Lam + Alef, so we need to expand the LamAlef
+     *           in near or far spaces according to the options the user
+     *           specifies or increase the buffer size.
+     *           Dest has enough room for the expansion if we are growing.
+     *           lamalef are normalized to the 'special characters'
+     */
+    private int expandLamAlef(char[] dest,
+                              int start,
+                              int length,
+                              int lacount) throws ArabicShapingException {
+
+        int lenOptions = options & LENGTH_MASK;
+        if (!isLogical) {
+            switch (lenOptions) {
+            case LENGTH_FIXED_SPACES_AT_BEGINNING: lenOptions = LENGTH_FIXED_SPACES_AT_END; break;
+            case LENGTH_FIXED_SPACES_AT_END: lenOptions = LENGTH_FIXED_SPACES_AT_BEGINNING; break;
+            default: break;
+            }
+        }
+
+        switch (lenOptions) {
+        case LENGTH_GROW_SHRINK: 
+            {
+                for (int r = start + length, w = r + lacount; --r >= start;) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[--w] = '\u0644';
+                        dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
+                    } else {
+                        dest[--w] = ch;
+                    }
+                }
+            }
+            length += lacount;
+            break;
+
+        case LENGTH_FIXED_SPACES_NEAR: 
+            {
+                if (isNormalizedLamAlefChar(dest[start])) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int i = start + length; --i > start;) { // don't check start, already checked
+                    char ch = dest[i];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        if (dest[i-1] == '\u0020') {
+                            dest[i] = '\u0644';
+                            dest[--i] = convertNormalizedLamAlef[ch - '\u065C'];
+                        } else {
+                            throw new ArabicShapingException("no space for lamalef");
+                        }
+                    }
+                }
+            }
+            break;
+
+        case LENGTH_FIXED_SPACES_AT_END: 
+            {
+                if (lacount > countSpacesLeft(dest, start, length)) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int r = start + lacount, w = start, e = start + length; r < e; ++r) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[w++] = convertNormalizedLamAlef[ch - '\u065C'];
+                        dest[w++] = '\u0644';
+                    } else {
+                        dest[w++] = ch;
+                    }
+                }
+            }
+            break;
+                
+        case LENGTH_FIXED_SPACES_AT_BEGINNING: 
+            {
+                if (lacount > countSpacesRight(dest, start, length)) {
+                    throw new ArabicShapingException("no space for lamalef");
+                }
+                for (int r = start + length - lacount, w = start + length; --r >= start;) {
+                    char ch = dest[r];
+                    if (isNormalizedLamAlefChar(ch)) {
+                        dest[--w] = '\u0644';
+                        dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
+                    } else {
+                        dest[--w] = ch;
+                    }
+                }
+            }
+            break;
+        }
+
+        return length;
+    }
+
+    /* Convert the input buffer from FExx Range into 06xx Range
+     * to put all characters into the 06xx range
+     * even the lamalef is converted to the special region in
+     * the 06xx range.  Return the number of lamalef chars found.
+     */
+    private int normalize(char[] dest, int start, int length) {
+        int lacount = 0;
+        for (int i = start, e = i + length; i < e; ++i) {
+            char ch = dest[i];
+            if (ch >= '\uFE70' && ch <= '\uFEFC') {
+                if (isLamAlefChar(ch)) {
+                    ++lacount;
+                }
+                dest[i] = (char)convertFEto06[ch - '\uFE70'];
+            }
+        }
+        return lacount;
+    }
+
+    /*
+     * Name    : shapeUnicode
+     * Function: Converts an Arabic Unicode buffer in 06xx Range into a shaped
+     *           arabic Unicode buffer in FExx Range
+     */
+    private int shapeUnicode(char[] dest, 
+                             int start,
+                             int length,
+                             int destSize,
+                             int tashkeelFlag) {
+
+
+        normalize(dest, start, length);
+
+        // resolve the link between the characters.
+        // Arabic characters have four forms: Isolated, Initial, Medial and Final.
+        // Tashkeel characters have two, isolated or medial, and sometimes only isolated.
+        // tashkeelFlag == 0: shape normally, 1: shape isolated, 2: don't shape
+
+        boolean lamalef_found = false;
+        int i = start + length - 1;
+        int currLink = getLink(dest[i]);
+        int nextLink = 0;
+        int prevLink = 0;
+        int lastLink = 0;
+        //int prevPos = i;
+        int lastPos = i;
+        int nx = -2;
+        int nw = 0;
+
+        while (i >= 0) {
+            // If high byte of currLink > 0 then there might be more than one shape
+            if ((currLink & '\uFF00') > 0 || isTashkeelChar(dest[i])) {
+                nw = i - 1;
+                nx = -2;
+                while (nx < 0) { // we need to know about next char
+                    if (nw == -1) {
+                        nextLink = 0;
+                        nx = Integer.MAX_VALUE;
+                    } else {
+                        nextLink = getLink(dest[nw]);
+                        if ((nextLink & IRRELEVANT) == 0) {
+                            nx = nw;
+                        } else {
+                            --nw;
+                        }
+                    }
+                }
+
+                if (((currLink & ALEFTYPE) > 0) && ((lastLink & LAMTYPE) > 0)) {
+                    lamalef_found = true; 
+                    char wLamalef = changeLamAlef(dest[i]); // get from 0x065C-0x065f
+                    if (wLamalef != '\u0000') {
+                        // replace alef by marker, it will be removed later
+                        dest[i] = '\uffff';
+                        dest[lastPos] = wLamalef;
+                        i = lastPos;
+                    }
+
+                    lastLink = prevLink;
+                    currLink = getLink(wLamalef); // requires '\u0000', unfortunately
+                }
+
+                // get the proper shape according to link ability of neighbors
+                // and of character; depends on the order of the shapes
+                // (isolated, initial, middle, final) in the compatibility area
+
+                int flag = specialChar(dest[i]);
+
+                int shape = shapeTable[nextLink & LINK_MASK]
+                    [lastLink & LINK_MASK]
+                    [currLink & LINK_MASK];
+
+                if (flag == 1) {
+                    shape &= 0x1;
+                } else if (flag == 2) {
+                    if (tashkeelFlag == 0 &&
+                        ((lastLink & LINKL) != 0) && 
+                        ((nextLink & LINKR) != 0) && 
+                        dest[i] != '\u064C' && 
+                        dest[i] != '\u064D' &&
+                        !((nextLink & ALEFTYPE) == ALEFTYPE && 
+                          (lastLink & LAMTYPE) == LAMTYPE)) {
+        
+                        shape = 1;
+                    } else {
+                        shape = 0;
+                    }
+                }
+
+                if (flag == 2) {
+                    if (tashkeelFlag < 2) {
+                        dest[i] = (char)('\uFE70' + irrelevantPos[dest[i] - '\u064B'] + shape);
+                    } // else leave tashkeel alone                    
+                } else {
+                    dest[i] = (char)('\uFE70' + (currLink >> 8) + shape);
+                }
+            }
+
+            // move one notch forward
+            if ((currLink & IRRELEVANT) == 0) {
+                prevLink = lastLink;
+                lastLink = currLink;
+                //prevPos = lastPos;
+                lastPos = i;
+            }
+
+            --i;
+            if (i == nx) {
+                currLink = nextLink;
+                nx = -2;
+            } else if (i != -1) {
+                currLink = getLink(dest[i]);
+            }
+        }
+
+        // If we found a lam/alef pair in the buffer 
+        // call removeLamAlefSpaces to remove the spaces that were added
+
+        if (lamalef_found) {
+            destSize = removeLamAlefSpaces(dest, start, length);
+        } else {
+            destSize = length;
+        }
+        
+        return destSize;
+    }
+
+    /*
+     * Name    : deShapeUnicode
+     * Function: Converts an Arabic Unicode buffer in FExx Range into unshaped
+     *           arabic Unicode buffer in 06xx Range
+     */
+    private int deShapeUnicode(char[] dest, 
+                               int start,
+                               int length,
+                               int destSize) throws ArabicShapingException {
+
+        int lamalef_count = normalize(dest, start, length);
+
+        // If there was a lamalef in the buffer call expandLamAlef
+        if (lamalef_count != 0) {
+            // need to adjust dest to fit expanded buffer... !!!
+            destSize = expandLamAlef(dest, start, length, lamalef_count);
+        } else {
+            destSize = length;
+        }
+
+        return destSize;
+    }
+
+    private int internalShape(char[] source, 
+                              int sourceStart,
+                              int sourceLength,
+                              char[] dest,
+                              int destStart,
+                              int destSize) throws ArabicShapingException {
+
+        if (sourceLength == 0) {
+            return 0;
+        }
+
+        if (destSize == 0) {
+            if (((options & LETTERS_MASK) != LETTERS_NOOP) &&
+                ((options & LENGTH_MASK) == LENGTH_GROW_SHRINK)) {
+    
+                return calculateSize(source, sourceStart, sourceLength);
+            } else {
+                return sourceLength; // by definition
+            }
+        }
+
+        // always use temp buffer
+        char[] temp = new char[sourceLength * 2]; // all lamalefs requiring expansion
+        System.arraycopy(source, sourceStart, temp, 0, sourceLength);
+
+        if (isLogical) {
+            invertBuffer(temp, 0, sourceLength);
+        }
+
+        int outputSize = sourceLength;
+
+        switch (options & LETTERS_MASK) {
+        case LETTERS_SHAPE_TASHKEEL_ISOLATED:
+            outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 1);
+            break;
+
+        case LETTERS_SHAPE:
+            outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 0);
+            break;
+
+        case LETTERS_UNSHAPE:
+            outputSize = deShapeUnicode(temp, 0, sourceLength, destSize);
+            break; 
+
+        default:
+            break;
+        }
+                
+        if (outputSize > destSize) {
+            throw new ArabicShapingException("not enough room for result data");
+        }
+
+        if ((options & DIGITS_MASK) != DIGITS_NOOP) {
+            char digitBase = '\u0030'; // European digits
+            switch (options & DIGIT_TYPE_MASK) {
+            case DIGIT_TYPE_AN:
+                digitBase = '\u0660';  // Arabic-Indic digits
+                break;
+
+            case DIGIT_TYPE_AN_EXTENDED:
+                digitBase = '\u06f0';  // Eastern Arabic-Indic digits (Persian and Urdu)
+                break;
+
+            default:
+                break;
+            }
+
+            switch (options & DIGITS_MASK) {
+            case DIGITS_EN2AN:
+                {
+                    int digitDelta = digitBase - '\u0030';
+                    for (int i = 0; i < outputSize; ++i) {
+                        char ch = temp[i];
+                        if (ch <= '\u0039' && ch >= '\u0030') {
+                            temp[i] += digitDelta;
+                        }
+                    }
+                }
+                break;
+
+            case DIGITS_AN2EN:
+                {
+                    char digitTop = (char)(digitBase + 9);
+                    int digitDelta = '\u0030' - digitBase;
+                    for (int i = 0; i < outputSize; ++i) {
+                        char ch = temp[i];
+                        if (ch <= digitTop && ch >= digitBase) {
+                            temp[i] += digitDelta;
+                        }
+                    }
+                }
+                break;
+
+            case DIGITS_EN2AN_INIT_LR:
+                shapeToArabicDigitsWithContext(temp, 0, outputSize, digitBase, false);
+                break;
+
+            case DIGITS_EN2AN_INIT_AL:
+                shapeToArabicDigitsWithContext(temp, 0, outputSize, digitBase, true);
+                break;
+
+            default:
+                break;
+            }
+        }
+
+        if (isLogical) {
+            invertBuffer(temp, 0, outputSize);
+        }
+      
+        System.arraycopy(temp, 0, dest, destStart, outputSize);
+      
+        return outputSize;
+    }
+}
diff --git a/src/com/ibm/icu/text/ArabicShapingException.java b/src/com/ibm/icu/text/ArabicShapingException.java
new file mode 100644
index 0000000..76720e1
--- /dev/null
+++ b/src/com/ibm/icu/text/ArabicShapingException.java
@@ -0,0 +1,26 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2001-2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * Thrown by ArabicShaping when there is a shaping error.
+ * @stable ICU 2.0
+ */
+public final class ArabicShapingException extends Exception {
+    // generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 5261531805497260490L;
+    
+    /**
+     * Construct the exception with the given message
+     * @param message the error message for this exception
+     * @stable ICU 3.8
+     */
+    public ArabicShapingException(String message) {
+        super(message);
+    }
+}
diff --git a/src/com/ibm/icu/text/Bidi.java b/src/com/ibm/icu/text/Bidi.java
new file mode 100644
index 0000000..eabf2fa
--- /dev/null
+++ b/src/com/ibm/icu/text/Bidi.java
@@ -0,0 +1,4953 @@
+//##header J2SE15
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+/* FOOD FOR THOUGHT: currently the reordering modes are a mixture of
+ * algorithm for direct BiDi, algorithm for inverse Bidi and the bizarre
+ * concept of RUNS_ONLY which is a double operation.
+ * It could be advantageous to divide this into 3 concepts:
+ * a) Operation: direct / inverse / RUNS_ONLY
+ * b) Direct algorithm: default / NUMBERS_SPECIAL / GROUP_NUMBERS_WITH_L
+ * c) Inverse algorithm: default / INVERSE_LIKE_DIRECT / NUMBERS_SPECIAL
+ * This would allow combinations not possible today like RUNS_ONLY with
+ * NUMBERS_SPECIAL.
+ * Also allow to set INSERT_MARKS for the direct step of RUNS_ONLY and
+ * REMOVE_CONTROLS for the inverse step.
+ * Not all combinations would be supported, and probably not all do make sense.
+ * This would need to document which ones are supported and what are the
+ * fallbacks for unsupported combinations.
+ */
+
+//TODO: make sample program do something simple but real and complete
+
+package com.ibm.icu.text;
+
+//#if defined(FOUNDATION10)
+//#else
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+//#endif
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.awt.font.NumericShaper;
+//#endif
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.util.MissingResourceException;
+import java.util.Arrays;
+
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterDirection;
+
+/**
+ *
+ * <h2>Bidi algorithm for ICU</h2>
+ *
+ * This is an implementation of the Unicode Bidirectional algorithm. The
+ * algorithm is defined in the <a
+ * href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9</a>,
+ * version 13, also described in The Unicode Standard, Version 4.0 .
+ * <p>
+ *
+ * Note: Libraries that perform a bidirectional algorithm and reorder strings
+ * accordingly are sometimes called "Storage Layout Engines". ICU's Bidi and
+ * shaping (ArabicShaping) classes can be used at the core of such "Storage
+ * Layout Engines".
+ *
+ * <h3>General remarks about the API:</h3>
+ *
+ * The &quot;limit&quot; of a sequence of characters is the position just after
+ * their last character, i.e., one more than that position.
+ * <p>
+ *
+ * Some of the API methods provide access to &quot;runs&quot;. Such a
+ * &quot;run&quot; is defined as a sequence of characters that are at the same
+ * embedding level after performing the Bidi algorithm.
+ * <p>
+ *
+ * <h3>Basic concept: paragraph</h3>
+ * A piece of text can be divided into several paragraphs by characters
+ * with the Bidi class <code>Block Separator</code>. For handling of
+ * paragraphs, see:
+ * <ul>
+ * <li>{@link #countParagraphs}
+ * <li>{@link #getParaLevel}
+ * <li>{@link #getParagraph}
+ * <li>{@link #getParagraphByIndex}
+ * </ul>
+ *
+ * <h3>Basic concept: text direction</h3>
+ * The direction of a piece of text may be:
+ * <ul>
+ * <li>{@link #LTR}
+ * <li>{@link #RTL}
+ * <li>{@link #MIXED}
+ * </ul>
+ *
+ * <h3>Basic concept: levels</h3>
+ *
+ * Levels in this API represent embedding levels according to the Unicode
+ * Bidirectional Algorithm.
+ * Their low-order bit (even/odd value) indicates the visual direction.<p>
+ *
+ * Levels can be abstract values when used for the
+ * <code>paraLevel</code> and <code>embeddingLevels</code>
+ * arguments of <code>setPara()</code>; there:
+ * <ul>
+ * <li>the high-order bit of an <code>embeddingLevels[]</code>
+ * value indicates whether the using application is
+ * specifying the level of a character to <i>override</i> whatever the
+ * Bidi implementation would resolve it to.</li>
+ * <li><code>paraLevel</code> can be set to the
+ * pseudo-level values <code>LEVEL_DEFAULT_LTR</code>
+ * and <code>LEVEL_DEFAULT_RTL</code>.</li>
+ * </ul>
+ *
+ * <p>The related constants are not real, valid level values.
+ * <code>DEFAULT_XXX</code> can be used to specify
+ * a default for the paragraph level for
+ * when the <code>setPara()</code> method
+ * shall determine it but there is no
+ * strongly typed character in the input.<p>
+ *
+ * Note that the value for <code>LEVEL_DEFAULT_LTR</code> is even
+ * and the one for <code>LEVEL_DEFAULT_RTL</code> is odd,
+ * just like with normal LTR and RTL level values -
+ * these special values are designed that way. Also, the implementation
+ * assumes that MAX_EXPLICIT_LEVEL is odd.
+ *
+ * <ul><b>See Also:</b>
+ * <li>{@link #LEVEL_DEFAULT_LTR}
+ * <li>{@link #LEVEL_DEFAULT_RTL}
+ * <li>{@link #LEVEL_OVERRIDE}
+ * <li>{@link #MAX_EXPLICIT_LEVEL}
+ * <li>{@link #setPara}
+ * </ul>
+ *
+ * <h3>Basic concept: Reordering Mode</h3>
+ * Reordering mode values indicate which variant of the Bidi algorithm to
+ * use.
+ *
+ * <ul><b>See Also:</b>
+ * <li>{@link #setReorderingMode}
+ * <li>{@link #REORDER_DEFAULT}
+ * <li>{@link #REORDER_NUMBERS_SPECIAL}
+ * <li>{@link #REORDER_GROUP_NUMBERS_WITH_R}
+ * <li>{@link #REORDER_RUNS_ONLY}
+ * <li>{@link #REORDER_INVERSE_NUMBERS_AS_L}
+ * <li>{@link #REORDER_INVERSE_LIKE_DIRECT}
+ * <li>{@link #REORDER_INVERSE_FOR_NUMBERS_SPECIAL}
+ * </ul>
+ *
+ * <h3>Basic concept: Reordering Options</h3>
+ * Reordering options can be applied during Bidi text transformations.
+ * <ul><b>See Also:</b>
+ * <li>{@link #setReorderingOptions}
+ * <li>{@link #OPTION_DEFAULT}
+ * <li>{@link #OPTION_INSERT_MARKS}
+ * <li>{@link #OPTION_REMOVE_CONTROLS}
+ * <li>{@link #OPTION_STREAMING}
+ * </ul>
+ *
+ *
+ * @author Simon Montagu, Matitiahu Allouche (ported from C code written by Markus W. Scherer)
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ *
+ *
+ * <h4> Sample code for the ICU Bidi API </h4>
+ *
+ * <h5>Rendering a paragraph with the ICU Bidi API</h5>
+ *
+ * This is (hypothetical) sample code that illustrates how the ICU Bidi API
+ * could be used to render a paragraph of text. Rendering code depends highly on
+ * the graphics system, therefore this sample code must make a lot of
+ * assumptions, which may or may not match any existing graphics system's
+ * properties.
+ *
+ * <p>
+ * The basic assumptions are:
+ * </p>
+ * <ul>
+ * <li>Rendering is done from left to right on a horizontal line.</li>
+ * <li>A run of single-style, unidirectional text can be rendered at once.
+ * </li>
+ * <li>Such a run of text is passed to the graphics system with characters
+ * (code units) in logical order.</li>
+ * <li>The line-breaking algorithm is very complicated and Locale-dependent -
+ * and therefore its implementation omitted from this sample code.</li>
+ * </ul>
+ *
+ * <pre>
+ *
+ *  package com.ibm.icu.dev.test.bidi;
+ *
+ *  import com.ibm.icu.text.Bidi;
+ *  import com.ibm.icu.text.BidiRun;
+ *
+ *  public class Sample {
+ *
+ *      static final int styleNormal = 0;
+ *      static final int styleSelected = 1;
+ *      static final int styleBold = 2;
+ *      static final int styleItalics = 4;
+ *      static final int styleSuper=8;
+ *      static final int styleSub = 16;
+ *
+ *      static class StyleRun {
+ *          int limit;
+ *          int style;
+ *
+ *          public StyleRun(int limit, int style) {
+ *              this.limit = limit;
+ *              this.style = style;
+ *          }
+ *      }
+ *
+ *      static class Bounds {
+ *          int start;
+ *          int limit;
+ *
+ *          public Bounds(int start, int limit) {
+ *              this.start = start;
+ *              this.limit = limit;
+ *          }
+ *      }
+ *
+ *      static int getTextWidth(String text, int start, int limit,
+ *                              StyleRun[] styleRuns, int styleRunCount) {
+ *          // simplistic way to compute the width
+ *          return limit - start;
+ *      }
+ *
+ *      // set limit and StyleRun limit for a line
+ *      // from text[start] and from styleRuns[styleRunStart]
+ *      // using Bidi.getLogicalRun(...)
+ *      // returns line width
+ *      static int getLineBreak(String text, Bounds line, Bidi para,
+ *                              StyleRun styleRuns[], Bounds styleRun) {
+ *          // dummy return
+ *          return 0;
+ *      }
+ *
+ *      // render runs on a line sequentially, always from left to right
+ *
+ *      // prepare rendering a new line
+ *      static void startLine(byte textDirection, int lineWidth) {
+ *          System.out.println();
+ *      }
+ *
+ *      // render a run of text and advance to the right by the run width
+ *      // the text[start..limit-1] is always in logical order
+ *      static void renderRun(String text, int start, int limit,
+ *                            byte textDirection, int style) {
+ *      }
+ *
+ *      // We could compute a cross-product
+ *      // from the style runs with the directional runs
+ *      // and then reorder it.
+ *      // Instead, here we iterate over each run type
+ *      // and render the intersections -
+ *      // with shortcuts in simple (and common) cases.
+ *      // renderParagraph() is the main function.
+ *
+ *      // render a directional run with
+ *      // (possibly) multiple style runs intersecting with it
+ *      static void renderDirectionalRun(String text, int start, int limit,
+ *                                       byte direction, StyleRun styleRuns[],
+ *                                       int styleRunCount) {
+ *          int i;
+ *
+ *          // iterate over style runs
+ *          if (direction == Bidi.LTR) {
+ *              int styleLimit;
+ *              for (i = 0; i < styleRunCount; ++i) {
+ *                  styleLimit = styleRuns[i].limit;
+ *                  if (start < styleLimit) {
+ *                      if (styleLimit > limit) {
+ *                          styleLimit = limit;
+ *                      }
+ *                      renderRun(text, start, styleLimit,
+ *                                direction, styleRuns[i].style);
+ *                      if (styleLimit == limit) {
+ *                          break;
+ *                      }
+ *                      start = styleLimit;
+ *                  }
+ *              }
+ *          } else {
+ *              int styleStart;
+ *
+ *              for (i = styleRunCount-1; i >= 0; --i) {
+ *                  if (i > 0) {
+ *                      styleStart = styleRuns[i-1].limit;
+ *                  } else {
+ *                      styleStart = 0;
+ *                  }
+ *                  if (limit >= styleStart) {
+ *                      if (styleStart < start) {
+ *                          styleStart = start;
+ *                      }
+ *                      renderRun(text, styleStart, limit, direction,
+ *                                styleRuns[i].style);
+ *                      if (styleStart == start) {
+ *                          break;
+ *                      }
+ *                      limit = styleStart;
+ *                  }
+ *              }
+ *          }
+ *      }
+ *
+ *      // the line object represents text[start..limit-1]
+ *      static void renderLine(Bidi line, String text, int start, int limit,
+ *                             StyleRun styleRuns[], int styleRunCount) {
+ *          byte direction = line.getDirection();
+ *          if (direction != Bidi.MIXED) {
+ *              // unidirectional
+ *              if (styleRunCount <= 1) {
+ *                  renderRun(text, start, limit, direction, styleRuns[0].style);
+ *              } else {
+ *                  renderDirectionalRun(text, start, limit, direction,
+ *                                       styleRuns, styleRunCount);
+ *              }
+ *          } else {
+ *              // mixed-directional
+ *              int count, i;
+ *              BidiRun run;
+ *
+ *              try {
+ *                  count = line.countRuns();
+ *              } catch (IllegalStateException e) {
+ *                  e.printStackTrace();
+ *                  return;
+ *              }
+ *              if (styleRunCount <= 1) {
+ *                  int style = styleRuns[0].style;
+ *
+ *                  // iterate over directional runs
+ *                  for (i = 0; i < count; ++i) {
+ *                      run = line.getVisualRun(i);
+ *                      renderRun(text, run.getStart(), run.getLimit(),
+ *                                run.getDirection(), style);
+ *                  }
+ *              } else {
+ *                  // iterate over both directional and style runs
+ *                  for (i = 0; i < count; ++i) {
+ *                      run = line.getVisualRun(i);
+ *                      renderDirectionalRun(text, run.getStart(),
+ *                                           run.getLimit(), run.getDirection(),
+ *                                           styleRuns, styleRunCount);
+ *                  }
+ *              }
+ *          }
+ *      }
+ *
+ *      static void renderParagraph(String text, byte textDirection,
+ *                                  StyleRun styleRuns[], int styleRunCount,
+ *                                  int lineWidth) {
+ *          int length = text.length();
+ *          Bidi para = new Bidi();
+ *          try {
+ *              para.setPara(text,
+ *                           textDirection != 0 ? Bidi.LEVEL_DEFAULT_RTL
+ *                                              : Bidi.LEVEL_DEFAULT_LTR,
+ *                           null);
+ *          } catch (Exception e) {
+ *              e.printStackTrace();
+ *              return;
+ *          }
+ *          byte paraLevel = (byte)(1 & para.getParaLevel());
+ *          StyleRun styleRun = new StyleRun(length, styleNormal);
+ *
+ *          if (styleRuns == null || styleRunCount <= 0) {
+ *              styleRuns = new StyleRun[1];
+ *              styleRunCount = 1;
+ *              styleRuns[0] = styleRun;
+ *          }
+ *          // assume styleRuns[styleRunCount-1].limit>=length
+ *
+ *          int width = getTextWidth(text, 0, length, styleRuns, styleRunCount);
+ *          if (width <= lineWidth) {
+ *              // everything fits onto one line
+ *
+ *              // prepare rendering a new line from either left or right
+ *              startLine(paraLevel, width);
+ *
+ *              renderLine(para, text, 0, length, styleRuns, styleRunCount);
+ *          } else {
+ *              // we need to render several lines
+ *              Bidi line = new Bidi(length, 0);
+ *              int start = 0, limit;
+ *              int styleRunStart = 0, styleRunLimit;
+ *
+ *              for (;;) {
+ *                  limit = length;
+ *                  styleRunLimit = styleRunCount;
+ *                  width = getLineBreak(text, new Bounds(start, limit),
+ *                                       para, styleRuns,
+ *                                       new Bounds(styleRunStart, styleRunLimit));
+ *                  try {
+ *                      line = para.setLine(start, limit);
+ *                  } catch (Exception e) {
+ *                      e.printStackTrace();
+ *                      return;
+ *                  }
+ *                  // prepare rendering a new line
+ *                  // from either left or right
+ *                  startLine(paraLevel, width);
+ *
+ *                  if (styleRunStart > 0) {
+ *                      int newRunCount = styleRuns.length - styleRunStart;
+ *                      StyleRun[] newRuns = new StyleRun[newRunCount];
+ *                      System.arraycopy(styleRuns, styleRunStart, newRuns, 0,
+ *                                       newRunCount);
+ *                      renderLine(line, text, start, limit, newRuns,
+ *                                 styleRunLimit - styleRunStart);
+ *                  } else {
+ *                      renderLine(line, text, start, limit, styleRuns,
+ *                                 styleRunLimit - styleRunStart);
+ *                  }
+ *                  if (limit == length) {
+ *                      break;
+ *                  }
+ *                  start = limit;
+ *                  styleRunStart = styleRunLimit - 1;
+ *                  if (start >= styleRuns[styleRunStart].limit) {
+ *                      ++styleRunStart;
+ *                  }
+ *              }
+ *          }
+ *      }
+ *
+ *      public static void main(String[] args)
+ *      {
+ *          renderParagraph("Some Latin text...", Bidi.LTR, null, 0, 80);
+ *          renderParagraph("Some Hebrew text...", Bidi.RTL, null, 0, 60);
+ *      }
+ *  }
+ *
+ * </pre>
+ */
+
+public class Bidi {
+
+    class Point {
+        int pos;    /* position in text */
+        int flag;   /* flag for LRM/RLM, before/after */
+    }
+
+    class InsertPoints {
+        int size;
+        int confirmed;
+        Point[] points = new Point[0];
+    }
+
+    /** Paragraph level setting<p>
+     *
+     * Constant indicating that the base direction depends on the first strong
+     * directional character in the text according to the Unicode Bidirectional
+     * Algorithm. If no strong directional character is present,
+     * then set the paragraph level to 0 (left-to-right).<p>
+     *
+     * If this value is used in conjunction with reordering modes
+     * <code>REORDER_INVERSE_LIKE_DIRECT</code> or
+     * <code>REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the text to reorder
+     * is assumed to be visual LTR, and the text after reordering is required
+     * to be the corresponding logical string with appropriate contextual
+     * direction. The direction of the result string will be RTL if either
+     * the righmost or leftmost strong character of the source text is RTL
+     * or Arabic Letter, the direction will be LTR otherwise.<p>
+     *
+     * If reordering option <code>OPTION_INSERT_MARKS</code> is set, an RLM may
+     * be added at the beginning of the result string to ensure round trip
+     * (that the result string, when reordered back to visual, will produce
+     * the original source text).
+     * @see #REORDER_INVERSE_LIKE_DIRECT
+     * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte LEVEL_DEFAULT_LTR = (byte)0x7e;
+
+    /** Paragraph level setting<p>
+     *
+     * Constant indicating that the base direction depends on the first strong
+     * directional character in the text according to the Unicode Bidirectional
+     * Algorithm. If no strong directional character is present,
+     * then set the paragraph level to 1 (right-to-left).<p>
+     *
+     * If this value is used in conjunction with reordering modes
+     * <code>REORDER_INVERSE_LIKE_DIRECT</code> or
+     * <code>REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the text to reorder
+     * is assumed to be visual LTR, and the text after reordering is required
+     * to be the corresponding logical string with appropriate contextual
+     * direction. The direction of the result string will be RTL if either
+     * the righmost or leftmost strong character of the source text is RTL
+     * or Arabic Letter, or if the text contains no strong character;
+     * the direction will be LTR otherwise.<p>
+     *
+     * If reordering option <code>OPTION_INSERT_MARKS</code> is set, an RLM may
+     * be added at the beginning of the result string to ensure round trip
+     * (that the result string, when reordered back to visual, will produce
+     * the original source text).
+     * @see #REORDER_INVERSE_LIKE_DIRECT
+     * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte LEVEL_DEFAULT_RTL = (byte)0x7f;
+
+    /**
+     * Maximum explicit embedding level.
+     * (The maximum resolved level can be up to <code>MAX_EXPLICIT_LEVEL+1</code>).
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte MAX_EXPLICIT_LEVEL = 61;
+
+    /**
+     * Bit flag for level input.
+     * Overrides directional properties.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte LEVEL_OVERRIDE = (byte)0x80;
+
+    /**
+     * Special value which can be returned by the mapping methods when a
+     * logical index has no corresponding visual index or vice-versa. This may
+     * happen for the logical-to-visual mapping of a Bidi control when option
+     * <code>OPTION_REMOVE_CONTROLS</code> is
+     * specified. This can also happen for the visual-to-logical mapping of a
+     * Bidi mark (LRM or RLM) inserted by option
+     * <code>OPTION_INSERT_MARKS</code>.
+     * @see #getVisualIndex
+     * @see #getVisualMap
+     * @see #getLogicalIndex
+     * @see #getLogicalMap
+     * @see #OPTION_INSERT_MARKS
+     * @see #OPTION_REMOVE_CONTROLS
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int MAP_NOWHERE = -1;
+
+    /**
+     * All left-to-right text.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte LTR = 0;
+    /**
+     * All right-to-left text.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte RTL = 1;
+    /**
+     * Mixed-directional text.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final byte MIXED = 2;
+
+    /**
+     * option bit for writeReordered():
+     * keep combining characters after their base characters in RTL runs
+     *
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short KEEP_BASE_COMBINING = 1;
+
+    /**
+     * option bit for writeReordered():
+     * replace characters with the "mirrored" property in RTL runs
+     * by their mirror-image mappings
+     *
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short DO_MIRRORING = 2;
+
+    /**
+     * option bit for writeReordered():
+     * surround the run with LRMs if necessary;
+     * this is part of the approximate "inverse Bidi" algorithm
+     *
+     * <p>This option does not imply corresponding adjustment of the index
+     * mappings.</p>
+     *
+     * @see #setInverse
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short INSERT_LRM_FOR_NUMERIC = 4;
+
+    /**
+     * option bit for writeReordered():
+     * remove Bidi control characters
+     * (this does not affect INSERT_LRM_FOR_NUMERIC)
+     *
+     * <p>This option does not imply corresponding adjustment of the index
+     * mappings.</p>
+     *
+     * @see #writeReordered
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REMOVE_BIDI_CONTROLS = 8;
+
+    /**
+     * option bit for writeReordered():
+     * write the output in reverse order
+     *
+     * <p>This has the same effect as calling <code>writeReordered()</code>
+     * first without this option, and then calling
+     * <code>writeReverse()</code> without mirroring.
+     * Doing this in the same step is faster and avoids a temporary buffer.
+     * An example for using this option is output to a character terminal that
+     * is designed for RTL scripts and stores text in reverse order.</p>
+     *
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short OUTPUT_REVERSE = 16;
+
+    /** Reordering mode: Regular Logical to Visual Bidi algorithm according to Unicode.
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_DEFAULT = 0;
+
+    /** Reordering mode: Logical to Visual algorithm which handles numbers in
+     * a way which mimicks the behavior of Windows XP.
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_NUMBERS_SPECIAL = 1;
+
+    /** Reordering mode: Logical to Visual algorithm grouping numbers with
+     * adjacent R characters (reversible algorithm).
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_GROUP_NUMBERS_WITH_R = 2;
+
+    /** Reordering mode: Reorder runs only to transform a Logical LTR string
+     * to the logical RTL string with the same display, or vice-versa.<br>
+     * If this mode is set together with option
+     * <code>OPTION_INSERT_MARKS</code>, some Bidi controls in the source
+     * text may be removed and other controls may be added to produce the
+     * minimum combination which has the required display.
+     * @see #OPTION_INSERT_MARKS
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_RUNS_ONLY = 3;
+
+    /** Reordering mode: Visual to Logical algorithm which handles numbers
+     * like L (same algorithm as selected by <code>setInverse(true)</code>.
+     * @see #setInverse
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_INVERSE_NUMBERS_AS_L = 4;
+
+    /** Reordering mode: Visual to Logical algorithm equivalent to the regular
+     * Logical to Visual algorithm.
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_INVERSE_LIKE_DIRECT = 5;
+
+    /** Reordering mode: Inverse Bidi (Visual to Logical) algorithm for the
+     * <code>REORDER_NUMBERS_SPECIAL</code> Bidi algorithm.
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final short REORDER_INVERSE_FOR_NUMBERS_SPECIAL = 6;
+
+    /*  Number of values for reordering mode. */
+    static final short REORDER_COUNT = 7;
+
+    /* Reordering mode values must be ordered so that all the regular logical to
+     * visual modes come first, and all inverse Bidi modes come last.
+     */
+    static final short REORDER_LAST_LOGICAL_TO_VISUAL =
+            REORDER_NUMBERS_SPECIAL;
+
+    /**
+     * Option value for <code>setReorderingOptions</code>:
+     * disable all the options which can be set with this method
+     * @see #setReorderingOptions
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int OPTION_DEFAULT = 0;
+
+    /**
+     * Option bit for <code>setReorderingOptions</code>:
+     * insert Bidi marks (LRM or RLM) when needed to ensure correct result of
+     * a reordering to a Logical order
+     *
+     * <p>This option must be set or reset before calling
+     * <code>setPara</code>.</p>
+     *
+     * <p>This option is significant only with reordering modes which generate
+     * a result with Logical order, specifically.</p>
+     * <ul>
+     *   <li><code>REORDER_RUNS_ONLY</code></li>
+     *   <li><code>REORDER_INVERSE_NUMBERS_AS_L</code></li>
+     *   <li><code>REORDER_INVERSE_LIKE_DIRECT</code></li>
+     *   <li><code>REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code></li>
+     * </ul>
+     *
+     * <p>If this option is set in conjunction with reordering mode
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code> or with calling
+     * <code>setInverse(true)</code>, it implies option
+     * <code>INSERT_LRM_FOR_NUMERIC</code> in calls to method
+     * <code>writeReordered()</code>.</p>
+     *
+     * <p>For other reordering modes, a minimum number of LRM or RLM characters
+     * will be added to the source text after reordering it so as to ensure
+     * round trip, i.e. when applying the inverse reordering mode on the
+     * resulting logical text with removal of Bidi marks
+     * (option <code>OPTION_REMOVE_CONTROLS</code> set before calling
+     * <code>setPara()</code> or option
+     * <code>REMOVE_BIDI_CONTROLS</code> in
+     * <code>writeReordered</code>), the result will be identical to the
+     * source text in the first transformation.
+     *
+     * <p>This option will be ignored if specified together with option
+     * <code>OPTION_REMOVE_CONTROLS</code>. It inhibits option
+     * <code>REMOVE_BIDI_CONTROLS</code> in calls to method
+     * <code>writeReordered()</code> and it implies option
+     * <code>INSERT_LRM_FOR_NUMERIC</code> in calls to method
+     * <code>writeReordered()</code> if the reordering mode is
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code>.</p>
+     *
+     * @see #setReorderingMode
+     * @see #setReorderingOptions
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @see #REMOVE_BIDI_CONTROLS
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #REORDER_RUNS_ONLY
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @see #REORDER_INVERSE_LIKE_DIRECT
+     * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int OPTION_INSERT_MARKS = 1;
+
+    /**
+     * Option bit for <code>setReorderingOptions</code>:
+     * remove Bidi control characters
+     *
+     * <p>This option must be set or reset before calling
+     * <code>setPara</code>.</p>
+     *
+     * <p>This option nullifies option
+     * <code>OPTION_INSERT_MARKS</code>. It inhibits option
+     * <code>INSERT_LRM_FOR_NUMERIC</code> in calls to method
+     * <code>writeReordered()</code> and it implies option
+     * <code>REMOVE_BIDI_CONTROLS</code> in calls to that method.</p>
+     *
+     * @see #setReorderingMode
+     * @see #setReorderingOptions
+     * @see #OPTION_INSERT_MARKS
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @see #REMOVE_BIDI_CONTROLS
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int OPTION_REMOVE_CONTROLS = 2;
+
+    /**
+     * Option bit for <code>setReorderingOptions</code>:
+     * process the output as part of a stream to be continued
+     *
+     * <p>This option must be set or reset before calling
+     * <code>setPara</code>.</p>
+     *
+     * <p>This option specifies that the caller is interested in processing
+     * large text object in parts. The results of the successive calls are
+     * expected to be concatenated by the caller. Only the call for the last
+     * part will have this option bit off.</p>
+     *
+     * <p>When this option bit is on, <code>setPara()</code> may process
+     * less than the full source text in order to truncate the text at a
+     * meaningful boundary. The caller should call
+     * <code>getProcessedLength()</code> immediately after calling
+     * <code>setPara()</code> in order to determine how much of the source
+     * text has been processed. Source text beyond that length should be
+     * resubmitted in following calls to <code>setPara</code>. The
+     * processed length may be less than the length of the source text if a
+     * character preceding the last character of the source text constitutes a
+     * reasonable boundary (like a block separator) for text to be continued.<br>
+     * If the last character of the source text constitutes a reasonable
+     * boundary, the whole text will be processed at once.<br>
+     * If nowhere in the source text there exists
+     * such a reasonable boundary, the processed length will be zero.<br>
+     * The caller should check for such an occurrence and do one of the following:
+     * <ul><li>submit a larger amount of text with a better chance to include
+     *         a reasonable boundary.</li>
+     *     <li>resubmit the same text after turning off option
+     *         <code>OPTION_STREAMING</code>.</li></ul>
+     * In all cases, this option should be turned off before processing the last
+     * part of the text.</p>
+     *
+     * <p>When the <code>OPTION_STREAMING</code> option is used, it is
+     * recommended to call <code>orderParagraphsLTR()</code> with argument
+     * <code>orderParagraphsLTR</code> set to <code>true</code> before calling
+     * <code>setPara()</code> so that later paragraphs may be concatenated to
+     * previous paragraphs on the right.
+     * </p>
+     *
+     * @see #setReorderingMode
+     * @see #setReorderingOptions
+     * @see #getProcessedLength
+     * @see #orderParagraphsLTR
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int OPTION_STREAMING = 4;
+
+    /*
+     *   Comparing the description of the Bidi algorithm with this implementation
+     *   is easier with the same names for the Bidi types in the code as there.
+     *   See UCharacterDirection
+     */
+    static final byte L   = UCharacterDirection.LEFT_TO_RIGHT;
+    static final byte R   = UCharacterDirection.RIGHT_TO_LEFT;
+    static final byte EN  = UCharacterDirection.EUROPEAN_NUMBER;
+    static final byte ES  = UCharacterDirection.EUROPEAN_NUMBER_SEPARATOR;
+    static final byte ET  = UCharacterDirection.EUROPEAN_NUMBER_TERMINATOR;
+    static final byte AN  = UCharacterDirection.ARABIC_NUMBER;
+    static final byte CS  = UCharacterDirection.COMMON_NUMBER_SEPARATOR;
+    static final byte B   = UCharacterDirection.BLOCK_SEPARATOR;
+    static final byte S   = UCharacterDirection.SEGMENT_SEPARATOR;
+    static final byte WS  = UCharacterDirection.WHITE_SPACE_NEUTRAL;
+    static final byte ON  = UCharacterDirection.OTHER_NEUTRAL;
+    static final byte LRE = UCharacterDirection.LEFT_TO_RIGHT_EMBEDDING;
+    static final byte LRO = UCharacterDirection.LEFT_TO_RIGHT_OVERRIDE;
+    static final byte AL  = UCharacterDirection.RIGHT_TO_LEFT_ARABIC;
+    static final byte RLE = UCharacterDirection.RIGHT_TO_LEFT_EMBEDDING;
+    static final byte RLO = UCharacterDirection.RIGHT_TO_LEFT_OVERRIDE;
+    static final byte PDF = UCharacterDirection.POP_DIRECTIONAL_FORMAT;
+    static final byte NSM = UCharacterDirection.DIR_NON_SPACING_MARK;
+    static final byte BN  = UCharacterDirection.BOUNDARY_NEUTRAL;
+
+    static final int MASK_R_AL = (1 << R | 1 << AL);
+
+    /**
+     * Value returned by <code>BidiClassifier</code> when there is no need to
+     * override the standard Bidi class for a given code point.
+     * @see BidiClassifier
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int CLASS_DEFAULT = UCharacterDirection
+                                            .CHAR_DIRECTION_COUNT;
+
+    private static final char CR = '\r';
+    private static final char LF = '\n';
+
+    static final int LRM_BEFORE = 1;
+    static final int LRM_AFTER = 2;
+    static final int RLM_BEFORE = 4;
+    static final int RLM_AFTER = 8;
+
+    /*
+     * reference to parent paragraph object (reference to self if this object is
+     * a paragraph object); set to null in a newly opened object; set to a
+     * real value after a successful execution of setPara or setLine
+     */
+    Bidi                paraBidi;
+
+    final UBiDiProps    bdp;
+
+    /* character array representing the current text */
+    char[]              text;
+
+    /* length of the current text */
+    int                 originalLength;
+
+    /* if the option OPTION_STREAMING is set, this is the length of
+     * text actually processed by <code>setPara</code>, which may be shorter
+     * than the original length. Otherwise, it is identical to the original
+     * length.
+     */
+    int                 length;
+
+    /* if option OPTION_REMOVE_CONTROLS is set, and/or Bidi
+     * marks are allowed to be inserted in one of the reordering modes, the
+     * length of the result string may be different from the processed length.
+     */
+    int                 resultLength;
+
+    /* indicators for whether memory may be allocated after construction */
+    boolean             mayAllocateText;
+    boolean             mayAllocateRuns;
+
+    /* arrays with one value per text-character */
+    byte[]              dirPropsMemory = new byte[1];
+    byte[]              levelsMemory = new byte[1];
+    byte[]              dirProps;
+    byte[]              levels;
+
+    /* are we performing an approximation of the "inverse Bidi" algorithm? */
+    boolean             isInverse;
+
+    /* are we using the basic algorithm or its variation? */
+    int                 reorderingMode;
+
+    /* bitmask for reordering options */
+    int                 reorderingOptions;
+
+    /* must block separators receive level 0? */
+    boolean             orderParagraphsLTR;
+
+    /* the paragraph level */
+    byte                paraLevel;
+    /* original paraLevel when contextual */
+    /* must be one of DEFAULT_xxx or 0 if not contextual */
+    byte                defaultParaLevel;
+
+    /* the following is set in setPara, used in processPropertySeq */
+
+    ImpTabPair          impTabPair;  /* reference to levels state table pair */
+    /* the overall paragraph or line directionality*/
+    byte                direction;
+
+    /* flags is a bit set for which directional properties are in the text */
+    int                 flags;
+
+    /* lastArabicPos is index to the last AL in the text, -1 if none */
+    int                 lastArabicPos;
+
+    /* characters after trailingWSStart are WS and are */
+    /* implicitly at the paraLevel (rule (L1)) - levels may not reflect that */
+    int                 trailingWSStart;
+
+    /* fields for paragraph handling */
+    int                 paraCount;       /* set in getDirProps() */
+    int[]               parasMemory = new int[1];
+    int[]               paras;           /* limits of paragraphs, filled in
+                                          ResolveExplicitLevels() or CheckExplicitLevels() */
+
+    /* for single paragraph text, we only need a tiny array of paras (no allocation) */
+    int[]               simpleParas = {0};
+
+    /* fields for line reordering */
+    int                 runCount;     /* ==-1: runs not set up yet */
+    BidiRun[]           runsMemory = new BidiRun[0];
+    BidiRun[]           runs;
+
+    /* for non-mixed text, we only need a tiny array of runs (no allocation) */
+    BidiRun[]           simpleRuns = {new BidiRun()};
+
+    /* mapping of runs in logical order to visual order */
+    int[]               logicalToVisualRunsMap;
+    /* flag to indicate that the map has been updated */
+    boolean             isGoodLogicalToVisualRunsMap;
+
+    /* customized class provider */
+    BidiClassifier      customClassifier = null;
+
+    /* for inverse Bidi with insertion of directional marks */
+    InsertPoints        insertPoints = new InsertPoints();
+
+    /* for option OPTION_REMOVE_CONTROLS */
+    int                 controlCount;
+
+    /*
+     * Sometimes, bit values are more appropriate
+     * to deal with directionality properties.
+     * Abbreviations in these method names refer to names
+     * used in the Bidi algorithm.
+     */
+    static int DirPropFlag(byte dir) {
+        return (1 << dir);
+    }
+
+    boolean testDirPropFlagAt(int flag, int index) {
+        return ((DirPropFlag((byte)(dirProps[index]&~CONTEXT_RTL)) & flag) != 0);
+    }
+
+    /*
+     * The following bit is ORed to the property of characters in paragraphs
+     * with contextual RTL direction when paraLevel is contextual.
+     */
+    static final byte CONTEXT_RTL_SHIFT = 6;
+    static final byte CONTEXT_RTL = (byte)(1<<CONTEXT_RTL_SHIFT);   // 0x40
+    static byte NoContextRTL(byte dir)
+    {
+        return (byte)(dir & ~CONTEXT_RTL);
+    }
+
+    /*
+     * The following is a variant of DirProp.DirPropFlag() which ignores the
+     * CONTEXT_RTL bit.
+     */
+    static int DirPropFlagNC(byte dir) {
+        return (1<<(dir & ~CONTEXT_RTL));
+    }
+
+    static final int DirPropFlagMultiRuns = DirPropFlag((byte)31);
+
+    /* to avoid some conditional statements, use tiny constant arrays */
+    static final int DirPropFlagLR[] = { DirPropFlag(L), DirPropFlag(R) };
+    static final int DirPropFlagE[] = { DirPropFlag(LRE), DirPropFlag(RLE) };
+    static final int DirPropFlagO[] = { DirPropFlag(LRO), DirPropFlag(RLO) };
+
+    static final int DirPropFlagLR(byte level) { return DirPropFlagLR[level & 1]; }
+    static final int DirPropFlagE(byte level)  { return DirPropFlagE[level & 1]; }
+    static final int DirPropFlagO(byte level)  { return DirPropFlagO[level & 1]; }
+
+    /*
+     *  are there any characters that are LTR?
+     */
+    static final int MASK_LTR =
+        DirPropFlag(L)|DirPropFlag(EN)|DirPropFlag(AN)|DirPropFlag(LRE)|DirPropFlag(LRO);
+
+    /*
+     *  are there any characters that are RTL?
+     */
+    static final int MASK_RTL = DirPropFlag(R)|DirPropFlag(AL)|DirPropFlag(RLE)|DirPropFlag(RLO);
+
+    /* explicit embedding codes */
+    static final int MASK_LRX = DirPropFlag(LRE)|DirPropFlag(LRO);
+    static final int MASK_RLX = DirPropFlag(RLE)|DirPropFlag(RLO);
+    static final int MASK_OVERRIDE = DirPropFlag(LRO)|DirPropFlag(RLO);
+    static final int MASK_EXPLICIT = MASK_LRX|MASK_RLX|DirPropFlag(PDF);
+    static final int MASK_BN_EXPLICIT = DirPropFlag(BN)|MASK_EXPLICIT;
+
+    /* paragraph and segment separators */
+    static final int MASK_B_S = DirPropFlag(B)|DirPropFlag(S);
+
+    /* all types that are counted as White Space or Neutral in some steps */
+    static final int MASK_WS = MASK_B_S|DirPropFlag(WS)|MASK_BN_EXPLICIT;
+    static final int MASK_N = DirPropFlag(ON)|MASK_WS;
+
+    /* all types that are included in a sequence of
+     * European Terminators for (W5) */
+    static final int MASK_ET_NSM_BN = DirPropFlag(ET)|DirPropFlag(NSM)|MASK_BN_EXPLICIT;
+
+    /* types that are neutrals or could becomes neutrals in (Wn) */
+    static final int MASK_POSSIBLE_N = DirPropFlag(CS)|DirPropFlag(ES)|DirPropFlag(ET)|MASK_N;
+
+    /*
+     * These types may be changed to "e",
+     * the embedding type (L or R) of the run,
+     * in the Bidi algorithm (N2)
+     */
+    static final int MASK_EMBEDDING = DirPropFlag(NSM)|MASK_POSSIBLE_N;
+
+    /*
+     *  the dirProp's L and R are defined to 0 and 1 values in UCharacterDirection.java
+     */
+    static byte GetLRFromLevel(byte level)
+    {
+        return (byte)(level & 1);
+    }
+
+    static boolean IsDefaultLevel(byte level)
+    {
+        return ((level & LEVEL_DEFAULT_LTR) == LEVEL_DEFAULT_LTR);
+    }
+
+    byte GetParaLevelAt(int index)
+    {
+        return (defaultParaLevel != 0) ?
+                (byte)(dirProps[index]>>CONTEXT_RTL_SHIFT) : paraLevel;
+    }
+
+    static boolean IsBidiControlChar(int c)
+    {
+        /* check for range 0x200c to 0x200f (ZWNJ, ZWJ, LRM, RLM) or
+                           0x202a to 0x202e (LRE, RLE, PDF, LRO, RLO) */
+        return (((c & 0xfffffffc) == 0x200c) || ((c >= 0x202a) && (c <= 0x202e)));
+    }
+
+    void verifyValidPara()
+    {
+        if (!(this == this.paraBidi)) {
+            throw new IllegalStateException();
+        }
+    }
+
+    void verifyValidParaOrLine()
+    {
+        Bidi para = this.paraBidi;
+        /* verify Para */
+        if (this == para) {
+            return;
+        }
+        /* verify Line */
+        if ((para == null) || (para != para.paraBidi)) {
+            throw new IllegalStateException();
+        }
+    }
+
+    void verifyRange(int index, int start, int limit)
+    {
+        if (index < start || index >= limit) {
+            throw new IllegalArgumentException("Value " + index +
+                      " is out of range " + start + " to " + limit);
+        }
+    }
+
+    /**
+     * Allocate a <code>Bidi</code> object.
+     * Such an object is initially empty. It is assigned
+     * the Bidi properties of a piece of text containing one or more paragraphs
+     * by <code>setPara()</code>
+     * or the Bidi properties of a line within a paragraph by
+     * <code>setLine()</code>.<p>
+     * This object can be reused.<p>
+     * <code>setPara()</code> and <code>setLine()</code> will allocate
+     * additional memory for internal structures as necessary.
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi()
+    {
+        this(0, 0);
+    }
+
+    /**
+     * Allocate a <code>Bidi</code> object with preallocated memory
+     * for internal structures.
+     * This method provides a <code>Bidi</code> object like the default constructor
+     * but it also preallocates memory for internal structures
+     * according to the sizings supplied by the caller.<p>
+     * The preallocation can be limited to some of the internal memory
+     * by setting some values to 0 here. That means that if, e.g.,
+     * <code>maxRunCount</code> cannot be reasonably predetermined and should not
+     * be set to <code>maxLength</code> (the only failproof value) to avoid
+     * wasting  memory, then <code>maxRunCount</code> could be set to 0 here
+     * and the internal structures that are associated with it will be allocated
+     * on demand, just like with the default constructor.
+     *
+     * @param maxLength is the maximum text or line length that internal memory
+     *        will be preallocated for. An attempt to associate this object with a
+     *        longer text will fail, unless this value is 0, which leaves the allocation
+     *        up to the implementation.
+     *
+     * @param maxRunCount is the maximum anticipated number of same-level runs
+     *        that internal memory will be preallocated for. An attempt to access
+     *        visual runs on an object that was not preallocated for as many runs
+     *        as the text was actually resolved to will fail,
+     *        unless this value is 0, which leaves the allocation up to the implementation.<br><br>
+     *        The number of runs depends on the actual text and maybe anywhere between
+     *        1 and <code>maxLength</code>. It is typically small.
+     *
+     * @throws IllegalArgumentException if maxLength or maxRunCount is less than 0
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi(int maxLength, int maxRunCount)
+    {
+        /* check the argument values */
+        if (maxLength < 0 || maxRunCount < 0) {
+            throw new IllegalArgumentException();
+        }
+
+        /* reset the object, all reference variables null, all flags false,
+           all sizes 0.
+           In fact, we don't need to do anything, since class members are
+           initialized as zero when an instance is created.
+         */
+        /*
+        mayAllocateText = false;
+        mayAllocateRuns = false;
+        orderParagraphsLTR = false;
+        paraCount = 0;
+        runCount = 0;
+        trailingWSStart = 0;
+        flags = 0;
+        paraLevel = 0;
+        defaultParaLevel = 0;
+        direction = 0;
+        */
+        /* get Bidi properties */
+        try {
+            bdp = UBiDiProps.getSingleton();
+        }
+        catch (IOException e) {
+            throw new MissingResourceException(e.getMessage(), "(BidiProps)", "");
+        }
+
+        /* allocate memory for arrays as requested */
+        if (maxLength > 0) {
+            getInitialDirPropsMemory(maxLength);
+            getInitialLevelsMemory(maxLength);
+        } else {
+            mayAllocateText = true;
+        }
+
+        if (maxRunCount > 0) {
+            // if maxRunCount == 1, use simpleRuns[]
+            if (maxRunCount > 1) {
+                getInitialRunsMemory(maxRunCount);
+            }
+        } else {
+            mayAllocateRuns = true;
+        }
+    }
+
+    /*
+     * We are allowed to allocate memory if object==null or
+     * mayAllocate==true for each array that we need.
+     *
+     * Assume sizeNeeded>0.
+     * If object != null, then assume size > 0.
+     */
+    private Object getMemory(String label, Object array, Class arrayClass,
+            boolean mayAllocate, int sizeNeeded)
+    {
+        int len = Array.getLength(array);
+
+        /* we have at least enough memory and must not allocate */
+        if (sizeNeeded == len) {
+            return array;
+        }
+        if (!mayAllocate) {
+            /* we must not allocate */
+            if (sizeNeeded <= len) {
+                return array;
+            }
+            throw new OutOfMemoryError("Failed to allocate memory for "
+                                       + label);
+        }
+        /* we may try to grow or shrink */
+        /* FOOD FOR THOUGHT: when shrinking it should be possible to avoid
+           the allocation altogether and rely on this.length */
+        try {
+            return Array.newInstance(arrayClass, sizeNeeded);
+        } catch (Exception e) {
+            throw new OutOfMemoryError("Failed to allocate memory for "
+                                       + label);
+        }
+    }
+
+    /* helper methods for each allocated array */
+    private void getDirPropsMemory(boolean mayAllocate, int len)
+    {
+        Object array = getMemory("DirProps", dirPropsMemory, Byte.TYPE, mayAllocate, len);
+        dirPropsMemory = (byte[]) array;
+    }
+
+    void getDirPropsMemory(int len)
+    {
+        getDirPropsMemory(mayAllocateText, len);
+    }
+
+    private void getLevelsMemory(boolean mayAllocate, int len)
+    {
+        Object array = getMemory("Levels", levelsMemory, Byte.TYPE, mayAllocate, len);
+        levelsMemory = (byte[]) array;
+    }
+
+    void getLevelsMemory(int len)
+    {
+        getLevelsMemory(mayAllocateText, len);
+    }
+
+    private void getRunsMemory(boolean mayAllocate, int len)
+    {
+        Object array = getMemory("Runs", runsMemory, BidiRun.class, mayAllocate, len);
+        runsMemory = (BidiRun[]) array;
+    }
+
+    void getRunsMemory(int len)
+    {
+        getRunsMemory(mayAllocateRuns, len);
+    }
+
+    /* additional methods used by constructor - always allow allocation */
+    private void getInitialDirPropsMemory(int len)
+    {
+        getDirPropsMemory(true, len);
+    }
+
+    private void getInitialLevelsMemory(int len)
+    {
+        getLevelsMemory(true, len);
+    }
+
+    private void getInitialParasMemory(int len)
+    {
+        Object array = getMemory("Paras", parasMemory, Integer.TYPE, true, len);
+        parasMemory = (int[]) array;
+    }
+
+    private void getInitialRunsMemory(int len)
+    {
+        getRunsMemory(true, len);
+    }
+
+    /**
+     * Modify the operation of the Bidi algorithm such that it
+     * approximates an "inverse Bidi" algorithm. This method
+     * must be called before <code>setPara()</code>.
+     *
+     * <p>The normal operation of the Bidi algorithm as described
+     * in the Unicode Technical Report is to take text stored in logical
+     * (keyboard, typing) order and to determine the reordering of it for visual
+     * rendering.
+     * Some legacy systems store text in visual order, and for operations
+     * with standard, Unicode-based algorithms, the text needs to be transformed
+     * to logical order. This is effectively the inverse algorithm of the
+     * described Bidi algorithm. Note that there is no standard algorithm for
+     * this "inverse Bidi" and that the current implementation provides only an
+     * approximation of "inverse Bidi".</p>
+     *
+     * <p>With <code>isInversed</code> set to <code>true</code>,
+     * this method changes the behavior of some of the subsequent methods
+     * in a way that they can be used for the inverse Bidi algorithm.
+     * Specifically, runs of text with numeric characters will be treated in a
+     * special way and may need to be surrounded with LRM characters when they are
+     * written in reordered sequence.</p>
+     *
+     * <p>Output runs should be retrieved using <code>getVisualRun()</code>.
+     * Since the actual input for "inverse Bidi" is visually ordered text and
+     * <code>getVisualRun()</code> gets the reordered runs, these are actually
+     * the runs of the logically ordered output.</p>
+     *
+     * <p>Calling this method with argument <code>isInverse</code> set to
+     * <code>true</code> is equivalent to calling <code>setReorderingMode</code>
+     * with argument <code>reorderingMode</code>
+     * set to <code>REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
+     * Calling this method with argument <code>isInverse</code> set to
+     * <code>false</code> is equivalent to calling <code>setReorderingMode</code>
+     * with argument <code>reorderingMode</code>
+     * set to <code>REORDER_DEFAULT</code>.
+     *
+     * @param isInverse specifies "forward" or "inverse" Bidi operation.
+     *
+     * @see #setPara
+     * @see #writeReordered
+     * @see #setReorderingMode
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @see #REORDER_DEFAULT
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setInverse(boolean isInverse) {
+        this.isInverse = (isInverse);
+        this.reorderingMode = isInverse ? REORDER_INVERSE_NUMBERS_AS_L
+                : REORDER_DEFAULT;
+    }
+
+    /**
+     * Is this <code>Bidi</code> object set to perform the inverse Bidi
+     * algorithm?
+     * <p>Note: calling this method after setting the reordering mode with
+     * <code>setReorderingMode</code> will return <code>true</code> if the
+     * reordering mode was set to
+     * <code>REORDER_INVERSE_NUMBERS_AS_L<code>, <code>false</code>
+     * for all other values.</p>
+     *
+     * @return <code>true</code> if the <code>Bidi</code> object is set to
+     * perform the inverse Bidi algorithm by handling numbers as L.
+     *
+     * @see #setInverse
+     * @see #setReorderingMode
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isInverse() {
+        return isInverse;
+    }
+
+    /**
+     * Modify the operation of the Bidi algorithm such that it implements some
+     * variant to the basic Bidi algorithm or approximates an "inverse Bidi"
+     * algorithm, depending on different values of the "reordering mode".
+     * This method must be called before <code>setPara()</code>, and stays in
+     * effect until called again with a different argument.
+     *
+     * <p>The normal operation of the Bidi algorithm as described in the Unicode
+     * Standard Annex #9 is to take text stored in logical (keyboard, typing)
+     * order and to determine how to reorder it for visual rendering.</p>
+     *
+     * <p>With the reordering mode set to a value other than
+     * <code>REORDER_DEFAULT</code>, this method changes the behavior of some of
+     * the subsequent methods in a way such that they implement an inverse Bidi
+     * algorithm or some other algorithm variants.</p>
+     *
+     * <p>Some legacy systems store text in visual order, and for operations
+     * with standard, Unicode-based algorithms, the text needs to be transformed
+     * into logical order. This is effectively the inverse algorithm of the
+     * described Bidi algorithm. Note that there is no standard algorithm for
+     * this "inverse Bidi", so a number of variants are implemented here.</p>
+     *
+     * <p>In other cases, it may be desirable to emulate some variant of the
+     * Logical to Visual algorithm (e.g. one used in MS Windows), or perform a
+     * Logical to Logical transformation.</p>
+     *
+     * <ul>
+     * <li>When the Reordering Mode is set to
+     * <code>REORDER_DEFAULT</code>,
+     * the standard Bidi Logical to Visual algorithm is applied.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_NUMBERS_SPECIAL</code>,
+     * the algorithm used to perform Bidi transformations when calling
+     * <code>setPara</code> should approximate the algorithm used in Microsoft
+     * Windows XP rather than strictly conform to the Unicode Bidi algorithm.
+     * <br>
+     * The differences between the basic algorithm and the algorithm addressed
+     * by this option are as follows:
+     * <ul>
+     *   <li>Within text at an even embedding level, the sequence "123AB"
+     *   (where AB represent R or AL letters) is transformed to "123BA" by the
+     *   Unicode algorithm and to "BA123" by the Windows algorithm.</li>
+     *
+     *   <li>Arabic-Indic numbers (AN) are handled by the Windows algorithm just
+     *   like regular numbers (EN).</li>
+     * </ul></li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_GROUP_NUMBERS_WITH_R</code>,
+     * numbers located between LTR text and RTL text are associated with the RTL
+     * text. For instance, an LTR paragraph with content "abc 123 DEF" (where
+     * upper case letters represent RTL characters) will be transformed to
+     * "abc FED 123" (and not "abc 123 FED"), "DEF 123 abc" will be transformed
+     * to "123 FED abc" and "123 FED abc" will be transformed to "DEF 123 abc".
+     * This makes the algorithm reversible and makes it useful when round trip
+     * (from visual to logical and back to visual) must be achieved without
+     * adding LRM characters. However, this is a variation from the standard
+     * Unicode Bidi algorithm.<br>
+     * The source text should not contain Bidi control characters other than LRM
+     * or RLM.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_RUNS_ONLY</code>,
+     * a "Logical to Logical" transformation must be performed:
+     * <ul>
+     * <li>If the default text level of the source text (argument
+     * <code>paraLevel</code> in <code>setPara</code>) is even, the source text
+     * will be handled as LTR logical text and will be transformed to the RTL
+     * logical text which has the same LTR visual display.</li>
+     * <li>If the default level of the source text is odd, the source text
+     * will be handled as RTL logical text and will be transformed to the
+     * LTR logical text which has the same LTR visual display.</li>
+     * </ul>
+     * This mode may be needed when logical text which is basically Arabic or
+     * Hebrew, with possible included numbers or phrases in English, has to be
+     * displayed as if it had an even embedding level (this can happen if the
+     * displaying application treats all text as if it was basically LTR).
+     * <br>
+     * This mode may also be needed in the reverse case, when logical text which
+     * is basically English, with possible included phrases in Arabic or Hebrew,
+     * has to be displayed as if it had an odd embedding level.
+     * <br>
+     * Both cases could be handled by adding LRE or RLE at the head of the
+     * text, if the display subsystem supports these formatting controls. If it
+     * does not, the problem may be handled by transforming the source text in
+     * this mode before displaying it, so that it will be displayed properly.
+     * <br>
+     * The source text should not contain Bidi control characters other than LRM
+     * or RLM.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code>, an "inverse Bidi"
+     * algorithm is applied.
+     * Runs of text with numeric characters will be treated like LTR letters and
+     * may need to be surrounded with LRM characters when they are written in
+     * reordered sequence (the option <code>INSERT_LRM_FOR_NUMERIC</code> can
+     * be used with method <code>writeReordered</code> to this end. This mode
+     * is equivalent to calling <code>setInverse()</code> with
+     * argument <code>isInverse</code> set to <code>true</code>.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_INVERSE_LIKE_DIRECT</code>, the "direct" Logical to
+     * Visual Bidi algorithm is used as an approximation of an "inverse Bidi"
+     * algorithm. This mode is similar to mode
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code> but is closer to the
+     * regular Bidi algorithm.
+     * <br>
+     * For example, an LTR paragraph with the content "FED 123 456 CBA" (where
+     * upper case represents RTL characters) will be transformed to
+     * "ABC 456 123 DEF", as opposed to "DEF 123 456 ABC"
+     * with mode <code>REORDER_INVERSE_NUMBERS_AS_L</code>.<br>
+     * When used in conjunction with option
+     * <code>OPTION_INSERT_MARKS</code>, this mode generally
+     * adds Bidi marks to the output significantly more sparingly than mode
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code>.<br> with option
+     * <code>INSERT_LRM_FOR_NUMERIC</code> in calls to
+     * <code>writeReordered</code>.</li>
+     *
+     * <li>When the reordering mode is set to
+     * <code>REORDER_INVERSE_FOR_NUMBERS_SPECIAL</code>, the Logical to Visual
+     * Bidi algorithm used in Windows XP is used as an approximation of an "inverse
+     * Bidi" algorithm.
+     * <br>
+     * For example, an LTR paragraph with the content "abc FED123" (where
+     * upper case represents RTL characters) will be transformed to
+     * "abc 123DEF.</li>
+     * </ul>
+     *
+     * <p>In all the reordering modes specifying an "inverse Bidi" algorithm
+     * (i.e. those with a name starting with <code>REORDER_INVERSE</code>),
+     * output runs should be retrieved using <code>getVisualRun()</code>, and
+     * the output text with <code>writeReordered()</code>. The caller should
+     * keep in mind that in "inverse Bidi" modes the input is actually visually
+     * ordered text and reordered output returned by <code>getVisualRun()</code>
+     * or <code>writeReordered()</code> are actually runs or character string
+     * of logically ordered output.<br>
+     * For all the "inverse Bidi" modes, the source text should not contain
+     * Bidi control characters other than LRM or RLM.</p>
+     *
+     * <p>Note that option <code>OUTPUT_REVERSE</code> of
+     * <code>writeReordered</code> has no useful meaning and should not be used
+     * in conjunction with any value of the reordering mode specifying "inverse
+     * Bidi" or with value <code>REORDER_RUNS_ONLY</code>.
+     *
+     * @param reorderingMode specifies the required variant of the Bidi
+     *                       algorithm.
+     *
+     * @see #setInverse
+     * @see #setPara
+     * @see #writeReordered
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @see #OUTPUT_REVERSE
+     * @see #REORDER_DEFAULT
+     * @see #REORDER_NUMBERS_SPECIAL
+     * @see #REORDER_GROUP_NUMBERS_WITH_R
+     * @see #REORDER_RUNS_ONLY
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @see #REORDER_INVERSE_LIKE_DIRECT
+     * @see #REORDER_INVERSE_FOR_NUMBERS_SPECIAL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setReorderingMode(int reorderingMode) {
+        if ((reorderingMode < REORDER_DEFAULT) ||
+            (reorderingMode >= REORDER_COUNT))
+            return;                     /* don't accept a wrong value */
+        this.reorderingMode = reorderingMode;
+        this.isInverse =
+            reorderingMode == REORDER_INVERSE_NUMBERS_AS_L;
+    }
+
+    /**
+     * What is the requested reordering mode for a given Bidi object?
+     *
+     * @return the current reordering mode of the Bidi object
+     *
+     * @see #setReorderingMode
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getReorderingMode() {
+        return this.reorderingMode;
+    }
+
+    /**
+     * Specify which of the reordering options should be applied during Bidi
+     * transformations.
+     *
+     * @param options A combination of zero or more of the following
+     * reordering options:
+     * <code>OPTION_DEFAULT</code>, <code>OPTION_INSERT_MARKS</code>,
+     * <code>OPTION_REMOVE_CONTROLS</code>, <code>OPTION_STREAMING</code>.
+     *
+     * @see #getReorderingOptions
+     * @see #OPTION_DEFAULT
+     * @see #OPTION_INSERT_MARKS
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #OPTION_STREAMING
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setReorderingOptions(int options) {
+        if ((options & OPTION_REMOVE_CONTROLS) != 0) {
+            this.reorderingOptions = options & ~OPTION_INSERT_MARKS;
+        } else {
+            this.reorderingOptions = options;
+        }
+    }
+
+    /**
+     * What are the reordering options applied to a given Bidi object?
+     *
+     * @return the current reordering options of the Bidi object
+     *
+     * @see #setReorderingOptions
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getReorderingOptions() {
+        return this.reorderingOptions;
+    }
+
+/* perform (P2)..(P3) ------------------------------------------------------- */
+
+    private void getDirProps()
+    {
+        int i = 0, i0, i1;
+        flags = 0;          /* collect all directionalities in the text */
+        int uchar;
+        byte dirProp;
+        byte paraDirDefault = 0;   /* initialize to avoid compiler warnings */
+        boolean isDefaultLevel = IsDefaultLevel(paraLevel);
+        /* for inverse Bidi, the default para level is set to RTL if there is a
+           strong R or AL character at either end of the text                */
+        boolean isDefaultLevelInverse=isDefaultLevel &&
+                (reorderingMode==REORDER_INVERSE_LIKE_DIRECT ||
+                 reorderingMode==REORDER_INVERSE_FOR_NUMBERS_SPECIAL);
+        lastArabicPos = -1;
+        controlCount = 0;
+        boolean removeBidiControls = (reorderingOptions & OPTION_REMOVE_CONTROLS) != 0;
+
+        final int NOT_CONTEXTUAL = 0;         /* 0: not contextual paraLevel */
+        final int LOOKING_FOR_STRONG = 1;     /* 1: looking for first strong char */
+        final int FOUND_STRONG_CHAR = 2;      /* 2: found first strong char       */
+
+        int state;
+        int paraStart = 0;                    /* index of first char in paragraph */
+        byte paraDir;                         /* == CONTEXT_RTL within paragraphs
+                                                 starting with strong R char      */
+        byte lastStrongDir=0;                 /* for default level & inverse Bidi */
+        int lastStrongLTR=0;                  /* for STREAMING option             */
+
+        if ((reorderingOptions & OPTION_STREAMING) > 0) {
+            length = 0;
+            lastStrongLTR = 0;
+        }
+        if (isDefaultLevel) {
+            paraDirDefault = ((paraLevel & 1) != 0) ? CONTEXT_RTL : 0;
+            paraDir = paraDirDefault;
+            lastStrongDir = paraDirDefault;
+            state = LOOKING_FOR_STRONG;
+        } else {
+            state = NOT_CONTEXTUAL;
+            paraDir = 0;
+        }
+        /* count paragraphs and determine the paragraph level (P2..P3) */
+        /*
+         * see comment on constant fields:
+         * the LEVEL_DEFAULT_XXX values are designed so that
+         * their low-order bit alone yields the intended default
+         */
+
+        for (i = 0; i < originalLength; /* i is incremented in the loop */) {
+            i0 = i;                     /* index of first code unit */
+            uchar = UTF16.charAt(text, 0, originalLength, i);
+            i += UTF16.getCharCount(uchar);
+            i1 = i - 1; /* index of last code unit, gets the directional property */
+
+            dirProp = (byte)getCustomizedClass(uchar);
+            flags |= DirPropFlag(dirProp);
+            dirProps[i1] = (byte)(dirProp | paraDir);
+            if (i1 > i0) {     /* set previous code units' properties to BN */
+                flags |= DirPropFlag(BN);
+                do {
+                    dirProps[--i1] = (byte)(BN | paraDir);
+                } while (i1 > i0);
+            }
+            if (state == LOOKING_FOR_STRONG) {
+                if (dirProp == L) {
+                    state = FOUND_STRONG_CHAR;
+                    if (paraDir != 0) {
+                        paraDir = 0;
+                        for (i1 = paraStart; i1 < i; i1++) {
+                            dirProps[i1] &= ~CONTEXT_RTL;
+                        }
+                    }
+                    continue;
+                }
+                if (dirProp == R || dirProp == AL) {
+                    state = FOUND_STRONG_CHAR;
+                    if (paraDir == 0) {
+                        paraDir = CONTEXT_RTL;
+                        for (i1 = paraStart; i1 < i; i1++) {
+                            dirProps[i1] |= CONTEXT_RTL;
+                        }
+                    }
+                    continue;
+                }
+            }
+            if (dirProp == L) {
+                lastStrongDir = 0;
+                lastStrongLTR = i;      /* i is index to next character */
+            }
+            else if (dirProp == R) {
+                lastStrongDir = CONTEXT_RTL;
+            }
+            else if (dirProp == AL) {
+                lastStrongDir = CONTEXT_RTL;
+                lastArabicPos = i-1;
+            }
+            else if (dirProp == B) {
+                if ((reorderingOptions & OPTION_STREAMING) != 0) {
+                    this.length = i;    /* i is index to next character */
+                }
+                if (isDefaultLevelInverse && (lastStrongDir==CONTEXT_RTL) &&(paraDir!=lastStrongDir)) {
+                    for ( ; paraStart < i; paraStart++) {
+                        dirProps[paraStart] |= CONTEXT_RTL;
+                    }
+                }
+                if (i < originalLength) {   /* B not last char in text */
+                    if (!((uchar == (int)CR) && (text[i] == (int)LF))) {
+                        paraCount++;
+                    }
+                    if (isDefaultLevel) {
+                        state=LOOKING_FOR_STRONG;
+                        paraStart = i;        /* i is index to next character */
+                        paraDir = paraDirDefault;
+                        lastStrongDir = paraDirDefault;
+                    }
+                }
+            }
+            if (removeBidiControls && IsBidiControlChar(uchar)) {
+                controlCount++;
+            }
+        }
+        if (isDefaultLevelInverse && (lastStrongDir==CONTEXT_RTL) &&(paraDir!=lastStrongDir)) {
+            for (i1 = paraStart; i1 < originalLength; i1++) {
+                dirProps[i1] |= CONTEXT_RTL;
+            }
+        }
+        if (isDefaultLevel) {
+            paraLevel = GetParaLevelAt(0);
+        }
+        if ((reorderingOptions & OPTION_STREAMING) > 0) {
+            if ((lastStrongLTR > this.length) &&
+               (GetParaLevelAt(lastStrongLTR) == 0)) {
+                this.length = lastStrongLTR;
+            }
+            if (this.length < originalLength) {
+                paraCount--;
+            }
+        }
+        /* The following line does nothing new for contextual paraLevel, but is
+           needed for absolute paraLevel.                               */
+        flags |= DirPropFlagLR(paraLevel);
+
+        if (orderParagraphsLTR && (flags & DirPropFlag(B)) != 0) {
+            flags |= DirPropFlag(L);
+        }
+    }
+
+    /* perform (X1)..(X9) ------------------------------------------------------- */
+
+    /* determine if the text is mixed-directional or single-directional */
+    private byte directionFromFlags() {
+        /* if the text contains AN and neutrals, then some neutrals may become RTL */
+        if (!((flags & MASK_RTL) != 0 ||
+              ((flags & DirPropFlag(AN)) != 0 &&
+               (flags & MASK_POSSIBLE_N) != 0))) {
+            return LTR;
+        } else if ((flags & MASK_LTR) == 0) {
+            return RTL;
+        } else {
+            return MIXED;
+        }
+    }
+
+    /*
+     * Resolve the explicit levels as specified by explicit embedding codes.
+     * Recalculate the flags to have them reflect the real properties
+     * after taking the explicit embeddings into account.
+     *
+     * The Bidi algorithm is designed to result in the same behavior whether embedding
+     * levels are externally specified (from "styled text", supposedly the preferred
+     * method) or set by explicit embedding codes (LRx, RLx, PDF) in the plain text.
+     * That is why (X9) instructs to remove all explicit codes (and BN).
+     * However, in a real implementation, this removal of these codes and their index
+     * positions in the plain text is undesirable since it would result in
+     * reallocated, reindexed text.
+     * Instead, this implementation leaves the codes in there and just ignores them
+     * in the subsequent processing.
+     * In order to get the same reordering behavior, positions with a BN or an
+     * explicit embedding code just get the same level assigned as the last "real"
+     * character.
+     *
+     * Some implementations, not this one, then overwrite some of these
+     * directionality properties at "real" same-level-run boundaries by
+     * L or R codes so that the resolution of weak types can be performed on the
+     * entire paragraph at once instead of having to parse it once more and
+     * perform that resolution on same-level-runs.
+     * This limits the scope of the implicit rules in effectively
+     * the same way as the run limits.
+     *
+     * Instead, this implementation does not modify these codes.
+     * On one hand, the paragraph has to be scanned for same-level-runs, but
+     * on the other hand, this saves another loop to reset these codes,
+     * or saves making and modifying a copy of dirProps[].
+     *
+     *
+     * Note that (Pn) and (Xn) changed significantly from version 4 of the Bidi algorithm.
+     *
+     *
+     * Handling the stack of explicit levels (Xn):
+     *
+     * With the Bidi stack of explicit levels,
+     * as pushed with each LRE, RLE, LRO, and RLO and popped with each PDF,
+     * the explicit level must never exceed MAX_EXPLICIT_LEVEL==61.
+     *
+     * In order to have a correct push-pop semantics even in the case of overflows,
+     * there are two overflow counters:
+     * - countOver60 is incremented with each LRx at level 60
+     * - from level 60, one RLx increases the level to 61
+     * - countOver61 is incremented with each LRx and RLx at level 61
+     *
+     * Popping levels with PDF must work in the opposite order so that level 61
+     * is correct at the correct point. Underflows (too many PDFs) must be checked.
+     *
+     * This implementation assumes that MAX_EXPLICIT_LEVEL is odd.
+     */
+    private byte resolveExplicitLevels() {
+        int i = 0;
+        byte dirProp;
+        byte level = GetParaLevelAt(0);
+
+        byte dirct;
+        int paraIndex = 0;
+
+        /* determine if the text is mixed-directional or single-directional */
+        dirct = directionFromFlags();
+
+        /* we may not need to resolve any explicit levels, but for multiple
+           paragraphs we want to loop on all chars to set the para boundaries */
+        if ((dirct != MIXED) && (paraCount == 1)) {
+            /* not mixed directionality: levels don't matter - trailingWSStart will be 0 */
+        } else if ((paraCount == 1) &&
+                   ((flags & MASK_EXPLICIT) == 0 ||
+                    reorderingMode > REORDER_LAST_LOGICAL_TO_VISUAL)) {
+            /* mixed, but all characters are at the same embedding level */
+            /* or we are in "inverse Bidi" */
+            /* and we don't have contextual multiple paragraphs with some B char */
+            /* set all levels to the paragraph level */
+            for (i = 0; i < length; ++i) {
+                levels[i] = level;
+            }
+        } else {
+            /* continue to perform (Xn) */
+
+            /* (X1) level is set for all codes, embeddingLevel keeps track of the push/pop operations */
+            /* both variables may carry the LEVEL_OVERRIDE flag to indicate the override status */
+            byte embeddingLevel = level;
+            byte newLevel;
+            byte stackTop = 0;
+
+            byte[] stack = new byte[MAX_EXPLICIT_LEVEL];    /* we never push anything >=MAX_EXPLICIT_LEVEL */
+            int countOver60 = 0;
+            int countOver61 = 0;  /* count overflows of explicit levels */
+
+            /* recalculate the flags */
+            flags = 0;
+
+            for (i = 0; i < length; ++i) {
+                dirProp = NoContextRTL(dirProps[i]);
+                switch(dirProp) {
+                case LRE:
+                case LRO:
+                    /* (X3, X5) */
+                    newLevel = (byte)((embeddingLevel+2) & ~(LEVEL_OVERRIDE | 1)); /* least greater even level */
+                    if (newLevel <= MAX_EXPLICIT_LEVEL) {
+                        stack[stackTop] = embeddingLevel;
+                        ++stackTop;
+                        embeddingLevel = newLevel;
+                        if (dirProp == LRO) {
+                            embeddingLevel |= LEVEL_OVERRIDE;
+                        }
+                        /* we don't need to set LEVEL_OVERRIDE off for LRE
+                           since this has already been done for newLevel which is
+                           the source for embeddingLevel.
+                         */
+                    } else if ((embeddingLevel & ~LEVEL_OVERRIDE) == MAX_EXPLICIT_LEVEL) {
+                        ++countOver61;
+                    } else /* (embeddingLevel & ~LEVEL_OVERRIDE) == MAX_EXPLICIT_LEVEL-1 */ {
+                        ++countOver60;
+                    }
+                    flags |= DirPropFlag(BN);
+                    break;
+                case RLE:
+                case RLO:
+                    /* (X2, X4) */
+                    newLevel=(byte)(((embeddingLevel & ~LEVEL_OVERRIDE) + 1) | 1); /* least greater odd level */
+                    if (newLevel<=MAX_EXPLICIT_LEVEL) {
+                        stack[stackTop] = embeddingLevel;
+                        ++stackTop;
+                        embeddingLevel = newLevel;
+                        if (dirProp == RLO) {
+                            embeddingLevel |= LEVEL_OVERRIDE;
+                        }
+                        /* we don't need to set LEVEL_OVERRIDE off for RLE
+                           since this has already been done for newLevel which is
+                           the source for embeddingLevel.
+                         */
+                    } else {
+                        ++countOver61;
+                    }
+                    flags |= DirPropFlag(BN);
+                    break;
+                case PDF:
+                    /* (X7) */
+                    /* handle all the overflow cases first */
+                    if (countOver61 > 0) {
+                        --countOver61;
+                    } else if (countOver60 > 0 && (embeddingLevel & ~LEVEL_OVERRIDE) != MAX_EXPLICIT_LEVEL) {
+                        /* handle LRx overflows from level 60 */
+                        --countOver60;
+                    } else if (stackTop > 0) {
+                        /* this is the pop operation; it also pops level 61 while countOver60>0 */
+                        --stackTop;
+                        embeddingLevel = stack[stackTop];
+                    /* } else { (underflow) */
+                    }
+                    flags |= DirPropFlag(BN);
+                    break;
+                case B:
+                    stackTop = 0;
+                    countOver60 = 0;
+                    countOver61 = 0;
+                    level = GetParaLevelAt(i);
+                    if ((i + 1) < length) {
+                        embeddingLevel = GetParaLevelAt(i+1);
+                        if (!((text[i] == CR) && (text[i + 1] == LF))) {
+                            paras[paraIndex++] = i+1;
+                        }
+                    }
+                    flags |= DirPropFlag(B);
+                    break;
+                case BN:
+                    /* BN, LRE, RLE, and PDF are supposed to be removed (X9) */
+                    /* they will get their levels set correctly in adjustWSLevels() */
+                    flags |= DirPropFlag(BN);
+                    break;
+                default:
+                    /* all other types get the "real" level */
+                    if (level != embeddingLevel) {
+                        level = embeddingLevel;
+                        if ((level & LEVEL_OVERRIDE) != 0) {
+                            flags |= DirPropFlagO(level) | DirPropFlagMultiRuns;
+                        } else {
+                            flags |= DirPropFlagE(level) | DirPropFlagMultiRuns;
+                        }
+                    }
+                    if ((level & LEVEL_OVERRIDE) == 0) {
+                        flags |= DirPropFlag(dirProp);
+                    }
+                    break;
+                }
+
+                /*
+                 * We need to set reasonable levels even on BN codes and
+                 * explicit codes because we will later look at same-level runs (X10).
+                 */
+                levels[i] = level;
+            }
+            if ((flags & MASK_EMBEDDING) != 0) {
+                flags |= DirPropFlagLR(paraLevel);
+            }
+            if (orderParagraphsLTR && (flags & DirPropFlag(B)) != 0) {
+                flags |= DirPropFlag(L);
+            }
+
+            /* subsequently, ignore the explicit codes and BN (X9) */
+
+            /* again, determine if the text is mixed-directional or single-directional */
+            dirct = directionFromFlags();
+        }
+
+        return dirct;
+    }
+
+    /*
+     * Use a pre-specified embedding levels array:
+     *
+     * Adjust the directional properties for overrides (->LEVEL_OVERRIDE),
+     * ignore all explicit codes (X9),
+     * and check all the preset levels.
+     *
+     * Recalculate the flags to have them reflect the real properties
+     * after taking the explicit embeddings into account.
+     */
+    private byte checkExplicitLevels() {
+        byte dirProp;
+        int i;
+        this.flags = 0;     /* collect all directionalities in the text */
+        byte level;
+        int paraIndex = 0;
+
+        for (i = 0; i < length; ++i) {
+            level = levels[i];
+            dirProp = NoContextRTL(dirProps[i]);
+            if ((level & LEVEL_OVERRIDE) != 0) {
+                /* keep the override flag in levels[i] but adjust the flags */
+                level &= ~LEVEL_OVERRIDE;     /* make the range check below simpler */
+                flags |= DirPropFlagO(level);
+            } else {
+                /* set the flags */
+                flags |= DirPropFlagE(level) | DirPropFlag(dirProp);
+            }
+            if ((level < GetParaLevelAt(i) &&
+                    !((0 == level) && (dirProp == B))) ||
+                    (MAX_EXPLICIT_LEVEL <level)) {
+                /* level out of bounds */
+                throw new IllegalArgumentException("level " + level +
+                                                   " out of bounds at " + i);
+            }
+            if ((dirProp == B) && ((i + 1) < length)) {
+                if (!((text[i] == CR) && (text[i + 1] == LF))) {
+                    paras[paraIndex++] = i + 1;
+                }
+            }
+        }
+        if ((flags&MASK_EMBEDDING) != 0) {
+            flags |= DirPropFlagLR(paraLevel);
+        }
+
+        /* determine if the text is mixed-directional or single-directional */
+        return directionFromFlags();
+    }
+
+    /*********************************************************************/
+    /* The Properties state machine table                                */
+    /*********************************************************************/
+    /*                                                                   */
+    /* All table cells are 8 bits:                                       */
+    /*      bits 0..4:  next state                                       */
+    /*      bits 5..7:  action to perform (if > 0)                       */
+    /*                                                                   */
+    /* Cells may be of format "n" where n represents the next state      */
+    /* (except for the rightmost column).                                */
+    /* Cells may also be of format "_(x,y)" where x represents an action */
+    /* to perform and y represents the next state.                       */
+    /*                                                                   */
+    /*********************************************************************/
+    /* Definitions and type for properties state tables                  */
+    /*********************************************************************/
+    private static final int IMPTABPROPS_COLUMNS = 14;
+    private static final int IMPTABPROPS_RES = IMPTABPROPS_COLUMNS - 1;
+    private static short GetStateProps(short cell) {
+        return (short)(cell & 0x1f);
+    }
+    private static short GetActionProps(short cell) {
+        return (short)(cell >> 5);
+    }
+
+    private static final short groupProp[] =          /* dirProp regrouped */
+    {
+        /*  L   R   EN  ES  ET  AN  CS  B   S   WS  ON  LRE LRO AL  RLE RLO PDF NSM BN  */
+        0,  1,  2,  7,  8,  3,  9,  6,  5,  4,  4,  10, 10, 12, 10, 10, 10, 11, 10
+    };
+    private static final short _L  = 0;
+    private static final short _R  = 1;
+    private static final short _EN = 2;
+    private static final short _AN = 3;
+    private static final short _ON = 4;
+    private static final short _S  = 5;
+    private static final short _B  = 6; /* reduced dirProp */
+
+    /*********************************************************************/
+    /*                                                                   */
+    /*      PROPERTIES  STATE  TABLE                                     */
+    /*                                                                   */
+    /* In table impTabProps,                                             */
+    /*      - the ON column regroups ON and WS                           */
+    /*      - the BN column regroups BN, LRE, RLE, LRO, RLO, PDF         */
+    /*      - the Res column is the reduced property assigned to a run   */
+    /*                                                                   */
+    /* Action 1: process current run1, init new run1                     */
+    /*        2: init new run2                                           */
+    /*        3: process run1, process run2, init new run1               */
+    /*        4: process run1, set run1=run2, init new run2              */
+    /*                                                                   */
+    /* Notes:                                                            */
+    /*  1) This table is used in resolveImplicitLevels().                */
+    /*  2) This table triggers actions when there is a change in the Bidi*/
+    /*     property of incoming characters (action 1).                   */
+    /*  3) Most such property sequences are processed immediately (in    */
+    /*     fact, passed to processPropertySeq().                         */
+    /*  4) However, numbers are assembled as one sequence. This means    */
+    /*     that undefined situations (like CS following digits, until    */
+    /*     it is known if the next char will be a digit) are held until  */
+    /*     following chars define them.                                  */
+    /*     Example: digits followed by CS, then comes another CS or ON;  */
+    /*              the digits will be processed, then the CS assigned   */
+    /*              as the start of an ON sequence (action 3).           */
+    /*  5) There are cases where more than one sequence must be          */
+    /*     processed, for instance digits followed by CS followed by L:  */
+    /*     the digits must be processed as one sequence, and the CS      */
+    /*     must be processed as an ON sequence, all this before starting */
+    /*     assembling chars for the opening L sequence.                  */
+    /*                                                                   */
+    /*                                                                   */
+    private static final short impTabProps[][] =
+    {
+/*                        L,     R,    EN,    AN,    ON,     S,     B,    ES,    ET,    CS,    BN,   NSM,    AL,  Res */
+/* 0 Init        */ {     1,     2,     4,     5,     7,    15,    17,     7,     9,     7,     0,     7,     3,  _ON },
+/* 1 L           */ {     1,  32+2,  32+4,  32+5,  32+7, 32+15, 32+17,  32+7,  32+9,  32+7,     1,     1,  32+3,   _L },
+/* 2 R           */ {  32+1,     2,  32+4,  32+5,  32+7, 32+15, 32+17,  32+7,  32+9,  32+7,     2,     2,  32+3,   _R },
+/* 3 AL          */ {  32+1,  32+2,  32+6,  32+6,  32+8, 32+16, 32+17,  32+8,  32+8,  32+8,     3,     3,     3,   _R },
+/* 4 EN          */ {  32+1,  32+2,     4,  32+5,  32+7, 32+15, 32+17, 64+10,    11, 64+10,     4,     4,  32+3,  _EN },
+/* 5 AN          */ {  32+1,  32+2,  32+4,     5,  32+7, 32+15, 32+17,  32+7,  32+9, 64+12,     5,     5,  32+3,  _AN },
+/* 6 AL:EN/AN    */ {  32+1,  32+2,     6,     6,  32+8, 32+16, 32+17,  32+8,  32+8, 64+13,     6,     6,  32+3,  _AN },
+/* 7 ON          */ {  32+1,  32+2,  32+4,  32+5,     7, 32+15, 32+17,     7, 64+14,     7,     7,     7,  32+3,  _ON },
+/* 8 AL:ON       */ {  32+1,  32+2,  32+6,  32+6,     8, 32+16, 32+17,     8,     8,     8,     8,     8,  32+3,  _ON },
+/* 9 ET          */ {  32+1,  32+2,     4,  32+5,     7, 32+15, 32+17,     7,     9,     7,     9,     9,  32+3,  _ON },
+/*10 EN+ES/CS    */ {  96+1,  96+2,     4,  96+5, 128+7, 96+15, 96+17, 128+7,128+14, 128+7,    10, 128+7,  96+3,  _EN },
+/*11 EN+ET       */ {  32+1,  32+2,     4,  32+5,  32+7, 32+15, 32+17,  32+7,    11,  32+7,    11,    11,  32+3,  _EN },
+/*12 AN+CS       */ {  96+1,  96+2,  96+4,     5, 128+7, 96+15, 96+17, 128+7,128+14, 128+7,    12, 128+7,  96+3,  _AN },
+/*13 AL:EN/AN+CS */ {  96+1,  96+2,     6,     6, 128+8, 96+16, 96+17, 128+8, 128+8, 128+8,    13, 128+8,  96+3,  _AN },
+/*14 ON+ET       */ {  32+1,  32+2, 128+4,  32+5,     7, 32+15, 32+17,     7,    14,     7,    14,    14,  32+3,  _ON },
+/*15 S           */ {  32+1,  32+2,  32+4,  32+5,  32+7,    15, 32+17,  32+7,  32+9,  32+7,    15,  32+7,  32+3,   _S },
+/*16 AL:S        */ {  32+1,  32+2,  32+6,  32+6,  32+8,    16, 32+17,  32+8,  32+8,  32+8,    16,  32+8,  32+3,   _S },
+/*17 B           */ {  32+1,  32+2,  32+4,  32+5,  32+7, 32+15,    17,  32+7,  32+9,  32+7,    17,  32+7,  32+3,   _B }
+    };
+
+    /*********************************************************************/
+    /* The levels state machine tables                                   */
+    /*********************************************************************/
+    /*                                                                   */
+    /* All table cells are 8 bits:                                       */
+    /*      bits 0..3:  next state                                       */
+    /*      bits 4..7:  action to perform (if > 0)                       */
+    /*                                                                   */
+    /* Cells may be of format "n" where n represents the next state      */
+    /* (except for the rightmost column).                                */
+    /* Cells may also be of format "_(x,y)" where x represents an action */
+    /* to perform and y represents the next state.                       */
+    /*                                                                   */
+    /* This format limits each table to 16 states each and to 15 actions.*/
+    /*                                                                   */
+    /*********************************************************************/
+    /* Definitions and type for levels state tables                      */
+    /*********************************************************************/
+    private static final int IMPTABLEVELS_COLUMNS = _B + 2;
+    private static final int IMPTABLEVELS_RES = IMPTABLEVELS_COLUMNS - 1;
+    private static short GetState(byte cell) { return (short)(cell & 0x0f); }
+    private static short GetAction(byte cell) { return (short)(cell >> 4); }
+
+    private static class ImpTabPair {
+        byte[][][] imptab;
+        short[][] impact;
+
+        ImpTabPair(byte[][] table1, byte[][] table2,
+                   short[] act1, short[] act2) {
+            imptab = new byte[][][] {table1, table2};
+            impact = new short[][] {act1, act2};
+        }
+    }
+
+    /*********************************************************************/
+    /*                                                                   */
+    /*      LEVELS  STATE  TABLES                                        */
+    /*                                                                   */
+    /* In all levels state tables,                                       */
+    /*      - state 0 is the initial state                               */
+    /*      - the Res column is the increment to add to the text level   */
+    /*        for this property sequence.                                */
+    /*                                                                   */
+    /* The impact arrays for each table of a pair map the local action   */
+    /* numbers of the table to the total list of actions. For instance,  */
+    /* action 2 in a given table corresponds to the action number which  */
+    /* appears in entry [2] of the impact array for that table.          */
+    /* The first entry of all impact arrays must be 0.                   */
+    /*                                                                   */
+    /* Action 1: init conditional sequence                               */
+    /*        2: prepend conditional sequence to current sequence        */
+    /*        3: set ON sequence to new level - 1                        */
+    /*        4: init EN/AN/ON sequence                                  */
+    /*        5: fix EN/AN/ON sequence followed by R                     */
+    /*        6: set previous level sequence to level 2                  */
+    /*                                                                   */
+    /* Notes:                                                            */
+    /*  1) These tables are used in processPropertySeq(). The input      */
+    /*     is property sequences as determined by resolveImplicitLevels. */
+    /*  2) Most such property sequences are processed immediately        */
+    /*     (levels are assigned).                                        */
+    /*  3) However, some sequences cannot be assigned a final level till */
+    /*     one or more following sequences are received. For instance,   */
+    /*     ON following an R sequence within an even-level paragraph.    */
+    /*     If the following sequence is R, the ON sequence will be       */
+    /*     assigned basic run level+1, and so will the R sequence.       */
+    /*  4) S is generally handled like ON, since its level will be fixed */
+    /*     to paragraph level in adjustWSLevels().                       */
+    /*                                                                   */
+
+    private static final byte impTabL_DEFAULT[][] = /* Even paragraph level */
+        /*  In this table, conditional sequences receive the higher possible level
+            until proven otherwise.
+        */
+    {
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,     1,     0,     2,     0,     0,     0,  0 },
+        /* 1 : R          */ {     0,     1,     3,     3,  0x14,  0x14,     0,  1 },
+        /* 2 : AN         */ {     0,     1,     0,     2,  0x15,  0x15,     0,  2 },
+        /* 3 : R+EN/AN    */ {     0,     1,     3,     3,  0x14,  0x14,     0,  2 },
+        /* 4 : R+ON       */ {  0x20,     1,     3,     3,     4,     4,  0x20,  1 },
+        /* 5 : AN+ON      */ {  0x20,     1,  0x20,     2,     5,     5,  0x20,  1 }
+    };
+
+    private static final byte impTabR_DEFAULT[][] = /* Odd  paragraph level */
+        /*  In this table, conditional sequences receive the lower possible level
+            until proven otherwise.
+        */
+    {
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     1,     0,     2,     2,     0,     0,     0,  0 },
+        /* 1 : L          */ {     1,     0,     1,     3,  0x14,  0x14,     0,  1 },
+        /* 2 : EN/AN      */ {     1,     0,     2,     2,     0,     0,     0,  1 },
+        /* 3 : L+AN       */ {     1,     0,     1,     3,     5,     5,     0,  1 },
+        /* 4 : L+ON       */ {  0x21,     0,  0x21,     3,     4,     4,     0,  0 },
+        /* 5 : L+AN+ON    */ {     1,     0,     1,     3,     5,     5,     0,  0 }
+    };
+
+    private static final short[] impAct0 = {0,1,2,3,4,5,6};
+
+    private static final ImpTabPair impTab_DEFAULT = new ImpTabPair(
+            impTabL_DEFAULT, impTabR_DEFAULT, impAct0, impAct0);
+
+    private static final byte impTabL_NUMBERS_SPECIAL[][] = { /* Even paragraph level */
+        /* In this table, conditional sequences receive the higher possible
+           level until proven otherwise.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,     2,     1,     1,     0,     0,     0,  0 },
+        /* 1 : L+EN/AN    */ {     0,     2,     1,     1,     0,     0,     0,  2 },
+        /* 2 : R          */ {     0,     2,     4,     4,  0x13,     0,     0,  1 },
+        /* 3 : R+ON       */ {  0x20,     2,     4,     4,     3,     3,  0x20,  1 },
+        /* 4 : R+EN/AN    */ {     0,     2,     4,     4,  0x13,  0x13,     0,  2 }
+    };
+    private static final ImpTabPair impTab_NUMBERS_SPECIAL = new ImpTabPair(
+            impTabL_NUMBERS_SPECIAL, impTabR_DEFAULT, impAct0, impAct0);
+
+    private static final byte impTabL_GROUP_NUMBERS_WITH_R[][] = {
+        /* In this table, EN/AN+ON sequences receive levels as if associated with R
+           until proven that there is L or sor/eor on both sides. AN is handled like EN.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 init         */ {     0,     3,  0x11,  0x11,     0,     0,     0,  0 },
+        /* 1 EN/AN        */ {  0x20,     3,     1,     1,     2,  0x20,  0x20,  2 },
+        /* 2 EN/AN+ON     */ {  0x20,     3,     1,     1,     2,  0x20,  0x20,  1 },
+        /* 3 R            */ {     0,     3,     5,     5,  0x14,     0,     0,  1 },
+        /* 4 R+ON         */ {  0x20,     3,     5,     5,     4,  0x20,  0x20,  1 },
+        /* 5 R+EN/AN      */ {     0,     3,     5,     5,  0x14,     0,     0,  2 }
+    };
+    private static final byte impTabR_GROUP_NUMBERS_WITH_R[][] = {
+        /*  In this table, EN/AN+ON sequences receive levels as if associated with R
+            until proven that there is L on both sides. AN is handled like EN.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 init         */ {     2,     0,     1,     1,     0,     0,     0,  0 },
+        /* 1 EN/AN        */ {     2,     0,     1,     1,     0,     0,     0,  1 },
+        /* 2 L            */ {     2,     0,  0x14,  0x14,  0x13,     0,     0,  1 },
+        /* 3 L+ON         */ {  0x22,     0,     4,     4,     3,     0,     0,  0 },
+        /* 4 L+EN/AN      */ {  0x22,     0,     4,     4,     3,     0,     0,  1 }
+    };
+    private static final ImpTabPair impTab_GROUP_NUMBERS_WITH_R = new
+            ImpTabPair(impTabL_GROUP_NUMBERS_WITH_R,
+                       impTabR_GROUP_NUMBERS_WITH_R, impAct0, impAct0);
+
+    private static final byte impTabL_INVERSE_NUMBERS_AS_L[][] = {
+        /* This table is identical to the Default LTR table except that EN and AN
+           are handled like L.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,     1,     0,     0,     0,     0,     0,  0 },
+        /* 1 : R          */ {     0,     1,     0,     0,  0x14,  0x14,     0,  1 },
+        /* 2 : AN         */ {     0,     1,     0,     0,  0x15,  0x15,     0,  2 },
+        /* 3 : R+EN/AN    */ {     0,     1,     0,     0,  0x14,  0x14,     0,  2 },
+        /* 4 : R+ON       */ {  0x20,     1,  0x20,  0x20,     4,     4,  0x20,  1 },
+        /* 5 : AN+ON      */ {  0x20,     1,  0x20,  0x20,     5,     5,  0x20,  1 }
+    };
+    private static final byte impTabR_INVERSE_NUMBERS_AS_L[][] = {
+        /* This table is identical to the Default RTL table except that EN and AN
+           are handled like L.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     1,     0,     1,     1,     0,     0,     0,  0 },
+        /* 1 : L          */ {     1,     0,     1,     1,  0x14,  0x14,     0,  1 },
+        /* 2 : EN/AN      */ {     1,     0,     1,     1,     0,     0,     0,  1 },
+        /* 3 : L+AN       */ {     1,     0,     1,     1,     5,     5,     0,  1 },
+        /* 4 : L+ON       */ {  0x21,     0,  0x21,  0x21,     4,     4,     0,  0 },
+        /* 5 : L+AN+ON    */ {     1,     0,     1,     1,     5,     5,     0,  0 }
+    };
+    private static final ImpTabPair impTab_INVERSE_NUMBERS_AS_L = new ImpTabPair
+            (impTabL_INVERSE_NUMBERS_AS_L, impTabR_INVERSE_NUMBERS_AS_L,
+             impAct0, impAct0);
+
+    private static final byte impTabR_INVERSE_LIKE_DIRECT[][] = {  /* Odd  paragraph level */
+        /*  In this table, conditional sequences receive the lower possible level
+            until proven otherwise.
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     1,     0,     2,     2,     0,     0,     0,  0 },
+        /* 1 : L          */ {     1,     0,     1,     2,  0x13,  0x13,     0,  1 },
+        /* 2 : EN/AN      */ {     1,     0,     2,     2,     0,     0,     0,  1 },
+        /* 3 : L+ON       */ {  0x21,  0x30,     6,     4,     3,     3,  0x30,  0 },
+        /* 4 : L+ON+AN    */ {  0x21,  0x30,     6,     4,     5,     5,  0x30,  3 },
+        /* 5 : L+AN+ON    */ {  0x21,  0x30,     6,     4,     5,     5,  0x30,  2 },
+        /* 6 : L+ON+EN    */ {  0x21,  0x30,     6,     4,     3,     3,  0x30,  1 }
+    };
+    private static final short[] impAct1 = {0,1,11,12};
+    private static final ImpTabPair impTab_INVERSE_LIKE_DIRECT = new ImpTabPair(
+            impTabL_DEFAULT, impTabR_INVERSE_LIKE_DIRECT, impAct0, impAct1);
+
+    private static final byte impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS[][] = {
+        /* The case handled in this table is (visually):  R EN L
+         */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,  0x63,     0,     1,     0,     0,     0,  0 },
+        /* 1 : L+AN       */ {     0,  0x63,     0,     1,  0x12,  0x30,     0,  4 },
+        /* 2 : L+AN+ON    */ {  0x20,  0x63,  0x20,     1,     2,  0x30,  0x20,  3 },
+        /* 3 : R          */ {     0,  0x63,  0x55,  0x56,  0x14,  0x30,     0,  3 },
+        /* 4 : R+ON       */ {  0x30,  0x43,  0x55,  0x56,     4,  0x30,  0x30,  3 },
+        /* 5 : R+EN       */ {  0x30,  0x43,     5,  0x56,  0x14,  0x30,  0x30,  4 },
+        /* 6 : R+AN       */ {  0x30,  0x43,  0x55,     6,  0x14,  0x30,  0x30,  4 }
+    };
+    private static final byte impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS[][] = {
+        /* The cases handled in this table are (visually):  R EN L
+                                                            R L AN L
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {  0x13,     0,     1,     1,     0,     0,     0,  0 },
+        /* 1 : R+EN/AN    */ {  0x23,     0,     1,     1,     2,  0x40,     0,  1 },
+        /* 2 : R+EN/AN+ON */ {  0x23,     0,     1,     1,     2,  0x40,     0,  0 },
+        /* 3 : L          */ {    3 ,     0,     3,  0x36,  0x14,  0x40,     0,  1 },
+        /* 4 : L+ON       */ {  0x53,  0x40,     5,  0x36,     4,  0x40,  0x40,  0 },
+        /* 5 : L+ON+EN    */ {  0x53,  0x40,     5,  0x36,     4,  0x40,  0x40,  1 },
+        /* 6 : L+AN       */ {  0x53,  0x40,     6,     6,     4,  0x40,  0x40,  3 }
+    };
+    private static final short impAct2[] = {0,1,7,8,9,10};
+    private static final ImpTabPair impTab_INVERSE_LIKE_DIRECT_WITH_MARKS =
+            new ImpTabPair(impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS,
+                           impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS, impAct0, impAct2);
+
+    private static final ImpTabPair impTab_INVERSE_FOR_NUMBERS_SPECIAL = new ImpTabPair(
+            impTabL_NUMBERS_SPECIAL, impTabR_INVERSE_LIKE_DIRECT, impAct0, impAct1);
+
+    private static final byte impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS[][] = {
+        /*  The case handled in this table is (visually):  R EN L
+        */
+        /*                         L,     R,    EN,    AN,    ON,     S,     B, Res */
+        /* 0 : init       */ {     0,  0x62,     1,     1,     0,     0,     0,  0 },
+        /* 1 : L+EN/AN    */ {     0,  0x62,     1,     1,     0,  0x30,     0,  4 },
+        /* 2 : R          */ {     0,  0x62,  0x54,  0x54,  0x13,  0x30,     0,  3 },
+        /* 3 : R+ON       */ {  0x30,  0x42,  0x54,  0x54,     3,  0x30,  0x30,  3 },
+        /* 4 : R+EN/AN    */ {  0x30,  0x42,     4,     4,  0x13,  0x30,  0x30,  4 }
+    };
+    private static final ImpTabPair impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS = new
+            ImpTabPair(impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS,
+                       impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS, impAct0, impAct2);
+
+    private class LevState {
+        byte[][] impTab;                /* level table pointer          */
+        short[] impAct;                 /* action map array             */
+        int startON;                    /* start of ON sequence         */
+        int startL2EN;                  /* start of level 2 sequence    */
+        int lastStrongRTL;              /* index of last found R or AL  */
+        short state;                    /* current state                */
+        byte runLevel;                  /* run level before implicit solving */
+    }
+
+    /*------------------------------------------------------------------------*/
+
+    static final int FIRSTALLOC = 10;
+    /*
+     *  param pos:     position where to insert
+     *  param flag:    one of LRM_BEFORE, LRM_AFTER, RLM_BEFORE, RLM_AFTER
+     */
+    private void addPoint(int pos, int flag)
+    {
+        Point point = new Point();
+
+        int len = insertPoints.points.length;
+        if (len == 0) {
+            insertPoints.points = new Point[FIRSTALLOC];
+            len = FIRSTALLOC;
+        }
+        if (insertPoints.size >= len) { /* no room for new point */
+            Point[] savePoints = insertPoints.points;
+            insertPoints.points = new Point[len * 2];
+            System.arraycopy(savePoints, 0, insertPoints.points, 0, len);
+        }
+        point.pos = pos;
+        point.flag = flag;
+        insertPoints.points[insertPoints.size] = point;
+        insertPoints.size++;
+    }
+
+    /* perform rules (Wn), (Nn), and (In) on a run of the text ------------------ */
+
+    /*
+     * This implementation of the (Wn) rules applies all rules in one pass.
+     * In order to do so, it needs a look-ahead of typically 1 character
+     * (except for W5: sequences of ET) and keeps track of changes
+     * in a rule Wp that affect a later Wq (p<q).
+     *
+     * The (Nn) and (In) rules are also performed in that same single loop,
+     * but effectively one iteration behind for white space.
+     *
+     * Since all implicit rules are performed in one step, it is not necessary
+     * to actually store the intermediate directional properties in dirProps[].
+     */
+
+    private void processPropertySeq(LevState levState, short _prop,
+            int start, int limit) {
+        byte cell;
+        byte[][] impTab = levState.impTab;
+        short[] impAct = levState.impAct;
+        short oldStateSeq,actionSeq;
+        byte level, addLevel;
+        int start0, k;
+
+        start0 = start;                 /* save original start position */
+        oldStateSeq = levState.state;
+        cell = impTab[oldStateSeq][_prop];
+        levState.state = GetState(cell);        /* isolate the new state */
+        actionSeq = impAct[GetAction(cell)];    /* isolate the action */
+        addLevel = (byte)impTab[levState.state][IMPTABLEVELS_RES];
+
+        if (actionSeq != 0) {
+            switch (actionSeq) {
+            case 1:                     /* init ON seq */
+                levState.startON = start0;
+                break;
+
+            case 2:                     /* prepend ON seq to current seq */
+                start = levState.startON;
+                break;
+
+            case 3:                     /* L or S after possible relevant EN/AN */
+                /* check if we had EN after R/AL */
+                if (levState.startL2EN >= 0) {
+                    addPoint(levState.startL2EN, LRM_BEFORE);
+                }
+                levState.startL2EN = -1;  /* not within previous if since could also be -2 */
+                /* check if we had any relevant EN/AN after R/AL */
+                if ((insertPoints.points.length == 0) ||
+                        (insertPoints.size <= insertPoints.confirmed)) {
+                    /* nothing, just clean up */
+                    levState.lastStrongRTL = -1;
+                    /* check if we have a pending conditional segment */
+                    level = (byte)impTab[oldStateSeq][IMPTABLEVELS_RES];
+                    if ((level & 1) != 0 && levState.startON > 0) { /* after ON */
+                        start = levState.startON;   /* reset to basic run level */
+                    }
+                    if (_prop == _S) {              /* add LRM before S */
+                        addPoint(start0, LRM_BEFORE);
+                        insertPoints.confirmed = insertPoints.size;
+                    }
+                    break;
+                }
+                /* reset previous RTL cont to level for LTR text */
+                for (k = levState.lastStrongRTL + 1; k < start0; k++) {
+                    /* reset odd level, leave runLevel+2 as is */
+                    levels[k] = (byte)((levels[k] - 2) & ~1);
+                }
+                /* mark insert points as confirmed */
+                insertPoints.confirmed = insertPoints.size;
+                levState.lastStrongRTL = -1;
+                if (_prop == _S) {           /* add LRM before S */
+                    addPoint(start0, LRM_BEFORE);
+                    insertPoints.confirmed = insertPoints.size;
+                }
+                break;
+
+            case 4:                     /* R/AL after possible relevant EN/AN */
+                /* just clean up */
+                if (insertPoints.points.length > 0)
+                    /* remove all non confirmed insert points */
+                    insertPoints.size = insertPoints.confirmed;
+                levState.startON = -1;
+                levState.startL2EN = -1;
+                levState.lastStrongRTL = limit - 1;
+                break;
+
+            case 5:                     /* EN/AN after R/AL + possible cont */
+                /* check for real AN */
+                if ((_prop == _AN) && (NoContextRTL(dirProps[start0]) == AN) &&
+                (reorderingMode!=REORDER_INVERSE_FOR_NUMBERS_SPECIAL))
+                {
+                    /* real AN */
+                    if (levState.startL2EN == -1) { /* if no relevant EN already found */
+                        /* just note the righmost digit as a strong RTL */
+                        levState.lastStrongRTL = limit - 1;
+                        break;
+                    }
+                    if (levState.startL2EN >= 0)  { /* after EN, no AN */
+                        addPoint(levState.startL2EN, LRM_BEFORE);
+                        levState.startL2EN = -2;
+                    }
+                    /* note AN */
+                    addPoint(start0, LRM_BEFORE);
+                    break;
+                }
+                /* if first EN/AN after R/AL */
+                if (levState.startL2EN == -1) {
+                    levState.startL2EN = start0;
+                }
+                break;
+
+            case 6:                     /* note location of latest R/AL */
+                levState.lastStrongRTL = limit - 1;
+                levState.startON = -1;
+                break;
+
+            case 7:                     /* L after R+ON/EN/AN */
+                /* include possible adjacent number on the left */
+                for (k = start0-1; k >= 0 && ((levels[k] & 1) == 0); k--) {
+                }
+                if (k >= 0) {
+                    addPoint(k, RLM_BEFORE);    /* add RLM before */
+                    insertPoints.confirmed = insertPoints.size; /* confirm it */
+                }
+                levState.startON = start0;
+                break;
+
+            case 8:                     /* AN after L */
+                /* AN numbers between L text on both sides may be trouble. */
+                /* tentatively bracket with LRMs; will be confirmed if followed by L */
+                addPoint(start0, LRM_BEFORE);   /* add LRM before */
+                addPoint(start0, LRM_AFTER);    /* add LRM after  */
+                break;
+
+            case 9:                     /* R after L+ON/EN/AN */
+                /* false alert, infirm LRMs around previous AN */
+                insertPoints.size=insertPoints.confirmed;
+                if (_prop == _S) {          /* add RLM before S */
+                    addPoint(start0, RLM_BEFORE);
+                    insertPoints.confirmed = insertPoints.size;
+                }
+                break;
+
+            case 10:                    /* L after L+ON/AN */
+                level = (byte)(levState.runLevel + addLevel);
+                for (k=levState.startON; k < start0; k++) {
+                    if (levels[k] < level) {
+                        levels[k] = level;
+                    }
+                }
+                insertPoints.confirmed = insertPoints.size;   /* confirm inserts */
+                levState.startON = start0;
+                break;
+
+            case 11:                    /* L after L+ON+EN/AN/ON */
+                level = (byte)levState.runLevel;
+                for (k = start0-1; k >= levState.startON; k--) {
+                    if (levels[k] == level+3) {
+                        while (levels[k] == level+3) {
+                            levels[k--] -= 2;
+                        }
+                        while (levels[k] == level) {
+                            k--;
+                        }
+                    }
+                    if (levels[k] == level+2) {
+                        levels[k] = level;
+                        continue;
+                    }
+                    levels[k] = (byte)(level+1);
+                }
+                break;
+
+            case 12:                    /* R after L+ON+EN/AN/ON */
+                level = (byte)(levState.runLevel+1);
+                for (k = start0-1; k >= levState.startON; k--) {
+                    if (levels[k] > level) {
+                        levels[k] -= 2;
+                    }
+                }
+                break;
+
+            default:                        /* we should never get here */
+                throw new IllegalStateException("Internal ICU error in processPropertySeq");
+            }
+        }
+        if ((addLevel) != 0 || (start < start0)) {
+            level = (byte)(levState.runLevel + addLevel);
+            for (k = start; k < limit; k++) {
+                levels[k] = level;
+            }
+        }
+    }
+
+    private void resolveImplicitLevels(int start, int limit, short sor, short eor)
+    {
+        LevState levState = new LevState();
+        int i, start1, start2;
+        short oldStateImp, stateImp, actionImp;
+        short gprop, resProp, cell;
+        boolean inverseRTL;
+        short nextStrongProp = R;
+        int nextStrongPos = -1;
+
+
+        /* check for RTL inverse Bidi mode */
+        /* FOOD FOR THOUGHT: in case of RTL inverse Bidi, it would make sense to
+         * loop on the text characters from end to start.
+         * This would need a different properties state table (at least different
+         * actions) and different levels state tables (maybe very similar to the
+         * LTR corresponding ones.
+         */
+        inverseRTL=((start<lastArabicPos) && ((GetParaLevelAt(start) & 1)>0) &&
+                    (reorderingMode==REORDER_INVERSE_LIKE_DIRECT  ||
+                     reorderingMode==REORDER_INVERSE_FOR_NUMBERS_SPECIAL));
+        /* initialize for levels state table */
+        levState.startL2EN = -1;        /* used for INVERSE_LIKE_DIRECT_WITH_MARKS */
+        levState.lastStrongRTL = -1;    /* used for INVERSE_LIKE_DIRECT_WITH_MARKS */
+        levState.state = 0;
+        levState.runLevel = levels[start];
+        levState.impTab = impTabPair.imptab[levState.runLevel & 1];
+        levState.impAct = impTabPair.impact[levState.runLevel & 1];
+        processPropertySeq(levState, (short)sor, start, start);
+        /* initialize for property state table */
+        if (dirProps[start] == NSM) {
+            stateImp = (short)(1 + sor);
+        } else {
+            stateImp = 0;
+        }
+        start1 = start;
+        start2 = 0;
+
+        for (i = start; i <= limit; i++) {
+            if (i >= limit) {
+                gprop = eor;
+            } else {
+                short prop, prop1;
+                prop = NoContextRTL(dirProps[i]);
+                if (inverseRTL) {
+                    if (prop == AL) {
+                        /* AL before EN does not make it AN */
+                        prop = R;
+                    } else if (prop == EN) {
+                        if (nextStrongPos <= i) {
+                            /* look for next strong char (L/R/AL) */
+                            int j;
+                            nextStrongProp = R;     /* set default */
+                            nextStrongPos = limit;
+                            for (j = i+1; j < limit; j++) {
+                                prop1 = NoContextRTL(dirProps[j]);
+                                if (prop1 == L || prop1 == R || prop1 == AL) {
+                                    nextStrongProp = prop1;
+                                    nextStrongPos = j;
+                                    break;
+                                }
+                            }
+                        }
+                        if (nextStrongProp == AL) {
+                            prop = AN;
+                        }
+                    }
+                }
+                gprop = groupProp[prop];
+            }
+            oldStateImp = stateImp;
+            cell = impTabProps[oldStateImp][gprop];
+            stateImp = GetStateProps(cell);     /* isolate the new state */
+            actionImp = GetActionProps(cell);   /* isolate the action */
+            if ((i == limit) && (actionImp == 0)) {
+                /* there is an unprocessed sequence if its property == eor   */
+                actionImp = 1;                  /* process the last sequence */
+            }
+            if (actionImp != 0) {
+                resProp = impTabProps[oldStateImp][IMPTABPROPS_RES];
+                switch (actionImp) {
+                case 1:             /* process current seq1, init new seq1 */
+                    processPropertySeq(levState, resProp, start1, i);
+                    start1 = i;
+                    break;
+                case 2:             /* init new seq2 */
+                    start2 = i;
+                    break;
+                case 3:             /* process seq1, process seq2, init new seq1 */
+                    processPropertySeq(levState, resProp, start1, start2);
+                    processPropertySeq(levState, _ON, start2, i);
+                    start1 = i;
+                    break;
+                case 4:             /* process seq1, set seq1=seq2, init new seq2 */
+                    processPropertySeq(levState, resProp, start1, start2);
+                    start1 = start2;
+                    start2 = i;
+                    break;
+                default:            /* we should never get here */
+                    throw new IllegalStateException("Internal ICU error in resolveImplicitLevels");
+                }
+            }
+        }
+        /* flush possible pending sequence, e.g. ON */
+        processPropertySeq(levState, (short)eor, limit, limit);
+    }
+
+    /* perform (L1) and (X9) ---------------------------------------------------- */
+
+    /*
+     * Reset the embedding levels for some non-graphic characters (L1).
+     * This method also sets appropriate levels for BN, and
+     * explicit embedding types that are supposed to have been removed
+     * from the paragraph in (X9).
+     */
+    private void adjustWSLevels() {
+        int i;
+
+        if ((flags & MASK_WS) != 0) {
+            int flag;
+            i = trailingWSStart;
+            while (i > 0) {
+                /* reset a sequence of WS/BN before eop and B/S to the paragraph paraLevel */
+                while (i > 0 && ((flag = DirPropFlagNC(dirProps[--i])) & MASK_WS) != 0) {
+                    if (orderParagraphsLTR && (flag & DirPropFlag(B)) != 0) {
+                        levels[i] = 0;
+                    } else {
+                        levels[i] = GetParaLevelAt(i);
+                    }
+                }
+
+                /* reset BN to the next character's paraLevel until B/S, which restarts above loop */
+                /* here, i+1 is guaranteed to be <length */
+                while (i > 0) {
+                    flag = DirPropFlagNC(dirProps[--i]);
+                    if ((flag & MASK_BN_EXPLICIT) != 0) {
+                        levels[i] = levels[i + 1];
+                    } else if (orderParagraphsLTR && (flag & DirPropFlag(B)) != 0) {
+                        levels[i] = 0;
+                        break;
+                    } else if ((flag & MASK_B_S) != 0){
+                        levels[i] = GetParaLevelAt(i);
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+    int Bidi_Min(int x, int y) {
+        return x < y ? x : y;
+    }
+
+    int Bidi_Abs(int x) {
+        return x >= 0 ? x : -x;
+    }
+
+    void setParaRunsOnly(char[] parmText, byte parmParaLevel) {
+        int[] visualMap;
+        String visualText;
+        int saveLength, saveTrailingWSStart;
+        byte[] saveLevels;
+        byte saveDirection;
+        int i, j, visualStart, logicalStart,
+            oldRunCount, runLength, addedRuns, insertRemove,
+            start, limit, step, indexOddBit, logicalPos,
+            index, index1;
+        int saveOptions;
+
+        reorderingMode = REORDER_DEFAULT;
+        int parmLength = parmText.length;
+        if (parmLength == 0) {
+            setPara(parmText, parmParaLevel, null);
+            reorderingMode = REORDER_RUNS_ONLY;
+            return;
+        }
+        /* obtain memory for mapping table and visual text */
+        saveOptions = reorderingOptions;
+        if ((saveOptions & OPTION_INSERT_MARKS) > 0) {
+            reorderingOptions &= ~OPTION_INSERT_MARKS;
+            reorderingOptions |= OPTION_REMOVE_CONTROLS;
+        }
+        parmParaLevel &= 1;             /* accept only 0 or 1 */
+        setPara(parmText, parmParaLevel, null);
+        /* we cannot access directly pBiDi->levels since it is not yet set if
+         * direction is not MIXED
+         */
+        saveLevels = new byte[this.length];
+        System.arraycopy(getLevels(), 0, saveLevels, 0, this.length);
+        saveTrailingWSStart = trailingWSStart;
+
+        /* FOOD FOR THOUGHT: instead of writing the visual text, we could use
+         * the visual map and the dirProps array to drive the second call
+         * to setPara (but must make provision for possible removal of
+         * Bidi controls.  Alternatively, only use the dirProps array via
+         * customized classifier callback.
+         */
+        visualText = writeReordered(DO_MIRRORING);
+        visualMap = getVisualMap();
+        this.reorderingOptions = saveOptions;
+        saveLength = this.length;
+        saveDirection=this.direction;
+
+        this.reorderingMode = REORDER_INVERSE_LIKE_DIRECT;
+        parmParaLevel ^= 1;
+        setPara(visualText, parmParaLevel, null);
+        BidiLine.getRuns(this);
+        /* check if some runs must be split, count how many splits */
+        addedRuns = 0;
+        oldRunCount = this.runCount;
+        visualStart = 0;
+        for (i = 0; i < oldRunCount; i++, visualStart += runLength) {
+            runLength = runs[i].limit - visualStart;
+            if (runLength < 2) {
+                continue;
+            }
+            logicalStart = runs[i].start;
+            for (j = logicalStart+1; j < logicalStart+runLength; j++) {
+                index = visualMap[j];
+                index1 = visualMap[j-1];
+                if ((Bidi_Abs(index-index1)!=1) || (saveLevels[index]!=saveLevels[index1])) {
+                    addedRuns++;
+                }
+            }
+        }
+        if (addedRuns > 0) {
+            getRunsMemory(oldRunCount + addedRuns);
+            if (runCount == 1) {
+                /* because we switch from UBiDi.simpleRuns to UBiDi.runs */
+                runsMemory[0] = runs[0];
+            } else {
+                System.arraycopy(runs, 0, runsMemory, 0, runCount);
+            }
+            runs = runsMemory;
+            runCount += addedRuns;
+            for (i = oldRunCount; i < runCount; i++) {
+                if (runs[i] == null) {
+                    runs[i] = new BidiRun(0, 0, (byte)0);
+                }
+            }
+        }
+        /* split runs which are not consecutive in source text */
+        int newI;
+        for (i = oldRunCount-1; i >= 0; i--) {
+            newI = i + addedRuns;
+            runLength = i==0 ? runs[0].limit :
+                               runs[i].limit - runs[i-1].limit;
+            logicalStart = runs[i].start;
+            indexOddBit = runs[i].level & 1;
+            if (runLength < 2) {
+                if (addedRuns > 0) {
+                    runs[newI].copyFrom(runs[i]);
+                }
+                logicalPos = visualMap[logicalStart];
+                runs[newI].start = logicalPos;
+                runs[newI].level = (byte)(saveLevels[logicalPos] ^ indexOddBit);
+                continue;
+            }
+            if (indexOddBit > 0) {
+                start = logicalStart;
+                limit = logicalStart + runLength - 1;
+                step = 1;
+            } else {
+                start = logicalStart + runLength - 1;
+                limit = logicalStart;
+                step = -1;
+            }
+            for (j = start; j != limit; j += step) {
+                index = visualMap[j];
+                index1 = visualMap[j+step];
+                if ((Bidi_Abs(index-index1)!=1) || (saveLevels[index]!=saveLevels[index1])) {
+                    logicalPos = Bidi_Min(visualMap[start], index);
+                    runs[newI].start = logicalPos;
+                    runs[newI].level = (byte)(saveLevels[logicalPos] ^ indexOddBit);
+                    runs[newI].limit = runs[i].limit;
+                    runs[i].limit -= Bidi_Abs(j - start) + 1;
+                    insertRemove = runs[i].insertRemove & (LRM_AFTER|RLM_AFTER);
+                    runs[newI].insertRemove = insertRemove;
+                    runs[i].insertRemove &= ~insertRemove;
+                    start = j + step;
+                    addedRuns--;
+                    newI--;
+                }
+            }
+            if (addedRuns > 0) {
+                runs[newI].copyFrom(runs[i]);
+            }
+            logicalPos = Bidi_Min(visualMap[start], visualMap[limit]);
+            runs[newI].start = logicalPos;
+            runs[newI].level = (byte)(saveLevels[logicalPos] ^ indexOddBit);
+        }
+
+//    cleanup1:
+        /* restore initial paraLevel */
+        this.paraLevel ^= 1;
+//    cleanup2:
+        /* restore real text */
+        this.text = parmText;
+        this.length = saveLength;
+        this.originalLength = parmLength;
+        this.direction=saveDirection;
+        this.levels = saveLevels;
+        this.trailingWSStart = saveTrailingWSStart;
+        /* free memory for mapping table and visual text */
+        visualMap = null;
+        visualText = null;
+        if (runCount > 1) {
+            this.direction = MIXED;
+        }
+//    cleanup3:
+        this.reorderingMode = REORDER_RUNS_ONLY;
+    }
+
+    /**
+     * Perform the Unicode Bidi algorithm. It is defined in the
+     * <a href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9</a>,
+     * version 13,
+     * also described in The Unicode Standard, Version 4.0 .<p>
+     *
+     * This method takes a piece of plain text containing one or more paragraphs,
+     * with or without externally specified embedding levels from <i>styled</i>
+     * text and computes the left-right-directionality of each character.<p>
+     *
+     * If the entire text is all of the same directionality, then
+     * the method may not perform all the steps described by the algorithm,
+     * i.e., some levels may not be the same as if all steps were performed.
+     * This is not relevant for unidirectional text.<br>
+     * For example, in pure LTR text with numbers the numbers would get
+     * a resolved level of 2 higher than the surrounding text according to
+     * the algorithm. This implementation may set all resolved levels to
+     * the same value in such a case.<p>
+     *
+     * The text can be composed of multiple paragraphs. Occurrence of a block
+     * separator in the text terminates a paragraph, and whatever comes next starts
+     * a new paragraph. The exception to this rule is when a Carriage Return (CR)
+     * is followed by a Line Feed (LF). Both CR and LF are block separators, but
+     * in that case, the pair of characters is considered as terminating the
+     * preceding paragraph, and a new paragraph will be started by a character
+     * coming after the LF.
+     *
+     * Although the text is passed here as a <code>String</code>, it is
+     * stored internally as an array of characters. Therefore the
+     * documentation will refer to indexes of the characters in the text.
+     *
+     * @param text contains the text that the Bidi algorithm will be performed
+     *        on. This text can be retrieved with <code>getText()</code> or
+     *        <code>getTextAsString</code>.<br>
+     *
+     * @param paraLevel specifies the default level for the text;
+     *        it is typically 0 (LTR) or 1 (RTL).
+     *        If the method shall determine the paragraph level from the text,
+     *        then <code>paraLevel</code> can be set to
+     *        either <code>LEVEL_DEFAULT_LTR</code>
+     *        or <code>LEVEL_DEFAULT_RTL</code>; if the text contains multiple
+     *        paragraphs, the paragraph level shall be determined separately for
+     *        each paragraph; if a paragraph does not include any strongly typed
+     *        character, then the desired default is used (0 for LTR or 1 for RTL).
+     *        Any other value between 0 and <code>MAX_EXPLICIT_LEVEL</code>
+     *        is also valid, with odd levels indicating RTL.
+     *
+     * @param embeddingLevels (in) may be used to preset the embedding and override levels,
+     *        ignoring characters like LRE and PDF in the text.
+     *        A level overrides the directional property of its corresponding
+     *        (same index) character if the level has the
+     *        <code>LEVEL_OVERRIDE</code> bit set.<br><br>
+     *        Except for that bit, it must be
+     *        <code>paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL</code>,
+     *        with one exception: a level of zero may be specified for a
+     *        paragraph separator even if <code>paraLevel&gt;0</code> when multiple
+     *        paragraphs are submitted in the same call to <code>setPara()</code>.<br><br>
+     *        <strong>Caution: </strong>A reference to this array, not a copy
+     *        of the levels, will be stored in the <code>Bidi</code> object;
+     *        the <code>embeddingLevels</code>
+     *        should not be modified to avoid unexpected results on subsequent
+     *        Bidi operations. However, the <code>setPara()</code> and
+     *        <code>setLine()</code> methods may modify some or all of the
+     *        levels.<br><br>
+     *        <strong>Note:</strong> the <code>embeddingLevels</code> array must
+     *        have one entry for each character in <code>text</code>.
+     *
+     * @throws IllegalArgumentException if the values in embeddingLevels are
+     *         not within the allowed range
+     *
+     * @see #LEVEL_DEFAULT_LTR
+     * @see #LEVEL_DEFAULT_RTL
+     * @see #LEVEL_OVERRIDE
+     * @see #MAX_EXPLICIT_LEVEL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setPara(String text, byte paraLevel, byte[] embeddingLevels)
+    {
+        if (text == null) {
+            setPara(new char[0], paraLevel, embeddingLevels);
+        } else {
+            setPara(text.toCharArray(), paraLevel, embeddingLevels);
+        }
+    }
+
+    /**
+     * Perform the Unicode Bidi algorithm. It is defined in the
+     * <a href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9</a>,
+     * version 13,
+     * also described in The Unicode Standard, Version 4.0 .<p>
+     *
+     * This method takes a piece of plain text containing one or more paragraphs,
+     * with or without externally specified embedding levels from <i>styled</i>
+     * text and computes the left-right-directionality of each character.<p>
+     *
+     * If the entire text is all of the same directionality, then
+     * the method may not perform all the steps described by the algorithm,
+     * i.e., some levels may not be the same as if all steps were performed.
+     * This is not relevant for unidirectional text.<br>
+     * For example, in pure LTR text with numbers the numbers would get
+     * a resolved level of 2 higher than the surrounding text according to
+     * the algorithm. This implementation may set all resolved levels to
+     * the same value in such a case.<p>
+     *
+     * The text can be composed of multiple paragraphs. Occurrence of a block
+     * separator in the text terminates a paragraph, and whatever comes next starts
+     * a new paragraph. The exception to this rule is when a Carriage Return (CR)
+     * is followed by a Line Feed (LF). Both CR and LF are block separators, but
+     * in that case, the pair of characters is considered as terminating the
+     * preceding paragraph, and a new paragraph will be started by a character
+     * coming after the LF.
+     *
+     * The text is stored internally as an array of characters. Therefore the
+     * documentation will refer to indexes of the characters in the text.
+     *
+     * @param chars contains the text that the Bidi algorithm will be performed
+     *        on. This text can be retrieved with <code>getText()</code> or
+     *        <code>getTextAsString</code>.<br>
+     *
+     * @param paraLevel specifies the default level for the text;
+     *        it is typically 0 (LTR) or 1 (RTL).
+     *        If the method shall determine the paragraph level from the text,
+     *        then <code>paraLevel</code> can be set to
+     *        either <code>LEVEL_DEFAULT_LTR</code>
+     *        or <code>LEVEL_DEFAULT_RTL</code>; if the text contains multiple
+     *        paragraphs, the paragraph level shall be determined separately for
+     *        each paragraph; if a paragraph does not include any strongly typed
+     *        character, then the desired default is used (0 for LTR or 1 for RTL).
+     *        Any other value between 0 and <code>MAX_EXPLICIT_LEVEL</code>
+     *        is also valid, with odd levels indicating RTL.
+     *
+     * @param embeddingLevels (in) may be used to preset the embedding and
+     *        override levels, ignoring characters like LRE and PDF in the text.
+     *        A level overrides the directional property of its corresponding
+     *        (same index) character if the level has the
+     *        <code>LEVEL_OVERRIDE</code> bit set.<br><br>
+     *        Except for that bit, it must be
+     *        <code>paraLevel<=embeddingLevels[]<=MAX_EXPLICIT_LEVEL</code>,
+     *        with one exception: a level of zero may be specified for a
+     *        paragraph separator even if <code>paraLevel&gt;0</code> when multiple
+     *        paragraphs are submitted in the same call to <code>setPara()</code>.<br><br>
+     *        <strong>Caution: </strong>A reference to this array, not a copy
+     *        of the levels, will be stored in the <code>Bidi</code> object;
+     *        the <code>embeddingLevels</code>
+     *        should not be modified to avoid unexpected results on subsequent
+     *        Bidi operations. However, the <code>setPara()</code> and
+     *        <code>setLine()</code> methods may modify some or all of the
+     *        levels.<br><br>
+     *        <strong>Note:</strong> the <code>embeddingLevels</code> array must
+     *        have one entry for each character in <code>text</code>.
+     *
+     * @throws IllegalArgumentException if the values in embeddingLevels are
+     *         not within the allowed range
+     *
+     * @see #LEVEL_DEFAULT_LTR
+     * @see #LEVEL_DEFAULT_RTL
+     * @see #LEVEL_OVERRIDE
+     * @see #MAX_EXPLICIT_LEVEL
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setPara(char[] chars, byte paraLevel, byte[] embeddingLevels)
+    {
+        /* check the argument values */
+        if (paraLevel < LEVEL_DEFAULT_LTR) {
+            verifyRange(paraLevel, 0, MAX_EXPLICIT_LEVEL + 1);
+        }
+        if (chars == null) {
+            chars = new char[0];
+        }
+
+        /* special treatment for RUNS_ONLY mode */
+        if (reorderingMode == REORDER_RUNS_ONLY) {
+            setParaRunsOnly(chars, paraLevel);
+            return;
+        }
+
+        /* initialize the Bidi object */
+        this.paraBidi = null;          /* mark unfinished setPara */
+        this.text = chars;
+        this.length = this.originalLength = this.resultLength = text.length;
+        this.paraLevel = paraLevel;
+        this.direction = LTR;
+        this.paraCount = 1;
+
+        /* Allocate zero-length arrays instead of setting to null here; then
+         * checks for null in various places can be eliminated.
+         */
+        dirProps = new byte[0];
+        levels = new byte[0];
+        runs = new BidiRun[0];
+        isGoodLogicalToVisualRunsMap = false;
+        insertPoints.size = 0;          /* clean up from last call */
+        insertPoints.confirmed = 0;     /* clean up from last call */
+
+        /*
+         * Save the original paraLevel if contextual; otherwise, set to 0.
+         */
+        if (IsDefaultLevel(paraLevel)) {
+            defaultParaLevel = paraLevel;
+        } else {
+            defaultParaLevel = 0;
+        }
+
+        if (length == 0) {
+            /*
+             * For an empty paragraph, create a Bidi object with the paraLevel and
+             * the flags and the direction set but without allocating zero-length arrays.
+             * There is nothing more to do.
+             */
+            if (IsDefaultLevel(paraLevel)) {
+                this.paraLevel &= 1;
+                defaultParaLevel = 0;
+            }
+            if ((this.paraLevel & 1) != 0) {
+                flags = DirPropFlag(R);
+                direction = RTL;
+            } else {
+                flags = DirPropFlag(L);
+                direction = LTR;
+            }
+
+            runCount = 0;
+            paraCount = 0;
+            paraBidi = this;         /* mark successful setPara */
+            return;
+        }
+
+        runCount = -1;
+
+        /*
+         * Get the directional properties,
+         * the flags bit-set, and
+         * determine the paragraph level if necessary.
+         */
+        getDirPropsMemory(length);
+        dirProps = dirPropsMemory;
+        getDirProps();
+        /* the processed length may have changed if OPTION_STREAMING is set */
+        trailingWSStart = length;  /* the levels[] will reflect the WS run */
+
+        /* allocate paras memory */
+        if (paraCount > 1) {
+            getInitialParasMemory(paraCount);
+            paras = parasMemory;
+            paras[paraCount - 1] = length;
+        } else {
+            /* initialize paras for single paragraph */
+            paras = simpleParas;
+            simpleParas[0] = length;
+        }
+
+        /* are explicit levels specified? */
+        if (embeddingLevels == null) {
+            /* no: determine explicit levels according to the (Xn) rules */
+            getLevelsMemory(length);
+            levels = levelsMemory;
+            direction = resolveExplicitLevels();
+        } else {
+            /* set BN for all explicit codes, check that all levels are 0 or paraLevel..MAX_EXPLICIT_LEVEL */
+            levels = embeddingLevels;
+            direction = checkExplicitLevels();
+        }
+
+        /*
+         * The steps after (X9) in the Bidi algorithm are performed only if
+         * the paragraph text has mixed directionality!
+         */
+        switch (direction) {
+        case LTR:
+            /* make sure paraLevel is even */
+            paraLevel = (byte)((paraLevel + 1) & ~1);
+
+            /* all levels are implicitly at paraLevel (important for getLevels()) */
+            trailingWSStart = 0;
+            break;
+        case RTL:
+            /* make sure paraLevel is odd */
+            paraLevel |= 1;
+
+            /* all levels are implicitly at paraLevel (important for getLevels()) */
+            trailingWSStart = 0;
+            break;
+        default:
+            /*
+             *  Choose the right implicit state table
+             */
+            switch(reorderingMode) {
+            case REORDER_DEFAULT:
+                this.impTabPair = impTab_DEFAULT;
+                break;
+            case REORDER_NUMBERS_SPECIAL:
+                this.impTabPair = impTab_NUMBERS_SPECIAL;
+                break;
+            case REORDER_GROUP_NUMBERS_WITH_R:
+                this.impTabPair = impTab_GROUP_NUMBERS_WITH_R;
+                break;
+            case REORDER_RUNS_ONLY:
+                /* we should never get here */
+                throw new InternalError("Internal ICU error in setPara");
+                /* break; */
+            case REORDER_INVERSE_NUMBERS_AS_L:
+                this.impTabPair = impTab_INVERSE_NUMBERS_AS_L;
+                break;
+            case REORDER_INVERSE_LIKE_DIRECT:
+                if ((reorderingOptions & OPTION_INSERT_MARKS) != 0) {
+                    this.impTabPair = impTab_INVERSE_LIKE_DIRECT_WITH_MARKS;
+                } else {
+                    this.impTabPair = impTab_INVERSE_LIKE_DIRECT;
+                }
+                break;
+            case REORDER_INVERSE_FOR_NUMBERS_SPECIAL:
+                if ((reorderingOptions & OPTION_INSERT_MARKS) != 0) {
+                    this.impTabPair = impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS;
+                } else {
+                    this.impTabPair = impTab_INVERSE_FOR_NUMBERS_SPECIAL;
+                }
+                break;
+            }
+            /*
+             * If there are no external levels specified and there
+             * are no significant explicit level codes in the text,
+             * then we can treat the entire paragraph as one run.
+             * Otherwise, we need to perform the following rules on runs of
+             * the text with the same embedding levels. (X10)
+             * "Significant" explicit level codes are ones that actually
+             * affect non-BN characters.
+             * Examples for "insignificant" ones are empty embeddings
+             * LRE-PDF, LRE-RLE-PDF-PDF, etc.
+             */
+            if (embeddingLevels == null && paraCount <= 1 &&
+                (flags & DirPropFlagMultiRuns) == 0) {
+                resolveImplicitLevels(0, length,
+                        GetLRFromLevel(GetParaLevelAt(0)),
+                        GetLRFromLevel(GetParaLevelAt(length - 1)));
+            } else {
+                /* sor, eor: start and end types of same-level-run */
+                int start, limit = 0;
+                byte level, nextLevel;
+                short sor, eor;
+
+                /* determine the first sor and set eor to it because of the loop body (sor=eor there) */
+                level = GetParaLevelAt(0);
+                nextLevel = levels[0];
+                if (level < nextLevel) {
+                    eor = GetLRFromLevel(nextLevel);
+                } else {
+                    eor = GetLRFromLevel(level);
+                }
+
+                do {
+                    /* determine start and limit of the run (end points just behind the run) */
+
+                    /* the values for this run's start are the same as for the previous run's end */
+                    start = limit;
+                    level = nextLevel;
+                    if ((start > 0) && (NoContextRTL(dirProps[start - 1]) == B)) {
+                        /* except if this is a new paragraph, then set sor = para level */
+                        sor = GetLRFromLevel(GetParaLevelAt(start));
+                    } else {
+                        sor = eor;
+                    }
+
+                    /* search for the limit of this run */
+                    while (++limit < length && levels[limit] == level) {}
+
+                    /* get the correct level of the next run */
+                    if (limit < length) {
+                        nextLevel = levels[limit];
+                    } else {
+                        nextLevel = GetParaLevelAt(length - 1);
+                    }
+
+                    /* determine eor from max(level, nextLevel); sor is last run's eor */
+                    if ((level & ~LEVEL_OVERRIDE) < (nextLevel & ~LEVEL_OVERRIDE)) {
+                        eor = GetLRFromLevel(nextLevel);
+                    } else {
+                        eor = GetLRFromLevel(level);
+                    }
+
+                    /* if the run consists of overridden directional types, then there
+                       are no implicit types to be resolved */
+                    if ((level & LEVEL_OVERRIDE) == 0) {
+                        resolveImplicitLevels(start, limit, sor, eor);
+                    } else {
+                        /* remove the LEVEL_OVERRIDE flags */
+                        do {
+                            levels[start++] &= ~LEVEL_OVERRIDE;
+                        } while (start < limit);
+                    }
+                } while (limit  < length);
+            }
+
+            /* reset the embedding levels for some non-graphic characters (L1), (X9) */
+            adjustWSLevels();
+
+            break;
+        }
+        /* add RLM for inverse Bidi with contextual orientation resolving
+         * to RTL which would not round-trip otherwise
+         */
+        if ((defaultParaLevel > 0) &&
+            ((reorderingOptions & OPTION_INSERT_MARKS) != 0) &&
+            ((reorderingMode == REORDER_INVERSE_LIKE_DIRECT) ||
+             (reorderingMode == REORDER_INVERSE_FOR_NUMBERS_SPECIAL))) {
+            int start, last;
+            byte dirProp;
+            for (int i = 0; i < paraCount; i++) {
+                last = paras[i] - 1;
+                if ((dirProps[last] & CONTEXT_RTL) == 0) {
+                    continue;           /* LTR paragraph */
+                }
+                start= i == 0 ? 0 : paras[i - 1];
+                for (int j = last; j >= start; j--) {
+                    dirProp = NoContextRTL(dirProps[j]);
+                    if (dirProp == L) {
+                        if (j < last) {
+                            while (NoContextRTL(dirProps[last]) == B) {
+                                last--;
+                            }
+                        }
+                        addPoint(last, RLM_BEFORE);
+                        break;
+                    }
+                    if ((DirPropFlag(dirProp) & MASK_R_AL) != 0) {
+                        break;
+                    }
+                }
+            }
+        }
+
+        if ((reorderingOptions & OPTION_REMOVE_CONTROLS) != 0) {
+            resultLength -= controlCount;
+        } else {
+            resultLength += insertPoints.size;
+        }
+        paraBidi = this;             /* mark successful setPara */
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * Perform the Unicode Bidi algorithm on a given paragraph, as defined in the
+     * <a href="http://www.unicode.org/unicode/reports/tr9/">Unicode Standard Annex #9</a>,
+     * version 13,
+     * also described in The Unicode Standard, Version 4.0 .<p>
+     *
+     * This method takes a paragraph of text and computes the
+     * left-right-directionality of each character. The text should not
+     * contain any Unicode block separators.<p>
+     *
+     * The RUN_DIRECTION attribute in the text, if present, determines the base
+     * direction (left-to-right or right-to-left). If not present, the base
+     * direction is computed using the Unicode Bidirectional Algorithm,
+     * defaulting to left-to-right if there are no strong directional characters
+     * in the text. This attribute, if present, must be applied to all the text
+     * in the paragraph.<p>
+     *
+     * The BIDI_EMBEDDING attribute in the text, if present, represents
+     * embedding level information. Negative values from -1 to -62 indicate
+     * overrides at the absolute value of the level. Positive values from 1 to
+     * 62 indicate embeddings. Where values are zero or not defined, the base
+     * embedding level as determined by the base direction is assumed.<p>
+     *
+     * The NUMERIC_SHAPING attribute in the text, if present, converts European
+     * digits to other decimal digits before running the bidi algorithm. This
+     * attribute, if present, must be applied to all the text in the paragraph.
+     *
+     * If the entire text is all of the same directionality, then
+     * the method may not perform all the steps described by the algorithm,
+     * i.e., some levels may not be the same as if all steps were performed.
+     * This is not relevant for unidirectional text.<br>
+     * For example, in pure LTR text with numbers the numbers would get
+     * a resolved level of 2 higher than the surrounding text according to
+     * the algorithm. This implementation may set all resolved levels to
+     * the same value in such a case.<p>
+     *
+     * @param paragraph a paragraph of text with optional character and
+     *        paragraph attribute information
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setPara(AttributedCharacterIterator paragraph)
+    {
+        byte paraLvl;
+        Boolean runDirection = (Boolean) paragraph.getAttribute(TextAttribute.RUN_DIRECTION);
+        if (runDirection == null) {
+            paraLvl = LEVEL_DEFAULT_LTR;
+        } else {
+            paraLvl = (runDirection.equals(TextAttribute.RUN_DIRECTION_LTR)) ?
+                        LTR : RTL;
+        }
+
+        byte[] lvls = null;
+        int len = paragraph.getEndIndex() - paragraph.getBeginIndex();
+        byte[] embeddingLevels = new byte[len];
+        char[] txt = new char[len];
+        int i = 0;
+        char ch = paragraph.first();
+        while (ch != AttributedCharacterIterator.DONE) {
+            txt[i] = ch;
+            Integer embedding = (Integer) paragraph.getAttribute(TextAttribute.BIDI_EMBEDDING);
+            if (embedding != null) {
+                byte level = embedding.byteValue();
+                if (level == 0) {
+                    /* no-op */
+                } else if (level < 0) {
+                    lvls = embeddingLevels;
+                    embeddingLevels[i] = (byte)((0 - level) | LEVEL_OVERRIDE);
+                } else {
+                    lvls = embeddingLevels;
+                    embeddingLevels[i] = level;
+                }
+            }
+            ch = paragraph.next();
+            ++i;
+        }
+
+//#if defined(J2SE13)
+//#else
+        NumericShaper shaper = (NumericShaper) paragraph.getAttribute(TextAttribute.NUMERIC_SHAPING);
+        if (shaper != null) {
+            shaper.shape(txt, 0, len);
+        }
+//#endif
+        setPara(txt, paraLvl, lvls);
+    }
+//#endif
+
+    /**
+     * Specify whether block separators must be allocated level zero,
+     * so that successive paragraphs will progress from left to right.
+     * This method must be called before <code>setPara()</code>.
+     * Paragraph separators (B) may appear in the text.  Setting them to level zero
+     * means that all paragraph separators (including one possibly appearing
+     * in the last text position) are kept in the reordered text after the text
+     * that they follow in the source text.
+     * When this feature is not enabled, a paragraph separator at the last
+     * position of the text before reordering will go to the first position
+     * of the reordered text when the paragraph level is odd.
+     *
+     * @param ordarParaLTR specifies whether paragraph separators (B) must
+     * receive level 0, so that successive paragraphs progress from left to right.
+     *
+     * @see #setPara
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void orderParagraphsLTR(boolean ordarParaLTR) {
+        orderParagraphsLTR = ordarParaLTR;
+    }
+
+    /**
+     * Is this <code>Bidi</code> object set to allocate level 0 to block
+     * separators so that successive paragraphs progress from left to right?
+     *
+     * @return <code>true</code> if the <code>Bidi</code> object is set to
+     *         allocate level 0 to block separators.
+     *
+     * @see #orderParagraphsLTR
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isOrderParagraphsLTR() {
+        return orderParagraphsLTR;
+    }
+
+    /**
+     * Get the directionality of the text.
+     *
+     * @return a value of <code>LTR</code>, <code>RTL</code> or <code>MIXED</code>
+     *         that indicates if the entire text
+     *         represented by this object is unidirectional,
+     *         and which direction, or if it is mixed-directional.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #LTR
+     * @see #RTL
+     * @see #MIXED
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public byte getDirection()
+    {
+        verifyValidParaOrLine();
+        return direction;
+    }
+
+    /**
+     * Get the text.
+     *
+     * @return A <code>String</code> containing the text that the
+     *         <code>Bidi</code> object was created for.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #setPara
+     * @see #setLine
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getTextAsString()
+    {
+        verifyValidParaOrLine();
+        return new String(text);
+    }
+
+    /**
+     * Get the text.
+     *
+     * @return A <code>char</code> array containing the text that the
+     *         <code>Bidi</code> object was created for.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #setPara
+     * @see #setLine
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public char[] getText()
+    {
+        verifyValidParaOrLine();
+        return text;
+    }
+
+    /**
+     * Get the length of the text.
+     *
+     * @return The length of the text that the <code>Bidi</code> object was
+     *         created for.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getLength()
+    {
+        verifyValidParaOrLine();
+        return originalLength;
+    }
+
+    /**
+     * Get the length of the source text processed by the last call to
+     * <code>setPara()</code>. This length may be different from the length of
+     * the source text if option <code>OPTION_STREAMING</code> has been
+     * set.
+     * <br>
+     * Note that whenever the length of the text affects the execution or the
+     * result of a method, it is the processed length which must be considered,
+     * except for <code>setPara</code> (which receives unprocessed source text)
+     * and <code>getLength</code> (which returns the original length of the
+     * source text).<br>
+     * In particular, the processed length is the one to consider in the
+     * following cases:
+     * <ul>
+     * <li>maximum value of the <code>limit</code> argument of
+     * <code>setLine</code></li>
+     * <li>maximum value of the <code>charIndex</code> argument of
+     * <code>getParagraph</code></li>
+     * <li>maximum value of the <code>charIndex</code> argument of
+     * <code>getLevelAt</code></li>
+     * <li>number of elements in the array returned by <code>getLevels</code>
+     * </li>
+     * <li>maximum value of the <code>logicalStart</code> argument of
+     * <code>getLogicalRun</code></li>
+     * <li>maximum value of the <code>logicalIndex</code> argument of
+     * <code>getVisualIndex</code></li>
+     * <li>number of elements returned by <code>getLogicalMap</code></li>
+     * <li>length of text processed by <code>writeReordered</code></li>
+     * </ul>
+     *
+     * @return The length of the part of the source text processed by
+     *         the last call to <code>setPara</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #setPara
+     * @see #OPTION_STREAMING
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getProcessedLength() {
+        verifyValidParaOrLine();
+        return length;
+    }
+
+    /**
+     * Get the length of the reordered text resulting from the last call to
+     * <code>setPara()</code>. This length may be different from the length
+     * of the source text if option <code>OPTION_INSERT_MARKS</code>
+     * or option <code>OPTION_REMOVE_CONTROLS</code> has been set.
+     * <br>
+     * This resulting length is the one to consider in the following cases:
+     * <ul>
+     * <li>maximum value of the <code>visualIndex</code> argument of
+     * <code>getLogicalIndex</code></li>
+     * <li>number of elements returned by <code>getVisualMap</code></li>
+     * </ul>
+     * Note that this length stays identical to the source text length if
+     * Bidi marks are inserted or removed using option bits of
+     * <code>writeReordered</code>, or if option
+     * <code>REORDER_INVERSE_NUMBERS_AS_L</code> has been set.
+     *
+     * @return The length of the reordered text resulting from
+     *         the last call to <code>setPara</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #setPara
+     * @see #OPTION_INSERT_MARKS
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #REORDER_INVERSE_NUMBERS_AS_L
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getResultLength() {
+        verifyValidParaOrLine();
+        return resultLength;
+    }
+
+    /* paragraphs API methods ------------------------------------------------- */
+
+    /**
+     * Get the paragraph level of the text.
+     *
+     * @return The paragraph level. If there are multiple paragraphs, their
+     *         level may vary if the required paraLevel is LEVEL_DEFAULT_LTR or
+     *         LEVEL_DEFAULT_RTL.  In that case, the level of the first paragraph
+     *         is returned.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #LEVEL_DEFAULT_LTR
+     * @see #LEVEL_DEFAULT_RTL
+     * @see #getParagraph
+     * @see #getParagraphByIndex
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public byte getParaLevel()
+    {
+        verifyValidParaOrLine();
+        return paraLevel;
+    }
+
+    /**
+     * Get the number of paragraphs.
+     *
+     * @return The number of paragraphs.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int countParagraphs()
+    {
+        verifyValidParaOrLine();
+        return paraCount;
+    }
+
+    /**
+     * Get a paragraph, given the index of this paragraph.
+     *
+     * This method returns information about a paragraph.<p>
+     *
+     * @param paraIndex is the number of the paragraph, in the
+     *        range <code>[0..countParagraphs()-1]</code>.
+     *
+     * @return a BidiRun object with the details of the paragraph:<br>
+     *        <code>start</code> will receive the index of the first character
+     *        of the paragraph in the text.<br>
+     *        <code>limit</code> will receive the limit of the paragraph.<br>
+     *        <code>embeddingLevel</code> will receive the level of the paragraph.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if paraIndex is not in the range
+     *        <code>[0..countParagraphs()-1]</code>
+     *
+     * @see com.ibm.icu.text.BidiRun
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiRun getParagraphByIndex(int paraIndex)
+    {
+        verifyValidParaOrLine();
+        verifyRange(paraIndex, 0, paraCount);
+
+        Bidi bidi = paraBidi;             /* get Para object if Line object */
+        int paraStart;
+        if (paraIndex == 0) {
+            paraStart = 0;
+        } else {
+            paraStart = bidi.paras[paraIndex - 1];
+        }
+        BidiRun bidiRun = new BidiRun();
+        bidiRun.start = paraStart;
+        bidiRun.limit = bidi.paras[paraIndex];
+        bidiRun.level = GetParaLevelAt(paraStart);
+        return bidiRun;
+    }
+
+    /**
+     * Get a paragraph, given a position within the text.
+     * This method returns information about a paragraph.<br>
+     * Note: if the paragraph index is known, it is more efficient to
+     * retrieve the paragraph information using getParagraphByIndex().<p>
+     *
+     * @param charIndex is the index of a character within the text, in the
+     *        range <code>[0..getProcessedLength()-1]</code>.
+     *
+     * @return a BidiRun object with the details of the paragraph:<br>
+     *        <code>start</code> will receive the index of the first character
+     *        of the paragraph in the text.<br>
+     *        <code>limit</code> will receive the limit of the paragraph.<br>
+     *        <code>embeddingLevel</code> will receive the level of the paragraph.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if charIndex is not within the legal range
+     *
+     * @see com.ibm.icu.text.BidiRun
+     * @see #getParagraphByIndex
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiRun getParagraph(int charIndex)
+    {
+        verifyValidParaOrLine();
+        Bidi bidi = paraBidi;             /* get Para object if Line object */
+        verifyRange(charIndex, 0, bidi.length);
+        int paraIndex;
+        for (paraIndex = 0; charIndex >= bidi.paras[paraIndex]; paraIndex++) {
+        }
+        return getParagraphByIndex(paraIndex);
+    }
+
+    /**
+     * Get the index of a paragraph, given a position within the text.<p>
+     *
+     * @param charIndex is the index of a character within the text, in the
+     *        range <code>[0..getProcessedLength()-1]</code>.
+     *
+     * @return The index of the paragraph containing the specified position,
+     *         starting from 0.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if charIndex is not within the legal range
+     *
+     * @see com.ibm.icu.text.BidiRun
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getParagraphIndex(int charIndex)
+    {
+        verifyValidParaOrLine();
+        Bidi bidi = paraBidi;             /* get Para object if Line object */
+        verifyRange(charIndex, 0, bidi.length);
+        int paraIndex;
+        for (paraIndex = 0; charIndex >= bidi.paras[paraIndex]; paraIndex++) {
+        }
+        return paraIndex;
+    }
+
+    /**
+     * Set a custom Bidi classifier used by the UBA implementation for Bidi
+     * class determination.
+     *
+     * @param classifier A new custom classifier. This can be null.
+     *
+     * @see #getCustomClassifier
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setCustomClassifier(BidiClassifier classifier) {
+        this.customClassifier = classifier;
+    }
+
+    /**
+     * Gets the current custom class classifier used for Bidi class
+     * determination.
+     *
+     * @return An instance of class <code>BidiClassifier</code>
+     *
+     * @see #setCustomClassifier
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiClassifier getCustomClassifier() {
+        return this.customClassifier;
+    }
+
+    /**
+     * Retrieves the Bidi class for a given code point.
+     * <p>If a <code>BidiClassifier</code> is defined and returns a value
+     * other than <code>CLASS_DEFAULT</code>, that value is used; otherwise
+     * the default class determination mechanism is invoked.</p>
+     *
+     * @param c The code point to get a Bidi class for.
+     *
+     * @return The Bidi class for the character <code>c</code> that is in effect
+     *         for this <code>Bidi</code> instance.
+     *
+     * @see BidiClassifier
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getCustomizedClass(int c) {
+        int dir;
+
+        if (customClassifier == null ||
+            (dir = customClassifier.classify(c)) == Bidi.CLASS_DEFAULT) {
+            return bdp.getClass(c);
+        } else {
+            return dir;
+        }
+    }
+
+    /**
+     * <code>setLine()</code> returns a <code>Bidi</code> object to
+     * contain the reordering information, especially the resolved levels,
+     * for all the characters in a line of text. This line of text is
+     * specified by referring to a <code>Bidi</code> object representing
+     * this information for a piece of text containing one or more paragraphs,
+     * and by specifying a range of indexes in this text.<p>
+     * In the new line object, the indexes will range from 0 to <code>limit-start-1</code>.<p>
+     *
+     * This is used after calling <code>setPara()</code>
+     * for a piece of text, and after line-breaking on that text.
+     * It is not necessary if each paragraph is treated as a single line.<p>
+     *
+     * After line-breaking, rules (L1) and (L2) for the treatment of
+     * trailing WS and for reordering are performed on
+     * a <code>Bidi</code> object that represents a line.<p>
+     *
+     * <strong>Important: </strong>the line <code>Bidi</code> object may
+     * reference data within the global text <code>Bidi</code> object.
+     * You should not alter the content of the global text object until
+     * you are finished using the line object.
+     *
+     * @param start is the line's first index into the text.
+     *
+     * @param limit is just behind the line's last index into the text
+     *        (its last index +1).
+     *
+     * @return a <code>Bidi</code> object that will now represent a line of the text.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @throws IllegalArgumentException if start and limit are not in the range
+     *         <code>0&lt;=start&lt;limit&lt;=getProcessedLength()</code>,
+     *         or if the specified line crosses a paragraph boundary
+     *
+     * @see #setPara
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi setLine(int start, int limit)
+    {
+        verifyValidPara();
+        verifyRange(start, 0, limit);
+        verifyRange(limit, 0, length+1);
+        if (getParagraphIndex(start) != getParagraphIndex(limit - 1)) {
+            /* the line crosses a paragraph boundary */
+            throw new IllegalArgumentException();
+        }
+        return BidiLine.setLine(this, start, limit);
+    }
+
+    /**
+     * Get the level for one character.
+     *
+     * @param charIndex the index of a character.
+     *
+     * @return The level for the character at <code>charIndex</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if charIndex is not in the range
+     *         <code>0&lt;=charIndex&lt;getProcessedLength()</code>
+     *
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public byte getLevelAt(int charIndex)
+    {
+        verifyValidParaOrLine();
+        verifyRange(charIndex, 0, length);
+        return BidiLine.getLevelAt(this, charIndex);
+    }
+
+    /**
+     * Get an array of levels for each character.<p>
+     *
+     * Note that this method may allocate memory under some
+     * circumstances, unlike <code>getLevelAt()</code>.
+     *
+     * @return The levels array for the text,
+     *         or <code>null</code> if an error occurs.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public byte[] getLevels()
+    {
+        verifyValidParaOrLine();
+        if (length <= 0) {
+            return new byte[0];
+        }
+        return BidiLine.getLevels(this);
+    }
+
+    /**
+     * Get a logical run.
+     * This method returns information about a run and is used
+     * to retrieve runs in logical order.<p>
+     * This is especially useful for line-breaking on a paragraph.
+     *
+     * @param logicalPosition is a logical position within the source text.
+     *
+     * @return a BidiRun object filled with <code>start</code> containing
+     *        the first character of the run, <code>limit</code> containing
+     *        the limit of the run, and <code>embeddingLevel</code> containing
+     *        the level of the run.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if logicalPosition is not in the range
+     *         <code>0&lt;=logicalPosition&lt;getProcessedLength()</code>
+     *
+     * @see com.ibm.icu.text.BidiRun
+     * @see com.ibm.icu.text.BidiRun#getStart()
+     * @see com.ibm.icu.text.BidiRun#getLimit()
+     * @see com.ibm.icu.text.BidiRun#getEmbeddingLevel()
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiRun getLogicalRun(int logicalPosition)
+    {
+        verifyValidParaOrLine();
+        verifyRange(logicalPosition, 0, length);
+        return BidiLine.getLogicalRun(this, logicalPosition);
+    }
+
+    /**
+     * Get the number of runs.
+     * This method may invoke the actual reordering on the
+     * <code>Bidi</code> object, after <code>setPara()</code>
+     * may have resolved only the levels of the text. Therefore,
+     * <code>countRuns()</code> may have to allocate memory,
+     * and may throw an exception if it fails to do so.
+     *
+     * @return The number of runs.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int countRuns()
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        return runCount;
+    }
+
+    /**
+     *
+     * Get a <code>BidiRun</code> object according to its index. BidiRun methods
+     * may be used to retrieve the run's logical start, length and level,
+     * which can be even for an LTR run or odd for an RTL run.
+     * In an RTL run, the character at the logical start is
+     * visually on the right of the displayed run.
+     * The length is the number of characters in the run.<p>
+     * <code>countRuns()</code> is normally called
+     * before the runs are retrieved.
+     *
+     * <p>
+     *  Example:
+     * <pre>
+     *  Bidi bidi = new Bidi();
+     *  String text = "abc 123 DEFG xyz";
+     *  bidi.setPara(text, Bidi.RTL, null);
+     *  int i, count=bidi.countRuns(), logicalStart, visualIndex=0, length;
+     *  BidiRun run;
+     *  for (i = 0; i &lt; count; ++i) {
+     *      run = bidi.getVisualRun(i);
+     *      logicalStart = run.getStart();
+     *      length = run.getLength();
+     *      if (Bidi.LTR == run.getEmbeddingLevel()) {
+     *          do { // LTR
+     *              show_char(text.charAt(logicalStart++), visualIndex++);
+     *          } while (--length &gt; 0);
+     *      } else {
+     *          logicalStart += length;  // logicalLimit
+     *          do { // RTL
+     *              show_char(text.charAt(--logicalStart), visualIndex++);
+     *          } while (--length &gt; 0);
+     *      }
+     *  }
+     * </pre>
+     * <p>
+     * Note that in right-to-left runs, code like this places
+     * second surrogates before first ones (which is generally a bad idea)
+     * and combining characters before base characters.
+     * <p>
+     * Use of <code>{@link #writeReordered}</code>, optionally with the
+     * <code>{@link #KEEP_BASE_COMBINING}</code> option, can be considered in
+     * order to avoid these issues.
+     *
+     * @param runIndex is the number of the run in visual order, in the
+     *        range <code>[0..countRuns()-1]</code>.
+     *
+     * @return a BidiRun object containing the details of the run. The
+     *         directionality of the run is
+     *         <code>LTR==0</code> or <code>RTL==1</code>,
+     *         never <code>MIXED</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>runIndex</code> is not in
+     *         the range <code>0&lt;=runIndex&lt;countRuns()</code>
+     *
+     * @see #countRuns()
+     * @see com.ibm.icu.text.BidiRun
+     * @see com.ibm.icu.text.BidiRun#getStart()
+     * @see com.ibm.icu.text.BidiRun#getLength()
+     * @see com.ibm.icu.text.BidiRun#getEmbeddingLevel()
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiRun getVisualRun(int runIndex)
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        verifyRange(runIndex, 0, runCount);
+        return BidiLine.getVisualRun(this, runIndex);
+    }
+
+    /**
+     * Get the visual position from a logical text position.
+     * If such a mapping is used many times on the same
+     * <code>Bidi</code> object, then calling
+     * <code>getLogicalMap()</code> is more efficient.
+     * <p>
+     * The value returned may be <code>MAP_NOWHERE</code> if there is no
+     * visual position because the corresponding text character is a Bidi
+     * control removed from output by the option
+     * <code>OPTION_REMOVE_CONTROLS</code>.
+     * <p>
+     * When the visual output is altered by using options of
+     * <code>writeReordered()</code> such as <code>INSERT_LRM_FOR_NUMERIC</code>,
+     * <code>KEEP_BASE_COMBINING</code>, <code>OUTPUT_REVERSE</code>,
+     * <code>REMOVE_BIDI_CONTROLS</code>, the visual position returned may not
+     * be correct. It is advised to use, when possible, reordering options
+     * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}.
+     * <p>
+     * Note that in right-to-left runs, this mapping places
+     * second surrogates before first ones (which is generally a bad idea)
+     * and combining characters before base characters.
+     * Use of <code>{@link #writeReordered}</code>, optionally with the
+     * <code>{@link #KEEP_BASE_COMBINING}</code> option can be considered instead
+     * of using the mapping, in order to avoid these issues.
+     *
+     * @param logicalIndex is the index of a character in the text.
+     *
+     * @return The visual position of this character.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>logicalIndex</code> is not in
+     *         the range <code>0&lt;=logicalIndex&lt;getProcessedLength()</code>
+     *
+     * @see #getLogicalMap
+     * @see #getLogicalIndex
+     * @see #getProcessedLength
+     * @see #MAP_NOWHERE
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getVisualIndex(int logicalIndex)
+    {
+        verifyValidParaOrLine();
+        verifyRange(logicalIndex, 0, length);
+        return BidiLine.getVisualIndex(this, logicalIndex);
+    }
+
+
+    /**
+     * Get the logical text position from a visual position.
+     * If such a mapping is used many times on the same
+     * <code>Bidi</code> object, then calling
+     * <code>getVisualMap()</code> is more efficient.
+     * <p>
+     * The value returned may be <code>MAP_NOWHERE</code> if there is no
+     * logical position because the corresponding text character is a Bidi
+     * mark inserted in the output by option
+     * <code>OPTION_INSERT_MARKS</code>.
+     * <p>
+     * This is the inverse method to <code>getVisualIndex()</code>.
+     * <p>
+     * When the visual output is altered by using options of
+     * <code>writeReordered()</code> such as <code>INSERT_LRM_FOR_NUMERIC</code>,
+     * <code>KEEP_BASE_COMBINING</code>, <code>OUTPUT_REVERSE</code>,
+     * <code>REMOVE_BIDI_CONTROLS</code>, the logical position returned may not
+     * be correct. It is advised to use, when possible, reordering options
+     * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}.
+     *
+     * @param visualIndex is the visual position of a character.
+     *
+     * @return The index of this character in the text.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>visualIndex</code> is not in
+     *         the range <code>0&lt;=visualIndex&lt;getResultLength()</code>
+     *
+     * @see #getVisualMap
+     * @see #getVisualIndex
+     * @see #getResultLength
+     * @see #MAP_NOWHERE
+     * @see #OPTION_INSERT_MARKS
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getLogicalIndex(int visualIndex)
+    {
+        verifyValidParaOrLine();
+        verifyRange(visualIndex, 0, resultLength);
+        /* we can do the trivial cases without the runs array */
+        if (insertPoints.size == 0 && controlCount == 0) {
+            if (direction == LTR) {
+                return visualIndex;
+            }
+            else if (direction == RTL) {
+                return length - visualIndex - 1;
+            }
+        }
+        BidiLine.getRuns(this);
+        return BidiLine.getLogicalIndex(this, visualIndex);
+    }
+
+    /**
+     * Get a logical-to-visual index map (array) for the characters in the
+     * <code>Bidi</code> (paragraph or line) object.
+     * <p>
+     * Some values in the map may be <code>MAP_NOWHERE</code> if the
+     * corresponding text characters are Bidi controls removed from the visual
+     * output by the option <code>OPTION_REMOVE_CONTROLS</code>.
+     * <p>
+     * When the visual output is altered by using options of
+     * <code>writeReordered()</code> such as <code>INSERT_LRM_FOR_NUMERIC</code>,
+     * <code>KEEP_BASE_COMBINING</code>, <code>OUTPUT_REVERSE</code>,
+     * <code>REMOVE_BIDI_CONTROLS</code>, the visual positions returned may not
+     * be correct. It is advised to use, when possible, reordering options
+     * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}.
+     * <p>
+     * Note that in right-to-left runs, this mapping places
+     * second surrogates before first ones (which is generally a bad idea)
+     * and combining characters before base characters.
+     * Use of <code>{@link #writeReordered}</code>, optionally with the
+     * <code>{@link #KEEP_BASE_COMBINING}</code> option can be considered instead
+     * of using the mapping, in order to avoid these issues.
+     *
+     * @return an array of <code>getProcessedLength()</code>
+     *        indexes which will reflect the reordering of the characters.<br><br>
+     *        The index map will result in
+     *        <code>indexMap[logicalIndex]==visualIndex</code>, where
+     *        <code>indexMap</code> represents the returned array.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #getVisualMap
+     * @see #getVisualIndex
+     * @see #getProcessedLength
+     * @see #MAP_NOWHERE
+     * @see #OPTION_REMOVE_CONTROLS
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int[] getLogicalMap()
+    {
+        /* countRuns() checks successful call to setPara/setLine */
+        countRuns();
+        if (length <= 0) {
+            return new int[0];
+        }
+        return BidiLine.getLogicalMap(this);
+    }
+
+    /**
+     * Get a visual-to-logical index map (array) for the characters in the
+     * <code>Bidi</code> (paragraph or line) object.
+     * <p>
+     * Some values in the map may be <code>MAP_NOWHERE</code> if the
+     * corresponding text characters are Bidi marks inserted in the visual
+     * output by the option <code>OPTION_INSERT_MARKS</code>.
+     * <p>
+     * When the visual output is altered by using options of
+     * <code>writeReordered()</code> such as <code>INSERT_LRM_FOR_NUMERIC</code>,
+     * <code>KEEP_BASE_COMBINING</code>, <code>OUTPUT_REVERSE</code>,
+     * <code>REMOVE_BIDI_CONTROLS</code>, the logical positions returned may not
+     * be correct. It is advised to use, when possible, reordering options
+     * such as {@link #OPTION_INSERT_MARKS} and {@link #OPTION_REMOVE_CONTROLS}.
+     *
+     * @return an array of <code>getResultLength()</code>
+     *        indexes which will reflect the reordering of the characters.<br><br>
+     *        The index map will result in
+     *        <code>indexMap[visualIndex]==logicalIndex</code>, where
+     *        <code>indexMap</code> represents the returned array.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #getLogicalMap
+     * @see #getLogicalIndex
+     * @see #getResultLength
+     * @see #MAP_NOWHERE
+     * @see #OPTION_INSERT_MARKS
+     * @see #writeReordered
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int[] getVisualMap()
+    {
+        /* countRuns() checks successful call to setPara/setLine */
+        countRuns();
+        if (resultLength <= 0) {
+            return new int[0];
+        }
+        return BidiLine.getVisualMap(this);
+    }
+
+    /**
+     * This is a convenience method that does not use a <code>Bidi</code> object.
+     * It is intended to be used for when an application has determined the levels
+     * of objects (character sequences) and just needs to have them reordered (L2).
+     * This is equivalent to using <code>getLogicalMap()</code> on a
+     * <code>Bidi</code> object.
+     *
+     * @param levels is an array of levels that have been determined by
+     *        the application.
+     *
+     * @return an array of <code>levels.length</code>
+     *        indexes which will reflect the reordering of the characters.<p>
+     *        The index map will result in
+     *        <code>indexMap[logicalIndex]==visualIndex</code>, where
+     *        <code>indexMap</code> represents the returned array.
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int[] reorderLogical(byte[] levels)
+    {
+        return BidiLine.reorderLogical(levels);
+    }
+
+    /**
+     * This is a convenience method that does not use a <code>Bidi</code> object.
+     * It is intended to be used for when an application has determined the levels
+     * of objects (character sequences) and just needs to have them reordered (L2).
+     * This is equivalent to using <code>getVisualMap()</code> on a
+     * <code>Bidi</code> object.
+     *
+     * @param levels is an array of levels that have been determined by
+     *        the application.
+     *
+     * @return an array of <code>levels.length</code>
+     *        indexes which will reflect the reordering of the characters.<p>
+     *        The index map will result in
+     *        <code>indexMap[visualIndex]==logicalIndex</code>, where
+     *        <code>indexMap</code> represents the returned array.
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int[] reorderVisual(byte[] levels)
+    {
+        return BidiLine.reorderVisual(levels);
+    }
+
+    /**
+     * Invert an index map.
+     * The index mapping of the argument map is inverted and returned as
+     * an array of indexes that we will call the inverse map.
+     *
+     * @param srcMap is an array whose elements define the original mapping
+     * from a source array to a destination array.
+     * Some elements of the source array may have no mapping in the
+     * destination array. In that case, their value will be
+     * the special value <code>MAP_NOWHERE</code>.
+     * All elements must be >=0 or equal to <code>MAP_NOWHERE</code>.
+     * Some elements in the source map may have a value greater than the
+     * srcMap.length if the destination array has more elements than the
+     * source array.
+     * There must be no duplicate indexes (two or more elements with the
+     * same value except <code>MAP_NOWHERE</code>).
+     *
+     * @return an array representing the inverse map.
+     *         This array has a number of elements equal to 1 + the highest
+     *         value in <code>srcMap</code>.
+     *         For elements of the result array which have no matching elements
+     *         in the source array, the corresponding elements in the inverse
+     *         map will receive a value equal to <code>MAP_NOWHERE</code>.
+     *         If element with index i in <code>srcMap</code> has a value k different
+     *         from <code>MAP_NOWHERE</code>, this means that element i of
+     *         the source array maps to element k in the destination array.
+     *         The inverse map will have value i in its k-th element.
+     *         For all elements of the destination array which do not map to
+     *         an element in the source array, the corresponding element in the
+     *         inverse map will have a value equal to <code>MAP_NOWHERE</code>.
+     *
+     * @see #MAP_NOWHERE
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int[] invertMap(int[] srcMap)
+    {
+        if (srcMap == null) {
+            return null;
+        } else {
+            return BidiLine.invertMap(srcMap);
+        }
+    }
+
+    /*
+     * Fields and methods for compatibility with java.text.bidi (Sun implementation)
+     */
+
+    /**
+     * Constant indicating base direction is left-to-right.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int DIRECTION_LEFT_TO_RIGHT = LTR;
+
+    /**
+     * Constant indicating base direction is right-to-left.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int DIRECTION_RIGHT_TO_LEFT = RTL;
+
+    /**
+     * Constant indicating that the base direction depends on the first strong
+     * directional character in the text according to the Unicode Bidirectional
+     * Algorithm. If no strong directional character is present, the base
+     * direction is left-to-right.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT = LEVEL_DEFAULT_LTR;
+
+    /**
+     * Constant indicating that the base direction depends on the first strong
+     * directional character in the text according to the Unicode Bidirectional
+     * Algorithm. If no strong directional character is present, the base
+     * direction is right-to-left.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT = LEVEL_DEFAULT_RTL;
+
+    /**
+     * Create Bidi from the given paragraph of text and base direction.
+     *
+     * @param paragraph a paragraph of text
+     * @param flags a collection of flags that control the algorithm. The
+     *        algorithm understands the flags DIRECTION_LEFT_TO_RIGHT,
+     *        DIRECTION_RIGHT_TO_LEFT, DIRECTION_DEFAULT_LEFT_TO_RIGHT, and
+     *        DIRECTION_DEFAULT_RIGHT_TO_LEFT. Other values are reserved.
+     * @see #DIRECTION_LEFT_TO_RIGHT
+     * @see #DIRECTION_RIGHT_TO_LEFT
+     * @see #DIRECTION_DEFAULT_LEFT_TO_RIGHT
+     * @see #DIRECTION_DEFAULT_RIGHT_TO_LEFT
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi(String paragraph, int flags)
+    {
+        this(paragraph.toCharArray(), 0, null, 0, paragraph.length(), flags);
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * Create Bidi from the given paragraph of text.<p>
+     *
+     * The RUN_DIRECTION attribute in the text, if present, determines the base
+     * direction (left-to-right or right-to-left). If not present, the base
+     * direction is computed using the Unicode Bidirectional Algorithm,
+     * defaulting to left-to-right if there are no strong directional characters
+     * in the text. This attribute, if present, must be applied to all the text
+     * in the paragraph.<p>
+     *
+     * The BIDI_EMBEDDING attribute in the text, if present, represents
+     * embedding level information. Negative values from -1 to -62 indicate
+     * overrides at the absolute value of the level. Positive values from 1 to
+     * 62 indicate embeddings. Where values are zero or not defined, the base
+     * embedding level as determined by the base direction is assumed.<p>
+     *
+     * The NUMERIC_SHAPING attribute in the text, if present, converts European
+     * digits to other decimal digits before running the bidi algorithm. This
+     * attribute, if present, must be applied to all the text in the paragraph.<p>
+     *
+     * Note: this constructor calls setPara() internally.
+     *
+     * @param paragraph a paragraph of text with optional character and
+     *        paragraph attribute information
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi(AttributedCharacterIterator paragraph)
+    {
+        this();
+        setPara(paragraph);
+    }
+//#endif
+
+    /**
+     * Create Bidi from the given text, embedding, and direction information.
+     * The embeddings array may be null. If present, the values represent
+     * embedding level information. Negative values from -1 to -61 indicate
+     * overrides at the absolute value of the level. Positive values from 1 to
+     * 61 indicate embeddings. Where values are zero, the base embedding level
+     * as determined by the base direction is assumed.<p>
+     *
+     * Note: this constructor calls setPara() internally.
+     *
+     * @param text an array containing the paragraph of text to process.
+     * @param textStart the index into the text array of the start of the
+     *        paragraph.
+     * @param embeddings an array containing embedding values for each character
+     *        in the paragraph. This can be null, in which case it is assumed
+     *        that there is no external embedding information.
+     * @param embStart the index into the embedding array of the start of the
+     *        paragraph.
+     * @param paragraphLength the length of the paragraph in the text and
+     *        embeddings arrays.
+     * @param flags a collection of flags that control the algorithm. The
+     *        algorithm understands the flags DIRECTION_LEFT_TO_RIGHT,
+     *        DIRECTION_RIGHT_TO_LEFT, DIRECTION_DEFAULT_LEFT_TO_RIGHT, and
+     *        DIRECTION_DEFAULT_RIGHT_TO_LEFT. Other values are reserved.
+     *
+     * @throws IllegalArgumentException if the values in embeddings are
+     *         not within the allowed range
+     *
+     * @see #DIRECTION_LEFT_TO_RIGHT
+     * @see #DIRECTION_RIGHT_TO_LEFT
+     * @see #DIRECTION_DEFAULT_LEFT_TO_RIGHT
+     * @see #DIRECTION_DEFAULT_RIGHT_TO_LEFT
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi(char[] text,
+            int textStart,
+            byte[] embeddings,
+            int embStart,
+            int paragraphLength,
+            int flags)
+    {
+        this();
+        byte paraLvl;
+        switch (flags) {
+        case DIRECTION_LEFT_TO_RIGHT:
+        default:
+            paraLvl = LTR;
+            break;
+        case DIRECTION_RIGHT_TO_LEFT:
+            paraLvl = RTL;
+            break;
+        case DIRECTION_DEFAULT_LEFT_TO_RIGHT:
+            paraLvl = LEVEL_DEFAULT_LTR;
+            break;
+        case DIRECTION_DEFAULT_RIGHT_TO_LEFT:
+            paraLvl = LEVEL_DEFAULT_RTL;
+            break;
+        }
+        byte[] paraEmbeddings;
+        if (embeddings == null) {
+            paraEmbeddings = null;
+        } else {
+            paraEmbeddings = new byte[paragraphLength];
+            byte lev;
+            for (int i = 0; i < paragraphLength; i++) {
+                lev = embeddings[i + embStart];
+                if (lev < 0) {
+                    lev = (byte)((- lev) | LEVEL_OVERRIDE);
+                } else if (lev == 0) {
+                    lev = paraLvl;
+                    if (paraLvl > MAX_EXPLICIT_LEVEL) {
+                        lev &= 1;
+                    }
+                }
+                paraEmbeddings[i] = lev;
+            }
+        }
+        if (textStart == 0 && embStart == 0 && paragraphLength == text.length) {
+            setPara(text, paraLvl, paraEmbeddings);
+        } else {
+            char[] paraText = new char[paragraphLength];
+            System.arraycopy(text, textStart, paraText, 0, paragraphLength);
+            setPara(paraText, paraLvl, paraEmbeddings);
+        }
+    }
+
+    /**
+     * Create a Bidi object representing the bidi information on a line of text
+     * within the paragraph represented by the current Bidi. This call is not
+     * required if the entire paragraph fits on one line.
+     *
+     * @param lineStart the offset from the start of the paragraph to the start
+     *        of the line.
+     * @param lineLimit the offset from the start of the paragraph to the limit
+     *        of the line.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @throws IllegalArgumentException if lineStart and lineLimit are not in the range
+     *         <code>0&lt;=lineStart&lt;lineLimit&lt;=getProcessedLength()</code>,
+     *         or if the specified line crosses a paragraph boundary
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Bidi createLineBidi(int lineStart, int lineLimit)
+    {
+        return setLine(lineStart, lineLimit);
+    }
+
+    /**
+     * Return true if the line is not left-to-right or right-to-left. This means
+     * it either has mixed runs of left-to-right and right-to-left text, or the
+     * base direction differs from the direction of the only run of text.
+     *
+     * @return true if the line is not left-to-right or right-to-left.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isMixed()
+    {
+        return (!isLeftToRight() && !isRightToLeft());
+    }
+
+    /**
+     * Return true if the line is all left-to-right text and the base direction
+     * is left-to-right.
+     *
+     * @return true if the line is all left-to-right text and the base direction
+     *         is left-to-right.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isLeftToRight()
+    {
+        return (getDirection() == LTR && (paraLevel & 1) == 0);
+    }
+
+    /**
+     * Return true if the line is all right-to-left text, and the base direction
+     * is right-to-left
+     *
+     * @return true if the line is all right-to-left text, and the base
+     *         direction is right-to-left
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isRightToLeft()
+    {
+        return (getDirection() == RTL && (paraLevel & 1) == 1);
+    }
+
+    /**
+     * Return true if the base direction is left-to-right
+     *
+     * @return true if the base direction is left-to-right
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean baseIsLeftToRight()
+    {
+        return (getParaLevel() == LTR);
+    }
+
+    /**
+     * Return the base level (0 if left-to-right, 1 if right-to-left).
+     *
+     * @return the base level
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getBaseLevel()
+    {
+        return getParaLevel();
+    }
+
+    /**
+     * Return the number of level runs.
+     *
+     * @return the number of level runs
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRunCount()
+    {
+        return countRuns();
+    }
+
+    /**
+     * Compute the logical to visual run mapping
+     */
+     void getLogicalToVisualRunsMap()
+     {
+        if (isGoodLogicalToVisualRunsMap) {
+            return;
+        }
+        int count = countRuns();
+        if ((logicalToVisualRunsMap == null) ||
+            (logicalToVisualRunsMap.length < count)) {
+            logicalToVisualRunsMap = new int[count];
+        }
+        int i;
+        long[] keys = new long[count];
+        for (i = 0; i < count; i++) {
+            keys[i] = ((long)(runs[i].start)<<32) + i;
+        }
+        Arrays.sort(keys);
+        for (i = 0; i < count; i++) {
+            logicalToVisualRunsMap[i] = (int)(keys[i] & 0x00000000FFFFFFFF);
+        }
+        keys = null;
+        isGoodLogicalToVisualRunsMap = true;
+     }
+
+    /**
+     * Return the level of the nth logical run in this line.
+     *
+     * @param run the index of the run, between 0 and <code>countRuns()-1</code>
+     *
+     * @return the level of the run
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>run</code> is not in
+     *         the range <code>0&lt;=run&lt;countRuns()</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRunLevel(int run)
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        verifyRange(run, 0, runCount);
+        getLogicalToVisualRunsMap();
+        return runs[logicalToVisualRunsMap[run]].level;
+    }
+
+    /**
+     * Return the index of the character at the start of the nth logical run in
+     * this line, as an offset from the start of the line.
+     *
+     * @param run the index of the run, between 0 and <code>countRuns()</code>
+     *
+     * @return the start of the run
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>run</code> is not in
+     *         the range <code>0&lt;=run&lt;countRuns()</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRunStart(int run)
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        verifyRange(run, 0, runCount);
+        getLogicalToVisualRunsMap();
+        return runs[logicalToVisualRunsMap[run]].start;
+    }
+
+    /**
+     * Return the index of the character past the end of the nth logical run in
+     * this line, as an offset from the start of the line. For example, this
+     * will return the length of the line for the last run on the line.
+     *
+     * @param run the index of the run, between 0 and <code>countRuns()</code>
+     *
+     * @return the limit of the run
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     * @throws IllegalArgumentException if <code>run</code> is not in
+     *         the range <code>0&lt;=run&lt;countRuns()</code>
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRunLimit(int run)
+    {
+        verifyValidParaOrLine();
+        BidiLine.getRuns(this);
+        verifyRange(run, 0, runCount);
+        getLogicalToVisualRunsMap();
+        int idx = logicalToVisualRunsMap[run];
+        int len = idx == 0 ? runs[idx].limit :
+                                runs[idx].limit - runs[idx-1].limit;
+        return runs[idx].start + len;
+    }
+
+    /**
+     * Return true if the specified text requires bidi analysis. If this returns
+     * false, the text will display left-to-right. Clients can then avoid
+     * constructing a Bidi object. Text in the Arabic Presentation Forms area of
+     * Unicode is presumed to already be shaped and ordered for display, and so
+     * will not cause this method to return true.
+     *
+     * @param text the text containing the characters to test
+     * @param start the start of the range of characters to test
+     * @param limit the limit of the range of characters to test
+     *
+     * @return true if the range of characters requires bidi analysis
+     *
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static boolean requiresBidi(char[] text,
+            int start,
+            int limit)
+    {
+        final int RTLMask = (1 << UCharacter.DIRECTIONALITY_RIGHT_TO_LEFT |
+                1 << UCharacter.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC |
+                1 << UCharacter.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING |
+                1 << UCharacter.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE |
+                1 << UCharacter.DIRECTIONALITY_ARABIC_NUMBER);
+
+        for (int i = start; i < limit; ++i) {
+            if (((1 << UCharacter.getDirection(text[i])) & RTLMask) != 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Reorder the objects in the array into visual order based on their levels.
+     * This is a utility method to use when you have a collection of objects
+     * representing runs of text in logical order, each run containing text at a
+     * single level. The elements at <code>index</code> from
+     * <code>objectStart</code> up to <code>objectStart + count</code> in the
+     * objects array will be reordered into visual order assuming
+     * each run of text has the level indicated by the corresponding element in
+     * the levels array (at <code>index - objectStart + levelStart</code>).
+     *
+     * @param levels an array representing the bidi level of each object
+     * @param levelStart the start position in the levels array
+     * @param objects the array of objects to be reordered into visual order
+     * @param objectStart the start position in the objects array
+     * @param count the number of objects to reorder
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static void reorderVisually(byte[] levels,
+            int levelStart,
+            Object[] objects,
+            int objectStart,
+            int count)
+    {
+        byte[] reorderLevels = new byte[count];
+        System.arraycopy(levels, levelStart, reorderLevels, 0, count);
+        int[] indexMap = reorderVisual(reorderLevels);
+        Object[] temp = new Object[count];
+        System.arraycopy(objects, objectStart, temp, 0, count);
+        for (int i = 0; i < count; ++i) {
+            objects[objectStart + i] = temp[indexMap[i]];
+        }
+    }
+
+    /**
+     * Take a <code>Bidi</code> object containing the reordering
+     * information for a piece of text (one or more paragraphs) set by
+     * <code>setPara()</code> or for a line of text set by <code>setLine()</code>
+     * and return a string containing the reordered text.
+     *
+     * <p>The text may have been aliased (only a reference was stored
+     * without copying the contents), thus it must not have been modified
+     * since the <code>setPara()</code> call.</p>
+     *
+     * This method preserves the integrity of characters with multiple
+     * code units and (optionally) combining characters.
+     * Characters in RTL runs can be replaced by mirror-image characters
+     * in the returned string. Note that "real" mirroring has to be done in a
+     * rendering engine by glyph selection and that for many "mirrored"
+     * characters there are no Unicode characters as mirror-image equivalents.
+     * There are also options to insert or remove Bidi control
+     * characters; see the descriptions of the return value and the
+     * <code>options</code> parameter, and of the option bit flags.
+     *
+     * @param options A bit set of options for the reordering that control
+     *                how the reordered text is written.
+     *                The options include mirroring the characters on a code
+     *                point basis and inserting LRM characters, which is used
+     *                especially for transforming visually stored text
+     *                to logically stored text (although this is still an
+     *                imperfect implementation of an "inverse Bidi" algorithm
+     *                because it uses the "forward Bidi" algorithm at its core).
+     *                The available options are:
+     *                <code>DO_MIRRORING</code>,
+     *                <code>INSERT_LRM_FOR_NUMERIC</code>,
+     *                <code>KEEP_BASE_COMBINING</code>,
+     *                <code>OUTPUT_REVERSE</code>,
+     *                <code>REMOVE_BIDI_CONTROLS</code>,
+     *                <code>STREAMING</code>
+     *
+     * @return The reordered text.
+     *         If the <code>INSERT_LRM_FOR_NUMERIC</code> option is set, then
+     *         the length of the returned string could be as large as
+     *         <code>getLength()+2*countRuns()</code>.<br>
+     *         If the <code>REMOVE_BIDI_CONTROLS</code> option is set, then the
+     *         length of the returned string may be less than
+     *         <code>getLength()</code>.<br>
+     *         If none of these options is set, then the length of the returned
+     *         string will be exactly <code>getProcessedLength()</code>.
+     *
+     * @throws IllegalStateException if this call is not preceded by a successful
+     *         call to <code>setPara</code> or <code>setLine</code>
+     *
+     * @see #DO_MIRRORING
+     * @see #INSERT_LRM_FOR_NUMERIC
+     * @see #KEEP_BASE_COMBINING
+     * @see #OUTPUT_REVERSE
+     * @see #REMOVE_BIDI_CONTROLS
+     * @see #OPTION_STREAMING
+     * @see #getProcessedLength
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String writeReordered(int options)
+    {
+        verifyValidParaOrLine();
+        if (length == 0) {
+            /* nothing to do */
+            return new String("");
+        }
+
+        return BidiWriter.writeReordered(this, options);
+    }
+
+    /**
+     * Reverse a Right-To-Left run of Unicode text.
+     *
+     * This method preserves the integrity of characters with multiple
+     * code units and (optionally) combining characters.
+     * Characters can be replaced by mirror-image characters
+     * in the destination buffer. Note that "real" mirroring has
+     * to be done in a rendering engine by glyph selection
+     * and that for many "mirrored" characters there are no
+     * Unicode characters as mirror-image equivalents.
+     * There are also options to insert or remove Bidi control
+     * characters.
+     *
+     * This method is the implementation for reversing RTL runs as part
+     * of <code>writeReordered()</code>. For detailed descriptions
+     * of the parameters, see there.
+     * Since no Bidi controls are inserted here, the output string length
+     * will never exceed <code>src.length()</code>.
+     *
+     * @see #writeReordered
+     *
+     * @param src The RTL run text.
+     *
+     * @param options A bit set of options for the reordering that control
+     *                how the reordered text is written.
+     *                See the <code>options</code> parameter in <code>writeReordered()</code>.
+     *
+     * @return The reordered text.
+     *         If the <code>REMOVE_BIDI_CONTROLS</code> option
+     *         is set, then the length of the returned string may be less than
+     *         <code>src.length()</code>. If this option is not set,
+     *         then the length of the returned string will be exactly
+     *         <code>src.length()</code>.
+     *
+     * @throws IllegalArgumentException if <code>src</code> is null.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String writeReverse(String src, int options)
+    {
+        /* error checking */
+        if (src == null) {
+            throw new IllegalArgumentException();
+        }
+
+        if (src.length() > 0) {
+            return BidiWriter.writeReverse(src, options);
+        } else {
+            /* nothing to do */
+            return new String("");
+        }
+    }
+
+}
diff --git a/src/com/ibm/icu/text/BidiClassifier.java b/src/com/ibm/icu/text/BidiClassifier.java
new file mode 100644
index 0000000..dee4725
--- /dev/null
+++ b/src/com/ibm/icu/text/BidiClassifier.java
@@ -0,0 +1,102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+/* Written by Simon Montagu, Matitiahu Allouche
+ * (ported from C code written by Markus W. Scherer)
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * Overrides default Bidi class values with custom ones.
+ *
+ * <p>The override mechanism requires to define a subclass of
+ * <code>BidiClassifier</code> which overrides the <code>classifier</code>
+ * method to assign customized Bidi classes.</p>
+ *
+ * <p>This may be useful for assigning Bidi classes to PUA characters, or
+ * for special application needs. For instance, an application may want to
+ * handle all spaces like L or R characters (according to the base direction)
+ * when creating the visual ordering of logical lines which are part of a report
+ * organized in columns: there should not be interaction between adjacent
+ * cells.</p>
+ *
+ * <p>To start using this customized
+ * classifier with a Bidi object, it must be specified by calling the
+ * <code>Bidi.setCustomClassifier</code> method; after that, the method
+ * <code>classify</code> of the custom <code>BidiClassifier</code> will be
+ * called by the UBA implementation any time the class of a character is
+ * to be determined.</p>
+ *
+ * @see Bidi#setCustomClassifier
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ */
+
+public /*abstract*/ class BidiClassifier {
+
+    /**
+     * This object can be used for any purpose by the caller to pass
+     * information to the BidiClassifier methods, and by the BidiClassifier
+     * methods themselves.<br>
+     * For instance, this object can be used to save a reference to
+     * a previous custom BidiClassifier while setting a new one, so as to
+     * allow chaining between them.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Object context;
+
+    /**
+     * @param context Context for this classifier instance.
+     *                May be null.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BidiClassifier(Object context) {
+        this.context = context;
+    }
+
+    /**
+     * Sets classifier context, which can be used either by a caller or
+     * callee for various purposes.
+     *
+     * @param context Context for this classifier instance.
+     *                May be null.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setContext(Object context) {
+        this.context = context;
+    }
+
+    /**
+     * Returns the current classifier context.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object getContext() {
+        return this.context;
+    }
+
+    /**
+     * Gets customized Bidi class for the code point <code>c</code>.
+     * <p>
+     * Default implementation, to be overridden.
+     *
+     * @param c Code point to be classified.
+     * @return An integer representing directional property / Bidi class for the
+     *         given code point <code>c</code>, or CLASS_DEFAULT to signify
+     *         that there is no need to override the standard Bidi class for
+     *         the given code point.
+     * @see Bidi#CLASS_DEFAULT
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int classify(int c) {
+        return Bidi.CLASS_DEFAULT;
+    }
+}
diff --git a/src/com/ibm/icu/text/BidiLine.java b/src/com/ibm/icu/text/BidiLine.java
new file mode 100644
index 0000000..fcfd969
--- /dev/null
+++ b/src/com/ibm/icu/text/BidiLine.java
@@ -0,0 +1,1234 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+/* Written by Simon Montagu, Matitiahu Allouche
+ * (ported from C code written by Markus W. Scherer)
+ */
+
+package com.ibm.icu.text;
+
+
+import java.util.Arrays;
+
+final class BidiLine {
+
+    /*
+     * General remarks about the functions in this file:
+     *
+     * These functions deal with the aspects of potentially mixed-directional
+     * text in a single paragraph or in a line of a single paragraph
+     * which has already been processed according to
+     * the Unicode 3.0 Bidi algorithm as defined in
+     * http://www.unicode.org/unicode/reports/tr9/ , version 13,
+     * also described in The Unicode Standard, Version 4.0.1 .
+     *
+     * This means that there is a Bidi object with a levels
+     * and a dirProps array.
+     * paraLevel and direction are also set.
+     * Only if the length of the text is zero, then levels==dirProps==NULL.
+     *
+     * The overall directionality of the paragraph
+     * or line is used to bypass the reordering steps if possible.
+     * Even purely RTL text does not need reordering there because
+     * the getLogical/VisualIndex() methods can compute the
+     * index on the fly in such a case.
+     *
+     * The implementation of the access to same-level-runs and of the reordering
+     * do attempt to provide better performance and less memory usage compared to
+     * a direct implementation of especially rule (L2) with an array of
+     * one (32-bit) integer per text character.
+     *
+     * Here, the levels array is scanned as soon as necessary, and a vector of
+     * same-level-runs is created. Reordering then is done on this vector.
+     * For each run of text positions that were resolved to the same level,
+     * only 8 bytes are stored: the first text position of the run and the visual
+     * position behind the run after reordering.
+     * One sign bit is used to hold the directionality of the run.
+     * This is inefficient if there are many very short runs. If the average run
+     * length is <2, then this uses more memory.
+     *
+     * In a further attempt to save memory, the levels array is never changed
+     * after all the resolution rules (Xn, Wn, Nn, In).
+     * Many methods have to consider the field trailingWSStart:
+     * if it is less than length, then there is an implicit trailing run
+     * at the paraLevel,
+     * which is not reflected in the levels array.
+     * This allows a line Bidi object to use the same levels array as
+     * its paragraph parent object.
+     *
+     * When a Bidi object is created for a line of a paragraph, then the
+     * paragraph's levels and dirProps arrays are reused by way of setting
+     * a pointer into them, not by copying. This again saves memory and forbids to
+     * change the now shared levels for (L1).
+     */
+
+    /* handle trailing WS (L1) -------------------------------------------------- */
+
+    /*
+     * setTrailingWSStart() sets the start index for a trailing
+     * run of WS in the line. This is necessary because we do not modify
+     * the paragraph's levels array that we just point into.
+     * Using trailingWSStart is another form of performing (L1).
+     *
+     * To make subsequent operations easier, we also include the run
+     * before the WS if it is at the paraLevel - we merge the two here.
+     *
+     * This method is called only from setLine(), so paraLevel is
+     * set correctly for the line even when contextual multiple paragraphs.
+     */
+
+    static void setTrailingWSStart(Bidi bidi)
+    {
+        byte[] dirProps = bidi.dirProps;
+        byte[] levels = bidi.levels;
+        int start = bidi.length;
+        byte paraLevel = bidi.paraLevel;
+
+        /* If the line is terminated by a block separator, all preceding WS etc...
+           are already set to paragraph level.
+           Setting trailingWSStart to pBidi->length will avoid changing the
+           level of B chars from 0 to paraLevel in getLevels when
+           orderParagraphsLTR==TRUE
+        */
+        if (Bidi.NoContextRTL(dirProps[start - 1]) == Bidi.B) {
+            bidi.trailingWSStart = start;   /* currently == bidi.length */
+            return;
+        }
+        /* go backwards across all WS, BN, explicit codes */
+        while (start > 0 &&
+                (Bidi.DirPropFlagNC(dirProps[start - 1]) & Bidi.MASK_WS) != 0) {
+            --start;
+        }
+
+        /* if the WS run can be merged with the previous run then do so here */
+        while (start > 0 && levels[start - 1] == paraLevel) {
+            --start;
+        }
+
+        bidi.trailingWSStart=start;
+    }
+
+    static Bidi setLine(Bidi paraBidi, int start, int limit) {
+        int length;
+
+        Bidi lineBidi = new Bidi();
+
+        /* set the values in lineBidi from its paraBidi parent */
+        /* class members are already initialized to 0 */
+        // lineBidi.paraBidi = null;        /* mark unfinished setLine */
+        // lineBidi.flags = 0;
+        // lineBidi.controlCount = 0;
+
+        length = lineBidi.length = lineBidi.originalLength =
+                lineBidi.resultLength = limit - start;
+
+        lineBidi.text = new char[length];
+        System.arraycopy(paraBidi.text, start, lineBidi.text, 0, length);
+        lineBidi.paraLevel = paraBidi.GetParaLevelAt(start);
+        lineBidi.paraCount = paraBidi.paraCount;
+        lineBidi.runs = new BidiRun[0];
+        lineBidi.reorderingMode = paraBidi.reorderingMode;
+        lineBidi.reorderingOptions = paraBidi.reorderingOptions;
+        if (paraBidi.controlCount > 0) {
+            int j;
+            for (j = start; j < limit; j++) {
+                if (Bidi.IsBidiControlChar(paraBidi.text[j])) {
+                    lineBidi.controlCount++;
+                }
+            }
+            lineBidi.resultLength -= lineBidi.controlCount;
+        }
+        /* copy proper subset of DirProps */
+        lineBidi.getDirPropsMemory(length);
+        lineBidi.dirProps = lineBidi.dirPropsMemory;
+        System.arraycopy(paraBidi.dirProps, start, lineBidi.dirProps, 0,
+                         length);
+        /* copy proper subset of Levels */
+        lineBidi.getLevelsMemory(length);
+        lineBidi.levels = lineBidi.levelsMemory;
+        System.arraycopy(paraBidi.levels, start, lineBidi.levels, 0,
+                         length);
+        lineBidi.runCount = -1;
+
+        if (paraBidi.direction != Bidi.MIXED) {
+            /* the parent is already trivial */
+            lineBidi.direction = paraBidi.direction;
+
+            /*
+             * The parent's levels are all either
+             * implicitly or explicitly ==paraLevel;
+             * do the same here.
+             */
+            if (paraBidi.trailingWSStart <= start) {
+                lineBidi.trailingWSStart = 0;
+            } else if (paraBidi.trailingWSStart < limit) {
+                lineBidi.trailingWSStart = paraBidi.trailingWSStart - start;
+            } else {
+                lineBidi.trailingWSStart = length;
+            }
+        } else {
+            byte[] levels = lineBidi.levels;
+            int i, trailingWSStart;
+            byte level;
+
+            setTrailingWSStart(lineBidi);
+            trailingWSStart = lineBidi.trailingWSStart;
+
+            /* recalculate lineBidi.direction */
+            if (trailingWSStart == 0) {
+                /* all levels are at paraLevel */
+                lineBidi.direction = (byte)(lineBidi.paraLevel & 1);
+            } else {
+                /* get the level of the first character */
+                level = (byte)(levels[0] & 1);
+
+                /* if there is anything of a different level, then the line
+                   is mixed */
+                if (trailingWSStart < length &&
+                    (lineBidi.paraLevel & 1) != level) {
+                    /* the trailing WS is at paraLevel, which differs from
+                       levels[0] */
+                    lineBidi.direction = Bidi.MIXED;
+                } else {
+                    /* see if levels[1..trailingWSStart-1] have the same
+                       direction as levels[0] and paraLevel */
+                    for (i = 1; ; i++) {
+                        if (i == trailingWSStart) {
+                            /* the direction values match those in level */
+                            lineBidi.direction = level;
+                            break;
+                        } else if ((levels[i] & 1) != level) {
+                            lineBidi.direction = Bidi.MIXED;
+                            break;
+                        }
+                    }
+                }
+            }
+
+            switch(lineBidi.direction) {
+                case Bidi.DIRECTION_LEFT_TO_RIGHT:
+                    /* make sure paraLevel is even */
+                    lineBidi.paraLevel = (byte)
+                        ((lineBidi.paraLevel + 1) & ~1);
+
+                    /* all levels are implicitly at paraLevel (important for
+                       getLevels()) */
+                    lineBidi.trailingWSStart = 0;
+                    break;
+                case Bidi.DIRECTION_RIGHT_TO_LEFT:
+                    /* make sure paraLevel is odd */
+                    lineBidi.paraLevel |= 1;
+
+                    /* all levels are implicitly at paraLevel (important for
+                       getLevels()) */
+                    lineBidi.trailingWSStart = 0;
+                    break;
+                default:
+                    break;
+            }
+        }
+        lineBidi.paraBidi = paraBidi;     /* mark successful setLine */
+        return lineBidi;
+    }
+
+    static byte getLevelAt(Bidi bidi, int charIndex)
+    {
+        /* return paraLevel if in the trailing WS run, otherwise the real level */
+        if (bidi.direction != Bidi.MIXED || charIndex >= bidi.trailingWSStart) {
+            return bidi.GetParaLevelAt(charIndex);
+        } else {
+            return bidi.levels[charIndex];
+        }
+    }
+
+    static byte[] getLevels(Bidi bidi)
+    {
+        int start = bidi.trailingWSStart;
+        int length = bidi.length;
+
+        if (start != length) {
+            /* the current levels array does not reflect the WS run */
+            /*
+             * After the previous if(), we know that the levels array
+             * has an implicit trailing WS run and therefore does not fully
+             * reflect itself all the levels.
+             * This must be a Bidi object for a line, and
+             * we need to create a new levels array.
+             */
+            /* bidi.paraLevel is ok even if contextual multiple paragraphs,
+               since bidi is a line object                                     */
+            Arrays.fill(bidi.levels, start, length, bidi.paraLevel);
+
+            /* this new levels array is set for the line and reflects the WS run */
+            bidi.trailingWSStart = length;
+        }
+        if (length < bidi.levels.length) {
+            byte[] levels = new byte[length];
+            System.arraycopy(bidi.levels, 0, levels, 0, length);
+            return levels;
+        }
+        return bidi.levels;
+    }
+
+    static BidiRun getLogicalRun(Bidi bidi, int logicalPosition)
+    {
+        /* this is done based on runs rather than on levels since levels have
+           a special interpretation when REORDER_RUNS_ONLY
+         */
+        BidiRun newRun = new BidiRun(), iRun;
+        getRuns(bidi);
+        int runCount = bidi.runCount;
+        int visualStart = 0, logicalLimit = 0;
+        iRun = bidi.runs[0];
+
+        for (int i = 0; i < runCount; i++) {
+            iRun = bidi.runs[i];
+            logicalLimit = iRun.start + iRun.limit - visualStart;
+            if ((logicalPosition >= iRun.start) &&
+                (logicalPosition < logicalLimit)) {
+                break;
+            }
+            visualStart = iRun.limit;
+        }
+        newRun.start = iRun.start;
+        newRun.limit = logicalLimit;
+        newRun.level = iRun.level;
+        return newRun;
+    }
+
+    static BidiRun getVisualRun(Bidi bidi, int runIndex)
+    {
+        int start = bidi.runs[runIndex].start;
+        int limit;
+        byte level = bidi.runs[runIndex].level;
+
+        if (runIndex > 0) {
+            limit = start +
+                    bidi.runs[runIndex].limit -
+                    bidi.runs[runIndex - 1].limit;
+        } else {
+            limit = start + bidi.runs[0].limit;
+        }
+        return new BidiRun(start, limit, level);
+    }
+
+    /* in trivial cases there is only one trivial run; called by getRuns() */
+    static void getSingleRun(Bidi bidi, byte level) {
+        /* simple, single-run case */
+        bidi.runs = bidi.simpleRuns;
+        bidi.runCount = 1;
+
+        /* fill and reorder the single run */
+        bidi.runs[0] = new BidiRun(0, bidi.length, level);
+    }
+
+    /* reorder the runs array (L2) ---------------------------------------------- */
+
+    /*
+     * Reorder the same-level runs in the runs array.
+     * Here, runCount>1 and maxLevel>=minLevel>=paraLevel.
+     * All the visualStart fields=logical start before reordering.
+     * The "odd" bits are not set yet.
+     *
+     * Reordering with this data structure lends itself to some handy shortcuts:
+     *
+     * Since each run is moved but not modified, and since at the initial maxLevel
+     * each sequence of same-level runs consists of only one run each, we
+     * don't need to do anything there and can predecrement maxLevel.
+     * In many simple cases, the reordering is thus done entirely in the
+     * index mapping.
+     * Also, reordering occurs only down to the lowest odd level that occurs,
+     * which is minLevel|1. However, if the lowest level itself is odd, then
+     * in the last reordering the sequence of the runs at this level or higher
+     * will be all runs, and we don't need the elaborate loop to search for them.
+     * This is covered by ++minLevel instead of minLevel|=1 followed
+     * by an extra reorder-all after the reorder-some loop.
+     * About a trailing WS run:
+     * Such a run would need special treatment because its level is not
+     * reflected in levels[] if this is not a paragraph object.
+     * Instead, all characters from trailingWSStart on are implicitly at
+     * paraLevel.
+     * However, for all maxLevel>paraLevel, this run will never be reordered
+     * and does not need to be taken into account. maxLevel==paraLevel is only reordered
+     * if minLevel==paraLevel is odd, which is done in the extra segment.
+     * This means that for the main reordering loop we don't need to consider
+     * this run and can --runCount. If it is later part of the all-runs
+     * reordering, then runCount is adjusted accordingly.
+     */
+    private static void reorderLine(Bidi bidi, byte minLevel, byte maxLevel) {
+
+        /* nothing to do? */
+        if (maxLevel<=(minLevel|1)) {
+            return;
+        }
+
+        BidiRun[] runs;
+        BidiRun tempRun;
+        byte[] levels;
+        int firstRun, endRun, limitRun, runCount;
+
+        /*
+         * Reorder only down to the lowest odd level
+         * and reorder at an odd minLevel in a separate, simpler loop.
+         * See comments above for why minLevel is always incremented.
+         */
+        ++minLevel;
+
+        runs = bidi.runs;
+        levels = bidi.levels;
+        runCount = bidi.runCount;
+
+        /* do not include the WS run at paraLevel<=old minLevel except in the simple loop */
+        if (bidi.trailingWSStart < bidi.length) {
+            --runCount;
+        }
+
+        while (--maxLevel >= minLevel) {
+            firstRun = 0;
+
+            /* loop for all sequences of runs */
+            for ( ; ; ) {
+                /* look for a sequence of runs that are all at >=maxLevel */
+                /* look for the first run of such a sequence */
+                while (firstRun < runCount && levels[runs[firstRun].start] < maxLevel) {
+                    ++firstRun;
+                }
+                if (firstRun >= runCount) {
+                    break;  /* no more such runs */
+                }
+
+                /* look for the limit run of such a sequence (the run behind it) */
+                for (limitRun = firstRun; ++limitRun < runCount &&
+                      levels[runs[limitRun].start]>=maxLevel; ) {}
+
+                /* Swap the entire sequence of runs from firstRun to limitRun-1. */
+                endRun = limitRun - 1;
+                while (firstRun < endRun) {
+                    tempRun = runs[firstRun];
+                    runs[firstRun] = runs[endRun];
+                    runs[endRun] = tempRun;
+                    ++firstRun;
+                    --endRun;
+                }
+
+                if (limitRun == runCount) {
+                    break;  /* no more such runs */
+                } else {
+                    firstRun = limitRun + 1;
+                }
+            }
+        }
+
+        /* now do maxLevel==old minLevel (==odd!), see above */
+        if ((minLevel & 1) == 0) {
+            firstRun = 0;
+
+            /* include the trailing WS run in this complete reordering */
+            if (bidi.trailingWSStart == bidi.length) {
+                --runCount;
+            }
+
+            /* Swap the entire sequence of all runs. (endRun==runCount) */
+            while (firstRun < runCount) {
+                tempRun = runs[firstRun];
+                runs[firstRun] = runs[runCount];
+                runs[runCount] = tempRun;
+                ++firstRun;
+                --runCount;
+            }
+        }
+    }
+
+    /* compute the runs array --------------------------------------------------- */
+
+    static int getRunFromLogicalIndex(Bidi bidi, int logicalIndex) {
+        BidiRun[] runs = bidi.runs;
+        int runCount = bidi.runCount, visualStart = 0, i, length, logicalStart;
+
+        for (i = 0; i < runCount; i++) {
+            length = runs[i].limit - visualStart;
+            logicalStart = runs[i].start;
+            if ((logicalIndex >= logicalStart) && (logicalIndex < (logicalStart+length))) {
+                return i;
+            }
+            visualStart += length;
+        }
+        /* we should never get here */
+        throw new IllegalStateException("Internal ICU error in getRunFromLogicalIndex");
+    }
+
+    /*
+     * Compute the runs array from the levels array.
+     * After getRuns() returns true, runCount is guaranteed to be >0
+     * and the runs are reordered.
+     * Odd-level runs have visualStart on their visual right edge and
+     * they progress visually to the left.
+     * If option OPTION_INSERT_MARKS is set, insertRemove will contain the
+     * sum of appropriate LRM/RLM_BEFORE/AFTER flags.
+     * If option OPTION_REMOVE_CONTROLS is set, insertRemove will contain the
+     * negative number of BiDi control characters within this run.
+     */
+    static void getRuns(Bidi bidi) {
+        /*
+         * This method returns immediately if the runs are already set. This
+         * includes the case of length==0 (handled in setPara)..
+         */
+        if (bidi.runCount >= 0) {
+            return;
+        }
+        if (bidi.direction != Bidi.MIXED) {
+            /* simple, single-run case - this covers length==0 */
+            /* bidi.paraLevel is ok even for contextual multiple paragraphs */
+            getSingleRun(bidi, bidi.paraLevel);
+        } else /* Bidi.MIXED, length>0 */ {
+            /* mixed directionality */
+            int length = bidi.length, limit;
+            byte[] levels = bidi.levels;
+            int i, runCount;
+            byte level = Bidi.LEVEL_DEFAULT_LTR;   /* initialize with no valid level */
+            /*
+             * If there are WS characters at the end of the line
+             * and the run preceding them has a level different from
+             * paraLevel, then they will form their own run at paraLevel (L1).
+             * Count them separately.
+             * We need some special treatment for this in order to not
+             * modify the levels array which a line Bidi object shares
+             * with its paragraph parent and its other line siblings.
+             * In other words, for the trailing WS, it may be
+             * levels[]!=paraLevel but we have to treat it like it were so.
+             */
+            limit = bidi.trailingWSStart;
+            /* count the runs, there is at least one non-WS run, and limit>0 */
+            runCount = 0;
+            for (i = 0; i < limit; ++i) {
+                /* increment runCount at the start of each run */
+                if (levels[i] != level) {
+                    ++runCount;
+                    level = levels[i];
+                }
+            }
+
+            /*
+             * We don't need to see if the last run can be merged with a trailing
+             * WS run because setTrailingWSStart() would have done that.
+             */
+            if (runCount == 1 && limit == length) {
+                /* There is only one non-WS run and no trailing WS-run. */
+                getSingleRun(bidi, levels[0]);
+            } else /* runCount>1 || limit<length */ {
+                /* allocate and set the runs */
+                BidiRun[] runs;
+                int runIndex, start;
+                byte minLevel = Bidi.MAX_EXPLICIT_LEVEL + 1;
+                byte maxLevel=0;
+
+                /* now, count a (non-mergeable) WS run */
+                if (limit < length) {
+                    ++runCount;
+                }
+
+                /* runCount > 1 */
+                bidi.getRunsMemory(runCount);
+                runs = bidi.runsMemory;
+
+                /* set the runs */
+                /* FOOD FOR THOUGHT: this could be optimized, e.g.:
+                 * 464->444, 484->444, 575->555, 595->555
+                 * However, that would take longer. Check also how it would
+                 * interact with BiDi control removal and inserting Marks.
+                 */
+                runIndex = 0;
+
+                /* search for the run limits and initialize visualLimit values with the run lengths */
+                i = 0;
+                do {
+                    /* prepare this run */
+                    start = i;
+                    level = levels[i];
+                    if (level < minLevel) {
+                        minLevel = level;
+                    }
+                    if (level > maxLevel) {
+                        maxLevel = level;
+                    }
+
+                    /* look for the run limit */
+                    while (++i < limit && levels[i] == level) {}
+
+                    /* i is another run limit */
+                    runs[runIndex] = new BidiRun(start, i - start, level);
+                    ++runIndex;
+                } while (i < limit);
+
+                if (limit < length) {
+                    /* there is a separate WS run */
+                    runs[runIndex] = new BidiRun(limit, length - limit, bidi.paraLevel);
+                    /* For the trailing WS run, bidi.paraLevel is ok even
+                       if contextual multiple paragraphs.                   */
+                    if (bidi.paraLevel < minLevel) {
+                        minLevel = bidi.paraLevel;
+                    }
+                }
+
+                /* set the object fields */
+                bidi.runs = runs;
+                bidi.runCount = runCount;
+
+                reorderLine(bidi, minLevel, maxLevel);
+
+                /* now add the direction flags and adjust the visualLimit's to be just that */
+                /* this loop will also handle the trailing WS run */
+                limit = 0;
+                for (i = 0; i < runCount; ++i) {
+                    runs[i].level = levels[runs[i].start];
+                    limit = (runs[i].limit += limit);
+                }
+
+                /* Set the embedding level for the trailing WS run. */
+                /* For a RTL paragraph, it will be the *first* run in visual order. */
+                /* For the trailing WS run, bidi.paraLevel is ok even if
+                   contextual multiple paragraphs.                          */
+                if (runIndex < runCount) {
+                    int trailingRun = ((bidi.paraLevel & 1) != 0)? 0 : runIndex;
+                    runs[trailingRun].level = bidi.paraLevel;
+                }
+            }
+        }
+
+        /* handle insert LRM/RLM BEFORE/AFTER run */
+        if (bidi.insertPoints.size > 0) {
+            Bidi.Point point;
+            int runIndex, ip;
+            for (ip = 0; ip < bidi.insertPoints.size; ip++) {
+                point = bidi.insertPoints.points[ip];
+                runIndex = getRunFromLogicalIndex(bidi, point.pos);
+                bidi.runs[runIndex].insertRemove |= point.flag;
+            }
+        }
+
+        /* handle remove BiDi control characters */
+        if (bidi.controlCount > 0) {
+            int runIndex, ic;
+            char c;
+            for (ic = 0; ic < bidi.length; ic++) {
+                c = bidi.text[ic];
+                if (Bidi.IsBidiControlChar(c)) {
+                    runIndex = getRunFromLogicalIndex(bidi, ic);
+                    bidi.runs[runIndex].insertRemove--;
+                }
+            }
+        }
+    }
+
+    static int[] prepareReorder(byte[] levels, byte[] pMinLevel, byte[] pMaxLevel)
+    {
+        int start;
+        byte level, minLevel, maxLevel;
+
+        if (levels == null || levels.length <= 0) {
+            return null;
+        }
+
+        /* determine minLevel and maxLevel */
+        minLevel = Bidi.MAX_EXPLICIT_LEVEL + 1;
+        maxLevel = 0;
+        for (start = levels.length; start>0; ) {
+            level = levels[--start];
+            if (level > Bidi.MAX_EXPLICIT_LEVEL + 1) {
+                return null;
+            }
+            if (level < minLevel) {
+                minLevel = level;
+            }
+            if (level > maxLevel) {
+                maxLevel = level;
+            }
+        }
+        pMinLevel[0] = minLevel;
+        pMaxLevel[0] = maxLevel;
+
+        /* initialize the index map */
+        int[] indexMap = new int[levels.length];
+        for (start = levels.length; start > 0; ) {
+            --start;
+            indexMap[start] = start;
+        }
+
+        return indexMap;
+    }
+
+    static int[] reorderLogical(byte[] levels)
+    {
+        byte[] aMinLevel = new byte[1];
+        byte[] aMaxLevel = new byte[1];
+        int start, limit, sumOfSosEos;
+        byte minLevel, maxLevel;
+        int[] indexMap = prepareReorder(levels, aMinLevel, aMaxLevel);
+        if (indexMap == null) {
+            return null;
+        }
+
+        minLevel = aMinLevel[0];
+        maxLevel = aMaxLevel[0];
+
+        /* nothing to do? */
+        if (minLevel == maxLevel && (minLevel & 1) == 0) {
+            return indexMap;
+        }
+
+        /* reorder only down to the lowest odd level */
+        minLevel |= 1;
+
+        /* loop maxLevel..minLevel */
+        do {
+            start = 0;
+
+            /* loop for all sequences of levels to reorder at the current maxLevel */
+            for ( ; ; ) {
+                /* look for a sequence of levels that are all at >=maxLevel */
+                /* look for the first index of such a sequence */
+                while (start < levels.length && levels[start] < maxLevel) {
+                    ++start;
+                }
+                if (start >= levels.length) {
+                    break;  /* no more such sequences */
+                }
+
+                /* look for the limit of such a sequence (the index behind it) */
+                for (limit = start; ++limit < levels.length && levels[limit] >= maxLevel; ) {}
+
+                /*
+                 * sos=start of sequence, eos=end of sequence
+                 *
+                 * The closed (inclusive) interval from sos to eos includes all the logical
+                 * and visual indexes within this sequence. They are logically and
+                 * visually contiguous and in the same range.
+                 *
+                 * For each run, the new visual index=sos+eos-old visual index;
+                 * we pre-add sos+eos into sumOfSosEos ->
+                 * new visual index=sumOfSosEos-old visual index;
+                 */
+                sumOfSosEos = start + limit - 1;
+
+                /* reorder each index in the sequence */
+                do {
+                    indexMap[start] = sumOfSosEos - indexMap[start];
+                } while (++start < limit);
+
+                /* start==limit */
+                if (limit == levels.length) {
+                    break;  /* no more such sequences */
+                } else {
+                    start = limit + 1;
+                }
+            }
+        } while (--maxLevel >= minLevel);
+        return indexMap;
+    }
+
+    static int[] reorderVisual(byte[] levels)
+    {
+        byte[] aMinLevel = new byte[1];
+        byte[] aMaxLevel = new byte[1];
+        int start, end, limit, temp;
+        byte minLevel, maxLevel;
+
+        int[] indexMap = prepareReorder(levels, aMinLevel, aMaxLevel);
+        if (indexMap == null) {
+            return null;
+        }
+
+        minLevel = aMinLevel[0];
+        maxLevel = aMaxLevel[0];
+
+        /* nothing to do? */
+        if (minLevel == maxLevel && (minLevel & 1) == 0) {
+            return indexMap;
+        }
+
+        /* reorder only down to the lowest odd level */
+        minLevel |= 1;
+
+        /* loop maxLevel..minLevel */
+        do {
+            start = 0;
+
+            /* loop for all sequences of levels to reorder at the current maxLevel */
+            for ( ; ; ) {
+                /* look for a sequence of levels that are all at >=maxLevel */
+                /* look for the first index of such a sequence */
+                while (start < levels.length && levels[start] < maxLevel) {
+                    ++start;
+                }
+                if (start >= levels.length) {
+                    break;  /* no more such runs */
+                }
+
+                /* look for the limit of such a sequence (the index behind it) */
+                for (limit = start; ++limit < levels.length && levels[limit] >= maxLevel; ) {}
+
+                /*
+                 * Swap the entire interval of indexes from start to limit-1.
+                 * We don't need to swap the levels for the purpose of this
+                 * algorithm: the sequence of levels that we look at does not
+                 * move anyway.
+                 */
+                end = limit - 1;
+                while (start < end) {
+                    temp = indexMap[start];
+                    indexMap[start] = indexMap[end];
+                    indexMap[end] = temp;
+
+                    ++start;
+                    --end;
+                }
+
+                if (limit == levels.length) {
+                    break;  /* no more such sequences */
+                } else {
+                    start = limit + 1;
+                }
+            }
+        } while (--maxLevel >= minLevel);
+
+        return indexMap;
+    }
+
+    static int getVisualIndex(Bidi bidi, int logicalIndex)
+    {
+        int visualIndex = Bidi.MAP_NOWHERE;
+
+        /* we can do the trivial cases without the runs array */
+        switch(bidi.direction) {
+        case Bidi.LTR:
+            visualIndex = logicalIndex;
+            break;
+        case Bidi.RTL:
+            visualIndex = bidi.length - logicalIndex - 1;
+            break;
+        default:
+            getRuns(bidi);
+            BidiRun[] runs = bidi.runs;
+            int i, visualStart = 0, offset, length;
+
+            /* linear search for the run, search on the visual runs */
+            for (i = 0; i < bidi.runCount; ++i) {
+                length = runs[i].limit - visualStart;
+                offset = logicalIndex - runs[i].start;
+                if (offset >= 0 && offset < length) {
+                    if (runs[i].isEvenRun()) {
+                        /* LTR */
+                        visualIndex = visualStart + offset;
+                    } else {
+                        /* RTL */
+                        visualIndex = visualStart + length - offset - 1;
+                    }
+                    break;                  /* exit for loop */
+                }
+                visualStart += length;
+            }
+            if (i >= bidi.runCount) {
+                return Bidi.MAP_NOWHERE;
+            }
+        }
+
+        if (bidi.insertPoints.size > 0) {
+            /* add the number of added marks until the calculated visual index */
+            BidiRun runs[] = bidi.runs;
+            int i, length, insertRemove;
+            int visualStart = 0, markFound = 0;
+            for (i = 0; ; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    markFound++;
+                }
+                /* is it the run containing the visual index? */
+                if (visualIndex < runs[i].limit) {
+                    return visualIndex + markFound;
+                }
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    markFound++;
+                }
+            }
+        }
+        else if (bidi.controlCount > 0) {
+            /* subtract the number of controls until the calculated visual index */
+            BidiRun[] runs = bidi.runs;
+            int i, j, start, limit, length, insertRemove;
+            int visualStart = 0, controlFound = 0;
+            char uchar = bidi.text[logicalIndex];
+            /* is the logical index pointing to a control ? */
+            if (Bidi.IsBidiControlChar(uchar)) {
+                return Bidi.MAP_NOWHERE;
+            }
+            /* loop on runs */
+            for (i = 0; ; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                /* calculated visual index is beyond this run? */
+                if (visualIndex >= runs[i].limit) {
+                    controlFound -= insertRemove;
+                    continue;
+                }
+                /* calculated visual index must be within current run */
+                if (insertRemove == 0) {
+                    return visualIndex - controlFound;
+                }
+                if (runs[i].isEvenRun()) {
+                    /* LTR: check from run start to logical index */
+                    start = runs[i].start;
+                    limit = logicalIndex;
+                } else {
+                    /* RTL: check from logical index to run end */
+                    start = logicalIndex + 1;
+                    limit = runs[i].start + length;
+                }
+                for (j = start; j < limit; j++) {
+                    uchar = bidi.text[j];
+                    if (Bidi.IsBidiControlChar(uchar)) {
+                        controlFound++;
+                    }
+                }
+                return visualIndex - controlFound;
+            }
+        }
+
+        return visualIndex;
+    }
+
+    static int getLogicalIndex(Bidi bidi, int visualIndex)
+    {
+        BidiRun[] runs;
+        int i, runCount, start;
+
+        runs = bidi.runs;
+        runCount = bidi.runCount;
+        if (bidi.insertPoints.size > 0) {
+            /* handle inserted LRM/RLM */
+            int markFound = 0, insertRemove;
+            int visualStart = 0, length;
+            /* subtract number of marks until visual index */
+            for (i = 0; ; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    if (visualIndex <= (visualStart+markFound)) {
+                        return Bidi.MAP_NOWHERE;
+                    }
+                    markFound++;
+                }
+                /* is adjusted visual index within this run? */
+                if (visualIndex < (runs[i].limit + markFound)) {
+                    visualIndex -= markFound;
+                    break;
+                }
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    if (visualIndex == (visualStart + length + markFound)) {
+                        return Bidi.MAP_NOWHERE;
+                    }
+                    markFound++;
+                }
+            }
+        }
+        else if (bidi.controlCount > 0) {
+            /* handle removed BiDi control characters */
+            int controlFound = 0, insertRemove, length;
+            int logicalStart, logicalEnd, visualStart = 0, j, k;
+            char uchar;
+            boolean evenRun;
+            /* add number of controls until visual index */
+            for (i = 0; ; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                /* is adjusted visual index beyond current run? */
+                if (visualIndex >= (runs[i].limit - controlFound + insertRemove)) {
+                    controlFound -= insertRemove;
+                    continue;
+                }
+                /* adjusted visual index is within current run */
+                if (insertRemove == 0) {
+                    visualIndex += controlFound;
+                    break;
+                }
+                /* count non-control chars until visualIndex */
+                logicalStart = runs[i].start;
+                evenRun = runs[i].isEvenRun();
+                logicalEnd = logicalStart + length - 1;
+                for (j = 0; j < length; j++) {
+                    k= evenRun ? logicalStart+j : logicalEnd-j;
+                    uchar = bidi.text[k];
+                    if (Bidi.IsBidiControlChar(uchar)) {
+                        controlFound++;
+                    }
+                    if ((visualIndex + controlFound) == (visualStart + j)) {
+                        break;
+                    }
+                }
+                visualIndex += controlFound;
+                break;
+            }
+        }
+        /* handle all cases */
+        if (runCount <= 10) {
+            /* linear search for the run */
+            for (i = 0; visualIndex >= runs[i].limit; ++i) {}
+        } else {
+            /* binary search for the run */
+            int begin = 0, limit = runCount;
+
+            /* the middle if() is guaranteed to find the run, we don't need a loop limit */
+            for ( ; ; ) {
+                i = (begin + limit) / 2;
+                if (visualIndex >= runs[i].limit) {
+                    begin = i + 1;
+                } else if (i==0 || visualIndex >= runs[i-1].limit) {
+                    break;
+                } else {
+                    limit = i;
+                }
+            }
+        }
+
+        start= runs[i].start;
+        if (runs[i].isEvenRun()) {
+            /* LTR */
+            /* the offset in runs[i] is visualIndex-runs[i-1].visualLimit */
+            if (i > 0) {
+                visualIndex -= runs[i - 1].limit;
+            }
+            return start + visualIndex;
+        } else {
+            /* RTL */
+            return start + runs[i].limit - visualIndex - 1;
+        }
+    }
+
+    static int[] getLogicalMap(Bidi bidi)
+    {
+        /* fill a logical-to-visual index map using the runs[] */
+        BidiRun[] runs = bidi.runs;
+        int logicalStart, visualStart, logicalLimit, visualLimit;
+        int[] indexMap = new int[bidi.length];
+        if (bidi.length > bidi.resultLength) {
+            Arrays.fill(indexMap, Bidi.MAP_NOWHERE);
+        }
+
+        visualStart = 0;
+        for (int j = 0; j < bidi.runCount; ++j) {
+            logicalStart = runs[j].start;
+            visualLimit = runs[j].limit;
+            if (runs[j].isEvenRun()) {
+                do { /* LTR */
+                    indexMap[logicalStart++] = visualStart++;
+                } while (visualStart < visualLimit);
+            } else {
+                logicalStart += visualLimit - visualStart;  /* logicalLimit */
+                do { /* RTL */
+                    indexMap[--logicalStart] = visualStart++;
+                } while (visualStart < visualLimit);
+            }
+            /* visualStart==visualLimit; */
+        }
+
+        if (bidi.insertPoints.size > 0) {
+            int markFound = 0, runCount = bidi.runCount;
+            int length, insertRemove, i, j;
+            runs = bidi.runs;
+            visualStart = 0;
+            /* add number of marks found until each index */
+            for (i = 0; i < runCount; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    markFound++;
+                }
+                if (markFound > 0) {
+                    logicalStart = runs[i].start;
+                    logicalLimit = logicalStart + length;
+                    for (j = logicalStart; j < logicalLimit; j++) {
+                        indexMap[j] += markFound;
+                    }
+                }
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    markFound++;
+                }
+            }
+        }
+        else if (bidi.controlCount > 0) {
+            int controlFound = 0, runCount = bidi.runCount;
+            int length, insertRemove, i, j, k;
+            boolean evenRun;
+            char uchar;
+            runs = bidi.runs;
+            visualStart = 0;
+            /* subtract number of controls found until each index */
+            for (i = 0; i < runCount; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                /* no control found within previous runs nor within this run */
+                if ((controlFound - insertRemove) == 0) {
+                    continue;
+                }
+                logicalStart = runs[i].start;
+                evenRun = runs[i].isEvenRun();
+                logicalLimit = logicalStart + length;
+                /* if no control within this run */
+                if (insertRemove == 0) {
+                    for (j = logicalStart; j < logicalLimit; j++) {
+                        indexMap[j] -= controlFound;
+                    }
+                    continue;
+                }
+                for (j = 0; j < length; j++) {
+                    k = evenRun ? logicalStart + j : logicalLimit - j - 1;
+                    uchar = bidi.text[k];
+                    if (Bidi.IsBidiControlChar(uchar)) {
+                        controlFound++;
+                        indexMap[k] = Bidi.MAP_NOWHERE;
+                        continue;
+                    }
+                    indexMap[k] -= controlFound;
+                }
+            }
+        }
+        return indexMap;
+    }
+
+    static int[] getVisualMap(Bidi bidi)
+    {
+        /* fill a visual-to-logical index map using the runs[] */
+        BidiRun[] runs = bidi.runs;
+        int logicalStart, visualStart, visualLimit;
+        int allocLength = bidi.length > bidi.resultLength ? bidi.length
+                                                          : bidi.resultLength;
+        int[] indexMap = new int[allocLength];
+
+        visualStart = 0;
+        int idx = 0;
+        for (int j = 0; j < bidi.runCount; ++j) {
+            logicalStart = runs[j].start;
+            visualLimit = runs[j].limit;
+            if (runs[j].isEvenRun()) {
+                do { /* LTR */
+                    indexMap[idx++] = logicalStart++;
+                } while (++visualStart < visualLimit);
+            } else {
+                logicalStart += visualLimit - visualStart;  /* logicalLimit */
+                do { /* RTL */
+                    indexMap[idx++] = --logicalStart;
+                } while (++visualStart < visualLimit);
+            }
+            /* visualStart==visualLimit; */
+        }
+
+        if (bidi.insertPoints.size > 0) {
+            int markFound = 0, runCount = bidi.runCount;
+            int insertRemove, i, j, k;
+            runs = bidi.runs;
+            /* count all inserted marks */
+            for (i = 0; i < runCount; i++) {
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    markFound++;
+                }
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    markFound++;
+                }
+            }
+            /* move back indexes by number of preceding marks */
+            k = bidi.resultLength;
+            for (i = runCount - 1; i >= 0 && markFound > 0; i--) {
+                insertRemove = runs[i].insertRemove;
+                if ((insertRemove & (Bidi.LRM_AFTER|Bidi.RLM_AFTER)) > 0) {
+                    indexMap[--k] = Bidi.MAP_NOWHERE;
+                    markFound--;
+                }
+                visualStart = i > 0 ? runs[i-1].limit : 0;
+                for (j = runs[i].limit - 1; j >= visualStart && markFound > 0; j--) {
+                    indexMap[--k] = indexMap[j];
+                }
+                if ((insertRemove & (Bidi.LRM_BEFORE|Bidi.RLM_BEFORE)) > 0) {
+                    indexMap[--k] = Bidi.MAP_NOWHERE;
+                    markFound--;
+                }
+            }
+        }
+        else if (bidi.controlCount > 0) {
+            int runCount = bidi.runCount, logicalEnd;
+            int insertRemove, length, i, j, k, m;
+            char uchar;
+            boolean evenRun;
+            runs = bidi.runs;
+            visualStart = 0;
+            /* move forward indexes by number of preceding controls */
+            k = 0;
+            for (i = 0; i < runCount; i++, visualStart += length) {
+                length = runs[i].limit - visualStart;
+                insertRemove = runs[i].insertRemove;
+                /* if no control found yet, nothing to do in this run */
+                if ((insertRemove == 0) && (k == visualStart)) {
+                    k += length;
+                    continue;
+                }
+                /* if no control in this run */
+                if (insertRemove == 0) {
+                    visualLimit = runs[i].limit;
+                    for (j = visualStart; j < visualLimit; j++) {
+                        indexMap[k++] = indexMap[j];
+                    }
+                    continue;
+                }
+                logicalStart = runs[i].start;
+                evenRun = runs[i].isEvenRun();
+                logicalEnd = logicalStart + length - 1;
+                for (j = 0; j < length; j++) {
+                    m = evenRun ? logicalStart + j : logicalEnd - j;
+                    uchar = bidi.text[m];
+                    if (!Bidi.IsBidiControlChar(uchar)) {
+                        indexMap[k++] = m;
+                    }
+                }
+            }
+        }
+        if (allocLength == bidi.resultLength) {
+            return indexMap;
+        }
+        int[] newMap = new int[bidi.resultLength];
+        System.arraycopy(indexMap, 0, newMap, 0, bidi.resultLength);
+        return newMap;
+    }
+
+    static int[] invertMap(int[] srcMap)
+    {
+        int srcLength = srcMap.length;
+        int destLength = -1, count = 0, i, srcEntry;
+
+        /* find highest value and count positive indexes in srcMap */
+        for (i = 0; i < srcLength; i++) {
+            srcEntry = srcMap[i];
+            if (srcEntry > destLength) {
+                destLength = srcEntry;
+            }
+            if (srcEntry >= 0) {
+                count++;
+            }
+        }
+        destLength++;           /* add 1 for origin 0 */
+        int[] destMap = new int[destLength];
+        if (count < destLength) {
+            /* we must fill unmatched destMap entries with -1 */
+            Arrays.fill(destMap, Bidi.MAP_NOWHERE);
+        }
+        for (i = 0; i < srcLength; i++) {
+            srcEntry = srcMap[i];
+            if (srcEntry >= 0) {
+                destMap[srcEntry] = i;
+            }
+        }
+        return destMap;
+    }
+}
diff --git a/src/com/ibm/icu/text/BidiRun.java b/src/com/ibm/icu/text/BidiRun.java
new file mode 100644
index 0000000..83b8108
--- /dev/null
+++ b/src/com/ibm/icu/text/BidiRun.java
@@ -0,0 +1,157 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+/* Written by Simon Montagu, Matitiahu Allouche
+ * (ported from C code written by Markus W. Scherer)
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * A BidiRun represents a sequence of characters at the same embedding level.
+ * The Bidi algorithm decomposes a piece of text into sequences of characters
+ * at the same embedding level, each such sequence is called a <quote>run</quote>.
+ *
+ * <p>A BidiRun represents such a run by storing its essential properties,
+ * but does not duplicate the characters which form the run.
+ *
+ * <p>The &quot;limit&quot; of the run is the position just after the
+ * last character, i.e., one more than that position.
+ *
+ * <p>This class has no public constructor, and its members cannot be
+ * modified by users.
+ *
+ * @see com.ibm.icu.text.Bidi
+ * @draft ICU 3.8
+ */
+public class BidiRun {
+
+    int start;              /* first logical position of the run */
+    int limit;              /* last visual position of the run +1 */
+    int insertRemove;       /* if >0, flags for inserting LRM/RLM before/after run,
+                               if <0, count of bidi controls within run            */
+    byte level;
+
+    /**
+     * Default constructor
+     *
+     * Note that members start and limit of a run instance have different
+     * meanings depending whether the run is part of the runs array of a Bidi
+     * object, or if it is a reference returned by getVisualRun() or
+     * getLogicalRun().
+     * For a member of the runs array of a Bidi object,
+     *   - start is the first logical position of the run in the source text.
+     *   - limit is one after the last visual position of the run.
+     * For a reference returned by getLogicalRun() or getVisualRun(),
+     *   - start is the first logical position of the run in the source text.
+     *   - limit is one after the last logical position of the run.
+     *
+     * @draft ICU 3.8
+     */
+    BidiRun()
+    {
+        this(0, 0, (byte)0);
+    }
+
+    /**
+     * Constructor
+     * @draft ICU 3.8
+     */
+    BidiRun(int start, int limit, byte embeddingLevel)
+    {
+        this.start = start;
+        this.limit = limit;
+        this.level = embeddingLevel;
+    }
+
+    /**
+     * Copy the content of a BidiRun instance
+     * @draft ICU 3.8
+     */
+    void copyFrom(BidiRun run)
+    {
+        this.start = run.start;
+        this.limit = run.limit;
+        this.level = run.level;
+        this.insertRemove = run.insertRemove;
+    }
+
+    /**
+     * Get the first logical position of the run in the source text
+     * @draft ICU 3.8
+     */
+    public int getStart()
+    {
+        return start;
+    }
+
+    /**
+     * Get position of one character after the end of the run in the source text
+     * @draft ICU 3.8
+     */
+    public int getLimit()
+    {
+        return limit;
+    }
+
+    /**
+     * Get length of run
+     * @draft ICU 3.8
+     */
+    public int getLength()
+    {
+        return limit - start;
+    }
+
+    /**
+     * Get level of run
+     * @draft ICU 3.8
+     */
+    public byte getEmbeddingLevel()
+    {
+        return level;
+    }
+
+    /**
+     * Check if run level is odd
+     * @return true if the embedding level of this run is odd, i.e. it is a
+     *  right-to-left run.
+     * @draft ICU 3.8
+     */
+    public boolean isOddRun()
+    {
+        return (level & 1) == 1;
+    }
+
+    /**
+     * Check if run level is even
+     * @return true if the embedding level of this run is even, i.e. it is a
+     *  left-to-right run.
+     * @draft ICU 3.8
+     */
+    public boolean isEvenRun()
+    {
+        return (level & 1) == 0;
+    }
+
+    /**
+     * Get direction of run
+     * @draft ICU 3.8
+     */
+    public byte getDirection()
+    {
+        return (byte)(level & 1);
+    }
+
+    /**
+     * String to display run
+     * @draft ICU 3.8
+     */
+    public String toString()
+    {
+        return new String("BidiRun " + start + " - " + limit + " @ " + level);
+    }
+}
diff --git a/src/com/ibm/icu/text/BidiWriter.java b/src/com/ibm/icu/text/BidiWriter.java
new file mode 100644
index 0000000..8fc54ff
--- /dev/null
+++ b/src/com/ibm/icu/text/BidiWriter.java
@@ -0,0 +1,431 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+/* Written by Simon Montagu, Matitiahu Allouche
+ * (ported from C code written by Markus W. Scherer)
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Bidi;
+
+final class BidiWriter {
+
+    /** Bidi control code points */
+    static final char LRM_CHAR = 0x200e;
+    static final char RLM_CHAR = 0x200f;
+    static final int MASK_R_AL = (1 << UCharacter.RIGHT_TO_LEFT |
+                                  1 << UCharacter.RIGHT_TO_LEFT_ARABIC);
+
+    private static boolean IsCombining(int type)
+    {
+        return ((1<<type &
+                (1<<UCharacter.NON_SPACING_MARK |
+                 1<<UCharacter.COMBINING_SPACING_MARK |
+                 1<<UCharacter.ENCLOSING_MARK)) != 0);
+    }
+
+    /*
+     * When we have OUTPUT_REVERSE set on writeReordered(), then we
+     * semantically write RTL runs in reverse and later reverse them again.
+     * Instead, we actually write them in forward order to begin with.
+     * However, if the RTL run was to be mirrored, we need to mirror here now
+     * since the implicit second reversal must not do it.
+     * It looks strange to do mirroring in LTR output, but it is only because
+     * we are writing RTL output in reverse.
+     */
+    private static String doWriteForward(String src, int options) {
+        /* optimize for several combinations of options */
+        switch(options&(Bidi.REMOVE_BIDI_CONTROLS|Bidi.DO_MIRRORING)) {
+        case 0: {
+            /* simply copy the LTR run to the destination */
+            return new String(src);
+        }
+        case Bidi.DO_MIRRORING: {
+            StringBuffer dest = new StringBuffer(src.length());
+
+            /* do mirroring */
+            int i=0;
+            int c;
+
+            do {
+                c = UTF16.charAt(src, i);
+                i += UTF16.getCharCount(c);
+                UTF16.append(dest, UCharacter.getMirror(c));
+            } while(i < src.length());
+            return dest.toString();
+        }
+        case Bidi.REMOVE_BIDI_CONTROLS: {
+            StringBuffer dest = new StringBuffer(src.length());
+
+            /* copy the LTR run and remove any Bidi control characters */
+            int i = 0;
+            char c;
+            do {
+                c = src.charAt(i++);
+                if(!Bidi.IsBidiControlChar(c)) {
+                    dest.append(c);
+                }
+            } while(i < src.length());
+            return dest.toString();
+        }
+        default: {
+            StringBuffer dest = new StringBuffer(src.length());
+
+            /* remove Bidi control characters and do mirroring */
+            int i = 0;
+            int c;
+            do {
+                c = UTF16.charAt(src, i);
+                i += UTF16.getCharCount(c);
+                if(!Bidi.IsBidiControlChar(c)) {
+                    UTF16.append(dest, UCharacter.getMirror(c));
+                }
+            } while(i < src.length());
+            return dest.toString();
+        }
+        } /* end of switch */
+    }
+
+    private static String doWriteForward(char[] text, int start, int limit,
+                                         int options)
+    {
+        return doWriteForward(new String(text, start, limit - start), options);
+    }
+
+    static String writeReverse(String src, int options) {
+        /*
+         * RTL run -
+         *
+         * RTL runs need to be copied to the destination in reverse order
+         * of code points, not code units, to keep Unicode characters intact.
+         *
+         * The general strategy for this is to read the source text
+         * in backward order, collect all code units for a code point
+         * (and optionally following combining characters, see below),
+         * and copy all these code units in ascending order
+         * to the destination for this run.
+         *
+         * Several options request whether combining characters
+         * should be kept after their base characters,
+         * whether Bidi control characters should be removed, and
+         * whether characters should be replaced by their mirror-image
+         * equivalent Unicode characters.
+         */
+        StringBuffer dest = new StringBuffer(src.length());
+
+        /* optimize for several combinations of options */
+        switch (options &
+                (Bidi.REMOVE_BIDI_CONTROLS |
+                 Bidi.DO_MIRRORING |
+                 Bidi.KEEP_BASE_COMBINING)) {
+
+        case 0:
+            /*
+             * With none of the "complicated" options set, the destination
+             * run will have the same length as the source run,
+             * and there is no mirroring and no keeping combining characters
+             * with their base characters.
+             *
+             * XXX: or dest = UTF16.reverse(new StringBuffer(src));
+             */
+
+            int srcLength = src.length();
+
+            /* preserve character integrity */
+            do {
+                /* i is always after the last code unit known to need to be kept
+                 *  in this segment */
+                int i = srcLength;
+
+                /* collect code units for one base character */
+                srcLength -= UTF16.getCharCount(UTF16.charAt(src,
+                                                             srcLength - 1));
+
+                /* copy this base character */
+                dest.append(src.substring(srcLength, i));
+            } while(srcLength > 0);
+            break;
+
+        case Bidi.KEEP_BASE_COMBINING:
+            /*
+             * Here, too, the destination
+             * run will have the same length as the source run,
+             * and there is no mirroring.
+             * We do need to keep combining characters with their base
+             * characters.
+             */
+            srcLength = src.length();
+
+            /* preserve character integrity */
+            do {
+                /* i is always after the last code unit known to need to be kept
+                 *  in this segment */
+                int c;
+                int i = srcLength;
+
+                /* collect code units and modifier letters for one base
+                 * character */
+                do {
+                    c = UTF16.charAt(src, srcLength - 1);
+                    srcLength -= UTF16.getCharCount(c);
+                } while(srcLength > 0 && IsCombining(UCharacter.getType(c)));
+
+                /* copy this "user character" */
+                dest.append(src.substring(srcLength, i));
+            } while(srcLength > 0);
+            break;
+
+        default:
+            /*
+             * With several "complicated" options set, this is the most
+             * general and the slowest copying of an RTL run.
+             * We will do mirroring, remove Bidi controls, and
+             * keep combining characters with their base characters
+             * as requested.
+             */
+            srcLength = src.length();
+
+            /* preserve character integrity */
+            do {
+                /* i is always after the last code unit known to need to be kept
+                 *  in this segment */
+                int i = srcLength;
+
+                /* collect code units for one base character */
+                int c = UTF16.charAt(src, srcLength - 1);
+                srcLength -= UTF16.getCharCount(c);
+                if ((options & Bidi.KEEP_BASE_COMBINING) != 0) {
+                    /* collect modifier letters for this base character */
+                    while(srcLength > 0 && IsCombining(UCharacter.getType(c))) {
+                        c = UTF16.charAt(src, srcLength - 1);
+                        srcLength -= UTF16.getCharCount(c);
+                    }
+                }
+
+                if ((options & Bidi.REMOVE_BIDI_CONTROLS) != 0 &&
+                    Bidi.IsBidiControlChar(c)) {
+                    /* do not copy this Bidi control character */
+                    continue;
+                }
+
+                /* copy this "user character" */
+                int j = srcLength;
+                if((options & Bidi.DO_MIRRORING) != 0) {
+                    /* mirror only the base character */
+                    c = UCharacter.getMirror(c);
+                    UTF16.append(dest, c);
+                    j += UTF16.getCharCount(c);
+                }
+                dest.append(src.substring(j, i));
+            } while(srcLength > 0);
+            break;
+        } /* end of switch */
+
+        return dest.toString();
+    }
+
+    static String doWriteReverse(char[] text, int start, int limit, int options)
+    {
+        return writeReverse(new String(text, start, limit - start), options);
+    }
+
+    static String writeReordered(Bidi bidi, int options)
+    {
+        int run, runCount;
+        StringBuffer dest;
+        char[] text = bidi.text;
+        runCount = bidi.countRuns();
+
+        /*
+         * Option "insert marks" implies Bidi.INSERT_LRM_FOR_NUMERIC if the
+         * reordering mode (checked below) is appropriate.
+         */
+        if ((bidi.reorderingOptions & Bidi.OPTION_INSERT_MARKS) != 0) {
+            options |= Bidi.INSERT_LRM_FOR_NUMERIC;
+            options &= ~Bidi.REMOVE_BIDI_CONTROLS;
+        }
+        /*
+         * Option "remove controls" implies Bidi.REMOVE_BIDI_CONTROLS
+         * and cancels Bidi.INSERT_LRM_FOR_NUMERIC.
+         */
+        if ((bidi.reorderingOptions & Bidi.OPTION_REMOVE_CONTROLS) != 0) {
+            options |= Bidi.REMOVE_BIDI_CONTROLS;
+            options &= ~Bidi.INSERT_LRM_FOR_NUMERIC;
+        }
+        /*
+         * If we do not perform the "inverse Bidi" algorithm, then we
+         * don't need to insert any LRMs, and don't need to test for it.
+         */
+        if ((bidi.reorderingMode != Bidi.REORDER_INVERSE_NUMBERS_AS_L) &&
+            (bidi.reorderingMode != Bidi.REORDER_INVERSE_LIKE_DIRECT)  &&
+            (bidi.reorderingMode != Bidi.REORDER_INVERSE_FOR_NUMBERS_SPECIAL) &&
+            (bidi.reorderingMode != Bidi.REORDER_RUNS_ONLY)) {
+            options &= ~Bidi.INSERT_LRM_FOR_NUMERIC;
+        }
+        dest = new StringBuffer((options & Bidi.INSERT_LRM_FOR_NUMERIC) != 0 ?
+                                 bidi.length * 2 : bidi.length);
+        /*
+         * Iterate through all visual runs and copy the run text segments to
+         * the destination, according to the options.
+         *
+         * The tests for where to insert LRMs ignore the fact that there may be
+         * BN codes or non-BMP code points at the beginning and end of a run;
+         * they may insert LRMs unnecessarily but the tests are faster this way
+         * (this would have to be improved for UTF-8).
+         */
+        if ((options & Bidi.OUTPUT_REVERSE) == 0) {
+            /* forward output */
+            if ((options & Bidi.INSERT_LRM_FOR_NUMERIC) == 0) {
+                /* do not insert Bidi controls */
+                for (run = 0; run < runCount; ++run) {
+                    BidiRun bidiRun = bidi.getVisualRun(run);
+                    if (bidiRun.isEvenRun()) {
+                        dest.append(doWriteForward(text, bidiRun.start,
+                                                   bidiRun.limit,
+                                                   options & ~Bidi.DO_MIRRORING));
+                     } else {
+                        dest.append(doWriteReverse(text, bidiRun.start,
+                                                   bidiRun.limit, options));
+                     }
+                }
+            } else {
+                /* insert Bidi controls for "inverse Bidi" */
+                byte[] dirProps = bidi.dirProps;
+                char uc;
+                int markFlag;
+
+                for (run = 0; run < runCount; ++run) {
+                    BidiRun bidiRun = bidi.getVisualRun(run);
+                    markFlag=0;
+                    /* check if something relevant in insertPoints */
+                    markFlag = bidi.runs[run].insertRemove;
+                    if (markFlag < 0) { /* bidi controls count */
+                        markFlag = 0;
+                    }
+                    if (bidiRun.isEvenRun()) {
+                        if (bidi.isInverse() &&
+                                dirProps[bidiRun.start] != Bidi.L) {
+                            markFlag |= Bidi.LRM_BEFORE;
+                        }
+                        if ((markFlag & Bidi.LRM_BEFORE) != 0) {
+                            uc = LRM_CHAR;
+                        } else if ((markFlag & Bidi.RLM_BEFORE) != 0) {
+                            uc = RLM_CHAR;
+                        } else {
+                            uc = 0;
+                        }
+                        if (uc != 0) {
+                            dest.append(uc);
+                        }
+                        dest.append(doWriteForward(text,
+                                                   bidiRun.start, bidiRun.limit,
+                                                   options & ~Bidi.DO_MIRRORING));
+
+                        if (bidi.isInverse() &&
+                             dirProps[bidiRun.limit - 1] != Bidi.L) {
+                            markFlag |= Bidi.LRM_AFTER;
+                        }
+                        if ((markFlag & Bidi.LRM_AFTER) != 0) {
+                            uc = LRM_CHAR;
+                        } else if ((markFlag & Bidi.RLM_AFTER) != 0) {
+                            uc = RLM_CHAR;
+                        } else {
+                            uc = 0;
+                        }
+                        if (uc != 0) {
+                            dest.append(uc);
+                        }
+                    } else { /* RTL run */
+                        if (bidi.isInverse() &&
+                            !bidi.testDirPropFlagAt(MASK_R_AL,
+                                                    bidiRun.limit - 1)) {
+                            markFlag |= Bidi.RLM_BEFORE;
+                        }
+                        if ((markFlag & Bidi.LRM_BEFORE) != 0) {
+                            uc = LRM_CHAR;
+                        } else if ((markFlag & Bidi.RLM_BEFORE) != 0) {
+                            uc = RLM_CHAR;
+                        } else {
+                            uc = 0;
+                        }
+                        if (uc != 0) {
+                            dest.append(uc);
+                        }
+                        dest.append(doWriteReverse(text, bidiRun.start,
+                                                   bidiRun.limit, options));
+
+                        if(bidi.isInverse() &&
+                                (MASK_R_AL & Bidi.DirPropFlag(dirProps[bidiRun.start])) == 0) {
+                            markFlag |= Bidi.RLM_AFTER;
+                        }
+                        if ((markFlag & Bidi.LRM_AFTER) != 0) {
+                            uc = LRM_CHAR;
+                        } else if ((markFlag & Bidi.RLM_AFTER) != 0) {
+                            uc = RLM_CHAR;
+                        } else {
+                            uc = 0;
+                        }
+                        if (uc != 0) {
+                            dest.append(uc);
+                        }
+                    }
+                }
+            }
+        } else {
+            /* reverse output */
+            if((options & Bidi.INSERT_LRM_FOR_NUMERIC) == 0) {
+                /* do not insert Bidi controls */
+                for(run = runCount; --run >= 0; ) {
+                    BidiRun bidiRun = bidi.getVisualRun(run);
+                    if (bidiRun.isEvenRun()) {
+                        dest.append(doWriteReverse(text,
+                                                   bidiRun.start, bidiRun.limit,
+                                                   options & ~Bidi.DO_MIRRORING));
+                    } else {
+                        dest.append(doWriteForward(text, bidiRun.start,
+                                                   bidiRun.limit, options));
+                    }
+                }
+            } else {
+                /* insert Bidi controls for "inverse Bidi" */
+
+                byte[] dirProps = bidi.dirProps;
+
+                for (run = runCount; --run >= 0; ) {
+                    /* reverse output */
+                    BidiRun bidiRun = bidi.getVisualRun(run);
+                    if (bidiRun.isEvenRun()) {
+                        if (dirProps[bidiRun.limit - 1] != Bidi.L) {
+                            dest.append(LRM_CHAR);
+                        }
+
+                        dest.append(doWriteReverse(text, bidiRun.start,
+                                bidiRun.limit, options & ~Bidi.DO_MIRRORING));
+
+                        if (dirProps[bidiRun.start] != Bidi.L) {
+                            dest.append(LRM_CHAR);
+                        }
+                    } else {
+                        if ((MASK_R_AL & Bidi.DirPropFlag(dirProps[bidiRun.start])) == 0) {
+                            dest.append(RLM_CHAR);
+                        }
+
+                        dest.append(doWriteForward(text, bidiRun.start,
+                                                   bidiRun.limit, options));
+
+                        if ((MASK_R_AL & Bidi.DirPropFlag(dirProps[bidiRun.limit - 1])) == 0) {
+                            dest.append(RLM_CHAR);
+                        }
+                    }
+                }
+            }
+        }
+
+        return dest.toString();
+    }
+}
diff --git a/src/com/ibm/icu/text/BreakCTDictionary.java b/src/com/ibm/icu/text/BreakCTDictionary.java
new file mode 100644
index 0000000..c96e9c7
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakCTDictionary.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUBinary;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.text.CharacterIterator;
+
+/**
+ * This is a class used to load in the compact trie dictionary file
+ * used for dictionary based break iteration. 
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+class BreakCTDictionary {
+    private CompactTrieHeader fData;
+
+    static class CompactTrieHeader {
+        int size; // Size of data in bytes
+
+        int magic; // Magic number (including versions)
+
+        int nodeCount; // Number of entries in offsets[]
+
+        int root; // Node number of the root node
+
+        int []offset; // Offsets to nodes from start of data
+
+        CompactTrieHeader() {
+            size = 0;
+            magic = 0;
+            nodeCount = 0;
+            root = 0;
+            offset = null;
+        }
+    }
+
+    static final class CompactTrieNodeFlags {
+        static final int kVerticalNode = 0x1000; // This is a vertical node
+
+        static final int kParentEndsWord = 0x2000; // The node whose equal link
+                                                    // points to this ends a
+                                                    // word
+
+        static final int kReservedFlag1 = 0x4000;
+
+        static final int kReservedFlag2 = 0x8000;
+
+        static final int kCountMask = 0x0FFF; // The count portion of
+                                                // flagscount
+
+        static final int kFlagMask = 0xF000; // The flags portion of
+                                                // flagscount
+    }
+
+    // The two node types are distinguished by the kVerticalNode flag.
+    static class CompactTrieHorizontalNode {
+        char ch; // UChar
+
+        int equal; // Equal link node index
+
+        CompactTrieHorizontalNode(char newCh, int newEqual) {
+            ch = newCh;
+            equal = newEqual;
+        }
+    }
+
+    static class CompactTrieVerticalNode {
+        int equal; // Equal link node index
+
+        char chars[]; // Code units
+
+        CompactTrieVerticalNode() {
+            equal = 0;
+            chars = null;
+        }
+    }
+
+    private CompactTrieNodes getCompactTrieNode(int node) {
+        return nodes[node];
+    }
+
+    // private class to hold both node information
+    static class CompactTrieNodes {
+        short flagscount; // Count of sub-entries, plus flags
+
+        CompactTrieHorizontalNode[] hnode;
+
+        CompactTrieVerticalNode vnode;
+
+        CompactTrieNodes() {
+            flagscount = 0;
+            hnode = null;
+            vnode = null;
+        }
+    }
+
+    private CompactTrieNodes[] nodes;
+
+    // Constructor
+    public BreakCTDictionary(InputStream is) throws IOException {
+        ICUBinary.readHeader(is, DATA_FORMAT_ID, null);
+
+        DataInputStream in = new DataInputStream(is);
+        // Get header information
+        fData = new CompactTrieHeader();
+        fData.size = in.readInt();
+        fData.magic = in.readInt();
+        fData.nodeCount = in.readShort();
+        fData.root = in.readShort();
+
+        loadBreakCTDictionary(in);
+    }
+
+    // Loads the compact trie dictionary file into the CompactTrieNodes
+    private void loadBreakCTDictionary(DataInputStream in) throws IOException {
+        // skip over offset information
+        for (int i = 0; i < fData.nodeCount; i++) {
+            in.readInt();
+        }
+
+        // Create compact trie dictionary
+        nodes = new CompactTrieNodes[fData.nodeCount];
+        nodes[0] = new CompactTrieNodes();
+
+        // Load in compact trie dictionary
+        for (int j = 1; j < fData.nodeCount; j++) {
+            nodes[j] = new CompactTrieNodes();
+            nodes[j].flagscount = in.readShort();
+
+            int count = nodes[j].flagscount & CompactTrieNodeFlags.kCountMask;
+
+            if (count != 0) {
+                boolean isVerticalNode = (nodes[j].flagscount & CompactTrieNodeFlags.kVerticalNode) != 0;
+
+                // Vertical node
+                if (isVerticalNode) {
+                    nodes[j].vnode = new CompactTrieVerticalNode();
+                    nodes[j].vnode.equal = in.readShort();
+
+                    nodes[j].vnode.chars = new char[count];
+                    for (int l = 0; l < count; l++) {
+                        nodes[j].vnode.chars[l] = in.readChar();
+                    }
+                } else { // Horizontal node
+                    nodes[j].hnode = new CompactTrieHorizontalNode[count];
+                    for (int n = 0; n < count; n++) {
+                        nodes[j].hnode[n] = new CompactTrieHorizontalNode(in
+                                .readChar(), in.readShort());
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Find dictionary words that match the text.
+     * 
+     * @param text
+     *            A CharacterIterator representing the text. The iterator is
+     *            left after the longest prefix match in the dictionary.
+     * @param maxLength
+     *            The maximum number of code units to match.
+     * @param lengths
+     *            An array that is filled with the lengths of words that
+     *            matched.
+     * @param count
+     *            Filled with the number of elements output in lengths.
+     * @param limit
+     *            The size of the lengths array; this limits the number of words
+     *            output.
+     * @return The number of characters in text that were matched.
+     */
+    public int matches(CharacterIterator text, int maxLength, int lengths[],
+            int count[], int limit) {
+        // Current implementation works in UTF-16 space
+        CompactTrieNodes node = getCompactTrieNode(fData.root);
+        int mycount = 0;
+
+        char uc = (char) text.current();
+        int i = 0;
+        boolean exitFlag = false;
+
+        while (node != null) {
+            // Check if the node we just exited ends a word
+            if (limit > 0
+                    && (node.flagscount & CompactTrieNodeFlags.kParentEndsWord) != 0) {
+                lengths[mycount++] = i;
+                --limit;
+            }
+            // Check that we haven't exceeded the maximum number of input
+            // characters.
+            // We have to do that here rather than in the while condition so
+            // that
+            // we can check for ending of a word above.
+            if (i >= maxLength) {
+                break;
+            }
+
+            int nodeCount = (node.flagscount & CompactTrieNodeFlags.kCountMask);
+            if (nodeCount == 0) {
+                // Special terminal node; return now
+                break;
+            }
+            if ((node.flagscount & CompactTrieNodeFlags.kVerticalNode) != 0) {
+                // Vertical node; check all the characters in it
+                CompactTrieVerticalNode vnode = node.vnode;
+                for (int j = 0; j < nodeCount && i < maxLength; j++) {
+                    if (uc != vnode.chars[j]) {
+                        // We hit a non equal character return;
+                        exitFlag = true;
+                        break;
+                    }
+                    text.next();
+                    uc = (char) text.current();
+                    i++;
+                }
+                if (exitFlag) {
+                    break;
+                }
+                // To get here, we must have come through the whole list successfully;
+                // go on to the next node. Note that a word cannot end in the middle 
+                // of a vertical node.
+                node = getCompactTrieNode(vnode.equal);
+            } else {
+                // Horizontal node; do binary search
+                CompactTrieHorizontalNode[] hnode = node.hnode;
+                int low = 0;
+                int high = nodeCount - 1;
+                int middle;
+                node = null; // If we don't find a match, we'll fall out of the loop
+                while (high >= low) {
+                    middle = (high + low) / 2;
+                    if (uc == hnode[middle].ch) {
+                        // We hit a match; get the next node and next character
+                        node = getCompactTrieNode(hnode[middle].equal);
+                        text.next();
+                        uc = (char) text.current();
+                        i++;
+                        break;
+                    } else if (uc < hnode[middle].ch) {
+                        high = middle - 1;
+                    } else {
+                        low = middle + 1;
+                    }
+                }
+            }
+        }
+
+        count[0] = mycount;
+        return i;
+    }
+
+    // Use for reading the header portion of the file
+    private static final byte DATA_FORMAT_ID[] = { (byte) 0x54, (byte) 0x72,
+            (byte) 0x44, (byte) 0x63 };
+}
diff --git a/src/com/ibm/icu/text/BreakDictionary.java b/src/com/ibm/icu/text/BreakDictionary.java
new file mode 100644
index 0000000..16ec9f5
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakDictionary.java
@@ -0,0 +1,323 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.FileNotFoundException;
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.FileOutputStream;
+
+import com.ibm.icu.util.CompactByteArray;
+
+/**
+ * This is the class that represents the list of known words used by
+ * DictionaryBasedBreakIterator.  The conceptual data structure used
+ * here is a trie: there is a node hanging off the root node for every
+ * letter that can start a word.  Each of these nodes has a node hanging
+ * off of it for every letter that can be the second letter of a word
+ * if this node is the first letter, and so on.  The trie is represented
+ * as a two-dimensional array that can be treated as a table of state
+ * transitions.  Indexes are used to compress this array, taking
+ * advantage of the fact that this array will always be very sparse.
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public class BreakDictionary {
+    //=================================================================================
+    // testing and debugging
+    //=================================================================================
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    public static void main(String args[])
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        String filename = args[0];
+
+        BreakDictionary dictionary = new BreakDictionary(new FileInputStream(filename));
+
+        PrintWriter out = null;
+
+        if(args.length >= 2) {
+            out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(args[1]), "UnicodeLittle"));
+        }
+
+        dictionary.printWordList("", 0, out);
+
+        if (out != null) {
+            out.close();
+        }
+    }
+
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    public void printWordList(String partialWord, int state, PrintWriter out)
+            throws IOException {
+        if (state == 0xFFFF) {
+            System.out.println(partialWord);
+            if (out != null) {
+                out.println(partialWord);
+            }
+        }
+        else {
+            for (int i = 0; i < numCols; i++) {
+                int newState = (at(state, i)) & 0xFFFF;
+
+                if (newState != 0) {
+                    char newChar = reverseColumnMap[i];
+                    String newPartialWord = partialWord;
+
+                    if (newChar != 0) {
+                        newPartialWord += newChar;
+                    }
+
+                    printWordList(newPartialWord, newState, out);
+                }
+            }
+        }
+    }
+
+    /**
+     * A map used to go from column numbers to characters.  Used only
+     * for debugging right now.
+     */
+    private char[] reverseColumnMap = null;
+
+    //=================================================================================
+    // data members
+    //=================================================================================
+
+    /**
+     * Maps from characters to column numbers.  The main use of this is to
+     * avoid making room in the array for empty columns.
+     */
+    private CompactByteArray columnMap = null;
+
+    /**
+     * The number of actual columns in the table
+     */
+    private int numCols;
+
+    /*
+     * Columns are organized into groups of 32.  This says how many
+     * column groups.  (We could calculate this, but we store the
+     * value to avoid having to repeatedly calculate it.)
+     */
+    //private int numColGroups;
+
+    /**
+     * The actual compressed state table.  Each conceptual row represents
+     * a state, and the cells in it contain the row numbers of the states
+     * to transition to for each possible letter.  0 is used to indicate
+     * an illegal combination of letters (i.e., the error state).  The
+     * table is compressed by eliminating all the unpopulated (i.e., zero)
+     * cells.  Multiple conceptual rows can then be doubled up in a single
+     * physical row by sliding them up and possibly shifting them to one
+     * side or the other so the populated cells don't collide.  Indexes
+     * are used to identify unpopulated cells and to locate populated cells.
+     */
+    private short[] table = null;
+
+    /**
+     * This index maps logical row numbers to physical row numbers
+     */
+    private short[] rowIndex = null;
+
+    /**
+     * A bitmap is used to tell which cells in the comceptual table are
+     * populated.  This array contains all the unique bit combinations
+     * in that bitmap.  If the table is more than 32 columns wide,
+     * successive entries in this array are used for a single row.
+     */
+    private int[] rowIndexFlags = null;
+
+    /**
+     * This index maps from a logical row number into the bitmap table above.
+     * (This keeps us from storing duplicate bitmap combinations.)  Since there
+     * are a lot of rows with only one populated cell, instead of wasting space
+     * in the bitmap table, we just store a negative number in this index for
+     * rows with one populated cell.  The absolute value of that number is
+     * the column number of the populated cell.
+     */
+    private short[] rowIndexFlagsIndex = null;
+
+    /**
+     * For each logical row, this index contains a constant that is added to
+     * the logical column number to get the physical column number
+     */
+    private byte[] rowIndexShifts = null;
+
+    //=================================================================================
+    // deserialization
+    //=================================================================================
+
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    public BreakDictionary(InputStream dictionaryStream) throws IOException {
+        readDictionaryFile(new DataInputStream(dictionaryStream));
+    }
+
+    /** 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void readDictionaryFile(DataInputStream in) throws IOException {
+        int l;
+
+        // read in the version number (right now we just ignore it)
+        in.readInt();
+
+        // read in the column map (this is serialized in its internal form:
+        // an index array followed by a data array)
+        l = in.readInt();
+        char[] temp = new char[l];
+        for (int i = 0; i < temp.length; i++)
+            temp[i] = (char)in.readShort();
+        l = in.readInt();
+        byte[] temp2 = new byte[l];
+        for (int i = 0; i < temp2.length; i++)
+            temp2[i] = in.readByte();
+        columnMap = new CompactByteArray(temp, temp2);
+
+        // read in numCols and numColGroups
+        numCols = in.readInt();
+        /*numColGroups = */in.readInt();
+
+        // read in the row-number index
+        l = in.readInt();
+        rowIndex = new short[l];
+        for (int i = 0; i < rowIndex.length; i++)
+            rowIndex[i] = in.readShort();
+
+        // load in the populated-cells bitmap: index first, then bitmap list
+        l = in.readInt();
+        rowIndexFlagsIndex = new short[l];
+        for (int i = 0; i < rowIndexFlagsIndex.length; i++)
+            rowIndexFlagsIndex[i] = in.readShort();
+        l = in.readInt();
+        rowIndexFlags = new int[l];
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            rowIndexFlags[i] = in.readInt();
+
+        // load in the row-shift index
+        l = in.readInt();
+        rowIndexShifts = new byte[l];
+        for (int i = 0; i < rowIndexShifts.length; i++)
+            rowIndexShifts[i] = in.readByte();
+
+        // finally, load in the actual state table
+        l = in.readInt();
+        table = new short[l];
+        for (int i = 0; i < table.length; i++)
+            table[i] = in.readShort();
+
+        // this data structure is only necessary for testing and debugging purposes
+        reverseColumnMap = new char[numCols];
+        for (char c = 0; c < 0xffff; c++) {
+            int col = columnMap.elementAt(c);
+            if (col != 0) {
+               reverseColumnMap[col] = c;
+            }
+        }
+
+        // close the stream
+        in.close();
+    }
+
+    //=================================================================================
+    // access to the words
+    //=================================================================================
+
+    /**
+     * Uses the column map to map the character to a column number, then
+     * passes the row and column number to the other version of at()
+     * @param row The current state
+     * @param ch The character whose column we're interested in
+     * @return The new state to transition to
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final short at(int row, char ch) {
+        int col = columnMap.elementAt(ch);
+        return at(row, col);
+    }
+
+    /**
+     * Returns the value in the cell with the specified (logical) row and
+     * column numbers.  In DictionaryBasedBreakIterator, the row number is
+     * a state number, the column number is an input, and the return value
+     * is the row number of the new state to transition to.  (0 is the
+     * "error" state, and -1 is the "end of word" state in a dictionary)
+     * @param row The row number of the current state
+     * @param col The column number of the input character (0 means "not a
+     * dictionary character")
+     * @return The row number of the new state to transition to
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public final short at(int row, int col) {
+        if (cellIsPopulated(row, col)) {
+            // we map from logical to physical row number by looking up the
+            // mapping in rowIndex; we map from logical column number to
+            // physical column number by looking up a shift value for this
+            // logical row and offsetting the logical column number by
+            // the shift amount.  Then we can use internalAt() to actually
+            // get the value out of the table.
+            return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Given (logical) row and column numbers, returns true if the
+     * cell in that position is populated
+     */
+    private final boolean cellIsPopulated(int row, int col) {
+        // look up the entry in the bitmap index for the specified row.
+        // If it's a negative number, it's the column number of the only
+        // populated cell in the row
+        if (rowIndexFlagsIndex[row] < 0) {
+            return col == -rowIndexFlagsIndex[row];
+        }
+
+        // if it's a positive number, it's the offset of an entry in the bitmap
+        // list.  If the table is more than 32 columns wide, the bitmap is stored
+        // successive entries in the bitmap list, so we have to divide the column
+        // number by 32 and offset the number we got out of the index by the result.
+        // Once we have the appropriate piece of the bitmap, test the appropriate
+        // bit and return the result.
+        else {
+            int flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+            return (flags & (1 << (col & 0x1f))) != 0;
+        }
+    }
+
+    /**
+     * Implementation of at() when we know the specified cell is populated.
+     * @param row The PHYSICAL row number of the cell
+     * @param col The PHYSICAL column number of the cell
+     * @return The value stored in the cell
+     */
+    private final short internalAt(int row, int col) {
+        // the table is a one-dimensional array, so this just does the math necessary
+        // to treat it as a two-dimensional array (we don't just use a two-dimensional
+        // array because two-dimensional arrays are inefficient in Java)
+        return table[row * numCols + col];
+    }
+}
+
diff --git a/src/com/ibm/icu/text/BreakIterator.java b/src/com/ibm/icu/text/BreakIterator.java
new file mode 100644
index 0000000..650a398
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakIterator.java
@@ -0,0 +1,879 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.lang.ref.SoftReference;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * A class that locates boundaries in text.  This class defines a protocol for
+ * objects that break up a piece of natural-language text according to a set
+ * of criteria.  Instances or subclasses of BreakIterator can be provided, for
+ * example, to break a piece of text into words, sentences, or logical characters
+ * according to the conventions of some language or group of languages.
+ *
+ * We provide five built-in types of BreakIterator:
+ * <ul><li>getTitleInstance() returns a BreakIterator that locates boundaries
+ * between title breaks.
+ * <li>getSentenceInstance() returns a BreakIterator that locates boundaries
+ * between sentences.  This is useful for triple-click selection, for example.
+ * <li>getWordInstance() returns a BreakIterator that locates boundaries between
+ * words.  This is useful for double-click selection or "find whole words" searches.
+ * This type of BreakIterator makes sure there is a boundary position at the
+ * beginning and end of each legal word.  (Numbers count as words, too.)  Whitespace
+ * and punctuation are kept separate from real words.
+ * <li>getLineInstance() returns a BreakIterator that locates positions where it is
+ * legal for a text editor to wrap lines.  This is similar to word breaking, but
+ * not the same: punctuation and whitespace are generally kept with words (you don't
+ * want a line to start with whitespace, for example), and some special characters
+ * can force a position to be considered a line-break position or prevent a position
+ * from being a line-break position.
+ * <li>getCharacterInstance() returns a BreakIterator that locates boundaries between
+ * logical characters.  Because of the structure of the Unicode encoding, a logical
+ * character may be stored internally as more than one Unicode code point.  (A with an
+ * umlaut may be stored as an a followed by a separate combining umlaut character,
+ * for example, but the user still thinks of it as one character.)  This iterator allows
+ * various processes (especially text editors) to treat as characters the units of text
+ * that a user would think of as characters, rather than the units of text that the
+ * computer sees as "characters".</ul>
+ *
+ * BreakIterator's interface follows an "iterator" model (hence the name), meaning it
+ * has a concept of a "current position" and methods like first(), last(), next(),
+ * and previous() that update the current position.  All BreakIterators uphold the
+ * following invariants:
+ * <ul><li>The beginning and end of the text are always treated as boundary positions.
+ * <li>The current position of the iterator is always a boundary position (random-
+ * access methods move the iterator to the nearest boundary position before or
+ * after the specified position, not _to_ the specified position).
+ * <li>DONE is used as a flag to indicate when iteration has stopped.  DONE is only
+ * returned when the current position is the end of the text and the user calls next(),
+ * or when the current position is the beginning of the text and the user calls
+ * previous().
+ * <li>Break positions are numbered by the positions of the characters that follow
+ * them.  Thus, under normal circumstances, the position before the first character
+ * is 0, the position after the first character is 1, and the position after the
+ * last character is 1 plus the length of the string.
+ * <li>The client can change the position of an iterator, or the text it analyzes,
+ * at will, but cannot change the behavior.  If the user wants different behavior, he
+ * must instantiate a new iterator.</ul>
+ *
+ * BreakIterator accesses the text it analyzes through a CharacterIterator, which makes
+ * it possible to use BreakIterator to analyze text in any text-storage vehicle that
+ * provides a CharacterIterator interface.
+ *
+ * <b>NOTE:</b>  Some types of BreakIterator can take a long time to create, and
+ * instances of BreakIterator are not currently cached by the system.  For
+ * optimal performance, keep instances of BreakIterator around as long as makes
+ * sense.  For example, when word-wrapping a document, don't create and destroy a
+ * new BreakIterator for each line.  Create one break iterator for the whole document
+ * (or whatever stretch of text you're wrapping) and use it to do the whole job of
+ * wrapping the text.
+ *
+  * <P>
+ * <strong>Examples</strong>:<P>
+ * Creating and using text boundaries
+ * <blockquote>
+ * <pre>
+ * public static void main(String args[]) {
+ *      if (args.length == 1) {
+ *          String stringToExamine = args[0];
+ *          //print each word in order
+ *          BreakIterator boundary = BreakIterator.getWordInstance();
+ *          boundary.setText(stringToExamine);
+ *          printEachForward(boundary, stringToExamine);
+ *          //print each sentence in reverse order
+ *          boundary = BreakIterator.getSentenceInstance(Locale.US);
+ *          boundary.setText(stringToExamine);
+ *          printEachBackward(boundary, stringToExamine);
+ *          printFirst(boundary, stringToExamine);
+ *          printLast(boundary, stringToExamine);
+ *      }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in order
+ * <blockquote>
+ * <pre>
+ * public static void printEachForward(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     for (int end = boundary.next();
+ *          end != BreakIterator.DONE;
+ *          start = end, end = boundary.next()) {
+ *          System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in reverse order
+ * <blockquote>
+ * <pre>
+ * public static void printEachBackward(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     for (int start = boundary.previous();
+ *          start != BreakIterator.DONE;
+ *          end = start, start = boundary.previous()) {
+ *         System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print first element
+ * <blockquote>
+ * <pre>
+ * public static void printFirst(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     int end = boundary.next();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print last element
+ * <blockquote>
+ * <pre>
+ * public static void printLast(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print the element at a specified position
+ * <blockquote>
+ * <pre>
+ * public static void printAt(BreakIterator boundary, int pos, String source) {
+ *     int end = boundary.following(pos);
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Find the next word
+ * <blockquote>
+ * <pre>
+ * public static int nextWordStartAfter(int pos, String text) {
+ *     BreakIterator wb = BreakIterator.getWordInstance();
+ *     wb.setText(text);
+ *     int last = wb.following(pos);
+ *     int current = wb.next();
+ *     while (current != BreakIterator.DONE) {
+ *         for (int p = last; p < current; p++) {
+ *             if (Character.isLetter(text.charAt(p)))
+ *                 return last;
+ *         }
+ *         last = current;
+ *         current = wb.next();
+ *     }
+ *     return BreakIterator.DONE;
+ * }
+ * </pre>
+ * (The iterator returned by BreakIterator.getWordInstance() is unique in that
+ * the break positions it returns don't represent both the start and end of the
+ * thing being iterated over.  That is, a sentence-break iterator returns breaks
+ * that each represent the end of one sentence and the beginning of the next.
+ * With the word-break iterator, the characters between two boundaries might be a
+ * word, or they might be the punctuation or whitespace between two words.  The
+ * above code uses a simple heuristic to determine which boundary is the beginning
+ * of a word: If the characters between this boundary and the next boundary
+ * include at least one letter (this can be an alphabetical letter, a CJK ideograph,
+ * a Hangul syllable, a Kana character, etc.), then the text between this boundary
+ * and the next is a word; otherwise, it's the material between words.)
+ * </blockquote>
+ *
+ * @see CharacterIterator
+ * @stable ICU 2.0
+ *
+ */
+
+public abstract class BreakIterator implements Cloneable
+{
+
+    private static final boolean DEBUG = ICUDebug.enabled("breakiterator");
+    
+    /**
+     * Default constructor.  There is no state that is carried by this abstract
+     * base class.
+     * @stable ICU 2.0
+     */
+    protected BreakIterator()
+    {
+    }
+
+    /**
+     * Clone method.  Creates another BreakIterator with the same behavior and
+     * current state as this one.
+     * @return The clone.
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            ///CLOVER:OFF
+            throw new IllegalStateException();
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * DONE is returned by previous() and next() after all valid
+     * boundaries have been returned.
+     * @stable ICU 2.0
+     */
+    public static final int DONE = -1;
+
+    /**
+     * Return the first boundary position.  This is always the beginning
+     * index of the text this iterator iterates over.  For example, if
+     * the iterator iterates over a whole string, this function will
+     * always return 0.  This function also updates the iteration position
+     * to point to the beginning of the text.
+     * @return The character offset of the beginning of the stretch of text
+     * being broken.
+     * @stable ICU 2.0
+     */
+    public abstract int first();
+
+    /**
+     * Return the last boundary position.  This is always the "past-the-end"
+     * index of the text this iterator iterates over.  For example, if the
+     * iterator iterates over a whole string (call it "text"), this function
+     * will always return text.length().  This function also updated the
+     * iteration position to point to the end of the text.
+     * @return The character offset of the end of the stretch of text
+     * being broken.
+     * @stable ICU 2.0
+     */
+    public abstract int last();
+
+    /**
+     * Advances the specified number of steps forward in the text (a negative
+     * number, therefore, advances backwards).  If this causes the iterator
+     * to advance off either end of the text, this function returns DONE;
+     * otherwise, this function returns the position of the appropriate
+     * boundary.  Calling this function is equivalent to calling next() or
+     * previous() n times.
+     * @param n The number of boundaries to advance over (if positive, moves
+     * forward; if negative, moves backwards).
+     * @return The position of the boundary n boundaries from the current
+     * iteration position, or DONE if moving n boundaries causes the iterator
+     * to advance off either end of the text.
+     * @stable ICU 2.0
+     */
+    public abstract int next(int n);
+
+    /**
+     * Advances the iterator forward one boundary.  The current iteration
+     * position is updated to point to the next boundary position after the
+     * current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by last(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the first boundary position following the
+     * iteration position.
+     * @stable ICU 2.0
+     */
+    public abstract int next();
+
+    /**
+     * Advances the iterator backward one boundary.  The current iteration
+     * position is updated to point to the last boundary position before
+     * the current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by first(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the last boundary position preceding the
+     * iteration position.
+     * @stable ICU 2.0
+     */
+    public abstract int previous();
+
+    /**
+     * Sets the iterator's current iteration position to be the first
+     * boundary position following the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * first boundary after the specified position.)  If the specified
+     * position is the past-the-end position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the first boundary position following
+     * "offset" (whether or not "offset" itself is a boundary position),
+     * or DONE if "offset" is the past-the-end offset.
+     * @stable ICU 2.0
+     */
+    public abstract int following(int offset);
+
+    /**
+     * Sets the iterator's current iteration position to be the last
+     * boundary position preceding the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * last boundary before the specified position.)  If the specified
+     * position is the starting position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the last boundary position preceding
+     * "offset" (whether of not "offset" itself is a boundary position),
+     * or DONE if "offset" is the starting offset of the iterator.
+     * @stable ICU 2.0
+     */
+    public int preceding(int offset) {
+        // NOTE:  This implementation is here solely because we can't add new
+        // abstract methods to an existing class.  There is almost ALWAYS a
+        // better, faster way to do this.
+        int pos = following(offset);
+        while (pos >= offset && pos != DONE)
+            pos = previous();
+        return pos;
+    }
+
+    /**
+     * Return true if the specfied position is a boundary position.  If the
+     * function returns true, the current iteration position is set to the
+     * specified position; if the function returns false, the current
+     * iteration position is set as though following() had been called.
+     * @param offset the offset to check.
+     * @return True if "offset" is a boundary position.
+     * @stable ICU 2.0
+     */
+    public boolean isBoundary(int offset) {
+        // Again, this is the default implementation, which is provided solely because
+        // we couldn't add a new abstract method to an existing class.  The real
+        // implementations will usually need to do a little more work.
+        if (offset == 0) {
+            return true;
+        }
+        else
+            return following(offset - 1) == offset;
+    }
+
+    /**
+     * Return the iterator's current position.
+     * @return The iterator's current position.
+     * @stable ICU 2.0
+     */
+    public abstract int current();
+
+    /**
+     * Returns a CharacterIterator over the text being analyzed.
+     * For at least some subclasses of BreakIterator, this is a reference
+     * to the <b>actual iterator being used</b> by the BreakIterator,
+     * and therefore, this function's return value should be treated as
+     * <tt>const</tt>.  No guarantees are made about the current position
+     * of this iterator when it is returned.  If you need to move that
+     * position to examine the text, clone this function's return value first.
+     * @return A CharacterIterator over the text being analyzed.
+     * @stable ICU 2.0
+     */
+    public abstract CharacterIterator getText();
+
+    /**
+     * Sets the iterator to analyze a new piece of text.  The new
+     * piece of text is passed in as a String, and the current
+     * iteration position is reset to the beginning of the string.
+     * (The old text is dropped.)
+     * @param newText A String containing the text to analyze with
+     * this BreakIterator.
+     * @stable ICU 2.0
+     */
+    public void setText(String newText)
+    {
+        setText(new StringCharacterIterator(newText));
+    }
+
+    /**
+     * Sets the iterator to analyze a new piece of text.  The
+     * BreakIterator is passed a CharacterIterator through which
+     * it will access the text itself.  The current iteration
+     * position is reset to the CharacterIterator's start index.
+     * (The old iterator is dropped.)
+     * @param newText A CharacterIterator referring to the text
+     * to analyze with this BreakIterator (the iterator's current
+     * position is ignored, but its other state is significant).
+     * @stable ICU 2.0
+     */
+    public abstract void setText(CharacterIterator newText);
+
+    /** @stable ICU 2.4 */
+    public static final int KIND_CHARACTER = 0;
+    /** @stable ICU 2.4 */
+    public static final int KIND_WORD = 1;
+    /** @stable ICU 2.4 */
+    public static final int KIND_LINE = 2;
+    /** @stable ICU 2.4 */
+    public static final int KIND_SENTENCE = 3;
+    /** @stable ICU 2.4 */
+    public static final int KIND_TITLE = 4;
+
+    /** @since ICU 2.8 */
+    private static final int KIND_COUNT = 5;
+
+    /** @internal */
+    private static final SoftReference[] iterCache = new SoftReference[5];
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * This function assumes that the text being analyzed is in the default
+     * locale's language.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getWordInstance()
+    {
+        return getWordInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getWordInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_WORD);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getWordInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_WORD);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.  This function assumes the text being broken
+     * is in the default locale's language.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getLineInstance()
+    {
+        return getLineInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getLineInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_LINE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getLineInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_LINE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.  This function assumes that the text being analyzed is
+     * in the default locale's language.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getCharacterInstance()
+    {
+        return getCharacterInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getCharacterInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_CHARACTER);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getCharacterInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_CHARACTER);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getSentenceInstance()
+    {
+        return getSentenceInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getSentenceInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_SENTENCE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     * @stable ICU 3.2
+     */
+    public static BreakIterator getSentenceInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_SENTENCE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates title boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language. The iterator returned locates title boundaries as described for 
+     * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration,
+     * please use a word boundary iterator. {@link #getWordInstance}
+     * @return A new instance of BreakIterator that locates title boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getTitleInstance()
+    {
+        return getTitleInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates title boundaries.
+     * The iterator returned locates title boundaries as described for 
+     * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration,
+     * please use Word Boundary iterator.{@link #getWordInstance}
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates title boundaries.
+     * @stable ICU 2.0
+     */
+    public static BreakIterator getTitleInstance(Locale where)
+    {
+        return getBreakInstance(ULocale.forLocale(where), KIND_TITLE);
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates title boundaries.
+     * The iterator returned locates title boundaries as described for 
+     * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration,
+     * please use Word Boundary iterator.{@link #getWordInstance}
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates title boundaries.
+     * @stable ICU 3.2
+s     */
+    public static BreakIterator getTitleInstance(ULocale where)
+    {
+        return getBreakInstance(where, KIND_TITLE);
+    }
+
+    /**
+     * Register a new break iterator of the indicated kind, to use in the given locale.
+     * Clones of the iterator will be returned
+     * if a request for a break iterator of the given kind matches or falls back to
+     * this locale.
+     * @param iter the BreakIterator instance to adopt.
+     * @param locale the Locale for which this instance is to be registered
+     * @param kind the type of iterator for which this instance is to be registered
+     * @return a registry key that can be used to unregister this instance
+     * @stable ICU 2.4
+     */
+    public static Object registerInstance(BreakIterator iter, Locale locale, int kind) {
+        return registerInstance(iter, ULocale.forLocale(locale), kind);
+    }
+
+    /**
+     * Register a new break iterator of the indicated kind, to use in the given locale.
+     * Clones of the iterator will be returned
+     * if a request for a break iterator of the given kind matches or falls back to
+     * this locale.
+     * @param iter the BreakIterator instance to adopt.
+     * @param locale the Locale for which this instance is to be registered
+     * @param kind the type of iterator for which this instance is to be registered
+     * @return a registry key that can be used to unregister this instance
+     * @stable ICU 3.2
+     */
+    public static Object registerInstance(BreakIterator iter, ULocale locale, int kind) {
+        // If the registered object matches the one in the cache, then
+        // flush the cached object.
+        if (iterCache[kind] != null) {
+            BreakIteratorCache cache = (BreakIteratorCache) iterCache[kind].get();
+            if (cache != null) {
+                if (cache.getLocale().equals(locale)) {
+                    iterCache[kind] = null;
+                }
+            }
+        }
+        return getShim().registerInstance(iter, locale, kind);
+    }
+
+    /**
+     * Unregister a previously-registered BreakIterator using the key returned from the
+     * register call.  Key becomes invalid after this call and should not be used again.
+     * @param key the registry key returned by a previous call to registerInstance
+     * @return true if the iterator for the key was successfully unregistered
+     * @stable ICU 2.4
+     */
+    public static boolean unregister(Object key) {
+        if (key == null) {
+            throw new IllegalArgumentException("registry key must not be null");
+        }
+        // TODO: we don't do code coverage for the following lines
+        // because in getBreakInstance we always instantiate the shim,
+        // and test execution is such that we always instantiate a
+        // breakiterator before we get to the break iterator tests.
+        // this is for modularization, and we could remove the
+        // dependencies in getBreakInstance by rewriting part of the
+        // LocaleData code, or perhaps by accepting it into the
+        // module.
+        ///CLOVER:OFF
+        if (shim != null) {
+            // Unfortunately, we don't know what is being unregistered
+            // -- what `kind' and what locale -- so we flush all
+            // caches.  This is safe but inefficient if people are
+            // actively registering and unregistering.
+            for (int kind=0; kind<KIND_COUNT; ++kind) {
+                iterCache[kind] = null;
+            }
+            return shim.unregister(key);
+        }
+        return false;
+        ///CLOVER:ON
+    }
+
+    // end of registration
+
+    /**
+     * Get a particular kind of BreakIterator for a locale.
+     * Avoids writing a switch statement with getXYZInstance(where) calls. 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static BreakIterator getBreakInstance(ULocale where, int kind) {
+
+        if (iterCache[kind] != null) {
+            BreakIteratorCache cache = (BreakIteratorCache) iterCache[kind].get();
+            if (cache != null) {
+                if (cache.getLocale().equals(where)) {
+                    return cache.createBreakInstance();
+                }
+            }
+        }
+
+        // sigh, all to avoid linking in ICULocaleData...
+        BreakIterator result = getShim().createBreakIterator(where, kind);
+
+        BreakIteratorCache cache = new BreakIteratorCache(where, result);
+        iterCache[kind] = new SoftReference(cache);
+        return result;
+    }
+
+
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of Locales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     * @stable ICU 2.6
+     */
+    public static synchronized Locale[] getAvailableLocales()
+    {
+        // to avoid linking ICULocaleData
+        return getShim().getAvailableLocales();
+    }
+
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of Locales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     * @draft ICU 3.2 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static synchronized ULocale[] getAvailableULocales()
+    {
+        // to avoid linking ICULocaleData
+        return getShim().getAvailableULocales();
+    }
+
+    private static final class BreakIteratorCache {
+
+        private BreakIterator iter;
+        private ULocale where;
+
+        BreakIteratorCache(ULocale where, BreakIterator iter) {
+            this.where = where;
+            this.iter = (BreakIterator) iter.clone();
+        }
+
+        ULocale getLocale() {
+            return where;
+        }
+
+        BreakIterator createBreakInstance() {
+            return (BreakIterator) iter.clone();
+        }
+    }
+
+    static abstract class BreakIteratorServiceShim {
+        public abstract Object registerInstance(BreakIterator iter, ULocale l, int k);
+        public abstract boolean unregister(Object key);
+        public abstract Locale[] getAvailableLocales();
+        public abstract ULocale[] getAvailableULocales();
+        public abstract BreakIterator createBreakIterator(ULocale l, int k);
+    }
+
+    private static BreakIteratorServiceShim shim;
+    private static BreakIteratorServiceShim getShim() {
+        // Note: this instantiation is safe on loose-memory-model configurations
+        // despite lack of synchronization, since the shim instance has no state--
+        // it's all in the class init.  The worst problem is we might instantiate
+        // two shim instances, but they'll share the same state so that's ok.
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.text.BreakIteratorFactory");
+                shim = (BreakIteratorServiceShim)cls.newInstance();
+            }
+            catch (MissingResourceException e)
+            {
+                throw e;
+            }
+            catch (Exception e) {
+                ///CLOVER:OFF
+                if(DEBUG){
+                    e.printStackTrace();
+                }
+                throw new RuntimeException(e.getMessage());
+                ///CLOVER:ON
+            }
+        }
+        return shim;
+    }
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+}
diff --git a/src/com/ibm/icu/text/BreakIteratorFactory.java b/src/com/ibm/icu/text/BreakIteratorFactory.java
new file mode 100644
index 0000000..8e91f0d
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakIteratorFactory.java
@@ -0,0 +1,177 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.impl.Assert;
+
+/**
+ * @author Ram
+ *
+ * To change this generated comment edit the template variable "typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+final class BreakIteratorFactory extends BreakIterator.BreakIteratorServiceShim {
+
+    public Object registerInstance(BreakIterator iter, ULocale locale, int kind) {
+        iter.setText(new java.text.StringCharacterIterator(""));
+        return service.registerObject(iter, locale, kind);
+    }
+
+    public boolean unregister(Object key) {
+        if (service.isDefault()) {
+            return false;
+        }
+        return service.unregisterFactory((Factory)key);
+    }
+
+    public Locale[] getAvailableLocales() {
+        if (service == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        } else {
+            return service.getAvailableLocales();
+        }
+    }
+
+    public ULocale[] getAvailableULocales() {
+        if (service == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        } else {
+            return service.getAvailableULocales();
+        }
+    }
+
+    public BreakIterator createBreakIterator(ULocale locale, int kind) {
+    // TODO: convert to ULocale when service switches over
+        if (service.isDefault()) {
+            return createBreakInstance(locale, kind);
+        }
+        ULocale[] actualLoc = new ULocale[1];
+        BreakIterator iter = (BreakIterator)service.get(locale, kind, actualLoc);
+        iter.setLocale(actualLoc[0], actualLoc[0]); // services make no distinction between actual & valid
+        return iter;
+    }
+
+    private static class BFService extends ICULocaleService {
+        BFService() {
+            super("BreakIterator");
+
+            class RBBreakIteratorFactory extends ICUResourceBundleFactory {
+                protected Object handleCreate(ULocale loc, int kind, ICUService srvc) {
+                    return createBreakInstance(loc, kind);
+                }
+            }
+            registerFactory(new RBBreakIteratorFactory());
+
+            markDefault();
+        }
+    }
+    static final ICULocaleService service = new BFService();
+
+
+    /** KIND_NAMES are the resource key to be used to fetch the name of the
+     *             pre-compiled break rules.  The resource bundle name is "boundaries".
+     *             The value for each key will be the rules to be used for the
+     *             specified locale - "word" -> "word_th" for Thai, for example.
+     *  DICTIONARY_POSSIBLE indexes in the same way, and indicates whether a
+     *             dictionary is a possibility for that type of break.  This is just
+     *             an optimization to avoid a resource lookup where no dictionary is
+     *             ever possible.
+     *  @internal
+     */
+    private static final String[] KIND_NAMES = {
+            "grapheme", "word", "line", "sentence", "title"
+        };
+    private static final boolean[] DICTIONARY_POSSIBLE = {
+            false,      true,  true,   false,     false
+    };
+
+
+    private static BreakIterator createBreakInstance(ULocale locale, int kind) {
+
+        BreakIterator    iter       = null;
+        ICUResourceBundle rb        = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BRKITR_BASE_NAME, locale);
+        
+        //
+        //  Get the binary rules.  These are needed for both normal RulesBasedBreakIterators
+        //                         and for Dictionary iterators.
+        //
+        InputStream      ruleStream = null;
+        try {
+            String         typeKey       = KIND_NAMES[kind];
+            String         brkfname      = rb.getStringWithFallback("boundaries/" + typeKey);
+            String         rulesFileName = ICUResourceBundle.ICU_BUNDLE +ICUResourceBundle.ICU_BRKITR_NAME+ "/" + brkfname;
+                           ruleStream    = ICUData.getStream(rulesFileName);
+        }
+        catch (Exception e) {
+            throw new MissingResourceException(e.toString(),"","");
+        }
+ 
+        //
+        //  Check whether a dictionary exists, and create a DBBI iterator is
+        //   one does.
+        //
+        if (DICTIONARY_POSSIBLE[kind]) {
+            // This type of break iterator could potentially use a dictionary.
+            //
+            try {
+                if (locale.getLanguage().equals("th")){
+                    // If the language is Thai, load the thai compact trie dictionary.
+                    String dictType = "Thai";
+                    String dictFileName = rb.getStringWithFallback("dictionaries/" + dictType);
+                    dictFileName = ICUResourceBundle.ICU_BUNDLE +ICUResourceBundle.ICU_BRKITR_NAME+ "/" + dictFileName;
+                    InputStream is = ICUData.getStream(dictFileName);
+                    iter = new ThaiBreakIterator(ruleStream, is);
+                }
+            } catch (MissingResourceException e) {
+                //  Couldn't find a dictionary.
+                //  This is normal, and will occur whenever creating a word or line
+                //  break iterator for a locale that does not have a BreakDictionaryData
+                //  resource - meaning for all but Thai.
+                //  Fall through to creating a normal RulebasedBreakIterator.
+            } catch (IOException e) {
+                Assert.fail(e);
+            }
+         }
+
+        if (iter == null) {
+            //
+            // Create a normal RuleBasedBreakIterator.
+            //    We have determined that this is not supposed to be a dictionary iterator.
+            //
+            try {
+                iter = RuleBasedBreakIterator.getInstanceFromCompiledRules(ruleStream);
+            }
+            catch (IOException e) {
+                // Shouldn't be possible to get here.
+                // If it happens, the compiled rules are probably corrupted in some way.
+                Assert.fail(e);
+           }
+        }
+        // TODO: Determine valid and actual locale correctly.
+        ULocale uloc = ULocale.forLocale(rb.getLocale());
+        iter.setLocale(uloc, uloc);
+        
+        return iter;
+
+    }
+
+}
diff --git a/src/com/ibm/icu/text/BreakTransliterator.java b/src/com/ibm/icu/text/BreakTransliterator.java
new file mode 100644
index 0000000..1ad6aed
--- /dev/null
+++ b/src/com/ibm/icu/text/BreakTransliterator.java
@@ -0,0 +1,382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.ULocale;
+
+import java.text.CharacterIterator;
+
+
+/**
+ * Inserts the specified characters at word breaks. To restrict it to particular characters, use a filter.
+ * TODO: this is an internal class, and only temporary. Remove it once we have \b notation in Transliterator.
+ */
+final class BreakTransliterator extends Transliterator {
+    private BreakIterator bi;
+    private String insertion;
+    private int[] boundaries = new int[50];
+    private int boundaryCount = 0;
+
+    public BreakTransliterator(String ID, UnicodeFilter filter, BreakIterator bi, String insertion) {
+        super(ID, filter);
+        this.bi = bi;
+        this.insertion = insertion;
+    }
+
+    public BreakTransliterator(String ID, UnicodeFilter filter) {
+        this(ID, filter, null, " ");
+    }
+
+    public String getInsertion() {
+        return insertion;
+    }
+
+    public void setInsertion(String insertion) {
+        this.insertion = insertion;
+    }
+
+    public BreakIterator getBreakIterator() {
+        // Defer initialization of BreakIterator because it is slow,
+        // typically over 2000 ms.
+        if (bi == null) bi = BreakIterator.getWordInstance(new ULocale("th_TH"));
+        return bi;
+    }
+
+    public void setBreakIterator(BreakIterator bi) {
+        this.bi = bi;
+    }
+
+    static final int LETTER_OR_MARK_MASK =
+          (1<<Character.UPPERCASE_LETTER)
+        | (1<<Character.LOWERCASE_LETTER)
+        | (1<<Character.TITLECASE_LETTER)
+        | (1<<Character.MODIFIER_LETTER)
+        | (1<<Character.OTHER_LETTER)
+        | (1<<Character.COMBINING_SPACING_MARK)
+        | (1<<Character.NON_SPACING_MARK)
+        | (1<<Character.ENCLOSING_MARK)
+        ;
+    protected void handleTransliterate(Replaceable text, Position pos, boolean incremental) {
+        boundaryCount = 0;
+        int boundary = 0;
+        getBreakIterator(); // Lazy-create it if necessary
+        bi.setText(new ReplaceableCharacterIterator(text, pos.start, pos.limit, pos.start));
+        // TODO: fix clumsy workaround used below.
+        /*
+        char[] tempBuffer = new char[text.length()];
+        text.getChars(0, text.length(), tempBuffer, 0);
+        bi.setText(new StringCharacterIterator(new String(tempBuffer), pos.start, pos.limit, pos.start));
+        */
+        // end debugging
+
+        // To make things much easier, we will stack the boundaries, and then insert at the end.
+        // generally, we won't need too many, since we will be filtered.
+
+        for(boundary = bi.first(); boundary != BreakIterator.DONE && boundary < pos.limit; boundary = bi.next()) {
+            if (boundary == 0) continue;
+            // HACK: Check to see that preceeding item was a letter
+
+            int cp = UTF16.charAt(text, boundary-1);
+            int type = UCharacter.getType(cp);
+            //System.out.println(Integer.toString(cp,16) + " (before): " + type);
+            if (((1<<type) & LETTER_OR_MARK_MASK) == 0) continue;
+
+            cp = UTF16.charAt(text, boundary);
+            type = UCharacter.getType(cp);
+            //System.out.println(Integer.toString(cp,16) + " (after): " + type);
+            if (((1<<type) & LETTER_OR_MARK_MASK) == 0) continue;
+
+            if (boundaryCount >= boundaries.length) {       // realloc if necessary
+                int[] temp = new int[boundaries.length * 2];
+                System.arraycopy(boundaries, 0, temp, 0, boundaries.length);
+                boundaries = temp;
+            }
+
+            boundaries[boundaryCount++] = boundary;
+            //System.out.println(boundary);
+        }
+
+        int delta = 0;
+        int lastBoundary = 0;
+
+        if (boundaryCount != 0) { // if we found something, adjust
+            delta = boundaryCount * insertion.length();
+            lastBoundary = boundaries[boundaryCount-1];
+
+            // we do this from the end backwards, so that we don't have to keep updating.
+
+            while (boundaryCount > 0) {
+                boundary = boundaries[--boundaryCount];
+                text.replace(boundary, boundary, insertion);
+            }
+        }
+
+        // Now fix up the return values
+        pos.contextLimit += delta;
+        pos.limit += delta;
+        pos.start = incremental ? lastBoundary + delta : pos.limit;
+    }
+
+
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // false means that it is invisible
+        Transliterator trans = new BreakTransliterator("Any-BreakInternal", null);
+        Transliterator.registerInstance(trans, false);
+        /*
+        Transliterator.registerFactory("Any-Break", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new BreakTransliterator("Any-Break", null);
+            }
+        });
+        */
+    }
+
+    // Hack, just to get a real character iterator.
+    static final class ReplaceableCharacterIterator implements CharacterIterator
+    {
+        private Replaceable text;
+        private int begin;
+        private int end;
+        // invariant: begin <= pos <= end
+        private int pos;
+
+        /**
+        * Constructs an iterator with an initial index of 0.
+        */
+        /*public ReplaceableCharacterIterator(Replaceable text)
+        {
+            this(text, 0);
+        }*/
+
+        /**
+        * Constructs an iterator with the specified initial index.
+        *
+        * @param  text   The String to be iterated over
+        * @param  pos    Initial iterator position
+        */
+        /*public ReplaceableCharacterIterator(Replaceable text, int pos)
+        {
+            this(text, 0, text.length(), pos);
+        }*/
+
+        /**
+        * Constructs an iterator over the given range of the given string, with the
+        * index set at the specified position.
+        *
+        * @param  text   The String to be iterated over
+        * @param  begin  Index of the first character
+        * @param  end    Index of the character following the last character
+        * @param  pos    Initial iterator position
+        */
+        public ReplaceableCharacterIterator(Replaceable text, int begin, int end, int pos) {
+            if (text == null) {
+                throw new NullPointerException();
+            }
+            this.text = text;
+
+            if (begin < 0 || begin > end || end > text.length()) {
+                throw new IllegalArgumentException("Invalid substring range");
+            }
+
+            if (pos < begin || pos > end) {
+                throw new IllegalArgumentException("Invalid position");
+            }
+
+            this.begin = begin;
+            this.end = end;
+            this.pos = pos;
+        }
+
+        /**
+        * Reset this iterator to point to a new string.  This package-visible
+        * method is used by other java.text classes that want to avoid allocating
+        * new ReplaceableCharacterIterator objects every time their setText method
+        * is called.
+        *
+        * @param  text   The String to be iterated over
+        */
+        public void setText(Replaceable text) {
+            if (text == null) {
+                throw new NullPointerException();
+            }
+            this.text = text;
+            this.begin = 0;
+            this.end = text.length();
+            this.pos = 0;
+        }
+
+        /**
+        * Implements CharacterIterator.first() for String.
+        * @see CharacterIterator#first
+        */
+        public char first()
+        {
+            pos = begin;
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.last() for String.
+        * @see CharacterIterator#last
+        */
+        public char last()
+        {
+            if (end != begin) {
+                pos = end - 1;
+            } else {
+                pos = end;
+            }
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.setIndex() for String.
+        * @see CharacterIterator#setIndex
+        */
+        public char setIndex(int p)
+        {
+        if (p < begin || p > end) {
+                throw new IllegalArgumentException("Invalid index");
+        }
+            pos = p;
+            return current();
+        }
+
+        /**
+        * Implements CharacterIterator.current() for String.
+        * @see CharacterIterator#current
+        */
+        public char current()
+        {
+            if (pos >= begin && pos < end) {
+                return text.charAt(pos);
+            }
+            else {
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.next() for String.
+        * @see CharacterIterator#next
+        */
+        public char next()
+        {
+            if (pos < end - 1) {
+                pos++;
+                return text.charAt(pos);
+            }
+            else {
+                pos = end;
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.previous() for String.
+        * @see CharacterIterator#previous
+        */
+        public char previous()
+        {
+            if (pos > begin) {
+                pos--;
+                return text.charAt(pos);
+            }
+            else {
+                return DONE;
+            }
+        }
+
+        /**
+        * Implements CharacterIterator.getBeginIndex() for String.
+        * @see CharacterIterator#getBeginIndex
+        */
+        public int getBeginIndex()
+        {
+            return begin;
+        }
+
+        /**
+        * Implements CharacterIterator.getEndIndex() for String.
+        * @see CharacterIterator#getEndIndex
+        */
+        public int getEndIndex()
+        {
+            return end;
+        }
+
+        /**
+        * Implements CharacterIterator.getIndex() for String.
+        * @see CharacterIterator#getIndex
+        */
+        public int getIndex()
+        {
+            return pos;
+        }
+
+        /**
+        * Compares the equality of two ReplaceableCharacterIterator objects.
+        * @param obj the ReplaceableCharacterIterator object to be compared with.
+        * @return true if the given obj is the same as this
+        * ReplaceableCharacterIterator object; false otherwise.
+        */
+        public boolean equals(Object obj)
+        {
+            if (this == obj) {
+                return true;
+            }
+            if (!(obj instanceof ReplaceableCharacterIterator)) {
+                return false;
+            }
+
+            ReplaceableCharacterIterator that = (ReplaceableCharacterIterator) obj;
+
+            if (hashCode() != that.hashCode()) {
+                return false;
+            }
+            if (!text.equals(that.text)) {
+                return false;
+            }
+            if (pos != that.pos || begin != that.begin || end != that.end) {
+                return false;
+            }
+            return true;
+        }
+
+        /**
+        * Computes a hashcode for this iterator.
+        * @return A hash code
+        */
+        public int hashCode()
+        {
+            return text.hashCode() ^ pos ^ begin ^ end;
+        }
+
+        /**
+        * Creates a copy of this iterator.
+        * @return A copy of this
+        */
+        public Object clone()
+        {
+            try {
+                ReplaceableCharacterIterator other
+                = (ReplaceableCharacterIterator) super.clone();
+                return other;
+            }
+            catch (CloneNotSupportedException e) {
+                throw new IllegalStateException();
+            }
+        }
+
+    }
+
+}
diff --git a/src/com/ibm/icu/text/CanonicalIterator.java b/src/com/ibm/icu/text/CanonicalIterator.java
new file mode 100644
index 0000000..03329ad
--- /dev/null
+++ b/src/com/ibm/icu/text/CanonicalIterator.java
@@ -0,0 +1,531 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.*;
+import java.util.*;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.USerializedSet;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * This class allows one to iterate through all the strings that are canonically equivalent to a given
+ * string. For example, here are some sample results:
+ * Results for: {A WITH RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ * <pre>
+ 1: {A}{RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ 2: {A}{RING ABOVE}{d}{CEDILLA}{DOT ABOVE}
+ 3: {A}{RING ABOVE}{d WITH DOT ABOVE}{CEDILLA}
+ 4: {A}{RING ABOVE}{d WITH CEDILLA}{DOT ABOVE}
+ 5: {A WITH RING ABOVE}{d}{DOT ABOVE}{CEDILLA}
+ 6: {A WITH RING ABOVE}{d}{CEDILLA}{DOT ABOVE}
+ 7: {A WITH RING ABOVE}{d WITH DOT ABOVE}{CEDILLA}
+ 8: {A WITH RING ABOVE}{d WITH CEDILLA}{DOT ABOVE}
+ 9: {ANGSTROM SIGN}{d}{DOT ABOVE}{CEDILLA}
+10: {ANGSTROM SIGN}{d}{CEDILLA}{DOT ABOVE}
+11: {ANGSTROM SIGN}{d WITH DOT ABOVE}{CEDILLA}
+12: {ANGSTROM SIGN}{d WITH CEDILLA}{DOT ABOVE}
+ *</pre>
+ *<br>Note: the code is intended for use with small strings, and is not suitable for larger ones,
+ * since it has not been optimized for that situation.
+ * @author M. Davis
+ * @stable ICU 2.4
+ */
+
+public final class CanonicalIterator {
+    /**
+     * Construct a CanonicalIterator object
+     * @param source string to get results for
+     * @stable ICU 2.4
+     */
+    public CanonicalIterator(String source) {
+        setSource(source);
+    }
+
+    /**
+     * Gets the NFD form of the current source we are iterating over.
+     * @return gets the source: NOTE: it is the NFD form of the source originally passed in
+     * @stable ICU 2.4
+     */
+    public String getSource() {
+      return source;
+    }
+
+    /**
+     * Resets the iterator so that one can start again from the beginning.
+     * @stable ICU 2.4
+     */
+    public void reset() {
+        done = false;
+        for (int i = 0; i < current.length; ++i) {
+            current[i] = 0;
+        }
+    }
+
+    /**
+     * Get the next canonically equivalent string.
+     * <br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
+     * @return the next string that is canonically equivalent. The value null is returned when
+     * the iteration is done.
+     * @stable ICU 2.4
+     */
+    public String next() {
+        if (done) return null;
+
+        // construct return value
+
+        buffer.setLength(0); // delete old contents
+        for (int i = 0; i < pieces.length; ++i) {
+            buffer.append(pieces[i][current[i]]);
+        }
+        String result = buffer.toString();
+
+        // find next value for next time
+
+        for (int i = current.length - 1; ; --i) {
+            if (i < 0) {
+                done = true;
+                break;
+            }
+            current[i]++;
+            if (current[i] < pieces[i].length) break; // got sequence
+            current[i] = 0;
+        }
+        return result;
+    }
+
+    /**
+     * Set a new source for this iterator. Allows object reuse.
+     * @param newSource the source string to iterate against. This allows the same iterator to be used
+     * while changing the source string, saving object creation.
+     * @stable ICU 2.4
+     */
+    public void setSource(String newSource) {
+        source = Normalizer.normalize(newSource, Normalizer.NFD);
+        done = false;
+
+        // catch degenerate case
+        if (newSource.length() == 0) {
+            pieces = new String[1][];
+            current = new int[1];
+            pieces[0] = new String[]{""};
+            return;
+        }
+
+        // find the segments
+        List segmentList = new ArrayList();
+        int cp;
+        int start = 0;
+
+        // i should be the end of the first code point
+        // break up the string into segements
+
+        int i = UTF16.findOffsetFromCodePoint(source, 1);
+
+        for (; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source, i);
+            if (NormalizerImpl.isCanonSafeStart(cp)) {
+                segmentList.add(source.substring(start, i)); // add up to i
+                start = i;
+            }
+        }
+        segmentList.add(source.substring(start, i)); // add last one
+
+        // allocate the arrays, and find the strings that are CE to each segment
+        pieces = new String[segmentList.size()][];
+        current = new int[segmentList.size()];
+        for (i = 0; i < pieces.length; ++i) {
+            if (PROGRESS) System.out.println("SEGMENT");
+            pieces[i] = getEquivalents((String) segmentList.get(i));
+        }
+    }
+
+    /**
+     * Simple implementation of permutation.
+     * <br><b>Warning: The strings are not guaranteed to be in any particular order.</b>
+     * @param source the string to find permutations for
+     * @param skipZeros set to true to skip characters with canonical combining class zero
+     * @param output the set to add the results to
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static void permute(String source, boolean skipZeros, Set output) {
+        // TODO: optimize
+        //if (PROGRESS) System.out.println("Permute: " + source);
+
+        // optimization:
+        // if zero or one character, just return a set with it
+        // we check for length < 2 to keep from counting code points all the time
+        if (source.length() <= 2 && UTF16.countCodePoint(source) <= 1) {
+            output.add(source);
+            return;
+        }
+
+        // otherwise iterate through the string, and recursively permute all the other characters
+        Set subpermute = new HashSet();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source, i);
+
+            // optimization:
+            // if the character is canonical combining class zero,
+            // don't permute it
+            if (skipZeros && i != 0 && UCharacter.getCombiningClass(cp) == 0) {
+                //System.out.println("Skipping " + Utility.hex(UTF16.valueOf(source, i)));
+                continue;
+            }
+
+            // see what the permutations of the characters before and after this one are
+            subpermute.clear();
+            permute(source.substring(0,i)
+                + source.substring(i + UTF16.getCharCount(cp)), skipZeros, subpermute);
+
+            // prefix this character to all of them
+            String chStr = UTF16.valueOf(source, i);
+            Iterator it = subpermute.iterator();
+            while (it.hasNext()) {
+                String piece = chStr + (String) it.next();
+                //if (PROGRESS) System.out.println("  Piece: " + piece);
+                output.add(piece);
+            }
+        }
+    }
+
+    // FOR TESTING
+
+    /*
+     *@return the set of "safe starts", characters that are class zero AND are never non-initial in a decomposition.
+     *@internal
+     *
+    public static UnicodeSet getSafeStart() {
+        return (UnicodeSet) SAFE_START.clone();
+    }
+    */
+    /*
+     *@return the set of characters whose decompositions start with the given character
+     *@internal
+     *
+    public static UnicodeSet getStarts(int cp) {
+        UnicodeSet result = AT_START.get(cp);
+        if (result == null) result = EMPTY;
+        return (UnicodeSet) result.clone();
+    }
+    */
+
+    // ===================== PRIVATES ==============================
+
+    // debug
+    private static boolean PROGRESS = false; // debug progress
+    //private static Transliterator NAME = PROGRESS ? Transliterator.getInstance("name") : null;
+    private static boolean SKIP_ZEROS = true;
+
+    // fields
+    private String source;
+    private boolean done;
+    private String[][] pieces;
+    private int[] current;
+    // Note: C will need two more fields, since arrays there don't have lengths
+    // int pieces_length;
+    // int[] pieces_lengths;
+
+    // transient fields
+    private transient StringBuffer buffer = new StringBuffer();
+
+
+    // we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
+    private String[] getEquivalents(String segment) {
+        Set result = new HashSet();
+        Set basic = getEquivalents2(segment);
+        Set permutations = new HashSet();
+
+        // now get all the permutations
+        // add only the ones that are canonically equivalent
+        // TODO: optimize by not permuting any class zero.
+        Iterator it = basic.iterator();
+        while (it.hasNext()) {
+            String item = (String) it.next();
+            permutations.clear();
+            permute(item, SKIP_ZEROS, permutations);
+            Iterator it2 = permutations.iterator();
+            while (it2.hasNext()) {
+                String possible = (String) it2.next();
+
+/*
+                String attempt = Normalizer.normalize(possible, Normalizer.DECOMP, 0);
+                if (attempt.equals(segment)) {
+*/
+                if (Normalizer.compare(possible, segment,0)==0) {
+
+                    if (PROGRESS) System.out.println("Adding Permutation: " + Utility.hex(possible));
+                    result.add(possible);
+
+                } else {
+                    if (PROGRESS) System.out.println("-Skipping Permutation: " + Utility.hex(possible));
+                }
+            }
+        }
+
+        // convert into a String[] to clean up storage
+        String[] finalResult = new String[result.size()];
+        result.toArray(finalResult);
+        return finalResult;
+    }
+
+
+    private Set getEquivalents2(String segment) {
+
+        Set result = new HashSet();
+
+        if (PROGRESS) System.out.println("Adding: " + Utility.hex(segment));
+
+        result.add(segment);
+        StringBuffer workingBuffer = new StringBuffer();
+
+        // cycle through all the characters
+        int cp=0;
+        int[] range = new int[2];
+        for (int i = 0; i < segment.length(); i += UTF16.getCharCount(cp)) {
+
+            // see if any character is at the start of some decomposition
+            cp = UTF16.charAt(segment, i);
+            USerializedSet starts = new USerializedSet();
+
+            if (!NormalizerImpl.getCanonStartSet(cp, starts)) {
+              continue;
+            }
+            int j=0;
+            // if so, see which decompositions match
+            int rangeCount = starts.countRanges();
+            for(j = 0; j < rangeCount; ++j) {
+                starts.getRange(j, range);
+                int end=range[1];
+                for (int cp2 = range[0]; cp2 <= end; ++cp2) {
+                    Set remainder = extract(cp2, segment, i, workingBuffer);
+                    if (remainder == null) continue;
+
+                    // there were some matches, so add all the possibilities to the set.
+                    String prefix= segment.substring(0,i);
+                    prefix += UTF16.valueOf(cp2);
+                    //int el = -1;
+                    Iterator iter = remainder.iterator();
+                    while (iter.hasNext()) {
+                        String item = (String) iter.next();
+                        String toAdd = new String(prefix);
+                        toAdd += item;
+                        result.add(toAdd);
+                        //if (PROGRESS) printf("Adding: %s\n", UToS(Tr(*toAdd)));
+                    }
+                }
+            }
+        }
+        return result;
+        /*
+        Set result = new HashSet();
+        if (PROGRESS) System.out.println("Adding: " + NAME.transliterate(segment));
+        result.add(segment);
+        StringBuffer workingBuffer = new StringBuffer();
+
+        // cycle through all the characters
+        int cp;
+
+        for (int i = 0; i < segment.length(); i += UTF16.getCharCount(cp)) {
+            // see if any character is at the start of some decomposition
+            cp = UTF16.charAt(segment, i);
+            NormalizerImpl.getCanonStartSet(c,fillSet)
+            UnicodeSet starts = AT_START.get(cp);
+            if (starts == null) continue;
+            UnicodeSetIterator usi = new UnicodeSetIterator(starts);
+            // if so, see which decompositions match
+            while (usi.next()) {
+                int cp2 = usi.codepoint;
+                // we know that there are no strings in it
+                // so we don't have to check CharacterIterator.IS_STRING
+                Set remainder = extract(cp2, segment, i, workingBuffer);
+                if (remainder == null) continue;
+
+                // there were some matches, so add all the possibilities to the set.
+                String prefix = segment.substring(0, i) + UTF16.valueOf(cp2);
+                Iterator it = remainder.iterator();
+                while (it.hasNext()) {
+                    String item = (String) it.next();
+                    if (PROGRESS) System.out.println("Adding: " + NAME.transliterate(prefix + item));
+                    result.add(prefix + item);
+                }
+            }
+        }
+        return result;
+        */
+    }
+
+    /**
+     * See if the decomposition of cp2 is at segment starting at segmentPos
+     * (with canonical rearrangment!)
+     * If so, take the remainder, and return the equivalents
+     */
+    private Set extract(int comp, String segment, int segmentPos, StringBuffer buf) {
+        if (PROGRESS) System.out.println(" extract: " + Utility.hex(UTF16.valueOf(comp))
+            + ", " + Utility.hex(segment.substring(segmentPos)));
+
+        //String decomp = Normalizer.normalize(UTF16.valueOf(comp), Normalizer.DECOMP, 0);
+        String decomp = Normalizer.normalize(comp, Normalizer.NFD);
+
+        // See if it matches the start of segment (at segmentPos)
+        boolean ok = false;
+        int cp;
+        int decompPos = 0;
+        int decompCp = UTF16.charAt(decomp,0);
+        decompPos += UTF16.getCharCount(decompCp); // adjust position to skip first char
+        //int decompClass = getClass(decompCp);
+        buf.setLength(0); // initialize working buffer, shared among callees
+
+        for (int i = segmentPos; i < segment.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(segment, i);
+            if (cp == decompCp) { // if equal, eat another cp from decomp
+                if (PROGRESS) System.out.println("  matches: " + Utility.hex(UTF16.valueOf(cp)));
+                if (decompPos == decomp.length()) { // done, have all decomp characters!
+                    buf.append(segment.substring(i + UTF16.getCharCount(cp))); // add remaining segment chars
+                    ok = true;
+                    break;
+                }
+                decompCp = UTF16.charAt(decomp, decompPos);
+                decompPos += UTF16.getCharCount(decompCp);
+                //decompClass = getClass(decompCp);
+            } else {
+                if (PROGRESS) System.out.println("  buffer: " + Utility.hex(UTF16.valueOf(cp)));
+                // brute force approach
+                UTF16.append(buf, cp);
+                /* TODO: optimize
+                // since we know that the classes are monotonically increasing, after zero
+                // e.g. 0 5 7 9 0 3
+                // we can do an optimization
+                // there are only a few cases that work: zero, less, same, greater
+                // if both classes are the same, we fail
+                // if the decomp class < the segment class, we fail
+
+                segClass = getClass(cp);
+                if (decompClass <= segClass) return null;
+                */
+            }
+        }
+        if (!ok) return null; // we failed, characters left over
+        if (PROGRESS) System.out.println("Matches");
+        if (buf.length() == 0) return SET_WITH_NULL_STRING; // succeed, but no remainder
+        String remainder = buf.toString();
+
+        // brute force approach
+        // to check to make sure result is canonically equivalent
+        /*
+        String trial = Normalizer.normalize(UTF16.valueOf(comp) + remainder, Normalizer.DECOMP, 0);
+        if (!segment.regionMatches(segmentPos, trial, 0, segment.length() - segmentPos)) return null;
+        */
+
+        if (0!=Normalizer.compare(UTF16.valueOf(comp) + remainder, segment.substring(segmentPos), 0)) return null;
+
+        // get the remaining combinations
+        return getEquivalents2(remainder);
+    }
+
+    /*
+    // TODO: fix once we have a codepoint interface to get the canonical combining class
+    // TODO: Need public access to canonical combining class in UCharacter!
+    private static int getClass(int cp) {
+        return Normalizer.getClass((char)cp);
+    }
+    */
+
+   // ================= BUILDER =========================
+    // TODO: Flatten this data so it doesn't have to be reconstructed each time!
+
+    //private static final UnicodeSet EMPTY = new UnicodeSet(); // constant, don't change
+    private static final Set SET_WITH_NULL_STRING = new HashSet(); // constant, don't change
+    static {
+        SET_WITH_NULL_STRING.add("");
+    }
+
+  //  private static UnicodeSet SAFE_START = new UnicodeSet();
+  //  private static CharMap AT_START = new CharMap();
+
+        // TODO: WARNING, NORMALIZER doesn't have supplementaries yet !!;
+        // Change FFFF to 10FFFF in C, and in Java when normalizer is upgraded.
+  //  private static int LAST_UNICODE = 0x10FFFF;
+    /*
+    static {
+        buildData();
+    }
+    */
+    /*
+    private static void buildData() {
+
+        if (PROGRESS) System.out.println("Getting Safe Start");
+        for (int cp = 0; cp <= LAST_UNICODE; ++cp) {
+            if (PROGRESS & (cp & 0x7FF) == 0) System.out.print('.');
+            int cc = UCharacter.getCombiningClass(cp);
+            if (cc == 0) SAFE_START.add(cp);
+            // will fix to be really safe below
+        }
+        if (PROGRESS) System.out.println();
+
+        if (PROGRESS) System.out.println("Getting Containment");
+        for (int cp = 0; cp <= LAST_UNICODE; ++cp) {
+            if (PROGRESS & (cp & 0x7FF) == 0) System.out.print('.');
+
+            if (Normalizer.isNormalized(cp, Normalizer.NFD)) continue;
+
+            //String istr = UTF16.valueOf(cp);
+            String decomp = Normalizer.normalize(cp, Normalizer.NFD);
+            //if (decomp.equals(istr)) continue;
+
+            // add each character in the decomposition to canBeIn
+
+            int component;
+            for (int i = 0; i < decomp.length(); i += UTF16.getCharCount(component)) {
+                component = UTF16.charAt(decomp, i);
+                if (i == 0) {
+                    AT_START.add(component, cp);
+                } else if (UCharacter.getCombiningClass(component) == 0) {
+                    SAFE_START.remove(component);
+                }
+            }
+        }
+        if (PROGRESS) System.out.println();
+    }
+        // the following is just for a map from characters to a set of characters
+
+    private static class CharMap {
+        Map storage = new HashMap();
+        MutableInt probe = new MutableInt();
+        boolean converted = false;
+
+        public void add(int cp, int whatItIsIn) {
+            UnicodeSet result = (UnicodeSet) storage.get(probe.set(cp));
+            if (result == null) {
+                result = new UnicodeSet();
+                storage.put(probe, result);
+            }
+            result.add(whatItIsIn);
+        }
+
+        public UnicodeSet get(int cp) {
+            return (UnicodeSet) storage.get(probe.set(cp));
+        }
+    }
+
+    private static class MutableInt {
+        public int contents;
+        public int hashCode() { return contents; }
+        public boolean equals(Object other) {
+            return ((MutableInt)other).contents == contents;
+        }
+        // allows chaining
+        public MutableInt set(int contents) {
+            this.contents = contents;
+            return this;
+        }
+    }
+    */
+
+}
diff --git a/src/com/ibm/icu/text/CharsetDetector.java b/src/com/ibm/icu/text/CharsetDetector.java
new file mode 100644
index 0000000..89faafb
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetDetector.java
@@ -0,0 +1,520 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Arrays;
+
+
+/**
+ * <code>CharsetDetector</code> provides a facility for detecting the
+ * charset or encoding of character data in an unknown format.
+ * The input data can either be from an input stream or an array of bytes.
+ * The result of the detection operation is a list of possibly matching
+ * charsets, or, for simple use, you can just ask for a Java Reader that
+ * will will work over the input data.
+ * <p/>
+ * Character set detection is at best an imprecise operation.  The detection
+ * process will attempt to identify the charset that best matches the characteristics
+ * of the byte data, but the process is partly statistical in nature, and
+ * the results can not be guaranteed to always be correct.
+ * <p/>
+ * For best accuracy in charset detection, the input data should be primarily
+ * in a single language, and a minimum of a few hundred bytes worth of plain text
+ * in the language are needed.  The detection process will attempt to
+ * ignore html or xml style markup that could otherwise obscure the content.
+ * <p/>
+ * @stable ICU 3.4
+ */
+public class CharsetDetector {
+
+//   Question: Should we have getters corresponding to the setters for inut text
+//   and declared encoding?
+
+//   A thought: If we were to create our own type of Java Reader, we could defer
+//   figuring out an actual charset for data that starts out with too much English
+//   only ASCII until the user actually read through to something that didn't look
+//   like 7 bit English.  If  nothing else ever appeared, we would never need to
+//   actually choose the "real" charset.  All assuming that the application just
+//   wants the data, and doesn't care about a char set name.
+
+    /**
+     *   Constructor
+     * 
+     * @stable ICU 3.4
+     */
+    public CharsetDetector() {
+    }
+
+    /**
+     * Set the declared encoding for charset detection.
+     *  The declared encoding of an input text is an encoding obtained
+     *  from an http header or xml declaration or similar source that
+     *  can be provided as additional information to the charset detector.  
+     *  A match between a declared encoding and a possible detected encoding
+     *  will raise the quality of that detected encoding by a small delta,
+     *  and will also appear as a "reason" for the match.
+     * <p/>
+     * A declared encoding that is incompatible with the input data being
+     * analyzed will not be added to the list of possible encodings.
+     * 
+     *  @param encoding The declared encoding 
+     *
+     * @stable ICU 3.4
+     */
+    public CharsetDetector setDeclaredEncoding(String encoding) {
+        fDeclaredEncoding = encoding;
+        return this;
+    }
+    
+    /**
+     * Set the input text (byte) data whose charset is to be detected.
+     * 
+     * @param in the input text of unknown encoding
+     * 
+     * @return This CharsetDetector
+     *
+     * @stable ICU 3.4
+     */
+    public CharsetDetector setText(byte [] in) {
+        fRawInput  = in;
+        fRawLength = in.length;
+        
+        MungeInput();
+        
+        return this;
+    }
+    
+    private static final int kBufSize = 8000;
+
+    /**
+     * Set the input text (byte) data whose charset is to be detected.
+     *  <p/>
+     *   The input stream that supplies the character data must have markSupported()
+     *   == true; the charset detection process will read a small amount of data,
+     *   then return the stream to its original position via
+     *   the InputStream.reset() operation.  The exact amount that will
+     *   be read depends on the characteristics of the data itself.
+     *
+     * @param in the input text of unknown encoding
+     * 
+     * @return This CharsetDetector
+     *
+     * @stable ICU 3.4
+     */
+    
+    public CharsetDetector setText(InputStream in) throws IOException {
+        fInputStream = in;
+        fInputStream.mark(kBufSize);
+        fRawInput = new byte[kBufSize];   // Always make a new buffer because the
+                                          //   previous one may have come from the caller,
+                                          //   in which case we can't touch it.
+        fRawLength = 0;
+        int remainingLength = kBufSize;
+        while (remainingLength > 0 ) {
+            // read() may give data in smallish chunks, esp. for remote sources.  Hence, this loop.
+            int  bytesRead = fInputStream.read(fRawInput, fRawLength, remainingLength);
+            if (bytesRead <= 0) {
+                 break;
+            }
+            fRawLength += bytesRead;
+            remainingLength -= bytesRead;
+        }
+        fInputStream.reset();
+        
+        MungeInput();                     // Strip html markup, collect byte stats.
+        return this;
+    }
+
+  
+    /**
+     * Return the charset that best matches the supplied input data.
+     * 
+     * Note though, that because the detection 
+     * only looks at the start of the input data,
+     * there is a possibility that the returned charset will fail to handle
+     * the full set of input data.
+     * <p/>
+     * Raise an exception if 
+     *  <ul>
+     *    <li>no charset appears to match the data.</li>
+     *    <li>no input text has been provided</li>
+     *  </ul>
+     *
+     * @return a CharsetMatch object representing the best matching charset, or
+     *         <code>null</code> if there are no matches.
+     *
+     * @stable ICU 3.4
+     */
+    public CharsetMatch detect() {
+//   TODO:  A better implementation would be to copy the detect loop from
+//          detectAll(), and cut it short as soon as a match with a high confidence
+//          is found.  This is something to be done later, after things are otherwise
+//          working.
+        CharsetMatch matches[] = detectAll();
+        
+        if (matches == null || matches.length == 0) {
+            return null;
+        }
+        
+        return matches[0];
+     }
+    
+    /**
+     *  Return an array of all charsets that appear to be plausible
+     *  matches with the input data.  The array is ordered with the
+     *  best quality match first.
+     * <p/>
+     * Raise an exception if 
+     *  <ul>
+     *    <li>no charsets appear to match the input data.</li>
+     *    <li>no input text has been provided</li>
+     *  </ul>
+     * 
+     * @return An array of CharsetMatch objects representing possibly matching charsets.
+     *
+     * @stable ICU 3.4
+     */
+    public CharsetMatch[] detectAll() {
+        CharsetRecognizer csr;
+        int               i;
+        int               detectResults;
+        int               confidence;
+        ArrayList         matches = new ArrayList();
+        
+        //  Iterate over all possible charsets, remember all that
+        //    give a match quality > 0.
+        for (i=0; i<fCSRecognizers.size(); i++) {
+            csr = (CharsetRecognizer)fCSRecognizers.get(i);
+            detectResults = csr.match(this);
+            confidence = detectResults & 0x000000ff;
+            if (confidence > 0) {
+                CharsetMatch  m = new CharsetMatch(this, csr, confidence);
+                matches.add(m);
+            }
+        }
+        Collections.sort(matches);      // CharsetMatch compares on confidence
+        Collections.reverse(matches);   //  Put best match first.
+        CharsetMatch [] resultArray = new CharsetMatch[matches.size()];
+        resultArray = (CharsetMatch[]) matches.toArray(resultArray);
+        return resultArray;
+    }
+
+    
+    /**
+     * Autodetect the charset of an inputStream, and return a Java Reader
+     * to access the converted input data.
+     * <p/>
+     * This is a convenience method that is equivalent to
+     *   <code>this.setDeclaredEncoding(declaredEncoding).setText(in).detect().getReader();</code>
+     * <p/>
+     *   For the input stream that supplies the character data, markSupported()
+     *   must be true; the  charset detection will read a small amount of data,
+     *   then return the stream to its original position via
+     *   the InputStream.reset() operation.  The exact amount that will
+     *    be read depends on the characteristics of the data itself.
+     *<p/>
+     * Raise an exception if no charsets appear to match the input data.
+     * 
+     * @param in The source of the byte data in the unknown charset.
+     *
+     * @param declaredEncoding  A declared encoding for the data, if available,
+     *           or null or an empty string if none is available.
+     *
+     * @stable ICU 3.4
+     */
+    public Reader getReader(InputStream in, String declaredEncoding) {
+        fDeclaredEncoding = declaredEncoding;
+        
+        try {
+            setText(in);
+            
+            CharsetMatch match = detect();
+            
+            if (match == null) {
+                return null;
+            }
+            
+            return match.getReader();
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Autodetect the charset of an inputStream, and return a String
+     * containing the converted input data.
+     * <p/>
+     * This is a convenience method that is equivalent to
+     *   <code>this.setDeclaredEncoding(declaredEncoding).setText(in).detect().getString();</code>
+     *<p/>
+     * Raise an exception if no charsets appear to match the input data.
+     * 
+     * @param in The source of the byte data in the unknown charset.
+     *
+     * @param declaredEncoding  A declared encoding for the data, if available,
+     *           or null or an empty string if none is available.
+     *
+     * @stable ICU 3.4
+     */
+    public String getString(byte[] in, String declaredEncoding)
+    {
+        fDeclaredEncoding = declaredEncoding;
+       
+        try {
+            setText(in);
+            
+            CharsetMatch match = detect();
+            
+            if (match == null) {
+                return null;
+            }
+            
+            return match.getString(-1);
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+ 
+    /**
+     * Get the names of all char sets that can be recognized by the char set detector.
+     *
+     * @return an array of the names of all charsets that can be recognized
+     * by the charset detector.
+     *
+     * @stable ICU 3.4
+     */
+    public static String[] getAllDetectableCharsets() {
+        return fCharsetNames;
+    }
+    
+    /**
+     * Test whether or not input filtering is enabled.
+     * 
+     * @return <code>true</code> if input text will be filtered.
+     * 
+     * @see #enableInputFilter
+     *
+     * @stable ICU 3.4
+     */
+    public boolean inputFilterEnabled()
+    {
+        return fStripTags;
+    }
+    
+    /**
+     * Enable filtering of input text. If filtering is enabled,
+     * text within angle brackets ("<" and ">") will be removed
+     * before detection.
+     * 
+     * @param filter <code>true</code> to enable input text filtering.
+     * 
+     * @return The previous setting.
+     *
+     * @stable ICU 3.4
+     */
+    public boolean enableInputFilter(boolean filter)
+    {
+        boolean previous = fStripTags;
+        
+        fStripTags = filter;
+        
+        return previous;
+    }
+    
+    /*
+     *  MungeInput - after getting a set of raw input data to be analyzed, preprocess
+     *               it by removing what appears to be html markup.
+     */
+    private void MungeInput() {
+        int srci = 0;
+        int dsti = 0;
+        byte b;
+        boolean  inMarkup = false;
+        int      openTags = 0;
+        int      badTags  = 0;
+        
+        //
+        //  html / xml markup stripping.
+        //     quick and dirty, not 100% accurate, but hopefully good enough, statistically.
+        //     discard everything within < brackets >
+        //     Count how many total '<' and illegal (nested) '<' occur, so we can make some
+        //     guess as to whether the input was actually marked up at all.
+        if (fStripTags) {
+            for (srci = 0; srci < fRawLength && dsti < fInputBytes.length; srci++) {
+                b = fRawInput[srci];
+                if (b == (byte)'<') {
+                    if (inMarkup) {
+                        badTags++;
+                    }
+                    inMarkup = true;
+                    openTags++;
+                }
+                
+                if (! inMarkup) {
+                    fInputBytes[dsti++] = b;
+                }
+                
+                if (b == (byte)'>') {
+                    inMarkup = false;
+                }        
+            }
+            
+            fInputLen = dsti;
+        }
+        
+        //
+        //  If it looks like this input wasn't marked up, or if it looks like it's
+        //    essentially nothing but markup abandon the markup stripping.
+        //    Detection will have to work on the unstripped input.
+        //
+        if (openTags<5 || openTags/5 < badTags || 
+                (fInputLen < 100 && fRawLength>600)) {
+            int limit = fRawLength;
+            
+            if (limit > kBufSize) {
+                limit = kBufSize;
+            }
+            
+            for (srci=0; srci<limit; srci++) {
+                fInputBytes[srci] = fRawInput[srci];
+            }
+            fInputLen = srci;
+        }
+        
+        //
+        // Tally up the byte occurence statistics.
+        //   These are available for use by the various detectors.
+        //
+        Arrays.fill(fByteStats, (short)0);
+        for (srci=0; srci<fInputLen; srci++) {
+            int val = fInputBytes[srci] & 0x00ff;
+            fByteStats[val]++;
+        }
+        
+        fC1Bytes = false;
+        for (int i = 0x80; i <= 0x9F; i += 1) {
+            if (fByteStats[i] != 0) {
+                fC1Bytes = true;
+                break;
+            }
+        }
+     }
+
+    /*
+     *  The following items are accessed by individual CharsetRecongizers during
+     *     the recognition process
+     * 
+     */
+    byte[]      fInputBytes =       // The text to be checked.  Markup will have been
+                   new byte[kBufSize];  //   removed if appropriate.
+    
+    int         fInputLen;          // Length of the byte data in fInputText.
+    
+    short       fByteStats[] =      // byte frequency statistics for the input text.
+                   new short[256];  //   Value is percent, not absolute.
+                                    //   Value is rounded up, so zero really means zero occurences.
+    
+    boolean     fC1Bytes =          // True if any bytes in the range 0x80 - 0x9F are in the input;
+                   false;
+    
+    String      fDeclaredEncoding;
+    
+    
+
+    //
+    //  Stuff private to CharsetDetector
+    //
+    byte[]               fRawInput;     // Original, untouched input bytes.
+                                        //  If user gave us a byte array, this is it.
+                                        //  If user gave us a stream, it's read to a 
+                                        //  buffer here.
+    int                  fRawLength;    // Length of data in fRawInput array.
+    
+    InputStream          fInputStream;  // User's input stream, or null if the user
+                                        //   gave us a byte array.
+     
+    boolean              fStripTags =   // If true, setText() will strip tags from input text.
+                           false;
+    
+    
+    /*
+     * List of recognizers for all charsets known to the implementation.
+     */
+    private static ArrayList fCSRecognizers = createRecognizers();
+    private static String [] fCharsetNames;
+    
+    /*
+     * Create the singleton instances of the CharsetRecognizer classes
+     */
+    private static ArrayList createRecognizers() {
+        ArrayList recognizers = new ArrayList();
+        
+        recognizers.add(new CharsetRecog_UTF8());
+        
+        recognizers.add(new CharsetRecog_Unicode.CharsetRecog_UTF_16_BE());
+        recognizers.add(new CharsetRecog_Unicode.CharsetRecog_UTF_16_LE());
+        recognizers.add(new CharsetRecog_Unicode.CharsetRecog_UTF_32_BE());
+        recognizers.add(new CharsetRecog_Unicode.CharsetRecog_UTF_32_LE());
+        
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_sjis());
+        recognizers.add(new CharsetRecog_2022.CharsetRecog_2022JP());
+        recognizers.add(new CharsetRecog_2022.CharsetRecog_2022CN());
+        recognizers.add(new CharsetRecog_2022.CharsetRecog_2022KR());
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_euc.CharsetRecog_gb_18030());
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_euc.CharsetRecog_euc_jp());
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_euc.CharsetRecog_euc_kr());
+        recognizers.add(new CharsetRecog_mbcs.CharsetRecog_big5());
+        
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_da());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_de());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_en());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_es());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_fr());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_it());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_nl());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_no());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_pt());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_1_sv());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_2_cs());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_2_hu());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_2_pl());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_2_ro());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_5_ru());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_6_ar());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_7_el());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_8_I_he());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_8_he());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_windows_1251());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_windows_1256());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_KOI8_R());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_8859_9_tr());
+        
+        // Create an array of all charset names, as a side effect.
+        // Needed for the getAllDetectableCharsets() API.
+        String[] charsetNames = new String [recognizers.size()];
+        int out = 0;
+        
+        for (int i = 0; i < recognizers.size(); i++) {
+            String name = ((CharsetRecognizer)recognizers.get(i)).getName();
+            
+            if (out == 0 || ! name.equals(charsetNames[out - 1])) {
+                charsetNames[out++] = name;
+            }
+        }
+        
+        fCharsetNames = new String[out];
+        System.arraycopy(charsetNames, 0, fCharsetNames, 0, out);
+        
+        return recognizers;
+    }
+}
diff --git a/src/com/ibm/icu/text/CharsetMatch.java b/src/com/ibm/icu/text/CharsetMatch.java
new file mode 100644
index 0000000..629da6a
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetMatch.java
@@ -0,0 +1,263 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+
+/**
+ * This class represents a charset that has been identified by a CharsetDetector
+ * as a possible encoding for a set of input data.  From an instance of this
+ * class, you can ask for a confidence level in the charset identification,
+ * or for Java Reader or String to access the original byte data in Unicode form.
+ * <p/>
+ * Instances of this class are created only by CharsetDetectors.
+ * <p/>
+ * Note:  this class has a natural ordering that is inconsistent with equals.
+ *        The natural ordering is based on the match confidence value.
+ *
+ * @stable ICU 3.4
+ */
+public class CharsetMatch implements Comparable {
+
+    
+    /**
+     * Create a java.io.Reader for reading the Unicode character data corresponding
+     * to the original byte data supplied to the Charset detect operation.
+     * <p/>
+     * CAUTION:  if the source of the byte data was an InputStream, a Reader
+     * can be created for only one matching char set using this method.  If more 
+     * than one charset needs to be tried, the caller will need to reset
+     * the InputStream and create InputStreamReaders itself, based on the charset name.
+     *
+     * @return the Reader for the Unicode character data.
+     *
+     * @stable ICU 3.4
+     */
+    public Reader getReader() {
+        InputStream inputStream = fInputStream;
+        
+        if (inputStream == null) {
+            inputStream = new ByteArrayInputStream(fRawInput, 0, fRawLength);
+        }
+        
+        try {
+            inputStream.reset();
+            return new InputStreamReader(inputStream, getName());
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Create a Java String from Unicode character data corresponding
+     * to the original byte data supplied to the Charset detect operation.
+     *
+     * @return a String created from the converted input data.
+     *
+     * @stable ICU 3.4
+     */
+    public String getString()  throws java.io.IOException {
+        return getString(-1);
+
+    }
+
+    /**
+     * Create a Java String from Unicode character data corresponding
+     * to the original byte data supplied to the Charset detect operation.
+     * The length of the returned string is limited to the specified size;
+     * the string will be trunctated to this length if necessary.  A limit value of
+     * zero or less is ignored, and treated as no limit.
+     *
+     * @param maxLength The maximium length of the String to be created when the
+     *                  source of the data is an input stream, or -1 for
+     *                  unlimited length.
+     * @return a String created from the converted input data.
+     *
+     * @stable ICU 3.4
+     */
+    public String getString(int maxLength) throws java.io.IOException {
+        String result = null;
+        if (fInputStream != null) {
+            StringBuffer sb = new StringBuffer();
+            char[] buffer = new char[1024];
+            Reader reader = getReader();
+            int max = maxLength < 0? Integer.MAX_VALUE : maxLength;
+            int bytesRead = 0;
+            
+            while ((bytesRead = reader.read(buffer, 0, Math.min(max, 1024))) >= 0) {
+                sb.append(buffer, 0, bytesRead);
+                max -= bytesRead;
+            }
+            
+            reader.close();
+            
+            return sb.toString();
+        } else {
+            result = new String(fRawInput, getName());            
+        }
+        return result;
+
+    }
+    
+    /**
+     * Get an indication of the confidence in the charset detected.
+     * Confidence values range from 0-100, with larger numbers indicating
+     * a better match of the input data to the characteristics of the
+     * charset.
+     *
+     * @return the confidence in the charset match
+     *
+     * @stable ICU 3.4
+     */
+    public int getConfidence() {
+        return fConfidence;
+    }
+    
+
+    /**
+     * Bit flag indicating the match is based on the the encoding scheme.
+     *
+     * @see #getMatchType
+     * @stable ICU 3.4
+     */
+    static public final int ENCODING_SCHEME    = 1;
+    
+    /**
+     * Bit flag indicating the match is based on the presence of a BOM.
+     * 
+     * @see #getMatchType
+     * @stable ICU 3.4
+     */
+    static public final int BOM                = 2;
+    
+    /**
+     * Bit flag indicating he match is based on the declared encoding.
+     * 
+     * @see #getMatchType
+     * @stable ICU 3.4
+     */
+    static public final int DECLARED_ENCODING  = 4;
+    
+    /**
+     * Bit flag indicating the match is based on language statistics.
+     *
+     * @see #getMatchType
+     * @stable ICU 3.4
+     */
+    static public final int LANG_STATISTICS    = 8;
+    
+    /**
+     * Return flags indicating what it was about the input data 
+     * that caused this charset to be considered as a possible match.
+     * The result is a bitfield containing zero or more of the flags
+     * ENCODING_SCHEME, BOM, DECLARED_ENCODING, and LANG_STATISTICS.
+     * A result of zero means no information is available.
+     * <p>
+     * Note: currently, this method always returns zero.
+     * <p>
+     *
+     * @return the type of match found for this charset.
+     *
+     * @draft ICU 3.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getMatchType() {
+//      TODO: create a list of enum-like constants for common combinations of types of matches.
+        return 0;
+    }
+
+    /**
+     * Get the name of the detected charset.  
+     * The name will be one that can be used with other APIs on the
+     * platform that accept charset names.  It is the "Canonical name"
+     * as defined by the class java.nio.charset.Charset; for
+     * charsets that are registered with the IANA charset registry,
+     * this is the MIME-preferred registerd name.
+     *
+     * @see java.nio.charset.Charset
+     * @see java.io.InputStreamReader
+     *
+     * @return The name of the charset.
+     *
+     * @stable ICU 3.4
+     */
+    public String getName() {
+        return fRecognizer.getName();
+    }
+    
+    /**
+     * Get the ISO code for the language of the detected charset.  
+     *
+     * @return The ISO code for the language or <code>null</code> if the language cannot be determined.
+     *
+     * @stable ICU 3.4
+     */
+    public String getLanguage() {
+        return fRecognizer.getLanguage();
+    }
+
+    /**
+     * Compare to other CharsetMatch objects.
+     * Comparison is based on the match confidence value, which 
+     *   allows CharsetDetector.detectAll() to order its results. 
+     *
+     * @param o the CharsetMatch object to compare against.
+     * @return  a negative integer, zero, or a positive integer as the 
+     *          confidence level of this CharsetMatch
+     *          is less than, equal to, or greater than that of
+     *          the argument.
+     * @throws ClassCastException if the argument is not a CharsetMatch.
+     * @stable ICU 3.4
+     */
+    public int compareTo (Object o) {
+        CharsetMatch other = (CharsetMatch)o;
+        int compareResult = 0;
+        if (this.fConfidence > other.fConfidence) {
+            compareResult = 1;
+        } else if (this.fConfidence < other.fConfidence) {
+            compareResult = -1;
+        }
+        return compareResult;
+    }
+    
+    /*
+     *  Constructor.  Implementation internal
+     */
+    CharsetMatch(CharsetDetector det, CharsetRecognizer rec, int conf) {
+        fRecognizer = rec;
+        fConfidence = conf;
+        
+        // The references to the original aplication input data must be copied out
+        //   of the charset recognizer to here, in case the application resets the
+        //   recognizer before using this CharsetMatch.
+        if (det.fInputStream == null) {
+            // We only want the existing input byte data if it came straight from the user,
+            //   not if is just the head of a stream.
+            fRawInput    = det.fRawInput;
+            fRawLength   = det.fRawLength;
+        }
+        fInputStream = det.fInputStream;
+    }
+
+    
+    //
+    //   Private Data
+    //
+    private int                 fConfidence;
+    private CharsetRecognizer   fRecognizer;
+    private byte[]              fRawInput = null;     // Original, untouched input bytes.
+                                                      //  If user gave us a byte array, this is it.
+    private int                 fRawLength;           // Length of data in fRawInput array.
+
+    private InputStream         fInputStream = null;  // User's input stream, or null if the user
+                                                      //   gave us a byte array.
+}
diff --git a/src/com/ibm/icu/text/CharsetRecog_2022.java b/src/com/ibm/icu/text/CharsetRecog_2022.java
new file mode 100644
index 0000000..822e961
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_2022.java
@@ -0,0 +1,166 @@
+/*
+*******************************************************************************
+* Copyright (C) 2005 - 2008, International Business Machines Corporation and  *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ *  class CharsetRecog_2022  part of the ICU charset detection imlementation.
+ *                           This is a superclass for the individual detectors for
+ *                           each of the detectable members of the ISO 2022 family
+ *                           of encodings.
+ * 
+ *                           The separate classes are nested within this class.
+ * 
+ * @internal
+ */
+abstract class CharsetRecog_2022 extends CharsetRecognizer {
+
+    
+    /**
+     * Matching function shared among the 2022 detectors JP, CN and KR
+     * Counts up the number of legal an unrecognized escape sequences in
+     * the sample of text, and computes a score based on the total number &
+     * the proportion that fit the encoding.
+     * 
+     * 
+     * @param text the byte buffer containing text to analyse
+     * @param textLen  the size of the text in the byte.
+     * @param escapeSequences the byte escape sequences to test for.
+     * @return match quality, in the range of 0-100.
+     */
+    int   match(byte [] text, int textLen, byte [][] escapeSequences) {
+        int     i, j;
+        int     escN;
+        int     hits   = 0;
+        int     misses = 0;
+        int     shifts = 0;
+        int     quality;
+        scanInput:
+            for (i=0; i<textLen; i++) {
+                if (text[i] == 0x1b) {
+                    checkEscapes:
+                        for (escN=0; escN<escapeSequences.length; escN++) {
+                            byte [] seq = escapeSequences[escN];
+                            
+                            if ((textLen - i) < seq.length) {
+                                continue checkEscapes;
+                            }
+                            
+                            for (j=1; j<seq.length; j++) {
+                                if (seq[j] != text[i+j])  {
+                                    continue checkEscapes;
+                                }                                   
+                            }
+                            
+                            hits++; 
+                            i += seq.length-1;
+                            continue scanInput;
+                        }
+                
+                        misses++;                  
+                }
+                
+                if (text[i] == 0x0e || text[i] == 0x0f) {
+                    // Shift in/out
+                    shifts++;
+                }
+            }
+        
+        if (hits == 0) {
+            return 0;
+        }
+        
+        //
+        // Initial quality is based on relative proportion of recongized vs.
+        //   unrecognized escape sequences. 
+        //   All good:  quality = 100;
+        //   half or less good: quality = 0;
+        //   linear inbetween.
+        quality = (100*hits - 100*misses) / (hits + misses);
+        
+        // Back off quality if there were too few escape sequences seen.
+        //   Include shifts in this computation, so that KR does not get penalized
+        //   for having only a single Escape sequence, but many shifts.
+        if (hits+shifts < 5) {
+            quality -= (5-(hits+shifts))*10;
+        }
+        
+        if (quality < 0) {
+            quality = 0;
+        }        
+        return quality;
+    }
+
+    
+ 
+    
+    static class CharsetRecog_2022JP extends CharsetRecog_2022 {
+        private byte [] [] escapeSequences = {
+                {0x1b, 0x24, 0x28, 0x43},   // KS X 1001:1992
+                {0x1b, 0x24, 0x28, 0x44},   // JIS X 212-1990
+                {0x1b, 0x24, 0x40},         // JIS C 6226-1978
+                {0x1b, 0x24, 0x41},         // GB 2312-80
+                {0x1b, 0x24, 0x42},         // JIS X 208-1983
+                {0x1b, 0x26, 0x40},         // JIS X 208 1990, 1997
+                {0x1b, 0x28, 0x42},         // ASCII
+                {0x1b, 0x28, 0x48},         // JIS-Roman
+                {0x1b, 0x28, 0x49},         // Half-width katakana
+                {0x1b, 0x28, 0x4a},         // JIS-Roman
+                {0x1b, 0x2e, 0x41},         // ISO 8859-1
+                {0x1b, 0x2e, 0x46}          // ISO 8859-7
+                };
+        
+        String getName() {
+            return "ISO-2022-JP";
+        }
+        
+        int   match(CharsetDetector det) {
+            return match(det.fInputBytes, det.fInputLen, escapeSequences);
+        }
+    }
+
+    static class CharsetRecog_2022KR extends CharsetRecog_2022 {
+        private byte [] [] escapeSequences = {
+                {0x1b, 0x24, 0x29, 0x43}   
+                 };
+        
+        String getName() {
+            return "ISO-2022-KR";
+        }
+        
+        int   match(CharsetDetector det) {
+            return match(det.fInputBytes, det.fInputLen, escapeSequences);
+        }
+        
+    }
+
+    static class CharsetRecog_2022CN extends CharsetRecog_2022 {
+        private byte [] [] escapeSequences = {
+                {0x1b, 0x24, 0x29, 0x41},   // GB 2312-80
+                {0x1b, 0x24, 0x29, 0x47},   // CNS 11643-1992 Plane 1
+                {0x1b, 0x24, 0x2A, 0x48},   // CNS 11643-1992 Plane 2
+                {0x1b, 0x24, 0x29, 0x45},   // ISO-IR-165
+                {0x1b, 0x24, 0x2B, 0x49},   // CNS 11643-1992 Plane 3
+                {0x1b, 0x24, 0x2B, 0x4A},   // CNS 11643-1992 Plane 4
+                {0x1b, 0x24, 0x2B, 0x4B},   // CNS 11643-1992 Plane 5
+                {0x1b, 0x24, 0x2B, 0x4C},   // CNS 11643-1992 Plane 6
+                {0x1b, 0x24, 0x2B, 0x4D},   // CNS 11643-1992 Plane 7
+                {0x1b, 0x4e},               // SS2
+                {0x1b, 0x4f},               // SS3
+        };
+        
+        String getName() {
+            return "ISO-2022-CN";
+        }
+        
+        
+        int   match(CharsetDetector det) {
+            return match(det.fInputBytes, det.fInputLen, escapeSequences);
+        }
+    }
+    
+    }
+
diff --git a/src/com/ibm/icu/text/CharsetRecog_UTF8.java b/src/com/ibm/icu/text/CharsetRecog_UTF8.java
new file mode 100644
index 0000000..e2e4485
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_UTF8.java
@@ -0,0 +1,99 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005 - 2007, International Business Machines Corporation and  *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ * Charset recognizer for UTF-8
+ *
+ * @internal
+ */
+class CharsetRecog_UTF8 extends CharsetRecognizer {
+
+    String getName() {
+        return "UTF-8";
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#match(com.ibm.icu.text.CharsetDetector)
+     */
+    int match(CharsetDetector det) {
+        boolean     hasBOM = false;
+        int         numValid = 0;
+        int         numInvalid = 0;
+        byte        input[] = det.fRawInput;
+        int         i;
+        int         trailBytes = 0;
+        int         confidence;
+        
+        if (det.fRawLength >= 3 && 
+                (input[0] & 0xFF) == 0xef && (input[1] & 0xFF) == 0xbb & (input[2] & 0xFF) == 0xbf) {
+            hasBOM = true;
+        }
+        
+        // Scan for multi-byte sequences
+        for (i=0; i<det.fRawLength; i++) {
+            int b = input[i];
+            if ((b & 0x80) == 0) {
+                continue;   // ASCII
+            }
+            
+            // Hi bit on char found.  Figure out how long the sequence should be
+            if ((b & 0x0e0) == 0x0c0) {
+                trailBytes = 1;                
+            } else if ((b & 0x0f0) == 0x0e0) {
+                trailBytes = 2;
+            } else if ((b & 0x0f8) == 0xf0) {
+                trailBytes = 3;
+            } else {
+                numInvalid++;
+                if (numInvalid > 5) {
+                    break;
+                }
+                trailBytes = 0;
+            }
+                
+            // Verify that we've got the right number of trail bytes in the sequence
+            for (;;) {
+                i++;
+                if (i>=det.fRawLength) {
+                    break;
+                }
+                b = input[i];
+                if ((b & 0xc0) != 0x080) {
+                    numInvalid++;
+                    break;
+                }
+                if (--trailBytes == 0) {
+                    numValid++;
+                    break;
+                }
+            }
+                        
+        }
+        
+        // Cook up some sort of confidence score, based on presense of a BOM
+        //    and the existence of valid and/or invalid multi-byte sequences.
+        confidence = 0;
+        if (hasBOM && numInvalid==0) {
+            confidence = 100;
+        } else if (hasBOM && numValid > numInvalid*10) {
+            confidence = 80;
+        } else if (numValid > 3 && numInvalid == 0) {
+            confidence = 100;            
+        } else if (numValid > 0 && numInvalid == 0) {
+            confidence = 80;
+        } else if (numValid == 0 && numInvalid == 0) {
+            // Plain ASCII.  
+            confidence = 10;            
+        } else if (numValid > numInvalid*10) {
+            // Probably corruput utf-8 data.  Valid sequences aren't likely by chance.
+            confidence = 25;
+        }
+        return confidence;
+    }
+
+}
diff --git a/src/com/ibm/icu/text/CharsetRecog_Unicode.java b/src/com/ibm/icu/text/CharsetRecog_Unicode.java
new file mode 100644
index 0000000..979c68d
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_Unicode.java
@@ -0,0 +1,155 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * This class matches UTF-16 and UTF-32, both big- and little-endian. The
+ * BOM will be used if it is present.
+ * 
+ * @internal
+ */
+abstract class CharsetRecog_Unicode extends CharsetRecognizer {
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#getName()
+     */
+    abstract String getName();
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#match(com.ibm.icu.text.CharsetDetector)
+     */
+    abstract int match(CharsetDetector det);
+    
+    static class CharsetRecog_UTF_16_BE extends CharsetRecog_Unicode
+    {
+        String getName()
+        {
+            return "UTF-16BE";
+        }
+        
+        int match(CharsetDetector det)
+        {
+            byte[] input = det.fRawInput;
+            
+            if (input.length>=2 && ((input[0] & 0xFF) == 0xFE && (input[1] & 0xFF) == 0xFF)) {
+                return 100;
+            }
+            
+            // TODO: Do some statistics to check for unsigned UTF-16BE
+            return 0;
+        }
+    }
+    
+    static class CharsetRecog_UTF_16_LE extends CharsetRecog_Unicode
+    {
+        String getName()
+        {
+            return "UTF-16LE";
+        }
+        
+        int match(CharsetDetector det)
+        {
+            byte[] input = det.fRawInput;
+            
+            if (input.length >= 2 && ((input[0] & 0xFF) == 0xFF && (input[1] & 0xFF) == 0xFE))
+            {
+               // An LE BOM is present.
+               if (input.length>=4 && input[2] == 0x00 && input[3] == 0x00) {
+                   // It is probably UTF-32 LE, not UTF-16
+                   return 0;
+               }
+               return 100;
+            }        
+            
+            // TODO: Do some statistics to check for unsigned UTF-16LE
+            return 0;
+        }
+    }
+    
+    static abstract class CharsetRecog_UTF_32 extends CharsetRecog_Unicode
+    {
+        abstract int getChar(byte[] input, int index);
+        
+        abstract String getName();
+        
+        int match(CharsetDetector det)
+        {
+            byte[] input   = det.fRawInput;
+            int limit      = (det.fRawLength / 4) * 4;
+            int numValid   = 0;
+            int numInvalid = 0;
+            boolean hasBOM = false;
+            int confidence = 0;
+            
+            if (limit==0) {
+                return 0;
+            }
+            if (getChar(input, 0) == 0x0000FEFF) {
+                hasBOM = true;
+            }
+            
+            for(int i = 0; i < limit; i += 4) {
+                int ch = getChar(input, i);
+                
+                if (ch < 0 || ch >= 0x10FFFF || (ch >= 0xD800 && ch <= 0xDFFF)) {
+                    numInvalid += 1;
+                } else {
+                    numValid += 1;
+                }
+            }
+            
+            
+            // Cook up some sort of confidence score, based on presence of a BOM
+            //    and the existence of valid and/or invalid multi-byte sequences.
+            if (hasBOM && numInvalid==0) {
+                confidence = 100;
+            } else if (hasBOM && numValid > numInvalid*10) {
+                confidence = 80;
+            } else if (numValid > 3 && numInvalid == 0) {
+                confidence = 100;            
+            } else if (numValid > 0 && numInvalid == 0) {
+                confidence = 80;
+            } else if (numValid > numInvalid*10) {
+                // Probably corrupt UTF-32BE data.  Valid sequences aren't likely by chance.
+                confidence = 25;
+            }
+            
+            return confidence;
+        }
+    }
+    
+    static class CharsetRecog_UTF_32_BE extends CharsetRecog_UTF_32
+    {
+        int getChar(byte[] input, int index)
+        {
+            return (input[index + 0] & 0xFF) << 24 | (input[index + 1] & 0xFF) << 16 |
+                   (input[index + 2] & 0xFF) <<  8 | (input[index + 3] & 0xFF);
+        }
+        
+        String getName()
+        {
+            return "UTF-32BE";
+        }
+    }
+
+    
+    static class CharsetRecog_UTF_32_LE extends CharsetRecog_UTF_32
+    {
+        int getChar(byte[] input, int index)
+        {
+            return (input[index + 3] & 0xFF) << 24 | (input[index + 2] & 0xFF) << 16 |
+                   (input[index + 1] & 0xFF) <<  8 | (input[index + 0] & 0xFF);
+        }
+        
+        String getName()
+        {
+            return "UTF-32LE";
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CharsetRecog_mbcs.java b/src/com/ibm/icu/text/CharsetRecog_mbcs.java
new file mode 100644
index 0000000..bf6a91e
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_mbcs.java
@@ -0,0 +1,542 @@
+/*
+ ****************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                             *
+ ****************************************************************************
+ *
+ */
+package com.ibm.icu.text;
+
+import java.util.Arrays;
+
+/**
+ * CharsetRecognizer implemenation for Asian  - double or multi-byte - charsets.
+ *                   Match is determined mostly by the input data adhering to the
+ *                   encoding scheme for the charset, and, optionally,
+ *                   frequency-of-occurence of characters.
+ * <p/>
+ *                   Instances of this class are singletons, one per encoding
+ *                   being recognized.  They are created in the main
+ *                   CharsetDetector class and kept in the global list of available
+ *                   encodings to be checked.  The specific encoding being recognized
+ *                   is determined by subclass.
+ * 
+ * @internal                  
+ */
+abstract class CharsetRecog_mbcs extends CharsetRecognizer {
+
+   /**
+     * Get the IANA name of this charset.
+     * @return the charset name.
+     */
+    abstract String      getName() ;
+    
+    
+    /**
+     * Test the match of this charset with the input text data
+     *      which is obtained via the CharsetDetector object.
+     * 
+     * @param det  The CharsetDetector, which contains the input text
+     *             to be checked for being in this charset.
+     * @return     Two values packed into one int  (Damn java, anyhow)
+     *             <br/>
+     *             bits 0-7:  the match confidence, ranging from 0-100
+     *             <br/>
+     *             bits 8-15: The match reason, an enum-like value.
+     */
+    int match(CharsetDetector det, int [] commonChars) {
+        int   singleByteCharCount = 0;
+        int   doubleByteCharCount = 0;
+        int   commonCharCount     = 0;
+        int   badCharCount        = 0;
+        int   totalCharCount      = 0;
+        int   confidence          = 0;
+        iteratedChar   iter       = new iteratedChar();
+        
+        detectBlock: {
+            for (iter.reset(); nextChar(iter, det);) {
+                totalCharCount++;
+                if (iter.error) {
+                    badCharCount++; 
+                } else {
+                    long cv = iter.charValue & 0xFFFFFFFFL;
+                                        
+                    if (cv <= 0xff) {
+                        singleByteCharCount++;
+                    } else {
+                        doubleByteCharCount++;
+                        if (commonChars != null) {
+                            // NOTE: This assumes that there are no 4-byte common chars.
+                            if (Arrays.binarySearch(commonChars, (int) cv) >= 0) {
+                                commonCharCount++;
+                            }
+                        }
+                    }
+                }
+                if (badCharCount >= 2 && badCharCount*5 >= doubleByteCharCount) {
+                    // Bail out early if the byte data is not matching the encoding scheme.
+                    break detectBlock;
+                }
+            }
+            
+            if (doubleByteCharCount <= 10 && badCharCount== 0) {
+                // Not many multi-byte chars.
+                if (doubleByteCharCount == 0 && totalCharCount < 10) {
+                    // There weren't any multibyte sequences, and there was a low density of non-ASCII single bytes.
+                    // We don't have enough data to have any confidence.
+                    // Statistical analysis of single byte non-ASCII charcters would probably help here.
+                    confidence = 0;
+                }
+                else {
+                    //   ASCII or ISO file?  It's probably not our encoding,
+                    //   but is not incompatible with our encoding, so don't give it a zero.
+                    confidence = 10;
+                }
+                
+                break detectBlock;
+            }
+            
+            //
+            //  No match if there are too many characters that don't fit the encoding scheme.
+            //    (should we have zero tolerance for these?)
+            //
+            if (doubleByteCharCount < 20*badCharCount) {
+                confidence = 0;
+                break detectBlock;
+            }
+            
+            if (commonChars == null) {
+                // We have no statistics on frequently occuring characters.
+                //  Assess confidence purely on having a reasonable number of
+                //  multi-byte characters (the more the better
+                confidence = 30 + doubleByteCharCount - 20*badCharCount;
+                if (confidence > 100) {
+                    confidence = 100;
+                }
+            }else {
+                //
+                // Frequency of occurence statistics exist.
+                //
+                double maxVal = Math.log((float)doubleByteCharCount / 4);
+                double scaleFactor = 90.0 / maxVal;
+                confidence = (int)(Math.log(commonCharCount+1) * scaleFactor + 10);
+                confidence = Math.min(confidence, 100);
+            }
+        }   // end of detectBlock:
+        
+        return confidence;
+    }
+    
+     // "Character"  iterated character class.
+     //    Recognizers for specific mbcs encodings make their "characters" available
+     //    by providing a nextChar() function that fills in an instance of iteratedChar
+     //    with the next char from the input.
+     //    The returned characters are not converted to Unicode, but remain as the raw
+     //    bytes (concatenated into an int) from the codepage data.
+     //
+     //  For Asian charsets, use the raw input rather than the input that has been
+     //   stripped of markup.  Detection only considers multi-byte chars, effectively
+     //   stripping markup anyway, and double byte chars do occur in markup too.
+     //
+     static class iteratedChar {
+         int             charValue = 0;             // 1-4 bytes from the raw input data
+         int             index     = 0;
+         int             nextIndex = 0;
+         boolean         error     = false;
+         boolean         done      = false;
+         
+         void reset() {
+             charValue = 0;
+             index     = -1;
+             nextIndex = 0;
+             error     = false;
+             done      = false;
+         }
+         
+         int nextByte(CharsetDetector det) {
+             if (nextIndex >= det.fRawLength) {
+                 done = true;
+                 return -1;
+             }
+             int byteValue = (int)det.fRawInput[nextIndex++] & 0x00ff;
+             return byteValue;
+         }       
+     }
+     
+     /**
+      * Get the next character (however many bytes it is) from the input data
+      *    Subclasses for specific charset encodings must implement this function
+      *    to get characters according to the rules of their encoding scheme.
+      * 
+      *  This function is not a method of class iteratedChar only because
+      *   that would require a lot of extra derived classes, which is awkward.
+      * @param it  The iteratedChar "struct" into which the returned char is placed.
+      * @param det The charset detector, which is needed to get at the input byte data
+      *            being iterated over.
+      * @return    True if a character was returned, false at end of input.
+      */
+     abstract boolean nextChar(iteratedChar it, CharsetDetector det);
+     
+
+
+     
+     
+     /**
+      *   Shift-JIS charset recognizer.   
+      *
+      */
+     static class CharsetRecog_sjis extends CharsetRecog_mbcs {
+         static int [] commonChars = 
+             // TODO:  This set of data comes from the character frequency-
+             //        of-occurence analysis tool.  The data needs to be moved
+             //        into a resource and loaded from there.
+            {0x8140, 0x8141, 0x8142, 0x8145, 0x815b, 0x8169, 0x816a, 0x8175, 0x8176, 0x82a0, 
+             0x82a2, 0x82a4, 0x82a9, 0x82aa, 0x82ab, 0x82ad, 0x82af, 0x82b1, 0x82b3, 0x82b5, 
+             0x82b7, 0x82bd, 0x82be, 0x82c1, 0x82c4, 0x82c5, 0x82c6, 0x82c8, 0x82c9, 0x82cc, 
+             0x82cd, 0x82dc, 0x82e0, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82f0, 0x82f1, 0x8341, 
+             0x8343, 0x834e, 0x834f, 0x8358, 0x835e, 0x8362, 0x8367, 0x8375, 0x8376, 0x8389, 
+             0x838a, 0x838b, 0x838d, 0x8393, 0x8e96, 0x93fa, 0x95aa};
+         
+         boolean nextChar(iteratedChar it, CharsetDetector det) {
+             it.index = it.nextIndex;
+             it.error = false;
+             int firstByte;
+             firstByte = it.charValue = it.nextByte(det);
+             if (firstByte < 0) {
+                 return false;
+             }
+             
+             if (firstByte <= 0x7f || (firstByte>0xa0 && firstByte<=0xdf)) {
+                 return true;
+             }
+             
+             int secondByte = it.nextByte(det);
+             if (secondByte < 0)  {
+                 return false;          
+             }
+             it.charValue = (firstByte << 8) | secondByte;
+             if (! ((secondByte>=0x40 && secondByte<=0x7f) || (secondByte>=0x80 && secondByte<=0xff))) {
+                 // Illegal second byte value.
+                 it.error = true;
+             }
+             return true;
+         }
+         
+         int match(CharsetDetector det) {
+             return match(det, commonChars);
+         }
+         
+         String getName() {
+             return "Shift_JIS";
+         }
+         
+         public String getLanguage()
+         {
+             return "ja";
+         }
+
+         
+     }
+     
+     
+     /**
+      *   Big5 charset recognizer.   
+      *
+      */
+     static class CharsetRecog_big5 extends CharsetRecog_mbcs {
+         static int [] commonChars = 
+             // TODO:  This set of data comes from the character frequency-
+             //        of-occurence analysis tool.  The data needs to be moved
+             //        into a resource and loaded from there.
+            {0xa140, 0xa141, 0xa142, 0xa143, 0xa147, 0xa149, 0xa175, 0xa176, 0xa440, 0xa446, 
+             0xa447, 0xa448, 0xa451, 0xa454, 0xa457, 0xa464, 0xa46a, 0xa46c, 0xa477, 0xa4a3, 
+             0xa4a4, 0xa4a7, 0xa4c1, 0xa4ce, 0xa4d1, 0xa4df, 0xa4e8, 0xa4fd, 0xa540, 0xa548, 
+             0xa558, 0xa569, 0xa5cd, 0xa5e7, 0xa657, 0xa661, 0xa662, 0xa668, 0xa670, 0xa6a8, 
+             0xa6b3, 0xa6b9, 0xa6d3, 0xa6db, 0xa6e6, 0xa6f2, 0xa740, 0xa751, 0xa759, 0xa7da, 
+             0xa8a3, 0xa8a5, 0xa8ad, 0xa8d1, 0xa8d3, 0xa8e4, 0xa8fc, 0xa9c0, 0xa9d2, 0xa9f3, 
+             0xaa6b, 0xaaba, 0xaabe, 0xaacc, 0xaafc, 0xac47, 0xac4f, 0xacb0, 0xacd2, 0xad59, 
+             0xaec9, 0xafe0, 0xb0ea, 0xb16f, 0xb2b3, 0xb2c4, 0xb36f, 0xb44c, 0xb44e, 0xb54c, 
+             0xb5a5, 0xb5bd, 0xb5d0, 0xb5d8, 0xb671, 0xb7ed, 0xb867, 0xb944, 0xbad8, 0xbb44, 
+             0xbba1, 0xbdd1, 0xc2c4, 0xc3b9, 0xc440, 0xc45f};
+          
+         boolean nextChar(iteratedChar it, CharsetDetector det) {
+             it.index = it.nextIndex;
+             it.error = false;
+             int firstByte;
+             firstByte = it.charValue = it.nextByte(det);
+             if (firstByte < 0) {
+                 return false;
+             }
+             
+             if (firstByte <= 0x7f || firstByte==0xff) {
+                 // single byte character.
+                 return true;
+             }
+             
+             int secondByte = it.nextByte(det);
+             if (secondByte < 0)  {
+                 return false;          
+             }
+             it.charValue = (it.charValue << 8) | secondByte;
+
+             if (secondByte < 0x40 ||
+                 secondByte ==0x7f ||
+                 secondByte == 0xff) {
+                     it.error = true;
+             }
+             return true;
+         }
+         
+         int match(CharsetDetector det) {
+             return match(det, commonChars);
+         }
+         
+         String getName() {
+             return "Big5";
+         }
+         
+         
+         public String getLanguage()
+         {
+             return "zh";
+         }
+     }
+     
+     
+     /**
+      *   EUC charset recognizers.  One abstract class that provides the common function
+      *             for getting the next character according to the EUC encoding scheme,
+      *             and nested derived classes for EUC_KR, EUC_JP, EUC_CN.   
+      *
+      */
+     abstract static class CharsetRecog_euc extends CharsetRecog_mbcs {
+         
+         /*
+          *  (non-Javadoc)
+          *  Get the next character value for EUC based encodings.
+          *  Character "value" is simply the raw bytes that make up the character
+          *     packed into an int.
+          */
+         boolean nextChar(iteratedChar it, CharsetDetector det) {
+             it.index = it.nextIndex;
+             it.error = false;
+             int firstByte  = 0;
+             int secondByte = 0;
+             int thirdByte  = 0;
+             //int fourthByte = 0;
+             
+             buildChar: {
+                 firstByte = it.charValue = it.nextByte(det);                 
+                 if (firstByte < 0) {
+                     // Ran off the end of the input data
+                     it.done = true;
+                     break buildChar;
+                 }
+                 if (firstByte <= 0x8d) {
+                     // single byte char
+                     break buildChar;
+                 }
+                 
+                 secondByte = it.nextByte(det);
+                 it.charValue = (it.charValue << 8) | secondByte;
+                 
+                 if (firstByte >= 0xA1 && firstByte <= 0xfe) {
+                     // Two byte Char
+                     if (secondByte < 0xa1) {
+                         it.error = true;
+                     }
+                     break buildChar;
+                 }
+                 if (firstByte == 0x8e) {
+                     // Code Set 2.
+                     //   In EUC-JP, total char size is 2 bytes, only one byte of actual char value.
+                     //   In EUC-TW, total char size is 4 bytes, three bytes contribute to char value.
+                     // We don't know which we've got.
+                     // Treat it like EUC-JP.  If the data really was EUC-TW, the following two
+                     //   bytes will look like a well formed 2 byte char.  
+                     if (secondByte < 0xa1) {
+                         it.error = true;
+                     }
+                     break buildChar;                     
+                 }
+                 
+                 if (firstByte == 0x8f) {
+                     // Code set 3.
+                     // Three byte total char size, two bytes of actual char value.
+                     thirdByte    = it.nextByte(det);
+                     it.charValue = (it.charValue << 8) | thirdByte;
+                     if (thirdByte < 0xa1) {
+                         it.error = true;
+                     }
+                 }
+              }
+             
+             return (it.done == false);
+         }
+         
+         /**
+          * The charset recognize for EUC-JP.  A singleton instance of this class
+          *    is created and kept by the public CharsetDetector class
+          */
+         static class CharsetRecog_euc_jp extends CharsetRecog_euc {
+             static int [] commonChars = 
+                 // TODO:  This set of data comes from the character frequency-
+                 //        of-occurence analysis tool.  The data needs to be moved
+                 //        into a resource and loaded from there.
+                {0xa1a1, 0xa1a2, 0xa1a3, 0xa1a6, 0xa1bc, 0xa1ca, 0xa1cb, 0xa1d6, 0xa1d7, 0xa4a2, 
+                 0xa4a4, 0xa4a6, 0xa4a8, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4af, 0xa4b1, 0xa4b3, 
+                 0xa4b5, 0xa4b7, 0xa4b9, 0xa4bb, 0xa4bd, 0xa4bf, 0xa4c0, 0xa4c1, 0xa4c3, 0xa4c4, 
+                 0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4ce, 0xa4cf, 0xa4d0, 0xa4de, 
+                 0xa4df, 0xa4e1, 0xa4e2, 0xa4e4, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ef, 
+                 0xa4f2, 0xa4f3, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a6, 0xa5a7, 0xa5aa, 0xa5ad, 0xa5af, 
+                 0xa5b0, 0xa5b3, 0xa5b5, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5bf, 0xa5c3, 0xa5c6, 0xa5c7, 
+                 0xa5c8, 0xa5c9, 0xa5cb, 0xa5d0, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5de, 0xa5e0, 0xa5e1, 
+                 0xa5e5, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5f3, 0xb8a9, 0xb9d4, 0xbaee, 
+                 0xbbc8, 0xbef0, 0xbfb7, 0xc4ea, 0xc6fc, 0xc7bd, 0xcab8, 0xcaf3, 0xcbdc, 0xcdd1};             
+             String getName() {
+                 return "EUC-JP";
+             }
+             
+             int match(CharsetDetector det) {
+                 return match(det, commonChars);
+             }
+             
+             public String getLanguage()
+             {
+                 return "ja";
+             }
+         }
+         
+         /**
+          * The charset recognize for EUC-KR.  A singleton instance of this class
+          *    is created and kept by the public CharsetDetector class
+          */
+         static class CharsetRecog_euc_kr extends CharsetRecog_euc {
+             static int [] commonChars = 
+                 // TODO:  This set of data comes from the character frequency-
+                 //        of-occurence analysis tool.  The data needs to be moved
+                 //        into a resource and loaded from there.
+                {0xb0a1, 0xb0b3, 0xb0c5, 0xb0cd, 0xb0d4, 0xb0e6, 0xb0ed, 0xb0f8, 0xb0fa, 0xb0fc, 
+                 0xb1b8, 0xb1b9, 0xb1c7, 0xb1d7, 0xb1e2, 0xb3aa, 0xb3bb, 0xb4c2, 0xb4cf, 0xb4d9, 
+                 0xb4eb, 0xb5a5, 0xb5b5, 0xb5bf, 0xb5c7, 0xb5e9, 0xb6f3, 0xb7af, 0xb7c2, 0xb7ce, 
+                 0xb8a6, 0xb8ae, 0xb8b6, 0xb8b8, 0xb8bb, 0xb8e9, 0xb9ab, 0xb9ae, 0xb9cc, 0xb9ce, 
+                 0xb9fd, 0xbab8, 0xbace, 0xbad0, 0xbaf1, 0xbbe7, 0xbbf3, 0xbbfd, 0xbcad, 0xbcba, 
+                 0xbcd2, 0xbcf6, 0xbdba, 0xbdc0, 0xbdc3, 0xbdc5, 0xbec6, 0xbec8, 0xbedf, 0xbeee, 
+                 0xbef8, 0xbefa, 0xbfa1, 0xbfa9, 0xbfc0, 0xbfe4, 0xbfeb, 0xbfec, 0xbff8, 0xc0a7, 
+                 0xc0af, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0c7, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d6, 
+                 0xc0da, 0xc0e5, 0xc0fb, 0xc0fc, 0xc1a4, 0xc1a6, 0xc1b6, 0xc1d6, 0xc1df, 0xc1f6, 
+                 0xc1f8, 0xc4a1, 0xc5cd, 0xc6ae, 0xc7cf, 0xc7d1, 0xc7d2, 0xc7d8, 0xc7e5, 0xc8ad};
+             
+             String getName() {
+                 return "EUC-KR";
+             }
+             
+             int match(CharsetDetector det) {
+                 return match(det, commonChars);
+             }
+             
+             public String getLanguage()
+             {
+                 return "ko";
+             }
+         }
+     }
+     
+     /**
+      * 
+      *   GB-18030 recognizer. Uses simplified Chinese statistics.   
+      *
+      */
+     static class CharsetRecog_gb_18030 extends CharsetRecog_mbcs {
+         
+         /*
+          *  (non-Javadoc)
+          *  Get the next character value for EUC based encodings.
+          *  Character "value" is simply the raw bytes that make up the character
+          *     packed into an int.
+          */
+         boolean nextChar(iteratedChar it, CharsetDetector det) {
+             it.index = it.nextIndex;
+             it.error = false;
+             int firstByte  = 0;
+             int secondByte = 0;
+             int thirdByte  = 0;
+             int fourthByte = 0;
+             
+             buildChar: {
+                 firstByte = it.charValue = it.nextByte(det); 
+                 
+                 if (firstByte < 0) {
+                     // Ran off the end of the input data
+                     it.done = true;
+                     break buildChar;
+                 }
+                 
+                 if (firstByte <= 0x80) {
+                     // single byte char
+                     break buildChar;
+                 }
+                 
+                 secondByte = it.nextByte(det);
+                 it.charValue = (it.charValue << 8) | secondByte;
+                 
+                 if (firstByte >= 0x81 && firstByte <= 0xFE) {
+                     // Two byte Char
+                     if ((secondByte >= 0x40 && secondByte <= 0x7E) || (secondByte >=80 && secondByte <=0xFE)) {
+                         break buildChar;
+                     }
+                     
+                     // Four byte char
+                     if (secondByte >= 0x30 && secondByte <= 0x39) {
+                         thirdByte = it.nextByte(det);
+                         
+                         if (thirdByte >= 0x81 && thirdByte <= 0xFE) {
+                             fourthByte = it.nextByte(det);
+                             
+                             if (fourthByte >= 0x30 && fourthByte <= 0x39) {
+                                 it.charValue = (it.charValue << 16) | (thirdByte << 8) | fourthByte;
+                                 break buildChar;
+                             }
+                         }
+                     }
+                     
+                     it.error = true;
+                     break buildChar;
+                 }
+             }
+                 
+             return (it.done == false);
+         }
+         
+         static int [] commonChars = 
+             // TODO:  This set of data comes from the character frequency-
+             //        of-occurence analysis tool.  The data needs to be moved
+             //        into a resource and loaded from there.
+            {0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1b0, 0xa1b1, 0xa1f1, 0xa1f3, 0xa3a1, 0xa3ac, 
+             0xa3ba, 0xb1a8, 0xb1b8, 0xb1be, 0xb2bb, 0xb3c9, 0xb3f6, 0xb4f3, 0xb5bd, 0xb5c4, 
+             0xb5e3, 0xb6af, 0xb6d4, 0xb6e0, 0xb7a2, 0xb7a8, 0xb7bd, 0xb7d6, 0xb7dd, 0xb8b4, 
+             0xb8df, 0xb8f6, 0xb9ab, 0xb9c9, 0xb9d8, 0xb9fa, 0xb9fd, 0xbacd, 0xbba7, 0xbbd6, 
+             0xbbe1, 0xbbfa, 0xbcbc, 0xbcdb, 0xbcfe, 0xbdcc, 0xbecd, 0xbedd, 0xbfb4, 0xbfc6, 
+             0xbfc9, 0xc0b4, 0xc0ed, 0xc1cb, 0xc2db, 0xc3c7, 0xc4dc, 0xc4ea, 0xc5cc, 0xc6f7, 
+             0xc7f8, 0xc8ab, 0xc8cb, 0xc8d5, 0xc8e7, 0xc9cf, 0xc9fa, 0xcab1, 0xcab5, 0xcac7, 
+             0xcad0, 0xcad6, 0xcaf5, 0xcafd, 0xccec, 0xcdf8, 0xceaa, 0xcec4, 0xced2, 0xcee5, 
+             0xcfb5, 0xcfc2, 0xcfd6, 0xd0c2, 0xd0c5, 0xd0d0, 0xd0d4, 0xd1a7, 0xd2aa, 0xd2b2, 
+             0xd2b5, 0xd2bb, 0xd2d4, 0xd3c3, 0xd3d0, 0xd3fd, 0xd4c2, 0xd4da, 0xd5e2, 0xd6d0};
+
+         
+         String getName() {
+             return "GB18030";
+         }
+         
+         int match(CharsetDetector det) {
+             return match(det, commonChars);
+         }
+         
+         public String getLanguage()
+         {
+             return "zh";
+         }
+     }
+     
+     
+}
diff --git a/src/com/ibm/icu/text/CharsetRecog_sbcs.java b/src/com/ibm/icu/text/CharsetRecog_sbcs.java
new file mode 100644
index 0000000..d8949da
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecog_sbcs.java
@@ -0,0 +1,1053 @@
+/*
+ ****************************************************************************
+ * Copyright (C) 2005-2007, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                             *
+ ************************************************************************** *
+ *
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * This class recognizes single-byte encodings. Because the encoding scheme is so
+ * simple, language statistics are used to do the matching.
+ * 
+ * @internal
+ */
+abstract class CharsetRecog_sbcs extends CharsetRecognizer {
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#getName()
+     */
+    abstract String getName();
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.text.CharsetRecognizer#match(com.ibm.icu.text.CharsetDetector)
+     */
+    abstract int match(CharsetDetector det);
+    
+    static class NGramParser
+    {
+//        private static final int N_GRAM_SIZE = 3;
+        private static final int N_GRAM_MASK = 0xFFFFFF;
+
+        private int byteIndex = 0;
+        private int ngram = 0;
+        
+        private int[] ngramList;
+        private byte[] byteMap;
+        
+        private int ngramCount;
+        private int hitCount;
+        
+        public NGramParser(int[] theNgramList, byte[] theByteMap)
+        {
+            ngramList = theNgramList;
+            byteMap   = theByteMap;
+            
+            ngram = 0;
+            
+            ngramCount = hitCount = 0;
+        }
+        
+        /*
+         * Binary search for value in table, which must have exactly 64 entries.
+         */
+        private static int search(int[] table, int value)
+        {
+            int index = 0;
+            
+            if (table[index + 32] <= value) {
+                index += 32;
+            }
+            
+            if (table[index + 16] <= value) {
+                index += 16;
+            }
+
+            if (table[index + 8] <= value) {
+                index += 8;
+            }
+
+            if (table[index + 4] <= value) {
+                index += 4;
+            }
+
+            if (table[index + 2] <= value) {
+                index += 2;
+            }
+
+            if (table[index + 1] <= value) {
+                index += 1;
+            }
+
+            if (table[index] > value) {
+                index -= 1;
+            }
+            
+            if (index < 0 || table[index] != value) {
+                return -1;
+            }
+            
+            return index;
+        }
+
+        private void lookup(int thisNgram)
+        {
+            ngramCount += 1;
+            
+            if (search(ngramList, thisNgram) >= 0) {
+                hitCount += 1;
+            }
+            
+        }
+        
+        private void addByte(int b)
+        {
+            ngram = ((ngram << 8) + (b & 0xFF)) & N_GRAM_MASK;
+            lookup(ngram);
+        }
+        
+        private int nextByte(CharsetDetector det)
+        {
+            if (byteIndex >= det.fInputLen) {
+                return -1;
+            }
+            
+            return det.fInputBytes[byteIndex++] & 0xFF;
+        }
+        
+        public int parse(CharsetDetector det)
+        {
+            int b;
+            boolean ignoreSpace = false;
+            
+            while ((b = nextByte(det)) >= 0) {
+                byte mb = byteMap[b];
+                
+                // TODO: 0x20 might not be a space in all character sets...
+                if (mb != 0) {
+                    if (!(mb == 0x20 && ignoreSpace)) {
+                        addByte(mb);                    
+                    }
+                    
+                    ignoreSpace = (mb == 0x20);
+                }
+            }
+            
+            // TODO: Is this OK? The buffer could have ended in the middle of a word...
+            addByte(0x20);
+
+            double rawPercent = (double) hitCount / (double) ngramCount;
+            
+//            if (rawPercent <= 2.0) {
+//                return 0;
+//            }
+            
+            // TODO - This is a bit of a hack to take care of a case
+            // were we were getting a confidence of 135...
+            if (rawPercent > 0.33) {
+                return 98;
+            }
+            
+            return (int) (rawPercent * 300.0);
+        }
+    }
+    
+    protected boolean haveC1Bytes = false;
+    
+    int match(CharsetDetector det, int[] ngrams,  byte[] byteMap)
+    {
+        NGramParser parser = new NGramParser(ngrams, byteMap);
+        
+        haveC1Bytes = det.fC1Bytes;
+        
+        return parser.parse(det);
+    }
+    
+    abstract static class CharsetRecog_8859_1 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1252" : "ISO-8859-1";
+        }
+    }
+
+    static class CharsetRecog_8859_1_da extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206166, 0x206174, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920, 0x206D65, 0x206F67, 0x2070E5, 0x207369, 0x207374, 0x207469, 0x207669, 0x616620, 
+            0x616E20, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646572, 0x646574, 0x652073, 0x656420, 0x656465, 0x656E20, 0x656E64, 0x657220, 0x657265, 0x657320, 
+            0x657420, 0x666F72, 0x676520, 0x67656E, 0x676572, 0x696765, 0x696C20, 0x696E67, 0x6B6520, 0x6B6B65, 0x6C6572, 0x6C6967, 0x6C6C65, 0x6D6564, 0x6E6465, 0x6E6520, 
+            0x6E6720, 0x6E6765, 0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722064, 0x722065, 0x722073, 0x726520, 0x737465, 0x742073, 0x746520, 0x746572, 0x74696C, 0x766572, 
+        };
+
+        public String getLanguage()
+        {
+            return "da";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+
+    static class CharsetRecog_8859_1_de extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x20616E, 0x206175, 0x206265, 0x206461, 0x206465, 0x206469, 0x206569, 0x206765, 0x206861, 0x20696E, 0x206D69, 0x207363, 0x207365, 0x20756E, 0x207665, 0x20766F, 
+            0x207765, 0x207A75, 0x626572, 0x636820, 0x636865, 0x636874, 0x646173, 0x64656E, 0x646572, 0x646965, 0x652064, 0x652073, 0x65696E, 0x656974, 0x656E20, 0x657220, 
+            0x657320, 0x67656E, 0x68656E, 0x687420, 0x696368, 0x696520, 0x696E20, 0x696E65, 0x697420, 0x6C6963, 0x6C6C65, 0x6E2061, 0x6E2064, 0x6E2073, 0x6E6420, 0x6E6465, 
+            0x6E6520, 0x6E6720, 0x6E6765, 0x6E7465, 0x722064, 0x726465, 0x726569, 0x736368, 0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x756E64, 0x756E67, 0x766572, 
+        };
+
+        public String getLanguage()
+        {
+            return "de";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_en extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206120, 0x20616E, 0x206265, 0x20636F, 0x20666F, 0x206861, 0x206865, 0x20696E, 0x206D61, 0x206F66, 0x207072, 0x207265, 0x207361, 0x207374, 0x207468, 0x20746F, 
+            0x207768, 0x616964, 0x616C20, 0x616E20, 0x616E64, 0x617320, 0x617420, 0x617465, 0x617469, 0x642061, 0x642074, 0x652061, 0x652073, 0x652074, 0x656420, 0x656E74, 
+            0x657220, 0x657320, 0x666F72, 0x686174, 0x686520, 0x686572, 0x696420, 0x696E20, 0x696E67, 0x696F6E, 0x697320, 0x6E2061, 0x6E2074, 0x6E6420, 0x6E6720, 0x6E7420, 
+            0x6F6620, 0x6F6E20, 0x6F7220, 0x726520, 0x727320, 0x732061, 0x732074, 0x736169, 0x737420, 0x742074, 0x746572, 0x746861, 0x746865, 0x74696F, 0x746F20, 0x747320, 
+        };
+            
+        public String getLanguage()
+        {
+            return "en";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_es extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206120, 0x206361, 0x20636F, 0x206465, 0x20656C, 0x20656E, 0x206573, 0x20696E, 0x206C61, 0x206C6F, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365, 
+            0x20756E, 0x207920, 0x612063, 0x612064, 0x612065, 0x61206C, 0x612070, 0x616369, 0x61646F, 0x616C20, 0x617220, 0x617320, 0x6369F3, 0x636F6E, 0x646520, 0x64656C, 
+            0x646F20, 0x652064, 0x652065, 0x65206C, 0x656C20, 0x656E20, 0x656E74, 0x657320, 0x657374, 0x69656E, 0x69F36E, 0x6C6120, 0x6C6F73, 0x6E2065, 0x6E7465, 0x6F2064, 
+            0x6F2065, 0x6F6E20, 0x6F7220, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573, 0x732064, 0x732065, 0x732070, 0x736520, 0x746520, 0x746F20, 0x756520, 0xF36E20, 
+        };
+            
+        public String getLanguage()
+        {
+            return "es";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_fr extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206175, 0x20636F, 0x206461, 0x206465, 0x206475, 0x20656E, 0x206574, 0x206C61, 0x206C65, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207365, 0x20736F, 0x20756E, 
+            0x20E020, 0x616E74, 0x617469, 0x636520, 0x636F6E, 0x646520, 0x646573, 0x647520, 0x652061, 0x652063, 0x652064, 0x652065, 0x65206C, 0x652070, 0x652073, 0x656E20, 
+            0x656E74, 0x657220, 0x657320, 0x657420, 0x657572, 0x696F6E, 0x697320, 0x697420, 0x6C6120, 0x6C6520, 0x6C6573, 0x6D656E, 0x6E2064, 0x6E6520, 0x6E7320, 0x6E7420, 
+            0x6F6E20, 0x6F6E74, 0x6F7572, 0x717565, 0x72206C, 0x726520, 0x732061, 0x732064, 0x732065, 0x73206C, 0x732070, 0x742064, 0x746520, 0x74696F, 0x756520, 0x757220, 
+        };
+
+        public String getLanguage()
+        {
+            return "fr";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_it extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x20616C, 0x206368, 0x20636F, 0x206465, 0x206469, 0x206520, 0x20696C, 0x20696E, 0x206C61, 0x207065, 0x207072, 0x20756E, 0x612063, 0x612064, 0x612070, 0x612073, 
+            0x61746F, 0x636865, 0x636F6E, 0x64656C, 0x646920, 0x652061, 0x652063, 0x652064, 0x652069, 0x65206C, 0x652070, 0x652073, 0x656C20, 0x656C6C, 0x656E74, 0x657220, 
+            0x686520, 0x692061, 0x692063, 0x692064, 0x692073, 0x696120, 0x696C20, 0x696E20, 0x696F6E, 0x6C6120, 0x6C6520, 0x6C6920, 0x6C6C61, 0x6E6520, 0x6E6920, 0x6E6F20, 
+            0x6E7465, 0x6F2061, 0x6F2064, 0x6F2069, 0x6F2073, 0x6F6E20, 0x6F6E65, 0x706572, 0x726120, 0x726520, 0x736920, 0x746120, 0x746520, 0x746920, 0x746F20, 0x7A696F, 
+        };
+
+        public String getLanguage()
+        {
+            return "it";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_nl extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x20616C, 0x206265, 0x206461, 0x206465, 0x206469, 0x206565, 0x20656E, 0x206765, 0x206865, 0x20696E, 0x206D61, 0x206D65, 0x206F70, 0x207465, 0x207661, 0x207665, 
+            0x20766F, 0x207765, 0x207A69, 0x61616E, 0x616172, 0x616E20, 0x616E64, 0x617220, 0x617420, 0x636874, 0x646520, 0x64656E, 0x646572, 0x652062, 0x652076, 0x65656E, 
+            0x656572, 0x656E20, 0x657220, 0x657273, 0x657420, 0x67656E, 0x686574, 0x696520, 0x696E20, 0x696E67, 0x697320, 0x6E2062, 0x6E2064, 0x6E2065, 0x6E2068, 0x6E206F, 
+            0x6E2076, 0x6E6465, 0x6E6720, 0x6F6E64, 0x6F6F72, 0x6F7020, 0x6F7220, 0x736368, 0x737465, 0x742064, 0x746520, 0x74656E, 0x746572, 0x76616E, 0x766572, 0x766F6F, 
+        };
+
+        public String getLanguage()
+        {
+            return "nl";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_no extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206174, 0x206176, 0x206465, 0x20656E, 0x206572, 0x20666F, 0x206861, 0x206920, 0x206D65, 0x206F67, 0x2070E5, 0x207365, 0x20736B, 0x20736F, 0x207374, 0x207469, 
+            0x207669, 0x20E520, 0x616E64, 0x617220, 0x617420, 0x646520, 0x64656E, 0x646574, 0x652073, 0x656420, 0x656E20, 0x656E65, 0x657220, 0x657265, 0x657420, 0x657474, 
+            0x666F72, 0x67656E, 0x696B6B, 0x696C20, 0x696E67, 0x6B6520, 0x6B6B65, 0x6C6520, 0x6C6C65, 0x6D6564, 0x6D656E, 0x6E2073, 0x6E6520, 0x6E6720, 0x6E6765, 0x6E6E65, 
+            0x6F6720, 0x6F6D20, 0x6F7220, 0x70E520, 0x722073, 0x726520, 0x736F6D, 0x737465, 0x742073, 0x746520, 0x74656E, 0x746572, 0x74696C, 0x747420, 0x747465, 0x766572, 
+        };
+
+        public String getLanguage()
+        {
+            return "no";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_pt extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206120, 0x20636F, 0x206461, 0x206465, 0x20646F, 0x206520, 0x206573, 0x206D61, 0x206E6F, 0x206F20, 0x207061, 0x20706F, 0x207072, 0x207175, 0x207265, 0x207365, 
+            0x20756D, 0x612061, 0x612063, 0x612064, 0x612070, 0x616465, 0x61646F, 0x616C20, 0x617220, 0x617261, 0x617320, 0x636F6D, 0x636F6E, 0x646120, 0x646520, 0x646F20, 
+            0x646F73, 0x652061, 0x652064, 0x656D20, 0x656E74, 0x657320, 0x657374, 0x696120, 0x696361, 0x6D656E, 0x6E7465, 0x6E746F, 0x6F2061, 0x6F2063, 0x6F2064, 0x6F2065, 
+            0x6F2070, 0x6F7320, 0x706172, 0x717565, 0x726120, 0x726573, 0x732061, 0x732064, 0x732065, 0x732070, 0x737461, 0x746520, 0x746F20, 0x756520, 0xE36F20, 0xE7E36F, 
+        };
+
+        public String getLanguage()
+        {
+            return "pt";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_1_sv extends CharsetRecog_8859_1
+    {
+        private static int[] ngrams = {
+            0x206174, 0x206176, 0x206465, 0x20656E, 0x2066F6, 0x206861, 0x206920, 0x20696E, 0x206B6F, 0x206D65, 0x206F63, 0x2070E5, 0x20736B, 0x20736F, 0x207374, 0x207469, 
+            0x207661, 0x207669, 0x20E472, 0x616465, 0x616E20, 0x616E64, 0x617220, 0x617474, 0x636820, 0x646520, 0x64656E, 0x646572, 0x646574, 0x656420, 0x656E20, 0x657220, 
+            0x657420, 0x66F672, 0x67656E, 0x696C6C, 0x696E67, 0x6B6120, 0x6C6C20, 0x6D6564, 0x6E2073, 0x6E6120, 0x6E6465, 0x6E6720, 0x6E6765, 0x6E696E, 0x6F6368, 0x6F6D20, 
+            0x6F6E20, 0x70E520, 0x722061, 0x722073, 0x726120, 0x736B61, 0x736F6D, 0x742073, 0x746120, 0x746520, 0x746572, 0x74696C, 0x747420, 0x766172, 0xE47220, 0xF67220, 
+        };
+
+        public String getLanguage()
+        {
+            return "sv";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_2 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xB1, (byte) 0x20, (byte) 0xB3, (byte) 0x20, (byte) 0xB5, (byte) 0xB6, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xB9, (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0x20, (byte) 0xBE, (byte) 0xBF, 
+            (byte) 0x20, (byte) 0xB1, (byte) 0x20, (byte) 0xB3, (byte) 0x20, (byte) 0xB5, (byte) 0xB6, (byte) 0xB7, 
+            (byte) 0x20, (byte) 0xB9, (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0x20, (byte) 0xBE, (byte) 0xBF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0x20, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1250" : "ISO-8859-2";
+        }
+    }
+    
+    static class CharsetRecog_8859_2_cs extends CharsetRecog_8859_2
+    {
+        private static int[] ngrams = {
+            0x206120, 0x206279, 0x20646F, 0x206A65, 0x206E61, 0x206E65, 0x206F20, 0x206F64, 0x20706F, 0x207072, 0x2070F8, 0x20726F, 0x207365, 0x20736F, 0x207374, 0x20746F, 
+            0x207620, 0x207679, 0x207A61, 0x612070, 0x636520, 0x636820, 0x652070, 0x652073, 0x652076, 0x656D20, 0x656EED, 0x686F20, 0x686F64, 0x697374, 0x6A6520, 0x6B7465, 
+            0x6C6520, 0x6C6920, 0x6E6120, 0x6EE920, 0x6EEC20, 0x6EED20, 0x6F2070, 0x6F646E, 0x6F6A69, 0x6F7374, 0x6F7520, 0x6F7661, 0x706F64, 0x706F6A, 0x70726F, 0x70F865, 
+            0x736520, 0x736F75, 0x737461, 0x737469, 0x73746E, 0x746572, 0x746EED, 0x746F20, 0x752070, 0xBE6520, 0xE16EED, 0xE9686F, 0xED2070, 0xED2073, 0xED6D20, 0xF86564, 
+        };
+
+        public String getLanguage()
+        {
+            return "cs";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_2_hu extends CharsetRecog_8859_2
+    {
+        private static int[] ngrams = {
+            0x206120, 0x20617A, 0x206265, 0x206567, 0x20656C, 0x206665, 0x206861, 0x20686F, 0x206973, 0x206B65, 0x206B69, 0x206BF6, 0x206C65, 0x206D61, 0x206D65, 0x206D69, 
+            0x206E65, 0x20737A, 0x207465, 0x20E973, 0x612061, 0x61206B, 0x61206D, 0x612073, 0x616B20, 0x616E20, 0x617A20, 0x62616E, 0x62656E, 0x656779, 0x656B20, 0x656C20, 
+            0x656C65, 0x656D20, 0x656E20, 0x657265, 0x657420, 0x657465, 0x657474, 0x677920, 0x686F67, 0x696E74, 0x697320, 0x6B2061, 0x6BF67A, 0x6D6567, 0x6D696E, 0x6E2061, 
+            0x6E616B, 0x6E656B, 0x6E656D, 0x6E7420, 0x6F6779, 0x732061, 0x737A65, 0x737A74, 0x737AE1, 0x73E967, 0x742061, 0x747420, 0x74E173, 0x7A6572, 0xE16E20, 0xE97320, 
+        };
+
+        public String getLanguage()
+        {
+            return "hu";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_2_pl extends CharsetRecog_8859_2
+    {
+        private static int[] ngrams = {
+            0x20637A, 0x20646F, 0x206920, 0x206A65, 0x206B6F, 0x206D61, 0x206D69, 0x206E61, 0x206E69, 0x206F64, 0x20706F, 0x207072, 0x207369, 0x207720, 0x207769, 0x207779, 
+            0x207A20, 0x207A61, 0x612070, 0x612077, 0x616E69, 0x636820, 0x637A65, 0x637A79, 0x646F20, 0x647A69, 0x652070, 0x652073, 0x652077, 0x65207A, 0x65676F, 0x656A20, 
+            0x656D20, 0x656E69, 0x676F20, 0x696120, 0x696520, 0x69656A, 0x6B6120, 0x6B6920, 0x6B6965, 0x6D6965, 0x6E6120, 0x6E6961, 0x6E6965, 0x6F2070, 0x6F7761, 0x6F7769, 
+            0x706F6C, 0x707261, 0x70726F, 0x70727A, 0x727A65, 0x727A79, 0x7369EA, 0x736B69, 0x737461, 0x776965, 0x796368, 0x796D20, 0x7A6520, 0x7A6965, 0x7A7920, 0xF37720, 
+        };
+
+        public String getLanguage()
+        {
+            return "pl";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_2_ro extends CharsetRecog_8859_2
+    {
+        private static int[] ngrams = {
+            0x206120, 0x206163, 0x206361, 0x206365, 0x20636F, 0x206375, 0x206465, 0x206469, 0x206C61, 0x206D61, 0x207065, 0x207072, 0x207365, 0x2073E3, 0x20756E, 0x20BA69, 
+            0x20EE6E, 0x612063, 0x612064, 0x617265, 0x617420, 0x617465, 0x617520, 0x636172, 0x636F6E, 0x637520, 0x63E320, 0x646520, 0x652061, 0x652063, 0x652064, 0x652070, 
+            0x652073, 0x656120, 0x656920, 0x656C65, 0x656E74, 0x657374, 0x692061, 0x692063, 0x692064, 0x692070, 0x696520, 0x696920, 0x696E20, 0x6C6120, 0x6C6520, 0x6C6F72, 
+            0x6C7569, 0x6E6520, 0x6E7472, 0x6F7220, 0x70656E, 0x726520, 0x726561, 0x727520, 0x73E320, 0x746520, 0x747275, 0x74E320, 0x756920, 0x756C20, 0xBA6920, 0xEE6E20, 
+        };
+
+        public String getLanguage()
+        {
+            return "ro";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_5 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x20, (byte) 0xFE, (byte) 0xFF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0x20, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x20, (byte) 0xFE, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return "ISO-8859-5";
+        }
+    }
+    
+    static class CharsetRecog_8859_5_ru extends CharsetRecog_8859_5
+    {
+        private static int[] ngrams = {
+            0x20D220, 0x20D2DE, 0x20D4DE, 0x20D7D0, 0x20D820, 0x20DAD0, 0x20DADE, 0x20DDD0, 0x20DDD5, 0x20DED1, 0x20DFDE, 0x20DFE0, 0x20E0D0, 0x20E1DE, 0x20E1E2, 0x20E2DE, 
+            0x20E7E2, 0x20EDE2, 0xD0DDD8, 0xD0E2EC, 0xD3DE20, 0xD5DBEC, 0xD5DDD8, 0xD5E1E2, 0xD5E220, 0xD820DF, 0xD8D520, 0xD8D820, 0xD8EF20, 0xDBD5DD, 0xDBD820, 0xDBECDD, 
+            0xDDD020, 0xDDD520, 0xDDD8D5, 0xDDD8EF, 0xDDDE20, 0xDDDED2, 0xDE20D2, 0xDE20DF, 0xDE20E1, 0xDED220, 0xDED2D0, 0xDED3DE, 0xDED920, 0xDEDBEC, 0xDEDC20, 0xDEE1E2, 
+            0xDFDEDB, 0xDFE0D5, 0xDFE0D8, 0xDFE0DE, 0xE0D0D2, 0xE0D5D4, 0xE1E2D0, 0xE1E2D2, 0xE1E2D8, 0xE1EF20, 0xE2D5DB, 0xE2DE20, 0xE2DEE0, 0xE2EC20, 0xE7E2DE, 0xEBE520, 
+        };
+
+        public String getLanguage()
+        {
+            return "ru";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_6 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, 
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+        };
+
+        public String getName()
+        {
+            return "ISO-8859-6";
+        }
+    }
+    
+    static class CharsetRecog_8859_6_ar extends CharsetRecog_8859_6
+    {
+        private static int[] ngrams = {
+            0x20C7E4, 0x20C7E6, 0x20C8C7, 0x20D9E4, 0x20E1EA, 0x20E4E4, 0x20E5E6, 0x20E8C7, 0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E420, 0xC7E4C3, 0xC7E4C7, 0xC7E4C8, 
+            0xC7E4CA, 0xC7E4CC, 0xC7E4CD, 0xC7E4CF, 0xC7E4D3, 0xC7E4D9, 0xC7E4E2, 0xC7E4E5, 0xC7E4E8, 0xC7E4EA, 0xC7E520, 0xC7E620, 0xC7E6CA, 0xC820C7, 0xC920C7, 0xC920E1, 
+            0xC920E4, 0xC920E5, 0xC920E8, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920, 0xD320C7, 0xD920C7, 0xD9E4E9, 0xE1EA20, 0xE420C7, 0xE4C920, 0xE4E920, 0xE4EA20, 
+            0xE520C7, 0xE5C720, 0xE5C920, 0xE5E620, 0xE620C7, 0xE720C7, 0xE7C720, 0xE8C7E4, 0xE8E620, 0xE920C7, 0xEA20C7, 0xEA20E5, 0xEA20E8, 0xEAC920, 0xEAD120, 0xEAE620, 
+        };
+
+        public String getLanguage()
+        {
+            return "ar";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_7 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xA1, (byte) 0xA2, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xDC, (byte) 0x20, 
+            (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, (byte) 0x20, (byte) 0xFC, (byte) 0x20, (byte) 0xFD, (byte) 0xFE, 
+            (byte) 0xC0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0x20, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0x20, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1253" : "ISO-8859-7";
+        }
+    }
+    
+    static class CharsetRecog_8859_7_el extends CharsetRecog_8859_7
+    {
+        private static int[] ngrams = {
+            0x20E1ED, 0x20E1F0, 0x20E3E9, 0x20E4E9, 0x20E5F0, 0x20E720, 0x20EAE1, 0x20ECE5, 0x20EDE1, 0x20EF20, 0x20F0E1, 0x20F0EF, 0x20F0F1, 0x20F3F4, 0x20F3F5, 0x20F4E7, 
+            0x20F4EF, 0xDFE120, 0xE120E1, 0xE120F4, 0xE1E920, 0xE1ED20, 0xE1F0FC, 0xE1F220, 0xE3E9E1, 0xE5E920, 0xE5F220, 0xE720F4, 0xE7ED20, 0xE7F220, 0xE920F4, 0xE9E120, 
+            0xE9EADE, 0xE9F220, 0xEAE1E9, 0xEAE1F4, 0xECE520, 0xED20E1, 0xED20E5, 0xED20F0, 0xEDE120, 0xEFF220, 0xEFF520, 0xF0EFF5, 0xF0F1EF, 0xF0FC20, 0xF220E1, 0xF220E5, 
+            0xF220EA, 0xF220F0, 0xF220F4, 0xF3E520, 0xF3E720, 0xF3F4EF, 0xF4E120, 0xF4E1E9, 0xF4E7ED, 0xF4E7F2, 0xF4E9EA, 0xF4EF20, 0xF4EFF5, 0xF4F9ED, 0xF9ED20, 0xFEED20, 
+        };
+
+        public String getLanguage()
+        {
+            return "el";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_8 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1255" : "ISO-8859-8";
+        }
+    }
+    
+    static class CharsetRecog_8859_8_I_he extends CharsetRecog_8859_8
+    {
+        private static int[] ngrams = {
+            0x20E0E5, 0x20E0E7, 0x20E0E9, 0x20E0FA, 0x20E1E9, 0x20E1EE, 0x20E4E0, 0x20E4E5, 0x20E4E9, 0x20E4EE, 0x20E4F2, 0x20E4F9, 0x20E4FA, 0x20ECE0, 0x20ECE4, 0x20EEE0, 
+            0x20F2EC, 0x20F9EC, 0xE0FA20, 0xE420E0, 0xE420E1, 0xE420E4, 0xE420EC, 0xE420EE, 0xE420F9, 0xE4E5E0, 0xE5E020, 0xE5ED20, 0xE5EF20, 0xE5F820, 0xE5FA20, 0xE920E4, 
+            0xE9E420, 0xE9E5FA, 0xE9E9ED, 0xE9ED20, 0xE9EF20, 0xE9F820, 0xE9FA20, 0xEC20E0, 0xEC20E4, 0xECE020, 0xECE420, 0xED20E0, 0xED20E1, 0xED20E4, 0xED20EC, 0xED20EE, 
+            0xED20F9, 0xEEE420, 0xEF20E4, 0xF0E420, 0xF0E920, 0xF0E9ED, 0xF2EC20, 0xF820E4, 0xF8E9ED, 0xF9EC20, 0xFA20E0, 0xFA20E1, 0xFA20E4, 0xFA20EC, 0xFA20EE, 0xFA20F9, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1255" : /*"ISO-8859-8-I"*/ "ISO-8859-8";
+        }
+
+        public String getLanguage()
+        {
+            return "he";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_8859_8_he extends CharsetRecog_8859_8
+    {
+        private static int[] ngrams = {
+            0x20E0E5, 0x20E0EC, 0x20E4E9, 0x20E4EC, 0x20E4EE, 0x20E4F0, 0x20E9F0, 0x20ECF2, 0x20ECF9, 0x20EDE5, 0x20EDE9, 0x20EFE5, 0x20EFE9, 0x20F8E5, 0x20F8E9, 0x20FAE0, 
+            0x20FAE5, 0x20FAE9, 0xE020E4, 0xE020EC, 0xE020ED, 0xE020FA, 0xE0E420, 0xE0E5E4, 0xE0EC20, 0xE0EE20, 0xE120E4, 0xE120ED, 0xE120FA, 0xE420E4, 0xE420E9, 0xE420EC, 
+            0xE420ED, 0xE420EF, 0xE420F8, 0xE420FA, 0xE4EC20, 0xE5E020, 0xE5E420, 0xE7E020, 0xE9E020, 0xE9E120, 0xE9E420, 0xEC20E4, 0xEC20ED, 0xEC20FA, 0xECF220, 0xECF920, 
+            0xEDE9E9, 0xEDE9F0, 0xEDE9F8, 0xEE20E4, 0xEE20ED, 0xEE20FA, 0xEEE120, 0xEEE420, 0xF2E420, 0xF920E4, 0xF920ED, 0xF920FA, 0xF9E420, 0xFAE020, 0xFAE420, 0xFAE5E9, 
+        };
+
+        public String getLanguage()
+        {
+            return "he";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    abstract static class CharsetRecog_8859_9 extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0x69, (byte) 0xFE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0x20, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return haveC1Bytes? "windows-1254" : "ISO-8859-9";
+        }
+    }
+    
+    static class CharsetRecog_8859_9_tr extends CharsetRecog_8859_9
+    {
+        private static int[] ngrams = {
+            0x206261, 0x206269, 0x206275, 0x206461, 0x206465, 0x206765, 0x206861, 0x20696C, 0x206B61, 0x206B6F, 0x206D61, 0x206F6C, 0x207361, 0x207461, 0x207665, 0x207961, 
+            0x612062, 0x616B20, 0x616C61, 0x616D61, 0x616E20, 0x616EFD, 0x617220, 0x617261, 0x6172FD, 0x6173FD, 0x617961, 0x626972, 0x646120, 0x646520, 0x646920, 0x652062, 
+            0x65206B, 0x656469, 0x656E20, 0x657220, 0x657269, 0x657369, 0x696C65, 0x696E20, 0x696E69, 0x697220, 0x6C616E, 0x6C6172, 0x6C6520, 0x6C6572, 0x6E2061, 0x6E2062, 
+            0x6E206B, 0x6E6461, 0x6E6465, 0x6E6520, 0x6E6920, 0x6E696E, 0x6EFD20, 0x72696E, 0x72FD6E, 0x766520, 0x796120, 0x796F72, 0xFD6E20, 0xFD6E64, 0xFD6EFD, 0xFDF0FD, 
+        };
+
+        public String getLanguage()
+        {
+            return "tr";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_windows_1251 extends CharsetRecog_sbcs
+    {
+        private static int[] ngrams = {
+            0x20E220, 0x20E2EE, 0x20E4EE, 0x20E7E0, 0x20E820, 0x20EAE0, 0x20EAEE, 0x20EDE0, 0x20EDE5, 0x20EEE1, 0x20EFEE, 0x20EFF0, 0x20F0E0, 0x20F1EE, 0x20F1F2, 0x20F2EE, 
+            0x20F7F2, 0x20FDF2, 0xE0EDE8, 0xE0F2FC, 0xE3EE20, 0xE5EBFC, 0xE5EDE8, 0xE5F1F2, 0xE5F220, 0xE820EF, 0xE8E520, 0xE8E820, 0xE8FF20, 0xEBE5ED, 0xEBE820, 0xEBFCED, 
+            0xEDE020, 0xEDE520, 0xEDE8E5, 0xEDE8FF, 0xEDEE20, 0xEDEEE2, 0xEE20E2, 0xEE20EF, 0xEE20F1, 0xEEE220, 0xEEE2E0, 0xEEE3EE, 0xEEE920, 0xEEEBFC, 0xEEEC20, 0xEEF1F2, 
+            0xEFEEEB, 0xEFF0E5, 0xEFF0E8, 0xEFF0EE, 0xF0E0E2, 0xF0E5E4, 0xF1F2E0, 0xF1F2E2, 0xF1F2E8, 0xF1FF20, 0xF2E5EB, 0xF2EE20, 0xF2EEF0, 0xF2FC20, 0xF7F2EE, 0xFBF520, 
+        };
+
+        private static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x90, (byte) 0x83, (byte) 0x20, (byte) 0x83, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x9D, (byte) 0x9E, (byte) 0x9F, 
+            (byte) 0x90, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x9D, (byte) 0x9E, (byte) 0x9F, 
+            (byte) 0x20, (byte) 0xA2, (byte) 0xA2, (byte) 0xBC, (byte) 0x20, (byte) 0xB4, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xB8, (byte) 0x20, (byte) 0xBA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xBF, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xB3, (byte) 0xB3, (byte) 0xB4, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xB8, (byte) 0x20, (byte) 0xBA, (byte) 0x20, (byte) 0xBC, (byte) 0xBE, (byte) 0xBE, (byte) 0xBF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0xF0, (byte) 0xF1, (byte) 0xF2, (byte) 0xF3, (byte) 0xF4, (byte) 0xF5, (byte) 0xF6, (byte) 0xF7, 
+            (byte) 0xF8, (byte) 0xF9, (byte) 0xFA, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return  "windows-1251";
+        }
+        
+        public String getLanguage()
+        {
+            return "ru";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+    
+    static class CharsetRecog_windows_1256 extends CharsetRecog_sbcs
+    {
+        private static int[] ngrams = {
+            0x20C7E1, 0x20C7E4, 0x20C8C7, 0x20DAE1, 0x20DDED, 0x20E1E1, 0x20E3E4, 0x20E6C7, 0xC720C7, 0xC7C120, 0xC7CA20, 0xC7D120, 0xC7E120, 0xC7E1C3, 0xC7E1C7, 0xC7E1C8, 
+            0xC7E1CA, 0xC7E1CC, 0xC7E1CD, 0xC7E1CF, 0xC7E1D3, 0xC7E1DA, 0xC7E1DE, 0xC7E1E3, 0xC7E1E6, 0xC7E1ED, 0xC7E320, 0xC7E420, 0xC7E4CA, 0xC820C7, 0xC920C7, 0xC920DD, 
+            0xC920E1, 0xC920E3, 0xC920E6, 0xCA20C7, 0xCF20C7, 0xCFC920, 0xD120C7, 0xD1C920, 0xD320C7, 0xDA20C7, 0xDAE1EC, 0xDDED20, 0xE120C7, 0xE1C920, 0xE1EC20, 0xE1ED20, 
+            0xE320C7, 0xE3C720, 0xE3C920, 0xE3E420, 0xE420C7, 0xE520C7, 0xE5C720, 0xE6C7E1, 0xE6E420, 0xEC20C7, 0xED20C7, 0xED20E3, 0xED20E6, 0xEDC920, 0xEDD120, 0xEDE420, 
+        };
+
+        private static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x81, (byte) 0x20, (byte) 0x83, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x88, (byte) 0x20, (byte) 0x8A, (byte) 0x20, (byte) 0x9C, (byte) 0x8D, (byte) 0x8E, (byte) 0x8F, 
+            (byte) 0x90, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x98, (byte) 0x20, (byte) 0x9A, (byte) 0x20, (byte) 0x9C, (byte) 0x20, (byte) 0x20, (byte) 0x9F, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0xAA, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xB5, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, 
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0x20, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xE0, (byte) 0xE1, (byte) 0xE2, (byte) 0xE3, (byte) 0xE4, (byte) 0xE5, (byte) 0xE6, (byte) 0xE7, 
+            (byte) 0xE8, (byte) 0xE9, (byte) 0xEA, (byte) 0xEB, (byte) 0xEC, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xF4, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0xF9, (byte) 0x20, (byte) 0xFB, (byte) 0xFC, (byte) 0x20, (byte) 0x20, (byte) 0xFF, 
+        };
+
+        public String getName()
+        {
+            return  "windows-1256";
+        }
+        
+        public String getLanguage()
+        {
+            return "ar";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+        
+    static class CharsetRecog_KOI8_R extends CharsetRecog_sbcs
+    {
+        private static int[] ngrams = {
+            0x20C4CF, 0x20C920, 0x20CBC1, 0x20CBCF, 0x20CEC1, 0x20CEC5, 0x20CFC2, 0x20D0CF, 0x20D0D2, 0x20D2C1, 0x20D3CF, 0x20D3D4, 0x20D4CF, 0x20D720, 0x20D7CF, 0x20DAC1, 
+            0x20DCD4, 0x20DED4, 0xC1CEC9, 0xC1D4D8, 0xC5CCD8, 0xC5CEC9, 0xC5D3D4, 0xC5D420, 0xC7CF20, 0xC920D0, 0xC9C520, 0xC9C920, 0xC9D120, 0xCCC5CE, 0xCCC920, 0xCCD8CE, 
+            0xCEC120, 0xCEC520, 0xCEC9C5, 0xCEC9D1, 0xCECF20, 0xCECFD7, 0xCF20D0, 0xCF20D3, 0xCF20D7, 0xCFC7CF, 0xCFCA20, 0xCFCCD8, 0xCFCD20, 0xCFD3D4, 0xCFD720, 0xCFD7C1, 
+            0xD0CFCC, 0xD0D2C5, 0xD0D2C9, 0xD0D2CF, 0xD2C1D7, 0xD2C5C4, 0xD3D120, 0xD3D4C1, 0xD3D4C9, 0xD3D4D7, 0xD4C5CC, 0xD4CF20, 0xD4CFD2, 0xD4D820, 0xD9C820, 0xDED4CF, 
+        };
+
+        private static byte[] byteMap = {
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x00, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, 
+            (byte) 0x68, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+            (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, 
+            (byte) 0x78, (byte) 0x79, (byte) 0x7A, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xA3, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0xA3, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, (byte) 0x20, 
+            (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, 
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+            (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, 
+            (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xCB, (byte) 0xCC, (byte) 0xCD, (byte) 0xCE, (byte) 0xCF, 
+            (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, 
+            (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+        };
+        
+        public String getName()
+        {
+            return  "KOI8-R";
+        }
+        
+        public String getLanguage()
+        {
+            return "ru";
+        }
+        
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CharsetRecognizer.java b/src/com/ibm/icu/text/CharsetRecognizer.java
new file mode 100644
index 0000000..284bb21
--- /dev/null
+++ b/src/com/ibm/icu/text/CharsetRecognizer.java
@@ -0,0 +1,55 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ * Abstract class for recognizing a single charset.
+ * Part of the implementation of ICU's CharsetDetector.
+ * 
+ * Each specific charset that can be recognized will have an instance
+ * of some subclass of this class.  All interaction between the overall
+ * CharsetDetector and the stuff specific to an individual charset happens
+ * via the interface provided here.
+ * 
+ * Instances of CharsetDetector DO NOT have or maintain 
+ * state pertaining to a specific match or detect operation.
+ * The WILL be shared by multiple instances of CharsetDetector.
+ * They encapsulate const charset-specific information.
+ * 
+ * @internal
+ */
+abstract class CharsetRecognizer {
+    /**
+     * Get the IANA name of this charset.
+     * @return the charset name.
+     */
+    abstract String      getName();
+    
+    /**
+     * Get the ISO language code for this charset.
+     * @return the language code, or <code>null</code> if the language cannot be determined.
+     */
+    public   String      getLanguage()
+    {
+        return null;
+    }
+    
+    /**
+     * Test the match of this charset with the input text data
+     *      which is obtained via the CharsetDetector object.
+     * 
+     * @param det  The CharsetDetector, which contains the input text
+     *             to be checked for being in this charset.
+     * @return     Two values packed into one int  (Damn java, anyhow)
+     *             <br/>
+     *             bits 0-7:  the match confidence, ranging from 0-100
+     *             <br/>
+     *             bits 8-15: The match reason, an enum-like value.
+     */
+    abstract int         match(CharsetDetector det);
+
+}
diff --git a/src/com/ibm/icu/text/ChineseDateFormat.java b/src/com/ibm/icu/text/ChineseDateFormat.java
new file mode 100644
index 0000000..206d5ac
--- /dev/null
+++ b/src/com/ibm/icu/text/ChineseDateFormat.java
@@ -0,0 +1,268 @@
+//##header J2SE15
+/*********************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.util.*;
+import com.ibm.icu.impl.Utility;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Locale;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.io.InvalidObjectException;
+//#endif
+
+/**
+ * A concrete {@link DateFormat} for {@link com.ibm.icu.util.ChineseCalendar}.
+ * This class handles a <code>ChineseCalendar</code>-specific field,
+ * <code>ChineseCalendar.IS_LEAP_MONTH</code>.  It also redefines the
+ * handling of two fields, <code>ERA</code> and <code>YEAR</code>.  The
+ * former is displayed numerically, instead of symbolically, since it is
+ * the numeric cycle number in <code>ChineseCalendar</code>.  The latter is
+ * numeric, as before, but has no special 2-digit Y2K behavior.
+ *
+ * <p>With regard to <code>ChineseCalendar.IS_LEAP_MONTH</code>, this
+ * class handles parsing specially.  If no string symbol is found at all,
+ * this is taken as equivalent to an <code>IS_LEAP_MONTH</code> value of
+ * zero.  This allows formats to display a special string (e.g., "*") for
+ * leap months, but no string for normal months.
+ *
+ * <p>Summary of field changes vs. {@link SimpleDateFormat}:<pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        cycle                   (Number)            78
+ * y        year of cycle (1..60)   (Number)            17
+ * l        is leap month           (Text)              4637
+ * </pre>
+ *
+ * @see com.ibm.icu.util.ChineseCalendar
+ * @see ChineseDateFormatSymbols
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public class ChineseDateFormat extends SimpleDateFormat {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -4610300753104099899L;
+    
+    // TODO Finish the constructors
+
+    /**
+     * Construct a ChineseDateFormat from a date format pattern and locale
+     * @param pattern the pattern
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+   public ChineseDateFormat(String pattern, Locale locale) {
+       this(pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Construct a ChineseDateFormat from a date format pattern and locale
+     * @param pattern the pattern
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+   public ChineseDateFormat(String pattern, ULocale locale) {
+       super(pattern, new ChineseDateFormatSymbols(locale), 
+               new ChineseCalendar(TimeZone.getDefault(), locale), locale, true);
+    }
+
+// NOTE: This API still exists; we just inherit it from SimpleDateFormat
+// as of ICU 3.0
+//  /**
+//   * @stable ICU 2.0
+//   */
+//  protected String subFormat(char ch, int count, int beginOffset,
+//                             FieldPosition pos, DateFormatSymbols formatData,
+//                             Calendar cal)  {
+//      switch (ch) {
+//      case 'G': // 'G' - ERA
+//          return zeroPaddingNumber(cal.get(Calendar.ERA), 1, 9);
+//      case 'l': // 'l' - IS_LEAP_MONTH
+//          {
+//              ChineseDateFormatSymbols symbols =
+//                  (ChineseDateFormatSymbols) formatData;
+//              return symbols.getLeapMonth(cal.get(
+//                             ChineseCalendar.IS_LEAP_MONTH));
+//          }
+//      default:
+//          return super.subFormat(ch, count, beginOffset, pos, formatData, cal);
+//      }
+//  }    
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void subFormat(StringBuffer buf,
+                             char ch, int count, int beginOffset,
+                             FieldPosition pos,
+                             Calendar cal) {
+        switch (ch) {
+        case 'G': // 'G' - ERA
+            zeroPaddingNumber(buf, cal.get(Calendar.ERA), 1, 9);
+            break;
+        case 'l': // 'l' - IS_LEAP_MONTH
+            buf.append(((ChineseDateFormatSymbols) getSymbols()).
+                       getLeapMonth(cal.get(ChineseCalendar.IS_LEAP_MONTH)));
+            break;
+        default:
+            super.subFormat(buf, ch, count, beginOffset, pos, cal);
+            break;
+        }
+
+        // TODO: add code to set FieldPosition for 'G' and 'l' fields. This
+        // is a DESIGN FLAW -- subclasses shouldn't have to duplicate the
+        // code that handles this at the end of SimpleDateFormat.subFormat.
+        // The logic should be moved up into SimpleDateFormat.format.
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 2.0
+     */
+    protected int subParse(String text, int start, char ch, int count,
+                           boolean obeyCount, boolean allowNegative, boolean[] ambiguousYear, Calendar cal) {
+        if (ch != 'G' && ch != 'l' && ch != 'y') {
+            return super.subParse(text, start, ch, count, obeyCount, allowNegative, ambiguousYear, cal);
+        }
+
+        // Skip whitespace
+        start = Utility.skipWhitespace(text, start);
+
+        ParsePosition pos = new ParsePosition(start);
+
+        switch (ch) {
+        case 'G': // 'G' - ERA
+        case 'y': // 'y' - YEAR, but without the 2-digit Y2K adjustment
+            {
+                Number number = null;
+                if (obeyCount) {
+                    if ((start+count) > text.length()) {
+                        return -start;
+                    }
+                    number = numberFormat.parse(text.substring(0, start+count), pos);
+                } else {
+                    number = numberFormat.parse(text, pos);
+                }
+                if (number == null) {
+                    return -start;
+                }
+                int value = number.intValue();
+                cal.set(ch == 'G' ? Calendar.ERA : Calendar.YEAR, value);
+                return pos.getIndex();
+            }
+        case 'l': // 'l' - IS_LEAP_MONTH
+            {
+                ChineseDateFormatSymbols symbols =
+                    (ChineseDateFormatSymbols) getSymbols();
+                int result = matchString(text, start, ChineseCalendar.IS_LEAP_MONTH,
+                                         symbols.isLeapMonth, cal);
+                // Treat the absence of any matching string as setting
+                // IS_LEAP_MONTH to false.
+                if (result<0) {
+                    cal.set(ChineseCalendar.IS_LEAP_MONTH, 0);
+                    result = start;
+                }
+                return result;
+            }
+        default:
+            ///CLOVER:OFF
+            return 0; // This can never happen
+            ///CLOVER:ON
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * {@inheritDoc}
+     * 
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat.Field patternCharToDateFormatField(char ch) {
+        if (ch == 'l') {
+            return ChineseDateFormat.Field.IS_LEAP_MONTH;
+        }
+        return super.patternCharToDateFormatField(ch);
+    }
+
+    /**
+     * The instances of this inner class are used as attribute keys and values
+     * in AttributedCharacterIterator that
+     * ChineseDateFormat.formatToCharacterIterator() method returns.
+     * <p>
+     * There is no public constructor to this class, the only instances are the
+     * constants defined here.
+     * <p>
+     * @stable ICU 3.8
+     */
+    public static class Field extends DateFormat.Field {
+
+        private static final long serialVersionUID = -5102130532751400330L;
+
+        /**
+         * Constant identifying the leap month marker.
+         * @stable ICU 3.8
+         */
+        public static final Field IS_LEAP_MONTH = new Field("is leap month", ChineseCalendar.IS_LEAP_MONTH);
+
+        /**
+         * Constructs a <code>ChineseDateFormat.Field</code> with the given name and
+         * the <code>ChineseCalendar</code> field which this attribute represents.
+         * Use -1 for <code>calendarField</code> if this field does not have a
+         * corresponding <code>ChineseCalendar</code> field.
+         * 
+         * @param name          Name of the attribute
+         * @param calendarField <code>Calendar</code> field constant
+         * 
+         * @stable ICU 3.8
+         */
+        protected Field(String name, int calendarField) {
+            super(name, calendarField);
+        }
+
+        /**
+         * Returns the <code>Field</code> constant that corresponds to the <code>
+         * ChineseCalendar</code> field <code>calendarField</code>.  If there is no
+         * corresponding <code>Field</code> is available, null is returned.
+         * 
+         * @param calendarField <code>ChineseCalendar</code> field constant
+         * @return <code>Field</code> associated with the <code>calendarField</code>,
+         * or null if no associated <code>Field</code> is available.
+         * @throws IllegalArgumentException if <code>calendarField</code> is not
+         * a valid <code>Calendar</code> field constant.
+         * 
+         * @stable ICU 3.8
+         */
+        public static DateFormat.Field ofCalendarField(int calendarField) {
+            if (calendarField == ChineseCalendar.IS_LEAP_MONTH) {
+                return IS_LEAP_MONTH;
+            }
+            return DateFormat.Field.ofCalendarField(calendarField);
+        }
+
+        /**
+         * {@inheritDoc}
+         * 
+         * @stable ICU 3.8
+         */
+        protected Object readResolve() throws InvalidObjectException {
+            if (this.getClass() != ChineseDateFormat.Field.class) {
+                throw new InvalidObjectException("A subclass of ChineseDateFormat.Field must implement readResolve.");
+            }
+            if (this.getName().equals(IS_LEAP_MONTH.getName())) {
+                return IS_LEAP_MONTH;
+            } else {
+                throw new InvalidObjectException("Unknown attribute name.");
+            }
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/text/ChineseDateFormatSymbols.java b/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
new file mode 100644
index 0000000..a6970eb
--- /dev/null
+++ b/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
@@ -0,0 +1,102 @@
+/****************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ****************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.util.*;
+import java.util.Locale;
+
+/**
+ * A subclass of {@link DateFormatSymbols} for {@link ChineseDateFormat}.
+ * This class contains additional symbols corresponding to the
+ * <code>ChineseCalendar.IS_LEAP_MONTH</code> field.
+ *
+ * @see ChineseDateFormat
+ * @see com.ibm.icu.util.ChineseCalendar
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public class ChineseDateFormatSymbols extends DateFormatSymbols {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 6827816119783952890L;
+    
+    /*
+     * Package-private array that ChineseDateFormat needs to be able to
+     * read.
+     */
+    String isLeapMonth[]; // Do NOT add =null initializer
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the default locale.
+     * @stable ICU 2.0
+     */
+    public ChineseDateFormatSymbols() {
+        this(ULocale.getDefault());
+    }
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the provided locale.
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+    public ChineseDateFormatSymbols(Locale locale) {
+        super(ChineseCalendar.class, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the provided locale.
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+    public ChineseDateFormatSymbols(ULocale locale) {
+        super(ChineseCalendar.class, locale);
+    }
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the provided calendar and locale.
+     * @param cal the Calendar
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+    public ChineseDateFormatSymbols(Calendar cal, Locale locale) {
+        super(cal==null?null:cal.getClass(), locale);
+    }
+
+    /**
+     * Construct a ChineseDateFormatSymbols for the provided calendar and locale.
+     * @param cal the Calendar
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+    public ChineseDateFormatSymbols(Calendar cal, ULocale locale) {
+        super(cal == null ? null : cal.getClass(), locale);
+    }
+
+    // New API
+    /**
+     * @stable ICU 2.0
+     */
+    public String getLeapMonth(int leap) {
+        return isLeapMonth[leap];
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.0
+     */
+    protected void initializeData(ULocale loc, CalendarData calData) {
+        super.initializeData(loc, calData);
+        isLeapMonth = calData.getStringArray("isLeapMonth");
+    }
+
+    void initializeData(DateFormatSymbols dfs) {
+        super.initializeData(dfs);
+        if (dfs instanceof ChineseDateFormatSymbols) {
+            this.isLeapMonth = ((ChineseDateFormatSymbols)dfs).isLeapMonth;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationElementIterator.java b/src/com/ibm/icu/text/CollationElementIterator.java
new file mode 100644
index 0000000..72c2c38
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationElementIterator.java
@@ -0,0 +1,2886 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/***
+ * import java.text.StringCharacterIterator;
+ * import java.text.CharacterIterator;
+ */
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.StringUCharacterIterator;
+import com.ibm.icu.impl.CharacterIteratorWrapper;
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.lang.UCharacter;
+import java.text.CharacterIterator;
+import java.util.MissingResourceException;
+
+/**
+ * <p><code>CollationElementIterator</code> is an iterator created by
+ * a RuleBasedCollator to walk through a string. The return result of
+ * each iteration is a 32-bit collation element that defines the
+ * ordering priority of the next character or sequence of characters
+ * in the source string.</p>
+ *
+ * <p>For illustration, consider the following in Spanish:
+ * <blockquote>
+ * <pre>
+ * "ca" -> the first collation element is collation_element('c') and second
+ *         collation element is collation_element('a').
+ *
+ * Since "ch" in Spanish sorts as one entity, the below example returns one
+ * collation element for the two characters 'c' and 'h'
+ *
+ * "cha" -> the first collation element is collation_element('ch') and second
+ *          collation element is collation_element('a').
+ * </pre>
+ * </blockquote>
+ * And in German,
+ * <blockquote>
+ * <pre>
+ * Since the character '&#230;' is a composed character of 'a' and 'e', the
+ * iterator returns two collation elements for the single character '&#230;'
+ *
+ * "&#230;b" -> the first collation element is collation_element('a'), the
+ *              second collation element is collation_element('e'), and the
+ *              third collation element is collation_element('b').
+ * </pre>
+ * </blockquote>
+ * </p>
+ *
+ * <p>For collation ordering comparison, the collation element results
+ * can not be compared simply by using basic arithmetric operators,
+ * e.g. &lt;, == or &gt;, further processing has to be done. Details
+ * can be found in the ICU
+ * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+ * user guide</a>. An example of using the CollationElementIterator
+ * for collation ordering comparison is the class
+ * <a href=StringSearch.html> com.ibm.icu.text.StringSearch</a>.</p>
+ *
+ * <p>To construct a CollationElementIterator object, users
+ * call the method getCollationElementIterator() on a
+ * RuleBasedCollator that defines the desired sorting order.</p>
+ *
+ * <p> Example:
+ * <blockquote>
+ * <pre>
+ *  String testString = "This is a test";
+ *  RuleBasedCollator rbc = new RuleBasedCollator("&amp;a&lt;b");
+ *  CollationElementIterator iterator = rbc.getCollationElementIterator(testString);
+ *  int primaryOrder = iterator.IGNORABLE;
+ *  while (primaryOrder != iterator.NULLORDER) {
+ *      int order = iterator.next();
+ *      if (order != iterator.IGNORABLE &&
+ *          order != iterator.NULLORDER) {
+ *          // order is valid, not ignorable and we have not passed the end
+ *          // of the iteration, we do something
+ *          primaryOrder = CollationElementIterator.primaryOrder(order);
+ *          System.out.println("Next primary order 0x" +
+ *                             Integer.toHexString(primaryOrder));
+ *      }
+ *  }
+ * </pre>
+ * </blockquote>
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @see Collator
+ * @see RuleBasedCollator
+ * @see StringSearch
+ * @author Syn Wee Quek
+ * @stable ICU 2.8
+ */
+public final class CollationElementIterator
+{
+  
+    
+    // public data members --------------------------------------------------
+
+    /**
+     * <p>This constant is returned by the iterator in the methods
+     * next() and previous() when the end or the beginning of the
+     * source string has been reached, and there are no more valid
+     * collation elements to return.</p>
+     *
+     * <p>See class documentation for an example of use.</p>
+     * @stable ICU 2.8
+     * @see #next
+     * @see #previous */
+    public final static int NULLORDER = 0xffffffff;
+
+    /**
+     * <p>This constant is returned by the iterator in the methods
+     * next() and previous() when a collation element result is to be
+     * ignored.</p>
+     *
+     * <p>See class documentation for an example of use.</p>
+     * @stable ICU 2.8
+     * @see #next
+     * @see #previous */
+    public static final int IGNORABLE = 0;
+
+    // public methods -------------------------------------------------------
+
+    // public getters -------------------------------------------------------
+
+    /**
+     * <p>Returns the character offset in the source string
+     * corresponding to the next collation element. I.e., getOffset()
+     * returns the position in the source string corresponding to the
+     * collation element that will be returned by the next call to
+     * next(). This value could be any of:
+     * <ul>
+     * <li> The index of the <b>first</b> character corresponding to
+     * the next collation element. (This means that if
+     * <code>setOffset(offset)</code> sets the index in the middle of
+     * a contraction, <code>getOffset()</code> returns the index of
+     * the first character in the contraction, which may not be equal
+     * to the original offset that was set. Hence calling getOffset()
+     * immediately after setOffset(offset) does not guarantee that the
+     * original offset set will be returned.)
+     * <li> If normalization is on, the index of the <b>immediate</b>
+     * subsequent character, or composite character with the first
+     * character, having a combining class of 0.
+     * <li> The length of the source string, if iteration has reached
+     * the end.
+     *</ul>
+     * </p>
+     * @return The character offset in the source string corresponding to the
+     *         collation element that will be returned by the next call to
+     *         next().
+     * @stable ICU 2.8
+     */
+    public int getOffset()
+    {
+        if (m_bufferOffset_ != -1) {
+            if (m_isForwards_) {
+                return m_FCDLimit_;
+            }
+            return m_FCDStart_;
+        }
+        return m_source_.getIndex();
+    }
+
+
+    /**
+     * <p> Returns the maximum length of any expansion sequence that ends with
+     * the specified collation element. If there is no expansion with this
+     * collation element as the last element, returns 1.
+     * </p>
+     * @param ce a collation element returned by previous() or next().
+     * @return the maximum length of any expansion sequence ending
+     *         with the specified collation element.
+     * @stable ICU 2.8
+     */
+    public int getMaxExpansion(int ce)
+    {
+        int start = 0;
+        int limit = m_collator_.m_expansionEndCE_.length;
+        long unsignedce = ce & 0xFFFFFFFFl;
+        while (start < limit - 1) {
+            int mid = start + ((limit - start) >> 1);
+            long midce = m_collator_.m_expansionEndCE_[mid] & 0xFFFFFFFFl;
+            if (unsignedce <= midce) {
+                limit = mid;
+            }
+            else {
+                start = mid;
+            }
+        }
+        int result = 1;
+        if (m_collator_.m_expansionEndCE_[start] == ce) {
+            result = m_collator_.m_expansionEndCEMaxSize_[start];
+        }
+        else if (limit < m_collator_.m_expansionEndCE_.length &&
+                 m_collator_.m_expansionEndCE_[limit] == ce) {
+            result = m_collator_.m_expansionEndCEMaxSize_[limit];
+        }
+        else if ((ce & 0xFFFF) == 0x00C0) {
+            result = 2;
+        }
+        return result;
+    }
+
+    // public other methods -------------------------------------------------
+
+    /**
+     * <p> Resets the cursor to the beginning of the string. The next
+     * call to next() or previous() will return the first and last
+     * collation element in the string, respectively.</p>
+     *
+     * <p>If the RuleBasedCollator used by this iterator has had its
+     * attributes changed, calling reset() will reinitialize the
+     * iterator to use the new attributes.</p>
+     *
+     * @stable ICU 2.8
+     */
+    public void reset()
+    {
+        m_source_.setToStart();
+        updateInternalState();
+    }
+
+    /**
+     * <p>Get the next collation element in the source string.</p>
+     *
+     * <p>This iterator iterates over a sequence of collation elements
+     * that were built from the string. Because there isn't
+     * necessarily a one-to-one mapping from characters to collation
+     * elements, this doesn't mean the same thing as "return the
+     * collation element [or ordering priority] of the next character
+     * in the string".</p>
+     *
+     * <p>This function returns the collation element that the
+     * iterator is currently pointing to, and then updates the
+     * internal pointer to point to the next element.  Previous()
+     * updates the pointer first, and then returns the element. This
+     * means that when you change direction while iterating (i.e.,
+     * call next() and then call previous(), or call previous() and
+     * then call next()), you'll get back the same element twice.</p>
+     *
+     * @return the next collation element or NULLORDER if the end of the
+     *         iteration has been reached.
+     * @stable ICU 2.8
+     */
+    public int next()
+    {
+        m_isForwards_ = true;
+        if (m_CEBufferSize_ > 0) {
+            if (m_CEBufferOffset_ < m_CEBufferSize_) {
+                // if there are expansions left in the buffer, we return it
+                return m_CEBuffer_[m_CEBufferOffset_ ++];
+            }
+            m_CEBufferSize_ = 0;
+            m_CEBufferOffset_ = 0;
+        }
+ 
+        int ch_int = nextChar();
+        
+        if (ch_int == UCharacterIterator.DONE) {
+            return NULLORDER;
+        }
+        char ch = (char)ch_int;
+        if (m_collator_.m_isHiragana4_) {
+            /* Codepoints \u3099-\u309C are both Hiragana and Katakana. Set the flag
+             * based on whether the previous codepoint was Hiragana or Katakana.
+             */
+            m_isCodePointHiragana_ = (m_isCodePointHiragana_ && (ch >= 0x3099 && ch <= 0x309C)) || 
+                                     ((ch >= 0x3040 && ch <= 0x309e) && !(ch > 0x3094 && ch < 0x309d));
+        }
+
+        int result = NULLORDER;
+        if (ch <= 0xFF) {
+            // For latin-1 characters we never need to fall back to the UCA
+            // table because all of the UCA data is replicated in the
+            // latinOneMapping array
+            result = m_collator_.m_trie_.getLatin1LinearValue(ch);
+            if (RuleBasedCollator.isSpecial(result)) {
+                result = nextSpecial(m_collator_, result, ch);
+            }
+        }
+        else {
+            result = m_collator_.m_trie_.getLeadValue(ch);
+            //System.out.println(Integer.toHexString(result));
+            if (RuleBasedCollator.isSpecial(result)) {
+                // surrogate leads are handled as special ces
+                result = nextSpecial(m_collator_, result, ch);
+            }
+            if (result == CE_NOT_FOUND_ && RuleBasedCollator.UCA_ != null) {
+                // couldn't find a good CE in the tailoring
+                // if we got here, the codepoint MUST be over 0xFF - so we look
+                // directly in the UCA
+                result = RuleBasedCollator.UCA_.m_trie_.getLeadValue(ch);
+                if (RuleBasedCollator.isSpecial(result)) {
+                    // UCA also gives us a special CE
+                    result = nextSpecial(RuleBasedCollator.UCA_, result, ch);
+                }
+            }
+        }
+        if(result == CE_NOT_FOUND_) { 
+            // maybe there is no UCA, unlikely in Java, but ported for consistency
+            result = nextImplicit(ch); 
+        }
+        return result;
+    }
+
+    /**
+     * <p>Get the previous collation element in the source string.</p>
+     *
+     * <p>This iterator iterates over a sequence of collation elements
+     * that were built from the string. Because there isn't
+     * necessarily a one-to-one mapping from characters to collation
+     * elements, this doesn't mean the same thing as "return the
+     * collation element [or ordering priority] of the previous
+     * character in the string".</p>
+     *
+     * <p>This function updates the iterator's internal pointer to
+     * point to the collation element preceding the one it's currently
+     * pointing to and then returns that element, while next() returns
+     * the current element and then updates the pointer. This means
+     * that when you change direction while iterating (i.e., call
+     * next() and then call previous(), or call previous() and then
+     * call next()), you'll get back the same element twice.</p>
+     *
+     * @return the previous collation element, or NULLORDER when the start of
+     *             the iteration has been reached.
+     * @stable ICU 2.8
+     */
+    public int previous()
+    {
+        if (m_source_.getIndex() <= 0 && m_isForwards_) {
+            // if iterator is new or reset, we can immediate perform  backwards
+            // iteration even when the offset is not right.
+            m_source_.setToLimit();
+            updateInternalState();
+        }
+        m_isForwards_ = false;
+        int result = NULLORDER;
+        if (m_CEBufferSize_ > 0) {
+            if (m_CEBufferOffset_ > 0) {
+                return m_CEBuffer_[-- m_CEBufferOffset_];
+            }
+            m_CEBufferSize_ = 0;
+            m_CEBufferOffset_ = 0;
+        }
+        int ch_int = previousChar();
+        if (ch_int == UCharacterIterator.DONE) {
+            return NULLORDER;
+        }
+        char ch = (char)ch_int;
+        if (m_collator_.m_isHiragana4_) {
+            m_isCodePointHiragana_ = (ch >= 0x3040 && ch <= 0x309f);
+        }
+        if (m_collator_.isContractionEnd(ch) && !isBackwardsStart()) {
+            result = previousSpecial(m_collator_, CE_CONTRACTION_, ch);
+        }
+        else {
+            if (ch <= 0xFF) {
+                result = m_collator_.m_trie_.getLatin1LinearValue(ch);
+            }
+            else {
+                result = m_collator_.m_trie_.getLeadValue(ch);
+            }
+            if (RuleBasedCollator.isSpecial(result)) {
+                result = previousSpecial(m_collator_, result, ch);
+            }
+            if (result == CE_NOT_FOUND_) {
+                if (!isBackwardsStart()
+                    && m_collator_.isContractionEnd(ch)) {
+                    result = CE_CONTRACTION_;
+                }
+                else {
+                    if(RuleBasedCollator.UCA_ != null) {
+                        result = RuleBasedCollator.UCA_.m_trie_.getLeadValue(ch);
+                    }
+                }
+
+                if (RuleBasedCollator.isSpecial(result)) {
+                    if(RuleBasedCollator.UCA_ != null) {                    
+                        result = previousSpecial(RuleBasedCollator.UCA_, result, ch);
+                    }
+                }
+            }
+        }
+        if(result == CE_NOT_FOUND_) {
+            result = previousImplicit(ch);
+        }
+        return result;
+    }
+
+    /**
+     * Return the primary order of the specified collation element,
+     * i.e. the first 16 bits.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 16 bits primary order.
+     * @stable ICU 2.8
+     */
+    public final static int primaryOrder(int ce)
+    {
+        return (ce & RuleBasedCollator.CE_PRIMARY_MASK_)
+            >>> RuleBasedCollator.CE_PRIMARY_SHIFT_;
+    }
+    /**
+     * Return the secondary order of the specified collation element,
+     * i.e. the 16th to 23th bits, inclusive.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 8 bits secondary order
+     * @stable ICU 2.8
+     */
+    public final static int secondaryOrder(int ce)
+    {
+        return (ce & RuleBasedCollator.CE_SECONDARY_MASK_)
+            >> RuleBasedCollator.CE_SECONDARY_SHIFT_;
+    }
+
+    /**
+     * Return the tertiary order of the specified collation element, i.e. the last
+     * 8 bits.  This value is unsigned.
+     * @param ce the collation element
+     * @return the element's 8 bits tertiary order
+     * @stable ICU 2.8
+     */
+    public final static int tertiaryOrder(int ce)
+    {
+        return ce & RuleBasedCollator.CE_TERTIARY_MASK_;
+    }
+
+    /**
+     * <p> Sets the iterator to point to the collation element
+     * corresponding to the character at the specified offset. The
+     * value returned by the next call to next() will be the collation
+     * element corresponding to the characters at offset.</p>
+     *
+     * <p>If offset is in the middle of a contracting character
+     * sequence, the iterator is adjusted to the start of the
+     * contracting sequence. This means that getOffset() is not
+     * guaranteed to return the same value set by this method.</p>
+     *
+     * <p>If the decomposition mode is on, and offset is in the middle
+     * of a decomposible range of source text, the iterator may not
+     * return a correct result for the next forwards or backwards
+     * iteration.  The user must ensure that the offset is not in the
+     * middle of a decomposible range.</p>
+     *
+     * @param offset the character offset into the original source string to
+     *        set. Note that this is not an offset into the corresponding
+     *        sequence of collation elements.
+     * @stable ICU 2.8
+     */
+    public void setOffset(int offset)
+    {
+        m_source_.setIndex(offset);
+        int ch_int = m_source_.current();
+        char ch = (char)ch_int;
+        if (ch_int != UCharacterIterator.DONE && m_collator_.isUnsafe(ch)) {
+            // if it is unsafe we need to check if it is part of a contraction
+            // or a surrogate character
+            if (UTF16.isTrailSurrogate(ch)) {
+                // if it is a surrogate pair we move up one character
+                char prevch = (char)m_source_.previous();
+                if (!UTF16.isLeadSurrogate(prevch)) {
+                    m_source_.setIndex(offset); // go back to the same index
+                }
+            }
+            else {
+                // could be part of a contraction
+                // backup to a safe point and iterate till we pass offset
+                while (m_source_.getIndex() > 0) {
+                    if (!m_collator_.isUnsafe(ch)) {
+                        break;
+                    }
+                    ch = (char)m_source_.previous();
+                }
+                updateInternalState();
+                int prevoffset = 0;
+                while (m_source_.getIndex() <= offset) {
+                    prevoffset = m_source_.getIndex();
+                    next();
+                }
+                m_source_.setIndex(prevoffset);
+            }
+        }
+        updateInternalState();
+        // direction code to prevent next and previous from returning a 
+        // character if we are already at the ends
+        offset = m_source_.getIndex();
+        if (offset == 0/* m_source_.getBeginIndex() */) {
+            // preventing previous() from returning characters from the end of 
+            // the string again if we are at the beginning
+            m_isForwards_ = false; 
+        }
+        else if (offset == m_source_.getLength()) {
+            // preventing next() from returning characters from the start of 
+            // the string again if we are at the end
+            m_isForwards_ = true;
+        }
+    }
+
+    /**
+     * <p>Set a new source string for iteration, and reset the offset
+     * to the beginning of the text.</p>
+     *
+     * @param source the new source string for iteration.
+     * @stable ICU 2.8
+     */
+    public void setText(String source)
+    {
+        m_srcUtilIter_.setText(source);
+        m_source_ = m_srcUtilIter_;
+        updateInternalState();
+    }
+    
+    /**
+     * <p>Set a new source string iterator for iteration, and reset the
+     * offset to the beginning of the text.
+     * </p>
+     * <p>The source iterator's integrity will be preserved since a new copy
+     * will be created for use.</p>
+     * @param source the new source string iterator for iteration.
+     * @stable ICU 2.8
+     */
+    public void setText(UCharacterIterator source)
+    {
+        m_srcUtilIter_.setText(source.getText());
+        m_source_ = m_srcUtilIter_;
+        updateInternalState(); 
+    }
+
+    /**
+     * <p>Set a new source string iterator for iteration, and reset the
+     * offset to the beginning of the text.
+     * </p>
+     * @param source the new source string iterator for iteration.
+     * @stable ICU 2.8
+     */
+    public void setText(CharacterIterator source)
+    {
+        m_source_ = new CharacterIteratorWrapper(source);
+        m_source_.setToStart();
+        updateInternalState();
+    }
+
+    // public miscellaneous methods -----------------------------------------
+
+    /**
+     * Tests that argument object is equals to this CollationElementIterator.
+     * Iterators are equal if the objects uses the same RuleBasedCollator,
+     * the same source text and have the same current position in iteration.
+     * @param that object to test if it is equals to this
+     *             CollationElementIterator
+     * @stable ICU 2.8
+     */
+    public boolean equals(Object that)
+    {
+        if (that == this) {
+            return true;
+        }
+        if (that instanceof CollationElementIterator) {
+            CollationElementIterator thatceiter
+                                              = (CollationElementIterator)that;
+            if (!m_collator_.equals(thatceiter.m_collator_)) {
+                return false;
+            }
+            // checks the text 
+            return m_source_.getIndex() == thatceiter.m_source_.getIndex()
+                   && m_source_.getText().equals(
+                                            thatceiter.m_source_.getText());
+        }
+        return false;
+    }
+
+    // package private constructors ------------------------------------------
+
+    /**
+     * <p>CollationElementIterator constructor. This takes a source
+     * string and a RuleBasedCollator. The iterator will walk through
+     * the source string based on the rules defined by the
+     * collator. If the source string is empty, NULLORDER will be
+     * returned on the first call to next().</p>
+     *
+     * @param source the source string.
+     * @param collator the RuleBasedCollator
+     * @stable ICU 2.8
+     */
+    CollationElementIterator(String source, RuleBasedCollator collator)
+    {
+        m_srcUtilIter_ = new StringUCharacterIterator(source);
+        m_utilStringBuffer_ = new StringBuffer();
+        m_source_ = m_srcUtilIter_;
+        m_collator_ = collator;
+        m_CEBuffer_ = new int[CE_BUFFER_INIT_SIZE_];
+        m_buffer_ = new StringBuffer();
+        m_utilSpecialBackUp_ = new Backup();
+        updateInternalState();
+    }
+
+    /**
+     * <p>CollationElementIterator constructor. This takes a source
+     * character iterator and a RuleBasedCollator. The iterator will
+     * walk through the source string based on the rules defined by
+     * the collator. If the source string is empty, NULLORDER will be
+     * returned on the first call to next().</p>
+     *
+     * @param source the source string iterator.
+     * @param collator the RuleBasedCollator
+     * @stable ICU 2.8
+     */
+    CollationElementIterator(CharacterIterator source,
+                             RuleBasedCollator collator)
+    {
+        m_srcUtilIter_ = new StringUCharacterIterator();
+        m_utilStringBuffer_ = new StringBuffer();
+        m_source_ = new CharacterIteratorWrapper(source);
+        m_collator_ = collator;
+        m_CEBuffer_ = new int[CE_BUFFER_INIT_SIZE_];
+        m_buffer_ = new StringBuffer();
+        m_utilSpecialBackUp_ = new Backup();
+        updateInternalState();
+    }
+    
+    /**
+     * <p>CollationElementIterator constructor. This takes a source
+     * character iterator and a RuleBasedCollator. The iterator will
+     * walk through the source string based on the rules defined by
+     * the collator. If the source string is empty, NULLORDER will be
+     * returned on the first call to next().</p>
+     *
+     * @param source the source string iterator.
+     * @param collator the RuleBasedCollator
+     * @stable ICU 2.8
+     */
+    CollationElementIterator(UCharacterIterator source,
+                             RuleBasedCollator collator)
+    {
+        m_srcUtilIter_ = new StringUCharacterIterator();
+        m_utilStringBuffer_ = new StringBuffer();
+        m_srcUtilIter_.setText(source.getText());
+        m_source_ = m_srcUtilIter_;
+        m_collator_ = collator;
+        m_CEBuffer_ = new int[CE_BUFFER_INIT_SIZE_];
+        m_buffer_ = new StringBuffer();
+        m_utilSpecialBackUp_ = new Backup();
+        updateInternalState();
+    }
+
+    // package private data members -----------------------------------------
+
+    /**
+     * true if current codepoint was Hiragana
+     */
+    boolean m_isCodePointHiragana_;
+    /**
+     * Position in the original string that starts with a non-FCD sequence
+     */
+    int m_FCDStart_;
+    /**
+     * This is the CE from CEs buffer that should be returned.
+     * Initial value is 0.
+     * Forwards iteration will end with m_CEBufferOffset_ == m_CEBufferSize_,
+     * backwards will end with m_CEBufferOffset_ == 0.
+     * The next/previous after we reach the end/beginning of the m_CEBuffer_
+     * will cause this value to be reset to 0.
+     */
+    int m_CEBufferOffset_;
+
+    /**
+     * This is the position to which we have stored processed CEs.
+     * Initial value is 0.
+     * The next/previous after we reach the end/beginning of the m_CEBuffer_
+     * will cause this value to be reset to 0.
+     */
+    int m_CEBufferSize_;
+    static final int CE_NOT_FOUND_ = 0xF0000000;
+    static final int CE_EXPANSION_TAG_ = 1;
+    static final int CE_CONTRACTION_TAG_ = 2;
+    /** 
+     * Collate Digits As Numbers (CODAN) implementation
+     */
+    static final int CE_DIGIT_TAG_ = 13;
+
+    // package private methods ----------------------------------------------
+
+    /**
+     * Sets the collator used.
+     * Internal use, all data members will be reset to the default values
+     * @param collator to set
+     */
+    void setCollator(RuleBasedCollator collator)
+    {
+        m_collator_ = collator;
+        updateInternalState();
+    }
+
+    /**
+     * <p>Sets the iterator to point to the collation element corresponding to
+     * the specified character (the parameter is a CHARACTER offset in the
+     * original string, not an offset into its corresponding sequence of
+     * collation elements). The value returned by the next call to next()
+     * will be the collation element corresponding to the specified position
+     * in the text. Unlike the public method setOffset(int), this method does
+     * not try to readjust the offset to the start of a contracting sequence.
+     * getOffset() is guaranteed to return the same value as was passed to a
+     * preceding call to setOffset().</p>
+     * @param offset new character offset into the original text to set.
+     */
+    void setExactOffset(int offset)
+    {
+        m_source_.setIndex(offset);
+        updateInternalState();
+    }
+
+    /**
+     * Checks if iterator is in the buffer zone
+     * @return true if iterator is in buffer zone, false otherwise
+     */
+    boolean isInBuffer()
+    {
+        return m_bufferOffset_ > 0;
+    }
+
+   
+    /**
+     * <p>Sets the iterator to point to the collation element corresponding to
+     * the specified character (the parameter is a CHARACTER offset in the
+     * original string, not an offset into its corresponding sequence of
+     * collation elements). The value returned by the next call to next()
+     * will be the collation element corresponding to the specified position
+     * in the text. Unlike the public method setOffset(int), this method does
+     * not try to readjust the offset to the start of a contracting sequence.
+     * getOffset() is guaranteed to return the same value as was passed to a
+     * preceding call to setOffset().</p>
+     * </p>
+     * @param source the new source string iterator for iteration.
+     * @param offset to the source
+     */
+    void setText(UCharacterIterator source, int offset)
+    {
+        m_srcUtilIter_.setText(source.getText());
+        m_source_ = m_srcUtilIter_;
+        m_source_.setIndex(offset);
+        updateInternalState();
+    }
+
+    // private inner class --------------------------------------------------
+
+    /**
+     * Backup data class
+     */
+    private static final class Backup
+    {
+        // protected data members -------------------------------------------
+
+        /**
+         * Backup non FCD sequence limit
+         */
+        protected int m_FCDLimit_;
+        /**
+         * Backup non FCD sequence start
+         */
+        protected int m_FCDStart_;
+        /**
+         * Backup if previous Codepoint is Hiragana quatenary
+         */
+        protected boolean m_isCodePointHiragana_;
+        /**
+         * Backup buffer position
+         */
+        protected int m_bufferOffset_;
+        /**
+         * Backup source iterator offset
+         */
+        protected int m_offset_;
+        /**
+         * Backup buffer contents
+         */
+        protected StringBuffer m_buffer_;
+
+        // protected constructor --------------------------------------------
+
+        /**
+         * Empty constructor
+         */
+        protected Backup()
+        {
+            m_buffer_ = new StringBuffer();
+        }
+    }
+    // end inner class ------------------------------------------------------
+
+    /**
+     * Direction of travel
+     */
+    private boolean m_isForwards_;
+    /**
+     * Source string iterator
+     */
+    private UCharacterIterator m_source_;
+    /**
+     * This is position to the m_buffer_, -1 if iterator is not in m_buffer_
+     */
+    private int m_bufferOffset_;
+    /**
+     * Buffer for temporary storage of normalized characters, discontiguous
+     * characters and Thai characters
+     */
+    private StringBuffer m_buffer_;
+    /**
+     * Position in the original string to continue forward FCD check from.
+     */
+    private int m_FCDLimit_;
+    /**
+     * The collator this iterator is based on
+     */
+    private RuleBasedCollator m_collator_;
+    /**
+     * true if Hiragana quatenary is on
+     */
+    //private boolean m_isHiragana4_;
+    /**
+     * CE buffer
+     */
+    private int m_CEBuffer_[];
+    /**
+     * In reality we should not have to deal with expansion sequences longer
+     * then 16. However this value can be change if a bigger buffer is needed.
+     * Note, if the size is change to too small a number, BIG trouble.
+     * Reasonable small value is around 10, if there's no Arabic or other
+     * funky collations that have long expansion sequence. This is the longest
+     * expansion sequence this can handle without bombing out.
+     */
+    private static final int CE_BUFFER_INIT_SIZE_ = 512;
+    /**
+     * Backup storage for special processing inner cases
+     */
+    private Backup m_utilSpecialBackUp_;
+    /**
+     * Backup storage in special processing entry state
+     */
+    private Backup m_utilSpecialEntryBackUp_;
+    /**
+     * Backup storage in special processing discontiguous state
+     */
+    private Backup m_utilSpecialDiscontiguousBackUp_;
+    /**
+     * Utility
+     */
+    private StringUCharacterIterator m_srcUtilIter_;
+    private StringBuffer m_utilStringBuffer_;
+    private StringBuffer m_utilSkippedBuffer_;
+    private CollationElementIterator m_utilColEIter_;
+    /**
+     * One character before the first non-zero combining class character
+     */
+    private static final int FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_ = 0xC0;
+    /**
+     * One character before the first character with leading non-zero combining
+     * class
+     */
+    private static final int LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_ = 0x300;
+    /**
+     * Mask for the last byte
+     */
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+    /**
+     * Shift value for the second last byte
+     */
+    private static final int SECOND_LAST_BYTE_SHIFT_ = 8;
+
+    // special ce values and tags -------------------------------------------
+    
+//    private static final int CE_EXPANSION_ = 0xF1000000;
+    private static final int CE_CONTRACTION_ = 0xF2000000;
+    /**
+     * Indicates the last ce has been consumed. Compare with NULLORDER.
+     * NULLORDER is returned if error occurs.
+     */
+/*    private static final int CE_NO_MORE_CES_ = 0x00010101;
+    private static final int CE_NO_MORE_CES_PRIMARY_ = 0x00010000;
+    private static final int CE_NO_MORE_CES_SECONDARY_ = 0x00000100;
+    private static final int CE_NO_MORE_CES_TERTIARY_ = 0x00000001;
+*/
+    private static final int CE_NOT_FOUND_TAG_ = 0;
+    /**
+     * Charset processing, not yet implemented
+     */
+    private static final int CE_CHARSET_TAG_ = 4;
+    /**
+     * AC00-D7AF
+     */
+    private static final int CE_HANGUL_SYLLABLE_TAG_ = 6;
+    /**
+     * D800-DBFF
+     */
+    private static final int CE_LEAD_SURROGATE_TAG_ = 7;
+    /**
+     * DC00-DFFF
+     */
+    private static final int CE_TRAIL_SURROGATE_TAG_ = 8;
+    /**
+     * 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+     */
+    private static final int CE_CJK_IMPLICIT_TAG_ = 9;
+    private static final int CE_IMPLICIT_TAG_ = 10;
+    static final int CE_SPEC_PROC_TAG_ = 11;
+    /**
+     * This is a 3 byte primary with starting secondaries and tertiaries.
+     * It fits in a single 32 bit CE and is used instead of expansion to save
+     * space without affecting the performance (hopefully).
+     */
+    private static final int CE_LONG_PRIMARY_TAG_ = 12;
+                        
+//    private static final int CE_CE_TAGS_COUNT = 14;
+    private static final int CE_BYTE_COMMON_ = 0x05;
+
+    // end special ce values and tags ---------------------------------------
+
+    private static final int HANGUL_SBASE_ = 0xAC00;
+    private static final int HANGUL_LBASE_ = 0x1100;
+    private static final int HANGUL_VBASE_ = 0x1161;
+    private static final int HANGUL_TBASE_ = 0x11A7;
+    private static final int HANGUL_VCOUNT_ = 21;
+    private static final int HANGUL_TCOUNT_ = 28;
+
+    // CJK stuff ------------------------------------------------------------
+
+/*    private static final int CJK_BASE_ = 0x4E00;
+    private static final int CJK_LIMIT_ = 0x9FFF+1;
+    private static final int CJK_COMPAT_USED_BASE_ = 0xFA0E;
+    private static final int CJK_COMPAT_USED_LIMIT_ = 0xFA2F + 1;
+    private static final int CJK_A_BASE_ = 0x3400;
+    private static final int CJK_A_LIMIT_ = 0x4DBF + 1;
+    private static final int CJK_B_BASE_ = 0x20000;
+    private static final int CJK_B_LIMIT_ = 0x2A6DF + 1;
+    private static final int NON_CJK_OFFSET_ = 0x110000;
+*/
+    private static final boolean DEBUG  =  ICUDebug.enabled("collator");
+    
+    // private methods ------------------------------------------------------
+
+    /**
+     * Reset the iterator internally
+     */
+    private void updateInternalState()
+    {
+        m_isCodePointHiragana_ = false;
+        m_buffer_.setLength(0);
+        m_bufferOffset_ = -1;
+        m_CEBufferOffset_ = 0;
+        m_CEBufferSize_ = 0;
+        m_FCDLimit_ = -1;
+        m_FCDStart_ = m_source_.getLength();
+        //m_isHiragana4_ = m_collator_.m_isHiragana4_;
+        m_isForwards_ = true;
+    }
+
+    /**
+     * Backup the current internal state
+     * @param backup object to store the data
+     */
+    private void backupInternalState(Backup backup)
+    {
+        backup.m_offset_ = m_source_.getIndex();
+        backup.m_FCDLimit_ = m_FCDLimit_;
+        backup.m_FCDStart_ = m_FCDStart_;
+        backup.m_isCodePointHiragana_ = m_isCodePointHiragana_;
+        backup.m_bufferOffset_ = m_bufferOffset_;
+        backup.m_buffer_.setLength(0);
+        if (m_bufferOffset_ >= 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            if(ICUDebug.isJDK14OrHigher){
+                backup.m_buffer_.append(m_buffer_);
+            }else{
+                backup.m_buffer_.append(m_buffer_.toString());
+            }
+        }
+    }
+
+    /**
+     * Update the iterator internally with backed-up state
+     * @param backup object that stored the data
+     */
+    private void updateInternalState(Backup backup)
+    {
+        m_source_.setIndex(backup.m_offset_);
+        m_isCodePointHiragana_ = backup.m_isCodePointHiragana_;
+        m_bufferOffset_ = backup.m_bufferOffset_;
+        m_FCDLimit_ = backup.m_FCDLimit_;
+        m_FCDStart_ = backup.m_FCDStart_;
+        m_buffer_.setLength(0);
+        if (m_bufferOffset_ >= 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            m_buffer_.append(backup.m_buffer_.toString());
+        }
+    }
+
+    /**
+     * A fast combining class retrieval system.
+     * @param ch UTF16 character
+     * @return combining class of ch
+     */
+    private int getCombiningClass(int ch)
+    {
+        if (ch >= LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_ &&
+            m_collator_.isUnsafe((char)ch) || ch > 0xFFFF) {
+            return NormalizerImpl.getCombiningClass(ch);
+        }
+        return 0;
+    }
+
+    /**
+     * <p>Incremental normalization, this is an essential optimization.
+     * Assuming FCD checks has been done, normalize the non-FCD characters into
+     * the buffer.
+     * Source offsets points to the current processing character.
+     * </p>
+     */
+    private void normalize()
+    {
+        int size = m_FCDLimit_ - m_FCDStart_;
+        m_buffer_.setLength(0);
+        m_source_.setIndex(m_FCDStart_);
+        for (int i = 0; i < size; i ++) {
+            m_buffer_.append((char)m_source_.next());
+        }
+        String decomp = Normalizer.decompose(m_buffer_.toString(), false);
+        m_buffer_.setLength(0);
+        m_buffer_.append(decomp);
+        m_bufferOffset_ = 0;
+    }
+
+    /**
+     * <p>Incremental FCD check and normalization. Gets the next base character
+     * position and determines if the in-between characters needs normalization.
+     * </p>
+     * <p>When entering, the state is known to be this:
+     * <ul>
+     * <li>We are working on source string, not the buffer.
+     * <li>The leading combining class from the current character is 0 or the
+     *     trailing combining class of the previous char was zero.
+     * </ul>
+     * Incoming source offsets points to the current processing character.
+     * Return source offsets points to the current processing character.
+     * </p>
+     * @param ch current character
+     * @param offset current character offset
+     * @return true if FCDCheck passes, false otherwise
+     */
+    private boolean FCDCheck(char ch, int offset)
+    {
+        boolean result = true;
+
+        // Get the trailing combining class of the current character.
+        // If it's zero, we are OK.
+        m_FCDStart_ = offset;
+        m_source_.setIndex(offset);
+        // trie access
+        char fcd = NormalizerImpl.getFCD16(ch);
+        if (fcd != 0 && UTF16.isLeadSurrogate(ch)) {
+            m_source_.next();
+            ch = (char)m_source_.current(); 
+            // UCharacterIterator.DONE has 0 fcd
+            if (UTF16.isTrailSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, ch);
+            } else {
+                fcd = 0;
+            }
+        }
+
+        int prevTrailCC = fcd & LAST_BYTE_MASK_;
+
+        if (prevTrailCC != 0) {
+            // The current char has a non-zero trailing CC. Scan forward until
+            // we find a char with a leading cc of zero.
+            while (true) {
+                m_source_.next();
+                int ch_int = m_source_.current();
+                if (ch_int == UCharacterIterator.DONE) {
+                    break;
+                }
+                ch = (char)ch_int;
+                // trie access
+                fcd = NormalizerImpl.getFCD16(ch);
+                if (fcd != 0 && UTF16.isLeadSurrogate(ch)) {
+                    m_source_.next();
+                    ch = (char)m_source_.current();
+                    if (UTF16.isTrailSurrogate(ch)) {
+                        fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, ch);
+                    } else {
+                        fcd = 0;
+                    }
+                }
+                int leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+                if (leadCC == 0) {
+                    // this is a base character, we stop the FCD checks
+                    break;
+                }
+
+                if (leadCC < prevTrailCC) {
+                    result = false;
+                }
+
+                prevTrailCC = fcd & LAST_BYTE_MASK_;
+            }
+        }
+        m_FCDLimit_ = m_source_.getIndex();
+        m_source_.setIndex(m_FCDStart_);
+        m_source_.next();
+        return result;
+    }
+
+    /**
+     * <p>Method tries to fetch the next character that is in fcd form.</p>
+     * <p>Normalization is done if required.</p>
+     * <p>Offsets are returned at the next character.</p>
+     * @return next fcd character
+     */
+    private int nextChar()
+    {
+        int result;
+
+        // loop handles the next character whether it is in the buffer or not.
+        if (m_bufferOffset_ < 0) {
+            // we're working on the source and not normalizing. fast path.
+            // note Thai pre-vowel reordering uses buffer too
+            result = m_source_.current();
+        }
+        else {
+            // we are in the buffer, buffer offset will never be 0 here
+            if (m_bufferOffset_ >= m_buffer_.length()) {
+                // Null marked end of buffer, revert to the source string and
+                // loop back to top to try again to get a character.
+                m_source_.setIndex(m_FCDLimit_);
+                m_bufferOffset_ = -1;
+                m_buffer_.setLength(0);
+                return nextChar();
+            }
+            return m_buffer_.charAt(m_bufferOffset_ ++);
+        }
+        int startoffset = m_source_.getIndex();
+        if (result < FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_
+            // Fast fcd safe path. trail combining class == 0.
+            || m_collator_.getDecomposition() == Collator.NO_DECOMPOSITION
+            || m_bufferOffset_ >= 0 || m_FCDLimit_ > startoffset) {
+            // skip the fcd checks
+            m_source_.next();
+            return result;
+        }
+
+        if (result < LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+            // We need to peek at the next character in order to tell if we are
+            // FCD
+            m_source_.next();
+            int next = m_source_.current();
+            if (next == UCharacterIterator.DONE
+                || next < LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+                return result; // end of source string and if next character
+                // starts with a base character is always fcd.
+            }
+        }
+
+        // Need a more complete FCD check and possible normalization.
+        if (!FCDCheck((char)result, startoffset)) {
+            normalize();
+            result = m_buffer_.charAt(0);
+            m_bufferOffset_ = 1;
+        }
+        return result;
+    }
+
+    /**
+     * <p>Incremental normalization, this is an essential optimization.
+     * Assuming FCD checks has been done, normalize the non-FCD characters into
+     * the buffer.
+     * Source offsets points to the current processing character.</p>
+     */
+    private void normalizeBackwards()
+    {
+        normalize();
+        m_bufferOffset_ = m_buffer_.length();
+    }
+
+    /**
+     * <p>Incremental backwards FCD check and normalization. Gets the previous
+     * base character position and determines if the in-between characters
+     * needs normalization.
+     * </p>
+     * <p>When entering, the state is known to be this:
+     * <ul>
+     * <li>We are working on source string, not the buffer.
+     * <li>The trailing combining class from the current character is 0 or the
+     *     leading combining class of the next char was zero.
+     * </ul>
+     * Input source offsets points to the previous character.
+     * Return source offsets points to the current processing character.
+     * </p>
+     * @param ch current character
+     * @param offset current character offset
+     * @return true if FCDCheck passes, false otherwise
+     */
+    private boolean FCDCheckBackwards(char ch, int offset)
+    {
+        boolean result = true;
+        char fcd = 0;
+        m_FCDLimit_ = offset + 1;
+        m_source_.setIndex(offset);
+        if (!UTF16.isSurrogate(ch)) {
+            fcd = NormalizerImpl.getFCD16(ch);
+        }
+        else if (UTF16.isTrailSurrogate(ch) && m_FCDLimit_ > 0) {
+            // note trail surrogate characters gets 0 fcd
+            char trailch = ch;
+            ch = (char)m_source_.previous();
+            if (UTF16.isLeadSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16(ch);
+                if (fcd != 0) {
+                    fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd,
+                                                                   trailch);
+                }
+            }
+            else {
+                fcd = 0; // unpaired surrogate
+            }
+        }
+
+        int leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+        // The current char has a non-zero leading combining class.
+        // Scan backward until we find a char with a trailing cc of zero.
+
+        while (leadCC != 0) {
+            offset = m_source_.getIndex();
+            if (offset == 0) {
+                break;
+            }
+            ch = (char)m_source_.previous();
+            if (!UTF16.isSurrogate(ch)) {
+                fcd = NormalizerImpl.getFCD16(ch);
+            }
+            else if (UTF16.isTrailSurrogate(ch) && m_source_.getIndex() > 0) {
+                char trail = ch;
+                ch = (char)m_source_.previous();
+                if (UTF16.isLeadSurrogate(ch)) {
+                    fcd = NormalizerImpl.getFCD16(ch);
+                }
+                if (fcd != 0) {
+                    fcd = NormalizerImpl.getFCD16FromSurrogatePair(fcd, trail);
+                }
+            }
+            else {
+                fcd = 0; // unpaired surrogate
+            }
+            int prevTrailCC = fcd & LAST_BYTE_MASK_;
+            if (leadCC < prevTrailCC) {
+                result = false;
+            }
+            leadCC = fcd >>> SECOND_LAST_BYTE_SHIFT_;
+        }
+
+        // storing character with 0 lead fcd or the 1st accent with a base
+        // character before it
+        if (fcd == 0) {
+            m_FCDStart_ = offset;
+        }
+        else {
+            m_FCDStart_ = m_source_.getIndex();
+        }
+        m_source_.setIndex(m_FCDLimit_);
+        return result;
+    }
+
+    /**
+     * <p>Method tries to fetch the previous character that is in fcd form.</p>
+     * <p>Normalization is done if required.</p>
+     * <p>Offsets are returned at the current character.</p>
+     * @return previous fcd character
+     */
+    private int previousChar()
+    {
+        if (m_bufferOffset_ >= 0) {
+            m_bufferOffset_ --;
+            if (m_bufferOffset_ >= 0) {
+                return m_buffer_.charAt(m_bufferOffset_);
+            }
+            else {
+                // At the start of buffer, route back to string.
+                m_buffer_.setLength(0);
+                if (m_FCDStart_ == 0) {
+                    m_FCDStart_ = -1;
+                    m_source_.setIndex(0);
+                    return UCharacterIterator.DONE;
+                }
+                else {
+                    m_FCDLimit_ = m_FCDStart_;
+                    m_source_.setIndex(m_FCDStart_);
+                    return previousChar();
+                }
+            }
+        }
+        int result = m_source_.previous();
+        int startoffset = m_source_.getIndex();
+        if (result < LEAD_ZERO_COMBINING_CLASS_FAST_LIMIT_
+            || m_collator_.getDecomposition() == Collator.NO_DECOMPOSITION
+            || m_FCDStart_ <= startoffset || m_source_.getIndex() == 0) {
+            return result;
+        }
+        int ch = m_source_.previous();
+        if (ch < FULL_ZERO_COMBINING_CLASS_FAST_LIMIT_) {
+            // if previous character is FCD
+            m_source_.next();
+            return result;
+        }
+        // Need a more complete FCD check and possible normalization.
+        if (!FCDCheckBackwards((char)result, startoffset)) {
+            normalizeBackwards();
+            m_bufferOffset_ --;
+            result = m_buffer_.charAt(m_bufferOffset_);
+        }
+        else {
+            // fcd checks alway reset m_source_ to the limit of the FCD
+            m_source_.setIndex(startoffset);
+        }
+        return result;
+    }
+
+    /**
+     * Determines if it is at the start of source iteration
+     * @return true if iterator at the start, false otherwise
+     */
+    private final boolean isBackwardsStart()
+    {
+        return (m_bufferOffset_ < 0 && m_source_.getIndex() == 0)
+            || (m_bufferOffset_ == 0 && m_FCDStart_ <= 0);
+    }
+
+    /**
+     * Checks if iterator is at the end of its source string.
+     * @return true if it is at the end, false otherwise
+     */
+    private final boolean isEnd()
+    {
+        if (m_bufferOffset_ >= 0) {
+            if (m_bufferOffset_ != m_buffer_.length()) {
+                return false;
+            }
+            else {
+                // at end of buffer. check if fcd is at the end
+                return m_FCDLimit_ == m_source_.getLength();
+            }
+        }
+        return m_source_.getLength() == m_source_.getIndex();
+    }
+
+    /**
+     * <p>Special CE management for surrogates</p>
+     * <p>Lead surrogate is encountered. CE to be retrieved by using the
+     * following code unit. If next character is a trail surrogate, both
+     * characters will be combined to retrieve the CE, otherwise completely
+     * ignorable (UCA specification) is returned.</p>
+     * @param collator collator to use
+     * @param ce current CE
+     * @param trail character
+     * @return next CE for the surrogate characters
+     */
+    private final int nextSurrogate(RuleBasedCollator collator, int ce,
+                                    char trail)
+    {
+        if (!UTF16.isTrailSurrogate(trail)) {
+            updateInternalState(m_utilSpecialBackUp_);
+            return IGNORABLE;
+        }
+        // TODO: CE contain the data from the previous CE + the mask.
+        // It should at least be unmasked
+        int result = collator.m_trie_.getTrailValue(ce, trail);
+        if (result == CE_NOT_FOUND_) {
+            updateInternalState(m_utilSpecialBackUp_);
+        }
+        return result;
+    }
+
+    /**
+     * Gets the CE expansion offset
+     * @param collator current collator
+     * @param ce ce to test
+     * @return expansion offset
+     */
+    private int getExpansionOffset(RuleBasedCollator collator, int ce)
+    {
+        return ((ce & 0xFFFFF0) >> 4) - collator.m_expansionOffset_;
+    }
+
+
+    /**
+     * Gets the contraction ce offset
+     * @param collator current collator
+     * @param ce current ce
+     * @return contraction offset
+     */
+    private int getContractionOffset(RuleBasedCollator collator, int ce)
+    {
+        return (ce & 0xFFFFFF) - collator.m_contractionOffset_;
+    }
+
+    /**
+     * Checks if CE is a special tag CE
+     * @param ce to check
+     * @return true if CE is a special tag CE, false otherwise
+     */
+    private boolean isSpecialPrefixTag(int ce)
+    {
+        return RuleBasedCollator.isSpecial(ce) &&
+            RuleBasedCollator.getTag(ce) == CE_SPEC_PROC_TAG_;
+    }
+
+    /**
+     * <p>Special processing getting a CE that is preceded by a certain
+     * prefix.</p>
+     * <p>Used for optimizing Japanese length and iteration marks. When a
+     * special processing tag is encountered, iterate backwards to see if
+     * there's a match.</p>
+     * <p>Contraction tables are used, prefix data is stored backwards in the
+     * table.</p>
+     * @param collator collator to use
+     * @param ce current ce
+     * @param entrybackup entry backup iterator status
+     * @return next collation element
+     */
+    private int nextSpecialPrefix(RuleBasedCollator collator, int ce,
+                                  Backup entrybackup)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        updateInternalState(entrybackup);
+        previousChar();
+        // We want to look at the character where we entered
+
+        while (true) {
+            // This loop will run once per source string character, for as
+            // long as we are matching a potential contraction sequence
+            // First we position ourselves at the begining of contraction
+            // sequence
+            int entryoffset = getContractionOffset(collator, ce);
+            int offset = entryoffset;
+            if (isBackwardsStart()) {
+                ce = collator.m_contractionCE_[offset];
+                break;
+            }
+            char previous = (char)previousChar();
+            while (previous > collator.m_contractionIndex_[offset]) {
+                // contraction characters are ordered, skip smaller characters
+                offset ++;
+            }
+
+            if (previous == collator.m_contractionIndex_[offset]) {
+                // Found the source string char in the table.
+                // Pick up the corresponding CE from the table.
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                // Source string char was not in the table, prefix not found
+                ce = collator.m_contractionCE_[entryoffset];
+            }
+
+            if (!isSpecialPrefixTag(ce)) {
+                // The source string char was in the contraction table, and
+                // the corresponding CE is not a prefix CE. We found the
+                // prefix, break out of loop, this CE will end up being
+                // returned. This is the normal way out of prefix handling
+                // when the source actually contained the prefix.
+                break;
+            }
+        }
+        if (ce != CE_NOT_FOUND_) {
+            // we found something and we can merilly continue
+            updateInternalState(m_utilSpecialBackUp_);
+        }
+        else { // prefix search was a failure, we have to backup all the way to
+            // the start
+            updateInternalState(entrybackup);
+        }
+        return ce;
+    }
+
+    /**
+     * Checks if the ce is a contraction tag
+     * @param ce ce to check
+     * @return true if ce is a contraction tag, false otherwise
+     */
+    private boolean isContractionTag(int ce)
+    {
+        return RuleBasedCollator.isSpecial(ce) &&
+            RuleBasedCollator.getTag(ce) == CE_CONTRACTION_TAG_;
+    }
+
+    /**
+     * Method to copy skipped characters into the buffer and sets the fcd
+     * position. To ensure that the skipped characters are considered later,
+     * we need to place it in the appropriate position in the buffer and
+     * reassign the source index. simple case if index reside in string,
+     * simply copy to buffer and fcdposition = pos, pos = start of buffer.
+     * if pos in normalization buffer, we'll insert the copy infront of pos
+     * and point pos to the start of the buffer. why am i doing these copies?
+     * well, so that the whole chunk of codes in the getNextCE,
+     * ucol_prv_getSpecialCE does not require any changes, which will be
+     * really painful.
+     * @param skipped character buffer
+     */
+    private void setDiscontiguous(StringBuffer skipped)
+    {
+        if (m_bufferOffset_ >= 0) {
+            m_buffer_.replace(0, m_bufferOffset_, skipped.toString());
+        }
+        else {
+            m_FCDLimit_ = m_source_.getIndex();
+            m_buffer_.setLength(0);
+            m_buffer_.append(skipped.toString());
+        }
+
+        m_bufferOffset_ = 0;
+    }
+
+    /**
+     * Returns the current character for forward iteration
+     * @return current character
+     */
+    private int currentChar()
+    {
+        if (m_bufferOffset_ < 0) {
+            m_source_.previous();
+            return m_source_.next();
+        }
+
+        // m_bufferOffset_ is never 0 in normal circumstances except after a
+        // discontiguous contraction since it is always returned and moved
+        // by 1 when we do nextChar()
+        return m_buffer_.charAt(m_bufferOffset_ - 1);
+    }
+
+    /**
+     * Method to get the discontiguous collation element within the source.
+     * Note this function will set the position to the appropriate places.
+     * Passed in character offset points to the second combining character
+     * after the start character.
+     * @param collator current collator used
+     * @param entryoffset index to the start character in the contraction table
+     * @return discontiguous collation element offset
+     */
+    private int nextDiscontiguous(RuleBasedCollator collator, int entryoffset)
+    {
+        int offset = entryoffset;
+        boolean multicontraction = false;
+        // since it will be stuffed into this iterator and ran over again
+        if (m_utilSkippedBuffer_ == null) {
+            m_utilSkippedBuffer_ = new StringBuffer();
+        }
+        else {
+            m_utilSkippedBuffer_.setLength(0);
+        }
+        char ch = (char)currentChar();
+        m_utilSkippedBuffer_.append((char)currentChar());
+        // accent after the first character
+        if (m_utilSpecialDiscontiguousBackUp_ == null) {
+            m_utilSpecialDiscontiguousBackUp_ = new Backup();
+        }
+        backupInternalState(m_utilSpecialDiscontiguousBackUp_);
+        char nextch = ch;
+        while (true) {
+            ch = nextch;
+            int ch_int = nextChar();
+            nextch = (char)ch_int;
+            if (ch_int == UCharacterIterator.DONE
+                || getCombiningClass(nextch) == 0) {
+                // if there are no more accents to move around
+                // we don't have to shift previousChar, since we are resetting
+                // the offset later
+                if (multicontraction) {
+                    if (ch_int != UCharacterIterator.DONE) {
+                        previousChar(); // backtrack
+                    }
+                    setDiscontiguous(m_utilSkippedBuffer_);
+                    return collator.m_contractionCE_[offset];
+                }
+                break;
+            }
+
+            offset ++; // skip the combining class offset
+            while ((offset < collator.m_contractionIndex_.length) &&
+                   (nextch > collator.m_contractionIndex_[offset])) {
+                offset ++;
+            }
+
+            int ce = CE_NOT_FOUND_;
+            if ( offset >= collator.m_contractionIndex_.length)  {
+                break;
+            }
+            if ( nextch != collator.m_contractionIndex_[offset]
+                 || getCombiningClass(nextch) == getCombiningClass(ch)) {
+                    // unmatched or blocked character
+                if ( (m_utilSkippedBuffer_.length()!= 1) ||
+                     ((m_utilSkippedBuffer_.charAt(0)!= nextch) &&
+                      (m_bufferOffset_<0) )) { // avoid push to skipped buffer twice
+                    m_utilSkippedBuffer_.append(nextch);
+                }
+                offset = entryoffset;  // Restore the offset before checking next character.
+                continue;
+            }
+            else {
+                ce = collator.m_contractionCE_[offset];
+            }
+
+            if (ce == CE_NOT_FOUND_) {
+                break;
+            }
+            else if (isContractionTag(ce)) {
+                // this is a multi-contraction
+                offset = getContractionOffset(collator, ce);
+                if (collator.m_contractionCE_[offset] != CE_NOT_FOUND_) {
+                    multicontraction = true;
+                    backupInternalState(m_utilSpecialDiscontiguousBackUp_);
+                }
+            }
+            else {
+                setDiscontiguous(m_utilSkippedBuffer_);
+                return ce;
+            }
+        }
+
+        updateInternalState(m_utilSpecialDiscontiguousBackUp_);
+        // backup is one forward of the base character, we need to move back
+        // one more
+        previousChar();
+        return collator.m_contractionCE_[entryoffset];
+    }
+
+    /**
+     * Gets the next contraction ce
+     * @param collator collator to use
+     * @param ce current ce
+     * @return ce of the next contraction
+     */
+    private int nextContraction(RuleBasedCollator collator, int ce)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        int entryce = collator.m_contractionCE_[getContractionOffset(collator, ce)]; //CE_NOT_FOUND_;
+        while (true) {
+            int entryoffset = getContractionOffset(collator, ce);
+            int offset = entryoffset;
+
+            if (isEnd()) {
+                ce = collator.m_contractionCE_[offset];
+                if (ce == CE_NOT_FOUND_) {
+                    // back up the source over all the chars we scanned going
+                    // into this contraction.
+                    ce = entryce;
+                    updateInternalState(m_utilSpecialBackUp_);
+                }
+                break;
+            }
+
+            // get the discontiguos maximum combining class
+            int maxCC = (collator.m_contractionIndex_[offset] & 0xFF);
+            // checks if all characters have the same combining class
+            byte allSame = (byte)(collator.m_contractionIndex_[offset] >> 8);
+            char ch = (char)nextChar();
+            offset ++;
+            while (ch > collator.m_contractionIndex_[offset]) {
+                // contraction characters are ordered, skip all smaller
+                offset ++;
+            }
+
+            if (ch == collator.m_contractionIndex_[offset]) {
+                // Found the source string char in the contraction table.
+                //  Pick up the corresponding CE from the table.
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                // Source string char was not in contraction table.
+                // Unless it is a discontiguous contraction, we are done
+                int miss = ch;
+                if(UTF16.isLeadSurrogate(ch)) { // in order to do the proper detection, we
+                    // need to see if we're dealing with a supplementary
+                    miss = UCharacterProperty.getRawSupplementary(ch, (char) nextChar());
+                  }
+                int sCC;
+                if (maxCC == 0 || (sCC = getCombiningClass(miss)) == 0
+                    || sCC > maxCC || (allSame != 0 && sCC == maxCC) ||
+                    isEnd()) {
+                    // Contraction can not be discontiguous, back up by one
+                    previousChar();
+                    if(miss > 0xFFFF) {
+                        previousChar();
+                    }
+                    ce = collator.m_contractionCE_[entryoffset];
+                }
+                else {
+                    // Contraction is possibly discontiguous.
+                    // find the next character if ch is not a base character
+                    int ch_int = nextChar();
+                    if (ch_int != UCharacterIterator.DONE) {
+                        previousChar();
+                    }
+                    char nextch = (char)ch_int;
+                    if (getCombiningClass(nextch) == 0) {
+                        previousChar();
+                        if(miss > 0xFFFF) {
+                            previousChar();
+                        }    
+                        // base character not part of discontiguous contraction
+                        ce = collator.m_contractionCE_[entryoffset];
+                    }
+                    else {
+                        ce = nextDiscontiguous(collator, entryoffset);
+                    }
+                }
+            }
+
+            if (ce == CE_NOT_FOUND_) {
+                // source did not match the contraction, revert back original
+                updateInternalState(m_utilSpecialBackUp_);
+                ce = entryce;
+                break;
+            }
+
+            // source was a contraction
+            if (!isContractionTag(ce)) {
+                break;
+            }
+
+            // ccontinue looping to check for the remaining contraction.
+            if (collator.m_contractionCE_[entryoffset] != CE_NOT_FOUND_) {
+                // there are further contractions to be performed, so we store
+                // the so-far completed ce, so that if we fail in the next
+                // round we just return this one.
+                entryce = collator.m_contractionCE_[entryoffset];
+                backupInternalState(m_utilSpecialBackUp_);
+                if (m_utilSpecialBackUp_.m_bufferOffset_ >= 0) {
+                    m_utilSpecialBackUp_.m_bufferOffset_ --;
+                }
+                else {
+                    m_utilSpecialBackUp_.m_offset_ --;
+                }
+            }
+        }
+        return ce;
+    }
+
+    /**
+     * Gets the next ce for long primaries, stuffs the rest of the collation
+     * elements into the ce buffer
+     * @param ce current ce
+     * @return next ce
+     */
+    private int nextLongPrimary(int ce)
+    {
+        m_CEBuffer_[1] = ((ce & 0xFF) << 24)
+            | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+        m_CEBufferOffset_ = 1;
+        m_CEBufferSize_ = 2;
+        m_CEBuffer_[0] = ((ce & 0xFFFF00) << 8) | (CE_BYTE_COMMON_ << 8) |
+            CE_BYTE_COMMON_;
+        return m_CEBuffer_[0];
+    }
+
+    /**
+     * Gets the number of expansion
+     * @param ce current ce
+     * @return number of expansion
+     */
+    private int getExpansionCount(int ce)
+    {
+        return ce & 0xF;
+    }
+
+    /**
+     * Gets the next expansion ce and stuffs the rest of the collation elements
+     * into the ce buffer
+     * @param collator current collator
+     * @param ce current ce
+     * @return next expansion ce
+     */
+    private int nextExpansion(RuleBasedCollator collator, int ce)
+    {
+        // NOTE: we can encounter both continuations and expansions in an
+        // expansion!
+        // I have to decide where continuations are going to be dealt with
+        int offset = getExpansionOffset(collator, ce);
+        m_CEBufferSize_ = getExpansionCount(ce);
+        m_CEBufferOffset_ = 1;
+        m_CEBuffer_[0] = collator.m_expansion_[offset];
+        if (m_CEBufferSize_ != 0) {
+            // if there are less than 16 elements in expansion
+            for (int i = 1; i < m_CEBufferSize_; i ++) {
+                m_CEBuffer_[i] = collator.m_expansion_[offset + i];
+            }
+        }
+        else {
+            // ce are terminated
+            m_CEBufferSize_ = 1;
+            while (collator.m_expansion_[offset] != 0) {
+                m_CEBuffer_[m_CEBufferSize_ ++] =
+                    collator.m_expansion_[++ offset];
+            }
+        }
+        // in case of one element expansion, we 
+        // want to immediately return CEpos
+        if (m_CEBufferSize_ == 1) {
+            m_CEBufferSize_ = 0;
+            m_CEBufferOffset_ = 0;
+        }
+        return m_CEBuffer_[0];
+    }
+    
+    /**
+     * Gets the next digit ce
+     * @param collator current collator
+     * @param ce current collation element
+     * @param cp current codepoint
+     * @return next digit ce
+     */
+    private int nextDigit(RuleBasedCollator collator, int ce, int cp)
+    {
+        // We do a check to see if we want to collate digits as numbers; 
+        // if so we generate a custom collation key. Otherwise we pull out 
+        // the value stored in the expansion table.
+
+        if (m_collator_.m_isNumericCollation_){
+            int collateVal = 0;
+            int trailingZeroIndex = 0;
+            boolean nonZeroValReached = false;
+
+            // I just need a temporary place to store my generated CEs.
+            // icu4c uses a unsigned byte array, i'll use a stringbuffer here
+            // to avoid dealing with the sign problems and array allocation
+            // clear and set initial string buffer length
+            m_utilStringBuffer_.setLength(3);
+        
+            // We parse the source string until we hit a char that's NOT a 
+            // digit.
+            // Use this u_charDigitValue. This might be slow because we have 
+            // to handle surrogates...
+            int digVal = UCharacter.digit(cp); 
+            // if we have arrived here, we have already processed possible 
+            // supplementaries that trigered the digit tag -
+            // all supplementaries are marked in the UCA.
+            // We  pad a zero in front of the first element anyways. 
+            // This takes care of the (probably) most common case where 
+            // people are sorting things followed by a single digit
+            int digIndx = 1;
+            for (;;) {
+                // Make sure we have enough space.
+                if (digIndx >= ((m_utilStringBuffer_.length() - 2) << 1)) {
+                    m_utilStringBuffer_.setLength(m_utilStringBuffer_.length() 
+                                                  << 1);
+                }
+                // Skipping over leading zeroes.        
+                if (digVal != 0 || nonZeroValReached) {
+                    if (digVal != 0 && !nonZeroValReached) {
+                        nonZeroValReached = true;
+                    }    
+                    // We parse the digit string into base 100 numbers 
+                    // (this fits into a byte).
+                    // We only add to the buffer in twos, thus if we are 
+                    // parsing an odd character, that serves as the 
+                    // 'tens' digit while the if we are parsing an even 
+                    // one, that is the 'ones' digit. We dumped the 
+                    // parsed base 100 value (collateVal) into a buffer. 
+                    // We multiply each collateVal by 2 (to give us room) 
+                    // and add 5 (to avoid overlapping magic CE byte 
+                    // values). The last byte we subtract 1 to ensure it is 
+                    // less than all the other bytes.
+                    if (digIndx % 2 == 1) {
+                        collateVal += digVal;  
+                        // This removes trailing zeroes.
+                        if (collateVal == 0 && trailingZeroIndex == 0) {
+                            trailingZeroIndex = ((digIndx - 1) >>> 1) + 2;
+                        }
+                        else if (trailingZeroIndex != 0) {
+                            trailingZeroIndex = 0;
+                        }
+                        m_utilStringBuffer_.setCharAt(
+                                            ((digIndx - 1) >>> 1) + 2,
+                                            (char)((collateVal << 1) + 6));
+                        collateVal = 0;
+                    }
+                    else {
+                        // We drop the collation value into the buffer so if 
+                        // we need to do a "front patch" we don't have to 
+                        // check to see if we're hitting the last element.
+                        collateVal = digVal * 10;
+                        m_utilStringBuffer_.setCharAt((digIndx >>> 1) + 2, 
+                                                (char)((collateVal << 1) + 6));
+                    }
+                    digIndx ++;
+                }
+            
+                // Get next character.
+                if (!isEnd()){
+                    backupInternalState(m_utilSpecialBackUp_);
+                    int char32 = nextChar();
+                    char ch = (char)char32;
+                    if (UTF16.isLeadSurrogate(ch)){
+                        if (!isEnd()) {
+                            char trail = (char)nextChar();
+                            if (UTF16.isTrailSurrogate(trail)) {
+                               char32 = UCharacterProperty.getRawSupplementary(
+                                                                   ch, trail);
+                            } 
+                            else {
+                                goBackOne();
+                            }
+                        }
+                    }
+                    
+                    digVal = UCharacter.digit(char32);
+                    if (digVal == -1) {
+                        // Resetting position to point to the next unprocessed 
+                        // char. We overshot it when doing our test/set for 
+                        // numbers.
+                        updateInternalState(m_utilSpecialBackUp_);
+                        break;
+                    }
+                } 
+                else {
+                    break;
+                }
+            }
+        
+            if (nonZeroValReached == false){
+                digIndx = 2;
+                m_utilStringBuffer_.setCharAt(2, (char)6);
+            }
+        
+            int endIndex = trailingZeroIndex != 0 ? trailingZeroIndex 
+                                             : (digIndx >>> 1) + 2;              
+            if (digIndx % 2 != 0){
+                // We missed a value. Since digIndx isn't even, stuck too many 
+                // values into the buffer (this is what we get for padding the 
+                // first byte with a zero). "Front-patch" now by pushing all 
+                // nybbles forward.
+                // Doing it this way ensures that at least 50% of the time 
+                // (statistically speaking) we'll only be doing a single pass 
+                // and optimizes for strings with single digits. I'm just 
+                // assuming that's the more common case.
+                for (int i = 2; i < endIndex; i ++){
+                    m_utilStringBuffer_.setCharAt(i, 
+                        (char)((((((m_utilStringBuffer_.charAt(i) - 6) >>> 1) 
+                                  % 10) * 10) 
+                                 + (((m_utilStringBuffer_.charAt(i + 1) - 6) 
+                                      >>> 1) / 10) << 1) + 6));
+                }
+                -- digIndx;
+            }
+        
+            // Subtract one off of the last byte. 
+            m_utilStringBuffer_.setCharAt(endIndex - 1, 
+                         (char)(m_utilStringBuffer_.charAt(endIndex - 1) - 1));            
+                
+            // We want to skip over the first two slots in the buffer. 
+            // The first slot is reserved for the header byte CODAN_PLACEHOLDER. 
+            // The second slot is for the sign/exponent byte: 
+            // 0x80 + (decimalPos/2) & 7f.
+            m_utilStringBuffer_.setCharAt(0, (char)RuleBasedCollator.CODAN_PLACEHOLDER);
+            m_utilStringBuffer_.setCharAt(1, 
+                                     (char)(0x80 + ((digIndx >>> 1) & 0x7F)));
+        
+            // Now transfer the collation key to our collIterate struct.
+            // The total size for our collation key is endIndx bumped up to the next largest even value divided by two.
+            ce = (((m_utilStringBuffer_.charAt(0) << 8)
+                       // Primary weight 
+                       | m_utilStringBuffer_.charAt(1)) 
+                                    << RuleBasedCollator.CE_PRIMARY_SHIFT_)
+                       //  Secondary weight 
+                       | (RuleBasedCollator.BYTE_COMMON_ 
+                          << RuleBasedCollator.CE_SECONDARY_SHIFT_) 
+                       | RuleBasedCollator.BYTE_COMMON_; // Tertiary weight.
+            int i = 2; // Reset the index into the buffer.
+            
+            m_CEBuffer_[0] = ce;
+            m_CEBufferSize_ = 1;
+            m_CEBufferOffset_ = 1;
+            while (i < endIndex)
+            {
+                int primWeight = m_utilStringBuffer_.charAt(i ++) << 8;
+                if (i < endIndex) {
+                    primWeight |= m_utilStringBuffer_.charAt(i ++);
+                }
+                m_CEBuffer_[m_CEBufferSize_ ++] 
+                    = (primWeight << RuleBasedCollator.CE_PRIMARY_SHIFT_) 
+                      | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+            }
+            return ce;
+        } 
+        
+        // no numeric mode, we'll just switch to whatever we stashed and 
+        // continue
+        // find the offset to expansion table
+        return collator.m_expansion_[getExpansionOffset(collator, ce)];
+    }
+
+    /**
+     * Gets the next implicit ce for codepoints
+     * @param codepoint current codepoint
+     * @return implicit ce
+     */
+    private int nextImplicit(int codepoint)
+    {
+        if (!UCharacter.isLegal(codepoint)) {
+            // synwee to check with vladimir on the range of isNonChar()
+            // illegal code value, use completely ignoreable!
+            return IGNORABLE;
+        }
+        int result = RuleBasedCollator.impCEGen_.getImplicitFromCodePoint(codepoint);
+        m_CEBuffer_[0] = (result & RuleBasedCollator.CE_PRIMARY_MASK_)
+                         | 0x00000505;
+        m_CEBuffer_[1] = ((result & 0x0000FFFF) << 16) | 0x000000C0;
+        m_CEBufferOffset_ = 1;
+        m_CEBufferSize_ = 2;
+        return m_CEBuffer_[0];
+    }
+
+    /**
+     * Returns the next ce associated with the following surrogate characters
+     * @param ch current character
+     * @return ce
+     */
+    private int nextSurrogate(char ch)
+    {
+        int ch_int = nextChar();
+        char nextch = (char)ch_int;
+        if (ch_int != CharacterIterator.DONE &&
+            UTF16.isTrailSurrogate(nextch)) {
+            int codepoint = UCharacterProperty.getRawSupplementary(ch, nextch);
+            return nextImplicit(codepoint);
+        }
+        if (nextch != CharacterIterator.DONE) {
+            previousChar(); // reverts back to the original position
+        }
+        return IGNORABLE; // completely ignorable
+    }
+
+    /**
+     * Returns the next ce for a hangul character, this is an implicit
+     * calculation
+     * @param collator current collator
+     * @param ch current character
+     * @return hangul ce
+     */
+    private int nextHangul(RuleBasedCollator collator, char ch)
+    {
+        char L = (char)(ch - HANGUL_SBASE_);
+
+        // divide into pieces
+        // do it in this order since some compilers can do % and / in one
+        // operation
+        char T = (char)(L % HANGUL_TCOUNT_);
+        L /= HANGUL_TCOUNT_;
+        char V = (char)(L % HANGUL_VCOUNT_);
+        L /= HANGUL_VCOUNT_;
+
+        // offset them
+        L += HANGUL_LBASE_;
+        V += HANGUL_VBASE_;
+        T += HANGUL_TBASE_;
+
+        // return the first CE, but first put the rest into the expansion
+        // buffer
+        m_CEBufferSize_ = 0;
+        if (!collator.m_isJamoSpecial_) { // FAST PATH
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(L);
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(V);
+
+            if (T != HANGUL_TBASE_) {
+                m_CEBuffer_[m_CEBufferSize_ ++] =
+                    collator.m_trie_.getLeadValue(T);
+            }
+            m_CEBufferOffset_ = 1;
+            return m_CEBuffer_[0];
+        }
+        else {
+            // Jamo is Special
+            // Since Hanguls pass the FCD check, it is guaranteed that we
+            // won't be in the normalization buffer if something like this
+            // happens
+            // Move Jamos into normalization buffer
+            m_buffer_.append((char)L);
+            m_buffer_.append((char)V);
+            if (T != HANGUL_TBASE_) {
+                m_buffer_.append((char)T);
+            }
+            m_FCDLimit_ = m_source_.getIndex();
+            m_FCDStart_ = m_FCDLimit_ - 1;
+            // Indicate where to continue in main input string after
+            // exhausting the buffer
+            return IGNORABLE;
+        }
+    }
+
+    /**
+     * <p>Special CE management. Expansions, contractions etc...</p>
+     * @param collator can be plain UCA
+     * @param ce current ce
+     * @param ch current character
+     * @return next special ce
+     */
+    private int nextSpecial(RuleBasedCollator collator, int ce, char ch)
+    {
+        int codepoint = ch;
+        Backup entrybackup = m_utilSpecialEntryBackUp_;
+        // this is to handle recursive looping
+        if (entrybackup != null) {
+            m_utilSpecialEntryBackUp_ = null;
+        }
+        else {
+            entrybackup = new Backup();
+        }
+        backupInternalState(entrybackup);
+        try { // forces it to assign m_utilSpecialEntryBackup_
+            while (true) {
+                // This loop will repeat only in the case of contractions,
+                // surrogate
+                switch(RuleBasedCollator.getTag(ce)) {
+                case CE_NOT_FOUND_TAG_:
+                    // impossible case for icu4j
+                    return ce;
+                case RuleBasedCollator.CE_SURROGATE_TAG_:
+                    if (isEnd()) {
+                        return IGNORABLE;
+                    }
+                    backupInternalState(m_utilSpecialBackUp_);
+                    char trail = (char)nextChar();
+                    ce = nextSurrogate(collator, ce, trail);
+                    // calculate the supplementary code point value,
+                    // if surrogate was not tailored we go one more round
+                    codepoint =
+                        UCharacterProperty.getRawSupplementary(ch, trail);
+                    break;
+                case CE_SPEC_PROC_TAG_:
+                    ce = nextSpecialPrefix(collator, ce, entrybackup);
+                    break;
+                case CE_CONTRACTION_TAG_:
+                    ce = nextContraction(collator, ce);
+                    break;
+                case CE_LONG_PRIMARY_TAG_:
+                    return nextLongPrimary(ce);
+                case CE_EXPANSION_TAG_:
+                    return nextExpansion(collator, ce);
+                case CE_DIGIT_TAG_:
+                    ce = nextDigit(collator, ce, codepoint);
+                    break;
+                    // various implicits optimization
+                case CE_CJK_IMPLICIT_TAG_:
+                    // 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+                    return nextImplicit(codepoint);
+                case CE_IMPLICIT_TAG_: // everything that is not defined
+                    return nextImplicit(codepoint);
+                case CE_TRAIL_SURROGATE_TAG_:
+                    return IGNORABLE; // DC00-DFFF broken surrogate
+                case CE_LEAD_SURROGATE_TAG_:  // D800-DBFF
+                    return nextSurrogate(ch);
+                case CE_HANGUL_SYLLABLE_TAG_: // AC00-D7AF
+                    return nextHangul(collator, ch);
+                case CE_CHARSET_TAG_:
+                                    // not yet implemented probably after 1.8
+                    return CE_NOT_FOUND_;
+                default:
+                    ce = IGNORABLE;
+                    // synwee todo, throw exception or something here.
+                }
+                if (!RuleBasedCollator.isSpecial(ce)) {
+                    break;
+                }
+            }
+        } 
+        finally {
+            m_utilSpecialEntryBackUp_ = entrybackup;
+        }
+        return ce;
+    }
+
+    /**
+     * Special processing is getting a CE that is preceded by a certain prefix.
+     * Currently this is only needed for optimizing Japanese length and
+     * iteration marks. When we encouter a special processing tag, we go
+     * backwards and try to see if we have a match. Contraction tables are used
+     * - so the whole process is not unlike contraction. prefix data is stored
+     * backwards in the table.
+     * @param collator current collator
+     * @param ce current ce
+     * @return previous ce
+     */
+    private int previousSpecialPrefix(RuleBasedCollator collator, int ce)
+    {
+        backupInternalState(m_utilSpecialBackUp_);
+        while (true) {
+            // position ourselves at the begining of contraction sequence
+            int offset = getContractionOffset(collator, ce);
+            int entryoffset = offset;
+            if (isBackwardsStart()) {
+                ce = collator.m_contractionCE_[offset];
+                break;
+            }
+            char prevch = (char)previousChar();
+            while (prevch > collator.m_contractionIndex_[offset]) {
+                // since contraction codepoints are ordered, we skip all that
+                // are smaller
+                offset ++;
+            }
+            if (prevch == collator.m_contractionIndex_[offset]) {
+                ce = collator.m_contractionCE_[offset];
+            }
+            else {
+                // if there is a completely ignorable code point in the middle
+                // of a prefix, we need to act as if it's not there assumption:
+                // 'real' noncharacters (*fffe, *ffff, fdd0-fdef are set to
+                // zero)
+                // lone surrogates cannot be set to zero as it would break
+                // other processing
+                int isZeroCE = collator.m_trie_.getLeadValue(prevch);
+                // it's easy for BMP code points
+                if (isZeroCE == 0) {
+                    continue;
+                }
+                else if (UTF16.isTrailSurrogate(prevch)
+                         || UTF16.isLeadSurrogate(prevch)) {
+                    // for supplementary code points, we have to check the next one
+                    // situations where we are going to ignore
+                    // 1. beginning of the string: schar is a lone surrogate
+                    // 2. schar is a lone surrogate
+                    // 3. schar is a trail surrogate in a valid surrogate
+                    //    sequence that is explicitly set to zero.
+                    if (!isBackwardsStart()) {
+                        char lead = (char)previousChar();
+                        if (UTF16.isLeadSurrogate(lead)) {
+                            isZeroCE = collator.m_trie_.getLeadValue(lead);
+                            if (RuleBasedCollator.getTag(isZeroCE)
+                                == RuleBasedCollator.CE_SURROGATE_TAG_) {
+                                int finalCE = collator.m_trie_.getTrailValue(
+                                                                      isZeroCE,
+                                                                      prevch);
+                                if (finalCE == 0) {
+                                    // this is a real, assigned completely
+                                    // ignorable code point
+                                    continue;
+                                }
+                            }
+                        }
+                        else {
+                            nextChar(); // revert to original offset
+                            // lone surrogate, completely ignorable
+                            continue;
+                        }
+                        nextChar(); // revert to original offset
+                    }
+                    else {
+                         // lone surrogate at the beggining, completely ignorable
+                         continue;
+                    }
+                }
+
+                // char was not in the table. prefix not found
+                ce = collator.m_contractionCE_[entryoffset];
+            }
+
+            if (!isSpecialPrefixTag(ce)) {
+                // char was in the contraction table, and the corresponding ce
+                // is not a prefix ce.  We found the prefix, break out of loop,
+                // this ce will end up being returned.
+                break;
+            }
+        }
+        updateInternalState(m_utilSpecialBackUp_);
+        return ce;
+    }
+
+    /**
+     * Retrieves the previous contraction ce. To ensure that the backwards and
+     * forwards iteration matches, we take the current region of most possible
+     * match and pass it through the forward iteration. This will ensure that
+     * the obstinate problem of overlapping contractions will not occur.
+     * @param collator current collator
+     * @param ce current ce
+     * @param ch current character
+     * @return previous contraction ce
+     */
+    private int previousContraction(RuleBasedCollator collator, int ce, char ch)
+    {
+        m_utilStringBuffer_.setLength(0);
+        // since we might encounter normalized characters (from the thai
+        // processing) we can't use peekCharacter() here.
+        char prevch = (char)previousChar();
+        boolean atStart = false;
+        // TODO: address the comment above - maybe now we *can* use peekCharacter
+        //while (collator.isUnsafe(ch) || isThaiPreVowel(prevch)) {
+        while (collator.isUnsafe(ch)) {
+            m_utilStringBuffer_.insert(0, ch);
+            ch = prevch;
+            if (isBackwardsStart()) {
+                atStart = true;
+                break;
+            }
+            prevch = (char)previousChar();
+        }
+        if (!atStart) {
+            // undo the previousChar() if we didn't reach the beginning 
+            nextChar();
+        }
+        // adds the initial base character to the string
+        m_utilStringBuffer_.insert(0, ch);
+
+        // a new collation element iterator is used to simply things, since
+        // using the current collation element iterator will mean that the
+        // forward and backwards iteration will share and change the same
+        // buffers. it is going to be painful.
+        int originaldecomp = collator.getDecomposition();
+        // for faster access, since string would have been normalized above
+        collator.setDecomposition(Collator.NO_DECOMPOSITION);
+        if (m_utilColEIter_ == null) {
+            m_utilColEIter_ = new CollationElementIterator(
+                                                m_utilStringBuffer_.toString(),
+                                                collator);
+        }
+        else {
+            m_utilColEIter_.m_collator_ = collator;
+            m_utilColEIter_.setText(m_utilStringBuffer_.toString());
+        }
+        ce = m_utilColEIter_.next();
+        m_CEBufferSize_ = 0;
+        while (ce != NULLORDER) {
+            if (m_CEBufferSize_ == m_CEBuffer_.length) {
+                try {
+                    // increasing cebuffer size
+                    int tempbuffer[] = new int[m_CEBuffer_.length + 50];
+                    System.arraycopy(m_CEBuffer_, 0, tempbuffer, 0,
+                                     m_CEBuffer_.length);
+                    m_CEBuffer_ = tempbuffer;
+                }
+                catch( MissingResourceException e)
+                {
+                    throw e;
+                }
+                catch (Exception e) {
+                    if(DEBUG){
+                        e.printStackTrace();
+                    }
+                    return NULLORDER;
+                }
+            }
+            m_CEBuffer_[m_CEBufferSize_ ++] = ce;
+            ce = m_utilColEIter_.next();
+        }
+        collator.setDecomposition(originaldecomp);
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+
+    /**
+     * Returns the previous long primary ces
+     * @param ce long primary ce
+     * @return previous long primary ces
+     */
+    private int previousLongPrimary(int ce)
+    {
+        m_CEBufferSize_ = 0;
+        m_CEBuffer_[m_CEBufferSize_ ++] =
+            ((ce & 0xFFFF00) << 8) | (CE_BYTE_COMMON_ << 8) | CE_BYTE_COMMON_;
+        m_CEBuffer_[m_CEBufferSize_ ++] = ((ce & 0xFF) << 24)
+            | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+
+    /**
+     * Returns the previous expansion ces
+     * @param collator current collator
+     * @param ce current ce
+     * @return previous expansion ce
+     */
+    private int previousExpansion(RuleBasedCollator collator, int ce)
+    {
+        // find the offset to expansion table
+        int offset = getExpansionOffset(collator, ce);
+        m_CEBufferSize_ = getExpansionCount(ce);
+        if (m_CEBufferSize_ != 0) {
+            // less than 16 elements in expansion
+            for (int i = 0; i < m_CEBufferSize_; i ++) {
+                m_CEBuffer_[i] = collator.m_expansion_[offset + i];
+            }
+
+        }
+        else {
+            // null terminated ces
+            while (collator.m_expansion_[offset + m_CEBufferSize_] != 0) {
+                m_CEBuffer_[m_CEBufferSize_] =
+                    collator.m_expansion_[offset + m_CEBufferSize_];
+                m_CEBufferSize_ ++;
+            }
+        }
+        m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+        return m_CEBuffer_[m_CEBufferOffset_];
+    }
+    
+    /**
+     * Getting the digit collation elements
+     * @param collator
+     * @param ce current collation element
+     * @param ch current code point
+     * @return digit collation element
+     */
+    private int previousDigit(RuleBasedCollator collator, int ce, char ch)
+    {
+        // We do a check to see if we want to collate digits as numbers; if so we generate
+        //  a custom collation key. Otherwise we pull out the value stored in the expansion table.
+        if (m_collator_.m_isNumericCollation_){
+            int leadingZeroIndex = 0;
+            int collateVal = 0;
+            boolean nonZeroValReached = false;
+
+            // clear and set initial string buffer length
+            m_utilStringBuffer_.setLength(3);
+        
+            // We parse the source string until we hit a char that's NOT a digit
+            // Use this u_charDigitValue. This might be slow because we have to 
+            // handle surrogates...
+            int char32 = ch;
+            if (UTF16.isTrailSurrogate(ch)) {
+                if (!isBackwardsStart()){
+                    char lead = (char)previousChar();
+                    if (UTF16.isLeadSurrogate(lead)) {
+                        char32 = UCharacterProperty.getRawSupplementary(lead,
+                                                                        ch);
+                    } 
+                    else {
+                        goForwardOne();
+                    }
+                }
+            } 
+            int digVal = UCharacter.digit(char32);
+            int digIndx = 0;
+            for (;;) {
+                // Make sure we have enough space.
+                if (digIndx >= ((m_utilStringBuffer_.length() - 2) << 1)) {
+                    m_utilStringBuffer_.setLength(m_utilStringBuffer_.length() 
+                                                  << 1);
+                }
+                // Skipping over "trailing" zeroes but we still add to digIndx.
+                if (digVal != 0 || nonZeroValReached) {
+                    if (digVal != 0 && !nonZeroValReached) {
+                        nonZeroValReached = true;
+                    }
+                
+                    // We parse the digit string into base 100 numbers (this 
+                    // fits into a byte).
+                    // We only add to the buffer in twos, thus if we are 
+                    // parsing an odd character, that serves as the 'tens' 
+                    // digit while the if we are parsing an even one, that is 
+                    // the 'ones' digit. We dumped the parsed base 100 value 
+                    // (collateVal) into a buffer. We multiply each collateVal 
+                    // by 2 (to give us room) and add 5 (to avoid overlapping 
+                    // magic CE byte values). The last byte we subtract 1 to 
+                    // ensure it is less than all the other bytes. 
+                    // Since we're doing in this reverse we want to put the 
+                    // first digit encountered into the ones place and the 
+                    // second digit encountered into the tens place.
+                
+                    if (digIndx % 2 == 1){
+                        collateVal += digVal * 10;
+                    
+                        // This removes leading zeroes.
+                        if (collateVal == 0 && leadingZeroIndex == 0) {
+                           leadingZeroIndex = ((digIndx - 1) >>> 1) + 2;
+                        }
+                        else if (leadingZeroIndex != 0) {
+                            leadingZeroIndex = 0;
+                        }
+                                            
+                        m_utilStringBuffer_.setCharAt(((digIndx - 1) >>> 1) + 2, 
+                                                (char)((collateVal << 1) + 6));
+                        collateVal = 0;
+                    }
+                    else {
+                        collateVal = digVal;    
+                    }
+                }
+                digIndx ++;
+            
+                if (!isBackwardsStart()){
+                    backupInternalState(m_utilSpecialBackUp_);
+                    char32 = previousChar();
+                    ch = (char)ch;
+                    if (UTF16.isTrailSurrogate(ch)){
+                        if (!isBackwardsStart()) {
+                            char lead = (char)previousChar();
+                            if (UTF16.isLeadSurrogate(lead)) {
+                                char32 
+                                    = UCharacterProperty.getRawSupplementary(
+                                                                    lead, ch);
+                            } 
+                            else {
+                                updateInternalState(m_utilSpecialBackUp_);
+                            }
+                        }
+                    }
+                    
+                    digVal = UCharacter.digit(char32);
+                    if (digVal == -1) {
+                        updateInternalState(m_utilSpecialBackUp_);
+                        break;
+                    }
+                }
+                else {
+                    break;
+                }
+            }
+
+            if (nonZeroValReached == false) {
+                digIndx = 2;
+                m_utilStringBuffer_.setCharAt(2, (char)6);
+            }
+            
+            if (digIndx % 2 != 0) {
+                if (collateVal == 0 && leadingZeroIndex == 0) {
+                    // This removes the leading 0 in a odd number sequence of 
+                    // numbers e.g. avery001
+                    leadingZeroIndex = ((digIndx - 1) >>> 1) + 2;
+                }
+                else {
+                    // this is not a leading 0, we add it in
+                    m_utilStringBuffer_.setCharAt((digIndx >>> 1) + 2,
+                                                (char)((collateVal << 1) + 6));
+                    digIndx ++; 
+                }               
+            }
+                     
+            int endIndex = leadingZeroIndex != 0 ? leadingZeroIndex 
+                                               : ((digIndx >>> 1) + 2) ;  
+            digIndx = ((endIndex - 2) << 1) + 1; // removing initial zeros         
+            // Subtract one off of the last byte. 
+            // Really the first byte here, but it's reversed...
+            m_utilStringBuffer_.setCharAt(2, 
+                                    (char)(m_utilStringBuffer_.charAt(2) - 1));          
+            // We want to skip over the first two slots in the buffer. 
+            // The first slot is reserved for the header byte CODAN_PLACEHOLDER. 
+            // The second slot is for the sign/exponent byte: 
+            // 0x80 + (decimalPos/2) & 7f.
+            m_utilStringBuffer_.setCharAt(0, (char)RuleBasedCollator.CODAN_PLACEHOLDER);
+            m_utilStringBuffer_.setCharAt(1, 
+                                    (char)(0x80 + ((digIndx >>> 1) & 0x7F)));
+        
+            // Now transfer the collation key to our collIterate struct.
+            // The total size for our collation key is endIndx bumped up to the 
+            // next largest even value divided by two.
+            m_CEBufferSize_ = 0;
+            m_CEBuffer_[m_CEBufferSize_ ++] 
+                        = (((m_utilStringBuffer_.charAt(0) << 8)
+                            // Primary weight 
+                            | m_utilStringBuffer_.charAt(1)) 
+                              << RuleBasedCollator.CE_PRIMARY_SHIFT_)
+                            // Secondary weight 
+                            | (RuleBasedCollator.BYTE_COMMON_ 
+                               << RuleBasedCollator.CE_SECONDARY_SHIFT_)
+                            // Tertiary weight. 
+                            | RuleBasedCollator.BYTE_COMMON_; 
+             int i = endIndex - 1; // Reset the index into the buffer.
+             while (i >= 2) {
+                int primWeight = m_utilStringBuffer_.charAt(i --) << 8;
+                if (i >= 2) {
+                    primWeight |= m_utilStringBuffer_.charAt(i --);
+                }
+                m_CEBuffer_[m_CEBufferSize_ ++] 
+                    = (primWeight << RuleBasedCollator.CE_PRIMARY_SHIFT_) 
+                      | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+             }
+             m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+             return m_CEBuffer_[m_CEBufferOffset_];
+         }
+         else {
+             return collator.m_expansion_[getExpansionOffset(collator, ce)];
+         }
+    } 
+
+    /**
+     * Returns previous hangul ces
+     * @param collator current collator
+     * @param ch current character
+     * @return previous hangul ce
+     */
+    private int previousHangul(RuleBasedCollator collator, char ch)
+    {
+        char L = (char)(ch - HANGUL_SBASE_);
+        // we do it in this order since some compilers can do % and / in one
+        // operation
+        char T = (char)(L % HANGUL_TCOUNT_);
+        L /= HANGUL_TCOUNT_;
+        char V = (char)(L % HANGUL_VCOUNT_);
+        L /= HANGUL_VCOUNT_;
+
+        // offset them
+        L += HANGUL_LBASE_;
+        V += HANGUL_VBASE_;
+        T += HANGUL_TBASE_;
+
+        m_CEBufferSize_ = 0;
+        if (!collator.m_isJamoSpecial_) {
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(L);
+            m_CEBuffer_[m_CEBufferSize_ ++] =
+                collator.m_trie_.getLeadValue(V);
+            if (T != HANGUL_TBASE_) {
+                m_CEBuffer_[m_CEBufferSize_ ++] =
+                    collator.m_trie_.getLeadValue(T);
+            }
+            m_CEBufferOffset_ = m_CEBufferSize_ - 1;
+            return m_CEBuffer_[m_CEBufferOffset_];
+        }
+        else {
+            // Since Hanguls pass the FCD check, it is guaranteed that we won't
+            // be in the normalization buffer if something like this happens
+            // Move Jamos into normalization buffer
+            m_buffer_.append(L);
+            m_buffer_.append(V);
+            if (T != HANGUL_TBASE_) {
+                m_buffer_.append(T);
+            }
+
+            m_FCDStart_ = m_source_.getIndex();
+            m_FCDLimit_ = m_FCDStart_ + 1;
+            return IGNORABLE;
+        }
+    }
+
+    /**
+     * Gets implicit codepoint ces
+     * @param codepoint current codepoint
+     * @return implicit codepoint ces
+     */
+    private int previousImplicit(int codepoint)
+    {
+        if (!UCharacter.isLegal(codepoint)) {
+            return IGNORABLE; // illegal code value, completely ignoreable!
+        }
+        int result = RuleBasedCollator.impCEGen_.getImplicitFromCodePoint(codepoint);
+        m_CEBufferSize_ = 2;
+        m_CEBufferOffset_ = 1;
+        m_CEBuffer_[0] = (result & RuleBasedCollator.CE_PRIMARY_MASK_)
+                         | 0x00000505;
+        m_CEBuffer_[1] = ((result & 0x0000FFFF) << 16) | 0x000000C0;
+        return m_CEBuffer_[1];
+    }
+
+    /**
+     * Gets the previous surrogate ce
+     * @param ch current character
+     * @return previous surrogate ce
+     */
+    private int previousSurrogate(char ch)
+    {
+        if (isBackwardsStart()) {
+            // we are at the start of the string, wrong place to be at
+            return IGNORABLE;
+        }
+        char prevch = (char)previousChar();
+        // Handles Han and Supplementary characters here.
+        if (UTF16.isLeadSurrogate(prevch)) {
+            return previousImplicit(
+                          UCharacterProperty.getRawSupplementary(prevch, ch));
+        }
+        if (prevch != CharacterIterator.DONE) {
+            nextChar();
+        }
+        return IGNORABLE; // completely ignorable
+    }
+
+    /**
+     * <p>Special CE management. Expansions, contractions etc...</p>
+     * @param collator can be plain UCA
+     * @param ce current ce
+     * @param ch current character
+     * @return previous special ce
+     */
+    private int previousSpecial(RuleBasedCollator collator, int ce, char ch)
+    {
+        while(true) {
+            // the only ces that loops are thai, special prefix and
+            // contractions
+            switch (RuleBasedCollator.getTag(ce)) {
+            case CE_NOT_FOUND_TAG_:  // this tag always returns
+                return ce;
+            case RuleBasedCollator.CE_SURROGATE_TAG_:
+                                // essentialy a disengaged lead surrogate. a broken
+                                // sequence was encountered and this is an error
+                return IGNORABLE;
+            case CE_SPEC_PROC_TAG_:
+                ce = previousSpecialPrefix(collator, ce);
+                break;
+            case CE_CONTRACTION_TAG_:
+                // may loop for first character e.g. "0x0f71" for english
+                if (isBackwardsStart()) {
+                    // start of string or this is not the end of any contraction
+                    ce = collator.m_contractionCE_[
+                                            getContractionOffset(collator, ce)];
+                    break;
+                }
+                return previousContraction(collator, ce, ch); // else
+            case CE_LONG_PRIMARY_TAG_:
+                return previousLongPrimary(ce);
+            case CE_EXPANSION_TAG_: // always returns
+                return previousExpansion(collator, ce);
+            case CE_DIGIT_TAG_:
+                ce = previousDigit(collator, ce, ch);
+                break;
+            case CE_HANGUL_SYLLABLE_TAG_: // AC00-D7AF
+                return previousHangul(collator, ch);
+            case CE_LEAD_SURROGATE_TAG_:  // D800-DBFF
+                return IGNORABLE; // broken surrogate sequence
+            case CE_TRAIL_SURROGATE_TAG_: // DC00-DFFF
+                return previousSurrogate(ch);
+            case CE_CJK_IMPLICIT_TAG_:
+                // 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+                return previousImplicit(ch);
+            case CE_IMPLICIT_TAG_: // everything that is not defined
+                // UCA is filled with these. Tailorings are NOT_FOUND
+                return previousImplicit(ch);
+            case CE_CHARSET_TAG_: // this tag always returns
+                return CE_NOT_FOUND_;
+            default: // this tag always returns
+                ce = IGNORABLE;
+            }
+            if (!RuleBasedCollator.isSpecial(ce)) {
+                break;
+            }
+        }
+        return ce;
+    }
+
+    /**
+     * GET IMPLICIT PRIMARY WEIGHTS
+     * @param cp codepoint
+     * @param value is left justified primary key
+     */
+//    private static final int getImplicitPrimary(int cp)
+//    {
+//        cp = swapCJK(cp);
+//
+//        //if (DEBUG) System.out.println("CJK swapped: " + Utility.hex(cp));
+//        // we now have a range of numbers from 0 to 21FFFF.
+//        // we must skip all 00, 01, 02 bytes, so most bytes have 253 values
+//        // we must leave a gap of 01 between all values of the last byte, so
+//        // the last byte has 126 values (3 byte case)
+//        // we shift so that HAN all has the same first primary, for
+//        // compression.
+//        // for the 4 byte case, we make the gap as large as we can fit.
+//        // Three byte forms are EC xx xx, ED xx xx, EE xx xx (with a gap of 1)
+//        // Four byte forms (most supplementaries) are EF xx xx xx (with a gap
+//        // of LAST2_MULTIPLIER == 14)
+//
+//        int last0 = cp - RuleBasedCollator.IMPLICIT_4BYTE_BOUNDARY_;
+//        if (last0 < 0) {
+//            int last1 = cp / RuleBasedCollator.LAST_COUNT_;
+//            last0 = cp % RuleBasedCollator.LAST_COUNT_;
+//
+//            int last2 = last1 / RuleBasedCollator.OTHER_COUNT_;
+//            last1 %= RuleBasedCollator.OTHER_COUNT_;
+//            return RuleBasedCollator.IMPLICIT_BASE_3BYTE_ + (last2 << 24)
+//                   + (last1 << 16)
+//                   + ((last0 * RuleBasedCollator.LAST_MULTIPLIER_) << 8);
+//        }
+//        else {
+//            int last1 = last0 / RuleBasedCollator.LAST_COUNT2_;
+//            last0 %= RuleBasedCollator.LAST_COUNT2_;
+//
+//            int last2 = last1 / RuleBasedCollator.OTHER_COUNT_;
+//            last1 %= RuleBasedCollator.OTHER_COUNT_;
+//
+//            int last3 = last2 / RuleBasedCollator.OTHER_COUNT_;
+//            last2 %= RuleBasedCollator.OTHER_COUNT_;
+//            return RuleBasedCollator.IMPLICIT_BASE_4BYTE_ + (last3 << 24)
+//                   + (last2 << 16) + (last1 << 8)
+//                   + (last0 * RuleBasedCollator.LAST2_MULTIPLIER_);
+//        }
+//    }
+
+//    /**
+//     * Swapping CJK characters for implicit ces
+//     * @param cp codepoint CJK
+//     * @return swapped result
+//     */
+//    private static final int swapCJK(int cp)
+//    {
+//        if (cp >= CJK_BASE_) {
+//            if (cp < CJK_LIMIT_) {
+//                return cp - CJK_BASE_;
+//            }
+//            if (cp < CJK_COMPAT_USED_BASE_) {
+//                return cp + NON_CJK_OFFSET_;
+//            }
+//            if (cp < CJK_COMPAT_USED_LIMIT_) {
+//                return cp - CJK_COMPAT_USED_BASE_ + (CJK_LIMIT_ - CJK_BASE_);
+//            }
+//            if (cp < CJK_B_BASE_) {
+//                return cp + NON_CJK_OFFSET_;
+//            }
+//            if (cp < CJK_B_LIMIT_) {
+//                return cp; // non-BMP-CJK
+//            }
+//            return cp + NON_CJK_OFFSET_; // non-CJK
+//        }
+//        if (cp < CJK_A_BASE_) {
+//            return cp + NON_CJK_OFFSET_;
+//        }
+//        if (cp < CJK_A_LIMIT_) {
+//            return cp - CJK_A_BASE_ + (CJK_LIMIT_ - CJK_BASE_)
+//                   + (CJK_COMPAT_USED_LIMIT_ - CJK_COMPAT_USED_BASE_);
+//        }
+//        return cp + NON_CJK_OFFSET_; // non-CJK
+//    }
+    
+//    /** 
+//     * Gets a character from the source string at a given offset.
+//     * Handles both normal and iterative cases.
+//     * No error checking and does not access the normalization buffer 
+//     * - caller beware!
+//     * @param offset offset from current position which character is to be 
+//     *               retrieved
+//     * @return character at current position + offset
+//     */
+//    private char peekCharacter(int offset) 
+//    {
+//        if (offset != 0) {
+//            int currentoffset = m_source_.getIndex();
+//            m_source_.setIndex(currentoffset + offset);
+//            char result = (char)m_source_.current();
+//            m_source_.setIndex(currentoffset);
+//            return result;
+//        } 
+//        else {
+//            return (char)m_source_.current();
+//        }
+//    }
+
+    /**
+     * Moves back 1 position in the source string. This is slightly less 
+     * complicated than previousChar in that it doesn't normalize while 
+     * moving back. Boundary checks are not performed.
+     * This method is to be used with caution, with the assumption that 
+     * moving back one position will not exceed the source limits.
+     * Use only with nextChar() and never call this API twice in a row without
+     * nextChar() in the middle.
+     */
+    private void goBackOne() 
+    {
+        if (m_bufferOffset_ >= 0) {
+            m_bufferOffset_ --;
+        }
+        else {
+            m_source_.setIndex(m_source_.getIndex() - 1);
+        }
+    }
+    
+    /**
+     * Moves forward 1 position in the source string. This is slightly less 
+     * complicated than nextChar in that it doesn't normalize while 
+     * moving back. Boundary checks are not performed.
+     * This method is to be used with caution, with the assumption that 
+     * moving back one position will not exceed the source limits.
+     * Use only with previousChar() and never call this API twice in a row 
+     * without previousChar() in the middle.
+     */
+    private void goForwardOne() 
+    {
+        if (m_bufferOffset_ < 0) {
+            // we're working on the source and not normalizing. fast path.
+            // note Thai pre-vowel reordering uses buffer too
+            m_source_.setIndex(m_source_.getIndex() + 1);
+        }
+        else {
+            // we are in the buffer, buffer offset will never be 0 here
+            m_bufferOffset_ ++;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationKey.java b/src/com/ibm/icu/text/CollationKey.java
new file mode 100644
index 0000000..d40d6ed
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationKey.java
@@ -0,0 +1,647 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2007, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+/**
+ * <p>A <code>CollationKey</code> represents a <code>String</code>
+ * under the rules of a specific <code>Collator</code>
+ * object. Comparing two <code>CollationKey</code>s returns the
+ * relative order of the <code>String</code>s they represent.</p>
+ *
+ * <p>Since the rule set of <code>Collator</code>s can differ, the
+ * sort orders of the same string under two different
+ * <code>Collator</code>s might differ.  Hence comparing
+ * <code>CollationKey</code>s generated from different
+ * <code>Collator</code>s can give incorrect results.</p>
+ 
+ * <p>Both the method
+ * <code>CollationKey.compareTo(CollationKey)</code> and the method
+ * <code>Collator.compare(String, String)</code> compare two strings
+ * and returns their relative order.  The performance characterictics
+ * of these two approaches can differ.</p>
+ *
+ * <p>During the construction of a <code>CollationKey</code>, the
+ * entire source string is examined and processed into a series of
+ * bits terminated by a null, that are stored in the <code>CollationKey</code>. 
+ * When <code>CollationKey.compareTo(CollationKey)</code> executes, it
+ * performs bitwise comparison on the bit sequences.  This can incurs
+ * startup cost when creating the <code>CollationKey</code>, but once
+ * the key is created, binary comparisons are fast.  This approach is
+ * recommended when the same strings are to be compared over and over
+ * again.</p>
+ *
+ * <p>On the other hand, implementations of
+ * <code>Collator.compare(String, String)</code> can examine and
+ * process the strings only until the first characters differing in
+ * order.  This approach is recommended if the strings are to be
+ * compared only once.</p>
+ * 
+ * <p>More information about the composition of the bit sequence can
+ * be found in the 
+ * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+ * user guide</a>.</p>
+ *
+ * <p>The following example shows how <code>CollationKey</code>s can be used
+ * to sort a list of <code>String</code>s.</p>
+ * <blockquote>
+ * <pre>
+ * // Create an array of CollationKeys for the Strings to be sorted.
+ * Collator myCollator = Collator.getInstance();
+ * CollationKey[] keys = new CollationKey[3];
+ * keys[0] = myCollator.getCollationKey("Tom");
+ * keys[1] = myCollator.getCollationKey("Dick");
+ * keys[2] = myCollator.getCollationKey("Harry");
+ * sort( keys );
+ * <br>
+ * //...
+ * <br>
+ * // Inside body of sort routine, compare keys this way
+ * if( keys[i].compareTo( keys[j] ) > 0 )
+ *    // swap keys[i] and keys[j]
+ * <br>
+ * //...
+ * <br>
+ * // Finally, when we've returned from sort.
+ * System.out.println( keys[0].getSourceString() );
+ * System.out.println( keys[1].getSourceString() );
+ * System.out.println( keys[2].getSourceString() );
+ * </pre>
+ * </blockquote>
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @see Collator
+ * @see RuleBasedCollator
+ * @author Syn Wee Quek
+ * @stable ICU 2.8 
+ */
+public final class CollationKey implements Comparable 
+{
+    // public inner classes -------------------------------------------------
+    
+    /** 
+     * Options that used in the API CollationKey.getBound() for getting a 
+     * CollationKey based on the bound mode requested.
+     * @stable ICU 2.6
+     */
+    public static final class BoundMode 
+    {
+        /*
+         * do not change the values assigned to the members of this enum. 
+         * Underlying code depends on them having these numbers  
+         */
+         
+        /** 
+         * Lower bound
+         * @stable ICU 2.6
+         */
+        public static final int LOWER = 0;
+
+        /** 
+         * Upper bound that will match strings of exact size
+         * @stable ICU 2.6
+         */
+        public static final int UPPER = 1;
+
+        /** 
+         * Upper bound that will match all the strings that have the same 
+         * initial substring as the given string
+         * @stable ICU 2.6
+         */
+        public static final int UPPER_LONG = 2;
+
+        /**
+         * Number of bound mode
+         * @stable ICU 2.6
+         */
+        public static final int COUNT = 3;
+        
+        /**
+         * Private Constructor
+         */
+        ///CLOVER:OFF
+        private BoundMode(){}
+        ///CLOVER:ON
+    }
+    
+    // public constructor ---------------------------------------------------
+    
+    /**
+     * CollationKey constructor.
+     * This constructor is given public access, unlike the JDK version, to
+     * allow access to users extending the Collator class. See 
+     * {@link Collator#getCollationKey(String)}. 
+     * @param source string this CollationKey is to represent
+     * @param key array of bytes that represent the collation order of argument
+     *            source terminated by a null
+     * @see Collator
+     * @stable ICU 2.8
+     */
+    public CollationKey(String source, byte key[])
+    {
+        m_source_ = source;
+        m_key_ = key;
+        m_hashCode_ = 0;
+        m_length_ = -1;
+    }
+    
+    /**
+     * CollationKey constructor that forces key to release its internal byte 
+     * array for adoption. key will have a null byte array after this 
+     * construction.
+     * @param source string this CollationKey is to represent
+     * @param key RawCollationKey object that represents the collation order of 
+     *            argument source. 
+     * @see Collator
+     * @see RawCollationKey
+     * @stable ICU 2.8 
+     */
+    public CollationKey(String source, RawCollationKey key)
+    {
+        m_source_ = source;
+        m_key_ = key.releaseBytes();
+        m_hashCode_ = 0;
+        m_length_ = -1;
+    }
+    
+    // public getters -------------------------------------------------------
+    
+    /**
+     * Return the source string that this CollationKey represents.
+     * @return source string that this CollationKey represents
+     * @stable ICU 2.8
+     */
+    public String getSourceString() 
+    {
+        return m_source_;
+    }
+
+    /**
+     * <p>Duplicates and returns the value of this CollationKey as a sequence 
+     * of big-endian bytes terminated by a null.</p> 
+     *
+     * <p>If two CollationKeys can be legitimately compared, then one can
+     * compare the byte arrays of each to obtain the same result, e.g.
+     * <pre>
+     * byte key1[] = collationkey1.toByteArray();
+     * byte key2[] = collationkey2.toByteArray();
+     * int key, targetkey;
+     * int i = 0;
+     * do {
+     *       key = key1[i] & 0xFF;
+     *     targetkey = key2[i] & 0xFF;
+     *     if (key &lt; targetkey) {
+     *         System.out.println("String 1 is less than string 2");
+     *         return;
+     *     }
+     *     if (targetkey &lt; key) {
+     *         System.out.println("String 1 is more than string 2");
+     *     }
+     *     i ++;
+     * } while (key != 0 && targetKey != 0);
+     *
+     * System.out.println("Strings are equal.");
+     * </pre>
+     * </p>  
+     * @return CollationKey value in a sequence of big-endian byte bytes 
+     *         terminated by a null.
+     * @stable ICU 2.8
+     */
+    public byte[] toByteArray() 
+    {
+        int length = 0;
+        while (true) {
+            if (m_key_[length] == 0) {
+              break;
+            }
+            length ++;
+        }
+        length ++;
+        byte result[] = new byte[length];
+        System.arraycopy(m_key_, 0, result, 0, length);
+        return result;
+    }
+
+    // public other methods -------------------------------------------------    
+     
+    /**
+     * <p>Compare this CollationKey to another CollationKey.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     *
+     * <p><strong>Note:</strong> Comparison between CollationKeys
+     * created by different Collators might return incorrect
+     * results.  See class documentation.</p>
+     *
+     * @param target target CollationKey
+     * @return an integer value.  If the value is less than zero this CollationKey
+     *         is less than than target, if the value is zero they are equal, and
+     *         if the value is greater than zero this CollationKey is greater 
+     *         than target.
+     * @exception NullPointerException is thrown if argument is null.
+     * @see Collator#compare(String, String)
+     * @stable ICU 2.8 
+     */
+    public int compareTo(CollationKey target)
+    {
+    for (int i = 0;; ++i) {
+        int l = m_key_[i]&0xff;
+        int r = target.m_key_[i]&0xff;
+        if (l < r) {
+        return -1;
+        } else if (l > r) {
+        return 1;
+        } else if (l == 0) {
+        return 0;
+        }
+    }
+    }
+
+    /**
+     * <p>Compare this CollationKey with the specified Object.  The
+     * collation rules of the Collator that created this key are
+     * applied.</p>
+     * 
+     * <p>See note in compareTo(CollationKey) for warnings about possible
+     * incorrect results.</p>
+     *
+     * @param obj the Object to be compared to.
+     * @return Returns a negative integer, zero, or a positive integer 
+     *         respectively if this CollationKey is less than, equal to, or 
+     *         greater than the given Object.
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @see #compareTo(CollationKey)
+     * @stable ICU 2.8 
+     */
+    public int compareTo(Object obj) 
+    {
+       return compareTo((CollationKey)obj);
+    }
+
+    /**
+     * <p>Compare this CollationKey and the specified Object for
+     * equality.  The collation rules of the Collator that created
+     * this key are applied.</p>
+     *
+     * <p>See note in compareTo(CollationKey) for warnings about
+     * possible incorrect results.</p>
+     *
+     * @param target the object to compare to.
+     * @return true if the two keys compare as equal, false otherwise.
+     * @see #compareTo(CollationKey)
+     * @exception ClassCastException is thrown when the argument is not 
+     *            a CollationKey.  NullPointerException is thrown when the argument 
+     *            is null.
+     * @stable ICU 2.8 
+     */
+    public boolean equals(Object target) 
+    {
+        if (!(target instanceof CollationKey)) {
+            return false;
+        }
+        
+        return equals((CollationKey)target);
+    }
+    
+    /**
+     * <p>
+     * Compare this CollationKey and the argument target CollationKey for 
+     * equality.
+     * The collation 
+     * rules of the Collator object which created these objects are applied.
+     * </p>
+     * <p>
+     * See note in compareTo(CollationKey) for warnings of incorrect results
+     * </p>
+     * @param target the CollationKey to compare to.
+     * @return true if two objects are equal, false otherwise.
+     * @exception NullPointerException is thrown when the argument is null.
+     * @stable ICU 2.8
+     */
+    public boolean equals(CollationKey target) 
+    {
+        if (this == target) {
+            return true;
+        }
+        if (target == null) {
+            return false;
+        }
+        CollationKey other = (CollationKey)target;
+        int i = 0;
+        while (true) {
+            if (m_key_[i] != other.m_key_[i]) {
+                return false;
+            }
+            if (m_key_[i] == 0) {
+              break;
+            }
+            i ++;
+        }
+        return true;
+    }
+
+    /**
+     * <p>Returns a hash code for this CollationKey. The hash value is calculated 
+     * on the key itself, not the String from which the key was created. Thus 
+     * if x and y are CollationKeys, then x.hashCode(x) == y.hashCode() 
+     * if x.equals(y) is true. This allows language-sensitive comparison in a 
+     * hash table.
+     * </p>
+     * @return the hash value.
+     * @stable ICU 2.8
+     */
+    public int hashCode() 
+    {
+        if (m_hashCode_ == 0) {
+            if (m_key_ == null) {
+                m_hashCode_ = 1;
+            }
+            else {
+                int size = m_key_.length >> 1;
+                StringBuffer key = new StringBuffer(size);
+                int i = 0;
+                while (m_key_[i] != 0 && m_key_[i + 1] != 0) {
+                    key.append((char)((m_key_[i] << 8) | m_key_[i + 1]));
+                    i += 2;
+                }
+                if (m_key_[i] != 0) {
+                    key.append((char)(m_key_[i] << 8));
+                }
+                m_hashCode_ = key.toString().hashCode();
+            }
+        }
+        return m_hashCode_;
+    }
+    
+    /**
+     * <p>
+     * Produce a bound for the sort order of a given collation key and a 
+     * strength level. This API does not attempt to find a bound for the 
+     * CollationKey String representation, hence null will be returned in its 
+     * place.
+     * </p>
+     * <p>
+     * Resulting bounds can be used to produce a range of strings that are
+     * between upper and lower bounds. For example, if bounds are produced
+     * for a sortkey of string "smith", strings between upper and lower 
+     * bounds with primary strength would include "Smith", "SMITH", "sMiTh".
+     * </p>
+     * <p>
+     * There are two upper bounds that can be produced. If BoundMode.UPPER
+     * is produced, strings matched would be as above. However, if a bound
+     * is produced using BoundMode.UPPER_LONG is used, the above example will
+     * also match "Smithsonian" and similar.
+     * </p>
+     * <p>
+     * For more on usage, see example in test procedure 
+     * <a href="http://source.icu-project.org/repos/icu/icu4j/trunk/src/com/ibm/icu/dev/test/collator/CollationAPITest.java">
+     * src/com/ibm/icu/dev/test/collator/CollationAPITest/TestBounds.
+     * </a>
+     * </p>
+     * <p>
+     * Collation keys produced may be compared using the <TT>compare</TT> API.
+     * </p>
+     * @param boundType Mode of bound required. It can be BoundMode.LOWER, which 
+     *              produces a lower inclusive bound, BoundMode.UPPER, that 
+     *              produces upper bound that matches strings of the same 
+     *              length or BoundMode.UPPER_LONG that matches strings that 
+     *              have the same starting substring as the source string.
+     * @param noOfLevels Strength levels required in the resulting bound 
+     *                 (for most uses, the recommended value is PRIMARY). This
+     *                 strength should be less than the maximum strength of 
+     *                 this CollationKey.
+     *                 See users guide for explanation on the strength levels a 
+     *                 collation key can have. 
+     * @return the result bounded CollationKey with a valid sort order but 
+     *         a null String representation.
+     * @exception IllegalArgumentException thrown when the strength level 
+     *            requested is higher than or equal to the strength in this
+     *            CollationKey. 
+     *            In the case of an Exception, information 
+     *            about the maximum strength to use will be returned in the 
+     *            Exception. The user can then call getBound() again with the 
+     *            appropriate strength.
+     * @see CollationKey
+     * @see CollationKey.BoundMode
+     * @see Collator#PRIMARY
+     * @see Collator#SECONDARY
+     * @see Collator#TERTIARY
+     * @see Collator#QUATERNARY
+     * @see Collator#IDENTICAL
+     * @stable ICU 2.6
+     */
+    public CollationKey getBound(int boundType, int noOfLevels) 
+    {
+        // Scan the string until we skip enough of the key OR reach the end of 
+        // the key
+        int offset = 0;
+        int keystrength = Collator.PRIMARY;
+        
+        if (noOfLevels > Collator.PRIMARY) {
+            while (offset < m_key_.length && m_key_[offset] != 0) {
+                if (m_key_[offset ++] 
+                        == RuleBasedCollator.SORT_LEVEL_TERMINATOR_) {
+                    keystrength ++;
+                    noOfLevels --;
+                    if (noOfLevels == Collator.PRIMARY 
+                        || offset == m_key_.length || m_key_[offset] == 0) {
+                        offset --;
+                        break;
+                    }
+                }
+            } 
+        }
+        
+        if (noOfLevels > 0) {
+            throw new IllegalArgumentException(
+                                  "Source collation key has only " 
+                                  + keystrength 
+                                  + " strength level. Call getBound() again "
+                                  + " with noOfLevels < " + keystrength);
+        }
+        
+        // READ ME: this code assumes that the values for BoundMode variables 
+        // will not changes. They are set so that the enum value corresponds to 
+        // the number of extra bytes each bound type needs.
+        byte resultkey[] = new byte[offset + boundType + 1];
+        System.arraycopy(m_key_, 0, resultkey, 0, offset);
+        switch (boundType) {
+            case BoundMode.LOWER: // = 0
+                // Lower bound just gets terminated. No extra bytes
+                break;
+            case BoundMode.UPPER: // = 1
+                // Upper bound needs one extra byte
+                resultkey[offset ++] = 2;
+                break;
+            case BoundMode.UPPER_LONG: // = 2
+                // Upper long bound needs two extra bytes
+                resultkey[offset ++] = (byte)0xFF;
+                resultkey[offset ++] = (byte)0xFF;
+                break;
+            default:
+                throw new IllegalArgumentException(
+                                                "Illegal boundType argument");
+        }
+        resultkey[offset ++] = 0;
+        return new CollationKey(null, resultkey);
+    }
+
+
+    
+    /** 
+     * <p>
+     * Merges this CollationKey with another. Only the sorting order of the 
+     * CollationKeys will be merged. This API does not attempt to merge the 
+     * String representations of the CollationKeys, hence null will be returned
+     * as the String representation.
+     * </p>
+     * <p>
+     * The strength levels are merged with their corresponding counterparts 
+     * (PRIMARIES with PRIMARIES, SECONDARIES with SECONDARIES etc.). 
+     * </p>
+     * <p>
+     * The merged String representation of the result CollationKey will be a
+     * concatenation of the String representations of the 2 source 
+     * CollationKeys.
+     * </p>
+     * <p>
+     * Between the values from the same level a separator is inserted.
+     * example (uncompressed):
+     * <pre> 
+     * 191B1D 01 050505 01 910505 00 and 1F2123 01 050505 01 910505 00
+     * will be merged as 
+     * 191B1D 02 1F212301 050505 02 050505 01 910505 02 910505 00
+     * </pre>
+     * </p>
+     * <p>
+     * This allows for concatenating of first and last names for sorting, among 
+     * other things.
+     * </p>
+     * </p>
+     * @param source CollationKey to merge with 
+     * @return a CollationKey that contains the valid merged sorting order 
+     *         with a null String representation, 
+     *         i.e. <tt>new CollationKey(null, merge_sort_order)</tt>
+     * @exception IllegalArgumentException thrown if source CollationKey
+     *            argument is null or of 0 length.
+     * @stable ICU 2.6
+     */
+    public CollationKey merge(CollationKey source)
+    {
+        // check arguments
+        if (source == null || source.getLength() == 0) {
+            throw new IllegalArgumentException(
+                      "CollationKey argument can not be null or of 0 length");
+        }
+    
+        getLength(); // gets the length of this sort key
+        int sourcelength = source.getLength();
+        // 1 extra for the last strength that has no seperators
+        byte result[] = new byte[m_length_ + sourcelength + 2];
+    
+        // merge the sort keys with the same number of levels
+        int rindex = 0;
+        int index = 0;
+        int sourceindex = 0;
+        while (true) { 
+            // while both have another level
+            // copy level from src1 not including 00 or 01
+            // unsigned issues
+            while (m_key_[index] < 0 || m_key_[index] >= MERGE_SEPERATOR_) {
+                result[rindex ++] = m_key_[index ++];
+            }
+    
+            // add a 02 merge separator
+            result[rindex ++] = MERGE_SEPERATOR_;
+    
+            // copy level from src2 not including 00 or 01
+            while (source.m_key_[sourceindex] < 0 
+                   || source.m_key_[sourceindex] >= MERGE_SEPERATOR_) {
+                result[rindex ++] = source.m_key_[sourceindex ++];
+            }
+    
+            // if both sort keys have another level, then add a 01 level 
+            // separator and continue
+            if (m_key_[index] == RuleBasedCollator.SORT_LEVEL_TERMINATOR_
+                && source.m_key_[sourceindex] 
+                        == RuleBasedCollator.SORT_LEVEL_TERMINATOR_) {
+                ++ index;
+                ++ sourceindex;
+                result[rindex ++] = RuleBasedCollator.SORT_LEVEL_TERMINATOR_;
+            }
+            else {
+                break;
+            }
+        }
+    
+        // here, at least one sort key is finished now, but the other one
+        // might have some contents left from containing more levels;
+        // that contents is just appended to the result
+        if (m_key_[index] != 0) {
+            System.arraycopy(m_key_, index, result, rindex,
+                             m_length_ - index);
+        }
+        else if (source.m_key_[sourceindex] != 0) {
+            System.arraycopy(source.m_key_, sourceindex, result, rindex,  
+                             source.m_length_ - sourceindex);
+        }
+        result[result.length - 1] = 0;
+    
+        // trust that neither sort key contained illegally embedded zero bytes
+        return new CollationKey(null, result);
+    }
+
+    // private data members -------------------------------------------------
+
+    /**
+     * Sequence of bytes that represents the sort key
+     */
+    private byte m_key_[];
+    
+    /**
+     * Source string this CollationKey represents
+     */    
+    private String m_source_;
+
+    /**
+     * Hash code for the key
+     */
+    private int m_hashCode_;
+    /**
+     * Gets the length of this CollationKey
+     */
+    private int m_length_;
+    /**
+     * Collation key merge seperator
+     */
+    private static final int MERGE_SEPERATOR_ = 2;
+    
+    // private methods ------------------------------------------------------
+    
+    /**
+     * Gets the length of the CollationKey
+     * @return length of the CollationKey
+     */
+    private int getLength()
+    {
+        if (m_length_ >= 0) {
+            return m_length_;
+        }
+        int length = m_key_.length;
+        for (int index = 0; index < length; index ++) {
+            if (m_key_[index] == 0) {
+                length = index;
+                break;
+            }
+        } 
+        m_length_ = length;
+        return m_length_;
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationParsedRuleBuilder.java b/src/com/ibm/icu/text/CollationParsedRuleBuilder.java
new file mode 100644
index 0000000..8278d44
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationParsedRuleBuilder.java
@@ -0,0 +1,4328 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+ 
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.Hashtable;
+import java.util.Vector;
+import java.util.Arrays;
+import java.util.Enumeration;
+
+import com.ibm.icu.impl.TrieBuilder;
+import com.ibm.icu.impl.IntTrieBuilder;
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+* Class for building a collator from a list of collation rules.
+* This class is uses CollationRuleParser
+* @author Syn Wee Quek
+* @since release 2.2, June 11 2002
+*/
+final class CollationParsedRuleBuilder
+{     
+    // package private constructors ------------------------------------------
+
+    /**
+     * Constructor
+     * @param rules collation rules
+     * @exception ParseException thrown when argument rules have an invalid 
+     *            syntax 
+     */
+    CollationParsedRuleBuilder(String rules) throws ParseException
+    {
+        m_parser_ = new CollationRuleParser(rules);
+        m_parser_.assembleTokenList();
+        m_utilColEIter_ = RuleBasedCollator.UCA_.getCollationElementIterator(
+                                         "");
+    }
+    
+    // package private inner classes -----------------------------------------
+    
+    /** 
+     * Inverse UCA wrapper
+     */
+    static class InverseUCA 
+    {
+        // package private constructor ---------------------------------------
+        
+        InverseUCA() 
+        {
+        }
+        
+        // package private data member ---------------------------------------
+        
+        /**
+         * Array list of characters
+         */
+        int m_table_[];
+        /**
+         * Array list of continuation characters
+         */
+        char m_continuations_[];
+        
+        /**
+         * UCA version of inverse UCA table
+         */
+        VersionInfo m_UCA_version_;
+        
+        // package private method --------------------------------------------
+        
+        /**
+     * Returns the previous inverse ces of the argument ces
+     * @param ce ce to test
+     * @param contce continuation ce to test
+     * @param strength collation strength
+     * @param prevresult an array to store the return results previous 
+         *                   inverse ce and previous inverse continuation ce
+         * @return result of the inverse ce 
+     */
+    final int getInversePrevCE(int ce, int contce, int strength, 
+                   int prevresult[]) 
+    {
+        int result = findInverseCE(ce, contce);
+        
+        if (result < 0) {
+        prevresult[0] = CollationElementIterator.NULLORDER;
+        return -1;
+        }
+        
+        ce &= STRENGTH_MASK_[strength];
+        contce &= STRENGTH_MASK_[strength];
+        
+            prevresult[0] = ce;
+        prevresult[1] = contce;
+        
+        while ((prevresult[0]  & STRENGTH_MASK_[strength]) == ce 
+           && (prevresult[1]  & STRENGTH_MASK_[strength])== contce
+           && result > 0) { 
+                        // this condition should prevent falling off the edge of the 
+                        // world 
+                // here, we end up in a singularity - zero
+                prevresult[0] = m_table_[3 * (-- result)];
+                prevresult[1] = m_table_[3 * result + 1];
+           }
+           return result;
+        }
+        
+        final int getCEStrengthDifference(int CE, int contCE, 
+                int prevCE, int prevContCE) {
+            int strength = Collator.TERTIARY;
+            while(
+            ((prevCE & STRENGTH_MASK_[strength]) != (CE & STRENGTH_MASK_[strength]) 
+            || (prevContCE & STRENGTH_MASK_[strength]) != (contCE & STRENGTH_MASK_[strength]))
+            && (strength != 0)) {
+                strength--;
+            }
+            return strength;                
+        }
+
+        private int compareCEs(int source0, int source1, int target0, int target1) {
+            int s1 = source0, s2, t1 = target0, t2;
+            if(RuleBasedCollator.isContinuation(source1)) {
+                s2 = source1;
+            } else {
+                s2 = 0;
+            }
+            if(RuleBasedCollator.isContinuation(target1)) {
+                t2 = target1;
+            } else {
+                t2 = 0;
+            }
+            
+            int s = 0, t = 0;
+            if(s1 == t1 && s2 == t2) {
+                return 0;
+            }
+            s = (s1 & 0xFFFF0000)|((s2 & 0xFFFF0000)>>16); 
+            t = (t1 & 0xFFFF0000)|((t2 & 0xFFFF0000)>>16);
+            if(s == t) {
+                s = (s1 & 0x0000FF00) | (s2 & 0x0000FF00)>>8;
+                t = (t1 & 0x0000FF00) | (t2 & 0x0000FF00)>>8;
+                if(s == t) {
+                    s = (s1 & 0x000000FF)<<8 | (s2 & 0x000000FF);
+                    t = (t1 & 0x000000FF)<<8 | (t2 & 0x000000FF);
+                    return Utility.compareUnsigned(s, t);
+                } else { 
+                    return Utility.compareUnsigned(s, t);
+                }
+            } else {
+                return Utility.compareUnsigned(s, t);                
+            }
+        }
+        
+        /**
+         * Finding the inverse CE of the argument CEs
+         * @param ce CE to be tested
+         * @param contce continuation CE
+         * @return inverse CE
+         */
+        int findInverseCE(int ce, int contce) 
+        {
+            int bottom = 0;
+            int top = m_table_.length / 3;
+            int result = 0;
+            
+            while (bottom < top - 1) {
+                result = (top + bottom) >> 1;
+                int first = m_table_[3 * result];
+                int second = m_table_[3 * result + 1];
+                int comparison = compareCEs(first, second, ce, contce);
+                if (comparison > 0) {
+                    top = result;
+                } 
+                else if (comparison < 0) {
+                    bottom = result;
+                } 
+                else { 
+                    break;
+                }
+            }
+            
+            return result;
+        }
+    
+    /**
+     * Getting gap offsets in the inverse UCA
+     * @param listheader parsed token lists
+     * @exception Exception thrown when error occurs while finding the 
+     *            collation gaps
+     */
+    void getInverseGapPositions(CollationRuleParser.TokenListHeader 
+                    listheader)
+        throws Exception 
+    {
+        // reset all the gaps
+        CollationRuleParser.Token token = listheader.m_first_;
+        int tokenstrength = token.m_strength_;
+    
+        for (int i = 0; i < 3; i ++) {
+        listheader.m_gapsHi_[3 * i] = 0;
+        listheader.m_gapsHi_[3 * i + 1] = 0;
+        listheader.m_gapsHi_[3 * i + 2] = 0;
+        listheader.m_gapsLo_[3 * i] = 0;
+        listheader.m_gapsLo_[3 * i + 1] = 0;
+        listheader.m_gapsLo_[3 * i + 2] = 0;
+        listheader.m_numStr_[i] = 0;
+        listheader.m_fStrToken_[i] = null;
+        listheader.m_lStrToken_[i] = null;
+        listheader.m_pos_[i] = -1;
+        }
+    
+        if ((listheader.m_baseCE_ >>> 24) 
+                >= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_
+        && (listheader.m_baseCE_ >>> 24)
+                <= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_) 
+        { 
+                // implicits -
+            listheader.m_pos_[0] = 0;
+            int t1 = listheader.m_baseCE_;
+            int t2 = listheader.m_baseContCE_;
+            listheader.m_gapsLo_[0] = mergeCE(t1, t2, 
+                                                  Collator.PRIMARY);
+            listheader.m_gapsLo_[1] = mergeCE(t1, t2, 
+                                                  Collator.SECONDARY);
+            listheader.m_gapsLo_[2] = mergeCE(t1, t2, 
+                                                  Collator.TERTIARY);
+            int primaryCE = t1 & RuleBasedCollator.CE_PRIMARY_MASK_ | (t2 & RuleBasedCollator.CE_PRIMARY_MASK_) >>> 16;
+            primaryCE = RuleBasedCollator.impCEGen_.getImplicitFromRaw(RuleBasedCollator.impCEGen_.getRawFromImplicit(primaryCE)+1);
+
+            t1 = primaryCE & RuleBasedCollator.CE_PRIMARY_MASK_ | 0x0505;
+            t2 = (primaryCE << 16) & RuleBasedCollator.CE_PRIMARY_MASK_ | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+                
+            //                if (listheader.m_baseCE_ < 0xEF000000) {
+            //                    // first implicits have three byte primaries, with a gap of
+            //                    // one so we esentially need to add 2 to the top byte in 
+            //                    // listheader.m_baseContCE_
+            //                    t2 += 0x02000000;
+            //                } 
+            //                else {
+            //                    // second implicits have four byte primaries, with a gap of
+            //                    // IMPLICIT_LAST2_MULTIPLIER_
+            //                    // Now, this guy is not really accessible here, so until we 
+            //                    // find a better way to pass it around, assume that the gap is 1
+            //                    t2 += 0x00020000;
+            //                }
+            listheader.m_gapsHi_[0] = mergeCE(t1, t2, 
+                                                  Collator.PRIMARY);
+            listheader.m_gapsHi_[1] = mergeCE(t1, t2, 
+                                                  Collator.SECONDARY);
+            listheader.m_gapsHi_[2] = mergeCE(t1, t2, 
+                                                  Collator.TERTIARY);
+        } 
+        else if (listheader.m_indirect_ == true 
+                     && listheader.m_nextCE_ != 0) {
+        listheader.m_pos_[0] = 0;
+        int t1 = listheader.m_baseCE_;
+        int t2 = listheader.m_baseContCE_;
+        listheader.m_gapsLo_[0] = mergeCE(t1, t2, 
+                          Collator.PRIMARY);
+        listheader.m_gapsLo_[1] = mergeCE(t1, t2, 
+                          Collator.SECONDARY);
+        listheader.m_gapsLo_[2] = mergeCE(t1, t2, 
+                          Collator.TERTIARY);
+        t1 = listheader.m_nextCE_;
+        t2 = listheader.m_nextContCE_;
+        listheader.m_gapsHi_[0] = mergeCE(t1, t2, 
+                          Collator.PRIMARY);
+        listheader.m_gapsHi_[1] = mergeCE(t1, t2, 
+                          Collator.SECONDARY);
+        listheader.m_gapsHi_[2] = mergeCE(t1, t2, 
+                          Collator.TERTIARY);
+        } 
+        else {
+        while (true) {
+            if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_) {
+            listheader.m_pos_[tokenstrength] 
+                = getInverseNext(listheader, 
+                         tokenstrength);
+            if (listheader.m_pos_[tokenstrength] >= 0) {
+                listheader.m_fStrToken_[tokenstrength] = token;
+            } 
+            else { 
+                            // The CE must be implicit, since it's not in the 
+                            // table 
+                // Error
+                throw new Exception("Internal program error");
+            }
+            }
+            
+            while (token != null && token.m_strength_ >= tokenstrength) 
+            {
+                if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_) {
+                listheader.m_lStrToken_[tokenstrength] = token;
+                }
+                token = token.m_next_;
+            }
+            if (tokenstrength < CE_BASIC_STRENGTH_LIMIT_ - 1) {
+            // check if previous interval is the same and merge the 
+            // intervals if it is so
+            if (listheader.m_pos_[tokenstrength] 
+                == listheader.m_pos_[tokenstrength + 1]) {
+                listheader.m_fStrToken_[tokenstrength] 
+                = listheader.m_fStrToken_[tokenstrength 
+                             + 1];
+                listheader.m_fStrToken_[tokenstrength + 1] = null;
+                listheader.m_lStrToken_[tokenstrength + 1] = null;
+                listheader.m_pos_[tokenstrength + 1] = -1;
+            }
+            }
+            if (token != null) {
+            tokenstrength = token.m_strength_;
+            } 
+            else {
+            break;
+            }
+        }
+        for (int st = 0; st < 3; st ++) {
+            int pos = listheader.m_pos_[st];
+            if (pos >= 0) {
+            int t1 = m_table_[3 * pos];
+            int t2 = m_table_[3 * pos + 1];
+            listheader.m_gapsHi_[3 * st] = mergeCE(t1, t2, 
+                                   Collator.PRIMARY);
+            listheader.m_gapsHi_[3 * st + 1] = mergeCE(t1, t2, 
+                                   Collator.SECONDARY);
+            listheader.m_gapsHi_[3 * st + 2] = (t1 & 0x3f) << 24 
+                | (t2 & 0x3f) << 16;
+            //pos --;
+            //t1 = m_table_[3 * pos];
+            //t2 = m_table_[3 * pos + 1];
+            t1 = listheader.m_baseCE_;
+            t2 = listheader.m_baseContCE_;
+            
+            listheader.m_gapsLo_[3 * st] = mergeCE(t1, t2, 
+                                   Collator.PRIMARY);
+            listheader.m_gapsLo_[3 * st + 1] = mergeCE(t1, t2, 
+                                   Collator.SECONDARY);
+            listheader.m_gapsLo_[3 * st + 2] = (t1 & 0x3f) << 24 
+                | (t2 & 0x3f) << 16;
+            }
+        }
+        }
+        }
+        
+    /**
+     * Gets the next CE in the inverse table
+     * @param listheader token list header
+     * @param strength collation strength
+     * @return next ce
+     */
+    private final int getInverseNext(CollationRuleParser.TokenListHeader 
+                     listheader, 
+                     int strength) 
+    {
+        int ce = listheader.m_baseCE_;
+        int secondce = listheader.m_baseContCE_; 
+        int result = findInverseCE(ce, secondce);
+            
+        if (result < 0) {
+        return -1;
+        }
+            
+        ce &= STRENGTH_MASK_[strength];
+        secondce &= STRENGTH_MASK_[strength];
+        
+        int nextce = ce;
+        int nextcontce = secondce;
+        
+        while((nextce & STRENGTH_MASK_[strength]) == ce 
+          && (nextcontce  & STRENGTH_MASK_[strength]) == secondce) {
+        nextce = m_table_[3 * (++ result)];
+        nextcontce = m_table_[3 * result + 1];
+        }
+            
+        listheader.m_nextCE_ = nextce;
+        listheader.m_nextContCE_ = nextcontce;
+        
+        return result;
+    }
+    }
+
+    // package private data members ------------------------------------------
+    
+    /**
+     * Inverse UCA, instantiate only when required
+     */
+    static final InverseUCA INVERSE_UCA_; 
+    
+    /**
+     * UCA and Inverse UCA version do not match
+     */
+    private static final String INV_UCA_VERSION_MISMATCH_ =
+    "UCA versions of UCA and inverse UCA should match";
+           
+    /**
+     * UCA and Inverse UCA version do not match
+     */
+    private static final String UCA_NOT_INSTANTIATED_ =
+    "UCA is not instantiated!";
+    
+    /**
+     * Initializing the inverse UCA
+     */
+    static {
+        InverseUCA temp = null;
+        try {
+        temp = CollatorReader.getInverseUCA();
+    } catch (IOException e) {
+    }
+        /*
+      try
+      {
+      String invdat = "/com/ibm/icu/impl/data/invuca.icu";
+      InputStream i = CollationParsedRuleBuilder.class.getResourceAsStream(invdat);
+      BufferedInputStream b = new BufferedInputStream(i, 110000);
+      INVERSE_UCA_ = CollatorReader.readInverseUCA(b);
+      b.close();
+      i.close();
+      }
+      catch (Exception e)
+      {
+      e.printStackTrace();
+      throw new RuntimeException(e.getMessage());
+      }
+        */
+        
+        if(temp != null && RuleBasedCollator.UCA_ != null) {
+            if(!temp.m_UCA_version_.equals(RuleBasedCollator.UCA_.m_UCA_version_)) {
+                throw new RuntimeException(INV_UCA_VERSION_MISMATCH_);
+            }
+        } else {
+            throw new RuntimeException(UCA_NOT_INSTANTIATED_);
+        }
+        
+        INVERSE_UCA_ = temp;
+    }
+    
+    // package private methods -----------------------------------------------
+    
+    /**
+     * Parse and sets the collation rules in the argument collator
+     * @param collator to set
+     * @exception Exception thrown when internal program error occurs
+     */
+    void setRules(RuleBasedCollator collator) throws Exception
+    {
+        if (m_parser_.m_resultLength_ > 0 || m_parser_.m_removeSet_ != null) { 
+        // we have a set of rules, let's make something of it 
+        assembleTailoringTable(collator);
+    } 
+    else { // no rules, but no error either must be only options
+        // We will init the collator from UCA   
+        collator.setWithUCATables();
+    }
+        // And set only the options
+        m_parser_.setDefaultOptionsInCollator(collator);
+    }
+    
+    private void copyRangeFromUCA(BuildTable t, int start, int end) {
+        int u = 0;
+        for (u = start; u <= end; u ++) {
+            // if ((CE = ucmpe32_get(t.m_mapping, u)) == UCOL_NOT_FOUND
+            int CE = t.m_mapping_.getValue(u);
+            if (CE == CE_NOT_FOUND_ 
+                // this test is for contractions that are missing the starting 
+                // element. Looks like latin-1 should be done before 
+                // assembling the table, even if it results in more false 
+                // closure elements
+                || (isContractionTableElement(CE) 
+            && getCE(t.m_contractions_, CE, 0) == CE_NOT_FOUND_)) {
+                //m_utilElement_.m_uchars_ = str.toString();
+                m_utilElement_.m_uchars_ = UCharacter.toString(u);
+                m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+                m_utilElement_.m_prefix_ = 0;
+                m_utilElement_.m_CELength_ = 0;
+                m_utilElement_.m_prefixChars_ = null;
+                m_utilColEIter_.setText(m_utilElement_.m_uchars_);
+                while (CE != CollationElementIterator.NULLORDER) {
+                    CE = m_utilColEIter_.next();
+                    if (CE != CollationElementIterator.NULLORDER) {
+                        m_utilElement_.m_CEs_[m_utilElement_.m_CELength_ ++] 
+                = CE;
+                    }
+                }
+                addAnElement(t, m_utilElement_);
+            }
+        }
+    }
+            
+    /**
+     * 2.  Eliminate the negative lists by doing the following for each 
+     * non-null negative list: 
+     * o   if previousCE(baseCE, strongestN) != some ListHeader X's baseCE, 
+     * create new ListHeader X 
+     * o   reverse the list, add to the end of X's positive list. Reset the 
+     * strength of the first item you add, based on the stronger strength 
+     * levels of the two lists. 
+     * 
+     * 3.  For each ListHeader with a non-null positive list: 
+     * o   Find all character strings with CEs between the baseCE and the 
+     * next/previous CE, at the strength of the first token. Add these to the 
+     * tailoring. 
+     *     ? That is, if UCA has ...  x <<< X << x' <<< X' < y ..., and the 
+     *       tailoring has & x < z... 
+     *     ? Then we change the tailoring to & x  <<< X << x' <<< X' < z ... 
+     * 
+     * It is possible that this part should be done even while constructing list
+     * The problem is that it is unknown what is going to be the strongest 
+     * weight.
+     * So we might as well do it here
+     * o   Allocate CEs for each token in the list, based on the total number N 
+     * of the largest level difference, and the gap G between baseCE and nextCE 
+     * at that level. The relation * between the last item and nextCE is the 
+     * same as the strongest strength. 
+     * o   Example: baseCE < a << b <<< q << c < d < e * nextCE(X,1) 
+     *     ? There are 3 primary items: a, d, e. Fit them into the primary gap. 
+     *     Then fit b and c into the secondary gap between a and d, then fit q 
+     *     into the tertiary gap between b and c. 
+     * o   Example: baseCE << b <<< q << c * nextCE(X,2) 
+     *     ? There are 2 secondary items: b, c. Fit them into the secondary gap. 
+     *       Then fit q into the tertiary gap between b and c. 
+     * o   When incrementing primary values, we will not cross high byte 
+     *     boundaries except where there is only a single-byte primary. That is 
+     *     to ensure that the script reordering will continue to work. 
+     * @param collator the rule based collator to update
+     * @exception Exception thrown when internal program error occurs
+     */
+    void assembleTailoringTable(RuleBasedCollator collator) throws Exception
+    {
+        
+    for (int i = 0; i < m_parser_.m_resultLength_; i ++) {
+        // now we need to generate the CEs  
+        // We stuff the initial value in the buffers, and increase the 
+            // appropriate buffer according to strength
+            if  (m_parser_.m_listHeader_[i].m_first_ != null) { 
+                // if there are any elements
+                // due to the way parser works, subsequent tailorings
+                // may remove all the elements from a sequence, therefore
+                // leaving an empty tailoring sequence.
+        initBuffers(m_parser_.m_listHeader_[i]);
+            }
+    }
+        
+        if (m_parser_.m_variableTop_ != null) { 
+            // stuff the variable top value
+        m_parser_.m_options_.m_variableTopValue_ 
+        = m_parser_.m_variableTop_.m_CE_[0] >>> 16;
+        // remove it from the list
+        if (m_parser_.m_variableTop_.m_listHeader_.m_first_ 
+                == m_parser_.m_variableTop_) { // first in list
+        m_parser_.m_variableTop_.m_listHeader_.m_first_ 
+            = m_parser_.m_variableTop_.m_next_;
+        }
+        if (m_parser_.m_variableTop_.m_listHeader_.m_last_ 
+        == m_parser_.m_variableTop_) { 
+                // first in list
+        m_parser_.m_variableTop_.m_listHeader_.m_last_ 
+            = m_parser_.m_variableTop_.m_previous_;    
+        }
+        if (m_parser_.m_variableTop_.m_next_ != null) {
+        m_parser_.m_variableTop_.m_next_.m_previous_ 
+            = m_parser_.m_variableTop_.m_previous_;
+        }
+        if (m_parser_.m_variableTop_.m_previous_ != null) {
+        m_parser_.m_variableTop_.m_previous_.m_next_ 
+            = m_parser_.m_variableTop_.m_next_;
+        }
+    }
+        
+    BuildTable t = new BuildTable(m_parser_);
+        
+        // After this, we have assigned CE values to all regular CEs now we 
+    // will go through list once more and resolve expansions, make 
+    // UCAElements structs and add them to table               
+    for (int i = 0; i < m_parser_.m_resultLength_; i ++) {
+        // now we need to generate the CEs 
+        // We stuff the initial value in the buffers, and increase the 
+        // appropriate buffer according to strength                                                          */
+        createElements(t, m_parser_.m_listHeader_[i]);
+    }
+        
+        m_utilElement_.clear();
+        StringBuffer str = new StringBuffer();
+        
+    // add latin-1 stuff
+        copyRangeFromUCA(t, 0, 0xFF);
+    
+        // add stuff for copying 
+        if(m_parser_.m_copySet_ != null) {
+            int i = 0;
+            for(i = 0; i < m_parser_.m_copySet_.getRangeCount(); i++) {
+                copyRangeFromUCA(t, m_parser_.m_copySet_.getRangeStart(i), 
+                                 m_parser_.m_copySet_.getRangeEnd(i));
+            }
+        }
+        
+        // copy contractions from the UCA - this is felt mostly for cyrillic
+    char conts[] = RuleBasedCollator.UCA_CONTRACTIONS_;
+        int offset = 0;
+    while (conts[offset] != 0) {
+        // tailoredCE = ucmpe32_get(t.m_mapping, *conts);
+        int tailoredCE = t.m_mapping_.getValue(conts[offset]);
+        Elements prefixElm =  null;
+        if (tailoredCE != CE_NOT_FOUND_) {         
+        boolean needToAdd = true;
+        if (isContractionTableElement(tailoredCE)) {
+                    if (isTailored(t.m_contractions_, tailoredCE, 
+                                   conts, offset + 1) == true) {
+            needToAdd = false;
+            }
+        }
+        if (!needToAdd && isPrefix(tailoredCE) && conts[offset+1]==0) {
+            // pre-context character in UCA
+            // The format for pre-context character is
+            // conts[0]: baseCP  conts[1]:0  conts[2]:pre-context CP
+            Elements elm = new Elements();
+            elm.m_cPoints_=m_utilElement_.m_uchars_;
+            elm.m_CELength_=0;
+            elm.m_uchars_= UCharacter.toString(conts[offset]);
+            elm.m_prefixChars_=UCharacter.toString(conts[offset+2]);
+            elm.m_prefix_=0; // TODO(claireho) : confirm!
+            prefixElm =  (Elements)t.m_prefixLookup_.get(elm);
+            if ((prefixElm== null) ||
+                (prefixElm.m_prefixChars_.charAt(0)!= conts[offset+2])) {
+                needToAdd = true;
+            }
+        }
+                if(m_parser_.m_removeSet_ != null && m_parser_.m_removeSet_.contains(conts[offset])) {
+                    needToAdd = false;
+                }
+
+                
+                if (needToAdd == true) { 
+                    // we need to add if this contraction is not tailored.
+                    if (conts[offset+1]!=0) { // not precontext 
+                        m_utilElement_.m_prefix_ = 0;
+                        m_utilElement_.m_prefixChars_ = null;
+                        m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+                        str.delete(0, str.length());
+                        str.append(conts[offset]);
+                        str.append(conts[offset + 1]);
+                        if (conts[offset + 2] != 0) {
+                            str.append(conts[offset + 2]);
+                        } 
+                        m_utilElement_.m_uchars_ = str.toString();
+                        m_utilElement_.m_CELength_ = 0;
+                        m_utilColEIter_.setText(m_utilElement_.m_uchars_);
+                    }
+                    else {  // add a pre-context element
+                        int preKeyLen=0;
+                        str.delete(0, str.length());  // clean up
+                        m_utilElement_.m_cPoints_ = UCharacter.toString(conts[offset]);
+                        m_utilElement_.m_CELength_ = 0;
+                        m_utilElement_.m_uchars_ = UCharacter.toString(conts[offset]);
+                        m_utilElement_.m_prefixChars_ = UCharacter.toString(conts[offset+2]);
+                        if (prefixElm==null) {
+                            m_utilElement_.m_prefix_=0;
+                        }
+                        else { // TODO (claireho): confirm!
+                            m_utilElement_.m_prefix_= m_utilElement_.m_prefix_; 
+                            // m_utilElement_.m_prefix_= prefixElm.m_prefix_;
+                        }
+                        m_utilColEIter_.setText(m_utilElement_.m_prefixChars_);
+                        while (m_utilColEIter_.next()!=CollationElementIterator.NULLORDER) { 
+                            // count number of keys for pre-context char.
+                            preKeyLen++;
+                        }
+                        str.append(conts[offset+2]);
+                        str.append(conts[offset]);
+                        m_utilColEIter_.setText(str.toString());
+                        // Skip the keys for prefix character, then copy the rest to el.
+                        while ((preKeyLen-->0) && 
+                                m_utilColEIter_.next()!= CollationElementIterator.NULLORDER) {
+                            continue;
+                        }
+                                
+                    }
+                    while (true) {
+                        int CE = m_utilColEIter_.next();
+                        if (CE != CollationElementIterator.NULLORDER) {
+                            m_utilElement_.m_CEs_[m_utilElement_.m_CELength_++] = CE;
+                        }
+                        else {
+                            break;
+                        }
+                    }
+                    addAnElement(t, m_utilElement_);
+                }
+        } else if(m_parser_.m_removeSet_ != null && m_parser_.m_removeSet_.contains(conts[offset])) {
+                copyRangeFromUCA(t, conts[offset], conts[offset]);
+            }
+            
+        offset += 3;
+    }
+        
+        // Add completely ignorable elements
+        processUCACompleteIgnorables(t);
+        
+        // canonical closure 
+        canonicalClosure(t);
+  
+    // still need to produce compatibility closure
+    assembleTable(t, collator);  
+    }
+    
+    // private inner classes -------------------------------------------------
+    
+    private static class CEGenerator 
+    {
+        // package private data members --------------------------------------
+        
+    WeightRange m_ranges_[];
+    int m_rangesLength_;
+    int m_byteSize_; 
+        int m_start_; 
+        int m_limit_;
+    int m_maxCount_;
+    int m_count_;
+    int m_current_;
+    int m_fLow_; // forbidden Low 
+    int m_fHigh_; // forbidden High 
+        
+        // package private constructor ---------------------------------------
+        
+        CEGenerator() 
+        {
+            m_ranges_ = new WeightRange[7];      
+            for (int i = 6; i >= 0; i --) {
+                m_ranges_[i] = new WeightRange();
+            }
+        }
+    }
+
+    private static class WeightRange implements Comparable
+    {
+        // public methods ----------------------------------------------------
+        
+        /**
+         * Compares this object with target
+         * @param target object to compare with
+         * @return 0 if equals, 1 if this is > target, -1 otherwise
+         */
+        public int compareTo(Object target) 
+        {
+            if (this == target) {
+                return 0;
+            }
+            int tstart = ((WeightRange)target).m_start_;   
+            if (m_start_ == tstart) {
+                return 0;
+            }
+            if (m_start_ > tstart) {
+                return 1;
+            }
+            return -1;
+        }
+        
+        /**
+         * Initialize 
+         */
+        public void clear()
+        {
+            m_start_ = 0;
+            m_end_ = 0;
+            m_length_ = 0; 
+            m_count_ = 0;
+            m_length2_ = 0;
+            m_count2_ = 0;
+        }
+        
+        // package private data members --------------------------------------
+        
+    int m_start_;
+        int m_end_;
+    int m_length_; 
+        int m_count_;
+    int m_length2_;
+    int m_count2_;
+        
+        // package private constructor ---------------------------------------
+        
+        WeightRange()
+        {
+            clear();
+        }
+        
+        /**
+         * Copy constructor.
+         * Cloneable is troublesome, needs to check for exception
+         * @param source to clone
+         */
+        WeightRange(WeightRange source)
+        {
+            m_start_ = source.m_start_;
+            m_end_ = source.m_end_;
+            m_length_ = source.m_length_; 
+            m_count_ = source.m_count_;
+            m_length2_ = source.m_length2_;
+            m_count2_ = source.m_count2_;
+        }
+    }
+    
+    private static class MaxJamoExpansionTable
+    {
+    // package private data members --------------------------------------
+        
+    Vector m_endExpansionCE_;
+    // vector of booleans
+    Vector m_isV_;
+    byte m_maxLSize_;
+    byte m_maxVSize_;
+    byte m_maxTSize_;
+        
+    // package private constructor ---------------------------------------
+        
+    MaxJamoExpansionTable()
+    {
+        m_endExpansionCE_ = new Vector();
+        m_isV_ = new Vector();
+        m_endExpansionCE_.add(new Integer(0));
+        m_isV_.add(Boolean.FALSE);
+            m_maxLSize_ = 1;
+            m_maxVSize_ = 1;
+            m_maxTSize_ = 1;
+    }
+        
+        MaxJamoExpansionTable(MaxJamoExpansionTable table)
+        {
+            m_endExpansionCE_ = (Vector)table.m_endExpansionCE_.clone();
+            m_isV_ = (Vector)table.m_isV_.clone();
+            m_maxLSize_ = table.m_maxLSize_;
+            m_maxVSize_ = table.m_maxVSize_;
+            m_maxTSize_ = table.m_maxTSize_;
+        }
+    }
+    
+    private static class MaxExpansionTable 
+    {
+    // package private constructor --------------------------------------
+        
+    MaxExpansionTable() 
+    {
+        m_endExpansionCE_ = new Vector();
+        m_expansionCESize_ = new Vector();
+        m_endExpansionCE_.add(new Integer(0));
+        m_expansionCESize_.add(new Byte((byte)0));
+    }
+        
+        MaxExpansionTable(MaxExpansionTable table) 
+        {
+            m_endExpansionCE_ = (Vector)table.m_endExpansionCE_.clone();
+            m_expansionCESize_ = (Vector)table.m_expansionCESize_.clone();
+        }
+        
+    // package private data member --------------------------------------
+        
+    Vector m_endExpansionCE_;
+    Vector m_expansionCESize_;
+    }
+    
+    private static class BasicContractionTable 
+    {
+    // package private constructors -------------------------------------
+        
+    BasicContractionTable()
+    {
+        m_CEs_ = new Vector();
+        m_codePoints_ = new StringBuffer();
+    }
+        
+    // package private data members -------------------------------------
+        
+    StringBuffer m_codePoints_;
+    Vector m_CEs_;
+    }
+    
+    private static class ContractionTable 
+    {
+    // package private constructor --------------------------------------
+        
+    /**
+     * Builds a contraction table
+     * @param mapping
+     */
+    ContractionTable(IntTrieBuilder mapping) 
+    {
+        m_mapping_ = mapping;
+        m_elements_ = new Vector();
+        m_CEs_ = new Vector();
+        m_codePoints_ = new StringBuffer();
+        m_offsets_ = new Vector();
+        m_currentTag_ = CE_NOT_FOUND_TAG_;
+    }
+        
+        /**
+         * Copies a contraction table.
+         * Not all data will be copied into their own object.
+         * @param table
+         */
+        ContractionTable(ContractionTable table) 
+        {
+            m_mapping_ = table.m_mapping_;
+            m_elements_ = (Vector)table.m_elements_.clone();
+            m_codePoints_ = new StringBuffer(table.m_codePoints_.toString());
+            m_CEs_ = (Vector)table.m_CEs_.clone();
+            m_offsets_ = (Vector)table.m_offsets_.clone();
+            m_currentTag_ = table.m_currentTag_;
+        }
+    
+    // package private data members ------------------------------------
+        
+    /**
+     * Vector of BasicContractionTable
+     */
+        Vector m_elements_;
+        IntTrieBuilder m_mapping_;
+        StringBuffer m_codePoints_;
+    Vector m_CEs_;
+    Vector m_offsets_;
+    int m_currentTag_;
+    }
+    
+    /**
+     * Private class for combining mark table.
+     * The table is indexed by the class value(0-255).
+     */
+    private static class CombinClassTable {
+        /**
+         * accumulated numbers of combining marks.
+         */
+        int[] index =  new int[256]; 
+        
+        /**
+         * code point array for combining marks.
+         */
+        char[] cPoints; 
+        
+        /**
+         * size of cPoints.
+         */
+        int    size;
+        
+        // constructor
+        CombinClassTable() {
+            cPoints = null;
+            size = 0;
+            pos = 0;
+            curClass=1;
+        }
+        
+        /**
+         * Copy the combining mark table from ccc and index in compact
+         * way.
+         * 
+         * @param cps : code point array
+         * @param size : size of ccc
+         * @param index : index of combining classes(0-255)
+         */
+        void generate(char[] cps, int numOfCM, int[] ccIndex) {
+            int count =0;
+            
+            cPoints = new char[numOfCM];
+            for (int i=0; i<256; i++) {
+                for (int j=0; j<ccIndex[i]; j++) {
+                    cPoints[count++] = cps[(i<<8)+j];
+                }
+                index[i] = count;
+            }
+            size = count;
+        }
+        
+        /**
+         * Get first CM(combining mark) with the combining class value cClass.
+         * @param cClass : combining class value.
+         * @return combining mark codepoint or 0 if no combining make with class value cClass
+         */
+        char GetFirstCM(int cClass) {
+            curClass=cClass;
+            if (cPoints==null || cClass==0 || index[cClass]==index[cClass-1]) {
+                return 0;
+            }
+            pos =1;
+            return cPoints[index[cClass-1]];
+        }
+        
+        /**
+         * Get next CM(combining mark) with the combining class value cClass.
+         * Return combining mark codepoint or 0 if no next CM.
+         */
+        char GetNextCM() {
+            if (cPoints==null || index[curClass]==(index[curClass-1]+pos))  {
+                return 0;
+            }
+            return cPoints[index[curClass-1] + (pos++)];
+        }
+        
+        // private data members
+        int pos;
+        int curClass;
+    }
+
+    private static final class BuildTable implements TrieBuilder.DataManipulate
+    {
+    // package private methods ------------------------------------------
+        
+        /**
+     * For construction of the Trie tables.
+     * Has to be labeled public
+     * @param cp
+     * @param offset
+     * @return data offset or 0 
+     */
+    public int getFoldedValue(int cp, int offset)
+    {
+        int limit = cp + 0x400;
+        while (cp < limit) {
+        int value = m_mapping_.getValue(cp);
+        boolean inBlockZero = m_mapping_.isInZeroBlock(cp);
+        int tag = getCETag(value);
+        if (inBlockZero == true) {
+            cp += TrieBuilder.DATA_BLOCK_LENGTH;
+        } 
+        else if (!(isSpecial(value) && (tag == CE_IMPLICIT_TAG_ 
+                        || tag == CE_NOT_FOUND_TAG_))) {
+                    // These are values that are starting in either UCA 
+                    // (IMPLICIT_TAG) or in the tailorings (NOT_FOUND_TAG). 
+                    // Presence of these tags means that there is nothing in 
+                    // this position and that it should be skipped.
+            return RuleBasedCollator.CE_SPECIAL_FLAG_ 
+            | (CE_SURROGATE_TAG_ << 24) | offset;
+        } 
+        else {
+            ++ cp;
+        }
+        }
+        return 0;
+    }
+    
+    // package private constructor --------------------------------------
+        
+    /**
+     * Returns a table
+     */
+    BuildTable(CollationRuleParser parser) 
+    {
+        m_collator_ = new RuleBasedCollator();
+        m_collator_.setWithUCAData();
+        MaxExpansionTable maxet = new MaxExpansionTable();
+        MaxJamoExpansionTable maxjet = new MaxJamoExpansionTable();
+        m_options_ = parser.m_options_;
+        m_expansions_ = new Vector();
+        // Do your own mallocs for the structure, array and have linear 
+        // Latin 1
+            int trieinitialvalue = RuleBasedCollator.CE_SPECIAL_FLAG_
+        | (CE_NOT_FOUND_TAG_ << 24);
+        // temporary fix for jb3822, 0x100000 -> 30000
+        m_mapping_ = new IntTrieBuilder(null, 0x30000, trieinitialvalue, 
+                                            trieinitialvalue, true); 
+        m_prefixLookup_ = new Hashtable();
+        // uhash_open(prefixLookupHash, prefixLookupComp);
+        m_contractions_ = new ContractionTable(m_mapping_);
+        // copy UCA's maxexpansion and merge as we go along
+        m_maxExpansions_ = maxet;
+        // adding an extra initial value for easier manipulation 
+        for (int i = 0; 
+         i < RuleBasedCollator.UCA_.m_expansionEndCE_.length; i ++) {
+        maxet.m_endExpansionCE_.add(new Integer(
+                            RuleBasedCollator.UCA_.m_expansionEndCE_[i]));
+        maxet.m_expansionCESize_.add(new Byte(
+                              RuleBasedCollator.UCA_.m_expansionEndCEMaxSize_[i]));
+        }
+        m_maxJamoExpansions_ = maxjet;
+        
+        m_unsafeCP_ = new byte[UNSAFECP_TABLE_SIZE_];
+        m_contrEndCP_ = new byte[UNSAFECP_TABLE_SIZE_];
+        Arrays.fill(m_unsafeCP_, (byte)0);
+        Arrays.fill(m_contrEndCP_, (byte)0);
+    }
+    
+        /**
+         * Duplicating a BuildTable.
+         * Not all data will be duplicated into their own object.
+         * @param table to clone
+         */
+        BuildTable(BuildTable table) 
+        {
+            m_collator_ = table.m_collator_;
+            m_mapping_ = new IntTrieBuilder(table.m_mapping_);
+            m_expansions_ = (Vector)table.m_expansions_.clone();
+            m_contractions_ = new ContractionTable(table.m_contractions_);
+            m_contractions_.m_mapping_ = m_mapping_;
+            m_options_ = table.m_options_;
+            m_maxExpansions_ = new MaxExpansionTable(table.m_maxExpansions_);
+            m_maxJamoExpansions_ 
+        = new MaxJamoExpansionTable(table.m_maxJamoExpansions_);
+            m_unsafeCP_ = new byte[table.m_unsafeCP_.length];
+            System.arraycopy(table.m_unsafeCP_, 0, m_unsafeCP_, 0,
+                             m_unsafeCP_.length);
+            m_contrEndCP_ = new byte[table.m_contrEndCP_.length];
+            System.arraycopy(table.m_contrEndCP_, 0, m_contrEndCP_, 0,
+                             m_contrEndCP_.length);
+        }
+        
+    // package private data members -------------------------------------
+        
+    RuleBasedCollator m_collator_;
+        IntTrieBuilder m_mapping_; 
+        Vector m_expansions_; 
+        ContractionTable m_contractions_;
+    // UCATableHeader image;
+    CollationRuleParser.OptionSet m_options_;
+    MaxExpansionTable m_maxExpansions_;
+    MaxJamoExpansionTable m_maxJamoExpansions_;
+    byte m_unsafeCP_[];
+    byte m_contrEndCP_[];
+    Hashtable m_prefixLookup_;
+    CombinClassTable cmLookup = null;
+    } 
+    
+    private static class Elements
+    {
+    // package private data members -------------------------------------
+        
+    String m_prefixChars_;
+    int m_prefix_;
+    String m_uchars_;
+    /**
+     * Working string
+     */
+    String m_cPoints_;    
+    /**
+     * Offset to the working string
+     */
+    int m_cPointsOffset_;
+    /** 
+     * These are collation elements - there could be more than one - in 
+     * case of expansion 
+     */    
+    int m_CEs_[];      
+        int m_CELength_;
+    /** 
+     * This is the value element maps in original table   
+     */
+    int m_mapCE_;         
+    int m_sizePrim_[];
+    int m_sizeSec_[];
+    int m_sizeTer_[];
+    boolean m_variableTop_;
+    boolean m_caseBit_;
+        
+    // package private constructors -------------------------------------
+        
+    /**
+     * Package private constructor
+     */
+    Elements()
+    {
+        m_sizePrim_ = new int[128];    
+        m_sizeSec_ = new int[128];    
+        m_sizeTer_ = new int[128];    
+            m_CEs_ = new int[256];
+            m_CELength_ = 0;
+    }
+
+        /**
+     * Package private constructor
+     */
+    Elements(Elements element)
+    {
+            m_prefixChars_ = element.m_prefixChars_;
+            m_prefix_ = element.m_prefix_;
+            m_uchars_ = element.m_uchars_;
+            m_cPoints_ = element.m_cPoints_;    
+            m_cPointsOffset_ = element.m_cPointsOffset_;    
+            m_CEs_ = element.m_CEs_;
+            m_CELength_ = element.m_CELength_;
+            m_mapCE_ = element.m_mapCE_;
+        m_sizePrim_ = element.m_sizePrim_;
+        m_sizeSec_ = element.m_sizeSec_;
+        m_sizeTer_ = element.m_sizeTer_;
+        m_variableTop_ = element.m_variableTop_;
+        m_caseBit_ = element.m_caseBit_;
+    }
+
+        // package private methods -------------------------------------------
+        
+        /**
+         * Initializing the elements
+         */
+        public void clear()
+        {
+            m_prefixChars_ = null;
+            m_prefix_ = 0;
+            m_uchars_ = null;
+            m_cPoints_ = null;    
+            m_cPointsOffset_ = 0;  
+            m_CELength_ = 0;
+            m_mapCE_ = 0;
+            Arrays.fill(m_sizePrim_, 0);
+            Arrays.fill(m_sizeSec_, 0);
+            Arrays.fill(m_sizeTer_, 0);
+            m_variableTop_ = false;
+            m_caseBit_ = false;
+        }
+
+        
+        /**
+         * Hashcode calculation for token
+         * @return the hashcode
+         */
+        public int hashCode()
+        {
+        String str = m_cPoints_.substring(m_cPointsOffset_);
+        return str.hashCode();
+    }
+        
+    /**
+     * Equals calculation
+     * @param target object to compare
+     * @return true if target is the same as this object
+     */
+    public boolean equals(Object target)
+    {
+        if (target == this) {
+        return true;
+        }
+        if (target instanceof Elements) {
+        Elements t = (Elements)target;
+        int size = m_cPoints_.length() - m_cPointsOffset_;
+        if (size == t.m_cPoints_.length() - t.m_cPointsOffset_) {
+            return t.m_cPoints_.regionMatches(t.m_cPointsOffset_, 
+                              m_cPoints_, 
+                              m_cPointsOffset_, size);
+        }
+            }
+            return false;
+    }
+    }
+
+    // private data member ---------------------------------------------------
+    
+    /**
+     * Maximum strength used in CE building
+     */
+    private static final int CE_BASIC_STRENGTH_LIMIT_ = 3;
+    /**
+     * Maximum collation strength
+     */
+    private static final int CE_STRENGTH_LIMIT_ = 16;
+    /**
+     * Strength mask array, used in inverse UCA
+     */
+    private static final int STRENGTH_MASK_[] = {0xFFFF0000, 0xFFFFFF00, 
+                                                 0xFFFFFFFF};
+    /**
+     * CE tag for not found
+     */
+    private static final int CE_NOT_FOUND_ = 0xF0000000;
+    /**
+     * CE tag for not found
+     */
+    private static final int CE_NOT_FOUND_TAG_ = 0;
+    /**
+     * This code point results in an expansion 
+     */
+    private static final int CE_EXPANSION_TAG_ = 1;
+    /** 
+     * Start of a contraction 
+     */
+    private static final int CE_CONTRACTION_TAG_ = 2;
+    /* 
+     * Thai character - do the reordering 
+     */
+    //private static final int CE_THAI_TAG_ = 3;            
+    /* 
+     * Charset processing, not yet implemented
+     */
+    //private static final int CE_CHARSET_TAG_ = 4;         
+    /** 
+     * Lead surrogate that is tailored and doesn't start a contraction 
+     */
+    private static final int CE_SURROGATE_TAG_ = 5;
+    /* 
+     * AC00-D7AF
+     */
+    //private static final int CE_HANGUL_SYLLABLE_TAG_ = 6;
+    /* 
+     * D800-DBFF
+     */
+    //private static final int CE_LEAD_SURROGATE_TAG_ = 7;
+    /* 
+     * DC00-DFFF
+     */
+    //private static final int CE_TRAIL_SURROGATE_TAG_ = 8; 
+    /*
+     * 0x3400-0x4DB5, 0x4E00-0x9FA5, 0xF900-0xFA2D
+     */    
+    //private static final int CE_CJK_IMPLICIT_TAG_ = 9;
+    private static final int CE_IMPLICIT_TAG_ = 10;
+    private static final int CE_SPEC_PROC_TAG_ = 11;
+    /** 
+     * This is a three byte primary with starting secondaries and tertiaries.
+     * It fits in a single 32 bit CE and is used instead of expansion to save
+     * space without affecting the performance (hopefully) 
+     */
+    private static final int CE_LONG_PRIMARY_TAG_ = 12;  
+    /** 
+     * Unsafe UChar hash table table size. Size is 32 bytes for 1 bit for each 
+     * latin 1 char + some power of two for hashing the rest of the chars. 
+     * Size in bytes                               
+     */
+    private static final int UNSAFECP_TABLE_SIZE_ = 1056;
+    /** 
+     * Mask value down to "some power of two" -1. Number of bits, not num of 
+     * bytes.       
+     */
+    private static final int UNSAFECP_TABLE_MASK_ = 0x1fff;
+    /**
+     * Case values
+     */
+    private static final int UPPER_CASE_ = 0x80;
+    private static final int MIXED_CASE_ = 0x40;
+    private static final int LOWER_CASE_ = 0x00;
+    /*
+     * Initial table size
+     */
+    //private static final int INIT_TABLE_SIZE_ = 1028;
+    /*
+     * Header size, copied from ICU4C, to be changed when that value changes
+     */
+    //private static final int HEADER_SIZE_ = 0xC4;
+    /**
+     * Contraction table new element indicator
+     */
+    private static final int CONTRACTION_TABLE_NEW_ELEMENT_ = 0xFFFFFF;
+    /**
+     * Parser for the rules
+     */
+    private CollationRuleParser m_parser_;
+    /**
+     * Utility UCA collation element iterator
+     */
+    private CollationElementIterator m_utilColEIter_;
+    /**
+     * Utility data members
+     */
+    private CEGenerator m_utilGens_[] = {new CEGenerator(), new CEGenerator(),
+                                         new CEGenerator()};
+    private int m_utilCEBuffer_[] = new int[CE_BASIC_STRENGTH_LIMIT_];
+    private int m_utilIntBuffer_[] = new int[CE_STRENGTH_LIMIT_];
+    private Elements m_utilElement_ = new Elements();
+    private Elements m_utilElement2_ = new Elements();
+    private CollationRuleParser.Token m_utilToken_ 
+    = new CollationRuleParser.Token();
+    private int m_utilCountBuffer_[] = new int[6];     
+    private long m_utilLongBuffer_[] = new long[5];
+    private WeightRange m_utilLowerWeightRange_[] = 
+    {new WeightRange(), new WeightRange(), 
+     new WeightRange(), new WeightRange(), 
+     new WeightRange()}; 
+    private WeightRange m_utilUpperWeightRange_[] = 
+    {new WeightRange(), new WeightRange(), 
+     new WeightRange(), new WeightRange(), 
+     new WeightRange()}; 
+    private WeightRange m_utilWeightRange_ = new WeightRange();
+    private char m_utilCharBuffer_[] = new char[256];
+    private CanonicalIterator m_utilCanIter_ = new CanonicalIterator("");
+    private StringBuffer m_utilStringBuffer_ = new StringBuffer("");
+    // Flag indicating a combining marks table is required or not.
+    private static boolean buildCMTabFlag = false;
+    
+    
+    // private methods -------------------------------------------------------
+    
+    /**
+     * @param listheader parsed rule tokens
+     * @exception Exception thrown when internal error occurs
+     */
+    private void initBuffers(CollationRuleParser.TokenListHeader listheader) 
+    throws Exception
+    {
+        CollationRuleParser.Token token = listheader.m_last_;
+        Arrays.fill(m_utilIntBuffer_, 0, CE_STRENGTH_LIMIT_, 0);
+        
+    token.m_toInsert_ = 1;
+    m_utilIntBuffer_[token.m_strength_] = 1;
+    while (token.m_previous_ != null) {
+        if (token.m_previous_.m_strength_ < token.m_strength_) { 
+                // going up
+        m_utilIntBuffer_[token.m_strength_] = 0;
+        m_utilIntBuffer_[token.m_previous_.m_strength_] ++;
+        } 
+            else if (token.m_previous_.m_strength_ > token.m_strength_) { 
+                // going down
+        m_utilIntBuffer_[token.m_previous_.m_strength_] = 1;
+        } 
+            else {
+        m_utilIntBuffer_[token.m_strength_] ++;
+        }
+        token = token.m_previous_;
+        token.m_toInsert_ = m_utilIntBuffer_[token.m_strength_];
+    } 
+        
+    token.m_toInsert_ = m_utilIntBuffer_[token.m_strength_];
+    INVERSE_UCA_.getInverseGapPositions(listheader);
+        
+    token = listheader.m_first_;
+    int fstrength = Collator.IDENTICAL;
+    int initstrength = Collator.IDENTICAL;
+        
+    m_utilCEBuffer_[Collator.PRIMARY] = mergeCE(listheader.m_baseCE_, 
+                            listheader.m_baseContCE_,
+                            Collator.PRIMARY);
+    m_utilCEBuffer_[Collator.SECONDARY] = mergeCE(listheader.m_baseCE_, 
+                              listheader.m_baseContCE_,
+                              Collator.SECONDARY);
+    m_utilCEBuffer_[Collator.TERTIARY] = mergeCE(listheader.m_baseCE_, 
+                             listheader.m_baseContCE_,
+                             Collator.TERTIARY);
+    while (token != null) {
+        fstrength = token.m_strength_;
+        if (fstrength < initstrength) {
+        initstrength = fstrength;
+        if (listheader.m_pos_[fstrength] == -1) {
+            while (listheader.m_pos_[fstrength] == -1 && fstrength > 0) 
+            {
+                fstrength--;
+            }
+            if (listheader.m_pos_[fstrength] == -1) {
+            throw new Exception("Internal program error");
+            }
+        }
+        if (initstrength == Collator.TERTIARY) { 
+                    // starting with tertiary
+            m_utilCEBuffer_[Collator.PRIMARY] 
+            = listheader.m_gapsLo_[fstrength * 3];
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = listheader.m_gapsLo_[fstrength * 3 + 1];
+            m_utilCEBuffer_[Collator.TERTIARY] = getCEGenerator(
+                                    m_utilGens_[Collator.TERTIARY], 
+                                    listheader.m_gapsLo_, 
+                                    listheader.m_gapsHi_, 
+                                    token, fstrength); 
+        } 
+                else if (initstrength == Collator.SECONDARY) { 
+                    // secondaries
+            m_utilCEBuffer_[Collator.PRIMARY] 
+            = listheader.m_gapsLo_[fstrength * 3];
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = getCEGenerator(
+                                         m_utilGens_[Collator.SECONDARY], 
+                                         listheader.m_gapsLo_, 
+                                         listheader.m_gapsHi_, 
+                                         token, fstrength);
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getSimpleCEGenerator(
+                           m_utilGens_[Collator.TERTIARY], 
+                           token, Collator.TERTIARY);
+        } 
+                else { 
+                    // primaries 
+            m_utilCEBuffer_[Collator.PRIMARY] 
+            = getCEGenerator(
+                     m_utilGens_[Collator.PRIMARY], 
+                     listheader.m_gapsLo_, 
+                     listheader.m_gapsHi_, 
+                     token, fstrength);
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = getSimpleCEGenerator(
+                                               m_utilGens_[Collator.SECONDARY], 
+                                               token, Collator.SECONDARY);
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getSimpleCEGenerator(
+                                               m_utilGens_[Collator.TERTIARY], 
+                                               token, Collator.TERTIARY);
+        }
+        } 
+            else {
+        if (token.m_strength_ == Collator.TERTIARY) {
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getNextGenerated(m_utilGens_[Collator.TERTIARY]);
+        } 
+                else if (token.m_strength_ == Collator.SECONDARY) {
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = getNextGenerated(m_utilGens_[Collator.SECONDARY]);
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getSimpleCEGenerator(
+                           m_utilGens_[Collator.TERTIARY], 
+                           token, Collator.TERTIARY);
+        } 
+                else if (token.m_strength_ == Collator.PRIMARY) {
+            m_utilCEBuffer_[Collator.PRIMARY] 
+            = getNextGenerated(
+                       m_utilGens_[Collator.PRIMARY]);
+            m_utilCEBuffer_[Collator.SECONDARY] 
+            = getSimpleCEGenerator(
+                           m_utilGens_[Collator.SECONDARY], 
+                           token, Collator.SECONDARY);
+            m_utilCEBuffer_[Collator.TERTIARY] 
+            = getSimpleCEGenerator(
+                           m_utilGens_[Collator.TERTIARY], 
+                           token, Collator.TERTIARY);
+        }
+        }
+        doCE(m_utilCEBuffer_, token);
+        token = token.m_next_;
+    }
+    }
+
+    /**
+     * Get the next generated ce
+     * @param g ce generator
+     * @return next generated ce 
+     */
+    private int getNextGenerated(CEGenerator g) 
+    {
+        g.m_current_ = nextWeight(g);
+        return g.m_current_;
+    }
+
+    /**
+     * @param g CEGenerator
+     * @param token rule token
+     * @param strength 
+     * @return ce generator
+     * @exception Exception thrown when internal error occurs
+     */
+    private int getSimpleCEGenerator(CEGenerator g, 
+                                     CollationRuleParser.Token token, 
+                                     int strength) throws Exception
+    {
+        int high, low, count = 1;
+        int maxbyte = (strength == Collator.TERTIARY) ? 0x3F : 0xFF;
+
+    if (strength == Collator.SECONDARY) {
+        low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+        high = 0xFFFFFFFF;
+        count = 0xFF - RuleBasedCollator.COMMON_TOP_2_;
+    } 
+        else {
+        low = RuleBasedCollator.BYTE_COMMON_ << 24; //0x05000000;
+        high = 0x40000000;
+        count = 0x40 - RuleBasedCollator.BYTE_COMMON_;
+    }
+    
+    if (token.m_next_ != null && token.m_next_.m_strength_ == strength) {
+        count = token.m_next_.m_toInsert_;
+    } 
+    
+    g.m_rangesLength_ = allocateWeights(low, high, count, maxbyte, 
+                                            g.m_ranges_);
+    g.m_current_ = RuleBasedCollator.BYTE_COMMON_ << 24;
+    
+    if (g.m_rangesLength_ == 0) {
+        throw new Exception("Internal program error");
+    }
+    return g.m_current_;
+    }
+
+    /**
+     * Combines 2 ce into one with respect to the argument strength
+     * @param ce1 first ce
+     * @param ce2 second ce
+     * @param strength strength to use
+     * @return combined ce
+     */
+    private static int mergeCE(int ce1, int ce2, int strength) 
+    {
+        int mask = RuleBasedCollator.CE_TERTIARY_MASK_;
+        if (strength == Collator.SECONDARY) {
+            mask = RuleBasedCollator.CE_SECONDARY_MASK_;
+        }
+        else if (strength == Collator.PRIMARY) {
+            mask = RuleBasedCollator.CE_PRIMARY_MASK_;
+        }
+        ce1 &= mask;
+        ce2 &= mask;
+        switch (strength) 
+        {
+            case Collator.PRIMARY:
+                return ce1 | ce2 >>> 16;
+            case Collator.SECONDARY:
+                return ce1 << 16 | ce2 << 8;
+            default:
+                return ce1 << 24 | ce2 << 16;
+        }
+    }
+    
+    /**
+     * @param g CEGenerator
+     * @param lows low gap array
+     * @param highs high gap array
+     * @param token rule token
+     * @param fstrength 
+     * @exception Exception thrown when internal error occurs
+     */
+    private int getCEGenerator(CEGenerator g, int lows[], int highs[], 
+                               CollationRuleParser.Token token, int fstrength) 
+    throws Exception
+    {
+    int strength = token.m_strength_;
+    int low = lows[fstrength * 3 + strength];
+    int high = highs[fstrength * 3 + strength];
+    int maxbyte = 0;
+    if(strength == Collator.TERTIARY) {
+        maxbyte = 0x3F;
+    } else if(strength == Collator.PRIMARY) {
+        maxbyte = 0xFE;
+    } else {
+        maxbyte = 0xFF;
+    }
+    
+    int count = token.m_toInsert_;
+    
+    if (Utility.compareUnsigned(low, high) >= 0 
+            && strength > Collator.PRIMARY) {
+        int s = strength;
+        while (true) {
+        s --;
+        if (lows[fstrength * 3 + s] != highs[fstrength * 3 + s]) {
+            if (strength == Collator.SECONDARY) {
+                if (low < (RuleBasedCollator.COMMON_TOP_2_ << 24)) {
+                    // Override if low range is less than UCOL_COMMON_TOP2. 
+                    low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+                }
+                high = 0xFFFFFFFF;
+            } 
+            else {
+                if ( low < RuleBasedCollator.COMMON_BOTTOM_3<<24 ) { 
+                    // Override if low range is less than UCOL_COMMON_BOT3. 
+                    low = RuleBasedCollator.COMMON_BOTTOM_3 <<24;
+                }   
+                high = 0x40000000;
+            }
+            break;
+        }
+        if (s < 0) {
+            throw new Exception("Internal program error");
+        }
+        }
+    } 
+    if (low == 0) {
+        low = 0x01000000;
+    }
+    if (strength == Collator.SECONDARY) { // similar as simple 
+        if (Utility.compareUnsigned(low, 
+                    RuleBasedCollator.COMMON_BOTTOM_2_ << 24) >= 0
+                && Utility.compareUnsigned(low, 
+                       RuleBasedCollator.COMMON_TOP_2_ << 24) < 0) {
+        low = RuleBasedCollator.COMMON_TOP_2_ << 24;
+            }
+        if (Utility.compareUnsigned(high, 
+                    RuleBasedCollator.COMMON_BOTTOM_2_ << 24) > 0 
+                && Utility.compareUnsigned(high, 
+                       RuleBasedCollator.COMMON_TOP_2_ << 24) < 0) {
+        high = RuleBasedCollator.COMMON_TOP_2_ << 24;
+        } 
+        if (Utility.compareUnsigned(low, 
+                    RuleBasedCollator.COMMON_BOTTOM_2_ << 24) < 0) {
+        g.m_rangesLength_ = allocateWeights(
+                            RuleBasedCollator.BYTE_UNSHIFTED_MIN_ << 24, 
+                            high, count, maxbyte, g.m_ranges_);
+        g.m_current_ = nextWeight(g);
+        //g.m_current_ = RuleBasedCollator.COMMON_BOTTOM_2_ << 24;
+        return g.m_current_;
+        }
+    } 
+    
+    g.m_rangesLength_ = allocateWeights(low, high, count, maxbyte, 
+                                            g.m_ranges_);
+    if (g.m_rangesLength_ == 0) {
+        throw new Exception("Internal program error");
+    }
+    g.m_current_ = nextWeight(g);
+    return g.m_current_;
+    }
+
+    /**
+     * @param ceparts list of collation elements parts
+     * @param token rule token
+     * @exception Exception thrown when forming case bits for expansions fails
+     */
+    private void doCE(int ceparts[], CollationRuleParser.Token token) 
+    throws Exception
+    {
+        // this one makes the table and stuff
+    // int noofbytes[] = new int[3];
+    for (int i = 0; i < 3; i ++) {
+        // noofbytes[i] = countBytes(ceparts[i]);
+            m_utilIntBuffer_[i] = countBytes(ceparts[i]);
+    }
+    
+    // Here we have to pack CEs from parts
+    int cei = 0;
+    int value = 0;
+    
+    while ((cei << 1) < m_utilIntBuffer_[0] || cei < m_utilIntBuffer_[1] 
+               || cei < m_utilIntBuffer_[2]) {
+        if (cei > 0) {
+        value = RuleBasedCollator.CE_CONTINUATION_MARKER_;
+        } else {
+        value = 0;
+        }
+        
+        if ((cei << 1) < m_utilIntBuffer_[0]) {
+        value |= ((ceparts[0] >> (32 - ((cei + 1) << 4))) & 0xFFFF) 
+                      << 16;
+        }
+        if (cei < m_utilIntBuffer_[1]) {
+        value |= ((ceparts[1] >> (32 - ((cei + 1) << 3))) & 0xFF) << 8;
+        }
+            
+        if (cei < m_utilIntBuffer_[2]) {
+        value |= ((ceparts[2] >> (32 - ((cei+1) << 3))) & 0x3F);
+        }
+        token.m_CE_[cei] = value;
+        cei ++;
+    }
+    if (cei == 0) { // totally ignorable
+        token.m_CELength_ = 1;
+        token.m_CE_[0] = 0;
+    } 
+    else { // there is at least something
+        token.m_CELength_ = cei;
+    }
+          
+    // Case bits handling for expansion
+    if(token.m_CE_[0] != 0) { // case bits should be set only for non-ignorables
+        int startoftokenrule = token.m_source_ & 0xFF;
+        if ((token.m_source_ >>> 24) > 1) {
+            // Do it manually
+            int length = token.m_source_ >>> 24;
+            String tokenstr = token.m_rules_.substring(startoftokenrule, 
+                                   startoftokenrule + length);
+            token.m_CE_[0] |= getCaseBits(tokenstr);
+        } 
+        else {
+            // Copy it from the UCA
+            int caseCE 
+            = getFirstCE(token.m_rules_.charAt(startoftokenrule));
+            token.m_CE_[0] |= (caseCE & 0xC0);
+        }
+    }
+    }
+
+    /**
+     * Count the number of non-zero bytes used in the ce
+     * @param ce 
+     * @return number of non-zero bytes used in ce
+     */
+    private static final int countBytes(int ce)   
+    {                               
+    int mask = 0xFFFFFFFF;   
+    int result = 0;              
+    while (mask != 0) {            
+        if ((ce & mask) != 0) { 
+        result ++;            
+        }                           
+        mask >>>= 8;                 
+    }   
+        return result;                          
+    }
+    
+    /**
+     * We are ready to create collation elements
+     * @param t build table to insert
+     * @param lh rule token list header
+     */
+    private void createElements(BuildTable t, 
+                CollationRuleParser.TokenListHeader lh)
+    {
+    CollationRuleParser.Token tok = lh.m_first_;
+    m_utilElement_.clear();
+    while (tok != null) {
+        // first, check if there are any expansions
+        // if there are expansions, we need to do a little bit more 
+        // processing since parts of expansion can be tailored, while 
+        // others are not
+        if (tok.m_expansion_ != 0) {
+        int len = tok.m_expansion_ >>> 24;
+        int currentSequenceLen = len;
+        int expOffset = tok.m_expansion_ & 0x00FFFFFF;
+        m_utilToken_.m_source_ = currentSequenceLen | expOffset;
+        m_utilToken_.m_rules_ = m_parser_.m_source_;
+    
+        while (len > 0) {
+            currentSequenceLen = len;
+            while (currentSequenceLen > 0) {
+            m_utilToken_.m_source_ = (currentSequenceLen << 24) 
+                | expOffset;
+            CollationRuleParser.Token expt = 
+                (CollationRuleParser.Token)
+                m_parser_.m_hashTable_.get(m_utilToken_);
+            if (expt != null 
+                && expt.m_strength_ 
+                != CollationRuleParser.TOKEN_RESET_) { 
+                // expansion is tailored
+                int noOfCEsToCopy = expt.m_CELength_;
+                for (int j = 0; j < noOfCEsToCopy; j ++) {
+                tok.m_expCE_[tok.m_expCELength_ + j] 
+                    = expt.m_CE_[j];
+                }
+                tok.m_expCELength_ += noOfCEsToCopy;
+                // never try to add codepoints and CEs.
+                // For some odd reason, it won't work.
+                expOffset += currentSequenceLen; //noOfCEsToCopy;
+                len -= currentSequenceLen; //noOfCEsToCopy;
+                break;
+            } 
+            else {
+                currentSequenceLen --;
+            }
+            }
+            if (currentSequenceLen == 0) { 
+            // couldn't find any tailored subsequence, will have to 
+            // get one from UCA. first, get the UChars from the 
+            // rules then pick CEs out until there is no more and 
+            // stuff them into expansion
+            m_utilColEIter_.setText(m_parser_.m_source_.substring(
+                                          expOffset, expOffset + 1));
+            while (true) {
+                int order = m_utilColEIter_.next();
+                if (order == CollationElementIterator.NULLORDER) {
+                break;
+                }
+                tok.m_expCE_[tok.m_expCELength_ ++] = order;
+            }
+            expOffset ++;
+            len --;
+            }
+        }
+        } 
+        else {
+        tok.m_expCELength_ = 0;
+        }
+    
+        // set the ucaelement with obtained values
+            m_utilElement_.m_CELength_ = tok.m_CELength_ + tok.m_expCELength_;
+            
+        // copy CEs
+        System.arraycopy(tok.m_CE_, 0, m_utilElement_.m_CEs_, 0, 
+                             tok.m_CELength_);
+        System.arraycopy(tok.m_expCE_, 0, m_utilElement_.m_CEs_, 
+                             tok.m_CELength_, tok.m_expCELength_);
+    
+        // copy UChars 
+        // We kept prefix and source kind of together, as it is a kind of a 
+        // contraction. 
+        // However, now we have to slice the prefix off the main thing - 
+        m_utilElement_.m_prefix_ = 0;// el.m_prefixChars_;
+        m_utilElement_.m_cPointsOffset_ = 0; //el.m_uchars_;
+        if (tok.m_prefix_ != 0) { 
+        // we will just copy the prefix here, and adjust accordingly in 
+        // the addPrefix function in ucol_elm. The reason is that we 
+        // need to add both composed AND decomposed elements to the 
+        // unsafe table.
+        int size = tok.m_prefix_ >> 24;
+        int offset = tok.m_prefix_ & 0x00FFFFFF;
+        m_utilElement_.m_prefixChars_ 
+            = m_parser_.m_source_.substring(offset, offset + size);
+        size = (tok.m_source_ >> 24) - (tok.m_prefix_ >> 24); 
+        offset = (tok.m_source_ & 0x00FFFFFF) + (tok.m_prefix_ >> 24);
+        m_utilElement_.m_uchars_ 
+            = m_parser_.m_source_.substring(offset, offset + size);
+        } 
+        else {
+        m_utilElement_.m_prefixChars_ = null;
+        int offset = tok.m_source_ & 0x00FFFFFF;
+        int size = tok.m_source_ >>> 24;
+        m_utilElement_.m_uchars_ = m_parser_.m_source_.substring(offset, 
+                                     offset + size);
+        }
+        m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+        
+        boolean containCombinMarks = false;
+        for (int i = 0; i < m_utilElement_.m_cPoints_.length() 
+             - m_utilElement_.m_cPointsOffset_; i ++) {
+        if (isJamo(m_utilElement_.m_cPoints_.charAt(i))) {
+            t.m_collator_.m_isJamoSpecial_ = true;
+            break;
+        }
+        if ( !buildCMTabFlag ) {
+            // check combining class
+            char fcd = NormalizerImpl.getFCD16(m_utilElement_.m_cPoints_.charAt(i));
+            if ( (fcd & 0xff) == 0 ) {
+                // reset flag when current char is not combining mark.
+                containCombinMarks = false;  
+            }
+            else {
+                containCombinMarks = true;
+            }
+        }
+        }
+        
+        if ( !buildCMTabFlag && containCombinMarks ) {
+            buildCMTabFlag = true;
+        }
+            
+            /***
+    
+            // Case bits handling 
+            m_utilElement_.m_CEs_[0] &= 0xFFFFFF3F; 
+        // Clean the case bits field
+            if (m_utilElement_.m_cPoints_.length() 
+                - m_utilElement_.m_cPointsOffset_ > 1) {
+        // Do it manually
+        m_utilElement_.m_CEs_[0] 
+        |= getCaseBits(m_utilElement_.m_cPoints_);
+            } 
+            else {
+        // Copy it from the UCA
+        int caseCE = getFirstCE(m_utilElement_.m_cPoints_.charAt(0));
+        m_utilElement_.m_CEs_[0] |= (caseCE & 0xC0);
+            }
+    
+            ***/
+        // and then, add it
+        addAnElement(t, m_utilElement_);
+        tok = tok.m_next_;
+    }   
+    }
+    
+    /**
+     * Testing if the string argument has case
+     * @param src string
+     * @return the case for this char array
+     * @exception Exception thrown when internal program error occurs
+     */
+    private final int getCaseBits(String src) throws Exception
+    {
+    int uCount = 0; 
+    int lCount = 0;
+    src = Normalizer.decompose(src, true);
+    m_utilColEIter_.setText(src);
+    for (int i = 0; i < src.length(); i++) {
+        m_utilColEIter_.setText(src.substring(i, i + 1));
+        int order = m_utilColEIter_.next();
+        if (RuleBasedCollator.isContinuation(order)) {
+        throw new Exception("Internal program error");
+        }
+        if ((order & RuleBasedCollator.CE_CASE_BIT_MASK_)
+        == UPPER_CASE_) {
+        uCount ++;
+        } 
+        else {
+        char ch = src.charAt(i);
+        if (UCharacter.isLowerCase(ch)) {
+            lCount ++;
+        } 
+        else {
+            if (toSmallKana(ch) == ch && toLargeKana(ch) != ch) {
+            lCount ++;
+            }
+        }
+        }
+    }
+        
+    if (uCount != 0 && lCount != 0) {
+        return MIXED_CASE_;
+    } 
+    else if (uCount != 0) {
+        return UPPER_CASE_;
+    } 
+    else {
+        return LOWER_CASE_;
+    }
+    }
+    
+    /**
+     * Converts a char to the uppercase Kana
+     * @param ch character to convert
+     * @return the converted Kana character
+     */
+    private static final char toLargeKana(char ch) 
+    {
+    if (0x3042 < ch && ch < 0x30ef) { // Kana range 
+        switch (ch - 0x3000) {
+        case 0x41: 
+        case 0x43: 
+        case 0x45: 
+        case 0x47: 
+        case 0x49: 
+        case 0x63: 
+        case 0x83: 
+        case 0x85: 
+        case 0x8E:
+        case 0xA1: 
+        case 0xA3: 
+        case 0xA5: 
+        case 0xA7: 
+        case 0xA9: 
+        case 0xC3: 
+        case 0xE3: 
+        case 0xE5: 
+        case 0xEE:
+        ch ++;
+        break;
+        case 0xF5:
+        ch = 0x30AB;
+        break;
+        case 0xF6:
+        ch = 0x30B1;
+        break;
+        }
+    }
+    return ch;
+    }
+    
+    /**
+     * Converts a char to the lowercase Kana
+     * @param ch character to convert
+     * @return the converted Kana character
+     */
+    private static final char toSmallKana(char ch) 
+    {
+    if (0x3042 < ch && ch < 0x30ef) { // Kana range
+        switch (ch - 0x3000) {
+        case 0x42: 
+        case 0x44: 
+        case 0x46: 
+        case 0x48: 
+        case 0x4A: 
+        case 0x64: 
+        case 0x84: 
+        case 0x86: 
+        case 0x8F:
+        case 0xA2: 
+        case 0xA4: 
+        case 0xA6: 
+        case 0xA8: 
+        case 0xAA: 
+        case 0xC4: 
+        case 0xE4: 
+        case 0xE6: 
+        case 0xEF:
+        ch --;
+        break;
+        case 0xAB:
+        ch = 0x30F5;
+        break;
+        case 0xB1:
+        ch = 0x30F6;
+        break;
+        }
+    }
+    return ch;
+    }
+
+    /**
+     * This should be connected to special Jamo handling.
+     */
+    private int getFirstCE(char ch) 
+    {
+        m_utilColEIter_.setText(UCharacter.toString(ch));
+    return m_utilColEIter_.next();
+    }
+    
+    /** 
+     * This adds a read element, while testing for existence 
+     * @param t build table
+     * @param element 
+     * @return ce
+     */
+    private int addAnElement(BuildTable t, Elements element) 
+    {
+        Vector expansions = t.m_expansions_;
+        element.m_mapCE_ = 0;
+        
+        if (element.m_CELength_ == 1) {
+            element.m_mapCE_ = element.m_CEs_[0];
+
+        } else {     
+        // unfortunately, it looks like we have to look for a long primary 
+        // here since in canonical closure we are going to hit some long 
+        // primaries from the first phase, and they will come back as 
+        // continuations/expansions destroying the effect of the previous 
+        // opitimization. A long primary is a three byte primary with 
+        // starting secondaries and tertiaries. It can appear in long runs 
+        // of only primary differences (like east Asian tailorings) also, 
+        // it should not be an expansion, as expansions would break with 
+        // this
+        if (element.m_CELength_ == 2 // a two CE expansion 
+        && RuleBasedCollator.isContinuation(element.m_CEs_[1]) 
+        && (element.m_CEs_[1] 
+            & (~(0xFF << 24 | RuleBasedCollator.CE_CONTINUATION_MARKER_))) 
+        == 0 // that has only primaries in continuation
+        && (((element.m_CEs_[0] >> 8) & 0xFF) 
+            == RuleBasedCollator.BYTE_COMMON_) 
+        // a common secondary
+        && ((element.m_CEs_[0] & 0xFF) 
+            == RuleBasedCollator.BYTE_COMMON_) // and a common tertiary
+        ) {
+        element.m_mapCE_ = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+            // a long primary special
+            | (CE_LONG_PRIMARY_TAG_ << 24) 
+            // first and second byte of primary
+            | ((element.m_CEs_[0] >> 8) & 0xFFFF00) 
+            // third byte of primary
+            | ((element.m_CEs_[1] >> 24) & 0xFF);   
+        } 
+        else {
+                // omitting expansion offset in builder
+                // (HEADER_SIZE_ >> 2)
+        int expansion = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+            | (CE_EXPANSION_TAG_ 
+               << RuleBasedCollator.CE_TAG_SHIFT_) 
+            | (addExpansion(expansions, element.m_CEs_[0])
+               << 4) & 0xFFFFF0;
+    
+        for (int i = 1; i < element.m_CELength_; i ++) {
+            addExpansion(expansions, element.m_CEs_[i]);
+        }
+        if (element.m_CELength_ <= 0xF) {
+            expansion |= element.m_CELength_;
+        } 
+        else {
+            addExpansion(expansions, 0);
+        }
+        element.m_mapCE_ = expansion;
+        setMaxExpansion(element.m_CEs_[element.m_CELength_ - 1],
+                (byte)element.m_CELength_, 
+                t.m_maxExpansions_);
+        if (isJamo(element.m_cPoints_.charAt(0))){
+            t.m_collator_.m_isJamoSpecial_ = true;
+            setMaxJamoExpansion(element.m_cPoints_.charAt(0),
+                    element.m_CEs_[element.m_CELength_ 
+                              - 1],
+                    (byte)element.m_CELength_,
+                    t.m_maxJamoExpansions_);
+        }
+        }
+    }
+        
+        // We treat digits differently - they are "uber special" and should be
+        // processed differently if numeric collation is on. 
+        int uniChar = 0;
+        if ((element.m_uchars_.length() == 2) 
+            && UTF16.isLeadSurrogate(element.m_uchars_.charAt(0))) {
+            uniChar = UCharacterProperty.getRawSupplementary(
+                                 element.m_uchars_.charAt(0), 
+                                 element.m_uchars_.charAt(1));      
+        } 
+        else if (element.m_uchars_.length() == 1) {
+            uniChar = element.m_uchars_.charAt(0);
+        }
+        
+        // Here, we either have one normal CE OR mapCE is set. Therefore, we 
+        // stuff only one element to the expansion buffer. When we encounter a 
+        // digit and we don't do numeric collation, we will just pick the CE 
+        // we have and break out of case (see ucol.cpp ucol_prv_getSpecialCE 
+        // && ucol_prv_getSpecialPrevCE). If we picked a special, further 
+        // processing will occur. If it's a simple CE, we'll return due
+        // to how the loop is constructed.
+        if (uniChar != 0 && UCharacter.isDigit(uniChar)) {
+            // prepare the element
+            int expansion = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+        | (CollationElementIterator.CE_DIGIT_TAG_
+           << RuleBasedCollator.CE_TAG_SHIFT_) | 1; 
+            if (element.m_mapCE_ != 0) { 
+                // if there is an expansion, we'll pick it here
+                expansion |= (addExpansion(expansions, element.m_mapCE_) << 4);
+            } 
+            else {
+                expansion |= (addExpansion(expansions, element.m_CEs_[0]) << 4);
+            }
+            element.m_mapCE_ = expansion;
+        }
+    
+    // here we want to add the prefix structure.
+    // I will try to process it as a reverse contraction, if possible.
+    // prefix buffer is already reversed.
+    
+    if (element.m_prefixChars_ != null &&
+            element.m_prefixChars_.length() - element.m_prefix_ > 0) {
+        // We keep the seen prefix starter elements in a hashtable we need 
+            // it to be able to distinguish between the simple codepoints and 
+            // prefix starters. Also, we need to use it for canonical closure.
+        m_utilElement2_.m_caseBit_ = element.m_caseBit_;
+            m_utilElement2_.m_CELength_ = element.m_CELength_;
+            m_utilElement2_.m_CEs_ = element.m_CEs_;
+            m_utilElement2_.m_mapCE_ = element.m_mapCE_;
+            //m_utilElement2_.m_prefixChars_ = element.m_prefixChars_;
+            m_utilElement2_.m_sizePrim_ = element.m_sizePrim_;
+            m_utilElement2_.m_sizeSec_ = element.m_sizeSec_;
+            m_utilElement2_.m_sizeTer_ = element.m_sizeTer_;
+            m_utilElement2_.m_variableTop_ = element.m_variableTop_;
+            m_utilElement2_.m_prefix_ = element.m_prefix_;
+            m_utilElement2_.m_prefixChars_ = Normalizer.compose(element.m_prefixChars_, false);
+            m_utilElement2_.m_uchars_ = element.m_uchars_;
+            m_utilElement2_.m_cPoints_ = element.m_cPoints_;
+            m_utilElement2_.m_cPointsOffset_ = 0;
+            
+        if (t.m_prefixLookup_ != null) {
+        Elements uCE = (Elements)t.m_prefixLookup_.get(element);
+        if (uCE != null) { 
+                    // there is already a set of code points here
+            element.m_mapCE_ = addPrefix(t, uCE.m_mapCE_, element);
+        } 
+                else { // no code points, so this spot is clean
+            element.m_mapCE_ = addPrefix(t, CE_NOT_FOUND_, element);
+            uCE = new Elements(element);
+            uCE.m_cPoints_ = uCE.m_uchars_;
+            t.m_prefixLookup_.put(uCE, uCE);
+        }
+        if (m_utilElement2_.m_prefixChars_.length() 
+            != element.m_prefixChars_.length() - element.m_prefix_
+                    || !m_utilElement2_.m_prefixChars_.regionMatches(0,
+                                     element.m_prefixChars_, element.m_prefix_,
+                                     m_utilElement2_.m_prefixChars_.length())) {
+            // do it!
+                    m_utilElement2_.m_mapCE_ = addPrefix(t, element.m_mapCE_, 
+                                                         m_utilElement2_);
+        }
+        }
+    }
+    
+    // We need to use the canonical iterator here
+    // the way we do it is to generate the canonically equivalent strings 
+    // for the contraction and then add the sequences that pass FCD check
+    if (element.m_cPoints_.length() - element.m_cPointsOffset_ > 1 
+        && !(element.m_cPoints_.length() - element.m_cPointsOffset_ == 2 
+         && UTF16.isLeadSurrogate(element.m_cPoints_.charAt(0)) 
+         && UTF16.isTrailSurrogate(element.m_cPoints_.charAt(1)))) { 
+            // this is a contraction, we should check whether a composed form 
+            // should also be included
+        m_utilCanIter_.setSource(element.m_cPoints_);
+        String source = m_utilCanIter_.next();
+        while (source != null && source.length() > 0) {
+        if (Normalizer.quickCheck(source, Normalizer.FCD,0) 
+                    != Normalizer.NO) {
+            element.m_uchars_ = source;
+            element.m_cPoints_ = element.m_uchars_;
+            finalizeAddition(t, element);
+        }
+        source = m_utilCanIter_.next();
+        }
+        
+        return element.m_mapCE_;
+    } 
+        else {
+        return finalizeAddition(t, element);  
+    }
+    }
+    
+    /**
+     * Adds an expansion ce to the expansion vector
+     * @param expansions vector to add to
+     * @param value of the expansion
+     * @return the current position of the new element
+     */
+    private static final int addExpansion(Vector expansions, int value) 
+    {
+    expansions.add(new Integer(value));
+    return expansions.size() - 1;
+    }
+    
+    /**
+     * Looks for the maximum length of all expansion sequences ending with the 
+     * same collation element. The size required for maxexpansion and maxsize 
+     * is returned if the arrays are too small.
+     * @param endexpansion the last expansion collation element to be added
+     * @param expansionsize size of the expansion
+     * @param maxexpansion data structure to store the maximum expansion data.
+     * @returns size of the maxexpansion and maxsize used.
+     */
+    private static int setMaxExpansion(int endexpansion, byte expansionsize,
+                       MaxExpansionTable maxexpansion)
+    {
+    int start = 0;
+    int limit = maxexpansion.m_endExpansionCE_.size();
+        long unsigned = (long)endexpansion;
+        unsigned &= 0xFFFFFFFFl;
+    
+    // using binary search to determine if last expansion element is 
+    // already in the array 
+    int result = -1;
+    while (start < limit - 1) {                                                
+        int mid = start + ((limit - start) >> 1);                                    
+            long unsignedce = ((Integer)maxexpansion.m_endExpansionCE_.get(
+                                       mid)).intValue(); 
+            unsignedce &= 0xFFFFFFFFl;
+        if (unsigned <= unsignedce) {                                                   
+        limit = mid;                                                           
+        }                                                                        
+        else {                                                                   
+        start = mid;                                                           
+        }                                                                        
+    } 
+          
+    if (((Integer)maxexpansion.m_endExpansionCE_.get(start)).intValue() 
+        == endexpansion) {                                                     
+        result = start;  
+    }                                                                          
+    else if (((Integer)maxexpansion.m_endExpansionCE_.get(limit)).intValue() 
+         == endexpansion) {                                                     
+        result = limit;      
+    }                                            
+    if (result > -1) {
+        // found the ce in expansion, we'll just modify the size if it 
+        // is smaller
+        Object currentsize = maxexpansion.m_expansionCESize_.get(result);
+        if (((Byte)currentsize).byteValue() < expansionsize) {
+        maxexpansion.m_expansionCESize_.set(result, 
+                            new Byte(expansionsize));
+        }
+    }
+    else {
+        // we'll need to squeeze the value into the array. initial 
+        // implementation. shifting the subarray down by 1
+        maxexpansion.m_endExpansionCE_.insertElementAt(
+                                                   new Integer(endexpansion),
+                                                   start + 1);
+        maxexpansion.m_expansionCESize_.insertElementAt(
+                                new Byte(expansionsize),
+                                start + 1);
+    }
+    return maxexpansion.m_endExpansionCE_.size();
+    }
+    
+    /**
+     * Sets the maximum length of all jamo expansion sequences ending with the 
+     * same collation element. The size required for maxexpansion and maxsize 
+     * is returned if the arrays are too small.
+     * @param ch the jamo codepoint
+     * @param endexpansion the last expansion collation element to be added
+     * @param expansionsize size of the expansion
+     * @param maxexpansion data structure to store the maximum expansion data.
+     * @returns size of the maxexpansion and maxsize used.
+     */
+    private static int setMaxJamoExpansion(char ch, int endexpansion,
+                       byte expansionsize,
+                       MaxJamoExpansionTable maxexpansion)
+    {
+    boolean isV = true;
+    if (ch >= 0x1100 && ch <= 0x1112) {
+        // determines L for Jamo, doesn't need to store this since it is 
+        // never at the end of a expansion
+        if (maxexpansion.m_maxLSize_ < expansionsize) {
+        maxexpansion.m_maxLSize_ = expansionsize;
+        }
+        return maxexpansion.m_endExpansionCE_.size();
+    }
+    
+    if (ch >= 0x1161 && ch <= 0x1175) {
+        // determines V for Jamo
+        if (maxexpansion.m_maxVSize_ < expansionsize) {
+        maxexpansion.m_maxVSize_ = expansionsize;
+        }
+    }
+    
+    if (ch >= 0x11A8 && ch <= 0x11C2) {
+        isV = false;
+        // determines T for Jamo
+        if (maxexpansion.m_maxTSize_ < expansionsize) {
+        maxexpansion.m_maxTSize_ = expansionsize;
+        }
+    }
+
+        int pos = maxexpansion.m_endExpansionCE_.size();    
+    while (pos > 0) {
+        pos --;
+        if (((Integer)maxexpansion.m_endExpansionCE_.get(pos)).intValue() 
+        == endexpansion) {
+        return maxexpansion.m_endExpansionCE_.size();
+        }
+    }
+    maxexpansion.m_endExpansionCE_.add(new Integer(endexpansion));
+    maxexpansion.m_isV_.add(isV ? Boolean.TRUE : Boolean.FALSE);
+          
+    return maxexpansion.m_endExpansionCE_.size();
+    }
+    
+    /**
+     * Adds a prefix to the table
+     * @param t build table to update
+     * @param CE collation element to add
+     * @param element rule element to add
+     * @return modified ce
+     */
+    private int addPrefix(BuildTable t, int CE, Elements element) 
+    {
+    // currently the longest prefix we're supporting in Japanese is two 
+    // characters long. Although this table could quite easily mimic 
+    // complete contraction stuff there is no good reason to make a general 
+    // solution, as it would require some error prone messing.
+    ContractionTable contractions = t.m_contractions_;
+    String oldCP = element.m_cPoints_;
+    int oldCPOffset = element.m_cPointsOffset_;
+        
+    contractions.m_currentTag_ = CE_SPEC_PROC_TAG_;
+    // here, we will normalize & add prefix to the table.
+    int size = element.m_prefixChars_.length() - element.m_prefix_;
+    for (int j = 1; j < size; j ++) {   
+        // First add NFD prefix chars to unsafe CP hash table 
+        // Unless it is a trail surrogate, which is handled algoritmically 
+        // and shouldn't take up space in the table.
+        char ch = element.m_prefixChars_.charAt(j + element.m_prefix_);
+        if (!UTF16.isTrailSurrogate(ch)) {
+        unsafeCPSet(t.m_unsafeCP_, ch);
+        }
+    }
+        
+    // StringBuffer reversed = new StringBuffer();
+        m_utilStringBuffer_.delete(0, m_utilStringBuffer_.length());
+    for (int j = 0; j < size; j ++) { 
+        // prefixes are going to be looked up backwards
+        // therefore, we will promptly reverse the prefix buffer...
+        int offset = element.m_prefixChars_.length() - j - 1;
+        m_utilStringBuffer_.append(element.m_prefixChars_.charAt(offset));
+    }
+    element.m_prefixChars_ = m_utilStringBuffer_.toString();
+    element.m_prefix_ = 0;
+    
+    // the first codepoint is also unsafe, as it forms a 'contraction' with 
+    // the prefix
+    if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(0))) {
+        unsafeCPSet(t.m_unsafeCP_, element.m_cPoints_.charAt(0));
+    }
+        
+    element.m_cPoints_ = element.m_prefixChars_;
+    element.m_cPointsOffset_ = element.m_prefix_;
+    
+    // Add the last char of the contraction to the contraction-end hash 
+    // table. unless it is a trail surrogate, which is handled 
+    // algorithmically and shouldn't be in the table
+    if (!UTF16.isTrailSurrogate(
+                    element.m_cPoints_.charAt(element.m_cPoints_.length() - 1))) {
+        ContrEndCPSet(t.m_contrEndCP_, element.m_cPoints_.charAt(
+                                     element.m_cPoints_.length() - 1));
+    }
+    // First we need to check if contractions starts with a surrogate
+    // int cp = UTF16.charAt(element.m_cPoints_, element.m_cPointsOffset_);
+    
+    // If there are any Jamos in the contraction, we should turn on special 
+    // processing for Jamos
+    if (isJamo(element.m_prefixChars_.charAt(element.m_prefix_))) {
+        t.m_collator_.m_isJamoSpecial_ = true;
+    }
+    // then we need to deal with it 
+    // we could aready have something in table - or we might not 
+    if (!isPrefix(CE)) { 
+        // if it wasn't contraction, we wouldn't end up here
+        int firstContractionOffset = addContraction(contractions, 
+                            CONTRACTION_TABLE_NEW_ELEMENT_, 
+                            (char)0, CE);
+        int newCE = processContraction(contractions, element, 
+                       CE_NOT_FOUND_);
+        addContraction(contractions, firstContractionOffset, 
+                           element.m_prefixChars_.charAt(element.m_prefix_), 
+                           newCE);
+        addContraction(contractions, firstContractionOffset, (char)0xFFFF, 
+                           CE);
+        CE = constructSpecialCE(CE_SPEC_PROC_TAG_, firstContractionOffset);
+    } 
+    else { 
+        // we are adding to existing contraction 
+        // there were already some elements in the table, so we need to add 
+        // a new contraction 
+        // Two things can happen here: either the codepoint is already in 
+        // the table, or it is not
+        char ch = element.m_prefixChars_.charAt(element.m_prefix_);
+        int position = findCP(contractions, CE, ch);
+        if (position > 0) {       
+        // if it is we just continue down the chain 
+        int eCE = getCE(contractions, CE, position);
+        int newCE = processContraction(contractions, element, eCE);
+        setContraction(contractions, CE, position, ch, newCE);
+        } 
+        else {                  
+        // if it isn't, we will have to create a new sequence 
+        processContraction(contractions, element, CE_NOT_FOUND_);
+        insertContraction(contractions, CE, ch, element.m_mapCE_);
+        }
+    }
+    
+    element.m_cPoints_ = oldCP;
+    element.m_cPointsOffset_ = oldCPOffset;
+    
+    return CE;
+    }
+    
+    /**
+     * Checks if the argument ce is a contraction
+     * @param CE collation element
+     * @return true if argument ce is a contraction
+     */
+    private static final boolean isContraction(int CE) 
+    {
+    return isSpecial(CE) && (getCETag(CE) == CE_CONTRACTION_TAG_);
+    }
+    
+    /**
+     * Checks if the argument ce has a prefix
+     * @param CE collation element
+     * @return true if argument ce has a prefix
+     */
+    private static final boolean isPrefix(int CE) 
+    {
+    return isSpecial(CE) && (getCETag(CE) == CE_SPEC_PROC_TAG_);
+    }
+    
+    /**
+     * Checks if the argument ce is special
+     * @param CE collation element
+     * @return true if argument ce is special
+     */
+    private static final boolean isSpecial(int CE) 
+    {
+    return (CE & RuleBasedCollator.CE_SPECIAL_FLAG_) == 0xF0000000;
+    }
+    
+    /**
+     * Checks if the argument ce has a prefix
+     * @param CE collation element
+     * @return true if argument ce has a prefix
+     */
+    private static final int getCETag(int CE) 
+    {
+    return (CE & RuleBasedCollator.CE_TAG_MASK_) >>> 
+        RuleBasedCollator.CE_TAG_SHIFT_;
+    }
+    
+    /**
+     * Gets the ce at position in contraction table
+     * @param table contraction table
+     * @param position offset to the contraction table
+     * @return ce
+     */
+    private static final int getCE(ContractionTable table, int element, 
+                   int position) 
+    {
+    element &= 0xFFFFFF;
+        BasicContractionTable tbl = getBasicContractionTable(table, element);
+        
+        if (tbl == null) {
+            return CE_NOT_FOUND_;
+        }
+    if (position > tbl.m_CEs_.size() || position == -1) {
+        return CE_NOT_FOUND_;
+    } 
+    else {
+        return ((Integer)tbl.m_CEs_.get(position)).intValue();
+    }
+    }
+    
+    /**
+     * Sets the unsafe character
+     * @param table unsafe table
+     * @param c character to be added
+     */
+    private static final void unsafeCPSet(byte table[], char c) 
+    {
+    int hash = c;
+    if (hash >= (UNSAFECP_TABLE_SIZE_ << 3)) {
+        if (hash >= 0xd800 && hash <= 0xf8ff) {
+        // Part of a surrogate, or in private use area. 
+        // These don't go in the table                            
+        return;
+        }
+        hash = (hash & UNSAFECP_TABLE_MASK_) + 256;
+    }
+    table[hash >> 3] |= (1 << (hash & 7));
+    }
+    
+    /**
+     * Sets the contraction end character
+     * @param table contraction end table
+     * @param c character to be added
+     */
+    private static final void ContrEndCPSet(byte table[], char c) 
+    {
+    int hash = c;
+    if (hash >= (UNSAFECP_TABLE_SIZE_ << 3)) {
+        hash = (hash & UNSAFECP_TABLE_MASK_) + 256;
+    }
+    table[hash >> 3] |= (1 << (hash & 7));
+    }
+    
+    /** 
+     * Adds more contractions in table. If element is non existant, it creates 
+     * on. Returns element handle 
+     * @param table contraction table
+     * @param element offset to the contraction table
+     * @param codePoint codepoint to add
+     * @param value
+     * @return collation element
+     */
+    private static int addContraction(ContractionTable table, int element, 
+                                      char codePoint, int value) 
+    {
+    BasicContractionTable tbl = getBasicContractionTable(table, element);
+    if (tbl == null) {
+        tbl = addAContractionElement(table);
+        element = table.m_elements_.size() - 1;
+    } 
+    
+    tbl.m_CEs_.add(new Integer(value));
+    tbl.m_codePoints_.append(codePoint);
+    return constructSpecialCE(table.m_currentTag_, element);
+    }
+
+    /**
+     * Adds a contraction element to the table
+     * @param table contraction table to update
+     * @return contraction 
+     */
+    private static BasicContractionTable addAContractionElement(
+                                ContractionTable table) 
+    {
+    BasicContractionTable result = new BasicContractionTable();
+    table.m_elements_.add(result);
+    return result;
+    }
+
+    /**
+     * Constructs a special ce
+     * @param tag special tag
+     * @param CE collation element 
+     * @return a contraction ce
+     */
+    private static final int constructSpecialCE(int tag, int CE) 
+    {
+    return RuleBasedCollator.CE_SPECIAL_FLAG_ 
+        | (tag << RuleBasedCollator.CE_TAG_SHIFT_) | (CE & 0xFFFFFF);
+    }
+    
+    /**
+     * Sets and inserts the element that has a contraction
+     * @param contractions contraction table 
+     * @param element contracting element
+     * @param existingCE
+     * @return contraction ce
+     */
+    private static int processContraction(ContractionTable contractions, 
+                      Elements element, 
+                      int existingCE) 
+    {
+    int firstContractionOffset = 0;
+    // end of recursion 
+    if (element.m_cPoints_.length() - element.m_cPointsOffset_ == 1) {
+        if (isContractionTableElement(existingCE) 
+        && getCETag(existingCE) == contractions.m_currentTag_) {
+        changeContraction(contractions, existingCE, (char)0, 
+                  element.m_mapCE_);
+        changeContraction(contractions, existingCE, (char)0xFFFF,
+                                  element.m_mapCE_);
+        return existingCE;
+        } 
+        else {
+        // can't do just that. existingCe might be a contraction, 
+        // meaning that we need to do another step
+        return element.m_mapCE_; 
+        }
+    }
+    
+    // this recursion currently feeds on the only element we have... 
+    // We will have to copy it in order to accomodate for both backward 
+    // and forward cycles
+    // we encountered either an empty space or a non-contraction element 
+    // this means we are constructing a new contraction sequence 
+    element.m_cPointsOffset_ ++;
+    if (!isContractionTableElement(existingCE)) { 
+        // if it wasn't contraction, we wouldn't end up here
+        firstContractionOffset = addContraction(contractions, 
+                            CONTRACTION_TABLE_NEW_ELEMENT_, 
+                            (char)0, existingCE);
+        int newCE = processContraction(contractions, element, 
+                       CE_NOT_FOUND_);
+        addContraction(contractions, firstContractionOffset, 
+               element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+               newCE);
+        addContraction(contractions, firstContractionOffset, 
+               (char)0xFFFF, existingCE);
+        existingCE = constructSpecialCE(contractions.m_currentTag_, 
+                        firstContractionOffset);
+    } 
+    else { 
+        // we are adding to existing contraction
+        // there were already some elements in the table, so we need to add 
+        // a new contraction 
+        // Two things can happen here: either the codepoint is already in 
+        // the table, or it is not
+        int position = findCP(contractions, existingCE, 
+                  element.m_cPoints_.charAt(element.m_cPointsOffset_));
+        if (position > 0) {       
+        // if it is we just continue down the chain 
+        int eCE = getCE(contractions, existingCE, position);
+        int newCE = processContraction(contractions, element, eCE);
+        setContraction(contractions, existingCE, position, 
+                           element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                   newCE);
+        } 
+        else {  
+        // if it isn't, we will have to create a new sequence 
+        int newCE = processContraction(contractions, element, 
+                           CE_NOT_FOUND_);
+        insertContraction(contractions, existingCE, 
+                  element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                  newCE);
+        }
+    }
+    element.m_cPointsOffset_ --;
+    return existingCE;
+    }
+    
+    /**
+     * Checks if CE belongs to the contraction table
+     * @param CE collation element to test
+     * @return true if CE belongs to the contraction table
+     */
+    private static final boolean isContractionTableElement(int CE) 
+    { 
+    return isSpecial(CE) 
+        && (getCETag(CE) == CE_CONTRACTION_TAG_
+        || getCETag(CE) == CE_SPEC_PROC_TAG_);
+    }
+    
+    /**
+     * Gets the codepoint 
+     * @param table contraction table
+     * @param element offset to the contraction element in the table
+     * @param codePoint code point to look for
+     * @return the offset to the code point
+     */
+    private static int findCP(ContractionTable table, int element, 
+                  char codePoint) 
+    {
+    BasicContractionTable tbl = getBasicContractionTable(table, element);
+    if (tbl == null) {
+        return -1;
+    }
+    
+    int position = 0;
+    while (codePoint > tbl.m_codePoints_.charAt(position)) {
+        position ++;
+        if (position > tbl.m_codePoints_.length()) {
+        return -1;
+        }
+    }
+    if (codePoint == tbl.m_codePoints_.charAt(position)) {
+        return position;
+    } 
+    else {
+        return -1;
+    }
+    }
+
+    /**
+     * Gets the contraction element out of the contraction table
+     * @param table contraction table
+     * @param offset to the element in the contraction table
+     * @return basic contraction element at offset in the contraction table
+     */
+    private static final BasicContractionTable getBasicContractionTable(
+                                    ContractionTable table,
+                                    int offset) 
+    {
+        offset &= 0xFFFFFF;
+        if (offset == 0xFFFFFF) {
+        return null;
+        }
+    return (BasicContractionTable)table.m_elements_.get(offset);
+    }
+    
+    /**
+     * Changes the contraction element
+     * @param table contraction table
+     * @param element offset to the element in the contraction table
+     * @param codePoint codepoint 
+     * @param newCE new collation element
+     * @return basic contraction element at offset in the contraction table
+     */
+    private static final int changeContraction(ContractionTable table, 
+                                               int element, char codePoint, 
+                                               int newCE) 
+    {
+    BasicContractionTable tbl = getBasicContractionTable(table, element);    
+    if (tbl == null) {
+        return 0;
+    }
+    int position = 0;
+    while (codePoint > tbl.m_codePoints_.charAt(position)) {
+        position ++;
+        if (position > tbl.m_codePoints_.length()) {
+        return CE_NOT_FOUND_;
+        }
+    }
+    if (codePoint == tbl.m_codePoints_.charAt(position)) {
+        tbl.m_CEs_.set(position, new Integer(newCE));
+        return element & 0xFFFFFF;
+    } 
+    else {
+        return CE_NOT_FOUND_;
+    }
+    }
+    
+    /** 
+     * Sets a part of contraction sequence in table. If element is non 
+     * existant, it creates on. Returns element handle.
+     * @param table contraction table
+     * @param element offset to the contraction table
+     * @param offset
+     * @param codePoint contraction character
+     * @param value ce value
+     * @return new contraction ce
+     */
+    private static final int setContraction(ContractionTable table, 
+                                            int element, int offset, 
+                                            char codePoint, int value) 
+    {
+        element &= 0xFFFFFF;
+    BasicContractionTable tbl = getBasicContractionTable(table, element);    
+    if (tbl == null) {
+        tbl = addAContractionElement(table);
+        element = table.m_elements_.size() - 1;
+    }
+    
+    tbl.m_CEs_.set(offset, new Integer(value));
+    tbl.m_codePoints_.setCharAt(offset, codePoint);
+    return constructSpecialCE(table.m_currentTag_, element);
+    }
+    
+    /** 
+     * Inserts a part of contraction sequence in table. Sequences behind the 
+     * offset are moved back. If element is non existent, it creates on. 
+     * @param table contraction
+     * @param element offset to the table contraction
+     * @param codePoint code point
+     * @param value collation element value
+     * @return contraction collation element
+     */
+    private static final int insertContraction(ContractionTable table, 
+                                               int element, char codePoint, 
+                                               int value) 
+    {
+    element &= 0xFFFFFF;
+    BasicContractionTable tbl = getBasicContractionTable(table, element);
+    if (tbl == null) {
+        tbl = addAContractionElement(table);
+        element = table.m_elements_.size() - 1;
+    }
+    
+    int offset = 0;
+    while (tbl.m_codePoints_.charAt(offset) < codePoint 
+           && offset < tbl.m_codePoints_.length()) {
+        offset ++;
+    }
+    
+    tbl.m_CEs_.insertElementAt(new Integer(value), offset);
+    tbl.m_codePoints_.insert(offset, codePoint);
+    
+    return constructSpecialCE(table.m_currentTag_, element);
+    }
+    
+    /**
+     * Finalize addition
+     * @param t build table
+     * @param element to add
+     */
+    private final static int finalizeAddition(BuildTable t, Elements element) 
+    {
+    int CE = CE_NOT_FOUND_;
+        // This should add a completely ignorable element to the  
+        // unsafe table, so that backward iteration will skip 
+        // over it when treating contractions. 
+        if (element.m_mapCE_ == 0) { 
+            for (int i = 0; i < element.m_cPoints_.length(); i ++) { 
+                char ch = element.m_cPoints_.charAt(i);
+                if (!UTF16.isTrailSurrogate(ch)) { 
+                    unsafeCPSet(t.m_unsafeCP_, ch); 
+                } 
+            } 
+        } 
+
+    if (element.m_cPoints_.length() - element.m_cPointsOffset_ > 1) { 
+        // we're adding a contraction
+        int cp = UTF16.charAt(element.m_cPoints_, element.m_cPointsOffset_);
+        CE = t.m_mapping_.getValue(cp);
+        CE = addContraction(t, CE, element);
+    } 
+    else { 
+        // easy case
+        CE = t.m_mapping_.getValue(element.m_cPoints_.charAt(
+                                 element.m_cPointsOffset_));
+        
+        if (CE != CE_NOT_FOUND_) {
+        if(isContractionTableElement(CE)) { 
+            // adding a non contraction element (thai, expansion, 
+            // single) to already existing contraction 
+            if (!isPrefix(element.m_mapCE_)) { 
+            // we cannot reenter prefix elements - as we are going 
+            // to create a dead loop
+            // Only expansions and regular CEs can go here... 
+            // Contractions will never happen in this place
+            setContraction(t.m_contractions_, CE, 0, (char)0, 
+                       element.m_mapCE_);
+            // This loop has to change the CE at the end of 
+            // contraction REDO!
+            changeLastCE(t.m_contractions_, CE, element.m_mapCE_);
+            }
+        } 
+        else {
+            t.m_mapping_.setValue(element.m_cPoints_.charAt(
+                                    element.m_cPointsOffset_), 
+                      element.m_mapCE_);
+            if (element.m_prefixChars_ != null && 
+                element.m_prefixChars_.length()>0 &&
+                getCETag(CE) != CE_IMPLICIT_TAG_) {
+                // Add CE for standalone precontext char. 
+                Elements origElem = new Elements();
+                origElem.m_prefixChars_ =  null;
+                origElem.m_uchars_ = element.m_cPoints_;
+                origElem.m_cPoints_ = origElem.m_uchars_;
+                origElem.m_CEs_[0] = CE;
+                origElem.m_mapCE_ = CE;
+                origElem.m_CELength_ = 1;
+                finalizeAddition(t, origElem);
+            }
+        }
+        } 
+        else {
+        t.m_mapping_.setValue(element.m_cPoints_.charAt(
+                                element.m_cPointsOffset_), 
+                                      element.m_mapCE_);
+        }
+    }
+    return CE;
+    }
+    
+    /** 
+     * Note regarding surrogate handling: We are interested only in the single
+     * or leading surrogates in a contraction. If a surrogate is somewhere else
+     * in the contraction, it is going to be handled as a pair of code units,
+     * as it doesn't affect the performance AND handling surrogates specially
+     * would complicate code way too much.
+     */
+    private static int addContraction(BuildTable t, int CE, Elements element) 
+    {
+    ContractionTable contractions = t.m_contractions_;
+    contractions.m_currentTag_ = CE_CONTRACTION_TAG_;
+    
+    // First we need to check if contractions starts with a surrogate
+    int cp = UTF16.charAt(element.m_cPoints_, 0);
+    int cpsize = 1;
+    if (UCharacter.isSupplementary(cp)) {
+        cpsize = 2;
+    }
+    if (cpsize < element.m_cPoints_.length()) { 
+        // This is a real contraction, if there are other characters after 
+        // the first
+        int size = element.m_cPoints_.length() - element.m_cPointsOffset_;
+        for (int j = 1; j < size; j ++) {   
+        // First add contraction chars to unsafe CP hash table 
+        // Unless it is a trail surrogate, which is handled 
+        // algoritmically and shouldn't take up space in the table.
+        if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(
+                                      element.m_cPointsOffset_ + j))) {
+            unsafeCPSet(t.m_unsafeCP_, 
+                element.m_cPoints_.charAt(
+                              element.m_cPointsOffset_ + j));
+        }
+        }
+        // Add the last char of the contraction to the contraction-end 
+        // hash table. unless it is a trail surrogate, which is handled 
+        // algorithmically and shouldn't be in the table
+        if (!UTF16.isTrailSurrogate(element.m_cPoints_.charAt(
+                                  element.m_cPoints_.length() -1))) {
+        ContrEndCPSet(t.m_contrEndCP_, 
+                  element.m_cPoints_.charAt(
+                            element.m_cPoints_.length() -1));
+        }
+    
+        // If there are any Jamos in the contraction, we should turn on 
+        // special processing for Jamos
+        if (isJamo(element.m_cPoints_.charAt(element.m_cPointsOffset_))) {
+        t.m_collator_.m_isJamoSpecial_ = true;
+        }
+        // then we need to deal with it 
+        // we could aready have something in table - or we might not 
+        element.m_cPointsOffset_ += cpsize;
+        if (!isContraction(CE)) { 
+        // if it wasn't contraction, we wouldn't end up here
+        int firstContractionOffset = addContraction(contractions, 
+                                CONTRACTION_TABLE_NEW_ELEMENT_, (char)0, CE);
+        int newCE = processContraction(contractions, element, 
+                           CE_NOT_FOUND_);
+        addContraction(contractions, firstContractionOffset, 
+                   element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                   newCE);
+        addContraction(contractions, firstContractionOffset, 
+                               (char)0xFFFF, CE);
+        CE = constructSpecialCE(CE_CONTRACTION_TAG_, 
+                    firstContractionOffset);
+        } 
+        else { 
+        // we are adding to existing contraction 
+        // there were already some elements in the table, so we need to 
+        // add a new contraction
+        // Two things can happen here: either the codepoint is already 
+        // in the table, or it is not 
+        int position = findCP(contractions, CE, 
+                      element.m_cPoints_.charAt(element.m_cPointsOffset_));
+        if (position > 0) {       
+            // if it is we just continue down the chain
+            int eCE = getCE(contractions, CE, position);
+            int newCE = processContraction(contractions, element, eCE);
+            setContraction(contractions, CE, position, 
+                   element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                   newCE);
+        } 
+        else {                  
+            // if it isn't, we will have to create a new sequence 
+            int newCE = processContraction(contractions, element, 
+                           CE_NOT_FOUND_);
+            insertContraction(contractions, CE, 
+                      element.m_cPoints_.charAt(element.m_cPointsOffset_), 
+                                      newCE);
+        }
+        }
+        element.m_cPointsOffset_ -= cpsize;
+        t.m_mapping_.setValue(cp, CE);
+    } 
+    else if (!isContraction(CE)) { 
+        // this is just a surrogate, and there is no contraction 
+        t.m_mapping_.setValue(cp, element.m_mapCE_);
+    } 
+    else { 
+        // fill out the first stage of the contraction with the surrogate 
+        // CE 
+        changeContraction(contractions, CE, (char)0, element.m_mapCE_);
+        changeContraction(contractions, CE, (char)0xFFFF, element.m_mapCE_);
+    }
+    return CE;
+    }
+    
+    /** 
+     * this is for adding non contractions 
+     * @param table contraction table
+     * @param element offset to the contraction table
+     * @param value collation element value
+     * @return new collation element 
+     */
+    private static final int changeLastCE(ContractionTable table, int element, 
+                                          int value) 
+    {
+    BasicContractionTable tbl = getBasicContractionTable(table, element);
+    if (tbl == null) {
+        return 0;
+    }
+    
+    tbl.m_CEs_.set(tbl.m_CEs_.size() - 1, new Integer(value));
+    return constructSpecialCE(table.m_currentTag_, element & 0xFFFFFF);
+    }
+    
+    /**
+     * Given a set of ranges calculated by allocWeights(), iterate through the 
+     * weights. Sets the next weight in cegenerator.m_current_.
+     * @param cegenerator object that contains ranges weight range array and
+     *        its rangeCount
+     * @return the next weight
+     */
+    private static int nextWeight(CEGenerator cegenerator) 
+    {
+        if (cegenerator.m_rangesLength_ > 0) {
+            // get maxByte from the .count field
+            int maxByte = cegenerator.m_ranges_[0].m_count_;
+            // get the next weight 
+            int weight = cegenerator.m_ranges_[0].m_start_;
+            if (weight == cegenerator.m_ranges_[0].m_end_) {
+                // this range is finished, remove it and move the following 
+                // ones up 
+                cegenerator.m_rangesLength_ --;
+                if (cegenerator.m_rangesLength_ > 0) {
+                    System.arraycopy(cegenerator.m_ranges_, 1, 
+                                     cegenerator.m_ranges_, 0, 
+                                     cegenerator.m_rangesLength_);
+                    cegenerator.m_ranges_[0].m_count_ = maxByte; 
+                    // keep maxByte in ranges[0]
+                }
+            } 
+            else {
+                // increment the weight for the next value
+                cegenerator.m_ranges_[0].m_start_ 
+            = incWeight(weight, cegenerator.m_ranges_[0].m_length2_, 
+                maxByte);
+            }
+            return weight;
+        }
+        return -1;
+    }
+    
+    /**
+     * Increment the collation weight
+     * @param weight to increment
+     * @param length
+     * @param maxByte
+     * @return new incremented weight
+     */
+    private static final int incWeight(int weight, int length, int maxByte) 
+    {
+        while (true) {
+            int b = getWeightByte(weight, length);
+            if (b < maxByte) {
+                return setWeightByte(weight, length, b + 1);
+            } 
+            else {
+                // roll over, set this byte to BYTE_FIRST_TAILORED_ and 
+                // increment the previous one
+                weight = setWeightByte(weight, length, 
+                                       RuleBasedCollator.BYTE_FIRST_TAILORED_);
+                -- length;
+            }
+        }
+    }
+    
+    /**
+     * Gets the weight byte
+     * @param weight
+     * @param index
+     * @return byte
+     */
+    private static final int getWeightByte(int weight, int index) 
+    {
+        return (weight >> ((4 - index) << 3)) & 0xff;
+    }
+    
+    /**
+     * Set the weight byte in table
+     * @param weight 
+     * @param index
+     * @param b byte
+     */
+    private static final int setWeightByte(int weight, int index, int b) 
+    {
+        index <<= 3;
+        // 0xffffffff except a 00 "hole" for the index-th byte
+        int mask = 0xffffffff >>> index;
+        index = 32 - index;
+        mask |= 0xffffff00 << index;
+        return (weight & mask) | (b << index);
+    }
+    
+    /**
+     * Call getWeightRanges and then determine heuristically which ranges to 
+     * use for a given number of weights between (excluding) two limits
+     * @param lowerLimit
+     * @param upperLimit
+     * @param n
+     * @param maxByte
+     * @param ranges
+     * @return
+     */
+    private int allocateWeights(int lowerLimit, int upperLimit, int n,
+                                int maxByte, WeightRange ranges[]) 
+    {
+        // number of usable byte values 3..maxByte
+        int countBytes = maxByte - RuleBasedCollator.BYTE_FIRST_TAILORED_ + 1;
+        // [0] unused, [5] to make index checks unnecessary, m_utilCountBuffer_
+        // countBytes to the power of index, m_utilLongBuffer_ for unsignedness
+        // gcc requires explicit initialization 
+        m_utilLongBuffer_[0] = 1;
+        m_utilLongBuffer_[1] = countBytes;
+        m_utilLongBuffer_[2] = m_utilLongBuffer_[1] * countBytes;
+        m_utilLongBuffer_[3] = m_utilLongBuffer_[2] * countBytes;
+        m_utilLongBuffer_[4] = m_utilLongBuffer_[3] * countBytes;
+        int rangeCount = getWeightRanges(lowerLimit, upperLimit, maxByte, 
+                                         countBytes, ranges);
+        if (rangeCount <= 0) {
+            return 0;
+        }
+        // what is the maximum number of weights with these ranges?
+        long maxCount = 0;
+        for (int i = 0; i < rangeCount; ++ i) {
+            maxCount += (long)ranges[i].m_count_ 
+        * m_utilLongBuffer_[4 - ranges[i].m_length_];
+        }
+        if (maxCount < n) {
+            return 0;
+        }
+        // set the length2 and count2 fields
+        for (int i = 0; i < rangeCount; ++ i) {
+            ranges[i].m_length2_ = ranges[i].m_length_;
+            ranges[i].m_count2_ = ranges[i].m_count_;
+        }
+        // try until we find suitably large ranges
+        while (true) {
+            // get the smallest number of bytes in a range
+            int minLength = ranges[0].m_length2_;
+            // sum up the number of elements that fit into ranges of each byte 
+            // length
+            Arrays.fill(m_utilCountBuffer_, 0);
+            for (int i = 0; i < rangeCount; ++ i) {
+                m_utilCountBuffer_[ranges[i].m_length2_] += ranges[i].m_count2_;
+            }
+            // now try to allocate n elements in the available short ranges 
+            if (n <= m_utilCountBuffer_[minLength] 
+        + m_utilCountBuffer_[minLength + 1]) {
+                // trivial cases, use the first few ranges
+                maxCount = 0;
+                rangeCount = 0;
+                do {
+                    maxCount += ranges[rangeCount].m_count2_;
+                    ++ rangeCount;
+                } while (n > maxCount);
+                break;
+            } 
+            else if (n <= ranges[0].m_count2_ * countBytes) {
+                // easy case, just make this one range large enough by 
+                // lengthening it once more, possibly split it
+                rangeCount = 1;
+                // calculate how to split the range between maxLength-1 
+                // (count1) and maxLength (count2) 
+                long power_1 
+            = m_utilLongBuffer_[minLength - ranges[0].m_length_];
+                long power = power_1 * countBytes;
+                int count2 = (int)((n + power - 1) / power);
+                int count1 = ranges[0].m_count_ - count2;
+                // split the range
+                if (count1 < 1) {
+                    // lengthen the entire range to maxLength 
+                    lengthenRange(ranges, 0, maxByte, countBytes);
+                } 
+                else {
+                    // really split the range
+                    // create a new range with the end and initial and current 
+                    // length of the old one
+                    rangeCount = 2;
+                    ranges[1].m_end_ = ranges[0].m_end_;
+                    ranges[1].m_length_ = ranges[0].m_length_;
+                    ranges[1].m_length2_ = minLength;
+                    // set the end of the first range according to count1
+                    int i = ranges[0].m_length_;
+                    int b = getWeightByte(ranges[0].m_start_, i) + count1 - 1;
+                    // ranges[0].count and count1 may be >countBytes from 
+                    // merging adjacent ranges; b > maxByte is possible
+                    if (b <= maxByte) {
+                        ranges[0].m_end_ = setWeightByte(ranges[0].m_start_, i, 
+                                                         b);
+                    } 
+                    else {
+                        ranges[0].m_end_ = setWeightByte(
+                             incWeight(ranges[0].m_start_, i - 1, 
+                                   maxByte), 
+                             i, b - countBytes);
+                    }
+                    // set the bytes in the end weight at length + 1..length2 
+                    // to maxByte
+                    b = (maxByte << 24) | (maxByte << 16) | (maxByte << 8)
+                        | maxByte; // this used to be 0xffffffff 
+                    ranges[0].m_end_ = truncateWeight(ranges[0].m_end_, i) 
+            | (b >>> (i << 3)) 
+            & (b << ((4 - minLength) << 3));
+                    // set the start of the second range to immediately follow 
+                    // the end of the first one
+                    ranges[1].m_start_ = incWeight(ranges[0].m_end_, minLength, 
+                                                   maxByte);
+                    // set the count values (informational)
+                    ranges[0].m_count_ = count1;
+                    ranges[1].m_count_ = count2;
+    
+                    ranges[0].m_count2_ = (int)(count1 * power_1);
+                    // will be *countBytes when lengthened 
+                    ranges[1].m_count2_ = (int)(count2 * power_1); 
+    
+                    // lengthen the second range to maxLength
+                    lengthenRange(ranges, 1, maxByte, countBytes);
+                }
+                break;
+            }
+            // no good match, lengthen all minLength ranges and iterate 
+            for (int i=0; ranges[i].m_length2_ == minLength; ++ i) {
+                lengthenRange(ranges, i, maxByte, countBytes);
+            }
+        }
+    
+        if (rangeCount > 1) {
+            // sort the ranges by weight values 
+            Arrays.sort(ranges, 0, rangeCount);
+        }
+    
+        // set maxByte in ranges[0] for ucol_nextWeight()
+        ranges[0].m_count_ = maxByte;
+    
+        return rangeCount;
+    }
+    
+    /**
+     * Updates the range length
+     * @param range weight range array
+     * @param offset to weight range array
+     * @param maxByte
+     * @param countBytes
+     * @return new length
+     */
+    private static final int lengthenRange(WeightRange range[], int offset, 
+                                           int maxByte, int countBytes) 
+    {
+        int length = range[offset].m_length2_ + 1;
+        range[offset].m_start_ = setWeightTrail(range[offset].m_start_, length, 
+                        RuleBasedCollator.BYTE_FIRST_TAILORED_);
+        range[offset].m_end_ = setWeightTrail(range[offset].m_end_, length, 
+                                              maxByte);
+        range[offset].m_count2_ *= countBytes;
+        range[offset].m_length2_ = length;
+        return length;
+    }
+    
+    /**
+     * Gets the weight 
+     * @param weight
+     * @param length
+     * @param trail
+     * @return new weight
+     */
+    private static final int setWeightTrail(int weight, int length, int trail) 
+    {
+        length = (4 - length) << 3;
+        return (weight & (0xffffff00 << length)) | (trail << length);
+    }
+    
+    /**
+     * take two CE weights and calculate the
+     * possible ranges of weights between the two limits, excluding them
+     * for weights with up to 4 bytes there are up to 2*4-1=7 ranges
+     * @param lowerLimit
+     * @param upperLimit
+     * @param maxByte
+     * @param countBytes
+     * @param ranges
+     * @return weight ranges
+     */
+    private int getWeightRanges(int lowerLimit, int upperLimit, int maxByte, 
+                                int countBytes, WeightRange ranges[]) 
+    {
+        // assume that both lowerLimit & upperLimit are not 0 
+        // get the lengths of the limits 
+        int lowerLength = lengthOfWeight(lowerLimit);
+        int upperLength = lengthOfWeight(upperLimit);
+        if (Utility.compareUnsigned(lowerLimit, upperLimit) >= 0) {
+            return 0;
+        }
+        // check that neither is a prefix of the other
+        if (lowerLength < upperLength) {
+            if (lowerLimit == truncateWeight(upperLimit, lowerLength)) {
+                return 0;
+            }
+        }
+        // if the upper limit is a prefix of the lower limit then the earlier 
+        // test lowerLimit >= upperLimit has caught it
+        // reset local variables
+        // With the limit lengths of 1..4, there are up to 7 ranges for 
+        // allocation:
+        // range     minimum length
+        // lower[4]  4
+        // lower[3]  3
+        // lower[2]  2
+        // middle    1
+        // upper[2]  2
+        // upper[3]  3
+        // upper[4]  4
+        // We are now going to calculate up to 7 ranges.
+        // Some of them will typically overlap, so we will then have to merge 
+        // and eliminate ranges.
+        
+        // We have to clean cruft from previous invocations
+        // before doing anything. C++ already does that
+        for(int length = 0; length < 5; length++) {
+            m_utilLowerWeightRange_[length].clear();
+            m_utilUpperWeightRange_[length].clear();
+        }
+        m_utilWeightRange_.clear();
+        
+        int weight = lowerLimit;
+        for (int length = lowerLength; length >= 2; -- length) {
+            m_utilLowerWeightRange_[length].clear();
+            int trail = getWeightByte(weight, length);
+            if (trail < maxByte) {
+                m_utilLowerWeightRange_[length].m_start_ 
+            = incWeightTrail(weight, length);
+                m_utilLowerWeightRange_[length].m_end_ 
+            = setWeightTrail(weight, length, maxByte);
+                m_utilLowerWeightRange_[length].m_length_ = length;
+                m_utilLowerWeightRange_[length].m_count_ = maxByte - trail;
+            }
+            weight = truncateWeight(weight, length - 1);
+        }
+        m_utilWeightRange_.m_start_ = incWeightTrail(weight, 1);
+    
+        weight = upperLimit;
+        // [0] and [1] are not used - this simplifies indexing, 
+        // m_utilUpperWeightRange_
+        
+        for (int length = upperLength; length >= 2; length --) {
+            int trail = getWeightByte(weight, length);
+            if (trail > RuleBasedCollator.BYTE_FIRST_TAILORED_) {
+                m_utilUpperWeightRange_[length].m_start_ 
+            = setWeightTrail(weight, length, 
+                     RuleBasedCollator.BYTE_FIRST_TAILORED_);
+                m_utilUpperWeightRange_[length].m_end_ 
+            = decWeightTrail(weight, length);
+                m_utilUpperWeightRange_[length].m_length_ = length;
+                m_utilUpperWeightRange_[length].m_count_ = trail
+            - RuleBasedCollator.BYTE_FIRST_TAILORED_;
+            }
+            weight = truncateWeight(weight, length - 1);
+        }
+        m_utilWeightRange_.m_end_ = decWeightTrail(weight, 1);
+    
+        // set the middle range
+        m_utilWeightRange_.m_length_ = 1;
+        if (Utility.compareUnsigned(m_utilWeightRange_.m_end_, m_utilWeightRange_.m_start_) >= 0) {
+        //if (m_utilWeightRange_.m_end_ >= m_utilWeightRange_.m_start_) {
+            m_utilWeightRange_.m_count_ 
+        = ((m_utilWeightRange_.m_end_ - m_utilWeightRange_.m_start_) 
+           >>> 24) + 1;
+        } 
+        else {
+            // eliminate overlaps
+            // remove the middle range
+            m_utilWeightRange_.m_count_ = 0;
+            // reduce or remove the lower ranges that go beyond upperLimit
+            for (int length = 4; length >= 2; -- length) {
+                if (m_utilLowerWeightRange_[length].m_count_ > 0 
+                    && m_utilUpperWeightRange_[length].m_count_ > 0) {
+                    int start = m_utilUpperWeightRange_[length].m_start_;
+                    int end = m_utilLowerWeightRange_[length].m_end_;
+                    if (end >= start || incWeight(end, length, maxByte) 
+            == start) {
+                        // lower and upper ranges collide or are directly 
+                        // adjacent: merge these two and remove all shorter 
+                        // ranges
+                        start = m_utilLowerWeightRange_[length].m_start_;
+                        end = m_utilLowerWeightRange_[length].m_end_ 
+                            = m_utilUpperWeightRange_[length].m_end_;
+                        // merging directly adjacent ranges needs to subtract 
+                        // the 0/1 gaps in between;
+                        // it may result in a range with count>countBytes
+                        m_utilLowerWeightRange_[length].m_count_ 
+                = getWeightByte(end, length)
+                - getWeightByte(start, length) + 1 
+                + countBytes * (getWeightByte(end, length - 1)
+                        - getWeightByte(start, 
+                                length - 1));
+                        m_utilUpperWeightRange_[length].m_count_ = 0;
+                        while (-- length >= 2) {
+                            m_utilLowerWeightRange_[length].m_count_ 
+                                = m_utilUpperWeightRange_[length].m_count_ = 0;
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+    
+        // copy the ranges, shortest first, into the result array 
+        int rangeCount = 0;
+        if (m_utilWeightRange_.m_count_ > 0) {
+            ranges[0] = new WeightRange(m_utilWeightRange_);
+            rangeCount = 1;
+        }
+        for (int length = 2; length <= 4; ++ length) {
+            // copy upper first so that later the middle range is more likely 
+            // the first one to use
+            if (m_utilUpperWeightRange_[length].m_count_ > 0) {
+                ranges[rangeCount] 
+            = new WeightRange(m_utilUpperWeightRange_[length]);
+                ++ rangeCount;
+            }
+            if (m_utilLowerWeightRange_[length].m_count_ > 0) {
+                ranges[rangeCount] 
+            = new WeightRange(m_utilLowerWeightRange_[length]);
+                ++ rangeCount;
+            }
+        }
+        return rangeCount;
+    }
+    
+    /**
+     * Truncates the weight with length
+     * @param weight
+     * @param length
+     * @return truncated weight
+     */
+    private static final int truncateWeight(int weight, int length) 
+    {
+        return weight & (0xffffffff << ((4 - length) << 3));
+    }
+    
+    /**
+     * Length of the weight
+     * @param weight
+     * @return length of the weight
+     */
+    private static final int lengthOfWeight(int weight) 
+    {
+        if ((weight & 0xffffff) == 0) {
+            return 1;
+        } 
+        else if ((weight & 0xffff) == 0) {
+            return 2;
+        } 
+        else if ((weight & 0xff) == 0) {
+            return 3;
+        } 
+        return 4;
+    }
+    
+    /**
+     * Increment the weight trail
+     * @param weight 
+     * @param length
+     * @return new weight
+     */
+    private static final int incWeightTrail(int weight, int length) 
+    {
+        return weight + (1 << ((4-length) << 3));
+    }
+
+    /**
+     * Decrement the weight trail
+     * @param weight 
+     * @param length
+     * @return new weight
+     */
+    private static int decWeightTrail(int weight, int length) 
+    {
+        return weight - (1 << ((4 - length) << 3));
+    }
+    
+    /**
+     * Gets the codepoint 
+     * @param tbl contraction table
+     * @param codePoint code point to look for
+     * @return the offset to the code point
+     */
+    private static int findCP(BasicContractionTable tbl, char codePoint) 
+    {
+        int position = 0;
+        while (codePoint > tbl.m_codePoints_.charAt(position)) {
+            position ++;
+            if (position > tbl.m_codePoints_.length()) {
+                return -1;
+            }
+        }
+        if (codePoint == tbl.m_codePoints_.charAt(position)) {
+            return position;
+        } 
+        else {
+            return -1;
+        }
+    }
+
+    /**
+     * Finds a contraction ce
+     * @param table
+     * @param element
+     * @param ch
+     * @return ce
+     */
+    private static int findCE(ContractionTable table, int element, char ch) 
+    {
+        if (table == null) {
+            return CE_NOT_FOUND_;
+        }
+        BasicContractionTable tbl = getBasicContractionTable(table, element);
+        if (tbl == null) {
+            return CE_NOT_FOUND_;
+        }
+        int position = findCP(tbl, ch);
+        if (position > tbl.m_CEs_.size() || position < 0) {
+            return CE_NOT_FOUND_;
+        } 
+        return ((Integer)tbl.m_CEs_.get(position)).intValue();
+    }    
+    
+    /**
+     * Checks if the string is tailored in the contraction
+     * @param table contraction table
+     * @param element 
+     * @param array character array to check
+     * @param offset array offset
+     * @return true if it is tailored
+     */
+    private static boolean isTailored(ContractionTable table, int element, 
+                                      char array[], int offset) 
+    {
+        while (array[offset] != 0) {
+            element = findCE(table, element, array[offset]);
+            if (element == CE_NOT_FOUND_) {
+                return false;
+            }
+            if (!isContractionTableElement(element)) {
+                return true;
+            }
+            offset ++;
+        }
+        if (getCE(table, element, 0) != CE_NOT_FOUND_) {
+            return true;
+        } 
+        else {
+            return false; 
+        }
+    }
+    
+    /**
+     * Assemble RuleBasedCollator
+     * @param t build table
+     * @param collator to update
+     */
+    private void assembleTable(BuildTable t, RuleBasedCollator collator) 
+    {
+        IntTrieBuilder mapping = t.m_mapping_;
+        Vector expansions = t.m_expansions_;
+        ContractionTable contractions = t.m_contractions_;
+        MaxExpansionTable maxexpansion = t.m_maxExpansions_;
+        
+        // contraction offset has to be in since we are building on the 
+        // UCA contractions 
+        // int beforeContractions = (HEADER_SIZE_ 
+        //                         + paddedsize(expansions.size() << 2)) >>> 1;
+        collator.m_contractionOffset_ = 0;
+        int contractionsSize = constructTable(contractions);
+        
+        // the following operation depends on the trie data. Therefore, we have 
+        // to do it before the trie is compacted 
+        // sets jamo expansions
+        getMaxExpansionJamo(mapping, maxexpansion, t.m_maxJamoExpansions_,
+                            collator.m_isJamoSpecial_);
+        
+        // TODO: LATIN1 array is now in the utrie - it should be removed from 
+        // the calculation
+        setAttributes(collator, t.m_options_);
+        // copy expansions
+        int size = expansions.size();
+        collator.m_expansion_ = new int[size];
+        for (int i = 0; i < size; i ++) {
+            collator.m_expansion_[i] = ((Integer)expansions.get(i)).intValue();
+        }
+        // contractions block 
+        if (contractionsSize != 0) {
+            // copy contraction index 
+            collator.m_contractionIndex_ = new char[contractionsSize];
+            contractions.m_codePoints_.getChars(0, contractionsSize, 
+                                                collator.m_contractionIndex_, 
+                                                0);
+            // copy contraction collation elements
+            collator.m_contractionCE_ = new int[contractionsSize];
+            for (int i = 0; i < contractionsSize; i ++) {
+                collator.m_contractionCE_[i] = ((Integer)
+                        contractions.m_CEs_.get(i)).intValue();
+            }
+        }
+        // copy mapping table
+        collator.m_trie_ = mapping.serialize(t, 
+                         RuleBasedCollator.DataManipulate.getInstance());
+        // copy max expansion table
+        // not copying the first element which is a dummy
+        // to be in synch with icu4c's builder, we continue to use the 
+        // expansion offset
+        // omitting expansion offset in builder
+        collator.m_expansionOffset_ = 0; 
+        size = maxexpansion.m_endExpansionCE_.size();
+        collator.m_expansionEndCE_ = new int[size - 1];
+        for (int i = 1; i < size; i ++) {
+            collator.m_expansionEndCE_[i - 1] = ((Integer)
+                         maxexpansion.m_endExpansionCE_.get(i)).intValue();
+        }
+        collator.m_expansionEndCEMaxSize_ = new byte[size - 1];
+        for (int i = 1; i < size; i ++) {
+            collator.m_expansionEndCEMaxSize_[i - 1] 
+        = ((Byte)maxexpansion.m_expansionCESize_.get(i)).byteValue();
+        }
+        // Unsafe chars table.  Finish it off, then copy it.
+        unsafeCPAddCCNZ(t);
+        // Or in unsafebits from UCA, making a combined table.
+        for (int i = 0; i < UNSAFECP_TABLE_SIZE_; i ++) {    
+        t.m_unsafeCP_[i] |= RuleBasedCollator.UCA_.m_unsafe_[i];
+        }
+        collator.m_unsafe_ = t.m_unsafeCP_;
+    
+        // Finish building Contraction Ending chars hash table and then copy it 
+        // out.
+        // Or in unsafebits from UCA, making a combined table
+        for (int i = 0; i < UNSAFECP_TABLE_SIZE_; i ++) {    
+        t.m_contrEndCP_[i] |= RuleBasedCollator.UCA_.m_contractionEnd_[i];
+        }
+        collator.m_contractionEnd_ = t.m_contrEndCP_;
+    }
+    
+    /**
+     * Sets this collator to use the all options and tables in UCA. 
+     * @param collator which attribute is to be set 
+     * @param option to set with
+     */
+    private static final void setAttributes(RuleBasedCollator collator,
+                        CollationRuleParser.OptionSet option)
+    {
+        collator.latinOneFailed_ = true;
+        collator.m_caseFirst_ = option.m_caseFirst_;
+        collator.setDecomposition(option.m_decomposition_);
+        collator.setAlternateHandlingShifted(
+                         option.m_isAlternateHandlingShifted_);
+        collator.setCaseLevel(option.m_isCaseLevel_);
+        collator.setFrenchCollation(option.m_isFrenchCollation_);
+        collator.m_isHiragana4_ = option.m_isHiragana4_;
+        collator.setStrength(option.m_strength_);
+        collator.m_variableTopValue_ = option.m_variableTopValue_;    
+        collator.latinOneFailed_ = false;
+    }
+    
+    /**
+     * Constructing the contraction table
+     * @param table contraction table
+     * @return 
+     */
+    private int constructTable(ContractionTable table) 
+    {
+        // See how much memory we need 
+        int tsize = table.m_elements_.size();
+        if (tsize == 0) {
+            return 0;
+        }
+        table.m_offsets_.clear();
+        int position = 0;
+        for (int i = 0; i < tsize; i ++) {
+            table.m_offsets_.add(new Integer(position));
+            position += ((BasicContractionTable)
+             table.m_elements_.get(i)).m_CEs_.size();
+        }
+        table.m_CEs_.clear();
+        table.m_codePoints_.delete(0, table.m_codePoints_.length());
+        // Now stuff the things in
+        StringBuffer cpPointer = table.m_codePoints_;
+        Vector CEPointer = table.m_CEs_;
+        for (int i = 0; i < tsize; i ++) {
+            BasicContractionTable bct = (BasicContractionTable)
+        table.m_elements_.get(i);
+            int size = bct.m_CEs_.size();
+            char ccMax = 0;
+            char ccMin = 255;
+            int offset = CEPointer.size();
+            CEPointer.add(bct.m_CEs_.get(0));
+            for (int j = 1; j < size; j ++) {
+                char ch = bct.m_codePoints_.charAt(j);
+                char cc = (char)(UCharacter.getCombiningClass(ch) & 0xFF);
+                if (cc > ccMax) {
+                    ccMax = cc;
+                }
+                if (cc < ccMin) {
+                    ccMin = cc;
+                }
+                cpPointer.append(ch);
+                CEPointer.add(bct.m_CEs_.get(j));
+            }
+            cpPointer.insert(offset, 
+                             (char)(((ccMin == ccMax) ? 1 : 0 << 8) | ccMax));
+            for (int j = 0; j < size; j ++) {
+                if (isContractionTableElement(((Integer)
+                           CEPointer.get(offset + j)).intValue())) {
+                    int ce = ((Integer)CEPointer.get(offset + j)).intValue();
+                    CEPointer.set(offset + j, 
+                  new Integer(constructSpecialCE(getCETag(ce), 
+                                 ((Integer)table.m_offsets_.get(
+                                                getContractionOffset(ce))).intValue())));
+                }
+            }
+        }
+    
+        for (int i = 0; i <= 0x10FFFF; i ++) {
+            int CE = table.m_mapping_.getValue(i);
+            if (isContractionTableElement(CE)) {
+                CE = constructSpecialCE(getCETag(CE), 
+                                        ((Integer)table.m_offsets_.get(
+                                       getContractionOffset(CE))).intValue());
+                table.m_mapping_.setValue(i, CE);
+            }
+        }
+        return position;
+    }
+    
+    /**
+     * Get contraction offset
+     * @param ce collation element 
+     * @return contraction offset
+     */
+    private static final int getContractionOffset(int ce)
+    {
+        return ce & 0xFFFFFF;
+    }
+    
+    /**
+     * Gets the maximum Jamo expansion
+     * @param mapping trie table
+     * @param maxexpansion maximum expansion table
+     * @param maxjamoexpansion maximum jamo expansion table
+     * @param jamospecial is jamo special?
+     */
+    private static void getMaxExpansionJamo(IntTrieBuilder mapping, 
+                                            MaxExpansionTable maxexpansion,
+                                            MaxJamoExpansionTable 
+                        maxjamoexpansion,
+                                            boolean jamospecial)
+    {
+        int VBASE  = 0x1161;
+        int TBASE  = 0x11A8;
+        int VCOUNT = 21;
+        int TCOUNT = 28;
+        int v = VBASE + VCOUNT - 1;
+        int t = TBASE + TCOUNT - 1;
+        
+        while (v >= VBASE) {
+            int ce = mapping.getValue(v);
+            if ((ce & RuleBasedCollator.CE_SPECIAL_FLAG_) 
+        != RuleBasedCollator.CE_SPECIAL_FLAG_) {
+                setMaxExpansion(ce, (byte)2, maxexpansion);
+            }
+            v --;
+        }
+        
+        while (t >= TBASE)
+        {
+        int ce = mapping.getValue(t);
+        if ((ce & RuleBasedCollator.CE_SPECIAL_FLAG_) 
+            != RuleBasedCollator.CE_SPECIAL_FLAG_) {
+            setMaxExpansion(ce, (byte)3, maxexpansion);
+        }
+        t --;
+        }
+        // According to the docs, 99% of the time, the Jamo will not be special 
+        if (jamospecial) {
+            // gets the max expansion in all unicode characters
+            int count = maxjamoexpansion.m_endExpansionCE_.size();
+            byte maxTSize = (byte)(maxjamoexpansion.m_maxLSize_ + 
+                                   maxjamoexpansion.m_maxVSize_ +
+                                   maxjamoexpansion.m_maxTSize_);
+            byte maxVSize = (byte)(maxjamoexpansion.m_maxLSize_ + 
+                                   maxjamoexpansion.m_maxVSize_);
+        
+            while (count > 0) {
+                count --;
+                if (((Boolean)maxjamoexpansion.m_isV_.get(count)).booleanValue()
+            == true) {
+                    setMaxExpansion(((Integer)
+                     maxjamoexpansion.m_endExpansionCE_.get(count)).intValue(), 
+                    maxVSize, maxexpansion);
+                }
+                else {
+                    setMaxExpansion(((Integer)
+                     maxjamoexpansion.m_endExpansionCE_.get(count)).intValue(), 
+                    maxTSize, maxexpansion);
+                }
+            }
+        }
+    }
+    
+    /**  
+     * To the UnsafeCP hash table, add all chars with combining class != 0     
+     * @param t build table
+     */
+    private static final void unsafeCPAddCCNZ(BuildTable t) 
+    {
+        boolean buildCMTable = ( buildCMTabFlag & (t.cmLookup==null) );
+        char[]  cm = null;  // combining mark array
+        int[]   index= new int[256];
+        int     count=0;
+
+        if (buildCMTable) {
+            cm = new char[0x10000];
+        }
+        for (char c = 0; c < 0xffff; c ++) {
+            char fcd = NormalizerImpl.getFCD16(c);
+            if (fcd >= 0x100 || // if the leading combining class(c) > 0 ||
+                (UTF16.isLeadSurrogate(c) && fcd != 0)) {
+                // c is a leading surrogate with some FCD data
+                unsafeCPSet(t.m_unsafeCP_, c);
+                if ( buildCMTable && (fcd!=0)) {
+                    int cc = (fcd& 0xff);
+                    int pos = (cc<<8)+index[cc];
+                    cm[pos] = c;
+                    index[cc]++;
+                    count++;
+                }
+            }
+        }
+    
+        if (t.m_prefixLookup_ != null) {
+            Enumeration els = t.m_prefixLookup_.elements();
+            while (els.hasMoreElements()) {
+                Elements e = (Elements)els.nextElement();
+                // codepoints here are in the NFD form. We need to add the
+                // first code point of the NFC form to unsafe, because 
+                // strcoll needs to backup over them.
+                // weiv: This is wrong! See the comment above.
+                //String decomp = Normalizer.decompose(e.m_cPoints_, true);
+                //unsafeCPSet(t.m_unsafeCP_, decomp.charAt(0));
+                // it should be:
+                String comp = Normalizer.compose(e.m_cPoints_, false);
+                unsafeCPSet(t.m_unsafeCP_, comp.charAt(0));
+            } 
+        }
+        
+        if (buildCMTable) {
+            t.cmLookup = new CombinClassTable();
+            t.cmLookup.generate(cm, count, index);
+        }
+    }
+    
+    /**
+     * Create closure
+     * @param t build table
+     * @param collator RuleBasedCollator
+     * @param colEl collation element iterator
+     * @param start 
+     * @param limit
+     * @param type character type
+     * @return 
+     */
+    private boolean enumCategoryRangeClosureCategory(BuildTable t, 
+                             RuleBasedCollator collator, 
+                             CollationElementIterator colEl, 
+                             int start, int limit, int type) 
+    {
+        if (type != UCharacterCategory.UNASSIGNED 
+            && type != UCharacterCategory.PRIVATE_USE) { 
+            // if the range is assigned - we might ommit more categories later
+            
+            for (int u32 = start; u32 < limit; u32 ++) {
+                int noOfDec = NormalizerImpl.getDecomposition(u32, false,
+                                                              m_utilCharBuffer_, 
+                                                              0, 256);
+                if (noOfDec > 0) {
+                    // if we're positive, that means there is no decomposition
+                    String comp = UCharacter.toString(u32);
+                    String decomp = new String(m_utilCharBuffer_, 0, noOfDec);
+                    if (!collator.equals(comp, decomp)) {
+                        m_utilElement_.m_cPoints_ = decomp;
+                        m_utilElement_.m_prefix_ = 0;
+                        Elements prefix 
+                = (Elements)t.m_prefixLookup_.get(m_utilElement_);
+                        if (prefix == null) {
+                            m_utilElement_.m_cPoints_ = comp;
+                            m_utilElement_.m_prefix_ = 0;
+                            m_utilElement_.m_prefixChars_ = null;
+                            colEl.setText(decomp);
+                            int ce = colEl.next();
+                            m_utilElement_.m_CELength_ = 0;
+                            while (ce != CollationElementIterator.NULLORDER) {
+                                m_utilElement_.m_CEs_[
+                              m_utilElement_.m_CELength_ ++] 
+                    = ce;
+                                ce = colEl.next();
+                            }
+                        } 
+                        else {
+                            m_utilElement_.m_cPoints_ = comp;
+                            m_utilElement_.m_prefix_ = 0;
+                            m_utilElement_.m_prefixChars_ = null;
+                            m_utilElement_.m_CELength_ = 1;
+                            m_utilElement_.m_CEs_[0] = prefix.m_mapCE_;
+                            // This character uses a prefix. We have to add it 
+                            // to the unsafe table, as it decomposed form is 
+                            // already in. In Japanese, this happens for \u309e 
+                            // & \u30fe
+                            // Since unsafeCPSet is static in ucol_elm, we are 
+                            // going to wrap it up in the unsafeCPAddCCNZ 
+                            // function
+                        }
+                        addAnElement(t, m_utilElement_);
+                    }
+                }
+            }
+        }
+        return true;
+    }
+    
+    /**
+     * Determine if a character is a Jamo
+     * @param ch character to test
+     * @return true if ch is a Jamo, false otherwise
+     */
+    private static final boolean isJamo(char ch)
+    { 
+    return (ch >= 0x1100 && ch <= 0x1112) 
+        || (ch >= 0x1175 && ch <= 0x1161) 
+        || (ch >= 0x11A8 && ch <= 0x11C2);
+    }
+    
+    /**
+     * Produces canonical closure
+     */
+    private void canonicalClosure(BuildTable t) 
+    {
+        BuildTable temp = new BuildTable(t);
+        assembleTable(temp, temp.m_collator_);
+        // produce canonical closure 
+        CollationElementIterator coleiter 
+        = temp.m_collator_.getCollationElementIterator("");
+        RangeValueIterator typeiter = UCharacter.getTypeIterator();
+        RangeValueIterator.Element element = new RangeValueIterator.Element();
+        while (typeiter.next(element)) {
+            enumCategoryRangeClosureCategory(t, temp.m_collator_, coleiter, 
+                         element.start, element.limit, 
+                         element.value);
+        }
+        
+        t.cmLookup = temp.cmLookup;
+        temp.cmLookup = null;
+        
+        for (int i = 0; i < m_parser_.m_resultLength_; i ++) {
+            char baseChar, firstCM;
+            // now we need to generate the CEs 
+            // We stuff the initial value in the buffers, and increase the 
+            // appropriate buffer according to strength                                                          */
+            // createElements(t, m_parser_.m_listHeader_[i]);
+            CollationRuleParser.Token tok = m_parser_.m_listHeader_[i].m_first_;
+            m_utilElement_.clear();
+            while ( tok!=null ) {
+                m_utilElement_.m_prefix_ = 0;// el.m_prefixChars_;
+                m_utilElement_.m_cPointsOffset_ = 0; //el.m_uchars_;
+                if (tok.m_prefix_ != 0) { 
+                // we will just copy the prefix here, and adjust accordingly in 
+                // the addPrefix function in ucol_elm. The reason is that we 
+                // need to add both composed AND decomposed elements to the 
+                // unsafe table.
+                int size = tok.m_prefix_ >> 24;
+                int offset = tok.m_prefix_ & 0x00FFFFFF;
+                m_utilElement_.m_prefixChars_ 
+                    = m_parser_.m_source_.substring(offset, offset + size);
+                size = (tok.m_source_ >> 24) - (tok.m_prefix_ >> 24); 
+                offset = (tok.m_source_ & 0x00FFFFFF) + (tok.m_prefix_ >> 24);
+                m_utilElement_.m_uchars_ 
+                    = m_parser_.m_source_.substring(offset, offset + size);
+                } 
+                else {
+                m_utilElement_.m_prefixChars_ = null;
+                int offset = tok.m_source_ & 0x00FFFFFF;
+                int size = tok.m_source_ >>> 24;
+                m_utilElement_.m_uchars_ = m_parser_.m_source_.substring(offset, 
+                                             offset + size);
+                }
+                m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+                
+                baseChar = firstCM = 0;  //reset
+                for (int j = 0; j < m_utilElement_.m_cPoints_.length() 
+                     - m_utilElement_.m_cPointsOffset_; j ++) {
+
+                    char fcd = NormalizerImpl.getFCD16(m_utilElement_.m_cPoints_.charAt(j));
+                    if ( (fcd & 0xff) == 0 ) {
+                        baseChar = m_utilElement_.m_cPoints_.charAt(j);
+                    }
+                    else {
+                        if ( (baseChar!=0) && (firstCM==0) ) {
+                            firstCM = m_utilElement_.m_cPoints_.charAt(j); // first combining mark
+                        }
+                    }
+                }
+                
+                if ( (baseChar!=0) && (firstCM!=0)) {
+                      addTailCanonicalClosures(t, temp.m_collator_, coleiter, baseChar, firstCM);
+                }
+                tok = tok.m_next_;
+            }
+        }
+    }
+    
+    private void addTailCanonicalClosures(BuildTable t,
+            RuleBasedCollator m_collator, 
+            CollationElementIterator colEl,
+            char baseChar, 
+            char cMark) {
+        if ( t.cmLookup == null ) {
+            return;
+        }
+        CombinClassTable cmLookup = t.cmLookup;  
+        int[] index = cmLookup.index;
+        int cClass =  NormalizerImpl.getFCD16(cMark) & 0xff;
+        int maxIndex=0;
+        char[] precompCh = new char[256];  
+        int[] precompClass = new int[256];
+        int precompLen=0;
+        Elements element = new Elements();
+        
+        if ( cClass>0 ) {
+            maxIndex = index[cClass-1];
+        }
+        for (int i=0; i<maxIndex; i++) {
+            StringBuffer decompBuf = new StringBuffer();
+            decompBuf.append(baseChar).append(cmLookup.cPoints[i]);
+            String comp = Normalizer.compose(decompBuf.toString(), false);
+            if ( comp.length() == 1 ) {
+                precompCh[precompLen] = comp.charAt(0);
+                precompClass[precompLen] = 
+                    (NormalizerImpl.getFCD16(cmLookup.cPoints[i]) & 0xff);
+                precompLen++;
+                StringBuffer decomp = new StringBuffer();
+                for (int j=0; j < m_utilElement_.m_cPoints_.length(); j++) {
+                    if ( m_utilElement_.m_cPoints_.charAt(j) == cMark ) {
+                        decomp.append(cmLookup.cPoints[i]);
+                    }
+                    else {
+                        decomp.append(m_utilElement_.m_cPoints_.charAt(j));
+                    }
+                }
+                comp = Normalizer.compose(decomp.toString(), false);
+                StringBuffer buf= new StringBuffer(comp);
+                buf.append(cMark);
+                decomp.append(cMark);
+                comp = buf.toString();
+                
+                element.m_cPoints_ = decomp.toString();
+                element.m_CELength_ = 0;
+                element.m_prefix_ = 0;
+                Elements prefix = (Elements)t.m_prefixLookup_.get(element);
+                element.m_cPoints_ = comp;
+                element.m_uchars_ = comp;
+                
+                if (prefix == null) {
+                    element.m_prefix_ = 0;
+                    element.m_prefixChars_ = null;
+                    colEl.setText(decomp.toString());
+                    int ce = colEl.next();
+                    element.m_CELength_ = 0;
+                    while (ce != CollationElementIterator.NULLORDER) {
+                        element.m_CEs_[element.m_CELength_ ++] = ce;
+                        ce = colEl.next();
+                    }
+                } 
+                else {
+                    element.m_cPoints_ = comp;
+                    element.m_prefix_ = 0;
+                    element.m_prefixChars_ = null;
+                    element.m_CELength_ = 1;
+                    element.m_CEs_[0] = prefix.m_mapCE_;
+                }
+                setMapCE(t, element);
+                finalizeAddition(t, element);
+                
+                if (comp.length()>2) {
+                    // This is a fix for tailoring contractions with accented
+                    // character at the end of contraction string.
+                    addFCD4AccentedContractions(t, colEl, comp, element);
+                }
+                if ( precompLen > 1 ) {
+                    precompLen = addMultiCMontractions(t, colEl, element, precompCh, 
+                                 precompClass, precompLen, cMark, i, decomp.toString());
+                }
+            }
+        }
+        
+    }
+    
+    private void setMapCE(BuildTable t, Elements element) {
+        Vector expansions = t.m_expansions_;
+        element.m_mapCE_ = 0;
+        
+        if (element.m_CELength_ == 2 // a two CE expansion 
+        && RuleBasedCollator.isContinuation(element.m_CEs_[1]) 
+        && (element.m_CEs_[1] 
+            & (~(0xFF << 24 | RuleBasedCollator.CE_CONTINUATION_MARKER_))) == 0 // that has only primaries in continuation
+        && (((element.m_CEs_[0] >> 8) & 0xFF) == RuleBasedCollator.BYTE_COMMON_) 
+        // a common secondary
+        && ((element.m_CEs_[0] & 0xFF) == RuleBasedCollator.BYTE_COMMON_)) { // and a common tertiary
+        
+            element.m_mapCE_ = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+                // a long primary special
+                | (CE_LONG_PRIMARY_TAG_ << 24) 
+                // first and second byte of primary
+                | ((element.m_CEs_[0] >> 8) & 0xFFFF00) 
+                // third byte of primary
+                | ((element.m_CEs_[1] >> 24) & 0xFF);   
+        } 
+        else {
+                // omitting expansion offset in builder
+                // (HEADER_SIZE_ >> 2)
+            int expansion = RuleBasedCollator.CE_SPECIAL_FLAG_ 
+                | (CE_EXPANSION_TAG_ << RuleBasedCollator.CE_TAG_SHIFT_) 
+                | (addExpansion(expansions, element.m_CEs_[0]) << 4) & 0xFFFFF0;
+    
+            for (int i = 1; i < element.m_CELength_; i ++) {
+                addExpansion(expansions, element.m_CEs_[i]);
+            }
+            if (element.m_CELength_ <= 0xF) {
+                expansion |= element.m_CELength_;
+            } 
+            else {
+                addExpansion(expansions, 0);
+            }
+            element.m_mapCE_ = expansion;
+            setMaxExpansion(element.m_CEs_[element.m_CELength_ - 1],
+                    (byte)element.m_CELength_, t.m_maxExpansions_);
+        }
+    }
+    
+    private int addMultiCMontractions(BuildTable t,
+            CollationElementIterator colEl,
+            Elements element,
+            char[] precompCh,
+            int[] precompClass,
+            int maxComp,
+            char cMark,
+            int cmPos,
+            String decomp) {
+        
+        CombinClassTable cmLookup = t.cmLookup;
+        char[] combiningMarks = {cMark};
+        int cMarkClass = (int)(UCharacter.getCombiningClass(cMark) & 0xFF);
+        String comMark = new String(combiningMarks);
+        int  noOfPrecomposedChs = maxComp; 
+        
+        for (int j=0; j<maxComp; j++) {
+            int count = 0;
+            StringBuffer temp;
+           
+            do {
+                String newDecomp, comp;
+                
+                if ( count==0 ) { // Decompose the saved precomposed char.
+                    newDecomp = Normalizer.decompose( new String(precompCh, j ,1), false);
+                    temp = new StringBuffer(newDecomp);
+                    temp.append(cmLookup.cPoints[cmPos]);
+                    newDecomp = temp.toString();
+                }
+                else {
+                    temp = new StringBuffer(decomp);
+                    temp.append(precompCh[j]);
+                    newDecomp = temp.toString();
+                }
+                comp = Normalizer.compose(newDecomp, false);
+                if (comp.length()==1) {
+                    temp.append(cMark);
+                    element.m_cPoints_ = temp.toString();
+                    element.m_CELength_ = 0;
+                    element.m_prefix_ = 0;
+                    Elements prefix = (Elements)t.m_prefixLookup_.get(element);
+                    element.m_cPoints_ = comp+comMark;
+                    if (prefix == null) {
+                        element.m_prefix_ = 0;
+                        element.m_prefixChars_ = null;
+                        colEl.setText(temp.toString());
+                        int ce = colEl.next();
+                        element.m_CELength_ = 0;
+                        while (ce != CollationElementIterator.NULLORDER) {
+                            element.m_CEs_[element.m_CELength_ ++] = ce;
+                            ce = colEl.next();
+                        }
+                    } 
+                    else {
+                        element.m_cPoints_ = comp;
+                        element.m_prefix_ = 0;
+                        element.m_prefixChars_ = null;
+                        element.m_CELength_ = 1;
+                        element.m_CEs_[0] = prefix.m_mapCE_;
+                    }
+                    setMapCE(t, element);
+                    finalizeAddition(t, element);
+                    precompCh[noOfPrecomposedChs] = comp.charAt(0);
+                    precompClass[noOfPrecomposedChs] = cMarkClass;  
+                    noOfPrecomposedChs++;
+                }
+            }while(++count<2 && (precompClass[j]==cMarkClass)); 
+        }
+        return noOfPrecomposedChs;
+    }
+
+    private void addFCD4AccentedContractions(BuildTable t, 
+            CollationElementIterator colEl,
+            String data,
+            Elements element) {
+        String decomp = Normalizer.decompose(data, false);
+        String comp = Normalizer.compose(data, false);
+        
+        element.m_cPoints_ = decomp;
+        element.m_CELength_ = 0;
+        element.m_prefix_ = 0;
+        Elements prefix = (Elements)t.m_prefixLookup_.get(element);
+        if (prefix == null) {
+            element.m_cPoints_ = comp;
+            element.m_prefix_ = 0;
+            element.m_prefixChars_ = null;
+            element.m_CELength_ = 0;
+            colEl.setText(decomp);
+            int ce = colEl.next();
+            element.m_CELength_ = 0;
+            while (ce != CollationElementIterator.NULLORDER) {
+                element.m_CEs_[element.m_CELength_ ++] = ce;
+                ce = colEl.next();
+            }
+            addAnElement(t, element);
+        } 
+    }
+    
+    private void processUCACompleteIgnorables(BuildTable t) 
+    {
+        TrieIterator trieiterator 
+        = new TrieIterator(RuleBasedCollator.UCA_.m_trie_);
+        RangeValueIterator.Element element = new RangeValueIterator.Element();
+        while (trieiterator.next(element)) {
+            int start = element.start;
+            int limit = element.limit;
+            if (element.value == 0) {
+                while (start < limit) {
+                    int CE = t.m_mapping_.getValue(start);
+                    if (CE == CE_NOT_FOUND_) {
+                        m_utilElement_.m_prefix_ = 0;
+                        m_utilElement_.m_uchars_ = UCharacter.toString(start);
+                        m_utilElement_.m_cPoints_ = m_utilElement_.m_uchars_;
+                        m_utilElement_.m_cPointsOffset_ = 0;
+                        m_utilElement_.m_CELength_ = 1;
+                        m_utilElement_.m_CEs_[0] = 0;
+                        addAnElement(t, m_utilElement_);
+                    }
+                    start ++;
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/CollationRuleParser.java b/src/com/ibm/icu/text/CollationRuleParser.java
new file mode 100644
index 0000000..6177318
--- /dev/null
+++ b/src/com/ibm/icu/text/CollationRuleParser.java
@@ -0,0 +1,2066 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.ParseException;
+import java.util.Hashtable;
+import java.util.Arrays;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.UCharacterProperty;
+
+/**
+* Class for parsing collation rules, produces a list of tokens that will be
+* turned into collation elements
+* @author Syn Wee Quek
+* @since release 2.2, June 7 2002
+*/
+final class CollationRuleParser
+{
+    // public data members ---------------------------------------------------
+
+    // package private constructors ------------------------------------------
+
+    /**
+     * <p>RuleBasedCollator constructor that takes the rules.
+     * Please see RuleBasedCollator class description for more details on the
+     * collation rule syntax.</p>
+     * @see java.util.Locale
+     * @param rules the collation rules to build the collation table from.
+     * @exception ParseException thrown when argument rules have an invalid
+     *            syntax.
+     */
+    CollationRuleParser(String rules) throws ParseException
+    {
+        extractSetsFromRules(rules);
+        m_source_ = new StringBuffer(Normalizer.decompose(rules, false).trim());
+        m_rules_ = m_source_.toString();
+        m_current_ = 0;
+        m_extraCurrent_ = m_source_.length();
+        m_variableTop_ = null;
+        m_parsedToken_ = new ParsedToken();
+        m_hashTable_ = new Hashtable();
+        m_options_ = new OptionSet(RuleBasedCollator.UCA_);
+        m_listHeader_ = new TokenListHeader[512];
+        m_resultLength_ = 0;
+        // call assembleTokenList() manually, so that we can
+        // init a parser and manually parse tokens
+        //assembleTokenList();
+    }
+
+    // package private inner classes -----------------------------------------
+
+    /**
+     * Collation options set
+     */
+    static class OptionSet
+    {
+        // package private constructor ---------------------------------------
+
+        /**
+         * Initializes the option set with the argument collators
+         * @param collator option to use
+         */
+        OptionSet(RuleBasedCollator collator)
+        {
+            m_variableTopValue_ = collator.m_variableTopValue_;
+            m_isFrenchCollation_ = collator.isFrenchCollation();
+            m_isAlternateHandlingShifted_
+                                   = collator.isAlternateHandlingShifted();
+            m_caseFirst_ = collator.m_caseFirst_;
+            m_isCaseLevel_ = collator.isCaseLevel();
+            m_decomposition_ = collator.getDecomposition();
+            m_strength_ = collator.getStrength();
+            m_isHiragana4_ = collator.m_isHiragana4_;
+        }
+
+        // package private data members --------------------------------------
+
+        int m_variableTopValue_;
+        boolean m_isFrenchCollation_;
+        /**
+         * Attribute for handling variable elements
+         */
+        boolean m_isAlternateHandlingShifted_;
+        /**
+         * who goes first, lower case or uppercase
+         */
+        int m_caseFirst_;
+        /**
+         * do we have an extra case level
+         */
+        boolean m_isCaseLevel_;
+        /**
+         * attribute for normalization
+         */
+        int m_decomposition_;
+        /**
+         * attribute for strength
+         */
+        int m_strength_;
+        /**
+         * attribute for special Hiragana
+         */
+        boolean m_isHiragana4_;
+    }
+
+    /**
+     * List of tokens used by the collation rules
+     */
+    static class TokenListHeader
+    {
+        Token m_first_;
+        Token m_last_;
+        Token m_reset_;
+        boolean m_indirect_;
+        int m_baseCE_;
+        int m_baseContCE_;
+        int m_nextCE_;
+        int m_nextContCE_;
+        int m_previousCE_;
+        int m_previousContCE_;
+        int m_pos_[] = new int[Collator.IDENTICAL + 1];
+        int m_gapsLo_[] = new int[3 * (Collator.TERTIARY + 1)];
+        int m_gapsHi_[] = new int[3 * (Collator.TERTIARY + 1)];
+        int m_numStr_[] = new int[3 * (Collator.TERTIARY + 1)];
+        Token m_fStrToken_[] = new Token[Collator.TERTIARY + 1];
+        Token m_lStrToken_[] = new Token[Collator.TERTIARY + 1];
+    }
+
+    /**
+     * Token wrapper for collation rules
+     */
+    static class Token
+    {
+       // package private data members ---------------------------------------
+
+       int m_CE_[];
+       int m_CELength_;
+       int m_expCE_[];
+       int m_expCELength_;
+       int m_source_;
+       int m_expansion_;
+       int m_prefix_;
+       int m_strength_;
+       int m_toInsert_;
+       int m_polarity_; // 1 for <, <<, <<<, , ; and 0 for >, >>, >>>
+       TokenListHeader m_listHeader_;
+       Token m_previous_;
+       Token m_next_;
+       StringBuffer m_rules_;
+       char m_flags_;
+
+       // package private constructors ---------------------------------------
+
+       Token()
+       {
+           m_CE_ = new int[128];
+           m_expCE_ = new int[128];
+           // TODO: this should also handle reverse
+           m_polarity_ = TOKEN_POLARITY_POSITIVE_;
+           m_next_ = null;
+           m_previous_ = null;
+           m_CELength_ = 0;
+           m_expCELength_ = 0;
+       }
+
+       // package private methods --------------------------------------------
+
+       /**
+        * Hashcode calculation for token
+        * @return the hashcode
+        */
+       public int hashCode()
+       {
+           int result = 0;
+           int len = (m_source_ & 0xFF000000) >>> 24;
+           int inc = ((len - 32) / 32) + 1;
+
+           int start = m_source_ & 0x00FFFFFF;
+           int limit = start + len;
+
+           while (start < limit) {
+               result = (result * 37) + m_rules_.charAt(start);
+               start += inc;
+           }
+           return result;
+       }
+
+       /**
+        * Equals calculation
+        * @param target object to compare
+        * @return true if target is the same as this object
+        */
+       public boolean equals(Object target)
+       {
+           if (target == this) {
+               return true;
+           }
+           if (target instanceof Token) {
+               Token t = (Token)target;
+               int sstart = m_source_ & 0x00FFFFFF;
+               int tstart = t.m_source_ & 0x00FFFFFF;
+               int slimit = (m_source_ & 0xFF000000) >> 24;
+               int tlimit = (m_source_ & 0xFF000000) >> 24;
+
+               int end = sstart + slimit - 1;
+
+               if (m_source_ == 0 || t.m_source_ == 0) {
+                   return false;
+               }
+               if (slimit != tlimit) {
+                   return false;
+               }
+               if (m_source_ == t.m_source_) {
+                   return true;
+               }
+
+               while (sstart < end
+                      && m_rules_.charAt(sstart) == t.m_rules_.charAt(tstart))
+               {
+                   ++ sstart;
+                   ++ tstart;
+               }
+               if (m_rules_.charAt(sstart) == t.m_rules_.charAt(tstart)) {
+                   return true;
+               }
+           }
+           return false;
+        }
+    }
+
+    // package private data member -------------------------------------------
+
+    /**
+     * Indicator that the token is resetted yet, ie & in the rules
+     */
+    static final int TOKEN_RESET_ = 0xDEADBEEF;
+
+    /**
+     * Size of the number of tokens
+     */
+    int m_resultLength_;
+    /**
+     * List of parsed tokens
+     */
+    TokenListHeader m_listHeader_[];
+    /**
+     * Variable top token
+     */
+    Token m_variableTop_;
+    /**
+     * Collation options
+     */
+    OptionSet m_options_;
+    /**
+     * Normalized collation rules with some extra characters
+     */
+    StringBuffer m_source_;
+    /**
+     * Hash table to keep all tokens
+     */
+    Hashtable m_hashTable_;
+
+    // package private method ------------------------------------------------
+
+    void setDefaultOptionsInCollator(RuleBasedCollator collator)
+    {
+        collator.m_defaultStrength_ = m_options_.m_strength_;
+        collator.m_defaultDecomposition_ = m_options_.m_decomposition_;
+        collator.m_defaultIsFrenchCollation_ = m_options_.m_isFrenchCollation_;
+        collator.m_defaultIsAlternateHandlingShifted_
+                                    = m_options_.m_isAlternateHandlingShifted_;
+        collator.m_defaultIsCaseLevel_ = m_options_.m_isCaseLevel_;
+        collator.m_defaultCaseFirst_ = m_options_.m_caseFirst_;
+        collator.m_defaultIsHiragana4_ = m_options_.m_isHiragana4_;
+        collator.m_defaultVariableTopValue_ = m_options_.m_variableTopValue_;
+    }
+
+    // private inner classes -------------------------------------------------
+
+    /**
+     * This is a token that has been parsed but not yet processed. Used to
+     * reduce the number of arguments in the parser
+     */
+    private static class ParsedToken
+    {
+        // private constructor ----------------------------------------------
+
+        /**
+         * Empty constructor
+         */
+        ParsedToken()
+        {
+            m_charsLen_ = 0;
+            m_charsOffset_ = 0;
+            m_extensionLen_ = 0;
+            m_extensionOffset_ = 0;
+            m_prefixLen_ = 0;
+            m_prefixOffset_ = 0;
+            m_flags_ = 0;
+            m_strength_ = TOKEN_UNSET_;
+        }
+
+        // private data members ---------------------------------------------
+
+        int m_strength_;
+        int m_charsOffset_;
+        int m_charsLen_;
+        int m_extensionOffset_;
+        int m_extensionLen_;
+        int m_prefixOffset_;
+        int m_prefixLen_;
+        char m_flags_;
+        char m_indirectIndex_;
+    }
+
+    /**
+     * Boundary wrappers
+     */
+    private static class IndirectBoundaries
+    {
+        // package private constructor ---------------------------------------
+
+        IndirectBoundaries(int startce[], int limitce[])
+        {
+            // Set values for the top - TODO: once we have values for all the
+            // indirects, we are going to initalize here.
+            m_startCE_ = startce[0];
+            m_startContCE_ = startce[1];
+            if (limitce != null) {
+                m_limitCE_ = limitce[0];
+                m_limitContCE_ = limitce[1];
+            }
+            else {
+                m_limitCE_ = 0;
+                m_limitContCE_ = 0;
+            }
+        }
+
+        // package private data members --------------------------------------
+
+        int m_startCE_;
+        int m_startContCE_;
+        int m_limitCE_;
+        int m_limitContCE_;
+    }
+
+    /**
+     * Collation option rule tag
+     */
+    private static class TokenOption
+    {
+        // package private constructor ---------------------------------------
+
+        TokenOption(String name, int attribute, String suboptions[],
+                    int suboptionattributevalue[])
+        {
+            m_name_ = name;
+            m_attribute_ = attribute;
+            m_subOptions_ = suboptions;
+            m_subOptionAttributeValues_ = suboptionattributevalue;
+        }
+
+        // package private data member ---------------------------------------
+
+        private String m_name_;
+        private int m_attribute_;
+        private String m_subOptions_[];
+        private int m_subOptionAttributeValues_[];
+    }
+
+    // private variables -----------------------------------------------------
+
+    /**
+     * Current parsed token
+     */
+    private ParsedToken m_parsedToken_;
+    /**
+     * Collation rule
+     */
+    private String m_rules_;
+    private int m_current_;
+    /**
+     * End of the option while reading.
+     * Need it for UnicodeSet reading support.
+     */
+    private int m_optionEnd_;
+    /*
+     * Current offset in m_source
+     */
+    //private int m_sourceLimit_;
+    /**
+     * Offset to m_source_ ofr the extra expansion characters
+     */
+    private int m_extraCurrent_;
+
+    /**
+     * UnicodeSet that contains code points to be copied from the UCA
+     */
+    UnicodeSet m_copySet_;
+
+    /**
+     * UnicodeSet that contains code points for which we want to remove
+     * UCA contractions. It implies copying of these code points from
+     * the UCA.
+     */
+    UnicodeSet m_removeSet_;
+    /*
+     * This is space for the extra strings that need to be unquoted during the
+     * parsing of the rules
+     */
+    //private static final int TOKEN_EXTRA_RULE_SPACE_SIZE_ = 2048;
+    /**
+     * Indicator that the token is not set yet
+     */
+    private static final int TOKEN_UNSET_ = 0xFFFFFFFF;
+    /*
+     * Indicator that the rule is in the > polarity, ie everything on the
+     * right of the rule is less than
+     */
+    //private static final int TOKEN_POLARITY_NEGATIVE_ = 0;
+    /**
+     * Indicator that the rule is in the < polarity, ie everything on the
+     * right of the rule is greater than
+     */
+    private static final int TOKEN_POLARITY_POSITIVE_ = 1;
+    /**
+     * Flag mask to determine if top is set
+     */
+    private static final int TOKEN_TOP_MASK_ = 0x04;
+    /**
+     * Flag mask to determine if variable top is set
+     */
+    private static final int TOKEN_VARIABLE_TOP_MASK_ = 0x08;
+    /**
+     * Flag mask to determine if a before attribute is set
+     */
+    private static final int TOKEN_BEFORE_ = 0x03;
+    /**
+     * For use in parsing token options
+     */
+    private static final int TOKEN_SUCCESS_MASK_ = 0x10;
+
+    /**
+     * These values are used for finding CE values for indirect positioning.
+     * Indirect positioning is a mechanism for allowing resets on symbolic
+     * values. It only works for resets and you cannot tailor indirect names.
+     * An indirect name can define either an anchor point or a range. An anchor
+     * point behaves in exactly the same way as a code point in reset would,
+     * except that it cannot be tailored. A range (we currently only know for
+     * the [top] range will explicitly set the upper bound for generated CEs,
+     * thus allowing for better control over how many CEs can be squeezed
+     * between in the range without performance penalty. In that respect, we use
+     * [top] for tailoring of locales that use CJK characters. Other indirect
+     * values are currently a pure convenience, they can be used to assure that
+     * the CEs will be always positioned in the same place relative to a point
+     * with known properties (e.g. first primary ignorable).
+     */
+    private static final IndirectBoundaries INDIRECT_BOUNDARIES_[];
+
+//    /**
+//     * Inverse UCA constants
+//     */
+//    private static final int INVERSE_SIZE_MASK_ = 0xFFF00000;
+//    private static final int INVERSE_OFFSET_MASK_ = 0x000FFFFF;
+//    private static final int INVERSE_SHIFT_VALUE_ = 20;
+
+    /**
+     * Collation option tags
+     * [last variable] last variable value
+     * [last primary ignorable] largest CE for primary ignorable
+     * [last secondary ignorable] largest CE for secondary ignorable
+     * [last tertiary ignorable] largest CE for tertiary ignorable
+     * [top] guaranteed to be above all implicit CEs, for now and in the future (in 1.8)
+     */
+    private static final TokenOption RULES_OPTIONS_[];
+
+    static
+    {
+        INDIRECT_BOUNDARIES_ = new IndirectBoundaries[15];
+        // UCOL_RESET_TOP_VALUE
+        INDIRECT_BOUNDARIES_[0] = new IndirectBoundaries(
+                        RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_,
+                        RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_);
+        // UCOL_FIRST_PRIMARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[1] = new IndirectBoundaries(
+                    RuleBasedCollator.UCA_CONSTANTS_.FIRST_PRIMARY_IGNORABLE_,
+                    null);
+        // UCOL_LAST_PRIMARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[2] = new IndirectBoundaries(
+                    RuleBasedCollator.UCA_CONSTANTS_.LAST_PRIMARY_IGNORABLE_,
+                    null);
+
+        // UCOL_FIRST_SECONDARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[3] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_SECONDARY_IGNORABLE_,
+                   null);
+        // UCOL_LAST_SECONDARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[4] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_SECONDARY_IGNORABLE_,
+                   null);
+        // UCOL_FIRST_TERTIARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[5] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TERTIARY_IGNORABLE_,
+                   null);
+        // UCOL_LAST_TERTIARY_IGNORABLE
+        INDIRECT_BOUNDARIES_[6] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_TERTIARY_IGNORABLE_,
+                   null);
+        // UCOL_FIRST_VARIABLE;
+        INDIRECT_BOUNDARIES_[7] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_VARIABLE_,
+                   null);
+        // UCOL_LAST_VARIABLE
+        INDIRECT_BOUNDARIES_[8] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_VARIABLE_,
+                   null);
+        // UCOL_FIRST_NON_VARIABLE
+        INDIRECT_BOUNDARIES_[9] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_NON_VARIABLE_,
+                   null);
+        // UCOL_LAST_NON_VARIABLE
+        INDIRECT_BOUNDARIES_[10] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_,
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_);
+        // UCOL_FIRST_IMPLICIT
+        INDIRECT_BOUNDARIES_[11] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_,
+                   null);
+        // UCOL_LAST_IMPLICIT
+        INDIRECT_BOUNDARIES_[12] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_IMPLICIT_,
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TRAILING_);
+        // UCOL_FIRST_TRAILING
+        INDIRECT_BOUNDARIES_[13] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.FIRST_TRAILING_,
+                   null);
+        // UCOL_LAST_TRAILING
+        INDIRECT_BOUNDARIES_[14] = new IndirectBoundaries(
+                   RuleBasedCollator.UCA_CONSTANTS_.LAST_TRAILING_,
+                   null);
+        INDIRECT_BOUNDARIES_[14].m_limitCE_
+                 = RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_SPECIAL_MIN_ << 24;
+
+        RULES_OPTIONS_ = new TokenOption[19];
+        String option[] = {"non-ignorable", "shifted"};
+        int value[] = {RuleBasedCollator.AttributeValue.NON_IGNORABLE_,
+                       RuleBasedCollator.AttributeValue.SHIFTED_};
+        RULES_OPTIONS_[0] = new TokenOption("alternate",
+                              RuleBasedCollator.Attribute.ALTERNATE_HANDLING_,
+                              option, value);
+        option = new String[1];
+        option[0] = "2";
+        value = new int[1];
+        value[0] = RuleBasedCollator.AttributeValue.ON_;
+        RULES_OPTIONS_[1] = new TokenOption("backwards",
+                                 RuleBasedCollator.Attribute.FRENCH_COLLATION_,
+                                 option, value);
+        String offonoption[] = new String[2];
+        offonoption[0] = "off";
+        offonoption[1] = "on";
+        int offonvalue[] = new int[2];
+        offonvalue[0] = RuleBasedCollator.AttributeValue.OFF_;
+        offonvalue[1] = RuleBasedCollator.AttributeValue.ON_;
+        RULES_OPTIONS_[2] = new TokenOption("caseLevel",
+                                       RuleBasedCollator.Attribute.CASE_LEVEL_,
+                                       offonoption, offonvalue);
+        option = new String[3];
+        option[0] = "lower";
+        option[1] = "upper";
+        option[2] = "off";
+        value = new int[3];
+        value[0] = RuleBasedCollator.AttributeValue.LOWER_FIRST_;
+        value[1] = RuleBasedCollator.AttributeValue.UPPER_FIRST_;
+        value[2] = RuleBasedCollator.AttributeValue.OFF_;
+        RULES_OPTIONS_[3] = new TokenOption("caseFirst",
+                                       RuleBasedCollator.Attribute.CASE_FIRST_,
+                                       option, value);
+        RULES_OPTIONS_[4] = new TokenOption("normalization",
+                               RuleBasedCollator.Attribute.NORMALIZATION_MODE_,
+                               offonoption, offonvalue);
+        RULES_OPTIONS_[5] = new TokenOption("hiraganaQ",
+                         RuleBasedCollator.Attribute.HIRAGANA_QUATERNARY_MODE_,
+                         offonoption, offonvalue);
+        option = new String[5];
+        option[0] = "1";
+        option[1] = "2";
+        option[2] = "3";
+        option[3] = "4";
+        option[4] = "I";
+        value = new int[5];
+        value[0] = RuleBasedCollator.AttributeValue.PRIMARY_;
+        value[1] = RuleBasedCollator.AttributeValue.SECONDARY_;
+        value[2] = RuleBasedCollator.AttributeValue.TERTIARY_;
+        value[3] = RuleBasedCollator.AttributeValue.QUATERNARY_;
+        value[4] = RuleBasedCollator.AttributeValue.IDENTICAL_;
+        RULES_OPTIONS_[6] = new TokenOption("strength",
+                                         RuleBasedCollator.Attribute.STRENGTH_,
+                                         option, value);
+        RULES_OPTIONS_[7] = new TokenOption("variable top",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[8] = new TokenOption("rearrange",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        option = new String[3];
+        option[0] = "1";
+        option[1] = "2";
+        option[2] = "3";
+        value = new int[3];
+        value[0] = RuleBasedCollator.AttributeValue.PRIMARY_;
+        value[1] = RuleBasedCollator.AttributeValue.SECONDARY_;
+        value[2] = RuleBasedCollator.AttributeValue.TERTIARY_;
+        RULES_OPTIONS_[9] = new TokenOption("before",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  option, value);
+        RULES_OPTIONS_[10] = new TokenOption("top",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        String firstlastoption[] = new String[7];
+        firstlastoption[0] = "primary";
+        firstlastoption[1] = "secondary";
+        firstlastoption[2] = "tertiary";
+        firstlastoption[3] = "variable";
+        firstlastoption[4] = "regular";
+        firstlastoption[5] = "implicit";
+        firstlastoption[6] = "trailing";
+
+        int firstlastvalue[] = new int[7];
+        Arrays.fill(firstlastvalue, RuleBasedCollator.AttributeValue.PRIMARY_);
+
+        RULES_OPTIONS_[11] = new TokenOption("first",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  firstlastoption, firstlastvalue);
+        RULES_OPTIONS_[12] = new TokenOption("last",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  firstlastoption, firstlastvalue);
+        RULES_OPTIONS_[13] = new TokenOption("optimize",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[14] = new TokenOption("suppressContractions",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[15] = new TokenOption("undefined",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[16] = new TokenOption("scriptOrder",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[17] = new TokenOption("charsetname",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+        RULES_OPTIONS_[18] = new TokenOption("charset",
+                                  RuleBasedCollator.Attribute.LIMIT_,
+                                  null, null);
+    }
+
+    /**
+     * Utility data members
+     */
+    private Token m_utilToken_ = new Token();
+    private CollationElementIterator m_UCAColEIter_
+                      = RuleBasedCollator.UCA_.getCollationElementIterator("");
+    private int m_utilCEBuffer_[] = new int[2];
+
+    // private methods -------------------------------------------------------
+
+    /**
+     * Assembles the token list
+     * @exception ParseException thrown when rules syntax fails
+     */
+    int assembleTokenList() throws ParseException
+    {
+        Token lastToken = null;
+        m_parsedToken_.m_strength_ = TOKEN_UNSET_;
+        int sourcelimit = m_source_.length();
+        int expandNext = 0;
+
+        while (m_current_ < sourcelimit) {
+            m_parsedToken_.m_prefixOffset_ = 0;
+            if (parseNextToken(lastToken == null) < 0) {
+                // we have reached the end
+                continue;
+            }
+            char specs = m_parsedToken_.m_flags_;
+            boolean variableTop = ((specs & TOKEN_VARIABLE_TOP_MASK_) != 0);
+            boolean top = ((specs & TOKEN_TOP_MASK_) != 0);
+            int lastStrength = TOKEN_UNSET_;
+            if (lastToken != null) {
+                lastStrength = lastToken.m_strength_;
+            }
+            m_utilToken_.m_source_ = m_parsedToken_.m_charsLen_ << 24
+                                             | m_parsedToken_.m_charsOffset_;
+            m_utilToken_.m_rules_ = m_source_;
+            // 4 Lookup each source in the CharsToToken map, and find a
+            // sourcetoken
+            Token sourceToken = (Token)m_hashTable_.get(m_utilToken_);
+            if (m_parsedToken_.m_strength_ != TOKEN_RESET_) {
+                if (lastToken == null) {
+                    // this means that rules haven't started properly
+                    throwParseException(m_source_.toString(), 0);
+                }
+                //  6 Otherwise (when relation != reset)
+                if (sourceToken == null) {
+                    // If sourceToken is null, create new one
+                    sourceToken = new Token();
+                     sourceToken.m_rules_ = m_source_;
+                    sourceToken.m_source_ = m_parsedToken_.m_charsLen_ << 24
+                                           | m_parsedToken_.m_charsOffset_;
+                    sourceToken.m_prefix_ = m_parsedToken_.m_prefixLen_ << 24
+                                           | m_parsedToken_.m_prefixOffset_;
+                    // TODO: this should also handle reverse
+                    sourceToken.m_polarity_ = TOKEN_POLARITY_POSITIVE_;
+                    sourceToken.m_next_ = null;
+                     sourceToken.m_previous_ = null;
+                    sourceToken.m_CELength_ = 0;
+                    sourceToken.m_expCELength_ = 0;
+                    m_hashTable_.put(sourceToken, sourceToken);
+                }
+                else {
+                    // we could have fished out a reset here
+                    if (sourceToken.m_strength_ != TOKEN_RESET_
+                        && lastToken != sourceToken) {
+                        // otherwise remove sourceToken from where it was.
+                        if (sourceToken.m_next_ != null) {
+                            if (sourceToken.m_next_.m_strength_
+                                                   > sourceToken.m_strength_) {
+                                sourceToken.m_next_.m_strength_
+                                                   = sourceToken.m_strength_;
+                            }
+                            sourceToken.m_next_.m_previous_
+                                                    = sourceToken.m_previous_;
+                        }
+                        else {
+                            sourceToken.m_listHeader_.m_last_
+                                                    = sourceToken.m_previous_;
+                        }
+                        if (sourceToken.m_previous_ != null) {
+                            sourceToken.m_previous_.m_next_
+                                                        = sourceToken.m_next_;
+                        }
+                        else {
+                            sourceToken.m_listHeader_.m_first_
+                                                        = sourceToken.m_next_;
+                        }
+                        sourceToken.m_next_ = null;
+                        sourceToken.m_previous_ = null;
+                    }
+                }
+                sourceToken.m_strength_ = m_parsedToken_.m_strength_;
+                sourceToken.m_listHeader_ = lastToken.m_listHeader_;
+
+                // 1.  Find the strongest strength in each list, and set
+                // strongestP and strongestN accordingly in the headers.
+                if (lastStrength == TOKEN_RESET_
+                    || sourceToken.m_listHeader_.m_first_ == null) {
+                    // If LAST is a reset insert sourceToken in the list.
+                    if (sourceToken.m_listHeader_.m_first_ == null) {
+                        sourceToken.m_listHeader_.m_first_ = sourceToken;
+                        sourceToken.m_listHeader_.m_last_ = sourceToken;
+                    }
+                    else { // we need to find a place for us
+                           // and we'll get in front of the same strength
+                        if (sourceToken.m_listHeader_.m_first_.m_strength_
+                                                 <= sourceToken.m_strength_) {
+                            sourceToken.m_next_
+                                          = sourceToken.m_listHeader_.m_first_;
+                            sourceToken.m_next_.m_previous_ = sourceToken;
+                            sourceToken.m_listHeader_.m_first_ = sourceToken;
+                            sourceToken.m_previous_ = null;
+                        }
+                        else {
+                            lastToken = sourceToken.m_listHeader_.m_first_;
+                            while (lastToken.m_next_ != null
+                                   && lastToken.m_next_.m_strength_
+                                                 > sourceToken.m_strength_) {
+                                lastToken = lastToken.m_next_;
+                            }
+                            if (lastToken.m_next_ != null) {
+                                lastToken.m_next_.m_previous_ = sourceToken;
+                            }
+                            else {
+                                sourceToken.m_listHeader_.m_last_
+                                                               = sourceToken;
+                            }
+                            sourceToken.m_previous_ = lastToken;
+                            sourceToken.m_next_ = lastToken.m_next_;
+                            lastToken.m_next_ = sourceToken;
+                        }
+                    }
+                }
+                else {
+                    // Otherwise (when LAST is not a reset)
+                    // if polarity (LAST) == polarity(relation), insert
+                    // sourceToken after LAST, otherwise insert before.
+                    // when inserting after or before, search to the next
+                    // position with the same strength in that direction.
+                    // (This is called postpone insertion).
+                    if (sourceToken != lastToken) {
+                        if (lastToken.m_polarity_ == sourceToken.m_polarity_) {
+                            while (lastToken.m_next_ != null
+                                   && lastToken.m_next_.m_strength_
+                                                   > sourceToken.m_strength_) {
+                                lastToken = lastToken.m_next_;
+                            }
+                            sourceToken.m_previous_ = lastToken;
+                            if (lastToken.m_next_ != null) {
+                                lastToken.m_next_.m_previous_ = sourceToken;
+                            }
+                            else {
+                                sourceToken.m_listHeader_.m_last_ = sourceToken;
+                            }
+                            sourceToken.m_next_ = lastToken.m_next_;
+                            lastToken.m_next_ = sourceToken;
+                        }
+                        else {
+                            while (lastToken.m_previous_ != null
+                                   && lastToken.m_previous_.m_strength_
+                                                > sourceToken.m_strength_) {
+                                lastToken = lastToken.m_previous_;
+                            }
+                            sourceToken.m_next_ = lastToken;
+                            if (lastToken.m_previous_ != null) {
+                                lastToken.m_previous_.m_next_ = sourceToken;
+                            }
+                            else {
+                                sourceToken.m_listHeader_.m_first_
+                                                                 = sourceToken;
+                            }
+                            sourceToken.m_previous_ = lastToken.m_previous_;
+                            lastToken.m_previous_ = sourceToken;
+                        }
+                    }
+                    else { // repeated one thing twice in rules, stay with the
+                           // stronger strength
+                        if (lastStrength < sourceToken.m_strength_) {
+                            sourceToken.m_strength_ = lastStrength;
+                        }
+                    }
+                }
+                // if the token was a variable top, we're gonna put it in
+                if (variableTop == true && m_variableTop_ == null) {
+                    variableTop = false;
+                    m_variableTop_ = sourceToken;
+                }
+                // Treat the expansions.
+                // There are two types of expansions: explicit (x / y) and
+                // reset based propagating expansions
+                // (&abc * d * e <=> &ab * d / c * e / c)
+                // if both of them are in effect for a token, they are combined.
+               sourceToken.m_expansion_ = m_parsedToken_.m_extensionLen_ << 24
+                                          | m_parsedToken_.m_extensionOffset_;
+               if (expandNext != 0) {
+                   if (sourceToken.m_strength_ == RuleBasedCollator.PRIMARY) {
+                       // primary strength kills off the implicit expansion
+                       expandNext = 0;
+                   }
+                   else if (sourceToken.m_expansion_ == 0) {
+                       // if there is no expansion, implicit is just added to
+                       // the token
+                       sourceToken.m_expansion_ = expandNext;
+                   }
+                   else {
+                       // there is both explicit and implicit expansion.
+                       // We need to make a combination
+                       int start = expandNext & 0xFFFFFF;
+                       int size = expandNext >>> 24;
+                       if (size > 0) {
+                          m_source_.append(m_source_.substring(start,
+                                                               start + size));
+                       }
+                          start = m_parsedToken_.m_extensionOffset_;
+                       m_source_.append(m_source_.substring(start,
+                                      start + m_parsedToken_.m_extensionLen_));
+                       sourceToken.m_expansion_ = (size
+                                       + m_parsedToken_.m_extensionLen_) << 24
+                                       | m_extraCurrent_;
+                       m_extraCurrent_ += size + m_parsedToken_.m_extensionLen_;
+                   }
+                }
+               // if the previous token was a reset before, the strength of this
+               // token must match the strength of before. Otherwise we have an
+               // undefined situation.
+               // In other words, we currently have a cludge which we use to
+               // represent &a >> x. This is written as &[before 2]a << x.
+               if((lastToken.m_flags_ & TOKEN_BEFORE_) != 0) {
+                   int beforeStrength = (lastToken.m_flags_ & TOKEN_BEFORE_) - 1;
+                   if(beforeStrength != sourceToken.m_strength_) {
+                          throwParseException(m_source_.toString(), m_current_);
+                   }
+               }
+
+            }
+            else {
+                if (lastToken != null && lastStrength == TOKEN_RESET_) {
+                    // if the previous token was also a reset, this means that
+                    // we have two consecutive resets and we want to remove the
+                    // previous one if empty
+                    if (m_resultLength_ > 0 && m_listHeader_[m_resultLength_ - 1].m_first_ == null) {
+                        m_resultLength_ --;
+                    }
+                }
+                if (sourceToken == null) {
+                    // this is a reset, but it might still be somewhere in the
+                    // tailoring, in shorter form
+                    int searchCharsLen = m_parsedToken_.m_charsLen_;
+                    while (searchCharsLen > 1 && sourceToken == null) {
+                        searchCharsLen --;
+                        // key = searchCharsLen << 24 | charsOffset;
+                        m_utilToken_.m_source_ = searchCharsLen << 24
+                                             | m_parsedToken_.m_charsOffset_;
+                        m_utilToken_.m_rules_ = m_source_;
+                        sourceToken = (Token)m_hashTable_.get(m_utilToken_);
+                    }
+                    if (sourceToken != null) {
+                        expandNext = (m_parsedToken_.m_charsLen_
+                                                      - searchCharsLen) << 24
+                                        | (m_parsedToken_.m_charsOffset_
+                                           + searchCharsLen);
+                    }
+                }
+                if ((specs & TOKEN_BEFORE_) != 0) {
+                    if (top == false) {
+                        // we're doing before & there is no indirection
+                        int strength = (specs & TOKEN_BEFORE_) - 1;
+                        if (sourceToken != null
+                            && sourceToken.m_strength_ != TOKEN_RESET_) {
+                            // this is a before that is already ordered in the UCA
+                            // - so we need to get the previous with good strength
+                            while (sourceToken.m_strength_ > strength
+                                   && sourceToken.m_previous_ != null) {
+                                sourceToken = sourceToken.m_previous_;
+                            }
+                            // here, either we hit the strength or NULL
+                            if (sourceToken.m_strength_ == strength) {
+                                if (sourceToken.m_previous_ != null) {
+                                    sourceToken = sourceToken.m_previous_;
+                                }
+                                else { // start of list
+                                    sourceToken
+                                         = sourceToken.m_listHeader_.m_reset_;
+                                }
+                            }
+                            else { // we hit NULL, we should be doing the else part
+                                sourceToken
+                                         = sourceToken.m_listHeader_.m_reset_;
+                                sourceToken = getVirginBefore(sourceToken,
+                                                              strength);
+                            }
+                        }
+                        else {
+                            sourceToken
+                                      = getVirginBefore(sourceToken, strength);
+                        }
+                    }
+                    else {
+                        // this is both before and indirection
+                        top = false;
+                        m_listHeader_[m_resultLength_] = new TokenListHeader();
+                        m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_indirect_ = true;
+                        // we need to do slightly more work. we need to get the
+                        // baseCE using the inverse UCA & getPrevious. The next
+                        // bound is not set, and will be decided in ucol_bld
+                        int strength = (specs & TOKEN_BEFORE_) - 1;
+                        int baseCE = INDIRECT_BOUNDARIES_[
+                                   m_parsedToken_.m_indirectIndex_].m_startCE_;
+                        int baseContCE = INDIRECT_BOUNDARIES_[
+                               m_parsedToken_.m_indirectIndex_].m_startContCE_;
+                        int ce[] = new int[2];
+                        if((baseCE >>> 24 >= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_)
+                        && (baseCE >>> 24 <=  RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_)) { /* implicits - */
+                            int primary = baseCE & RuleBasedCollator.CE_PRIMARY_MASK_ | (baseContCE & RuleBasedCollator.CE_PRIMARY_MASK_) >> 16;
+                            int raw = RuleBasedCollator.impCEGen_.getRawFromImplicit(primary);
+                            int primaryCE = RuleBasedCollator.impCEGen_.getImplicitFromRaw(raw-1);
+                            ce[0] = primaryCE & RuleBasedCollator.CE_PRIMARY_MASK_ | 0x0505;
+                            ce[1] = (primaryCE << 16) & RuleBasedCollator.CE_PRIMARY_MASK_ | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+                        } else {
+                            CollationParsedRuleBuilder.InverseUCA invuca
+                                = CollationParsedRuleBuilder.INVERSE_UCA_;
+                            invuca.getInversePrevCE(baseCE, baseContCE, strength,
+                                    ce);
+                        }
+                        m_listHeader_[m_resultLength_].m_baseCE_ = ce[0];
+                        m_listHeader_[m_resultLength_].m_baseContCE_ = ce[1];
+                        m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+
+                        sourceToken = new Token();
+                        expandNext = initAReset(0, sourceToken);
+                    }
+                }
+                // 5 If the relation is a reset:
+                // If sourceToken is null
+                // Create new list, create new sourceToken, make the baseCE
+                // from source, put the sourceToken in ListHeader of the new
+                // list
+                if (sourceToken == null) {
+                    if (m_listHeader_[m_resultLength_] == null) {
+                        m_listHeader_[m_resultLength_] = new TokenListHeader();
+                    }
+                    // 3 Consider each item: relation, source, and expansion:
+                    // e.g. ...< x / y ...
+                    // First convert all expansions into normal form.
+                    // Examples:
+                    // If "xy" doesn't occur earlier in the list or in the UCA,
+                    // convert &xy * c * d * ... into &x * c/y * d * ...
+                    // Note: reset values can never have expansions, although
+                    // they can cause the very next item to have one. They may
+                    // be contractions, if they are found earlier in the list.
+                    if (top == false) {
+                        CollationElementIterator coleiter
+                        = RuleBasedCollator.UCA_.getCollationElementIterator(
+                            m_source_.substring(m_parsedToken_.m_charsOffset_,
+                                                m_parsedToken_.m_charsOffset_
+                                                + m_parsedToken_.m_charsLen_));
+
+                        int CE = coleiter.next();
+                        // offset to the character in the full rule string
+                        int expand = coleiter.getOffset()
+                                     + m_parsedToken_.m_charsOffset_;
+                        int SecondCE = coleiter.next();
+
+                        m_listHeader_[m_resultLength_].m_baseCE_
+                                                             = CE & 0xFFFFFF3F;
+                        if (RuleBasedCollator.isContinuation(SecondCE)) {
+                            m_listHeader_[m_resultLength_].m_baseContCE_
+                                                                    = SecondCE;
+                        }
+                        else {
+                            m_listHeader_[m_resultLength_].m_baseContCE_ = 0;
+                        }
+                        m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_indirect_ = false;
+                        sourceToken = new Token();
+                        expandNext = initAReset(expand, sourceToken);
+                    }
+                    else { // top == TRUE
+                        top = false;
+                        m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                        m_listHeader_[m_resultLength_].m_indirect_ = true;
+                        IndirectBoundaries ib = INDIRECT_BOUNDARIES_[
+                                              m_parsedToken_.m_indirectIndex_];
+                        m_listHeader_[m_resultLength_].m_baseCE_
+                                                               = ib.m_startCE_;
+                        m_listHeader_[m_resultLength_].m_baseContCE_
+                                                           = ib.m_startContCE_;
+                        m_listHeader_[m_resultLength_].m_nextCE_
+                                                               = ib.m_limitCE_;
+                        m_listHeader_[m_resultLength_].m_nextContCE_
+                                                           = ib.m_limitContCE_;
+                        sourceToken = new Token();
+                        expandNext = initAReset(0, sourceToken);
+                    }
+                }
+                else { // reset to something already in rules
+                    top = false;
+                }
+            }
+            // 7 After all this, set LAST to point to sourceToken, and goto
+            // step 3.
+            lastToken = sourceToken;
+        }
+
+        if (m_resultLength_ > 0
+            && m_listHeader_[m_resultLength_ - 1].m_first_ == null) {
+            m_resultLength_ --;
+        }
+        return m_resultLength_;
+    }
+
+    /**
+     * Formats and throws a ParseException
+     * @param rules collation rule that failed
+     * @param offset failed offset in rules
+     * @throws ParseException with failure information
+     */
+    private static final void throwParseException(String rules, int offset)
+                                                          throws ParseException
+    {
+        // for pre-context
+        String precontext = rules.substring(0, offset);
+        String postcontext = rules.substring(offset, rules.length());
+        StringBuffer error = new StringBuffer(
+                                    "Parse error occurred in rule at offset ");
+        error.append(offset);
+        error.append("\n after the prefix \"");
+        error.append(precontext);
+        error.append("\" before the suffix \"");
+        error.append(postcontext);
+        throw new ParseException(error.toString(), offset);
+    }
+
+    private final boolean doSetTop() {
+        m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+        m_source_.append((char)0xFFFE);
+        IndirectBoundaries ib =
+                  INDIRECT_BOUNDARIES_[m_parsedToken_.m_indirectIndex_];
+        m_source_.append((char)(ib.m_startCE_ >> 16));
+        m_source_.append((char)(ib.m_startCE_ & 0xFFFF));
+        m_extraCurrent_ += 3;
+        if (INDIRECT_BOUNDARIES_[m_parsedToken_.m_indirectIndex_
+                                                       ].m_startContCE_ == 0) {
+            m_parsedToken_.m_charsLen_ = 3;
+        }
+        else {
+            m_source_.append((char)(INDIRECT_BOUNDARIES_[
+                                        m_parsedToken_.m_indirectIndex_
+                                    ].m_startContCE_ >> 16));
+            m_source_.append((char)(INDIRECT_BOUNDARIES_[
+                                        m_parsedToken_.m_indirectIndex_
+                                    ].m_startContCE_ & 0xFFFF));
+            m_extraCurrent_ += 2;
+            m_parsedToken_.m_charsLen_ = 5;
+        }
+        return true;
+    }
+
+    private static boolean isCharNewLine(char c) {
+        switch (c) {
+        case 0x000A: /* LF */
+        case 0x000D: /* CR */
+        case 0x000C: /* FF */
+        case 0x0085: /* NEL */
+        case 0x2028: /* LS */
+        case 0x2029: /* PS */
+            return true;
+        default:
+            return false;
+        }
+    }
+
+    /**
+     * Getting the next token
+     *
+     * @param startofrules
+     *            flag indicating if we are at the start of rules
+     * @return the offset of the rules
+     * @exception ParseException
+     *                thrown when rule parsing fails
+     */
+    private int parseNextToken(boolean startofrules) throws ParseException
+    {
+        // parsing part
+        boolean variabletop = false;
+        boolean top = false;
+        boolean inchars = true;
+        boolean inquote = false;
+        boolean wasinquote = false;
+        byte before = 0;
+        boolean isescaped = false;
+        int /*newcharslen = 0,*/ newextensionlen = 0;
+        int /*charsoffset = 0,*/ extensionoffset = 0;
+        int newstrength = TOKEN_UNSET_;
+
+        m_parsedToken_.m_charsLen_ = 0;
+        m_parsedToken_.m_charsOffset_ = 0;
+        m_parsedToken_.m_prefixOffset_ = 0;
+        m_parsedToken_.m_prefixLen_ = 0;
+        m_parsedToken_.m_indirectIndex_ = 0;
+
+        int limit = m_rules_.length();
+        while (m_current_ < limit) {
+            char ch = m_source_.charAt(m_current_);
+            if (inquote) {
+                if (ch == 0x0027) { // '\''
+                    inquote = false;
+                }
+                else {
+                    if ((m_parsedToken_.m_charsLen_ == 0) || inchars) {
+                         if (m_parsedToken_.m_charsLen_ == 0) {
+                             m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+                         }
+                         m_parsedToken_.m_charsLen_ ++;
+                    }
+                    else {
+                        if (newextensionlen == 0) {
+                            extensionoffset = m_extraCurrent_;
+                        }
+                        newextensionlen ++;
+                    }
+                }
+            }
+            else if (isescaped) {
+                isescaped = false;
+                if (newstrength == TOKEN_UNSET_) {
+                    throwParseException(m_rules_, m_current_);
+                }
+                if (ch != 0 && m_current_ != limit) {
+                    if (inchars) {
+                        if (m_parsedToken_.m_charsLen_ == 0) {
+                            m_parsedToken_.m_charsOffset_ = m_current_;
+                        }
+                        m_parsedToken_.m_charsLen_ ++;
+                    }
+                    else {
+                        if (newextensionlen == 0) {
+                            extensionoffset = m_current_;
+                        }
+                        newextensionlen ++;
+                    }
+                }
+            }
+            else {
+                if (!UCharacterProperty.isRuleWhiteSpace(ch)) {
+                    // Sets the strength for this entry
+                    switch (ch) {
+                    case 0x003D : // '='
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // if we start with strength, we'll reset to top
+                        if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        newstrength = Collator.IDENTICAL;
+                        break;
+                    case 0x002C : // ','
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // if we start with strength, we'll reset to top
+                        if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        newstrength = Collator.TERTIARY;
+                        break;
+                    case 0x003B : // ';'
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // if we start with strength, we'll reset to top
+                        if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        newstrength = Collator.SECONDARY;
+                        break;
+                    case 0x003C : // '<'
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // if we start with strength, we'll reset to top
+                        if (startofrules == true) {
+                            m_parsedToken_.m_indirectIndex_ = 5;
+                            top = doSetTop();
+                            return doEndParseNextToken(TOKEN_RESET_,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        // before this, do a scan to verify whether this is
+                        // another strength
+                        if (m_source_.charAt(m_current_ + 1) == 0x003C) {
+                            m_current_ ++;
+                            if (m_source_.charAt(m_current_ + 1) == 0x003C) {
+                                m_current_ ++; // three in a row!
+                                newstrength = Collator.TERTIARY;
+                            }
+                            else { // two in a row
+                                newstrength = Collator.SECONDARY;
+                            }
+                        }
+                        else { // just one
+                            newstrength = Collator.PRIMARY;
+                        }
+                        break;
+                    case 0x0026 : // '&'
+                        if (newstrength != TOKEN_UNSET_) {
+                            return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                        }
+                        newstrength = TOKEN_RESET_; // PatternEntry::RESET = 0
+                        break;
+                    case 0x005b : // '['
+                        // options - read an option, analyze it
+                        m_optionEnd_ = m_rules_.indexOf(0x005d, m_current_);
+                        if (m_optionEnd_ != -1) { // ']'
+                            byte result = readAndSetOption();
+                            m_current_ = m_optionEnd_;
+                            if ((result & TOKEN_TOP_MASK_) != 0) {
+                                if (newstrength == TOKEN_RESET_) {
+                                    top = doSetTop();
+                                    if (before != 0) {
+                                        // This is a combination of before and
+                                        // indirection like
+                                        // '&[before 2][first regular]<b'
+                                        m_source_.append((char)0x002d);
+                                        m_source_.append((char)before);
+                                        m_extraCurrent_ += 2;
+                                        m_parsedToken_.m_charsLen_ += 2;
+                                    }
+                                    m_current_ ++;
+                                    return doEndParseNextToken(newstrength,
+                                                       true,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                                }
+                                else {
+                                    throwParseException(m_rules_, m_current_);
+                                }
+                            }
+                            else if ((result & TOKEN_VARIABLE_TOP_MASK_) != 0) {
+                                if (newstrength != TOKEN_RESET_
+                                    && newstrength != TOKEN_UNSET_) {
+                                    variabletop = true;
+                                    m_parsedToken_.m_charsOffset_
+                                                             = m_extraCurrent_;
+                                    m_source_.append((char)0xFFFF);
+                                    m_extraCurrent_ ++;
+                                    m_current_ ++;
+                                    m_parsedToken_.m_charsLen_ = 1;
+                                    return doEndParseNextToken(newstrength,
+                                                       top,
+                                                       extensionoffset,
+                                                       newextensionlen,
+                                                       variabletop, before);
+                                }
+                                else {
+                                    throwParseException(m_rules_, m_current_);
+                                }
+                            }
+                            else if ((result & TOKEN_BEFORE_) != 0){
+                                if (newstrength == TOKEN_RESET_) {
+                                    before = (byte)(result & TOKEN_BEFORE_);
+                                }
+                                else {
+                                    throwParseException(m_rules_, m_current_);
+                                }
+                            }
+                        }
+                        break;
+                    case 0x002F : // '/'
+                        wasinquote = false; // if we were copying source
+                                            // characters, we want to stop now
+                        inchars = false; // we're now processing expansion
+                        break;
+                    case 0x005C : // back slash for escaped chars
+                        isescaped = true;
+                        break;
+                    // found a quote, we're gonna start copying
+                    case 0x0027 : //'\''
+                        if (newstrength == TOKEN_UNSET_) {
+                            // quote is illegal until we have a strength
+                            throwParseException(m_rules_, m_current_);
+                        }
+                        inquote = true;
+                        if (inchars) { // we're doing characters
+                            if (wasinquote == false) {
+                                m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+                            }
+                            if (m_parsedToken_.m_charsLen_ != 0) {
+                                m_source_.append(m_source_.substring(
+                                       m_current_ - m_parsedToken_.m_charsLen_,
+                                       m_current_));
+                                m_extraCurrent_ += m_parsedToken_.m_charsLen_;
+                            }
+                            m_parsedToken_.m_charsLen_ ++;
+                        }
+                        else { // we're doing an expansion
+                            if (wasinquote == false) {
+                                extensionoffset = m_extraCurrent_;
+                            }
+                            if (newextensionlen != 0) {
+                                m_source_.append(m_source_.substring(
+                                                   m_current_ - newextensionlen,
+                                                   m_current_));
+                                m_extraCurrent_ += newextensionlen;
+                            }
+                            newextensionlen ++;
+                        }
+                        wasinquote = true;
+                        m_current_ ++;
+                        ch = m_source_.charAt(m_current_);
+                        if (ch == 0x0027) { // copy the double quote
+                            m_source_.append(ch);
+                            m_extraCurrent_ ++;
+                            inquote = false;
+                        }
+                        break;
+                    // '@' is french only if the strength is not currently set
+                    // if it is, it's just a regular character in collation
+                    case 0x0040 : // '@'
+                        if (newstrength == TOKEN_UNSET_) {
+                            m_options_.m_isFrenchCollation_ = true;
+                        break;
+                    }
+                    case 0x007C : //|
+                        // this means we have actually been reading prefix part
+                        // we want to store read characters to the prefix part
+                        // and continue reading the characters (proper way
+                        // would be to restart reading the chars, but in that
+                        // case we would have to complicate the token hasher,
+                        // which I do not intend to play with. Instead, we will
+                        // do prefixes when prefixes are due (before adding the
+                        // elements).
+                        m_parsedToken_.m_prefixOffset_
+                                                = m_parsedToken_.m_charsOffset_;
+                        m_parsedToken_.m_prefixLen_
+                                                = m_parsedToken_.m_charsLen_;
+                        if (inchars) { // we're doing characters
+                            if (wasinquote == false) {
+                                m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+                            }
+                            if (m_parsedToken_.m_charsLen_ != 0) {
+                                String prefix = m_source_.substring(
+                                       m_current_ - m_parsedToken_.m_charsLen_,
+                                       m_current_);
+                                m_source_.append(prefix);
+                                m_extraCurrent_ += m_parsedToken_.m_charsLen_;
+                            }
+                            m_parsedToken_.m_charsLen_ ++;
+                        }
+                        wasinquote = true;
+                        do {
+                            m_current_ ++;
+                            ch = m_source_.charAt(m_current_);
+                            // skip whitespace between '|' and the character
+                        } while (UCharacterProperty.isRuleWhiteSpace(ch));
+                        break;
+                    case 0x0023: // '#' // this is a comment, skip everything through the end of line
+                        do {
+                            m_current_ ++;
+                            ch = m_source_.charAt(m_current_);
+                        } while (!isCharNewLine(ch));
+                        break;
+                    case 0x0021: // '!' // ignoring java set thai reordering
+                        break;
+                    default :
+                        if (newstrength == TOKEN_UNSET_) {
+                            throwParseException(m_rules_, m_current_);
+                        }
+                        if (isSpecialChar(ch) && (inquote == false)) {
+                            throwParseException(m_rules_, m_current_);
+                        }
+                        if (ch == 0x0000 && m_current_ + 1 == limit) {
+                            break;
+                        }
+                        if (inchars) {
+                            if (m_parsedToken_.m_charsLen_ == 0) {
+                                m_parsedToken_.m_charsOffset_ = m_current_;
+                            }
+                            m_parsedToken_.m_charsLen_++;
+                        }
+                        else {
+                            if (newextensionlen == 0) {
+                                extensionoffset = m_current_;
+                            }
+                            newextensionlen ++;
+                        }
+                        break;
+                    }
+                }
+            }
+            if (wasinquote) {
+                if (ch != 0x27) {
+                      m_source_.append(ch);
+                    m_extraCurrent_ ++;
+                }
+            }
+            m_current_ ++;
+        }
+        return doEndParseNextToken(newstrength, top,
+                                   extensionoffset, newextensionlen,
+                                   variabletop, before);
+    }
+
+    /**
+     * End the next parse token
+     * @param newstrength new strength
+     * @return offset in rules, -1 for end of rules
+     */
+    private int doEndParseNextToken(int newstrength, /*int newcharslen,*/
+                                    boolean top, /*int charsoffset,*/
+                                    int extensionoffset, int newextensionlen,
+                                    boolean variabletop, int before)
+                                    throws ParseException
+    {
+        if (newstrength == TOKEN_UNSET_) {
+            return -1;
+        }
+        if (m_parsedToken_.m_charsLen_ == 0 && top == false) {
+            throwParseException(m_rules_, m_current_);
+        }
+
+        m_parsedToken_.m_strength_ = newstrength;
+        //m_parsedToken_.m_charsOffset_ = charsoffset;
+        //m_parsedToken_.m_charsLen_ = newcharslen;
+        m_parsedToken_.m_extensionOffset_ = extensionoffset;
+        m_parsedToken_.m_extensionLen_ = newextensionlen;
+        m_parsedToken_.m_flags_ = (char)
+                                  ((variabletop ? TOKEN_VARIABLE_TOP_MASK_ : 0)
+                                  | (top ? TOKEN_TOP_MASK_ : 0) | before);
+        return m_current_;
+    }
+
+    /**
+     * Token before this element
+     * @param sourcetoken
+     * @param strength collation strength
+     * @return the token before source token
+     * @exception ParseException thrown when rules have the wrong syntax
+     */
+    private Token getVirginBefore(Token sourcetoken, int strength)
+                                                          throws ParseException
+    {
+        // this is a virgin before - we need to fish the anchor from the UCA
+        if (sourcetoken != null) {
+            int offset = sourcetoken.m_source_ & 0xFFFFFF;
+            m_UCAColEIter_.setText(m_source_.substring(offset, offset + 1));
+        }
+        else {
+            m_UCAColEIter_.setText(
+                             m_source_.substring(m_parsedToken_.m_charsOffset_,
+                             m_parsedToken_.m_charsOffset_ + 1));
+        }
+
+        int basece = m_UCAColEIter_.next() & 0xFFFFFF3F;
+        int basecontce = m_UCAColEIter_.next();
+        if (basecontce == CollationElementIterator.NULLORDER) {
+            basecontce = 0;
+        }
+
+        int ch = 0;
+
+
+        if((basece >>> 24 >= RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_)
+                && (basece >>> 24 <=  RuleBasedCollator.UCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_)) { /* implicits - */
+
+            int primary = basece & RuleBasedCollator.CE_PRIMARY_MASK_ | (basecontce & RuleBasedCollator.CE_PRIMARY_MASK_) >> 16;
+            int raw = RuleBasedCollator.impCEGen_.getRawFromImplicit(primary);
+            ch = RuleBasedCollator.impCEGen_.getCodePointFromRaw(raw-1);
+            int primaryCE = RuleBasedCollator.impCEGen_.getImplicitFromRaw(raw-1);
+            m_utilCEBuffer_[0] = primaryCE & RuleBasedCollator.CE_PRIMARY_MASK_ | 0x0505;
+            m_utilCEBuffer_[1] = (primaryCE << 16) & RuleBasedCollator.CE_PRIMARY_MASK_ | RuleBasedCollator.CE_CONTINUATION_MARKER_;
+
+            m_parsedToken_.m_charsOffset_ = m_extraCurrent_;
+            m_source_.append('\uFFFE');
+            m_source_.append((char)ch);
+            m_extraCurrent_ += 2;
+            m_parsedToken_.m_charsLen_++;
+
+            m_utilToken_.m_source_ = (m_parsedToken_.m_charsLen_ << 24)
+            | m_parsedToken_.m_charsOffset_;
+            m_utilToken_.m_rules_ = m_source_;
+            sourcetoken = (Token)m_hashTable_.get(m_utilToken_);
+
+            if(sourcetoken == null) {
+                m_listHeader_[m_resultLength_] = new TokenListHeader();
+                m_listHeader_[m_resultLength_].m_baseCE_
+                    = m_utilCEBuffer_[0] & 0xFFFFFF3F;
+                if (RuleBasedCollator.isContinuation(m_utilCEBuffer_[1])) {
+                    m_listHeader_[m_resultLength_].m_baseContCE_
+                    = m_utilCEBuffer_[1];
+                }
+                else {
+                    m_listHeader_[m_resultLength_].m_baseContCE_ = 0;
+                }
+                m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+                m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                m_listHeader_[m_resultLength_].m_indirect_ = false;
+
+                sourcetoken = new Token();
+                initAReset(-1, sourcetoken);
+            }
+
+        } else {
+
+            // first ce and second ce m_utilCEBuffer_
+            /*int invpos = */CollationParsedRuleBuilder.INVERSE_UCA_.getInversePrevCE(
+                                                         basece, basecontce,
+                                                         strength, m_utilCEBuffer_);
+            // we got the previous CE. Now we need to see if the difference between
+            // the two CEs is really of the requested strength.
+            // if it's a bigger difference (we asked for secondary and got primary), we
+            // need to modify the CE.
+            if(CollationParsedRuleBuilder.INVERSE_UCA_.getCEStrengthDifference(basece, basecontce, m_utilCEBuffer_[0], m_utilCEBuffer_[1]) < strength) {
+                // adjust the strength
+                // now we are in the situation where our baseCE should actually be modified in
+                // order to get the CE in the right position.
+                if(strength == Collator.SECONDARY) {
+                    m_utilCEBuffer_[0] = basece - 0x0200;
+                } else { // strength == UCOL_TERTIARY
+                    m_utilCEBuffer_[0] = basece - 0x02;
+                }
+                if(RuleBasedCollator.isContinuation(basecontce)) {
+                    if(strength == Collator.SECONDARY) {
+                        m_utilCEBuffer_[1] = basecontce - 0x0200;
+                    } else { // strength == UCOL_TERTIARY
+                        m_utilCEBuffer_[1] = basecontce - 0x02;
+                    }
+                }
+            }
+
+/*
+            // the code below relies on getting a code point from the inverse table, in order to be
+            // able to merge the situations like &x < 9 &[before 1]a < d. This won't work:
+            // 1. There are many code points that have the same CE
+            // 2. The CE to codepoint table (things pointed to by CETable[3*invPos+2] are broken.
+            // Also, in case when there is no equivalent strength before an element, we have to actually
+            // construct one. For example, &[before 2]a << x won't result in x << a, because the element
+            // before a is a primary difference.
+            ch = CollationParsedRuleBuilder.INVERSE_UCA_.m_table_[3 * invpos
+                                                                      + 2];
+            if ((ch &  INVERSE_SIZE_MASK_) != 0) {
+                int offset = ch & INVERSE_OFFSET_MASK_;
+                ch = CollationParsedRuleBuilder.INVERSE_UCA_.m_continuations_[
+                                                                           offset];
+            }
+            m_source_.append((char)ch);
+            m_extraCurrent_ ++;
+            m_parsedToken_.m_charsOffset_ = m_extraCurrent_ - 1;
+            m_parsedToken_.m_charsLen_ = 1;
+
+            // We got an UCA before. However, this might have been tailored.
+            // example:
+            // &\u30ca = \u306a
+            // &[before 3]\u306a<<<\u306a|\u309d
+
+            m_utilToken_.m_source_ = (m_parsedToken_.m_charsLen_ << 24)
+                                                 | m_parsedToken_.m_charsOffset_;
+            m_utilToken_.m_rules_ = m_source_;
+            sourcetoken = (Token)m_hashTable_.get(m_utilToken_);
+*/
+
+            // here is how it should be. The situation such as &[before 1]a < x, should be
+            // resolved exactly as if we wrote &a > x.
+            // therefore, I don't really care if the UCA value before a has been changed.
+            // However, I do care if the strength between my element and the previous element
+            // is bigger then I wanted. So, if CE < baseCE and I wanted &[before 2], then i'll
+            // have to construct the base CE.
+
+            // if we found a tailored thing, we have to use the UCA value and
+            // construct a new reset token with constructed name
+            //if (sourcetoken != null && sourcetoken.m_strength_ != TOKEN_RESET_) {
+                // character to which we want to anchor is already tailored.
+                // We need to construct a new token which will be the anchor point
+                //m_source_.setCharAt(m_extraCurrent_ - 1, '\uFFFE');
+                //m_source_.append(ch);
+                //m_extraCurrent_ ++;
+                //m_parsedToken_.m_charsLen_ ++;
+                // grab before
+                m_parsedToken_.m_charsOffset_ -= 10;
+                m_parsedToken_.m_charsLen_ += 10;
+                m_listHeader_[m_resultLength_] = new TokenListHeader();
+                m_listHeader_[m_resultLength_].m_baseCE_
+                                                 = m_utilCEBuffer_[0] & 0xFFFFFF3F;
+                if (RuleBasedCollator.isContinuation(m_utilCEBuffer_[1])) {
+                    m_listHeader_[m_resultLength_].m_baseContCE_
+                                                              = m_utilCEBuffer_[1];
+                }
+                else {
+                    m_listHeader_[m_resultLength_].m_baseContCE_ = 0;
+                }
+                m_listHeader_[m_resultLength_].m_nextCE_ = 0;
+                m_listHeader_[m_resultLength_].m_nextContCE_ = 0;
+                m_listHeader_[m_resultLength_].m_previousCE_ = 0;
+                m_listHeader_[m_resultLength_].m_previousContCE_ = 0;
+                m_listHeader_[m_resultLength_].m_indirect_ = false;
+                sourcetoken = new Token();
+                initAReset(-1, sourcetoken);
+            //}
+        }
+        return sourcetoken;
+    }
+
+    /**
+     * Processing Description.
+     * 1. Build a m_listHeader_. Each list has a header, which contains two lists
+     * (positive and negative), a reset token, a baseCE, nextCE, and
+     * previousCE. The lists and reset may be null.
+     * 2. As you process, you keep a LAST pointer that points to the last token
+     * you handled.
+     * @param expand string offset, -1 for null strings
+     * @param targetToken token to update
+     * @return expandnext offset
+     * @throws ParseException thrown when rules syntax failed
+     */
+    private int initAReset(int expand, Token targetToken) throws ParseException
+    {
+        if (m_resultLength_ == m_listHeader_.length - 1) {
+            // Unfortunately, this won't work, as we store addresses of lhs in
+            // token
+            TokenListHeader temp[] = new TokenListHeader[m_resultLength_ << 1];
+            System.arraycopy(m_listHeader_, 0, temp, 0, m_resultLength_ + 1);
+            m_listHeader_ = temp;
+        }
+        // do the reset thing
+        targetToken.m_rules_ = m_source_;
+        targetToken.m_source_ = m_parsedToken_.m_charsLen_ << 24
+                                | m_parsedToken_.m_charsOffset_;
+        targetToken.m_expansion_ = m_parsedToken_.m_extensionLen_ << 24
+                                   | m_parsedToken_.m_extensionOffset_;
+        // keep the flags around so that we know about before
+        targetToken.m_flags_ = m_parsedToken_.m_flags_;
+
+        if (m_parsedToken_.m_prefixOffset_ != 0) {
+            throwParseException(m_rules_, m_parsedToken_.m_charsOffset_ - 1);
+        }
+
+        targetToken.m_prefix_ = 0;
+        // TODO: this should also handle reverse
+        targetToken.m_polarity_ = TOKEN_POLARITY_POSITIVE_;
+        targetToken.m_strength_ = TOKEN_RESET_;
+        targetToken.m_next_ = null;
+        targetToken.m_previous_ = null;
+        targetToken.m_CELength_ = 0;
+        targetToken.m_expCELength_ = 0;
+        targetToken.m_listHeader_ = m_listHeader_[m_resultLength_];
+        m_listHeader_[m_resultLength_].m_first_ = null;
+        m_listHeader_[m_resultLength_].m_last_ = null;
+        m_listHeader_[m_resultLength_].m_first_ = null;
+        m_listHeader_[m_resultLength_].m_last_ = null;
+        m_listHeader_[m_resultLength_].m_reset_ = targetToken;
+
+        /* 3 Consider each item: relation, source, and expansion:
+         * e.g. ...< x / y ...
+         * First convert all expansions into normal form. Examples:
+         * If "xy" doesn't occur earlier in the list or in the UCA, convert
+         * &xy * c * d * ... into &x * c/y * d * ...
+         * Note: reset values can never have expansions, although they can
+         * cause the very next item to have one. They may be contractions, if
+         * they are found earlier in the list.
+         */
+        int result = 0;
+        if (expand > 0) {
+            // check to see if there is an expansion
+            if (m_parsedToken_.m_charsLen_ > 1) {
+                targetToken.m_source_ = ((expand
+                                          - m_parsedToken_.m_charsOffset_ )
+                                          << 24)
+                                          | m_parsedToken_.m_charsOffset_;
+                result = ((m_parsedToken_.m_charsLen_
+                               + m_parsedToken_.m_charsOffset_ - expand) << 24)
+                               | expand;
+            }
+        }
+
+        m_resultLength_ ++;
+        m_hashTable_.put(targetToken, targetToken);
+        return result;
+    }
+
+    /**
+     * Checks if an character is special
+     * @param ch character to test
+     * @return true if the character is special
+     */
+    private static final boolean isSpecialChar(char ch)
+    {
+        return (ch <= 0x002F && ch >= 0x0020) || (ch <= 0x003F && ch >= 0x003A)
+               || (ch <= 0x0060 && ch >= 0x005B)
+               || (ch <= 0x007E && ch >= 0x007D) || ch == 0x007B;
+    }
+
+    private
+    UnicodeSet readAndSetUnicodeSet(String source, int start) throws ParseException
+    {
+      while(source.charAt(start) != '[') { /* advance while we find the first '[' */
+        start++;
+      }
+      // now we need to get a balanced set of '[]'. The problem is that a set can have
+      // many, and *end point to the first closing '['
+      int noOpenBraces = 1;
+      int current = 1; // skip the opening brace
+      while(start+current < source.length() && noOpenBraces != 0) {
+        if(source.charAt(start+current) == '[') {
+          noOpenBraces++;
+        } else if(source.charAt(start+current) == ']') { // closing brace
+          noOpenBraces--;
+        }
+        current++;
+      }
+      //int nextBrace = -1;
+
+      if(noOpenBraces != 0 || (/*nextBrace =*/ source.indexOf("]", start+current) /*']'*/) == -1) {
+        throwParseException(m_rules_, start);
+      }
+      return new UnicodeSet(source.substring(start, start+current)); //uset_openPattern(start, current);
+    }
+
+
+    /** in C, optionarg is passed by reference to function.
+     *  We use a private int to simulate this.
+     */
+    private int m_optionarg_ = 0;
+
+    private int readOption(String rules, int start, int optionend)
+    {
+        m_optionarg_ = 0;
+        int i = 0;
+        while (i < RULES_OPTIONS_.length) {
+            String option = RULES_OPTIONS_[i].m_name_;
+            int optionlength = option.length();
+            if (rules.length() > start + optionlength
+                && option.equalsIgnoreCase(rules.substring(start,
+                                                      start + optionlength))) {
+                if (optionend - start > optionlength) {
+                    m_optionarg_ = start + optionlength;
+                    // start of the options, skip space
+                    while (m_optionarg_ < optionend && UCharacter.isWhitespace(rules.charAt(m_optionarg_)))
+                    {   // eat whitespace
+                        m_optionarg_ ++;
+                    }
+                }
+                break;
+            }
+            i ++;
+        }
+        if(i == RULES_OPTIONS_.length) {
+            i = -1;
+        }
+        return i;
+    }
+    /**
+     * Reads and set collation options
+     * @return TOKEN_SUCCESS if option is set correct, 0 otherwise
+     * @exception ParseException thrown when options in rules are wrong
+     */
+    private byte readAndSetOption() throws ParseException
+    {
+        int start = m_current_ + 1; // skip opening '['
+        int i = readOption(m_rules_, start, m_optionEnd_);
+
+        int optionarg = m_optionarg_;
+
+        if (i < 0) {
+            throwParseException(m_rules_, start);
+        }
+
+        if (i < 7) {
+            if (optionarg != 0) {
+                for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length;
+                                                                        j ++) {
+                     String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                     int size = optionarg + subname.length();
+                     if (m_rules_.length() > size
+                         && subname.equalsIgnoreCase(m_rules_.substring(
+                                                           optionarg, size))) {
+                         setOptions(m_options_, RULES_OPTIONS_[i].m_attribute_,
+                             RULES_OPTIONS_[i].m_subOptionAttributeValues_[j]);
+                         return TOKEN_SUCCESS_MASK_;
+                     }
+                }
+            }
+            throwParseException(m_rules_, optionarg);
+        }
+        else if (i == 7) { // variable top
+            return TOKEN_SUCCESS_MASK_ | TOKEN_VARIABLE_TOP_MASK_;
+        }
+        else if (i == 8) { // rearange
+            return TOKEN_SUCCESS_MASK_;
+        }
+        else if (i == 9) { // before
+            if (optionarg != 0) {
+                for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length;
+                                                                        j ++) {
+                     String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                     int size = optionarg + subname.length();
+                     if (m_rules_.length() > size
+                         && subname.equalsIgnoreCase(
+                                               m_rules_.substring(optionarg,
+                                              optionarg + subname.length()))) {
+                         return (byte)(TOKEN_SUCCESS_MASK_
+                            | RULES_OPTIONS_[i].m_subOptionAttributeValues_[j]
+                            + 1);
+                     }
+                }
+            }
+            throwParseException(m_rules_, optionarg);
+        }
+        else if (i == 10) {  // top, we are going to have an array with
+            // structures of limit CEs index to this array will be
+            // src->parsedToken.indirectIndex
+            m_parsedToken_.m_indirectIndex_ = 0;
+            return TOKEN_SUCCESS_MASK_ | TOKEN_TOP_MASK_;
+        }
+        else if (i < 13) { // first, last
+            for (int j = 0; j < RULES_OPTIONS_[i].m_subOptions_.length; j ++) {
+                String subname = RULES_OPTIONS_[i].m_subOptions_[j];
+                int size = optionarg + subname.length();
+                if (m_rules_.length() > size
+                    && subname.equalsIgnoreCase(m_rules_.substring(optionarg,
+                                                                   size))) {
+                    m_parsedToken_.m_indirectIndex_ = (char)(i - 10 + (j << 1));
+                    return TOKEN_SUCCESS_MASK_ | TOKEN_TOP_MASK_;
+                }
+            }
+            throwParseException(m_rules_, optionarg);
+        }
+        else if(i == 13 || i == 14) { // copy and remove are handled before normalization
+            // we need to move end here
+            int noOpenBraces = 1;
+            m_current_++; // skip opening brace
+            while(m_current_ < m_source_.length() && noOpenBraces != 0) {
+                if(m_source_.charAt(m_current_) == '[') {
+                  noOpenBraces++;
+                } else if(m_source_.charAt(m_current_) == ']') { // closing brace
+                  noOpenBraces--;
+                }
+                m_current_++;
+            }
+            m_optionEnd_ = m_current_-1;
+            return TOKEN_SUCCESS_MASK_;
+        }
+        else {
+            throwParseException(m_rules_, optionarg);
+        }
+        return TOKEN_SUCCESS_MASK_; // we will never reach here.
+    }
+
+    /**
+     * Set collation option
+     * @param optionset option set to set
+     * @param attribute type to set
+     * @param value attribute value
+     */
+    private void setOptions(OptionSet optionset, int attribute, int value)
+    {
+        switch (attribute) {
+            case RuleBasedCollator.Attribute.HIRAGANA_QUATERNARY_MODE_ :
+                optionset.m_isHiragana4_
+                            = (value == RuleBasedCollator.AttributeValue.ON_);
+                break;
+            case RuleBasedCollator.Attribute.FRENCH_COLLATION_ :
+                optionset.m_isFrenchCollation_
+                             = (value == RuleBasedCollator.AttributeValue.ON_);
+                break;
+            case RuleBasedCollator.Attribute.ALTERNATE_HANDLING_ :
+                optionset.m_isAlternateHandlingShifted_
+                             = (value
+                                == RuleBasedCollator.AttributeValue.SHIFTED_);
+                break;
+            case RuleBasedCollator.Attribute.CASE_FIRST_ :
+                optionset.m_caseFirst_ = value;
+                break;
+            case RuleBasedCollator.Attribute.CASE_LEVEL_ :
+                optionset.m_isCaseLevel_
+                             = (value == RuleBasedCollator.AttributeValue.ON_);
+                break;
+            case RuleBasedCollator.Attribute.NORMALIZATION_MODE_ :
+                if (value == RuleBasedCollator.AttributeValue.ON_) {
+                    value = Collator.CANONICAL_DECOMPOSITION;
+                }
+                optionset.m_decomposition_ = value;
+                break;
+            case RuleBasedCollator.Attribute.STRENGTH_ :
+                optionset.m_strength_ = value;
+                break;
+            default :
+                break;
+        }
+      }
+
+    UnicodeSet getTailoredSet() throws ParseException
+    {
+        boolean startOfRules = true;
+        UnicodeSet tailored = new UnicodeSet();
+        String pattern;
+        CanonicalIterator it = new CanonicalIterator("");
+
+        m_parsedToken_.m_strength_ = TOKEN_UNSET_;
+        int sourcelimit = m_source_.length();
+        //int expandNext = 0;
+
+        while (m_current_ < sourcelimit) {
+        m_parsedToken_.m_prefixOffset_ = 0;
+        if (parseNextToken(startOfRules) < 0) {
+            // we have reached the end
+            continue;
+        }
+        startOfRules = false;
+        // The idea is to tokenize the rule set. For each non-reset token,
+        // we add all the canonicaly equivalent FCD sequences
+            if(m_parsedToken_.m_strength_ != TOKEN_RESET_) {
+                it.setSource(m_source_.substring(
+                      m_parsedToken_.m_charsOffset_,
+                      m_parsedToken_.m_charsOffset_+m_parsedToken_.m_charsLen_));
+                pattern = it.next();
+                while(pattern != null) {
+                      if(Normalizer.quickCheck(pattern, Normalizer.FCD,0) != Normalizer.NO) {
+                        tailored.add(pattern);
+                    }
+                    pattern = it.next();
+                }
+            }
+        }
+        return tailored;
+    }
+
+    final private void extractSetsFromRules(String rules) throws ParseException {
+      int optionNumber = -1;
+      int setStart = 0;
+      int i = 0;
+      while(i < rules.length()) {
+        if(rules.charAt(i) == 0x005B) {
+          optionNumber = readOption(rules, i+1, rules.length());
+          setStart = m_optionarg_;
+          if(optionNumber == 13) { /* copy - parts of UCA to tailoring */
+            UnicodeSet newSet = readAndSetUnicodeSet(rules, setStart);
+              if(m_copySet_ == null) {
+                m_copySet_ = newSet;
+              } else {
+                m_copySet_.addAll(newSet);
+              }
+          } else if(optionNumber == 14) {
+            UnicodeSet newSet = readAndSetUnicodeSet(rules, setStart);
+              if(m_removeSet_ == null) {
+                m_removeSet_ = newSet;
+              } else {
+                m_removeSet_.addAll(newSet);
+              }
+          }
+        }
+        i++;
+      }
+    }
+}
diff --git a/src/com/ibm/icu/text/Collator.java b/src/com/ibm/icu/text/Collator.java
new file mode 100644
index 0000000..5155f84
--- /dev/null
+++ b/src/com/ibm/icu/text/Collator.java
@@ -0,0 +1,1099 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+* <p>Collator performs locale-sensitive string comparison. A concrete
+* subclass, RuleBasedCollator, allows customization of the collation
+* ordering by the use of rule sets.</p>
+*
+* <p>Following the <a href=http://www.unicode.org>Unicode
+* Consortium</a>'s specifications for the
+* <a href="http://www.unicode.org/unicode/reports/tr10/">Unicode Collation
+* Algorithm (UCA)</a>, there are 5 different levels of strength used
+* in comparisons:
+*
+* <ul>
+* <li>PRIMARY strength: Typically, this is used to denote differences between
+*     base characters (for example, "a" &lt; "b").
+*     It is the strongest difference. For example, dictionaries are divided
+*     into different sections by base character.
+* <li>SECONDARY strength: Accents in the characters are considered secondary
+*     differences (for example, "as" &lt; "&agrave;s" &lt; "at"). Other
+*     differences
+*     between letters can also be considered secondary differences, depending
+*     on the language. A secondary difference is ignored when there is a
+*     primary difference anywhere in the strings.
+* <li>TERTIARY strength: Upper and lower case differences in characters are
+*     distinguished at tertiary strength (for example, "ao" &lt; "Ao" &lt;
+*     "a&ograve;"). In addition, a variant of a letter differs from the base
+*     form on the tertiary strength (such as "A" and "&#9398;"). Another
+*     example is the
+*     difference between large and small Kana. A tertiary difference is ignored
+*     when there is a primary or secondary difference anywhere in the strings.
+* <li>QUATERNARY strength: When punctuation is ignored
+*     <a href="http://www.icu-project.org/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+*     (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY
+*     strength, an additional strength level can
+*     be used to distinguish words with and without punctuation (for example,
+*     "ab" &lt; "a-b" &lt; "aB").
+*     This difference is ignored when there is a PRIMARY, SECONDARY or TERTIARY
+*     difference. The QUATERNARY strength should only be used if ignoring
+*     punctuation is required.
+* <li>IDENTICAL strength:
+*     When all other strengths are equal, the IDENTICAL strength is used as a
+*     tiebreaker. The Unicode code point values of the NFD form of each string
+*     are compared, just in case there is no difference.
+*     For example, Hebrew cantellation marks are only distinguished at this
+*     strength. This strength should be used sparingly, as only code point
+*     value differences between two strings is an extremely rare occurrence.
+*     Using this strength substantially decreases the performance for both
+*     comparison and collation key generation APIs. This strength also
+*     increases the size of the collation key.
+* </ul>
+*
+* Unlike the JDK, ICU4J's Collator deals only with 2 decomposition modes,
+* the canonical decomposition mode and one that does not use any decomposition.
+* The compatibility decomposition mode, java.text.Collator.FULL_DECOMPOSITION
+* is not supported here. If the canonical
+* decomposition mode is set, the Collator handles un-normalized text properly,
+* producing the same results as if the text were normalized in NFD. If
+* canonical decomposition is turned off, it is the user's responsibility to
+* ensure that all text is already in the appropriate form before performing
+* a comparison or before getting a CollationKey.</p>
+*
+* <p>For more information about the collation service see the
+* <a href="http://www.icu-project.org/userguide/Collate_Intro.html">users
+* guide</a>.</p>
+*
+* <p>Examples of use
+* <pre>
+* // Get the Collator for US English and set its strength to PRIMARY
+* Collator usCollator = Collator.getInstance(Locale.US);
+* usCollator.setStrength(Collator.PRIMARY);
+* if (usCollator.compare("abc", "ABC") == 0) {
+*     System.out.println("Strings are equivalent");
+* }
+*
+* The following example shows how to compare two strings using the
+* Collator for the default locale.
+*
+* // Compare two strings in the default locale
+* Collator myCollator = Collator.getInstance();
+* myCollator.setDecomposition(NO_DECOMPOSITION);
+* if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*     System.out.println("&agrave;&#92;u0325 is not equals to a&#92;u0325&#768; without decomposition");
+*     myCollator.setDecomposition(CANONICAL_DECOMPOSITION);
+*     if (myCollator.compare("&agrave;&#92;u0325", "a&#92;u0325&#768;") != 0) {
+*         System.out.println("Error: &agrave;&#92;u0325 should be equals to a&#92;u0325&#768; with decomposition");
+*     }
+*     else {
+*         System.out.println("&agrave;&#92;u0325 is equals to a&#92;u0325&#768; with decomposition");
+*     }
+* }
+* else {
+*     System.out.println("Error: &agrave;&#92;u0325 should be not equals to a&#92;u0325&#768; without decomposition");
+* }
+* </pre>
+* </p>
+* @see RuleBasedCollator
+* @see CollationKey
+* @author Syn Wee Quek
+* @stable ICU 2.8
+*/
+public abstract class Collator implements Comparator, Cloneable
+{
+    // public data members ---------------------------------------------------
+
+    /**
+     * Strongest collator strength value. Typically used to denote differences
+     * between base characters. See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int PRIMARY = 0;
+
+    /**
+     * Second level collator strength value.
+     * Accents in the characters are considered secondary differences.
+     * Other differences between letters can also be considered secondary
+     * differences, depending on the language.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int SECONDARY = 1;
+
+    /**
+     * Third level collator strength value.
+     * Upper and lower case differences in characters are distinguished at this
+     * strength level. In addition, a variant of a letter differs from the base
+     * form on the tertiary level.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int TERTIARY = 2;
+
+    /**
+     * Fourth level collator strength value.
+     * When punctuation is ignored
+     * <a href="http://www.icu-project.org/userguide/Collate_Concepts.html#Ignoring_Punctuation">
+     * (see Ignoring Punctuations in the user guide)</a> at PRIMARY to TERTIARY
+     * strength, an additional strength level can
+     * be used to distinguish words with and without punctuation.
+     * See class documentation for more explanation.
+     * @see #setStrength
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public final static int QUATERNARY = 3;
+
+    /**
+     * <p>
+     * Smallest Collator strength value. When all other strengths are equal,
+     * the IDENTICAL strength is used as a tiebreaker. The Unicode code point
+     * values of the NFD form of each string are compared, just in case there
+     * is no difference.
+     * See class documentation for more explanation.
+     * </p>
+     * <p>
+     * Note this value is different from JDK's
+     * </p>
+     * @stable ICU 2.8
+     */
+    public final static int IDENTICAL = 15;
+
+    /**
+     * This is for backwards compatibility with Java APIs only.  It
+     * should not be used, IDENTICAL should be used instead.  ICU's
+     * collation does not support Java's FULL_DECOMPOSITION mode.
+     * @stable ICU 3.4
+     */
+    public final static int FULL_DECOMPOSITION = IDENTICAL;
+
+    /**
+     * <p>Decomposition mode value. With NO_DECOMPOSITION set, Strings
+     * will not be decomposed for collation. This is the default
+     * decomposition setting unless otherwise specified by the locale
+     * used to create the Collator.</p>
+     *
+     * <p><strong>Note</strong> this value is different from the JDK's.</p>
+     * @see #CANONICAL_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @stable ICU 2.8
+     */
+    public final static int NO_DECOMPOSITION = 16;
+
+    /**
+     * <p>Decomposition mode value. With CANONICAL_DECOMPOSITION set,
+     * characters that are canonical variants according to the Unicode standard
+     * will be decomposed for collation.</p>
+     *
+     * <p>CANONICAL_DECOMPOSITION corresponds to Normalization Form D as
+     * described in <a href="http://www.unicode.org/unicode/reports/tr15/">
+     * Unicode Technical Report #15</a>.
+     * </p>
+     * @see #NO_DECOMPOSITION
+     * @see #getDecomposition
+     * @see #setDecomposition
+     * @stable ICU 2.8
+     */
+    public final static int CANONICAL_DECOMPOSITION = 17;
+
+    // public methods --------------------------------------------------------
+
+    // public setters --------------------------------------------------------
+
+    /**
+     * <p>Sets this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant
+     * during comparison.</p>
+     *
+     * <p>The default strength for the Collator is TERTIARY, unless specified
+     * otherwise by the locale used to create the Collator.</p>
+     *
+     * <p>See the Collator class description for an example of use.</p>
+     * @param newStrength the new strength value.
+     * @see #getStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @exception IllegalArgumentException if the new strength value is not one
+     *                of PRIMARY, SECONDARY, TERTIARY, QUATERNARY or IDENTICAL.
+     * @stable ICU 2.8
+     */
+    public void setStrength(int newStrength)
+    {
+        if ((newStrength != PRIMARY) &&
+            (newStrength != SECONDARY) &&
+            (newStrength != TERTIARY) &&
+            (newStrength != QUATERNARY) &&
+            (newStrength != IDENTICAL)) {
+            throw new IllegalArgumentException("Incorrect comparison level.");
+        }
+        m_strength_ = newStrength;
+    }
+
+    /**
+     * <p>Set the decomposition mode of this Collator.  Setting this
+     * decomposition property with CANONICAL_DECOMPOSITION allows the
+     * Collator to handle un-normalized text properly, producing the
+     * same results as if the text were normalized. If
+     * NO_DECOMPOSITION is set, it is the user's responsibility to
+     * insure that all text is already in the appropriate form before
+     * a comparison or before getting a CollationKey. Adjusting
+     * decomposition mode allows the user to select between faster and
+     * more complete collation behavior.</p>
+     *
+     * <p>Since a great many of the world's languages do not require
+     * text normalization, most locales set NO_DECOMPOSITION as the
+     * default decomposition mode.</p>
+     *
+     * The default decompositon mode for the Collator is
+     * NO_DECOMPOSITON, unless specified otherwise by the locale used
+     * to create the Collator.</p>
+     *
+     * <p>See getDecomposition for a description of decomposition
+     * mode.</p>
+     *
+     * @param decomposition the new decomposition mode
+     * @see #getDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @exception IllegalArgumentException If the given value is not a valid
+     *            decomposition mode.
+     * @stable ICU 2.8
+     */
+    public void setDecomposition(int decomposition)
+    {
+        if ((decomposition != NO_DECOMPOSITION) &&
+            (decomposition != CANONICAL_DECOMPOSITION)) {
+            throw new IllegalArgumentException("Wrong decomposition mode.");
+        }
+        m_decomposition_ = decomposition;
+    }
+
+    // public getters --------------------------------------------------------
+
+    /**
+     * Gets the Collator for the current default locale.
+     * The default locale is determined by java.util.Locale.getDefault().
+     * @return the Collator for the default locale (for example, en_US) if it
+     *         is created successfully. Otherwise if there is no Collator
+     *         associated with the current locale, the default UCA collator
+     *         will be returned.
+     * @see java.util.Locale#getDefault()
+     * @see #getInstance(Locale)
+     * @stable ICU 2.8
+     */
+    public static final Collator getInstance()
+    {
+        return getInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Clone the collator.
+     * @stable ICU 2.6
+     * @return a clone of this collator.
+     */
+    public Object clone() throws CloneNotSupportedException {
+        return super.clone();
+    }
+
+    // begin registry stuff
+
+    /**
+     * A factory used with registerFactory to register multiple collators and provide
+     * display names for them.  If standard locale display names are sufficient, 
+     * Collator instances may be registered instead.
+     * <p><b>Note:</b> as of ICU4J 3.2, the default API for CollatorFactory uses
+     * ULocale instead of Locale.  Instead of overriding createCollator(Locale),
+     * new implementations should override createCollator(ULocale).  Note that
+     * one of these two methods <b>MUST</b> be overridden or else an infinite
+     * loop will occur.
+     * @stable ICU 2.6
+     */
+    public static abstract class CollatorFactory {
+        /**
+         * Return true if this factory will be visible.  Default is true.
+         * If not visible, the locales supported by this factory will not
+         * be listed by getAvailableLocales.
+         *
+         * @return true if this factory is visible
+         * @stable ICU 2.6
+         */
+        public boolean visible() {
+            return true;
+        }
+
+        /**
+         * Return an instance of the appropriate collator.  If the locale
+         * is not supported, return null.
+         * <b>Note:</b> as of ICU4J 3.2, implementations should override
+         * this method instead of createCollator(Locale).
+         * @param loc the locale for which this collator is to be created.
+         * @return the newly created collator.
+         * @stable ICU 3.2
+         */
+        public Collator createCollator(ULocale loc) {
+            return createCollator(loc.toLocale());
+        }
+
+        /**
+         * Return an instance of the appropriate collator.  If the locale
+         * is not supported, return null.
+         * <p><b>Note:</b> as of ICU4J 3.2, implementations should override
+         * createCollator(ULocale) instead of this method, and inherit this
+         * method's implementation.  This method is no longer abstract
+         * and instead delegates to createCollator(ULocale).
+         * @param loc the locale for which this collator is to be created.
+         * @return the newly created collator.
+         * @stable ICU 2.6
+         */
+         public Collator createCollator(Locale loc) {
+            return createCollator(ULocale.forLocale(loc));
+        }
+
+        /**
+         * Return the name of the collator for the objectLocale, localized for the displayLocale.
+         * If objectLocale is not visible or not defined by the factory, return null.
+         * @param objectLocale the locale identifying the collator
+         * @param displayLocale the locale for which the display name of the collator should be localized
+         * @return the display name
+         * @stable ICU 2.6
+         */
+        public String getDisplayName(Locale objectLocale, Locale displayLocale) {
+            return getDisplayName(ULocale.forLocale(objectLocale), ULocale.forLocale(displayLocale));
+        }
+
+        /**
+         * Return the name of the collator for the objectLocale, localized for the displayLocale.
+         * If objectLocale is not visible or not defined by the factory, return null.
+         * @param objectLocale the locale identifying the collator
+         * @param displayLocale the locale for which the display name of the collator should be localized
+         * @return the display name
+         * @stable ICU 3.2
+         */
+        public String getDisplayName(ULocale objectLocale, ULocale displayLocale) {
+            if (visible()) {
+                Set supported = getSupportedLocaleIDs();
+                String name = objectLocale.getBaseName();
+                if (supported.contains(name)) {
+                    return objectLocale.getDisplayName(displayLocale);
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Return an unmodifiable collection of the locale names directly 
+         * supported by this factory.
+         *
+         * @return the set of supported locale IDs.
+         * @stable ICU 2.6
+         */
+        public abstract Set getSupportedLocaleIDs();
+
+        /**
+         * Empty default constructor.
+         * @stable ICU 2.6
+         */
+        protected CollatorFactory() {
+        }
+    }
+
+    static abstract class ServiceShim {
+        abstract Collator getInstance(ULocale l);
+        abstract Object registerInstance(Collator c, ULocale l);
+        abstract Object registerFactory(CollatorFactory f);
+        abstract boolean unregister(Object k);
+        abstract Locale[] getAvailableLocales(); // TODO remove
+        abstract ULocale[] getAvailableULocales();
+        abstract String getDisplayName(ULocale ol, ULocale dl);
+    }
+    
+    private static ServiceShim shim;
+    private static ServiceShim getShim() {
+        // Note: this instantiation is safe on loose-memory-model configurations
+        // despite lack of synchronization, since the shim instance has no state--
+        // it's all in the class init.  The worst problem is we might instantiate
+        // two shim instances, but they'll share the same state so that's ok.
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.text.CollatorServiceShim");
+                shim = (ServiceShim)cls.newInstance();
+            }
+            catch (MissingResourceException e)
+            {
+                throw e;
+            }
+            catch (Exception e) {
+                ///CLOVER:OFF
+                if(DEBUG){
+                    e.printStackTrace();
+                }
+                throw new RuntimeException(e.getMessage());
+                ///CLOVER:ON
+            }
+        }
+        return shim;
+    }
+
+    /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance(Locale)
+     * @see #getInstance()
+     * @stable ICU 3.0
+     */
+    public static final Collator getInstance(ULocale locale) {
+        // fetching from service cache is faster than instantiation
+        return getShim().getInstance(locale);
+    }
+
+    /**
+     * Gets the Collator for the desired locale.
+     * @param locale the desired locale.
+     * @return Collator for the desired locale if it is created successfully.
+     *         Otherwise if there is no Collator
+     *         associated with the current locale, a default UCA collator will
+     *         be returned.
+     * @see java.util.Locale
+     * @see java.util.ResourceBundle
+     * @see #getInstance(ULocale)
+     * @see #getInstance()
+     * @stable ICU 2.8
+     */
+    public static final Collator getInstance(Locale locale) {
+        return getInstance(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Register a collator as the default collator for the provided locale.  The
+     * collator should not be modified after it is registered.
+     *
+     * @param collator the collator to register
+     * @param locale the locale for which this is the default collator
+     * @return an object that can be used to unregister the registered collator.
+     *
+     * @stable ICU 3.2
+     */
+    public static final Object registerInstance(Collator collator, ULocale locale) {
+        return getShim().registerInstance(collator, locale);
+    }
+
+    /**
+     * Register a collator factory.
+     *
+     * @param factory the factory to register
+     * @return an object that can be used to unregister the registered factory.
+     *
+     * @stable ICU 2.6
+     */
+    public static final Object registerFactory(CollatorFactory factory) {
+        return getShim().registerFactory(factory);
+    }
+
+    /**
+     * Unregister a collator previously registered using registerInstance.
+     * @param registryKey the object previously returned by registerInstance.
+     * @return true if the collator was successfully unregistered.
+     * @stable ICU 2.6
+     */
+    public static final boolean unregister(Object registryKey) {
+        if (shim == null) {
+            return false;
+        }
+        return shim.unregister(registryKey);
+    }
+
+    /**
+     * Get the set of locales, as Locale objects, for which collators
+     * are installed.  Note that Locale objects do not support RFC 3066.
+     * @return the list of locales in which collators are installed.
+     * This list includes any that have been registered, in addition to
+     * those that are installed with ICU4J.
+     * @stable ICU 2.4
+     */
+    public static Locale[] getAvailableLocales() {
+        // TODO make this wrap getAvailableULocales later
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+        }
+        return shim.getAvailableLocales();
+    }
+
+    /**
+     * Get the set of locales, as ULocale objects, for which collators
+     * are installed.  ULocale objects support RFC 3066.
+     * @return the list of locales in which collators are installed.
+     * This list includes any that have been registered, in addition to
+     * those that are installed with ICU4J.
+     * @stable ICU 3.0
+     */
+    public static final ULocale[] getAvailableULocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+        }
+        return shim.getAvailableULocales();
+    }
+    
+    /**
+     * The list of keywords for this service.  This must be kept in sync with
+     * the resource data.
+     * @since ICU 3.0
+     */
+    private static final String[] KEYWORDS = { "collation" };
+
+    /**
+     * The resource name for this service.  Note that this is not the same as
+     * the keyword for this service.
+     * @since ICU 3.0
+     */
+    private static final String RESOURCE = "collations";
+
+    /**
+     * The resource bundle base name for this service.
+     * *since ICU 3.0
+     */
+    private static final String BASE = ICUResourceBundle.ICU_COLLATION_BASE_NAME;
+
+    /**
+     * Return an array of all possible keywords that are relevant to
+     * collation. At this point, the only recognized keyword for this
+     * service is "collation".
+     * @return an array of valid collation keywords.
+     * @see #getKeywordValues
+     * @stable ICU 3.0
+     */
+    public static final String[] getKeywords() {
+        return KEYWORDS;
+    }
+    
+    /**
+     * Given a keyword, return an array of all values for
+     * that keyword that are currently in use.
+     * @param keyword one of the keywords returned by getKeywords.
+     * @see #getKeywords
+     * @stable ICU 3.0
+     */
+    public static final String[] getKeywordValues(String keyword) {
+        if (!keyword.equals(KEYWORDS[0])) {
+            throw new IllegalArgumentException("Invalid keyword: " + keyword);
+        }
+        return ICUResourceBundle.getKeywordValues(BASE, RESOURCE);
+    }
+
+    /**
+     * Return the functionally equivalent locale for the given
+     * requested locale, with respect to given keyword, for the
+     * collation service.  If two locales return the same result, then
+     * collators instantiated for these locales will behave
+     * equivalently.  The converse is not always true; two collators
+     * may in fact be equivalent, but return different results, due to
+     * internal details.  The return result has no other meaning than
+     * that stated above, and implies nothing as to the relationship
+     * between the two locales.  This is intended for use by
+     * applications who wish to cache collators, or otherwise reuse
+     * collators when possible.  The functional equivalent may change
+     * over time.  For more information, please see the <a
+     * href="http://www.icu-project.org/userguide/locale.html#services">
+     * Locales and Services</a> section of the ICU User Guide.
+     * @param keyword a particular keyword as enumerated by
+     * getKeywords.
+     * @param locID The requested locale
+     * @param isAvailable If non-null, isAvailable[0] will receive and
+     * output boolean that indicates whether the requested locale was
+     * 'available' to the collation service. If non-null, isAvailable 
+     * must have length >= 1.
+     * @return the locale
+     * @stable ICU 3.0
+     */
+    public static final ULocale getFunctionalEquivalent(String keyword,
+                                                        ULocale locID,
+                                                        boolean isAvailable[]) {
+        return ICUResourceBundle.getFunctionalEquivalent(
+                                                         BASE, RESOURCE, keyword, locID, isAvailable, true);
+    }
+    
+    /**
+     * Return the functionally equivalent locale for the given
+     * requested locale, with respect to given keyword, for the
+     * collation service.
+     * @param keyword a particular keyword as enumerated by
+     * getKeywords.
+     * @param locID The requested locale
+     * @return the locale
+     * @see #getFunctionalEquivalent(String,ULocale,boolean[])
+     * @stable ICU 3.0
+     */
+    public static final ULocale getFunctionalEquivalent(String keyword,
+                                                        ULocale locID) {
+        return getFunctionalEquivalent(keyword, locID, null);
+    }
+    
+    /**
+     * Get the name of the collator for the objectLocale, localized for the displayLocale.
+     * @param objectLocale the locale of the collator
+     * @param displayLocale the locale for the collator's display name
+     * @return the display name
+     * @stable ICU 2.6
+     */
+    static public String getDisplayName(Locale objectLocale, Locale displayLocale) {
+        return getShim().getDisplayName(ULocale.forLocale(objectLocale), 
+                                        ULocale.forLocale(displayLocale));
+    }
+
+    /**
+     * Get the name of the collator for the objectLocale, localized for the displayLocale.
+     * @param objectLocale the locale of the collator
+     * @param displayLocale the locale for the collator's display name
+     * @return the display name
+     * @stable ICU 3.2
+     */
+    static public String getDisplayName(ULocale objectLocale, ULocale displayLocale) {
+        return getShim().getDisplayName(objectLocale, displayLocale);
+    }
+
+    /**
+     * Get the name of the collator for the objectLocale, localized for the current locale.
+     * @param objectLocale the locale of the collator
+     * @return the display name
+     * @stable ICU 2.6
+     */
+    static public String getDisplayName(Locale objectLocale) {
+        return getShim().getDisplayName(ULocale.forLocale(objectLocale), ULocale.getDefault());
+    }
+
+    /**
+     * Get the name of the collator for the objectLocale, localized for the current locale.
+     * @param objectLocale the locale of the collator
+     * @return the display name
+     * @stable ICU 3.2
+     */
+    static public String getDisplayName(ULocale objectLocale) {
+        return getShim().getDisplayName(objectLocale, ULocale.getDefault());
+    }
+
+    /**
+     * <p>Returns this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return this Collator's current strength property.
+     * @see #setStrength
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @stable ICU 2.8
+     */
+    public int getStrength()
+    {
+        return m_strength_;
+    }
+
+    /**
+     * <p>
+     * Get the decomposition mode of this Collator. Decomposition mode
+     * determines how Unicode composed characters are handled.
+     * </p>
+     * <p>
+     * See the Collator class description for more details.
+     * </p>
+     * @return the decomposition mode
+     * @see #setDecomposition
+     * @see #NO_DECOMPOSITION
+     * @see #CANONICAL_DECOMPOSITION
+     * @stable ICU 2.8
+     */
+    public int getDecomposition()
+    {
+        return m_decomposition_;
+    }
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     *            IllegalArgumentException thrown if either source or target is
+     *            not of the class String.
+     * @stable ICU 2.8
+     */
+    public int compare(Object source, Object target)
+    {
+        if (!(source instanceof String) || !(target instanceof String)) {
+            throw new IllegalArgumentException("Arguments have to be of type String");
+        }
+        return compare((String)source, (String)target);
+    }
+
+    // public other methods -------------------------------------------------
+
+    /**
+     * Convenience method for comparing the equality of two text Strings using
+     * this Collator's rules, strength and decomposition mode.
+     * @param source the source string to be compared.
+     * @param target the target string to be compared.
+     * @return true if the strings are equal according to the collation
+     *         rules, otherwise false.
+     * @see #compare
+     * @exception NullPointerException thrown if either arguments is null.
+     * @stable ICU 2.8
+     */
+    public boolean equals(String source, String target)
+    {
+        return (compare(source, target) == 0);
+    }
+
+    /**
+     * Get an UnicodeSet that contains all the characters and sequences
+     * tailored in this collator.
+     * @return a pointer to a UnicodeSet object containing all the
+     *         code points and sequences that may sort differently than
+     *         in the UCA.
+     * @stable ICU 2.4
+     */
+    public UnicodeSet getTailoredSet()
+    {
+        return new UnicodeSet(0, 0x10FFFF);
+    }
+
+    /**
+     * <p>
+     * Compares the source text String to the target text String according to
+     * this Collator's rules, strength and decomposition mode.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * @param source the source String.
+     * @param target the target String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @exception NullPointerException thrown if either arguments is null.
+     * @stable ICU 2.8
+     */
+    public abstract int compare(String source, String target);
+
+    /**
+     * <p>
+     * Transforms the String into a CollationKey suitable for efficient
+     * repeated comparison.  The resulting key depends on the collator's
+     * rules, strength and decomposition mode.
+     * </p>
+     * <p>See the CollationKey class documentation for more information.</p>
+     * @param source the string to be transformed into a CollationKey.
+     * @return the CollationKey for the given String based on this Collator's
+     *         collation rules. If the source String is null, a null
+     *         CollationKey is returned.
+     * @see CollationKey
+     * @see #compare(String, String)
+     * @see #getRawCollationKey
+     * @stable ICU 2.8
+     */
+    public abstract CollationKey getCollationKey(String source);
+    
+    /**
+     * Gets the simpler form of a CollationKey for the String source following
+     * the rules of this Collator and stores the result into the user provided 
+     * argument key. 
+     * If key has a internal byte array of length that's too small for the 
+     * result, the internal byte array will be grown to the exact required 
+     * size.
+     * @param source the text String to be transformed into a RawCollationKey  
+     * @return If key is null, a new instance of RawCollationKey will be 
+     *         created and returned, otherwise the user provided key will be 
+     *         returned.
+     * @see #compare(String, String)
+     * @see #getCollationKey 
+     * @see RawCollationKey
+     * @stable ICU 2.8
+     */
+    public abstract RawCollationKey getRawCollationKey(String source, 
+                                                       RawCollationKey key);
+
+    /** 
+     * <p>
+     * Variable top is a two byte primary value which causes all the codepoints 
+     * with primary values that are less or equal than the variable top to be 
+     * shifted when alternate handling is set to SHIFTED.
+     * </p>
+     * <p>
+     * Sets the variable top to a collation element value of a string supplied.
+     * </p> 
+     * @param varTop one or more (if contraction) characters to which the 
+     *               variable top should be set
+     * @return a int value containing the value of the variable top in upper 16
+     *         bits. Lower 16 bits are undefined.
+     * @exception IllegalArgumentException is thrown if varTop argument is not 
+     *            a valid variable top element. A variable top element is 
+     *            invalid when it is a contraction that does not exist in the
+     *            Collation order or when the PRIMARY strength collation 
+     *            element for the variable top has more than two bytes
+     * @see #getVariableTop
+     * @see RuleBasedCollator#setAlternateHandlingShifted
+     * @stable ICU 2.6
+     */
+    public abstract int setVariableTop(String varTop);
+    
+    /** 
+     * Gets the variable top value of a Collator. 
+     * Lower 16 bits are undefined and should be ignored.
+     * @return the variable top value of a Collator.
+     * @see #setVariableTop
+     * @stable ICU 2.6
+     */
+    public abstract int getVariableTop();
+    
+    /** 
+     * Sets the variable top to a collation element value supplied.
+     * Variable top is set to the upper 16 bits. 
+     * Lower 16 bits are ignored.
+     * @param varTop Collation element value, as returned by setVariableTop or 
+     *               getVariableTop
+     * @see #getVariableTop
+     * @see #setVariableTop
+     * @stable ICU 2.6
+     */
+    public abstract void setVariableTop(int varTop);
+
+    /** 
+     * Get the version of this collator object.
+     * @return the version object associated with this collator
+     * @stable ICU 2.8
+     */
+    public abstract VersionInfo getVersion();
+        
+    /** 
+     * Get the UCA version of this collator object.
+     * @return the version object associated with this collator
+     * @stable ICU 2.8
+     */
+    public abstract VersionInfo getUCAVersion();
+        
+    // protected constructor -------------------------------------------------
+
+    /**
+     * Empty default constructor to make javadocs happy
+     * @stable ICU 2.4
+     */
+    protected Collator()
+    {
+    }
+    
+    // package private methods -----------------------------------------------
+
+    // private data members --------------------------------------------------
+
+    /**
+     * Collation strength
+     */
+    private int m_strength_ = TERTIARY;
+
+    /**
+     * Decomposition mode
+     */
+    private int m_decomposition_ = CANONICAL_DECOMPOSITION;
+    
+    private static final boolean DEBUG = ICUDebug.enabled("collator");
+    
+    // private methods -------------------------------------------------------
+    
+    // end registry stuff
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+    
+    /**
+     * Given a keyword and a locale, returns an array of string values in a preferred order that would make a difference. 
+     * These are all and only those values where the open (creation) of the service with the locale
+     * formed from the input locale plus input keyword and that value has different behavior than
+     * creation with the input locale alone. For example, calling this with "de", "collation" returns {"phonebook","standard"}
+     * @param keyword A keyword which makes a difference in the Collator for the given locale.
+     * For now, only a keyword "collation" is used.
+     * @param locLD input ULocale
+     * @param commonlyUsed if set to true it will return commonly used values with the given locale else all the available values.
+     * In this API, this parameter does not affect the results for now.
+     * @return An array of string values for a given keyword and locale
+     * @draft ICU 4.2
+     */
+    public static final String[] getKeywordValues(String keyword, ULocale locID, boolean commonlyUsed) {
+        ICUResourceBundle r = null;
+        List list = new ArrayList();
+        String baseLoc = locID.getBaseName();
+        String kwVal = locID.getKeywordValue(keyword);
+        String baseName = ICUResourceBundle.ICU_BASE_NAME + "/coll";
+        String resName = "collations";
+
+        if(!locID.getBaseName().equals(locID.getName())){
+            ULocale parent = new ULocale(baseLoc);
+            r = (ICUResourceBundle) UResourceBundle.getBundleInstance(baseName, parent);
+        }else{
+            r = (ICUResourceBundle) UResourceBundle.getBundleInstance(baseName, locID);
+        }
+
+        do {
+            if ((kwVal == null) || (kwVal.length() == 0)
+                    || kwVal.equals("default")) {
+                kwVal = ""; // default tag is treated as no keyword
+            } else {
+                list.add(kwVal);
+                break;
+            }
+            String canonicalLoc = ULocale.canonicalize(baseLoc);
+            if(canonicalLoc.indexOf("@") >= 0){
+                list.add(canonicalLoc.substring(canonicalLoc.indexOf("=") + 1).toLowerCase());
+                break;
+            }
+
+            ICUResourceBundle irb = (ICUResourceBundle) r.get(resName);
+
+            Enumeration e = irb.getKeys();
+            while(e.hasMoreElements()){
+                String key = (String)e.nextElement();
+                if (key.equals("default")){
+                    try {
+                        String defVal = irb.getString(key /*"default"*/);
+                        if (defVal != null && !list.contains(defVal)){
+                            list.add(defVal);
+                        }
+                    } catch (MissingResourceException t) {
+                        // Ignore error and continue search.
+                    }
+                } else if (!list.contains(key)) {
+                    list.add(key);
+                }
+            }
+            r = (ICUResourceBundle) r.getParent();
+        } while ((r != null));
+        //return values
+        return (String[]) list.toArray(new String[list.size()]);
+    }
+}
diff --git a/src/com/ibm/icu/text/CollatorReader.java b/src/com/ibm/icu/text/CollatorReader.java
new file mode 100644
index 0000000..f9678e9
--- /dev/null
+++ b/src/com/ibm/icu/text/CollatorReader.java
@@ -0,0 +1,656 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.impl.ICUBinary;
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.text.CollationParsedRuleBuilder.InverseUCA;
+import com.ibm.icu.text.RuleBasedCollator.UCAConstants;
+
+/**
+* <p>Internal reader class for ICU data file uca.icu containing 
+* Unicode Collation Algorithm data.</p> 
+* <p>This class simply reads uca.icu, authenticates that it is a valid
+* ICU data file and split its contents up into blocks of data for use in
+* <a href=Collator.html>com.ibm.icu.text.Collator</a>.
+* </p> 
+* <p>uca.icu which is in big-endian format is jared together with this 
+* package.</p>
+* @author Syn Wee Quek
+* @since release 2.2, April 18 2002
+*/
+
+final class CollatorReader
+{          
+    static char[] read(RuleBasedCollator rbc, UCAConstants ucac) throws IOException {
+        InputStream i = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/coll/ucadata.icu");
+        BufferedInputStream b = new BufferedInputStream(i, 90000);
+        CollatorReader reader = new CollatorReader(b);
+        char[] result = reader.readImp(rbc, ucac);
+        b.close();
+        return result;
+    }
+    
+    static void initRBC(RuleBasedCollator rbc, byte[] data) throws IOException {
+        final int MIN_BINARY_DATA_SIZE_ = (42 + 25) << 2;
+        
+        InputStream i = new ByteArrayInputStream(data);
+        BufferedInputStream b = new BufferedInputStream(i);
+        CollatorReader reader = new CollatorReader(b, false);
+        if (data.length > MIN_BINARY_DATA_SIZE_) {
+            reader.readImp(rbc, null);
+        } else {
+            reader.readHeader(rbc);
+            reader.readOptions(rbc);
+            // duplicating UCA_'s data
+            rbc.setWithUCATables();
+        }
+    }
+    
+    static InverseUCA getInverseUCA() throws IOException {
+        InverseUCA result = null;
+        InputStream i = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/coll/invuca.icu");
+//        try    {
+//            String invdat = "/com/ibm/icu/impl/data/invuca.icu";
+//            InputStream i = CollationParsedRuleBuilder.class.getResourceAsStream(invdat);
+            BufferedInputStream b = new BufferedInputStream(i, 110000);
+            result = CollatorReader.readInverseUCA(b);
+            b.close();
+            i.close();
+            return result;
+//        } catch (Exception e) {
+//            throw new RuntimeException(e.getMessage());
+//        }
+    }
+    
+    // protected constructor ---------------------------------------------
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU collator file input stream
+    * @exception IOException throw if data file fails authentication 
+    */
+    private CollatorReader(InputStream inputStream) throws IOException
+    {
+        this(inputStream, true);
+        /*
+        byte[] UnicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, UCA_AUTHENTICATE_);
+        // weiv: check that we have the correct Unicode version in 
+        // binary files
+        VersionInfo UCDVersion = UCharacter.getUnicodeVersion();
+        if(UnicodeVersion[0] != UCDVersion.getMajor() 
+        || UnicodeVersion[1] != UCDVersion.getMinor()) {
+            throw new IOException(WRONG_UNICODE_VERSION_ERROR_);
+        }
+        m_dataInputStream_ = new DataInputStream(inputStream);
+        */
+    }
+    
+    /**
+    * <p>Protected constructor.</p>
+    * @param inputStream ICU uprops.icu file input stream
+    * @param readICUHeader flag to indicate if the ICU header has to be read
+    * @exception IOException throw if data file fails authentication 
+    */
+    private CollatorReader(InputStream inputStream, boolean readICUHeader) 
+                                                            throws IOException
+    {
+        if (readICUHeader) {
+            byte[] UnicodeVersion = ICUBinary.readHeader(inputStream, DATA_FORMAT_ID_, 
+                                 UCA_AUTHENTICATE_);
+            // weiv: check that we have the correct Unicode version in 
+            // binary files
+            VersionInfo UCDVersion = UCharacter.getUnicodeVersion();
+            if(UnicodeVersion[0] != UCDVersion.getMajor() 
+            || UnicodeVersion[1] != UCDVersion.getMinor()) {
+                throw new IOException(WRONG_UNICODE_VERSION_ERROR_);
+            }
+        }
+        m_dataInputStream_ = new DataInputStream(inputStream);
+    }
+  
+    // protected methods -------------------------------------------------
+      
+    /**
+    * Read and break up the header stream of data passed in as arguments into 
+    * meaningful Collator data.
+    * @param rbc RuleBasedCollator to populate with header information
+    * @exception IOException thrown when there's a data error.
+    */
+    private void readHeader(RuleBasedCollator rbc) throws IOException
+    {
+        m_size_ = m_dataInputStream_.readInt();
+        // all the offsets are in bytes
+        // to get the address add to the header address and cast properly
+        // Default options int options
+        m_headerSize_ = m_dataInputStream_.readInt(); // start of options
+        int readcount = 8; // for size and headersize
+        // structure which holds values for indirect positioning and implicit
+        // ranges
+        int UCAConst = m_dataInputStream_.readInt();
+        readcount += 4;
+        // this one is needed only for UCA, to copy the appropriate
+        // contractions
+        m_dataInputStream_.skip(4);
+        readcount += 4;
+        // reserved for future use
+        m_dataInputStream_.skipBytes(4);
+        readcount += 4;
+        // const uint8_t *mappingPosition;
+        int mapping = m_dataInputStream_.readInt();
+        readcount += 4;
+        // uint32_t *expansion;
+        rbc.m_expansionOffset_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        // UChar *contractionIndex;
+        rbc.m_contractionOffset_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        // uint32_t *contractionCEs;
+        int contractionCE = m_dataInputStream_.readInt();
+        readcount += 4;
+        // needed for various closures int contractionSize
+        /*int contractionSize = */m_dataInputStream_.readInt();
+        readcount += 4;
+        // array of last collation element in expansion
+        int expansionEndCE = m_dataInputStream_.readInt();
+        readcount += 4;
+        // array of maximum expansion size corresponding to the expansion
+        // collation elements with last element in expansionEndCE
+        int expansionEndCEMaxSize = m_dataInputStream_.readInt();
+        readcount += 4;
+        // size of endExpansionCE int expansionEndCESize
+        m_dataInputStream_.skipBytes(4);
+        readcount += 4;
+        // hash table of unsafe code points
+        int unsafe = m_dataInputStream_.readInt();
+        readcount += 4;
+        // hash table of final code points in contractions.
+        int contractionEnd = m_dataInputStream_.readInt();
+        readcount += 4;
+        // int CEcount = m_dataInputStream_.readInt();
+        m_dataInputStream_.skipBytes(4);
+        readcount += 4;
+        // is jamoSpecial
+        rbc.m_isJamoSpecial_ = m_dataInputStream_.readBoolean();
+        readcount++;
+        // padding
+        m_dataInputStream_.skipBytes(3);
+        readcount += 3;
+        rbc.m_version_ = readVersion(m_dataInputStream_);
+        readcount += 4;
+        rbc.m_UCA_version_ = readVersion(m_dataInputStream_);
+        readcount += 4;
+        rbc.m_UCD_version_ = readVersion(m_dataInputStream_);
+        readcount += 4;
+        // byte charsetName[] = new byte[32]; // for charset CEs
+        m_dataInputStream_.skipBytes(32);
+        readcount += 32;
+        m_dataInputStream_.skipBytes(56); // for future use
+        readcount += 56;
+        if (m_headerSize_ < readcount) {
+            throw new IOException("Internal Error: Header size error");
+        }
+        m_dataInputStream_.skipBytes(m_headerSize_ - readcount);
+
+        if (rbc.m_contractionOffset_ == 0) { // contraction can be null
+            rbc.m_contractionOffset_ = mapping;
+            contractionCE = mapping;
+        }
+        m_optionSize_ = rbc.m_expansionOffset_ - m_headerSize_;
+        m_expansionSize_ = rbc.m_contractionOffset_ - rbc.m_expansionOffset_;
+        m_contractionIndexSize_ = contractionCE - rbc.m_contractionOffset_;
+        m_contractionCESize_ = mapping - contractionCE;
+        //m_trieSize_ = expansionEndCE - mapping;
+        m_expansionEndCESize_ = expansionEndCEMaxSize - expansionEndCE;
+        m_expansionEndCEMaxSizeSize_ = unsafe - expansionEndCEMaxSize;
+        m_unsafeSize_ = contractionEnd - unsafe;
+        m_UCAValuesSize_ = m_size_ - UCAConst; // UCA value, will be handled
+                                                // later
+        // treat it as normal collator first
+        // for normal collator there is no UCA contraction
+        m_contractionEndSize_ = m_size_ - contractionEnd;
+
+        rbc.m_contractionOffset_ >>= 1; // casting to ints
+        rbc.m_expansionOffset_ >>= 2; // casting to chars
+    }
+    
+    /**
+     * Read and break up the collation options passed in the stream of data and
+     * update the argument Collator with the results
+     * 
+     * @param rbc
+     *            RuleBasedCollator to populate
+     * @exception IOException
+     *                thrown when there's a data error.
+     */
+    private void readOptions(RuleBasedCollator rbc) throws IOException
+    {
+        int readcount = 0;
+        rbc.m_defaultVariableTopValue_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        rbc.m_defaultIsFrenchCollation_ = (m_dataInputStream_.readInt()
+                                      == RuleBasedCollator.AttributeValue.ON_);
+        readcount += 4;
+        rbc.m_defaultIsAlternateHandlingShifted_ 
+                                   = (m_dataInputStream_.readInt() == 
+                                    RuleBasedCollator.AttributeValue.SHIFTED_);
+        readcount += 4;
+        rbc.m_defaultCaseFirst_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        rbc.m_defaultIsCaseLevel_ = (m_dataInputStream_.readInt() 
+                                     == RuleBasedCollator.AttributeValue.ON_);
+        readcount += 4;
+        int value = m_dataInputStream_.readInt();
+        readcount += 4;
+        if (value == RuleBasedCollator.AttributeValue.ON_) {
+            value = Collator.CANONICAL_DECOMPOSITION;
+        }
+        else {
+            value = Collator.NO_DECOMPOSITION;
+        }
+        rbc.m_defaultDecomposition_ = value;
+        rbc.m_defaultStrength_ = m_dataInputStream_.readInt();
+        readcount += 4;
+        rbc.m_defaultIsHiragana4_ = (m_dataInputStream_.readInt() 
+                                     == RuleBasedCollator.AttributeValue.ON_);
+        readcount += 4;
+        rbc.m_defaultIsNumericCollation_ = (m_dataInputStream_.readInt() 
+                                      == RuleBasedCollator.AttributeValue.ON_);
+        readcount += 4;
+        m_dataInputStream_.skip(60); // reserved for future use
+        readcount += 60;
+        m_dataInputStream_.skipBytes(m_optionSize_ - readcount);
+        if (m_optionSize_ < readcount) {
+            throw new IOException("Internal Error: Option size error");
+        }
+    }
+    
+    /**
+    * Read and break up the stream of data passed in as arguments into 
+    * meaningful Collator data.
+    * @param rbc RuleBasedCollator to populate
+    * @param UCAConst object to fill up with UCA constants if we are reading 
+    *                 the UCA collator, if not use a null
+    * @return UCAContractions array filled up with the UCA contractions if we
+    *                        are reading the UCA collator
+    * @exception IOException thrown when there's a data error.
+    */
+    private char[] readImp(RuleBasedCollator rbc, 
+                          RuleBasedCollator.UCAConstants UCAConst) 
+                                                            throws IOException
+    {
+        readHeader(rbc);
+        // header size has been checked by readHeader
+        int readcount = m_headerSize_; 
+        // option size has been checked by readOptions
+        readOptions(rbc);
+        readcount += m_optionSize_;
+        m_expansionSize_ >>= 2;
+        rbc.m_expansion_ = new int[m_expansionSize_];
+        for (int i = 0; i < m_expansionSize_; i ++) {
+            rbc.m_expansion_[i] = m_dataInputStream_.readInt();
+        }
+        readcount += (m_expansionSize_ << 2);
+        if (m_contractionIndexSize_ > 0) { 
+            m_contractionIndexSize_ >>= 1;
+            rbc.m_contractionIndex_ = new char[m_contractionIndexSize_];
+            for (int i = 0; i < m_contractionIndexSize_; i ++) {
+                rbc.m_contractionIndex_[i] = m_dataInputStream_.readChar();
+            }
+            readcount += (m_contractionIndexSize_ << 1);
+            m_contractionCESize_ >>= 2;
+            rbc.m_contractionCE_ = new int[m_contractionCESize_];
+            for (int i = 0; i < m_contractionCESize_; i ++) {
+                rbc.m_contractionCE_[i] = m_dataInputStream_.readInt();
+            }
+            readcount += (m_contractionCESize_ << 2);
+        }
+        rbc.m_trie_ = new IntTrie(m_dataInputStream_, 
+                                 RuleBasedCollator.DataManipulate.getInstance());
+        if (!rbc.m_trie_.isLatin1Linear()) {
+            throw new IOException("Data corrupted, " 
+                                  + "Collator Tries expected to have linear "
+                                  + "latin one data arrays");
+        }
+        readcount += rbc.m_trie_.getSerializedDataSize();
+        m_expansionEndCESize_ >>= 2;
+        rbc.m_expansionEndCE_ = new int[m_expansionEndCESize_];
+        for (int i = 0; i < m_expansionEndCESize_; i ++) {
+            rbc.m_expansionEndCE_[i] = m_dataInputStream_.readInt();
+        }
+        readcount += (m_expansionEndCESize_ << 2);
+        rbc.m_expansionEndCEMaxSize_ = new byte[m_expansionEndCEMaxSizeSize_];
+        for (int i = 0; i < m_expansionEndCEMaxSizeSize_; i ++) {
+            rbc.m_expansionEndCEMaxSize_[i] = m_dataInputStream_.readByte();
+        }
+        readcount += m_expansionEndCEMaxSizeSize_;
+        rbc.m_unsafe_ = new byte[m_unsafeSize_];
+        for (int i = 0; i < m_unsafeSize_; i ++) {
+            rbc.m_unsafe_[i] = m_dataInputStream_.readByte();
+        }
+        readcount += m_unsafeSize_;
+        if (UCAConst != null) {
+            // we are reading the UCA
+            // unfortunately the UCA offset in any collator data is not 0 and
+            // only refers to the UCA data
+            m_contractionEndSize_ -= m_UCAValuesSize_;       
+        }
+        rbc.m_contractionEnd_ = new byte[m_contractionEndSize_];
+        for (int i = 0; i < m_contractionEndSize_; i ++) {
+            rbc.m_contractionEnd_[i] = m_dataInputStream_.readByte();
+        }
+        readcount += m_contractionEndSize_;
+        if (UCAConst != null) {
+            UCAConst.FIRST_TERTIARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            int readUCAConstcount = 4;
+            UCAConst.FIRST_TERTIARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_TERTIARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_TERTIARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_PRIMARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_PRIMARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_SECONDARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_SECONDARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_SECONDARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_SECONDARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_PRIMARY_IGNORABLE_[0] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_PRIMARY_IGNORABLE_[1] 
+                                               = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.FIRST_VARIABLE_[0] = m_dataInputStream_.readInt();     
+            readUCAConstcount += 4;
+            UCAConst.FIRST_VARIABLE_[1] = m_dataInputStream_.readInt();
+            readUCAConstcount += 4;
+            UCAConst.LAST_VARIABLE_[0] = m_dataInputStream_.readInt(); 
+            readUCAConstcount += 4;
+            UCAConst.LAST_VARIABLE_[1] = m_dataInputStream_.readInt();                     
+            readUCAConstcount += 4;
+            UCAConst.FIRST_NON_VARIABLE_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_NON_VARIABLE_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_NON_VARIABLE_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_NON_VARIABLE_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.RESET_TOP_VALUE_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.RESET_TOP_VALUE_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_IMPLICIT_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_IMPLICIT_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_IMPLICIT_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_IMPLICIT_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_TRAILING_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.FIRST_TRAILING_[1] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_TRAILING_[0] = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.LAST_TRAILING_[1] = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4; 
+            UCAConst.PRIMARY_TOP_MIN_ = m_dataInputStream_.readInt();  
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_IMPLICIT_MIN_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_IMPLICIT_MAX_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_TRAILING_MIN_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_TRAILING_MAX_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_SPECIAL_MIN_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            UCAConst.PRIMARY_SPECIAL_MAX_ = m_dataInputStream_.readInt();   
+            readUCAConstcount += 4;
+            int resultsize = (m_UCAValuesSize_ - readUCAConstcount) >> 1;
+            char result[] = new char[resultsize];
+            for (int i = 0; i < resultsize; i ++) {
+                result[i] = m_dataInputStream_.readChar();
+            }
+            readcount += m_UCAValuesSize_;
+            if (readcount != m_size_) {
+                throw new IOException("Internal Error: Data file size error");
+            }
+            return result;
+        }
+        if (readcount != m_size_) {
+            throw new IOException("Internal Error: Data file size error");
+        }
+        return null;
+    }
+    
+    /**
+     * Reads in the inverse uca data
+     * @param input input stream with the inverse uca data
+     * @return an object containing the inverse uca data
+     * @exception IOException thrown when error occurs while reading the 
+     *            inverse uca
+     */
+    private static CollationParsedRuleBuilder.InverseUCA readInverseUCA(
+                                                      InputStream inputStream)
+                                                      throws IOException
+    {
+         byte[] UnicodeVersion = ICUBinary.readHeader(inputStream, INVERSE_UCA_DATA_FORMAT_ID_, 
+                              INVERSE_UCA_AUTHENTICATE_);
+                              
+        // weiv: check that we have the correct Unicode version in 
+        // binary files
+        VersionInfo UCDVersion = UCharacter.getUnicodeVersion();
+        if(UnicodeVersion[0] != UCDVersion.getMajor() 
+        || UnicodeVersion[1] != UCDVersion.getMinor()) {
+            throw new IOException(WRONG_UNICODE_VERSION_ERROR_);
+        }
+                              
+        CollationParsedRuleBuilder.InverseUCA result = 
+                                  new CollationParsedRuleBuilder.InverseUCA();
+        DataInputStream input = new DataInputStream(inputStream);        
+        input.readInt(); // bytesize
+        int tablesize = input.readInt(); // in int size
+        int contsize = input.readInt();  // in char size
+        input.readInt(); // table in bytes
+        input.readInt(); // conts in bytes
+        result.m_UCA_version_ = readVersion(input);
+        input.skipBytes(8); // skip padding
+        
+        int size = tablesize * 3; // one column for each strength
+        result.m_table_ = new int[size];
+        result.m_continuations_ = new char[contsize];
+        
+        for (int i = 0; i < size; i ++) {
+            result.m_table_[i] = input.readInt();
+        }
+        for (int i = 0; i < contsize; i ++) {
+            result.m_continuations_[i] = input.readChar();
+        }
+        input.close();
+        return result;
+    }
+    
+    /**
+     * Reads four bytes from the input and returns a VersionInfo
+     * object. Use it to read different collator versions.
+     * @param input already instantiated DataInputStream, positioned 
+     *              at the start of four version bytes
+     * @return a ready VersionInfo object
+     * @throws IOException thrown when error occurs while reading  
+     *            version bytes
+     */
+    
+    protected static VersionInfo readVersion(DataInputStream input) 
+        throws IOException {
+        byte[] version = new byte[4];
+        version[0] = input.readByte();
+        version[1] = input.readByte();
+        version[2] = input.readByte();
+        version[3] = input.readByte();
+        
+        VersionInfo result = 
+        VersionInfo.getInstance(
+            (int)version[0], (int)version[1], 
+            (int)version[2], (int)version[3]);
+        
+        return result;
+    }
+    
+    // private inner class -----------------------------------------------
+    
+    // private variables -------------------------------------------------
+    
+    /**
+     * Authenticate uca data format version
+     */
+    private static final ICUBinary.Authenticate UCA_AUTHENTICATE_ 
+                = new ICUBinary.Authenticate() {
+                        public boolean isDataVersionAcceptable(byte version[])
+                        {
+                            return version[0] == DATA_FORMAT_VERSION_[0] 
+                                   && version[1] >= DATA_FORMAT_VERSION_[1];
+                                   // Too harsh 
+                                   //&& version[1] == DATA_FORMAT_VERSION_[1]
+                                   //&& version[2] == DATA_FORMAT_VERSION_[2] 
+                                   //&& version[3] == DATA_FORMAT_VERSION_[3];
+                        }
+                };
+                
+    /**
+     * Authenticate uca data format version
+     */
+    private static final ICUBinary.Authenticate INVERSE_UCA_AUTHENTICATE_ 
+                = new ICUBinary.Authenticate() {
+                        public boolean isDataVersionAcceptable(byte version[])
+                        {
+                            return version[0] 
+                                    == INVERSE_UCA_DATA_FORMAT_VERSION_[0] 
+                                && version[1] 
+                                    >= INVERSE_UCA_DATA_FORMAT_VERSION_[1];
+                        }
+                };
+  
+    /**
+    * Data input stream for uca.icu 
+    */
+    private DataInputStream m_dataInputStream_;
+   
+    /**
+    * File format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte DATA_FORMAT_VERSION_[] = 
+                                   {(byte)0x2, (byte)0x2, (byte)0x0, (byte)0x0};
+    private static final byte DATA_FORMAT_ID_[] = {(byte)0x55, (byte)0x43,  
+                                                    (byte)0x6f, (byte)0x6c};
+    /**
+    * Inverse UCA file format version and id that this class understands.
+    * No guarantees are made if a older version is used
+    */
+    private static final byte INVERSE_UCA_DATA_FORMAT_VERSION_[] = 
+                                   {(byte)0x2, (byte)0x1, (byte)0x0, (byte)0x0};
+    private static final byte INVERSE_UCA_DATA_FORMAT_ID_[] = {(byte)0x49, 
+                                                               (byte)0x6e,  
+                                                               (byte)0x76, 
+                                                               (byte)0x43};
+                                
+    /**
+    * Wrong unicode version error string
+    */
+    private static final String WRONG_UNICODE_VERSION_ERROR_ =
+                                "Unicode version in binary image is not compatible with the current Unicode version";
+
+    /**
+     * Size of expansion table in bytes
+     */
+    private int m_expansionSize_;
+    /**
+     * Size of contraction index table in bytes
+     */
+    private int m_contractionIndexSize_;
+    /**
+     * Size of contraction table in bytes
+     */
+    private int m_contractionCESize_;
+    /*
+     * Size of the Trie in bytes
+     */
+    //private int m_trieSize_;
+    /**
+     * Size of the table that contains information about collation elements
+     * that end with an expansion 
+     */
+    private int m_expansionEndCESize_;
+    /**
+     * Size of the table that contains information about the maximum size of 
+     * collation elements that end with a particular expansion CE corresponding
+     * to the ones in expansionEndCE
+     */
+    private int m_expansionEndCEMaxSizeSize_;
+    /**
+     * Size of the option table that contains information about the collation
+     * options
+     */
+    private int m_optionSize_;
+    /**
+     * Size of the whole data file minusing the ICU header
+     */
+    private int m_size_;
+    /**
+     * Size of the collation data header
+     */
+    private int m_headerSize_;
+    /**
+     * Size of the table that contains information about the "Unsafe" 
+     * codepoints
+     */
+    private int m_unsafeSize_;
+    /**
+     * Size of the table that contains information about codepoints that ends
+     * with a contraction
+     */
+    private int m_contractionEndSize_;
+    /**
+     * Size of the table that contains UCA contraction information
+     */
+    private int m_UCAValuesSize_;
+      
+    // private methods ---------------------------------------------------
+      
+}
+
diff --git a/src/com/ibm/icu/text/CollatorServiceShim.java b/src/com/ibm/icu/text/CollatorServiceShim.java
new file mode 100644
index 0000000..4ec5437
--- /dev/null
+++ b/src/com/ibm/icu/text/CollatorServiceShim.java
@@ -0,0 +1,133 @@
+/**
+*******************************************************************************
+* Copyright (C) 2003-2008, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.text.Collator.CollatorFactory;
+import com.ibm.icu.util.ULocale;
+
+final class CollatorServiceShim extends Collator.ServiceShim {
+
+    Collator getInstance(ULocale locale) {
+    // use service cache, it's faster than instantiation
+//          if (service.isDefault()) {
+//              return new RuleBasedCollator(locale);
+//          }
+
+        try {
+            ULocale[] actualLoc = new ULocale[1];
+            Collator coll = (Collator)service.get(locale, actualLoc);
+            if (coll == null) {
+                throw new MissingResourceException("Could not locate Collator data", "", "");
+            }
+            coll = (Collator) coll.clone();
+            coll.setLocale(actualLoc[0], actualLoc[0]); // services make no distinction between actual & valid
+            return coll;
+        }
+        catch (CloneNotSupportedException e) {
+        ///CLOVER:OFF
+            throw new IllegalStateException(e.getMessage());
+        ///CLOVER:ON
+        }
+    }
+
+    Object registerInstance(Collator collator, ULocale locale) {
+        return service.registerObject(collator, locale);
+    }
+
+    Object registerFactory(CollatorFactory f) {
+        class CFactory extends LocaleKeyFactory {
+            CollatorFactory delegate;
+
+            CFactory(CollatorFactory fctry) {
+                super(fctry.visible()); 
+                this.delegate = fctry;
+            }
+
+            public Object handleCreate(ULocale loc, int kind, ICUService srvc) {
+                Object coll = delegate.createCollator(loc);
+                return coll;
+            }
+                
+            public String getDisplayName(String id, ULocale displayLocale) {
+                ULocale objectLocale = new ULocale(id);
+                return delegate.getDisplayName(objectLocale, displayLocale);
+            }
+
+            public Set getSupportedIDs() {
+                return delegate.getSupportedLocaleIDs();
+            }
+        }
+
+        return service.registerFactory(new CFactory(f));
+    }
+
+    boolean unregister(Object registryKey) {
+        return service.unregisterFactory((Factory)registryKey);
+    }
+
+    Locale[] getAvailableLocales() {
+        // TODO rewrite this to just wrap getAvailableULocales later
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+        }
+        return service.getAvailableULocales();
+    }
+
+    String getDisplayName(ULocale objectLocale, ULocale displayLocale) {
+        String id = objectLocale.getName();
+        return service.getDisplayName(id, displayLocale);
+    }
+
+    private static class CService extends ICULocaleService {
+        CService() {
+            super("Collator");
+
+            class CollatorFactory extends ICUResourceBundleFactory {
+                CollatorFactory() {
+                    super(ICUResourceBundle.ICU_COLLATION_BASE_NAME);
+                }
+
+                protected Object handleCreate(ULocale uloc, int kind, ICUService srvc) {
+                    return new RuleBasedCollator(uloc);
+                }
+            }
+
+            this.registerFactory(new CollatorFactory());
+            markDefault();
+        }
+
+        protected Object handleDefault(Key key, String[] actualIDReturn) {
+            if (actualIDReturn != null) {
+                actualIDReturn[0] = "root";
+            }
+            try {
+                return new RuleBasedCollator(ULocale.ROOT);
+            }
+            catch (MissingResourceException e) {
+                return null;
+            }
+        }
+    }
+    private static ICULocaleService service = new CService();
+}
diff --git a/src/com/ibm/icu/text/ComposedCharIter.java b/src/com/ibm/icu/text/ComposedCharIter.java
new file mode 100644
index 0000000..9622f57
--- /dev/null
+++ b/src/com/ibm/icu/text/ComposedCharIter.java
@@ -0,0 +1,164 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.NormalizerImpl;
+
+/**
+ * <tt>ComposedCharIter</tt> is an iterator class that returns all
+ * of the precomposed characters defined in the Unicode standard, along
+ * with their decomposed forms.  This is often useful when building
+ * data tables (<i>e.g.</i> collation tables) which need to treat composed
+ * and decomposed characters equivalently.
+ * <p>
+ * For example, imagine that you have built a collation table with ordering
+ * rules for the {@link Normalizer#DECOMP canonically decomposed} forms of all
+ * characters used in a particular language.  When you process input text using
+ * this table, the text must first be decomposed so that it matches the form
+ * used in the table.  This can impose a performance penalty that may be
+ * unacceptable in some situations.
+ * <p>
+ * You can avoid this problem by ensuring that the collation table contains
+ * rules for both the decomposed <i>and</i> composed versions of each character.
+ * To do so, use a <tt>ComposedCharIter</tt> to iterate through all of the
+ * composed characters in Unicode.  If the decomposition for that character
+ * consists solely of characters that are listed in your ruleset, you can
+ * add a new rule for the composed character that makes it equivalent to
+ * its decomposition sequence.
+ * <p>
+ * Note that <tt>ComposedCharIter</tt> iterates over a <em>static</em> table
+ * of the composed characters in Unicode.  If you want to iterate over the
+ * composed characters in a particular string, use {@link Normalizer} instead.
+ * <p>
+ * When constructing a <tt>ComposedCharIter</tt> there is one
+ * optional feature that you can enable or disable:
+ * <ul>
+ *   <li>{@link Normalizer#IGNORE_HANGUL} - Do not iterate over the Hangul
+ *          characters and their corresponding Jamo decompositions.
+ *          This option is off by default (<i>i.e.</i> Hangul processing is enabled)
+ *          since the Unicode standard specifies that Hangul to Jamo 
+ *          is a canonical decomposition.
+ * </ul>
+ * <p>
+ * <tt>ComposedCharIter</tt> is currently based on version 2.1.8 of the
+ * <a href="http://www.unicode.org" target="unicode">Unicode Standard</a>.
+ * It will be updated as later versions of Unicode are released.
+ * @deprecated ICU 2.2
+ */
+///CLOVER:OFF
+public final class ComposedCharIter {
+    
+    /**
+     * Constant that indicates the iteration has completed.
+     * {@link #next} returns this value when there are no more composed characters
+     * over which to iterate.
+     * @deprecated ICU 2.2
+     */
+    public static final  char DONE = (char) Normalizer.DONE;
+    
+    /**
+     * Construct a new <tt>ComposedCharIter</tt>.  The iterator will return
+     * all Unicode characters with canonical decompositions, including Korean
+     * Hangul characters.
+     * @deprecated ICU 2.2
+     */
+    public ComposedCharIter() {
+        compat = false;
+        //options =0;
+    }
+    
+    
+    /**
+     * Constructs a non-default <tt>ComposedCharIter</tt> with optional behavior.
+     * <p>
+     * @param compat    <tt>false</tt> for canonical decompositions only;
+     *                  <tt>true</tt> for both canonical and compatibility
+     *                  decompositions.
+     *
+     * @param options   Optional decomposition features.  Currently, the only
+     *                  supported option is {@link Normalizer#IGNORE_HANGUL}, which
+     *                  causes this <tt>ComposedCharIter</tt> not to iterate
+     *                  over the Hangul characters and their corresponding
+     *                  Jamo decompositions.
+     * @deprecated ICU 2.2
+     */
+    public ComposedCharIter(boolean compat, int options) {
+        this.compat = compat;
+        //this.options = options;
+    }
+    
+    /**
+     * Determines whether there any precomposed Unicode characters not yet returned
+     * by {@link #next}.
+     * @deprecated ICU 2.2
+     */
+    public boolean hasNext() {
+        if (nextChar == Normalizer.DONE)  {
+            findNextChar();
+        }
+        return nextChar != Normalizer.DONE;
+    }
+    
+    /**
+     * Returns the next precomposed Unicode character.
+     * Repeated calls to <tt>next</tt> return all of the precomposed characters defined
+     * by Unicode, in ascending order.  After all precomposed characters have
+     * been returned, {@link #hasNext} will return <tt>false</tt> and further calls
+     * to <tt>next</tt> will return {@link #DONE}.
+     * @deprecated ICU 2.2
+     */
+    public char next() {
+        if (nextChar == Normalizer.DONE)  {
+            findNextChar();
+        }
+        curChar = nextChar;
+        nextChar = Normalizer.DONE;
+        return (char) curChar;
+    }
+    
+    /**
+     * Returns the Unicode decomposition of the current character.
+     * This method returns the decomposition of the precomposed character most
+     * recently returned by {@link #next}.  The resulting decomposition is
+     * affected by the settings of the options passed to the constructor.
+     * @deprecated ICU 2.2
+     */
+    public String decomposition() {
+        // the decomposition buffer contains the decomposition of 
+        // current char so just return it
+        return new String(decompBuf,0, bufLen);
+    }
+    
+    private void findNextChar() {
+        int c=curChar+1;
+        for(;;){
+           if(c < 0xFFFF){
+               bufLen = NormalizerImpl.getDecomposition(c,compat,
+                                                        decompBuf,0,
+                                                        decompBuf.length);
+               if(bufLen>0){
+                    // the curChar can be decomposed... so it is a composed char
+                    // cache the result     
+                    break;
+               }
+               c++;
+           }else{
+               c=Normalizer.DONE;
+               break;
+           }
+        }
+        nextChar=c;  
+    }
+    
+    //private int options;
+    private boolean compat;
+    private char[] decompBuf = new char[100];
+    private int bufLen=0;
+    private int curChar = 0;
+    private int nextChar = Normalizer.DONE;
+    
+
+}
diff --git a/src/com/ibm/icu/text/CompoundTransliterator.java b/src/com/ibm/icu/text/CompoundTransliterator.java
new file mode 100644
index 0000000..efe4238
--- /dev/null
+++ b/src/com/ibm/icu/text/CompoundTransliterator.java
@@ -0,0 +1,512 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UtilityExtensions;
+import java.util.Vector;
+
+/**
+ * A transliterator that is composed of two or more other
+ * transliterator objects linked together.  For example, if one
+ * transliterator transliterates from script A to script B, and
+ * another transliterates from script B to script C, the two may be
+ * combined to form a new transliterator from A to C.
+ *
+ * <p>Composed transliterators may not behave as expected.  For
+ * example, inverses may not combine to form the identity
+ * transliterator.  See the class documentation for {@link
+ * Transliterator} for details.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @internal
+ */
+class CompoundTransliterator extends Transliterator {
+
+    private Transliterator[] trans;
+
+    private int numAnonymousRBTs = 0;
+
+    /**
+     * Constructs a new compound transliterator given an array of
+     * transliterators.  The array of transliterators may be of any
+     * length, including zero or one, however, useful compound
+     * transliterators have at least two components.
+     * @param transliterators array of <code>Transliterator</code>
+     * objects
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @internal
+     */
+    /*public CompoundTransliterator(Transliterator[] transliterators,
+                                  UnicodeFilter filter) {
+        super(joinIDs(transliterators), filter);
+        trans = new Transliterator[transliterators.length];
+        System.arraycopy(transliterators, 0, trans, 0, trans.length);
+        computeMaximumContextLength();
+    }*/
+
+    /**
+     * Constructs a new compound transliterator given an array of
+     * transliterators.  The array of transliterators may be of any
+     * length, including zero or one, however, useful compound
+     * transliterators have at least two components.
+     * @param transliterators array of <code>Transliterator</code>
+     * objects
+     * @internal
+     */
+    /*public CompoundTransliterator(Transliterator[] transliterators) {
+        this(transliterators, null);
+    }*/
+
+    /**
+     * Constructs a new compound transliterator.
+     * @param ID compound ID
+     * @param direction either Transliterator.FORWARD or Transliterator.REVERSE
+     * @param filter a global filter for this compound transliterator
+     * or null
+     * @internal
+     */
+    /*public CompoundTransliterator(String ID, int direction,
+                                  UnicodeFilter filter) {
+        super(ID, filter);
+        init(ID, direction, true);
+    }*/
+
+    /**
+     * Constructs a new compound transliterator with no filter.
+     * @param ID compound ID
+     * @param direction either Transliterator.FORWARD or Transliterator.REVERSE
+     * @internal
+     */
+    /*public CompoundTransliterator(String ID, int direction) {
+        this(ID, direction, null);
+    }*/
+
+    /**
+     * Constructs a new forward compound transliterator with no filter.
+     * @param ID compound ID
+     * @internal
+     */
+    /*public CompoundTransliterator(String ID) {
+        this(ID, FORWARD, null);
+    }*/
+
+    /**
+     * Package private constructor for Transliterator from a vector of
+     * transliterators.  The caller is responsible for fixing up the
+     * ID.
+     */
+    CompoundTransliterator(Vector list) {
+        this(list, 0);
+    }
+
+    CompoundTransliterator(Vector list, int numAnonymousRBTs) {
+        super("", null);
+        trans = null;
+        init(list, FORWARD, false);
+        this.numAnonymousRBTs = numAnonymousRBTs;
+        // assume caller will fixup ID
+    }
+
+    /**
+     * Finish constructing a transliterator: only to be called by
+     * constructors.  Before calling init(), set trans and filter to NULL.
+     * @param id the id containing ';'-separated entries
+     * @param direction either FORWARD or REVERSE
+     * @param idSplitPoint the index into id at which the
+     * splitTrans should be inserted, if there is one, or
+     * -1 if there is none.
+     * @param splitTrans a transliterator to be inserted
+     * before the entry at offset idSplitPoint in the id string.  May be
+     * NULL to insert no entry.
+     * @param fixReverseID if TRUE, then reconstruct the ID of reverse
+     * entries by calling getID() of component entries.  Some constructors
+     * do not require this because they apply a facade ID anyway.
+     */
+    /*private void init(String id,
+                      int direction,
+                      boolean fixReverseID) {
+        // assert(trans == 0);
+
+        Vector list = new Vector();
+        UnicodeSet[] compoundFilter = new UnicodeSet[1];
+        StringBuffer regenID = new StringBuffer();
+        if (!TransliteratorIDParser.parseCompoundID(id, direction,
+                 regenID, list, compoundFilter)) {
+            throw new IllegalArgumentException("Invalid ID " + id);
+        }
+
+        TransliteratorIDParser.instantiateList(list);
+
+        init(list, direction, fixReverseID);
+
+        if (compoundFilter[0] != null) {
+            setFilter(compoundFilter[0]);
+        }
+    }*/
+
+    /**
+     * Finish constructing a transliterator: only to be called by
+     * constructors.  Before calling init(), set trans and filter to NULL.
+     * @param list a vector of transliterator objects to be adopted.  It
+     * should NOT be empty.  The list should be in declared order.  That
+     * is, it should be in the FORWARD order; if direction is REVERSE then
+     * the list order will be reversed.
+     * @param direction either FORWARD or REVERSE
+     * @param fixReverseID if TRUE, then reconstruct the ID of reverse
+     * entries by calling getID() of component entries.  Some constructors
+     * do not require this because they apply a facade ID anyway.
+     */
+    private void init(Vector list,
+                      int direction,
+                      boolean fixReverseID) {
+        // assert(trans == 0);
+
+        // Allocate array
+        int count = list.size();
+        trans = new Transliterator[count];
+
+        // Move the transliterators from the vector into an array.
+        // Reverse the order if necessary.
+        int i;
+        for (i=0; i<count; ++i) {
+            int j = (direction == FORWARD) ? i : count - 1 - i;
+            trans[i] = (Transliterator) list.elementAt(j);
+        }
+
+        // If the direction is UTRANS_REVERSE then we may need to fix the
+        // ID.
+        if (direction == REVERSE && fixReverseID) {
+            StringBuffer newID = new StringBuffer();
+            for (i=0; i<count; ++i) {
+                if (i > 0) {
+                    newID.append(ID_DELIM);
+                }
+                newID.append(trans[i].getID());
+            }
+            setID(newID.toString());
+        }
+
+        computeMaximumContextLength();
+    }
+
+    /**
+     * Return the IDs of the given list of transliterators, concatenated
+     * with ';' delimiting them.  Equivalent to the perlish expression
+     * join(';', map($_.getID(), transliterators).
+     */
+    /*private static String joinIDs(Transliterator[] transliterators) {
+        StringBuffer id = new StringBuffer();
+        for (int i=0; i<transliterators.length; ++i) {
+            if (i > 0) {
+                id.append(';');
+            }
+            id.append(transliterators[i].getID());
+        }
+        return id.toString();
+    }*/
+
+    /**
+     * Returns the number of transliterators in this chain.
+     * @return number of transliterators in this chain.
+     * @internal
+     */
+    public int getCount() {
+        return trans.length;
+    }
+
+    /**
+     * Returns the transliterator at the given index in this chain.
+     * @param index index into chain, from 0 to <code>getCount() - 1</code>
+     * @return transliterator at the given index
+     * @internal
+     */
+    public Transliterator getTransliterator(int index) {
+        return trans[index];
+    }
+
+    /**
+     * Append c to buf, unless buf is empty or buf already ends in c.
+     */
+    private static void _smartAppend(StringBuffer buf, char c) {
+        if (buf.length() != 0 &&
+            buf.charAt(buf.length() - 1) != c) {
+            buf.append(c);
+        }
+    }
+
+    /**
+     * Override Transliterator:
+     * Create a rule string that can be passed to createFromRules()
+     * to recreate this transliterator.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     * @return the rule string
+     * @internal
+     */
+    public String toRules(boolean escapeUnprintable) {
+        // We do NOT call toRules() on our component transliterators, in
+        // general.  If we have several rule-based transliterators, this
+        // yields a concatenation of the rules -- not what we want.  We do
+        // handle compound RBT transliterators specially -- those for which
+        // compoundRBTIndex >= 0.  For the transliterator at compoundRBTIndex,
+        // we do call toRules() recursively.
+        StringBuffer rulesSource = new StringBuffer();
+        if (numAnonymousRBTs >= 1 && getFilter() != null) {
+            // If we are a compound RBT and if we have a global
+            // filter, then emit it at the top.
+            rulesSource.append("::").append(getFilter().toPattern(escapeUnprintable)).append(ID_DELIM);
+        }
+        for (int i=0; i<trans.length; ++i) {
+            String rule;
+
+            // Anonymous RuleBasedTransliterators (inline rules and
+            // ::BEGIN/::END blocks) are given IDs that begin with
+            // "%Pass": use toRules() to write all the rules to the output
+            // (and insert "::Null;" if we have two in a row)
+            if (trans[i].getID().startsWith("%Pass")) {
+                rule = trans[i].toRules(escapeUnprintable);
+                if (numAnonymousRBTs > 1 && i > 0 && trans[i - 1].getID().startsWith("%Pass"))
+                    rule = "::Null;" + rule;
+
+            // we also use toRules() on CompoundTransliterators (which we
+            // check for by looking for a semicolon in the ID)-- this gets
+            // the list of their child transliterators output in the right
+            // format
+            } else if (trans[i].getID().indexOf(';') >= 0) {
+                rule = trans[i].toRules(escapeUnprintable);
+
+            // for everything else, use baseToRules()
+            } else {
+                rule = trans[i].baseToRules(escapeUnprintable);
+            }
+            _smartAppend(rulesSource, '\n');
+            rulesSource.append(rule);
+            _smartAppend(rulesSource, ID_DELIM);
+        }
+        return rulesSource.toString();
+    }
+
+    /**
+     * Return the set of all characters that may be modified by this
+     * Transliterator, ignoring the effect of our filter.
+     * @internal
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        UnicodeSet set = new UnicodeSet();
+        for (int i=0; i<trans.length; ++i) {
+            set.addAll(trans[i].getSourceSet());
+            // Take the example of Hiragana-Latin.  This is really
+            // Hiragana-Katakana; Katakana-Latin.  The source set of
+            // these two is roughly [:Hiragana:] and [:Katakana:].
+            // But the source set for the entire transliterator is
+            // actually [:Hiragana:] ONLY -- that is, the first
+            // non-empty source set.
+
+            // This is a heuristic, and not 100% reliable.
+            if (!set.isEmpty()) {
+                break;
+            }
+        }
+        return set;
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.
+     * @internal
+     */
+    public UnicodeSet getTargetSet() {
+        UnicodeSet set = new UnicodeSet();
+        for (int i=0; i<trans.length; ++i) {
+            // This is a heuristic, and not 100% reliable.
+            set.addAll(trans[i].getTargetSet());
+        }
+        return set;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     * @internal
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        /* Call each transliterator with the same start value and
+         * initial cursor index, but with the limit index as modified
+         * by preceding transliterators.  The cursor index must be
+         * reset for each transliterator to give each a chance to
+         * transliterate the text.  The initial cursor index is known
+         * to still point to the same place after each transliterator
+         * is called because each transliterator will not change the
+         * text between start and the initial value of cursor.
+         *
+         * IMPORTANT: After the first transliterator, each subsequent
+         * transliterator only gets to transliterate text committed by
+         * preceding transliterators; that is, the cursor (output
+         * value) of transliterator i becomes the limit (input value)
+         * of transliterator i+1.  Finally, the overall limit is fixed
+         * up before we return.
+         *
+         * Assumptions we make here:
+         * (1) contextStart <= start <= limit <= contextLimit <= text.length()
+         * (2) start <= start' <= limit'  ;cursor doesn't move back
+         * (3) start <= limit'            ;text before cursor unchanged
+         * - start' is the value of start after calling handleKT
+         * - limit' is the value of limit after calling handleKT
+         */
+
+        /**
+         * Example: 3 transliterators.  This example illustrates the
+         * mechanics we need to implement.  C, S, and L are the contextStart,
+         * start, and limit.  gl is the globalLimit.  contextLimit is
+         * equal to limit throughout.
+         *
+         * 1. h-u, changes hex to Unicode
+         *
+         *    4  7  a  d  0      4  7  a
+         *    abc/u0061/u    =>  abca/u
+         *    C  S       L       C   S L   gl=f->a
+         *
+         * 2. upup, changes "x" to "XX"
+         *
+         *    4  7  a       4  7  a
+         *    abca/u    =>  abcAA/u
+         *    C  SL         C    S
+         *                       L    gl=a->b
+         * 3. u-h, changes Unicode to hex
+         *
+         *    4  7  a        4  7  a  d  0  3
+         *    abcAA/u    =>  abc/u0041/u0041/u
+         *    C  S L         C              S
+         *                                  L   gl=b->15
+         * 4. return
+         *
+         *    4  7  a  d  0  3
+         *    abc/u0041/u0041/u
+         *    C S L
+         */
+
+        if (trans.length < 1) {
+            index.start = index.limit;
+            return; // Short circuit for empty compound transliterators
+        }
+
+        // compoundLimit is the limit value for the entire compound
+        // operation.  We overwrite index.limit with the previous
+        // index.start.  After each transliteration, we update
+        // compoundLimit for insertions or deletions that have happened.
+        int compoundLimit = index.limit;
+
+        // compoundStart is the start for the entire compound
+        // operation.
+        int compoundStart = index.start;
+
+        int delta = 0; // delta in length
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer("CompoundTransliterator{" + getID() +
+                                   (incremental ? "}i: IN=" : "}: IN="));
+            UtilityExtensions.formatInput(log, text, index);
+            System.out.println(Utility.escape(log.toString()));
+        }
+
+        // Give each transliterator a crack at the run of characters.
+        // See comments at the top of the method for more detail.
+        for (int i=0; i<trans.length; ++i) {
+            index.start = compoundStart; // Reset start
+            int limit = index.limit;
+
+            if (index.start == index.limit) {
+                // Short circuit for empty range
+                if (DEBUG) {
+                    System.out.println("CompoundTransliterator[" + i +
+                                       ".." + (trans.length-1) +
+                                       (incremental ? "]i: " : "]: ") +
+                                       UtilityExtensions.formatInput(text, index) +
+                                       " (NOTHING TO DO)");
+                }
+                break;
+            }
+
+            if (DEBUG) {
+                log.setLength(0);
+                log.append("CompoundTransliterator[" + i + "=" +
+                           trans[i].getID() +
+                           (incremental ? "]i: " : "]: "));
+                UtilityExtensions.formatInput(log, text, index);
+            }
+
+            trans[i].filteredTransliterate(text, index, incremental);
+
+            // In a properly written transliterator, start == limit after
+            // handleTransliterate() returns when incremental is false.
+            // Catch cases where the subclass doesn't do this, and throw
+            // an exception.  (Just pinning start to limit is a bad idea,
+            // because what's probably happening is that the subclass
+            // isn't transliterating all the way to the end, and it should
+            // in non-incremental mode.)
+            if (!incremental && index.start != index.limit) {
+                throw new RuntimeException("ERROR: Incomplete non-incremental transliteration by " + trans[i].getID());
+            }
+
+            if (DEBUG) {
+                log.append(" => ");
+                UtilityExtensions.formatInput(log, text, index);
+                System.out.println(Utility.escape(log.toString()));
+            }
+
+            // Cumulative delta for insertions/deletions
+            delta += index.limit - limit;
+
+            if (incremental) {
+                // In the incremental case, only allow subsequent
+                // transliterators to modify what has already been
+                // completely processed by prior transliterators.  In the
+                // non-incrmental case, allow each transliterator to
+                // process the entire text.
+                index.limit = index.start;
+            }
+        }
+
+        compoundLimit += delta;
+
+        // Start is good where it is -- where the last transliterator left
+        // it.  Limit needs to be put back where it was, modulo
+        // adjustments for deletions/insertions.
+        index.limit = compoundLimit;
+
+        if (DEBUG) {
+            log.setLength(0);
+            log.append("CompoundTransliterator{" + getID() +
+                       (incremental ? "}i: OUT=" : "}: OUT="));
+            UtilityExtensions.formatInput(log, text, index);
+            System.out.println(Utility.escape(log.toString()));
+        }
+    }
+
+    /**
+     * Compute and set the length of the longest context required by this transliterator.
+     * This is <em>preceding</em> context.
+     */
+    private void computeMaximumContextLength() {
+        int max = 0;
+        for (int i=0; i<trans.length; ++i) {
+            int len = trans[i].getMaximumContextLength();
+            if (len > max) {
+                max = len;
+            }
+        }
+        setMaximumContextLength(max);
+    }
+}
diff --git a/src/com/ibm/icu/text/CurrencyFormat.java b/src/com/ibm/icu/text/CurrencyFormat.java
new file mode 100644
index 0000000..a941df8
--- /dev/null
+++ b/src/com/ibm/icu/text/CurrencyFormat.java
@@ -0,0 +1,63 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2005, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 20, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+import com.ibm.icu.util.CurrencyAmount;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Temporary internal concrete subclass of MeasureFormat implementing
+ * parsing and formatting of CurrencyAmount objects.  This class is
+ * likely to be redesigned and rewritten in the near future.
+ *
+ * <p>This class currently delegates to DecimalFormat for parsing and
+ * formatting.
+ *
+ * @see com.ibm.icu.text.UFormat
+ * @see com.ibm.icu.text.DecimalFormat
+ * @author Alan Liu
+ * @internal
+ */
+class CurrencyFormat extends MeasureFormat {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -931679363692504634L;
+    
+    private NumberFormat fmt;
+
+    public CurrencyFormat(ULocale locale) {
+        fmt = NumberFormat.getCurrencyInstance(locale.toLocale());
+    }
+
+    /**
+     * Override Format.format().
+     * @see java.text.Format#format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition)
+     */
+    public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
+        try {
+            CurrencyAmount currency = (CurrencyAmount) obj;
+            fmt.setCurrency(currency.getCurrency());
+            return fmt.format(currency.getNumber(), toAppendTo, pos);
+        } catch (ClassCastException e) {
+            throw new IllegalArgumentException("Invalid type: " + obj.getClass().getName());
+        }
+    }
+
+    /**
+     * Override Format.parseObject().
+     * @see java.text.Format#parseObject(java.lang.String, java.text.ParsePosition)
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        return fmt.parseCurrency(source, pos);
+    }
+}
diff --git a/src/com/ibm/icu/text/CurrencyPluralInfo.java b/src/com/ibm/icu/text/CurrencyPluralInfo.java
new file mode 100644
index 0000000..d4b51ae
--- /dev/null
+++ b/src/com/ibm/icu/text/CurrencyPluralInfo.java
@@ -0,0 +1,331 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+/**
+ * This class represents the information needed by 
+ * DecimalFormat to format currency plural, 
+ * such as "3.00 US dollars" or "1.00 US dollar". 
+ * DecimalFormat creates for itself an instance of
+ * CurrencyPluralInfo from its locale data.  
+ * If you need to change any of these symbols, you can get the
+ * CurrencyPluralInfo object from your 
+ * DecimalFormat and modify it.
+ *
+ * Following are the information needed for currency plural format and parse:
+ * locale information,
+ * plural rule of the locale,
+ * currency plural pattern of the locale.
+ *
+ * @draft ICU 4.2
+ * @provisional This API might change or be removed in a future release.
+ */
+
+public class CurrencyPluralInfo implements Cloneable, Serializable {
+    private static final long serialVersionUID = 1;
+
+    /**
+     * Create a CurrencyPluralInfo object for the default locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CurrencyPluralInfo() {
+        initialize( ULocale.getDefault() );
+    }
+
+    /**
+     * Create a CurrencyPluralInfo object for the given locale.
+     * @param locale the locale
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CurrencyPluralInfo( Locale locale ) {
+        initialize( ULocale.forLocale(locale) );
+    }
+
+    /**
+     * Create a CurrencyPluralInfo object for the given locale.
+     * @param locale the locale
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CurrencyPluralInfo( ULocale locale ) {
+        initialize( locale );
+    }
+
+    /**
+     * Gets a CurrencyPluralInfo instance for the default locale.
+     * 
+     * @return A CurrencyPluralInfo instance.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static CurrencyPluralInfo getInstance() {
+        return new CurrencyPluralInfo();
+    }
+
+    /**
+     * Gets a CurrencyPluralInfo instance for the given locale.
+     * 
+     * @param locale the locale.
+     * @return A CurrencyPluralInfo instance.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static CurrencyPluralInfo getInstance(Locale locale) {
+        return new CurrencyPluralInfo(locale);
+    }
+
+    /**
+     * Gets a CurrencyPluralInfo instance for the given locale.
+     * 
+     * @param locale the locale.
+     * @return A CurrencyPluralInfo instance.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static CurrencyPluralInfo getInstance(ULocale locale) {
+        return new CurrencyPluralInfo(locale);
+    }
+
+    /**
+     * Gets plural rules of this locale, used for currency plural format
+     *
+     * @return plural rule
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralRules getPluralRules() {
+        return pluralRules;
+    }
+
+    /**
+     * Given a plural count, gets currency plural pattern of this locale, 
+     * used for currency plural format
+     *
+     * @param  pluralCount currency plural count
+     * @return a currency plural pattern based on plural count
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getCurrencyPluralPattern(String pluralCount) {
+        String currencyPluralPattern = 
+            (String)pluralCountToCurrencyUnitPattern.get(pluralCount);
+        if (currencyPluralPattern == null) {
+            // fall back to "other"
+            if (!pluralCount.equals("other")) {
+                currencyPluralPattern = 
+                    (String)pluralCountToCurrencyUnitPattern.get("other");
+            }
+            if (currencyPluralPattern == null) {
+                // no currencyUnitPatterns defined, 
+                // fallback to predefined defult.
+                // This should never happen when ICU resource files are
+                // available, since currencyUnitPattern of "other" is always
+                // defined in root.
+                currencyPluralPattern = defaultCurrencyPluralPattern;
+            }
+        }
+        return currencyPluralPattern;
+    }
+
+    /**
+     * Get locale 
+     *
+     * @return locale
+     *
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ULocale getLocale() {
+        return ulocale;
+    }
+
+    /**
+     * Set plural rules.
+     * The plural rule is set when CurrencyPluralInfo
+     * instance is created.
+     * You can call this method to reset plural rules only if you want
+     * to modify the default plural rule of the locale.
+     *
+     * @param ruleDescription new plural rule description
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setPluralRules(String ruleDescription) {
+        pluralRules = PluralRules.createRules(ruleDescription);
+    }
+
+    /**
+     * Set currency plural patterns.
+     * The currency plural pattern is set when CurrencyPluralInfo
+     * instance is created.
+     * You can call this method to reset currency plural patterns only if 
+     * you want to modify the default currency plural pattern of the locale.
+     *
+     * @param pluralCount the plural count for which the currency pattern will 
+     *                    be overridden.
+     * @param pattern     the new currency plural pattern
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setCurrencyPluralPattern(String pluralCount, String pattern) {
+        pluralCountToCurrencyUnitPattern.put(pluralCount, pattern);
+    }
+
+    /**
+     * Set locale
+     *
+     * @param loc the new locale to set
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setLocale(ULocale loc) {
+        ulocale = loc;
+        initialize(loc);
+    }
+
+    /**
+     * Standard override
+     *
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object clone() {
+        try {
+            CurrencyPluralInfo other = (CurrencyPluralInfo) super.clone();
+            // locale is immutable
+            other.ulocale = (ULocale)ulocale.clone();
+            // plural rule is immutable
+            //other.pluralRules = pluralRules;
+            // clone content
+            //other.pluralCountToCurrencyUnitPattern = pluralCountToCurrencyUnitPattern;
+            other.pluralCountToCurrencyUnitPattern = new HashMap();
+            Iterator iter = pluralCountToCurrencyUnitPattern.keySet().iterator();
+            while (iter.hasNext()) {
+                String pluralCount = (String)iter.next();
+                String currencyPattern = (String)pluralCountToCurrencyUnitPattern.get(pluralCount);
+                other.pluralCountToCurrencyUnitPattern.put(pluralCount, currencyPattern);
+            }
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Override equals
+     *
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object a) {
+        if (a instanceof CurrencyPluralInfo) {
+            CurrencyPluralInfo other = (CurrencyPluralInfo)a;
+            return pluralRules.equals(other.pluralRules) && 
+                   pluralCountToCurrencyUnitPattern.equals(other.pluralCountToCurrencyUnitPattern);
+        }
+        return false;
+    }
+
+    /**
+     * Given a number, returns the keyword of the first rule that applies 
+     * to the number
+     */
+    String select(double number) {
+        return pluralRules.select(number);
+    }
+
+    /**
+     * Currency plural pattern iterator.
+     *
+     * @return a iterator on currency plural pattern key set.
+     */
+    Iterator pluralPatternIterator() {
+        return pluralCountToCurrencyUnitPattern.keySet().iterator();
+    }
+
+    private void initialize(ULocale uloc) {
+        ulocale = uloc;
+        pluralRules = PluralRules.forLocale(uloc);
+        setupCurrencyPluralPattern(uloc);
+    }
+
+   
+    private void setupCurrencyPluralPattern(ULocale uloc) {
+        pluralCountToCurrencyUnitPattern = new HashMap();
+        Set pluralCountSet = new HashSet();
+        ULocale parentLocale = uloc;
+        String numberStylePattern = NumberFormat.getPattern(uloc, NumberFormat.NUMBERSTYLE);
+        while (parentLocale != null) {
+            try {
+                ICUResourceBundle resource = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, parentLocale);
+                ICUResourceBundle currencyRes = resource.getWithFallback("CurrencyUnitPatterns");
+                int size = currencyRes.getSize();
+                for (int index = 0; index < size; ++index) {
+                    String pluralCount = currencyRes.get(index).getKey();
+                    if (pluralCountSet.contains(pluralCount)) {
+                        continue;
+                    }
+                    String pattern = currencyRes.get(index).getString();
+                    // replace {0} with numberStylePattern
+                    // and {1} with triple currency sign
+                    String patternWithNumber = Utility.replace(pattern, "{0}", numberStylePattern);
+                    String patternWithCurrencySign = Utility.replace(patternWithNumber, "{1}", tripleCurrencyStr);
+                    pluralCountToCurrencyUnitPattern.put(pluralCount, patternWithCurrencySign);
+                    pluralCountSet.add(pluralCount);
+                }
+            } catch (MissingResourceException e) {
+            }
+            parentLocale = parentLocale.getFallback();
+        } 
+    }
+
+
+
+    //-------------------- private data member ---------------------
+    //
+    // triple currency sign char array
+    private static final char[] tripleCurrencySign = {0xA4, 0xA4, 0xA4};
+    // triple currency sign string
+    private static final String tripleCurrencyStr = new String(tripleCurrencySign);
+
+    // default currency plural pattern char array
+    private static final char[] defaultCurrencyPluralPatternChar = {0, '.', '#', '#', ' ', 0xA4, 0xA4, 0xA4};
+    // default currency plural pattern string
+    private static final String defaultCurrencyPluralPattern = new String(defaultCurrencyPluralPatternChar);
+
+    // map from plural count to currency plural pattern, for example
+    // one (plural count) --> {0} {1} (currency plural pattern, 
+    // in which, {0} is the amount number, and {1} is the currency plural name.
+    private Map pluralCountToCurrencyUnitPattern = null;
+
+    /*
+     * The plural rule is used to format currency plural name,
+     * for example: "3.00 US Dollars".
+     * If there are 3 currency signs in the currency patttern,
+     * the 3 currency signs will be replaced by currency plural name.
+     */
+    private PluralRules pluralRules = null;
+
+    // locale
+    private ULocale ulocale = null;
+}
diff --git a/src/com/ibm/icu/text/DateFormat.java b/src/com/ibm/icu/text/DateFormat.java
new file mode 100644
index 0000000..4276131
--- /dev/null
+++ b/src/com/ibm/icu/text/DateFormat.java
@@ -0,0 +1,1849 @@
+//##header J2SE15
+/*
+*   Copyright (C) 1996-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.io.InvalidObjectException;
+import java.text.Format;
+import java.util.HashMap;
+import java.util.Map;
+import com.ibm.icu.util.GregorianCalendar;
+//#endif
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.RelativeDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * DateFormat is an abstract class for date/time formatting subclasses which
+ * formats and parses dates or time in a language-independent manner.
+ * The date/time formatting subclass, such as SimpleDateFormat, allows for
+ * formatting (i.e., date -> text), parsing (text -> date), and
+ * normalization.  The date is represented as a <code>Date</code> object or
+ * as the milliseconds since January 1, 1970, 00:00:00 GMT.
+ *
+ * <p>DateFormat provides many class methods for obtaining default date/time
+ * formatters based on the default or a given loacle and a number of formatting
+ * styles. The formatting styles include FULL, LONG, MEDIUM, and SHORT. More
+ * detail and examples of using these styles are provided in the method
+ * descriptions.
+ *
+ * <p>DateFormat helps you to format and parse dates for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * months, days of the week, or even the calendar format: lunar vs. solar.
+ *
+ * <p>To format a date for the current Locale, use one of the
+ * static factory methods:
+ * <pre>
+ *  myString = DateFormat.getDateInstance().format(myDate);
+ * </pre>
+ * <p>If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance();
+ *  for (int i = 0; i < a.length; ++i) {
+ *    output.println(df.format(myDate[i]) + "; ");
+ *  }
+ * </pre>
+ * <p>To format a number for a different Locale, specify it in the
+ * call to getDateInstance().
+ * <pre>
+ *  DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE);
+ * </pre>
+ * <p>You can use a DateFormat to parse also.
+ * <pre>
+ *  myDate = df.parse(myString);
+ * </pre>
+ * <p>Use getDateInstance to get the normal date format for that country.
+ * There are other static factory methods available.
+ * Use getTimeInstance to get the time format for that country.
+ * Use getDateTimeInstance to get a date and time format. You can pass in 
+ * different options to these factory methods to control the length of the
+ * result; from SHORT to MEDIUM to LONG to FULL. The exact result depends
+ * on the locale, but generally:
+ * <ul><li>SHORT is completely numeric, such as 12.13.52 or 3:30pm
+ * <li>MEDIUM is longer, such as Jan 12, 1952
+ * <li>LONG is longer, such as January 12, 1952 or 3:30:32pm
+ * <li>FULL is pretty completely specified, such as
+ * Tuesday, April 12, 1952 AD or 3:30:42pm PST.
+ * </ul>
+ *
+ * <p>You can also set the time zone on the format if you wish.
+ * If you want even more control over the format or parsing,
+ * (or want to give your users more control),
+ * you can try casting the DateFormat you get from the factory methods
+ * to a SimpleDateFormat. This will work for the majority
+ * of countries; just remember to put it in a try block in case you
+ * encounter an unusual one.
+ *
+ * <p>You can also use forms of the parse and format methods with
+ * ParsePosition and FieldPosition to
+ * allow you to
+ * <ul><li>progressively parse through pieces of a string.
+ * <li>align any particular field, or find out where it is for selection
+ * on the screen.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate 
+ * format instances for each thread. If multiple threads access a format 
+ * concurrently, it must be synchronized externally. 
+ *
+ * @see          UFormat
+ * @see          NumberFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public abstract class DateFormat extends UFormat {
+
+    /**
+     * The calendar that <code>DateFormat</code> uses to produce the time field
+     * values needed to implement date and time formatting.  Subclasses should
+     * initialize this to a calendar appropriate for the locale associated with
+     * this <code>DateFormat</code>.
+     * @serial
+     * @stable ICU 2.0
+     */
+    protected Calendar calendar;
+
+    /**
+     * The number formatter that <code>DateFormat</code> uses to format numbers
+     * in dates and times.  Subclasses should initialize this to a number format
+     * appropriate for the locale associated with this <code>DateFormat</code>.
+     * @serial
+     * @stable ICU 2.0
+     */
+    protected NumberFormat numberFormat;
+
+    /**
+     * FieldPosition selector for 'G' field alignment,
+     * corresponding to the {@link Calendar#ERA} field.
+     * @stable ICU 2.0
+     */
+    public final static int ERA_FIELD = 0;
+
+    /**
+     * FieldPosition selector for 'y' field alignment,
+     * corresponding to the {@link Calendar#YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int YEAR_FIELD = 1;
+
+    /**
+     * FieldPosition selector for 'M' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int MONTH_FIELD = 2;
+
+    /**
+     * FieldPosition selector for 'd' field alignment,
+     * corresponding to the {@link Calendar#DATE} field.
+     * @stable ICU 2.0
+     */
+    public final static int DATE_FIELD = 3;
+
+    /**
+     * FieldPosition selector for 'k' field alignment,
+     * corresponding to the {@link Calendar#HOUR_OF_DAY} field.
+     * HOUR_OF_DAY1_FIELD is used for the one-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 24:59.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY1_FIELD = 4;
+
+    /**
+     * FieldPosition selector for 'H' field alignment,
+     * corresponding to the {@link Calendar#HOUR_OF_DAY} field.
+     * HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
+     * For example, 23:59 + 01:00 results in 00:59.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY0_FIELD = 5;
+
+    /**
+     * FieldPosition selector for 'm' field alignment,
+     * corresponding to the {@link Calendar#MINUTE} field.
+     * @stable ICU 2.0
+     */
+    public final static int MINUTE_FIELD = 6;
+
+    /**
+     * FieldPosition selector for 's' field alignment,
+     * corresponding to the {@link Calendar#SECOND} field.
+     * @stable ICU 2.0
+     */
+    public final static int SECOND_FIELD = 7;
+
+    /**
+     * FieldPosition selector for 'S' field alignment,
+     * corresponding to the {@link Calendar#MILLISECOND} field.
+     * @stable ICU 3.0
+     */
+    public final static int FRACTIONAL_SECOND_FIELD = 8;
+
+    /**
+     * Alias for FRACTIONAL_SECOND_FIELD.
+     * @deprecated ICU 3.0 use FRACTIONAL_SECOND_FIELD.
+     */
+    public final static int MILLISECOND_FIELD = FRACTIONAL_SECOND_FIELD;
+
+    /**
+     * FieldPosition selector for 'E' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_FIELD = 9;
+
+    /**
+     * FieldPosition selector for 'D' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_YEAR_FIELD = 10;
+
+    /**
+     * FieldPosition selector for 'F' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK_IN_MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH_FIELD = 11;
+
+    /**
+     * FieldPosition selector for 'w' field alignment,
+     * corresponding to the {@link Calendar#WEEK_OF_YEAR} field.
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_YEAR_FIELD = 12;
+
+    /**
+     * FieldPosition selector for 'W' field alignment,
+     * corresponding to the {@link Calendar#WEEK_OF_MONTH} field.
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_MONTH_FIELD = 13;
+
+    /**
+     * FieldPosition selector for 'a' field alignment,
+     * corresponding to the {@link Calendar#AM_PM} field.
+     * @stable ICU 2.0
+     */
+    public final static int AM_PM_FIELD = 14;
+
+    /**
+     * FieldPosition selector for 'h' field alignment,
+     * corresponding to the {@link Calendar#HOUR} field.
+     * HOUR1_FIELD is used for the one-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 12:30 AM.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR1_FIELD = 15;
+
+    /**
+     * FieldPosition selector for 'K' field alignment,
+     * corresponding to the {@link Calendar#HOUR} field.
+     * HOUR0_FIELD is used for the zero-based 12-hour clock.
+     * For example, 11:30 PM + 1 hour results in 00:30 AM.
+     * @stable ICU 2.0
+     */
+    public final static int HOUR0_FIELD = 16;
+
+    /**
+     * FieldPosition selector for 'z' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.
+     * @stable ICU 2.0
+     */
+    public final static int TIMEZONE_FIELD = 17;
+
+    /**
+     * FieldPosition selector for 'Y' field alignment,
+     * corresponding to the {@link Calendar#YEAR_WOY} field.
+     * @stable ICU 3.0
+     */
+    public final static int YEAR_WOY_FIELD = 18;
+
+    /**
+     * FieldPosition selector for 'e' field alignment,
+     * corresponding to the {@link Calendar#DOW_LOCAL} field.
+     * @stable ICU 3.0
+     */
+    public final static int DOW_LOCAL_FIELD = 19;
+
+    /**
+     * FieldPosition selector for 'u' field alignment,
+     * corresponding to the {@link Calendar#EXTENDED_YEAR} field.
+     * @stable ICU 3.0
+     */
+    public final static int EXTENDED_YEAR_FIELD = 20;
+
+    /**
+     * FieldPosition selector for 'g' field alignment,
+     * corresponding to the {@link Calendar#JULIAN_DAY} field.
+     * @stable ICU 3.0
+     */
+    public final static int JULIAN_DAY_FIELD = 21;
+
+    /**
+     * FieldPosition selector for 'A' field alignment,
+     * corresponding to the {@link Calendar#MILLISECONDS_IN_DAY} field.
+     * @stable ICU 3.0
+     */
+    public final static int MILLISECONDS_IN_DAY_FIELD = 22;
+
+    /**
+     * FieldPosition selector for 'Z' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.
+     * @stable ICU 3.0
+     */
+    public final static int TIMEZONE_RFC_FIELD = 23;
+
+    /**
+     * FieldPosition selector for 'v' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.  This displays the generic zone
+     * name, if available.
+     * @stable ICU 3.4
+     */
+    public final static int TIMEZONE_GENERIC_FIELD = 24;
+ 
+
+    
+    /**
+     * FieldPosition selector for 'c' field alignment,
+     * corresponding to the {@link Calendar#DAY_OF_WEEK} field. 
+     * This displays the stand alone day name, if available.
+     * @stable ICU 3.4
+     */
+    public final static int STANDALONE_DAY_FIELD = 25;
+    
+    /**
+     * FieldPosition selector for 'L' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.  
+     * This displays the stand alone month name, if available.
+     * @stable ICU 3.4
+     */
+    public final static int STANDALONE_MONTH_FIELD = 26;
+    
+    /**
+     * FieldPosition selector for 'Q' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.  
+     * This displays the quarter.
+     * @stable ICU 3.6
+     */
+    public final static int QUARTER_FIELD = 27;
+    
+    /**
+     * FieldPosition selector for 'q' field alignment,
+     * corresponding to the {@link Calendar#MONTH} field.  
+     * This displays the stand alone quarter, if available.
+     * @stable ICU 3.6
+     */
+    public final static int STANDALONE_QUARTER_FIELD = 28;
+    
+    /**
+     * FieldPosition selector for 'V' field alignment,
+     * corresponding to the {@link Calendar#ZONE_OFFSET} and
+     * {@link Calendar#DST_OFFSET} fields.  This displays the fallback timezone
+     * name when VVVV is specified, and the short standard or daylight
+     * timezone name ignoring commonlyUsed when a single V is specified.
+     * @stable ICU 3.8
+     */
+    public final static int TIMEZONE_SPECIAL_FIELD = 29;
+
+    /**
+     * Number of FieldPosition selectors for DateFormat.
+     * Valid selectors range from 0 to FIELD_COUNT-1.
+     * @stable ICU 3.0
+     */
+    public final static int FIELD_COUNT = 30; // must == DateFormatSymbols.patternChars.length()
+
+    // Proclaim serial compatibility with 1.1 FCS
+    private static final long serialVersionUID = 7218322306649953788L;
+
+    /**
+     * Overrides Format.
+     * Formats a time object into a time string. Examples of time objects
+     * are a time value expressed in milliseconds and a Date object.
+     * @param obj must be a Number or a Date or a Calendar.
+     * @param toAppendTo the string buffer for the returning time string.
+     * @return the formatted time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @see java.text.Format
+     * @stable ICU 2.0
+     */
+    public final StringBuffer format(Object obj, StringBuffer toAppendTo,
+                                     FieldPosition fieldPosition)
+    {
+        if (obj instanceof Calendar)
+            return format( (Calendar)obj, toAppendTo, fieldPosition );
+        else if (obj instanceof Date)
+            return format( (Date)obj, toAppendTo, fieldPosition );
+        else if (obj instanceof Number)
+            return format( new Date(((Number)obj).longValue()),
+                          toAppendTo, fieldPosition );
+        else 
+            throw new IllegalArgumentException("Cannot format given Object (" + obj.getClass().getName() + ") as a Date");
+    }
+
+    /**
+     * Formats a date into a date/time string.
+     * @param cal a Calendar set to the date and time to be formatted
+     * into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+                                        FieldPosition fieldPosition);
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date a Date to be formatted into a date/time string.
+     * @param toAppendTo the string buffer for the returning date/time string.
+     * @param fieldPosition keeps track of the position of the field
+     * within the returned string.
+     * On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field. For
+     * example, given a time text "1996.07.10 AD at 15:08:56 PDT",
+     * if the given fieldPosition is DateFormat.YEAR_FIELD, the
+     * begin index and end index of fieldPosition will be set to
+     * 0 and 4, respectively.
+     * Notice that if the same time field appears
+     * more than once in a pattern, the fieldPosition will be set for the first
+     * occurence of that time field. For instance, formatting a Date to
+     * the time string "1 PM PDT (Pacific Daylight Time)" using the pattern
+     * "h a z (zzzz)" and the alignment field DateFormat.TIMEZONE_FIELD,
+     * the begin index and end index of fieldPosition will be set to
+     * 5 and 8, respectively, for the first occurence of the timezone
+     * pattern character 'z'.
+     * @return the formatted date/time string.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Date date, StringBuffer toAppendTo,
+                                     FieldPosition fieldPosition) {
+        // Use our Calendar object
+        calendar.setTime(date);
+        return format(calendar, toAppendTo, fieldPosition);
+    }
+
+    /**
+     * Formats a Date into a date/time string.
+     * @param date the time value to be formatted into a time string.
+     * @return the formatted time string.
+     * @stable ICU 2.0
+     */
+    public final String format(Date date)
+    {
+        return format(date, new StringBuffer(64),new FieldPosition(0)).toString();
+    }
+
+    /**
+     * Parse a date/time string.
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @return      A Date, or null if the input could not be parsed
+     *
+     * @exception  ParseException  If the given string cannot be parsed as a date.
+     *
+     * @see #parse(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Date parse(String text) throws ParseException
+    {
+        ParsePosition pos = new ParsePosition(0);
+        Date result = parse(text, pos);
+        if (pos.getIndex() == 0) // ICU4J
+            throw new ParseException("Unparseable date: \"" + text + "\"" ,
+                                     pos.getErrorIndex()); // ICU4J
+        return result;
+    }
+
+    /**
+     * Parse a date/time string according to the given parse position.
+     * For example, a time text "07/10/96 4:5 PM, PDT" will be parsed
+     * into a Calendar that is equivalent to Date(837039928046).  The
+     * caller should clear the calendar before calling this method,
+     * unless existing field information is to be kept.
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param cal   The calendar into which parsed data will be stored.
+     *              In general, this should be cleared before calling this
+     *              method.  If this parse fails, the calendar may still
+     *              have been modified.
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     * @stable ICU 2.0
+     */
+    public abstract void parse(String text, Calendar cal, ParsePosition pos);
+
+    /**
+     * Parse a date/time string according to the given parse position.  For
+     * example, a time text "07/10/96 4:5 PM, PDT" will be parsed into a Date
+     * that is equivalent to Date(837039928046).
+     *
+     * <p> By default, parsing is lenient: If the input is not in the form used
+     * by this object's format method but can still be parsed as a date, then
+     * the parse succeeds.  Clients may insist on strict adherence to the
+     * format by calling setLenient(false).
+     *
+     * @see #setLenient(boolean)
+     *
+     * @param text  The date/time string to be parsed
+     *
+     * @param pos   On input, the position at which to start parsing; on
+     *              output, the position at which parsing terminated, or the
+     *              start position if the parse failed.
+     *
+     * @return      A Date, or null if the input could not be parsed
+     * @stable ICU 2.0
+     */
+    public Date parse(String text, ParsePosition pos) {
+        Date result = null;
+        int start = pos.getIndex();
+        TimeZone tzsav = calendar.getTimeZone();
+        calendar.clear();
+        parse(text, calendar, pos);
+        if (pos.getIndex() != start) {
+            try {
+                result = calendar.getTime();
+            } catch (IllegalArgumentException e) {
+                // This occurs if the calendar is non-lenient and there is
+                // an out-of-range field.  We don't know which field was
+                // illegal so we set the error index to the start.
+                pos.setIndex(start);
+                pos.setErrorIndex(start);
+            }
+        }
+        // Restore TimeZone
+        calendar.setTimeZone(tzsav);
+        return result;
+    }
+
+    /**
+     * Parse a date/time string into an Object.  This convenience method simply
+     * calls parse(String, ParsePosition).
+     *
+     * @see #parse(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public Object parseObject (String source, ParsePosition pos)
+    {
+        return parse(source, pos);
+    }
+
+    /**
+     * Constant for empty style pattern.
+     * @stable ICU 3.8
+     */
+    public static final int NONE = -1;
+    
+    /**
+     * Constant for full style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int FULL = 0;
+
+    /**
+     * Constant for long style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int LONG = 1;
+
+    /**
+     * Constant for medium style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int MEDIUM = 2;
+
+    /**
+     * Constant for short style pattern.
+     * @stable ICU 2.0
+     */
+    public static final int SHORT = 3;
+
+    /**
+     * Constant for default style pattern.  Its value is MEDIUM.
+     * @stable ICU 2.0
+     */
+    public static final int DEFAULT = MEDIUM;
+    
+    /**
+     * Constant for relative style mask.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE = (1 << 7);
+
+    /**
+     * Constant for relative full style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_FULL = RELATIVE | FULL;
+
+    /**
+     * Constant for relative style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_LONG = RELATIVE | LONG;
+
+    /**
+     * Constant for relative style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_MEDIUM = RELATIVE | MEDIUM;
+
+    /**
+     * Constant for relative style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_SHORT = RELATIVE | SHORT;
+
+    /**
+     * Constant for relative default style pattern.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RELATIVE_DEFAULT = RELATIVE | DEFAULT;
+
+    /* Below are pre-defined skeletons
+     *
+     * <P>
+     * A skeleton 
+     * <ul>
+     * <li>
+     * 1. only keeps the field pattern letter and ignores all other parts 
+     *    in a pattern, such as space, punctuations, and string literals.
+     * <li>
+     * 2. hides the order of fields. 
+     * <li>
+     * 3. might hide a field's pattern letter length.
+     *
+     *    For those non-digit calendar fields, the pattern letter length is 
+     *    important, such as MMM, MMMM, and MMMMM; E and EEEE, 
+     *    and the field's pattern letter length is honored.
+     *    
+     *    For the digit calendar fields,  such as M or MM, d or dd, yy or yyyy, 
+     *    the field pattern length is ignored and the best match, which is 
+     *    defined in date time patterns, will be returned without honor 
+     *    the field pattern letter length in skeleton.
+     * </ul>
+     */
+    /** 
+     * Constant for date pattern with minute and second.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String MINUTE_SECOND = "ms";
+    
+    /** 
+     * Constant for date pattern with hour and minute in 24-hour presentation.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR24_MINUTE = "Hm";
+    
+    /** 
+     * Constant for date pattern with hour, minute, and second in
+     * 24-hour presentation.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR24_MINUTE_SECOND = "Hms";      
+    
+    /** 
+     * Constant for date pattern with hour, minute, and second.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_MINUTE_SECOND = "hms";
+    
+    /** 
+     * Constant for date pattern with standalone month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String STANDALONE_MONTH = "LLLL";
+    
+    /** 
+     * Constant for date pattern with standalone abbreviated month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String ABBR_STANDALONE_MONTH = "LLL";
+    
+    
+    /** 
+     * Constant for date pattern with year and quarter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_QUARTER = "yQQQ";
+    
+    /** 
+     * Constant for date pattern with year and abbreviated quarter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_ABBR_QUARTER = "yQ";
+
+    
+    /* Below are skeletons that date interval pre-defined in resource file.
+     * Users are encouraged to use them in date interval format factory methods.
+     */
+    /** 
+     * Constant for date pattern with hour and miunte.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_MINUTE = "hm";
+
+    /** 
+     * Constant for date pattern with year.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR = "y";
+    
+    /** 
+     * Constant for date pattern with day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String DAY = "d";
+    
+    /** 
+     * Constant for date pattern with numeric month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String NUM_MONTH_WEEKDAY_DAY = "MEd";
+    
+    /** 
+     * Constant for date pattern with year and numeric month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_NUM_MONTH = "yM";              
+    
+    /** 
+     * Constant for date pattern with numeric month and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String NUM_MONTH_DAY = "Md";
+    
+    /** 
+     * Constant for date pattern with year, numeric month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd";
+      
+    /** 
+     * Constant for date pattern with abbreviated month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd";
+    
+    /** 
+     * Constant for date pattern with year and month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_MONTH = "yMMMM";
+    
+    /** 
+     * Constant for date pattern with year and abbreviated month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_ABBR_MONTH = "yMMM";
+    
+    /** 
+     * Constant for date pattern having month and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String MONTH_DAY = "MMMMd";
+    
+    
+    /** 
+     * Constant for date pattern with abbreviated month and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String ABBR_MONTH_DAY = "MMMd"; 
+
+    /** 
+     * Constant for date pattern with month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd";
+    
+    /** 
+     * Constant for date pattern with year, abbreviated month, weekday, 
+     * and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd"; 
+    
+    /** 
+     * Constant for date pattern with year, month, weekday, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd";
+
+    /** 
+     * Constant for date pattern with year, month, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_MONTH_DAY = "yMMMMd";
+
+    /** 
+     * Constant for date pattern with year, abbreviated month, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_ABBR_MONTH_DAY = "yMMMd";
+
+    /** 
+     * Constant for date pattern with year, numeric month, and day.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String YEAR_NUM_MONTH_DAY = "yMd";
+
+    /** 
+     * Constant for date pattern with numeric month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String NUM_MONTH = "M";
+
+    /** 
+     * Constant for date pattern with abbreviated month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String ABBR_MONTH = "MMM";
+
+    /** 
+     * Constant for date pattern with month.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String MONTH = "MMMM";
+
+    /** 
+     * Constant for date pattern with hour, minute, and generic timezone.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_MINUTE_GENERIC_TZ = "hmv";
+
+    /** 
+     * Constant for date pattern with hour, minute, and timezone.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_MINUTE_TZ = "hmz";
+
+    /** 
+     * Constant for date pattern with hour.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR = "h";
+
+    /** 
+     * Constant for date pattern with hour and generic timezone.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_GENERIC_TZ = "hv";
+
+    /** 
+     * Constant for date pattern with hour and timezone.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String HOUR_TZ = "hz";
+
+    /**
+     * Gets the time formatter with the default formatting style
+     * for the default locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance()
+    {
+        return get(-1, DEFAULT, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance(int style)
+    {
+        return get(-1, style, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param aLocale the given locale.
+     * @return a time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getTimeInstance(int style,
+                                                 Locale aLocale)
+    {
+        return get(-1, style, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets the time formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @param locale the given ulocale.
+     * @return a time formatter.
+     * @stable ICU 3.2
+     */
+    public final static DateFormat getTimeInstance(int style,
+                                                 ULocale locale)
+    {
+        return get(-1, style, locale);
+    }
+
+    /**
+     * Gets the date formatter with the default formatting style
+     * for the default locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance()
+    {
+        return get(DEFAULT, -1, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the default locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance(int style)
+    {
+        return get(style, -1, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param aLocale the given locale.
+     * @return a date formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateInstance(int style,
+                                                 Locale aLocale)
+    {
+        return get(style, -1, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets the date formatter with the given formatting style
+     * for the given locale.
+     * @param style the given formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param locale the given ulocale.
+     * @return a date formatter.
+     * @stable ICU 3.2
+     */
+    public final static DateFormat getDateInstance(int style,
+                                                 ULocale locale)
+    {
+        return get(style, -1, locale);
+    }
+
+    /**
+     * Gets the date/time formatter with the default formatting style
+     * for the default locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance()
+    {
+        return get(DEFAULT, DEFAULT, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the date/time formatter with the given date and time
+     * formatting styles for the default locale.
+     * @param dateStyle the given date formatting style. For example,
+     * SHORT for "M/d/yy" in the US locale.
+     * @param timeStyle the given time formatting style. For example,
+     * SHORT for "h:mm a" in the US locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getDateTimeInstance(int dateStyle,
+                                                       int timeStyle)
+    {
+        return get(dateStyle, timeStyle, ULocale.getDefault());
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param aLocale the given locale.
+     * @return a date/time formatter.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat
+        getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
+    {
+        return get(dateStyle, timeStyle, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets the date/time formatter with the given formatting styles
+     * for the given locale.
+     * @param dateStyle the given date formatting style.
+     * @param timeStyle the given time formatting style.
+     * @param locale the given ulocale.
+     * @return a date/time formatter.
+     * @stable ICU 3.2
+     */
+    public final static DateFormat
+        getDateTimeInstance(int dateStyle, int timeStyle, ULocale locale)
+    {
+        return get(dateStyle, timeStyle, locale);
+    }
+
+    /**
+     * Get a default date/time formatter that uses the SHORT style for both the
+     * date and the time.
+     * @stable ICU 2.0
+     */
+    public final static DateFormat getInstance() {
+        return getDateTimeInstance(SHORT, SHORT);
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales()
+    {
+        return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+
+    /**
+     * Gets the set of locales for which DateFormats are installed.
+     * @return the set of locales for which DateFormats are installed.
+     * @draft ICU 3.2 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales()
+    {
+        return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+
+    /**
+     * Set the calendar to be used by this date format.  Initially, the default
+     * calendar for the specified or default locale is used.
+     * @param newCalendar the new Calendar to be used by the date format
+     * @stable ICU 2.0
+     */
+    public void setCalendar(Calendar newCalendar)
+    {
+        this.calendar = newCalendar;
+    }
+
+    /**
+     * Gets the calendar associated with this date/time formatter.
+     * @return the calendar associated with this date/time formatter.
+     * @stable ICU 2.0
+     */
+    public Calendar getCalendar()
+    {
+        return calendar;
+    }
+
+    /**
+     * Allows you to set the number formatter.
+     * @param newNumberFormat the given new NumberFormat.
+     * @stable ICU 2.0
+     */
+    public void setNumberFormat(NumberFormat newNumberFormat)
+    {
+        this.numberFormat = newNumberFormat;
+        /*In order to parse String like "11.10.2001" to DateTime correctly 
+          in Locale("fr","CH") [Richard/GCL]
+        */
+        this.numberFormat.setParseIntegerOnly(true);
+    }
+
+    /**
+     * Gets the number formatter which this date/time formatter uses to
+     * format and parse a time.
+     * @return the number formatter which this date/time formatter uses.
+     * @stable ICU 2.0
+     */
+    public NumberFormat getNumberFormat()
+    {
+        return numberFormat;
+    }
+
+    /**
+     * Sets the time zone for the calendar of this DateFormat object.
+     * @param zone the given new time zone.
+     * @stable ICU 2.0
+     */
+    public void setTimeZone(TimeZone zone)
+    {
+        calendar.setTimeZone(zone);
+    }
+
+    /**
+     * Gets the time zone.
+     * @return the time zone associated with the calendar of DateFormat.
+     * @stable ICU 2.0
+     */
+    public TimeZone getTimeZone()
+    {
+        return calendar.getTimeZone();
+    }
+
+    /**
+     * Specify whether or not date/time parsing is to be lenient.  With
+     * lenient parsing, the parser may use heuristics to interpret inputs that
+     * do not precisely match this object's format.  With strict parsing,
+     * inputs must match this object's format.
+     * @param lenient when true, parsing is lenient
+     * @see com.ibm.icu.util.Calendar#setLenient
+     * @stable ICU 2.0
+     */
+    public void setLenient(boolean lenient)
+    {
+        calendar.setLenient(lenient);
+    }
+
+    /**
+     * Tell whether date/time parsing is to be lenient.
+     * @stable ICU 2.0
+     */
+    public boolean isLenient()
+    {
+        return calendar.isLenient();
+    }
+
+    /**
+     * Overrides hashCode
+     * @stable ICU 2.0
+     */
+    ///CLOVER:OFF
+    // turn off code coverage since all subclasses override this
+    public int hashCode() {
+        return numberFormat.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+    ///CLOVER:ON
+
+    /**
+     * Overrides equals
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DateFormat other = (DateFormat) obj;
+        return (calendar.isEquivalentTo(other.calendar) &&
+                numberFormat.equals(other.numberFormat));
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        DateFormat other = (DateFormat) super.clone();
+        other.calendar = (Calendar) calendar.clone();
+        other.numberFormat = (NumberFormat) numberFormat.clone();
+        return other;
+    }
+
+    /**
+     * Creates a DateFormat with the given time and/or date style in the given
+     * locale.
+     * @param dateStyle a value from 0 to 3 indicating the time format,
+     * or -1 to indicate no date
+     * @param timeStyle a value from 0 to 3 indicating the time format,
+     * or -1 to indicate no time
+     * @param loc the locale for the format
+     */
+    private static DateFormat get(int dateStyle, int timeStyle, ULocale loc) {
+        if((timeStyle != -1 && (timeStyle & RELATIVE)>0) || (dateStyle != -1 && (dateStyle & RELATIVE)>0)) {
+            RelativeDateFormat r = new RelativeDateFormat(timeStyle, dateStyle /* offset? */, loc);
+            return r;
+        }
+    
+        if (timeStyle < -1 || timeStyle > 3) {
+            throw new IllegalArgumentException("Illegal time style " + timeStyle);
+        }
+        if (dateStyle < -1 || dateStyle > 3) {
+            throw new IllegalArgumentException("Illegal date style " + dateStyle);
+        }
+        try {
+            Calendar cal = Calendar.getInstance(loc);
+            DateFormat result = cal.getDateTimeFormat(dateStyle, timeStyle, loc);
+            result.setLocale(cal.getLocale(ULocale.VALID_LOCALE),
+                 cal.getLocale(ULocale.ACTUAL_LOCALE));
+            return result;
+        } catch (MissingResourceException e) {
+            ///CLOVER:OFF
+            // coverage requires separate run with no data, so skip
+            return new SimpleDateFormat("M/d/yy h:mm a");
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * Create a new date format.
+     * @stable ICU 2.0
+     */
+    protected DateFormat() {}
+
+    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    //-------------------------------------------------------------------------
+    // Public static interface for creating custon DateFormats for different
+    // types of Calendars.
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, Locale locale)
+    {
+        return getDateTimeInstance(cal, dateStyle, -1, ULocale.forLocale(locale));
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle, ULocale locale)
+    {
+        return getDateTimeInstance(cal, dateStyle, -1, locale);
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, Locale locale)
+    {
+        return getDateTimeInstance(cal, -1, timeStyle, ULocale.forLocale(locale));
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see DateFormat#getTimeInstance
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle, ULocale locale)
+    {
+        return getDateTimeInstance(cal, -1, timeStyle, locale);
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                 int timeStyle, Locale locale)
+    {
+        return cal.getDateTimeFormat(dateStyle, timeStyle, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see DateFormat#getDateTimeInstance
+     * @stable ICU 3.2
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle,
+                                                 int timeStyle, ULocale locale)
+    {
+        return cal.getDateTimeFormat(dateStyle, timeStyle, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getInstance(Calendar cal, Locale locale) {
+        return getDateTimeInstance(cal, SHORT, SHORT, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 3.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    static final public DateFormat getInstance(Calendar cal, ULocale locale) {
+        return getDateTimeInstance(cal, SHORT, SHORT, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getInstance(Calendar cal) {
+        return getInstance(cal, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateInstance(Calendar cal, int dateStyle) {
+        return getDateInstance(cal, dateStyle, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getTimeInstance(Calendar cal, int timeStyle) {
+        return getTimeInstance(cal, timeStyle, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 2.0
+     */
+    static final public DateFormat getDateTimeInstance(Calendar cal, int dateStyle, int timeStyle) {
+        return getDateTimeInstance(cal, dateStyle, timeStyle, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(String pattern) {
+        return getPatternInstance(pattern, ULocale.getDefault());
+    }
+    
+    /**
+     * Convenience overload
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(String pattern, Locale locale) {
+        return getPatternInstance(pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the given locale.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     *
+     * @param pattern The pattern that selects the fields to be formatted. (Uses the 
+     *              {@link DateTimePatternGenerator}.) This can be {@link DateFormat#ABBR_MONTH}, 
+     *              {@link DateFormat#MONTH_WEEKDAY_DAY}, etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(String pattern, ULocale locale) {
+        DateTimePatternGenerator generator = DateTimePatternGenerator.getInstance(locale);
+        final String bestPattern = generator.getBestPattern(pattern);
+        return new SimpleDateFormat(bestPattern, locale);
+    }
+
+    /**
+     * Convenience overload
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(Calendar cal, String pattern, Locale locale) {
+        return getPatternInstance(cal, pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param pattern The pattern that selects the fields to be formatted. (Uses the 
+     *              {@link DateTimePatternGenerator}.)  This can be
+     *              {@link DateFormat#ABBR_MONTH}, {@link DateFormat#MONTH_WEEKDAY_DAY},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static DateFormat getPatternInstance(Calendar cal, String pattern, ULocale locale) {
+        DateTimePatternGenerator generator = DateTimePatternGenerator.getInstance(locale);
+        final String bestPattern = generator.getBestPattern(pattern);
+        SimpleDateFormat format = new SimpleDateFormat(bestPattern, locale);
+        format.setCalendar(cal);
+        return format;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * The instances of this inner class are used as attribute keys and values
+     * in AttributedCharacterIterator that
+     * DateFormat.formatToCharacterIterator() method returns.
+     * <p>
+     * There is no public constructor to this class, the only instances are the
+     * constants defined here.
+     * <p>
+     * @stable ICU 3.8
+     */
+    public static class Field extends Format.Field {
+
+        private static final long serialVersionUID = -3627456821000730829L;
+
+        // Max number of calendar fields
+        private static final int CAL_FIELD_COUNT;
+
+        // Table for mapping calendar field number to DateFormat.Field
+        private static final Field[] CAL_FIELDS;
+ 
+        // Map for resolving DateFormat.Field by name
+        private static final Map FIELD_NAME_MAP;
+
+        static {
+            GregorianCalendar cal = new GregorianCalendar();
+            CAL_FIELD_COUNT = cal.getFieldCount();
+            CAL_FIELDS = new Field[CAL_FIELD_COUNT];
+            FIELD_NAME_MAP = new HashMap(CAL_FIELD_COUNT);
+        }
+
+        // Java fields -------------------
+
+        /**
+         * Constant identifying the time of day indicator(am/pm).
+         * @stable ICU 3.8
+         */
+        public static final Field AM_PM = new Field("am pm", Calendar.AM_PM);
+
+        /**
+         * Constant identifying the day of month field.
+         * @stable ICU 3.8
+         */
+        public static final Field DAY_OF_MONTH = new Field("day of month", Calendar.DAY_OF_MONTH);
+
+        /**
+         * Constant identifying the day of week field.
+         * @stable ICU 3.8
+         */
+        public static final Field DAY_OF_WEEK = new Field("day of week", Calendar.DAY_OF_WEEK);
+
+        /**
+         * Constant identifying the day of week in month field.
+         * @stable ICU 3.8
+         */
+        public static final Field DAY_OF_WEEK_IN_MONTH = new Field("day of week in month", Calendar.DAY_OF_WEEK_IN_MONTH);
+
+        /**
+         * Constant identifying the day of year field.
+         * @stable ICU 3.8
+         */
+        public static final Field DAY_OF_YEAR = new Field("day of year", Calendar.DAY_OF_YEAR);
+
+        /**
+         * Constant identifying the era field.
+         * @stable ICU 3.8
+         */
+        public static final Field ERA = new Field("era", Calendar.ERA);
+
+        /**
+         * Constant identifying the hour(0-23) of day field.
+         * @stable ICU 3.8
+         */
+        public static final Field HOUR_OF_DAY0 = new Field("hour of day", Calendar.HOUR_OF_DAY);
+
+        /**
+         * Constant identifying the hour(1-24) of day field.
+         * @stable ICU 3.8
+         */
+        public static final Field HOUR_OF_DAY1 = new Field("hour of day 1", -1);
+
+        /**
+         * Constant identifying the hour(0-11) field.
+         * @stable ICU 3.8
+         */
+        public static final Field HOUR0 = new Field("hour", Calendar.HOUR);
+
+        /**
+         * Constant identifying the hour(1-12) field.
+         * @stable ICU 3.8
+         */
+        public static final Field HOUR1 = new Field("hour 1", -1);
+
+        /**
+         * Constant identifying the millisecond field.
+         * @stable ICU 3.8
+         */
+        public static final Field MILLISECOND = new Field("millisecond", Calendar.MILLISECOND);
+
+        /**
+         * Constant identifying the minute field.
+         * @stable ICU 3.8
+         */
+        public static final Field MINUTE = new Field("minute", Calendar.MINUTE);
+
+        /**
+         * Constant identifying the month field.
+         * @stable ICU 3.8
+         */
+        public static final Field MONTH = new Field("month", Calendar.MONTH);
+
+        /**
+         * Constant identifying the second field.
+         * @stable ICU 3.8
+         */
+        public static final Field SECOND = new Field("second", Calendar.SECOND);
+
+        /**
+         * Constant identifying the time zone field.
+         * @stable ICU 3.8
+         */
+        public static final Field TIME_ZONE = new Field("time zone", -1);
+
+        /**
+         * Constant identifying the week of month field.
+         * @stable ICU 3.8
+         */
+        public static final Field WEEK_OF_MONTH = new Field("week of month", Calendar.WEEK_OF_MONTH);
+
+        /**
+         * Constant identifying the week of year field.
+         * @stable ICU 3.8
+         */
+        public static final Field WEEK_OF_YEAR = new Field("week of year", Calendar.WEEK_OF_YEAR);
+
+        /**
+         * Constant identifying the year field.
+         * @stable ICU 3.8
+         */
+        public static final Field YEAR = new Field("year", Calendar.YEAR);
+
+
+        // ICU only fields -------------------
+
+        /**
+         * Constant identifying the local day of week field.
+         * @stable ICU 3.8
+         */
+        public static final Field DOW_LOCAL = new Field("local day of week", Calendar.DOW_LOCAL);
+
+        /**
+         * Constant identifying the extended year field.
+         * @stable ICU 3.8
+         */
+        public static final Field EXTENDED_YEAR = new Field("extended year", Calendar.EXTENDED_YEAR);
+
+        /**
+         * Constant identifying the Julian day field.
+         * @stable ICU 3.8
+         */
+        public static final Field JULIAN_DAY = new Field("Julian day", Calendar.JULIAN_DAY);
+
+        /**
+         * Constant identifying the milliseconds in day field.
+         * @stable ICU 3.8
+         */
+        public static final Field MILLISECONDS_IN_DAY = new Field("milliseconds in day", Calendar.MILLISECONDS_IN_DAY);
+
+        /**
+         * Constant identifying the year used with week of year field.
+         * @stable ICU 3.8
+         */
+        public static final Field YEAR_WOY = new Field("year for week of year", Calendar.YEAR_WOY);
+
+        /**
+         * Constant identifying the quarter field.
+         * @stable ICU 3.8
+         */
+        public static final Field QUARTER = new Field("quarter", -1);
+
+        // Stand alone types are variants for its base types.  So we do not define Field for
+        // them.
+        /*
+        public static final Field STANDALONE_DAY = new Field("stand alone day of week", Calendar.DAY_OF_WEEK);
+        public static final Field STANDALONE_MONTH = new Field("stand alone month", Calendar.MONTH);
+        public static final Field STANDALONE_QUARTER = new Field("stand alone quarter", -1);
+        */
+
+        // Corresponding calendar field
+        private final int calendarField;
+
+        /**
+         * Constructs a <code>DateFormat.Field</code> with the given name and
+         * the <code>Calendar</code> field which this attribute represents.  Use -1 for
+         * <code>calendarField</code> if this field does not have a corresponding
+         * <code>Calendar</code> field.
+         * 
+         * @param name          Name of the attribute
+         * @param calendarField <code>Calendar</code> field constant
+         * 
+         * @stable ICU 3.8
+         */
+        protected Field(String name, int calendarField) {
+            super(name);
+            this.calendarField = calendarField;
+            if (this.getClass() == DateFormat.Field.class) {
+                FIELD_NAME_MAP.put(name, this);
+                if (calendarField >= 0 && calendarField < CAL_FIELD_COUNT) {
+                    CAL_FIELDS[calendarField] = this;
+                }
+            }
+        }
+
+        /**
+         * Returns the <code>Field</code> constant that corresponds to the <code>
+         * Calendar</code> field <code>calendarField</code>.  If there is no
+         * corresponding <code>Field</code> is available, null is returned.
+         * 
+         * @param calendarField <code>Calendar</code> field constant
+         * @return <code>Field</code> associated with the <code>calendarField</code>,
+         * or null if no associated <code>Field</code> is available.
+         * @throws IllegalArgumentException if <code>calendarField</code> is not
+         * a valid <code>Calendar</code> field constant.
+         * 
+         * @stable ICU 3.8
+         */
+        public static DateFormat.Field ofCalendarField(int calendarField) {
+            if (calendarField < 0 || calendarField >= CAL_FIELD_COUNT) {
+                throw new IllegalArgumentException("Calendar field number is out of range");
+            }
+            return CAL_FIELDS[calendarField];
+        }
+        
+        /**
+         * Returns the <code>Calendar</code> field associated with this attribute.
+         * If there is no corresponding <code>Calendar</code> available, this will
+         * return -1.
+         * 
+         * @return <code>Calendar</code> constant for this attribute.
+         * 
+         * @stable ICU 3.8
+         */
+        public int getCalendarField() {
+            return calendarField;
+        }
+        
+        /**
+         * Resolves instances being deserialized to the predefined constants.
+         * 
+         * @throws InvalidObjectException if the constant could not be resolved.
+         * 
+         * @stable ICU 3.8
+         */
+        protected Object readResolve() throws InvalidObjectException {
+            ///CLOVER:OFF
+            if (this.getClass() != DateFormat.Field.class) {
+                throw new InvalidObjectException("A subclass of DateFormat.Field must implement readResolve.");
+            }
+            ///CLOVER:ON
+            Object o = FIELD_NAME_MAP.get(this.getName());
+            ///CLOVER:OFF
+            if (o == null) {
+                throw new InvalidObjectException("Unknown attribute name.");
+            }
+            ///CLOVER:ON
+            return o;
+        }
+    }
+//#endif
+    
+}
diff --git a/src/com/ibm/icu/text/DateFormatSymbols.java b/src/com/ibm/icu/text/DateFormatSymbols.java
new file mode 100644
index 0000000..08c9352
--- /dev/null
+++ b/src/com/ibm/icu/text/DateFormatSymbols.java
@@ -0,0 +1,1706 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.impl.ZoneStringFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * <code>DateFormatSymbols</code> is a public class for encapsulating
+ * localizable date-time formatting data, such as the names of the
+ * months, the names of the days of the week, and the time zone data.
+ * <code>DateFormat</code> and <code>SimpleDateFormat</code> both use
+ * <code>DateFormatSymbols</code> to encapsulate this information.
+ *
+ * <p>
+ * Typically you shouldn't use <code>DateFormatSymbols</code> directly.
+ * Rather, you are encouraged to create a date-time formatter with the
+ * <code>DateFormat</code> class's factory methods: <code>getTimeInstance</code>,
+ * <code>getDateInstance</code>, or <code>getDateTimeInstance</code>.
+ * These methods automatically create a <code>DateFormatSymbols</code> for
+ * the formatter so that you don't have to. After the
+ * formatter is created, you may modify its format pattern using the
+ * <code>setPattern</code> method. For more information about
+ * creating formatters using <code>DateFormat</code>'s factory methods,
+ * see {@link DateFormat}.
+ *
+ * <p>
+ * If you decide to create a date-time formatter with a specific
+ * format pattern for a specific locale, you can do so with:
+ * <blockquote>
+ * <pre>
+ * new SimpleDateFormat(aPattern, new DateFormatSymbols(aLocale)).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * <code>DateFormatSymbols</code> objects are clonable. When you obtain
+ * a <code>DateFormatSymbols</code> object, feel free to modify the
+ * date-time formatting data. For instance, you can replace the localized
+ * date-time format pattern characters with the ones that you feel easy
+ * to remember. Or you can change the representative cities
+ * to your favorite ones.
+ *
+ * <p>
+ * New <code>DateFormatSymbols</code> subclasses may be added to support
+ * <code>SimpleDateFormat</code> for date-time formatting for additional locales.
+
+ * @see          DateFormat
+ * @see          SimpleDateFormat
+ * @see          com.ibm.icu.util.SimpleTimeZone
+ * @author       Chen-Lieh Huang
+ * @stable ICU 2.0
+ */
+public class DateFormatSymbols implements Serializable, Cloneable {
+
+    // TODO make sure local pattern char string is 18 characters long,
+    // that is, that it encompasses the new 'u' char for
+    // EXTENDED_YEAR.  Two options: 1. Make sure resource data is
+    // correct; 2. Make code add in 'u' at end if len == 17.
+
+    // Constants for context
+    /**
+     * Constant for context.
+     * @stable ICU 3.6
+     */
+    public static final int FORMAT = 0;
+
+    /**
+     * Constant for context.
+     * @stable ICU 3.6
+     */
+    public static final int STANDALONE = 1;
+
+    /**
+     * Constant for context.
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int DT_CONTEXT_COUNT = 2;
+
+    // Constants for width
+
+    /**
+     * Constant for width.
+     * @stable ICU 3.6
+     */
+    public static final int ABBREVIATED = 0;
+
+    /**
+     * Constant for width.
+     * @stable ICU 3.6
+     */
+    public static final int WIDE = 1;
+
+    /**
+     * Constant for width.
+     * @stable ICU 3.6
+     */
+    public static final int NARROW = 2;
+
+    /**
+     * Constant for width.
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int DT_WIDTH_COUNT = 3;
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the default locale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the default locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols()
+    {
+        this(ULocale.getDefault());
+    }
+    
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given locale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the specified locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols(Locale locale)
+    {
+        this(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given ulocale.
+     *
+     * @throws  java.util.MissingResourceException
+     *          if the resources for the specified locale cannot be
+     *          found or cannot be loaded.
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(ULocale locale)
+    {
+        initializeData(locale, getCalendarType(locale));
+    }
+
+    /**
+     * Gets a DateFormatSymbols instance for the default locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DateFormatSymbols()</code>.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return A DateFormatSymbols instance.
+     * @stable ICU 3.8
+     */
+    public static DateFormatSymbols getInstance() {
+        return new DateFormatSymbols();
+    }
+
+    /**
+     * Gets a DateFormatSymbols instance for the given locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DateFormatSymbols(locale)</code>.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @param locale the locale.
+     * @return A DateFormatSymbols instance.
+     * @stable ICU 3.8
+     */
+    public static DateFormatSymbols getInstance(Locale locale) {
+        return new DateFormatSymbols(locale);
+    }
+
+    /**
+     * Gets a DateFormatSymbols instance for the given locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DateFormatSymbols(locale)</code>.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @param locale the locale.
+     * @return A DateFormatSymbols instance.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static DateFormatSymbols getInstance(ULocale locale) {
+        return new DateFormatSymbols(locale);
+    }
+
+    /**
+     * Returns an array of all locales for which the <code>getInstance</code> methods of this
+     * class can return localized instances.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getAvailableLocales</code>,
+     * this method simply returns the array of <code>Locale</code>s available in this class.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return An array of <code>Locale</code>s for which localized <code>DateFormatSymbols</code> instances are available.
+     * @stable ICU 3.8
+     */
+    public static Locale[] getAvailableLocales() {
+        return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+
+    /**
+     * Returns an array of all locales for which the <code>getInstance</code> methods of this
+     * class can return localized instances.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DateFormatSymbols#getAvailableLocales</code>,
+     * this method simply returns the array of <code>ULocale</code>s available in this class.
+     * ICU does not support <code>DateFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return An array of <code>ULocale</code>s for which localized <code>DateFormatSymbols</code> instances are available.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+        return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);        
+    }
+    
+    /**
+     * Era strings. For example: "AD" and "BC".  An array of 2 strings,
+     * indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
+     * @serial
+     */
+    String eras[] = null;
+
+    /**
+     * Era name strings. For example: "Anno Domini" and "Before Christ".  An array of 2 strings,
+     * indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
+     * @serial
+     */
+    String eraNames[] = null;
+    
+    /**
+     * Narrow era names. For example: "A" and "B". An array of 2 strings,
+     * indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
+     * @serial
+     */
+    String narrowEras[] = null;
+
+    /**
+     * Month strings. For example: "January", "February", etc.  An array
+     * of 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+     * @serial
+     */
+    String months[] = null;
+
+    /**
+     * Short month strings. For example: "Jan", "Feb", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String shortMonths[] = null;
+
+    /**
+     * Narrow month strings. For example: "J", "F", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String narrowMonths[] = null;
+
+    /**
+     * Standalone month strings. For example: "January", "February", etc.  An array
+     * of 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+     * @serial
+     */
+    String standaloneMonths[] = null;
+
+    /**
+     * Standalone short month strings. For example: "Jan", "Feb", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String standaloneShortMonths[] = null;
+
+    /**
+     * Standalone narrow month strings. For example: "J", "F", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String standaloneNarrowMonths[] = null;
+
+    /**
+     * Weekday strings. For example: "Sunday", "Monday", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>weekdays[0]</code> is ignored.
+     * @serial
+     */
+    String weekdays[] = null;
+
+    /**
+     * Short weekday strings. For example: "Sun", "Mon", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>shortWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String shortWeekdays[] = null;
+
+    /**
+     * Narrow weekday strings. For example: "S", "M", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>narrowWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String narrowWeekdays[] = null;
+
+    /**
+     * Standalone weekday strings. For example: "Sunday", "Monday", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>standaloneWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String standaloneWeekdays[] = null;
+
+    /**
+     * Standalone short weekday strings. For example: "Sun", "Mon", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>standaloneShortWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String standaloneShortWeekdays[] = null;
+
+    /**
+     * Standalone narrow weekday strings. For example: "S", "M", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>standaloneNarrowWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String standaloneNarrowWeekdays[] = null;
+
+    /**
+     * AM and PM strings. For example: "AM" and "PM".  An array of
+     * 2 strings, indexed by <code>Calendar.AM</code> and
+     * <code>Calendar.PM</code>.
+     * @serial
+     */
+    String ampms[] = null;
+    
+    /**
+     * Abbreviated quarter names. For example: "Q1", "Q2", "Q3", "Q4". An array
+     * of 4 strings indexed by the month divided by 3.
+     * @serial
+     */
+    String shortQuarters[] = null;
+    
+    /**
+     * Full quarter names. For example: "1st Quarter", "2nd Quarter", "3rd Quarter",
+     * "4th Quarter". An array of 4 strings, indexed by the month divided by 3.
+     * @serial
+     */
+    String quarters[] = null;
+    
+    /**
+     * Standalone abbreviated quarter names. For example: "Q1", "Q2", "Q3", "Q4". An array
+     * of 4 strings indexed by the month divided by 3.
+     * @serial
+     */
+    String standaloneShortQuarters[] = null;
+    
+    /**
+     * Standalone full quarter names. For example: "1st Quarter", "2nd Quarter", "3rd Quarter",
+     * "4th Quarter". An array of 4 strings, indexed by the month divided by 3.
+     * @serial
+     */
+    String standaloneQuarters[] = null;
+
+    /**
+     * Pattern string used for localized time zone GMT format.  For example, "GMT{0}"
+     * @serial
+     */
+    String gmtFormat = null;
+
+    /**
+     * Pattern strings used for formatting zone offset in a localized time zone GMT string.
+     * This is 2x2 String array holding followings
+     * [0][0] Negative H + m + s
+     * [0][1] Negative H + m
+     * [1][0] Positive H + m + s
+     * [1][1] Positive H + m
+     * @serial
+     */
+    String gmtHourFormats[][] = null;
+
+    /**
+     * Localized names of time zones in this locale.  This is a
+     * two-dimensional array of strings of size <em>n</em> by <em>m</em>,
+     * where <em>m</em> is at least 5 and up to 7.  Each of the <em>n</em> rows is an
+     * entry containing the localized names for a single <code>TimeZone</code>.
+     * Each such row contains (with <code>i</code> ranging from
+     * 0..<em>n</em>-1):
+     * <ul>
+     * <li><code>zoneStrings[i][0]</code> - time zone ID</li>
+     * <li><code>zoneStrings[i][1]</code> - long name of zone in standard
+     * time</li>
+     * <li><code>zoneStrings[i][2]</code> - short name of zone in
+     * standard time</li>
+     * <li><code>zoneStrings[i][3]</code> - long name of zone in daylight
+     * savings time</li>
+     * <li><code>zoneStrings[i][4]</code> - short name of zone in daylight
+     * savings time</li>
+     * <li><code>zoneStrings[i][5]</code> - location name of zone</li>
+     * <li><code>zoneStrings[i][6]</code> - long generic name of zone</li>
+     * <li><code>zoneStrings[i][7]</code> - short generic of zone</li>
+     * The zone ID is <em>not</em> localized; it corresponds to the ID
+     * value associated with a system time zone object.  All other entries
+     * are localized names.  If a zone does not implement daylight savings
+     * time, the daylight savings time names are ignored.
+     * <em>Note:</em>CLDR 1.5 introduced metazone and its historical mappings.
+     * This simple two-dimensional array is no longer sufficient to represent
+     * localized names and its historic changes.  Since ICU 3.8.1, localized
+     * zone names extracted from ICU locale data is stored in a ZoneStringFormat
+     * instance.  But we still need to support the old way of customizing
+     * localized zone names, so we keep this field for the purpose.
+     * @see com.ibm.icu.util.TimeZone
+     * @serial
+     */
+     private String zoneStrings[][] = null;
+
+     /**
+      * Since ICU 3.8.1, we use ZoneStringFormat to access localized
+      * zone names.  This field remains null unless setZoneStrings is
+      * called.
+      */
+     private transient ZoneStringFormat zsformat = null;
+
+     /**
+     * Unlocalized date-time pattern characters. For example: 'y', 'd', etc.
+     * All locales use the same unlocalized pattern characters.
+     */
+    static final String  patternChars = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV";
+
+    /**
+     * Localized date-time pattern characters. For example, a locale may
+     * wish to use 'u' rather than 'y' to represent years in its date format
+     * pattern strings.
+     * This string must be exactly 18 characters long, with the index of
+     * the characters described by <code>DateFormat.ERA_FIELD</code>,
+     * <code>DateFormat.YEAR_FIELD</code>, etc.  Thus, if the string were
+     * "Xz...", then localized patterns would use 'X' for era and 'z' for year.
+     * @serial
+     */
+    String  localPatternChars = null;
+
+    /* use serialVersionUID from JDK 1.1.4 for interoperability */
+    private static final long serialVersionUID = -5987973545549424702L;
+
+    /**
+     * Gets era strings. For example: "AD" and "BC".
+     * @return the era strings.
+     * @stable ICU 2.0
+     */
+    public String[] getEras() {
+        return duplicate(eras);
+    }
+
+    /**
+     * Sets era strings. For example: "AD" and "BC".
+     * @param newEras the new era strings.
+     * @stable ICU 2.0
+     */
+    public void setEras(String[] newEras) {
+        eras = duplicate(newEras);
+    }
+
+    /**
+     * Gets era name strings. For example: "Anno Domini" and "Before Christ".
+     * @return the era strings.
+     * @stable ICU 3.4
+     */
+    public String[] getEraNames() {
+        return duplicate(eraNames);
+    }
+
+    /**
+     * Sets era name strings. For example: "Anno Domini" and "Before Christ".
+     * @param newEraNames the new era strings.
+     * @stable ICU 3.8
+     */
+    public void setEraNames(String[] newEraNames) {
+        eraNames = duplicate(newEraNames);
+    }
+
+    /**
+     * Gets month strings. For example: "January", "February", etc.
+     * @return the month strings.
+     * @stable ICU 2.0
+     */
+    public String[] getMonths() {
+        return duplicate(months);
+    }
+
+    /**
+     * Gets month strings. For example: "January", "February", etc.
+     * @param context    The month context, FORMAT or STANDALONE.
+     * @param width      The width or the returned month string,
+     *                   either WIDE, ABBREVIATED, or NARROW.
+     * @return the month strings.
+     * @stable ICU 3.4
+     */
+    public String[] getMonths(int context, int width) {
+        String [] returnValue = null;
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    returnValue = months;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = shortMonths;
+                    break;
+                 case NARROW :
+                    returnValue = narrowMonths;
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    returnValue = standaloneMonths;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = standaloneShortMonths;
+                    break;
+                 case NARROW :
+                    returnValue = standaloneNarrowMonths;
+                    break;
+              }
+              break;
+        }
+        return duplicate(returnValue);
+    }
+
+    /**
+     * Sets month strings. For example: "January", "February", etc.
+     * @param newMonths the new month strings.
+     * @stable ICU 2.0
+     */
+    public void setMonths(String[] newMonths) {
+        months = duplicate(newMonths);
+    }
+
+    /**
+     * Sets month strings. For example: "January", "February", etc.
+     * @param newMonths the new month strings.
+     * @param context    The formatting context, FORMAT or STANDALONE.
+     * @param width      The width of the month string,
+     *                   either WIDE, ABBREVIATED, or NARROW.
+     * @stable ICU 3.8
+     */
+    public void setMonths(String[] newMonths, int context, int width) {
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    months = duplicate(newMonths);
+                    break;
+                 case ABBREVIATED :
+                    shortMonths = duplicate(newMonths);
+                    break;
+                 case NARROW :
+                    narrowMonths = duplicate(newMonths);
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    standaloneMonths = duplicate(newMonths);
+                    break;
+                 case ABBREVIATED :
+                    standaloneShortMonths = duplicate(newMonths);
+                    break;
+                 case NARROW :
+                    standaloneNarrowMonths = duplicate(newMonths);
+                    break;
+              }
+              break;
+        }
+    }
+    
+    /**
+     * Gets short month strings. For example: "Jan", "Feb", etc.
+     * @return the short month strings.
+     * @stable ICU 2.0
+     */
+    public String[] getShortMonths() {
+        return duplicate(shortMonths);
+    }
+
+    /**
+     * Sets short month strings. For example: "Jan", "Feb", etc.
+     * @param newShortMonths the new short month strings.
+     * @stable ICU 2.0
+     */
+    public void setShortMonths(String[] newShortMonths) {
+        shortMonths = duplicate(newShortMonths);
+    }
+
+    /**
+     * Gets weekday strings. For example: "Sunday", "Monday", etc.
+     * @return the weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @stable ICU 2.0
+     */
+    public String[] getWeekdays() {
+        return duplicate(weekdays);
+    }
+
+    /**
+     * Gets weekday strings. For example: "Sunday", "Monday", etc.
+     * @return the weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @param context    Formatting context, either FORMAT or STANDALONE.
+     * @param width      Width of strings to be returned, either
+     *                   WIDE, ABBREVIATED, or NARROW
+     * @stable ICU 3.4
+     */
+    public String[] getWeekdays(int context, int width) {
+        String [] returnValue = null;
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    returnValue = weekdays;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = shortWeekdays;
+                    break;
+                 case NARROW :
+                    returnValue = narrowWeekdays;
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    returnValue = standaloneWeekdays;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = standaloneShortWeekdays;
+                    break;
+                 case NARROW :
+                    returnValue = standaloneNarrowWeekdays;
+                    break;
+              }
+              break;
+        }
+        return duplicate(returnValue);
+    }
+
+    /**
+     * Sets weekday strings. For example: "Sunday", "Monday", etc.
+     * @param newWeekdays The new weekday strings.
+     * @param context     The formatting context, FORMAT or STANDALONE.
+     * @param width       The width of the strings,
+     *                    either WIDE, ABBREVIATED, or NARROW.
+     * @stable ICU 3.8
+     */
+    public void setWeekdays(String[] newWeekdays, int context, int width) {
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    weekdays = duplicate(newWeekdays);
+                    break;
+                 case ABBREVIATED :
+                    shortWeekdays = duplicate(newWeekdays);
+                    break;
+                 case NARROW :
+                    narrowWeekdays = duplicate(newWeekdays);
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    standaloneWeekdays = duplicate(newWeekdays);
+                    break;
+                 case ABBREVIATED :
+                    standaloneShortWeekdays = duplicate(newWeekdays);
+                    break;
+                 case NARROW :
+                    standaloneNarrowWeekdays = duplicate(newWeekdays);
+                    break;
+              }
+              break;
+        }
+    }
+
+    /**
+     * Sets weekday strings. For example: "Sunday", "Monday", etc.
+     * @param newWeekdays the new weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * @stable ICU 2.0
+     */
+    public void setWeekdays(String[] newWeekdays) {
+        weekdays = duplicate(newWeekdays);
+    }
+
+    /**
+     * Gets short weekday strings. For example: "Sun", "Mon", etc.
+     * @return the short weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     * @stable ICU 2.0
+     */
+    public String[] getShortWeekdays() {
+        return duplicate(shortWeekdays);
+    }
+
+    /**
+     * Sets short weekday strings. For example: "Sun", "Mon", etc.
+     * @param newShortWeekdays the new short weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * @stable ICU 2.0
+     */
+    public void setShortWeekdays(String[] newShortWeekdays) {
+        shortWeekdays = duplicate(newShortWeekdays);
+    }
+    /**
+     * Gets quarter strings. For example: "1st Quarter", "2nd Quarter", etc.
+     * @param context    The quarter context, FORMAT or STANDALONE.
+     * @param width      The width or the returned quarter string,
+     *                   either WIDE or ABBREVIATED. There are no NARROW quarters.
+     * @return the quarter strings.
+     * @stable ICU 3.6
+     */
+    public String[] getQuarters(int context, int width) {
+        String [] returnValue = null;
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    returnValue = quarters;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = shortQuarters;
+                    break;
+                 case NARROW :
+                     returnValue = null;
+                     break;
+              }
+              break;
+              
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    returnValue = standaloneQuarters;
+                    break;
+                 case ABBREVIATED :
+                    returnValue = standaloneShortQuarters;
+                    break;
+                 case NARROW: 
+                     returnValue = null;
+                     break;
+              }
+              break;
+        }
+        return duplicate(returnValue);
+    }
+
+    /**
+     * Sets quarter strings. For example: "1st Quarter", "2nd Quarter", etc.
+     * @param newQuarters the new quarter strings.
+     * @param context    The formatting context, FORMAT or STANDALONE.
+     * @param width      The width of the quarter string,
+     *                   either WIDE or ABBREVIATED. There are no NARROW quarters.
+     * @stable ICU 3.8
+     */
+    public void setQuarters(String[] newQuarters, int context, int width) {
+        switch (context) {
+           case FORMAT :
+              switch(width) {
+                 case WIDE :
+                    quarters = duplicate(newQuarters);
+                    break;
+                 case ABBREVIATED :
+                    shortQuarters = duplicate(newQuarters);
+                    break;
+                 case NARROW :
+                    //narrowQuarters = duplicate(newQuarters);
+                    break;
+              }
+              break;
+           case STANDALONE :
+              switch(width) {
+                 case WIDE :
+                    standaloneQuarters = duplicate(newQuarters);
+                    break;
+                 case ABBREVIATED :
+                    standaloneShortQuarters = duplicate(newQuarters);
+                    break;
+                 case NARROW :
+                    //standaloneNarrowQuarters = duplicate(newQuarters);
+                    break;
+              }
+              break;
+        }
+    }
+
+    /**
+     * Gets ampm strings. For example: "AM" and "PM".
+     * @return the weekday strings.
+     * @stable ICU 2.0
+     */
+    public String[] getAmPmStrings() {
+        return duplicate(ampms);
+    }
+
+    /**
+     * Sets ampm strings. For example: "AM" and "PM".
+     * @param newAmpms the new ampm strings.
+     * @stable ICU 2.0
+     */
+    public void setAmPmStrings(String[] newAmpms) {
+        ampms = duplicate(newAmpms);
+    }
+
+    /**
+     * Gets timezone strings.
+     * @return the timezone strings.
+     * @stable ICU 2.0
+     */
+    public String[][] getZoneStrings() {
+        if (zoneStrings != null) {
+            return duplicate(zoneStrings);
+        }
+        return ZoneStringFormat.getInstance(requestedLocale).getZoneStrings();
+    }
+
+    /**
+     * Sets timezone strings.
+     * @param newZoneStrings the new timezone strings.
+     * @stable ICU 2.0
+     */
+    public void setZoneStrings(String[][] newZoneStrings) {
+        zoneStrings = duplicate(newZoneStrings);
+        zsformat = new ZoneStringFormat(zoneStrings);
+    }
+
+    /**
+     * Gets localized date-time pattern characters. For example: 'u', 't', etc.
+     * <p>
+     * Note: ICU no longer provides localized date-time pattern characters for a locale
+     * starting ICU 3.8.  This method returns the non-localized date-time pattern
+     * characters unless user defined localized data is set by setLocalPatternChars.
+     * @return the localized date-time pattern characters.
+     * @stable ICU 2.0
+     */
+    public String getLocalPatternChars() {
+        return new String(localPatternChars);
+    }
+
+    /**
+     * Sets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @param newLocalPatternChars the new localized date-time
+     * pattern characters.
+     * @stable ICU 2.0
+     */
+    public void setLocalPatternChars(String newLocalPatternChars) {
+        localPatternChars = newLocalPatternChars;
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        try {
+            DateFormatSymbols other = (DateFormatSymbols)super.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            ///CLOVER:OFF
+            throw new IllegalStateException();
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * Override hashCode.
+     * Generates a hash code for the DateFormatSymbols object.
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        // Is this sufficient?
+        return requestedLocale.toString().hashCode();
+    }
+
+    /**
+     * Override equals
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DateFormatSymbols that = (DateFormatSymbols) obj;
+        return (Utility.arrayEquals(eras, that.eras)
+                && Utility.arrayEquals(eraNames, that.eraNames)
+                && Utility.arrayEquals(months, that.months)
+                && Utility.arrayEquals(shortMonths, that.shortMonths)
+                && Utility.arrayEquals(narrowMonths, that.narrowMonths)
+                && Utility.arrayEquals(standaloneMonths, that.standaloneMonths)
+                && Utility.arrayEquals(standaloneShortMonths, that.standaloneShortMonths)
+                && Utility.arrayEquals(standaloneNarrowMonths, that.standaloneNarrowMonths)
+                && Utility.arrayEquals(weekdays, that.weekdays)
+                && Utility.arrayEquals(shortWeekdays, that.shortWeekdays)
+                && Utility.arrayEquals(narrowWeekdays, that.narrowWeekdays)
+                && Utility.arrayEquals(standaloneWeekdays, that.standaloneWeekdays)
+                && Utility.arrayEquals(standaloneShortWeekdays, that.standaloneShortWeekdays)
+                && Utility.arrayEquals(standaloneNarrowWeekdays, that.standaloneNarrowWeekdays)
+                && Utility.arrayEquals(ampms, that.ampms)
+                && gmtFormat.equals(that.gmtFormat)
+                && arrayOfArrayEquals(gmtHourFormats, that.gmtHourFormats)
+                && arrayOfArrayEquals(zoneStrings, that.zoneStrings)
+                // getDiplayName maps deprecated country and language codes to the current ones
+                // too bad there is no way to get the current codes!
+                // I thought canolicalize() would map the codes but .. alas! it doesn't.
+                && requestedLocale.getDisplayName().equals(that.requestedLocale.getDisplayName())
+                && Utility.arrayEquals(localPatternChars,
+                                       that.localPatternChars));
+    }
+
+    // =======================privates===============================
+
+    /*
+     * Useful constant for defining timezone offsets.
+     */
+    static final int millisPerHour = 60*60*1000;
+
+    // DateFormatSymbols cache
+    private static ICUCache DFSCACHE = new SimpleCache();
+
+    /**
+     * Initialize format symbols for the locale and calendar type
+     * @param desiredLocale The locale whose symbols are desired.
+     * @param type          The calendar type whose date format symbols are desired.
+     * @stable ICU 3.0
+     */
+    //TODO: This protected seems to be marked as @stable accidentally.
+    // We may need to deescalate this API to @internal.
+    protected void initializeData(ULocale desiredLocale, String type)
+    {
+        String key = desiredLocale.toString() + "+" + type;
+        DateFormatSymbols dfs = (DateFormatSymbols)DFSCACHE.get(key);
+        if (dfs == null) {
+            // Initialize data from scratch put a clone of this instance into the cache
+            CalendarData calData = new CalendarData(desiredLocale, type);
+            initializeData(desiredLocale, calData);
+            dfs = (DateFormatSymbols)this.clone();
+            DFSCACHE.put(key, dfs);
+        } else {
+            initializeData(dfs);
+        }
+    }
+
+    /* 
+     * Initialize format symbols using another instance.
+     * 
+     * TODO Clean up initialization methods for subclasses
+     */
+    void initializeData(DateFormatSymbols dfs) {
+        this.eras = dfs.eras;
+        this.eraNames = dfs.eraNames;
+        this.narrowEras = dfs.narrowEras;
+        this.months = dfs.months;
+        this.shortMonths = dfs.shortMonths;
+        this.narrowMonths = dfs.narrowMonths;
+        this.standaloneMonths = dfs.standaloneMonths;
+        this.standaloneShortMonths = dfs.standaloneShortMonths;
+        this.standaloneNarrowMonths = dfs.standaloneNarrowMonths;
+        this.weekdays = dfs.weekdays;
+        this.shortWeekdays = dfs.shortWeekdays;
+        this.narrowWeekdays = dfs.narrowWeekdays;
+        this.standaloneWeekdays = dfs.standaloneWeekdays;
+        this.standaloneShortWeekdays = dfs.standaloneShortWeekdays;
+        this.standaloneNarrowWeekdays = dfs.standaloneNarrowWeekdays;
+        this.ampms = dfs.ampms;
+        this.shortQuarters = dfs.shortQuarters;
+        this.quarters = dfs.quarters;
+        this.standaloneShortQuarters = dfs.standaloneShortQuarters;
+        this.standaloneQuarters = dfs.standaloneQuarters;
+
+        this.gmtFormat = dfs.gmtFormat;
+        this.gmtHourFormats = dfs.gmtHourFormats;
+
+        this.zoneStrings = dfs.zoneStrings; // always null at initialization time for now
+        this.localPatternChars = dfs.localPatternChars;
+
+        this.actualLocale = dfs.actualLocale;
+        this.validLocale = dfs.validLocale;
+        this.requestedLocale = dfs.requestedLocale;
+    }
+
+    /**
+     * Initialize format symbols for the locale and calendar type
+     * @param desiredLocale The locale whose symbols are desired.
+     * @param calData       The calendar resource data
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    // This API was accidentally marked as @stable ICU 3.0 formerly.
+    protected void initializeData(ULocale desiredLocale, CalendarData calData)
+    {
+        // FIXME: cache only ResourceBundle. Hence every time, will do
+        // getObject(). This won't be necessary if the Resource itself
+        // is cached.
+        eras = calData.getEras("abbreviated");
+
+        try {
+           eraNames = calData.getEras("wide");
+        }
+        catch (MissingResourceException e) {
+           eraNames = calData.getEras("abbreviated");
+        }
+        
+        // NOTE: since the above code assumes that abbreviated
+        // era names exist, we make the same assumption here too.
+        try {
+            narrowEras = calData.getEras("narrow");
+        } catch (MissingResourceException e) {
+            narrowEras = calData.getEras("abbreviated");
+        }
+
+        months = calData.getStringArray("monthNames", "wide");
+        shortMonths = calData.getStringArray("monthNames", "abbreviated");
+
+        try {
+           narrowMonths = calData.getStringArray("monthNames", "narrow");
+        } 
+        catch (MissingResourceException e) {
+            try {
+                narrowMonths = calData.getStringArray("monthNames", "stand-alone", "narrow");
+            }
+            catch (MissingResourceException e1) {
+               narrowMonths = calData.getStringArray("monthNames", "abbreviated");
+            }
+        }
+
+        try {
+           standaloneMonths = calData.getStringArray("monthNames", "stand-alone", "wide");
+        } 
+        catch (MissingResourceException e) {
+           standaloneMonths = calData.getStringArray("monthNames", "format", "wide");
+        }
+
+        try {
+           standaloneShortMonths = calData.getStringArray("monthNames", "stand-alone", "abbreviated");
+        } 
+        catch (MissingResourceException e) {
+           standaloneShortMonths = calData.getStringArray("monthNames", "format", "abbreviated");
+        }
+
+        try {
+           standaloneNarrowMonths = calData.getStringArray("monthNames", "stand-alone", "narrow");
+        } 
+        catch (MissingResourceException e) {
+           try {
+              standaloneNarrowMonths = calData.getStringArray("monthNames", "format", "narrow");
+           }
+           catch (MissingResourceException e1) {
+              standaloneNarrowMonths = calData.getStringArray("monthNames", "format", "abbreviated");
+           }
+        }
+
+        String[] lWeekdays = calData.getStringArray("dayNames", "wide");
+        weekdays = new String[8];
+        weekdays[0] = "";  // 1-based
+        System.arraycopy(lWeekdays, 0, weekdays, 1, lWeekdays.length);
+
+        String[] sWeekdays = calData.getStringArray("dayNames", "abbreviated");
+        shortWeekdays = new String[8];
+        shortWeekdays[0] = "";  // 1-based
+        System.arraycopy(sWeekdays, 0, shortWeekdays, 1, sWeekdays.length);
+
+        String [] nWeekdays = null;
+        try {
+           nWeekdays = calData.getStringArray("dayNames", "narrow");
+        }
+        catch (MissingResourceException e) {
+            try {
+                nWeekdays = calData.getStringArray("dayNames", "stand-alone", "narrow");
+            }
+            catch (MissingResourceException e1) {
+                nWeekdays = calData.getStringArray("dayNames", "abbreviated");
+            }
+        }
+        narrowWeekdays = new String[8];
+        narrowWeekdays[0] = "";  // 1-based
+        System.arraycopy(nWeekdays, 0, narrowWeekdays, 1, nWeekdays.length);
+
+        String [] saWeekdays = null;
+        try {
+           saWeekdays = calData.getStringArray("dayNames", "stand-alone", "wide");
+        }
+        catch (MissingResourceException e) {
+           saWeekdays = calData.getStringArray("dayNames", "format", "wide");
+        }
+        standaloneWeekdays = new String[8];
+        standaloneWeekdays[0] = "";  // 1-based
+        System.arraycopy(saWeekdays, 0, standaloneWeekdays, 1, saWeekdays.length);
+
+        String [] ssWeekdays = null;
+        try {
+           ssWeekdays = calData.getStringArray("dayNames", "stand-alone", "abbreviated");
+        }
+        catch (MissingResourceException e) {
+           ssWeekdays = calData.getStringArray("dayNames", "format", "abbreviated");
+        }
+        standaloneShortWeekdays = new String[8];
+        standaloneShortWeekdays[0] = "";  // 1-based
+        System.arraycopy(ssWeekdays, 0, standaloneShortWeekdays, 1, ssWeekdays.length);
+
+        String [] snWeekdays = null;
+        try {
+           snWeekdays = calData.getStringArray("dayNames", "stand-alone", "narrow");
+        }
+        catch (MissingResourceException e) {
+           try {
+              snWeekdays = calData.getStringArray("dayNames", "format", "narrow");
+           }
+           catch (MissingResourceException e1) {
+              snWeekdays = calData.getStringArray("dayNames", "format", "abbreviated");
+           }
+        }
+        standaloneNarrowWeekdays = new String[8];
+        standaloneNarrowWeekdays[0] = "";  // 1-based
+        System.arraycopy(snWeekdays, 0, standaloneNarrowWeekdays, 1, snWeekdays.length);
+
+        ampms = calData.getStringArray("AmPmMarkers");
+        
+        quarters = calData.getStringArray("quarters", "wide");
+        shortQuarters = calData.getStringArray("quarters", "abbreviated");
+
+        try {
+           standaloneQuarters = calData.getStringArray("quarters", "stand-alone", "wide");
+        } 
+        catch (MissingResourceException e) {
+           standaloneQuarters = calData.getStringArray("quarters", "format", "wide");
+        }
+
+        try {
+           standaloneShortQuarters = calData.getStringArray("quarters", "stand-alone", "abbreviated");
+        } 
+        catch (MissingResourceException e) {
+            standaloneShortQuarters = calData.getStringArray("quarters", "format", "abbreviated");
+        }
+
+        // Initialize localized GMT format patterns
+        initializeGMTFormat(desiredLocale);
+
+        requestedLocale = desiredLocale;
+
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, desiredLocale);
+
+        // Because localized date/time pattern characters will be obsolete in CLDR,
+        // we decided not to maintain localized pattern characters in ICU any more.
+        // We always use the base pattern characters by default. (ticket#5597)
+
+        //localPatternChars = rb.getString("localPatternChars");
+        localPatternChars = patternChars;
+
+        // TODO: obtain correct actual/valid locale later
+        ULocale uloc = rb.getULocale();
+        setLocale(uloc, uloc);
+    }
+
+    static final String DEFAULT_GMT_PATTERN = "GMT{0}";
+    static final String[][] DEFAULT_GMT_HOUR_PATTERNS = {
+        {"-HH:mm:ss", "-HH:mm"},
+        {"+HH:mm:ss", "+HH:mm"}
+    };
+
+    /*
+     * Initialize localized GMT format patterns
+     */
+    private void initializeGMTFormat(ULocale desiredLocale) {
+        // TimeZone format localization is not included in CalendarData
+        gmtFormat = ZoneMeta.getTZLocalizationInfo(desiredLocale, ZoneMeta.GMT);
+        if (gmtFormat == null) {
+            gmtFormat = DEFAULT_GMT_PATTERN;
+        }
+
+        try {
+            String offsetHM = ZoneMeta.getTZLocalizationInfo(desiredLocale, ZoneMeta.HOUR);
+            gmtHourFormats = new String[2][2];
+            int sepIdx = offsetHM.indexOf(';');
+            if (sepIdx != -1) {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] = offsetHM.substring(0, sepIdx);
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] = offsetHM.substring(sepIdx + 1);
+            } else {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] = "+HH:mm";
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] = "-HH:mm";
+            }
+            // CLDR 1.5 does not have GMT offset pattern including second field.
+            // For now, append "ss" to the end.
+            if (gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM].indexOf(':') != -1) {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] + ":ss";
+            } else if (gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM].indexOf('.') != -1) {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] + ".ss";
+            } else {
+                gmtHourFormats[OFFSET_POSITIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_POSITIVE][OFFSET_HM] + "ss";
+            }
+            if (gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM].indexOf(':') != -1) {
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] + ":ss";
+            } else if (gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM].indexOf('.') != -1) {
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] + ".ss";
+            } else {
+                gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HMS] = gmtHourFormats[OFFSET_NEGATIVE][OFFSET_HM] + "ss";
+            }
+        } catch (MissingResourceException e) {
+            gmtHourFormats = DEFAULT_GMT_HOUR_PATTERNS;
+        }
+    }
+
+    private static final boolean arrayOfArrayEquals(Object[][] aa1, Object[][]aa2) {
+        if (aa1 == aa2) { // both are null
+            return true;
+        }
+        if (aa1 == null || aa2 == null) { // one is null and the other is not
+            return false;
+        }
+        if (aa1.length != aa2.length) {
+            return false;
+        }
+        boolean equal = true;
+        for (int i = 0; i < aa1.length; i++) {
+            equal = Utility.arrayEquals(aa1[i], aa2[i]);
+            if (!equal) {
+                break;
+            }
+        }
+        return equal;
+    }
+
+    /*
+     * Package local method (for now) to get localized GMT format pattern.
+     */
+    String getGmtFormat() {
+        return gmtFormat;
+    }
+
+    static final int OFFSET_HMS = 0;
+    static final int OFFSET_HM = 1;
+    static final int OFFSET_NEGATIVE = 0;
+    static final int OFFSET_POSITIVE = 1;
+
+    /*
+     * Package local method (for now) to get hour format pattern used by localized
+     * GMT string.
+     */
+    String getGmtHourFormat(int sign, int width) {
+        return gmtHourFormats[sign][width];
+    }
+
+    /*
+     * Package local method to access ZoneStringFormat used by this
+     * DateFormatSymbols instance.
+     */
+    ZoneStringFormat getZoneStringFormat() {
+        if (zsformat != null) {
+            return zsformat;
+        }
+        if (zoneStrings != null) {
+            zsformat = new ZoneStringFormat(zoneStrings);
+            return zsformat;
+        }
+        // We do not want to hold the reference to an instance of
+        // ZoneStringFormat.  An instance of ZoneStringFormat for
+        // a locale is shared and cached in ZoneStringFormat class
+        // itself.
+        return ZoneStringFormat.getInstance(requestedLocale);
+    }
+
+    /*
+     * save the input locale
+     */
+    private ULocale requestedLocale; 
+ 
+    /*
+     * Clones an array of Strings.
+     * @param srcArray the source array to be cloned.
+     * @return a cloned array.
+     */
+    private final String[] duplicate(String[] srcArray)
+    {
+        return (String[])srcArray.clone();
+    }
+
+    private final String[][] duplicate(String[][] srcArray)
+    {
+        String[][] aCopy = new String[srcArray.length][];
+        for (int i = 0; i < srcArray.length; ++i)
+            aCopy[i] = duplicate(srcArray[i]);
+        return aCopy;
+    }
+
+    /*
+     * Compares the equality of the two arrays of String.
+     * @param current this String array.
+     * @param other that String array.
+    private final boolean equals(String[] current, String[] other)
+    {
+        int count = current.length;
+
+        for (int i = 0; i < count; ++i)
+            if (!current[i].equals(other[i]))
+                return false;
+        return true;
+    }
+     */
+
+    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    /**
+     * Get the {@link DateFormatSymbols} object that should be used to format a
+     * calendar system's dates in the given locale.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * When creating a new Calendar subclass, you must create the
+     * {@link ResourceBundle ResourceBundle}
+     * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place.
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * Within the ResourceBundle, this method searches for five keys:
+     * <ul>
+     * <li><b>DayNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>DAY_OF_WEEK</code> field.  Even though
+     *      <code>DAY_OF_WEEK</code> starts with <code>SUNDAY</code> = 1,
+     *      This array is 0-based; the name for Sunday goes in the
+     *      first position, at index 0.  If this key is not found
+     *      in the bundle, the day names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>DayAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "DayNames" array.  If this key
+     *      is not found in the resource bundle, the "DayNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>MonthNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>MONTH</code> field.  If this key is not found
+     *      in the bundle, the month names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>MonthAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "MonthNames" array.  If this key
+     *      is not found in the resource bundle, the "MonthNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>Eras</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>ERA</code> field.  If this key is not found
+     *      in the bundle, the era names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     * </ul>
+     * <p>
+     * @param cal       The calendar system whose date format symbols are desired.
+     * @param locale    The locale whose symbols are desired.
+     *
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols(Calendar cal, Locale locale) {
+        initializeData(ULocale.forLocale(locale), cal.getType());
+    }
+
+    /**
+     * Get the {@link DateFormatSymbols} object that should be used to format a
+     * calendar system's dates in the given locale.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * When creating a new Calendar subclass, you must create the
+     * {@link ResourceBundle ResourceBundle}
+     * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place.
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * Within the ResourceBundle, this method searches for five keys:
+     * <ul>
+     * <li><b>DayNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>DAY_OF_WEEK</code> field.  Even though
+     *      <code>DAY_OF_WEEK</code> starts with <code>SUNDAY</code> = 1,
+     *      This array is 0-based; the name for Sunday goes in the
+     *      first position, at index 0.  If this key is not found
+     *      in the bundle, the day names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>DayAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "DayNames" array.  If this key
+     *      is not found in the resource bundle, the "DayNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>MonthNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>MONTH</code> field.  If this key is not found
+     *      in the bundle, the month names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>MonthAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "MonthNames" array.  If this key
+     *      is not found in the resource bundle, the "MonthNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>Eras</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>ERA</code> field.  If this key is not found
+     *      in the bundle, the era names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     * </ul>
+     * <p>
+     * @param cal       The calendar system whose date format symbols are desired.
+     * @param locale    The ulocale whose symbols are desired.
+     *
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(Calendar cal, ULocale locale) {
+        initializeData(locale, cal.getType());
+    }
+
+    /**
+     * Variant of DateFormatSymbols(Calendar, Locale) that takes the Calendar class
+     * instead of a Calandar instance.
+     * @see #DateFormatSymbols(Calendar, Locale)
+     * @stable ICU 2.2
+     */
+    public DateFormatSymbols(Class calendarClass, Locale locale) {
+        this(calendarClass, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Variant of DateFormatSymbols(Calendar, ULocale) that takes the Calendar class
+     * instead of a Calandar instance.
+     * @see #DateFormatSymbols(Calendar, Locale)
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(Class calendarClass, ULocale locale) {
+        String fullName = calendarClass.getName();
+        int lastDot = fullName.lastIndexOf('.');
+        String className = fullName.substring(lastDot+1);
+        String calType = Utility.replaceAll(className, "Calendar", "").toLowerCase();
+        
+        initializeData(locale, calType);
+    }
+
+    /**
+     * Fetch a custom calendar's DateFormatSymbols out of the given resource
+     * bundle.  Symbols that are not overridden are inherited from the
+     * default DateFormatSymbols for the locale.
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols(ResourceBundle bundle, Locale locale) {
+        this(bundle, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Fetch a custom calendar's DateFormatSymbols out of the given resource
+     * bundle.  Symbols that are not overridden are inherited from the
+     * default DateFormatSymbols for the locale.
+     * @see DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     * @stable ICU 3.2
+     */
+    public DateFormatSymbols(ResourceBundle bundle, ULocale locale) {
+        initializeData(locale, 
+            new CalendarData((ICUResourceBundle)bundle, getCalendarType(locale)));
+    }
+
+    /**
+     * Find the ResourceBundle containing the date format information for
+     * a specified calendar subclass in a given locale.
+     * <p>
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * <b>Note:</b>Because of the structural changes in the ICU locale bundle,
+     * this API no longer works as described.  This method always returns null.
+     * @deprecated ICU 4.0
+     */
+    // This API was formerly @stable ICU 2.0
+    static public ResourceBundle getDateFormatBundle(Class calendarClass, Locale locale)
+        throws MissingResourceException {
+        return null;
+    }
+        
+    /**
+     * Find the ResourceBundle containing the date format information for
+     * a specified calendar subclass in a given locale.
+     * <p>
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.icu.util.HebrewCalendar"
+     * is "com.ibm.icu.impl.data.HebrewCalendarSymbols".
+     * <p>
+     * <b>Note:</b>Because of the structural changes in the ICU locale bundle,
+     * this API no longer works as described.  This method always returns null.
+     * @deprecated ICU 4.0
+     */
+    // This API was formerly @stable ICU 3.2
+    static public ResourceBundle getDateFormatBundle(Class calendarClass, ULocale locale)
+        throws MissingResourceException {
+        return null;
+    }
+
+    /**
+     * Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes
+     * a Calendar instance instead of a Calendar class.
+     * <p>
+     * <b>Note:</b>Because of the structural changes in the ICU locale bundle,
+     * this API no longer works as described.  This method always returns null.
+     * @see #getDateFormatBundle(java.lang.Class, java.util.Locale)
+     * @deprecated ICU 4.0
+     */
+    // This API was formerly @stable ICU 2.2
+    public static ResourceBundle getDateFormatBundle(Calendar cal, Locale locale)
+        throws MissingResourceException {
+        return null;
+    }
+    
+    /**
+     * Variant of getDateFormatBundle(java.lang.Class, java.util.Locale) that takes
+     * a Calendar instance instead of a Calendar class.
+     * <p>
+     * <b>Note:</b>Because of the structural changes in the ICU locale bundle,
+     * this API no longer works as described.  This method always returns null.
+     * @see #getDateFormatBundle(java.lang.Class, java.util.Locale)
+     * @deprecated ICU 4.0
+     */
+    // This API was formerly @stable ICU 3.2
+    public static ResourceBundle getDateFormatBundle(Calendar cal, ULocale locale)
+        throws MissingResourceException {
+        return null;
+    }
+
+    // Return the calendar type string for the given locale
+    private static String getCalendarType(ULocale locale) {
+        String calType = locale.getKeywordValue("calendar");
+        if (calType == null) {
+            locale = ICUResourceBundle.getFunctionalEquivalent(
+                ICUResourceBundle.ICU_BASE_NAME, "calendar", "calendar", locale, null, false);
+            calType = locale.getKeywordValue("calendar");
+        }
+        return calType;
+    }
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /*
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /*
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     */
+    private ULocale validLocale;
+
+    /*
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+
+    /*
+     * 3.8 or older version did not have localized GMT format
+     * patterns.
+     */
+    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        if (gmtFormat == null) {
+            initializeGMTFormat(requestedLocale);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/DateIntervalFormat.java b/src/com/ibm/icu/text/DateIntervalFormat.java
new file mode 100644
index 0000000..1b48562
--- /dev/null
+++ b/src/com/ibm/icu/text/DateIntervalFormat.java
@@ -0,0 +1,1625 @@
+/*
+*   Copyright (C) 2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Locale;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Collections;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.text.DateIntervalInfo;
+import com.ibm.icu.text.SimpleDateFormat;
+
+
+/**
+ * DateIntervalFormat is a class for formatting and parsing date 
+ * intervals in a language-independent manner. 
+ * Date interval formatting is supported in Gregorian calendar only.
+ * And only formatting is supported. Parsing is not supported.
+ *
+ * <P>
+ * Date interval means from one date to another date,
+ * for example, from "Jan 11, 2008" to "Jan 18, 2008".
+ * We introduced class DateInterval to represent it.
+ * DateInterval is a pair of UDate, which is 
+ * the standard milliseconds since 24:00 GMT, Jan 1, 1970.
+ *
+ * <P>
+ * DateIntervalFormat formats a DateInterval into
+ * text as compactly as possible. 
+ * For example, the date interval format from "Jan 11, 2008" to "Jan 18,. 2008"
+ * is "Jan 11-18, 2008" for English.
+ * And it parses text into DateInterval, 
+ * although initially, parsing is not supported. 
+ *
+ * <P>
+ * There is no structural information in date time patterns. 
+ * For any punctuations and string literals inside a date time pattern, 
+ * we do not know whether it is just a separator, or a prefix, or a suffix. 
+ * Without such information, so, it is difficult to generate a sub-pattern 
+ * (or super-pattern) by algorithm.
+ * So, formatting a DateInterval is pattern-driven. It is very
+ * similar to formatting in SimpleDateFormat.
+ * We introduce class DateIntervalInfo to save date interval 
+ * patterns, similar to date time pattern in SimpleDateFormat.
+ *
+ * <P>
+ * Logically, the interval patterns are mappings
+ * from (skeleton, the_largest_different_calendar_field)
+ * to (date_interval_pattern).
+ *
+ * <P>
+ * A skeleton 
+ * <ol>
+ * <li>
+ * only keeps the field pattern letter and ignores all other parts 
+ * in a pattern, such as space, punctuations, and string literals.
+ * <li>
+ * hides the order of fields. 
+ * <li>
+ * might hide a field's pattern letter length.
+ *
+ * For those non-digit calendar fields, the pattern letter length is 
+ * important, such as MMM, MMMM, and MMMMM; EEE and EEEE, 
+ * and the field's pattern letter length is honored.
+ *    
+ * For the digit calendar fields,  such as M or MM, d or dd, yy or yyyy, 
+ * the field pattern length is ignored and the best match, which is defined 
+ * in date time patterns, will be returned without honor the field pattern
+ * letter length in skeleton.
+ * </ol>
+ *
+ * <P>
+ * The calendar fields we support for interval formatting are:
+ * year, month, date, day-of-week, am-pm, hour, hour-of-day, and minute.
+ * Those calendar fields can be defined in the following order:
+ * year >  month > date > hour (in day) >  minute 
+ *  
+ * The largest different calendar fields between 2 calendars is the
+ * first different calendar field in above order.
+ *
+ * For example: the largest different calendar fields between "Jan 10, 2007" 
+ * and "Feb 20, 2008" is year.
+ *
+ * <P>
+ * For other calendar fields, the compact interval formatting is not
+ * supported. And the interval format will be fall back to fall-back
+ * patterns, which is mostly "{date0} - {date1}".
+ *   
+ * <P>
+ * There is a set of pre-defined static skeleton strings in DateFormat,
+ * There are pre-defined interval patterns for those pre-defined skeletons
+ * in locales' resource files.
+ * For example, for a skeleton YEAR_ABBR_MONTH_DAY, which is  "yMMMd",
+ * in  en_US, if the largest different calendar field between date1 and date2 
+ * is "year", the date interval pattern  is "MMM d, yyyy - MMM d, yyyy", 
+ * such as "Jan 10, 2007 - Jan 10, 2008".
+ * If the largest different calendar field between date1 and date2 is "month",
+ * the date interval pattern is "MMM d - MMM d, yyyy",
+ * such as "Jan 10 - Feb 10, 2007".
+ * If the largest different calendar field between date1 and date2 is "day",
+ * the date interval pattern is ""MMM d-d, yyyy", such as "Jan 10-20, 2007".
+ *
+ * For date skeleton, the interval patterns when year, or month, or date is 
+ * different are defined in resource files.
+ * For time skeleton, the interval patterns when am/pm, or hour, or minute is
+ * different are defined in resource files.
+ *
+ * <P>
+ * If a skeleton is not found in a locale's DateIntervalInfo, which means
+ * the interval patterns for the skeleton is not defined in resource file,
+ * the interval pattern will falls back to the interval "fallback" pattern 
+ * defined in resource file.
+ * If the interval "fallback" pattern is not defined, the default fall-back
+ * is "{date0} - {data1}".
+ *
+ * <P>
+ * For the combination of date and time, 
+ * The rule to genearte interval patterns are:
+ * <ol>
+ * <li>
+ *    when the year, month, or day differs, falls back to fall-back
+ *    interval pattern, which mostly is the concatenate the two original 
+ *    expressions with a separator between, 
+ *    For example, interval pattern from "Jan 10, 2007 10:10 am" 
+ *    to "Jan 11, 2007 10:10am" is 
+ *    "Jan 10, 2007 10:10 am - Jan 11, 2007 10:10am" 
+ * <li>
+ *    otherwise, present the date followed by the range expression 
+ *    for the time.
+ *    For example, interval pattern from "Jan 10, 2007 10:10 am" 
+ *    to "Jan 10, 2007 11:10am" is "Jan 10, 2007 10:10 am - 11:10am" 
+ * </ol>
+ *
+ *
+ * <P>
+ * If two dates are the same, the interval pattern is the single date pattern.
+ * For example, interval pattern from "Jan 10, 2007" to "Jan 10, 2007" is 
+ * "Jan 10, 2007".
+ *
+ * Or if the presenting fields between 2 dates have the exact same values,
+ * the interval pattern is the  single date pattern. 
+ * For example, if user only requests year and month,
+ * the interval pattern from "Jan 10, 2007" to "Jan 20, 2007" is "Jan 2007".
+ *
+ * <P>
+ * DateIntervalFormat needs the following information for correct 
+ * formatting: time zone, calendar type, pattern, date format symbols, 
+ * and date interval patterns.
+ * It can be instantiated in several ways:
+ * <ol>
+ * <li>
+ *    create an instance using default or given locale plus given skeleton.
+ *    Users are encouraged to created date interval formatter this way and 
+ *    to use the pre-defined skeleton macros, such as
+ *    YEAR_NUM_MONTH, which consists the calendar fields and
+ *    the format style.
+ * </li>
+ * <li>
+ *    create an instance using default or given locale plus given skeleton
+ *    plus a given DateIntervalInfo.
+ *    This factory method is for powerful users who want to provide their own 
+ *    interval patterns. 
+ *    Locale provides the timezone, calendar, and format symbols information.
+ *    Local plus skeleton provides full pattern information.
+ *    DateIntervalInfo provides the date interval patterns.
+ * </li>
+ * </ol>
+ *
+ * <P>
+ * For the calendar field pattern letter, such as G, y, M, d, a, h, H, m, s etc.
+ * DateIntervalFormat uses the same syntax as that of
+ * DateTime format.
+ * 
+ * <P>
+ * Code Sample: general usage
+ * <pre>
+ *
+ *   // the date interval object which the DateIntervalFormat formats on
+ *   // and parses into
+ *   DateInterval dtInterval = new DateInterval(1000*3600*24L, 1000*3600*24*2L);
+ *   DateIntervalFormat dtIntervalFmt = DateIntervalFormat.getInstance(
+ *                   YEAR_MONTH_DAY, Locale("en", "GB", ""));
+ *   StringBuffer str = new StringBuffer("");
+ *   FieldPosition pos = new FieldPosition(0);
+ *   // formatting
+ *   dtIntervalFmt.format(dtInterval, dateIntervalString, pos);
+ *
+ * </pre>
+ *
+ * <P>
+ * Code Sample: for powerful users who wants to use their own interval pattern
+ * <pre>
+ *
+ *     import com.ibm.icu.text.DateIntervalInfo;
+ *     import com.ibm.icu.text.DateIntervalFormat;
+ *     ....................
+ *     
+ *     // Get DateIntervalFormat instance using default locale
+ *     DateIntervalFormat dtitvfmt = DateIntervalFormat.getInstance(YEAR_MONTH_DAY);
+ *     
+ *     // Create an empty DateIntervalInfo object, which does not have any interval patterns inside.
+ *     dtitvinf = new DateIntervalInfo();
+ *     
+ *     // a series of set interval patterns.
+ *     // Only ERA, YEAR, MONTH, DATE,  DAY_OF_MONTH, DAY_OF_WEEK, AM_PM,  HOUR, HOUR_OF_DAY, and MINUTE  are supported.
+ *     dtitvinf.setIntervalPattern("yMMMd", Calendar.YEAR, "'y ~ y'"); 
+ *     dtitvinf.setIntervalPattern("yMMMd", Calendar.MONTH, "yyyy 'diff' MMM d - MMM d");
+ *     dtitvinf.setIntervalPattern("yMMMd", Calendar.DATE, "yyyy MMM d ~ d");
+ *     dtitvinf.setIntervalPattern("yMMMd", Calendar.HOUR_OF_DAY, "yyyy MMM d HH:mm ~ HH:mm");
+ *     
+ *     // Set fallback interval pattern. Fallback pattern is used when interval pattern is not found.
+ *     // If the fall-back pattern is not set,  falls back to {date0} - {date1} if interval pattern is not found.
+ *     dtitvinf.setFallbackIntervalPattern("{0} - {1}");
+ *     
+ *     // Set above DateIntervalInfo object as the interval patterns of date interval formatter
+ *     dtitvfmt.setDateIntervalInfo(dtitvinf);
+ *     
+ *     // Prepare to format
+ *     pos = new FieldPosition(0);
+ *     str = new StringBuffer("");
+ *     
+ *     // The 2 calendars should be equivalent, otherwise,  IllegalArgumentException will be thrown by format()
+ *     Calendar fromCalendar = (Calendar) dtfmt.getCalendar().clone();
+ *     Calendar toCalendar = (Calendar) dtfmt.getCalendar().clone();
+ *     fromCalendar.setTimeInMillis(....);
+ *     toCalendar.setTimeInMillis(...);
+ *     
+ *     //Formatting given 2 calendars
+ *     dtitvfmt.format(fromCalendar, toCalendar, str, pos);
+ * 
+ *
+ * </pre>
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+
+public class DateIntervalFormat extends UFormat {
+
+    private static final long serialVersionUID = 1;
+
+    /**
+     * Used to save the information for a skeleton's best match skeleton.
+     * It is package accessible since it is used in DateIntervalInfo too.
+     */
+    static final class BestMatchInfo {
+        // the best match skeleton
+        final String bestMatchSkeleton;
+        // 0 means the best matched skeleton is the same as input skeleton
+        // 1 means the fields are the same, but field width are different
+        // 2 means the only difference between fields are v/z,
+        // -1 means there are other fields difference
+        final int    bestMatchDistanceInfo;
+        BestMatchInfo(String bestSkeleton, int difference) {
+            bestMatchSkeleton = bestSkeleton;
+            bestMatchDistanceInfo = difference;
+        }
+    }
+
+
+    /*
+     * Used to save the information on a skeleton and its best match.
+     */
+    private static final class SkeletonAndItsBestMatch {
+        final String skeleton;
+        final String bestMatchSkeleton;
+        SkeletonAndItsBestMatch(String skeleton, String bestMatch) {
+            this.skeleton = skeleton;
+            bestMatchSkeleton = bestMatch;
+        }
+    }
+
+
+    // Cache for the locale interval pattern
+    private static ICUCache LOCAL_PATTERN_CACHE = new SimpleCache();
+    
+    /*
+     * The interval patterns for this locale.
+     */
+    private DateIntervalInfo     fInfo;
+
+    /*
+     * The DateFormat object used to format single pattern
+     */
+    private SimpleDateFormat     fDateFormat;
+
+    /*
+     * The 2 calendars with the from and to date.
+     * could re-use the calendar in fDateFormat,
+     * but keeping 2 calendars make it clear and clean.
+     */
+    private Calendar fFromCalendar;
+    private Calendar fToCalendar;
+
+    /*
+     * Following are transient interval information
+     * relavent (locale) to this formatter.
+     */
+    private String fSkeleton = null;
+    // HashMap<String, String>  calendar_field -> interval pattern
+    private transient Map fIntervalPatterns = null;
+    
+   
+    /*
+     * default constructor 
+     */
+    private DateIntervalFormat() {
+    }
+
+    /*
+     * Construct a DateIntervalFormat from DateFormat,
+     * a DateIntervalInfo, and skeleton.
+     * DateFormat provides the timezone, calendar,
+     * full pattern, and date format symbols information.
+     * It should be a SimpleDateFormat object which 
+     * has a pattern in it.
+     * the DateIntervalInfo provides the interval patterns.
+     *
+     * @param locale    the locale of this date interval formatter.
+     * @param dtitvinf  the DateIntervalInfo object to be adopted.
+     * @param skeleton  the skeleton of the date formatter
+     */
+    private DateIntervalFormat(ULocale locale, DateIntervalInfo dtItvInfo,
+                               String skeleton)
+    {
+        // freeze date interval info
+        dtItvInfo.freeze();
+        fSkeleton = skeleton;
+        fInfo = dtItvInfo;
+
+        DateTimePatternGenerator generator = DateTimePatternGenerator.getInstance(locale);
+        final String bestPattern = generator.getBestPattern(skeleton);
+        fDateFormat = new SimpleDateFormat(bestPattern, locale);
+        fFromCalendar = (Calendar) fDateFormat.getCalendar().clone();
+        fToCalendar = (Calendar) fDateFormat.getCalendar().clone();
+        initializePattern();
+    }
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton and  the default locale.
+     *
+     * This is a convenient override of 
+     * getInstance(String skeleton, ULocale locale)  
+     * with the value of locale as default locale.
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat 
+        getInstance(String skeleton)
+                                                 
+    {
+        return getInstance(skeleton, ULocale.getDefault());
+    }
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton and a given locale.
+     *
+     * This is a convenient override of 
+     * getInstance(String skeleton, ULocale locale)  
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @param locale    the given locale
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat 
+        getInstance(String skeleton, Locale locale)  
+    {
+        return getInstance(skeleton, ULocale.forLocale(locale));
+    }
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton and a given locale.
+     * <P>
+     * In this factory method,
+     * the date interval pattern information is load from resource files.
+     * Users are encouraged to created date interval formatter this way and
+     * to use the pre-defined skeleton macros.
+     *
+     * <P>
+     * There are pre-defined skeletons in DateFormat,
+     * such as MONTH_DAY, YEAR_MONTH_WEEKDAY_DAY etc.
+     *
+     * Those skeletons have pre-defined interval patterns in resource files.
+     * Users are encouraged to use them. 
+     * For example:
+     * DateIntervalFormat.getInstance(DateFormat.MONTH_DAY, false, loc);
+     * 
+     * The given Locale provides the interval patterns.
+     * For example, for en_GB, if skeleton is YEAR_ABBR_MONTH_WEEKDAY_DAY,
+     * which is "yMMMEEEd",
+     * the interval patterns defined in resource file to above skeleton are:
+     * "EEE, d MMM, yyyy - EEE, d MMM, yyyy" for year differs,
+     * "EEE, d MMM - EEE, d MMM, yyyy" for month differs,
+     * "EEE, d - EEE, d MMM, yyyy" for day differs,
+     * @param skeleton  the skeleton on which interval format based.
+     * @param locale    the given locale
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat 
+        getInstance(String skeleton, ULocale locale)  
+    {
+        DateIntervalInfo dtitvinf = new DateIntervalInfo(locale);
+        return new DateIntervalFormat(locale, dtitvinf, skeleton);
+    }
+
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton
+     *  DateIntervalInfo, and default locale.
+     *
+     * This is a convenient override of
+     * getInstance(String skeleton, ULocale locale, DateIntervalInfo dtitvinf)
+     * with the locale value as default locale.
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @param dtitvinf  the DateIntervalInfo object to be adopted.
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat getInstance(String skeleton, 
+                                                   DateIntervalInfo dtitvinf)
+    {
+        return getInstance(skeleton, ULocale.getDefault(), dtitvinf);
+    }
+
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton
+     * a DateIntervalInfo, and the given locale.
+     *
+     * This is a convenient override of
+     * getInstance(String skeleton, ULocale locale, DateIntervalInfo dtitvinf)
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @param locale    the given locale
+     * @param dtitvinf  the DateIntervalInfo object to be adopted.
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat getInstance(String skeleton,
+                                                 Locale locale, 
+                                                 DateIntervalInfo dtitvinf)
+    {
+        return getInstance(skeleton, ULocale.forLocale(locale), dtitvinf);
+    }
+
+
+
+    /**
+     * Construct a DateIntervalFormat from skeleton
+     * a DateIntervalInfo, and the given locale.
+     *
+     * <P>
+     * In this factory method, user provides its own date interval pattern
+     * information, instead of using those pre-defined data in resource file.
+     * This factory method is for powerful users who want to provide their own
+     * interval patterns.
+     *
+     * <P>
+     * There are pre-defined skeleton in DateFormat,
+     * such as MONTH_DAY, YEAR_MONTH_WEEKDAY_DAY etc.
+     *
+     * Those skeletons have pre-defined interval patterns in resource files.
+     * Users are encouraged to use them. 
+     * For example:
+     * DateIntervalFormat.getInstance(DateFormat.MONTH_DAY, false, loc,itvinf);
+     *
+     * the DateIntervalInfo provides the interval patterns.
+     *
+     * User are encouraged to set default interval pattern in DateIntervalInfo
+     * as well, if they want to set other interval patterns ( instead of
+     * reading the interval patterns from resource files).
+     * When the corresponding interval pattern for a largest calendar different
+     * field is not found ( if user not set it ), interval format fallback to
+     * the default interval pattern.
+     * If user does not provide default interval pattern, it fallback to
+     * "{date0} - {date1}" 
+     *
+     * @param skeleton  the skeleton on which interval format based.
+     * @param locale    the given locale
+     * @param dtitvinf  the DateIntervalInfo object to be adopted.
+     * @return          a date time interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final DateIntervalFormat getInstance(String skeleton,
+                                                 ULocale locale, 
+                                                 DateIntervalInfo dtitvinf)
+    {
+        LOCAL_PATTERN_CACHE.clear();
+        // clone. If it is frozen, clone returns itself, otherwise, clone
+        // returns a copy.
+        dtitvinf = (DateIntervalInfo)dtitvinf.clone(); 
+        return new DateIntervalFormat(locale, dtitvinf, skeleton);
+    }
+
+
+    /**
+     * Clone this Format object polymorphically. 
+     * @return    A copy of the object.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object clone()
+    {
+        DateIntervalFormat other = (DateIntervalFormat) super.clone();
+        other.fDateFormat = (SimpleDateFormat) fDateFormat.clone();
+        other.fInfo = (DateIntervalInfo) fInfo.clone();
+        other.fFromCalendar = (Calendar) fFromCalendar.clone();
+        other.fToCalendar = (Calendar) fToCalendar.clone();
+        other.fSkeleton = fSkeleton;
+        other.fIntervalPatterns = fIntervalPatterns;
+        return other;
+    }
+
+
+    /**
+     * Format an object to produce a string. This method handles Formattable
+     * objects with a DateInterval type. 
+     * If a the Formattable object type is not a DateInterval,
+     * IllegalArgumentException is thrown.
+     *
+     * @param obj               The object to format. 
+     *                          Must be a DateInterval.
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param fieldPosition     On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @return                  Reference to 'appendTo' parameter.
+     * @throws    IllegalArgumentException  if the formatted object is not 
+     *                                      DateInterval object
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final StringBuffer 
+        format(Object obj, StringBuffer appendTo, FieldPosition fieldPosition)
+    {
+        if ( obj instanceof DateInterval ) {
+            return format( (DateInterval)obj, appendTo, fieldPosition);
+        }
+        else {
+            throw new IllegalArgumentException("Cannot format given Object (" + obj.getClass().getName() + ") as a DateInterval");
+        }
+    }
+
+    /**
+     * Format a DateInterval to produce a string. 
+     *
+     * @param dtInterval        DateInterval to be formatted.
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param fieldPosition     On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @return                  Reference to 'appendTo' parameter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final StringBuffer format(DateInterval dtInterval,
+                                     StringBuffer appendTo,
+                                     FieldPosition fieldPosition)
+    {
+        fFromCalendar.setTimeInMillis(dtInterval.getFromDate());
+        fToCalendar.setTimeInMillis(dtInterval.getToDate());
+        return format(fFromCalendar, fToCalendar, appendTo, fieldPosition);
+    }
+
+
+    /**
+     * Format 2 Calendars to produce a string. 
+     *
+     * @param fromCalendar      calendar set to the from date in date interval
+     *                          to be formatted into date interval string
+     * @param toCalendar        calendar set to the to date in date interval
+     *                          to be formatted into date interval string
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param pos               On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @return                  Reference to 'appendTo' parameter.
+     * @throws    IllegalArgumentException  if the two calendars are not equivalent, or the calendars are not Gregorian calendar.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final StringBuffer format(Calendar fromCalendar,
+                                     Calendar toCalendar,
+                                     StringBuffer appendTo,
+                                     FieldPosition pos)
+    {
+        // not support different calendar types and time zones
+        if ( !fromCalendar.isEquivalentTo(toCalendar) ||
+             !fromCalendar.getType().equals("gregorian") ) {
+            throw new IllegalArgumentException("can not format on two different calendars or non-Gregorian calendars");
+        }
+    
+        // First, find the largest different calendar field.
+        int field = Calendar.MILLISECONDS_IN_DAY + 1; //BASE_FIELD_COUNT
+    
+        if ( fromCalendar.get(Calendar.ERA) != toCalendar.get(Calendar.ERA) ) {
+            field = Calendar.ERA;
+        } else if ( fromCalendar.get(Calendar.YEAR) != 
+                    toCalendar.get(Calendar.YEAR) ) {
+            field = Calendar.YEAR;
+        } else if ( fromCalendar.get(Calendar.MONTH) !=
+                    toCalendar.get(Calendar.MONTH) ) {
+            field = Calendar.MONTH;
+        } else if ( fromCalendar.get(Calendar.DATE) !=
+                    toCalendar.get(Calendar.DATE) ) {
+            field = Calendar.DATE;
+        } else if ( fromCalendar.get(Calendar.AM_PM) !=
+                    toCalendar.get(Calendar.AM_PM) ) {
+            field = Calendar.AM_PM;
+        } else if ( fromCalendar.get(Calendar.HOUR) !=
+                    toCalendar.get(Calendar.HOUR) ) {
+            field = Calendar.HOUR;
+        } else if ( fromCalendar.get(Calendar.MINUTE) !=
+                    toCalendar.get(Calendar.MINUTE) ) {
+            field = Calendar.MINUTE;
+        } else {
+            /* ignore the second/millisecond etc. small fields' difference.
+             * use single date when all the above are the same.
+             */
+            return fDateFormat.format(fromCalendar, appendTo, pos);
+        }
+        
+        // get interval pattern
+        DateIntervalInfo.PatternInfo intervalPattern = 
+          (DateIntervalInfo.PatternInfo)fIntervalPatterns.get(
+              DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field]);
+
+        if ( intervalPattern == null ) {
+            if ( fDateFormat.isFieldUnitIgnored(field) ) {
+                /* the largest different calendar field is small than
+                 * the smallest calendar field in pattern,
+                 * return single date format.
+                 */
+                return fDateFormat.format(fromCalendar, appendTo, pos);
+            }
+
+            return fallbackFormat(fromCalendar, toCalendar, appendTo, pos);
+        }
+
+        // If the first part in interval pattern is empty, 
+        // the 2nd part of it saves the full-pattern used in fall-back.
+        // For a 'real' interval pattern, the first part will never be empty.
+        if ( intervalPattern.getFirstPart() == null ) {
+            // fall back
+            return fallbackFormat(fromCalendar, toCalendar, appendTo, pos,
+                                    intervalPattern.getSecondPart());
+        }
+        Calendar firstCal;
+        Calendar secondCal;
+        if ( intervalPattern.firstDateInPtnIsLaterDate() ) {
+            firstCal = toCalendar;
+            secondCal = fromCalendar;
+        } else {
+            firstCal = fromCalendar;
+            secondCal = toCalendar;
+        }
+        // break the interval pattern into 2 parts
+        // first part should not be empty, 
+        String originalPattern = fDateFormat.toPattern();
+        fDateFormat.applyPattern(intervalPattern.getFirstPart());
+        fDateFormat.format(firstCal, appendTo, pos);
+        if ( intervalPattern.getSecondPart() != null ) {
+            fDateFormat.applyPattern(intervalPattern.getSecondPart());
+            fDateFormat.format(secondCal, appendTo, pos);
+        }
+        fDateFormat.applyPattern(originalPattern);
+        return appendTo;
+    }
+
+
+    /*
+     * Format 2 Calendars to using fall-back interval pattern
+     *
+     * The full pattern used in this fall-back format is the
+     * full pattern of the date formatter.
+     *
+     * @param fromCalendar      calendar set to the from date in date interval
+     *                          to be formatted into date interval string
+     * @param toCalendar        calendar set to the to date in date interval
+     *                          to be formatted into date interval string
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param pos               On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @return                  Reference to 'appendTo' parameter.
+     */
+    private final StringBuffer fallbackFormat(Calendar fromCalendar,
+                                              Calendar toCalendar,
+                                              StringBuffer appendTo,
+                                              FieldPosition pos)  {
+            // the fall back
+            StringBuffer earlierDate = new StringBuffer(64);
+            earlierDate = fDateFormat.format(fromCalendar, earlierDate, pos);
+            StringBuffer laterDate = new StringBuffer(64);
+            laterDate = fDateFormat.format(toCalendar, laterDate, pos);
+            String fallbackPattern = fInfo.getFallbackIntervalPattern();
+            String fallback = MessageFormat.format(fallbackPattern, new Object[]
+                            {earlierDate.toString(), laterDate.toString()});
+            appendTo.append(fallback);
+            return appendTo;
+    }
+
+
+    /*
+     * Format 2 Calendars to using fall-back interval pattern
+     *
+     * This fall-back pattern is generated on a given full pattern,
+     * not the full pattern of the date formatter.
+     *
+     * @param fromCalendar      calendar set to the from date in date interval
+     *                          to be formatted into date interval string
+     * @param toCalendar        calendar set to the to date in date interval
+     *                          to be formatted into date interval string
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param pos               On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @param fullPattern       the full pattern need to apply to date formatter
+     * @return                  Reference to 'appendTo' parameter.
+     */
+    private final StringBuffer fallbackFormat(Calendar fromCalendar,
+                                              Calendar toCalendar,
+                                              StringBuffer appendTo,
+                                              FieldPosition pos, 
+                                              String fullPattern)  {
+            String originalPattern = fDateFormat.toPattern();
+            fDateFormat.applyPattern(fullPattern);
+            fallbackFormat(fromCalendar, toCalendar, appendTo, pos);
+            fDateFormat.applyPattern(originalPattern);
+            return appendTo;
+    }
+
+
+    /**
+     * Date interval parsing is not supported.
+     * <P>
+     * This method should handle parsing of
+     * date time interval strings into Formattable objects with 
+     * DateInterval type, which is a pair of UDate.
+     * <P>
+     * <P>
+     * Before calling, set parse_pos.index to the offset you want to start
+     * parsing at in the source. After calling, parse_pos.index is the end of
+     * the text you parsed. If error occurs, index is unchanged.
+     * <P>
+     * When parsing, leading whitespace is discarded (with a successful parse),
+     * while trailing whitespace is left as is.
+     * <P>
+     * See Format.parseObject() for more.
+     *
+     * @param source    The string to be parsed into an object.
+     * @param parse_pos The position to start parsing at. Since no parsing
+     *                  is supported, upon return this param is unchanged.
+     * @return          A newly created Formattable* object, or NULL
+     *                  on failure.
+     * @internal ICU 4.0
+     * @deprecated This API is ICU internal only.
+     */
+    public Object parseObject(String source, ParsePosition parse_pos)
+    {
+        throw new UnsupportedOperationException("parsing is not supported");
+    }
+
+
+    /**
+     * Gets the date time interval patterns.
+     * @return a copy of the date time interval patterns associated with
+     * this date interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateIntervalInfo getDateIntervalInfo()
+    {
+        return (DateIntervalInfo)fInfo.clone();
+    }
+
+
+    /**
+     * Set the date time interval patterns. 
+     * @param newItvPattern   the given interval patterns to copy.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setDateIntervalInfo(DateIntervalInfo newItvPattern)
+    {
+        // clone it. If it is frozen, the clone returns itself.
+        // Otherwise, clone returns a copy
+        fInfo = (DateIntervalInfo)newItvPattern.clone();
+        fInfo.freeze(); // freeze it
+        LOCAL_PATTERN_CACHE.clear();
+        if ( fDateFormat != null ) {
+            initializePattern();
+        }
+    }
+
+
+    /**
+     * Gets the date formatter
+     * @return a copy of the date formatter associated with
+     * this date interval formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateFormat getDateFormat()
+    {
+        return (DateFormat)fDateFormat.clone();
+    }
+
+
+    /*
+     *  Below are for generating interval patterns locale to the formatter 
+     */
+
+    /*
+     * Initialize interval patterns locale to this formatter.
+     */
+    private void initializePattern() { 
+        String fullPattern = ((SimpleDateFormat)fDateFormat).toPattern();
+        ULocale locale = ((SimpleDateFormat)fDateFormat).getLocale();
+        String key;
+        if ( fSkeleton != null ) {
+            key = locale.toString() + "+" + fullPattern + "+" + fSkeleton;
+        } else {
+            key = locale.toString() + "+" + fullPattern;
+        }
+        Map patterns = (Map) LOCAL_PATTERN_CACHE.get(key);
+        if ( patterns == null ) {
+            HashMap intervalPatterns = initializeIntervalPattern(fullPattern, locale);
+            patterns = Collections.unmodifiableMap(intervalPatterns);
+            LOCAL_PATTERN_CACHE.put(key, patterns);
+        } 
+        fIntervalPatterns = patterns;
+    }
+
+
+
+    /*
+     * Initialize interval patterns locale to this formatter
+     * 
+     * This code is a bit complicated since 
+     * 1. the interval patterns saved in resource bundle files are interval
+     *    patterns based on date or time only.
+     *    It does not have interval patterns based on both date and time.
+     *    Interval patterns on both date and time are algorithm generated.
+     *
+     *    For example, it has interval patterns on skeleton "dMy" and "hm",
+     *    but it does not have interval patterns on skeleton "dMyhm".
+     *    
+     *    The rule to generate interval patterns for both date and time skeleton are
+     *    1) when the year, month, or day differs, concatenate the two original 
+     *    expressions with a separator between, 
+     *    For example, interval pattern from "Jan 10, 2007 10:10 am" 
+     *    to "Jan 11, 2007 10:10am" is 
+     *    "Jan 10, 2007 10:10 am - Jan 11, 2007 10:10am" 
+     *
+     *    2) otherwise, present the date followed by the range expression 
+     *    for the time.
+     *    For example, interval pattern from "Jan 10, 2007 10:10 am" 
+     *    to "Jan 10, 2007 11:10am" is 
+     *    "Jan 10, 2007 10:10 am - 11:10am" 
+     *
+     * 2. even a pattern does not request a certain calendar field,
+     *    the interval pattern needs to include such field if such fields are
+     *    different between 2 dates.
+     *    For example, a pattern/skeleton is "hm", but the interval pattern 
+     *    includes year, month, and date when year, month, and date differs.
+     * 
+     *
+     * @param fullPattern  formatter's full pattern
+     * @param locale       the given locale.
+     * @return             interval patterns' hash map
+     */
+    private HashMap initializeIntervalPattern(String fullPattern, ULocale locale) {
+        DateTimePatternGenerator dtpng = DateTimePatternGenerator.getInstance(locale);
+        if ( fSkeleton == null ) {
+            // fSkeleton is already set by getDateIntervalInstance()
+            // or by getInstance(String skeleton, .... )
+            fSkeleton = dtpng.getSkeleton(fullPattern);
+        }
+        String skeleton = fSkeleton;
+
+        HashMap intervalPatterns = new HashMap();
+
+        /* Check whether the skeleton is a combination of date and time.
+         * For the complication reason 1 explained above.
+         */
+        StringBuffer date = new StringBuffer(skeleton.length());
+        StringBuffer normalizedDate = new StringBuffer(skeleton.length());
+        StringBuffer time = new StringBuffer(skeleton.length());
+        StringBuffer normalizedTime = new StringBuffer(skeleton.length());
+
+        /* the difference between time skeleton and normalizedTimeSkeleton are:
+         * 1. both 'H' and 'h' are normalized as 'h' in normalized time skeleton,
+         * 2. 'a' is omitted in normalized time skeleton.
+         * 3. there is only one appearance for 'h', 'm','v', 'z' in normalized 
+         *    time skeleton
+         *
+         * The difference between date skeleton and normalizedDateSkeleton are:
+         * 1. both 'y' and 'd' appear only once in normalizeDateSkeleton
+         * 2. 'E' and 'EE' are normalized into 'EEE'
+         * 3. 'MM' is normalized into 'M'
+         */
+        getDateTimeSkeleton(skeleton, date, normalizedDate,
+                            time, normalizedTime);
+
+        String dateSkeleton = date.toString();
+        String timeSkeleton = time.toString();
+        String normalizedDateSkeleton = normalizedDate.toString();
+        String normalizedTimeSkeleton = normalizedTime.toString();
+
+        boolean found = genSeparateDateTimePtn(normalizedDateSkeleton, 
+                                               normalizedTimeSkeleton,
+                                               intervalPatterns);
+
+        if ( found == false ) {
+            // use fallback
+            // TODO: if user asks "m", but "d" differ
+            //StringBuffer skeleton = new StringBuffer(skeleton);
+            if ( time.length() != 0 ) {
+                //genFallbackForNotFound(Calendar.MINUTE, skeleton);
+                //genFallbackForNotFound(Calendar.HOUR, skeleton);
+                //genFallbackForNotFound(Calendar.AM_PM, skeleton);
+                if ( date.length() == 0 ) {
+                    // prefix with yMd
+                    timeSkeleton = DateFormat.YEAR_NUM_MONTH_DAY + timeSkeleton;
+                    String pattern =dtpng.getBestPattern(timeSkeleton);
+                    // for fall back interval patterns,
+                    // the first part of the pattern is empty,
+                    // the second part of the pattern is the full-pattern
+                    // should be used in fall-back.
+                    DateIntervalInfo.PatternInfo ptn = 
+                        new DateIntervalInfo.PatternInfo(null, pattern,
+                                                     fInfo.getDefaultOrder());
+                    intervalPatterns.put(DateIntervalInfo.
+                        CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE], ptn);
+                    // share interval pattern
+                    intervalPatterns.put(DateIntervalInfo.
+                        CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH], ptn);
+                    // share interval pattern
+                    intervalPatterns.put(DateIntervalInfo.
+                        CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR], ptn);
+                } else {
+                    //genFallbackForNotFound(Calendar.DATE, skeleton);
+                    //genFallbackForNotFound(Calendar.MONTH, skeleton);
+                    //genFallbackForNotFound(Calendar.YEAR, skeleton);
+                }
+            } else {
+                    //genFallbackForNotFound(Calendar.DATE, skeleton);
+                    //genFallbackForNotFound(Calendar.MONTH, skeleton);
+                    //genFallbackForNotFound(Calendar.YEAR, skeleton);
+            }
+            return intervalPatterns;
+        } // end of skeleton not found
+        // interval patterns for skeleton are found in resource 
+        if ( time.length() == 0 ) {
+            // done
+        } else if ( date.length() == 0 ) {
+            // need to set up patterns for y/M/d differ
+            /* result from following looks confusing.
+             * for example: 10 10:10 - 11 10:10, it is not
+             * clear that the first 10 is the 10th day
+            time.insert(0, 'd');
+            genFallbackPattern(Calendar.DATE, time);
+            time.insert(0, 'M');
+            genFallbackPattern(Calendar.MONTH, time);
+            time.insert(0, 'y');
+            genFallbackPattern(Calendar.YEAR, time);
+            */
+            // prefix with yMd
+            timeSkeleton = DateFormat.YEAR_NUM_MONTH_DAY + timeSkeleton;
+            String pattern =dtpng.getBestPattern(timeSkeleton);
+            // for fall back interval patterns,
+            // the first part of the pattern is empty,
+            // the second part of the pattern is the full-pattern
+            // should be used in fall-back.
+            DateIntervalInfo.PatternInfo ptn = new DateIntervalInfo.PatternInfo(
+                                    null, pattern, fInfo.getDefaultOrder());
+            intervalPatterns.put(DateIntervalInfo.
+                CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE], ptn);
+            intervalPatterns.put(DateIntervalInfo.
+                CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH], ptn);
+            intervalPatterns.put(DateIntervalInfo.
+                CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR], ptn);
+        } else {
+            /* if both present,
+             * 1) when the year, month, or day differs, 
+             * concatenate the two original expressions with a separator between, 
+             * 2) otherwise, present the date followed by the 
+             * range expression for the time. 
+             */
+            /*
+             * 1) when the year, month, or day differs, 
+             * concatenate the two original expressions with a separator between, 
+             */
+            // if field exists, use fall back
+            if ( !fieldExistsInSkeleton(Calendar.DATE, dateSkeleton) ) {
+                // prefix skeleton with 'd'
+                skeleton = DateIntervalInfo.
+                    CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE] + skeleton;
+                genFallbackPattern(Calendar.DATE, skeleton, intervalPatterns, dtpng);
+            }
+            if ( !fieldExistsInSkeleton(Calendar.MONTH, dateSkeleton) ) {
+                // then prefix skeleton with 'M'
+                skeleton = DateIntervalInfo.
+                    CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH] + skeleton;
+                genFallbackPattern(Calendar.MONTH, skeleton, intervalPatterns, dtpng);
+            }
+            if ( !fieldExistsInSkeleton(Calendar.YEAR, dateSkeleton) ) {
+                // then prefix skeleton with 'y'
+                skeleton = DateIntervalInfo.
+                    CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR] + skeleton;
+                genFallbackPattern(Calendar.YEAR, skeleton, intervalPatterns, dtpng);
+            }
+            
+            /*
+             * 2) otherwise, present the date followed by the 
+             * range expression for the time. 
+             */
+            // Need the Date/Time pattern for concatnation the date with
+            // the time interval.
+            // The date/time pattern ( such as {0} {1} ) is saved in
+            // calendar, that is why need to get the CalendarData here.
+            CalendarData calData = new CalendarData(locale, null);
+            String[] patterns = calData.get("DateTimePatterns").getStringArray();
+            String datePattern =dtpng.getBestPattern(dateSkeleton);
+            concatSingleDate2TimeInterval(patterns[8], datePattern, Calendar.AM_PM, intervalPatterns);
+            concatSingleDate2TimeInterval(patterns[8], datePattern, Calendar.HOUR, intervalPatterns);
+            concatSingleDate2TimeInterval(patterns[8], datePattern, Calendar.MINUTE, intervalPatterns);
+        }
+
+        return intervalPatterns;
+    }
+
+
+    /*
+     * Generate fall back interval pattern given a calendar field,
+     * a skeleton, and a date time pattern generator
+     * @param field      the largest different calendar field
+     * @param skeleton   a skeleton
+     * @param dtpng      date time pattern generator
+     * @param intervalPatterns interval patterns
+     */
+    private void genFallbackPattern(int field, String skeleton,
+                                    HashMap intervalPatterns,
+                                    DateTimePatternGenerator dtpng) {
+        String pattern = dtpng.getBestPattern(skeleton);
+        // for fall back interval patterns,
+        // the first part of the pattern is empty,
+        // the second part of the pattern is the full-pattern
+        // should be used in fall-back.
+        DateIntervalInfo.PatternInfo ptn = new DateIntervalInfo.PatternInfo(
+                                    null, pattern, fInfo.getDefaultOrder());
+        intervalPatterns.put( 
+            DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field], ptn);
+    }
+
+
+
+    /*
+    private void genFallbackForNotFound(String field, StringBuffer skeleton) {
+        if ( SimpleDateFormat.isFieldUnitIgnored(skeleton.toString(), field) ) {
+            // single date
+            DateIntervalInfo.PatternInfo ptnInfo = 
+                new DateIntervalInfo.PatternInfo(null, fDateFormat.toPattern(),
+                                                 fInfo.getDefaultOrder());
+            fIntervalPatterns.put(field, ptnInfo);
+            return;
+        } else if ( skeleton.indexOf(field) == -1 ) {
+            skeleton.insert(0,field);
+            genFallbackPattern(field, skeleton, dtpng);
+        }
+    }
+    */
+
+    /*
+     * get separated date and time skeleton from a combined skeleton.
+     *
+     * The difference between date skeleton and normalizedDateSkeleton are:
+     * 1. both 'y' and 'd' are appeared only once in normalizeDateSkeleton
+     * 2. 'E' and 'EE' are normalized into 'EEE'
+     * 3. 'MM' is normalized into 'M'
+     *
+     ** the difference between time skeleton and normalizedTimeSkeleton are:
+     * 1. both 'H' and 'h' are normalized as 'h' in normalized time skeleton,
+     * 2. 'a' is omitted in normalized time skeleton.
+     * 3. there is only one appearance for 'h', 'm','v', 'z' in normalized time
+     *    skeleton
+     *
+     *
+     *  @param skeleton               given combined skeleton.
+     *  @param date                   Output parameter for date only skeleton.
+     *  @param normalizedDate         Output parameter for normalized date only
+     *
+     *  @param time                   Output parameter for time only skeleton.
+     *  @param normalizedTime         Output parameter for normalized time only
+     *                                skeleton.
+     */
+    private static void getDateTimeSkeleton(String skeleton,
+                                            StringBuffer dateSkeleton,
+                                            StringBuffer normalizedDateSkeleton,
+                                            StringBuffer timeSkeleton,
+                                            StringBuffer normalizedTimeSkeleton)
+    {
+        // dateSkeleton follows the sequence of y*M*E*d*
+        // timeSkeleton follows the sequence of hm*[v|z]?
+        int i;
+        int ECount = 0;
+        int dCount = 0;
+        int MCount = 0;
+        int yCount = 0;
+        int hCount = 0;
+        int mCount = 0;
+        int vCount = 0;
+        int zCount = 0;
+    
+        for (i = 0; i < skeleton.length(); ++i) {
+            char ch = skeleton.charAt(i);
+            switch ( ch ) {
+              case 'E':
+                dateSkeleton.append(ch);
+                ++ECount;
+                break;
+              case 'd':
+                dateSkeleton.append(ch);
+                ++dCount;
+                break;
+              case 'M':
+                dateSkeleton.append(ch);
+                ++MCount;
+                break;
+              case 'y':
+                dateSkeleton.append(ch);
+                ++yCount;
+                break;
+              case 'G':
+              case 'Y':
+              case 'u':
+              case 'Q':
+              case 'q':
+              case 'L':
+              case 'l':
+              case 'W':
+              case 'w':
+              case 'D':
+              case 'F':
+              case 'g':
+              case 'e':
+              case 'c':
+                normalizedDateSkeleton.append(ch);
+                dateSkeleton.append(ch);
+                break;
+              case 'a':
+                // 'a' is implicitly handled 
+                timeSkeleton.append(ch);
+                break;
+              case 'h':
+              case 'H':
+                timeSkeleton.append(ch);
+                ++hCount;
+                break;
+              case 'm':
+                timeSkeleton.append(ch);
+                ++mCount;
+                break;
+              case 'z':
+                ++zCount;
+                timeSkeleton.append(ch);
+                break;
+              case 'v':
+                ++vCount;
+                timeSkeleton.append(ch);
+                break;
+              case 'V':
+              case 'Z':
+              case 'k':
+              case 'K':
+              case 'j':
+              case 's':
+              case 'S':
+              case 'A':
+                timeSkeleton.append(ch);
+                normalizedTimeSkeleton.append(ch);
+                break;     
+            }
+        }
+    
+        /* generate normalized form for date*/
+        if ( yCount != 0 ) {
+            normalizedDateSkeleton.append('y');
+        }
+        if ( MCount != 0 ) {
+            if ( MCount < 3 ) {
+                normalizedDateSkeleton.append('M');
+            } else {
+                for ( i = 0; i < MCount && i < 5; ++i ) {
+                     normalizedDateSkeleton.append('M');
+                }
+            }
+        }
+        if ( ECount != 0 ) {
+            if ( ECount <= 3 ) {
+                normalizedDateSkeleton.append('E');
+            } else {
+                for ( i = 0; i < ECount && i < 5; ++i ) {
+                     normalizedDateSkeleton.append('E');
+                }
+            }
+        }
+        if ( dCount != 0 ) {
+            normalizedDateSkeleton.append('d');
+        }
+    
+        /* generate normalized form for time */
+        if ( hCount != 0 ) {
+            normalizedTimeSkeleton.append('h');
+        }
+        if ( mCount != 0 ) {
+            normalizedTimeSkeleton.append('m');
+        }
+        if ( zCount != 0 ) {
+            normalizedTimeSkeleton.append('z');
+        }
+        if ( vCount != 0 ) {
+            normalizedTimeSkeleton.append('v');
+        }
+    }
+
+
+
+    /*
+     * Generate date or time interval pattern from resource.
+     *
+     * It needs to handle the following: 
+     * 1. need to adjust field width.
+     *    For example, the interval patterns saved in DateIntervalInfo
+     *    includes "dMMMy", but not "dMMMMy".
+     *    Need to get interval patterns for dMMMMy from dMMMy.
+     *    Another example, the interval patterns saved in DateIntervalInfo
+     *    includes "hmv", but not "hmz".
+     *    Need to get interval patterns for "hmz' from 'hmv'
+     *
+     * 2. there might be no pattern for 'y' differ for skeleton "Md",
+     *    in order to get interval patterns for 'y' differ,
+     *    need to look for it from skeleton 'yMd'
+     *
+     * @param dateSkeleton   normalized date skeleton
+     * @param timeSkeleton   normalized time skeleton
+     * @param intervalPatterns interval patterns
+     * @return whether there is interval patterns for the skeleton.
+     *         true if there is, false otherwise
+     */
+    private boolean genSeparateDateTimePtn(String dateSkeleton, 
+                                           String timeSkeleton,
+                                           HashMap intervalPatterns)
+    {
+        String skeleton;
+        // if both date and time skeleton present,
+        // the final interval pattern might include time interval patterns
+        // ( when, am_pm, hour, minute differ ),
+        // but not date interval patterns ( when year, month, day differ ).
+        // For year/month/day differ, it falls back to fall-back pattern.
+        if ( timeSkeleton.length() != 0  ) {
+            skeleton = timeSkeleton;
+        } else {
+            skeleton = dateSkeleton;
+        }
+
+        /* interval patterns for skeleton "dMMMy" (but not "dMMMMy") 
+         * are defined in resource,
+         * interval patterns for skeleton "dMMMMy" are calculated by
+         * 1. get the best match skeleton for "dMMMMy", which is "dMMMy"
+         * 2. get the interval patterns for "dMMMy",
+         * 3. extend "MMM" to "MMMM" in above interval patterns for "dMMMMy" 
+         * getBestSkeleton() is step 1.
+         */
+        // best skeleton, and the difference information
+        BestMatchInfo retValue = fInfo.getBestSkeleton(skeleton);
+        String bestSkeleton = retValue.bestMatchSkeleton;
+        int differenceInfo =  retValue.bestMatchDistanceInfo;
+   
+        // difference:
+        // 0 means the best matched skeleton is the same as input skeleton
+        // 1 means the fields are the same, but field width are different
+        // 2 means the only difference between fields are v/z,
+        // -1 means there are other fields difference 
+        if ( differenceInfo == -1 ) { 
+            // skeleton has different fields, not only  v/z difference
+            return false;
+        }
+
+        if ( timeSkeleton.length() == 0 ) {
+            // only has date skeleton
+            genIntervalPattern(Calendar.DATE, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+            SkeletonAndItsBestMatch skeletons = genIntervalPattern(
+                                                  Calendar.MONTH, skeleton, 
+                                                  bestSkeleton, differenceInfo,
+                                                  intervalPatterns);
+            if ( skeletons != null ) {
+                bestSkeleton = skeletons.skeleton;
+                skeleton = skeletons.bestMatchSkeleton;
+            }
+            genIntervalPattern(Calendar.YEAR, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+        } else {
+            genIntervalPattern(Calendar.MINUTE, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+            genIntervalPattern(Calendar.HOUR, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+            genIntervalPattern(Calendar.AM_PM, skeleton, bestSkeleton, differenceInfo, intervalPatterns);
+        }
+        return true;
+
+    }
+
+
+
+    /*
+     * Generate interval pattern from existing resource
+     *
+     * It not only save the interval patterns,
+     * but also return the skeleton and its best match skeleton.
+     *
+     * @param field           largest different calendar field
+     * @param skeleton        skeleton
+     * @param bestSkeleton    the best match skeleton which has interval pattern
+     *                        defined in resource
+     * @param differenceInfo  the difference between skeleton and best skeleton
+     *         0 means the best matched skeleton is the same as input skeleton
+     *         1 means the fields are the same, but field width are different
+     *         2 means the only difference between fields are v/z,
+     *        -1 means there are other fields difference 
+     *
+     * @param intervalPatterns interval patterns
+     *
+     * @return  an extended skeleton or extended best skeleton if applicable.
+     *          null otherwise.
+     */
+    private SkeletonAndItsBestMatch genIntervalPattern(
+                   int field, String skeleton, String bestSkeleton, 
+                   int differenceInfo, HashMap intervalPatterns) {
+        SkeletonAndItsBestMatch retValue = null;
+        DateIntervalInfo.PatternInfo pattern = fInfo.getIntervalPattern(
+                                           bestSkeleton, field);
+        if ( pattern == null ) {
+            // single date
+            if ( SimpleDateFormat.isFieldUnitIgnored(bestSkeleton, field) ) {
+                DateIntervalInfo.PatternInfo ptnInfo = 
+                    new DateIntervalInfo.PatternInfo(fDateFormat.toPattern(),
+                                                     null, 
+                                                     fInfo.getDefaultOrder());
+                intervalPatterns.put(DateIntervalInfo.
+                    CALENDAR_FIELD_TO_PATTERN_LETTER[field], ptnInfo);
+                return null;
+            }
+
+            // for 24 hour system, interval patterns in resource file
+            // might not include pattern when am_pm differ, 
+            // which should be the same as hour differ.
+            // add it here for simplicity
+            if ( field == Calendar.AM_PM ) {
+                 pattern = fInfo.getIntervalPattern(bestSkeleton, 
+                                                         Calendar.HOUR);
+                 if ( pattern != null ) {
+                      // share
+                      intervalPatterns.put(DateIntervalInfo.
+                          CALENDAR_FIELD_TO_PATTERN_LETTER[field], 
+                          pattern);
+                 }
+                 return null;
+            } 
+            // else, looking for pattern when 'y' differ for 'dMMMM' skeleton,
+            // first, get best match pattern "MMMd",
+            // since there is no pattern for 'y' differs for skeleton 'MMMd',
+            // need to look for it from skeleton 'yMMMd',
+            // if found, adjust field width in interval pattern from
+            // "MMM" to "MMMM".
+            String fieldLetter = 
+                DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field];
+            bestSkeleton = fieldLetter + bestSkeleton;
+            skeleton = fieldLetter + skeleton;
+            // for example, looking for patterns when 'y' differ for
+            // skeleton "MMMM".
+            pattern = fInfo.getIntervalPattern(bestSkeleton, field);
+            if ( pattern == null && differenceInfo == 0 ) {
+                // if there is no skeleton "yMMMM" defined,
+                // look for the best match skeleton, for example: "yMMM"
+                BestMatchInfo tmpRetValue = fInfo.getBestSkeleton(skeleton);
+                String tmpBestSkeleton = tmpRetValue.bestMatchSkeleton;
+                differenceInfo =  tmpRetValue.bestMatchDistanceInfo;
+                if ( tmpBestSkeleton.length() != 0 && differenceInfo != -1 ) {
+                    pattern = fInfo.getIntervalPattern(tmpBestSkeleton, field);
+                    bestSkeleton = tmpBestSkeleton;
+                }
+            }
+            if ( pattern != null ) {
+                retValue = new SkeletonAndItsBestMatch(skeleton, bestSkeleton);
+            }
+        } 
+        if ( pattern != null ) {
+            if ( differenceInfo != 0 ) {
+                String part1 = adjustFieldWidth(skeleton, bestSkeleton, 
+                                   pattern.getFirstPart(), differenceInfo);
+                String part2 = adjustFieldWidth(skeleton, bestSkeleton, 
+                                   pattern.getSecondPart(), differenceInfo);
+                pattern =  new DateIntervalInfo.PatternInfo(part1, part2, 
+                                           pattern.firstDateInPtnIsLaterDate());
+            } else {
+                // pattern is immutable, no need to clone; 
+                // pattern = (DateIntervalInfo.PatternInfo)pattern.clone();
+            }
+            intervalPatterns.put(
+              DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field], pattern);
+        }
+        return retValue;
+    }
+
+    /*
+     * Adjust field width in best match interval pattern to match
+     * the field width in input skeleton.
+     *
+     * TODO (xji) make a general solution
+     * The adjusting rule can be:
+     * 1. always adjust
+     * 2. never adjust
+     * 3. default adjust, which means adjust according to the following rules
+     * 3.1 always adjust string, such as MMM and MMMM
+     * 3.2 never adjust between string and numeric, such as MM and MMM
+     * 3.3 always adjust year
+     * 3.4 do not adjust 'd', 'h', or 'm' if h presents
+     * 3.5 do not adjust 'M' if it is numeric(?)
+     *
+     * Since date interval format is well-formed format,
+     * date and time skeletons are normalized previously,
+     * till this stage, the adjust here is only "adjust strings, such as MMM
+     * and MMMM, EEE and EEEE.
+     *
+     * @param inputSkeleton            the input skeleton
+     * @param bestMatchSkeleton        the best match skeleton
+     * @param bestMatchIntervalpattern the best match interval pattern
+     * @param differenceInfo           the difference between 2 skeletons
+     *                                 1 means only field width differs
+     *                                 2 means v/z exchange
+     * @return the adjusted interval pattern
+     */
+    private static String adjustFieldWidth(String inputSkeleton,
+                                    String bestMatchSkeleton,
+                                    String bestMatchIntervalPattern,
+                                    int differenceInfo ) {
+        
+        if ( bestMatchIntervalPattern == null ) {
+            return null; // the 2nd part could be null
+        }
+        int[] inputSkeletonFieldWidth = new int[58];
+        int[] bestMatchSkeletonFieldWidth = new int[58];
+
+        /* initialize as following
+        {
+        //       A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
+            0, 0, 0, 0, 0,  0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0,
+        //   P   Q   R   S   T   U   V   W   X   Y   Z
+            0, 0, 0, 0, 0,  0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0,
+        //       a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
+            0, 0, 0, 0, 0,  0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0,
+        //   p   q   r   s   t   u   v   w   x   y   z
+            0, 0, 0, 0, 0,  0, 0,  0,  0, 0, 0, 0, 0,  0, 0, 0,
+        };
+        */
+
+
+        DateIntervalInfo.parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
+        DateIntervalInfo.parseSkeleton(bestMatchSkeleton, bestMatchSkeletonFieldWidth);
+        if ( differenceInfo == 2 ) {
+            bestMatchIntervalPattern = bestMatchIntervalPattern.replace('v', 'z');
+        }
+
+        StringBuffer adjustedPtn = new StringBuffer(bestMatchIntervalPattern);
+
+        boolean inQuote = false;
+        char prevCh = 0;
+        int count = 0;
+    
+        int PATTERN_CHAR_BASE = 0x41;
+        
+        // loop through the pattern string character by character 
+        int adjustedPtnLength = adjustedPtn.length();
+        for (int i = 0; i < adjustedPtnLength; ++i) {
+            char ch = adjustedPtn.charAt(i);
+            if (ch != prevCh && count > 0) {
+                // check the repeativeness of pattern letter
+                char skeletonChar = prevCh;
+                if ( skeletonChar == 'L' ) {
+                    // for skeleton "M+", the pattern is "...L..." 
+                    skeletonChar = 'M';
+                }
+                int fieldCount = bestMatchSkeletonFieldWidth[(int)(skeletonChar - PATTERN_CHAR_BASE)];
+                int inputFieldCount = inputSkeletonFieldWidth[(int)(skeletonChar - PATTERN_CHAR_BASE)];
+                if ( fieldCount == count && inputFieldCount > fieldCount ) {
+                    count = inputFieldCount - fieldCount;
+                    for ( int j = 0; j < count; ++j ) {
+                        adjustedPtn.insert(i, prevCh);    
+                    }                    
+                    i += count;
+                    adjustedPtnLength += count;
+                }
+                count = 0;
+            }
+            if (ch == '\'') {
+                // Consecutive single quotes are a single quote literal,
+                // either outside of quotes or between quotes
+                if ((i+1) < adjustedPtn.length() && adjustedPtn.charAt(i+1) == '\'') {
+                    ++i;
+                } else {
+                    inQuote = ! inQuote;
+                }
+            } 
+            else if ( ! inQuote && ((ch >= 0x0061 /*'a'*/ && ch <= 0x007A /*'z'*/) 
+                        || (ch >= 0x0041 /*'A'*/ && ch <= 0x005A /*'Z'*/))) {
+                // ch is a date-time pattern character 
+                prevCh = ch;
+                ++count;
+            }
+        }
+        if ( count > 0 ) {
+            // last item
+            // check the repeativeness of pattern letter
+            char skeletonChar = prevCh;
+            if ( skeletonChar == 'L' ) {
+                // for skeleton "M+", the pattern is "...L..." 
+                skeletonChar = 'M';
+            }
+            int fieldCount = bestMatchSkeletonFieldWidth[(int)(skeletonChar - PATTERN_CHAR_BASE)];
+            int inputFieldCount = inputSkeletonFieldWidth[(int)(skeletonChar - PATTERN_CHAR_BASE)];
+            if ( fieldCount == count && inputFieldCount > fieldCount ) {
+                count = inputFieldCount - fieldCount;
+                for ( int j = 0; j < count; ++j ) {
+                    adjustedPtn.append(prevCh);    
+                }                    
+            }
+        }
+        return adjustedPtn.toString();
+    }
+
+
+    /*
+     * Concat a single date pattern with a time interval pattern,
+     * set it into the intervalPatterns, while field is time field.
+     * This is used to handle time interval patterns on skeleton with
+     * both time and date. Present the date followed by 
+     * the range expression for the time.
+     * @param dtfmt                  date and time format
+     * @param datePattern            date pattern
+     * @param field                  time calendar field: AM_PM, HOUR, MINUTE
+     * @param intervalPatterns       interval patterns
+     */
+    private void concatSingleDate2TimeInterval(String dtfmt,
+                                               String datePattern,
+                                               int field,
+                                               HashMap intervalPatterns)
+    {
+
+        DateIntervalInfo.PatternInfo  timeItvPtnInfo = 
+          (DateIntervalInfo.PatternInfo)intervalPatterns.get(
+              DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field]);
+        if ( timeItvPtnInfo != null ) {
+            String timeIntervalPattern = timeItvPtnInfo.getFirstPart() + 
+                                         timeItvPtnInfo.getSecondPart();
+            String pattern = MessageFormat.format(dtfmt, new Object[] 
+                                         {timeIntervalPattern, datePattern});
+            timeItvPtnInfo = DateIntervalInfo.genPatternInfo(pattern,
+                                timeItvPtnInfo.firstDateInPtnIsLaterDate());
+            intervalPatterns.put(
+              DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field], timeItvPtnInfo);
+        } 
+        // else: fall back
+        // it should not happen if the interval format defined is valid
+    }
+
+
+    /*
+     * check whether a calendar field present in a skeleton.
+     * @param field      calendar field need to check
+     * @param skeleton   given skeleton on which to check the calendar field
+     * @return           true if field present in a skeleton.
+     */
+    private static boolean fieldExistsInSkeleton(int field, String skeleton)
+    {
+        String fieldChar = DateIntervalInfo.CALENDAR_FIELD_TO_PATTERN_LETTER[field];
+        return ( (skeleton.indexOf(fieldChar) == -1) ? false : true ) ;
+    }
+
+
+    /*
+     * readObject.
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        initializePattern();
+    }
+}
diff --git a/src/com/ibm/icu/text/DateIntervalInfo.java b/src/com/ibm/icu/text/DateIntervalInfo.java
new file mode 100644
index 0000000..9422730
--- /dev/null
+++ b/src/com/ibm/icu/text/DateIntervalInfo.java
@@ -0,0 +1,968 @@
+/*
+*   Copyright (C) 2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.text;
+
+import java.io.Serializable;
+
+import java.util.MissingResourceException;
+import java.util.Iterator;
+import java.util.HashMap;
+import java.util.HashSet;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.Freezable;
+import com.ibm.icu.util.UResourceBundle;
+
+
+/**
+ * DateIntervalInfo is a public class for encapsulating localizable
+ * date time interval patterns. It is used by DateIntervalFormat.
+ *
+ * <P>
+ * For most users, ordinary use of DateIntervalFormat does not need to create
+ * DateIntervalInfo object directly.
+ * DateIntervalFormat will take care of it when creating a date interval
+ * formatter when user pass in skeleton and locale.
+ *
+ * <P>
+ * For power users, who want to create their own date interval patterns,
+ * or want to re-set date interval patterns, they could do so by
+ * directly creating DateIntervalInfo and manupulating it.
+ *
+ * <P>
+ * Logically, the interval patterns are mappings
+ * from (skeleton, the_largest_different_calendar_field)
+ * to (date_interval_pattern).
+ *
+ * <P>
+ * A skeleton 
+ * <ol>
+ * <li>
+ * only keeps the field pattern letter and ignores all other parts 
+ * in a pattern, such as space, punctuations, and string literals.
+ * <li>
+ * hides the order of fields. 
+ * <li>
+ * might hide a field's pattern letter length.
+ *
+ * For those non-digit calendar fields, the pattern letter length is 
+ * important, such as MMM, MMMM, and MMMMM; EEE and EEEE, 
+ * and the field's pattern letter length is honored.
+ *    
+ * For the digit calendar fields,  such as M or MM, d or dd, yy or yyyy, 
+ * the field pattern length is ignored and the best match, which is defined 
+ * in date time patterns, will be returned without honor the field pattern
+ * letter length in skeleton.
+ * </ol>
+ *
+ * <P>
+ * The calendar fields we support for interval formatting are:
+ * year, month, date, day-of-week, am-pm, hour, hour-of-day, and minute.
+ * Those calendar fields can be defined in the following order:
+ * year >  month > date > am-pm > hour >  minute 
+ *  
+ * The largest different calendar fields between 2 calendars is the
+ * first different calendar field in above order.
+ *
+ * For example: the largest different calendar fields between "Jan 10, 2007" 
+ * and "Feb 20, 2008" is year.
+ *   
+ * <P>
+ * There is a set of pre-defined static skeleton strings.
+ * There are pre-defined interval patterns for those pre-defined skeletons
+ * in locales' resource files.
+ * For example, for a skeleton YEAR_ABBR_MONTH_DAY, which is  "yMMMd",
+ * in  en_US, if the largest different calendar field between date1 and date2 
+ * is "year", the date interval pattern  is "MMM d, yyyy - MMM d, yyyy", 
+ * such as "Jan 10, 2007 - Jan 10, 2008".
+ * If the largest different calendar field between date1 and date2 is "month",
+ * the date interval pattern is "MMM d - MMM d, yyyy",
+ * such as "Jan 10 - Feb 10, 2007".
+ * If the largest different calendar field between date1 and date2 is "day",
+ * the date interval pattern is ""MMM d-d, yyyy", such as "Jan 10-20, 2007".
+ *
+ * For date skeleton, the interval patterns when year, or month, or date is 
+ * different are defined in resource files.
+ * For time skeleton, the interval patterns when am/pm, or hour, or minute is
+ * different are defined in resource files.
+ *
+ *
+ * <P>
+ * There are 2 dates in interval pattern. For most locales, the first date
+ * in an interval pattern is the earlier date. There might be a locale in which
+ * the first date in an interval pattern is the later date.
+ * We use fallback format for the default order for the locale.
+ * For example, if the fallback format is "{0} - {1}", it means
+ * the first date in the interval pattern for this locale is earlier date.
+ * If the fallback format is "{1} - {0}", it means the first date is the 
+ * later date.
+ * For a particular interval pattern, the default order can be overriden
+ * by prefixing "latestFirst:" or "earliestFirst:" to the interval pattern.
+ * For example, if the fallback format is "{0}-{1}",
+ * but for skeleton "yMMMd", the interval pattern when day is different is 
+ * "latestFirst:d-d MMM yy", it means by default, the first date in interval
+ * pattern is the earlier date. But for skeleton "yMMMd", when day is different,
+ * the first date in "d-d MMM yy" is the later date.
+ * 
+ * <P>
+ * The recommended way to create a DateIntervalFormat object is to pass in 
+ * the locale. 
+ * By using a Locale parameter, the DateIntervalFormat object is 
+ * initialized with the pre-defined interval patterns for a given or 
+ * default locale.
+ * <P>
+ * Users can also create DateIntervalFormat object 
+ * by supplying their own interval patterns.
+ * It provides flexibility for power usage.
+ *
+ * <P>
+ * After a DateIntervalInfo object is created, clients may modify
+ * the interval patterns using setIntervalPattern function as so desired.
+ * Currently, users can only set interval patterns when the following 
+ * calendar fields are different: ERA, YEAR, MONTH, DATE,  DAY_OF_MONTH, 
+ * DAY_OF_WEEK, AM_PM,  HOUR, HOUR_OF_DAY, and MINUTE.
+ * Interval patterns when other calendar fields are different is not supported.
+ * <P>
+ * DateIntervalInfo objects are cloneable. 
+ * When clients obtain a DateIntervalInfo object, 
+ * they can feel free to modify it as necessary.
+ * <P>
+ * DateIntervalInfo are not expected to be subclassed. 
+ * Data for a calendar is loaded out of resource bundles. 
+ * To ICU 4.0, date interval patterns are only supported in Gregorian calendar.
+ * 
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+**/
+
+public class DateIntervalInfo implements Cloneable, Freezable, Serializable {
+    /* Save the interval pattern information.
+     * Interval pattern consists of 2 single date patterns and the separator.
+     * For example, interval pattern "MMM d - MMM d, yyyy" consists
+     * a single date pattern "MMM d", another single date pattern "MMM d, yyyy",
+     * and a separator "-".
+     * Also, the first date appears in an interval pattern could be 
+     * the earlier date or the later date.
+     * And such information is saved in the interval pattern as well.
+     */
+    static final int currentSerialVersion = 1;
+
+    /**
+     * PatternInfo class saves the first and second part of interval pattern,
+     * and whether the interval pattern is earlier date first.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final class PatternInfo implements Cloneable, Serializable {
+        static final int currentSerialVersion = 1;
+        private static final long serialVersionUID = 1;
+        private final String fIntervalPatternFirstPart;
+        private final String fIntervalPatternSecondPart;
+        /*
+         * Whether the first date in interval pattern is later date or not.
+         * Fallback format set the default ordering.
+         * And for a particular interval pattern, the order can be 
+         * overriden by prefixing the interval pattern with "latestFirst:" or 
+         * "earliestFirst:"
+         * For example, given 2 date, Jan 10, 2007 to Feb 10, 2007.
+         * if the fallback format is "{0} - {1}", 
+         * and the pattern is "d MMM - d MMM yyyy", the interval format is
+         * "10 Jan - 10 Feb, 2007".
+         * If the pattern is "latestFirst:d MMM - d MMM yyyy", 
+         * the interval format is "10 Feb - 10 Jan, 2007"
+         */
+        private final boolean fFirstDateInPtnIsLaterDate;
+
+        /**
+         * constructor
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public PatternInfo(String firstPart, String secondPart,
+                           boolean firstDateInPtnIsLaterDate) {
+            fIntervalPatternFirstPart = firstPart;
+            fIntervalPatternSecondPart = secondPart;
+            fFirstDateInPtnIsLaterDate = firstDateInPtnIsLaterDate;
+        }
+
+        /**
+         * accessor
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public String getFirstPart() {
+            return fIntervalPatternFirstPart;
+        }
+
+        /**
+         * accessor
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public String getSecondPart() {
+            return fIntervalPatternSecondPart;
+        }
+
+        /**
+         * accessor
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public boolean firstDateInPtnIsLaterDate() {
+            return fFirstDateInPtnIsLaterDate;
+        }
+
+        /**
+         * Override equals
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public boolean equals(Object a) {
+            if ( a instanceof PatternInfo ) {
+                PatternInfo patternInfo = (PatternInfo)a;
+                return Utility.objectEquals(fIntervalPatternFirstPart, patternInfo.fIntervalPatternFirstPart) && 
+                       Utility.objectEquals(fIntervalPatternSecondPart, fIntervalPatternSecondPart) &&
+                       fFirstDateInPtnIsLaterDate == patternInfo.fFirstDateInPtnIsLaterDate;
+            }
+            return false;
+        }
+
+        /**
+         * Override hashcode
+         * @draft ICU 4.0
+         * @provisional This API might change or be removed in a future release.
+         */
+        public int hashCode() {
+            int hash = fIntervalPatternFirstPart != null ? fIntervalPatternFirstPart.hashCode() : 0;
+            if (fIntervalPatternSecondPart != null) {
+                hash ^= fIntervalPatternSecondPart.hashCode();
+            }
+            if (fFirstDateInPtnIsLaterDate) {
+                hash ^= -1;
+            }
+            return hash;
+        }
+    }
+
+    // Following is package protected since 
+    // it is shared with DateIntervalFormat.
+    static final String[] CALENDAR_FIELD_TO_PATTERN_LETTER = 
+    {
+        "G", "y", "M",
+        "w", "W", "d", 
+        "D", "E", "F",
+        "a", "h", "H",
+        "m",
+    };
+
+
+    private static final long serialVersionUID = 1;
+    private static final int MINIMUM_SUPPORTED_CALENDAR_FIELD = 
+                                                          Calendar.MINUTE;
+    //private static boolean DEBUG = true;
+
+    private static String FALLBACK_STRING = "fallback";
+    private static String LATEST_FIRST_PREFIX = "latestFirst:";
+    private static String EARLIEST_FIRST_PREFIX = "earliestFirst:";
+
+    // DateIntervalInfo cache
+    private final static ICUCache DIICACHE = new SimpleCache();
+
+    // default interval pattern on the skeleton, {0} - {1}
+    private String fFallbackIntervalPattern;
+    // default order
+    private boolean fFirstDateInPtnIsLaterDate = false;
+
+    // HashMap<String, HashMap<String, PatternInfo> >
+    // HashMap( skeleton, HashMap(largest_different_field, pattern) )
+    private HashMap fIntervalPatterns = null;
+
+    private transient boolean frozen = false;
+
+
+    /**
+     * Create empty instance.
+     * It does not initialize any interval patterns except
+     * that it initialize default fall-back pattern as "{0} - {1}",
+     * which can be reset by setFallbackIntervalPattern().
+     *
+     * It should be followed by setFallbackIntervalPattern() and 
+     * setIntervalPattern(), 
+     * and is recommended to be used only for power users who
+     * wants to create their own interval patterns and use them to create
+     * date interval formatter.
+     * @internal ICU 4.0
+     * @deprecated This API is ICU internal only.
+     */
+    public DateIntervalInfo() 
+    {
+        fIntervalPatterns = new HashMap();
+        fFallbackIntervalPattern = "{0} \u2013 {1}";
+    }
+
+
+    /** 
+     * Construct DateIntervalInfo for the given locale,
+     * @param locale  the interval patterns are loaded from the Gregorian 
+     *                calendar data in this locale.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateIntervalInfo(ULocale locale) 
+    {
+        initializeData(locale);
+    }
+
+
+    /*
+     * Initialize the DateIntervalInfo from locale
+     * @param locale   the given locale.
+     */
+    private void initializeData(ULocale locale)
+    {
+        String key = locale.toString();
+        DateIntervalInfo dii = (DateIntervalInfo) DIICACHE.get(key);
+        if ( dii == null ) {
+            // initialize data from scratch
+            setup(locale);
+            // TODO: should put a clone in cache?
+            // or put itself in cache?
+            // DIICACHE.put(key, this);
+            dii = (DateIntervalInfo)this.clone();
+            DIICACHE.put(key, dii);
+        } else {
+            initializeData(dii);
+        }
+    }
+
+ 
+
+    /*
+     * Initialize DateIntervalInfo from another instance
+     * @param dii  an DateIntervalInfo instance
+     */
+    private void initializeData(DateIntervalInfo dii) {
+        fFallbackIntervalPattern = dii.fFallbackIntervalPattern;
+        fFirstDateInPtnIsLaterDate = dii.fFirstDateInPtnIsLaterDate;
+        fIntervalPatterns = dii.fIntervalPatterns;
+    }
+
+
+    /*
+     * Initialize DateIntervalInfo from calendar data
+     * @param calData  calendar data
+     */
+    private void setup(ULocale locale) {
+        int DEFAULT_HASH_SIZE = 19;
+        fIntervalPatterns = new HashMap(DEFAULT_HASH_SIZE);
+        // initialize to guard if there is no interval date format defined in 
+        // resource files
+        fFallbackIntervalPattern = "{0} \u2013 {1}";
+        HashSet skeletonSet = new HashSet();
+        try {
+            // loop through all locales to get all available skeletons'
+            // interval format
+            ULocale parentLocale = locale;
+            // TODO: how to check for root
+            //while ( !parentLocale.equals(ULocale.ROOT) ) {
+            while (parentLocale != null && !parentLocale.equals(ULocale.ROOT)) {
+                String name = parentLocale.getName();
+                if ( name.length() == 0 ) {
+                    break;
+                }
+
+                ICUResourceBundle rb = (ICUResourceBundle) UResourceBundle.
+                  getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+                rb = rb.getWithFallback("calendar");
+                ICUResourceBundle gregorianBundle = rb.getWithFallback(
+                                                              "gregorian");
+                ICUResourceBundle itvDtPtnResource =gregorianBundle.
+                                      getWithFallback("intervalFormats");
+                // look for fallback first, since it establishes the default order
+                String fallback = itvDtPtnResource.getStringWithFallback(
+                                                          FALLBACK_STRING);
+                setFallbackIntervalPattern(fallback);
+                int size = itvDtPtnResource.getSize();
+                for ( int index = 0; index < size; ++index ) {
+                    String skeleton = itvDtPtnResource.get(index).getKey();
+                    if ( skeletonSet.contains(skeleton) ) {
+                        continue;
+                    }
+                    skeletonSet.add(skeleton);
+                    if ( skeleton.compareTo(FALLBACK_STRING) == 0 ) {
+                        continue;
+                    }
+                    ICUResourceBundle intervalPatterns =
+                        itvDtPtnResource.getWithFallback(skeleton);
+                    int ptnNum = intervalPatterns.getSize();
+                    for ( int ptnIndex = 0; ptnIndex < ptnNum; ++ptnIndex) {
+                        String key = intervalPatterns.get(ptnIndex).getKey();
+                        String pattern = intervalPatterns.get(ptnIndex).getString();
+    
+                        int calendarField = Calendar.MILLISECONDS_IN_DAY + 1;
+                        if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.YEAR]) == 0 ) {
+                            calendarField = Calendar.YEAR;    
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MONTH]) == 0 ) {
+                            calendarField = Calendar.MONTH;
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE]) == 0 ) {
+                            calendarField = Calendar.DATE;
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.AM_PM]) == 0 ) {
+                            calendarField = Calendar.AM_PM;    
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR]) == 0 ) {
+                            calendarField = Calendar.HOUR;    
+                        } else if ( key.compareTo(CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.MINUTE]) == 0 ) {
+                            calendarField = Calendar.MINUTE;    
+                        }
+             
+                        if ( calendarField != Calendar.MILLISECONDS_IN_DAY + 1 ) {
+                            setIntervalPatternInternally(skeleton, key, pattern);
+                        }
+                    }
+                }
+                parentLocale = parentLocale.getFallback();
+            }
+        } catch ( MissingResourceException e) {
+            // ok, will fallback to {data0} - {date1}
+        }
+    }
+
+
+    /*
+     * Split interval patterns into 2 part.
+     * @param intervalPattern  interval pattern
+     * @return the index in interval pattern which split the pattern into 2 part
+     */
+    private static int splitPatternInto2Part(String intervalPattern) {
+        boolean inQuote = false;
+        char prevCh = 0;
+        int count = 0;
+    
+        /* repeatedPattern used to record whether a pattern has already seen.
+           It is a pattern applies to first calendar if it is first time seen,
+           otherwise, it is a pattern applies to the second calendar
+         */
+        int[] patternRepeated = new int[58];
+
+        int PATTERN_CHAR_BASE = 0x41;
+        
+        /* loop through the pattern string character by character looking for
+         * the first repeated pattern letter, which breaks the interval pattern
+         * into 2 parts. 
+         */
+        int i;
+        boolean foundRepetition = false;
+        for (i = 0; i < intervalPattern.length(); ++i) {
+            char ch = intervalPattern.charAt(i);
+            
+            if (ch != prevCh && count > 0) {
+                // check the repeativeness of pattern letter
+                int repeated = patternRepeated[(int)(prevCh - PATTERN_CHAR_BASE)];
+                if ( repeated == 0 ) {
+                    patternRepeated[prevCh - PATTERN_CHAR_BASE] = 1;
+                } else {
+                    foundRepetition = true;
+                    break;
+                }
+                count = 0;
+            }
+            if (ch == '\'') {
+                // Consecutive single quotes are a single quote literal,
+                // either outside of quotes or between quotes
+                if ((i+1) < intervalPattern.length() && 
+                    intervalPattern.charAt(i+1) == '\'') {
+                    ++i;
+                } else {
+                    inQuote = ! inQuote;
+                }
+            } 
+            else if (!inQuote && ((ch >= 0x0061 /*'a'*/ && ch <= 0x007A /*'z'*/)
+                        || (ch >= 0x0041 /*'A'*/ && ch <= 0x005A /*'Z'*/))) {
+                // ch is a date-time pattern character 
+                prevCh = ch;
+                ++count;
+            }
+        }
+        // check last pattern char, distinguish
+        // "dd MM" ( no repetition ), 
+        // "d-d"(last char repeated ), and 
+        // "d-d MM" ( repetition found )
+        if ( count > 0 && foundRepetition == false ) {
+            if ( patternRepeated[(int)(prevCh - PATTERN_CHAR_BASE)] == 0 ) {
+                count = 0;
+            }
+        }
+        return (i - count);
+    }
+
+
+    /** 
+     * Provides a way for client to build interval patterns.
+     * User could construct DateIntervalInfo by providing 
+     * a list of skeletons and their patterns.
+     * <P>
+     * For example:
+     * <pre>
+     * DateIntervalInfo dIntervalInfo = new DateIntervalInfo();
+     * dIntervalInfo.setIntervalPattern("yMd", Calendar.YEAR, "'from' yyyy-M-d 'to' yyyy-M-d"); 
+     * dIntervalInfo.setIntervalPattern("yMMMd", Calendar.MONTH, "'from' yyyy MMM d 'to' MMM d");
+     * dIntervalInfo.setIntervalPattern("yMMMd", Calendar.DAY, "yyyy MMM d-d");
+     * dIntervalInfo.setFallbackIntervalPattern("{0} ~ {1}");
+     * </pre>
+     *
+     * Restriction: 
+     * Currently, users can only set interval patterns when the following 
+     * calendar fields are different: ERA, YEAR, MONTH, DATE,  DAY_OF_MONTH, 
+     * DAY_OF_WEEK, AM_PM,  HOUR, HOUR_OF_DAY, and MINUTE.
+     * Interval patterns when other calendar fields are different are 
+     * not supported.
+     *
+     * @param skeleton         the skeleton on which interval pattern based
+     * @param lrgDiffCalUnit   the largest different calendar unit.
+     * @param intervalPattern  the interval pattern on the largest different
+     *                         calendar unit.
+     *                         For example, if lrgDiffCalUnit is 
+     *                         "year", the interval pattern for en_US when year
+     *                         is different could be "'from' yyyy 'to' yyyy".
+     * @throws IllegalArgumentException  if setting interval pattern on 
+     *                            a calendar field that is smaller
+     *                            than the MINIMUM_SUPPORTED_CALENDAR_FIELD 
+     * @throws UnsupportedOperationException  if the object is frozen
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setIntervalPattern(String skeleton, 
+                                   int lrgDiffCalUnit, 
+                                   String intervalPattern)
+    {
+        if ( frozen ) {
+            throw new UnsupportedOperationException("no modification is allowed after DII is frozen");
+        }
+        if ( lrgDiffCalUnit > MINIMUM_SUPPORTED_CALENDAR_FIELD ) {
+            throw new IllegalArgumentException("calendar field is larger than MINIMUM_SUPPORTED_CALENDAR_FIELD");
+        }
+
+        PatternInfo ptnInfo = setIntervalPatternInternally(skeleton,
+                          CALENDAR_FIELD_TO_PATTERN_LETTER[lrgDiffCalUnit], 
+                          intervalPattern);
+        if ( lrgDiffCalUnit == Calendar.HOUR_OF_DAY ) {
+            setIntervalPattern(skeleton, 
+                               CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.AM_PM],
+                               ptnInfo);
+            setIntervalPattern(skeleton, 
+                               CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.HOUR],
+                               ptnInfo);
+        } else if ( lrgDiffCalUnit == Calendar.DAY_OF_MONTH ||
+                    lrgDiffCalUnit == Calendar.DAY_OF_WEEK ) {
+            setIntervalPattern(skeleton, 
+                               CALENDAR_FIELD_TO_PATTERN_LETTER[Calendar.DATE],
+                               ptnInfo);
+        }
+    }
+
+
+    /* Set Interval pattern.
+     *
+     * It generates the interval pattern info, 
+     * afer which, not only sets the interval pattern info into the hash map,
+     * but also returns the interval pattern info to the caller
+     * so that caller can re-use it.
+     *
+     * @param skeleton         skeleton on which the interval pattern based
+     * @param lrgDiffCalUnit   the largest different calendar unit.
+     * @param intervalPattern  the interval pattern on the largest different
+     *                         calendar unit.
+     * @return the interval pattern pattern information
+     */
+    private PatternInfo setIntervalPatternInternally(String skeleton,
+                                                String lrgDiffCalUnit,
+                                                String intervalPattern) {
+        HashMap patternsOfOneSkeleton = (HashMap)fIntervalPatterns.get(skeleton);
+        boolean emptyHash = false;
+        if ( patternsOfOneSkeleton == null ) {
+            patternsOfOneSkeleton = new HashMap();
+            emptyHash = true;
+        }
+        boolean order = fFirstDateInPtnIsLaterDate;
+        // check for "latestFirst:" or "earliestFirst:" prefix
+        if ( intervalPattern.startsWith(LATEST_FIRST_PREFIX) ) {
+            order = true;
+            int prefixLength = LATEST_FIRST_PREFIX.length();
+            intervalPattern = intervalPattern.substring(prefixLength, intervalPattern.length());
+        } else if ( intervalPattern.startsWith(EARLIEST_FIRST_PREFIX) ) {
+            order = false;
+            int earliestFirstLength = EARLIEST_FIRST_PREFIX.length();
+            intervalPattern = intervalPattern.substring(earliestFirstLength, intervalPattern.length());
+        }
+        PatternInfo itvPtnInfo = genPatternInfo(intervalPattern, order);
+        
+        patternsOfOneSkeleton.put(lrgDiffCalUnit, itvPtnInfo);
+        if ( emptyHash == true ) {
+            fIntervalPatterns.put(skeleton, patternsOfOneSkeleton);
+        }
+
+        return itvPtnInfo;
+    }
+
+
+    /* Set Interval pattern.
+     *
+     * @param skeleton         skeleton on which the interval pattern based
+     * @param lrgDiffCalUnit   the largest different calendar unit.
+     * @param ptnInfo          interval pattern infomration 
+     */
+    private void setIntervalPattern(String skeleton,
+                                    String lrgDiffCalUnit,
+                                    PatternInfo ptnInfo) {
+        HashMap patternsOfOneSkeleton = (HashMap)fIntervalPatterns.get(skeleton);
+        patternsOfOneSkeleton.put(lrgDiffCalUnit, ptnInfo);
+    }
+
+
+    /**
+     * Break interval patterns as 2 part and save them into pattern info.
+     * @param intervalPattern  interval pattern
+     * @param laterDateFirst   whether the first date in intervalPattern
+     *                         is earlier date or later date
+     * @return                 pattern info object
+     * @internal ICU 4.0
+     * @deprecated This API is ICU internal only.
+     */
+    static PatternInfo genPatternInfo(String intervalPattern, 
+                                      boolean laterDateFirst) {
+        int splitPoint = splitPatternInto2Part(intervalPattern);
+        
+        String firstPart = intervalPattern.substring(0, splitPoint);
+        String secondPart = null;
+        if ( splitPoint < intervalPattern.length() ) {
+            secondPart = intervalPattern.substring(splitPoint, intervalPattern.length());
+        }
+
+        return new PatternInfo(firstPart, secondPart, laterDateFirst);
+    }
+
+
+    /**
+     * Get the interval pattern given the largest different calendar field.
+     * @param skeleton   the skeleton
+     * @param field      the largest different calendar field
+     * @return interval pattern  return null if interval pattern is not found.
+     * @throws IllegalArgumentException  if getting interval pattern on 
+     *                            a calendar field that is smaller
+     *                            than the MINIMUM_SUPPORTED_CALENDAR_FIELD 
+     * @draft ICU 4.0 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PatternInfo getIntervalPattern(String skeleton, int field) 
+    {
+        if ( field > MINIMUM_SUPPORTED_CALENDAR_FIELD ) {
+            throw new IllegalArgumentException("no support for field less than MINUTE");
+        }
+        HashMap patternsOfOneSkeleton = (HashMap) fIntervalPatterns.get(skeleton);
+        if ( patternsOfOneSkeleton != null ) {
+            PatternInfo intervalPattern = (PatternInfo) patternsOfOneSkeleton.
+                get(CALENDAR_FIELD_TO_PATTERN_LETTER[field]);
+            if ( intervalPattern != null ) {
+                return intervalPattern;
+            }
+        }
+        return null;
+    }
+
+
+
+    /**
+     * Get the fallback interval pattern.
+     * @return fallback interval pattern
+     * @draft ICU 4.0 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getFallbackIntervalPattern()
+    {
+        return fFallbackIntervalPattern;
+    }
+
+
+    /**
+     * Re-set the fallback interval pattern.
+     *
+     * In construction, default fallback pattern is set as "{0} - {1}".
+     * And constructor taking locale as parameter will set the
+     * fallback pattern as what defined in the locale resource file.
+     *
+     * This method provides a way for user to replace the fallback pattern.
+     *
+     * @param fallbackPattern                 fall-back interval pattern.
+     * @throws UnsupportedOperationException  if the object is frozen
+     * @throws IllegalArgumentException       if there is no pattern {0} or 
+     *                                        pattern {1} in fallbakckPattern
+     *                   
+     * @draft ICU 4.0 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setFallbackIntervalPattern(String fallbackPattern)
+    {
+        if ( frozen ) {
+            throw new UnsupportedOperationException("no modification is allowed after DII is frozen");
+        }
+        int firstPatternIndex = fallbackPattern.indexOf("{0}");
+        int secondPatternIndex = fallbackPattern.indexOf("{1}");
+        if ( firstPatternIndex == -1 || secondPatternIndex == -1 ) {
+            throw new IllegalArgumentException("no pattern {0} or pattern {1} in fallbackPattern");
+        }
+        if ( firstPatternIndex > secondPatternIndex ) {
+            fFirstDateInPtnIsLaterDate = true;
+        }
+        fFallbackIntervalPattern = fallbackPattern;
+    }
+
+
+    /**
+     * Get default order -- whether the first date in pattern is later date
+     *                      or not.
+     *
+     * return default date ordering in interval pattern. TRUE if the first date 
+     *        in pattern is later date, FALSE otherwise.
+     * @draft ICU 4.0 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean getDefaultOrder()
+    {
+        return fFirstDateInPtnIsLaterDate;
+    }
+
+
+    /**
+     * Boilerplate. Clone this object.
+     * @return     a copy of the object
+     * @draft ICU4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object clone() 
+    {
+        if ( frozen ) {
+            return this;
+        }
+        return cloneUnfrozenDII();
+    }
+
+
+    /*
+     * Clone an unfrozen DateIntervalInfo object.
+     * @return     a copy of the object
+     */
+    private Object cloneUnfrozenDII() //throws IllegalStateException
+    {
+        try {
+            DateIntervalInfo other = (DateIntervalInfo) super.clone();
+            other.fFallbackIntervalPattern=fFallbackIntervalPattern;
+            other.fFirstDateInPtnIsLaterDate = fFirstDateInPtnIsLaterDate;
+            other.fIntervalPatterns = new HashMap();
+            Iterator iter = fIntervalPatterns.keySet().iterator();
+            while ( iter.hasNext() ) {
+                String skeleton = (String) iter.next();
+                HashMap patternsOfOneSkeleton = (HashMap)fIntervalPatterns.get(skeleton);
+                HashMap oneSetPtn = new HashMap();
+                Iterator patternIter = patternsOfOneSkeleton.keySet().iterator();
+                while ( patternIter.hasNext() ) {
+                    String calField = (String) patternIter.next();
+                    PatternInfo value = (PatternInfo) patternsOfOneSkeleton.get(calField);
+                    oneSetPtn.put(calField, value);
+                }
+                other.fIntervalPatterns.put(skeleton, oneSetPtn);    
+            }
+            other.frozen = false;
+            return other;
+        } catch ( CloneNotSupportedException e ) {
+            throw new  IllegalStateException("clone is not supported");
+        }
+    }
+
+    
+    /**
+     * Boilerplate for Freezable
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object freeze() {
+        frozen = true;
+        return this;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object cloneAsThawed() {
+        DateIntervalInfo result = (DateIntervalInfo) (this.cloneUnfrozenDII());
+        return result;
+    }
+
+
+    /**
+     * Parse skeleton, save each field's width.
+     * It is used for looking for best match skeleton,
+     * and adjust pattern field width.
+     * @param skeleton            skeleton to be parsed
+     * @param skeletonFieldWidth  parsed skeleton field width
+     * @internal ICU 4.0
+     * @deprecated This API is ICU internal only.
+     */
+    static void parseSkeleton(String skeleton, int[] skeletonFieldWidth) {
+        int PATTERN_CHAR_BASE = 0x41;
+        for ( int i = 0; i < skeleton.length(); ++i ) {
+            ++skeletonFieldWidth[(int)(skeleton.charAt(i) - PATTERN_CHAR_BASE)];
+        }
+    }
+
+
+
+    /*
+     * Check whether one field width is numeric while the other is string.
+     *
+     * TODO (xji): make it general
+     *
+     * @param fieldWidth          one field width
+     * @param anotherFieldWidth   another field width
+     * @param patternLetter       pattern letter char
+     * @return true if one field width is numeric and the other is string,
+     *         false otherwise.
+     */
+    private static boolean stringNumeric(int fieldWidth,
+                                         int anotherFieldWidth,
+                                         char patternLetter) {
+        if ( patternLetter == 'M' ) {
+            if ( fieldWidth <= 2 && anotherFieldWidth > 2 ||
+                 fieldWidth > 2 && anotherFieldWidth <= 2 ) {
+                return true;
+            }
+        }        
+        return false;
+    }
+
+
+    /*
+     * given an input skeleton, get the best match skeleton 
+     * which has pre-defined interval pattern in resource file.
+     *
+     * TODO (xji): set field weight or
+     *             isolate the funtionality in DateTimePatternGenerator
+     * @param  inputSkeleton        input skeleton
+     * @return 0, if there is exact match for input skeleton
+     *         1, if there is only field width difference between 
+     *            the best match and the input skeleton
+     *         2, the only field difference is 'v' and 'z'
+     *        -1, if there is calendar field difference between
+     *            the best match and the input skeleton
+     */
+    DateIntervalFormat.BestMatchInfo getBestSkeleton(String inputSkeleton) {
+        String bestSkeleton = inputSkeleton;
+        int[] inputSkeletonFieldWidth = new int[58];
+        int[] skeletonFieldWidth = new int[58];
+
+        final int DIFFERENT_FIELD = 0x1000;
+        final int STRING_NUMERIC_DIFFERENCE = 0x100;
+        final int BASE = 0x41;
+
+        // TODO: this is a hack for 'v' and 'z'
+        // resource bundle only have time skeletons ending with 'v',
+        // but not for time skeletons ending with 'z'.
+        boolean replaceZWithV = false;
+        if ( inputSkeleton.indexOf('z') != -1 ) {
+            inputSkeleton = inputSkeleton.replace('z', 'v');
+            replaceZWithV = true;
+        }
+
+        parseSkeleton(inputSkeleton, inputSkeletonFieldWidth);
+        int bestDistance = Integer.MAX_VALUE;
+        // 0 means exact the same skeletons;
+        // 1 means having the same field, but with different length,
+        // 2 means only z/v differs
+        // -1 means having different field.
+        int bestFieldDifference = 0;
+        Iterator iter = fIntervalPatterns.keySet().iterator();
+        while ( iter.hasNext() ) {
+            String skeleton = (String)iter.next();
+            // clear skeleton field width
+            for ( int i = 0; i < skeletonFieldWidth.length; ++i ) {
+                skeletonFieldWidth[i] = 0;    
+            }
+            parseSkeleton(skeleton, skeletonFieldWidth);
+            // calculate distance
+            int distance = 0;
+            int fieldDifference = 1;
+            for ( int i = 0; i < inputSkeletonFieldWidth.length; ++i ) {
+                int inputFieldWidth = inputSkeletonFieldWidth[i];
+                int fieldWidth = skeletonFieldWidth[i];
+                if ( inputFieldWidth == fieldWidth ) {
+                    continue;
+                }
+                if ( inputFieldWidth == 0 ) {
+                    fieldDifference = -1;
+                    distance += DIFFERENT_FIELD;
+                } else if ( fieldWidth == 0 ) {
+                    fieldDifference = -1;
+                    distance += DIFFERENT_FIELD;
+                } else if (stringNumeric(inputFieldWidth, fieldWidth, 
+                                         (char)(i+BASE) ) ) {
+                    distance += STRING_NUMERIC_DIFFERENCE;
+                } else {
+                    distance += Math.abs(inputFieldWidth - fieldWidth);
+                }
+            }
+            if ( distance < bestDistance ) {
+                bestSkeleton = skeleton;
+                bestDistance = distance;
+                bestFieldDifference = fieldDifference;
+            }
+            if ( distance == 0 ) {
+                bestFieldDifference = 0;
+                break;
+            }
+        }
+        if ( replaceZWithV && bestFieldDifference != -1 ) {
+            bestFieldDifference = 2;
+        }
+        return new DateIntervalFormat.BestMatchInfo(bestSkeleton, bestFieldDifference);
+    }
+
+    /**
+     * Override equals
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object a) {
+        if ( a instanceof DateIntervalInfo ) {
+            DateIntervalInfo dtInfo = (DateIntervalInfo)a;
+            return fIntervalPatterns.equals(dtInfo.fIntervalPatterns);
+        }
+        return false;
+    }
+
+    /**
+     * Override hashcode
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int hashCode() {
+        return fIntervalPatterns.hashCode();
+    }
+    
+}// end class DateIntervalInfo
diff --git a/src/com/ibm/icu/text/DateTimePatternGenerator.java b/src/com/ibm/icu/text/DateTimePatternGenerator.java
new file mode 100644
index 0000000..ad76149
--- /dev/null
+++ b/src/com/ibm/icu/text/DateTimePatternGenerator.java
@@ -0,0 +1,1811 @@
+//##header J2SE15
+/*
+ ********************************************************************************
+ * Copyright (C) 2006-2008, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                             *
+ ********************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.PatternTokenizer;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.Freezable;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Collection;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##import java.util.HashMap;
+//#endif
+import java.util.HashSet;
+import java.util.Iterator;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+//import java.util.LinkedHashMap;
+//import java.util.LinkedHashSet;
+//#endif
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+/**
+ * This class provides flexible generation of date format patterns, like
+ * "yy-MM-dd". The user can build up the generator by adding successive
+ * patterns. Once that is done, a query can be made using a "skeleton", which is
+ * a pattern which just includes the desired fields and lengths. The generator
+ * will return the "best fit" pattern corresponding to that skeleton.
+ * <p>
+ * The main method people will use is getBestPattern(String skeleton), since
+ * normally this class is pre-built with data from a particular locale. However,
+ * generators can be built directly from other data as well.
+ * <pre>
+ * // some simple use cases
+ * Date sampleDate = new Date(99, 9, 13, 23, 58, 59);
+ * ULocale locale = ULocale.GERMANY;
+ * TimeZone zone = TimeZone.getTimeZone(&quot;Europe/Paris&quot;);
+ * 
+ * // make from locale
+ * 
+ * DateTimePatternGenerator gen = DateTimePatternGenerator.getInstance(locale);
+ * SimpleDateFormat format = new SimpleDateFormat(gen.getBestPattern(&quot;MMMddHmm&quot;),
+ *     locale);
+ * format.setTimeZone(zone);
+ * assertEquals(&quot;simple format: MMMddHmm&quot;, 
+ *     &quot;8:58 14. Okt&quot;,
+ *     format.format(sampleDate));
+ * // (a generator can be built from scratch, but that is not a typical use case)
+ * 
+ * // modify the generator by adding patterns
+ * DateTimePatternGenerator.PatternInfo returnInfo = new DateTimePatternGenerator.PatternInfo();
+ * gen.add(&quot;d'. von' MMMM&quot;, true, returnInfo);
+ * // the returnInfo is mostly useful for debugging problem cases
+ * format.applyPattern(gen.getBestPattern(&quot;MMMMddHmm&quot;));
+ * assertEquals(&quot;modified format: MMMddHmm&quot;,
+ *     &quot;8:58 14. von Oktober&quot;,
+ *     format.format(sampleDate));
+ * 
+ * // get a pattern and modify it
+ * format = (SimpleDateFormat) DateFormat.getDateTimeInstance(DateFormat.FULL,
+ *     DateFormat.FULL, locale);
+ * format.setTimeZone(zone);
+ * String pattern = format.toPattern();
+ * assertEquals(&quot;full-date&quot;,
+ *     &quot;Donnerstag, 14. Oktober 1999 8:58 Uhr GMT+02:00&quot;,
+ *     format.format(sampleDate));
+ * 
+ * // modify it to change the zone.
+ * String newPattern = gen.replaceFieldTypes(pattern, &quot;vvvv&quot;);
+ * format.applyPattern(newPattern);
+ * assertEquals(&quot;full-date, modified zone&quot;,
+ *     &quot;Donnerstag, 14. Oktober 1999 8:58 Uhr Frankreich&quot;,
+ *     format.format(sampleDate));
+ * </pre>
+ * @stable ICU 3.6
+ */
+public class DateTimePatternGenerator implements Freezable, Cloneable {
+    // debugging flags
+    //static boolean SHOW_DISTANCE = false;
+    // TODO add hack to fix months for CJK, as per bug ticket 1099
+    
+    /**
+     * Create empty generator, to be constructed with add(...) etc.
+     * @stable ICU 3.6
+     */
+    public static DateTimePatternGenerator getEmptyInstance() {
+        return new DateTimePatternGenerator();
+    }
+    
+    /**
+     * Only for use by subclasses
+     * @stable ICU 3.6
+     */
+    protected DateTimePatternGenerator() {         
+    }
+    
+    /**
+     * Construct a flexible generator according to data for a given locale.
+     * @stable ICU 3.6
+     */
+    public static DateTimePatternGenerator getInstance() {
+        return getInstance(ULocale.getDefault());
+    }
+    
+    /**
+     * Construct a flexible generator according to data for a given locale.
+     * @param uLocale
+     * @stable ICU 3.6
+     */
+    public static DateTimePatternGenerator getInstance(ULocale uLocale) {
+        String localeKey = uLocale.toString();
+        DateTimePatternGenerator result = (DateTimePatternGenerator)DTPNG_CACHE.get(localeKey);
+        if (result != null) {
+            return result;
+        }
+        result = new DateTimePatternGenerator();
+        String lang = uLocale.getLanguage();
+        if (lang.equals("zh") || lang.equals("ko") || lang.equals("ja")) {
+          result.chineseMonthHack = true;
+        }
+        PatternInfo returnInfo = new PatternInfo();
+        String hackPattern = null;
+        // first load with the ICU patterns
+        for (int i = DateFormat.FULL; i <= DateFormat.SHORT; ++i) {
+            SimpleDateFormat df = (SimpleDateFormat) DateFormat.getDateInstance(i, uLocale);
+            result.addPattern(df.toPattern(), false, returnInfo);
+            df = (SimpleDateFormat) DateFormat.getTimeInstance(i, uLocale);
+            result.addPattern(df.toPattern(), false, returnInfo);
+            // HACK for hh:ss
+            if (i == DateFormat.MEDIUM) {
+                hackPattern = df.toPattern();
+            }
+        }
+
+        ICUResourceBundle rb = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, uLocale);
+        rb = rb.getWithFallback("calendar");
+        ICUResourceBundle gregorianBundle = rb.getWithFallback("gregorian");
+        // CLDR item formats
+        
+        ICUResourceBundle itemBundle = gregorianBundle.getWithFallback("appendItems");
+        for (int i=0; i<itemBundle.getSize(); ++i) {
+            ICUResourceBundle formatBundle = (ICUResourceBundle)itemBundle.get(i);
+            String formatName = itemBundle.get(i).getKey();
+            String value = formatBundle.getString();
+            result.setAppendItemFormat(getAppendFormatNumber(formatName), value);
+        }
+        
+        // CLDR item names
+        itemBundle = gregorianBundle.getWithFallback("fields");
+        ICUResourceBundle fieldBundle, dnBundle;
+        for (int i=0; i<TYPE_LIMIT; ++i) {
+            if ( isCLDRFieldName(i) ) {
+                fieldBundle = itemBundle.getWithFallback(CLDR_FIELD_NAME[i]);
+                dnBundle = fieldBundle.getWithFallback("dn");
+                String value = dnBundle.getString();
+                //System.out.println("Field name:"+value);
+                result.setAppendItemName(i, value);
+            }
+        }
+          
+        // set the AvailableFormat in CLDR
+        try {
+           ICUResourceBundle formatBundle =  gregorianBundle.getWithFallback("availableFormats");
+           //System.out.println("available format from current locale:"+uLocale.getName());
+           for (int i=0; i<formatBundle.getSize(); ++i) { 
+               String formatKey = formatBundle.get(i).getKey();
+               String formatValue = formatBundle.get(i).getString();
+               //System.out.println(" availableFormat:"+formatValue);
+               result.setAvailableFormat(formatKey);
+               result.addPattern(formatValue, false, returnInfo);
+           } 
+        }catch(Exception e) {
+        }
+       
+        ULocale parentLocale=uLocale;
+        while ( (parentLocale=parentLocale.getFallback()) != null) {
+            ICUResourceBundle prb = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, parentLocale);
+            prb = prb.getWithFallback("calendar");
+            ICUResourceBundle pGregorianBundle = prb.getWithFallback("gregorian");
+            try {
+                ICUResourceBundle formatBundle =  pGregorianBundle.getWithFallback("availableFormats");
+                //System.out.println("available format from parent locale:"+parentLocale.getName());
+                for (int i=0; i<formatBundle.getSize(); ++i) { 
+                    String formatKey = formatBundle.get(i).getKey();
+                    String formatValue = formatBundle.get(i).getString();
+                    //System.out.println(" availableFormat:"+formatValue);
+                    if (!result.isAvailableFormatSet(formatKey)) {
+                        result.setAvailableFormat(formatKey);
+                        result.addPattern(formatValue, false, returnInfo);
+                        //System.out.println(" availableFormat:"+formatValue);
+                    }
+                } 
+              
+             }catch(Exception e) {
+             }
+             
+        }
+        
+        // assume it is always big endian (ok for CLDR right now)
+        // some languages didn't add mm:ss or HH:mm, so put in a hack to compute that from the short time.
+        if (hackPattern != null) {
+            hackTimes(result, returnInfo, hackPattern);
+        }
+        
+        // set the datetime pattern. This is ugly code -- there should be a public interface for this
+        Calendar cal = Calendar.getInstance(uLocale);
+        CalendarData calData = new CalendarData(uLocale, cal.getType());
+        String[] patterns = calData.get("DateTimePatterns").getStringArray();
+        result.setDateTimeFormat(patterns[8]);
+        
+        // decimal point for seconds
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(uLocale);
+        result.setDecimal(String.valueOf(dfs.getDecimalSeparator()));
+        DTPNG_CACHE.put(localeKey, result);
+        return result;
+    }
+    
+    private static void hackTimes(DateTimePatternGenerator result, PatternInfo returnInfo, String hackPattern) {
+        result.fp.set(hackPattern);
+        String mmss = new String();
+        // to get mm:ss, we strip all but mm literal ss
+        boolean gotMm = false;
+        for (int i = 0; i < result.fp.items.size(); ++i) {
+            Object item = result.fp.items.get(i);
+            if (item instanceof String) {
+                if (gotMm) {
+                    mmss += result.fp.quoteLiteral(item.toString());
+                }
+            } else {
+                char ch = item.toString().charAt(0);
+                if (ch == 'm') {
+                    gotMm = true;
+                    mmss += item;
+                } else if (ch == 's') {
+                    if (!gotMm) {
+                        break; // failed
+                    }
+                    mmss += item;
+                    result.addPattern(mmss, false, returnInfo);
+                    break;
+                } else if (gotMm || ch == 'z' || ch == 'Z' || ch == 'v' || ch == 'V') {
+                    break; // failed
+                }
+            }
+        }
+        // to get hh:mm, we strip (literal ss) and (literal S)
+        // the easiest way to do this is to mark the stuff we want to nuke, then remove it in a second pass.
+        BitSet variables = new BitSet();
+        BitSet nuke = new BitSet();
+        for (int i = 0; i < result.fp.items.size(); ++i) {
+            Object item = result.fp.items.get(i);
+            if (item instanceof VariableField) {
+                variables.set(i);
+                char ch = item.toString().charAt(0);
+                if (ch == 's' || ch == 'S') {
+                    nuke.set(i);
+                    for (int j = i-1; j >= 0; ++j) {
+                        if (variables.get(j)) break;
+                        nuke.set(i);
+                    }
+                }
+            }
+        }
+        String hhmm = getFilteredPattern(result.fp, nuke);
+        result.addPattern(hhmm, false, returnInfo);
+    }
+    
+    private static String getFilteredPattern(FormatParser fp, BitSet nuke) {
+        String result = new String();
+        for (int i = 0; i < fp.items.size(); ++i) {
+            if (nuke.get(i)) continue;
+            Object item = fp.items.get(i);
+            if (item instanceof String) {
+                result += fp.quoteLiteral(item.toString());
+            } else {
+                result += item.toString();
+            }
+        }
+        return result;
+    }
+    
+    /*private static int getAppendNameNumber(String string) {
+        for (int i = 0; i < CLDR_FIELD_NAME.length; ++i) {
+            if (CLDR_FIELD_NAME[i].equals(string)) return i;
+        }
+        return -1;
+    }*/
+    
+    private static int getAppendFormatNumber(String string) {
+        for (int i = 0; i < CLDR_FIELD_APPEND.length; ++i) {
+            if (CLDR_FIELD_APPEND[i].equals(string)) return i;
+        }
+        return -1;
+        
+    }
+
+    private static boolean isCLDRFieldName(int index) {
+        if ((index<0) && (index>=TYPE_LIMIT)) {
+            return false;
+        }
+        if (CLDR_FIELD_NAME[index].charAt(0) == '*') {
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+    
+    
+    /**
+     * Return the best pattern matching the input skeleton. It is guaranteed to
+     * have all of the fields in the skeleton.
+     * 
+     * @param skeleton
+     *            The skeleton is a pattern containing only the variable fields.
+     *            For example, "MMMdd" and "mmhh" are skeletons.
+     * @stable ICU 3.6
+     */
+    public String getBestPattern(String skeleton) {
+        if (chineseMonthHack) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            int monidx = skeleton.indexOf("MMM");
+//##            if (monidx >= 0) {
+//##                StringBuffer tmp = new StringBuffer(skeleton.substring(0, monidx));
+//##                tmp.append("MM");
+//##                monidx += 3;
+//##                while (monidx < skeleton.length()) {
+//##                    if (skeleton.charAt(monidx) != 'M') {
+//##                        break;
+//##                    }
+//##                    monidx++;
+//##                }
+//##                tmp.append(skeleton.substring(monidx));
+//##                skeleton = tmp.toString();
+//##            }
+//#else
+            skeleton = skeleton.replaceAll("MMM+", "MM");
+//#endif
+        }
+        //if (!isComplete) complete();
+        current.set(skeleton, fp);
+        String best = getBestRaw(current, -1, _distanceInfo);
+        if (_distanceInfo.missingFieldMask == 0 && _distanceInfo.extraFieldMask == 0) {
+            // we have a good item. Adjust the field types
+            return adjustFieldTypes(best, current, false);
+        }
+        int neededFields = current.getFieldMask();
+        // otherwise break up by date and time.
+        String datePattern = getBestAppending(neededFields & DATE_MASK);
+        String timePattern = getBestAppending(neededFields & TIME_MASK);
+        
+        if (datePattern == null) return timePattern == null ? "" : timePattern;
+        if (timePattern == null) return datePattern;
+        return MessageFormat.format(getDateTimeFormat(), new Object[]{timePattern, datePattern});
+    }
+    
+    /**
+     * PatternInfo supplies output parameters for add(...). It is used because
+     * Java doesn't have real output parameters. It is treated like a struct (eg
+     * Point), so all fields are public.
+     * 
+     * @stable ICU 3.6
+     */
+    public static final class PatternInfo { // struct for return information
+        /**
+         * @stable ICU 3.6
+         */
+        public static final int OK = 0;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public static final int BASE_CONFLICT = 1;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public static final int CONFLICT = 2;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public int status;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public String conflictingPattern;
+        
+        /**
+         * Simple constructor, since this is treated like a struct.
+         * @stable ICU 3.6
+         */
+        public PatternInfo() {
+        }
+    }
+    
+    /**
+     * Adds a pattern to the generator. If the pattern has the same skeleton as
+     * an existing pattern, and the override parameter is set, then the previous
+     * value is overriden. Otherwise, the previous value is retained. In either
+     * case, the conflicting information is returned in PatternInfo.
+     * <p>
+     * Note that single-field patterns (like "MMM") are automatically added, and
+     * don't need to be added explicitly!
+     * 
+     * @param override
+     *            when existing values are to be overridden use true, otherwise
+     *            use false.
+     * @stable ICU 3.6
+     */
+    public DateTimePatternGenerator addPattern(String pattern, boolean override, PatternInfo returnInfo) {
+        checkFrozen();
+        DateTimeMatcher matcher = new DateTimeMatcher().set(pattern, fp);
+        String basePattern = matcher.getBasePattern();
+        String previousPatternWithSameBase = (String)basePattern_pattern.get(basePattern);
+        if (previousPatternWithSameBase != null) {
+            returnInfo.status = PatternInfo.BASE_CONFLICT;
+            returnInfo.conflictingPattern = previousPatternWithSameBase;
+            if (!override) return this;
+        }
+        String previousValue = (String)skeleton2pattern.get(matcher);
+        if (previousValue != null) {
+            returnInfo.status = PatternInfo.CONFLICT;
+            returnInfo.conflictingPattern = previousValue;
+            if (!override) return this;
+        }
+        returnInfo.status = PatternInfo.OK;
+        returnInfo.conflictingPattern = "";
+        skeleton2pattern.put(matcher, pattern);
+        basePattern_pattern.put(basePattern, pattern);
+        return this;
+    }
+    
+    /**
+     * Utility to return a unique skeleton from a given pattern. For example,
+     * both "MMM-dd" and "dd/MMM" produce the skeleton "MMMdd".
+     * 
+     * @param pattern
+     *            Input pattern, such as "dd/MMM"
+     * @return skeleton, such as "MMMdd"
+     * @stable ICU 3.6
+     */
+    public String getSkeleton(String pattern) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            current.set(pattern, fp);
+            return current.toString();
+        }
+    }
+    
+    /**
+     * Utility to return a unique base skeleton from a given pattern. This is
+     * the same as the skeleton, except that differences in length are minimized
+     * so as to only preserve the difference between string and numeric form. So
+     * for example, both "MMM-dd" and "d/MMM" produce the skeleton "MMMd"
+     * (notice the single d).
+     * 
+     * @param pattern
+     *            Input pattern, such as "dd/MMM"
+     * @return skeleton, such as "MMMdd"
+     * @stable ICU 3.6
+     */
+    public String getBaseSkeleton(String pattern) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            current.set(pattern, fp);
+            return current.getBasePattern();
+        }
+    }
+    
+    /**
+     * Return a list of all the skeletons (in canonical form) from this class,
+     * and the patterns that they map to.
+     * 
+     * @param result
+     *            an output Map in which to place the mapping from skeleton to
+     *            pattern. If you want to see the internal order being used,
+     *            supply a LinkedHashMap. If the input value is null, then a
+     *            LinkedHashMap is allocated.
+     *            <p>
+     *            <i>Issue: an alternate API would be to just return a list of
+     *            the skeletons, and then have a separate routine to get from
+     *            skeleton to pattern.</i>
+     * @return the input Map containing the values.
+     * @stable ICU 3.6
+     */
+    public Map getSkeletons(Map result) {
+        if (result == null) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##            result = new HashMap();
+//#else
+//            result = new LinkedHashMap();
+//#endif
+        }
+        for (Iterator it = skeleton2pattern.keySet().iterator(); it.hasNext();) {
+            DateTimeMatcher item = (DateTimeMatcher) it.next();
+            String pattern = (String) skeleton2pattern.get(item);
+            if (CANONICAL_SET.contains(pattern)) continue;
+            result.put(item.toString(), pattern);
+        }
+        return result;
+    }
+    
+    /**
+     * Return a list of all the base skeletons (in canonical form) from this class
+     * @stable ICU 3.6
+     */
+    public Set getBaseSkeletons(Set result) {
+        if (result == null) result = new HashSet();
+        result.addAll(basePattern_pattern.keySet());
+        return result;
+    }
+    
+    /**
+     * Adjusts the field types (width and subtype) of a pattern to match what is
+     * in a skeleton. That is, if you supply a pattern like "d-M H:m", and a
+     * skeleton of "MMMMddhhmm", then the input pattern is adjusted to be
+     * "dd-MMMM hh:mm". This is used internally to get the best match for the
+     * input skeleton, but can also be used externally.
+     * 
+     * @param pattern
+     *            input pattern
+     * @param skeleton
+     * @return pattern adjusted to match the skeleton fields widths and
+     *         subtypes.
+     * @stable ICU 3.6
+     */
+    public String replaceFieldTypes(String pattern, String skeleton) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            return adjustFieldTypes(pattern, current.set(skeleton, fp), false);
+        }
+    }
+    
+    /**
+     * The date time format is a message format pattern used to compose date and
+     * time patterns. The default value is "{0} {1}", where {0} will be replaced
+     * by the date pattern and {1} will be replaced by the time pattern.
+     * <p>
+     * This is used when the input skeleton contains both date and time fields,
+     * but there is not a close match among the added patterns. For example,
+     * suppose that this object was created by adding "dd-MMM" and "hh:mm", and
+     * its datetimeFormat is the default "{0} {1}". Then if the input skeleton
+     * is "MMMdhmm", there is not an exact match, so the input skeleton is
+     * broken up into two components "MMMd" and "hmm". There are close matches
+     * for those two skeletons, so the result is put together with this pattern,
+     * resulting in "d-MMM h:mm".
+     * 
+     * @param dateTimeFormat
+     *            message format pattern, here {0} will be replaced by the date
+     *            pattern and {1} will be replaced by the time pattern.
+     * @stable ICU 3.6
+     */
+    public void setDateTimeFormat(String dateTimeFormat) {
+        checkFrozen();
+        this.dateTimeFormat = dateTimeFormat;
+    }
+    
+    /**
+     * Getter corresponding to setDateTimeFormat.
+     * 
+     * @return pattern
+     * @stable ICU 3.6
+     */
+    public String getDateTimeFormat() {
+        return dateTimeFormat;
+    }
+    
+    /**
+     * The decimal value is used in formatting fractions of seconds. If the
+     * skeleton contains fractional seconds, then this is used with the
+     * fractional seconds. For example, suppose that the input pattern is
+     * "hhmmssSSSS", and the best matching pattern internally is "H:mm:ss", and
+     * the decimal string is ",". Then the resulting pattern is modified to be
+     * "H:mm:ss,SSSS"
+     * 
+     * @param decimal
+     * @stable ICU 3.6
+     */
+    public void setDecimal(String decimal) {
+        checkFrozen();
+        this.decimal = decimal;
+    }
+    
+    /**
+     * Getter corresponding to setDecimal.
+     * @return string corresponding to the decimal point
+     * @stable ICU 3.6
+     */
+    public String getDecimal() {
+        return decimal;
+    }
+    
+    /**
+     * Redundant patterns are those which if removed, make no difference in the
+     * resulting getBestPattern values. This method returns a list of them, to
+     * help check the consistency of the patterns used to build this generator.
+     * 
+     * @param output
+     *            stores the redundant patterns that are removed. To get these
+     *            in internal order, supply a LinkedHashSet. If null, a
+     *            collection is allocated.
+     * @return the collection with added elements.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Collection getRedundants(Collection output) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            if (output == null) {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                output = new HashSet();
+//#else
+//                output = new LinkedHashSet();
+//#endif
+            }
+            for (Iterator it = skeleton2pattern.keySet().iterator(); it.hasNext();) {
+                DateTimeMatcher cur = (DateTimeMatcher) it.next();
+                String pattern = (String) skeleton2pattern.get(cur);
+                if (CANONICAL_SET.contains(pattern)) continue;
+                skipMatcher = cur;
+                String trial = getBestPattern(cur.toString());
+                if (trial.equals(pattern)) {
+                    output.add(pattern);
+                }
+            }
+            if (false) { // ordered
+                DateTimePatternGenerator results = new DateTimePatternGenerator();
+                PatternInfo pinfo = new PatternInfo();
+                for (Iterator it = skeleton2pattern.keySet().iterator(); it.hasNext();) {
+                    DateTimeMatcher cur = (DateTimeMatcher) it.next();
+                    String pattern = (String) skeleton2pattern.get(cur);
+                    if (CANONICAL_SET.contains(pattern)) continue;
+                    //skipMatcher = current;
+                    String trial = results.getBestPattern(cur.toString());
+                    if (trial.equals(pattern)) {
+                        output.add(pattern);
+                    } else {
+                        results.addPattern(pattern, false, pinfo);
+                    }
+                }
+            }
+            return output;
+        }
+    }
+    
+    // Field numbers, used for AppendItem functions
+    
+    /** 
+     * @stable ICU 3.6
+     */
+    static final public int ERA = 0;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int YEAR = 1; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int QUARTER = 2; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int MONTH = 3;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int WEEK_OF_YEAR = 4; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int WEEK_OF_MONTH = 5; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int WEEKDAY = 6; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int DAY = 7;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int DAY_OF_YEAR = 8; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int DAY_OF_WEEK_IN_MONTH = 9; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int DAYPERIOD = 10;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int HOUR = 11; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int MINUTE = 12; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int SECOND = 13; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int FRACTIONAL_SECOND = 14;
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int ZONE = 15; 
+    
+    /**
+     * @stable ICU 3.6
+     */
+    static final public int TYPE_LIMIT = 16;
+    
+    /**
+     * An AppendItem format is a pattern used to append a field if there is no
+     * good match. For example, suppose that the input skeleton is "GyyyyMMMd",
+     * and there is no matching pattern internally, but there is a pattern
+     * matching "yyyyMMMd", say "d-MM-yyyy". Then that pattern is used, plus the
+     * G. The way these two are conjoined is by using the AppendItemFormat for G
+     * (era). So if that value is, say "{0}, {1}" then the final resulting
+     * pattern is "d-MM-yyyy, G".
+     * <p>
+     * There are actually three available variables: {0} is the pattern so far,
+     * {1} is the element we are adding, and {2} is the name of the element.
+     * <p>
+     * This reflects the way that the CLDR data is organized.
+     * 
+     * @param field
+     *            such as ERA
+     * @param value
+     *            pattern, such as "{0}, {1}"
+     * @stable ICU 3.6
+     */
+    public void setAppendItemFormat(int field, String value) {
+        checkFrozen();
+        appendItemFormats[field] = value;
+    }
+    
+    /**
+     * Getter corresponding to setAppendItemFormats. Values below 0 or at or
+     * above TYPE_LIMIT are illegal arguments.
+     * 
+     * @param field
+     * @return append pattern for field
+     * @stable ICU 3.6
+     */
+    public String getAppendItemFormat(int field) {
+        return appendItemFormats[field];
+    }
+    
+    /**
+     * Sets the names of fields, eg "era" in English for ERA. These are only
+     * used if the corresponding AppendItemFormat is used, and if it contains a
+     * {2} variable.
+     * <p>
+     * This reflects the way that the CLDR data is organized.
+     * 
+     * @param field
+     * @param value
+     * @stable ICU 3.6
+     */
+    public void setAppendItemName(int field, String value) {
+        checkFrozen();
+        appendItemNames[field] = value;
+    }
+    
+    /**
+     * Getter corresponding to setAppendItemNames. Values below 0 or at or above
+     * TYPE_LIMIT are illegal arguments.
+     * 
+     * @param field
+     * @return name for field
+     * @stable ICU 3.6
+     */
+    public String getAppendItemName(int field) {
+        return appendItemNames[field];
+    }
+    
+    /**
+     * Determines whether a skeleton contains a single field
+     * 
+     * @param skeleton
+     * @return true or not
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static boolean isSingleField(String skeleton) {
+        char first = skeleton.charAt(0);
+        for (int i = 1; i < skeleton.length(); ++i) {
+            if (skeleton.charAt(i) != first) return false;
+        }
+        return true;
+    }
+    
+     /**
+     * Add key to HashSet cldrAvailableFormatKeys.
+     * 
+     * @param key of the availableFormats in CLDR
+     * @stable ICU 3.6
+     */
+    private void setAvailableFormat(String key) {
+        checkFrozen();
+        cldrAvailableFormatKeys.add(key);
+    }
+    
+    /**
+     * This function checks the corresponding slot of CLDR_AVAIL_FORMAT_KEY[]
+     * has been added to DateTimePatternGenerator.
+     * The function is to avoid the duplicate availableFomats added to
+     * the pattern map from parent locales.
+     * 
+     * @param key of the availableFormatMask in CLDR
+     * @return TRUE if the corresponding slot of CLDR_AVAIL_FORMAT_KEY[]
+     * has been added to DateTimePatternGenerator.
+     * @stable ICU 3.6
+     */
+    private boolean isAvailableFormatSet(String key) {
+        return cldrAvailableFormatKeys.contains(key);
+    }
+
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 3.6
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 3.6
+     */
+    public Object freeze() {
+        frozen = true;
+        return this;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 3.6
+     */
+    public Object cloneAsThawed() {
+        DateTimePatternGenerator result = (DateTimePatternGenerator) (this.clone());
+        frozen = false;
+        return result;
+    }
+    
+    /**
+     * Boilerplate
+     * @stable ICU 3.6
+     */
+    public Object clone() {
+        try {
+            DateTimePatternGenerator result = (DateTimePatternGenerator) (super.clone());
+            result.skeleton2pattern = (TreeMap) skeleton2pattern.clone();
+            result.basePattern_pattern = (TreeMap) basePattern_pattern.clone();
+            result.appendItemFormats = (String[]) appendItemFormats.clone();
+            result.appendItemNames = (String[]) appendItemNames.clone();
+            result.current = new DateTimeMatcher();
+            result.fp = new FormatParser();
+            result._distanceInfo = new DistanceInfo();
+            
+            result.frozen = false;
+            return result;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalArgumentException("Internal Error");
+        }
+    }
+    
+    /**
+     * Utility class for FormatParser. Immutable class that is only used to mark
+     * the difference between a variable field and a literal string. Each
+     * variable field must consist of 1 to n variable characters, representing
+     * date format fields. For example, "VVVV" is valid while "V4" is not, nor
+     * is "44".
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static class VariableField {
+        private final String string;
+        private final int canonicalIndex;
+        
+        /**
+         * Create a variable field: equivalent to VariableField(string,false);
+         * @param string
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public VariableField(String string) {
+            this(string, false);
+        }
+        /**
+         * Create a variable field
+         * @param string
+         * @param strict TODO
+         * @throws IllegalArgumentException if the variable field is not valid.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public VariableField(String string, boolean strict) {
+            canonicalIndex = DateTimePatternGenerator.getCanonicalIndex(string, strict);
+            if (canonicalIndex < 0) {
+                throw new IllegalArgumentException("Illegal datetime field:\t"
+                        + string);
+            }
+            this.string = string;
+        }
+        
+        /**
+         * Get the main type of this variable. These types are ERA, QUARTER,
+         * MONTH, DAY, WEEK_OF_YEAR, WEEK_OF_MONTH, WEEKDAY, DAY, DAYPERIOD
+         * (am/pm), HOUR, MINUTE, SECOND,FRACTIONAL_SECOND, ZONE. 
+         * @return main type.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public int getType() {
+            return types[canonicalIndex][1];
+        }
+        
+        /**
+         * Private method.
+         */
+        private int getCanonicalIndex() {
+            return canonicalIndex;
+        }
+
+        /**
+         * Get the string represented by this variable.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public String toString() {
+            return string;
+        }
+    }
+    
+    /**
+     * This class provides mechanisms for parsing a SimpleDateFormat pattern
+     * or generating a new pattern, while handling the quoting. It represents
+     * the result of the parse as a list of items, where each item is either a
+     * literal string or a variable field. When parsing It can be used to find
+     * out which variable fields are in a date format, and in what order, such
+     * as for presentation in a UI as separate text entry fields. It can also be
+     * used to construct new SimpleDateFormats.
+     * <p>Example:
+     * <pre>
+    public boolean containsZone(String pattern) {
+        for (Iterator it = formatParser.set(pattern).getItems().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (item instanceof VariableField) {
+                VariableField variableField = (VariableField) item;
+                if (variableField.getType() == DateTimePatternGenerator.ZONE) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+     *  </pre>
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    static public class FormatParser {
+        private transient PatternTokenizer tokenizer = new PatternTokenizer()
+        .setSyntaxCharacters(new UnicodeSet("[a-zA-Z]"))
+        .setExtraQuotingCharacters(new UnicodeSet("[[[:script=Latn:][:script=Cyrl:]]&[[:L:][:M:]]]"))
+        //.setEscapeCharacters(new UnicodeSet("[^\\u0020-\\u007E]")) // WARNING: DateFormat doesn't accept \\uXXXX
+        .setUsingQuote(true);
+        private List items = new ArrayList();
+        
+        /**
+         * Construct an empty date format parser, to which strings and variables can be added with set(...).
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public FormatParser() {
+        }
+
+        /**
+         * Parses the string into a list of items.
+         * @param string
+         * @return this, for chaining
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        final public FormatParser set(String string) {
+            return set(string, false);
+        }
+        
+        /**
+         * Parses the string into a list of items, taking into account all of the quoting that may be going on.
+         * @param string
+         * @param strict If true, then only allows exactly those lengths specified by CLDR for variables. For example, "hh:mm aa" would throw an exception.
+         * @return this, for chaining
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public FormatParser set(String string, boolean strict) {
+            items.clear();
+            if (string.length() == 0) return this;
+            tokenizer.setPattern(string);
+            StringBuffer buffer = new StringBuffer();
+            StringBuffer variable = new StringBuffer();
+            while (true) {
+                buffer.setLength(0);
+                int status = tokenizer.next(buffer);
+                if (status == PatternTokenizer.DONE) break;
+                if (status == PatternTokenizer.SYNTAX) {
+                    if (variable.length() != 0 && buffer.charAt(0) != variable.charAt(0)) {
+                        addVariable(variable, false);
+                    }
+                    variable.append(buffer);
+                } else {
+                    addVariable(variable, false);
+                    items.add(buffer.toString());
+                }
+            }
+            addVariable(variable, false);
+            return this;
+        }
+        
+        private void addVariable(StringBuffer variable, boolean strict) {
+            if (variable.length() != 0) {
+                items.add(new VariableField(variable.toString(), strict));
+                variable.setLength(0);
+            }
+        }
+        
+//        /** Private method. Return a collection of fields. These will be a mixture of literal Strings and VariableFields. Any "a" variable field is removed.
+//         * @param output List to append the items to. If null, is allocated as an ArrayList.
+//         * @return list
+//         */
+//        private List getVariableFields(List output) {
+//            if (output == null) output = new ArrayList();
+//            main:
+//                for (Iterator it = items.iterator(); it.hasNext();) {
+//                    Object item = it.next();
+//                    if (item instanceof VariableField) {
+//                        String s = item.toString();
+//                        switch(s.charAt(0)) {
+//                        //case 'Q': continue main; // HACK
+//                        case 'a': continue main; // remove
+//                        }
+//                        output.add(item);
+//                    }
+//                }
+//            //System.out.println(output);
+//            return output;
+//        }
+        
+//        /**
+//         * Produce a string which concatenates all the variables. That is, it is the logically the same as the input with all literals removed.
+//         * @return a string which is a concatenation of all the variable fields
+//         * @internal
+//         * @deprecated This API is ICU internal only.
+//         */
+//        public String getVariableFieldString() {
+//            List list = getVariableFields(null);
+//            StringBuffer result = new StringBuffer();
+//            for (Iterator it = list.iterator(); it.hasNext();) {
+//                String item = it.next().toString();
+//                result.append(item);
+//            }
+//            return result.toString();
+//        }
+        
+        /**
+         * Returns modifiable list which is a mixture of Strings and VariableFields, in the order found during parsing. The strings represent literals, and have all quoting removed. Thus the string "dd 'de' MM" will parse into three items:
+         * <pre>
+         * VariableField: dd
+         * String: " de "
+         * VariableField: MM
+         * </pre>
+         * The list is modifiable, so you can add any strings or variables to it, or remove any items.
+         * @return modifiable list of items.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public List getItems() {
+            return items;
+        }
+        
+        /** Provide display form of formatted input. Each literal string is quoted if necessary.. That is, if the input was "hh':'mm", the result would be "hh:mm", since the ":" doesn't need quoting. See quoteLiteral().
+         * @return printable output string
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public String toString() {
+            return toString(0, items.size());
+        }
+        
+        /**
+         * Provide display form of a segment of the parsed input. Each literal string is minimally quoted. That is, if the input was "hh':'mm", the result would be "hh:mm", since the ":" doesn't need quoting. See quoteLiteral().
+         * @param start item to start from
+         * @param limit last item +1
+         * @return printable output string
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public String toString(int start, int limit) {
+            StringBuffer result = new StringBuffer();
+            for (int i = start; i < limit; ++i) {
+                Object item = items.get(i);
+                if (item instanceof String) {
+                    String itemString = (String) item;
+                    result.append(tokenizer.quoteLiteral(itemString));
+                } else {
+                    result.append(items.get(i).toString());
+                }
+            }
+            return result.toString();
+        }
+        
+        /**
+         * Returns true if it has a mixture of date and time variable fields: that is, at least one date variable and at least one time variable.
+         * @return true or false
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public boolean hasDateAndTimeFields() {
+            int foundMask = 0;
+            for (Iterator it = items.iterator(); it.hasNext();) {
+                Object item = it.next();
+                if (item instanceof VariableField) {
+                    int type = ((VariableField)item).getType();
+                    foundMask |= 1 << type;    
+                }
+            }
+            boolean isDate = (foundMask & DATE_MASK) != 0;
+            boolean isTime = (foundMask & TIME_MASK) != 0;
+            return isDate && isTime;
+        }
+        
+//        /**
+//         * Internal routine
+//         * @param value
+//         * @param result
+//         * @return list
+//         * @internal
+//         * @deprecated This API is ICU internal only.
+//         */
+//        public List getAutoPatterns(String value, List result) {
+//            if (result == null) result = new ArrayList();
+//            int fieldCount = 0;
+//            int minField = Integer.MAX_VALUE;
+//            int maxField = Integer.MIN_VALUE;
+//            for (Iterator it = items.iterator(); it.hasNext();) {
+//                Object item = it.next();
+//                if (item instanceof VariableField) {
+//                    try {
+//                        int type = ((VariableField)item).getType();
+//                        if (minField > type) minField = type;
+//                        if (maxField < type) maxField = type;
+//                        if (type == ZONE || type == DAYPERIOD || type == WEEKDAY) return result; // skip anything with zones                    
+//                        fieldCount++;
+//                    } catch (Exception e) {
+//                        return result; // if there are any funny fields, return
+//                    }
+//                }
+//            }
+//            if (fieldCount < 3) return result; // skip
+//            // trim from start
+//            // trim first field IF there are no letters around it
+//            // and it is either the min or the max field
+//            // first field is either 0 or 1
+//            for (int i = 0; i < items.size(); ++i) {
+//                Object item = items.get(i);
+//                if (item instanceof VariableField) {
+//                    int type = ((VariableField)item).getType();
+//                    if (type != minField && type != maxField) break;
+//                    
+//                    if (i > 0) {
+//                        Object previousItem = items.get(0);
+//                        if (alpha.containsSome(previousItem.toString())) break;
+//                    }
+//                    int start = i+1;
+//                    if (start < items.size()) {
+//                        Object nextItem = items.get(start);
+//                        if (nextItem instanceof String) {
+//                            if (alpha.containsSome(nextItem.toString())) break;
+//                            start++; // otherwise skip over string
+//                        }
+//                    }
+//                    result.add(toString(start, items.size()));
+//                    break;
+//                }
+//            }
+//            // now trim from end
+//            for (int i = items.size()-1; i >= 0; --i) {
+//                Object item = items.get(i);
+//                if (item instanceof VariableField) {
+//                    int type = ((VariableField)item).getType();
+//                    if (type != minField && type != maxField) break;
+//                    if (i < items.size() - 1) {
+//                        Object previousItem = items.get(items.size() - 1);
+//                        if (alpha.containsSome(previousItem.toString())) break;
+//                    }
+//                    int end = i-1;
+//                    if (end > 0) {
+//                        Object nextItem = items.get(end);
+//                        if (nextItem instanceof String) {
+//                            if (alpha.containsSome(nextItem.toString())) break;
+//                            end--; // otherwise skip over string
+//                        }
+//                    }
+//                    result.add(toString(0, end+1));
+//                    break;
+//                }
+//            }
+//            
+//            return result;
+//        }
+        
+//        private static UnicodeSet alpha = new UnicodeSet("[:alphabetic:]");
+        
+//        private int getType(Object item) {
+//            String s = item.toString();
+//            int canonicalIndex = getCanonicalIndex(s);
+//            if (canonicalIndex < 0) {
+//                throw new IllegalArgumentException("Illegal field:\t"
+//                        + s);
+//            }
+//            int type = types[canonicalIndex][1];
+//            return type;
+//        }
+        
+        /**
+         *  Each literal string is quoted as needed. That is, the ' quote marks will only be added if needed. The exact pattern of quoting is not guaranteed, thus " de la " could be quoted as " 'de la' " or as " 'de' 'la' ".
+         * @param string
+         * @return string with quoted literals
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public Object quoteLiteral(String string) {
+            return tokenizer.quoteLiteral(string);
+        }
+        
+    }
+    // ========= PRIVATES ============
+    
+    private TreeMap skeleton2pattern = new TreeMap(); // items are in priority order
+    private TreeMap basePattern_pattern = new TreeMap(); // items are in priority order
+    private String decimal = "?";
+    private String dateTimeFormat = "{0} {1}";
+    private String[] appendItemFormats = new String[TYPE_LIMIT];
+    private String[] appendItemNames = new String[TYPE_LIMIT];
+    {
+        for (int i = 0; i < TYPE_LIMIT; ++i) {
+            appendItemFormats[i] = "{0} \u251C{2}: {1}\u2524";
+            appendItemNames[i] = "F" + i;
+        }
+    }
+    
+    private transient DateTimeMatcher current = new DateTimeMatcher();
+    private transient FormatParser fp = new FormatParser();
+    private transient DistanceInfo _distanceInfo = new DistanceInfo();
+    //private transient boolean isComplete = false;
+    private transient DateTimeMatcher skipMatcher = null; // only used temporarily, for internal purposes
+    private transient boolean frozen = false;
+    
+    private transient boolean chineseMonthHack = false;
+    
+    private static final int FRACTIONAL_MASK = 1<<FRACTIONAL_SECOND;
+    private static final int SECOND_AND_FRACTIONAL_MASK = (1<<SECOND) | (1<<FRACTIONAL_SECOND);
+
+    // Cache for DateTimePatternGenerator
+    private static ICUCache DTPNG_CACHE = new SimpleCache();
+    
+    private void checkFrozen() {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify frozen object");
+        }
+    }
+    
+    /**
+     * We only get called here if we failed to find an exact skeleton. We have broken it into date + time, and look for the pieces.
+     * If we fail to find a complete skeleton, we compose in a loop until we have all the fields.
+     */
+    private String getBestAppending(int missingFields) {
+        String resultPattern = null;
+        if (missingFields != 0) {
+            resultPattern = getBestRaw(current, missingFields, _distanceInfo);
+            resultPattern = adjustFieldTypes(resultPattern, current, false);
+            
+            while (_distanceInfo.missingFieldMask != 0) { // precondition: EVERY single field must work!
+                
+                // special hack for SSS. If we are missing SSS, and we had ss but found it, replace the s field according to the 
+                // number separator
+                if ((_distanceInfo.missingFieldMask & SECOND_AND_FRACTIONAL_MASK) == FRACTIONAL_MASK
+                        && (missingFields & SECOND_AND_FRACTIONAL_MASK) == SECOND_AND_FRACTIONAL_MASK) {
+                    resultPattern = adjustFieldTypes(resultPattern, current, true);
+                    _distanceInfo.missingFieldMask &= ~FRACTIONAL_MASK; // remove bit
+                    continue;
+                }
+                
+                int startingMask = _distanceInfo.missingFieldMask;
+                String temp = getBestRaw(current, _distanceInfo.missingFieldMask, _distanceInfo);
+                temp = adjustFieldTypes(temp, current, false);
+                int foundMask = startingMask & ~_distanceInfo.missingFieldMask;
+                int topField = getTopBitNumber(foundMask);
+                resultPattern = MessageFormat.format(getAppendFormat(topField), new Object[]{resultPattern, temp, getAppendName(topField)});
+            }
+        }
+        return resultPattern;
+    }
+    
+    private String getAppendName(int foundMask) {
+        return "'" + appendItemNames[foundMask] + "'";
+    }
+    private String getAppendFormat(int foundMask) {
+        return appendItemFormats[foundMask];
+    }
+    
+//    /**
+//     * @param current2
+//     * @return
+//     */
+//    private String adjustSeconds(DateTimeMatcher current2) {
+//        // TODO Auto-generated method stub
+//        return null;
+//    }
+    
+    /**
+     * @param foundMask
+     * @return
+     */
+    private int getTopBitNumber(int foundMask) {
+        int i = 0;
+        while (foundMask != 0) {
+            foundMask >>>= 1;
+            ++i;
+        }
+        return i-1;
+    }
+    
+    /**
+     * 
+     */
+    private void complete() {
+        PatternInfo patternInfo = new PatternInfo();
+        // make sure that every valid field occurs once, with a "default" length
+        for (int i = 0; i < CANONICAL_ITEMS.length; ++i) {
+            //char c = (char)types[i][0];
+            addPattern(String.valueOf(CANONICAL_ITEMS[i]), false, patternInfo);
+        }
+        //isComplete = true;
+    }
+    {
+        complete();
+    }
+    
+    /**
+     * 
+     */
+    private String getBestRaw(DateTimeMatcher source, int includeMask, DistanceInfo missingFields) {
+//      if (SHOW_DISTANCE) System.out.println("Searching for: " + source.pattern 
+//      + ", mask: " + showMask(includeMask));
+        int bestDistance = Integer.MAX_VALUE;
+        String bestPattern = "";
+        DistanceInfo tempInfo = new DistanceInfo();
+        for (Iterator it = skeleton2pattern.keySet().iterator(); it.hasNext();) {
+            DateTimeMatcher trial = (DateTimeMatcher) it.next();
+            if (trial.equals(skipMatcher)) continue;
+            int distance = source.getDistance(trial, includeMask, tempInfo);
+//          if (SHOW_DISTANCE) System.out.println("\tDistance: " + trial.pattern + ":\t" 
+//          + distance + ",\tmissing fields: " + tempInfo);
+            if (distance < bestDistance) {
+                bestDistance = distance;
+                bestPattern = (String) skeleton2pattern.get(trial);
+                missingFields.setTo(tempInfo);
+                if (distance == 0) break;
+            }
+        }
+        return bestPattern;
+    }
+    
+    /**
+     * @param fixFractionalSeconds TODO
+     * 
+     */
+    private String adjustFieldTypes(String pattern, DateTimeMatcher inputRequest, boolean fixFractionalSeconds) {
+        fp.set(pattern);
+        StringBuffer newPattern = new StringBuffer();
+        for (Iterator it = fp.getItems().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (item instanceof String) {
+                newPattern.append(fp.quoteLiteral((String)item));
+            } else {
+                final VariableField variableField = (VariableField) item;
+                String field = variableField.toString();
+//                int canonicalIndex = getCanonicalIndex(field, true);
+//                if (canonicalIndex < 0) {
+//                    continue; // don't adjust
+//                }
+//                int type = types[canonicalIndex][1];
+                int type = variableField.getType();
+                
+                if (fixFractionalSeconds && type == SECOND) {
+                    String newField = inputRequest.original[FRACTIONAL_SECOND];
+                    field = field + decimal + newField;
+                } else if (inputRequest.type[type] != 0) {
+                    String newField = inputRequest.original[type];
+                    // normally we just replace the field. However HOUR is special; we only change the length
+                    if (type != HOUR) {
+                        field = newField;
+                    } else if (field.length() != newField.length()){
+                        char c = field.charAt(0);
+                        field = "";
+                        for (int i = newField.length(); i > 0; --i) field += c;
+                    }
+                }
+                newPattern.append(field);
+            }
+        }
+        //if (SHOW_DISTANCE) System.out.println("\tRaw: " + pattern);
+        return newPattern.toString();
+    }
+    
+//  public static String repeat(String s, int count) {
+//  StringBuffer result = new StringBuffer();
+//  for (int i = 0; i < count; ++i) {
+//  result.append(s);
+//  }
+//  return result.toString();
+//  }
+    
+    /**
+     * internal routine
+     * @param pattern
+     * @return field value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public String getFields(String pattern) {
+        fp.set(pattern);
+        StringBuffer newPattern = new StringBuffer();
+        for (Iterator it = fp.getItems().iterator(); it.hasNext();) {
+            Object item = it.next();
+            if (item instanceof String) {
+                newPattern.append(fp.quoteLiteral((String)item));
+            } else {
+                newPattern.append("{" + getName(item.toString()) + "}");
+            }
+        }
+        return newPattern.toString();
+    }
+    
+    private static String showMask(int mask) {
+        String result = "";
+        for (int i = 0; i < TYPE_LIMIT; ++i) {
+            if ((mask & (1<<i)) == 0) continue;
+            if (result.length() != 0) result += " | ";
+            result += FIELD_NAME[i] + " ";
+        }
+        return result;
+    }
+    
+    static private String[] CLDR_FIELD_APPEND = {
+        "Era", "Year", "Quarter", "Month", "Week", "*", "Day-Of-Week", 
+        "Day", "*", "*", "*", 
+        "Hour", "Minute", "Second", "*", "Timezone"
+    };
+    
+    static private String[] CLDR_FIELD_NAME = {
+        "era", "year", "*", "month", "week", "*", "weekday", 
+        "day", "*", "*", "dayperiod", 
+        "hour", "minute", "second", "*", "zone"
+    };
+    
+    static private String[] FIELD_NAME = {
+        "Era", "Year", "Quarter", "Month", "Week_in_Year", "Week_in_Month", "Weekday", 
+        "Day", "Day_Of_Year", "Day_of_Week_in_Month", "Dayperiod", 
+        "Hour", "Minute", "Second", "Fractional_Second", "Zone"
+    };
+    
+    
+    static private String[] CANONICAL_ITEMS = {
+        "G", "y", "Q", "M", "w", "W", "e", 
+        "d", "D", "F", 
+        "H", "m", "s", "S", "v"
+    };
+    
+    static private Set CANONICAL_SET = new HashSet(Arrays.asList(CANONICAL_ITEMS));
+    private Set cldrAvailableFormatKeys = new HashSet(20);
+    
+    static final private int 
+    DATE_MASK = (1<<DAYPERIOD) - 1,
+    TIME_MASK = (1<<TYPE_LIMIT) - 1 - DATE_MASK;
+    
+    static final private int // numbers are chosen to express 'distance'
+    DELTA = 0x10,
+    NUMERIC = 0x100,
+    NONE = 0,
+    NARROW = -0x101,
+    SHORT = -0x102,
+    LONG = -0x103,
+    EXTRA_FIELD =   0x10000,
+    MISSING_FIELD = 0x1000;
+    
+    
+    static private String getName(String s) {
+        int i = getCanonicalIndex(s, true);
+        String name = FIELD_NAME[types[i][1]];
+        int subtype = types[i][2];
+        boolean string = subtype < 0;
+        if (string) subtype = -subtype;
+        if (subtype < 0) name += ":S";
+        else name += ":N";
+        return name;
+    }
+    
+    /**
+     * Get the canonical index, or return -1 if illegal.
+     * @param s
+     * @param strict TODO
+     * @return
+     */
+    static private int getCanonicalIndex(String s, boolean strict) {
+        int len = s.length();
+        if (len == 0) {
+            return -1;
+        }
+        int ch = s.charAt(0);
+        //      verify that all are the same character
+        for (int i = 1; i < len; ++i) {
+            if (s.charAt(i) != ch) {
+                return -1; 
+            }
+        }
+        int bestRow = -1;
+        for (int i = 0; i < types.length; ++i) {
+            int[] row = types[i];
+            if (row[0] != ch) continue;
+            bestRow = i;
+            if (row[3] > len) continue;
+            if (row[row.length-1] < len) continue;
+            return i;
+        }
+        return strict ? -1 : bestRow;
+    }
+    
+    static private int[][] types = {
+        // the order here makes a difference only when searching for single field.
+        // format is:
+        // pattern character, main type, weight, min length, weight
+        {'G', ERA, SHORT, 1, 3},
+        {'G', ERA, LONG, 4},
+        
+        {'y', YEAR, NUMERIC, 1, 20},
+        {'Y', YEAR, NUMERIC + DELTA, 1, 20},
+        {'u', YEAR, NUMERIC + 2*DELTA, 1, 20},
+        
+        {'Q', QUARTER, NUMERIC, 1, 2},
+        {'Q', QUARTER, SHORT, 3},
+        {'Q', QUARTER, LONG, 4},
+        
+        {'q', QUARTER, NUMERIC + DELTA, 1, 2},
+        {'q', QUARTER, SHORT + DELTA, 3},
+        {'q', QUARTER, LONG + DELTA, 4},
+        
+        {'M', MONTH, NUMERIC, 1, 2},
+        {'M', MONTH, SHORT, 3},
+        {'M', MONTH, LONG, 4},
+        {'M', MONTH, NARROW, 5},
+        {'L', MONTH, NUMERIC + DELTA, 1, 2},
+        {'L', MONTH, SHORT - DELTA, 3},
+        {'L', MONTH, LONG - DELTA, 4},
+        {'L', MONTH, NARROW - DELTA, 5},
+        
+        {'w', WEEK_OF_YEAR, NUMERIC, 1, 2},
+        {'W', WEEK_OF_MONTH, NUMERIC + DELTA, 1},
+        
+        {'e', WEEKDAY, NUMERIC + DELTA, 1, 2},
+        {'e', WEEKDAY, SHORT - DELTA, 3},
+        {'e', WEEKDAY, LONG - DELTA, 4},
+        {'e', WEEKDAY, NARROW - DELTA, 5},
+        {'E', WEEKDAY, SHORT, 1, 3},
+        {'E', WEEKDAY, LONG, 4},
+        {'E', WEEKDAY, NARROW, 5},
+        {'c', WEEKDAY, NUMERIC + 2*DELTA, 1, 2},
+        {'c', WEEKDAY, SHORT - 2*DELTA, 3},
+        {'c', WEEKDAY, LONG - 2*DELTA, 4},
+        {'c', WEEKDAY, NARROW - 2*DELTA, 5},
+        
+        {'d', DAY, NUMERIC, 1, 2},
+        {'D', DAY_OF_YEAR, NUMERIC + DELTA, 1, 3},
+        {'F', DAY_OF_WEEK_IN_MONTH, NUMERIC + 2*DELTA, 1},
+        {'g', DAY, NUMERIC + 3*DELTA, 1, 20}, // really internal use, so we don't care
+        
+        {'a', DAYPERIOD, SHORT, 1},
+        
+        {'H', HOUR, NUMERIC + 10*DELTA, 1, 2}, // 24 hour
+        {'k', HOUR, NUMERIC + 11*DELTA, 1, 2},
+        {'h', HOUR, NUMERIC, 1, 2}, // 12 hour
+        {'K', HOUR, NUMERIC + DELTA, 1, 2},
+        {'j', HOUR, NUMERIC + 20*DELTA, 1, 2},
+        
+        {'m', MINUTE, NUMERIC, 1, 2},
+        
+        {'s', SECOND, NUMERIC, 1, 2},
+        {'S', FRACTIONAL_SECOND, NUMERIC + DELTA, 1, 1000},
+        {'A', SECOND, NUMERIC + 2*DELTA, 1, 1000},
+        
+        {'v', ZONE, SHORT - 2*DELTA, 1},
+        {'v', ZONE, LONG - 2*DELTA, 4},
+        {'z', ZONE, SHORT, 1, 3},
+        {'z', ZONE, LONG, 4},
+        {'Z', ZONE, SHORT - DELTA, 1, 3},
+        {'Z', ZONE, LONG - DELTA, 4},
+        {'V', ZONE, SHORT - DELTA, 1, 3},
+        {'V', ZONE, LONG - DELTA, 4},
+    };
+    
+    private static class DateTimeMatcher implements Comparable {
+        //private String pattern = null;
+        private int[] type = new int[TYPE_LIMIT];
+        private String[] original = new String[TYPE_LIMIT];
+        private String[] baseOriginal = new String[TYPE_LIMIT];
+        
+        // just for testing; fix to make multi-threaded later
+        // private static FormatParser fp = new FormatParser();
+        
+        public String toString() {
+            StringBuffer result = new StringBuffer();
+            for (int i = 0; i < TYPE_LIMIT; ++i) {
+                if (original[i].length() != 0) result.append(original[i]);
+            }
+            return result.toString();
+        }
+        
+        String getBasePattern() {
+            StringBuffer result = new StringBuffer();
+            for (int i = 0; i < TYPE_LIMIT; ++i) {
+                if (baseOriginal[i].length() != 0) result.append(baseOriginal[i]);
+            }
+            return result.toString();
+        }
+        
+        DateTimeMatcher set(String pattern, FormatParser fp) {
+            for (int i = 0; i < TYPE_LIMIT; ++i) {
+                type[i] = NONE;
+                original[i] = "";
+                baseOriginal[i] = "";
+            }
+            fp.set(pattern);
+            for (Iterator it = fp.getItems().iterator(); it.hasNext();) {
+                Object obj = it.next();
+                if (!(obj instanceof VariableField)) {
+                    continue;
+                }
+                VariableField item = (VariableField)obj;
+                String field = item.toString();
+                if (field.charAt(0) == 'a') continue; // skip day period, special case
+                int canonicalIndex = item.getCanonicalIndex();
+//                if (canonicalIndex < 0) {
+//                    throw new IllegalArgumentException("Illegal field:\t"
+//                            + field + "\t in " + pattern);
+//                }
+                int[] row = types[canonicalIndex];
+                int typeValue = row[1];
+                if (original[typeValue].length() != 0) {
+                    throw new IllegalArgumentException("Conflicting fields:\t"
+                            + original[typeValue] + ", " + field + "\t in " + pattern);
+                }
+                original[typeValue] = field;
+                char repeatChar = (char)row[0];
+                int repeatCount = row[3];
+                if (repeatCount > 3) repeatCount = 3; // hack to discard differences
+                if ("GEzvQ".indexOf(repeatChar) >= 0) repeatCount = 1;
+                baseOriginal[typeValue] = Utility.repeat(String.valueOf(repeatChar),repeatCount);
+                int subTypeValue = row[2];
+                if (subTypeValue > 0) subTypeValue += field.length();
+                type[typeValue] = subTypeValue;
+            }
+            return this;
+        }
+        
+        /**
+         * 
+         */
+        int getFieldMask() {
+            int result = 0;
+            for (int i = 0; i < type.length; ++i) {
+                if (type[i] != 0) result |= (1<<i);
+            }
+            return result;
+        }
+        
+        /**
+         * 
+         */
+        void extractFrom(DateTimeMatcher source, int fieldMask) {
+            for (int i = 0; i < type.length; ++i) {
+                if ((fieldMask & (1<<i)) != 0) {
+                    type[i] = source.type[i];
+                    original[i] = source.original[i];
+                } else {
+                    type[i] = NONE;
+                    original[i] = "";
+                }
+            }
+        }
+        
+        int getDistance(DateTimeMatcher other, int includeMask, DistanceInfo distanceInfo) {
+            int result = 0;
+            distanceInfo.clear();
+            for (int i = 0; i < type.length; ++i) {
+                int myType = (includeMask & (1<<i)) == 0 ? 0 : type[i];
+                int otherType = other.type[i];
+                if (myType == otherType) continue; // identical (maybe both zero) add 0
+                if (myType == 0) { // and other is not
+                    result += EXTRA_FIELD;
+                    distanceInfo.addExtra(i);
+                } else if (otherType == 0) { // and mine is not
+                    result += MISSING_FIELD;
+                    distanceInfo.addMissing(i);
+                } else {
+                    result += Math.abs(myType - otherType); // square of mismatch
+                }
+            }
+            return result;
+        }
+        
+        public int compareTo(Object o) {
+            DateTimeMatcher that = (DateTimeMatcher) o;
+            for (int i = 0; i < original.length; ++i) {
+                int comp = original[i].compareTo(that.original[i]);
+                if (comp != 0) return -comp;
+            }
+            return 0;
+        }       
+        
+        public boolean equals(Object other) {
+            if (other == null) return false;
+            DateTimeMatcher that = (DateTimeMatcher) other;
+            for (int i = 0; i < original.length; ++i) {
+                if (!original[i].equals(that.original[i])) return false;
+            }
+            return true;
+        }       
+        public int hashCode() {
+            int result = 0;
+            for (int i = 0; i < original.length; ++i) {
+                result ^= original[i].hashCode();
+            }
+            return result;
+        }       
+    }
+    
+    private static class DistanceInfo {
+        int missingFieldMask;
+        int extraFieldMask;
+        void clear() {
+            missingFieldMask = extraFieldMask = 0;
+        }
+        /**
+         * 
+         */
+        void setTo(DistanceInfo other) {
+            missingFieldMask = other.missingFieldMask;
+            extraFieldMask = other.extraFieldMask;
+        }
+        void addMissing(int field) {
+            missingFieldMask |= (1<<field);
+        }
+        void addExtra(int field) {
+            extraFieldMask |= (1<<field);
+        }
+        public String toString() {
+            return "missingFieldMask: " + DateTimePatternGenerator.showMask(missingFieldMask)
+            + ", extraFieldMask: " + DateTimePatternGenerator.showMask(extraFieldMask);
+        }
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/text/DecimalFormat.java b/src/com/ibm/icu/text/DecimalFormat.java
new file mode 100644
index 0000000..cacdde9
--- /dev/null
+++ b/src/com/ibm/icu/text/DecimalFormat.java
@@ -0,0 +1,5742 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.math.BigInteger;
+import java.text.ChoiceFormat;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+//#if defined(FOUNDATION10)
+//#else
+import java.io.ObjectOutputStream;
+//#endif
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.Format;
+import java.util.ArrayList;
+//#endif
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.CurrencyAmount;
+import com.ibm.icu.util.ULocale;
+
+//This is an enhanced version of DecimalFormat that is based on the standard version in the JDK. 
+/**
+ * <code>DecimalFormat</code> is a concrete subclass of
+ * {@link NumberFormat} that formats decimal numbers. It has a variety of
+ * features designed to make it possible to parse and format numbers in any
+ * locale, including support for Western, Arabic, or Indic digits.  It also
+ * supports different flavors of numbers, including integers ("123"),
+ * fixed-point numbers ("123.4"), scientific notation ("1.23E4"), percentages
+ * ("12%"), and currency amounts ("$123.00", "USD123.00", "123.00 US dollars").
+ * All of these flavors can be easily localized.
+ *
+ * 
+ * <p>To obtain a {@link NumberFormat} for a specific locale (including the
+ * default locale) call one of <code>NumberFormat</code>'s factory methods such
+ * as {@link NumberFormat#getInstance}. Do not call the <code>DecimalFormat</code>
+ * constructors directly, unless you know what you are doing, since the
+ * {@link NumberFormat} factory methods may return subclasses other than
+ * <code>DecimalFormat</code>. If you need to customize the format object, do
+ * something like this:
+ *
+ * <blockquote><pre>
+ * NumberFormat f = NumberFormat.getInstance(loc);
+ * if (f instanceof DecimalFormat) {
+ *     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
+ * }</pre></blockquote>
+ *
+ * <p><strong>Example Usage</strong>
+ *
+ * <blockquote><pre>
+ * <strong>// Print out a number using the localized number, currency,
+ * // and percent format for each locale</strong>
+ * Locale[] locales = NumberFormat.getAvailableLocales();
+ * double myNumber = -1234.56;
+ * NumberFormat format;
+ * for (int j=0; j<3; ++j) {
+ *     System.out.println("FORMAT");
+ *     for (int i = 0; i < locales.length; ++i) {
+ *         if (locales[i].getCountry().length() == 0) {
+ *            // Skip language-only locales
+ *            continue;
+ *         }
+ *         System.out.print(locales[i].getDisplayName());
+ *         switch (j) {
+ *         case 0:
+ *             format = NumberFormat.getInstance(locales[i]); break;
+ *         case 1:
+ *             format = NumberFormat.getCurrencyInstance(locales[i]); break;
+ *         default:
+ *             format = NumberFormat.getPercentInstance(locales[i]); break;
+ *         }
+ *         try {
+ *             // Assume format is a DecimalFormat
+ *             System.out.print(": " + ((DecimalFormat) format).toPattern()
+ *                              + " -> " + form.format(myNumber));
+ *         } catch (Exception e) {}
+ *         try {
+ *             System.out.println(" -> " + format.parse(form.format(myNumber)));
+ *         } catch (ParseException e) {}
+ *     }
+ * }</pre></blockquote>
+ *
+ * <P>
+ * Another example use getInstance(style)
+ * <P>
+ * <pre>
+ * <strong>// Print out a number using the localized number, currency,
+ * // percent, scientific, integer, iso currency, and plural currency
+ * // format for each locale</strong>
+ * ULocale locale = new ULocale("en_US");
+ * double myNumber = 1234.56;
+ * for (int j=NumberFormat.NUMBERSTYLE; j<=NumberFormat.PLURALCURRENCYSTYLE; ++j) {
+ *     NumberFormat format = NumberFormat.getInstance(locale, j);
+ *     try {
+ *         // Assume format is a DecimalFormat
+ *         System.out.print(": " + ((DecimalFormat) format).toPattern()
+ *                          + " -> " + form.format(myNumber));
+ *     } catch (Exception e) {}
+ *     try {
+ *         System.out.println(" -> " + format.parse(form.format(myNumber)));
+ *     } catch (ParseException e) {}
+ * }</pre></blockquote>
+ *
+ * <h4>Patterns</h4>
+ *
+ * <p>A <code>DecimalFormat</code> consists of a <em>pattern</em> and a set of
+ * <em>symbols</em>.  The pattern may be set directly using
+ * {@link #applyPattern}, or indirectly using other API methods which
+ * manipulate aspects of the pattern, such as the minimum number of integer
+ * digits.  The symbols are stored in a {@link DecimalFormatSymbols}
+ * object.  When using the {@link NumberFormat} factory methods, the
+ * pattern and symbols are read from ICU's locale data.
+ * 
+ * <h4>Special Pattern Characters</h4>
+ *
+ * <p>Many characters in a pattern are taken literally; they are matched during
+ * parsing and output unchanged during formatting.  Special characters, on the
+ * other hand, stand for other characters, strings, or classes of characters.
+ * For example, the '#' character is replaced by a localized digit.  Often the
+ * replacement character is the same as the pattern character; in the U.S. locale,
+ * the ',' grouping character is replaced by ','.  However, the replacement is
+ * still happening, and if the symbols are modified, the grouping character
+ * changes.  Some special characters affect the behavior of the formatter by
+ * their presence; for example, if the percent character is seen, then the
+ * value is multiplied by 100 before being displayed.
+ *
+ * <p>To insert a special character in a pattern as a literal, that is, without
+ * any special meaning, the character must be quoted.  There are some exceptions to
+ * this which are noted below.
+ *
+ * <p>The characters listed here are used in non-localized patterns.  Localized
+ * patterns use the corresponding characters taken from this formatter's
+ * {@link DecimalFormatSymbols} object instead, and these characters lose
+ * their special status.  Two exceptions are the currency sign and quote, which
+ * are not localized.
+ *
+ * <blockquote>
+ * <table border=0 cellspacing=3 cellpadding=0 summary="Chart showing symbol,
+ *  location, localized, and meaning.">
+ *   <tr bgcolor="#ccccff">
+ *     <th align=left>Symbol
+ *     <th align=left>Location
+ *     <th align=left>Localized?
+ *     <th align=left>Meaning
+ *   <tr valign=top>
+ *     <td><code>0</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Digit
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>1-9</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>'1' through '9' indicate rounding. 
+ *         
+ *   <tr valign=top>
+ *     <td><code>@</code>
+ *     <td>Number
+ *     <td>No
+ *     <td>Significant digit
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>#</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Digit, zero shows as absent
+ *   <tr valign=top>
+ *     <td><code>.</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Decimal separator or monetary decimal separator
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>-</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Minus sign
+ *   <tr valign=top>
+ *     <td><code>,</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Grouping separator
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>E</code>
+ *     <td>Number
+ *     <td>Yes
+ *     <td>Separates mantissa and exponent in scientific notation.
+ *         <em>Need not be quoted in prefix or suffix.</em>
+ *   <tr valign=top>
+ *     <td><code>+</code>
+ *     <td>Exponent
+ *     <td>Yes
+ *     <td>Prefix positive exponents with localized plus sign.
+ *         <em>Need not be quoted in prefix or suffix.</em>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>;</code>
+ *     <td>Subpattern boundary
+ *     <td>Yes
+ *     <td>Separates positive and negative subpatterns
+ *   <tr valign=top>
+ *     <td><code>%</code>
+ *     <td>Prefix or suffix
+ *     <td>Yes
+ *     <td>Multiply by 100 and show as percentage
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>&#92;u2030</code>
+ *     <td>Prefix or suffix
+ *     <td>Yes
+ *     <td>Multiply by 1000 and show as per mille
+ *   <tr valign=top>
+ *     <td><code>&#164;</code> (<code>&#92;u00A4</code>)
+ *     <td>Prefix or suffix
+ *     <td>No
+ *     <td>Currency sign, replaced by currency symbol.  If
+ *         doubled, replaced by international currency symbol.
+ *         If tripled, replaced by currency plural names, for example,
+ *         "US dollar" or "US dollars" for America.
+ *         If present in a pattern, the monetary decimal separator
+ *         is used instead of the decimal separator.
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>'</code>
+ *     <td>Prefix or suffix
+ *     <td>No
+ *     <td>Used to quote special characters in a prefix or suffix,
+ *         for example, <code>"'#'#"</code> formats 123 to
+ *         <code>"#123"</code>.  To create a single quote
+ *         itself, use two in a row: <code>"# o''clock"</code>.
+ *   <tr valign=top>
+ *     <td><code>*</code>
+ *     <td>Prefix or suffix boundary
+ *     <td>Yes
+ *     <td>Pad escape, precedes pad character
+ * </table>
+ * </blockquote>
+ *
+ * <p>A <code>DecimalFormat</code> pattern contains a postive and negative
+ * subpattern, for example, "#,##0.00;(#,##0.00)".  Each subpattern has a
+ * prefix, a numeric part, and a suffix.  If there is no explicit negative
+ * subpattern, the negative subpattern is the localized minus sign prefixed to the
+ * positive subpattern. That is, "0.00" alone is equivalent to "0.00;-0.00".  If there
+ * is an explicit negative subpattern, it serves only to specify the negative
+ * prefix and suffix; the number of digits, minimal digits, and other
+ * characteristics are ignored in the negative subpattern. That means that
+ * "#,##0.0#;(#)" has precisely the same result as "#,##0.0#;(#,##0.0#)".
+ *
+ * <p>The prefixes, suffixes, and various symbols used for infinity, digits,
+ * thousands separators, decimal separators, etc. may be set to arbitrary
+ * values, and they will appear properly during formatting.  However, care must
+ * be taken that the symbols and strings do not conflict, or parsing will be
+ * unreliable.  For example, either the positive and negative prefixes or the
+ * suffixes must be distinct for {@link #parse} to be able
+ * to distinguish positive from negative values.  Another example is that the
+ * decimal separator and thousands separator should be distinct characters, or
+ * parsing will be impossible.
+ *
+ * <p>The <em>grouping separator</em> is a character that separates clusters of
+ * integer digits to make large numbers more legible.  It commonly used for
+ * thousands, but in some locales it separates ten-thousands.  The <em>grouping
+ * size</em> is the number of digits between the grouping separators, such as 3
+ * for "100,000,000" or 4 for "1 0000 0000". There are actually two different
+ * grouping sizes: One used for the least significant integer digits, the
+ * <em>primary grouping size</em>, and one used for all others, the
+ * <em>secondary grouping size</em>.  In most locales these are the same, but
+ * sometimes they are different. For example, if the primary grouping interval
+ * is 3, and the secondary is 2, then this corresponds to the pattern
+ * "#,##,##0", and the number 123456789 is formatted as "12,34,56,789".  If a
+ * pattern contains multiple grouping separators, the interval between the last
+ * one and the end of the integer defines the primary grouping size, and the
+ * interval between the last two defines the secondary grouping size. All others
+ * are ignored, so "#,##,###,####" == "###,###,####" == "##,#,###,####".
+ *
+ * <p>Illegal patterns, such as "#.#.#" or "#.###,###", will cause
+ * <code>DecimalFormat</code> to throw an {@link IllegalArgumentException}
+ * with a message that describes the problem.
+ *
+ * <h4>Pattern BNF</h4>
+ *
+ * <pre>
+ * pattern    := subpattern (';' subpattern)?
+ * subpattern := prefix? number exponent? suffix?
+ * number     := (integer ('.' fraction)?) | sigDigits
+ * prefix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * suffix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * integer    := '#'* '0'* '0'
+ * fraction   := '0'* '#'*
+ * sigDigits  := '#'* '@' '@'* '#'*
+ * exponent   := 'E' '+'? '0'* '0'
+ * padSpec    := '*' padChar
+ * padChar    := '&#92;u0000'..'&#92;uFFFD' - quote
+ * &#32;
+ * Notation:
+ *   X*       0 or more instances of X
+ *   X?       0 or 1 instances of X
+ *   X|Y      either X or Y
+ *   C..D     any character from C up to D, inclusive
+ *   S-T      characters in S, except those in T
+ * </pre>
+ * The first subpattern is for positive numbers. The second (optional)
+ * subpattern is for negative numbers.
+ * 
+ * <p>Not indicated in the BNF syntax above:
+ *
+ * <ul><li>The grouping separator ',' can occur inside the integer and
+ * sigDigits elements, between any two pattern characters of that
+ * element, as long as the integer or sigDigits element is not
+ * followed by the exponent element.
+ *
+ * <li>Two grouping intervals are recognized: That between the
+ *     decimal point and the first grouping symbol, and that
+ *     between the first and second grouping symbols. These
+ *     intervals are identical in most locales, but in some
+ *     locales they differ. For example, the pattern
+ *     &quot;#,##,###&quot; formats the number 123456789 as
+ *     &quot;12,34,56,789&quot;.</li>
+ * 
+ * <li>
+ * The pad specifier <code>padSpec</code> may appear before the prefix,
+ * after the prefix, before the suffix, after the suffix, or not at all.
+ *
+ * <li>
+ * In place of '0', the digits '1' through '9' may be used to
+ * indicate a rounding increment.
+ * </ul>
+ *
+ * <h4>Parsing</h4>
+ *
+ * <p><code>DecimalFormat</code> parses all Unicode characters that represent
+ * decimal digits, as defined by {@link UCharacter#digit}.  In addition,
+ * <code>DecimalFormat</code> also recognizes as digits the ten consecutive
+ * characters starting with the localized zero digit defined in the
+ * {@link DecimalFormatSymbols} object.  During formatting, the
+ * {@link DecimalFormatSymbols}-based digits are output.
+ *
+ * <p>During parsing, grouping separators are ignored.
+ *
+ * <p>For currency parsing, the formatter is able to parse every currency
+ * style formats no matter which style the formatter is constructed with.
+ * For example, a formatter instance gotten from 
+ * NumberFormat.getInstance(ULocale, NumberFormat.CURRENCYSTYLE) can parse
+ * formats such as "USD1.00" and "3.00 US dollars".
+ *
+ * <p>If {@link #parse(String, ParsePosition)} fails to parse
+ * a string, it returns <code>null</code> and leaves the parse position
+ * unchanged.  The convenience method {@link #parse(String)}
+ * indicates parse failure by throwing a {@link java.text.ParseException}.
+ *
+ * <h4>Formatting</h4>
+ *
+ * <p>Formatting is guided by several parameters, all of which can be
+ * specified either using a pattern or using the API.  The following
+ * description applies to formats that do not use <a href="#sci">scientific
+ * notation</a> or <a href="#sigdig">significant digits</a>.
+ *
+ * <ul><li>If the number of actual integer digits exceeds the
+ * <em>maximum integer digits</em>, then only the least significant
+ * digits are shown.  For example, 1997 is formatted as "97" if the
+ * maximum integer digits is set to 2.
+ *
+ * <li>If the number of actual integer digits is less than the
+ * <em>minimum integer digits</em>, then leading zeros are added.  For
+ * example, 1997 is formatted as "01997" if the minimum integer digits
+ * is set to 5.
+ *
+ * <li>If the number of actual fraction digits exceeds the <em>maximum
+ * fraction digits</em>, then half-even rounding it performed to the
+ * maximum fraction digits.  For example, 0.125 is formatted as "0.12"
+ * if the maximum fraction digits is 2.  This behavior can be changed
+ * by specifying a rounding increment and a rounding mode.
+ *
+ * <li>If the number of actual fraction digits is less than the
+ * <em>minimum fraction digits</em>, then trailing zeros are added.
+ * For example, 0.125 is formatted as "0.1250" if the mimimum fraction
+ * digits is set to 4.
+ *
+ * <li>Trailing fractional zeros are not displayed if they occur
+ * <em>j</em> positions after the decimal, where <em>j</em> is less
+ * than the maximum fraction digits. For example, 0.10004 is
+ * formatted as "0.1" if the maximum fraction digits is four or less.
+ * </ul>
+ * 
+ * <p><strong>Special Values</strong>
+ *
+ * <p><code>NaN</code> is represented as a single character, typically
+ * <code>&#92;uFFFD</code>.  This character is determined by the
+ * {@link DecimalFormatSymbols} object.  This is the only value for which
+ * the prefixes and suffixes are not used.
+ *
+ * <p>Infinity is represented as a single character, typically
+ * <code>&#92;u221E</code>, with the positive or negative prefixes and suffixes
+ * applied.  The infinity character is determined by the
+ * {@link DecimalFormatSymbols} object.
+ *
+ * <a name="sci"><h4>Scientific Notation</h4></a>
+ *
+ * <p>Numbers in scientific notation are expressed as the product of a mantissa
+ * and a power of ten, for example, 1234 can be expressed as 1.234 x 10<sup>3</sup>. The
+ * mantissa is typically in the half-open interval [1.0, 10.0) or sometimes [0.0, 1.0),
+ * but it need not be.  <code>DecimalFormat</code> supports arbitrary mantissas.
+ * <code>DecimalFormat</code> can be instructed to use scientific
+ * notation through the API or through the pattern.  In a pattern, the exponent
+ * character immediately followed by one or more digit characters indicates
+ * scientific notation.  Example: "0.###E0" formats the number 1234 as
+ * "1.234E3".
+ *
+ * <ul>
+ * <li>The number of digit characters after the exponent character gives the
+ * minimum exponent digit count.  There is no maximum.  Negative exponents are
+ * formatted using the localized minus sign, <em>not</em> the prefix and suffix
+ * from the pattern.  This allows patterns such as "0.###E0 m/s".  To prefix
+ * positive exponents with a localized plus sign, specify '+' between the
+ * exponent and the digits: "0.###E+0" will produce formats "1E+1", "1E+0",
+ * "1E-1", etc.  (In localized patterns, use the localized plus sign rather than
+ * '+'.)
+ *
+ * <li>The minimum number of integer digits is achieved by adjusting the
+ * exponent.  Example: 0.00123 formatted with "00.###E0" yields "12.3E-4".  This
+ * only happens if there is no maximum number of integer digits.  If there is a
+ * maximum, then the minimum number of integer digits is fixed at one.
+ *
+ * <li>The maximum number of integer digits, if present, specifies the exponent
+ * grouping.  The most common use of this is to generate <em>engineering
+ * notation</em>, in which the exponent is a multiple of three, e.g.,
+ * "##0.###E0".  The number 12345 is formatted using "##0.####E0" as "12.345E3".
+ *
+ * <li>When using scientific notation, the formatter controls the
+ * digit counts using significant digits logic.  The maximum number of
+ * significant digits limits the total number of integer and fraction
+ * digits that will be shown in the mantissa; it does not affect
+ * parsing.  For example, 12345 formatted with "##0.##E0" is "12.3E3".
+ * See the section on significant digits for more details.
+ *
+ * <li>The number of significant digits shown is determined as
+ * follows: If areSignificantDigitsUsed() returns false, then the
+ * minimum number of significant digits shown is one, and the maximum
+ * number of significant digits shown is the sum of the <em>minimum
+ * integer</em> and <em>maximum fraction</em> digits, and is
+ * unaffected by the maximum integer digits.  If this sum is zero,
+ * then all significant digits are shown.  If
+ * areSignificantDigitsUsed() returns true, then the significant digit
+ * counts are specified by getMinimumSignificantDigits() and
+ * getMaximumSignificantDigits().  In this case, the number of
+ * integer digits is fixed at one, and there is no exponent grouping.
+ *
+ * <li>Exponential patterns may not contain grouping separators.
+ * </ul>
+ *
+ * <a name="sigdig"><h4>
+ * Significant Digits</h4></a>
+ *
+ * <code>DecimalFormat</code> has two ways of controlling how many
+ * digits are shows: (a) significant digits counts, or (b) integer and
+ * fraction digit counts.  Integer and fraction digit counts are
+ * described above.  When a formatter is using significant digits
+ * counts, the number of integer and fraction digits is not specified
+ * directly, and the formatter settings for these counts are ignored.
+ * Instead, the formatter uses however many integer and fraction
+ * digits are required to display the specified number of significant
+ * digits.  Examples:
+ *
+ * <blockquote>
+ * <table border=0 cellspacing=3 cellpadding=0>
+ *   <tr bgcolor="#ccccff">
+ *     <th align=left>Pattern
+ *     <th align=left>Minimum significant digits
+ *     <th align=left>Maximum significant digits
+ *     <th align=left>Number
+ *     <th align=left>Output of format()
+ *   <tr valign=top>
+ *     <td><code>@@@</code>
+ *     <td>3
+ *     <td>3
+ *     <td>12345
+ *     <td><code>12300</code>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>@@@</code>
+ *     <td>3
+ *     <td>3
+ *     <td>0.12345
+ *     <td><code>0.123</code>
+ *   <tr valign=top>
+ *     <td><code>@@##</code>
+ *     <td>2
+ *     <td>4
+ *     <td>3.14159
+ *     <td><code>3.142</code>
+ *   <tr valign=top bgcolor="#eeeeff">
+ *     <td><code>@@##</code>
+ *     <td>2
+ *     <td>4
+ *     <td>1.23004
+ *     <td><code>1.23</code>
+ * </table>
+ * </blockquote>
+ *
+ * <ul>
+ * <li>Significant digit counts may be expressed using patterns that
+ * specify a minimum and maximum number of significant digits.  These
+ * are indicated by the <code>'@'</code> and <code>'#'</code>
+ * characters.  The minimum number of significant digits is the number
+ * of <code>'@'</code> characters.  The maximum number of significant
+ * digits is the number of <code>'@'</code> characters plus the number
+ * of <code>'#'</code> characters following on the right.  For
+ * example, the pattern <code>"@@@"</code> indicates exactly 3
+ * significant digits.  The pattern <code>"@##"</code> indicates from
+ * 1 to 3 significant digits.  Trailing zero digits to the right of
+ * the decimal separator are suppressed after the minimum number of
+ * significant digits have been shown.  For example, the pattern
+ * <code>"@##"</code> formats the number 0.1203 as
+ * <code>"0.12"</code>.
+ *
+ * <li>If a pattern uses significant digits, it may not contain a
+ * decimal separator, nor the <code>'0'</code> pattern character.
+ * Patterns such as <code>"@00"</code> or <code>"@.###"</code> are
+ * disallowed.
+ *
+ * <li>Any number of <code>'#'</code> characters may be prepended to
+ * the left of the leftmost <code>'@'</code> character.  These have no
+ * effect on the minimum and maximum significant digits counts, but
+ * may be used to position grouping separators.  For example,
+ * <code>"#,#@#"</code> indicates a minimum of one significant digits,
+ * a maximum of two significant digits, and a grouping size of three.
+ *
+ * <li>In order to enable significant digits formatting, use a pattern
+ * containing the <code>'@'</code> pattern character.  Alternatively,
+ * call {@link #setSignificantDigitsUsed setSignificantDigitsUsed(true)}.
+ *
+ * <li>In order to disable significant digits formatting, use a
+ * pattern that does not contain the <code>'@'</code> pattern
+ * character. Alternatively, call {@link #setSignificantDigitsUsed
+ * setSignificantDigitsUsed(false)}.
+ *
+ * <li>The number of significant digits has no effect on parsing.
+ *
+ * <li>Significant digits may be used together with exponential notation. Such
+ * patterns are equivalent to a normal exponential pattern with a minimum and
+ * maximum integer digit count of one, a minimum fraction digit count of
+ * <code>getMinimumSignificantDigits() - 1</code>, and a maximum fraction digit
+ * count of <code>getMaximumSignificantDigits() - 1</code>. For example, the
+ * pattern <code>"@@###E0"</code> is equivalent to <code>"0.0###E0"</code>.
+ *
+ * <li>If signficant digits are in use, then the integer and fraction
+ * digit counts, as set via the API, are ignored.  If significant
+ * digits are not in use, then the signficant digit counts, as set via
+ * the API, are ignored.
+ *
+ * </ul>
+ * 
+ * <h4>
+ * Padding</h4>
+ *
+ * <p><code>DecimalFormat</code> supports padding the result of
+ * {@link #format} to a specific width.  Padding may be specified either
+ * through the API or through the pattern syntax.  In a pattern the pad escape
+ * character, followed by a single pad character, causes padding to be parsed
+ * and formatted.  The pad escape character is '*' in unlocalized patterns, and
+ * can be localized using {@link DecimalFormatSymbols#setPadEscape}.  For
+ * example, <code>"$*x#,##0.00"</code> formats 123 to <code>"$xx123.00"</code>,
+ * and 1234 to <code>"$1,234.00"</code>.
+ *
+ * <ul>
+ * <li>When padding is in effect, the width of the positive subpattern,
+ * including prefix and suffix, determines the format width.  For example, in
+ * the pattern <code>"* #0 o''clock"</code>, the format width is 10.
+ *
+ * <li>The width is counted in 16-bit code units (Java <code>char</code>s).
+ *
+ * <li>Some parameters which usually do not matter have meaning when padding is
+ * used, because the pattern width is significant with padding.  In the pattern
+ * "* ##,##,#,##0.##", the format width is 14.  The initial characters "##,##,"
+ * do not affect the grouping size or maximum integer digits, but they do affect
+ * the format width.
+ *
+ * <li>Padding may be inserted at one of four locations: before the prefix,
+ * after the prefix, before the suffix, or after the suffix.  If padding is
+ * specified in any other location, {@link #applyPattern} throws an {@link
+ * IllegalArgumentException}.  If there is no prefix, before the
+ * prefix and after the prefix are equivalent, likewise for the suffix.
+ *
+ * <li>When specified in a pattern, the 16-bit <code>char</code> immediately
+ * following the pad escape is the pad character. This may be any character,
+ * including a special pattern character. That is, the pad escape
+ * <em>escapes</em> the following character. If there is no character after
+ * the pad escape, then the pattern is illegal.
+ *
+ * </ul>
+ *
+ * <p>
+ * <strong>Rounding</strong>
+ *
+ * <p><code>DecimalFormat</code> supports rounding to a specific increment.  For
+ * example, 1230 rounded to the nearest 50 is 1250.  1.234 rounded to the
+ * nearest 0.65 is 1.3.  The rounding increment may be specified through the API
+ * or in a pattern.  To specify a rounding increment in a pattern, include the
+ * increment in the pattern itself.  "#,#50" specifies a rounding increment of
+ * 50.  "#,##0.05" specifies a rounding increment of 0.05.
+ *
+ * <ul>
+ * <li>Rounding only affects the string produced by formatting.  It does
+ * not affect parsing or change any numerical values.
+ *
+ * <li>A <em>rounding mode</em> determines how values are rounded; see the
+ * {@link com.ibm.icu.math.BigDecimal} documentation for a description of the
+ * modes.  Rounding increments specified in patterns use the default mode,
+ * {@link com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN}.
+ *
+ * <li>Some locales use rounding in their currency formats to reflect the
+ * smallest currency denomination.
+ *
+ * <li>In a pattern, digits '1' through '9' specify rounding, but otherwise
+ * behave identically to digit '0'.
+ * </ul>
+ *
+ * <h4>Synchronization</h4>
+ *
+ * <p><code>DecimalFormat</code> objects are not synchronized.  Multiple
+ * threads should not access one formatter concurrently.
+ *
+ * @see          java.text.Format
+ * @see          NumberFormat
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+public class DecimalFormat extends NumberFormat {
+
+    /**
+     * Create a DecimalFormat using the default pattern and symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @stable ICU 2.0
+     */
+    public DecimalFormat() {
+        // [NEW]
+        ULocale def = ULocale.getDefault();
+        String pattern = getPattern(def, 0);
+        // Always applyPattern after the symbols are set
+        this.symbols = new DecimalFormatSymbols(def);
+        setCurrency(Currency.getInstance(def));
+        applyPatternWithoutExpandAffix(pattern, false);
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) {
+            currencyPluralInfo = new CurrencyPluralInfo(def);
+            // the exact pattern is not known until the plural count is known.
+            // so, no need to expand affix now.
+        } else {
+            expandAffixAdjustWidth(null);
+        }
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern and the symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @param pattern A non-localized pattern string.
+     * @exception IllegalArgumentException if the given pattern is invalid.
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @stable ICU 2.0
+     */
+    public DecimalFormat(String pattern) {
+        // Always applyPattern after the symbols are set
+        ULocale def = ULocale.getDefault();
+        this.symbols = new DecimalFormatSymbols(def);
+        setCurrency(Currency.getInstance(def));
+        applyPatternWithoutExpandAffix( pattern, false );
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) {
+            currencyPluralInfo = new CurrencyPluralInfo(def);
+        } else {
+            expandAffixAdjustWidth(null);
+        }
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern and symbols.
+     * Use this constructor when you need to completely customize the
+     * behavior of the format.
+     * <p>
+     * To obtain standard formats for a given
+     * locale, use the factory methods on NumberFormat such as
+     * getInstance or getCurrencyInstance. If you need only minor adjustments
+     * to a standard format, you can modify the format returned by
+     * a NumberFormat factory method.
+     * @param pattern a non-localized pattern string
+     * @param symbols the set of symbols to be used
+     * @exception IllegalArgumentException if the given pattern is invalid
+     * @see NumberFormat#getInstance
+     * @see NumberFormat#getNumberInstance
+     * @see NumberFormat#getCurrencyInstance
+     * @see NumberFormat#getPercentInstance
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public DecimalFormat(String pattern, DecimalFormatSymbols symbols) {
+        createFromPatternAndSymbols(pattern, symbols);
+    }
+
+    private void createFromPatternAndSymbols(String pattern, DecimalFormatSymbols inputSymbols) {
+        // Always applyPattern after the symbols are set
+        symbols = (DecimalFormatSymbols) inputSymbols.clone();
+        setCurrencyForSymbols();
+        applyPatternWithoutExpandAffix(pattern, false);
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) {
+            currencyPluralInfo = new CurrencyPluralInfo(symbols.getLocale());
+        } else {
+            expandAffixAdjustWidth(null);
+        }
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern, symbols,
+     * information used for currency plural format, and format style.
+     * Use this constructor when you need to completely customize the
+     * behavior of the format.
+     * <p>
+     * To obtain standard formats for a given
+     * locale, use the factory methods on NumberFormat such as
+     * getInstance or getCurrencyInstance. 
+     * <p>
+     * If you need only minor adjustments to a standard format, 
+     * you can modify the format returned by
+     * a NumberFormat factory method using the setters.
+     * <p>
+     * If you want to completely customize a decimal format,
+     * using your own DecimalFormatSymbols (such as group separators) and
+     * your own information for currency plural formatting (such as
+     * plural rule and currency plural patterns), you can use this constructor.
+     * <p> 
+     * @param pattern a non-localized pattern string
+     * @param symbols the set of symbols to be used
+     * @param infoInput the information used for currency plural format, 
+     *                  including currency plural patterns and plural rules.
+     * @param style the decimal formatting style, 
+     *              it is one of the following values:
+     *              NumberFormat.NUMBERSTYLE;
+     *              NumberFormat.CURRENCYSTYLE;
+     *              NumberFormat.PERCENTSTYLE;
+     *              NumberFormat.SCIENTIFICSTYLE;
+     *              NumberFormat.INTEGERSTYLE;
+     *              NumberFormat.ISOCURRENCYSTYLE;
+     *              NumberFormat.PLURALCURRENCYSTYLE;
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DecimalFormat(String pattern, DecimalFormatSymbols symbols,
+                         CurrencyPluralInfo infoInput,
+                         int style) {
+        CurrencyPluralInfo info = infoInput;
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            info = (CurrencyPluralInfo)infoInput.clone();
+        }
+        create(pattern, symbols, info, style);
+    }
+
+
+    private void create(String pattern, DecimalFormatSymbols inputSymbols,
+                        CurrencyPluralInfo info,
+                        int inputStyle) {
+        if (inputStyle != NumberFormat.PLURALCURRENCYSTYLE) {
+            createFromPatternAndSymbols(pattern, inputSymbols);
+        } else {
+            // Always applyPattern after the symbols are set
+            symbols = (DecimalFormatSymbols) inputSymbols.clone();
+            currencyPluralInfo = info;
+            // the pattern used in format is not fixed until formatting,
+            // in which, the number is known and 
+            // will be used to pick the right pattern based on plural count.
+            // Here, set the pattern as the pattern of plural count == "other".
+            // For most locale, the patterns are probably the same for all
+            // plural count. If not, the right pattern need to be re-applied
+            // during format.
+            String currencyPluralPatternForOther = currencyPluralInfo.getCurrencyPluralPattern("other");
+            applyPatternWithoutExpandAffix(currencyPluralPatternForOther,false);
+            setCurrencyForSymbols();
+        }
+        style = inputStyle;
+    }
+
+
+    /*
+     * Create a DecimalFormat for currency plural format 
+     * from the given pattern, symbols, and style.
+     */
+    DecimalFormat(String pattern, DecimalFormatSymbols inputSymbols, int style) {
+        CurrencyPluralInfo info = null;
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            info = new CurrencyPluralInfo(inputSymbols.getLocale());
+        }
+        create(pattern, inputSymbols, info, style);
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(double number, StringBuffer result,
+            FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+    
+    // [Spark/CDL] The actual method to format number. If boolean value
+    // parseAttr == true, then attribute information will be recorded.
+    private StringBuffer format(double number, StringBuffer result,
+            FieldPosition fieldPosition, boolean parseAttr) 
+    {
+        fieldPosition.setBeginIndex(0);
+        fieldPosition.setEndIndex(0);
+
+        if (Double.isNaN(number))
+        {
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+				fieldPosition.setBeginIndex(result.length());
+			}
+//#endif 
+
+            result.append(symbols.getNaN());
+            // [Spark/CDL] Add attribute for NaN here.
+            // result.append(symbols.getNaN());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, result.length()
+                        - symbols.getNaN().length(), result.length());
+            }
+//#endif
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+				fieldPosition.setEndIndex(result.length());
+			}
+//#endif 
+
+            addPadding(result, fieldPosition, 0, 0);
+            return result;
+        }
+
+        // Do this BEFORE checking to see if value is infinite or negative!
+        if (multiplier != 1) number *= multiplier;
+
+        /* Detecting whether a double is negative is easy with the exception of
+         * the value -0.0.  This is a double which has a zero mantissa (and
+         * exponent), but a negative sign bit.  It is semantically distinct from
+         * a zero with a positive sign bit, and this distinction is important
+         * to certain kinds of computations.  However, it's a little tricky to
+         * detect, since (-0.0 == 0.0) and !(-0.0 < 0.0).  How then, you may
+         * ask, does it behave distinctly from +0.0?  Well, 1/(-0.0) ==
+         * -Infinity.  Proper detection of -0.0 is needed to deal with the
+         * issues raised by bugs 4106658, 4106667, and 4147706.  Liu 7/6/98.
+         */
+        boolean isNegative = (number < 0.0) || (number == 0.0 && 1/number < 0.0);
+        if (isNegative) number = -number;
+
+        // Apply rounding after multiplier
+        if (roundingDouble > 0.0) {
+            // number = roundingDouble
+            //  * round(number / roundingDouble, roundingMode, isNegative);
+            double newNumber = round(number, roundingDouble, roundingDoubleReciprocal, roundingMode, isNegative);
+            if (newNumber == 0.0 && number != newNumber) isNegative = false; // if we touched it, then make zero be zero.
+            number = newNumber;
+        }
+
+        if (Double.isInfinite(number))
+        {
+            int prefixLen = appendAffix(result, isNegative, true, parseAttr);
+
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+				fieldPosition.setBeginIndex(result.length());
+			}
+//#endif 
+
+            // [Spark/CDL] Add attribute for infinity here.
+            result.append(symbols.getInfinity());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, result.length()
+                        - symbols.getInfinity().length(), result.length());
+            }
+//#endif
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+				fieldPosition.setEndIndex(result.length());
+			}
+//#endif 
+
+            int suffixLen = appendAffix(result, isNegative, false, parseAttr);
+
+            addPadding(result, fieldPosition, prefixLen, suffixLen);
+            return result;
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, precision(false),
+                          !useExponentialNotation && !areSignificantDigitsUsed());
+            return subformat(number, result, fieldPosition, isNegative, false,
+                    parseAttr);
+        }
+    }
+    
+    // [NEW]
+    /**
+     * Round a double value to the nearest multiple of the given
+     * rounding increment, according to the given mode.  This is
+     * equivalent to rounding value/roundingInc to the nearest
+     * integer, according to the given mode, and returning that
+     * integer * roundingInc.
+     * Note this is changed from the version in 2.4, since division of doubles
+     * have inaccuracies. jitterbug 1871.
+     * @param number the absolute value of the number to be rounded
+     * @param roundingInc the rounding increment
+     * @param roundingIncReciprocal if non-zero, is the 
+     * @param mode a BigDecimal rounding mode
+     * @param isNegative true if the number to be rounded is negative
+     * @return the absolute value of the rounded result
+     */
+    private static double round(double number, double roundingInc, 
+            double roundingIncReciprocal, int mode, boolean isNegative) {
+        
+        double div = roundingIncReciprocal == 0.0 
+            ? number / roundingInc
+            : number * roundingIncReciprocal;
+        
+        // do the absolute cases first
+        
+        switch (mode) {
+        case BigDecimal.ROUND_CEILING:
+            div = (isNegative ? Math.floor(div + epsilon) : Math.ceil(div - epsilon));
+            break;
+        case BigDecimal.ROUND_FLOOR:
+            div = (isNegative ? Math.ceil(div - epsilon) : Math.floor(div + epsilon));
+            break;
+        case BigDecimal.ROUND_DOWN:
+            div = (Math.floor(div + epsilon));
+            break;
+        case BigDecimal.ROUND_UP:
+            div = (Math.ceil(div - epsilon));
+            break;
+        case BigDecimal.ROUND_UNNECESSARY:
+            if (div != Math.floor(div)) {
+                throw new ArithmeticException("Rounding necessary");
+            }
+            return number;
+        default:
+            
+            // Handle complex cases, where the choice depends on the closer value.
+            
+            // We figure out the distances to the two possible values, ceiling and floor.
+            // We then go for the diff that is smaller.
+            // Only if they are equal does the mode matter.
+
+            double ceil = Math.ceil(div);
+            double ceildiff = ceil - div; // (ceil * roundingInc) - number;
+            double floor = Math.floor(div);
+            double floordiff = div - floor; // number - (floor * roundingInc);
+            
+            // Note that the diff values were those mapped back to the "normal" space
+            // by using the roundingInc. I don't have access to the original author of the code
+            // but suspect that that was to produce better result in edge cases because of machine
+            // precision, rather than simply using the difference between, say, ceil and div.
+            // However, it didn't work in all cases. Am trying instead using an epsilon value.
+            
+            switch (mode) {
+            case BigDecimal.ROUND_HALF_EVEN:
+                // We should be able to just return Math.rint(a), but this
+                // doesn't work in some VMs.
+                // if one is smaller than the other, take the corresponding side
+                if (floordiff + epsilon < ceildiff) {
+                        div = floor;
+                    } else if (ceildiff + epsilon < floordiff) {
+                        div = ceil;
+                } else { // they are equal, so we want to round to whichever is even
+                    double testFloor = floor / 2;
+                    div = (testFloor == Math.floor(testFloor)) ? floor : ceil;
+                }
+                break;
+            case BigDecimal.ROUND_HALF_DOWN:
+                div = ((floordiff <= ceildiff + epsilon) ? floor : ceil);
+                break;
+            case BigDecimal.ROUND_HALF_UP:
+                div = ((ceildiff <= floordiff + epsilon) ? ceil : floor);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid rounding mode: " + mode);
+            }
+        }
+        number = roundingIncReciprocal == 0.0
+            ? div * roundingInc
+            : div / roundingIncReciprocal;
+        return number;
+    }
+    private static double epsilon = 0.00000000001;
+
+    /**
+     * @stable ICU 2.0
+     */
+    // [Spark/CDL] Delegate to format_long_StringBuffer_FieldPosition_boolean
+    public StringBuffer format(long number, StringBuffer result,
+            FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+
+    private StringBuffer format(long number, StringBuffer result,
+            FieldPosition fieldPosition, boolean parseAttr) 
+    {
+        fieldPosition.setBeginIndex(0);
+        fieldPosition.setEndIndex(0);
+
+        // If we are to do rounding, we need to move into the BigDecimal
+        // domain in order to do divide/multiply correctly.
+        // [NEW]
+        if (roundingIncrementICU != null) {
+            return format(BigDecimal.valueOf(number), result, fieldPosition);
+        }
+
+        boolean isNegative = (number < 0);
+        if (isNegative) number = -number;
+
+        // In general, long values always represent real finite numbers, so
+        // we don't have to check for +/- Infinity or NaN.  However, there
+        // is one case we have to be careful of:  The multiplier can push
+        // a number near MIN_VALUE or MAX_VALUE outside the legal range.  We
+        // check for this before multiplying, and if it happens we use BigInteger
+        // instead.
+        // [NEW]
+        if (multiplier != 1) {
+            boolean tooBig = false;
+            if (number < 0) { // This can only happen if number == Long.MIN_VALUE
+                long cutoff = Long.MIN_VALUE / multiplier;
+                tooBig = (number <= cutoff); // number == cutoff can only happen if multiplier == -1
+            } else {
+                long cutoff = Long.MAX_VALUE / multiplier;
+                tooBig = (number > cutoff);
+            }
+            if (tooBig) {
+                // [Spark/CDL] Use
+                // format_BigInteger_StringBuffer_FieldPosition_boolean instead
+                // parseAttr is used to judge whether to synthesize attributes.
+                return format(
+                        BigInteger.valueOf(isNegative ? -number : number),
+                        result, fieldPosition, parseAttr);
+            }
+        }
+
+        number *= multiplier;
+        synchronized(digitList) {
+            digitList.set(number, precision(true));
+            return subformat(number, result, fieldPosition, isNegative, true, parseAttr);
+        }
+    }
+
+    // [NEW]
+    /**
+     * Format a BigInteger number.
+     * 
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigInteger number, StringBuffer result,
+            FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+
+    // [Spark/CDL] 
+    private StringBuffer format(BigInteger number, StringBuffer result,
+            FieldPosition fieldPosition, boolean parseAttr) {
+        // If we are to do rounding, we need to move into the BigDecimal
+        // domain in order to do divide/multiply correctly.
+        if (roundingIncrementICU != null) {
+            return format(new BigDecimal(number), result, fieldPosition);
+        }
+
+        if (multiplier != 1) {
+            number = number.multiply(BigInteger.valueOf(multiplier));
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, precision(true));
+            return subformat(number.intValue(), result, fieldPosition, number.signum() < 0, true, parseAttr);
+        }
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    // [NEW]
+    /**
+     * Format a BigDecimal number.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+    
+    private StringBuffer format(java.math.BigDecimal number,
+            StringBuffer result, FieldPosition fieldPosition, boolean parseAttr) {
+        if (multiplier != 1) {
+            number = number.multiply(java.math.BigDecimal.valueOf(multiplier));
+        }
+
+        if (roundingIncrement != null) {
+            number = number.divide(roundingIncrement, 0, roundingMode)
+                    .multiply(roundingIncrement);
+        }
+
+        synchronized(digitList) {
+            digitList.set(number, precision(false),
+                          !useExponentialNotation && !areSignificantDigitsUsed());
+            return subformat(number.doubleValue(), result, fieldPosition, number.signum() < 0, false, parseAttr);
+        }        
+    }
+//#endif
+    
+    // [NEW]
+    /**
+     * Format a BigDecimal number.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigDecimal number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        /* This method is just a copy of the corresponding java.math.BigDecimal
+         * method for now.  It isn't very efficient since it must create a
+         * conversion object to do math on the rounding increment.  In the
+         * future we may try to clean this up, or even better, limit our support
+         * to just one flavor of BigDecimal.
+         */
+        if (multiplier != 1) {
+			number = number.multiply(BigDecimal.valueOf(multiplier), mathContext);
+        }
+
+        if (roundingIncrementICU != null) {
+            number = number.divide(roundingIncrementICU, 0, roundingMode)
+					.multiply(roundingIncrementICU, mathContext);
+        }
+
+        synchronized(digitList) {
+            digitList.set(number, precision(false),
+                          !useExponentialNotation && !areSignificantDigitsUsed());
+            return subformat(number.doubleValue(), result, fieldPosition, number.signum() < 0, false, false);
+        }        
+    }
+
+    /**
+     * Return true if a grouping separator belongs at the given
+     * position, based on whether grouping is in use and the values of
+     * the primary and secondary grouping interval.
+     * @param pos the number of integer digits to the right of
+     * the current position.  Zero indicates the position after the
+     * rightmost integer digit.
+     * @return true if a grouping character belongs at the current
+     * position.
+     */
+    private boolean isGroupingPosition(int pos) {
+        boolean result = false;
+        if (isGroupingUsed() && (pos > 0) && (groupingSize > 0)) {
+            if ((groupingSize2 > 0) && (pos > groupingSize)) {
+                result = ((pos - groupingSize) % groupingSize2) == 0;
+            } else {
+                result = pos % groupingSize == 0;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Return the number of fraction digits to display, or the total
+     * number of digits for significant digit formats and exponential
+     * formats.
+     */
+    private int precision(boolean isIntegral) {
+        if (areSignificantDigitsUsed()) {
+            return getMaximumSignificantDigits();
+        } else if (useExponentialNotation) {
+            return getMinimumIntegerDigits() + getMaximumFractionDigits();
+        } else {
+            return isIntegral ? 0 : getMaximumFractionDigits();
+        }
+    }
+
+    private StringBuffer subformat(int number, StringBuffer result, 
+                                   FieldPosition fieldPosition,
+                                   boolean isNegative, boolean isInteger, 
+                                   boolean parseAttr) {
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) { 
+            return subformat(currencyPluralInfo.select(number), result, fieldPosition,
+                             isNegative, isInteger, parseAttr);
+        } else {
+            return subformat(result, fieldPosition, isNegative, isInteger, parseAttr);
+        }
+    }
+
+    private StringBuffer subformat(double number, StringBuffer result, 
+                                   FieldPosition fieldPosition,
+                                   boolean isNegative, boolean isInteger,
+                                   boolean parseAttr) {
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) { 
+            return subformat(currencyPluralInfo.select(number), result, fieldPosition,
+                             isNegative, isInteger, parseAttr);
+        } else {
+            return subformat(result, fieldPosition, isNegative, isInteger, parseAttr);
+        }
+    }
+
+    private StringBuffer subformat(String pluralCount, 
+            StringBuffer result,
+            FieldPosition fieldPosition, boolean isNegative, boolean isInteger,
+            boolean parseAttr) 
+    {
+        // There are 2 ways to activate currency plural format:
+        // by applying a pattern with 3 currency sign directly,
+        // or by instantiate a decimal formatter using PLURALCURRENCYSTYLE.
+        // For both cases, the number of currency sign in the pattern is 3.
+        // Even if the number of currency sign in the pattern is 3, 
+        // it does not mean we need to reset the pattern.
+        // For 1st case, we do not need to reset pattern.
+        // For 2nd case, we might need to reset pattern,
+        // if the default pattern (corresponding to plural count 'other')
+        // we use is different from the pattern based on 'pluralCount'.
+        // 
+        // style is only valid when decimal formatter is constructed through
+        // DecimalFormat(pattern, symbol, style)
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            // May need to reset pattern if the style is PLURALCURRENCYSTYLE.
+            String currencyPluralPattern = currencyPluralInfo.getCurrencyPluralPattern(pluralCount);
+            if (formatPattern.equals(currencyPluralPattern) == false) {
+                applyPatternWithoutExpandAffix(currencyPluralPattern, false);
+            }
+        }
+        // Expand the affix to the right name according to
+        // the plural rule.
+        // This is only used for currency plural formatting.
+        // Currency plural name is not a fixed static one,
+        // it is a dynamic name based on the currency plural count.
+        // So, the affixes need to be expanded here.
+        // For other cases, the affix is a static one based on pattern alone,
+        // and it is already expanded during applying pattern,
+        // or setDecimalFormatSymbols, or setCurrency.
+        expandAffixAdjustWidth(pluralCount);
+        return subformat(result, fieldPosition, isNegative, isInteger, parseAttr);
+    }
+
+    /**
+     * Complete the formatting of a finite number.  On entry, the digitList must
+     * be filled in with the correct digits.
+     */
+    private StringBuffer subformat(StringBuffer result,
+            FieldPosition fieldPosition, boolean isNegative, boolean isInteger,
+            boolean parseAttr) 
+    {
+        // NOTE: This isn't required anymore because DigitList takes care of this.
+        //
+        //  // The negative of the exponent represents the number of leading
+        //  // zeros between the decimal and the first non-zero digit, for
+        //  // a value < 0.1 (e.g., for 0.00123, -fExponent == 2).  If this
+        //  // is more than the maximum fraction digits, then we have an underflow
+        //  // for the printed representation.  We recognize this here and set
+        //  // the DigitList representation to zero in this situation.
+        //
+        //  if (-digitList.decimalAt >= getMaximumFractionDigits())
+        //  {
+        //      digitList.count = 0;
+        //  }
+
+        int i;
+        char zero = symbols.getZeroDigit();
+        int zeroDelta = zero - '0'; // '0' is the DigitList representation of zero
+        char grouping = currencySignCount > 0 ?
+                    symbols.getMonetaryGroupingSeparator() :
+                    symbols.getGroupingSeparator();
+        char decimal =  currencySignCount > 0 ?
+            symbols.getMonetaryDecimalSeparator() :
+            symbols.getDecimalSeparator();
+        boolean useSigDig = areSignificantDigitsUsed();
+        int maxIntDig = getMaximumIntegerDigits();
+        int minIntDig = getMinimumIntegerDigits();
+
+        /* Per bug 4147706, DecimalFormat must respect the sign of numbers which
+         * format as zero.  This allows sensible computations and preserves
+         * relations such as signum(1/x) = signum(x), where x is +Infinity or
+         * -Infinity.  Prior to this fix, we always formatted zero values as if
+         * they were positive.  Liu 7/6/98.
+         */
+        if (digitList.isZero())
+        {
+            digitList.decimalAt = 0; // Normalize
+        }
+
+        int prefixLen = appendAffix(result, isNegative, true, parseAttr);
+
+        if (useExponentialNotation)
+        {
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+                fieldPosition.setEndIndex(-1);
+            } else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                fieldPosition.setBeginIndex(-1);
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+                fieldPosition.setEndIndex(-1);
+			} else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                fieldPosition.setBeginIndex(-1);
+			} 
+//#endif 
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL]
+            // the begin index of integer part
+            // the end index of integer part
+            // the begin index of fractional part
+            int intBegin = result.length();
+            int intEnd = -1;
+            int fracBegin = -1;
+//#endif
+
+            int minFracDig = 0;
+            if (useSigDig) {
+                maxIntDig = minIntDig = 1;
+                minFracDig = getMinimumSignificantDigits() - 1;
+            } else {
+                minFracDig = getMinimumFractionDigits();
+                if (maxIntDig > MAX_SCIENTIFIC_INTEGER_DIGITS) {
+                    maxIntDig = 1;
+                    if (maxIntDig < minIntDig) {
+                        maxIntDig = minIntDig;
+                    }
+                }
+                if (maxIntDig > minIntDig) {
+                    minIntDig = 1;
+                }
+            }            
+
+            // Minimum integer digits are handled in exponential format by
+            // adjusting the exponent.  For example, 0.01234 with 3 minimum
+            // integer digits is "123.4E-4".
+
+            // Maximum integer digits are interpreted as indicating the
+            // repeating range.  This is useful for engineering notation, in
+            // which the exponent is restricted to a multiple of 3.  For
+            // example, 0.01234 with 3 maximum integer digits is "12.34e-3".
+            // If maximum integer digits are defined and are larger than
+            // minimum integer digits, then minimum integer digits are
+            // ignored.
+
+            int exponent = digitList.decimalAt;
+            if (maxIntDig > 1 && maxIntDig != minIntDig) {
+                // A exponent increment is defined; adjust to it.
+                exponent = (exponent > 0) ? (exponent - 1) / maxIntDig
+                                          : (exponent / maxIntDig) - 1;
+                exponent *= maxIntDig;
+            } else {
+                // No exponent increment is defined; use minimum integer digits.
+                // If none is specified, as in "#E0", generate 1 integer digit.
+                exponent -= (minIntDig > 0 || minFracDig > 0)
+                    ? minIntDig : 1;
+            }
+
+            // We now output a minimum number of digits, and more if there
+            // are more digits, up to the maximum number of digits.  We
+            // place the decimal point after the "integer" digits, which
+            // are the first (decimalAt - exponent) digits.
+            int minimumDigits = minIntDig + minFracDig;
+            // The number of integer digits is handled specially if the number
+            // is zero, since then there may be no digits.
+            int integerDigits = digitList.isZero() ? minIntDig :
+                digitList.decimalAt - exponent;
+            int totalDigits = digitList.count;
+            if (minimumDigits > totalDigits) totalDigits = minimumDigits;
+            if (integerDigits > totalDigits) totalDigits = integerDigits;
+
+            for (i=0; i<totalDigits; ++i)
+            {
+                if (i == integerDigits)
+                {
+                    // Record field information for caller.
+                    if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                        fieldPosition.setEndIndex(result.length());
+                    }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+					else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+						fieldPosition.setEndIndex(result.length());
+					}
+//#endif 
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                    // [Spark/CDL] Add attribute for integer part
+                    if (parseAttr) {
+                        intEnd = result.length();
+                        addAttribute(Field.INTEGER, intBegin, result.length());
+                    }
+//#endif
+                    result.append(decimal);
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                    // [Spark/CDL] Add attribute for decimal separator
+                    if (parseAttr) {
+                        // Length of decimal separator is 1.
+                        int decimalSeparatorBegin = result.length() - 1;
+                        addAttribute(Field.DECIMAL_SEPARATOR,
+                                decimalSeparatorBegin, result.length());
+                            fracBegin = result.length();
+                    }
+//#endif
+                    // Record field information for caller.
+                    if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                        fieldPosition.setBeginIndex(result.length());
+                    }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+					else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+						fieldPosition.setBeginIndex(result.length());
+					}
+//#endif 
+
+                }
+                result.append((i < digitList.count) ?
+                          (char)(digitList.digits[i] + zeroDelta) :
+                          zero);
+            }
+            
+            //For ICU compatibility and format 0 to 0E0 with pattern "#E0" [Richard/GCL]
+            if (digitList.isZero() && (totalDigits ==0)) {
+                result.append(zero);
+            }
+
+            // Record field information
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                if (fieldPosition.getEndIndex() < 0) {
+                    fieldPosition.setEndIndex(result.length());
+                }
+            } else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                if (fieldPosition.getBeginIndex() < 0) {
+                    fieldPosition.setBeginIndex(result.length());
+                }
+                fieldPosition.setEndIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+				if (fieldPosition.getEndIndex() < 0) {
+					fieldPosition.setEndIndex(result.length());
+				}
+			} else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+				if (fieldPosition.getBeginIndex() < 0) {
+					fieldPosition.setBeginIndex(result.length());
+				}
+				fieldPosition.setEndIndex(result.length());
+			}
+//#endif 
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Calcuate the end index of integer part and fractional
+            // part if they are not properly processed yet.
+            if (parseAttr) {
+                if (intEnd < 0) {
+                    addAttribute(Field.INTEGER, intBegin, result.length());
+                }
+                if (fracBegin > 0) {
+                    addAttribute(Field.FRACTION, fracBegin, result.length());
+                }
+            }
+//#endif
+
+            // The exponent is output using the pattern-specified minimum
+            // exponent digits.  There is no maximum limit to the exponent
+            // digits, since truncating the exponent would result in an
+            // unacceptable inaccuracy.
+            result.append(symbols.getExponentSeparator());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] For exponent symbol, add an attribute.
+            if (parseAttr) {
+                addAttribute(Field.EXPONENT_SYMBOL, result.length()
+                        - symbols.getExponentSeparator().length(), result
+                        .length());
+            }
+//#endif
+            // For zero values, we force the exponent to zero.  We
+            // must do this here, and not earlier, because the value
+            // is used to determine integer digit count above.
+            if (digitList.isZero()) exponent = 0;
+
+            boolean negativeExponent = exponent < 0;
+            if (negativeExponent) {
+                exponent = -exponent;
+                result.append(symbols.getMinusSign());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                // [Spark/CDL] If exponent has sign, then add an exponent sign
+                // attribute.
+                if (parseAttr) {
+                    // Length of exponent sign is 1.
+                    addAttribute(Field.EXPONENT_SIGN, result.length() - 1,
+                            result.length());
+                }
+//#endif
+            } else if (exponentSignAlwaysShown) {
+                result.append(symbols.getPlusSign());
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                // [Spark/CDL] Add an plus sign attribute.
+                if (parseAttr) {
+                    // Length of exponent sign is 1.
+                    int expSignBegin = result.length() - 1;
+                    addAttribute(Field.EXPONENT_SIGN, expSignBegin, result
+                            .length());
+                }
+//#endif
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            int expBegin = result.length();
+//#endif
+            digitList.set(exponent);
+            {
+                int expDig = minExponentDigits;
+                if (useExponentialNotation && expDig < 1) {
+                    expDig = 1;
+                }
+                for (i=digitList.decimalAt; i<expDig; ++i) result.append(zero);
+            }
+            for (i=0; i<digitList.decimalAt; ++i)
+            {
+                result.append((i < digitList.count) ?
+                          (char)(digitList.digits[i] + zeroDelta) : zero);
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Add attribute for exponent part.
+            if (parseAttr) {
+                addAttribute(Field.EXPONENT, expBegin, result.length());
+            }
+//#endif
+        }
+        else
+        {
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Record the integer start index.
+            int intBegin = result.length();
+//#endif
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+				fieldPosition.setBeginIndex(result.length());
+			}
+//#endif 
+
+            int sigCount = 0;
+            int minSigDig = getMinimumSignificantDigits();
+            int maxSigDig = getMaximumSignificantDigits();
+            if (!useSigDig) {
+                minSigDig = 0;
+                maxSigDig = Integer.MAX_VALUE;
+            }
+
+            // Output the integer portion.  Here 'count' is the total
+            // number of integer digits we will display, including both
+            // leading zeros required to satisfy getMinimumIntegerDigits,
+            // and actual digits present in the number.
+            int count = useSigDig ?
+                Math.max(1, digitList.decimalAt) : minIntDig;
+            if (digitList.decimalAt > 0 && count < digitList.decimalAt) {
+                count = digitList.decimalAt;
+            }
+
+            // Handle the case where getMaximumIntegerDigits() is smaller
+            // than the real number of integer digits.  If this is so, we
+            // output the least significant max integer digits.  For example,
+            // the value 1997 printed with 2 max integer digits is just "97".
+
+            int digitIndex = 0; // Index into digitList.fDigits[]
+            if (count > maxIntDig && maxIntDig >= 0) {
+                count = maxIntDig;
+                digitIndex = digitList.decimalAt - count;
+            }
+
+            int sizeBeforeIntegerPart = result.length();
+            for (i=count-1; i>=0; --i)
+            {
+                if (i < digitList.decimalAt && digitIndex < digitList.count &&
+                    sigCount < maxSigDig) {
+                    // Output a real digit
+                    byte d = digitList.digits[digitIndex++];
+                    result.append((char)(d + zeroDelta));
+                    ++sigCount;
+                }
+                else
+                {
+                    // Output a zero (leading or trailing)
+                    result.append(zero);
+                    if (sigCount > 0) {
+                        ++sigCount;
+                    }
+                }
+
+                // Output grouping separator if necessary.
+                if (isGroupingPosition(i)) {
+                    result.append(grouping);
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                    // [Spark/CDL] Add grouping separator attribute here.
+                    if (parseAttr) {
+                        // Length of grouping separator is 1.
+                        addAttribute(Field.GROUPING_SEPARATOR,
+                                result.length() - 1, result.length());
+                    }
+//#endif
+                }
+            }
+
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+				fieldPosition.setEndIndex(result.length());
+			}
+//#endif 
+
+            // Determine whether or not there are any printable fractional
+            // digits.  If we've used up the digits we know there aren't.
+            boolean fractionPresent = (!isInteger && digitIndex < digitList.count) ||
+                (useSigDig ? (sigCount < minSigDig) : (getMinimumFractionDigits() > 0));
+
+            // If there is no fraction present, and we haven't printed any
+            // integer digits, then print a zero.  Otherwise we won't print
+            // _any_ digits, and we won't be able to parse this string.
+            if (!fractionPresent && result.length() == sizeBeforeIntegerPart)
+                result.append(zero);
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Add attribute for integer part.
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, intBegin, result.length());
+            }
+//#endif
+            // Output the decimal separator if we always do so.
+            if (decimalSeparatorAlwaysShown || fractionPresent)
+            {
+                result.append(decimal);
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                // [Spark/CDL] Add attribute for decimal separator
+                if (parseAttr) {
+                    addAttribute(Field.DECIMAL_SEPARATOR, result.length() - 1,
+                            result.length());
+                }
+//#endif
+            }
+
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+				fieldPosition.setBeginIndex(result.length());
+			}
+//#endif 
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Record the begin index of fraction part.
+            int fracBegin = result.length();
+//#endif
+
+            count = useSigDig ? Integer.MAX_VALUE : getMaximumFractionDigits();
+            if (useSigDig && (sigCount == maxSigDig ||
+                              (sigCount >= minSigDig && digitIndex == digitList.count))) {
+                count = 0;   
+            }
+            for (i=0; i < count; ++i) {
+                // Here is where we escape from the loop.  We escape
+                // if we've output the maximum fraction digits
+                // (specified in the for expression above).  We also
+                // stop when we've output the minimum digits and
+                // either: we have an integer, so there is no
+                // fractional stuff to display, or we're out of
+                // significant digits.
+                if (!useSigDig && i >= getMinimumFractionDigits() &&
+                    (isInteger || digitIndex >= digitList.count)) {
+                    break;
+                }
+
+                // Output leading fractional zeros.  These are zeros
+                // that come after the decimal but before any
+                // significant digits.  These are only output if
+                // abs(number being formatted) < 1.0.
+                if (-1-i > (digitList.decimalAt-1)) {
+                    result.append(zero);
+                    continue;
+                }
+
+                // Output a digit, if we have any precision left, or a
+                // zero if we don't.  We don't want to output noise digits.
+                if (!isInteger && digitIndex < digitList.count) {
+                    result.append((char)(digitList.digits[digitIndex++] + zeroDelta));
+                } else {
+                    result.append(zero);
+                }
+
+                // If we reach the maximum number of significant
+                // digits, or if we output all the real digits and
+                // reach the minimum, then we are done.
+                ++sigCount;
+                if (useSigDig &&
+                    (sigCount == maxSigDig ||
+                     (digitIndex == digitList.count && sigCount >= minSigDig))) {
+                    break;
+                }
+            }
+
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13) 
+//#else 
+			else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+				fieldPosition.setEndIndex(result.length());
+			}
+//#endif 
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            // [Spark/CDL] Add attribute information if necessary.
+            if (parseAttr && (decimalSeparatorAlwaysShown || fractionPresent)) {
+                addAttribute(Field.FRACTION, fracBegin, result.length());
+            }
+//#endif
+        }
+
+        int suffixLen = appendAffix(result, isNegative, false, parseAttr);
+
+        // [NEW]
+        addPadding(result, fieldPosition, prefixLen, suffixLen);
+        return result;
+    }
+
+    // [NEW]
+    private final void addPadding(StringBuffer result, FieldPosition fieldPosition,
+                                  int prefixLen, int suffixLen) {
+        if (formatWidth > 0) {
+            int len = formatWidth - result.length();
+            if (len > 0) {
+                char[] padding = new char[len];
+                for (int i=0; i<len; ++i) {
+                    padding[i] = pad;
+                }
+                switch (padPosition) {
+                case PAD_AFTER_PREFIX:
+                    result.insert(prefixLen, padding);
+                    break;
+                case PAD_BEFORE_PREFIX:
+                    result.insert(0, padding);
+                    break;
+                case PAD_BEFORE_SUFFIX:
+                    result.insert(result.length() - suffixLen, padding);
+                    break;
+                case PAD_AFTER_SUFFIX:
+                    result.append(padding);
+                    break;
+                }
+                if (padPosition == PAD_BEFORE_PREFIX ||
+                    padPosition == PAD_AFTER_PREFIX) {
+                    fieldPosition.setBeginIndex(fieldPosition.getBeginIndex() + len);
+                    fieldPosition.setEndIndex(fieldPosition.getEndIndex() + len);
+                }
+            }
+        }
+    }
+
+    // [CHANGED]
+    /**
+     * Parse the given string, returning a <code>Number</code> object to
+     * represent the parsed value.  <code>Double</code> objects are returned to
+     * represent non-integral values which cannot be stored in a
+     * <code>BigDecimal</code>.  These are <code>NaN</code>, infinity,
+     * -infinity, and -0.0.  If {@link #isParseBigDecimal()} is false (the
+     * default), all other values are returned as <code>Long</code>,
+     * <code>BigInteger</code>, or <code>BigDecimal</code> values,
+     * in that order of preference. If {@link #isParseBigDecimal()} is true,
+     * all other values are returned as <code>BigDecimal</code> valuse.
+     * If the parse fails, null is returned.
+     * @param text the string to be parsed
+     * @param parsePosition defines the position where parsing is to begin,
+     * and upon return, the position where parsing left off.  If the position
+     * has not changed upon return, then parsing failed.
+     * @return a <code>Number</code> object with the parsed value or
+     * <code>null</code> if the parse failed
+     * @stable ICU 2.0
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+       return (Number) parse(text, parsePosition, false);
+    }
+
+    // [NEW]
+    /**
+     * Parses text from the given string as a CurrencyAmount.  Unlike
+     * the parse() method, this method will attempt to parse a generic
+     * currency name, searching for a match of this object's locale's
+     * currency display names, or for a 3-letter ISO currency code.
+     * This method will fail if this format is not a currency format,
+     * that is, if it does not contain the currency pattern symbol
+     * (U+00A4) in its prefix or suffix.
+     *
+     * @param text the string to parse
+     * @param pos input-output position; on input, the position within
+     * text to match; must have 0 <= pos.getIndex() < text.length();
+     * on output, the position after the last matched character. If
+     * the parse fails, the position in unchanged upon output.
+     * @return a CurrencyAmount, or null upon failure
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    CurrencyAmount parseCurrency(String text, ParsePosition pos) {
+        return (CurrencyAmount) parse(text, pos, true);
+    }
+
+    /**
+     * Parses the given text as either a Number or a CurrencyAmount.
+     * @param text the string to parse
+     * @param parsePosition input-output position; on input, the
+     * position within text to match; must have 0 <= pos.getIndex() <
+     * text.length(); on output, the position after the last matched
+     * character. If the parse fails, the position in unchanged upon
+     * output.
+     * @param parseCurrency if true, a CurrencyAmount is parsed and
+     * returned; otherwise a Number is parsed and returned
+     * @return a Number or CurrencyAmount or null
+     */
+    private Object parse(String text, ParsePosition parsePosition, boolean parseCurrency) {
+        int backup;
+        int i = backup = parsePosition.getIndex();
+
+        // Handle NaN as a special case:
+
+        // Skip padding characters, if around prefix
+        if (formatWidth > 0 && (padPosition == PAD_BEFORE_PREFIX ||
+                                padPosition == PAD_AFTER_PREFIX)) {
+            i = skipPadding(text, i);
+        }
+        if (text.regionMatches(i, symbols.getNaN(),
+                               0, symbols.getNaN().length())) {
+            i += symbols.getNaN().length();
+            // Skip padding characters, if around suffix
+            if (formatWidth > 0 && (padPosition == PAD_BEFORE_SUFFIX ||
+                                    padPosition == PAD_AFTER_SUFFIX)) {
+                i = skipPadding(text, i);
+            }
+            parsePosition.setIndex(i);
+            return new Double(Double.NaN);
+        }
+
+        // NaN parse failed; start over
+        i = backup;
+
+        boolean[] status = new boolean[STATUS_LENGTH];
+        Currency[] currency = parseCurrency ? new Currency[1] : null;
+        if (currencySignCount > 0) {
+            if (!parseForCurrency(text, parsePosition, parseCurrency, 
+                                  currency, status)) {
+                return null;
+            }
+        } else {
+            if (!subparse(text, parsePosition, digitList, false, status, 
+                          currency, negPrefixPattern, negSuffixPattern,
+                          posPrefixPattern, posSuffixPattern)) {
+                parsePosition.setIndex(backup);
+                return null;
+            }
+        }
+
+        Number n = null;
+
+        // Handle infinity
+        if (status[STATUS_INFINITE]) {
+            n = new Double(status[STATUS_POSITIVE]
+                           ? Double.POSITIVE_INFINITY
+                           : Double.NEGATIVE_INFINITY);
+        }
+
+        // Handle underflow
+        else if (status[STATUS_UNDERFLOW]) {
+            n = status[STATUS_POSITIVE] ? new Double("0.0") : new Double("-0.0");
+        }
+
+        // Handle -0.0
+        else if (!status[STATUS_POSITIVE] && digitList.isZero()) {
+            n = new Double("-0.0");
+        }
+
+        else {
+            // Do as much of the multiplier conversion as possible without
+            // losing accuracy.
+            int mult = multiplier; // Don't modify this.multiplier
+            while (mult % 10 == 0) {
+                --digitList.decimalAt;
+                mult /= 10;
+            }
+
+            // Handle integral values
+            if (!parseBigDecimal && mult == 1 && digitList.isIntegral()) {
+                // hack quick long
+                if (digitList.decimalAt < 12) { // quick check for long
+                    long l = 0;
+                    if (digitList.count > 0) {
+                        int nx = 0;
+                        while (nx < digitList.count) {
+                            l = l * 10 + (char)digitList.digits[nx++] - '0';
+                        }
+                        while (nx++ < digitList.decimalAt) {
+                            l *= 10;
+                        }
+                        if (!status[STATUS_POSITIVE]) {
+                            l = -l;
+                        }
+                    }
+                    n = new Long(l);
+                } else {
+                    BigInteger big = digitList.getBigInteger(status[STATUS_POSITIVE]);
+                    n = (big.bitLength() < 64) ?
+                        (Number) new Long(big.longValue()) : (Number) big;
+                }
+            }
+            // Handle non-integral values or the case where parseBigDecimal is set
+            else {
+                BigDecimal big = digitList.getBigDecimalICU(status[STATUS_POSITIVE]);
+                n = big;
+                if (mult != 1) {
+                    n = big.divide(BigDecimal.valueOf(mult), mathContext);
+                }
+            }
+        }
+
+        // Assemble into CurrencyAmount if necessary
+        return parseCurrency ? (Object) new CurrencyAmount(n, currency[0])
+                             : (Object) n;
+    }
+
+
+    private boolean parseForCurrency(String text, ParsePosition parsePosition, 
+                                     boolean parseCurrency, Currency[] currency,
+                                     boolean[] status) {
+        int origPos = parsePosition.getIndex();
+        if (!isReadyForParsing) {
+            int savedCurrencySignCount = currencySignCount;
+            setupCurrencyAffixForAllPatterns();
+            // reset pattern back
+            if (savedCurrencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT) {
+                applyPatternWithoutExpandAffix(formatPattern, false);
+            } else {
+                applyPattern(formatPattern, false);
+            }
+            isReadyForParsing = true;
+        }
+        int maxPosIndex = origPos;
+        int maxErrorPos = -1;
+        boolean[] savedStatus = null;
+        // First, parse against current pattern.
+        // Since current pattern could be set by applyPattern(),
+        // it could be an arbitrary pattern, and it may not be the one
+        // defined in current locale.
+        boolean[] tmpStatus = new boolean[STATUS_LENGTH];
+        ParsePosition tmpPos = new ParsePosition(origPos);
+        DigitList tmpDigitList = new DigitList();
+        boolean found = subparse(text, tmpPos, tmpDigitList, false, 
+                  tmpStatus, currency, negPrefixPattern, negSuffixPattern,
+                  posPrefixPattern, posSuffixPattern);
+        if (found) {
+            if (tmpPos.getIndex() > maxPosIndex) {
+                maxPosIndex = tmpPos.getIndex();
+                savedStatus = tmpStatus;
+                digitList = tmpDigitList;
+            }
+        } else {
+            maxErrorPos = tmpPos.getErrorIndex();
+        }
+        // Then, parse against affix patterns.
+        // Those are currency patterns and currency plural patterns
+        // defined in the locale.
+        Iterator  iter = affixPatternsForCurrency.iterator();
+        while (iter.hasNext()) {
+            AffixForCurrency affix = (AffixForCurrency)iter.next();
+
+            tmpStatus = new boolean[STATUS_LENGTH];
+            tmpPos = new ParsePosition(origPos); 
+            tmpDigitList = new DigitList();
+            boolean result = subparse(text, tmpPos, tmpDigitList, false, 
+                               tmpStatus, currency, affix.getNegPrefix(),
+                               affix.getNegSuffix(), affix.getPosPrefix(), 
+                               affix.getPosSuffix());
+            if (result) {
+                found = true;
+                if (tmpPos.getIndex() > maxPosIndex) {
+                    maxPosIndex = tmpPos.getIndex();
+                    savedStatus = tmpStatus;
+                    digitList = tmpDigitList;
+                }
+            } else {
+                maxErrorPos = (tmpPos.getErrorIndex() > maxErrorPos) ?
+                              tmpPos.getErrorIndex() : maxErrorPos;
+            }
+        }
+        // Finally, parse against simple affix to find the match.
+        // For example, in TestMonster suite,
+        // if the to-be-parsed text is "-\u00A40,00".
+        // complexAffixCompare will not find match,
+        // since there is no ISO code matches "\u00A4",
+        // and the parse stops at "\u00A4".
+        // We will just use simple affix comparison (look for exact match)
+        // to pass it.
+        tmpStatus = new boolean[STATUS_LENGTH];
+        tmpPos = new ParsePosition(origPos); 
+        tmpDigitList = new DigitList();
+        int savedCurrencySignCount = currencySignCount;
+        // set currencySignCount to 0 so that compareAffix function will
+        // fall to compareSimpleAffix path, not compareComplexAffix path.
+        currencySignCount = 0;
+        boolean result = subparse(text, tmpPos, tmpDigitList, false, 
+                  tmpStatus, currency, negativePrefix, negativeSuffix,
+                  positivePrefix, positiveSuffix);
+        currencySignCount = savedCurrencySignCount;
+        if (result) {
+            if (tmpPos.getIndex() > maxPosIndex) {
+                maxPosIndex = tmpPos.getIndex();
+                savedStatus = tmpStatus;
+                digitList = tmpDigitList;
+            }
+            found = true;
+        } else {
+                maxErrorPos = (tmpPos.getErrorIndex() > maxErrorPos) ?
+                              tmpPos.getErrorIndex() : maxErrorPos;
+        }
+
+        if (!found) {
+            //parsePosition.setIndex(origPos);
+            parsePosition.setErrorIndex(maxErrorPos);
+        } else {
+            parsePosition.setIndex(maxPosIndex);
+            parsePosition.setErrorIndex(-1);
+            for (int index = 0; index < STATUS_LENGTH; ++index) {
+                status[index] = savedStatus[index];
+            }
+        }
+        return found;
+    }
+
+
+    // Get affix patterns used in locale's currency pattern
+    // (NumberPatterns[1]) and currency plural pattern (CurrencyUnitPatterns).
+    private void setupCurrencyAffixForAllPatterns() {
+        if (currencyPluralInfo == null) {
+            currencyPluralInfo = new CurrencyPluralInfo(symbols.getLocale());
+        }
+        affixPatternsForCurrency = new HashSet();
+
+        // save the current pattern, since it will be changed by
+        // applyPatternWithoutExpandAffix
+        String savedFormatPattern = formatPattern;
+        
+        // CURRENCYSTYLE and ISOCURRENCYSTYLE should have the same
+        // prefix and suffix, so, only need to save one of them.
+        // Here, chose onlyApplyPatternWithoutExpandAffix without
+        // saving the actualy pattern in 'pattern' data member.
+        // TODO: is it uloc?
+        applyPatternWithoutExpandAffix(getPattern(symbols.getLocale(), NumberFormat.CURRENCYSTYLE), false);
+        AffixForCurrency affixes = new AffixForCurrency(negPrefixPattern,
+                                                        negSuffixPattern,
+                                                        posPrefixPattern,
+                                                        posSuffixPattern);
+        affixPatternsForCurrency.add(affixes);
+        
+        // add plural pattern
+        Iterator iter = currencyPluralInfo.pluralPatternIterator();
+        Set currencyUnitPatternSet = new HashSet();
+        while (iter.hasNext()) {
+            String pluralCount = (String)iter.next();
+            String currencyPattern = (String)currencyPluralInfo.getCurrencyPluralPattern(pluralCount);
+            if (currencyPattern != null &&
+                currencyUnitPatternSet.contains(currencyPattern) == false) {
+                currencyUnitPatternSet.add(currencyPattern);
+                applyPatternWithoutExpandAffix(currencyPattern, false);
+                affixes = new AffixForCurrency(negPrefixPattern,
+                                               negSuffixPattern,
+                                               posPrefixPattern,
+                                               posSuffixPattern);
+                affixPatternsForCurrency.add(affixes);
+            }   
+        }
+        // reset pattern back
+        formatPattern = savedFormatPattern;
+    }
+
+    private static final int CURRENCY_SIGN_COUNT_IN_SYMBOL_FORMAT = 1;
+    private static final int CURRENCY_SIGN_COUNT_IN_ISO_FORMAT = 2;
+    private static final int CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT = 3;
+
+    private static final int STATUS_INFINITE = 0;
+    private static final int STATUS_POSITIVE = 1;
+    private static final int STATUS_UNDERFLOW = 2;
+    private static final int STATUS_LENGTH   = 3;
+    private static final UnicodeSet dotEquivalents =(UnicodeSet) new UnicodeSet(
+        "[.\u2024\u3002\uFE12\uFE52\uFF0E\uFF61]").freeze();
+    private static final UnicodeSet commaEquivalents = (UnicodeSet) new UnicodeSet(
+        "[,\u060C\u066B\u3001\uFE10\uFE11\uFE50\uFE51\uFF0C\uFF64]").freeze();
+    private static final UnicodeSet otherGroupingSeparators = (UnicodeSet) new UnicodeSet(
+        "[\\ '\u00A0\u066C\u2000-\u200A\u2018\u2019\u202F\u205F\u3000\uFF07]").freeze();
+    
+    private static final UnicodeSet strictDotEquivalents =(UnicodeSet) new UnicodeSet(
+        "[.\u2024\uFE52\uFF0E\uFF61]").freeze();
+    private static final UnicodeSet strictCommaEquivalents = (UnicodeSet) new UnicodeSet(
+        "[,\u066B\uFE10\uFE50\uFF0C]").freeze();
+    private static final UnicodeSet strictOtherGroupingSeparators = (UnicodeSet) new UnicodeSet(
+        "[\\ '\u00A0\u066C\u2000-\u200A\u2018\u2019\u202F\u205F\u3000\uFF07]").freeze();
+
+    private static final UnicodeSet defaultGroupingSeparators = (UnicodeSet) new UnicodeSet(
+        dotEquivalents).addAll(commaEquivalents).addAll(otherGroupingSeparators).freeze();
+    private static final UnicodeSet strictDefaultGroupingSeparators = (UnicodeSet) new UnicodeSet(
+            strictDotEquivalents).addAll(strictCommaEquivalents).addAll(strictOtherGroupingSeparators).freeze();
+
+    // When parsing a number with big exponential value, it requires to transform
+    // the value into a string representation to construct BigInteger instance.
+    // We want to set the maximum size because it can easily trigger OutOfMemoryException.
+    // PARSE_MAX_EXPONENT is currently set to 1000, which is much bigger than
+    // MAX_VALUE of Double (
+    // See the problem reported by ticket#5698
+    private static final int PARSE_MAX_EXPONENT = 1000;
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Parse the given text into a number.  The text is parsed beginning at
+     * parsePosition, until an unparseable character is seen.
+     * @param text The string to parse.
+     * @param parsePosition The position at which to being parsing.  Upon
+     * return, the first unparseable character.
+     * @param digits The DigitList to set to the parsed value.
+     * @param isExponent If true, parse an exponent.  This means no
+     * infinite values and integer only.
+     * @param status Upon return contains boolean status flags indicating
+     * whether the value was infinite and whether it was positive.
+     * @param currency return value for parsed currency, for generic
+     * currency parsing mode, or null for normal parsing. In generic
+     * currency parsing mode, any currency is parsed, not just the
+     * currency that this formatter is set to.
+     * @param negPrefix negative prefix pattern
+     * @param negSuffix negative suffix pattern
+     * @param posPrefix positive prefix pattern
+     * @param negSuffix negative suffix pattern
+     */
+    private final boolean subparse(String text, ParsePosition parsePosition,
+                   DigitList digits, boolean isExponent,
+                   boolean status[], Currency currency[],
+                   String negPrefix, String negSuffix,
+                   String posPrefix, String posSuffix)
+    {
+        int position = parsePosition.getIndex();
+        int oldStart = parsePosition.getIndex();
+
+        // Match padding before prefix
+        if (formatWidth > 0 && padPosition == PAD_BEFORE_PREFIX) {
+            position = skipPadding(text, position);
+        }
+
+        // Match positive and negative prefixes; prefer longest match.
+        int posMatch = compareAffix(text, position, false, true, posPrefix, currency);
+        int negMatch = compareAffix(text, position, true, true, negPrefix, currency);
+        if (posMatch >= 0 && negMatch >= 0) {
+            if (posMatch > negMatch) {
+                negMatch = -1;
+            } else if (negMatch > posMatch) {
+                posMatch = -1;
+            }  
+        }
+        if (posMatch >= 0) {
+            position += posMatch;
+        } else if (negMatch >= 0) {
+            position += negMatch;
+        } else {
+            parsePosition.setErrorIndex(position);
+            return false;
+        }
+
+        // Match padding after prefix
+        if (formatWidth > 0 && padPosition == PAD_AFTER_PREFIX) {
+            position = skipPadding(text, position);
+        }
+
+        // process digits or Inf, find decimal position
+        status[STATUS_INFINITE] = false;
+        if (!isExponent && text.regionMatches(position,symbols.getInfinity(),0,
+                          symbols.getInfinity().length()))
+        {
+            position += symbols.getInfinity().length();
+            status[STATUS_INFINITE] = true;
+        } else {
+            // We now have a string of digits, possibly with grouping symbols,
+            // and decimal points.  We want to process these into a DigitList.
+            // We don't want to put a bunch of leading zeros into the DigitList
+            // though, so we keep track of the location of the decimal point,
+            // put only significant digits into the DigitList, and adjust the
+            // exponent as needed.
+
+            digits.decimalAt = digits.count = 0;
+            char zero = symbols.getZeroDigit();
+            char decimal = currencySignCount > 0 ?
+            symbols.getMonetaryDecimalSeparator() : symbols.getDecimalSeparator();
+            char grouping = symbols.getGroupingSeparator();
+                        
+            String exponentSep = symbols.getExponentSeparator();
+            boolean sawDecimal = false;
+            boolean sawExponent = false;
+            boolean sawDigit = false;
+            long exponent = 0; // Set to the exponent value, if any
+            int digit = 0;
+
+            // strict parsing
+            boolean strictParse = isParseStrict();
+            boolean strictFail = false; // did we exit with a strict parse failure?
+            boolean leadingZero = false; // did we see a leading zero?
+            int lastGroup = -1; // where did we last see a grouping separator?
+            int gs2 = groupingSize2 == 0 ? groupingSize : groupingSize2;
+            
+            // equivalent grouping and decimal support
+            
+            // TODO markdavis Cache these if it makes a difference in performance.
+            UnicodeSet decimalSet = new UnicodeSet(getSimilarDecimals(decimal, strictParse));
+            UnicodeSet groupingSet = new UnicodeSet(strictParse ? strictDefaultGroupingSeparators : defaultGroupingSeparators)
+                .add(grouping).removeAll(decimalSet);
+            
+            // we are guaranteed that 
+            // decimalSet contains the decimal, and 
+            // groupingSet contains the groupingSeparator
+            // (unless decimal and grouping are the same, which should never happen. But in that case, groupingSet will just be empty.)
+
+
+            // We have to track digitCount ourselves, because digits.count will
+            // pin when the maximum allowable digits is reached.
+            int digitCount = 0;
+            
+            int backup = -1;
+            for (; position < text.length(); ++position)
+            {
+                char ch = text.charAt(position);
+
+                /* We recognize all digit ranges, not only the Latin digit range
+                 * '0'..'9'.  We do so by using the UCharacter.digit() method,
+                 * which converts a valid Unicode digit to the range 0..9.
+                 *
+                 * The character 'ch' may be a digit.  If so, place its value
+                 * from 0 to 9 in 'digit'.  First try using the locale digit,
+                 * which may or MAY NOT be a standard Unicode digit range.  If
+                 * this fails, try using the standard Unicode digit ranges by
+                 * calling UCharacter.digit().  If this also fails, digit will
+                 * have a value outside the range 0..9.
+                 */
+                digit = ch - zero;
+                if (digit < 0 || digit > 9) digit = UCharacter.digit(ch, 10);
+
+                if (digit == 0)
+                {
+                    // Cancel out backup setting (see grouping handler below)
+                    if (strictParse && backup != -1) {
+                        // comma followed by digit, so group before comma is a 
+                        // secondary group.  If there was a group separator
+                        // before that, the group must == the secondary group
+                        // length, else it can be <= the the secondary group
+                        // length.
+                        if ((lastGroup != -1 && backup - lastGroup - 1 != gs2) ||
+                            (lastGroup == -1 && position - oldStart - 1 > gs2)) {
+                            strictFail = true;
+                            break;
+                        }
+                        lastGroup = backup;
+                    }
+                    backup = -1; // Do this BEFORE continue statement below!!!
+                    sawDigit = true;
+
+                    // Handle leading zeros
+                    if (digits.count == 0)
+                    {
+                        if (!sawDecimal) {
+                            if (strictParse && !isExponent) {
+                                // Allow leading zeros in exponents
+                                if (leadingZero) {
+                                    strictFail = true;
+                                    break;
+                                }
+                                leadingZero = true;
+                            }
+                            // Ignore leading zeros in integer part of number.
+                            continue;
+                        }
+
+                        // If we have seen the decimal, but no significant digits yet,
+                        // then we account for leading zeros by decrementing the
+                        // digits.decimalAt into negative values.
+                        --digits.decimalAt;
+                    }
+                    else
+                    {
+                        ++digitCount;
+                        digits.append((char)(digit + '0'));
+                    }
+                }
+                else if (digit > 0 && digit <= 9) // [sic] digit==0 handled above
+                {
+                    if (strictParse) {
+                        if (leadingZero) {
+                            // a leading zero before a digit is an error with strict parsing
+                            strictFail = true;
+                            break;
+                        }
+                        if (backup != -1) {
+                            if ((lastGroup != -1 && backup - lastGroup - 1 != gs2) ||
+                                (lastGroup == -1 && position - oldStart - 1 > gs2)) {
+                                strictFail = true;
+                                break;
+                            }
+                            lastGroup = backup;
+                        }
+                    }
+
+                    sawDigit = true;
+                    ++digitCount;
+                    digits.append((char)(digit + '0'));
+
+                    // Cancel out backup setting (see grouping handler below)
+                    backup = -1;
+                }
+                else if (!isExponent && decimalSet.contains(ch))
+                {
+                    if (strictParse) {
+                        if (backup != -1 ||
+                            (lastGroup != -1 && position - lastGroup != groupingSize + 1)) {
+                            strictFail = true;
+                            break;
+                        }
+                    }
+                    // If we're only parsing integers, or if we ALREADY saw the
+                    // decimal, then don't parse this one.
+                    if (isParseIntegerOnly() || sawDecimal) break;
+                    digits.decimalAt = digitCount; // Not digits.count!
+                    sawDecimal = true;
+                    leadingZero = false; // a single leading zero before a decimal is ok
+                    
+                    // Once we see a decimal character, we only accept that decimal character from then on.
+                    decimalSet.set(ch,ch);
+                }
+                else if (!isExponent && isGroupingUsed() && groupingSet.contains(ch))
+                {
+                    if (sawDecimal) {
+                        break;
+                    }
+                    if (strictParse) {
+                        if ((!sawDigit || backup != -1)) {
+                            // leading group, or two group separators in a row
+                            strictFail = true;
+                            break;
+                        }
+                    }
+                    // Once we see a grouping character, we only accept that grouping character from then on.
+                    groupingSet.set(ch,ch);
+                    
+                    // Ignore grouping characters, if we are using them, but require
+                    // that they be followed by a digit.  Otherwise we backup and
+                    // reprocess them.
+                    backup = position;
+                }
+                else if (!isExponent && !sawExponent &&
+                         text.regionMatches(position, exponentSep,
+                                            0, exponentSep.length()))
+                {
+                    // Parse sign, if present
+                    boolean negExp = false;
+                    int pos = position + exponentSep.length();
+                    if (pos < text.length()) {
+                        ch = text.charAt(pos);
+                        if (ch == symbols.getPlusSign()) {
+                            ++pos;
+                        } else if (ch == symbols.getMinusSign()) {
+                            ++pos;
+                            negExp = true;
+                        }
+                    }
+
+                    DigitList exponentDigits = new DigitList();
+                    exponentDigits.count = 0;
+                    while (pos < text.length()) {
+                        digit = text.charAt(pos) - zero;
+                        if (digit < 0 || digit > 9) {
+                            /*
+                              Can't parse "[1E0]" when pattern is "0.###E0;[0.###E0]"
+                              Should update reassign the value of 'ch' in the
+                              code:  digit = Character.digit(ch, 10);
+                              [Richard/GCL]
+                            */
+                            digit = UCharacter.digit(text.charAt(pos), 10);
+                        }
+                        if (digit >= 0 && digit <= 9) {
+                            exponentDigits.append((char)(digit + '0'));
+                            ++pos;
+                        } else {
+                            break;
+                        }
+                    }
+                    
+                    if (exponentDigits.count > 0) {
+                        // defer strict parse until we know we have a bona-fide exponent
+                        if (strictParse) {
+                            if (backup != -1 || lastGroup != -1) {
+                                strictFail = true;
+                                break;
+                            }
+                        }
+
+                        // Quick overflow check for exponential part.
+                        // Actual limit check will be done later in this code.
+                        if (exponentDigits.count > 10 /* maximum decimal digits for int */) {
+                            if (negExp) {
+                                // set underflow flag
+                                status[STATUS_UNDERFLOW] = true;
+                            } else {
+                                // set infinite flag
+                                status[STATUS_INFINITE] = true;
+                            }
+                        } else {
+                            exponentDigits.decimalAt = exponentDigits.count;
+                            exponent = exponentDigits.getLong();
+                            if (negExp) {
+                                exponent = -exponent;
+                            }
+                        }
+                        position = pos; // Advance past the exponent
+                        sawExponent = true;
+                    }
+
+                    break; // Whether we fail or succeed, we exit this loop
+                }
+                else break;
+            }
+
+            if (backup != -1) position = backup;
+
+            if (strictParse && !sawDecimal) {
+                if (lastGroup != -1 && position - lastGroup != groupingSize + 1) {
+                    strictFail = true;
+                }
+            }
+            if (strictFail) {
+                // only set with strictParse and a leading zero error
+                // leading zeros are an error with strict parsing except
+                // immediately before nondigit (except group separator 
+                // followed by digit), or end of text.
+                
+                parsePosition.setIndex(oldStart);
+                parsePosition.setErrorIndex(position);
+                return false;
+            }
+
+            // If there was no decimal point we have an integer
+            if (!sawDecimal) digits.decimalAt = digitCount; // Not digits.count!
+
+            // Adjust for exponent, if any
+            exponent += digits.decimalAt;
+            if (exponent < -PARSE_MAX_EXPONENT) {
+                status[STATUS_UNDERFLOW] = true;
+            } else if (exponent > PARSE_MAX_EXPONENT) {
+                status[STATUS_INFINITE] = true;
+            } else {
+                digits.decimalAt = (int)exponent;
+            }
+
+            // If none of the text string was recognized.  For example, parse
+            // "x" with pattern "#0.00" (return index and error index both 0)
+            // parse "$" with pattern "$#0.00". (return index 0 and error index
+            // 1).
+            if (!sawDigit && digitCount == 0) {
+                parsePosition.setIndex(oldStart);
+                parsePosition.setErrorIndex(oldStart);
+                return false;
+            }
+        }
+
+        // Match padding before suffix
+        if (formatWidth > 0 && padPosition == PAD_BEFORE_SUFFIX) {
+            position = skipPadding(text, position);
+        }
+
+        // Match positive and negative suffixes; prefer longest match.
+        if (posMatch >= 0) {
+            posMatch = compareAffix(text, position, false, false, posSuffix, currency);
+        }
+        if (negMatch >= 0) {
+            negMatch = compareAffix(text, position, true, false, negSuffix, currency);
+        }
+        if (posMatch >= 0 && negMatch >= 0) {
+            if (posMatch > negMatch) {
+                negMatch = -1;
+            } else if (negMatch > posMatch) {
+                posMatch = -1;
+            }  
+        }
+
+        // Fail if neither or both
+        if ((posMatch >= 0) == (negMatch >= 0)) {
+            parsePosition.setErrorIndex(position);
+            return false;
+        }
+
+        position += (posMatch>=0 ? posMatch : negMatch);
+
+        // Match padding after suffix
+        if (formatWidth > 0 && padPosition == PAD_AFTER_SUFFIX) {
+            position = skipPadding(text, position);
+        }
+
+        parsePosition.setIndex(position);
+
+        status[STATUS_POSITIVE] = (posMatch >= 0);
+
+        if (parsePosition.getIndex() == oldStart) {
+            parsePosition.setErrorIndex(position);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Return characters that are used where this decimal is used.
+     * @param decimal
+     * @param strictParse 
+     * @return
+     */
+    private UnicodeSet getSimilarDecimals(char decimal, boolean strictParse) {
+        if (dotEquivalents.contains(decimal)) {
+            return strictParse ? strictDotEquivalents : dotEquivalents;
+        }
+        if (commaEquivalents.contains(decimal)) {
+            return strictParse ? strictCommaEquivalents : commaEquivalents;
+        }
+        // if there is no match, return the character itself
+        return new UnicodeSet().add(decimal);
+    }
+
+    /**
+     * Starting at position, advance past a run of pad characters, if any.
+     * Return the index of the first character after position that is not a pad
+     * character.  Result is >= position.
+     */
+    private final int skipPadding(String text, int position) {
+        while (position < text.length() && text.charAt(position) == pad) {
+            ++position;
+        }
+        return position;
+    }
+
+    /*
+     * Return the length matched by the given affix, or -1 if none.
+     * Runs of white space in the affix, match runs of white space in
+     * the input.  Pattern white space and input white space are
+     * determined differently; see code.
+     * @param text input text
+     * @param pos offset into input at which to begin matching
+     * @param isNegative
+     * @param isPrefix
+     * @param affixPat affix pattern used for currency affix comparison
+     * @param currency return value for parsed currency, for generic
+     * currency parsing mode, or null for normal parsing. In generic
+     * currency parsing mode, any currency is parsed, not just the
+     * currency that this formatter is set to.
+     * @return length of input that matches, or -1 if match failure
+     */
+    private int compareAffix(String text, int pos, 
+                             boolean isNegative, boolean isPrefix,
+                             String affixPat,
+                             Currency[] currency) {
+        if (currency != null || currencyChoice != null ||
+            currencySignCount > 0) {
+                return compareComplexAffix(affixPat, text, pos, currency);
+        }
+        if (isPrefix) {
+            return compareSimpleAffix(isNegative ? negativePrefix : positivePrefix,
+                                      text, pos);
+        } else {
+            return compareSimpleAffix(isNegative ? negativeSuffix : positiveSuffix,
+                                      text, pos);
+        }
+
+    }
+
+
+
+    /**
+     * Return the length matched by the given affix, or -1 if none.
+     * Runs of white space in the affix, match runs of white space in
+     * the input.  Pattern white space and input white space are
+     * determined differently; see code.
+     * @param affix pattern string, taken as a literal
+     * @param input input text
+     * @param pos offset into input at which to begin matching
+     * @return length of input that matches, or -1 if match failure
+     */
+    private static int compareSimpleAffix(String affix, String input, int pos) {
+        int start = pos;
+        for (int i=0; i<affix.length(); ) {
+            int c = UTF16.charAt(affix, i);
+            int len = UTF16.getCharCount(c);
+            if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                // We may have a pattern like: \u200F \u0020
+                //        and input text like: \u200F \u0020
+                // Note that U+200F and U+0020 are RuleWhiteSpace but only
+                // U+0020 is UWhiteSpace.  So we have to first do a direct
+                // match of the run of RULE whitespace in the pattern,
+                // then match any extra characters.
+                boolean literalMatch = false;
+                while (pos < input.length() &&
+                       UTF16.charAt(input, pos) == c) {
+                    literalMatch = true;
+                    i += len;
+                    pos += len;
+                    if (i == affix.length()) {
+                        break;
+                    }
+                    c = UTF16.charAt(affix, i);
+                    len = UTF16.getCharCount(c);
+                    if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                        break;
+                    }
+                }
+                
+                // Advance over run in affix
+                i = skipRuleWhiteSpace(affix, i);
+                
+                // Advance over run in input text
+                // Must see at least one white space char in input,
+                // unless we've already matched some characters literally.
+                int s = pos;
+                pos = skipUWhiteSpace(input, pos);
+                if (pos == s && !literalMatch) {
+                    return -1;
+                }
+                // If we skip UWhiteSpace in the input text, we need to skip it in the pattern.
+                // Otherwise, the previous lines may have skipped over text (such as U+00A0) that
+                // is also in the affix.
+                i = skipUWhiteSpace(affix, i);
+            } else {
+                if (pos < input.length() &&
+                    UTF16.charAt(input, pos) == c) {
+                    i += len;
+                    pos += len;
+                } else {
+                    return -1;
+                }
+            }
+        }
+        return pos - start;
+    }
+
+    /**
+     * Skip over a run of zero or more isRuleWhiteSpace() characters at
+     * pos in text.
+     */
+    private static int skipRuleWhiteSpace(String text, int pos) {
+        while (pos < text.length()) {
+            int c = UTF16.charAt(text, pos);
+            if (!UCharacterProperty.isRuleWhiteSpace(c)) {
+                break;
+            }
+            pos += UTF16.getCharCount(c);
+        }
+        return pos;
+    }
+
+    /**
+     * Skip over a run of zero or more isUWhiteSpace() characters at pos
+     * in text.
+     */
+    private static int skipUWhiteSpace(String text, int pos) {
+        while (pos < text.length()) {
+            int c = UTF16.charAt(text, pos);
+            if (!UCharacter.isUWhiteSpace(c)) {
+                break;
+            }
+            pos += UTF16.getCharCount(c);
+        }
+        return pos;
+    }
+
+    /*
+     * Return the length matched by the given affix, or -1 if none.
+     * @param affixPat pattern string
+     * @param text input text
+     * @param pos offset into input at which to begin matching
+     * @param currency return value for parsed currency, for generic
+     * currency parsing mode, or null for normal parsing. In generic
+     * currency parsing mode, any currency is parsed, not just the
+     * currency that this formatter is set to.
+     * @return position after the matched text, or -1 if match failure
+     */
+    private int compareComplexAffix(String affixPat, String text, int pos,
+                                    Currency[] currency) {
+        int start = pos;
+        for (int i=0; 
+             i < affixPat.length() && pos >= 0 && pos < text.length(); ) {
+            char c = affixPat.charAt(i++);
+            if (c == QUOTE) {
+                for (;;) {
+                    int j = affixPat.indexOf(QUOTE, i);
+                    if (j == i) {
+                        pos = match(text, pos, QUOTE);
+                        i = j+1;
+                        break;
+                    } else if (j > i) {
+                        pos = match(text, pos, affixPat.substring(i, j));
+                        i = j+1;
+                        if (i<affixPat.length() &&
+                            affixPat.charAt(i)==QUOTE) {
+                            pos = match(text, pos, QUOTE);
+                            ++i;
+                            // loop again
+                        } else {
+                            break;
+                        }
+                    } else {
+                        // Unterminated quote; should be caught by apply
+                        // pattern.
+                        throw new RuntimeException();
+                    }
+                }
+                continue;
+            }
+
+            switch (c) {
+            case CURRENCY_SIGN:
+                // since the currency names in choice format is saved
+                // the same way as other currency names, 
+                // do not need to do currency choice parsing here.
+                // the general currency parsing parse against all names,
+                // including names in choice format.
+                //assert(currency != null ||
+                //       (getCurrency() != null && currencyChoice != null));
+                boolean intl = i<affixPat.length() &&
+                    affixPat.charAt(i) == CURRENCY_SIGN;
+                if (intl) {
+                    ++i;
+                }
+                boolean plural = i<affixPat.length() &&
+                    affixPat.charAt(i) == CURRENCY_SIGN;
+                if (plural) {
+                    ++i;
+                    intl = false;
+                }
+                // Parse generic currency -- anything for which we
+                // have a display name, or any 3-letter ISO code.
+                // Try to parse display name for our locale; first
+                // determine our locale.
+                // TODO: use locale in CurrencyPluralInfo
+                ULocale uloc = getLocale(ULocale.VALID_LOCALE);
+                if (uloc == null) {
+                    // applyPattern has been called; use the symbols
+                    uloc = symbols.getLocale(ULocale.VALID_LOCALE);
+                }
+                // Delegate parse of display name => ISO code to Currency
+                ParsePosition ppos = new ParsePosition(pos);
+                // using Currency.parse to handle mixed style parsing.
+                String iso = Currency.parse(uloc, text, ppos);
+
+                // If parse succeeds, populate currency[0]
+                if (iso != null) {
+                    if (currency != null) {
+                        currency[0] = Currency.getInstance(iso);
+                    }
+                    pos = ppos.getIndex();
+                } else {
+                    pos = -1;
+                }
+                continue;
+            case PATTERN_PERCENT:
+                c = symbols.getPercent();
+                break;
+            case PATTERN_PER_MILLE:
+                c = symbols.getPerMill();
+                break;
+            case PATTERN_MINUS:
+                c = symbols.getMinusSign();
+                break;
+            }
+            pos = match(text, pos, c);
+            if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                i = skipRuleWhiteSpace(affixPat, i);
+            }
+        }
+
+        return pos - start;
+    }
+
+    /**
+     * Match a single character at text[pos] and return the index of the
+     * next character upon success.  Return -1 on failure.  If
+     * isRuleWhiteSpace(ch) then match a run of white space in text.
+     */
+    static final int match(String text, int pos, int ch) {
+        if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+            // Advance over run of white space in input text
+            // Must see at least one white space char in input
+            int s = pos;
+            pos = skipUWhiteSpace(text, pos);
+            if (pos == s) {
+                return -1;
+            }
+            return pos;
+        }
+        return (pos >= 0 && UTF16.charAt(text, pos) == ch) ?
+            (pos + UTF16.getCharCount(ch)) : -1;
+    }
+
+    /**
+     * Match a string at text[pos] and return the index of the next
+     * character upon success.  Return -1 on failure.  Match a run of
+     * white space in str with a run of white space in text.
+     */
+    static final int match(String text, int pos, String str) {
+        for (int i=0; i<str.length() && pos >= 0; ) {
+            int ch = UTF16.charAt(str, i);
+            i += UTF16.getCharCount(ch);
+            pos = match(text, pos, ch);
+            if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                i = skipRuleWhiteSpace(str, i);
+            }
+        }
+        return pos;
+    }
+
+    /**
+     * Returns a copy of the decimal format symbols used by this format.
+     * @return desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols getDecimalFormatSymbols() {
+        try {
+            // don't allow multiple references
+            return (DecimalFormatSymbols) symbols.clone();
+        } catch (Exception foo) {
+            return null; // should never happen
+        }
+    }
+
+
+    /**
+     * Sets the decimal format symbols used by this format.  The
+     * format uses a copy of the provided symbols.
+     * @param newSymbols desired DecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     * @stable ICU 2.0
+     */
+    public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) {
+        symbols = (DecimalFormatSymbols) newSymbols.clone();
+        setCurrencyForSymbols();
+        expandAffixes(null);
+    }
+
+    /**
+     * Update the currency object to match the symbols.  This method
+     * is used only when the caller has passed in a symbols object
+     * that may not be the default object for its locale.
+     */
+    private void setCurrencyForSymbols() {
+        /*Bug 4212072
+          Update the affix strings according to symbols in order to keep
+          the affix strings up to date.
+          [Richard/GCL]
+        */
+        
+        // With the introduction of the Currency object, the currency
+        // symbols in the DFS object are ignored.  For backward
+        // compatibility, we check any explicitly set DFS object.  If it
+        // is a default symbols object for its locale, we change the
+        // currency object to one for that locale.  If it is custom,
+        // we set the currency to null.
+        DecimalFormatSymbols def =
+            new DecimalFormatSymbols(symbols.getLocale());
+        
+        if (symbols.getCurrencySymbol().equals(
+                def.getCurrencySymbol()) &&
+            symbols.getInternationalCurrencySymbol().equals(
+                def.getInternationalCurrencySymbol())) {
+            setCurrency(Currency.getInstance(symbols.getLocale()));
+        } else {
+            setCurrency(null);
+        }
+    }
+
+    /**
+     * Get the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     * @stable ICU 2.0
+     */
+    public String getPositivePrefix () {
+        return positivePrefix;
+    }
+
+    /**
+     * Set the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     * @stable ICU 2.0
+     */
+    public void setPositivePrefix (String newValue) {
+        positivePrefix = newValue;
+        posPrefixPattern = null;
+    }
+
+    /**
+     * Get the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     * @stable ICU 2.0
+     */
+    public String getNegativePrefix () {
+        return negativePrefix;
+    }
+
+    /**
+     * Set the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     * @stable ICU 2.0
+     */
+    public void setNegativePrefix (String newValue) {
+        negativePrefix = newValue;
+        negPrefixPattern = null;
+    }
+
+    /**
+     * Get the positive suffix.
+     * <P>Example: 123%
+     * @stable ICU 2.0
+     */
+    public String getPositiveSuffix () {
+        return positiveSuffix;
+    }
+
+    /**
+     * Set the positive suffix.
+     * <P>Example: 123%
+     * @stable ICU 2.0
+     */
+    public void setPositiveSuffix (String newValue) {
+        positiveSuffix = newValue;
+        posSuffixPattern = null;
+    }
+
+    /**
+     * Get the negative suffix.
+     * <P>Examples: -123%, ($123) (with positive suffixes)
+     * @stable ICU 2.0
+     */
+    public String getNegativeSuffix () {
+        return negativeSuffix;
+    }
+
+    /**
+     * Set the positive suffix.
+     * <P>Examples: 123%
+     * @stable ICU 2.0
+     */
+    public void setNegativeSuffix (String newValue) {
+        negativeSuffix = newValue;
+        negSuffixPattern = null;
+    }
+
+    /**
+     * Get the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     * @stable ICU 2.0
+     */
+    public int getMultiplier () {
+        return multiplier;
+    }
+
+    /**
+     * Set the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     * @stable ICU 2.0
+     */
+    public void setMultiplier (int newValue) {
+        if (newValue == 0) {
+            throw new IllegalArgumentException("Bad multiplier: " + newValue);
+        }
+        multiplier = newValue;
+    }
+    
+    // [NEW]
+    /**
+     * Get the rounding increment.
+     * @return A positive rounding increment, or <code>null</code> if rounding
+     * is not in effect.
+     * @see #setRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     * @stable ICU 2.0
+     */
+//#if defined(FOUNDATION10) || defined(ECLIPSE_FRAGMENT)
+//##    public BigDecimal getRoundingIncrement() {
+//##        if (roundingIncrementICU == null) return null;
+//##        return new BigDecimal(roundingIncrementICU.toString());
+//##    }
+//#else
+    public java.math.BigDecimal getRoundingIncrement() {
+        if (roundingIncrementICU == null) return null;
+        return roundingIncrementICU.toBigDecimal();
+    }
+//#endif
+    
+//#if defined(FOUNDATION10)
+//#else
+    // [NEW]
+    /**
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or <code>null</code> or
+     * <code>BigDecimal(0.0)</code> to disable rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     * @stable ICU 2.0
+     */
+    public void setRoundingIncrement(java.math.BigDecimal newValue) {
+        if (newValue == null) {
+            setRoundingIncrement((BigDecimal)null);
+        } else {
+            setRoundingIncrement(new BigDecimal(newValue));
+        }
+    }
+//#endif
+    
+    // [NEW]
+    /**
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or <code>null</code> or
+     * <code>BigDecimal(0.0)</code> to disable rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     * @stable ICU 3.6
+     */
+    public void setRoundingIncrement(BigDecimal newValue) {
+        int i = newValue == null
+            ? 0 : newValue.compareTo(BigDecimal.ZERO);
+        if (i < 0) {
+            throw new IllegalArgumentException("Illegal rounding increment");
+        }
+        if (i == 0) {
+            setInternalRoundingIncrement(null);
+        } else {
+            setInternalRoundingIncrement(newValue);
+        }
+        setRoundingDouble();
+    }
+
+    // [NEW]
+    /**
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or 0.0 to disable
+     * rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     * @stable ICU 2.0
+     */
+    public void setRoundingIncrement(double newValue) {
+        if (newValue < 0.0) {
+            throw new IllegalArgumentException("Illegal rounding increment");
+        }
+        roundingDouble = newValue;
+        roundingDoubleReciprocal = 0.0d;
+        if (newValue == 0.0d) {
+            setRoundingIncrement((BigDecimal)null);
+        } else {
+            roundingDouble = newValue;
+            if (roundingDouble < 1.0d) {
+                double rawRoundedReciprocal = 1.0d/roundingDouble;
+                setRoundingDoubleReciprocal(rawRoundedReciprocal);
+            }
+            setInternalRoundingIncrement(new BigDecimal(newValue));
+        }
+    }
+
+
+    private void setRoundingDoubleReciprocal(double rawRoundedReciprocal) {
+        roundingDoubleReciprocal = Math.rint(rawRoundedReciprocal);
+        if (Math.abs(rawRoundedReciprocal - roundingDoubleReciprocal) > roundingIncrementEpsilon) {
+            roundingDoubleReciprocal = 0.0d;
+        }
+    }
+    
+    static final double roundingIncrementEpsilon = 0.000000001;
+    
+    /**
+     * Get the rounding mode.
+     * @return A rounding mode, between <code>BigDecimal.ROUND_UP</code>
+     * and <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @see #setRoundingIncrement
+     * @see #getRoundingIncrement
+     * @see #setRoundingMode
+     * @see java.math.BigDecimal
+     * @stable ICU 2.0
+     */
+    public int getRoundingMode() {
+        return roundingMode;
+    }
+
+    /**
+     * Set the rounding mode.  This has no effect unless the rounding
+     * increment is greater than zero.
+     * @param roundingMode A rounding mode, between
+     * <code>BigDecimal.ROUND_UP</code> and
+     * <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @exception IllegalArgumentException if <code>roundingMode</code>
+     * is unrecognized.
+     * @see #setRoundingIncrement
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see java.math.BigDecimal
+     * @stable ICU 2.0
+     */
+    public void setRoundingMode(int roundingMode) {
+        if (roundingMode < BigDecimal.ROUND_UP
+            || roundingMode > BigDecimal.ROUND_UNNECESSARY) {
+            throw new IllegalArgumentException("Invalid rounding mode: "
+                                               + roundingMode);
+        }
+
+        this.roundingMode = roundingMode;
+
+		if (getRoundingIncrement() == null) {
+			setRoundingIncrement(Math.pow(10.0,(double)-getMaximumFractionDigits()));
+		}
+    }
+
+    // [NEW]
+    /**
+     * Get the width to which the output of <code>format()</code> is padded.
+     * The width is counted in 16-bit code units.
+     * @return the format width, or zero if no padding is in effect
+     * @see #setFormatWidth
+     * @see #getPadCharacter
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     * @stable ICU 2.0
+     */
+    public int getFormatWidth() {
+        return formatWidth;
+    }
+
+    // [NEW]
+    /**
+     * Set the width to which the output of <code>format()</code> is padded.
+     * The width is counted in 16-bit code units.
+     * This method also controls whether padding is enabled.
+     * @param width the width to which to pad the result of
+     * <code>format()</code>, or zero to disable padding
+     * @exception IllegalArgumentException if <code>width</code> is < 0
+     * @see #getFormatWidth
+     * @see #getPadCharacter
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     * @stable ICU 2.0
+     */
+    public void setFormatWidth(int width) {
+        if (width < 0) {
+            throw new IllegalArgumentException("Illegal format width");
+        }
+        formatWidth = width;
+    }
+
+    // [NEW]
+    /**
+     * Get the character used to pad to the format width.  The default is ' '.
+     * @return the pad character
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     * @stable ICU 2.0
+     */
+    public char getPadCharacter() {
+        return pad;
+    }
+
+    // [NEW]
+    /**
+     * Set the character used to pad to the format width.  If padding
+     * is not enabled, then this will take effect if padding is later
+     * enabled.
+     * @param padChar the pad character
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #getPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     * @stable ICU 2.0
+     */
+    public void setPadCharacter(char padChar) {
+        pad = padChar;
+    }
+
+    // [NEW]
+    /**
+     * Get the position at which padding will take place.  This is the location
+     * at which padding will be inserted if the result of <code>format()</code>
+     * is shorter than the format width.
+     * @return the pad position, one of <code>PAD_BEFORE_PREFIX</code>,
+     * <code>PAD_AFTER_PREFIX</code>, <code>PAD_BEFORE_SUFFIX</code>, or
+     * <code>PAD_AFTER_SUFFIX</code>.
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadCharacter
+     * @see #setPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public int getPadPosition() {
+        return padPosition;
+    }
+
+    // [NEW]
+    /**
+     * Set the position at which padding will take place.  This is the location
+     * at which padding will be inserted if the result of <code>format()</code>
+     * is shorter than the format width.  This has no effect unless padding is
+     * enabled.
+     * @param padPos the pad position, one of <code>PAD_BEFORE_PREFIX</code>,
+     * <code>PAD_AFTER_PREFIX</code>, <code>PAD_BEFORE_SUFFIX</code>, or
+     * <code>PAD_AFTER_SUFFIX</code>.
+     * @exception IllegalArgumentException if the pad position in
+     * unrecognized
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadCharacter
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public void setPadPosition(int padPos) {
+        if (padPos < PAD_BEFORE_PREFIX || padPos > PAD_AFTER_SUFFIX) {
+            throw new IllegalArgumentException("Illegal pad position");
+        }
+        padPosition = padPos;
+    }
+
+    // [NEW]
+    /**
+     * Return whether or not scientific notation is used.
+     * @return true if this object formats and parses scientific notation
+     * @see #setScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public boolean isScientificNotation() {
+        return useExponentialNotation;
+    }
+
+    // [NEW]
+    /**
+     * Set whether or not scientific notation is used.  When scientific notation
+     * is used, the effective maximum number of integer digits is <= 8.  If the
+     * maximum number of integer digits is set to more than 8, the effective
+     * maximum will be 1.  This allows this call to generate a 'default' scientific
+     * number format without additional changes.
+     * @param useScientific true if this object formats and parses scientific
+     * notation
+     * @see #isScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public void setScientificNotation(boolean useScientific) {
+        useExponentialNotation = useScientific;
+    }
+
+    // [NEW]
+    /**
+     * Return the minimum exponent digits that will be shown.
+     * @return the minimum exponent digits that will be shown
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public byte getMinimumExponentDigits() {
+        return minExponentDigits;
+    }
+    
+    // [NEW]
+    /**
+     * Set the minimum exponent digits that will be shown.  This has no
+     * effect unless scientific notation is in use.
+     * @param minExpDig a value >= 1 indicating the fewest exponent digits
+     * that will be shown
+     * @exception IllegalArgumentException if <code>minExpDig</code> < 1
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public void setMinimumExponentDigits(byte minExpDig) {
+        if (minExpDig < 1) {
+            throw new IllegalArgumentException("Exponent digits must be >= 1");
+        }
+        minExponentDigits = minExpDig;
+    }
+
+    // [NEW]
+    /**
+     * Return whether the exponent sign is always shown.
+     * @return true if the exponent is always prefixed with either the
+     * localized minus sign or the localized plus sign, false if only negative
+     * exponents are prefixed with the localized minus sign.
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #getMinimumExponentDigits
+     * @see #setExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public boolean isExponentSignAlwaysShown() {
+        return exponentSignAlwaysShown;
+    }
+
+    // [NEW]
+    /**
+     * Set whether the exponent sign is always shown.  This has no effect
+     * unless scientific notation is in use.
+     * @param expSignAlways true if the exponent is always prefixed with either
+     * the localized minus sign or the localized plus sign, false if only
+     * negative exponents are prefixed with the localized minus sign.
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #getMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @stable ICU 2.0
+     */
+    public void setExponentSignAlwaysShown(boolean expSignAlways) {
+        exponentSignAlwaysShown = expSignAlways;
+    }
+
+    /**
+     * Return the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #setGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     * @see DecimalFormatSymbols#getGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public int getGroupingSize () {
+        return groupingSize;
+    }
+
+    /**
+     * Set the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #getGroupingSize
+     * @see NumberFormat#setGroupingUsed
+     * @see DecimalFormatSymbols#setGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public void setGroupingSize (int newValue) {
+        groupingSize = (byte)newValue;
+    }
+
+    // [NEW]
+    /**
+     * Return the secondary grouping size. In some locales one
+     * grouping interval is used for the least significant integer
+     * digits (the primary grouping size), and another is used for all
+     * others (the secondary grouping size).  A formatter supporting a
+     * secondary grouping size will return a positive integer unequal
+     * to the primary grouping size returned by
+     * <code>getGroupingSize()</code>.  For example, if the primary
+     * grouping size is 4, and the secondary grouping size is 2, then
+     * the number 123456789 formats as "1,23,45,6789", and the pattern
+     * appears as "#,##,###0".
+     * @return the secondary grouping size, or a value less than
+     * one if there is none
+     * @see #setSecondaryGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     * @see DecimalFormatSymbols#getGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public int getSecondaryGroupingSize () {
+        return groupingSize2;
+    }
+
+    // [NEW]
+    /**
+     * Set the secondary grouping size. If set to a value less than 1,
+     * then secondary grouping is turned off, and the primary grouping
+     * size is used for all intervals, not just the least significant.
+     * @see #getSecondaryGroupingSize
+     * @see NumberFormat#setGroupingUsed
+     * @see DecimalFormatSymbols#setGroupingSeparator
+     * @stable ICU 2.0
+     */
+    public void setSecondaryGroupingSize (int newValue) {
+        groupingSize2 = (byte)newValue;
+    }
+
+	/**
+	 * Operations on <code>BigDecimal</code> numbers are controlled by a
+	 * {@link MathContext} object, which provides the context (precision and
+	 * other information) for the operation.
+	 * @see #mathContext
+	 * @see #getMathContext
+	 * @new ICU 4.2
+	 */
+	public void setMathContext(com.ibm.icu.math.MathContext newValue)
+	{
+		mathContext = newValue;
+	}
+
+	/**
+	 * Operations on <code>BigDecimal</code> numbers are controlled by a
+	 * {@link MathContext} object, which provides the context (precision and
+	 * other information) for the operation.
+	 * @see #mathContext
+	 * @see #setMathContext
+	 * @new ICU 4.2
+	 */
+	public com.ibm.icu.math.MathContext getMathContext()
+	{
+		return mathContext;
+	}
+
+    /**
+     * Allows you to get the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     * @stable ICU 2.0
+     */
+    public boolean isDecimalSeparatorAlwaysShown() {
+        return decimalSeparatorAlwaysShown;
+    }
+
+    /**
+     * Allows you to set the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     *
+     * <p>This only affects formatting, and only where
+     * there might be no digits after the decimal point, e.g.,
+     * if true,  3456.00 -> "3,456."
+     * if false, 3456.00 -> "3456"
+     * This is independent of parsing.  If you want parsing to stop at the decimal
+     * point, use setParseIntegerOnly.
+     *
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     * @stable ICU 2.0
+     */
+    public void setDecimalSeparatorAlwaysShown(boolean newValue) {
+        decimalSeparatorAlwaysShown = newValue;
+    }
+
+    /**
+     * Returns a copy of the CurrencyPluralInfo 
+     * used by this format. 
+     * It might return null if the decimal format is not a plural type 
+     * currency decimal format.
+     * Plural type currency decimal format means either
+     * the pattern in the decimal format contains 3 currency signs,
+     * or the decimal format is initialized with PLURALCURRENCYSTYLE.
+     * @return desired CurrencyPluralInfo
+     * @see CurrencyPluralInfo
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CurrencyPluralInfo getCurrencyPluralInfo() {
+        try {
+            // don't allow multiple references
+            return currencyPluralInfo == null ? 
+                   null :
+                   (CurrencyPluralInfo) currencyPluralInfo.clone();
+        } catch (Exception foo) {
+            return null; // should never happen
+        }
+    }
+
+
+    /**
+     * Sets the CurrencyPluralInfo used by this format.  The
+     * format uses a copy of the provided information.
+     * @param newInfo desired CurrencyPluralInfo
+     * @see CurrencyPluralInfo
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setCurrencyPluralInfo(CurrencyPluralInfo newInfo) {
+        currencyPluralInfo = (CurrencyPluralInfo) newInfo.clone();
+        isReadyForParsing = false;
+    }
+
+    /**
+     * Standard override; no change in semantics.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        try {
+            DecimalFormat other = (DecimalFormat) super.clone();
+            other.symbols = (DecimalFormatSymbols) symbols.clone();
+            other.digitList = new DigitList(); // fix for JB#5358
+            if (currencyPluralInfo != null) {
+                other.currencyPluralInfo = (CurrencyPluralInfo)currencyPluralInfo.clone();
+            }
+            /*
+             * TODO: We need to figure out whether we share a single copy
+             * of DigitList by multiple cloned copies.  format/subformat
+             * are designed to use a single instance, but parse/subparse
+             * implementation is not. 
+             */
+            return other;
+        } catch (Exception e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Overrides equals
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj)
+    {
+        if (obj == null) return false;
+        if (!super.equals(obj)) return false; // super does class check
+
+        DecimalFormat other = (DecimalFormat) obj;
+        /* Add the comparison of the four new added fields ,they are
+         * posPrefixPattern, posSuffixPattern, negPrefixPattern, negSuffixPattern.
+         * [Richard/GCL]
+         */
+        // following are added to accomodate changes for currency plural format.
+        return currencySignCount == other.currencySignCount && 
+               (style == NumberFormat.PLURALCURRENCYSTYLE)? true :
+                ((posPrefixPattern != null &&
+                    equals(posPrefixPattern, other.posPrefixPattern))
+                && (posSuffixPattern != null &&
+                    equals(posSuffixPattern, other.posSuffixPattern))
+                && (negPrefixPattern != null &&
+                    equals(negPrefixPattern, other.negPrefixPattern))
+                && (negSuffixPattern != null &&
+                    equals(negSuffixPattern, other.negSuffixPattern)))
+            && multiplier == other.multiplier
+            && groupingSize == other.groupingSize
+            && groupingSize2 == other.groupingSize2
+            && decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown
+            && useExponentialNotation == other.useExponentialNotation
+            && (!useExponentialNotation ||
+                minExponentDigits == other.minExponentDigits)
+            && useSignificantDigits == other.useSignificantDigits
+            && (!useSignificantDigits ||
+                minSignificantDigits == other.minSignificantDigits &&
+                maxSignificantDigits == other.maxSignificantDigits)
+            && symbols.equals(other.symbols) 
+            && (currencyPluralInfo == null 
+                || currencyPluralInfo.equals(other.currencyPluralInfo));
+    }
+
+    //method to unquote the strings and compare
+    private boolean equals(String pat1, String pat2){
+        //fast path
+        if(pat1.equals(pat2)){
+            return true;
+        }
+        return unquote(pat1).equals(unquote(pat2));
+    }
+    private String unquote(String pat){
+        StringBuffer buf = new StringBuffer(pat.length());
+        int i=0;
+        while(i<pat.length()){
+            char ch = pat.charAt(i++);
+            if(ch!=QUOTE){
+                buf.append(ch);
+            }
+        }
+        return buf.toString();
+    }
+//      protected void handleToString(StringBuffer buf) {
+//          buf.append("\nposPrefixPattern: '" + posPrefixPattern + "'\n");
+//          buf.append("positivePrefix: '" + positivePrefix + "'\n");
+//          buf.append("posSuffixPattern: '" + posSuffixPattern + "'\n");
+//          buf.append("positiveSuffix: '" + positiveSuffix + "'\n");
+//          buf.append("negPrefixPattern: '" + com.ibm.icu.impl.Utility.format1ForSource(negPrefixPattern) + "'\n");
+//          buf.append("negativePrefix: '" + com.ibm.icu.impl.Utility.format1ForSource(negativePrefix) + "'\n");
+//          buf.append("negSuffixPattern: '" + negSuffixPattern + "'\n");
+//          buf.append("negativeSuffix: '" + negativeSuffix + "'\n");
+//          buf.append("multiplier: '" + multiplier + "'\n");
+//          buf.append("groupingSize: '" + groupingSize + "'\n");
+//          buf.append("groupingSize2: '" + groupingSize2 + "'\n");
+//          buf.append("decimalSeparatorAlwaysShown: '" + decimalSeparatorAlwaysShown + "'\n");
+//          buf.append("useExponentialNotation: '" + useExponentialNotation + "'\n");
+//          buf.append("minExponentDigits: '" + minExponentDigits + "'\n");
+//          buf.append("useSignificantDigits: '" + useSignificantDigits + "'\n");
+//          buf.append("minSignificantDigits: '" + minSignificantDigits + "'\n");
+//          buf.append("maxSignificantDigits: '" + maxSignificantDigits + "'\n");           
+//          buf.append("symbols: '" + symbols + "'");
+//      }
+
+    /**
+     * Overrides hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return super.hashCode() * 37 + positivePrefix.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Synthesizes a pattern string that represents the current state
+     * of this Format object.
+     * @see #applyPattern
+     * @stable ICU 2.0
+     */
+    public String toPattern() {
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            // the prefix or suffix pattern might not be defined yet,
+            // so they can not be synthesized,
+            // instead, get them directly.
+            // but it might not be the actual pattern used in formatting.
+            // the actual pattern used in formatting depends on the 
+            // formatted number's plural count.
+            return formatPattern;
+        }
+        return toPattern( false );
+    }
+
+    /**
+     * Synthesizes a localized pattern string that represents the current
+     * state of this Format object.
+     * @see #applyPattern
+     * @stable ICU 2.0
+     */
+    public String toLocalizedPattern() {
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            return formatPattern;
+        }
+        return toPattern( true );
+    }
+
+    /**
+     * Expand the affix pattern strings into the expanded affix strings.  If any
+     * affix pattern string is null, do not expand it.  This method should be
+     * called any time the symbols or the affix patterns change in order to keep
+     * the expanded affix strings up to date.
+     * This method also will be called before formatting if format currency
+     * plural names, since the plural name is not a static one, it is 
+     * based on the currency plural count, the affix will be known only
+     * after the currency plural count is know. 
+     * In which case, the parameter
+     * 'pluralCount' will be a non-null currency plural count.
+     * In all other cases, the 'pluralCount' is null, which means 
+     * it is not needed.
+     */
+    //Bug 4212072 [Richard/GCL]
+    private void expandAffixes(String pluralCount) {
+        // expandAffix() will set currencyChoice to a non-null value if
+        // appropriate AND if it is null.
+        currencyChoice = null;
+
+        // Reuse one StringBuffer for better performance
+        StringBuffer buffer = new StringBuffer();
+        if (posPrefixPattern != null) {
+            expandAffix(posPrefixPattern, pluralCount, buffer, false);
+            positivePrefix = buffer.toString();
+        }
+        if (posSuffixPattern != null) {
+            expandAffix(posSuffixPattern, pluralCount, buffer, false);
+            positiveSuffix = buffer.toString();
+        }
+        if (negPrefixPattern != null) {
+            expandAffix(negPrefixPattern, pluralCount, buffer, false);
+            negativePrefix = buffer.toString();
+        }
+        if (negSuffixPattern != null) {
+            expandAffix(negSuffixPattern, pluralCount, buffer, false);
+            negativeSuffix = buffer.toString();
+        }
+    }
+
+    /**
+     * Expand an affix pattern into an affix string.  All characters in
+     * the pattern are literal unless bracketed by QUOTEs.  The
+     * following characters outside QUOTE are recognized:
+     * PATTERN_PERCENT, PATTERN_PER_MILLE, PATTERN_MINUS, and
+     * CURRENCY_SIGN.  If CURRENCY_SIGN is doubled, it is interpreted as
+     * an international currency sign.  If CURRENCY_SIGN is tripled,
+     * it is interpreted as currency plural long names, such as "US Dollars".
+     * Any other character outside
+     * QUOTE represents itself.  Quoted text must be well-formed.
+     *
+     * This method is used in two distinct ways.  First, it is used to expand
+     * the stored affix patterns into actual affixes.  For this usage, doFormat
+     * must be false.  Second, it is used to expand the stored affix patterns
+     * given a specific number (doFormat == true), for those rare cases in
+     * which a currency format references a ChoiceFormat (e.g., en_IN display
+     * name for INR).  The number itself is taken from digitList.
+     *
+     * When used in the first way, this method has a side effect: It sets
+     * currencyChoice to a ChoiceFormat object, if the currency's display name
+     * in this locale is a ChoiceFormat pattern (very rare).  It only does this
+     * if currencyChoice is null to start with.
+     *
+     * @param pattern the non-null, possibly empty pattern
+     * @param pluralCount the plural count. It is only used for currency
+     *                    plural format. In which case, it is the plural
+     *                    count of the currency amount. For example,
+     *                    in en_US, it is the singular "one", or the plural
+     *                    "other". For all other cases, it is null, and
+     *                    is not being used.
+     * @param buffer a scratch StringBuffer; its contents will be lost
+     * @param doFormat if false, then the pattern will be expanded, and if a
+     * currency symbol is encountered that expands to a ChoiceFormat, the
+     * currencyChoice member variable will be initialized if it is null.  If
+     * doFormat is true, then it is assumed that the currencyChoice has been
+     * created, and it will be used to format the value in digitList.
+     * @return the expanded equivalent of pattern
+     */
+    //Bug 4212072 [Richard/GCL]
+    private void expandAffix(String pattern, 
+                             String pluralCount, 
+                             StringBuffer buffer,
+                             boolean doFormat) {
+        buffer.setLength(0);
+        for (int i=0; i<pattern.length(); ) {
+            char c = pattern.charAt(i++);
+            if (c == QUOTE) {
+                for (;;) {
+                    int j = pattern.indexOf(QUOTE, i);
+                    if (j == i) {
+                        buffer.append(QUOTE);
+                        i = j+1;
+                        break;
+                    } else if (j > i) {
+                        buffer.append(pattern.substring(i, j));
+                        i = j+1;
+                        if (i<pattern.length() &&
+                            pattern.charAt(i)==QUOTE) {
+                            buffer.append(QUOTE);
+                            ++i;
+                            // loop again
+                        } else {
+                            break;
+                        }
+                    } else {
+                        // Unterminated quote; should be caught by apply
+                        // pattern.
+                        throw new RuntimeException();
+                    }
+                }
+                continue;
+            }
+
+            switch (c) {
+            case CURRENCY_SIGN:
+                // As of ICU 2.2 we use the currency object, and
+                // ignore the currency symbols in the DFS, unless
+                // we have a null currency object.  This occurs if
+                // resurrecting a pre-2.2 object or if the user
+                // sets a custom DFS.
+                boolean intl = i<pattern.length() &&
+                    pattern.charAt(i) == CURRENCY_SIGN;
+                boolean plural = false;
+                if (intl) {
+                    ++i;
+                    if (i<pattern.length() &&
+                        pattern.charAt(i) == CURRENCY_SIGN) {
+                        plural = true;
+                        intl = false;
+                        ++i;
+                    }
+                }
+                String s = null;
+                Currency currency = getCurrency();
+                if (currency != null) {
+                    // plural name is only needed when pluralCount != null,
+                    // which means when formatting currency plural names.
+                    // For other cases, pluralCount == null,
+                    // and plural names are not needed.
+                    if (plural && pluralCount != null) {
+                        boolean isChoiceFormat[] = new boolean[1];
+                        s = currency.getName(symbols.getULocale(), 
+                                             Currency.PLURAL_LONG_NAME, 
+                                             pluralCount, 
+                                             isChoiceFormat);
+                    }
+                    else if (!intl) {
+                        boolean isChoiceFormat[] = new boolean[1];
+                        s = currency.getName(symbols.getULocale(),
+                                             Currency.SYMBOL_NAME,
+                                             isChoiceFormat);
+                        if (isChoiceFormat[0]) {
+                            // Two modes here: If doFormat is false, we set up
+                            // currencyChoice.  If doFormat is true, we use the
+                            // previously created currencyChoice to format the
+                            // value in digitList.
+                            if (!doFormat) {
+                                // If the currency is handled by a ChoiceFormat,
+                                // then we're not going to use the expanded
+                                // patterns.  Instantiate the ChoiceFormat and
+                                // return.
+                                if (currencyChoice == null) {
+                                    currencyChoice = new ChoiceFormat(s);
+                                }
+                                // We could almost return null or "" here, since the
+                                // expanded affixes are almost not used at all
+                                // in this situation.  However, one method --
+                                // toPattern() -- still does use the expanded
+                                // affixes, in order to set up a padding
+                                // pattern.  We use the CURRENCY_SIGN as a
+                                // placeholder.
+                                s = String.valueOf(CURRENCY_SIGN);
+                            } else {
+                                FieldPosition pos = new FieldPosition(0); // ignored
+                                currencyChoice.format(digitList.getDouble(), buffer, pos);
+                                continue;
+                            }
+                        }
+                    } else {
+                        s = currency.getCurrencyCode();
+                    }
+                } else {
+                    s = intl ? symbols.getInternationalCurrencySymbol()
+                        : symbols.getCurrencySymbol();
+                }
+                buffer.append(s);
+                continue;
+            case PATTERN_PERCENT:
+                c = symbols.getPercent();
+                break;
+            case PATTERN_PER_MILLE:
+                c = symbols.getPerMill();
+                break;
+            case PATTERN_MINUS:
+                c = symbols.getMinusSign();
+                break;
+            }
+            buffer.append(c);
+        }
+    }
+
+    /**
+     * Append an affix to the given StringBuffer.
+     * @param buf buffer to append to
+     * @param isNegative
+     * @param isPrefix
+     */
+    private int appendAffix(StringBuffer buf, boolean isNegative,
+            boolean isPrefix, boolean parseAttr) {
+        if (currencyChoice != null) {
+            String affixPat = null;
+            if (isPrefix) {
+                affixPat = isNegative ? negPrefixPattern : posPrefixPattern;
+            } else {
+                affixPat = isNegative ? negSuffixPattern : posSuffixPattern;
+            }
+            StringBuffer affixBuf = new StringBuffer();
+            expandAffix(affixPat, null, affixBuf, true);
+            buf.append(affixBuf.toString());
+            return affixBuf.length();
+        }
+
+        String affix = null;
+        if (isPrefix) {
+            affix = isNegative ? negativePrefix : positivePrefix;
+        } else {
+            affix = isNegative ? negativeSuffix : positiveSuffix;
+        }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        // [Spark/CDL] Invoke formatAffix2Attribute to add attributes for affix
+        if (parseAttr) {
+            int offset = affix.indexOf(symbols.getCurrencySymbol());
+            if (-1 == offset) {
+                offset = affix.indexOf(symbols.getPercent());
+                if(-1 == offset) {
+                    offset = 0;
+                }
+            }
+            formatAffix2Attribute(affix, buf.length() + offset, buf.length()
+                    + affix.length());
+        }
+//#endif
+        buf.append(affix);
+        return affix.length();
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /*
+     * [Spark/CDL] This is a newly added method, used to add attributes for
+     * prefix and suffix.
+     */
+    private void formatAffix2Attribute(String affix, int begin, int end) {
+        // [Spark/CDL] It is the invoker's responsibility to ensure that, before
+        // the invocation of
+        // this method, attributes is not null.
+        // if( attributes == null ) return;
+        if (affix.indexOf(symbols.getCurrencySymbol()) > -1) {
+            addAttribute(Field.CURRENCY, begin, end);
+        } else if (affix.indexOf(symbols.getMinusSign()) > -1) {
+            addAttribute(Field.SIGN, begin, end);
+        } else if (affix.indexOf(symbols.getPercent()) > -1) {
+            addAttribute(Field.PERCENT, begin, end);
+        } else if (affix.indexOf(symbols.getPerMill()) > -1) {
+            addAttribute(Field.PERMILLE, begin, end);
+        }
+    }
+//#endif
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /*
+     * [Spark/CDL] Use this method to add attribute.
+     */
+    private void addAttribute(Field field, int begin, int end) {
+        FieldPosition pos = new FieldPosition(field);
+        pos.setBeginIndex(begin);
+        pos.setEndIndex(end);
+        attributes.add(pos);
+    }
+//#endif
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Format the object to an attributed string, and return the corresponding iterator
+     * Overrides superclass method.
+     * @stable ICU 3.6
+     */
+    // [Spark/CDL] 
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        if (!(obj instanceof Number))
+            throw new IllegalArgumentException();
+        Number number = (Number) obj;
+        StringBuffer text = null;
+        attributes.clear();
+        if (obj instanceof BigInteger) {
+            text = format((BigInteger) number, new StringBuffer(),
+                    new FieldPosition(0), true);
+        } else if (obj instanceof java.math.BigDecimal) {
+            text = format((java.math.BigDecimal) number, new StringBuffer(),
+                    new FieldPosition(0), true);
+        } else if (obj instanceof Double) {
+            text = format(number.doubleValue(), new StringBuffer(),
+                    new FieldPosition(0), true);
+        } else if (obj instanceof Integer || obj instanceof Long) {
+            text = format(number.longValue(), new StringBuffer(),
+                    new FieldPosition(0), true);
+        }
+
+        AttributedString as = new AttributedString(text.toString());
+
+        // add NumberFormat field attributes to the AttributedString
+        for (int i = 0; i < attributes.size(); i++) {
+            FieldPosition pos = (FieldPosition) attributes.get(i);
+            Format.Field attribute = pos.getFieldAttribute();
+            as.addAttribute(attribute, attribute, pos.getBeginIndex(), pos
+                    .getEndIndex());
+        }
+
+        // return the CharacterIterator from AttributedString
+        return as.getIterator();
+    }
+//#endif
+    /**
+     * Append an affix pattern to the given StringBuffer.  Localize unquoted
+     * specials.
+     */
+    private void appendAffixPattern(StringBuffer buffer,
+                                    boolean isNegative, boolean isPrefix,
+                                    boolean localized) {
+        String affixPat = null;
+        if (isPrefix) {
+            affixPat = isNegative ? negPrefixPattern : posPrefixPattern;
+        } else {
+            affixPat = isNegative ? negSuffixPattern : posSuffixPattern;
+        }
+
+        // When there is a null affix pattern, we use the affix itself.
+        if (affixPat == null) {
+            String affix = null;
+            if (isPrefix) {
+                affix = isNegative ? negativePrefix : positivePrefix;
+            } else {
+                affix = isNegative ? negativeSuffix : positiveSuffix;
+            }
+            // Do this crudely for now:  Wrap everything in quotes.
+            buffer.append(QUOTE);
+            for (int i=0; i<affix.length(); ++i) {
+                char ch = affix.charAt(i);
+                if (ch == QUOTE) {
+                    buffer.append(ch);
+                }
+                buffer.append(ch);
+            }
+            buffer.append(QUOTE);
+            return;
+        }
+
+        if (!localized) {
+            buffer.append(affixPat);
+        } else {
+            int i, j;
+            for (i=0; i<affixPat.length(); ++i) {
+                char ch = affixPat.charAt(i);
+                switch (ch) {
+                case QUOTE:
+                    j = affixPat.indexOf(QUOTE, i+1);
+                    if (j < 0) {
+                        throw new IllegalArgumentException("Malformed affix pattern: " + affixPat);
+                    }
+                    buffer.append(affixPat.substring(i, j+1));
+                    i = j;
+                    continue;
+                case PATTERN_PER_MILLE:
+                    ch = symbols.getPerMill();
+                    break;
+                case PATTERN_PERCENT:
+                    ch = symbols.getPercent();
+                    break;
+                case PATTERN_MINUS:
+                    ch = symbols.getMinusSign();
+                    break;
+                }
+                //check if char is same as any other symbol
+                if(ch==symbols.getDecimalSeparator() ||
+                   ch==symbols.getGroupingSeparator() ){
+                    buffer.append(QUOTE);
+                    buffer.append(ch);
+                    buffer.append(QUOTE);
+                }else{
+                    buffer.append(ch);
+                }
+            }
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Does the real work of generating a pattern.
+     */
+    private String toPattern(boolean localized) {
+        StringBuffer result = new StringBuffer();
+        char zero = localized ? symbols.getZeroDigit() : PATTERN_ZERO_DIGIT;
+        char digit = localized ? symbols.getDigit() : PATTERN_DIGIT;
+        char sigDigit = 0;
+        boolean useSigDig = areSignificantDigitsUsed();
+        if (useSigDig) {
+            sigDigit = localized ? symbols.getSignificantDigit() : PATTERN_SIGNIFICANT_DIGIT;
+        }
+        char group = localized ? symbols.getGroupingSeparator()
+                               : PATTERN_GROUPING_SEPARATOR;
+        int i;
+        int roundingDecimalPos = 0; // Pos of decimal in roundingDigits
+        String roundingDigits = null;
+        int padPos = (formatWidth > 0) ? padPosition : -1;
+        String padSpec = (formatWidth > 0)
+            ? new StringBuffer(2).
+                append(localized ? symbols.getPadEscape() : PATTERN_PAD_ESCAPE).
+                append(pad).toString()
+            : null;
+        if (roundingIncrementICU != null) {
+            i = roundingIncrementICU.scale();
+            roundingDigits = roundingIncrementICU.movePointRight(i).toString();
+            roundingDecimalPos = roundingDigits.length() - i;
+        }
+        for (int part=0; part<2; ++part) {
+            // variable not used int partStart = result.length();
+            if (padPos == PAD_BEFORE_PREFIX) {
+                result.append(padSpec);
+            }
+            /* Use original symbols read from resources in pattern
+             * eg. use "\u00A4" instead of "$" in Locale.US [Richard/GCL]
+             */
+            appendAffixPattern(result, part!=0, true, localized);
+            if (padPos == PAD_AFTER_PREFIX) {
+                result.append(padSpec);
+            }
+            int sub0Start = result.length();
+            int g = isGroupingUsed() ? Math.max(0, groupingSize) : 0;
+            if (g > 0 && groupingSize2 > 0 && groupingSize2 != groupingSize) {
+                g += groupingSize2;
+            }
+            int maxDig = 0, minDig = 0, maxSigDig = 0;
+            if (useSigDig) {
+                minDig = getMinimumSignificantDigits();
+                maxDig = maxSigDig = getMaximumSignificantDigits();
+            } else {
+                minDig = getMinimumIntegerDigits();
+                maxDig = getMaximumIntegerDigits();
+            }
+            if (useExponentialNotation) {
+                if (maxDig > MAX_SCIENTIFIC_INTEGER_DIGITS) {
+                    maxDig = 1;
+                }
+            } else if (useSigDig) {
+                maxDig = Math.max(maxDig, g+1);
+            } else {
+                maxDig = Math.max(Math.max(g, getMinimumIntegerDigits()),
+                                  roundingDecimalPos) + 1;
+            }
+            for (i = maxDig; i > 0; --i) {
+                if (!useExponentialNotation && i<maxDig &&
+                    isGroupingPosition(i)) {
+                    result.append(group);
+                }
+                if (useSigDig) {
+                    //  #@,@###   (maxSigDig == 5, minSigDig == 2)
+                    //  65 4321   (1-based pos, count from the right)
+                    // Use # if pos > maxSigDig or 1 <= pos <= (maxSigDig - minSigDig)
+                    // Use @ if (maxSigDig - minSigDig) < pos <= maxSigDig
+                    result.append((maxSigDig >= i && i > (maxSigDig - minDig)) ? sigDigit : digit);
+                } else {
+                    if (roundingDigits != null) {
+                        int pos = roundingDecimalPos - i;
+                        if (pos >= 0 && pos < roundingDigits.length()) {
+                            result.append((char) (roundingDigits.charAt(pos) - '0' + zero));
+                            continue;
+                        }
+                    }
+                    result.append(i<=minDig ? zero : digit);
+                }
+            }
+            if (!useSigDig) {
+                if (getMaximumFractionDigits() > 0 || decimalSeparatorAlwaysShown) {
+                    result.append(localized ? symbols.getDecimalSeparator() :
+                                  PATTERN_DECIMAL_SEPARATOR);
+                }
+                int pos = roundingDecimalPos;
+                for (i = 0; i < getMaximumFractionDigits(); ++i) {
+                    if (roundingDigits != null &&
+                        pos < roundingDigits.length()) {
+                        result.append(pos < 0 ? zero :
+                                      (char) (roundingDigits.charAt(pos) - '0' + zero));
+                        ++pos;
+                        continue;
+                    }
+                    result.append(i<getMinimumFractionDigits() ? zero : digit);
+                }
+            }
+            if (useExponentialNotation) {
+                if(localized ){
+                    result.append(symbols.getExponentSeparator() );
+                }else{
+                    result.append(PATTERN_EXPONENT);
+                }
+                if (exponentSignAlwaysShown) {
+                    result.append(localized ? symbols.getPlusSign() :
+                                  PATTERN_PLUS_SIGN);
+                }
+                for (i=0; i<minExponentDigits; ++i) {
+                    result.append(zero);
+                }
+            }
+            if (padSpec != null && !useExponentialNotation) {
+                int add = formatWidth - result.length() + sub0Start
+                    - ((part == 0)
+                       ? positivePrefix.length() + positiveSuffix.length()
+                       : negativePrefix.length() + negativeSuffix.length());
+                while (add > 0) {
+                    result.insert(sub0Start, digit);
+                    ++maxDig;
+                    --add;
+                    // Only add a grouping separator if we have at least
+                    // 2 additional characters to be added, so we don't
+                    // end up with ",###".
+                    if (add>1 && isGroupingPosition(maxDig)) {
+                        result.insert(sub0Start, group);
+                        --add;                        
+                    }
+                }
+            }
+            if (padPos == PAD_BEFORE_SUFFIX) {
+                result.append(padSpec);
+            }
+            /* Use original symbols read from resources in pattern
+             * eg. use "\u00A4" instead of "$" in Locale.US [Richard/GCL]
+             */
+            appendAffixPattern(result, part!=0, false, localized);
+            if (padPos == PAD_AFTER_SUFFIX) {
+                result.append(padSpec);
+            }
+            if (part == 0) {
+                if (negativeSuffix.equals(positiveSuffix) &&
+                    negativePrefix.equals( PATTERN_MINUS + positivePrefix)) {
+                    break;
+                } else {
+                    result.append(localized ? symbols.getPatternSeparator() :
+                                  PATTERN_SEPARATOR);
+                }
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Apply the given pattern to this Format object.  A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parentheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     * @stable ICU 2.0
+     */
+    public void applyPattern( String pattern ) {
+        applyPattern( pattern, false );
+    }
+
+    /**
+     * Apply the given pattern to this Format object.  The pattern
+     * is assumed to be in a localized notation. A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     * @stable ICU 2.0
+     */
+    public void applyLocalizedPattern( String pattern ) {
+        applyPattern( pattern, true );
+    }
+
+   
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Does the real work of applying a pattern.
+     */
+    private void applyPattern(String pattern, boolean localized) {
+        applyPatternWithoutExpandAffix(pattern, localized);
+        expandAffixAdjustWidth(null);
+    }
+
+    private void expandAffixAdjustWidth(String pluralCount) {
+        /*Bug 4212072
+          Update the affix strings according to symbols in order to keep
+          the affix strings up to date.
+          [Richard/GCL]
+        */
+        expandAffixes(pluralCount);
+
+        // Now that we have the actual prefix and suffix, fix up formatWidth
+        if (formatWidth > 0) {
+            formatWidth += positivePrefix.length() + positiveSuffix.length();
+        }
+    }
+
+    private void applyPatternWithoutExpandAffix(String pattern, boolean localized) {
+        char zeroDigit         = PATTERN_ZERO_DIGIT; // '0'
+        char sigDigit          = PATTERN_SIGNIFICANT_DIGIT; // '@'
+        char groupingSeparator = PATTERN_GROUPING_SEPARATOR;
+        char decimalSeparator  = PATTERN_DECIMAL_SEPARATOR;
+        char percent           = PATTERN_PERCENT;
+        char perMill           = PATTERN_PER_MILLE;
+        char digit             = PATTERN_DIGIT; // '#'
+        char separator         = PATTERN_SEPARATOR;
+        String exponent        = String.valueOf(PATTERN_EXPONENT);
+        char plus              = PATTERN_PLUS_SIGN;
+        char padEscape         = PATTERN_PAD_ESCAPE;
+        char minus             = PATTERN_MINUS; //Bug 4212072 [Richard/GCL]
+        if (localized) {
+            zeroDigit         = symbols.getZeroDigit();
+            sigDigit          = symbols.getSignificantDigit();
+            groupingSeparator = symbols.getGroupingSeparator();
+            decimalSeparator  = symbols.getDecimalSeparator();
+            percent           = symbols.getPercent();
+            perMill           = symbols.getPerMill();
+            digit             = symbols.getDigit();
+            separator         = symbols.getPatternSeparator();
+            exponent          = symbols.getExponentSeparator();
+            plus              = symbols.getPlusSign();
+            padEscape         = symbols.getPadEscape();
+            minus             = symbols.getMinusSign(); //Bug 4212072 [Richard/GCL]
+        }
+        char nineDigit = (char) (zeroDigit + 9);
+
+        boolean gotNegative = false;
+
+        int pos = 0;
+        // Part 0 is the positive pattern.  Part 1, if present, is the negative
+        // pattern.
+        for (int part=0; part<2 && pos<pattern.length(); ++part) {
+            // The subpart ranges from 0 to 4: 0=pattern proper, 1=prefix,
+            // 2=suffix, 3=prefix in quote, 4=suffix in quote.  Subpart 0 is
+            // between the prefix and suffix, and consists of pattern
+            // characters.  In the prefix and suffix, percent, permille, and
+            // currency symbols are recognized and translated.
+            int subpart = 1, sub0Start = 0, sub0Limit = 0, sub2Limit = 0;
+
+            // It's important that we don't change any fields of this object
+            // prematurely.  We set the following variables for the multiplier,
+            // grouping, etc., and then only change the actual object fields if
+            // everything parses correctly.  This also lets us register
+            // the data from part 0 and ignore the part 1, except for the
+            // prefix and suffix.
+            StringBuffer prefix = new StringBuffer();
+            StringBuffer suffix = new StringBuffer();
+            int decimalPos = -1;
+            int multpl = 1;
+            int digitLeftCount = 0, zeroDigitCount = 0, digitRightCount = 0, sigDigitCount = 0;
+            byte groupingCount = -1;
+            byte groupingCount2 = -1;
+            int padPos = -1;
+            char padChar = 0;
+            int incrementPos = -1;
+            long incrementVal = 0;
+            byte expDigits = -1;
+            boolean expSignAlways = false;
+
+            // The affix is either the prefix or the suffix.
+            StringBuffer affix = prefix;
+
+            int start = pos;
+
+        PARTLOOP:
+            for (; pos < pattern.length(); ++pos) {
+                char ch = pattern.charAt(pos);
+                switch (subpart) {
+                case 0: // Pattern proper subpart (between prefix & suffix)
+                    // Process the digits, decimal, and grouping characters.  We
+                    // record five pieces of information.  We expect the digits
+                    // to occur in the pattern ####00.00####, and we record the
+                    // number of left digits, zero (central) digits, and right
+                    // digits.  The position of the last grouping character is
+                    // recorded (should be somewhere within the first two blocks
+                    // of characters), as is the position of the decimal point,
+                    // if any (should be in the zero digits).  If there is no
+                    // decimal point, then there should be no right digits.
+                    if (ch == digit) {
+                        if (zeroDigitCount > 0 || sigDigitCount > 0) {
+                            ++digitRightCount;
+                        } else {
+                            ++digitLeftCount;
+                        }
+                        if (groupingCount >= 0 && decimalPos < 0) {
+                            ++groupingCount;
+                        }
+                    } else if ((ch >= zeroDigit && ch <= nineDigit) ||
+                               ch == sigDigit) {
+                        if (digitRightCount > 0) {
+                            patternError("Unexpected '" + ch + '\'', pattern);
+                        }
+                        if (ch == sigDigit) {
+                            ++sigDigitCount;
+                        } else {
+                            ++zeroDigitCount;
+                            if (ch != zeroDigit) {
+                                int p = digitLeftCount + zeroDigitCount
+                                    + digitRightCount;
+                                if (incrementPos >= 0) {
+                                    while (incrementPos < p) {
+                                        incrementVal *= 10;
+                                        ++incrementPos;
+                                    }
+                                } else {
+                                    incrementPos = p;
+                                }
+                                incrementVal += ch - zeroDigit;
+                            }
+                        }
+                        if (groupingCount >= 0 && decimalPos < 0) {
+                            ++groupingCount;
+                        }
+                    } else if (ch == groupingSeparator) {
+                        /*Bug 4212072
+                          process the Localized pattern like "'Fr. '#'##0.05;'Fr.-'#'##0.05"
+                          (Locale="CH", groupingSeparator == QUOTE)                          
+                          [Richard/GCL]
+                        */
+                        if (ch == QUOTE && (pos+1) < pattern.length()) {
+                            char after = pattern.charAt(pos+1);
+                            if (!(after == digit || (after >= zeroDigit && after <= nineDigit))) {
+                                // A quote outside quotes indicates either the opening
+                                // quote or two quotes, which is a quote literal.  That is,
+                                // we have the first quote in 'do' or o''clock.
+                                if (after == QUOTE) {
+                                    ++pos;
+                                    // Fall through to append(ch)
+                                } else {
+                                    if (groupingCount < 0) {
+                                        subpart = 3; // quoted prefix subpart
+                                    } else {
+                                      // Transition to suffix subpart
+                                      subpart = 2; // suffix subpart
+                                      affix = suffix;
+                                      sub0Limit = pos--;
+                                    }
+                                    continue;
+                                }
+                            }
+                        }
+                        
+                        if (decimalPos >= 0) {
+                            patternError("Grouping separator after decimal", pattern);
+                        }
+                        groupingCount2 = groupingCount;
+                        groupingCount = 0;
+                    } else if (ch == decimalSeparator) {
+                        if (decimalPos >= 0) {
+                            patternError("Multiple decimal separators", pattern);
+                        }
+                        // Intentionally incorporate the digitRightCount,
+                        // even though it is illegal for this to be > 0
+                        // at this point.  We check pattern syntax below.
+                        decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;
+                    } else {
+                        if (pattern.regionMatches(pos, exponent, 0, exponent.length())) {
+                            if (expDigits >= 0) {
+                                patternError("Multiple exponential symbols", pattern);
+                            }
+                            if (groupingCount >= 0) {
+                                patternError("Grouping separator in exponential", pattern);
+                            }
+                            pos += exponent.length();
+                            // Check for positive prefix
+                            if (pos < pattern.length()
+                                && pattern.charAt(pos) == plus) {
+                                expSignAlways = true;
+                                ++pos;
+                            }
+                            // Use lookahead to parse out the exponential part of the
+                            // pattern, then jump into suffix subpart.
+                            expDigits = 0;
+                            while (pos < pattern.length() &&
+                                   pattern.charAt(pos) == zeroDigit) {
+                                ++expDigits;
+                                ++pos;
+                            }
+                            
+                            // 1. Require at least one mantissa pattern digit
+                            // 2. Disallow "#+ @" in mantissa
+                            // 3. Require at least one exponent pattern digit
+                            if (((digitLeftCount + zeroDigitCount) < 1 &&
+                                 (sigDigitCount + digitRightCount) < 1) ||
+                                (sigDigitCount > 0 && digitLeftCount > 0) ||
+                                expDigits < 1) {
+                                patternError("Malformed exponential", pattern);
+                            }
+                        }
+                        // Transition to suffix subpart
+                        subpart = 2; // suffix subpart
+                        affix = suffix;
+                        sub0Limit = pos--; // backup: for() will increment
+                        continue;
+                    }
+                    break;
+                case 1: // Prefix subpart
+                case 2: // Suffix subpart
+                    // Process the prefix / suffix characters
+                    // Process unquoted characters seen in prefix or suffix
+                    // subpart.
+                    
+                    // Several syntax characters implicitly begins the
+                    // next subpart if we are in the prefix; otherwise
+                    // they are illegal if unquoted.
+                    if (ch == digit ||
+                        ch == groupingSeparator ||
+                        ch == decimalSeparator ||
+                        (ch >= zeroDigit && ch <= nineDigit) ||
+                        ch == sigDigit) {
+                        // Any of these characters implicitly begins the
+                        // next subpart if we are in the prefix
+                        if (subpart == 1) { // prefix subpart
+                            subpart = 0; // pattern proper subpart
+                            sub0Start = pos--; // Reprocess this character
+                            continue;
+                        } else if (ch == QUOTE) {
+                            /*Bug 4212072
+                              process the Localized pattern like "'Fr. '#'##0.05;'Fr.-'#'##0.05"
+                              (Locale="CH", groupingSeparator == QUOTE)                          
+                              [Richard/GCL]
+                            */
+                            // A quote outside quotes indicates either the opening
+                            // quote or two quotes, which is a quote literal.  That is,
+                            // we have the first quote in 'do' or o''clock.
+                            if ((pos+1) < pattern.length() &&
+                                pattern.charAt(pos+1) == QUOTE) {
+                                ++pos;
+                                affix.append(ch);
+                            } else {
+                                subpart += 2; // open quote
+                            }
+                            continue;
+                        }
+                        patternError("Unquoted special character '" + ch + '\'', pattern);
+                    } else if (ch == CURRENCY_SIGN) {
+                        // Use lookahead to determine if the currency sign is
+                        // doubled or not.
+                        boolean doubled = (pos + 1) < pattern.length() &&
+                            pattern.charAt(pos + 1) == CURRENCY_SIGN;
+                        /*Bug 4212072
+                         To meet the need of expandAffix(String, StirngBuffer)
+                         [Richard/GCL]
+                        */
+                        if (doubled) {
+                            ++pos; // Skip over the doubled character
+                            affix.append(ch); // append two: one here, one below
+                            if ((pos + 1) < pattern.length() &&
+                                pattern.charAt(pos + 1) == CURRENCY_SIGN) {
+                                ++pos; // Skip over the tripled character
+                                affix.append(ch); // append again
+                                currencySignCount = CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT;
+                            } else {
+                                currencySignCount = CURRENCY_SIGN_COUNT_IN_ISO_FORMAT;
+                            } 
+                        } else {
+                            currencySignCount = CURRENCY_SIGN_COUNT_IN_SYMBOL_FORMAT;
+                        }
+                        // Fall through to append(ch)
+                    } else if (ch == QUOTE) {
+                        // A quote outside quotes indicates either the opening
+                        // quote or two quotes, which is a quote literal.  That is,
+                        // we have the first quote in 'do' or o''clock.
+                        if((pos+1) < pattern.length()&&
+                            pattern.charAt(pos+1)==QUOTE){
+                            ++pos;
+                            affix.append(ch); // append two: one here, one below
+                        }else{
+                            subpart += 2; // open quote
+                        }
+                        // Fall through to append(ch)
+                    } else if (ch == separator) {
+                        // Don't allow separators in the prefix, and don't allow
+                        // separators in the second pattern (part == 1).
+                        if (subpart == 1 || part == 1) {
+                            patternError("Unquoted special character '" + ch + '\'', pattern);
+                        }
+                        sub2Limit = pos++;
+                        break PARTLOOP; // Go to next part
+                    } else if (ch == percent || ch == perMill) {
+                        // Next handle characters which are appended directly.
+                        if (multpl != 1) {
+                            patternError("Too many percent/permille characters", pattern);
+                        }
+                        multpl = (ch == percent) ? 100 : 1000;
+                        // Convert to non-localized pattern
+                        ch = (ch == percent) ? PATTERN_PERCENT : PATTERN_PER_MILLE;
+                        // Fall through to append(ch)
+                    } else if (ch == minus) {
+                        // Convert to non-localized pattern
+                        ch = PATTERN_MINUS;
+                        // Fall through to append(ch)
+                    } else if (ch == padEscape) {
+                        if (padPos >= 0) {
+                            patternError("Multiple pad specifiers", pattern);
+                        }
+                        if ((pos+1) == pattern.length()) {
+                            patternError("Invalid pad specifier", pattern);
+                        }
+                        padPos = pos++; // Advance past pad char
+                        padChar = pattern.charAt(pos);
+                        continue;
+                    }
+                    affix.append(ch);
+                    break;
+                case 3: // Prefix subpart, in quote
+                case 4: // Suffix subpart, in quote
+                    // A quote within quotes indicates either the closing
+                    // quote or two quotes, which is a quote literal.  That is,
+                    // we have the second quote in 'do' or 'don''t'.
+                    if (ch == QUOTE) {
+                        if ((pos+1) < pattern.length() &&
+                            pattern.charAt(pos+1) == QUOTE) {
+                            ++pos; 
+                            affix.append(ch);
+                        } else {
+                            subpart -= 2; // close quote
+                        }
+                        // Fall through to append(ch)
+                    }
+                    // NOTE: In ICU 2.2 there was code here to parse quoted
+                    // percent and permille characters _within quotes_ and give
+                    // them special meaning.  This is incorrect, since quoted
+                    // characters are literals without special meaning.
+                    affix.append(ch);
+                    break;                    
+                }
+            }
+            
+            if (subpart == 3 || subpart == 4) {
+                patternError("Unterminated quote", pattern);
+            }
+
+            if (sub0Limit == 0) {
+                sub0Limit = pattern.length();
+            }
+
+            if (sub2Limit == 0) {
+                sub2Limit = pattern.length();
+            }
+
+            /* Handle patterns with no '0' pattern character.  These patterns
+             * are legal, but must be recodified to make sense.  "##.###" ->
+             * "#0.###".  ".###" -> ".0##".
+             *
+             * We allow patterns of the form "####" to produce a zeroDigitCount
+             * of zero (got that?); although this seems like it might make it
+             * possible for format() to produce empty strings, format() checks
+             * for this condition and outputs a zero digit in this situation.
+             * Having a zeroDigitCount of zero yields a minimum integer digits
+             * of zero, which allows proper round-trip patterns.  We don't want
+             * "#" to become "#0" when toPattern() is called (even though that's
+             * what it really is, semantically).
+             */
+            if (zeroDigitCount == 0 && sigDigitCount == 0 &&
+                digitLeftCount > 0 && decimalPos >= 0) {
+                // Handle "###.###" and "###." and ".###"
+                int n = decimalPos;
+                if (n == 0) ++n; // Handle ".###"
+                digitRightCount = digitLeftCount - n;
+                digitLeftCount = n - 1;
+                zeroDigitCount = 1;
+            }
+
+            // Do syntax checking on the digits, decimal points, and quotes.
+            if ((decimalPos < 0 && digitRightCount > 0 && sigDigitCount == 0) ||
+                (decimalPos >= 0 &&
+                 (sigDigitCount > 0 ||
+                  decimalPos < digitLeftCount ||
+                  decimalPos > (digitLeftCount + zeroDigitCount))) ||
+                groupingCount == 0 || groupingCount2 == 0 ||
+                (sigDigitCount > 0 && zeroDigitCount > 0) ||
+                subpart > 2) { // subpart > 2 == unmatched quote
+                patternError("Malformed pattern", pattern);
+            }
+
+            // Make sure pad is at legal position before or after affix.
+            if (padPos >= 0) {
+                if (padPos == start) {
+                    padPos = PAD_BEFORE_PREFIX;
+                } else if (padPos+2 == sub0Start) {
+                    padPos = PAD_AFTER_PREFIX;
+                } else if (padPos == sub0Limit) {
+                    padPos = PAD_BEFORE_SUFFIX;
+                } else if (padPos+2 == sub2Limit) {
+                    padPos = PAD_AFTER_SUFFIX;
+                } else {
+                    patternError("Illegal pad position", pattern);
+                }
+            }
+
+            if (part == 0) {
+                // Set negative affixes temporarily to match the positive
+                // affixes.  Fix this up later after processing both parts.
+                /*Bug 4212072
+                  To meet the need of expandAffix(String, StirngBuffer)
+                  [Richard/GCL]
+                */
+                posPrefixPattern = negPrefixPattern = prefix.toString();
+                posSuffixPattern = negSuffixPattern = suffix.toString();
+
+                useExponentialNotation = (expDigits >= 0);
+                if (useExponentialNotation) {
+                    minExponentDigits = expDigits;
+                    exponentSignAlwaysShown = expSignAlways;
+                }
+                int digitTotalCount = digitLeftCount + zeroDigitCount + digitRightCount;
+                // The effectiveDecimalPos is the position the decimal is at or
+                // would be at if there is no decimal.  Note that if
+                // decimalPos<0, then digitTotalCount == digitLeftCount +
+                // zeroDigitCount.
+                int effectiveDecimalPos = decimalPos >= 0 ? decimalPos : digitTotalCount;
+                boolean useSigDig = (sigDigitCount > 0);
+                setSignificantDigitsUsed(useSigDig);
+                if (useSigDig) {
+                    setMinimumSignificantDigits(sigDigitCount);
+                    setMaximumSignificantDigits(sigDigitCount + digitRightCount);
+                } else {
+                    int minInt = effectiveDecimalPos - digitLeftCount;
+                    setMinimumIntegerDigits(minInt);
+                    /*Upper limit on integer and fraction digits for a Java double
+                      [Richard/GCL]
+                    */
+                    setMaximumIntegerDigits(useExponentialNotation
+                        ? digitLeftCount + minInt : DOUBLE_INTEGER_DIGITS);
+                    setMaximumFractionDigits(decimalPos >= 0
+                        ? (digitTotalCount - decimalPos) : 0);
+                    setMinimumFractionDigits(decimalPos >= 0
+                        ? (digitLeftCount + zeroDigitCount - decimalPos) : 0);
+                }
+                setGroupingUsed(groupingCount > 0);
+                this.groupingSize = (groupingCount > 0) ? groupingCount : 0;
+                this.groupingSize2 = (groupingCount2 > 0 && groupingCount2 != groupingCount)
+                    ? groupingCount2 : 0;
+                this.multiplier = multpl;
+                setDecimalSeparatorAlwaysShown(decimalPos == 0
+                        || decimalPos == digitTotalCount);
+                if (padPos >= 0) {
+                    padPosition = padPos;
+                    formatWidth = sub0Limit - sub0Start; // to be fixed up below
+                    pad = padChar;
+                } else {
+                    formatWidth = 0;
+                }
+                if (incrementVal != 0) {
+                    // BigDecimal scale cannot be negative (even though
+                    // this makes perfect sense), so we need to handle this.
+                    int scale = incrementPos - effectiveDecimalPos;
+                    roundingIncrementICU =
+                        BigDecimal.valueOf(incrementVal, scale > 0 ? scale : 0);
+                    if (scale < 0) {
+                        roundingIncrementICU =
+                            roundingIncrementICU.movePointRight(-scale);
+                    }
+                    setRoundingDouble();
+                    roundingMode = BigDecimal.ROUND_HALF_EVEN;
+                } else {
+                    setRoundingIncrement((BigDecimal)null);
+                }
+            } else {
+                /*Bug 4212072
+                  To meet the need of expandAffix(String, StirngBuffer)
+                  [Richard/GCL]
+                */
+                negPrefixPattern = prefix.toString();
+                negSuffixPattern = suffix.toString();
+                gotNegative = true;
+            }
+        }
+
+        /*Bug 4140009
+          Process the empty pattern
+          [Richard/GCL]
+        */
+        if (pattern.length() == 0) {
+            posPrefixPattern = posSuffixPattern = "";
+            setMinimumIntegerDigits(0);
+            setMaximumIntegerDigits(DOUBLE_INTEGER_DIGITS);
+            setMinimumFractionDigits(0);
+            setMaximumFractionDigits(DOUBLE_FRACTION_DIGITS);
+        }
+        
+        // If there was no negative pattern, or if the negative pattern is
+        // identical to the positive pattern, then prepend the minus sign to the
+        // positive pattern to form the negative pattern.
+        /*Bug 4212072
+          To meet the need of expandAffix(String, StirngBuffer)
+          [Richard/GCL]
+        */
+        if (!gotNegative ||
+            (negPrefixPattern.equals(posPrefixPattern)
+             && negSuffixPattern.equals(posSuffixPattern))) {
+            negSuffixPattern = posSuffixPattern;
+            negPrefixPattern = PATTERN_MINUS + posPrefixPattern;
+        }
+        setLocale(null, null);
+        // save the pattern
+        formatPattern = pattern;
+        // initialize currencyPluralInfo if needed 
+        if (currencySignCount == CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT &&
+            currencyPluralInfo == null) { 
+            currencyPluralInfo = new CurrencyPluralInfo(symbols.getLocale());
+        }
+    }
+
+    /**
+     * Centralizes the setting of the roundingDouble and roundingDoubleReciprocal.
+     */
+    private void setRoundingDouble() {
+        if (roundingIncrementICU == null) {
+            roundingDouble = 0.0d;
+            roundingDoubleReciprocal = 0.0d;
+        } else {
+            roundingDouble = roundingIncrementICU.doubleValue();
+            setRoundingDoubleReciprocal(BigDecimal.ONE.divide(roundingIncrementICU,BigDecimal.ROUND_HALF_EVEN).doubleValue());
+        }
+    }
+
+    private void patternError(String msg, String pattern) {
+        throw new IllegalArgumentException(msg + " in pattern \"" + pattern + '"');
+    }
+
+    /*Rewrite the following 4 "set" methods
+      Upper limit on integer and fraction digits for a Java double 
+      [Richard/GCL]
+    */
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. This override limits the integer digit count to 309.
+     * @see NumberFormat#setMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        super.setMaximumIntegerDigits(Math.min(newValue, DOUBLE_INTEGER_DIGITS));
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number. This override limits the integer digit count to 309.
+     * @see NumberFormat#setMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        super.setMinimumIntegerDigits(Math.min(newValue, DOUBLE_INTEGER_DIGITS));
+    }
+
+    /**
+     * Returns the minimum number of significant digits that will be
+     * displayed. This value has no effect unless areSignificantDigitsUsed()
+     * returns true.
+     * @return the fewest significant digits that will be shown
+     * @stable ICU 3.0
+     */
+    public int getMinimumSignificantDigits() {
+        return minSignificantDigits;
+    }
+
+    /**
+     * Returns the maximum number of significant digits that will be
+     * displayed. This value has no effect unless areSignificantDigitsUsed()
+     * returns true.
+     * @return the most significant digits that will be shown
+     * @stable ICU 3.0
+     */
+    public int getMaximumSignificantDigits() {
+        return maxSignificantDigits;
+    }
+
+    /**
+     * Sets the minimum number of significant digits that will be
+     * displayed.  If <code>min</code> is less than one then it is set
+     * to one.  If the maximum significant digits count is less than
+     * <code>min</code>, then it is set to <code>min</code>. This
+     * value has no effect unless areSignificantDigitsUsed() returns true.
+     * @param min the fewest significant digits to be shown 
+     * @stable ICU 3.0
+     */
+    public void setMinimumSignificantDigits(int min) {
+        if (min < 1) {
+            min = 1;   
+        }
+        // pin max sig dig to >= min
+        int max = Math.max(maxSignificantDigits, min);
+        minSignificantDigits = min;
+        maxSignificantDigits = max;
+    }
+
+    /**
+     * Sets the maximum number of significant digits that will be
+     * displayed.  If <code>max</code> is less than one then it is set
+     * to one.  If the minimum significant digits count is greater
+     * than <code>max</code>, then it is set to <code>max</code>. This
+     * value has no effect unless areSignificantDigitsUsed() returns true.
+     * @param max the most significant digits to be shown 
+     * @stable ICU 3.0
+     */
+    public void setMaximumSignificantDigits(int max) {
+        if (max < 1) {
+            max = 1;
+        }
+        // pin min sig dig to 1..max
+        int min = Math.min(minSignificantDigits, max);
+        minSignificantDigits = min;
+        maxSignificantDigits = max;
+    }
+
+    /**
+     * Returns true if significant digits are in use or false if
+     * integer and fraction digit counts are in use.
+     * @return true if significant digits are in use
+     * @stable ICU 3.0
+     */
+    public boolean areSignificantDigitsUsed() {
+        return useSignificantDigits;
+    }
+
+    /**
+     * Sets whether significant digits are in use, or integer and
+     * fraction digit counts are in use.
+     * @param useSignificantDigits true to use significant digits, or
+     * false to use integer and fraction digit counts
+     * @stable ICU 3.0
+     */
+    public void setSignificantDigitsUsed(boolean useSignificantDigits) {
+        this.useSignificantDigits = useSignificantDigits;
+    }
+
+    /**
+     * Sets the <tt>Currency</tt> object used to display currency
+     * amounts.  This takes effect immediately, if this format is a
+     * currency format.  If this format is not a currency format, then
+     * the currency object is used if and when this object becomes a
+     * currency format through the application of a new pattern.
+     * @param theCurrency new currency object to use.  Must not be
+     * null.
+     * @stable ICU 2.2
+     */
+    public void setCurrency(Currency theCurrency) {
+        // If we are a currency format, then modify our affixes to
+        // encode the currency symbol for the given currency in our
+        // locale, and adjust the decimal digits and rounding for the
+        // given currency.
+
+        super.setCurrency(theCurrency);
+        if (theCurrency != null) {
+            boolean[] isChoiceFormat = new boolean[1];
+            String s = theCurrency.getName(symbols.getULocale(),
+                    Currency.SYMBOL_NAME,
+                    isChoiceFormat);
+                symbols.setCurrencySymbol(s);
+                symbols.setInternationalCurrencySymbol(theCurrency.getCurrencyCode());
+        }
+
+        if (currencySignCount > 0) {
+            if (theCurrency != null) {
+                setRoundingIncrement(theCurrency.getRoundingIncrement());
+                int d = theCurrency.getDefaultFractionDigits();
+                setMinimumFractionDigits(d);
+                setMaximumFractionDigits(d);
+            }
+            expandAffixes(null);
+        }
+    }
+
+    /**
+     * Returns the currency in effect for this formatter.  Subclasses
+     * should override this method as needed.  Unlike getCurrency(),
+     * this method should never return null.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected Currency getEffectiveCurrency() {
+        Currency c = getCurrency();
+        if (c == null) {
+            c = Currency.getInstance(symbols.getInternationalCurrencySymbol());
+        }
+        return c;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. This override limits the fraction digit count to 340.
+     * @see NumberFormat#setMaximumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        super.setMaximumFractionDigits(Math.min(newValue, DOUBLE_FRACTION_DIGITS));
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number. This override limits the fraction digit count to 340.
+     * @see NumberFormat#setMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        super.setMinimumFractionDigits(Math.min(newValue, DOUBLE_FRACTION_DIGITS));
+    }
+
+    /**
+     * Sets whether {@link #parse(String, ParsePosition)} method returns BigDecimal.
+     * The default value is false.
+     * @param value true if {@link #parse(String, ParsePosition)} method returns
+     * BigDecimal.
+     * @stable ICU 3.6
+     */
+    public void setParseBigDecimal(boolean value) {
+        parseBigDecimal = value;
+    }
+
+    /**
+     * Returns whether {@link #parse(String, ParsePosition)} method returns BigDecimal.
+     * @return true if {@link #parse(String, ParsePosition)} method returns BigDecimal.
+     * @stable ICU 3.6
+     */
+    public boolean isParseBigDecimal() {
+        return parseBigDecimal;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    private void writeObject(ObjectOutputStream stream) throws IOException {
+// Doug, do we need this anymore?
+//            if (roundingIncrementICU != null) {
+//                roundingIncrement = roundingIncrementICU.toBigDecimal();
+//            }
+
+        // Ticket#6449
+        // Format.Field instances are not serializable.  When formatToCharacterIterator
+        // is called, attributes (ArrayList) stores FieldPosition instances with
+        // NumberFormat.Field.  Because NumberFormat.Field is not serializable, we need
+        // to clear the contents of the list when writeObject is called.  We could remove
+        // the field or make it transient, but it will break serialization compatibility.
+        attributes.clear();
+
+        stream.defaultWriteObject();
+    }
+//#endif
+
+    /**
+     * First, read the default serializable fields from the stream.  Then
+     * if <code>serialVersionOnStream</code> is less than 1, indicating that
+     * the stream was written by JDK 1.1, initialize <code>useExponentialNotation</code>
+     * to false, since it was not present in JDK 1.1.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        /*Bug 4185761 validate fields
+          [Richard/GCL]
+        */
+        // We only need to check the maximum counts because NumberFormat
+        // .readObject has already ensured that the maximum is greater than the
+        // minimum count.
+        /*Commented for compatibility with previous version, and reserved for further use
+        if (getMaximumIntegerDigits() > DOUBLE_INTEGER_DIGITS ||
+            getMaximumFractionDigits() > DOUBLE_FRACTION_DIGITS) {
+            throw new InvalidObjectException("Digit count out of range");
+        }*/
+        /* Truncate the maximumIntegerDigits to DOUBLE_INTEGER_DIGITS and maximumFractionDigits
+         * to DOUBLE_FRACTION_DIGITS
+         */
+        if (getMaximumIntegerDigits() > DOUBLE_INTEGER_DIGITS) {
+             setMaximumIntegerDigits(DOUBLE_INTEGER_DIGITS);
+        }
+        if (getMaximumFractionDigits() > DOUBLE_FRACTION_DIGITS) {
+            setMaximumFractionDigits(DOUBLE_FRACTION_DIGITS);
+        }
+        if (serialVersionOnStream < 2) {
+            exponentSignAlwaysShown = false;
+            setInternalRoundingIncrement(null);
+            setRoundingDouble();
+            roundingMode = BigDecimal.ROUND_HALF_EVEN;
+            formatWidth = 0;
+            pad = ' ';
+            padPosition = PAD_BEFORE_PREFIX;
+            if (serialVersionOnStream < 1) {
+                // Didn't have exponential fields
+                useExponentialNotation = false;
+            }
+        }
+        if (serialVersionOnStream < 3) {
+            // Versions prior to 3 do not store a currency object.
+            // Create one to match the DecimalFormatSymbols object.
+            setCurrencyForSymbols();
+        }
+        serialVersionOnStream = currentSerialVersion;
+        digitList = new DigitList();
+
+//#if defined(FOUNDATION10)
+//#else
+        if (roundingIncrement != null) {
+            setInternalRoundingIncrement(new BigDecimal(roundingIncrement));
+            setRoundingDouble();
+        }   
+//#endif
+    }
+
+
+    private void setInternalRoundingIncrement(BigDecimal value) {
+        roundingIncrementICU = value;
+//#if defined(FOUNDATION10)
+//#else
+        roundingIncrement = value == null ? null : value.toBigDecimal();
+//#endif
+    }
+
+    //----------------------------------------------------------------------
+    // INSTANCE VARIABLES
+    //----------------------------------------------------------------------
+
+    private transient DigitList digitList = new DigitList();
+
+    /**
+     * The symbol used as a prefix when formatting positive numbers, e.g. "+".
+     *
+     * @serial
+     * @see #getPositivePrefix
+     */
+    private String  positivePrefix = "";
+
+    /**
+     * The symbol used as a suffix when formatting positive numbers.
+     * This is often an empty string.
+     *
+     * @serial
+     * @see #getPositiveSuffix
+     */
+    private String  positiveSuffix = "";
+
+    /**
+     * The symbol used as a prefix when formatting negative numbers, e.g. "-".
+     *
+     * @serial
+     * @see #getNegativePrefix
+     */
+    private String  negativePrefix = "-";
+
+    /**
+     * The symbol used as a suffix when formatting negative numbers.
+     * This is often an empty string.
+     *
+     * @serial
+     * @see #getNegativeSuffix
+     */
+    private String  negativeSuffix = "";
+    
+    /**
+     * The prefix pattern for non-negative numbers.  This variable corresponds
+     * to <code>positivePrefix</code>.
+     *
+     * <p>This pattern is expanded by the method <code>expandAffix()</code> to
+     * <code>positivePrefix</code> to update the latter to reflect changes in
+     * <code>symbols</code>.  If this variable is <code>null</code> then
+     * <code>positivePrefix</code> is taken as a literal value that does not
+     * change when <code>symbols</code> changes.  This variable is always
+     * <code>null</code> for <code>DecimalFormat</code> objects older than
+     * stream version 2 restored from stream.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String posPrefixPattern;
+
+    /**
+     * The suffix pattern for non-negative numbers.  This variable corresponds
+     * to <code>positiveSuffix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String posSuffixPattern;
+
+    /**
+     * The prefix pattern for negative numbers.  This variable corresponds
+     * to <code>negativePrefix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String negPrefixPattern;
+
+    /**
+     * The suffix pattern for negative numbers.  This variable corresponds
+     * to <code>negativeSuffix</code>.  This variable is analogous to
+     * <code>posPrefixPattern</code>; see that variable for further
+     * documentation.
+     *
+     * @serial
+     */
+    //[Richard/GCL]
+    private String negSuffixPattern;
+
+
+
+    /**
+     * Formatter for ChoiceFormat-based currency names.  If this field
+     * is not null, then delegate to it to format currency symbols.
+     * @since ICU 2.6
+     */
+    private ChoiceFormat currencyChoice;
+
+    /**
+     * The multiplier for use in percent, permill, etc.
+     *
+     * @serial
+     * @see #getMultiplier
+     */
+    private int     multiplier = 1;
+    
+    /**
+     * The number of digits between grouping separators in the integer
+     * portion of a number.  Must be greater than 0 if
+     * <code>NumberFormat.groupingUsed</code> is true.
+     *
+     * @serial
+     * @see #getGroupingSize
+     * @see NumberFormat#isGroupingUsed
+     */
+    private byte    groupingSize = 3;  // invariant, > 0 if useThousands
+
+    // [NEW]
+    /**
+     * The secondary grouping size.  This is only used for Hindi
+     * numerals, which use a primary grouping of 3 and a secondary
+     * grouping of 2, e.g., "12,34,567".  If this value is less than
+     * 1, then secondary grouping is equal to the primary grouping.
+     * 
+     */
+    private byte    groupingSize2 = 0;
+    
+    /**
+     * If true, forces the decimal separator to always appear in a formatted
+     * number, even if the fractional part of the number is zero.
+     *
+     * @serial
+     * @see #isDecimalSeparatorAlwaysShown
+     */
+    private boolean decimalSeparatorAlwaysShown = false;
+    
+    
+    /**
+     * The <code>DecimalFormatSymbols</code> object used by this format.
+     * It contains the symbols used to format numbers, e.g. the grouping separator,
+     * decimal separator, and so on.
+     *
+     * @serial
+     * @see #setDecimalFormatSymbols
+     * @see DecimalFormatSymbols
+     */
+    private DecimalFormatSymbols symbols = null; // LIU new DecimalFormatSymbols();
+
+    /**
+     * True to use significant digits rather than integer and fraction
+     * digit counts.
+     * @serial
+     * @since ICU 3.0
+     */
+    private boolean useSignificantDigits = false;
+
+    /**
+     * The minimum number of significant digits to show.  Must be >= 1
+     * and <= maxSignificantDigits.  Ignored unless
+     * useSignificantDigits == true.
+     * @serial
+     * @since ICU 3.0
+     */
+    private int minSignificantDigits = 1;
+
+    /**
+     * The maximum number of significant digits to show.  Must be >=
+     * minSignficantDigits.  Ignored unless useSignificantDigits ==
+     * true.
+     * @serial
+     * @since ICU 3.0
+     */
+    private int maxSignificantDigits = 6;
+
+    /**
+     * True to force the use of exponential (i.e. scientific) notation when formatting
+     * numbers.
+     * <p>
+     * Note that the JDK 1.2 public API provides no way to set this field,
+     * even though it is supported by the implementation and the stream format.
+     * The intent is that this will be added to the API in the future.
+     *
+     * @serial
+     */
+    private boolean useExponentialNotation;  // Newly persistent in JDK 1.2
+
+    /**
+     * The minimum number of digits used to display the exponent when a number is
+     * formatted in exponential notation.  This field is ignored if
+     * <code>useExponentialNotation</code> is not true.
+     * <p>
+     * Note that the JDK 1.2 public API provides no way to set this field,
+     * even though it is supported by the implementation and the stream format.
+     * The intent is that this will be added to the API in the future.
+     *
+     * @serial
+     */
+    private byte    minExponentDigits;       // Newly persistent in JDK 1.2
+
+    // [NEW]
+    /**
+     * If true, the exponent is always prefixed with either the plus
+     * sign or the minus sign.  Otherwise, only negative exponents are
+     * prefixed with the minus sign.  This has no effect unless
+     * <code>useExponentialNotation</code> is true.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private boolean exponentSignAlwaysShown = false;
+
+//#if defined(FOUNDATION10)
+//#else
+    // [NEW]
+    /**
+     * The value to which numbers are rounded during formatting.  For example,
+     * if the rounding increment is 0.05, then 13.371 would be formatted as
+     * 13.350, assuming 3 fraction digits.  Has the value <code>null</code> if
+     * rounding is not in effect, or a positive value if rounding is in effect.
+     * Default value <code>null</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    // Note: this is kept in sync with roundingIncrementICU.
+    // it is only kept around to avoid a conversion when formatting a java.math.BigDecimal
+    private java.math.BigDecimal roundingIncrement = null;
+//#endif
+
+    // [NEW]
+    /**
+     * The value to which numbers are rounded during formatting.  For example,
+     * if the rounding increment is 0.05, then 13.371 would be formatted as
+     * 13.350, assuming 3 fraction digits.  Has the value <code>null</code> if
+     * rounding is not in effect, or a positive value if rounding is in effect.
+     * Default value <code>null</code>.
+     * WARNING: the roundingIncrement value is the one serialized.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private transient BigDecimal roundingIncrementICU = null;
+
+    // [NEW]
+    /**
+     * The rounding increment as a double.  If this value is <= 0, then no
+     * rounding is done.  This value is
+     * <code>roundingIncrementICU.doubleValue()</code>.  Default value 0.0.
+     */
+    private transient double roundingDouble = 0.0;
+
+    // [NEW]
+    /**
+     * If the roundingDouble is the reciprocal of an integer (the most common case!),
+     * this is set to be that integer. Otherwise it is 0.0.
+     */
+    private transient double roundingDoubleReciprocal = 0.0;
+
+    // [NEW]
+    /**
+     * The rounding mode.  This value controls any rounding operations which
+     * occur when applying a rounding increment or when reducing the number of
+     * fraction digits to satisfy a maximum fraction digits limit.  The value
+     * may assume any of the <code>BigDecimal</code> rounding mode values.
+     * Default value <code>BigDecimal.ROUND_HALF_EVEN</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int roundingMode = BigDecimal.ROUND_HALF_EVEN;
+
+	// [NEW]
+    /**
+     * Operations on <code>BigDecimal</code> numbers are controlled by a
+     * {@link MathContext} object, which provides the context (precision and
+     * other information) for the operation. The default <code>MathContext</code> 
+     * settings are <code>digits=0, form=PLAIN, lostDigits=false, 
+     * roundingMode=ROUND_HALF_UP</code>; these settings perform fixed point 
+     * arithmetic with unlimited precision, as defined for the original BigDecimal 
+     * class in Java 1.1 and Java 1.2
+     */
+    private com.ibm.icu.math.MathContext mathContext = new com.ibm.icu.math.MathContext(0, com.ibm.icu.math.MathContext.PLAIN); // context for plain unlimited math
+
+    // [NEW]
+    /**
+     * The padded format width, or zero if there is no padding.  Must
+     * be >= 0.  Default value zero.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int formatWidth = 0;
+
+    // [NEW]
+    /**
+     * The character used to pad the result of format to
+     * <code>formatWidth</code>, if padding is in effect.  Default value ' '.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private char pad = ' ';
+
+    // [NEW]
+    /**
+     * The position in the string at which the <code>pad</code> character
+     * will be inserted, if padding is in effect.  Must have a value from
+     * <code>PAD_BEFORE_PREFIX</code> to <code>PAD_AFTER_SUFFIX</code>.
+     * Default value <code>PAD_BEFORE_PREFIX</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int padPosition = PAD_BEFORE_PREFIX;
+
+    /**
+     * True if {@link #parse(String, ParsePosition)} to return BigDecimal
+     * rather than Long, Double or BigDecimal except special values.
+     * This property is introduced for J2SE 5 compatibility support.
+     * @serial
+     * @since ICU 3.6
+     * @see #setParseBigDecimal(boolean)
+     * @see #isParseBigDecimal()
+     */
+    private boolean parseBigDecimal = false;
+
+    //----------------------------------------------------------------------
+
+    static final int currentSerialVersion = 3;
+
+    /**
+     * The internal serial version which says which version was written
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (default): versions before JDK 1.2
+     * <li><b>1</b>: version from JDK 1.2 and later, which includes the two new fields
+     *      <code>useExponentialNotation</code> and <code>minExponentDigits</code>.
+     * <li><b>2</b>: version on AlphaWorks, which adds roundingMode, formatWidth,
+     *      pad, padPosition, exponentSignAlwaysShown, roundingIncrement.
+     * <li><b>3</b>: ICU 2.2.  Adds currency object.
+     * </ul>
+     * @serial */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    //----------------------------------------------------------------------
+    // CONSTANTS
+    //----------------------------------------------------------------------
+
+    // [NEW]
+    /**
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted before
+     * the prefix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public static final int PAD_BEFORE_PREFIX = 0;
+
+    // [NEW]
+    /**
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted after
+     * the prefix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public static final int PAD_AFTER_PREFIX  = 1;
+
+    // [NEW]
+    /**
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted before
+     * the suffix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_AFTER_SUFFIX
+     * @stable ICU 2.0
+     */
+    public static final int PAD_BEFORE_SUFFIX = 2;
+
+    // [NEW]
+    /**
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted after
+     * the suffix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @stable ICU 2.0
+     */
+    public static final int PAD_AFTER_SUFFIX  = 3;
+
+    // Constants for characters used in programmatic (unlocalized) patterns.
+    private static final char       PATTERN_ZERO_DIGIT         = '0';
+    private static final char       PATTERN_GROUPING_SEPARATOR = ',';
+    private static final char       PATTERN_DECIMAL_SEPARATOR  = '.';
+    private static final char       PATTERN_DIGIT              = '#';
+            static final char       PATTERN_SIGNIFICANT_DIGIT  = '@';
+            static final char       PATTERN_EXPONENT           = 'E'; // [NEW]
+            static final char       PATTERN_PLUS_SIGN          = '+'; // [NEW]
+
+    // Affix
+    private static final char       PATTERN_PER_MILLE          = '\u2030';
+    private static final char       PATTERN_PERCENT            = '%';
+            static final char       PATTERN_PAD_ESCAPE         = '*'; // [NEW]
+    /*Bug 4212072
+      To meet the need of expandAffix(String, StirngBuffer)
+      [Richard/GCL]
+    */
+    private static final char       PATTERN_MINUS              = '-'; //[Richard/GCL]
+
+    // Other    
+    private static final char       PATTERN_SEPARATOR          = ';';
+
+    // Pad escape is package private to allow access by DecimalFormatSymbols.
+    // Also plus sign.  Also exponent.
+
+    /**
+     * The CURRENCY_SIGN is the standard Unicode symbol for currency.  It
+     * is used in patterns and substitued with either the currency symbol,
+     * or if it is doubled, with the international currency symbol.  If the
+     * CURRENCY_SIGN is seen in a pattern, then the decimal separator is
+     * replaced with the monetary decimal separator.
+     *
+     * The CURRENCY_SIGN is not localized.
+     */
+    private static final char       CURRENCY_SIGN = '\u00A4';
+
+    private static final char       QUOTE = '\'';
+    
+    /* Upper limit on integer and fraction digits for a Java double
+       [Richard/GCL]
+    */
+    static final int DOUBLE_INTEGER_DIGITS  = 309;
+    static final int DOUBLE_FRACTION_DIGITS = 340;
+
+    /**
+     * When someone turns on scientific mode, we assume that more than this
+     * number of digits is due to flipping from some other mode that didn't
+     * restrict the maximum, and so we force 1 integer digit.  We don't bother
+     * to track and see if someone is using exponential notation with more than
+     * this number, it wouldn't make sense anyway, and this is just to make sure
+     * that someone turning on scientific mode with default settings doesn't
+     * end up with lots of zeroes.
+     */
+    static final int MAX_SCIENTIFIC_INTEGER_DIGITS = 8;
+
+//#if defined(FOUNDATION10)
+//##    // we're not compatible with other versions, since we have no java.math.BigDecimal field
+//##    private static final long serialVersionUID = 2;
+//#else
+    // Proclaim JDK 1.1 serial compatibility.
+    private static final long serialVersionUID = 864413376551465018L;
+//#endif
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    private ArrayList attributes = new ArrayList();
+//#endif
+
+    /*
+     * Following are used in currency format
+     */
+/*
+    // triple currency sign char array
+    private static final char[] tripleCurrencySign = {0xA4, 0xA4, 0xA4};
+    // triple currency sign string
+    private static final String tripleCurrencyStr = new String(tripleCurrencySign);
+
+    // default currency plural pattern char array
+    private static final char[] defaultCurrencyPluralPatternChar = {0, '.', '#', '#', ' ', 0xA4, 0xA4, 0xA4};
+    // default currency plural pattern string
+    private static final String defaultCurrencyPluralPattern = new String(defaultCurrencyPluralPatternChar);
+*/
+
+    // pattern used in this formatter
+    private String formatPattern = "";
+    // style is only valid when decimal formatter is constructed by
+    // DecimalFormat(pattern, decimalFormatSymbol, style)
+    private int style = NumberFormat.NUMBERSTYLE;
+    /*
+     * Represents whether this is a currency format, and which
+     * currency format style.
+     * 0: not currency format type;
+     * 1: currency style -- symbol name, such as "$" for US dollar.
+     * 2: currency style -- ISO name, such as USD for US dollar.
+     * 3: currency style -- plural long name, such as "US Dollar" for
+     *                      "1.00 US Dollar", or "US Dollars" for
+     *                      "3.00 US Dollars".
+     */
+    private int currencySignCount = 0;
+
+
+    /* For parsing purose,
+     * Need to remember all prefix patterns and suffix patterns of 
+     * every currency format pattern, 
+     * including the pattern of default currecny style, ISO currency style,
+     * and plural currency style. And the patterns are set through applyPattern.
+     * Following are used to represent the affix patterns in currency plural
+     * formats.
+     */
+    private static final class AffixForCurrency {
+        // negative prefix pattern
+        private String negPrefixPatternForCurrency = null; 
+        // negative suffix pattern
+        private String negSuffixPatternForCurrency = null; 
+        // positive prefix pattern
+        private String posPrefixPatternForCurrency = null; 
+        // positive suffix pattern
+        private String posSuffixPatternForCurrency = null; 
+        
+        public AffixForCurrency() {}
+        public AffixForCurrency(String negPrefix, String negSuffix,
+                                String posPrefix, String posSuffix) {
+            negPrefixPatternForCurrency = negPrefix;
+            negSuffixPatternForCurrency = negSuffix;
+            posPrefixPatternForCurrency = posPrefix;
+            posSuffixPatternForCurrency = posSuffix;
+        }
+
+        public String getNegPrefix() {
+            return negPrefixPatternForCurrency;
+        }
+
+        public String getNegSuffix() {
+            return negSuffixPatternForCurrency;
+        }
+
+        public String getPosPrefix() {
+            return posPrefixPatternForCurrency;
+        }
+
+        public String getPosSuffix() {
+            return posSuffixPatternForCurrency;
+        }
+    }
+    // Affix patter set for currency.
+    // It is a set of AffixForCurrency,
+    // each element of the set saves the negative prefix,
+    // negative suffix, positive prefix, and positive suffix of a pattern.
+    private transient Set affixPatternsForCurrency = null;
+
+    // For currency parsing, since currency parsing need to parse
+    // against all currency patterns, before the parsing, need to set up 
+    // the affix patterns for currency.
+    private transient boolean isReadyForParsing = false;
+
+    // Information needed for DecimalFormat to format/parse currency plural.
+    private CurrencyPluralInfo currencyPluralInfo = null;
+
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/DecimalFormatSymbols.java b/src/com/ibm/icu/text/DecimalFormatSymbols.java
new file mode 100644
index 0000000..f8725ca
--- /dev/null
+++ b/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -0,0 +1,1095 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.text.ChoiceFormat;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+/**
+ * This class represents the set of symbols (such as the decimal separator, the
+ * grouping separator, and so on) needed by <code>DecimalFormat</code> to format
+ * numbers. <code>DecimalFormat</code> creates for itself an instance of
+ * <code>DecimalFormatSymbols</code> from its locale data.  If you need to
+ * change any of these symbols, you can get the
+ * <code>DecimalFormatSymbols</code> object from your <code>DecimalFormat</code>
+ * and modify it.
+ *
+ * <p><strong>This is an enhanced version of <code>DecimalFormatSymbols</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong>.</strong>
+ *
+ * @see          java.util.Locale
+ * @see          DecimalFormat
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+
+public class DecimalFormatSymbols implements Cloneable, Serializable {
+
+    /**
+     * Create a DecimalFormatSymbols object for the default locale.
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols() {
+        initialize( ULocale.getDefault() );
+    }
+
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     * @param locale the locale
+     * @stable ICU 2.0
+     */
+    public DecimalFormatSymbols( Locale locale ) {
+        initialize( ULocale.forLocale(locale) );
+    }
+
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     * @param locale the locale
+     * @stable ICU 3.2
+     */
+    public DecimalFormatSymbols( ULocale locale ) {
+        initialize( locale );
+    }
+
+    /**
+     * Gets a DecimalFormatSymbols instance for the default locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DecimalFormatSymbols()</code>.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return A DecimalFormatSymbols instance.
+     * @stable ICU 3.8
+     */
+    public static DecimalFormatSymbols getInstance() {
+        return new DecimalFormatSymbols();
+    }
+
+    /**
+     * Gets a DecimalFormatSymbols instance for the given locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DecimalFormatSymbols(locale)</code>.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @param locale the locale.
+     * @return A DecimalFormatSymbols instance.
+     * @stable ICU 3.8
+     */
+    public static DecimalFormatSymbols getInstance(Locale locale) {
+        return new DecimalFormatSymbols(locale);
+    }
+
+    /**
+     * Gets a DecimalFormatSymbols instance for the given locale.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getInstance</code>,
+     * this method simply returns <code>new com.ibm.icu.text.DecimalFormatSymbols(locale)</code>.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @param locale the locale.
+     * @return A DecimalFormatSymbols instance.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static DecimalFormatSymbols getInstance(ULocale locale) {
+        return new DecimalFormatSymbols(locale);
+    }
+
+    /**
+     * Returns an array of all locales for which the <code>getInstance</code> methods of this
+     * class can return localized instances.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getAvailableLocales</code>,
+     * this method simply returns the array of <code>Locale</code>s available for this class.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return An array of <code>Locale</code>s for which localized <code>DecimalFormatSymbols</code> instances are available.
+     * @stable ICU 3.8
+     */
+    public static Locale[] getAvailableLocales() {
+        return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+    }
+
+    /**
+     * Returns an array of all locales for which the <code>getInstance</code> methods of this
+     * class can return localized instances.
+     * <br><br>
+     * <b>Note:</b> Unlike <code>java.text.DecimalFormatSymbols#getAvailableLocales</code>,
+     * this method simply returns the array of <code>ULocale</code>s available in this class.
+     * ICU does not support <code>DecimalFormatSymbolsProvider</code> introduced in Java 6
+     * or its equivalent implementation for now.
+     * 
+     * @return An array of <code>ULocale</code>s for which localized <code>DecimalFormatSymbols</code> instances are available.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+        return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);        
+    }
+
+    
+    /**
+     * Return the character used for zero. Different for Arabic, etc.
+     * @return the character
+     * @stable ICU 2.0
+     */
+    public char getZeroDigit() {
+        return zeroDigit;
+    }
+
+    /**
+     * Set the character used for zero.
+     * @param zeroDigit the zero character.
+     * @stable ICU 2.0
+     */
+    public void setZeroDigit(char zeroDigit) {
+        this.zeroDigit = zeroDigit;
+    }
+
+    /**
+     * Return the character used to represent a significant digit in a pattern.
+     * @return the significant digit pattern character
+     * @stable ICU 3.0
+     */
+    public char getSignificantDigit() {
+        return sigDigit;
+    }
+
+    /**
+     * Set the character used to represent a significant digit in a pattern.
+     * @param sigDigit the significant digit pattern character
+     * @stable ICU 3.0
+     */
+    public void setSignificantDigit(char sigDigit) {
+        this.sigDigit = sigDigit;
+    }    
+    
+    /**
+     * Return the character used for thousands separator. Different for French, etc.
+     * @return the thousands character
+     * @stable ICU 2.0
+     */
+    public char getGroupingSeparator() {
+        return groupingSeparator;
+    }
+
+    /**
+     * Set the character used for thousands separator. Different for French, etc.
+     * @param groupingSeparator the thousands character
+     * @stable ICU 2.0
+     */
+    public void setGroupingSeparator(char groupingSeparator) {
+        this.groupingSeparator = groupingSeparator;
+    }
+
+    /**
+     * Return the character used for decimal sign. Different for French, etc.
+     * @return the decimal character
+     * @stable ICU 2.0
+     */
+    public char getDecimalSeparator() {
+        return decimalSeparator;
+    }
+
+    /**
+     * Set the character used for decimal sign. Different for French, etc.
+     * @param decimalSeparator the decimal character
+     * @stable ICU 2.0
+     */
+    public void setDecimalSeparator(char decimalSeparator) {
+        this.decimalSeparator = decimalSeparator;
+    }
+
+    /**
+     * Return the character used for mille percent sign. Different for Arabic, etc.
+     * @return the mille percent character
+     * @stable ICU 2.0
+     */
+    public char getPerMill() {
+        return perMill;
+    }
+
+    /**
+     * Set the character used for mille percent sign. Different for Arabic, etc.
+     * @param perMill the mille percent character
+     * @stable ICU 2.0
+     */
+    public void setPerMill(char perMill) {
+        this.perMill = perMill;
+    }
+
+    /**
+     * Return the character used for percent sign. Different for Arabic, etc.
+     * @return the percent character
+     * @stable ICU 2.0
+     */
+    public char getPercent() {
+        return percent;
+    }
+
+    /**
+     * Set the character used for percent sign. Different for Arabic, etc.
+     * @param percent the percent character
+     * @stable ICU 2.0
+     */
+    public void setPercent(char percent) {
+        this.percent = percent;
+    }
+
+    /**
+     * Return the character used for a digit in a pattern.
+     * @return the digit pattern character
+     * @stable ICU 2.0
+     */
+    public char getDigit() {
+        return digit;
+    }
+
+    /**
+     * Set the character used for a digit in a pattern.
+     * @param digit the digit pattern character
+     * @stable ICU 2.0
+     */
+    public void setDigit(char digit) {
+        this.digit = digit;
+    }
+
+    /**
+     * Return the character used to separate positive and negative subpatterns
+     * in a pattern.
+     * @return the pattern separator character
+     * @stable ICU 2.0
+     */
+    public char getPatternSeparator() {
+        return patternSeparator;
+    }
+
+    /**
+     * Set the character used to separate positive and negative subpatterns
+     * in a pattern.
+     * @param patternSeparator the pattern separator character
+     * @stable ICU 2.0
+     */
+    public void setPatternSeparator(char patternSeparator) {
+        this.patternSeparator = patternSeparator;
+    }
+
+    /**
+     * Return the String used to represent infinity. Almost always left
+     * unchanged.
+     * @return the Infinity string
+     * @stable ICU 2.0
+     */
+     //Bug 4194173 [Richard/GCL]
+
+    public String getInfinity() {
+        return infinity;
+    }
+
+    /**
+     * Set the String used to represent infinity. Almost always left
+     * unchanged.
+     * @param infinity the Infinity String
+     * @stable ICU 2.0
+     */
+    public void setInfinity(String infinity) {
+        this.infinity = infinity;
+    }
+
+    /**
+     * Return the String used to represent NaN. Almost always left
+     * unchanged.
+     * @return the NaN String
+     * @stable ICU 2.0
+     */
+     //Bug 4194173 [Richard/GCL]
+    public String getNaN() {
+        return NaN;
+    }
+
+    /**
+     * Set the String used to represent NaN. Almost always left
+     * unchanged.
+     * @param NaN the NaN String
+     * @stable ICU 2.0
+     */
+    public void setNaN(String NaN) {
+        this.NaN = NaN;
+    }
+
+    /**
+     * Return the character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     * @return the minus sign character
+     * @stable ICU 2.0
+     */
+    public char getMinusSign() {
+        return minusSign;
+    }
+
+    /**
+     * Set the character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     * @param minusSign the minus sign character
+     * @stable ICU 2.0
+     */
+    public void setMinusSign(char minusSign) {
+        this.minusSign = minusSign;
+    }
+
+    /**
+     * Return the string denoting the local currency.
+     * @return the local currency String.
+     * @stable ICU 2.0
+     */
+    public String getCurrencySymbol()
+    {
+        return currencySymbol;
+    }
+
+    /**
+     * Set the string denoting the local currency.
+     * @param currency the local currency String.
+     * @stable ICU 2.0
+     */
+    public void setCurrencySymbol(String currency)
+    {
+        currencySymbol = currency;
+    }
+
+    /**
+     * Return the international string denoting the local currency.
+     * @return the international string denoting the local currency
+     * @stable ICU 2.0
+     */
+    public String getInternationalCurrencySymbol()
+    {
+        return intlCurrencySymbol;
+    }
+
+    /**
+     * Set the international string denoting the local currency.
+     * @param currency the international string denoting the local currency.
+     * @stable ICU 2.0
+     */
+    public void setInternationalCurrencySymbol(String currency)
+    {
+        intlCurrencySymbol = currency;
+    }
+
+    /**
+     * Returns the currency symbol, for JDK 1.4 compatibility only.
+     * ICU clients should use the Currency API directly.
+     * @return the currency used, or null
+     * @stable ICU 3.4
+     */
+    public Currency getCurrency() {
+        return currency;
+    }
+    
+    /**
+     * ICU does not use the DecimalFormatSymbols for the 
+     * currency any more.  This API is present
+     * for API compatibility only.
+     *
+     * This also sets the currency symbol attribute to the currency's symbol
+     * in the DecimalFormatSymbols' locale, and the international currency
+     * symbol attribute to the currency's ISO 4217 currency code.
+     *
+     * @param currency the new currency to be used
+     * @throws NullPointerException if <code>currency</code> is null
+     * @see #setCurrencySymbol
+     * @see #setInternationalCurrencySymbol
+     *
+     * @stable ICU 3.4
+     */
+    public void setCurrency(Currency currency) {
+        if (currency == null) {
+            throw new NullPointerException();
+        }
+        this.currency = currency;
+        intlCurrencySymbol = currency.getCurrencyCode();
+        currencySymbol = currency.getSymbol(requestedLocale);
+    }
+    
+    /**
+     * Return the monetary decimal separator.
+     * @return the monetary decimal separator character
+     * @stable ICU 2.0
+     */
+    public char getMonetaryDecimalSeparator()
+    {
+        return monetarySeparator;
+    }
+
+    /**
+     * Return the monetary decimal separator.
+     * @return the monetary decimal separator character
+     * @stable ICU 3.6
+     */
+    public char getMonetaryGroupingSeparator()
+    {
+        return monetaryGroupingSeparator;
+    }
+    
+    /**
+     * Internal API for NumberFormat
+     * @return String currency pattern string
+     * @internal
+     */
+    String getCurrencyPattern(){
+        return currencyPattern;
+    }
+    /**
+     * Set the monetary decimal separator.
+     * @param sep the monetary decimal separator character
+     * @stable ICU 2.0
+     */
+    public void setMonetaryDecimalSeparator(char sep)
+    {
+        monetarySeparator = sep;
+    }
+    /**
+     * Set the monetary decimal separator.
+     * @param sep the monetary decimal separator character
+     * @stable ICU 3.6
+     */
+    public void setMonetaryGroupingSeparator(char sep)
+    {
+        monetaryGroupingSeparator = sep;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * @return the localized exponent symbol, used in localized patterns
+     * and formatted strings
+     * @see #setExponentSeparator
+     * @stable ICU 2.0
+     */
+    public String getExponentSeparator()
+    {
+        return exponentSeparator;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * @param exp the localized exponent symbol, used in localized patterns
+     * and formatted strings
+     * @see #getExponentSeparator
+     * @stable ICU 2.0
+     */
+    public void setExponentSeparator(String exp)
+    {
+        exponentSeparator = exp;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the localized plus sign.
+     * @return the plus sign, used in localized patterns and formatted
+     * strings
+     * @see #setPlusSign
+     * @see #setMinusSign
+     * @see #getMinusSign
+     * @stable ICU 2.0
+     */
+    public char getPlusSign() {
+        return plusSign;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the localized plus sign.
+     * @param plus the plus sign, used in localized patterns and formatted
+     * strings
+     * @see #getPlusSign
+     * @see #setMinusSign
+     * @see #getMinusSign
+     * @stable ICU 2.0
+     */
+    public void setPlusSign(char plus) {
+        plusSign = plus;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the character used to pad numbers out to a specified width.  This
+     * is not the pad character itself; rather, it is the special pattern
+     * character <em>preceding</em> the pad character.  In the pattern
+     * "*_#,##0", '*' is the pad escape, and '_' is the pad character.
+     * @return the character 
+     * @see #setPadEscape
+     * @see DecimalFormat#getFormatWidth
+     * @see DecimalFormat#getPadPosition
+     * @see DecimalFormat#getPadCharacter
+     * @stable ICU 2.0
+     */
+    public char getPadEscape() {
+        return padEscape;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the character used to pad numbers out to a specified width.  This is
+     * not the pad character itself; rather, it is the special pattern character
+     * <em>preceding</em> the pad character.  In the pattern "*_#,##0", '*' is
+     * the pad escape, and '_' is the pad character.
+     * @see #getPadEscape
+     * @see DecimalFormat#setFormatWidth
+     * @see DecimalFormat#setPadPosition
+     * @see DecimalFormat#setPadCharacter
+     * @stable ICU 2.0
+     */
+    public void setPadEscape(char c) {
+        padEscape = c;
+    }
+
+    /**
+     * Returns the locale for which this object was constructed.
+     * @return the locale for which this object was constructed
+     * @stable ICU 2.0
+     */
+    public Locale getLocale() {
+        return requestedLocale;
+    }
+
+    /**
+     * Returns the locale for which this object was constructed.
+     * @return the locale for which this object was constructed
+     * @stable ICU 3.2
+     */
+    public ULocale getULocale() {
+        return ulocale;
+    }
+
+    /**
+     * Standard override.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        try {
+            return (DecimalFormatSymbols) super.clone();
+            // other fields are bit-copied
+        } catch (CloneNotSupportedException e) {
+            ///CLOVER:OFF
+            throw new IllegalStateException();
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * Override equals.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj) return true;
+        DecimalFormatSymbols other = (DecimalFormatSymbols) obj;
+        return (zeroDigit == other.zeroDigit &&
+        groupingSeparator == other.groupingSeparator &&
+        decimalSeparator == other.decimalSeparator &&
+        percent == other.percent &&
+        perMill == other.perMill &&
+        digit == other.digit &&
+        minusSign == other.minusSign &&
+        patternSeparator == other.patternSeparator &&
+        infinity.equals(other.infinity) &&
+        NaN.equals(other.NaN) &&
+        currencySymbol.equals(other.currencySymbol) &&
+        intlCurrencySymbol.equals(other.intlCurrencySymbol) &&
+        padEscape == other.padEscape && // [NEW]
+        plusSign == other.plusSign && // [NEW]
+        exponentSeparator.equals(other.exponentSeparator) && // [NEW]
+        monetarySeparator == other.monetarySeparator);
+    }
+
+    /**
+     * Override hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+            int result = zeroDigit;
+            result = result * 37 + groupingSeparator;
+            result = result * 37 + decimalSeparator;
+            return result;
+    }
+
+    /**
+     * Initializes the symbols from the LocaleElements resource bundle.
+     * Note: The organization of LocaleElements badly needs to be
+     * cleaned up.
+     */
+    private void initialize( ULocale locale ) {
+        this.requestedLocale = locale.toLocale();
+        this.ulocale = locale;
+
+        /* try the cache first */
+        String[][] data = (String[][]) cachedLocaleData.get(locale);
+        String[] numberElements;
+        if (data == null) {  /* cache miss */
+            data = new String[1][];
+            ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.
+                getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+            data[0] = rb.getStringArray("NumberElements");
+            /* update cache */
+            cachedLocaleData.put(locale, data);
+        }
+        numberElements = data[0];
+        
+        ICUResourceBundle r = (ICUResourceBundle)UResourceBundle.
+            getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        
+        // TODO: Determine actual and valid locale correctly.
+        ULocale uloc = r.getULocale();
+        setLocale(uloc, uloc);
+
+    // {dlf} clean up below now that we have our own resource data
+        decimalSeparator = numberElements[0].charAt(0);
+        groupingSeparator = numberElements[1].charAt(0);
+        // Temporary hack to support old JDK 1.1 resources
+//        patternSeparator = numberElements[2].length() > 0 ?
+//            numberElements[2].charAt(0) : ';';
+        patternSeparator = numberElements[2].charAt(0);
+        percent = numberElements[3].charAt(0);
+        zeroDigit = numberElements[4].charAt(0); //different for Arabic,etc.
+        digit = numberElements[5].charAt(0);
+        minusSign = numberElements[6].charAt(0);
+        
+        // Temporary hack to support JDK versions before 1.1.6 (?)
+//        exponentSeparator = numberElements.length >= 9 ?
+//            numberElements[7] : DecimalFormat.PATTERN_EXPONENT;
+//        perMill = numberElements.length >= 9 ?
+//            numberElements[8].charAt(0) : '\u2030';
+//        infinity  = numberElements.length >= 10 ?
+//            numberElements[9] : "\u221e";
+//        NaN = numberElements.length >= 11 ?
+//            numberElements[10] : "\ufffd";
+        exponentSeparator = numberElements[7];
+        perMill = numberElements[8].charAt(0);
+        infinity = numberElements[9];
+        NaN = numberElements[10];
+        
+        plusSign  =numberElements[11].charAt(0);
+        padEscape = DecimalFormat.PATTERN_PAD_ESCAPE;
+        sigDigit  = DecimalFormat.PATTERN_SIGNIFICANT_DIGIT;
+        
+        // Obtain currency data from the currency API.  This is strictly
+        // for backward compatibility; we don't use DecimalFormatSymbols
+        // for currency data anymore.
+        String currname = null;
+        currency = Currency.getInstance(locale);
+        if (currency != null) {
+            intlCurrencySymbol = currency.getCurrencyCode();
+            boolean[] isChoiceFormat = new boolean[1];
+            currname = currency.getName(locale,
+                                    Currency.SYMBOL_NAME,
+                                    isChoiceFormat);
+            // If this is a ChoiceFormat currency, then format an
+            // arbitrary value; pick something != 1; more common.
+            currencySymbol = isChoiceFormat[0]
+                ? new ChoiceFormat(currname).format(2.0)
+                : currname;
+        } else {
+            intlCurrencySymbol = "XXX";
+            currencySymbol = "\u00A4"; // 'OX' currency symbol
+        }
+        // If there is a currency decimal, use it.
+        monetarySeparator = decimalSeparator;
+        monetaryGroupingSeparator = groupingSeparator;
+        Currency curr = Currency.getInstance(locale);
+        if(curr!=null){
+            String currencyCode = curr.getCurrencyCode();
+            if(currencyCode != null) {
+                /* An explicit currency was requested */
+                ICUResourceBundle resource = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+                ICUResourceBundle currencyRes = resource.getWithFallback("Currencies");
+                try{
+                    currencyRes = currencyRes.getWithFallback(currencyCode);
+                    if(currencyRes.getSize()>2) {
+                        currencyRes = (ICUResourceBundle)currencyRes.get(2);
+                        currencyPattern = currencyRes.getString(0);
+                        monetarySeparator = currencyRes.getString(1).charAt(0);
+                        monetaryGroupingSeparator = currencyRes.getString(2).charAt(0);
+                    }
+                }catch(MissingResourceException ex){
+                    /* else An explicit currency was requested and is unknown or locale data is malformed. */
+                    /* decimal format API will get the correct value later on. */
+                }
+            }
+            /* else no currency keyword used. */
+        }
+        //monetarySeparator = numberElements[11].charAt(0);
+    }
+
+    /**
+     * Read the default serializable fields, then if <code>serialVersionOnStream</code>
+     * is less than 1, initialize <code>monetarySeparator</code> to be
+     * the same as <code>decimalSeparator</code> and <code>exponential</code>
+     * to be 'E'.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+
+        // TODO: it looks to me {dlf} that the serialization code was never updated
+        // to handle the actual/valid ulocale fields.
+
+        stream.defaultReadObject();
+        ///CLOVER:OFF
+        // we don't have data for these old serialized forms any more
+        if (serialVersionOnStream < 1) {
+            // Didn't have monetarySeparator or exponential field;
+            // use defaults.
+            monetarySeparator = decimalSeparator;
+            exponential = 'E';
+        }
+        if (serialVersionOnStream < 2) {
+            padEscape = DecimalFormat.PATTERN_PAD_ESCAPE;
+            plusSign = DecimalFormat.PATTERN_PLUS_SIGN;
+            exponentSeparator = String.valueOf(exponential);
+            // Although we read the exponential field on stream to create the
+            // exponentSeparator, we don't do the reverse, since scientific
+            // notation isn't supported by the old classes, even though the
+            // symbol is there.
+        }
+        ///CLOVER:ON
+        if (serialVersionOnStream < 3) {
+            // Resurrected objects from old streams will have no
+            // locale.  There is no 100% fix for this.  A
+            // 90% fix is to construct a mapping of data back to
+            // locale, perhaps a hash of all our members.  This is
+            // expensive and doesn't seem worth it.
+            requestedLocale = Locale.getDefault();
+        }
+        if (serialVersionOnStream < 4) {
+            // use same default behavior as for versions with no Locale
+            ulocale = ULocale.forLocale(requestedLocale);
+        }
+        if (serialVersionOnStream < 5) {
+            // use the same one for groupingSeparator
+            monetaryGroupingSeparator = groupingSeparator;
+        }
+        serialVersionOnStream = currentSerialVersion;
+
+    // recreate
+    currency = Currency.getInstance(intlCurrencySymbol);
+    }
+
+    /**
+     * Character used for zero.
+     *
+     * @serial
+     * @see #getZeroDigit
+     */
+    private  char    zeroDigit;
+
+    /**
+     * Character used for thousands separator.
+     *
+     * @serial
+     * @see #getGroupingSeparator
+     */
+    private  char    groupingSeparator;
+
+    /**
+     * Character used for decimal sign.
+     *
+     * @serial
+     * @see #getDecimalSeparator
+     */
+    private  char    decimalSeparator;
+
+    /**
+     * Character used for mille percent sign.
+     *
+     * @serial
+     * @see #getPerMill
+     */
+    private  char    perMill;
+
+    /**
+     * Character used for percent sign.
+     * @serial
+     * @see #getPercent
+     */
+    private  char    percent;
+
+    /**
+     * Character used for a digit in a pattern.
+     *
+     * @serial
+     * @see #getDigit
+     */
+    private  char    digit;
+
+    /**
+     * Character used for a significant digit in a pattern.
+     *
+     * @serial
+     * @see #getSignificantDigit
+     */
+    private  char    sigDigit;
+
+    /**
+     * Character used to separate positive and negative subpatterns
+     * in a pattern.
+     *
+     * @serial
+     * @see #getPatternSeparator
+     */
+    private  char    patternSeparator;
+
+    /**
+     * Character used to represent infinity.
+     * @serial
+     * @see #getInfinity
+     */
+    private  String  infinity;
+
+    /**
+     * Character used to represent NaN.
+     * @serial
+     * @see #getNaN
+     */
+    private  String  NaN;
+
+    /**
+     * Character used to represent minus sign.
+     * @serial
+     * @see #getMinusSign
+     */
+    private  char    minusSign;
+
+    /**
+     * String denoting the local currency, e.g. "$".
+     * @serial
+     * @see #getCurrencySymbol
+     */
+    private  String  currencySymbol;
+
+    /**
+     * International string denoting the local currency, e.g. "USD".
+     * @serial
+     * @see #getInternationalCurrencySymbol
+     */
+    private  String  intlCurrencySymbol;
+
+    /**
+     * The decimal separator used when formatting currency values.
+     * @serial
+     * @see #getMonetaryDecimalSeparator
+     */
+    private  char    monetarySeparator; // Field new in JDK 1.1.6
+
+    /**
+     * The decimal separator used when formatting currency values.
+     * @serial
+     * @see #getMonetaryGroupingSeparator
+     */
+    private  char    monetaryGroupingSeparator; // Field new in JDK 1.1.6
+
+    /**
+     * The character used to distinguish the exponent in a number formatted
+     * in exponential notation, e.g. 'E' for a number such as "1.23E45".
+     * <p>
+     * Note that this field has been superseded by <code>exponentSeparator</code>.
+     * It is retained for backward compatibility.
+     *
+     * @serial
+     */
+    private  char    exponential;       // Field new in JDK 1.1.6
+
+    /**
+     * The string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * <p>
+     * Note that this supersedes the <code>exponential</code> field.
+     *
+     * @serial
+     * @since AlphaWorks
+     */
+    private String exponentSeparator;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to indicate a padding character in a format,
+     * e.g., '*' in a pattern such as "$*_#,##0.00".
+     * @serial
+     * @since AlphaWorks
+     */
+    private char padEscape;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to indicate a plus sign.
+     * @serial
+     * @since AlphaWorks
+     */
+    private char plusSign;
+
+    /**
+     * The locale for which this object was constructed.  Set to the
+     * default locale for objects resurrected from old streams.
+     * @since ICU 2.2
+     */
+    private Locale requestedLocale;
+
+    /**
+     * The requested ULocale.  We keep the old locale for serialization compatibility.
+     * @since IDU 3.2
+     */
+    private ULocale ulocale;
+
+    // Proclaim JDK 1.1 FCS compatibility
+    private static final long serialVersionUID = 5772796243397350300L;
+
+    // The internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.5
+    // - 1 for version from JDK 1.1.6, which includes two new fields:
+    //     monetarySeparator and exponential.
+    // - 2 for version from AlphaWorks, which includes 3 new fields:
+    //     padEscape, exponentSeparator, and plusSign.
+    // - 3 for ICU 2.2, which includes the locale field
+    // - 4 for ICU 3.2, which includes the ULocale field
+    // - 5 for ICU 3.6, which includes the monetaryGroupingSeparator field
+    private static final int currentSerialVersion = 5;
+    
+    /**
+     * Describes the version of <code>DecimalFormatSymbols</code> present on the stream.
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (or uninitialized): versions prior to JDK 1.1.6.
+     *
+     * <li><b>1</b>: Versions written by JDK 1.1.6 or later, which includes
+     *      two new fields: <code>monetarySeparator</code> and <code>exponential</code>.
+     * <li><b>2</b>: Version for AlphaWorks.  Adds padEscape, exponentSeparator,
+     *      and plusSign.
+     * </ul>
+     * When streaming out a <code>DecimalFormatSymbols</code>, the most recent format
+     * (corresponding to the highest allowable <code>serialVersionOnStream</code>)
+     * is always written.
+     *
+     * @serial
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    /**
+     * cache to hold the NumberElements of a Locale.
+     */
+    private static final Hashtable cachedLocaleData = new Hashtable(3);
+    
+    /**
+     * 
+     */
+    private String  currencyPattern = null;
+    
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // not serialized, reconstructed from intlCurrencyCode
+    private transient Currency currency;
+
+    // -------- END ULocale boilerplate --------
+}
diff --git a/src/com/ibm/icu/text/DecompData.java b/src/com/ibm/icu/text/DecompData.java
new file mode 100644
index 0000000..6ab7c47
--- /dev/null
+++ b/src/com/ibm/icu/text/DecompData.java
@@ -0,0 +1,745 @@
+/*
+************************************************************************
+*   Copyright (c) 1997-2000, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+************************************************************************
+* > THIS FILE WAS MACHINE GENERATED <
+* >       DO NOT EDIT BY HAND       <
+* >      RUN TOOL TO REGENERATE     <
+* Tool: com.ibm.icu.text.Normalizer
+* Creation date: Tue Jul 18 11:05:28 PDT 2000
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.util.*;
+
+class DecompData {
+    static final int MAX_CANONICAL = 21754;
+    static final int MAX_COMPAT = 11177;
+    static final int DECOMP_MASK = 32767;
+    static final int DECOMP_RECURSE = 32768;
+    static final short BASE = 0;
+
+    static final CompactCharArray offsets = new CompactCharArray(
+        "\000\u0800\uA5A5\005\000 @`\u0080\u00A0\u00C0\u00E0\000\u0100\u0120\u0140"+
+        "\u0160\u0180\000\000\000\u01A0\u01C0\u01E0\000\000\u0200\u0220\u0240\u0260"+
+        "\u0280\u02A0\u02C0\u02E0\u0300\u0320\000\000\u0340\u0360\uA5A5\004\000"+
+        "\u0380\uA5A5\004\000\u03A0\000\u03C0\000\000\u03E0\uA5A5\022\000\u0400"+
+        "\u0420\000\000\000\u0440\000\000\u0460\u0480\uA5A5\007\000\u04A0\000\u04C0"+
+        "\000\u04E0\000\000\000\u0500\000\000\000\u0520\000\000\000\u0540\000\000"+
+        "\000\u0560\000\000\u0580\000\000\000\u05A0\u05C0\000\u05E0\000\u0600\u0620"+
+        "\u0640\u0660\000\000\000\u0680\uA5A5n\000\u06A0\u06C0\u06E0\u0700\u0720"+
+        "\u0740\u0760\u0780\u07A0\u07C0\u07E0\u0800\u0820\u0840\u0860\u0880\u08A0"+
+        "\u08C0\u08E0\u0900\u0920\u0940\000\000\u0960\u0980\u09A0\u09C0\u09E0\u0A00"+
+        "\u0A20\000\u0A40\u0A60\u0A80\u0AA0\u0AC0\u0AE0\000\u0B00\000\u0B20\uA5A5"+
+        "\011\000\u0B40\u0B60\u0B80\u0BA0\u0BC0\uA5A5L\000\u0BE0\000\000\u0C00"+
+        "\u0C20\u0C40\u0C60\u0C80\u0CA0\u0CC0\u0CE0\000\u0D00\u0D20\u0D40\u0D60"+
+        "\u0D80\u0DA0\u0DC0\u0DE0\000\u0E00\u0E20\u0E40\u0E60\000\000\000\u0E80"+
+        "\u0EA0\u0EC0\u0EE0\u0F00\u0F20\u0F40\u0F60\u0F80\u0FA0\u0FC0\u0FE0\u1000"+
+        "\u1020\u1040\u1060\uA5A5\u0628\000\u1080\u10A0\u10C0\u10E0\u1100\u1120"+
+        "\u1140\u1160\u1180\u11A0\uA5A5\006\000\u11C0\u11E0\u1200\u1220\u1240\u1260"+
+        "\u1280\u12A0\u12C0\u12E0\u1300\u1320\u1340\u1360\u1380\u13A0\u13C0\u13E0"+
+        "\u1400\u1420\u1440\u1460\u1480\u14A0\000\u14C0\u14E0\u1500\u1520\u1540"+
+        "\u1560\u1580\u15A0\u15C0\u15E0\u1600\u1620\u1640\u1660\u1680"
+        ,
+        "\000\u16A0\uA5A5 \000\005\uA5A5\007\000\012\000\021\uA5A5\004\000\026"+
+        "\000\000\035!&-\000\00029=\000CO[\000\u2BAE\u2BB6\u2BBE\u2BC6\u2BCE\u2BD6"+
+        "\000\u2BDE\u2BE6\u2BEE\u2BF6\u2BFE\u2C06\u2C0E\u2C16\u2C1E\000\u2C26\u2C2E"+
+        "\u2C36\u2C3E\u2C46\u2C4E\000\000\u2C56\u2C5E\u2C66\u2C6E\u2C76\000\000"+
+        "\u2C7E\u2C86\u2C8E\u2C96\u2C9E\u2CA6\000\u2CAE\u2CB6\u2CBE\u2CC6\u2CCE"+
+        "\u2CD6\u2CDE\u2CE6\u2CEE\000\u2CF6\u2CFE\u2D06\u2D0E\u2D16\u2D1E\000\000"+
+        "\u2D26\u2D2E\u2D36\u2D3E\u2D46\000\u2D4E\u2D56\u2D5E\u2D66\u2D6E\u2D76"+
+        "\u2D7E\u2D86\u2D8E\u2D96\u2D9E\u2DA6\u2DAE\u2DB6\u2DBE\u2DC6\u2DCE\000"+
+        "\000\u2DD6\u2DDE\u2DE6\u2DEE\u2DF6\u2DFE\u2E06\u2E0E\u2E16\u2E1E\u2E26"+
+        "\u2E2E\u2E36\u2E3E\u2E46\u2E4E\u2E56\u2E5E\u2E66\u2E6E\000\000\u2E76\u2E7E"+
+        "\u2E86\u2E8E\u2E96\u2E9E\u2EA6\u2EAE\u2EB6\000fn\u2EBE\u2EC6\u2ECE\u2ED6"+
+        "\000\u2EDE\u2EE6\u2EEE\u2EF6\u2EFE\u2F06v~\000\000\u2F0E\u2F16\u2F1E\u2F26"+
+        "\u2F2E\u2F36\u0086\000\000\u2F3E\u2F46\u2F4E\u2F56\u2F5E\u2F66\000\000"+
+        "\u2F6E\u2F76\u2F7E\u2F86\u2F8E\u2F96\u2F9E\u2FA6\u2FAE\u2FB6\u2FBE\u2FC6"+
+        "\u2FCE\u2FD6\u2FDE\u2FE6\u2FEE\u2FF6\000\000\u2FFE\u3006\u300E\u3016\u301E"+
+        "\u3026\u302E\u3036\u303E\u3046\u304E\u3056\u305E\u3066\u306E\u3076\u307E"+
+        "\u3086\u308E\u3096\u309E\u30A6\u30AE\u008D\u30B6\u30BE\uA5A5\015\000\u30C6"+
+        "\u30CE\uA5A5\023\000\u0093\u009F\u00AB\u00B6\u00BE\u00C6\u00CE\u00D6\u00DE"+
+        "\u30D6\u30DE\u30E6\u30EE\u30F6\u30FE\u3106\u310E\u3117\u3123\u312F\u313B"+
+        "\u3147\u3153\u315F\u316B\000\u3177\u3183\u318F\u319B\u31A6\u31AE\000\000"+
+        "\u31B6\u31BE\u31C6\u31CE\u31D6\u31DE\u31E7\u31F3\u31FE\u3206\u320E\u0092"+
+        "\u009E\u00AA\u3216\u321E\000\000\u3226\u322E\u3237\u3243\u324E\u3256\u325E"+
+        "\u3266\u326E\u3276\u327E\u3286\u328E\u3296\u329E\u32A6\u32AE\u32B6\u32BE"+
+        "\u32C6\u32CE\u32D6\u32DE\u32E6\u32EE\u32F6\u32FE\u3306\u330E\u3316\u331E"+
+        "\u3326\u332E\u3336\u333E\u3346\000\000\u334E\u3356\uA5A5\006\000\u335E"+
+        "\u3366\u336E\u3376\u337F\u338B\u3397\u33A3\u33AE\u33B6\u33BF\u33CB\u33D6"+
+        "\u33DE\uA5A5\034\000\u00E5\u00E9q\u00ED\u00F1\u00F5\u00F9\u00FD\u0101"+
+        "\uA5A5\037\000\u0106\u010E\u0116\u011E\u0126\u012E\000\000\u0135}\u008D"+
+        "\u0139\u013D\uA5A5\033\000\u33E5\u33E9\000\u33ED\u33F2\uA5A5/\000\u33F9"+
+        "\uA5A5\005\000\u0142\000\000\000\u33FD\uA5A5\005\000&\uB402\u340A\u3411"+
+        "\u3416\u341E\u3426\000\u342E\000\u3436\u343E\u3447\uA5A5\031\000\u3452"+
+        "\u345A\u3462\u346A\u3472\u347A\u3483\uA5A5\031\000\u348E\u3496\u349E\u34A6"+
+        "\u34AE\000\u0149\u014D\u0151\uB4B6\uB4BE\u0155\u0159\uA5A5\031\000\u015D"+
+        "\u0161\u0165\uA5A5\015\000\u34C6\u34CE\000\u34D6\000\000\000\u34DE\uA5A5"+
+        "\004\000\u34E6\u34EE\u34F6\uA5A5\012\000\u34FE\uA5A5\037\000\u3506\uA5A5"+
+        "\026\000\u350E\u3516\000\u351E\000\000\000\u3526\uA5A5\004\000\u352E\u3536"+
+        "\u353E\uA5A5\027\000\u3546\u354E\uA5A5\011\000\u3556\u355E\uA5A5\015\000"+
+        "\u3566\u356E\u3576\u357E\000\000\u3586\u358E\000\000\u3596\u359E\u35A6"+
+        "\u35AE\u35B6\u35BE\000\000\u35C6\u35CE\u35D6\u35DE\u35E6\u35EE\000\000"+
+        "\u35F6\u35FE\u3606\u360E\u3616\u361E\u3626\u362E\u3636\u363E\u3646\u364E"+
+        "\000\000\u3656\u365E\uA5A5\015\000\u016A\uA5A5\032\000\u3666\u366E\u3676"+
+        "\u367E\u3686\uA5A5.\000\u0172\u017A\u0182\u018A\uA5A5\007\000\u368E\000"+
+        "\u3696\uA5A5\020\000\u369E\uA5A5\025\000\u36A6\uA5A5\007\000\u36AE\000"+
+        "\000\u36B6\uA5A5#\000\u36BE\u36C6\u36CE\u36D6\u36DE\u36E6\u36EE\u36F6"+
+        "\uA5A5\013\000\u36FE\u3706\uA5A5\017\000\u370E\u3716\000\u371E\uA5A5\023"+
+        "\000\u3726\000\000\u372E\uA5A5\042\000\u3736\u373E\u3746\000\000\u374E"+
+        "\uA5A5\011\000\u3756\000\000\u375E\u3766\uA5A5\017\000\u376E\u3776\uA5A5"+
+        "\026\000\u377E\uA5A5\025\000\u3786\u378E\u3796\uA5A5\033\000\u379E\uA5A5"+
+        "\027\000\u37A6\uA5A5\006\000\u37AE\u37B6\000\u37BE\u37C7\uA5A5\036\000"+
+        "\u37D2\u37DA\u37E2\uA5A5-\000\u37EA\000\u37F2\u37FB\u3806\uA5A5\024\000"+
+        "\u0192\uA5A5\037\000\u019A\uA5A5(\000\u01A2\u01AA\uA5A5\016\000\u01B1"+
+        "\uA5A5\026\000\u380E\uA5A5\011\000\u3816\uA5A5\004\000\u381E\uA5A5\004"+
+        "\000\u3826\uA5A5\004\000\u382E\uA5A5\014\000\u3836\uA5A5\011\000\u383E"+
+        "\000\u3846\u384E\u01B7\u3856\u01C3\uA5A5\007\000\u385E\uA5A5\021\000\u3866"+
+        "\uA5A5\011\000\u386E\uA5A5\004\000\u3876\uA5A5\004\000\u387E\uA5A5\004"+
+        "\000\u3886\uA5A5\014\000\u388E\uA5A5\014\000\u3896\uA5A5\031\000\u389E"+
+        "\u38A6\u38AE\u38B6\u38BE\u38C6\u38CE\u38D6\u38DF\u38EB\u38F6\u38FE\u3906"+
+        "\u390E\u3916\u391E\u3926\u392E\u3936\u393E\u3947\u3953\u395F\u396B\u3976"+
+        "\u397E\u3986\u398E\u3997\u39A3\u39AE\u39B6\u39BE\u39C6\u39CE\u39D6\u39DE"+
+        "\u39E6\u39EE\u39F6\u39FE\u3A06\u3A0E\u3A16\u3A1E\u3A26\u3A2F\u3A3B\u3A46"+
+        "\u3A4E\u3A56\u3A5E\u3A66\u3A6E\u3A76\u3A7E\u3A87\u3A93\u3A9E\u3AA6\u3AAE"+
+        "\u3AB6\u3ABE\u3AC6\u3ACE\u3AD6\u3ADE\u3AE6\u3AEE\u3AF6\u3AFE\u3B06\u3B0E"+
+        "\u3B16\u3B1E\u3B26\u3B2F\u3B3B\u3B47\u3B53\u3B5F\u3B6B\u3B77\u3B83\u3B8E"+
+        "\u3B96\u3B9E\u3BA6\u3BAE\u3BB6\u3BBE\u3BC6\u3BCF\u3BDB\u3BE6\u3BEE\u3BF6"+
+        "\u3BFE\u3C06\u3C0E\u3C17\u3C23\u3C2F\u3C3B\u3C47\u3C53\u3C5E\u3C66\u3C6E"+
+        "\u3C76\u3C7E\u3C86\u3C8E\u3C96\u3C9E\u3CA6\u3CAE\u3CB6\u3CBE\u3CC6\u3CCF"+
+        "\u3CDB\u3CE7\u3CF3\u3CFE\u3D06\u3D0E\u3D16\u3D1E\u3D26\u3D2E\u3D36\u3D3E"+
+        "\u3D46\u3D4E\u3D56\u3D5E\u3D66\u3D6E\u3D76\u3D7E\u3D86\u3D8E\u3D96\u3D9E"+
+        "\u3DA6\u3DAE\u3DB6\u3DBE\u3DC6\u3DCE\u3DD6\u3DDE\u3DE6\u01CE\uBDEE\uA5A5"+
+        "\004\000\u3DF6\u3DFE\u3E06\u3E0E\u3E17\u3E23\u3E2F\u3E3B\u3E47\u3E53\u3E5F"+
+        "\u3E6B\u3E77\u3E83\u3E8F\u3E9B\u3EA7\u3EB3\u3EBF\u3ECB\u3ED7\u3EE3\u3EEF"+
+        "\u3EFB\u3F06\u3F0E\u3F16\u3F1E\u3F26\u3F2E\u3F37\u3F43\u3F4F\u3F5B\u3F67"+
+        "\u3F73\u3F7F\u3F8B\u3F97\u3FA3\u3FAE\u3FB6\u3FBE\u3FC6\u3FCE\u3FD6\u3FDE"+
+        "\u3FE6\u3FEF\u3FFB\u4007\u4013\u401F\u402B\u4037\u4043\u404F\u405B\u4067"+
+        "\u4073\u407F\u408B\u4097\u40A3\u40AF\u40BB\u40C7\u40D3\u40DE\u40E6\u40EE"+
+        "\u40F6\u40FF\u410B\u4117\u4123\u412F\u413B\u4147\u4153\u415F\u416B\u4176"+
+        "\u417E\u4186\u418E\u4196\u419E\u41A6\u41AE\uA5A5\006\000\u41B6\u41BE\u41C7"+
+        "\u41D3\u41DF\u41EB\u41F7\u4203\u420E\u4216\u421F\u422B\u4237\u4243\u424F"+
+        "\u425B\u4266\u426E\u4277\u4283\u428F\u429B\000\000\u42A6\u42AE\u42B7\u42C3"+
+        "\u42CF\u42DB\000\000\u42E6\u42EE\u42F7\u4303\u430F\u431B\u4327\u4333\u433E"+
+        "\u4346\u434F\u435B\u4367\u4373\u437F\u438B\u4396\u439E\u43A7\u43B3\u43BF"+
+        "\u43CB\u43D7\u43E3\u43EE\u43F6\u43FF\u440B\u4417\u4423\u442F\u443B\u4446"+
+        "\u444E\u4457\u4463\u446F\u447B\000\000\u4486\u448E\u4497\u44A3\u44AF\u44BB"+
+        "\000\000\u44C6\u44CE\u44D7\u44E3\u44EF\u44FB\u4507\u4513\000\u451E\000"+
+        "\u4527\000\u4533\000\u453F\u454A\u4552\u455B\u4567\u4573\u457F\u458B\u4597"+
+        "\u45A2\u45AA\u45B3\u45BF\u45CB\u45D7\u45E3\u45EF\u45FA\u4602\u460A\u4612"+
+        "\u461A\u4622\u462A\u4632\u463A\u4642\u464A\u4652\u465A\u4662\000\000\u466B"+
+        "\u4677\u4680\u4694\u46A8\u46BC\u46D0\u46E4\u46FB\u4707\u4710\u4724\u4738"+
+        "\u474C\u4760\u4774\u478B\u4797\u47A0\u47B4\u47C8\u47DC\u47F0\u4804\u481B"+
+        "\u4827\u4830\u4844\u4858\u486C\u4880\u4894\u48AB\u48B7\u48C0\u48D4\u48E8"+
+        "\u48FC\u4910\u4924\u493B\u4947\u4950\u4964\u4978\u498C\u49A0\u49B4\u49CA"+
+        "\u49D2\u49DB\u49E6\u49EF\000\u49FA\u4A03\u4A0E\u4A16\u4A1E\u4A26\u4A2E"+
+        "\u01D6\u4A35\u01D6\u01DE\uCA3A\u4A43\u4A4E\u4A57\000\u4A62\u4A6B\u4A76"+
+        "\u4A7E\u4A86\u4A8E\u4A96\uCA9E\uCAA6\uCAAE\u4AB6\u4ABE\u4AC7\u4AD3\000"+
+        "\000\u4ADE\u4AE7\u4AF2\u4AFA\u4B02\u4B0A\000\uCB12\uCB1A\uCB22\u4B2A\u4B32"+
+        "\u4B3B\u4B47\u4B52\u4B5A\u4B62\u4B6B\u4B76\u4B7E\u4B86\u4B8E\u4B96\uCB9E"+
+        "\uCBA6\u4BAD\000\000\u4BB3\u4BBE\u4BC7\000\u4BD2\u4BDB\u4BE6\u4BEE\u4BF6"+
+        "\u4BFE\u4C06\uCC0D\u01E6\000\uCC11\uCC15\uA5A5\011\005\uA5A5\006\000\u01ED"+
+        "\uA5A5\005\000\u01F2\uA5A5\014\000\u01F9\u01FE\u01FB\uA5A5\010\000\005"+
+        "\000\000\000\u0206\u020F\000\u021A\u0223\uA5A5\004\000\u022E\000\u0236"+
+        "\uA5A5\011\000\u023E\u0246\uA5A5&\000\u024D\000\000\000I\u0251\u0255\u0259"+
+        "\u025D\u0261\u0265\u0269\u026D\u0271\u0275\u0089\u024D9\035!I\u0251\u0255"+
+        "\u0259\u025D\u0261\u0265\u0269\u026D\u0271\u0275\uA5A5\031\000\u027A\uA5A5"+
+        "\027\000\u0283\u028F\u0299\u029E\000\u02A7\u02B3\u02BD\000\u02C2\u02C9"+
+        "\u02CD\u02CD\u02CD\u00E5\u02D1eeu}\000\u00CD\u02D6\000\000\u02DD\u02E1"+
+        "\u0279\u0279\u0279\000\000\u02E6\u02EF\u02FA\000\u0095\000\u4C19\000\u0095"+
+        "\000\u4C1D\u4C22\u0301\u0299\000\u0305\u02F1\u02C5\000\u02E9=\u0309\u030D"+
+        "\u0311\u0315m\uA5A5\031\000\u031B\u0327\u0333\u033F\u034B\u0357\u0363"+
+        "\u036F\u037B\u0387\u0393\u039FBe\u03AA\u03B3\u03BE\u03C1\u03C6\u03CF\u03D8"+
+        "\u03EE\u03F1\u03F6\u03FFu\u0299\u0091\u02E9m\u040A\u0413\u041E\u0421\u0426"+
+        "\u042F\u0438\u044E\u0139\u0456\u045F}\u0289\u00A9\u0469\uA5A5\032\000"+
+        "\u4C2A\u4C32\uA5A5\022\000\u4C3A\uA5A5\036\000\u4C42\u4C4A\u4C52\uA5A5"+
+        "\024\000\u4C5A\uA5A5\004\000\u4C62\000\000\u4C6A\uA5A5\027\000\u4C72\000"+
+        "\u4C7A\uA5A5\005\000\u046E\u0477\000\u0482\u048B\uA5A5\020\000\u4C82\000"+
+        "\000\u4C8A\000\000\u4C92\000\u4C9A\uA5A5\026\000\u4CA2\000\u4CAA\uA5A5"+
+        "\012\000\u4CB2\u4CBA\u4CC2\u4CCA\u4CD2\000\000\u4CDA\u4CE2\000\000\u4CEA"+
+        "\u4CF2\uA5A5\006\000\u4CFA\u4D02\000\000\u4D0A\u4D12\000\000\u4D1A\u4D22"+
+        "\uA5A5\042\000\u4D2A\u4D32\u4D3A\u4D42\uA5A5\020\000\u4D4A\u4D52\u4D5A"+
+        "\u4D62\uA5A5\006\000\u4D6A\u4D72\u4D7A\u4D82\uA5A5\033\000\u4D89\u4D8D"+
+        "\uA5A5\025\0009\035!I\u0251\u0255\u0259\u025D\u0261\u0496\u049E\u04A6"+
+        "\u04AE\u04B6\u04BE\u04C6\u04CE\u04D6\u04DE\u04E6\u04EF\u04FB\u0507\u0513"+
+        "\u051F\u052B\u0537\u0543\u054F\u0558\u056C\u0580\u0594\u05A8\u05BC\u05D0"+
+        "\u05E4\u05F8\u060C\u0620\u0636\u063E\u0646\u064E\u0656\u065E\u0666\u066E"+
+        "\u0676\u067F\u068B\u0697\u06A3\u06AF\u06BB\u06C7\u06D3\u06DF\u06EB\u06F7"+
+        "\u0703\u070F\u071B\u0727\u0733\u073F\u074B\u0757\u0763\u076F\u077B\u0787"+
+        "\u0793\u079F\u07AB\u07B7\u07C3\u07CF\u07DB\u07E7\u07F3\u07FF\u080B\u0817"+
+        "\u0823\u082F\u0839\u0301\u0299\u0091\u02F1\u02C5\u083D\u02CDei\u0841u"+
+        "\u02E9\u00CD\u0845\u02DD\u02E1\u0279\u02E5\u02ED\u0849\u03C1\u084D\u03F1"+
+        "\u0851\u0095\021\u0711\u0289\u00A9\u0305\u0741\u02C9\u00E5mq\u077D}\u0469"+
+        "\u0089=\u07B9\u07C5\u00ED\u008D\u07E9\u02B9\u0421\u00FD\u0139\u0101\u00A1"+
+        "\u024D\uA5A54\000\u0855\uA5A5\023\000\u0859\uA5A5\014\000\u085D\u0861"+
+        "\u0865\u0869\u086D\u0871\u0875\u0879\u087D\u0881\u0885\u0889\u088D\u0891"+
+        "\u0895\u0899\u089D\u08A1\u08A5\u08A9\u08AD\u08B1\u08B5\u08B9\u08BD\u08C1"+
+        "\u08C5\u08C9\u08CD\u08D1\u08D5\u08D9\u08DD\u08E1\u08E5\u08E9\u08ED\u08F1"+
+        "\u08F5\u08F9\u08FD\u0901\u0905\u0909\u090D\u0911\u0915\u0919\u091D\u0921"+
+        "\u0925\u0929\u092D\u0931\u0935\u0939\u093D\u0941\u0945\u0949\u094D\u0951"+
+        "\u0955\u0959\u095D\u0961\u0965\u0969\u096D\u0971\u0975\u0979\u097D\u0981"+
+        "\u0985\u0989\u098D\u0991\u0995\u0999\u099D\u09A1\u09A5\u09A9\u09AD\u09B1"+
+        "\u09B5\u09B9\u09BD\u09C1\u09C5\u09C9\u09CD\u09D1\u09D5\u09D9\u09DD\u09E1"+
+        "\u09E5\u09E9\u09ED\u09F1\u09F5\u09F9\u09FD\u0A01\u0A05\u0A09\u0A0D\u0A11"+
+        "\u0A15\u0A19\u0A1D\u0A21\u0A25\u0A29\u0A2D\u0A31\u0A35\u0A39\u0A3D\u0A41"+
+        "\u0A45\u0A49\u0A4D\u0A51\u0A55\u0A59\u0A5D\u0A61\u0A65\u0A69\u0A6D\u0A71"+
+        "\u0A75\u0A79\u0A7D\u0A81\u0A85\u0A89\u0A8D\u0A91\u0A95\u0A99\u0A9D\u0AA1"+
+        "\u0AA5\u0AA9\u0AAD\u0AB1\u0AB5\u0AB9\u0ABD\u0AC1\u0AC5\u0AC9\u0ACD\u0AD1"+
+        "\u0AD5\u0AD9\u0ADD\u0AE1\u0AE5\u0AE9\u0AED\u0AF1\u0AF5\u0AF9\u0AFD\u0B01"+
+        "\u0B05\u0B09\u0B0D\u0B11\u0B15\u0B19\u0B1D\u0B21\u0B25\u0B29\u0B2D\u0B31"+
+        "\u0B35\u0B39\u0B3D\u0B41\u0B45\u0B49\u0B4D\u0B51\u0B55\u0B59\u0B5D\u0B61"+
+        "\u0B65\u0B69\u0B6D\u0B71\u0B75\u0B79\u0B7D\u0B81\u0B85\u0B89\u0B8D\u0B91"+
+        "\u0B95\u0B99\u0B9D\u0BA1\u0BA5\u0BA9\u0BAD\u0BB1\uA5A5\012\000\005\uA5A5"+
+        "5\000\u0BB5\000\u08B9\u0BB9\u0BBD\uA5A5\021\000\u4D92\000\u4D9A\000\u4DA2"+
+        "\000\u4DAA\000\u4DB2\000\u4DBA\000\u4DC2\000\u4DCA\000\u4DD2\000\u4DDA"+
+        "\000\u4DE2\000\u4DEA\000\000\u4DF2\000\u4DFA\000\u4E02\uA5A5\006\000\u4E0A"+
+        "\u4E12\000\u4E1A\u4E22\000\u4E2A\u4E32\000\u4E3A\u4E42\000\u4E4A\u4E52"+
+        "\uA5A5\026\000\u4E5A\uA5A5\006\000\u0BC2\u0BCA\000\u4E62\uA5A5\015\000"+
+        "\u4E6A\000\u4E72\000\u4E7A\000\u4E82\000\u4E8A\000\u4E92\000\u4E9A\000"+
+        "\u4EA2\000\u4EAA\000\u4EB2\000\u4EBA\000\u4EC2\000\000\u4ECA\000\u4ED2"+
+        "\000\u4EDA\uA5A5\006\000\u4EE2\u4EEA\000\u4EF2\u4EFA\000\u4F02\u4F0A\000"+
+        "\u4F12\u4F1A\000\u4F22\u4F2A\uA5A5\026\000\u4F32\000\000\u4F3A\u4F42\u4F4A"+
+        "\u4F52\000\000\000\u4F5A\uA5A5\022\000\u0BD1\u0BD5\u0BD9\u0BDD\u0BE1\u0BE5"+
+        "\u0BE9\u0BED\u0BF1\u0BF5\u0BF9\u0BFD\u0C01\u0C05\u0C09\u0C0D\u0C11\u0C15"+
+        "\u0C19\u0C1D\u0C21\u0C25\u0C29\u0C2D\u0C31\u0C35\u0C39\u0C3D\u0C41\u0C45"+
+        "\u0C49\u0C4D\u0C51\u0C55\u0C59\u0C5D\u0C61\u0C65\u0C69\u0C6D\u0C71\u0C75"+
+        "\u0C79\u0C7D\u0C81\u0C85\u0C89\u0C8D\u0C91\u0C95\u0C99\u0C9D\u0CA1\u0CA5"+
+        "\u0CA9\u0CAD\u0CB1\u0CB5\u0CB9\u0CBD\u0CC1\u0CC5\u0CC9\u0CCD\u0CD1\u0CD5"+
+        "\u0CD9\u0CDD\u0CE1\u0CE5\u0CE9\u0CED\u0CF1\u0CF5\u0CF9\u0CFD\u0D01\u0D05"+
+        "\u0D09\u0D0D\u0D11\u0D15\u0D19\u0D1D\u0D21\u0D25\u0D29\u0D2D\u0D31\u0D35"+
+        "\u0D39\u0D3D\u0D41\u0D45\000\000\000\u085D\u0875\u0D49\u0D4D\u0D51\u0D55"+
+        "\u0D59\u0D5D\u086D\u0D61\u0D65\u0D69\u0D6D\u087D\u0D73\u0D7F\u0D8B\u0D97"+
+        "\u0DA3\u0DAF\u0DBB\u0DC7\u0DD3\u0DDF\u0DEB\u0DF7\u0E03\u0E0F\u0E18\u0E2C"+
+        "\u0E40\u0E54\u0E68\u0E7C\u0E90\u0EA4\u0EB8\u0ECC\u0EE0\u0EF4\u0F08\u0F1C"+
+        "\u0F30\000\000\000\u0F47\u0F53\u0F5F\u0F6B\u0F77\u0F83\u0F8F\u0F9B\u0FA7"+
+        "\u0FB3\u0FBF\u0FCB\u0FD7\u0FE3\u0FEF\u0FFB\u1007\u1013\u101F\u102B\u1037"+
+        "\u1043\u104F\u105B\u1067\u1073\u107F\u108B\u1097\u10A3\u10AF\u10BB\u10C7"+
+        "\u10D3\u10DF\u10EB\uA5A5\034\000\u0BD1\u0BDD\u0BE9\u0BF1\u0C11\u0C15\u0C21"+
+        "\u0C29\u0C2D\u0C35\u0C39\u0C3D\u0C41\u0C45\u0E1E\u0E32\u0E46\u0E5A\u0E6E"+
+        "\u0E82\u0E96\u0EAA\u0EBE\u0ED2\u0EE6\u0EFA\u0F0E\u0C46\uA5A5\004\000\u085D"+
+        "\u0875\u0D49\u0D4D\u0F79\u0F85\u0F91\u0889\u0FA9\u08B9\u0981\u09B1\u09AD"+
+        "\u0985\u0AF5\u08D9\u0979\u1015\u1021\u102D\u1039\u1045\u1051\u105D\u1069"+
+        "\u10F5\u10F9\u08F1\u10FD\u1101\u1105\u1109\u110D\u10D5\u1111\u1115\u0D51"+
+        "\u0D55\u0D59\u1119\u111D\u1121\u1125\u108D\u1099\u10A5\u10B1\u10BD\u1129"+
+        "\uA5A5\017\000\u112E\u1136\u113E\u1146\u114E\u1156\u115E\u1166\u116E\u1177"+
+        "\u1183\u118F\uA5A5\004\000\u1199\u119D\u11A1\u11A5\u11A9\u11AD\u11B1\u11B5"+
+        "\u11B9\u11BD\u11C1\u11C5\u11C9\u11CD\u11D1\u11D5\u11D9\u11DD\u11E1\u11E5"+
+        "\u11E9\u11ED\u11F1\u11F5\u11F9\u11FD\u1201\u1205\u1209\u120D\u1211\u1215"+
+        "\u1219\u121D\u1221\u1225\u1229\u122D\u1231\u1235\u1239\u123D\u1241\u1245"+
+        "\u1249\u124D\u1251\000\u1254\u126C\u1280\u129B\u12A4\u12BF\u12CB\u12D4"+
+        "\u12F0\u1307\u1313\u131F\u1328\u133C\u1350\u1364\u1378\u138C\u13A0\u13B4"+
+        "\u13D2\u13D8\u13F4\u1410\u13E0\u1428\u1444\u1460\u1477\u1483\u148C\u14A0"+
+        "\u14B4\u14CC\u14E7\u14F3\u14FC\u1513\u151F\u143A\u152A\u1533\u153F\u1548"+
+        "\u1564\u1578\u1590\u15AC\u15C3\u15CF\u15D8\u15F4\u1608\u1627\u1630\u164B"+
+        "\u1654\u166B\u1674\u1688\u16A0\u16B4\u16CC\u16E2\u16E8\u1703\u170F\u1718"+
+        "\u172F\u173B\u1747\u1750\u1768\u177E\u1784\u17A3\u17AC\u13FC\u17C4\u17DB"+
+        "\u17E7\u17F0\u1806\u180C\u1820\u183A\u1840\u141B\u185E\u1866\u186E\u1876"+
+        "\u187E\u1886\u188E\u1896\u189E\u18A6\u18AF\u18BB\u18C7\u18D3\u18DF\u18EB"+
+        "\u18F7\u1903\u190F\u191B\u1927\u1933\u193F\u194B\u1957\u1963\u196E\u1976"+
+        "\u197F\u198A\u1992\uA5A5\004\000\u199A\u19A2\u19AA\u19B2\u19B8\u19CE\u19D6"+
+        "\u19DE\u19E6\u19EE\u19F6\u02FE\u19FE\u1A07\u1A10\u1A26\u1A2E\u1A36\u1A3E"+
+        "\u1A46\u1A4E\u1A56\u1A5F\u1A6B\u1A77\u1A83\u1A8E\u1A96\u1A9E\u1AA6\u1AAE"+
+        "\u1AB6\u1ABE\u1AC6\u1ACE\u1AD6\u1ADF\u1AEB\u1AE2\u1AF7\u1B03\u1B0F\u1B06"+
+        "\u1B1B\u1B27\u1B30\u1966\u1B47\u1B53\u1B5F\u1B6B\u1B74\u1B8C\u1BAA\u008A"+
+        "\u1BB2\u1BBA\u1BC2\u1BCA\u1BD2\u1BDA\u1BE2\u1BEA\u1BF2\u1BFA\u1C02\u1C0A"+
+        "\u1C12\u1C1A\u1C22\u1C2A\u1C30\u1C46\u1C4E\u1C56\u1C5C\u1C73\u1C7E\u1C86"+
+        "\u1C8E\u1C96\u1C9E\u1CA6\u1CAE\u1CB6\u1A92\u1CBE\u1CC7\u1CD2\u1CDA\u1CE3"+
+        "\u1CEF\u1CFA\u1D00\u1D17\u1D22\u1D2A\u1D32\u1D3A\000\000\u1D42\u1D4A\u1D52"+
+        "\u1D5A\u1D62\u1D6A\u1D72\u1D7A\u1D82\u1D8B\u1D97\u1DA3\u1DAF\u1DBB\u1DC7"+
+        "\u1DD3\u1DDF\u1DEB\u1DF7\u1E03\u1E0F\u1E1B\u1E27\u1E33\u1E3F\u1E4B\u1E57"+
+        "\u1E63\u1E6F\u1E7B\u1E87\000\u4F61\u4F65\u4F69\u4F6D\u4F71\u4F75\u4F79"+
+        "\u4F7D\u4F81\u4F85\u4F89\u4F8D\u4F91\u4F95\u4F99\u4F9D\u4FA1\u4FA5\u4FA9"+
+        "\u4FAD\u4FB1\u4FB5\u4FB9\u4FBD\u4FC1\u4FC5\u4FC9\u4FCD\u4FD1\u4FD5\u4FD9"+
+        "\u4FDD\u4FE1\u4FE5\u4FE9\u4FED\u4FF1\u4FF5\u4FF9\u4FFD\u5001\u5005\u5009"+
+        "\u500D\u5011\u5015\u5019\u501D\u5021\u5025\u5029\u502D\u5031\u5035\u5039"+
+        "\u503D\u5041\u5045\u5049\u504D\u5051\u5055\u5059\u505D\u5061\u5065\u5069"+
+        "\u506D\u5071\u5075\u5079\u507D\u5081\u5085\u5089\u508D\u5091\u5095\u5099"+
+        "\u509D\u50A1\u50A5\u50A9\u50AD\u50B1\u50B5\u50B9\u50BD\u50C1\u50C5\u50C9"+
+        "\u50CD\u50D1\u50D5\u50D9\u50DD\u50E1\u50E5\u50E9\u50ED\u50F1\u50F5\u50F9"+
+        "\u50FD\u5101\u5105\u5109\u510D\u5111\u5115\u5119\u511D\u5121\u5125\u5129"+
+        "\u512D\u5131\u5135\u5139\u513D\u5141\u5145\u5149\u514D\u5151\u5155\u5159"+
+        "\u515D\u5161\u5165\u5169\u516D\u5171\u5175\u5179\u517D\u5181\u5185\u5189"+
+        "\u518D\u5191\u5195\u5199\u519D\u51A1\u51A5\u51A9\u51AD\u51B1\u51B5\u51B9"+
+        "\u51BD\u51C1\u51C5\u51C9\u51CD\u51D1\u51D5\u51D9\u51DD\u51E1\u51E5\u51E9"+
+        "\u51ED\u51F1\u51F5\u51F9\u51FD\u5201\u5205\u5209\u520D\u5211\u5215\u5219"+
+        "\u521D\u5221\u5225\u5229\u522D\u5231\u5235\u5239\u523D\u5241\u5245\u5249"+
+        "\u524D\u5251\u5255\u5259\u525D\u5261\u5265\u5269\u526D\u5271\u5275\u5279"+
+        "\u527D\u5281\u5285\u5289\u528D\u5291\u5295\u5299\u529D\u52A1\u52A5\u52A9"+
+        "\u52AD\u52B1\u52B5\u52B9\u52BD\u52C1\u52C5\u52C9\u52CD\u52D1\u52D5\u52D9"+
+        "\u52DD\u52E1\u52E5\u52E9\u52ED\u52F1\u52F5\u52F9\u52FD\u5301\u5305\u5309"+
+        "\u530D\u5311\u5315\u5319\u531D\u5321\u5325\u5329\u532D\u5331\u5335\u5339"+
+        "\u533D\u5341\u5345\u5349\u534D\u5351\u5355\u5359\u535D\u5361\u5365\u5369"+
+        "\u536D\u5371\u5375\u5379\u537D\u5381\u5385\u5389\u538D\u5391\u5395\000"+
+        "\000\u5399\000\u539D\000\000\u53A1\u53A5\u53A9\u53AD\u53B1\u53B5\u53B9"+
+        "\u53BD\u53C1\u53C5\000\u53C9\000\u53CD\000\000\u53D1\u53D5\000\000\000"+
+        "\u53D9\u53DD\u53E1\u53E5\uA5A5\022\000\u1E92\u1E9A\u1EA2\u1E97\u1EAB\u1EB6"+
+        "\u1EB6\uA5A5\014\000\u1EBE\u1EC6\u1ECE\u1ED6\u1EDE\uA5A5\005\000\u53EA"+
+        "\000\u53F2\u1EE5\u0309\u0315\u1EE9\u1EED\u1EF1\u1EF5\u1EF9\u1EFD\u0265"+
+        "\u53FA\u5402\u540B\u5417\u5422\u542A\u5432\u543A\u5442\u544A\u5452\u545A"+
+        "\u5462\000\u546A\u5472\u547A\u5482\u548A\000\u5492\000\u549A\u54A2\000"+
+        "\u54AA\u54B2\000\u54BA\u54C2\u54CA\u54D2\u54DA\u54E2\u54EA\u54F2\u54FA"+
+        "\u1F02\u1F09\u1F09\uA5A5\004\u1F0D\uA5A5\004\u1F11\uA5A5\004\u1F15\uA5A5"+
+        "\004\u1F19\uA5A5\004\u1F1D\uA5A5\004\u1F21\uA5A5\004\u1F25\uA5A5\004\u1F29"+
+        "\uA5A5\004\u1F2D\uA5A5\004\u1F31\uA5A5\004\u1F35\uA5A5\004\u1F39\u1F3D"+
+        "\u1F3D\u1F41\u1F41\u1F45\u1F45\u1F49\u1F49\u1F4D\u1F4D\u1F51\u1F51\uA5A5"+
+        "\004\u1F55\uA5A5\004\u1F59\uA5A5\004\u1F5D\uA5A5\004\u1F61\u1F65\u1F65"+
+        "\uA5A5\004\u1F69\u1F6E\u1F6E\uA5A5\004\u1F75\uA5A5\004\u1F79\u1F7D\u1F7D"+
+        "\u1F82\u1F82\uA5A5!\000\uA5A5\004\u1F89\u0181\u0181\u1F8D\u1F8D\u1F91"+
+        "\u1F91\u0182\u1F95\u1F95\u1F99\u1F99\u1F9D\u1F9D\uA5A5\004\u1FA1\u1FA5"+
+        "\u1FA5\u1FAB\u1FAB\u1FB7\u1FB7\u1FC3\u1FC3\u1FCF\u1FCF\u1FDB\u1FDB\u1FE7"+
+        "\u1FE7\u1FF3\u1FF3\u1FF3\u1FFF\u1FFF\u1FFF\uA5A5\004\u2009\u200F\u201B"+
+        "\u2027\u1FFF\u2033\u203E\u2046\u204E\u2056\u205E\u2066\u206E\u2076\u207E"+
+        "\u2086\u208E\u2096\u209E\u20A6\u20AE\u20B6\u20BE\u20C6\u20C2\u20CE\u20D6"+
+        "\u20DE\u20E6\u20EE\u20F6\u20FE\u2106\u210E\u2116\u211E\u2126\u212E\u2136"+
+        "\u213E\u2146\u214E\u2156\u215E\u2166\u216E\u2176\u217E\u2186\u218E\u2196"+
+        "\u219E\u21A6\u21AE\u21B6\u21BE\u21C6\u21CE\u21D6\u21DE\u21E6\u21EE\u21F6"+
+        "\u21FE\u2206\u220E\u2216\u221E\u2226\u222E\u2236\u20CA\u20D2\u223E\u2246"+
+        "\u202E\u224E\u2256\u225E\u2266\u226E\u2276\u227E\u2286\u228E\u2296\u20BA"+
+        "\u229E\u22A6\u2232\u22AE\u229A\u22B6\u22BE\u22C6\u22CF\u22DB\u22E7\u22F3"+
+        "\u22FF\u230B\u2317\u2323\u2027\u232F\u1FFF\u2033\u233A\u2342\u2056\u234A"+
+        "\u205E\u2066\u2352\u235A\u2086\u2362\u208E\u2096\u236A\u2372\u20A6\u237A"+
+        "\u20AE\u20B6\u2196\u219E\u21B6\u21BE\u21C6\u21E6\u21EE\u21F6\u21FE\u221E"+
+        "\u2226\u222E\u2382\u223E\u238A\u2392\u2266\u239A\u226E\u2276\u22C6\u23A2"+
+        "\u23AA\u2232\u23B2\u22AE\u229A\u200F\u201B\u23BB\u2027\u23C7\u203E\u2046"+
+        "\u204E\u2056\u23D2\u206E\u2076\u207E\u2086\u23DA\u20A6\u20BE\u20C6\u20C2"+
+        "\u20CE\u20D6\u20E6\u20EE\u20F6\u20FE\u2106\u210E\u23E2\u2116\u211E\u2126"+
+        "\u212E\u2136\u213E\u214E\u2156\u215E\u2166\u216E\u2176\u217E\u2186\u218E"+
+        "\u21A6\u21AE\u21CE\u21D6\u21DE\u21E6\u21EE\u2206\u220E\u2216\u221E\u23EA"+
+        "\u2236\u20CA\u20D2\u223E\u224E\u2256\u225E\u2266\u23F2\u227E\u2286\u23FA"+
+        "\u20BA\u229E\u22A6\u2232\u227A\u2027\u23C7\u2056\u23D2\u2086\u23DA\u20A6"+
+        "\u2402\u2106\u240A\u2412\u241A\u21E6\u21EE\u221E\u2266\u23F2\u2232\u227A"+
+        "\u2423\u242F\u243B\u2446\u244E\u2456\u245E\u2466\u246E\u2476\u247E\u2486"+
+        "\u248E\u2496\u2022\u249E\u2016\u24A6\u22AA\u24AE\u24B6\u24BE\u24C6\u24CE"+
+        "\u24D6\u24DE\u2412\u24E6\u24EE\u24F6\u24FE\u2446\u244E\u2456\u245E\u2466"+
+        "\u246E\u2476\u247E\u2486\u248E\u2496\u2022\u249E\u2016\u24A6\u22AA\u24AE"+
+        "\u24B6\u24BE\u24C6\u24CE\u24D6\u24DE\u2412\u24E6\u24EE\u24F6\u24FE\u24CE"+
+        "\u24D6\u24DE\u2412\u240A\u241A\u2146\u20EE\u20F6\u20FE\u24CE\u24D6\u24DE"+
+        "\u2146\u214E\u2506\u2506\uA5A5\022\000\u250F\u251B\u251B\u2527\u2533\u253F"+
+        "\u254B\u2557\u20C7\u20C7\u2563\u256F\u257B\u2587\u2593\u259F\u259F\u25AB"+
+        "\u25B7\u25B7\u25C3\u25C3\u25CF\u25DB\u25DB\u25E7\u25F3\u25F3\u25FF\u25FF"+
+        "\u260B\u2617\u2617\u2623\u2623\u262F\u263B\u2647\u2653\u2653\u265F\u266B"+
+        "\u2677\u2683\u268F\u268F\u269B\u26A7\u26B3\u26BF\u26CB\u26D7\u26D7\u26E3"+
+        "\u26E3\u26EF\u26EF\u26FB\u20CB\u2707\u2713\u2237\u20D3\u271F\000\000\u272B"+
+        "\u2737\u2743\u274F\u275B\u2767\u2767\u2773\u277F\u278B\u2797\u2797\u27A3"+
+        "\u27AF\u27BB\u27C7\u27D3\u27DF\u27EB\u27F7\u2803\u280F\u281B\u2827\u2833"+
+        "\u283F\u284B\u2857\u229F\u2863\u286F\u287B\u2887\u2893\u269B\u26B3\u289F"+
+        "\u28AB\u28B7\u28C3\u28CF\u28DB\u28CF\u28B7\u28E7\u28F3\u28FF\u290B\u2917"+
+        "\u28DB\u2647\u25CF\u2923\u292F\uA5A5(\000\u293B\u2947\u2950\u2964\u2978"+
+        "\u298C\u29A0\u29B4\u29C8\u29DF\u29E8\u2A34\uA5A5\024\000\u01FA\u2A59\u2A5D"+
+        "\u2A61\u2A61\u0271\u0275\u2A65\u2A69\u2A6D\u2A71\u2A75\u2A79\u2A7D\u2A81"+
+        "\u2A85\u2A89\u2A8D\u2A91\u2A95\u2A99\uA5A5\004\000\uA5A5\004\u0236\u2A61"+
+        "\u2A61\u2A61\u2A9D\u2AA1\u01F9\000\u2AA5\u2AA9\u023D\u022D\u2A59\u0271"+
+        "\u0275\u2A65\u2A69\u2A6D\u2A71\u2AAD\u2AB1\u2AB5\u0265\u2AB9\u2ABD\u2AC1"+
+        "\u026D\000\u2AC5\u2AC9\u2ACD\u2AD1\uA5A5\004\000\u2AD6\u2ADE\u22CE\000"+
+        "\u22DA\000\u22E6\u2422\u22F2\u242E\u22FE\u243A\u230A\u2AE6\u2AEE\u2AF6"+
+        "\u2AFD\u2B02\u2B02\u2B0A\u2B0A\u2B12\u2B12\u2B1A\u2B1A\uA5A5\004\u1FAA"+
+        "\u0171\u0171\uA5A5\004\u203D\u2B21\u2B21\uA5A5\004\u206D\uA5A5\004\u209D"+
+        "\uA5A5\004\u2015\uA5A5\004\u2021\uA5A5\004\u2051\u2985\u2985\u22B5\u22B5"+
+        "\u22BD\u22BD\u2329\u2329\uA5A5\004\u20ED\uA5A5\004\u2411\uA5A5\004\u210D"+
+        "\uA5A5\004\u211D\uA5A5\004\u213D\uA5A5\004\u214D\uA5A5\004\u2155\uA5A5"+
+        "\004\u2165\uA5A5\004\u2175\uA5A5\004\u21A5\uA5A5\004\u21C5\uA5A5\004\u21E9"+
+        "\uA5A5\004\u202D\uA5A5\004\u224D\uA5A5\004\u227D\u0179\u0179\u1FA5\u1FA5"+
+        "\uA5A5\004\u0189\u2B27\u2B27\u2B33\u2B33\u2B3F\u2B3F\u2A46\u2A46\uA5A5"+
+        "\004\000\u022D\u2B49\u2AAD\u2AC9\u2ACD\u2AB1\u2B4D\u0271\u0275\u2AB5\u0265"+
+        "\u2A9D\u2AB9\u01F9\u0285\u024D9\035!I\u0251\u0255\u0259\u025D\u0261\u2AA9"+
+        "\u2AA5\u2ABD\u026D\u2AC1\u023D\u2AD1\u0839\u0301\u0299\u0091\u02F1\u02C5"+
+        "\u083D\u02CDei\u0841u\u02E9\u00CD\u0845\u02DD\u02E1\u0279\u02E5\u02ED"+
+        "\u0849\u03C1\u084D\u03F1\u0851\u0095\u2B51\u2AC5\u2B55\u2B59\u2A61\u2B5D"+
+        "\021\u0711\u0289\u00A9\u0305\u0741\u02C9\u00E5mq\u077D}\u0469\u0089=\u07B9"+
+        "\u07C5\u00ED\u008D\u07E9\u02B9\u0421\u00FD\u0139\u0101\u00A1\u2A65\u2B61"+
+        "\u2A69\u2B65\000\000\u2B69\u2A8D\u2A91\u2AA1\u2B6D\u1251\u1279\u15F9\u2B71"+
+        "\u1619\u12CD\u2B75\u13A5\u175D\u1331\u1261\u1199\u119D\u11A1\u11A5\u11A9"+
+        "\u11AD\u11B1\u11B5\u11B9\u11BD\u11C1\u11C5\u11C9\u11CD\u11D1\u11D5\u11D9"+
+        "\u11DD\u11E1\u11E5\u11E9\u11ED\u11F1\u11F5\u11F9\u11FD\u1201\u1205\u1209"+
+        "\u120D\u1211\u1215\u1219\u121D\u1221\u1225\u1229\u122D\u1231\u1235\u1239"+
+        "\u123D\u1241\u1245\u1285\u0BC5\u0BCD\u0C9D\u0BD1\u0BD5\u0BD9\u0BDD\u0BE1"+
+        "\u0BE5\u0BE9\u0BED\u0BF1\u0BF5\u0BF9\u0BFD\u0C01\u0C05\u0C09\u0C0D\u0C11"+
+        "\u0C15\u0C19\u0C1D\u0C21\u0C25\u0C29\u0C2D\u0C31\u0C35\u0C39\u0C3D\u0C41"+
+        "\u0C45\000\000\000\u0C49\u0C4D\u0C51\u0C55\u0C59\u0C5D\000\000\u0C61\u0C65"+
+        "\u0C69\u0C6D\u0C71\u0C75\000\000\u0C79\u0C7D\u0C81\u0C85\u0C89\u0C8D\000"+
+        "\000\u0C91\u0C95\u0C99\000\000\000\u2B79\u2B7D\u2B81\026\u2B85\u2B89\u2B8D"+
+        "\000\u2B91\u2B95\u2B99\u2B9D\u2BA1\u2BA5\u2BA9\uA5A5\021\000"
+        );
+
+    static final String contents = 
+        "\uFFFF  \u0308a \u030423 \u0301\u03BC \u03271o1\u204441\u204423\u2044"+
+        "4IJijL\u00B7l\u00B7\u02BCnsDZ\u030CDz\u030Cdz\u030CLJLjljNJNjnjh\u0266"+
+        "r\u0279\u027B\u0281wy \u0306 \u0307 \u030A \u0328 \u0303 \u030B\u0263"+
+        "x\u0295 \u0345\u03B2\u03B8\u03A5\u03C6\u03C0\u03BA\u03C1\u03C2\u0565\u0582"+
+        "\u0627\u0674\u0648\u0674\u06C7\u0674\u064A\u0674\u0E4D\u0E32\u0ECD\u0EB2"+
+        "\u0EAB\u0E99\u0EAB\u0EA1\u0F0B\u0FB2\u0F71\u0F80\u0FB3\u0F71\u0F80a\u02BE"+
+        " \u0313 \u0342 \u0314\u2010 \u0333...\u2032\u2032\u2032\u2032\u2032\u2035"+
+        "\u2035\u2035\u2035\u2035!! \u0305?!!?056789+\u2212=()Rsa/ca/sC\u00B0C"+
+        "c/oc/u\u0190\u00B0FgH\u0127NoPQSMTELTMBe\u05D0\u05D1\u05D2\u05D31\u2044"+
+        "32\u204431\u204452\u204453\u204454\u204451\u204465\u204461\u204483\u2044"+
+        "85\u204487\u20448IIIIIIVVIVIIVIII\000IXXIXIIiiiiiivviviiviii\000ixxix"+
+        "iim\u222B\u222B\u222B\u222B\u222B\u222E\u222E\u222E\u222E\u222E101112"+
+        "1314151617181920(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)\000(11)\000(12)\000(1"+
+        "3)\000(14)\000(15)\000(16)\000(17)\000(18)\000(19)\000(20)\0001.2.3.4"+
+        ".5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.(a)(b)(c)(d)(e)(f)(g)(h)("+
+        "i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)AGKOUWY\u6BCD\u9F9F"+
+        "\u4E00\u4E28\u4E36\u4E3F\u4E59\u4E85\u4E8C\u4EA0\u4EBA\u513F\u5165\u516B"+
+        "\u5182\u5196\u51AB\u51E0\u51F5\u5200\u529B\u52F9\u5315\u531A\u5338\u5341"+
+        "\u535C\u5369\u5382\u53B6\u53C8\u53E3\u56D7\u571F\u58EB\u5902\u590A\u5915"+
+        "\u5927\u5973\u5B50\u5B80\u5BF8\u5C0F\u5C22\u5C38\u5C6E\u5C71\u5DDB\u5DE5"+
+        "\u5DF1\u5DFE\u5E72\u5E7A\u5E7F\u5EF4\u5EFE\u5F0B\u5F13\u5F50\u5F61\u5F73"+
+        "\u5FC3\u6208\u6236\u624B\u652F\u6534\u6587\u6597\u65A4\u65B9\u65E0\u65E5"+
+        "\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BB3\u6BCB\u6BD4\u6BDB\u6C0F\u6C14"+
+        "\u6C34\u706B\u722A\u7236\u723B\u723F\u7247\u7259\u725B\u72AC\u7384\u7389"+
+        "\u74DC\u74E6\u7518\u751F\u7528\u7530\u758B\u7592\u7676\u767D\u76AE\u76BF"+
+        "\u76EE\u77DB\u77E2\u77F3\u793A\u79B8\u79BE\u7A74\u7ACB\u7AF9\u7C73\u7CF8"+
+        "\u7F36\u7F51\u7F8A\u7FBD\u8001\u800C\u8012\u8033\u807F\u8089\u81E3\u81EA"+
+        "\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u8278\u864D\u866B\u8840\u884C"+
+        "\u8863\u897E\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C78\u8C9D\u8D64\u8D70"+
+        "\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FB5\u9091\u9149\u91C6\u91CC\u91D1\u9577"+
+        "\u9580\u961C\u96B6\u96B9\u96E8\u9751\u975E\u9762\u9769\u97CB\u97ED\u97F3"+
+        "\u9801\u98A8\u98DB\u98DF\u9996\u9999\u99AC\u9AA8\u9AD8\u9ADF\u9B25\u9B2F"+
+        "\u9B32\u9B3C\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u9EC3\u9ECD\u9ED1\u9EF9"+
+        "\u9EFD\u9F0E\u9F13\u9F20\u9F3B\u9F4A\u9F52\u9F8D\u9F9C\u9FA0\u3012\u5344"+
+        "\u5345 \u3099 \u309A\u1100\u1101\u11AA\u1102\u11AC\u11AD\u1103\u1104\u1105"+
+        "\u11B0\u11B1\u11B2\u11B3\u11B4\u11B5\u111A\u1106\u1107\u1108\u1121\u1109"+
+        "\u110A\u110B\u110C\u110D\u110E\u110F\u1110\u1111\u1112\u1161\u1162\u1163"+
+        "\u1164\u1165\u1166\u1167\u1168\u1169\u116A\u116B\u116C\u116D\u116E\u116F"+
+        "\u1170\u1171\u1172\u1173\u1174\u1175\u1160\u1114\u1115\u11C7\u11C8\u11CC"+
+        "\u11CE\u11D3\u11D7\u11D9\u111C\u11DD\u11DF\u111D\u111E\u1120\u1122\u1123"+
+        "\u1127\u1129\u112B\u112C\u112D\u112E\u112F\u1132\u1136\u1140\u1147\u114C"+
+        "\u11F1\u11F2\u1157\u1158\u1159\u1184\u1185\u1188\u1191\u1192\u1194\u119E"+
+        "\u11A1\u4E09\u56DB\u4E0A\u4E2D\u4E0B\u7532\u4E19\u4E01\u5929\u5730(\u1100"+
+        ")(\u1102)(\u1103)(\u1105)(\u1106)(\u1107)(\u1109)(\u110B)(\u110C)(\u110E"+
+        ")(\u110F)(\u1110)(\u1111)(\u1112)(\u1100\u1161)\000(\u1102\u1161)\000"+
+        "(\u1103\u1161)\000(\u1105\u1161)\000(\u1106\u1161)\000(\u1107\u1161)\000"+
+        "(\u1109\u1161)\000(\u110B\u1161)\000(\u110C\u1161)\000(\u110E\u1161)\000"+
+        "(\u110F\u1161)\000(\u1110\u1161)\000(\u1111\u1161)\000(\u1112\u1161)\000"+
+        "(\u110C\u116E)\000(\u4E00)(\u4E8C)(\u4E09)(\u56DB)(\u4E94)(\u516D)(\u4E03"+
+        ")(\u516B)(\u4E5D)(\u5341)(\u6708)(\u706B)(\u6C34)(\u6728)(\u91D1)(\u571F"+
+        ")(\u65E5)(\u682A)(\u6709)(\u793E)(\u540D)(\u7279)(\u8CA1)(\u795D)(\u52B4"+
+        ")(\u4EE3)(\u547C)(\u5B66)(\u76E3)(\u4F01)(\u8CC7)(\u5354)(\u796D)(\u4F11"+
+        ")(\u81EA)(\u81F3)\u79D8\u7537\u9069\u512A\u5370\u6CE8\u9805\u5199\u6B63"+
+        "\u5DE6\u53F3\u533B\u5B97\u591C1\u67082\u67083\u67084\u67085\u67086\u6708"+
+        "7\u67088\u67089\u670810\u670811\u670812\u6708\u30A2\u30A4\u30A6\u30A8"+
+        "\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF"+
+        "\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5"+
+        "\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA"+
+        "\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30A2\u30CF\u309A\u30FC\u30C8"+
+        "\000\u30A2\u30EB\u30D5\u30A1\000\u30A2\u30F3\u30D8\u309A\u30A2\000\u30A2"+
+        "\u30FC\u30EB\u30A4\u30CB\u30F3\u30AF\u3099\000\u30A4\u30F3\u30C1\u30A6"+
+        "\u30A9\u30F3\u30A8\u30B9\u30AF\u30FC\u30C8\u3099\000\u30A8\u30FC\u30AB"+
+        "\u30FC\000\u30AA\u30F3\u30B9\u30AA\u30FC\u30E0\u30AB\u30A4\u30EA\u30AB"+
+        "\u30E9\u30C3\u30C8\000\u30AB\u30ED\u30EA\u30FC\000\u30AB\u3099\u30ED\u30F3"+
+        "\000\u30AB\u3099\u30F3\u30DE\000\u30AD\u3099\u30AB\u3099\000\u30AD\u3099"+
+        "\u30CB\u30FC\000\u30AD\u30E5\u30EA\u30FC\000\u30AD\u3099\u30EB\u30BF\u3099"+
+        "\u30FC\000\u30AD\u30ED\u30AD\u30ED\u30AF\u3099\u30E9\u30E0\000\u30AD\u30ED"+
+        "\u30E1\u30FC\u30C8\u30EB\000\u30AD\u30ED\u30EF\u30C3\u30C8\000\u30AF\u3099"+
+        "\u30E9\u30E0\u30C8\u30F3\000\u30AF\u30EB\u30BB\u3099\u30A4\u30ED\000\u30AF"+
+        "\u30ED\u30FC\u30CD\000\u30B1\u30FC\u30B9\u30B3\u30EB\u30CA\u30B3\u30FC"+
+        "\u30DB\u309A\000\u30B5\u30A4\u30AF\u30EB\000\u30B5\u30F3\u30C1\u30FC\u30E0"+
+        "\000\u30B7\u30EA\u30F3\u30AF\u3099\000\u30BB\u30F3\u30C1\u30BB\u30F3\u30C8"+
+        "\u30BF\u3099\u30FC\u30B9\000\u30C6\u3099\u30B7\u30C8\u3099\u30EB\u30CA"+
+        "\u30CE\u30CE\u30C3\u30C8\u30CF\u30A4\u30C4\u30CF\u309A\u30FC\u30BB\u30F3"+
+        "\u30C8\000\u30CF\u309A\u30FC\u30C4\000\u30CF\u3099\u30FC\u30EC\u30EB\000"+
+        "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB\000\u30D2\u309A\u30AF\u30EB\000\u30D2"+
+        "\u309A\u30B3\u30D2\u3099\u30EB\u30D5\u30A1\u30E9\u30C3\u30C8\u3099\000"+
+        "\u30D5\u30A3\u30FC\u30C8\000\u30D5\u3099\u30C3\u30B7\u30A7\u30EB\000\u30D5"+
+        "\u30E9\u30F3\u30D8\u30AF\u30BF\u30FC\u30EB\000\u30D8\u309A\u30BD\u30D8"+
+        "\u309A\u30CB\u30D2\000\u30D8\u30EB\u30C4\u30D8\u309A\u30F3\u30B9\000\u30D8"+
+        "\u309A\u30FC\u30B7\u3099\000\u30D8\u3099\u30FC\u30BF\000\u30DB\u309A\u30A4"+
+        "\u30F3\u30C8\000\u30DB\u3099\u30EB\u30C8\000\u30DB\u30F3\u30DB\u309A\u30F3"+
+        "\u30C8\u3099\000\u30DB\u30FC\u30EB\u30DB\u30FC\u30F3\u30DE\u30A4\u30AF"+
+        "\u30ED\000\u30DE\u30A4\u30EB\u30DE\u30C3\u30CF\u30DE\u30EB\u30AF\u30DE"+
+        "\u30F3\u30B7\u30E7\u30F3\000\u30DF\u30AF\u30ED\u30F3\000\u30DF\u30EA\u30DF"+
+        "\u30EA\u30CF\u3099\u30FC\u30EB\000\u30E1\u30AB\u3099\u30E1\u30AB\u3099"+
+        "\u30C8\u30F3\000\u30E4\u30FC\u30C8\u3099\000\u30E4\u30FC\u30EB\u30E6\u30A2"+
+        "\u30F3\u30EA\u30C3\u30C8\u30EB\000\u30EA\u30E9\u30EB\u30D2\u309A\u30FC"+
+        "\000\u30EB\u30FC\u30D5\u3099\u30EB\000\u30EC\u30E0\u30EC\u30F3\u30C8\u30B1"+
+        "\u3099\u30F3\0000\u70B91\u70B92\u70B93\u70B94\u70B95\u70B96\u70B97\u70B9"+
+        "8\u70B99\u70B910\u70B911\u70B912\u70B913\u70B914\u70B915\u70B916\u70B9"+
+        "17\u70B918\u70B919\u70B920\u70B921\u70B922\u70B923\u70B924\u70B9hPada"+
+        "AUbaroVpc\u5E73\u6210\u662D\u548C\u5927\u6B63\u660E\u6CBB\u682A\u5F0F"+
+        "\u4F1A\u793E\000pAnA\u03BCAmAkAKBGBcalkcal\000pFnF\u03BCF\u03BCgmgkgH"+
+        "zkHzMHzGHzTHz\u03BClmldlklfmnm\u03BCmmmcmkmmm2cm2km2mm3cm3km3m\u2215s"+
+        "m\u2215s2\000kPaMPaGParadrad\u2215s\000rad\u2215s2\000ps\u03BCsmspVnV"+
+        "\u03BCVmVkVMVpWnW\u03BCWmWkWMWk\u03A9M\u03A9a.m.\000BqcccdC\u2215kg\000"+
+        "Co.dBGyhaHPinKKKMktlnloglxmbmilmolPHp.m.\000PPMPRsrSvWb1\u65E52\u65E5"+
+        "3\u65E54\u65E55\u65E56\u65E57\u65E58\u65E59\u65E510\u65E511\u65E512\u65E5"+
+        "13\u65E514\u65E515\u65E516\u65E517\u65E518\u65E519\u65E520\u65E521\u65E5"+
+        "22\u65E523\u65E524\u65E525\u65E526\u65E527\u65E528\u65E529\u65E530\u65E5"+
+        "31\u65E5fffiflfflst\u0574\u0576\u0574\u0565\u0574\u056B\u057E\u0576\u0574"+
+        "\u056D\u05E2\u05D4\u05DB\u05DC\u05DD\u05E8\u05EA\u05D0\u05DC\u0671\u067B"+
+        "\u067E\u0680\u067A\u067F\u0679\u06A4\u06A6\u0684\u0683\u0686\u0687\u068D"+
+        "\u068C\u068E\u0688\u0698\u0691\u06A9\u06AF\u06B3\u06B1\u06BA\u06BB\u06D5"+
+        "\u0654\u06C1\u06BE\u06D2\u06D2\u0654\u06AD\u06C6\u06C8\u06CB\u06C5\u06C9"+
+        "\u06D0\u0649\u064A\u0654\u0627\u064A\u0654\u06D5\u064A\u0654\u0648\u064A"+
+        "\u0654\u06C7\u064A\u0654\u06C6\u064A\u0654\u06C8\u064A\u0654\u06D0\u064A"+
+        "\u0654\u0649\u06CC\u064A\u0654\u062C\u064A\u0654\u062D\u064A\u0654\u0645"+
+        "\u064A\u0654\u064A\u0628\u062C\u0628\u062D\u0628\u062E\u0628\u0645\u0628"+
+        "\u0649\u0628\u064A\u062A\u062C\u062A\u062D\u062A\u062E\u062A\u0645\u062A"+
+        "\u0649\u062A\u064A\u062B\u062C\u062B\u0645\u062B\u0649\u062B\u064A\u062C"+
+        "\u062D\u062C\u0645\u062D\u0645\u062E\u062C\u062E\u062D\u062E\u0645\u0633"+
+        "\u062C\u0633\u062D\u0633\u062E\u0633\u0645\u0635\u062D\u0635\u0645\u0636"+
+        "\u062C\u0636\u062D\u0636\u062E\u0636\u0645\u0637\u062D\u0637\u0645\u0638"+
+        "\u0645\u0639\u062C\u0639\u0645\u063A\u062C\u063A\u0645\u0641\u062C\u0641"+
+        "\u062D\u0641\u062E\u0641\u0645\u0641\u0649\u0641\u064A\u0642\u062D\u0642"+
+        "\u0645\u0642\u0649\u0642\u064A\u0643\u0627\u0643\u062C\u0643\u062D\u0643"+
+        "\u062E\u0643\u0644\u0643\u0645\u0643\u0649\u0643\u064A\u0644\u062C\u0644"+
+        "\u062D\u0644\u062E\u0644\u0645\u0644\u0649\u0644\u064A\u0645\u062C\u0645"+
+        "\u0645\u0645\u0649\u0646\u062C\u0646\u062D\u0646\u062E\u0646\u0645\u0646"+
+        "\u0649\u0646\u064A\u0647\u062C\u0647\u0645\u0647\u0649\u0647\u064A\u064A"+
+        "\u062D\u064A\u062E\u064A\u0649\u0630\u0670\u0631\u0670\u0649\u0670 \u064C"+
+        "\u0651 \u064D\u0651 \u064E\u0651 \u064F\u0651 \u0650\u0651 \u0651\u0670"+
+        "\u064A\u0654\u0631\u064A\u0654\u0632\u064A\u0654\u0646\u0628\u0631\u0628"+
+        "\u0632\u0628\u0646\u062A\u0631\u062A\u0632\u062A\u0646\u062B\u0631\u062B"+
+        "\u0632\u062B\u0646\u0645\u0627\u0646\u0631\u0646\u0632\u0646\u0646\u064A"+
+        "\u0631\u064A\u0632\u064A\u0646\u064A\u0654\u062E\u064A\u0654\u0647\u0628"+
+        "\u0647\u062A\u0647\u0635\u062E\u0644\u0647\u0646\u0647\u0647\u0670\u062B"+
+        "\u0647\u0633\u0647\u0634\u0645\u0634\u0647\u0640\u064E\u0651\u0640\u064F"+
+        "\u0651\u0640\u0650\u0651\u0637\u0649\u0637\u064A\u0639\u0649\u0639\u064A"+
+        "\u063A\u0649\u063A\u064A\u0633\u0649\u0633\u064A\u0634\u0649\u0634\u064A"+
+        "\u062D\u0649\u062C\u0649\u062E\u0649\u0635\u0649\u0635\u064A\u0636\u0649"+
+        "\u0636\u064A\u0634\u062C\u0634\u062D\u0634\u062E\u0634\u0631\u0633\u0631"+
+        "\u0635\u0631\u0636\u0631\u0627\u064B\u062A\u062C\u0645\u062A\u062D\u062C"+
+        "\u062A\u062D\u0645\u062A\u062E\u0645\u062A\u0645\u062C\u062A\u0645\u062D"+
+        "\u062A\u0645\u062E\u062D\u0645\u064A\u062D\u0645\u0649\u0633\u062D\u062C"+
+        "\u0633\u062C\u062D\u0633\u062C\u0649\u0633\u0645\u062D\u0633\u0645\u062C"+
+        "\u0633\u0645\u0645\u0635\u062D\u062D\u0635\u0645\u0645\u0634\u062D\u0645"+
+        "\u0634\u062C\u064A\u0634\u0645\u062E\u0634\u0645\u0645\u0636\u062D\u0649"+
+        "\u0636\u062E\u0645\u0637\u0645\u062D\u0637\u0645\u0645\u0637\u0645\u064A"+
+        "\u0639\u062C\u0645\u0639\u0645\u0645\u0639\u0645\u0649\u063A\u0645\u0645"+
+        "\u063A\u0645\u064A\u063A\u0645\u0649\u0641\u062E\u0645\u0642\u0645\u062D"+
+        "\u0642\u0645\u0645\u0644\u062D\u0645\u0644\u062D\u064A\u0644\u062D\u0649"+
+        "\u0644\u062C\u062C\u0644\u062E\u0645\u0644\u0645\u062D\u0645\u062D\u062C"+
+        "\u0645\u062D\u064A\u0645\u062C\u062D\u0645\u062E\u0645\u0645\u062C\u062E"+
+        "\u0647\u0645\u062C\u0647\u0645\u0645\u0646\u062D\u0645\u0646\u062D\u0649"+
+        "\u0646\u062C\u0645\u0646\u062C\u0649\u0646\u0645\u064A\u0646\u0645\u0649"+
+        "\u064A\u0645\u0645\u0628\u062E\u064A\u062A\u062C\u064A\u062A\u062C\u0649"+
+        "\u062A\u062E\u064A\u062A\u062E\u0649\u062A\u0645\u064A\u062A\u0645\u0649"+
+        "\u062C\u0645\u064A\u062C\u062D\u0649\u062C\u0645\u0649\u0633\u062E\u0649"+
+        "\u0635\u062D\u064A\u0634\u062D\u064A\u0636\u062D\u064A\u0644\u062C\u064A"+
+        "\u0644\u0645\u064A\u064A\u062C\u064A\u064A\u0645\u064A\u0645\u0645\u064A"+
+        "\u0642\u0645\u064A\u0646\u062D\u064A\u0639\u0645\u064A\u0643\u0645\u064A"+
+        "\u0646\u062C\u062D\u0645\u062E\u064A\u0644\u062C\u0645\u0643\u0645\u0645"+
+        "\u062C\u062D\u064A\u062D\u062C\u064A\u0645\u062C\u064A\u0641\u0645\u064A"+
+        "\u0628\u062D\u064A\u0633\u062E\u064A\u0646\u062C\u064A\u0635\u0644\u06D2"+
+        "\u0642\u0644\u06D2\u0627\u0644\u0644\u0647\000\u0627\u0643\u0628\u0631"+
+        "\000\u0645\u062D\u0645\u062F\000\u0635\u0644\u0639\u0645\000\u0631\u0633"+
+        "\u0648\u0644\000\u0639\u0644\u064A\u0647\000\u0648\u0633\u0644\u0645\000"+
+        "\u0635\u0644\u0649\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644"+
+        "\u064A\u0647 \u0648\u0633\u0644\u0645\000\u062C\u0644 \u062C\u0644\u0627"+
+        "\u0644\u0647\000\u2014\u2013_{}\u3014\u3015\u3010\u3011\u300A\u300B\u3008"+
+        "\u3009\u300C\u300D\u300E\u300F,\u3001;:#&*-<>\134$%@ \u064B\u0640\u064B"+
+        "\u0640\u0651 \u0652\u0640\u0652\u0621\u0627\u0653\u0627\u0654\u0648\u0654"+
+        "\u0627\u0655\u0629\u0644\u0627\u0653\u0644\u0627\u0654\u0644\u0627\u0655"+
+        "\042'[]^`|~\u3002\u30FB\u30A5\u30E3\u00A2\u00A3\u00AC\u00A6\u00A5\u20A9"+
+        "\u2502\u2190\u2191\u2192\u2193\u25A0\u25CBA\u0300A\u0301A\u0302A\u0303"+
+        "A\u0308A\u030AC\u0327E\u0300E\u0301E\u0302E\u0308I\u0300I\u0301I\u0302"+
+        "I\u0308N\u0303O\u0300O\u0301O\u0302O\u0303O\u0308U\u0300U\u0301U\u0302"+
+        "U\u0308Y\u0301a\u0300a\u0301a\u0302a\u0303a\u0308a\u030Ac\u0327e\u0300"+
+        "e\u0301e\u0302e\u0308i\u0300i\u0301i\u0302i\u0308n\u0303o\u0300o\u0301"+
+        "o\u0302o\u0303o\u0308u\u0300u\u0301u\u0302u\u0308y\u0301y\u0308A\u0304"+
+        "a\u0304A\u0306a\u0306A\u0328a\u0328C\u0301c\u0301C\u0302c\u0302C\u0307"+
+        "c\u0307C\u030Cc\u030CD\u030Cd\u030CE\u0304e\u0304E\u0306e\u0306E\u0307"+
+        "e\u0307E\u0328e\u0328E\u030Ce\u030CG\u0302g\u0302G\u0306g\u0306G\u0307"+
+        "g\u0307G\u0327g\u0327H\u0302h\u0302I\u0303i\u0303I\u0304i\u0304I\u0306"+
+        "i\u0306I\u0328i\u0328I\u0307J\u0302j\u0302K\u0327k\u0327L\u0301l\u0301"+
+        "L\u0327l\u0327L\u030Cl\u030CN\u0301n\u0301N\u0327n\u0327N\u030Cn\u030C"+
+        "O\u0304o\u0304O\u0306o\u0306O\u030Bo\u030BR\u0301r\u0301R\u0327r\u0327"+
+        "R\u030Cr\u030CS\u0301s\u0301S\u0302s\u0302S\u0327s\u0327S\u030Cs\u030C"+
+        "T\u0327t\u0327T\u030Ct\u030CU\u0303u\u0303U\u0304u\u0304U\u0306u\u0306"+
+        "U\u030Au\u030AU\u030Bu\u030BU\u0328u\u0328W\u0302w\u0302Y\u0302y\u0302"+
+        "Y\u0308Z\u0301z\u0301Z\u0307z\u0307Z\u030Cz\u030CO\u031Bo\u031BU\u031B"+
+        "u\u031BA\u030Ca\u030CI\u030Ci\u030CO\u030Co\u030CU\u030Cu\u030CU\u0308"+
+        "\u0304u\u0308\u0304U\u0308\u0301u\u0308\u0301U\u0308\u030Cu\u0308\u030C"+
+        "U\u0308\u0300u\u0308\u0300A\u0308\u0304a\u0308\u0304A\u0307\u0304a\u0307"+
+        "\u0304\u00C6\u0304\u00E6\u0304G\u030Cg\u030CK\u030Ck\u030CO\u0328o\u0328"+
+        "O\u0328\u0304o\u0328\u0304\u01B7\u030C\u0292\u030Cj\u030CG\u0301g\u0301"+
+        "N\u0300n\u0300A\u030A\u0301a\u030A\u0301\u00C6\u0301\u00E6\u0301\u00D8"+
+        "\u0301\u00F8\u0301A\u030Fa\u030FA\u0311a\u0311E\u030Fe\u030FE\u0311e\u0311"+
+        "I\u030Fi\u030FI\u0311i\u0311O\u030Fo\u030FO\u0311o\u0311R\u030Fr\u030F"+
+        "R\u0311r\u0311U\u030Fu\u030FU\u0311u\u0311S\u0326s\u0326T\u0326t\u0326"+
+        "H\u030Ch\u030CA\u0307a\u0307E\u0327e\u0327O\u0308\u0304o\u0308\u0304O"+
+        "\u0303\u0304o\u0303\u0304O\u0307o\u0307O\u0307\u0304o\u0307\u0304Y\u0304"+
+        "y\u0304\u0300\u0301\u0313\u0308\u0301\u02B9;\u00A8\u0301\u0391\u0301\u00B7"+
+        "\u0395\u0301\u0397\u0301\u0399\u0301\u039F\u0301\u03A5\u0301\u03A9\u0301"+
+        "\u03B9\u0308\u0301\u0399\u0308\u03A5\u0308\u03B1\u0301\u03B5\u0301\u03B7"+
+        "\u0301\u03B9\u0301\u03C5\u0308\u0301\u03B9\u0308\u03C5\u0308\u03BF\u0301"+
+        "\u03C5\u0301\u03C9\u0301\u03D2\u0301\u03D2\u0308\u0415\u0300\u0415\u0308"+
+        "\u0413\u0301\u0406\u0308\u041A\u0301\u0418\u0300\u0423\u0306\u0418\u0306"+
+        "\u0438\u0306\u0435\u0300\u0435\u0308\u0433\u0301\u0456\u0308\u043A\u0301"+
+        "\u0438\u0300\u0443\u0306\u0474\u030F\u0475\u030F\u0416\u0306\u0436\u0306"+
+        "\u0410\u0306\u0430\u0306\u0410\u0308\u0430\u0308\u0415\u0306\u0435\u0306"+
+        "\u04D8\u0308\u04D9\u0308\u0416\u0308\u0436\u0308\u0417\u0308\u0437\u0308"+
+        "\u0418\u0304\u0438\u0304\u0418\u0308\u0438\u0308\u041E\u0308\u043E\u0308"+
+        "\u04E8\u0308\u04E9\u0308\u042D\u0308\u044D\u0308\u0423\u0304\u0443\u0304"+
+        "\u0423\u0308\u0443\u0308\u0423\u030B\u0443\u030B\u0427\u0308\u0447\u0308"+
+        "\u042B\u0308\u044B\u0308\u0627\u0653\u0627\u0654\u0648\u0654\u0627\u0655"+
+        "\u064A\u0654\u06D5\u0654\u06C1\u0654\u06D2\u0654\u0928\u093C\u0930\u093C"+
+        "\u0933\u093C\u0915\u093C\u0916\u093C\u0917\u093C\u091C\u093C\u0921\u093C"+
+        "\u0922\u093C\u092B\u093C\u092F\u093C\u09C7\u09BE\u09C7\u09D7\u09A1\u09BC"+
+        "\u09A2\u09BC\u09AF\u09BC\u0A32\u0A3C\u0A38\u0A3C\u0A16\u0A3C\u0A17\u0A3C"+
+        "\u0A1C\u0A3C\u0A2B\u0A3C\u0B47\u0B56\u0B47\u0B3E\u0B47\u0B57\u0B21\u0B3C"+
+        "\u0B22\u0B3C\u0B92\u0BD7\u0BC6\u0BBE\u0BC7\u0BBE\u0BC6\u0BD7\u0C46\u0C56"+
+        "\u0CBF\u0CD5\u0CC6\u0CD5\u0CC6\u0CD6\u0CC6\u0CC2\u0CC6\u0CC2\u0CD5\u0D46"+
+        "\u0D3E\u0D47\u0D3E\u0D46\u0D57\u0DD9\u0DCA\u0DD9\u0DCF\u0DD9\u0DCF\u0DCA"+
+        "\u0DD9\u0DDF\u0F42\u0FB7\u0F4C\u0FB7\u0F51\u0FB7\u0F56\u0FB7\u0F5B\u0FB7"+
+        "\u0F40\u0FB5\u0F71\u0F72\u0F71\u0F74\u0FB2\u0F80\u0FB3\u0F80\u0F71\u0F80"+
+        "\u0F92\u0FB7\u0F9C\u0FB7\u0FA1\u0FB7\u0FA6\u0FB7\u0FAB\u0FB7\u0F90\u0FB5"+
+        "\u1025\u102EA\u0325a\u0325B\u0307b\u0307B\u0323b\u0323B\u0331b\u0331C"+
+        "\u0327\u0301c\u0327\u0301D\u0307d\u0307D\u0323d\u0323D\u0331d\u0331D\u0327"+
+        "d\u0327D\u032Dd\u032DE\u0304\u0300e\u0304\u0300E\u0304\u0301e\u0304\u0301"+
+        "E\u032De\u032DE\u0330e\u0330E\u0327\u0306e\u0327\u0306F\u0307f\u0307G"+
+        "\u0304g\u0304H\u0307h\u0307H\u0323h\u0323H\u0308h\u0308H\u0327h\u0327"+
+        "H\u032Eh\u032EI\u0330i\u0330I\u0308\u0301i\u0308\u0301K\u0301k\u0301K"+
+        "\u0323k\u0323K\u0331k\u0331L\u0323l\u0323L\u0323\u0304l\u0323\u0304L\u0331"+
+        "l\u0331L\u032Dl\u032DM\u0301m\u0301M\u0307m\u0307M\u0323m\u0323N\u0307"+
+        "n\u0307N\u0323n\u0323N\u0331n\u0331N\u032Dn\u032DO\u0303\u0301o\u0303"+
+        "\u0301O\u0303\u0308o\u0303\u0308O\u0304\u0300o\u0304\u0300O\u0304\u0301"+
+        "o\u0304\u0301P\u0301p\u0301P\u0307p\u0307R\u0307r\u0307R\u0323r\u0323"+
+        "R\u0323\u0304r\u0323\u0304R\u0331r\u0331S\u0307s\u0307S\u0323s\u0323S"+
+        "\u0301\u0307s\u0301\u0307S\u030C\u0307s\u030C\u0307S\u0323\u0307s\u0323"+
+        "\u0307T\u0307t\u0307T\u0323t\u0323T\u0331t\u0331T\u032Dt\u032DU\u0324"+
+        "u\u0324U\u0330u\u0330U\u032Du\u032DU\u0303\u0301u\u0303\u0301U\u0304\u0308"+
+        "u\u0304\u0308V\u0303v\u0303V\u0323v\u0323W\u0300w\u0300W\u0301w\u0301"+
+        "W\u0308w\u0308W\u0307w\u0307W\u0323w\u0323X\u0307x\u0307X\u0308x\u0308"+
+        "Y\u0307y\u0307Z\u0302z\u0302Z\u0323z\u0323Z\u0331z\u0331h\u0331t\u0308"+
+        "w\u030Ay\u030A\u017F\u0307A\u0323a\u0323A\u0309a\u0309A\u0302\u0301a\u0302"+
+        "\u0301A\u0302\u0300a\u0302\u0300A\u0302\u0309a\u0302\u0309A\u0302\u0303"+
+        "a\u0302\u0303A\u0323\u0302a\u0323\u0302A\u0306\u0301a\u0306\u0301A\u0306"+
+        "\u0300a\u0306\u0300A\u0306\u0309a\u0306\u0309A\u0306\u0303a\u0306\u0303"+
+        "A\u0323\u0306a\u0323\u0306E\u0323e\u0323E\u0309e\u0309E\u0303e\u0303E"+
+        "\u0302\u0301e\u0302\u0301E\u0302\u0300e\u0302\u0300E\u0302\u0309e\u0302"+
+        "\u0309E\u0302\u0303e\u0302\u0303E\u0323\u0302e\u0323\u0302I\u0309i\u0309"+
+        "I\u0323i\u0323O\u0323o\u0323O\u0309o\u0309O\u0302\u0301o\u0302\u0301O"+
+        "\u0302\u0300o\u0302\u0300O\u0302\u0309o\u0302\u0309O\u0302\u0303o\u0302"+
+        "\u0303O\u0323\u0302o\u0323\u0302O\u031B\u0301o\u031B\u0301O\u031B\u0300"+
+        "o\u031B\u0300O\u031B\u0309o\u031B\u0309O\u031B\u0303o\u031B\u0303O\u031B"+
+        "\u0323o\u031B\u0323U\u0323u\u0323U\u0309u\u0309U\u031B\u0301u\u031B\u0301"+
+        "U\u031B\u0300u\u031B\u0300U\u031B\u0309u\u031B\u0309U\u031B\u0303u\u031B"+
+        "\u0303U\u031B\u0323u\u031B\u0323Y\u0300y\u0300Y\u0323y\u0323Y\u0309y\u0309"+
+        "Y\u0303y\u0303\u03B1\u0313\u03B1\u0314\u03B1\u0313\u0300\u03B1\u0314\u0300"+
+        "\u03B1\u0313\u0301\u03B1\u0314\u0301\u03B1\u0313\u0342\u03B1\u0314\u0342"+
+        "\u0391\u0313\u0391\u0314\u0391\u0313\u0300\u0391\u0314\u0300\u0391\u0313"+
+        "\u0301\u0391\u0314\u0301\u0391\u0313\u0342\u0391\u0314\u0342\u03B5\u0313"+
+        "\u03B5\u0314\u03B5\u0313\u0300\u03B5\u0314\u0300\u03B5\u0313\u0301\u03B5"+
+        "\u0314\u0301\u0395\u0313\u0395\u0314\u0395\u0313\u0300\u0395\u0314\u0300"+
+        "\u0395\u0313\u0301\u0395\u0314\u0301\u03B7\u0313\u03B7\u0314\u03B7\u0313"+
+        "\u0300\u03B7\u0314\u0300\u03B7\u0313\u0301\u03B7\u0314\u0301\u03B7\u0313"+
+        "\u0342\u03B7\u0314\u0342\u0397\u0313\u0397\u0314\u0397\u0313\u0300\u0397"+
+        "\u0314\u0300\u0397\u0313\u0301\u0397\u0314\u0301\u0397\u0313\u0342\u0397"+
+        "\u0314\u0342\u03B9\u0313\u03B9\u0314\u03B9\u0313\u0300\u03B9\u0314\u0300"+
+        "\u03B9\u0313\u0301\u03B9\u0314\u0301\u03B9\u0313\u0342\u03B9\u0314\u0342"+
+        "\u0399\u0313\u0399\u0314\u0399\u0313\u0300\u0399\u0314\u0300\u0399\u0313"+
+        "\u0301\u0399\u0314\u0301\u0399\u0313\u0342\u0399\u0314\u0342\u03BF\u0313"+
+        "\u03BF\u0314\u03BF\u0313\u0300\u03BF\u0314\u0300\u03BF\u0313\u0301\u03BF"+
+        "\u0314\u0301\u039F\u0313\u039F\u0314\u039F\u0313\u0300\u039F\u0314\u0300"+
+        "\u039F\u0313\u0301\u039F\u0314\u0301\u03C5\u0313\u03C5\u0314\u03C5\u0313"+
+        "\u0300\u03C5\u0314\u0300\u03C5\u0313\u0301\u03C5\u0314\u0301\u03C5\u0313"+
+        "\u0342\u03C5\u0314\u0342\u03A5\u0314\u03A5\u0314\u0300\u03A5\u0314\u0301"+
+        "\u03A5\u0314\u0342\u03C9\u0313\u03C9\u0314\u03C9\u0313\u0300\u03C9\u0314"+
+        "\u0300\u03C9\u0313\u0301\u03C9\u0314\u0301\u03C9\u0313\u0342\u03C9\u0314"+
+        "\u0342\u03A9\u0313\u03A9\u0314\u03A9\u0313\u0300\u03A9\u0314\u0300\u03A9"+
+        "\u0313\u0301\u03A9\u0314\u0301\u03A9\u0313\u0342\u03A9\u0314\u0342\u03B1"+
+        "\u0300\u03B1\u0301\u03B5\u0300\u03B5\u0301\u03B7\u0300\u03B7\u0301\u03B9"+
+        "\u0300\u03B9\u0301\u03BF\u0300\u03BF\u0301\u03C5\u0300\u03C5\u0301\u03C9"+
+        "\u0300\u03C9\u0301\u03B1\u0313\u0345\u03B1\u0314\u0345\u03B1\u0313\u0300"+
+        "\u0345\000\u03B1\u0314\u0300\u0345\000\u03B1\u0313\u0301\u0345\000\u03B1"+
+        "\u0314\u0301\u0345\000\u03B1\u0313\u0342\u0345\000\u03B1\u0314\u0342\u0345"+
+        "\000\u0391\u0313\u0345\u0391\u0314\u0345\u0391\u0313\u0300\u0345\000\u0391"+
+        "\u0314\u0300\u0345\000\u0391\u0313\u0301\u0345\000\u0391\u0314\u0301\u0345"+
+        "\000\u0391\u0313\u0342\u0345\000\u0391\u0314\u0342\u0345\000\u03B7\u0313"+
+        "\u0345\u03B7\u0314\u0345\u03B7\u0313\u0300\u0345\000\u03B7\u0314\u0300"+
+        "\u0345\000\u03B7\u0313\u0301\u0345\000\u03B7\u0314\u0301\u0345\000\u03B7"+
+        "\u0313\u0342\u0345\000\u03B7\u0314\u0342\u0345\000\u0397\u0313\u0345\u0397"+
+        "\u0314\u0345\u0397\u0313\u0300\u0345\000\u0397\u0314\u0300\u0345\000\u0397"+
+        "\u0313\u0301\u0345\000\u0397\u0314\u0301\u0345\000\u0397\u0313\u0342\u0345"+
+        "\000\u0397\u0314\u0342\u0345\000\u03C9\u0313\u0345\u03C9\u0314\u0345\u03C9"+
+        "\u0313\u0300\u0345\000\u03C9\u0314\u0300\u0345\000\u03C9\u0313\u0301\u0345"+
+        "\000\u03C9\u0314\u0301\u0345\000\u03C9\u0313\u0342\u0345\000\u03C9\u0314"+
+        "\u0342\u0345\000\u03A9\u0313\u0345\u03A9\u0314\u0345\u03A9\u0313\u0300"+
+        "\u0345\000\u03A9\u0314\u0300\u0345\000\u03A9\u0313\u0301\u0345\000\u03A9"+
+        "\u0314\u0301\u0345\000\u03A9\u0313\u0342\u0345\000\u03A9\u0314\u0342\u0345"+
+        "\000\u03B1\u0306\u03B1\u0304\u03B1\u0300\u0345\u03B1\u0345\u03B1\u0301"+
+        "\u0345\u03B1\u0342\u03B1\u0342\u0345\u0391\u0306\u0391\u0304\u0391\u0300"+
+        "\u0391\u0301\u0391\u0345\u03B9\u00A8\u0342\u03B7\u0300\u0345\u03B7\u0345"+
+        "\u03B7\u0301\u0345\u03B7\u0342\u03B7\u0342\u0345\u0395\u0300\u0395\u0301"+
+        "\u0397\u0300\u0397\u0301\u0397\u0345\u1FBF\u0300\u1FBF\u0301\u1FBF\u0342"+
+        "\u03B9\u0306\u03B9\u0304\u03B9\u0308\u0300\u03B9\u0308\u0301\u03B9\u0342"+
+        "\u03B9\u0308\u0342\u0399\u0306\u0399\u0304\u0399\u0300\u0399\u0301\u1FFE"+
+        "\u0300\u1FFE\u0301\u1FFE\u0342\u03C5\u0306\u03C5\u0304\u03C5\u0308\u0300"+
+        "\u03C5\u0308\u0301\u03C1\u0313\u03C1\u0314\u03C5\u0342\u03C5\u0308\u0342"+
+        "\u03A5\u0306\u03A5\u0304\u03A5\u0300\u03A5\u0301\u03A1\u0314\u00A8\u0300"+
+        "\u00A8\u0301`\u03C9\u0300\u0345\u03C9\u0345\u03C9\u0301\u0345\u03C9\u0342"+
+        "\u03C9\u0342\u0345\u039F\u0300\u039F\u0301\u03A9\u0300\u03A9\u0301\u03A9"+
+        "\u0345\u00B4\u2002\u2003\u03A9KA\u030A\u2190\u0338\u2192\u0338\u2194\u0338"+
+        "\u21D0\u0338\u21D4\u0338\u21D2\u0338\u2203\u0338\u2208\u0338\u220B\u0338"+
+        "\u2223\u0338\u2225\u0338\u223C\u0338\u2243\u0338\u2245\u0338\u2248\u0338"+
+        "=\u0338\u2261\u0338\u224D\u0338<\u0338>\u0338\u2264\u0338\u2265\u0338"+
+        "\u2272\u0338\u2273\u0338\u2276\u0338\u2277\u0338\u227A\u0338\u227B\u0338"+
+        "\u2282\u0338\u2283\u0338\u2286\u0338\u2287\u0338\u22A2\u0338\u22A8\u0338"+
+        "\u22A9\u0338\u22AB\u0338\u227C\u0338\u227D\u0338\u2291\u0338\u2292\u0338"+
+        "\u22B2\u0338\u22B3\u0338\u22B4\u0338\u22B5\u0338\u3008\u3009\u304B\u3099"+
+        "\u304D\u3099\u304F\u3099\u3051\u3099\u3053\u3099\u3055\u3099\u3057\u3099"+
+        "\u3059\u3099\u305B\u3099\u305D\u3099\u305F\u3099\u3061\u3099\u3064\u3099"+
+        "\u3066\u3099\u3068\u3099\u306F\u3099\u306F\u309A\u3072\u3099\u3072\u309A"+
+        "\u3075\u3099\u3075\u309A\u3078\u3099\u3078\u309A\u307B\u3099\u307B\u309A"+
+        "\u3046\u3099\u309D\u3099\u30AB\u3099\u30AD\u3099\u30AF\u3099\u30B1\u3099"+
+        "\u30B3\u3099\u30B5\u3099\u30B7\u3099\u30B9\u3099\u30BB\u3099\u30BD\u3099"+
+        "\u30BF\u3099\u30C1\u3099\u30C4\u3099\u30C6\u3099\u30C8\u3099\u30CF\u3099"+
+        "\u30CF\u309A\u30D2\u3099\u30D2\u309A\u30D5\u3099\u30D5\u309A\u30D8\u3099"+
+        "\u30D8\u309A\u30DB\u3099\u30DB\u309A\u30A6\u3099\u30EF\u3099\u30F0\u3099"+
+        "\u30F1\u3099\u30F2\u3099\u30FD\u3099\u8C48\u66F4\u8ECA\u8CC8\u6ED1\u4E32"+
+        "\u53E5\u9F9C\u9F9C\u5951\u91D1\u5587\u5948\u61F6\u7669\u7F85\u863F\u87BA"+
+        "\u88F8\u908F\u6A02\u6D1B\u70D9\u73DE\u843D\u916A\u99F1\u4E82\u5375\u6B04"+
+        "\u721B\u862D\u9E1E\u5D50\u6FEB\u85CD\u8964\u62C9\u81D8\u881F\u5ECA\u6717"+
+        "\u6D6A\u72FC\u90CE\u4F86\u51B7\u52DE\u64C4\u6AD3\u7210\u76E7\u8001\u8606"+
+        "\u865C\u8DEF\u9732\u9B6F\u9DFA\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u8AD6"+
+        "\u58DF\u5F04\u7C60\u807E\u7262\u78CA\u8CC2\u96F7\u58D8\u5C62\u6A13\u6DDA"+
+        "\u6F0F\u7D2F\u7E37\u96FB\u52D2\u808B\u51DC\u51CC\u7A1C\u7DBE\u83F1\u9675"+
+        "\u8B80\u62CF\u6A02\u8AFE\u4E39\u5BE7\u6012\u7387\u7570\u5317\u78FB\u4FBF"+
+        "\u5FA9\u4E0D\u6CCC\u6578\u7D22\u53C3\u585E\u7701\u8449\u8AAA\u6BBA\u8FB0"+
+        "\u6C88\u62FE\u82E5\u63A0\u7565\u4EAE\u5169\u51C9\u6881\u7CE7\u826F\u8AD2"+
+        "\u91CF\u52F5\u5442\u5973\u5EEC\u65C5\u6FFE\u792A\u95AD\u9A6A\u9E97\u9ECE"+
+        "\u529B\u66C6\u6B77\u8F62\u5E74\u6190\u6200\u649A\u6F23\u7149\u7489\u79CA"+
+        "\u7DF4\u806F\u8F26\u84EE\u9023\u934A\u5217\u52A3\u54BD\u70C8\u88C2\u8AAA"+
+        "\u5EC9\u5FF5\u637B\u6BAE\u7C3E\u7375\u4EE4\u56F9\u5BE7\u5DBA\u601C\u73B2"+
+        "\u7469\u7F9A\u8046\u9234\u96F6\u9748\u9818\u4F8B\u79AE\u91B4\u96B8\u60E1"+
+        "\u4E86\u50DA\u5BEE\u5C3F\u6599\u6A02\u71CE\u7642\u84FC\u907C\u9F8D\u6688"+
+        "\u962E\u5289\u677B\u67F3\u6D41\u6E9C\u7409\u7559\u786B\u7D10\u985E\u516D"+
+        "\u622E\u9678\u502B\u5D19\u6DEA\u8F2A\u5F8B\u6144\u6817\u7387\u9686\u5229"+
+        "\u540F\u5C65\u6613\u674E\u68A8\u6CE5\u7406\u75E2\u7F79\u88CF\u88E1\u91CC"+
+        "\u96E2\u533F\u6EBA\u541D\u71D0\u7498\u85FA\u96A3\u9C57\u9E9F\u6797\u6DCB"+
+        "\u81E8\u7ACB\u7B20\u7C92\u72C0\u7099\u8B58\u4EC0\u8336\u523A\u5207\u5EA6"+
+        "\u62D3\u7CD6\u5B85\u6D1E\u66B4\u8F3B\u884C\u964D\u898B\u5ED3\u5140\u55C0"+
+        "\u585A\u6674\u51DE\u732A\u76CA\u793C\u795E\u7965\u798F\u9756\u7CBE\u7FBD"+
+        "\u8612\u8AF8\u9038\u90FD\u98EF\u98FC\u9928\u9DB4\u05D9\u05B4\u05F2\u05B7"+
+        "\u05E9\u05C1\u05E9\u05C2\u05E9\u05BC\u05C1\u05E9\u05BC\u05C2\u05D0\u05B7"+
+        "\u05D0\u05B8\u05D0\u05BC\u05D1\u05BC\u05D2\u05BC\u05D3\u05BC\u05D4\u05BC"+
+        "\u05D5\u05BC\u05D6\u05BC\u05D8\u05BC\u05D9\u05BC\u05DA\u05BC\u05DB\u05BC"+
+        "\u05DC\u05BC\u05DE\u05BC\u05E0\u05BC\u05E1\u05BC\u05E3\u05BC\u05E4\u05BC"+
+        "\u05E6\u05BC\u05E7\u05BC\u05E8\u05BC\u05E9\u05BC\u05EA\u05BC\u05D5\u05B9"+
+        "\u05D1\u05BF\u05DB\u05BF\u05E4\u05BF"
+    ;
+
+    static final CompactByteArray canonClass = new CompactByteArray(
+        "\000\u0200\uA5A5\006\000\u0080\000\000\u0100\000\u0180\u0200\u0280\u0300"+
+        "\000\000\000\u0380\uA5A5\004\u0400\u0480\u0500\u0480\u0480\u0580\u0600"+
+        "\u0680\u0700\u0780\u0800\uA5A5\016\000\u0880\000\u0900\uA5A5\017\000\u0980"+
+        "\uA5A5\036\000\u0A00\u0A80\uA5A5\u0194\000\u0B00\uA5A5\005\000\u0B80\000"+
+        "\000\000"
+        ,
+        "\000\u0C00\uA580\u00A5\u15E6\uE8A5\u04DC\uE8D8\uA505\uDCCA\uCAA5\u04DC"+
+        "\uCACA\uA50B\uDCA5\u0501\uA504\uDCA5\u08E6\uF0E6\uDCDC\uDCE6\uE6E6\uDCDC"+
+        "\uA511\u00EA\uEAE9\uA520\u00A5\u04E6\uA58A\u00DC\uA504\uE6DC\uE6E6\uE6DE"+
+        "\uDCA5\u06E6\u00A5\u05DC\uE6E6\uDCE6\uE6DE\uE4E6\u0A0B\u0C0D\u0E0F\u1011"+
+        "\u1213\024\u1516\027\030\u1900\uE6A5\u8600\u1B1C\u1D1E\u1F20\u2122\uE6E6"+
+        "\uDCA5\u1A00\u23A5\u6500\uA507\uE600\u00A5\u04E6\uDCE6\000\uE6E6\u00DC"+
+        "\uE6E6\uDCA5\u2300\u24A5\u1E00\uE6DC\uE6E6\uDCE6\uE6DC\uDCDC\uE6DC\uDCE6"+
+        "\uDCE6\uE6E6\uDCE6\uDCE6\uDCE6\uDCE6\uE6A5\u7100\u07A5\u1000\u0900\000"+
+        "\uE6DC\uE6E6\uA567\007\uA510\011\uA57F\011\uA57F\011\uA507T\u5BA5\u7300"+
+        "\u09A5\u6D00\u6767\u09A5\u0D00\uA504\u6BA5\u6C00\u7676\uA50E\u00A5\u047A"+
+        "\uA54C\u00DC\uDCA5\u1B00\uDC00\uDC00\uD8A5\u3700\u8182\u0084\uA505\u00A5"+
+        "\u0482\000\u8200\uE6E6\u0900\uE6E6\uA53E\u00DC\uA570\007\011\uA598\011"+
+        "\uA556\u00E4\uA5A6\u00E6\uE601\u01A5\u04E6\u0101\u01E6\uE6A5\u0400\uE6A5"+
+        "\u4800\uDAE4\uE8DE\uE0E0\uA569\010\u08A5\u8300\u1AA5\u8100\uA504\uE6A5"+
+        "\u5C00"
+        );
+}
diff --git a/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java b/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java
new file mode 100644
index 0000000..e55d079
--- /dev/null
+++ b/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java
@@ -0,0 +1,560 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.Vector;
+import java.util.Stack;
+import com.ibm.icu.impl.Assert;
+import java.text.CharacterIterator;
+import java.io.InputStream;
+import java.io.IOException;
+
+
+/**
+ * A subclass of RuleBasedBreakIterator that adds the ability to use a dictionary
+ * to further subdivide ranges of text beyond what is possible using just the
+ * state-table-based algorithm.  This is necessary, for example, to handle
+ * word and line breaking in Thai, which doesn't use spaces between words.  The
+ * state-table-based algorithm used by RuleBasedBreakIterator_Old is used to divide
+ * up text as far as possible, and then contiguous ranges of letters are
+ * repeatedly compared against a list of known words (i.e., the dictionary)
+ * to divide them up into words.
+ *
+ * DictionaryBasedBreakIterator uses the same rule language as RuleBasedBreakIterator_Old,
+ * but adds one more special substitution name: _dictionary_.  This substitution
+ * name is used to identify characters in words in the dictionary.  The idea is that
+ * if the iterator passes over a chunk of text that includes two or more characters
+ * in a row that are included in _dictionary_, it goes back through that range and
+ * derives additional break positions (if possible) using the dictionary.
+ *
+ * DictionaryBasedBreakIterator is also constructed with the filename of a dictionary
+ * file.  It uses Class.getResource() to locate the dictionary file.  The
+ * dictionary file is in a serialized binary format.  We have a very primitive (and
+ * slow) BuildDictionaryFile utility for creating dictionary files, but aren't
+ * currently making it public.  Contact us for help.
+ *
+ * @stable ICU 2.0
+ */
+public class DictionaryBasedBreakIterator extends RuleBasedBreakIterator {
+    
+    /**
+     * Keeps track of if we are using the compact trie dictionary.
+     */
+    private boolean usingCTDictionary = false;
+    /**
+     * a list of known words that is used to divide up contiguous ranges of letters,
+     * stored in a compressed, indexed, format that offers fast access
+     */
+    private BreakDictionary dictionary;
+
+    /*
+     * a list of flags indicating which character categories are contained in
+     * the dictionary file (this is used to determine which ranges of characters
+     * to apply the dictionary to)
+     */
+    //private boolean[] categoryFlags;
+
+
+    /**
+     * when a range of characters is divided up using the dictionary, the break
+     * positions that are discovered are stored here, preventing us from having
+     * to use either the dictionary or the state table again until the iterator
+     * leaves this range of text
+     */
+    int[] cachedBreakPositions;
+
+    /**
+     * if cachedBreakPositions is not null, this indicates which item in the
+     * cache the current iteration position refers to
+     */
+    int positionInCache;
+
+    /**
+     * Special variable name for characters in words in dictionary
+     */
+    
+    /**
+     * Construct a DictionarBasedBreakIterator from precompiled rules. Use by ThaiBreakEngine
+     * uses the BreakCTDictionary.
+     * @param compiledRules an input stream containing the binary (flattened) compiled rules.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected DictionaryBasedBreakIterator(InputStream compiledRules) throws IOException {
+        fRData = RBBIDataWrapper.get(compiledRules);   // Init the RBBI part of this iterator.
+        dictionary = null;
+        usingCTDictionary = true;
+    }
+    /**
+     * Constructs a DictionaryBasedBreakIterator.
+     * @param rules Same as the rules parameter on RuleBasedBreakIterator,
+     * except for the special meaning of "_dictionary_".  This parameter is just
+     * passed through to RuleBasedBreakIterator constructor.
+     * @param dictionaryStream the stream containing the dictionary data
+     * @stable ICU 2.0
+     */
+    public DictionaryBasedBreakIterator(String rules,
+                                        InputStream dictionaryStream) throws IOException {
+        super(rules);
+        dictionary = new BreakDictionary(dictionaryStream);
+    }
+
+    
+    /**
+     * Construct a DictionarBasedBreakIterator from precompiled rules.
+     * @param compiledRules an input stream containing the binary (flattened) compiled rules.
+     * @param dictionaryStream an input stream containing the dictionary data
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public DictionaryBasedBreakIterator(InputStream compiledRules,
+                                         InputStream dictionaryStream) throws IOException {
+       fRData = RBBIDataWrapper.get(compiledRules);   // Init the RBBI part of this iterator.
+       dictionary = new BreakDictionary(dictionaryStream);
+    }
+                    
+
+    /** @stable ICU 2.0 */
+    public void setText(CharacterIterator newText) {
+        super.setText(newText);
+        cachedBreakPositions = null;
+        fDictionaryCharCount = 0;
+        positionInCache = 0;
+    }
+
+    /**
+     * Sets the current iteration position to the beginning of the text.
+     * (i.e., the CharacterIterator's starting offset).
+     * @return The offset of the beginning of the text.
+     * @stable ICU 2.0
+     */
+    public int first() {
+        cachedBreakPositions = null;
+        fDictionaryCharCount = 0;
+        positionInCache = 0;
+        return super.first();
+    }
+
+    /**
+     * Sets the current iteration position to the end of the text.
+     * (i.e., the CharacterIterator's ending offset).
+     * @return The text's past-the-end offset.
+     * @stable ICU 2.0
+     */
+    public int last() {
+        cachedBreakPositions = null;
+        fDictionaryCharCount = 0;
+        positionInCache = 0;
+        return super.last();
+    }
+
+    /**
+     * Advances the iterator one step backwards.
+     * @return The position of the last boundary position before the
+     * current iteration position
+     * @stable ICU 2.0
+     */
+    public int previous() {
+        CharacterIterator text = getText();
+
+        // if we have cached break positions and we're still in the range
+        // covered by them, just move one step backward in the cache
+        if (cachedBreakPositions != null && positionInCache > 0) {
+            --positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+
+        // otherwise, dump the cache and use the inherited previous() method to move
+        // backward.  This may fill up the cache with new break positions, in which
+        // case we have to mark our position in the cache. If it doesn't, use next()
+        // to move forward until we hit or pass the current position. This *will* fill
+        // the cache.
+        else {
+            cachedBreakPositions = null;
+            int offset = current();
+            int result = super.previous();
+            
+            if (cachedBreakPositions != null) {
+                positionInCache = cachedBreakPositions.length - 2;
+                return result;
+            }
+            
+            while (result < offset) {
+                int nextResult = next();
+                
+                if (nextResult >= offset) {
+                    break;
+                }
+                
+                result = nextResult;
+            }
+            
+            if (cachedBreakPositions != null) {
+                positionInCache = cachedBreakPositions.length - 2;
+            }
+            
+            if (result != BreakIterator.DONE) {
+                text.setIndex(result);
+            }
+            
+            return result;
+        }
+    }
+
+    /**
+     * Sets the current iteration position to the last boundary position
+     * before the specified position.
+     * @param offset The position to begin searching from
+     * @return The position of the last boundary before "offset"
+     * @stable ICU 2.0
+     */
+    public int preceding(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+
+        // if we have no cached break positions, or "offset" is outside the
+        // range covered by the cache, we can just call the inherited routine
+        // (which will eventually call other routines in this class that may
+        // refresh the cache)
+        if (cachedBreakPositions == null || offset <= cachedBreakPositions[0] ||
+                offset > cachedBreakPositions[cachedBreakPositions.length - 1]) {
+            cachedBreakPositions = null;
+            return super.preceding(offset);
+        }
+
+        // on the other hand, if "offset" is within the range covered by the cache,
+        // then all we have to do is search the cache for the last break position
+        // before "offset"
+        else {
+            positionInCache = 0;
+            while (positionInCache < cachedBreakPositions.length
+                   && offset > cachedBreakPositions[positionInCache])
+                ++positionInCache;
+            --positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return text.getIndex();
+        }
+    }
+
+    /**
+     * Sets the current iteration position to the first boundary position after
+     * the specified position.
+     * @param offset The position to begin searching forward from
+     * @return The position of the first boundary after "offset"
+     * @stable ICU 2.0
+     */
+    public int following(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+
+        // if we have no cached break positions, or if "offset" is outside the
+        // range covered by the cache, then dump the cache and call our
+        // inherited following() method.  This will call other methods in this
+        // class that may refresh the cache.
+        if (cachedBreakPositions == null || offset < cachedBreakPositions[0] ||
+                offset >= cachedBreakPositions[cachedBreakPositions.length - 1]) {
+            cachedBreakPositions = null;
+            return super.following(offset);
+        }
+
+        // on the other hand, if "offset" is within the range covered by the
+        // cache, then just search the cache for the first break position
+        // after "offset"
+        else {
+            positionInCache = 0;
+            while (positionInCache < cachedBreakPositions.length
+                   && offset >= cachedBreakPositions[positionInCache])
+                ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return text.getIndex();
+        }
+    }
+    
+    
+    /**
+     * Return the status tag from the break rule that determined the most recently
+     * returned break position. 
+     * 
+     * TODO:  not supported with dictionary based break iterators.
+     *
+     * @return the status from the break rule that determined the most recently
+     * returned break position.
+     * @draft ICU 3.0
+     * @provisional This API might change or be removed in a future release.
+     */
+     public int getRuleStatus() {
+        return 0;
+     }
+
+
+    /**
+     * Get the status (tag) values from the break rule(s) that determined the most 
+     * recently returned break position.  The values appear in the rule source
+     * within brackets, {123}, for example.  The default status value for rules
+     * that do not explicitly provide one is zero.
+     * <p>
+     * TODO: not supported for dictionary based break iterator. 
+     *
+     * @param fillInArray an array to be filled in with the status values.  
+     * @return          The number of rule status values from rules that determined 
+     *                  the most recent boundary returned by the break iterator.
+     *                  In the event that the array is too small, the return value
+     *                  is the total number of status values that were available,
+     *                  not the reduced number that were actually returned.
+     * @draft ICU 3.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRuleStatusVec(int[] fillInArray) {
+        if (fillInArray != null && fillInArray.length>=1) {  
+            fillInArray[0] = 0;
+        }
+        return 1;
+    }
+    /**
+     * This is the implementation function for next().
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleNext() {
+        CharacterIterator text = getText();
+
+        // if there are no cached break positions, or if we've just moved
+        // off the end of the range covered by the cache, we have to dump
+        // and possibly regenerate the cache
+        if (cachedBreakPositions == null || positionInCache == cachedBreakPositions.length - 1) {
+
+            // start by using the inherited handleNext() to find a tentative return
+            // value.   dictionaryCharCount tells us how many dictionary characters
+            // we passed over on our way to the tentative return value
+            int startPos = text.getIndex();
+            fDictionaryCharCount = 0;
+            int result = super.handleNext();
+
+            // if we passed over more than one dictionary character, then we use
+            // divideUpDictionaryRange() to regenerate the cached break positions
+            // for the new range.
+            if (!usingCTDictionary && fDictionaryCharCount > 1 && result - startPos > 1) {
+                divideUpDictionaryRange(startPos, result);
+            }
+
+            // otherwise, the value we got back from the inherited fuction
+            // is our return value, and we can dump the cache
+            else {
+                cachedBreakPositions = null;
+                return result;
+            }
+        }
+
+        // if the cache of break positions has been regenerated (or existed all
+        // along), then just advance to the next break position in the cache
+        // and return it
+        if (cachedBreakPositions != null) {
+            ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+        Assert.assrt(false);
+        return -9999;   // SHOULD NEVER GET HERE!
+    }
+
+    /**
+     * This is the function that actually implements the dictionary-based
+     * algorithm.  Given the endpoints of a range of text, it uses the
+     * dictionary to determine the positions of any boundaries in this
+     * range.  It stores all the boundary positions it discovers in
+     * cachedBreakPositions so that we only have to do this work once
+     * for each time we enter the range.
+     */
+    private void divideUpDictionaryRange(int startPos, int endPos) {
+        CharacterIterator text = getText();
+
+        // the range we're dividing may begin or end with non-dictionary characters
+        // (i.e., for line breaking, we may have leading or trailing punctuation
+        // that needs to be kept with the word).  Seek from the beginning of the
+        // range to the first dictionary character
+        text.setIndex(startPos);
+        int c = CICurrent32(text);
+        while (isDictionaryChar(c) == false) {  
+            c = CINext32(text);
+        }
+        
+        //System.out.println("\nDividing up range from " + (text.getIndex() + 1) + " to " + endPos);
+
+        // initialize.  We maintain two stacks: currentBreakPositions contains
+        // the list of break positions that will be returned if we successfully
+        // finish traversing the whole range now.  possibleBreakPositions lists
+        // all other possible word ends we've passed along the way.  (Whenever
+        // we reach an error [a sequence of characters that can't begin any word
+        // in the dictionary], we back up, possibly delete some breaks from
+        // currentBreakPositions, move a break from possibleBreakPositions
+        // to currentBreakPositions, and start over from there.  This process
+        // continues in this way until we either successfully make it all the way
+        // across the range, or exhaust all of our combinations of break
+        // positions.)
+        Stack currentBreakPositions = new Stack();
+        Stack possibleBreakPositions = new Stack();
+        Vector wrongBreakPositions = new Vector();
+
+        // the dictionary is implemented as a trie, which is treated as a state
+        // machine.  -1 represents the end of a legal word.  Every word in the
+        // dictionary is represented by a path from the root node to -1.  A path
+        // that ends in state 0 is an illegal combination of characters.
+        int state = 0;
+
+        // these two variables are used for error handling.  We keep track of the
+        // farthest we've gotten through the range being divided, and the combination
+        // of breaks that got us that far.  If we use up all possible break
+        // combinations, the text contains an error or a word that's not in the
+        // dictionary.  In this case, we "bless" the break positions that got us the
+        // farthest as real break positions, and then start over from scratch with
+        // the character where the error occurred.
+        int farthestEndPoint = text.getIndex();
+        Stack bestBreakPositions = null;
+
+        // initialize (we always exit the loop with a break statement)
+        c = CICurrent32(text);
+        while (true) {
+//System.out.print("c = " + Integer.toString(c, 16) + ", pos = " + text.getIndex());
+
+            // if we can transition to state "-1" from our current state, we're
+            // on the last character of a legal word.  Push that position onto
+            // the possible-break-positions stack
+            if (dictionary.at(state, 0) == -1) {
+                possibleBreakPositions.push(new Integer(text.getIndex()));
+            }
+
+            // look up the new state to transition to in the dictionary
+            //    There will be no supplementaries here because the Thai dictionary
+            //     does not include any.  This code is going away soon, not worth
+            //     fixing.
+            state = (dictionary.at(state, (char)c)) & 0xFFFF;  // TODO: fix supplementaries
+//System.out.print(", state = " + state);
+
+            // if the character we're sitting on causes us to transition to
+            // the "end of word" state, then it was a non-dictionary character
+            // and we've successfully traversed the whole range.  Drop out
+            // of the loop.
+            if (state == /*-1*/ 0xFFFF) {
+                currentBreakPositions.push(new Integer(text.getIndex()));
+                break;
+            }
+
+            // if the character we're sitting on causes us to transition to
+            // the error state, or if we've gone off the end of the range
+            // without transitioning to the "end of word" state, we've hit
+            // an error...
+            else if (state == 0 || text.getIndex() >= endPos) {
+
+                // if this is the farthest we've gotten, take note of it in
+                // case there's an error in the text
+                if (text.getIndex() > farthestEndPoint) {
+                    farthestEndPoint = text.getIndex();
+                    bestBreakPositions = (Stack)(currentBreakPositions.clone());
+                }
+
+                // wrongBreakPositions is a list of all break positions we've tried starting
+                // that didn't allow us to traverse all the way through the text.  Every time
+                // we pop a break position off of currentBreakPositions, we put it into
+                // wrongBreakPositions to avoid trying it again later.  If we make it to this
+                // spot, we're either going to back up to a break in possibleBreakPositions
+                // and try starting over from there, or we've exhausted all possible break
+                // positions and are going to do the fallback procedure.  This loop prevents
+                // us from messing with anything in possibleBreakPositions that didn't work as
+                // a starting point the last time we tried it (this is to prevent a bunch of
+                // repetitive checks from slowing down some extreme cases)
+                // variable not used Integer newStartingSpot = null;
+                while (!possibleBreakPositions.isEmpty() && wrongBreakPositions.contains(
+                            possibleBreakPositions.peek())) {
+                    possibleBreakPositions.pop();
+                }
+
+                // if we've used up all possible break-position combinations, there's
+                // an error or an unknown word in the text.  In this case, we start
+                // over, treating the farthest character we've reached as the beginning
+                // of the range, and "blessing" the break positions that got us that
+                // far as real break positions
+                if (possibleBreakPositions.isEmpty()) {
+                    if (bestBreakPositions != null) {
+                        currentBreakPositions = bestBreakPositions;
+                        if (farthestEndPoint < endPos) {
+                            text.setIndex(farthestEndPoint + 1);
+                        }
+                        else {
+                            break;
+                        }
+                    }
+                    else {
+                        if ((currentBreakPositions.size() == 0
+                                || ((Integer)(currentBreakPositions.peek())).intValue() != text.getIndex())
+                                && text.getIndex() != startPos) {
+                            currentBreakPositions.push(new Integer(text.getIndex()));
+                        }
+                        CINext32(text);
+                        currentBreakPositions.push(new Integer(text.getIndex()));
+                    }
+                }
+
+                // if we still have more break positions we can try, then promote the
+                // last break in possibleBreakPositions into currentBreakPositions,
+                // and get rid of all entries in currentBreakPositions that come after
+                // it.  Then back up to that position and start over from there (i.e.,
+                // treat that position as the beginning of a new word)
+                else {
+                    Integer temp = (Integer)possibleBreakPositions.pop();
+                    Object temp2 = null;
+                    while (!currentBreakPositions.isEmpty() && temp.intValue() <
+                           ((Integer)currentBreakPositions.peek()).intValue()) {
+                        temp2 = currentBreakPositions.pop();
+                        wrongBreakPositions.addElement(temp2);
+                    }
+                    currentBreakPositions.push(temp);
+                    text.setIndex(((Integer)currentBreakPositions.peek()).intValue());
+                }
+
+                // re-sync "c" for the next go-round, and drop out of the loop if
+                // we've made it off the end of the range
+                c = CICurrent32(text);
+                state = 0;
+                if (text.getIndex() >= endPos) {
+                    break;
+                }
+            }
+
+            // if we didn't hit any exceptional conditions on this last iteration,
+            // just advance to the next character and loop
+            else {
+                c = CINext32(text);
+            }
+//System.out.print(", possibleBreakPositions = { "); for (int i = 0; i < possibleBreakPositions.size(); i++) System.out.print(possibleBreakPositions.elementAt(i) + " "); System.out.print("}");
+//System.out.print(", currentBreakPositions = { "); for (int i = 0; i < currentBreakPositions.size(); i++) System.out.print(currentBreakPositions.elementAt(i) + " "); System.out.println("}");
+        }
+
+        // dump the last break position in the list, and replace it with the actual
+        // end of the range (which may be the same character, or may be further on
+        // because the range actually ended with non-dictionary characters we want to
+        // keep with the word)
+        if (!currentBreakPositions.isEmpty()) {
+            currentBreakPositions.pop();
+        }
+        currentBreakPositions.push(new Integer(endPos));
+
+        // create a regular array to hold the break positions and copy
+        // the break positions from the stack to the array (in addition,
+        // our starting position goes into this array as a break position).
+        // This array becomes the cache of break positions used by next()
+        // and previous(), so this is where we actually refresh the cache.
+        cachedBreakPositions = new int[currentBreakPositions.size() + 1];
+        cachedBreakPositions[0] = startPos;
+
+        for (int i = 0; i < currentBreakPositions.size(); i++) {
+            cachedBreakPositions[i + 1] = ((Integer)currentBreakPositions.elementAt(i)).intValue();
+        }
+        positionInCache = 0;
+    }
+}
diff --git a/src/com/ibm/icu/text/DigitList.java b/src/com/ibm/icu/text/DigitList.java
new file mode 100644
index 0000000..e5b240a
--- /dev/null
+++ b/src/com/ibm/icu/text/DigitList.java
@@ -0,0 +1,865 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.math.BigInteger;
+
+/**
+ * <code>DigitList</code> handles the transcoding between numeric values and
+ * strings of characters.  It only represents non-negative numbers.  The
+ * division of labor between <code>DigitList</code> and
+ * <code>DecimalFormat</code> is that <code>DigitList</code> handles the radix
+ * 10 representation issues and numeric conversion, including rounding;
+ * <code>DecimalFormat</code> handles the locale-specific issues such as
+ * positive and negative representation, digit grouping, decimal point,
+ * currency, and so on.
+ *
+ * <p>A <code>DigitList</code> is a representation of a finite numeric value.
+ * <code>DigitList</code> objects do not represent <code>NaN</code> or infinite
+ * values.  A <code>DigitList</code> value can be converted to a
+ * <code>BigDecimal</code> without loss of precision.  Conversion to other
+ * numeric formats may involve loss of precision, depending on the specific
+ * value.
+ *
+ * <p>The <code>DigitList</code> representation consists of a string of
+ * characters, which are the digits radix 10, from '0' to '9'.  It also has a
+ * base 10 exponent associated with it.  The value represented by a
+ * <code>DigitList</code> object can be computed by mulitplying the fraction
+ * <em>f</em>, where 0 <= <em>f</em> < 1, derived by placing all the digits of
+ * the list to the right of the decimal point, by 10^exponent.
+ *
+ * @see java.util.Locale
+ * @see java.text.Format
+ * @see NumberFormat
+ * @see DecimalFormat
+ * @see java.text.ChoiceFormat
+ * @see java.text.MessageFormat
+ * @version      1.18 08/12/98
+ * @author       Mark Davis, Alan Liu
+ * */
+final class DigitList {
+    /**
+     * The maximum number of significant digits in an IEEE 754 double, that
+     * is, in a Java double.  This must not be increased, or garbage digits
+     * will be generated, and should not be decreased, or accuracy will be lost.
+     */
+    public static final int MAX_LONG_DIGITS = 19; // == Long.toString(Long.MAX_VALUE).length()
+    public static final int DBL_DIG = 17;
+
+    /**
+     * These data members are intentionally public and can be set directly.
+     *
+     * The value represented is given by placing the decimal point before
+     * digits[decimalAt].  If decimalAt is < 0, then leading zeros between
+     * the decimal point and the first nonzero digit are implied.  If decimalAt
+     * is > count, then trailing zeros between the digits[count-1] and the
+     * decimal point are implied.
+     *
+     * Equivalently, the represented value is given by f * 10^decimalAt.  Here
+     * f is a value 0.1 <= f < 1 arrived at by placing the digits in Digits to
+     * the right of the decimal.
+     *
+     * DigitList is normalized, so if it is non-zero, figits[0] is non-zero.  We
+     * don't allow denormalized numbers because our exponent is effectively of
+     * unlimited magnitude.  The count value contains the number of significant
+     * digits present in digits[].
+     *
+     * Zero is represented by any DigitList with count == 0 or with each digits[i]
+     * for all i <= count == '0'.
+     */
+    public int decimalAt = 0;
+    public int count = 0;
+    public byte[] digits = new byte[MAX_LONG_DIGITS];
+
+    private final void ensureCapacity(int digitCapacity, int digitsToCopy) {
+        if (digitCapacity > digits.length) {
+            byte[] newDigits = new byte[digitCapacity * 2];
+            System.arraycopy(digits, 0, newDigits, 0, digitsToCopy);
+            digits = newDigits;
+        }
+    }
+
+    /**
+     * Return true if the represented number is zero.
+     */
+    boolean isZero()
+    {
+        for (int i=0; i<count; ++i) if (digits[i] != '0') return false;
+        return true;
+    }
+
+// Unused as of ICU 2.6 - alan
+//    /**
+//     * Clears out the digits.
+//     * Use before appending them.
+//     * Typically, you set a series of digits with append, then at the point
+//     * you hit the decimal point, you set myDigitList.decimalAt = myDigitList.count;
+//     * then go on appending digits.
+//     */
+//    public void clear () {
+//        decimalAt = 0;
+//        count = 0;
+//    }
+
+    /**
+     * Appends digits to the list.
+     */
+    public void append (int digit) {
+        ensureCapacity(count+1, count);
+        digits[count++] = (byte) digit;
+    }
+    /**
+     * Utility routine to get the value of the digit list
+     * If (count == 0) this throws a NumberFormatException, which
+     * mimics Long.parseLong().
+     */
+    public final double getDouble() {
+        if (count == 0) return 0.0;
+        StringBuffer temp = new StringBuffer(count);
+        temp.append('.');
+        for (int i = 0; i < count; ++i) temp.append((char)(digits[i]));
+        temp.append('E');
+        temp.append(Integer.toString(decimalAt));
+        return Double.valueOf(temp.toString()).doubleValue();
+        // long value = Long.parseLong(temp.toString());
+        // return (value * Math.pow(10, decimalAt - count));
+    }
+
+    /**
+     * Utility routine to get the value of the digit list.
+     * If (count == 0) this returns 0, unlike Long.parseLong().
+     */
+    public final long getLong() {
+        // for now, simple implementation; later, do proper IEEE native stuff
+
+        if (count == 0) return 0;
+
+        // We have to check for this, because this is the one NEGATIVE value
+        // we represent.  If we tried to just pass the digits off to parseLong,
+        // we'd get a parse failure.
+        if (isLongMIN_VALUE()) return Long.MIN_VALUE;
+
+        StringBuffer temp = new StringBuffer(count);
+        for (int i = 0; i < decimalAt; ++i)
+        {
+            temp.append((i < count) ? (char)(digits[i]) : '0');
+        }
+        return Long.parseLong(temp.toString());
+    }
+
+    /**
+     * Return a <code>BigInteger</code> representing the value stored in this
+     * <code>DigitList</code>.  This method assumes that this object contains
+     * an integral value; if not, it will return an incorrect value.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigInteger</code>
+     */
+    public BigInteger getBigInteger(boolean isPositive) {
+        if (isZero()) return BigInteger.valueOf(0);
+        if (false) {
+            StringBuffer stringRep = new StringBuffer(count);
+            if (!isPositive) {
+                stringRep.append('-');
+            }
+            for (int i=0; i<count; ++i) {
+                stringRep.append((char) digits[i]);
+            }
+            int d = decimalAt;
+            while (d-- > count) {
+                stringRep.append('0');
+            }
+            return new BigInteger(stringRep.toString());
+        } else {
+            int len = decimalAt > count ? decimalAt : count;
+            if (!isPositive) {
+                len += 1;
+            }
+            char[] text = new char[len];
+            int n = 0;
+            if (!isPositive) {
+                text[0] = '-';
+                for (int i = 0; i < count; ++i) {
+                    text[i+1] = (char)digits[i];
+                }
+                n = count+1;
+            } else {
+                for (int i = 0; i < count; ++i) {
+                    text[i] = (char)digits[i];
+                }
+                n = count;
+            }
+            for (int i = n; i < text.length; ++i) {
+                text[i] = '0';
+            } 
+            return new BigInteger(new String(text));
+        }
+    }
+
+    private String getStringRep(boolean isPositive) {
+        if (isZero()) return "0";
+        StringBuffer stringRep = new StringBuffer(count+1);
+        if (!isPositive) {
+            stringRep.append('-');
+        }
+        int d = decimalAt;
+        if (d < 0) {
+            stringRep.append('.');
+            while (d < 0) {
+                stringRep.append('0');
+                ++d;
+            }
+            d = -1;
+        }
+        for (int i=0; i<count; ++i) {
+            if (d == i) {
+                stringRep.append('.');
+            }
+            stringRep.append((char) digits[i]);
+        }
+        while (d-- > count) {
+            stringRep.append('0');
+        }
+        return stringRep.toString();
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * Return a <code>BigDecimal</code> representing the value stored in this
+     * <code>DigitList</code>.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigDecimal</code>
+     */
+    public java.math.BigDecimal getBigDecimal(boolean isPositive) {
+        if (isZero()) {
+            return java.math.BigDecimal.valueOf(0);
+        }
+        // if exponential notion is negative,
+        // we prefer to use BigDecimal constructor with scale,
+        // because it works better when extremely small value
+        // is used.  See #5698.
+        long scale = (long)count - (long)decimalAt;
+        if (scale > 0) {
+            int numDigits = count;
+            if (scale > (long)Integer.MAX_VALUE) {
+                // try to reduce the scale
+                long numShift = scale - (long)Integer.MAX_VALUE;
+                if (numShift < count) {
+                    numDigits -= numShift;
+                } else {
+                    // fallback to 0
+                    return new java.math.BigDecimal(0);
+                }
+            }
+            StringBuffer significantDigits = new StringBuffer(numDigits + 1);
+            if (!isPositive) {
+                significantDigits.append('-');
+            }
+            for (int i = 0; i < numDigits; i++) {
+                significantDigits.append((char)digits[i]);
+            }
+            BigInteger unscaledVal = new BigInteger(significantDigits.toString());
+            return new java.math.BigDecimal(unscaledVal, (int)scale);
+        } else {
+            // We should be able to use a negative scale value for a positive exponential
+            // value on JDK1.5.  But it is not supported by older JDK.  So, for now,
+            // we always use BigDecimal constructor which takes String.
+            return new java.math.BigDecimal(getStringRep(isPositive));
+        }
+    }
+//#endif
+
+    /**
+     * Return an <code>ICU BigDecimal</code> representing the value stored in this
+     * <code>DigitList</code>.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigDecimal</code>
+     */
+    public com.ibm.icu.math.BigDecimal getBigDecimalICU(boolean isPositive) {
+        if (isZero()) {
+            return com.ibm.icu.math.BigDecimal.valueOf(0);
+        }
+        // if exponential notion is negative,
+        // we prefer to use BigDecimal constructor with scale,
+        // because it works better when extremely small value
+        // is used.  See #5698.
+        long scale = (long)count - (long)decimalAt;
+        if (scale > 0) {
+            int numDigits = count;
+            if (scale > (long)Integer.MAX_VALUE) {
+                // try to reduce the scale
+                long numShift = scale - (long)Integer.MAX_VALUE;
+                if (numShift < count) {
+                    numDigits -= numShift;
+                } else {
+                    // fallback to 0
+                    return new com.ibm.icu.math.BigDecimal(0);
+                }
+            }
+            StringBuffer significantDigits = new StringBuffer(numDigits + 1);
+            if (!isPositive) {
+                significantDigits.append('-');
+            }
+            for (int i = 0; i < numDigits; i++) {
+                significantDigits.append((char)digits[i]);
+            }
+            BigInteger unscaledVal = new BigInteger(significantDigits.toString());
+            return new com.ibm.icu.math.BigDecimal(unscaledVal, (int)scale);
+        } else {
+            return new com.ibm.icu.math.BigDecimal(getStringRep(isPositive));
+        }
+    }
+
+    /**
+     * Return whether or not this objects represented value is an integer.
+     * [bnf]
+     * @return true if the represented value of this object is an integer
+     */
+    boolean isIntegral() {
+        // Trim trailing zeros.  This does not change the represented value.
+        while (count > 0 && digits[count - 1] == (byte)'0') --count;
+        return count == 0 || decimalAt >= count;
+    }
+
+// Unused as of ICU 2.6 - alan
+//    /**
+//     * Return true if the number represented by this object can fit into
+//     * a long.
+//     */
+//    boolean fitsIntoLong(boolean isPositive)
+//    {
+//        // Figure out if the result will fit in a long.  We have to
+//        // first look for nonzero digits after the decimal point;
+//        // then check the size.  If the digit count is 18 or less, then
+//        // the value can definitely be represented as a long.  If it is 19
+//        // then it may be too large.
+//
+//        // Trim trailing zeros.  This does not change the represented value.
+//        while (count > 0 && digits[count - 1] == (byte)'0') --count;
+//
+//        if (count == 0) {
+//            // Positive zero fits into a long, but negative zero can only
+//            // be represented as a double. - bug 4162852
+//            return isPositive;
+//        }
+//
+//        if (decimalAt < count || decimalAt > MAX_LONG_DIGITS) return false;
+//
+//        if (decimalAt < MAX_LONG_DIGITS) return true;
+//
+//        // At this point we have decimalAt == count, and count == MAX_LONG_DIGITS.
+//        // The number will overflow if it is larger than 9223372036854775807
+//        // or smaller than -9223372036854775808.
+//        for (int i=0; i<count; ++i)
+//        {
+//            byte dig = digits[i], max = LONG_MIN_REP[i];
+//            if (dig > max) return false;
+//            if (dig < max) return true;
+//        }
+//
+//        // At this point the first count digits match.  If decimalAt is less
+//        // than count, then the remaining digits are zero, and we return true.
+//        if (count < decimalAt) return true;
+//
+//        // Now we have a representation of Long.MIN_VALUE, without the leading
+//        // negative sign.  If this represents a positive value, then it does
+//        // not fit; otherwise it fits.
+//        return !isPositive;
+//    }
+
+// Unused as of ICU 2.6 - alan
+//    /**
+//     * Set the digit list to a representation of the given double value.
+//     * This method supports fixed-point notation.
+//     * @param source Value to be converted; must not be Inf, -Inf, Nan,
+//     * or a value <= 0.
+//     * @param maximumFractionDigits The most fractional digits which should
+//     * be converted.
+//     */
+//    public final void set(double source, int maximumFractionDigits)
+//    {
+//        set(source, maximumFractionDigits, true);
+//    }
+
+    /**
+     * Set the digit list to a representation of the given double value.
+     * This method supports both fixed-point and exponential notation.
+     * @param source Value to be converted; must not be Inf, -Inf, Nan,
+     * or a value <= 0.
+     * @param maximumDigits The most fractional or total digits which should
+     * be converted.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    final void set(double source, int maximumDigits, boolean fixedPoint)
+    {
+        if (source == 0) source = 0;
+        // Generate a representation of the form DDDDD, DDDDD.DDDDD, or
+        // DDDDDE+/-DDDDD.
+        String rep = Double.toString(source);
+
+        set(rep, MAX_LONG_DIGITS);
+
+        if (fixedPoint) {
+            // The negative of the exponent represents the number of leading
+            // zeros between the decimal and the first non-zero digit, for
+            // a value < 0.1 (e.g., for 0.00123, -decimalAt == 2).  If this
+            // is more than the maximum fraction digits, then we have an underflow
+            // for the printed representation.
+            if (-decimalAt > maximumDigits) {
+                count = 0;
+                return;
+            } else if (-decimalAt == maximumDigits) {
+                if (shouldRoundUp(0)) {
+                    count = 1;
+                    ++decimalAt;
+                    digits[0] = (byte)'1';
+                } else {
+                    count = 0;
+                }
+                return;
+            }
+            // else fall through
+        }
+
+        // Eliminate trailing zeros.
+        while (count > 1 && digits[count - 1] == '0')
+            --count;
+
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        round(fixedPoint ? (maximumDigits + decimalAt) : maximumDigits == 0 ? -1 : maximumDigits);
+    }
+
+    /**
+     * Given a string representation of the form DDDDD, DDDDD.DDDDD,
+     * or DDDDDE+/-DDDDD, set this object's value to it.  Ignore
+     * any leading '-'.
+     */
+    private void set(String rep, int maxCount) {
+        decimalAt = -1;
+        count = 0;
+        int exponent = 0;
+        // Number of zeros between decimal point and first non-zero digit after
+        // decimal point, for numbers < 1.
+        int leadingZerosAfterDecimal = 0;
+        boolean nonZeroDigitSeen = false;
+        // Skip over leading '-'
+        int i=0;
+        if (rep.charAt(i) == '-') {
+            ++i;
+        }
+        for (; i < rep.length(); ++i) {
+            char c = rep.charAt(i);
+            if (c == '.') {
+                decimalAt = count;
+            } else if (c == 'e' || c == 'E') {
+                ++i;
+                // Integer.parseInt doesn't handle leading '+' signs
+                if (rep.charAt(i) == '+') {
+                    ++i;
+                }
+                exponent = Integer.valueOf(rep.substring(i)).intValue();
+                break;
+            } else if (count < maxCount) {
+                if (!nonZeroDigitSeen) {
+                    nonZeroDigitSeen = (c != '0');
+                    if (!nonZeroDigitSeen && decimalAt != -1) {
+                        ++leadingZerosAfterDecimal;
+                    }
+                }
+
+                if (nonZeroDigitSeen) {
+                    ensureCapacity(count+1, count);
+                    digits[count++] = (byte)c;
+                }
+            }
+        }
+        if (decimalAt == -1) {
+            decimalAt = count;
+        }
+        decimalAt += exponent - leadingZerosAfterDecimal;
+    }
+
+    /**
+     * Return true if truncating the representation to the given number
+     * of digits will result in an increment to the last digit.  This
+     * method implements half-even rounding, the default rounding mode.
+     * [bnf]
+     * @param maximumDigits the number of digits to keep, from 0 to
+     * <code>count-1</code>.  If 0, then all digits are rounded away, and
+     * this method returns true if a one should be generated (e.g., formatting
+     * 0.09 with "#.#").
+     * @return true if digit <code>maximumDigits-1</code> should be
+     * incremented
+     */
+    private boolean shouldRoundUp(int maximumDigits) {
+        // variable not used boolean increment = false;
+        // Implement IEEE half-even rounding
+        /*Bug 4243108
+          format(0.0) gives "0.1" if preceded by parse("99.99") [Richard/GCL]
+        */
+        if (maximumDigits < count) {
+            if (digits[maximumDigits] > '5') {
+                return true;
+            } else if (digits[maximumDigits] == '5' ) {
+                for (int i=maximumDigits+1; i<count; ++i) {
+                    if (digits[i] != '0') {
+                        return true;
+                    }
+                }
+                return maximumDigits > 0 && (digits[maximumDigits-1] % 2 != 0);
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Round the representation to the given number of digits.
+     * @param maximumDigits The maximum number of digits to be shown.
+     * Upon return, count will be less than or equal to maximumDigits.
+     * This now performs rounding when maximumDigits is 0, formerly it did not.
+     */
+    public final void round(int maximumDigits) {        
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        // [bnf] rewritten to fix 4179818
+        if (maximumDigits >= 0 && maximumDigits < count) {
+            if (shouldRoundUp(maximumDigits)) {
+                // Rounding up involves incrementing digits from LSD to MSD.
+                // In most cases this is simple, but in a worst case situation
+                // (9999..99) we have to adjust the decimalAt value.
+                for (;;)
+                {
+                    --maximumDigits;
+                    if (maximumDigits < 0)
+                    {
+                        // We have all 9's, so we increment to a single digit
+                        // of one and adjust the exponent.
+                        digits[0] = (byte) '1';
+                        ++decimalAt;
+                        maximumDigits = 0; // Adjust the count
+                        break;
+                    }
+
+                    ++digits[maximumDigits];
+                    if (digits[maximumDigits] <= '9') break;
+                    // digits[maximumDigits] = '0'; // Unnecessary since we'll truncate this
+                }
+                ++maximumDigits; // Increment for use as count
+            }
+            count = maximumDigits;
+            /*Bug 4217661 DecimalFormat formats 1.001 to "1.00" instead of "1"
+              Eliminate trailing zeros. [Richard/GCL]
+            */
+            while (count > 1 && digits[count-1] == '0') {
+                --count;
+            } //[Richard/GCL]
+        }
+    }
+
+    /**
+     * Utility routine to set the value of the digit list from a long
+     */
+    public final void set(long source)
+    {
+        set(source, 0);
+    }
+
+    /**
+     * Set the digit list to a representation of the given long value.
+     * @param source Value to be converted; must be >= 0 or ==
+     * Long.MIN_VALUE.
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     */
+    public final void set(long source, int maximumDigits)
+    {
+        // This method does not expect a negative number. However,
+        // "source" can be a Long.MIN_VALUE (-9223372036854775808),
+        // if the number being formatted is a Long.MIN_VALUE.  In that
+        // case, it will be formatted as -Long.MIN_VALUE, a number
+        // which is outside the legal range of a long, but which can
+        // be represented by DigitList.
+        // [NEW] Faster implementation
+        if (source <= 0) {
+            if (source == Long.MIN_VALUE) {
+                decimalAt = count = MAX_LONG_DIGITS;
+                System.arraycopy(LONG_MIN_REP, 0, digits, 0, count);
+            } else {
+                count = 0;
+                decimalAt = 0;
+            }
+        } else {
+            int left = MAX_LONG_DIGITS;
+            int right;
+            while (source > 0) {
+                digits[--left] = (byte) (((long) '0') + (source % 10));
+                source /= 10;
+            }
+            decimalAt = MAX_LONG_DIGITS-left;
+            // Don't copy trailing zeros
+            // we are guaranteed that there is at least one non-zero digit,
+            // so we don't have to check lower bounds
+            for (right = MAX_LONG_DIGITS - 1; digits[right] == (byte) '0'; --right) {}
+            count = right - left + 1;
+            System.arraycopy(digits, left, digits, 0, count);
+        }        
+        if (maximumDigits > 0) round(maximumDigits);
+    }
+
+    /**
+     * Set the digit list to a representation of the given BigInteger value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     */
+    public final void set(BigInteger source, int maximumDigits) {
+        String stringDigits = source.toString();
+
+        count = decimalAt = stringDigits.length();
+
+        // Don't copy trailing zeros
+        while (count > 1 && stringDigits.charAt(count - 1) == '0') --count;
+
+        int offset = 0;
+        if (stringDigits.charAt(0) == '-') {
+            ++offset;
+            --count;
+            --decimalAt;
+        }
+
+        ensureCapacity(count, 0);
+        for (int i = 0; i < count; ++i) {
+            digits[i] = (byte) stringDigits.charAt(i + offset);
+        }
+
+        if (maximumDigits > 0) round(maximumDigits);
+    }
+
+    /**
+     * Internal method that sets this digit list to represent the
+     * given value.  The value is given as a String of the format
+     * returned by BigDecimal.
+     * @param stringDigits value to be represented with the following
+     * syntax, expressed as a regular expression: -?\d*.?\d*
+     * Must not be an empty string.
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    private void setBigDecimalDigits(String stringDigits,
+                                     int maximumDigits, boolean fixedPoint) {
+//|        // Find the first non-zero digit, the decimal, and the last non-zero digit.
+//|        int first=-1, last=stringDigits.length()-1, decimal=-1;
+//|        for (int i=0; (first<0 || decimal<0) && i<=last; ++i) {
+//|            char c = stringDigits.charAt(i);
+//|            if (c == '.') {
+//|                decimal = i;
+//|            } else if (first < 0 && (c >= '1' && c <= '9')) {
+//|                first = i;
+//|            }
+//|        }
+//|
+//|        if (first < 0) {
+//|            clear();
+//|            return;
+//|        }
+//|
+//|        // At this point we know there is at least one non-zero digit, so the
+//|        // following loop is safe.
+//|        for (;;) {
+//|            char c = stringDigits.charAt(last);
+//|            if (c != '0' && c != '.') {
+//|                break;
+//|            }
+//|            --last;
+//|        }
+//|
+//|        if (decimal < 0) {
+//|            decimal = stringDigits.length();
+//|        }
+//|
+//|        count = last - first;
+//|        if (decimal < first || decimal > last) {
+//|            ++count;
+//|        }
+//|        decimalAt = decimal - first;
+//|        if (decimalAt < 0) {
+//|            ++decimalAt;
+//|        }
+//|
+//|        ensureCapacity(count, 0);
+//|        for (int i = 0; i < count; ++i) {
+//|            digits[i] = (byte) stringDigits.charAt(first++);
+//|            if (first == decimal) {
+//|                ++first;
+//|            }
+//|        }
+
+        // The maxDigits here could also be Integer.MAX_VALUE
+        set(stringDigits, stringDigits.length());
+
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+    // {dlf} Some callers depend on passing '0' to round to mean 'don't round', but
+    // rather than pass that information explicitly, we rely on some magic with maximumDigits
+    // and decimalAt.  Unfortunately, this is no good, because there are cases where maximumDigits
+    // is zero and we do want to round, e.g. BigDecimal values -1 < x < 1.  So since round
+    // changed to perform rounding when the argument is 0, we now force the argument
+    // to -1 in the situations where it matters.
+        round(fixedPoint ? (maximumDigits + decimalAt) : maximumDigits == 0 ? -1 : maximumDigits);
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * Set the digit list to a representation of the given BigDecimal value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    public final void set(java.math.BigDecimal source,
+                          int maximumDigits, boolean fixedPoint) {
+        setBigDecimalDigits(source.toString(), maximumDigits, fixedPoint);
+    }
+//#endif
+
+    /*
+     * Set the digit list to a representation of the given BigDecimal value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    public final void set(com.ibm.icu.math.BigDecimal source,
+                          int maximumDigits, boolean fixedPoint) {
+        setBigDecimalDigits(source.toString(), maximumDigits, fixedPoint);
+    }
+
+    /**
+     * Returns true if this DigitList represents Long.MIN_VALUE;
+     * false, otherwise.  This is required so that getLong() works.
+     */
+    private boolean isLongMIN_VALUE()
+    {
+        if (decimalAt != count || count != MAX_LONG_DIGITS)
+            return false;
+
+            for (int i = 0; i < count; ++i)
+        {
+            if (digits[i] != LONG_MIN_REP[i]) return false;
+        }
+
+        return true;
+    }
+
+    private static byte[] LONG_MIN_REP;
+
+    static
+    {
+        // Store the representation of LONG_MIN without the leading '-'
+        String s = Long.toString(Long.MIN_VALUE);
+        LONG_MIN_REP = new byte[MAX_LONG_DIGITS];
+        for (int i=0; i < MAX_LONG_DIGITS; ++i)
+        {
+            LONG_MIN_REP[i] = (byte)s.charAt(i + 1);
+        }
+    }
+
+// Unused -- Alan 2003-05
+//    /**
+//     * Return the floor of the log base 10 of a given double.
+//     * This method compensates for inaccuracies which arise naturally when
+//     * computing logs, and always give the correct value.  The parameter
+//     * must be positive and finite.
+//     */
+//    private static final int log10(double d)
+//    {
+//        // The reason this routine is needed is that simply taking the
+//        // log and dividing by log10 yields a result which may be off
+//        // by 1 due to rounding errors.  For example, the naive log10
+//        // of 1.0e300 taken this way is 299, rather than 300.
+//        double log10 = Math.log(d) / LOG10;
+//        int ilog10 = (int)Math.floor(log10);
+//        // Positive logs could be too small, e.g. 0.99 instead of 1.0
+//        if (log10 > 0 && d >= Math.pow(10, ilog10 + 1))
+//        {
+//            ++ilog10;
+//        }
+//        // Negative logs could be too big, e.g. -0.99 instead of -1.0
+//        else if (log10 < 0 && d < Math.pow(10, ilog10))
+//        {
+//            --ilog10;
+//        }
+//        return ilog10;
+//    }
+//
+//    private static final double LOG10 = Math.log(10.0);
+
+    // (The following boilerplate methods are currently not called,
+    // and cannot be called by tests since this class is
+    // package-private.  The methods may be useful in the future, so
+    // we do not delete them.  2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * equality test between two digit lists.
+     */
+    public boolean equals(Object obj) {
+        if (this == obj)                      // quick check
+            return true;
+        if (!(obj instanceof DigitList))         // (1) same object?
+            return false;
+        DigitList other = (DigitList) obj;
+        if (count != other.count ||
+        decimalAt != other.decimalAt)
+            return false;
+        for (int i = 0; i < count; i++)
+            if (digits[i] != other.digits[i])
+                return false;
+        return true;
+    }
+
+    /**
+     * Generates the hash code for the digit list.
+     */
+    public int hashCode() {
+        int hashcode = decimalAt;
+
+        for (int i = 0; i < count; i++)
+            hashcode = hashcode * 37 + digits[i];
+
+        return hashcode;
+    }
+
+    public String toString()
+    {
+        if (isZero()) return "0";
+        StringBuffer buf = new StringBuffer("0.");
+        for (int i=0; i<count; ++i) buf.append((char)digits[i]);
+        buf.append("x10^");
+        buf.append(decimalAt);
+        return buf.toString();
+    }
+    ///CLOVER:ON
+}
diff --git a/src/com/ibm/icu/text/DurationFormat.java b/src/com/ibm/icu/text/DurationFormat.java
new file mode 100644
index 0000000..6875908
--- /dev/null
+++ b/src/com/ibm/icu/text/DurationFormat.java
@@ -0,0 +1,122 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Date;
+
+import com.ibm.icu.impl.duration.BasicDurationFormat;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * This class implements a formatter over a duration in time
+ * such as "2 days from now" or "3 hours ago".
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ */
+public abstract class DurationFormat extends UFormat {
+
+    private static final long serialVersionUID = -2076961954727774282L;
+
+    /**
+     * Construct a duration format for the specified locale
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static DurationFormat getInstance(ULocale locale) {
+        return (DurationFormat)BasicDurationFormat.getInstance(locale);
+    }
+    
+
+    /**
+     * Subclass interface
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected DurationFormat() {
+    }
+    
+    /**
+     * Subclass interface
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected DurationFormat(ULocale locale) {
+        setLocale(locale,locale);
+    }
+
+    /**
+     * Format an arbitrary object.
+     * Defaults to a call to formatDurationFromNow() for either Long or Date objects.
+     * @param object the object to format. Should be either a Long, Date, or javax.xml.datatype.Duration object.
+     * @param toAppend the buffer to append to
+     * @param pos the field position, may contain additional error messages.
+     * @return the toAppend buffer
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public abstract StringBuffer format(Object object, StringBuffer toAppend,
+            FieldPosition pos);
+
+    /**
+     * DurationFormat cannot parse, by default. This method will throw an UnsupportedOperationException.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+       throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Formats the duration between now and a target date.
+     * <p>
+     * This is a convenience method that calls
+     * formatDurationFrom(long, long) using now
+     * as the reference date, and the difference between now and
+     * <code>targetDate.getTime()</code> as the duration.
+     * 
+     * @param targetDate the ending date
+     * @return the formatted time
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public abstract String formatDurationFromNowTo(Date targetDate);
+
+    /**
+     * Formats a duration expressed in milliseconds.
+     * <p>
+     * This is a convenience method that calls formatDurationFrom
+     * using the current system time as the reference date.
+     * 
+     * @param duration the duration in milliseconds
+     * @return the formatted time
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public abstract String formatDurationFromNow(long duration);
+
+    /**
+     * Formats a duration expressed in milliseconds from a reference date.
+     * <p>
+     * The reference date allows formatters to use actual durations of
+     * variable-length periods (like months) if they wish.
+     * <p>
+     * The duration is expressed as the number of milliseconds in the
+     * past (negative values) or future (positive values) with respect
+     * to a reference date (expressed as milliseconds in epoch).
+     * 
+     * @param duration the duration in milliseconds
+     * @param referenceDate the date from which to compute the duration
+     * @return the formatted time
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public abstract String formatDurationFrom(long duration, long referenceDate);
+    
+    
+}
diff --git a/src/com/ibm/icu/text/EscapeTransliterator.java b/src/com/ibm/icu/text/EscapeTransliterator.java
new file mode 100644
index 0000000..69e4cc0
--- /dev/null
+++ b/src/com/ibm/icu/text/EscapeTransliterator.java
@@ -0,0 +1,200 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/19/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A transliterator that converts Unicode characters to an escape
+ * form.  Examples of escape forms are "U+4E01" and "&#x10FFFF;".
+ * Escape forms have a prefix and suffix, either of which may be
+ * empty, a radix, typically 16 or 10, a minimum digit count,
+ * typically 1, 4, or 8, and a boolean that specifies whether
+ * supplemental characters are handled as 32-bit code points or as two
+ * 16-bit code units.  Most escape forms handle 32-bit code points,
+ * but some, such as the Java form, intentionally break them into two
+ * surrogate pairs, for backward compatibility.
+ *
+ * <p>Some escape forms actually have two different patterns, one for
+ * BMP characters (0..FFFF) and one for supplements (>FFFF).  To
+ * handle this, a second EscapeTransliterator may be defined that
+ * specifies the pattern to be produced for supplementals.  An example
+ * of a form that requires this is the C form, which uses "\\uFFFF"
+ * for BMP characters and "\\U0010FFFF" for supplementals.
+ *
+ * <p>This class is package private.  It registers several standard
+ * variants with the system which are then accessed via their IDs.
+ *
+ * @author Alan Liu
+ */
+class EscapeTransliterator extends Transliterator {
+
+    /**
+     * The prefix of the escape form; may be empty, but usually isn't.
+     * May not be null.
+     */
+    private String prefix;
+
+    /**
+     * The prefix of the escape form; often empty.  May not be null.
+     */
+    private String suffix;
+
+    /**
+     * The radix to display the number in.  Typically 16 or 10.  Must
+     * be in the range 2 to 36.
+     */
+    private int radix;
+
+    /**
+     * The minimum number of digits.  Typically 1, 4, or 8.  Values
+     * less than 1 are equivalent to 1.
+     */
+    private int minDigits;
+
+    /**
+     * If true, supplementals are handled as 32-bit code points.  If
+     * false, they are handled as two 16-bit code units.
+     */
+    private boolean grokSupplementals;
+
+    /**
+     * The form to be used for supplementals.  If this is null then
+     * the same form is used for BMP characters and supplementals.  If
+     * this is not null and if grokSupplementals is true then the
+     * prefix, suffix, radix, and minDigits of this object are used
+     * for supplementals.
+     */
+    private EscapeTransliterator supplementalHandler;
+
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // Unicode: "U+10FFFF" hex, min=4, max=6
+        Transliterator.registerFactory("Any-Hex/Unicode", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Unicode",
+                                                "U+", "", 16, 4, true, null);
+            }
+        });
+        
+        // Java: "\\uFFFF" hex, min=4, max=4
+        Transliterator.registerFactory("Any-Hex/Java", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Java",
+                                                "\\u", "", 16, 4, false, null);
+            }
+        });
+        
+        // C: "\\uFFFF" hex, min=4, max=4; \\U0010FFFF hex, min=8, max=8
+        Transliterator.registerFactory("Any-Hex/C", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/C",
+                                                "\\u", "", 16, 4, true,
+                       new EscapeTransliterator("", "\\U", "", 16, 8, true, null));
+            }
+        });
+        
+        // XML: "&#x10FFFF;" hex, min=1, max=6
+        Transliterator.registerFactory("Any-Hex/XML", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/XML",
+                                                "&#x", ";", 16, 1, true, null);
+            }
+        });
+
+        // XML10: "&1114111;" dec, min=1, max=7 (not really "Any-Hex")
+        Transliterator.registerFactory("Any-Hex/XML10", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/XML10",
+                                                "&#", ";", 10, 1, true, null);
+            }
+        });
+
+        // Perl: "\\x{263A}" hex, min=1, max=6
+        Transliterator.registerFactory("Any-Hex/Perl", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex/Perl",
+                                                "\\x{", "}", 16, 1, true, null);
+            }
+        });
+
+        // Generic
+        Transliterator.registerFactory("Any-Hex", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new EscapeTransliterator("Any-Hex",
+                                                "\\u", "", 16, 4, false, null);
+            }
+        });
+    }
+
+    /**
+     * Constructs an escape transliterator with the given ID and
+     * parameters.  See the class member documentation for details.
+     */
+    EscapeTransliterator(String ID, String prefix, String suffix,
+                         int radix, int minDigits,
+                         boolean grokSupplementals,
+                         EscapeTransliterator supplementalHandler) {
+        super(ID, null);
+        this.prefix = prefix;
+        this.suffix = suffix;
+        this.radix = radix;
+        this.minDigits = minDigits;
+        this.grokSupplementals = grokSupplementals;
+        this.supplementalHandler = supplementalHandler;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean incremental) {
+        int start = pos.start;
+        int limit = pos.limit;
+
+        StringBuffer buf = new StringBuffer(prefix);
+        int prefixLen = prefix.length();
+        boolean redoPrefix = false;
+
+        while (start < limit) {
+            int c = grokSupplementals ? text.char32At(start) : text.charAt(start);
+            int charLen = grokSupplementals ? UTF16.getCharCount(c) : 1;
+
+            if ((c & 0xFFFF0000) != 0 && supplementalHandler != null) {
+                buf.setLength(0);
+                buf.append(supplementalHandler.prefix);
+                Utility.appendNumber(buf, c, supplementalHandler.radix,
+                                     supplementalHandler.minDigits);
+                buf.append(supplementalHandler.suffix);
+                redoPrefix = true;
+            } else {
+                if (redoPrefix) {
+                    buf.setLength(0);
+                    buf.append(prefix);
+                    redoPrefix = false;
+                } else {
+                    buf.setLength(prefixLen);
+                }
+                Utility.appendNumber(buf, c, radix, minDigits);
+                buf.append(suffix);
+            }
+
+            text.replace(start, start + charLen, buf.toString());
+            start += buf.length();
+            limit += buf.length() - charLen;
+        }
+
+        pos.contextLimit += limit - pos.limit;
+        pos.limit = limit;
+        pos.start = start;
+    }
+}
diff --git a/src/com/ibm/icu/text/FunctionReplacer.java b/src/com/ibm/icu/text/FunctionReplacer.java
new file mode 100644
index 0000000..bf66f3a
--- /dev/null
+++ b/src/com/ibm/icu/text/FunctionReplacer.java
@@ -0,0 +1,84 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2003, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+/**
+ * A replacer that calls a transliterator to generate its output text.
+ * The input text to the transliterator is the output of another
+ * UnicodeReplacer object.  That is, this replacer wraps another
+ * replacer with a transliterator.
+ * @author Alan Liu
+ */
+class FunctionReplacer implements UnicodeReplacer {
+
+    /**
+     * The transliterator.  Must not be null.
+     */
+    private Transliterator translit;
+
+    /**
+     * The replacer object.  This generates text that is then
+     * processed by 'translit'.  Must not be null.
+     */
+    private UnicodeReplacer replacer;
+
+    /**
+     * Construct a replacer that takes the output of the given
+     * replacer, passes it through the given transliterator, and emits
+     * the result as output.
+     */
+    public FunctionReplacer(Transliterator theTranslit,
+                            UnicodeReplacer theReplacer) {
+        translit = theTranslit;
+        replacer = theReplacer;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+
+        // First delegate to subordinate replacer
+        int len = replacer.replace(text, start, limit, cursor);
+        limit = start + len;
+
+        // Now transliterate
+        limit = translit.transliterate(text, start, limit);
+
+        return limit - start;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        StringBuffer rule = new StringBuffer("&");
+        rule.append(translit.getID());
+        rule.append("( ");
+        rule.append(replacer.toReplacerPattern(escapeUnprintable));
+        rule.append(" )");
+        return rule.toString();
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        toUnionTo.addAll(translit.getTargetSet());
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/IDNA.java b/src/com/ibm/icu/text/IDNA.java
new file mode 100644
index 0000000..358a83c
--- /dev/null
+++ b/src/com/ibm/icu/text/IDNA.java
@@ -0,0 +1,973 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+
+/**
+ *
+ * IDNA API implements the IDNA protocol as defined in the <a href="http://www.ietf.org/rfc/rfc3490.txt">IDNA RFC</a>.
+ * The draft defines 2 operations: ToASCII and ToUnicode. Domain labels 
+ * containing non-ASCII code points are required to be processed by
+ * ToASCII operation before passing it to resolver libraries. Domain names
+ * that are obtained from resolver libraries are required to be processed by
+ * ToUnicode operation before displaying the domain name to the user.
+ * IDNA requires that implementations process input strings with 
+ * <a href="http://www.ietf.org/rfc/rfc3491.txt">Nameprep</a>, 
+ * which is a profile of <a href="http://www.ietf.org/rfc/rfc3454.txt">Stringprep</a> , 
+ * and then with <a href="http://www.ietf.org/rfc/rfc3492.txt">Punycode</a>. 
+ * Implementations of IDNA MUST fully implement Nameprep and Punycode; 
+ * neither Nameprep nor Punycode are optional.
+ * The input and output of ToASCII and ToUnicode operations are Unicode 
+ * and are designed to be chainable, i.e., applying ToASCII or ToUnicode operations
+ * multiple times to an input string will yield the same result as applying the operation
+ * once.
+ * ToUnicode(ToUnicode(ToUnicode...(ToUnicode(string)))) == ToUnicode(string) 
+ * ToASCII(ToASCII(ToASCII...(ToASCII(string))) == ToASCII(string).
+ * 
+ * @author Ram Viswanadha
+ * @stable ICU 2.8
+ */
+public final class IDNA {
+
+    /* IDNA ACE Prefix is "xn--" */
+    private static char[] ACE_PREFIX                = new char[]{ 0x0078,0x006E,0x002d,0x002d } ;
+    //private static final int ACE_PREFIX_LENGTH      = ACE_PREFIX.length;
+
+    private static final int MAX_LABEL_LENGTH       = 63;
+    private static final int HYPHEN                 = 0x002D;
+    private static final int CAPITAL_A              = 0x0041;
+    private static final int CAPITAL_Z              = 0x005A;
+    private static final int LOWER_CASE_DELTA       = 0x0020;
+    private static final int FULL_STOP              = 0x002E;
+    private static final int MAX_DOMAIN_NAME_LENGTH = 255;
+    /** 
+     * Option to prohibit processing of unassigned codepoints in the input and
+     * do not check if the input conforms to STD-3 ASCII rules.
+     * 
+     * @see  #convertToASCII #convertToUnicode
+     * @stable ICU 2.8
+     */
+    public static final int DEFAULT             = 0x0000;
+    /** 
+     * Option to allow processing of unassigned codepoints in the input
+     * 
+     * @see  #convertToASCII #convertToUnicode
+     * @stable ICU 2.8
+     */
+    public static final int ALLOW_UNASSIGNED    = 0x0001;
+    /** 
+     * Option to check if input conforms to STD-3 ASCII rules
+     * 
+     * @see #convertToASCII #convertToUnicode
+     * @stable ICU 2.8
+     */
+    public static final int USE_STD3_RULES      = 0x0002;
+    
+    // static final singleton object that is initialized
+    // at class initialization time, hence guaranteed to
+    // be initialized and thread safe
+    private static final IDNA singleton  = new IDNA();
+    
+    // The NamePrep profile object
+    private StringPrep namePrep;
+    
+    /* private constructor to prevent construction of the object */
+    private IDNA(){
+        try{
+           InputStream stream = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE+"/uidna.spp");
+           namePrep = new StringPrep(stream);
+           stream.close();
+        }catch (IOException e){
+            throw new MissingResourceException(e.toString(),"","");
+        }
+    }
+    
+    private static boolean startsWithPrefix(StringBuffer src){
+        boolean startsWithPrefix = true;
+
+        if(src.length() < ACE_PREFIX.length){
+            return false;
+        }
+        for(int i=0; i<ACE_PREFIX.length;i++){
+            if(toASCIILower(src.charAt(i)) != ACE_PREFIX[i]){
+                startsWithPrefix = false;
+            }
+        }
+        return startsWithPrefix;
+    }
+
+    private static char toASCIILower(char ch){
+        if(CAPITAL_A <= ch && ch <= CAPITAL_Z){
+            return (char)(ch + LOWER_CASE_DELTA);
+        }
+        return ch;
+    }
+
+    private static StringBuffer toASCIILower(StringBuffer src){
+        StringBuffer dest = new StringBuffer();
+        for(int i=0; i<src.length();i++){
+            dest.append(toASCIILower(src.charAt(i)));
+        }
+        return dest;
+    }
+
+    private static int compareCaseInsensitiveASCII(StringBuffer s1, StringBuffer s2){
+        char c1,c2;
+        int rc;
+        for(int i =0;/* no condition */;i++) {
+            /* If we reach the ends of both strings then they match */
+            if(i == s1.length()) {
+                return 0;
+            }
+
+            c1 = s1.charAt(i);
+            c2 = s2.charAt(i);
+        
+            /* Case-insensitive comparison */
+            if(c1!=c2) {
+                rc=toASCIILower(c1)-toASCIILower(c2);
+                if(rc!=0) {
+                    return rc;
+                }
+            }
+        }
+    }
+   
+    private static int getSeparatorIndex(char[] src,int start, int limit){
+        for(; start<limit;start++){
+            if(isLabelSeparator(src[start])){
+                return start;
+            }
+        }
+        // we have not found the separator just return length
+        return start;
+    }
+    
+    /*
+    private static int getSeparatorIndex(UCharacterIterator iter){
+        int currentIndex = iter.getIndex();
+        int separatorIndex = 0;
+        int ch;
+        while((ch=iter.next())!= UCharacterIterator.DONE){
+            if(isLabelSeparator(ch)){
+                separatorIndex = iter.getIndex();
+                iter.setIndex(currentIndex);
+                return separatorIndex;
+            }
+        }
+        // reset index
+        iter.setIndex(currentIndex);
+        // we have not found the separator just return the length
+       
+    }
+    */
+    
+
+    private static boolean isLDHChar(int ch){
+        // high runner case
+        if(ch>0x007A){
+            return false;
+        }
+        //[\\u002D \\u0030-\\u0039 \\u0041-\\u005A \\u0061-\\u007A]
+        if( (ch==0x002D) || 
+            (0x0030 <= ch && ch <= 0x0039) ||
+            (0x0041 <= ch && ch <= 0x005A) ||
+            (0x0061 <= ch && ch <= 0x007A)
+          ){
+            return true;
+        }
+        return false;
+    }
+    
+    /**
+     * Ascertain if the given code point is a label separator as 
+     * defined by the IDNA RFC
+     * 
+     * @param ch The code point to be ascertained
+     * @return true if the char is a label separator
+     * @stable ICU 2.8
+     */
+    private static boolean isLabelSeparator(int ch){
+        switch(ch){
+            case 0x002e:
+            case 0x3002:
+            case 0xFF0E:
+            case 0xFF61:
+                return true;
+            default:
+                return false;           
+        }
+    }
+       
+    /**
+     * This function implements the ToASCII operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * ASCII names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     *
+     * @param src       The input string to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */    
+    public static StringBuffer convertToASCII(String src, int options)
+        throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToASCII(iter,options);
+    }
+    
+    /**
+     * This function implements the ToASCII operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * ASCII names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     *
+     * @param src       The input string as StringBuffer to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToASCII(StringBuffer src, int options)
+        throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToASCII(iter,options);
+    }
+    
+    /**
+     * This function implements the ToASCII operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * ASCII names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     *
+     * @param src       The input string as UCharacterIterator to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToASCII(UCharacterIterator src, int options)
+                throws StringPrepParseException{
+        
+        boolean[] caseFlags = null;
+    
+        // the source contains all ascii codepoints
+        boolean srcIsASCII  = true;
+        // assume the source contains all LDH codepoints
+        boolean srcIsLDH = true; 
+
+        //get the options
+        boolean useSTD3ASCIIRules = ((options & USE_STD3_RULES) != 0);
+        int ch;
+        // step 1
+        while((ch = src.next())!= UCharacterIterator.DONE){
+            if(ch> 0x7f){
+                srcIsASCII = false;
+            }
+        }
+        int failPos = -1;
+        src.setToStart();
+        StringBuffer processOut = null;
+        // step 2 is performed only if the source contains non ASCII
+        if(!srcIsASCII){
+            // step 2
+            processOut = singleton.namePrep.prepare(src, options);
+        }else{
+            processOut = new StringBuffer(src.getText());
+        }
+        int poLen = processOut.length();
+        
+        if(poLen==0){
+            throw new StringPrepParseException("Found zero length lable after NamePrep.",StringPrepParseException.ZERO_LENGTH_LABEL);
+        }
+        StringBuffer dest = new StringBuffer();
+        
+        // reset the variable to verify if output of prepare is ASCII or not
+        srcIsASCII = true;
+        
+        // step 3 & 4
+        for(int j=0;j<poLen;j++ ){
+            ch=processOut.charAt(j);
+            if(ch > 0x7F){
+                srcIsASCII = false;
+            }else if(isLDHChar(ch)==false){
+                // here we do not assemble surrogates
+                // since we know that LDH code points
+                // are in the ASCII range only
+                srcIsLDH = false;
+                failPos = j;
+            }
+        }
+    
+        if(useSTD3ASCIIRules == true){
+            // verify 3a and 3b
+            if( srcIsLDH == false /* source contains some non-LDH characters */
+                || processOut.charAt(0) ==  HYPHEN 
+                || processOut.charAt(processOut.length()-1) == HYPHEN){
+
+                /* populate the parseError struct */
+                if(srcIsLDH==false){
+                     throw new StringPrepParseException( "The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                              processOut.toString(),
+                                             (failPos>0) ? (failPos-1) : failPos);
+                }else if(processOut.charAt(0) == HYPHEN){
+                    throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,processOut.toString(),0);
+     
+                }else{
+                     throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+                                              StringPrepParseException.STD3_ASCII_RULES_ERROR,
+                                              processOut.toString(),
+                                              (poLen>0) ? poLen-1 : poLen);
+
+                }
+            }
+        }
+        if(srcIsASCII){
+            dest =  processOut;
+        }else{
+            // step 5 : verify the sequence does not begin with ACE prefix
+            if(!startsWithPrefix(processOut)){
+
+                //step 6: encode the sequence with punycode
+                caseFlags = new boolean[poLen];
+
+                StringBuffer punyout = Punycode.encode(processOut,caseFlags);
+
+                // convert all codepoints to lower case ASCII
+                StringBuffer lowerOut = toASCIILower(punyout);
+
+                //Step 7: prepend the ACE prefix
+                dest.append(ACE_PREFIX,0,ACE_PREFIX.length);
+                //Step 6: copy the contents in b2 into dest
+                dest.append(lowerOut);
+            }else{
+
+                throw new StringPrepParseException("The input does not start with the ACE Prefix.",
+                                         StringPrepParseException.ACE_PREFIX_ERROR,processOut.toString(),0);
+            }
+        }
+        if(dest.length() > MAX_LABEL_LENGTH){
+            throw new StringPrepParseException("The labels in the input are too long. Length > 63.", 
+                                     StringPrepParseException.LABEL_TOO_LONG_ERROR,dest.toString(),0);
+        }
+        return dest;
+    }
+        
+    /**
+     * Convenience function that implements the IDNToASCII operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     * It is important to note that this operation can fail. If it fails, then the input 
+     * domain name cannot be used as an Internationalized Domain Name and the application
+     * should have methods defined to deal with the failure.
+     * 
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string as UCharacterIterator to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToASCII(UCharacterIterator src, int options)
+            throws StringPrepParseException{
+        return convertIDNToASCII(src.getText(), options);          
+    }
+    
+    /**
+     * Convenience function that implements the IDNToASCII operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     * It is important to note that this operation can fail. If it fails, then the input 
+     * domain name cannot be used as an Internationalized Domain Name and the application
+     * should have methods defined to deal with the failure.
+     * 
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string as a StringBuffer to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToASCII(StringBuffer src, int options)
+            throws StringPrepParseException{
+            return convertIDNToASCII(src.toString(), options);          
+    }
+    
+    /**
+     * Convenience function that implements the IDNToASCII operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     * It is important to note that this operation can fail. If it fails, then the input 
+     * domain name cannot be used as an Internationalized Domain Name and the application
+     * should have methods defined to deal with the failure.
+     * 
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToASCII(String src,int options)
+            throws StringPrepParseException{
+
+        char[] srcArr = src.toCharArray();
+        StringBuffer result = new StringBuffer();
+        int sepIndex=0;
+        int oldSepIndex=0;
+        for(;;){
+            sepIndex = getSeparatorIndex(srcArr,sepIndex,srcArr.length);
+            String label = new String(srcArr,oldSepIndex,sepIndex-oldSepIndex);
+            //make sure this is not a root label separator.
+            if(!(label.length()==0 && sepIndex==srcArr.length)){
+                UCharacterIterator iter = UCharacterIterator.getInstance(label);
+                result.append(convertToASCII(iter,options));
+            }
+            if(sepIndex==srcArr.length){
+                break;
+            }
+            
+            // increment the sepIndex to skip past the separator
+            sepIndex++;
+            oldSepIndex = sepIndex;
+            result.append((char)FULL_STOP);
+        }
+        if(result.length() > MAX_DOMAIN_NAME_LENGTH){
+            throw new StringPrepParseException("The output exceed the max allowed length.", StringPrepParseException.DOMAIN_NAME_TOO_LONG_ERROR);
+        }
+        return result;
+    }
+
+    
+    /**
+     * This function implements the ToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * Unicode names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; for e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     * 
+     * @param src       The input string to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToUnicode(String src, int options)
+           throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToUnicode(iter,options);
+    }
+    
+    /**
+     * This function implements the ToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * Unicode names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; for e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     * 
+     * @param src       The input string as StringBuffer to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToUnicode(StringBuffer src, int options)
+           throws StringPrepParseException{
+        UCharacterIterator iter = UCharacterIterator.getInstance(src);
+        return convertToUnicode(iter,options);
+    }
+       
+    /**
+     * Function that implements the ToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on <b>single labels</b> before sending it to something that expects
+     * Unicode names. A label is an individual part of a domain name. Labels are usually
+     * separated by dots; for e.g." "www.example.com" is composed of 3 labels 
+     * "www","example", and "com".
+     * 
+     * @param src       The input string as UCharacterIterator to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertToUnicode(UCharacterIterator src, int options)
+           throws StringPrepParseException{
+        
+        boolean[] caseFlags = null;
+                
+        // the source contains all ascii codepoints
+        boolean srcIsASCII  = true;
+        // assume the source contains all LDH codepoints
+        //boolean srcIsLDH = true; 
+        
+        //get the options
+        //boolean useSTD3ASCIIRules = ((options & USE_STD3_RULES) != 0);
+        
+        //int failPos = -1;
+        int ch;
+        int saveIndex = src.getIndex();
+        // step 1: find out if all the codepoints in src are ASCII  
+        while((ch=src.next())!= UCharacterIterator.DONE){
+            if(ch>0x7F){
+                srcIsASCII = false;
+            }/*else if((srcIsLDH = isLDHChar(ch))==false){
+                failPos = src.getIndex();
+            }*/
+        }
+        StringBuffer processOut;
+        
+        if(srcIsASCII == false){
+            try {
+                // step 2: process the string
+                src.setIndex(saveIndex);
+                processOut = singleton.namePrep.prepare(src,options);
+            } catch (StringPrepParseException ex) {
+                return new StringBuffer(src.getText());
+            }
+
+        }else{
+            //just point to source
+            processOut = new StringBuffer(src.getText());
+        }
+        // TODO:
+        // The RFC states that 
+        // <quote>
+        // ToUnicode never fails. If any step fails, then the original input
+        // is returned immediately in that step.
+        // </quote>
+        
+        //step 3: verify ACE Prefix
+        if(startsWithPrefix(processOut)){
+            StringBuffer decodeOut = null;
+
+            //step 4: Remove the ACE Prefix
+            String temp = processOut.substring(ACE_PREFIX.length,processOut.length());
+
+            //step 5: Decode using punycode
+            try {
+                decodeOut = Punycode.decode(new StringBuffer(temp),caseFlags);
+            } catch (StringPrepParseException e) {
+                decodeOut = null;
+            }
+        
+            //step 6:Apply toASCII
+            if (decodeOut != null) {
+                StringBuffer toASCIIOut = convertToASCII(decodeOut, options);
+    
+                //step 7: verify
+                if(compareCaseInsensitiveASCII(processOut, toASCIIOut) !=0){
+//                    throw new StringPrepParseException("The verification step prescribed by the RFC 3491 failed",
+//                                             StringPrepParseException.VERIFICATION_ERROR); 
+                    decodeOut = null;
+                }
+            }
+
+            //step 8: return output of step 5
+             if (decodeOut != null) {
+                 return decodeOut;
+             }
+        }
+            
+//        }else{
+//            // verify that STD3 ASCII rules are satisfied
+//            if(useSTD3ASCIIRules == true){
+//                if( srcIsLDH == false /* source contains some non-LDH characters */
+//                    || processOut.charAt(0) ==  HYPHEN 
+//                    || processOut.charAt(processOut.length()-1) == HYPHEN){
+//    
+//                    if(srcIsLDH==false){
+//                        throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+//                                                 StringPrepParseException.STD3_ASCII_RULES_ERROR,processOut.toString(),
+//                                                 (failPos>0) ? (failPos-1) : failPos);
+//                    }else if(processOut.charAt(0) == HYPHEN){
+//                        throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+//                                                 StringPrepParseException.STD3_ASCII_RULES_ERROR,
+//                                                 processOut.toString(),0);
+//         
+//                    }else{
+//                        throw new StringPrepParseException("The input does not conform to the STD 3 ASCII rules",
+//                                                 StringPrepParseException.STD3_ASCII_RULES_ERROR,
+//                                                 processOut.toString(),
+//                                                 processOut.length());
+//    
+//                    }
+//                }
+//            }
+//            // just return the source
+//            return new StringBuffer(src.getText());
+//        }  
+        
+        return new StringBuffer(src.getText());
+    }
+    
+    /**
+     * Convenience function that implements the IDNToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     *
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string as UCharacterIterator to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToUnicode(UCharacterIterator src, int options)
+        throws StringPrepParseException{
+        return convertIDNToUnicode(src.getText(), options);
+    }
+    
+    /**
+     * Convenience function that implements the IDNToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     *
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string as StringBuffer to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToUnicode(StringBuffer src, int options)
+        throws StringPrepParseException{
+        return convertIDNToUnicode(src.toString(), options);
+    }
+    
+    /**
+     * Convenience function that implements the IDNToUnicode operation as defined in the IDNA RFC.
+     * This operation is done on complete domain names, e.g: "www.example.com". 
+     *
+     * <b>Note:</b> IDNA RFC specifies that a conformant application should divide a domain name
+     * into separate labels, decide whether to apply allowUnassigned and useSTD3ASCIIRules on each, 
+     * and then convert. This function does not offer that level of granularity. The options once  
+     * set will apply to all labels in the domain name
+     *
+     * @param src       The input string to be processed
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return StringBuffer the converted String
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public static StringBuffer convertIDNToUnicode(String src, int options)
+        throws StringPrepParseException{
+            
+        char[] srcArr = src.toCharArray();
+        StringBuffer result = new StringBuffer();
+        int sepIndex=0;
+        int oldSepIndex=0;
+        for(;;){
+            sepIndex = getSeparatorIndex(srcArr,sepIndex,srcArr.length);
+            String label = new String(srcArr,oldSepIndex,sepIndex-oldSepIndex);
+            if(label.length()==0 && sepIndex!=srcArr.length ){
+                throw new StringPrepParseException("Found zero length lable after NamePrep.",StringPrepParseException.ZERO_LENGTH_LABEL);
+            }
+            UCharacterIterator iter = UCharacterIterator.getInstance(label);
+            result.append(convertToUnicode(iter,options));
+            if(sepIndex==srcArr.length){
+                break;
+            }
+            // Unlike the ToASCII operation we don't normalize the label separators
+            result.append(srcArr[sepIndex]);
+            // increment the sepIndex to skip past the separator
+            sepIndex++;
+            oldSepIndex =sepIndex;
+        }
+        if(result.length() > MAX_DOMAIN_NAME_LENGTH){
+            throw new StringPrepParseException("The output exceed the max allowed length.", StringPrepParseException.DOMAIN_NAME_TOO_LONG_ERROR);
+        }
+        return result;
+    }
+    
+    /**
+     * Compare two IDN strings for equivalence.
+     * This function splits the domain names into labels and compares them.
+     * According to IDN RFC, whenever two labels are compared, they are 
+     * considered equal if and only if their ASCII forms (obtained by 
+     * applying toASCII) match using an case-insensitive ASCII comparison.
+     * Two domain names are considered a match if and only if all labels 
+     * match regardless of whether label separators match.
+     * 
+     * @param s1        First IDN string as StringBuffer
+     * @param s2        Second IDN string as StringBuffer
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED    Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES      Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return 0 if the strings are equal, > 0 if s1 > s2 and < 0 if s1 < s2
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    //  TODO: optimize
+    public static int compare(StringBuffer s1, StringBuffer s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1.toString(),options);
+        StringBuffer s2Out = convertIDNToASCII(s2.toString(), options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+    
+    /**
+     * Compare two IDN strings for equivalence.
+     * This function splits the domain names into labels and compares them.
+     * According to IDN RFC, whenever two labels are compared, they are 
+     * considered equal if and only if their ASCII forms (obtained by 
+     * applying toASCII) match using an case-insensitive ASCII comparison.
+     * Two domain names are considered a match if and only if all labels 
+     * match regardless of whether label separators match.
+     * 
+     * @param s1        First IDN string 
+     * @param s2        Second IDN string
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED    Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES      Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return 0 if the strings are equal, > 0 if s1 > s2 and < 0 if s1 < s2
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    //  TODO: optimize
+    public static int compare(String s1, String s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1, options);
+        StringBuffer s2Out = convertIDNToASCII(s2, options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+    /**
+     * Compare two IDN strings for equivalence.
+     * This function splits the domain names into labels and compares them.
+     * According to IDN RFC, whenever two labels are compared, they are 
+     * considered equal if and only if their ASCII forms (obtained by 
+     * applying toASCII) match using an case-insensitive ASCII comparison.
+     * Two domain names are considered a match if and only if all labels 
+     * match regardless of whether label separators match.
+     * 
+     * @param s1        First IDN string as UCharacterIterator
+     * @param s2        Second IDN string as UCharacterIterator
+     * @param options   A bit set of options:
+     *  - IDNA.DEFAULT              Use default options, i.e., do not process unassigned code points
+     *                              and do not use STD3 ASCII rules
+     *                              If unassigned code points are found the operation fails with 
+     *                              ParseException.
+     *
+     *  - IDNA.ALLOW_UNASSIGNED     Unassigned values can be converted to ASCII for query operations
+     *                              If this option is set, the unassigned code points are in the input 
+     *                              are treated as normal Unicode code points.
+     *                          
+     *  - IDNA.USE_STD3_RULES       Use STD3 ASCII rules for host name syntax restrictions
+     *                              If this option is set and the input does not satisfy STD3 rules,  
+     *                              the operation will fail with ParseException
+     * @return 0 if the strings are equal, > 0 if i1 > i2 and < 0 if i1 < i2
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    //  TODO: optimize
+    public static int compare(UCharacterIterator s1, UCharacterIterator s2, int options)
+        throws StringPrepParseException{
+        if(s1==null || s2 == null){
+            throw new IllegalArgumentException("One of the source buffers is null");
+        }
+        StringBuffer s1Out = convertIDNToASCII(s1.getText(), options);
+        StringBuffer s2Out = convertIDNToASCII(s2.getText(), options);
+        return compareCaseInsensitiveASCII(s1Out,s2Out);
+    }
+}
diff --git a/src/com/ibm/icu/text/IndexCharacters.java b/src/com/ibm/icu/text/IndexCharacters.java
new file mode 100644
index 0000000..db5cdae
--- /dev/null
+++ b/src/com/ibm/icu/text/IndexCharacters.java
@@ -0,0 +1,274 @@
+//##header J2SE15
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google Inc, International Business Machines Corporation
+ * and others. All Rights Reserved.
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.LocaleData;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.impl.CollectionUtilities.MultiComparator;
+
+/**
+ * A set of characters for use as a UI "index", that is, a
+ * list of clickable characters (or character sequences) that allow the user to
+ * see a segment of a larger "target" list. That is, each character corresponds
+ * to a bucket in the target list, where everything in the bucket is greater
+ * than or equal to the character (according to the locale's collation). The
+ * intention is to have two main functions; one that produces an index list that
+ * is relatively static, and the other is a list that produces roughly
+ * equally-sized buckets. Only the first is currently provided.
+ * <p>
+ * The static list would be presented as something like
+ * 
+ * <pre>
+ *  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+ * </pre>
+ * 
+ * In the UI, an index character could be omitted if its bucket is empty. For
+ * example, if there is nothing in the bucket for Q, then Q could be omitted.
+ * <p>
+ * <b>Important Notes:</b>
+ * <ul>
+ * <li>Although we say "character" above, the index character could be a
+ * sequence, like "CH".</li>
+ * <li>There could be items in a target list that are less than the first or
+ * (much) greater than the last; examples include words from other scripts. The
+ * UI could bucket them with the first or last respectively, or have some symbol
+ * for those categories.</li>
+ * <li>The use of the list requires that the target list be sorted according to
+ * the locale that is used to create that list.</li>
+ * <li>For languages without widely accepted sorting methods (eg Chinese/Japanese)
+ * the results may appear arbitrary, and it may be best not to use these methods.</li>
+ * <li>In the initial version, an arbitrary limit of 100 is placed on these lists.</li>
+ * </ul>
+ * 
+ * @author markdavis
+ * @draft ICU 4.2
+ * @provisional This API might change or be removed in a future release.
+ */
+//TODO(markdavis) return an additional character that is the "least greater" character than
+//the last character.
+public class IndexCharacters {
+    public static final char CGJ = '\u034F';
+    private static final UnicodeSet ALPHABETIC = new UnicodeSet("[[:alphabetic:]-[:mark:]]");
+    private static final UnicodeSet HANGUL = new UnicodeSet("[\uAC00 \uB098 \uB2E4 \uB77C \uB9C8 \uBC14  \uC0AC  \uC544 \uC790  \uCC28 \uCE74 \uD0C0 \uD30C \uD558]");
+    private static final UnicodeSet ETHIOPIC = new UnicodeSet("[[:Block=Ethiopic:]&[:Script=Ethiopic:]]");
+    private static final UnicodeSet CORE_LATIN = new UnicodeSet("[a-z]");
+
+    private ULocale locale;
+    private Collator comparator;
+    private Set indexCharacters;
+    private LinkedHashMap alreadyIn = new LinkedHashMap();
+    private List noDistinctSorting = new ArrayList();
+    private List notAlphabetic = new ArrayList();
+
+    /**
+     * Create the index object.
+     * @param locale
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public IndexCharacters(ULocale locale) {
+        this.locale = locale;
+        comparator = Collator.getInstance(locale);
+        comparator.setStrength(Collator.PRIMARY);
+
+        // get the exemplars, and handle special cases
+
+        UnicodeSet exemplars = LocaleData.getExemplarSet(locale, LocaleData.ES_STANDARD);
+        // question: should we add auxiliary exemplars?
+        if (exemplars.containsSome(CORE_LATIN)) {
+            exemplars.addAll(CORE_LATIN);
+        }
+        if (exemplars.containsSome(HANGUL)) {
+            // cut down to small list
+            exemplars.removeAll(new UnicodeSet("[:block=hangul_syllables:]")).addAll(HANGUL);
+        }
+        if (exemplars.containsSome(ETHIOPIC)) {
+            // cut down to small list
+            // make use of the fact that Ethiopic is allocated in 8's, where
+            // the base is 0 mod 8.
+            for (UnicodeSetIterator it = new UnicodeSetIterator(ETHIOPIC); it.next();) {
+                if ((it.codepoint & 0x7) != 0) {
+                    exemplars.remove(it.codepoint);
+                }
+            }
+        }
+
+        // first sort them, with an "best" ordering among items that are the same according
+        // to the collator
+
+        Set preferenceSorting = new TreeSet(new MultiComparator(new Comparator[]{
+                comparator, new PreferenceComparator(Collator.getInstance(locale))}));
+        for (UnicodeSetIterator it = new UnicodeSetIterator(exemplars); it.next();) {
+            preferenceSorting.add(it.getString());
+        }
+
+        indexCharacters = new TreeSet(comparator);
+
+        // We nw make a sorted array of elements, uppercased
+        // Some of the input may, however, be redundant.
+        // That is, we might have c, ch, d, where "ch" sorts just like "c", "h"
+        // So we make a pass through, filtering out those cases.
+
+        for (Iterator it = preferenceSorting.iterator(); it.hasNext();) {
+            String item = (String) it.next();
+            item = UCharacter.toUpperCase(locale, item);
+            if (indexCharacters.contains(item)) {
+                for (Iterator it2 = indexCharacters.iterator(); it2.hasNext();) {
+                    Object itemAlreadyIn = it2.next();
+                    if (comparator.compare(item, itemAlreadyIn) == 0) {
+                        Set targets = (Set) alreadyIn.get(itemAlreadyIn);
+                        if (targets == null) {
+                            alreadyIn.put(itemAlreadyIn, targets = new LinkedHashSet());
+                        }
+                        targets.add(item);
+                        break;
+                    }
+                }
+            } else if (UTF16.countCodePoint(item) > 1 && comparator.compare(item, separated(item)) == 0){
+                noDistinctSorting.add(item);
+            } else if (!ALPHABETIC.containsSome(item)) {
+                notAlphabetic.add(item);
+            } else {
+                indexCharacters.add(item);
+            }
+        }
+
+        // if the result is still too large, cut down to 100 elements
+
+        final int size = indexCharacters.size() - 1;
+        if (size > 99) {
+            int count = 0;
+            int old = -1;
+            for (Iterator it = indexCharacters.iterator(); it.hasNext();) {
+                ++ count;
+                it.next();
+                final int bump = count * 99 / size;
+                if (bump == old) {
+                    it.remove();
+                } else {
+                    old = bump;
+                }   
+            }
+        }
+        indexCharacters = Collections.unmodifiableSet(indexCharacters);
+    }
+
+    /*
+     * Return the string with interspersed CGJs. Input must have more than 2 codepoints.
+     */
+    private String separated(String item) {
+        StringBuffer result = new StringBuffer();
+        // add a CGJ except within surrogates
+        char last = item.charAt(0);
+        result.append(last);
+        for (int i = 1; i < item.length(); ++i) {
+            char ch = item.charAt(i);
+            if (!UCharacter.isHighSurrogate(last) || !UCharacter.isLowSurrogate(ch)) {
+                result.append(CGJ);
+            }
+            result.append(ch);
+            last = ch;
+        }
+        return result.toString();
+    }
+
+    /**
+     * Get the index characters.
+     * @return A collection including the index characters
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Collection getIndexCharacters() {
+        return indexCharacters;
+    }
+
+    /**
+     * Get the locale
+     * @return The locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ULocale getLocale() {
+        return locale;
+    }
+
+    /**
+     * As the index is built, items may be discarded from the exemplars.
+     * This contains some of the discards, and is intended for debugging.
+     * @internal
+     */
+    public Map getAlreadyIn() {
+        return alreadyIn;
+    }
+
+    /**
+     * As the index is built, items may be discarded from the exemplars.
+     * This contains some of the discards, and is intended for debugging.
+     * @internal
+     */
+    public List getNoDistinctSorting() {
+        return noDistinctSorting;
+    }
+
+    /**
+     * As the index is built, items may be discarded from the exemplars.
+     * This contains some of the discards, and is intended for debugging.
+     * @internal
+     */
+    public List getNotAlphabetic() {
+        return notAlphabetic;
+    }
+
+    /*
+     * Comparator that returns "better" items first, where shorter NFKD is better,
+     * and otherwise NFKD binary order is better, and otherwise binary order is better.
+     */
+    private static class PreferenceComparator implements Comparator {
+        static final Comparator binary = new UTF16.StringComparator(true,false,0);
+        final Collator collator;
+
+        public PreferenceComparator(Collator collator) {
+            this.collator = collator;
+        }
+        
+        public int compare(Object o1, Object o2) {
+            if (o1 == o2) {
+                return 0;
+            }
+            String s1 = (String) o1;
+            String s2 = (String) o2;
+            String n1 = Normalizer.decompose(s1, true);
+            String n2 = Normalizer.decompose(s2, true);
+            int result = n1.length() - n2.length();
+            if (result != 0) {
+                return result;
+            }
+            result = collator.compare(n1, n2);
+            if (result != 0) {
+                return result;
+            }
+            return binary.compare(s1, s2);
+        }
+    }
+}
+//#endif
diff --git a/src/com/ibm/icu/text/LowercaseTransliterator.java b/src/com/ibm/icu/text/LowercaseTransliterator.java
new file mode 100644
index 0000000..04f23a2
--- /dev/null
+++ b/src/com/ibm/icu/text/LowercaseTransliterator.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCaseProps;
+
+import com.ibm.icu.util.ULocale;
+
+import com.ibm.icu.text.ReplaceableContextIterator;
+
+/**
+ * A transliterator that performs locale-sensitive toLower()
+ * case mapping.
+ */
+class LowercaseTransliterator extends Transliterator{
+
+    /**
+     * Package accessible ID.
+     */
+    static final String _ID = "Any-Lower";
+    
+    // TODO: Add variants for tr, az, lt, default = default locale
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new LowercaseTransliterator(ULocale.US);
+            }
+        });
+
+        Transliterator.registerSpecialInverse("Lower", "Upper", true);
+    }
+
+    private ULocale locale;
+
+    private UCaseProps csp;
+    private ReplaceableContextIterator iter;
+    private StringBuffer result;
+    private int[] locCache;
+
+    /**
+     * Constructs a transliterator.
+     */
+
+    public LowercaseTransliterator(ULocale loc) {
+        super(_ID, null);
+        locale = loc;
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch (IOException e) {
+            csp=null;
+        }
+        iter=new ReplaceableContextIterator();
+        result = new StringBuffer();
+        locCache = new int[1];
+        locCache[0]=0;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        if(csp==null) {
+            return;
+        }
+
+        if(offsets.start >= offsets.limit) {
+            return;
+        } 
+
+        iter.setText(text);
+        result.setLength(0);
+        int c, delta;
+
+        // Walk through original string
+        // If there is a case change, modify corresponding position in replaceable
+
+        iter.setIndex(offsets.start);
+        iter.setLimit(offsets.limit);
+        iter.setContextLimits(offsets.contextStart, offsets.contextLimit);
+        while((c=iter.nextCaseMapCP())>=0) {
+            c=csp.toFullLower(c, iter, result, locale, locCache);
+
+            if(iter.didReachLimit() && isIncremental) {
+                // the case mapping function tried to look beyond the context limit
+                // wait for more input
+                offsets.start=iter.getCaseMapCPStart();
+                return;
+            }
+
+            /* decode the result */
+            if(c<0) {
+                /* c mapped to itself, no change */
+                continue;
+            } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                /* replace by the mapping string */
+                delta=iter.replace(result.toString());
+                result.setLength(0);
+            } else {
+                /* replace by single-code point mapping */
+                delta=iter.replace(UTF16.valueOf(c));
+            }
+
+            if(delta!=0) {
+                offsets.limit += delta;
+                offsets.contextLimit += delta;
+            }
+        }
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/MeasureFormat.java b/src/com/ibm/icu/text/MeasureFormat.java
new file mode 100644
index 0000000..2474546
--- /dev/null
+++ b/src/com/ibm/icu/text/MeasureFormat.java
@@ -0,0 +1,56 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2007, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 20, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * A formatter for Measure objects.  This is an abstract base class.
+ *
+ * <p>To format or parse a Measure object, first create a formatter
+ * object using a MeasureFormat factory method.  Then use that
+ * object's format and parse methods.
+ *
+ * @see com.ibm.icu.text.UFormat
+ * @author Alan Liu
+ * @stable ICU 3.0
+ */
+public abstract class MeasureFormat extends UFormat {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -7182021401701778240L;
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected MeasureFormat() {}
+    
+    /**
+     * Return a formatter for CurrencyAmount objects in the given
+     * locale.
+     * @param locale desired locale
+     * @return a formatter object
+     * @stable ICU 3.0
+     */
+    public static MeasureFormat getCurrencyFormat(ULocale locale) {
+        return new CurrencyFormat(locale);
+    }
+
+    /**
+     * Return a formatter for CurrencyAmount objects in the default
+     * locale.
+     * @return a formatter object
+     * @stable ICU 3.0
+     */
+    public static MeasureFormat getCurrencyFormat() {
+        return getCurrencyFormat(ULocale.getDefault());
+    }
+}
diff --git a/src/com/ibm/icu/text/MessageFormat.java b/src/com/ibm/icu/text/MessageFormat.java
new file mode 100644
index 0000000..70fd74c
--- /dev/null
+++ b/src/com/ibm/icu/text/MessageFormat.java
@@ -0,0 +1,2313 @@
+//##header J2SE15
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 6, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.text.ChoiceFormat;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.HashMap;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.util.ArrayList;
+import java.text.CharacterIterator;
+//#endif
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <code>MessageFormat</code> provides a means to produce concatenated
+ * messages in language-neutral way. Use this to construct messages
+ * displayed for end users.
+ *
+ * <p>
+ * <code>MessageFormat</code> takes a set of objects, formats them, then
+ * inserts the formatted strings into the pattern at the appropriate places.
+ *
+ * <p>
+ * <strong>Note:</strong>
+ * <code>MessageFormat</code> differs from the other <code>Format</code>
+ * classes in that you create a <code>MessageFormat</code> object with one
+ * of its constructors (not with a <code>getInstance</code> style factory
+ * method). The factory methods aren't necessary because <code>MessageFormat</code>
+ * itself doesn't implement locale specific behavior. Any locale specific
+ * behavior is defined by the pattern that you provide as well as the
+ * subformats used for inserted arguments.
+ *
+ * <p>
+ * <strong>Note:</strong>
+ * In ICU 3.8 MessageFormat supports named arguments.  If a named argument
+ * is used, all arguments must be named.  Names start with a character in
+ * <code>:ID_START:</code> and continue with characters in <code>:ID_CONTINUE:</code>,
+ * in particular they do not start with a digit.  If named arguments
+ * are used, {@link #usesNamedArguments()} will return true.
+ * <p>
+ * The other new APIs supporting named arguments are
+ * {@link #setFormatsByArgumentName(Map)},
+ * {@link #setFormatByArgumentName(String, Format)},
+ * {@link #format(Map, StringBuffer, FieldPosition)},
+ * {@link #format(String, Map)}, {@link #parseToMap(String, ParsePosition)},
+ * and {@link #parseToMap(String)}.  These APIs are all compatible
+ * with patterns that do not used named arguments-- in these cases
+ * the keys in the input or output <code>Map</code>s use
+ * <code>String</code>s that name the argument indices, e.g. "0",
+ * "1", "2"... etc.
+ * <p>
+ * When named arguments are used, certain APIs on Message that take or
+ * return arrays will throw an exception, since it is not possible to
+ * identify positions in an array using a name.  These APIs are {@link
+ * #setFormatsByArgumentIndex(Format[])}, {@link #getFormatsByArgumentIndex()},
+ * {@link #format(Object[], StringBuffer, FieldPosition)},
+ * {@link #format(String, Object[])},{@link #parse(String, ParsePosition)},
+ * and {@link #parse(String)}.
+ * These APIs all have corresponding new versions as listed above.
+ * <p>
+
+ * The API {@link #format(Object, StringBuffer, FieldPosition)} has
+ * been modified so that the <code>Object</code> argument can be
+ * either an <code>Object</code> array or a <code>Map</code>.  If this
+ * format uses named arguments, this argument must not be an
+ * <code>Object</code> array otherwise an exception will be thrown.
+ * If the argument is a <code>Map</code> it can be used with Strings that
+ * represent indices as described above.
+ *
+ * <h4><a name="patterns">Patterns and Their Interpretation</a></h4>
+ *
+ * <code>MessageFormat</code> uses patterns of the following form:
+ * <blockquote><pre>
+ * <i>MessageFormatPattern:</i>
+ *         <i>String</i>
+ *         <i>MessageFormatPattern</i> <i>FormatElement</i> <i>String</i>
+ *
+ * <i>FormatElement:</i>
+ *         { <i>ArgumentIndexOrName</i> }
+ *         { <i>ArgumentIndexOrName</i> , <i>FormatType</i> }
+ *         { <i>ArgumentIndexOrName</i> , <i>FormatType</i> , <i>FormatStyle</i> }
+ *
+ * <i>ArgumentIndexOrName: one of </i>
+ *         ['0'-'9']+
+ *         [:ID_START:][:ID_CONTINUE:]*
+ *
+ * <i>FormatType: one of </i>
+ *         number date time choice
+ *
+ * <i>FormatStyle:</i>
+ *         short
+ *         medium
+ *         long
+ *         full
+ *         integer
+ *         currency
+ *         percent
+ *         <i>SubformatPattern</i>
+ *
+ * <i>String:</i>
+ *         <i>StringPart<sub>opt</sub></i>
+ *         <i>String</i> <i>StringPart</i>
+ *
+ * <i>StringPart:</i>
+ *         ''
+ *         ' <i>QuotedString</i> '
+ *         <i>UnquotedString</i>
+ *
+ * <i>SubformatPattern:</i>
+ *         <i>SubformatPatternPart<sub>opt</sub></i>
+ *         <i>SubformatPattern</i> <i>SubformatPatternPart</i>
+ *
+ * <i>SubFormatPatternPart:</i>
+ *         ' <i>QuotedPattern</i> '
+ *         <i>UnquotedPattern</i>
+ * </pre></blockquote>
+ *
+ * <p>
+ * Within a <i>String</i>, <code>"''"</code> represents a single
+ * quote. A <i>QuotedString</i> can contain arbitrary characters
+ * except single quotes; the surrounding single quotes are removed.
+ * An <i>UnquotedString</i> can contain arbitrary characters
+ * except single quotes and left curly brackets. Thus, a string that
+ * should result in the formatted message "'{0}'" can be written as
+ * <code>"'''{'0}''"</code> or <code>"'''{0}'''"</code>.
+ * <p>
+ * Within a <i>SubformatPattern</i>, different rules apply.
+ * A <i>QuotedPattern</i> can contain arbitrary characters
+ * except single quotes; but the surrounding single quotes are
+ * <strong>not</strong> removed, so they may be interpreted by the
+ * subformat. For example, <code>"{1,number,$'#',##}"</code> will
+ * produce a number format with the pound-sign quoted, with a result
+ * such as: "$#31,45".
+ * An <i>UnquotedPattern</i> can contain arbitrary characters
+ * except single quotes, but curly braces within it must be balanced.
+ * For example, <code>"ab {0} de"</code> and <code>"ab '}' de"</code>
+ * are valid subformat patterns, but <code>"ab {0'}' de"</code> and
+ * <code>"ab } de"</code> are not.
+ * <p>
+ * <dl><dt><b>Warning:</b><dd>The rules for using quotes within message
+ * format patterns unfortunately have shown to be somewhat confusing.
+ * In particular, it isn't always obvious to localizers whether single
+ * quotes need to be doubled or not. Make sure to inform localizers about
+ * the rules, and tell them (for example, by using comments in resource
+ * bundle source files) which strings will be processed by MessageFormat.
+ * Note that localizers may need to use single quotes in translated
+ * strings where the original version doesn't have them.
+ * <br>Note also that the simplest way to avoid the problem is to
+ * use the real apostrophe (single quote) character \u2019 (') for
+ * human-readable text, and to use the ASCII apostrophe (\u0027 ' )
+ * only in program syntax, like quoting in MessageFormat.
+ * See the annotations for U+0027 Apostrophe in The Unicode Standard.</p>
+ * </dl>
+ * <p>
+ * The <i>ArgumentIndex</i> value is a non-negative integer written
+ * using the digits '0' through '9', and represents an index into the
+ * <code>arguments</code> array passed to the <code>format</code> methods
+ * or the result array returned by the <code>parse</code> methods.
+ * <p>
+ * The <i>FormatType</i> and <i>FormatStyle</i> values are used to create
+ * a <code>Format</code> instance for the format element. The following
+ * table shows how the values map to Format instances. Combinations not
+ * shown in the table are illegal. A <i>SubformatPattern</i> must
+ * be a valid pattern string for the Format subclass used.
+ * <p>
+ * <table border=1>
+ *    <tr>
+ *       <th>Format Type
+ *       <th>Format Style
+ *       <th>Subformat Created
+ *    <tr>
+ *       <td colspan=2><i>(none)</i>
+ *       <td><code>null</code>
+ *    <tr>
+ *       <td rowspan=5><code>number</code>
+ *       <td><i>(none)</i>
+ *       <td><code>NumberFormat.getInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>integer</code>
+ *       <td><code>NumberFormat.getIntegerInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>currency</code>
+ *       <td><code>NumberFormat.getCurrencyInstance(getLocale())</code>
+ *    <tr>
+ *       <td><code>percent</code>
+ *       <td><code>NumberFormat.getPercentInstance(getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new DecimalFormat(subformatPattern, new DecimalFormatSymbols(getLocale()))</code>
+ *    <tr>
+ *       <td rowspan=6><code>date</code>
+ *       <td><i>(none)</i>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>short</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())</code>
+ *    <tr>
+ *       <td><code>medium</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>long</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.LONG, getLocale())</code>
+ *    <tr>
+ *       <td><code>full</code>
+ *       <td><code>DateFormat.getDateInstance(DateFormat.FULL, getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new SimpleDateFormat(subformatPattern, getLocale())
+ *    <tr>
+ *       <td rowspan=6><code>time</code>
+ *       <td><i>(none)</i>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>short</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())</code>
+ *    <tr>
+ *       <td><code>medium</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())</code>
+ *    <tr>
+ *       <td><code>long</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())</code>
+ *    <tr>
+ *       <td><code>full</code>
+ *       <td><code>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())</code>
+ *    <tr>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new SimpleDateFormat(subformatPattern, getLocale())
+ *    <tr>
+ *       <td><code>choice</code>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new ChoiceFormat(subformatPattern)</code>
+ *    <tr>
+ *       <td><code>spellout</code>
+ *       <td><i>Ruleset name (optional)</i>
+ *       <td><code>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.SPELLOUT)<br/>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(ruleset);</code>
+ *    <tr>
+ *       <td><code>ordinal</code>
+ *       <td><i>Ruleset name (optional)</i>
+ *       <td><code>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.ORDINAL)<br/>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(ruleset);</code>
+ *    <tr>
+ *       <td><code>duration</code>
+ *       <td><i>Ruleset name (optional)</i>
+ *       <td><code>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.DURATION)<br/>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(ruleset);</code>
+ *    <tr>
+ *       <td><code>plural</code>
+ *       <td><i>SubformatPattern</i>
+ *       <td><code>new PluralFormat(subformatPattern)</code>
+ * </table>
+ * <p>
+ *
+ * <h4>Usage Information</h4>
+ *
+ * <p>
+ * Here are some examples of usage:
+ * <blockquote>
+ * <pre>
+ * Object[] arguments = {
+ *     new Integer(7),
+ *     new Date(System.currentTimeMillis()),
+ *     "a disturbance in the Force"
+ * };
+ *
+ * String result = MessageFormat.format(
+ *     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
+ *     arguments);
+ *
+ * <em>output</em>: At 12:30 PM on Jul 3, 2053, there was a disturbance
+ *           in the Force on planet 7.
+ *
+ * </pre>
+ * </blockquote>
+ * Typically, the message format will come from resources, and the
+ * arguments will be dynamically set at runtime.
+ *
+ * <p>
+ * Example 2:
+ * <blockquote>
+ * <pre>
+ * Object[] testArgs = {new Long(3), "MyDisk"};
+ *
+ * MessageFormat form = new MessageFormat(
+ *     "The disk \"{1}\" contains {0} file(s).");
+ *
+ * System.out.println(form.format(testArgs));
+ *
+ * // output, with different testArgs
+ * <em>output</em>: The disk "MyDisk" contains 0 file(s).
+ * <em>output</em>: The disk "MyDisk" contains 1 file(s).
+ * <em>output</em>: The disk "MyDisk" contains 1,273 file(s).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * For more sophisticated patterns, you can use a <code>ChoiceFormat</code> to get
+ * output such as:
+ * <blockquote>
+ * <pre>
+ * MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
+ * double[] filelimits = {0,1,2};
+ * String[] filepart = {"no files","one file","{0,number} files"};
+ * ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
+ * form.setFormatByArgumentIndex(0, fileform);
+ *
+ * Object[] testArgs = {new Long(12373), "MyDisk"};
+ *
+ * System.out.println(form.format(testArgs));
+ *
+ * // output, with different testArgs
+ * output: The disk "MyDisk" contains no files.
+ * output: The disk "MyDisk" contains one file.
+ * output: The disk "MyDisk" contains 1,273 files.
+ * </pre>
+ * </blockquote>
+ * You can either do this programmatically, as in the above example,
+ * or by using a pattern (see
+ * {@link ChoiceFormat}
+ * for more information) as in:
+ * <blockquote>
+ * <pre>
+ * form.applyPattern(
+ *    "There {0,choice,0#are no files|1#is one file|1&lt;are {0,number,integer} files}.");
+ * </pre>
+ * </blockquote>
+ * <p>
+ * <strong>Note:</strong> As we see above, the string produced
+ * by a <code>ChoiceFormat</code> in <code>MessageFormat</code> is treated specially;
+ * occurances of '{' are used to indicated subformats, and cause recursion.
+ * If you create both a <code>MessageFormat</code> and <code>ChoiceFormat</code>
+ * programmatically (instead of using the string patterns), then be careful not to
+ * produce a format that recurses on itself, which will cause an infinite loop.
+ * <p>
+ * When a single argument is parsed more than once in the string, the last match
+ * will be the final result of the parsing.  For example,
+ * <pre>
+ * MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}");
+ * Object[] objs = {new Double(3.1415)};
+ * String result = mf.format( objs );
+ * // result now equals "3.14, 3.1"
+ * objs = null;
+ * objs = mf.parse(result, new ParsePosition(0));
+ * // objs now equals {new Double(3.1)}
+ * </pre>
+ * <p>
+ * Likewise, parsing with a MessageFormat object using patterns containing
+ * multiple occurances of the same argument would return the last match.  For
+ * example,
+ * <pre>
+ * MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
+ * String forParsing = "x, y, z";
+ * Object[] objs = mf.parse(forParsing, new ParsePosition(0));
+ * // result now equals {new String("z")}
+ * </pre>
+ *
+ * <h4><a name="synchronization">Synchronization</a></h4>
+ *
+ * <p>
+ * Message formats are not synchronized.
+ * It is recommended to create separate format instances for each thread.
+ * If multiple threads access a format concurrently, it must be synchronized
+ * externally.
+ *
+ * @see          java.util.Locale
+ * @see          Format
+ * @see          NumberFormat
+ * @see          DecimalFormat
+ * @see          ChoiceFormat
+ * @author       Mark Davis
+ * @stable ICU 3.0
+ */
+ // TODO: Update JavaDoc class description with regards to named arguments.
+ // TODO: Update JavaDoc class description with regards to PluralFormat
+ //       integration.
+public class MessageFormat extends UFormat {
+
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 7136212545847378651L;
+
+    /**
+     * Constructs a MessageFormat for the default locale and the
+     * specified pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public MessageFormat(String pattern) {
+        this.ulocale = ULocale.getDefault();
+        applyPattern(pattern);
+    }
+
+    /**
+     * Constructs a MessageFormat for the specified locale and
+     * pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @param locale the locale for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public MessageFormat(String pattern, Locale locale) {
+        this(pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Constructs a MessageFormat for the specified locale and
+     * pattern.
+     * The constructor first sets the locale, then parses the pattern and
+     * creates a list of subformats for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     *
+     * @param pattern the pattern for this message format
+     * @param locale the locale for this message format
+     * @exception IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.2
+     */
+    public MessageFormat(String pattern, ULocale locale) {
+        this.ulocale = locale;
+        applyPattern(pattern);
+    }
+
+    /**
+     * Sets the locale to be used when creating or comparing subformats.
+     * This affects subsequent calls to the {@link #applyPattern applyPattern}
+     * and {@link #toPattern toPattern} methods as well as to the
+     * <code>format</code> and
+     * {@link #formatToCharacterIterator formatToCharacterIterator} methods.
+     *
+     * @param locale the locale to be used when creating or comparing subformats
+     * @stable ICU 3.0
+     */
+    public void setLocale(Locale locale) {
+        setLocale(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Sets the locale to be used when creating or comparing subformats.
+     * This affects subsequent calls to the {@link #applyPattern applyPattern}
+     * and {@link #toPattern toPattern} methods as well as to the
+     * <code>format</code> and
+     * {@link #formatToCharacterIterator formatToCharacterIterator} methods.
+     *
+     * @param locale the locale to be used when creating or comparing subformats
+     * @stable ICU 3.2
+     */
+    public void setLocale(ULocale locale) {
+        /* Save the pattern, and then reapply so that */
+        /* we pick up any changes in locale specific */
+        /* elements */
+        String existingPattern = toPattern();                       /*ibm.3550*/
+        this.ulocale = locale;
+        applyPattern(existingPattern);                              /*ibm.3550*/
+    }
+
+    /**
+     * Gets the locale that's used when creating or comparing subformats.
+     *
+     * @return the locale used when creating or comparing subformats
+     * @stable ICU 3.0
+     */
+    public Locale getLocale() {
+        return ulocale.toLocale();
+    }
+
+    /**
+     * Gets the locale that's used when creating or comparing subformats.
+     *
+     * @return the locale used when creating or comparing subformats
+     * @stable ICU 3.2
+     */
+    public ULocale getULocale() {
+        return ulocale;
+    }
+
+    /**
+     * Sets the pattern used by this message format.
+     * The method parses the pattern and creates a list of subformats
+     * for the format elements contained in it.
+     * Patterns and their interpretation are specified in the
+     * <a href="#patterns">class description</a>.
+     * <p>
+     * The pattern must contain only named or only numeric arguments,
+     * mixing them is not allowed.
+     *
+     * @param pttrn the pattern for this message format
+     * @throws IllegalArgumentException if the pattern is invalid
+     * @stable ICU 3.0
+     */
+    public void applyPattern(String pttrn) {
+        StringBuffer[] segments = new StringBuffer[4];
+        for (int i = 0; i < segments.length; ++i) {
+            segments[i] = new StringBuffer();
+        }
+        int part = 0;
+        int formatNumber = 0;
+        boolean inQuote = false;
+        int braceStack = 0;
+        maxOffset = -1;
+        for (int i = 0; i < pttrn.length(); ++i) {
+            char ch = pttrn.charAt(i);
+            if (part == 0) {
+                if (ch == '\'') {
+                    if (i + 1 < pttrn.length()
+                        && pttrn.charAt(i+1) == '\'') {
+                        segments[part].append(ch);  // handle doubles
+                        ++i;
+                    } else {
+                        inQuote = !inQuote;
+                    }
+                } else if (ch == '{' && !inQuote) {
+                    part = 1;
+                } else {
+                    segments[part].append(ch);
+                }
+            } else  if (inQuote) {  // just copy quotes in parts
+                segments[part].append(ch);
+                if (ch == '\'') {
+                    inQuote = false;
+                }
+            } else {
+                switch (ch) {
+                case ',':
+                    if (part < 3)
+                        part += 1;
+                    else
+                        segments[part].append(ch);
+                    break;
+                case '{':
+                    ++braceStack;
+                    segments[part].append(ch);
+                    break;
+                case '}':
+                    if (braceStack == 0) {
+                        part = 0;
+                        makeFormat(i, formatNumber, segments);
+                        formatNumber++;
+                    } else {
+                        --braceStack;
+                        segments[part].append(ch);
+                    }
+                    break;
+                case '\'':
+                    inQuote = true;
+                    // fall through, so we keep quotes in other parts
+                default:
+                    segments[part].append(ch);
+                    break;
+                }
+            }
+        }
+        if (braceStack == 0 && part != 0) {
+            maxOffset = -1;
+            throw new IllegalArgumentException("Unmatched braces in the pattern.");
+        }
+        this.pattern = segments[0].toString();
+    }
+
+
+    /**
+     * Returns a pattern representing the current state of the message format.
+     * The string is constructed from internal information and therefore
+     * does not necessarily equal the previously applied pattern.
+     *
+     * @return a pattern representing the current state of the message format
+     * @stable ICU 3.0
+     */
+    public String toPattern() {
+        // later, make this more extensible
+        int lastOffset = 0;
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i <= maxOffset; ++i) {
+            copyAndFixQuotes(pattern, lastOffset, offsets[i],result);
+            lastOffset = offsets[i];
+            result.append('{');
+            result.append(argumentNames[i]);
+            if (formats[i] == null) {
+                // do nothing, string format
+            } else if (formats[i] instanceof DecimalFormat) {
+                if (formats[i].equals(NumberFormat.getInstance(ulocale))) {
+                    result.append(",number");
+                } else if (formats[i].equals(NumberFormat.getCurrencyInstance(ulocale))) {
+                    result.append(",number,currency");
+                } else if (formats[i].equals(NumberFormat.getPercentInstance(ulocale))) {
+                    result.append(",number,percent");
+                } else if (formats[i].equals(NumberFormat.getIntegerInstance(ulocale))) {
+                    result.append(",number,integer");
+                } else {
+                    result.append(",number," +
+                                  ((DecimalFormat)formats[i]).toPattern());
+                }
+            } else if (formats[i] instanceof SimpleDateFormat) {
+                if (formats[i].equals(DateFormat.getDateInstance(DateFormat.DEFAULT,ulocale))) {
+                    result.append(",date");
+                } else if (formats[i].equals(DateFormat.getDateInstance(DateFormat.SHORT,ulocale))) {
+                    result.append(",date,short");
+// This code will never be executed [alan]
+//                } else if (formats[i].equals(DateFormat.getDateInstance(DateFormat.DEFAULT,ulocale))) {
+//                    result.append(",date,medium");
+                } else if (formats[i].equals(DateFormat.getDateInstance(DateFormat.LONG,ulocale))) {
+                    result.append(",date,long");
+                } else if (formats[i].equals(DateFormat.getDateInstance(DateFormat.FULL,ulocale))) {
+                    result.append(",date,full");
+                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.DEFAULT,ulocale))) {
+                    result.append(",time");
+                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.SHORT,ulocale))) {
+                    result.append(",time,short");
+// This code will never be executed [alan]
+//                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.DEFAULT,ulocale))) {
+//                    result.append(",time,medium");
+                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.LONG,ulocale))) {
+                    result.append(",time,long");
+                } else if (formats[i].equals(DateFormat.getTimeInstance(DateFormat.FULL,ulocale))) {
+                    result.append(",time,full");
+                } else {
+                    result.append(",date," + ((SimpleDateFormat)formats[i]).toPattern());
+                }
+            } else if (formats[i] instanceof ChoiceFormat) {
+                result.append(",choice,"
+                        + ((ChoiceFormat) formats[i]).toPattern());
+            } else if (formats[i] instanceof PluralFormat) {
+              String pat = ((PluralFormat)formats[i]).toPattern();
+              // TODO: PluralFormat doesn't do the single quote thing, just reapply
+              if (pat.indexOf('\'') != 0) {
+                StringBuffer buf = new StringBuffer();
+                for (int j = 0; j < pat.length(); ++j) {
+                  char ch = pat.charAt(j);
+                  if (ch == '\'') {
+                    buf.append(ch); // double it
+                  }
+                  buf.append(ch);
+                }
+                pat = buf.toString();
+              }
+              result.append(",plural," + pat);
+            } else {
+                //result.append(", unknown");
+            }
+            result.append('}');
+        }
+        copyAndFixQuotes(pattern, lastOffset, pattern.length(), result);
+        return result.toString();
+    }
+
+    /**
+     * Sets the formats to use for the values passed into
+     * <code>format</code> methods or returned from <code>parse</code>
+     * methods. The indices of elements in <code>newFormats</code>
+     * correspond to the argument indices used in the previously set
+     * pattern string.
+     * The order of formats in <code>newFormats</code> thus corresponds to
+     * the order of elements in the <code>arguments</code> array passed
+     * to the <code>format</code> methods or the result array returned
+     * by the <code>parse</code> methods.
+     * <p>
+     * If an argument index is used for more than one format element
+     * in the pattern string, then the corresponding new format is used
+     * for all such format elements. If an argument index is not used
+     * for any format element in the pattern string, then the
+     * corresponding new format is ignored. If fewer formats are provided
+     * than needed, then only the formats for argument indices less
+     * than <code>newFormats.length</code> are replaced.
+     *
+     * This method is only supported if the format does not use
+     * named arguments, otherwise an IllegalArgumentException is thrown.
+     *
+     * @param newFormats
+     *            the new formats to use
+     * @throws NullPointerException
+     *                if <code>newFormats</code> is null
+     * @throws IllegalArgumentException
+     *                if this formatter uses named arguments
+     * @stable ICU 3.0
+     */
+    public void setFormatsByArgumentIndex(Format[] newFormats) {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                    "This method is not available in MessageFormat objects " +
+                    "that use alphanumeric argument names.");
+        }
+        for (int i = 0; i <= maxOffset; i++) {
+            int j = Integer.parseInt(argumentNames[i]);
+            if (j < newFormats.length) {
+                formats[i] = newFormats[j];
+            }
+        }
+    }
+
+    /**
+     * Sets the formats to use for the values passed into
+     * <code>format</code> methods or returned from <code>parse</code>
+     * methods. The keys in <code>newFormats</code> are the argument
+     * names in the previously set pattern string, and the values
+     * are the formats.
+     * <p>
+     * Only argument names from the pattern string are considered.
+     * Extra keys in <code>newFormats</code> that do not correspond
+     * to an argument name are ignored.  Similarly, if there is no
+     * format in newFormats for an argument name, the formatter
+     * for that argument remains unchanged.
+     * <p>
+     * This may be called on formats that do not use named arguments.
+     * In this case the map will be queried for key Strings that
+     * represent argument indices, e.g. "0", "1", "2" etc.
+     *
+     * @param newFormats a map from String to Format providing new
+     *        formats for named arguments.
+     * @stable ICU 3.8
+     */
+    public void setFormatsByArgumentName(Map newFormats) {
+        for (int i = 0; i <= maxOffset; i++) {
+            if (newFormats.containsKey(argumentNames[i])) {
+                Format f = (Format)newFormats.get(argumentNames[i]);
+                formats[i] = f;
+            }
+        }
+    }
+
+    /**
+     * Sets the formats to use for the format elements in the
+     * previously set pattern string.
+     * The order of formats in <code>newFormats</code> corresponds to
+     * the order of format elements in the pattern string.
+     * <p>
+     * If more formats are provided than needed by the pattern string,
+     * the remaining ones are ignored. If fewer formats are provided
+     * than needed, then only the first <code>newFormats.length</code>
+     * formats are replaced.
+     * <p>
+     * Since the order of format elements in a pattern string often
+     * changes during localization, it is generally better to use the
+     * {@link #setFormatsByArgumentIndex setFormatsByArgumentIndex}
+     * method, which assumes an order of formats corresponding to the
+     * order of elements in the <code>arguments</code> array passed to
+     * the <code>format</code> methods or the result array returned by
+     * the <code>parse</code> methods.
+     *
+     * @param newFormats the new formats to use
+     * @exception NullPointerException if <code>newFormats</code> is null
+     * @stable ICU 3.0
+     */
+    public void setFormats(Format[] newFormats) {
+        int runsToCopy = newFormats.length;
+        if (runsToCopy > maxOffset + 1) {
+            runsToCopy = maxOffset + 1;
+        }
+        for (int i = 0; i < runsToCopy; i++) {
+            formats[i] = newFormats[i];
+        }
+    }
+
+    /**
+     * Sets the format to use for the format elements within the
+     * previously set pattern string that use the given argument
+     * index.
+     * The argument index is part of the format element definition and
+     * represents an index into the <code>arguments</code> array passed
+     * to the <code>format</code> methods or the result array returned
+     * by the <code>parse</code> methods.
+     * <p>
+     * If the argument index is used for more than one format element
+     * in the pattern string, then the new format is used for all such
+     * format elements. If the argument index is not used for any format
+     * element in the pattern string, then the new format is ignored.
+     *
+     * This method is only supported when exclusively numbers are used for
+     * argument names. Otherwise an IllegalArgumentException is thrown.
+     *
+     * @param argumentIndex
+     *            the argument index for which to use the new format
+     * @param newFormat
+     *            the new format to use
+     * @exception IllegalArgumentException
+     *            if alphanumeric arguments where used in MessageFormat.
+     * @stable ICU 3.0
+     */
+    public void setFormatByArgumentIndex(int argumentIndex, Format newFormat) {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                    "This method is not available in MessageFormat objects " +
+                    "that use alphanumeric argument names.");
+        }
+        for (int j = 0; j <= maxOffset; j++) {
+            if (Integer.parseInt(argumentNames[j]) == argumentIndex) {
+                formats[j] = newFormat;
+            }
+        }
+    }
+
+    /**
+     * Sets the format to use for the format elements within the
+     * previously set pattern string that use the given argument
+     * name.
+     * <p>
+     * If the argument name is used for more than one format element
+     * in the pattern string, then the new format is used for all such
+     * format elements. If the argument name is not used for any format
+     * element in the pattern string, then the new format is ignored.
+     * <p>
+     * This API may be used on formats that do not use named arguments.
+     * In this case <code>argumentName</code> should be a String that names
+     * an argument index, e.g. "0", "1", "2"... etc.  If it does not name
+     * a valid index, the format will be ignored.  No error is thrown.
+     *
+     * @param argumentName the name of the argument to change
+     * @param newFormat the new format to use
+     * @stable ICU 3.8
+     */
+    public void setFormatByArgumentName(String argumentName, Format newFormat) {
+        for (int i = 0; i < maxOffset; ++i) {
+            if (argumentName.equals(argumentNames[i])) {
+                formats[i] = newFormat;
+            }
+        }
+    }
+
+    /**
+     * Sets the format to use for the format element with the given
+     * format element index within the previously set pattern string.
+     * The format element index is the zero-based number of the format
+     * element counting from the start of the pattern string.
+     * <p>
+     * Since the order of format elements in a pattern string often
+     * changes during localization, it is generally better to use the
+     * {@link #setFormatByArgumentIndex setFormatByArgumentIndex}
+     * method, which accesses format elements based on the argument
+     * index they specify.
+     *
+     * @param formatElementIndex the index of a format element within the pattern
+     * @param newFormat the format to use for the specified format element
+     * @exception ArrayIndexOutOfBoundsException if formatElementIndex is equal to or
+     *            larger than the number of format elements in the pattern string
+     * @stable ICU 3.0
+     */
+    public void setFormat(int formatElementIndex, Format newFormat) {
+        formats[formatElementIndex] = newFormat;
+    }
+
+    /**
+     * Gets the formats used for the values passed into
+     * <code>format</code> methods or returned from <code>parse</code>
+     * methods. The indices of elements in the returned array
+     * correspond to the argument indices used in the previously set
+     * pattern string.
+     * The order of formats in the returned array thus corresponds to
+     * the order of elements in the <code>arguments</code> array passed
+     * to the <code>format</code> methods or the result array returned
+     * by the <code>parse</code> methods.
+     * <p>
+     * If an argument index is used for more than one format element
+     * in the pattern string, then the format used for the last such
+     * format element is returned in the array. If an argument index
+     * is not used for any format element in the pattern string, then
+     * null is returned in the array.
+     *
+     * This method is only supported when exclusively numbers are used for
+     * argument names. Otherwise an IllegalArgumentException is thrown.
+     *
+     * @return the formats used for the arguments within the pattern
+     * @throws IllegalArgumentException
+     *         if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public Format[] getFormatsByArgumentIndex() {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                    "This method is not available in MessageFormat objects " +
+                    "that use alphanumeric argument names.");
+        }
+        int maximumArgumentNumber = -1;
+        for (int i = 0; i <= maxOffset; i++) {
+            int argumentNumber = Integer.parseInt(argumentNames[i]);
+            if (argumentNumber > maximumArgumentNumber) {
+                maximumArgumentNumber = argumentNumber;
+            }
+        }
+        Format[] resultArray = new Format[maximumArgumentNumber + 1];
+        for (int i = 0; i <= maxOffset; i++) {
+            resultArray[Integer.parseInt(argumentNames[i])] = formats[i];
+        }
+        return resultArray;
+    }
+    // TODO: provide method public Map getFormatsByArgumentName().
+    // Where Map is: String argumentName --> Format format.
+
+    /**
+     * Gets the formats used for the format elements in the
+     * previously set pattern string.
+     * The order of formats in the returned array corresponds to
+     * the order of format elements in the pattern string.
+     * <p>
+     * Since the order of format elements in a pattern string often
+     * changes during localization, it's generally better to use the
+     * {@link #getFormatsByArgumentIndex()}
+     * method, which assumes an order of formats corresponding to the
+     * order of elements in the <code>arguments</code> array passed to
+     * the <code>format</code> methods or the result array returned by
+     * the <code>parse</code> methods.
+     *
+     * This method is only supported when exclusively numbers are used for
+     * argument names. Otherwise an IllegalArgumentException is thrown.
+     *
+     * @return the formats used for the format elements in the pattern
+     * @stable ICU 3.0
+     */
+    public Format[] getFormats() {
+        Format[] resultArray = new Format[maxOffset + 1];
+        System.arraycopy(formats, 0, resultArray, 0, maxOffset + 1);
+        return resultArray;
+    }
+
+    /**
+     * Formats an array of objects and appends the <code>MessageFormat</code>'s
+     * pattern, with format elements replaced by the formatted objects, to the
+     * provided <code>StringBuffer</code>.
+     * <p>
+     * The text substituted for the individual format elements is derived from
+     * the current subformat of the format element and the
+     * <code>arguments</code> element at the format element's argument index
+     * as indicated by the first matching line of the following table. An
+     * argument is <i>unavailable</i> if <code>arguments</code> is
+     * <code>null</code> or has fewer than argumentIndex+1 elements.  When
+     * an argument is unavailable no substitution is performed.
+     * <p>
+     * <table border=1>
+     *    <tr>
+     *       <th>Subformat
+     *       <th>Argument
+     *       <th>Formatted Text
+     *    <tr>
+     *       <td><i>any</i>
+     *       <td><i>unavailable</i>
+     *       <td><code>"{" + argumentIndex + "}"</code>
+     *    <tr>
+     *       <td><i>any</i>
+     *       <td><code>null</code>
+     *       <td><code>"null"</code>
+     *    <tr>
+     *       <td><code>instanceof ChoiceFormat</code>
+     *       <td><i>any</i>
+     *       <td><code>subformat.format(argument).indexOf('{') >= 0 ?<br>
+     *           (new MessageFormat(subformat.format(argument), getLocale())).format(argument) :
+     *           subformat.format(argument)</code>
+     *    <tr>
+     *       <td><code>!= null</code>
+     *       <td><i>any</i>
+     *       <td><code>subformat.format(argument)</code>
+     *    <tr>
+     *       <td><code>null</code>
+     *       <td><code>instanceof Number</code>
+     *       <td><code>NumberFormat.getInstance(getLocale()).format(argument)</code>
+     *    <tr>
+     *       <td><code>null</code>
+     *       <td><code>instanceof Date</code>
+     *       <td><code>DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, getLocale()).format(argument)</code>
+     *    <tr>
+     *       <td><code>null</code>
+     *       <td><code>instanceof String</code>
+     *       <td><code>argument</code>
+     *    <tr>
+     *       <td><code>null</code>
+     *       <td><i>any</i>
+     *       <td><code>argument.toString()</code>
+     * </table>
+     * <p>
+     * If <code>pos</code> is non-null, and refers to
+     * <code>Field.ARGUMENT</code>, the location of the first formatted
+     * string will be returned.
+     *
+     * This method is only supported when the format does not use named
+     * arguments, otherwise an IllegalArgumentException is thrown.
+     *
+     * @param arguments an array of objects to be formatted and substituted.
+     * @param result where text is appended.
+     * @param pos On input: an alignment field, if desired.
+     *            On output: the offsets of the alignment field.
+     * @throws IllegalArgumentException if an argument in the
+     *            <code>arguments</code> array is not of the type
+     *            expected by the format element(s) that use it.
+     * @throws IllegalArgumentException
+     *            if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public final StringBuffer format(Object[] arguments, StringBuffer result,
+                                     FieldPosition pos)
+    {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                  "This method is not available in MessageFormat objects " +
+                  "that use alphanumeric argument names.");
+        }
+        return subformat(arguments, result, pos, null);
+    }
+
+    /**
+     * Formats a map of objects and appends the <code>MessageFormat</code>'s
+     * pattern, with format elements replaced by the formatted objects, to the
+     * provided <code>StringBuffer</code>.
+     * <p>
+     * The text substituted for the individual format elements is derived from
+     * the current subformat of the format element and the
+     * <code>arguments</code> value corresopnding to the format element's
+     * argument name.
+     * <p>
+     * This API may be called on formats that do not use named arguments.
+     * In this case the the keys in <code>arguments</code> must be numeric
+     * strings (e.g. "0", "1", "2"...).
+     * <p>
+     * An argument is <i>unavailable</i> if <code>arguments</code> is
+     * <code>null</code> or does not have a value corresponding to an argument
+     * name in the pattern.  When an argument is unavailable no substitution
+     * is performed.
+     *
+     * @param arguments a map of objects to be formatted and substituted.
+     * @param result where text is appended.
+     * @param pos On input: an alignment field, if desired.
+     *            On output: the offsets of the alignment field.
+     * @throws IllegalArgumentException if an argument in the
+     *         <code>arguments</code> array is not of the type
+     *         expected by the format element(s) that use it.
+     * @return the passed-in StringBuffer
+     * @stable ICU 3.8
+     */
+    public final StringBuffer format(Map arguments, StringBuffer result,
+                                     FieldPosition pos) {
+        return subformat(arguments, result, pos, null);
+    }
+
+    /**
+     * Creates a MessageFormat with the given pattern and uses it
+     * to format the given arguments. This is equivalent to
+     * <blockquote>
+     *     <code>(new {@link #MessageFormat(String) MessageFormat}(pattern)).{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}(arguments, new StringBuffer(), null).toString()</code>
+     * </blockquote>
+     *
+     * @throws IllegalArgumentException if the pattern is invalid,
+     *            or if an argument in the <code>arguments</code> array
+     *            is not of the type expected by the format element(s)
+     *            that use it.
+     * @throws IllegalArgumentException
+     *            if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public static String format(String pattern, Object[] arguments) {
+        MessageFormat temp = new MessageFormat(pattern);
+        return temp.format(arguments);
+    }
+
+    /**
+     * Creates a MessageFormat with the given pattern and uses it to
+     * format the given arguments.  The pattern must identifyarguments
+     * by name instead of by number.
+     * <p>
+     * @throws IllegalArgumentException if the pattern is invalid,
+     *         or if an argument in the <code>arguments</code> map
+     *         is not of the type expected by the format element(s)
+     *         that use it.
+     * @see #format(Map, StringBuffer, FieldPosition)
+     * @see #format(String, Object[])
+     * @stable ICU 3.8
+     */
+    public static String format(String pattern, Map arguments) {
+        MessageFormat temp = new MessageFormat(pattern);
+        return temp.format(arguments);
+    }
+
+    /**
+     * Returns true if this MessageFormat uses named arguments,
+     * and false otherwise.  See class description.
+     *
+     * @return true if named arguments are used.
+     * @stable ICU 3.8
+     */
+    public boolean usesNamedArguments() {
+        return !argumentNamesAreNumeric;
+    }
+
+    // Overrides
+    /**
+     * Formats a map or array of objects and appends the <code>MessageFormat</code>'s
+     * pattern, with format elements replaced by the formatted objects, to the
+     * provided <code>StringBuffer</code>.
+     * This is equivalent to either of
+     * <blockquote>
+     *     <code>{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}((Object[]) arguments, result, pos)</code>
+     *     <code>{@link #format(java.util.Map, java.lang.StringBuffer, java.text.FieldPosition) format}((Map) arguments, result, pos)</code>
+     * </blockquote>
+     * A map must be provided if this format uses named arguments, otherwise
+     * an IllegalArgumentException will be thrown.
+     * @param arguments a map or array of objects to be formatted
+     * @param result where text is appended
+     * @param pos On input: an alignment field, if desired
+     *            On output: the offsets of the alignment field
+     * @throws IllegalArgumentException if an argument in
+     *         <code>arguments</code> is not of the type
+     *         expected by the format element(s) that use it
+     * @throws IllegalArgumentException if <code>arguments<code> is
+     *         an array of Object and this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public final StringBuffer format(Object arguments, StringBuffer result,
+                                     FieldPosition pos)
+    {
+        if ((arguments == null || arguments instanceof Map)) {
+            return subformat((Map) arguments, result, pos, null);
+        } else {
+            if (!argumentNamesAreNumeric) {
+                throw new IllegalArgumentException(
+                        "This method is not available in MessageFormat objects " +
+                        "that use alphanumeric argument names.");
+            }
+            return subformat((Object[]) arguments, result, pos, null);
+        }
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Formats an array of objects and inserts them into the
+     * <code>MessageFormat</code>'s pattern, producing an
+     * <code>AttributedCharacterIterator</code>.
+     * You can use the returned <code>AttributedCharacterIterator</code>
+     * to build the resulting String, as well as to determine information
+     * about the resulting String.
+     * <p>
+     * The text of the returned <code>AttributedCharacterIterator</code> is
+     * the same that would be returned by
+     * <blockquote>
+     *     <code>{@link #format(java.lang.Object[], java.lang.StringBuffer, java.text.FieldPosition) format}(arguments, new StringBuffer(), null).toString()</code>
+     * </blockquote>
+     * <p>
+     * In addition, the <code>AttributedCharacterIterator</code> contains at
+     * least attributes indicating where text was generated from an
+     * argument in the <code>arguments</code> array. The keys of these attributes are of
+     * type <code>MessageFormat.Field</code>, their values are
+     * <code>Integer</code> objects indicating the index in the <code>arguments</code>
+     * array of the argument from which the text was generated.
+     * <p>
+     * The attributes/value from the underlying <code>Format</code>
+     * instances that <code>MessageFormat</code> uses will also be
+     * placed in the resulting <code>AttributedCharacterIterator</code>.
+     * This allows you to not only find where an argument is placed in the
+     * resulting String, but also which fields it contains in turn.
+     *
+     * @param arguments an array of objects to be formatted and substituted.
+     * @return AttributedCharacterIterator describing the formatted value.
+     * @exception NullPointerException if <code>arguments</code> is null.
+     * @exception IllegalArgumentException if an argument in the
+     *            <code>arguments</code> array is not of the type
+     *            expected by the format element(s) that use it.
+     * @stable ICU 3.8
+     */
+    public AttributedCharacterIterator formatToCharacterIterator(Object arguments) {
+        StringBuffer result = new StringBuffer();
+        ArrayList iterators = new ArrayList();
+
+        if (arguments == null) {
+            throw new NullPointerException(
+                   "formatToCharacterIterator must be passed non-null object");
+        }
+        if (arguments instanceof Map) {
+            subformat((Map)arguments, result, null, iterators);
+        } else {
+            subformat((Object[]) arguments, result, null, iterators);
+        }
+        if (iterators.size() == 0) {
+            return _createAttributedCharacterIterator("");
+        }
+        return _createAttributedCharacterIterator(
+                     (AttributedCharacterIterator[])iterators.toArray(
+                     new AttributedCharacterIterator[iterators.size()]));
+    }
+//#endif
+
+    /**
+     * Parses the string.
+     *
+     * <p>Caveats: The parse may fail in a number of circumstances.
+     * For example:
+     * <ul>
+     * <li>If one of the arguments does not occur in the pattern.
+     * <li>If the format of an argument loses information, such as
+     *     with a choice format where a large number formats to "many".
+     * <li>Does not yet handle recursion (where
+     *     the substituted strings contain {n} references.)
+     * <li>Will not always find a match (or the correct match)
+     *     if some part of the parse is ambiguous.
+     *     For example, if the pattern "{1},{2}" is used with the
+     *     string arguments {"a,b", "c"}, it will format as "a,b,c".
+     *     When the result is parsed, it will return {"a", "b,c"}.
+     * <li>If a single argument is parsed more than once in the string,
+     *     then the later parse wins.
+     * </ul>
+     * When the parse fails, use ParsePosition.getErrorIndex() to find out
+     * where in the string did the parsing failed. The returned error
+     * index is the starting offset of the sub-patterns that the string
+     * is comparing with. For example, if the parsing string "AAA {0} BBB"
+     * is comparing against the pattern "AAD {0} BBB", the error index is
+     * 0. When an error occurs, the call to this method will return null.
+     * If the source is null, return an empty array.
+     * <p>
+     * This method is only supported with numbered arguments.  If
+     * the format pattern used named argument an
+     * IllegalArgumentException is thrown.
+     *
+     * @throws IllegalArgumentException if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public Object[] parse(String source, ParsePosition pos) {
+        if (!argumentNamesAreNumeric) {
+            throw new IllegalArgumentException(
+                    "This method is not available in MessageFormat objects " +
+                    "that use named argument.");
+        }
+        Map objectMap = parseToMap(source, pos);
+        int maximumArgumentNumber = -1;
+        for (int i = 0; i <= maxOffset; i++) {
+            int argumentNumber = Integer.parseInt(argumentNames[i]);
+            if (argumentNumber > maximumArgumentNumber) {
+                maximumArgumentNumber = argumentNumber;
+            }
+        }
+
+        if (objectMap == null) {
+            return null;
+        }
+
+        Object[] resultArray = new Object[maximumArgumentNumber + 1];
+        Iterator keyIter = objectMap.keySet().iterator();
+        while (keyIter.hasNext()) {
+            String key = (String) keyIter.next();
+            resultArray[Integer.parseInt(key)] = objectMap.get(key);
+        }
+
+        return resultArray;
+    }
+
+    /**
+     * Parses the string, returning the results in a Map.
+     * This is similar to the version that returns an array
+     * of Object.  This supports both named and numbered
+     * arguments-- if numbered, the keys in the map are the
+     * corresponding Strings (e.g. "0", "1", "2"...).
+     *
+     * @param source the text to parse
+     * @param pos the position at which to start parsing.  on return,
+     *        contains the result of the parse.
+     * @return a Map containing key/value pairs for each parsed argument.
+     * @stable ICU 3.8
+     */
+    public Map parseToMap(String source, ParsePosition pos) {
+        if (source == null) {
+            Map empty = new HashMap();
+            return empty;
+        }
+
+//        int maximumArgumentNumber = -1;
+//        for (int i = 0; i <= maxOffset; i++) {
+//           int argumentNumber = Integer.parseInt(argumentNames[i]);
+//           if (argumentNumber > maximumArgumentNumber) {
+//               maximumArgumentNumber = argumentNumber;
+//           }
+//         }
+//        Object[] resultArray = new Object[maximumArgumentNumber + 1];
+
+        Map resultMap = new HashMap();
+
+        int patternOffset = 0;
+        int sourceOffset = pos.getIndex();
+        ParsePosition tempStatus = new ParsePosition(0);
+        for (int i = 0; i <= maxOffset; ++i) {
+            // match up to format
+            int len = offsets[i] - patternOffset;
+            if (len == 0 || pattern.regionMatches(patternOffset,
+                                                  source, sourceOffset, len)) {
+                sourceOffset += len;
+                patternOffset += len;
+            } else {
+                pos.setErrorIndex(sourceOffset);
+                return null; // leave index as is to signal error
+            }
+
+            // now use format
+            if (formats[i] == null) {   // string format
+                // if at end, use longest possible match
+                // otherwise uses first match to intervening string
+                // does NOT recursively try all possibilities
+                int tempLength = (i != maxOffset) ? offsets[i+1] : pattern.length();
+
+                int next;
+                if (patternOffset >= tempLength) {
+                    next = source.length();
+                }else{
+                    next = source.indexOf( pattern.substring(patternOffset,tempLength), sourceOffset);
+                }
+
+                if (next < 0) {
+                    pos.setErrorIndex(sourceOffset);
+                    return null; // leave index as is to signal error
+                } else {
+                    String strValue = source.substring(sourceOffset, next);
+                    if (!strValue.equals("{" + argumentNames[i] + "}"))
+                        resultMap.put(argumentNames[i], source.substring(sourceOffset, next));
+//                        resultArray[Integer.parseInt(argumentNames[i])] =
+//                            source.substring(sourceOffset, next);
+                    sourceOffset = next;
+                }
+            } else {
+                tempStatus.setIndex(sourceOffset);
+                resultMap.put(argumentNames[i], formats[i].parseObject(source, tempStatus));
+//                resultArray[Integer.parseInt(argumentNames[i])] =
+//                    formats[i].parseObject(source, tempStatus);
+                if (tempStatus.getIndex() == sourceOffset) {
+                    pos.setErrorIndex(sourceOffset);
+                    return null; // leave index as is to signal error
+                }
+                sourceOffset = tempStatus.getIndex(); // update
+            }
+        }
+        int len = pattern.length() - patternOffset;
+        if (len == 0 || pattern.regionMatches(patternOffset,
+                                              source, sourceOffset, len)) {
+            pos.setIndex(sourceOffset + len);
+        } else {
+            pos.setErrorIndex(sourceOffset);
+            return null; // leave index as is to signal error
+        }
+        return resultMap;
+    }
+
+    /**
+     * Parses text from the beginning of the given string to produce an object
+     * array.
+     * The method may not use the entire text of the given string.
+     * <p>
+     * See the {@link #parse(String, ParsePosition)} method for more information
+     * on message parsing.
+     *
+     * @param source A <code>String</code> whose beginning should be parsed.
+     * @return An <code>Object</code> array parsed from the string.
+     * @exception ParseException
+     *                if the beginning of the specified string cannot be parsed.
+     * @exception IllegalArgumentException
+     *                if this format uses named arguments
+     * @stable ICU 3.0
+     */
+    public Object[] parse(String source) throws ParseException {
+        ParsePosition pos = new ParsePosition(0);
+        Object[] result = parse(source, pos);
+        if (pos.getIndex() == 0) // unchanged, returned object is null
+            throw new ParseException("MessageFormat parse error!",
+                                     pos.getErrorIndex());
+
+        return result;
+    }
+
+    /**
+     * Parses text from the beginning of the given string to produce a map from
+     * argument to values. The method may not use the entire text of the given string.
+     * <p>
+     * See the {@link #parse(String, ParsePosition)} method for more information
+     * on message parsing.
+     *
+     * @param source A <code>String</code> whose beginning should be parsed.
+     * @return A <code>Map</code> parsed from the string.
+     * @throws ParseException if the beginning of the specified string cannot
+     *         be parsed.
+     * @see #parseToMap(String, ParsePosition)
+     * @stable ICU 3.8
+     */
+    public Map parseToMap(String source) throws ParseException {
+
+        ParsePosition pos = new ParsePosition(0);
+        Map result = parseToMap(source, pos);
+        if (pos.getIndex() == 0) // unchanged, returned object is null
+            throw new ParseException("MessageFormat parse error!",
+                                     pos.getErrorIndex());
+
+        return result;
+    }
+
+    /**
+     * Parses text from a string to produce an object array or Map.
+     * <p>
+     * The method attempts to parse text starting at the index given by
+     * <code>pos</code>.
+     * If parsing succeeds, then the index of <code>pos</code> is updated
+     * to the index after the last character used (parsing does not necessarily
+     * use all characters up to the end of the string), and the parsed
+     * object array is returned. The updated <code>pos</code> can be used to
+     * indicate the starting point for the next call to this method.
+     * If an error occurs, then the index of <code>pos</code> is not
+     * changed, the error index of <code>pos</code> is set to the index of
+     * the character where the error occurred, and null is returned.
+     * <p>
+     * See the {@link #parse(String, ParsePosition)} method for more information
+     * on message parsing.
+     *
+     * @param source A <code>String</code>, part of which should be parsed.
+     * @param pos A <code>ParsePosition</code> object with index and error
+     *            index information as described above.
+     * @return An <code>Object</code> parsed from the string, either an
+     *         array of Object, or a Map, depending on whether named
+     *         arguments are used.  This can be queried using <code>usesNamedArguments</code>.
+     *         In case of error, returns null.
+     * @throws NullPointerException if <code>pos</code> is null.
+     * @stable ICU 3.0
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        if (argumentNamesAreNumeric) {
+            return parse(source, pos);
+        } else {
+            return parseToMap(source, pos);
+        }
+    }
+
+    /**
+     * Creates and returns a copy of this object.
+     *
+     * @return a clone of this instance.
+     * @stable ICU 3.0
+     */
+    public Object clone() {
+        MessageFormat other = (MessageFormat) super.clone();
+
+        // clone arrays. Can't do with utility because of bug in Cloneable
+        other.formats = (Format[]) formats.clone(); // shallow clone
+        for (int i = 0; i < formats.length; ++i) {
+            if (formats[i] != null)
+                other.formats[i] = (Format) formats[i].clone();
+        }
+        // for primitives or immutables, shallow clone is enough
+        other.offsets = (int[]) offsets.clone();
+        other.argumentNames = (String[]) argumentNames.clone();
+        other.argumentNamesAreNumeric = argumentNamesAreNumeric;
+
+        return other;
+    }
+
+    /**
+     * Equality comparison between two message format objects
+     * @stable ICU 3.0
+     */
+    public boolean equals(Object obj) {
+        if (this == obj)                      // quick check
+            return true;
+        if (obj == null || getClass() != obj.getClass())
+            return false;
+        MessageFormat other = (MessageFormat) obj;
+        return (maxOffset == other.maxOffset
+                && pattern.equals(other.pattern)
+                && Utility.objectEquals(ulocale, other.ulocale) // does null check
+                && Utility.arrayEquals(offsets, other.offsets)
+                && Utility.arrayEquals(argumentNames, other.argumentNames)
+                && Utility.arrayEquals(formats, other.formats)
+                && (argumentNamesAreNumeric == other.argumentNamesAreNumeric));
+    }
+
+    /**
+     * Generates a hash code for the message format object.
+     * @stable ICU 3.0
+     */
+    public int hashCode() {
+        return pattern.hashCode(); // enough for reasonable distribution
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Defines constants that are used as attribute keys in the
+     * <code>AttributedCharacterIterator</code> returned
+     * from <code>MessageFormat.formatToCharacterIterator</code>.
+     *
+     * @stable ICU 3.8
+     */
+    public static class Field extends Format.Field {
+
+        private static final long serialVersionUID = 7510380454602616157L;
+
+        /**
+         * Create a <code>Field</code> with the specified name.
+         *
+         * @param name The name of the attribute
+         *
+         * @stable ICU 3.8
+         */
+        protected Field(String name) {
+            super(name);
+        }
+
+        /**
+         * Resolves instances being deserialized to the predefined constants.
+         *
+         * @return resolved MessageFormat.Field constant
+         * @throws InvalidObjectException if the constant could not be resolved.
+         *
+         * @stable ICU 3.8
+         */
+        protected Object readResolve() throws InvalidObjectException {
+            if (this.getClass() != MessageFormat.Field.class) {
+                throw new InvalidObjectException("A subclass of MessageFormat.Field must implement readResolve.");
+            }
+            if (this.getName().equals(ARGUMENT.getName())) {
+                return ARGUMENT;
+            } else {
+                throw new InvalidObjectException("Unknown attribute name.");
+            }
+        }
+
+        /**
+         * Constant identifying a portion of a message that was generated
+         * from an argument passed into <code>formatToCharacterIterator</code>.
+         * The value associated with the key will be an <code>Integer</code>
+         * indicating the index in the <code>arguments</code> array of the
+         * argument from which the text was generated.
+         *
+         * @stable ICU 3.8
+         */
+        public static final Field ARGUMENT = new Field("message argument field");
+
+    }
+//#endif
+
+    // ===========================privates============================
+
+    /**
+     * The locale to use for formatting numbers and dates.
+     * This is no longer used, and here only for serialization compatibility.
+     * @serial
+     */
+    private Locale locale;
+
+    /**
+     * The locale to use for formatting numbers and dates.
+     * @serial
+     */
+    private ULocale ulocale;
+
+    /**
+     * The string that the formatted values are to be plugged into.  In other words, this
+     * is the pattern supplied on construction with all of the {} expressions taken out.
+     * @serial
+     */
+    private String pattern = "";
+
+    /** The initially expected number of subformats in the format */
+    private static final int INITIAL_FORMATS = 10;
+
+    /**
+     * An array of formatters, which are used to format the arguments.
+     * @serial
+     */
+    private Format[] formats = new Format[INITIAL_FORMATS];
+
+    /**
+     * The positions where the results of formatting each argument are to be
+     * inserted into the pattern.
+     *
+     * @serial
+     */
+    private int[] offsets = new int[INITIAL_FORMATS];
+
+    /**
+     * The argument numbers corresponding to each formatter.  (The formatters are stored
+     * in the order they occur in the pattern, not in the order in which the arguments
+     * are specified.)
+     * @serial
+     */
+    // retained for backwards compatibility
+    private int[] argumentNumbers = new int[INITIAL_FORMATS];
+
+    /**
+     * The argument names corresponding to each formatter. (The formatters are
+     * stored in the order they occur in the pattern, not in the order in which
+     * the arguments are specified.)
+     *
+     * @serial
+     */
+    private String[] argumentNames = new String[INITIAL_FORMATS];
+
+    /**
+     * Is true iff all argument names are non-negative numbers.
+     *
+     * @serial
+     */
+    private boolean argumentNamesAreNumeric = true;
+
+    /**
+     * One less than the number of entries in <code>offsets</code>.  Can also be thought of
+     * as the index of the highest-numbered element in <code>offsets</code> that is being used.
+     * All of these arrays should have the same number of elements being used as <code>offsets</code>
+     * does, and so this variable suffices to tell us how many entries are in all of them.
+     * @serial
+     */
+    private int maxOffset = -1;
+
+    /**
+     * Internal routine used by format. If <code>characterIterators</code> is
+     * non-null, AttributedCharacterIterator will be created from the
+     * subformats as necessary. If <code>characterIterators</code> is null
+     * and <code>fp</code> is non-null and identifies
+     * <code>Field.MESSAGE_ARGUMENT</code>, the location of
+     * the first replaced argument will be set in it.
+     *
+     * @exception IllegalArgumentException if an argument in the
+     *            <code>arguments</code> array is not of the type
+     *            expected by the format element(s) that use it.
+     */
+    private StringBuffer subformat(Object[] arguments, StringBuffer result,
+                                   FieldPosition fp, List characterIterators) {
+        return subformat(arrayToMap(arguments), result, fp, characterIterators);
+    }
+
+    /**
+     * Internal routine used by format.
+     *
+     * @throws IllegalArgumentException if an argument in the
+     *         <code>arguments</code> map is not of the type
+     *         expected by the format element(s) that use it.
+     */
+    private StringBuffer subformat(Map arguments, StringBuffer result,
+                                   FieldPosition fp, List characterIterators) {
+        // note: this implementation assumes a fast substring & index.
+        // if this is not true, would be better to append chars one by one.
+        int lastOffset = 0;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        int last = result.length();
+//#endif
+        for (int i = 0; i <= maxOffset; ++i) {
+            result.append(pattern.substring(lastOffset, offsets[i]));
+            lastOffset = offsets[i];
+            String argumentName = argumentNames[i];
+            if (arguments == null || !arguments.containsKey(argumentName)) {
+                result.append("{" + argumentName + "}");
+                continue;
+            }
+            // int argRecursion = ((recursionProtection >> (argumentNumber*2)) & 0x3);
+            if (false) { // if (argRecursion == 3){
+                // prevent loop!!!
+                result.append('\uFFFD');
+            } else {
+                Object obj = arguments.get(argumentName);
+                String arg = null;
+                Format subFormatter = null;
+                if (obj == null) {
+                    arg = "null";
+                } else if (formats[i] != null) {
+                    subFormatter = formats[i];
+                    if (subFormatter instanceof ChoiceFormat
+                        || subFormatter instanceof PluralFormat) {
+                        arg = formats[i].format(obj);
+                        // TODO: This should be made more robust.
+                        //       Does this work with '{' in quotes?
+                        if (arg.indexOf('{') >= 0) {
+                            subFormatter = new MessageFormat(arg, ulocale);
+                            obj = arguments;
+                            arg = null;
+                        }
+                    }
+                } else if (obj instanceof Number) {
+                    // format number if can
+                    subFormatter = NumberFormat.getInstance(ulocale);
+                } else if (obj instanceof Date) {
+                    // format a Date if can
+                    subFormatter = DateFormat.getDateTimeInstance(
+                             DateFormat.SHORT, DateFormat.SHORT, ulocale);//fix
+                } else if (obj instanceof String) {
+                    arg = (String) obj;
+
+                } else {
+                    arg = obj.toString();
+                    if (arg == null) arg = "null";
+                }
+
+                // At this point we are in two states, either subFormatter
+                // is non-null indicating we should format obj using it,
+                // or arg is non-null and we should use it as the value.
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##                if (subFormatter != null) {
+//##                    arg = subFormatter.format(obj);
+//##                }
+//##                result.append(arg);
+//#else
+                if (characterIterators != null) {
+                    // If characterIterators is non-null, it indicates we need
+                    // to get the CharacterIterator from the child formatter.
+                    if (last != result.length()) {
+                        characterIterators.add(
+                            _createAttributedCharacterIterator(result.substring
+                                                              (last)));
+                        last = result.length();
+                    }
+                    if (subFormatter != null) {
+                        AttributedCharacterIterator subIterator =
+                                   subFormatter.formatToCharacterIterator(obj);
+
+                        append(result, subIterator);
+                        if (last != result.length()) {
+                            characterIterators.add(
+                                         _createAttributedCharacterIterator(
+                                         subIterator, Field.ARGUMENT,
+                                         argumentNamesAreNumeric ? (Object)new Integer(argumentName) : (Object)argumentName));
+                            last = result.length();
+                        }
+                        arg = null;
+                    }
+                    if (arg != null && arg.length() > 0) {
+                        result.append(arg);
+                        characterIterators.add(
+                                 _createAttributedCharacterIterator(
+                                 arg, Field.ARGUMENT,
+                                 argumentNamesAreNumeric ? (Object)new Integer(argumentName) : (Object)argumentName));
+                        last = result.length();
+                    }
+                } else {
+                    if (subFormatter != null) {
+                        arg = subFormatter.format(obj);
+                    }
+                    last = result.length();
+                    result.append(arg);
+                    if (i == 0 && fp != null && Field.ARGUMENT.equals(
+                                  fp.getFieldAttribute())) {
+                        fp.setBeginIndex(last);
+                        fp.setEndIndex(result.length());
+                    }
+                    last = result.length();
+                }
+//#endif
+            }
+        }
+        result.append(pattern.substring(lastOffset, pattern.length()));
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+        if (characterIterators != null && last != result.length()) {
+            characterIterators.add(_createAttributedCharacterIterator(
+                                   result.substring(last)));
+        }
+//#endif
+        return result;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Convenience method to append all the characters in
+     * <code>iterator</code> to the StringBuffer <code>result</code>.
+     */
+    private void append(StringBuffer result, CharacterIterator iterator) {
+        if (iterator.first() != CharacterIterator.DONE) {
+            char aChar;
+
+            result.append(iterator.first());
+            while ((aChar = iterator.next()) != CharacterIterator.DONE) {
+                result.append(aChar);
+            }
+        }
+    }
+//#endif
+
+    private static final String[] typeList =
+        {"", "number", "date", "time", "choice", "spellout", "ordinal",
+         "duration", "plural"};
+    private static final int
+        TYPE_EMPTY = 0,
+        TYPE_NUMBER = 1,
+        TYPE_DATE = 2,
+        TYPE_TIME = 3,
+        TYPE_CHOICE = 4,
+        TYPE_SPELLOUT = 5,
+        TYPE_ORDINAL = 6,
+        TYPE_DURATION = 7,
+        TYPE_PLURAL = 8;
+
+    private static final String[] modifierList =
+        {"", "currency", "percent", "integer"};
+
+    private static final int
+        MODIFIER_EMPTY = 0,
+        MODIFIER_CURRENCY = 1,
+        MODIFIER_PERCENT = 2,
+        MODIFIER_INTEGER = 3;
+
+    private static final String[] dateModifierList =
+        {"", "short", "medium", "long", "full"};
+
+    private static final int
+        DATE_MODIFIER_EMPTY = 0,
+        DATE_MODIFIER_SHORT = 1,
+        DATE_MODIFIER_MEDIUM = 2,
+        DATE_MODIFIER_LONG = 3,
+        DATE_MODIFIER_FULL = 4;
+
+    private void makeFormat(int position, int offsetNumber,
+                            StringBuffer[] segments)
+    {
+        // get the argument number
+        // int argumentNumber;
+        // try {
+        //     argumentNumber = Integer.parseInt(segments[1].toString()); // always unlocalized!
+        // } catch (NumberFormatException e) {
+        //    throw new IllegalArgumentException("can't parse argument number "
+        //            + segments[1]);
+        //}
+        // if (argumentNumber < 0) {
+        //    throw new IllegalArgumentException("negative argument number "
+        //            + argumentNumber);
+        //}
+
+        // resize format information arrays if necessary
+        if (offsetNumber >= formats.length) {
+            int newLength = formats.length * 2;
+            Format[] newFormats = new Format[newLength];
+            int[] newOffsets = new int[newLength];
+            String[] newArgumentNames = new String[newLength];
+            System.arraycopy(formats, 0, newFormats, 0, maxOffset + 1);
+            System.arraycopy(offsets, 0, newOffsets, 0, maxOffset + 1);
+            System.arraycopy(argumentNames, 0, newArgumentNames, 0,
+                    maxOffset + 1);
+            formats = newFormats;
+            offsets = newOffsets;
+            argumentNames = newArgumentNames;
+        }
+        int oldMaxOffset = maxOffset;
+        maxOffset = offsetNumber;
+        offsets[offsetNumber] = segments[0].length();
+        argumentNames[offsetNumber] = segments[1].toString();
+        // All argument names numeric ?
+        int argumentNumber;
+        try {
+            // always unlocalized!
+             argumentNumber = Integer.parseInt(segments[1].toString());
+         } catch (NumberFormatException e) {
+             argumentNumber = -1;
+         }
+         if (offsetNumber == 0) {
+             // First argument determines whether all argument identifiers have
+             // to be numbers or (IDStartChars IDContChars*) strings.
+             argumentNamesAreNumeric = argumentNumber >= 0;
+         }
+
+         if (argumentNamesAreNumeric && argumentNumber < 0 ||
+             !argumentNamesAreNumeric &&
+             !isAlphaIdentifier(argumentNames[offsetNumber])) {
+             throw new IllegalArgumentException(
+                     "All argument identifiers have to be either non-negative " +
+                     "numbers or strings following the pattern " +
+                     "([:ID_Start:] [:ID_Continue:]*).\n" +
+                     "For more details on these unicode sets, visit " +
+                     "http://demo.icu-project.org/icu-bin/ubrowse");
+         }
+
+        // now get the format
+        Format newFormat = null;
+        switch (findKeyword(segments[2].toString(), typeList)) {
+        case TYPE_EMPTY:
+            break;
+        case TYPE_NUMBER:
+            switch (findKeyword(segments[3].toString(), modifierList)) {
+            case MODIFIER_EMPTY:
+                newFormat = NumberFormat.getInstance(ulocale);
+                break;
+            case MODIFIER_CURRENCY:
+                newFormat = NumberFormat.getCurrencyInstance(ulocale);
+                break;
+            case MODIFIER_PERCENT:
+                newFormat = NumberFormat.getPercentInstance(ulocale);
+                break;
+            case MODIFIER_INTEGER:
+                newFormat = NumberFormat.getIntegerInstance(ulocale);
+                break;
+            default: // pattern
+                newFormat = new DecimalFormat(segments[3].toString(), new DecimalFormatSymbols(ulocale));
+                break;
+            }
+            break;
+        case TYPE_DATE:
+            switch (findKeyword(segments[3].toString(), dateModifierList)) {
+            case DATE_MODIFIER_EMPTY:
+                newFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, ulocale);
+                break;
+            case DATE_MODIFIER_SHORT:
+                newFormat = DateFormat.getDateInstance(DateFormat.SHORT, ulocale);
+                break;
+            case DATE_MODIFIER_MEDIUM:
+                newFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, ulocale);
+                break;
+            case DATE_MODIFIER_LONG:
+                newFormat = DateFormat.getDateInstance(DateFormat.LONG, ulocale);
+                break;
+            case DATE_MODIFIER_FULL:
+                newFormat = DateFormat.getDateInstance(DateFormat.FULL, ulocale);
+                break;
+            default:
+                newFormat = new SimpleDateFormat(segments[3].toString(), ulocale);
+                break;
+            }
+            break;
+        case TYPE_TIME:
+            switch (findKeyword(segments[3].toString(), dateModifierList)) {
+            case DATE_MODIFIER_EMPTY:
+                newFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, ulocale);
+                break;
+            case DATE_MODIFIER_SHORT:
+                newFormat = DateFormat.getTimeInstance(DateFormat.SHORT, ulocale);
+                break;
+            case DATE_MODIFIER_MEDIUM:
+                newFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, ulocale);
+                break;
+            case DATE_MODIFIER_LONG:
+                newFormat = DateFormat.getTimeInstance(DateFormat.LONG, ulocale);
+                break;
+            case DATE_MODIFIER_FULL:
+                newFormat = DateFormat.getTimeInstance(DateFormat.FULL, ulocale);
+                break;
+            default:
+                newFormat = new SimpleDateFormat(segments[3].toString(), ulocale);
+                break;
+            }
+            break;
+        case TYPE_CHOICE:
+            try {
+                newFormat = new ChoiceFormat(segments[3].toString());
+            } catch (Exception e) {
+                maxOffset = oldMaxOffset;
+                throw new IllegalArgumentException("Choice Pattern incorrect");
+            }
+            break;
+        case TYPE_SPELLOUT:
+            {
+                RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat(ulocale, RuleBasedNumberFormat.SPELLOUT);
+                String ruleset = segments[3].toString().trim();
+                if (ruleset.length() != 0) {
+                    try {
+                        rbnf.setDefaultRuleSet(ruleset);
+                    }
+                    catch (Exception e) {
+                        // warn invalid ruleset
+                    }
+                }
+                newFormat = rbnf;
+            }
+            break;
+        case TYPE_ORDINAL:
+            {
+                RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat(ulocale, RuleBasedNumberFormat.ORDINAL);
+                String ruleset = segments[3].toString().trim();
+                if (ruleset.length() != 0) {
+                    try {
+                        rbnf.setDefaultRuleSet(ruleset);
+                    }
+                    catch (Exception e) {
+                        // warn invalid ruleset
+                    }
+                }
+                newFormat = rbnf;
+            }
+            break;
+        case TYPE_DURATION:
+            {
+                RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat(ulocale, RuleBasedNumberFormat.DURATION);
+                String ruleset = segments[3].toString().trim();
+                if (ruleset.length() != 0) {
+                    try {
+                        rbnf.setDefaultRuleSet(ruleset);
+                    }
+                    catch (Exception e) {
+                        // warn invalid ruleset
+                    }
+                }
+                newFormat = rbnf;
+            }
+            break;
+        case TYPE_PLURAL:
+            {
+                // PluralFormat does not handle quotes.
+                // Remove quotes.
+                // TODO: Should PluralFormat handle quotes?
+                StringBuffer unquotedPattern = new StringBuffer();
+                String quotedPattern = segments[3].toString();
+                boolean inQuote = false;
+                for (int i = 0; i < quotedPattern.length(); ++i) {
+                    char ch = quotedPattern.charAt(i);
+                    if (ch == '\'') {
+                        if (i+1 < quotedPattern.length() &&
+                            quotedPattern.charAt(i+1) == '\'') {
+                                unquotedPattern.append(ch);
+                                ++i;
+                            } else {
+                                inQuote = !inQuote;
+                            }
+                    } else {
+                        unquotedPattern.append(ch);
+                    }
+                }
+
+                PluralFormat pls = new PluralFormat(ulocale,
+                                                    unquotedPattern.toString());
+                newFormat = pls;
+            }
+            break;
+        default:
+            maxOffset = oldMaxOffset;
+            throw new IllegalArgumentException("unknown format type at ");
+        }
+        formats[offsetNumber] = newFormat;
+        segments[1].setLength(0);   // throw away other segments
+        segments[2].setLength(0);
+        segments[3].setLength(0);
+    }
+
+    private static final int findKeyword(String s, String[] list) {
+        s = s.trim().toLowerCase();
+        for (int i = 0; i < list.length; ++i) {
+            if (s.equals(list[i]))
+                return i;
+        }
+        return -1;
+    }
+
+    private static final void copyAndFixQuotes(String source, int start, int end, StringBuffer target) {
+        // added 'gotLB' logic from ICU4C - questionable [alan]
+        boolean gotLB = false;
+        for (int i = start; i < end; ++i) {
+            char ch = source.charAt(i);
+            if (ch == '{') {
+                target.append("'{'");
+                gotLB = true;
+            } else if (ch == '}') {
+                if (gotLB) {
+                    target.append(ch);
+                    gotLB = false;
+                } else {
+                    target.append("'}'");
+                }
+            } else if (ch == '\'') {
+                target.append("''");
+            } else {
+                target.append(ch);
+            }
+        }
+    }
+
+    /**
+     * After reading an object from the input stream, do a simple verification
+     * to maintain class invariants.
+     * @throws InvalidObjectException if the objects read from the stream is invalid.
+     */
+    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+        if (argumentNames == null) { // name mod, rev
+          argumentNamesAreNumeric = true;
+          argumentNames = new String[argumentNumbers.length];
+          for (int i = 0; i < argumentNumbers.length; ++i) {
+            argumentNames[i] = String.valueOf(argumentNumbers[i]);
+          }
+        }
+        boolean isValid = maxOffset >= -1
+                && formats.length > maxOffset
+                && offsets.length > maxOffset
+                && argumentNames.length > maxOffset;
+        if (isValid) {
+            int lastOffset = pattern.length() + 1;
+            for (int i = maxOffset; i >= 0; --i) {
+                if ((offsets[i] < 0) || (offsets[i] > lastOffset)) {
+                    isValid = false;
+                    break;
+                } else {
+                    lastOffset = offsets[i];
+                }
+            }
+        }
+        if (!isValid) {
+            throw new InvalidObjectException("Could not reconstruct MessageFormat from corrupt stream.");
+        }
+        if (ulocale == null) {
+            ulocale = ULocale.forLocale(locale);
+        }
+    }
+
+    /**
+     * This is a helper method for converting an object array into a map. The
+     * key set of the map is [0, ..., array.length]. The value associated with
+     * each key is the ith entry of the passed object array.
+     *
+     * @throws InvalidObjectException
+     *             if the objects read from the stream is invalid.
+     */
+    private Map arrayToMap(Object[] array) {
+        Map map = new HashMap();
+        if (array != null) {
+            for (int i = 0; i < array.length; ++i) {
+                map.put(Integer.toString(i), array[i]);
+            }
+        }
+        return map;
+    }
+
+    private boolean isAlphaIdentifier(String argument) {
+        if (argument.length() == 0) {
+            return false;
+        }
+        for (int i = 0; i < argument.length(); ++i ) {
+            if (i == 0 && !IDStartChars.contains(argument.charAt(i)) ||
+                i > 0 &&  !IDContChars.contains(argument.charAt(i))){
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static final char SINGLE_QUOTE = '\'';
+    private static final char CURLY_BRACE_LEFT = '{';
+    private static final char CURLY_BRACE_RIGHT = '}';
+
+    private static final int STATE_INITIAL = 0;
+    private static final int STATE_SINGLE_QUOTE = 1;
+    private static final int STATE_IN_QUOTE = 2;
+    private static final int STATE_MSG_ELEMENT = 3;
+
+    private static UnicodeSet IDStartChars = new UnicodeSet("[:ID_Start:]");
+    private static UnicodeSet IDContChars = new UnicodeSet("[:ID_Continue:]");
+
+    /**
+     * Convert an 'apostrophe-friendly' pattern into a standard
+     * pattern.  Standard patterns treat all apostrophes as
+     * quotes, which is problematic in some languages, e.g.
+     * French, where apostrophe is commonly used.  This utility
+     * assumes that only an unpaired apostrophe immediately before
+     * a brace is a true quote.  Other unpaired apostrophes are paired,
+     * and the resulting standard pattern string is returned.
+     *
+     * <p><b>Note</b> it is not guaranteed that the returned pattern
+     * is indeed a valid pattern.  The only effect is to convert
+     * between patterns having different quoting semantics.
+     *
+     * @param pattern the 'apostrophe-friendly' patttern to convert
+     * @return the standard equivalent of the original pattern
+     * @stable ICU 3.4
+     */
+    public static String autoQuoteApostrophe(String pattern) {
+        StringBuffer buf = new StringBuffer(pattern.length() * 2);
+        int state = STATE_INITIAL;
+        int braceCount = 0;
+        for (int i = 0, j = pattern.length(); i < j; ++i) {
+            char c = pattern.charAt(i);
+            switch (state) {
+            case STATE_INITIAL:
+                switch (c) {
+                case SINGLE_QUOTE:
+                    state = STATE_SINGLE_QUOTE;
+                    break;
+                case CURLY_BRACE_LEFT:
+                    state = STATE_MSG_ELEMENT;
+                    ++braceCount;
+                    break;
+                }
+                break;
+            case STATE_SINGLE_QUOTE:
+                switch (c) {
+                case SINGLE_QUOTE:
+                    state = STATE_INITIAL;
+                    break;
+                case CURLY_BRACE_LEFT:
+                case CURLY_BRACE_RIGHT:
+                    state = STATE_IN_QUOTE;
+                    break;
+                default:
+                    buf.append(SINGLE_QUOTE);
+                    state = STATE_INITIAL;
+                    break;
+                }
+                break;
+            case STATE_IN_QUOTE:
+                switch (c) {
+                case SINGLE_QUOTE:
+                    state = STATE_INITIAL;
+                    break;
+                }
+                break;
+            case STATE_MSG_ELEMENT:
+                switch (c) {
+                case CURLY_BRACE_LEFT:
+                    ++braceCount;
+                    break;
+                case CURLY_BRACE_RIGHT:
+                    if (--braceCount == 0) {
+                        state = STATE_INITIAL;
+                    }
+                    break;
+                }
+                break;
+            default: // Never happens.
+                break;
+            }
+            buf.append(c);
+        }
+        // End of scan
+        if (state == STATE_SINGLE_QUOTE || state == STATE_IN_QUOTE) {
+            buf.append(SINGLE_QUOTE);
+        }
+        return new String(buf);
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    //
+    // private methods for AttributedCharacterIterator support
+    //
+    // Note: The equivalent methods are defined as package local methods in
+    //       java.text.Format.  ICU cannot access these methods, so we have
+    //       these methods locally, with "_" prefix for avoiding name collision.
+    //       (The collision itself is not a problem, but Eclipse displays warnings
+    //       by the default warning level.)  We may move these utility methods
+    //       up to com.ibm.icu.text.UFormat later.  Yoshito
+
+    private static AttributedCharacterIterator _createAttributedCharacterIterator(String text) {
+        AttributedString as = new AttributedString(text);
+        return as.getIterator();
+    }
+
+    private static AttributedCharacterIterator _createAttributedCharacterIterator(AttributedCharacterIterator[] iterators) {
+        if (iterators == null || iterators.length == 0) {
+            return _createAttributedCharacterIterator("");
+        }
+        // Create a single AttributedString
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < iterators.length; i++) {
+            int index = iterators[i].getBeginIndex();
+            int end = iterators[i].getEndIndex();
+            while (index < end) {
+                sb.append(iterators[i].setIndex(index++));
+            }
+        }
+        AttributedString as = new AttributedString(sb.toString());
+
+        // Set attributes
+        int offset = 0;
+        for (int i = 0; i < iterators.length; i++) {
+            iterators[i].first();
+            int start = iterators[i].getBeginIndex();
+            while (true) {
+                Map map = iterators[i].getAttributes();
+                int len = iterators[i].getRunLimit() - start; // run length
+                if (map.size() > 0) {
+                    Iterator eit = map.entrySet().iterator();
+                    while (eit.hasNext()) {
+                        Map.Entry entry = (Map.Entry)eit.next();
+                        as.addAttribute((AttributedCharacterIterator.Attribute)entry.getKey(), entry.getValue(),
+                                offset, offset + len);
+                    }
+                }
+                offset += len;
+                start += len;
+                iterators[i].setIndex(start);
+                if (iterators[i].current() == CharacterIterator.DONE) {
+                    break;
+                }
+            }
+        }
+
+        return as.getIterator();
+    }
+
+    private static AttributedCharacterIterator _createAttributedCharacterIterator(AttributedCharacterIterator iterator,
+            AttributedCharacterIterator.Attribute key, Object value) {
+        AttributedString as = new AttributedString(iterator);
+        as.addAttribute(key, value);
+        return as.getIterator();
+    }
+
+    private static AttributedCharacterIterator _createAttributedCharacterIterator(String text,
+            AttributedCharacterIterator.Attribute key, Object value) {
+        AttributedString as = new AttributedString(text);
+        as.addAttribute(key, value);
+        return as.getIterator();
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/text/NFRule.java b/src/com/ibm/icu/text/NFRule.java
new file mode 100644
index 0000000..088489c
--- /dev/null
+++ b/src/com/ibm/icu/text/NFRule.java
@@ -0,0 +1,1331 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+
+import java.text.*;
+
+/**
+ * A class representing a single rule in a RuleBasedNumberFormat.  A rule
+ * inserts its text into the result string and then passes control to its
+ * substitutions, which do the same thing.
+ */
+final class NFRule {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Special base value used to identify a negative-number rule
+     */
+    public static final int NEGATIVE_NUMBER_RULE = -1;
+
+    /**
+     * Special base value used to identify an improper fraction (x.x) rule
+     */
+    public static final int IMPROPER_FRACTION_RULE = -2;
+
+    /**
+     * Special base value used to identify a proper fraction (0.x) rule
+     */
+    public static final int PROPER_FRACTION_RULE = -3;
+
+    /**
+     * Special base value used to identify a master rule
+     */
+    public static final int MASTER_RULE = -4;
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The rule's base value
+     */
+    private long baseValue;
+
+    /**
+     * The rule's radix (the radix to the power of the exponent equals
+     * the rule's divisor)
+     */
+    private int radix = 10;
+
+    /**
+     * The rule's exponent (the radx rased to the power of the exponsnt
+     * equals the rule's divisor)
+     */
+    private short exponent = 0;
+
+    /**
+     * The rule's rule text.  When formatting a number, the rule's text
+     * is inserted into the result string, and then the text from any
+     * substitutions is inserted into the result string
+     */
+    private String ruleText = null;
+
+    /**
+     * The rule's first substitution (the one with the lower offset
+     * into the rule text)
+     */
+    private NFSubstitution sub1 = null;
+
+    /**
+     * The rule's second substitution (the one with the higher offset
+     * into the rule text)
+     */
+    private NFSubstitution sub2 = null;
+
+    /**
+     * The RuleBasedNumberFormat that owns this rule
+     */
+    private RuleBasedNumberFormat formatter = null;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Creates one or more rules based on the description passed in.
+     * @param description The description of the rule(s).
+     * @param owner The rule set containing the new rule(s).
+     * @param predecessor The rule that precedes the new one(s) in "owner"'s
+     * rule list
+     * @param ownersOwner The RuleBasedNumberFormat that owns the
+     * rule set that owns the new rule(s)
+     * @return An instance of NFRule, or an array of NFRules
+     */
+    public static Object makeRules(String                description,
+                                   NFRuleSet             owner,
+                                   NFRule                predecessor,
+                                   RuleBasedNumberFormat ownersOwner) {
+        // we know we're making at least one rule, so go ahead and
+        // new it up and initialize its basevalue and divisor
+        // (this also strips the rule descriptor, if any, off the
+        // descripton string)
+        NFRule rule1 = new NFRule(ownersOwner);
+        description = rule1.parseRuleDescriptor(description);
+
+        // check the description to see whether there's text enclosed
+        // in brackets
+        int brack1 = description.indexOf("[");
+        int brack2 = description.indexOf("]");
+
+        // if the description doesn't contain a matched pair of brackets,
+        // or if it's of a type that doesn't recognize bracketed text,
+        // then leave the description alone, initialize the rule's
+        // rule text and substitutions, and return that rule
+        if (brack1 == -1 || brack2 == -1 || brack1 > brack2
+            || rule1.getBaseValue() == PROPER_FRACTION_RULE
+            || rule1.getBaseValue() == NEGATIVE_NUMBER_RULE) {
+            rule1.ruleText = description;
+            rule1.extractSubstitutions(owner, predecessor, ownersOwner);
+            return rule1;
+        } else {
+            // if the description does contain a matched pair of brackets,
+            // then it's really shorthand for two rules (with one exception)
+            NFRule rule2 = null;
+            StringBuffer sbuf = new StringBuffer();
+
+            // we'll actually only split the rule into two rules if its
+            // base value is an even multiple of its divisor (or it's one
+            // of the special rules)
+            if ((rule1.baseValue > 0
+                 && rule1.baseValue % (Math.pow(rule1.radix, rule1.exponent)) == 0)
+                || rule1.baseValue == IMPROPER_FRACTION_RULE
+                || rule1.baseValue == MASTER_RULE) {
+
+                // if it passes that test, new up the second rule.  If the
+                // rule set both rules will belong to is a fraction rule
+                // set, they both have the same base value; otherwise,
+                // increment the original rule's base value ("rule1" actually
+                // goes SECOND in the rule set's rule list)
+                rule2 = new NFRule(ownersOwner);
+                if (rule1.baseValue >= 0) {
+                    rule2.baseValue = rule1.baseValue;
+                    if (!owner.isFractionSet()) {
+                        ++rule1.baseValue;
+                    }
+                }
+
+                // if the description began with "x.x" and contains bracketed
+                // text, it describes both the improper fraction rule and
+                // the proper fraction rule
+                else if (rule1.baseValue == IMPROPER_FRACTION_RULE) {
+                    rule2.baseValue = PROPER_FRACTION_RULE;
+                }
+
+                // if the description began with "x.0" and contains bracketed
+                // text, it describes both the master rule and the
+                // improper fraction rule
+                else if (rule1.baseValue == MASTER_RULE) {
+                    rule2.baseValue = rule1.baseValue;
+                    rule1.baseValue = IMPROPER_FRACTION_RULE;
+                }
+
+                // both rules have the same radix and exponent (i.e., the
+                // same divisor)
+                rule2.radix = rule1.radix;
+                rule2.exponent = rule1.exponent;
+
+                // rule2's rule text omits the stuff in brackets: initalize
+                // its rule text and substitutions accordingly
+                sbuf.append(description.substring(0, brack1));
+                if (brack2 + 1 < description.length()) {
+                    sbuf.append(description.substring(brack2 + 1));
+                }
+                rule2.ruleText = sbuf.toString();
+                rule2.extractSubstitutions(owner, predecessor, ownersOwner);
+            }
+
+            // rule1's text includes the text in the brackets but omits
+            // the brackets themselves: initialize _its_ rule text and
+            // substitutions accordingly
+            sbuf.setLength(0);
+            sbuf.append(description.substring(0, brack1));
+            sbuf.append(description.substring(brack1 + 1, brack2));
+            if (brack2 + 1 < description.length()) {
+                sbuf.append(description.substring(brack2 + 1));
+            }
+            rule1.ruleText = sbuf.toString();
+            rule1.extractSubstitutions(owner, predecessor, ownersOwner);
+
+            // if we only have one rule, return it; if we have two, return
+            // a two-element array containing them (notice that rule2 goes
+            // BEFORE rule1 in the list: in all cases, rule2 OMITS the
+            // material in the brackets and rule1 INCLUDES the material
+            // in the brackets)
+            if (rule2 == null) {
+                return rule1;
+            } else {
+                return new NFRule[] { rule2, rule1 };
+            }
+        }
+    }
+
+    /**
+     * Nominal constructor for NFRule.  Most of the work of constructing
+     * an NFRule is actually performed by makeRules().
+     */
+    public NFRule(RuleBasedNumberFormat formatter) {
+        this.formatter = formatter;
+    }
+
+    /**
+     * This function parses the rule's rule descriptor (i.e., the base
+     * value and/or other tokens that precede the rule's rule text
+     * in the description) and sets the rule's base value, radix, and
+     * exponent according to the descriptor.  (If the description doesn't
+     * include a rule descriptor, then this function sets everything to
+     * default values and the rule set sets the rule's real base value).
+     * @param description The rule's description
+     * @return If "description" included a rule descriptor, this is
+     * "description" with the descriptor and any trailing whitespace
+     * stripped off.  Otherwise; it's "descriptor" unchangd.
+     */
+    private String parseRuleDescriptor(String description) {
+        String descriptor;
+
+        // the description consists of a rule descriptor and a rule body,
+        // separated by a colon.  The rule descriptor is optional.  If
+        // it's omitted, just set the base value to 0.
+        int p = description.indexOf(":");
+        if (p == -1) {
+            setBaseValue(0);
+        } else {
+            // copy the descriptor out into its own string and strip it,
+            // along with any trailing whitespace, out of the original
+            // description
+            descriptor = description.substring(0, p);
+            ++p;
+            while (p < description.length() && UCharacterProperty.isRuleWhiteSpace(description.charAt(p)))
+                ++p;
+            description = description.substring(p);
+
+            // check first to see if the rule descriptor matches the token
+            // for one of the special rules.  If it does, set the base
+            // value to the correct identfier value
+            if (descriptor.equals("-x")) {
+                setBaseValue(NEGATIVE_NUMBER_RULE);
+            }
+            else if (descriptor.equals("x.x")) {
+                setBaseValue(IMPROPER_FRACTION_RULE);
+            }
+            else if (descriptor.equals("0.x")) {
+                setBaseValue(PROPER_FRACTION_RULE);
+            }
+            else if (descriptor.equals("x.0")) {
+                setBaseValue(MASTER_RULE);
+            }
+
+            // if the rule descriptor begins with a digit, it's a descriptor
+            // for a normal rule
+            else if (descriptor.charAt(0) >= '0' && descriptor.charAt(0) <= '9') {
+                StringBuffer tempValue = new StringBuffer();
+                p = 0;
+                char c = ' ';
+
+                // begin parsing the descriptor: copy digits
+                // into "tempValue", skip periods, commas, and spaces,
+                // stop on a slash or > sign (or at the end of the string),
+                // and throw an exception on any other character
+                while (p < descriptor.length()) {
+                    c = descriptor.charAt(p);
+                    if (c >= '0' && c <= '9') {
+                        tempValue.append(c);
+                    }
+                    else if (c == '/' || c == '>') {
+                        break;
+                    }
+                    else if (UCharacterProperty.isRuleWhiteSpace(c) || c == ',' || c == '.') {
+                    }
+                    else {
+                        throw new IllegalArgumentException("Illegal character in rule descriptor");
+                    }
+                    ++p;
+                }
+
+                // tempValue now contains a string representation of the
+                // rule's base value with the punctuation stripped out.
+                // Set the rule's base value accordingly
+                setBaseValue(Long.parseLong(tempValue.toString()));
+
+                // if we stopped the previous loop on a slash, we're
+                // now parsing the rule's radix.  Again, accumulate digits
+                // in tempValue, skip punctuation, stop on a > mark, and
+                // throw an exception on anything else
+                if (c == '/') {
+                    tempValue.setLength(0);
+                    ++p;
+                    while (p < descriptor.length()) {
+                        c = descriptor.charAt(p);
+                        if (c >= '0' && c <= '9') {
+                            tempValue.append(c);
+                        }
+                        else if (c == '>') {
+                            break;
+                        }
+                        else if (UCharacterProperty.isRuleWhiteSpace(c) || c == ',' || c == '.') {
+                        }
+                        else {
+                            throw new IllegalArgumentException("Illegal character is rule descriptor");
+                        }
+                        ++p;
+                    }
+
+                    // tempValue now contain's the rule's radix.  Set it
+                    // accordingly, and recalculate the rule's exponent
+                    radix = Integer.parseInt(tempValue.toString());
+                    if (radix == 0) {
+                        throw new IllegalArgumentException("Rule can't have radix of 0");
+                    }
+                    exponent = expectedExponent();
+                }
+
+                // if we stopped the previous loop on a > sign, then continue
+                // for as long as we still see > signs.  For each one,
+                // decrement the exponent (unless the exponent is already 0).
+                // If we see another character before reaching the end of
+                // the descriptor, that's also a syntax error.
+                if (c == '>') {
+                    while (p < descriptor.length()) {
+                        c = descriptor.charAt(p);
+                        if (c == '>' && exponent > 0) {
+                            --exponent;
+                        } else {
+                            throw new IllegalArgumentException("Illegal character in rule descriptor");
+                        }
+                        ++p;
+                    }
+                }
+            }
+        }
+
+        // finally, if the rule body begins with an apostrophe, strip it off
+        // (this is generally used to put whitespace at the beginning of
+        // a rule's rule text)
+        if (description.length() > 0 && description.charAt(0) == '\'') {
+            description = description.substring(1);
+        }
+
+        // return the description with all the stuff we've just waded through
+        // stripped off the front.  It now contains just the rule body.
+        return description;
+    }
+
+    /**
+     * Searches the rule's rule text for the substitution tokens,
+     * creates the substitutions, and removes the substitution tokens
+     * from the rule's rule text.
+     * @param owner The rule set containing this rule
+     * @param predecessor The rule preseding this one in "owners" rule list
+     * @param ownersOwner The RuleBasedFormat that owns this rule
+     */
+    private void extractSubstitutions(NFRuleSet             owner,
+                                      NFRule                predecessor,
+                                      RuleBasedNumberFormat ownersOwner) {
+        sub1 = extractSubstitution(owner, predecessor, ownersOwner);
+        sub2 = extractSubstitution(owner, predecessor, ownersOwner);
+    }
+
+    /**
+     * Searches the rule's rule text for the first substitution token,
+     * creates a substitution based on it, and removes the token from
+     * the rule's rule text.
+     * @param owner The rule set containing this rule
+     * @param predecessor The rule preceding this one in the rule set's
+     * rule list
+     * @param ownersOwner The RuleBasedNumberFormat that owns this rule
+     * @return The newly-created substitution.  This is never null; if
+     * the rule text doesn't contain any substitution tokens, this will
+     * be a NullSubstitution.
+     */
+    private NFSubstitution extractSubstitution(NFRuleSet             owner,
+                                               NFRule                predecessor,
+                                               RuleBasedNumberFormat ownersOwner) {
+        NFSubstitution result = null;
+        int subStart;
+        int subEnd;
+
+        // search the rule's rule text for the first two characters of
+        // a substitution token
+        subStart = indexOfAny(new String[] { "<<", "<%", "<#", "<0",
+                                             ">>", ">%", ">#", ">0",
+                                             "=%", "=#", "=0" } );
+
+        // if we didn't find one, create a null substitution positioned
+        // at the end of the rule text
+        if (subStart == -1) {
+            return NFSubstitution.makeSubstitution(ruleText.length(), this, predecessor,
+                                                   owner, ownersOwner, "");
+        }
+
+        // special-case the ">>>" token, since searching for the > at the
+        // end will actually find the > in the middle
+        if (ruleText.substring(subStart).startsWith(">>>")) {
+            subEnd = subStart + 2;
+
+            // otherwise the substitution token ends with the same character
+            // it began with
+        } else {
+            char c = ruleText.charAt(subStart);
+            subEnd = ruleText.indexOf(c, subStart + 1);
+            // special case for '<%foo<<'
+            if (c == '<' && subEnd != -1 && subEnd < ruleText.length() - 1 && ruleText.charAt(subEnd+1) == c) {
+                // ordinals use "=#,##0==%abbrev=" as their rule.  Notice that the '==' in the middle
+                // occurs because of the juxtaposition of two different rules.  The check for '<' is a hack
+                // to get around this.  Having the duplicate at the front would cause problems with
+                // rules like "<<%" to format, say, percents...
+                ++subEnd;
+            }
+        }
+
+        // if we don't find the end of the token (i.e., if we're on a single,
+        // unmatched token character), create a null substitution positioned
+        // at the end of the rule
+        if (subEnd == -1) {
+            return NFSubstitution.makeSubstitution(ruleText.length(), this, predecessor,
+                                                   owner, ownersOwner, "");
+        }
+
+        // if we get here, we have a real substitution token (or at least
+        // some text bounded by substitution token characters).  Use
+        // makeSubstitution() to create the right kind of substitution
+        result = NFSubstitution.makeSubstitution(subStart, this, predecessor, owner,
+                                                 ownersOwner, ruleText.substring(subStart, subEnd + 1));
+
+        // remove the substitution from the rule text
+        ruleText = ruleText.substring(0, subStart) + ruleText.substring(subEnd + 1);
+        return result;
+    }
+
+    /**
+     * Sets the rule's base value, and causes the radix and exponent
+     * to be recalculated.  This is used during construction when we
+     * don't know the rule's base value until after it's been
+     * constructed.  It should not be used at any other time.
+     * @param newBaseValue The new base value for the rule.
+     */
+    public final void setBaseValue(long newBaseValue) {
+        // set the base value
+        baseValue = newBaseValue;
+
+        // if this isn't a special rule, recalculate the radix and exponent
+        // (the radix always defaults to 10; if it's supposed to be something
+        // else, it's cleaned up by the caller and the exponent is
+        // recalculated again-- the only function that does this is
+        // NFRule.parseRuleDescriptor() )
+        if (baseValue >= 1) {
+            radix = 10;
+            exponent = expectedExponent();
+
+            // this function gets called on a fully-constructed rule whose
+            // description didn't specify a base value.  This means it
+            // has substitutions, and some substitutions hold on to copies
+            // of the rule's divisor.  Fix their copies of the divisor.
+            if (sub1 != null) {
+                sub1.setDivisor(radix, exponent);
+            }
+            if (sub2 != null) {
+                sub2.setDivisor(radix, exponent);
+            }
+
+            // if this is a special rule, its radix and exponent are basically
+            // ignored.  Set them to "safe" default values
+        } else {
+            radix = 10;
+            exponent = 0;
+        }
+    }
+
+    /**
+     * This calculates the rule's exponent based on its radix and base
+     * value.  This will be the highest power the radix can be raised to
+     * and still produce a result less than or equal to the base value.
+     */
+    private short expectedExponent() {
+        // since the log of 0, or the log base 0 of something, causes an
+        // error, declare the exponent in these cases to be 0 (we also
+        // deal with the special-rule identifiers here)
+        if (radix == 0 || baseValue < 1) {
+            return 0;
+        }
+
+        // we get rounding error in some cases-- for example, log 1000 / log 10
+        // gives us 1.9999999996 instead of 2.  The extra logic here is to take
+        // that into account
+        short tempResult = (short)(Math.log(baseValue) / Math.log(radix));
+        if (Math.pow(radix, tempResult + 1) <= baseValue) {
+            return (short)(tempResult + 1);
+        } else {
+            return tempResult;
+        }
+    }
+
+    /**
+     * Searches the rule's rule text for any of the specified strings.
+     * @param strings An array of strings to search the rule's rule
+     * text for
+     * @return The index of the first match in the rule's rule text
+     * (i.e., the first substring in the rule's rule text that matches
+     * _any_ of the strings in "strings").  If none of the strings in
+     * "strings" is found in the rule's rule text, returns -1.
+     */
+    private int indexOfAny(String[] strings) {
+        int pos;
+        int result = -1;
+        for (int i = 0; i < strings.length; i++) {
+            pos = ruleText.indexOf(strings[i]);
+            if (pos != -1 && (result == -1 || pos < result)) {
+                result = pos;
+            }
+        }
+        return result;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Tests two rules for equality.
+     * @param that The rule to compare this one against
+     * @return True if the two rules are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (that instanceof NFRule) {
+            NFRule that2 = (NFRule)that;
+
+            return baseValue == that2.baseValue
+                && radix == that2.radix
+                && exponent == that2.exponent
+                && ruleText.equals(that2.ruleText)
+                && sub1.equals(that2.sub1)
+                && sub2.equals(that2.sub2);
+        }
+        return false;
+    }
+
+    /**
+     * Returns a textual representation of the rule.  This won't
+     * necessarily be the same as the description that this rule
+     * was created with, but it will produce the same result.
+     * @return A textual description of the rule
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // start with the rule descriptor.  Special-case the special rules
+        if (baseValue == NEGATIVE_NUMBER_RULE) {
+            result.append("-x: ");
+        }
+        else if (baseValue == IMPROPER_FRACTION_RULE) {
+            result.append("x.x: ");
+        }
+        else if (baseValue == PROPER_FRACTION_RULE) {
+            result.append("0.x: ");
+        }
+        else if (baseValue == MASTER_RULE) {
+            result.append("x.0: ");
+        }
+
+        // for a normal rule, write out its base value, and if the radix is
+        // something other than 10, write out the radix (with the preceding
+        // slash, of course).  Then calculate the expected exponent and if
+        // if isn't the same as the actual exponent, write an appropriate
+        // number of > signs.  Finally, terminate the whole thing with
+        // a colon.
+        else {
+            result.append(String.valueOf(baseValue));
+            if (radix != 10) {
+                result.append('/');
+                result.append(String.valueOf(radix));
+            }
+            int numCarets = expectedExponent() - exponent;
+            for (int i = 0; i < numCarets; i++)
+                result.append('>');
+            result.append(": ");
+        }
+
+        // if the rule text begins with a space, write an apostrophe
+        // (whitespace after the rule descriptor is ignored; the
+        // apostrophe is used to make the whitespace significant)
+        if (ruleText.startsWith(" ") && (sub1 == null || sub1.getPos() != 0)) {
+            result.append("\'");
+        }
+
+        // now, write the rule's rule text, inserting appropriate
+        // substitution tokens in the appropriate places
+        StringBuffer ruleTextCopy = new StringBuffer(ruleText);
+        ruleTextCopy.insert(sub2.getPos(), sub2.toString());
+        ruleTextCopy.insert(sub1.getPos(), sub1.toString());
+        result.append(ruleTextCopy.toString());
+
+        // and finally, top the whole thing off with a semicolon and
+        // return the result
+        result.append(';');
+        return result.toString();
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the rule's base value
+     * @return The rule's base value
+     */
+    public final long getBaseValue() {
+        return baseValue;
+    }
+
+    /**
+     * Returns the rule's divisor (the value that cotrols the behavior
+     * of its substitutions)
+     * @return The rule's divisor
+     */
+    public double getDivisor() {
+        return Math.pow(radix, exponent);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Formats the number, and inserts the resulting text into
+     * toInsertInto.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the resultant text should
+     * be inserted
+     * @param pos The position in toInsertInto where the resultant text
+     * should be inserted
+     */
+    public void doFormat(long number, StringBuffer toInsertInto, int pos) {
+        // first, insert the rule's rule text into toInsertInto at the
+        // specified position, then insert the results of the substitutions
+        // into the right places in toInsertInto (notice we do the
+        // substitutions in reverse order so that the offsets don't get
+        // messed up)
+        toInsertInto.insert(pos, ruleText);
+        sub2.doSubstitution(number, toInsertInto, pos);
+        sub1.doSubstitution(number, toInsertInto, pos);
+    }
+
+    /**
+     * Formats the number, and inserts the resulting text into
+     * toInsertInto.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the resultant text should
+     * be inserted
+     * @param pos The position in toInsertInto where the resultant text
+     * should be inserted
+     */
+    public void doFormat(double number, StringBuffer toInsertInto, int pos) {
+        // first, insert the rule's rule text into toInsertInto at the
+        // specified position, then insert the results of the substitutions
+        // into the right places in toInsertInto
+        // [again, we have two copies of this routine that do the same thing
+        // so that we don't sacrifice precision in a long by casting it
+        // to a double]
+        toInsertInto.insert(pos, ruleText);
+        sub2.doSubstitution(number, toInsertInto, pos);
+        sub1.doSubstitution(number, toInsertInto, pos);
+    }
+
+    /**
+     * Used by the owning rule set to determine whether to invoke the
+     * rollback rule (i.e., whether this rule or the one that precedes
+     * it in the rule set's list should be used to format the number)
+     * @param number The number being formatted
+     * @return True if the rule set should use the rule that precedes
+     * this one in its list; false if it should use this rule
+     */
+    public boolean shouldRollBack(double number) {
+        // we roll back if the rule contains a modulus substitution,
+        // the number being formatted is an even multiple of the rule's
+        // divisor, and the rule's base value is NOT an even multiple
+        // of its divisor
+        // In other words, if the original description had
+        //    100: << hundred[ >>];
+        // that expands into
+        //    100: << hundred;
+        //    101: << hundred >>;
+        // internally.  But when we're formatting 200, if we use the rule
+        // at 101, which would normally apply, we get "two hundred zero".
+        // To prevent this, we roll back and use the rule at 100 instead.
+        // This is the logic that makes this happen: the rule at 101 has
+        // a modulus substitution, its base value isn't an even multiple
+        // of 100, and the value we're trying to format _is_ an even
+        // multiple of 100.  This is called the "rollback rule."
+        if ((sub1.isModulusSubstitution()) || (sub2.isModulusSubstitution())) {
+            return (number % Math.pow(radix, exponent)) == 0
+                && (baseValue % Math.pow(radix, exponent)) != 0;
+        }
+        return false;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Attempts to parse the string with this rule.
+     * @param text The string being parsed
+     * @param parsePosition On entry, the value is ignored and assumed to
+     * be 0. On exit, this has been updated with the position of the first
+     * character not consumed by matching the text against this rule
+     * (if this rule doesn't match the text at all, the parse position
+     * if left unchanged (presumably at 0) and the function returns
+     * new Long(0)).
+     * @param isFractionRule True if this rule is contained within a
+     * fraction rule set.  This is only used if the rule has no
+     * substitutions.
+     * @return If this rule matched the text, this is the rule's base value
+     * combined appropriately with the results of parsing the substitutions.
+     * If nothing matched, this is new Long(0) and the parse position is
+     * left unchanged.  The result will be an instance of Long if the
+     * result is an integer and Double otherwise.  The result is never null.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, boolean isFractionRule,
+                          double upperBound) {
+
+        // internally we operate on a copy of the string being parsed
+        // (because we're going to change it) and use our own ParsePosition
+        ParsePosition pp = new ParsePosition(0);
+        String workText = new String(text);
+
+        // check to see whether the text before the first substitution
+        // matches the text at the beginning of the string being
+        // parsed.  If it does, strip that off the front of workText;
+        // otherwise, dump out with a mismatch
+        workText = stripPrefix(workText, ruleText.substring(0, sub1.getPos()), pp);
+        int prefixLength = text.length() - workText.length();
+
+        if (pp.getIndex() == 0 && sub1.getPos() != 0) {
+            // commented out because ParsePosition doesn't have error index in 1.1.x
+            //                parsePosition.setErrorIndex(pp.getErrorIndex());
+            return new Long(0);
+        }
+
+        // this is the fun part.  The basic guts of the rule-matching
+        // logic is matchToDelimiter(), which is called twice.  The first
+        // time it searches the input string for the rule text BETWEEN
+        // the substitutions and tries to match the intervening text
+        // in the input string with the first substitution.  If that
+        // succeeds, it then calls it again, this time to look for the
+        // rule text after the second substitution and to match the
+        // intervening input text against the second substitution.
+        //
+        // For example, say we have a rule that looks like this:
+        //    first << middle >> last;
+        // and input text that looks like this:
+        //    first one middle two last
+        // First we use stripPrefix() to match "first " in both places and
+        // strip it off the front, leaving
+        //    one middle two last
+        // Then we use matchToDelimiter() to match " middle " and try to
+        // match "one" against a substitution.  If it's successful, we now
+        // have
+        //    two last
+        // We use matchToDelimiter() a second time to match " last" and
+        // try to match "two" against a substitution.  If "two" matches
+        // the substitution, we have a successful parse.
+        //
+        // Since it's possible in many cases to find multiple instances
+        // of each of these pieces of rule text in the input string,
+        // we need to try all the possible combinations of these
+        // locations.  This prevents us from prematurely declaring a mismatch,
+        // and makes sure we match as much input text as we can.
+        int highWaterMark = 0;
+        double result = 0;
+        int start = 0;
+        double tempBaseValue = Math.max(0, baseValue);
+
+        do {
+            // our partial parse result starts out as this rule's base
+            // value.  If it finds a successful match, matchToDelimiter()
+            // will compose this in some way with what it gets back from
+            // the substitution, giving us a new partial parse result
+            pp.setIndex(0);
+            double partialResult = matchToDelimiter(workText, start, tempBaseValue,
+                                                    ruleText.substring(sub1.getPos(), sub2.getPos()), pp, sub1,
+                                                    upperBound).doubleValue();
+
+            // if we got a successful match (or were trying to match a
+            // null substitution), pp is now pointing at the first unmatched
+            // character.  Take note of that, and try matchToDelimiter()
+            // on the input text again
+            if (pp.getIndex() != 0 || sub1.isNullSubstitution()) {
+                start = pp.getIndex();
+
+                String workText2 = workText.substring(pp.getIndex());
+                ParsePosition pp2 = new ParsePosition(0);
+
+                // the second matchToDelimiter() will compose our previous
+                // partial result with whatever it gets back from its
+                // substitution if there's a successful match, giving us
+                // a real result
+                partialResult = matchToDelimiter(workText2, 0, partialResult,
+                                                 ruleText.substring(sub2.getPos()), pp2, sub2,
+                                                 upperBound).doubleValue();
+
+                // if we got a successful match on this second
+                // matchToDelimiter() call, update the high-water mark
+                // and result (if necessary)
+                if (pp2.getIndex() != 0 || sub2.isNullSubstitution()) {
+                    if (prefixLength + pp.getIndex() + pp2.getIndex() > highWaterMark) {
+                        highWaterMark = prefixLength + pp.getIndex() + pp2.getIndex();
+                        result = partialResult;
+                    }
+                }
+                // commented out because ParsePosition doesn't have error index in 1.1.x
+                //                    else {
+                //                        int temp = pp2.getErrorIndex() + sub1.getPos() + pp.getIndex();
+                //                        if (temp> parsePosition.getErrorIndex()) {
+                //                            parsePosition.setErrorIndex(temp);
+                //                        }
+                //                    }
+            }
+            // commented out because ParsePosition doesn't have error index in 1.1.x
+            //                else {
+            //                    int temp = sub1.getPos() + pp.getErrorIndex();
+            //                    if (temp > parsePosition.getErrorIndex()) {
+            //                        parsePosition.setErrorIndex(temp);
+            //                    }
+            //                }
+            // keep trying to match things until the outer matchToDelimiter()
+            // call fails to make a match (each time, it picks up where it
+            // left off the previous time)
+        } while (sub1.getPos() != sub2.getPos() && pp.getIndex() > 0 && pp.getIndex()
+                 < workText.length() && pp.getIndex() != start);
+
+        // update the caller's ParsePosition with our high-water mark
+        // (i.e., it now points at the first character this function
+        // didn't match-- the ParsePosition is therefore unchanged if
+        // we didn't match anything)
+        parsePosition.setIndex(highWaterMark);
+        // commented out because ParsePosition doesn't have error index in 1.1.x
+        //        if (highWaterMark > 0) {
+        //            parsePosition.setErrorIndex(0);
+        //        }
+
+        // this is a hack for one unusual condition: Normally, whether this
+        // rule belong to a fraction rule set or not is handled by its
+        // substitutions.  But if that rule HAS NO substitutions, then
+        // we have to account for it here.  By definition, if the matching
+        // rule in a fraction rule set has no substitutions, its numerator
+        // is 1, and so the result is the reciprocal of its base value.
+        if (isFractionRule && highWaterMark > 0 && sub1.isNullSubstitution()) {
+            result = 1 / result;
+        }
+
+        // return the result as a Long if possible, or as a Double
+        if (result == (long)result) {
+            return new Long((long)result);
+        } else {
+            return new Double(result);
+        }
+    }
+
+    /**
+     * This function is used by parse() to match the text being parsed
+     * against a possible prefix string.  This function
+     * matches characters from the beginning of the string being parsed
+     * to characters from the prospective prefix.  If they match, pp is
+     * updated to the first character not matched, and the result is
+     * the unparsed part of the string.  If they don't match, the whole
+     * string is returned, and pp is left unchanged.
+     * @param text The string being parsed
+     * @param prefix The text to match against
+     * @param pp On entry, ignored and assumed to be 0.  On exit, points
+     * to the first unmatched character (assuming the whole prefix matched),
+     * or is unchanged (if the whole prefix didn't match).
+     * @return If things match, this is the unparsed part of "text";
+     * if they didn't match, this is "text".
+     */
+    private String stripPrefix(String text, String prefix, ParsePosition pp) {
+        // if the prefix text is empty, dump out without doing anything
+        if (prefix.length() == 0) {
+            return text;
+        } else {
+            // otherwise, use prefixLength() to match the beginning of
+            // "text" against "prefix".  This function returns the
+            // number of characters from "text" that matched (or 0 if
+            // we didn't match the whole prefix)
+            int pfl = prefixLength(text, prefix);
+            if (pfl != 0) {
+                // if we got a successful match, update the parse position
+                // and strip the prefix off of "text"
+                pp.setIndex(pp.getIndex() + pfl);
+                return text.substring(pfl);
+
+                // if we didn't get a successful match, leave everything alone
+            } else {
+                return text;
+            }
+        }
+    }
+
+    /**
+     * Used by parse() to match a substitution and any following text.
+     * "text" is searched for instances of "delimiter".  For each instance
+     * of delimiter, the intervening text is tested to see whether it
+     * matches the substitution.  The longest match wins.
+     * @param text The string being parsed
+     * @param startPos The position in "text" where we should start looking
+     * for "delimiter".
+     * @param baseVal A partial parse result (often the rule's base value),
+     * which is combined with the result from matching the substitution
+     * @param delimiter The string to search "text" for.
+     * @param pp Ignored and presumed to be 0 on entry.  If there's a match,
+     * on exit this will point to the first unmatched character.
+     * @param sub If we find "delimiter" in "text", this substitution is used
+     * to match the text between the beginning of the string and the
+     * position of "delimiter."  (If "delimiter" is the empty string, then
+     * this function just matches against this substitution and updates
+     * everything accordingly.)
+     * @param upperBound When matching the substitution, it will only
+     * consider rules with base values lower than this value.
+     * @return If there's a match, this is the result of composing
+     * baseValue with the result of matching the substitution.  Otherwise,
+     * this is new Long(0).  It's never null.  If the result is an integer,
+     * this will be an instance of Long; otherwise, it's an instance of
+     * Double.
+     */
+    private Number matchToDelimiter(String text, int startPos, double baseVal,
+                                    String delimiter, ParsePosition pp, NFSubstitution sub, double upperBound) {
+        // if "delimiter" contains real (i.e., non-ignorable) text, search
+        // it for "delimiter" beginning at "start".  If that succeeds, then
+        // use "sub"'s doParse() method to match the text before the
+        // instance of "delimiter" we just found.
+        if (!allIgnorable(delimiter)) {
+            ParsePosition tempPP = new ParsePosition(0);
+            Number tempResult;
+
+            // use findText() to search for "delimiter".  It returns a two-
+            // element array: element 0 is the position of the match, and
+            // element 1 is the number of characters that matched
+            // "delimiter".
+            int[] temp = findText(text, delimiter, startPos);
+            int dPos = temp[0];
+            int dLen = temp[1];
+
+            // if findText() succeeded, isolate the text preceding the
+            // match, and use "sub" to match that text
+            while (dPos >= 0) {
+                String subText = text.substring(0, dPos);
+                if (subText.length() > 0) {
+                    tempResult = sub.doParse(subText, tempPP, baseVal, upperBound,
+                                             formatter.lenientParseEnabled());
+
+                    // if the substitution could match all the text up to
+                    // where we found "delimiter", then this function has
+                    // a successful match.  Bump the caller's parse position
+                    // to point to the first character after the text
+                    // that matches "delimiter", and return the result
+                    // we got from parsing the substitution.
+                    if (tempPP.getIndex() == dPos) {
+                        pp.setIndex(dPos + dLen);
+                        return tempResult;
+                    }
+                    // commented out because ParsePosition doesn't have error index in 1.1.x
+                    //                    else {
+                    //                        if (tempPP.getErrorIndex() > 0) {
+                    //                            pp.setErrorIndex(tempPP.getErrorIndex());
+                    //                        } else {
+                    //                            pp.setErrorIndex(tempPP.getIndex());
+                    //                        }
+                    //                    }
+                }
+
+                // if we didn't match the substitution, search for another
+                // copy of "delimiter" in "text" and repeat the loop if
+                // we find it
+                tempPP.setIndex(0);
+                temp = findText(text, delimiter, dPos + dLen);
+                dPos = temp[0];
+                dLen = temp[1];
+            }
+            // if we make it here, this was an unsuccessful match, and we
+            // leave pp unchanged and return 0
+            pp.setIndex(0);
+            return new Long(0);
+
+            // if "delimiter" is empty, or consists only of ignorable characters
+            // (i.e., is semantically empty), thwe we obviously can't search
+            // for "delimiter".  Instead, just use "sub" to parse as much of
+            // "text" as possible.
+        } else {
+            ParsePosition tempPP = new ParsePosition(0);
+            Number result = new Long(0);
+            Number tempResult;
+
+            // try to match the whole string against the substitution
+            tempResult = sub.doParse(text, tempPP, baseVal, upperBound,
+                                     formatter.lenientParseEnabled());
+            if (tempPP.getIndex() != 0 || sub.isNullSubstitution()) {
+                // if there's a successful match (or it's a null
+                // substitution), update pp to point to the first
+                // character we didn't match, and pass the result from
+                // sub.doParse() on through to the caller
+                pp.setIndex(tempPP.getIndex());
+                if (tempResult != null) {
+                    result = tempResult;
+                }
+            }
+            // commented out because ParsePosition doesn't have error index in 1.1.x
+            //            else {
+            //                pp.setErrorIndex(tempPP.getErrorIndex());
+            //            }
+
+            // and if we get to here, then nothing matched, so we return
+            // 0 and leave pp alone
+            return result;
+        }
+    }
+
+    /**
+     * Used by stripPrefix() to match characters.  If lenient parse mode
+     * is off, this just calls startsWith().  If lenient parse mode is on,
+     * this function uses CollationElementIterators to match characters in
+     * the strings (only primary-order differences are significant in
+     * determining whether there's a match).
+     * @param str The string being tested
+     * @param prefix The text we're hoping to see at the beginning
+     * of "str"
+     * @return If "prefix" is found at the beginning of "str", this
+     * is the number of characters in "str" that were matched (this
+     * isn't necessarily the same as the length of "prefix" when matching
+     * text with a collator).  If there's no match, this is 0.
+     */
+    private int prefixLength(String str, String prefix) {
+        // if we're looking for an empty prefix, it obviously matches
+        // zero characters.  Just go ahead and return 0.
+        if (prefix.length() == 0) {
+            return 0;
+        }
+
+        // go through all this grief if we're in lenient-parse mode
+        if (formatter.lenientParseEnabled()) {
+            // get the formatter's collator and use it to create two
+            // collation element iterators, one over the target string
+            // and another over the prefix (right now, we'll throw an
+            // exception if the collator we get back from the formatter
+            // isn't a RuleBasedCollator, because RuleBasedCollator defines
+            // the CollationElementIteratoer protocol.  Hopefully, this
+            // will change someday.)
+            //
+            // Previous code was matching "fifty-" against " fifty" and leaving
+            // the number " fifty-7" to parse as 43 (50 - 7).
+            // Also it seems that if we consume the entire prefix, that's ok even
+            // if we've consumed the entire string, so I switched the logic to
+            // reflect this.
+            RuleBasedCollator collator = (RuleBasedCollator)formatter.getCollator();
+            CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            CollationElementIterator prefixIter = collator.getCollationElementIterator(prefix);
+
+            // match collation elements between the strings
+            int oStr = strIter.next();
+            int oPrefix = prefixIter.next();
+
+            while (oPrefix != CollationElementIterator.NULLORDER) {
+                // skip over ignorable characters in the target string
+                while (CollationElementIterator.primaryOrder(oStr) == 0 && oStr !=
+                       CollationElementIterator.NULLORDER) {
+                    oStr = strIter.next();
+                }
+
+                // skip over ignorable characters in the prefix
+                while (CollationElementIterator.primaryOrder(oPrefix) == 0 && oPrefix !=
+                       CollationElementIterator.NULLORDER) {
+                    oPrefix = prefixIter.next();
+                }
+
+                // if skipping over ignorables brought to the end of
+                // the prefix, we DID match: drop out of the loop
+                if (oPrefix == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+
+                // if skipping over ignorables brought us to the end
+                // of the target string, we didn't match and return 0
+                if (oStr == CollationElementIterator.NULLORDER) {
+                    return 0;
+                }
+
+                // match collation elements from the two strings
+                // (considering only primary differences).  If we
+                // get a mismatch, dump out and return 0
+                if (CollationElementIterator.primaryOrder(oStr) != CollationElementIterator.
+                    primaryOrder(oPrefix)) {
+                    return 0;
+                }
+                // otherwise, advance to the next character in each string
+                // and loop (we drop out of the loop when we exhaust
+                // collation elements in the prefix)
+
+                oStr = strIter.next();
+                oPrefix = prefixIter.next();
+            }
+
+            // we are not compatible with jdk 1.1 any longer
+            int result = strIter.getOffset();
+            if (oStr != CollationElementIterator.NULLORDER) {
+                --result;
+            }
+            return result;
+
+            /*
+              //----------------------------------------------------------------
+              // JDK 1.2-specific API call
+              // return strIter.getOffset();
+              //----------------------------------------------------------------
+              // JDK 1.1 HACK (take out for 1.2-specific code)
+
+              // if we make it to here, we have a successful match.  Now we
+              // have to find out HOW MANY characters from the target string
+              // matched the prefix (there isn't necessarily a one-to-one
+              // mapping between collation elements and characters).
+              // In JDK 1.2, there's a simple getOffset() call we can use.
+              // In JDK 1.1, on the other hand, we have to go through some
+              // ugly contortions.  First, use the collator to compare the
+              // same number of characters from the prefix and target string.
+              // If they're equal, we're done.
+              collator.setStrength(Collator.PRIMARY);
+              if (str.length() >= prefix.length()
+              && collator.equals(str.substring(0, prefix.length()), prefix)) {
+              return prefix.length();
+              }
+
+              // if they're not equal, then we have to compare successively
+              // larger and larger substrings of the target string until we
+              // get to one that matches the prefix.  At that point, we know
+              // how many characters matched the prefix, and we can return.
+              int p = 1;
+              while (p <= str.length()) {
+              if (collator.equals(str.substring(0, p), prefix)) {
+              return p;
+              } else {
+              ++p;
+              }
+              }
+
+              // SHOULKD NEVER GET HERE!!!
+              return 0;
+              //----------------------------------------------------------------
+            */
+
+            // If lenient parsing is turned off, forget all that crap above.
+            // Just use String.startsWith() and be done with it.
+        } else {
+            if (str.startsWith(prefix)) {
+                return prefix.length();
+            } else {
+                return 0;
+            }
+        }
+    }
+
+    /*
+     * Searches a string for another string.  If lenient parsing is off,
+     * this just calls indexOf().  If lenient parsing is on, this function
+     * uses CollationElementIterator to match characters, and only
+     * primary-order differences are significant in determining whether
+     * there's a match.
+     * @param str The string to search
+     * @param key The string to search "str" for
+     * @return A two-element array of ints.  Element 0 is the position
+     * of the match, or -1 if there was no match.  Element 1 is the
+     * number of characters in "str" that matched (which isn't necessarily
+     * the same as the length of "key")
+     */
+/*    private int[] findText(String str, String key) {
+        return findText(str, key, 0);
+    }*/
+
+    /**
+     * Searches a string for another string.  If lenient parsing is off,
+     * this just calls indexOf().  If lenient parsing is on, this function
+     * uses CollationElementIterator to match characters, and only
+     * primary-order differences are significant in determining whether
+     * there's a match.
+     * @param str The string to search
+     * @param key The string to search "str" for
+     * @param startingAt The index into "str" where the search is to
+     * begin
+     * @return A two-element array of ints.  Element 0 is the position
+     * of the match, or -1 if there was no match.  Element 1 is the
+     * number of characters in "str" that matched (which isn't necessarily
+     * the same as the length of "key")
+     */
+    private int[] findText(String str, String key, int startingAt) {
+        // if lenient parsing is turned off, this is easy: just call
+        // String.indexOf() and we're done
+        if (!formatter.lenientParseEnabled()) {
+            return new int[] { str.indexOf(key, startingAt), key.length() };
+
+            // but if lenient parsing is turned ON, we've got some work
+            // ahead of us
+        } else {
+            //----------------------------------------------------------------
+            // JDK 1.1 HACK (take out of 1.2-specific code)
+
+            // in JDK 1.2, CollationElementIterator provides us with an
+            // API to map between character offsets and collation elements
+            // and we can do this by marching through the string comparing
+            // collation elements.  We can't do that in JDK 1.1.  Insted,
+            // we have to go through this horrible slow mess:
+            int p = startingAt;
+            int keyLen = 0;
+
+            // basically just isolate smaller and smaller substrings of
+            // the target string (each running to the end of the string,
+            // and with the first one running from startingAt to the end)
+            // and then use prefixLength() to see if the search key is at
+            // the beginning of each substring.  This is excruciatingly
+            // slow, but it will locate the key and tell use how long the
+            // matching text was.
+            while (p < str.length() && keyLen == 0) {
+                keyLen = prefixLength(str.substring(p), key);
+                if (keyLen != 0) {
+                    return new int[] { p, keyLen };
+                }
+                ++p;
+            }
+            // if we make it to here, we didn't find it.  Return -1 for the
+            // location.  The length should be ignored, but set it to 0,
+            // which should be "safe"
+            return new int[] { -1, 0 };
+
+            //----------------------------------------------------------------
+            // JDK 1.2 version of this routine
+            //RuleBasedCollator collator = (RuleBasedCollator)formatter.getCollator();
+            //
+            //CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            //CollationElementIterator keyIter = collator.getCollationElementIterator(key);
+            //
+            //int keyStart = -1;
+            //
+            //str.setOffset(startingAt);
+            //
+            //int oStr = strIter.next();
+            //int oKey = keyIter.next();
+            //while (oKey != CollationElementIterator.NULLORDER) {
+            //    while (oStr != CollationElementIterator.NULLORDER &&
+            //                CollationElementIterator.primaryOrder(oStr) == 0)
+            //        oStr = strIter.next();
+            //
+            //    while (oKey != CollationElementIterator.NULLORDER &&
+            //                CollationElementIterator.primaryOrder(oKey) == 0)
+            //        oKey = keyIter.next();
+            //
+            //    if (oStr == CollationElementIterator.NULLORDER) {
+            //        return new int[] { -1, 0 };
+            //    }
+            //
+            //    if (oKey == CollationElementIterator.NULLORDER) {
+            //        break;
+            //    }
+            //
+            //    if (CollationElementIterator.primaryOrder(oStr) ==
+            //            CollationElementIterator.primaryOrder(oKey)) {
+            //        keyStart = strIter.getOffset();
+            //        oStr = strIter.next();
+            //        oKey = keyIter.next();
+            //    } else {
+            //        if (keyStart != -1) {
+            //            keyStart = -1;
+            //            keyIter.reset();
+            //        } else {
+            //            oStr = strIter.next();
+            //        }
+            //    }
+            //}
+            //
+            //if (oKey == CollationElementIterator.NULLORDER) {
+            //    return new int[] { keyStart, strIter.getOffset() - keyStart };
+            //} else {
+            //    return new int[] { -1, 0 };
+            //}
+        }
+    }
+
+    /**
+     * Checks to see whether a string consists entirely of ignorable
+     * characters.
+     * @param str The string to test.
+     * @return true if the string is empty of consists entirely of
+     * characters that the number formatter's collator says are
+     * ignorable at the primary-order level.  false otherwise.
+     */
+    private boolean allIgnorable(String str) {
+        // if the string is empty, we can just return true
+        if (str.length() == 0) {
+            return true;
+        }
+
+        // if lenient parsing is turned on, walk through the string with
+        // a collation element iterator and make sure each collation
+        // element is 0 (ignorable) at the primary level
+        if (formatter.lenientParseEnabled()) {
+            RuleBasedCollator collator = (RuleBasedCollator)(formatter.getCollator());
+            CollationElementIterator iter = collator.getCollationElementIterator(str);
+
+            int o = iter.next();
+            while (o != CollationElementIterator.NULLORDER
+                   && CollationElementIterator.primaryOrder(o) == 0) {
+                o = iter.next();
+            }
+            return o == CollationElementIterator.NULLORDER;
+            // if lenient parsing is turned off, there is no such thing as
+            // an ignorable character: return true only if the string is empty
+        } else {
+            return false;
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/NFRuleSet.java b/src/com/ibm/icu/text/NFRuleSet.java
new file mode 100644
index 0000000..068552a
--- /dev/null
+++ b/src/com/ibm/icu/text/NFRuleSet.java
@@ -0,0 +1,778 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+
+import java.text.*;
+import java.util.Vector;
+
+/**
+ * A collection of rules used by a RuleBasedNumberFormat to format and
+ * parse numbers.  It is the responsibility of a RuleSet to select an
+ * appropriate rule for formatting a particular number and dispatch
+ * control to it, and to arbitrate between different rules when parsing
+ * a number.
+ */
+
+final class NFRuleSet {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The rule set's name
+     */
+    private String name;
+
+    /**
+     * The rule set's regular rules
+     */
+    private NFRule[] rules;
+
+    /**
+     * The rule set's negative-number rule
+     */
+    private NFRule negativeNumberRule = null;
+
+    /**
+     * The rule set's fraction rules: element 0 is the proper fraction
+     * (0.x) rule, element 1 is the improper fraction (x.x) rule, and
+     * element 2 is the master (x.0) rule.
+     */
+    private NFRule[] fractionRules = new NFRule[3];
+
+    /**
+     * True if the rule set is a fraction rule set.  A fraction rule set
+     * is a rule set that is used to format the fractional part of a
+     * number.  It is called from a >> substitution in another rule set's
+     * fraction rule, and is only called upon to format values between
+     * 0 and 1.  A fraction rule set has different rule-selection
+     * behavior than a regular rule set.
+     */
+    private boolean isFractionRuleSet = false;
+    
+    /**
+     * Used to limit recursion for bad rule sets.
+     */
+    private int recursionCount = 0;
+
+    /**
+      * Limit of recursion.
+      */
+    private static final int RECURSION_LIMIT = 50;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /*
+     * Constructs a rule set.
+     * @param descriptions An array of Strings representing rule set
+     * descriptions.  On exit, this rule set's entry in the array will
+     * have been stripped of its rule set name and any trailing whitespace.
+     * @param index The index into "descriptions" of the description
+     * for the rule to be constructed
+     */
+    public NFRuleSet(String[] descriptions, int index) throws IllegalArgumentException {
+        String description = descriptions[index];
+
+    if (description.length() == 0) {
+      throw new IllegalArgumentException("Empty rule set description");
+    }
+
+        // if the description begins with a rule set name (the rule set
+        // name can be omitted in formatter descriptions that consist
+        // of only one rule set), copy it out into our "name" member
+        // and delete it from the description
+        if (description.charAt(0) == '%') {
+            int pos = description.indexOf(':');
+            if (pos == -1) {
+                throw new IllegalArgumentException("Rule set name doesn't end in colon");
+            } else {
+                name = description.substring(0, pos);
+                while (pos < description.length() && UCharacterProperty.isRuleWhiteSpace(description.
+                                charAt(++pos))) {
+                }
+                description = description.substring(pos);
+                descriptions[index] = description;
+            }
+
+        // if the description doesn't begin with a rule set name, its
+        // name is "%default"
+        } else {
+            name = "%default";
+        }
+
+        if (description.length() == 0) {
+            throw new IllegalArgumentException("Empty rule set description");
+        }
+
+        // all of the other members of NFRuleSet are initialized
+        // by parseRules()
+    }
+
+    /**
+     * Construct the subordinate data structures used by this object.
+     * This function is called by the RuleBasedNumberFormat constructor
+     * after all the rule sets have been created to actually parse
+     * the description and build rules from it.  Since any rule set
+     * can refer to any other rule set, we have to have created all of
+     * them before we can create anything else.
+     * @param description The textual description of this rule set
+     * @param owner The formatter that owns this rule set
+     */
+    public void parseRules(String                description,
+                           RuleBasedNumberFormat owner) {
+        // start by creating a Vector whose elements are Strings containing
+        // the descriptions of the rules (one rule per element).  The rules
+        // are separated by semicolons (there's no escape facility: ALL
+        // semicolons are rule delimiters)
+        Vector ruleDescriptions = new Vector();
+
+        int oldP = 0;
+        int p = description.indexOf(';');
+        while (oldP != -1) {
+            if (p != -1) {
+                ruleDescriptions.addElement(description.substring(oldP, p));
+                oldP = p + 1;
+            } else {
+                if (oldP < description.length()) {
+                    ruleDescriptions.addElement(description.substring(oldP));
+                }
+                oldP = p;
+            }
+            p = description.indexOf(';', p + 1);
+        }
+
+        // now go back through and build a vector of the rules themselves
+        // (the number of elements in the description list isn't necessarily
+        // the number of rules-- some descriptions may expend into two rules)
+        Vector tempRules = new Vector();
+
+        // we keep track of the rule before the one we're currently working
+        // on solely to support >>> substitutions
+        NFRule predecessor = null;
+        for (int i = 0; i < ruleDescriptions.size(); i++) {
+            // makeRules (a factory method on NFRule) will return either
+            // a single rule or an array of rules.  Either way, add them
+            // to our rule vector
+            Object temp = NFRule.makeRules((String)ruleDescriptions.elementAt(i),
+                            this, predecessor, owner);
+
+            if (temp instanceof NFRule) {
+                tempRules.addElement(temp);
+                predecessor = (NFRule)temp;
+            }
+            else if (temp instanceof NFRule[]) {
+                NFRule[] rulesToAdd = (NFRule[])temp;
+
+                for (int j = 0; j < rulesToAdd.length; j++) {
+                    tempRules.addElement(rulesToAdd[j]);
+                    predecessor = rulesToAdd[j];
+                }
+            }
+        }
+        // now we can bag the description list
+        ruleDescriptions = null;
+
+        // for rules that didn't specify a base value, their base values
+        // were initialized to 0.  Make another pass through the list and
+        // set all those rules' base values.  We also remove any special
+        // rules from the list and put them into their own member variables
+        long defaultBaseValue = 0;
+
+        // (this isn't a for loop because we might be deleting items from
+        // the vector-- we want to make sure we only increment i when
+        // we _didn't_ delete aything from the vector)
+        int i = 0;
+        while (i < tempRules.size()) {
+            NFRule rule = (NFRule)tempRules.elementAt(i);
+
+            switch ((int)rule.getBaseValue()) {
+                // if the rule's base value is 0, fill in a default
+                // base value (this will be 1 plus the preceding
+                // rule's base value for regular rule sets, and the
+                // same as the preceding rule's base value in fraction
+                // rule sets)
+                case 0:
+                    rule.setBaseValue(defaultBaseValue);
+                    if (!isFractionRuleSet) {
+                        ++defaultBaseValue;
+                    }
+                    ++i;
+                    break;
+
+                // if it's the negative-number rule, copy it into its own
+                // data member and delete it from the list
+                case NFRule.NEGATIVE_NUMBER_RULE:
+                    negativeNumberRule = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the improper fraction rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.IMPROPER_FRACTION_RULE:
+                    fractionRules[0] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the proper fraction rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.PROPER_FRACTION_RULE:
+                    fractionRules[1] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the master rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.MASTER_RULE:
+                    fractionRules[2] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's a regular rule that already knows its base value,
+                // check to make sure the rules are in order, and update
+                // the default base value for the next rule
+                default:
+                    if (rule.getBaseValue() < defaultBaseValue) {
+                        throw new IllegalArgumentException("Rules are not in order, base: " + 
+                               rule.getBaseValue() + " < " + defaultBaseValue);
+                    }
+                    defaultBaseValue = rule.getBaseValue();
+                    if (!isFractionRuleSet) {
+                        ++defaultBaseValue;
+                    }
+                    ++i;
+                    break;
+            }
+        }
+
+        // finally, we can copy the rules from the vector into a
+        // fixed-length array
+        rules = new NFRule[tempRules.size()];
+        tempRules.copyInto((Object[])rules);
+    }
+
+    /**
+     * Flags this rule set as a fraction rule set.  This function is
+     * called during the construction process once we know this rule
+     * set is a fraction rule set.  We don't know a rule set is a
+     * fraction rule set until we see it used somewhere.  This function
+     * is not ad must not be called at any time other than during
+     * construction of a RuleBasedNumberFormat.
+     */
+    public void makeIntoFractionRuleSet() {
+        isFractionRuleSet = true;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Compares two rule sets for equality.
+     * @param that The other rule set
+     * @return true if the two rule sets are functionally equivalent.
+     */
+    public boolean equals(Object that) {
+        // if different classes, they're not equal
+        if (!(that instanceof NFRuleSet)) {
+            return false;
+        } else {
+            // otherwise, compare the members one by one...
+            NFRuleSet that2 = (NFRuleSet)that;
+
+            if (!name.equals(that2.name)
+        || !Utility.objectEquals(negativeNumberRule, that2.negativeNumberRule)
+        || !Utility.objectEquals(fractionRules[0], that2.fractionRules[0])
+        || !Utility.objectEquals(fractionRules[1], that2.fractionRules[1])
+        || !Utility.objectEquals(fractionRules[2], that2.fractionRules[2])
+        || rules.length != that2.rules.length
+                || isFractionRuleSet != that2.isFractionRuleSet) {
+
+                return false;
+            }
+
+            // ...then compare the rule lists...
+            for (int i = 0; i < rules.length; i++) {
+                if (!rules[i].equals(that2.rules[i])) {
+                    return false;
+                }
+            }
+
+            // ...and if we make it here, tney're equal
+            return true;
+        }
+    }
+
+
+    /**
+     * Builds a textual representation of a rule set.
+     * @return A textual representation of a rule set.  This won't
+     * necessarily be the same description that the rule set was
+     * constructed with, but it will produce the same results.
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // the rule set name goes first...
+        result.append(name + ":\n");
+
+        // followed by the regular rules...
+        for (int i = 0; i < rules.length; i++) {
+            result.append("    " + rules[i].toString() + "\n");
+        }
+
+        // followed by the special rules (if they exist)
+        if (negativeNumberRule != null) {
+            result.append("    " + negativeNumberRule.toString() + "\n");
+        }
+        if (fractionRules[0] != null) {
+            result.append("    " + fractionRules[0].toString() + "\n");
+        }
+        if (fractionRules[1] != null) {
+            result.append("    " + fractionRules[1].toString() + "\n");
+        }
+        if (fractionRules[2] != null) {
+            result.append("    " + fractionRules[2].toString() + "\n");
+        }
+
+        return result.toString();
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Says whether this rule set is a fraction rule set.
+     * @return true if this rule is a fraction rule set; false if it isn't
+     */
+    public boolean isFractionSet() {
+        return isFractionRuleSet;
+    }
+
+    /**
+     * Returns the rule set's name
+     * @return The rule set's name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Return true if the rule set is public.
+     * @return true if the rule set is public
+     */
+    public boolean isPublic() {
+    return !name.startsWith("%%");
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Formats a long.  Selects an appropriate rule and dispatches
+     * control to it.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the result is to be placed
+     * @param pos The position in toInsertInto where the result of
+     * this operation is to be inserted
+     */
+    public void format(long number, StringBuffer toInsertInto, int pos) {
+        NFRule applicableRule = findNormalRule(number);
+
+        if (++recursionCount >= RECURSION_LIMIT) {
+            recursionCount = 0;
+            throw new IllegalStateException("Recursion limit exceeded when applying ruleSet " + name);
+        }
+        applicableRule.doFormat(number, toInsertInto, pos);
+        --recursionCount;
+    }
+
+    /**
+     * Formats a double.  Selects an appropriate rule and dispatches
+     * control to it.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the result is to be placed
+     * @param pos The position in toInsertInto where the result of
+     * this operation is to be inserted
+     */
+    public void format(double number, StringBuffer toInsertInto, int pos) {
+        NFRule applicableRule = findRule(number);
+
+        if (++recursionCount >= RECURSION_LIMIT) {
+            recursionCount = 0;
+            throw new IllegalStateException("Recursion limit exceeded when applying ruleSet " + name);
+        }
+        applicableRule.doFormat(number, toInsertInto, pos);
+        --recursionCount;
+    }
+
+    /**
+     * Selects an apropriate rule for formatting the number.
+     * @param number The number being formatted.
+     * @return The rule that should be used to format it
+     */
+    private NFRule findRule(double number) {
+        // if this is a fraction rule set, use findFractionRuleSetRule()
+        if (isFractionRuleSet) {
+            return findFractionRuleSetRule(number);
+        }
+
+        // if the number is negative, return the negative number rule
+        // (if there isn't a negative-number rule, we pretend it's a
+        // positive number)
+        if (number < 0) {
+            if (negativeNumberRule != null) {
+                return negativeNumberRule;
+            } else {
+                number = -number;
+            }
+        }
+
+        // if the number isn't an integer, we use one f the fraction rules...
+        if (number != Math.floor(number)) {
+            // if the number is between 0 and 1, return the proper
+            // fraction rule
+            if (number < 1 && fractionRules[1] != null) {
+                return fractionRules[1];
+            }
+
+            // otherwise, return the improper fraction rule
+            else if (fractionRules[0] != null) {
+                return fractionRules[0];
+            }
+        }
+
+        // if there's a master rule, use it to format the number
+        if (fractionRules[2] != null) {
+            return fractionRules[2];
+
+        // and if we haven't yet returned a rule, use findNormalRule()
+        // to find the applicable rule
+        } else {
+            return findNormalRule((long)Math.round(number));
+        }
+    }
+
+    /**
+     * If the value passed to findRule() is a positive integer, findRule()
+     * uses this function to select the appropriate rule.  The result will
+     * generally be the rule with the highest base value less than or equal
+     * to the number.  There is one exception to this: If that rule has
+     * two substitutions and a base value that is not an even multiple of
+     * its divisor, and the number itself IS an even multiple of the rule's
+     * divisor, then the result will be the rule that preceded the original
+     * result in the rule list.  (This behavior is known as the "rollback
+     * rule", and is used to handle optional text: a rule with optional
+     * text is represented internally as two rules, and the rollback rule
+     * selects appropriate between them.  This avoids things like "two
+     * hundred zero".)
+     * @param number The number being formatted
+     * @return The rule to use to format this number
+     */
+    private NFRule findNormalRule(long number) {
+        // if this is a fraction rule set, use findFractionRuleSetRule()
+        // to find the rule (we should only go into this clause if the
+        // value is 0)
+        if (isFractionRuleSet) {
+            return findFractionRuleSetRule(number);
+        }
+
+        // if the number is negative, return the negative-number rule
+        // (if there isn't one, pretend the number is positive)
+        if (number < 0) {
+            if (negativeNumberRule != null) {
+                return negativeNumberRule;
+            } else {
+                number = -number;
+            }
+        }
+
+        // we have to repeat the preceding two checks, even though we
+        // do them in findRule(), because the version of format() that
+        // takes a long bypasses findRule() and goes straight to this
+        // function.  This function does skip the fraction rules since
+        // we know the value is an integer (it also skips the master
+        // rule, since it's considered a fraction rule.  Skipping the
+        // master rule in this function is also how we avoid infinite
+        // recursion)
+
+        // binary-search the rule list for the applicable rule
+        // (a rule is used for all values from its base value to
+        // the next rule's base value)
+        int lo = 0;
+        int hi = rules.length;
+    if (hi > 0) {
+        while (lo < hi) {
+        int mid = (lo + hi) / 2;
+        if (rules[mid].getBaseValue() == number) {
+            return rules[mid];
+        }
+        else if (rules[mid].getBaseValue() > number) {
+            hi = mid;
+        }
+        else {
+            lo = mid + 1;
+        }
+        }
+        if (hi == 0) { // bad rule set
+        throw new IllegalStateException("The rule set " + name + " cannot format the value " + number);
+        }
+        NFRule result = rules[hi - 1];
+
+        // use shouldRollBack() to see whether we need to invoke the
+        // rollback rule (see shouldRollBack()'s documentation for
+        // an explanation of the rollback rule).  If we do, roll back
+        // one rule and return that one instead of the one we'd normally
+        // return
+        if (result.shouldRollBack(number)) {
+        if (hi == 1) { // bad rule set
+            throw new IllegalStateException("The rule set " + name + " cannot roll back from the rule '" +
+                            result + "'");
+        }
+        result = rules[hi - 2];
+        }
+        return result;
+    }
+    // else use the master rule
+    return fractionRules[2];
+    }
+
+    /**
+     * If this rule is a fraction rule set, this function is used by
+     * findRule() to select the most appropriate rule for formatting
+     * the number.  Basically, the base value of each rule in the rule
+     * set is treated as the denominator of a fraction.  Whichever
+     * denominator can produce the fraction closest in value to the
+     * number passed in is the result.  If there's a tie, the earlier
+     * one in the list wins.  (If there are two rules in a row with the
+     * same base value, the first one is used when the numerator of the
+     * fraction would be 1, and the second rule is used the rest of the
+     * time.
+     * @param number The number being formatted (which will always be
+     * a number between 0 and 1)
+     * @return The rule to use to format this number
+     */
+    private NFRule findFractionRuleSetRule(double number) {
+        // the obvious way to do this (multiply the value being formatted
+        // by each rule's base value until you get an integral result)
+        // doesn't work because of rounding error.  This method is more
+        // accurate
+
+        // find the least common multiple of the rules' base values
+        // and multiply this by the number being formatted.  This is
+        // all the precision we need, and we can do all of the rest
+        // of the math using integer arithmetic
+        long leastCommonMultiple = rules[0].getBaseValue();
+        for (int i = 1; i < rules.length; i++) {
+            leastCommonMultiple = lcm(leastCommonMultiple, rules[i].getBaseValue());
+        }
+        long numerator = (long)(Math.round(number * leastCommonMultiple));
+
+        // for each rule, do the following...
+        long tempDifference;
+        long difference = Long.MAX_VALUE;
+        int winner = 0;
+        for (int i = 0; i < rules.length; i++) {
+            // "numerator" is the numerator of the fraction is the
+            // denominator is the LCD.  The numerator if the the rule's
+            // base value is the denomiator is "numerator" times the
+            // base value divided bythe LCD.  Here we check to see if
+            // that's an integer, and if not, how close it is to being
+            // an integer.
+            tempDifference = numerator * rules[i].getBaseValue() % leastCommonMultiple;
+
+            // normalize the result of the above calculation: we want
+            // the numerator's distance from the CLOSEST multiple
+            // of the LCD
+            if (leastCommonMultiple - tempDifference < tempDifference) {
+                tempDifference = leastCommonMultiple - tempDifference;
+            }
+
+            // if this is as close as we've come, keep track of how close
+            // that is, and the line number of the rule that did it.  If
+            // we've scored a direct hit, we don't have to look at any more
+            // rules
+            if (tempDifference < difference) {
+                difference = tempDifference;
+                winner = i;
+                if (difference == 0) {
+                    break;
+                }
+            }
+        }
+
+        // if we have two successive rules that both have the winning base
+        // value, then the first one (the one we found above) is used if
+        // the numerator of the fraction is 1 and the second one is used if
+        // the numerator of the fraction is anything else (this lets us
+        // do things like "one third"/"two thirds" without haveing to define
+        // a whole bunch of extra rule sets)
+        if (winner + 1 < rules.length
+                && rules[winner + 1].getBaseValue() == rules[winner].getBaseValue()) {
+            if (Math.round(number * rules[winner].getBaseValue()) < 1
+                    || Math.round(number * rules[winner].getBaseValue()) >= 2) {
+                ++winner;
+            }
+        }
+
+        // finally, return the winning rule
+        return rules[winner];
+    }
+
+    /**
+     * Calculates the least common multiple of x and y.
+     */
+    private static long lcm(long x, long y) {
+        // binary gcd algorithm from Knuth, "The Art of Computer Programming,"
+        // vol. 2, 1st ed., pp. 298-299
+        long x1 = x;
+        long y1 = y;
+
+        int p2 = 0;
+        while ((x1 & 1) == 0 && (y1 & 1) == 0) {
+            ++p2;
+            x1 >>= 1;
+            y1 >>= 1;
+        }
+
+        long t;
+        if ((x1 & 1) == 1) {
+            t = -y1;
+        } else {
+            t = x1;
+        }
+
+        while (t != 0) {
+            while ((t & 1) == 0) {
+                t >>= 1;
+            }
+            if (t > 0) {
+                x1 = t;
+            } else {
+                y1 = -t;
+            }
+            t = x1 - y1;
+        }
+        long gcd = x1 << p2;
+
+        // x * y == gcd(x, y) * lcm(x, y)
+        return x / gcd * y;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses a string.  Matches the string to be parsed against each
+     * of its rules (with a base value less than upperBound) and returns
+     * the value produced by the rule that matched the most charcters
+     * in the source string.
+     * @param text The string to parse
+     * @param parsePosition The initial position is ignored and assumed
+     * to be 0.  On exit, this object has been updated to point to the
+     * first character position this rule set didn't consume.
+     * @param upperBound Limits the rules that can be allowed to match.
+     * Only rules whose base values are strictly less than upperBound
+     * are considered.
+     * @return The numerical result of parsing this string.  This will
+     * be the matching rule's base value, composed appropriately with
+     * the results of matching any of its substitutions.  The object
+     * will be an instance of Long if it's an integral value; otherwise,
+     * it will be an instance of Double.  This function always returns
+     * a valid object: If nothing matched the input string at all,
+     * this function returns new Long(0), and the parse position is
+     * left unchanged.
+     */
+    public Number parse(String text, ParsePosition parsePosition, double upperBound) {
+        // try matching each rule in the rule set against the text being
+        // parsed.  Whichever one matches the most characters is the one
+        // that determines the value we return.
+
+        ParsePosition highWaterMark = new ParsePosition(0);
+        Number result = new Long(0);
+        Number tempResult = null;
+
+        // dump out if there's no text to parse
+        if (text.length() == 0) {
+            return result;
+        }
+
+        // start by trying the nehative number rule (if there is one)
+        if (negativeNumberRule != null) {
+            tempResult = negativeNumberRule.doParse(text, parsePosition, false, upperBound);
+            if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(parsePosition.getIndex());
+            }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+            parsePosition.setIndex(0);
+        }
+
+        // then try each of the fraction rules
+        for (int i = 0; i < 3; i++) {
+            if (fractionRules[i] != null) {
+                tempResult = fractionRules[i].doParse(text, parsePosition, false, upperBound);
+                if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                    result = tempResult;
+                    highWaterMark.setIndex(parsePosition.getIndex());
+                }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+                parsePosition.setIndex(0);
+            }
+        }
+
+        // finally, go through the regular rules one at a time.  We start
+        // at the end of the list because we want to try matching the most
+        // sigificant rule first (this helps ensure that we parse
+        // "five thousand three hundred six" as
+        // "(five thousand) (three hundred) (six)" rather than
+        // "((five thousand three) hundred) (six)").  Skip rules whose
+        // base values are higher than the upper bound (again, this helps
+        // limit ambiguity by making sure the rules that match a rule's
+        // are less significant than the rule containing the substitutions)/
+        for (int i = rules.length - 1; i >= 0 && highWaterMark.getIndex() < text.length(); i--) {
+            if (!isFractionRuleSet && rules[i].getBaseValue() >= upperBound) {
+                continue;
+            }
+
+            tempResult = rules[i].doParse(text, parsePosition, isFractionRuleSet, upperBound);
+            if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(parsePosition.getIndex());
+            }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+            parsePosition.setIndex(0);
+        }
+
+        // finally, update the parse postion we were passed to point to the
+        // first character we didn't use, and return the result that
+        // cporresponds to that string of characters
+        parsePosition.setIndex(highWaterMark.getIndex());
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//        if (parsePosition.getIndex() == 0) {
+//            parsePosition.setErrorIndex(highWaterMark.getErrorIndex());
+//        }
+
+        return result;
+    }
+}
diff --git a/src/com/ibm/icu/text/NFSubstitution.java b/src/com/ibm/icu/text/NFSubstitution.java
new file mode 100644
index 0000000..deed4ec
--- /dev/null
+++ b/src/com/ibm/icu/text/NFSubstitution.java
@@ -0,0 +1,1849 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.*;
+
+//===================================================================
+// NFSubstitution (abstract base class)
+//===================================================================
+
+/**
+ * An abstract class defining protocol for substitutions.  A substitution
+ * is a section of a rule that inserts text into the rule's rule text
+ * based on some part of the number being formatted.
+ * @author Richard Gillam
+ */
+abstract class NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The substitution's position in the rule text of the rule that owns it
+     */
+    int pos;
+
+    /**
+     * The rule set this substitution uses to format its result, or null.
+     * (Either this or numberFormat has to be non-null.)
+     */
+    NFRuleSet ruleSet = null;
+
+    /**
+     * The DecimalFormat this substitution uses to format its result,
+     * or null.  (Either this or ruleSet has to be non-null.)
+     */
+    DecimalFormat numberFormat = null;
+    
+    /**
+     * Link to the RBNF so that we can access its decimalFormat if need be.
+     */
+    RuleBasedNumberFormat rbnf = null;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses the description, creates the right kind of substitution,
+     * and initializes it based on the description.
+     * @param pos The substitution's position in the rule text of the
+     * rule that owns it.
+     * @param rule The rule containing this substitution
+     * @param rulePredecessor The rule preceding the one that contains
+     * this substitution in the rule set's rule list (this is used
+     * only for >>> substitutions).
+     * @param ruleSet The rule set containing the rule containing this
+     * substitution
+     * @param formatter The RuleBasedNumberFormat that ultimately owns
+     * this substitution
+     * @param description The description to parse to build the substitution
+     * (this is just the substring of the rule's description containing
+     * the substitution token itself)
+     * @return A new substitution constructed according to the description
+     */
+    public static NFSubstitution makeSubstitution(int pos,
+                                                  NFRule rule,
+                                                  NFRule rulePredecessor,
+                                                  NFRuleSet ruleSet,
+                                                  RuleBasedNumberFormat formatter,
+                                                  String description) {
+        // if the description is empty, return a NummSubstitution
+        if (description.length() == 0) {
+            return new NullSubstitution(pos, ruleSet, formatter, description);
+        }
+
+        switch (description.charAt(0)) {
+            // if the description begins with '<'...
+        case '<':
+            // throw an exception if the rule is a negative number
+            // rule
+            if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                throw new IllegalArgumentException("<< not allowed in negative-number rule");
+            }
+
+            // if the rule is a fraction rule, return an
+            // IntegralPartSubstitution
+            else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
+                     || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
+                     || rule.getBaseValue() == NFRule.MASTER_RULE) {
+                return new IntegralPartSubstitution(pos, ruleSet, formatter, description);
+            }
+
+            // if the rule set containing the rule is a fraction
+            // rule set, return a NumeratorSubstitution
+            else if (ruleSet.isFractionSet()) {
+                return new NumeratorSubstitution(pos, rule.getBaseValue(),
+                                                 formatter.getDefaultRuleSet(), formatter, description);
+            }
+
+            // otherwise, return a MultiplierSubstitution
+            else {
+                return new MultiplierSubstitution(pos, rule.getDivisor(), ruleSet,
+                                                  formatter, description);
+            }
+
+            // if the description begins with '>'...
+        case '>':
+            // if the rule is a negative-number rule, return
+            // an AbsoluteValueSubstitution
+            if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                return new AbsoluteValueSubstitution(pos, ruleSet, formatter, description);
+            }
+
+            // if the rule is a fraction rule, return a
+            // FractionalPartSubstitution
+            else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
+                     || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
+                     || rule.getBaseValue() == NFRule.MASTER_RULE) {
+                return new FractionalPartSubstitution(pos, ruleSet, formatter, description);
+            }
+
+            // if the rule set owning the rule is a fraction rule set,
+            // throw an exception
+            else if (ruleSet.isFractionSet()) {
+                throw new IllegalArgumentException(">> not allowed in fraction rule set");
+            }
+
+            // otherwise, return a ModulusSubstitution
+            else {
+                return new ModulusSubstitution(pos, rule.getDivisor(), rulePredecessor,
+                                               ruleSet, formatter, description);
+            }
+
+            // if the description begins with '=', always return a
+            // SameValueSubstitution
+        case '=':
+            return new SameValueSubstitution(pos, ruleSet, formatter, description);
+
+            // and if it's anything else, throw an exception
+        default:
+            throw new IllegalArgumentException("Illegal substitution character");
+        }
+    }
+
+    /**
+     * Base constructor for substitutions.  This constructor sets up the
+     * fields which are common to all substitutions.
+     * @param pos The substitution's position in the owning rule's rule
+     * text
+     * @param ruleSet The rule set that owns this substitution
+     * @param formatter The RuleBasedNumberFormat that owns this substitution
+     * @param description The substitution descriptor (i.e., the text
+     * inside the token characters)
+     */
+    NFSubstitution(int pos,
+                   NFRuleSet ruleSet,
+                   RuleBasedNumberFormat formatter,
+                   String description) {
+        // initialize the substitution's position in its parent rule
+        this.pos = pos;
+        this.rbnf = formatter;
+
+        // the description should begin and end with the same character.
+        // If it doesn't that's a syntax error.  Otherwise,
+        // makeSubstitution() was the only thing that needed to know
+        // about these characters, so strip them off
+        if (description.length() >= 2 && description.charAt(0) == description.charAt(
+                                                                                     description.length() - 1)) {
+            description = description.substring(1, description.length() - 1);
+        }
+        else if (description.length() != 0) {
+            throw new IllegalArgumentException("Illegal substitution syntax");
+        }
+
+        // if the description was just two paired token characters
+        // (i.e., "<<" or ">>"), it uses the rule set it belongs to to
+        // format its result
+        if (description.length() == 0) {
+            this.ruleSet = ruleSet;
+        }
+
+        // if the description contains a rule set name, that's the rule
+        // set we use to format the result: get a reference to the
+        // names rule set
+        else if (description.charAt(0) == '%') {
+            this.ruleSet = formatter.findRuleSet(description);
+        }
+
+        // if the description begins with 0 or #, treat it as a
+        // DecimalFormat pattern, and initialize a DecimalFormat with
+        // that pattern (then set it to use the DecimalFormatSymbols
+        // belonging to our formatter)
+        else if (description.charAt(0) == '#' || description.charAt(0) == '0') {
+            this.numberFormat = new DecimalFormat(description);
+            this.numberFormat.setDecimalFormatSymbols(formatter.getDecimalFormatSymbols());
+        }
+
+        // if the description is ">>>", this substitution bypasses the
+        // usual rule-search process and always uses the rule that precedes
+        // it in its own rule set's rule list (this is used for place-value
+        // notations: formats where you want to see a particular part of
+        // a number even when it's 0)
+        else if (description.charAt(0) == '>') {
+            this.ruleSet = ruleSet; // was null, thai rules added to control space
+            this.numberFormat = null;
+        }
+
+        // and of the description is none of these things, it's a syntax error
+        else {
+            throw new IllegalArgumentException("Illegal substitution syntax");
+        }
+    }
+
+    /**
+     * Set's the substitution's divisor.  Used by NFRule.setBaseValue().
+     * A no-op for all substitutions except multiplier and modulus
+     * substitutions.
+     * @param radix The radix of the divisor
+     * @param exponent The exponent of the divisor
+     */
+    public void setDivisor(int radix, int exponent) {
+        // a no-op for all substitutions except multiplier and modulus substitutions
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Compares two substitutions for equality
+     * @param The substitution to compare this one to
+     * @return true if the two substitutions are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        // compare class and all of the fields all substitutions have
+        // in common
+        if (this.getClass() == that.getClass()) {
+            NFSubstitution that2 = (NFSubstitution)that;
+
+            return pos == that2.pos
+                && (ruleSet == null ? that2.ruleSet == null : true) // can't compare tree structure, no .equals or recurse
+                && (numberFormat == null ? (that2.numberFormat == null) : numberFormat.equals(that2.numberFormat));
+        }
+        return false;
+    }
+
+    /**
+     * Returns a textual description of the substitution
+     * @return A textual description of the substitution.  This might
+     * not be identical to the description it was created from, but
+     * it'll produce the same result.
+     */
+    public String toString() {
+        // use tokenChar() to get the character at the beginning and
+        // end of the substitution token.  In between them will go
+        // either the name of the rule set it uses, or the pattern of
+        // the DecimalFormat it uses
+        if (ruleSet != null) {
+            return tokenChar() + ruleSet.getName() + tokenChar();
+        } else {
+            return tokenChar() + numberFormat.toPattern() + tokenChar();
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param position The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int position) {
+        if (ruleSet != null) {
+            // perform a transformation on the number that is dependent
+            // on the type of substitution this is, then just call its
+            // rule set's format() method to format the result
+            long numberToFormat = transformNumber(number);
+
+            ruleSet.format(numberToFormat, toInsertInto, position + pos);
+        } else {
+            // or perform the transformation on the number (preserving
+            // the result's fractional part if the formatter it set
+            // to show it), then use that formatter's format() method
+            // to format the result
+            double numberToFormat = transformNumber((double)number);
+            if (numberFormat.getMaximumFractionDigits() == 0) {
+                numberToFormat = Math.floor(numberToFormat);
+            }
+
+            toInsertInto.insert(position + pos, numberFormat.format(numberToFormat));
+        }
+    }
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param position The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+        // perform a transformation on the number being formatted that
+        // is dependent on the type of substitution this is
+        double numberToFormat = transformNumber(number);
+
+        // if the result is an integer, from here on out we work in integer
+        // space (saving time and memory and preserving accuracy)
+        if (numberToFormat == Math.floor(numberToFormat) && ruleSet != null) {
+            ruleSet.format((long)numberToFormat, toInsertInto, position + pos);
+
+            // if the result isn't an integer, then call either our rule set's
+            // format() method or our DecimalFormat's format() method to
+            // format the result
+        } else {
+            if (ruleSet != null) {
+                ruleSet.format(numberToFormat, toInsertInto, position + pos);
+            } else {
+                toInsertInto.insert(position + this.pos, numberFormat.format(numberToFormat));
+            }
+        }
+    }
+
+    /**
+     * Subclasses override this function to perform some kind of
+     * mathematical operation on the number.  The result of this operation
+     * is formatted using the rule set or DecimalFormat that this
+     * substitution refers to, and the result is inserted into the result
+     * string.
+     * @param The number being formatted
+     * @return The result of performing the opreration on the number
+     */
+    public abstract long transformNumber(long number);
+
+    /**
+     * Subclasses override this function to perform some kind of
+     * mathematical operation on the number.  The result of this operation
+     * is formatted using the rule set or DecimalFormat that this
+     * substitution refers to, and the result is inserted into the result
+     * string.
+     * @param The number being formatted
+     * @return The result of performing the opreration on the number
+     */
+    public abstract double transformNumber(double number);
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses a string using the rule set or DecimalFormat belonging
+     * to this substitution.  If there's a match, a mathematical
+     * operation (the inverse of the one used in formatting) is
+     * performed on the result of the parse and the value passed in
+     * and returned as the result.  The parse position is updated to
+     * point to the first unmatched character in the string.
+     * @param text The string to parse
+     * @param parsePosition On entry, ignored, but assumed to be 0.
+     * On exit, this is updated to point to the first unmatched
+     * character (or 0 if the substitution didn't match)
+     * @param baseValue A partial parse result that should be
+     * combined with the result of this parse
+     * @param upperBound When searching the rule set for a rule
+     * matching the string passed in, only rules with base values
+     * lower than this are considered
+     * @param lenientParse If true and matching against rules fails,
+     * the substitution will also try matching the text against
+     * numerals using a default-costructed NumberFormat.  If false,
+     * no extra work is done.  (This value is false whenever the
+     * formatter isn't in lenient-parse mode, but is also false
+     * under some conditions even when the formatter _is_ in
+     * lenient-parse mode.)
+     * @return If there's a match, this is the result of composing
+     * baseValue with whatever was returned from matching the
+     * characters.  This will be either a Long or a Double.  If there's
+     * no match this is new Long(0) (not null), and parsePosition
+     * is left unchanged.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                          double upperBound, boolean lenientParse) {
+        Number tempResult;
+
+        // figure out the highest base value a rule can have and match
+        // the text being parsed (this varies according to the type of
+        // substitutions: multiplier, modulus, and numerator substitutions
+        // restrict the search to rules with base values lower than their
+        // own; same-value substitutions leave the upper bound wherever
+        // it was, and the others allow any rule to match
+        upperBound = calcUpperBound(upperBound);
+
+        // use our rule set to parse the text.  If that fails and
+        // lenient parsing is enabled (this is always false if the
+        // formatter's lenient-parsing mode is off, but it may also
+        // be false even when the formatter's lenient-parse mode is
+        // on), then also try parsing the text using a default-
+        // constructed NumberFormat
+        if (ruleSet != null) {
+            tempResult = ruleSet.parse(text, parsePosition, upperBound);
+            if (lenientParse && !ruleSet.isFractionSet() && parsePosition.getIndex() == 0) {
+                tempResult = rbnf.getDecimalFormat().parse(text, parsePosition);
+            }
+
+            // ...or use our DecimalFormat to parse the text
+        } else {
+            tempResult = numberFormat.parse(text, parsePosition);
+        }
+
+        // if the parse was successful, we've already advanced the caller's
+        // parse position (this is the one function that doesn't have one
+        // of its own).  Derive a parse result and return it as a Long,
+        // if possible, or a Double
+        if (parsePosition.getIndex() != 0) {
+            double result = tempResult.doubleValue();
+
+            // composeRuleValue() produces a full parse result from
+            // the partial parse result passed to this function from
+            // the caller (this is either the owning rule's base value
+            // or the partial result obtained from composing the
+            // owning rule's base value with its other substitution's
+            // parse result) and the partial parse result obtained by
+            // matching the substitution (which will be the same value
+            // the caller would get by parsing just this part of the
+            // text with RuleBasedNumberFormat.parse() ).  How the two
+            // values are used to derive the full parse result depends
+            // on the types of substitutions: For a regular rule, the
+            // ultimate result is its multiplier substitution's result
+            // times the rule's divisor (or the rule's base value) plus
+            // the modulus substitution's result (which will actually
+            // supersede part of the rule's base value).  For a negative-
+            // number rule, the result is the negative of its substitution's
+            // result.  For a fraction rule, it's the sum of its two
+            // substitution results.  For a rule in a fraction rule set,
+            // it's the numerator substitution's result divided by
+            // the rule's base value.  Results from same-value substitutions
+            // propagate back upard, and null substitutions don't affect
+            // the result.
+            result = composeRuleValue(result, baseValue);
+            if (result == (long)result) {
+                return new Long((long)result);
+            } else {
+                return new Double(result);
+            }
+
+            // if the parse was UNsuccessful, return 0
+        } else {
+            return tempResult;
+        }
+    }
+
+    /**
+     * Derives a new value from the two values passed in.  The two values
+     * are typically either the base values of two rules (the one containing
+     * the substitution and the one matching the substitution) or partial
+     * parse results derived in some other way.  The operation is generally
+     * the inverse of the operation performed by transformNumber().
+     * @param newRuleValue The value produced by matching this substitution
+     * @param oldRuleValue The value that was passed to the substitution
+     * by the rule that owns it
+     * @return A third value derived from the other two, representing a
+     * partial parse result
+     */
+    public abstract double composeRuleValue(double newRuleValue, double oldRuleValue);
+
+    /**
+     * Calculates an upper bound when searching for a rule that matches
+     * this substitution.  Rules with base values greater than or equal
+     * to upperBound are not considered.
+     * @param oldUpperBound The current upper-bound setting.  The new
+     * upper bound can't be any higher.
+     */
+    public abstract double calcUpperBound(double oldUpperBound);
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the substitution's position in the rule that owns it.
+     * @return The substitution's position in the rule that owns it.
+     */
+    public final int getPos() {
+        return pos;
+    }
+
+    /**
+     * Returns the character used in the textual representation of
+     * substitutions of this type.  Used by toString().
+     * @return This substitution's token character.
+     */
+    abstract char tokenChar();
+
+    /**
+     * Returns true if this is a null substitution.  (We didn't do this
+     * with instanceof partially because it causes source files to
+     * proliferate and partially because we have to port this to C++.)
+     * @return true if this object is an instance of NullSubstitution
+     */
+    public boolean isNullSubstitution() {
+        return false;
+    }
+
+    /**
+     * Returns true if this is a modulus substitution.  (We didn't do this
+     * with instanceof partially because it causes source files to
+     * proliferate and partially because we have to port this to C++.)
+     * @return true if this object is an instance of ModulusSubstitution
+     */
+    public boolean isModulusSubstitution() {
+        return false;
+    }
+}
+
+//===================================================================
+// SameValueSubstitution
+//===================================================================
+
+/**
+ * A substitution that passes the value passed to it through unchanged.
+ * Represented by == in rule descriptions.
+ */
+class SameValueSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a SameValueSubstution.  This function just uses the
+     * superclass constructor, but it performs a check that this
+     * substitution doesn't call the rule set that owns it, since that
+     * would lead to infinite recursion.
+     */
+    SameValueSubstitution(int pos,
+                          NFRuleSet ruleSet,
+                          RuleBasedNumberFormat formatter,
+                          String description) {
+        super(pos, ruleSet, formatter, description);
+        if (description.equals("==")) {
+            throw new IllegalArgumentException("== is not a legal token");
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns "number" unchanged.
+     * @return "number"
+     */
+    public long transformNumber(long number) {
+        return number;
+    }
+
+    /**
+     * Returns "number" unchanged.
+     * @return "number"
+     */
+    public double transformNumber(double number) {
+        return number;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns newRuleValue and ignores oldRuleValue. (The value we got
+     * matching the substitution supersedes the value of the rule
+     * that owns the substitution.)
+     * @param newRuleValue The value resulting from matching the substituion
+     * @param oldRuleValue The value of the rule containing the
+     * substitution.
+     * @return newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue;
+    }
+
+    /**
+     * SameValueSubstitution doesn't change the upper bound.
+     * @param oldUpperBound The current upper bound.
+     * @return oldUpperBound
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return oldUpperBound;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a SameValueSubstitution is =.
+     * @return '='
+     */
+    char tokenChar() {
+        return '=';
+    }
+}
+
+//===================================================================
+// MultiplierSubstitution
+//===================================================================
+
+/**
+ * A substitution that divides the number being formatted by the rule's
+ * divisor and formats the quotient.  Represented by &lt;&lt; in normal
+ * rules.
+ */
+class MultiplierSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The divisor of the rule that owns this substitution.
+     */
+    double divisor;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a MultiplierSubstitution.  This uses the superclass
+     * constructor to initialize most members, but this substitution
+     * also maintains its own copy of its rule's divisor.
+     * @param pos The substitution's position in its rule's rule text
+     * @param divisor The owning rule's divisor
+     * @ruleSet The ruleSet this substitution uses to format its result
+     * @formatter The formatter that owns this substitution
+     * @description The description describing this substitution
+     */
+    MultiplierSubstitution(int pos,
+                           double divisor,
+                           NFRuleSet ruleSet,
+                           RuleBasedNumberFormat formatter,
+                           String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // the owning rule's divisor affects the behavior of this
+        // substitution.  Rather than keeping a back-pointer to the
+        // rule, we keep a copy of the divisor
+        this.divisor = divisor;
+
+    if (divisor == 0) { // this will cause recursion
+        throw new IllegalStateException("Substitution with bad divisor (" + divisor + ") " + description.substring(0, pos) + 
+                     " | " + description.substring(pos));
+    }
+    }
+
+    /**
+     * Sets the substitution's divisor based on the values passed in.
+     * @param radix The radix of the divisor.
+     * @param exponent The exponent of the divisor.
+     */
+    public void setDivisor(int radix, int exponent) {
+        divisor = Math.pow(radix, exponent);
+
+    if (divisor == 0) {
+        throw new IllegalStateException("Substitution with divisor 0");
+    }
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Augments the superclass's equals() function by comparing divisors.
+     * @param that The other substitution
+     * @return true if the two substitutions are functionally equal
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            MultiplierSubstitution that2 = (MultiplierSubstitution)that;
+
+            return divisor == that2.divisor;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Divides the number by the rule's divisor and returns the quotient.
+     * @param number The number being formatted.
+     * @return "number" divided by the rule's divisor
+     */
+    public long transformNumber(long number) {
+        return (long)Math.floor(number / divisor);
+    }
+
+    /**
+     * Divides the number by the rule's divisor and returns the quotient.
+     * This is an integral quotient if we're filling in the substitution
+     * using another rule set, but it's the full quotient (integral and
+     * fractional parts) if we're filling in the substitution using
+     * a DecimalFormat.  (This allows things such as "1.2 million".)
+     * @param number The number being formatted
+     * @return "number" divided by the rule's divisor
+     */
+    public double transformNumber(double number) {
+        if (ruleSet == null) {
+            return number / divisor;
+        } else {
+            return Math.floor(number / divisor);
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns newRuleValue times the divisor.  Ignores oldRuleValue.
+     * (The result of matching a << substitution supersedes the base
+     * value of the rule that contains it.)
+     * @param newRuleValue The result of matching the substitution
+     * @param oldRuleValue The base value of the rule containing the
+     * substitution
+     * @return newRuleValue * divisor
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue * divisor;
+    }
+
+    /**
+     * Sets the upper bound down to the rule's divisor.
+     * @param oldUpperBound Ignored.
+     * @return The rule's divisor.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return divisor;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a multiplier substitution is &lt;.
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// ModulusSubstitution
+//===================================================================
+
+/**
+ * A substitution that divides the number being formatted by the its rule's
+ * divisor and formats the remainder.  Represented by "&gt;&gt;" in a
+ * regular rule.
+ */
+class ModulusSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The divisor of the rule owning this substitution
+     */
+    double divisor;
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, the rule to use to format
+     * the substitution value.  Otherwise, null.
+     */
+    NFRule ruleToUse;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a ModulusSubstution.  In addition to the inherited
+     * members, a ModulusSubstitution keeps track of the divisor of the
+     * rule that owns it, and may also keep a reference to the rule
+     * that precedes the rule containing this substitution in the rule
+     * set's rule list.
+     * @param pos The substitution's position in its rule's rule text
+     * @param divisor The divisor of the rule that owns this substitution
+     * @param rulePredecessor The rule that precedes this substitution's
+     * rule in its rule set's rule list
+     * @param formatter The RuleBasedNumberFormat owning this substitution
+     * @param description The description for this substitution
+     */
+    ModulusSubstitution(int pos,
+                        double divisor,
+                        NFRule rulePredecessor,
+                        NFRuleSet ruleSet,
+                        RuleBasedNumberFormat formatter,
+                        String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // the owning rule's divisor controls the behavior of this
+        // substitution: rather than keeping a backpointer to the rule,
+        // we keep a copy of the divisor
+        this.divisor = divisor;
+
+    if (divisor == 0) { // this will cause recursion
+        throw new IllegalStateException("Substitution with bad divisor (" + divisor + ") "+ description.substring(0, pos) + 
+                     " | " + description.substring(pos));
+    }
+
+        // the >>> token doesn't alter how this substituion calculates the
+        // values it uses for formatting and parsing, but it changes
+        // what's done with that value after it's obtained: >>> short-
+        // circuits the rule-search process and goes straight to the
+        // specified rule to format the substitution value
+        if (description.equals(">>>")) {
+            ruleToUse = rulePredecessor;
+        } else {
+            ruleToUse = null;
+        }
+    }
+
+    /**
+     * Makes the substitution's divisor conform to that of the rule
+     * that owns it.  Used when the divisor is determined after creation.
+     * @param radix The radix of the divsor.
+     * @param exponent The exponent of the divisor.
+     */
+    public void setDivisor(int radix, int exponent) {
+        divisor = Math.pow(radix, exponent);
+
+    if (divisor == 0) { // this will cause recursion
+        throw new IllegalStateException("Substitution with bad divisor");
+    }
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Augments the inherited equals() function by comparing divisors and
+     * ruleToUse.
+     * @param that The other substitution
+     * @return true if the two substitutions are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            ModulusSubstitution that2 = (ModulusSubstitution)that;
+
+            return divisor == that2.divisor;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, use ruleToUse to fill in
+     * the substitution.  Otherwise, just use the superclass function.
+     * @param number The number being formatted
+     * @toInsertInto The string to insert the result of this substitution
+     * into
+     * @param position The position of the rule text in toInsertInto
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int position) {
+        // if this isn't a >>> substitution, just use the inherited version
+        // of this function (which uses either a rule set or a DecimalFormat
+        // to format its substitution value)
+        if (ruleToUse == null) {
+            super.doSubstitution(number, toInsertInto, position);
+
+        // a >>> substitution goes straight to a particular rule to
+        // format the substitution value
+        } else {
+            long numberToFormat = transformNumber(number);
+            ruleToUse.doFormat(numberToFormat, toInsertInto, position + pos);
+        }
+    }
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, use ruleToUse to fill in
+     * the substitution.  Otherwise, just use the superclass function.
+     * @param number The number being formatted
+     * @toInsertInto The string to insert the result of this substitution
+     * into
+     * @param position The position of the rule text in toInsertInto
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+        // if this isn't a >>> substitution, just use the inherited version
+        // of this function (which uses either a rule set or a DecimalFormat
+        // to format its substitution value)
+        if (ruleToUse == null) {
+            super.doSubstitution(number, toInsertInto, position);
+
+        // a >>> substitution goes straight to a particular rule to
+        // format the substitution value
+        } else {
+            double numberToFormat = transformNumber(number);
+
+            ruleToUse.doFormat(numberToFormat, toInsertInto, position + pos);
+        }
+    }
+
+    /**
+     * Divides the number being formatted by the rule's divisor and
+     * returns the remainder.
+     * @param number The number being formatted
+     * @return "number" mod divisor
+     */
+    public long transformNumber(long number) {
+        return (long)Math.floor(number % divisor);
+    }
+
+    /**
+     * Divides the number being formatted by the rule's divisor and
+     * returns the remainder.
+     * @param number The number being formatted
+     * @return "number" mod divisor
+     */
+    public double transformNumber(double number) {
+        return Math.floor(number % divisor);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, match only against ruleToUse.
+     * Otherwise, use the superclass function.
+     * @param text The string to parse
+     * @param parsePosition Ignored on entry, updated on exit to point to
+     * the first unmatched character.
+     * @param baseValue The partial parse result prior to calling this
+     * routine.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // if this isn't a >>> substitution, we can just use the
+        // inherited parse() routine to do the parsing
+        if (ruleToUse == null) {
+            return super.doParse(text, parsePosition, baseValue, upperBound, lenientParse);
+
+        // but if it IS a >>> substitution, we have to do it here: we
+        // use the specific rule's doParse() method, and then we have to
+        // do some of the other work of NFRuleSet.parse()
+        } else {
+            Number tempResult = ruleToUse.doParse(text, parsePosition, false, upperBound);
+
+            if (parsePosition.getIndex() != 0) {
+                double result = tempResult.doubleValue();
+
+                result = composeRuleValue(result, baseValue);
+                if (result == (long)result) {
+                    return new Long((long)result);
+                } else {
+                    return new Double(result);
+                }
+            } else {
+                return tempResult;
+            }
+        }
+    }
+
+    /**
+     * Returns the highest multiple of the rule's divisor that its less
+     * than or equal to oldRuleValue, plus newRuleValue.  (The result
+     * is the sum of the result of parsing the substitution plus the
+     * base valueof the rule containing the substitution, but if the
+     * owning rule's base value isn't an even multiple of its divisor,
+     * we have to round it down to a multiple of the divisor, or we
+     * get unwanted digits in the result.)
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The base value of the rule containing the
+     * substitution
+     * @return (oldRuleValue - (oldRuleValue % divisor)) + newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return (oldRuleValue - (oldRuleValue % divisor)) + newRuleValue;
+    }
+
+    /**
+     * Sets the upper bound down to the owning rule's divisor
+     * @param oldUpperBound Ignored
+     * @return The owning rule's dvisor
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return divisor;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns true.  This _is_ a ModulusSubstitution.
+     * @return true
+     */
+    public boolean isModulusSubstitution() {
+        return true;
+    }
+
+    /**
+     * The token character of a ModulusSubstitution is &gt;.
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// IntegralPartSubstitution
+//===================================================================
+
+/**
+ * A substitution that formats the number's integral part.  This is
+ * represented by &lt;&lt; in a fraction rule.
+ */
+class IntegralPartSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs an IntegralPartSubstitution.  This just calls
+     * the superclass constructor.
+     */
+    IntegralPartSubstitution(int pos,
+                             NFRuleSet ruleSet,
+                             RuleBasedNumberFormat formatter,
+                             String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the number's integral part. (For a long, that's just the
+     * number unchanged.)
+     * @param number The number being formatted
+     * @return "number" unchanged
+     */
+    public long transformNumber(long number) {
+        return number;
+    }
+
+    /**
+     * Returns the number's integral part.
+     * @param number The integral part of the number being formatted
+     * @return floor(number)
+     */
+    public double transformNumber(double number) {
+        return Math.floor(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the sum of the result of parsing the substitution and the
+     * owning rule's base value.  (The owning rule, at best, has an
+     * integral-part substitution and a fractional-part substitution,
+     * so we can safely just add them.)
+     * @param newRuleValue The result of matching the substitution
+     * @param oldRuleValue The partial result of the parse prior to
+     * calling this function
+     * @return oldRuleValue + newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue + oldRuleValue;
+    }
+
+    /**
+     * An IntegralPartSubstitution sets the upper bound back up so all
+     * potentially matching rules are considered.
+     * @param oldUpperBound Ignored
+     * @return Double.MAX_VALUE
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return Double.MAX_VALUE;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * An IntegralPartSubstitution's token character is &lt;
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// FractionalPartSubstitution
+//===================================================================
+
+/**
+ * A substitution that formats the fractional part of a number.  This is
+ * represented by &gt;&gt; in a fraction rule.
+ */
+class FractionalPartSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * true if this substitution should have the default "by digits"
+     * behavior, false otherwise
+     */
+    private boolean byDigits = false;
+
+    /**
+     * true if we automatically insert spaces to separate names of digits
+     * set to false by '>>>' in fraction rules, used by Thai.
+     */
+    private boolean useSpaces = true;
+
+    /*
+     * The largest number of digits after the decimal point that this
+     * object will show in "by digits" mode
+     */
+    //private static final int MAXDECIMALDIGITS = 18; // 8
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a FractionalPartSubstitution.  This object keeps a flag
+     * telling whether it should format by digits or not.  In addition,
+     * it marks the rule set it calls (if any) as a fraction rule set.
+     */
+    FractionalPartSubstitution(int pos,
+                               NFRuleSet ruleSet,
+                               RuleBasedNumberFormat formatter,
+                               String description) {
+        super(pos, ruleSet, formatter, description);
+//    boolean chevron = description.startsWith(">>") || ruleSet == this.ruleSet;
+//      if (chevron || ruleSet == this.ruleSet) {
+
+        if (description.equals(">>") || description.equals(">>>") || ruleSet == this.ruleSet) {
+            byDigits = true;
+            if (description.equals(">>>")) {
+              useSpaces = false;
+            }
+        } else {
+            this.ruleSet.makeIntoFractionRuleSet();
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * If in "by digits" mode, fills in the substitution one decimal digit
+     * at a time using the rule set containing this substitution.
+     * Otherwise, uses the superclass function.
+     * @param number The number being formatted
+     * @param toInsertInto The string to insert the result of formatting
+     * the substitution into
+     * @param position The position of the owning rule's rule text in
+     * toInsertInto
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+        // if we're not in "byDigits" mode, just use the inherited
+        // doSubstitution() routine
+        if (!byDigits) {
+            super.doSubstitution(number, toInsertInto, position);
+
+        // if we're in "byDigits" mode, transform the value into an integer
+        // by moving the decimal point eight places to the right and
+        // pulling digits off the right one at a time, formatting each digit
+        // as an integer using this substitution's owning rule set
+        // (this is slower, but more accurate, than doing it from the
+        // other end)
+        } else {
+//              int numberToFormat = (int)Math.round(transformNumber(number) * Math.pow(
+//                              10, MAXDECIMALDIGITS));
+//        long numberToFormat = (long)Math.round(transformNumber(number) * Math.pow(10, MAXDECIMALDIGITS));
+
+        // just print to string and then use that
+        DigitList dl = new DigitList();
+        dl.set(number, 20, true);
+
+            // this flag keeps us from formatting trailing zeros.  It starts
+            // out false because we're pulling from the right, and switches
+            // to true the first time we encounter a non-zero digit
+//              boolean doZeros = false;
+//          System.out.println("class: " + getClass().getName());
+//          System.out.println("number: " + number + " transformed: " + transformNumber(number));
+//          System.out.println("formatting " + numberToFormat);
+//              for (int i = 0; i < MAXDECIMALDIGITS; i++) {
+//                  int digit = (int)(numberToFormat % 10);
+//          System.out.println("   #: '" + numberToFormat + "'" + " digit '" + digit + "'");
+//                  if (digit != 0 || doZeros) {
+//                      if (doZeros && useSpaces) {
+//                          toInsertInto.insert(pos + this.pos, ' ');
+//                      }
+//                      doZeros = true;
+//                      ruleSet.format(digit, toInsertInto, pos + this.pos);
+//                  }
+//                  numberToFormat /= 10;
+//              }
+
+        boolean pad = false;
+        while (dl.count > Math.max(0, dl.decimalAt)) {
+        if (pad && useSpaces) {
+            toInsertInto.insert(position + pos, ' ');
+        } else {
+            pad = true;
+        }
+        ruleSet.format(dl.digits[--dl.count] - '0', toInsertInto, position + pos);
+        }
+        while (dl.decimalAt < 0) {
+        if (pad && useSpaces) {
+            toInsertInto.insert(position + pos, ' ');
+        } else {
+            pad = true;
+        }
+        ruleSet.format(0, toInsertInto, position + pos);
+        ++dl.decimalAt;
+        }
+    }
+    }
+
+    /**
+     * Returns the fractional part of the number, which will always be
+     * zero if it's a long.
+     * @param number The number being formatted
+     * @return 0
+     */
+    public long transformNumber(long number) {
+        return 0;
+    }
+
+    /**
+     * Returns the fractional part of the number.
+     * @param number The number being formatted.
+     * @return number - floor(number)
+     */
+    public double transformNumber(double number) {
+        return number - Math.floor(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * If in "by digits" mode, parses the string as if it were a string
+     * of individual digits; otherwise, uses the superclass function.
+     * @param text The string to parse
+     * @param parsePosition Ignored on entry, but updated on exit to point
+     * to the first unmatched character
+     * @param baseValue The partial parse result prior to entering this
+     * function
+     * @param upperBound Only consider rules with base values lower than
+     * this when filling in the substitution
+     * @param lenientParse If true, try matching the text as numerals if
+     * matching as words doesn't work
+     * @return If the match was successful, the current partial parse
+     * result; otherwise new Long(0).  The result is either a Long or
+     * a Double.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // if we're not in byDigits mode, we can just use the inherited
+        // doParse()
+        if (!byDigits) {
+            return super.doParse(text, parsePosition, baseValue, 0, lenientParse);
+
+        // if we ARE in byDigits mode, parse the text one digit at a time
+        // using this substitution's owning rule set (we do this by setting
+        // upperBound to 10 when calling doParse() ) until we reach
+        // nonmatching text
+        } else {
+            String workText = new String(text);
+            ParsePosition workPos = new ParsePosition(1);
+            double result = 0;
+        int digit;
+//              double p10 = 0.1;
+
+//              while (workText.length() > 0 && workPos.getIndex() != 0) {
+//                  workPos.setIndex(0);
+//                  digit = ruleSet.parse(workText, workPos, 10).intValue();
+//                  if (lenientParse && workPos.getIndex() == 0) {
+//                      digit = NumberFormat.getInstance().parse(workText, workPos).intValue();
+//                  }
+
+//                  if (workPos.getIndex() != 0) {
+//                      result += digit * p10;
+//                      p10 /= 10;
+//                      parsePosition.setIndex(parsePosition.getIndex() + workPos.getIndex());
+//                      workText = workText.substring(workPos.getIndex());
+//                      while (workText.length() > 0 && workText.charAt(0) == ' ') {
+//                          workText = workText.substring(1);
+//                          parsePosition.setIndex(parsePosition.getIndex() + 1);
+//                      }
+//                  }
+//              }
+
+
+        DigitList dl = new DigitList();
+            while (workText.length() > 0 && workPos.getIndex() != 0) {
+                workPos.setIndex(0);
+                digit = ruleSet.parse(workText, workPos, 10).intValue();
+                if (lenientParse && workPos.getIndex() == 0) {
+                    digit = rbnf.getDecimalFormat().parse(workText, workPos).intValue();
+                }
+
+                if (workPos.getIndex() != 0) {
+            dl.append('0'+digit);
+
+                    parsePosition.setIndex(parsePosition.getIndex() + workPos.getIndex());
+                    workText = workText.substring(workPos.getIndex());
+                    while (workText.length() > 0 && workText.charAt(0) == ' ') {
+                        workText = workText.substring(1);
+                        parsePosition.setIndex(parsePosition.getIndex() + 1);
+                    }
+                }
+            }
+        result = dl.count == 0 ? 0 : dl.getDouble();
+
+            result = composeRuleValue(result, baseValue);
+            return new Double(result);
+        }
+    }
+
+    /**
+     * Returns the sum of the two partial parse results.
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The partial parse result prior to calling
+     * this function
+     * @return newRuleValue + oldRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue + oldRuleValue;
+    }
+
+    /**
+     * Not used.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return 0;   // this value is ignored
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a FractionalPartSubstitution is &gt;.
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// AbsoluteValueSubstitution
+//===================================================================
+
+ /**
+  * A substitution that formats the absolute value of the number.
+  * This substition is represented by &gt;&gt; in a negative-number rule.
+  */
+class AbsoluteValueSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs an AbsoluteValueSubstitution.  This just uses the
+     * superclass constructor.
+     */
+    AbsoluteValueSubstitution(int pos,
+                              NFRuleSet ruleSet,
+                              RuleBasedNumberFormat formatter,
+                              String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the absolute value of the number.
+     * @param number The number being formatted.
+     * @return abs(number)
+     */
+    public long transformNumber(long number) {
+        return Math.abs(number);
+    }
+
+    /**
+     * Returns the absolute value of the number.
+     * @param number The number being formatted.
+     * @return abs(number)
+     */
+    public double transformNumber(double number) {
+        return Math.abs(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the addtive inverse of the result of parsing the
+     * substitution (this supersedes the earlier partial result)
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The partial parse result prior to calling
+     * this function
+     * @return -newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return -newRuleValue;
+    }
+
+    /**
+     * Sets the upper bound beck up to consider all rules
+     * @param oldUpperBound Ignored.
+     * @return Double.MAX_VALUE
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return Double.MAX_VALUE;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for an AbsoluteValueSubstitution is &gt;
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// NumeratorSubstitution
+//===================================================================
+
+/**
+ * A substitution that multiplies the number being formatted (which is
+ * between 0 and 1) by the base value of the rule that owns it and
+ * formats the result.  It is represented by &lt;&lt; in the rules
+ * in a fraction rule set.
+ */
+class NumeratorSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The denominator of the fraction we're finding the numerator for.
+     * (The base value of the rule that owns this substitution.)
+     */
+    double denominator;
+
+    /**
+     * True if we format leading zeros (this is a hack for Hebrew spellout)
+     */
+    boolean withZeros;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a NumberatorSubstitution.  In addition to the inherited
+     * fields, a NumeratorSubstitution keeps track of a denominator, which
+     * is merely the base value of the rule that owns it.
+     */
+    NumeratorSubstitution(int pos,
+                          double denominator,
+                          NFRuleSet ruleSet,
+                          RuleBasedNumberFormat formatter,
+                          String description) {
+        super(pos, ruleSet, formatter, fixdesc(description));
+
+        // this substitution's behavior depends on the rule's base value
+        // Rather than keeping a backpointer to the rule, we copy its
+        // base value here
+        this.denominator = denominator;
+        
+        this.withZeros = description.endsWith("<<");
+    }
+
+    static String fixdesc(String description) {
+        return description.endsWith("<<") 
+            ? description.substring(0,description.length()-1) 
+            : description;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Tests two NumeratorSubstitutions for equality
+     * @param that The other NumeratorSubstitution
+     * @return true if the two objects are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            NumeratorSubstitution that2 = (NumeratorSubstitution)that;
+            return denominator == that2.denominator;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param position The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+        // perform a transformation on the number being formatted that
+        // is dependent on the type of substitution this is
+        //String s = toInsertInto.toString();
+        double numberToFormat = transformNumber(number);
+
+        if (withZeros && ruleSet != null) {
+            // if there are leading zeros in the decimal expansion then emit them
+            long nf = (long)numberToFormat;
+            int len = toInsertInto.length();
+            while ((nf *= 10) < denominator) {
+                toInsertInto.insert(position + pos, ' ');
+                ruleSet.format(0, toInsertInto, position + pos);
+            }
+            position += toInsertInto.length() - len;
+        }
+
+        // if the result is an integer, from here on out we work in integer
+        // space (saving time and memory and preserving accuracy)
+        if (numberToFormat == Math.floor(numberToFormat) && ruleSet != null) {
+            ruleSet.format((long)numberToFormat, toInsertInto, position + pos);
+
+            // if the result isn't an integer, then call either our rule set's
+            // format() method or our DecimalFormat's format() method to
+            // format the result
+        } else {
+            if (ruleSet != null) {
+                ruleSet.format(numberToFormat, toInsertInto, position + pos);
+            } else {
+                toInsertInto.insert(position + pos, numberFormat.format(numberToFormat));
+            }
+        }
+    }
+
+    /**
+     * Returns the number being formatted times the denominator.
+     * @param number The number being formatted
+     * @return number * denominator
+     */
+    public long transformNumber(long number) {
+        return Math.round(number * denominator);
+    }
+
+    /**
+     * Returns the number being formatted times the denominator.
+     * @param number The number being formatted
+     * @return number * denominator
+     */
+    public double transformNumber(double number) {
+        return Math.round(number * denominator);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Dispatches to the inherited version of this function, but makes
+     * sure that lenientParse is off.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // we don't have to do anything special to do the parsing here,
+        // but we have to turn lenient parsing off-- if we leave it on,
+        // it SERIOUSLY messes up the algorithm
+
+        // if withZeros is true, we need to count the zeros
+        // and use that to adjust the parse result
+        int zeroCount = 0;
+        if (withZeros) {
+            String workText = new String(text);
+            ParsePosition workPos = new ParsePosition(1);
+            //int digit;
+
+            while (workText.length() > 0 && workPos.getIndex() != 0) {
+                workPos.setIndex(0);
+                /*digit = */ruleSet.parse(workText, workPos, 1).intValue(); // parse zero or nothing at all
+                if (workPos.getIndex() == 0) {
+                    // we failed, either there were no more zeros, or the number was formatted with digits
+                    // either way, we're done
+                    break;
+                }
+
+                ++zeroCount;
+                parsePosition.setIndex(parsePosition.getIndex() + workPos.getIndex());
+                workText = workText.substring(workPos.getIndex());
+                while (workText.length() > 0 && workText.charAt(0) == ' ') {
+                    workText = workText.substring(1);
+                    parsePosition.setIndex(parsePosition.getIndex() + 1);
+                }
+            }
+
+            text = text.substring(parsePosition.getIndex()); // arrgh!
+            parsePosition.setIndex(0);
+        }
+
+        // we've parsed off the zeros, now let's parse the rest from our current position
+        Number result =  super.doParse(text, parsePosition, withZeros ? 1 : baseValue, upperBound, false);
+
+        if (withZeros) {
+            // any base value will do in this case.  is there a way to
+            // force this to not bother trying all the base values?
+            
+            // compute the 'effective' base and prescale the value down
+            long n = result.longValue();
+            long d = 1;
+            int pow = 0;
+            while (d <= n) {
+                d *= 10;
+                ++pow;
+            }
+            // now add the zeros
+            while (zeroCount > 0) {
+                d *= 10;
+                --zeroCount;
+            }
+            // d is now our true denominator
+            result = new Double(n/(double)d);
+        }
+
+        return result;
+    }
+
+    /**
+     * Divides the result of parsing the substitution by the partial
+     * parse result.
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The owning rule's base value
+     * @return newRuleValue / oldRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue / oldRuleValue;
+    }
+
+    /**
+     * Sets the uper bound down to this rule's base value
+     * @param oldUpperBound Ignored
+     * @return The base value of the rule owning this substitution
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return denominator;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a NumeratorSubstitution is &lt;
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// NullSubstitution
+//===================================================================
+
+/**
+ * A substitution which does nothing.  This class exists just to simplify
+ * the logic in some other routines so that they don't have to worry
+ * about how many substitutions a rule has.
+ */
+class NullSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a NullSubstitution.  This just delegates to the superclass
+     * constructor, but the only value we really care about is the position.
+     */
+    NullSubstitution(int pos,
+                     NFRuleSet ruleSet,
+                     RuleBasedNumberFormat formatter,
+                     String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Only checks for class equality
+     */
+    public boolean equals(Object that) {
+        return super.equals(that);
+    }
+
+    /**
+     * NullSubstitutions don't show up in the textual representation
+     * of a RuleBasedNumberFormat
+     */
+    public String toString() {
+        return "";
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Does nothing.
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int position) {
+    }
+
+    /**
+     * Does nothing.
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int position) {
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public long transformNumber(long number) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double transformNumber(double number) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the partial parse result unchanged
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        if (baseValue == (long)baseValue) {
+            return new Long((long)baseValue);
+        } else {
+            return new Double(baseValue);
+        }
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    public double calcUpperBound(double oldUpperBound) {
+        return 0;
+    }
+    ///CLOVER:ON
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns true (this _is_ a NullSubstitution).
+     * @return true
+     */
+    public boolean isNullSubstitution() {
+        return true;
+    }
+
+    /**
+     * Never called.
+     */
+    ///CLOVER:OFF
+    char tokenChar() {
+        return ' ';
+    }
+    ///CLOVER:ON
+}
+
diff --git a/src/com/ibm/icu/text/NameUnicodeTransliterator.java b/src/com/ibm/icu/text/NameUnicodeTransliterator.java
new file mode 100644
index 0000000..b567ced
--- /dev/null
+++ b/src/com/ibm/icu/text/NameUnicodeTransliterator.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 1996-2004, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UCharacterName;
+
+/**
+ * A transliterator that performs name to character mapping.
+ * @author Alan Liu
+ */
+class NameUnicodeTransliterator extends Transliterator {
+
+    char openDelimiter;
+    char closeDelimiter;
+
+    static final String _ID = "Name-Any";
+
+    static final String OPEN_PAT    = "\\N~{~";
+    static final char   OPEN_DELIM  = '\\'; // first char of OPEN_PAT
+    static final char   CLOSE_DELIM = '}';
+    static final char   SPACE       = ' ';
+
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new NameUnicodeTransliterator(null);
+            }
+        });
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public NameUnicodeTransliterator(UnicodeFilter filter) {
+        super(_ID, filter);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+
+        int maxLen = UCharacterName.getInstance().getMaxCharNameLength() + 1; // allow for temporary trailing space
+
+        StringBuffer name = new StringBuffer(maxLen);
+
+        // Get the legal character set
+        UnicodeSet legal = new UnicodeSet();
+        UCharacterName.getInstance().getCharNameCharacters(legal);
+
+        int cursor = offsets.start;
+        int limit = offsets.limit;
+
+        // Modes:
+        // 0 - looking for open delimiter
+        // 1 - after open delimiter
+        int mode = 0;
+        int openPos = -1; // open delim candidate pos
+        
+        int c;
+        while (cursor < limit) {
+            c = text.char32At(cursor);
+
+            switch (mode) {
+            case 0: // looking for open delimiter
+                if (c == OPEN_DELIM) { // quick check first
+                    openPos = cursor;
+                    int i = Utility.parsePattern(OPEN_PAT, text, cursor, limit);
+                    if (i >= 0 && i < limit) {
+                        mode = 1;
+                        name.setLength(0);
+                        cursor = i;
+                        continue; // *** reprocess char32At(cursor)
+                    }
+                }
+                break;
+
+            case 1: // after open delimiter
+                // Look for legal chars.  If \s+ is found, convert it
+                // to a single space.  If closeDelimiter is found, exit
+                // the loop.  If any other character is found, exit the
+                // loop.  If the limit is reached, exit the loop.
+                
+                // Convert \s+ => SPACE.  This assumes there are no
+                // runs of >1 space characters in names.
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    // Ignore leading whitespace
+                    if (name.length() > 0 &&
+                        name.charAt(name.length()-1) != SPACE) {
+                        name.append(SPACE);
+                        // If we are too long then abort.  maxLen includes
+                        // temporary trailing space, so use '>'.
+                        if (name.length() > maxLen) {
+                            mode = 0;
+                        }
+                    }
+                    break;
+                }
+
+                if (c == CLOSE_DELIM) {
+
+                    int len = name.length();
+                    
+                    // Delete trailing space, if any
+                    if (len > 0 &&
+                        name.charAt(len-1) == SPACE) {
+                        name.setLength(--len);
+                    }
+
+                    c = UCharacter.getCharFromExtendedName(name.toString());
+                    if (c != -1) {
+                        // Lookup succeeded
+
+                        // assert(UTF16.getCharCount(CLOSE_DELIM) == 1);
+                        cursor++; // advance over CLOSE_DELIM
+
+                        String str = UTF16.valueOf(c);
+                        text.replace(openPos, cursor, str);
+
+                        // Adjust indices for the change in the length of
+                        // the string.  Do not assume that str.length() ==
+                        // 1, in case of surrogates.
+                        int delta = cursor - openPos - str.length();
+                        cursor -= delta;
+                        limit -= delta;
+                        // assert(cursor == openPos + str.length());
+                    }
+                    // If the lookup failed, we leave things as-is and
+                    // still switch to mode 0 and continue.
+                    mode = 0;
+                    openPos = -1; // close off candidate
+                    continue; // *** reprocess char32At(cursor)
+                }
+
+                if (legal.contains(c)) {
+                    UTF16.append(name, c);
+                    // If we go past the longest possible name then abort.
+                    // maxLen includes temporary trailing space, so use '>='.
+                    if (name.length() >= maxLen) {
+                        mode = 0;
+                    }
+                }
+
+                // Invalid character
+                else {
+                    --cursor; // Backup and reprocess this character
+                    mode = 0;
+                }
+
+                break;
+            }
+
+            cursor += UTF16.getCharCount(c);
+        }
+
+        offsets.contextLimit += limit - offsets.limit;
+        offsets.limit = limit;
+        // In incremental mode, only advance the cursor up to the last
+        // open delimiter candidate.
+        offsets.start = (isIncremental && openPos >= 0) ? openPos : cursor;
+    }
+}
diff --git a/src/com/ibm/icu/text/NormalizationTransliterator.java b/src/com/ibm/icu/text/NormalizationTransliterator.java
new file mode 100644
index 0000000..f2f119c
--- /dev/null
+++ b/src/com/ibm/icu/text/NormalizationTransliterator.java
@@ -0,0 +1,635 @@
+/*
+**********************************************************************
+*   Copyright (C) 2001-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   06/08/01    aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+
+/**
+ * @author Alan Liu
+ */
+final class NormalizationTransliterator extends Transliterator {
+    
+    static final boolean DEBUG = false;
+
+    /**
+     * The normalization mode of this transliterator.
+     */
+    private Normalizer.Mode mode;
+
+    /**
+     * Normalization options for this transliterator.
+     */
+    private int options;
+
+    /**
+     * The set of "unsafe start" characters.  These are characters
+     * with cc==0 but which may interact with previous characters.  We
+     * effectively consider these to be cc!=0, for our purposes.
+     *
+     * From http://www.macchiato.com/utc/NFUnsafeStart-3.1.1dX.txt
+     * Generated in unicodetools, NFSkippable
+     *
+     */
+     
+    static final UnicodeSet[] UNSAFE_STARTS = new UnicodeSet[4];
+    static final UnicodeSet[] SKIPPABLES = new UnicodeSet[4];
+    
+    static final int
+        D = 0, C = 1, KD= 2, KC = 3;
+    
+    // Instance data, simply pointer to one of the sets below
+    final UnicodeSet unsafeStart;
+    final UnicodeSet skippable;
+    
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory("Any-NFC", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFC);
+            }
+        });
+        Transliterator.registerFactory("Any-NFD", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFD);
+            }
+        });
+        Transliterator.registerFactory("Any-NFKC", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFKC);
+            }
+        });
+        Transliterator.registerFactory("Any-NFKD", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return NormalizationTransliterator.
+                    getInstance(Normalizer.NFKD);
+            }
+        });
+        Transliterator.registerSpecialInverse("NFC", "NFD", true);
+        Transliterator.registerSpecialInverse("NFKC", "NFKD", true);
+    }
+
+    /**
+     * Factory method.
+     */
+    public static NormalizationTransliterator getInstance(Normalizer.Mode m,
+                                                          int opt) {
+        StringBuffer id = new StringBuffer("NF");
+        int choice = 0;
+        if(m==Normalizer.NFC){
+            id.append("C");
+            choice |= C;
+        }else if(m==Normalizer.NFKC){
+            id.append("KC");
+            choice |= KC;
+        }else if(m==Normalizer.NFD){
+            id.append("D");
+            choice |= D;
+        }else if(m==Normalizer.NFKD){
+            id.append("KD");
+            choice |= KD;
+        }
+        
+        /*if (m.compat()) {
+            id.append('K');
+            choice |= KD;
+        }
+        if (m.compose()) {
+            id.append('C');
+            choice |= C;
+        } else {
+            id.append('D');
+        }*/
+        return new NormalizationTransliterator(id.toString(), m, choice, opt);
+    }
+
+    /**
+     * Factory method.
+     */
+    public static NormalizationTransliterator getInstance(Normalizer.Mode m) {
+        return getInstance(m, 0);
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    private NormalizationTransliterator(String id, Normalizer.Mode m, int startChoice,
+                                        int opt) {
+        super(id, null);
+        mode = m;
+        options = opt;
+        if (UNSAFE_STARTS[startChoice] == null) {
+            initStatics(startChoice);
+        }
+        // TODO: use built-in properties data rather than hardcoded sets; see ICU4C
+        unsafeStart = UNSAFE_STARTS[startChoice];
+        skippable = SKIPPABLES[startChoice];
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int start = offsets.start;
+        int limit = offsets.limit;
+        if (start >= limit) return;
+
+        int overallDelta = 0;
+            
+        // Walk through the string looking for safe characters.
+        // Whenever you hit one normalize from the start of the last
+        // safe character up to just before the next safe character
+        // Also, if you hit the end and we are not in incremental mode,
+        // do to end.
+            
+        // TODO: fix for surrogates
+        // TODO: add QuickCheck, so we rarely convert OK stuff
+            
+        int lastSafe = start; // go back to start in any event
+        int cp;
+        for (int i = start+1; i < limit; i += UTF16.getCharCount(cp)) {
+            cp = text.char32At(i);
+            if (UCharacter.getCombiningClass(cp) == 0 && !unsafeStart.contains(cp)) {
+                int delta = convert(text, lastSafe, i, null);
+                i += delta;
+                limit += delta;
+                overallDelta += delta;
+                lastSafe = i;
+            }
+        }
+        if (!isIncremental) {
+            int delta = convert(text, lastSafe, limit, null);
+            overallDelta += delta;
+            lastSafe = limit + delta;
+        } else {
+            // We are incremental, so accept the last characters IF they turn into skippables
+            int delta = convert(text, lastSafe, limit, skippable);
+            if (delta != Integer.MIN_VALUE) {
+                overallDelta += delta;
+                lastSafe = limit + delta;
+            }
+        }
+        offsets.contextLimit += overallDelta;
+        offsets.limit += overallDelta;
+        offsets.start = lastSafe;
+    }
+    
+    /**
+     * Converts the range from lastSafe to limit.
+     * @param verify If non-null, check to see that all replacement characters are in it. If not,
+     * abort the conversion and return Integer.MIN_VALUE.
+     * @return return the delta in length (new - old), or Integer.MIN_VALUE if the verify aborted.
+     */
+    int convert(Replaceable text, int lastSafe, int limit, UnicodeSet verify) {        
+        //System.out.println("t: " + com.ibm.icu.impl.Utility.hex(text.toString()) + ", s: " + lastSafe + ", l: " + limit);
+
+        int len = limit - lastSafe;
+        String input = null;
+        synchronized (this) {
+            if (buffer.length < len) {
+                buffer = new char[len]; // rare, and we don't care if we grow too large
+            }
+            text.getChars(lastSafe, limit, buffer, 0);
+            input = new String(buffer, 0, len); // TODO: fix normalizer to take char[]
+        }
+        String output = Normalizer.normalize(input, mode, options);
+        
+        // verify OK, if specified
+        if (verify != null) {
+            boolean skip = !skippable.containsAll(output);
+            if (DEBUG) {
+                System.out.println((skip ? "  SKIP: " : "NOSKIP: ") 
+                    + com.ibm.icu.impl.Utility.escape(input) 
+                    + " => " + com.ibm.icu.impl.Utility.escape(output));
+            }
+            if (skip) return Integer.MIN_VALUE;
+        }
+        
+        if (output.equals(input)) {
+            return 0;
+        }
+        text.replace(lastSafe, limit, output);
+        return output.length() - len;
+    }
+    
+    private char buffer[] = new char[30];
+    
+    /**
+     * Initialize statics for the given mode.  This is slow, so we
+     * defer it.
+     */
+    private static final void initStatics(int startChoice) {
+        switch (startChoice) {
+        case D:
+          UNSAFE_STARTS[D] = new UnicodeSet("[\u0F73\u0F75\u0F81]", false);
+          SKIPPABLES[D] = new UnicodeSet(
+              "[^\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6\\u00D9-\\u00DD"
+            + "\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6\\u00F9-\\u00FD"
+            + "\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130\\u0134-\\u0137"
+            + "\\u0139-\\u013E\\u0143-\\u0148\\u014C-\\u0151\\u0154-\\u0165"
+            + "\\u0168-\\u017E\\u01A0\\u01A1\\u01AF\\u01B0\\u01CD-\\u01DC"
+            + "\\u01DE-\\u01E3\\u01E6-\\u01F0\\u01F4\\u01F5\\u01F8-\\u021B"
+            + "\\u021E\\u021F\\u0226-\\u0233\\u0300-\\u034E\\u0350-\\u036F"
+            + "\\u0374\\u037E\\u0385-\\u038A\\u038C\\u038E-\\u0390\\u03AA-"
+            + "\\u03B0\\u03CA-\\u03CE\\u03D3\\u03D4\\u0400\\u0401\\u0403\\u0407"
+            + "\\u040C-\\u040E\\u0419\\u0439\\u0450\\u0451\\u0453\\u0457\\u045C"
+            + "-\\u045E\\u0476\\u0477\\u0483-\\u0486\\u04C1\\u04C2\\u04D0-"
+            + "\\u04D3\\u04D6\\u04D7\\u04DA-\\u04DF\\u04E2-\\u04E7\\u04EA-"
+            + "\\u04F5\\u04F8\\u04F9\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4"
+            + "\\u05C5\\u05C7\\u0610-\\u0615\\u0622-\\u0626\\u064B-\\u065E"
+            + "\\u0670\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-\\u06E4"
+            + "\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-"
+            + "\\u07F3\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958"
+            + "-\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC\\u09DD\\u09DF\\u0A33"
+            + "\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C"
+            + "\\u0B48\\u0B4B-\\u0B4D\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCD"
+            + "\\u0C48\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CC0\\u0CC7\\u0CC8\\u0CCA"
+            + "\\u0CCB\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE"
+            + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8\\u0EB9\\u0EC8-\\u0ECB"
+            + "\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57"
+            + "\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A-\\u0F7D\\u0F80-"
+            + "\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+            + "\\u0FC6\\u1026\\u1037\\u1039\\u135F\\u1714\\u1734\\u17D2\\u17DD"
+            + "\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B34\\u1B44\\u1B6B-"
+            + "\\u1B73\\u1DC0-\\u1DCA\\u1DFE-\\u1E99\\u1E9B\\u1EA0-\\u1EF9"
+            + "\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D"
+            + "\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-"
+            + "\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC1-\\u1FC4\\u1FC6-\\u1FD3"
+            + "\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFD"
+            + "\\u2000\\u2001\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EF\\u2126"
+            + "\\u212A\\u212B\\u219A\\u219B\\u21AE\\u21CD-\\u21CF\\u2204\\u2209"
+            + "\\u220C\\u2224\\u2226\\u2241\\u2244\\u2247\\u2249\\u2260\\u2262"
+            + "\\u226D-\\u2271\\u2274\\u2275\\u2278\\u2279\\u2280\\u2281\\u2284"
+            + "\\u2285\\u2288\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3\\u22EA-"
+            + "\\u22ED\\u2329\\u232A\\u2ADC\\u302A-\\u302F\\u304C\\u304E\\u3050"
+            + "\\u3052\\u3054\\u3056\\u3058\\u305A\\u305C\\u305E\\u3060\\u3062"
+            + "\\u3065\\u3067\\u3069\\u3070\\u3071\\u3073\\u3074\\u3076\\u3077"
+            + "\\u3079\\u307A\\u307C\\u307D\\u3094\\u3099\\u309A\\u309E\\u30AC"
+            + "\\u30AE\\u30B0\\u30B2\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE"
+            + "\\u30C0\\u30C2\\u30C5\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4"
+            + "\\u30D6\\u30D7\\u30D9\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA"
+            + "\\u30FE\\uA806\\uAC00-\\uD7A3\\uF900-\\uFA0D\\uFA10\\uFA12"
+            + "\\uFA15-\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D"
+            + "\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB1D-\\uFB1F\\uFB2A-\\uFB36"
+            + "\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-"
+            + "\\uFB4E\\uFE20-\\uFE23\\U00010A0D\\U00010A0F\\U00010A38-\\U00010"
+            + "A3A\\U00010A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172"
+            + "\\U0001D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-"
+            + "\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0002"
+            + "F800-\\U0002FA1D]", false);
+          break;
+        case C:
+          UNSAFE_STARTS[C] = new UnicodeSet(
+              "[\\u09BE\\u09D7\\u0B3E\\u0B56\\u0B57\\u0BBE\\u0BD7\\u0CC2\\u0CD5"
+            + "\\u0CD6\\u0D3E\\u0D57\\u0DCF\\u0DDF\\u0F73\\u0F75\\u0F81\\u102E"
+            + "\\u1161-\\u1175\\u11A7-\\u11C2]", false);
+          SKIPPABLES[C] = new UnicodeSet(
+              "[^<->A-PR-Za-pr-z\\u00A8\\u00C0-\\u00CF\\u00D1-\\u00D6\\u00D8-"
+            + "\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD\\u00FF-"
+            + "\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121\\u0124"
+            + "\\u0125\\u0128-\\u012D\\u0130\\u0139\\u013A\\u013D\\u013E\\u0143"
+            + "\\u0144\\u0147\\u0148\\u014C-\\u0151\\u0154\\u0155\\u0158-"
+            + "\\u015D\\u0160\\u0161\\u0164\\u0165\\u0168-\\u0171\\u0174-"
+            + "\\u017F\\u01A0\\u01A1\\u01AF\\u01B0\\u01B7\\u01CD-\\u01DC\\u01DE"
+            + "-\\u01E1\\u01E6-\\u01EB\\u01F4\\u01F5\\u01F8-\\u01FB\\u0200-"
+            + "\\u021B\\u021E\\u021F\\u0226-\\u0233\\u0292\\u0300-\\u034E"
+            + "\\u0350-\\u036F\\u0374\\u037E\\u0387\\u0391\\u0395\\u0397\\u0399"
+            + "\\u039F\\u03A1\\u03A5\\u03A9\\u03AC\\u03AE\\u03B1\\u03B5\\u03B7"
+            + "\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-\\u03CB\\u03CE\\u03D2\\u0406"
+            + "\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E\\u0423\\u0427\\u042B"
+            + "\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A\\u043E\\u0443\\u0447"
+            + "\\u044B\\u044D\\u0456\\u0474\\u0475\\u0483-\\u0486\\u04D8\\u04D9"
+            + "\\u04E8\\u04E9\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5"
+            + "\\u05C7\\u0610-\\u0615\\u0622\\u0623\\u0627\\u0648\\u064A-"
+            + "\\u065E\\u0670\\u06C1\\u06D2\\u06D5-\\u06DC\\u06DF-\\u06E4"
+            + "\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-"
+            + "\\u07F3\\u0928\\u0930\\u0933\\u093C\\u094D\\u0951-\\u0954\\u0958"
+            + "-\\u095F\\u09BC\\u09BE\\u09C7\\u09CD\\u09D7\\u09DC\\u09DD\\u09DF"
+            + "\\u0A33\\u0A36\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD"
+            + "\\u0B3C\\u0B3E\\u0B47\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B92"
+            + "\\u0BBE\\u0BC6\\u0BC7\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55\\u0C56"
+            + "\\u0CBC\\u0CBF\\u0CC2\\u0CC6\\u0CCA\\u0CCD\\u0CD5\\u0CD6\\u0D3E"
+            + "\\u0D46\\u0D47\\u0D4D\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC\\u0DDF"
+            + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB8\\u0EB9\\u0EC8-\\u0ECB"
+            + "\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D\\u0F52\\u0F57"
+            + "\\u0F5C\\u0F69\\u0F71-\\u0F76\\u0F78\\u0F7A-\\u0F7D\\u0F80-"
+            + "\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+            + "\\u0FC6\\u1025\\u102E\\u1037\\u1039\\u1100-\\u1112\\u1161-"
+            + "\\u1175\\u11A8-\\u11C2\\u135F\\u1714\\u1734\\u17D2\\u17DD\\u18A9"
+            + "\\u1939-\\u193B\\u1A17\\u1A18\\u1B34\\u1B44\\u1B6B-\\u1B73"
+            + "\\u1DC0-\\u1DCA\\u1DFE-\\u1E03\\u1E0A-\\u1E0F\\u1E12-\\u1E1B"
+            + "\\u1E20-\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-\\u1E7D"
+            + "\\u1E80-\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E99\\u1EA0-\\u1EF3"
+            + "\\u1EF6-\\u1EF9\\u1F00-\\u1F11\\u1F18\\u1F19\\u1F20-\\u1F31"
+            + "\\u1F38\\u1F39\\u1F40\\u1F41\\u1F48\\u1F49\\u1F50\\u1F51\\u1F59"
+            + "\\u1F60-\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-\\u1F7D"
+            + "\\u1F80\\u1F81\\u1F88\\u1F89\\u1F90\\u1F91\\u1F98\\u1F99\\u1FA0"
+            + "\\u1FA1\\u1FA8\\u1FA9\\u1FB3\\u1FB6\\u1FBB\\u1FBC\\u1FBE\\u1FBF"
+            + "\\u1FC3\\u1FC6\\u1FC9\\u1FCB\\u1FCC\\u1FD3\\u1FDB\\u1FE3\\u1FEB"
+            + "\\u1FEE\\u1FEF\\u1FF3\\u1FF6\\u1FF9\\u1FFB-\\u1FFE\\u2000\\u2001"
+            + "\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EF\\u2126\\u212A\\u212B"
+            + "\\u2190\\u2192\\u2194\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B"
+            + "\\u2223\\u2225\\u223C\\u2243\\u2245\\u2248\\u224D\\u2261\\u2264"
+            + "\\u2265\\u2272\\u2273\\u2276\\u2277\\u227A-\\u227D\\u2282\\u2283"
+            + "\\u2286\\u2287\\u2291\\u2292\\u22A2\\u22A8\\u22A9\\u22AB\\u22B2-"
+            + "\\u22B5\\u2329\\u232A\\u2ADC\\u302A-\\u302F\\u3046\\u304B\\u304D"
+            + "\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059\\u305B\\u305D\\u305F"
+            + "\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072\\u3075\\u3078\\u307B"
+            + "\\u3099\\u309A\\u309D\\u30A6\\u30AB\\u30AD\\u30AF\\u30B1\\u30B3"
+            + "\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF\\u30C1\\u30C4\\u30C6"
+            + "\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB\\u30EF-\\u30F2\\u30FD"
+            + "\\uA806\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4"
+            + "\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0"
+            + "\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC"
+            + "\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8"
+            + "\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4"
+            + "\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0"
+            + "\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC"
+            + "\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8"
+            + "\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4"
+            + "\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0"
+            + "\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C"
+            + "\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798"
+            + "\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894"
+            + "\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990"
+            + "\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C"
+            + "\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88"
+            + "\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84"
+            + "\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80"
+            + "\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C"
+            + "\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78"
+            + "\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074"
+            + "\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170"
+            + "\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C"
+            + "\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368"
+            + "\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464"
+            + "\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560"
+            + "\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C"
+            + "\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758"
+            + "\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854"
+            + "\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950"
+            + "\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C"
+            + "\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48"
+            + "\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44"
+            + "\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40"
+            + "\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C"
+            + "\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38"
+            + "\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034"
+            + "\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130"
+            + "\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C"
+            + "\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328"
+            + "\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424"
+            + "\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520"
+            + "\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C"
+            + "\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718"
+            + "\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15"
+            + "-\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-"
+            + "\\uFA6A\\uFA70-\\uFAD9\\uFB1D-\\uFB1F\\uFB2A-\\uFB36\\uFB38-"
+            + "\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4E\\uFE20"
+            + "-\\uFE23\\U00010A0D\\U00010A0F\\U00010A38-\\U00010A3A\\U00010A3F"
+            + "\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001D17B-"
+            + "\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001"
+            + "D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0002F800-\\U0002FA1D]", false);
+          break;
+        case KD:
+          UNSAFE_STARTS[KD] = new UnicodeSet("[\u0F73\u0F75\u0F81\uFF9E-\uFF9F]", false);
+          SKIPPABLES[KD] = new UnicodeSet(
+              "[^\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5\\u00B8-\\u00BA"
+            + "\\u00BC-\\u00BE\\u00C0-\\u00C5\\u00C7-\\u00CF\\u00D1-\\u00D6"
+            + "\\u00D9-\\u00DD\\u00E0-\\u00E5\\u00E7-\\u00EF\\u00F1-\\u00F6"
+            + "\\u00F9-\\u00FD\\u00FF-\\u010F\\u0112-\\u0125\\u0128-\\u0130"
+            + "\\u0132-\\u0137\\u0139-\\u0140\\u0143-\\u0149\\u014C-\\u0151"
+            + "\\u0154-\\u0165\\u0168-\\u017F\\u01A0\\u01A1\\u01AF\\u01B0"
+            + "\\u01C4-\\u01DC\\u01DE-\\u01E3\\u01E6-\\u01F5\\u01F8-\\u021B"
+            + "\\u021E\\u021F\\u0226-\\u0233\\u02B0-\\u02B8\\u02D8-\\u02DD"
+            + "\\u02E0-\\u02E4\\u0300-\\u034E\\u0350-\\u036F\\u0374\\u037A"
+            + "\\u037E\\u0384-\\u038A\\u038C\\u038E-\\u0390\\u03AA-\\u03B0"
+            + "\\u03CA-\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4\\u03F5"
+            + "\\u03F9\\u0400\\u0401\\u0403\\u0407\\u040C-\\u040E\\u0419\\u0439"
+            + "\\u0450\\u0451\\u0453\\u0457\\u045C-\\u045E\\u0476\\u0477\\u0483"
+            + "-\\u0486\\u04C1\\u04C2\\u04D0-\\u04D3\\u04D6\\u04D7\\u04DA-"
+            + "\\u04DF\\u04E2-\\u04E7\\u04EA-\\u04F5\\u04F8\\u04F9\\u0587"
+            + "\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610"
+            + "-\\u0615\\u0622-\\u0626\\u064B-\\u065E\\u0670\\u0675-\\u0678"
+            + "\\u06C0\\u06C2\\u06D3\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7"
+            + "\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07EB-\\u07F3"
+            + "\\u0929\\u0931\\u0934\\u093C\\u094D\\u0951-\\u0954\\u0958-"
+            + "\\u095F\\u09BC\\u09CB-\\u09CD\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36"
+            + "\\u0A3C\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B48"
+            + "\\u0B4B-\\u0B4D\\u0B5C\\u0B5D\\u0B94\\u0BCA-\\u0BCD\\u0C48"
+            + "\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CC0\\u0CC7\\u0CC8\\u0CCA\\u0CCB"
+            + "\\u0CCD\\u0D4A-\\u0D4D\\u0DCA\\u0DDA\\u0DDC-\\u0DDE\\u0E33"
+            + "\\u0E38-\\u0E3A\\u0E48-\\u0E4B\\u0EB3\\u0EB8\\u0EB9\\u0EC8-"
+            + "\\u0ECB\\u0EDC\\u0EDD\\u0F0C\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39"
+            + "\\u0F43\\u0F4D\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F7D\\u0F80"
+            + "-\\u0F84\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9"
+            + "\\u0FC6\\u1026\\u1037\\u1039\\u10FC\\u135F\\u1714\\u1734\\u17D2"
+            + "\\u17DD\\u18A9\\u1939-\\u193B\\u1A17\\u1A18\\u1B34\\u1B44\\u1B6B"
+            + "-\\u1B73\\u1D2C-\\u1D2E\\u1D30-\\u1D3A\\u1D3C-\\u1D4D\\u1D4F-"
+            + "\\u1D6A\\u1D78\\u1D9B-\\u1DCA\\u1DFE-\\u1E9B\\u1EA0-\\u1EF9"
+            + "\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D"
+            + "\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-"
+            + "\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-"
+            + "\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u2000-\\u200A\\u2011"
+            + "\\u2017\\u2024-\\u2026\\u202F\\u2033\\u2034\\u2036\\u2037\\u203C"
+            + "\\u203E\\u2047-\\u2049\\u2057\\u205F\\u2070\\u2071\\u2074-"
+            + "\\u208E\\u2090-\\u2094\\u20A8\\u20D0-\\u20DC\\u20E1\\u20E5-"
+            + "\\u20EF\\u2100-\\u2103\\u2105-\\u2107\\u2109-\\u2113\\u2115"
+            + "\\u2116\\u2119-\\u211D\\u2120-\\u2122\\u2124\\u2126\\u2128"
+            + "\\u212A-\\u212D\\u212F-\\u2131\\u2133-\\u2139\\u213B-\\u2140"
+            + "\\u2145-\\u2149\\u2153-\\u217F\\u219A\\u219B\\u21AE\\u21CD-"
+            + "\\u21CF\\u2204\\u2209\\u220C\\u2224\\u2226\\u222C\\u222D\\u222F"
+            + "\\u2230\\u2241\\u2244\\u2247\\u2249\\u2260\\u2262\\u226D-\\u2271"
+            + "\\u2274\\u2275\\u2278\\u2279\\u2280\\u2281\\u2284\\u2285\\u2288"
+            + "\\u2289\\u22AC-\\u22AF\\u22E0-\\u22E3\\u22EA-\\u22ED\\u2329"
+            + "\\u232A\\u2460-\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC\\u2D6F"
+            + "\\u2E9F\\u2EF3\\u2F00-\\u2FD5\\u3000\\u302A-\\u302F\\u3036"
+            + "\\u3038-\\u303A\\u304C\\u304E\\u3050\\u3052\\u3054\\u3056\\u3058"
+            + "\\u305A\\u305C\\u305E\\u3060\\u3062\\u3065\\u3067\\u3069\\u3070"
+            + "\\u3071\\u3073\\u3074\\u3076\\u3077\\u3079\\u307A\\u307C\\u307D"
+            + "\\u3094\\u3099-\\u309C\\u309E\\u309F\\u30AC\\u30AE\\u30B0\\u30B2"
+            + "\\u30B4\\u30B6\\u30B8\\u30BA\\u30BC\\u30BE\\u30C0\\u30C2\\u30C5"
+            + "\\u30C7\\u30C9\\u30D0\\u30D1\\u30D3\\u30D4\\u30D6\\u30D7\\u30D9"
+            + "\\u30DA\\u30DC\\u30DD\\u30F4\\u30F7-\\u30FA\\u30FE\\u30FF\\u3131"
+            + "-\\u318E\\u3192-\\u319F\\u3200-\\u321E\\u3220-\\u3243\\u3250-"
+            + "\\u327E\\u3280-\\u32FE\\u3300-\\u33FF\\uA806\\uAC00-\\uD7A3"
+            + "\\uF900-\\uFA0D\\uFA10\\uFA12\\uFA15-\\uFA1E\\uFA20\\uFA22"
+            + "\\uFA25\\uFA26\\uFA2A-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9"
+            + "\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB36\\uFB38-\\uFB3C"
+            + "\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-"
+            + "\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE10-"
+            + "\\uFE19\\uFE20-\\uFE23\\uFE30-\\uFE44\\uFE47-\\uFE52\\uFE54-"
+            + "\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC"
+            + "\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7"
+            + "\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\U00010A0D\\U00010"
+            + "A0F\\U00010A38-\\U00010A3A\\U00010A3F\\U0001D15E-\\U0001D169"
+            + "\\U0001D16D-\\U0001D172\\U0001D17B-\\U0001D182\\U0001D185-"
+            + "\\U0001D18B\\U0001D1AA-\\U0001D1AD\\U0001D1BB-\\U0001D1C0\\U0001"
+            + "D242-\\U0001D244\\U0001D400-\\U0001D454\\U0001D456-\\U0001D49C"
+            + "\\U0001D49E\\U0001D49F\\U0001D4A2\\U0001D4A5\\U0001D4A6\\U0001D4"
+            + "A9-\\U0001D4AC\\U0001D4AE-\\U0001D4B9\\U0001D4BB\\U0001D4BD-"
+            + "\\U0001D4C3\\U0001D4C5-\\U0001D505\\U0001D507-\\U0001D50A\\U0001"
+            + "D50D-\\U0001D514\\U0001D516-\\U0001D51C\\U0001D51E-\\U0001D539"
+            + "\\U0001D53B-\\U0001D53E\\U0001D540-\\U0001D544\\U0001D546\\U0001"
+            + "D54A-\\U0001D550\\U0001D552-\\U0001D6A5\\U0001D6A8-\\U0001D7CB"
+            + "\\U0001D7CE-\\U0001D7FF\\U0002F800-\\U0002FA1D]", false);
+          break;
+        case KC:
+          UNSAFE_STARTS[KC] = new UnicodeSet(
+              "[\\u09BE\\u09D7\\u0B3E\\u0B56\\u0B57\\u0BBE\\u0BD7\\u0CC2\\u0CD5"
+            + "\\u0CD6\\u0D3E\\u0D57\\u0DCF\\u0DDF\\u0F73\\u0F75\\u0F81\\u102E"
+            + "\\u1161-\\u1175\\u11A7-\\u11C2\\u3133\\u3135\\u3136\\u313A-"
+            + "\\u313F\\u314F-\\u3163\\uFF9E\\uFF9F\\uFFA3\\uFFA5\\uFFA6\\uFFAA"
+            + "-\\uFFAF\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-"
+            + "\\uFFDC]", false);
+          SKIPPABLES[KC] = new UnicodeSet(
+              "[^<->A-PR-Za-pr-z\\u00A0\\u00A8\\u00AA\\u00AF\\u00B2-\\u00B5"
+            + "\\u00B8-\\u00BA\\u00BC-\\u00BE\\u00C0-\\u00CF\\u00D1-\\u00D6"
+            + "\\u00D8-\\u00DD\\u00E0-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD"
+            + "\\u00FF-\\u0103\\u0106-\\u010F\\u0112-\\u0117\\u011A-\\u0121"
+            + "\\u0124\\u0125\\u0128-\\u012D\\u0130\\u0132\\u0133\\u0139\\u013A"
+            + "\\u013D-\\u0140\\u0143\\u0144\\u0147-\\u0149\\u014C-\\u0151"
+            + "\\u0154\\u0155\\u0158-\\u015D\\u0160\\u0161\\u0164\\u0165\\u0168"
+            + "-\\u0171\\u0174-\\u017F\\u01A0\\u01A1\\u01AF\\u01B0\\u01B7"
+            + "\\u01C4-\\u01DC\\u01DE-\\u01E1\\u01E6-\\u01EB\\u01F1-\\u01F5"
+            + "\\u01F8-\\u01FB\\u0200-\\u021B\\u021E\\u021F\\u0226-\\u0233"
+            + "\\u0292\\u02B0-\\u02B8\\u02D8-\\u02DD\\u02E0-\\u02E4\\u0300-"
+            + "\\u034E\\u0350-\\u036F\\u0374\\u037A\\u037E\\u0384\\u0385\\u0387"
+            + "\\u0391\\u0395\\u0397\\u0399\\u039F\\u03A1\\u03A5\\u03A9\\u03AC"
+            + "\\u03AE\\u03B1\\u03B5\\u03B7\\u03B9\\u03BF\\u03C1\\u03C5\\u03C9-"
+            + "\\u03CB\\u03CE\\u03D0-\\u03D6\\u03F0-\\u03F2\\u03F4\\u03F5"
+            + "\\u03F9\\u0406\\u0410\\u0413\\u0415-\\u0418\\u041A\\u041E\\u0423"
+            + "\\u0427\\u042B\\u042D\\u0430\\u0433\\u0435-\\u0438\\u043A\\u043E"
+            + "\\u0443\\u0447\\u044B\\u044D\\u0456\\u0474\\u0475\\u0483-\\u0486"
+            + "\\u04D8\\u04D9\\u04E8\\u04E9\\u0587\\u0591-\\u05BD\\u05BF\\u05C1"
+            + "\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u0615\\u0622\\u0623\\u0627"
+            + "\\u0648\\u064A-\\u065E\\u0670\\u0675-\\u0678\\u06C1\\u06D2"
+            + "\\u06D5-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED"
+            + "\\u0711\\u0730-\\u074A\\u07EB-\\u07F3\\u0928\\u0930\\u0933"
+            + "\\u093C\\u094D\\u0951-\\u0954\\u0958-\\u095F\\u09BC\\u09BE"
+            + "\\u09C7\\u09CD\\u09D7\\u09DC\\u09DD\\u09DF\\u0A33\\u0A36\\u0A3C"
+            + "\\u0A4D\\u0A59-\\u0A5B\\u0A5E\\u0ABC\\u0ACD\\u0B3C\\u0B3E\\u0B47"
+            + "\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B92\\u0BBE\\u0BC6\\u0BC7"
+            + "\\u0BCD\\u0BD7\\u0C46\\u0C4D\\u0C55\\u0C56\\u0CBC\\u0CBF\\u0CC2"
+            + "\\u0CC6\\u0CCA\\u0CCD\\u0CD5\\u0CD6\\u0D3E\\u0D46\\u0D47\\u0D4D"
+            + "\\u0D57\\u0DCA\\u0DCF\\u0DD9\\u0DDC\\u0DDF\\u0E33\\u0E38-\\u0E3A"
+            + "\\u0E48-\\u0E4B\\u0EB3\\u0EB8\\u0EB9\\u0EC8-\\u0ECB\\u0EDC"
+            + "\\u0EDD\\u0F0C\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F43\\u0F4D"
+            + "\\u0F52\\u0F57\\u0F5C\\u0F69\\u0F71-\\u0F7D\\u0F80-\\u0F84"
+            + "\\u0F86\\u0F87\\u0F93\\u0F9D\\u0FA2\\u0FA7\\u0FAC\\u0FB9\\u0FC6"
+            + "\\u1025\\u102E\\u1037\\u1039\\u10FC\\u1100-\\u1112\\u1161-"
+            + "\\u1175\\u11A8-\\u11C2\\u135F\\u1714\\u1734\\u17D2\\u17DD\\u18A9"
+            + "\\u1939-\\u193B\\u1A17\\u1A18\\u1B34\\u1B44\\u1B6B-\\u1B73"
+            + "\\u1D2C-\\u1D2E\\u1D30-\\u1D3A\\u1D3C-\\u1D4D\\u1D4F-\\u1D6A"
+            + "\\u1D78\\u1D9B-\\u1DCA\\u1DFE-\\u1E03\\u1E0A-\\u1E0F\\u1E12-"
+            + "\\u1E1B\\u1E20-\\u1E27\\u1E2A-\\u1E41\\u1E44-\\u1E53\\u1E58-"
+            + "\\u1E7D\\u1E80-\\u1E87\\u1E8E-\\u1E91\\u1E96-\\u1E9B\\u1EA0-"
+            + "\\u1EF3\\u1EF6-\\u1EF9\\u1F00-\\u1F11\\u1F18\\u1F19\\u1F20-"
+            + "\\u1F31\\u1F38\\u1F39\\u1F40\\u1F41\\u1F48\\u1F49\\u1F50\\u1F51"
+            + "\\u1F59\\u1F60-\\u1F71\\u1F73-\\u1F75\\u1F77\\u1F79\\u1F7B-"
+            + "\\u1F7D\\u1F80\\u1F81\\u1F88\\u1F89\\u1F90\\u1F91\\u1F98\\u1F99"
+            + "\\u1FA0\\u1FA1\\u1FA8\\u1FA9\\u1FB3\\u1FB6\\u1FBB-\\u1FC1\\u1FC3"
+            + "\\u1FC6\\u1FC9\\u1FCB-\\u1FCF\\u1FD3\\u1FDB\\u1FDD-\\u1FDF"
+            + "\\u1FE3\\u1FEB\\u1FED-\\u1FEF\\u1FF3\\u1FF6\\u1FF9\\u1FFB-"
+            + "\\u1FFE\\u2000-\\u200A\\u2011\\u2017\\u2024-\\u2026\\u202F"
+            + "\\u2033\\u2034\\u2036\\u2037\\u203C\\u203E\\u2047-\\u2049\\u2057"
+            + "\\u205F\\u2070\\u2071\\u2074-\\u208E\\u2090-\\u2094\\u20A8"
+            + "\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20EF\\u2100-\\u2103\\u2105-"
+            + "\\u2107\\u2109-\\u2113\\u2115\\u2116\\u2119-\\u211D\\u2120-"
+            + "\\u2122\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2131"
+            + "\\u2133-\\u2139\\u213B-\\u2140\\u2145-\\u2149\\u2153-\\u217F"
+            + "\\u2190\\u2192\\u2194\\u21D0\\u21D2\\u21D4\\u2203\\u2208\\u220B"
+            + "\\u2223\\u2225\\u222C\\u222D\\u222F\\u2230\\u223C\\u2243\\u2245"
+            + "\\u2248\\u224D\\u2261\\u2264\\u2265\\u2272\\u2273\\u2276\\u2277"
+            + "\\u227A-\\u227D\\u2282\\u2283\\u2286\\u2287\\u2291\\u2292\\u22A2"
+            + "\\u22A8\\u22A9\\u22AB\\u22B2-\\u22B5\\u2329\\u232A\\u2460-"
+            + "\\u24EA\\u2A0C\\u2A74-\\u2A76\\u2ADC\\u2D6F\\u2E9F\\u2EF3\\u2F00"
+            + "-\\u2FD5\\u3000\\u302A-\\u302F\\u3036\\u3038-\\u303A\\u3046"
+            + "\\u304B\\u304D\\u304F\\u3051\\u3053\\u3055\\u3057\\u3059\\u305B"
+            + "\\u305D\\u305F\\u3061\\u3064\\u3066\\u3068\\u306F\\u3072\\u3075"
+            + "\\u3078\\u307B\\u3099-\\u309D\\u309F\\u30A6\\u30AB\\u30AD\\u30AF"
+            + "\\u30B1\\u30B3\\u30B5\\u30B7\\u30B9\\u30BB\\u30BD\\u30BF\\u30C1"
+            + "\\u30C4\\u30C6\\u30C8\\u30CF\\u30D2\\u30D5\\u30D8\\u30DB\\u30EF-"
+            + "\\u30F2\\u30FD\\u30FF\\u3131-\\u318E\\u3192-\\u319F\\u3200-"
+            + "\\u321E\\u3220-\\u3243\\u3250-\\u327E\\u3280-\\u32FE\\u3300-"
+            + "\\u33FF\\uA806\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8"
+            + "\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4"
+            + "\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0"
+            + "\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C"
+            + "\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098"
+            + "\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194"
+            + "\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290"
+            + "\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C"
+            + "\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488"
+            + "\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584"
+            + "\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680"
+            + "\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C"
+            + "\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878"
+            + "\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974"
+            + "\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70"
+            + "\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C"
+            + "\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68"
+            + "\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64"
+            + "\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60"
+            + "\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C"
+            + "\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058"
+            + "\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154"
+            + "\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250"
+            + "\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C"
+            + "\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448"
+            + "\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544"
+            + "\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640"
+            + "\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C"
+            + "\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838"
+            + "\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934"
+            + "\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30"
+            + "\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C"
+            + "\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28"
+            + "\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24"
+            + "\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20"
+            + "\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C"
+            + "\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018"
+            + "\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114"
+            + "\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210"
+            + "\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C"
+            + "\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408"
+            + "\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504"
+            + "\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600"
+            + "\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC"
+            + "\\uD718\\uD734\\uD750\\uD76C\\uD788\\uF900-\\uFA0D\\uFA10\\uFA12"
+            + "\\uFA15-\\uFA1E\\uFA20\\uFA22\\uFA25\\uFA26\\uFA2A-\\uFA2D"
+            + "\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17"
+            + "\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43"
+            + "\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-"
+            + "\\uFDC7\\uFDF0-\\uFDFC\\uFE10-\\uFE19\\uFE20-\\uFE23\\uFE30-"
+            + "\\uFE44\\uFE47-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-"
+            + "\\uFE72\\uFE74\\uFE76-\\uFEFC\\uFF01-\\uFFBE\\uFFC2-\\uFFC7"
+            + "\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6"
+            + "\\uFFE8-\\uFFEE\\U00010A0D\\U00010A0F\\U00010A38-\\U00010A3A"
+            + "\\U00010A3F\\U0001D15E-\\U0001D169\\U0001D16D-\\U0001D172\\U0001"
+            + "D17B-\\U0001D182\\U0001D185-\\U0001D18B\\U0001D1AA-\\U0001D1AD"
+            + "\\U0001D1BB-\\U0001D1C0\\U0001D242-\\U0001D244\\U0001D400-"
+            + "\\U0001D454\\U0001D456-\\U0001D49C\\U0001D49E\\U0001D49F\\U0001D"
+            + "4A2\\U0001D4A5\\U0001D4A6\\U0001D4A9-\\U0001D4AC\\U0001D4AE-"
+            + "\\U0001D4B9\\U0001D4BB\\U0001D4BD-\\U0001D4C3\\U0001D4C5-\\U0001"
+            + "D505\\U0001D507-\\U0001D50A\\U0001D50D-\\U0001D514\\U0001D516-"
+            + "\\U0001D51C\\U0001D51E-\\U0001D539\\U0001D53B-\\U0001D53E\\U0001"
+            + "D540-\\U0001D544\\U0001D546\\U0001D54A-\\U0001D550\\U0001D552-"
+            + "\\U0001D6A5\\U0001D6A8-\\U0001D7CB\\U0001D7CE-\\U0001D7FF\\U0002"
+            + "F800-\\U0002FA1D]", false);
+          break;
+        }
+    }    
+}
diff --git a/src/com/ibm/icu/text/Normalizer.java b/src/com/ibm/icu/text/Normalizer.java
new file mode 100644
index 0000000..2322ee3
--- /dev/null
+++ b/src/com/ibm/icu/text/Normalizer.java
@@ -0,0 +1,2815 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.VersionInfo;
+
+import java.text.CharacterIterator;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * Unicode Normalization 
+ *
+ * <h2>Unicode normalization API</h2>
+ *
+ * <code>normalize</code> transforms Unicode text into an equivalent composed or
+ * decomposed form, allowing for easier sorting and searching of text.
+ * <code>normalize</code> supports the standard normalization forms described in
+ * <a href="http://www.unicode.org/unicode/reports/tr15/" target="unicode">
+ * Unicode Standard Annex #15 &mdash; Unicode Normalization Forms</a>.
+ *
+ * Characters with accents or other adornments can be encoded in
+ * several different ways in Unicode.  For example, take the character A-acute.
+ * In Unicode, this can be encoded as a single character (the
+ * "composed" form):
+ *
+ * <p>
+ *      00C1    LATIN CAPITAL LETTER A WITH ACUTE
+ * </p>
+ *
+ * or as two separate characters (the "decomposed" form):
+ *
+ * <p>
+ *      0041    LATIN CAPITAL LETTER A
+ *      0301    COMBINING ACUTE ACCENT
+ * </p>
+ *
+ * To a user of your program, however, both of these sequences should be
+ * treated as the same "user-level" character "A with acute accent".  When you 
+ * are searching or comparing text, you must ensure that these two sequences are 
+ * treated equivalently.  In addition, you must handle characters with more than
+ * one accent.  Sometimes the order of a character's combining accents is
+ * significant, while in other cases accent sequences in different orders are
+ * really equivalent.
+ *
+ * Similarly, the string "ffi" can be encoded as three separate letters:
+ *
+ * <p>
+ *      0066    LATIN SMALL LETTER F
+ *      0066    LATIN SMALL LETTER F
+ *      0069    LATIN SMALL LETTER I
+ * <\p>
+ *
+ * or as the single character
+ *
+ * <p>
+ *      FB03    LATIN SMALL LIGATURE FFI
+ * <\p>
+ *
+ * The ffi ligature is not a distinct semantic character, and strictly speaking
+ * it shouldn't be in Unicode at all, but it was included for compatibility
+ * with existing character sets that already provided it.  The Unicode standard
+ * identifies such characters by giving them "compatibility" decompositions
+ * into the corresponding semantic characters.  When sorting and searching, you
+ * will often want to use these mappings.
+ *
+ * <code>normalize</code> helps solve these problems by transforming text into 
+ * the canonical composed and decomposed forms as shown in the first example 
+ * above. In addition, you can have it perform compatibility decompositions so 
+ * that you can treat compatibility characters the same as their equivalents.
+ * Finally, <code>normalize</code> rearranges accents into the proper canonical
+ * order, so that you do not have to worry about accent rearrangement on your
+ * own.
+ *
+ * Form FCD, "Fast C or D", is also designed for collation.
+ * It allows to work on strings that are not necessarily normalized
+ * with an algorithm (like in collation) that works under "canonical closure", 
+ * i.e., it treats precomposed characters and their decomposed equivalents the 
+ * same.
+ *
+ * It is not a normalization form because it does not provide for uniqueness of 
+ * representation. Multiple strings may be canonically equivalent (their NFDs 
+ * are identical) and may all conform to FCD without being identical themselves.
+ *
+ * The form is defined such that the "raw decomposition", the recursive 
+ * canonical decomposition of each character, results in a string that is 
+ * canonically ordered. This means that precomposed characters are allowed for 
+ * as long as their decompositions do not need canonical reordering.
+ *
+ * Its advantage for a process like collation is that all NFD and most NFC texts
+ * - and many unnormalized texts - already conform to FCD and do not need to be 
+ * normalized (NFD) for such a process. The FCD quick check will return YES for 
+ * most strings in practice.
+ *
+ * normalize(FCD) may be implemented with NFD.
+ *
+ * For more details on FCD see the collation design document:
+ * http://source.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm
+ *
+ * ICU collation performs either NFD or FCD normalization automatically if 
+ * normalization is turned on for the collator object. Beyond collation and 
+ * string search, normalized strings may be useful for string equivalence 
+ * comparisons, transliteration/transcription, unique representations, etc.
+ *
+ * The W3C generally recommends to exchange texts in NFC.
+ * Note also that most legacy character encodings use only precomposed forms and
+ * often do not encode any combining marks by themselves. For conversion to such
+ * character encodings the Unicode text needs to be normalized to NFC.
+ * For more usage examples, see the Unicode Standard Annex.
+ * @stable ICU 2.8
+ */
+
+public final class Normalizer implements Cloneable {
+    
+    //-------------------------------------------------------------------------
+    // Private data
+    //-------------------------------------------------------------------------  
+    private char[] buffer = new char[100];
+    private int bufferStart = 0;
+    private int bufferPos   = 0;
+    private int bufferLimit = 0;
+    
+    // This tells us what the bits in the "mode" object mean.
+    private static final int COMPAT_BIT = 1;
+    private static final int DECOMP_BIT = 2;
+    private static final int COMPOSE_BIT = 4;
+    
+    // The input text and our position in it
+    private UCharacterIterator  text;
+    private Mode                mode = NFC;
+    private int                 options = 0;
+    private int                 currentIndex;
+    private int                 nextIndex;
+    
+    /**
+     * Options bit set value to select Unicode 3.2 normalization
+     * (except NormalizationCorrections).
+     * At most one Unicode version can be selected at a time.
+     * @stable ICU 2.6
+     */
+    public static final int UNICODE_3_2=0x20;
+
+    /**
+     * Constant indicating that the end of the iteration has been reached.
+     * This is guaranteed to have the same value as {@link UCharacterIterator#DONE}.
+     * @stable ICU 2.8
+     */
+    public static final int DONE = UCharacterIterator.DONE;
+
+    /**
+     * Constants for normalization modes.
+     * @stable ICU 2.8
+     */
+    public static class Mode {
+        //private int modeValue;
+        private Mode(int value) {
+            //modeValue = value;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.6
+         */
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            int srcLen = (srcLimit - srcStart);
+            int destLen = (destLimit - destStart);
+            if( srcLen > destLen ) {
+                return srcLen;
+            }
+            System.arraycopy(src,srcStart,dest,destStart,srcLen);
+            return srcLen;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.6
+         */
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit,
+                                int options) {
+            return normalize(   src, srcStart, srcLimit,
+                                dest,destStart,destLimit,
+                                NormalizerImpl.getNX(options)
+                                );
+        }
+        
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.6
+         */
+        protected String normalize(String src, int options) {
+            return src;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected int getMinC() {
+            return -1;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected int getMask() {
+            return -1;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected IsPrevBoundary getPrevBoundary() {
+            return null;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected IsNextBoundary getNextBoundary() {
+            return null;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.6
+         */
+        protected QuickCheckResult quickCheck(char[] src,int start, int limit, 
+                                              boolean allowMaybe,UnicodeSet nx) {
+            if(allowMaybe) {
+                return MAYBE;
+            }
+            return NO;
+        }
+
+        /**
+         * This method is used for method dispatch
+         * @stable ICU 2.8
+         */
+        protected boolean isNFSkippable(int c) {
+            return true;
+        }
+    }
+    
+    /** 
+     * No decomposition/composition.  
+     * @stable ICU 2.8
+     */
+    public static final Mode NONE = new Mode(COMPAT_BIT);
+
+    /** 
+     * Canonical decomposition.  
+     * @stable ICU 2.8
+     */
+    public static final Mode NFD = new NFDMode(DECOMP_BIT);
+    
+    private static final class NFDMode extends Mode {
+        private NFDMode(int value) {
+            super(value);
+        }
+
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            int[] trailCC = new int[1];
+            return NormalizerImpl.decompose(src,  srcStart,srcLimit,
+                                            dest, destStart,destLimit,
+                                            false, trailCC,nx);
+        }
+        
+        protected String normalize( String src, int options) {
+            return decompose(src,false);
+        }
+
+        protected int getMinC() {
+            return NormalizerImpl.MIN_WITH_LEAD_CC;
+        }
+
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevNFDSafe();
+        }
+
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextNFDSafe();
+        }
+
+        protected int getMask() {
+            return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD);
+        }
+
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.quickCheck(
+                                             src, start,limit,
+                                             NormalizerImpl.getFromIndexesArr(
+                                                                              NormalizerImpl.INDEX_MIN_NFD_NO_MAYBE
+                                                                              ),
+                                             NormalizerImpl.QC_NFD,
+                                             0,
+                                             allowMaybe,
+                                             nx
+                                             );
+        }
+
+        protected boolean isNFSkippable(int c) {
+            return NormalizerImpl.isNFSkippable(c,this,
+                                                (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD)
+                                                );
+        }           
+    }
+                                         
+    /** 
+     * Compatibility decomposition.  
+     * @stable ICU 2.8
+     */
+    public static final Mode NFKD = new NFKDMode(3);
+    
+    private static final class NFKDMode extends Mode {
+        private NFKDMode(int value) {
+            super(value);
+        }
+
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            int[] trailCC = new int[1];
+            return NormalizerImpl.decompose(src,  srcStart,srcLimit,
+                                            dest, destStart,destLimit,
+                                            true, trailCC, nx);
+        }
+
+        protected String normalize( String src, int options) {
+            return decompose(src,true);
+        }
+
+        protected int getMinC() {
+            return NormalizerImpl.MIN_WITH_LEAD_CC;
+        }
+
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevNFDSafe();
+        }
+
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextNFDSafe();
+        }
+
+        protected int getMask() {
+            return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKD);
+        }
+
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.quickCheck(
+                                             src,start,limit,
+                                             NormalizerImpl.getFromIndexesArr(
+                                                                              NormalizerImpl.INDEX_MIN_NFKD_NO_MAYBE
+                                                                              ),
+                                             NormalizerImpl.QC_NFKD,
+                                             NormalizerImpl.OPTIONS_COMPAT,
+                                             allowMaybe,
+                                             nx
+                                             );
+        }
+
+        protected boolean isNFSkippable(int c) {
+            return NormalizerImpl.isNFSkippable(c, this,
+                                                (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKD)
+                                                );
+        }                                         
+    }
+                                         
+    /** 
+     * Canonical decomposition followed by canonical composition.  
+     * @stable ICU 2.8
+     */
+    public static final Mode NFC = new NFCMode(COMPOSE_BIT);
+    
+    private static final class NFCMode extends Mode{
+        private NFCMode(int value) {
+            super(value);
+        }
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit,
+                                UnicodeSet nx) {
+            return NormalizerImpl.compose( src, srcStart, srcLimit,
+                                           dest,destStart,destLimit,
+                                           0, nx);
+        }
+  
+        protected String normalize( String src, int options) {
+            return compose(src, false, options);
+        }
+       
+        protected int getMinC() {
+            return NormalizerImpl.getFromIndexesArr(
+                                                    NormalizerImpl.INDEX_MIN_NFC_NO_MAYBE
+                                                    );
+        }
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevTrueStarter();
+        }
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextTrueStarter();
+        }
+        protected int getMask() {
+            return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFC);
+        }
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.quickCheck(
+                                             src,start,limit,
+                                             NormalizerImpl.getFromIndexesArr(
+                                                                              NormalizerImpl.INDEX_MIN_NFC_NO_MAYBE
+                                                                              ),
+                                             NormalizerImpl.QC_NFC,
+                                             0,
+                                             allowMaybe,
+                                             nx
+                                             );
+        }
+        protected boolean isNFSkippable(int c) {
+            return NormalizerImpl.isNFSkippable(c,this,
+                                                ( NormalizerImpl.CC_MASK|NormalizerImpl.COMBINES_ANY|
+                                                  (NormalizerImpl.QC_NFC & NormalizerImpl.QC_ANY_NO)
+                                                  )
+                                                );
+        } 
+    }
+                                         
+    /** 
+     * Default normalization.  
+     * @stable ICU 2.8
+     */
+    public static final Mode DEFAULT = NFC; 
+    
+    /** 
+     * Compatibility decomposition followed by canonical composition. 
+     * @stable ICU 2.8
+     */
+    public static final Mode NFKC =new NFKCMode(5);
+    
+    private static final class NFKCMode extends Mode{
+        private NFKCMode(int value) {
+            super(value);
+        }
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            return NormalizerImpl.compose(src,  srcStart,srcLimit,
+                                          dest, destStart,destLimit,
+                                          NormalizerImpl.OPTIONS_COMPAT, nx);
+        }
+
+        protected String normalize( String src, int options) {
+            return compose(src, true, options);
+        }
+        protected int getMinC() {
+            return NormalizerImpl.getFromIndexesArr(
+                                                    NormalizerImpl.INDEX_MIN_NFKC_NO_MAYBE
+                                                    );
+        }
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevTrueStarter();
+        }
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextTrueStarter();
+        }
+        protected int getMask() {
+            return (NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFKC);
+        }
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.quickCheck(
+                                             src,start,limit,
+                                             NormalizerImpl.getFromIndexesArr(
+                                                                              NormalizerImpl.INDEX_MIN_NFKC_NO_MAYBE
+                                                                              ),
+                                             NormalizerImpl.QC_NFKC,
+                                             NormalizerImpl.OPTIONS_COMPAT,
+                                             allowMaybe,
+                                             nx
+                                             );
+        }
+        protected boolean isNFSkippable(int c) {
+            return NormalizerImpl.isNFSkippable(c, this,
+                                                ( NormalizerImpl.CC_MASK|NormalizerImpl.COMBINES_ANY|
+                                                  (NormalizerImpl.QC_NFKC & NormalizerImpl.QC_ANY_NO)
+                                                  )
+                                                );
+        } 
+    }
+                                        
+    /** 
+     * "Fast C or D" form. 
+     * @stable ICU 2.8 
+     */
+    public static final Mode FCD = new FCDMode(6);
+    
+    private static final class FCDMode extends Mode{
+        private FCDMode(int value) {
+            super(value);
+        }
+        protected int normalize(char[] src, int srcStart, int srcLimit,
+                                char[] dest,int destStart,int destLimit, 
+                                UnicodeSet nx) {
+            return NormalizerImpl.makeFCD(src, srcStart,srcLimit,
+                                          dest, destStart,destLimit, nx);
+        }
+        protected String normalize( String src, int options) {
+            return makeFCD(src, options);
+        }
+        protected int getMinC() {
+            return NormalizerImpl.MIN_WITH_LEAD_CC;
+        }
+        protected IsPrevBoundary getPrevBoundary() {
+            return new IsPrevNFDSafe();
+        }
+        protected IsNextBoundary getNextBoundary() {
+            return new IsNextNFDSafe();
+        }
+        protected int getMask() {
+            return NormalizerImpl.CC_MASK|NormalizerImpl.QC_NFD;
+        }
+        protected QuickCheckResult quickCheck(char[] src,int start, 
+                                              int limit,boolean allowMaybe,
+                                              UnicodeSet nx) {
+            return NormalizerImpl.checkFCD(src,start,limit,nx) ? YES : NO;
+        }
+        protected boolean isNFSkippable(int c) {
+            /* FCD: skippable if lead cc==0 and trail cc<=1 */
+            return (NormalizerImpl.getFCD16(c)>1);
+        }   
+    }
+
+    
+    /**
+     * Null operation for use with the {@link #Normalizer constructors}
+     * and the static {@link #normalize normalize} method.  This value tells
+     * the <tt>Normalizer</tt> to do nothing but return unprocessed characters
+     * from the underlying String or CharacterIterator.  If you have code which
+     * requires raw text at some times and normalized text at others, you can
+     * use <tt>NO_OP</tt> for the cases where you want raw text, rather
+     * than having a separate code path that bypasses <tt>Normalizer</tt>
+     * altogether.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Nomalizer.NONE
+     * @see #NONE
+     */
+    public static final Mode NO_OP = NONE;
+
+    /**
+     * Canonical decomposition followed by canonical composition.  Used with the
+     * {@link #Normalizer constructors} and the static 
+     * {@link #normalize normalize} method to determine the operation to be 
+     * performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical 
+     * Form</a>
+     * <b>C</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Normalier.NFC
+     * @see #NFC
+     */
+    public static final Mode COMPOSE = NFC;
+
+    /**
+     * Compatibility decomposition followed by canonical composition.
+     * Used with the {@link #Normalizer constructors} and the static
+     * {@link #normalize normalize} method to determine the operation to be 
+     * performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical 
+     * Form</a>
+     * <b>KC</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Normalizer.NFKC
+     * @see #NFKC
+     */
+    public static final Mode COMPOSE_COMPAT = NFKC;
+
+    /**
+     * Canonical decomposition.  This value is passed to the
+     * {@link #Normalizer constructors} and the static
+     * {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical 
+     * Form</a>
+     * <b>D</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Normalizer.NFD
+     * @see #NFD
+     */
+    public static final Mode DECOMP = NFD;
+
+    /**
+     * Compatibility decomposition.  This value is passed to the
+     * {@link #Normalizer constructors} and the static 
+     * {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical 
+     * Form</a>
+     * <b>KD</b>.
+     * <p>
+     * @see #setMode
+     * @deprecated ICU 2.8. Use Normalizer.NFKD
+     * @see #NFKD
+     */
+    public static final Mode DECOMP_COMPAT = NFKD;
+
+    /**
+     * Option to disable Hangul/Jamo composition and decomposition.
+     * This option applies to Korean text,
+     * which can be represented either in the Jamo alphabet or in Hangul
+     * characters, which are really just two or three Jamo combined
+     * into one visual glyph.  Since Jamo takes up more storage space than
+     * Hangul, applications that process only Hangul text may wish to turn
+     * this option on when decomposing text.
+     * <p>
+     * The Unicode standard treates Hangul to Jamo conversion as a
+     * canonical decomposition, so this option must be turned <b>off</b> if you
+     * wish to transform strings into one of the standard
+     * <a href="http://www.unicode.org/unicode/reports/tr15/" target="unicode">
+     * Unicode Normalization Forms</a>.
+     * <p>
+     * @see #setOption
+     * @deprecated ICU 2.8. This option is no longer supported.
+     */
+    public static final int IGNORE_HANGUL = 0x0001;
+          
+    /**
+     * Result values for quickCheck().
+     * For details see Unicode Technical Report 15.
+     * @stable ICU 2.8
+     */
+    public static final class QuickCheckResult{
+        //private int resultValue;
+        private QuickCheckResult(int value) {
+            //resultValue=value;
+        }
+    }
+    /** 
+     * Indicates that string is not in the normalized format
+     * @stable ICU 2.8
+     */
+    public static final QuickCheckResult NO = new QuickCheckResult(0);
+        
+    /** 
+     * Indicates that string is in the normalized format
+     * @stable ICU 2.8
+     */
+    public static final QuickCheckResult YES = new QuickCheckResult(1);
+
+    /** 
+     * Indicates it cannot be determined if string is in the normalized 
+     * format without further thorough checks.
+     * @stable ICU 2.8
+     */
+    public static final QuickCheckResult MAYBE = new QuickCheckResult(2);
+    
+    /**
+     * Option bit for compare:
+     * Case sensitively compare the strings
+     * @stable ICU 2.8
+     */
+    public static final int FOLD_CASE_DEFAULT =  UCharacter.FOLD_CASE_DEFAULT;
+    
+    /**
+     * Option bit for compare:
+     * Both input strings are assumed to fulfill FCD conditions.
+     * @stable ICU 2.8
+     */
+    public static final int INPUT_IS_FCD    =      0x20000;
+        
+    /**
+     * Option bit for compare:
+     * Perform case-insensitive comparison.
+     * @stable ICU 2.8
+     */
+    public static final int COMPARE_IGNORE_CASE  =     0x10000;
+        
+    /**
+     * Option bit for compare:
+     * Compare strings in code point order instead of code unit order.
+     * @stable ICU 2.8
+     */
+    public static final int COMPARE_CODE_POINT_ORDER = 0x8000;
+    
+    /** 
+     * Option value for case folding: exclude the mappings for dotted I 
+     * and dotless i marked with 'I' in CaseFolding.txt. 
+     * @stable ICU 2.8
+     */
+    public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = UCharacter.FOLD_CASE_EXCLUDE_SPECIAL_I;
+    
+    /**
+     * Lowest-order bit number of compare() options bits corresponding to
+     * normalization options bits.
+     *
+     * The options parameter for compare() uses most bits for
+     * itself and for various comparison and folding flags.
+     * The most significant bits, however, are shifted down and passed on
+     * to the normalization implementation.
+     * (That is, from compare(..., options, ...),
+     * options>>COMPARE_NORM_OPTIONS_SHIFT will be passed on to the
+     * internal normalization functions.)
+     *
+     * @see #compare
+     * @stable ICU 2.6
+     */
+    public static final int COMPARE_NORM_OPTIONS_SHIFT  = 20;
+        
+    //-------------------------------------------------------------------------
+    // Constructors
+    //-------------------------------------------------------------------------
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of a given string.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this object.
+     * <p>
+     * @param str  The string to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode The normalization mode.
+     *
+     * @param opt Any optional features to be enabled.
+     *            Currently the only available option is {@link #UNICODE_3_2}.
+     *            If you want the default behavior corresponding to one of the
+     *            standard Unicode Normalization Forms, use 0 for this argument.
+     * @stable ICU 2.6
+     */
+    public Normalizer(String str, Mode mode, int opt) {
+        this.text = UCharacterIterator.getInstance(str);
+        this.mode = mode; 
+        this.options=opt;
+    }
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     *
+     * @param opt Any optional features to be enabled.
+     *            Currently the only available option is {@link #UNICODE_3_2}.
+     *            If you want the default behavior corresponding to one of the
+     *            standard Unicode Normalization Forms, use 0 for this argument.
+     * @stable ICU 2.6
+     */
+    public Normalizer(CharacterIterator iter, Mode mode, int opt) {
+        this.text = UCharacterIterator.getInstance(
+                                                   (CharacterIterator)iter.clone()
+                                                   );
+        this.mode = mode;
+        this.options = opt;
+    }
+    
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @stable ICU 2.6
+     */
+    public Normalizer(UCharacterIterator iter, Mode mode, int options) {
+        try {
+            this.text     = (UCharacterIterator)iter.clone();
+            this.mode     = mode;
+            this.options  = options;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException(e.toString());
+        }
+    }
+
+    /**
+     * Clones this <tt>Normalizer</tt> object.  All properties of this
+     * object are duplicated in the new object, including the cloning of any
+     * {@link CharacterIterator} that was passed in to the constructor
+     * or to {@link #setText(CharacterIterator) setText}.
+     * However, the text storage underlying
+     * the <tt>CharacterIterator</tt> is not duplicated unless the
+     * iterator's <tt>clone</tt> method does so.
+     * @stable ICU 2.8
+     */
+    public Object clone() {
+        try {
+            Normalizer copy = (Normalizer) super.clone();
+            copy.text = (UCharacterIterator) text.clone();
+            //clone the internal buffer
+            if (buffer != null) {
+                copy.buffer = new char[buffer.length];
+                System.arraycopy(buffer,0,copy.buffer,0,buffer.length);
+            }
+            return copy;
+        }
+        catch (CloneNotSupportedException e) {
+            throw new IllegalStateException(e.toString());
+        }
+    }
+    
+    //--------------------------------------------------------------------------
+    // Static Utility methods
+    //--------------------------------------------------------------------------
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param str        The string to compose.
+     * @param compat     If true the string will be composed accoding to 
+     *                    NFKC rules and if false will be composed according to 
+     *                    NFC rules.
+     * @return String    The composed string   
+     * @stable ICU 2.8
+     */            
+    public static String compose(String str, boolean compat) {
+        return compose(str,compat,0);           
+    }
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param str        The string to compose.
+     * @param compat     If true the string will be composed accoding to 
+     *                    NFKC rules and if false will be composed according to 
+     *                    NFC rules.
+     * @param options    The only recognized option is UNICODE_3_2
+     * @return String    The composed string   
+     * @stable ICU 2.6
+     */            
+    public static String compose(String str, boolean compat, int options) {
+           
+        char[] dest = new char[str.length()*MAX_BUF_SIZE_COMPOSE];
+        int destSize=0;
+        char[] src = str.toCharArray();
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+
+        /* reset options bits that should only be set here or inside compose() */
+        options&=~(NormalizerImpl.OPTIONS_SETS_MASK|NormalizerImpl.OPTIONS_COMPAT|NormalizerImpl.OPTIONS_COMPOSE_CONTIGUOUS);
+
+        if(compat) {
+            options|=NormalizerImpl.OPTIONS_COMPAT;
+        }
+
+        for(;;) {
+            destSize=NormalizerImpl.compose(src,0,src.length,
+                                            dest,0,dest.length,options,
+                                            nx);
+            if(destSize<=dest.length) {
+                return new String(dest,0,destSize);  
+            } else {
+                dest = new char[destSize];
+            }
+        }                   
+    }
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param source The char array to compose.
+     * @param target A char buffer to receive the normalized text.
+     * @param compat If true the char array will be composed accoding to 
+     *                NFKC rules and if false will be composed according to 
+     *                NFC rules.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result, the output was truncated.
+     * @exception IndexOutOfBoundsException if target.length is less than the 
+     *             required length
+     * @stable ICU 2.6  
+     */         
+    public static int compose(char[] source,char[] target, boolean compat, int options) {
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+
+        /* reset options bits that should only be set here or inside compose() */
+        options&=~(NormalizerImpl.OPTIONS_SETS_MASK|NormalizerImpl.OPTIONS_COMPAT|NormalizerImpl.OPTIONS_COMPOSE_CONTIGUOUS);
+
+        if(compat) {
+            options|=NormalizerImpl.OPTIONS_COMPAT;
+        }
+
+        int length = NormalizerImpl.compose(source,0,source.length,
+                                            target,0,target.length,
+                                            options,nx);
+        if(length<=target.length) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Compose a string.
+     * The string will be composed to according the the specified mode.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param compat If true the char array will be composed accoding to 
+     *                NFKC rules and if false will be composed according to 
+     *                NFC rules.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result, the output was truncated.
+     * @exception IndexOutOfBoundsException if target.length is less than the 
+     *             required length 
+     * @stable ICU 2.6 
+     */         
+    public static int compose(char[] src,int srcStart, int srcLimit,
+                              char[] dest,int destStart, int destLimit,
+                              boolean compat, int options) {
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+
+        /* reset options bits that should only be set here or inside compose() */
+        options&=~(NormalizerImpl.OPTIONS_SETS_MASK|NormalizerImpl.OPTIONS_COMPAT|NormalizerImpl.OPTIONS_COMPOSE_CONTIGUOUS);
+
+        if(compat) {
+            options|=NormalizerImpl.OPTIONS_COMPAT;
+        }
+
+        int length = NormalizerImpl.compose(src,srcStart,srcLimit,
+                                            dest,destStart,destLimit,
+                                            options, nx);
+        if(length<=(destLimit-destStart)) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    private static final int MAX_BUF_SIZE_COMPOSE = 2;
+    private static final int MAX_BUF_SIZE_DECOMPOSE = 3;
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param str       The string to decompose.
+     * @param compat    If true the string will be decomposed accoding to NFKD 
+     *                   rules and if false will be decomposed according to NFD 
+     *                   rules.
+     * @return String   The decomposed string  
+     * @stable ICU 2.8 
+     */         
+    public static String decompose(String str, boolean compat) {
+        return decompose(str,compat,0);                  
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param str     The string to decompose.
+     * @param compat  If true the string will be decomposed accoding to NFKD 
+     *                 rules and if false will be decomposed according to NFD 
+     *                 rules.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return String The decomposed string 
+     * @stable ICU 2.6
+     */         
+    public static String decompose(String str, boolean compat, int options) {
+        
+        char[] dest = new char[str.length()*MAX_BUF_SIZE_DECOMPOSE];
+        int[] trailCC = new int[1];
+        int destSize=0;
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+        for(;;) {
+            destSize=NormalizerImpl.decompose(str.toCharArray(),0,str.length(),
+                                              dest,0,dest.length,
+                                              compat,trailCC, nx);
+            if(destSize<=dest.length) {
+                return new String(dest,0,destSize); 
+            } else {
+                dest = new char[destSize];
+            }
+        } 
+                
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param source The char array to decompose.
+     * @param target A char buffer to receive the normalized text.
+     * @param compat If true the char array will be decomposed accoding to NFKD 
+     *                rules and if false will be decomposed according to 
+     *                NFD rules.
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result,the output was truncated.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @exception IndexOutOfBoundsException if the target capacity is less than
+     *             the required length   
+     * @stable ICU 2.6
+     */
+    public static int decompose(char[] source,char[] target, boolean compat, int options) {
+        int[] trailCC = new int[1];
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+        int length = NormalizerImpl.decompose(source,0,source.length,
+                                              target,0,target.length,
+                                              compat,trailCC,nx);
+        if(length<=target.length) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Decompose a string.
+     * The string will be decomposed to according the the specified mode.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param compat If true the char array will be decomposed accoding to NFKD 
+     *                rules and if false will be decomposed according to 
+     *                NFD rules.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result,the output was truncated.
+     * @exception IndexOutOfBoundsException if the target capacity is less than
+     *             the required length  
+     * @stable ICU 2.6 
+     */
+    public static int decompose(char[] src,int srcStart, int srcLimit,
+                                char[] dest,int destStart, int destLimit,
+                                boolean compat, int options) {
+        int[] trailCC = new int[1];
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+        int length = NormalizerImpl.decompose(src,srcStart,srcLimit,
+                                              dest,destStart,destLimit,
+                                              compat,trailCC,nx);
+        if(length<=(destLimit-destStart)) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+        
+    private static String makeFCD(String src,int options) {
+        int srcLen = src.length();
+        char[] dest = new char[MAX_BUF_SIZE_DECOMPOSE*srcLen];
+        int length = 0;
+        UnicodeSet nx = NormalizerImpl.getNX(options);
+        for(;;) {
+            length = NormalizerImpl.makeFCD(src.toCharArray(),0,srcLen,
+                                            dest,0,dest.length,nx);
+            if(length <= dest.length) {
+                return new String(dest,0,length);
+            } else {
+                dest = new char[length];
+            }
+        }
+    }
+    
+    /**
+     * Normalizes a <tt>String</tt> using the given normalization operation.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this operation.
+     * Currently the only available option is {@link #UNICODE_3_2}.
+     * If you want the default behavior corresponding to one of the standard
+     * Unicode Normalization Forms, use 0 for this argument.
+     * <p>
+     * @param str       the input string to be normalized.
+     * @param mode      the normalization mode
+     * @param options   the optional features to be enabled.
+     * @return String   the normalized string
+     * @stable ICU 2.6
+     */
+    public static String normalize(String str, Mode mode, int options) {
+        return mode.normalize(str,options);
+    }
+    
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization 
+     * mode and options.
+     * @param src        The string to normalize.
+     * @param mode       The normalization mode; one of Normalizer.NONE, 
+     *                    Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *                    Normalizer.NFKD, Normalizer.DEFAULT
+     * @return the normalized string
+     * @stable ICU 2.8
+     *   
+     */
+    public static String normalize(String src,Mode mode) {
+        return normalize(src, mode, 0);    
+    }
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization 
+     * mode and options.
+     * @param source The char array to normalize.
+     * @param target A char buffer to receive the normalized text.
+     * @param mode   The normalization mode; one of Normalizer.NONE, 
+     *                Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *                Normalizer.NFKD, Normalizer.DEFAULT
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return int   The total buffer size needed;if greater than length of 
+     *                result, the output was truncated.
+     * @exception    IndexOutOfBoundsException if the target capacity is less 
+     *                than the required length
+     * @stable ICU 2.6     
+     */
+    public static int normalize(char[] source,char[] target, Mode  mode, int options) {
+        int length = normalize(source,0,source.length,target,0,target.length,mode, options);
+        if(length<=target.length) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Normalize a string.
+     * The string will be normalized according the the specified normalization
+     * mode and options.
+     * @param src       The char array to compose.
+     * @param srcStart  Start index of the source
+     * @param srcLimit  Limit index of the source
+     * @param dest      The char buffer to fill in
+     * @param destStart Start index of the destination buffer  
+     * @param destLimit End index of the destination buffer
+     * @param mode      The normalization mode; one of Normalizer.NONE, 
+     *                   Normalizer.NFD, Normalizer.NFC, Normalizer.NFKC, 
+     *                   Normalizer.NFKD, Normalizer.DEFAULT
+     * @param options The normalization options, ORed together (0 for no options). 
+     * @return int      The total buffer size needed;if greater than length of 
+     *                   result, the output was truncated.
+     * @exception       IndexOutOfBoundsException if the target capacity is 
+     *                   less than the required length
+     * @stable ICU 2.6    
+     */       
+    public static int normalize(char[] src,int srcStart, int srcLimit, 
+                                char[] dest,int destStart, int destLimit,
+                                Mode  mode, int options) {
+        int length = mode.normalize(src,srcStart,srcLimit,dest,destStart,destLimit, options);
+       
+        if(length<=(destLimit-destStart)) {
+            return length;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(length));
+        } 
+    }
+    
+    /**
+     * Normalize a codepoint accoding to the given mode
+     * @param char32    The input string to be normalized.
+     * @param mode      The normalization mode
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2
+     * @return String   The normalized string
+     * @stable ICU 2.6
+     * @see #UNICODE_3_2
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static String normalize(int char32, Mode mode, int options) {
+        return normalize(UTF16.valueOf(char32), mode, options);
+    }
+
+    /**
+     * Conveinience method to normalize a codepoint accoding to the given mode
+     * @param char32    The input string to be normalized.
+     * @param mode      The normalization mode
+     * @return String   The normalized string
+     * @see #UNICODE_3_2                
+     * @stable ICU 2.6
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static String normalize(int char32, Mode mode) {
+        return normalize(UTF16.valueOf(char32), mode, 0);
+    }
+    
+    /**
+     * Convenience method.
+     *
+     * @param source   string for determining if it is in a normalized format
+     * @param mode     normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                  Normalizer.NFKC,Normalizer.NFKD)
+     * @return         Return code to specify if the text is normalized or not 
+     *                     (Normalizer.YES, Normalizer.NO or Normalizer.MAYBE)
+     * @stable ICU 2.8
+     */
+    public static QuickCheckResult quickCheck( String source, Mode mode) {
+        return mode.quickCheck(source.toCharArray(),0,source.length(),true,null);
+    }
+    
+    /**
+     * Convenience method.
+     *
+     * @param source   string for determining if it is in a normalized format
+     * @param mode     normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                  Normalizer.NFKC,Normalizer.NFKD)
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2     
+     * @return         Return code to specify if the text is normalized or not 
+     *                     (Normalizer.YES, Normalizer.NO or Normalizer.MAYBE)
+     * @stable ICU 2.6
+     */
+    public static QuickCheckResult quickCheck( String source, Mode mode, int options) {
+        return mode.quickCheck(source.toCharArray(),0,source.length(),true,NormalizerImpl.getNX(options));
+    }
+    
+    /**
+     * Convenience method.
+     *
+     * @param source Array of characters for determining if it is in a 
+     *                normalized format
+     * @param mode   normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                Normalizer.NFKC,Normalizer.NFKD)
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2
+     * @return       Return code to specify if the text is normalized or not 
+     *                (Normalizer.YES, Normalizer.NO or Normalizer.MAYBE)
+     * @stable ICU 2.6
+     */
+    public static QuickCheckResult quickCheck(char[] source, Mode mode, int options) {
+        return mode.quickCheck(source,0,source.length,true, NormalizerImpl.getNX(options));
+    }
+    
+    /**
+     * Performing quick check on a string, to quickly determine if the string is 
+     * in a particular normalization format.
+     * Three types of result can be returned Normalizer.YES, Normalizer.NO or
+     * Normalizer.MAYBE. Result Normalizer.YES indicates that the argument
+     * string is in the desired normalized format, Normalizer.NO determines that
+     * argument string is not in the desired normalized format. A 
+     * Normalizer.MAYBE result indicates that a more thorough check is required, 
+     * the user may have to put the string in its normalized form and compare 
+     * the results.
+     *
+     * @param source    string for determining if it is in a normalized format
+     * @param start     the start index of the source
+     * @param limit     the limit index of the source it is equal to the length
+     * @param mode      normalization format (Normalizer.NFC,Normalizer.NFD,  
+     *                   Normalizer.NFKC,Normalizer.NFKD)
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2    
+     * @return          Return code to specify if the text is normalized or not 
+     *                   (Normalizer.YES, Normalizer.NO or
+     *                   Normalizer.MAYBE)
+     * @stable ICU 2.6
+     */
+
+    public static QuickCheckResult quickCheck(char[] source,int start, 
+                                              int limit, Mode mode,int options) {       
+        return mode.quickCheck(source,start,limit,true,NormalizerImpl.getNX(options));
+    }
+    
+    //-------------------------------------------------------------------------
+    // Internal methods (for now)
+    //-------------------------------------------------------------------------
+
+    /**
+     * Test if a string is in a given normalization form.
+     * This is semantically equivalent to source.equals(normalize(source, mode)).
+     *
+     * Unlike quickCheck(), this function returns a definitive result,
+     * never a "maybe".
+     * For NFD, NFKD, and FCD, both functions work exactly the same.
+     * For NFC and NFKC where quickCheck may return "maybe", this function will
+     * perform further tests to arrive at a true/false result.
+     * @param src       The input array of characters to be checked to see if 
+     *                   it is normalized
+     * @param start     The strart index in the source
+     * @param limit     The limit index in the source
+     * @param mode      the normalization mode
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2    
+     * @return Boolean value indicating whether the source string is in the
+     *         "mode" normalization form
+     * @stable ICU 2.6
+     */
+    public static boolean isNormalized(char[] src,int start,
+                                       int limit, Mode mode, 
+                                       int options) {
+        return (mode.quickCheck(src,start,limit,false,NormalizerImpl.getNX(options))==YES);
+    }
+    
+    /**
+     * Convenience Method
+     * @param str       the input string to be checked to see if it is 
+     *                   normalized
+     * @param mode      the normalization mode
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2   
+     * @see #isNormalized
+     * @stable ICU 2.6
+     */
+    public static boolean isNormalized(String str, Mode mode, int options) {
+        return (mode.quickCheck(str.toCharArray(),0,str.length(),false,NormalizerImpl.getNX(options))==YES);
+    }
+    
+    /**
+     * Convenience Method
+     * @param char32    the input code point to be checked to see if it is 
+     *                   normalized
+     * @param mode      the normalization mode
+     * @param options   Options for use with exclusion set an tailored Normalization
+     *                                   The only option that is currently recognized is UNICODE_3_2    
+     *
+     * @see #isNormalized
+     * @stable ICU 2.6
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static boolean isNormalized(int char32, Mode mode,int options) {
+        return isNormalized(UTF16.valueOf(char32), mode, options);
+    }
+     
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     *
+     * Canonical equivalence between two strings is defined as their normalized
+     * forms (NFD or NFC) being identical.
+     * This function compares strings incrementally instead of normalizing
+     * (and optionally case-folding) both strings entirely,
+     * improving performance significantly.
+     *
+     * Bulk normalization is only necessary if the strings do not fulfill the 
+     * FCD conditions. Only in this case, and only if the strings are relatively 
+     * long, is memory allocated temporarily.
+     * For FCD strings and short non-FCD strings there is no memory allocation.
+     *
+     * Semantically, this is equivalent to
+     *   strcmp[CodePointOrder](foldCase(NFD(s1)), foldCase(NFD(s2)))
+     * where code point order and foldCase are all optional.
+     *
+     * @param s1        First source character array.
+     * @param s1Start   start index of source
+     * @param s1Limit   limit of the source
+     *
+     * @param s2        Second source character array.
+     * @param s2Start   start index of the source
+     * @param s2Limit   limit of the source
+     * 
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD 
+     *     conditions.If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     * @stable ICU 2.8
+     */
+    public static int compare(char[] s1, int s1Start, int s1Limit,
+                              char[] s2, int s2Start, int s2Limit,
+                              int options) {
+        return internalCompare(s1, s1Start, s1Limit, 
+                               s2, s2Start, s2Limit, 
+                               options);
+    } 
+       
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     * Convenience method.
+     *
+     * @param s1 First source string.
+     * @param s2 Second source string.
+     *
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD 
+     *     conditions. If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     * @stable ICU 2.8
+     */
+    public static int compare(String s1, String s2, int options) {
+         
+        return compare(s1.toCharArray(),0,s1.length(),
+                       s2.toCharArray(),0,s2.length(),
+                       options);
+    }
+     
+    /**
+     * Compare two strings for canonical equivalence.
+     * Further options include case-insensitive comparison and
+     * code point order (as opposed to code unit order).
+     * Convenience method.
+     *
+     * @param s1 First source string.
+     * @param s2 Second source string.
+     *
+     * @param options A bit set of options:
+     *   - FOLD_CASE_DEFAULT or 0 is used for default options:
+     *     Case-sensitive comparison in code unit order, and the input strings
+     *     are quick-checked for FCD.
+     *
+     *   - INPUT_IS_FCD
+     *     Set if the caller knows that both s1 and s2 fulfill the FCD 
+     *     conditions. If not set, the function will quickCheck for FCD
+     *     and normalize if necessary.
+     *
+     *   - COMPARE_CODE_POINT_ORDER
+     *     Set to choose code point order instead of code unit order
+     *
+     *   - COMPARE_IGNORE_CASE
+     *     Set to compare strings case-insensitively using case folding,
+     *     instead of case-sensitively.
+     *     If set, then the following case folding options are used.
+     *
+     * @return <0 or 0 or >0 as usual for string comparisons
+     *
+     * @see #normalize
+     * @see #FCD
+     * @stable ICU 2.8
+     */
+    public static int compare(char[] s1, char[] s2, int options) {
+        return compare(s1,0,s1.length,s2,0,s2.length,options);
+    } 
+        
+    /**
+     * Convenience method that can have faster implementation
+     * by not allocating buffers.
+     * @param char32a    the first code point to be checked against the
+     * @param char32b    the second code point
+     * @param options    A bit set of options
+     * @stable ICU 2.8
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static int compare(int char32a, int char32b,int options) {
+        return compare(UTF16.valueOf(char32a), UTF16.valueOf(char32b), options);
+    }
+    
+    /**
+     * Convenience method that can have faster implementation
+     * by not allocating buffers.
+     * @param char32a   the first code point to be checked against
+     * @param str2      the second string
+     * @param options   A bit set of options
+     * @stable ICU 2.8
+     */
+    // TODO: actually do the optimization when the guts of Normalizer are 
+    // upgraded --has just dumb implementation for now
+    public static int compare(int char32a, String str2, int options) {
+        return compare(UTF16.valueOf(char32a), str2, options);
+    }
+   
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * <code>
+     *     dest=normalize(left+right, mode)
+     * </code>
+     *
+     * With the input strings already being normalized,
+     * this function will use next() and previous()
+     * to find the adjacent end pieces of the input strings.
+     * Only the concatenation of these end pieces will be normalized and
+     * then concatenated with the remaining parts of the input strings.
+     *
+     * It is allowed to have dest==left to avoid copying the entire left string.
+     *
+     * @param left Left source array, may be same as dest.
+     * @param leftStart start in the left array.
+     * @param leftLimit limit in the left array (==length)
+     * @param right Right source array.
+     * @param rightStart start in the right array.
+     * @param rightLimit limit in the right array (==length)
+     * @param dest The output buffer; can be null if destStart==destLimit==0 
+     *              for pure preflighting.
+     * @param destStart start in the destination array
+     * @param destLimit limit in the destination array (==length)
+     * @param mode The normalization mode.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return Length of output (number of chars) when successful or 
+     *          IndexOutOfBoundsException
+     * @exception IndexOutOfBoundsException whose message has the string 
+     *             representation of destination capacity required. 
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @exception IndexOutOfBoundsException if target capacity is less than the
+     *             required length
+     * @stable ICU 2.8
+     */
+    /* Concatenation of normalized strings --------------------------------- */
+    
+    public static int concatenate(char[] left,  int leftStart,  int leftLimit,
+                                  char[] right, int rightStart, int rightLimit, 
+                                  char[] dest,  int destStart,  int destLimit,
+                                  Normalizer.Mode mode, int options) {
+                               
+    
+        UCharacterIterator iter;
+        
+        int leftBoundary, rightBoundary, destLength;
+    
+        if(dest == null) {
+            throw new IllegalArgumentException();
+        }
+    
+        /* check for overlapping right and destination */
+        if (right == dest && rightStart < destLimit && destStart < rightLimit) {
+            throw new IllegalArgumentException("overlapping right and dst ranges");
+        }
+    
+        /* allow left==dest */
+    
+        /*
+         * Input: left[0..leftLength[ + right[0..rightLength[
+         *
+         * Find normalization-safe boundaries leftBoundary and rightBoundary
+         * and copy the end parts together:
+         * buffer=left[leftBoundary..leftLength[ + right[0..rightBoundary[
+         *
+         * dest=left[0..leftBoundary[ +
+         *      normalize(buffer) +
+         *      right[rightBoundary..rightLength[
+         */
+    
+        /*
+         * find a normalization boundary at the end of the left string
+         * and copy the end part into the buffer
+         */
+
+        iter = UCharacterIterator.getInstance(left, leftStart, leftLimit);
+                                             
+        iter.setIndex(iter.getLength()); /* end of left string */
+        char[] buffer=new char[100];
+        int bufferLength;
+        bufferLength=previous(iter, buffer,0,buffer.length,mode,false,null,options);
+        
+        leftBoundary=iter.getIndex();
+        
+        if(bufferLength>buffer.length) {
+            char[] newBuf = new char[buffer.length*2];
+            buffer = newBuf;
+            newBuf = null; // null the reference for GC
+            /* just copy from the left string: we know the boundary already */
+            System.arraycopy(left,leftBoundary,buffer,0,bufferLength);
+        }
+    
+        /*
+         * find a normalization boundary at the beginning of the right string
+         * and concatenate the beginning part to the buffer
+         */
+
+        iter = UCharacterIterator.getInstance(right, rightStart, rightLimit);
+        
+        rightBoundary=next(iter,buffer,bufferLength, buffer.length-bufferLength,
+                           mode, false,null, options);
+                           
+        if(bufferLength>buffer.length) {
+            char[] newBuf = new char[buffer.length*2];
+            buffer = newBuf;
+            newBuf = null; // null the reference for GC
+            /* just copy from the right string: we know the boundary already */
+            System.arraycopy(right,rightBoundary,buffer,
+                             bufferLength,rightBoundary);
+        }
+
+        bufferLength+=rightBoundary;
+    
+        /* copy left[0..leftBoundary[ to dest */
+        if(left!=dest && leftBoundary>0 && (destLimit)>0) {
+            System.arraycopy(left,0,dest,0, Math.min(leftBoundary,destLimit)); 
+        }
+        destLength=leftBoundary;
+    
+        /* concatenate the normalization of the buffer to dest */
+        if(destLimit>destLength) {
+            destLength+=Normalizer.normalize(buffer,0,bufferLength,dest,
+                                             destLength,destLimit,mode,options);
+            
+        } else {
+            destLength+=Normalizer.normalize(buffer, 0, bufferLength,null,0,0,mode,options);
+        }
+    
+        /* concatenate right[rightBoundary..rightLength[ to dest */
+        rightStart+=rightBoundary;
+        int rightLength=(rightLimit-rightStart);
+        if(rightLength>0 && destLimit>destLength) {
+            System.arraycopy(right,rightStart,dest,destLength,
+                             Math.min(rightLength,destLength)
+                             );
+        }
+        destLength+=rightLength;
+        
+        if(destLength<=(destLimit-destStart)) {
+            return destLength;
+        } else {
+            throw new IndexOutOfBoundsException(Integer.toString(destLength));
+        }  
+    }
+    
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * <code>
+     *     dest=normalize(left+right, mode)
+     * </code>
+     *
+     * For details see concatenate 
+     *
+     * @param left Left source string.
+     * @param right Right source string.
+     * @param mode The normalization mode.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return result
+     *
+     * @see #concatenate
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @see #concatenate
+     * @stable ICU 2.8
+     */
+    public static String concatenate(char[] left, char[] right,Mode mode, int options) {
+        char[] result = new char[(left.length+right.length)* MAX_BUF_SIZE_DECOMPOSE];
+        for(;;) {
+               
+            int length = concatenate(left,  0, left.length,
+                                     right, 0, right.length,
+                                     result,0, result.length,
+                                     mode, options);
+            if(length<=result.length) {
+                return new String(result,0,length);
+            } else {
+                result = new char[length];
+            }
+        }            
+    }
+    
+    /**
+     * Concatenate normalized strings, making sure that the result is normalized
+     * as well.
+     *
+     * If both the left and the right strings are in
+     * the normalization form according to "mode",
+     * then the result will be
+     *
+     * <code>
+     *     dest=normalize(left+right, mode)
+     * </code>
+     *
+     * For details see concatenate
+     *
+     * @param left Left source string.
+     * @param right Right source string.
+     * @param mode The normalization mode.
+     * @param options The normalization options, ORed together (0 for no options).
+     * @return result
+     *
+     * @see #concatenate
+     * @see #normalize
+     * @see #next
+     * @see #previous
+     * @see #concatenate
+     * @stable ICU 2.8
+     */
+    public static String concatenate(String left, String right,Mode mode, int options) {
+        char[] result = new char[(left.length()+right.length())* MAX_BUF_SIZE_DECOMPOSE];
+        for(;;) {
+               
+            int length = concatenate(left.toCharArray(), 0, left.length(),
+                                     right.toCharArray(),0, right.length(),
+                                     result,             0, result.length,
+                                     mode, options);
+            if(length<=result.length) {
+                return new String(result,0,length);
+            } else {
+                result = new char[length];
+            }
+        }            
+    }
+    
+    /**
+     * Gets the FC_NFKC closure set from the normalization data
+     * @param c The code point whose closure set is to be retrieved
+     * @param dest The char array to receive the closure set
+     * @stable ICU 3.8
+     */
+    public static int getFC_NFKC_Closure(int c,char[] dest) {
+        return NormalizerImpl.getFC_NFKC_Closure(c,dest);
+    }
+    /**
+     * Gets the FC_NFKC closure set from the normalization data
+     * @param c The the code point whose closure set is to be retrieved
+     * @return String representation of the closure set
+     * @stable ICU 3.8
+     */ 
+    public static String getFC_NFKC_Closure(int c) {
+        char[] dest = new char[10];
+        for(;;) {
+            int length = getFC_NFKC_Closure(c,dest);
+            if(length<=dest.length) {
+                return new String(dest,0,length);
+            } else {
+                dest = new char[length];
+            }
+        }
+    }
+    //-------------------------------------------------------------------------
+    // Iteration API
+    //-------------------------------------------------------------------------
+        
+    /**
+     * Return the current character in the normalized text->
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int current() {
+        if(bufferPos<bufferLimit || nextNormalize()) {
+            return getCodePointAt(bufferPos);
+        } else {
+            return DONE;
+        }
+    }
+        
+    /**
+     * Return the next character in the normalized text and advance
+     * the iteration position by one.  If the end
+     * of the text has already been reached, {@link #DONE} is returned.
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int next() {
+        if(bufferPos<bufferLimit ||  nextNormalize()) {
+            int c=getCodePointAt(bufferPos);
+            bufferPos+=(c>0xFFFF) ? 2 : 1;
+            return c;
+        } else {
+            return DONE;
+        }
+    }
+        
+        
+    /**
+     * Return the previous character in the normalized text and decrement
+     * the iteration position by one.  If the beginning
+     * of the text has already been reached, {@link #DONE} is returned.
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int previous() {
+        if(bufferPos>0 || previousNormalize()) {
+            int c=getCodePointAt(bufferPos-1);
+            bufferPos-=(c>0xFFFF) ? 2 : 1;
+            return c;
+        } else {
+            return DONE;
+        }
+    }
+        
+    /**
+     * Reset the index to the beginning of the text.
+     * This is equivalent to setIndexOnly(startIndex)).
+     * @stable ICU 2.8
+     */
+    public void reset() {
+        text.setIndex(0);
+        currentIndex=nextIndex=0;
+        clearBuffer();
+    }
+    
+    /**
+     * Set the iteration position in the input text that is being normalized,
+     * without any immediate normalization.
+     * After setIndexOnly(), getIndex() will return the same index that is
+     * specified here.
+     *
+     * @param index the desired index in the input text.
+     * @stable ICU 2.8
+     */
+    public void setIndexOnly(int index) {
+        text.setIndex(index);
+        currentIndex=nextIndex=index; // validates index
+        clearBuffer();
+    }
+        
+    /**
+     * Set the iteration position in the input text that is being normalized
+     * and return the first normalized character at that position.
+     * <p>
+     * <b>Note:</b> This method sets the position in the <em>input</em> text,
+     * while {@link #next} and {@link #previous} iterate through characters
+     * in the normalized <em>output</em>.  This means that there is not
+     * necessarily a one-to-one correspondence between characters returned
+     * by <tt>next</tt> and <tt>previous</tt> and the indices passed to and
+     * returned from <tt>setIndex</tt> and {@link #getIndex}.
+     * <p>
+     * @param index the desired index in the input text->
+     *
+     * @return   the first normalized character that is the result of iterating
+     *            forward starting at the given index.
+     *
+     * @throws IllegalArgumentException if the given index is less than
+     *          {@link #getBeginIndex} or greater than {@link #getEndIndex}.
+     * @return The codepoint as an int
+     * @deprecated ICU 3.2
+     * @obsolete ICU 3.2
+     */
+     ///CLOVER:OFF
+     public int setIndex(int index) {
+         setIndexOnly(index);
+         return current();
+     }
+     ///CLOVER:ON
+    /**
+     * Retrieve the index of the start of the input text. This is the begin 
+     * index of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the 
+     * <tt>String</tt> over which this <tt>Normalizer</tt> is iterating
+     * @deprecated ICU 2.2. Use startIndex() instead.
+     * @return The codepoint as an int
+     * @see #startIndex
+     */
+    public int getBeginIndex() {
+        return 0;
+    }
+
+    /**
+     * Retrieve the index of the end of the input text.  This is the end index
+     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     * @deprecated ICU 2.2. Use endIndex() instead.
+     * @return The codepoint as an int
+     * @see #endIndex
+     */
+    public int getEndIndex() {
+        return endIndex();
+    }
+    /**
+     * Return the first character in the normalized text->  This resets
+     * the <tt>Normalizer's</tt> position to the beginning of the text->
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int first() {
+        reset();
+        return next();
+    }
+        
+    /**
+     * Return the last character in the normalized text->  This resets
+     * the <tt>Normalizer's</tt> position to be just before the
+     * the input text corresponding to that normalized character.
+     * @return The codepoint as an int
+     * @stable ICU 2.8
+     */
+    public int last() {
+        text.setToLimit();
+        currentIndex=nextIndex=text.getIndex();
+        clearBuffer();
+        return previous();
+    }
+        
+    /**
+     * Retrieve the current iteration position in the input text that is
+     * being normalized.  This method is useful in applications such as
+     * searching, where you need to be able to determine the position in
+     * the input text that corresponds to a given normalized output character.
+     * <p>
+     * <b>Note:</b> This method sets the position in the <em>input</em>, while
+     * {@link #next} and {@link #previous} iterate through characters in the
+     * <em>output</em>.  This means that there is not necessarily a one-to-one
+     * correspondence between characters returned by <tt>next</tt> and
+     * <tt>previous</tt> and the indices passed to and returned from
+     * <tt>setIndex</tt> and {@link #getIndex}.
+     * @return The current iteration position
+     * @stable ICU 2.8
+     */
+    public int getIndex() {
+        if(bufferPos<bufferLimit) {
+            return currentIndex;
+        } else {
+            return nextIndex;
+        }
+    }
+        
+    /**
+     * Retrieve the index of the start of the input text. This is the begin 
+     * index of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the 
+     * <tt>String</tt> over which this <tt>Normalizer</tt> is iterating
+     * @return The current iteration position
+     * @stable ICU 2.8
+     */
+    public int startIndex() {
+        return 0;
+    }
+        
+    /**
+     * Retrieve the index of the end of the input text->  This is the end index
+     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     * @return The current iteration position
+     * @stable ICU 2.8
+     */
+    public int endIndex() {
+        return text.getLength();
+    }
+    
+    //-------------------------------------------------------------------------
+    // Property access methods
+    //-------------------------------------------------------------------------
+    /**
+     * Set the normalization mode for this object.
+     * <p>
+     * <b>Note:</b>If the normalization mode is changed while iterating
+     * over a string, calls to {@link #next} and {@link #previous} may
+     * return previously buffers characters in the old normalization mode
+     * until the iteration is able to re-sync at the next base character.
+     * It is safest to call {@link #setText setText()}, {@link #first},
+     * {@link #last}, etc. after calling <tt>setMode</tt>.
+     * <p>
+     * @param newMode the new mode for this <tt>Normalizer</tt>.
+     * The supported modes are:
+     * <ul>
+     *  <li>{@link #NFC}    - Unicode canonical decompositiion
+     *                        followed by canonical composition.
+     *  <li>{@link #NFKC}   - Unicode compatibility decompositiion
+     *                        follwed by canonical composition.
+     *  <li>{@link #NFD}    - Unicode canonical decomposition
+     *  <li>{@link #NFKD}   - Unicode compatibility decomposition.
+     *  <li>{@link #NONE}   - Do nothing but return characters
+     *                        from the underlying input text.
+     * </ul>
+     *
+     * @see #getMode
+     * @stable ICU 2.8
+     */
+    public void setMode(Mode newMode) {
+        mode = newMode;
+    }
+    /**
+     * Return the basic operation performed by this <tt>Normalizer</tt>
+     *
+     * @see #setMode
+     * @stable ICU 2.8
+     */
+    public Mode getMode() {
+        return mode;
+    }
+    /**
+     * Set options that affect this <tt>Normalizer</tt>'s operation.
+     * Options do not change the basic composition or decomposition operation
+     * that is being performed , but they control whether
+     * certain optional portions of the operation are done.
+     * Currently the only available option is:
+     * <p>
+     * <ul>
+     *   <li>{@link #UNICODE_3_2} - Use Normalization conforming to Unicode version 3.2.
+     * </ul>
+     * <p>
+     * @param   option  the option whose value is to be set.
+     * @param   value   the new setting for the option.  Use <tt>true</tt> to
+     *                  turn the option on and <tt>false</tt> to turn it off.
+     *
+     * @see #getOption
+     * @stable ICU 2.6
+     */
+    public void setOption(int option,boolean value) {
+        if (value) {
+            options |= option;
+        } else {
+            options &= (~option);
+        }
+    }
+        
+    /**
+     * Determine whether an option is turned on or off.
+     * <p>
+     * @see #setOption
+     * @stable ICU 2.6
+     */
+    public int getOption(int option) {
+        if((options & option)!=0) {
+            return 1 ;
+        } else {
+            return 0;
+        }
+    }
+    
+    /**
+     * Gets the underlying text storage
+     * @param fillIn the char buffer to fill the UTF-16 units.
+     *         The length of the buffer should be equal to the length of the
+     *         underlying text storage
+     * @throws IndexOutOfBoundsException
+     * @see   #getLength
+     * @stable ICU 2.8
+     */
+    public int getText(char[] fillIn) {
+        return text.getText(fillIn);
+    }
+    
+    /**
+     * Gets the length of underlying text storage
+     * @return the length
+     * @stable ICU 2.8
+     */ 
+    public int getLength() {
+        return text.getLength();
+    }
+    
+    /**
+     * Returns the text under iteration as a string
+     * @return a copy of the text under iteration.
+     * @stable ICU 2.8
+     */
+    public String getText() {
+        return text.getText();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(StringBuffer newText) {
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new IllegalStateException("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+        
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(char[] newText) {
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new IllegalStateException("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(String newText) {
+            
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new IllegalStateException("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the input text->
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(CharacterIterator newText) {
+        
+        UCharacterIterator newIter = UCharacterIterator.getInstance(newText);
+        if (newIter == null) {
+            throw new IllegalStateException("Could not create a new UCharacterIterator");
+        }  
+        text = newIter;
+        reset();
+    }
+    
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position is set to the beginning of the string.
+     * @param newText   The new string to be normalized.
+     * @stable ICU 2.8
+     */
+    public void setText(UCharacterIterator newText) { 
+        try{
+            UCharacterIterator newIter = (UCharacterIterator)newText.clone();
+            if (newIter == null) {
+                throw new IllegalStateException("Could not create a new UCharacterIterator");
+            }
+            text = newIter;
+            reset();
+        }catch(CloneNotSupportedException e) {
+            throw new IllegalStateException("Could not clone the UCharacterIterator");
+        }
+    }
+    
+    //-------------------------------------------------------------------------
+    // Private utility methods
+    //-------------------------------------------------------------------------
+    
+
+    /* backward iteration --------------------------------------------------- */
+               
+    /*
+     * read backwards and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+     * surrogate but read second!)
+     */
+
+    private static  long getPrevNorm32(UCharacterIterator src, 
+                                       int/*unsigned*/ minC, 
+                                       int/*unsigned*/ mask, 
+                                       char[] chars) {
+        long norm32;
+        int ch=0;
+        /* need src.hasPrevious() */
+        if((ch=src.previous()) == UCharacterIterator.DONE) {
+            return 0;
+        }
+        chars[0]=(char)ch;
+        chars[1]=0;
+    
+        /* check for a surrogate before getting norm32 to see if we need to 
+         * predecrement further */
+        if(chars[0]<minC) {
+            return 0;
+        } else if(!UTF16.isSurrogate(chars[0])) {
+            return NormalizerImpl.getNorm32(chars[0]);
+        } else if(UTF16.isLeadSurrogate(chars[0]) || (src.getIndex()==0)) {
+            /* unpaired surrogate */
+            chars[1]=(char)src.current();
+            return 0;
+        } else if(UTF16.isLeadSurrogate(chars[1]=(char)src.previous())) {
+            norm32=NormalizerImpl.getNorm32(chars[1]);
+            if((norm32&mask)==0) {
+                /* all surrogate pairs with this lead surrogate have irrelevant 
+                 * data */
+                return 0;
+            } else {
+                /* norm32 must be a surrogate special */
+                return NormalizerImpl.getNorm32FromSurrogatePair(norm32,chars[0]);
+            }
+        } else {
+            /* unpaired second surrogate, undo the c2=src.previous() movement */
+            src.moveIndex( 1);
+            return 0;
+        }
+    }
+ 
+    private interface IsPrevBoundary{
+        public boolean isPrevBoundary(UCharacterIterator src,
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ mask, 
+                                      char[] chars);
+    }
+    private static final class IsPrevNFDSafe implements IsPrevBoundary{
+        /*
+         * for NF*D:
+         * read backwards and check if the lead combining class is 0
+         * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+         * surrogate but read second!)
+         */
+        public boolean isPrevBoundary(UCharacterIterator src,
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ ccOrQCMask, 
+                                      char[] chars) {
+    
+            return NormalizerImpl.isNFDSafe(getPrevNorm32(src, minC, 
+                                                          ccOrQCMask, chars), 
+                                            ccOrQCMask, 
+                                            ccOrQCMask& NormalizerImpl.QC_MASK);
+        }
+    }
+    
+    private static final class IsPrevTrueStarter implements IsPrevBoundary{
+        /*
+         * read backwards and check if the character is (or its decomposition 
+         * begins with) a "true starter" (cc==0 and NF*C_YES)
+         * if c2!=0 then (c2, c) is a surrogate pair (reversed - c2 is first 
+         * surrogate but read second!)
+         */
+        public boolean isPrevBoundary(UCharacterIterator src, 
+                                      int/*unsigned*/ minC,
+                                      int/*unsigned*/ ccOrQCMask,
+                                      char[] chars) {
+            long norm32; 
+            int/*unsigned*/ decompQCMask;
+            
+            decompQCMask=(ccOrQCMask<<2)&0xf; /*decomposition quick check mask*/
+            norm32=getPrevNorm32(src, minC, ccOrQCMask|decompQCMask, chars);
+            return NormalizerImpl.isTrueStarter(norm32,ccOrQCMask,decompQCMask);
+        }
+    }
+    
+    private static int findPreviousIterationBoundary(UCharacterIterator src,
+                                                     IsPrevBoundary obj, 
+                                                     int/*unsigned*/ minC,
+                                                     int/*mask*/ mask,
+                                                     char[] buffer, 
+                                                     int[] startIndex) {
+        char[] chars=new char[2];
+        boolean isBoundary;
+    
+        /* fill the buffer from the end backwards */
+        startIndex[0] = buffer.length;
+        chars[0]=0;
+        while(src.getIndex()>0 && chars[0]!=UCharacterIterator.DONE) {
+            isBoundary=obj.isPrevBoundary(src, minC, mask, chars);
+    
+            /* always write this character to the front of the buffer */
+            /* make sure there is enough space in the buffer */
+            if(startIndex[0] < (chars[1]==0 ? 1 : 2)) {
+
+                // grow the buffer
+                char[] newBuf = new char[buffer.length*2];
+                /* move the current buffer contents up */
+                System.arraycopy(buffer,startIndex[0],newBuf,
+                                 newBuf.length-(buffer.length-startIndex[0]),
+                                 buffer.length-startIndex[0]);
+                //adjust the startIndex
+                startIndex[0]+=newBuf.length-buffer.length;
+                
+                buffer=newBuf;
+                newBuf=null;                
+                
+            }
+    
+            buffer[--startIndex[0]]=chars[0];
+            if(chars[1]!=0) {
+                buffer[--startIndex[0]]=chars[1];
+            }
+    
+            /* stop if this just-copied character is a boundary */
+            if(isBoundary) {
+                break;
+            }
+        }
+    
+        /* return the length of the buffer contents */
+        return buffer.length-startIndex[0];
+    }
+    
+    private static int previous(UCharacterIterator src,
+                                char[] dest, int destStart, int destLimit, 
+                                Mode mode, 
+                                boolean doNormalize, 
+                                boolean[] pNeededToNormalize,
+                                int options) {
+
+        IsPrevBoundary isPreviousBoundary;
+        int destLength, bufferLength;
+        int/*unsigned*/ mask;
+        
+        int c,c2;
+        
+        char minC;
+        int destCapacity = destLimit-destStart;
+        destLength=0;
+        
+        
+        if(pNeededToNormalize!=null) {
+            pNeededToNormalize[0]=false;
+        }
+        minC = (char)mode.getMinC();
+        mask = mode.getMask();
+        isPreviousBoundary = mode.getPrevBoundary();
+
+        if(isPreviousBoundary==null) {
+            destLength=0;
+            if((c=src.previous())>=0) {
+                destLength=1;
+                if(UTF16.isTrailSurrogate((char)c)) {
+                    c2= src.previous();
+                    if(c2!= UCharacterIterator.DONE) {
+                        if(UTF16.isLeadSurrogate((char)c2)) {
+                            if(destCapacity>=2) {
+                                dest[1]=(char)c; // trail surrogate 
+                                destLength=2;
+                            }
+                            // lead surrogate to be written below 
+                            c=c2; 
+                        } else {
+                            src.moveIndex(1);
+                        }
+                    }
+                }
+    
+                if(destCapacity>0) {
+                    dest[0]=(char)c;
+                }
+            }
+            return destLength;
+        }
+        
+        char[] buffer = new char[100];
+        int[] startIndex= new int[1];
+        bufferLength=findPreviousIterationBoundary(src,
+                                                   isPreviousBoundary, 
+                                                   minC, mask,buffer, 
+                                                   startIndex);
+        if(bufferLength>0) {
+            if(doNormalize) {
+                destLength=Normalizer.normalize(buffer,startIndex[0],
+                                                startIndex[0]+bufferLength,
+                                                dest, destStart,destLimit,
+                                                mode, options);
+                
+                if(pNeededToNormalize!=null) {
+                    pNeededToNormalize[0]=(boolean)(destLength!=bufferLength ||
+                                                    Utility.arrayRegionMatches(
+                                                                               buffer,0,dest,
+                                                                               destStart,destLimit
+                                                                               ));
+                }
+            } else {
+                /* just copy the source characters */
+                if(destCapacity>0) {
+                    System.arraycopy(buffer,startIndex[0],dest,0,
+                                     (bufferLength<destCapacity) ? 
+                                     bufferLength : destCapacity
+                                     );
+                }
+            }
+        } 
+
+    
+        return destLength;
+    }
+
+ 
+    
+    /* forward iteration ---------------------------------------------------- */
+    /*
+     * read forward and check if the character is a next-iteration boundary
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private interface IsNextBoundary{
+        boolean isNextBoundary(UCharacterIterator src, 
+                               int/*unsigned*/ minC, 
+                               int/*unsigned*/ mask, 
+                               int[] chars);
+    }   
+    /*
+     * read forward and get norm32
+     * return 0 if the character is <minC
+     * if c2!=0 then (c2, c) is a surrogate pair
+     * always reads complete characters
+     */
+    private static long /*unsigned*/ getNextNorm32(UCharacterIterator src, 
+                                                   int/*unsigned*/ minC, 
+                                                   int/*unsigned*/ mask, 
+                                                   int[] chars) {
+        long norm32;
+    
+        /* need src.hasNext() to be true */
+        chars[0]=src.next();
+        chars[1]=0;
+    
+        if(chars[0]<minC) {
+            return 0;
+        }
+    
+        norm32=NormalizerImpl.getNorm32((char)chars[0]);
+        if(UTF16.isLeadSurrogate((char)chars[0])) {
+            if(src.current()!=UCharacterIterator.DONE &&
+               UTF16.isTrailSurrogate((char)(chars[1]=src.current()))) {
+                src.moveIndex(1); /* skip the c2 surrogate */
+                if((norm32&mask)==0) {
+                    /* irrelevant data */
+                    return 0;
+                } else {
+                    /* norm32 must be a surrogate special */
+                    return NormalizerImpl.getNorm32FromSurrogatePair(norm32,(char)chars[1]);
+                }
+            } else {
+                /* unmatched surrogate */
+                return 0;
+            }
+        }
+        return norm32;
+    }
+
+
+    /*
+     * for NF*D:
+     * read forward and check if the lead combining class is 0
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private static final class IsNextNFDSafe implements IsNextBoundary{
+        public boolean isNextBoundary(UCharacterIterator src, 
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ ccOrQCMask, 
+                                      int[] chars) {
+            return NormalizerImpl.isNFDSafe(getNextNorm32(src,minC,ccOrQCMask,chars), 
+                                            ccOrQCMask, ccOrQCMask&NormalizerImpl.QC_MASK);
+        }
+    }
+    
+    /*
+     * for NF*C:
+     * read forward and check if the character is (or its decomposition begins 
+     * with) a "true starter" (cc==0 and NF*C_YES)
+     * if c2!=0 then (c, c2) is a surrogate pair
+     */
+    private static final class IsNextTrueStarter implements IsNextBoundary{
+        public boolean isNextBoundary(UCharacterIterator src, 
+                                      int/*unsigned*/ minC, 
+                                      int/*unsigned*/ ccOrQCMask, 
+                                      int[] chars) {
+            long norm32;
+            int/*unsigned*/ decompQCMask;
+            
+            decompQCMask=(ccOrQCMask<<2)&0xf; /*decomposition quick check mask*/
+            norm32=getNextNorm32(src, minC, ccOrQCMask|decompQCMask, chars);
+            return NormalizerImpl.isTrueStarter(norm32, ccOrQCMask, decompQCMask);
+        }
+    }
+    
+    private static int findNextIterationBoundary(UCharacterIterator src,
+                                                 IsNextBoundary obj, 
+                                                 int/*unsigned*/ minC, 
+                                                 int/*unsigned*/ mask,
+                                                 char[] buffer) {
+        int[] chars = new int[2];
+        int bufferIndex =0;
+        
+        if(src.current()==UCharacterIterator.DONE) {
+            return 0;
+        }
+        /* get one character and ignore its properties */
+        chars[0]=src.next();
+        buffer[0]=(char)chars[0];
+        bufferIndex=1;
+        
+        if(UTF16.isLeadSurrogate((char)chars[0])&& 
+           src.current()!=UCharacterIterator.DONE) {
+            if(UTF16.isTrailSurrogate((char)(chars[1]=src.next()))) {
+                buffer[bufferIndex++]=(char)chars[1];
+            } else {
+                src.moveIndex(-1); /* back out the non-trail-surrogate */
+            }
+        }
+    
+        /* get all following characters until we see a boundary */
+        /* checking hasNext() instead of c!=DONE on the off-chance that U+ffff 
+         * is part of the string */
+        while( src.current()!=UCharacterIterator.DONE) {
+            if(obj.isNextBoundary(src, minC, mask, chars)) {
+                /* back out the latest movement to stop at the boundary */
+                src.moveIndex(chars[1]==0 ? -1 : -2);
+                break;
+            } else {
+                if(bufferIndex+(chars[1]==0 ? 1 : 2)<=buffer.length) {
+                    buffer[bufferIndex++]=(char)chars[0];
+                    if(chars[1]!=0) {
+                        buffer[bufferIndex++]=(char)chars[1];
+                    }
+                } else {
+                    char[] newBuf = new char[buffer.length    *2];
+                    System.arraycopy(buffer,0,newBuf,0,bufferIndex);
+                    buffer = newBuf;
+                    buffer[bufferIndex++]=(char)chars[0];
+                    if(chars[1]!=0) {
+                        buffer[bufferIndex++]=(char)chars[1];
+                    }
+                }
+            }
+        }
+    
+        /* return the length of the buffer contents */
+        return bufferIndex;
+    }
+    
+    private static int next(UCharacterIterator src,
+                            char[] dest, int destStart, int destLimit,
+                            Normalizer.Mode mode,
+                            boolean doNormalize, 
+                            boolean[] pNeededToNormalize,
+                            int options) {
+                                
+        IsNextBoundary isNextBoundary;
+        int /*unsigned*/ mask;
+        int /*unsigned*/ bufferLength;
+        int c,c2;
+        char minC;
+        int destCapacity = destLimit - destStart;
+        int destLength = 0;
+        
+        if(pNeededToNormalize!=null) {
+            pNeededToNormalize[0]=false;
+        }
+
+        minC = (char)mode.getMinC();
+        mask = mode.getMask();
+        isNextBoundary = mode.getNextBoundary();
+        
+        if(isNextBoundary==null) {
+            destLength=0;
+            c=src.next();
+            if(c!=UCharacterIterator.DONE) {
+                destLength=1;
+                if(UTF16.isLeadSurrogate((char)c)) {
+                    c2= src.next();
+                    if(c2!= UCharacterIterator.DONE) {
+                        if(UTF16.isTrailSurrogate((char)c2)) {
+                            if(destCapacity>=2) {
+                                dest[1]=(char)c2; // trail surrogate 
+                                destLength=2;
+                            }
+                            // lead surrogate to be written below 
+                        } else {
+                            src.moveIndex(-1);
+                        }
+                    }
+                }
+    
+                if(destCapacity>0) {
+                    dest[0]=(char)c;
+                }
+            }
+            return destLength;
+        }
+
+        char[] buffer=new char[100];
+        int[] startIndex = new int[1];
+        
+        bufferLength=findNextIterationBoundary(src,isNextBoundary, minC, mask,
+                                               buffer);
+        if(bufferLength>0) {
+            if(doNormalize) {
+                destLength=mode.normalize(buffer,startIndex[0],bufferLength,
+                                          dest,destStart,destLimit, options);
+                
+                if(pNeededToNormalize!=null) {
+                    pNeededToNormalize[0]=(boolean)(destLength!=bufferLength ||
+                                                    Utility.arrayRegionMatches(buffer,startIndex[0],
+                                                                               dest,destStart,
+                                                                               destLength));
+                }
+            } else {
+                /* just copy the source characters */
+                if(destCapacity>0) {
+                    System.arraycopy(buffer,0,dest,destStart,
+                                     Math.min(bufferLength,destCapacity)
+                                     );
+                }
+                                      
+               
+            }
+        }
+        return destLength;
+    } 
+
+    private void clearBuffer() {
+        bufferLimit=bufferStart=bufferPos=0;
+    }
+        
+    private boolean nextNormalize() {
+        
+        clearBuffer();
+        currentIndex=nextIndex;
+        text.setIndex(nextIndex);
+                
+        bufferLimit=next(text,buffer,bufferStart,buffer.length,mode,true,null,options);
+                        
+        nextIndex=text.getIndex();
+        return (bufferLimit>0);
+    }
+        
+    private boolean     previousNormalize() {
+
+        clearBuffer();
+        nextIndex=currentIndex;
+        text.setIndex(currentIndex);
+        bufferLimit=previous(text,buffer,bufferStart,buffer.length,mode,true,null,options);
+                
+        currentIndex=text.getIndex();
+        bufferPos = bufferLimit;
+        return bufferLimit>0;
+    }
+    
+    private int getCodePointAt(int index) {
+        if( UTF16.isSurrogate(buffer[index])) {
+            if(UTF16.isLeadSurrogate(buffer[index])) {
+                if((index+1)<bufferLimit &&
+                   UTF16.isTrailSurrogate(buffer[index+1])) {
+                    return UCharacterProperty.getRawSupplementary(
+                                                                  buffer[index], 
+                                                                  buffer[index+1]
+                                                                  );
+                }
+            }else if(UTF16.isTrailSurrogate(buffer[index])) {
+                if(index>0 && UTF16.isLeadSurrogate(buffer[index-1])) {
+                    return UCharacterProperty.getRawSupplementary(
+                                                                  buffer[index-1],
+                                                                  buffer[index]
+                                                                  );
+                }
+            }   
+        }
+        return buffer[index];
+        
+    }
+    
+    /**
+     * Internal API
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static boolean isNFSkippable(int c, Mode mode) {
+        return mode.isNFSkippable(c);
+    }    
+
+        
+    private static int internalCompare(char[] s1, int s1Start,int s1Limit,
+                                       char[] s2, int s2Start,int s2Limit,
+                                       int options) {
+                                  
+        char[] fcd1  = new char[300];
+        char[] fcd2  = new char[300];
+        
+        Normalizer.Mode mode;
+        int result;
+        
+        if(    s1==null || s1Start<0 || s1Limit<0 || 
+               s2==null || s2Start<0 || s2Limit<0 ||
+               s1Limit<s1Start || s2Limit<s2Start
+               ) {
+                
+            throw new IllegalArgumentException();
+        }
+
+        UnicodeSet nx=NormalizerImpl.getNX((int)(options>>Normalizer.COMPARE_NORM_OPTIONS_SHIFT));
+        options|= NormalizerImpl.COMPARE_EQUIV;
+        result=0;
+
+        /*
+         * UAX #21 Case Mappings, as fixed for Unicode version 4
+         * (see Jitterbug 2021), defines a canonical caseless match as
+         *
+         * A string X is a canonical caseless match
+         * for a string Y if and only if
+         * NFD(toCasefold(NFD(X))) = NFD(toCasefold(NFD(Y)))
+         *
+         * For better performance, we check for FCD (or let the caller tell us that
+         * both strings are in FCD) for the inner normalization.
+         * BasicNormalizerTest::FindFoldFCDExceptions() makes sure that
+         * case-folding preserves the FCD-ness of a string.
+         * The outer normalization is then only performed by NormalizerImpl.cmpEquivFold()
+         * when there is a difference.
+         *
+         * Exception: When using the Turkic case-folding option, we do perform
+         * full NFD first. This is because in the Turkic case precomposed characters
+         * with 0049 capital I or 0069 small i fold differently whether they
+         * are first decomposed or not, so an FCD check - a check only for
+         * canonical order - is not sufficient.
+         */
+        if((options& Normalizer.FOLD_CASE_EXCLUDE_SPECIAL_I) >0 ) {
+            mode=Normalizer.NFD;
+            options&=~ Normalizer.INPUT_IS_FCD;
+        } else {
+            mode=Normalizer.FCD;
+        }
+        if((options& Normalizer.INPUT_IS_FCD)==0) {
+            char[] dest;
+            int fcdLen1, fcdLen2;
+            boolean isFCD1, isFCD2;
+        
+            // check if s1 and/or s2 fulfill the FCD conditions
+            isFCD1= Normalizer.YES==mode.quickCheck(s1, s1Start, s1Limit, true, nx);
+            isFCD2= Normalizer.YES==mode.quickCheck(s2, s2Start, s2Limit, true, nx);
+            /*
+             * ICU 2.4 had a further optimization:
+             * If both strings were not in FCD, then they were both NFD'ed,
+             * and the COMPARE_EQUIV option was turned off.
+             * It is not entirely clear that this is valid with the current
+             * definition of the canonical caseless match.
+             * Therefore, ICU 2.6 removes that optimization.
+             */
+
+            if(!isFCD1) {
+                fcdLen1=mode.normalize(s1, 0, s1.length,
+                                       fcd1, 0, fcd1.length,
+                                       nx);
+                                       
+                if(fcdLen1>fcd1.length) {
+                    dest=new char[fcdLen1];
+                    fcdLen1=mode.normalize( s1, 0, s1.length,
+                                            dest, 0, dest.length,
+                                            nx);
+                    s1=dest;
+                } else {
+                    s1=fcd1;
+                }
+                s1Limit=fcdLen1;
+                s1Start=0;
+            }
+
+            if(!isFCD2) {
+                fcdLen2=mode.normalize(s2,s2Start,s2Limit,
+                                       fcd2,0,fcd2.length,
+                                       nx);
+                
+                if(fcdLen2>fcd2.length) {
+                    dest=new char[fcdLen2];
+                    fcdLen2=mode.normalize( s2,s2Start,s2Limit,
+                                            dest,0,dest.length,
+                                            nx);
+                    s2=dest;
+                } else {
+                    s2=fcd2;
+                }
+                s2Limit=fcdLen2;
+                s2Start=0;
+            }
+                
+        }
+        
+        result=NormalizerImpl.cmpEquivFold(s1, s1Start, s1Limit, 
+                                           s2, s2Start, s2Limit, options);
+        return result;
+    }    
+    
+    /**
+     * Fetches the Unicode version burned into the Normalization data file
+     * @return VersionInfo version information of the normalizer
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    static VersionInfo getUnicodeVersion() {
+        return NormalizerImpl.getUnicodeVersion();
+    }
+}
diff --git a/src/com/ibm/icu/text/NullTransliterator.java b/src/com/ibm/icu/text/NullTransliterator.java
new file mode 100644
index 0000000..3c248c6
--- /dev/null
+++ b/src/com/ibm/icu/text/NullTransliterator.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * A transliterator that leaves text unchanged.
+ * @internal
+ */
+class NullTransliterator extends Transliterator {
+    /**
+     * Package accessible IDs for this transliterator.
+     */
+    static String SHORT_ID = "Null";
+    static String _ID      = "Any-Null";
+
+    /**
+     * Constructs a transliterator.
+     * @internal
+     */
+    public NullTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     * @internal
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/NumberFormat.java b/src/com/ibm/icu/text/NumberFormat.java
new file mode 100644
index 0000000..f00cf3d
--- /dev/null
+++ b/src/com/ibm/icu/text/NumberFormat.java
@@ -0,0 +1,1795 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.text.Format;
+//#endif
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.CurrencyAmount;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+// this is an enhanced version that is based on the standard version in the JDK
+/**
+ * <code>NumberFormat</code> is the abstract base class for all number
+ * formats. This class provides the interface for formatting and parsing
+ * numbers. <code>NumberFormat</code> also provides methods for determining
+ * which locales have number formats, and what their names are.
+ *
+ * <code>NumberFormat</code> helps you to format and parse numbers for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * decimal points, thousands-separators, or even the particular decimal
+ * digits used, or whether the number format is even decimal.
+ *
+ * <p>
+ * To format a number for the current Locale, use one of the factory
+ * class methods:
+ * <blockquote>
+ * <pre>
+ *  myString = NumberFormat.getInstance().format(myNumber);
+ * </pre>
+ * </blockquote>
+ * If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance();
+ * for (int i = 0; i < a.length; ++i) {
+ *     output.println(nf.format(myNumber[i]) + "; ");
+ * }
+ * </pre>
+ * </blockquote>
+ * To format a number for a different Locale, specify it in the
+ * call to <code>getInstance</code>.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
+ * </pre>
+ * </blockquote>
+ * You can also use a <code>NumberFormat</code> to parse numbers:
+ * <blockquote>
+ * <pre>
+ * myNumber = nf.parse(myString);
+ * </pre>
+ * </blockquote>
+ * Use <code>getInstance</code> or <code>getNumberInstance</code> to get the
+ * normal number format. Use <code>getIntegerInstance</code> to get an
+ * integer number format. Use <code>getCurrencyInstance</code> to get the
+ * currency number format. And use <code>getPercentInstance</code> to get a
+ * format for displaying percentages. With this format, a fraction like
+ * 0.53 is displayed as 53%.
+ *
+ * <p>
+ * Starting from ICU 4.2, you can use getInstance() by passing in a 'style'
+ * as parameter to get the correct instance. 
+ * For example, 
+ * use getInstance(...NUMBERSTYLE) to get the normal number format,
+ * getInstance(...PERCENTSTYLE) to get a format for displaying percentage,
+ * getInstance(...SCIENTIFICSTYLE) to get a format for displaying scientific number,
+ * getInstance(...INTEGERSTYLE) to get an integer number format,
+ * getInstance(...CURRENCYSTYLE) to get the currency number format, 
+ * in which the currency is represented by its symbol, for example, "$3.00".
+ * getInstance(...ISOCURRENCYSTYLE)  to get the currency number format, 
+ * in which the currency is represented by its ISO code, for example "USD3.00".
+ * getInstance(...PLURALCURRENCYSTYLE) to get the currency number format,
+ * in which the currency is represented by its full name in plural format,
+ * for example, "3.00 US dollars" or "1.00 US dollar".
+ *
+ *
+ * <p>
+ * You can also control the display of numbers with such methods as
+ * <code>setMinimumFractionDigits</code>.
+ * If you want even more control over the format or parsing,
+ * or want to give your users more control,
+ * you can try casting the <code>NumberFormat</code> you get from the factory methods
+ * to a <code>DecimalFormat</code>. This will work for the vast majority
+ * of locales; just remember to put it in a <code>try</code> block in case you
+ * encounter an unusual one.
+ *
+ * <p>
+ * NumberFormat is designed such that some controls
+ * work for formatting and others work for parsing.  The following is
+ * the detailed description for each these control methods,
+ * <p>
+ * setParseIntegerOnly : only affects parsing, e.g.
+ * if true,  "3456.78" -> 3456 (and leaves the parse position just after '6')
+ * if false, "3456.78" -> 3456.78 (and leaves the parse position just after '8')
+ * This is independent of formatting.  If you want to not show a decimal point
+ * where there might be no digits after the decimal point, use
+ * setDecimalSeparatorAlwaysShown on DecimalFormat.
+ * <p>
+ * You can also use forms of the <code>parse</code> and <code>format</code>
+ * methods with <code>ParsePosition</code> and <code>FieldPosition</code> to
+ * allow you to:
+ * <ul>
+ * <li> progressively parse through pieces of a string
+ * <li> align the decimal point and other areas
+ * </ul>
+ * For example, you can align numbers in two ways:
+ * <ol>
+ * <li> If you are using a monospaced font with spacing for alignment,
+ *      you can pass the <code>FieldPosition</code> in your format call, with
+ *      <code>field</code> = <code>INTEGER_FIELD</code>. On output,
+ *      <code>getEndIndex</code> will be set to the offset between the
+ *      last character of the integer and the decimal. Add
+ *      (desiredSpaceCount - getEndIndex) spaces at the front of the string.
+ *
+ * <li> If you are using proportional fonts,
+ *      instead of padding with spaces, measure the width
+ *      of the string in pixels from the start to <code>getEndIndex</code>.
+ *      Then move the pen by
+ *      (desiredPixelWidth - widthToAlignmentPoint) before drawing the text.
+ *      It also works where there is no decimal, but possibly additional
+ *      characters at the end, e.g., with parentheses in negative
+ *      numbers: "(12)" for -12.
+ * </ol>
+ *
+ * <h4>Synchronization</h4>
+ * <p>
+ * Number formats are generally not synchronized. It is recommended to create 
+ * separate format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally. 
+ * <p>
+ *
+ * <h4>DecimalFormat</h4>
+ * <p>DecimalFormat is the concrete implementation of NumberFormat, and the
+ * NumberFormat API is essentially an abstraction from DecimalFormat's API.
+ * Refer to DecimalFormat for more information about this API.</p>
+ *
+ * see          DecimalFormat
+ * see          java.text.ChoiceFormat
+ * @author       Mark Davis
+ * @author       Helena Shih
+ * @author       Alan Liu
+ * @stable ICU 2.0
+ */
+public abstract class NumberFormat extends UFormat {
+
+    /**
+     * Constants to specify normal number style of format.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int NUMBERSTYLE = 0;
+    /**
+     * Constants to specify currency style of format which uses currency symbol
+     * to represent currency, for example: "$3.00".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int CURRENCYSTYLE = 1;
+    /**
+     * Constants to specify a style of format to display percent.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int PERCENTSTYLE = 2;
+    /**
+     * Constants to specify a style of format to display scientific number.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int SCIENTIFICSTYLE = 3;
+    /**
+     * Constants to specify a integer number style format.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int INTEGERSTYLE = 4;
+    /**
+     * Constants to specify currency style of format which uses currency 
+     * ISO code to represent currency, for example: "USD3.00".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int ISOCURRENCYSTYLE = 5;
+    /**
+     * Constants to specify currency style of format which uses currency 
+     * long name with plural format to represent currency, for example,
+     * "3.00 US Dollars".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int PLURALCURRENCYSTYLE = 6;
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the integer part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     * @stable ICU 2.0
+     */
+    public static final int INTEGER_FIELD = 0;
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the fraction part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     * @stable ICU 2.0
+     */
+    public static final int FRACTION_FIELD = 1;
+
+    // changed in ICU4J
+    /**
+     * Format an object.  Change: recognizes <code>BigInteger</code>
+     * and <code>BigDecimal</code> objects.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Object number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos)
+    {
+        if (number instanceof Long) {
+            return format(((Long)number).longValue(), toAppendTo, pos);
+        } else if (number instanceof BigInteger) {
+            return format((BigInteger) number, toAppendTo, pos);
+//#if defined(FOUNDATION10)
+//#else
+        } else if (number instanceof java.math.BigDecimal) {
+            return format((java.math.BigDecimal) number, toAppendTo, pos);
+//#endif
+        } else if (number instanceof com.ibm.icu.math.BigDecimal) {
+            return format((com.ibm.icu.math.BigDecimal) number, toAppendTo, pos);
+        } else if (number instanceof CurrencyAmount) {
+            return format((CurrencyAmount)number, toAppendTo, pos);
+        } else if (number instanceof Number) {
+            return format(((Number)number).doubleValue(), toAppendTo, pos);
+        } else {
+            throw new IllegalArgumentException("Cannot format given Object as a Number");
+        }
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    public final Object parseObject(String source,
+                                    ParsePosition parsePosition)
+    {
+        return parse(source, parsePosition);
+    }
+
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object)
+     * @stable ICU 2.0
+     */
+    public final String format(double number) {
+        return format(number,new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object)
+     * @stable ICU 2.0
+     */
+    public final String format(long number) {
+        StringBuffer buf = new StringBuffer(19);
+        FieldPosition pos = new FieldPosition(0);
+        format(number, buf, pos);
+        return buf.toString();
+    }
+    
+    // [NEW]
+    /**
+     * Convenience method to format a BigInteger.
+     * @stable ICU 2.0
+     */
+    public final String format(BigInteger number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    // [NEW]
+    /**
+     * Convenience method to format a BigDecimal.
+     * @stable ICU 2.0
+     */
+    public final String format(java.math.BigDecimal number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+//#endif
+
+    // [NEW]
+    /**
+     * Convenience method to format an ICU BigDecimal.
+     * @stable ICU 2.0
+     */
+    public final String format(com.ibm.icu.math.BigDecimal number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    // [NEW]
+    /**
+     * Convenience method to format a CurrencyAmount.
+     * @stable ICU 3.0
+     */
+    public final String format(CurrencyAmount currAmt) {
+        return format(currAmt, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(double number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+
+    /**
+     * Specialization of format.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(long number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+    // [NEW] 
+    /**
+     * Format a BigInteger.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(BigInteger number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos); 
+//#if defined(FOUNDATION10)
+//#else
+    
+    // [NEW]
+    /**
+     * Format a BigDecimal.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(java.math.BigDecimal number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+//#endif
+
+    // [NEW]
+    /**
+     * Format a BigDecimal.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 2.0
+     */
+    public abstract StringBuffer format(com.ibm.icu.math.BigDecimal number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+    // [NEW]
+    /**
+     * Format a CurrencyAmount.
+     * @see java.text.Format#format(Object, StringBuffer, FieldPosition)
+     * @stable ICU 3.0
+     */
+    public StringBuffer format(CurrencyAmount currAmt,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        // Default implementation -- subclasses may override
+        Currency save = getCurrency(), curr = currAmt.getCurrency();
+        boolean same = curr.equals(save);
+        if (!same) setCurrency(curr);
+        format(currAmt.getNumber(), toAppendTo, pos);
+        if (!same) setCurrency(save);
+        return toAppendTo;
+    }
+
+    /**
+     * Returns a Long if possible (e.g., within the range [Long.MIN_VALUE,
+     * Long.MAX_VALUE] and with no decimals), otherwise a Double.
+     * If IntegerOnly is set, will stop at a decimal
+     * point (or equivalent; e.g., for rational numbers "1 2/3", will stop
+     * after the 1).
+     * Does not throw an exception; if no object can be parsed, index is
+     * unchanged!
+     * @see #isParseIntegerOnly
+     * @see java.text.Format#parseObject(String, ParsePosition)
+     * @stable ICU 2.0
+     */
+    public abstract Number parse(String text, ParsePosition parsePosition);
+
+    /**
+     * Parses text from the beginning of the given string to produce a number.
+     * The method might not use the entire text of the given string.
+     *
+     * @param text A String whose beginning should be parsed.
+     * @return A Number parsed from the string.
+     * @exception ParseException if the beginning of the specified string 
+     * cannot be parsed.
+     * @see #format
+     * @stable ICU 2.0
+     */
+    //Bug 4375399 [Richard/GCL]
+    public Number parse(String text) throws ParseException {
+        ParsePosition parsePosition = new ParsePosition(0);
+        Number result = parse(text, parsePosition);
+        if (parsePosition.getIndex() == 0) {
+            throw new ParseException("Unparseable number: \"" + text + '"',
+                                     parsePosition.getErrorIndex());
+        }
+        return result;
+    }
+
+    // [NEW]
+    /**
+     * Parses text from the given string as a CurrencyAmount.  Unlike
+     * the parse() method, this method will attempt to parse a generic
+     * currency name, searching for a match of this object's locale's
+     * currency display names, or for a 3-letter ISO currency code.
+     * This method will fail if this format is not a currency format,
+     * that is, if it does not contain the currency pattern symbol
+     * (U+00A4) in its prefix or suffix.
+     *
+     * @param text the string to parse
+     * @param pos input-output position; on input, the position within
+     * text to match; must have 0 <= pos.getIndex() < text.length();
+     * on output, the position after the last matched character. If
+     * the parse fails, the position in unchanged upon output.
+     * @return a CurrencyAmount, or null upon failure
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    CurrencyAmount parseCurrency(String text, ParsePosition pos) {
+        // Default implementation only -- subclasses should override
+        Number n = parse(text, pos);
+        return n == null ? null : new CurrencyAmount(n, getEffectiveCurrency());
+    }
+
+    /**
+     * Returns true if this format will parse numbers as integers only.
+     * For example in the English locale, with ParseIntegerOnly true, the
+     * string "1234." would be parsed as the integer value 1234 and parsing
+     * would stop at the "." character.  The decimal separator accepted
+     * by the parse operation is locale-dependent and determined by the
+     * subclass.
+     * @return true if this will parse integers only
+     * @stable ICU 2.0
+     */
+    public boolean isParseIntegerOnly() {
+        return parseIntegerOnly;
+    }
+
+    /**
+     * Sets whether or not numbers should be parsed as integers only.
+     * @param value true if this should parse integers only
+     * @see #isParseIntegerOnly
+     * @stable ICU 2.0
+     */
+    public void setParseIntegerOnly(boolean value) {
+        parseIntegerOnly = value;
+    }
+
+    /**
+     * Sets whether strict parsing is in effect.  When this is true, the
+     * following conditions cause a parse failure (examples use the pattern "#,##0.#"):<ul>
+     * <li>Leading zeros<br>
+     * '00', '0123' fail the parse, but '0' and '0.001' pass</li>
+     * <li>Leading or doubled grouping separators<br>
+     * ',123' and '1,,234" fail</li>
+     * <li>Groups of incorrect length when grouping is used<br>
+     * '1,23' and '1234,567' fail, but '1234' passes</li>
+     * <li>Grouping separators used in numbers followed by exponents<br>
+     * '1,234E5' fails, but '1234E5' and '1,234E' pass ('E' is not an exponent when
+     * not followed by a number)</li>
+     * </ul>
+     * When strict parsing is off, leading zeros and all grouping separators are ignored.
+     * This is the default behavior.
+     * @param value True to enable strict parsing.  Default is false.
+     * @see #isParseStrict
+     * @stable ICU 3.6
+     */
+    public void setParseStrict(boolean value) {
+        parseStrict = value;
+    }
+
+    /**
+     * Return whether strict parsing is in effect.
+     * @return true if strict parsing is in effect
+     * @see #setParseStrict
+     * @stable ICU 3.6
+     */
+    public boolean isParseStrict() {
+        return parseStrict;
+    }
+
+    //============== Locale Stuff =====================
+
+    /**
+     * Returns the default number format for the current default locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getIntegerInstance,
+     * getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 2.0
+     */
+    //Bug 4408066 [Richard/GCL]
+    public final static NumberFormat getInstance() {
+        return getInstance(ULocale.getDefault(), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale-dependent.
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getInstance(ULocale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a specific style number format for default locale.
+     * @param style  number format style
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final static NumberFormat getInstance(int style) {
+        return getInstance(ULocale.getDefault(), style);
+    }
+
+    /**
+     * Returns a specific style number format for a specific locale.
+     * @param inLocale  the specific locale.
+     * @param style     number format style
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static NumberFormat getInstance(Locale inLocale, int style) {
+        return getInstance(ULocale.forLocale(inLocale), style);
+    }
+
+
+    /**
+     * Returns a general-purpose number format for the current default locale.
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getNumberInstance() {
+        return getInstance(ULocale.getDefault(), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getNumberInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getNumberInstance(ULocale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+
+    /**
+     * Returns an integer number format for the current default locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @return a number format for integer values
+     * @stable ICU 2.0
+     */
+    //Bug 4408066 [Richard/GCL]
+    public final static NumberFormat getIntegerInstance() {
+        return getInstance(ULocale.getDefault(), INTEGERSTYLE);
+    }
+
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     * @stable ICU 2.0
+     */
+    //Bug 4408066 [Richard/GCL]
+    public static NumberFormat getIntegerInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), INTEGERSTYLE);
+    }
+
+    /**
+     * Returns an integer number format for the specified locale. The
+     * returned number format is configured to round floating point numbers
+     * to the nearest integer using IEEE half-even rounding (see {@link 
+     * com.ibm.icu.math.BigDecimal#ROUND_HALF_EVEN ROUND_HALF_EVEN}) for formatting,
+     * and to parse only the integer part of an input string (see {@link
+     * #isParseIntegerOnly isParseIntegerOnly}).
+     *
+     * @param inLocale the locale for which a number format is needed
+     * @return a number format for integer values
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getIntegerInstance(ULocale inLocale) {
+        return getInstance(inLocale, INTEGERSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the current default locale.
+     * @return a number format for currency
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getCurrencyInstance() {
+        return getInstance(ULocale.getDefault(), CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the specified locale.
+     * @return a number format for currency
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getCurrencyInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the specified locale.
+     * @return a number format for currency
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getCurrencyInstance(ULocale inLocale) {
+        return getInstance(inLocale, CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the current default locale.
+     * @return a number format for percents
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getPercentInstance() {
+        return getInstance(ULocale.getDefault(), PERCENTSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the specified locale.
+     * @return a number format for percents
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getPercentInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), PERCENTSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the specified locale.
+     * @return a number format for percents
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getPercentInstance(ULocale inLocale) {
+        return getInstance(inLocale, PERCENTSTYLE);
+    }
+
+    // [NEW]
+    /**
+     * Returns a scientific format for the current default locale.
+     * @return a scientific number format
+     * @stable ICU 2.0
+     */
+    public final static NumberFormat getScientificInstance() {
+        return getInstance(ULocale.getDefault(), SCIENTIFICSTYLE);
+    }
+
+    // [NEW]
+    /**
+     * Returns a scientific format for the specified locale.
+     * @return a scientific number format
+     * @stable ICU 2.0
+     */
+    public static NumberFormat getScientificInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale), SCIENTIFICSTYLE);
+    }
+
+    // [NEW]
+    /**
+     * Returns a scientific format for the specified locale.
+     * @return a scientific number format
+     * @stable ICU 3.2
+     */
+    public static NumberFormat getScientificInstance(ULocale inLocale) {
+        return getInstance(inLocale, SCIENTIFICSTYLE);
+    }
+
+    // ===== Factory stuff =====
+    /**
+     * A NumberFormatFactory is used to register new number formats.  The factory
+     * should be able to create any of the predefined formats for each locale it
+     * supports.  When registered, the locales it supports extend or override the
+     * locales already supported by ICU.
+     * <p><b>Note:</b> as of ICU4J 3.2, the default API for NumberFormatFactory uses
+     * ULocale instead of Locale.  Instead of overriding createFormat(Locale, int),
+     * new implementations should override createFactory(ULocale, int).  Note that
+     * one of these two methods <b>MUST</b> be overridden or else an infinite
+     * loop will occur.
+     *
+     * @stable ICU 2.6
+     */
+    public static abstract class NumberFormatFactory {
+        /**
+         * Value passed to format requesting a default number format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_NUMBER = NUMBERSTYLE;
+
+        /**
+         * Value passed to format requesting a currency format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_CURRENCY = CURRENCYSTYLE;
+
+        /**
+         * Value passed to format requesting a percent format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_PERCENT = PERCENTSTYLE;
+
+        /**
+         * Value passed to format requesting a scientific format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_SCIENTIFIC = SCIENTIFICSTYLE;
+
+        /**
+         * Value passed to format requesting an integer format.
+         * @stable ICU 2.6
+         */
+        public static final int FORMAT_INTEGER = INTEGERSTYLE;
+
+        /**
+         * Returns true if this factory is visible.  Default is true.
+         * If not visible, the locales supported by this factory will not
+         * be listed by getAvailableLocales.  This value must not change.
+         * @return true if the factory is visible.
+         * @stable ICU 2.6
+         */
+        ///CLOVER:OFF
+        public boolean visible() {
+            return true;
+        }
+        ///CLOVER:ON
+
+        /**
+         * Returns an immutable collection of the locale names directly 
+         * supported by this factory.
+         * @return the supported locale names.
+         * @stable ICU 2.6
+         */
+         public abstract Set getSupportedLocaleNames();
+
+        /**
+         * Returns a number format of the appropriate type.  If the locale
+         * is not supported, return null.  If the locale is supported, but
+         * the type is not provided by this service, return null.  Otherwise
+         * return an appropriate instance of NumberFormat.
+         * <b>Note:</b> as of ICU4J 3.2, implementations should override
+         * this method instead of createFormat(Locale, int).
+         * @param loc the locale for which to create the format
+         * @param formatType the type of format
+         * @return the NumberFormat, or null.
+         * @stable ICU 3.2
+         */
+        public NumberFormat createFormat(ULocale loc, int formatType) {
+            return createFormat(loc.toLocale(), formatType);
+        }
+
+        /**
+         * Returns a number format of the appropriate type.  If the locale
+         * is not supported, return null.  If the locale is supported, but
+         * the type is not provided by this service, return null.  Otherwise
+         * return an appropriate instance of NumberFormat.
+         * <b>Note:</b> as of ICU4J 3.2, createFormat(ULocale, int) should be
+         * overridden instead of this method.  This method is no longer 
+         * abstract and delegates to that method.
+         * @param loc the locale for which to create the format
+         * @param formatType the type of format
+         * @return the NumberFormat, or null.
+         * @stable ICU 2.6
+         */
+        public NumberFormat createFormat(Locale loc, int formatType) {
+            return createFormat(ULocale.forLocale(loc), formatType);
+        }
+
+        /**
+         * @stable ICU 2.6
+         */
+        protected NumberFormatFactory() {
+        }
+    }
+
+    /**
+     * A NumberFormatFactory that supports a single locale.  It can be visible or invisible.
+     * @stable ICU 2.6
+     */
+    public static abstract class SimpleNumberFormatFactory extends NumberFormatFactory {
+        final Set localeNames;
+        final boolean visible;
+
+        /**
+         * Constructs a SimpleNumberFormatFactory with the given locale.
+         * @stable ICU 2.6
+         */
+        public SimpleNumberFormatFactory(Locale locale) {
+            this(locale, true);
+        }
+        
+        /**
+         * Constructs a SimpleNumberFormatFactory with the given locale and the
+         * visibility.
+         * @stable ICU 2.6
+         */
+        public SimpleNumberFormatFactory(Locale locale, boolean visible) {
+            localeNames = Collections.singleton(ULocale.forLocale(locale).getBaseName());
+            this.visible = visible;
+        }
+
+        /**
+         * Constructs a SimpleNumberFormatFactory with the given locale.
+         * @stable ICU 3.2
+         */
+        public SimpleNumberFormatFactory(ULocale locale) {
+            this(locale, true);
+        }
+        
+        /**
+         * Constructs a SimpleNumberFormatFactory with the given locale and the
+         * visibility.
+         * @stable ICU 3.2
+         */
+        public SimpleNumberFormatFactory(ULocale locale, boolean visible) {
+            localeNames = Collections.singleton(locale.getBaseName());
+            this.visible = visible;
+        }
+
+        /**
+         * {@inheritDoc}
+         * @stable ICU 2.6
+         */
+        public final boolean visible() {
+            return visible;
+        }
+
+        /**
+         * {@inheritDoc}
+         * @stable ICU 2.6
+         */
+        public final Set getSupportedLocaleNames() {
+            return localeNames;
+        }
+    }
+
+    // shim so we can build without service code
+    static abstract class NumberFormatShim {
+        abstract Locale[] getAvailableLocales();
+        abstract ULocale[] getAvailableULocales();
+        abstract Object registerFactory(NumberFormatFactory f);
+        abstract boolean unregister(Object k);
+        abstract NumberFormat createInstance(ULocale l, int k);
+    }
+
+    private static NumberFormatShim shim;
+    private static NumberFormatShim getShim() {
+        // Note: this instantiation is safe on loose-memory-model configurations
+        // despite lack of synchronization, since the shim instance has no state--
+        // it's all in the class init.  The worst problem is we might instantiate
+        // two shim instances, but they'll share the same state so that's ok.
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.text.NumberFormatServiceShim");
+                shim = (NumberFormatShim)cls.newInstance();
+            }
+            catch (MissingResourceException e){
+                throw e;
+            }
+            catch (Exception e) {
+                ///CLOVER:OFF
+               // e.printStackTrace();
+                throw new RuntimeException(e.getMessage());
+                ///CLOVER:ON
+            }
+        }
+        return shim;
+    }
+
+    /**
+     * Get the list of Locales for which NumberFormats are available.
+     * @return the available locales
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return getShim().getAvailableLocales();
+    }
+
+    /**
+     * Get the list of Locales for which NumberFormats are available.
+     * @return the available locales
+     * @draft ICU 3.2 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return getShim().getAvailableULocales();
+    }
+
+    /**
+     * Registers a new NumberFormatFactory.  The factory is adopted by
+     * the service and must not be modified.  The returned object is a
+     * key that can be used to unregister this factory.
+     * @param factory the factory to register
+     * @return a key with which to unregister the factory
+     * @stable ICU 2.6 
+     */
+    public static Object registerFactory(NumberFormatFactory factory) {
+        if (factory == null) {
+            throw new IllegalArgumentException("factory must not be null");
+        }
+        return getShim().registerFactory(factory);
+    }
+
+    /**
+     * Unregister the factory or instance associated with this key (obtained from
+     * registerInstance or registerFactory).
+     * @param registryKey a key obtained from registerFactory
+     * @return true if the object was successfully unregistered
+     * @stable ICU 2.6
+     */
+    public static boolean unregister(Object registryKey) {
+        if (registryKey == null) {
+            throw new IllegalArgumentException("registryKey must not be null");
+        }
+
+        if (shim == null) {
+            return false;
+        }
+
+        return shim.unregister(registryKey);
+    }
+
+    // ===== End of factory stuff =====
+
+    /**
+     * Overrides hashCode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return maximumIntegerDigits * 37 + maxFractionDigits;
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Overrides equals.  Two NumberFormats are equal if they are of the same class
+     * and the settings (groupingUsed, parseIntegerOnly, maximumIntegerDigits, etc.
+     * are equal.
+     * @param obj the object to compare against
+     * @return true if the object is equal to this.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)
+            return true;
+        if (getClass() != obj.getClass())
+            return false;
+        NumberFormat other = (NumberFormat) obj;
+        return maximumIntegerDigits == other.maximumIntegerDigits
+            && minimumIntegerDigits == other.minimumIntegerDigits
+            && maximumFractionDigits == other.maximumFractionDigits
+            && minimumFractionDigits == other.minimumFractionDigits
+            && groupingUsed == other.groupingUsed
+            && parseIntegerOnly == other.parseIntegerOnly
+            && parseStrict == other.parseStrict;
+    }
+
+    /**
+     * Overrides Cloneable.
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        NumberFormat other = (NumberFormat) super.clone();
+        return other;
+    }
+
+    /**
+     * Returns true if grouping is used in this format. For example, in the
+     * en_US locale, with grouping on, the number 1234567 will be formatted
+     * as "1,234,567". The grouping separator as well as the size of each group
+     * is locale-dependent and is determined by subclasses of NumberFormat.
+     * Grouping affects both parsing and formatting.
+     * @return true if grouping is used
+     * @see #setGroupingUsed
+     * @stable ICU 2.0
+     */
+    public boolean isGroupingUsed() {
+        return groupingUsed;
+    }
+
+    /**
+     * Sets whether or not grouping will be used in this format.  Grouping
+     * affects both parsing and formatting.
+     * @see #isGroupingUsed
+     * @param newValue true to use grouping.
+     * @stable ICU 2.0
+     */
+    public void setGroupingUsed(boolean newValue) {
+        groupingUsed = newValue;
+    }
+
+    /**
+     * Returns the maximum number of digits allowed in the integer portion of a
+     * number.  The default value is 40, which subclasses can override.
+     * When formatting, the exact behavior when this value is exceeded is
+     * subclass-specific.  When parsing, this has no effect.
+     * @return the maximum number of integer digits
+     * @see #setMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public int getMaximumIntegerDigits() {
+        return maximumIntegerDigits;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. This must be >= minimumIntegerDigits.  If the
+     * new value for maximumIntegerDigits is less than the current value
+     * of minimumIntegerDigits, then minimumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of integer digits to be shown; if
+     * less than zero, then zero is used.  Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        maximumIntegerDigits = Math.max(0,newValue);
+        if (minimumIntegerDigits > maximumIntegerDigits)
+            minimumIntegerDigits = maximumIntegerDigits;
+    }
+
+    /**
+     * Returns the minimum number of digits allowed in the integer portion of a
+     * number.  The default value is 1, which subclasses can override.
+     * When formatting, if this value is not reached, numbers are padded on the
+     * left with the locale-specific '0' character to ensure at least this
+     * number of integer digits.  When parsing, this has no effect.
+     * @return the minimum number of integer digits
+     * @see #setMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public int getMinimumIntegerDigits() {
+        return minimumIntegerDigits;
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number.  This must be <= maximumIntegerDigits.  If the
+     * new value for minimumIntegerDigits is more than the current value
+     * of maximumIntegerDigits, then maximumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of integer digits to be shown; if
+     * less than zero, then zero is used. Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumIntegerDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        minimumIntegerDigits = Math.max(0,newValue);
+        if (minimumIntegerDigits > maximumIntegerDigits)
+            maximumIntegerDigits = minimumIntegerDigits;
+    }
+
+    /**
+     * Returns the maximum number of digits allowed in the fraction
+     * portion of a number.  The default value is 3, which subclasses
+     * can override.  When formatting, the exact behavior when this
+     * value is exceeded is subclass-specific.  When parsing, this has 
+     * no effect.
+     * @return the maximum number of fraction digits
+     * @see #setMaximumFractionDigits
+     * @stable ICU 2.0 
+     */
+    public int getMaximumFractionDigits() {
+        return maximumFractionDigits;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. This must be >= minimumFractionDigits.  If the
+     * new value for maximumFractionDigits is less than the current value
+     * of minimumFractionDigits, then minimumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of fraction digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        maximumFractionDigits = Math.max(0,newValue);
+        if (maximumFractionDigits < minimumFractionDigits)
+            minimumFractionDigits = maximumFractionDigits;
+    }
+
+    /**
+     * Returns the minimum number of digits allowed in the fraction portion of a
+     * number.  The default value is 0, which subclasses can override.
+     * When formatting, if this value is not reached, numbers are padded on
+     * the right with the locale-specific '0' character to ensure at least
+     * this number of fraction digits.  When parsing, this has no effect.
+     * @return the minimum number of fraction digits
+     * @see #setMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public int getMinimumFractionDigits() {
+        return minimumFractionDigits;
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number.  This must be <= maximumFractionDigits.  If the
+     * new value for minimumFractionDigits exceeds the current value
+     * of maximumFractionDigits, then maximumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the minimum number of fraction digits to be shown; if
+     * less than zero, then zero is used.  Subclasses might enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumFractionDigits
+     * @stable ICU 2.0
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        minimumFractionDigits = Math.max(0,newValue);
+        if (maximumFractionDigits < minimumFractionDigits)
+            maximumFractionDigits = minimumFractionDigits;
+    }
+
+    /**
+     * Sets the <tt>Currency</tt> object used to display currency
+     * amounts.  This takes effect immediately, if this format is a
+     * currency format.  If this format is not a currency format, then
+     * the currency object is used if and when this object becomes a
+     * currency format.
+     * @param theCurrency new currency object to use.  May be null for
+     * some subclasses.
+     * @stable ICU 2.6
+     */
+    public void setCurrency(Currency theCurrency) {
+        currency = theCurrency;
+    }
+
+    /**
+     * Gets the <tt>Currency</tt> object used to display currency
+     * amounts.  This may be null.
+     * @stable ICU 2.6
+     */
+    public Currency getCurrency() {
+        return currency;
+    }
+    
+    /**
+     * Returns the currency in effect for this formatter.  Subclasses
+     * should override this method as needed.  Unlike getCurrency(),
+     * this method should never return null.
+     * @return a non-null Currency
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected Currency getEffectiveCurrency() {
+        Currency c = getCurrency();
+        if (c == null) {
+            ULocale uloc = getLocale(ULocale.VALID_LOCALE);
+            if (uloc == null) {
+                uloc = ULocale.getDefault();
+            }
+            c = Currency.getInstance(uloc);
+        }
+        return c;
+    }
+
+    /**
+     * Get the rounding mode used in this NumberFormat.  The default implementation of
+     * tis method in NumberFormat always throws <code>UnsupportedOperationException</code>.
+     * @return A rounding mode, between <code>BigDecimal.ROUND_UP</code>
+     * and <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @see #setRoundingMode(int)
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getRoundingMode() {
+        throw new UnsupportedOperationException("getRoundingMode must be implemented by the subclass implementation.");
+    }
+
+    /**
+     * Set the rounding mode used in this NumberFormat.  The default implementation of
+     * tis method in NumberFormat always throws <code>UnsupportedOperationException</code>.
+     * @param roundingMode A rounding mode, between
+     * <code>BigDecimal.ROUND_UP</code> and
+     * <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @see #getRoundingMode()
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setRoundingMode(int roundingMode) {
+        throw new UnsupportedOperationException("setRoundingMode must be implemented by the subclass implementation.");
+    }
+
+
+    /**
+     * Returns a specific style number format for a specific locale.
+     * @param desiredLocale  the specific locale.
+     * @param choice         number format style
+     * @throws IllegalArgumentException  if choice is not one of
+     *                                   NUMBERSTYLE, CURRENCYSTYLE, 
+     *                                   PERCENTSTYLE, SCIENTIFICSTYLE, 
+     *                                   INTEGERSTYLE, 
+     *                                   ISOCURRENCYSTYLE, PLURALCURRENCYSTYLE,
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static NumberFormat getInstance(ULocale desiredLocale, int choice) {
+        if (choice < NUMBERSTYLE || choice > PLURALCURRENCYSTYLE) {
+            throw new IllegalArgumentException("choice should be from NUMBERSTYLE to PLURALCURRENCYSTYLE");
+        }       
+//          if (shim == null) {
+//              return createInstance(desiredLocale, choice);
+//          } else {
+//              // TODO: shims must call setLocale() on object they create
+//              return getShim().createInstance(desiredLocale, choice);
+//          }
+        return getShim().createInstance(desiredLocale, choice);
+    }
+
+    // =======================privates===============================
+    // Hook for service
+    // [NEW]
+    static NumberFormat createInstance(ULocale desiredLocale, int choice) {
+        // If the choice is PLURALCURRENCYSTYLE, the pattern is not a single
+        // pattern, it is a pattern set, so we do not need to get them here.
+        // If the choice is ISOCURRENCYSTYLE, the pattern is the currrency
+        // pattern in the locale but by replacing the single currency sign 
+        // with double currency sign.
+        String pattern = getPattern(desiredLocale, choice);
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols(desiredLocale);
+        
+        // Here we assume that the locale passed in is in the canonical
+        // form, e.g: pt_PT_@currency=PTE not pt_PT_PREEURO
+        // This style wont work for currency plural format.
+        // For currency plural format, the pattern is get from 
+        // the locale (from CurrencyUnitPatterns) without override.
+        if(choice == CURRENCYSTYLE || choice == ISOCURRENCYSTYLE){
+            String temp = symbols.getCurrencyPattern();
+            if(temp!=null){
+                pattern = temp;
+            }
+        }
+
+        // replace single currency sign in the pattern with double currency sign
+        // if the choice is ISOCURRENCYSTYLE.
+        if (choice == ISOCURRENCYSTYLE) {
+            pattern = Utility.replace(pattern, "\u00A4", doubleCurrencyStr);
+        }
+
+        DecimalFormat format = new DecimalFormat(pattern, symbols, choice);
+        // System.out.println("loc: " + desiredLocale + " choice: " + choice + " pat: " + pattern + " sym: " + symbols + " result: " + format);
+                                 
+        /*Bug 4408066
+         Add codes for the new method getIntegerInstance() [Richard/GCL]
+        */
+        // TODO: revisit this -- this is almost certainly not the way we want
+        // to do this.  aliu 1/6/2004
+        if (choice == INTEGERSTYLE) {
+            format.setMaximumFractionDigits(0);
+            format.setDecimalSeparatorAlwaysShown(false);
+            format.setParseIntegerOnly(true);
+        }
+        
+        // TODO: the actual locale of the *pattern* may differ from that
+        // for the *symbols*.  For now, we use the data for the symbols.
+        // Revisit this.
+        ULocale valid = symbols.getLocale(ULocale.VALID_LOCALE);
+        ULocale actual = symbols.getLocale(ULocale.ACTUAL_LOCALE);
+        format.setLocale(valid, actual);
+        
+        return format;
+    }
+
+    /**
+     * Returns the pattern for the provided locale and choice.
+     * @param forLocale the locale of the data.
+     * @param choice the pattern format.
+     * @return the pattern
+     * @deprecated ICU 3.4 subclassers should override getPattern(ULocale, int) instead of this method.
+     */
+    protected static String getPattern(Locale forLocale, int choice) {
+        return getPattern(ULocale.forLocale(forLocale), choice);
+    }
+
+    /**
+     * Returns the pattern for the provided locale and choice.
+     * @param forLocale the locale of the data.
+     * @param choice the pattern format.
+     * @return the pattern
+     * @stable ICU 3.2
+     */
+    protected static String getPattern(ULocale forLocale, int choice) {
+
+        /* The following code takes care of a few cases where the
+         * resource data in the underlying JDK lags the new features
+         * we have added to ICU4J: scientific notation, rounding, and
+         * secondary grouping.
+         *
+         * We detect these cases here and return various hard-coded
+         * resource data.  This is the simplest solution for now, but
+         * it is not a good long-term mechanism.
+         * 
+         * We should replace this code with a data-driven mechanism
+         * that reads the bundle com.ibm.icu.impl.data.LocaleElements
+         * and parses an exception table that overrides the standard
+         * data at java.text.resource.LocaleElements*.java.
+         * Alternatively, we should create our own copy of the
+         * resource data, and use that exclusively.
+         */
+
+        // TEMPORARY, until we get scientific patterns into the main
+        // resources:  Retrieve scientific patterns from our resources.
+        if (choice == SCIENTIFICSTYLE) {
+            // Temporarily hard code; retrieve from resource later
+            /*For ICU compatibility [Richard/GCL]*/
+            return "#E0";
+            // return NumberFormat.getBaseStringArray("NumberPatterns")[SCIENTIFICSTYLE];
+        }
+        // TEMPORARY: Use rounding for Swiss currency
+        //if (choice == CURRENCYSTYLE &&
+        //    forLocale.getCountry().equals("CH")) {
+        //    return "'Fr. '#,##0.05;'Fr.-'#,##0.05";
+        //}
+        // TEMPORARY: Special case IN number format
+        //if (choice == NUMBERSTYLE &&
+        //    forLocale.getCountry().equals("IN")) {
+        //    return "#,##,##0.###";
+        //}
+
+        // {dlf}
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.
+            getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, forLocale);
+        String[] numberPatterns = rb.getStringArray("NumberPatterns");
+
+        /* {dlf}
+        // Try the cache first
+        String[] numberPatterns = (String[]) cachedLocaleData.get(forLocale);
+        if (numberPatterns == null) {
+            OverlayBundle resource = new OverlayBundle(new String[]
+                { "com.ibm.icu.impl.data.LocaleElements", RESOURCE_BASE }, forLocale);
+            numberPatterns = resource.getStringArray("NumberPatterns");
+            // Update the cache
+            cachedLocaleData.put(forLocale, numberPatterns); 
+        }
+        */
+
+        /*Bug 4408066
+         Add codes for the new method getIntegerInstance() [Richard/GCL]
+        */
+        /* for ISOCURRENCYSTYLE and PLURALCURRENCYSTYLE,
+         * the pattern is the same as the pattern of CURRENCYSTYLE
+         * but by replacing the single currency sign with
+         * double currency sign or triple currency sign.
+         */
+        int entry = (choice == INTEGERSTYLE) ? NUMBERSTYLE : 
+                ((choice == ISOCURRENCYSTYLE || choice == PLURALCURRENCYSTYLE)?
+                CURRENCYSTYLE : choice); //[Richard/GCL]
+        return numberPatterns[entry]; //[Richard/GCL]
+    }
+
+    /**
+     * First, read in the default serializable data.
+     *
+     * Then, if <code>serialVersionOnStream</code> is less than 1, indicating that
+     * the stream was written by JDK 1.1,
+     * set the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     * to be equal to the <code>byte</code> fields such as <code>maxIntegerDigits</code>,
+     * since the <code>int</code> fields were not present in JDK 1.1.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        ///CLOVER:OFF
+        // we don't have serialization data for this format
+        if (serialVersionOnStream < 1) {
+            // Didn't have additional int fields, reassign to use them.
+            maximumIntegerDigits = maxIntegerDigits;
+            minimumIntegerDigits = minIntegerDigits;
+            maximumFractionDigits = maxFractionDigits;
+            minimumFractionDigits = minFractionDigits;
+        }
+        ///CLOVER:ON
+        /*Bug 4185761
+          Validate the min and max fields [Richard/GCL]
+        */
+        if (minimumIntegerDigits > maximumIntegerDigits ||
+            minimumFractionDigits > maximumFractionDigits ||
+            minimumIntegerDigits < 0 || minimumFractionDigits < 0) {
+            throw new InvalidObjectException("Digit count range invalid");
+        }
+        serialVersionOnStream = currentSerialVersion;
+    }
+
+    /**
+     * Write out the default serializable data, after first setting
+     * the <code>byte</code> fields such as <code>maxIntegerDigits</code> to be
+     * equal to the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     * (or to <code>Byte.MAX_VALUE</code>, whichever is smaller), for compatibility
+     * with the JDK 1.1 version of the stream format.
+     */
+    private void writeObject(ObjectOutputStream stream)
+         throws IOException
+    {
+        maxIntegerDigits = (maximumIntegerDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)maximumIntegerDigits;
+        minIntegerDigits = (minimumIntegerDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)minimumIntegerDigits;
+        maxFractionDigits = (maximumFractionDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)maximumFractionDigits;
+        minFractionDigits = (minimumFractionDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)minimumFractionDigits;
+        stream.defaultWriteObject();
+    }
+
+// Unused -- Alan 2003-05
+//    /**
+//     * Cache to hold the NumberPatterns of a Locale.
+//     */
+//    private static final Hashtable cachedLocaleData = new Hashtable(3);
+
+      private static final char[] doubleCurrencySign = {0xA4, 0xA4};
+      private static final String doubleCurrencyStr = new String(doubleCurrencySign);
+
+    /*Bug 4408066
+      Add Field for the new method getIntegerInstance() [Richard/GCL]
+    */
+
+    /**
+     * True if the the grouping (i.e. thousands) separator is used when
+     * formatting and parsing numbers.
+     *
+     * @serial
+     * @see #isGroupingUsed
+     */
+    private boolean groupingUsed = true;
+
+    /**
+     * The maximum number of digits allowed in the integer portion of a
+     * number.  <code>maxIntegerDigits</code> must be greater than or equal to
+     * <code>minIntegerDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>maximumIntegerDigits</code> is used instead.
+     * When writing to a stream, <code>maxIntegerDigits</code> is set to
+     * <code>maximumIntegerDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMaximumIntegerDigits
+     */
+    private byte    maxIntegerDigits = 40;
+
+    /**
+     * The minimum number of digits allowed in the integer portion of a
+     * number.  <code>minimumIntegerDigits</code> must be less than or equal to
+     * <code>maximumIntegerDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>minimumIntegerDigits</code> is used instead.
+     * When writing to a stream, <code>minIntegerDigits</code> is set to
+     * <code>minimumIntegerDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMinimumIntegerDigits
+     */
+    private byte    minIntegerDigits = 1;
+
+    /**
+     * The maximum number of digits allowed in the fractional portion of a
+     * number.  <code>maximumFractionDigits</code> must be greater than or equal to
+     * <code>minimumFractionDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>maximumFractionDigits</code> is used instead.
+     * When writing to a stream, <code>maxFractionDigits</code> is set to
+     * <code>maximumFractionDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMaximumFractionDigits
+     */
+    private byte    maxFractionDigits = 3;    // invariant, >= minFractionDigits
+
+    /**
+     * The minimum number of digits allowed in the fractional portion of a
+     * number.  <code>minimumFractionDigits</code> must be less than or equal to
+     * <code>maximumFractionDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>minimumFractionDigits</code> is used instead.
+     * When writing to a stream, <code>minFractionDigits</code> is set to
+     * <code>minimumFractionDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMinimumFractionDigits
+     */
+    private byte    minFractionDigits = 0;
+
+    /**
+     * True if this format will parse numbers as integers only.
+     *
+     * @serial
+     * @see #isParseIntegerOnly
+     */
+    private boolean parseIntegerOnly = false;
+
+    // new fields for 1.2.  byte is too small for integer digits.
+
+    /**
+     * The maximum number of digits allowed in the integer portion of a
+     * number.  <code>maximumIntegerDigits</code> must be greater than or equal to
+     * <code>minimumIntegerDigits</code>.
+     *
+     * @serial
+     * @see #getMaximumIntegerDigits
+     */
+    private int    maximumIntegerDigits = 40;
+
+    /**
+     * The minimum number of digits allowed in the integer portion of a
+     * number.  <code>minimumIntegerDigits</code> must be less than or equal to
+     * <code>maximumIntegerDigits</code>.
+     *
+     * @serial
+     * @see #getMinimumIntegerDigits
+     */
+    private int    minimumIntegerDigits = 1;
+
+    /**
+     * The maximum number of digits allowed in the fractional portion of a
+     * number.  <code>maximumFractionDigits</code> must be greater than or equal to
+     * <code>minimumFractionDigits</code>.
+     *
+     * @serial
+     * @see #getMaximumFractionDigits
+     */
+    private int    maximumFractionDigits = 3;    // invariant, >= minFractionDigits
+
+    /**
+     * The minimum number of digits allowed in the fractional portion of a
+     * number.  <code>minimumFractionDigits</code> must be less than or equal to
+     * <code>maximumFractionDigits</code>.
+     *
+     * @serial
+     * @see #getMinimumFractionDigits
+     */
+    private int    minimumFractionDigits = 0;
+
+    /**
+     * Currency object used to format currencies.  Subclasses may
+     * ignore this if they are not currency formats.  This will be
+     * null unless a subclass sets it to a non-null value.
+     * @since ICU 2.6
+     */
+    private Currency currency;
+
+    static final int currentSerialVersion = 1;
+
+    /**
+     * Describes the version of <code>NumberFormat</code> present on the stream.
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (or uninitialized): the JDK 1.1 version of the stream format.
+     *     In this version, the <code>int</code> fields such as
+     *     <code>maximumIntegerDigits</code> were not present, and the <code>byte</code>
+     *     fields such as <code>maxIntegerDigits</code> are used instead.
+     *
+     * <li><b>1</b>: the JDK 1.2 version of the stream format.  The values of the
+     *     <code>byte</code> fields such as <code>maxIntegerDigits</code> are ignored,
+     *     and the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     *     are used instead.
+     * </ul>
+     * When streaming out a <code>NumberFormat</code>, the most recent format
+     * (corresponding to the highest allowable <code>serialVersionOnStream</code>)
+     * is always written.
+     *
+     * @serial
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    // Removed "implements Cloneable" clause.  Needs to update serialization
+    // ID for backward compatibility.
+    private static final long serialVersionUID = -2308460125733713944L;
+
+    /**
+     * Empty constructor.  Public for compatibily with JDK which lets the
+     * compiler generate a default public constructor even though this is
+     * an abstract class.
+     * @stable ICU 2.6
+     */
+    public NumberFormat() {
+    }
+
+    // new in ICU4J 3.6
+    private boolean parseStrict;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * The instances of this inner class are used as attribute keys and values
+     * in AttributedCharacterIterator that
+     * NumberFormat.formatToCharacterIterator() method returns.
+     * <p>
+     * There is no public constructor to this class, the only instances are the
+     * constants defined here.
+     * <p>
+     * @stable ICU 3.6
+     */
+    public static class Field extends Format.Field {
+        // generated by serialver from JDK 1.4.1_01
+        static final long serialVersionUID = -4516273749929385842L;
+        
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field SIGN = new Field("sign");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field INTEGER = new Field("integer");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field FRACTION = new Field("fraction");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field EXPONENT = new Field("exponent");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field EXPONENT_SIGN = new Field("exponent sign");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field EXPONENT_SYMBOL = new Field("exponent symbol");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field DECIMAL_SEPARATOR = new Field("decimal separator");
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field GROUPING_SEPARATOR = new Field("grouping separator");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field PERCENT = new Field("percent");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field PERMILLE = new Field("per mille");
+
+        /**
+         * @stable ICU 3.6
+         */
+        public static final Field CURRENCY = new Field("currency");
+
+        /**
+         * Constructs a new instance of NumberFormat.Field with the given field
+         * name.
+         * @stable ICU 3.6
+         */
+        protected Field(String fieldName) {
+            super(fieldName);
+        }
+
+        /**
+         * serizalization method resolve instances to the constant
+         * NumberFormat.Field values
+         * @stable ICU 3.6
+         */
+        protected Object readResolve() throws InvalidObjectException {
+            if (this.getName().equals(INTEGER.getName()))
+                return INTEGER;
+            if (this.getName().equals(FRACTION.getName()))
+                return FRACTION;
+            if (this.getName().equals(EXPONENT.getName()))
+                return EXPONENT;
+            if (this.getName().equals(EXPONENT_SIGN.getName()))
+                return EXPONENT_SIGN;
+            if (this.getName().equals(EXPONENT_SYMBOL.getName()))
+                return EXPONENT_SYMBOL;
+            if (this.getName().equals(CURRENCY.getName()))
+                return CURRENCY;
+            if (this.getName().equals(DECIMAL_SEPARATOR.getName()))
+                return DECIMAL_SEPARATOR;
+            if (this.getName().equals(GROUPING_SEPARATOR.getName()))
+                return GROUPING_SEPARATOR;
+            if (this.getName().equals(PERCENT.getName()))
+                return PERCENT;
+            if (this.getName().equals(PERMILLE.getName()))
+                return PERMILLE;
+            if (this.getName().equals(SIGN.getName()))
+                return SIGN;
+
+            throw new InvalidObjectException("An invalid object.");
+        }
+    }
+//#endif
+}
diff --git a/src/com/ibm/icu/text/NumberFormatServiceShim.java b/src/com/ibm/icu/text/NumberFormatServiceShim.java
new file mode 100644
index 0000000..efdf562
--- /dev/null
+++ b/src/com/ibm/icu/text/NumberFormatServiceShim.java
@@ -0,0 +1,117 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.Locale;
+import java.util.Set;
+import java.util.MissingResourceException;
+
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.Key;
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKey;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.NumberFormat.NumberFormatFactory;
+import com.ibm.icu.util.ULocale;
+
+class NumberFormatServiceShim extends NumberFormat.NumberFormatShim {
+
+    Locale[] getAvailableLocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableULocales();
+    }
+
+    private static final class NFFactory extends LocaleKeyFactory {
+        private NumberFormatFactory delegate;
+
+        NFFactory(NumberFormatFactory delegate) {
+            super(delegate.visible() ? VISIBLE : INVISIBLE);
+
+            this.delegate = delegate;
+        }
+
+        public Object create(Key key, ICUService srvc) {
+            if (handlesKey(key)) {
+                LocaleKey lkey = (LocaleKey)key;
+                ULocale loc = lkey.canonicalLocale();
+                int kind = lkey.kind();
+
+                Object result = delegate.createFormat(loc, kind);
+                if (result == null) {
+                    result = srvc.getKey(key, null, this);
+                }
+                return result;
+            }
+            return null;
+        }
+
+        protected Set getSupportedIDs() {
+            return delegate.getSupportedLocaleNames();
+        }
+    }
+
+    Object registerFactory(NumberFormatFactory factory) {
+        return service.registerFactory(new NFFactory(factory));
+    }
+
+    boolean unregister(Object registryKey) {
+        return service.unregisterFactory((Factory)registryKey);
+    }
+
+    NumberFormat createInstance(ULocale desiredLocale, int choice) {
+
+    // use service cache
+//          if (service.isDefault()) {
+//              return NumberFormat.createInstance(desiredLocale, choice);
+//          }
+
+        ULocale[] actualLoc = new ULocale[1];
+        if (desiredLocale.equals(ULocale.ROOT)) {
+            desiredLocale = ULocale.ROOT;
+        }
+        NumberFormat fmt = (NumberFormat)service.get(desiredLocale, choice,
+                                                     actualLoc);
+        if (fmt == null) {
+            throw new MissingResourceException("Unable to construct NumberFormat", "", "");
+        }
+        fmt = (NumberFormat)fmt.clone();
+
+        ULocale uloc = actualLoc[0];
+        fmt.setLocale(uloc, uloc); // services make no distinction between actual & valid
+        return fmt;
+    }
+
+    private static class NFService extends ICULocaleService {
+        NFService() {
+            super("NumberFormat");
+
+            class RBNumberFormatFactory extends ICUResourceBundleFactory {
+                protected Object handleCreate(ULocale loc, int kind, ICUService srvc) {
+                    return NumberFormat.createInstance(loc, kind);
+                }
+            }
+                
+            this.registerFactory(new RBNumberFormatFactory());
+            markDefault();
+        }
+    }
+    private static ICULocaleService service = new NFService();
+}
diff --git a/src/com/ibm/icu/text/PluralFormat.java b/src/com/ibm/icu/text/PluralFormat.java
new file mode 100644
index 0000000..a0b8550
--- /dev/null
+++ b/src/com/ibm/icu/text/PluralFormat.java
@@ -0,0 +1,668 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.util.ULocale;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * <p>
+ * <code>PluralFormat</code> supports the creation of internationalized
+ * messages with plural inflection. It is based on <i>plural
+ * selection</i>, i.e. the caller specifies messages for each
+ * plural case that can appear in the users language and the
+ * <code>PluralFormat</code> selects the appropriate message based on
+ * the number.
+ * </p>
+ * <h4>The Problem of Plural Forms in Internationalized Messages</h4>
+ * <p>
+ * Different languages have different ways to inflect
+ * plurals. Creating internationalized messages that include plural
+ * forms is only feasible when the framework is able to handle plural
+ * forms of <i>all</i> languages correctly. <code>ChoiceFormat</code>
+ * doesn't handle this well, because it attaches a number interval to
+ * each message and selects the message whose interval contains a
+ * given number. This can only handle a finite number of
+ * intervals. But in some languages, like Polish, one plural case
+ * applies to infinitely many intervals (e.g., paucal applies to
+ * numbers ending with 2, 3, or 4 except those ending with 12, 13, or
+ * 14). Thus <code>ChoiceFormat</code> is not adequate.
+ * </p><p>
+ * <code>PluralFormat</code> deals with this by breaking the problem
+ * into two parts:
+ * <ul>
+ * <li>It uses <code>PluralRules</code> that can define more complex
+ *     conditions for a plural case than just a single interval. These plural
+ *     rules define both what plural cases exist in a language, and to
+ *     which numbers these cases apply.
+ * <li>It provides predefined plural rules for many locales. Thus, the programmer
+ *     need not worry about the plural cases of a language. On the flip side,
+ *     the localizer does not have to specify the plural cases; he can simply
+ *     use the predefined keywords. The whole plural formatting of messages can
+ *     be done using localized patterns from resource bundles.
+ * </ul>
+ * </p>
+ * <h4>Usage of <code>PluralFormat</code></h4>
+ * <p>
+ * This discussion assumes that you use <code>PluralFormat</code> with
+ * a predefined set of plural rules. You can create one using one of
+ * the constructors that takes a <code>ULocale</code> object. To
+ * specify the message pattern, you can either pass it to the
+ * constructor or set it explicitly using the
+ * <code>applyPattern()</code> method. The <code>format()</code>
+ * method takes a number object and selects the message of the
+ * matching plural case. This message will be returned.
+ * </p>
+ * <h5>Patterns and Their Interpretation</h5>
+ * <p>
+ * The pattern text defines the message output for each plural case of the
+ * used locale. The pattern is a sequence of
+ * <code><i>caseKeyword</i>{<i>message</i>}</code> clauses, separated by white
+ * space characters. Each clause assigns the message <code><i>message</i></code>
+ * to the plural case identified by <code><i>caseKeyword</i></code>.
+ * </p><p>
+ * You always have to define a message text for the default plural case
+ * "<code>other</code>" which is contained in every rule set. If the plural
+ * rules of the <code>PluralFormat</code> object do not contain a plural case
+ * identified by <code><i>caseKeyword</i></code>, an
+ * <code>IllegalArgumentException</code> is thrown.
+ * If you do not specify a message text for a particular plural case, the
+ * message text of the plural case "<code>other</code>" gets assigned to this
+ * plural case. If you specify more than one message for the same plural case,
+ * an <code>IllegalArgumentException</code> is thrown.
+ * <br/>
+ * Spaces between <code><i>caseKeyword</i></code> and
+ * <code><i>message</i></code>  will be ignored; spaces within
+ * <code><i>message</i></code> will be preserved.
+ * </p><p>
+ * The message text for a particular plural case may contain other message
+ * format patterns. <code>PluralFormat</code> preserves these so that you
+ * can use the strings produced by <code>PluralFormat</code> with other
+ * formatters. If you are using <code>PluralFormat</code> inside a
+ * <code>MessageFormat</code> pattern, <code>MessageFormat</code> will
+ * automatically evaluate the resulting format pattern.<br/>
+ * Thus, curly braces (<code>{</code>, <code>}</code>) are <i>only</i> allowed
+ * in message texts to define a nested format pattern.<br/>
+ * The pound sign (<code>#</code>) will be interpreted as the number placeholder
+ * in the message text, if it is not contained in curly braces (to preserve
+ * <code>NumberFormat</code> patterns). <code>PluralFormat</code> will
+ * replace each of those pound signs by the number passed to the
+ * <code>format()</code> method. It will be formatted using a
+ * <code>NumberFormat</code> for the <code>PluralFormat</code>'s locale. If you
+ * need special number formatting, you have to explicitly specify a
+ * <code>NumberFormat</code> for the <code>PluralFormat</code> to use.
+ * </p>
+ * Example
+ * <pre>
+ * MessageFormat msgFmt = new MessageFormat("{0, plural, " +
+ *     "one{{0, number, C''''est #,##0.0#  fichier}} " +
+ *     "other {Ce sont # fichiers}} dans la liste.",
+ *     new ULocale("fr"));
+ * Object args[] = {new Long(0)};
+ * System.out.println(msgFmt.format(args));
+ * args = {new Long(3)};
+ * System.out.println(msgFmt.format(args));
+ * </pre>
+ * Produces the output:<br />
+ * <code>C'est 0,0 fichier dans la liste.</code><br />
+ * <code>Ce sont 3 fichiers dans la liste."</code>
+ * <p>
+ * <strong>Note:</strong><br />
+ *   Currently <code>PluralFormat</code>
+ *   does not make use of quotes like <code>MessageFormat</code>.
+ *   If you use plural format strings with <code>MessageFormat</code> and want
+ *   to use a quote sign "<code>'</code>", you have to write "<code>''</code>".
+ *   <code>MessageFormat</code> unquotes this pattern and  passes the unquoted
+ *   pattern to <code>PluralFormat</code>. It's a bit trickier if you use
+ *   nested formats that do quoting. In the example above, we wanted to insert
+ *   "<code>'</code>" in the number format pattern. Since
+ *   <code>NumberFormat</code> supports quotes, we had to insert
+ *   "<code>''</code>". But since <code>MessageFormat</code> unquotes the
+ *   pattern before it gets passed to <code>PluralFormat</code>, we have to
+ *   double these quotes, i.e. write "<code>''''</code>".
+ * </p>
+ * <h4>Defining Custom Plural Rules</h4>
+ * <p>If you need to use <code>PluralFormat</code> with custom rules, you can
+ * create a <code>PluralRules</code> object and pass it to
+ * <code>PluralFormat</code>'s constructor. If you also specify a locale in this
+ * constructor, this locale will be used to format the number in the message
+ * texts.
+ * </p><p>
+ * For more information about <code>PluralRules</code>, see
+ * {@link PluralRules}.
+ * </p>
+ *
+ * @author tschumann (Tim Schumann)
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ */
+public class PluralFormat extends UFormat {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * The locale used for standard number formatting and getting the predefined
+     * plural rules (if they were not defined explicitely).
+     */
+    private ULocale ulocale = null;
+
+    /**
+     * The plural rules used for plural selection.
+     */
+    private PluralRules pluralRules = null;
+
+    /**
+     * The applied pattern string.
+     */
+    private String pattern = null;
+
+    /**
+     * The format messages for each plural case. It is a mapping:
+     *  <code>String</code>(plural case keyword) --&gt; <code>String</code>
+     *  (message for this plural case).
+     */
+    private Map parsedValues = null;
+
+    /**
+     * This <code>NumberFormat</code> is used for the standard formatting of
+     * the number inserted into the message.
+     */
+    private NumberFormat numberFormat = null;
+
+    /**
+     * Creates a new <code>PluralFormat</code> for the default locale.
+     * This locale will be used to get the set of plural rules and for standard
+     * number formatting.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat() {
+        init(null, ULocale.getDefault());
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given locale.
+     * @param ulocale the <code>PluralFormat</code> will be configured with
+     *        rules for this locale. This locale will also be used for standard
+     *        number formatting.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(ULocale ulocale) {
+        init(null, ulocale);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given set of rules.
+     * The standard number formatting will be done using the default locale.
+     * @param rules defines the behavior of the <code>PluralFormat</code>
+     *        object.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(PluralRules rules) {
+        init(rules, ULocale.getDefault());
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given set of rules.
+     * The standard number formatting will be done using the given locale.
+     * @param ulocale the default number formatting will be done using this
+     *        locale.
+     * @param rules defines the behavior of the <code>PluralFormat</code>
+     *        object.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(ULocale ulocale, PluralRules rules) {
+        init(rules, ulocale);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given pattern string.
+     * The default locale will be used to get the set of plural rules and for
+     * standard number formatting.
+     * @param  pattern the pattern for this <code>PluralFormat</code>.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(String pattern) {
+        init(null, ULocale.getDefault());
+        applyPattern(pattern);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given pattern string and
+     * locale.
+     * The locale will be used to get the set of plural rules and for
+     * standard number formatting.
+     * @param ulocale the <code>PluralFormat</code> will be configured with
+     *        rules for this locale. This locale will also be used for standard
+     *        number formatting.
+     * @param  pattern the pattern for this <code>PluralFormat</code>.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(ULocale ulocale, String pattern) {
+        init(null, ulocale);
+        applyPattern(pattern);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given set of rules and a
+     * pattern.
+     * The standard number formatting will be done using the default locale.
+     * @param rules defines the behavior of the <code>PluralFormat</code>
+     *        object.
+     * @param  pattern the pattern for this <code>PluralFormat</code>.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(PluralRules rules, String pattern) {
+        init(rules, ULocale.getDefault());
+        applyPattern(pattern);
+    }
+
+    /**
+     * Creates a new <code>PluralFormat</code> for a given set of rules, a
+     * pattern and a locale.
+     * @param ulocale the <code>PluralFormat</code> will be configured with
+     *        rules for this locale. This locale will also be used for standard
+     *        number formatting.
+     * @param rules defines the behavior of the <code>PluralFormat</code>
+     *        object.
+     * @param  pattern the pattern for this <code>PluralFormat</code>.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public PluralFormat(ULocale ulocale, PluralRules rules, String pattern) {
+        init(rules, ulocale);
+        applyPattern(pattern);
+    }
+
+    /**
+     * Initializes the <code>PluralRules</code> object.
+     * Postcondition:<br/>
+     *   <code>ulocale</code>    :  is <code>locale</code><br/>
+     *   <code>pluralRules</code>:  if <code>rules</code> != <code>null</code>
+     *                              it's set to rules, otherwise it is the
+     *                              predefined plural rule set for the locale
+     *                              <code>ulocale</code>.<br/>
+     *   <code>parsedValues</code>: is <code>null</code><br/>
+     *   <code>pattern</code>:      is <code>null</code><br/>
+     *   <code>numberFormat</code>: a <code>NumberFormat</code> for the locale
+     *                              <code>ulocale</code>.
+     */
+    private void init(PluralRules rules, ULocale locale) {
+        ulocale = locale;
+        pluralRules = (rules == null) ? PluralRules.forLocale(ulocale)
+                                      : rules;
+        parsedValues = null;
+        pattern = null;
+        numberFormat = NumberFormat.getInstance(ulocale);
+    }
+
+    /**
+     * Sets the pattern used by this plural format.
+     * The method parses the pattern and creates a map of format strings
+     * for the plural rules.
+     * Patterns and their interpretation are specified in the class description.
+     *
+     * @param pttrn the pattern for this plural format.
+     * @throws IllegalArgumentException if the pattern is invalid.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void applyPattern(String pttrn) {
+        pttrn = pttrn.trim();
+
+        this.pattern = pttrn;
+        int braceStack = 0;
+        Set ruleNames = pluralRules.getKeywords();
+        parsedValues = new HashMap();
+
+        // Format string has to include keywords.
+        // states:
+        // 0: Reading keyword.
+        // 1: Reading value for preceding keyword.
+        int state = 0;
+        StringBuffer token = new StringBuffer();
+        String currentKeyword = null;
+        boolean readSpaceAfterKeyword = false;
+        for (int i = 0; i < pttrn.length(); ++i) {
+            char ch = pttrn.charAt(i);
+            switch (state) {
+            case 0: // Reading value.
+                if (token.length() == 0) {
+                    readSpaceAfterKeyword = false;
+                }
+                if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                    if (token.length() > 0) {
+                        readSpaceAfterKeyword = true;
+                    }
+                    // Skip leading and trailing whitespaces.
+                    break;
+                }
+                if (ch == '{') { // End of keyword definition reached.
+                    currentKeyword = token.toString().toLowerCase(
+                            Locale.ENGLISH);
+                    if (!ruleNames.contains(currentKeyword)) {
+                        parsingFailure("Malformed formatting expression. "
+                                + "Unknown keyword \"" + currentKeyword
+                                + "\" at position " + i + ".");
+                    }
+                    if (parsedValues.get(currentKeyword) != null) {
+                        parsingFailure("Malformed formatting expression. "
+                                + "Text for case \"" + currentKeyword
+                                + "\" at position " + i + " already defined!");
+                    }
+                    token.delete(0, token.length());
+                    braceStack++;
+                    state = 1;
+                    break;
+                }
+                if (readSpaceAfterKeyword) {
+                    parsingFailure("Malformed formatting expression. " +
+                            "Invalid keyword definition. Character \"" + ch +
+                            "\" at position " + i + " not expected!");
+                }
+                token.append(ch);
+                break;
+            case 1: // Reading value.
+                switch (ch) {
+                case '{':
+                    braceStack++;
+                    token.append(ch);
+                    break;
+                case '}':
+                    braceStack--;
+                    if (braceStack == 0) { // End of value reached.
+                        parsedValues.put(currentKeyword, token.toString());
+                        token.delete(0, token.length());
+                        state = 0;
+                    } else if (braceStack < 0) {
+                        parsingFailure("Malformed formatting expression. "
+                                + "Braces do not match.");
+                    } else { // braceStack > 0
+                        token.append(ch);
+                    }
+                    break;
+                default:
+                    token.append(ch);
+                }
+                break;
+            } // switch state
+        } // for loop.
+        if (braceStack != 0) {
+            parsingFailure(
+                    "Malformed formatting expression. Braces do not match.");
+        }
+        checkSufficientDefinition();
+    }
+
+    /**
+     * Returns the pattern for this PluralFormat.
+     *
+     * @return the pattern string
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toPattern() {
+        return pattern;
+    }
+
+    /**
+     * Formats a plural message for a given number.
+     *
+     * @param number a number for which the plural message should be formatted.
+     *        If no pattern has been applied to this
+     *        <code>PluralFormat</code> object yet, the formatted number will
+     *        be returned.
+     * @return the string containing the formatted plural message.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final String format(double number) {
+        // If no pattern was applied, return the formatted number.
+        if (parsedValues == null) {
+            return numberFormat.format(number);
+        }
+
+        // Get appropriate format pattern.
+        String selectedRule = pluralRules.select(number);
+        String selectedPattern = (String) parsedValues.get(selectedRule);
+        if (selectedPattern == null) { // Fallback to others.
+            selectedPattern =
+                (String) parsedValues.get(PluralRules.KEYWORD_OTHER);
+        }
+        // Get formatted number and insert it into String.
+        // Will replace all '#' which are not inside curly braces by the
+        // formatted number.
+        return insertFormattedNumber(number, selectedPattern);
+    }
+
+    /**
+     * Formats a plural message for a given number and appends the formatted
+     * message to the given <code>StringBuffer</code>.
+     * @param number a number object (instance of <code>Number</code> for which
+     *        the plural message should be formatted. If no pattern has been
+     *        applied to this <code>PluralFormat</code> object yet, the
+     *        formatted number will be returned.
+     *        Note: If this object is not an instance of <code>Number</code>,
+     *              the <code>toAppendTo</code> will not be modified.
+     * @param toAppendTo the formatted message will be appended to this
+     *        <code>StringBuffer</code>.
+     * @param pos will be ignored by this method.
+     * @return the string buffer passed in as toAppendTo, with formatted text
+     *         appended.
+     * @throws IllegalArgumentException if number is not an instance of Number
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public StringBuffer format(Object number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        if (number instanceof Number) {
+            toAppendTo.append(format(((Number) number).doubleValue()));
+            return toAppendTo;
+        }
+        throw new IllegalArgumentException("'" + number +
+                                           "' is not a Number");
+    }
+
+    /**
+     * This method is not yet supported by <code>PluralFormat</code>.
+     * @param text the string to be parsed.
+     * @param parsePosition defines the position where parsing is to begin,
+     * and upon return, the position where parsing left off.  If the position
+     * has not changed upon return, then parsing failed.
+     * @return nothing because this method is not yet implemented.
+     * @throws UnsupportedOperationException
+     *     will always be thrown by this method.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * This method is not yet supported by <code>PluralFormat</code>.
+     * @param source the string to be parsed.
+     * @param pos defines the position where parsing is to begin,
+     * and upon return, the position where parsing left off.  If the position
+     * has not changed upon return, then parsing failed.
+     * @return nothing because this method is not yet implemented.
+     * @throws UnsupportedOperationException
+     *     will always be thrown by this method.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Sets the locale used by this <code>PluraFormat</code> object.
+     * Note: Calling this method resets this <code>PluraFormat</code> object,
+     *     i.e., a pattern that was applied previously will be removed,
+     *     and the NumberFormat is set to the default number format for
+     *     the locale.  The resulting format behaves the same as one
+     *     constructed from {@link #PluralFormat(ULocale)}.
+     * @param ulocale the <code>ULocale</code> used to configure the
+     *     formatter. If <code>ulocale</code> is <code>null</code>, the
+     *     default locale will be used.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setLocale(ULocale ulocale) {
+        if (ulocale == null) {
+            ulocale = ULocale.getDefault();
+        }
+        init(null, ulocale);
+    }
+
+    /**
+     * Sets the number format used by this formatter.  You only need to
+     * call this if you want a different number format than the default
+     * formatter for the locale.
+     * @param format the number format to use.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setNumberFormat(NumberFormat format) {
+        numberFormat = format;
+    }
+
+    /**
+     * Checks if the applied pattern provided enough information,
+     * i.e., if the attribute <code>parsedValues</code> stores enough
+     * information for plural formatting.
+     * Will be called at the end of pattern parsing.
+     * @throws IllegalArgumentException if there's not sufficient information
+     *     provided.
+     */
+    private void checkSufficientDefinition() {
+        // Check that at least the default rule is defined.
+        if (parsedValues.get(PluralRules.KEYWORD_OTHER) == null) {
+            parsingFailure("Malformed formatting expression.\n"
+                    + "Value for case \"" + PluralRules.KEYWORD_OTHER
+                    + "\" was not defined.");
+        }
+    }
+
+    /**
+     * Helper method that resets the <code>PluralFormat</code> object and throws
+     * an <code>IllegalArgumentException</code> with a given error text.
+     * @param errorText the error text of the exception message.
+     * @throws IllegalArgumentException will always be thrown by this method.
+     */
+    private void parsingFailure(String errorText) {
+        // Set PluralFormat to a valid state.
+        init(null, ULocale.getDefault());
+        throw new IllegalArgumentException(errorText);
+    }
+
+    /**
+     * Helper method that is called during formatting.
+     * It replaces the character '#' by the number used for plural selection in
+     * a message text. Only '#' are replaced, that are not written inside curly
+     * braces. This allows the use of nested number formats.
+     * The number will be formatted using the attribute
+     * <code>numberformat</code>.
+     * @param number the number used for plural selection.
+     * @param message is the text in which '#' will be replaced.
+     * @return the text with inserted numbers.
+     */
+    private String insertFormattedNumber(double number, String message) {
+        if (message == null) {
+            return "";
+        }
+        String formattedNumber = numberFormat.format(number);
+        StringBuffer result = new StringBuffer();
+        int braceStack = 0;
+        int startIndex = 0;
+        for (int i = 0; i < message.length(); ++i) {
+            switch (message.charAt(i)) {
+            case '{':
+                ++braceStack;
+                break;
+            case '}':
+                --braceStack;
+                break;
+            case '#':
+                if (braceStack == 0) {
+                    result.append(message.substring(startIndex,i));
+                    startIndex = i + 1;
+                    result.append(formattedNumber);
+                }
+                break;
+            }
+        }
+        if (startIndex < message.length()) {
+            result.append(message.substring(startIndex, message.length()));
+        }
+        return result.toString();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object rhs) {
+        return rhs instanceof PluralFormat && equals((PluralFormat) rhs);
+    }
+
+    /**
+     * Returns true if this equals the provided PluralFormat.
+     * @param rhs the PluralFormat to compare against
+     * @return true if this equals rhs
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(PluralFormat rhs) {
+      return pluralRules.equals(rhs.pluralRules) &&
+          parsedValues.equals(rhs.parsedValues) &&
+          numberFormat.equals(rhs.numberFormat);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int hashCode() {
+        return pluralRules.hashCode() ^ parsedValues.hashCode();
+    }
+
+    /**
+     * For debugging purposes only
+     * @return a text representation of the format data.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append("locale=" + ulocale);
+        buf.append(", rules='" + pluralRules + "'");
+        buf.append(", pattern='" + pattern + "'");
+        buf.append(", parsedValues='" + parsedValues + "'");
+        buf.append(", format='" + numberFormat + "'");
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/text/PluralRules.java b/src/com/ibm/icu/text/PluralRules.java
new file mode 100644
index 0000000..1bb70af
--- /dev/null
+++ b/src/com/ibm/icu/text/PluralRules.java
@@ -0,0 +1,830 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.PluralRulesLoader;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.ULocale;
+
+import java.io.Serializable;
+
+import java.text.ParseException;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+
+/** 
+ * <p>Defines rules for mapping positive double values onto a small set of
+ * keywords. Serializable so can be used in formatters, which are
+ * serializable. Rules are constructed from a text description, consisting
+ * of a series of keywords and conditions.  The {@link #select} method
+ * examines each condition in order and returns the keyword for the
+ * first condition that matches the number.  If none match,
+ * {@link #KEYWORD_OTHER} is returned.</p>
+ * <p>
+ * Examples:<pre>
+ *   "one: n is 1; few: n in 2..4"</pre></p>
+ * <p>
+ * This defines two rules, for 'one' and 'few'.  The condition for
+ * 'one' is "n is 1" which means that the number must be equal to
+ * 1 for this condition to pass.  The condition for 'few' is
+ * "n in 2..4" which means that the number must be between 2 and
+ * 4 inclusive - and be an integer - for this condition to pass. All other
+ * numbers are assigned the keyword "other" by the default rule.</p>
+ * <p><pre>
+ *   "zero: n is 0; one: n is 1; zero: n mod 100 in 1..19"</pre>
+ * This illustrates that the same keyword can be defined multiple times.
+ * Each rule is examined in order, and the first keyword whose condition
+ * passes is the one returned.  Also notes that a modulus is applied
+ * to n in the last rule.  Thus its condition holds for 119, 219, 319...</p>
+ * <p><pre>
+ *   "one: n is 1; few: n mod 10 in 2..4 and n mod 100 not in 12..14"</pre></p>
+ * <p>
+ * This illustrates conjunction and negation.  The condition for 'few'
+ * has two parts, both of which must be met: "n mod 10 in 2..4" and
+ * "n mod 100 not in 12..14".  The first part applies a modulus to n
+ * before the test as in the previous example.  The second part applies
+ * a different modulus and also uses negation, thus it matches all
+ * numbers _not_ in 12, 13, 14, 112, 113, 114, 212, 213, 214...</p>
+ * <p>
+ * Syntax:<pre>
+ * rules         = rule (';' rule)*
+ * rule          = keyword ':' condition
+ * keyword       = <identifier>
+ * condition     = and_condition ('or' and_condition)*
+ * and_condition = relation ('and' relation)*
+ * relation      = is_relation | in_relation | within_relation | 'n' <EOL>
+ * is_relation   = expr 'is' ('not')? value
+ * in_relation   = expr ('not')? 'in' range
+ * within_relation = expr ('not')? 'within' range
+ * expr          = 'n' ('mod' value)?
+ * value         = digit+
+ * digit         = 0|1|2|3|4|5|6|7|8|9
+ * range         = value'..'value
+ * </pre></p>
+ * <p>
+ * The difference between 'in' and 'within' is that 'in' only includes
+ * integers in the specified range, while 'within' includes all values.</p>
+ * @draft ICU 3.8
+ * @provisional This API might change or be removed in a future release.
+ */
+public class PluralRules implements Serializable {
+    private static final long serialVersionUID = 1;
+
+    private final RuleList rules;
+    private final Set keywords;
+    private int repeatLimit; // for equality test
+
+    // Standard keywords.
+
+    /** 
+     * Common name for the 'zero' plural form. 
+     * @draft ICU 3.8 
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_ZERO = "zero";
+
+    /** 
+     * Common name for the 'singular' plural form. 
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_ONE = "one";
+
+    /**
+     * Common name for the 'dual' plural form.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_TWO = "two";
+
+    /**
+     * Common name for the 'paucal' or other special plural form.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_FEW = "few";
+
+    /**
+     * Common name for the arabic (11 to 99) plural form.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_MANY = "many";
+
+    /**
+     * Common name for the default plural form.  This name is returned
+     * for values to which no other form in the rule applies.  It 
+     * can additionally be assigned rules of its own.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String KEYWORD_OTHER = "other";
+
+    /**
+     * The set of all characters a valid keyword can start with.
+     */
+    private static final UnicodeSet START_CHARS = 
+        new UnicodeSet("[[:ID_Start:][_]]");
+
+    /**
+     * The set of all characters a valid keyword can contain after 
+     * the first character.
+     */
+    private static final UnicodeSet CONT_CHARS = 
+        new UnicodeSet("[:ID_Continue:]");
+
+    /**
+     * The default constraint that is always satisfied.
+     */
+    private static final Constraint NO_CONSTRAINT = new Constraint() {
+        private static final long serialVersionUID = 9163464945387899416L;
+
+        public boolean isFulfilled(double n) {
+            return true;
+        }
+        public String toString() {
+            return "n is any";
+        }
+
+        public int updateRepeatLimit(int limit) {
+            return limit;
+        }
+      };
+
+    /**
+     * The default rule that always returns "other".
+     */
+    private static final Rule DEFAULT_RULE = new Rule() {
+        private static final long serialVersionUID = -5677499073940822149L;
+
+        public String getKeyword() {
+            return KEYWORD_OTHER;
+        }
+
+        public boolean appliesTo(double n) {
+            return true;
+        }
+
+        public String toString() {
+            return "(" + KEYWORD_OTHER + ")";
+        }
+
+        public int updateRepeatLimit(int limit) {
+            return limit;
+        }
+      };
+
+
+    /**
+     * The default rules that accept any number and return 
+     * {@link #KEYWORD_OTHER}.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final PluralRules DEFAULT =
+        new PluralRules(new RuleChain(DEFAULT_RULE));
+
+    /**
+     * Parses a plural rules description and returns a PluralRules.
+     * @param description the rule description.
+     * @throws ParseException if the description cannot be parsed.
+     *    The exception index is typically not set, it will be -1.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static PluralRules parseDescription(String description) 
+        throws ParseException {
+
+        description = description.trim();
+        if (description.length() == 0) {
+          return DEFAULT;
+        }
+
+        return new PluralRules(parseRuleChain(description));
+    }
+
+    /**
+     * Creates a PluralRules from a description if it is parsable,
+     * otherwise returns null.
+     * @param description the rule description.
+     * @return the PluralRules
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static PluralRules createRules(String description) {
+        try {
+            return parseDescription(description);
+        } catch(ParseException e) {
+            return null;
+        }
+    }
+
+    /** 
+     * A constraint on a number.
+     */
+    private interface Constraint extends Serializable {
+        /** 
+         * Returns true if the number fulfills the constraint.
+         * @param n the number to test, >= 0.
+         */
+        boolean isFulfilled(double n);
+
+        /** 
+         * Returns the larger of limit or the limit of this constraint.
+         * If the constraint is a simple range test, this is the higher
+         * end of the range; if it is a modulo test, this is the modulus.
+         *
+         * @param limit the target limit
+         * @return the new limit
+         */
+        int updateRepeatLimit(int limit);
+    }
+
+    /**
+     * A pluralization rule.  .
+     */
+    private interface Rule extends Serializable {
+        /** Returns the keyword that names this rule. */
+        String getKeyword();
+        /** Returns true if the rule applies to the number. */
+        boolean appliesTo(double n);
+        /** Returns the larger of limit and this rule's limit. */
+        int updateRepeatLimit(int limit);
+    }
+
+    /**
+     * A list of rules to apply in order.
+     */
+    private interface RuleList extends Serializable {
+        /** Returns the keyword of the first rule that applies to the number. */
+        String select(double n);
+
+        /** Returns the set of defined keywords. */
+        Set getKeywords();
+
+        /** Return the value at which this rulelist starts repeating. */
+        int getRepeatLimit();
+    }
+
+    /**
+     * syntax:
+     * condition :     or_condition
+     *                 and_condition
+     * or_condition :  and_condition 'or' condition
+     * and_condition : relation
+     *                 relation 'and' relation
+     * relation :      is_relation
+     *                 in_relation
+     *                 within_relation
+     *                 'n' EOL
+     * is_relation :   expr 'is' value
+     *                 expr 'is' 'not' value
+     * in_relation :   expr 'in' range
+     *                 expr 'not' 'in' range
+     * within_relation : expr 'within' range
+     *                   expr 'not' 'within' range
+     * expr :          'n'
+     *                 'n' 'mod' value
+     * value :         digit+
+     * digit :         0|1|2|3|4|5|6|7|8|9
+     * range :         value'..'value
+     */
+    private static Constraint parseConstraint(String description) 
+        throws ParseException {
+
+        description = description.trim().toLowerCase(Locale.ENGLISH);
+
+        Constraint result = null;
+        String[] or_together = Utility.splitString(description, "or");
+        for (int i = 0; i < or_together.length; ++i) {
+            Constraint andConstraint = null;
+            String[] and_together = Utility.splitString(or_together[i], "and");
+            for (int j = 0; j < and_together.length; ++j) {
+                Constraint newConstraint = NO_CONSTRAINT;
+
+                String condition = and_together[j].trim();
+                String[] tokens = Utility.splitWhitespace(condition);
+
+                int mod = 0;
+                boolean inRange = true;
+                boolean integersOnly = true;
+                long lowBound = -1;
+                long highBound = -1;
+
+                boolean isRange = false;
+
+                int x = 0;
+                String t = tokens[x++];
+                if (!"n".equals(t)) {
+                    throw unexpected(t, condition);
+                }
+                if (x < tokens.length) {
+                    t = tokens[x++];
+                    if ("mod".equals(t)) {
+                        mod = Integer.parseInt(tokens[x++]);
+                        t = nextToken(tokens, x++, condition);
+                    }
+                    if ("is".equals(t)) {
+                        t = nextToken(tokens, x++, condition);
+                        if ("not".equals(t)) {
+                            inRange = false;
+                            t = nextToken(tokens, x++, condition);
+                        }
+                    } else {
+                        isRange = true;
+                        if ("not".equals(t)) {
+                            inRange = false;
+                            t = nextToken(tokens, x++, condition);
+                        }
+                        if ("in".equals(t)) {
+                            t = nextToken(tokens, x++, condition);
+                        } else if ("within".equals(t)) {
+                            integersOnly = false;
+                            t = nextToken(tokens, x++, condition);
+                        } else {
+                            throw unexpected(t, condition);
+                        }
+                    }
+
+                    if (isRange) {
+                        String[] pair = Utility.splitString(t, "..");
+                        if (pair.length == 2) {
+                            lowBound = Long.parseLong(pair[0]);
+                            highBound = Long.parseLong(pair[1]);
+                        } else {
+                            throw unexpected(t, condition);
+                        }
+                    } else {
+                        lowBound = highBound = Long.parseLong(t);
+                    }
+
+                    if (x != tokens.length) {
+                        throw unexpected(tokens[x], condition);
+                    }
+
+                    newConstraint = 
+                        new RangeConstraint(mod, inRange, integersOnly, lowBound, highBound);
+                }
+
+                if (andConstraint == null) {
+                    andConstraint = newConstraint;
+                } else {
+                    andConstraint = new AndConstraint(andConstraint, 
+                                                      newConstraint);
+                }
+            }
+
+            if (result == null) {
+                result = andConstraint;
+            } else {
+                result = new OrConstraint(result, andConstraint);
+            }
+        }
+
+        return result;
+    }
+
+    /** Returns a parse exception wrapping the token and context strings. */
+    private static ParseException unexpected(String token, String context) {
+        return new ParseException("unexpected token '" + token +
+                                  "' in '" + context + "'", -1);
+    }
+
+    /** 
+     * Returns the token at x if available, else throws a parse exception.
+     */
+    private static String nextToken(String[] tokens, int x, String context) 
+        throws ParseException {
+        if (x < tokens.length) {
+            return tokens[x];
+        }
+        throw new ParseException("missing token at end of '" + context + "'", -1);
+    }
+
+    /**
+     * Syntax:
+     * rule : keyword ':' condition
+     * keyword: <identifier>
+     */
+    private static Rule parseRule(String description) throws ParseException {
+        int x = description.indexOf(':');
+        if (x == -1) {
+            throw new ParseException("missing ':' in rule description '" +
+                                     description + "'", 0);
+        }
+
+        String keyword = description.substring(0, x).trim();
+        if (!isValidKeyword(keyword)) {
+          throw new ParseException("keyword '" + keyword +
+                                   " is not valid", 0);
+        }
+
+        description = description.substring(x+1).trim();
+        if (description.length() == 0) {
+          throw new ParseException("missing constraint in '" + 
+                                   description + "'", x+1);
+        }
+        Constraint constraint = parseConstraint(description);
+        Rule rule = new ConstrainedRule(keyword, constraint);
+        return rule;
+    }
+
+    /**
+     * Syntax:
+     * rules : rule
+     *         rule ';' rules
+     */
+    private static RuleChain parseRuleChain(String description) 
+        throws ParseException {
+
+        RuleChain rc = null;
+        String[] rules = Utility.split(description, ';');
+        for (int i = 0; i < rules.length; ++i) {
+            Rule r = parseRule(rules[i].trim());
+            if (rc == null) {
+                rc = new RuleChain(r);
+            } else {
+                rc = rc.addRule(r);
+            }
+        }
+        return rc;
+    }
+
+    /** 
+     * An implementation of Constraint representing a modulus, 
+     * a range of values, and include/exclude. Provides lots of
+     * convenience factory methods.
+     */
+    private static class RangeConstraint implements Constraint, Serializable {
+        private static final long serialVersionUID = 1;
+      
+        private int mod;
+        private boolean inRange;
+        private boolean integersOnly;
+        private long lowerBound;
+        private long upperBound;
+
+        public boolean isFulfilled(double n) {
+            if (integersOnly && (n - (long)n) != 0.0) {
+                return !inRange;
+            }
+            if (mod != 0) {
+                n = n % mod;    // java % handles double numerator the way we want
+            }
+            return inRange == (n >= lowerBound && n <= upperBound);
+        }
+
+        RangeConstraint(int mod, boolean inRange, boolean integersOnly,
+                        long lowerBound, long upperBound) {
+            this.mod = mod;
+            this.inRange = inRange;
+            this.integersOnly = integersOnly;
+            this.lowerBound = lowerBound;
+            this.upperBound = upperBound;
+        }
+
+        public int updateRepeatLimit(int limit) {
+          int mylimit = mod == 0 ? (int)upperBound : mod;
+          return Math.max(mylimit, limit);
+        }
+
+        public String toString() {
+            return "[mod: " + mod + " inRange: " + inRange +
+                " integersOnly: " + integersOnly +
+                " low: " + lowerBound + " high: " + upperBound + "]";
+        }
+    }
+
+    /** Convenience base class for and/or constraints. */
+    private static abstract class BinaryConstraint implements Constraint, 
+                                                   Serializable {
+        private static final long serialVersionUID = 1;
+        protected final Constraint a;
+        protected final Constraint b;
+        private final String conjunction;
+
+        protected BinaryConstraint(Constraint a, Constraint b, String c) {
+            this.a = a;
+            this.b = b;
+            this.conjunction = c;
+        }
+
+        public int updateRepeatLimit(int limit) {
+            return a.updateRepeatLimit(b.updateRepeatLimit(limit));
+        }
+
+        public String toString() {
+            return a.toString() + conjunction + b.toString();
+        }
+    }
+      
+    /** A constraint representing the logical and of two constraints. */
+    private static class AndConstraint extends BinaryConstraint {
+        private static final long serialVersionUID = 7766999779862263523L;
+
+        AndConstraint(Constraint a, Constraint b) {
+            super(a, b, " && ");
+        }
+
+        public boolean isFulfilled(double n) {
+            return a.isFulfilled(n) && b.isFulfilled(n);
+        }
+    }
+
+    /** A constraint representing the logical or of two constraints. */
+    private static class OrConstraint extends BinaryConstraint {
+        private static final long serialVersionUID = 1405488568664762222L;
+
+        OrConstraint(Constraint a, Constraint b) {
+            super(a, b, " || ");
+        }
+
+        public boolean isFulfilled(double n) {
+            return a.isFulfilled(n) || b.isFulfilled(n);
+        }
+    }
+
+    /** 
+     * Implementation of Rule that uses a constraint.
+     * Provides 'and' and 'or' to combine constraints.  Immutable.
+     */
+    private static class ConstrainedRule implements Rule, Serializable {
+        private static final long serialVersionUID = 1;
+        private final String keyword;
+        private final Constraint constraint;
+
+        public ConstrainedRule(String keyword, Constraint constraint) {
+            this.keyword = keyword;
+            this.constraint = constraint;
+        }
+
+        public Rule and(Constraint c) {
+            return new ConstrainedRule(keyword, new AndConstraint(constraint, c));
+        }
+
+        public Rule or(Constraint c) {
+            return new ConstrainedRule(keyword, new OrConstraint(constraint, c));
+        }
+
+        public String getKeyword() {
+            return keyword;
+        }
+
+        public boolean appliesTo(double n) {
+            return constraint.isFulfilled(n);
+        }
+
+        public int updateRepeatLimit(int limit) {
+            return constraint.updateRepeatLimit(limit);
+        }
+
+        public String toString() { 
+            return keyword + ": " + constraint;
+        }
+    }
+
+    /**
+     * Implementation of RuleList that is itself a node in a linked list.
+     * Immutable, but supports chaining with 'addRule'.
+     */
+    private static class RuleChain implements RuleList, Serializable {
+        private static final long serialVersionUID = 1;
+        private final Rule rule;
+        private final RuleChain next;
+
+        /** Creates a rule chain with the single rule. */
+        public RuleChain(Rule rule) {
+            this(rule, null);
+        }
+
+        private RuleChain(Rule rule, RuleChain next) {
+            this.rule = rule;
+            this.next = next;
+        }
+
+        public RuleChain addRule(Rule nextRule) {
+            return new RuleChain(nextRule, this);
+        }
+
+        private Rule selectRule(double n) {
+            Rule r = null;
+            if (next != null) {
+                r = next.selectRule(n);
+            }
+            if (r == null && rule.appliesTo(n)) {
+                r = rule;
+            }
+            return r;
+        }
+
+        public String select(double n) {
+            Rule r = selectRule(n);
+            if (r == null) {
+                return KEYWORD_OTHER;
+            }
+            return r.getKeyword();
+        }
+
+        public Set getKeywords() {
+            Set result = new HashSet();
+            result.add(KEYWORD_OTHER);
+            RuleChain rc = this;
+            while (rc != null) {
+                result.add(rc.rule.getKeyword());
+                rc = rc.next;
+            }
+            return result;
+        }
+
+        public int getRepeatLimit() {
+          int result = 0;
+          RuleChain rc = this;
+          while (rc != null) {
+            result = rc.rule.updateRepeatLimit(result);
+            rc = rc.next;
+          }
+          return result;
+        }
+
+        public String toString() {
+            String s = rule.toString();
+            if (next != null) {
+                s = next.toString() + "; " + s;
+            }
+            return s;
+        }
+    }
+
+    // -------------------------------------------------------------------------
+    // Static class methods.
+    // -------------------------------------------------------------------------
+
+    /**
+     * Provides access to the predefined <code>PluralRules</code> for a given
+     * locale.
+     * 
+     * @param locale The locale for which a <code>PluralRules</code> object is
+     *   returned.
+     * @return The predefined <code>PluralRules</code> object for this locale.
+     *   If there's no predefined rules for this locale, the rules
+     *   for the closest parent in the locale hierarchy that has one will
+     *   be returned.  The final fallback always returns the default
+     *   rules.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static PluralRules forLocale(ULocale locale) {
+      return PluralRulesLoader.loader.forLocale(locale);
+    }
+
+    /**
+     * Checks whether a token is a valid keyword.
+     * 
+     * @param token the token to be checked
+     * @return true if the token is a valid keyword.
+     */
+     private static boolean isValidKeyword(String token) {
+         if (token.length() > 0 && START_CHARS.contains(token.charAt(0))) {
+             for (int i = 1; i < token.length(); ++i) {
+                 if (!CONT_CHARS.contains(token.charAt(i))) {
+                     return false;
+                 }
+             }
+             return true;
+         }
+         return false;
+     }
+
+    /**
+     * Creates a new <code>PluralRules</code> object.  Immutable.
+     */
+     private PluralRules(RuleList rules) {
+         this.rules = rules;
+         this.keywords = Collections.unmodifiableSet(rules.getKeywords());
+     }
+
+    /**
+     * Given a number, returns the keyword of the first rule that applies to
+     * the number.
+     * 
+     * @param number The number for which the rule has to be determined.
+     * @return The keyword of the selected rule.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+     public String select(double number) {
+         return rules.select(number);
+     }
+
+    /**
+     * Returns a set of all rule keywords used in this <code>PluralRules</code>
+     * object.  The rule "other" is always present by default.
+     * 
+     * @return The set of keywords.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Set getKeywords() {
+        return keywords;
+    }
+
+    /**
+     * Returns the set of locales for which PluralRules are known.
+     * @return the set of locales for which PluralRules are known, as a list
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+      return PluralRulesLoader.loader.getAvailableULocales();
+    }
+
+    /**
+     * Returns the 'functionally equivalent' locale with respect to
+     * plural rules.  Calling PluralRules.forLocale with the functionally equivalent
+     * locale, and with the provided locale, returns rules that behave the same.
+     * <br/>
+     * All locales with the same functionally equivalent locale have
+     * plural rules that behave the same.  This is not exaustive;
+     * there may be other locales whose plural rules behave the same
+     * that do not have the same equivalent locale.
+     *
+     * @param locale the locale to check
+     * @param isAvailable if not null and of length > 0, this will hold 'true' at
+     * index 0 if locale is directly defined (without fallback) as having plural rules
+     * @return the functionally-equivalent locale
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale getFunctionalEquivalent(ULocale locale, boolean[] isAvailable) {
+        return PluralRulesLoader.loader.getFunctionalEquivalent(locale, isAvailable);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toString() {
+      return "keywords: " + keywords + " rules: " + rules.toString() + 
+          " limit: " + getRepeatLimit();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int hashCode() {
+      return keywords.hashCode();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object rhs) {
+        return rhs instanceof PluralRules && equals((PluralRules)rhs);
+    }
+
+    /**
+     * Return tif rhs is equal to this.
+     * @param rhs the PluralRules to compare to.
+     * @return true if this and rhs are equal.
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(PluralRules rhs) {
+      if (rhs == null) {
+        return false;
+      }
+      if (rhs == this) { 
+        return true;
+      }
+      if (!rhs.getKeywords().equals(keywords)) {
+        return false;
+      }
+
+      int limit = Math.max(getRepeatLimit(), rhs.getRepeatLimit());
+      for (int i = 0; i < limit; ++i) {
+        if (!select(i).equals(rhs.select(i))) {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    private int getRepeatLimit() {
+      if (repeatLimit == 0) {
+        repeatLimit = rules.getRepeatLimit() + 1;
+      }
+      return repeatLimit;
+    }
+ }
diff --git a/src/com/ibm/icu/text/Punycode.java b/src/com/ibm/icu/text/Punycode.java
new file mode 100644
index 0000000..35a8909
--- /dev/null
+++ b/src/com/ibm/icu/text/Punycode.java
@@ -0,0 +1,476 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * Ported code from ICU punycode.c 
+ * @author ram
+ */
+
+/* Package Private class */
+final class Punycode {
+
+    /* Punycode parameters for Bootstring */
+    private static final int BASE           = 36;
+    private static final int TMIN           = 1;
+    private static final int TMAX           = 26;
+    private static final int SKEW           = 38;
+    private static final int DAMP           = 700;
+    private static final int INITIAL_BIAS   = 72;
+    private static final int INITIAL_N      = 0x80;
+    
+    /* "Basic" Unicode/ASCII code points */
+    private static final int HYPHEN         = 0x2d;
+    private static final int DELIMITER      = HYPHEN;
+    
+    private static final int ZERO           = 0x30;
+    //private static final int NINE           = 0x39;
+    
+    private static final int SMALL_A        = 0x61;
+    private static final int SMALL_Z        = 0x7a;
+    
+    private static final int CAPITAL_A      = 0x41;
+    private static final int CAPITAL_Z      = 0x5a;
+    private static final int MAX_CP_COUNT   = 200;
+    //private static final int UINT_MAGIC     = 0x80000000;
+    //private static final long ULONG_MAGIC   = 0x8000000000000000L;
+    
+    private static int adaptBias(int delta, int length, boolean firstTime){
+        if(firstTime){
+            delta /=DAMP;
+        }else{
+            delta /=  2;
+        }
+        delta += delta/length;
+
+        int count=0;
+        for(; delta>((BASE-TMIN)*TMAX)/2; count+=BASE) {
+            delta/=(BASE-TMIN);
+        }
+
+        return count+(((BASE-TMIN+1)*delta)/(delta+SKEW));         
+    }
+
+    /**
+     * basicToDigit[] contains the numeric value of a basic code
+     * point (for use in representing integers) in the range 0 to
+     * BASE-1, or -1 if b is does not represent a value.
+     */
+    static final int[]    basicToDigit= new int[]{
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
+    
+        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+    
+        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
+        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+    };
+
+    ///CLOVER:OFF
+    private static char asciiCaseMap(char b, boolean uppercase) {
+        if(uppercase) {
+            if(SMALL_A<=b && b<=SMALL_Z) {
+                b-=(SMALL_A-CAPITAL_A);
+            }
+        } else {
+            if(CAPITAL_A<=b && b<=CAPITAL_Z) {
+                b+=(SMALL_A-CAPITAL_A);
+            }
+        }
+        return b;
+    }    
+    ///CLOVER:ON
+    /**
+     * digitToBasic() returns the basic code point whose value
+     * (when used for representing integers) is d, which must be in the
+     * range 0 to BASE-1. The lowercase form is used unless the uppercase flag is
+     * nonzero, in which case the uppercase form is used.
+     */
+    private static char digitToBasic(int digit, boolean uppercase) {
+        /*  0..25 map to ASCII a..z or A..Z */
+        /* 26..35 map to ASCII 0..9         */
+        if(digit<26) {
+            if(uppercase) {
+                return (char)(CAPITAL_A+digit);
+            } else {
+                return (char)(SMALL_A+digit);
+            }
+        } else {
+            return (char)((ZERO-26)+digit);
+        }
+    }
+    /**
+     * Converts Unicode to Punycode.
+     * The input string must not contain single, unpaired surrogates.
+     * The output will be represented as an array of ASCII code points.
+     * 
+     * @param src
+     * @param caseFlags
+     * @return
+     * @throws ParseException
+     */
+    public static StringBuffer encode(StringBuffer src, boolean[] caseFlags) throws StringPrepParseException{
+        
+        int[] cpBuffer = new int[MAX_CP_COUNT];
+        int n, delta, handledCPCount, basicLength, destLength, bias, j, m, q, k, t, srcCPCount;
+        char c, c2;
+        int srcLength = src.length();
+        int destCapacity = MAX_CP_COUNT;
+        char[] dest = new char[destCapacity];
+        StringBuffer result = new StringBuffer();
+        /*
+         * Handle the basic code points and
+         * convert extended ones to UTF-32 in cpBuffer (caseFlag in sign bit):
+         */
+        srcCPCount=destLength=0;
+        
+        for(j=0; j<srcLength; ++j) {
+            if(srcCPCount==MAX_CP_COUNT) {
+                /* too many input code points */
+                throw new IndexOutOfBoundsException();
+            }
+            c=src.charAt(j);
+            if(isBasic(c)) {
+                if(destLength<destCapacity) {
+                    cpBuffer[srcCPCount++]=0;
+                    dest[destLength]=
+                        caseFlags!=null ?
+                            asciiCaseMap((char)c, caseFlags[j]) :
+                            (char)c;
+                }
+                ++destLength;
+            } else {
+                n=((caseFlags!=null && caseFlags[j])? 1 : 0)<<31L;
+                if(!UTF16.isSurrogate(c)) {
+                    n|=c;
+                } else if(UTF16.isLeadSurrogate(c) && (j+1)<srcLength && UTF16.isTrailSurrogate(c2=src.charAt(j+1))) {
+                    ++j;
+                    
+                    n|=UCharacter.getCodePoint(c, c2);
+                } else {
+                    /* error: unmatched surrogate */
+                    throw new StringPrepParseException("Illegal char found",StringPrepParseException.ILLEGAL_CHAR_FOUND);
+                }
+                cpBuffer[srcCPCount++]=n;
+            }
+        }
+
+        /* Finish the basic string - if it is not empty - with a delimiter. */
+        basicLength=destLength;
+        if(basicLength>0) {
+            if(destLength<destCapacity) {
+                dest[destLength]=DELIMITER;
+            }
+            ++destLength;
+        }
+
+        /*
+         * handledCPCount is the number of code points that have been handled
+         * basicLength is the number of basic code points
+         * destLength is the number of chars that have been output
+         */
+
+        /* Initialize the state: */
+        n=INITIAL_N;
+        delta=0;
+        bias=INITIAL_BIAS;
+
+        /* Main encoding loop: */
+        for(handledCPCount=basicLength; handledCPCount<srcCPCount; /* no op */) {
+            /*
+             * All non-basic code points < n have been handled already.
+             * Find the next larger one:
+             */
+            for(m=0x7fffffff, j=0; j<srcCPCount; ++j) {
+                q=cpBuffer[j]&0x7fffffff; /* remove case flag from the sign bit */
+                if(n<=q && q<m) {
+                    m=q;
+                }
+            }
+
+            /*
+             * Increase delta enough to advance the decoder's
+             * <n,i> state to <m,0>, but guard against overflow:
+             */
+            if(m-n>(0x7fffffff-MAX_CP_COUNT-delta)/(handledCPCount+1)) {
+                throw new IllegalStateException("Internal program error");
+            }
+            delta+=(m-n)*(handledCPCount+1);
+            n=m;
+
+            /* Encode a sequence of same code points n */
+            for(j=0; j<srcCPCount; ++j) {
+                q=cpBuffer[j]&0x7fffffff; /* remove case flag from the sign bit */
+                if(q<n) {
+                    ++delta;
+                } else if(q==n) {
+                    /* Represent delta as a generalized variable-length integer: */
+                    for(q=delta, k=BASE; /* no condition */; k+=BASE) {
+
+                        /** RAM: comment out the old code for conformance with draft-ietf-idn-punycode-03.txt   
+
+                        t=k-bias;
+                        if(t<TMIN) {
+                            t=TMIN;
+                        } else if(t>TMAX) {
+                            t=TMAX;
+                        }
+                        */
+                    
+                        t=k-bias;
+                        if(t<TMIN) {
+                            t=TMIN;
+                        } else if(k>=(bias+TMAX)) {
+                            t=TMAX;
+                        }
+
+                        if(q<t) {
+                            break;
+                        }
+
+                        if(destLength<destCapacity) {
+                            dest[destLength++]=digitToBasic(t+(q-t)%(BASE-t), false);
+                        }
+                        q=(q-t)/(BASE-t);
+                    }
+
+                    if(destLength<destCapacity) {
+                        dest[destLength++]=digitToBasic(q, (cpBuffer[j]<0));
+                    }
+                    bias=adaptBias(delta, handledCPCount+1,(handledCPCount==basicLength));
+                    delta=0;
+                    ++handledCPCount;
+                }
+            }
+
+            ++delta;
+            ++n;
+        }
+
+        return result.append(dest, 0, destLength);
+    }
+    
+    private static boolean isBasic(int ch){
+        return (ch < INITIAL_N);
+    }
+    ///CLOVER:OFF
+    private static boolean isBasicUpperCase(int ch){
+        return( CAPITAL_A<=ch && ch >= CAPITAL_Z);
+    }
+    ///CLOVER:ON
+    private static boolean isSurrogate(int ch){
+        return (((ch)&0xfffff800)==0xd800);
+    }
+    /**
+     * Converts Punycode to Unicode.
+     * The Unicode string will be at most as long as the Punycode string.
+     * 
+     * @param src
+     * @param caseFlags
+     * @return
+     * @throws ParseException
+     */
+    public static StringBuffer decode(StringBuffer src, boolean[] caseFlags) 
+                               throws StringPrepParseException{
+        int srcLength = src.length();
+        StringBuffer result = new StringBuffer();
+        int n, destLength, i, bias, basicLength, j, in, oldi, w, k, digit, t,
+                destCPCount, firstSupplementaryIndex, cpLength;
+        char b;
+        int destCapacity = MAX_CP_COUNT;
+        char[] dest = new char[destCapacity];
+
+        /*
+         * Handle the basic code points:
+         * Let basicLength be the number of input code points
+         * before the last delimiter, or 0 if there is none,
+         * then copy the first basicLength code points to the output.
+         *
+         * The two following loops iterate backward.
+         */
+        for(j=srcLength; j>0;) {
+            if(src.charAt(--j)==DELIMITER) {
+                break;
+            }
+        }
+        destLength=basicLength=destCPCount=j;
+
+        while(j>0) {
+            b=src.charAt(--j);
+            if(!isBasic(b)) {
+                throw new StringPrepParseException("Illegal char found", StringPrepParseException.INVALID_CHAR_FOUND);
+            }
+
+            if(j<destCapacity) {
+                dest[j]= b;
+
+                if(caseFlags!=null) {
+                    caseFlags[j]=isBasicUpperCase(b);
+                }
+            }
+        }
+
+        /* Initialize the state: */
+        n=INITIAL_N;
+        i=0;
+        bias=INITIAL_BIAS;
+        firstSupplementaryIndex=1000000000;
+
+        /*
+         * Main decoding loop:
+         * Start just after the last delimiter if any
+         * basic code points were copied; start at the beginning otherwise.
+         */
+        for(in=basicLength>0 ? basicLength+1 : 0; in<srcLength; /* no op */) {
+            /*
+             * in is the index of the next character to be consumed, and
+             * destCPCount is the number of code points in the output array.
+             *
+             * Decode a generalized variable-length integer into delta,
+             * which gets added to i.  The overflow checking is easier
+             * if we increase i as we go, then subtract off its starting
+             * value at the end to obtain delta.
+             */
+            for(oldi=i, w=1, k=BASE; /* no condition */; k+=BASE) {
+                if(in>=srcLength) {
+                    throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+                }
+
+                digit=basicToDigit[src.charAt(in++) & 0xFF];
+                if(digit<0) {
+                    throw new StringPrepParseException("Invalid char found", StringPrepParseException.INVALID_CHAR_FOUND);
+                }
+                if(digit>(0x7fffffff-i)/w) {
+                    /* integer overflow */
+                    throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+                }
+
+                i+=digit*w;
+                t=k-bias;
+                if(t<TMIN) {
+                    t=TMIN;
+                } else if(k>=(bias+TMAX)) {
+                    t=TMAX;
+                }
+                if(digit<t) {
+                    break;
+                }
+
+                if(w>0x7fffffff/(BASE-t)) {
+                    /* integer overflow */
+                    throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+                }
+                w*=BASE-t;
+            }
+
+            /*
+             * Modification from sample code:
+             * Increments destCPCount here,
+             * where needed instead of in for() loop tail.
+             */
+            ++destCPCount;
+            bias=adaptBias(i-oldi, destCPCount, (oldi==0));
+
+            /*
+             * i was supposed to wrap around from (incremented) destCPCount to 0,
+             * incrementing n each time, so we'll fix that now:
+             */
+            if(i/destCPCount>(0x7fffffff-n)) {
+                /* integer overflow */
+                throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+            }
+
+            n+=i/destCPCount;
+            i%=destCPCount;
+            /* not needed for Punycode: */
+            /* if (decode_digit(n) <= BASE) return punycode_invalid_input; */
+
+            if(n>0x10ffff || isSurrogate(n)) {
+                /* Unicode code point overflow */
+                throw new StringPrepParseException("Illegal char found", StringPrepParseException.ILLEGAL_CHAR_FOUND);
+            }
+
+            /* Insert n at position i of the output: */
+            cpLength=UTF16.getCharCount(n);
+            if((destLength+cpLength)<destCapacity) {
+                int codeUnitIndex;
+
+                /*
+                 * Handle indexes when supplementary code points are present.
+                 *
+                 * In almost all cases, there will be only BMP code points before i
+                 * and even in the entire string.
+                 * This is handled with the same efficiency as with UTF-32.
+                 *
+                 * Only the rare cases with supplementary code points are handled
+                 * more slowly - but not too bad since this is an insertion anyway.
+                 */
+                if(i<=firstSupplementaryIndex) {
+                    codeUnitIndex=i;
+                    if(cpLength>1) {
+                        firstSupplementaryIndex=codeUnitIndex;
+                    } else {
+                        ++firstSupplementaryIndex;
+                    }
+                } else {
+                    codeUnitIndex=firstSupplementaryIndex;
+                    codeUnitIndex=UTF16.moveCodePointOffset(dest, 0, destLength, codeUnitIndex, i-codeUnitIndex);
+                }
+
+                /* use the UChar index codeUnitIndex instead of the code point index i */
+                if(codeUnitIndex<destLength) {
+                    System.arraycopy(dest, codeUnitIndex,
+                                     dest, codeUnitIndex+cpLength,
+                                    (destLength-codeUnitIndex));
+                    if(caseFlags!=null) {
+                        System.arraycopy(caseFlags, codeUnitIndex,
+                                         caseFlags, codeUnitIndex+cpLength,
+                                         destLength-codeUnitIndex);
+                    }
+                }
+                if(cpLength==1) {
+                    /* BMP, insert one code unit */
+                    dest[codeUnitIndex]=(char)n;
+                } else {
+                    /* supplementary character, insert two code units */
+                    dest[codeUnitIndex]=UTF16.getLeadSurrogate(n);
+                    dest[codeUnitIndex+1]=UTF16.getTrailSurrogate(n);
+                }
+                if(caseFlags!=null) {
+                    /* Case of last character determines uppercase flag: */
+                    caseFlags[codeUnitIndex]=isBasicUpperCase(src.charAt(in-1));
+                    if(cpLength==2) {
+                        caseFlags[codeUnitIndex+1]=false;
+                    }
+                }
+            }
+            destLength+=cpLength;
+            ++i;
+        }
+        result.append(dest, 0, destLength);
+        return result;
+    }
+}
+
diff --git a/src/com/ibm/icu/text/Quantifier.java b/src/com/ibm/icu/text/Quantifier.java
new file mode 100644
index 0000000..d26d607
--- /dev/null
+++ b/src/com/ibm/icu/text/Quantifier.java
@@ -0,0 +1,115 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+class Quantifier implements UnicodeMatcher {
+
+    private UnicodeMatcher matcher;
+
+    private int minCount;
+
+    private int maxCount;
+
+    /**
+     * Maximum count a quantifier can have.
+     */
+    public static final int MAX = Integer.MAX_VALUE;
+
+    public Quantifier(UnicodeMatcher theMatcher,
+                      int theMinCount, int theMaxCount) {
+        if (theMatcher == null || minCount < 0 || maxCount < 0 || minCount > maxCount) {
+            throw new IllegalArgumentException();
+        }
+        matcher = theMatcher;
+        minCount = theMinCount;
+        maxCount = theMaxCount;
+    }
+
+    /**
+     * Implement UnicodeMatcher API.
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        int start = offset[0];
+        int count = 0;
+        while (count < maxCount) {
+            int pos = offset[0];
+            int m = matcher.matches(text, offset, limit, incremental);
+            if (m == U_MATCH) {
+                ++count;
+                if (pos == offset[0]) {
+                    // If offset has not moved we have a zero-width match.
+                    // Don't keep matching it infinitely.
+                    break;
+                }
+            } else if (incremental && m == U_PARTIAL_MATCH) {
+                return U_PARTIAL_MATCH;
+            } else {
+                break;
+            }
+        }
+        if (incremental && offset[0] == limit) {
+            return U_PARTIAL_MATCH;
+        }
+        if (count >= minCount) {
+            return U_MATCH;
+        }
+        offset[0] = start;
+        return U_MISMATCH;
+    }
+
+    /**
+     * Implement UnicodeMatcher API
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        result.append(matcher.toPattern(escapeUnprintable));
+        if (minCount == 0) {
+            if (maxCount == 1) {
+                return result.append('?').toString();
+            } else if (maxCount == MAX) {
+                return result.append('*').toString();
+            }
+            // else fall through
+        } else if (minCount == 1 && maxCount == MAX) {
+            return result.append('+').toString();
+        }
+        result.append('{');
+        Utility.appendNumber(result, minCount);
+        result.append(',');
+        if (maxCount != MAX) {
+            Utility.appendNumber(result, maxCount);
+        }
+        result.append('}');
+        return result.toString();
+    }
+
+    /**
+     * Implement UnicodeMatcher API
+     */
+    public boolean matchesIndexValue(int v) {
+        return (minCount == 0) || matcher.matchesIndexValue(v);
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     * @returns a reference to toUnionTo
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        if (maxCount > 0) {
+            matcher.addMatchSetTo(toUnionTo);
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/RBBIDataWrapper.java b/src/com/ibm/icu/text/RBBIDataWrapper.java
new file mode 100644
index 0000000..f64c645
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBIDataWrapper.java
@@ -0,0 +1,525 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+import com.ibm.icu.impl.Trie;
+import com.ibm.icu.impl.CharTrie;
+
+/**
+* <p>Internal class used for Rule Based Break Iterators</p>
+* <p>This class provides access to the compiled break rule data, as
+* it is stored in a .brk file.  
+* @internal
+* 
+*/
+final class RBBIDataWrapper {
+    //
+    // These fields are the ready-to-use compiled rule data, as
+    //   read from the file.
+    //
+    RBBIDataHeader fHeader;
+    short          fFTable[];
+    short          fRTable[];
+    short          fSFTable[];
+    short          fSRTable[];
+    CharTrie       fTrie;
+    String         fRuleSource;
+    int            fStatusTable[];
+    
+    //
+    // Indexes to fields in the ICU4C style binary form of the RBBI Data Header
+    //   Used by the rule compiler when flattening the data.
+    //
+    final static int    DH_SIZE           = 24;
+    final static int    DH_MAGIC          = 0;
+    final static int    DH_FORMATVERSION  = 1;
+    final static int    DH_LENGTH         = 2;
+    final static int    DH_CATCOUNT       = 3;
+    final static int    DH_FTABLE         = 4;
+    final static int    DH_FTABLELEN      = 5;
+    final static int    DH_RTABLE         = 6;
+    final static int    DH_RTABLELEN      = 7;
+    final static int    DH_SFTABLE        = 8;
+    final static int    DH_SFTABLELEN     = 9;
+    final static int    DH_SRTABLE        = 10;
+    final static int    DH_SRTABLELEN     = 11;
+    final static int    DH_TRIE           = 12;
+    final static int    DH_TRIELEN        = 13;
+    final static int    DH_RULESOURCE     = 14;
+    final static int    DH_RULESOURCELEN  = 15;
+    final static int    DH_STATUSTABLE    = 16;
+    final static int    DH_STATUSTABLELEN = 17;
+    
+    
+    // Index offsets to the fields in a state table row.
+    //    Corresponds to struct RBBIStateTableRow in the C version.
+    //   
+    final static int      ACCEPTING  = 0;
+    final static int      LOOKAHEAD  = 1;
+    final static int      TAGIDX     = 2;
+    final static int      RESERVED   = 3;
+    final static int      NEXTSTATES = 4;
+    
+    // Index offsets to header fields of a state table
+    //     struct RBBIStateTable {...   in the C version.
+    //
+    final static int      NUMSTATES  = 0;
+    final static int      ROWLEN     = 2;
+    final static int      FLAGS      = 4;
+    final static int      RESERVED_2 = 6;
+    final static int      ROW_DATA   = 8;
+    
+    //  Bit selectors for the "FLAGS" field of the state table header
+    //     enum RBBIStateTableFlags in the C version.
+    //
+    final static int      RBBI_LOOKAHEAD_HARD_BREAK = 1;
+    final static int      RBBI_BOF_REQUIRED         = 2;  
+    
+    /**
+     * Data Header.  A struct-like class with the fields from the RBBI data file header.
+     */
+    final static class RBBIDataHeader {
+        int         fMagic;         //  == 0xbla0 
+        int         fVersion;       //  == 1 (for ICU 3.2 and earlier. 
+        byte[]      fFormatVersion; //  For ICU 3.4 and later.
+        int         fLength;        //  Total length in bytes of this RBBI Data, 
+                                       //      including all sections, not just the header. 
+        int         fCatCount;      //  Number of character categories. 
+
+        //  
+        //  Offsets and sizes of each of the subsections within the RBBI data. 
+        //  All offsets are bytes from the start of the RBBIDataHeader. 
+        //  All sizes are in bytes. 
+        //  
+        int         fFTable;         //  forward state transition table. 
+        int         fFTableLen;
+        int         fRTable;         //  Offset to the reverse state transition table. 
+        int         fRTableLen;
+        int         fSFTable;        //  safe point forward transition table 
+        int         fSFTableLen;
+        int         fSRTable;        //  safe point reverse transition table 
+        int         fSRTableLen;
+        int         fTrie;           //  Offset to Trie data for character categories 
+        int         fTrieLen;
+        int         fRuleSource;     //  Offset to the source for for the break 
+        int         fRuleSourceLen;  //    rules.  Stored UChar *. 
+        int         fStatusTable;    // Offset to the table of rule status values 
+        int         fStatusTableLen;
+
+        public RBBIDataHeader() {
+            fMagic = 0;
+            fFormatVersion = new byte[4];
+        }
+    }
+    
+    
+    /**
+     * RBBI State Table Indexing Function.  Given a state number, return the
+     * array index of the start of the state table row for that state.
+     * 
+     */
+    int getRowIndex(int state){
+        return ROW_DATA + state * (fHeader.fCatCount + 4);
+    }
+    
+    static class TrieFoldingFunc implements  Trie.DataManipulate {
+        public int getFoldingOffset(int data) {
+            if ((data & 0x8000) != 0) {
+                return data & 0x7fff;
+            } else {
+                return 0;
+            }
+        }
+    }
+    static TrieFoldingFunc  fTrieFoldingFunc = new TrieFoldingFunc();
+ 
+    
+    RBBIDataWrapper() {
+    }
+
+    /*
+     *  Get an RBBIDataWrapper from an InputStream onto a pre-compiled set
+     *  of RBBI rules.
+     */
+    static RBBIDataWrapper get(InputStream is) throws IOException {
+        int i;
+        
+        DataInputStream dis = new DataInputStream(new BufferedInputStream(is));
+        RBBIDataWrapper This = new RBBIDataWrapper();
+        
+        // Seek past the ICU data header.
+        //   TODO:  verify that the header looks good.
+        dis.skip(0x80);
+        
+        // Read in the RBBI data header...
+        This.fHeader = new  RBBIDataHeader();
+        This.fHeader.fMagic          = dis.readInt();
+        This.fHeader.fVersion        = dis.readInt();
+        This.fHeader.fFormatVersion[0] = (byte) (This.fHeader.fVersion >> 24);
+        This.fHeader.fFormatVersion[1] = (byte) (This.fHeader.fVersion >> 16);
+        This.fHeader.fFormatVersion[2] = (byte) (This.fHeader.fVersion >> 8);
+        This.fHeader.fFormatVersion[3] = (byte) (This.fHeader.fVersion);
+        This.fHeader.fLength         = dis.readInt();
+        This.fHeader.fCatCount       = dis.readInt();
+        This.fHeader.fFTable         = dis.readInt();
+        This.fHeader.fFTableLen      = dis.readInt();
+        This.fHeader.fRTable         = dis.readInt();
+        This.fHeader.fRTableLen      = dis.readInt();
+        This.fHeader.fSFTable        = dis.readInt();
+        This.fHeader.fSFTableLen     = dis.readInt();
+        This.fHeader.fSRTable        = dis.readInt();
+        This.fHeader.fSRTableLen     = dis.readInt();
+        This.fHeader.fTrie           = dis.readInt();
+        This.fHeader.fTrieLen        = dis.readInt();
+        This.fHeader.fRuleSource     = dis.readInt();
+        This.fHeader.fRuleSourceLen  = dis.readInt();
+        This.fHeader.fStatusTable    = dis.readInt();
+        This.fHeader.fStatusTableLen = dis.readInt();
+        dis.skip(6 * 4);    // uint32_t  fReserved[6];
+        
+        
+        if (This.fHeader.fMagic != 0xb1a0 || 
+                ! (This.fHeader.fVersion == 1  ||         // ICU 3.2 and earlier
+                   This.fHeader.fFormatVersion[0] == 3)   // ICU 3.4
+            ) {
+            throw new IOException("Break Iterator Rule Data Magic Number Incorrect, or unsupported data version.");
+        }
+        
+        // Current position in input stream.  
+        int pos = 24 * 4;     // offset of end of header, which has 24 fields, all int32_t (4 bytes)
+        
+        //
+        // Read in the Forward state transition table as an array of shorts.
+        //
+        
+        //   Quick Sanity Check
+        if (This.fHeader.fFTable < pos || This.fHeader.fFTable > This.fHeader.fLength) {
+             throw new IOException("Break iterator Rule data corrupt");
+        }
+        
+        //    Skip over any padding preceding this table
+        dis.skip(This.fHeader.fFTable - pos);
+        pos = This.fHeader.fFTable;
+        
+        This.fFTable = new short[This.fHeader.fFTableLen / 2];
+        for ( i=0; i<This.fFTable.length; i++) {
+            This.fFTable[i] = dis.readShort(); 
+            pos += 2;
+        }
+        
+        //
+        // Read in the Reverse state table
+        //
+        
+        // Skip over any padding in the file
+        dis.skip(This.fHeader.fRTable - pos);
+        pos = This.fHeader.fRTable;
+        
+        // Create & fill the table itself.
+        This.fRTable = new short[This.fHeader.fRTableLen / 2];
+        for (i=0; i<This.fRTable.length; i++) {
+            This.fRTable[i] = dis.readShort(); 
+            pos += 2;
+        }
+        
+        //
+        // Read in the Safe Forward state table
+        // 
+        if (This.fHeader.fSFTableLen > 0) {
+            // Skip over any padding in the file
+            dis.skip(This.fHeader.fSFTable - pos);
+            pos = This.fHeader.fSFTable;
+            
+            // Create & fill the table itself.
+            This.fSFTable = new short[This.fHeader.fSFTableLen / 2];
+            for (i=0; i<This.fSFTable.length; i++) {
+                This.fSFTable[i] = dis.readShort(); 
+                pos += 2;
+            }           
+        }
+        
+        //
+        // Read in the Safe Reverse state table
+        // 
+        if (This.fHeader.fSRTableLen > 0) {
+            // Skip over any padding in the file
+            dis.skip(This.fHeader.fSRTable - pos);
+            pos = This.fHeader.fSRTable;
+            
+            // Create & fill the table itself.
+            This.fSRTable = new short[This.fHeader.fSRTableLen / 2];
+            for (i=0; i<This.fSRTable.length; i++) {
+                This.fSRTable[i] = dis.readShort(); 
+                pos += 2;
+            }           
+        }
+        
+        //
+        // Unserialize the Character categories TRIE
+        //     Because we can't be absolutely certain where the Trie deserialize will
+        //     leave the input stream, leave position unchanged.
+        //     The seek to the start of the next item following the TRIE will get us
+        //     back in sync.
+        //
+        dis.skip(This.fHeader.fTrie - pos);     // seek input stream from end of previous section to
+        pos = This.fHeader.fTrie;               //   to the start of the trie
+    
+        dis.mark(This.fHeader.fTrieLen+100);    // Mark position of start of TRIE in the input
+                                                //  and tell Java to keep the mark valid so long
+                                                //  as we don't go more than 100 bytes past the
+                                                //  past the end of the TRIE.
+    
+        This.fTrie = new CharTrie(dis, fTrieFoldingFunc);  // Deserialize the TRIE, leaving input
+                                                //  stream at an unknown position, preceding the
+                                                //  padding between TRIE and following section.
+    
+        dis.reset();                            // Move input stream back to marked position at
+                                                //   the start of the serialized TRIE.  Now our
+                                                //   "pos" variable and the input stream are in
+                                                //   agreement.
+        
+        //
+        // Read the Rule Status Table
+        //
+        if (pos > This.fHeader.fStatusTable) {
+            throw new IOException("Break iterator Rule data corrupt");            
+        }
+        dis.skip(This.fHeader.fStatusTable - pos);
+        pos = This.fHeader.fStatusTable;
+        This.fStatusTable = new int[This.fHeader.fStatusTableLen / 4];
+        for (i=0; i<This.fStatusTable.length; i++) {
+            This.fStatusTable[i] = dis.readInt(); 
+            pos += 4;
+        }
+        
+        //
+        // Put the break rule source into a String
+        //
+        if (pos > This.fHeader.fRuleSource) {
+            throw new IOException("Break iterator Rule data corrupt");            
+        }
+        dis.skip(This.fHeader.fRuleSource - pos);
+        pos = This.fHeader.fRuleSource;
+        StringBuffer sb = new StringBuffer(This.fHeader.fRuleSourceLen / 2);
+        for (i=0; i<This.fHeader.fRuleSourceLen; i+=2) {
+            sb.append(dis.readChar()); 
+            pos += 2;
+        }
+        This.fRuleSource = sb.toString();
+        
+        if (RuleBasedBreakIterator.fDebugEnv!=null && RuleBasedBreakIterator.fDebugEnv.indexOf("data")>=0) {
+            This.dump();
+        }
+        return This;
+    }
+
+    ///CLOVER:OFF
+    //  Getters for fields from the state table header
+    //
+    final static int   getNumStates(short  table[]) {
+        int  hi = table[NUMSTATES];
+        int  lo = table[NUMSTATES+1];
+        int  val = (hi<<16) + (lo&0x0000ffff);
+        return val;
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /** Debug function to display the break iterator data.  
+     *  @internal
+     */
+    void dump() {
+        System.out.println("RBBI Data Wrapper dump ...");
+        System.out.println();
+        System.out.println("Forward State Table");
+        dumpTable(fFTable);
+        System.out.println("Reverse State Table");
+        dumpTable(fRTable);
+        System.out.println("Forward Safe Points Table");
+        dumpTable(fSFTable);
+        System.out.println("Reverse Safe Points Table");
+        dumpTable(fSRTable);
+        
+        dumpCharCategories();
+        System.out.println("Source Rules: " + fRuleSource);
+        
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /** Fixed width int-to-string conversion.   
+     *  @internal
+     * 
+     */
+    static public String intToString(int n, int width) {
+        StringBuffer  dest = new StringBuffer(width);   
+        dest.append(n);
+        while (dest.length() < width) {
+           dest.insert(0, ' ');   
+        }
+        return dest.toString();
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /** Fixed width int-to-string conversion.   
+     *  @internal
+     * 
+     */
+    static public String intToHexString(int n, int width) {
+        StringBuffer  dest = new StringBuffer(width);   
+        dest.append(Integer.toHexString(n));
+        while (dest.length() < width) {
+           dest.insert(0, ' ');   
+        }
+        return dest.toString();
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /** Dump a state table.  (A full set of RBBI rules has 4 state tables.)  */
+    private void dumpTable(short table[]) {
+        if (table == null)   {
+            System.out.println("  -- null -- ");
+        } else {
+            int n;
+            int state;
+            String header = " Row  Acc Look  Tag";
+            for (n=0; n<fHeader.fCatCount; n++) {
+                header += intToString(n, 5);     
+            }
+            System.out.println(header);
+            for (n=0; n<header.length(); n++) {
+                System.out.print("-");
+            }
+            System.out.println();
+            for (state=0; state< getNumStates(table); state++) {
+                dumpRow(table, state);   
+            }
+            System.out.println();
+        }
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    /**
+     * Dump (for debug) a single row of an RBBI state table
+     * @param table
+     * @param state
+     * @internal
+     */
+    private void dumpRow(short table[], int   state) {
+        StringBuffer dest = new StringBuffer(fHeader.fCatCount*5 + 20);
+        dest.append(intToString(state, 4));
+        int row = getRowIndex(state);
+        if (table[row+ACCEPTING] != 0) {
+           dest.append(intToString(table[row+ACCEPTING], 5)); 
+        }else {
+            dest.append("     ");
+        }
+        if (table[row+LOOKAHEAD] != 0) {
+            dest.append(intToString(table[row+LOOKAHEAD], 5)); 
+        }else {
+            dest.append("     ");
+        }
+        dest.append(intToString(table[row+TAGIDX], 5)); 
+        
+        for (int col=0; col<fHeader.fCatCount; col++) {
+            dest.append(intToString(table[row+NEXTSTATES+col], 5));   
+        }
+
+        System.out.println(dest);
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    private void dumpCharCategories() {
+        int n = fHeader.fCatCount;
+        String   catStrings[] = new  String[n+1];
+        int      rangeStart = 0;
+        int      rangeEnd = 0;
+        int      lastCat = -1;
+        int      char32;
+        int      category;
+        int      lastNewline[] = new int[n+1];
+        
+        for (category = 0; category <= fHeader.fCatCount; category ++) {
+            catStrings[category] = "";   
+        }
+        System.out.println("\nCharacter Categories");
+        System.out.println("--------------------");
+        for (char32 = 0; char32<=0x10ffff; char32++) {
+            category = fTrie.getCodePointValue(char32);
+            category &= ~0x4000;            // Mask off dictionary bit.
+            if (category < 0 || category > fHeader.fCatCount) {
+                System.out.println("Error, bad category " + Integer.toHexString(category) + 
+                        " for char " + Integer.toHexString(char32)); 
+                break;
+            }
+            if (category == lastCat ) {
+                rangeEnd = char32;   
+            } else {
+                if (lastCat >= 0) {
+                    if (catStrings[lastCat].length() > lastNewline[lastCat] + 70) {
+                        lastNewline[lastCat] = catStrings[lastCat].length() + 10;
+                        catStrings[lastCat] += "\n       ";
+                    }
+                    
+                    catStrings[lastCat] += " " + Integer.toHexString(rangeStart);
+                    if (rangeEnd != rangeStart) {
+                        catStrings[lastCat] += "-" + Integer.toHexString(rangeEnd);   
+                    }
+                }
+                lastCat = category;
+                rangeStart = rangeEnd = char32;
+            }
+        }
+        catStrings[lastCat] += " " + Integer.toHexString(rangeStart);
+        if (rangeEnd != rangeStart) {
+            catStrings[lastCat] += "-" + Integer.toHexString(rangeEnd);   
+        }
+        
+        for (category = 0; category <= fHeader.fCatCount; category ++) {
+            System.out.println (intToString(category, 5) + "  " + catStrings[category]);   
+        }
+        System.out.println();
+    }
+    ///CLOVER:ON
+
+    /*static RBBIDataWrapper get(String name) throws IOException {
+        String  fullName = "data/" + name;
+        InputStream is = ICUData.getRequiredStream(fullName);
+        return get(is);
+    }
+
+    public static void main(String[] args) {
+        String s;
+        if (args.length == 0) {
+            s = "char";
+        } else {
+            s = args[0];
+        }
+        System.out.println("RBBIDataWrapper.main(" + s + ") ");
+        
+        String versionedName = ICUResourceBundle.ICU_BUNDLE+"/"+ s + ".brk";
+        
+        try {
+            RBBIDataWrapper This = RBBIDataWrapper.get(versionedName);
+            This.dump();
+        }
+       catch (Exception e) {
+           System.out.println("Exception: " + e.toString());
+       }
+           
+    }*/
+}
diff --git a/src/com/ibm/icu/text/RBBINode.java b/src/com/ibm/icu/text/RBBINode.java
new file mode 100644
index 0000000..3783f63
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBINode.java
@@ -0,0 +1,357 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (c) 2001-2007, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ********************************************************************/
+
+package com.ibm.icu.text;
+
+import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
+
+import com.ibm.icu.impl.Assert;
+
+/**
+ *   This class represents a node in the parse tree created by the RBBI Rule compiler.
+ * @internal
+ *
+ */
+class RBBINode {
+
+    
+ //   enum NodeType {
+     static final int    setRef = 0;
+     static final int    uset = 1;
+     static final int    varRef = 2;
+     static final int    leafChar = 3;
+     static final int    lookAhead = 4;
+     static final int    tag = 5;
+     static final int    endMark = 6;
+     static final int    opStart = 7;
+     static final int    opCat = 8;
+     static final int    opOr = 9;
+     static final int    opStar = 10;
+     static final int    opPlus = 11;
+     static final int    opQuestion = 12;
+     static final int    opBreak = 13;
+     static final int    opReverse = 14;
+     static final int    opLParen = 15;
+     static final int    nodeTypeLimit = 16;    //  For Assertion checking only.
+     
+     static final String []  nodeTypeNames = {
+         "setRef",
+         "uset",
+         "varRef",
+         "leafChar",
+         "lookAhead",
+         "tag",
+         "endMark",
+         "opStart",
+         "opCat",
+         "opOr",
+         "opStar",
+         "opPlus",
+         "opQuestion",
+         "opBreak",
+         "opReverse",
+         "opLParen"
+     };
+
+//    enum OpPrecedence {      
+    static final int    precZero   = 0;
+    static final int    precStart  = 1;
+    static final int    precLParen = 2;
+    static final int    precOpOr   = 3;
+    static final int    precOpCat  = 4;
+        
+    int          fType;   // enum NodeType
+    RBBINode      fParent;
+    RBBINode      fLeftChild;
+    RBBINode      fRightChild;
+    UnicodeSet    fInputSet;           // For uset nodes only.
+    int          fPrecedence = precZero;   // enum OpPrecedence, For binary ops only.
+    
+    String       fText;                 // Text corresponding to this node.
+                                        //   May be lazily evaluated when (if) needed
+                                        //   for some node types.
+    int           fFirstPos;            // Position in the rule source string of the
+                                        //   first text associated with the node.
+                                        //   If there's a left child, this will be the same
+                                        //   as that child's left pos.
+    int           fLastPos;             //  Last position in the rule source string
+                                        //    of any text associated with this node.
+                                        //    If there's a right child, this will be the same
+                                        //    as that child's last postion.
+
+    boolean      fNullable;            //  See Aho DFA table generation algorithm
+    int           fVal;                 // For leafChar nodes, the value.
+                                        //   Values are the character category,
+                                        //   corresponds to columns in the final
+                                        //   state transition table.
+
+    boolean      fLookAheadEnd;        // For endMark nodes, set TRUE if
+                                        //   marking the end of a look-ahead rule.
+
+    Set           fFirstPosSet;         // See Aho DFA table generation algorithm
+    Set           fLastPosSet;          // See Aho.       
+    Set           fFollowPos;           // See Aho.
+    
+    int           fSerialNum;           //  Debugging aids.  Each node gets a unique serial number.
+    static int    gLastSerial;
+
+    RBBINode(int t) {
+        Assert.assrt(t < nodeTypeLimit);
+        fSerialNum = ++gLastSerial;
+        fType = t;
+
+        fFirstPosSet = new HashSet();
+        fLastPosSet = new HashSet();
+        fFollowPos = new HashSet();
+        if (t == opCat) {
+            fPrecedence = precOpCat;
+        } else if (t == opOr) {
+            fPrecedence = precOpOr;
+        } else if (t == opStart) {
+            fPrecedence = precStart;
+        } else if (t == opLParen) {
+            fPrecedence = precLParen;
+        } else {
+            fPrecedence = precZero;
+        }
+    }
+
+    RBBINode(RBBINode other) {
+        fSerialNum = ++gLastSerial;
+        fType = other.fType;
+        fInputSet = other.fInputSet;
+        fPrecedence = other.fPrecedence;
+        fText = other.fText;
+        fFirstPos = other.fFirstPos;
+        fLastPos = other.fLastPos;
+        fNullable = other.fNullable;
+        fVal = other.fVal;
+        fFirstPosSet = new HashSet(other.fFirstPosSet);
+        fLastPosSet = new HashSet(other.fLastPosSet);
+        fFollowPos = new HashSet(other.fFollowPos);
+    }
+
+    //-------------------------------------------------------------------------
+    //
+    //        cloneTree Make a copy of the subtree rooted at this node.
+    //                      Discard any variable references encountered along the way,
+    //                      and replace with copies of the variable's definitions.
+    //                      Used to replicate the expression underneath variable
+    //                      references in preparation for generating the DFA tables.
+    //
+    //-------------------------------------------------------------------------
+    RBBINode cloneTree() {
+        RBBINode n;
+
+        if (fType == RBBINode.varRef) {
+            // If the current node is a variable reference, skip over it
+            //   and clone the definition of the variable instead.
+            n = fLeftChild.cloneTree();
+        } else if (fType == RBBINode.uset) {
+            n = this;
+        } else {
+            n = new RBBINode(this);
+            if (fLeftChild != null) {
+                n.fLeftChild = fLeftChild.cloneTree();
+                n.fLeftChild.fParent = n;
+            }
+            if (fRightChild != null) {
+                n.fRightChild = fRightChild.cloneTree();
+                n.fRightChild.fParent = n;
+            }
+        }
+        return n;
+    }
+
+
+
+    //-------------------------------------------------------------------------
+    //
+    //       flattenVariables Walk a parse tree, replacing any variable
+    //                          references with a copy of the variable's definition.
+    //                          Aside from variables, the tree is not changed.
+    //
+    //                          Return the root of the tree. If the root was not a variable
+    //                          reference, it remains unchanged - the root we started with
+    //                          is the root we return. If, however, the root was a variable
+    //                          reference, the root of the newly cloned replacement tree will
+    //                          be returned, and the original tree deleted.
+    //
+    //                          This function works by recursively walking the tree
+    //                          without doing anything until a variable reference is
+    //                          found, then calling cloneTree() at that point. Any
+    //                          nested references are handled by cloneTree(), not here.
+    //
+    //-------------------------------------------------------------------------
+    RBBINode flattenVariables() {
+        if (fType == varRef) {
+            RBBINode retNode = fLeftChild.cloneTree();
+            // delete this;
+            return retNode;
+        }
+
+        if (fLeftChild != null) {
+            fLeftChild = fLeftChild.flattenVariables();
+            fLeftChild.fParent = this;
+        }
+        if (fRightChild != null) {
+            fRightChild = fRightChild.flattenVariables();
+            fRightChild.fParent = this;
+        }
+        return this;
+    }
+
+    //-------------------------------------------------------------------------
+    //
+    //      flattenSets Walk the parse tree, replacing any nodes of type setRef
+    //                     with a copy of the expression tree for the set. A set's
+    //                     equivalent expression tree is precomputed and saved as
+    //                     the left child of the uset node.
+    //
+    //-------------------------------------------------------------------------
+    void flattenSets() {
+        Assert.assrt(fType != setRef);
+
+        if (fLeftChild != null) {
+            if (fLeftChild.fType == setRef) {
+                RBBINode setRefNode = fLeftChild;
+                RBBINode usetNode = setRefNode.fLeftChild;
+                RBBINode replTree = usetNode.fLeftChild;
+                fLeftChild = replTree.cloneTree();
+                fLeftChild.fParent = this;
+            } else {
+                fLeftChild.flattenSets();
+            }
+        }
+
+        if (fRightChild != null) {
+            if (fRightChild.fType == setRef) {
+                RBBINode setRefNode = fRightChild;
+                RBBINode usetNode = setRefNode.fLeftChild;
+                RBBINode replTree = usetNode.fLeftChild;
+                fRightChild = replTree.cloneTree();
+                fRightChild.fParent = this;
+                // delete setRefNode;
+            } else {
+                fRightChild.flattenSets();
+            }
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    //
+    //       findNodes() Locate all the nodes of the specified type, starting
+    //                       at the specified root.
+    //
+    //-------------------------------------------------------------------------
+    void findNodes(List dest, int kind) {
+        if (fType == kind) {
+            dest.add(this);
+        }
+        if (fLeftChild != null) {
+            fLeftChild.findNodes(dest, kind);
+        }
+        if (fRightChild != null) {
+            fRightChild.findNodes(dest, kind);
+        }
+    }
+
+    
+ 
+    //-------------------------------------------------------------------------
+    //
+    //        print. Print out a single node, for debugging.
+    //
+    //-------------------------------------------------------------------------
+    ///CLOVER:OFF
+    static void printNode(RBBINode n) {
+
+        if (n==null) {
+            System.out.print (" -- null --\n");
+        } else {
+            RBBINode.printInt( n.fSerialNum, 10);
+            RBBINode.printString(nodeTypeNames[n.fType], 11);
+            RBBINode.printInt(n.fParent==null? 0     : n.fParent.fSerialNum, 11);
+            RBBINode.printInt(n.fLeftChild==null? 0  : n.fLeftChild.fSerialNum, 11);
+            RBBINode.printInt(n.fRightChild==null? 0 : n.fRightChild.fSerialNum, 12);
+            RBBINode.printInt(n.fFirstPos, 12);
+            RBBINode.printInt(n.fVal, 7);
+            
+            if (n.fType == varRef) {
+                System.out.print(" " + n.fText);
+            }
+        }
+        System.out.println("");
+    }
+    ///CLOVER:ON
+ 
+
+    // Print a String in a fixed field size.
+    // Debugging function.
+    ///CLOVER:OFF
+    static void printString(String s, int minWidth) {
+        for (int i = minWidth; i < 0; i++) {
+            // negative width means pad leading spaces, not fixed width.
+            System.out.print(' ');
+        }
+        for (int i = s.length(); i < minWidth; i++) {
+            System.out.print(' ');
+        }
+        System.out.print(s);
+    }
+    ///CLOVER:ON
+
+    //
+    //  Print an int in a fixed size field.
+    //  Debugging function.
+    //
+    ///CLOVER:OFF
+    static void printInt(int i, int minWidth) {
+        String s = Integer.toString(i);
+        printString(s, Math.max(minWidth, s.length() + 1));
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    static void printHex(int i, int minWidth) {
+        String s = Integer.toString(i, 16);
+        String leadingZeroes = "00000"
+                .substring(0, Math.max(0, 5 - s.length()));
+        s = leadingZeroes + s;
+        printString(s, minWidth);
+    }
+    ///CLOVER:ON
+
+
+    // -------------------------------------------------------------------------
+    //
+    //        print. Print out the tree of nodes rooted at "this"
+    //
+    // -------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printTree(boolean printHeading) {
+        if (printHeading) {
+            System.out.println( "-------------------------------------------------------------------");
+            System.out.println("    Serial       type     Parent  LeftChild  RightChild    position  value");
+        }
+        printNode(this);
+            // Only dump the definition under a variable reference if asked to.
+            // Unconditinally dump children of all other node types.
+            if (fType != varRef) {
+                if (fLeftChild != null) {
+                    fLeftChild.printTree(false);
+                }
+                
+                if (fRightChild != null) {
+                    fRightChild.printTree(false);
+                }
+            }
+    }
+    ///CLOVER:ON
+
+}
diff --git a/src/com/ibm/icu/text/RBBIRuleBuilder.java b/src/com/ibm/icu/text/RBBIRuleBuilder.java
new file mode 100644
index 0000000..5bacd88
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBIRuleBuilder.java
@@ -0,0 +1,332 @@
+//
+//    Copyright (C) 2002-2007, International Business Machines Corporation and others.
+//    All Rights Reserved.
+//
+//
+
+package com.ibm.icu.text;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.io.OutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.ICUDebug;
+
+class RBBIRuleBuilder {
+    //   This is the main class for building (compiling) break rules into the tables
+    //    required by the runtime RBBI engine.
+    //
+    
+    String fDebugEnv;              // controls debug trace output
+    String fRules;                 // The rule string that we are compiling
+    RBBIRuleScanner fScanner;      // The scanner.
+
+    
+    //
+    //  There are four separate parse trees generated, one for each of the
+    //    forward rules, reverse rules, safe forward rules and safe reverse rules.
+    //  This array references the root of each of the trees.
+    //  
+    RBBINode[]         fTreeRoots = new RBBINode[4];
+    static final int   fForwardTree = 0;  // Indexes into the above fTreeRoots array
+    static final int   fReverseTree = 1;  //   for each of the trees.
+    static final int   fSafeFwdTree = 2;  //   (in C, these are pointer variables and
+    static final int   fSafeRevTree = 3;  //    there is no array.)
+    int fDefaultTree = fForwardTree;      // For rules not qualified with a !
+                                          //   the tree to which they belong to.
+
+    boolean fChainRules;                  // True for chained Unicode TR style rules.
+                                          // False for traditional regexp rules.
+
+    boolean fLBCMNoChain;                 // True:  suppress chaining of rules on
+                                          //   chars with LineBreak property == CM.
+
+    boolean fLookAheadHardBreak;          // True:  Look ahead matches cause an
+                                          // immediate break, no continuing for the
+                                          // longest match.
+
+    RBBISetBuilder fSetBuilder;           // Set and Character Category builder.
+    List fUSetNodes;                      // Vector of all uset nodes.
+    RBBITableBuilder fForwardTables;      // State transition tables
+    RBBITableBuilder fReverseTables;
+    RBBITableBuilder fSafeFwdTables;
+    RBBITableBuilder fSafeRevTables;
+
+    //
+    // Status {tag} values.   These structures are common to all of the rule sets (Forward, Reverse, etc.).
+    //
+    Map fStatusSets = new HashMap();      // Status value sets encountered so far.
+                                          //  Map Key is the set of values.
+                                          //  Map Value is the runtime array index.
+
+    List fRuleStatusVals;                 // List of Integer objects.  Has same layout as the
+                                          //   runtime array of status (tag) values - 
+                                          //     number of values in group 1
+                                          //        first status value in group 1
+                                          //        2nd status value in group 1
+                                          //        ...
+                                          //     number of values in group 2
+                                          //        first status value in group 2
+                                          //        etc.
+                                          //
+    // Error codes from ICU4C.
+    //    using these simplified the porting, and consolidated the
+    //    creation of Java exceptions
+    //
+    static final int U_BRK_ERROR_START = 0x10200;
+    /**< Start of codes indicating Break Iterator failures */
+    
+    static final int U_BRK_INTERNAL_ERROR = 0x10201;
+    /**< An internal error (bug) was detected.             */
+    
+    static final int U_BRK_HEX_DIGITS_EXPECTED = 0x10202;
+    /**< Hex digits expected as part of a escaped char in a rule. */
+    
+    static final int U_BRK_SEMICOLON_EXPECTED = 0x10203;
+    /**< Missing ';' at the end of a RBBI rule.            */
+    
+    static final int U_BRK_RULE_SYNTAX = 0x10204;
+    /**< Syntax error in RBBI rule.                        */
+    
+    static final int U_BRK_UNCLOSED_SET = 0x10205;
+    /**< UnicodeSet witing an RBBI rule missing a closing ']'.  */
+    
+    static final int U_BRK_ASSIGN_ERROR = 0x10206;
+    /**< Syntax error in RBBI rule assignment statement.   */
+    
+    static final int U_BRK_VARIABLE_REDFINITION = 0x10207;
+    /**< RBBI rule $Variable redefined.                    */
+    
+    static final int U_BRK_MISMATCHED_PAREN = 0x10208;
+    /**< Mis-matched parentheses in an RBBI rule.          */
+    
+    static final int U_BRK_NEW_LINE_IN_QUOTED_STRING = 0x10209;
+    /**< Missing closing quote in an RBBI rule.            */
+    
+    static final int U_BRK_UNDEFINED_VARIABLE = 0x1020a;
+    /**< Use of an undefined $Variable in an RBBI rule.    */
+    
+    static final int U_BRK_INIT_ERROR = 0x1020b;
+    /**< Initialization failure.  Probable missing ICU Data. */
+    
+    static final int U_BRK_RULE_EMPTY_SET = 0x1020c;
+    /**< Rule contains an empty Unicode Set.               */
+    
+    static final int U_BRK_UNRECOGNIZED_OPTION = 0x1020d;
+    /**< !!option in RBBI rules not recognized.            */
+    
+    static final int U_BRK_MALFORMED_RULE_TAG = 0x1020e;
+    /**< The {nnn} tag on a rule is mal formed             */
+    static final int U_BRK_MALFORMED_SET = 0x1020f;
+    
+    static final int U_BRK_ERROR_LIMIT = 0x10210;
+    /**< This must always be the last value to indicate the limit for Break Iterator failures */
+
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  Constructor.
+    //
+    //----------------------------------------------------------------------------------------
+    RBBIRuleBuilder(String rules)
+    {
+        fDebugEnv       = ICUDebug.enabled("rbbi") ?
+                            ICUDebug.value("rbbi") : null;
+        fRules          = rules;
+        fUSetNodes      = new ArrayList();
+        fRuleStatusVals = new ArrayList();
+        fScanner        = new RBBIRuleScanner(this);
+        fSetBuilder     = new RBBISetBuilder(this);
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //   flattenData() -  Collect up the compiled RBBI rule data and put it into
+    //                    the format for saving in ICU data files,
+    //
+    //                    See the ICU4C file common/rbidata.h for a detailed description.
+    //
+    //----------------------------------------------------------------------------------------
+    static final int align8(int i)
+    {
+        return (i + 7) & 0xfffffff8;
+    }
+
+    void flattenData(OutputStream os) throws IOException {
+        DataOutputStream dos = new DataOutputStream(os);
+        int i;
+
+        //  Remove comments and whitespace from the rules to make it smaller.
+        String strippedRules = RBBIRuleScanner.stripRules(fRules);
+
+        // Calculate the size of each section in the data in bytes.
+        //   Sizes here are padded up to a multiple of 8 for better memory alignment.
+        //   Sections sizes actually stored in the header are for the actual data
+        //     without the padding.
+        //
+        int headerSize       = 24 * 4;     // align8(sizeof(RBBIDataHeader));
+        int forwardTableSize = align8(fForwardTables.getTableSize());
+        int reverseTableSize = align8(fReverseTables.getTableSize());
+        int safeFwdTableSize = align8(fSafeFwdTables.getTableSize());
+        int safeRevTableSize = align8(fSafeRevTables.getTableSize());
+        int trieSize         = align8(fSetBuilder.getTrieSize());
+        int statusTableSize  = align8(fRuleStatusVals.size() * 4);
+        int rulesSize        = align8((strippedRules.length()) * 2);
+        int totalSize        = headerSize + forwardTableSize + reverseTableSize
+                                + safeFwdTableSize + safeRevTableSize
+                                + statusTableSize + trieSize + rulesSize;
+        int outputPos = 0;               // Track stream position, starting from RBBIDataHeader.
+
+        //
+        // Write out an ICU Data Header
+        //   TODO:  actually create a real header, rather than just a placeholder.
+        //           The empty placeholder is ok for compile-and-go from within ICU4J.
+        //           Replicating the ICU4C genbrk tool for building .brk resources would need a real header.
+        //
+        byte[] ICUDataHeader = new byte[0x80];
+        dos.write(ICUDataHeader);
+
+        //
+        // Write out the RBBIDataHeader
+        //
+        int[] header = new int[RBBIDataWrapper.DH_SIZE];                 // sizeof struct RBBIDataHeader
+        header[RBBIDataWrapper.DH_MAGIC]         = 0xb1a0;
+        header[RBBIDataWrapper.DH_FORMATVERSION] = 0x03010000;           // uint8_t fFormatVersion[4];
+        header[RBBIDataWrapper.DH_LENGTH]        = totalSize;            // fLength, the total size of all rule sections.
+        header[RBBIDataWrapper.DH_CATCOUNT]      = fSetBuilder.getNumCharCategories(); // fCatCount.
+        header[RBBIDataWrapper.DH_FTABLE]        = headerSize;           // fFTable
+        header[RBBIDataWrapper.DH_FTABLELEN]     = forwardTableSize;     // fTableLen
+        header[RBBIDataWrapper.DH_RTABLE]        = header[RBBIDataWrapper.DH_FTABLE] + forwardTableSize; // fRTable
+        header[RBBIDataWrapper.DH_RTABLELEN]     = reverseTableSize;     // fRTableLen
+        header[RBBIDataWrapper.DH_SFTABLE]       = header[RBBIDataWrapper.DH_RTABLE]
+                                                     + reverseTableSize; // fSTable
+        header[RBBIDataWrapper.DH_SFTABLELEN]    = safeFwdTableSize;     // fSTableLen
+        header[RBBIDataWrapper.DH_SRTABLE]       = header[RBBIDataWrapper.DH_SFTABLE]
+                                                     + safeFwdTableSize; // fSRTable
+        header[RBBIDataWrapper.DH_SRTABLELEN]    = safeRevTableSize;     // fSRTableLen
+        header[RBBIDataWrapper.DH_TRIE]          = header[RBBIDataWrapper.DH_SRTABLE]
+                                                     + safeRevTableSize; // fTrie
+        header[RBBIDataWrapper.DH_TRIELEN]       = fSetBuilder.getTrieSize(); // fTrieLen
+        header[RBBIDataWrapper.DH_STATUSTABLE]   = header[RBBIDataWrapper.DH_TRIE]
+                                                     + header[RBBIDataWrapper.DH_TRIELEN];
+        header[RBBIDataWrapper.DH_STATUSTABLELEN] = statusTableSize; // fStatusTableLen
+        header[RBBIDataWrapper.DH_RULESOURCE]    = header[RBBIDataWrapper.DH_STATUSTABLE]
+                                                     + statusTableSize;
+        header[RBBIDataWrapper.DH_RULESOURCELEN] = strippedRules.length() * 2;
+        for (i = 0; i < header.length; i++) {
+            dos.writeInt(header[i]);
+            outputPos += 4;
+        }
+
+        // Write out the actual state tables.
+        short[] tableData;
+        tableData = fForwardTables.exportTable();
+        Assert.assrt(outputPos == header[4]);
+        for (i = 0; i < tableData.length; i++) {
+            dos.writeShort(tableData[i]);
+            outputPos += 2;
+        }
+
+        tableData = fReverseTables.exportTable();
+        Assert.assrt(outputPos == header[6]);
+        for (i = 0; i < tableData.length; i++) {
+            dos.writeShort(tableData[i]);
+            outputPos += 2;
+        }
+
+        Assert.assrt(outputPos == header[8]);
+        tableData = fSafeFwdTables.exportTable();
+        for (i = 0; i < tableData.length; i++) {
+            dos.writeShort(tableData[i]);
+            outputPos += 2;
+        }
+
+        Assert.assrt(outputPos == header[10]);
+        tableData = fSafeRevTables.exportTable();
+        for (i = 0; i < tableData.length; i++) {
+            dos.writeShort(tableData[i]);
+            outputPos += 2;
+        }
+
+        // write out the Trie table
+        Assert.assrt(outputPos == header[12]);
+        fSetBuilder.serializeTrie(os);
+        outputPos += header[13];
+        while (outputPos % 8 != 0) { // pad to an 8 byte boundary
+            dos.write(0);
+            outputPos += 1;
+        }
+
+        // Write out the status {tag} table.
+        Assert.assrt(outputPos == header[16]);
+        for (i = 0; i < fRuleStatusVals.size(); i++) {
+            Integer val = (Integer) fRuleStatusVals.get(i);
+            dos.writeInt(val.intValue());
+            outputPos += 4;
+        }
+
+        while (outputPos % 8 != 0) { // pad to an 8 byte boundary
+            dos.write(0);
+            outputPos += 1;
+        }
+
+        // Write out the stripped rules (rules with extra spaces removed
+        //   These go last in the data area, even though they are not last in the header.
+        Assert.assrt(outputPos == header[14]);
+        dos.writeChars(strippedRules);
+        outputPos += strippedRules.length() * 2;
+        while (outputPos % 8 != 0) { // pad to an 8 byte boundary
+            dos.write(0);
+            outputPos += 1;
+        }
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  compileRules          compile source rules, placing the compiled form into a output stream
+    //                        The compiled form is identical to that from ICU4C (Big Endian).
+    //
+    //----------------------------------------------------------------------------------------
+    static void compileRules(String rules, OutputStream os) throws IOException
+    {
+        //
+        // Read the input rules, generate a parse tree, symbol table,
+        // and list of all Unicode Sets referenced by the rules.
+        //
+        RBBIRuleBuilder builder = new RBBIRuleBuilder(rules);
+        builder.fScanner.parse();
+
+        //
+        // UnicodeSet processing.
+        //    Munge the Unicode Sets to create a set of character categories.
+        //    Generate the mapping tables (TRIE) from input 32-bit characters to
+        //    the character categories.
+        //
+        builder.fSetBuilder.build();
+
+        //
+        //   Generate the DFA state transition table.
+        //
+        builder.fForwardTables = new RBBITableBuilder(builder, fForwardTree);
+        builder.fReverseTables = new RBBITableBuilder(builder, fReverseTree);
+        builder.fSafeFwdTables = new RBBITableBuilder(builder, fSafeFwdTree);
+        builder.fSafeRevTables = new RBBITableBuilder(builder, fSafeRevTree);
+        builder.fForwardTables.build();
+        builder.fReverseTables.build();
+        builder.fSafeFwdTables.build();
+        builder.fSafeRevTables.build();
+        if (builder.fDebugEnv != null
+                && builder.fDebugEnv.indexOf("states") >= 0) {
+            builder.fForwardTables.printRuleStatusTable();
+        }
+
+        //
+        //   Package up the compiled data, writing it to an output stream
+        //      in the serialization format.  This is the same as the ICU4C runtime format.
+        //
+        builder.flattenData(os);
+    }
+}
diff --git a/src/com/ibm/icu/text/RBBIRuleParseTable.java b/src/com/ibm/icu/text/RBBIRuleParseTable.java
new file mode 100644
index 0000000..1a8e953
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBIRuleParseTable.java
@@ -0,0 +1,178 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2006,
+ * International Business Machines Corporation and others. All Rights Reserved.
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.text;
+ 
+/**
+ * Generated Java File.  Do not edit by hand.
+ * This file contains the state table for the ICU Rule Based Break Iterator
+ * rule parser.
+ * It is generated by the Perl script "rbbicst.pl" from
+ * the rule parser state definitions file "rbbirpt.txt".
+ * @internal 
+ *
+ */
+class RBBIRuleParseTable
+{
+     static final short doCheckVarDef = 1;
+     static final short doDotAny = 2;
+     static final short doEndAssign = 3;
+     static final short doEndOfRule = 4;
+     static final short doEndVariableName = 5;
+     static final short doExit = 6;
+     static final short doExprCatOperator = 7;
+     static final short doExprFinished = 8;
+     static final short doExprOrOperator = 9;
+     static final short doExprRParen = 10;
+     static final short doExprStart = 11;
+     static final short doLParen = 12;
+     static final short doNOP = 13;
+     static final short doOptionEnd = 14;
+     static final short doOptionStart = 15;
+     static final short doReverseDir = 16;
+     static final short doRuleChar = 17;
+     static final short doRuleError = 18;
+     static final short doRuleErrorAssignExpr = 19;
+     static final short doScanUnicodeSet = 20;
+     static final short doSlash = 21;
+     static final short doStartAssign = 22;
+     static final short doStartTagValue = 23;
+     static final short doStartVariableName = 24;
+     static final short doTagDigit = 25;
+     static final short doTagExpectedError = 26;
+     static final short doTagValue = 27;
+     static final short doUnaryOpPlus = 28;
+     static final short doUnaryOpQuestion = 29;
+     static final short doUnaryOpStar = 30;
+     static final short doVariableNameExpectedErr = 31;
+ 
+     static final short kRuleSet_default = 255;
+     static final short kRuleSet_digit_char = 128;
+     static final short kRuleSet_eof = 252;
+     static final short kRuleSet_escaped = 254;
+     static final short kRuleSet_name_char = 129;
+     static final short kRuleSet_name_start_char = 130;
+     static final short kRuleSet_rule_char = 131;
+     static final short kRuleSet_white_space = 132;
+
+
+   static class RBBIRuleTableElement { 
+      short      fAction; 
+      short      fCharClass; 
+      short      fNextState; 
+      short      fPushState; 
+      boolean    fNextChar;  
+      String     fStateName; 
+      RBBIRuleTableElement(short a, int cc, int ns, int ps, boolean nc, String sn) {  
+      fAction = a; 
+      fCharClass = (short)cc; 
+      fNextState = (short)ns; 
+      fPushState = (short)ps; 
+      fNextChar  = nc; 
+      fStateName = sn; 
+   } 
+   } 
+  
+    static RBBIRuleTableElement[] gRuleParseStateTable = { 
+       new RBBIRuleTableElement(doNOP, 0, 0,0,  true,   null )     //  0 
+     , new RBBIRuleTableElement(doExprStart, 254, 21, 8, false,   "start")     //  1 
+     , new RBBIRuleTableElement(doNOP, 132, 1,0,  true,   null )     //  2 
+     , new RBBIRuleTableElement(doExprStart,'$',  80, 90, false,   null )     //  3 
+     , new RBBIRuleTableElement(doNOP,'!',  11,0,  true,   null )     //  4 
+     , new RBBIRuleTableElement(doNOP,';',  1,0,  true,   null )     //  5 
+     , new RBBIRuleTableElement(doNOP, 252, 0,0,  false,   null )     //  6 
+     , new RBBIRuleTableElement(doExprStart, 255, 21, 8, false,   null )     //  7 
+     , new RBBIRuleTableElement(doEndOfRule,';',  1,0,  true,   "break-rule-end")     //  8 
+     , new RBBIRuleTableElement(doNOP, 132, 8,0,  true,   null )     //  9 
+     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  10 
+     , new RBBIRuleTableElement(doNOP,'!',  13,0,  true,   "rev-option")     //  11 
+     , new RBBIRuleTableElement(doReverseDir, 255, 20, 8, false,   null )     //  12 
+     , new RBBIRuleTableElement(doOptionStart, 130, 15,0,  true,   "option-scan1")     //  13 
+     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  14 
+     , new RBBIRuleTableElement(doNOP, 129, 15,0,  true,   "option-scan2")     //  15 
+     , new RBBIRuleTableElement(doOptionEnd, 255, 17,0,  false,   null )     //  16 
+     , new RBBIRuleTableElement(doNOP,';',  1,0,  true,   "option-scan3")     //  17 
+     , new RBBIRuleTableElement(doNOP, 132, 17,0,  true,   null )     //  18 
+     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  19 
+     , new RBBIRuleTableElement(doExprStart, 255, 21, 8, false,   "reverse-rule")     //  20 
+     , new RBBIRuleTableElement(doRuleChar, 254, 30,0,  true,   "term")     //  21 
+     , new RBBIRuleTableElement(doNOP, 132, 21,0,  true,   null )     //  22 
+     , new RBBIRuleTableElement(doRuleChar, 131, 30,0,  true,   null )     //  23 
+     , new RBBIRuleTableElement(doNOP,'[',  86, 30, false,   null )     //  24 
+     , new RBBIRuleTableElement(doLParen,'(',  21, 30, true,   null )     //  25 
+     , new RBBIRuleTableElement(doNOP,'$',  80, 29, false,   null )     //  26 
+     , new RBBIRuleTableElement(doDotAny,'.',  30,0,  true,   null )     //  27 
+     , new RBBIRuleTableElement(doRuleError, 255, 95,0,  false,   null )     //  28 
+     , new RBBIRuleTableElement(doCheckVarDef, 255, 30,0,  false,   "term-var-ref")     //  29 
+     , new RBBIRuleTableElement(doNOP, 132, 30,0,  true,   "expr-mod")     //  30 
+     , new RBBIRuleTableElement(doUnaryOpStar,'*',  35,0,  true,   null )     //  31 
+     , new RBBIRuleTableElement(doUnaryOpPlus,'+',  35,0,  true,   null )     //  32 
+     , new RBBIRuleTableElement(doUnaryOpQuestion,'?',  35,0,  true,   null )     //  33 
+     , new RBBIRuleTableElement(doNOP, 255, 35,0,  false,   null )     //  34 
+     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont")     //  35 
+     , new RBBIRuleTableElement(doNOP, 132, 35,0,  true,   null )     //  36 
+     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  37 
+     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  38 
+     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  39 
+     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  40 
+     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  41 
+     , new RBBIRuleTableElement(doExprCatOperator,'/',  47,0,  false,   null )     //  42 
+     , new RBBIRuleTableElement(doExprCatOperator,'{',  59,0,  true,   null )     //  43 
+     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  44 
+     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  45 
+     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  46 
+     , new RBBIRuleTableElement(doSlash,'/',  49,0,  true,   "look-ahead")     //  47 
+     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  48 
+     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont-no-slash")     //  49 
+     , new RBBIRuleTableElement(doNOP, 132, 35,0,  true,   null )     //  50 
+     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  51 
+     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  52 
+     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  53 
+     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  54 
+     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  55 
+     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  56 
+     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  57 
+     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  58 
+     , new RBBIRuleTableElement(doNOP, 132, 59,0,  true,   "tag-open")     //  59 
+     , new RBBIRuleTableElement(doStartTagValue, 128, 62,0,  false,   null )     //  60 
+     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  61 
+     , new RBBIRuleTableElement(doNOP, 132, 66,0,  true,   "tag-value")     //  62 
+     , new RBBIRuleTableElement(doNOP,'}',  66,0,  false,   null )     //  63 
+     , new RBBIRuleTableElement(doTagDigit, 128, 62,0,  true,   null )     //  64 
+     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  65 
+     , new RBBIRuleTableElement(doNOP, 132, 66,0,  true,   "tag-close")     //  66 
+     , new RBBIRuleTableElement(doTagValue,'}',  69,0,  true,   null )     //  67 
+     , new RBBIRuleTableElement(doTagExpectedError, 255, 95,0,  false,   null )     //  68 
+     , new RBBIRuleTableElement(doExprCatOperator, 254, 21,0,  false,   "expr-cont-no-tag")     //  69 
+     , new RBBIRuleTableElement(doNOP, 132, 69,0,  true,   null )     //  70 
+     , new RBBIRuleTableElement(doExprCatOperator, 131, 21,0,  false,   null )     //  71 
+     , new RBBIRuleTableElement(doExprCatOperator,'[',  21,0,  false,   null )     //  72 
+     , new RBBIRuleTableElement(doExprCatOperator,'(',  21,0,  false,   null )     //  73 
+     , new RBBIRuleTableElement(doExprCatOperator,'$',  21,0,  false,   null )     //  74 
+     , new RBBIRuleTableElement(doExprCatOperator,'.',  21,0,  false,   null )     //  75 
+     , new RBBIRuleTableElement(doExprCatOperator,'/',  47,0,  false,   null )     //  76 
+     , new RBBIRuleTableElement(doExprOrOperator,'|',  21,0,  true,   null )     //  77 
+     , new RBBIRuleTableElement(doExprRParen,')',  255,0,  true,   null )     //  78 
+     , new RBBIRuleTableElement(doExprFinished, 255, 255,0,  false,   null )     //  79 
+     , new RBBIRuleTableElement(doStartVariableName,'$',  82,0,  true,   "scan-var-name")     //  80 
+     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  81 
+     , new RBBIRuleTableElement(doNOP, 130, 84,0,  true,   "scan-var-start")     //  82 
+     , new RBBIRuleTableElement(doVariableNameExpectedErr, 255, 95,0,  false,   null )     //  83 
+     , new RBBIRuleTableElement(doNOP, 129, 84,0,  true,   "scan-var-body")     //  84 
+     , new RBBIRuleTableElement(doEndVariableName, 255, 255,0,  false,   null )     //  85 
+     , new RBBIRuleTableElement(doScanUnicodeSet,'[',  255,0,  true,   "scan-unicode-set")     //  86 
+     , new RBBIRuleTableElement(doScanUnicodeSet,'p',  255,0,  true,   null )     //  87 
+     , new RBBIRuleTableElement(doScanUnicodeSet,'P',  255,0,  true,   null )     //  88 
+     , new RBBIRuleTableElement(doNOP, 255, 95,0,  false,   null )     //  89 
+     , new RBBIRuleTableElement(doNOP, 132, 90,0,  true,   "assign-or-rule")     //  90 
+     , new RBBIRuleTableElement(doStartAssign,'=',  21, 93, true,   null )     //  91 
+     , new RBBIRuleTableElement(doNOP, 255, 29, 8, false,   null )     //  92 
+     , new RBBIRuleTableElement(doEndAssign,';',  1,0,  true,   "assign-end")     //  93 
+     , new RBBIRuleTableElement(doRuleErrorAssignExpr, 255, 95,0,  false,   null )     //  94 
+     , new RBBIRuleTableElement(doExit, 255, 95,0,  true,   "errorDeath")     //  95 
+ };
+} 
diff --git a/src/com/ibm/icu/text/RBBIRuleScanner.java b/src/com/ibm/icu/text/RBBIRuleScanner.java
new file mode 100644
index 0000000..d2d374b
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBIRuleScanner.java
@@ -0,0 +1,1074 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and others. All Rights Reserved.
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.text;
+
+import java.util.HashMap;
+import java.lang.IllegalArgumentException;
+import java.text.ParsePosition;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.Utility;
+
+/**
+  *  This class is part of the Rule Based Break Iterator rule compiler.
+  *  It scans the rules and builds the parse tree.
+  *  There is no public API here.
+  *  @internal
+  */
+class RBBIRuleScanner {
+    
+    private  final int    kStackSize = 100;               // The size of the state stack for
+    //   rules parsing.  Corresponds roughly
+    //   to the depth of parentheses nesting
+    //   that is allowed in the rules.
+    
+    static class RBBIRuleChar {
+        int             fChar;
+        boolean         fEscaped;
+    }
+
+
+
+    RBBIRuleBuilder               fRB;              // The rule builder that we are part of.
+    
+    int                       fScanIndex;        // Index of current character being processed
+                                                     //   in the rule input string.
+    int                       fNextIndex;        // Index of the next character, which
+                                                     //   is the first character not yet scanned.
+    boolean                  fQuoteMode;        // Scan is in a 'quoted region'
+    int                       fLineNum;          // Line number in input file.
+    int                       fCharNum;          // Char position within the line.
+    int                       fLastChar;         // Previous char, needed to count CR-LF
+                                                     //   as a single line, not two.
+    
+    RBBIRuleChar              fC = new RBBIRuleChar();    // Current char for parse state machine
+                                                     //   processing.
+    String                    fVarName;          // $variableName, valid when we've just
+                                                     //   scanned one.
+    
+    
+    short  fStack[] = new short[kStackSize];  // State stack, holds state pushes
+    int                       fStackPtr;           //  and pops as specified in the state
+                                                       //  transition rules.
+    
+    RBBINode  fNodeStack[] = new RBBINode[kStackSize]; // Node stack, holds nodes created
+                                                           //  during the parse of a rule
+    int                        fNodeStackPtr;
+    
+    
+    boolean                          fReverseRule;     // True if the rule currently being scanned
+                                                     //  is a reverse direction rule (if it
+                                                     //  starts with a '!')
+    
+    boolean                          fLookAheadRule;   // True if the rule includes a '/'
+                                                     //   somewhere within it.
+    
+    RBBISymbolTable              fSymbolTable;     // symbol table, holds definitions of
+                                                     //   $variable symbols.
+    
+    HashMap                 fSetTable = new HashMap();        // UnicocodeSet hash table, holds indexes to
+                                               //   the sets created while parsing rules.
+                                                     //   The key is the string used for creating
+                                                     //   the set.
+    
+    UnicodeSet      fRuleSets[] = new UnicodeSet[10];    // Unicode Sets that are needed during
+                                                     //  the scanning of RBBI rules.  The
+                                                     //  indicies for these are assigned by the
+                                                     //  perl script that builds the state tables.
+                                                     //  See rbbirpt.h.
+    
+    int                        fRuleNum;         // Counts each rule as it is scanned.
+    
+    int                        fOptionStart;     // Input index of start of a !!option
+                                                 //   keyword, while being scanned.
+
+    
+
+   static private String gRuleSet_rule_char_pattern       = "[^[\\p{Z}\\u0020-\\u007f]-[\\p{L}]-[\\p{N}]]";
+   static private String gRuleSet_name_char_pattern       = "[_\\p{L}\\p{N}]";
+   static private String gRuleSet_digit_char_pattern      = "[0-9]";
+   static private String gRuleSet_name_start_char_pattern = "[_\\p{L}]";
+   static private String gRuleSet_white_space_pattern     = "[\\p{Pattern_White_Space}]";
+   static private String kAny =  "any";
+
+    
+ 
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  Constructor.
+    //
+    //----------------------------------------------------------------------------------------
+    RBBIRuleScanner(RBBIRuleBuilder rb) {
+        fRB = rb;
+        fLineNum = 1;
+
+        //
+        //  Set up the constant Unicode Sets.
+        //     Note: These could be made static and shared among
+        //            all instances of RBBIRuleScanners.
+        fRuleSets[RBBIRuleParseTable.kRuleSet_rule_char - 128] = new UnicodeSet(gRuleSet_rule_char_pattern);
+        fRuleSets[RBBIRuleParseTable.kRuleSet_white_space - 128] = new UnicodeSet(gRuleSet_white_space_pattern);
+        fRuleSets[RBBIRuleParseTable.kRuleSet_name_char - 128] = new UnicodeSet(gRuleSet_name_char_pattern);
+        fRuleSets[RBBIRuleParseTable.kRuleSet_name_start_char - 128] = new UnicodeSet(gRuleSet_name_start_char_pattern);
+        fRuleSets[RBBIRuleParseTable.kRuleSet_digit_char - 128] = new UnicodeSet(gRuleSet_digit_char_pattern);
+
+        fSymbolTable = new RBBISymbolTable(this, rb.fRules);
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  doParseAction Do some action during rule parsing.
+    //                       Called by the parse state machine.
+    //                       Actions build the parse tree and Unicode Sets,
+    //                       and maintain the parse stack for nested expressions.
+    //
+    //----------------------------------------------------------------------------------------
+    boolean doParseActions(int action) {
+        RBBINode n = null;
+
+        boolean returnVal = true;
+
+        switch (action) {
+
+        case RBBIRuleParseTable.doExprStart:
+            pushNewNode(RBBINode.opStart);
+            fRuleNum++;
+            break;
+
+        case RBBIRuleParseTable.doExprOrOperator: {
+            fixOpStack(RBBINode.precOpCat);
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode orNode = pushNewNode(RBBINode.opOr);
+            orNode.fLeftChild = operandNode;
+            operandNode.fParent = orNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doExprCatOperator:
+        // concatenation operator.
+        // For the implicit concatenation of adjacent terms in an expression
+        // that are
+        //   not separated by any other operator. Action is invoked between the
+        //   actions for the two terms.
+        {
+            fixOpStack(RBBINode.precOpCat);
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode catNode = pushNewNode(RBBINode.opCat);
+            catNode.fLeftChild = operandNode;
+            operandNode.fParent = catNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doLParen:
+            // Open Paren.
+            //   The openParen node is a dummy operation type with a low
+            // precedence,
+            //     which has the affect of ensuring that any real binary op that
+            //     follows within the parens binds more tightly to the operands than
+            //     stuff outside of the parens.
+            pushNewNode(RBBINode.opLParen);
+            break;
+
+        case RBBIRuleParseTable.doExprRParen:
+            fixOpStack(RBBINode.precLParen);
+            break;
+
+        case RBBIRuleParseTable.doNOP:
+            break;
+
+        case RBBIRuleParseTable.doStartAssign:
+            // We've just scanned "$variable = "
+            // The top of the node stack has the $variable ref node.
+
+            // Save the start position of the RHS text in the StartExpression
+            // node
+            //   that precedes the $variableReference node on the stack.
+            //   This will eventually be used when saving the full $variable
+            // replacement
+            //   text as a string.
+            n = fNodeStack[fNodeStackPtr - 1];
+            n.fFirstPos = fNextIndex; // move past the '='
+
+            // Push a new start-of-expression node; needed to keep parse of the
+            //   RHS expression happy.
+            pushNewNode(RBBINode.opStart);
+            break;
+
+        case RBBIRuleParseTable.doEndAssign: {
+            // We have reached the end of an assignement statement.
+            //   Current scan char is the ';' that terminates the assignment.
+
+            // Terminate expression, leaves expression parse tree rooted in TOS
+            // node.
+            fixOpStack(RBBINode.precStart);
+
+            RBBINode startExprNode = fNodeStack[fNodeStackPtr - 2];
+            RBBINode varRefNode = fNodeStack[fNodeStackPtr - 1];
+            RBBINode RHSExprNode = fNodeStack[fNodeStackPtr];
+
+            // Save original text of right side of assignment, excluding the
+            // terminating ';'
+            //  in the root of the node for the right-hand-side expression.
+            RHSExprNode.fFirstPos = startExprNode.fFirstPos;
+            RHSExprNode.fLastPos = fScanIndex;
+            // fRB.fRules.extractBetween(RHSExprNode.fFirstPos,
+            // RHSExprNode.fLastPos, RHSExprNode.fText);
+            RHSExprNode.fText = fRB.fRules.substring(RHSExprNode.fFirstPos,
+                    RHSExprNode.fLastPos);
+
+            // Expression parse tree becomes l. child of the $variable reference
+            // node.
+            varRefNode.fLeftChild = RHSExprNode;
+            RHSExprNode.fParent = varRefNode;
+
+            // Make a symbol table entry for the $variableRef node.
+            fSymbolTable.addEntry(varRefNode.fText, varRefNode);
+
+            // Clean up the stack.
+            fNodeStackPtr -= 3;
+            break;
+        }
+
+        case RBBIRuleParseTable.doEndOfRule: {
+            fixOpStack(RBBINode.precStart); // Terminate expression, leaves
+                                            // expression
+
+            if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("rtree") >= 0) {
+                printNodeStack("end of rule");
+            }
+            Assert.assrt(fNodeStackPtr == 1);
+
+            // If this rule includes a look-ahead '/', add a endMark node to the
+            //   expression tree.
+            if (fLookAheadRule) {
+                RBBINode thisRule = fNodeStack[fNodeStackPtr];
+                RBBINode endNode = pushNewNode(RBBINode.endMark);
+                RBBINode catNode = pushNewNode(RBBINode.opCat);
+                fNodeStackPtr -= 2;
+                catNode.fLeftChild = thisRule;
+                catNode.fRightChild = endNode;
+                fNodeStack[fNodeStackPtr] = catNode;
+                endNode.fVal = fRuleNum;
+                endNode.fLookAheadEnd = true;
+            }
+
+            // All rule expressions are ORed together.
+            // The ';' that terminates an expression really just functions as a
+            // '|' with
+            //   a low operator prededence.
+            //
+            // Each of the four sets of rules are collected separately.
+            //  (forward, reverse, safe_forward, safe_reverse)
+            //  OR this rule into the appropriate group of them.
+            //
+
+            int destRules = (fReverseRule ? RBBIRuleBuilder.fReverseTree : fRB.fDefaultTree);
+
+            if (fRB.fTreeRoots[destRules] != null) {
+                // This is not the first rule encounted.
+                // OR previous stuff (from *destRules)
+                // with the current rule expression (on the Node Stack)
+                //  with the resulting OR expression going to *destRules
+                //
+                RBBINode thisRule = fNodeStack[fNodeStackPtr];
+                RBBINode prevRules = fRB.fTreeRoots[destRules];
+                RBBINode orNode = pushNewNode(RBBINode.opOr);
+                orNode.fLeftChild = prevRules;
+                prevRules.fParent = orNode;
+                orNode.fRightChild = thisRule;
+                thisRule.fParent = orNode;
+                fRB.fTreeRoots[destRules] = orNode;
+            } else {
+                // This is the first rule encountered (for this direction).
+                // Just move its parse tree from the stack to *destRules.
+                fRB.fTreeRoots[destRules] = fNodeStack[fNodeStackPtr];
+            }
+            fReverseRule = false; // in preparation for the next rule.
+            fLookAheadRule = false;
+            fNodeStackPtr = 0;
+        }
+            break;
+
+        case RBBIRuleParseTable.doRuleError:
+            error(RBBIRuleBuilder.U_BRK_RULE_SYNTAX);
+            returnVal = false;
+            break;
+
+        case RBBIRuleParseTable.doVariableNameExpectedErr:
+            error(RBBIRuleBuilder.U_BRK_RULE_SYNTAX);
+            break;
+
+        //
+        //  Unary operands + ? *
+        //    These all appear after the operand to which they apply.
+        //    When we hit one, the operand (may be a whole sub expression)
+        //    will be on the top of the stack.
+        //    Unary Operator becomes TOS, with the old TOS as its one child.
+        case RBBIRuleParseTable.doUnaryOpPlus: {
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode plusNode = pushNewNode(RBBINode.opPlus);
+            plusNode.fLeftChild = operandNode;
+            operandNode.fParent = plusNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doUnaryOpQuestion: {
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode qNode = pushNewNode(RBBINode.opQuestion);
+            qNode.fLeftChild = operandNode;
+            operandNode.fParent = qNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doUnaryOpStar: {
+            RBBINode operandNode = fNodeStack[fNodeStackPtr--];
+            RBBINode starNode = pushNewNode(RBBINode.opStar);
+            starNode.fLeftChild = operandNode;
+            operandNode.fParent = starNode;
+        }
+            break;
+
+        case RBBIRuleParseTable.doRuleChar:
+        // A "Rule Character" is any single character that is a literal part
+        // of the regular expression. Like a, b and c in the expression "(abc*)
+        // | [:L:]"
+        // These are pretty uncommon in break rules; the terms are more commonly
+        //  sets. To keep things uniform, treat these characters like as
+        // sets that just happen to contain only one character.
+        {
+            n = pushNewNode(RBBINode.setRef);
+            String s = (new StringBuffer().append((char) fC.fChar)).toString();
+            findSetFor(s, n, null);
+            n.fFirstPos = fScanIndex;
+            n.fLastPos = fNextIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+            break;
+        }
+
+        case RBBIRuleParseTable.doDotAny:
+        // scanned a ".", meaning match any single character.
+        {
+            n = pushNewNode(RBBINode.setRef);
+            findSetFor(kAny, n, null);
+            n.fFirstPos = fScanIndex;
+            n.fLastPos = fNextIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+            break;
+        }
+
+        case RBBIRuleParseTable.doSlash:
+            // Scanned a '/', which identifies a look-ahead break position in a
+            // rule.
+            n = pushNewNode(RBBINode.lookAhead);
+            n.fVal = fRuleNum;
+            n.fFirstPos = fScanIndex;
+            n.fLastPos = fNextIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+            fLookAheadRule = true;
+            break;
+
+        case RBBIRuleParseTable.doStartTagValue:
+            // Scanned a '{', the opening delimiter for a tag value within a
+            // rule.
+            n = pushNewNode(RBBINode.tag);
+            n.fVal = 0;
+            n.fFirstPos = fScanIndex;
+            n.fLastPos = fNextIndex;
+            break;
+
+        case RBBIRuleParseTable.doTagDigit:
+        // Just scanned a decimal digit that's part of a tag value
+        {
+            n = fNodeStack[fNodeStackPtr];
+            int v = UCharacter.digit((char) fC.fChar, 10);
+            n.fVal = n.fVal * 10 + v;
+            break;
+        }
+
+        case RBBIRuleParseTable.doTagValue:
+            n = fNodeStack[fNodeStackPtr];
+            n.fLastPos = fNextIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+            break;
+
+        case RBBIRuleParseTable.doTagExpectedError:
+            error(RBBIRuleBuilder.U_BRK_MALFORMED_RULE_TAG);
+            returnVal = false;
+            break;
+
+        case RBBIRuleParseTable.doOptionStart:
+            // Scanning a !!option. At the start of string.
+            fOptionStart = fScanIndex;
+            break;
+
+        case RBBIRuleParseTable.doOptionEnd: {
+            String opt = fRB.fRules.substring(fOptionStart, fScanIndex);
+            if (opt.equals("chain")) {
+                fRB.fChainRules = true;
+            } else if (opt.equals("LBCMNoChain")) {
+                fRB.fLBCMNoChain = true;
+            } else if (opt.equals("forward")) {
+                fRB.fDefaultTree = RBBIRuleBuilder.fForwardTree;
+            } else if (opt.equals("reverse")) {
+                fRB.fDefaultTree = RBBIRuleBuilder.fReverseTree;
+            } else if (opt.equals("safe_forward")) {
+                fRB.fDefaultTree = RBBIRuleBuilder.fSafeFwdTree;
+            } else if (opt.equals("safe_reverse")) {
+                fRB.fDefaultTree = RBBIRuleBuilder.fSafeRevTree;
+            } else if (opt.equals("lookAheadHardBreak")) {
+                fRB.fLookAheadHardBreak = true;
+            } else {
+                error(RBBIRuleBuilder.U_BRK_UNRECOGNIZED_OPTION);
+            }
+            break;
+        }
+
+        case RBBIRuleParseTable.doReverseDir:
+            fReverseRule = true;
+            break;
+
+        case RBBIRuleParseTable.doStartVariableName:
+            n = pushNewNode(RBBINode.varRef);
+            n.fFirstPos = fScanIndex;
+            break;
+
+        case RBBIRuleParseTable.doEndVariableName:
+            n = fNodeStack[fNodeStackPtr];
+            if (n == null || n.fType != RBBINode.varRef) {
+                error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+                break;
+            }
+            n.fLastPos = fScanIndex;
+            n.fText = fRB.fRules.substring(n.fFirstPos + 1, n.fLastPos);
+            // Look the newly scanned name up in the symbol table
+            //   If there's an entry, set the l. child of the var ref to the
+            // replacement expression.
+            //   (We also pass through here when scanning assignments, but no harm
+            // is done, other
+            //    than a slight wasted effort that seems hard to avoid. Lookup will
+            // be null)
+            n.fLeftChild = fSymbolTable.lookupNode(n.fText);
+            break;
+
+        case RBBIRuleParseTable.doCheckVarDef:
+            n = fNodeStack[fNodeStackPtr];
+            if (n.fLeftChild == null) {
+                error(RBBIRuleBuilder.U_BRK_UNDEFINED_VARIABLE);
+                returnVal = false;
+            }
+            break;
+
+        case RBBIRuleParseTable.doExprFinished:
+            break;
+
+        case RBBIRuleParseTable.doRuleErrorAssignExpr:
+            error(RBBIRuleBuilder.U_BRK_ASSIGN_ERROR);
+            returnVal = false;
+            break;
+
+        case RBBIRuleParseTable.doExit:
+            returnVal = false;
+            break;
+
+        case RBBIRuleParseTable.doScanUnicodeSet:
+            scanSet();
+            break;
+
+        default:
+            error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+            returnVal = false;
+            break;
+        }
+        return returnVal;
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  Error Throw and IllegalArgumentException in response to a rule parse
+    // error.
+    //
+    //----------------------------------------------------------------------------------------
+    void error(int e) {
+        String s = "Error " + e + " at line " + fLineNum + " column "
+                + fCharNum;
+        IllegalArgumentException ex = new IllegalArgumentException(s);
+        throw ex;
+
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  fixOpStack The parse stack holds partially assembled chunks of the parse
+    // tree.
+    //               An entry on the stack may be as small as a single setRef node,
+    //               or as large as the parse tree
+    //               for an entire expression (this will be the one item left on the stack
+    //               when the parsing of an RBBI rule completes.
+    //
+    //               This function is called when a binary operator is encountered.
+    //               It looks back up the stack for operators that are not yet associated
+    //               with a right operand, and if the precedence of the stacked operator >=
+    //               the precedence of the current operator, binds the operand left,
+    //               to the previously encountered operator.
+    //
+    //----------------------------------------------------------------------------------------
+    void fixOpStack(int p) {
+        RBBINode n;
+        // printNodeStack("entering fixOpStack()");
+        for (;;) {
+            n = fNodeStack[fNodeStackPtr - 1]; // an operator node
+            if (n.fPrecedence == 0) {
+                System.out.print("RBBIRuleScanner.fixOpStack, bad operator node");
+                error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+                return;
+            }
+
+            if (n.fPrecedence < p || n.fPrecedence <= RBBINode.precLParen) {
+                // The most recent operand goes with the current operator,
+                //   not with the previously stacked one.
+                break;
+            }
+            // Stack operator is a binary op ( '|' or concatenation)
+            //   TOS operand becomes right child of this operator.
+            //   Resulting subexpression becomes the TOS operand.
+            n.fRightChild = fNodeStack[fNodeStackPtr];
+            fNodeStack[fNodeStackPtr].fParent = n;
+            fNodeStackPtr--;
+            // printNodeStack("looping in fixOpStack() ");
+        }
+
+        if (p <= RBBINode.precLParen) {
+            // Scan is at a right paren or end of expression.
+            //  The scanned item must match the stack, or else there was an
+            // error.
+            //  Discard the left paren (or start expr) node from the stack,
+            //  leaving the completed (sub)expression as TOS.
+            if (n.fPrecedence != p) {
+                // Right paren encountered matched start of expression node, or
+                // end of expression matched with a left paren node.
+                error(RBBIRuleBuilder.U_BRK_MISMATCHED_PAREN);
+            }
+            fNodeStack[fNodeStackPtr - 1] = fNodeStack[fNodeStackPtr];
+            fNodeStackPtr--;
+            // Delete the now-discarded LParen or Start node.
+            // delete n;
+        }
+        // printNodeStack("leaving fixOpStack()");
+    }
+
+    //----------------------------------------------------------------------------
+    //
+    //       RBBISetTableEl is an entry in the hash table of UnicodeSets that have
+    //                        been encountered. The val Node will be of nodetype uset
+    //                        and contain pointers to the actual UnicodeSets.
+    //                        The Key is the source string for initializing the set.
+    //
+    //                        The hash table is used to avoid creating duplicate
+    //                        unnamed (not $var references) UnicodeSets.
+    //
+    //----------------------------------------------------------------------------
+    static class RBBISetTableEl {
+        String key;
+
+        RBBINode val;
+    }
+
+
+    //----------------------------------------------------------------------------------------
+    //
+    //   findSetFor given a String,
+    //                  - find the corresponding Unicode Set (uset node)
+    //                         (create one if necessary)
+    //                  - Set fLeftChild of the caller's node (should be a setRef node)
+    //                         to the uset node
+    //                 Maintain a hash table of uset nodes, so the same one is always used
+    //                    for the same string.
+    //                 If a "to adopt" set is provided and we haven't seen this key before,
+    //                    add the provided set to the hash table.
+    //                 If the string is one (32 bit) char in length, the set contains
+    //                    just one element which is the char in question.
+    //                 If the string is "any", return a set containing all chars.
+    //
+    //----------------------------------------------------------------------------------------
+    void findSetFor(String s, RBBINode node, UnicodeSet setToAdopt) {
+
+        RBBISetTableEl el;
+
+        // First check whether we've already cached a set for this string.
+        // If so, just use the cached set in the new node.
+        //   delete any set provided by the caller, since we own it.
+        el = (RBBISetTableEl) fSetTable.get(s);
+        if (el != null) {
+            node.fLeftChild = el.val;
+            Assert.assrt(node.fLeftChild.fType == RBBINode.uset);
+            return;
+        }
+
+        // Haven't seen this set before.
+        // If the caller didn't provide us with a prebuilt set,
+        //   create a new UnicodeSet now.
+        if (setToAdopt == null) {
+            if (s.equals(kAny)) {
+                setToAdopt = new UnicodeSet(0x000000, 0x10ffff);
+            } else {
+                int c;
+                c = UTF16.charAt(s, 0);
+                setToAdopt = new UnicodeSet(c, c);
+            }
+        }
+
+        //
+        // Make a new uset node to refer to this UnicodeSet
+        // This new uset node becomes the child of the caller's setReference
+        // node.
+        //
+        RBBINode usetNode = new RBBINode(RBBINode.uset);
+        usetNode.fInputSet = setToAdopt;
+        usetNode.fParent = node;
+        node.fLeftChild = usetNode;
+        usetNode.fText = s;
+
+        //
+        // Add the new uset node to the list of all uset nodes.
+        //
+        fRB.fUSetNodes.add(usetNode);
+
+        //
+        // Add the new set to the set hash table.
+        //
+        el = new RBBISetTableEl();
+        el.key = s;
+        el.val = usetNode;
+        fSetTable.put(el.key, el);
+
+        return;
+    }
+
+    //
+    //  Assorted Unicode character constants.
+    //     Numeric because there is no portable way to enter them as literals.
+    //     (Think EBCDIC).
+    //
+    static final int chNEL = 0x85; //    NEL newline variant
+
+    static final int chLS = 0x2028; //    Unicode Line Separator
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  stripRules    Return a rules string without unnecessary
+    //                characters.
+    //
+    //----------------------------------------------------------------------------------------
+    static String stripRules(String rules) {
+        StringBuffer strippedRules = new StringBuffer();
+        int rulesLength = rules.length();
+        for (int idx = 0; idx < rulesLength;) {
+            char ch = rules.charAt(idx++);
+            if (ch == '#') {
+                while (idx < rulesLength
+                        && ch != '\r' && ch != '\n' && ch != chNEL) {
+                    ch = rules.charAt(idx++);
+                }
+            }
+            if (!UCharacter.isISOControl(ch)) {
+                strippedRules.append(ch);
+            }
+        }
+        return strippedRules.toString();
+    }
+
+    //----------------------------------------------------------------------------------------
+    //
+    //  nextCharLL    Low Level Next Char from rule input source.
+    //                Get a char from the input character iterator,
+    //                keep track of input position for error reporting.
+    //
+    //----------------------------------------------------------------------------------------
+    int nextCharLL() {
+        int ch;
+
+        if (fNextIndex >= fRB.fRules.length()) {
+            return -1;
+        }
+        ch = UTF16.charAt(fRB.fRules, fNextIndex);
+        fNextIndex = UTF16.moveCodePointOffset(fRB.fRules, fNextIndex, 1);
+
+        if (ch == '\r' ||
+            ch == chNEL ||
+            ch == chLS ||
+            ch == '\n' && fLastChar != '\r') {
+            // Character is starting a new line.  Bump up the line number, and
+            //  reset the column to 0.
+            fLineNum++;
+            fCharNum = 0;
+            if (fQuoteMode) {
+                error(RBBIRuleBuilder.U_BRK_NEW_LINE_IN_QUOTED_STRING);
+                fQuoteMode = false;
+            }
+        } else {
+            // Character is not starting a new line.  Except in the case of a
+            //   LF following a CR, increment the column position.
+            if (ch != '\n') {
+                fCharNum++;
+            }
+        }
+        fLastChar = ch;
+        return ch;
+    }
+
+    //---------------------------------------------------------------------------------
+    //
+    //   nextChar     for rules scanning.  At this level, we handle stripping
+    //                out comments and processing backslash character escapes.
+    //                The rest of the rules grammar is handled at the next level up.
+    //
+    //---------------------------------------------------------------------------------
+    void nextChar(RBBIRuleChar c) {
+
+        // Unicode Character constants needed for the processing done by nextChar(),
+        //   in hex because literals wont work on EBCDIC machines.
+
+        fScanIndex = fNextIndex;
+        c.fChar = nextCharLL();
+        c.fEscaped = false;
+
+        //
+        //  check for '' sequence.
+        //  These are recognized in all contexts, whether in quoted text or not.
+        //
+        if (c.fChar == '\'') {
+            if (UTF16.charAt(fRB.fRules, fNextIndex) == '\'') {
+                c.fChar = nextCharLL(); // get nextChar officially so character counts
+                c.fEscaped = true; //   stay correct.
+            } else {
+                // Single quote, by itself.
+                //   Toggle quoting mode.
+                //   Return either '('  or ')', because quotes cause a grouping of the quoted text.
+                fQuoteMode = !fQuoteMode;
+                if (fQuoteMode == true) {
+                    c.fChar = '(';
+                } else {
+                    c.fChar = ')';
+                }
+                c.fEscaped = false; // The paren that we return is not escaped.
+                return;
+            }
+        }
+
+        if (fQuoteMode) {
+            c.fEscaped = true;
+        } else {
+            // We are not in a 'quoted region' of the source.
+            //
+            if (c.fChar == '#') {
+                // Start of a comment.  Consume the rest of it.
+                //  The new-line char that terminates the comment is always returned.
+                //  It will be treated as white-space, and serves to break up anything
+                //    that might otherwise incorrectly clump together with a comment in
+                //    the middle (a variable name, for example.)
+                for (;;) {
+                    c.fChar = nextCharLL();
+                    if (c.fChar == (int) -1 || // EOF
+                        c.fChar == '\r' ||
+                        c.fChar == '\n' ||
+                        c.fChar == chNEL ||
+                        c.fChar == chLS)
+                    {
+                        break;
+                    }
+                }
+            }
+            if (c.fChar == (int) -1) {
+                return;
+            }
+
+            //
+            //  check for backslash escaped characters.
+            //  Use String.unescapeAt() to handle them.
+            //
+            if (c.fChar == '\\') {
+                c.fEscaped = true;
+                int[] unescapeIndex = new int[1];
+                unescapeIndex[0] = fNextIndex;
+                c.fChar = Utility.unescapeAt(fRB.fRules, unescapeIndex);
+                if (unescapeIndex[0] == fNextIndex) {
+                    error(RBBIRuleBuilder.U_BRK_HEX_DIGITS_EXPECTED);
+                }
+
+                fCharNum += unescapeIndex[0] - fNextIndex;
+                fNextIndex = unescapeIndex[0];
+            }
+        }
+        // putc(c.fChar, stdout);
+    }
+
+    //---------------------------------------------------------------------------------
+    //
+    //  Parse RBBI rules.   The state machine for rules parsing is here.
+    //                      The state tables are hand-written in the file rbbirpt.txt,
+    //                      and converted to the form used here by a perl
+    //                      script rbbicst.pl
+    //
+    //---------------------------------------------------------------------------------
+    void parse() {
+        int state;
+        RBBIRuleParseTable.RBBIRuleTableElement tableEl;
+
+        state = 1;
+        nextChar(fC);
+        //
+        // Main loop for the rule parsing state machine.
+        //   Runs once per state transition.
+        //   Each time through optionally performs, depending on the state table,
+        //      - an advance to the the next input char
+        //      - an action to be performed.
+        //      - pushing or popping a state to/from the local state return stack.
+        //
+        for (;;) {
+            // Quit if state == 0.  This is the normal way to exit the state machine.
+            //
+            if (state == 0) {
+                break;
+            }
+
+            // Find the state table element that matches the input char from the rule, or the
+            //    class of the input character.  Start with the first table row for this
+            //    state, then linearly scan forward until we find a row that matches the
+            //    character.  The last row for each state always matches all characters, so
+            //    the search will stop there, if not before.
+            //
+            tableEl = RBBIRuleParseTable.gRuleParseStateTable[state];
+            if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("scan") >= 0) {
+                System.out.println("char, line, col = (\'" + (char) fC.fChar
+                        + "\', " + fLineNum + ", " + fCharNum + "    state = "
+                        + tableEl.fStateName);
+            }
+
+            for (int tableRow = state;; tableRow++) { // loop over the state table rows associated with this state.
+                tableEl = RBBIRuleParseTable.gRuleParseStateTable[tableRow];
+                if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("scan") >= 0) {
+                    System.out.print(".");
+                }
+                if (tableEl.fCharClass < 127 && fC.fEscaped == false
+                        && tableEl.fCharClass == fC.fChar) {
+                    // Table row specified an individual character, not a set, and
+                    //   the input character is not escaped, and
+                    //   the input character matched it.
+                    break;
+                }
+                if (tableEl.fCharClass == 255) {
+                    // Table row specified default, match anything character class.
+                    break;
+                }
+                if (tableEl.fCharClass == 254 && fC.fEscaped) {
+                    // Table row specified "escaped" and the char was escaped.
+                    break;
+                }
+                if (tableEl.fCharClass == 253 && fC.fEscaped
+                        && (fC.fChar == 0x50 || fC.fChar == 0x70)) {
+                    // Table row specified "escaped P" and the char is either 'p' or 'P'.
+                    break;
+                }
+                if (tableEl.fCharClass == 252 && fC.fChar == (int) -1) {
+                    // Table row specified eof and we hit eof on the input.
+                    break;
+                }
+
+                if (tableEl.fCharClass >= 128 && tableEl.fCharClass < 240 && // Table specs a char class &&
+                        fC.fEscaped == false && //   char is not escaped &&
+                        fC.fChar != (int) -1) { //   char is not EOF
+                    UnicodeSet uniset = fRuleSets[tableEl.fCharClass - 128];
+                    if (uniset.contains(fC.fChar)) {
+                        // Table row specified a character class, or set of characters,
+                        //   and the current char matches it.
+                        break;
+                    }
+                }
+            }
+
+            if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("scan") >= 0) {
+                System.out.println("");
+            }
+            //
+            // We've found the row of the state table that matches the current input
+            //   character from the rules string.
+            // Perform any action specified  by this row in the state table.
+            if (doParseActions(tableEl.fAction) == false) {
+                // Break out of the state machine loop if the
+                //   the action signalled some kind of error, or
+                //   the action was to exit, occurs on normal end-of-rules-input.
+                break;
+            }
+
+            if (tableEl.fPushState != 0) {
+                fStackPtr++;
+                if (fStackPtr >= kStackSize) {
+                    System.out.println("RBBIRuleScanner.parse() - state stack overflow.");
+                    error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+                }
+                fStack[fStackPtr] = tableEl.fPushState;
+            }
+
+            if (tableEl.fNextChar) {
+                nextChar(fC);
+            }
+
+            // Get the next state from the table entry, or from the
+            //   state stack if the next state was specified as "pop".
+            if (tableEl.fNextState != 255) {
+                state = tableEl.fNextState;
+            } else {
+                state = fStack[fStackPtr];
+                fStackPtr--;
+                if (fStackPtr < 0) {
+                    System.out.println("RBBIRuleScanner.parse() - state stack underflow.");
+                    error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+                }
+            }
+
+        }
+
+        //
+        // If there were NO user specified reverse rules, set up the equivalent of ".*;"
+        //
+        if (fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree] == null) {
+            fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree] = pushNewNode(RBBINode.opStar);
+            RBBINode operand = pushNewNode(RBBINode.setRef);
+            findSetFor(kAny, operand, null);
+            fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree].fLeftChild = operand;
+            operand.fParent = fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree];
+            fNodeStackPtr -= 2;
+        }
+
+        //
+        // Parsing of the input RBBI rules is complete.
+        // We now have a parse tree for the rule expressions
+        // and a list of all UnicodeSets that are referenced.
+        //
+        if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("symbols") >= 0) {
+            fSymbolTable.rbbiSymtablePrint();
+        }
+        if (fRB.fDebugEnv != null && fRB.fDebugEnv.indexOf("ptree") >= 0) {
+            System.out.println("Completed Forward Rules Parse Tree...");
+            fRB.fTreeRoots[RBBIRuleBuilder.fForwardTree].printTree(true);
+            System.out.println("\nCompleted Reverse Rules Parse Tree...");
+            fRB.fTreeRoots[RBBIRuleBuilder.fReverseTree].printTree(true);
+            System.out.println("\nCompleted Safe Point Forward Rules Parse Tree...");
+            if (fRB.fTreeRoots[RBBIRuleBuilder.fSafeFwdTree] == null) {
+                System.out.println("  -- null -- ");
+            } else {
+                fRB.fTreeRoots[RBBIRuleBuilder.fSafeFwdTree].printTree(true);
+            }
+            System.out.println("\nCompleted Safe Point Reverse Rules Parse Tree...");
+            if (fRB.fTreeRoots[RBBIRuleBuilder.fSafeRevTree] == null) {
+                System.out.println("  -- null -- ");
+            } else {
+                fRB.fTreeRoots[RBBIRuleBuilder.fSafeRevTree].printTree(true);
+            }
+        }
+    }
+
+    //---------------------------------------------------------------------------------
+    //
+    //  printNodeStack     for debugging...
+    //
+    //---------------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printNodeStack(String title) {
+        int i;
+        System.out.println(title + ".  Dumping node stack...\n");
+        for (i = fNodeStackPtr; i > 0; i--) {
+            fNodeStack[i].printTree(true);
+        }
+    }
+    ///CLOVER:ON
+
+    //---------------------------------------------------------------------------------
+    //
+    //  pushNewNode   create a new RBBINode of the specified type and push it
+    //                onto the stack of nodes.
+    //
+    //---------------------------------------------------------------------------------
+    RBBINode pushNewNode(int nodeType) {
+        fNodeStackPtr++;
+        if (fNodeStackPtr >= kStackSize) {
+            System.out.println("RBBIRuleScanner.pushNewNode - stack overflow.");
+            error(RBBIRuleBuilder.U_BRK_INTERNAL_ERROR);
+        }
+        fNodeStack[fNodeStackPtr] = new RBBINode(nodeType);
+        return fNodeStack[fNodeStackPtr];
+    }
+
+    //---------------------------------------------------------------------------------
+    //
+    //  scanSet    Construct a UnicodeSet from the text at the current scan
+    //             position.  Advance the scan position to the first character
+    //             after the set.
+    //
+    //             A new RBBI setref node referring to the set is pushed onto the node
+    //             stack.
+    //
+    //             The scan position is normally under the control of the state machine
+    //             that controls rule parsing.  UnicodeSets, however, are parsed by
+    //             the UnicodeSet constructor, not by the RBBI rule parser.
+    //
+    //---------------------------------------------------------------------------------
+    void scanSet() {
+        UnicodeSet uset = null;
+        int startPos;
+        ParsePosition pos = new ParsePosition(fScanIndex);
+        int i;
+
+        startPos = fScanIndex;
+        try {
+            uset = new UnicodeSet(fRB.fRules, pos, fSymbolTable, UnicodeSet.IGNORE_SPACE);
+        } catch (Exception e) { // TODO:  catch fewer exception types.
+            // Repackage UnicodeSet errors as RBBI rule builder errors, with location info.
+            error(RBBIRuleBuilder.U_BRK_MALFORMED_SET);
+        }
+
+        // Verify that the set contains at least one code point.
+        //
+        if (uset.isEmpty()) {
+            // This set is empty.
+            //  Make it an error, because it almost certainly is not what the user wanted.
+            //  Also, avoids having to think about corner cases in the tree manipulation code
+            //   that occurs later on.
+            //  TODO:  this shouldn't be an error; it does happen.
+            error(RBBIRuleBuilder.U_BRK_RULE_EMPTY_SET);
+        }
+
+        // Advance the RBBI parse postion over the UnicodeSet pattern.
+        //   Don't just set fScanIndex because the line/char positions maintained
+        //   for error reporting would be thrown off.
+        i = pos.getIndex();
+        for (;;) {
+            if (fNextIndex >= i) {
+                break;
+            }
+            nextCharLL();
+        }
+
+        RBBINode n;
+
+        n = pushNewNode(RBBINode.setRef);
+        n.fFirstPos = startPos;
+        n.fLastPos = fNextIndex;
+        n.fText = fRB.fRules.substring(n.fFirstPos, n.fLastPos);
+        //  findSetFor() serves several purposes here:
+        //     - Adopts storage for the UnicodeSet, will be responsible for deleting.
+        //     - Mantains collection of all sets in use, needed later for establishing
+        //          character categories for run time engine.
+        //     - Eliminates mulitiple instances of the same set.
+        //     - Creates a new uset node if necessary (if this isn't a duplicate.)
+        findSetFor(n.fText, n, uset);
+    }
+
+}
+
diff --git a/src/com/ibm/icu/text/RBBISetBuilder.java b/src/com/ibm/icu/text/RBBISetBuilder.java
new file mode 100644
index 0000000..3925e9d
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBISetBuilder.java
@@ -0,0 +1,571 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2006,
+ * International Business Machines Corporation and others. All Rights Reserved.
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.text;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.io.OutputStream;
+import java.io.IOException;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.IntTrieBuilder;
+
+//
+//  RBBISetBuilder   Handles processing of Unicode Sets from RBBI rules
+//                   (part of the rule building process.)
+//
+//      Starting with the rules parse tree from the scanner,
+//
+//                   -  Enumerate the set of UnicodeSets that are referenced
+//                      by the RBBI rules.
+//                   -  compute a set of non-overlapping character ranges
+//                      with all characters within a range belonging to the same
+//                      set of input uniocde sets.
+//                   -  Derive a set of non-overlapping UnicodeSet (like things)
+//                      that will correspond to columns in the state table for
+//                      the RBBI execution engine.  All characters within one
+//                      of these sets belong to the same set of the original
+//                      UnicodeSets from the user's rules.
+//                   -  construct the trie table that maps input characters
+//                      to the index of the matching non-overlapping set of set from
+//                      the previous step.
+//
+class RBBISetBuilder {
+    static class RangeDescriptor  {
+           int                fStartChar;      // Start of range, unicode 32 bit value.
+           int                fEndChar;        // End of range, unicode 32 bit value.
+           int                fNum;            // runtime-mapped input value for this range.
+           List               fIncludesSets;   // vector of the the original
+                                                //   Unicode sets that include this range.
+                                                //    (Contains ptrs to uset nodes)
+            RangeDescriptor   fNext;           // Next RangeDescriptor in the linked list.
+
+            RangeDescriptor() {
+                fIncludesSets = new ArrayList();
+            }
+            
+            RangeDescriptor(RangeDescriptor other) {
+                fStartChar = other.fStartChar;
+                fEndChar   = other.fEndChar;
+                fNum       = other.fNum;
+                fIncludesSets = new ArrayList(other.fIncludesSets);
+            }
+ 
+            //-------------------------------------------------------------------------------------
+            //
+            //          RangeDesriptor::split()
+            //
+            //-------------------------------------------------------------------------------------
+            void split(int where) {
+                Assert.assrt(where>fStartChar && where<=fEndChar);
+                RangeDescriptor nr = new RangeDescriptor(this);
+ 
+                //  RangeDescriptor copy constructor copies all fields.
+                //  Only need to update those that are different after the split.
+                nr.fStartChar = where;
+                this.fEndChar = where-1;
+                nr.fNext      = this.fNext;
+                this.fNext    = nr;
+                
+                // TODO:  fIncludesSets is not updated.  Check it out.
+                //         Probably because they haven't been populated yet, 
+                //         but still sloppy.
+            }
+
+            
+            //-------------------------------------------------------------------------------------
+            //
+            //          RangeDescriptor::setDictionaryFlag
+            //
+            //          Character Category Numbers that include characters from
+            //          the original Unicode Set named "dictionary" have bit 14
+            //          set to 1.  The RBBI runtime engine uses this to trigger
+            //          use of the word dictionary.
+            //
+            //          This function looks through the Unicode Sets that it
+            //          (the range) includes, and sets the bit in fNum when
+            //          "dictionary" is among them.
+            //
+            //          TODO:  a faster way would be to find the set node for
+            //          "dictionary" just once, rather than looking it
+            //          up by name every time.
+            //            
+            // -------------------------------------------------------------------------------------
+            void setDictionaryFlag() {
+                int i;
+                
+                for (i=0; i<this.fIncludesSets.size(); i++) {
+                    RBBINode        usetNode    = (RBBINode)fIncludesSets.get(i);
+                    String          setName = "";
+                    RBBINode        setRef = usetNode.fParent;
+                    if (setRef != null) {
+                        RBBINode varRef = setRef.fParent;
+                        if (varRef != null  &&  varRef.fType == RBBINode.varRef) {
+                            setName = varRef.fText;
+                        }
+                    }
+                    if (setName.equals("dictionary")) {
+                        this.fNum |= 0x4000;
+                        break;
+                    }
+                }
+
+        }
+    }
+
+    
+    RBBIRuleBuilder       fRB;             // The RBBI Rule Compiler that owns us.
+    RangeDescriptor       fRangeList;      // Head of the linked list of RangeDescriptors
+
+    IntTrieBuilder        fTrie;           // The mapping TRIE that is the end result of processing
+    int                  fTrieSize;        //  the Unicode Sets.
+
+    // Groups correspond to character categories -
+    //       groups of ranges that are in the same original UnicodeSets.
+    //       fGroupCount is the index of the last used group.
+    //       fGroupCount+1 is also the number of columns in the RBBI state table being compiled.
+    //       State table column 0 is not used.  Column 1 is for end-of-input.
+    //       column 2 is for group 0.  Funny counting.
+    int                fGroupCount;
+
+    boolean             fSawBOF;
+    
+    
+    //------------------------------------------------------------------------
+    //
+    //       RBBISetBuilder Constructor
+    //
+    //------------------------------------------------------------------------
+    RBBISetBuilder(RBBIRuleBuilder rb)
+    {
+        fRB             = rb;
+    }
+
+
+    //------------------------------------------------------------------------
+    //
+    //           build          Build the list of non-overlapping character ranges
+    //                          from the Unicode Sets.
+    //
+    //------------------------------------------------------------------------
+    void build() {
+        RBBINode        usetNode;
+        RangeDescriptor rlRange;
+
+        if (fRB.fDebugEnv!=null  && fRB.fDebugEnv.indexOf("usets")>=0) {printSets();}
+
+        //  Initialize the process by creating a single range encompassing all characters
+        //  that is in no sets.
+        //
+        fRangeList               = new RangeDescriptor(); 
+        fRangeList.fStartChar    = 0;
+        fRangeList.fEndChar      = 0x10ffff;
+
+        //
+        //  Find the set of non-overlapping ranges of characters
+        //
+            Iterator  ni = fRB.fUSetNodes.iterator();
+            while (ni.hasNext()) {
+                usetNode = (RBBINode)ni.next();
+ 
+                UnicodeSet      inputSet             = usetNode.fInputSet;
+                int            inputSetRangeCount   = inputSet.getRangeCount();
+                int            inputSetRangeIndex   = 0;
+                                 rlRange              = fRangeList;
+
+                for (;;) {
+                    if (inputSetRangeIndex >= inputSetRangeCount) {
+                        break;
+                    }
+                    int      inputSetRangeBegin  = inputSet.getRangeStart(inputSetRangeIndex);
+                    int      inputSetRangeEnd    = inputSet.getRangeEnd(inputSetRangeIndex);
+
+                    // skip over ranges from the range list that are completely
+                //   below the current range from the input unicode set.
+                while (rlRange.fEndChar < inputSetRangeBegin) {
+                    rlRange = rlRange.fNext;
+                }
+
+                // If the start of the range from the range list is before with
+                //   the start of the range from the unicode set, split the range list range
+                //   in two, with one part being before (wholly outside of) the unicode set
+                //   and the other containing the rest.
+                //   Then continue the loop; the post-split current range will then be skipped
+                //     over
+                if (rlRange.fStartChar < inputSetRangeBegin) {
+                    rlRange.split(inputSetRangeBegin);
+                     continue;
+                }
+
+                // Same thing at the end of the ranges...
+                // If the end of the range from the range list doesn't coincide with
+                //   the end of the range from the unicode set, split the range list
+                //   range in two.  The first part of the split range will be
+                //   wholly inside the Unicode set.
+                if (rlRange.fEndChar > inputSetRangeEnd) {
+                    rlRange.split(inputSetRangeEnd+1);
+                 }
+
+                // The current rlRange is now entirely within the UnicodeSet range.
+                // Add this unicode set to the list of sets for this rlRange
+                if (rlRange.fIncludesSets.indexOf(usetNode) == -1) {
+                    rlRange.fIncludesSets.add(usetNode);
+                }
+
+                // Advance over ranges that we are finished with.
+                if (inputSetRangeEnd == rlRange.fEndChar) {
+                    inputSetRangeIndex++;
+                }
+                rlRange = rlRange.fNext;
+            }
+        }
+
+        if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("range")>=0) { printRanges();}
+
+        //
+        //  Group the above ranges, with each group consisting of one or more
+        //    ranges that are in exactly the same set of original UnicodeSets.
+        //    The groups are numbered, and these group numbers are the set of
+        //    input symbols recognized by the run-time state machine.
+        //
+        //    Numbering: # 0  (state table column 0) is unused.
+        //               # 1  is reserved - table column 1 is for end-of-input
+        //               # 2  is reserved - table column 2 is for beginning-in-input
+        //               # 3  is the first range list.
+        //
+        RangeDescriptor rlSearchRange;
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            for (rlSearchRange=fRangeList; rlSearchRange != rlRange; rlSearchRange=rlSearchRange.fNext) {
+                if (rlRange.fIncludesSets.equals(rlSearchRange.fIncludesSets)) {
+                    rlRange.fNum = rlSearchRange.fNum;
+                    break;
+                }
+            }
+            if (rlRange.fNum == 0) {
+                fGroupCount ++;
+                rlRange.fNum = fGroupCount+2; 
+                rlRange.setDictionaryFlag();
+                addValToSets(rlRange.fIncludesSets, fGroupCount+2);
+            }
+        }
+
+        // Handle input sets that contain the special string {eof}.
+        //   Column 1 of the state table is reserved for EOF on input.
+        //   Column 2 is reserved for before-the-start-input.
+        //            (This column can be optimized away later if there are no rule
+        //             references to {bof}.)
+        //   Add this column value (1 or 2) to the equivalent expression
+        //     subtree for each UnicodeSet that contains the string {eof}
+        //   Because {bof} and {eof} are not a characters in the normal sense,
+        //   they doesn't affect the computation of ranges or TRIE.
+        
+        String eofString = "eof";
+        String bofString = "bof";
+
+        ni = fRB.fUSetNodes.iterator();
+        while (ni.hasNext()) {
+            usetNode = (RBBINode )ni.next();
+            UnicodeSet      inputSet = usetNode.fInputSet;
+            if (inputSet.contains(eofString)) {
+                addValToSet(usetNode, 1);
+            }
+            if (inputSet.contains(bofString)) {
+                addValToSet(usetNode, 2);
+                fSawBOF = true;
+            }
+        }
+
+
+        if (fRB.fDebugEnv!=null  && fRB.fDebugEnv.indexOf("rgroup")>=0) {printRangeGroups();}
+        if (fRB.fDebugEnv!=null  && fRB.fDebugEnv.indexOf("esets")>=0) {printSets();}
+
+
+        //IntTrieBuilder(int aliasdata[], int maxdatalength, 
+        //        int initialvalue, int leadunitvalue, 
+        //        boolean latin1linear)
+        
+        fTrie = new IntTrieBuilder(null,   //   Data array  (utrie will allocate one)
+                                   100000,  //   Max Data Length
+                                   0,       //   Initial value for all code points
+                                   0,       //   Lead Surrogate unit value,
+                                   true);   //   Keep Latin 1 in separately.
+        
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            fTrie.setRange(rlRange.fStartChar, rlRange.fEndChar+1, rlRange.fNum, true);
+        }
+    }
+
+
+
+    //-----------------------------------------------------------------------------------
+    //
+    //   RBBIDataManipulate  A little internal class needed only to wrap of the 
+    //                       getFoldedValue() function needed for Trie table creation.
+    //
+    //-----------------------------------------------------------------------------------
+   class RBBIDataManipulate implements IntTrieBuilder.DataManipulate {
+        public int getFoldedValue(int start, int offset) {
+            int  value;
+            int  limit;
+            boolean [] inBlockZero = new boolean[1];
+            
+            limit = start + 0x400;
+            while(start<limit) {
+                value = fTrie.getValue(start, inBlockZero);
+                if (inBlockZero[0]) {
+                    start += IntTrieBuilder.DATA_BLOCK_LENGTH;  
+                } else if (value != 0) {
+                    return offset | 0x08000;
+                } else {
+                    ++start;
+                }
+            }
+            return 0;
+         }
+    }
+    RBBIDataManipulate dm = new RBBIDataManipulate();
+    
+    //-----------------------------------------------------------------------------------
+    //
+    //          getTrieSize()    Return the size that will be required to serialize the Trie.
+    //
+    //-----------------------------------------------------------------------------------
+    int getTrieSize()  {
+        int size = 0;
+        try {
+            // The trie serialize function returns the size of the data written.
+            //    null output stream says give size only, don't actually write anything.
+            size = fTrie.serialize(null, true, dm );
+        } catch (IOException e) {
+            Assert.assrt (false);
+        }
+        return size;
+    }
+
+
+    //-----------------------------------------------------------------------------------
+    //
+    //          serializeTrie()   Write the serialized trie to an output stream
+    //
+    //-----------------------------------------------------------------------------------
+    void serializeTrie(OutputStream os) throws IOException {
+        fTrie.serialize(os, true, dm );
+   }
+
+    //------------------------------------------------------------------------
+    //
+    //      addValToSets     Add a runtime-mapped input value to each uset from a
+    //      list of uset nodes. (val corresponds to a state table column.)
+    //      For each of the original Unicode sets - which correspond
+    //      directly to uset nodes - a logically equivalent expression
+    //      is constructed in terms of the remapped runtime input
+    //      symbol set.  This function adds one runtime input symbol to
+    //      a list of sets.
+    //
+    //      The "logically equivalent expression" is the tree for an
+    //      or-ing together of all of the symbols that go into the set.
+    //
+    //------------------------------------------------------------------------
+    void  addValToSets(List sets, int val) {
+        int       ix;
+
+        for (ix=0; ix<sets.size(); ix++) {
+            RBBINode usetNode = (RBBINode )sets.get(ix);
+            addValToSet(usetNode, val);
+        }
+    }
+
+    void  addValToSet(RBBINode usetNode, int val) {
+        RBBINode leafNode = new RBBINode(RBBINode.leafChar);
+        leafNode.fVal = val;
+        if (usetNode.fLeftChild == null) {
+            usetNode.fLeftChild = leafNode;
+            leafNode.fParent    = usetNode;
+        } else {
+            // There are already input symbols present for this set.
+            // Set up an OR node, with the previous stuff as the left child
+            //   and the new value as the right child.
+            RBBINode orNode = new RBBINode(RBBINode.opOr);
+            orNode.fLeftChild  = usetNode.fLeftChild;
+            orNode.fRightChild = leafNode;
+            orNode.fLeftChild.fParent  = orNode;
+            orNode.fRightChild.fParent = orNode;
+            usetNode.fLeftChild = orNode;
+            orNode.fParent = usetNode;
+        }
+    }
+
+
+    //------------------------------------------------------------------------
+    //
+    //           getNumCharCategories
+    //
+    //------------------------------------------------------------------------
+    int  getNumCharCategories()  {
+        return fGroupCount + 3;
+    }
+
+
+    //------------------------------------------------------------------------
+    //
+    //           sawBOF
+    //
+    //------------------------------------------------------------------------
+    boolean  sawBOF()  {
+        return fSawBOF;
+    }
+
+
+    //------------------------------------------------------------------------
+    //
+    //           getFirstChar      Given a runtime RBBI character category, find
+    //                             the first UChar32 that is in the set of chars 
+    //                             in the category.
+    //------------------------------------------------------------------------
+    int  getFirstChar(int category)  {
+        RangeDescriptor   rlRange;
+        int            retVal = -1;
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            if (rlRange.fNum == category) {
+                retVal = rlRange.fStartChar;
+                break;
+            }
+        }
+        return retVal;
+    }
+
+
+
+    //------------------------------------------------------------------------
+    //
+    //           printRanges        A debugging function.
+    //                              dump out all of the range definitions.
+    //
+    //------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printRanges() {
+        RangeDescriptor       rlRange;
+        int                    i;
+
+        System.out.print("\n\n Nonoverlapping Ranges ...\n");
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            System.out.print(" " + rlRange.fNum + "   " + (int)rlRange.fStartChar + "-" + (int)rlRange.fEndChar);
+
+            for (i=0; i<rlRange.fIncludesSets.size(); i++) {
+                RBBINode       usetNode    = (RBBINode )rlRange.fIncludesSets.get(i);
+                String         setName = "anon";
+                RBBINode       setRef = usetNode.fParent;
+                if (setRef != null) {
+                    RBBINode varRef = setRef.fParent;
+                    if (varRef != null  &&  varRef.fType == RBBINode.varRef) {
+                        setName = varRef.fText;
+                    }
+                }
+                System.out.print(setName); System.out.print("  ");
+            }
+            System.out.println("");
+        }
+    }
+    ///CLOVER:ON
+
+
+    //------------------------------------------------------------------------
+    //
+    //           printRangeGroups     A debugging function.
+    //                                dump out all of the range groups.
+    //
+    //------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printRangeGroups() {
+        RangeDescriptor       rlRange;
+        RangeDescriptor       tRange;
+        int                    i;
+        int                    lastPrintedGroupNum = 0;
+
+        System.out.print("\nRanges grouped by Unicode Set Membership...\n");
+        for (rlRange = fRangeList; rlRange!=null; rlRange=rlRange.fNext) {
+            int groupNum = rlRange.fNum & 0xbfff;
+            if (groupNum > lastPrintedGroupNum) {
+                lastPrintedGroupNum = groupNum;
+                if (groupNum<10) {System.out.print(" ");}
+                System.out.print(groupNum + " ");
+
+                if ((rlRange.fNum & 0x4000) != 0) { System.out.print(" <DICT> ");}
+
+                for (i=0; i<rlRange.fIncludesSets.size(); i++) {
+                    RBBINode       usetNode    = (RBBINode )rlRange.fIncludesSets.get(i);
+                    String         setName = "anon";
+                    RBBINode       setRef = usetNode.fParent;
+                    if (setRef != null) {
+                        RBBINode varRef = setRef.fParent;
+                        if (varRef != null  &&  varRef.fType == RBBINode.varRef) {
+                            setName = varRef.fText;
+                        }
+                    }
+                    System.out.print(setName); System.out.print(" ");
+                }
+
+                i = 0;
+                for (tRange = rlRange; tRange != null; tRange = tRange.fNext) {
+                    if (tRange.fNum == rlRange.fNum) {
+                        if (i++ % 5 == 0) {
+                            System.out.print("\n    ");
+                        }
+                        RBBINode.printHex((int)tRange.fStartChar, -1);
+                        System.out.print("-");
+                        RBBINode.printHex((int)tRange.fEndChar, 0);
+                    }
+                }
+                System.out.print("\n");
+            }
+        }
+        System.out.print("\n");
+    }
+    ///CLOVER:ON
+
+
+    //------------------------------------------------------------------------
+    //
+    //           printSets          A debugging function.
+    //                              dump out all of the set definitions.
+    //
+    //------------------------------------------------------------------------
+    ///CLOVER:OFF
+    void printSets() {
+        int                   i;
+        System.out.print("\n\nUnicode Sets List\n------------------\n");
+        for (i=0; i<fRB.fUSetNodes.size(); i++) {
+            RBBINode        usetNode;
+            RBBINode        setRef;
+            RBBINode        varRef;
+            String          setName;
+
+            usetNode = (RBBINode )fRB.fUSetNodes.get(i);
+
+            //System.out.print(" " + i + "   ");
+            RBBINode.printInt(2, i);
+            setName = "anonymous";
+            setRef = usetNode.fParent;
+            if (setRef != null) {
+                varRef = setRef.fParent;
+                if (varRef != null  &&  varRef.fType == RBBINode.varRef) {
+                    setName = varRef.fText;
+                }
+            }
+            System.out.print("  " + setName);
+            System.out.print("   ");
+            System.out.print(usetNode.fText);
+            System.out.print("\n");
+            if (usetNode.fLeftChild != null) {
+                usetNode.fLeftChild.printTree(true);
+            }
+        }
+        System.out.print("\n");
+    }
+    ///CLOVER:ON
+}
diff --git a/src/com/ibm/icu/text/RBBISymbolTable.java b/src/com/ibm/icu/text/RBBISymbolTable.java
new file mode 100644
index 0000000..bea3b3e
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBISymbolTable.java
@@ -0,0 +1,204 @@
+/*
+***************************************************************************
+*   Copyright (C) 2002-2006 International Business Machines Corporation   *
+*   and others. All rights reserved.                                      *
+***************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.util.HashMap;
+import java.util.Collection;
+
+import java.text.ParsePosition;
+import com.ibm.icu.lang.UCharacter;
+
+class RBBISymbolTable implements SymbolTable{
+    
+    String               fRules;
+    HashMap              fHashTable;
+    RBBIRuleScanner      fRuleScanner;
+
+    // These next two fields are part of the mechanism for passing references to
+    //   already-constructed UnicodeSets back to the UnicodeSet constructor
+    //   when the pattern includes $variable references.
+    String               ffffString;
+    UnicodeSet           fCachedSetLookup;
+    
+    
+    
+    static class RBBISymbolTableEntry  { 
+        String          key;
+        RBBINode        val;
+    }
+
+    
+    RBBISymbolTable(RBBIRuleScanner rs, String rules) {
+        fRules = rules;
+        fRuleScanner = rs;
+        fHashTable = new HashMap();
+        ffffString = "\uffff";
+    }
+
+    //
+    //  RBBISymbolTable::lookup       This function from the abstract symbol table inteface
+    //                                looks up a variable name and returns a UnicodeString
+    //                                containing the substitution text.
+    //
+    //                                The variable name does NOT include the leading $.
+    //
+    public char[] lookup(String s) {
+        RBBISymbolTableEntry el;
+        RBBINode varRefNode;
+        RBBINode exprNode;
+
+        RBBINode usetNode;
+        String retString;
+
+        el = (RBBISymbolTableEntry) fHashTable.get(s);
+        if (el == null) {
+            return null;
+        }
+
+        // Walk through any chain of variable assignments that ultimately resolve to a Set Ref.
+        varRefNode = el.val;
+        while (varRefNode.fLeftChild.fType == RBBINode.varRef) {
+            varRefNode = varRefNode.fLeftChild;
+        }
+
+        exprNode = varRefNode.fLeftChild; // Root node of expression for variable
+        if (exprNode.fType == RBBINode.setRef) {
+            // The $variable refers to a single UnicodeSet
+            //   return the ffffString, which will subsequently be interpreted as a
+            //   stand-in character for the set by RBBISymbolTable::lookupMatcher()
+            usetNode = exprNode.fLeftChild;
+            fCachedSetLookup = usetNode.fInputSet;
+            retString = ffffString;
+        } else {
+            // The variable refers to something other than just a set.
+            // This is an error in the rules being compiled.  $Variables inside of UnicodeSets
+            //   must refer only to another set, not to some random non-set expression.
+            //   Note:  single characters are represented as sets, so they are ok.
+            fRuleScanner.error(RBBIRuleBuilder.U_BRK_MALFORMED_SET);
+            retString = exprNode.fText;
+            fCachedSetLookup = null;
+        }
+        return retString.toCharArray();
+    }
+
+    //
+    //  RBBISymbolTable::lookupMatcher   This function from the abstract symbol table
+    //                                   interface maps a single stand-in character to a
+    //                                   pointer to a Unicode Set.   The Unicode Set code uses this
+    //                                   mechanism to get all references to the same $variable
+    //                                   name to refer to a single common Unicode Set instance.
+    //
+    //    This implementation cheats a little, and does not maintain a map of stand-in chars
+    //    to sets.  Instead, it takes advantage of the fact that  the UnicodeSet
+    //    constructor will always call this function right after calling lookup(),
+    //    and we just need to remember what set to return between these two calls.
+    public UnicodeMatcher lookupMatcher(int ch) {
+        UnicodeSet retVal = null;
+        if (ch == 0xffff) {
+            retVal = fCachedSetLookup;
+            fCachedSetLookup = null;
+        }
+        return retVal;
+    }
+
+    //
+    // RBBISymbolTable::parseReference   This function from the abstract symbol table interface
+    //                                   looks for a $variable name in the source text.
+    //                                   It does not look it up, only scans for it.
+    //                                   It is used by the UnicodeSet parser.
+    //
+    public String parseReference(String text, ParsePosition pos, int limit) {
+        int start = pos.getIndex();
+        int i = start;
+        String result = "";
+        while (i < limit) {
+            int c = UTF16.charAt(text, i);
+            if ((i == start && !UCharacter.isUnicodeIdentifierStart(c))
+                    || !UCharacter.isUnicodeIdentifierPart(c)) {
+                break;
+            }
+            i += UTF16.getCharCount(c);
+        }
+        if (i == start) { // No valid name chars
+            return result; // Indicate failure with empty string
+        }
+        pos.setIndex(i);
+        result = text.substring(start, i);
+        return result;
+    }
+
+    //
+    // RBBISymbolTable::lookupNode      Given a key (a variable name), return the
+    //                                  corresponding RBBI Node.  If there is no entry
+    //                                  in the table for this name, return NULL.
+    //
+    RBBINode lookupNode(String key) {
+
+        RBBINode retNode = null;
+        RBBISymbolTableEntry el;
+
+        el = (RBBISymbolTableEntry) fHashTable.get(key);
+        if (el != null) {
+            retNode = el.val;
+        }
+        return retNode;
+    }
+
+    //
+    //    RBBISymbolTable::addEntry     Add a new entry to the symbol table.
+    //                                  Indicate an error if the name already exists -
+    //                                    this will only occur in the case of duplicate
+    //                                    variable assignments.
+    //
+    void addEntry(String key, RBBINode val) {
+        RBBISymbolTableEntry e;
+        e = (RBBISymbolTableEntry) fHashTable.get(key);
+        if (e != null) {
+            fRuleScanner.error(RBBIRuleBuilder.U_BRK_VARIABLE_REDFINITION);
+            return;
+        }
+
+        e = new RBBISymbolTableEntry();
+        e.key = key;
+        e.val = val;
+        fHashTable.put(e.key, e);
+    }
+
+    //
+    //  RBBISymbolTable::print    Debugging function, dump out the symbol table contents.
+    //
+    ///CLOVER:OFF
+    void rbbiSymtablePrint() {
+        System.out
+                .print("Variable Definitions\n"
+                        + "Name               Node Val     String Val\n"
+                        + "----------------------------------------------------------------------\n");
+
+        RBBISymbolTableEntry[] syms = new RBBISymbolTableEntry[0];
+        Collection t = fHashTable.values();
+        syms = (RBBISymbolTableEntry[]) t.toArray(syms);
+
+        for (int i = 0; i < syms.length; i++) {
+            RBBISymbolTableEntry s = syms[i];
+
+            System.out.print("  " + s.key + "  "); // TODO:  format output into columns.
+            System.out.print("  " + s.val + "  ");
+            System.out.print(s.val.fLeftChild.fText);
+            System.out.print("\n");
+        }
+
+        System.out.println("\nParsed Variable Definitions\n");
+        for (int i = 0; i < syms.length; i++) {
+            RBBISymbolTableEntry s = syms[i];
+            System.out.print(s.key);
+            s.val.fLeftChild.printTree(true);
+            System.out.print("\n");
+        }
+    }
+    ///CLOVER:ON
+    
+}
diff --git a/src/com/ibm/icu/text/RBBITableBuilder.java b/src/com/ibm/icu/text/RBBITableBuilder.java
new file mode 100644
index 0000000..a5340af
--- /dev/null
+++ b/src/com/ibm/icu/text/RBBITableBuilder.java
@@ -0,0 +1,1047 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.Iterator;
+import java.util.Collection;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+
+//
+//  class RBBITableBuilder is part of the RBBI rule compiler.
+//                         It builds the state transition table used by the RBBI runtime
+//                         from the expression syntax tree generated by the rule scanner.
+//
+//                         This class is part of the RBBI implementation only.
+//                         There is no user-visible public API here.
+//
+class RBBITableBuilder {
+    
+    
+    
+    //
+    //  RBBIStateDescriptor - The DFA is initially constructed as a set of these descriptors,
+    //                        one for each state.
+    static class RBBIStateDescriptor {
+        boolean      fMarked;
+        int          fAccepting;
+        int          fLookAhead;
+        SortedSet    fTagVals;
+        int          fTagsIdx;
+        Set          fPositions;                 // Set of parse tree positions associated
+                                                  //   with this state.  Unordered (it's a set).
+                                                  //   UVector contents are RBBINode *
+
+        int[]        fDtran;                      // Transitions out of this state.
+                                                   //   indexed by input character
+                                                   //   contents is int index of dest state
+                                                   //   in RBBITableBuilder.fDStates
+
+        RBBIStateDescriptor(int maxInputSymbol) {
+            fTagVals = new TreeSet();
+            fPositions = new HashSet();
+            fDtran = new int[maxInputSymbol+1];    // fDtran needs to be pre-sized.
+                                                    //   It is indexed by input symbols, and will
+                                                    //   hold  the next state number for each
+                                                    //   symbol.
+        }
+    }
+    
+    
+    private  RBBIRuleBuilder  fRB;
+    private  int             fRootIx;             // The array index into RBBIRuleBuilder.fTreeRoots
+                                                   //   for the parse tree to operate on.
+                                                   //   Too bad Java can't do indirection more easily!
+
+    private  List             fDStates;       //  D states (Aho's terminology)
+                                               //  Index is state number
+                                               //  Contents are RBBIStateDescriptor pointers.
+
+    //-----------------------------------------------------------------------------
+    //
+    //  Constructor    for RBBITableBuilder.
+    //
+    //                 rootNode is an index into the array of root nodes that is held by
+    //                          the overall RBBIRuleBuilder.
+    //-----------------------------------------------------------------------------
+    RBBITableBuilder(RBBIRuleBuilder rb,  int rootNodeIx)  {
+           fRootIx     = rootNodeIx;
+           fRB         = rb;
+           fDStates    = new ArrayList();
+        }
+
+
+
+ 
+       //-----------------------------------------------------------------------------
+       //
+       //   RBBITableBuilder::build  -  This is the main function for building the DFA state transtion
+       //                               table from the RBBI rules parse tree.
+       //
+       //-----------------------------------------------------------------------------
+       void  build() {
+           // If there were no rules, just return.  This situation can easily arise
+           //   for the reverse rules.
+           if (fRB.fTreeRoots[fRootIx]==null) {
+               return;
+           }
+
+           //
+           // Walk through the tree, replacing any references to $variables with a copy of the
+           //   parse tree for the substition expression.
+           //
+           fRB.fTreeRoots[fRootIx] = fRB.fTreeRoots[fRootIx].flattenVariables();
+           if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("ftree")>=0) {
+               System.out.println("Parse tree after flattening variable references.");
+               fRB.fTreeRoots[fRootIx].printTree(true);
+           }
+
+           //
+           // If the rules contained any references to {bof} 
+           //   add a {bof} <cat> <former root of tree> to the
+           //   tree.  Means that all matches must start out with the 
+           //   {bof} fake character.
+           // 
+           if (fRB.fSetBuilder.sawBOF()) {
+               RBBINode bofTop    = new RBBINode(RBBINode.opCat);
+               RBBINode bofLeaf   = new RBBINode(RBBINode.leafChar);
+               bofTop.fLeftChild  = bofLeaf;
+               bofTop.fRightChild = fRB.fTreeRoots[fRootIx];
+               bofLeaf.fParent    = bofTop;
+               bofLeaf.fVal       = 2;      // Reserved value for {bof}.
+               fRB.fTreeRoots[fRootIx] = bofTop;
+           }
+
+           //
+           // Add a unique right-end marker to the expression.
+           //   Appears as a cat-node, left child being the original tree,
+           //   right child being the end marker.
+           //
+           RBBINode cn = new RBBINode(RBBINode.opCat);
+           cn.fLeftChild = fRB.fTreeRoots[fRootIx];
+           fRB.fTreeRoots[fRootIx].fParent = cn;
+           cn.fRightChild = new RBBINode(RBBINode.endMark);
+           cn.fRightChild.fParent = cn;
+           fRB.fTreeRoots[fRootIx] = cn;
+
+           //
+           //  Replace all references to UnicodeSets with the tree for the equivalent
+           //      expression.
+           //
+           fRB.fTreeRoots[fRootIx].flattenSets();
+           if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("stree")>=0) {
+               System.out.println("Parse tree after flattening Unicode Set references.");
+               fRB.fTreeRoots[fRootIx].printTree(true);
+           }
+
+
+           //
+           // calculate the functions nullable, firstpos, lastpos and followpos on
+           // nodes in the parse tree.
+           //    See the alogrithm description in Aho.
+           //    Understanding how this works by looking at the code alone will be
+           //       nearly impossible.
+           //
+           calcNullable(fRB.fTreeRoots[fRootIx]);
+           calcFirstPos(fRB.fTreeRoots[fRootIx]);
+           calcLastPos(fRB.fTreeRoots[fRootIx]);
+           calcFollowPos(fRB.fTreeRoots[fRootIx]);
+           if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("pos")>=0) {
+               System.out.print("\n");
+               printPosSets(fRB.fTreeRoots[fRootIx]);
+           }
+
+           //
+           //  For "chained" rules, modify the followPos sets
+           //
+           if (fRB.fChainRules) {
+               calcChainedFollowPos(fRB.fTreeRoots[fRootIx]);
+           }
+
+           //
+           //  BOF (start of input) test fixup.
+           //
+           if (fRB.fSetBuilder.sawBOF()) {
+               bofFixup();
+           }
+
+           //
+           // Build the DFA state transition tables.
+           //
+           buildStateTable();
+           flagAcceptingStates();
+           flagLookAheadStates();
+           flagTaggedStates();
+
+           //
+           // Update the global table of rule status {tag} values
+           // The rule builder has a global vector of status values that are common
+           //    for all tables.  Merge the ones from this table into the global set.
+           //
+           mergeRuleStatusVals();
+
+           if (fRB.fDebugEnv!=null && fRB.fDebugEnv.indexOf("states")>=0) {printStates();}
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcNullable.    Impossible to explain succinctly.  See Aho, section 3.9
+       //
+       //-----------------------------------------------------------------------------
+       void calcNullable(RBBINode n) {
+           if (n == null) {
+               return;
+           }
+           if (n.fType == RBBINode.setRef ||
+               n.fType == RBBINode.endMark ) {
+               // These are non-empty leaf node types.
+               n.fNullable = false;
+               return;
+           }
+
+           if (n.fType == RBBINode.lookAhead || n.fType == RBBINode.tag) {
+               // Lookahead marker node.  It's a leaf, so no recursion on children.
+               // It's nullable because it does not match any literal text from the input stream.
+               n.fNullable = true;
+               return;
+           }
+
+
+           // The node is not a leaf.
+           //  Calculate nullable on its children.
+           calcNullable(n.fLeftChild);
+           calcNullable(n.fRightChild);
+
+           // Apply functions from table 3.40 in Aho
+           if (n.fType == RBBINode.opOr) {
+               n.fNullable = n.fLeftChild.fNullable || n.fRightChild.fNullable;
+           }
+           else if (n.fType == RBBINode.opCat) {
+               n.fNullable = n.fLeftChild.fNullable && n.fRightChild.fNullable;
+           }
+           else if (n.fType == RBBINode.opStar || n.fType == RBBINode.opQuestion) {
+               n.fNullable = true;
+           }
+           else {
+               n.fNullable = false;
+           }
+       }
+
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcFirstPos.    Impossible to explain succinctly.  See Aho, section 3.9
+       //
+       //-----------------------------------------------------------------------------
+       void calcFirstPos(RBBINode n) {
+           if (n == null) {
+               return;
+           }
+           if (n.fType == RBBINode.leafChar  ||
+               n.fType == RBBINode.endMark   ||
+               n.fType == RBBINode.lookAhead ||
+               n.fType == RBBINode.tag) {
+               // These are non-empty leaf node types.
+               n.fFirstPosSet.add(n);
+               return;
+           }
+
+           // The node is not a leaf.
+           //  Calculate firstPos on its children.
+           calcFirstPos(n.fLeftChild);
+           calcFirstPos(n.fRightChild);
+
+           // Apply functions from table 3.40 in Aho
+           if (n.fType == RBBINode.opOr) {
+               n.fFirstPosSet.addAll(n.fLeftChild.fFirstPosSet);
+               n.fFirstPosSet.addAll(n.fRightChild.fFirstPosSet);
+           }
+           else if (n.fType == RBBINode.opCat) {
+               n.fFirstPosSet.addAll(n.fLeftChild.fFirstPosSet);
+               if (n.fLeftChild.fNullable) {
+                   n.fFirstPosSet.addAll(n.fRightChild.fFirstPosSet);
+               }
+           }
+           else if (n.fType == RBBINode.opStar ||
+                    n.fType == RBBINode.opQuestion ||
+                    n.fType == RBBINode.opPlus) {
+               n.fFirstPosSet.addAll(n.fLeftChild.fFirstPosSet);
+           }
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcLastPos.    Impossible to explain succinctly.  See Aho, section 3.9
+       //
+       //-----------------------------------------------------------------------------
+       void calcLastPos(RBBINode n) {
+           if (n == null) {
+               return;
+           }
+           if (n.fType == RBBINode.leafChar  ||
+               n.fType == RBBINode.endMark   ||
+               n.fType == RBBINode.lookAhead ||
+               n.fType == RBBINode.tag) {
+               // These are non-empty leaf node types.
+               n.fLastPosSet.add(n);
+               return;
+           }
+
+           // The node is not a leaf.
+           //  Calculate lastPos on its children.
+           calcLastPos(n.fLeftChild);
+           calcLastPos(n.fRightChild);
+
+           // Apply functions from table 3.40 in Aho
+           if (n.fType == RBBINode.opOr) {
+               n.fLastPosSet.addAll(n.fLeftChild.fLastPosSet);
+               n.fLastPosSet.addAll(n.fRightChild.fLastPosSet);
+           }
+           else if (n.fType == RBBINode.opCat) {
+               n.fLastPosSet.addAll(n.fRightChild.fLastPosSet);
+               if (n.fRightChild.fNullable) {
+                   n.fLastPosSet.addAll(n.fLeftChild.fLastPosSet);
+               }
+           }
+           else if (n.fType == RBBINode.opStar     ||
+                    n.fType == RBBINode.opQuestion ||
+                    n.fType == RBBINode.opPlus) {
+               n.fLastPosSet.addAll(n.fLeftChild.fLastPosSet);
+           }
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcFollowPos.    Impossible to explain succinctly.  See Aho, section 3.9
+       //
+       //-----------------------------------------------------------------------------
+       void calcFollowPos(RBBINode n) {
+           if (n == null ||
+               n.fType == RBBINode.leafChar ||
+               n.fType == RBBINode.endMark) {
+               return;
+           }
+
+           calcFollowPos(n.fLeftChild);
+           calcFollowPos(n.fRightChild);
+
+           // Aho rule #1
+           if (n.fType == RBBINode.opCat) {
+               RBBINode i;   // is 'i' in Aho's description
+
+               Set LastPosOfLeftChild = n.fLeftChild.fLastPosSet;
+
+               Iterator ix = LastPosOfLeftChild.iterator();
+               while (ix.hasNext()) {
+                   i = (RBBINode )ix.next();
+                   i.fFollowPos.addAll(n.fRightChild.fFirstPosSet);
+               }
+           }
+
+           // Aho rule #2
+           if (n.fType == RBBINode.opStar ||
+               n.fType == RBBINode.opPlus) {
+               RBBINode   i;  // again, n and i are the names from Aho's description.
+               Iterator   ix = n.fLastPosSet.iterator();
+               while (ix.hasNext()) {
+                   i = (RBBINode) ix.next();
+                   i.fFollowPos.addAll(n.fFirstPosSet);
+               }
+
+           }
+
+
+
+       }
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   calcChainedFollowPos.    Modify the previously calculated followPos sets
+       //                            to implement rule chaining.  NOT described by Aho
+       //
+       //-----------------------------------------------------------------------------
+       void calcChainedFollowPos(RBBINode tree) {
+
+           List        endMarkerNodes = new ArrayList();
+           List        leafNodes      = new ArrayList();
+
+            // get a list of all endmarker nodes.
+           tree.findNodes(endMarkerNodes, RBBINode.endMark);
+
+           // get a list all leaf nodes
+           tree.findNodes(leafNodes, RBBINode.leafChar);
+
+           // Get all nodes that can be the start a match, which is FirstPosition()
+           // of the portion of the tree corresponding to user-written rules.
+           // See the tree description in bofFixup().
+           RBBINode userRuleRoot = tree;
+           if (fRB.fSetBuilder.sawBOF()) {
+               userRuleRoot = tree.fLeftChild.fRightChild;
+           }
+           Assert.assrt(userRuleRoot != null);
+           Set matchStartNodes = userRuleRoot.fFirstPosSet;
+
+
+           // Iteratate over all leaf nodes,
+           //
+           Iterator  endNodeIx = leafNodes.iterator();
+
+           while (endNodeIx.hasNext()) {
+               RBBINode tNode   = (RBBINode)endNodeIx.next();
+               RBBINode endNode = null;
+
+               // Identify leaf nodes that correspond to overall rule match positions.
+               //   These include an endMarkerNode in their followPos sets.
+               Iterator i = endMarkerNodes.iterator();
+               while (i.hasNext()) {
+                   RBBINode endMarkerNode = (RBBINode)i.next();
+                   if (tNode.fFollowPos.contains(endMarkerNode)) {
+                       endNode = tNode;
+                       break;
+                   }
+               }
+               if (endNode == null) {
+                   // node wasn't an end node.  Try again with the next.
+                   continue;
+               }
+
+               // We've got a node that can end a match.
+
+               // Line Break Specific hack:  If this node's val correspond to the $CM char class,
+               //                            don't chain from it.
+               // TODO:  Add rule syntax for this behavior, get specifics out of here and
+               //        into the rule file.
+               if (fRB.fLBCMNoChain) {
+                   int c = this.fRB.fSetBuilder.getFirstChar(endNode.fVal);
+                   if (c != -1) {
+                       // c == -1 occurs with sets containing only the {eof} marker string.
+                       int cLBProp = UCharacter.getIntPropertyValue(c, UProperty.LINE_BREAK);
+                       if (cLBProp == UCharacter.LineBreak.COMBINING_MARK) {
+                           continue;
+                       }
+                   }
+               }
+
+
+               // Now iterate over the nodes that can start a match, looking for ones
+               //   with the same char class as our ending node.
+               RBBINode startNode;
+               Iterator  startNodeIx = matchStartNodes.iterator();
+               while (startNodeIx.hasNext()) {
+                   startNode = (RBBINode )startNodeIx.next();
+                   if (startNode.fType != RBBINode.leafChar) {
+                       continue;
+                   }
+
+                   if (endNode.fVal == startNode.fVal) {
+                       // The end val (character class) of one possible match is the
+                       //   same as the start of another.
+
+                       // Add all nodes from the followPos of the start node to the
+                       //  followPos set of the end node, which will have the effect of
+                       //  letting matches transition from a match state at endNode
+                       //  to the second char of a match starting with startNode.
+                       endNode.fFollowPos.addAll(startNode.fFollowPos);
+                   }
+               }
+           }
+       }
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   bofFixup.    Fixup for state tables that include {bof} beginning of input testing.
+       //                Do an swizzle similar to chaining, modifying the followPos set of
+       //                the bofNode to include the followPos nodes from other {bot} nodes
+       //                scattered through the tree.
+       //
+       //                This function has much in common with calcChainedFollowPos().
+       //
+       //-----------------------------------------------------------------------------
+       void bofFixup() {
+           //
+           //   The parse tree looks like this ...
+           //         fTree root  --.       <cat>
+           //                               /     \   
+           //                            <cat>   <#end node>
+           //                           /     \   
+           //                     <bofNode>   rest
+           //                               of tree
+           //
+           //    We will be adding things to the followPos set of the <bofNode>
+           //
+           RBBINode  bofNode = fRB.fTreeRoots[fRootIx].fLeftChild.fLeftChild;
+           Assert.assrt(bofNode.fType == RBBINode.leafChar);
+           Assert.assrt(bofNode.fVal == 2);
+
+           // Get all nodes that can be the start a match of the user-written rules
+           //  (excluding the fake bofNode)
+           //  We want the nodes that can start a match in the
+           //     part labeled "rest of tree"
+           // 
+           Set matchStartNodes = fRB.fTreeRoots[fRootIx].fLeftChild.fRightChild.fFirstPosSet;
+           Iterator startNodeIt = matchStartNodes.iterator();
+           while (startNodeIt.hasNext()) {
+               RBBINode startNode = (RBBINode)startNodeIt.next();
+               if (startNode.fType != RBBINode.leafChar) {
+                   continue;
+               }
+
+               if (startNode.fVal == bofNode.fVal) {
+                   //  We found a leaf node corresponding to a {bof} that was
+                   //    explicitly written into a rule.
+                   //  Add everything from the followPos set of this node to the
+                   //    followPos set of the fake bofNode at the start of the tree.
+                   //  
+                   bofNode.fFollowPos.addAll(startNode.fFollowPos);
+               }
+           }
+       }
+
+       //-----------------------------------------------------------------------------
+       //
+       //   buildStateTable()    Determine the set of runtime DFA states and the
+       //                        transition tables for these states, by the algorithm
+       //                        of fig. 3.44 in Aho.
+       //
+       //                        Most of the comments are quotes of Aho's psuedo-code.
+       //
+       //-----------------------------------------------------------------------------
+       void buildStateTable() {
+           //
+           // Add a dummy state 0 - the stop state.  Not from Aho.
+           int      lastInputSymbol = fRB.fSetBuilder.getNumCharCategories() - 1;
+           RBBIStateDescriptor failState = new RBBIStateDescriptor(lastInputSymbol);
+           fDStates.add(failState);
+
+           // initially, the only unmarked state in Dstates is firstpos(root),
+           //       where toot is the root of the syntax tree for (r)#;
+           RBBIStateDescriptor initialState = new RBBIStateDescriptor(lastInputSymbol);
+           initialState.fPositions.addAll(fRB.fTreeRoots[fRootIx].fFirstPosSet);
+           fDStates.add(initialState);
+
+           // while there is an unmarked state T in Dstates do begin
+           for (;;) {
+               RBBIStateDescriptor T = null;
+               int              tx;
+               for (tx=1; tx<fDStates.size(); tx++) {
+                   RBBIStateDescriptor temp  = (RBBIStateDescriptor )fDStates.get(tx);
+                   if (temp.fMarked == false) {
+                       T = temp;
+                       break;
+                   }
+               }
+               if (T == null) {
+                   break;
+               }
+
+               // mark T;
+               T.fMarked = true;
+
+               // for each input symbol a do begin
+               int  a;
+               for (a = 1; a<=lastInputSymbol; a++) {
+                   // let U be the set of positions that are in followpos(p)
+                   //    for some position p in T
+                   //    such that the symbol at position p is a;
+                   Set        U = null;
+                   RBBINode   p;
+                   Iterator   pit = T.fPositions.iterator();
+                   while (pit.hasNext()) {
+                       p = (RBBINode )pit.next();
+                       if ((p.fType == RBBINode.leafChar) &&  (p.fVal == a)) {
+                           if (U == null) {
+                               U = new HashSet();
+                           }
+                           U.addAll(p.fFollowPos);
+                       }
+                   }
+
+                   // if U is not empty and not in DStates then
+                   int  ux = 0;
+                   boolean    UinDstates = false;
+                   if (U != null) {
+                       Assert.assrt(U.size() > 0);
+                       int  ix;
+                       for (ix=0; ix<fDStates.size(); ix++) {
+                           RBBIStateDescriptor temp2;
+                           temp2 = (RBBIStateDescriptor )fDStates.get(ix);
+                           if (U.equals(temp2.fPositions)) {
+                               U  = temp2.fPositions;
+                               ux = ix;
+                               UinDstates = true;
+                               break;
+                           }
+                       }
+
+                       // Add U as an unmarked state to Dstates
+                       if (!UinDstates)
+                       {
+                           RBBIStateDescriptor newState = new RBBIStateDescriptor(lastInputSymbol);
+                           newState.fPositions = U;
+                           fDStates.add(newState);
+                           ux = fDStates.size()-1;
+                       }
+
+                       // Dtran[T, a] := U;
+                       T.fDtran[a] = ux;
+                   }
+               }
+           }
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   flagAcceptingStates    Identify accepting states.
+       //                          First get a list of all of the end marker nodes.
+       //                          Then, for each state s,
+       //                              if s contains one of the end marker nodes in its list of tree positions then
+       //                                  s is an accepting state.
+       //
+       //-----------------------------------------------------------------------------
+       void     flagAcceptingStates() {
+           List        endMarkerNodes = new ArrayList();
+           RBBINode    endMarker;
+           int     i;
+           int     n;
+
+           fRB.fTreeRoots[fRootIx].findNodes(endMarkerNodes, RBBINode.endMark);
+
+           for (i=0; i<endMarkerNodes.size(); i++) {
+               endMarker = (RBBINode)endMarkerNodes.get(i);
+               for (n=0; n<fDStates.size(); n++) {
+                   RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(n);
+                   //if (sd.fPositions.indexOf(endMarker) >= 0) {
+                   if (sd.fPositions.contains(endMarker)) {
+                       // Any non-zero value for fAccepting means this is an accepting node.
+                       // The value is what will be returned to the user as the break status.
+                       // If no other value was specified, force it to -1.
+
+                       if (sd.fAccepting==0) {
+                        // State hasn't been marked as accepting yet.  Do it now.
+                           sd.fAccepting = endMarker.fVal;
+                           if (sd.fAccepting == 0) {
+                               sd.fAccepting = -1;
+                        }
+                       }
+                       if (sd.fAccepting==-1 && endMarker.fVal != 0) {
+                        // Both lookahead and non-lookahead accepting for this state.
+                        // Favor the look-ahead.  Expedient for line break.
+                        // TODO:  need a more elegant resolution for conflicting rules.
+                        sd.fAccepting = endMarker.fVal;
+                    }
+                        // implicit else:
+                        // if sd.fAccepting already had a value other than 0 or -1, leave it be.
+
+                       // If the end marker node is from a look-ahead rule, set
+                       //   the fLookAhead field or this state also.
+                       if (endMarker.fLookAheadEnd) {
+                        // TODO:  don't change value if already set?
+                        // TODO:  allow for more than one active look-ahead rule in engine.
+                        //        Make value here an index to a side array in engine?
+                           sd.fLookAhead = sd.fAccepting;
+                       }
+                   }
+               }
+           }
+       }
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //    flagLookAheadStates   Very similar to flagAcceptingStates, above.
+       //
+       //-----------------------------------------------------------------------------
+       void     flagLookAheadStates() {
+           List        lookAheadNodes = new ArrayList();
+           RBBINode    lookAheadNode;
+           int     i;
+           int     n;
+
+           fRB.fTreeRoots[fRootIx].findNodes(lookAheadNodes, RBBINode.lookAhead);
+           for (i=0; i<lookAheadNodes.size(); i++) {
+               lookAheadNode = (RBBINode )lookAheadNodes.get(i);
+
+               for (n=0; n<fDStates.size(); n++) {
+                   RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(n);
+                   if (sd.fPositions.contains(lookAheadNode)) {
+                       sd.fLookAhead = lookAheadNode.fVal;
+                   }
+               }
+           }
+       }
+
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //    flagTaggedStates
+       //
+       //-----------------------------------------------------------------------------
+       void     flagTaggedStates() {
+           List        tagNodes = new ArrayList();
+           RBBINode    tagNode;
+           int     i;
+           int     n;
+
+           fRB.fTreeRoots[fRootIx].findNodes(tagNodes, RBBINode.tag);
+           for (i=0; i<tagNodes.size(); i++) {                   // For each tag node t (all of 'em)
+               tagNode = (RBBINode )tagNodes.get(i);
+
+               for (n=0; n<fDStates.size(); n++) {              //    For each state  s (row in the state table)
+                   RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(n);
+                   if (sd.fPositions.contains(tagNode)) {       //       if  s include the tag node t
+                       sd.fTagVals.add(new Integer(tagNode.fVal));
+                   }
+               }
+           }
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //  mergeRuleStatusVals
+       //
+       //      Allocate positions in the  global array of rule status {tag} values
+       //
+       //      The RBBI runtime uses an array of {sets of status values} that can
+       //      be returned for boundaries.  Each accepting state that has non-zero
+       //      status includes an index into this array.  The format of the array
+       //      is 
+       //           Num of status values in group 1
+       //              status val
+       //              status val
+       //              ...
+       //           Num of status vals in group 2
+       //              status val
+       //              status val
+       //              ...
+       //           etc.
+       //
+       //
+       //-----------------------------------------------------------------------------
+       
+       void  mergeRuleStatusVals() {
+           //
+           //  The basic outline of what happens here is this...
+           //
+           //    for each state in this state table
+           //       if the status tag list for this state is in the global statuses list
+           //           record where and
+           //           continue with the next state
+           //       else
+           //           add the tag list for this state to the global list.
+           //
+           int n;
+           
+           // Pre-load a single tag of {0} into the table.
+           //   We will need this as a default, for rule sets with no explicit tagging,
+           //   or with explicit tagging of {0}.
+           if (fRB.fRuleStatusVals.size() == 0) {              
+               fRB.fRuleStatusVals.add(new Integer(1));    // Num of statuses in group
+               fRB.fRuleStatusVals.add(new Integer(0));    //   and our single status of zero
+               
+               SortedSet s0 = new TreeSet();
+               Integer izero = new Integer(0);
+               fRB.fStatusSets.put(s0, izero);
+               SortedSet s1 = new TreeSet();
+               s1.add(izero);
+               fRB.fStatusSets.put(s0, izero);
+           }
+
+           //    For each state, check whether the state's status tag values are
+           //       already entered into the status values array, and add them if not.
+           for (n=0; n<fDStates.size(); n++) {
+               RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(n);
+               Set statusVals = sd.fTagVals;
+               Integer arrayIndexI = (Integer)fRB.fStatusSets.get(statusVals);
+               if (arrayIndexI == null) {
+                   // This is the first encounter of this set of status values.
+                   //   Add them to the statusSets map, This map associates
+                   //   the set of status values with an index in the runtime status 
+                   //   values array.
+                   arrayIndexI = new Integer(fRB.fRuleStatusVals.size());
+                   fRB.fStatusSets.put(statusVals, arrayIndexI);
+                   
+                   // Add the new set of status values to the vector of values that
+                   //   will eventually become the array used by the runtime engine.
+                   fRB.fRuleStatusVals.add(new Integer(statusVals.size()));
+                   Iterator it = statusVals.iterator();
+                   while (it.hasNext()) {
+                       fRB.fRuleStatusVals.add(it.next());
+                   }
+               
+               }
+               
+               // Save the runtime array index back into the state descriptor.
+               sd.fTagsIdx = arrayIndexI.intValue();
+           }          
+       }
+
+
+
+
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //  printPosSets   Debug function.  Dump Nullable, firstpos, lastpos and followpos
+       //                 for each node in the tree.
+       //
+       //-----------------------------------------------------------------------------
+       
+       void printPosSets(RBBINode n) {
+           if (n==null) {
+               return;
+           }
+           RBBINode.printNode(n);
+           System.out.print("         Nullable:  " + n.fNullable);
+
+           System.out.print("         firstpos:  ");
+           printSet(n.fFirstPosSet);
+
+           System.out.print("         lastpos:   ");
+           printSet(n.fLastPosSet);
+
+           System.out.print("         followpos: ");
+           printSet(n.fFollowPos);
+
+           printPosSets(n.fLeftChild);
+           printPosSets(n.fRightChild);
+       }
+       
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   getTableSize()    Calculate the size in bytes of the runtime form of this
+       //                     state transition table.
+       //
+       //          Note:  Refer to common/rbbidata.h from ICU4C for the declarations
+       //                 of the structures being matched by this calculation.
+       //
+       //-----------------------------------------------------------------------------
+       int  getTableSize()  {
+           int    size = 0;
+           int    numRows;
+           int    numCols;
+           int    rowSize;
+
+           if (fRB.fTreeRoots[fRootIx] == null) {
+               return 0;
+           }
+
+           size    = /*sizeof(RBBIStateTable) - 4 */ 16;    // The header, with no rows to the table.
+
+           numRows = fDStates.size();
+           numCols = fRB.fSetBuilder.getNumCharCategories();
+
+           //  Note  The declaration of RBBIStateTableRow is for a table of two columns.
+           //        Therefore we subtract two from numCols when determining
+           //        how much storage to add to a row for the total columns.
+           // rowSize = sizeof(RBBIStateTableRow) + sizeof(uint16_t)*(numCols-2);
+           rowSize = 8 + 2*numCols;
+           size   += numRows * rowSize;
+           while (size % 8 > 0) {    // Size must be multiple of 8 bytes in size.
+               size++;
+           }
+
+           return size;
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   exportTable()    export the state transition table in the ICU4C format.
+       //
+       //                    Most of the table is 16 bit shorts.  This function exports
+       //                    the whole thing as an array of shorts.
+       //
+       //                    The size of the array must be rounded up to a multiple of
+       //                    8 bytes.
+       //
+       //                    See struct RBBIStateTable in ICU4C, common/rbbidata.h
+       //
+       //-----------------------------------------------------------------------------
+       
+       short [] exportTable() {
+           int                state;
+           int                col;
+
+           if (fRB.fTreeRoots[fRootIx] == null) {
+               return new short[0];
+           }
+
+           Assert.assrt(fRB.fSetBuilder.getNumCharCategories() < 0x7fff &&
+               fDStates.size() < 0x7fff); 
+
+           int numStates = fDStates.size();
+    
+           // Size of table size in shorts.
+           //  the "4" is the size of struct RBBIStateTableRow, the row header part only.
+           int rowLen = 4 + fRB.fSetBuilder.getNumCharCategories();
+           int tableSize = getTableSize() / 2;
+
+           
+           short [] table = new short[tableSize];
+           
+           //
+           // Fill in the header fields.
+           //      Annoying because they really want to be ints, not shorts.
+           //
+           // RBBIStateTable.fNumStates
+           table[RBBIDataWrapper.NUMSTATES]   = (short)(numStates >>> 16);
+           table[RBBIDataWrapper.NUMSTATES+1] = (short)(numStates & 0x0000ffff);
+
+           // RBBIStateTable.fRowLen
+           table[RBBIDataWrapper.ROWLEN]   = (short)(rowLen >>> 16);
+           table[RBBIDataWrapper.ROWLEN+1] = (short)(rowLen & 0x0000ffff);
+           
+           // RBBIStateTable.fFlags
+           int flags = 0;
+           if (fRB.fLookAheadHardBreak) {
+               flags  |= RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK;
+           }
+           if (fRB.fSetBuilder.sawBOF()) {
+               flags  |= RBBIDataWrapper.RBBI_BOF_REQUIRED;
+           }
+           table[RBBIDataWrapper.FLAGS]   = (short)(flags >>> 16);
+           table[RBBIDataWrapper.FLAGS+1] = (short)(flags & 0x0000ffff);
+           
+           int numCharCategories = fRB.fSetBuilder.getNumCharCategories();
+           for (state=0; state<numStates; state++) {
+               RBBIStateDescriptor sd = (RBBIStateDescriptor )fDStates.get(state);
+               int                row = 8 + state*rowLen;
+               Assert.assrt (-32768 < sd.fAccepting && sd.fAccepting <= 32767);
+               Assert.assrt (-32768 < sd.fLookAhead && sd.fLookAhead <= 32767);
+               table[row + RBBIDataWrapper.ACCEPTING] = (short)sd.fAccepting;
+               table[row + RBBIDataWrapper.LOOKAHEAD] = (short)sd.fLookAhead;
+               table[row + RBBIDataWrapper.TAGIDX]    = (short)sd.fTagsIdx;
+               for (col=0; col<numCharCategories; col++) {
+                   table[row + RBBIDataWrapper.NEXTSTATES + col] = (short)sd.fDtran[col];
+               }
+           }
+           return table;
+       }
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   printSet    Debug function.   Print the contents of a set of Nodes
+       //
+       //-----------------------------------------------------------------------------
+       
+       void printSet(Collection s) {
+           Iterator it = s.iterator();
+           while (it.hasNext()) {
+               RBBINode n = (RBBINode)it.next();
+               RBBINode.printInt(n.fSerialNum, 8);
+           }
+           System.out.println();
+       }
+       
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   printStates    Debug Function.  Dump the fully constructed state transition table.
+       //
+       //-----------------------------------------------------------------------------
+       
+       void printStates() {
+           int     c;    // input "character"
+           int     n;    // state number
+
+           System.out.print("state |           i n p u t     s y m b o l s \n");
+           System.out.print("      | Acc  LA    Tag");
+           for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
+               RBBINode.printInt((int)c, 3);
+           }
+           System.out.print("\n");
+           System.out.print("      |---------------");
+           for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
+               System.out.print("---");
+           }
+           System.out.print("\n");
+
+           for (n=0; n<fDStates.size(); n++) {
+               RBBIStateDescriptor sd = (RBBIStateDescriptor)fDStates.get(n);
+               RBBINode.printInt(n, 5);
+               System.out.print(" | ");
+               
+               RBBINode.printInt(sd.fAccepting, 3);
+               RBBINode.printInt(sd.fLookAhead, 4);
+               RBBINode.printInt(sd.fTagsIdx, 6);
+               System.out.print(" ");
+               for (c=0; c<fRB.fSetBuilder.getNumCharCategories(); c++) {
+                   RBBINode.printInt(sd.fDtran[c], 3);
+               }
+               System.out.print("\n");
+           }
+           System.out.print("\n\n");
+       }
+       
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //   printRuleStatusTable    Debug Function.  Dump the common rule status table
+       //
+       //-----------------------------------------------------------------------------
+       
+       void printRuleStatusTable() {
+           int  thisRecord = 0;
+           int  nextRecord = 0;
+           int      i;
+           List  tbl = fRB.fRuleStatusVals;
+
+           System.out.print("index |  tags \n");
+           System.out.print("-------------------\n");
+
+           while (nextRecord < tbl.size()) {
+               thisRecord = nextRecord;
+               nextRecord = thisRecord + ((Integer)tbl.get(thisRecord)).intValue() + 1;
+               RBBINode.printInt(thisRecord, 7);
+               for (i=thisRecord+1; i<nextRecord; i++) {
+                   int val = ((Integer)tbl.get(i)).intValue();
+                   RBBINode.printInt(val, 7);
+               }
+               System.out.print("\n");
+           }
+           System.out.print("\n\n");
+       }
+       
+
+
+}
diff --git a/src/com/ibm/icu/text/RBNFChinesePostProcessor.java b/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
new file mode 100644
index 0000000..348cb1e
--- /dev/null
+++ b/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
@@ -0,0 +1,160 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A post-processor for Chinese text.
+ */
+final class RBNFChinesePostProcessor implements RBNFPostProcessor {
+    private NFRuleSet lastRuleSet;
+    private boolean longForm;
+    private int format;
+
+    private static final String[] rulesetNames = {
+        "%traditional", "%simplified", "%accounting", "%time"
+    };
+
+    /**
+     * Initialization routine for this instance, called once
+     * immediately after first construction and never again.  
+     */
+    public void init(RuleBasedNumberFormat formatter, String rules) {
+    }
+
+    /**
+     * Work routine.  Post process the output, which was generated by the
+     * ruleset with the given name.
+     */
+    public void process(StringBuffer buf, NFRuleSet ruleSet) {
+        // markers depend on what rule set we are using
+
+        if (ruleSet != lastRuleSet) {
+            String name = ruleSet.getName();
+            for (int i = 0; i < rulesetNames.length; ++i) {
+                if (rulesetNames[i].equals(name)) {
+                    format = i;
+                    longForm = i == 1 || i == 3;
+                    break;
+                }
+            }
+        }
+
+        if (longForm) {
+            for (int i = Utility.indexOf(buf,"*"); i != -1; i = Utility.indexOf(buf, "*", i)) {
+                buf.delete(i, i+1);
+            }
+            return;
+        }
+
+        final String DIAN = "\u9ede"; // decimal point
+
+        final String[][] markers = {
+            { "\u842c", "\u5104", "\u5146", "\u3007" }, // marker chars, last char is the 'zero'
+            { "\u4e07", "\u4ebf", "\u5146", "\u3007" },
+            { "\u842c", "\u5104", "\u5146", "\u96f6" }
+            // need markers for time?
+        };
+
+        // remove unwanted lings
+        // a '0' (ling) with * might be removed
+        // mark off 10,000 'chunks', markers are Z, Y, W (zhao, yii, and wan)
+        // already, we avoid two lings in the same chunk -- ling without * wins
+        // now, just need  to avoid optional lings in adjacent chunks
+        // process right to left
+
+        // decision matrix:
+        // state, situation
+        //     state         none       opt.          req.
+        //     -----         ----       ----          ----
+        // none to right     none       opt.          req.  
+        // opt. to right     none   clear, none  clear right, req.
+        // req. to right     none   clear, none       req.
+
+        // mark chunks with '|' for convenience
+        {
+            String[] m = markers[format];
+            for (int i = 0; i < m.length-1; ++i) {
+                int n = Utility.indexOf(buf, m[i]);
+                if (n != -1) {
+                    buf.insert(n+m[i].length(), '|');
+                }
+            }
+        }
+
+        int x = Utility.indexOf(buf, DIAN);
+        if (x == -1) {
+            x = buf.length();
+        }
+        int s = 0; // 0 = none to right, 1 = opt. to right, 2 = req. to right
+        int n = -1; // previous optional ling
+        String ling = markers[format][3];
+        while (x >= 0) {
+            int m = Utility.lastIndexOf(buf, "|", x);
+            int nn = Utility.lastIndexOf(buf, ling, x);
+            int ns = 0;
+            if (nn > m) {
+                ns = (nn > 0 && buf.charAt(nn-1) != '*') ? 2 : 1;
+            }
+            x = m - 1;
+
+            // actually much simpler, but leave this verbose for now so it's easier to follow
+            switch (s*3+ns) {
+            case 0: /* none, none */
+                s = ns; // redundant
+                n = -1;
+                break;
+            case 1: /* none, opt. */
+                s = ns;
+                n = nn; // remember optional ling to right
+                break;
+            case 2: /* none, req. */
+                s = ns;
+                n = -1;
+                break;
+            case 3: /* opt., none */
+                s = ns;
+                n = -1;
+                break;
+            case 4: /* opt., opt. */
+                buf.delete(nn-1, nn+ling.length()); // delete current optional ling
+                s = 0;
+                n = -1;
+                break;
+            case 5: /* opt., req. */
+                buf.delete(n-1, n+ling.length()); // delete previous optional ling
+                s = ns;
+                n = -1;
+                break;
+            case 6: /* req., none */
+                s = ns;
+                n = -1;
+                break;
+            case 7: /* req., opt. */
+                buf.delete(nn-1, nn+ling.length()); // delete current optional ling
+                s = 0;
+                n = -1;
+                break;
+            case 8: /* req., req. */
+                s = ns;
+                n = -1;
+                break;
+            default:
+                throw new IllegalStateException();
+            }
+        }
+
+        for (int i = buf.length(); --i >= 0;) {
+            char c = buf.charAt(i);
+            if (c == '*' || c == '|') {
+                buf.delete(i, i+1);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/RBNFPostProcessor.java b/src/com/ibm/icu/text/RBNFPostProcessor.java
new file mode 100644
index 0000000..d513141
--- /dev/null
+++ b/src/com/ibm/icu/text/RBNFPostProcessor.java
@@ -0,0 +1,30 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * Post processor for RBNF output.
+ * @internal
+ */
+interface RBNFPostProcessor {
+    /**
+     * Initialization routine for this instance, called once
+     * immediately after first construction and never again.
+     * @param formatter the formatter that will be using this post-processor
+     * @param rules the special rules for this post-procesor
+     */
+    void init(RuleBasedNumberFormat formatter, String rules);
+
+    /**
+     * Work routine.  Post process the output, which was generated by the
+     * ruleset with the given name.
+     * @param output the output of the main RBNF processing
+     * @param ruleSet the rule set originally invoked to generate the output
+     */
+    void process(StringBuffer output, NFRuleSet ruleSet);
+}
diff --git a/src/com/ibm/icu/text/RawCollationKey.java b/src/com/ibm/icu/text/RawCollationKey.java
new file mode 100644
index 0000000..7dfb29e
--- /dev/null
+++ b/src/com/ibm/icu/text/RawCollationKey.java
@@ -0,0 +1,102 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.ByteArrayWrapper;
+
+/**
+ * <p>
+ * Simple class wrapper to store the internal byte representation of a 
+ * CollationKey. Unlike the CollationKey, this class do not contain information 
+ * on the source string the sort order represents. RawCollationKey is mutable 
+ * and users can reuse its objects with the method in 
+ * RuleBasedCollator.getRawCollationKey(..).
+ * </p>
+ * <p>
+ * Please refer to the documentation on CollationKey for a detail description
+ * on the internal byte representation. Note the internal byte representation 
+ * is always null-terminated.
+ * </p> 
+ * <code>
+ * Example of use:<br>
+ * String str[] = {.....};
+ * RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance();
+ * RawCollationKey key = new RawCollationKey(128);
+ * for (int i = 0; i &lt; str.length; i ++) {
+ *     collator.getRawCollationKey(str[i], key);
+ *     // do something with key.bytes
+ * }
+ * </code>
+ * <p><strong>Note:</strong> Comparison between RawCollationKeys created by 
+ * different Collators might return incorrect results.  
+ * See class documentation for Collator.</p>
+ * @stable ICU 2.8
+ * @see RuleBasedCollator
+ * @see CollationKey
+ */
+public final class RawCollationKey extends ByteArrayWrapper
+{
+    // public constructors --------------------------------------------------
+    
+    /**
+     * Default constructor, internal byte array is null and its size set to 0.
+     * @stable ICU 2.8
+     */
+    public RawCollationKey() 
+    {
+    }
+
+    /**
+     * RawCollationKey created with an empty internal byte array of length 
+     * capacity. Size of the internal byte array will be set to 0.
+     * @param capacity length of internal byte array
+     * @stable ICU 2.8
+     */
+    public RawCollationKey(int capacity) 
+    {
+        bytes = new byte[capacity];
+    }
+
+    /**
+     * RawCollationKey created, adopting bytes as the internal byte array.
+     * Size of the internal byte array will be set to 0.
+     * @param bytes byte array to be adopted by RawCollationKey
+     * @stable ICU 2.8
+     */
+    public RawCollationKey(byte[] bytes) 
+    {
+        this.bytes = bytes;
+    }
+    
+    /**
+     * Construct a RawCollationKey from a byte array and size.
+     * @param bytesToAdopt the byte array to adopt
+     * @param size the length of valid data in the byte array
+     * @throws IndexOutOfBoundsException if bytesToAdopt == null and size != 0, or
+     * size < 0, or size > bytesToAdopt.length.
+     * @stable ICU 2.8
+     */
+    public RawCollationKey(byte[] bytesToAdopt, int size) 
+    {
+        super(bytesToAdopt, size);
+    }
+
+    /**
+     * Compare this RawCollationKey to another, which must not be null.  This overrides
+     * the inherited implementation to ensure the returned values are -1, 0, or 1.
+     * @param rhs the RawCollationKey to compare to.
+     * @return -1, 0, or 1 as this compares less than, equal to, or
+     * greater than rhs.
+     * @throws ClassCastException if the other object is not a RawCollationKey.
+     * @stable ICU 3.2
+     */
+    public int compareTo(Object rhs) {
+        int result = super.compareTo((RawCollationKey)rhs);
+        return result < 0 ? -1 : result == 0 ? 0 : 1;
+    }
+}
diff --git a/src/com/ibm/icu/text/RemoveTransliterator.java b/src/com/ibm/icu/text/RemoveTransliterator.java
new file mode 100644
index 0000000..3d02002
--- /dev/null
+++ b/src/com/ibm/icu/text/RemoveTransliterator.java
@@ -0,0 +1,52 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+
+/**
+ * A transliterator that removes characters.  This is useful in conjunction
+ * with a filter.
+ */
+class RemoveTransliterator extends Transliterator {
+
+    /**
+     * ID for this transliterator.
+     */
+    private static String _ID = "Any-Remove";
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new RemoveTransliterator();
+            }
+        });
+        Transliterator.registerSpecialInverse("Remove", "Null", false);
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public RemoveTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        // Our caller (filteredTransliterate) has already narrowed us
+        // to an unfiltered run.  Delete it.
+        text.replace(index.start, index.limit, "");
+        int len = index.limit - index.start;
+        index.contextLimit -= len;
+        index.limit -= len;
+    }
+}
diff --git a/src/com/ibm/icu/text/Replaceable.java b/src/com/ibm/icu/text/Replaceable.java
new file mode 100644
index 0000000..8bf2743
--- /dev/null
+++ b/src/com/ibm/icu/text/Replaceable.java
@@ -0,0 +1,186 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>Replaceable</code> is an interface representing a
+ * string of characters that supports the replacement of a range of
+ * itself with a new string of characters.  It is used by APIs that
+ * change a piece of text while retaining metadata.  Metadata is data
+ * other than the Unicode characters returned by char32At().  One
+ * example of metadata is style attributes; another is an edit
+ * history, marking each character with an author and revision number.
+ *
+ * <p>An implicit aspect of the <code>Replaceable</code> API is that
+ * during a replace operation, new characters take on the metadata of
+ * the old characters.  For example, if the string "the <b>bold</b>
+ * font" has range (4, 8) replaced with "strong", then it becomes "the
+ * <b>strong</b> font".
+ *
+ * <p><code>Replaceable</code> specifies ranges using a start
+ * offset and a limit offset.  The range of characters thus specified
+ * includes the characters at offset start..limit-1.  That is, the
+ * start offset is inclusive, and the limit offset is exclusive.
+ *
+ * <p><code>Replaceable</code> also includes API to access characters
+ * in the string: <code>length()</code>, <code>charAt()</code>,
+ * <code>char32At()</code>, and <code>extractBetween()</code>.
+ *
+ * <p>For a subclass to support metadata, typical behavior of
+ * <code>replace()</code> is the following:
+ * <ul>
+ *   <li>Set the metadata of the new text to the metadata of the first
+ *   character replaced</li>
+ *   <li>If no characters are replaced, use the metadata of the
+ *   previous character</li>
+ *   <li>If there is no previous character (i.e. start == 0), use the
+ *   following character</li>
+ *   <li>If there is no following character (i.e. the replaceable was
+ *   empty), use default metadata<br>
+ *   <li>If the code point U+FFFF is seen, it should be interpreted as
+ *   a special marker having no metadata<li>
+ *   </li>
+ * </ul>
+ * If this is not the behavior, the subclass should document any differences.
+ * 
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public interface Replaceable {
+    /**
+     * Returns the number of 16-bit code units in the text.
+     * @return number of 16-bit code units in text
+     * @stable ICU 2.0
+     */ 
+    int length();
+
+    /**
+     * Returns the 16-bit code unit at the given offset into the text.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 16-bit code unit of text at given offset
+     * @stable ICU 2.0
+     */
+    char charAt(int offset);
+
+    /**
+     * Returns the 32-bit code point at the given 16-bit offset into
+     * the text.  This assumes the text is stored as 16-bit code units
+     * with surrogate pairs intermixed.  If the offset of a leading or
+     * trailing code unit of a surrogate pair is given, return the
+     * code point of the surrogate pair.
+     *
+     * <p>Most subclasses can return
+     * <code>com.ibm.icu.text.UTF16.charAt(this, offset)</code>.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 32-bit code point of text at given offset
+     * @stable ICU 2.0
+     */
+    int char32At(int offset);
+
+    /**
+     * Copies characters from this object into the destination
+     * character array.  The first character to be copied is at index
+     * <code>srcStart</code>; the last character to be copied is at
+     * index <code>srcLimit-1</code> (thus the total number of
+     * characters to be copied is <code>srcLimit-srcStart</code>). The
+     * characters are copied into the subarray of <code>dst</code>
+     * starting at index <code>dstStart</code> and ending at index
+     * <code>dstStart + (srcLimit-srcStart) - 1</code>.
+     *
+     * @param srcStart the beginning index to copy, inclusive; <code>0
+     * <= start <= limit</code>.
+     * @param srcLimit the ending index to copy, exclusive;
+     * <code>start <= limit <= length()</code>.
+     * @param dst the destination array.
+     * @param dstStart the start offset in the destination array.
+     * @stable ICU 2.0
+     */
+    void getChars(int srcStart, int srcLimit, char dst[], int dstStart);
+
+    /**
+     * Replaces a substring of this object with the given text.
+     *
+     * <p>Subclasses must ensure that if the text between start and
+     * limit is equal to the replacement text, that replace has no
+     * effect. That is, any metadata
+     * should be unaffected. In addition, subclasses are encouraged to
+     * check for initial and trailing identical characters, and make a
+     * smaller replacement if possible. This will preserve as much
+     * metadata as possible.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param text the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @stable ICU 2.0
+     */
+    void replace(int start, int limit, String text);
+
+    /**
+     * Replaces a substring of this object with the given text.
+     *
+     * <p>Subclasses must ensure that if the text between start and
+     * limit is equal to the replacement text, that replace has no
+     * effect. That is, any metadata
+     * should be unaffected. In addition, subclasses are encouraged to
+     * check for initial and trailing identical characters, and make a
+     * smaller replacement if possible. This will preserve as much
+     * metadata as possible.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param chars the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @param charsStart the beginning index into <code>chars</code>,
+     * inclusive; <code>0 <= start <= limit</code>.
+     * @param charsLen the number of characters of <code>chars</code>.
+     * @stable ICU 2.0
+     */
+    void replace(int start, int limit, char[] chars,
+                 int charsStart, int charsLen);
+    // Note: We use length rather than limit to conform to StringBuffer
+    // and System.arraycopy.
+
+    /**
+     * Copies a substring of this object, retaining metadata.
+     * This method is used to duplicate or reorder substrings.
+     * The destination index must not overlap the source range.
+     * If <code>hasMetaData()</code> returns false, subclasses
+     * may use the naive implementation:
+     *
+     * <pre> char[] text = new char[limit - start];
+     * getChars(start, limit, text, 0);
+     * replace(dest, dest, text, 0, limit - start);</pre>
+     * 
+     * @param start the beginning index, inclusive; <code>0 <= start <=
+     * limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit <=
+     * length()</code>.
+     * @param dest the destination index.  The characters from
+     * <code>start..limit-1</code> will be copied to <code>dest</code>.
+     * Implementations of this method may assume that <code>dest <= start ||
+     * dest >= limit</code>.
+     * @stable ICU 2.0
+     */
+    void copy(int start, int limit, int dest);
+    
+    /**
+     * Returns true if this object contains metadata.  If a
+     * Replaceable object has metadata, calls to the Replaceable API
+     * must be made so as to preserve metadata.  If it does not, calls
+     * to the Replaceable API may be optimized to improve performance.
+     * @return true if this object contains metadata
+     * @stable ICU 2.2
+     */
+    boolean hasMetaData();
+}
diff --git a/src/com/ibm/icu/text/ReplaceableContextIterator.java b/src/com/ibm/icu/text/ReplaceableContextIterator.java
new file mode 100644
index 0000000..4015838
--- /dev/null
+++ b/src/com/ibm/icu/text/ReplaceableContextIterator.java
@@ -0,0 +1,197 @@
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2004-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+*******************************************************************************
+*   file name:  ReplaceableContextIterator.java
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2005feb04
+*   created by: Markus W. Scherer
+*
+*   Implementation of UCaseProps.ContextIterator, iterates over a Replaceable.
+*   Java port of casetrn.cpp/utrans_rep_caseContextIterator().
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCaseProps;
+
+/**
+ * Implementation of UCaseProps.ContextIterator, iterates over a Replaceable.
+ * See casetrn.cpp/utrans_rep_caseContextIterator().
+ * See also UCharacter.StringContextIterator.
+ * @internal
+ */
+class ReplaceableContextIterator implements UCaseProps.ContextIterator {
+    /**
+     * Constructor.
+     * @param rep Replaceable to iterate over. 
+     */
+    ReplaceableContextIterator() {
+        this.rep=null;
+        limit=cpStart=cpLimit=index=contextStart=contextLimit=0;
+        dir=0;
+        reachedLimit=false;
+    }
+
+    /**
+     * Set the text for iteration.
+     * @param rep Iteration text.
+     */
+    public void setText(Replaceable rep) {
+        this.rep=rep;
+        limit=contextLimit=rep.length();
+        cpStart=cpLimit=index=contextStart=0;
+        dir=0;
+        reachedLimit=false;
+    }
+
+    /**
+     * Set the index where nextCaseMapCP() is to start iterating.
+     * @param index Iteration start index for nextCaseMapCP().
+     */
+    public void setIndex(int index) {
+        cpStart=cpLimit=index;
+        this.index=0;
+        dir=0;
+        reachedLimit=false;
+    }
+
+    /**
+     * Get the index of where the code point currently being case-mapped starts.
+     * @return The start index of the current code point.
+     */
+    public int getCaseMapCPStart() {
+        return cpStart;
+    }
+
+    /**
+     * Set the iteration limit for nextCaseMapCP() to an index within the string.
+     * If the limit parameter is negative or past the string, then the
+     * string length is restored as the iteration limit.
+     *
+     * @param lim The iteration limit.
+     */
+    public void setLimit(int lim) {
+        if(0<=lim && lim<=rep.length()) {
+            limit=lim;
+        } else {
+            limit=rep.length();
+        }
+        reachedLimit=false;
+    }
+
+    /**
+     * Set the start and limit indexes for context iteration with next().
+     * @param contextStart Start of context for next().
+     * @param contextLimit Limit of context for next().
+     */
+    public void setContextLimits(int contextStart, int contextLimit) {
+        if(contextStart<0) {
+            this.contextStart=0;
+        } else if(contextStart<=rep.length()) {
+            this.contextStart=contextStart;
+        } else {
+            this.contextStart=rep.length();
+        }
+        if(contextLimit<this.contextStart) {
+            this.contextLimit=this.contextStart;
+        } else if(contextLimit<=rep.length()) {
+            this.contextLimit=contextLimit;
+        } else {
+            this.contextLimit=rep.length();
+        }
+        reachedLimit=false;
+    }
+
+    /**
+     * Iterate forward through the string to fetch the next code point
+     * to be case-mapped, and set the context indexes for it.
+     *
+     * @return The next code point to be case-mapped, or <0 when the iteration is done.
+     */
+    public int nextCaseMapCP() {
+        int c;
+        if(cpLimit<limit) {
+            cpStart=cpLimit;
+            c=rep.char32At(cpLimit);
+            cpLimit+=UTF16.getCharCount(c);
+            return c;
+        } else {
+            return -1;
+        }
+    }
+
+    /**
+     * Replace the current code point by its case mapping,
+     * and update the indexes.
+     *
+     * @param text Replacement text.
+     * @return The delta for the change of the text length.
+     */
+    public int replace(String text) {
+        int delta=text.length()-(cpLimit-cpStart);
+        rep.replace(cpStart, cpLimit, text);
+        cpLimit+=delta;
+        limit+=delta;
+        contextLimit+=delta;
+        return delta;
+    }
+
+    /**
+     * Did forward context iteration with next() reach the iteration limit?
+     * @return Boolean value.
+     */
+    public boolean didReachLimit() {
+        return reachedLimit;
+    }
+
+    // implement UCaseProps.ContextIterator
+    public void reset(int direction) {
+        if(direction>0) {
+            /* reset for forward iteration */
+            this.dir=1;
+            index=cpLimit;
+        } else if(direction<0) {
+            /* reset for backward iteration */
+            this.dir=-1;
+            index=cpStart;
+        } else {
+            // not a valid direction
+            this.dir=0;
+            index=0;
+        }
+        reachedLimit=false;
+    }
+
+    public int next() {
+        int c;
+
+        if(dir>0) {
+            if(index<contextLimit) {
+                c=rep.char32At(index);
+                index+=UTF16.getCharCount(c);
+                return c;
+            } else {
+                // forward context iteration reached the limit
+                reachedLimit=true;
+            }
+        } else if(dir<0 && index>contextStart) {
+            c=rep.char32At(index-1);
+            index-=UTF16.getCharCount(c);
+            return c;
+        }
+        return -1;
+    }
+
+    // variables
+    protected Replaceable rep;
+    protected int index, limit, cpStart, cpLimit, contextStart, contextLimit;
+    protected int dir; // 0=initial state  >0=forward  <0=backward
+    protected boolean reachedLimit;
+}
diff --git a/src/com/ibm/icu/text/ReplaceableString.java b/src/com/ibm/icu/text/ReplaceableString.java
new file mode 100644
index 0000000..ef4c94a
--- /dev/null
+++ b/src/com/ibm/icu/text/ReplaceableString.java
@@ -0,0 +1,197 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * <code>ReplaceableString</code> is an adapter class that implements the
+ * <code>Replaceable</code> API around an ordinary <code>StringBuffer</code>.
+ *
+ * <p><em>Note:</em> This class does not support attributes and is not
+ * intended for general use.  Most clients will need to implement
+ * {@link Replaceable} in their text representation class.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @see Replaceable
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public class ReplaceableString implements Replaceable {
+    private StringBuffer buf;
+
+    /**
+     * Construct a new object with the given initial contents.
+     * @param str initial contents
+     * @stable ICU 2.0
+     */
+    public ReplaceableString(String str) {
+        buf = new StringBuffer(str);
+    }
+
+    /**
+     * Construct a new object using <code>buf</code> for internal
+     * storage.  The contents of <code>buf</code> at the time of
+     * construction are used as the initial contents.  <em>Note!
+     * Modifications to <code>buf</code> will modify this object, and
+     * vice versa.</em>
+     * @param buf object to be used as internal storage
+     * @stable ICU 2.0
+     */
+    public ReplaceableString(StringBuffer buf) {
+        this.buf = buf;
+    }
+
+    /**
+     * Construct a new empty object.
+     * @stable ICU 2.0
+     */
+    public ReplaceableString() {
+        buf = new StringBuffer();
+    }
+
+    /**
+     * Return the contents of this object as a <code>String</code>.
+     * @return string contents of this object
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        return buf.toString();
+    }
+
+    /**
+     * Return a substring of the given string.
+     * @stable ICU 2.0
+     */
+    public String substring(int start, int limit) {
+        return buf.substring(start, limit);
+    }
+
+    /**
+     * Return the number of characters contained in this object.
+     * <code>Replaceable</code> API.
+     * @stable ICU 2.0
+     */ 
+    public int length() {
+        return buf.length();
+    }
+
+    /**
+     * Return the character at the given position in this object.
+     * <code>Replaceable</code> API.
+     * @param offset offset into the contents, from 0 to
+     * <code>length()</code> - 1
+     * @stable ICU 2.0
+     */
+    public char charAt(int offset) {
+        return buf.charAt(offset);
+    }
+
+    /**
+     * Return the 32-bit code point at the given 16-bit offset into
+     * the text.  This assumes the text is stored as 16-bit code units
+     * with surrogate pairs intermixed.  If the offset of a leading or
+     * trailing code unit of a surrogate pair is given, return the
+     * code point of the surrogate pair.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return 32-bit code point of text at given offset
+     * @stable ICU 2.0
+     */
+    public int char32At(int offset) {
+        return UTF16.charAt(buf, offset);
+    }
+
+    /**
+     * Copies characters from this object into the destination
+     * character array.  The first character to be copied is at index
+     * <code>srcStart</code>; the last character to be copied is at
+     * index <code>srcLimit-1</code> (thus the total number of
+     * characters to be copied is <code>srcLimit-srcStart</code>). The
+     * characters are copied into the subarray of <code>dst</code>
+     * starting at index <code>dstStart</code> and ending at index
+     * <code>dstStart + (srcLimit-srcStart) - 1</code>.
+     *
+     * @param srcStart the beginning index to copy, inclusive; <code>0
+     * <= start <= limit</code>.
+     * @param srcLimit the ending index to copy, exclusive;
+     * <code>start <= limit <= length()</code>.
+     * @param dst the destination array.
+     * @param dstStart the start offset in the destination array.
+     * @stable ICU 2.0
+     */
+    public void getChars(int srcStart, int srcLimit, char dst[], int dstStart) {
+        Utility.getChars(buf, srcStart, srcLimit, dst, dstStart);
+    }
+
+    /**
+     * Replace zero or more characters with new characters.
+     * <code>Replaceable</code> API.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param text new text to replace characters <code>start</code> to
+     * <code>limit - 1</code>
+     * @stable ICU 2.0
+     */
+    public void replace(int start, int limit, String text) {
+        buf.replace(start, limit, text);
+    }
+
+    /**
+     * Replace a substring of this object with the given text.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param chars the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @param charsStart the beginning index into <code>chars</code>,
+     * inclusive; <code>0 <= start <= limit</code>.
+     * @param charsLen the number of characters of <code>chars</code>.
+     * @stable ICU 2.0
+     */
+    public void replace(int start, int limit, char[] chars,
+                        int charsStart, int charsLen) {
+        buf.delete(start, limit);
+        buf.insert(start, chars, charsStart, charsLen);
+    }
+
+    /**
+     * Copy a substring of this object, retaining attribute (out-of-band)
+     * information.  This method is used to duplicate or reorder substrings.
+     * The destination index must not overlap the source range.
+     * 
+     * @param start the beginning index, inclusive; <code>0 <= start <=
+     * limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit <=
+     * length()</code>.
+     * @param dest the destination index.  The characters from
+     * <code>start..limit-1</code> will be copied to <code>dest</code>.
+     * Implementations of this method may assume that <code>dest <= start ||
+     * dest >= limit</code>.
+     * @stable ICU 2.0
+     */
+    public void copy(int start, int limit, int dest) {
+        if (start == limit && start >= 0 && start <= buf.length()) {
+            return;
+        }
+        char[] text = new char[limit - start];
+        getChars(start, limit, text, 0);
+        replace(dest, dest, text, 0, limit - start);
+    }
+    
+    /**
+     * Implements Replaceable
+     * @stable ICU 2.0
+     */
+    public boolean hasMetaData() {
+        return false;
+    }
+}
diff --git a/src/com/ibm/icu/text/RuleBasedBreakIterator.java b/src/com/ibm/icu/text/RuleBasedBreakIterator.java
new file mode 100644
index 0000000..cc92d89
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedBreakIterator.java
@@ -0,0 +1,1371 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008 International Business Machines Corporation and          *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.ICUDebug;
+
+
+/**
+ * Rule Based Break Iterator 
+ * This is a port of the C++ class RuleBasedBreakIterator from ICU4C.
+ * 
+ * @stable ICU 2.0
+ */
+public class RuleBasedBreakIterator extends BreakIterator {
+
+    
+    //=======================================================================
+    // Constructors & Factories
+    //=======================================================================
+    
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    public RuleBasedBreakIterator() {
+    }
+
+    /**
+     * Create a break iterator from a precompiled set of rules.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static RuleBasedBreakIterator getInstanceFromCompiledRules(InputStream is) throws IOException {
+        RuleBasedBreakIterator  This = new RuleBasedBreakIterator();
+        This.fRData = RBBIDataWrapper.get(is);
+        return This;   
+    }
+    
+    /*private RuleBasedBreakIterator(RuleBasedBreakIterator other) {
+        // TODO: check types.
+        fRData = other.fRData;
+        if (fText != null) {
+            fText = (CharacterIterator)(other.fText.clone());   
+        }
+    }*/
+
+    /**
+     * Construct a RuleBasedBreakIterator from a set of rules supplied as a string.
+     * @param rules The break rules to be used.
+     * @stable ICU 2.2
+     */
+    public RuleBasedBreakIterator(String rules)  {
+        init();
+        try {
+            ByteArrayOutputStream ruleOS = new ByteArrayOutputStream();
+            compileRules(rules, ruleOS);
+            byte [] ruleBA = ruleOS.toByteArray();
+            InputStream ruleIS = new ByteArrayInputStream(ruleBA);
+            fRData = RBBIDataWrapper.get(ruleIS);
+        } catch (IOException e) {
+            // An IO exception can only arrive here if there is a bug in the RBBI Rule compiler,
+            //  causing bogus compiled rules to be produced, but with no compile error raised.
+            RuntimeException rte = new RuntimeException("RuleBasedBreakIterator rule compilation internal error: "
+                    + e.getMessage());
+            throw rte;
+        }
+    }
+    
+    
+    //=======================================================================
+    // Boilerplate
+    //=======================================================================
+    
+    /**
+     * Clones this iterator.
+     * @return A newly-constructed RuleBasedBreakIterator with the same
+     * behavior as this one.
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        RuleBasedBreakIterator result = (RuleBasedBreakIterator)super.clone();
+        if (fText != null) {
+            result.fText = (CharacterIterator)(fText.clone());   
+        }
+        return result;
+    }
+
+    /**
+     * Returns true if both BreakIterators are of the same class, have the same
+     * rules, and iterate over the same text.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object that) {
+        try {
+            RuleBasedBreakIterator other = (RuleBasedBreakIterator) that;
+            if (fRData != other.fRData && (fRData == null || other.fRData == null)) {
+                return false;   
+            }
+            if (fRData != null && other.fRData != null && 
+                    (!fRData.fRuleSource.equals(other.fRData.fRuleSource))) {
+                return false;
+            }
+            if (fText == null && other.fText == null) {
+                return true;   
+            }
+            if (fText == null || other.fText == null) {
+                return false;   
+            }
+            return fText.equals(other.fText);
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+     }
+
+    /**
+     * Returns the description (rules) used to create this iterator.
+     * (In ICU4C, the same function is RuleBasedBreakIterator::getRules())
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        String   retStr = null;
+        if (fRData != null) {
+            retStr =  fRData.fRuleSource;
+        }
+        return retStr;
+    }
+
+    /**
+     * Compute a hashcode for this BreakIterator
+     * @return A hash code
+     * @stable ICU 2.0
+     */
+    public int hashCode()
+    {
+        return fRData.fRuleSource.hashCode(); 
+    }
+
+    
+    /** 
+     * Tag value for "words" that do not fit into any of other categories. 
+     * Includes spaces and most punctuation. 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_NONE           = 0;
+
+    /**
+     * Upper bound for tags for uncategorized words. 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_NONE_LIMIT     = 100;
+
+    /**
+     * Tag value for words that appear to be numbers, lower limit. 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_NUMBER         = 100;
+
+    /** 
+     * Tag value for words that appear to be numbers, upper limit.
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_NUMBER_LIMIT   = 200;
+
+    /** 
+     * Tag value for words that contain letters, excluding
+     * hiragana, katakana or ideographic characters, lower limit. 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_LETTER         = 200;
+
+    /** 
+     * Tag value for words containing letters, upper limit 
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_LETTER_LIMIT   = 300;
+
+    /** 
+     * Tag value for words containing kana characters, lower limit
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_KANA           = 300;
+
+    /** 
+     * Tag value for words containing kana characters, upper limit
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_KANA_LIMIT     = 400;
+
+    /**
+     * Tag value for words containing ideographic characters, lower limit
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_IDEO           = 400;
+
+    /**
+     * Tag value for words containing ideographic characters, upper limit
+     * @draft ICU 3.0 
+     * @provisional This is a draft API and might change in a future release of ICU.
+     */
+    public static final int WORD_IDEO_LIMIT     = 500;
+
+   
+    
+    
+    private static final int  START_STATE = 1;     // The state number of the starting state
+    private static final int  STOP_STATE  = 0;     // The state-transition value indicating "stop"
+    
+    // RBBIRunMode - the state machine runs an extra iteration at the beginning and end
+    //               of user text.  A variable with this enum type keeps track of where we
+    //               are.  The state machine only fetches user text input while in RUN mode.
+    private static final int  RBBI_START  = 0;
+    private static final int  RBBI_RUN    = 1;
+    private static final int  RBBI_END   = 2;
+
+    /*
+     * The character iterator through which this BreakIterator accesses the text.
+     */
+    private CharacterIterator   fText = new java.text.StringCharacterIterator("");
+    
+    /**
+     * The rule data for this BreakIterator instance
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected RBBIDataWrapper     fRData;
+    
+    /*
+     * Index of the Rule {tag} values for the most recent match. 
+     */
+    private int                 fLastRuleStatusIndex;
+
+    /*
+     * Rule tag value valid flag.
+     * Some iterator operations don't intrinsically set the correct tag value.
+     * This flag lets us lazily compute the value if we are ever asked for it.
+     */
+    private boolean             fLastStatusIndexValid;
+
+    /**
+     * Counter for the number of characters encountered with the "dictionary"
+     *   flag set.  Normal RBBI iterators don't use it, although the code
+     *   for updating it is live.  Dictionary Based break iterators (a subclass
+     *   of us) access this field directly.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+     protected int fDictionaryCharCount;
+
+    /**
+     * Debugging flag.  Trace operation of state machine when true.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static boolean       fTrace;
+
+    /*
+     * ICU debug argument name for RBBI
+     */
+    private static final String RBBI_DEBUG_ARG = "rbbi";
+
+    /**
+     * Dump the contents of the state table and character classes for this break iterator.
+     * For debugging only.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void dump() {
+        this.fRData.dump();   
+    }
+
+    private static boolean debugInitDone = false;
+    
+    private void init() {
+        fLastStatusIndexValid = true;
+        fDictionaryCharCount  = 0;
+
+ 
+        if (debugInitDone == false) {
+            fTrace = ICUDebug.enabled(RBBI_DEBUG_ARG)
+                && ICUDebug.value(RBBI_DEBUG_ARG).indexOf("trace") >= 0;
+            debugInitDone = true;
+        }
+    }
+
+    private static void compileRules(String rules, OutputStream ruleBinary) throws IOException {
+        RBBIRuleBuilder.compileRules(rules, ruleBinary);
+    }
+    
+    //=======================================================================
+    // BreakIterator overrides
+    //=======================================================================
+
+    /**
+     * Sets the current iteration position to the beginning of the text.
+     * (i.e., the CharacterIterator's starting offset).
+     * @return The offset of the beginning of the text.
+     * @stable ICU 2.0
+     */
+    public int first() {
+        fLastRuleStatusIndex  = 0;
+        fLastStatusIndexValid = true;
+        if (fText == null) {
+            return BreakIterator.DONE;
+        }
+        fText.first();
+        return fText.getIndex();
+    }
+    
+    
+    /**
+     * Sets the current iteration position to the end of the text.
+     * (i.e., the CharacterIterator's ending offset).
+     * @return The text's past-the-end offset.
+     * @stable ICU 2.0
+     */
+    public int last() {
+        if (fText == null) {
+            fLastRuleStatusIndex  = 0;
+            fLastStatusIndexValid = true;
+            return BreakIterator.DONE;
+        }
+
+        // I'm not sure why, but t.last() returns the offset of the last character,
+        // rather than the past-the-end offset
+        //
+        //   (It's so a loop like for(p=it.last(); p!=DONE; p=it.previous()) ...
+        //     will work correctly.)
+
+
+        fLastStatusIndexValid = false;
+        int pos = fText.getEndIndex();
+        fText.setIndex(pos);
+        return pos;
+    }
+    
+    
+    /**
+     * Advances the iterator either forward or backward the specified number of steps.
+     * Negative values move backward, and positive values move forward.  This is
+     * equivalent to repeatedly calling next() or previous().
+     * @param n The number of steps to move.  The sign indicates the direction
+     * (negative is backwards, and positive is forwards).
+     * @return The character offset of the boundary position n boundaries away from
+     * the current one.
+     * @stable ICU 2.0
+     */
+    public int next(int n) {
+        int result = current();
+        while (n > 0) {
+            result = handleNext();
+            --n;
+        }
+        while (n < 0) {
+            result = previous();
+            ++n;
+        }
+        return result;
+    }
+    
+    
+    /**
+     * Advances the iterator to the next boundary position.
+     * @return The position of the first boundary after this one.
+     * @stable ICU 2.0
+     */
+    public int next() {
+        return handleNext();
+    }
+    
+    
+    /**
+     * Moves the iterator backwards, to the last boundary preceding this one.
+     * @return The position of the last boundary position preceding this one.
+     * @stable ICU 2.0
+     */
+    public int previous() {
+        // if we're already sitting at the beginning of the text, return DONE
+        if (fText == null || current() == fText.getBeginIndex()) {
+            fLastRuleStatusIndex  = 0;
+            fLastStatusIndexValid = true;
+            return BreakIterator.DONE;
+        }
+
+        if (fRData.fSRTable != null || fRData.fSFTable != null) {
+            return handlePrevious(fRData.fRTable);
+        }
+
+        // old rule syntax
+        // set things up.  handlePrevious() will back us up to some valid
+        // break position before the current position (we back our internal
+        // iterator up one step to prevent handlePrevious() from returning
+        // the current position), but not necessarily the last one before
+        // where we started
+
+        int       start = current();
+
+        CIPrevious32(fText);
+        int       lastResult    = handlePrevious(fRData.fRTable);
+        if (lastResult == BreakIterator.DONE) {
+            lastResult = fText.getBeginIndex();
+            fText.setIndex(lastResult);
+        }
+        int       result        = lastResult;
+        int       lastTag       = 0;
+        boolean   breakTagValid = false;
+
+        // iterate forward from the known break position until we pass our
+        // starting point.  The last break position before the starting
+        // point is our return value
+
+        for (;;) {
+            result         = handleNext();
+            if (result == BreakIterator.DONE || result >= start) {
+                break;
+            }
+            lastResult     = result;
+            lastTag        = fLastRuleStatusIndex;
+            breakTagValid  = true;
+        }
+
+        // fLastBreakTag wants to have the value for section of text preceding
+        // the result position that we are to return (in lastResult.)  If
+        // the backwards rules overshot and the above loop had to do two or more
+        // handleNext()s to move up to the desired return position, we will have a valid
+        // tag value. But, if handlePrevious() took us to exactly the correct result positon,
+        // we wont have a tag value for that position, which is only set by handleNext().
+
+        // set the current iteration position to be the last break position
+        // before where we started, and then return that value
+        fText.setIndex(lastResult);
+        fLastRuleStatusIndex  = lastTag;       // for use by getRuleStatus()
+        fLastStatusIndexValid = breakTagValid;
+        return lastResult;
+    }
+    /**
+     * Sets the iterator to refer to the first boundary position following
+     * the specified position.
+     * @param offset The position from which to begin searching for a break position.
+     * @return The position of the first break after the current position.
+     * @stable ICU 2.0
+     */
+    public int following(int offset) {
+        // if the offset passed in is already past the end of the text,
+        // just return DONE; if it's before the beginning, return the
+        // text's starting offset
+        fLastRuleStatusIndex  = 0;
+        fLastStatusIndexValid = true;
+        if (fText == null || offset >= fText.getEndIndex()) {
+            last();
+            return next();
+        }
+        else if (offset < fText.getBeginIndex()) {
+            return first();
+        }
+
+        // otherwise, set our internal iteration position (temporarily)
+        // to the position passed in.  If this is the _beginning_ position,
+        // then we can just use next() to get our return value
+
+        int result = 0;
+
+        if (fRData.fSRTable != null) {
+            // Safe Point Reverse rules exist.
+            //   This allows us to use the optimum algorithm.
+            fText.setIndex(offset);
+            // move forward one codepoint to prepare for moving back to a
+            // safe point.
+            // this handles offset being between a supplementary character
+            CINext32(fText);
+            // handlePrevious will move most of the time to < 1 boundary away
+            handlePrevious(fRData.fSRTable);
+            result = next();
+            while (result <= offset) {
+                result = next();
+            }
+            return result;
+        }
+        if (fRData.fSFTable != null) {
+            // No Safe point reverse table, but there is a safe pt forward table.
+            // 
+            fText.setIndex(offset);
+            CIPrevious32(fText);
+            // handle next will give result >= offset
+            handleNext(fRData.fSFTable);
+            // previous will give result 0 or 1 boundary away from offset,
+            // most of the time
+            // we have to
+            int oldresult = previous();
+            while (oldresult > offset) {
+                result = previous();
+                if (result <= offset) {
+                    return oldresult;
+                }
+                oldresult = result;
+            }
+            result = next();
+            if (result <= offset) {
+                return next();
+            }
+            return result;
+        }
+        // otherwise, we have to sync up first.  Use handlePrevious() to back
+        // us up to a known break position before the specified position (if
+        // we can determine that the specified position is a break position,
+        // we don't back up at all).  This may or may not be the last break
+        // position at or before our starting position.  Advance forward
+        // from here until we've passed the starting position.  The position
+        // we stop on will be the first break position after the specified one.
+        // old rule syntax
+
+        fText.setIndex(offset);
+        if (offset == fText.getBeginIndex()) {
+            return handleNext();
+        }
+        result = previous();
+
+        while (result != BreakIterator.DONE && result <= offset) {
+            result = next();
+        }
+
+        return result;
+    }
+    /**
+     * Sets the iterator to refer to the last boundary position before the
+     * specified position.
+     * @param offset The position to begin searching for a break from.
+     * @return The position of the last boundary before the starting position.
+     * @stable ICU 2.0
+     */
+    public int preceding(int offset) {
+        // if the offset passed in is already past the end of the text,
+        // just return DONE; if it's before the beginning, return the
+
+        // text's starting offset
+        if (fText == null || offset > fText.getEndIndex()) {
+            // return BreakIterator::DONE;
+            return last();
+        }
+        else if (offset < fText.getBeginIndex()) {
+            return first();
+        }
+
+        // if we start by updating the current iteration position to the
+        // position specified by the caller, we can just use previous()
+        // to carry out this operation
+
+        int  result;
+        if (fRData.fSFTable != null) {
+            /// todo synwee
+            // new rule syntax
+            fText.setIndex(offset);
+            // move backwards one codepoint to prepare for moving forwards to a
+            // safe point.
+            // this handles offset being between a supplementary character
+            CIPrevious32(fText);
+            handleNext(fRData.fSFTable);
+            result = previous();
+            while (result >= offset) {
+                result = previous();
+            }
+            return result;
+        }
+        if (fRData.fSRTable != null) {
+            // backup plan if forward safe table is not available
+            fText.setIndex(offset);
+            CINext32(fText);
+            // handle previous will give result <= offset
+            handlePrevious(fRData.fSRTable);
+
+            // next will give result 0 or 1 boundary away from offset,
+            // most of the time
+            // we have to
+            int oldresult = next();
+            while (oldresult < offset) {
+                result = next();
+                if (result >= offset) {
+                    return oldresult;
+                }
+                oldresult = result;
+            }
+            result = previous();
+            if (result >= offset) {
+                return previous();
+            }
+            return result;
+        }
+
+        // old rule syntax
+        fText.setIndex(offset);
+        return previous();
+    }
+
+    /**
+     * Throw IllegalArgumentException unless begin <= offset < end.
+     * @stable ICU 2.0
+     */
+    protected static final void checkOffset(int offset, CharacterIterator text) {
+        if (offset < text.getBeginIndex() || offset > text.getEndIndex()) {
+            throw new IllegalArgumentException("offset out of bounds");
+        }
+    }
+
+
+/**
+ * Returns true if the specfied position is a boundary position.  As a side
+ * effect, leaves the iterator pointing to the first boundary position at
+ * or after "offset".
+ * @param offset the offset to check.
+ * @return True if "offset" is a boundary position.
+ * @stable ICU 2.0
+ */
+public boolean isBoundary(int offset) {
+    checkOffset(offset, fText);
+    
+    // the beginning index of the iterator is always a boundary position by definition
+    if (offset == fText.getBeginIndex()) {
+        first();       // For side effects on current position, tag values.
+        return true;
+    }
+
+    if (offset == fText.getEndIndex()) {
+        last();       // For side effects on current position, tag values.
+        return true;
+    }
+
+    // otherwise, we can use following() on the position before the specified
+    // one and return true if the position we get back is the one the user
+    // specified
+    
+    // return following(offset - 1) == offset;
+    // TODO:  check whether it is safe to revert to the simpler offset-1 code
+    //         The safe rules may take care of unpaired surrogates ok.
+    fText.setIndex(offset);
+    CIPrevious32(fText);
+    int  pos = fText.getIndex();
+    boolean result = following(pos) == offset;
+    return result;
+}
+
+/**
+ * Returns the current iteration position.
+ * @return The current iteration position.
+ * @stable ICU 2.0
+ */
+public int current() {
+    return (fText != null) ? fText.getIndex() : BreakIterator.DONE;
+    }
+
+
+
+private void makeRuleStatusValid() {
+    if (fLastStatusIndexValid == false) {
+        //  No cached status is available.
+        if (fText == null || current() == fText.getBeginIndex()) {
+            //  At start of text, or there is no text.  Status is always zero.
+            fLastRuleStatusIndex = 0;
+            fLastStatusIndexValid = true;
+        } else {
+            //  Not at start of text.  Find status the tedious way.
+            int pa = current();
+            previous();
+            int pb = next();
+            Assert.assrt (pa == pb);
+        }
+        Assert.assrt(fLastStatusIndexValid == true);
+        Assert.assrt(fLastRuleStatusIndex >= 0  &&  fLastRuleStatusIndex < fRData.fStatusTable.length);
+    }
+}
+
+
+/**
+ * Return the status tag from the break rule that determined the most recently
+ * returned break position.  The values appear in the rule source
+ * within brackets, {123}, for example.  For rules that do not specify a
+ * status, a default value of 0 is returned.  If more than one rule applies,
+ * the numerically largest of the possible status values is returned.
+ * <p>
+ * Of the standard types of ICU break iterators, only the word break
+ * iterator provides status values.  The values are defined in
+ * class RuleBasedBreakIterator, and allow distinguishing between words
+ * that contain alphabetic letters, "words" that appear to be numbers,
+ * punctuation and spaces, words containing ideographic characters, and
+ * more.  Call <code>getRuleStatus</code> after obtaining a boundary
+ * position from <code>next()<code>, <code>previous()</code>, or 
+ * any other break iterator functions that returns a boundary position.
+ * <p>
+ * @return the status from the break rule that determined the most recently
+ * returned break position.
+ *
+ * @draft ICU 3.0
+ * @provisional This is a draft API and might change in a future release of ICU.
+ */
+
+public int  getRuleStatus() {
+    makeRuleStatusValid();
+    //   Status records have this form:
+    //           Count N         <--  fLastRuleStatusIndex points here.
+    //           Status val 0
+    //           Status val 1
+    //              ...
+    //           Status val N-1  <--  the value we need to return
+    //   The status values are sorted in ascending order.
+    //   This function returns the last (largest) of the array of status values.
+    int  idx = fLastRuleStatusIndex + fRData.fStatusTable[fLastRuleStatusIndex];
+    int  tagVal = fRData.fStatusTable[idx];
+
+    return tagVal;
+}
+
+
+
+/**
+ * Get the status (tag) values from the break rule(s) that determined the most 
+ * recently returned break position.  The values appear in the rule source
+ * within brackets, {123}, for example.  The default status value for rules
+ * that do not explicitly provide one is zero.
+ * <p>
+ * The status values used by the standard ICU break rules are defined
+ * as public constants in class RuleBasedBreakIterator.
+ * <p>
+ * If the size  of the output array is insufficient to hold the data,
+ *  the output will be truncated to the available length.  No exception
+ *  will be thrown.
+ *
+ * @param fillInArray an array to be filled in with the status values.  
+ * @return          The number of rule status values from rules that determined 
+ *                  the most recent boundary returned by the break iterator.
+ *                  In the event that the array is too small, the return value
+ *                  is the total number of status values that were available,
+ *                  not the reduced number that were actually returned.
+ * @draft ICU 3.0
+ * @provisional This is a draft API and might change in a future release of ICU.
+ */
+public int getRuleStatusVec(int[] fillInArray) {
+    makeRuleStatusValid();
+    int numStatusVals = fRData.fStatusTable[fLastRuleStatusIndex];
+    if (fillInArray != null) {  
+        int numToCopy = Math.min(numStatusVals, fillInArray.length);
+        for (int i=0; i<numToCopy; i++) {
+            fillInArray[i] = fRData.fStatusTable[fLastRuleStatusIndex + i + 1];
+        }
+    }
+    return numStatusVals;
+ }
+
+
+/**
+ * Return a CharacterIterator over the text being analyzed.  This version
+ * of this method returns the actual CharacterIterator we're using internally.
+ * Changing the state of this iterator can have undefined consequences.  If
+ * you need to change it, clone it first.
+ * @return An iterator over the text being analyzed.
+ * @stable ICU 2.0
+ */
+    public CharacterIterator getText() {
+        return fText;
+    }
+
+
+    /**
+     * Set the iterator to analyze a new piece of text.  This function resets
+     * the current iteration position to the beginning of the text.
+     * @param newText An iterator over the text to analyze.
+     * @stable ICU 2.0
+     */
+    public void setText(CharacterIterator newText) {
+        fText = newText;
+        this.first();
+    }
+    
+    /**
+     * Control debug, trace and dump options.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected static String fDebugEnv = ICUDebug.enabled(RBBI_DEBUG_ARG) ?
+                                        ICUDebug.value(RBBI_DEBUG_ARG) : null;
+
+    
+    // 32 bit Char value returned from when an iterator has run out of range.
+    //     Positive value so fast case (not end, not surrogate) can be checked
+    //     with a single test.
+    private static int CI_DONE32 = 0x7fffffff;
+    
+    /**
+     * Move the iterator forward to the next code point, and return that code point,
+     *   leaving the iterator positioned at char returned.
+     *   For Supplementary chars, the iterator is left positioned at the lead surrogate.
+     * @param ci  The character iterator
+     * @return    The next code point.
+     */
+     static int CINext32(CharacterIterator ci) {
+        // If the current position is at a surrogate pair, move to the trail surrogate
+        //   which leaves it in positon for underlying iterator's next() to work.
+        int c= ci.current();
+        if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE && c<=UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            c = ci.next();   
+            if (c<UTF16.TRAIL_SURROGATE_MIN_VALUE || c>UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+               c = ci.previous();   
+            }
+        }
+
+        // For BMP chars, this next() is the real deal.
+        c = ci.next();
+        
+        // If we might have a lead surrogate, we need to peak ahead to get the trail 
+        //  even though we don't want to really be positioned there.
+        if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            c = CINextTrail32(ci, c);   
+        }
+        
+        if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && c != CI_DONE32) {
+            // We got a supplementary char.  Back the iterator up to the postion
+            // of the lead surrogate.
+            ci.previous();   
+        }
+        return c;
+   }
+
+    
+    // Out-of-line portion of the in-line Next32 code.
+    // The call site does an initial ci.next() and calls this function
+    //    if the 16 bit value it gets is >= LEAD_SURROGATE_MIN_VALUE.
+    // NOTE:  we leave the underlying char iterator positioned in the
+    //        middle of a surroage pair.  ci.next() will work correctly
+    //        from there, but the ci.getIndex() will be wrong, and needs
+    //        adjustment.
+    private static int CINextTrail32(CharacterIterator ci, int lead) {
+        int retVal = lead;
+        if (lead <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            char  cTrail = ci.next();
+            if (UTF16.isTrailSurrogate(cTrail)) {
+                retVal = ((lead  - UTF16.LEAD_SURROGATE_MIN_VALUE) << 10) +
+                            (cTrail - UTF16.TRAIL_SURROGATE_MIN_VALUE) +
+                            UTF16.SUPPLEMENTARY_MIN_VALUE;
+            } else {
+                ci.previous();
+            }
+        } else {
+            if (lead == CharacterIterator.DONE && ci.getIndex() >= ci.getEndIndex()) {
+                retVal = CI_DONE32;
+            }
+        }
+        return retVal;
+    }
+       
+    private static int CIPrevious32(CharacterIterator ci) {
+        if (ci.getIndex() <= ci.getBeginIndex()) {
+            return CI_DONE32;   
+        }
+        char trail = ci.previous();
+        int retVal = trail;
+        if (UTF16.isTrailSurrogate(trail) && ci.getIndex()>ci.getBeginIndex()) {
+            char lead = ci.previous();
+            if (UTF16.isLeadSurrogate(lead)) {
+                retVal = (((int)lead  - UTF16.LEAD_SURROGATE_MIN_VALUE) << 10) +
+                          ((int)trail - UTF16.TRAIL_SURROGATE_MIN_VALUE) +
+                          UTF16.SUPPLEMENTARY_MIN_VALUE;
+            } else {
+                ci.next();
+            }           
+        }
+        return retVal;
+    }
+   
+    static int CICurrent32(CharacterIterator ci) {
+        char  lead   = ci.current();
+        int   retVal = lead;
+        if (retVal < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            return retVal;   
+        }
+        if (UTF16.isLeadSurrogate(lead)) {
+            int  trail = (int)ci.next();
+            ci.previous();
+            if (UTF16.isTrailSurrogate((char)trail)) {
+                retVal = ((lead  - UTF16.LEAD_SURROGATE_MIN_VALUE) << 10) +
+                         (trail - UTF16.TRAIL_SURROGATE_MIN_VALUE) +
+                         UTF16.SUPPLEMENTARY_MIN_VALUE;
+            }
+         } else {
+            if (lead == CharacterIterator.DONE) {
+                if (ci.getIndex() >= ci.getEndIndex())   {
+                    retVal = CI_DONE32;   
+                }
+            }
+         }
+        return retVal;
+    }
+    
+
+    //-----------------------------------------------------------------------------------
+    //
+    //      handleNext(void)    All forward iteration vectors through this function.
+    //                          NOTE:  This function is overridden by the dictionary base break iterator.
+    //                                 User level API functions go to the dbbi implementation
+    //                                     when the break iterator type is dbbi.
+    //                                 The DBBI implementation sometimes explicitly calls back to here, 
+    //                                     its inherited handleNext().
+    //                      
+    //-----------------------------------------------------------------------------------
+    int handleNext() {
+        return handleNext(fRData.fFTable);
+    }
+
+    /**
+     * The State Machine Engine for moving forward is here.
+     * This function is the heart of the RBBI run time engine.
+     * 
+     * @param stateTable
+     * @return the new iterator position
+     * 
+     * A note on supplementary characters and the position of underlying
+     * Java CharacterIterator:   Normally, a character iterator is positioned at
+     * the char most recently returned by next().  Within this function, when
+     * a supplementary char is being processed, the char iterator is left
+     * sitting on the trail surrogate, in the middle of the code point.
+     * This is different from everywhere else, where an iterator always
+     * points at the lead surrogate of a supplementary.
+     */
+    private int handleNext(short stateTable[]) {
+        int               state;
+        short             category        = 0;
+        int               mode;
+        int               row;
+        int               c;
+        int               lookaheadStatus = 0;
+        int               lookaheadTagIdx = 0;
+        int               result          = 0;
+        int               initialPosition = 0;
+        int               lookaheadResult = 0;
+        boolean          lookAheadHardBreak = 
+            (stateTable[RBBIDataWrapper.FLAGS+1] & RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK) != 0;
+        
+        if (fTrace) {
+            System.out.println("Handle Next   pos      char  state category");
+        }
+
+        // No matter what, handleNext alway correctly sets the break tag value.
+        fLastStatusIndexValid = true;
+        fLastRuleStatusIndex  = 0;
+
+        // if we're already at the end of the text, return DONE.
+        if (fText == null) {
+            fLastRuleStatusIndex = 0;
+            return BreakIterator.DONE;
+        }
+
+        // Set up the starting char
+        initialPosition = fText.getIndex();
+        result          = initialPosition;
+        c               = fText.current();
+        if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            c = CINextTrail32(fText, c);
+            if (c == CI_DONE32) {
+                fLastRuleStatusIndex = 0;
+                return BreakIterator.DONE;
+            }
+        }
+
+        // Set the initial state for the state machine
+        state           = START_STATE;
+        row             = fRData.getRowIndex(state); 
+        category        = 3;
+        mode            = RBBI_RUN;
+        if ((stateTable[RBBIDataWrapper.FLAGS+1] & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
+            category = 2;
+            mode     = RBBI_START;
+        }
+
+
+        // loop until we reach the end of the text or transition to state 0
+        while (state != STOP_STATE) {
+            if (c == CI_DONE32) {
+                // Reached end of input string.
+                if (mode == RBBI_END) {
+                    // We have already run the loop one last time with the
+                    // character set to the pseudo {eof} value. Now it is time
+                    // to unconditionally bail out.
+
+                    if (lookaheadResult > result) {
+                        // We ran off the end of the string with a pending
+                        // look-ahead match.
+                        // Treat this as if the look-ahead condition had been
+                        // met, and return
+                        // the match at the / position from the look-ahead rule.
+                        result = lookaheadResult;
+                        fLastRuleStatusIndex = lookaheadTagIdx;
+                        lookaheadStatus = 0;
+                    } else if (result == initialPosition) {
+                        // Ran off end, no match found.
+                        // move forward one
+                        fText.setIndex(initialPosition);
+                        CINext32(fText);
+                    }
+                    break;
+                }
+                // Run the loop one last time with the fake end-of-input character category
+                mode = RBBI_END;
+                category = 1;
+            }
+            
+            // Get the char category.  An incoming category of 1 or 2 mens that
+            //      we are preset for doing the beginning or end of input, and
+            //      that we shouldn't get a category from an actual text input character.
+            //
+            if (mode == RBBI_RUN) {
+                // look up the current character's character category, which tells us
+                // which column in the state table to look at.
+                //
+                category = (short) fRData.fTrie.getCodePointValue(c);
+                
+                // Check the dictionary bit in the character's category.
+                //    Counter is only used by dictionary based iterators (subclasses).
+                //    Chars that need to be handled by a dictionary have a flag bit set
+                //    in their category values.
+                //
+                if ((category & 0x4000) != 0)  {
+                    fDictionaryCharCount++;
+                    //  And off the dictionary flag bit.
+                    category &= ~0x4000;
+                }
+           }
+
+            if (fTrace) {
+                System.out.print("            " +  RBBIDataWrapper.intToString(fText.getIndex(), 5)); 
+                System.out.print(RBBIDataWrapper.intToHexString(c, 10));
+                System.out.println(RBBIDataWrapper.intToString(state,7) + RBBIDataWrapper.intToString(category,6));
+            }
+
+            // look up a state transition in the state table
+            //     state = row->fNextState[category];
+            state = stateTable[row + RBBIDataWrapper.NEXTSTATES + category];
+            row   = fRData.getRowIndex(state);  
+
+            // Advance to the next character.  
+            // If this is a beginning-of-input loop iteration, don't advance.
+            //    The next iteration will be processing the first real input character.
+            if (mode == RBBI_RUN) {
+                c = (int)fText.next(); 
+                if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+                    c = CINextTrail32(fText, c);
+                }
+            } else {
+                if (mode == RBBI_START) {
+                    mode = RBBI_RUN;
+                }
+            }
+             
+            if (stateTable[row + RBBIDataWrapper.ACCEPTING] == -1) {
+                // Match found, common case
+                result = fText.getIndex();
+                if (c >= UTF16.SUPPLEMENTARY_MIN_VALUE && c != CI_DONE32) {
+                    // The iterator has been left in the middle of a surrogate pair.
+                    // We want the start of it.
+                    result--;
+                }
+
+                //  Remember the break status (tag) values.
+                fLastRuleStatusIndex = stateTable[row + RBBIDataWrapper.TAGIDX];
+            }
+
+            if (stateTable[row + RBBIDataWrapper.LOOKAHEAD] != 0) {
+                if (lookaheadStatus != 0
+                    && stateTable[row + RBBIDataWrapper.ACCEPTING] == lookaheadStatus) {
+                    // Lookahead match is completed.  Set the result accordingly, but only
+                    // if no other rule has matched further in the mean time.
+                    result               = lookaheadResult;
+                    fLastRuleStatusIndex = lookaheadTagIdx;
+                    lookaheadStatus      = 0;
+                    // TODO: make a standalone hard break in a rule work.
+                    if (lookAheadHardBreak) {
+                        return result;
+                    }
+                    // Look-ahead completed, but other rules may match further.  Continue on.
+                    //   TODO:  junk this feature?  I don't think it's used anywhere.
+                    continue;
+                }
+
+                lookaheadResult = fText.getIndex();
+                if (c>=UTF16.SUPPLEMENTARY_MIN_VALUE && c!=CI_DONE32) {
+                    // The iterator has been left in the middle of a surrogate pair.
+                    // We want the beginning  of it.
+                    lookaheadResult--;
+                }
+                lookaheadStatus = stateTable[row + RBBIDataWrapper.LOOKAHEAD];
+                lookaheadTagIdx = stateTable[row + RBBIDataWrapper.TAGIDX];
+                continue;
+            }
+
+
+            if (stateTable[row + RBBIDataWrapper.ACCEPTING] != 0) {
+                // Because this is an accepting state, any in-progress look-ahead match
+                //   is no longer relavant.  Clear out the pending lookahead status.
+                lookaheadStatus = 0; 
+            }
+            
+         }        // End of state machine main loop
+
+        // The state machine is done.  Check whether it found a match...
+
+        // If the iterator failed to advance in the match engine, force it ahead by one.
+        //   (This really indicates a defect in the break rules.  They should always match
+        //    at least one character.)
+        if (result == initialPosition) {
+            result = fText.setIndex(initialPosition);
+            CINext32(fText);
+            result = fText.getIndex();
+        }
+
+        // Leave the iterator at our result position.
+        //   (we may have advanced beyond the last accepting position chasing after
+        //    longer matches that never completed.)
+        fText.setIndex(result);
+        if (fTrace) {
+            System.out.println("result = " + result);
+        }
+        return result;
+    }
+
+    
+    
+    private int handlePrevious(short stateTable[]) {
+        int            state;
+        int            category           = 0;
+        int            mode;
+        int            row;        
+        int            c;
+        int            lookaheadStatus    = 0;
+        int            result             = 0;
+        int            initialPosition    = 0;
+        int            lookaheadResult    = 0;
+        boolean        lookAheadHardBreak = 
+            (stateTable[RBBIDataWrapper.FLAGS+1] & RBBIDataWrapper.RBBI_LOOKAHEAD_HARD_BREAK) != 0;
+        
+        
+        if (fText == null || stateTable == null) {
+            return 0;
+        }
+        // handlePrevious() never gets the rule status.
+        // Flag the status as invalid; if the user ever asks for status, we will need
+        // to back up, then re-find the break position using handleNext(), which does
+        // get the status value.
+        fLastStatusIndexValid = false;
+        fLastRuleStatusIndex  = 0;
+        
+        // set up the starting char
+        initialPosition = fText.getIndex();
+        result          = initialPosition;
+        c               = CIPrevious32(fText);
+        
+        // Set up the initial state for the state machine
+        state = START_STATE;
+        row = fRData.getRowIndex(state);
+        category = 3;   // TODO:  obsolete?  from the old start/run mode scheme?
+        mode     = RBBI_RUN;
+        if ((stateTable[RBBIDataWrapper.FLAGS+1] & RBBIDataWrapper.RBBI_BOF_REQUIRED) != 0) {
+            category = 2;
+            mode     = RBBI_START;
+        }
+        
+        if (fTrace) {
+            System.out.println("Handle Prev   pos   char  state category ");
+        }
+        
+        // loop until we reach the beginning of the text or transition to state 0
+        //
+        mainLoop: for (;;) {
+            innerBlock: {
+                if (c == CI_DONE32) {
+                    // Reached end of input string.
+                    if (mode == RBBI_END || fRData.fHeader.fVersion == 1) {
+                        // Either this is the old (ICU 3.2 and earlier) format data which
+                        // does not support explicit support for matching {eof}, or
+                        // we have already done the {eof} iteration.  Now is the time
+                        // to unconditionally bail out.
+                        if (lookaheadResult < result) {
+                            // We ran off the end of the string with a pending look-ahead match.
+                            // Treat this as if the look-ahead condition had been met, and return
+                            //  the match at the / position from the look-ahead rule.
+                            result = lookaheadResult;
+                            lookaheadStatus = 0;
+                        } else if (result == initialPosition) {
+                            // Ran off start, no match found.
+                            // Move one position (towards the start, since we are doing previous.)
+                            fText.setIndex(initialPosition);
+                            CIPrevious32(fText);
+                        }
+                        break mainLoop;
+                    }
+                    mode = RBBI_END;
+                    category = 1;
+                }
+                
+                if (mode == RBBI_RUN) {
+                    // look up the current character's category, which tells us
+                    // which column in the state table to look at.
+                    //
+                    category = (short) fRData.fTrie.getCodePointValue(c);
+                    
+                    // Check the dictionary bit in the character's category.
+                    //    Counter is only used by dictionary based iterators (subclasses).
+                    //    Chars that need to be handled by a dictionary have a flag bit set
+                    //    in their category values.
+                    //
+                    if ((category & 0x4000) != 0)  {
+                        fDictionaryCharCount++;
+                        //  And off the dictionary flag bit.
+                        category &= ~0x4000;
+                    }
+                }
+                
+                
+                if (fTrace) {
+                    System.out.print("             " + fText.getIndex() + "   ");
+                    if (0x20 <= c && c < 0x7f) {
+                        System.out.print("  " + c + "  ");
+                    } else {
+                        System.out.print(" " + Integer.toHexString(c) + " ");
+                    }
+                    System.out.println(" " + state + "  " + category + " ");
+                }
+                
+                // State Transition - move machine to its next state
+                //
+                state = stateTable[row + RBBIDataWrapper.NEXTSTATES + category];
+                row = fRData.getRowIndex(state);
+                
+                if (stateTable[row + RBBIDataWrapper.ACCEPTING] == -1) {
+                    // Match found, common case, could have lookahead so we move
+                    // on to check it
+                    result = fText.getIndex();
+                }
+                
+                if (stateTable[row + RBBIDataWrapper.LOOKAHEAD] != 0) {
+                    if (lookaheadStatus != 0
+                            && stateTable[row + RBBIDataWrapper.ACCEPTING] == lookaheadStatus) {
+                        // Lookahead match is completed. Set the result
+                        // accordingly, but only
+                        // if no other rule has matched further in the mean
+                        // time.
+                        result = lookaheadResult;
+                        lookaheadStatus = 0;
+                        // TODO: make a standalone hard break in a rule work.
+                        
+                        if (lookAheadHardBreak) {
+                            break mainLoop;
+                        }
+                        // Look-ahead completed, but other rules may match further.
+                        // Continue on.
+                        // TODO: junk this feature?  I don't think that it's used anywhere.
+                        break innerBlock;
+                    }
+                    // Hit a possible look-ahead match. We are at the
+                    // position of the '/'. Remember this position.
+                    lookaheadResult = fText.getIndex();
+                    lookaheadStatus = stateTable[row + RBBIDataWrapper.LOOKAHEAD];
+                    break innerBlock;
+                } 
+                
+                // not lookahead...
+                if (stateTable[row + RBBIDataWrapper.ACCEPTING] != 0) {
+                    // This is a plain (non-look-ahead) accepting state.
+                    if (!lookAheadHardBreak) {
+                        // Clear out any pending look-ahead matches,
+                        // but only if not doing the lookAheadHardBreak option
+                        // which needs to force a break no matter what is going
+                        // on with the rest of the match, i.e. we can't abandon
+                        // a partially completed look-ahead match because
+                        // some other rule matched further than the '/' position
+                        // in the look-ahead match.
+                        lookaheadStatus = 0; 
+                    }
+                }
+                
+            } // end of innerBlock.  "break innerBlock" in above code comes out here.
+        
+        
+            if (state == STOP_STATE) {
+                // Normal loop exit is here
+                break mainLoop;
+            }
+        
+            // then move iterator position backwards one character
+            //
+            if (mode == RBBI_RUN) {
+                c = CIPrevious32(fText);
+            } else {
+                if (mode == RBBI_START) {
+                    mode = RBBI_RUN;
+                }
+            }
+        
+        
+        }   // End of the main loop.
+        
+        // The state machine is done.  Check whether it found a match...
+        //
+        // If the iterator failed to advance in the match engine, force it ahead by one.
+        //   (This really indicates a defect in the break rules.  They should always match
+        //    at least one character.)
+        if (result == initialPosition) {
+            result = fText.setIndex(initialPosition);
+            CIPrevious32(fText);
+            result = fText.getIndex();
+        }
+        
+        fText.setIndex(result);
+        if (fTrace) {
+            System.out.println("Result = " + result);
+        }
+        
+        return result;
+    }
+
+
+
+
+
+    //-------------------------------------------------------------------------------
+    
+    //
+    
+    //  isDictionaryChar      Return true if the category lookup for this char
+    
+    //                        indicates that it is in the set of dictionary lookup
+    
+    //                        chars.
+    
+    //
+    
+    //                        This function is intended for use by dictionary based
+    
+    //                        break iterators.
+    
+    //
+    
+    //-------------------------------------------------------------------------------
+    
+    boolean isDictionaryChar(int c) {
+    
+        short  category = (short) fRData.fTrie.getCodePointValue(c);
+    
+        return (category & 0x4000) != 0;
+    
+    }
+
+}
+//eof
diff --git a/src/com/ibm/icu/text/RuleBasedCollator.java b/src/com/ibm/icu/text/RuleBasedCollator.java
new file mode 100644
index 0000000..b076fc9
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedCollator.java
@@ -0,0 +1,4689 @@
+//##header J2SE15
+/**
+*******************************************************************************
+* Copyright (C) 1996-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.text.CharacterIterator;
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.MissingResourceException;
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//##import com.ibm.icu.impl.ByteBuffer;
+//#else
+import java.nio.ByteBuffer;
+//#endif
+
+import com.ibm.icu.impl.BOCU;
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ImplicitCEGenerator;
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.impl.StringUCharacterIterator;
+import com.ibm.icu.impl.Trie;
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.RangeValueIterator;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+ * <p>RuleBasedCollator is a concrete subclass of Collator. It allows
+ * customization of the Collator via user-specified rule sets.
+ * RuleBasedCollator is designed to be fully compliant to the <a
+ * href="http://www.unicode.org/unicode/reports/tr10/">Unicode
+ * Collation Algorithm (UCA)</a> and conforms to ISO 14651.</p>
+ *
+ * <p>Users are strongly encouraged to read <a
+ * href="http://www.icu-project.org/userguide/Collate_Intro.html">
+ * the users guide</a> for more information about the collation
+ * service before using this class.</p>
+ *
+ * <p>Create a RuleBasedCollator from a locale by calling the
+ * getInstance(Locale) factory method in the base class Collator.
+ * Collator.getInstance(Locale) creates a RuleBasedCollator object
+ * based on the collation rules defined by the argument locale.  If a
+ * customized collation ordering ar attributes is required, use the
+ * RuleBasedCollator(String) constructor with the appropriate
+ * rules. The customized RuleBasedCollator will base its ordering on
+ * UCA, while re-adjusting the attributes and orders of the characters
+ * in the specified rule accordingly.</p>
+ *
+ * <p>RuleBasedCollator provides correct collation orders for most
+ * locales supported in ICU. If specific data for a locale is not
+ * available, the orders eventually falls back to the <a
+ * href="http://www.unicode.org/unicode/reports/tr10/">UCA collation
+ * order </a>.</p>
+ *
+ * <p>For information about the collation rule syntax and details
+ * about customization, please refer to the
+ * <a href="http://www.icu-project.org/userguide/Collate_Customization.html">
+ * Collation customization</a> section of the user's guide.</p>
+ *
+ * <p><strong>Note</strong> that there are some differences between
+ * the Collation rule syntax used in Java and ICU4J:
+ *
+ * <ul>
+ * <li>According to the JDK documentation:
+ * <i>
+ * <p>
+ * Modifier '!' : Turns on Thai/Lao vowel-consonant swapping. If this rule
+ * is in force when a Thai vowel of the range &#92;U0E40-&#92;U0E44 precedes a
+ * Thai consonant of the range &#92;U0E01-&#92;U0E2E OR a Lao vowel of the
+ * range &#92;U0EC0-&#92;U0EC4 precedes a Lao consonant of the range
+ * &#92;U0E81-&#92;U0EAE then the
+ * vowel is placed after the consonant for collation purposes.
+ * </p>
+ * <p>
+ * If a rule is without the modifier '!', the Thai/Lao vowel-consonant
+ * swapping is not turned on.
+ * </p>
+ * </i>
+ * <p>
+ * ICU4J's RuleBasedCollator does not support turning off the Thai/Lao
+ * vowel-consonant swapping, since the UCA clearly states that it has to be
+ * supported to ensure a correct sorting order. If a '!' is encountered, it is
+ * ignored.
+ * </p>
+ * <li>As mentioned in the documentation of the base class Collator,
+ *     compatibility decomposition mode is not supported.
+ * </ul>
+ * <p>
+ * <strong>Examples</strong>
+ * </p>
+ * <p>
+ * Creating Customized RuleBasedCollators:
+ * <blockquote>
+ * <pre>
+ * String simple = "&amp; a &lt; b &lt; c &lt; d";
+ * RuleBasedCollator simpleCollator = new RuleBasedCollator(simple);
+ *
+ * String norwegian = "&amp; a , A &lt; b , B &lt; c , C &lt; d , D &lt; e , E "
+ *                    + "&lt; f , F &lt; g , G &lt; h , H &lt; i , I &lt; j , "
+ *                    + "J &lt; k , K &lt; l , L &lt; m , M &lt; n , N &lt; "
+ *                    + "o , O &lt; p , P &lt; q , Q &lt r , R &lt s , S &lt; "
+ *                    + "t , T &lt; u , U &lt; v , V &lt; w , W &lt; x , X "
+ *                    + "&lt; y , Y &lt; z , Z &lt; &#92;u00E5 = a&#92;u030A "
+ *                    + ", &#92;u00C5 = A&#92;u030A ; aa , AA &lt; &#92;u00E6 "
+ *                    + ", &#92;u00C6 &lt; &#92;u00F8 , &#92;u00D8";
+ * RuleBasedCollator norwegianCollator = new RuleBasedCollator(norwegian);
+ * </pre>
+ * </blockquote>
+ *
+ * Concatenating rules to combine <code>Collator</code>s:
+ * <blockquote>
+ * <pre>
+ * // Create an en_US Collator object
+ * RuleBasedCollator en_USCollator = (RuleBasedCollator)
+ *     Collator.getInstance(new Locale("en", "US", ""));
+ * // Create a da_DK Collator object
+ * RuleBasedCollator da_DKCollator = (RuleBasedCollator)
+ *     Collator.getInstance(new Locale("da", "DK", ""));
+ * // Combine the two
+ * // First, get the collation rules from en_USCollator
+ * String en_USRules = en_USCollator.getRules();
+ * // Second, get the collation rules from da_DKCollator
+ * String da_DKRules = da_DKCollator.getRules();
+ * RuleBasedCollator newCollator =
+ *                             new RuleBasedCollator(en_USRules + da_DKRules);
+ * // newCollator has the combined rules
+ * </pre>
+ * </blockquote>
+ *
+ * Making changes to an existing RuleBasedCollator to create a new
+ * <code>Collator</code> object, by appending changes to the existing rule:
+ * <blockquote>
+ * <pre>
+ * // Create a new Collator object with additional rules
+ * String addRules = "&amp; C &lt; ch, cH, Ch, CH";
+ * RuleBasedCollator myCollator =
+ *     new RuleBasedCollator(en_USCollator.getRules() + addRules);
+ * // myCollator contains the new rules
+ * </pre>
+ * </blockquote>
+ *
+ * How to change the order of non-spacing accents:
+ * <blockquote>
+ * <pre>
+ * // old rule with main accents
+ * String oldRules = "= &#92;u0301 ; &#92;u0300 ; &#92;u0302 ; &#92;u0308 "
+ *                 + "; &#92;u0327 ; &#92;u0303 ; &#92;u0304 ; &#92;u0305 "
+ *                 + "; &#92;u0306 ; &#92;u0307 ; &#92;u0309 ; &#92;u030A "
+ *                 + "; &#92;u030B ; &#92;u030C ; &#92;u030D ; &#92;u030E "
+ *                 + "; &#92;u030F ; &#92;u0310 ; &#92;u0311 ; &#92;u0312 "
+ *                 + "&lt; a , A ; ae, AE ; &#92;u00e6 , &#92;u00c6 "
+ *                 + "&lt; b , B &lt; c, C &lt; e, E &amp; C &lt; d , D";
+ * // change the order of accent characters
+ * String addOn = "&amp; &#92;u0300 ; &#92;u0308 ; &#92;u0302";
+ * RuleBasedCollator myCollator = new RuleBasedCollator(oldRules + addOn);
+ * </pre>
+ * </blockquote>
+ *
+ * Putting in a new primary ordering before the default setting,
+ * e.g. sort English characters before or after Japanese characters in the Japanese
+ * <code>Collator</code>:
+ * <blockquote>
+ * <pre>
+ * // get en_US Collator rules
+ * RuleBasedCollator en_USCollator
+ *                        = (RuleBasedCollator)Collator.getInstance(Locale.US);
+ * // add a few Japanese characters to sort before English characters
+ * // suppose the last character before the first base letter 'a' in
+ * // the English collation rule is &#92;u2212
+ * String jaString = "& &#92;u2212 &lt &#92;u3041, &#92;u3042 &lt &#92;u3043, "
+ *                   + "&#92;u3044";
+ * RuleBasedCollator myJapaneseCollator
+ *              = new RuleBasedCollator(en_USCollator.getRules() + jaString);
+ * </pre>
+ * </blockquote>
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @author Syn Wee Quek
+ * @stable ICU 2.8
+ */
+public final class RuleBasedCollator extends Collator
+{   
+    // public constructors ---------------------------------------------------
+
+    /**
+     * <p>
+     * Constructor that takes the argument rules for
+     * customization. The collator will be based on UCA,
+     * with the attributes and re-ordering of the characters specified in the
+     * argument rules.
+     * </p>
+     * <p>See the user guide's section on
+     * <a href="http://www.icu-project.org/userguide/Collate_Customization.html">
+     * Collation Customization</a> for details on the rule syntax.
+     * </p>
+     * @param rules the collation rules to build the collation table from.
+     * @exception ParseException and IOException thrown. ParseException thrown
+     *            when argument rules have an invalid syntax. IOException
+     *            thrown when an error occured while reading internal data.
+     * @stable ICU 2.8
+     */
+    public RuleBasedCollator(String rules) throws Exception
+    {
+        checkUCA();
+        if (rules == null) {
+            throw new IllegalArgumentException(
+                                            "Collation rules can not be null");
+        }
+        init(rules);
+    }
+
+    // public methods --------------------------------------------------------
+
+    /**
+     * Clones the RuleBasedCollator
+     * @return a new instance of this RuleBasedCollator object
+     * @stable ICU 2.8
+     */
+    public Object clone() throws CloneNotSupportedException
+    {
+        RuleBasedCollator result = (RuleBasedCollator)super.clone();
+        if (latinOneCEs_ != null) {
+            result.m_reallocLatinOneCEs_ = true;
+            result.m_ContInfo_ = new ContractionInfo();
+        }
+
+        // since all collation data in the RuleBasedCollator do not change
+        // we can safely assign the result.fields to this collator
+        result.initUtility(false);  // let the new clone have their own util
+                                    // iterators
+        return result;
+    }
+
+    /**
+     * Return a CollationElementIterator for the given String.
+     * @see CollationElementIterator
+     * @stable ICU 2.8
+     */
+    public CollationElementIterator getCollationElementIterator(String source)
+    {
+        return new CollationElementIterator(source, this);
+    }
+
+    /**
+     * Return a CollationElementIterator for the given CharacterIterator.
+     * The source iterator's integrity will be preserved since a new copy
+     * will be created for use.
+     * @see CollationElementIterator
+     * @stable ICU 2.8
+     */
+    public CollationElementIterator getCollationElementIterator(
+                                                CharacterIterator source)
+    {
+        CharacterIterator newsource = (CharacterIterator)source.clone();
+        return new CollationElementIterator(newsource, this);
+    }
+    
+    /**
+     * Return a CollationElementIterator for the given UCharacterIterator.
+     * The source iterator's integrity will be preserved since a new copy
+     * will be created for use.
+     * @see CollationElementIterator
+     * @stable ICU 2.8
+     */
+    public CollationElementIterator getCollationElementIterator(
+                                                UCharacterIterator source)
+    {
+        return new CollationElementIterator(source, this);
+    }
+
+    // public setters --------------------------------------------------------
+
+    /**
+     * Sets the Hiragana Quaternary mode to be on or off.
+     * When the Hiragana Quaternary mode is turned on, the collator
+     * positions Hiragana characters before all non-ignorable characters in
+     * QUATERNARY strength. This is to produce a correct JIS collation order,
+     * distinguishing between Katakana  and Hiragana characters.
+     * @param flag true if Hiragana Quaternary mode is to be on, false
+     *        otherwise
+     * @see #setHiraganaQuaternaryDefault
+     * @see #isHiraganaQuaternary
+     * @stable ICU 2.8
+     */
+    public void setHiraganaQuaternary(boolean flag)
+    {
+        m_isHiragana4_ = flag;
+        updateInternalState();        
+    }
+
+    /**
+     * Sets the Hiragana Quaternary mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setHiraganaQuaternary(boolean) for more details.
+     * @see #setHiraganaQuaternary(boolean)
+     * @see #isHiraganaQuaternary
+     * @stable ICU 2.8
+     */
+    public void setHiraganaQuaternaryDefault()
+    {
+        m_isHiragana4_ = m_defaultIsHiragana4_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets whether uppercase characters sort before lowercase
+     * characters or vice versa, in strength TERTIARY. The default
+     * mode is false, and so lowercase characters sort before uppercase
+     * characters.
+     * If true, sort upper case characters first.
+     * @param upperfirst true to sort uppercase characters before
+     *                   lowercase characters, false to sort lowercase
+     *                   characters before uppercase characters
+     * @see #isLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setLowerCaseFirst
+     * @see #setCaseFirstDefault
+     * @stable ICU 2.8
+     */
+    public void setUpperCaseFirst(boolean upperfirst)
+    {
+        if (upperfirst) {
+            if(m_caseFirst_ != AttributeValue.UPPER_FIRST_) {
+                latinOneRegenTable_ = true;
+            }
+            m_caseFirst_ = AttributeValue.UPPER_FIRST_;
+        }
+        else {
+            if(m_caseFirst_ != AttributeValue.OFF_) {
+                latinOneRegenTable_ = true;
+            }
+            m_caseFirst_ = AttributeValue.OFF_;
+        }
+        updateInternalState();
+    }
+
+    /**
+     * Sets the orders of lower cased characters to sort before upper cased
+     * characters, in strength TERTIARY. The default
+     * mode is false.
+     * If true is set, the RuleBasedCollator will sort lower cased characters
+     * before the upper cased ones.
+     * Otherwise, if false is set, the RuleBasedCollator will ignore case
+     * preferences.
+     * @param lowerfirst true for sorting lower cased characters before
+     *                   upper cased characters, false to ignore case
+     *                   preferences.
+     * @see #isLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setUpperCaseFirst
+     * @see #setCaseFirstDefault
+     * @stable ICU 2.8
+     */
+    public void setLowerCaseFirst(boolean lowerfirst)
+    {
+        if (lowerfirst) {
+                if(m_caseFirst_ != AttributeValue.LOWER_FIRST_) {
+                    latinOneRegenTable_ = true;
+                }
+                m_caseFirst_ = AttributeValue.LOWER_FIRST_;
+        }
+        else {
+                if(m_caseFirst_ != AttributeValue.OFF_) {
+                    latinOneRegenTable_ = true;
+                }
+            m_caseFirst_ = AttributeValue.OFF_;
+            }
+        updateInternalState();
+    }
+
+    /**
+     * Sets the case first mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setUpperCaseFirst(boolean) and setLowerCaseFirst(boolean) for more
+     * details.
+     * @see #isLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setLowerCaseFirst(boolean)
+     * @see #setUpperCaseFirst(boolean)
+     * @stable ICU 2.8
+     */
+    public final void setCaseFirstDefault()
+    {
+        if(m_caseFirst_ != m_defaultCaseFirst_) {
+            latinOneRegenTable_ = true;
+        }
+        m_caseFirst_ = m_defaultCaseFirst_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the alternate handling mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setAlternateHandling(boolean) for more details.
+     * @see #setAlternateHandlingShifted(boolean)
+     * @see #isAlternateHandlingShifted()
+     * @stable ICU 2.8
+     */
+    public void setAlternateHandlingDefault()
+    {
+        m_isAlternateHandlingShifted_ = m_defaultIsAlternateHandlingShifted_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the case level mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setCaseLevel(boolean) for more details.
+     * @see #setCaseLevel(boolean)
+     * @see #isCaseLevel
+     * @stable ICU 2.8
+     */
+    public void setCaseLevelDefault()
+    {
+        m_isCaseLevel_ = m_defaultIsCaseLevel_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the decomposition mode to the initial mode set during construction
+     * of the RuleBasedCollator.
+     * See setDecomposition(int) for more details.
+     * @see #getDecomposition
+     * @see #setDecomposition(int)
+     * @stable ICU 2.8
+     */
+    public void setDecompositionDefault()
+    {
+        setDecomposition(m_defaultDecomposition_);
+        updateInternalState();        
+    }
+
+    /**
+     * Sets the French collation mode to the initial mode set during
+     * construction of the RuleBasedCollator.
+     * See setFrenchCollation(boolean) for more details.
+     * @see #isFrenchCollation
+     * @see #setFrenchCollation(boolean)
+     * @stable ICU 2.8
+     */
+    public void setFrenchCollationDefault()
+    {
+        if(m_isFrenchCollation_ != m_defaultIsFrenchCollation_) {
+            latinOneRegenTable_ = true;
+        }
+        m_isFrenchCollation_ = m_defaultIsFrenchCollation_;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the collation strength to the initial mode set during the
+     * construction of the RuleBasedCollator.
+     * See setStrength(int) for more details.
+     * @see #setStrength(int)
+     * @see #getStrength
+     * @stable ICU 2.8
+     */
+    public void setStrengthDefault()
+    {
+        setStrength(m_defaultStrength_);
+        updateInternalState();        
+    }
+    
+    /**
+     * Method to set numeric collation to its default value.
+     * When numeric collation is turned on, this Collator generates a collation 
+     * key for the numeric value of substrings of digits. This is a way to get 
+     * '100' to sort AFTER '2'
+     * @see #getNumericCollation
+     * @see #setNumericCollation
+     * @stable ICU 2.8
+     */
+    public void setNumericCollationDefault()
+    {
+        setNumericCollation(m_defaultIsNumericCollation_);
+        updateInternalState();        
+    }
+
+    /**
+     * Sets the mode for the direction of SECONDARY weights to be used in
+     * French collation.
+     * The default value is false, which treats SECONDARY weights in the order
+     * they appear.
+     * If set to true, the SECONDARY weights will be sorted backwards.
+     * See the section on
+     * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+     * French collation</a> for more information.
+     * @param flag true to set the French collation on, false to set it off
+     * @stable ICU 2.8
+     * @see #isFrenchCollation
+     * @see #setFrenchCollationDefault
+     */
+    public void setFrenchCollation(boolean flag)
+    {
+        if(m_isFrenchCollation_ != flag) {
+            latinOneRegenTable_ = true;
+        }
+        m_isFrenchCollation_ = flag;
+        updateInternalState();
+    }
+
+    /**
+     * Sets the alternate handling for QUATERNARY strength to be either
+     * shifted or non-ignorable.
+     * See the UCA definition on
+     * <a href="http://www.unicode.org/unicode/reports/tr10/#Variable_Weighting">
+     * Alternate Weighting</a>.
+     * This attribute will only be effective when QUATERNARY strength is set.
+     * The default value for this mode is false, corresponding to the
+     * NON_IGNORABLE mode in UCA. In the NON-IGNORABLE mode, the
+     * RuleBasedCollator will treats all the codepoints with non-ignorable
+     * primary weights in the same way.
+     * If the mode is set to true, the behaviour corresponds to SHIFTED defined
+     * in UCA, this causes codepoints with PRIMARY orders that are equal or
+     * below the variable top value to be ignored in PRIMARY order and
+     * moved to the QUATERNARY order.
+     * @param shifted true if SHIFTED behaviour for alternate handling is
+     *        desired, false for the NON_IGNORABLE behaviour.
+     * @see #isAlternateHandlingShifted
+     * @see #setAlternateHandlingDefault
+     * @stable ICU 2.8
+     */
+    public void setAlternateHandlingShifted(boolean shifted)
+    {
+        m_isAlternateHandlingShifted_ = shifted;
+        updateInternalState();
+    }
+
+    /**
+     * <p>
+     * When case level is set to true, an additional weight is formed
+     * between the SECONDARY and TERTIARY weight, known as the case level.
+     * The case level is used to distinguish large and small Japanese Kana
+     * characters. Case level could also be used in other situations.
+     * For example to distinguish certain Pinyin characters.
+     * The default value is false, which means the case level is not generated.
+     * The contents of the case level are affected by the case first
+     * mode. A simple way to ignore accent differences in a string is to set
+     * the strength to PRIMARY and enable case level.
+     * </p>
+     * <p>
+     * See the section on
+     * <a href="http://www.icu-project.org/userguide/Collate_ServiceArchitecture.html">
+     * case level</a> for more information.
+     * </p>
+     * @param flag true if case level sorting is required, false otherwise
+     * @stable ICU 2.8
+     * @see #setCaseLevelDefault
+     * @see #isCaseLevel
+     */
+    public void setCaseLevel(boolean flag)
+    {
+        m_isCaseLevel_ = flag;
+        updateInternalState();
+    }
+
+    /**
+     * <p>
+     * Sets this Collator's strength property. The strength property
+     * determines the minimum level of difference considered significant
+     * during comparison.
+     * </p>
+     * <p>See the Collator class description for an example of use.</p>
+     * @param newStrength the new strength value.
+     * @see #getStrength
+     * @see #setStrengthDefault
+     * @see #PRIMARY
+     * @see #SECONDARY
+     * @see #TERTIARY
+     * @see #QUATERNARY
+     * @see #IDENTICAL
+     * @exception IllegalArgumentException If the new strength value is not one
+     *              of PRIMARY, SECONDARY, TERTIARY, QUATERNARY or IDENTICAL.
+     * @stable ICU 2.8
+     */
+    public void setStrength(int newStrength)
+    {
+        super.setStrength(newStrength);
+        updateInternalState();
+    }
+    
+    /** 
+     * <p>
+     * Variable top is a two byte primary value which causes all the codepoints 
+     * with primary values that are less or equal than the variable top to be 
+     * shifted when alternate handling is set to SHIFTED.
+     * </p>
+     * <p>
+     * Sets the variable top to a collation element value of a string supplied.
+     * </p> 
+     * @param varTop one or more (if contraction) characters to which the 
+     *               variable top should be set
+     * @return a int value containing the value of the variable top in upper 16
+     *         bits. Lower 16 bits are undefined.
+     * @exception IllegalArgumentException is thrown if varTop argument is not 
+     *            a valid variable top element. A variable top element is 
+     *            invalid when 
+     *            <ul>
+     *            <li>it is a contraction that does not exist in the
+     *                Collation order
+     *            <li>when the PRIMARY strength collation element for the 
+     *                variable top has more than two bytes
+     *            <li>when the varTop argument is null or zero in length.
+     *            </ul>
+     * @see #getVariableTop
+     * @see RuleBasedCollator#setAlternateHandlingShifted
+     * @stable ICU 2.6
+     */
+    public int setVariableTop(String varTop)
+    {
+        if (varTop == null || varTop.length() == 0) {
+            throw new IllegalArgumentException(
+            "Variable top argument string can not be null or zero in length.");
+        }
+        if (m_srcUtilIter_ == null) {
+            initUtility(true);
+        }
+
+        m_srcUtilColEIter_.setText(varTop);
+        int ce = m_srcUtilColEIter_.next();
+        
+        // here we check if we have consumed all characters 
+        // you can put in either one character or a contraction
+        // you shouldn't put more... 
+        if (m_srcUtilColEIter_.getOffset() != varTop.length() 
+            || ce == CollationElementIterator.NULLORDER) {
+            throw new IllegalArgumentException(
+            "Variable top argument string is a contraction that does not exist "
+            + "in the Collation order");
+        }
+        
+        int nextCE = m_srcUtilColEIter_.next();
+        
+        if ((nextCE != CollationElementIterator.NULLORDER) 
+            && (!isContinuation(nextCE) || (nextCE & CE_PRIMARY_MASK_) != 0)) {
+                throw new IllegalArgumentException(
+                "Variable top argument string can only have a single collation "
+                + "element that has less than or equal to two PRIMARY strength "
+                + "bytes");
+        }
+        
+        m_variableTopValue_ = (ce & CE_PRIMARY_MASK_) >> 16;
+        
+        return ce & CE_PRIMARY_MASK_;
+    }
+    
+    /** 
+     * Sets the variable top to a collation element value supplied.
+     * Variable top is set to the upper 16 bits. 
+     * Lower 16 bits are ignored.
+     * @param varTop Collation element value, as returned by setVariableTop or 
+     *               getVariableTop
+     * @see #getVariableTop
+     * @see #setVariableTop(String)
+     * @stable ICU 2.6
+     */
+    public void setVariableTop(int varTop)
+    {
+        m_variableTopValue_ = (varTop & CE_PRIMARY_MASK_) >> 16;
+    }
+    
+    /**
+     * When numeric collation is turned on, this Collator generates a collation 
+     * key for the numeric value of substrings of digits. This is a way to get 
+     * '100' to sort AFTER '2'
+     * @param flag true to turn numeric collation on and false to turn it off
+     * @see #getNumericCollation
+     * @see #setNumericCollationDefault
+     * @stable ICU 2.8
+     */
+    public void setNumericCollation(boolean flag)
+    {
+        // sort substrings of digits as numbers
+        m_isNumericCollation_ = flag;
+        updateInternalState();
+    }
+
+    // public getters --------------------------------------------------------
+
+    /**
+     * Gets the collation rules for this RuleBasedCollator.
+     * Equivalent to String getRules(RuleOption.FULL_RULES).
+     * @return returns the collation rules
+     * @see #getRules(boolean)
+     * @stable ICU 2.8
+     */
+    public String getRules()
+    {
+        return m_rules_;
+    }
+    
+    /**
+     * Returns current rules. The argument defines whether full rules 
+     * (UCA + tailored) rules are returned or just the tailoring. 
+     * @param fullrules true if the rules that defines the full set of 
+     *        collation order is required, otherwise false for returning only 
+     *        the tailored rules
+     * @return the current rules that defines this Collator.
+     * @see #getRules()
+     * @stable ICU 2.6
+     */
+    public String getRules(boolean fullrules)
+    {
+        if (!fullrules) {
+            return m_rules_;
+        }
+        // take the UCA rules and append real rules at the end 
+        return UCA_.m_rules_.concat(m_rules_);
+    }
+
+    /**
+     * Get an UnicodeSet that contains all the characters and sequences
+     * tailored in this collator.
+     * @return a pointer to a UnicodeSet object containing all the
+     *         code points and sequences that may sort differently than
+     *         in the UCA.
+     * @exception ParseException thrown when argument rules have an
+     *            invalid syntax. IOException
+     * @stable ICU 2.4
+     */
+    public UnicodeSet getTailoredSet()
+    {
+        try {
+           CollationRuleParser src = new CollationRuleParser(getRules());
+           return src.getTailoredSet();
+        } catch(Exception e) {
+            throw new IllegalStateException("A tailoring rule should not " +
+                "have errors. Something is quite wrong!");
+        }
+    }
+
+    private class contContext {
+        RuleBasedCollator coll;
+        UnicodeSet contractions;
+        UnicodeSet expansions;
+        UnicodeSet removedContractions;
+        boolean addPrefixes;       
+        contContext(RuleBasedCollator coll, UnicodeSet contractions, UnicodeSet expansions, 
+                UnicodeSet removedContractions, boolean addPrefixes) {
+            this.coll = coll;
+            this.contractions = contractions;
+            this.expansions = expansions;
+            this.removedContractions = removedContractions;
+            this.addPrefixes = addPrefixes;
+        }
+    }
+    
+    private void
+    addSpecial(contContext c, StringBuffer buffer, int CE)
+    {
+        StringBuffer b = new StringBuffer();
+        int offset = (CE & 0xFFFFFF) - c.coll.m_contractionOffset_;
+        int newCE = c.coll.m_contractionCE_[offset];
+        // we might have a contraction that ends from previous level
+        if(newCE != CollationElementIterator.CE_NOT_FOUND_) {
+            if(isSpecial(CE) && getTag(CE) == CollationElementIterator.CE_CONTRACTION_TAG_ 
+                    && isSpecial(newCE) && getTag(newCE) == CollationElementIterator.CE_SPEC_PROC_TAG_ 
+                    && c.addPrefixes) {
+                addSpecial(c, buffer, newCE);
+            }
+            if(buffer.length() > 1) {
+                if(c.contractions != null) {
+                    c.contractions.add(buffer.toString());
+                }
+                if(c.expansions != null && isSpecial(CE) && getTag(CE) == CollationElementIterator.CE_EXPANSION_TAG_) {
+                    c.expansions.add(buffer.toString());
+                }
+            }
+        }    
+        
+        offset++;
+        // check whether we're doing contraction or prefix
+        if(getTag(CE) == CollationElementIterator.CE_SPEC_PROC_TAG_ && c.addPrefixes) {
+            while(c.coll.m_contractionIndex_[offset] != 0xFFFF) {
+                b.delete(0, b.length());
+                b.append(buffer);
+                newCE = c.coll.m_contractionCE_[offset];
+                b.insert(0, c.coll.m_contractionIndex_[offset]);
+                if(isSpecial(newCE) && (getTag(newCE) == CollationElementIterator.CE_CONTRACTION_TAG_ || getTag(newCE) == CollationElementIterator.CE_SPEC_PROC_TAG_)) {
+                    addSpecial(c, b, newCE);
+                } else {
+                    if(c.contractions != null) {
+                        c.contractions.add(b.toString());
+                    }
+                    if(c.expansions != null && isSpecial(newCE) && getTag(newCE) == CollationElementIterator.CE_EXPANSION_TAG_) {
+                        c.expansions.add(b.toString());
+                    }
+                }
+                offset++;
+            }
+        } else if(getTag(CE) == CollationElementIterator.CE_CONTRACTION_TAG_) {
+            while(c.coll.m_contractionIndex_[offset] != 0xFFFF) {
+                b.delete(0, b.length());
+                b.append(buffer);
+                newCE = c.coll.m_contractionCE_[offset];
+                b.append(c.coll.m_contractionIndex_[offset]);
+                if(isSpecial(newCE) && (getTag(newCE) == CollationElementIterator.CE_CONTRACTION_TAG_ || getTag(newCE) == CollationElementIterator.CE_SPEC_PROC_TAG_)) {
+                    addSpecial(c, b, newCE);
+                } else {
+                    if(c.contractions != null) {
+                        c.contractions.add(b.toString());
+                    }
+                    if(c.expansions != null && isSpecial(newCE) && getTag(newCE) == CollationElementIterator.CE_EXPANSION_TAG_) {
+                        c.expansions.add(b.toString());
+                    }
+                }
+                offset++;
+            }
+        }
+    }
+    
+    private
+    void processSpecials(contContext c) 
+    {
+        int internalBufferSize = 512;
+        TrieIterator trieiterator 
+        = new TrieIterator(c.coll.m_trie_);
+        RangeValueIterator.Element element = new RangeValueIterator.Element();
+        while (trieiterator.next(element)) {
+            int start = element.start;
+            int limit = element.limit;
+            int CE = element.value;
+            StringBuffer contraction = new StringBuffer(internalBufferSize);
+            
+            if(isSpecial(CE)) {
+                if(((getTag(CE) == CollationElementIterator.CE_SPEC_PROC_TAG_ && c.addPrefixes) || getTag(CE) == CollationElementIterator.CE_CONTRACTION_TAG_)) {
+                    while(start < limit) {
+                        // if there are suppressed contractions, we don't 
+                        // want to add them.
+                        if(c.removedContractions != null && c.removedContractions.contains(start)) {
+                            start++;
+                            continue;
+                        }
+                        // we start our contraction from middle, since we don't know if it
+                        // will grow toward right or left
+                        contraction.append((char) start);
+                        addSpecial(c, contraction, CE);
+                        start++;
+                    }
+                } else if(c.expansions != null && getTag(CE) == CollationElementIterator.CE_EXPANSION_TAG_) {
+                    while(start < limit) {
+                        c.expansions.add(start++);
+                    }
+                }
+            }
+        }
+    }
+    
+    /**
+     * Gets unicode sets containing contractions and/or expansions of a collator
+     * @param contractions if not null, set to contain contractions
+     * @param expansions if not null, set to contain expansions
+     * @param addPrefixes add the prefix contextual elements to contractions
+     * @throws Exception 
+     * @stable ICU 3.4
+     */
+    public void
+    getContractionsAndExpansions(UnicodeSet contractions, UnicodeSet expansions,
+            boolean addPrefixes) throws Exception {
+        if(contractions != null) {
+            contractions.clear();
+        }
+        if(expansions != null) {
+            expansions.clear();
+        }
+        String rules = getRules();
+        try {
+            CollationRuleParser src = new CollationRuleParser(rules);
+            contContext c = new contContext(RuleBasedCollator.UCA_, 
+                    contractions, expansions, src.m_removeSet_, addPrefixes);
+            
+            // Add the UCA contractions
+            processSpecials(c);
+            // This is collator specific. Add contractions from a collator
+            c.coll = this;
+            c.removedContractions =  null;
+            processSpecials(c);
+        } catch (Exception e) {
+            throw e;
+        }
+    }
+    
+    /**
+     * <p>
+     * Get a Collation key for the argument String source from this
+     * RuleBasedCollator.
+     * </p>
+     * <p>
+     * General recommendation: <br>
+     * If comparison are to be done to the same String multiple times, it would
+     * be more efficient to generate CollationKeys for the Strings and use
+     * CollationKey.compareTo(CollationKey) for the comparisons.
+     * If the each Strings are compared to only once, using the method
+     * RuleBasedCollator.compare(String, String) will have a better performance.
+     * </p>
+     * <p>
+     * See the class documentation for an explanation about CollationKeys.
+     * </p>
+     * @param source the text String to be transformed into a collation key.
+     * @return the CollationKey for the given String based on this
+     *         RuleBasedCollator's collation rules. If the source String is
+     *         null, a null CollationKey is returned.
+     * @see CollationKey
+     * @see #compare(String, String)
+     * @see #getRawCollationKey
+     * @stable ICU 2.8
+     */
+    public CollationKey getCollationKey(String source) {
+        if (source == null) {
+            return null;
+        }
+        m_utilRawCollationKey_ = getRawCollationKey(source, 
+                                                    m_utilRawCollationKey_);
+        return new CollationKey(source, m_utilRawCollationKey_);
+    }
+    
+    /**
+     * Gets the simpler form of a CollationKey for the String source following
+     * the rules of this Collator and stores the result into the user provided 
+     * argument key. 
+     * If key has a internal byte array of length that's too small for the 
+     * result, the internal byte array will be grown to the exact required 
+     * size.
+     * @param source the text String to be transformed into a RawCollationKey  
+     * @param key output RawCollationKey to store results
+     * @return If key is null, a new instance of RawCollationKey will be 
+     *         created and returned, otherwise the user provided key will be 
+     *         returned.
+     * @see #getCollationKey 
+     * @see #compare(String, String)
+     * @see RawCollationKey
+     * @stable ICU 2.8
+     */
+    public RawCollationKey getRawCollationKey(String source, 
+                                              RawCollationKey key)
+    {
+        if (source == null) {
+            return null;
+        }
+        int strength = getStrength();
+        m_utilCompare0_ = m_isCaseLevel_;
+        //m_utilCompare1_ = true;
+        m_utilCompare2_ = strength >= SECONDARY;
+        m_utilCompare3_ = strength >= TERTIARY;
+        m_utilCompare4_ = strength >= QUATERNARY;
+        m_utilCompare5_ = strength == IDENTICAL;
+
+        m_utilBytesCount0_ = 0;
+        m_utilBytesCount1_ = 0;
+        m_utilBytesCount2_ = 0;
+        m_utilBytesCount3_ = 0;
+        m_utilBytesCount4_ = 0;
+        //m_utilBytesCount5_ = 0;
+        //m_utilCount0_ = 0;
+        //m_utilCount1_ = 0;
+        m_utilCount2_ = 0;
+        m_utilCount3_ = 0;
+        m_utilCount4_ = 0;
+        //m_utilCount5_ = 0;
+        boolean doFrench = m_isFrenchCollation_ && m_utilCompare2_;
+        // TODO: UCOL_COMMON_BOT4 should be a function of qShifted.
+        // If we have no qShifted, we don't need to set UCOL_COMMON_BOT4 so
+        // high.
+        int commonBottom4 = ((m_variableTopValue_ >>> 8) + 1) & LAST_BYTE_MASK_;
+        byte hiragana4 = 0;
+        if (m_isHiragana4_ && m_utilCompare4_) {
+            // allocate one more space for hiragana, value for hiragana
+            hiragana4 = (byte)commonBottom4;
+            commonBottom4 ++;
+        }
+
+        int bottomCount4 = 0xFF - commonBottom4;
+        // If we need to normalize, we'll do it all at once at the beginning!
+        if (m_utilCompare5_ && Normalizer.quickCheck(source, Normalizer.NFD,0)
+                                                    != Normalizer.YES) {
+            // if it is identical strength, we have to normalize the string to
+            // NFD so that it will be appended correctly to the end of the sort
+            // key
+            source = Normalizer.decompose(source, false);
+        }
+        else if (getDecomposition() != NO_DECOMPOSITION
+            && Normalizer.quickCheck(source, Normalizer.FCD,0)
+                                                    != Normalizer.YES) {
+            // for the rest of the strength, if decomposition is on, FCD is
+            // enough for us to work on.
+            source = Normalizer.normalize(source,Normalizer.FCD);
+        }
+        getSortKeyBytes(source, doFrench, hiragana4, commonBottom4,
+                        bottomCount4);
+        if (key == null) {
+            key = new RawCollationKey();
+        }
+        getSortKey(source, doFrench, commonBottom4, bottomCount4, key);
+        return key;
+    }
+
+    /**
+     * Return true if an uppercase character is sorted before the corresponding lowercase character.
+     * See setCaseFirst(boolean) for details.
+     * @see #setUpperCaseFirst
+     * @see #setLowerCaseFirst
+     * @see #isLowerCaseFirst
+     * @see #setCaseFirstDefault
+     * @return true if upper cased characters are sorted before lower cased
+     *         characters, false otherwise
+     * @stable ICU 2.8
+     */
+     public boolean isUpperCaseFirst()
+     {
+        return (m_caseFirst_ == AttributeValue.UPPER_FIRST_);
+     }
+     
+    /**
+     * Return true if a lowercase character is sorted before the corresponding uppercase character.
+     * See setCaseFirst(boolean) for details.
+     * @see #setUpperCaseFirst
+     * @see #setLowerCaseFirst
+     * @see #isUpperCaseFirst
+     * @see #setCaseFirstDefault
+     * @return true lower cased characters are sorted before upper cased
+     *         characters, false otherwise
+     * @stable ICU 2.8
+     */
+    public boolean isLowerCaseFirst()
+    {
+        return (m_caseFirst_ == AttributeValue.LOWER_FIRST_);
+    }
+
+    /**
+     * Checks if the alternate handling behaviour is the UCA defined SHIFTED or
+     * NON_IGNORABLE.
+     * If return value is true, then the alternate handling attribute for the
+     * Collator is SHIFTED. Otherwise if return value is false, then the
+     * alternate handling attribute for the Collator is NON_IGNORABLE
+     * See setAlternateHandlingShifted(boolean) for more details.
+     * @return true or false
+     * @see #setAlternateHandlingShifted(boolean)
+     * @see #setAlternateHandlingDefault
+     * @stable ICU 2.8
+     */
+    public boolean isAlternateHandlingShifted()
+    {
+        return m_isAlternateHandlingShifted_;
+    }
+
+    /**
+     * Checks if case level is set to true.
+     * See setCaseLevel(boolean) for details.
+     * @return the case level mode
+     * @see #setCaseLevelDefault
+     * @see #isCaseLevel
+     * @see #setCaseLevel(boolean)
+     * @stable ICU 2.8
+     */
+    public boolean isCaseLevel()
+    {
+        return m_isCaseLevel_;
+    }
+
+    /**
+     * Checks if French Collation is set to true.
+     * See setFrenchCollation(boolean) for details.
+     * @return true if French Collation is set to true, false otherwise
+     * @see #setFrenchCollation(boolean)
+     * @see #setFrenchCollationDefault
+     * @stable ICU 2.8
+     */
+     public boolean isFrenchCollation()
+     {
+         return m_isFrenchCollation_;
+     }
+
+    /**
+     * Checks if the Hiragana Quaternary mode is set on.
+     * See setHiraganaQuaternary(boolean) for more details.
+     * @return flag true if Hiragana Quaternary mode is on, false otherwise
+     * @see #setHiraganaQuaternaryDefault
+     * @see #setHiraganaQuaternary(boolean)
+     * @stable ICU 2.8
+     */
+    public boolean isHiraganaQuaternary()
+    {
+        return m_isHiragana4_;
+    }
+
+    /** 
+     * Gets the variable top value of a Collator. 
+     * Lower 16 bits are undefined and should be ignored.
+     * @return the variable top value of a Collator.
+     * @see #setVariableTop
+     * @stable ICU 2.6
+     */
+    public int getVariableTop()
+    {
+          return m_variableTopValue_ << 16;
+    }
+    
+    /** 
+     * Method to retrieve the numeric collation value.
+     * When numeric collation is turned on, this Collator generates a collation 
+     * key for the numeric value of substrings of digits. This is a way to get 
+     * '100' to sort AFTER '2'
+     * @see #setNumericCollation
+     * @see #setNumericCollationDefault
+     * @return true if numeric collation is turned on, false otherwise
+     * @stable ICU 2.8
+     */
+    public boolean getNumericCollation()
+    {
+        return m_isNumericCollation_;
+    }
+    
+    // public other methods -------------------------------------------------
+
+    /**
+     * Compares the equality of two RuleBasedCollator objects.
+     * RuleBasedCollator objects are equal if they have the same collation
+     * rules and the same attributes.
+     * @param obj the RuleBasedCollator to be compared to.
+     * @return true if this RuleBasedCollator has exactly the same
+     *         collation behaviour as obj, false otherwise.
+     * @stable ICU 2.8
+     */
+    public boolean equals(Object obj)
+    {
+        if (obj == null) {
+            return false;  // super does class check
+        }
+        if (this == obj) {
+            return true;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        RuleBasedCollator other = (RuleBasedCollator)obj;
+        // all other non-transient information is also contained in rules.
+        if (getStrength() != other.getStrength()
+               || getDecomposition() != other.getDecomposition()
+               || other.m_caseFirst_ != m_caseFirst_
+               || other.m_caseSwitch_ != m_caseSwitch_
+               || other.m_isAlternateHandlingShifted_
+                                             != m_isAlternateHandlingShifted_
+               || other.m_isCaseLevel_ != m_isCaseLevel_
+               || other.m_isFrenchCollation_ != m_isFrenchCollation_
+               || other.m_isHiragana4_ != m_isHiragana4_) {
+            return false;
+        }
+        boolean rules = m_rules_ == other.m_rules_;
+        if (!rules && (m_rules_ != null && other.m_rules_ != null)) {
+            rules = m_rules_.equals(other.m_rules_);
+        }
+        if (!rules || !ICUDebug.enabled("collation")) {
+            return rules;
+        }
+        if (m_addition3_ != other.m_addition3_
+                  || m_bottom3_ != other.m_bottom3_
+                  || m_bottomCount3_ != other.m_bottomCount3_
+                  || m_common3_ != other.m_common3_
+                  || m_isSimple3_ != other.m_isSimple3_
+                  || m_mask3_ != other.m_mask3_
+                  || m_minContractionEnd_ != other.m_minContractionEnd_
+                  || m_minUnsafe_ != other.m_minUnsafe_
+                  || m_top3_ != other.m_top3_
+                  || m_topCount3_ != other.m_topCount3_
+                  || !Arrays.equals(m_unsafe_, other.m_unsafe_)) {
+            return false;
+        }
+        if (!m_trie_.equals(other.m_trie_)) {
+            // we should use the trie iterator here, but then this part is
+            // only used in the test.
+            for (int i = UCharacter.MAX_VALUE; i >= UCharacter.MIN_VALUE; i --)
+            {
+                int v = m_trie_.getCodePointValue(i);
+                int otherv = other.m_trie_.getCodePointValue(i);
+                if (v != otherv) {
+                    int mask = v & (CE_TAG_MASK_ | CE_SPECIAL_FLAG_);
+                    if (mask == (otherv & 0xff000000)) {
+                        v &= 0xffffff;
+                        otherv &= 0xffffff;
+                        if (mask == 0xf1000000) {
+                            v -= (m_expansionOffset_ << 4);
+                            otherv -= (other.m_expansionOffset_ << 4);
+                        }
+                        else if (mask == 0xf2000000) {
+                            v -= m_contractionOffset_;
+                            otherv -= other.m_contractionOffset_;
+                        }
+                        if (v == otherv) {
+                            continue;
+                        }
+                    }
+                    return false;
+                }
+            }
+        }
+        if (Arrays.equals(m_contractionCE_, other.m_contractionCE_)
+            && Arrays.equals(m_contractionEnd_, other.m_contractionEnd_)
+            && Arrays.equals(m_contractionIndex_, other.m_contractionIndex_)
+            && Arrays.equals(m_expansion_, other.m_expansion_)
+            && Arrays.equals(m_expansionEndCE_, other.m_expansionEndCE_)) {
+            // not comparing paddings
+            for (int i = 0; i < m_expansionEndCE_.length; i ++) {
+                 if (m_expansionEndCEMaxSize_[i]
+                     != other.m_expansionEndCEMaxSize_[i]) {
+                     return false;
+                 }
+                 return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Generates a unique hash code for this RuleBasedCollator.
+     * @return the unique hash code for this Collator
+     * @stable ICU 2.8
+     */
+    public int hashCode()
+    {
+        String rules = getRules();
+        if (rules == null) {
+            rules = "";
+        }
+        return rules.hashCode();
+    }
+
+    /**
+     * Compares the source text String to the target text String according to
+     * the collation rules, strength and decomposition mode for this
+     * RuleBasedCollator.
+     * Returns an integer less than,
+     * equal to or greater than zero depending on whether the source String is
+     * less than, equal to or greater than the target String. See the Collator
+     * class description for an example of use.
+     * </p>
+     * <p>
+     * General recommendation: <br>
+     * If comparison are to be done to the same String multiple times, it would
+     * be more efficient to generate CollationKeys for the Strings and use
+     * CollationKey.compareTo(CollationKey) for the comparisons.
+     * If speed performance is critical and object instantiation is to be 
+     * reduced, further optimization may be achieved by generating a simpler 
+     * key of the form RawCollationKey and reusing this RawCollationKey 
+     * object with the method RuleBasedCollator.getRawCollationKey. Internal 
+     * byte representation can be directly accessed via RawCollationKey and
+     * stored for future use. Like CollationKey, RawCollationKey provides a
+     * method RawCollationKey.compareTo for key comparisons.
+     * If the each Strings are compared to only once, using the method
+     * RuleBasedCollator.compare(String, String) will have a better performance.
+     * </p>
+     * @param source the source text String.
+     * @param target the target text String.
+     * @return Returns an integer value. Value is less than zero if source is
+     *         less than target, value is zero if source and target are equal,
+     *         value is greater than zero if source is greater than target.
+     * @see CollationKey
+     * @see #getCollationKey
+     * @stable ICU 2.8
+     */
+    public int compare(String source, String target)
+    {
+        if (source == target) {
+            return 0;
+        }
+
+        // Find the length of any leading portion that is equal
+        int offset = getFirstUnmatchedOffset(source, target);
+        //return compareRegular(source, target, offset);
+        if(latinOneUse_) {
+          if ((offset < source.length() 
+               && source.charAt(offset) > ENDOFLATINONERANGE_) 
+              || (offset < target.length() 
+                  && target.charAt(offset) > ENDOFLATINONERANGE_)) { 
+              // source or target start with non-latin-1
+            return compareRegular(source, target, offset);
+          } else {
+            return compareUseLatin1(source, target, offset);
+          }
+        } else {
+          return compareRegular(source, target, offset);
+        }
+    }
+    
+    // package private inner interfaces --------------------------------------
+
+    /**
+     * Attribute values to be used when setting the Collator options
+     */
+    static interface AttributeValue
+    {
+        /**
+         * Indicates that the default attribute value will be used.
+         * See individual attribute for details on its default value.
+         */
+        static final int DEFAULT_ = -1;
+        /**
+         * Primary collation strength
+         */
+        static final int PRIMARY_ = Collator.PRIMARY;
+        /**
+         * Secondary collation strength
+         */
+        static final int SECONDARY_ = Collator.SECONDARY;
+        /**
+         * Tertiary collation strength
+         */
+        static final int TERTIARY_ = Collator.TERTIARY;
+        /**
+         * Default collation strength
+         */
+        static final int DEFAULT_STRENGTH_ = Collator.TERTIARY;
+        /**
+         * Internal use for strength checks in Collation elements
+         */
+        static final int CE_STRENGTH_LIMIT_ = Collator.TERTIARY + 1;
+        /**
+         * Quaternary collation strength
+         */
+        static final int QUATERNARY_ = 3;
+        /**
+         * Identical collation strength
+         */
+        static final int IDENTICAL_ = Collator.IDENTICAL;
+        /**
+         * Internal use for strength checks
+         */
+        static final int STRENGTH_LIMIT_ = Collator.IDENTICAL + 1;
+        /**
+         * Turn the feature off - works for FRENCH_COLLATION, CASE_LEVEL,
+         * HIRAGANA_QUATERNARY_MODE and DECOMPOSITION_MODE
+         */
+        static final int OFF_ = 16;
+        /**
+         * Turn the feature on - works for FRENCH_COLLATION, CASE_LEVEL,
+         * HIRAGANA_QUATERNARY_MODE and DECOMPOSITION_MODE
+         */
+        static final int ON_ = 17;
+        /**
+         * Valid for ALTERNATE_HANDLING. Alternate handling will be shifted
+         */
+        static final int SHIFTED_ = 20;
+        /**
+         * Valid for ALTERNATE_HANDLING. Alternate handling will be non
+         * ignorable
+         */
+        static final int NON_IGNORABLE_ = 21;
+        /**
+         * Valid for CASE_FIRST - lower case sorts before upper case
+         */
+        static final int LOWER_FIRST_ = 24;
+        /**
+         * Upper case sorts before lower case
+         */
+        static final int UPPER_FIRST_ = 25;
+        /**
+         * Number of attribute values
+         */
+        static final int LIMIT_ = 29;
+    }
+
+    /**
+     * Attributes that collation service understands. All the attributes can
+     * take DEFAULT value, as well as the values specific to each one.
+     */
+    static interface Attribute
+    {
+        /**
+         * Attribute for direction of secondary weights - used in French.
+         * Acceptable values are ON, which results in secondary weights being
+         * considered backwards and OFF which treats secondary weights in the
+         * order they appear.
+         */
+        static final int FRENCH_COLLATION_ = 0;
+        /**
+         * Attribute for handling variable elements. Acceptable values are
+         * NON_IGNORABLE (default) which treats all the codepoints with
+         * non-ignorable primary weights in the same way, and SHIFTED which
+         * causes codepoints with primary weights that are equal or below the
+         * variable top value to be ignored on primary level and moved to the
+         * quaternary level.
+         */
+        static final int ALTERNATE_HANDLING_ = 1;
+        /**
+         * Controls the ordering of upper and lower case letters. Acceptable
+         * values are OFF (default), which orders upper and lower case letters
+         * in accordance to their tertiary weights, UPPER_FIRST which forces
+         * upper case letters to sort before lower case letters, and
+         * LOWER_FIRST which does the opposite.
+         */
+        static final int CASE_FIRST_ = 2;
+        /**
+         * Controls whether an extra case level (positioned before the third
+         * level) is generated or not. Acceptable values are OFF (default),
+         * when case level is not generated, and ON which causes the case
+         * level to be generated. Contents of the case level are affected by
+         * the value of CASE_FIRST attribute. A simple way to ignore accent
+         * differences in a string is to set the strength to PRIMARY and
+         * enable case level.
+         */
+        static final int CASE_LEVEL_ = 3;
+        /**
+         * Controls whether the normalization check and necessary
+         * normalizations are performed. When set to OFF (default) no
+         * normalization check is performed. The correctness of the result is
+         * guaranteed only if the input data is in so-called FCD form (see
+         * users manual for more info). When set to ON, an incremental check
+         * is performed to see whether the input data is in the FCD form. If
+         * the data is not in the FCD form, incremental NFD normalization is
+         * performed.
+         */
+        static final int NORMALIZATION_MODE_ = 4;
+        /**
+         * The strength attribute. Can be either PRIMARY, SECONDARY, TERTIARY,
+         * QUATERNARY or IDENTICAL. The usual strength for most locales
+         * (except Japanese) is tertiary. Quaternary strength is useful when
+         * combined with shifted setting for alternate handling attribute and
+         * for JIS x 4061 collation, when it is used to distinguish between
+         * Katakana  and Hiragana (this is achieved by setting the
+         * HIRAGANA_QUATERNARY mode to on. Otherwise, quaternary level is
+         * affected only by the number of non ignorable code points in the
+         * string. Identical strength is rarely useful, as it amounts to
+         * codepoints of the NFD form of the string.
+         */
+        static final int STRENGTH_ = 5;
+        /**
+         * When turned on, this attribute positions Hiragana before all
+         * non-ignorables on quaternary level. This is a sneaky way to produce
+         * JIS sort order.
+         */
+        static final int HIRAGANA_QUATERNARY_MODE_ = 6;
+        /**
+         * Attribute count
+         */
+        static final int LIMIT_ = 7;
+    }
+
+    /**
+     * DataManipulate singleton
+     */
+    static class DataManipulate implements Trie.DataManipulate
+    {
+        // public methods ----------------------------------------------------
+
+        /**
+         * Internal method called to parse a lead surrogate's ce for the offset
+         * to the next trail surrogate data.
+         * @param ce collation element of the lead surrogate
+         * @return data offset or 0 for the next trail surrogate
+         * @stable ICU 2.8
+         */
+        public final int getFoldingOffset(int ce)
+        {
+            if (isSpecial(ce) && getTag(ce) == CE_SURROGATE_TAG_) {
+                return (ce & 0xFFFFFF);
+            }
+            return 0;
+        }
+
+        /**
+         * Get singleton object
+         */
+        public static final DataManipulate getInstance()
+        {
+            if (m_instance_ == null) {
+                m_instance_ =  new DataManipulate();
+            }
+            return m_instance_;
+        }
+
+        // private data member ----------------------------------------------
+
+        /**
+         * Singleton instance
+         */
+        private static DataManipulate m_instance_;
+
+        // private constructor ----------------------------------------------
+
+        /**
+         * private to prevent initialization
+         */
+        private DataManipulate()
+        {
+        }
+    }
+
+    /**
+     * UCAConstants
+     */
+    static final class UCAConstants
+    {
+         int FIRST_TERTIARY_IGNORABLE_[] = new int[2];       // 0x00000000
+         int LAST_TERTIARY_IGNORABLE_[] = new int[2];        // 0x00000000
+         int FIRST_PRIMARY_IGNORABLE_[] = new int[2];        // 0x00008705
+         int FIRST_SECONDARY_IGNORABLE_[] = new int[2];      // 0x00000000
+         int LAST_SECONDARY_IGNORABLE_[] = new int[2];       // 0x00000500
+         int LAST_PRIMARY_IGNORABLE_[] = new int[2];         // 0x0000DD05
+         int FIRST_VARIABLE_[] = new int[2];                 // 0x05070505
+         int LAST_VARIABLE_[] = new int[2];                  // 0x13CF0505
+         int FIRST_NON_VARIABLE_[] = new int[2];             // 0x16200505
+         int LAST_NON_VARIABLE_[] = new int[2];              // 0x767C0505
+         int RESET_TOP_VALUE_[] = new int[2];                // 0x9F000303
+         int FIRST_IMPLICIT_[] = new int[2];
+         int LAST_IMPLICIT_[] = new int[2];
+         int FIRST_TRAILING_[] = new int[2];
+         int LAST_TRAILING_[] = new int[2];
+         int PRIMARY_TOP_MIN_;
+         int PRIMARY_IMPLICIT_MIN_; // 0xE8000000
+         int PRIMARY_IMPLICIT_MAX_; // 0xF0000000
+         int PRIMARY_TRAILING_MIN_; // 0xE8000000
+         int PRIMARY_TRAILING_MAX_; // 0xF0000000
+         int PRIMARY_SPECIAL_MIN_; // 0xE8000000
+         int PRIMARY_SPECIAL_MAX_; // 0xF0000000
+    }
+
+    // package private data member -------------------------------------------
+
+    static final byte BYTE_FIRST_TAILORED_ = (byte)0x04;
+    static final byte BYTE_COMMON_ = (byte)0x05;
+    static final int COMMON_TOP_2_ = 0x86; // int for unsigness
+    static final int COMMON_BOTTOM_2_ = BYTE_COMMON_;
+    static final int COMMON_BOTTOM_3 = 0x05;
+    /**
+     * Case strength mask
+     */
+    static final int CE_CASE_BIT_MASK_ = 0xC0;
+    static final int CE_TAG_SHIFT_ = 24;
+    static final int CE_TAG_MASK_ = 0x0F000000;
+
+    static final int CE_SPECIAL_FLAG_ = 0xF0000000;
+    /**
+     * Lead surrogate that is tailored and doesn't start a contraction
+     */
+    static final int CE_SURROGATE_TAG_ = 5;
+    /**
+     * Mask to get the primary strength of the collation element
+     */
+    static final int CE_PRIMARY_MASK_ = 0xFFFF0000;
+    /**
+     * Mask to get the secondary strength of the collation element
+     */
+    static final int CE_SECONDARY_MASK_ = 0xFF00;
+    /**
+     * Mask to get the tertiary strength of the collation element
+     */
+    static final int CE_TERTIARY_MASK_ = 0xFF;
+    /**
+     * Primary strength shift
+     */
+    static final int CE_PRIMARY_SHIFT_ = 16;
+    /**
+     * Secondary strength shift
+     */
+    static final int CE_SECONDARY_SHIFT_ = 8;
+    /**
+     * Continuation marker
+     */
+    static final int CE_CONTINUATION_MARKER_ = 0xC0;
+
+    /**
+     * Size of collator raw data headers and options before the expansion
+     * data. This is used when expansion ces are to be retrieved. ICU4C uses
+     * the expansion offset starting from UCollator.UColHeader, hence ICU4J
+     * will have to minus that off to get the right expansion ce offset. In
+     * number of ints.
+     */
+    int m_expansionOffset_;
+    /**
+     * Size of collator raw data headers, options and expansions before
+     * contraction data. This is used when contraction ces are to be retrieved.
+     * ICU4C uses contraction offset starting from UCollator.UColHeader, hence
+     * ICU4J will have to minus that off to get the right contraction ce
+     * offset. In number of chars.
+     */
+    int m_contractionOffset_;
+    /**
+     * Flag indicator if Jamo is special
+     */
+    boolean m_isJamoSpecial_;
+
+    // Collator options ------------------------------------------------------
+    
+    int m_defaultVariableTopValue_;
+    boolean m_defaultIsFrenchCollation_;
+    boolean m_defaultIsAlternateHandlingShifted_;
+    int m_defaultCaseFirst_;
+    boolean m_defaultIsCaseLevel_;
+    int m_defaultDecomposition_;
+    int m_defaultStrength_;
+    boolean m_defaultIsHiragana4_;
+    boolean m_defaultIsNumericCollation_;
+    
+    /**
+     * Value of the variable top
+     */
+    int m_variableTopValue_;
+    /**
+     * Attribute for special Hiragana
+     */
+    boolean m_isHiragana4_;
+    /**
+     * Case sorting customization
+     */
+    int m_caseFirst_;
+    /**
+     * Numeric collation option
+     */
+    boolean m_isNumericCollation_;
+
+    // end Collator options --------------------------------------------------
+
+    /**
+     * Expansion table
+     */
+    int m_expansion_[];
+    /**
+     * Contraction index table
+     */
+    char m_contractionIndex_[];
+    /**
+     * Contraction CE table
+     */
+    int m_contractionCE_[];
+    /**
+     * Data trie
+     */
+    IntTrie m_trie_;
+    /**
+     * Table to store all collation elements that are the last element of an
+     * expansion. This is for use in StringSearch.
+     */
+    int m_expansionEndCE_[];
+    /**
+     * Table to store the maximum size of any expansions that end with the
+     * corresponding collation element in m_expansionEndCE_. For use in
+     * StringSearch too
+     */
+    byte m_expansionEndCEMaxSize_[];
+    /**
+     * Heuristic table to store information on whether a char character is
+     * considered "unsafe". "Unsafe" character are combining marks or those
+     * belonging to some contraction sequence from the offset 1 onwards.
+     * E.g. if "ABC" is the only contraction, then 'B' and 'C' are considered
+     * unsafe. If we have another contraction "ZA" with the one above, then
+     * 'A', 'B', 'C' are "unsafe" but 'Z' is not.
+     */
+    byte m_unsafe_[];
+    /**
+     * Table to store information on whether a codepoint can occur as the last
+     * character in a contraction
+     */
+    byte m_contractionEnd_[];
+    /**
+     * Original collation rules
+     */
+    String m_rules_;
+    /**
+     * The smallest "unsafe" codepoint
+     */
+    char m_minUnsafe_;
+    /**
+     * The smallest codepoint that could be the end of a contraction
+     */
+    char m_minContractionEnd_;
+    /**
+     * General version of the collator
+     */
+    VersionInfo m_version_;
+    /**
+     * UCA version
+     */
+    VersionInfo m_UCA_version_;
+    /**
+     * UCD version
+     */
+    VersionInfo m_UCD_version_;
+
+    /**
+     * UnicodeData.txt property object
+     */
+    static final RuleBasedCollator UCA_;
+    /**
+     * UCA Constants
+     */
+    static final UCAConstants UCA_CONSTANTS_;
+    /**
+     * Table for UCA and builder use
+     */
+    static final char UCA_CONTRACTIONS_[];
+
+    private static boolean UCA_INIT_COMPLETE;
+
+    /**
+     * Implicit generator
+     */
+    static final ImplicitCEGenerator impCEGen_;
+//    /**
+//     * Implicit constants
+//     */
+//    static final int IMPLICIT_BASE_BYTE_;
+//    static final int IMPLICIT_LIMIT_BYTE_;
+//    static final int IMPLICIT_4BYTE_BOUNDARY_;
+//    static final int LAST_MULTIPLIER_;
+//    static final int LAST2_MULTIPLIER_;
+//    static final int IMPLICIT_BASE_3BYTE_;
+//    static final int IMPLICIT_BASE_4BYTE_;
+//    static final int BYTES_TO_AVOID_ = 3;
+//    static final int OTHER_COUNT_ = 256 - BYTES_TO_AVOID_;
+//    static final int LAST_COUNT_ = OTHER_COUNT_ / 2;
+//    /**
+//     * Room for intervening, without expanding to 5 bytes
+//     */
+//    static final int LAST_COUNT2_ = OTHER_COUNT_ / 21;
+//    static final int IMPLICIT_3BYTE_COUNT_ = 1;
+//    
+    static final byte SORT_LEVEL_TERMINATOR_ = 1;
+
+//  These are values from UCA required for
+//  implicit generation and supressing sort key compression
+//  they should regularly be in the UCA, but if one
+//  is running without UCA, it could be a problem
+     static final int maxRegularPrimary  = 0xA0;
+     static final int minImplicitPrimary = 0xE0;
+     static final int maxImplicitPrimary = 0xE4;
+
+
+    // block to initialise character property database
+    static
+    {
+        // take pains to let static class init succeed, otherwise the class itself won't exist and
+        // clients will get a NoClassDefFoundException.  Instead, make the constructors fail if
+        // we can't load the UCA data.
+
+        RuleBasedCollator iUCA_ = null;
+        UCAConstants iUCA_CONSTANTS_ = null;
+        char iUCA_CONTRACTIONS_[] = null;
+        ImplicitCEGenerator iimpCEGen_ = null;
+        try
+        {
+            // !!! note what's going on here...
+            // even though the static init of the class is not yet complete, we
+            // instantiate an instance of the class.  So we'd better be sure that
+            // instantiation doesn't rely on the static initialization that's
+            // not complete yet!
+            iUCA_ = new RuleBasedCollator();
+            iUCA_CONSTANTS_ = new UCAConstants();
+            iUCA_CONTRACTIONS_ = CollatorReader.read(iUCA_, iUCA_CONSTANTS_);
+
+            // called before doing canonical closure for the UCA.
+            iimpCEGen_ = new ImplicitCEGenerator(minImplicitPrimary, maxImplicitPrimary);
+            //iimpCEGen_ = new ImplicitCEGenerator(iUCA_CONSTANTS_.PRIMARY_IMPLICIT_MIN_, iUCA_CONSTANTS_.PRIMARY_IMPLICIT_MAX_);
+            iUCA_.init();
+            ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME, ULocale.ENGLISH);
+            iUCA_.m_rules_ = (String)rb.getObject("UCARules");
+        }
+        catch (MissingResourceException ex)
+        {
+//             throw ex;
+        }
+        catch (IOException e)
+        {
+           // e.printStackTrace();
+//             throw new MissingResourceException(e.getMessage(),"","");
+        }
+
+        UCA_ = iUCA_;
+        UCA_CONSTANTS_ = iUCA_CONSTANTS_;
+        UCA_CONTRACTIONS_ = iUCA_CONTRACTIONS_;
+        impCEGen_ = iimpCEGen_;
+
+        UCA_INIT_COMPLETE = true;
+    }
+
+
+    private static void checkUCA() throws MissingResourceException {
+        if (UCA_INIT_COMPLETE && UCA_ == null) {
+            throw new MissingResourceException("Collator UCA data unavailable", "", "");
+        }
+    }
+        
+    // package private constructors ------------------------------------------
+
+    /**
+    * <p>Private contructor for use by subclasses.
+    * Public access to creating Collators is handled by the API
+    * Collator.getInstance() or RuleBasedCollator(String rules).
+    * </p>
+    * <p>
+    * This constructor constructs the UCA collator internally
+    * </p>
+    */
+    RuleBasedCollator()
+    {
+        checkUCA();
+        initUtility(false);
+    }
+
+    /**
+     * Constructors a RuleBasedCollator from the argument locale.
+     * If no resource bundle is associated with the locale, UCA is used
+     * instead.
+     * @param locale
+     */
+    RuleBasedCollator(ULocale locale)
+    {
+        checkUCA();
+        ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME, locale);
+        initUtility(false);
+        if (rb != null) {
+            try {
+                // Use keywords, if supplied for lookup
+                String collkey = locale.getKeywordValue("collation");
+                  if(collkey == null) {
+                      collkey = rb.getStringWithFallback("collations/default");
+                }
+                       
+                // collations/default will always give a string back
+                // keyword for the real collation data
+                // if "collations/collkey" will return null if collkey == null 
+                ICUResourceBundle elements = rb.getWithFallback("collations/" + collkey);
+                if (elements != null) {
+                    // TODO: Determine actual & valid locale correctly
+                    ULocale uloc = rb.getULocale();
+                    setLocale(uloc, uloc);
+
+                    m_rules_ = elements.getString("Sequence");
+                    ByteBuffer buf = elements.get("%%CollationBin").getBinary();
+                    // %%CollationBin
+                    if(buf!=null){
+                    //     m_rules_ = (String)rules[1][1];
+                        byte map[] = buf.array();
+                        CollatorReader.initRBC(this, map);
+                        /*
+                        BufferedInputStream input =
+                                                 new BufferedInputStream(
+                                                    new ByteArrayInputStream(map));
+                        /*
+                        CollatorReader reader = new CollatorReader(input, false);
+                        if (map.length > MIN_BINARY_DATA_SIZE_) {
+                            reader.read(this, null);
+                        }
+                        else {
+                            reader.readHeader(this);
+                            reader.readOptions(this);
+                            // duplicating UCA_'s data
+                            setWithUCATables();
+                        }
+                        */
+                        // at this point, we have read in the collator
+                        // now we need to check whether the binary image has
+                        // the right UCA and other versions
+                        if(!m_UCA_version_.equals(UCA_.m_UCA_version_) ||
+                        !m_UCD_version_.equals(UCA_.m_UCD_version_)) {
+                            init(m_rules_);
+                            return;
+                        }
+                        init();
+                        return;
+                    }
+                    else {                        
+                        init(m_rules_);
+                        return;
+                    }
+                }
+            }
+            catch (Exception e) {
+                // e.printStackTrace();
+                // if failed use UCA.
+            }
+        }
+        setWithUCAData();
+    }
+
+    // package private methods -----------------------------------------------
+
+    /**
+     * Sets this collator to use the tables in UCA. Note options not taken
+     * care of here.
+     */
+    final void setWithUCATables()
+    {
+        m_contractionOffset_ = UCA_.m_contractionOffset_;
+        m_expansionOffset_ = UCA_.m_expansionOffset_;
+        m_expansion_ = UCA_.m_expansion_;
+        m_contractionIndex_ = UCA_.m_contractionIndex_;
+        m_contractionCE_ = UCA_.m_contractionCE_;
+        m_trie_ = UCA_.m_trie_;
+        m_expansionEndCE_ = UCA_.m_expansionEndCE_;
+        m_expansionEndCEMaxSize_ = UCA_.m_expansionEndCEMaxSize_;
+        m_unsafe_ = UCA_.m_unsafe_;
+        m_contractionEnd_ = UCA_.m_contractionEnd_;
+        m_minUnsafe_ = UCA_.m_minUnsafe_;
+        m_minContractionEnd_ = UCA_.m_minContractionEnd_;
+    }
+
+    /**
+     * Sets this collator to use the all options and tables in UCA.
+     */
+    final void setWithUCAData()
+    {
+        latinOneFailed_ = true;
+
+        m_addition3_ = UCA_.m_addition3_;
+        m_bottom3_ = UCA_.m_bottom3_;
+        m_bottomCount3_ = UCA_.m_bottomCount3_;
+        m_caseFirst_ = UCA_.m_caseFirst_;
+        m_caseSwitch_ = UCA_.m_caseSwitch_;
+        m_common3_ = UCA_.m_common3_;
+        m_contractionOffset_ = UCA_.m_contractionOffset_;
+        setDecomposition(UCA_.getDecomposition());
+        m_defaultCaseFirst_ = UCA_.m_defaultCaseFirst_;
+        m_defaultDecomposition_ = UCA_.m_defaultDecomposition_;
+        m_defaultIsAlternateHandlingShifted_
+                                   = UCA_.m_defaultIsAlternateHandlingShifted_;
+        m_defaultIsCaseLevel_ = UCA_.m_defaultIsCaseLevel_;
+        m_defaultIsFrenchCollation_ = UCA_.m_defaultIsFrenchCollation_;
+        m_defaultIsHiragana4_ = UCA_.m_defaultIsHiragana4_;
+        m_defaultStrength_ = UCA_.m_defaultStrength_;
+        m_defaultVariableTopValue_ = UCA_.m_defaultVariableTopValue_;
+        m_defaultIsNumericCollation_ = UCA_.m_defaultIsNumericCollation_;
+        m_expansionOffset_ = UCA_.m_expansionOffset_;
+        m_isAlternateHandlingShifted_ = UCA_.m_isAlternateHandlingShifted_;
+        m_isCaseLevel_ = UCA_.m_isCaseLevel_;
+        m_isFrenchCollation_ = UCA_.m_isFrenchCollation_;
+        m_isHiragana4_ = UCA_.m_isHiragana4_;
+        m_isJamoSpecial_ = UCA_.m_isJamoSpecial_;
+        m_isSimple3_ = UCA_.m_isSimple3_;
+        m_mask3_ = UCA_.m_mask3_;
+        m_minContractionEnd_ = UCA_.m_minContractionEnd_;
+        m_minUnsafe_ = UCA_.m_minUnsafe_;
+        m_rules_ = UCA_.m_rules_;
+        setStrength(UCA_.getStrength());
+        m_top3_ = UCA_.m_top3_;
+        m_topCount3_ = UCA_.m_topCount3_;
+        m_variableTopValue_ = UCA_.m_variableTopValue_;
+        m_isNumericCollation_ = UCA_.m_isNumericCollation_;
+        setWithUCATables();
+        latinOneFailed_ = false;
+    }
+
+    /**
+     * Test whether a char character is potentially "unsafe" for use as a
+     * collation starting point. "Unsafe" characters are combining marks or
+     * those belonging to some contraction sequence from the offset 1 onwards.
+     * E.g. if "ABC" is the only contraction, then 'B' and
+     * 'C' are considered unsafe. If we have another contraction "ZA" with
+     * the one above, then 'A', 'B', 'C' are "unsafe" but 'Z' is not.
+     * @param ch character to determin
+     * @return true if ch is unsafe, false otherwise
+     */
+    final boolean isUnsafe(char ch)
+    {
+        if (ch < m_minUnsafe_) {
+            return false;
+        }
+        
+        if (ch >= (HEURISTIC_SIZE_ << HEURISTIC_SHIFT_)) {
+            if (UTF16.isLeadSurrogate(ch) 
+                || UTF16.isTrailSurrogate(ch)) {
+                //  Trail surrogate are always considered unsafe.
+                return true;
+            }
+            ch &= HEURISTIC_OVERFLOW_MASK_;
+            ch += HEURISTIC_OVERFLOW_OFFSET_;
+        }
+        int value = m_unsafe_[ch >> HEURISTIC_SHIFT_];
+        return ((value >> (ch & HEURISTIC_MASK_)) & 1) != 0;
+    }
+
+    /**
+     * Approximate determination if a char character is at a contraction end.
+     * Guaranteed to be true if a character is at the end of a contraction,
+     * otherwise it is not deterministic.
+     * @param ch character to be determined
+     */
+    final boolean isContractionEnd(char ch)
+    {
+        if (UTF16.isTrailSurrogate(ch)) {
+            return true;
+        }
+
+        if (ch < m_minContractionEnd_) {
+            return false;
+        }
+
+        if (ch >= (HEURISTIC_SIZE_ << HEURISTIC_SHIFT_)) {
+            ch &= HEURISTIC_OVERFLOW_MASK_;
+            ch += HEURISTIC_OVERFLOW_OFFSET_;
+        }
+        int value = m_contractionEnd_[ch >> HEURISTIC_SHIFT_];
+        return ((value >> (ch & HEURISTIC_MASK_)) & 1) != 0;
+    }
+
+    /**
+     * Retrieve the tag of a special ce
+     * @param ce ce to test
+     * @return tag of ce
+     */
+    static int getTag(int ce)
+    {
+        return (ce & CE_TAG_MASK_) >> CE_TAG_SHIFT_;
+    }
+
+    /**
+     * Checking if ce is special
+     * @param ce to check
+     * @return true if ce is special
+     */
+    static boolean isSpecial(int ce)
+    {
+        return (ce & CE_SPECIAL_FLAG_) == CE_SPECIAL_FLAG_;
+    }
+
+    /**
+     * Checks if the argument ce is a continuation
+     * @param ce collation element to test
+     * @return true if ce is a continuation
+     */
+    static final boolean isContinuation(int ce)
+    {
+        return ce != CollationElementIterator.NULLORDER
+                       && (ce & CE_CONTINUATION_TAG_) == CE_CONTINUATION_TAG_;
+    }
+
+    // private inner classes ------------------------------------------------
+
+    // private variables -----------------------------------------------------
+
+    /**
+     * The smallest natural unsafe or contraction end char character before
+     * tailoring.
+     * This is a combining mark.
+     */
+    private static final int DEFAULT_MIN_HEURISTIC_ = 0x300;
+    /**
+     * Heuristic table table size. Size is 32 bytes, 1 bit for each
+     * latin 1 char, and some power of two for hashing the rest of the chars.
+     * Size in bytes.
+     */
+    private static final char HEURISTIC_SIZE_ = 1056;
+    /**
+     * Mask value down to "some power of two" - 1,
+     * number of bits, not num of bytes.
+     */
+    private static final char HEURISTIC_OVERFLOW_MASK_ = 0x1fff;
+    /**
+     * Unsafe character shift
+     */
+    private static final int HEURISTIC_SHIFT_ = 3;
+    /**
+     * Unsafe character addition for character too large, it has to be folded
+     * then incremented.
+     */
+    private static final char HEURISTIC_OVERFLOW_OFFSET_ = 256;
+    /**
+     * Mask value to get offset in heuristic table.
+     */
+    private static final char HEURISTIC_MASK_ = 7;
+
+    private int m_caseSwitch_;
+    private int m_common3_;
+    private int m_mask3_;
+    /**
+     * When switching case, we need to add or subtract different values.
+     */
+    private int m_addition3_;
+    /**
+     * Upper range when compressing
+     */
+    private int m_top3_;
+    /**
+     * Upper range when compressing
+     */
+    private int m_bottom3_;
+    private int m_topCount3_;
+    private int m_bottomCount3_;
+    /**
+     * Case first constants
+     */
+    private static final int CASE_SWITCH_ = 0xC0;
+    private static final int NO_CASE_SWITCH_ = 0;
+    /**
+     * Case level constants
+     */
+    private static final int CE_REMOVE_CASE_ = 0x3F;
+    private static final int CE_KEEP_CASE_ = 0xFF;
+    /**
+     * Case strength mask
+     */
+    private static final int CE_CASE_MASK_3_ = 0xFF;
+    /**
+     * Sortkey size factor. Values can be changed.
+     */
+    private static final double PROPORTION_2_ = 0.5;
+    private static final double PROPORTION_3_ = 0.667;
+
+    // These values come from the UCA ----------------------------------------
+
+    /**
+     * This is an enum that lists magic special byte values from the
+     * fractional UCA
+     */
+    //private static final byte BYTE_ZERO_ = 0x0;
+    //private static final byte BYTE_LEVEL_SEPARATOR_ = (byte)0x01;
+    //private static final byte BYTE_SORTKEY_GLUE_ = (byte)0x02;
+    private static final byte BYTE_SHIFT_PREFIX_ = (byte)0x03;
+    /*private*/ static final byte BYTE_UNSHIFTED_MIN_ = BYTE_SHIFT_PREFIX_;
+    //private static final byte BYTE_FIRST_UCA_ = BYTE_COMMON_;
+    static final byte CODAN_PLACEHOLDER = 0x24;
+    //private static final byte BYTE_LAST_LATIN_PRIMARY_ = (byte)0x4C;
+    private static final byte BYTE_FIRST_NON_LATIN_PRIMARY_ = (byte)0x4D;
+    private static final byte BYTE_UNSHIFTED_MAX_ = (byte)0xFF;
+    private static final int TOTAL_2_ = COMMON_TOP_2_ - COMMON_BOTTOM_2_ - 1;
+    private static final int FLAG_BIT_MASK_CASE_SWITCH_OFF_ = 0x80;
+    private static final int FLAG_BIT_MASK_CASE_SWITCH_ON_ = 0x40;
+    private static final int COMMON_TOP_CASE_SWITCH_OFF_3_ = 0x85;
+    private static final int COMMON_TOP_CASE_SWITCH_LOWER_3_ = 0x45;
+    private static final int COMMON_TOP_CASE_SWITCH_UPPER_3_ = 0xC5;
+    private static final int COMMON_BOTTOM_3_ = 0x05;
+    private static final int COMMON_BOTTOM_CASE_SWITCH_UPPER_3_ = 0x86;
+    private static final int COMMON_BOTTOM_CASE_SWITCH_LOWER_3_ =
+                                                              COMMON_BOTTOM_3_;
+    private static final int TOP_COUNT_2_ = (int)(PROPORTION_2_ * TOTAL_2_);
+    private static final int BOTTOM_COUNT_2_ = TOTAL_2_ - TOP_COUNT_2_;
+    private static final int COMMON_2_ = COMMON_BOTTOM_2_;
+    private static final int COMMON_UPPER_FIRST_3_ = 0xC5;
+    private static final int COMMON_NORMAL_3_ = COMMON_BOTTOM_3_;
+    //private static final int COMMON_4_ = (byte)0xFF;
+
+
+
+    /*
+     * Minimum size required for the binary collation data in bytes.
+     * Size of UCA header + size of options to 4 bytes
+     */
+    //private static final int MIN_BINARY_DATA_SIZE_ = (42 + 25) << 2;
+
+    /**
+     * If this collator is to generate only simple tertiaries for fast path
+     */
+    private boolean m_isSimple3_;
+
+    /**
+     * French collation sorting flag
+     */
+    private boolean m_isFrenchCollation_;
+    /**
+     * Flag indicating if shifted is requested for Quaternary alternate
+     * handling. If this is not true, the default for alternate handling will
+     * be non-ignorable.
+     */
+    private boolean m_isAlternateHandlingShifted_;
+    /**
+     * Extra case level for sorting
+     */
+    private boolean m_isCaseLevel_;
+
+    private static final int SORT_BUFFER_INIT_SIZE_ = 128;
+    private static final int SORT_BUFFER_INIT_SIZE_1_ =
+                                                    SORT_BUFFER_INIT_SIZE_ << 3;
+    private static final int SORT_BUFFER_INIT_SIZE_2_ = SORT_BUFFER_INIT_SIZE_;
+    private static final int SORT_BUFFER_INIT_SIZE_3_ = SORT_BUFFER_INIT_SIZE_;
+    private static final int SORT_BUFFER_INIT_SIZE_CASE_ =
+                                                SORT_BUFFER_INIT_SIZE_ >> 2;
+    private static final int SORT_BUFFER_INIT_SIZE_4_ = SORT_BUFFER_INIT_SIZE_;
+
+    private static final int CE_CONTINUATION_TAG_ = 0xC0;
+    private static final int CE_REMOVE_CONTINUATION_MASK_ = 0xFFFFFF3F;
+
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+
+    //private static final int CE_RESET_TOP_VALUE_ = 0x9F000303;
+    //private static final int CE_NEXT_TOP_VALUE_ = 0xE8960303;
+
+    private static final byte SORT_CASE_BYTE_START_ = (byte)0x80;
+    private static final byte SORT_CASE_SHIFT_START_ = (byte)7;
+
+    /**
+     * CE buffer size
+     */
+    private static final int CE_BUFFER_SIZE_ = 512;
+
+    // variables for Latin-1 processing
+    boolean latinOneUse_        = false;
+    boolean latinOneRegenTable_ = false;
+    boolean latinOneFailed_     = false;
+
+    int latinOneTableLen_ = 0;
+    int latinOneCEs_[] = null;
+    /**
+     * Bunch of utility iterators
+     */
+    private StringUCharacterIterator m_srcUtilIter_;
+    private CollationElementIterator m_srcUtilColEIter_;
+    private StringUCharacterIterator m_tgtUtilIter_;
+    private CollationElementIterator m_tgtUtilColEIter_;
+    /**
+     * Utility comparison flags
+     */
+    private boolean m_utilCompare0_;
+    //private boolean m_utilCompare1_;
+    private boolean m_utilCompare2_;
+    private boolean m_utilCompare3_;
+    private boolean m_utilCompare4_;
+    private boolean m_utilCompare5_;
+    /**
+     * Utility byte buffer
+     */
+    private byte m_utilBytes0_[];
+    private byte m_utilBytes1_[];
+    private byte m_utilBytes2_[];
+    private byte m_utilBytes3_[];
+    private byte m_utilBytes4_[];
+    //private byte m_utilBytes5_[];
+    private RawCollationKey m_utilRawCollationKey_;
+
+    private int m_utilBytesCount0_;
+    private int m_utilBytesCount1_;
+    private int m_utilBytesCount2_;
+    private int m_utilBytesCount3_;
+    private int m_utilBytesCount4_;
+    //private int m_utilBytesCount5_;
+    //private int m_utilCount0_;
+    //private int m_utilCount1_;
+    private int m_utilCount2_;
+    private int m_utilCount3_;
+    private int m_utilCount4_;
+    //private int m_utilCount5_;
+
+    private int m_utilFrenchStart_;
+    private int m_utilFrenchEnd_;
+
+    /**
+     * Preparing the CE buffers. will be filled during the primary phase
+     */
+    private int m_srcUtilCEBuffer_[];
+    private int m_tgtUtilCEBuffer_[];
+    private int m_srcUtilCEBufferSize_;
+    private int m_tgtUtilCEBufferSize_;
+
+    private int m_srcUtilContOffset_;
+    private int m_tgtUtilContOffset_;
+
+    private int m_srcUtilOffset_;
+    private int m_tgtUtilOffset_;
+
+    // private methods -------------------------------------------------------
+
+    private void init(String rules) throws Exception
+    {
+        setWithUCAData();
+        CollationParsedRuleBuilder builder
+                                       = new CollationParsedRuleBuilder(rules);
+        builder.setRules(this);
+        m_rules_ = rules;
+        init();
+        initUtility(false);
+    }
+    
+    private final int compareRegular(String source, String target, int offset) {
+        if (m_srcUtilIter_ == null) {
+            initUtility(true);
+        }
+        int strength = getStrength();
+        // setting up the collator parameters
+        m_utilCompare0_ = m_isCaseLevel_;
+        //m_utilCompare1_ = true;
+        m_utilCompare2_ = strength >= SECONDARY;
+        m_utilCompare3_ = strength >= TERTIARY;
+        m_utilCompare4_ = strength >= QUATERNARY;
+        m_utilCompare5_ = strength == IDENTICAL;
+        boolean doFrench = m_isFrenchCollation_ && m_utilCompare2_;
+        boolean doShift4 = m_isAlternateHandlingShifted_ && m_utilCompare4_;
+        boolean doHiragana4 = m_isHiragana4_ && m_utilCompare4_;
+
+        if (doHiragana4 && doShift4) {
+            String sourcesub = source.substring(offset);
+            String targetsub = target.substring(offset);
+            return compareBySortKeys(sourcesub, targetsub);
+        }
+
+        // This is the lowest primary value that will not be ignored if shifted
+        int lowestpvalue = m_isAlternateHandlingShifted_
+                                            ? m_variableTopValue_ << 16 : 0;
+        m_srcUtilCEBufferSize_ = 0;
+        m_tgtUtilCEBufferSize_ = 0;
+        int result = doPrimaryCompare(doHiragana4, lowestpvalue, source,
+                                      target, offset);
+        if (m_srcUtilCEBufferSize_ == -1
+            && m_tgtUtilCEBufferSize_ == -1) {
+            // since the cebuffer is cleared when we have determined that
+            // either source is greater than target or vice versa, the return
+            // result is the comparison result and not the hiragana result
+            return result;
+        }
+
+        int hiraganaresult = result;
+
+        if (m_utilCompare2_) {
+            result = doSecondaryCompare(doFrench);
+            if (result != 0) {
+                return result;
+            }
+        }
+        // doing the case bit
+        if (m_utilCompare0_) {
+            result = doCaseCompare();
+            if (result != 0) {
+                return result;
+            }
+        }
+        // Tertiary level
+        if (m_utilCompare3_) {
+            result = doTertiaryCompare();
+            if (result != 0) {
+                return result;
+            }
+        }
+
+        if (doShift4) {  // checkQuad
+            result = doQuaternaryCompare(lowestpvalue);
+            if (result != 0) {
+                return result;
+            }
+        }
+        else if (doHiragana4 && hiraganaresult != 0) {
+            // If we're fine on quaternaries, we might be different
+            // on Hiragana. This, however, might fail us in shifted.
+            return hiraganaresult;
+        }
+
+        // For IDENTICAL comparisons, we use a bitwise character comparison
+        // as a tiebreaker if all else is equal.
+        // Getting here  should be quite rare - strings are not identical -
+        // that is checked first, but compared == through all other checks.
+        if (m_utilCompare5_) {
+            return doIdenticalCompare(source, target, offset, true);
+        }
+        return 0;
+    }
+
+    /**
+     * Gets the 2 bytes of primary order and adds it to the primary byte array
+     * @param ce current ce
+     * @param notIsContinuation flag indicating if the current bytes belong to
+     *          a continuation ce
+     * @param doShift flag indicating if ce is to be shifted
+     * @param leadPrimary lead primary used for compression
+     * @param commonBottom4 common byte value for Quaternary
+     * @param bottomCount4 smallest byte value for Quaternary
+     * @return the new lead primary for compression
+     */
+    private final int doPrimaryBytes(int ce, boolean notIsContinuation,
+                                  boolean doShift, int leadPrimary,
+                                  int commonBottom4, int bottomCount4)
+    {
+
+        int p2 = (ce >>= 16) & LAST_BYTE_MASK_; // in ints for unsigned
+        int p1 = ce >>> 8;  // comparison
+        if (doShift) {
+            if (m_utilCount4_ > 0) {
+                while (m_utilCount4_ > bottomCount4) {
+                    m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                         (byte)(commonBottom4 + bottomCount4));
+                    m_utilBytesCount4_ ++;
+                    m_utilCount4_ -= bottomCount4;
+                }
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                       (byte)(commonBottom4
+                                              + (m_utilCount4_ - 1)));
+                m_utilBytesCount4_ ++;
+                m_utilCount4_ = 0;
+            }
+            // dealing with a variable and we're treating them as shifted
+            // This is a shifted ignorable
+            if (p1 != 0) {
+                // we need to check this since we could be in continuation
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                       (byte)p1);
+                m_utilBytesCount4_ ++;
+            }
+            if (p2 != 0) {
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                       (byte)p2);
+                m_utilBytesCount4_ ++;
+            }
+        }
+        else {
+            // Note: This code assumes that the table is well built
+            // i.e. not having 0 bytes where they are not supposed to be.
+            // Usually, we'll have non-zero primary1 & primary2, except
+            // in cases of LatinOne and friends, when primary2 will be
+            // regular and simple sortkey calc
+            if (p1 != CollationElementIterator.IGNORABLE) {
+                if (notIsContinuation) {
+                    if (leadPrimary == p1) {
+                        m_utilBytes1_ = append(m_utilBytes1_,
+                                               m_utilBytesCount1_, (byte)p2);
+                        m_utilBytesCount1_ ++;
+                    }
+                    else {
+                        if (leadPrimary != 0) {
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                    ((p1 > leadPrimary)
+                                            ? BYTE_UNSHIFTED_MAX_
+                                            : BYTE_UNSHIFTED_MIN_)); 
+                            m_utilBytesCount1_ ++;
+                        }
+                        if (p2 == CollationElementIterator.IGNORABLE) {
+                            // one byter, not compressed
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                                   (byte)p1);
+                            m_utilBytesCount1_ ++;
+                            leadPrimary = 0;
+                        }
+                        else if (p1 < BYTE_FIRST_NON_LATIN_PRIMARY_
+                              || (p1 > maxRegularPrimary
+                    //> (RuleBasedCollator.UCA_CONSTANTS_.LAST_NON_VARIABLE_[0]
+                    //                                              >>> 24)
+                                && p1 < minImplicitPrimary
+                    //< (RuleBasedCollator.UCA_CONSTANTS_.FIRST_IMPLICIT_[0]
+                    //                                              >>> 24)
+                    )) {
+                                // not compressible
+                                leadPrimary = 0;
+                                m_utilBytes1_ = append(m_utilBytes1_,
+                                                       m_utilBytesCount1_,
+                                                       (byte)p1);
+                                m_utilBytesCount1_ ++;
+                                m_utilBytes1_ = append(m_utilBytes1_,
+                                                       m_utilBytesCount1_,
+                                                       (byte)p2);
+                                m_utilBytesCount1_ ++;
+                        }
+                        else { // compress
+                            leadPrimary = p1;
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                                   (byte)p1);
+                            m_utilBytesCount1_ ++;
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                  m_utilBytesCount1_, (byte)p2);
+                            m_utilBytesCount1_ ++;
+                        }
+                    }
+                }
+                else {
+                    // continuation, add primary to the key, no compression
+                    m_utilBytes1_ = append(m_utilBytes1_,
+                                           m_utilBytesCount1_, (byte)p1);
+                    m_utilBytesCount1_ ++;
+                    if (p2 != CollationElementIterator.IGNORABLE) {
+                        m_utilBytes1_ = append(m_utilBytes1_,
+                                           m_utilBytesCount1_, (byte)p2);
+                        // second part
+                        m_utilBytesCount1_ ++;
+                    }
+                }
+            }
+        }
+        return leadPrimary;
+    }
+
+    /**
+     * Gets the secondary byte and adds it to the secondary byte array
+     * @param ce current ce
+     * @param notIsContinuation flag indicating if the current bytes belong to
+     *          a continuation ce
+     * @param doFrench flag indicator if french sort is to be performed
+     */
+    private final void doSecondaryBytes(int ce, boolean notIsContinuation,
+                                        boolean doFrench)
+    {
+        int s = (ce >>= 8) & LAST_BYTE_MASK_; // int for comparison
+        if (s != 0) {
+            if (!doFrench) {
+                // This is compression code.
+                if (s == COMMON_2_ && notIsContinuation) {
+                   m_utilCount2_ ++;
+                }
+                else {
+                    if (m_utilCount2_ > 0) {
+                        if (s > COMMON_2_) { // not necessary for 4th level.
+                            while (m_utilCount2_ > TOP_COUNT_2_) {
+                                m_utilBytes2_ = append(m_utilBytes2_,
+                                        m_utilBytesCount2_,
+                                        (byte)(COMMON_TOP_2_ - TOP_COUNT_2_));
+                                m_utilBytesCount2_ ++;
+                                m_utilCount2_ -= TOP_COUNT_2_;
+                            }
+                            m_utilBytes2_ = append(m_utilBytes2_,
+                                                   m_utilBytesCount2_,
+                                                   (byte)(COMMON_TOP_2_
+                                                       - (m_utilCount2_ - 1)));
+                            m_utilBytesCount2_ ++;
+                        }
+                        else {
+                            while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                                m_utilBytes2_ = append(m_utilBytes2_,
+                                                       m_utilBytesCount2_,
+                                    (byte)(COMMON_BOTTOM_2_ + BOTTOM_COUNT_2_));
+                                m_utilBytesCount2_ ++;
+                                m_utilCount2_ -= BOTTOM_COUNT_2_;
+                            }
+                            m_utilBytes2_ = append(m_utilBytes2_,
+                                                   m_utilBytesCount2_,
+                                                   (byte)(COMMON_BOTTOM_2_
+                                                       + (m_utilCount2_ - 1)));
+                            m_utilBytesCount2_ ++;
+                        }
+                        m_utilCount2_ = 0;
+                    }
+                    m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                           (byte)s);
+                    m_utilBytesCount2_ ++;
+                }
+            }
+            else {
+                  m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                         (byte)s);
+                  m_utilBytesCount2_ ++;
+                  // Do the special handling for French secondaries
+                  // We need to get continuation elements and do intermediate
+                  // restore
+                  // abc1c2c3de with french secondaries need to be edc1c2c3ba
+                  // NOT edc3c2c1ba
+                  if (notIsContinuation) {
+                        if (m_utilFrenchStart_ != -1) {
+                            // reverse secondaries from frenchStartPtr up to
+                            // frenchEndPtr
+                            reverseBuffer(m_utilBytes2_);
+                            m_utilFrenchStart_ = -1;
+                        }
+                  }
+                  else {
+                        if (m_utilFrenchStart_ == -1) {
+                            m_utilFrenchStart_  = m_utilBytesCount2_ - 2;
+                        }
+                        m_utilFrenchEnd_ = m_utilBytesCount2_ - 1;
+                  }
+            }
+        }
+    }
+
+    /**
+     * Reverse the argument buffer
+     * @param buffer to reverse
+     */
+    private void reverseBuffer(byte buffer[])
+    {
+        int start = m_utilFrenchStart_;
+        int end = m_utilFrenchEnd_;
+        while (start < end) {
+            byte b = buffer[start];
+            buffer[start ++] = buffer[end];
+            buffer[end --] = b;
+        }
+    }
+
+    /**
+     * Insert the case shifting byte if required
+     * @param caseshift value
+     * @return new caseshift value
+     */
+    private final int doCaseShift(int caseshift)
+    {
+        if (caseshift  == 0) {
+            m_utilBytes0_ = append(m_utilBytes0_, m_utilBytesCount0_,
+                                   SORT_CASE_BYTE_START_);
+            m_utilBytesCount0_ ++;
+            caseshift = SORT_CASE_SHIFT_START_;
+        }
+        return caseshift;
+    }
+
+    /**
+     * Performs the casing sort
+     * @param tertiary byte in ints for easy comparison
+     * @param notIsContinuation flag indicating if the current bytes belong to
+     *          a continuation ce
+     * @param caseshift
+     * @return the new value of case shift
+     */
+    private final int doCaseBytes(int tertiary, boolean notIsContinuation,
+                                  int caseshift)
+    {
+        caseshift = doCaseShift(caseshift);
+
+        if (notIsContinuation && tertiary != 0) {
+            byte casebits = (byte)(tertiary & 0xC0);
+            if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+                if (casebits == 0) {
+                    m_utilBytes0_[m_utilBytesCount0_ - 1]
+                                                      |= (1 << (-- caseshift));
+                }
+                else {
+                     // second bit
+                     caseshift = doCaseShift(caseshift - 1);
+                     m_utilBytes0_[m_utilBytesCount0_ - 1]
+                                    |= ((casebits >> 6) & 1) << (-- caseshift);
+                }
+            }
+            else {
+                if (casebits != 0) {
+                    m_utilBytes0_[m_utilBytesCount0_ - 1]
+                                                        |= 1 << (-- caseshift);
+                    // second bit
+                    caseshift = doCaseShift(caseshift);
+                    m_utilBytes0_[m_utilBytesCount0_ - 1]
+                                  |= ((casebits >> 7) & 1) << (-- caseshift);
+                }
+                else {
+                    caseshift --;
+                }
+            }
+        }
+
+        return caseshift;
+    }
+
+    /**
+     * Gets the tertiary byte and adds it to the tertiary byte array
+     * @param tertiary byte in int for easy comparison
+     * @param notIsContinuation flag indicating if the current bytes belong to
+     *          a continuation ce
+     */
+    private final void doTertiaryBytes(int tertiary, boolean notIsContinuation)
+    {
+        if (tertiary != 0) {
+            // This is compression code.
+            // sequence size check is included in the if clause
+            if (tertiary == m_common3_ && notIsContinuation) {
+                 m_utilCount3_ ++;
+            }
+            else {
+                int common3 = m_common3_ & LAST_BYTE_MASK_;
+                if (tertiary > common3 && m_common3_ == COMMON_NORMAL_3_) {
+                    tertiary += m_addition3_;
+                }
+                else if (tertiary <= common3
+                         && m_common3_ == COMMON_UPPER_FIRST_3_) {
+                    tertiary -= m_addition3_;
+                }
+                if (m_utilCount3_ > 0) {
+                    if (tertiary > common3) {
+                        while (m_utilCount3_ > m_topCount3_) {
+                            m_utilBytes3_ = append(m_utilBytes3_,
+                                                   m_utilBytesCount3_,
+                                            (byte)(m_top3_ - m_topCount3_));
+                            m_utilBytesCount3_ ++;
+                            m_utilCount3_ -= m_topCount3_;
+                        }
+                        m_utilBytes3_ = append(m_utilBytes3_,
+                                               m_utilBytesCount3_,
+                                               (byte)(m_top3_
+                                                      - (m_utilCount3_ - 1)));
+                        m_utilBytesCount3_ ++;
+                    }
+                    else {
+                        while (m_utilCount3_ > m_bottomCount3_) {
+                            m_utilBytes3_ = append(m_utilBytes3_,
+                                                   m_utilBytesCount3_,
+                                         (byte)(m_bottom3_ + m_bottomCount3_));
+                            m_utilBytesCount3_ ++;
+                            m_utilCount3_ -= m_bottomCount3_;
+                        }
+                        m_utilBytes3_ = append(m_utilBytes3_,
+                                               m_utilBytesCount3_,
+                                               (byte)(m_bottom3_
+                                                      + (m_utilCount3_ - 1)));
+                        m_utilBytesCount3_ ++;
+                    }
+                    m_utilCount3_ = 0;
+                }
+                m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                       (byte)tertiary);
+                m_utilBytesCount3_ ++;
+            }
+        }
+    }
+
+    /**
+     * Gets the Quaternary byte and adds it to the Quaternary byte array
+     * @param isCodePointHiragana flag indicator if the previous codepoint
+     *          we dealt with was Hiragana
+     * @param commonBottom4 smallest common Quaternary byte
+     * @param bottomCount4 smallest Quaternary byte
+     * @param hiragana4 hiragana Quaternary byte
+     */
+    private final void doQuaternaryBytes(boolean isCodePointHiragana,
+                                      int commonBottom4, int bottomCount4,
+                                      byte hiragana4)
+    {
+        if (isCodePointHiragana) { // This was Hiragana, need to note it
+            if (m_utilCount4_ > 0) { // Close this part
+                while (m_utilCount4_ > bottomCount4) {
+                    m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                           (byte)(commonBottom4
+                                                        + bottomCount4));
+                    m_utilBytesCount4_ ++;
+                    m_utilCount4_ -= bottomCount4;
+                }
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                      (byte)(commonBottom4
+                                             + (m_utilCount4_ - 1)));
+                m_utilBytesCount4_ ++;
+                m_utilCount4_ = 0;
+            }
+            m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                   hiragana4); // Add the Hiragana
+            m_utilBytesCount4_ ++;
+        }
+        else { // This wasn't Hiragana, so we can continue adding stuff
+            m_utilCount4_ ++;
+        }
+    }
+
+    /**
+     * Iterates through the argument string for all ces.
+     * Split the ces into their relevant primaries, secondaries etc.
+     * @param source normalized string
+     * @param doFrench flag indicator if special handling of French has to be
+     *                  done
+     * @param hiragana4 offset for Hiragana quaternary
+     * @param commonBottom4 smallest common quaternary byte
+     * @param bottomCount4 smallest quaternary byte
+     */
+    private final void getSortKeyBytes(String source, boolean doFrench,
+                                       byte hiragana4, int commonBottom4,
+                                       int bottomCount4)
+
+    {
+        if (m_srcUtilIter_ == null) {
+            initUtility(true);
+        }
+        int backupDecomposition = getDecomposition();
+        setDecomposition(NO_DECOMPOSITION); // have to revert to backup later
+        m_srcUtilIter_.setText(source);
+        m_srcUtilColEIter_.setText(m_srcUtilIter_);
+        m_utilFrenchStart_ = -1;
+        m_utilFrenchEnd_ = -1;
+
+        // scriptorder not implemented yet
+        // const uint8_t *scriptOrder = coll->scriptOrder;
+
+        boolean doShift = false;
+        boolean notIsContinuation = false;
+
+        int leadPrimary = 0; // int for easier comparison
+        int caseShift = 0;
+
+        while (true) {
+            int ce = m_srcUtilColEIter_.next();
+            if (ce == CollationElementIterator.NULLORDER) {
+                break;
+            }
+
+            if (ce == CollationElementIterator.IGNORABLE) {
+                continue;
+            }
+
+            notIsContinuation = !isContinuation(ce);
+
+            /*
+             * if (notIsContinuation) {
+                    if (scriptOrder != NULL) {
+                        primary1 = scriptOrder[primary1];
+                    }
+                }*/
+            boolean isPrimaryByteIgnorable = (ce & CE_PRIMARY_MASK_) == 0;
+            // actually we can just check that the first byte is 0
+            // generation stuffs the order left first
+            boolean isSmallerThanVariableTop = (ce >>> CE_PRIMARY_SHIFT_)
+                                               <= m_variableTopValue_;
+            doShift = (m_isAlternateHandlingShifted_
+                        && ((notIsContinuation && isSmallerThanVariableTop
+                            && !isPrimaryByteIgnorable) // primary byte not 0
+                        || (!notIsContinuation && doShift))
+                        || (doShift && isPrimaryByteIgnorable));
+            if (doShift && isPrimaryByteIgnorable) {
+                // amendment to the UCA says that primary ignorables and other
+                // ignorables should be removed if following a shifted code
+                // point
+                // if we were shifted and we got an ignorable code point
+                // we should just completely ignore it
+                continue;
+            }
+            leadPrimary = doPrimaryBytes(ce, notIsContinuation, doShift,
+                                         leadPrimary, commonBottom4,
+                                         bottomCount4);
+            if (doShift) {
+                continue;
+            }
+            if (m_utilCompare2_) {
+                doSecondaryBytes(ce, notIsContinuation, doFrench);
+            }
+
+            int t = ce & LAST_BYTE_MASK_;
+            if (!notIsContinuation) {
+                t = ce & CE_REMOVE_CONTINUATION_MASK_;
+            }
+
+            if (m_utilCompare0_ && (!isPrimaryByteIgnorable || m_utilCompare2_)) {
+                // do the case level if we need to do it. We don't want to calculate
+                // case level for primary ignorables if we have only primary strength and case level
+                // otherwise we would break well formedness of CEs 
+                caseShift = doCaseBytes(t, notIsContinuation, caseShift);
+            }
+            else if (notIsContinuation) {
+                 t ^= m_caseSwitch_;
+            }
+
+            t &= m_mask3_;
+
+            if (m_utilCompare3_) {
+                doTertiaryBytes(t, notIsContinuation);
+            }
+
+            if (m_utilCompare4_ && notIsContinuation) { // compare quad
+                doQuaternaryBytes(m_srcUtilColEIter_.m_isCodePointHiragana_,
+                                  commonBottom4, bottomCount4, hiragana4);
+            }
+        }
+        setDecomposition(backupDecomposition); // reverts to original
+        if (m_utilFrenchStart_ != -1) {
+            // one last round of checks
+            reverseBuffer(m_utilBytes2_);
+        }
+    }
+
+    /**
+     * From the individual strength byte results the final compact sortkey
+     * will be calculated.
+     * @param source text string
+     * @param doFrench flag indicating that special handling of French has to
+     *                  be done
+     * @param commonBottom4 smallest common quaternary byte
+     * @param bottomCount4 smallest quaternary byte
+     * @param key output RawCollationKey to store results, key cannot be null
+     */
+    private final void getSortKey(String source, boolean doFrench,
+                                             int commonBottom4, 
+                                             int bottomCount4,
+                                             RawCollationKey key)
+    {
+        // we have done all the CE's, now let's put them together to form
+        // a key
+        if (m_utilCompare2_) {
+            doSecondary(doFrench);
+        }
+        // adding case level should be independent of secondary level
+        if (m_utilCompare0_) {
+            doCase();
+        }
+        if (m_utilCompare3_) {
+            doTertiary();
+            if (m_utilCompare4_) {
+                doQuaternary(commonBottom4, bottomCount4);
+                if (m_utilCompare5_) {
+                    doIdentical(source);
+                }
+
+            }
+        }
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, (byte)0);
+        m_utilBytesCount1_ ++;
+
+        key.set(m_utilBytes1_, 0, m_utilBytesCount1_);
+    }
+
+    /**
+     * Packs the French bytes
+     */
+    private final void doFrench()
+    {
+        for (int i = 0; i < m_utilBytesCount2_; i ++) {
+            byte s = m_utilBytes2_[m_utilBytesCount2_ - i - 1];
+            // This is compression code.
+            if (s == COMMON_2_) {
+                ++ m_utilCount2_;
+            }
+            else {
+                if (m_utilCount2_ > 0) {
+                    // getting the unsigned value
+                    if ((s & LAST_BYTE_MASK_) > COMMON_2_) {
+                        // not necessary for 4th level.
+                        while (m_utilCount2_ > TOP_COUNT_2_) {
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                        (byte)(COMMON_TOP_2_ - TOP_COUNT_2_));
+                            m_utilBytesCount1_ ++;
+                            m_utilCount2_ -= TOP_COUNT_2_;
+                        }
+                        m_utilBytes1_ = append(m_utilBytes1_,
+                                               m_utilBytesCount1_,
+                                               (byte)(COMMON_TOP_2_
+                                                      - (m_utilCount2_ - 1)));
+                        m_utilBytesCount1_ ++;
+                    }
+                    else {
+                        while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                            m_utilBytes1_ = append(m_utilBytes1_,
+                                                   m_utilBytesCount1_,
+                                (byte)(COMMON_BOTTOM_2_ + BOTTOM_COUNT_2_));
+                            m_utilBytesCount1_ ++;
+                            m_utilCount2_ -= BOTTOM_COUNT_2_;
+                        }
+                        m_utilBytes1_ = append(m_utilBytes1_,
+                                               m_utilBytesCount1_,
+                                               (byte)(COMMON_BOTTOM_2_
+                                                      + (m_utilCount2_ - 1)));
+                        m_utilBytesCount1_ ++;
+                    }
+                    m_utilCount2_ = 0;
+                }
+                m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_, s);
+                m_utilBytesCount1_ ++;
+            }
+        }
+        if (m_utilCount2_ > 0) {
+            while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                                       (byte)(COMMON_BOTTOM_2_
+                                                    + BOTTOM_COUNT_2_));
+                m_utilBytesCount1_ ++;
+                m_utilCount2_ -= BOTTOM_COUNT_2_;
+            }
+            m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                                   (byte)(COMMON_BOTTOM_2_
+                                                    + (m_utilCount2_ - 1)));
+            m_utilBytesCount1_ ++;
+        }
+    }
+
+    /**
+     * Compacts the secondary bytes and stores them into the primary array
+     * @param doFrench flag indicator that French has to be handled specially
+     */
+    private final void doSecondary(boolean doFrench)
+    {
+        if (m_utilCount2_ > 0) {
+            while (m_utilCount2_ > BOTTOM_COUNT_2_) {
+                m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                       (byte)(COMMON_BOTTOM_2_
+                                                        + BOTTOM_COUNT_2_));
+                m_utilBytesCount2_ ++;
+                m_utilCount2_ -= BOTTOM_COUNT_2_;
+            }
+            m_utilBytes2_ = append(m_utilBytes2_, m_utilBytesCount2_,
+                                   (byte)(COMMON_BOTTOM_2_ +
+                                                    (m_utilCount2_ - 1)));
+            m_utilBytesCount2_ ++;
+        }
+
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+
+        if (doFrench) { // do the reverse copy
+            doFrench();
+        }
+        else {
+            if (m_utilBytes1_.length <= m_utilBytesCount1_
+                                        + m_utilBytesCount2_) {
+                m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                         m_utilBytesCount2_);
+            }
+            System.arraycopy(m_utilBytes2_, 0, m_utilBytes1_,
+                             m_utilBytesCount1_, m_utilBytesCount2_);
+            m_utilBytesCount1_ += m_utilBytesCount2_;
+        }
+    }
+
+    /**
+     * Increase buffer size
+     * @param buffer array of bytes
+     * @param size of the byte array
+     * @param incrementsize size to increase
+     * @return the new buffer
+     */
+    private static final byte[] increase(byte buffer[], int size,
+                                         int incrementsize)
+    {
+        byte result[] = new byte[buffer.length + incrementsize];
+        System.arraycopy(buffer, 0, result, 0, size);
+        return result;
+    }
+
+    /**
+     * Increase buffer size
+     * @param buffer array of ints
+     * @param size of the byte array
+     * @param incrementsize size to increase
+     * @return the new buffer
+     */
+    private static final int[] increase(int buffer[], int size,
+                                        int incrementsize)
+    {
+        int result[] = new int[buffer.length + incrementsize];
+        System.arraycopy(buffer, 0, result, 0, size);
+        return result;
+    }
+
+    /**
+     * Compacts the case bytes and stores them into the primary array
+     */
+    private final void doCase()
+    {
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount0_) {
+            m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                     m_utilBytesCount0_);
+        }
+        System.arraycopy(m_utilBytes0_, 0, m_utilBytes1_, m_utilBytesCount1_,
+                         m_utilBytesCount0_);
+        m_utilBytesCount1_ += m_utilBytesCount0_;
+    }
+
+    /**
+     * Compacts the tertiary bytes and stores them into the primary array
+     */
+    private final void doTertiary()
+    {
+        if (m_utilCount3_ > 0) {
+            if (m_common3_ != COMMON_BOTTOM_3_) {
+                while (m_utilCount3_ >= m_topCount3_) {
+                    m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                           (byte)(m_top3_ - m_topCount3_));
+                    m_utilBytesCount3_ ++;
+                    m_utilCount3_ -= m_topCount3_;
+                }
+                m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                       (byte)(m_top3_ - m_utilCount3_));
+                m_utilBytesCount3_ ++;
+            }
+            else {
+                while (m_utilCount3_ > m_bottomCount3_) {
+                    m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                           (byte)(m_bottom3_
+                                                        + m_bottomCount3_));
+                    m_utilBytesCount3_ ++;
+                    m_utilCount3_ -= m_bottomCount3_;
+                }
+                m_utilBytes3_ = append(m_utilBytes3_, m_utilBytesCount3_,
+                                       (byte)(m_bottom3_
+                                              + (m_utilCount3_ - 1)));
+                m_utilBytesCount3_ ++;
+            }
+        }
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount3_) {
+            m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                     m_utilBytesCount3_);
+        }
+        System.arraycopy(m_utilBytes3_, 0, m_utilBytes1_, m_utilBytesCount1_,
+                         m_utilBytesCount3_);
+        m_utilBytesCount1_ += m_utilBytesCount3_;
+    }
+
+    /**
+     * Compacts the quaternary bytes and stores them into the primary array
+     */
+    private final void doQuaternary(int commonbottom4, int bottomcount4)
+    {
+        if (m_utilCount4_ > 0) {
+            while (m_utilCount4_ > bottomcount4) {
+                m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                       (byte)(commonbottom4 + bottomcount4));
+                m_utilBytesCount4_ ++;
+                m_utilCount4_ -= bottomcount4;
+            }
+            m_utilBytes4_ = append(m_utilBytes4_, m_utilBytesCount4_,
+                                   (byte)(commonbottom4
+                                                + (m_utilCount4_ - 1)));
+            m_utilBytesCount4_ ++;
+        }
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + m_utilBytesCount4_) {
+            m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                     m_utilBytesCount4_);
+        }
+        System.arraycopy(m_utilBytes4_, 0, m_utilBytes1_, m_utilBytesCount1_,
+                         m_utilBytesCount4_);
+        m_utilBytesCount1_ += m_utilBytesCount4_;
+    }
+
+    /**
+     * Deals with the identical sort.
+     * Appends the BOCSU version of the source string to the ends of the
+     * byte buffer.
+     * @param source text string
+     */
+    private final void doIdentical(String source)
+    {
+        int isize = BOCU.getCompressionLength(source);
+        m_utilBytes1_ = append(m_utilBytes1_, m_utilBytesCount1_,
+                               SORT_LEVEL_TERMINATOR_);
+        m_utilBytesCount1_ ++;
+        if (m_utilBytes1_.length <= m_utilBytesCount1_ + isize) {
+            m_utilBytes1_ = increase(m_utilBytes1_, m_utilBytesCount1_,
+                                     1 + isize);
+        }
+        m_utilBytesCount1_ = BOCU.compress(source, m_utilBytes1_,
+                                           m_utilBytesCount1_);
+    }
+
+    /**
+     * Gets the offset of the first unmatched characters in source and target.
+     * This method returns the offset of the start of a contraction or a
+     * combining sequence, if the first difference is in the middle of such a
+     * sequence.
+     * @param source string
+     * @param target string
+     * @return offset of the first unmatched characters in source and target.
+     */
+    private final int getFirstUnmatchedOffset(String source, String target)
+    {
+        int result = 0;
+        int slength = source.length();
+        int tlength = target.length();
+        int minlength = slength;
+        if (minlength > tlength) {
+            minlength = tlength;
+        }
+        while (result < minlength
+                && source.charAt(result) == target.charAt(result)) {
+            result ++;
+        }
+        if (result > 0) {
+            // There is an identical portion at the beginning of the two
+            // strings. If the identical portion ends within a contraction or a
+            // combining character sequence, back up to the start of that
+            // sequence.
+            char schar = 0;
+            char tchar = 0;
+            if (result < minlength) {
+                schar = source.charAt(result); // first differing chars
+                tchar = target.charAt(result);
+            }
+            else {
+                schar = source.charAt(minlength - 1);
+                if (isUnsafe(schar)) {
+                    tchar = schar;
+                }
+                else if (slength == tlength) {
+                        return result;
+                }
+                else if (slength < tlength) {
+                    tchar = target.charAt(result);
+                }
+                else {
+                    schar = source.charAt(result);
+                }
+            }
+            if (isUnsafe(schar) || isUnsafe(tchar))
+            {
+                // We are stopped in the middle of a contraction or combining
+                // sequence.
+                // Look backwards for the part of the string for the start of
+                // the sequence
+                // It doesn't matter which string we scan, since they are the
+                // same in this region.
+                do {
+                    result --;
+                }
+                while (result > 0 && isUnsafe(source.charAt(result)));
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Appending an byte to an array of bytes and increases it if we run out of
+     * space
+     * @param array of byte arrays
+     * @param appendindex index in the byte array to append
+     * @param value to append
+     * @return array if array size can accomodate the new value, otherwise
+     *         a bigger array will be created and returned
+     */
+    private static final byte[] append(byte array[], int appendindex,
+                                       byte value)
+    {
+        try {
+            array[appendindex] = value;
+        }
+        catch (ArrayIndexOutOfBoundsException e) {
+            array = increase(array, appendindex, SORT_BUFFER_INIT_SIZE_);
+            array[appendindex] = value;
+        }
+        return array;
+    }
+
+    /**
+     * This is a trick string compare function that goes in and uses sortkeys
+     * to compare. It is used when compare gets in trouble and needs to bail
+     * out.
+     * @param source text string
+     * @param target text string
+     */
+    private final int compareBySortKeys(String source, String target)
+
+    {
+        m_utilRawCollationKey_ = getRawCollationKey(source, 
+                                                    m_utilRawCollationKey_);
+        // this method is very seldom called
+        RawCollationKey targetkey = getRawCollationKey(target, null);
+        return m_utilRawCollationKey_.compareTo(targetkey);
+    }
+
+    /**
+     * Performs the primary comparisons, and fills up the CE buffer at the
+     * same time.
+     * The return value toggles between the comparison result and the hiragana
+     * result. If either the source is greater than target or vice versa, the
+     * return result is the comparison result, ie 1 or -1, furthermore the
+     * cebuffers will be cleared when that happens. If the primary comparisons
+     * are equal, we'll have to continue with secondary comparison. In this case
+     * the cebuffer will not be cleared and the return result will be the
+     * hiragana result.
+     * @param doHiragana4 flag indicator that Hiragana Quaternary has to be
+     *                  observed
+     * @param lowestpvalue the lowest primary value that will not be ignored if
+     *                      alternate handling is shifted
+     * @param source text string
+     * @param target text string
+     * @param textoffset offset in text to start the comparison
+     * @return comparion result if a primary difference is found, otherwise
+     *                      hiragana result
+     */
+    private final int doPrimaryCompare(boolean doHiragana4, int lowestpvalue,
+                                        String source, String target,
+                                        int textoffset)
+
+    {
+        // Preparing the context objects for iterating over strings
+        m_srcUtilIter_.setText(source);
+        m_srcUtilColEIter_.setText(m_srcUtilIter_, textoffset);
+        m_tgtUtilIter_.setText(target);
+        m_tgtUtilColEIter_.setText(m_tgtUtilIter_, textoffset);
+
+        // Non shifted primary processing is quite simple
+        if (!m_isAlternateHandlingShifted_) {
+            int hiraganaresult = 0;
+            while (true) {
+                int sorder = 0;
+                // We fetch CEs until we hit a non ignorable primary or end.
+                do {
+                    sorder = m_srcUtilColEIter_.next();
+                    m_srcUtilCEBuffer_ = append(m_srcUtilCEBuffer_,
+                                                m_srcUtilCEBufferSize_, sorder);
+                    m_srcUtilCEBufferSize_ ++;
+                    sorder &= CE_PRIMARY_MASK_;
+                } while (sorder == CollationElementIterator.IGNORABLE);
+
+                int torder = 0;
+                do {
+                    torder = m_tgtUtilColEIter_.next();
+                    m_tgtUtilCEBuffer_ = append(m_tgtUtilCEBuffer_,
+                                                m_tgtUtilCEBufferSize_, torder);
+                    m_tgtUtilCEBufferSize_ ++;
+                    torder &= CE_PRIMARY_MASK_;
+                } while (torder == CollationElementIterator.IGNORABLE);
+
+                // if both primaries are the same
+                if (sorder == torder) {
+                    // and there are no more CEs, we advance to the next level
+                    // see if we are at the end of either string
+                    if (m_srcUtilCEBuffer_[m_srcUtilCEBufferSize_ - 1]
+                                        == CollationElementIterator.NULLORDER) {
+                        if (m_tgtUtilCEBuffer_[m_tgtUtilCEBufferSize_ - 1] 
+                            != CollationElementIterator.NULLORDER) {
+                            return -1;
+                        }
+                        break;
+                    }
+                    else if (m_tgtUtilCEBuffer_[m_tgtUtilCEBufferSize_ - 1]
+                             == CollationElementIterator.NULLORDER) {
+                        return 1;
+                    }
+                    if (doHiragana4 && hiraganaresult == 0
+                        && m_srcUtilColEIter_.m_isCodePointHiragana_ !=
+                                        m_tgtUtilColEIter_.m_isCodePointHiragana_) {
+                        if (m_srcUtilColEIter_.m_isCodePointHiragana_) {
+                            hiraganaresult = -1;
+                        }
+                        else {
+                            hiraganaresult = 1;
+                        }
+                    }
+                }
+                else {
+                    // if two primaries are different, we are done
+                    return endPrimaryCompare(sorder, torder);
+                }
+            }
+            // no primary difference... do the rest from the buffers
+            return hiraganaresult;
+        }
+        else { // shifted - do a slightly more complicated processing :)
+            while (true) {
+                int sorder = getPrimaryShiftedCompareCE(m_srcUtilColEIter_,
+                                                        lowestpvalue, true);
+                int torder = getPrimaryShiftedCompareCE(m_tgtUtilColEIter_,
+                                                        lowestpvalue, false);
+                if (sorder == torder) {
+                    if (m_srcUtilCEBuffer_[m_srcUtilCEBufferSize_ - 1]
+                            == CollationElementIterator.NULLORDER) {
+                        break;
+                    }
+                    else {
+                        continue;
+                    }
+                }
+                else {
+                    return endPrimaryCompare(sorder, torder);
+                }
+            } // no primary difference... do the rest from the buffers
+        }
+        return 0;
+    }
+
+    /**
+     * This is used only for primary strength when we know that sorder is
+     * already different from torder.
+     * Compares sorder and torder, returns -1 if sorder is less than torder.
+     * Clears the cebuffer at the same time.
+     * @param sorder source strength order
+     * @param torder target strength order
+     * @return the comparison result of sorder and torder
+     */
+    private final int endPrimaryCompare(int sorder, int torder)
+    {
+        // if we reach here, the ce offset accessed is the last ce
+        // appended to the buffer
+        boolean isSourceNullOrder = (m_srcUtilCEBuffer_[
+                                                    m_srcUtilCEBufferSize_ - 1]
+                                        == CollationElementIterator.NULLORDER);
+        boolean isTargetNullOrder = (m_tgtUtilCEBuffer_[
+                                                    m_tgtUtilCEBufferSize_ - 1]
+                                        == CollationElementIterator.NULLORDER);
+        m_srcUtilCEBufferSize_ = -1;
+        m_tgtUtilCEBufferSize_ = -1;
+        if (isSourceNullOrder) {
+            return -1;
+        }
+        if (isTargetNullOrder) {
+            return 1;
+        }
+        // getting rid of the sign
+        sorder >>>= CE_PRIMARY_SHIFT_;
+        torder >>>= CE_PRIMARY_SHIFT_;
+        if (sorder < torder) {
+            return -1;
+        }
+        return 1;
+    }
+
+    /**
+     * Calculates the next primary shifted value and fills up cebuffer with the
+     * next non-ignorable ce.
+     * @param coleiter collation element iterator
+     * @param doHiragana4 flag indicator if hiragana quaternary is to be
+     *                      handled
+     * @param lowestpvalue lowest primary shifted value that will not be
+     *                      ignored
+     * @return result next modified ce
+     */
+    private final int getPrimaryShiftedCompareCE(
+                                        CollationElementIterator coleiter,
+                                        int lowestpvalue, boolean isSrc)
+
+    {
+        boolean shifted = false;
+        int result = CollationElementIterator.IGNORABLE;
+        int cebuffer[] = m_srcUtilCEBuffer_;
+        int cebuffersize = m_srcUtilCEBufferSize_;
+        if (!isSrc) {
+            cebuffer = m_tgtUtilCEBuffer_;
+            cebuffersize = m_tgtUtilCEBufferSize_;
+        }
+        while (true) {
+            result = coleiter.next();
+            if (result == CollationElementIterator.NULLORDER) {
+                cebuffer = append(cebuffer, cebuffersize, result);
+                cebuffersize ++;
+                break;
+            }
+            else if (result == CollationElementIterator.IGNORABLE
+                     || (shifted
+                         && (result & CE_PRIMARY_MASK_)
+                                      == CollationElementIterator.IGNORABLE)) {
+                // UCA amendment - ignore ignorables that follow shifted code
+                // points
+                continue;
+            }
+            else if (isContinuation(result)) {
+                if ((result & CE_PRIMARY_MASK_)
+                                    != CollationElementIterator.IGNORABLE) {
+                    // There is primary value
+                    if (shifted) {
+                        result = (result & CE_PRIMARY_MASK_)
+                                            | CE_CONTINUATION_MARKER_;
+                        // preserve interesting continuation
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                        continue;
+                    }
+                    else {
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                        break;
+                    }
+                }
+                else { // Just lower level values
+                    if (!shifted) {
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                    }
+                }
+            }
+            else { // regular
+                if (Utility.compareUnsigned(result & CE_PRIMARY_MASK_,
+                                            lowestpvalue) > 0) {
+                    cebuffer = append(cebuffer, cebuffersize, result);
+                    cebuffersize ++;
+                    break;
+                }
+                else {
+                    if ((result & CE_PRIMARY_MASK_) != 0) {
+                        shifted = true;
+                        result &= CE_PRIMARY_MASK_;
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                        continue;
+                    }
+                    else {
+                        cebuffer = append(cebuffer, cebuffersize, result);
+                        cebuffersize ++;
+                        shifted = false;
+                        continue;
+                    }
+                }
+            }
+        }
+        if (isSrc) {
+            m_srcUtilCEBuffer_ = cebuffer;
+            m_srcUtilCEBufferSize_ = cebuffersize;
+        }
+        else {
+            m_tgtUtilCEBuffer_ = cebuffer;
+            m_tgtUtilCEBufferSize_ = cebuffersize;
+        }
+        result &= CE_PRIMARY_MASK_;
+        return result;
+    }
+
+    /**
+     * Appending an int to an array of ints and increases it if we run out of
+     * space
+     * @param array of int arrays
+     * @param appendindex index at which value will be appended
+     * @param value to append
+     * @return array if size is not increased, otherwise a new array will be
+     *         returned
+     */
+    private static final int[] append(int array[], int appendindex, int value)
+    {
+        if (appendindex + 1 >= array.length) {
+            array = increase(array, appendindex, CE_BUFFER_SIZE_);
+        }
+        array[appendindex] = value;
+        return array;
+    }
+
+    /**
+     * Does secondary strength comparison based on the collected ces.
+     * @param doFrench flag indicates if French ordering is to be done
+     * @return the secondary strength comparison result
+     */
+    private final int doSecondaryCompare(boolean doFrench)
+    {
+        // now, we're gonna reexamine collected CEs
+        if (!doFrench) { // normal
+            int soffset = 0;
+            int toffset = 0;
+            while (true) {
+                int sorder = CollationElementIterator.IGNORABLE;
+                while (sorder == CollationElementIterator.IGNORABLE) {
+                    sorder = m_srcUtilCEBuffer_[soffset ++]
+                             & CE_SECONDARY_MASK_;
+                }
+                int torder = CollationElementIterator.IGNORABLE;
+                while (torder == CollationElementIterator.IGNORABLE) {
+                    torder = m_tgtUtilCEBuffer_[toffset ++]
+                             & CE_SECONDARY_MASK_;
+                }
+
+                if (sorder == torder) {
+                    if (m_srcUtilCEBuffer_[soffset - 1]
+                                    == CollationElementIterator.NULLORDER) {
+                        if (m_tgtUtilCEBuffer_[toffset - 1] 
+                            != CollationElementIterator.NULLORDER) {
+                            return -1;
+                        }
+                        break;
+                    }
+                    else if (m_tgtUtilCEBuffer_[toffset - 1]
+                             == CollationElementIterator.NULLORDER) {
+                        return 1;
+                    }
+                }
+                else {
+                    if (m_srcUtilCEBuffer_[soffset - 1] ==
+                            CollationElementIterator.NULLORDER) {
+                        return -1;
+                    }
+                    if (m_tgtUtilCEBuffer_[toffset - 1] ==
+                            CollationElementIterator.NULLORDER) {
+                        return 1;
+                    }
+                    return (sorder < torder) ? -1 : 1;
+                }
+            }
+        }
+        else { // do the French
+            m_srcUtilContOffset_ = 0;
+            m_tgtUtilContOffset_ = 0;
+            m_srcUtilOffset_ = m_srcUtilCEBufferSize_ - 2;
+            m_tgtUtilOffset_ = m_tgtUtilCEBufferSize_ - 2;
+            while (true) {
+                int sorder = getSecondaryFrenchCE(true);
+                int torder = getSecondaryFrenchCE(false);
+                if (sorder == torder) {
+                    if ((m_srcUtilOffset_ < 0 && m_tgtUtilOffset_ < 0)
+                        || (m_srcUtilOffset_ >= 0 
+                            && m_srcUtilCEBuffer_[m_srcUtilOffset_]
+                                    == CollationElementIterator.NULLORDER)) {
+                        break;
+                    }
+                }
+                else {
+                    return (sorder < torder) ? -1 : 1;
+                }
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Calculates the next secondary french CE.
+     * @param isSrc flag indicator if we are calculating the src ces
+     * @return result next modified ce
+     */
+    private final int getSecondaryFrenchCE(boolean isSrc)
+    {
+        int result = CollationElementIterator.IGNORABLE;
+        int offset = m_srcUtilOffset_;
+        int continuationoffset = m_srcUtilContOffset_;
+        int cebuffer[] = m_srcUtilCEBuffer_;
+        if (!isSrc) {
+            offset = m_tgtUtilOffset_;
+            continuationoffset = m_tgtUtilContOffset_;
+            cebuffer = m_tgtUtilCEBuffer_;
+        }
+
+        while (result == CollationElementIterator.IGNORABLE
+                && offset >= 0) {
+            if (continuationoffset == 0) {
+                result = cebuffer[offset];
+                while (isContinuation(cebuffer[offset --])){
+                }
+                // after this, sorder is at the start of continuation,
+                // and offset points before that
+                if (isContinuation(cebuffer[offset + 1])) {
+                    // save offset for later
+                    continuationoffset = offset;
+                    offset += 2;
+                }
+            }
+            else {
+                result = cebuffer[offset ++];
+                if (!isContinuation(result)) {
+                    // we have finished with this continuation
+                    offset = continuationoffset;
+                    // reset the pointer to before continuation
+                    continuationoffset = 0;
+                    continue;
+                }
+            }
+            result &= CE_SECONDARY_MASK_; // remove continuation bit
+        }
+        if (isSrc) {
+            m_srcUtilOffset_ = offset;
+            m_srcUtilContOffset_ = continuationoffset;
+        }
+        else {
+            m_tgtUtilOffset_ = offset;
+            m_tgtUtilContOffset_ = continuationoffset;
+        }
+        return result;
+    }
+
+    /**
+     * Does case strength comparison based on the collected ces.
+     * @return the case strength comparison result
+     */
+    private final int doCaseCompare()
+    {
+        int soffset = 0;
+        int toffset = 0;
+        while (true) {
+            int sorder = CollationElementIterator.IGNORABLE;
+            int torder = CollationElementIterator.IGNORABLE;
+            while ((sorder & CE_REMOVE_CASE_)
+                                    == CollationElementIterator.IGNORABLE) {
+                sorder = m_srcUtilCEBuffer_[soffset ++];
+                if (!isContinuation(sorder) && ((sorder & CE_PRIMARY_MASK_) != 0 || m_utilCompare2_ == true)) {
+                    // primary ignorables should not be considered on the case level when the strength is primary
+                    // otherwise, the CEs stop being well-formed
+                    sorder &= CE_CASE_MASK_3_;
+                    sorder ^= m_caseSwitch_;
+                }
+                else {
+                    sorder = CollationElementIterator.IGNORABLE;
+                }
+            }
+
+            while ((torder & CE_REMOVE_CASE_)
+                                    == CollationElementIterator.IGNORABLE) {
+                torder = m_tgtUtilCEBuffer_[toffset ++];
+                if (!isContinuation(torder) && ((torder & CE_PRIMARY_MASK_) != 0 || m_utilCompare2_ == true)) {
+                    // primary ignorables should not be considered on the case level when the strength is primary
+                    // otherwise, the CEs stop being well-formed
+                    torder &= CE_CASE_MASK_3_;
+                    torder ^= m_caseSwitch_;
+                }
+                else {
+                    torder = CollationElementIterator.IGNORABLE;
+                }
+            }
+
+            sorder &= CE_CASE_BIT_MASK_;
+            torder &= CE_CASE_BIT_MASK_;
+            if (sorder == torder) {
+                // checking end of strings
+                if (m_srcUtilCEBuffer_[soffset - 1]
+                                        == CollationElementIterator.NULLORDER) {
+                    if (m_tgtUtilCEBuffer_[toffset - 1] 
+                        != CollationElementIterator.NULLORDER) {
+                        return -1;
+                    }
+                    break;
+                }
+                else if (m_tgtUtilCEBuffer_[toffset - 1]
+                            == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+            }
+            else {
+                if (m_srcUtilCEBuffer_[soffset - 1]
+                                    == CollationElementIterator.NULLORDER) {
+                    return -1;
+                }
+                if (m_tgtUtilCEBuffer_[soffset - 1]
+                                    == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+                return (sorder < torder) ? -1 : 1;
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Does tertiary strength comparison based on the collected ces.
+     * @return the tertiary strength comparison result
+     */
+    private final int doTertiaryCompare()
+    {
+        int soffset = 0;
+        int toffset = 0;
+        while (true) {
+            int sorder = CollationElementIterator.IGNORABLE;
+            int torder = CollationElementIterator.IGNORABLE;
+            while ((sorder & CE_REMOVE_CASE_)
+                                == CollationElementIterator.IGNORABLE) {
+                sorder = m_srcUtilCEBuffer_[soffset ++] & m_mask3_;
+                if (!isContinuation(sorder)) {
+                    sorder ^= m_caseSwitch_;
+                }
+                else {
+                    sorder &= CE_REMOVE_CASE_;
+                }
+            }
+
+            while ((torder & CE_REMOVE_CASE_)
+                                == CollationElementIterator.IGNORABLE) {
+                torder = m_tgtUtilCEBuffer_[toffset ++] & m_mask3_;
+                if (!isContinuation(torder)) {
+                    torder ^= m_caseSwitch_;
+                }
+                else {
+                    torder &= CE_REMOVE_CASE_;
+                }
+            }
+
+            if (sorder == torder) {
+                if (m_srcUtilCEBuffer_[soffset - 1]
+                                    == CollationElementIterator.NULLORDER) {
+                    if (m_tgtUtilCEBuffer_[toffset - 1]
+                        != CollationElementIterator.NULLORDER) {
+                        return -1;
+                    }
+                    break;
+                }
+                else if (m_tgtUtilCEBuffer_[toffset - 1]
+                            == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+            }
+            else {
+                if (m_srcUtilCEBuffer_[soffset - 1] ==
+                                        CollationElementIterator.NULLORDER) {
+                    return -1;
+                }
+                if (m_tgtUtilCEBuffer_[toffset - 1] ==
+                            CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+                return (sorder < torder) ? -1 : 1;
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Does quaternary strength comparison based on the collected ces.
+     * @param lowestpvalue the lowest primary value that will not be ignored if
+     *                      alternate handling is shifted
+     * @return the quaternary strength comparison result
+     */
+    private final int doQuaternaryCompare(int lowestpvalue)
+    {
+        boolean sShifted = true;
+        boolean tShifted = true;
+        int soffset = 0;
+        int toffset = 0;
+        while (true) {
+            int sorder = CollationElementIterator.IGNORABLE;
+            int torder = CollationElementIterator.IGNORABLE;
+            while (sorder == CollationElementIterator.IGNORABLE
+                    || (isContinuation(sorder) && !sShifted)) {
+                sorder = m_srcUtilCEBuffer_[soffset ++];
+                if (isContinuation(sorder)) {
+                    if (!sShifted) {
+                        continue;
+                    }
+                }
+                else if (Utility.compareUnsigned(sorder, lowestpvalue) > 0
+                            || (sorder & CE_PRIMARY_MASK_)
+                                    == CollationElementIterator.IGNORABLE) {
+                    // non continuation
+                    sorder = CE_PRIMARY_MASK_;
+                    sShifted = false;
+                }
+                else {
+                    sShifted = true;
+                }
+            }
+            sorder >>>= CE_PRIMARY_SHIFT_;
+            while (torder == CollationElementIterator.IGNORABLE
+                    || (isContinuation(torder) && !tShifted)) {
+                torder = m_tgtUtilCEBuffer_[toffset ++];
+                if (isContinuation(torder)) {
+                    if (!tShifted) {
+                        continue;
+                    }
+                }
+                else if (Utility.compareUnsigned(torder, lowestpvalue) > 0
+                            || (torder & CE_PRIMARY_MASK_)
+                                    == CollationElementIterator.IGNORABLE) {
+                    // non continuation
+                    torder = CE_PRIMARY_MASK_;
+                    tShifted = false;
+                }
+                else {
+                    tShifted = true;
+                }
+            }
+            torder >>>= CE_PRIMARY_SHIFT_;
+
+            if (sorder == torder) {
+                if (m_srcUtilCEBuffer_[soffset - 1]
+                    == CollationElementIterator.NULLORDER) {
+                    if (m_tgtUtilCEBuffer_[toffset - 1]
+                        != CollationElementIterator.NULLORDER) {
+                        return -1;
+                    }
+                    break;
+                }
+                else if (m_tgtUtilCEBuffer_[toffset - 1]
+                            == CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+            }
+            else {
+                if (m_srcUtilCEBuffer_[soffset - 1] ==
+                    CollationElementIterator.NULLORDER) {
+                    return -1;
+                }
+                if (m_tgtUtilCEBuffer_[toffset - 1] ==
+                    CollationElementIterator.NULLORDER) {
+                    return 1;
+                }
+                return (sorder < torder) ? -1 : 1;
+            }
+        }
+        return 0;
+    }
+
+    /**
+     * Internal function. Does byte level string compare. Used by strcoll if
+     * strength == identical and strings are otherwise equal. This is a rare
+     * case. Comparison must be done on NFD normalized strings. FCD is not good
+     * enough.
+     * @param source text
+     * @param target text
+     * @param offset of the first difference in the text strings
+     * @param normalize flag indicating if we are to normalize the text before
+     *              comparison
+     * @return 1 if source is greater than target, -1 less than and 0 if equals
+     */
+    private static final int doIdenticalCompare(String source, String target,
+                                                int offset, boolean normalize)
+
+    {
+        if (normalize) {
+            if (Normalizer.quickCheck(source, Normalizer.NFD,0)
+                                                    != Normalizer.YES) {
+                source = Normalizer.decompose(source, false);
+            }
+
+            if (Normalizer.quickCheck(target, Normalizer.NFD,0)
+                                                        != Normalizer.YES) {
+                target = Normalizer.decompose(target, false);
+            }
+            offset = 0;
+        }
+
+        return doStringCompare(source, target, offset);
+    }
+
+    /**
+     * Compares string for their codepoint order.
+     * This comparison handles surrogate characters and place them after the
+     * all non surrogate characters.
+     * @param source text
+     * @param target text
+     * @param offset start offset for comparison
+     * @return 1 if source is greater than target, -1 less than and 0 if equals
+     */
+    private static final int doStringCompare(String source,
+                                             String target,
+                                             int offset)
+    {
+        // compare identical prefixes - they do not need to be fixed up
+        char schar = 0;
+        char tchar = 0;
+        int slength = source.length();
+        int tlength = target.length();
+        int minlength = Math.min(slength, tlength);
+        while (offset < minlength) {
+            schar = source.charAt(offset);
+            tchar = target.charAt(offset ++);
+            if (schar != tchar) {
+                break;
+            }
+        }
+
+        if (schar == tchar && offset == minlength) {
+            if (slength > minlength) {
+                return 1;
+            }
+            if (tlength > minlength) {
+                return -1;
+            }
+            return 0;
+        }
+
+        //  if both values are in or above the surrogate range, Fix them up.
+        if (schar >= UTF16.LEAD_SURROGATE_MIN_VALUE
+            && tchar >= UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            schar = fixupUTF16(schar);
+            tchar = fixupUTF16(tchar);
+        }
+
+        // now c1 and c2 are in UTF-32-compatible order
+        return (schar < tchar) ? -1 : 1; // schar and tchar has to be different
+    }
+
+    /**
+     * Rotate surrogates to the top to get code point order
+     */
+    private static final char fixupUTF16(char ch)
+    {
+        if (ch >= 0xe000) {
+            ch -= 0x800;
+        }
+        else {
+            ch += 0x2000;
+        }
+        return ch;
+    }
+
+    /**
+     * Resets the internal case data members and compression values.
+     */
+    private void updateInternalState()
+    {
+        if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+            m_caseSwitch_ = CASE_SWITCH_;
+        }
+        else {
+            m_caseSwitch_ = NO_CASE_SWITCH_;
+        }
+
+        if (m_isCaseLevel_ || m_caseFirst_ == AttributeValue.OFF_) {
+            m_mask3_ = CE_REMOVE_CASE_;
+            m_common3_ = COMMON_NORMAL_3_;
+            m_addition3_ = FLAG_BIT_MASK_CASE_SWITCH_OFF_;
+            m_top3_ = COMMON_TOP_CASE_SWITCH_OFF_3_;
+            m_bottom3_ = COMMON_BOTTOM_3_;
+        }
+        else {
+            m_mask3_ = CE_KEEP_CASE_;
+            m_addition3_ = FLAG_BIT_MASK_CASE_SWITCH_ON_;
+            if (m_caseFirst_ == AttributeValue.UPPER_FIRST_) {
+                m_common3_ = COMMON_UPPER_FIRST_3_;
+                m_top3_ = COMMON_TOP_CASE_SWITCH_UPPER_3_;
+                m_bottom3_ = COMMON_BOTTOM_CASE_SWITCH_UPPER_3_;
+            } else {
+                m_common3_ = COMMON_NORMAL_3_;
+                m_top3_ = COMMON_TOP_CASE_SWITCH_LOWER_3_;
+                m_bottom3_ = COMMON_BOTTOM_CASE_SWITCH_LOWER_3_;
+            }
+        }
+
+        // Set the compression values
+        int total3 = m_top3_ - COMMON_BOTTOM_3_ - 1;
+        // we multilply double with int, but need only int
+        m_topCount3_ = (int)(PROPORTION_3_ * total3);
+        m_bottomCount3_ = total3 - m_topCount3_;
+
+        if (!m_isCaseLevel_ && getStrength() == AttributeValue.TERTIARY_
+            && !m_isFrenchCollation_ && !m_isAlternateHandlingShifted_) {
+            m_isSimple3_ = true;
+        }
+        else {
+            m_isSimple3_ = false;
+        }
+        if(!m_isCaseLevel_ && getStrength() <= AttributeValue.TERTIARY_ && !m_isNumericCollation_
+          && !m_isAlternateHandlingShifted_ && !latinOneFailed_) {
+          if(latinOneCEs_ == null || latinOneRegenTable_) {
+            if(setUpLatinOne()) { // if we succeed in building latin1 table, we'll use it
+              latinOneUse_ = true;
+            } else {
+              latinOneUse_ = false;
+              latinOneFailed_ = true;
+            }
+            latinOneRegenTable_ = false;
+          } else { // latin1Table exists and it doesn't need to be regenerated, just use it
+            latinOneUse_ = true;
+          }
+        } else {
+          latinOneUse_ = false;
+        }
+
+    }
+
+    /**
+     * Initializes the RuleBasedCollator
+     */
+    private final void init()
+    {
+        for (m_minUnsafe_ = 0; m_minUnsafe_ < DEFAULT_MIN_HEURISTIC_;
+             m_minUnsafe_ ++) {
+            // Find the smallest unsafe char.
+            if (isUnsafe(m_minUnsafe_)) {
+                break;
+            }
+        }
+
+        for (m_minContractionEnd_ = 0;
+             m_minContractionEnd_ < DEFAULT_MIN_HEURISTIC_;
+             m_minContractionEnd_ ++) {
+            // Find the smallest contraction-ending char.
+            if (isContractionEnd(m_minContractionEnd_)) {
+                break;
+            }
+        }
+        latinOneFailed_ = true;
+        setStrength(m_defaultStrength_);
+        setDecomposition(m_defaultDecomposition_);
+        m_variableTopValue_ = m_defaultVariableTopValue_;
+        m_isFrenchCollation_ = m_defaultIsFrenchCollation_;
+        m_isAlternateHandlingShifted_ = m_defaultIsAlternateHandlingShifted_;
+        m_isCaseLevel_ = m_defaultIsCaseLevel_;
+        m_caseFirst_ = m_defaultCaseFirst_;
+        m_isHiragana4_ = m_defaultIsHiragana4_;
+        m_isNumericCollation_ = m_defaultIsNumericCollation_;
+        latinOneFailed_ = false;
+        updateInternalState();
+    }
+
+    /**
+     *  Initializes utility iterators and byte buffer used by compare
+     */
+    private final void initUtility(boolean allocate) {
+        if (allocate) {
+            if (m_srcUtilIter_ == null) {
+                m_srcUtilIter_ = new StringUCharacterIterator();
+                m_srcUtilColEIter_ = new CollationElementIterator(m_srcUtilIter_, this);
+                m_tgtUtilIter_ = new StringUCharacterIterator();
+                m_tgtUtilColEIter_ = new CollationElementIterator(m_tgtUtilIter_, this);
+                m_utilBytes0_ = new byte[SORT_BUFFER_INIT_SIZE_CASE_]; // case
+                m_utilBytes1_ = new byte[SORT_BUFFER_INIT_SIZE_1_]; // primary
+                m_utilBytes2_ = new byte[SORT_BUFFER_INIT_SIZE_2_]; // secondary
+                m_utilBytes3_ = new byte[SORT_BUFFER_INIT_SIZE_3_]; // tertiary
+                m_utilBytes4_ = new byte[SORT_BUFFER_INIT_SIZE_4_];  // Quaternary
+                m_srcUtilCEBuffer_ = new int[CE_BUFFER_SIZE_];
+                m_tgtUtilCEBuffer_ = new int[CE_BUFFER_SIZE_];
+            }
+        } else {
+            m_srcUtilIter_ = null;
+            m_srcUtilColEIter_ = null;
+            m_tgtUtilIter_ = null;
+            m_tgtUtilColEIter_ = null;
+            m_utilBytes0_ = null;
+            m_utilBytes1_ = null;
+            m_utilBytes2_ = null;
+            m_utilBytes3_ = null;
+            m_utilBytes4_ = null;
+            m_srcUtilCEBuffer_ = null;
+            m_tgtUtilCEBuffer_ = null;
+        }
+    }
+
+    // Consts for Latin-1 special processing
+    private static final int ENDOFLATINONERANGE_ = 0xFF;
+    private static final int LATINONETABLELEN_   = (ENDOFLATINONERANGE_+50);
+    private static final int BAIL_OUT_CE_        = 0xFF000000;
+
+     /**
+     * Generate latin-1 tables
+     */
+
+    private class shiftValues {
+        int primShift = 24;
+        int secShift = 24;
+        int terShift = 24;
+    }
+
+    private final void
+    addLatinOneEntry(char ch, int CE, shiftValues sh) {
+      int primary1 = 0, primary2 = 0, secondary = 0, tertiary = 0;
+      boolean reverseSecondary = false;
+      if(!isContinuation(CE)) {
+        tertiary = ((CE & m_mask3_));
+        tertiary ^= m_caseSwitch_;
+        reverseSecondary = true;
+      } else {
+        tertiary = (byte)((CE & CE_REMOVE_CONTINUATION_MASK_));
+        tertiary &= CE_REMOVE_CASE_;
+        reverseSecondary = false;
+      }
+
+      secondary = ((CE >>>= 8) & LAST_BYTE_MASK_);
+      primary2 =  ((CE >>>= 8) & LAST_BYTE_MASK_);
+      primary1 =  (CE >>> 8);
+
+      if(primary1 != 0) {
+        latinOneCEs_[ch] |= (primary1 << sh.primShift);
+        sh.primShift -= 8;
+      }
+      if(primary2 != 0) {
+        if(sh.primShift < 0) {
+          latinOneCEs_[ch] = BAIL_OUT_CE_;
+          latinOneCEs_[latinOneTableLen_+ch] = BAIL_OUT_CE_;
+          latinOneCEs_[2*latinOneTableLen_+ch] = BAIL_OUT_CE_;
+          return;
+        }
+        latinOneCEs_[ch] |= (primary2 << sh.primShift);
+        sh.primShift -= 8;
+      }
+      if(secondary != 0) {
+        if(reverseSecondary && m_isFrenchCollation_) { // reverse secondary
+          latinOneCEs_[latinOneTableLen_+ch] >>>= 8; // make space for secondary
+          latinOneCEs_[latinOneTableLen_+ch] |= (secondary << 24);
+        } else { // normal case
+          latinOneCEs_[latinOneTableLen_+ch] |= (secondary << sh.secShift);
+        }
+        sh.secShift -= 8;
+      }
+      if(tertiary != 0) {
+        latinOneCEs_[2*latinOneTableLen_+ch] |= (tertiary << sh.terShift);
+        sh.terShift -= 8;
+      }
+    }
+
+    private final void
+    resizeLatinOneTable(int newSize) {
+        int newTable[] = new int[3*newSize];
+        int sizeToCopy = ((newSize<latinOneTableLen_)?newSize:latinOneTableLen_);
+        //uprv_memset(newTable, 0, newSize*sizeof(uint32_t)*3); // automatically cleared.
+        System.arraycopy(latinOneCEs_, 0, newTable, 0, sizeToCopy);
+        System.arraycopy(latinOneCEs_, latinOneTableLen_, newTable, newSize, sizeToCopy);
+        System.arraycopy(latinOneCEs_, 2*latinOneTableLen_, newTable, 2*newSize, sizeToCopy);
+        latinOneTableLen_ = newSize;
+        latinOneCEs_ = newTable;
+    }
+
+    private final boolean setUpLatinOne() {
+      if(latinOneCEs_ == null || m_reallocLatinOneCEs_) {
+        latinOneCEs_ = new int[3*LATINONETABLELEN_];
+        latinOneTableLen_ = LATINONETABLELEN_;
+        m_reallocLatinOneCEs_ = false;
+      } else {
+        Arrays.fill(latinOneCEs_, 0);
+      }
+      if(m_ContInfo_ == null) {
+        m_ContInfo_ = new ContractionInfo();
+      }
+      char ch = 0;
+      //StringBuffer sCh = new StringBuffer();
+      //CollationElementIterator it = getCollationElementIterator(sCh.toString());
+      CollationElementIterator it = getCollationElementIterator("");
+
+      shiftValues s = new shiftValues();
+      int CE = 0;
+      char contractionOffset = ENDOFLATINONERANGE_+1;
+
+      for(ch = 0; ch <= ENDOFLATINONERANGE_; ch++) {
+        s.primShift = 24; s.secShift = 24; s.terShift = 24;
+        if(ch < 0x100) {
+          CE = m_trie_.getLatin1LinearValue(ch);
+        } else {
+          CE = m_trie_.getLeadValue(ch);
+          if(CE == CollationElementIterator.CE_NOT_FOUND_) {
+            CE = UCA_.m_trie_.getLeadValue(ch);
+          }
+        }
+        if(!isSpecial(CE)) {
+          addLatinOneEntry(ch, CE, s);
+        } else {
+          switch (RuleBasedCollator.getTag(CE)) {
+          case CollationElementIterator.CE_EXPANSION_TAG_:
+          case CollationElementIterator.CE_DIGIT_TAG_:
+            //sCh.delete(0, sCh.length());
+            //sCh.append(ch);
+            //it.setText(sCh.toString());
+            it.setText(UCharacter.toString(ch));
+            while((CE = it.next()) != CollationElementIterator.NULLORDER) {
+              if(s.primShift < 0 || s.secShift < 0 || s.terShift < 0) {
+                latinOneCEs_[ch] = BAIL_OUT_CE_;
+                latinOneCEs_[latinOneTableLen_+ch] = BAIL_OUT_CE_;
+                latinOneCEs_[2*latinOneTableLen_+ch] = BAIL_OUT_CE_;
+                break;
+              }
+              addLatinOneEntry(ch, CE, s);
+            }
+            break;
+          case CollationElementIterator.CE_CONTRACTION_TAG_:
+            // here is the trick
+            // F2 is contraction. We do something very similar to contractions
+            // but have two indices, one in the real contraction table and the
+            // other to where we stuffed things. This hopes that we don't have
+            // many contractions (this should work for latin-1 tables).
+            {
+              if((CE & 0x00FFF000) != 0) {
+                latinOneFailed_ = true;
+                return false;
+              }
+
+              int UCharOffset = (CE & 0xFFFFFF) - m_contractionOffset_; //getContractionOffset(CE)]
+
+              CE |= (contractionOffset & 0xFFF) << 12; // insert the offset in latin-1 table
+
+              latinOneCEs_[ch] = CE;
+              latinOneCEs_[latinOneTableLen_+ch] = CE;
+              latinOneCEs_[2*latinOneTableLen_+ch] = CE;
+
+              // We're going to jump into contraction table, pick the elements
+              // and use them
+              do {
+                  //CE = *(contractionCEs + (UCharOffset - contractionIndex));
+                  CE = m_contractionCE_[UCharOffset];
+                  if(isSpecial(CE) 
+                     && getTag(CE) 
+                               == CollationElementIterator.CE_EXPANSION_TAG_) {
+                    int i;    /* general counter */
+                    //uint32_t *CEOffset = (uint32_t *)image+getExpansionOffset(CE); /* find the offset to expansion table */
+                    int offset = ((CE & 0xFFFFF0) >> 4) - m_expansionOffset_; //it.getExpansionOffset(this, CE);
+                    int size = CE & 0xF; // getExpansionCount(CE);
+                    //CE = *CEOffset++;
+                    if(size != 0) { /* if there are less than 16 elements in expansion, we don't terminate */
+                      for(i = 0; i<size; i++) {
+                        if(s.primShift < 0 || s.secShift < 0 || s.terShift < 0) {
+                          latinOneCEs_[contractionOffset] = BAIL_OUT_CE_;
+                          latinOneCEs_[latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                          latinOneCEs_[2*latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                          break;
+                        }
+                        addLatinOneEntry(contractionOffset, m_expansion_[offset+i], s);
+                      }
+                    } else { /* else, we do */
+                      while(m_expansion_[offset] != 0) {
+                        if(s.primShift < 0 || s.secShift < 0 || s.terShift < 0) {
+                          latinOneCEs_[contractionOffset] = BAIL_OUT_CE_;
+                          latinOneCEs_[latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                          latinOneCEs_[2*latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                          break;
+                        }
+                        addLatinOneEntry(contractionOffset, m_expansion_[offset++], s);
+                      }
+                    }
+                    contractionOffset++;
+                  } else if(!isSpecial(CE)) {
+                    addLatinOneEntry(contractionOffset++, CE, s);
+                  } else {
+                      latinOneCEs_[contractionOffset] = BAIL_OUT_CE_;
+                      latinOneCEs_[latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                      latinOneCEs_[2*latinOneTableLen_+contractionOffset] = BAIL_OUT_CE_;
+                      contractionOffset++;
+                  }
+                  UCharOffset++;
+                  s.primShift = 24; s.secShift = 24; s.terShift = 24;
+                  if(contractionOffset == latinOneTableLen_) { // we need to reallocate
+                   resizeLatinOneTable(2*latinOneTableLen_);
+                  }
+              } while(m_contractionIndex_[UCharOffset] != 0xFFFF);
+            }
+            break;
+          case CollationElementIterator.CE_SPEC_PROC_TAG_:
+            {
+              // 0xB7 is a precontext character defined in UCA5.1, a special
+              // handle is implemeted in order to save LatinOne table for
+              // most locales.
+              if (ch == 0xb7) {
+                  addLatinOneEntry(ch, CE, s);
+              }
+              else {
+                  latinOneFailed_ = true;
+                  return false;
+              }
+            }
+            break;
+          default:
+            latinOneFailed_ = true;
+            return false;
+          }
+        }
+      }
+      // compact table
+      if(contractionOffset < latinOneTableLen_) {
+        resizeLatinOneTable(contractionOffset);
+      }
+      return true;
+    }
+
+    private class ContractionInfo {
+        int index;
+    }
+
+    ContractionInfo m_ContInfo_;
+
+    private int
+    getLatinOneContraction(int strength, int CE, String s) {
+    //int strength, int CE, String s, Integer ind) {
+      int len = s.length();
+      //const UChar *UCharOffset = (UChar *)coll->image+getContractOffset(CE&0xFFF);
+      int UCharOffset = (CE & 0xFFF) - m_contractionOffset_;
+      int offset = 1;
+      int latinOneOffset = (CE & 0x00FFF000) >>> 12;
+      char schar = 0, tchar = 0;
+
+      for(;;) {
+        /*
+        if(len == -1) {
+          if(s[*index] == 0) { // end of string
+            return(coll->latinOneCEs[strength*coll->latinOneTableLen+latinOneOffset]);
+          } else {
+            schar = s[*index];
+          }
+        } else {
+        */
+          if(m_ContInfo_.index == len) {
+            return(latinOneCEs_[strength*latinOneTableLen_+latinOneOffset]);
+          } else {
+            schar = s.charAt(m_ContInfo_.index);
+          }
+        //}
+
+        while(schar > (tchar = m_contractionIndex_[UCharOffset+offset]/**(UCharOffset+offset)*/)) { /* since the contraction codepoints should be ordered, we skip all that are smaller */
+          offset++;
+        }
+
+        if (schar == tchar) {
+          m_ContInfo_.index++;
+          return(latinOneCEs_[strength*latinOneTableLen_+latinOneOffset+offset]);
+        }
+        else
+        {
+          if(schar  > ENDOFLATINONERANGE_ /*& 0xFF00*/) {
+            return BAIL_OUT_CE_;
+          }
+          // skip completely ignorables
+          int isZeroCE = m_trie_.getLeadValue(schar); //UTRIE_GET32_FROM_LEAD(coll->mapping, schar);
+          if(isZeroCE == 0) { // we have to ignore completely ignorables
+            m_ContInfo_.index++;
+            continue;
+          }
+
+          return(latinOneCEs_[strength*latinOneTableLen_+latinOneOffset]);
+        }
+      }
+    }
+
+
+    /**
+     * This is a fast strcoll, geared towards text in Latin-1.
+     * It supports contractions of size two, French secondaries
+     * and case switching. You can use it with strengths primary
+     * to tertiary. It does not support shifted and case level.
+     * It relies on the table build by setupLatin1Table. If it
+     * doesn't understand something, it will go to the regular
+     * strcoll.
+     */
+    private final int
+    compareUseLatin1(String source, String target, int startOffset)
+    {
+        int sLen = source.length();
+        int tLen = target.length();
+
+        int strength = getStrength();
+
+        int sIndex = startOffset, tIndex = startOffset;
+        char sChar = 0, tChar = 0;
+        int sOrder=0, tOrder=0;
+
+        boolean endOfSource = false;
+
+        //uint32_t *elements = coll->latinOneCEs;
+
+        boolean haveContractions = false; // if we have contractions in our string
+                                        // we cannot do French secondary
+
+        int offset = latinOneTableLen_;
+
+        // Do the primary level
+    primLoop:
+        for(;;) {
+          while(sOrder==0) { // this loop skips primary ignorables
+            // sOrder=getNextlatinOneCE(source);
+              if(sIndex==sLen) {
+                endOfSource = true;
+                break;
+              }
+              sChar=source.charAt(sIndex++); //[sIndex++];
+            //}
+            if(sChar > ENDOFLATINONERANGE_) { // if we encounter non-latin-1, we bail out
+              //fprintf(stderr, "R");
+              return compareRegular(source, target, startOffset);
+            }
+            sOrder = latinOneCEs_[sChar];
+            if(isSpecial(sOrder)) { // if we got a special
+              // specials can basically be either contractions or bail-out signs. If we get anything
+              // else, we'll bail out anywasy
+              if(getTag(sOrder) == CollationElementIterator.CE_CONTRACTION_TAG_) {
+                m_ContInfo_.index = sIndex;
+                sOrder = getLatinOneContraction(0, sOrder, source);
+                sIndex = m_ContInfo_.index;
+                haveContractions = true; // if there are contractions, we cannot do French secondary
+                // However, if there are contractions in the table, but we always use just one char,
+                // we might be able to do French. This should be checked out.
+              }
+              if(isSpecial(sOrder) /*== UCOL_BAIL_OUT_CE*/) {
+                //fprintf(stderr, "S");
+                return compareRegular(source, target, startOffset);
+              }
+            }
+          }
+
+          while(tOrder==0) {  // this loop skips primary ignorables
+            // tOrder=getNextlatinOneCE(target);
+            if(tIndex==tLen) {
+              if(endOfSource) {
+                break primLoop;
+              } else {
+                return 1;
+              }
+            }
+            tChar=target.charAt(tIndex++); //[tIndex++];
+            if(tChar > ENDOFLATINONERANGE_) { // if we encounter non-latin-1, we bail out
+              //fprintf(stderr, "R");
+              return compareRegular(source, target, startOffset);
+            }
+            tOrder = latinOneCEs_[tChar];
+            if(isSpecial(tOrder)) {
+              // Handling specials, see the comments for source
+              if(getTag(tOrder) == CollationElementIterator.CE_CONTRACTION_TAG_) {
+                m_ContInfo_.index = tIndex;
+                tOrder = getLatinOneContraction(0, tOrder, target);
+                tIndex = m_ContInfo_.index;
+                haveContractions = true;
+              }
+              if(isSpecial(tOrder)/*== UCOL_BAIL_OUT_CE*/) {
+                //fprintf(stderr, "S");
+                return compareRegular(source, target, startOffset);
+              }
+            }
+          }
+          if(endOfSource) { // source is finished, but target is not, say the result.
+              return -1;
+          }
+
+          if(sOrder == tOrder) { // if we have same CEs, we continue the loop
+            sOrder = 0; tOrder = 0;
+            continue;
+          } else {
+            // compare current top bytes
+            if(((sOrder^tOrder)&0xFF000000)!=0) {
+              // top bytes differ, return difference
+              if(sOrder >>> 8 < tOrder >>> 8) {
+                return -1;
+              } else {
+                return 1;
+              }
+              // instead of return (int32_t)(sOrder>>24)-(int32_t)(tOrder>>24);
+              // since we must return enum value
+            }
+
+            // top bytes match, continue with following bytes
+            sOrder<<=8;
+            tOrder<<=8;
+          }
+        }
+
+        // after primary loop, we definitely know the sizes of strings,
+        // so we set it and use simpler loop for secondaries and tertiaries
+        //sLen = sIndex; tLen = tIndex;
+        if(strength >= SECONDARY) {
+          // adjust the table beggining
+          //latinOneCEs_ += coll->latinOneTableLen;
+          endOfSource = false;
+
+          if(!m_isFrenchCollation_) { // non French
+            // This loop is a simplified copy of primary loop
+            // at this point we know that whole strings are latin-1, so we don't
+            // check for that. We also know that we only have contractions as
+            // specials.
+            //sIndex = 0; tIndex = 0;
+            sIndex = startOffset; tIndex = startOffset;
+    secLoop:
+            for(;;) {
+              while(sOrder==0) {
+                if(sIndex==sLen) {
+                  endOfSource = true;
+                  break;
+                }
+                sChar=source.charAt(sIndex++); //[sIndex++];
+                sOrder = latinOneCEs_[offset+sChar];
+                if(isSpecial(sOrder)) {
+                    m_ContInfo_.index = sIndex;
+                    sOrder = getLatinOneContraction(1, sOrder, source);
+                    sIndex = m_ContInfo_.index;
+                }
+              }
+
+              while(tOrder==0) {
+                if(tIndex==tLen) {
+                  if(endOfSource) {
+                    break secLoop;
+                  } else {
+                    return 1;
+                  }
+                }
+                tChar=target.charAt(tIndex++); //[tIndex++];
+                tOrder = latinOneCEs_[offset+tChar];
+                if(isSpecial(tOrder)) {
+                    m_ContInfo_.index = tIndex;
+                    tOrder = getLatinOneContraction(1, tOrder, target);
+                    tIndex = m_ContInfo_.index;
+                }
+              }
+              if(endOfSource) {
+                  return -1;
+              }
+
+              if(sOrder == tOrder) {
+                sOrder = 0; tOrder = 0;
+                continue;
+              } else {
+                // see primary loop for comments on this
+                if(((sOrder^tOrder)&0xFF000000)!=0) {
+                  if(sOrder >>> 8 < tOrder >>> 8) {
+                    return -1;
+                  } else {
+                    return 1;
+                  }
+                }
+                sOrder<<=8;
+                tOrder<<=8;
+              }
+            }
+          } else { // French
+            if(haveContractions) { // if we have contractions, we have to bail out
+              // since we don't really know how to handle them here
+              return compareRegular(source, target, startOffset);
+            }
+            // For French, we go backwards
+            sIndex = sLen; tIndex = tLen;
+    secFLoop:
+            for(;;) {
+              while(sOrder==0) {
+                if(sIndex==startOffset) {
+                  endOfSource = true;
+                  break;
+                }
+                sChar=source.charAt(--sIndex); //[--sIndex];
+                sOrder = latinOneCEs_[offset+sChar];
+                // don't even look for contractions
+              }
+
+              while(tOrder==0) {
+                if(tIndex==startOffset) {
+                  if(endOfSource) {
+                    break secFLoop;
+                  } else {
+                    return 1;
+                  }
+                }
+                tChar=target.charAt(--tIndex); //[--tIndex];
+                tOrder = latinOneCEs_[offset+tChar];
+                // don't even look for contractions
+              }
+              if(endOfSource) {
+                  return -1;
+              }
+
+              if(sOrder == tOrder) {
+                sOrder = 0; tOrder = 0;
+                continue;
+              } else {
+                // see the primary loop for comments
+                if(((sOrder^tOrder)&0xFF000000)!=0) {
+                  if(sOrder >>> 8 < tOrder >>> 8) {
+                    return -1;
+                  } else {
+                    return 1;
+                  }
+                }
+                sOrder<<=8;
+                tOrder<<=8;
+              }
+            }
+          }
+        }
+
+        if(strength >= TERTIARY) {
+          // tertiary loop is the same as secondary (except no French)
+          offset += latinOneTableLen_;
+          //sIndex = 0; tIndex = 0;
+          sIndex = startOffset; tIndex = startOffset;
+          endOfSource = false;
+          for(;;) {
+            while(sOrder==0) {
+              if(sIndex==sLen) {
+                endOfSource = true;
+                break;
+              }
+              sChar=source.charAt(sIndex++); //[sIndex++];
+              sOrder = latinOneCEs_[offset+sChar];
+              if(isSpecial(sOrder)) {
+                m_ContInfo_.index = sIndex;
+                sOrder = getLatinOneContraction(2, sOrder, source);
+                sIndex = m_ContInfo_.index;
+              }
+            }
+            while(tOrder==0) {
+              if(tIndex==tLen) {
+                if(endOfSource) {
+                  return 0; // if both strings are at the end, they are equal
+                } else {
+                  return 1;
+                }
+              }
+              tChar=target.charAt(tIndex++); //[tIndex++];
+              tOrder = latinOneCEs_[offset+tChar];
+              if(isSpecial(tOrder)) {
+                m_ContInfo_.index = tIndex;
+                tOrder = getLatinOneContraction(2, tOrder, target);
+                tIndex = m_ContInfo_.index;
+              }
+            }
+            if(endOfSource) {
+                return -1;
+            }
+            if(sOrder == tOrder) {
+              sOrder = 0; tOrder = 0;
+              continue;
+            } else {
+              if(((sOrder^tOrder)&0xff000000)!=0) {
+                if(sOrder >>> 8 < tOrder >>> 8) {
+                  return -1;
+                } else {
+                  return 1;
+                }
+              }
+              sOrder<<=8;
+              tOrder<<=8;
+            }
+          }
+        }
+        return 0;
+    }
+    /** 
+     * Get the version of this collator object.
+     * @return the version object associated with this collator
+     * @stable ICU 2.8
+     */
+    public VersionInfo getVersion() {
+        /* RunTime version  */
+        int rtVersion = VersionInfo.UCOL_RUNTIME_VERSION.getMajor();
+        /* Builder version*/
+        int bdVersion = m_version_.getMajor();
+
+        /* Charset Version. Need to get the version from cnv files
+         * makeconv should populate cnv files with version and
+         * an api has to be provided in ucnv.h to obtain this version
+         */
+        int csVersion = 0;
+
+        /* combine the version info */
+        int cmbVersion = ((rtVersion<<11) | (bdVersion<<6) | (csVersion)) & 0xFFFF;
+        
+        /* Tailoring rules */
+        return VersionInfo.getInstance(cmbVersion>>8, 
+                cmbVersion & 0xFF, 
+                m_version_.getMinor(), 
+                UCA_.m_UCA_version_.getMajor());
+
+//        versionInfo[0] = (uint8_t)(cmbVersion>>8);
+//        versionInfo[1] = (uint8_t)cmbVersion;
+//        versionInfo[2] = coll->image->version[1];
+//        versionInfo[3] = coll->UCA->image->UCAVersion[0];
+    }
+    
+    /** 
+     * Get the UCA version of this collator object.
+     * @return the version object associated with this collator
+     * @stable ICU 2.8
+     */
+    public VersionInfo getUCAVersion() {
+        return UCA_.m_UCA_version_;
+    }
+
+    private transient boolean m_reallocLatinOneCEs_;
+}
diff --git a/src/com/ibm/icu/text/RuleBasedNumberFormat.java b/src/com/ibm/icu/text/RuleBasedNumberFormat.java
new file mode 100644
index 0000000..ebbfca4
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -0,0 +1,1767 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+
+/**
+ * <p>A class that formats numbers according to a set of rules. This number formatter is
+ * typically used for spelling out numeric values in words (e.g., 25,3476 as
+ * &quot;twenty-five thousand three hundred seventy-six&quot; or &quot;vingt-cinq mille trois
+ * cents soixante-seize&quot; or
+ * &quot;funfundzwanzigtausenddreihundertsechsundsiebzig&quot;), but can also be used for
+ * other complicated formatting tasks, such as formatting a number of seconds as hours,
+ * minutes and seconds (e.g., 3,730 as &quot;1:02:10&quot;).</p>
+ *
+ * <p>The resources contain three predefined formatters for each locale: spellout, which
+ * spells out a value in words (123 is &quot;one hundred twenty-three&quot;); ordinal, which
+ * appends an ordinal suffix to the end of a numeral (123 is &quot;123rd&quot;); and
+ * duration, which shows a duration in seconds as hours, minutes, and seconds (123 is
+ * &quot;2:03&quot;).&nbsp; The client can also define more specialized <tt>RuleBasedNumberFormat</tt>s
+ * by supplying programmer-defined rule sets.</p>
+ *
+ * <p>The behavior of a <tt>RuleBasedNumberFormat</tt> is specified by a textual description
+ * that is either passed to the constructor as a <tt>String</tt> or loaded from a resource
+ * bundle. In its simplest form, the description consists of a semicolon-delimited list of <em>rules.</em>
+ * Each rule has a string of output text and a value or range of values it is applicable to.
+ * In a typical spellout rule set, the first twenty rules are the words for the numbers from
+ * 0 to 19:</p>
+ *
+ * <pre>zero; one; two; three; four; five; six; seven; eight; nine;
+ * ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen; seventeen; eighteen; nineteen;</pre>
+ *
+ * <p>For larger numbers, we can use the preceding set of rules to format the ones place, and
+ * we only have to supply the words for the multiples of 10:</p>
+ *
+ * <pre>20: twenty[-&gt;&gt;];
+ * 30: thirty{-&gt;&gt;];
+ * 40: forty[-&gt;&gt;];
+ * 50: fifty[-&gt;&gt;];
+ * 60: sixty[-&gt;&gt;];
+ * 70: seventy[-&gt;&gt;];
+ * 80: eighty[-&gt;&gt;];
+ * 90: ninety[-&gt;&gt;];</pre>
+ *
+ * <p>In these rules, the <em>base value</em> is spelled out explicitly and set off from the
+ * rule's output text with a colon. The rules are in a sorted list, and a rule is applicable
+ * to all numbers from its own base value to one less than the next rule's base value. The
+ * &quot;&gt;&gt;&quot; token is called a <em>substitution</em> and tells the fomatter to
+ * isolate the number's ones digit, format it using this same set of rules, and place the
+ * result at the position of the &quot;&gt;&gt;&quot; token. Text in brackets is omitted if
+ * the number being formatted is an even multiple of 10 (the hyphen is a literal hyphen; 24
+ * is &quot;twenty-four,&quot; not &quot;twenty four&quot;).</p>
+ *
+ * <p>For even larger numbers, we can actually look up several parts of the number in the
+ * list:</p>
+ *
+ * <pre>100: &lt;&lt; hundred[ &gt;&gt;];</pre>
+ *
+ * <p>The &quot;&lt;&lt;&quot; represents a new kind of substitution. The &lt;&lt; isolates
+ * the hundreds digit (and any digits to its left), formats it using this same rule set, and
+ * places the result where the &quot;&lt;&lt;&quot; was. Notice also that the meaning of
+ * &gt;&gt; has changed: it now refers to both the tens and the ones digits. The meaning of
+ * both substitutions depends on the rule's base value. The base value determines the rule's <em>divisor,</em>
+ * which is the highest power of 10 that is less than or equal to the base value (the user
+ * can change this). To fill in the substitutions, the formatter divides the number being
+ * formatted by the divisor. The integral quotient is used to fill in the &lt;&lt;
+ * substitution, and the remainder is used to fill in the &gt;&gt; substitution. The meaning
+ * of the brackets changes similarly: text in brackets is omitted if the value being
+ * formatted is an even multiple of the rule's divisor. The rules are applied recursively, so
+ * if a substitution is filled in with text that includes another substitution, that
+ * substitution is also filled in.</p>
+ *
+ * <p>This rule covers values up to 999, at which point we add another rule:</p>
+ *
+ * <pre>1000: &lt;&lt; thousand[ &gt;&gt;];</pre>
+ *
+ * <p>Again, the meanings of the brackets and substitution tokens shift because the rule's
+ * base value is a higher power of 10, changing the rule's divisor. This rule can actually be
+ * used all the way up to 999,999. This allows us to finish out the rules as follows:</p>
+ *
+ * <pre>1,000,000: &lt;&lt; million[ &gt;&gt;];
+ * 1,000,000,000: &lt;&lt; billion[ &gt;&gt;];
+ * 1,000,000,000,000: &lt;&lt; trillion[ &gt;&gt;];
+ * 1,000,000,000,000,000: OUT OF RANGE!;</pre>
+ *
+ * <p>Commas, periods, and spaces can be used in the base values to improve legibility and
+ * are ignored by the rule parser. The last rule in the list is customarily treated as an
+ * &quot;overflow rule,&quot; applying to everything from its base value on up, and often (as
+ * in this example) being used to print out an error message or default representation.
+ * Notice also that the size of the major groupings in large numbers is controlled by the
+ * spacing of the rules: because in English we group numbers by thousand, the higher rules
+ * are separated from each other by a factor of 1,000.</p>
+ *
+ * <p>To see how these rules actually work in practice, consider the following example:
+ * Formatting 25,430 with this rule set would work like this:</p>
+ *
+ * <table border="0" width="630">
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top"><strong>&lt;&lt; thousand &gt;&gt;</strong></td>
+ *     <td width="340" valign="top">[the rule whose base value is 1,000 is applicable to 25,340]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top"><strong>twenty-&gt;&gt;</strong> thousand &gt;&gt;</td>
+ *     <td width="340" valign="top">[25,340 over 1,000 is 25. The rule for 20 applies.]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-<strong>five</strong> thousand &gt;&gt;</td>
+ *     <td width="340" valign="top">[25 mod 10 is 5. The rule for 5 is &quot;five.&quot;</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand <strong>&lt;&lt; hundred &gt;&gt;</strong></td>
+ *     <td width="340" valign="top">[25,340 mod 1,000 is 340. The rule for 100 applies.]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand <strong>three</strong> hundred &gt;&gt;</td>
+ *     <td width="340" valign="top">[340 over 100 is 3. The rule for 3 is &quot;three.&quot;]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand three hundred <strong>forty</strong></td>
+ *     <td width="340" valign="top">[340 mod 100 is 40. The rule for 40 applies. Since 40 divides
+ *     evenly by 10, the hyphen and substitution in the brackets are omitted.]</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>The above syntax suffices only to format positive integers. To format negative numbers,
+ * we add a special rule:</p>
+ *
+ * <pre>-x: minus &gt;&gt;;</pre>
+ *
+ * <p>This is called a <em>negative-number rule,</em> and is identified by &quot;-x&quot;
+ * where the base value would be. This rule is used to format all negative numbers. the
+ * &gt;&gt; token here means &quot;find the number's absolute value, format it with these
+ * rules, and put the result here.&quot;</p>
+ *
+ * <p>We also add a special rule called a <em>fraction rule </em>for numbers with fractional
+ * parts:</p>
+ *
+ * <pre>x.x: &lt;&lt; point &gt;&gt;;</pre>
+ *
+ * <p>This rule is used for all positive non-integers (negative non-integers pass through the
+ * negative-number rule first and then through this rule). Here, the &lt;&lt; token refers to
+ * the number's integral part, and the &gt;&gt; to the number's fractional part. The
+ * fractional part is formatted as a series of single-digit numbers (e.g., 123.456 would be
+ * formatted as &quot;one hundred twenty-three point four five six&quot;).</p>
+ *
+ * <p>To see how this rule syntax is applied to various languages, examine the resource data.</p>
+ *
+ * <p>There is actually much more flexibility built into the rule language than the
+ * description above shows. A formatter may own multiple rule sets, which can be selected by
+ * the caller, and which can use each other to fill in their substitutions. Substitutions can
+ * also be filled in with digits, using a DecimalFormat object. There is syntax that can be
+ * used to alter a rule's divisor in various ways. And there is provision for much more
+ * flexible fraction handling. A complete description of the rule syntax follows:</p>
+ *
+ * <hr>
+ *
+ * <p>The description of a <tt>RuleBasedNumberFormat</tt>'s behavior consists of one or more <em>rule
+ * sets.</em> Each rule set consists of a name, a colon, and a list of <em>rules.</em> A rule
+ * set name must begin with a % sign. Rule sets with names that begin with a single % sign
+ * are <em>public:</em> the caller can specify that they be used to format and parse numbers.
+ * Rule sets with names that begin with %% are <em>private:</em> they exist only for the use
+ * of other rule sets. If a formatter only has one rule set, the name may be omitted.</p>
+ *
+ * <p>The user can also specify a special &quot;rule set&quot; named <tt>%%lenient-parse</tt>.
+ * The body of <tt>%%lenient-parse</tt> isn't a set of number-formatting rules, but a <tt>RuleBasedCollator</tt>
+ * description which is used to define equivalences for lenient parsing. For more information
+ * on the syntax, see <tt>RuleBasedCollator</tt>. For more information on lenient parsing,
+ * see <tt>setLenientParse()</tt>. <em>Note:</em> symbols that have syntactic meaning
+ * in collation rules, such as '&amp;', have no particular meaning when appearing outside
+ * of the <tt>lenient-parse</tt> rule set.</p>
+ *
+ * <p>The body of a rule set consists of an ordered, semicolon-delimited list of <em>rules.</em>
+ * Internally, every rule has a base value, a divisor, rule text, and zero, one, or two <em>substitutions.</em>
+ * These parameters are controlled by the description syntax, which consists of a <em>rule
+ * descriptor,</em> a colon, and a <em>rule body.</em></p>
+ *
+ * <p>A rule descriptor can take one of the following forms (text in <em>italics</em> is the
+ * name of a token):</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. <em>bv</em> is a decimal
+ *     number expressed using ASCII digits. <em>bv</em> may contain spaces, period, and commas,
+ *     which are irgnored. The rule's divisor is the highest power of 10 less than or equal to
+ *     the base value.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>/<em>rad</em>:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. The rule's divisor is the
+ *     highest power of <em>rad</em> less than or equal to the base value.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>&gt;:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. To calculate the divisor,
+ *     let the radix be 10, and the exponent be the highest exponent of the radix that yields a
+ *     result less than or equal to the base value. Every &gt; character after the base value
+ *     decreases the exponent by 1. If the exponent is positive or 0, the divisor is the radix
+ *     raised to the power of the exponent; otherwise, the divisor is 1.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>/<em>rad</em>&gt;:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. To calculate the divisor,
+ *     let the radix be <em>rad</em>, and the exponent be the highest exponent of the radix that
+ *     yields a result less than or equal to the base value. Every &gt; character after the radix
+ *     decreases the exponent by 1. If the exponent is positive or 0, the divisor is the radix
+ *     raised to the power of the exponent; otherwise, the divisor is 1.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">-x:</td>
+ *     <td valign="top">The rule is a negative-number rule.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">x.x:</td>
+ *     <td valign="top">The rule is an <em>improper fraction rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">0.x:</td>
+ *     <td valign="top">The rule is a <em>proper fraction rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">x.0:</td>
+ *     <td valign="top">The rule is a <em>master rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>nothing</em></td>
+ *     <td valign="top">If the rule's rule descriptor is left out, the base value is one plus the
+ *     preceding rule's base value (or zero if this is the first rule in the list) in a normal
+ *     rule set.&nbsp; In a fraction rule set, the base value is the same as the preceding rule's
+ *     base value.</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>A rule set may be either a regular rule set or a <em>fraction rule set,</em> depending
+ * on whether it is used to format a number's integral part (or the whole number) or a
+ * number's fractional part. Using a rule set to format a rule's fractional part makes it a
+ * fraction rule set.</p>
+ *
+ * <p>Which rule is used to format a number is defined according to one of the following
+ * algorithms: If the rule set is a regular rule set, do the following:
+ *
+ * <ul>
+ *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
+ *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the master rule is ignored.)</li>
+ *   <li>If the number is negative, use the negative-number rule.</li>
+ *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
+ *     rule.</li>
+ *   <li>If the number has a fractional part and is between 0 and 1, use the proper fraction
+ *     rule.</li>
+ *   <li>Binary-search the rule list for the rule with the highest base value less than or equal
+ *     to the number. If that rule has two substitutions, its base value is not an even multiple
+ *     of its divisor, and the number <em>is</em> an even multiple of the rule's divisor, use the
+ *     rule that precedes it in the rule list. Otherwise, use the rule itself.</li>
+ * </ul>
+ *
+ * <p>If the rule set is a fraction rule set, do the following:
+ *
+ * <ul>
+ *   <li>Ignore negative-number and fraction rules.</li>
+ *   <li>For each rule in the list, multiply the number being formatted (which will always be
+ *     between 0 and 1) by the rule's base value. Keep track of the distance between the result
+ *     the nearest integer.</li>
+ *   <li>Use the rule that produced the result closest to zero in the above calculation. In the
+ *     event of a tie or a direct hit, use the first matching rule encountered. (The idea here is
+ *     to try each rule's base value as a possible denominator of a fraction. Whichever
+ *     denominator produces the fraction closest in value to the number being formatted wins.) If
+ *     the rule following the matching rule has the same base value, use it if the numerator of
+ *     the fraction is anything other than 1; if the numerator is 1, use the original matching
+ *     rule. (This is to allow singular and plural forms of the rule text without a lot of extra
+ *     hassle.)</li>
+ * </ul>
+ *
+ * <p>A rule's body consists of a string of characters terminated by a semicolon. The rule
+ * may include zero, one, or two <em>substitution tokens,</em> and a range of text in
+ * brackets. The brackets denote optional text (and may also include one or both
+ * substitutions). The exact meanings of the substitution tokens, and under what conditions
+ * optional text is omitted, depend on the syntax of the substitution token and the context.
+ * The rest of the text in a rule body is literal text that is output when the rule matches
+ * the number being formatted.</p>
+ *
+ * <p>A substitution token begins and ends with a <em>token character.</em> The token
+ * character and the context together specify a mathematical operation to be performed on the
+ * number being formatted. An optional <em>substitution descriptor </em>specifies how the
+ * value resulting from that operation is used to fill in the substitution. The position of
+ * the substitution token in the rule body specifies the location of the resultant text in
+ * the original rule text.</p>
+ *
+ * <p>The meanings of the substitution token characters are as follows:</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&gt;&gt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the remainder</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Find the absolute value of the number and format the result</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in fraction or master rule</td>
+ *     <td>Isolate the number's fractional part and format it.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&gt;&gt;&gt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the remainder,
+ *       but bypass the normal rule-selection process and just use the
+ *       rule that precedes this one in this rule list.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in all other rules</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&lt;&lt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the quotient</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in fraction or master rule</td>
+ *     <td>Isolate the number's integral part and format it.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Multiply the number by the rule's base value and format the result.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">==</td>
+ *     <td width="165" valign="top">in all rule sets</td>
+ *     <td>Format the number unchanged</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">[]</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Omit the optional text if the number is an even multiple of the rule's divisor</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in improper-fraction rule</td>
+ *     <td>Omit the optional text if the number is between 0 and 1 (same as specifying both an
+ *     x.x rule and a 0.x rule)</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in master rule</td>
+ *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
+ *     rule and an x.0 rule)</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in proper-fraction rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Omit the optional text if multiplying the number by the rule's base value yields 1.</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>The substitution descriptor (i.e., the text between the token characters) may take one
+ * of three forms:</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">a rule set name</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using the
+ *     named rule set.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">a DecimalFormat pattern</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using a
+ *     DecimalFormat with the specified pattern.&nbsp; The pattern must begin with 0 or #.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">nothing</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using the rule
+ *     set containing the current rule, except:<ul>
+ *       <li>You can't have an empty substitution descriptor with a == substitution.</li>
+ *       <li>If you omit the substitution descriptor in a &gt;&gt; substitution in a fraction rule,
+ *         format the result one digit at a time using the rule set containing the current rule.</li>
+ *       <li>If you omit the substitution descriptor in a &lt;&lt; substitution in a rule in a
+ *         fraction rule set, format the result using the default rule set for this formatter.</li>
+ *     </ul>
+ *     </td>
+ *   </tr>
+ * </table>
+ *
+ * <p>Whitespace is ignored between a rule set name and a rule set body, between a rule
+ * descriptor and a rule body, or between rules. If a rule body begins with an apostrophe,
+ * the apostrophe is ignored, but all text after it becomes significant (this is how you can
+ * have a rule's rule text begin with whitespace). There is no escape function: the semicolon
+ * is not allowed in rule set names or in rule text, and the colon is not allowed in rule set
+ * names. The characters beginning a substitution token are always treated as the beginning
+ * of a substitution token.</p>
+ *
+ * <p>See the resource data and the demo program for annotated examples of real rule sets
+ * using these features.</p>
+ *
+ * @author Richard Gillam
+ * @see NumberFormat
+ * @see DecimalFormat
+ * @stable ICU 2.0
+ */
+public class RuleBasedNumberFormat extends NumberFormat {
+
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = -7664252765575395068L;
+    
+    /**
+     * Selector code that tells the constructor to create a spellout formatter
+     * @stable ICU 2.0
+     */
+    public static final int SPELLOUT = 1;
+
+    /**
+     * Selector code that tells the constructor to create an ordinal formatter
+     * @stable ICU 2.0
+     */
+    public static final int ORDINAL = 2;
+
+    /**
+     * Selector code that tells the constructor to create a duration formatter
+     * @stable ICU 2.0
+     */
+    public static final int DURATION = 3;
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The formatter's rule sets.
+     */
+    private transient NFRuleSet[] ruleSets = null;
+
+    /**
+     * A pointer to the formatter's default rule set.  This is always included
+     * in ruleSets.
+     */
+    private transient NFRuleSet defaultRuleSet = null;
+
+    /**
+     * The formatter's locale.  This is used to create DecimalFormatSymbols and
+     * Collator objects.
+     * @serial
+     */
+    private ULocale locale = null;
+
+    /**
+     * Collator to be used in lenient parsing.  This variable is lazy-evaluated:
+     * the collator is actually created the first time the client does a parse
+     * with lenient-parse mode turned on.
+     */
+    private transient Collator collator = null;
+
+    /**
+     * The DecimalFormatSymbols object that any DecimalFormat objects this
+     * formatter uses should use.  This variable is lazy-evaluated: it isn't
+     * filled in if the rule set never uses a DecimalFormat pattern.
+     */
+    private transient DecimalFormatSymbols decimalFormatSymbols = null;
+    
+    /**
+     * The NumberFormat used when lenient parsing numbers.  This needs to reflect
+     * the locale.  This is lazy-evaluated, like decimalFormatSymbols.  It is
+     * here so it can be shared by different NFSubstitutions.
+     */
+    private transient DecimalFormat decimalFormat = null;
+
+    /**
+     * Flag specifying whether lenient parse mode is on or off.  Off by default.
+     * @serial
+     */
+    private boolean lenientParse = false;
+
+    /**
+     * If the description specifies lenient-parse rules, they're stored here until
+     * the collator is created.
+     */
+    private transient String lenientParseRules;
+
+    /**
+     * If the description specifies post-process rules, they're stored here until
+     * post-processing is required.
+     */
+    private transient String postProcessRules;
+
+    /**
+     * Post processor lazily constructed from the postProcessRules.
+     */
+    private transient RBNFPostProcessor postProcessor;
+
+    /**
+     * Localizations for rule set names.
+     * @serial
+     */
+    private Map ruleSetDisplayNames;
+
+    /**
+     * The public rule set names;
+     * @serial
+     */
+    private String[] publicRuleSetNames;
+    
+    private static final boolean DEBUG  =  ICUDebug.enabled("rbnf");
+
+    //-----------------------------------------------------------------------
+    // constructors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the default locale.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @stable ICU 2.0
+     */
+    public RuleBasedNumberFormat(String description) {
+        locale = ULocale.getDefault();
+        init(description, null);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the default locale.
+     * <p>
+     * The localizations data provides information about the public
+     * rule sets and their localized display names for different
+     * locales. The first element in the list is an array of the names
+     * of the public rule sets.  The first element in this array is
+     * the initial default ruleset.  The remaining elements in the
+     * list are arrays of localizations of the names of the public
+     * rule sets.  Each of these is one longer than the initial array,
+     * with the first String being the ULocale ID, and the remaining
+     * Strings being the localizations of the rule set names, in the
+     * same order as the initial array.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param localizations a list of localizations for the rule set
+     * names in the description.
+     * @stable ICU 3.2
+     */
+    public RuleBasedNumberFormat(String description, String[][] localizations) {
+        locale = ULocale.getDefault();
+        init(description, localizations);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the specified locale to determine the
+     * characters to use when formatting in numerals, and to define equivalences
+     * for lenient parsing.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param locale A locale, which governs which characters are used for
+     * formatting values in numerals, and which characters are equivalent in
+     * lenient parsing.
+     * @stable ICU 2.0
+     */
+    public RuleBasedNumberFormat(String description, Locale locale) {
+        this(description, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the specified locale to determine the
+     * characters to use when formatting in numerals, and to define equivalences
+     * for lenient parsing.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param locale A locale, which governs which characters are used for
+     * formatting values in numerals, and which characters are equivalent in
+     * lenient parsing.
+     * @stable ICU 3.2
+     */
+    public RuleBasedNumberFormat(String description, ULocale locale) {
+        this.locale = locale;
+        init(description, null);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the specified locale to determine the
+     * characters to use when formatting in numerals, and to define equivalences
+     * for lenient parsing.
+     * <p>
+     * The localizations data provides information about the public
+     * rule sets and their localized display names for different
+     * locales. The first element in the list is an array of the names
+     * of the public rule sets.  The first element in this array is
+     * the initial default ruleset.  The remaining elements in the
+     * list are arrays of localizations of the names of the public
+     * rule sets.  Each of these is one longer than the initial array,
+     * with the first String being the ULocale ID, and the remaining
+     * Strings being the localizations of the rule set names, in the
+     * same order as the initial array.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param localizations a list of localizations for the rule set names in the description.
+     * @param locale A ulocale that governs which characters are used for
+     * formatting values in numerals, and determines which characters are equivalent in
+     * lenient parsing.
+     * @stable ICU 3.2
+     */
+    public RuleBasedNumberFormat(String description, String[][] localizations, ULocale locale) {
+        this.locale = locale;
+        init(description, localizations);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  The selector
+     * code choosed among three possible predefined formats: spellout, ordinal,
+     * and duration.
+     * @param locale The locale for the formatter.
+     * @param format A selector code specifying which kind of formatter to create for that
+     * locale.  There are three legal values: SPELLOUT, which creates a formatter that
+     * spells out a value in words in the desired language, ORDINAL, which attaches
+     * an ordinal suffix from the desired language to the end of a number (e.g. "123rd"),
+     * and DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     * @stable ICU 2.0
+     */
+    public RuleBasedNumberFormat(Locale locale, int format) {
+        this(ULocale.forLocale(locale), format);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  The selector
+     * code choosed among three possible predefined formats: spellout, ordinal,
+     * and duration.
+     * @param locale The locale for the formatter.
+     * @param format A selector code specifying which kind of formatter to create for that
+     * locale.  There are three legal values: SPELLOUT, which creates a formatter that
+     * spells out a value in words in the desired language, ORDINAL, which attaches
+     * an ordinal suffix from the desired language to the end of a number (e.g. "123rd"),
+     * and DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     * @stable ICU 3.2
+     */
+    public RuleBasedNumberFormat(ULocale locale, int format) {
+        this.locale = locale;
+
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.
+            getBundleInstance(ICUResourceBundle.ICU_RBNF_BASE_NAME, locale);
+
+        // TODO: determine correct actual/valid locale.  Note ambiguity
+        // here -- do actual/valid refer to pattern, DecimalFormatSymbols,
+        // or Collator?
+        ULocale uloc = bundle.getULocale();
+        setLocale(uloc, uloc);
+
+        String description = "";
+        String[][] localizations = null;
+
+        try {
+            // For backwards compatability - If we have a pre-4.2 style RBNF resource, attempt to read it.
+            description = bundle.getString(rulenames[format-1]);
+        }
+        catch (MissingResourceException e) {
+            try {
+                ICUResourceBundle rules = bundle.getWithFallback("RBNFRules/"+rulenames[format-1]);
+                UResourceBundleIterator it = rules.getIterator(); 
+                while (it.hasNext()) {
+                   description = description.concat(it.nextString());
+                }
+            }
+            catch (MissingResourceException e1) {
+            } 
+        }
+
+        try {
+            UResourceBundle locb = bundle.get(locnames[format-1]);
+            localizations = new String[locb.getSize()][];
+            for (int i = 0; i < localizations.length; ++i) {
+                localizations[i] = locb.get(i).getStringArray();
+            }
+        }
+        catch (MissingResourceException e) {
+            // might have description and no localizations, or no description...
+        }
+
+        init(description, localizations);
+    }
+
+    private static final String[] rulenames = {
+        "SpelloutRules", "OrdinalRules", "DurationRules",
+    };
+    private static final String[] locnames = {
+        "SpelloutLocalizations", "OrdinalLocalizations", "DurationLocalizations",
+    };
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  Uses the
+     * default locale.
+     * @param format A selector code specifying which kind of formatter to create.
+     * There are three legal values: SPELLOUT, which creates a formatter that spells
+     * out a value in words in the default locale's langyage, ORDINAL, which attaches
+     * an ordinal suffix from the default locale's language to a numeral, and
+     * DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     * @stable ICU 2.0
+     */
+    public RuleBasedNumberFormat(int format) {
+        this(ULocale.getDefault(), format);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Duplicates this formatter.
+     * @return A RuleBasedNumberFormat that is equal to this one.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        return super.clone();
+    }
+
+    /**
+     * Tests two RuleBasedNumberFormats for equality.
+     * @param that The formatter to compare against this one.
+     * @return true if the two formatters have identical behavior.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object that) {
+        // if the other object isn't a RuleBasedNumberFormat, that's
+        // all we need to know
+        if (!(that instanceof RuleBasedNumberFormat)) {
+            return false;
+        } else {
+            // cast the other object's pointer to a pointer to a
+            // RuleBasedNumberFormat
+            RuleBasedNumberFormat that2 = (RuleBasedNumberFormat)that;
+
+            // compare their locales and lenient-parse modes
+            if (!locale.equals(that2.locale) || lenientParse != that2.lenientParse) {
+                return false;
+            }
+
+            // if that succeeds, then compare their rule set lists
+            if (ruleSets.length != that2.ruleSets.length) {
+                return false;
+            }
+            for (int i = 0; i < ruleSets.length; i++) {
+                if (!ruleSets[i].equals(that2.ruleSets[i])) {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+    }
+
+    /**
+     * Generates a textual description of this formatter.
+     * @return a String containing a rule set that will produce a RuleBasedNumberFormat
+     * with identical behavior to this one.  This won't necessarily be identical
+     * to the rule set description that was originally passed in, but will produce
+     * the same result.
+     * @stable ICU 2.0
+     */
+    public String toString() {
+
+        // accumulate the descriptions of all the rule sets in a
+        // StringBuffer, then cast it to a String and return it
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < ruleSets.length; i++) {
+            result.append(ruleSets[i].toString());
+        }
+        return result.toString();
+    }
+
+    /**
+     * Writes this object to a stream.
+     * @param out The stream to write to.
+     */
+    private void writeObject(java.io.ObjectOutputStream out)
+        throws java.io.IOException {
+        // we just write the textual description to the stream, so we
+        // have an implementation-independent streaming format
+        out.writeUTF(this.toString());
+        out.writeObject(this.locale);
+    }
+
+    /**
+     * Reads this object in from a stream.
+     * @param in The stream to read from.
+     */
+    private void readObject(java.io.ObjectInputStream in)
+        throws java.io.IOException {
+
+        // read the description in from the stream
+        String description = in.readUTF();
+        ULocale loc;
+        
+        try {
+            loc = (ULocale) in.readObject();
+        } catch (Exception e) {
+            loc = ULocale.getDefault();
+        }
+
+        // build a brand-new RuleBasedNumberFormat from the description,
+        // then steal its substructure.  This object's substructure and
+        // the temporary RuleBasedNumberFormat drop on the floor and
+        // get swept up by the garbage collector
+        RuleBasedNumberFormat temp = new RuleBasedNumberFormat(description, loc);
+        ruleSets = temp.ruleSets;
+        defaultRuleSet = temp.defaultRuleSet;
+        publicRuleSetNames = temp.publicRuleSetNames;
+        decimalFormatSymbols = temp.decimalFormatSymbols;
+        decimalFormat = temp.decimalFormat;
+        locale = temp.locale;
+    }
+
+
+    //-----------------------------------------------------------------------
+    // public API functions
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns a list of the names of all of this formatter's public rule sets.
+     * @return A list of the names of all of this formatter's public rule sets.
+     * @stable ICU 2.0
+     */
+    public String[] getRuleSetNames() {
+        return (String[])publicRuleSetNames.clone();
+    }
+
+    /**
+     * Return a list of locales for which there are locale-specific display names
+     * for the rule sets in this formatter.  If there are no localized display names, return null.
+     * @return an array of the ulocales for which there is rule set display name information
+     * @stable ICU 3.2
+     */
+    public ULocale[] getRuleSetDisplayNameLocales() {
+        if (ruleSetDisplayNames != null) {
+            Set s = ruleSetDisplayNames.keySet();
+            String[] locales = (String[])s.toArray(new String[s.size()]);
+            Arrays.sort(locales, String.CASE_INSENSITIVE_ORDER);
+            ULocale[] result = new ULocale[locales.length];
+            for (int i = 0; i < locales.length; ++i) {
+                result[i] = new ULocale(locales[i]);
+            }
+            return result;
+        }
+        return null;
+    }
+
+    private String[] getNameListForLocale(ULocale loc) {
+        if (loc != null && ruleSetDisplayNames != null) {
+            String[] localeNames = { loc.getBaseName(), ULocale.getDefault().getBaseName() };
+            for (int i = 0; i < localeNames.length; ++i) {
+                String lname = localeNames[i];
+                while (lname.length() > 0) {
+                    String[] names = (String[])ruleSetDisplayNames.get(lname);
+                    if (names != null) {
+                        return names;
+                    }
+                    lname = ULocale.getFallback(lname);
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Return the rule set display names for the provided locale.  These are in the same order
+     * as those returned by getRuleSetNames.  The locale is matched against the locales for
+     * which there is display name data, using normal fallback rules.  If no locale matches,
+     * the default display names are returned.  (These are the internal rule set names minus
+     * the leading '%'.)
+     * @return an array of the locales that have display name information
+     * @see #getRuleSetNames
+     * @stable ICU 3.2
+     */
+    public String[] getRuleSetDisplayNames(ULocale loc) {
+        String[] names = getNameListForLocale(loc);
+        if (names != null) {
+            return (String[])names.clone();
+        }
+        names = getRuleSetNames();
+        for (int i = 0; i < names.length; ++i) {
+            names[i] = names[i].substring(1);
+        }
+        return names;
+    }
+
+    /**
+     * Return the rule set display names for the current default locale.
+     * @return an array of the display names
+     * @see #getRuleSetDisplayNames(ULocale)
+     * @stable ICU 3.2
+     */
+    public String[] getRuleSetDisplayNames() {
+        return getRuleSetDisplayNames(ULocale.getDefault());
+    }
+
+    /**
+     * Return the rule set display name for the provided rule set and locale.
+     * The locale is matched against the locales for which there is display name data, using
+     * normal fallback rules.  If no locale matches, the default display name is returned.
+     * @return the display name for the rule set
+     * @see #getRuleSetDisplayNames
+     * @throws IllegalArgumentException if ruleSetName is not a valid rule set name for this format
+     * @stable ICU 3.2
+     */
+    public String getRuleSetDisplayName(String ruleSetName, ULocale loc) {
+        String[] rsnames = publicRuleSetNames;
+        for (int ix = 0; ix < rsnames.length; ++ix) {
+            if (rsnames[ix].equals(ruleSetName)) {
+                String[] names = getNameListForLocale(loc);
+                if (names != null) {
+                    return names[ix];
+                }
+                return rsnames[ix].substring(1);
+            }
+        }
+        throw new IllegalArgumentException("unrecognized rule set name: " + ruleSetName);
+    }
+
+    /**
+     * Return the rule set display name for the provided rule set in the current default locale.
+     * @return the display name for the rule set
+     * @see #getRuleSetDisplayName(String,ULocale)
+     * @stable ICU 3.2
+     */
+    public String getRuleSetDisplayName(String ruleSetName) {
+        return getRuleSetDisplayName(ruleSetName, ULocale.getDefault());
+    }
+
+    /**
+     * Formats the specified number according to the specified rule set.
+     * @param number The number to format.
+     * @param ruleSet The name of the rule set to format the number with.
+     * This must be the name of a valid public rule set for this formatter.
+     * @return A textual representation of the number.
+     * @stable ICU 2.0
+     */
+    public String format(double number, String ruleSet) throws IllegalArgumentException {
+        if (ruleSet.startsWith("%%")) {
+            throw new IllegalArgumentException("Can't use internal rule set");
+        }
+        return format(number, findRuleSet(ruleSet));
+    }
+
+    /**
+     * Formats the specified number according to the specified rule set.
+     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * ignores it.  Convert the number to a double first if you ned it.)  This
+     * function preserves all the precision in the long-- it doesn't convert it
+     * to a double.
+     * @param number The number to format.
+     * @param ruleSet The name of the rule set to format the number with.
+     * This must be the name of a valid public rule set for this formatter.
+     * @return A textual representation of the number.
+     * @stable ICU 2.0
+     */
+    public String format(long number, String ruleSet) throws IllegalArgumentException {
+        if (ruleSet.startsWith("%%")) {
+            throw new IllegalArgumentException("Can't use internal rule set");
+        }
+        return format(number, findRuleSet(ruleSet));
+    }
+
+    /**
+     * Formats the specified number using the formatter's default rule set.
+     * (The default rule set is the last public rule set defined in the description.)
+     * @param number The number to format.
+     * @param toAppendTo A StringBuffer that the result should be appended to.
+     * @param ignore This function doesn't examine or update the field position.
+     * @return toAppendTo
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(double number,
+                               StringBuffer toAppendTo,
+                               FieldPosition ignore) {
+        // this is one of the inherited format() methods.  Since it doesn't
+        // have a way to select the rule set to use, it just uses the
+        // default one
+        toAppendTo.append(format(number, defaultRuleSet));
+        return toAppendTo;
+    }
+
+    /**
+     * Formats the specified number using the formatter's default rule set.
+     * (The default rule set is the last public rule set defined in the description.)
+     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * ignores it.  Convert the number to a double first if you ned it.)  This
+     * function preserves all the precision in the long-- it doesn't convert it
+     * to a double.
+     * @param number The number to format.
+     * @param toAppendTo A StringBuffer that the result should be appended to.
+     * @param ignore This function doesn't examine or update the field position.
+     * @return toAppendTo
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(long number,
+                               StringBuffer toAppendTo,
+                               FieldPosition ignore) {
+        // this is one of the inherited format() methods.  Since it doesn't
+        // have a way to select the rule set to use, it just uses the
+        // default one
+        toAppendTo.append(format(number, defaultRuleSet));
+        return toAppendTo;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigInteger.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigInteger number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        return format(new com.ibm.icu.math.BigDecimal(number), toAppendTo, pos);
+    }
+
+//#if defined(FOUNDATION10)
+//#else
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigDecimal.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(java.math.BigDecimal number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        return format(new com.ibm.icu.math.BigDecimal(number), toAppendTo, pos);
+    }
+//#endif
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Implement com.ibm.icu.text.NumberFormat:
+     * Format a BigDecimal.
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(com.ibm.icu.math.BigDecimal number,
+                               StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        // TEMPORARY:
+        return format(number.doubleValue(), toAppendTo, pos);
+    }
+
+    /**
+     * Parses the specfied string, beginning at the specified position, according
+     * to this formatter's rules.  This will match the string against all of the
+     * formatter's public rule sets and return the value corresponding to the longest
+     * parseable substring.  This function's behavior is affected by the lenient
+     * parse mode.
+     * @param text The string to parse
+     * @param parsePosition On entry, contains the position of the first character
+     * in "text" to examine.  On exit, has been updated to contain the position
+     * of the first character in "text" that wasn't consumed by the parse.
+     * @return The number that corresponds to the parsed text.  This will be an
+     * instance of either Long or Double, depending on whether the result has a
+     * fractional part.
+     * @see #setLenientParseMode
+     * @stable ICU 2.0
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+
+        // parsePosition tells us where to start parsing.  We copy the
+        // text in the string from here to the end inro a new string,
+        // and create a new ParsePosition and result variable to use
+        // for the duration of the parse operation
+        String workingText = text.substring(parsePosition.getIndex());
+        ParsePosition workingPos = new ParsePosition(0);
+        Number tempResult = null;
+
+        // keep track of the largest number of characters consumed in
+        // the various trials, and the result that corresponds to it
+        Number result = new Long(0);
+        ParsePosition highWaterMark = new ParsePosition(workingPos.getIndex());
+
+        // iterate over the public rule sets (beginning with the default one)
+        // and try parsing the text with each of them.  Keep track of which
+        // one consumes the most characters: that's the one that determines
+        // the result we return
+        for (int i = ruleSets.length - 1; i >= 0; i--) {
+            // skip private rule sets
+            if (ruleSets[i].getName().startsWith("%%")) {
+                continue;
+            }
+
+            // try parsing the string with the rule set.  If it gets past the
+            // high-water mark, update the high-water mark and the result
+            tempResult = ruleSets[i].parse(workingText, workingPos, Double.MAX_VALUE);
+            if (workingPos.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(workingPos.getIndex());
+            }
+            // commented out because this API on ParsePosition doesn't exist in 1.1.x
+            //            if (workingPos.getErrorIndex() > highWaterMark.getErrorIndex()) {
+            //                highWaterMark.setErrorIndex(workingPos.getErrorIndex());
+            //            }
+
+            // if we manage to use up all the characters in the string,
+            // we don't have to try any more rule sets
+            if (highWaterMark.getIndex() == workingText.length()) {
+                break;
+            }
+
+            // otherwise, reset our internal parse position to the
+            // beginning and try again with the next rule set
+            workingPos.setIndex(0);
+        }
+
+        // add the high water mark to our original parse position and
+        // return the result
+        parsePosition.setIndex(parsePosition.getIndex() + highWaterMark.getIndex());
+        // commented out because this API on ParsePosition doesn't exist in 1.1.x
+        //        if (highWaterMark.getIndex() == 0) {
+        //            parsePosition.setErrorIndex(parsePosition.getIndex() + highWaterMark.getErrorIndex());
+        //        }
+        return result;
+    }
+
+    /**
+     * Turns lenient parse mode on and off.
+     *
+     * When in lenient parse mode, the formatter uses a Collator for parsing the text.
+     * Only primary differences are treated as significant.  This means that case
+     * differences, accent differences, alternate spellings of the same letter
+     * (e.g., ae and a-umlaut in German), ignorable characters, etc. are ignored in
+     * matching the text.  In many cases, numerals will be accepted in place of words
+     * or phrases as well.
+     *
+     * For example, all of the following will correctly parse as 255 in English in
+     * lenient-parse mode:
+     * <br>"two hundred fifty-five"
+     * <br>"two hundred fifty five"
+     * <br>"TWO HUNDRED FIFTY-FIVE"
+     * <br>"twohundredfiftyfive"
+     * <br>"2 hundred fifty-5"
+     *
+     * The Collator used is determined by the locale that was
+     * passed to this object on construction.  The description passed to this object
+     * on construction may supply additional collation rules that are appended to the
+     * end of the default collator for the locale, enabling additional equivalences
+     * (such as adding more ignorable characters or permitting spelled-out version of
+     * symbols; see the demo program for examples).
+     *
+     * It's important to emphasize that even strict parsing is relatively lenient: it
+     * will accept some text that it won't produce as output.  In English, for example,
+     * it will correctly parse "two hundred zero" and "fifteen hundred".
+     *
+     * @param enabled If true, turns lenient-parse mode on; if false, turns it off.
+     * @see RuleBasedCollator
+     * @stable ICU 2.0
+     */
+    public void setLenientParseMode(boolean enabled) {
+        lenientParse = enabled;
+
+        // if we're leaving lenient-parse mode, throw away the collator
+        // we've been using
+        if (!enabled) {
+            collator = null;
+        }
+    }
+
+    /**
+     * Returns true if lenient-parse mode is turned on.  Lenient parsing is off
+     * by default.
+     * @return true if lenient-parse mode is turned on.
+     * @see #setLenientParseMode
+     * @stable ICU 2.0
+     */
+    public boolean lenientParseEnabled() {
+        return lenientParse;
+    }
+
+    /**
+     * Override the default rule set to use.  If ruleSetName is null, reset
+     * to the initial default rule set.
+     * @param ruleSetName the name of the rule set, or null to reset the initial default.
+     * @throws IllegalArgumentException if ruleSetName is not the name of a public ruleset.
+     * @stable ICU 2.0
+     */
+    public void setDefaultRuleSet(String ruleSetName) {
+        if (ruleSetName == null) {
+            if (publicRuleSetNames.length > 0) {
+                defaultRuleSet = findRuleSet(publicRuleSetNames[0]);
+            } else {
+                defaultRuleSet = null;
+                int n = ruleSets.length;
+                while (--n >= 0) {
+                   String currentName = ruleSets[n].getName();
+                   if (currentName.equals("%spellout") || currentName.equals("%ordinal") || currentName.equals("%duration")) {
+                       defaultRuleSet = ruleSets[n];
+                       return;
+                   } 
+                }
+
+                n = ruleSets.length;
+                while (--n >= 0) {
+                    if (ruleSets[n].isPublic()) {
+                        defaultRuleSet = ruleSets[n];
+                        break;
+                    }
+                }
+            }
+        } else if (ruleSetName.startsWith("%%")) {
+            throw new IllegalArgumentException("cannot use private rule set: " + ruleSetName);
+        } else {
+            defaultRuleSet = findRuleSet(ruleSetName);
+        }
+    }
+
+    /**
+     * Return the name of the current default rule set.
+     * @return the name of the current default rule set, if it is public, else the empty string.
+     * @stable ICU 3.0
+     */
+    public String getDefaultRuleSetName() {
+        if (defaultRuleSet != null && defaultRuleSet.isPublic()) {
+            return defaultRuleSet.getName();
+        }
+        return "";
+    }
+
+    //-----------------------------------------------------------------------
+    // package-internal API
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns a reference to the formatter's default rule set.  The default
+     * rule set is the last public rule set in the description, or the one
+     * most recently set by setDefaultRuleSet.
+     * @return The formatter's default rule set.
+     */
+    NFRuleSet getDefaultRuleSet() {
+        return defaultRuleSet;
+    }
+
+    /**
+     * Returns the collator to use for lenient parsing.  The collator is lazily created:
+     * this function creates it the first time it's called.
+     * @return The collator to use for lenient parsing, or null if lenient parsing
+     * is turned off.
+     */
+    Collator getCollator() {
+        // lazy-evaulate the collator
+        if (collator == null && lenientParse) {
+            try {
+                // create a default collator based on the formatter's locale,
+                // then pull out that collator's rules, append any additional
+                // rules specified in the description, and create a _new_
+                // collator based on the combinaiton of those rules
+                RuleBasedCollator temp = (RuleBasedCollator)Collator.getInstance(locale);
+                String rules = temp.getRules() + lenientParseRules;
+
+                collator = new RuleBasedCollator(rules);
+                collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            }
+            catch (Exception e) {
+                // If we get here, it means we have a malformed set of
+                // collation rules, which hopefully won't happen
+                if(DEBUG){
+                    e.printStackTrace();
+                }
+                collator = null;
+            }
+        }
+
+        // if lenient-parse mode is off, this will be null
+        // (see setLenientParseMode())
+        return collator;
+    }
+
+    /**
+     * Returns the DecimalFormatSymbols object that should be used by all DecimalFormat
+     * instances owned by this formatter.  This object is lazily created: this function
+     * creates it the first time it's called.
+     * @return The DecimalFormatSymbols object that should be used by all DecimalFormat
+     * instances owned by this formatter.
+     */
+    DecimalFormatSymbols getDecimalFormatSymbols() {
+        // lazy-evaluate the DecimalFormatSymbols object.  This object
+        // is shared by all DecimalFormat instances belonging to this
+        // formatter
+        if (decimalFormatSymbols == null) {
+            decimalFormatSymbols = new DecimalFormatSymbols(locale);
+        }
+        return decimalFormatSymbols;
+    }
+    
+    DecimalFormat getDecimalFormat() {
+        if (decimalFormat == null) {
+            decimalFormat = (DecimalFormat)NumberFormat.getInstance(locale);
+        }
+        return decimalFormat;
+    }
+
+    //-----------------------------------------------------------------------
+    // construction implementation
+    //-----------------------------------------------------------------------
+
+    /**
+     * This extracts the special information from the rule sets before the
+     * main parsing starts.  Extra whitespace must have already been removed
+     * from the description.  If found, the special information is removed from the
+     * description and returned, otherwise the description is unchanged and null
+     * is returned.  Note: the trailing semicolon at the end of the special
+     * rules is stripped.
+     * @param description the rbnf description with extra whitespace removed
+     * @param specialName the name of the special rule text to extract
+     * @return the special rule text, or null if the rule was not found
+     */
+    private String extractSpecial(StringBuffer description, String specialName) {
+        String result = null;
+        int lp = Utility.indexOf(description, specialName);
+        if (lp != -1) {
+            // we've got to make sure we're not in the middle of a rule
+            // (where specialName would actually get treated as
+            // rule text)
+            if (lp == 0 || description.charAt(lp - 1) == ';') {
+                // locate the beginning and end of the actual special
+                // rules (there may be whitespace between the name and
+                // the first token in the description)
+                int lpEnd = Utility.indexOf(description, ";%", lp);
+
+                if (lpEnd == -1) {
+                    lpEnd = description.length() - 1; // later we add 1 back to get the '%'
+                }
+                int lpStart = lp + specialName.length();
+                while (lpStart < lpEnd &&
+                       UCharacterProperty.isRuleWhiteSpace(description.charAt(lpStart))) {
+                    ++lpStart;
+                }
+
+                // copy out the special rules
+                result = description.substring(lpStart, lpEnd);
+
+                // remove the special rule from the description
+                description.delete(lp, lpEnd+1); // delete the semicolon but not the '%'
+            }
+        }
+        return result;
+    }
+
+    /**
+     * This function parses the description and uses it to build all of
+     * internal data structures that the formatter uses to do formatting
+     * @param description The description of the formatter's desired behavior.
+     * This is either passed in by the caller or loaded out of a resource
+     * by one of the constructors, and is in the description format specified
+     * in the class docs.
+     */
+    private void init(String description, String[][] localizations) {
+        initLocalizations(localizations);
+
+        // start by stripping the trailing whitespace from all the rules
+        // (this is all the whitespace follwing each semicolon in the
+        // description).  This allows us to look for rule-set boundaries
+        // by searching for ";%" without having to worry about whitespace
+        // between the ; and the %
+        StringBuffer descBuf = stripWhitespace(description);
+
+        // check to see if there's a set of lenient-parse rules.  If there
+        // is, pull them out into our temporary holding place for them,
+        // and delete them from the description before the real desciption-
+        // parsing code sees them
+
+        lenientParseRules = extractSpecial(descBuf, "%%lenient-parse:");
+        postProcessRules = extractSpecial(descBuf, "%%post-process:");
+
+        // pre-flight parsing the description and count the number of
+        // rule sets (";%" marks the end of one rule set and the beginning
+        // of the next)
+        int numRuleSets = 0;
+        for (int p = Utility.indexOf(descBuf, ";%"); p != -1; p = Utility.indexOf(descBuf, ";%", p)) {
+            ++numRuleSets;
+            ++p;
+        }
+        ++numRuleSets;
+
+        // our rule list is an array of the apprpriate size
+        ruleSets = new NFRuleSet[numRuleSets];
+
+        // divide up the descriptions into individual rule-set descriptions
+        // and store them in a temporary array.  At each step, we also
+        // new up a rule set, but all this does is initialize its name
+        // and remove it from its description.  We can't actually parse
+        // the rest of the descriptions and finish initializing everything
+        // because we have to know the names and locations of all the rule
+        // sets before we can actually set everything up
+        String[] ruleSetDescriptions = new String[numRuleSets];
+
+        int curRuleSet = 0;
+        int start = 0;
+        for (int p = Utility.indexOf(descBuf, ";%"); p != -1; p = Utility.indexOf(descBuf, ";%", start)) {
+            ruleSetDescriptions[curRuleSet] = descBuf.substring(start, p + 1);
+            ruleSets[curRuleSet] = new NFRuleSet(ruleSetDescriptions, curRuleSet);
+            ++curRuleSet;
+            start = p + 1;
+        }
+        ruleSetDescriptions[curRuleSet] = descBuf.substring(start);
+        ruleSets[curRuleSet] = new NFRuleSet(ruleSetDescriptions, curRuleSet);
+
+        // now we can take note of the formatter's default rule set, which
+        // is the last public rule set in the description (it's the last
+        // rather than the first so that a user can create a new formatter
+        // from an existing formatter and change its default bevhaior just
+        // by appending more rule sets to the end)
+
+        // {dlf} Initialization of a fraction rule set requires the default rule
+        // set to be known.  For purposes of initialization, this is always the
+        // last public rule set, no matter what the localization data says.
+
+        // Set the default ruleset to the last public ruleset, unless one of the predefined
+        // ruleset names %spellout, %ordinal, or %duration is found
+
+        boolean defaultNameFound = false;                  
+        int n = ruleSets.length;
+        defaultRuleSet = ruleSets[ruleSets.length - 1];
+
+        while (--n >= 0) {
+            String currentName = ruleSets[n].getName();
+            if (currentName.equals("%spellout") || currentName.equals("%ordinal") || currentName.equals("%duration")) {
+                defaultRuleSet = ruleSets[n];
+                defaultNameFound = true;                  
+                break;
+            } 
+        }
+
+        if ( !defaultNameFound ) {
+            for (int i = ruleSets.length - 1; i >= 0; --i) {
+                if (!ruleSets[i].getName().startsWith("%%")) {
+                    defaultRuleSet = ruleSets[i];
+                    break;
+                }
+            }
+        }
+
+        // finally, we can go back through the temporary descriptions
+        // list and finish seting up the substructure (and we throw
+        // away the temporary descriptions as we go)
+        for (int i = 0; i < ruleSets.length; i++) {
+            ruleSets[i].parseRules(ruleSetDescriptions[i], this);
+            ruleSetDescriptions[i] = null;
+        }
+
+        // Now that the rules are initialized, the 'real' default rule
+        // set can be adjusted by the localization data.
+
+        // count the number of public rule sets
+        // (public rule sets have names that begin with % instead of %%)
+        int publicRuleSetCount = 0;
+        for (int i = 0; i < ruleSets.length; i++) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                ++publicRuleSetCount;
+            }
+        }
+
+        // prepare an array of the proper size and copy the names into it
+        String[] publicRuleSetTemp = new String[publicRuleSetCount];
+        publicRuleSetCount = 0;
+        for (int i = ruleSets.length - 1; i >= 0; i--) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                publicRuleSetTemp[publicRuleSetCount++] = ruleSets[i].getName();
+            }
+        }
+
+        if (publicRuleSetNames != null) {
+            // confirm the names, if any aren't in the rules, that's an error
+            // it is ok if the rules contain public rule sets that are not in this list
+            loop: for (int i = 0; i < publicRuleSetNames.length; ++i) {
+                String name = publicRuleSetNames[i];
+                for (int j = 0; j < publicRuleSetTemp.length; ++j) {
+                    if (name.equals(publicRuleSetTemp[j])) {
+                        continue loop;
+                    }
+                }
+                throw new IllegalArgumentException("did not find public rule set: " + name);
+            }
+
+            defaultRuleSet = findRuleSet(publicRuleSetNames[0]); // might be different
+        } else {
+            publicRuleSetNames = publicRuleSetTemp;
+        }
+    }
+
+    /**
+     * Take the localizations array and create a Map from the locale strings to
+     * the localization arrays.
+     */
+    private void initLocalizations(String[][] localizations) {
+        if (localizations != null) {
+            publicRuleSetNames = (String[])localizations[0].clone();
+
+            Map m = new HashMap();
+            for (int i = 1; i < localizations.length; ++i) {
+                String[] data = localizations[i];
+                String loc = data[0];
+                String[] names = new String[data.length-1];
+                if (names.length != publicRuleSetNames.length) {
+                    throw new IllegalArgumentException("public name length: " + publicRuleSetNames.length +
+                                                       " != localized names[" + i + "] length: " + names.length);
+                }
+                System.arraycopy(data, 1, names, 0, names.length);
+                m.put(loc, names);
+            }
+
+            if (!m.isEmpty()) {
+                ruleSetDisplayNames = m;
+            }
+        }
+    }
+
+    /**
+     * This function is used by init() to strip whitespace between rules (i.e.,
+     * after semicolons).
+     * @param description The formatter description
+     * @return The description with all the whitespace that follows semicolons
+     * taken out.
+     */
+    private StringBuffer stripWhitespace(String description) {
+        // since we don't have a method that deletes characters (why?!!)
+        // create a new StringBuffer to copy the text into
+        StringBuffer result = new StringBuffer();
+
+        // iterate through the characters...
+        int start = 0;
+        while (start != -1 && start < description.length()) {
+            // seek to the first non-whitespace character...
+            while (start < description.length()
+                   && UCharacterProperty.isRuleWhiteSpace(description.charAt(start))) {
+                ++start;
+            }
+
+            //if the first non-whitespace character is semicolon, skip it and continue
+            if (start < description.length() && description.charAt(start) == ';') {
+                start += 1;
+                continue;
+            }
+
+            // locate the next semicolon in the text and copy the text from
+            // our current position up to that semicolon into the result
+            int p;
+            p = description.indexOf(';', start);
+            if (p == -1) {
+                // or if we don't find a semicolon, just copy the rest of
+                // the string into the result
+                result.append(description.substring(start));
+                start = -1;
+            }
+            else if (p < description.length()) {
+                result.append(description.substring(start, p + 1));
+                start = p + 1;
+            }
+
+            // when we get here, we've seeked off the end of the sring, and
+            // we terminate the loop (we continue until *start* is -1 rather
+            // than until *p* is -1, because otherwise we'd miss the last
+            // rule in the description)
+            else {
+                start = -1;
+            }
+        }
+        return result;
+    }
+
+//    /**
+//     * This function is called ONLY DURING CONSTRUCTION to fill in the
+//     * defaultRuleSet variable once we've set up all the rule sets.
+//     * The default rule set is the last public rule set in the description.
+//     * (It's the last rather than the first so that a caller can append
+//     * text to the end of an existing formatter description to change its
+//     * behavior.)
+//     */
+//    private void initDefaultRuleSet() {
+//        // seek backward from the end of the list until we reach a rule set
+//        // whose name DOESN'T begin with %%.  That's the default rule set
+//        for (int i = ruleSets.length - 1; i >= 0; --i) {
+//            if (!ruleSets[i].getName().startsWith("%%")) {
+//                defaultRuleSet = ruleSets[i];
+//                return;
+//            }
+//        }
+//        defaultRuleSet = ruleSets[ruleSets.length - 1];
+//    }
+
+    //-----------------------------------------------------------------------
+    // formatting implementation
+    //-----------------------------------------------------------------------
+
+    /**
+     * Bottleneck through which all the public format() methods
+     * that take a double pass. By the time we get here, we know
+     * which rule set we're using to do the formatting.
+     * @param number The number to format
+     * @param ruleSet The rule set to use to format the number
+     * @return The text that resulted from formatting the number
+     */
+    private String format(double number, NFRuleSet ruleSet) {
+        // all API format() routines that take a double vector through
+        // here.  Create an empty string buffer where the result will
+        // be built, and pass it to the rule set (along with an insertion
+        // position of 0 and the number being formatted) to the rule set
+        // for formatting
+        StringBuffer result = new StringBuffer();
+        ruleSet.format(number, result, 0);
+        postProcess(result, ruleSet);
+        return result.toString();
+    }
+
+    /**
+     * Bottleneck through which all the public format() methods
+     * that take a long pass. By the time we get here, we know
+     * which rule set we're using to do the formatting.
+     * @param number The number to format
+     * @param ruleSet The rule set to use to format the number
+     * @return The text that resulted from formatting the number
+     */
+    private String format(long number, NFRuleSet ruleSet) {
+        // all API format() routines that take a double vector through
+        // here.  We have these two identical functions-- one taking a
+        // double and one taking a long-- the couple digits of precision
+        // that long has but double doesn't (both types are 8 bytes long,
+        // but double has to borrow some of the mantissa bits to hold
+        // the exponent).
+        // Create an empty string buffer where the result will
+        // be built, and pass it to the rule set (along with an insertion
+        // position of 0 and the number being formatted) to the rule set
+        // for formatting
+        StringBuffer result = new StringBuffer();
+        ruleSet.format(number, result, 0);
+        postProcess(result, ruleSet);
+        return result.toString();
+    }
+
+    /**
+     * Post-process the rules if we have a post-processor.
+     */
+    private void postProcess(StringBuffer result, NFRuleSet ruleSet) {
+        if (postProcessRules != null) {
+            if (postProcessor == null) {
+                int ix = postProcessRules.indexOf(";");
+                if (ix == -1) {
+                    ix = postProcessRules.length();
+                }
+                String ppClassName = postProcessRules.substring(0, ix).trim();
+                try {
+                    Class cls = Class.forName(ppClassName);
+                    postProcessor = (RBNFPostProcessor)cls.newInstance();
+                    postProcessor.init(this, postProcessRules);
+                }
+                catch (Exception e) {
+                    // if debug, print it out
+                    if (DEBUG) System.out.println("could not locate " + ppClassName + ", error " +
+                                       e.getClass().getName() + ", " + e.getMessage());
+                    postProcessor = null;
+                    postProcessRules = null; // don't try again
+                    return;
+                }
+            }
+
+            postProcessor.process(result, ruleSet);
+        }
+    }
+
+    /**
+     * Returns the named rule set.  Throws an IllegalArgumentException
+     * if this formatter doesn't have a rule set with that name.
+     * @param name The name of the desired rule set
+     * @return The rule set with that name
+     */
+    NFRuleSet findRuleSet(String name) throws IllegalArgumentException {
+        for (int i = 0; i < ruleSets.length; i++) {
+            if (ruleSets[i].getName().equals(name)) {
+                return ruleSets[i];
+            }
+        }
+        throw new IllegalArgumentException("No rule set named " + name);
+    }
+}
diff --git a/src/com/ibm/icu/text/RuleBasedTransliterator.java b/src/com/ibm/icu/text/RuleBasedTransliterator.java
new file mode 100644
index 0000000..f04b583
--- /dev/null
+++ b/src/com/ibm/icu/text/RuleBasedTransliterator.java
@@ -0,0 +1,470 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.Hashtable;
+
+
+/**
+ * <code>RuleBasedTransliterator</code> is a transliterator
+ * that reads a set of rules in order to determine how to perform
+ * translations. Rule sets are stored in resource bundles indexed by
+ * name. Rules within a rule set are separated by semicolons (';').
+ * To include a literal semicolon, prefix it with a backslash ('\').
+ * Whitespace, as defined by <code>UCharacterProperty.isRuleWhiteSpace()</code>,
+ * is ignored. If the first non-blank character on a line is '#',
+ * the entire line is ignored as a comment. </p>
+ *
+ * <p>Each set of rules consists of two groups, one forward, and one
+ * reverse. This is a convention that is not enforced; rules for one
+ * direction may be omitted, with the result that translations in
+ * that direction will not modify the source text. In addition,
+ * bidirectional forward-reverse rules may be specified for
+ * symmetrical transformations.</p>
+ *
+ * <p><b>Rule syntax</b> </p>
+ *
+ * <p>Rule statements take one of the following forms: </p>
+ *
+ * <dl>
+ *     <dt><code>$alefmadda=\u0622;</code></dt>
+ *     <dd><strong>Variable definition.</strong> The name on the
+ *         left is assigned the text on the right. In this example,
+ *         after this statement, instances of the left hand name,
+ *         &quot;<code>$alefmadda</code>&quot;, will be replaced by
+ *         the Unicode character U+0622. Variable names must begin
+ *         with a letter and consist only of letters, digits, and
+ *         underscores. Case is significant. Duplicate names cause
+ *         an exception to be thrown, that is, variables cannot be
+ *         redefined. The right hand side may contain well-formed
+ *         text of any length, including no text at all (&quot;<code>$empty=;</code>&quot;).
+ *         The right hand side may contain embedded <code>UnicodeSet</code>
+ *         patterns, for example, &quot;<code>$softvowel=[eiyEIY]</code>&quot;.</dd>
+ *     <dd>&nbsp;</dd>
+ *     <dt><code>ai&gt;$alefmadda;</code></dt>
+ *     <dd><strong>Forward translation rule.</strong> This rule
+ *         states that the string on the left will be changed to the
+ *         string on the right when performing forward
+ *         transliteration.</dd>
+ *     <dt>&nbsp;</dt>
+ *     <dt><code>ai&lt;$alefmadda;</code></dt>
+ *     <dd><strong>Reverse translation rule.</strong> This rule
+ *         states that the string on the right will be changed to
+ *         the string on the left when performing reverse
+ *         transliteration.</dd>
+ * </dl>
+ *
+ * <dl>
+ *     <dt><code>ai&lt;&gt;$alefmadda;</code></dt>
+ *     <dd><strong>Bidirectional translation rule.</strong> This
+ *         rule states that the string on the right will be changed
+ *         to the string on the left when performing forward
+ *         transliteration, and vice versa when performing reverse
+ *         transliteration.</dd>
+ * </dl>
+ *
+ * <p>Translation rules consist of a <em>match pattern</em> and an <em>output
+ * string</em>. The match pattern consists of literal characters,
+ * optionally preceded by context, and optionally followed by
+ * context. Context characters, like literal pattern characters,
+ * must be matched in the text being transliterated. However, unlike
+ * literal pattern characters, they are not replaced by the output
+ * text. For example, the pattern &quot;<code>abc{def}</code>&quot;
+ * indicates the characters &quot;<code>def</code>&quot; must be
+ * preceded by &quot;<code>abc</code>&quot; for a successful match.
+ * If there is a successful match, &quot;<code>def</code>&quot; will
+ * be replaced, but not &quot;<code>abc</code>&quot;. The final '<code>}</code>'
+ * is optional, so &quot;<code>abc{def</code>&quot; is equivalent to
+ * &quot;<code>abc{def}</code>&quot;. Another example is &quot;<code>{123}456</code>&quot;
+ * (or &quot;<code>123}456</code>&quot;) in which the literal
+ * pattern &quot;<code>123</code>&quot; must be followed by &quot;<code>456</code>&quot;.
+ * </p>
+ *
+ * <p>The output string of a forward or reverse rule consists of
+ * characters to replace the literal pattern characters. If the
+ * output string contains the character '<code>|</code>', this is
+ * taken to indicate the location of the <em>cursor</em> after
+ * replacement. The cursor is the point in the text at which the
+ * next replacement, if any, will be applied. The cursor is usually
+ * placed within the replacement text; however, it can actually be
+ * placed into the precending or following context by using the
+ * special character '<code>@</code>'. Examples:</p>
+ *
+ * <blockquote>
+ *     <p><code>a {foo} z &gt; | @ bar; # foo -&gt; bar, move cursor
+ *     before a<br>
+ *     {foo} xyz &gt; bar @@|; #&nbsp;foo -&gt; bar, cursor between
+ *     y and z</code></p>
+ * </blockquote>
+ *
+ * <p><b>UnicodeSet</b></p>
+ *
+ * <p><code>UnicodeSet</code> patterns may appear anywhere that
+ * makes sense. They may appear in variable definitions.
+ * Contrariwise, <code>UnicodeSet</code> patterns may themselves
+ * contain variable references, such as &quot;<code>$a=[a-z];$not_a=[^$a]</code>&quot;,
+ * or &quot;<code>$range=a-z;$ll=[$range]</code>&quot;.</p>
+ *
+ * <p><code>UnicodeSet</code> patterns may also be embedded directly
+ * into rule strings. Thus, the following two rules are equivalent:</p>
+ *
+ * <blockquote>
+ *     <p><code>$vowel=[aeiou]; $vowel&gt;'*'; # One way to do this<br>
+ *     [aeiou]&gt;'*';
+ *     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#
+ *     Another way</code></p>
+ * </blockquote>
+ *
+ * <p>See {@link UnicodeSet} for more documentation and examples.</p>
+ *
+ * <p><b>Segments</b></p>
+ *
+ * <p>Segments of the input string can be matched and copied to the
+ * output string. This makes certain sets of rules simpler and more
+ * general, and makes reordering possible. For example:</p>
+ *
+ * <blockquote>
+ *     <p><code>([a-z]) &gt; $1 $1;
+ *     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#
+ *     double lowercase letters<br>
+ *     ([:Lu:]) ([:Ll:]) &gt; $2 $1; # reverse order of Lu-Ll pairs</code></p>
+ * </blockquote>
+ *
+ * <p>The segment of the input string to be copied is delimited by
+ * &quot;<code>(</code>&quot; and &quot;<code>)</code>&quot;. Up to
+ * nine segments may be defined. Segments may not overlap. In the
+ * output string, &quot;<code>$1</code>&quot; through &quot;<code>$9</code>&quot;
+ * represent the input string segments, in left-to-right order of
+ * definition.</p>
+ *
+ * <p><b>Anchors</b></p>
+ *
+ * <p>Patterns can be anchored to the beginning or the end of the text. This is done with the
+ * special characters '<code>^</code>' and '<code>$</code>'. For example:</p>
+ *
+ * <blockquote>
+ *   <p><code>^ a&nbsp;&nbsp; &gt; 'BEG_A'; &nbsp;&nbsp;# match 'a' at start of text<br>
+ *   &nbsp; a&nbsp;&nbsp; &gt; 'A';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # match other instances
+ *   of 'a'<br>
+ *   &nbsp; z $ &gt; 'END_Z'; &nbsp;&nbsp;# match 'z' at end of text<br>
+ *   &nbsp; z&nbsp;&nbsp; &gt; 'Z';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # match other instances
+ *   of 'z'</code></p>
+ * </blockquote>
+ *
+ * <p>It is also possible to match the beginning or the end of the text using a <code>UnicodeSet</code>.
+ * This is done by including a virtual anchor character '<code>$</code>' at the end of the
+ * set pattern. Although this is usually the match chafacter for the end anchor, the set will
+ * match either the beginning or the end of the text, depending on its placement. For
+ * example:</p>
+ *
+ * <blockquote>
+ *   <p><code>$x = [a-z$]; &nbsp;&nbsp;# match 'a' through 'z' OR anchor<br>
+ *   $x 1&nbsp;&nbsp;&nbsp; &gt; 2;&nbsp;&nbsp; # match '1' after a-z or at the start<br>
+ *   &nbsp;&nbsp; 3 $x &gt; 4; &nbsp;&nbsp;# match '3' before a-z or at the end</code></p>
+ * </blockquote>
+ *
+ * <p><b>Example</b> </p>
+ *
+ * <p>The following example rules illustrate many of the features of
+ * the rule language. </p>
+ *
+ * <table border="0" cellpadding="4">
+ *     <tr>
+ *         <td valign="top">Rule 1.</td>
+ *         <td valign="top" nowrap><code>abc{def}&gt;x|y</code></td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top">Rule 2.</td>
+ *         <td valign="top" nowrap><code>xyz&gt;r</code></td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top">Rule 3.</td>
+ *         <td valign="top" nowrap><code>yz&gt;q</code></td>
+ *     </tr>
+ * </table>
+ *
+ * <p>Applying these rules to the string &quot;<code>adefabcdefz</code>&quot;
+ * yields the following results: </p>
+ *
+ * <table border="0" cellpadding="4">
+ *     <tr>
+ *         <td valign="top" nowrap><code>|adefabcdefz</code></td>
+ *         <td valign="top">Initial state, no rules match. Advance
+ *         cursor.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>a|defabcdefz</code></td>
+ *         <td valign="top">Still no match. Rule 1 does not match
+ *         because the preceding context is not present.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>ad|efabcdefz</code></td>
+ *         <td valign="top">Still no match. Keep advancing until
+ *         there is a match...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>ade|fabcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adef|abcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefa|bcdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefab|cdefz</code></td>
+ *         <td valign="top">...</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabc|defz</code></td>
+ *         <td valign="top">Rule 1 matches; replace &quot;<code>def</code>&quot;
+ *         with &quot;<code>xy</code>&quot; and back up the cursor
+ *         to before the '<code>y</code>'.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabcx|yz</code></td>
+ *         <td valign="top">Although &quot;<code>xyz</code>&quot; is
+ *         present, rule 2 does not match because the cursor is
+ *         before the '<code>y</code>', not before the '<code>x</code>'.
+ *         Rule 3 does match. Replace &quot;<code>yz</code>&quot;
+ *         with &quot;<code>q</code>&quot;.</td>
+ *     </tr>
+ *     <tr>
+ *         <td valign="top" nowrap><code>adefabcxq|</code></td>
+ *         <td valign="top">The cursor is at the end;
+ *         transliteration is complete.</td>
+ *     </tr>
+ * </table>
+ *
+ * <p>The order of rules is significant. If multiple rules may match
+ * at some point, the first matching rule is applied. </p>
+ *
+ * <p>Forward and reverse rules may have an empty output string.
+ * Otherwise, an empty left or right hand side of any statement is a
+ * syntax error. </p>
+ *
+ * <p>Single quotes are used to quote any character other than a
+ * digit or letter. To specify a single quote itself, inside or
+ * outside of quotes, use two single quotes in a row. For example,
+ * the rule &quot;<code>'&gt;'&gt;o''clock</code>&quot; changes the
+ * string &quot;<code>&gt;</code>&quot; to the string &quot;<code>o'clock</code>&quot;.
+ * </p>
+ *
+ * <p><b>Notes</b> </p>
+ *
+ * <p>While a RuleBasedTransliterator is being built, it checks that
+ * the rules are added in proper order. For example, if the rule
+ * &quot;a&gt;x&quot; is followed by the rule &quot;ab&gt;y&quot;,
+ * then the second rule will throw an exception. The reason is that
+ * the second rule can never be triggered, since the first rule
+ * always matches anything it matches. In other words, the first
+ * rule <em>masks</em> the second rule. </p>
+ *
+ * <p>Copyright (c) IBM Corporation 1999-2000. All rights reserved.</p>
+ *
+ * @author Alan Liu
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public class RuleBasedTransliterator extends Transliterator {
+
+    private Data data;
+
+    /**
+     * Constructs a new transliterator from the given rules.
+     * @param rules rules, separated by ';'
+     * @param direction either FORWARD or REVERSE.
+     * @exception IllegalArgumentException if rules are malformed
+     * or direction is invalid.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    /*public RuleBasedTransliterator(String ID, String rules, int direction,
+                                   UnicodeFilter filter) {
+        super(ID, filter);
+        if (direction != FORWARD && direction != REVERSE) {
+            throw new IllegalArgumentException("Invalid direction");
+        }
+
+        TransliteratorParser parser = new TransliteratorParser();
+        parser.parse(rules, direction);
+        if (parser.idBlockVector.size() != 0 ||
+            parser.compoundFilter != null) {
+            throw new IllegalArgumentException("::ID blocks illegal in RuleBasedTransliterator constructor");
+        }
+
+        data = (Data)parser.dataVector.get(0);
+        setMaximumContextLength(data.ruleSet.getMaximumContextLength());
+    }*/
+
+    /**
+     * Constructs a new transliterator from the given rules in the
+     * <code>FORWARD</code> direction.
+     * @param rules rules, separated by ';'
+     * @exception IllegalArgumentException if rules are malformed
+     * or direction is invalid.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    /*public RuleBasedTransliterator(String ID, String rules) {
+        this(ID, rules, FORWARD, null);
+    }*/
+
+    RuleBasedTransliterator(String ID, Data data, UnicodeFilter filter) {
+        super(ID, filter);
+        this.data = data;
+        setMaximumContextLength(data.ruleSet.getMaximumContextLength());
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected synchronized void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        /* We keep start and limit fixed the entire time,
+         * relative to the text -- limit may move numerically if text is
+         * inserted or removed.  The cursor moves from start to limit, with
+         * replacements happening under it.
+         *
+         * Example: rules 1. ab>x|y
+         *                2. yc>z
+         *
+         * |eabcd   start - no match, advance cursor
+         * e|abcd   match rule 1 - change text & adjust cursor
+         * ex|ycd   match rule 2 - change text & adjust cursor
+         * exz|d    no match, advance cursor
+         * exzd|    done
+         */
+
+        /* A rule like
+         *   a>b|a
+         * creates an infinite loop. To prevent that, we put an arbitrary
+         * limit on the number of iterations that we take, one that is
+         * high enough that any reasonable rules are ok, but low enough to
+         * prevent a server from hanging.  The limit is 16 times the
+         * number of characters n, unless n is so large that 16n exceeds a
+         * uint32_t.
+         */
+        int loopCount = 0;
+        int loopLimit = (index.limit - index.start) << 4;
+        if (loopLimit < 0) {
+            loopLimit = 0x7FFFFFFF;
+        }
+
+        while (index.start < index.limit &&
+               loopCount <= loopLimit &&
+               data.ruleSet.transliterate(text, index, incremental)) {
+            ++loopCount;
+        }
+    }
+
+
+    static class Data {
+        public Data() {
+            variableNames = new Hashtable();
+            ruleSet = new TransliterationRuleSet();
+        }
+
+        /**
+         * Rule table.  May be empty.
+         */
+        public TransliterationRuleSet ruleSet;
+
+        /**
+         * Map variable name (String) to variable (char[]).  A variable name
+         * corresponds to zero or more characters, stored in a char[] array in
+         * this hash.  One or more of these chars may also correspond to a
+         * UnicodeSet, in which case the character in the char[] in this hash is
+         * a stand-in: it is an index for a secondary lookup in
+         * data.variables.  The stand-in also represents the UnicodeSet in
+         * the stored rules.
+         */
+        Hashtable variableNames;
+
+        /**
+         * Map category variable (Character) to UnicodeMatcher or UnicodeReplacer.
+         * Variables that correspond to a set of characters are mapped
+         * from variable name to a stand-in character in data.variableNames.
+         * The stand-in then serves as a key in this hash to lookup the
+         * actual UnicodeSet object.  In addition, the stand-in is
+         * stored in the rule text to represent the set of characters.
+         * variables[i] represents character (variablesBase + i).
+         */
+        Object[] variables;
+
+        /**
+         * The character that represents variables[0].  Characters
+         * variablesBase through variablesBase +
+         * variables.length - 1 represent UnicodeSet objects.
+         */
+        char variablesBase;
+
+        /**
+         * Return the UnicodeMatcher represented by the given character, or
+         * null if none.
+         */
+        public UnicodeMatcher lookupMatcher(int standIn) {
+            int i = standIn - variablesBase;
+            return (i >= 0 && i < variables.length)
+                ? (UnicodeMatcher) variables[i] : null;
+        }
+
+        /**
+         * Return the UnicodeReplacer represented by the given character, or
+         * null if none.
+         */
+        public UnicodeReplacer lookupReplacer(int standIn) {
+            int i = standIn - variablesBase;
+            return (i >= 0 && i < variables.length)
+                ? (UnicodeReplacer) variables[i] : null;
+        }
+    }
+
+
+    /**
+     * Return a representation of this transliterator as source rules.
+     * These rules will produce an equivalent transliterator if used
+     * to construct a new transliterator.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     * @return rules string
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public String toRules(boolean escapeUnprintable) {
+        return data.ruleSet.toRules(escapeUnprintable);
+    }
+
+    /**
+     * Return the set of all characters that may be modified by this
+     * Transliterator, ignoring the effect of our filter.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        return data.ruleSet.getSourceTargetSet(false);
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public UnicodeSet getTargetSet() {
+        return data.ruleSet.getSourceTargetSet(true);
+    }
+}
+
+
diff --git a/src/com/ibm/icu/text/SCSU.java b/src/com/ibm/icu/text/SCSU.java
new file mode 100644
index 0000000..b12b926
--- /dev/null
+++ b/src/com/ibm/icu/text/SCSU.java
@@ -0,0 +1,184 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * An interface defining  constants for the Standard Compression Scheme
+ * for Unicode (SCSU) as outlined in <A
+ * HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+ * Report #6</A>.
+ *
+ * @author Stephen F. Booth
+ * @version 1.1 05 Aug 99
+ * @version 1.0 26 Jul 99
+ */
+interface SCSU
+{
+    //==========================
+    // Generic window shift
+    //==========================
+    final static int COMPRESSIONOFFSET           = 0x80;
+
+    //==========================
+    // Number of windows
+    //==========================
+    final static int NUMWINDOWS                  = 8;
+    final static int NUMSTATICWINDOWS            = 8;
+
+    //==========================
+    // Indicates a window index is invalid
+    //==========================
+    final static int INVALIDWINDOW               = -1;
+
+    //==========================
+    // Indicates a character doesn't exist in input (past end of buffer)
+    //==========================
+    final static int INVALIDCHAR                 = -1;
+
+    //==========================
+    // Compression modes
+    //==========================
+    final static int SINGLEBYTEMODE              = 0;
+    final static int UNICODEMODE                 = 1;
+
+    //==========================
+    // Maximum value for a window's index
+    //==========================
+    final static int MAXINDEX                    = 0xFF;
+
+    //==========================
+    // Reserved index value (characters belongs to first block)
+    //==========================
+    final static int RESERVEDINDEX               = 0x00;
+
+    //==========================
+    // Indices for scripts which cross a half-block boundary
+    //==========================
+    final static int LATININDEX                  = 0xF9;
+    final static int IPAEXTENSIONINDEX           = 0xFA;
+    final static int GREEKINDEX                  = 0xFB;
+    final static int ARMENIANINDEX               = 0xFC;
+    final static int HIRAGANAINDEX               = 0xFD;
+    final static int KATAKANAINDEX               = 0xFE;
+    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;
+
+    //==========================
+    // Single-byte mode tags
+    //==========================
+    final static int SDEFINEX                    = 0x0B;
+    final static int SRESERVED                   = 0x0C;  // reserved value
+    final static int SQUOTEU                     = 0x0E;
+    final static int SCHANGEU                    = 0x0F;
+
+    final static int SQUOTE0                     = 0x01;
+    final static int SQUOTE1                     = 0x02;
+    final static int SQUOTE2                     = 0x03;
+    final static int SQUOTE3                     = 0x04;
+    final static int SQUOTE4                     = 0x05;
+    final static int SQUOTE5                     = 0x06;
+    final static int SQUOTE6                     = 0x07;
+    final static int SQUOTE7                     = 0x08;
+
+    final static int SCHANGE0                    = 0x10;
+    final static int SCHANGE1                    = 0x11;
+    final static int SCHANGE2                    = 0x12;
+    final static int SCHANGE3                    = 0x13;
+    final static int SCHANGE4                    = 0x14;
+    final static int SCHANGE5                    = 0x15;
+    final static int SCHANGE6                    = 0x16;
+    final static int SCHANGE7                    = 0x17;
+
+    final static int SDEFINE0                    = 0x18;
+    final static int SDEFINE1                    = 0x19;
+    final static int SDEFINE2                    = 0x1A;
+    final static int SDEFINE3                    = 0x1B;
+    final static int SDEFINE4                    = 0x1C;
+    final static int SDEFINE5                    = 0x1D;
+    final static int SDEFINE6                    = 0x1E;
+    final static int SDEFINE7                    = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    final static int UCHANGE0                    = 0xE0;
+    final static int UCHANGE1                    = 0xE1;
+    final static int UCHANGE2                    = 0xE2;
+    final static int UCHANGE3                    = 0xE3;
+    final static int UCHANGE4                    = 0xE4;
+    final static int UCHANGE5                    = 0xE5;
+    final static int UCHANGE6                    = 0xE6;
+    final static int UCHANGE7                    = 0xE7;
+
+    final static int UDEFINE0                    = 0xE8;
+    final static int UDEFINE1                    = 0xE9;
+    final static int UDEFINE2                    = 0xEA;
+    final static int UDEFINE3                    = 0xEB;
+    final static int UDEFINE4                    = 0xEC;
+    final static int UDEFINE5                    = 0xED;
+    final static int UDEFINE6                    = 0xEE;
+    final static int UDEFINE7                    = 0xEF;
+
+    final static int UQUOTEU                     = 0xF0;
+    final static int UDEFINEX                    = 0xF1;
+    final static int URESERVED                   = 0xF2;  // reserved value
+
+
+    //==========================
+    // Class variables
+    //==========================
+
+    /** For window offset mapping */
+    final static int [] sOffsetTable = { 
+        // table generated by CompressionTableGenerator
+        0x0, 0x80, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
+    0x480, 0x500, 0x580, 0x600, 0x680, 0x700, 0x780, 0x800, 0x880,
+    0x900, 0x980, 0xa00, 0xa80, 0xb00, 0xb80, 0xc00, 0xc80, 0xd00,
+    0xd80, 0xe00, 0xe80, 0xf00, 0xf80, 0x1000, 0x1080, 0x1100,
+    0x1180, 0x1200, 0x1280, 0x1300, 0x1380, 0x1400, 0x1480,
+    0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780, 0x1800,
+    0x1880, 0x1900, 0x1980, 0x1a00, 0x1a80, 0x1b00, 0x1b80,
+    0x1c00, 0x1c80, 0x1d00, 0x1d80, 0x1e00, 0x1e80, 0x1f00,
+    0x1f80, 0x2000, 0x2080, 0x2100, 0x2180, 0x2200, 0x2280,
+    0x2300, 0x2380, 0x2400, 0x2480, 0x2500, 0x2580, 0x2600,
+    0x2680, 0x2700, 0x2780, 0x2800, 0x2880, 0x2900, 0x2980,
+    0x2a00, 0x2a80, 0x2b00, 0x2b80, 0x2c00, 0x2c80, 0x2d00,
+    0x2d80, 0x2e00, 0x2e80, 0x2f00, 0x2f80, 0x3000, 0x3080,
+    0x3100, 0x3180, 0x3200, 0x3280, 0x3300, 0x3380, 0xe000,
+    0xe080, 0xe100, 0xe180, 0xe200, 0xe280, 0xe300, 0xe380,
+    0xe400, 0xe480, 0xe500, 0xe580, 0xe600, 0xe680, 0xe700,
+    0xe780, 0xe800, 0xe880, 0xe900, 0xe980, 0xea00, 0xea80,
+    0xeb00, 0xeb80, 0xec00, 0xec80, 0xed00, 0xed80, 0xee00,
+    0xee80, 0xef00, 0xef80, 0xf000, 0xf080, 0xf100, 0xf180,
+    0xf200, 0xf280, 0xf300, 0xf380, 0xf400, 0xf480, 0xf500,
+    0xf580, 0xf600, 0xf680, 0xf700, 0xf780, 0xf800, 0xf880,
+    0xf900, 0xf980, 0xfa00, 0xfa80, 0xfb00, 0xfb80, 0xfc00,
+    0xfc80, 0xfd00, 0xfd80, 0xfe00, 0xfe80, 0xff00, 0xff80, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x250, 0x370,
+    0x530, 0x3040, 0x30a0, 0xff60  
+    };
+
+    /** Static compression window offsets */
+    final static int [] sOffsets = {
+        0x0000,  // for quoting single-byte mode tags
+        0x0080,  // Latin-1 Supplement
+        0x0100,  // Latin Extended-A
+        0x0300,  // Combining Diacritical Marks
+        0x2000,  // General Punctuation
+        0x2080,  // Curency Symbols
+        0x2100,  // Letterlike Symbols and Number Forms
+        0x3000   // CJK Symbols and Punctuation
+    };
+
+}
+
diff --git a/src/com/ibm/icu/text/SearchIterator.java b/src/com/ibm/icu/text/SearchIterator.java
new file mode 100644
index 0000000..14de531
--- /dev/null
+++ b/src/com/ibm/icu/text/SearchIterator.java
@@ -0,0 +1,788 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+
+/**
+ * <p>SearchIterator is an abstract base class that defines a protocol
+ * for text searching. Subclasses provide concrete implementations of
+ * various search algorithms.  A concrete subclass, StringSearch, is
+ * provided that implements language-sensitive pattern matching based
+ * on the comparison rules defined in a RuleBasedCollator
+ * object. Instances of SearchIterator maintain a current position and
+ * scan over the target text, returning the indices where a match is
+ * found and the length of each match. Generally, the sequence of forward 
+ * matches will be equivalent to the sequence of backward matches.One
+ * case where this statement may not hold is when non-overlapping mode 
+ * is set on and there are continuous repetitive patterns in the text. 
+ * Consider the case searching for pattern "aba" in the text 
+ * "ababababa", setting overlapping mode off will produce forward matches
+ * at offsets 0, 4. However when a backwards search is done, the
+ * results will be at offsets 6 and 2.</p>
+ * 
+ * <p>If matches searched for have boundary restrictions. BreakIterators 
+ * can be used to define the valid boundaries of such a match. Once a 
+ * BreakIterator is set, potential matches will be tested against the
+ * BreakIterator to determine if the boundaries are valid and that all
+ * characters in the potential match are equivalent to the pattern 
+ * searched for. For example, looking for the pattern "fox" in the text
+ * "foxy fox" will produce match results at offset 0 and 5 with length 3
+ * if no BreakIterators were set. However if a WordBreakIterator is set,
+ * the only match that would be found will be at the offset 5. Since,
+ * the SearchIterator guarantees that if a BreakIterator is set, all its
+ * matches will match the given pattern exactly, a potential match that 
+ * passes the BreakIterator might still not produce a valid match. For 
+ * instance the pattern "e" will not be found in the string 
+ * "&#92;u00e9" (latin small letter e with acute) if a 
+ * CharacterBreakIterator is used. Even though "e" is
+ * a part of the character "&#92;u00e9" and the potential match at
+ * offset 0 length 1 passes the CharacterBreakIterator test, "&#92;u00e9"
+ * is not equivalent to "e", hence the SearchIterator rejects the potential
+ * match. By default, the SearchIterator
+ * does not impose any boundary restriction on the matches, it will 
+ * return all results that match the pattern. Illustrating with the 
+ * above example, "e" will
+ * be found in the string "&#92;u00e9" if no BreakIterator is
+ * specified.</p>
+ * 
+ * <p>SearchIterator also provides a means to handle overlapping
+ * matches via the API setOverlapping(boolean). For example, if
+ * overlapping mode is set, searching for the pattern "abab" in the
+ * text "ababab" will match at positions 0 and 2, whereas if
+ * overlapping is not set, SearchIterator will only match at position
+ * 0. By default, overlapping mode is not set.</p>
+ * 
+ * <p>The APIs in SearchIterator are similar to that of other text
+ * iteration classes such as BreakIterator. Using this class, it is
+ * easy to scan through text looking for all occurances of a
+ * match.</p>
+ * <p>
+ * Example of use:<br>
+ * <pre>
+ * String target = "The quick brown fox jumped over the lazy fox";
+ * String pattern = "fox";
+ * SearchIterator iter = new StringSearch(pattern, target);
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 16 and 41 with length 3
+ *     System.out.println("Found match at " + pos + ", length is " 
+ *                        + iter.getMatchLength());
+ * }
+ * target = "ababababa";
+ * pattern = "aba";
+ * iter.setTarget(new StringCharacterIterator(pattern));
+ * iter.setOverlapping(false);
+ * System.out.println("Overlapping mode set to false");
+ * System.out.println("Forward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 0 and 4 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Backward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.last(); pos != SearchIterator.DONE; 
+ *                                                    pos = iter.previous()) {
+ *     // println matches at offset 6 and 2 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Overlapping mode set to true");
+ * System.out.println("Index set to 2");
+ * iter.setIndex(2);
+ * iter.setOverlapping(true);
+ * System.out.println("Forward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; 
+ *                                                       pos = iter.next()) {
+ *     // println matches at offset 2, 4 and 6 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * System.out.println("Index set to 2");
+ * iter.setIndex(2);
+ * System.out.println("Backward matches of pattern " + pattern + " in text "
+ *                    + text + ": ");
+ * for (int pos = iter.last(); pos != SearchIterator.DONE; 
+ *                                                    pos = iter.previous()) {
+ *     // println matches at offset 0 with length 3
+ *     System.out.println("offset " + pos + ", length " 
+ *                        + iter.getMatchLength());
+ * }
+ * </pre>
+ * </p>
+ * @author Laura Werner, synwee
+ * @stable ICU 2.0
+ * @see BreakIterator
+ */
+public abstract class SearchIterator 
+{
+    
+    // public data members -------------------------------------------------
+    
+    /**
+     * DONE is returned by previous() and next() after all valid matches have 
+     * been returned, and by first() and last() if there are no matches at all.
+     * @see #previous
+     * @see #next
+     * @stable ICU 2.0
+     */
+    public static final int DONE = -1;
+    
+    // public methods -----------------------------------------------------
+    
+    // public setters -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Sets the position in the target text at which the next search will start.
+     * This method clears any previous match.
+     * </p>
+     * @param position position from which to start the next search
+     * @exception IndexOutOfBoundsException thrown if argument position is out
+     *            of the target text range.
+     * @see #getIndex
+     * @stable ICU 2.8
+     */
+    public void setIndex(int position) {
+        if (position < targetText.getBeginIndex() 
+            || position > targetText.getEndIndex()) {
+            throw new IndexOutOfBoundsException(
+                "setIndex(int) expected position to be between " +
+                targetText.getBeginIndex() + " and " + targetText.getEndIndex());
+        }
+        m_setOffset_ = position;
+        m_reset_ = false;
+        matchLength = 0;
+    }
+    
+    /**
+     * <p>
+     * Determines whether overlapping matches are returned. See the class 
+     * documentation for more information about overlapping matches.
+     * </p>
+     * <p>
+     * The default setting of this property is false
+     * </p>
+     * @param allowOverlap flag indicator if overlapping matches are allowed
+     * @see #isOverlapping
+     * @stable ICU 2.8
+     */
+    public void setOverlapping(boolean allowOverlap)
+    {
+        m_isOverlap_ = allowOverlap;
+    }
+    
+    /**
+     * Set the BreakIterator that is used to restrict the points at which 
+     * matches are detected.
+     * Using <tt>null</tt> as the parameter is legal; it means that break 
+     * detection should not be attempted.
+     * See class documentation for more information.
+     * @param breakiter A BreakIterator that will be used to restrict the 
+     *                     points at which matches are detected.
+     * @see #getBreakIterator
+     * @see BreakIterator
+     * @stable ICU 2.0
+     */
+    public void setBreakIterator(BreakIterator breakiter) 
+    {
+        breakIterator = breakiter;
+        if (breakIterator != null) {
+            breakIterator.setText(targetText);
+        }
+    }
+    
+    /**
+     * Set the target text to be searched. Text iteration will then begin at 
+      * the start of the text string. This method is useful if you want to 
+     * reuse an iterator to search within a different body of text.
+     * @param text new text iterator to look for match, 
+     * @exception IllegalArgumentException thrown when text is null or has
+     *               0 length
+     * @see #getTarget
+     * @stable ICU 2.4
+     */
+    public void setTarget(CharacterIterator text)
+    {
+        if (text == null || text.getEndIndex() == text.getIndex()) {
+            throw new IllegalArgumentException("Illegal null or empty text");
+        }
+        
+        targetText = text;
+        targetText.setIndex(targetText.getBeginIndex());
+        matchLength = 0;
+        m_reset_ = true;
+        m_isForwardSearching_ = true;
+        if (breakIterator != null) {
+            breakIterator.setText(targetText);
+        }
+    }
+
+    // public getters ----------------------------------------------------
+    
+    /**
+     * <p>
+     * Returns the index of the most recent match in the target text.
+     * This call returns a valid result only after a successful call to 
+     * {@link #first}, {@link #next}, {@link #previous}, or {@link #last}.
+     * Just after construction, or after a searching method returns 
+     * <tt>DONE</tt>, this method will return <tt>DONE</tt>.
+     * </p>
+     * <p>
+     * Use <tt>getMatchLength</tt> to get the length of the matched text.
+     * <tt>getMatchedText</tt> will return the subtext in the searched 
+     * target text from index getMatchStart() with length getMatchLength(). 
+     * </p>
+     * @return index to a substring within the text string that is being 
+     *         searched.
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.8
+     */
+    public int getMatchStart()
+    {
+        return m_lastMatchStart_;
+    }
+
+    /**
+     * Return the index in the target text at which the iterator is currently
+     * positioned. 
+     * If the iteration has gone past the end of the target text, or past 
+     * the beginning for a backwards search, {@link #DONE} is returned.
+     * @return index in the target text at which the iterator is currently 
+     *         positioned.
+     * @stable ICU 2.8
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     */
+    public abstract int getIndex();
+    
+    /**
+     * <p>
+     * Returns the length of the most recent match in the target text. 
+     * This call returns a valid result only after a successful
+     * call to {@link #first}, {@link #next}, {@link #previous}, or 
+     * {@link #last}.
+     * Just after construction, or after a searching method returns
+     * <tt>DONE</tt>, this method will return 0. See getMatchStart() for 
+     * more details.
+     * </p>
+     * @return The length of the most recent match in the target text, or 0 if 
+     *         there is no match.
+     * @see #getMatchStart
+     * @see #getMatchedText
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public int getMatchLength() 
+    {
+        return matchLength;
+    }
+    
+    /**
+     * Returns the BreakIterator that is used to restrict the indexes at which 
+     * matches are detected. This will be the same object that was passed to 
+     * the constructor or to <code>setBreakIterator</code>.
+     * If the BreakIterator has not been set, <tt>null</tt> will be returned.
+     * See setBreakIterator for more information.
+     * @return the BreakIterator set to restrict logic matches
+     * @see #setBreakIterator
+     * @see BreakIterator
+     * @stable ICU 2.0
+     */
+    public BreakIterator getBreakIterator() 
+    {
+        return breakIterator;
+    }
+    
+    /**
+     * Return the target text that is being searched.
+     * @return target text being searched.
+     * @see #setTarget
+     * @stable ICU 2.0
+     */
+    public CharacterIterator getTarget() 
+    {
+        return targetText;
+    }
+    
+    /**
+     * Returns the text that was matched by the most recent call to 
+     * {@link #first}, {@link #next}, {@link #previous}, or {@link #last}. 
+     * If the iterator is not pointing at a valid match, for instance just 
+     * after construction or after <tt>DONE</tt> has been returned, an empty 
+     * String will be returned. See getMatchStart for more information
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #first
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @return the substring in the target text of the most recent match 
+     * @stable ICU 2.0
+     */
+    public String getMatchedText() 
+    {
+        if (matchLength > 0) {
+            int limit = m_lastMatchStart_ + matchLength;
+            StringBuffer result = new StringBuffer(matchLength);
+            result.append(targetText.current());
+            targetText.next();
+            while (targetText.getIndex() < limit) {
+                result.append(targetText.current());
+                targetText.next();
+            }
+            targetText.setIndex(m_lastMatchStart_);
+            return result.toString();
+        }
+        return null;
+    }
+
+    // miscellaneous public methods -----------------------------------------
+        
+    /**
+     * Search <b>forwards</b> in the target text for the next valid match,
+     * starting the search from the current iterator position. The iterator is 
+     * adjusted so that its current index, as returned by {@link #getIndex},
+     * is the starting position of the match if one was found. If a match is 
+     * found, the index of the match is returned, otherwise <tt>DONE</tt> is
+     * returned.  If overlapping mode is set, the beginning of the found match
+     * can be before the end of the current match, if any.
+     * @return The starting index of the next forward match after the current 
+     *         iterator position, or 
+     *         <tt>DONE</tt> if there are no more matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #previous
+     * @see #first
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public int next()
+    {
+        int start = targetText.getIndex();
+        if (m_setOffset_ != DONE) {
+            start = m_setOffset_;    
+            m_setOffset_ = DONE;    
+        }
+        if (m_isForwardSearching_) {
+            if (!m_reset_ && 
+                start + matchLength >= targetText.getEndIndex()) {
+                // not enough characters to match
+                matchLength = 0;
+                targetText.setIndex(targetText.getEndIndex());
+                m_lastMatchStart_ = DONE;
+                return DONE; 
+            }
+            m_reset_ = false;
+        }
+        else {
+            // switching direction. 
+            // if matchedIndex == USEARCH_DONE, it means that either a 
+            // setIndex has been called or that previous ran off the text
+            // string. the iterator would have been set to offset 0 if a 
+            // match is not found.
+            m_isForwardSearching_ = true;
+            if (start != DONE) {
+                // there's no need to set the collation element iterator
+                // the next call to next will set the offset.
+                return start;
+            }
+        }
+        
+        if (start == DONE) {
+            start = targetText.getBeginIndex();
+        }
+        if (matchLength > 0) {
+            // if match length is 0 we are at the start of the iteration
+            if (m_isOverlap_) {
+                start ++;
+            }
+            else {
+                start += matchLength;
+            }
+        }
+        m_lastMatchStart_ = handleNext(start);
+        return m_lastMatchStart_;
+    }
+
+    /**
+     * Search <b>backwards</b> in the target text for the next valid match,
+     * starting the search from the current iterator position. The iterator is 
+     * adjusted so that its current index, as returned by {@link #getIndex},
+     * is the starting position of the match if one was found. If a match is 
+     * found, the index is returned, otherwise <tt>DONE</tt> is returned.  If
+     * overlapping mode is set, the end of the found match can be after the
+     * beginning of the previous match, if any.
+     * @return The starting index of the next backwards match after the current 
+     *         iterator position, or 
+     *         <tt>DONE</tt> if there are no more matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #next
+     * @see #first
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public int previous()
+    {
+        int start = targetText.getIndex();
+        if (m_setOffset_ != DONE) {
+            start = m_setOffset_;    
+            m_setOffset_ = DONE;    
+        }
+        if (m_reset_) {
+            m_isForwardSearching_ = false;
+            m_reset_ = false;
+            start = targetText.getEndIndex();
+        }
+        
+        if (m_isForwardSearching_ == true) {
+            // switching direction. 
+            // if matchedIndex == USEARCH_DONE, it means that either a 
+            // setIndex has been called or that next ran off the text
+            // string. the iterator would have been set to offset textLength if 
+            // a match is not found.
+            m_isForwardSearching_ = false;
+            if (start != targetText.getEndIndex()) {
+                return start;
+            }
+        }
+        else {
+            if (start == targetText.getBeginIndex()) {
+                // not enough characters to match
+                matchLength = 0;
+                targetText.setIndex(targetText.getBeginIndex());
+                m_lastMatchStart_ = DONE;
+                return DONE; 
+            }
+        }
+
+        m_lastMatchStart_ = handlePrevious(start);
+        return m_lastMatchStart_;
+    }
+
+    /**
+     * Return true if the overlapping property has been set.
+     * See setOverlapping(boolean) for more information.
+     * @see #setOverlapping
+     * @return true if the overlapping property has been set, false otherwise
+     * @stable ICU 2.8
+     */
+    public boolean isOverlapping() 
+    {
+        return m_isOverlap_;
+    }
+    
+    /** 
+     * <p>
+     * Resets the search iteration. All properties will be reset to their
+     * default values.
+     * </p>
+     * <p>
+     * If a forward iteration is initiated, the next search will begin at the
+     * start of the target text. Otherwise, if a backwards iteration is initiated,
+     * the next search will begin at the end of the target text.
+     * </p>
+     * @stable ICU 2.8
+     */
+    public void reset()
+    {
+        // reset is setting the attributes that are already in string search
+        matchLength = 0;
+        setIndex(targetText.getBeginIndex());
+        m_isOverlap_ = false;
+        m_isForwardSearching_ = true;
+        m_reset_ = true;
+        m_setOffset_ = DONE;
+    }
+    
+    /**
+     * Return the index of the first <b>forward</b> match in the target text. 
+     * This method sets the iteration to begin at the start of the 
+     * target text and searches forward from there.
+     * @return The index of the first forward match, or <code>DONE</code> 
+     *            if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #following
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public final int first() 
+    {
+        m_isForwardSearching_ = true;
+        setIndex(targetText.getBeginIndex());
+        return next();
+    }
+
+    /**
+     * Return the index of the first <b>forward</b> match in target text that 
+     * is at or after argument <tt>position</tt>. 
+     * This method sets the iteration to begin at the specified
+     * position in the the target text and searches forward from there.
+     * @return The index of the first forward match, or <code>DONE</code> 
+     *         if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public final int following(int position) 
+    {
+        m_isForwardSearching_ = true;
+        // position checked in usearch_setOffset
+        setIndex(position);
+        return next();
+    }
+    
+    /**
+     * Return the index of the first <b>backward</b> match in target text. 
+     * This method sets the iteration to begin at the end of the 
+     * target text and searches backwards from there.
+     * @return The starting index of the first backward match, or 
+     *         <code>DONE</code> if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #preceding
+     * @see #next
+     * @see #previous
+     * @see #following
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public final int last() 
+    {
+        m_isForwardSearching_ = false;
+        setIndex(targetText.getEndIndex());
+        return previous();
+    }
+     
+    /**
+     * Return the index of the first <b>backwards</b> match in target 
+     * text that ends at or before argument <tt>position</tt>. 
+     * This method sets the iteration to begin at the argument
+     * position index of the target text and searches backwards from there.
+     * @return The starting index of the first backwards match, or 
+     *         <code>DONE</code> 
+     *         if there are no matches.
+     * @see #getMatchStart
+     * @see #getMatchLength
+     * @see #getMatchedText
+     * @see #first
+     * @see #following
+     * @see #next
+     * @see #previous
+     * @see #last
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    public final int preceding(int position) 
+    {
+        m_isForwardSearching_ = false;
+        // position checked in usearch_setOffset
+        setIndex(position);
+        return previous();   
+    }
+    
+    // protected data member ----------------------------------------------
+    
+    /**
+     * The BreakIterator to define the boundaries of a logical match.
+     * This value can be a null.
+     * See class documentation for more information.
+     * @see #setBreakIterator(BreakIterator)
+     * @see #getBreakIterator
+     * @see BreakIterator
+     * @stable ICU 2.0
+     */
+    protected BreakIterator breakIterator; 
+
+    /**
+     * Target text for searching.
+     * @see #setTarget(CharacterIterator)
+     * @see #getTarget
+     * @stable ICU 2.0
+     */
+    protected CharacterIterator targetText;
+    /**
+     * Length of the most current match in target text. 
+     * Value 0 is the default value.
+     * @see #setMatchLength
+     * @see #getMatchLength
+     * @stable ICU 2.0
+     */
+    protected int matchLength;
+    
+    // protected constructor ----------------------------------------------
+    
+    /**
+     * Protected constructor for use by subclasses.
+     * Initializes the iterator with the argument target text for searching 
+     * and sets the BreakIterator.
+     * See class documentation for more details on the use of the target text
+     * and BreakIterator.
+     * @param target The target text to be searched.
+     * @param breaker A {@link BreakIterator} that is used to determine the 
+     *                boundaries of a logical match. This argument can be null.
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see BreakIterator  
+     * @stable ICU 2.0
+     */
+    protected SearchIterator(CharacterIterator target, BreakIterator breaker)
+    {
+        if (target == null 
+            || (target.getEndIndex() - target.getBeginIndex()) == 0) {
+                throw new IllegalArgumentException(
+                                   "Illegal argument target. " +
+                                   " Argument can not be null or of length 0");
+        }
+        targetText = target;
+        breakIterator = breaker;
+        if (breakIterator != null) {
+            breakIterator.setText(target);
+        }
+        matchLength = 0;
+        m_lastMatchStart_ = DONE;
+        m_isOverlap_ = false;
+        m_isForwardSearching_ = true;
+        m_reset_ = true;
+        m_setOffset_ = DONE;
+    }    
+    
+    // protected methods --------------------------------------------------
+
+   
+    /**
+     * Sets the length of the most recent match in the target text. 
+     * Subclasses' handleNext() and handlePrevious() methods should call this 
+     * after they find a match in the target text.    
+     * @param length new length to set
+     * @see #handleNext
+     * @see #handlePrevious
+     * @stable ICU 2.0
+     */
+    protected void setMatchLength(int length)
+    {
+        matchLength = length;
+    }
+
+    /**
+     * <p>
+     * Abstract method that subclasses override to provide the mechanism 
+     * for finding the next <b>forwards</b> match in the target text. This 
+     * allows different subclasses to provide different search algorithms.
+     * </p> 
+     * <p>
+     * If a match is found, this function must call setMatchLength(int) to
+     * set the length of the result match.
+     * The iterator is adjusted so that its current index, as returned by 
+     * {@link #getIndex}, is the starting position of the match if one was 
+     * found. If a match is not found, <tt>DONE</tt> will be returned.
+     * </p> 
+     * @param start index in the target text at which the forwards search 
+     *        should begin.
+     * @return the starting index of the next forwards match if found, DONE 
+     *         otherwise
+     * @see #setMatchLength(int)
+     * @see #handlePrevious(int)
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    protected abstract int handleNext(int start);
+    
+    /**
+     * <p>
+     * Abstract method which subclasses override to provide the mechanism 
+     * for finding the next <b>backwards</b> match in the target text. 
+     * This allows different 
+     * subclasses to provide different search algorithms. 
+     * </p> 
+     * <p>
+     * If a match is found, this function must call setMatchLength(int) to
+     * set the length of the result match.
+     * The iterator is adjusted so that its current index, as returned by 
+     * {@link #getIndex}, is the starting position of the match if one was 
+     * found. If a match is not found, <tt>DONE</tt> will be returned.
+     * </p> 
+     * @param startAt index in the target text at which the backwards search 
+     *        should begin.
+     * @return the starting index of the next backwards match if found, 
+     *         DONE otherwise
+     * @see #setMatchLength(int)
+     * @see #handleNext(int)
+     * @see #DONE
+     * @stable ICU 2.0
+     */
+    protected abstract int handlePrevious(int startAt);
+    
+    // private data members ------------------------------------------------
+    
+    /**
+     * Flag indicates if we are doing a forwards search
+     */
+    private boolean m_isForwardSearching_;
+    /**
+     * Flag to indicate if overlapping search is to be done.
+     * E.g. looking for "aa" in "aaa" will yield matches at offset 0 and 1.
+     */
+    private boolean m_isOverlap_;
+    /**
+     * Flag indicates if we are at the start of a string search.
+     * This indicates that we are in forward search and at the start of m_text.
+     */ 
+    private boolean m_reset_;
+    /**
+     * Data member to store user defined position in setIndex().
+     * If setIndex() is not called, this value will be DONE.
+     */ 
+    private int m_setOffset_;
+    /**
+     * Offset of the beginning of the last match
+     */
+    private int m_lastMatchStart_;
+}
diff --git a/src/com/ibm/icu/text/SimpleDateFormat.java b/src/com/ibm/icu/text/SimpleDateFormat.java
new file mode 100644
index 0000000..37f2b9a
--- /dev/null
+++ b/src/com/ibm/icu/text/SimpleDateFormat.java
@@ -0,0 +1,2906 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.ref.WeakReference;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.MissingResourceException;
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.Format;
+import java.util.LinkedList;
+//#endif
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.DateNumberFormat;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.impl.ZoneStringFormat.ZoneStringInfo;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.BasicTimeZone;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.TimeZoneTransition;
+import com.ibm.icu.util.ULocale;
+
+
+/**
+ * <code>SimpleDateFormat</code> is a concrete class for formatting and
+ * parsing dates in a locale-sensitive manner. It allows for formatting
+ * (date -> text), parsing (text -> date), and normalization.
+ *
+ * <p>
+ * <code>SimpleDateFormat</code> allows you to start by choosing
+ * any user-defined patterns for date-time formatting. However, you
+ * are encouraged to create a date-time formatter with either
+ * <code>getTimeInstance</code>, <code>getDateInstance</code>, or
+ * <code>getDateTimeInstance</code> in <code>DateFormat</code>. Each
+ * of these class methods can return a date/time formatter initialized
+ * with a default format pattern. You may modify the format pattern
+ * using the <code>applyPattern</code> methods as desired.
+ * For more information on using these methods, see
+ * {@link DateFormat}.
+ *
+ * <p>
+ * <strong>Time Format Syntax:</strong>
+ * <p>
+ * To specify the time format use a <em>time pattern</em> string.
+ * In this pattern, all ASCII letters are reserved as pattern letters,
+ * which are defined as the following:
+ * <blockquote>
+ * <pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        era designator          (Text)              AD
+ * y&#x2020;       year                    (Number)            1996
+ * Y*       year (week of year)     (Number)            1997
+ * u*       extended year           (Number)            4601
+ * M        month in year           (Text & Number)     July & 07
+ * d        day in month            (Number)            10
+ * h        hour in am/pm (1~12)    (Number)            12
+ * H        hour in day (0~23)      (Number)            0
+ * m        minute in hour          (Number)            30
+ * s        second in minute        (Number)            55
+ * S        fractional second       (Number)            978
+ * E        day of week             (Text)              Tuesday
+ * e*       day of week (local 1~7) (Text & Number)     Tuesday & 2
+ * D        day in year             (Number)            189
+ * F        day of week in month    (Number)            2 (2nd Wed in July)
+ * w        week in year            (Number)            27
+ * W        week in month           (Number)            2
+ * a        am/pm marker            (Text)              PM
+ * k        hour in day (1~24)      (Number)            24
+ * K        hour in am/pm (0~11)    (Number)            0
+ * z        time zone               (Text)              Pacific Standard Time
+ * Z        time zone (RFC 822)     (Number)            -0800
+ * v        time zone (generic)     (Text)              Pacific Time
+ * V        time zone (location)    (Text)              United States (Los Angeles)
+ * g*       Julian day              (Number)            2451334
+ * A*       milliseconds in day     (Number)            69540000
+ * Q*       quarter in year         (Text & Number)     Q1 & 01
+ * c*       stand alone day of week (Text & Number)     Tuesday & 2
+ * L*       stand alone month       (Text & Number)     July & 07
+ * q*       stand alone quarter     (Text & Number)     Q1 & 01
+ * '        escape for text         (Delimiter)         'Date='
+ * ''       single quote            (Literal)           'o''clock'
+ * </pre>
+ * </blockquote>
+ * <tt><b>*</b></tt> These items are not supported by Java's SimpleDateFormat.<br>
+ * <tt><b>&#x2020;</b></tt> ICU interprets a single 'y' differently than Java.</p>
+ * <p>
+ * The count of pattern letters determine the format.
+ * <p>
+ * <strong>(Text)</strong>: 4 or more pattern letters--use full form,
+ * &lt; 4--use short or abbreviated form if one exists.
+ * <p>
+ * <strong>(Number)</strong>: the minimum number of digits. Shorter
+ * numbers are zero-padded to this amount. Year is handled specially;
+ * that is, if the count of 'y' is 2, the Year will be truncated to 2 digits.
+ * (e.g., if "yyyy" produces "1997", "yy" produces "97".)
+ * Unlike other fields, fractional seconds are padded on the right with zero.
+ * <p>
+ * <strong>(Text & Number)</strong>: 3 or over, use text, otherwise use number.
+ * <p>
+ * Any characters in the pattern that are not in the ranges of ['a'..'z']
+ * and ['A'..'Z'] will be treated as quoted text. For instance, characters
+ * like ':', '.', ' ', '#' and '@' will appear in the resulting time text
+ * even they are not embraced within single quotes.
+ * <p>
+ * A pattern containing any invalid pattern letter will result in a thrown
+ * exception during formatting or parsing.
+ *
+ * <p>
+ * <strong>Examples Using the US Locale:</strong>
+ * <blockquote>
+ * <pre>
+ * Format Pattern                         Result
+ * --------------                         -------
+ * "yyyy.MM.dd G 'at' HH:mm:ss vvvv" ->>  1996.07.10 AD at 15:08:56 Pacific Time
+ * "EEE, MMM d, ''yy"                ->>  Wed, July 10, '96
+ * "h:mm a"                          ->>  12:08 PM
+ * "hh 'o''clock' a, zzzz"           ->>  12 o'clock PM, Pacific Daylight Time
+ * "K:mm a, vvv"                     ->>  0:00 PM, PT
+ * "yyyyy.MMMMM.dd GGG hh:mm aaa"    ->>  01996.July.10 AD 12:08 PM
+ * </pre>
+ * </blockquote>
+ * <strong>Code Sample:</strong>
+ * <blockquote>
+ * <pre>
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000);
+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);
+ * <br>
+ * // Format the current time.
+ * SimpleDateFormat formatter
+ *     = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz");
+ * Date currentTime_1 = new Date();
+ * String dateString = formatter.format(currentTime_1);
+ * <br>
+ * // Parse the previous string back into a Date.
+ * ParsePosition pos = new ParsePosition(0);
+ * Date currentTime_2 = formatter.parse(dateString, pos);
+ * </pre>
+ * </blockquote>
+ * In the example, the time value <code>currentTime_2</code> obtained from
+ * parsing will be equal to <code>currentTime_1</code>. However, they may not be
+ * equal if the am/pm marker 'a' is left out from the format pattern while
+ * the "hour in am/pm" pattern symbol is used. This information loss can
+ * happen when formatting the time in PM.
+ *
+ * <p>
+ * When parsing a date string using the abbreviated year pattern ("yy"),
+ * SimpleDateFormat must interpret the abbreviated year
+ * relative to some century.  It does this by adjusting dates to be
+ * within 80 years before and 20 years after the time the SimpleDateFormat
+ * instance is created. For example, using a pattern of "MM/dd/yy" and a
+ * SimpleDateFormat instance created on Jan 1, 1997,  the string
+ * "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64"
+ * would be interpreted as May 4, 1964.
+ * During parsing, only strings consisting of exactly two digits, as defined by
+ * {@link com.ibm.icu.lang.UCharacter#isDigit(int)}, will be parsed into the default
+ * century.
+ * Any other numeric string, such as a one digit string, a three or more digit
+ * string, or a two digit string that isn't all digits (for example, "-1"), is
+ * interpreted literally.  So "01/02/3" or "01/02/003" are parsed, using the
+ * same pattern, as Jan 2, 3 AD.  Likewise, "01/02/-3" is parsed as Jan 2, 4 BC.
+ *
+ * <p>
+ * If the year pattern does not have exactly two 'y' characters, the year is
+ * interpreted literally, regardless of the number of digits.  So using the
+ * pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D.
+ *
+ * <p>
+ * When numeric fields abut one another directly, with no intervening delimiter
+ * characters, they constitute a run of abutting numeric fields.  Such runs are
+ * parsed specially.  For example, the format "HHmmss" parses the input text
+ * "123456" to 12:34:56, parses the input text "12345" to 1:23:45, and fails to
+ * parse "1234".  In other words, the leftmost field of the run is flexible,
+ * while the others keep a fixed width.  If the parse fails anywhere in the run,
+ * then the leftmost field is shortened by one character, and the entire run is
+ * parsed again. This is repeated until either the parse succeeds or the
+ * leftmost field is one character in length.  If the parse still fails at that
+ * point, the parse of the run fails.
+ *
+ * <p>
+ * For time zones that have no names, use strings GMT+hours:minutes or
+ * GMT-hours:minutes.
+ *
+ * <p>
+ * The calendar defines what is the first day of the week, the first week
+ * of the year, whether hours are zero based or not (0 vs 12 or 24), and the
+ * time zone. There is one common decimal format to handle all the numbers;
+ * the digit count is handled programmatically according to the pattern.
+ *
+ * <h4>Synchronization</h4>
+ *
+ * Date formats are not synchronized. It is recommended to create separate
+ * format instances for each thread. If multiple threads access a format
+ * concurrently, it must be synchronized externally.
+ *
+ * @see          com.ibm.icu.util.Calendar
+ * @see          com.ibm.icu.util.GregorianCalendar
+ * @see          com.ibm.icu.util.TimeZone
+ * @see          DateFormat
+ * @see          DateFormatSymbols
+ * @see          DecimalFormat
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class SimpleDateFormat extends DateFormat {
+
+    // the official serial version ID which says cryptically
+    // which version we're compatible with
+    private static final long serialVersionUID = 4774881970558875024L;
+
+    // the internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.3
+    // - 1 for version from JDK 1.1.4, which includes a new field
+    static final int currentSerialVersion = 1;
+
+    
+    /*
+     * From calendar field to its level.
+     * Used to order calendar field.
+     * For example, calendar fields can be defined in the following order:
+     * year >  month > date > am-pm > hour >  minute
+     * YEAR --> 10, MONTH -->20, DATE --> 30; 
+     * AM_PM -->40, HOUR --> 50, MINUTE -->60
+     */
+    private static final int[] CALENDAR_FIELD_TO_LEVEL =
+    {
+        /*GyM*/ 0, 10, 20,
+        /*wW*/ 20, 30,
+        /*dDEF*/ 30, 20, 30, 30,
+        /*ahHm*/ 40, 50, 50, 60,
+        /*sS..*/ 70, 80, 
+        /*z?Y*/ 0, 0, 10, 
+        /*eug*/ 30, 10, 0,
+        /*A*/ 40 
+    };
+
+
+    
+    /*
+     * From calendar field letter to its level.
+     * Used to order calendar field.
+     * For example, calendar fields can be defined in the following order:
+     * year >  month > date > am-pm > hour >  minute
+     * 'y' --> 10, 'M' -->20, 'd' --> 30; 'a' -->40, 'h' --> 50, 'm' -->60
+     */
+    private static final int[] PATTERN_CHAR_TO_LEVEL = 
+    {
+    //       A   B   C   D    E   F   G    H   I   J   K   L    M   N   O
+        -1, 40, -1, -1, 20,  30, 30,  0,  50, -1, -1, 50, 20,  20, -1, -1,
+    //   P   Q   R    S   T   U  V   W   X   Y  Z
+        -1, 20, -1,  80, -1, -1, 0, 30, -1, 10, 0, -1, -1, -1, -1, -1,
+    //       a   b   c   d    e   f  g   h   i   j    k   l    m   n   o
+        -1, 40, -1, 30,  30, 30, -1, 0, 50, -1, -1,  50, -1,  60, -1, -1,
+    //   p   q   r    s   t   u  v   w   x    y  z
+        -1, 20, -1,  70, -1, 10, 0, 20, -1,  10, 0, -1, -1, -1, -1, -1
+    };
+
+
+    /**
+     * The version of the serialized data on the stream.  Possible values:
+     * <ul>
+     * <li><b>0</b> or not present on stream: JDK 1.1.3.  This version
+     * has no <code>defaultCenturyStart</code> on stream.
+     * <li><b>1</b> JDK 1.1.4 or later.  This version adds
+     * <code>defaultCenturyStart</code>.
+     * </ul>
+     * When streaming out this class, the most recent format
+     * and the highest allowable <code>serialVersionOnStream</code>
+     * is written.
+     * @serial
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    /**
+     * The pattern string of this formatter.  This is always a non-localized
+     * pattern.  May not be null.  See class documentation for details.
+     * @serial
+     */
+    private String pattern;
+
+    /**
+     * The symbols used by this formatter for week names, month names,
+     * etc.  May not be null.
+     * @serial
+     * @see DateFormatSymbols
+     */
+    private DateFormatSymbols formatData;
+
+    private transient ULocale locale;
+
+    /**
+     * We map dates with two-digit years into the century starting at
+     * <code>defaultCenturyStart</code>, which may be any date.  May
+     * not be null.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private Date defaultCenturyStart;
+
+    private transient int defaultCenturyStartYear;
+
+    // defaultCenturyBase is set when an instance is created
+    // and may be used for calculating defaultCenturyStart when needed.
+    private transient long defaultCenturyBase;
+
+    // We need to preserve time zone type when parsing specific
+    // time zone text (xxx Standard Time vs xxx Daylight Time)
+    private static final int TZTYPE_UNK = 0, TZTYPE_STD = 1, TZTYPE_DST = 2;
+    private transient int tztype = TZTYPE_UNK;
+
+    private static final int millisPerHour = 60 * 60 * 1000;
+    private static final int millisPerMinute = 60 * 1000;
+    private static final int millisPerSecond = 1000;
+
+    // This prefix is designed to NEVER MATCH real text, in order to
+    // suppress the parsing of negative numbers.  Adjust as needed (if
+    // this becomes valid Unicode).
+    private static final String SUPPRESS_NEGATIVE_PREFIX = "\uAB00";
+
+    /**
+     * If true, this object supports fast formatting using the
+     * subFormat variant that takes a StringBuffer.
+     */
+    private transient boolean useFastFormat;
+
+    /**
+     * Construct a SimpleDateFormat using the default pattern for the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     *
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat() {
+        this(getDefaultPattern(), null, null, null, null, true);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern in the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern)
+    {
+        this(pattern, null, null, null, null, true);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern, Locale loc)
+    {
+        this(pattern, null, null, null, ULocale.forLocale(loc), true);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     * @stable ICU 3.2
+     */
+    public SimpleDateFormat(String pattern, ULocale loc)
+    {
+        this(pattern, null, null, null, loc, true);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and
+     * locale-specific symbol data.
+     * Warning: uses default locale for digits!
+     * @stable ICU 2.0
+     */
+    public SimpleDateFormat(String pattern, DateFormatSymbols formatData)
+    {
+        this(pattern, (DateFormatSymbols)formatData.clone(), null, null, null, true);
+    }
+
+    /**
+     * @internal ICU 3.2
+     * @deprecated This API is ICU internal only.
+     */
+    public SimpleDateFormat(String pattern, DateFormatSymbols formatData, ULocale loc)
+    {
+        this(pattern, (DateFormatSymbols)formatData.clone(), null, null, loc, true);
+    }
+
+    /**
+     * Package-private constructor that allows a subclass to specify
+     * whether it supports fast formatting.
+     *
+     * TODO make this API public.
+     */
+    SimpleDateFormat(String pattern, DateFormatSymbols formatData, Calendar calendar, ULocale locale,
+                     boolean useFastFormat) {
+        this(pattern, (DateFormatSymbols)formatData.clone(), (Calendar)calendar.clone(), null, locale, useFastFormat);
+    }
+
+    /*
+     * The constructor called from all other SimpleDateFormat constructors
+     */
+    private SimpleDateFormat(String pattern, DateFormatSymbols formatData, Calendar calendar,
+            NumberFormat numberFormat, ULocale locale, boolean useFastFormat) {
+        this.pattern = pattern;
+        this.formatData = formatData;
+        this.calendar = calendar;
+        this.numberFormat = numberFormat;
+        this.locale = locale; // time zone formatting
+        this.useFastFormat = useFastFormat;
+        initialize();
+    }
+
+    /**
+     * Create an instance of SimpleDateForamt for the given format configuration
+     * @param formatConfig the format configuration
+     * @return A SimpleDateFormat instance
+     * @internal ICU 3.8
+     * @deprecated This API is ICU internal only.
+     */
+    public static SimpleDateFormat getInstance(Calendar.FormatConfiguration formatConfig) {
+        return new SimpleDateFormat(formatConfig.getPatternString(),
+                    formatConfig.getDateFormatSymbols(),
+                    formatConfig.getCalendar(),
+                    null,
+                    formatConfig.getLocale(),
+                    true);
+    }
+
+    /*
+     * Initialized fields
+     */
+    private void initialize() {
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        if (formatData == null) {
+            formatData = new DateFormatSymbols(locale);
+        }
+        if (calendar == null) {
+            calendar = Calendar.getInstance(locale);
+        }
+        if (numberFormat == null) {
+            // Use a NumberFormat optimized for date formatting
+            numberFormat = new DateNumberFormat(locale);
+        }
+        // Note: deferring calendar calculation until when we really need it.
+        // Instead, we just record time of construction for backward compatibility.
+        defaultCenturyBase = System.currentTimeMillis();
+
+        setLocale(calendar.getLocale(ULocale.VALID_LOCALE ), calendar.getLocale(ULocale.ACTUAL_LOCALE));
+        initLocalZeroPaddingNumberFormat();
+    }
+
+    // privates for the default pattern
+    private static ULocale cachedDefaultLocale = null;
+    private static String cachedDefaultPattern = null;
+    private static final String FALLBACKPATTERN = "yy/MM/dd HH:mm";
+
+    /*
+     * Returns the default date and time pattern (SHORT) for the default locale.
+     * This method is only used by the default SimpleDateFormat constructor.
+     */
+    private static synchronized String getDefaultPattern() {
+        ULocale defaultLocale = ULocale.getDefault();
+        if (!defaultLocale.equals(cachedDefaultLocale)) {
+            cachedDefaultLocale = defaultLocale;
+            Calendar cal = Calendar.getInstance(cachedDefaultLocale);
+            try {
+                CalendarData calData = new CalendarData(cachedDefaultLocale, cal.getType());
+                String[] dateTimePatterns = calData.getStringArray("DateTimePatterns");
+                cachedDefaultPattern = MessageFormat.format(dateTimePatterns[8],
+                        new Object[] {dateTimePatterns[SHORT], dateTimePatterns[SHORT + 4]});
+            } catch (MissingResourceException e) {
+                cachedDefaultPattern = FALLBACKPATTERN;
+            }
+        }
+        return cachedDefaultPattern;
+    }
+
+    /* Define one-century window into which to disambiguate dates using
+     * two-digit years.
+     */
+    private void parseAmbiguousDatesAsAfter(Date startDate) {
+        defaultCenturyStart = startDate;
+        calendar.setTime(startDate);
+        defaultCenturyStartYear = calendar.get(Calendar.YEAR);
+    }
+
+    /* Initialize defaultCenturyStart and defaultCenturyStartYear by base time.
+     * The default start time is 80 years before the creation time of this object.
+     */
+    private void initializeDefaultCenturyStart(long baseTime) {
+        defaultCenturyBase = baseTime;
+        // clone to avoid messing up date stored in calendar object
+        // when this method is called while parsing
+        Calendar tmpCal = (Calendar)calendar.clone();
+        tmpCal.setTimeInMillis(baseTime);
+        tmpCal.add(Calendar.YEAR, -80);
+        defaultCenturyStart = tmpCal.getTime();
+        defaultCenturyStartYear = tmpCal.get(Calendar.YEAR);
+    }
+
+    /* Gets the default century start date for this object */
+    private Date getDefaultCenturyStart() {
+        if (defaultCenturyStart == null) {
+            // not yet initialized
+            initializeDefaultCenturyStart(defaultCenturyBase);
+        }
+        return defaultCenturyStart;
+    }
+
+    /* Gets the default century start year for this object */
+    private int getDefaultCenturyStartYear() {
+        if (defaultCenturyStart == null) {
+            // not yet initialized
+            initializeDefaultCenturyStart(defaultCenturyBase);
+        }
+        return defaultCenturyStartYear;
+    }
+
+    /**
+     * Sets the 100-year period 2-digit years will be interpreted as being in
+     * to begin on the date the user specifies.
+     * @param startDate During parsing, two digit years will be placed in the range
+     * <code>startDate</code> to <code>startDate + 100 years</code>.
+     * @stable ICU 2.0
+     */
+    public void set2DigitYearStart(Date startDate) {
+        parseAmbiguousDatesAsAfter(startDate);
+    }
+
+    /**
+     * Returns the beginning date of the 100-year period 2-digit years are interpreted
+     * as being within.
+     * @return the start of the 100-year period into which two digit years are
+     * parsed
+     * @stable ICU 2.0
+     */
+    public Date get2DigitYearStart() {
+        return getDefaultCenturyStart();
+    }
+
+    /**
+     * Overrides DateFormat.
+     * <p>Formats a date or time, which is the standard millis
+     * since January 1, 1970, 00:00:00 GMT.
+     * <p>Example: using the US locale:
+     * "yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
+     * @param cal the calendar whose date-time value is to be formatted into a date-time string
+     * @param toAppendTo where the new date-time text is to be appended
+     * @param pos the formatting position. On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field.
+     * @return the formatted date-time string.
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+                               FieldPosition pos) {
+        return format(cal, toAppendTo, pos, null);
+    }
+
+    // The actual method to format date. If List attributes is not null,
+    // then attribute information will be recorded.
+    private StringBuffer format(Calendar cal, StringBuffer toAppendTo,
+            FieldPosition pos, List attributes) {
+        // Initialize
+        pos.setBeginIndex(0);
+        pos.setEndIndex(0);
+
+        // Careful: For best performance, minimize the number of calls
+        // to StringBuffer.append() by consolidating appends when
+        // possible.
+
+        Object[] items = getPatternItems();
+        for (int i = 0; i < items.length; i++) {
+            if (items[i] instanceof String) {
+                toAppendTo.append((String)items[i]);
+            } else {
+                PatternItem item = (PatternItem)items[i];
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                int start = 0;
+                if (attributes != null) {
+                    // Save the current length
+                    start = toAppendTo.length();
+                }
+//#endif
+                if (useFastFormat) {
+                    subFormat(toAppendTo, item.type, item.length, toAppendTo.length(), pos, cal);
+                } else {
+                    toAppendTo.append(subFormat(item.type, item.length, toAppendTo.length(), pos, formatData, cal));
+                }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+                if (attributes != null) {
+                    // Check the sub format length
+                    int end = toAppendTo.length();
+                    if (end - start > 0) {
+                        // Append the attribute to the list
+                        DateFormat.Field attr = patternCharToDateFormatField(item.type);
+                        FieldPosition fp = new FieldPosition(attr);
+                        fp.setBeginIndex(start);
+                        fp.setEndIndex(end);
+                        attributes.add(fp);
+                    }
+                }
+//#endif
+            }
+        }
+        return toAppendTo;
+        
+    }
+
+    // Map pattern character to index
+    private static final int PATTERN_CHAR_BASE = 0x40;
+    private static final int[] PATTERN_CHAR_TO_INDEX =
+    {
+    //       A   B   C   D   E   F   G   H   I   J   K   L   M   N   O
+        -1, 22, -1, -1, 10,  9, 11,  0,  5, -1, -1, 16, 26,  2, -1, -1,
+    //   P   Q   R   S   T   U   V   W   X   Y   Z
+        -1, 27, -1,  8, -1, -1, 29, 13, -1, 18, 23, -1, -1, -1, -1, -1,
+    //       a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
+        -1, 14, -1, 25,  3, 19, -1, 21, 15, -1, -1,  4, -1,  6, -1, -1,
+    //   p   q   r   s   t   u   v   w   x   y   z
+        -1, 28, -1,  7, -1, 20, 24, 12, -1,  1, 17, -1, -1, -1, -1, -1
+    };
+    
+    // Map pattern character index to Calendar field number
+    private static final int[] PATTERN_INDEX_TO_CALENDAR_FIELD =
+    {
+        /*GyM*/ Calendar.ERA, Calendar.YEAR, Calendar.MONTH,
+        /*dkH*/ Calendar.DATE, Calendar.HOUR_OF_DAY, Calendar.HOUR_OF_DAY,
+        /*msS*/ Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND,
+        /*EDF*/ Calendar.DAY_OF_WEEK, Calendar.DAY_OF_YEAR, Calendar.DAY_OF_WEEK_IN_MONTH,
+        /*wWa*/ Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH, Calendar.AM_PM,
+        /*hKz*/ Calendar.HOUR, Calendar.HOUR, Calendar.ZONE_OFFSET,
+        /*Yeu*/ Calendar.YEAR_WOY, Calendar.DOW_LOCAL, Calendar.EXTENDED_YEAR,
+        /*gAZ*/ Calendar.JULIAN_DAY, Calendar.MILLISECONDS_IN_DAY, Calendar.ZONE_OFFSET,
+        /*v*/   Calendar.ZONE_OFFSET,
+        /*c*/   Calendar.DAY_OF_WEEK,
+        /*L*/   Calendar.MONTH,
+        /*Qq*/  Calendar.MONTH, Calendar.MONTH,
+        /*V*/   Calendar.ZONE_OFFSET,
+    };
+
+    // Map pattern character index to DateFormat field number
+    private static final int[] PATTERN_INDEX_TO_DATE_FORMAT_FIELD = {
+        /*GyM*/ DateFormat.ERA_FIELD, DateFormat.YEAR_FIELD, DateFormat.MONTH_FIELD,
+        /*dkH*/ DateFormat.DATE_FIELD, DateFormat.HOUR_OF_DAY1_FIELD, DateFormat.HOUR_OF_DAY0_FIELD,
+        /*msS*/ DateFormat.MINUTE_FIELD, DateFormat.SECOND_FIELD, DateFormat.FRACTIONAL_SECOND_FIELD,
+        /*EDF*/ DateFormat.DAY_OF_WEEK_FIELD, DateFormat.DAY_OF_YEAR_FIELD, DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD,
+        /*wWa*/ DateFormat.WEEK_OF_YEAR_FIELD, DateFormat.WEEK_OF_MONTH_FIELD, DateFormat.AM_PM_FIELD,
+        /*hKz*/ DateFormat.HOUR1_FIELD, DateFormat.HOUR0_FIELD, DateFormat.TIMEZONE_FIELD,
+        /*Yeu*/ DateFormat.YEAR_WOY_FIELD, DateFormat.DOW_LOCAL_FIELD, DateFormat.EXTENDED_YEAR_FIELD,
+        /*gAZ*/ DateFormat.JULIAN_DAY_FIELD, DateFormat.MILLISECONDS_IN_DAY_FIELD, DateFormat.TIMEZONE_RFC_FIELD,
+        /*v*/   DateFormat.TIMEZONE_GENERIC_FIELD, 
+        /*c*/   DateFormat.STANDALONE_DAY_FIELD,
+        /*L*/   DateFormat.STANDALONE_MONTH_FIELD,
+        /*Qq*/  DateFormat.QUARTER_FIELD, DateFormat.STANDALONE_QUARTER_FIELD,
+        /*V*/   DateFormat.TIMEZONE_SPECIAL_FIELD, 
+    };
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    // Map pattern character index to DateFormat.Field
+    private static final DateFormat.Field[] PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE = {
+        /*GyM*/ DateFormat.Field.ERA, DateFormat.Field.YEAR, DateFormat.Field.MONTH,
+        /*dkH*/ DateFormat.Field.DAY_OF_MONTH, DateFormat.Field.HOUR_OF_DAY1, DateFormat.Field.HOUR_OF_DAY0,
+        /*msS*/ DateFormat.Field.MINUTE, DateFormat.Field.SECOND, DateFormat.Field.MILLISECOND,
+        /*EDF*/ DateFormat.Field.DAY_OF_WEEK, DateFormat.Field.DAY_OF_YEAR, DateFormat.Field.DAY_OF_WEEK_IN_MONTH,
+        /*wWa*/ DateFormat.Field.WEEK_OF_YEAR, DateFormat.Field.WEEK_OF_MONTH, DateFormat.Field.AM_PM,
+        /*hKz*/ DateFormat.Field.HOUR1, DateFormat.Field.HOUR0, DateFormat.Field.TIME_ZONE,
+        /*Yeu*/ DateFormat.Field.YEAR_WOY, DateFormat.Field.DOW_LOCAL, DateFormat.Field.EXTENDED_YEAR,
+        /*gAZ*/ DateFormat.Field.JULIAN_DAY, DateFormat.Field.MILLISECONDS_IN_DAY, DateFormat.Field.TIME_ZONE,
+        /*v*/   DateFormat.Field.TIME_ZONE,
+        /*c*/   DateFormat.Field.DAY_OF_WEEK,
+        /*L*/   DateFormat.Field.MONTH,
+        /*Qq*/  DateFormat.Field.QUARTER, DateFormat.Field.QUARTER,
+        /*V*/   DateFormat.Field.TIME_ZONE,
+    };
+
+    /**
+     * Return a DateFormat.Field constant associated with the specified format pattern
+     * character.
+     * 
+     * @param ch The pattern character
+     * @return DateFormat.Field associated with the pattern character
+     * 
+     * @draft ICU 3.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat.Field patternCharToDateFormatField(char ch) {
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_INDEX[(int)ch - PATTERN_CHAR_BASE];
+        }
+        if (patternCharIndex != -1) {
+            return PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE[patternCharIndex];
+        }
+        return null;
+    }
+//#endif
+
+    /**
+     * Format a single field, given its pattern character.  Subclasses may
+     * override this method in order to modify or add formatting
+     * capabilities.
+     * @param ch the pattern character
+     * @param count the number of times ch is repeated in the pattern
+     * @param beginOffset the offset of the output string at the start of
+     * this field; used to set pos when appropriate
+     * @param pos receives the position of a field, when appropriate
+     * @param fmtData the symbols for this formatter
+     * @stable ICU 2.0
+     */
+    protected String subFormat(char ch, int count, int beginOffset,
+                               FieldPosition pos, DateFormatSymbols fmtData,
+                               Calendar cal)
+        throws IllegalArgumentException
+    {
+        // Note: formatData is ignored
+        StringBuffer buf = new StringBuffer();
+        subFormat(buf, ch, count, beginOffset, pos, cal);
+        return buf.toString();
+    }
+
+    /**
+     * Format a single field; useFastFormat variant.  Reuses a
+     * StringBuffer for results instead of creating a String on the
+     * heap for each call.
+     *
+     * NOTE We don't really need the beginOffset parameter, EXCEPT for
+     * the need to support the slow subFormat variant (above) which
+     * has to pass it in to us.
+     *
+     * TODO make this API public
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void subFormat(StringBuffer buf,
+                             char ch, int count, int beginOffset,
+                             FieldPosition pos,
+                             Calendar cal) {
+        final int maxIntCount = Integer.MAX_VALUE;
+        final int bufstart = buf.length();
+
+        // final int patternCharIndex = DateFormatSymbols.patternChars.indexOf(ch);
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_INDEX[(int)ch - PATTERN_CHAR_BASE];
+        }
+
+        if (patternCharIndex == -1) {
+            throw new IllegalArgumentException("Illegal pattern character " +
+                                               "'" + ch + "' in \"" +
+                                               new String(pattern) + '"');
+        }
+
+        final int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+        int value = cal.get(field);
+
+        String zoneString = null;
+
+        switch (patternCharIndex) {
+        case 0: // 'G' - ERA
+            if (count == 5) {
+                safeAppend(formatData.narrowEras, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.eraNames, value, buf);
+            } else {
+                safeAppend(formatData.eras, value, buf);
+            }
+            break;
+        case 1: // 'y' - YEAR
+            /* According to the specification, if the number of pattern letters ('y') is 2,
+             * the year is truncated to 2 digits; otherwise it is interpreted as a number.
+             * But the original code process 'y', 'yy', 'yyy' in the same way. and process
+             * patterns with 4 or more than 4 'y' characters in the same way.
+             * So I change the codes to meet the specification. [Richard/GCl]
+             */
+            if (count == 2)
+                zeroPaddingNumber(buf, value, 2, 2); // clip 1996 to 96
+            else //count = 1 or count > 2
+                zeroPaddingNumber(buf, value, count, maxIntCount);
+            break;
+        case 2: // 'M' - MONTH
+            if (count == 5) {
+                safeAppend(formatData.narrowMonths, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.months, value, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.shortMonths, value, buf);
+            } else {
+                zeroPaddingNumber(buf, value+1, count, maxIntCount);
+            }
+            break;
+        case 4: // 'k' - HOUR_OF_DAY (1..24)
+            if (value == 0)
+                zeroPaddingNumber(buf,
+                                  cal.getMaximum(Calendar.HOUR_OF_DAY)+1,
+                                  count, maxIntCount);
+            else
+                zeroPaddingNumber(buf, value, count, maxIntCount);
+            break;
+        case 8: // 'S' - FRACTIONAL_SECOND
+            // Fractional seconds left-justify
+            {
+                numberFormat.setMinimumIntegerDigits(Math.min(3, count));
+                numberFormat.setMaximumIntegerDigits(maxIntCount);
+                if (count == 1) {
+                    value = (value + 50) / 100;
+                } else if (count == 2) {
+                    value = (value + 5) / 10;
+                }
+                FieldPosition p = new FieldPosition(-1);
+                numberFormat.format((long) value, buf, p);
+                if (count > 3) {
+                    numberFormat.setMinimumIntegerDigits(count - 3);
+                    numberFormat.format(0L, buf, p);
+                }
+            }
+            break;
+        case 9: // 'E' - DAY_OF_WEEK
+            if (count == 5) {
+                safeAppend(formatData.narrowWeekdays, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.weekdays, value, buf);
+            } else {// count <= 3, use abbreviated form if exists
+                safeAppend(formatData.shortWeekdays, value, buf);
+            }
+            break;
+        case 14: // 'a' - AM_PM
+            safeAppend(formatData.ampms, value, buf);
+            break;
+        case 15: // 'h' - HOUR (1..12)
+            if (value == 0)
+                zeroPaddingNumber(buf,
+                                  cal.getLeastMaximum(Calendar.HOUR)+1,
+                                  count, maxIntCount);
+            else
+                zeroPaddingNumber(buf, value, count, maxIntCount);
+            break;
+        case 17: // 'z' - ZONE_OFFSET
+            if (count < 4) {
+                // "z", "zz", "zzz"
+                zoneString = formatData.getZoneStringFormat().getSpecificShortString(cal, true /* commonly used only */);
+            } else {
+                zoneString = formatData.getZoneStringFormat().getSpecificLongString(cal);
+            }
+            if (zoneString != null && zoneString.length() != 0) {
+                buf.append(zoneString);
+            } else {
+                // Use localized GMT format as fallback
+                appendGMT(buf, cal);
+            }
+            break;
+        case 23: // 'Z' - TIMEZONE_RFC
+            if (count < 4) {
+                // RFC822 format, must use ASCII digits
+                int val = (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET));
+                char sign = '+';
+                if (val < 0) {
+                    val = -val;
+                    sign = '-';
+                }
+                buf.append(sign);
+
+                int offsetH = val / millisPerHour;
+                val = val % millisPerHour;
+                int offsetM = val / millisPerMinute;
+                val = val % millisPerMinute;
+                int offsetS = val / millisPerSecond;
+
+                int num = 0, denom = 0;
+                if (offsetS == 0) {
+                    val = offsetH*100 + offsetM; // HHmm
+                    num = val % 10000;
+                    denom = 1000;
+                } else {
+                    val = offsetH*10000 + offsetM*100 + offsetS; // HHmmss
+                    num = val % 1000000;
+                    denom = 100000;
+                }
+                while (denom >= 1) {
+                    char digit = (char)((num / denom) + '0');
+                    buf.append(digit);
+                    num = num % denom;
+                    denom /= 10;
+                }
+            } else {
+                // long form, localized GMT pattern
+                appendGMT(buf, cal);
+            }
+            break;
+        case 24: // 'v' - TIMEZONE_GENERIC
+            if (count == 1) {
+                // "v"
+                zoneString = formatData.getZoneStringFormat().getGenericShortString(cal, true /* commonly used only */);
+            } else if (count == 4) {
+                // "vvvv"
+                zoneString = formatData.getZoneStringFormat().getGenericLongString(cal);
+            }
+            if (zoneString != null && zoneString.length() != 0) {
+                buf.append(zoneString);
+            } else {
+                // Use localized GMT format as fallback
+                appendGMT(buf, cal);
+            }
+            break;
+        case 25: // 'c' - STANDALONE DAY
+            if (count == 5) {
+                safeAppend(formatData.standaloneNarrowWeekdays, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.standaloneWeekdays, value, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.standaloneShortWeekdays, value, buf);
+            } else {
+                zeroPaddingNumber(buf, value, 1, maxIntCount);
+            }
+            break;
+        case 26: // 'L' - STANDALONE MONTH
+            if (count == 5) {
+                safeAppend(formatData.standaloneNarrowMonths, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.standaloneMonths, value, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.standaloneShortMonths, value, buf);
+            } else {
+                zeroPaddingNumber(buf, value+1, count, maxIntCount);
+            }
+            break;
+        case 27: // 'Q' - QUARTER
+            if (count >= 4) {
+                safeAppend(formatData.quarters, value/3, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.shortQuarters, value/3, buf);
+            } else {
+                zeroPaddingNumber(buf, (value/3)+1, count, maxIntCount);
+            }
+            break;
+        case 28: // 'q' - STANDALONE QUARTER
+            if (count >= 4) {
+                safeAppend(formatData.standaloneQuarters, value/3, buf);
+            } else if (count == 3) {
+                safeAppend(formatData.standaloneShortQuarters, value/3, buf);
+            } else {
+                zeroPaddingNumber(buf, (value/3)+1, count, maxIntCount);
+            }
+            break;
+        case 29: // 'V' - TIMEZONE_SPECIAL
+            if (count == 1) {
+                // "V"
+                zoneString = formatData.getZoneStringFormat().getSpecificShortString(cal, false /* ignoring commonly used */);
+            } else if (count == 4) {
+                // "VVVV"
+                zoneString = formatData.getZoneStringFormat().getGenericLocationString(cal);
+            }
+            if (zoneString != null && zoneString.length() != 0) {
+                buf.append(zoneString);
+            } else {
+                // Use localized GMT format as fallback
+                appendGMT(buf, cal);
+            }
+            break;
+        default:
+            // case 3: // 'd' - DATE
+            // case 5: // 'H' - HOUR_OF_DAY (0..23)
+            // case 6: // 'm' - MINUTE
+            // case 7: // 's' - SECOND
+            // case 10: // 'D' - DAY_OF_YEAR
+            // case 11: // 'F' - DAY_OF_WEEK_IN_MONTH
+            // case 12: // 'w' - WEEK_OF_YEAR
+            // case 13: // 'W' - WEEK_OF_MONTH
+            // case 16: // 'K' - HOUR (0..11)
+            // case 18: // 'Y' - YEAR_WOY
+            // case 19: // 'e' - DOW_LOCAL
+            // case 20: // 'u' - EXTENDED_YEAR
+            // case 21: // 'g' - JULIAN_DAY
+            // case 22: // 'A' - MILLISECONDS_IN_DAY
+
+            zeroPaddingNumber(buf, value, count, maxIntCount);
+            break;
+        } // switch (patternCharIndex)
+
+        // Set the FieldPosition (for the first occurrence only)
+        if (pos.getBeginIndex() == pos.getEndIndex()) {
+            if (pos.getField() == PATTERN_INDEX_TO_DATE_FORMAT_FIELD[patternCharIndex]) {
+                pos.setBeginIndex(beginOffset);
+                pos.setEndIndex(beginOffset + buf.length() - bufstart);
+            }
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+            else if (pos.getFieldAttribute() == PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE[patternCharIndex]) {
+                pos.setBeginIndex(beginOffset);
+                pos.setEndIndex(beginOffset + buf.length() - bufstart);
+            }
+//#endif
+        }
+    }
+
+    private static void safeAppend(String[] array, int value, StringBuffer appendTo) {
+        if (array != null && value >= 0 && value < array.length) {
+            appendTo.append(array[value]);
+        }
+    }
+
+    /*
+     * PatternItem store parsed date/time field pattern information.
+     */
+    private static class PatternItem {
+        final char type;
+        final int length;
+        final boolean isNumeric;
+
+        PatternItem(char type, int length) {
+            this.type = type;
+            this.length = length;
+            isNumeric = isNumeric(type, length);
+        }
+    }
+
+    private static ICUCache PARSED_PATTERN_CACHE = new SimpleCache();
+    private transient Object[] patternItems;
+
+    /*
+     * Returns parsed pattern items.  Each item is either String or
+     * PatternItem.
+     */
+    private Object[] getPatternItems() {
+        if (patternItems != null) {
+            return patternItems;
+        }
+
+        patternItems = (Object[])PARSED_PATTERN_CACHE.get(pattern);
+        if (patternItems != null) {
+            return patternItems;
+        }
+
+        boolean isPrevQuote = false;
+        boolean inQuote = false;
+        StringBuffer text = new StringBuffer();
+        char itemType = 0;  // 0 for string literal, otherwise date/time pattern character
+        int itemLength = 1;
+
+        List items = new ArrayList();
+
+        for (int i = 0; i < pattern.length(); i++) {
+            char ch = pattern.charAt(i);
+            if (ch == '\'') {
+                if (isPrevQuote) {
+                    text.append('\'');
+                    isPrevQuote = false;
+                } else {
+                    isPrevQuote = true;
+                    if (itemType != 0) {
+                        items.add(new PatternItem(itemType, itemLength));
+                        itemType = 0;
+                    }
+                }
+                inQuote = !inQuote;
+            } else {
+                isPrevQuote = false;
+                if (inQuote) {
+                    text.append(ch);
+                } else {
+                    if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
+                        // a date/time pattern character
+                        if (ch == itemType) {
+                            itemLength++;
+                        } else {
+                            if (itemType == 0) {
+                                if (text.length() > 0) {
+                                    items.add(text.toString());
+                                    text.setLength(0);
+                                }
+                            } else {
+                                items.add(new PatternItem(itemType, itemLength));
+                            }
+                            itemType = ch;
+                            itemLength = 1;
+                        }
+                    } else {
+                        // a string literal
+                        if (itemType != 0) {
+                            items.add(new PatternItem(itemType, itemLength));
+                            itemType = 0;
+                        }
+                        text.append(ch);
+                    }
+                }
+            }
+        }
+        // handle last item
+        if (itemType == 0) {
+            if (text.length() > 0) {
+                items.add(text.toString());
+                text.setLength(0);
+            }
+        } else {
+            items.add(new PatternItem(itemType, itemLength));
+        }
+
+        patternItems = new Object[items.size()];
+        items.toArray(patternItems);
+
+        PARSED_PATTERN_CACHE.put(pattern, patternItems);
+        
+        return patternItems;
+    }
+
+    /*
+     * Time zone localized GMT format stuffs
+     */
+    private static final String DEFAULT_GMT_PREFIX = "GMT";
+    private static final int DEFAULT_GMT_PREFIX_LEN = 3;
+    private static final char PLUS = '+';
+    private static final char MINUS = '-';
+    private static final char COLON = ':';
+
+    private void appendGMT(StringBuffer buf, Calendar cal) {
+        int offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
+
+        if (isDefaultGMTFormat()) {
+            formatGMTDefault(buf, offset);
+        } else {
+            int sign = DateFormatSymbols.OFFSET_POSITIVE;
+            if (offset < 0) {
+                offset = -offset;
+                sign = DateFormatSymbols.OFFSET_NEGATIVE;
+            }
+            int width = offset%(60*1000) == 0 ? DateFormatSymbols.OFFSET_HM : DateFormatSymbols.OFFSET_HMS;
+
+            MessageFormat fmt = getGMTFormatter(sign, width);
+            fmt.format(new Object[] {new Long(offset)}, buf, null);
+        }
+    }
+
+    private void formatGMTDefault(StringBuffer buf, int offset) {
+        buf.append(DEFAULT_GMT_PREFIX);
+        if (offset >= 0) {
+            buf.append(PLUS);
+        } else {
+            buf.append(MINUS);
+            offset = -offset;
+        }
+        offset /= 1000; // now in seconds
+        int sec = offset % 60;
+        offset /= 60;
+        int min = offset % 60;
+        int hour = offset / 60;
+
+        zeroPaddingNumber(buf, hour, 2, 2);
+        buf.append(COLON);
+        zeroPaddingNumber(buf, min, 2, 2);
+        if (sec != 0) {
+            buf.append(COLON);
+            zeroPaddingNumber(buf, sec, 2, 2);
+        }
+    }
+
+    private Integer parseGMT(String text, ParsePosition pos) {
+        if (!isDefaultGMTFormat()) {
+            int start = pos.getIndex();
+            String gmtPattern = formatData.gmtFormat;
+
+            // Quick check
+            boolean prefixMatch = false;
+            int prefixLen = gmtPattern.indexOf('{');
+            if (prefixLen > 0 && text.regionMatches(start, gmtPattern, 0, prefixLen)) {
+                prefixMatch = true;
+            }
+
+            if (prefixMatch) {
+                // Prefix matched
+                MessageFormat fmt;
+                Object[] parsedObjects;
+                int offset;
+
+                // Try negative Hms
+                fmt = getGMTFormatter(DateFormatSymbols.OFFSET_NEGATIVE, DateFormatSymbols.OFFSET_HMS);
+                parsedObjects = fmt.parse(text, pos);
+                if ((parsedObjects != null) && (parsedObjects[0] instanceof Date)) {
+                    offset = (int)((Date)parsedObjects[0]).getTime();
+                    return new Integer(-offset /* negative */);
+                }
+
+                // Reset ParsePosition
+                pos.setIndex(start);
+                pos.setErrorIndex(-1);
+
+                // Try positive Hms
+                fmt = getGMTFormatter(DateFormatSymbols.OFFSET_POSITIVE, DateFormatSymbols.OFFSET_HMS);
+                parsedObjects = fmt.parse(text, pos);
+                if ((parsedObjects != null) && (parsedObjects[0] instanceof Date)) {
+                    offset = (int)((Date)parsedObjects[0]).getTime();
+                    return new Integer(offset);
+                }
+
+                // Reset ParsePosition
+                pos.setIndex(start);
+                pos.setErrorIndex(-1);
+
+                // Try negative Hm
+                fmt = getGMTFormatter(DateFormatSymbols.OFFSET_NEGATIVE, DateFormatSymbols.OFFSET_HM);
+                parsedObjects = fmt.parse(text, pos);
+                if ((parsedObjects != null) && (parsedObjects[0] instanceof Date)) {
+                    offset = (int)((Date)parsedObjects[0]).getTime();
+                    return new Integer(-offset /* negative */);
+                }
+
+                // Reset ParsePosition
+                pos.setIndex(start);
+                pos.setErrorIndex(-1);
+
+                // Try positive Hm
+                fmt = getGMTFormatter(DateFormatSymbols.OFFSET_POSITIVE, DateFormatSymbols.OFFSET_HM);
+                parsedObjects = fmt.parse(text, pos);
+                if ((parsedObjects != null) && (parsedObjects[0] instanceof Date)) {
+                    offset = (int)((Date)parsedObjects[0]).getTime();
+                    return new Integer(offset);
+                }
+
+                // Reset ParsePosition
+                pos.setIndex(start);
+                pos.setErrorIndex(-1);
+            }
+        }
+
+        return parseGMTDefault(text, pos);
+    }
+
+    private Integer parseGMTDefault(String text, ParsePosition pos) {
+        int start = pos.getIndex();
+
+        if (start + DEFAULT_GMT_PREFIX_LEN + 1 >= text.length()) {
+            pos.setErrorIndex(start);
+            return null;
+        }
+
+        int cur = start;
+        // "GMT"
+        if (!text.regionMatches(true, start, DEFAULT_GMT_PREFIX, 0, DEFAULT_GMT_PREFIX_LEN)) {
+            pos.setErrorIndex(start);
+            return null;
+        }
+        cur += DEFAULT_GMT_PREFIX_LEN;
+        // Sign
+        boolean negative = false;
+        if (text.charAt(cur) == MINUS) {
+            negative = true;
+        } else if (text.charAt(cur) != PLUS) {
+            pos.setErrorIndex(cur);
+            return null;
+        }
+        cur++;
+
+        // Numbers
+        int numLen;
+        pos.setIndex(cur);
+
+        Number n = parseInt(text, 6, pos, false);
+        numLen = pos.getIndex() - cur;
+
+        if (n == null || numLen <= 0 || numLen > 6) {
+            pos.setIndex(start);
+            pos.setErrorIndex(cur);
+            return null;
+        }
+
+        int numVal = n.intValue();
+
+        int hour = 0;
+        int min = 0;
+        int sec = 0;
+
+        if (numLen <= 2) {
+            // H[H][:mm[:ss]]
+            hour = numVal;
+            cur += numLen;
+            if (cur + 2 < text.length() && text.charAt(cur) == COLON) {
+                cur++;
+                pos.setIndex(cur);
+                n = parseInt(text, 2, pos, false);
+                numLen = pos.getIndex() - cur;
+                if (n != null && numLen == 2) {
+                    // got minute field
+                    min = n.intValue();
+                    cur += numLen;
+                    if (cur + 2 < text.length() && text.charAt(cur) == COLON) {
+                        cur++;
+                        pos.setIndex(cur);
+                        n = parseInt(text, 2, pos, false);
+                        numLen = pos.getIndex() - cur;
+                        if (n != null && numLen == 2) {
+                            // got second field
+                            sec = n.intValue();
+                        } else {
+                            // reset position
+                            pos.setIndex(cur - 1);
+                            pos.setErrorIndex(-1);
+                        }
+                    }
+                } else {
+                    // reset postion
+                    pos.setIndex(cur - 1);
+                    pos.setErrorIndex(-1);
+                }
+            }
+        } else if (numLen == 3 || numLen == 4) {
+            // Hmm or HHmm
+            hour = numVal / 100;
+            min = numVal % 100;
+        } else { // numLen == 5 || numLen == 6
+            // Hmmss or HHmmss
+            hour = numVal / 10000;
+            min = (numVal % 10000) / 100;
+            sec = numVal % 100;
+        }
+
+        int offset = ((hour*60 + min)*60 + sec)*1000;
+        if (negative) {
+            offset = -offset;
+        }
+        return new Integer(offset);
+    }
+
+    transient private WeakReference[] gmtfmtCache;
+
+    private MessageFormat getGMTFormatter(int sign, int width) {
+        MessageFormat fmt = null;
+        if (gmtfmtCache == null) {
+            gmtfmtCache = new WeakReference[4];
+        }
+        int cacheIdx = sign*2 + width;
+        if (gmtfmtCache[cacheIdx] != null) {
+            fmt = (MessageFormat)gmtfmtCache[cacheIdx].get();
+        }
+        if (fmt == null) {
+            fmt = new MessageFormat(formatData.gmtFormat);
+            SimpleDateFormat sdf = (SimpleDateFormat)this.clone();
+            sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
+            sdf.applyPattern(formatData.getGmtHourFormat(sign, width));
+            fmt.setFormat(0, sdf);
+            gmtfmtCache[cacheIdx] = new WeakReference(fmt);
+        }
+        return fmt;
+    }
+
+    private boolean isDefaultGMTFormat() {
+        // GMT pattern
+        if (!DateFormatSymbols.DEFAULT_GMT_PATTERN.equals(formatData.getGmtFormat())) {
+            return false;
+        }
+        // GMT offset hour patters
+        boolean res = true;
+        for (int sign = 0; sign < 2 && res; sign++) {
+            for (int width = 0; width < 2; width++) {
+                if (!DateFormatSymbols.DEFAULT_GMT_HOUR_PATTERNS[sign][width].equals(formatData.getGmtHourFormat(sign, width))) {
+                    res = false;
+                    break;
+                }
+            }
+        }
+        return res;
+    }
+
+    /*
+     * Internal method. Returns null if the value of an array is empty, or if the
+     * index is out of bounds
+     */
+/*    private String getZoneArrayValue(String[] zs, int ix) {
+        if (ix >= 0 && ix < zs.length) {
+            String result = zs[ix];
+            if (result != null && result.length() != 0) {
+                return result;
+            }
+        }
+        return null;
+    }*/
+
+    /**
+     * Internal high-speed method.  Reuses a StringBuffer for results
+     * instead of creating a String on the heap for each call.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void zeroPaddingNumber(StringBuffer buf, int value,
+                                     int minDigits, int maxDigits) {
+        if (useLocalZeroPaddingNumberFormat) {
+            fastZeroPaddingNumber(buf, value, minDigits, maxDigits);
+        } else {
+            numberFormat.setMinimumIntegerDigits(minDigits);
+            numberFormat.setMaximumIntegerDigits(maxDigits);
+            numberFormat.format(value, buf, new FieldPosition(-1));
+        }
+    }
+
+    /**
+     * Overrides superclass method
+     * @stable ICU 2.0
+     */
+    public void setNumberFormat(NumberFormat newNumberFormat) {
+        // Override this method to update local zero padding number formatter
+        super.setNumberFormat(newNumberFormat);
+        initLocalZeroPaddingNumberFormat();
+    }
+
+    private void initLocalZeroPaddingNumberFormat() {
+        if (numberFormat instanceof DecimalFormat) {
+            zeroDigit = ((DecimalFormat)numberFormat).getDecimalFormatSymbols().getZeroDigit();
+            useLocalZeroPaddingNumberFormat = true;
+        } else if (numberFormat instanceof DateNumberFormat) {
+            zeroDigit = ((DateNumberFormat)numberFormat).getZeroDigit();
+            useLocalZeroPaddingNumberFormat = true;
+        } else {
+            useLocalZeroPaddingNumberFormat = false;
+        }
+
+        if (useLocalZeroPaddingNumberFormat) {
+            decimalBuf = new char[10];  // sufficient for int numbers
+        }
+    }
+
+    // If true, use local version of zero padding number format
+    private transient boolean useLocalZeroPaddingNumberFormat;
+    private transient char zeroDigit;
+    private transient char[] decimalBuf;
+
+    /*
+     * Lightweight zero padding integer number format function.
+     * 
+     * Note: This implementation is almost equivalent to format method in DateNumberFormat.
+     * In the method zeroPaddingNumber above should be able to use the one in DateNumberFormat,
+     * but, it does not help IBM J9's JIT to optimize the performance much.  In simple repeative
+     * date format test case, having local implementation is ~10% faster than using one in
+     * DateNumberFormat on IBM J9 VM.  On Sun Hotspot VM, I do not see such difference.
+     * 
+     * -Yoshito
+     */
+    private void fastZeroPaddingNumber(StringBuffer buf, int value, int minDigits, int maxDigits) {
+        int limit = decimalBuf.length < maxDigits ? decimalBuf.length : maxDigits;
+        int index = limit - 1;
+        while (true) {
+            decimalBuf[index] = (char)((value % 10) + zeroDigit);
+            value /= 10;
+            if (index == 0 || value == 0) {
+                break;
+            }
+            index--;
+        }
+        int padding = minDigits - (limit - index);
+        for (; padding > 0; padding--) {
+            decimalBuf[--index] = zeroDigit;
+        }
+        int length = limit - index;
+        buf.append(decimalBuf, index, length);        
+    }
+
+    /**
+     * Formats a number with the specified minimum and maximum number of digits.
+     * @stable ICU 2.0
+     */
+    protected String zeroPaddingNumber(long value, int minDigits, int maxDigits)
+    {
+        numberFormat.setMinimumIntegerDigits(minDigits);
+        numberFormat.setMaximumIntegerDigits(maxDigits);
+        return numberFormat.format(value);
+    }
+
+    /**
+     * Format characters that indicate numeric fields.  The character
+     * at index 0 is treated specially.
+     */
+    private static final String NUMERIC_FORMAT_CHARS = "MYyudehHmsSDFwWkK";
+
+    /**
+     * Return true if the given format character, occuring count
+     * times, represents a numeric field.
+     */
+    private static final boolean isNumeric(char formatChar, int count) {
+        int i = NUMERIC_FORMAT_CHARS.indexOf(formatChar);
+        return (i > 0 || (i == 0 && count < 3));
+    }
+
+    /**
+     * Overrides DateFormat
+     * @see DateFormat
+     * @stable ICU 2.0
+     */
+    public void parse(String text, Calendar cal, ParsePosition parsePos)
+    {
+        int pos = parsePos.getIndex();
+        int start = pos;
+
+        // Reset tztype
+        tztype = TZTYPE_UNK;
+        boolean[] ambiguousYear = { false };
+
+        // item index for the first numeric field within a contiguous numeric run
+        int numericFieldStart = -1;
+        // item length for the first numeric field within a contiguous numeric run
+        int numericFieldLength = 0;
+        // start index of numeric text run in the input text
+        int numericStartPos = 0;
+
+        Object[] items = getPatternItems();
+        int i = 0;
+        while (i < items.length) {
+            if (items[i] instanceof PatternItem) {
+                // Handle pattern field
+                PatternItem field = (PatternItem)items[i];
+                if (field.isNumeric) {
+                    // Handle fields within a run of abutting numeric fields.  Take
+                    // the pattern "HHmmss" as an example. We will try to parse
+                    // 2/2/2 characters of the input text, then if that fails,
+                    // 1/2/2.  We only adjust the width of the leftmost field; the
+                    // others remain fixed.  This allows "123456" => 12:34:56, but
+                    // "12345" => 1:23:45.  Likewise, for the pattern "yyyyMMdd" we
+                    // try 4/2/2, 3/2/2, 2/2/2, and finally 1/2/2.
+                    if (numericFieldStart == -1) {
+                        // check if this field is followed by abutting another numeric field
+                        if ((i + 1) < items.length 
+                                && (items[i + 1] instanceof PatternItem)
+                                && ((PatternItem)items[i + 1]).isNumeric) {
+                            // record the first numeric field within a numeric text run
+                            numericFieldStart = i;
+                            numericFieldLength = field.length;
+                            numericStartPos = pos; 
+                        }
+                    }
+                }
+                if (numericFieldStart != -1) {
+                    // Handle a numeric field within abutting numeric fields
+                    int len = field.length;
+                    if (numericFieldStart == i) {
+                        len = numericFieldLength;
+                    }
+
+                    // Parse a numeric field
+                    pos = subParse(text, pos, field.type, len,
+                            true, false, ambiguousYear, cal);
+
+                    if (pos < 0) {
+                        // If the parse fails anywhere in the numeric run, back up to the
+                        // start of the run and use shorter pattern length for the first
+                        // numeric field.
+                        --numericFieldLength;
+                        if (numericFieldLength == 0) {
+                            // can not make shorter any more
+                            parsePos.setIndex(start);
+                            parsePos.setErrorIndex(pos);
+                            return;
+                        }
+                        i = numericFieldStart;
+                        pos = numericStartPos;
+                        continue;
+                    }
+
+                } else {
+                    // Handle a non-numeric field or a non-abutting numeric field
+                    numericFieldStart = -1;
+
+                    int s = pos;
+                    pos = subParse(text, pos, field.type, field.length,
+                            false, true, ambiguousYear, cal);
+                    if (pos < 0) {
+                        parsePos.setIndex(start);
+                        parsePos.setErrorIndex(s);
+                        return;
+                    }
+                }
+            } else {
+                // Handle literal pattern text literal
+                numericFieldStart = -1;
+
+                String patl = (String)items[i];
+                int plen = patl.length();
+                int tlen = text.length();
+                int idx = 0;
+                while (idx < plen && pos < tlen) {
+                    char pch = patl.charAt(idx);
+                    char ich = text.charAt(pos);
+                    if (UCharacterProperty.isRuleWhiteSpace(pch) && UCharacterProperty.isRuleWhiteSpace(ich)) {
+                        // White space characters found in both patten and input.
+                        // Skip contiguous white spaces.
+                        while ((idx + 1) < plen &&
+                                UCharacterProperty.isRuleWhiteSpace(patl.charAt(idx + 1))) {
+                             ++idx;
+                        }
+                        while ((pos + 1) < tlen &&
+                                UCharacterProperty.isRuleWhiteSpace(text.charAt(pos + 1))) {
+                             ++pos;
+                        }
+                    } else if (pch != ich) {
+                        break;
+                    }
+                    ++idx;
+                    ++pos;
+                }
+                if (idx != plen) {
+                    // Set the position of mismatch
+                    parsePos.setIndex(start);
+                    parsePos.setErrorIndex(pos);
+                    return;
+                }
+            }
+            ++i;
+        }
+
+        // At this point the fields of Calendar have been set.  Calendar
+        // will fill in default values for missing fields when the time
+        // is computed.
+
+        parsePos.setIndex(pos);
+
+        // This part is a problem:  When we call parsedDate.after, we compute the time.
+        // Take the date April 3 2004 at 2:30 am.  When this is first set up, the year
+        // will be wrong if we're parsing a 2-digit year pattern.  It will be 1904.
+        // April 3 1904 is a Sunday (unlike 2004) so it is the DST onset day.  2:30 am
+        // is therefore an "impossible" time, since the time goes from 1:59 to 3:00 am
+        // on that day.  It is therefore parsed out to fields as 3:30 am.  Then we
+        // add 100 years, and get April 3 2004 at 3:30 am.  Note that April 3 2004 is
+        // a Saturday, so it can have a 2:30 am -- and it should. [LIU]
+        /*
+          Date parsedDate = cal.getTime();
+          if( ambiguousYear[0] && !parsedDate.after(getDefaultCenturyStart()) ) {
+          cal.add(Calendar.YEAR, 100);
+          parsedDate = cal.getTime();
+          }
+        */
+        // Because of the above condition, save off the fields in case we need to readjust.
+        // The procedure we use here is not particularly efficient, but there is no other
+        // way to do this given the API restrictions present in Calendar.  We minimize
+        // inefficiency by only performing this computation when it might apply, that is,
+        // when the two-digit year is equal to the start year, and thus might fall at the
+        // front or the back of the default century.  This only works because we adjust
+        // the year correctly to start with in other cases -- see subParse().
+        try {
+            if (ambiguousYear[0] || tztype != TZTYPE_UNK) {
+                // We need a copy of the fields, and we need to avoid triggering a call to
+                // complete(), which will recalculate the fields.  Since we can't access
+                // the fields[] array in Calendar, we clone the entire object.  This will
+                // stop working if Calendar.clone() is ever rewritten to call complete().
+                Calendar copy;
+                if (ambiguousYear[0]) { // the two-digit year == the default start year
+                    copy = (Calendar)cal.clone();
+                    Date parsedDate = copy.getTime();
+                    if (parsedDate.before(getDefaultCenturyStart())) {
+                        // We can't use add here because that does a complete() first.
+                        cal.set(Calendar.YEAR, getDefaultCenturyStartYear() + 100);
+                    }
+                }
+                if (tztype != TZTYPE_UNK) {
+                    copy = (Calendar)cal.clone();
+                    TimeZone tz = copy.getTimeZone();
+                    BasicTimeZone btz = null;
+                    if (tz instanceof BasicTimeZone) {
+                        btz = (BasicTimeZone)tz;
+                    }
+
+                    // Get local millis
+                    copy.set(Calendar.ZONE_OFFSET, 0);
+                    copy.set(Calendar.DST_OFFSET, 0);
+                    long localMillis = copy.getTimeInMillis();
+
+                    // Make sure parsed time zone type (Standard or Daylight)
+                    // matches the rule used by the parsed time zone.
+                    int[] offsets = new int[2];
+                    if (btz != null) {
+                        if (tztype == TZTYPE_STD) {
+                            btz.getOffsetFromLocal(localMillis,
+                                    BasicTimeZone.LOCAL_STD, BasicTimeZone.LOCAL_STD, offsets);
+                        } else {
+                            btz.getOffsetFromLocal(localMillis,
+                                    BasicTimeZone.LOCAL_DST, BasicTimeZone.LOCAL_DST, offsets);
+                        }
+                    } else {
+                        // No good way to resolve ambiguous time at transition,
+                        // but following code work in most case.
+                        tz.getOffset(localMillis, true, offsets);
+
+                        if (tztype == TZTYPE_STD && offsets[1] != 0 || tztype == TZTYPE_DST && offsets[1] == 0) {
+                            // Roll back one day and try it again.
+                            // Note: This code assumes 1. timezone transition only happens once within 24 hours at max
+                            // 2. the difference of local offsets at the transition is less than 24 hours.
+                            tz.getOffset(localMillis - (24*60*60*1000), true, offsets);
+                        }
+                    }
+
+                    // Now, compare the results with parsed type, either standard or daylight saving time
+                    int resolvedSavings = offsets[1];
+                    if (tztype == TZTYPE_STD) {
+                        if (offsets[1] != 0) {
+                            // Override DST_OFFSET = 0 in the result calendar
+                            resolvedSavings = 0;
+                        }
+                    } else { // tztype == TZTYPE_DST
+                        if (offsets[1] == 0) {
+                            if (btz != null) {
+                                long time = localMillis + offsets[0];
+                                // We use the nearest daylight saving time rule.
+                                TimeZoneTransition beforeTrs, afterTrs;
+                                long beforeT = time, afterT = time;
+                                int beforeSav = 0, afterSav = 0;
+
+                                // Search for DST rule before or on the time
+                                while (true) {
+                                    beforeTrs = btz.getPreviousTransition(beforeT, true);
+                                    if (beforeTrs == null) {
+                                        break;
+                                    }
+                                    beforeT = beforeTrs.getTime() - 1;
+                                    beforeSav = beforeTrs.getFrom().getDSTSavings();
+                                    if (beforeSav != 0) {
+                                        break;
+                                    }
+                                }
+
+                                // Search for DST rule after the time
+                                while (true) {
+                                    afterTrs = btz.getNextTransition(afterT, false);
+                                    if (afterTrs == null) {
+                                        break;
+                                    }
+                                    afterT = afterTrs.getTime();
+                                    afterSav = afterTrs.getTo().getDSTSavings();
+                                    if (afterSav != 0) {
+                                        break;
+                                    }
+                                }
+
+                                if (beforeTrs != null && afterTrs != null) {
+                                    if (time - beforeT > afterT - time) {
+                                        resolvedSavings = afterSav;
+                                    } else {
+                                        resolvedSavings = beforeSav;
+                                    }
+                                } else if (beforeTrs != null && beforeSav != 0) {
+                                    resolvedSavings = beforeSav;
+                                } else if (afterTrs != null && afterSav != 0) {
+                                    resolvedSavings = afterSav;
+                                } else {
+                                    resolvedSavings = btz.getDSTSavings();
+                                }
+                            } else {
+                                resolvedSavings = tz.getDSTSavings();
+                            }
+                            if (resolvedSavings == 0) {
+                                // Final fallback
+                                resolvedSavings = millisPerHour;
+                            }
+                        }
+                    }
+                    cal.set(Calendar.ZONE_OFFSET, offsets[0]);
+                    cal.set(Calendar.DST_OFFSET, resolvedSavings);
+                }
+            }
+        }
+        // An IllegalArgumentException will be thrown by Calendar.getTime()
+        // if any fields are out of range, e.g., MONTH == 17.
+        catch (IllegalArgumentException e) {
+            parsePos.setErrorIndex(pos);
+            parsePos.setIndex(start);
+        }
+    }
+
+    /**
+     * Attempt to match the text at a given position against an array of
+     * strings.  Since multiple strings in the array may match (for
+     * example, if the array contains "a", "ab", and "abc", all will match
+     * the input string "abcd") the longest match is returned.  As a side
+     * effect, the given field of <code>cal</code> is set to the index
+     * of the best match, if there is one.
+     * @param text the time text being parsed.
+     * @param start where to start parsing.
+     * @param field the date field being parsed.
+     * @param data the string array to parsed.
+     * @return the new start position if matching succeeded; a negative
+     * number indicating matching failure, otherwise.  As a side effect,
+     * sets the <code>cal</code> field <code>field</code> to the index
+     * of the best match, if matching succeeded.
+     * @stable ICU 2.0
+     */
+    protected int matchString(String text, int start, int field, String[] data, Calendar cal)
+    {
+        int i = 0;
+        int count = data.length;
+
+        if (field == Calendar.DAY_OF_WEEK) i = 1;
+
+        // There may be multiple strings in the data[] array which begin with
+        // the same prefix (e.g., Cerven and Cervenec (June and July) in Czech).
+        // We keep track of the longest match, and return that.  Note that this
+        // unfortunately requires us to test all array elements.
+        int bestMatchLength = 0, bestMatch = -1;
+        for (; i<count; ++i)
+            {
+                int length = data[i].length();
+                // Always compare if we have no match yet; otherwise only compare
+                // against potentially better matches (longer strings).
+                if (length > bestMatchLength &&
+                    text.regionMatches(true, start, data[i], 0, length))
+                    {
+                        bestMatch = i;
+                        bestMatchLength = length;
+                    }
+            }
+        if (bestMatch >= 0)
+            {
+                cal.set(field, bestMatch);
+                return start + bestMatchLength;
+            }
+        return -start;
+    }
+
+    /**
+     * Attempt to match the text at a given position against an array of quarter
+     * strings.  Since multiple strings in the array may match (for
+     * example, if the array contains "a", "ab", and "abc", all will match
+     * the input string "abcd") the longest match is returned.  As a side
+     * effect, the given field of <code>cal</code> is set to the index
+     * of the best match, if there is one.
+     * @param text the time text being parsed.
+     * @param start where to start parsing.
+     * @param field the date field being parsed.
+     * @param data the string array to parsed.
+     * @return the new start position if matching succeeded; a negative
+     * number indicating matching failure, otherwise.  As a side effect,
+     * sets the <code>cal</code> field <code>field</code> to the index
+     * of the best match, if matching succeeded.
+     * @stable ICU 2.0
+     */
+    protected int matchQuarterString(String text, int start, int field, String[] data, Calendar cal)
+    {
+        int i = 0;
+        int count = data.length;
+
+        // There may be multiple strings in the data[] array which begin with
+        // the same prefix (e.g., Cerven and Cervenec (June and July) in Czech).
+        // We keep track of the longest match, and return that.  Note that this
+        // unfortunately requires us to test all array elements.
+        int bestMatchLength = 0, bestMatch = -1;
+        for (; i<count; ++i) {
+            int length = data[i].length();
+            // Always compare if we have no match yet; otherwise only compare
+            // against potentially better matches (longer strings).
+            if (length > bestMatchLength &&
+                text.regionMatches(true, start, data[i], 0, length)) {
+                bestMatch = i;
+                bestMatchLength = length;
+            }
+        }
+        
+        if (bestMatch >= 0) {
+            cal.set(field, bestMatch * 3);
+            return start + bestMatchLength;
+        }
+        
+        return -start;
+    }
+    
+    /**
+     * Protected method that converts one field of the input string into a
+     * numeric field value in <code>cal</code>.  Returns -start (for
+     * ParsePosition) if failed.  Subclasses may override this method to
+     * modify or add parsing capabilities.
+     * @param text the time text to be parsed.
+     * @param start where to start parsing.
+     * @param ch the pattern character for the date field text to be parsed.
+     * @param count the count of a pattern character.
+     * @param obeyCount if true, then the next field directly abuts this one,
+     * and we should use the count to know when to stop parsing.
+     * @param ambiguousYear return parameter; upon return, if ambiguousYear[0]
+     * is true, then a two-digit year was parsed and may need to be readjusted.
+     * @return the new start position if matching succeeded; a negative
+     * number indicating matching failure, otherwise.  As a side effect,
+     * set the appropriate field of <code>cal</code> with the parsed
+     * value.
+     * @stable ICU 2.0
+     */
+    protected int subParse(String text, int start, char ch, int count,
+                           boolean obeyCount, boolean allowNegative,
+                           boolean[] ambiguousYear, Calendar cal)
+    {
+        Number number = null;
+        int value = 0;
+        int i;
+        ParsePosition pos = new ParsePosition(0);
+        //int patternCharIndex = DateFormatSymbols.patternChars.indexOf(ch);c
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_INDEX[(int)ch - PATTERN_CHAR_BASE];
+        }
+
+        if (patternCharIndex == -1) {
+            return -start;
+        }
+
+        int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+
+        // If there are any spaces here, skip over them.  If we hit the end
+        // of the string, then fail.
+        for (;;) {
+            if (start >= text.length()) {
+                return -start;
+            }
+            int c = UTF16.charAt(text, start);
+            if (!UCharacter.isUWhiteSpace(c)) {
+                break;
+            }
+            start += UTF16.getCharCount(c);
+        }
+        pos.setIndex(start);
+
+        // We handle a few special cases here where we need to parse
+        // a number value.  We handle further, more generic cases below.  We need
+        // to handle some of them here because some fields require extra processing on
+        // the parsed value.
+        if (patternCharIndex == 4 /*HOUR_OF_DAY1_FIELD*/ ||
+            patternCharIndex == 15 /*HOUR1_FIELD*/ ||
+            (patternCharIndex == 2 /*MONTH_FIELD*/ && count <= 2) ||
+            patternCharIndex == 1 ||
+            patternCharIndex == 8)
+            {
+                // It would be good to unify this with the obeyCount logic below,
+                // but that's going to be difficult.
+                if (obeyCount)
+                    {
+                        if ((start+count) > text.length()) return -start;
+                        number = parseInt(text, count, pos, allowNegative);
+                    }
+                else number = parseInt(text, pos, allowNegative);
+                if (number == null)
+                    return -start;
+                value = number.intValue();
+            }
+
+        switch (patternCharIndex)
+            {
+            case 0: // 'G' - ERA
+                if (count == 4) {
+                    return matchString(text, start, Calendar.ERA, formatData.eraNames, cal);
+                } else {
+                    return matchString(text, start, Calendar.ERA, formatData.eras, cal);
+                }
+            case 1: // 'y' - YEAR
+                // If there are 3 or more YEAR pattern characters, this indicates
+                // that the year value is to be treated literally, without any
+                // two-digit year adjustments (e.g., from "01" to 2001).  Otherwise
+                // we made adjustments to place the 2-digit year in the proper
+                // century, for parsed strings from "00" to "99".  Any other string
+                // is treated literally:  "2250", "-1", "1", "002".
+                /* 'yy' is the only special case, 'y' is interpreted as number. [Richard/GCL]*/
+                if (count == 2 && (pos.getIndex() - start) == 2
+                    && UCharacter.isDigit(text.charAt(start))
+                    && UCharacter.isDigit(text.charAt(start+1)))
+                    {
+                        // Assume for example that the defaultCenturyStart is 6/18/1903.
+                        // This means that two-digit years will be forced into the range
+                        // 6/18/1903 to 6/17/2003.  As a result, years 00, 01, and 02
+                        // correspond to 2000, 2001, and 2002.  Years 04, 05, etc. correspond
+                        // to 1904, 1905, etc.  If the year is 03, then it is 2003 if the
+                        // other fields specify a date before 6/18, or 1903 if they specify a
+                        // date afterwards.  As a result, 03 is an ambiguous year.  All other
+                        // two-digit years are unambiguous.
+                        int ambiguousTwoDigitYear = getDefaultCenturyStartYear() % 100;
+                        ambiguousYear[0] = value == ambiguousTwoDigitYear;
+                        value += (getDefaultCenturyStartYear()/100)*100 +
+                            (value < ambiguousTwoDigitYear ? 100 : 0);
+                    }
+                cal.set(Calendar.YEAR, value);
+                return pos.getIndex();
+            case 2: // 'M' - MONTH
+                if (count <= 2) // i.e., M or MM.
+                    {
+                        // Don't want to parse the month if it is a string
+                        // while pattern uses numeric style: M or MM.
+                        // [We computed 'value' above.]
+                        cal.set(Calendar.MONTH, value - 1);
+                        return pos.getIndex();
+                    }
+                else
+                    {
+                        // count >= 3 // i.e., MMM or MMMM
+                        // Want to be able to parse both short and long forms.
+                        // Try count == 4 first:
+                        int newStart = matchString(text, start, Calendar.MONTH,
+                                                   formatData.months, cal);
+                        if (newStart > 0) {
+                            return newStart;
+                        } else { // count == 4 failed, now try count == 3
+                            return matchString(text, start, Calendar.MONTH,
+                                               formatData.shortMonths, cal);
+                        }
+                    }
+            case 26: // 'L' - STAND_ALONE_MONTH
+                if (count <= 2) // i.e., M or MM.
+                    {
+                        // Don't want to parse the month if it is a string
+                        // while pattern uses numeric style: M or MM.
+                        // [We computed 'value' above.]
+                        cal.set(Calendar.MONTH, value - 1);
+                        return pos.getIndex();
+                    }
+                else
+                    {
+                        // count >= 3 // i.e., MMM or MMMM
+                        // Want to be able to parse both short and long forms.
+                        // Try count == 4 first:
+                        int newStart = matchString(text, start, Calendar.MONTH,
+                                                   formatData.standaloneMonths, cal);
+                        if (newStart > 0) {
+                            return newStart;
+                        } else { // count == 4 failed, now try count == 3
+                            return matchString(text, start, Calendar.MONTH,
+                                               formatData.standaloneShortMonths, cal);
+                        }
+                    }
+            case 4: // 'k' - HOUR_OF_DAY (1..24)
+                // [We computed 'value' above.]
+                if (value == cal.getMaximum(Calendar.HOUR_OF_DAY)+1) value = 0;
+                cal.set(Calendar.HOUR_OF_DAY, value);
+                return pos.getIndex();
+            case 8: // 'S' - FRACTIONAL_SECOND
+                // Fractional seconds left-justify
+                i = pos.getIndex() - start;
+                if (i < 3) {
+                    while (i < 3) {
+                        value *= 10;
+                        i++;
+                    }
+                } else {
+                    int a = 1;
+                    while (i > 3) {
+                        a *= 10;
+                        i--;
+                    }
+                    value = (value + (a>>1)) / a;
+                }
+                cal.set(Calendar.MILLISECOND, value);
+                return pos.getIndex();
+            case 9: { // 'E' - DAY_OF_WEEK
+                // Want to be able to parse both short and long forms.
+                // Try count == 4 (EEEE) first:
+                int newStart = matchString(text, start, Calendar.DAY_OF_WEEK,
+                                           formatData.weekdays, cal);
+                if (newStart > 0) {
+                    return newStart;
+                } else { // EEEE failed, now try EEE
+                    return matchString(text, start, Calendar.DAY_OF_WEEK,
+                                       formatData.shortWeekdays, cal);
+                }
+            }
+            case 25: { // 'c' - STAND_ALONE_DAY_OF_WEEK
+                // Want to be able to parse both short and long forms.
+                // Try count == 4 (cccc) first:
+                int newStart = matchString(text, start, Calendar.DAY_OF_WEEK,
+                                           formatData.standaloneWeekdays, cal);
+                if (newStart > 0) {
+                    return newStart;
+                } else { // cccc failed, now try ccc
+                    return matchString(text, start, Calendar.DAY_OF_WEEK,
+                                       formatData.standaloneShortWeekdays, cal);
+                }
+            }
+            case 14: // 'a' - AM_PM
+                return matchString(text, start, Calendar.AM_PM, formatData.ampms, cal);
+            case 15: // 'h' - HOUR (1..12)
+                // [We computed 'value' above.]
+                if (value == cal.getLeastMaximum(Calendar.HOUR)+1) value = 0;
+                cal.set(Calendar.HOUR, value);
+                return pos.getIndex();
+            case 17: // 'z' - ZONE_OFFSET
+            case 23: // 'Z' - TIMEZONE_RFC
+            case 24: // 'v' - TIMEZONE_GENERIC
+            case 29: // 'V' - TIMEZONE_SPECIAL
+                {
+                    TimeZone tz = null;
+                    int offset = 0;
+                    boolean parsed = false;
+
+                    // Step 1
+                    // Check if this is a long GMT offset string (either localized or default)
+                    Integer gmtoff = parseGMT(text, pos);
+                    if (gmtoff != null) {
+                        offset = gmtoff.intValue();
+                        parsed = true;
+                    }
+
+                    if (!parsed) {
+                        // Step 2
+                        // Check if this is an RFC822 time zone offset.
+                        // ICU supports the standard RFC822 format [+|-]HHmm
+                        // and its extended form [+|-]HHmmSS.
+                        
+                        do {
+                            int sign = 0;
+                            char signChar = text.charAt(start);
+                            if (signChar == '+') {
+                                sign = 1;
+                            } else if (signChar == '-') {
+                                sign = -1;
+                            } else {
+                                // Not an RFC822 offset string
+                                break;
+                            }
+
+                            // Parse digits
+                            int orgPos = start + 1;
+                            pos.setIndex(orgPos);
+                            number = parseInt(text, 6, pos, false);
+                            int numLen = pos.getIndex() - orgPos;
+                            if (numLen <= 0) {
+                                break;
+                            }
+
+                            // Followings are possible format (excluding sign char)
+                            // HHmmSS
+                            // HmmSS
+                            // HHmm
+                            // Hmm
+                            // HH
+                            // H
+                            int val = number.intValue();
+                            int hour = 0, min = 0, sec = 0;
+                            switch(numLen) {
+                            case 1: // H
+                            case 2: // HH
+                                hour = val;
+                                break;
+                            case 3: // Hmm
+                            case 4: // HHmm
+                                hour = val / 100;
+                                min = val % 100;
+                                break;
+                            case 5: // Hmmss
+                            case 6: // HHmmss
+                                hour = val / 10000;
+                                min = (val % 10000) / 100;
+                                sec = val % 100;
+                                break;
+                            }
+                            if (hour > 23 || min > 59 || sec > 59) {
+                                // Invalid value range
+                                break;
+                            }
+                            offset = (((hour * 60) + min) * 60 + sec) * 1000 * sign;
+                            parsed = true;
+                        } while (false);
+
+                        if (!parsed) {
+                            // Failed to parse.  Reset the position.
+                            pos.setIndex(start);
+                        }
+                    }
+
+                    if (parsed) {
+                        // offset was successfully parsed as either a long GMT string or RFC822 zone offset
+                        // string.  Create normalized zone ID for the offset.
+                        tz = ZoneMeta.getCustomTimeZone(offset);
+                        cal.setTimeZone(tz);
+                        return pos.getIndex();
+                    }
+
+                    // Step 3
+                    // At this point, check for named time zones by looking through
+                    // the locale data from the DateFormatZoneData strings.
+                    // Want to be able to parse both short and long forms.
+                    // optimize for calendar's current time zone
+                    ZoneStringInfo zsinfo = null;
+                    switch (patternCharIndex) {
+                    case 17: // 'z' - ZONE_OFFSET
+                        if (count < 4) {
+                            zsinfo = formatData.getZoneStringFormat().findSpecificShort(text, start);
+                        } else {
+                            zsinfo = formatData.getZoneStringFormat().findSpecificLong(text, start);
+                        }
+                        break;
+                    case 24: // 'v' - TIMEZONE_GENERIC
+                        if (count == 1) {
+                            zsinfo = formatData.getZoneStringFormat().findGenericShort(text, start);
+                        } else if (count == 4) {
+                            zsinfo = formatData.getZoneStringFormat().findGenericLong(text, start);
+                        }
+                        break;
+                    case 29: // 'V' - TIMEZONE_SPECIAL
+                        if (count == 1) {
+                            zsinfo = formatData.getZoneStringFormat().findSpecificShort(text, start);
+                        } else if (count == 4) {
+                            zsinfo = formatData.getZoneStringFormat().findGenericLocation(text, start);
+                        }
+                        break;
+                    }
+                    if (zsinfo != null) {
+                        if (zsinfo.isStandard()) {
+                            tztype = TZTYPE_STD;
+                        } else if (zsinfo.isDaylight()) {
+                            tztype = TZTYPE_DST;
+                        }
+                        tz = TimeZone.getTimeZone(zsinfo.getID());
+                        cal.setTimeZone(tz);
+                        return start + zsinfo.getString().length();
+                    }
+                    // complete failure
+                    return -start;
+                }
+
+            case 27: // 'Q' - QUARTER
+                if (count <= 2) // i.e., Q or QQ.
+                {
+                    // Don't want to parse the quarter if it is a string
+                    // while pattern uses numeric style: Q or QQ.
+                    // [We computed 'value' above.]
+                    cal.set(Calendar.MONTH, (value - 1) * 3);
+                    return pos.getIndex();
+                }
+            else
+                {
+                    // count >= 3 // i.e., QQQ or QQQQ
+                    // Want to be able to parse both short and long forms.
+                    // Try count == 4 first:
+                    int newStart = matchQuarterString(text, start, Calendar.MONTH,
+                                               formatData.quarters, cal);
+                    if (newStart > 0) {
+                        return newStart;
+                    } else { // count == 4 failed, now try count == 3
+                        return matchQuarterString(text, start, Calendar.MONTH,
+                                           formatData.shortQuarters, cal);
+                    }
+                }
+                
+            case 28: // 'q' - STANDALONE QUARTER
+                if (count <= 2) // i.e., q or qq.
+                {
+                    // Don't want to parse the quarter if it is a string
+                    // while pattern uses numeric style: q or qq.
+                    // [We computed 'value' above.]
+                    cal.set(Calendar.MONTH, (value - 1) * 3);
+                    return pos.getIndex();
+                }
+            else
+                {
+                    // count >= 3 // i.e., qqq or qqqq
+                    // Want to be able to parse both short and long forms.
+                    // Try count == 4 first:
+                    int newStart = matchQuarterString(text, start, Calendar.MONTH,
+                                               formatData.standaloneQuarters, cal);
+                    if (newStart > 0) {
+                        return newStart;
+                    } else { // count == 4 failed, now try count == 3
+                        return matchQuarterString(text, start, Calendar.MONTH,
+                                           formatData.standaloneShortQuarters, cal);
+                    }
+                }
+
+            default:
+                // case 3: // 'd' - DATE
+                // case 5: // 'H' - HOUR_OF_DAY (0..23)
+                // case 6: // 'm' - MINUTE
+                // case 7: // 's' - SECOND
+                // case 10: // 'D' - DAY_OF_YEAR
+                // case 11: // 'F' - DAY_OF_WEEK_IN_MONTH
+                // case 12: // 'w' - WEEK_OF_YEAR
+                // case 13: // 'W' - WEEK_OF_MONTH
+                // case 16: // 'K' - HOUR (0..11)
+                // case 18: // 'Y' - YEAR_WOY
+                // case 19: // 'e' - DOW_LOCAL
+                // case 20: // 'u' - EXTENDED_YEAR
+                // case 21: // 'g' - JULIAN_DAY
+                // case 22: // 'A' - MILLISECONDS_IN_DAY
+
+                // Handle "generic" fields
+                if (obeyCount)
+                    {
+                        if ((start+count) > text.length()) return -start;
+                        number = parseInt(text, count, pos, allowNegative);
+                    }
+                else number = parseInt(text, pos, allowNegative);
+                if (number != null) {
+                    cal.set(field, number.intValue());
+                    return pos.getIndex();
+                }
+                return -start;
+            }
+    }
+
+    /**
+     * Parse an integer using numberFormat.  This method is semantically
+     * const, but actually may modify fNumberFormat.
+     */
+    private Number parseInt(String text,
+                            ParsePosition pos,
+                            boolean allowNegative) {
+        return parseInt(text, -1, pos, allowNegative);
+    }
+    
+    /**
+     * Parse an integer using numberFormat up to maxDigits.
+     */
+    private Number parseInt(String text,
+                            int maxDigits,
+                            ParsePosition pos,
+                            boolean allowNegative) {
+        Number number;
+        int oldPos = pos.getIndex();
+        if (allowNegative) {
+            number = numberFormat.parse(text, pos);
+        } else {
+            // Invalidate negative numbers
+            if (numberFormat instanceof DecimalFormat) {
+                String oldPrefix = ((DecimalFormat)numberFormat).getNegativePrefix();
+                ((DecimalFormat)numberFormat).setNegativePrefix(SUPPRESS_NEGATIVE_PREFIX);
+                number = numberFormat.parse(text, pos);
+                ((DecimalFormat)numberFormat).setNegativePrefix(oldPrefix);
+            } else {
+                boolean dateNumberFormat = (numberFormat instanceof DateNumberFormat);
+                if (dateNumberFormat) {
+                    ((DateNumberFormat)numberFormat).setParsePositiveOnly(true);
+                }
+                number = numberFormat.parse(text, pos);                
+                if (dateNumberFormat) {
+                    ((DateNumberFormat)numberFormat).setParsePositiveOnly(false);
+                }
+            }
+        }
+        if (maxDigits > 0) {
+            // adjust the result to fit into
+            // the maxDigits and move the position back
+            int nDigits = pos.getIndex() - oldPos;
+            if (nDigits > maxDigits) {
+                double val = number.doubleValue();
+                nDigits -= maxDigits;
+                while (nDigits > 0) {
+                    val /= 10;
+                    nDigits--;
+                }
+                pos.setIndex(oldPos + maxDigits);
+                number = new Integer((int)val);
+            }
+        }
+        return number;
+    }
+
+    
+    /**
+     * Translate a pattern, mapping each character in the from string to the
+     * corresponding character in the to string.
+     */
+    private String translatePattern(String pat, String from, String to) {
+        StringBuffer result = new StringBuffer();
+        boolean inQuote = false;
+        for (int i = 0; i < pat.length(); ++i) {
+            char c = pat.charAt(i);
+            if (inQuote) {
+                if (c == '\'')
+                    inQuote = false;
+            }
+            else {
+                if (c == '\'')
+                    inQuote = true;
+                else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+                    int ci = from.indexOf(c);
+                    if (ci != -1) {
+                        c = to.charAt(ci);
+                    }
+                    // do not worry on translatepattern if the character is not listed
+                    // we do the validity check elsewhere
+                }
+            }
+            result.append(c);
+        }
+        if (inQuote)
+            throw new IllegalArgumentException("Unfinished quote in pattern");
+        return result.toString();
+    }
+
+    /**
+     * Return a pattern string describing this date format.
+     * @stable ICU 2.0
+     */
+    public String toPattern() {
+        return pattern;
+    }
+
+    /**
+     * Return a localized pattern string describing this date format.
+     * @stable ICU 2.0
+     */
+    public String toLocalizedPattern() {
+        return translatePattern(pattern,
+                                DateFormatSymbols.patternChars,
+                                formatData.localPatternChars);
+    }
+
+    /**
+     * Apply the given unlocalized pattern string to this date format.
+     * @stable ICU 2.0
+     */
+    public void applyPattern(String pat)
+    {
+        this.pattern = pat;
+        setLocale(null, null);
+        // reset parsed pattern items
+        patternItems = null;
+    }
+
+    /**
+     * Apply the given localized pattern string to this date format.
+     * @stable ICU 2.0
+     */
+    public void applyLocalizedPattern(String pat) {
+        this.pattern = translatePattern(pat,
+                                        formatData.localPatternChars,
+                                        DateFormatSymbols.patternChars);
+        setLocale(null, null);
+    }
+
+    /**
+     * Gets the date/time formatting data.
+     * @return a copy of the date-time formatting data associated
+     * with this date-time formatter.
+     * @stable ICU 2.0
+     */
+    public DateFormatSymbols getDateFormatSymbols()
+    {
+        return (DateFormatSymbols)formatData.clone();
+    }
+
+    /**
+     * Allows you to set the date/time formatting data.
+     * @param newFormatSymbols the new symbols
+     * @stable ICU 2.0
+     */
+    public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
+    {
+        this.formatData = (DateFormatSymbols)newFormatSymbols.clone();
+        gmtfmtCache = null;
+    }
+
+    /**
+     * Method for subclasses to access the DateFormatSymbols.
+     * @stable ICU 2.0
+     */
+    protected DateFormatSymbols getSymbols() {
+        return formatData;
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        SimpleDateFormat other = (SimpleDateFormat) super.clone();
+        other.formatData = (DateFormatSymbols) formatData.clone();
+        return other;
+    }
+
+    /**
+     * Override hashCode.
+     * Generates the hash code for the SimpleDateFormat object
+     * @stable ICU 2.0
+     */
+    public int hashCode()
+    {
+        return pattern.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Override equals.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj)
+    {
+        if (!super.equals(obj)) return false; // super does class check
+        SimpleDateFormat that = (SimpleDateFormat) obj;
+        return (pattern.equals(that.pattern)
+                && formatData.equals(that.formatData));
+    }
+
+    /**
+     * Override writeObject.
+     */
+    private void writeObject(ObjectOutputStream stream) throws IOException{
+        if (defaultCenturyStart == null) {
+            // if defaultCenturyStart is not yet initialized,
+            // calculate and set value before serialization.
+            initializeDefaultCenturyStart(defaultCenturyBase);
+        }
+        stream.defaultWriteObject();
+    }
+    
+    /**
+     * Override readObject.
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        ///CLOVER:OFF
+        // don't have old serial data to test with
+        if (serialVersionOnStream < 1) {
+            // didn't have defaultCenturyStart field
+            defaultCenturyBase = System.currentTimeMillis();
+        }
+        ///CLOVER:ON
+        else {
+            // fill in dependent transient field
+            parseAmbiguousDatesAsAfter(defaultCenturyStart);
+        }
+        serialVersionOnStream = currentSerialVersion;
+        locale = getLocale(ULocale.VALID_LOCALE);
+
+        initLocalZeroPaddingNumberFormat();
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Format the object to an attributed string, and return the corresponding iterator
+     * Overrides superclass method.
+     * 
+     * @param obj The object to format
+     * @return <code>AttributedCharacterIterator</code> describing the formatted value.
+     * 
+     * @stable ICU 3.8
+     */
+    public AttributedCharacterIterator formatToCharacterIterator(Object obj) {
+        Calendar cal = calendar;
+        if (obj instanceof Calendar) {
+            cal = (Calendar)obj;
+        } else if (obj instanceof Date) {
+            calendar.setTime((Date)obj);
+        } else if (obj instanceof Number) {
+            calendar.setTimeInMillis(((Number)obj).longValue());
+        } else { 
+            throw new IllegalArgumentException("Cannot format given Object as a Date");
+        }
+        StringBuffer toAppendTo = new StringBuffer();
+        FieldPosition pos = new FieldPosition(0);
+        List attributes = new LinkedList();
+        format(cal, toAppendTo, pos, attributes);
+
+        AttributedString as = new AttributedString(toAppendTo.toString());
+        
+        // add DateFormat field attributes to the AttributedString
+        for (int i = 0; i < attributes.size(); i++) {
+            FieldPosition fp = (FieldPosition) attributes.get(i);
+            Format.Field attribute = fp.getFieldAttribute();
+            as.addAttribute(attribute, attribute, fp.getBeginIndex(), fp.getEndIndex());
+        }
+        // return the CharacterIterator from AttributedString
+        return as.getIterator();
+    }
+//#endif
+
+
+    /**
+     * Get the locale of this simple date formatter.
+     * It is package accessible. also used in DateIntervalFormat.
+     *
+     * @return   locale in this simple date formatter
+     */
+    ULocale getLocale() 
+    {
+        return locale;
+    }
+
+
+    
+    /**
+     * Check whether the 'field' is smaller than all the fields covered in
+     * pattern, return true if it is.
+     * The sequence of calendar field,
+     * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
+     * @param field    the calendar field need to check against
+     * @return         true if the 'field' is smaller than all the fields 
+     *                 covered in pattern. false otherwise.
+     */
+
+    boolean isFieldUnitIgnored(int field) {
+        return isFieldUnitIgnored(pattern, field);
+    }
+
+
+    /*
+     * Check whether the 'field' is smaller than all the fields covered in
+     * pattern, return true if it is.
+     * The sequence of calendar field,
+     * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,...
+     * @param pattern  the pattern to check against
+     * @param field    the calendar field need to check against
+     * @return         true if the 'field' is smaller than all the fields 
+     *                 covered in pattern. false otherwise.
+     * @internal ICU 4.0
+     */
+    static boolean isFieldUnitIgnored(String pattern, int field) {
+        int fieldLevel = CALENDAR_FIELD_TO_LEVEL[field];
+        int level;
+        char ch;
+        boolean inQuote = false;
+        char prevCh = 0;
+        int count = 0;
+    
+        for (int i = 0; i < pattern.length(); ++i) {
+            ch = pattern.charAt(i);
+            if (ch != prevCh && count > 0) {
+                level = PATTERN_CHAR_TO_LEVEL[prevCh - PATTERN_CHAR_BASE];
+                if ( fieldLevel <= level ) {
+                    return false;
+                }
+                count = 0;
+            }
+            if (ch == '\'') {
+                if ((i+1) < pattern.length() && pattern.charAt(i+1) == '\'') {
+                    ++i;
+                } else {
+                    inQuote = ! inQuote;
+                }
+            } 
+            else if ( ! inQuote && ((ch >= 0x0061 /*'a'*/ && ch <= 0x007A /*'z'*/) 
+                        || (ch >= 0x0041 /*'A'*/ && ch <= 0x005A /*'Z'*/))) {
+                prevCh = ch;
+                ++count;
+            }
+        }
+        if ( count > 0 ) {
+            // last item
+            level = PATTERN_CHAR_TO_LEVEL[prevCh - PATTERN_CHAR_BASE];
+                if ( fieldLevel <= level ) {
+                    return false;
+                }
+        }
+        return true;
+    }
+
+
+    /**
+     * Format date interval by algorithm. 
+     * It is supposed to be used only by CLDR survey tool.
+     *
+     * @param fromCalendar      calendar set to the from date in date interval
+     *                          to be formatted into date interval stirng
+     * @param toCalendar        calendar set to the to date in date interval
+     *                          to be formatted into date interval stirng
+     * @param appendTo          Output parameter to receive result.
+     *                          Result is appended to existing contents.
+     * @param pos               On input: an alignment field, if desired.
+     *                          On output: the offsets of the alignment field.
+     * @exception IllegalArgumentException when there is non-recognized
+     *                                     pattern letter
+     * @return                  Reference to 'appendTo' parameter.
+     * @internal ICU 4.0
+     */
+    public final StringBuffer intervalFormatByAlgorithm(Calendar fromCalendar,
+                                                        Calendar toCalendar,
+                                                        StringBuffer appendTo,
+                                                        FieldPosition pos)
+                              throws IllegalArgumentException
+    {
+        // not support different calendar types and time zones
+        if ( !fromCalendar.isEquivalentTo(toCalendar) ) {
+            throw new IllegalArgumentException("can not format on two different calendars");
+        }
+     
+        Object[] items = getPatternItems();
+        int diffBegin = -1;
+        int diffEnd = -1;
+
+        /* look for different formatting string range */
+        // look for start of difference
+        try {
+            for (int i = 0; i < items.length; i++) {
+                if ( diffCalFieldValue(fromCalendar, toCalendar, items, i) ) {
+                    diffBegin = i;
+                    break;
+                }
+            } 
+        
+            if ( diffBegin == -1 ) { 
+                // no difference, single date format
+                return format(fromCalendar, appendTo, pos);
+            }
+    
+            // look for end of difference
+            for (int i = items.length-1; i >= diffBegin; i--) {
+                if ( diffCalFieldValue(fromCalendar, toCalendar, items, i) ) {
+                    diffEnd = i;
+                    break;
+                }
+            }
+        } catch ( IllegalArgumentException e ) {
+            throw new IllegalArgumentException(e.toString());
+        }
+
+        // full range is different
+        if ( diffBegin == 0 && diffEnd == items.length-1 ) {
+            format(fromCalendar, appendTo, pos);
+            appendTo.append(" \u2013 "); // default separator
+            format(toCalendar, appendTo, pos);
+            return appendTo;
+        }
+
+
+        /* search for largest calendar field within the different range */
+        int highestLevel = 1000;
+        for (int i = diffBegin; i <= diffEnd; i++) {
+            if ( items[i] instanceof String) {
+                continue;
+            } 
+            PatternItem item = (PatternItem)items[i];
+            char ch = item.type; 
+            int patternCharIndex = -1;
+            if ('A' <= ch && ch <= 'z') {
+                patternCharIndex = PATTERN_CHAR_TO_LEVEL[(int)ch - PATTERN_CHAR_BASE];
+            }
+    
+            if (patternCharIndex == -1) {
+                throw new IllegalArgumentException("Illegal pattern character " +
+                                                   "'" + ch + "' in \"" +
+                                                   new String(pattern) + '"');
+            }
+    
+            if ( patternCharIndex < highestLevel ) {
+                highestLevel = patternCharIndex;
+            }
+        }
+
+        /* re-calculate diff range, including those calendar field which
+           is in lower level than the largest calendar field covered
+           in diff range calculated. */
+        try {
+            for (int i = 0; i < diffBegin; i++) {
+                if ( lowerLevel(items, i, highestLevel) ) {
+                    diffBegin = i;
+                    break;
+                }
+            }
+    
+    
+            for (int i = items.length-1; i > diffEnd; i--) {
+                if ( lowerLevel(items, i, highestLevel) ) {
+                    diffEnd = i;
+                    break;
+                }
+            }
+        } catch ( IllegalArgumentException e ) {
+            throw new IllegalArgumentException(e.toString());
+        }
+
+
+        // full range is different
+        if ( diffBegin == 0 && diffEnd == items.length-1 ) {
+            format(fromCalendar, appendTo, pos);
+            appendTo.append(" \u2013 "); // default separator
+            format(toCalendar, appendTo, pos);
+            return appendTo;
+        }
+
+
+        // formatting
+        // Initialize
+        pos.setBeginIndex(0);
+        pos.setEndIndex(0);
+
+        // formatting date 1
+        for (int i = 0; i <= diffEnd; i++) {
+            if (items[i] instanceof String) {
+                appendTo.append((String)items[i]);
+            } else {
+                PatternItem item = (PatternItem)items[i];
+                if (useFastFormat) {
+                    subFormat(appendTo, item.type, item.length, appendTo.length(), pos, fromCalendar);
+                } else {
+                    appendTo.append(subFormat(item.type, item.length, appendTo.length(), pos, formatData, fromCalendar));
+                }
+            }
+        }
+
+        appendTo.append(" \u2013 "); // default separator
+
+        // formatting date 2
+        for (int i = diffBegin; i < items.length; i++) {
+            if (items[i] instanceof String) {
+                appendTo.append((String)items[i]);
+            } else {
+                PatternItem item = (PatternItem)items[i];
+                if (useFastFormat) {
+                    subFormat(appendTo, item.type, item.length, appendTo.length(), pos, toCalendar);
+                } else {
+                    appendTo.append(subFormat(item.type, item.length, appendTo.length(), pos, formatData, toCalendar));
+                }
+            }
+        }
+        return appendTo;
+    }
+
+
+    /**
+     * check whether the i-th item in 2 calendar is in different value.
+     *
+     * It is supposed to be used only by CLDR survey tool.
+     * It is used by intervalFormatByAlgorithm().
+     *
+     * @param fromCalendar   one calendar
+     * @param toCalendar     the other calendar
+     * @param items          pattern items
+     * @param i              the i-th item in pattern items
+     * @exception IllegalArgumentException when there is non-recognized
+     *                                     pattern letter
+     * @return               true is i-th item in 2 calendar is in different 
+     *                       value, false otherwise.
+     */
+    private boolean diffCalFieldValue(Calendar fromCalendar,
+                                      Calendar toCalendar,
+                                      Object[] items,
+                                      int i) throws IllegalArgumentException {
+        if ( items[i] instanceof String) {
+            return false;
+        } 
+        PatternItem item = (PatternItem)items[i];
+        char ch = item.type; 
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_INDEX[(int)ch - PATTERN_CHAR_BASE];
+        }
+   
+        if (patternCharIndex == -1) {
+            throw new IllegalArgumentException("Illegal pattern character " +
+                                               "'" + ch + "' in \"" +
+                                               new String(pattern) + '"');
+        }
+  
+        final int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+        int value = fromCalendar.get(field);
+        int value_2 = toCalendar.get(field);
+        if ( value != value_2 ) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * check whether the i-th item's level is lower than the input 'level'
+     *
+     * It is supposed to be used only by CLDR survey tool.
+     * It is used by intervalFormatByAlgorithm().
+     *
+     * @param items  the pattern items
+     * @param i      the i-th item in pattern items
+     * @param level  the level with which the i-th pattern item compared to
+     * @exception IllegalArgumentException when there is non-recognized
+     *                                     pattern letter
+     * @return       true if i-th pattern item is lower than 'level',
+     *               false otherwise
+     */
+    private boolean lowerLevel(Object[] items, int i, int level) 
+                    throws IllegalArgumentException {
+        if ( items[i] instanceof String) {
+            return false;
+        } 
+        PatternItem item = (PatternItem)items[i];
+        char ch = item.type; 
+        int patternCharIndex = -1;
+        if ('A' <= ch && ch <= 'z') {
+            patternCharIndex = PATTERN_CHAR_TO_LEVEL[(int)ch - PATTERN_CHAR_BASE];
+        }
+    
+        if (patternCharIndex == -1) {
+            throw new IllegalArgumentException("Illegal pattern character " +
+                                               "'" + ch + "' in \"" +
+                                               new String(pattern) + '"');
+        }
+    
+        if ( patternCharIndex >= level ) {
+            return true;
+        }    
+        return false;
+    }
+}
diff --git a/src/com/ibm/icu/text/StringCharacterIterator.java b/src/com/ibm/icu/text/StringCharacterIterator.java
new file mode 100644
index 0000000..00fa60f
--- /dev/null
+++ b/src/com/ibm/icu/text/StringCharacterIterator.java
@@ -0,0 +1,281 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+// NOTE:  This class is identical to java.text.StringCharacterIterator
+// in JDK 1.2.  It's copied here because the JDK 1.1 version of
+// StringCharacterIterator has a bug that prevents it from working
+// right with RuleBasedBreakIterator.  This class is unnecessary
+// when using RuleBasedBreakIterator with JDK 1.2.
+
+package com.ibm.icu.text;
+import java.text.CharacterIterator;
+
+/**
+ * <code>StringCharacterIterator</code> implements the
+ * <code>CharacterIterater</code> protocol for a <code>String</code>.
+ * The <code>StringCharacterIterator</code> class iterates over the
+ * entire <code>String</code>.
+ *
+ * @see CharacterIterator
+ * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+ */
+///CLOVER:OFF
+public final class StringCharacterIterator implements CharacterIterator
+{
+    private String text;
+    private int begin;
+    private int end;
+    // invariant: begin <= pos <= end
+    private int pos;
+
+    /**
+     * Constructs an iterator with an initial index of 0.
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public StringCharacterIterator(String text)
+    {
+        this(text, 0);
+    }
+
+    /**
+     * Constructs an iterator with the specified initial index.
+     *
+     * @param  text   The String to be iterated over
+     * @param  pos    Initial iterator position     
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public StringCharacterIterator(String text, int pos)
+    {
+    this(text, 0, text.length(), pos);
+    }
+
+    /**
+     * Constructs an iterator over the given range of the given string, with the
+     * index set at the specified position.
+     *
+     * @param  text   The String to be iterated over
+     * @param  begin  Index of the first character
+     * @param  end    Index of the character following the last character
+     * @param  pos    Initial iterator position 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public StringCharacterIterator(String text, int begin, int end, int pos) {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        this.text = text;
+
+        if (begin < 0 || begin > end || end > text.length()) {
+            throw new IllegalArgumentException("Invalid substring range");
+        }
+
+        if (pos < begin || pos > end) {
+            throw new IllegalArgumentException("Invalid position");
+        }
+
+        this.begin = begin;
+        this.end = end;
+        this.pos = pos;
+    }
+
+    /**
+     * Reset this iterator to point to a new string.  This package-visible
+     * method is used by other java.text classes that want to avoid allocating
+     * new StringCharacterIterator objects every time their setText method
+     * is called.
+     *
+     * @param  text   The String to be iterated over 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public void setText(String text) {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        this.text = text;
+        this.begin = 0;
+        this.end = text.length();
+        this.pos = 0;
+    }
+
+    /**
+     * Implements CharacterIterator.first() for String.
+     * @see CharacterIterator#first 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char first()
+    {
+        pos = begin;
+        return current();
+    }
+
+    /**
+     * Implements CharacterIterator.last() for String.
+     * @see CharacterIterator#last 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char last()
+    {
+        if (end != begin) {
+            pos = end - 1;
+        } else {
+            pos = end;
+        }
+        return current();
+     }
+
+    /**
+     * Implements CharacterIterator.setIndex() for String.
+     * @see CharacterIterator#setIndex 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char setIndex(int p)
+    {
+    if (p < begin || p > end) {
+            throw new IllegalArgumentException("Invalid index");
+    }
+        pos = p;
+        return current();
+    }
+
+    /**
+     * Implements CharacterIterator.current() for String.
+     * @see CharacterIterator#current 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char current()
+    {
+        if (pos >= begin && pos < end) {
+            return text.charAt(pos);
+        }
+        else {
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.next() for String.
+     * @see CharacterIterator#next 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char next()
+    {
+        if (pos < end - 1) {
+            pos++;
+            return text.charAt(pos);
+        }
+        else {
+            pos = end;
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.previous() for String.
+     * @see CharacterIterator#previous 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public char previous()
+    {
+        if (pos > begin) {
+            pos--;
+            return text.charAt(pos);
+        }
+        else {
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.getBeginIndex() for String.
+     * @see CharacterIterator#getBeginIndex 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public int getBeginIndex()
+    {
+        return begin;
+    }
+
+    /**
+     * Implements CharacterIterator.getEndIndex() for String.
+     * @see CharacterIterator#getEndIndex 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public int getEndIndex()
+    {
+        return end;
+    }
+
+    /**
+     * Implements CharacterIterator.getIndex() for String.
+     * @see CharacterIterator#getIndex 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public int getIndex()
+    {
+        return pos;
+    }
+
+    /**
+     * Compares the equality of two StringCharacterIterator objects.
+     * @param obj the StringCharacterIterator object to be compared with.
+     * @return true if the given obj is the same as this
+     * StringCharacterIterator object; false otherwise. 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof StringCharacterIterator)) {
+            return false;
+        }
+
+        StringCharacterIterator that = (StringCharacterIterator) obj;
+
+        if (hashCode() != that.hashCode()) {
+            return false;
+        }
+        if (!text.equals(that.text)) {
+            return false;
+        }
+        if (pos != that.pos || begin != that.begin || end != that.end) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Computes a hashcode for this iterator.
+     * @return A hash code 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public int hashCode()
+    {
+        return text.hashCode() ^ pos ^ begin ^ end;
+    }
+
+    /**
+     * Creates a copy of this iterator.
+     * @return A copy of this 
+     * @deprecated ICU 2.4. Use java.text.StringCharacterIterator instead.
+     */
+    public Object clone()
+    {
+        try {
+            StringCharacterIterator other
+            = (StringCharacterIterator) super.clone();
+            return other;
+        }
+        catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+}
+///CLOVER:ON
diff --git a/src/com/ibm/icu/text/StringMatcher.java b/src/com/ibm/icu/text/StringMatcher.java
new file mode 100644
index 0000000..eefcc4c
--- /dev/null
+++ b/src/com/ibm/icu/text/StringMatcher.java
@@ -0,0 +1,289 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * An object that matches a fixed input string, implementing the
+ * UnicodeMatcher API.  This object also implements the
+ * UnicodeReplacer API, allowing it to emit the matched text as
+ * output.  Since the match text may contain flexible match elements,
+ * such as UnicodeSets, the emitted text is not the match pattern, but
+ * instead a substring of the actual matched text.  Following
+ * convention, the output text is the leftmost match seen up to this
+ * point.
+ *
+ * A StringMatcher may represent a segment, in which case it has a
+ * positive segment number.  This affects how the matcher converts
+ * itself to a pattern but does not otherwise affect its function.
+ *
+ * A StringMatcher that is not a segment should not be used as a
+ * UnicodeReplacer.
+ */
+class StringMatcher implements UnicodeMatcher, UnicodeReplacer {
+
+    /**
+     * The text to be matched.
+     */
+    private String pattern;
+
+    /**
+     * Start offset, in the match text, of the <em>rightmost</em>
+     * match.
+     */
+    private int matchStart;
+    
+    /**
+     * Limit offset, in the match text, of the <em>rightmost</em>
+     * match.
+     */
+    private int matchLimit;
+
+    /**
+     * The segment number, 1-based, or 0 if not a segment.
+     */
+    private int segmentNumber;
+
+    /**
+     * Context object that maps stand-ins to matcher and replacer
+     * objects.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+    /**
+     * Construct a matcher that matches the given pattern string.
+     * @param theString the pattern to be matched, possibly containing
+     * stand-ins that represent nested UnicodeMatcher objects.
+     * @param segmentNum the segment number from 1..n, or 0 if this is
+     * not a segment.
+     * @param theData context object mapping stand-ins to
+     * UnicodeMatcher objects.
+     */
+    public StringMatcher(String theString,
+                         int segmentNum,
+                         RuleBasedTransliterator.Data theData) {
+        data = theData;
+        pattern = theString;
+        matchStart = matchLimit = -1;
+        segmentNumber = segmentNum;
+    }
+
+    /**
+     * Construct a matcher that matches a substring of the given
+     * pattern string.
+     * @param theString the pattern to be matched, possibly containing
+     * stand-ins that represent nested UnicodeMatcher objects.
+     * @param start first character of theString to be matched
+     * @param limit index after the last character of theString to be
+     * matched.
+     * @param segmentNum the segment number from 1..n, or 0 if this is
+     * not a segment.
+     * @param theData context object mapping stand-ins to
+     * UnicodeMatcher objects.
+     */
+    public StringMatcher(String theString,
+                         int start,
+                         int limit,
+                         int segmentNum,
+                         RuleBasedTransliterator.Data theData) {
+        this(theString.substring(start, limit), segmentNum, theData);
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        // Note (1): We process text in 16-bit code units, rather than
+        // 32-bit code points.  This works because stand-ins are
+        // always in the BMP and because we are doing a literal match
+        // operation, which can be done 16-bits at a time.
+        int i;
+        int[] cursor = new int[] { offset[0] };
+        if (limit < cursor[0]) {
+            // Match in the reverse direction
+            for (i=pattern.length()-1; i>=0; --i) {
+                char keyChar = pattern.charAt(i); // OK; see note (1) above
+                UnicodeMatcher subm = data.lookupMatcher(keyChar);
+                if (subm == null) {
+                    if (cursor[0] > limit &&
+                        keyChar == text.charAt(cursor[0])) { // OK; see note (1) above
+                        --cursor[0];
+                    } else {
+                        return U_MISMATCH;
+                    }
+                } else {
+                    int m =
+                        subm.matches(text, cursor, limit, incremental);
+                    if (m != U_MATCH) {
+                        return m;
+                    }
+                }
+            }
+            // Record the match position, but adjust for a normal
+            // forward start, limit, and only if a prior match does not
+            // exist -- we want the rightmost match.
+            if (matchStart < 0) {
+                matchStart = cursor[0]+1;
+                matchLimit = offset[0]+1;
+            }
+        } else {
+            for (i=0; i<pattern.length(); ++i) {
+                if (incremental && cursor[0] == limit) {
+                    // We've reached the context limit without a mismatch and
+                    // without completing our match.
+                    return U_PARTIAL_MATCH;
+                }
+                char keyChar = pattern.charAt(i); // OK; see note (1) above
+                UnicodeMatcher subm = data.lookupMatcher(keyChar);
+                if (subm == null) {
+                    // Don't need the cursor < limit check if
+                    // incremental is true (because it's done above); do need
+                    // it otherwise.
+                    if (cursor[0] < limit &&
+                        keyChar == text.charAt(cursor[0])) { // OK; see note (1) above
+                        ++cursor[0];
+                    } else {
+                        return U_MISMATCH;
+                    }
+                } else {
+                    int m =
+                        subm.matches(text, cursor, limit, incremental);
+                    if (m != U_MATCH) {
+                        return m;
+                    }
+                }
+            }
+            // Record the match position
+            matchStart = offset[0];
+            matchLimit = cursor[0];
+        }
+
+        offset[0] = cursor[0];
+        return U_MATCH;
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        StringBuffer quoteBuf = new StringBuffer();
+        if (segmentNumber > 0) { // i.e., if this is a segment
+            result.append('(');
+        }
+        for (int i=0; i<pattern.length(); ++i) {
+            char keyChar = pattern.charAt(i); // OK; see note (1) above
+            UnicodeMatcher m = data.lookupMatcher(keyChar);
+            if (m == null) {
+                Utility.appendToRule(result, keyChar, false, escapeUnprintable, quoteBuf);
+            } else {
+                Utility.appendToRule(result, m.toPattern(escapeUnprintable),
+                                     true, escapeUnprintable, quoteBuf);
+            }
+        }
+        if (segmentNumber > 0) { // i.e., if this is a segment
+            result.append(')');
+        }
+        // Flush quoteBuf out to result
+        Utility.appendToRule(result, -1,
+                             true, escapeUnprintable, quoteBuf);
+        return result.toString();
+    }
+
+    /**
+     * Implement UnicodeMatcher
+     */
+    public boolean matchesIndexValue(int v) {
+        if (pattern.length() == 0) {
+            return true;
+        }
+        int c = UTF16.charAt(pattern, 0);
+        UnicodeMatcher m = data.lookupMatcher(c);
+        return (m == null) ? ((c & 0xFF) == v) : m.matchesIndexValue(v);
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        int ch;
+        for (int i=0; i<pattern.length(); i+=UTF16.getCharCount(ch)) {
+            ch = UTF16.charAt(pattern, i);
+            UnicodeMatcher matcher = data.lookupMatcher(ch);
+            if (matcher == null) {
+                toUnionTo.add(ch);
+            } else {
+                matcher.addMatchSetTo(toUnionTo);
+            }
+        }
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+
+        int outLen = 0;
+
+        // Copy segment with out-of-band data
+        int dest = limit;
+        // If there was no match, that means that a quantifier
+        // matched zero-length.  E.g., x (a)* y matched "xy".
+        if (matchStart >= 0) {
+            if (matchStart != matchLimit) {
+                text.copy(matchStart, matchLimit, dest);
+                outLen = matchLimit - matchStart;
+            }
+        }
+
+        text.replace(start, limit, ""); // delete original text
+
+        return outLen;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        // assert(segmentNumber > 0);
+        StringBuffer rule = new StringBuffer("$");
+        Utility.appendNumber(rule, segmentNumber, 10, 1);
+        return rule.toString();
+    }
+
+    /**
+     * Remove any match data.  This must be called before performing a
+     * set of matches with this segment.
+     */
+    public void resetMatch() {
+        matchStart = matchLimit = -1;
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        // The output of this replacer varies; it is the source text between
+        // matchStart and matchLimit.  Since this varies depending on the
+        // input text, we can't compute it here.  We can either do nothing
+        // or we can add ALL characters to the set.  It's probably more useful
+        // to do nothing.
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/StringPrep.java b/src/com/ibm/icu/text/StringPrep.java
new file mode 100644
index 0000000..242ddfb
--- /dev/null
+++ b/src/com/ibm/icu/text/StringPrep.java
@@ -0,0 +1,441 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import com.ibm.icu.impl.CharTrie;
+import com.ibm.icu.impl.StringPrepDataReader;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UBiDiProps;
+
+import com.ibm.icu.util.VersionInfo;
+
+import com.ibm.icu.lang.UCharacterDirection;
+
+/**
+ * StringPrep API implements the StingPrep framework as described by 
+ * <a href="http://www.ietf.org/rfc/rfc3454.txt">RFC 3454</a>.
+ * StringPrep prepares Unicode strings for use in network protocols.
+ * Profiles of StingPrep are set of rules and data according to which the
+ * Unicode Strings are prepared. Each profiles contains tables which describe
+ * how a code point should be treated. The tables are broadly classied into
+ * <ul>
+ *     <li> Unassigned Table: Contains code points that are unassigned 
+ *          in the Unicode Version supported by StringPrep. Currently 
+ *          RFC 3454 supports Unicode 3.2. </li>
+ *     <li> Prohibited Table: Contains code points that are prohibted from
+ *          the output of the StringPrep processing function. </li>
+ *     <li> Mapping Table: Contains code ponts that are deleted from the output or case mapped. </li>
+ * </ul>
+ * 
+ * The procedure for preparing Unicode strings:
+ * <ol>
+ *      <li> Map: For each character in the input, check if it has a mapping
+ *           and, if so, replace it with its mapping. </li>
+ *      <li> Normalize: Possibly normalize the result of step 1 using Unicode
+ *           normalization. </li>
+ *      <li> Prohibit: Check for any characters that are not allowed in the
+ *           output.  If any are found, return an error.</li>
+ *      <li> Check bidi: Possibly check for right-to-left characters, and if
+ *           any are found, make sure that the whole string satisfies the
+ *           requirements for bidirectional strings.  If the string does not
+ *           satisfy the requirements for bidirectional strings, return an
+ *           error.  </li>
+ * </ol>
+ * @author Ram Viswanadha
+ * @stable ICU 2.8
+ */
+public final class StringPrep {
+    /** 
+     * Option to prohibit processing of unassigned code points in the input
+     * 
+     * @see   #prepare
+     * @stable ICU 2.8
+     */
+    public static final int DEFAULT = 0x0000;
+
+    /** 
+     * Option to allow processing of unassigned code points in the input
+     * 
+     * @see   #prepare
+     * @stable ICU 2.8
+     */
+    public static final int ALLOW_UNASSIGNED = 0x0001;
+    
+    private static final int UNASSIGNED        = 0x0000; 
+    private static final int MAP               = 0x0001; 
+    private static final int PROHIBITED        = 0x0002; 
+    private static final int DELETE            = 0x0003;
+    private static final int TYPE_LIMIT        = 0x0004;
+    
+    private static final int NORMALIZATION_ON  = 0x0001;
+    private static final int CHECK_BIDI_ON     = 0x0002;
+    
+    private static final int TYPE_THRESHOLD       = 0xFFF0;
+    private static final int MAX_INDEX_VALUE      = 0x3FBF;   /*16139*/ 
+    //private static final int MAX_INDEX_TOP_LENGTH = 0x0003;
+    
+    /* indexes[] value names */
+    private static final int INDEX_TRIE_SIZE                  =  0; /* number of bytes in normalization trie */
+    private static final int INDEX_MAPPING_DATA_SIZE          =  1; /* The array that contains the mapping   */
+    private static final int NORM_CORRECTNS_LAST_UNI_VERSION  =  2; /* The index of Unicode version of last entry in NormalizationCorrections.txt */ 
+    private static final int ONE_UCHAR_MAPPING_INDEX_START    =  3; /* The starting index of 1 UChar mapping index in the mapping data array */
+    private static final int TWO_UCHARS_MAPPING_INDEX_START   =  4; /* The starting index of 2 UChars mapping index in the mapping data array */
+    private static final int THREE_UCHARS_MAPPING_INDEX_START =  5;
+    private static final int FOUR_UCHARS_MAPPING_INDEX_START  =  6;
+    private static final int OPTIONS                          =  7; /* Bit set of options to turn on in the profile */
+    private static final int INDEX_TOP                        = 16;                          /* changing this requires a new formatVersion */
+   
+   
+    /**
+     * Default buffer size of datafile
+     */
+    private static final int DATA_BUFFER_SIZE = 25000;
+    
+    // CharTrie implmentation for reading the trie data
+    private CharTrie sprepTrie;
+    // Indexes read from the data file
+    private int[] indexes;
+    // mapping data read from the data file
+    private char[] mappingData;
+    // format version of the data file
+    //private byte[] formatVersion;
+    // the version of Unicode supported by the data file
+    private VersionInfo sprepUniVer;
+    // the Unicode version of last entry in the
+    // NormalizationCorrections.txt file if normalization
+    // is turned on 
+    private VersionInfo normCorrVer;
+    // Option to turn on Normalization
+    private boolean doNFKC;
+    // Option to turn on checking for BiDi rules
+    private boolean checkBiDi;
+    // bidi properties
+    private UBiDiProps bdp;
+    
+    private char getCodePointValue(int ch){
+        return sprepTrie.getCodePointValue(ch);
+    }
+  
+    private static VersionInfo getVersionInfo(int comp){
+        int micro = comp & 0xFF;
+        int milli =(comp >> 8)  & 0xFF;
+        int minor =(comp >> 16) & 0xFF;
+        int major =(comp >> 24) & 0xFF;
+        return VersionInfo.getInstance(major,minor,milli,micro);
+    }
+    private static VersionInfo getVersionInfo(byte[] version){
+        if(version.length != 4){
+            return null;
+        }
+        return VersionInfo.getInstance((int)version[0],(int) version[1],(int) version[2],(int) version[3]);
+    }
+    /**
+     * Creates an StringPrep object after reading the input stream.
+     * The object does not hold a reference to the input steam, so the stream can be
+     * closed after the method returns.
+     * 
+     * @param inputStream The stream for reading the StringPrep profile binarySun 
+     * @throws IOException
+     * @stable ICU 2.8
+     */
+    public StringPrep(InputStream inputStream) throws IOException{
+
+        BufferedInputStream b = new BufferedInputStream(inputStream,DATA_BUFFER_SIZE);
+  
+        StringPrepDataReader reader = new StringPrepDataReader(b);
+        
+        // read the indexes            
+        indexes = reader.readIndexes(INDEX_TOP);
+   
+        byte[] sprepBytes = new byte[indexes[INDEX_TRIE_SIZE]];
+   
+
+        //indexes[INDEX_MAPPING_DATA_SIZE] store the size of mappingData in bytes           
+        mappingData = new char[indexes[INDEX_MAPPING_DATA_SIZE]/2]; 
+        // load the rest of the data data and initialize the data members
+        reader.read(sprepBytes,mappingData);
+                                   
+        sprepTrie = new CharTrie(new ByteArrayInputStream(sprepBytes), null);
+              
+        // get the data format version                           
+        /*formatVersion = */reader.getDataFormatVersion();
+ 
+        // get the options
+        doNFKC            = ((indexes[OPTIONS] & NORMALIZATION_ON) > 0);
+        checkBiDi         = ((indexes[OPTIONS] & CHECK_BIDI_ON) > 0);
+        sprepUniVer   = getVersionInfo(reader.getUnicodeVersion());
+        normCorrVer   = getVersionInfo(indexes[NORM_CORRECTNS_LAST_UNI_VERSION]);
+        VersionInfo normUniVer = Normalizer.getUnicodeVersion();
+        if(normUniVer.compareTo(sprepUniVer) < 0 && /* the Unicode version of SPREP file must be less than the Unicode Vesion of the normalization data */
+           normUniVer.compareTo(normCorrVer) < 0 && /* the Unicode version of the NormalizationCorrections.txt file should be less than the Unicode Vesion of the normalization data */
+           ((indexes[OPTIONS] & NORMALIZATION_ON) > 0) /* normalization turned on*/
+           ){
+            throw new IOException("Normalization Correction version not supported");
+        }
+        b.close();
+        
+        if(checkBiDi) {
+            bdp=UBiDiProps.getSingleton();
+        }
+    }
+ 
+    private static final class Values{
+        boolean isIndex;
+        int value;
+        int type;
+        public void reset(){
+            isIndex = false;
+            value = 0;
+            type = -1;
+        }
+    }
+
+    private static final void getValues(char trieWord,Values values){
+        values.reset();
+        if(trieWord == 0){
+            /* 
+             * Initial value stored in the mapping table 
+             * just return TYPE_LIMIT .. so that
+             * the source codepoint is copied to the destination
+             */
+            values.type = TYPE_LIMIT;
+        }else if(trieWord >= TYPE_THRESHOLD){
+            values.type = (trieWord - TYPE_THRESHOLD);
+        }else{
+            /* get the type */
+            values.type = MAP;
+            /* ascertain if the value is index or delta */
+            if((trieWord & 0x02)>0){
+                values.isIndex = true;
+                values.value = trieWord  >> 2; //mask off the lower 2 bits and shift
+
+            }else{
+                values.isIndex = false;
+                values.value = ((int)(trieWord<<16))>>16;
+                values.value =  (values.value >> 2);
+
+            }
+ 
+            if((trieWord>>2) == MAX_INDEX_VALUE){
+                values.type = DELETE;
+                values.isIndex = false;
+                values.value = 0;
+            }
+        }
+    }
+
+
+
+    private StringBuffer map( UCharacterIterator iter, int options)
+                            throws StringPrepParseException{
+    
+        Values val = new Values();
+        char result = 0;
+        int ch  = UCharacterIterator.DONE;
+        StringBuffer dest = new StringBuffer();
+        boolean allowUnassigned = ((options & ALLOW_UNASSIGNED)>0);
+        
+        while((ch=iter.nextCodePoint())!= UCharacterIterator.DONE){
+            
+            result = getCodePointValue(ch);
+            getValues(result,val);
+
+            // check if the source codepoint is unassigned
+            if(val.type == UNASSIGNED && allowUnassigned == false){
+                 throw new StringPrepParseException("An unassigned code point was found in the input",
+                                          StringPrepParseException.UNASSIGNED_ERROR,
+                                          iter.getText(),iter.getIndex());    
+            }else if((val.type == MAP)){
+                int index, length;
+
+                if(val.isIndex){
+                    index = val.value;
+                    if(index >= indexes[ONE_UCHAR_MAPPING_INDEX_START] &&
+                             index < indexes[TWO_UCHARS_MAPPING_INDEX_START]){
+                        length = 1;
+                    }else if(index >= indexes[TWO_UCHARS_MAPPING_INDEX_START] &&
+                             index < indexes[THREE_UCHARS_MAPPING_INDEX_START]){
+                        length = 2;
+                    }else if(index >= indexes[THREE_UCHARS_MAPPING_INDEX_START] &&
+                             index < indexes[FOUR_UCHARS_MAPPING_INDEX_START]){
+                        length = 3;
+                    }else{
+                        length = mappingData[index++];
+                    }
+                    /* copy mapping to destination */
+                    dest.append(mappingData,index,length);                    
+                    continue;
+                    
+                }else{
+                    ch -= val.value;
+                }
+            }else if(val.type == DELETE){
+                // just consume the codepoint and contine
+                continue;
+            }
+            //copy the source into destination
+            UTF16.append(dest,ch);
+        }
+        
+        return dest;
+    }
+
+
+    private StringBuffer normalize(StringBuffer src){
+        /*
+         * Option UNORM_BEFORE_PRI_29:
+         *
+         * IDNA as interpreted by IETF members (see unicode mailing list 2004H1)
+         * requires strict adherence to Unicode 3.2 normalization,
+         * including buggy composition from before fixing Public Review Issue #29.
+         * Note that this results in some valid but nonsensical text to be
+         * either corrupted or rejected, depending on the text.
+         * See http://www.unicode.org/review/resolved-pri.html#pri29
+         * See unorm.cpp and cnormtst.c
+         */
+        return new StringBuffer(
+            Normalizer.normalize(
+                src.toString(),
+                Normalizer.NFKC,
+                Normalizer.UNICODE_3_2|NormalizerImpl.BEFORE_PRI_29));
+    }
+    /*
+    boolean isLabelSeparator(int ch){
+        int result = getCodePointValue(ch);
+        if( (result & 0x07)  == LABEL_SEPARATOR){
+            return true;
+        }
+        return false;
+    }
+    */
+     /*
+       1) Map -- For each character in the input, check if it has a mapping
+          and, if so, replace it with its mapping.  
+
+       2) Normalize -- Possibly normalize the result of step 1 using Unicode
+          normalization. 
+
+       3) Prohibit -- Check for any characters that are not allowed in the
+          output.  If any are found, return an error.  
+
+       4) Check bidi -- Possibly check for right-to-left characters, and if
+          any are found, make sure that the whole string satisfies the
+          requirements for bidirectional strings.  If the string does not
+          satisfy the requirements for bidirectional strings, return an
+          error.  
+          [Unicode3.2] defines several bidirectional categories; each character
+           has one bidirectional category assigned to it.  For the purposes of
+           the requirements below, an "RandALCat character" is a character that
+           has Unicode bidirectional categories "R" or "AL"; an "LCat character"
+           is a character that has Unicode bidirectional category "L".  Note
+
+
+           that there are many characters which fall in neither of the above
+           definitions; Latin digits (<U+0030> through <U+0039>) are examples of
+           this because they have bidirectional category "EN".
+
+           In any profile that specifies bidirectional character handling, all
+           three of the following requirements MUST be met:
+
+           1) The characters in section 5.8 MUST be prohibited.
+
+           2) If a string contains any RandALCat character, the string MUST NOT
+              contain any LCat character.
+
+           3) If a string contains any RandALCat character, a RandALCat
+              character MUST be the first character of the string, and a
+              RandALCat character MUST be the last character of the string.
+    */
+    /**
+     * Prepare the input buffer for use in applications with the given profile. This operation maps, normalizes(NFKC),
+     * checks for prohited and BiDi characters in the order defined by RFC 3454
+     * depending on the options specified in the profile.
+     *
+     * @param src           A UCharacterIterator object containing the source string
+     * @param options       A bit set of options:
+     *
+     *  - StringPrep.NONE               Prohibit processing of unassigned code points in the input
+     *
+     *  - StringPrep.ALLOW_UNASSIGNED   Treat the unassigned code points are in the input 
+     *                                  as normal Unicode code points.
+     *
+     * @return StringBuffer A StringBuffer containing the output
+     * @throws ParseException
+     * @stable ICU 2.8
+     */
+    public StringBuffer prepare(UCharacterIterator src, int options)
+                        throws StringPrepParseException{
+                                              
+        // map 
+        StringBuffer mapOut = map(src,options);
+        StringBuffer normOut = mapOut;// initialize 
+        
+        if(doNFKC){
+            // normalize 
+            normOut = normalize(mapOut);
+        }
+
+        int ch;
+        char result;
+        UCharacterIterator iter = UCharacterIterator.getInstance(normOut);
+        Values val = new Values(); 
+        int direction=UCharacterDirection.CHAR_DIRECTION_COUNT,
+            firstCharDir=UCharacterDirection.CHAR_DIRECTION_COUNT;    
+        int rtlPos=-1, ltrPos=-1;
+        boolean rightToLeft=false, leftToRight=false;
+           
+        while((ch=iter.nextCodePoint())!= UCharacterIterator.DONE){
+            result = getCodePointValue(ch);
+            getValues(result,val);
+
+            if(val.type == PROHIBITED ){
+                throw new StringPrepParseException("A prohibited code point was found in the input",
+                                         StringPrepParseException.PROHIBITED_ERROR,iter.getText(),val.value);
+            }
+
+            if(checkBiDi) {
+                direction = bdp.getClass(ch);
+                if(firstCharDir == UCharacterDirection.CHAR_DIRECTION_COUNT){
+                    firstCharDir = direction;
+                }
+                if(direction == UCharacterDirection.LEFT_TO_RIGHT){
+                    leftToRight = true;
+                    ltrPos = iter.getIndex()-1;
+                }
+                if(direction == UCharacterDirection.RIGHT_TO_LEFT || direction == UCharacterDirection.RIGHT_TO_LEFT_ARABIC){
+                    rightToLeft = true;
+                    rtlPos = iter.getIndex()-1;
+                }
+            }
+        }           
+        if(checkBiDi == true){
+            // satisfy 2
+            if( leftToRight == true && rightToLeft == true){
+                throw new StringPrepParseException("The input does not conform to the rules for BiDi code points.",
+                                         StringPrepParseException.CHECK_BIDI_ERROR,iter.getText(),
+                                         (rtlPos>ltrPos) ? rtlPos : ltrPos);
+             }
+    
+            //satisfy 3
+            if( rightToLeft == true && 
+                !((firstCharDir == UCharacterDirection.RIGHT_TO_LEFT || firstCharDir == UCharacterDirection.RIGHT_TO_LEFT_ARABIC) &&
+                (direction == UCharacterDirection.RIGHT_TO_LEFT || direction == UCharacterDirection.RIGHT_TO_LEFT_ARABIC))
+              ){
+                throw new StringPrepParseException("The input does not conform to the rules for BiDi code points.",
+                                         StringPrepParseException.CHECK_BIDI_ERROR,iter.getText(),
+                                         (rtlPos>ltrPos) ? rtlPos : ltrPos);
+            }
+        }
+        return normOut;
+
+      }
+}
diff --git a/src/com/ibm/icu/text/StringPrepParseException.java b/src/com/ibm/icu/text/StringPrepParseException.java
new file mode 100644
index 0000000..872acab
--- /dev/null
+++ b/src/com/ibm/icu/text/StringPrepParseException.java
@@ -0,0 +1,223 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.ParseException;
+
+/**
+ * Exception that signals an error has occurred while parsing the 
+ * input to StringPrep or IDNA. 
+ *
+ * @author Ram Viswanadha
+ * @stable ICU 2.8
+ */
+public class StringPrepParseException extends ParseException {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 7160264827701651255L;
+    
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int INVALID_CHAR_FOUND      = 0;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int ILLEGAL_CHAR_FOUND      = 1;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int PROHIBITED_ERROR        = 2;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int UNASSIGNED_ERROR        = 3;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int CHECK_BIDI_ERROR        = 4;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int STD3_ASCII_RULES_ERROR  = 5;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int ACE_PREFIX_ERROR        = 6;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int VERIFICATION_ERROR      = 7;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int LABEL_TOO_LONG_ERROR    = 8;
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int BUFFER_OVERFLOW_ERROR   = 9;
+    
+    /**
+     * @stable ICU 2.8
+     */
+    public static final int ZERO_LENGTH_LABEL   = 10;
+    
+    /**
+     * @stable ICU 3.8
+     */
+    public static final int DOMAIN_NAME_TOO_LONG_ERROR   = 11;
+    
+    /**
+     * Construct a ParseException object with the given message
+     * and error code
+     * 
+     * @param message A string describing the type of error that occurred
+     * @param error   The error that has occurred
+     * @stable ICU 2.8
+     */
+    public StringPrepParseException(String message,int error){
+        super(message, -1);
+        this.error = error;
+        this.line = 0;
+    }
+    
+    /**
+     * Construct a ParseException object with the given message and
+     * error code
+     * 
+     * @param message A string describing the type of error that occurred
+     * @param error   The error that has occurred
+     * @param rules   The input rules string 
+     * @param pos     The position of error in the rules string
+     * @stable ICU 2.8
+     */
+    public StringPrepParseException(String message,int error, String rules, int pos){
+        super(message, -1);
+        this.error = error;
+        setContext(rules,pos);  
+        this.line = 0;
+    }
+    /**
+     * Construct  a ParseException object with the given message and error code
+     * 
+     * @param message    A string describing the type of error that occurred
+     * @param error      The error that has occurred
+     * @param rules      The input rules string 
+     * @param pos        The position of error in the rules string
+     * @param lineNumber The line number at which the error has occurred. 
+     *                   If the parse engine is not using this field, it should set it to zero.  Otherwise
+     *                   it should be a positive integer. The default value of this field
+     *                   is -1. It will be set to 0 if the code populating this struct is not
+     *                   using line numbers.
+     * @stable ICU 2.8
+     */
+    public StringPrepParseException(String message, int error, String rules, int pos, int lineNumber){
+        super(message, -1);
+        this.error = error;
+        setContext(rules,pos);   
+        this.line = lineNumber;
+    }
+    /**
+     * Compare this ParseException to another and evaluate if they are equal.
+     * The comparison works only on the type of error and does not compare
+     * the rules strings, if any, for equality.
+     * 
+     * @param other The exception that this object should be compared to
+     * @return true if the objects are equal, false if unequal
+     * @stable ICU 2.8
+     */
+    public boolean equals(Object other){
+        if(!(other instanceof StringPrepParseException)){
+            return false;
+        }
+        return ((StringPrepParseException)other).error == this.error;
+        
+    }
+    /**
+     * Returns the position of error in the rules string
+     * 
+     * @return String
+     * @stable ICU 2.8
+     */
+    public String toString(){
+        StringBuffer buf = new StringBuffer();
+        buf.append(super.getMessage());
+        buf.append(". line:  ");
+        buf.append(line);
+        buf.append(". preContext:  ");
+        buf.append(preContext);
+        buf.append(". postContext: ");
+        buf.append(postContext);
+        buf.append("\n");
+        return buf.toString();
+    }
+
+    private int error;
+    
+    /**
+     * The line on which the error occured.  If the parse engine
+     * is not using this field, it should set it to zero.  Otherwise
+     * it should be a positive integer. The default value of this field
+     * is -1. It will be set to 0 if the code populating this struct is not
+     * using line numbers.
+     * @stable ICU 2.8  
+     */
+    private int line;
+
+
+    /**
+     * Textual context before the error.  Null-terminated.
+     * May be the empty string if not implemented by parser.
+     * @stable ICU 2.8
+     */
+    private StringBuffer preContext = new StringBuffer();
+
+    /**
+     * Textual context after the error.  Null-terminated.
+     * May be the empty string if not implemented by parser.
+     * @stable ICU 2.8   
+     */
+    private StringBuffer postContext =  new StringBuffer();
+    
+    private static final int PARSE_CONTEXT_LEN = 16;
+    
+    private void setPreContext(String str, int pos){
+        setPreContext(str.toCharArray(),pos);
+    }
+    
+    private void setPreContext(char[] str, int pos){
+        int start = (pos <= PARSE_CONTEXT_LEN)? 0 : (pos - (PARSE_CONTEXT_LEN-1));
+        int len = (start <= PARSE_CONTEXT_LEN)? start : PARSE_CONTEXT_LEN;
+        preContext.append(str,start,len);
+ 
+    }
+    
+    private void setPostContext(String str, int pos){
+        setPostContext(str.toCharArray(),pos);
+    }
+    
+    private void setPostContext(char[] str, int pos){
+        int start = pos;
+        int len  = str.length - start; 
+        postContext.append(str,start,len);
+
+    }
+    
+    private void setContext(String str,int pos){
+        setPreContext(str,pos);
+        setPostContext(str,pos);
+    }
+    
+    /**
+     * Returns the error code of this exception. 
+     * This method is only used for testing to verify the error.
+     * @return The error code
+     * @stable ICU 3.8
+     */
+    public int getError(){
+        return error;
+    }
+}
diff --git a/src/com/ibm/icu/text/StringReplacer.java b/src/com/ibm/icu/text/StringReplacer.java
new file mode 100644
index 0000000..5701631
--- /dev/null
+++ b/src/com/ibm/icu/text/StringReplacer.java
@@ -0,0 +1,333 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2007, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A replacer that produces static text as its output.  The text may
+ * contain transliterator stand-in characters that represent nested
+ * UnicodeReplacer objects, making it possible to encode a tree of
+ * replacers in a StringReplacer.  A StringReplacer that contains such
+ * stand-ins is called a <em>complex</em> StringReplacer.  A complex
+ * StringReplacer has a slower processing loop than a non-complex one.
+ * @author Alan Liu
+ */
+class StringReplacer implements UnicodeReplacer {
+
+    /**
+     * Output text, possibly containing stand-in characters that
+     * represent nested UnicodeReplacers.
+     */
+    private String output;
+
+    /**
+     * Cursor position.  Value is ignored if hasCursor is false.
+     */
+    private int cursorPos;
+
+    /**
+     * True if this object outputs a cursor position.
+     */
+    private boolean hasCursor;
+
+    /**
+     * A complex object contains nested replacers and requires more
+     * complex processing.  StringReplacers are initially assumed to
+     * be complex.  If no nested replacers are seen during processing,
+     * then isComplex is set to false, and future replacements are
+     * short circuited for better performance.
+     */
+    private boolean isComplex;
+
+    /**
+     * Object that translates stand-in characters in 'output' to
+     * UnicodeReplacer objects.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+    /**
+     * Construct a StringReplacer that sets the emits the given output
+     * text and sets the cursor to the given position.
+     * @param theOutput text that will replace input text when the
+     * replace() method is called.  May contain stand-in characters
+     * that represent nested replacers.
+     * @param theCursorPos cursor position that will be returned by
+     * the replace() method
+     * @param theData transliterator context object that translates
+     * stand-in characters to UnicodeReplacer objects
+     */
+    public StringReplacer(String theOutput,
+                          int theCursorPos,
+                          RuleBasedTransliterator.Data theData) {
+        output = theOutput;
+        cursorPos = theCursorPos;
+        hasCursor = true;
+        data = theData;
+        isComplex = true;
+    }
+
+    /**
+     * Construct a StringReplacer that sets the emits the given output
+     * text and does not modify the cursor.
+     * @param theOutput text that will replace input text when the
+     * replace() method is called.  May contain stand-in characters
+     * that represent nested replacers.
+     * @param theData transliterator context object that translates
+     * stand-in characters to UnicodeReplacer objects
+     */
+    public StringReplacer(String theOutput,
+                          RuleBasedTransliterator.Data theData) {
+        output = theOutput;
+        cursorPos = 0;
+        hasCursor = false;
+        data = theData;
+        isComplex = true;
+    }
+
+//=    public static UnicodeReplacer valueOf(String output,
+//=                                          int cursorPos,
+//=                                          RuleBasedTransliterator.Data data) {
+//=        if (output.length() == 1) {
+//=            char c = output.charAt(0);
+//=            UnicodeReplacer r = data.lookupReplacer(c);
+//=            if (r != null) {
+//=                return r;
+//=            }
+//=        }
+//=        return new StringReplacer(output, cursorPos, data);
+//=    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public int replace(Replaceable text,
+                       int start,
+                       int limit,
+                       int[] cursor) {
+        int outLen;
+        int newStart = 0;
+
+        // NOTE: It should be possible to _always_ run the complex
+        // processing code; just slower.  If not, then there is a bug
+        // in the complex processing code.
+
+        // Simple (no nested replacers) Processing Code :
+        if (!isComplex) {
+            text.replace(start, limit, output);
+            outLen = output.length();
+
+            // Setup default cursor position (for cursorPos within output)
+            newStart = cursorPos;
+        }
+
+        // Complex (nested replacers) Processing Code :
+        else {
+            /* When there are segments to be copied, use the Replaceable.copy()
+             * API in order to retain out-of-band data.  Copy everything to the
+             * end of the string, then copy them back over the key.  This preserves
+             * the integrity of indices into the key and surrounding context while
+             * generating the output text.
+             */
+            StringBuffer buf = new StringBuffer();
+            int oOutput; // offset into 'output'
+            isComplex = false;
+
+            // The temporary buffer starts at tempStart, and extends
+            // to destLimit + tempExtra.  The start of the buffer has a single
+            // character from before the key.  This provides style
+            // data when addition characters are filled into the
+            // temporary buffer.  If there is nothing to the left, use
+            // the non-character U+FFFF, which Replaceable subclasses
+            // should treat specially as a "no-style character."
+            // destStart points to the point after the style context
+            // character, so it is tempStart+1 or tempStart+2.
+            int tempStart = text.length(); // start of temp buffer
+            int destStart = tempStart; // copy new text to here
+            if (start > 0) {
+                int len = UTF16.getCharCount(text.char32At(start-1));
+                text.copy(start-len, start, tempStart);
+                destStart += len;
+            } else {
+                text.replace(tempStart, tempStart, "\uFFFF");
+                destStart++;
+            }
+            int destLimit = destStart;
+            int tempExtra = 0; // temp chars after destLimit
+
+            for (oOutput=0; oOutput<output.length(); ) {
+                if (oOutput == cursorPos) {
+                    // Record the position of the cursor
+                    newStart = buf.length() + destLimit - destStart; // relative to start
+                    // the buf.length() was inserted for bug 5789
+                    // the problem is that if we are accumulating into a buffer (when r == null below)
+                    // then the actual length of the text at that point needs to add the buf length.
+                    // there was an alternative suggested in #5789, but that looks like it won't work
+                    // if we have accumulated some stuff in the dest part AND have a non-zero buffer.
+                }
+                int c = UTF16.charAt(output, oOutput);
+
+                // When we are at the last position copy the right style
+                // context character into the temporary buffer.  We don't
+                // do this before because it will provide an incorrect
+                // right context for previous replace() operations.
+                int nextIndex = oOutput + UTF16.getCharCount(c);
+                if (nextIndex == output.length()) {
+                    tempExtra = UTF16.getCharCount(text.char32At(limit));
+                    text.copy(limit, limit+tempExtra, destLimit);
+                }
+
+                UnicodeReplacer r = data.lookupReplacer(c);
+                if (r == null) {
+                    // Accumulate straight (non-segment) text.
+                    UTF16.append(buf, c);
+                } else {
+                    isComplex = true;
+
+                    // Insert any accumulated straight text.
+                    if (buf.length() > 0) {
+                        text.replace(destLimit, destLimit, buf.toString());
+                        destLimit += buf.length();
+                        buf.setLength(0);
+                    }
+
+                    // Delegate output generation to replacer object
+                    int len = r.replace(text, destLimit, destLimit, cursor);
+                    destLimit += len;
+                }
+                oOutput = nextIndex;
+            }
+            // Insert any accumulated straight text.
+            if (buf.length() > 0) {
+                text.replace(destLimit, destLimit, buf.toString());
+                destLimit += buf.length();
+            }
+            if (oOutput == cursorPos) {
+                // Record the position of the cursor
+                newStart = destLimit - destStart; // relative to start
+            }
+
+            outLen = destLimit - destStart;
+
+            // Copy new text to start, and delete it
+            text.copy(destStart, destLimit, start);
+            text.replace(tempStart + outLen, destLimit + tempExtra + outLen, "");
+
+            // Delete the old text (the key)
+            text.replace(start + outLen, limit + outLen, "");
+        }        
+
+        if (hasCursor) {
+            // Adjust the cursor for positions outside the key.  These
+            // refer to code points rather than code units.  If cursorPos
+            // is within the output string, then use newStart, which has
+            // already been set above.
+            if (cursorPos < 0) {
+                newStart = start;
+                int n = cursorPos;
+                // Outside the output string, cursorPos counts code points
+                while (n < 0 && newStart > 0) {
+                    newStart -= UTF16.getCharCount(text.char32At(newStart-1));
+                    ++n;
+                }
+                newStart += n;
+            } else if (cursorPos > output.length()) {
+                newStart = start + outLen;
+                int n = cursorPos - output.length();
+                // Outside the output string, cursorPos counts code points
+                while (n > 0 && newStart < text.length()) {
+                    newStart += UTF16.getCharCount(text.char32At(newStart));
+                    --n;
+                }
+                newStart += n;
+            } else {
+                // Cursor is within output string.  It has been set up above
+                // to be relative to start.
+                newStart += start;
+            }
+
+            cursor[0] = newStart;
+        }
+
+        return outLen;
+    }
+
+    /**
+     * UnicodeReplacer API
+     */
+    public String toReplacerPattern(boolean escapeUnprintable) {
+        StringBuffer rule = new StringBuffer();
+        StringBuffer quoteBuf = new StringBuffer();
+
+        int cursor = cursorPos;
+
+        // Handle a cursor preceding the output
+        if (hasCursor && cursor < 0) {
+            while (cursor++ < 0) {
+                Utility.appendToRule(rule, '@', true, escapeUnprintable, quoteBuf);
+            }
+            // Fall through and append '|' below
+        }
+
+        for (int i=0; i<output.length(); ++i) {
+            if (hasCursor && i == cursor) {
+                Utility.appendToRule(rule, '|', true, escapeUnprintable, quoteBuf);
+            }
+            char c = output.charAt(i); // Ok to use 16-bits here
+
+            UnicodeReplacer r = data.lookupReplacer(c);
+            if (r == null) {
+                Utility.appendToRule(rule, c, false, escapeUnprintable, quoteBuf);
+            } else {
+                StringBuffer buf = new StringBuffer(" ");
+                buf.append(r.toReplacerPattern(escapeUnprintable));
+                buf.append(' ');
+                Utility.appendToRule(rule, buf.toString(),
+                                     true, escapeUnprintable, quoteBuf);
+            }
+        }
+
+        // Handle a cursor after the output.  Use > rather than >= because
+        // if cursor == output.length() it is at the end of the output,
+        // which is the default position, so we need not emit it.
+        if (hasCursor && cursor > output.length()) {
+            cursor -= output.length();
+            while (cursor-- > 0) {
+                Utility.appendToRule(rule, '@', true, escapeUnprintable, quoteBuf);
+            }
+            Utility.appendToRule(rule, '|', true, escapeUnprintable, quoteBuf);
+        }
+        // Flush quoteBuf out to result
+        Utility.appendToRule(rule, -1,
+                             true, escapeUnprintable, quoteBuf);
+
+        return rule.toString();
+    }
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public void addReplacementSetTo(UnicodeSet toUnionTo) {
+        int ch;
+        for (int i=0; i<output.length(); i+=UTF16.getCharCount(ch)) {
+            ch = UTF16.charAt(output, i);
+            UnicodeReplacer r = data.lookupReplacer(ch);
+            if (r == null) {
+                toUnionTo.add(ch);
+            } else {
+                r.addReplacementSetTo(toUnionTo);
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/StringSearch.java b/src/com/ibm/icu/text/StringSearch.java
new file mode 100644
index 0000000..0fbedbf
--- /dev/null
+++ b/src/com/ibm/icu/text/StringSearch.java
@@ -0,0 +1,3155 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+
+import com.ibm.icu.impl.CharacterIteratorWrapper;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <p>
+ * <code>StringSearch</code> is the concrete subclass of 
+ * <code>SearchIterator</code> that provides language-sensitive text searching 
+ * based on the comparison rules defined in a {@link RuleBasedCollator} object.
+ * </p>
+ * <p>
+ * <code>StringSearch</code> uses a version of the fast Boyer-Moore search
+ * algorithm that has been adapted to work with the large character set of
+ * Unicode. Refer to 
+ * <a href="http://www.icu-project.org/docs/papers/efficient_text_searching_in_java.html">
+ * "Efficient Text Searching in Java"</a>, published in the 
+ * <i>Java Report</i> on February, 1999, for further information on the 
+ * algorithm.
+ * </p>
+ * <p>
+ * Users are also strongly encouraged to read the section on 
+ * <a href="http://www.icu-project.org/userguide/searchString.html">
+ * String Search</a> and 
+ * <a href="http://www.icu-project.org/userguide/Collate_Intro.html">
+ * Collation</a> in the user guide before attempting to use this class.
+ * </p>
+ * <p>
+ * String searching becomes a little complicated when accents are encountered at
+ * match boundaries. If a match is found and it has preceding or trailing 
+ * accents not part of the match, the result returned will include the 
+ * preceding accents up to the first base character, if the pattern searched 
+ * for starts an accent. Likewise, 
+ * if the pattern ends with an accent, all trailing accents up to the first
+ * base character will be included in the result.
+ * </p>
+ * <p>
+ * For example, if a match is found in target text "a&#92;u0325&#92;u0300" for 
+ * the pattern
+ * "a&#92;u0325", the result returned by StringSearch will be the index 0 and
+ * length 3 &lt;0, 3&gt;. If a match is found in the target 
+ * "a&#92;u0325&#92;u0300" 
+ * for the pattern "&#92;u0300", then the result will be index 1 and length 2 
+ * <1, 2>.
+ * </p>
+ * <p>
+ * In the case where the decomposition mode is on for the RuleBasedCollator,
+ * all matches that starts or ends with an accent will have its results include 
+ * preceding or following accents respectively. For example, if pattern "a" is
+ * looked for in the target text "&aacute;&#92;u0325", the result will be
+ * index 0 and length 2 &lt;0, 2&gt;.
+ * </p>
+ * <p>
+ * The StringSearch class provides two options to handle accent matching 
+ * described below:
+ * </p>
+ * <p>
+ * Let S' be the sub-string of a text string S between the offsets start and 
+ * end &lt;start, end&gt;.
+ * <br>
+ * A pattern string P matches a text string S at the offsets &lt;start, 
+ * length&gt; 
+ * <br>
+ * if
+ * <pre> 
+ * option 1. P matches some canonical equivalent string of S'. Suppose the 
+ *           RuleBasedCollator used for searching has a collation strength of 
+ *           TERTIARY, all accents are non-ignorable. If the pattern 
+ *           "a&#92;u0300" is searched in the target text 
+ *           "a&#92;u0325&#92;u0300", 
+ *           a match will be found, since the target text is canonically 
+ *           equivalent to "a&#92;u0300&#92;u0325"
+ * option 2. P matches S' and if P starts or ends with a combining mark, 
+ *           there exists no non-ignorable combining mark before or after S' 
+ *           in S respectively. Following the example above, the pattern 
+ *           "a&#92;u0300" will not find a match in "a&#92;u0325&#92;u0300", 
+ *           since
+ *           there exists a non-ignorable accent '&#92;u0325' in the middle of 
+ *           'a' and '&#92;u0300'. Even with a target text of 
+ *           "a&#92;u0300&#92;u0325" a match will not be found because of the 
+ *           non-ignorable trailing accent &#92;u0325.
+ * </pre>
+ * Option 2. will be the default mode for dealing with boundary accents unless
+ * specified via the API setCanonical(boolean).
+ * One restriction is to be noted for option 1. Currently there are no 
+ * composite characters that consists of a character with combining class > 0 
+ * before a character with combining class == 0. However, if such a character 
+ * exists in the future, the StringSearch may not work correctly with option 1
+ * when such characters are encountered.
+ * </p>
+ * <p>
+ * <tt>SearchIterator</tt> provides APIs to specify the starting position 
+ * within the text string to be searched, e.g. <tt>setIndex</tt>,
+ * <tt>preceding</tt> and <tt>following</tt>. Since the starting position will 
+ * be set as it is specified, please take note that there are some dangerous 
+ * positions which the search may render incorrect results:
+ * <ul>
+ * <li> The midst of a substring that requires decomposition.
+ * <li> If the following match is to be found, the position should not be the
+ *      second character which requires to be swapped with the preceding 
+ *      character. Vice versa, if the preceding match is to be found, 
+ *      position to search from should not be the first character which 
+ *      requires to be swapped with the next character. E.g certain Thai and
+ *      Lao characters require swapping.
+ * <li> If a following pattern match is to be found, any position within a 
+ *      contracting sequence except the first will fail. Vice versa if a 
+ *      preceding pattern match is to be found, a invalid starting point 
+ *      would be any character within a contracting sequence except the last.
+ * </ul>
+ * </p>
+ * <p>
+ * Though collator attributes will be taken into consideration while 
+ * performing matches, there are no APIs provided in StringSearch for setting 
+ * and getting the attributes. These attributes can be set by getting the 
+ * collator from <tt>getCollator</tt> and using the APIs in 
+ * <tt>com.ibm.icu.text.Collator</tt>. To update StringSearch to the new 
+ * collator attributes, <tt>reset()</tt> or 
+ * <tt>setCollator(RuleBasedCollator)</tt> has to be called.
+ * </p>
+ * <p>
+ * Consult the 
+ * <a href="http://www.icu-project.org/userguide/searchString.html">
+ * String Search</a> user guide and the <code>SearchIterator</code> 
+ * documentation for more information and examples of use.
+ * </p>
+ * <p>
+ * This class is not subclassable
+ * </p>
+ * @see SearchIterator
+ * @see RuleBasedCollator
+ * @author Laura Werner, synwee
+ * @stable ICU 2.0
+ */
+// internal notes: all methods do not guarantee the correct status of the 
+// characteriterator. the caller has to maintain the original index position
+// if necessary. methods could change the index position as it deems fit
+public final class StringSearch extends SearchIterator
+{
+    
+    // public constructors --------------------------------------------------
+    
+    /**
+     * Initializes the iterator to use the language-specific rules defined in 
+     * the argument collator to search for argument pattern in the argument 
+     * target text. The argument breakiter is used to define logical matches.
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param collator RuleBasedCollator that defines the language rules
+     * @param breakiter A {@link BreakIterator} that is used to determine the 
+     *                boundaries of a logical match. This argument can be null.
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 2.0
+     */
+    public StringSearch(String pattern, CharacterIterator target,
+                        RuleBasedCollator collator, BreakIterator breakiter) 
+    {
+        super(target, breakiter);
+        m_textBeginOffset_ = targetText.getBeginIndex();
+        m_textLimitOffset_ = targetText.getEndIndex();
+        m_collator_ = collator;
+        m_colEIter_ = m_collator_.getCollationElementIterator(target);
+        m_utilColEIter_ = collator.getCollationElementIterator("");
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        m_isCanonicalMatch_ = false;
+        m_pattern_ = new Pattern(pattern);
+        m_matchedIndex_ = DONE;
+        m_charBreakIter_ = BreakIterator.getCharacterInstance(/*m_collator_.getLocale(ULocale.ACTUAL_LOCALE)*/);
+        m_charBreakIter_.setText(target);
+        initialize();
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules defined in 
+     * the argument collator to search for argument pattern in the argument 
+     * target text. No BreakIterators are set to test for logical matches.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param collator RuleBasedCollator that defines the language rules
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 2.0
+     */
+    public StringSearch(String pattern, CharacterIterator target,
+                        RuleBasedCollator collator) 
+    {
+        this(pattern, target, collator, null/*BreakIterator.getCharacterInstance()*/);
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules and 
+     * break iterator rules defined in the argument locale to search for 
+     * argument pattern in the argument target text. 
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param locale locale to use for language and break iterator rules
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0. ClassCastException thrown if the collator for 
+     *            the specified locale is not a RuleBasedCollator.
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 2.0
+     */
+    public StringSearch(String pattern, CharacterIterator target, Locale locale)
+    {
+        this(pattern, target, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules and 
+     * break iterator rules defined in the argument locale to search for 
+     * argument pattern in the argument target text. 
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @param locale ulocale to use for language and break iterator rules
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0. ClassCastException thrown if the collator for 
+     *            the specified locale is not a RuleBasedCollator.
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 3.2
+     */
+    public StringSearch(String pattern, CharacterIterator target, ULocale locale)
+    {
+        this(pattern, target, (RuleBasedCollator)Collator.getInstance(locale),
+             null/*BreakIterator.getCharacterInstance(locale)*/);
+    }
+
+    /**
+     * Initializes the iterator to use the language-specific rules and 
+     * break iterator rules defined in the default locale to search for 
+     * argument pattern in the argument target text. 
+     * See super class documentation for more details on the use of the target 
+     * text and BreakIterator.
+     * @param pattern text to look for.
+     * @param target target text to search for pattern. 
+     * @exception IllegalArgumentException thrown when argument target is null,
+     *            or of length 0. ClassCastException thrown if the collator for 
+     *            the default locale is not a RuleBasedCollator.
+     * @see BreakIterator
+     * @see RuleBasedCollator
+     * @see SearchIterator
+     * @stable ICU 2.0
+     */
+    public StringSearch(String pattern, String target) 
+    {
+        this(pattern, new StringCharacterIterator(target),
+             (RuleBasedCollator)Collator.getInstance(),
+             null/*BreakIterator.getCharacterInstance()*/);
+    }
+
+    // public getters -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Gets the RuleBasedCollator used for the language rules.
+     * </p>
+     * <p>
+     * Since StringSearch depends on the returned RuleBasedCollator, any 
+     * changes to the RuleBasedCollator result should follow with a call to 
+     * either StringSearch.reset() or 
+     * StringSearch.setCollator(RuleBasedCollator) to ensure the correct 
+     * search behaviour.
+     * </p>
+     * @return RuleBasedCollator used by this StringSearch
+     * @see RuleBasedCollator
+     * @see #setCollator
+     * @stable ICU 2.0
+     */
+    public RuleBasedCollator getCollator() 
+    {
+        return m_collator_;
+    }
+    
+    /**
+     * Returns the pattern for which StringSearch is searching for.
+     * @return the pattern searched for
+     * @stable ICU 2.0
+     */
+    public String getPattern() 
+    {
+        return m_pattern_.targetText;
+    }
+    
+    /**
+     * Return the index in the target text where the iterator is currently 
+     * positioned at. 
+     * If the iteration has gone past the end of the target text or past 
+     * the beginning for a backwards search, {@link #DONE} is returned.
+     * @return index in the target text where the iterator is currently 
+     *         positioned at
+     * @stable ICU 2.8
+     */
+    public int getIndex() 
+    {
+        int result = m_colEIter_.getOffset();
+        if (isOutOfBounds(m_textBeginOffset_, m_textLimitOffset_, result)) {
+            return DONE;
+        }
+        return result;
+    }
+    
+    /**
+     * Determines whether canonical matches (option 1, as described in the 
+     * class documentation) is set.
+     * See setCanonical(boolean) for more information.
+     * @see #setCanonical
+     * @return true if canonical matches is set, false otherwise
+     * @stable ICU 2.8
+     */
+    public boolean isCanonical() 
+    {
+        return m_isCanonicalMatch_;
+    }
+    
+    // public setters -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Sets the RuleBasedCollator to be used for language-specific searching.
+     * </p>
+     * <p>
+     * This method causes internal data such as Boyer-Moore shift tables
+     * to be recalculated, but the iterator's position is unchanged.
+     * </p>
+     * @param collator to use for this StringSearch
+     * @exception IllegalArgumentException thrown when collator is null
+     * @see #getCollator
+     * @stable ICU 2.0
+     */
+    public void setCollator(RuleBasedCollator collator) 
+    {
+        if (collator == null) {
+            throw new IllegalArgumentException("Collator can not be null");
+        }
+        m_collator_ = collator;
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        // if status is a failure, ucol_getAttribute returns UCOL_DEFAULT
+        initialize();
+        m_colEIter_.setCollator(m_collator_);
+        m_utilColEIter_.setCollator(m_collator_);
+        m_charBreakIter_ = BreakIterator.getCharacterInstance(/*collator.getLocale(ULocale.VALID_LOCALE)*/);
+        m_charBreakIter_.setText(targetText);
+    }
+    
+    /**
+     * <p>
+     * Set the pattern to search for.  
+     * </p>
+     * <p>
+     * This method causes internal data such as Boyer-Moore shift tables
+     * to be recalculated, but the iterator's position is unchanged.
+     * </p>
+     * @param pattern for searching
+     * @see #getPattern
+     * @exception IllegalArgumentException thrown if pattern is null or of
+     *               length 0
+     * @stable ICU 2.0
+     */
+    public void setPattern(String pattern) 
+    {
+        if (pattern == null || pattern.length() <= 0) {
+            throw new IllegalArgumentException(
+                    "Pattern to search for can not be null or of length 0");
+        }
+        m_pattern_.targetText = pattern;
+        initialize();
+    }
+    
+    /**
+      * Set the target text to be searched. Text iteration will hence begin at 
+     * the start of the text string. This method is useful if you want to 
+     * re-use an iterator to search within a different body of text.
+     * @param text new text iterator to look for match, 
+     * @exception IllegalArgumentException thrown when text is null or has
+     *            0 length
+     * @see #getTarget
+     * @stable ICU 2.8
+     */
+    public void setTarget(CharacterIterator text)
+    {
+        super.setTarget(text);
+        m_textBeginOffset_ = targetText.getBeginIndex();
+        m_textLimitOffset_ = targetText.getEndIndex();
+        m_colEIter_.setText(targetText);
+        m_charBreakIter_.setText(targetText);
+    }
+    
+    /**
+     * <p>
+     * Sets the position in the target text which the next search will start 
+     * from to the argument. This method clears all previous states.
+     * </p>
+     * <p>
+     * This method takes the argument position and sets the position in the 
+     * target text accordingly, without checking if position is pointing to a 
+     * valid starting point to begin searching.
+     * </p>
+     * <p>
+     * Search positions that may render incorrect results are highlighted in 
+     * the class documentation.
+     * </p>
+     * @param position index to start next search from.
+     * @exception IndexOutOfBoundsException thrown if argument position is out
+     *            of the target text range.
+     * @see #getIndex
+     * @stable ICU 2.8
+     */
+    public void setIndex(int position)
+    {
+        super.setIndex(position);
+        m_matchedIndex_ = DONE;
+        m_colEIter_.setExactOffset(position);
+    }
+    
+    /**
+     * <p>
+     * Set the canonical match mode. See class documentation for details.
+     * The default setting for this property is false.
+     * </p>
+     * @param allowCanonical flag indicator if canonical matches are allowed
+     * @see #isCanonical
+     * @stable ICU 2.8
+     */
+    public void setCanonical(boolean allowCanonical)
+    {
+        m_isCanonicalMatch_ = allowCanonical;
+        if (m_isCanonicalMatch_ == true) {
+            if (m_canonicalPrefixAccents_ == null) {
+                m_canonicalPrefixAccents_ = new StringBuffer();
+            }
+            else {
+                m_canonicalPrefixAccents_.delete(0, 
+                                            m_canonicalPrefixAccents_.length());
+            }
+            if (m_canonicalSuffixAccents_ == null) {
+                m_canonicalSuffixAccents_ = new StringBuffer();
+            }
+            else {
+                m_canonicalSuffixAccents_.delete(0, 
+                                            m_canonicalSuffixAccents_.length());
+            }
+        }
+    }
+    
+    // public miscellaneous methods -----------------------------------------
+    
+    /** 
+     * <p>
+     * Resets the search iteration. All properties will be reset to the 
+     * default value.
+     * </p>
+     * <p>
+     * Search will begin at the start of the target text if a forward iteration 
+     * is initiated before a backwards iteration. Otherwise if a 
+     * backwards iteration is initiated before a forwards iteration, the search 
+     * will begin at the end of the target text.
+     * </p>
+     * <p>
+     * Canonical match option will be reset to false, ie an exact match.
+     * </p>
+     * @stable ICU 2.8
+     */
+    public void reset()
+    {
+        // reset is setting the attributes that are already in string search, 
+        // hence all attributes in the collator should be retrieved without any 
+        // problems
+        super.reset();
+        m_isCanonicalMatch_ = false;
+        m_ceMask_ = getMask(m_collator_.getStrength());
+        // if status is a failure, ucol_getAttribute returns UCOL_DEFAULT
+        initialize();
+        m_colEIter_.setCollator(m_collator_);
+        m_colEIter_.reset();
+        m_utilColEIter_.setCollator(m_collator_);
+    }
+
+    // protected methods -----------------------------------------------------
+    
+    /**
+     * <p>
+     * Concrete method to provide the mechanism 
+     * for finding the next <b>forwards</b> match in the target text.
+     * See super class documentation for its use.
+     * </p>  
+     * @param start index in the target text at which the forwards search 
+     *        should begin.
+     * @return the starting index of the next forwards match if found, DONE 
+     *         otherwise
+     * @see #handlePrevious(int)
+     * @see #DONE
+     * @stable ICU 2.8
+     */
+    protected int handleNext(int start)
+    {
+        if (m_pattern_.m_CELength_ == 0) {
+            matchLength = 0;
+            if (m_matchedIndex_ == DONE && start == m_textBeginOffset_) {
+                m_matchedIndex_ = start;
+                return m_matchedIndex_;
+            }
+            
+            targetText.setIndex(start);
+            char ch = targetText.current();
+            // ch can never be done, it is handled by next()
+            char ch2 = targetText.next();
+            if (ch2 == CharacterIterator.DONE) {
+                m_matchedIndex_ = DONE;    
+            }
+            else {
+                m_matchedIndex_ = targetText.getIndex();
+            }
+            if (UTF16.isLeadSurrogate(ch) && UTF16.isTrailSurrogate(ch2)) {
+                targetText.next();
+                m_matchedIndex_ = targetText.getIndex();
+            }
+        }
+        else {
+            if (matchLength <= 0) {
+                // we must have reversed direction after we reached the start
+                // of the target text
+                // see SearchIterator next(), it checks the bounds and returns
+                // if it exceeds the range. It does not allow setting of
+                // m_matchedIndex
+                if (start == m_textBeginOffset_) {
+                    m_matchedIndex_ = DONE;
+                }
+                else {
+                    // for boundary check purposes. this will ensure that the
+                    // next match will not preceed the current offset
+                    // note search->matchedIndex will always be set to something
+                    // in the code
+                    m_matchedIndex_ = start - 1;
+                }
+            }
+    
+            // status checked below
+            if (m_isCanonicalMatch_) {
+                // can't use exact here since extra accents are allowed.
+                handleNextCanonical(start);
+            }
+            else {
+                handleNextExact(start);
+            }
+        }
+        if (m_matchedIndex_ == DONE) {
+            targetText.setIndex(m_textLimitOffset_);
+        }
+        else {
+            targetText.setIndex(m_matchedIndex_);
+        }
+        return m_matchedIndex_;
+    }
+    
+    /**
+     * <p>
+     * Concrete method to provide the mechanism 
+     * for finding the next <b>backwards</b> match in the target text.
+     * See super class documentation for its use.
+     * </p>  
+     * @param start index in the target text at which the backwards search 
+     *        should begin.
+     * @return the starting index of the next backwards match if found, DONE 
+     *         otherwise
+     * @see #handleNext(int)
+     * @see #DONE
+     * @stable ICU 2.8
+     */
+    protected int handlePrevious(int start)
+    {
+        if (m_pattern_.m_CELength_ == 0) {
+            matchLength = 0;
+            // start can never be DONE or 0, it is handled in previous
+            targetText.setIndex(start);
+            char ch = targetText.previous();
+            if (ch == CharacterIterator.DONE) {
+                m_matchedIndex_ = DONE;
+            }
+            else {
+                m_matchedIndex_ = targetText.getIndex();
+                if (UTF16.isTrailSurrogate(ch)) {
+                    if (UTF16.isLeadSurrogate(targetText.previous())) {
+                        m_matchedIndex_ = targetText.getIndex();
+                    }
+                }
+            }            
+        }
+        else {
+            if (matchLength == 0) {
+                // we must have reversed direction after we reached the end
+                // of the target text
+                // see SearchIterator next(), it checks the bounds and returns
+                // if it exceeds the range. It does not allow setting of
+                // m_matchedIndex
+                m_matchedIndex_ = DONE;
+            }
+            if (m_isCanonicalMatch_) {
+                // can't use exact here since extra accents are allowed.
+                handlePreviousCanonical(start);
+            }
+            else {
+                handlePreviousExact(start);
+            }
+        }
+
+        if (m_matchedIndex_ == DONE) {
+            targetText.setIndex(m_textBeginOffset_);
+        }
+        else {
+            targetText.setIndex(m_matchedIndex_);
+        }
+        return m_matchedIndex_;
+    }
+
+    // private static inner classes ----------------------------------------
+    
+    private static class Pattern 
+    {
+        // protected methods -----------------------------------------------
+        
+        /**
+         * Pattern string
+         */
+        protected String targetText;
+        /**
+         * Array containing the collation elements of targetText
+         */
+        protected int m_CE_[];
+        /**
+         * Number of collation elements in m_CE_
+         */
+        protected int m_CELength_; 
+        /**
+         * Flag indicator if targetText starts with an accent
+         */
+        protected boolean m_hasPrefixAccents_;
+        /**
+         * Flag indicator if targetText ends with an accent
+         */
+        protected boolean m_hasSuffixAccents_;
+        /**
+         * Default number of characters to shift for Boyer Moore
+         */
+        protected int m_defaultShiftSize_;
+        /**
+         * Number of characters to shift for Boyer Moore, depending on the
+         * source text to search
+         */
+        protected char m_shift_[];
+        /**
+         * Number of characters to shift backwards for Boyer Moore, depending 
+         * on the source text to search
+         */
+        protected char m_backShift_[];
+        
+        // protected constructors ------------------------------------------
+        
+        /**
+         * Empty constructor 
+         */
+        protected Pattern(String pattern) 
+        {
+            targetText = pattern;
+            m_CE_ = new int[INITIAL_ARRAY_SIZE_];    
+            m_CELength_ = 0;
+            m_hasPrefixAccents_ = false;
+            m_hasSuffixAccents_ = false;
+            m_defaultShiftSize_ = 1;        
+            m_shift_ = new char[MAX_TABLE_SIZE_];
+            m_backShift_ = new char[MAX_TABLE_SIZE_];
+        }
+    }
+
+
+    // private data members ------------------------------------------------
+    
+    /**
+     * target text begin offset. Each targetText has a valid contiguous region 
+     * to iterate and this data member is the offset to the first such
+     * character in the region.
+     */
+    private int m_textBeginOffset_;
+    /**
+     * target text limit offset. Each targetText has a valid contiguous region 
+     * to iterate and this data member is the offset to 1 after the last such
+     * character in the region.
+     */
+    private int m_textLimitOffset_;
+    /**
+     * Upon completion of a search, m_matchIndex_ will store starting offset in
+     * m_text for the match. The Value DONE is the default value. 
+     * If we are not at the start of the text or the end of the text and 
+     * m_matchedIndex_ is DONE it means that we can find any more matches in 
+     * that particular direction
+     */
+    private int m_matchedIndex_; 
+    /**
+     * Current pattern to search for
+     */
+    private Pattern m_pattern_;
+    /**
+     * Collator whose rules are used to perform the search
+     */
+    private RuleBasedCollator m_collator_;
+    /** 
+     * The collation element iterator for the text source.
+     */
+    private CollationElementIterator m_colEIter_;
+    /** 
+     * Utility collation element, used throughout program for temporary 
+     * iteration.
+     */
+    private CollationElementIterator m_utilColEIter_;
+    /**
+     * The mask used on the collation elements to retrieve the valid strength
+     * weight 
+     */
+    private int m_ceMask_;
+    /**
+     * Buffer storing accents during a canonical search
+     */
+    private StringBuffer m_canonicalPrefixAccents_;
+    /**
+     * Buffer storing accents during a canonical search
+     */
+    private StringBuffer m_canonicalSuffixAccents_;
+    /**
+     * Flag to indicate if canonical search is to be done.
+     * E.g looking for "a\u0300" in "a\u0318\u0300" will yield the match at 0.
+     */
+    private boolean m_isCanonicalMatch_;
+    /**
+     * Character break iterator for boundary checking.
+     */
+    private BreakIterator m_charBreakIter_; 
+    /**
+     * Size of the shift tables
+     */
+    private static final int MAX_TABLE_SIZE_ = 257; 
+    /**
+     * Initial array size
+     */
+    private static final int INITIAL_ARRAY_SIZE_ = 256;
+    /**
+     * Utility mask
+     */
+    private static final int SECOND_LAST_BYTE_SHIFT_ = 8;
+    /**
+     * Utility mask
+     */
+    private static final int LAST_BYTE_MASK_ = 0xff;
+    /**
+     * Utility buffer for return values and temporary storage
+     */
+    private int m_utilBuffer_[] = new int[2];
+    /**
+     *  Unsigned 32-Bit Integer Mask
+     */
+    private static final long UNSIGNED_32BIT_MASK = 0xffffffffL;
+
+    // private methods -------------------------------------------------------
+
+    /**
+     * Hash a collation element from its full size (32 bits) down into a
+     * value that can be used as an index into the shift tables.  Right
+     * now we do a modulus by the size of the hash table.
+     * @param ce collation element
+     * @return collapsed version of the collation element
+     */
+    private static final int hash(int ce) 
+    {
+        // the old value UCOL_PRIMARYORDER(ce) % MAX_TABLE_SIZE_ does not work
+        // well with the new collation where most of the latin 1 characters
+        // are of the value xx000xxx. their hashes will most of the time be 0
+        // to be discussed on the hash algo.
+        return CollationElementIterator.primaryOrder(ce) % MAX_TABLE_SIZE_;
+    }
+    
+    /**
+     * Gets the fcd value for a character at the argument index.
+     * This method takes into accounts of the supplementary characters.
+     * Note this method changes the offset in the character iterator.
+     * @param str UTF16 string where character for fcd retrieval resides
+     * @param offset position of the character whose fcd is to be retrieved
+     * @return fcd value
+     */
+    private static final char getFCD(CharacterIterator str, int offset)
+    {
+        str.setIndex(offset);
+        char ch = str.current();
+        char result = NormalizerImpl.getFCD16(ch);
+        
+        if ((result != 0) && (str.getEndIndex() != offset + 1) && 
+            UTF16.isLeadSurrogate(ch)) {
+            ch = str.next();
+            if (UTF16.isTrailSurrogate(ch)) {
+                result = NormalizerImpl.getFCD16FromSurrogatePair(result, ch);
+            } else {
+                result = 0;
+            }
+        }
+        return result;
+    }
+    
+    /**
+     * Gets the fcd value for a character at the argument index.
+     * This method takes into accounts of the supplementary characters.
+     * @param str UTF16 string where character for fcd retrieval resides
+     * @param offset position of the character whose fcd is to be retrieved
+     * @return fcd value
+     */
+    private static final char getFCD(String str, int offset)
+    {
+        char ch = str.charAt(offset);
+        char result = NormalizerImpl.getFCD16(ch);
+        
+        if ((result != 0) && (str.length() != offset + 1) && 
+            UTF16.isLeadSurrogate(ch)) {
+            ch = str.charAt(offset + 1);
+            if (UTF16.isTrailSurrogate(ch)) {
+                result = NormalizerImpl.getFCD16FromSurrogatePair(result, ch);
+            } else {
+                result = 0;
+            }
+        }
+        return result;
+    }
+    
+    /**
+    * Getting the modified collation elements taking into account the collation 
+    * attributes
+    * @param ce 
+    * @return the modified collation element
+    */
+    private final int getCE(int ce)
+    {
+        // note for tertiary we can't use the collator->tertiaryMask, that
+        // is a preprocessed mask that takes into account case options. since
+        // we are only concerned with exact matches, we don't need that.
+        ce &= m_ceMask_;
+        
+        if (m_collator_.isAlternateHandlingShifted()) {
+            // alternate handling here, since only the 16 most significant 
+            // digits is only used, we can safely do a compare without masking
+            // if the ce is a variable, we mask and get only the primary values
+            // no shifting to quartenary is required since all primary values
+            // less than variabletop will need to be masked off anyway.
+            if (((m_collator_.m_variableTopValue_  << 16) & UNSIGNED_32BIT_MASK) > (ce & UNSIGNED_32BIT_MASK)) {
+                if (m_collator_.getStrength() == Collator.QUATERNARY) {
+                    ce = CollationElementIterator.primaryOrder(ce);
+                }
+                else { 
+                    ce = CollationElementIterator.IGNORABLE;
+                }
+            }
+        }
+    
+        return ce;
+    }
+    
+    /**
+     * Appends a int to a int array, increasing the size of the array when 
+     * we are out of space.
+     * @param offset in array to append to
+     * @param value to append
+     * @param array to append to
+     * @return the array appended to, this could be a new and bigger array
+     */
+    private static final int[] append(int offset, int value, int array[])
+    {
+        if (offset >= array.length) {
+            int temp[] = new int[offset + INITIAL_ARRAY_SIZE_];
+            System.arraycopy(array, 0, temp, 0, array.length);
+            array = temp;
+        }
+        array[offset] = value;
+        return array;
+    }
+    
+    /**
+     * Initializing the ce table for a pattern. Stores non-ignorable collation 
+     * keys. Table size will be estimated by the size of the pattern text. 
+     * Table expansion will be perform as we go along. Adding 1 to ensure that 
+     * the table size definitely increases.
+     * Internal method, status assumed to be a success.
+     * @return total number of expansions 
+     */
+    private final int initializePatternCETable()
+    {
+        m_utilColEIter_.setText(m_pattern_.targetText);
+        
+        int offset = 0;
+        int result = 0;
+        int ce = m_utilColEIter_.next();
+    
+        while (ce != CollationElementIterator.NULLORDER) {
+            int newce = getCE(ce);
+            if (newce != CollationElementIterator.IGNORABLE) {
+                m_pattern_.m_CE_ = append(offset, newce, m_pattern_.m_CE_);
+                offset ++;            
+            }
+            result += m_utilColEIter_.getMaxExpansion(ce) - 1;
+            ce = m_utilColEIter_.next();
+        }
+    
+        m_pattern_.m_CE_ = append(offset, 0, m_pattern_.m_CE_);
+        m_pattern_.m_CELength_ = offset;
+    
+        return result;
+    }
+    
+    /**
+     * Initializes the pattern struct.
+     * Internal method, status assumed to be success.
+     * @return expansionsize the total expansion size of the pattern
+     */ 
+    private final int initializePattern()
+    {
+        if (m_collator_.getStrength() == Collator.PRIMARY) {
+            m_pattern_.m_hasPrefixAccents_ = false;
+            m_pattern_.m_hasSuffixAccents_ = false;
+        } else {
+            m_pattern_.m_hasPrefixAccents_ = (getFCD(m_pattern_.targetText, 0) 
+                                                 >> SECOND_LAST_BYTE_SHIFT_) != 0;
+            m_pattern_.m_hasSuffixAccents_ = (getFCD(m_pattern_.targetText, 
+                                                     m_pattern_.targetText.length() 
+                                                     - 1) 
+                                                & LAST_BYTE_MASK_) != 0;
+        }
+        // since intializePattern is an internal method status is a success.
+        return initializePatternCETable();   
+    }
+    
+    /**
+     * Initializing shift tables, with the default values.
+     * If a corresponding default value is 0, the shift table is not set.
+     * @param shift table for forwards shift 
+     * @param backshift table for backwards shift
+     * @param cetable table containing pattern ce
+     * @param cesize size of the pattern ces
+     * @param expansionsize total size of the expansions
+     * @param defaultforward the default forward value
+     * @param defaultbackward the default backward value
+     */
+     private final void setShiftTable(char shift[], 
+                                                    char backshift[], 
+                                                    int cetable[], int cesize, 
+                                                      int expansionsize,
+                                                    char defaultforward,
+                                                      char defaultbackward)
+    {
+        // estimate the value to shift. to do that we estimate the smallest 
+        // number of characters to give the relevant ces, ie approximately
+        // the number of ces minus their expansion, since expansions can come 
+        // from a character.
+        for (int count = 0; count < MAX_TABLE_SIZE_; count ++) {
+            shift[count] = defaultforward;
+        }
+        cesize --; // down to the last index
+        for (int count = 0; count < cesize; count ++) {
+            // number of ces from right of array to the count
+            int temp = defaultforward - count - 1;
+            shift[hash(cetable[count])] = temp > 1 ? ((char)temp) : 1;
+        }
+        shift[hash(cetable[cesize])] = 1;
+        // for ignorables we just shift by one. see test examples.
+        shift[hash(0)] = 1;
+        
+        for (int count = 0; count < MAX_TABLE_SIZE_; count ++) {
+            backshift[count] = defaultbackward;
+        }
+        for (int count = cesize; count > 0; count --) {
+            // the original value count does not seem to work
+            backshift[hash(cetable[count])] = (char)(count > expansionsize ? 
+                                                      count - expansionsize : 1);
+        }
+        backshift[hash(cetable[0])] = 1;
+        backshift[hash(0)] = 1;
+    }
+    
+    /**
+     * <p>Building of the pattern collation element list and the Boyer Moore 
+     * StringSearch table.</p>
+     * <p>The canonical match will only be performed after the default match 
+     * fails.</p>
+     * <p>For both cases we need to remember the size of the composed and 
+     * decomposed versions of the string. Since the Boyer-Moore shift 
+     * calculations shifts by a number of characters in the text and tries to 
+     * match the pattern from that offset, the shift value can not be too large 
+     * in case we miss some characters. To choose a right shift size, we 
+     * estimate the NFC form of the and use its size as a shift guide. The NFC 
+     * form should be the small possible representation of the pattern. Anyways, 
+     * we'll err on the smaller shift size. Hence the calculation for 
+     * minlength. Canonical match will be performed slightly differently. We'll 
+     * split the pattern into 3 parts, the prefix accents (PA), the middle 
+     * string bounded by the first and last base character (MS), the ending 
+     * accents (EA). Matches will be done on MS first, and only when we match 
+     * MS then some processing will be required for the prefix and end accents 
+     * in order to determine if they match PA and EA. Hence the default shift 
+     * values for the canonical match will take the size of either end's accent 
+     * into consideration. Forwards search will take the end accents into 
+     * consideration for the default shift values and the backwards search will 
+     * take the prefix accents into consideration.</p>
+     * <p>If pattern has no non-ignorable ce, we return a illegal argument 
+     * error.</p>
+     */ 
+    private final void initialize()
+    {
+        int expandlength  = initializePattern();   
+        if (m_pattern_.m_CELength_ > 0) {
+            char minlength = (char)(m_pattern_.m_CELength_ > expandlength 
+                                ? m_pattern_.m_CELength_ - expandlength : 1);
+            m_pattern_.m_defaultShiftSize_ = minlength;
+            setShiftTable(m_pattern_.m_shift_, m_pattern_.m_backShift_, 
+                          m_pattern_.m_CE_, m_pattern_.m_CELength_, 
+                          expandlength, minlength, minlength);
+        }
+        else {
+            m_pattern_.m_defaultShiftSize_ = 0;
+        }
+    }
+    
+    /**
+     * Determine whether the search text bounded by the offset start and end is 
+     * one or more whole units of text as determined by the breakiterator in 
+     * StringSearch.
+     * @param start target text start offset
+     * @param end target text end offset
+     */
+    private final boolean isBreakUnit(int start, int end) 
+    {
+        if (breakIterator != null) {
+            int startindex = breakIterator.first();
+            int endindex   = breakIterator.last();
+            
+            // out-of-range indexes are never boundary positions
+            if (start < startindex || start > endindex || end < startindex 
+                || end > endindex) {
+                return false;
+            }
+            // otherwise, we can use following() on the position before the 
+            // specified one and return true of the position we get back is the 
+            // one the user specified
+            boolean result = (start == startindex 
+                              || breakIterator.following(start - 1) == start) 
+                             && (end == endindex 
+                                  || breakIterator.following(end - 1) == end);
+            if (result) {
+                // iterates the individual ces
+                m_utilColEIter_.setText(
+                    new CharacterIteratorWrapper(targetText), start);
+                for (int count = 0; count < m_pattern_.m_CELength_;
+                     count ++) {
+                    int ce = getCE(m_utilColEIter_.next());
+                    if (ce == CollationElementIterator.IGNORABLE) {
+                        count --;
+                        continue;
+                    }
+                    if (ce != m_pattern_.m_CE_[count]) {
+                        return false;
+                    }
+                }
+                int nextce = m_utilColEIter_.next();
+                while (m_utilColEIter_.getOffset() == end 
+                       && getCE(nextce) == CollationElementIterator.IGNORABLE) {
+                    nextce = m_utilColEIter_.next();       
+                }
+                if (nextce != CollationElementIterator.NULLORDER 
+                    && m_utilColEIter_.getOffset() == end) {
+                    // extra collation elements at the end of the match
+                    return false;
+                }
+            }
+            return result;
+        }
+        return true;
+    }
+    
+    /**
+     * Getting the next base character offset if current offset is an accent, 
+     * or the current offset if the current character contains a base character. 
+     * accents the following base character will be returned
+     * @param text string
+     * @param textoffset current offset
+     * @param textlength length of text string
+     * @return the next base character or the current offset
+     *         if the current character is contains a base character.
+     */
+    private final int getNextBaseOffset(CharacterIterator text, 
+                                                        int textoffset)
+    {
+        if (textoffset < text.getEndIndex()) {
+            while (text.getIndex() < text.getEndIndex()) { 
+                int result = textoffset;
+                if ((getFCD(text, textoffset ++) 
+                            >> SECOND_LAST_BYTE_SHIFT_) == 0) {
+                     return result;
+                }
+            }
+            return text.getEndIndex();
+        }
+        return textoffset;
+    }
+    
+    /**
+     * Gets the next base character offset depending on the string search 
+     * pattern data
+     * @param textoffset one offset away from the last character
+     *                   to search for.
+     * @return start index of the next base character or the current offset
+     *         if the current character is contains a base character.
+     */
+    private final int getNextBaseOffset(int textoffset)
+    {
+        if (m_pattern_.m_hasSuffixAccents_ 
+            && textoffset < m_textLimitOffset_) {
+            targetText.setIndex(textoffset);
+            targetText.previous();
+            if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) != 0) {
+                return getNextBaseOffset(targetText, textoffset);
+            }
+        }
+        return textoffset;
+    }
+    
+    /**
+     * Shifting the collation element iterator position forward to prepare for
+     * a following match. If the last character is a unsafe character, we'll 
+     * only shift by 1 to capture contractions, normalization etc.
+     * Internal method, status assumed to be success.
+     * @param textoffset start text position to do search
+     * @param ce the text ce which failed the match.
+     * @param patternceindex index of the ce within the pattern ce buffer which
+     *        failed the match
+     * @return final offset
+     */
+    private int shiftForward(int textoffset, int ce, int patternceindex)
+                                    
+    {
+        if (ce != CollationElementIterator.NULLORDER) {
+            int shift = m_pattern_.m_shift_[hash(ce)];
+            // this is to adjust for characters in the middle of the 
+            // substring for matching that failed.
+            int adjust = m_pattern_.m_CELength_ - patternceindex;
+            if (adjust > 1 && shift >= adjust) {
+                shift -= adjust - 1;
+            }
+            textoffset += shift;
+        }
+        else {
+            textoffset += m_pattern_.m_defaultShiftSize_;
+        }
+         
+        textoffset = getNextBaseOffset(textoffset);
+        // check for unsafe characters
+        // * if it is the start or middle of a contraction: to be done after 
+        //   a initial match is found
+        // * thai or lao base consonant character: similar to contraction
+        // * high surrogate character: similar to contraction
+        // * next character is a accent: shift to the next base character
+        return textoffset;
+    }
+    
+    /**
+     * Gets the offset to the next safe point in text.
+     * ie. not the middle of a contraction, swappable characters or 
+     * supplementary characters.
+     * @param textoffset offset in string
+     * @param end offset in string
+     * @return offset to the next safe character
+     */
+    private final int getNextSafeOffset(int textoffset, int end)
+    {
+        int result = textoffset; // first contraction character
+        targetText.setIndex(result);
+        while (result != end && 
+            m_collator_.isUnsafe(targetText.current())) {
+               result ++;
+               targetText.setIndex(result);
+        }
+        return result; 
+    }
+    
+    /** 
+     * This checks for accents in the potential match started with a composite 
+     * character.
+     * This is really painful... we have to check that composite character do 
+     * not have any extra accents. We have to normalize the potential match and 
+     * find the immediate decomposed character before the match.
+     * The first composite character would have been taken care of by the fcd 
+     * checks in checkForwardExactMatch.
+     * This is the slow path after the fcd of the first character and 
+     * the last character has been checked by checkForwardExactMatch and we 
+     * determine that the potential match has extra non-ignorable preceding
+     * ces.
+     * E.g. looking for \u0301 acute in \u01FA A ring above and acute, 
+     * checkExtraMatchAccent should fail since there is a middle ring in 
+     * \u01FA Note here that accents checking are slow and cautioned in the API 
+     * docs.
+     * Internal method, status assumed to be a success, caller should check 
+     * status before calling this method
+     * @param start index of the potential unfriendly composite character
+     * @param end index of the potential unfriendly composite character
+     * @return true if there is non-ignorable accents before at the beginning
+     *              of the match, false otherwise.
+     */
+    private final boolean checkExtraMatchAccents(int start, int end)
+    {
+        boolean result = false;
+        if (m_pattern_.m_hasPrefixAccents_) {
+            targetText.setIndex(start);
+            
+            if (UTF16.isLeadSurrogate(targetText.next())) {
+                if (!UTF16.isTrailSurrogate(targetText.next())) {
+                    targetText.previous();
+                }
+            }
+            // we are only concerned with the first composite character
+            String str = getString(targetText, start, end);
+            if (Normalizer.quickCheck(str, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+                int safeoffset = getNextSafeOffset(start, end);
+                if (safeoffset != end) {
+                    safeoffset ++;
+                }
+                String decomp = Normalizer.decompose(
+                                str.substring(0, safeoffset - start), false);
+                m_utilColEIter_.setText(decomp);
+                int firstce = m_pattern_.m_CE_[0];
+                boolean ignorable = true;
+                int ce = CollationElementIterator.IGNORABLE;
+                int offset = 0;
+                while (ce != firstce) {
+                    offset = m_utilColEIter_.getOffset();
+                    if (ce != firstce 
+                        && ce != CollationElementIterator.IGNORABLE) {
+                        ignorable = false;
+                    }
+                    ce = m_utilColEIter_.next();
+                }
+                m_utilColEIter_.setExactOffset(offset); // back up 1 to the 
+                m_utilColEIter_.previous();             // right offset
+                offset = m_utilColEIter_.getOffset();
+                result = !ignorable && (UCharacter.getCombiningClass(
+                                            UTF16.charAt(decomp, offset)) != 0);
+            }
+        }
+    
+        return result;
+    }
+    
+    /**
+    * Used by exact matches, checks if there are accents before the match. 
+    * This is really painful... we have to check that composite characters at
+    * the start of the matches have to not have any extra accents. 
+    * We check the FCD of the character first, if it starts with an accent and 
+    * the first pattern ce does not match the first ce of the character, we 
+    * bail.
+    * Otherwise we try normalizing the first composite 
+    * character and find the immediate decomposed character before the match to 
+    * see if it is an non-ignorable accent.
+    * Now normalizing the first composite character is enough because we ensure 
+    * that when the match is passed in here with extra beginning ces, the 
+    * first or last ce that match has to occur within the first character.
+    * E.g. looking for \u0301 acute in \u01FA A ring above and acute, 
+    * checkExtraMatchAccent should fail since there is a middle ring in \u01FA
+    * Note here that accents checking are slow and cautioned in the API docs.
+    * @param start offset 
+    * @param end offset
+    * @return true if there are accents on either side of the match, 
+    *         false otherwise
+    */
+    private final boolean hasAccentsBeforeMatch(int start, int end) 
+    {
+        if (m_pattern_.m_hasPrefixAccents_) {
+            // we have been iterating forwards previously
+            boolean ignorable = true;
+            int firstce = m_pattern_.m_CE_[0];
+            m_colEIter_.setExactOffset(start);
+            int ce  = getCE(m_colEIter_.next());
+            while (ce != firstce) {
+                if (ce != CollationElementIterator.IGNORABLE) {
+                    ignorable = false;
+                }
+                ce = getCE(m_colEIter_.next());
+            }
+            if (!ignorable && m_colEIter_.isInBuffer()) {
+                // within normalization buffer, discontiguous handled here
+                return true;
+            }
+    
+            // within text
+            boolean accent = (getFCD(targetText, start) >> SECOND_LAST_BYTE_SHIFT_)
+                                                        != 0; 
+            if (!accent) {
+                return checkExtraMatchAccents(start, end);
+            }
+            if (!ignorable) {
+                return true;
+            }
+            if (start > m_textBeginOffset_) {
+                targetText.setIndex(start);
+                targetText.previous();
+                if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) 
+                                                                        != 0) {
+                    m_colEIter_.setExactOffset(start);
+                    ce = m_colEIter_.previous();
+                    if (ce != CollationElementIterator.NULLORDER 
+                        && ce != CollationElementIterator.IGNORABLE) {
+                        return true;
+                    }
+                }
+            }
+        }
+      
+        return false;
+    }
+    
+    /**
+     * Used by exact matches, checks if there are accents bounding the match.
+     * Note this is the initial boundary check. If the potential match
+     * starts or ends with composite characters, the accents in those
+     * characters will be determined later.
+     * Not doing backwards iteration here, since discontiguos contraction for 
+     * backwards collation element iterator, use up too many characters.
+     * E.g. looking for \u030A ring in \u01FA A ring above and acute, 
+     * should fail since there is a acute at the end of \u01FA
+     * Note here that accents checking are slow and cautioned in the API docs.
+     * @param start offset of match
+     * @param end end offset of the match
+     * @return true if there are accents on either side of the match, 
+     *         false otherwise
+     */
+    private final boolean hasAccentsAfterMatch(int start, int end) 
+    {
+        if (m_pattern_.m_hasSuffixAccents_) {
+            targetText.setIndex(end);
+            if (end > m_textBeginOffset_ 
+                && UTF16.isTrailSurrogate(targetText.previous())) {
+                if (targetText.getIndex() > m_textBeginOffset_ &&
+                    !UTF16.isLeadSurrogate(targetText.previous())) {
+                    targetText.next();
+                }
+            }
+            if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) != 0) {
+                int firstce  = m_pattern_.m_CE_[0];
+                m_colEIter_.setExactOffset(start);
+                while (getCE(m_colEIter_.next()) != firstce) {
+                }
+                int count = 1;
+                while (count < m_pattern_.m_CELength_) {
+                    if (getCE(m_colEIter_.next()) 
+                        == CollationElementIterator.IGNORABLE) {
+                        count --;
+                    }
+                    count ++;
+                }
+                //int ce = getCE(m_colEIter_.next());
+                int ce = m_colEIter_.next();
+                if (ce != CollationElementIterator.NULLORDER 
+                        && ce != CollationElementIterator.IGNORABLE) {
+                    ce = getCE(ce);
+                }
+                if (ce != CollationElementIterator.NULLORDER 
+                            && ce != CollationElementIterator.IGNORABLE) {
+                    if (m_colEIter_.getOffset() <= end) {
+                        return true;
+                    }
+                    if ((getFCD(targetText, end) >> SECOND_LAST_BYTE_SHIFT_) 
+                        != 0) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+    
+    /**
+    * Checks if the offset runs out of the text string range
+    * @param textstart offset of the first character in the range
+    * @param textlimit limit offset of the text string range
+    * @param offset to test
+    * @return true if offset is out of bounds, false otherwise
+    */
+    private static final boolean isOutOfBounds(int textstart, int textlimit, 
+                                                int offset)
+    {
+        return offset < textstart || offset > textlimit;
+    }
+    
+    /**
+     * Checks for identical match
+     * @param strsrch string search data
+     * @param start offset of possible match
+     * @param end offset of possible match
+     * @return true if identical match is found
+     */
+    private final boolean checkIdentical(int start, int end) 
+    {
+        if (m_collator_.getStrength() != Collator.IDENTICAL) {
+            return true;
+        }
+    
+        String textstr = getString(targetText, start, end - start);
+        if (Normalizer.quickCheck(textstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            textstr = Normalizer.decompose(textstr, false);
+        }
+        String patternstr = m_pattern_.targetText;
+        if (Normalizer.quickCheck(patternstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            patternstr = Normalizer.decompose(patternstr, false);
+        }
+        return textstr.equals(patternstr);
+    }
+    
+    /**
+     * Checks to see if the match is repeated
+     * @param start new match start index
+     * @param limit new match limit index
+     * @return true if the the match is repeated, false otherwise
+     */
+    private final boolean checkRepeatedMatch(int start, int limit)
+    {
+        if (m_matchedIndex_ == DONE) {
+            return false;
+        }
+        int end = limit - 1; // last character in the match
+        int lastmatchend = m_matchedIndex_ + matchLength - 1; 
+        if (!isOverlapping()) {
+            return (start >= m_matchedIndex_ && start <= lastmatchend) 
+                    || (end >= m_matchedIndex_ && end <= lastmatchend)
+                    || (start <= m_matchedIndex_ && end >= lastmatchend);
+                      
+        }
+        return start <= m_matchedIndex_ && end >= lastmatchend;
+    }
+    
+    /**
+     * Checks match for contraction. 
+     * If the match ends with a partial contraction we fail.
+     * If the match starts too far off (because of backwards iteration) we try 
+     * to chip off the extra characters depending on whether a breakiterator 
+     * has been used.
+     * Temporary utility buffer used to return modified start and end.
+     * @param start offset of potential match, to be modified if necessary
+     * @param end offset of potential match, to be modified if necessary
+     * @return true if match passes the contraction test, false otherwise.
+     */
+    private final boolean checkNextExactContractionMatch(int start, int end) 
+    {
+        // This part checks if either ends of the match contains potential 
+        // contraction. If so we'll have to iterate through them
+        char endchar = 0;
+        if (end < m_textLimitOffset_) {
+            targetText.setIndex(end);
+            endchar = targetText.current();
+        }
+        char poststartchar = 0;
+        if (start + 1 < m_textLimitOffset_) {
+            targetText.setIndex(start + 1);
+            poststartchar = targetText.current();
+        }
+        if (m_collator_.isUnsafe(endchar) 
+            || m_collator_.isUnsafe(poststartchar)) {
+            // expansion prefix, what's left to iterate
+            int bufferedCEOffset = m_colEIter_.m_CEBufferOffset_;
+            boolean hasBufferedCE = bufferedCEOffset > 0;
+            m_colEIter_.setExactOffset(start);
+            int temp = start;
+            while (bufferedCEOffset > 0) {
+                // getting rid of the redundant ce, caused by setOffset.
+                // since backward contraction/expansion may have extra ces if 
+                // we are in the normalization buffer, hasAccentsBeforeMatch 
+                // would have taken care of it.
+                // E.g. the character \u01FA will have an expansion of 3, but 
+                // if we are only looking for acute and ring \u030A and \u0301, 
+                // we'll have to skip the first ce in the expansion buffer.
+                m_colEIter_.next();
+                if (m_colEIter_.getOffset() != temp) {
+                    start = temp;
+                    temp  = m_colEIter_.getOffset();
+                }
+                bufferedCEOffset --;
+            }
+    
+            int count = 0;
+            while (count < m_pattern_.m_CELength_) {
+                int ce = getCE(m_colEIter_.next());
+                if (ce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+                if (hasBufferedCE && count == 0 
+                    && m_colEIter_.getOffset() != temp) {
+                    start = temp;
+                    temp   = m_colEIter_.getOffset();
+                }
+                if (ce != m_pattern_.m_CE_[count]) {
+                    end ++;
+                    end = getNextBaseOffset(end);  
+                    m_utilBuffer_[0] = start;
+                    m_utilBuffer_[1] = end;
+                    return false;
+                }
+                count ++;
+            }
+        } 
+        m_utilBuffer_[0] = start;
+        m_utilBuffer_[1] = end;
+        return true;
+    }
+    
+    
+    /**
+     * Checks and sets the match information if found.
+     * Checks 
+     * <ul>
+     * <li> the potential match does not repeat the previous match
+     * <li> boundaries are correct
+     * <li> exact matches has no extra accents
+     * <li> identical matchesb
+     * <li> potential match does not end in the middle of a contraction
+     * </ul>
+     * Otherwise the offset will be shifted to the next character.
+     * The result m_matchIndex_ and m_matchLength_ will be set to the truncated
+     * more fitting result value.
+     * Uses the temporary utility buffer for storing the modified textoffset.
+     * @param textoffset offset in the collation element text.
+     * @return true if the match is valid, false otherwise
+     */
+    private final boolean checkNextExactMatch(int textoffset)
+    {
+        int start = m_colEIter_.getOffset();        
+        if (!checkNextExactContractionMatch(start, textoffset)) {
+            // returns the modified textoffset
+            m_utilBuffer_[0] = m_utilBuffer_[1];
+            return false;
+        }
+    
+        start = m_utilBuffer_[0];
+        textoffset = m_utilBuffer_[1];
+        // this totally matches, however we need to check if it is repeating
+        if (!isBreakUnit(start, textoffset) 
+            || checkRepeatedMatch(start, textoffset) 
+            || hasAccentsBeforeMatch(start, textoffset) 
+            || !checkIdentical(start, textoffset) 
+            || hasAccentsAfterMatch(start, textoffset)) {
+            textoffset ++;
+            textoffset = getNextBaseOffset(textoffset);  
+            m_utilBuffer_[0] = textoffset;
+            return false;
+        }
+        
+        if (m_collator_.getStrength() == Collator.PRIMARY) {
+            textoffset = checkBreakBoundary(textoffset);
+        }
+            
+        // totally match, we will get rid of the ending ignorables.
+        m_matchedIndex_  = start;
+        matchLength = textoffset - start;
+        return true;
+    }
+    
+    /**
+    * Getting the previous base character offset, or the current offset if the 
+    * current character is a base character
+    * @param text the source text to work on
+    * @param textoffset one offset after the current character
+    * @return the offset of the next character after the base character or the 
+    *             first composed character with accents
+    */
+    private final int getPreviousBaseOffset(CharacterIterator text, 
+                                            int textoffset)
+    {
+        if (textoffset > m_textBeginOffset_) {
+            while (true) {
+                int result = textoffset;
+                text.setIndex(result);
+                if (UTF16.isTrailSurrogate(text.previous())) {
+                    if (text.getIndex() != text.getBeginIndex() &&
+                        !UTF16.isLeadSurrogate(text.previous())) {
+                        text.next();
+                    }
+                }
+                textoffset = text.getIndex();
+                char fcd = getFCD(text, textoffset);
+                if ((fcd >> SECOND_LAST_BYTE_SHIFT_) == 0) {
+                    if ((fcd & LAST_BYTE_MASK_) != 0) {
+                        return textoffset;
+                    }
+                    return result;
+                }
+                if (textoffset == m_textBeginOffset_) {
+                    return m_textBeginOffset_;
+                }
+            }
+        }
+        return textoffset;
+    }
+    
+    /**
+    * Getting the indexes of the accents that are not blocked in the argument
+    * accent array
+    * @param accents accents in nfd.
+    * @param accentsindex array to store the indexes of accents in accents that 
+    *         are not blocked
+    * @return the length of populated accentsindex
+    */
+    private int getUnblockedAccentIndex(StringBuffer accents, 
+                                        int accentsindex[])
+    {
+        int index = 0;
+        int length = accents.length();
+        int cclass = 0;
+        int result = 0;
+        while (index < length) {
+            int codepoint = UTF16.charAt(accents, index);
+            int tempclass = UCharacter.getCombiningClass(codepoint);
+            if (tempclass != cclass) {
+                cclass = tempclass;
+                accentsindex[result] = index;
+                result ++;
+            }
+            if (UCharacter.isSupplementary(codepoint)) {
+                index += 2;
+            }
+            else {
+                index ++;
+            }
+        }
+        accentsindex[result] = length;
+        return result;
+    }
+
+    /**
+     * Appends 3 StringBuffer/CharacterIterator together into a destination 
+     * string buffer.
+     * @param source1 string buffer
+     * @param source2 character iterator
+     * @param start2 start of the character iterator to merge
+     * @param end2 end of the character iterator to merge
+     * @param source3 string buffer
+     * @return appended string buffer
+     */
+    private static final StringBuffer merge(StringBuffer source1, 
+                                             CharacterIterator source2,
+                                             int start2, int end2,
+                                             StringBuffer source3) 
+    {
+        StringBuffer result = new StringBuffer();    
+        if (source1 != null && source1.length() != 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            if(com.ibm.icu.impl.ICUDebug.isJDK14OrHigher){
+                result.append(source1);
+            }else{
+                result.append(source1.toString());
+            }
+        }
+        source2.setIndex(start2);
+        while (source2.getIndex() < end2) {
+            result.append(source2.current());
+            source2.next();
+        }
+        if (source3 != null && source3.length() != 0) {
+            // jdk 1.3.1 does not have append(StringBuffer) yet
+            if(com.ibm.icu.impl.ICUDebug.isJDK14OrHigher){
+                result.append(source3);
+            }else{
+                result.append(source3.toString());
+            }
+        }
+        return result;
+    }
+    
+    /**
+    * Running through a collation element iterator to see if the contents 
+    * matches pattern in string search data
+    * @param coleiter collation element iterator to test
+    * @return true if a match if found, false otherwise
+    */
+    private final boolean checkCollationMatch(CollationElementIterator coleiter)
+    {
+        int patternceindex = m_pattern_.m_CELength_;
+        int offset = 0;
+        while (patternceindex > 0) {
+            int ce = getCE(coleiter.next());
+            if (ce == CollationElementIterator.IGNORABLE) {
+                continue;
+            }
+            if (ce != m_pattern_.m_CE_[offset]) {
+                return false;
+            }
+            offset ++;
+            patternceindex --;
+        }
+        return true;
+    }
+    
+    /**
+     * Rearranges the front accents to try matching.
+     * Prefix accents in the text will be grouped according to their combining 
+     * class and the groups will be mixed and matched to try find the perfect 
+     * match with the pattern.
+     * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+     * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+     *            substrings "\u030A", "\u0301", "\u0325", "\u030A\u0301", 
+     *            "\u030A\u0325", "\u0301\u0325".
+     * step 2: check if any of the generated substrings matches the pattern.
+     * Internal method, status is assumed to be success, caller has to check 
+     * status before calling this method.
+     * @param start first offset of the accents to start searching
+     * @param end start of the last accent set
+     * @return DONE if a match is not found, otherwise return the starting
+     *         offset of the match. Note this start includes all preceding 
+     *            accents.
+     */
+    private int doNextCanonicalPrefixMatch(int start, int end)
+    {
+        if ((getFCD(targetText, start) & LAST_BYTE_MASK_) == 0) {
+            // die... failed at a base character
+            return DONE;
+        }
+    
+        start = targetText.getIndex(); // index changed by fcd
+        int offset = getNextBaseOffset(targetText, start);
+        start = getPreviousBaseOffset(start);
+    
+        StringBuffer accents = new StringBuffer();
+        String accentstr = getString(targetText, start, offset - start);
+        // normalizing the offensive string
+        if (Normalizer.quickCheck(accentstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            accentstr = Normalizer.decompose(accentstr, false);
+        }
+        accents.append(accentstr);
+            
+        int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];      
+        int accentsize = getUnblockedAccentIndex(accents, accentsindex);
+        int count = (2 << (accentsize - 1)) - 1;  
+        while (count > 0) {
+            // copy the base characters
+            m_canonicalPrefixAccents_.delete(0, 
+                                        m_canonicalPrefixAccents_.length());
+            int k = 0;
+            for (; k < accentsindex[0]; k ++) {
+                m_canonicalPrefixAccents_.append(accents.charAt(k));
+            }
+            // forming all possible canonical rearrangement by dropping
+            // sets of accents
+            for (int i = 0; i <= accentsize - 1; i ++) {
+                int mask = 1 << (accentsize - i - 1);
+                if ((count & mask) != 0) {
+                    for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+                                                                        j ++) {
+                        m_canonicalPrefixAccents_.append(accents.charAt(j));
+                    }
+                }
+            }
+            StringBuffer match = merge(m_canonicalPrefixAccents_,
+                                       targetText, offset, end,
+                                       m_canonicalSuffixAccents_);
+                
+            // if status is a failure, ucol_setText does nothing.
+            // run the collator iterator through this match
+            m_utilColEIter_.setText(match.toString());
+            if (checkCollationMatch(m_utilColEIter_)) {
+                 return start;
+            }
+            count --;
+        }
+        return DONE;
+    }
+
+    /**
+    * Gets the offset to the safe point in text before textoffset.
+    * ie. not the middle of a contraction, swappable characters or 
+    * supplementary characters.
+    * @param start offset in string
+    * @param textoffset offset in string
+    * @return offset to the previous safe character
+    */
+    private final int getPreviousSafeOffset(int start, int textoffset)
+    {
+        int result = textoffset; // first contraction character
+        targetText.setIndex(textoffset);
+        while (result >= start && m_collator_.isUnsafe(targetText.previous())) {
+            result = targetText.getIndex();
+        }
+        if (result != start) {
+            // the first contraction character is consider unsafe here
+            result = targetText.getIndex(); // originally result --;
+        }
+        return result; 
+    }
+
+    /**
+     * Take the rearranged end accents and tries matching. If match failed at
+     * a seperate preceding set of accents (seperated from the rearranged on by
+     * at least a base character) then we rearrange the preceding accents and 
+     * tries matching again.
+     * We allow skipping of the ends of the accent set if the ces do not match. 
+     * However if the failure is found before the accent set, it fails.
+     * Internal method, status assumed to be success, caller has to check 
+     * status before calling this method.
+     * @param textoffset of the start of the rearranged accent
+     * @return DONE if a match is not found, otherwise return the starting
+     *         offset of the match. Note this start includes all preceding 
+     *         accents.
+     */
+    private int doNextCanonicalSuffixMatch(int textoffset)
+    {
+        int safelength = 0;
+        StringBuffer safetext;
+        int safeoffset = m_textBeginOffset_; 
+        
+        if (textoffset != m_textBeginOffset_ 
+            && m_canonicalSuffixAccents_.length() > 0
+            && m_collator_.isUnsafe(m_canonicalSuffixAccents_.charAt(0))) {
+            safeoffset     = getPreviousSafeOffset(m_textBeginOffset_, 
+                                                    textoffset);
+            safelength     = textoffset - safeoffset;
+            safetext       = merge(null, targetText, safeoffset, textoffset, 
+                                   m_canonicalSuffixAccents_);
+        }
+        else {
+            safetext = m_canonicalSuffixAccents_;
+        }
+    
+        // if status is a failure, ucol_setText does nothing
+        CollationElementIterator coleiter = m_utilColEIter_;
+        coleiter.setText(safetext.toString());
+        // status checked in loop below
+    
+        int ceindex = m_pattern_.m_CELength_ - 1;
+        boolean isSafe = true; // indication flag for position in safe zone
+        
+        while (ceindex >= 0) {
+            int textce = coleiter.previous();
+            if (textce == CollationElementIterator.NULLORDER) {
+                // check if we have passed the safe buffer
+                if (coleiter == m_colEIter_) {
+                    return DONE;
+                }
+                coleiter = m_colEIter_;
+                if (safetext != m_canonicalSuffixAccents_) {
+                    safetext.delete(0, safetext.length());
+                }
+                coleiter.setExactOffset(safeoffset);
+                // status checked at the start of the loop
+                isSafe = false;
+                continue;
+            }
+            textce = getCE(textce);
+            if (textce != CollationElementIterator.IGNORABLE 
+                && textce != m_pattern_.m_CE_[ceindex]) {
+                // do the beginning stuff
+                int failedoffset = coleiter.getOffset();
+                if (isSafe && failedoffset >= safelength) {
+                    // alas... no hope. failed at rearranged accent set
+                    return DONE;
+                }
+                else {
+                    if (isSafe) {
+                        failedoffset += safeoffset;
+                    }
+                    
+                    // try rearranging the front accents
+                    int result = doNextCanonicalPrefixMatch(failedoffset, 
+                                                            textoffset);
+                    if (result != DONE) {
+                        // if status is a failure, ucol_setOffset does nothing
+                        m_colEIter_.setExactOffset(result);
+                    }
+                    return result;
+                }
+            }
+            if (textce == m_pattern_.m_CE_[ceindex]) {
+                ceindex --;
+            }
+        }
+        // set offset here
+        if (isSafe) {
+            int result = coleiter.getOffset();
+            // sets the text iterator with the correct expansion and offset
+            int leftoverces = coleiter.m_CEBufferOffset_;
+            if (result >= safelength) { 
+                result = textoffset;
+            }
+            else {
+                result += safeoffset;
+            }
+            m_colEIter_.setExactOffset(result);
+            m_colEIter_.m_CEBufferOffset_ = leftoverces;
+            return result;
+        }
+        
+        return coleiter.getOffset();              
+    }
+    
+    /**
+     * Trying out the substring and sees if it can be a canonical match.
+     * This will try normalizing the end accents and arranging them into 
+     * canonical equivalents and check their corresponding ces with the pattern 
+     * ce.
+     * Suffix accents in the text will be grouped according to their combining 
+     * class and the groups will be mixed and matched to try find the perfect 
+     * match with the pattern.
+     * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+     * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+     *         substrings
+     *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+     *         "\u0301\u0325".
+     * step 2: check if any of the generated substrings matches the pattern.
+     * @param textoffset end offset in the collation element text that ends with 
+     *                   the accents to be rearranged
+     * @return true if the match is valid, false otherwise
+     */
+    private boolean doNextCanonicalMatch(int textoffset)
+    {
+        int offset = m_colEIter_.getOffset();
+        targetText.setIndex(textoffset);
+        if (UTF16.isTrailSurrogate(targetText.previous()) 
+            && targetText.getIndex() > m_textBeginOffset_) { 
+            if (!UTF16.isLeadSurrogate(targetText.previous())) {
+                targetText.next();
+            }
+        }
+        if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) == 0) {
+            if (m_pattern_.m_hasPrefixAccents_) {
+                offset = doNextCanonicalPrefixMatch(offset, textoffset);
+                if (offset != DONE) {
+                    m_colEIter_.setExactOffset(offset);
+                    return true;
+                }
+            }
+            return false;
+        }
+    
+        if (!m_pattern_.m_hasSuffixAccents_) {
+            return false;
+        }
+    
+        StringBuffer accents = new StringBuffer();
+        // offset to the last base character in substring to search
+        int baseoffset = getPreviousBaseOffset(targetText, textoffset);
+        // normalizing the offensive string
+        String accentstr = getString(targetText, baseoffset, 
+                                     textoffset - baseoffset);
+        if (Normalizer.quickCheck(accentstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            accentstr = Normalizer.decompose(accentstr, false);
+        }
+        accents.append(accentstr);
+        // status checked in loop below
+            
+        int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];
+        int size = getUnblockedAccentIndex(accents, accentsindex);
+    
+        // 2 power n - 1 plus the full set of accents
+        int  count = (2 << (size - 1)) - 1;  
+        while (count > 0) {
+            m_canonicalSuffixAccents_.delete(0, 
+                                           m_canonicalSuffixAccents_.length());
+            // copy the base characters
+            for (int k = 0; k < accentsindex[0]; k ++) {
+                m_canonicalSuffixAccents_.append(accents.charAt(k));
+            }
+            // forming all possible canonical rearrangement by dropping
+            // sets of accents
+            for (int i = 0; i <= size - 1; i ++) {
+                int mask = 1 << (size - i - 1);
+                if ((count & mask) != 0) {
+                    for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+                        j ++) {
+                        m_canonicalSuffixAccents_.append(accents.charAt(j));
+                    }
+                }
+            }
+            offset = doNextCanonicalSuffixMatch(baseoffset);
+            if (offset != DONE) {
+                return true; // match found
+            }
+            count --;
+        }
+        return false;
+    }
+    
+    /**
+     * Gets the previous base character offset depending on the string search 
+     * pattern data
+     * @param strsrch string search data
+     * @param textoffset current offset, current character
+     * @return the offset of the next character after this base character or 
+     *             itself if it is a composed character with accents
+     */
+    private final int getPreviousBaseOffset(int textoffset)
+    {
+        if (m_pattern_.m_hasPrefixAccents_ && textoffset > m_textBeginOffset_) {
+            int offset = textoffset;
+            if ((getFCD(targetText, offset) >> SECOND_LAST_BYTE_SHIFT_) != 0) {
+                return getPreviousBaseOffset(targetText, textoffset);
+            }
+        }
+        return textoffset;
+    }
+    
+    /**
+     * Checks match for contraction. 
+     * If the match ends with a partial contraction we fail.
+     * If the match starts too far off (because of backwards iteration) we try 
+     * to chip off the extra characters.
+     * Uses the temporary util buffer for return values of the modified start
+     * and end.
+     * @param start offset of potential match, to be modified if necessary
+     * @param end offset of potential match, to be modified if necessary
+     * @return true if match passes the contraction test, false otherwise. 
+     */
+    private boolean checkNextCanonicalContractionMatch(int start, int end) 
+    {
+        // This part checks if either ends of the match contains potential 
+        // contraction. If so we'll have to iterate through them
+        char schar = 0;
+        char echar = 0;
+        if (end < m_textLimitOffset_) {
+            targetText.setIndex(end);
+            echar = targetText.current();
+        }
+        if (start < m_textLimitOffset_) {
+            targetText.setIndex(start + 1);
+            schar = targetText.current();
+        }
+        if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+            int expansion  = m_colEIter_.m_CEBufferOffset_;
+            boolean hasExpansion = expansion > 0;
+            m_colEIter_.setExactOffset(start);
+            int temp = start;
+            while (expansion > 0) {
+                // getting rid of the redundant ce, caused by setOffset.
+                // since backward contraction/expansion may have extra ces if 
+                // we are in the normalization buffer, hasAccentsBeforeMatch 
+                // would have taken care of it.
+                // E.g. the character \u01FA will have an expansion of 3, but 
+                // if we are only looking for acute and ring \u030A and \u0301, 
+                // we'll have to skip the first ce in the expansion buffer.
+                m_colEIter_.next();
+                if (m_colEIter_.getOffset() != temp) {
+                    start = temp;
+                    temp  = m_colEIter_.getOffset();
+                }
+                expansion --;
+            }
+    
+            int count = 0;
+            while (count < m_pattern_.m_CELength_) {
+                int ce = getCE(m_colEIter_.next());
+                // status checked below, note that if status is a failure
+                // ucol_next returns UCOL_NULLORDER
+                if (ce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+                if (hasExpansion && count == 0 
+                    && m_colEIter_.getOffset() != temp) {
+                    start = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+    
+                if (count == 0 && ce != m_pattern_.m_CE_[0]) {
+                    // accents may have extra starting ces, this occurs when a 
+                    // pure accent pattern is matched without rearrangement
+                    // text \u0325\u0300 and looking for \u0300
+                    int expected = m_pattern_.m_CE_[0]; 
+                    if ((getFCD(targetText, start) & LAST_BYTE_MASK_) != 0) {
+                        ce = getCE(m_colEIter_.next());
+                        while (ce != expected 
+                               && ce != CollationElementIterator.NULLORDER 
+                               && m_colEIter_.getOffset() <= end) {
+                            ce = getCE(m_colEIter_.next());
+                        }
+                    }
+                }
+                if (ce != m_pattern_.m_CE_[count]) {
+                    end ++;
+                    end = getNextBaseOffset(end);  
+                    m_utilBuffer_[0] = start;
+                    m_utilBuffer_[1] = end;
+                    return false;
+                }
+                count ++;
+            }
+        } 
+        m_utilBuffer_[0] = start;
+        m_utilBuffer_[1] = end;
+        return true;
+    }
+
+    /**
+     * Checks and sets the match information if found.
+     * Checks 
+     * <ul>
+     * <li> the potential match does not repeat the previous match
+     * <li> boundaries are correct
+     * <li> potential match does not end in the middle of a contraction
+     * <li> identical matches
+     * </ul>
+     * Otherwise the offset will be shifted to the next character.
+     * The result m_matchIndex_ and m_matchLength_ will be set to the truncated
+     * more fitting result value.
+     * Uses the temporary utility buffer for storing the modified textoffset.
+     * @param textoffset offset in the collation element text.
+     * @return true if the match is valid, false otherwise
+     */
+    private boolean checkNextCanonicalMatch(int textoffset)
+    {
+        // to ensure that the start and ends are not composite characters
+        // if we have a canonical accent match
+        if ((m_pattern_.m_hasSuffixAccents_ 
+                && m_canonicalSuffixAccents_.length() != 0) || 
+            (m_pattern_.m_hasPrefixAccents_ 
+                && m_canonicalPrefixAccents_.length() != 0)) {
+            m_matchedIndex_ = getPreviousBaseOffset(m_colEIter_.getOffset());
+            matchLength = textoffset - m_matchedIndex_;
+            return true;
+        }
+    
+        int start = m_colEIter_.getOffset();
+        if (!checkNextCanonicalContractionMatch(start, textoffset)) {
+            // return the modified textoffset
+            m_utilBuffer_[0] = m_utilBuffer_[1]; 
+            return false;
+        }
+        start = m_utilBuffer_[0];
+        textoffset = m_utilBuffer_[1];
+        start = getPreviousBaseOffset(start);
+        // this totally matches, however we need to check if it is repeating
+        if (checkRepeatedMatch(start, textoffset) 
+            || !isBreakUnit(start, textoffset) 
+            || !checkIdentical(start, textoffset)) {
+            textoffset ++;
+            textoffset = getNextBaseOffset(targetText, textoffset);
+            m_utilBuffer_[0] = textoffset;
+            return false;
+        }
+        
+        m_matchedIndex_  = start;
+        matchLength = textoffset - start;
+        return true;
+    }
+    
+    /**
+     * Shifting the collation element iterator position forward to prepare for
+     * a preceding match. If the first character is a unsafe character, we'll 
+     * only shift by 1 to capture contractions, normalization etc.
+     * @param textoffset start text position to do search
+     * @param ce the text ce which failed the match.
+     * @param patternceindex index of the ce within the pattern ce buffer which
+     *        failed the match
+     * @return final offset
+     */
+    private int reverseShift(int textoffset, int ce, int patternceindex)
+    {         
+        if (isOverlapping()) {
+            if (textoffset != m_textLimitOffset_) {
+                textoffset --;
+            }
+            else {
+                textoffset -= m_pattern_.m_defaultShiftSize_;
+            }
+        }
+        else {
+            if (ce != CollationElementIterator.NULLORDER) {
+                int shift = m_pattern_.m_backShift_[hash(ce)];
+                
+                // this is to adjust for characters in the middle of the substring 
+                // for matching that failed.
+                int adjust = patternceindex;
+                if (adjust > 1 && shift > adjust) {
+                    shift -= adjust - 1;
+                }
+                textoffset -= shift;
+            }
+            else {
+                textoffset -= m_pattern_.m_defaultShiftSize_;
+            }
+        }    
+        
+        textoffset = getPreviousBaseOffset(textoffset);
+        return textoffset;
+    }
+
+    /**
+     * Checks match for contraction. 
+     * If the match starts with a partial contraction we fail.
+     * Uses the temporary utility buffer to return the modified start and end.
+     * @param start offset of potential match, to be modified if necessary
+     * @param end offset of potential match, to be modified if necessary
+     * @return true if match passes the contraction test, false otherwise.
+     */
+    private boolean checkPreviousExactContractionMatch(int start, int end) 
+    {
+        // This part checks if either ends of the match contains potential 
+        // contraction. If so we'll have to iterate through them
+        char echar = 0;
+        if (end < m_textLimitOffset_) {
+            targetText.setIndex(end);
+            echar = targetText.current();
+        }
+        char schar = 0;
+        if (start + 1 < m_textLimitOffset_) {
+            targetText.setIndex(start + 1);
+            schar = targetText.current();
+        }
+        if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+            // expansion suffix, what's left to iterate
+            int expansion = m_colEIter_.m_CEBufferSize_ 
+                                            - m_colEIter_.m_CEBufferOffset_;
+            boolean hasExpansion = expansion > 0;
+            m_colEIter_.setExactOffset(end);
+            int temp = end;
+            while (expansion > 0) {
+                // getting rid of the redundant ce
+                // since forward contraction/expansion may have extra ces
+                // if we are in the normalization buffer, hasAccentsBeforeMatch
+                // would have taken care of it.
+                // E.g. the character \u01FA will have an expansion of 3, but if
+                // we are only looking for A ring A\u030A, we'll have to skip the 
+                // last ce in the expansion buffer
+                m_colEIter_.previous();
+                if (m_colEIter_.getOffset() != temp) {
+                    end = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+                expansion --;
+            }
+    
+            int count = m_pattern_.m_CELength_;
+            while (count > 0) {
+                int ce = getCE(m_colEIter_.previous());
+                // status checked below, note that if status is a failure
+                // ucol_previous returns UCOL_NULLORDER
+                if (ce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+                if (hasExpansion && count == 0 
+                    && m_colEIter_.getOffset() != temp) {
+                    end = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+                if (ce != m_pattern_.m_CE_[count - 1]) {
+                    start --;
+                    start = getPreviousBaseOffset(targetText, start);
+                    m_utilBuffer_[0] = start;
+                    m_utilBuffer_[1] = end;
+                    return false;
+                }
+                count --;
+            }
+        } 
+        m_utilBuffer_[0] = start;
+        m_utilBuffer_[1] = end;
+        return true;
+    }
+    
+    /**
+     * Checks and sets the match information if found.
+     * Checks 
+     * <ul>
+     * <li> the current match does not repeat the last match
+     * <li> boundaries are correct
+     * <li> exact matches has no extra accents
+     * <li> identical matches
+     * </ul>
+     * Otherwise the offset will be shifted to the preceding character.
+     * Uses the temporary utility buffer to store the modified textoffset.
+     * @param textoffset offset in the collation element text. the returned value
+     *        will be the truncated start offset of the match or the new start 
+     *        search offset.
+     * @return true if the match is valid, false otherwise
+     */
+    private final boolean checkPreviousExactMatch(int textoffset)
+    {
+        // to ensure that the start and ends are not composite characters
+        int end = m_colEIter_.getOffset();        
+        if (!checkPreviousExactContractionMatch(textoffset, end)) {
+            return false;
+        }
+        textoffset = m_utilBuffer_[0];
+        end = m_utilBuffer_[1];
+            
+        // this totally matches, however we need to check if it is repeating
+        // the old match
+        if (checkRepeatedMatch(textoffset, end) 
+            || !isBreakUnit(textoffset, end) 
+            || hasAccentsBeforeMatch(textoffset, end) 
+            || !checkIdentical(textoffset, end) 
+            || hasAccentsAfterMatch(textoffset, end)) {
+            textoffset --;
+            textoffset = getPreviousBaseOffset(targetText, textoffset);
+            m_utilBuffer_[0] = textoffset;
+            return false;
+        }
+        
+        if (m_collator_.getStrength() == Collator.PRIMARY) {
+            end = checkBreakBoundary(end);
+        }
+        
+        m_matchedIndex_ = textoffset;
+        matchLength = end - textoffset;
+        return true;
+    }
+
+    /**
+     * Rearranges the end accents to try matching.
+     * Suffix accents in the text will be grouped according to their combining 
+     * class and the groups will be mixed and matched to try find the perfect 
+     * match with the pattern.
+     * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+     * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+     *             substrings
+     *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+     *         "\u0301\u0325".
+     * step 2: check if any of the generated substrings matches the pattern.
+     * @param start offset of the first base character
+     * @param end start of the last accent set
+     * @return DONE if a match is not found, otherwise return the ending
+     *         offset of the match. Note this start includes all following 
+     *         accents.
+     */
+    private int doPreviousCanonicalSuffixMatch(int start, int end)
+    {
+        targetText.setIndex(end);
+        if (UTF16.isTrailSurrogate(targetText.previous()) 
+            && targetText.getIndex() > m_textBeginOffset_) {
+            if (!UTF16.isLeadSurrogate(targetText.previous())) {
+                targetText.next();
+            } 
+        }
+        if ((getFCD(targetText, targetText.getIndex()) & LAST_BYTE_MASK_) == 0) {
+            // die... failed at a base character
+            return DONE;
+        }
+        end = getNextBaseOffset(targetText, end);
+    
+        StringBuffer accents = new StringBuffer();
+        int offset = getPreviousBaseOffset(targetText, end);
+        // normalizing the offensive string
+        String accentstr = getString(targetText, offset, end - offset);
+        if (Normalizer.quickCheck(accentstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            accentstr = Normalizer.decompose(accentstr, false);
+        }
+        accents.append(accentstr);    
+            
+        int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];      
+        int accentsize = getUnblockedAccentIndex(accents, accentsindex);
+        int count = (2 << (accentsize - 1)) - 1;  
+        while (count > 0) {
+            m_canonicalSuffixAccents_.delete(0, 
+                                           m_canonicalSuffixAccents_.length());
+            // copy the base characters
+            for (int k = 0; k < accentsindex[0]; k ++) {
+                 m_canonicalSuffixAccents_.append(accents.charAt(k));
+            }
+            // forming all possible canonical rearrangement by dropping
+            // sets of accents
+            for (int i = 0; i <= accentsize - 1; i ++) {
+                int mask = 1 << (accentsize - i - 1);
+                if ((count & mask) != 0) {
+                    for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+                                                                        j ++) {
+                        m_canonicalSuffixAccents_.append(accents.charAt(j));
+                    }
+                }
+            }
+            StringBuffer match = merge(m_canonicalPrefixAccents_, targetText,
+                                        start, offset, 
+                                        m_canonicalSuffixAccents_);
+            // run the collator iterator through this match
+            // if status is a failure ucol_setText does nothing
+            m_utilColEIter_.setText(match.toString());
+            if (checkCollationMatch(m_utilColEIter_)) {
+                return end;
+            }
+            count --;
+        }
+        return DONE;
+    }
+    
+    /**
+     * Take the rearranged start accents and tries matching. If match failed at
+     * a seperate following set of accents (seperated from the rearranged on by
+     * at least a base character) then we rearrange the preceding accents and 
+     * tries matching again.
+     * We allow skipping of the ends of the accent set if the ces do not match. 
+     * However if the failure is found before the accent set, it fails.
+     * Internal method, status assumed to be success, caller has to check 
+     * status before calling this method.
+     * @param textoffset of the ends of the rearranged accent
+     * @return DONE if a match is not found, otherwise return the ending offset 
+     *             of the match. Note this start includes all following accents.
+     */
+    private int doPreviousCanonicalPrefixMatch(int textoffset)
+    {
+       // int safelength = 0;
+        StringBuffer safetext;
+        int safeoffset = textoffset;
+    
+        if (textoffset > m_textBeginOffset_
+            && m_collator_.isUnsafe(m_canonicalPrefixAccents_.charAt(
+                                    m_canonicalPrefixAccents_.length() - 1))) {
+            safeoffset = getNextSafeOffset(textoffset, m_textLimitOffset_);
+            //safelength = safeoffset - textoffset;
+            safetext = merge(m_canonicalPrefixAccents_, targetText, textoffset, 
+                             safeoffset, null);
+        }
+        else {
+            safetext = m_canonicalPrefixAccents_;
+        }
+    
+        // if status is a failure, ucol_setText does nothing
+        CollationElementIterator coleiter = m_utilColEIter_;
+        coleiter.setText(safetext.toString());
+        // status checked in loop below
+        
+        int ceindex = 0;
+        boolean isSafe = true; // safe zone indication flag for position
+        int prefixlength = m_canonicalPrefixAccents_.length();
+        
+        while (ceindex < m_pattern_.m_CELength_) {
+            int textce = coleiter.next();
+            if (textce == CollationElementIterator.NULLORDER) {
+                // check if we have passed the safe buffer
+                if (coleiter == m_colEIter_) {
+                    return DONE;
+                }
+                if (safetext != m_canonicalPrefixAccents_) {
+                    safetext.delete(0, safetext.length());
+                }
+                coleiter = m_colEIter_;
+                coleiter.setExactOffset(safeoffset);
+                // status checked at the start of the loop
+                isSafe = false;
+                continue;
+            }
+            textce = getCE(textce);
+            if (textce != CollationElementIterator.IGNORABLE 
+                && textce != m_pattern_.m_CE_[ceindex]) {
+                // do the beginning stuff
+                int failedoffset = coleiter.getOffset();
+                if (isSafe && failedoffset <= prefixlength) {
+                    // alas... no hope. failed at rearranged accent set
+                    return DONE;
+                }
+                else {
+                    if (isSafe) {
+                        failedoffset = safeoffset - failedoffset;
+                        if (safetext != m_canonicalPrefixAccents_) {
+                            safetext.delete(0, safetext.length());
+                        }
+                    }
+                    
+                    // try rearranging the end accents
+                    int result = doPreviousCanonicalSuffixMatch(textoffset, 
+                                                                failedoffset);
+                    if (result != DONE) {
+                        // if status is a failure, ucol_setOffset does nothing
+                        m_colEIter_.setExactOffset(result);
+                    }
+                    return result;
+                }
+            }
+            if (textce == m_pattern_.m_CE_[ceindex]) {
+                ceindex ++;
+            }
+        }
+        // set offset here
+        if (isSafe) {
+            int result = coleiter.getOffset();
+            // sets the text iterator here with the correct expansion and offset
+            int leftoverces = coleiter.m_CEBufferSize_ 
+                                                - coleiter.m_CEBufferOffset_;
+            if (result <= prefixlength) { 
+                result = textoffset;
+            }
+            else {
+                result = textoffset + (safeoffset - result);
+            }
+            m_colEIter_.setExactOffset(result);
+            m_colEIter_.m_CEBufferOffset_ = m_colEIter_.m_CEBufferSize_ 
+                                                                - leftoverces;
+            return result;
+        }
+        
+        return coleiter.getOffset();              
+    }
+    
+    /**
+     * Trying out the substring and sees if it can be a canonical match.
+     * This will try normalizing the starting accents and arranging them into 
+     * canonical equivalents and check their corresponding ces with the pattern 
+     * ce.
+     * Prefix accents in the text will be grouped according to their combining 
+     * class and the groups will be mixed and matched to try find the perfect 
+     * match with the pattern.
+     * So for instance looking for "\u0301" in "\u030A\u0301\u0325"
+     * step 1: split "\u030A\u0301" into 6 other type of potential accent 
+     *            substrings
+     *         "\u030A", "\u0301", "\u0325", "\u030A\u0301", "\u030A\u0325", 
+     *         "\u0301\u0325".
+     * step 2: check if any of the generated substrings matches the pattern.
+     * @param textoffset start offset in the collation element text that starts 
+     *                   with the accents to be rearranged
+     * @return true if the match is valid, false otherwise
+     */
+    private boolean doPreviousCanonicalMatch(int textoffset)
+    {
+        int offset = m_colEIter_.getOffset();
+        if ((getFCD(targetText, textoffset) >> SECOND_LAST_BYTE_SHIFT_) == 0) {
+            if (m_pattern_.m_hasSuffixAccents_) {
+                offset = doPreviousCanonicalSuffixMatch(textoffset, offset);
+                if (offset != DONE) {
+                    m_colEIter_.setExactOffset(offset);
+                    return true;
+                }
+            }
+            return false;
+        }
+    
+        if (!m_pattern_.m_hasPrefixAccents_) {
+            return false;
+        }
+    
+        StringBuffer accents = new StringBuffer();
+        // offset to the last base character in substring to search
+        int baseoffset = getNextBaseOffset(targetText, textoffset);
+        // normalizing the offensive string
+        String textstr = getString(targetText, textoffset, 
+                                                    baseoffset - textoffset);
+        if (Normalizer.quickCheck(textstr, Normalizer.NFD,0) 
+                                                    == Normalizer.NO) {
+            textstr = Normalizer.decompose(textstr, false);
+        }
+        accents.append(textstr);
+        // status checked in loop
+            
+        int accentsindex[] = new int[INITIAL_ARRAY_SIZE_];
+        int size = getUnblockedAccentIndex(accents, accentsindex);
+    
+        // 2 power n - 1 plus the full set of accents
+        int count = (2 << (size - 1)) - 1;  
+        while (count > 0) {
+            m_canonicalPrefixAccents_.delete(0, 
+                                        m_canonicalPrefixAccents_.length());
+            // copy the base characters
+            for (int k = 0; k < accentsindex[0]; k ++) {
+                m_canonicalPrefixAccents_.append(accents.charAt(k));
+            }
+            // forming all possible canonical rearrangement by dropping
+            // sets of accents
+            for (int i = 0; i <= size - 1; i ++) {
+                int mask = 1 << (size - i - 1);
+                if ((count & mask) != 0) {
+                    for (int j = accentsindex[i]; j < accentsindex[i + 1]; 
+                         j ++) {
+                        m_canonicalPrefixAccents_.append(accents.charAt(j));
+                    }
+                }
+            }
+            offset = doPreviousCanonicalPrefixMatch(baseoffset);
+            if (offset != DONE) {
+                return true; // match found
+            }
+            count --;
+        }
+        return false;
+    }
+    
+    /**
+     * Checks match for contraction. 
+     * If the match starts with a partial contraction we fail.
+     * Uses the temporary utility buffer to return the modified start and end.
+     * @param start offset of potential match, to be modified if necessary
+     * @param end offset of potential match, to be modified if necessary
+     * @return true if match passes the contraction test, false otherwise.
+     */
+    private boolean checkPreviousCanonicalContractionMatch(int start, int end) 
+    {
+        int temp = end;
+        // This part checks if either ends of the match contains potential 
+        // contraction. If so we'll have to iterate through them
+        char echar = 0;
+        char schar = 0;
+        if (end < m_textLimitOffset_) {
+            targetText.setIndex(end);
+            echar = targetText.current();
+        }
+        if (start + 1 < m_textLimitOffset_) {
+            targetText.setIndex(start + 1);
+            schar = targetText.current();
+        }
+        if (m_collator_.isUnsafe(echar) || m_collator_.isUnsafe(schar)) {
+            int expansion = m_colEIter_.m_CEBufferSize_ 
+                                            - m_colEIter_.m_CEBufferOffset_;
+            boolean hasExpansion = expansion > 0;
+            m_colEIter_.setExactOffset(end);
+            while (expansion > 0) {
+                // getting rid of the redundant ce
+                // since forward contraction/expansion may have extra ces
+                // if we are in the normalization buffer, hasAccentsBeforeMatch
+                // would have taken care of it.
+                // E.g. the character \u01FA will have an expansion of 3, but 
+                // if we are only looking for A ring A\u030A, we'll have to 
+                // skip the last ce in the expansion buffer
+                m_colEIter_.previous();
+                if (m_colEIter_.getOffset() != temp) {
+                    end = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+                expansion --;
+            }
+    
+            int count = m_pattern_.m_CELength_;
+            while (count > 0) {
+                int ce = getCE(m_colEIter_.previous());
+                // status checked below, note that if status is a failure
+                // previous() returns NULLORDER
+                if (ce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+                if (hasExpansion && count == 0 
+                    && m_colEIter_.getOffset() != temp) {
+                    end = temp;
+                    temp = m_colEIter_.getOffset();
+                }
+                if (count == m_pattern_.m_CELength_ 
+                    && ce != m_pattern_.m_CE_[m_pattern_.m_CELength_ - 1]) {
+                    // accents may have extra starting ces, this occurs when a 
+                    // pure accent pattern is matched without rearrangement
+                    int expected = m_pattern_.m_CE_[m_pattern_.m_CELength_ - 1];
+                    targetText.setIndex(end);
+                    if (UTF16.isTrailSurrogate(targetText.previous())) {
+                        if (targetText.getIndex() > m_textBeginOffset_ &&
+                            !UTF16.isLeadSurrogate(targetText.previous())) {
+                            targetText.next();
+                        }
+                    }
+                    end = targetText.getIndex();
+                    if ((getFCD(targetText, end) & LAST_BYTE_MASK_) != 0) {
+                        ce = getCE(m_colEIter_.previous());
+                        while (ce != expected 
+                                && ce != CollationElementIterator.NULLORDER 
+                                && m_colEIter_.getOffset() <= start) {
+                            ce = getCE(m_colEIter_.previous());
+                        }
+                    }
+                }
+                if (ce != m_pattern_.m_CE_[count - 1]) {
+                    start --;
+                    start = getPreviousBaseOffset(start);
+                    m_utilBuffer_[0] = start;
+                    m_utilBuffer_[1] = end;
+                    return false;
+                }
+                count --;
+            }
+        } 
+        m_utilBuffer_[0] = start;
+        m_utilBuffer_[1] = end;
+        return true;
+    }
+    
+    /**
+     * Checks and sets the match information if found.
+     * Checks 
+     * <ul>
+     * <li> the potential match does not repeat the previous match
+     * <li> boundaries are correct
+     * <li> potential match does not end in the middle of a contraction
+     * <li> identical matches
+     * </ul>
+     * Otherwise the offset will be shifted to the next character.
+     * Uses the temporary utility buffer for storing the modified textoffset.
+     * @param textoffset offset in the collation element text. the returned 
+     *             value will be the truncated start offset of the match or the 
+     *             new start search offset.
+     * @return true if the match is valid, false otherwise
+     */
+    private boolean checkPreviousCanonicalMatch(int textoffset)
+    {
+        // to ensure that the start and ends are not composite characters
+        // if we have a canonical accent match
+        if (m_pattern_.m_hasSuffixAccents_ 
+            && m_canonicalSuffixAccents_.length() != 0 
+            || m_pattern_.m_hasPrefixAccents_ 
+            && m_canonicalPrefixAccents_.length() != 0) {
+            m_matchedIndex_ = textoffset;
+            matchLength = getNextBaseOffset(m_colEIter_.getOffset()) 
+                                                                - textoffset;
+            return true;
+        }
+    
+        int end = m_colEIter_.getOffset();
+        if (!checkPreviousCanonicalContractionMatch(textoffset, end)) {
+            // storing the modified textoffset
+            return false;
+        }
+        textoffset = m_utilBuffer_[0];
+        end = m_utilBuffer_[1];
+        end = getNextBaseOffset(end);
+        // this totally matches, however we need to check if it is repeating
+        if (checkRepeatedMatch(textoffset, end) 
+            || !isBreakUnit(textoffset, end) 
+            || !checkIdentical(textoffset, end)) {
+            textoffset --;
+            textoffset = getPreviousBaseOffset(textoffset);
+            m_utilBuffer_[0] = textoffset;
+            return false;
+        }
+        
+        m_matchedIndex_ = textoffset;
+        matchLength = end - textoffset;
+        return true;
+    }
+    
+    /**
+     * Method that does the next exact match
+     * @param start the offset to start shifting from and performing the 
+     *        next exact match
+     */
+    private void handleNextExact(int start)
+    {
+        int textoffset = shiftForward(start, 
+                                         CollationElementIterator.NULLORDER,
+                                         m_pattern_.m_CELength_);
+        int targetce = CollationElementIterator.IGNORABLE;
+        while (textoffset <= m_textLimitOffset_) {
+            m_colEIter_.setExactOffset(textoffset);
+            int patternceindex = m_pattern_.m_CELength_ - 1;
+            boolean found = false;
+            int lastce = CollationElementIterator.NULLORDER;
+            
+            while (true) {
+                // finding the last pattern ce match, imagine composite 
+                // characters. for example: search for pattern A in text \u00C0
+                // we'll have to skip \u0300 the grave first before we get to A
+                targetce = m_colEIter_.previous();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE && 
+                    m_colEIter_.isInBuffer()) { 
+                    // this is for the text \u0315\u0300 that requires 
+                    // normalization and pattern \u0300, where \u0315 is ignorable
+                    continue;
+                }
+                if (lastce == CollationElementIterator.NULLORDER 
+                    || lastce == CollationElementIterator.IGNORABLE) {
+                    lastce = targetce;
+                }
+                if (targetce == m_pattern_.m_CE_[patternceindex]) {
+                    // the first ce can be a contraction
+                    found = true;
+                    break;
+                }
+                if (m_colEIter_.m_CEBufferOffset_ <= 0) {
+                    found = false;
+                    break;
+                }
+            }
+    
+            while (found && patternceindex > 0) {
+                lastce = targetce;
+                targetce = m_colEIter_.previous();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+    
+                patternceindex --;
+                found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+            }
+            
+            targetce = lastce;
+    
+            if (!found) {
+                textoffset = shiftForward(textoffset, lastce, patternceindex);
+                // status checked at loop.
+                patternceindex = m_pattern_.m_CELength_;
+                continue;
+            }
+            
+            if (checkNextExactMatch(textoffset)) {
+                // status checked in ucol_setOffset
+                return;
+            }
+            textoffset = m_utilBuffer_[0];
+        }
+        setMatchNotFound();
+    }
+
+    /**
+     * Method that does the next canonical match
+     * @param start the offset to start shifting from and performing the 
+     *        next canonical match
+     */
+    private void handleNextCanonical(int start)
+    {
+        boolean hasPatternAccents = 
+           m_pattern_.m_hasSuffixAccents_ || m_pattern_.m_hasPrefixAccents_;
+              
+        // shifting it check for setting offset
+        // if setOffset is called previously or there was no previous match, we
+        // leave the offset as it is.
+        int textoffset = shiftForward(start, CollationElementIterator.NULLORDER, 
+                                        m_pattern_.m_CELength_);
+        m_canonicalPrefixAccents_.delete(0, m_canonicalPrefixAccents_.length());
+        m_canonicalSuffixAccents_.delete(0, m_canonicalSuffixAccents_.length());
+        int targetce = CollationElementIterator.IGNORABLE;
+        
+        while (textoffset <= m_textLimitOffset_)
+        {
+            m_colEIter_.setExactOffset(textoffset);
+            int patternceindex = m_pattern_.m_CELength_ - 1;
+            boolean found = false;
+            int lastce = CollationElementIterator.NULLORDER;
+            
+            while (true) {
+                // finding the last pattern ce match, imagine composite characters
+                // for example: search for pattern A in text \u00C0
+                // we'll have to skip \u0300 the grave first before we get to A
+                targetce = m_colEIter_.previous();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (lastce == CollationElementIterator.NULLORDER 
+                            || lastce == CollationElementIterator.IGNORABLE) {
+                    lastce = targetce;
+                }
+                if (targetce == m_pattern_.m_CE_[patternceindex]) {
+                    // the first ce can be a contraction
+                    found = true;
+                    break;
+                }
+                if (m_colEIter_.m_CEBufferOffset_ <= 0) {
+                    found = false;
+                    break;
+                }
+            }
+            
+            while (found && patternceindex > 0) {
+                targetce    = m_colEIter_.previous();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce    = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+    
+                patternceindex --;
+                found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+            }
+    
+            // initializing the rearranged accent array
+            if (hasPatternAccents && !found) {
+                found = doNextCanonicalMatch(textoffset);
+            }
+    
+            if (!found) {
+                textoffset = shiftForward(textoffset, lastce, patternceindex);
+                // status checked at loop
+                patternceindex = m_pattern_.m_CELength_;
+                continue;
+            }
+            
+            if (checkNextCanonicalMatch(textoffset)) {
+                return;
+            }
+            textoffset = m_utilBuffer_[0];
+        }
+        setMatchNotFound();
+    }
+    
+    /**
+     * Method that does the previous exact match
+     * @param start the offset to start shifting from and performing the 
+     *        previous exact match
+     */
+    private void handlePreviousExact(int start)
+    {
+        int textoffset = reverseShift(start, CollationElementIterator.NULLORDER, 
+                                      m_pattern_.m_CELength_);
+        while (textoffset >= m_textBeginOffset_)
+        {
+            m_colEIter_.setExactOffset(textoffset);
+            int patternceindex = 1;
+            int targetce = CollationElementIterator.IGNORABLE;
+            boolean found = false;
+            int firstce = CollationElementIterator.NULLORDER;
+            
+            while (true) {
+                // finding the first pattern ce match, imagine composite 
+                // characters. for example: search for pattern \u0300 in text 
+                // \u00C0, we'll have to skip A first before we get to 
+                // \u0300 the grave accent
+                targetce = m_colEIter_.next();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (firstce == CollationElementIterator.NULLORDER 
+                    || firstce == CollationElementIterator.IGNORABLE) {
+                    firstce = targetce;
+                }
+                if (targetce == CollationElementIterator.IGNORABLE && m_collator_.getStrength() != Collator.PRIMARY) {
+                    continue;
+                }         
+                if (targetce == m_pattern_.m_CE_[0]) {
+                    found = true;
+                    break;
+                }
+                if (m_colEIter_.m_CEBufferOffset_ == -1 
+                    || m_colEIter_.m_CEBufferOffset_ 
+                                            == m_colEIter_.m_CEBufferSize_) {
+                    // checking for accents in composite character
+                    found = false;
+                    break;
+                }
+            }
+    
+            //targetce = firstce;
+            
+            while (found && patternceindex < m_pattern_.m_CELength_) {
+                firstce = targetce;
+                targetce = m_colEIter_.next();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+    
+                found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+                patternceindex ++;
+            }
+            
+            targetce = firstce;
+    
+            if (!found) {
+                textoffset = reverseShift(textoffset, targetce, patternceindex);
+                patternceindex = 0;
+                continue;
+            }
+            
+            if (checkPreviousExactMatch(textoffset)) {
+                return;
+            }
+            textoffset = m_utilBuffer_[0];
+        }
+        setMatchNotFound();
+    }
+    
+    /**
+     * Method that does the previous canonical match
+     * @param start the offset to start shifting from and performing the 
+     *        previous canonical match
+     */
+    private void handlePreviousCanonical(int start)
+    {
+        boolean hasPatternAccents = 
+           m_pattern_.m_hasSuffixAccents_ || m_pattern_.m_hasPrefixAccents_;
+              
+        // shifting it check for setting offset
+        // if setOffset is called previously or there was no previous match, we
+        // leave the offset as it is.
+        int textoffset = reverseShift(start, CollationElementIterator.NULLORDER, 
+                                          m_pattern_.m_CELength_);
+        m_canonicalPrefixAccents_.delete(0, m_canonicalPrefixAccents_.length());
+        m_canonicalSuffixAccents_.delete(0, m_canonicalSuffixAccents_.length());
+        
+        while (textoffset >= m_textBeginOffset_)
+        {
+            m_colEIter_.setExactOffset(textoffset);
+            int patternceindex = 1;
+            int targetce = CollationElementIterator.IGNORABLE;
+            boolean found = false;
+            int firstce = CollationElementIterator.NULLORDER;
+            
+            while (true) {
+                // finding the first pattern ce match, imagine composite 
+                // characters. for example: search for pattern \u0300 in text 
+                // \u00C0, we'll have to skip A first before we get to 
+                // \u0300 the grave accent
+                targetce = m_colEIter_.next();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (firstce == CollationElementIterator.NULLORDER 
+                    || firstce == CollationElementIterator.IGNORABLE) {
+                    firstce = targetce;
+                }
+                
+                if (targetce == m_pattern_.m_CE_[0]) {
+                    // the first ce can be a contraction
+                    found = true;
+                    break;
+                }
+                if (m_colEIter_.m_CEBufferOffset_ == -1 
+                    || m_colEIter_.m_CEBufferOffset_ 
+                                            == m_colEIter_.m_CEBufferSize_) {
+                    // checking for accents in composite character
+                    found = false;
+                    break;
+                }
+            }
+    
+            targetce = firstce;
+            
+            while (found && patternceindex < m_pattern_.m_CELength_) {
+                targetce = m_colEIter_.next();
+                if (targetce == CollationElementIterator.NULLORDER) {
+                    found = false;
+                    break;
+                }
+                targetce = getCE(targetce);
+                if (targetce == CollationElementIterator.IGNORABLE) {
+                    continue;
+                }
+    
+                found = found && targetce == m_pattern_.m_CE_[patternceindex]; 
+                patternceindex ++;
+            }
+    
+            // initializing the rearranged accent array
+            if (hasPatternAccents && !found) {
+                found = doPreviousCanonicalMatch(textoffset);
+            }
+    
+            if (!found) {
+                textoffset = reverseShift(textoffset, targetce, patternceindex);
+                patternceindex = 0;
+                continue;
+            }
+    
+            if (checkPreviousCanonicalMatch(textoffset)) {
+                return;
+            }
+            textoffset = m_utilBuffer_[0];
+        }
+        setMatchNotFound();
+    }
+    
+    /**
+     * Gets a substring out of a CharacterIterator
+     * @param text CharacterIterator
+     * @param start start offset
+     * @param length of substring
+     * @return substring from text starting at start and length length
+     */
+    private static final String getString(CharacterIterator text, int start,
+                                            int length)
+    {
+        StringBuffer result = new StringBuffer(length);
+        int offset = text.getIndex();
+        text.setIndex(start);
+        for (int i = 0; i < length; i ++) {
+            result.append(text.current());
+            text.next();
+        }
+        text.setIndex(offset);
+        return result.toString();
+    }
+    
+    /**
+     * Getting the mask for collation strength
+     * @param strength collation strength
+      * @return collation element mask
+     */
+    private static final int getMask(int strength) 
+    {
+        switch (strength) 
+        {
+            case Collator.PRIMARY:
+                return RuleBasedCollator.CE_PRIMARY_MASK_;
+            case Collator.SECONDARY:
+                return RuleBasedCollator.CE_SECONDARY_MASK_ 
+                       | RuleBasedCollator.CE_PRIMARY_MASK_;
+            default:
+                return RuleBasedCollator.CE_TERTIARY_MASK_ 
+                       | RuleBasedCollator.CE_SECONDARY_MASK_ 
+                       | RuleBasedCollator.CE_PRIMARY_MASK_;
+        }
+    }
+    
+    /**
+     * Sets match not found 
+     */
+    private void setMatchNotFound() 
+    {
+        // this method resets the match result regardless of the error status.
+        m_matchedIndex_ = DONE;
+        setMatchLength(0);
+    }
+    
+    /**
+     * Check the boundaries of the match.
+     */
+    private int checkBreakBoundary(int end) {
+        if (!m_charBreakIter_.isBoundary(end)) {
+            end = m_charBreakIter_.following(end);
+        }
+        return end;
+    }
+}
diff --git a/src/com/ibm/icu/text/StringTransform.java b/src/com/ibm/icu/text/StringTransform.java
new file mode 100644
index 0000000..9ef11ae
--- /dev/null
+++ b/src/com/ibm/icu/text/StringTransform.java
@@ -0,0 +1,24 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * Provide a base class for Transforms that focuses just on the transformation of the text. APIs that take Transliterator, but only depend on the text transformation should use this interface in the API instead.
+ *
+ * @stable ICU 3.8
+ * @author markdavis
+ *
+ */
+public interface StringTransform {
+    /**
+     * Transform the text in some way, to be determined by the subclass.
+     * @param source text to be transformed (eg lowercased)
+     * @return result
+     * @stable ICU 3.8
+     */
+    public String transform(String source);
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/text/SymbolTable.java b/src/com/ibm/icu/text/SymbolTable.java
new file mode 100644
index 0000000..22f228c
--- /dev/null
+++ b/src/com/ibm/icu/text/SymbolTable.java
@@ -0,0 +1,86 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2005, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+import java.text.ParsePosition;
+
+/**
+ * An interface that defines both lookup protocol and parsing of
+ * symbolic names.
+ * 
+ * <p>This interface is used by UnicodeSet to resolve $Variable style
+ * references that appear in set patterns.  RBBI and Transliteration
+ * both independently implement this interface.
+ *
+ * <p>A symbol table maintains two kinds of mappings.  The first is
+ * between symbolic names and their values.  For example, if the
+ * variable with the name "start" is set to the value "alpha"
+ * (perhaps, though not necessarily, through an expression such as
+ * "$start=alpha"), then the call lookup("start") will return the
+ * char[] array ['a', 'l', 'p', 'h', 'a'].
+ *
+ * <p>The second kind of mapping is between character values and
+ * UnicodeMatcher objects.  This is used by RuleBasedTransliterator,
+ * which uses characters in the private use area to represent objects
+ * such as UnicodeSets.  If U+E015 is mapped to the UnicodeSet [a-z],
+ * then lookupMatcher(0xE015) will return the UnicodeSet [a-z].
+ *
+ * <p>Finally, a symbol table defines parsing behavior for symbolic
+ * names.  All symbolic names start with the SYMBOL_REF character.
+ * When a parser encounters this character, it calls parseReference()
+ * with the position immediately following the SYMBOL_REF.  The symbol
+ * table parses the name, if there is one, and returns it.
+ *
+ * @stable ICU 2.8
+ */
+public interface SymbolTable {
+
+    /**
+     * The character preceding a symbol reference name.
+     * @stable ICU 2.8
+     */
+    static final char SYMBOL_REF = '$';
+
+    /**
+     * Lookup the characters associated with this string and return it.
+     * Return <tt>null</tt> if no such name exists.  The resultant
+     * array may have length zero.
+     * @param s the symbolic name to lookup
+     * @return a char array containing the name's value, or null if
+     * there is no mapping for s.
+     * @stable ICU 2.8
+     */
+    char[] lookup(String s);
+
+    /**
+     * Lookup the UnicodeMatcher associated with the given character, and
+     * return it.  Return <tt>null</tt> if not found.
+     * @param ch a 32-bit code point from 0 to 0x10FFFF inclusive.
+     * @return the UnicodeMatcher object represented by the given
+     * character, or null if there is no mapping for ch.
+     * @stable ICU 2.8
+     */
+    UnicodeMatcher lookupMatcher(int ch);
+
+    /**
+     * Parse a symbol reference name from the given string, starting
+     * at the given position.  If no valid symbol reference name is
+     * found, return null and leave pos unchanged.  That is, if the
+     * character at pos cannot start a name, or if pos is at or after
+     * text.length(), then return null.  This indicates an isolated
+     * SYMBOL_REF character.
+     * @param text the text to parse for the name
+     * @param pos on entry, the index of the first character to parse.
+     * This is the character following the SYMBOL_REF character.  On
+     * exit, the index after the last parsed character.  If the parse
+     * failed, pos is unchanged on exit.
+     * @param limit the index after the last character to be parsed.
+     * @return the parsed name, or null if there is no valid symbolic
+     * name at the given position.
+     * @stable ICU 2.8
+     */
+    String parseReference(String text, ParsePosition pos, int limit);
+}
diff --git a/src/com/ibm/icu/text/ThaiBreakIterator.java b/src/com/ibm/icu/text/ThaiBreakIterator.java
new file mode 100644
index 0000000..3d4db61
--- /dev/null
+++ b/src/com/ibm/icu/text/ThaiBreakIterator.java
@@ -0,0 +1,385 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.text.UnicodeSet;
+
+import java.util.Stack;
+import java.io.InputStream;
+import java.text.CharacterIterator;
+import java.io.IOException;
+
+class ThaiBreakIterator extends DictionaryBasedBreakIterator {
+
+    /* Helper class for improving readability of the Thai word break
+     * algorithm.
+     */
+    static class PossibleWord {
+        // List size, limited by the maximum number of words in the dictionary
+        // that form a nested sequence.
+        private final int POSSIBLE_WORD_LIST_MAX = 20;
+        //list of word candidate lengths, in increasing length order
+        private int lengths[];
+        private int count[];    // Count of candidates
+        private int prefix;     // The longeset match with a dictionary word
+        private int offset;     // Offset in the text of these candidates
+        private int mark;       // The preferred candidate's offset
+        private int current;    // The candidate we're currently looking at
+
+        // Default constructor
+        public PossibleWord() {
+            lengths = new int[POSSIBLE_WORD_LIST_MAX];
+            count = new int[1]; // count needs to be an array of 1 so that it can be pass as reference
+            offset = -1;
+        }
+
+        // Fill the list of candidates if needed, select the longest, and return the number found
+        public int candidates(CharacterIterator fIter, BreakCTDictionary dict, int rangeEnd) {
+            int start = fIter.getIndex();
+            if (start != offset) {
+                offset = start;
+                prefix = dict.matches(fIter, rangeEnd - start, lengths, count, lengths.length);
+                // Dictionary leaves text after longest prefix, not longest word. Back up.
+                if (count[0] <= 0) {
+                    fIter.setIndex(start);
+                }
+            }
+            if (count[0] > 0) {
+                fIter.setIndex(start + lengths[count[0]-1]);
+            }
+            current = count[0] - 1;
+            mark = current;
+            return count[0];
+        }
+
+        // Select the currently marked candidate, point after it in the text, and invalidate self
+        public int acceptMarked(CharacterIterator fIter) {
+            fIter.setIndex(offset + lengths[mark]);
+            return lengths[mark];
+        }
+
+        // Backup from the current candidate to the next shorter one; rreturn true if that exists
+        // and point the text after it
+        public boolean backUp(CharacterIterator fIter) {
+            if (current > 0) {
+                fIter.setIndex(offset + lengths[--current]);
+                return true;
+            }
+            return false;
+        }
+
+        // Return the longest prefix this candidate location shares with a dictionary word
+        public int longestPrefix() {
+            return prefix;
+        }
+
+        // Mark the current candidate as the one we like
+        public void markCurrent() {
+            mark = current;
+        }
+    }
+
+    private static UnicodeSet fThaiWordSet;
+    private static UnicodeSet fEndWordSet;
+    private static UnicodeSet fBeginWordSet;
+    private static UnicodeSet fSuffixSet;
+    private static UnicodeSet fMarkSet;
+    private BreakCTDictionary fDictionary;
+
+    // Constants for ThaiBreakIterator
+    // How many words in a row are "good enough"?
+    private static final byte THAI_LOOKAHEAD = 3;
+    // Will not combine a non-word with a preceding dictionary word longer than this
+    private static final byte THAI_ROOT_COMBINE_THRESHOLD = 3;
+    // Will not combine a non-word that shares at least this much prefix with a
+    // dictionary word with a preceding word
+    private static final byte THAI_PREFIX_COMBINE_THRESHOLD = 3;
+    // Ellision character
+    private static final char THAI_PAIYANNOI = 0x0E2F;
+    // Repeat character
+    private static final char THAI_MAIYAMOK = 0x0E46;
+    // Minimum word size
+    private static final byte THAI_MIN_WORD = 2;
+    // Minimum number of characters for two words
+    //private final int THAI_MIN_WORD_SPAN = THAI_MIN_WORD * 2;
+
+    static {
+        // Initialize UnicodeSets
+        fThaiWordSet = new UnicodeSet();
+        fMarkSet = new UnicodeSet();
+        fEndWordSet = new UnicodeSet();
+        fBeginWordSet = new UnicodeSet();
+        fSuffixSet = new UnicodeSet();
+
+        fThaiWordSet.applyPattern(new String("[[:Thai:]&[:LineBreak=SA:]]"));
+        fThaiWordSet.compact();
+
+        fMarkSet.applyPattern(new String("[[:Thai:]&[:LineBreak=SA:]&[:M:]]"));
+        fMarkSet.add(0x0020);
+        fEndWordSet = fThaiWordSet;
+        fEndWordSet.remove(0x0E31); // MAI HAN-AKAT
+        fEndWordSet.remove(0x0E40, 0x0E44); // SARA E through SARA AI MAIMALAI
+        fBeginWordSet.add(0x0E01, 0x0E2E); //KO KAI through HO NOKHUK
+        fBeginWordSet.add(0x0E40, 0x0E44); // SARA E through SARA AI MAIMALAI
+        fSuffixSet.add(THAI_PAIYANNOI);
+        fSuffixSet.add(THAI_MAIYAMOK);
+
+        // Compact for caching
+        fMarkSet.compact();
+        fEndWordSet.compact();
+        fBeginWordSet.compact();
+        fSuffixSet.compact();
+        
+        // Freeze the static UnicodeSet
+        fThaiWordSet.freeze();
+        fMarkSet.freeze();
+        fEndWordSet.freeze();
+        fBeginWordSet.freeze();
+        fSuffixSet.freeze();
+    }
+
+    public ThaiBreakIterator(InputStream ruleStream, InputStream dictionaryStream) throws IOException {
+        super(ruleStream);
+        // Initialize diciontary
+        fDictionary = new BreakCTDictionary(dictionaryStream);
+    }
+
+    /**
+     * This is the implementation function for next().
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleNext() {
+        CharacterIterator text = getText();
+
+        // if there are no cached break positions, or if we've just moved
+        // off the end of the range covered by the cache, we have to dump
+        // and possibly regenerate the cache
+        if (cachedBreakPositions == null || positionInCache == cachedBreakPositions.length - 1) {
+
+            // start by using the inherited handleNext() to find a tentative return
+            // value.   dictionaryCharCount tells us how many dictionary characters
+            // we passed over on our way to the tentative return value
+            int startPos = text.getIndex();
+            fDictionaryCharCount = 0;
+            int result = super.handleNext();
+
+            // if we passed over more than one dictionary character, then we use
+            // divideUpDictionaryRange() to regenerate the cached break positions
+            // for the new range
+            if (fDictionaryCharCount > 1 && result - startPos > 1) {
+                divideUpDictionaryRange(startPos, result);
+            }
+
+            // otherwise, the value we got back from the inherited fuction
+            // is our return value, and we can dump the cache
+            else {
+                cachedBreakPositions = null;
+                return result;
+            }
+        }
+        // if the cache of break positions has been regenerated (or existed all
+        // along), then just advance to the next break position in the cache
+        // and return it
+        if (cachedBreakPositions != null) {
+            ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+        Assert.assrt(false);
+        return -9999;   // SHOULD NEVER GET HERE!
+    }
+
+    /**
+     * Divide up a range of known dictionary characters.
+     *
+     * @param rangeStart The start of the range of dictionary characters
+     * @param rangeEnd The end of the range of dictionary characters
+     * @return The number of breaks found
+     */
+    private int divideUpDictionaryRange(int rangeStart, int rangeEnd) {
+        if ((rangeEnd - rangeStart) < THAI_MIN_WORD) {
+            return 0;  // Not enough chacters for word
+        }
+        CharacterIterator fIter = getText();
+        int wordsFound = 0;
+        int wordLength;
+        int current;
+        Stack foundBreaks = new Stack();
+        PossibleWord words[] = new PossibleWord[THAI_LOOKAHEAD];
+        for (int i = 0; i < THAI_LOOKAHEAD; i++) {
+            words[i] = new PossibleWord();
+        }
+        int uc;
+
+        fIter.setIndex(rangeStart);
+
+        while ((current = fIter.getIndex()) < rangeEnd) {
+            wordLength = 0;
+
+            //Look for candidate words at the current position
+            int candidates = words[wordsFound%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd);
+
+            // If we found exactly one, use that
+            if (candidates == 1) {
+                wordLength = words[wordsFound%THAI_LOOKAHEAD].acceptMarked(fIter);
+                wordsFound += 1;
+            }
+
+            // If there was more than one, see which one can take use forward the most words
+            else if (candidates > 1) {
+                boolean foundBest = false;
+                // If we're already at the end of the range, we're done
+                if (fIter.getIndex() < rangeEnd) {
+                    do {
+                        int wordsMatched = 1;
+                        if (words[(wordsFound+1)%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd) > 0) {
+                            if (wordsMatched < 2) {
+                                // Followed by another dictionary word; mark first word as a good candidate
+                                words[wordsFound%THAI_LOOKAHEAD].markCurrent();
+                                wordsMatched = 2;
+                            }
+
+                            // If we're already at the end of the range, we're done
+                            if (fIter.getIndex() >= rangeEnd) {
+                                break;
+                            }
+
+                            // See if any of the possible second words is followed by a third word
+                            do {
+                                // If we find a third word, stop right away
+                                if (words[(wordsFound+2)%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd) > 0) {
+                                    words[wordsFound%THAI_LOOKAHEAD].markCurrent();
+                                    foundBest = true;
+                                    break;
+                                }
+                            } while (words[(wordsFound+1)%THAI_LOOKAHEAD].backUp(fIter));
+                        }
+                    } while (words[wordsFound%THAI_LOOKAHEAD].backUp(fIter) && !foundBest);
+                }
+                /* foundBest: */wordLength = words[wordsFound%THAI_LOOKAHEAD].acceptMarked(fIter);
+                wordsFound += 1;
+            }
+            // We come here after having either found a word or not. We look ahead to the
+            // next word. If it's not a dictionary word, we will combine it with the word we
+            // just found (if there is one), but only if the preceding word does not exceed
+            // the threshold.
+            // The text iterator should now be positioned at the end of the word we found.
+            if (fIter.getIndex() < rangeEnd && wordLength < THAI_ROOT_COMBINE_THRESHOLD) {
+                // If it is a dictionary word, do nothing. If it isn't, then if there is
+                // no preceding word, or the non-word shares less than the minimum threshold
+                // of characters with a dictionary word, then scan to resynchronize
+                if (words[wordsFound%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd) <= 0 &&
+                        (wordLength == 0 || 
+                                words[wordsFound%THAI_LOOKAHEAD].longestPrefix() < THAI_PREFIX_COMBINE_THRESHOLD)) {
+                    // Look for a plausible word boundary
+                    int remaining = rangeEnd - (current + wordLength);
+                    int pc = fIter.current();
+                    int chars = 0;
+                    for (;;) {
+                        fIter.next();
+                        uc = fIter.current();
+                        chars += 1;
+                        if (--remaining <= 0) {
+                            break;
+                        }
+                        if (fEndWordSet.contains(pc) && fBeginWordSet.contains(uc)) {
+                            // Maybe. See if it's in the dictionary.
+                            // Note: In the original Apple code, checked that the next
+                            // two characters after uc were not 0x0E4C THANTHAKHAT before
+                            // checking the dictionary. That is just a performance filter,
+                            // but it's not clear it's faster than checking the trie
+                            int candidate = words[(wordsFound+1)%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd);
+                            fIter.setIndex(current+wordLength+chars);
+                            if (candidate > 0) {
+                                break;
+                            }
+                        }
+                        pc = uc;
+                    }
+
+                    // Bump the word cound if there wasn't already one
+                    if (wordLength <= 0) {
+                        wordsFound += 1;
+                    }
+
+                    // Update the length with the passed-over characters
+                    wordLength += chars;
+                } else {
+                    // Backup to where we were for next iteration
+                    fIter.setIndex(current+wordLength);
+                }
+            }
+
+            // Never stop before a combining mark.
+            int currPos;
+            while ((currPos = fIter.getIndex()) < rangeEnd && fMarkSet.contains(fIter.current())) {
+                fIter.next();
+                wordLength += fIter.getIndex() - currPos;
+            }
+
+            // Look ahead for possible suffixes if a dictionary word does not follow.
+            // We do this in code rather than using a rule so that the heuristic
+            // resynch continues to function. For example, one of the suffix characters 
+            // could be a typo in the middle of a word.
+            if (fIter.getIndex() < rangeEnd && wordLength > 0) {
+                if (words[wordsFound%THAI_LOOKAHEAD].candidates(fIter, fDictionary, rangeEnd) <= 0 &&
+                        fSuffixSet.contains(uc = fIter.current())) {
+                    if (uc == THAI_PAIYANNOI) {
+                        if (!fSuffixSet.contains(fIter.previous())) {
+                            // Skip over previous end and PAIYANNOI
+                            fIter.next();
+                            fIter.next();
+                            wordLength += 1;
+                            uc = fIter.current();
+                        } else {
+                            // Restore prior position
+                            fIter.next();
+                        }
+                    }
+                    if (uc == THAI_MAIYAMOK) {
+                        if (fIter.previous() != THAI_MAIYAMOK) {
+                            // Skip over previous end and MAIYAMOK
+                            fIter.next();
+                            fIter.next();
+                            wordLength += 1;
+                        } else {
+                            // restore prior position
+                            fIter.next();
+                        }
+                    }
+                } else {
+                    fIter.setIndex(current+wordLength);
+                }
+            }
+
+            // Did we find a word on this iteration? If so, push it on the break stack
+            if (wordLength > 0) {
+                foundBreaks.push(new Integer(current+wordLength));
+            }
+        }
+
+        // Don't return a break for the end of the dictionary range if there is one there
+        if (((Integer)foundBreaks.peek()).intValue() >= rangeEnd) {
+            foundBreaks.pop();
+            wordsFound -= 1;
+        }
+
+        // Store the break points in cachedBreakPositions.
+        cachedBreakPositions = new int[foundBreaks.size() + 2];
+        cachedBreakPositions[0] = rangeStart;
+        int i;
+        for (i = 0; i < foundBreaks.size(); i++) {
+            cachedBreakPositions[i + 1] = ((Integer)foundBreaks.elementAt(i)).intValue();
+        }
+        cachedBreakPositions[i + 1] = rangeEnd;
+        positionInCache = 0;
+
+        return wordsFound;
+    }
+}
diff --git a/src/com/ibm/icu/text/TimeUnitFormat.java b/src/com/ibm/icu/text/TimeUnitFormat.java
new file mode 100644
index 0000000..7faff10
--- /dev/null
+++ b/src/com/ibm/icu/text/TimeUnitFormat.java
@@ -0,0 +1,527 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.TreeMap;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.TimeUnit;
+import com.ibm.icu.util.TimeUnitAmount;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+
+/**
+ * Format or parse a TimeUnitAmount, using plural rules for the units where available.
+ *
+ * <P>
+ * Code Sample: 
+ * <pre>
+ *   // create a time unit instance.
+ *   // only SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, and YEAR are supported
+ *   TimeUnit timeUnit = TimeUnit.SECOND;
+ *   // create time unit amount instance - a combination of Number and time unit
+ *   TimeUnitAmount source = new TimeUnitAmount(2, timeUnit);
+ *   // create time unit format instance
+ *   TimeUnitFormat format = new TimeUnitFormat();
+ *   // set the locale of time unit format
+ *   format.setLocale(new ULocale("en"));
+ *   // format a time unit amount
+ *   String formatted = format.format(source);
+ *   System.out.println(formatted);
+ *   try {
+ *       // parse a string into time unit amount
+ *       TimeUnitAmount result = (TimeUnitAmount) format.parseObject(formatted);
+ *       // result should equal to source 
+ *   } catch (ParseException e) {
+ *   }
+ * </pre>
+ *
+ * <P>
+ * @see TimeUnitAmount
+ * @see TimeUnitFormat
+ * @author markdavis
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+public class TimeUnitFormat extends MeasureFormat {
+
+    /**
+     * Constant for full name style format. 
+     * For example, the full name for "hour" in English is "hour" or "hours".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int FULL_NAME = 0;
+    /**
+     * Constant for abbreviated name style format. 
+     * For example, the abbreviated name for "hour" in English is "hr" or "hrs".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int ABBREVIATED_NAME = 1;
+
+    private static final int TOTAL_STYLES = 2;
+
+    private static final long serialVersionUID = -3707773153184971529L;
+  
+    private static final String DEFAULT_PATTERN_FOR_SECOND = "{0} s";
+    private static final String DEFAULT_PATTERN_FOR_MINUTE = "{0} min";
+    private static final String DEFAULT_PATTERN_FOR_HOUR = "{0} h";
+    private static final String DEFAULT_PATTERN_FOR_DAY = "{0} d";
+    private static final String DEFAULT_PATTERN_FOR_WEEK = "{0} w";
+    private static final String DEFAULT_PATTERN_FOR_MONTH = "{0} m";
+    private static final String DEFAULT_PATTERN_FOR_YEAR = "{0} y";
+
+    private NumberFormat format;
+    private ULocale locale;
+    private transient Map timeUnitToCountToPatterns;
+    private transient PluralRules pluralRules;
+    private transient boolean isReady;
+    private int style;
+
+    /**
+     * Create empty format using full name style, for example, "hours". 
+     * Use setLocale and/or setFormat to modify.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat() {
+        isReady = false;
+        style = FULL_NAME;
+
+    }
+
+    /**
+     * Create TimeUnitFormat given a ULocale, and using full name style.
+     * @param locale   locale of this time unit formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat(ULocale locale) {
+        this(locale, FULL_NAME);
+    }
+
+    /**
+     * Create TimeUnitFormat given a Locale, and using full name style.
+     * @param locale   locale of this time unit formatter.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat(Locale locale) {
+        this(locale, FULL_NAME);
+    }
+
+    /**
+     * Create TimeUnitFormat given a ULocale and a formatting style: full or
+     * abbreviated.
+     * @param locale   locale of this time unit formatter.
+     * @param style    format style, either FULL_NAME or ABBREVIATED_NAME style.
+     * @throws IllegalArgumentException if the style is not FULL_NAME or
+     *                                  ABBREVIATED_NAME style.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat(ULocale locale, int style) {
+        if (style < FULL_NAME || style >= TOTAL_STYLES) {
+            throw new IllegalArgumentException("style should be either FULL_NAME or ABBREVIATED_NAME style");
+        }
+        this.style = style;
+        this.locale = locale;
+        isReady = false;
+    }
+
+    /**
+     * Create TimeUnitFormat given a Locale and a formatting style: full or
+     * abbreviated.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat(Locale locale, int style) {
+        this(ULocale.forLocale(locale),  style);
+    }
+
+    /**
+     * Set the locale used for formatting or parsing.
+     * @param locale   locale of this time unit formatter.
+     * @return this, for chaining.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat setLocale(ULocale locale) {
+        if ( locale != this.locale ) {
+            this.locale = locale;
+            isReady = false;
+        }
+        return this;
+    }
+    
+    /**
+     * Set the locale used for formatting or parsing.
+     * @param locale   locale of this time unit formatter.
+     * @return this, for chaining.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat setLocale(Locale locale) {
+        return setLocale(ULocale.forLocale(locale));
+    }
+    
+    /**
+     * Set the format used for formatting or parsing. If null or not available, use the getNumberInstance(locale).
+     * @param format   the number formatter.
+     * @return this, for chaining.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitFormat setNumberFormat(NumberFormat format) {
+        if (format == this.format) {
+            return this;
+        }
+        if ( format == null ) {
+            if ( locale == null ) {
+                isReady = false;
+                return this;
+            } else {
+                this.format = NumberFormat.getNumberInstance(locale);
+            }
+        } else {
+            this.format = format;
+        }
+        // reset the number formatter in the timeUnitToCountToPatterns map
+        if (isReady == false) {
+            return this;
+        }
+        for (Iterator it = timeUnitToCountToPatterns.keySet().iterator(); 
+             it.hasNext();) {
+            TimeUnit timeUnit = (TimeUnit) it.next();
+            Map countToPattern = (Map) timeUnitToCountToPatterns.get(timeUnit);
+            for (Iterator it2 = countToPattern.keySet().iterator(); it2.hasNext();) {
+                String count = (String) it2.next();
+                Object[] pair = (Object[])countToPattern.get(count);
+                MessageFormat pattern = (MessageFormat)pair[FULL_NAME];
+                pattern.setFormatByArgumentIndex(0, format);
+                pattern = (MessageFormat)pair[ABBREVIATED_NAME];
+                pattern.setFormatByArgumentIndex(0, format);
+            }
+        }
+        return this;
+    }
+
+
+    /**
+     * Format a TimeUnitAmount.
+     * @see java.text.Format#format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition)
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public StringBuffer format(Object obj, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        if ( !(obj instanceof TimeUnitAmount) ) {
+            throw new IllegalArgumentException("can not format non TimeUnitAmount object");
+        }
+        if (!isReady) {
+            setup();
+        }
+        TimeUnitAmount amount = (TimeUnitAmount) obj;
+        Map countToPattern = (Map) timeUnitToCountToPatterns.get(amount.getTimeUnit());
+        double number = amount.getNumber().doubleValue();
+        String count = pluralRules.select(number);
+        MessageFormat pattern = (MessageFormat)((Object[])countToPattern.get(count))[style];
+        return pattern.format(new Object[]{amount.getNumber()}, toAppendTo, pos);
+    }
+
+
+    /**
+     * Parse a TimeUnitAmount.
+     * @see java.text.Format#parseObject(java.lang.String, java.text.ParsePosition)
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object parseObject(String source, ParsePosition pos) {
+        if (!isReady) {
+            setup();
+        }
+        Number resultNumber = null;
+        TimeUnit resultTimeUnit = null;
+        int oldPos = pos.getIndex();
+        int newPos = -1;
+        int longestParseDistance = 0;
+        String countOfLongestMatch = null;
+        // we don't worry too much about speed on parsing, but this can be optimized later if needed.
+        // Parse by iterating through all available patterns
+        // and looking for the longest match.
+        for (Iterator it = timeUnitToCountToPatterns.keySet().iterator(); it.hasNext();) {
+            TimeUnit timeUnit = (TimeUnit) it.next();
+            Map countToPattern = (Map) timeUnitToCountToPatterns.get(timeUnit);
+            for (Iterator it2 = countToPattern.keySet().iterator(); it2.hasNext();) {
+              String count = (String) it2.next();
+              for (int styl = FULL_NAME; styl < TOTAL_STYLES; ++styl) {
+                MessageFormat pattern = (MessageFormat)((Object[])countToPattern.get(count))[styl];
+                pos.setErrorIndex(-1);
+                pos.setIndex(oldPos);
+                // see if we can parse
+                Object parsed = pattern.parseObject(source, pos);
+                if ( pos.getErrorIndex() != -1 || pos.getIndex() == oldPos ) {
+                    // nothing parsed
+                    continue;
+                }
+                Number temp = null;
+                if ( ((Object[])parsed).length != 0 ) {
+                    // pattern with Number as beginning,
+                    // such as "{0} d".
+                    // check to make sure that the timeUnit is consistent
+                    temp = (Number)((Object[])parsed)[0];
+                    String select = pluralRules.select(temp.doubleValue());
+                    if (!count.equals(select)) {
+                        continue;
+                    }
+                }
+                int parseDistance = pos.getIndex() - oldPos;
+                if ( parseDistance > longestParseDistance ) {
+                    resultNumber = temp;
+                    resultTimeUnit = timeUnit;
+                    newPos = pos.getIndex();
+                    longestParseDistance = parseDistance;
+                    countOfLongestMatch = count;
+                }
+            }
+          }
+        }
+        /* After find the longest match, parse the number.
+         * Result number could be null for the pattern without number pattern.
+         * such as unit pattern in Arabic.
+         * When result number is null, use plural rule to set the number.
+         */
+        if (resultNumber == null && longestParseDistance != 0) {
+            // set the number using plurrual count
+            if ( countOfLongestMatch.equals("zero") ) {
+                resultNumber = new Integer(0);
+            } else if ( countOfLongestMatch.equals("one") ) {
+                resultNumber = new Integer(1);
+            } else if ( countOfLongestMatch.equals("two") ) {
+                resultNumber = new Integer(2);
+            } else {
+                // should not happen.
+                // TODO: how to handle?
+                resultNumber = new Integer(3);
+            }
+        }
+        if (longestParseDistance == 0) {
+            pos.setIndex(oldPos);
+            pos.setErrorIndex(0);
+            return null;
+        } else {
+            pos.setIndex(newPos);
+            pos.setErrorIndex(-1);
+            return new TimeUnitAmount(resultNumber, resultTimeUnit);
+        }
+    }
+    
+    
+    /*
+     * Initialize locale, number formatter, plural rules, and
+     * time units patterns.
+     * Initially, we are storing all of these as MessageFormats.
+     * I think it might actually be simpler to make them Decimal Formats later.
+     */
+    private void setup() {
+        if (locale == null) {
+            if (format != null) {
+                locale = format.getLocale(null);
+            } else {
+                locale = ULocale.getDefault();
+            }
+        }
+        if (format == null) {
+            format = NumberFormat.getNumberInstance(locale);
+        }
+        pluralRules = PluralRules.forLocale(locale);
+        timeUnitToCountToPatterns = new HashMap();
+
+        setup("units", timeUnitToCountToPatterns, FULL_NAME);
+        setup("short_units", timeUnitToCountToPatterns, ABBREVIATED_NAME);
+        isReady = true;
+    }
+
+
+    private void setup(String resourceKey, Map timeUnitToCountToPatterns,
+                       int style) {
+        // fill timeUnitToCountToPatterns from resource file
+        try {
+            ICUResourceBundle resource = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+            ICUResourceBundle unitsRes = resource.getWithFallback(resourceKey);
+            int size = unitsRes.getSize();
+            for ( int index = 0; index < size; ++index) {
+                String timeUnitName = unitsRes.get(index).getKey();
+                TimeUnit timeUnit = null;
+                if ( timeUnitName.equals("year") ) {
+                    timeUnit = TimeUnit.YEAR;
+                } else if ( timeUnitName.equals("month") ) {
+                    timeUnit = TimeUnit.MONTH;
+                } else if ( timeUnitName.equals("day") ) {
+                    timeUnit = TimeUnit.DAY;
+                } else if ( timeUnitName.equals("hour") ) {
+                    timeUnit = TimeUnit.HOUR;
+                } else if ( timeUnitName.equals("minute") ) {
+                    timeUnit = TimeUnit.MINUTE;
+                } else if ( timeUnitName.equals("second") ) {
+                    timeUnit = TimeUnit.SECOND;
+                } else if ( timeUnitName.equals("week") ) {
+                    timeUnit = TimeUnit.WEEK;
+                } else {
+                    continue;
+                }
+                ICUResourceBundle oneUnitRes = unitsRes.getWithFallback(timeUnitName);
+                int count = oneUnitRes.getSize();
+                Map countToPatterns = (Map)timeUnitToCountToPatterns.get(timeUnit);
+                if (countToPatterns ==  null) {
+                    countToPatterns = new TreeMap();
+                    timeUnitToCountToPatterns.put(timeUnit, countToPatterns);
+                } 
+                for ( int pluralIndex = 0; pluralIndex < count; ++pluralIndex) {
+                    String pluralCount = oneUnitRes.get(pluralIndex).getKey();
+                    String pattern = oneUnitRes.get(pluralIndex).getString();
+                    final MessageFormat messageFormat = new MessageFormat(pattern, locale);
+                    if (format != null) {
+                        messageFormat.setFormatByArgumentIndex(0, format);
+                    }
+                    // save both full name and abbreviated name in one table
+                    // is good space-wise, but it degrades performance, 
+                    // since it needs to check whether the needed space 
+                    // is already allocated or not.
+                    Object[] pair = (Object[])countToPatterns.get(pluralCount);
+                    if (pair == null) {
+                        pair = new Object[2];
+                        countToPatterns.put(pluralCount, pair);
+                    } 
+                    pair[style] = messageFormat;
+                }
+            }
+        } catch ( MissingResourceException e ) {
+        }
+
+        // there should be patterns for each plural rule in each time unit.
+        // For each time unit, 
+        //     for each plural rule, following is unit pattern fall-back rule:
+        //         ( for example: "one" hour )
+        //         look for its unit pattern in its locale tree.
+        //         if pattern is not found in its own locale, such as de_DE,
+        //         look for the pattern in its parent, such as de,
+        //         keep looking till found or till root.
+        //         if the pattern is not found in root either,
+        //         fallback to plural count "other",
+        //         look for the pattern of "other" in the locale tree:
+        //         "de_DE" to "de" to "root".
+        //         If not found, fall back to value of 
+        //         static variable DEFAULT_PATTERN_FOR_xxx, such as "{0} h". 
+        //
+        // Following is consistency check to create pattern for each
+        // plural rule in each time unit using above fall-back rule.
+        //
+        final TimeUnit[] timeUnits = TimeUnit.values();
+        Set keywords = pluralRules.getKeywords();
+        for ( int i = 0; i < timeUnits.length; ++i ) {
+            // for each time unit, 
+            // get all the patterns for each plural rule in this locale.
+            final TimeUnit timeUnit = timeUnits[i];
+            Map countToPatterns = (Map) timeUnitToCountToPatterns.get(timeUnit);
+            if ( countToPatterns == null ) {
+                countToPatterns = new TreeMap();
+                timeUnitToCountToPatterns.put(timeUnit, countToPatterns);
+            }
+            for (Iterator it = keywords.iterator(); it.hasNext();) {
+                String pluralCount = (String) it.next();
+                if ( countToPatterns.get(pluralCount) == null ||
+                     ((Object[])countToPatterns.get(pluralCount))[style] == null ) {
+                    // look through parents
+                    searchInTree(resourceKey, style, timeUnit, pluralCount, pluralCount, countToPatterns);
+                }
+            }
+        }
+    }
+
+
+
+    // srcPluralCount is the original plural count on which the pattern is
+    // searched for.
+    // searchPluralCount is the fallback plural count.
+    // For example, to search for pattern for ""one" hour",
+    // "one" is the srcPluralCount,
+    // if the pattern is not found even in root, fallback to 
+    // using patterns of plural count "other", 
+    // then, "other" is the searchPluralCount.
+    private void searchInTree(String resourceKey, int styl,
+                              TimeUnit timeUnit, String srcPluralCount,
+                              String searchPluralCount, Map countToPatterns) {
+        ULocale parentLocale=locale;
+        String srcTimeUnitName = timeUnit.toString();
+        while ( parentLocale != null ) {
+            try {
+                // look for pattern for srcPluralCount in locale tree
+                ICUResourceBundle unitsRes = (ICUResourceBundle) UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, parentLocale);
+                unitsRes = unitsRes.getWithFallback(resourceKey);
+                ICUResourceBundle oneUnitRes = unitsRes.getWithFallback(srcTimeUnitName);
+                String pattern = oneUnitRes.getStringWithFallback(searchPluralCount);
+                final MessageFormat messageFormat = new MessageFormat(pattern, locale);
+                if (format != null) {
+                    messageFormat.setFormatByArgumentIndex(0, format);
+                }
+                Object[] pair = (Object[])countToPatterns.get(srcPluralCount);
+                if (pair == null) {
+                    pair = new Object[2];
+                    countToPatterns.put(srcPluralCount, pair);
+                }
+                pair[styl] = messageFormat;
+                return;
+            } catch ( MissingResourceException e ) {
+            }
+            parentLocale=parentLocale.getFallback();
+        }
+        // if not found the pattern for this plural count at all,
+        // fall-back to plural count "other"
+        if ( searchPluralCount.equals("other") ) {
+            // set default fall back the same as the resource in root
+            MessageFormat messageFormat = null;
+            if ( timeUnit == TimeUnit.SECOND ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_SECOND, locale);
+            } else if ( timeUnit == TimeUnit.MINUTE ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_MINUTE, locale);
+            } else if ( timeUnit == TimeUnit.HOUR ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_HOUR, locale);
+            } else if ( timeUnit == TimeUnit.WEEK ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_WEEK, locale);
+            } else if ( timeUnit == TimeUnit.DAY ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_DAY, locale);
+            } else if ( timeUnit == TimeUnit.MONTH ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_MONTH, locale);
+            } else if ( timeUnit == TimeUnit.YEAR ) {
+                messageFormat = new MessageFormat(DEFAULT_PATTERN_FOR_YEAR, locale);
+            }
+            if (format != null && messageFormat != null) {
+                messageFormat.setFormatByArgumentIndex(0, format);
+            }
+            Object[] pair = (Object[])countToPatterns.get(srcPluralCount);
+            if (pair == null) {
+                pair = new Object[2];
+                countToPatterns.put(srcPluralCount, pair);
+            }
+            pair[styl] = messageFormat;
+        } else {
+            // fall back to rule "other", and search in parents
+            searchInTree(resourceKey, styl, timeUnit, srcPluralCount, "other", countToPatterns);
+        }
+    }
+}
diff --git a/src/com/ibm/icu/text/TitlecaseTransliterator.java b/src/com/ibm/icu/text/TitlecaseTransliterator.java
new file mode 100644
index 0000000..71aef2e
--- /dev/null
+++ b/src/com/ibm/icu/text/TitlecaseTransliterator.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 1996-2007, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCaseProps;
+
+import com.ibm.icu.util.ULocale;
+
+import com.ibm.icu.text.ReplaceableContextIterator;
+
+/**
+ * A transliterator that converts all letters (as defined by
+ * <code>UCharacter.isLetter()</code>) to lower case, except for those
+ * letters preceded by non-letters.  The latter are converted to title
+ * case using <code>UCharacter.toTitleCase()</code>.
+ * @author Alan Liu
+ */
+class TitlecaseTransliterator extends Transliterator {
+
+    static final String _ID = "Any-Title";
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new TitlecaseTransliterator(ULocale.US);
+            }
+        });
+
+        registerSpecialInverse("Title", "Lower", false);
+    }
+
+    private ULocale locale;
+
+    private UCaseProps csp;
+    private ReplaceableContextIterator iter;
+    private StringBuffer result;
+    private int[] locCache;
+
+   /**
+     * Constructs a transliterator.
+     */
+    public TitlecaseTransliterator(ULocale loc) {
+        super(_ID, null);
+        locale = loc;
+        // Need to look back 2 characters in the case of "can't"
+        setMaximumContextLength(2);
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch (IOException e) {
+            csp=null;
+        }
+        iter=new ReplaceableContextIterator();
+        result = new StringBuffer();
+        locCache = new int[1];
+        locCache[0]=0;
+    }
+     
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        // TODO reimplement, see ustrcase.c
+        // using a real word break iterator
+        //   instead of just looking for a transition between cased and uncased characters
+        // call CaseMapTransliterator::handleTransliterate() for lowercasing? (set fMap)
+        // needs to take isIncremental into account because case mappings are context-sensitive
+        //   also detect when lowercasing function did not finish because of context
+
+        if (offsets.start >= offsets.limit) {
+            return;
+        }
+
+        // case type: >0 cased (UCaseProps.LOWER etc.)  ==0 uncased  <0 case-ignorable
+        int type;
+
+        // Our mode; we are either converting letter toTitle or
+        // toLower.
+        boolean doTitle = true;
+
+        // Determine if there is a preceding context of cased case-ignorable*,
+        // in which case we want to start in toLower mode.  If the
+        // prior context is anything else (including empty) then start
+        // in toTitle mode.
+        int c, start;
+        for (start = offsets.start - 1; start >= offsets.contextStart; start -= UTF16.getCharCount(c)) {
+            c = text.char32At(start);
+            type=csp.getTypeOrIgnorable(c);
+            if(type>0) { // cased
+                doTitle=false;
+                break;
+            } else if(type==0) { // uncased but not ignorable
+                break;
+            }
+            // else (type<0) case-ignorable: continue
+        }
+
+        // Convert things after a cased character toLower; things
+        // after a uncased, non-case-ignorable character toTitle.  Case-ignorable
+        // characters are copied directly and do not change the mode.
+
+        iter.setText(text);
+        iter.setIndex(offsets.start);
+        iter.setLimit(offsets.limit);
+        iter.setContextLimits(offsets.contextStart, offsets.contextLimit);
+
+        result.setLength(0);
+
+        // Walk through original string
+        // If there is a case change, modify corresponding position in replaceable
+        int delta;
+
+        while((c=iter.nextCaseMapCP())>=0) {
+            type=csp.getTypeOrIgnorable(c);
+            if(type>=0) { // not case-ignorable
+                if(doTitle) {
+                    c=csp.toFullTitle(c, iter, result, locale, locCache);
+                } else {
+                    c=csp.toFullLower(c, iter, result, locale, locCache);
+                }
+                doTitle = type==0; // doTitle=isUncased
+
+                if(iter.didReachLimit() && isIncremental) {
+                    // the case mapping function tried to look beyond the context limit
+                    // wait for more input
+                    offsets.start=iter.getCaseMapCPStart();
+                    return;
+                }
+
+                /* decode the result */
+                if(c<0) {
+                    /* c mapped to itself, no change */
+                    continue;
+                } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+                    /* replace by the mapping string */
+                    delta=iter.replace(result.toString());
+                    result.setLength(0);
+                } else {
+                    /* replace by single-code point mapping */
+                    delta=iter.replace(UTF16.valueOf(c));
+                }
+
+                if(delta!=0) {
+                    offsets.limit += delta;
+                    offsets.contextLimit += delta;
+                }
+            }
+        }
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/TransformTransliterator.java b/src/com/ibm/icu/text/TransformTransliterator.java
new file mode 100644
index 0000000..311bf3c
--- /dev/null
+++ b/src/com/ibm/icu/text/TransformTransliterator.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 1996-2004, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *
+ */
+package com.ibm.icu.text;
+//import java.util.*;
+
+abstract class TransformTransliterator {
+    // Currently unused
+}
+
+///**
+// * An abstract class for transliterators based on a transform
+// * operation.  To create a transliterator that implements a
+// * transformation, create a subclass of this class and implement the
+// * abstract <code>transform()</code> and <code>hasTransform()</code>
+// * methods.
+// * @author Alan Liu
+// */
+//abstract class TransformTransliterator extends Transliterator {
+//
+//    /**
+//     * Constructs a transliterator.  For use by subclasses.
+//     */
+//    protected TransformTransliterator(String id, UnicodeFilter f) {
+//        super(id, f);
+//    }
+//
+//    /**
+//     * Implements {@link Transliterator#handleTransliterate}.
+//     */
+//    protected void handleTransliterate(Replaceable text,
+//                                       Position offsets, boolean incremental) {
+//
+//        int start;
+//        for (start = offsets.start; start < offsets.limit; ++start) {
+//            // Scan for the first character that is != its transform.
+//            // If there are none, we fall out without doing anything.
+//            char c = text.charAt(start);
+//            if (hasTransform(c)) {
+//                // There is a transforming character at start.  Break
+//                // up the remaining string, from start to
+//                // offsets.limit, into segments of unfiltered and
+//                // filtered characters.  Only transform the unfiltered
+//                // characters.  As always, minimize the number of
+//                // calls to Replaceable.replace().
+//
+//                int len = offsets.limit - start;
+//                // assert(len >= 1);
+//                
+//                char[] buf = new char[len];
+//                text.getChars(start, offsets.limit, buf, 0);
+//
+//                int segStart = 0;
+//                int segLimit;
+//                UnicodeFilter filt = getFilter();
+//
+//                // lenDelta is the accumulated length difference for
+//                // all transformed segments.  It is new length - old
+//                // length.
+//                int lenDelta = 0;
+//
+//                // Set segStart, segLimit to the unfiltered segment
+//                // starting with start.  If the filter is null, then
+//                // segStart/Limit will be set to the whole string,
+//                // that is, 0/len.
+//                do {
+//                    // Set segLimit to the first filtered char at or
+//                    // after segStart.
+//                    segLimit = len;
+//                    if (filt != null) {
+//                        segLimit = segStart;
+//                        while (segLimit < len && filt.contains(buf[segLimit])) {
+//                             ++segLimit;
+//                        }
+//                    }
+//
+//                    // Transform the unfiltered chars between segStart
+//                    // and segLimit.
+//                    int segLen = segLimit - segStart;
+//                    if (segLen != 0) {
+//                        String newStr = transform(
+//                            new String(buf, segStart, segLen));
+//                        text.replace(start, start + segLen, newStr);
+//                        start += newStr.length();
+//                        lenDelta += newStr.length() - segLen;
+//                    }
+//
+//                    // Set segStart to the first unfiltered char at or
+//                    // after segLimit.
+//                    segStart = segLimit;
+//                    if (filt != null) {
+//                        while (segStart < len && !filt.contains(buf[segStart])) {
+//                            ++segStart;
+//                        }
+//                    }
+//                    start += segStart - segLimit;
+//
+//                } while (segStart < len);
+//                
+//                offsets.limit += lenDelta;
+//                offsets.contextLimit += lenDelta;
+//                offsets.start = offsets.limit;
+//                return;
+//            }
+//        }
+//        // assert(start == offsets.limit);
+//        offsets.start = start;
+//    }
+//
+//    /**
+//     * Subclasses must implement this method to determine whether a
+//     * given character has a transform that is not equal to itself.
+//     * This is approximately equivalent to <code>c !=
+//     * transform(String.valueOf(c))</code>, where
+//     * <code>String.valueOf(c)</code> returns a String containing the
+//     * single character (not integer) <code>c</code>.  Subclasses that
+//     * transform all their input can simply return <code>true</code>.
+//     */
+//    protected abstract boolean hasTransform(int c);
+//
+//    /**
+//     * Subclasses must implement this method to transform a string.
+//     */
+//    protected abstract String transform(String s);
+//}
diff --git a/src/com/ibm/icu/text/TransliterationRule.java b/src/com/ibm/icu/text/TransliterationRule.java
new file mode 100644
index 0000000..907e1ac
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliterationRule.java
@@ -0,0 +1,572 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * A transliteration rule used by
+ * <code>RuleBasedTransliterator</code>.
+ * <code>TransliterationRule</code> is an immutable object.
+ *
+ * <p>A rule consists of an input pattern and an output string.  When
+ * the input pattern is matched, the output string is emitted.  The
+ * input pattern consists of zero or more characters which are matched
+ * exactly (the key) and optional context.  Context must match if it
+ * is specified.  Context may be specified before the key, after the
+ * key, or both.  The key, preceding context, and following context
+ * may contain variables.  Variables represent a set of Unicode
+ * characters, such as the letters <i>a</i> through <i>z</i>.
+ * Variables are detected by looking up each character in a supplied
+ * variable list to see if it has been so defined.
+ *
+ * <p>A rule may contain segments in its input string and segment
+ * references in its output string.  A segment is a substring of the
+ * input pattern, indicated by an offset and limit.  The segment may
+ * be in the preceding or following context.  It may not span a
+ * context boundary.  A segment reference is a special character in
+ * the output string that causes a segment of the input string (not
+ * the input pattern) to be copied to the output string.  The range of
+ * special characters that represent segment references is defined by
+ * RuleBasedTransliterator.Data.
+ *
+ * <p>Example: The rule "([a-z]) . ([0-9]) > $2 . $1" will change the input
+ * string "abc.123" to "ab1.c23".
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ */
+class TransliterationRule {
+
+    // TODO Eliminate the pattern and keyLength data members.  They
+    // are used only by masks() and getIndexValue() which are called
+    // only during build time, not during run-time.  Perhaps these
+    // methods and pattern/keyLength can be isolated into a separate
+    // object.
+
+    /**
+     * The match that must occur before the key, or null if there is no
+     * preceding context.
+     */
+    private StringMatcher anteContext;
+
+    /**
+     * The matcher object for the key.  If null, then the key is empty.
+     */
+    private StringMatcher key;
+
+    /**
+     * The match that must occur after the key, or null if there is no
+     * following context.
+     */
+    private StringMatcher postContext;
+
+    /**
+     * The object that performs the replacement if the key,
+     * anteContext, and postContext are matched.  Never null.
+     */
+    private UnicodeReplacer output;
+
+    /**
+     * The string that must be matched, consisting of the anteContext, key,
+     * and postContext, concatenated together, in that order.  Some components
+     * may be empty (zero length).
+     * @see anteContextLength
+     * @see keyLength
+     */
+    private String pattern;
+
+    /**
+     * An array of matcher objects corresponding to the input pattern
+     * segments.  If there are no segments this is null.  N.B. This is
+     * a UnicodeMatcher for generality, but in practice it is always a
+     * StringMatcher.  In the future we may generalize this, but for
+     * now we sometimes cast down to StringMatcher.
+     */
+    UnicodeMatcher[] segments;
+
+    /**
+     * The length of the string that must match before the key.  If
+     * zero, then there is no matching requirement before the key.
+     * Substring [0,anteContextLength) of pattern is the anteContext.
+     */
+    private int anteContextLength;
+
+    /**
+     * The length of the key.  Substring [anteContextLength,
+     * anteContextLength + keyLength) is the key.
+     */
+    private int keyLength;
+
+    /**
+     * Miscellaneous attributes.
+     */
+    byte flags;
+
+    /**
+     * Flag attributes.
+     */
+    static final int ANCHOR_START = 1;
+    static final int ANCHOR_END   = 2;
+
+    /**
+     * An alias pointer to the data for this rule.  The data provides
+     * lookup services for matchers and segments.
+     */
+    private final RuleBasedTransliterator.Data data;
+
+
+    /**
+     * Construct a new rule with the given input, output text, and other
+     * attributes.  A cursor position may be specified for the output text.
+     * @param input input string, including key and optional ante and
+     * post context
+     * @param anteContextPos offset into input to end of ante context, or -1 if
+     * none.  Must be <= input.length() if not -1.
+     * @param postContextPos offset into input to start of post context, or -1
+     * if none.  Must be <= input.length() if not -1, and must be >=
+     * anteContextPos.
+     * @param output output string
+     * @param cursorPos offset into output at which cursor is located, or -1 if
+     * none.  If less than zero, then the cursor is placed after the
+     * <code>output</code>; that is, -1 is equivalent to
+     * <code>output.length()</code>.  If greater than
+     * <code>output.length()</code> then an exception is thrown.
+     * @param cursorOffset an offset to be added to cursorPos to position the
+     * cursor either in the ante context, if < 0, or in the post context, if >
+     * 0.  For example, the rule "abc{def} > | @@@ xyz;" changes "def" to
+     * "xyz" and moves the cursor to before "a".  It would have a cursorOffset
+     * of -3.
+     * @param segs array of UnicodeMatcher corresponding to input pattern
+     * segments, or null if there are none
+     * @param anchorStart true if the the rule is anchored on the left to
+     * the context start
+     * @param anchorEnd true if the rule is anchored on the right to the
+     * context limit
+     */
+    public TransliterationRule(String input,
+                               int anteContextPos, int postContextPos,
+                               String output,
+                               int cursorPos, int cursorOffset,
+                               UnicodeMatcher[] segs,
+                               boolean anchorStart, boolean anchorEnd,
+                               RuleBasedTransliterator.Data theData) {
+        data = theData;
+
+        // Do range checks only when warranted to save time
+        if (anteContextPos < 0) {
+            anteContextLength = 0;
+        } else {
+            if (anteContextPos > input.length()) {
+                throw new IllegalArgumentException("Invalid ante context");
+            }
+            anteContextLength = anteContextPos;
+        }
+        if (postContextPos < 0) {
+            keyLength = input.length() - anteContextLength;
+        } else {
+            if (postContextPos < anteContextLength ||
+                postContextPos > input.length()) {
+                throw new IllegalArgumentException("Invalid post context");
+            }
+            keyLength = postContextPos - anteContextLength;
+        }
+        if (cursorPos < 0) {
+            cursorPos = output.length();
+        } else if (cursorPos > output.length()) {
+            throw new IllegalArgumentException("Invalid cursor position");
+        }
+
+        // We don't validate the segments array.  The caller must
+        // guarantee that the segments are well-formed (that is, that
+        // all $n references in the output refer to indices of this
+        // array, and that no array elements are null).
+        this.segments = segs;
+
+        pattern = input;
+        flags = 0;
+        if (anchorStart) {
+            flags |= ANCHOR_START;
+        }
+        if (anchorEnd) {
+            flags |= ANCHOR_END;
+        }
+
+        anteContext = null;
+        if (anteContextLength > 0) {
+            anteContext = new StringMatcher(pattern.substring(0, anteContextLength),
+                                            0, data);
+        }
+
+        key = null;
+        if (keyLength > 0) {
+            key = new StringMatcher(pattern.substring(anteContextLength, anteContextLength + keyLength),
+                                    0, data);
+        }
+
+        int postContextLength = pattern.length() - keyLength - anteContextLength;
+        postContext = null;
+        if (postContextLength > 0) {
+            postContext = new StringMatcher(pattern.substring(anteContextLength + keyLength),
+                                            0, data);
+        }
+
+        this.output = new StringReplacer(output, cursorPos + cursorOffset, data);
+    }
+
+    /**
+     * Return the preceding context length.  This method is needed to
+     * support the <code>Transliterator</code> method
+     * <code>getMaximumContextLength()</code>.
+     */
+    public int getAnteContextLength() {
+        return anteContextLength + (((flags & ANCHOR_START) != 0) ? 1 : 0);
+    }
+
+    /**
+     * Internal method.  Returns 8-bit index value for this rule.
+     * This is the low byte of the first character of the key,
+     * unless the first character of the key is a set.  If it's a
+     * set, or otherwise can match multiple keys, the index value is -1.
+     */
+    final int getIndexValue() {
+        if (anteContextLength == pattern.length()) {
+            // A pattern with just ante context {such as foo)>bar} can
+            // match any key.
+            return -1;
+        }
+        int c = UTF16.charAt(pattern, anteContextLength);
+        return data.lookupMatcher(c) == null ? (c & 0xFF) : -1;
+    }
+
+    /**
+     * Internal method.  Returns true if this rule matches the given
+     * index value.  The index value is an 8-bit integer, 0..255,
+     * representing the low byte of the first character of the key.
+     * It matches this rule if it matches the first character of the
+     * key, or if the first character of the key is a set, and the set
+     * contains any character with a low byte equal to the index
+     * value.  If the rule contains only ante context, as in foo)>bar,
+     * then it will match any key.
+     */
+    final boolean matchesIndexValue(int v) {
+        // Delegate to the key, or if there is none, to the postContext.
+        // If there is neither then we match any key; return true.
+        UnicodeMatcher m = (key != null) ? key : postContext;
+        return (m != null) ? m.matchesIndexValue(v) : true;
+    }
+
+    /**
+     * Return true if this rule masks another rule.  If r1 masks r2 then
+     * r1 matches any input string that r2 matches.  If r1 masks r2 and r2 masks
+     * r1 then r1 == r2.  Examples: "a>x" masks "ab>y".  "a>x" masks "a[b]>y".
+     * "[c]a>x" masks "[dc]a>y".
+     */
+    public boolean masks(TransliterationRule r2) {
+        /* Rule r1 masks rule r2 if the string formed of the
+         * antecontext, key, and postcontext overlaps in the following
+         * way:
+         *
+         * r1:      aakkkpppp
+         * r2:     aaakkkkkpppp
+         *            ^
+         *
+         * The strings must be aligned at the first character of the
+         * key.  The length of r1 to the left of the alignment point
+         * must be <= the length of r2 to the left; ditto for the
+         * right.  The characters of r1 must equal (or be a superset
+         * of) the corresponding characters of r2.  The superset
+         * operation should be performed to check for UnicodeSet
+         * masking.
+         *
+         * Anchors:  Two patterns that differ only in anchors only
+         * mask one another if they are exactly equal, and r2 has
+         * all the anchors r1 has (optionally, plus some).  Here Y
+         * means the row masks the column, N means it doesn't.
+         *
+         *         ab   ^ab    ab$  ^ab$
+         *   ab    Y     Y     Y     Y
+         *  ^ab    N     Y     N     Y
+         *   ab$   N     N     Y     Y
+         *  ^ab$   N     N     N     Y
+         *
+         * Post context: {a}b masks ab, but not vice versa, since {a}b
+         * matches everything ab matches, and {a}b matches {|a|}b but ab
+         * does not.  Pre context is different (a{b} does not align with
+         * ab).
+         */
+
+        /* LIMITATION of the current mask algorithm: Some rule
+         * maskings are currently not detected.  For example,
+         * "{Lu}]a>x" masks "A]a>y".  This can be added later. TODO
+         */
+
+        int len = pattern.length();
+        int left = anteContextLength;
+        int left2 = r2.anteContextLength;
+        int right = pattern.length() - left;
+        int right2 = r2.pattern.length() - left2;
+
+        // TODO Clean this up -- some logic might be combinable with the
+        // next statement.
+
+        // Test for anchor masking
+        if (left == left2 && right == right2 &&
+            keyLength <= r2.keyLength &&
+            r2.pattern.regionMatches(0, pattern, 0, len)) {
+            // The following boolean logic implements the table above
+            return (flags == r2.flags) ||
+                (!((flags & ANCHOR_START) != 0) && !((flags & ANCHOR_END) != 0)) ||
+                (((r2.flags & ANCHOR_START) != 0) && ((r2.flags & ANCHOR_END) != 0));
+        }
+
+        return left <= left2 &&
+            (right < right2 ||
+             (right == right2 && keyLength <= r2.keyLength)) &&
+            r2.pattern.regionMatches(left2 - left, pattern, 0, len);
+    }
+
+    static final int posBefore(Replaceable str, int pos) {
+        return (pos > 0) ?
+            pos - UTF16.getCharCount(str.char32At(pos-1)) :
+            pos - 1;
+    }
+
+    static final int posAfter(Replaceable str, int pos) {
+        return (pos >= 0 && pos < str.length()) ?
+            pos + UTF16.getCharCount(str.char32At(pos)) :
+            pos + 1;
+    }
+
+    /**
+     * Attempt a match and replacement at the given position.  Return
+     * the degree of match between this rule and the given text.  The
+     * degree of match may be mismatch, a partial match, or a full
+     * match.  A mismatch means at least one character of the text
+     * does not match the context or key.  A partial match means some
+     * context and key characters match, but the text is not long
+     * enough to match all of them.  A full match means all context
+     * and key characters match.
+     *
+     * If a full match is obtained, perform a replacement, update pos,
+     * and return U_MATCH.  Otherwise both text and pos are unchanged.
+     *
+     * @param text the text
+     * @param pos the position indices
+     * @param incremental if TRUE, test for partial matches that may
+     * be completed by additional text inserted at pos.limit.
+     * @return one of <code>U_MISMATCH</code>,
+     * <code>U_PARTIAL_MATCH</code>, or <code>U_MATCH</code>.  If
+     * incremental is FALSE then U_PARTIAL_MATCH will not be returned.
+     */
+    public int matchAndReplace(Replaceable text,
+                               Transliterator.Position pos,
+                               boolean incremental) {
+        // Matching and replacing are done in one method because the
+        // replacement operation needs information obtained during the
+        // match.  Another way to do this is to have the match method
+        // create a match result struct with relevant offsets, and to pass
+        // this into the replace method.
+
+        // ============================ MATCH ===========================
+
+        // Reset segment match data
+        if (segments != null) {
+            for (int i=0; i<segments.length; ++i) {
+                ((StringMatcher) segments[i]).resetMatch();
+            }
+        }
+
+        int keyLimit;
+        int[] intRef = new int[1];
+
+        // ------------------------ Ante Context ------------------------
+
+        // A mismatch in the ante context, or with the start anchor,
+        // is an outright U_MISMATCH regardless of whether we are
+        // incremental or not.
+        int oText; // offset into 'text'
+        int minOText;
+
+        // Note (1): We process text in 16-bit code units, rather than
+        // 32-bit code points.  This works because stand-ins are
+        // always in the BMP and because we are doing a literal match
+        // operation, which can be done 16-bits at a time.
+
+        int anteLimit = posBefore(text, pos.contextStart);
+
+        int match;
+
+        // Start reverse match at char before pos.start
+        intRef[0] = posBefore(text, pos.start);
+
+        if (anteContext != null) {
+            match = anteContext.matches(text, intRef, anteLimit, false);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return UnicodeMatcher.U_MISMATCH;
+            }
+        }
+
+        oText = intRef[0];
+
+        minOText = posAfter(text, oText);
+
+        // ------------------------ Start Anchor ------------------------
+
+        if (((flags & ANCHOR_START) != 0) && oText != anteLimit) {
+            return UnicodeMatcher.U_MISMATCH;
+        }
+
+        // -------------------- Key and Post Context --------------------
+
+        intRef[0] = pos.start;
+
+        if (key != null) {
+            match = key.matches(text, intRef, pos.limit, incremental);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return match;
+            }
+        }
+
+        keyLimit = intRef[0];
+
+        if (postContext != null) {
+            if (incremental && keyLimit == pos.limit) {
+                // The key matches just before pos.limit, and there is
+                // a postContext.  Since we are in incremental mode,
+                // we must assume more characters may be inserted at
+                // pos.limit -- this is a partial match.
+                return UnicodeMatcher.U_PARTIAL_MATCH;
+            }
+
+            match = postContext.matches(text, intRef, pos.contextLimit, incremental);
+            if (match != UnicodeMatcher.U_MATCH) {
+                return match;
+            }
+        }
+
+        oText = intRef[0];
+
+        // ------------------------- Stop Anchor ------------------------
+
+        if (((flags & ANCHOR_END)) != 0) {
+            if (oText != pos.contextLimit) {
+                return UnicodeMatcher.U_MISMATCH;
+            }
+            if (incremental) {
+                return UnicodeMatcher.U_PARTIAL_MATCH;
+            }
+        }
+
+        // =========================== REPLACE ==========================
+
+        // We have a full match.  The key is between pos.start and
+        // keyLimit.
+
+        int newLength = output.replace(text, pos.start, keyLimit, intRef);
+        int lenDelta = newLength - (keyLimit - pos.start);
+        int newStart = intRef[0];
+
+        oText += lenDelta;
+        pos.limit += lenDelta;
+        pos.contextLimit += lenDelta;
+        // Restrict new value of start to [minOText, min(oText, pos.limit)].
+        pos.start = Math.max(minOText, Math.min(Math.min(oText, pos.limit), newStart));
+        return UnicodeMatcher.U_MATCH;
+    }
+
+    /**
+     * Create a source string that represents this rule.  Append it to the
+     * given string.
+     */
+    public String toRule(boolean escapeUnprintable) {
+       // int i;
+
+        StringBuffer rule = new StringBuffer();
+
+        // Accumulate special characters (and non-specials following them)
+        // into quoteBuf.  Append quoteBuf, within single quotes, when
+        // a non-quoted element must be inserted.
+        StringBuffer quoteBuf = new StringBuffer();
+
+        // Do not emit the braces '{' '}' around the pattern if there
+        // is neither anteContext nor postContext.
+        boolean emitBraces =
+            (anteContext != null) || (postContext != null);
+
+        // Emit start anchor
+        if ((flags & ANCHOR_START) != 0) {
+            rule.append('^');
+        }
+
+        // Emit the input pattern
+        Utility.appendToRule(rule, anteContext, escapeUnprintable, quoteBuf);
+
+        if (emitBraces) {
+            Utility.appendToRule(rule, '{', true, escapeUnprintable, quoteBuf);
+        }
+
+        Utility.appendToRule(rule, key, escapeUnprintable, quoteBuf);
+
+        if (emitBraces) {
+            Utility.appendToRule(rule, '}', true, escapeUnprintable, quoteBuf);
+        }
+
+        Utility.appendToRule(rule, postContext, escapeUnprintable, quoteBuf);
+
+        // Emit end anchor
+        if ((flags & ANCHOR_END) != 0) {
+            rule.append('$');
+        }
+
+        Utility.appendToRule(rule, " > ", true, escapeUnprintable, quoteBuf);
+
+        // Emit the output pattern
+
+        Utility.appendToRule(rule, output.toReplacerPattern(escapeUnprintable),
+                     true, escapeUnprintable, quoteBuf);
+
+        Utility.appendToRule(rule, ';', true, escapeUnprintable, quoteBuf);
+
+        return rule.toString();
+    }
+
+    /**
+     * Return a string representation of this object.
+     * @return string representation of this object
+     */
+    public String toString() {
+        return '{' + toRule(true) + '}';
+    }
+
+    /**
+     * Union the set of all characters that may be modified by this rule
+     * into the given set.
+     */
+    void addSourceSetTo(UnicodeSet toUnionTo) {
+        int limit = anteContextLength + keyLength;
+        for (int i=anteContextLength; i<limit; ) {
+            int ch = UTF16.charAt(pattern, i);
+            i += UTF16.getCharCount(ch);
+            UnicodeMatcher matcher = data.lookupMatcher(ch);
+            if (matcher == null) {
+                toUnionTo.add(ch);
+            } else {
+                matcher.addMatchSetTo(toUnionTo);
+            }
+        }
+    }
+
+    /**
+     * Union the set of all characters that may be emitted by this rule
+     * into the given set.
+     */
+    void addTargetSetTo(UnicodeSet toUnionTo) {
+        output.addReplacementSetTo(toUnionTo);
+    }
+}
diff --git a/src/com/ibm/icu/text/TransliterationRuleSet.java b/src/com/ibm/icu/text/TransliterationRuleSet.java
new file mode 100644
index 0000000..5013afa
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliterationRuleSet.java
@@ -0,0 +1,258 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.*;
+import com.ibm.icu.impl.UtilityExtensions;
+
+/**
+ * A set of rules for a <code>RuleBasedTransliterator</code>.  This set encodes
+ * the transliteration in one direction from one set of characters or short
+ * strings to another.  A <code>RuleBasedTransliterator</code> consists of up to
+ * two such sets, one for the forward direction, and one for the reverse.
+ *
+ * <p>A <code>TransliterationRuleSet</code> has one important operation, that of
+ * finding a matching rule at a given point in the text.  This is accomplished
+ * by the <code>findMatch()</code> method.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ */
+class TransliterationRuleSet {
+    /**
+     * Vector of rules, in the order added.
+     */
+    private Vector ruleVector;
+
+    /**
+     * Length of the longest preceding context
+     */
+    private int maxContextLength;
+
+    /**
+     * Sorted and indexed table of rules.  This is created by freeze() from
+     * the rules in ruleVector.  rules.length >= ruleVector.size(), and the
+     * references in rules[] are aliases of the references in ruleVector.
+     * A single rule in ruleVector is listed one or more times in rules[].
+     */
+    private TransliterationRule[] rules;
+
+    /**
+     * Index table.  For text having a first character c, compute x = c&0xFF.
+     * Now use rules[index[x]..index[x+1]-1].  This index table is created by
+     * freeze().
+     */
+    private int[] index;
+
+    /**
+     * Construct a new empty rule set.
+     */
+    public TransliterationRuleSet() {
+        ruleVector = new Vector();
+        maxContextLength = 0;
+    }
+
+    /**
+     * Return the maximum context length.
+     * @return the length of the longest preceding context.
+     */
+    public int getMaximumContextLength() {
+        return maxContextLength;
+    }
+
+    /**
+     * Add a rule to this set.  Rules are added in order, and order is
+     * significant.
+     * @param rule the rule to add
+     */
+    public void addRule(TransliterationRule rule) {
+        ruleVector.addElement(rule);
+        int len;
+        if ((len = rule.getAnteContextLength()) > maxContextLength) {
+            maxContextLength = len;
+        }
+
+        rules = null;
+    }
+
+    /**
+     * Close this rule set to further additions, check it for masked rules,
+     * and index it to optimize performance.
+     * @exception IllegalArgumentException if some rules are masked
+     */
+    public void freeze() {
+        /* Construct the rule array and index table.  We reorder the
+         * rules by sorting them into 256 bins.  Each bin contains all
+         * rules matching the index value for that bin.  A rule
+         * matches an index value if string whose first key character
+         * has a low byte equal to the index value can match the rule.
+         *
+         * Each bin contains zero or more rules, in the same order
+         * they were found originally.  However, the total rules in
+         * the bins may exceed the number in the original vector,
+         * since rules that have a variable as their first key
+         * character will generally fall into more than one bin.
+         *
+         * That is, each bin contains all rules that either have that
+         * first index value as their first key character, or have
+         * a set containing the index value as their first character.
+         */
+        int n = ruleVector.size();
+        index = new int[257]; // [sic]
+        Vector v = new Vector(2*n); // heuristic; adjust as needed
+
+        /* Precompute the index values.  This saves a LOT of time.
+         */
+        int[] indexValue = new int[n];
+        for (int j=0; j<n; ++j) {
+            TransliterationRule r = (TransliterationRule) ruleVector.elementAt(j);
+            indexValue[j] = r.getIndexValue();
+        }
+        for (int x=0; x<256; ++x) {
+            index[x] = v.size();
+            for (int j=0; j<n; ++j) {
+                if (indexValue[j] >= 0) {
+                    if (indexValue[j] == x) {
+                        v.addElement(ruleVector.elementAt(j));
+                    }
+                } else {
+                    // If the indexValue is < 0, then the first key character is
+                    // a set, and we must use the more time-consuming
+                    // matchesIndexValue check.  In practice this happens
+                    // rarely, so we seldom tread this code path.
+                    TransliterationRule r = (TransliterationRule) ruleVector.elementAt(j);
+                    if (r.matchesIndexValue(x)) {
+                        v.addElement(r);
+                    }
+                }
+            }
+        }
+        index[256] = v.size();
+
+        /* Freeze things into an array.
+         */
+        rules = new TransliterationRule[v.size()];
+        v.copyInto(rules);
+
+        StringBuffer errors = null;
+
+        /* Check for masking.  This is MUCH faster than our old check,
+         * which was each rule against each following rule, since we
+         * only have to check for masking within each bin now.  It's
+         * 256*O(n2^2) instead of O(n1^2), where n1 is the total rule
+         * count, and n2 is the per-bin rule count.  But n2<<n1, so
+         * it's a big win.
+         */
+        for (int x=0; x<256; ++x) {
+            for (int j=index[x]; j<index[x+1]-1; ++j) {
+                TransliterationRule r1 = rules[j];
+                for (int k=j+1; k<index[x+1]; ++k) {
+                    TransliterationRule r2 = rules[k];
+                    if (r1.masks(r2)) {
+                        if (errors == null) {
+                            errors = new StringBuffer();
+                        } else {
+                            errors.append("\n");
+                        }
+                        errors.append("Rule " + r1 + " masks " + r2);
+                    }
+                }
+            }
+        }
+
+        if (errors != null) {
+            throw new IllegalArgumentException(errors.toString());
+        }
+    }
+
+    /**
+     * Transliterate the given text with the given UTransPosition
+     * indices.  Return TRUE if the transliteration should continue
+     * or FALSE if it should halt (because of a U_PARTIAL_MATCH match).
+     * Note that FALSE is only ever returned if isIncremental is TRUE.
+     * @param text the text to be transliterated
+     * @param pos the position indices, which will be updated
+     * @param incremental if TRUE, assume new text may be inserted
+     * at index.limit, and return FALSE if thre is a partial match.
+     * @return TRUE unless a U_PARTIAL_MATCH has been obtained,
+     * indicating that transliteration should stop until more text
+     * arrives.
+     */
+    public boolean transliterate(Replaceable text,
+                                 Transliterator.Position pos,
+                                 boolean incremental) {
+        int indexByte = text.char32At(pos.start) & 0xFF;
+        for (int i=index[indexByte]; i<index[indexByte+1]; ++i) {
+            int m = rules[i].matchAndReplace(text, pos, incremental);
+            switch (m) {
+            case UnicodeMatcher.U_MATCH:
+                if (Transliterator.DEBUG) {
+                    System.out.println((incremental ? "Rule.i: match ":"Rule: match ") +
+                                       rules[i].toRule(true) + " => " +
+                                       UtilityExtensions.formatInput(text, pos));
+                }
+                return true;
+            case UnicodeMatcher.U_PARTIAL_MATCH:
+                if (Transliterator.DEBUG) {
+                    System.out.println((incremental ? "Rule.i: partial match ":"Rule: partial match ") +
+                                       rules[i].toRule(true) + " => " +
+                                       UtilityExtensions.formatInput(text, pos));
+                }
+                return false;
+                default:
+                    if (Transliterator.DEBUG) {
+                        System.out.println("Rule: no match " + rules[i]);
+                    }
+            }
+        }
+        // No match or partial match from any rule
+        pos.start += UTF16.getCharCount(text.char32At(pos.start));
+        if (Transliterator.DEBUG) {
+            System.out.println((incremental ? "Rule.i: no match => ":"Rule: no match => ") +
+                               UtilityExtensions.formatInput(text, pos));
+        }
+        return true;
+    }
+
+    /**
+     * Create rule strings that represents this rule set.
+     */
+    String toRules(boolean escapeUnprintable) {
+        int i;
+        int count = ruleVector.size();
+        StringBuffer ruleSource = new StringBuffer();
+        for (i=0; i<count; ++i) {
+            if (i != 0) {
+                ruleSource.append('\n');
+            }
+            TransliterationRule r =
+                (TransliterationRule) ruleVector.elementAt(i);
+            ruleSource.append(r.toRule(escapeUnprintable));
+        }
+        return ruleSource.toString();
+    }
+
+    /**
+     * Return the set of all characters that may be modified (getTarget=false)
+     * or emitted (getTarget=true) by this set.
+     */
+    UnicodeSet getSourceTargetSet(boolean getTarget) {
+        UnicodeSet set = new UnicodeSet();
+        int count = ruleVector.size();
+        for (int i=0; i<count; ++i) {
+            TransliterationRule r =
+                (TransliterationRule) ruleVector.elementAt(i);
+            if (getTarget) {
+                r.addTargetSetTo(set);
+            } else {
+                r.addSourceSetTo(set);
+            }
+        }
+        return set;
+    }
+}
diff --git a/src/com/ibm/icu/text/Transliterator.java b/src/com/ibm/icu/text/Transliterator.java
new file mode 100644
index 0000000..17261a5
--- /dev/null
+++ b/src/com/ibm/icu/text/Transliterator.java
@@ -0,0 +1,1910 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UtilityExtensions;
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.text.MessageFormat;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Vector;
+
+/**
+ * <code>Transliterator</code> is an abstract class that
+ * transliterates text from one format to another.  The most common
+ * kind of transliterator is a script, or alphabet, transliterator.
+ * For example, a Russian to Latin transliterator changes Russian text
+ * written in Cyrillic characters to phonetically equivalent Latin
+ * characters.  It does not <em>translate</em> Russian to English!
+ * Transliteration, unlike translation, operates on characters, without
+ * reference to the meanings of words and sentences.
+ *
+ * <p>Although script conversion is its most common use, a
+ * transliterator can actually perform a more general class of tasks.
+ * In fact, <code>Transliterator</code> defines a very general API
+ * which specifies only that a segment of the input text is replaced
+ * by new text.  The particulars of this conversion are determined
+ * entirely by subclasses of <code>Transliterator</code>.
+ *
+ * <p><b>Transliterators are stateless</b>
+ *
+ * <p><code>Transliterator</code> objects are <em>stateless</em>; they
+ * retain no information between calls to
+ * <code>transliterate()</code>.  As a result, threads may share
+ * transliterators without synchronizing them.  This might seem to
+ * limit the complexity of the transliteration operation.  In
+ * practice, subclasses perform complex transliterations by delaying
+ * the replacement of text until it is known that no other
+ * replacements are possible.  In other words, although the
+ * <code>Transliterator</code> objects are stateless, the source text
+ * itself embodies all the needed information, and delayed operation
+ * allows arbitrary complexity.
+ *
+ * <p><b>Batch transliteration</b>
+ *
+ * <p>The simplest way to perform transliteration is all at once, on a
+ * string of existing text.  This is referred to as <em>batch</em>
+ * transliteration.  For example, given a string <code>input</code>
+ * and a transliterator <code>t</code>, the call
+ *
+ * <blockquote><code>String result = t.transliterate(input);
+ * </code></blockquote>
+ *
+ * will transliterate it and return the result.  Other methods allow
+ * the client to specify a substring to be transliterated and to use
+ * {@link Replaceable} objects instead of strings, in order to
+ * preserve out-of-band information (such as text styles).
+ *
+ * <p><b>Keyboard transliteration</b>
+ *
+ * <p>Somewhat more involved is <em>keyboard</em>, or incremental
+ * transliteration.  This is the transliteration of text that is
+ * arriving from some source (typically the user's keyboard) one
+ * character at a time, or in some other piecemeal fashion.
+ *
+ * <p>In keyboard transliteration, a <code>Replaceable</code> buffer
+ * stores the text.  As text is inserted, as much as possible is
+ * transliterated on the fly.  This means a GUI that displays the
+ * contents of the buffer may show text being modified as each new
+ * character arrives.
+ *
+ * <p>Consider the simple <code>RuleBasedTransliterator</code>:
+ *
+ * <blockquote><code>
+ * th&gt;{theta}<br>
+ * t&gt;{tau}
+ * </code></blockquote>
+ *
+ * When the user types 't', nothing will happen, since the
+ * transliterator is waiting to see if the next character is 'h'.  To
+ * remedy this, we introduce the notion of a cursor, marked by a '|'
+ * in the output string:
+ *
+ * <blockquote><code>
+ * t&gt;|{tau}<br>
+ * {tau}h&gt;{theta}
+ * </code></blockquote>
+ *
+ * Now when the user types 't', tau appears, and if the next character
+ * is 'h', the tau changes to a theta.  This is accomplished by
+ * maintaining a cursor position (independent of the insertion point,
+ * and invisible in the GUI) across calls to
+ * <code>transliterate()</code>.  Typically, the cursor will
+ * be coincident with the insertion point, but in a case like the one
+ * above, it will precede the insertion point.
+ *
+ * <p>Keyboard transliteration methods maintain a set of three indices
+ * that are updated with each call to
+ * <code>transliterate()</code>, including the cursor, start,
+ * and limit.  These indices are changed by the method, and they are
+ * passed in and out via a Position object. The <code>start</code> index
+ * marks the beginning of the substring that the transliterator will
+ * look at.  It is advanced as text becomes committed (but it is not
+ * the committed index; that's the <code>cursor</code>).  The
+ * <code>cursor</code> index, described above, marks the point at
+ * which the transliterator last stopped, either because it reached
+ * the end, or because it required more characters to disambiguate
+ * between possible inputs.  The <code>cursor</code> can also be
+ * explicitly set by rules in a <code>RuleBasedTransliterator</code>.
+ * Any characters before the <code>cursor</code> index are frozen;
+ * future keyboard transliteration calls within this input sequence
+ * will not change them.  New text is inserted at the
+ * <code>limit</code> index, which marks the end of the substring that
+ * the transliterator looks at.
+ *
+ * <p>Because keyboard transliteration assumes that more characters
+ * are to arrive, it is conservative in its operation.  It only
+ * transliterates when it can do so unambiguously.  Otherwise it waits
+ * for more characters to arrive.  When the client code knows that no
+ * more characters are forthcoming, perhaps because the user has
+ * performed some input termination operation, then it should call
+ * <code>finishTransliteration()</code> to complete any
+ * pending transliterations.
+ *
+ * <p><b>Inverses</b>
+ *
+ * <p>Pairs of transliterators may be inverses of one another.  For
+ * example, if transliterator <b>A</b> transliterates characters by
+ * incrementing their Unicode value (so "abc" -> "def"), and
+ * transliterator <b>B</b> decrements character values, then <b>A</b>
+ * is an inverse of <b>B</b> and vice versa.  If we compose <b>A</b>
+ * with <b>B</b> in a compound transliterator, the result is the
+ * indentity transliterator, that is, a transliterator that does not
+ * change its input text.
+ *
+ * The <code>Transliterator</code> method <code>getInverse()</code>
+ * returns a transliterator's inverse, if one exists, or
+ * <code>null</code> otherwise.  However, the result of
+ * <code>getInverse()</code> usually will <em>not</em> be a true
+ * mathematical inverse.  This is because true inverse transliterators
+ * are difficult to formulate.  For example, consider two
+ * transliterators: <b>AB</b>, which transliterates the character 'A'
+ * to 'B', and <b>BA</b>, which transliterates 'B' to 'A'.  It might
+ * seem that these are exact inverses, since
+ *
+ * <blockquote>"A" x <b>AB</b> -> "B"<br>
+ * "B" x <b>BA</b> -> "A"</blockquote>
+ *
+ * where 'x' represents transliteration.  However,
+ *
+ * <blockquote>"ABCD" x <b>AB</b> -> "BBCD"<br>
+ * "BBCD" x <b>BA</b> -> "AACD"</blockquote>
+ *
+ * so <b>AB</b> composed with <b>BA</b> is not the
+ * identity. Nonetheless, <b>BA</b> may be usefully considered to be
+ * <b>AB</b>'s inverse, and it is on this basis that
+ * <b>AB</b><code>.getInverse()</code> could legitimately return
+ * <b>BA</b>.
+ *
+ * <p><b>IDs and display names</b>
+ *
+ * <p>A transliterator is designated by a short identifier string or
+ * <em>ID</em>.  IDs follow the format <em>source-destination</em>,
+ * where <em>source</em> describes the entity being replaced, and
+ * <em>destination</em> describes the entity replacing
+ * <em>source</em>.  The entities may be the names of scripts,
+ * particular sequences of characters, or whatever else it is that the
+ * transliterator converts to or from.  For example, a transliterator
+ * from Russian to Latin might be named "Russian-Latin".  A
+ * transliterator from keyboard escape sequences to Latin-1 characters
+ * might be named "KeyboardEscape-Latin1".  By convention, system
+ * entity names are in English, with the initial letters of words
+ * capitalized; user entity names may follow any format so long as
+ * they do not contain dashes.
+ *
+ * <p>In addition to programmatic IDs, transliterator objects have
+ * display names for presentation in user interfaces, returned by
+ * {@link #getDisplayName}.
+ *
+ * <p><b>Factory methods and registration</b>
+ *
+ * <p>In general, client code should use the factory method
+ * <code>getInstance()</code> to obtain an instance of a
+ * transliterator given its ID.  Valid IDs may be enumerated using
+ * <code>getAvailableIDs()</code>.  Since transliterators are
+ * stateless, multiple calls to <code>getInstance()</code> with the
+ * same ID will return the same object.
+ *
+ * <p>In addition to the system transliterators registered at startup,
+ * user transliterators may be registered by calling
+ * <code>registerInstance()</code> at run time.  To register a
+ * transliterator subclass without instantiating it (until it is
+ * needed), users may call <code>registerClass()</code>.
+ *
+ * <p><b>Composed transliterators</b>
+ *
+ * <p>In addition to built-in system transliterators like
+ * "Latin-Greek", there are also built-in <em>composed</em>
+ * transliterators.  These are implemented by composing two or more
+ * component transliterators.  For example, if we have scripts "A",
+ * "B", "C", and "D", and we want to transliterate between all pairs
+ * of them, then we need to write 12 transliterators: "A-B", "A-C",
+ * "A-D", "B-A",..., "D-A", "D-B", "D-C".  If it is possible to
+ * convert all scripts to an intermediate script "M", then instead of
+ * writing 12 rule sets, we only need to write 8: "A~M", "B~M", "C~M",
+ * "D~M", "M~A", "M~B", "M~C", "M~D".  (This might not seem like a big
+ * win, but it's really 2<em>n</em> vs. <em>n</em><sup>2</sup> -
+ * <em>n</em>, so as <em>n</em> gets larger the gain becomes
+ * significant.  With 9 scripts, it's 18 vs. 72 rule sets, a big
+ * difference.)  Note the use of "~" rather than "-" for the script
+ * separator here; this indicates that the given transliterator is
+ * intended to be composed with others, rather than be used as is.
+ *
+ * <p>Composed transliterators can be instantiated as usual.  For
+ * example, the system transliterator "Devanagari-Gujarati" is a
+ * composed transliterator built internally as
+ * "Devanagari~InterIndic;InterIndic~Gujarati".  When this
+ * transliterator is instantiated, it appears externally to be a
+ * standard transliterator (e.g., getID() returns
+ * "Devanagari-Gujarati").
+ *
+ * <p><b>Subclassing</b>
+ *
+ * <p>Subclasses must implement the abstract method
+ * <code>handleTransliterate()</code>.  <p>Subclasses should override
+ * the <code>transliterate()</code> method taking a
+ * <code>Replaceable</code> and the <code>transliterate()</code>
+ * method taking a <code>String</code> and <code>StringBuffer</code>
+ * if the performance of these methods can be improved over the
+ * performance obtained by the default implementations in this class.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @stable ICU 2.0
+ */
+public abstract class Transliterator implements StringTransform  {
+    /**
+     * Direction constant indicating the forward direction in a transliterator,
+     * e.g., the forward rules of a RuleBasedTransliterator.  An "A-B"
+     * transliterator transliterates A to B when operating in the forward
+     * direction, and B to A when operating in the reverse direction.
+     * @stable ICU 2.0
+     */
+    public static final int FORWARD = 0;
+
+    /**
+     * Direction constant indicating the reverse direction in a transliterator,
+     * e.g., the reverse rules of a RuleBasedTransliterator.  An "A-B"
+     * transliterator transliterates A to B when operating in the forward
+     * direction, and B to A when operating in the reverse direction.
+     * @stable ICU 2.0
+     */
+    public static final int REVERSE = 1;
+
+    /**
+     * Position structure for incremental transliteration.  This data
+     * structure defines two substrings of the text being
+     * transliterated.  The first region, [contextStart,
+     * contextLimit), defines what characters the transliterator will
+     * read as context.  The second region, [start, limit), defines
+     * what characters will actually be transliterated.  The second
+     * region should be a subset of the first.
+     *
+     * <p>After a transliteration operation, some of the indices in this
+     * structure will be modified.  See the field descriptions for
+     * details.
+     *
+     * <p>contextStart <= start <= limit <= contextLimit
+     *
+     * <p>Note: All index values in this structure must be at code point
+     * boundaries.  That is, none of them may occur between two code units
+     * of a surrogate pair.  If any index does split a surrogate pair,
+     * results are unspecified.
+     * @stable ICU 2.0
+     */
+    public static class Position {
+
+        /**
+         * Beginning index, inclusive, of the context to be considered for
+         * a transliteration operation.  The transliterator will ignore
+         * anything before this index.  INPUT/OUTPUT parameter: This parameter
+         * is updated by a transliteration operation to reflect the maximum
+         * amount of antecontext needed by a transliterator.
+         * @stable ICU 2.0
+         */
+        public int contextStart;
+
+        /**
+         * Ending index, exclusive, of the context to be considered for a
+         * transliteration operation.  The transliterator will ignore
+         * anything at or after this index.  INPUT/OUTPUT parameter: This
+         * parameter is updated to reflect changes in the length of the
+         * text, but points to the same logical position in the text.
+         * @stable ICU 2.0
+         */
+        public int contextLimit;
+
+        /**
+         * Beginning index, inclusive, of the text to be transliteratd.
+         * INPUT/OUTPUT parameter: This parameter is advanced past
+         * characters that have already been transliterated by a
+         * transliteration operation.
+         * @stable ICU 2.0
+         */
+        public int start;
+
+        /**
+         * Ending index, exclusive, of the text to be transliteratd.
+         * INPUT/OUTPUT parameter: This parameter is updated to reflect
+         * changes in the length of the text, but points to the same
+         * logical position in the text.
+         * @stable ICU 2.0
+         */
+        public int limit;
+
+        /**
+         * Constructs a Position object with start, limit,
+         * contextStart, and contextLimit all equal to zero.
+         * @stable ICU 2.0
+         */
+        public Position() {
+            this(0, 0, 0, 0);
+        }
+
+        /**
+         * Constructs a Position object with the given start,
+         * contextStart, and contextLimit.  The limit is set to the
+         * contextLimit.
+         * @stable ICU 2.0
+         */
+        public Position(int contextStart, int contextLimit, int start) {
+            this(contextStart, contextLimit, start, contextLimit);
+        }
+
+        /**
+         * Constructs a Position object with the given start, limit,
+         * contextStart, and contextLimit.
+         * @stable ICU 2.0
+         */
+        public Position(int contextStart, int contextLimit,
+                        int start, int limit) {
+            this.contextStart = contextStart;
+            this.contextLimit = contextLimit;
+            this.start = start;
+            this.limit = limit;
+        }
+
+        /**
+         * Constructs a Position object that is a copy of another.
+         * @stable ICU 2.6
+         */
+        public Position(Position pos) {
+            set(pos);
+        }
+
+        /**
+         * Copies the indices of this position from another.
+         * @stable ICU 2.6
+         */
+        public void set(Position pos) {
+            contextStart = pos.contextStart;
+            contextLimit = pos.contextLimit;
+            start = pos.start;
+            limit = pos.limit;
+        }
+
+        /**
+         * Returns true if this Position is equal to the given object.
+         * @stable ICU 2.6
+         */
+        public boolean equals(Object obj) {
+            if (obj instanceof Position) {
+                Position pos = (Position) obj;
+                return contextStart == pos.contextStart &&
+                    contextLimit == pos.contextLimit &&
+                    start == pos.start &&
+                    limit == pos.limit;
+            }
+            return false;
+        }
+
+        /**
+         * Returns a string representation of this Position.
+         * @stable ICU 2.6
+         */
+        public String toString() {
+            return "[cs=" + contextStart
+                + ", s=" + start
+                + ", l=" + limit
+                + ", cl=" + contextLimit
+                + "]";
+        }
+
+        /**
+         * Check all bounds.  If they are invalid, throw an exception.
+         * @param length the length of the string this object applies to
+         * @exception IllegalArgumentException if any indices are out
+         * of bounds
+         * @stable ICU 2.0
+         */
+        public final void validate(int length) {
+            if (contextStart < 0 ||
+                start < contextStart ||
+                limit < start ||
+                contextLimit < limit ||
+                length < contextLimit) {
+                throw new IllegalArgumentException("Invalid Position {cs=" +
+                                                   contextStart + ", s=" +
+                                                   start + ", l=" +
+                                                   limit + ", cl=" +
+                                                   contextLimit + "}, len=" +
+                                                   length);
+            }
+        }
+    }
+
+    /**
+     * Programmatic name, e.g., "Latin-Arabic".
+     */
+    private String ID;
+
+    /**
+     * This transliterator's filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    private UnicodeFilter filter;
+
+    private int maximumContextLength = 0;
+
+    /**
+     * System transliterator registry.
+     */
+    private static TransliteratorRegistry registry;
+
+    private static Hashtable displayNameCache;
+
+    /**
+     * Prefix for resource bundle key for the display name for a
+     * transliterator.  The ID is appended to this to form the key.
+     * The resource bundle value should be a String.
+     */
+    private static final String RB_DISPLAY_NAME_PREFIX = "%Translit%%";
+
+    /**
+     * Prefix for resource bundle key for the display name for a
+     * transliterator SCRIPT.  The ID is appended to this to form the key.
+     * The resource bundle value should be a String.
+     */
+    private static final String RB_SCRIPT_DISPLAY_NAME_PREFIX = "%Translit%";
+
+    /**
+     * Resource bundle key for display name pattern.
+     * The resource bundle value should be a String forming a
+     * MessageFormat pattern, e.g.:
+     * "{0,choice,0#|1#{1} Transliterator|2#{1} to {2} Transliterator}".
+     */
+    private static final String RB_DISPLAY_NAME_PATTERN = "TransliteratorNamePattern";
+
+    /**
+     * Delimiter between elements in a compound ID.
+     * @internal
+     */
+    static final char ID_DELIM = ';';
+
+    /**
+     * Delimiter before target in an ID.
+     * @internal
+     */
+    static final char ID_SEP = '-';
+
+    /**
+     * Delimiter before variant in an ID.
+     * @internal
+     */
+    static final char VARIANT_SEP = '/';
+
+    /**
+     * To enable debugging output in the Transliterator component, set
+     * DEBUG to true.
+     *
+     * N.B. Make sure to recompile all of the com.ibm.icu.text package
+     * after changing this.  Easiest way to do this is 'ant clean
+     * core' ('ant' will NOT pick up the dependency automatically).
+     *
+     * <<This generates a lot of output.>>
+     */
+    static final boolean DEBUG = false;
+
+    /**
+     * Default constructor.
+     * @param ID the string identifier for this transliterator
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @stable ICU 2.0
+     */
+    protected Transliterator(String ID, UnicodeFilter filter) {
+        if (ID == null) {
+            throw new NullPointerException();
+        }
+        this.ID = ID;
+        this.filter = filter;
+    }
+
+    /**
+     * Transliterates a segment of a string, with optional filtering.
+     *
+     * @param text the string to be transliterated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @return The new limit index.  The text previously occupying <code>[start,
+     * limit)</code> has been transliterated, possibly to a string of a different
+     * length, at <code>[start, </code><em>new-limit</em><code>)</code>, where
+     * <em>new-limit</em> is the return value. If the input offsets are out of bounds,
+     * the returned value is -1 and the input string remains unchanged.
+     * @stable ICU 2.0
+     */
+    public final int transliterate(Replaceable text, int start, int limit) {
+        if (start < 0 ||
+            limit < start ||
+            text.length() < limit) {
+            return -1;
+        }
+
+        Position pos = new Position(start, limit, start);
+        filteredTransliterate(text, pos, false, true);
+        return pos.limit;
+    }
+
+    /**
+     * Transliterates an entire string in place. Convenience method.
+     * @param text the string to be transliterated
+     * @stable ICU 2.0
+     */
+    public final void transliterate(Replaceable text) {
+        transliterate(text, 0, text.length());
+    }
+
+    /**
+     * Transliterate an entire string and returns the result. Convenience method.
+     *
+     * @param text the string to be transliterated
+     * @return The transliterated text
+     * @stable ICU 2.0
+     */
+    public final String transliterate(String text) {
+        ReplaceableString result = new ReplaceableString(text);
+        transliterate(result);
+        return result.toString();
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly after new text has been inserted,
+     * typically as a result of a keyboard event.  The new text in
+     * <code>insertion</code> will be inserted into <code>text</code>
+     * at <code>index.contextLimit</code>, advancing
+     * <code>index.contextLimit</code> by <code>insertion.length()</code>.
+     * Then the transliterator will try to transliterate characters of
+     * <code>text</code> between <code>index.start</code> and
+     * <code>index.contextLimit</code>.  Characters before
+     * <code>index.start</code> will not be changed.
+     *
+     * <p>Upon return, values in <code>index</code> will be updated.
+     * <code>index.contextStart</code> will be advanced to the first
+     * character that future calls to this method will read.
+     * <code>index.start</code> and <code>index.contextLimit</code> will
+     * be adjusted to delimit the range of text that future calls to
+     * this method may change.
+     *
+     * <p>Typical usage of this method begins with an initial call
+     * with <code>index.contextStart</code> and <code>index.contextLimit</code>
+     * set to indicate the portion of <code>text</code> to be
+     * transliterated, and <code>index.start == index.contextStart</code>.
+     * Thereafter, <code>index</code> can be used without
+     * modification in future calls, provided that all changes to
+     * <code>text</code> are made via this method.
+     *
+     * <p>This method assumes that future calls may be made that will
+     * insert new text into the buffer.  As a result, it only performs
+     * unambiguous transliterations.  After the last call to this
+     * method, there may be untransliterated text that is waiting for
+     * more input to resolve an ambiguity.  In order to perform these
+     * pending transliterations, clients should call {@link
+     * #finishTransliteration} after the last call to this
+     * method has been made.
+     *
+     * @param text the buffer holding transliterated and untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @param insertion text to be inserted and possibly
+     * transliterated into the translation buffer at
+     * <code>index.contextLimit</code>.  If <code>null</code> then no text
+     * is inserted.
+     * @see #handleTransliterate
+     * @exception IllegalArgumentException if <code>index</code>
+     * is invalid
+     * @stable ICU 2.0
+     */
+    public final void transliterate(Replaceable text, Position index,
+                                    String insertion) {
+        index.validate(text.length());
+
+//        int originalStart = index.contextStart;
+        if (insertion != null) {
+            text.replace(index.limit, index.limit, insertion);
+            index.limit += insertion.length();
+            index.contextLimit += insertion.length();
+        }
+
+        if (index.limit > 0 &&
+            UTF16.isLeadSurrogate(text.charAt(index.limit - 1))) {
+            // Oops, there is a dangling lead surrogate in the buffer.
+            // This will break most transliterators, since they will
+            // assume it is part of a pair.  Don't transliterate until
+            // more text comes in.
+            return;
+        }
+
+        filteredTransliterate(text, index, true, true);
+
+// TODO
+// This doesn't work once we add quantifier support.  Need to rewrite
+// this code to support quantifiers and 'use maximum backup <n>;'.
+//
+//        index.contextStart = Math.max(index.start - getMaximumContextLength(),
+//                                      originalStart);
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly after a new character has been
+     * inserted, typically as a result of a keyboard event.  This is a
+     * convenience method; see {@link #transliterate(Replaceable,
+     * Transliterator.Position, String)} for details.
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @param insertion text to be inserted and possibly
+     * transliterated into the translation buffer at
+     * <code>index.contextLimit</code>.
+     * @see #transliterate(Replaceable, Transliterator.Position, String)
+     * @stable ICU 2.0
+     */
+    public final void transliterate(Replaceable text, Position index,
+                                    int insertion) {
+        transliterate(text, index, UTF16.valueOf(insertion));
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly.  This is a convenience method; see
+     * {@link #transliterate(Replaceable, Transliterator.Position,
+     * String)} for details.
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index the start and limit of the text, the position
+     * of the cursor, and the start and limit of transliteration.
+     * @see #transliterate(Replaceable, Transliterator.Position, String)
+     * @stable ICU 2.0
+     */
+    public final void transliterate(Replaceable text, Position index) {
+        transliterate(text, index, null);
+    }
+
+    /**
+     * Finishes any pending transliterations that were waiting for
+     * more characters.  Clients should call this method as the last
+     * call after a sequence of one or more calls to
+     * <code>transliterate()</code>.
+     * @param text the buffer holding transliterated and
+     * untransliterated text.
+     * @param index the array of indices previously passed to {@link
+     * #transliterate}
+     * @stable ICU 2.0
+     */
+    public final void finishTransliteration(Replaceable text,
+                                            Position index) {
+        index.validate(text.length());
+        filteredTransliterate(text, index, false, true);
+    }
+
+    /**
+     * Abstract method that concrete subclasses define to implement
+     * their transliteration algorithm.  This method handles both
+     * incremental and non-incremental transliteration.  Let
+     * <code>originalStart</code> refer to the value of
+     * <code>pos.start</code> upon entry.
+     *
+     * <ul>
+     *  <li>If <code>incremental</code> is false, then this method
+     *  should transliterate all characters between
+     *  <code>pos.start</code> and <code>pos.limit</code>. Upon return
+     *  <code>pos.start</code> must == <code> pos.limit</code>.</li>
+     *
+     *  <li>If <code>incremental</code> is true, then this method
+     *  should transliterate all characters between
+     *  <code>pos.start</code> and <code>pos.limit</code> that can be
+     *  unambiguously transliterated, regardless of future insertions
+     *  of text at <code>pos.limit</code>.  Upon return,
+     *  <code>pos.start</code> should be in the range
+     *  [<code>originalStart</code>, <code>pos.limit</code>).
+     *  <code>pos.start</code> should be positioned such that
+     *  characters [<code>originalStart</code>, <code>
+     *  pos.start</code>) will not be changed in the future by this
+     *  transliterator and characters [<code>pos.start</code>,
+     *  <code>pos.limit</code>) are unchanged.</li>
+     * </ul>
+     *
+     * <p>Implementations of this method should also obey the
+     * following invariants:</p>
+     *
+     * <ul>
+     *  <li> <code>pos.limit</code> and <code>pos.contextLimit</code>
+     *  should be updated to reflect changes in length of the text
+     *  between <code>pos.start</code> and <code>pos.limit</code>. The
+     *  difference <code> pos.contextLimit - pos.limit</code> should
+     *  not change.</li>
+     *
+     *  <li><code>pos.contextStart</code> should not change.</li>
+     *
+     *  <li>Upon return, neither <code>pos.start</code> nor
+     *  <code>pos.limit</code> should be less than
+     *  <code>originalStart</code>.</li>
+     *
+     *  <li>Text before <code>originalStart</code> and text after
+     *  <code>pos.limit</code> should not change.</li>
+     *
+     *  <li>Text before <code>pos.contextStart</code> and text after
+     *  <code> pos.contextLimit</code> should be ignored.</li>
+     * </ul>
+     *
+     * <p>Subclasses may safely assume that all characters in
+     * [<code>pos.start</code>, <code>pos.limit</code>) are filtered.
+     * In other words, the filter has already been applied by the time
+     * this method is called.  See
+     * <code>filteredTransliterate()</code>.
+     *
+     * <p>This method is <b>not</b> for public consumption.  Calling
+     * this method directly will transliterate
+     * [<code>pos.start</code>, <code>pos.limit</code>) without
+     * applying the filter. End user code should call <code>
+     * transliterate()</code> instead of this method. Subclass code
+     * should call <code>filteredTransliterate()</code> instead of
+     * this method.<p>
+     *
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     *
+     * @param pos the indices indicating the start, limit, context
+     * start, and context limit of the text.
+     *
+     * @param incremental if true, assume more text may be inserted at
+     * <code>pos.limit</code> and act accordingly.  Otherwise,
+     * transliterate all text between <code>pos.start</code> and
+     * <code>pos.limit</code> and move <code>pos.start</code> up to
+     * <code>pos.limit</code>.
+     *
+     * @see #transliterate
+     * @stable ICU 2.0
+     */
+    protected abstract void handleTransliterate(Replaceable text,
+                                                Position pos, boolean incremental);
+
+    /**
+     * Top-level transliteration method, handling filtering, incremental and
+     * non-incremental transliteration, and rollback.  All transliteration
+     * public API methods eventually call this method with a rollback argument
+     * of TRUE.  Other entities may call this method but rollback should be
+     * FALSE.
+     *
+     * <p>If this transliterator has a filter, break up the input text into runs
+     * of unfiltered characters.  Pass each run to
+     * <subclass>.handleTransliterate().
+     *
+     * <p>In incremental mode, if rollback is TRUE, perform a special
+     * incremental procedure in which several passes are made over the input
+     * text, adding one character at a time, and committing successful
+     * transliterations as they occur.  Unsuccessful transliterations are rolled
+     * back and retried with additional characters to give correct results.
+     *
+     * @param text the text to be transliterated
+     * @param index the position indices
+     * @param incremental if TRUE, then assume more characters may be inserted
+     * at index.limit, and postpone processing to accomodate future incoming
+     * characters
+     * @param rollback if TRUE and if incremental is TRUE, then perform special
+     * incremental processing, as described above, and undo partial
+     * transliterations where necessary.  If incremental is FALSE then this
+     * parameter is ignored.
+     */
+    private void filteredTransliterate(Replaceable text,
+                                       Position index,
+                                       boolean incremental,
+                                       boolean rollback) {
+        // Short circuit path for transliterators with no filter in
+        // non-incremental mode.
+        if (filter == null && !rollback) {
+            handleTransliterate(text, index, incremental);
+            return;
+        }
+
+        //----------------------------------------------------------------------
+        // This method processes text in two groupings:
+        //
+        // RUNS -- A run is a contiguous group of characters which are contained
+        // in the filter for this transliterator (filter.contains(ch) == true).
+        // Text outside of runs may appear as context but it is not modified.
+        // The start and limit Position values are narrowed to each run.
+        //
+        // PASSES (incremental only) -- To make incremental mode work correctly,
+        // each run is broken up into n passes, where n is the length (in code
+        // points) of the run.  Each pass contains the first n characters.  If a
+        // pass is completely transliterated, it is committed, and further passes
+        // include characters after the committed text.  If a pass is blocked,
+        // and does not transliterate completely, then this method rolls back
+        // the changes made during the pass, extends the pass by one code point,
+        // and tries again.
+        //----------------------------------------------------------------------
+
+        // globalLimit is the limit value for the entire operation.  We
+        // set index.limit to the end of each unfiltered run before
+        // calling handleTransliterate(), so we need to maintain the real
+        // value of index.limit here.  After each transliteration, we
+        // update globalLimit for insertions or deletions that have
+        // happened.
+        int globalLimit = index.limit;
+
+        // If there is a non-null filter, then break the input text up.  Say the
+        // input text has the form:
+        //   xxxabcxxdefxx
+        // where 'x' represents a filtered character (filter.contains('x') ==
+        // false).  Then we break this up into:
+        //   xxxabc xxdef xx
+        // Each pass through the loop consumes a run of filtered
+        // characters (which are ignored) and a subsequent run of
+        // unfiltered characters (which are transliterated).
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer();
+        }
+
+        for (;;) {
+
+            if (filter != null) {
+                // Narrow the range to be transliterated to the first run
+                // of unfiltered characters at or after index.start.
+
+                // Advance past filtered chars
+                int c;
+                while (index.start < globalLimit &&
+                       !filter.contains(c=text.char32At(index.start))) {
+                    index.start += UTF16.getCharCount(c);
+                }
+
+                // Find the end of this run of unfiltered chars
+                index.limit = index.start;
+                while (index.limit < globalLimit &&
+                       filter.contains(c=text.char32At(index.limit))) {
+                    index.limit += UTF16.getCharCount(c);
+                }
+            }
+
+            // Check to see if the unfiltered run is empty.  This only
+            // happens at the end of the string when all the remaining
+            // characters are filtered.
+            if (index.start == index.limit) {
+                break;
+            }
+
+            // Is this run incremental?  If there is additional
+            // filtered text (if limit < globalLimit) then we pass in
+            // an incremental value of FALSE to force the subclass to
+            // complete the transliteration for this run.
+            boolean isIncrementalRun =
+                (index.limit < globalLimit ? false : incremental);
+
+            int delta;
+
+            // Implement rollback.  To understand the need for rollback,
+            // consider the following transliterator:
+            //
+            //  "t" is "a > A;"
+            //  "u" is "A > b;"
+            //  "v" is a compound of "t; NFD; u" with a filter [:Ll:]
+            //
+            // Now apply "v" to the input text "a".  The result is "b".  But if
+            // the transliteration is done incrementally, then the NFD holds
+            // things up after "t" has already transformed "a" to "A".  When
+            // finishTransliterate() is called, "A" is _not_ processed because
+            // it gets excluded by the [:Ll:] filter, and the end result is "A"
+            // -- incorrect.  The problem is that the filter is applied to a
+            // partially-transliterated result, when we only want it to apply to
+            // input text.  Although this example describes a compound
+            // transliterator containing NFD and a specific filter, it can
+            // happen with any transliterator which does a partial
+            // transformation in incremental mode into characters outside its
+            // filter.
+            //
+            // To handle this, when in incremental mode we supply characters to
+            // handleTransliterate() in several passes.  Each pass adds one more
+            // input character to the input text.  That is, for input "ABCD", we
+            // first try "A", then "AB", then "ABC", and finally "ABCD".  If at
+            // any point we block (upon return, start < limit) then we roll
+            // back.  If at any point we complete the run (upon return start ==
+            // limit) then we commit that run.
+
+            if (rollback && isIncrementalRun) {
+
+                if (DEBUG) {
+                    log.setLength(0);
+                    System.out.println("filteredTransliterate{"+getID()+"}i: IN=" +
+                                       UtilityExtensions.formatInput(text, index));
+                }
+
+                int runStart = index.start;
+                int runLimit = index.limit;
+                int runLength =  runLimit - runStart;
+
+                // Make a rollback copy at the end of the string
+                int rollbackOrigin = text.length();
+                text.copy(runStart, runLimit, rollbackOrigin);
+
+                // Variables reflecting the commitment of completely
+                // transliterated text.  passStart is the runStart, advanced
+                // past committed text.  rollbackStart is the rollbackOrigin,
+                // advanced past rollback text that corresponds to committed
+                // text.
+                int passStart = runStart;
+                int rollbackStart = rollbackOrigin;
+
+                // The limit for each pass; we advance by one code point with
+                // each iteration.
+                int passLimit = index.start;
+
+                // Total length, in 16-bit code units, of uncommitted text.
+                // This is the length to be rolled back.
+                int uncommittedLength = 0;
+
+                // Total delta (change in length) for all passes
+                int totalDelta = 0;
+
+                // PASS MAIN LOOP -- Start with a single character, and extend
+                // the text by one character at a time.  Roll back partial
+                // transliterations and commit complete transliterations.
+                for (;;) {
+                    // Length of additional code point, either one or two
+                    int charLength =
+                        UTF16.getCharCount(text.char32At(passLimit));
+                    passLimit += charLength;
+                    if (passLimit > runLimit) {
+                        break;
+                    }
+                    uncommittedLength += charLength;
+
+                    index.limit = passLimit;
+
+                    if (DEBUG) {
+                        log.setLength(0);
+                        log.append("filteredTransliterate{"+getID()+"}i: ");
+                        UtilityExtensions.formatInput(log, text, index);
+                    }
+
+                    // Delegate to subclass for actual transliteration.  Upon
+                    // return, start will be updated to point after the
+                    // transliterated text, and limit and contextLimit will be
+                    // adjusted for length changes.
+                    handleTransliterate(text, index, true);
+
+                    if (DEBUG) {
+                        log.append(" => ");
+                        UtilityExtensions.formatInput(log, text, index);
+                    }
+
+                    delta = index.limit - passLimit; // change in length
+
+                    // We failed to completely transliterate this pass.
+                    // Roll back the text.  Indices remain unchanged; reset
+                    // them where necessary.
+                    if (index.start != index.limit) {
+                        // Find the rollbackStart, adjusted for length changes
+                        // and the deletion of partially transliterated text.
+                        int rs = rollbackStart + delta - (index.limit - passStart);
+
+                        // Delete the partially transliterated text
+                        text.replace(passStart, index.limit, "");
+
+                        // Copy the rollback text back
+                        text.copy(rs, rs + uncommittedLength, passStart);
+
+                        // Restore indices to their original values
+                        index.start = passStart;
+                        index.limit = passLimit;
+                        index.contextLimit -= delta;
+
+                        if (DEBUG) {
+                            log.append(" (ROLLBACK)");
+                        }
+                    }
+
+                    // We did completely transliterate this pass.  Update the
+                    // commit indices to record how far we got.  Adjust indices
+                    // for length change.
+                    else {
+                        // Move the pass indices past the committed text.
+                        passStart = passLimit = index.start;
+
+                        // Adjust the rollbackStart for length changes and move
+                        // it past the committed text.  All characters we've
+                        // processed to this point are committed now, so zero
+                        // out the uncommittedLength.
+                        rollbackStart += delta + uncommittedLength;
+                        uncommittedLength = 0;
+
+                        // Adjust indices for length changes.
+                        runLimit += delta;
+                        totalDelta += delta;
+                    }
+
+                    if (DEBUG) {
+                        System.out.println(Utility.escape(log.toString()));
+                    }
+                }
+
+                // Adjust overall limit and rollbackOrigin for insertions and
+                // deletions.  Don't need to worry about contextLimit because
+                // handleTransliterate() maintains that.
+                rollbackOrigin += totalDelta;
+                globalLimit += totalDelta;
+
+                // Delete the rollback copy
+                text.replace(rollbackOrigin, rollbackOrigin + runLength, "");
+
+                // Move start past committed text
+                index.start = passStart;
+            }
+
+            else {
+                // Delegate to subclass for actual transliteration.
+                if (DEBUG) {
+                    log.setLength(0);
+                    log.append("filteredTransliterate{"+getID()+"}: ");
+                    UtilityExtensions.formatInput(log, text, index);
+                }
+
+                int limit = index.limit;
+                handleTransliterate(text, index, isIncrementalRun);
+                delta = index.limit - limit; // change in length
+
+                if (DEBUG) {
+                    log.append(" => ");
+                    UtilityExtensions.formatInput(log, text, index);
+                }
+
+                // In a properly written transliterator, start == limit after
+                // handleTransliterate() returns when incremental is false.
+                // Catch cases where the subclass doesn't do this, and throw
+                // an exception.  (Just pinning start to limit is a bad idea,
+                // because what's probably happening is that the subclass
+                // isn't transliterating all the way to the end, and it should
+                // in non-incremental mode.)
+                if (!isIncrementalRun && index.start != index.limit) {
+                    throw new RuntimeException("ERROR: Incomplete non-incremental transliteration by " + getID());
+                }
+
+                // Adjust overall limit for insertions/deletions.  Don't need
+                // to worry about contextLimit because handleTransliterate()
+                // maintains that.
+                globalLimit += delta;
+
+                if (DEBUG) {
+                    System.out.println(Utility.escape(log.toString()));
+                }
+            }
+
+            if (filter == null || isIncrementalRun) {
+                break;
+            }
+
+            // If we did completely transliterate this
+            // run, then repeat with the next unfiltered run.
+        }
+
+        // Start is valid where it is.  Limit needs to be put back where
+        // it was, modulo adjustments for deletions/insertions.
+        index.limit = globalLimit;
+
+        if (DEBUG) {
+            System.out.println("filteredTransliterate{"+getID()+"}: OUT=" +
+                               UtilityExtensions.formatInput(text, index));
+        }
+    }
+
+    /**
+     * Transliterate a substring of text, as specified by index, taking filters
+     * into account.  This method is for subclasses that need to delegate to
+     * another transliterator, such as CompoundTransliterator.
+     * @param text the text to be transliterated
+     * @param index the position indices
+     * @param incremental if TRUE, then assume more characters may be inserted
+     * at index.limit, and postpone processing to accomodate future incoming
+     * characters
+     * @stable ICU 2.0
+     */
+    public void filteredTransliterate(Replaceable text,
+                                         Position index,
+                                         boolean incremental) {
+        filteredTransliterate(text, index, incremental, false);
+    }
+
+    /**
+     * Returns the length of the longest context required by this transliterator.
+     * This is <em>preceding</em> context.  The default value is zero, but
+     * subclasses can change this by calling <code>setMaximumContextLength()</code>.
+     * For example, if a transliterator translates "ddd" (where
+     * d is any digit) to "555" when preceded by "(ddd)", then the preceding
+     * context length is 5, the length of "(ddd)".
+     *
+     * @return The maximum number of preceding context characters this
+     * transliterator needs to examine
+     * @stable ICU 2.0
+     */
+    public final int getMaximumContextLength() {
+        return maximumContextLength;
+    }
+
+    /**
+     * Method for subclasses to use to set the maximum context length.
+     * @see #getMaximumContextLength
+     * @stable ICU 2.0
+     */
+    protected void setMaximumContextLength(int a) {
+        if (a < 0) {
+            throw new IllegalArgumentException("Invalid context length " + a);
+        }
+        maximumContextLength = a;
+    }
+
+    /**
+     * Returns a programmatic identifier for this transliterator.
+     * If this identifier is passed to <code>getInstance()</code>, it
+     * will return this object, if it has been registered.
+     * @see #registerClass
+     * @see #getAvailableIDs
+     * @stable ICU 2.0
+     */
+    public final String getID() {
+        return ID;
+    }
+
+    /**
+     * Set the programmatic identifier for this transliterator.  Only
+     * for use by subclasses.
+     * @stable ICU 2.0
+     */
+    protected final void setID(String id) {
+        ID = id;
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the default locale.  See {@link
+     * #getDisplayName(String,Locale)} for details.
+     * @stable ICU 2.0
+     */
+    public final static String getDisplayName(String ID) {
+        return getDisplayName(ID, ULocale.getDefault());
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the given locale.  This name is taken
+     * from the locale resource data in the standard manner of the
+     * <code>java.text</code> package.
+     *
+     * <p>If no localized names exist in the system resource bundles,
+     * a name is synthesized using a localized
+     * <code>MessageFormat</code> pattern from the resource data.  The
+     * arguments to this pattern are an integer followed by one or two
+     * strings.  The integer is the number of strings, either 1 or 2.
+     * The strings are formed by splitting the ID for this
+     * transliterator at the first '-'.  If there is no '-', then the
+     * entire ID forms the only string.
+     * @param inLocale the Locale in which the display name should be
+     * localized.
+     * @see java.text.MessageFormat
+     * @stable ICU 2.0
+     */
+    public static String getDisplayName(String id, Locale inLocale) {
+        return getDisplayName(id, ULocale.forLocale(inLocale));
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the given locale.  This name is taken
+     * from the locale resource data in the standard manner of the
+     * <code>java.text</code> package.
+     *
+     * <p>If no localized names exist in the system resource bundles,
+     * a name is synthesized using a localized
+     * <code>MessageFormat</code> pattern from the resource data.  The
+     * arguments to this pattern are an integer followed by one or two
+     * strings.  The integer is the number of strings, either 1 or 2.
+     * The strings are formed by splitting the ID for this
+     * transliterator at the first '-'.  If there is no '-', then the
+     * entire ID forms the only string.
+     * @param inLocale the ULocale in which the display name should be
+     * localized.
+     * @see java.text.MessageFormat
+     * @stable ICU 3.2
+     */
+    public static String getDisplayName(String id, ULocale inLocale) {
+
+        // Resource bundle containing display name keys and the
+        // RB_RULE_BASED_IDS array.
+        //
+        //If we ever integrate this with the Sun JDK, the resource bundle
+        // root will change to sun.text.resources.LocaleElements
+
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.
+            getBundleInstance(ICUResourceBundle.ICU_TRANSLIT_BASE_NAME, inLocale);
+
+        // Normalize the ID
+        String stv[] = TransliteratorIDParser.IDtoSTV(id);
+        if (stv == null) {
+            // No target; malformed id
+            return "";
+        }
+        String ID = stv[0] + '-' + stv[1];
+        if (stv[2] != null && stv[2].length() > 0) {
+            ID = ID + '/' + stv[2];
+        }
+
+        // Use the registered display name, if any
+        String n = (String) displayNameCache.get(new CaseInsensitiveString(ID));
+        if (n != null) {
+            return n;
+        }
+
+        // Use display name for the entire transliterator, if it
+        // exists.
+        try {
+            return bundle.getString(RB_DISPLAY_NAME_PREFIX + ID);
+        } catch (MissingResourceException e) {}
+
+        try {
+            // Construct the formatter first; if getString() fails
+            // we'll exit the try block
+            MessageFormat format = new MessageFormat(
+                    bundle.getString(RB_DISPLAY_NAME_PATTERN));
+            // Construct the argument array
+            Object[] args = new Object[] { new Integer(2), stv[0], stv[1] };
+
+            // Use display names for the scripts, if they exist
+            for (int j=1; j<=2; ++j) {
+                try {
+                    args[j] = bundle.getString(RB_SCRIPT_DISPLAY_NAME_PREFIX +
+                                               (String) args[j]);
+                } catch (MissingResourceException e) {}
+            }
+
+            // Format it using the pattern in the resource
+            return (stv[2].length() > 0) ?
+                (format.format(args) + '/' + stv[2]) :
+                format.format(args);
+        } catch (MissingResourceException e2) {}
+
+        // We should not reach this point unless there is something
+        // wrong with the build or the RB_DISPLAY_NAME_PATTERN has
+        // been deleted from the root RB_LOCALE_ELEMENTS resource.
+        throw new RuntimeException();
+    }
+
+    /**
+     * Returns the filter used by this transliterator, or <tt>null</tt>
+     * if this transliterator uses no filter.
+     * @stable ICU 2.0
+     */
+    public final UnicodeFilter getFilter() {
+        return filter;
+    }
+
+    /**
+     * Changes the filter used by this transliterator.  If the filter
+     * is set to <tt>null</tt> then no filtering will occur.
+     *
+     * <p>Callers must take care if a transliterator is in use by
+     * multiple threads.  The filter should not be changed by one
+     * thread while another thread may be transliterating.
+     * @stable ICU 2.0
+     */
+    public void setFilter(UnicodeFilter filter) {
+        this.filter = filter;
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object given its ID.
+     * The ID must be either a system transliterator ID or a ID registered
+     * using <code>registerClass()</code>.
+     *
+     * @param ID a valid ID, as enumerated by <code>getAvailableIDs()</code>
+     * @return A <code>Transliterator</code> object with the given ID
+     * @exception IllegalArgumentException if the given ID is invalid.
+     * @stable ICU 2.0
+     */
+    public static final Transliterator getInstance(String ID) {
+        return getInstance(ID, FORWARD);
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object given its ID.
+     * The ID must be either a system transliterator ID or a ID registered
+     * using <code>registerClass()</code>.
+     *
+     * @param ID a valid ID, as enumerated by <code>getAvailableIDs()</code>
+     * @param dir either FORWARD or REVERSE.  If REVERSE then the
+     * inverse of the given ID is instantiated.
+     * @return A <code>Transliterator</code> object with the given ID
+     * @exception IllegalArgumentException if the given ID is invalid.
+     * @see #registerClass
+     * @see #getAvailableIDs
+     * @see #getID
+     * @stable ICU 2.0
+     */
+    public static Transliterator getInstance(String ID,
+                                             int dir) {
+        StringBuffer canonID = new StringBuffer();
+        Vector list = new Vector();
+        UnicodeSet[] globalFilter = new UnicodeSet[1];
+        if (!TransliteratorIDParser.parseCompoundID(ID, dir, canonID, list, globalFilter)) {
+            throw new IllegalArgumentException("Invalid ID " + ID);
+        }
+
+        TransliteratorIDParser.instantiateList(list);
+
+        // assert(list.size() > 0);
+        Transliterator t = null;
+        if (list.size() > 1 || Utility.indexOf(canonID, ";") >= 0) {
+            // [NOTE: If it's a compoundID, we instantiate a CompoundTransliterator even if it only
+            // has one child transliterator.  This is so that toRules() will return the right thing
+            // (without any inactive ID), but our main ID still comes out correct.  That is, if we
+            // instantiate "(Lower);Latin-Greek;", we want the rules to come out as "::Latin-Greek;"
+            // even though the ID is "(Lower);Latin-Greek;".
+            t = new CompoundTransliterator(list);
+        }
+        else {
+            t = (Transliterator)list.elementAt(0);
+        }
+
+        t.setID(canonID.toString());
+        if (globalFilter[0] != null) {
+            t.setFilter(globalFilter[0]);
+        }
+        return t;
+    }
+
+    /**
+     * Create a transliterator from a basic ID.  This is an ID
+     * containing only the forward direction source, target, and
+     * variant.
+     * @param id a basic ID of the form S-T or S-T/V.
+     * @param canonID canonical ID to apply to the result, or
+     * null to leave the ID unchanged
+     * @return a newly created Transliterator or null if the ID is
+     * invalid.
+     */
+    static Transliterator getBasicInstance(String id, String canonID) {
+        StringBuffer s = new StringBuffer();
+        Transliterator t = registry.get(id, s);
+        if (s.length() != 0) {
+            // assert(t==0);
+            // Instantiate an alias
+            t = getInstance(s.toString(), FORWARD);
+        }
+        if (t != null && canonID != null) {
+            t.setID(canonID);
+        }
+        return t;
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object constructed from
+     * the given rule string.  This will be a RuleBasedTransliterator,
+     * if the rule string contains only rules, or a
+     * CompoundTransliterator, if it contains ID blocks, or a
+     * NullTransliterator, if it contains ID blocks which parse as
+     * empty for the given direction.
+     * @stable ICU 2.0
+     */
+    public static final Transliterator createFromRules(String ID, String rules, int dir) {
+        Transliterator t = null;
+
+        TransliteratorParser parser = new TransliteratorParser();
+        parser.parse(rules, dir);
+
+        // NOTE: The logic here matches that in TransliteratorRegistry.
+        if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 0) {
+            t = new NullTransliterator();
+        }
+        else if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 1) {
+            t = new RuleBasedTransliterator(ID, (RuleBasedTransliterator.Data)parser.dataVector.get(0), null);
+        }
+        else if (parser.idBlockVector.size() == 1 && parser.dataVector.size() == 0) {
+            // idBlock, no data -- this is an alias.  The ID has
+            // been munged from reverse into forward mode, if
+            // necessary, so instantiate the ID in the forward
+            // direction.
+            if (parser.compoundFilter != null)
+                t = getInstance(parser.compoundFilter.toPattern(false) + ";"
+                        + (String)parser.idBlockVector.get(0));
+            else
+                t = getInstance((String)parser.idBlockVector.get(0));
+
+
+            if (t != null) {
+                t.setID(ID);
+            }
+        }
+        else {
+            Vector transliterators = new Vector();
+            int passNumber = 1;
+
+            int limit = Math.max(parser.idBlockVector.size(), parser.dataVector.size());
+            for (int i = 0; i < limit; i++) {
+                if (i < parser.idBlockVector.size()) {
+                    String idBlock = (String)parser.idBlockVector.get(i);
+                    if (idBlock.length() > 0) {
+                        Transliterator temp = getInstance(idBlock);
+                        if (!(temp instanceof NullTransliterator))
+                            transliterators.add(getInstance(idBlock));
+                    }
+                }
+                if (i < parser.dataVector.size()) {
+                    RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)parser.dataVector.get(i);
+                    transliterators.add(new RuleBasedTransliterator("%Pass" + passNumber++, data, null));
+                }
+            }
+
+            t = new CompoundTransliterator(transliterators, passNumber - 1);
+            t.setID(ID);
+            if (parser.compoundFilter != null) {
+                t.setFilter(parser.compoundFilter);
+            }
+        }
+
+        return t;
+    }
+
+    /**
+     * Returns a rule string for this transliterator.
+     * @param escapeUnprintable if true, then unprintable characters
+     * will be converted to escape form backslash-'u' or
+     * backslash-'U'.
+     * @stable ICU 2.0
+     */
+    public String toRules(boolean escapeUnprintable) {
+        return baseToRules(escapeUnprintable);
+    }
+
+    /**
+     * Returns a rule string for this transliterator.  This is
+     * a non-overrideable base class implementation that subclasses
+     * may call.  It simply munges the ID into the correct format,
+     * that is, "foo" => "::foo".
+     * @param escapeUnprintable if true, then unprintable characters
+     * will be converted to escape form backslash-'u' or
+     * backslash-'U'.
+     * @stable ICU 2.0
+     */
+    protected final String baseToRules(boolean escapeUnprintable) {
+        // The base class implementation of toRules munges the ID into
+        // the correct format.  That is: foo => ::foo
+        // KEEP in sync with rbt_pars
+        if (escapeUnprintable) {
+            StringBuffer rulesSource = new StringBuffer();
+            String id = getID();
+            for (int i=0; i<id.length();) {
+                int c = UTF16.charAt(id, i);
+                if (!Utility.escapeUnprintable(rulesSource, c)) {
+                    UTF16.append(rulesSource, c);
+                }
+                i += UTF16.getCharCount(c);
+            }
+            rulesSource.insert(0, "::");
+            rulesSource.append(ID_DELIM);
+            return rulesSource.toString();
+        }
+        return "::" + getID() + ID_DELIM;
+    }
+
+    /**
+     * Return the elements that make up this transliterator.  For
+     * example, if the transliterator "NFD;Jamo-Latin;Latin-Greek"
+     * were created, the return value of this method would be an array
+     * of the three transliterator objects that make up that
+     * transliterator: [NFD, Jamo-Latin, Latin-Greek].
+     *
+     * <p>If this transliterator is not composed of other
+     * transliterators, then this method will return an array of
+     * length one containing a reference to this transliterator.
+     * @return an array of one or more transliterators that make up
+     * this transliterator
+     * @stable ICU 3.0
+     */
+    public Transliterator[] getElements() {
+        Transliterator result[];
+        if (this instanceof CompoundTransliterator) {
+            CompoundTransliterator cpd = (CompoundTransliterator) this;
+            result = new Transliterator[cpd.getCount()];
+            for (int i=0; i<result.length; ++i) {
+                result[i] = cpd.getTransliterator(i);
+            }
+        } else {
+            result = new Transliterator[] { this };
+        }
+        return result;
+    }
+
+    /**
+     * Returns the set of all characters that may be modified in the
+     * input text by this Transliterator.  This incorporates this
+     * object's current filter; if the filter is changed, the return
+     * value of this function will change.  The default implementation
+     * returns an empty set.  Some subclasses may override {@link
+     * #handleGetSourceSet} to return a more precise result.  The
+     * return result is approximate in any case and is intended for
+     * use by tests, tools, or utilities.
+     * @see #getTargetSet
+     * @see #handleGetSourceSet
+     * @stable ICU 2.2
+     */
+    public final UnicodeSet getSourceSet() {
+        UnicodeSet set = handleGetSourceSet();
+        if (filter != null) {
+            UnicodeSet filterSet;
+            // Most, but not all filters will be UnicodeSets.  Optimize for
+            // the high-runner case.
+            try {
+                filterSet = (UnicodeSet) filter;
+            } catch (ClassCastException e) {
+                filterSet = new UnicodeSet();
+                filter.addMatchSetTo(filterSet);
+            }
+            set.retainAll(filterSet);
+        }
+        return set;
+    }
+
+    /**
+     * Framework method that returns the set of all characters that
+     * may be modified in the input text by this Transliterator,
+     * ignoring the effect of this object's filter.  The base class
+     * implementation returns the empty set.  Subclasses that wish to
+     * implement this should override this method.
+     * @return the set of characters that this transliterator may
+     * modify.  The set may be modified, so subclasses should return a
+     * newly-created object.
+     * @see #getSourceSet
+     * @see #getTargetSet
+     * @stable ICU 2.2
+     */
+    protected UnicodeSet handleGetSourceSet() {
+        return new UnicodeSet();
+    }
+
+    /**
+     * Returns the set of all characters that may be generated as
+     * replacement text by this transliterator.  The default
+     * implementation returns the empty set.  Some subclasses may
+     * override this method to return a more precise result.  The
+     * return result is approximate in any case and is intended for
+     * use by tests, tools, or utilities requiring such
+     * meta-information.
+     * @see #getTargetSet
+     * @stable ICU 2.2
+     */
+    public UnicodeSet getTargetSet() {
+        return new UnicodeSet();
+    }
+
+    /**
+     * Returns this transliterator's inverse.  See the class
+     * documentation for details.  This implementation simply inverts
+     * the two entities in the ID and attempts to retrieve the
+     * resulting transliterator.  That is, if <code>getID()</code>
+     * returns "A-B", then this method will return the result of
+     * <code>getInstance("B-A")</code>, or <code>null</code> if that
+     * call fails.
+     *
+     * <p>Subclasses with knowledge of their inverse may wish to
+     * override this method.
+     *
+     * @return a transliterator that is an inverse, not necessarily
+     * exact, of this transliterator, or <code>null</code> if no such
+     * transliterator is registered.
+     * @see #registerClass
+     * @stable ICU 2.0
+     */
+    public final Transliterator getInverse() {
+        return getInstance(ID, REVERSE);
+    }
+
+    /**
+     * Registers a subclass of <code>Transliterator</code> with the
+     * system.  This subclass must have a public constructor taking no
+     * arguments.  When that constructor is called, the resulting
+     * object must return the <code>ID</code> passed to this method if
+     * its <code>getID()</code> method is called.
+     *
+     * @param ID the result of <code>getID()</code> for this
+     * transliterator
+     * @param transClass a subclass of <code>Transliterator</code>
+     * @see #unregister
+     * @stable ICU 2.0
+     */
+    public static void registerClass(String ID, Class transClass, String displayName) {
+        registry.put(ID, transClass, true);
+        if (displayName != null) {
+            displayNameCache.put(new CaseInsensitiveString(ID), displayName);
+        }
+    }
+
+    /**
+     * Register a factory object with the given ID.  The factory
+     * method should return a new instance of the given transliterator.
+     * @param ID the ID of this transliterator
+     * @param factory the factory object
+     * @stable ICU 2.0
+     */
+    public static void registerFactory(String ID, Factory factory) {
+        registry.put(ID, factory, true);
+    }
+
+    /**
+     * Register a Transliterator object with the given ID.
+     * @param trans the Transliterator object
+     * @stable ICU 2.2
+     */
+    public static void registerInstance(Transliterator trans) {
+        registry.put(trans.getID(), trans, true);
+    }
+
+    /**
+     * Register a Transliterator object with the given ID.
+     * @param ID the ID of this transliterator
+     * @param trans the Transliterator object
+     * @internal
+     */
+    static void registerInstance(Transliterator trans, boolean visible) {
+        registry.put(trans.getID(), trans, visible);
+    }
+
+    /**
+     * Register an ID as an alias of another ID.  Instantiating
+     * alias ID produces the same result as instantiating the original ID.
+     * This is generally used to create short aliases of compound IDs.
+     * @param aliasID The new ID being registered.
+     * @param realID The existing ID that the new ID should be an alias of.
+     * @stable ICU 3.6
+     */
+    public static void registerAlias(String aliasID, String realID) {
+        registry.put(aliasID, realID, true);
+    }
+
+    /**
+     * Register two targets as being inverses of one another.  For
+     * example, calling registerSpecialInverse("NFC", "NFD", true) causes
+     * Transliterator to form the following inverse relationships:
+     *
+     * <pre>NFC => NFD
+     * Any-NFC => Any-NFD
+     * NFD => NFC
+     * Any-NFD => Any-NFC</pre>
+     *
+     * (Without the special inverse registration, the inverse of NFC
+     * would be NFC-Any.)  Note that NFD is shorthand for Any-NFD, but
+     * that the presence or absence of "Any-" is preserved.
+     *
+     * <p>The relationship is symmetrical; registering (a, b) is
+     * equivalent to registering (b, a).
+     *
+     * <p>The relevant IDs must still be registered separately as
+     * factories or classes.
+     *
+     * <p>Only the targets are specified.  Special inverses always
+     * have the form Any-Target1 <=> Any-Target2.  The target should
+     * have canonical casing (the casing desired to be produced when
+     * an inverse is formed) and should contain no whitespace or other
+     * extraneous characters.
+     *
+     * @param target the target against which to register the inverse
+     * @param inverseTarget the inverse of target, that is
+     * Any-target.getInverse() => Any-inverseTarget
+     * @param bidirectional if true, register the reverse relation
+     * as well, that is, Any-inverseTarget.getInverse() => Any-target
+     * @internal
+     */
+    static void registerSpecialInverse(String target,
+                                       String inverseTarget,
+                                       boolean bidirectional) {
+        TransliteratorIDParser.registerSpecialInverse(target, inverseTarget, bidirectional);
+    }
+
+    /**
+     * Unregisters a transliterator or class.  This may be either
+     * a system transliterator or a user transliterator or class.
+     *
+     * @param ID the ID of the transliterator or class
+     * @see #registerClass
+     * @stable ICU 2.0
+     */
+    public static void unregister(String ID) {
+        displayNameCache.remove(new CaseInsensitiveString(ID));
+        registry.remove(ID);
+    }
+
+    /**
+     * Returns an enumeration over the programmatic names of registered
+     * <code>Transliterator</code> objects.  This includes both system
+     * transliterators and user transliterators registered using
+     * <code>registerClass()</code>.  The enumerated names may be
+     * passed to <code>getInstance()</code>.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     * @see #getInstance
+     * @see #registerClass
+     * @stable ICU 2.0
+     */
+    public static final Enumeration getAvailableIDs() {
+        return registry.getAvailableIDs();
+    }
+
+    /**
+     * Returns an enumeration over the source names of registered
+     * transliterators.  Source names may be passed to
+     * getAvailableTargets() to obtain available targets for each
+     * source.
+     * @stable ICU 2.0
+     */
+    public static final Enumeration getAvailableSources() {
+        return registry.getAvailableSources();
+    }
+
+    /**
+     * Returns an enumeration over the target names of registered
+     * transliterators having a given source name.  Target names may
+     * be passed to getAvailableVariants() to obtain available
+     * variants for each source and target pair.
+     * @stable ICU 2.0
+     */
+    public static final Enumeration getAvailableTargets(String source) {
+        return registry.getAvailableTargets(source);
+    }
+
+    /**
+     * Returns an enumeration over the variant names of registered
+     * transliterators having a given source name and target name.
+     * @stable ICU 2.0
+     */
+    public static final Enumeration getAvailableVariants(String source,
+                                                         String target) {
+        return registry.getAvailableVariants(source, target);
+    }
+    private static final String INDEX = "index",
+                                RB_RULE_BASED_IDS ="RuleBasedTransliteratorIDs";
+    static {
+        registry = new TransliteratorRegistry();
+
+        // The display name cache starts out empty
+        displayNameCache = new Hashtable();
+        /* The following code parses the index table located in
+         * icu/data/translit/root.txt.  The index is an n x 4 table
+         * that follows this format:
+         *  <id>{
+         *      file{
+         *          resource{"<resource>"}
+         *          direction{"<direction>"}
+         *      }
+         *  }
+         *  <id>{
+         *      internal{
+         *          resource{"<resource>"}
+         *          direction{"<direction"}
+         *       }
+         *  }
+         *  <id>{
+         *      alias{"<getInstanceArg"}
+         *  }
+         * <id> is the ID of the system transliterator being defined.  These
+         * are public IDs enumerated by Transliterator.getAvailableIDs(),
+         * unless the second field is "internal".
+         * 
+         * <resource> is a ResourceReader resource name.  Currently these refer
+         * to file names under com/ibm/text/resources.  This string is passed
+         * directly to ResourceReader, together with <encoding>.
+         * 
+         * <direction> is either "FORWARD" or "REVERSE".
+         * 
+         * <getInstanceArg> is a string to be passed directly to
+         * Transliterator.getInstance().  The returned Transliterator object
+         * then has its ID changed to <id> and is returned.
+         *
+         * The extra blank field on "alias" lines is to make the array square.
+         */
+        UResourceBundle bundle, transIDs, colBund;
+        bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_TRANSLIT_BASE_NAME, INDEX);
+        transIDs = bundle.get(RB_RULE_BASED_IDS);
+
+        int row, maxRows;
+        maxRows = transIDs.getSize();
+        for (row = 0; row < maxRows; row++) {
+            colBund = transIDs.get(row);
+            String ID = colBund.getKey();
+            UResourceBundle res = colBund.get(0);
+            String type = res.getKey();
+            if (type.equals("file") || type.equals("internal")) {
+                // Rest of line is <resource>:<encoding>:<direction>
+                //                pos       colon      c2
+                String resString = res.getString("resource");
+                int dir;
+                String direction = res.getString("direction");
+                switch (direction.charAt(0)) {
+                case 'F':
+                    dir = FORWARD;
+                    break;
+                case 'R':
+                    dir = REVERSE;
+                    break;
+                default:
+                    throw new RuntimeException("Can't parse direction: " + direction);
+                }
+                registry.put(ID,
+                             resString, // resource
+                             "UTF-16", // encoding
+                             dir,
+                             !type.equals("internal"));
+            } else if (type.equals("alias")) {
+                //'alias'; row[2]=createInstance argument
+                String resString = res.getString();
+                registry.put(ID, resString, true);
+            } else {
+                // Unknown type
+                throw new RuntimeException("Unknow type: " + type);
+            }
+        }
+
+        registerSpecialInverse(NullTransliterator.SHORT_ID, NullTransliterator.SHORT_ID, false);
+
+        // Register non-rule-based transliterators
+        registerClass(NullTransliterator._ID,
+                      NullTransliterator.class, null);
+        RemoveTransliterator.register();
+        EscapeTransliterator.register();
+        UnescapeTransliterator.register();
+        LowercaseTransliterator.register();
+        UppercaseTransliterator.register();
+        TitlecaseTransliterator.register();
+        UnicodeNameTransliterator.register();
+        NameUnicodeTransliterator.register();
+        NormalizationTransliterator.register();
+        BreakTransliterator.register();
+        AnyTransliterator.register(); // do this last!
+    }
+
+    /**
+     * The factory interface for transliterators.  Transliterator
+     * subclasses can register factory objects for IDs using the
+     * registerFactory() method of Transliterator.  When invoked, the
+     * factory object will be passed the ID being instantiated.  This
+     * makes it possible to register one factory method to more than
+     * one ID, or for a factory method to parameterize its result
+     * based on the variant.
+     * @stable ICU 2.0
+     */
+    public static interface Factory {
+        /**
+         * Return a transliterator for the given ID.
+         * @stable ICU 2.0
+         */
+        Transliterator getInstance(String ID);
+    }
+    
+    /**
+     * Implements StringTransform via this method.
+     * @param source text to be transformed (eg lowercased)
+     * @return result
+     * @stable ICU 3.8
+     */
+    public String transform(String source) {
+        return transliterate(source);
+    }
+}
diff --git a/src/com/ibm/icu/text/TransliteratorIDParser.java b/src/com/ibm/icu/text/TransliteratorIDParser.java
new file mode 100644
index 0000000..8aabef2
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorIDParser.java
@@ -0,0 +1,773 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2007, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.impl.Utility;
+import java.text.ParsePosition;
+import java.util.Hashtable;
+import java.util.Vector;
+
+/**
+ * Parsing component for transliterator IDs.  This class contains only
+ * static members; it cannot be instantiated.  Methods in this class
+ * parse various ID formats, including the following:
+ *
+ * A basic ID, which contains source, target, and variant, but no
+ * filter and no explicit inverse.  Examples include
+ * "Latin-Greek/UNGEGN" and "Null".
+ *
+ * A single ID, which is a basic ID plus optional filter and optional
+ * explicit inverse.  Examples include "[a-zA-Z] Latin-Greek" and
+ * "Lower (Upper)".
+ *
+ * A compound ID, which is a sequence of one or more single IDs,
+ * separated by semicolons, with optional forward and reverse global
+ * filters.  The global filters are UnicodeSet patterns prepended or
+ * appended to the IDs, separated by semicolons.  An appended filter
+ * must be enclosed in parentheses and applies in the reverse
+ * direction.
+ *
+ * @author Alan Liu
+ */
+class TransliteratorIDParser {
+
+    private static final char ID_DELIM = ';';
+
+    private static final char TARGET_SEP = '-';
+
+    private static final char VARIANT_SEP = '/';
+
+    private static final char OPEN_REV = '(';
+
+    private static final char CLOSE_REV = ')';
+
+    private static final String ANY = "Any";
+
+    private static final int FORWARD = Transliterator.FORWARD;
+
+    private static final int REVERSE = Transliterator.REVERSE;
+
+    private static final Hashtable SPECIAL_INVERSES = new Hashtable();
+
+    /**
+     * A structure containing the parsed data of a filtered ID, that
+     * is, a basic ID optionally with a filter.
+     *
+     * 'source' and 'target' will always be non-null.  The 'variant'
+     * will be non-null only if a non-empty variant was parsed.
+     *
+     * 'sawSource' is true if there was an explicit source in the
+     * parsed id.  If there was no explicit source, then an implied
+     * source of ANY is returned and 'sawSource' is set to false.
+     * 
+     * 'filter' is the parsed filter pattern, or null if there was no
+     * filter.
+     */
+    private static class Specs {
+        public String source; // not null
+        public String target; // not null
+        public String variant; // may be null
+        public String filter; // may be null
+        public boolean sawSource;
+        Specs(String s, String t, String v, boolean sawS, String f) {
+            source = s;
+            target = t;
+            variant = v;
+            sawSource = sawS;
+            filter = f;
+        }
+    }
+
+    /**
+     * A structure containing the canonicalized data of a filtered ID,
+     * that is, a basic ID optionally with a filter.
+     *
+     * 'canonID' is always non-null.  It may be the empty string "".
+     * It is the id that should be assigned to the created
+     * transliterator.  It _cannot_ be instantiated directly.
+     *
+     * 'basicID' is always non-null and non-empty.  It is always of
+     * the form S-T or S-T/V.  It is designed to be fed to low-level
+     * instantiation code that only understands these two formats.
+     *
+     * 'filter' may be null, if there is none, or non-null and
+     * non-empty.
+     */
+    static class SingleID {
+        public String canonID;
+        public String basicID;
+        public String filter;
+        SingleID(String c, String b, String f) {
+            canonID = c;
+            basicID = b;
+            filter = f;
+        }
+        SingleID(String c, String b) {
+            this(c, b, null);
+        }
+        Transliterator getInstance() {
+            Transliterator t;
+            if (basicID == null || basicID.length() == 0) {
+                t = Transliterator.getBasicInstance("Any-Null", canonID);
+            } else {
+                t = Transliterator.getBasicInstance(basicID, canonID);
+            }
+            if (t != null) {
+                if (filter != null) {
+                    t.setFilter(new UnicodeSet(filter));
+                }
+            }
+            return t;
+        }
+    }
+
+    /**
+     * Parse a filter ID, that is, an ID of the general form
+     * "[f1] s1-t1/v1", with the filters optional, and the variants optional.
+     * @param id the id to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @return a SingleID object or null if the parse fails
+     */
+    public static SingleID parseFilterID(String id, int[] pos) {
+
+        int start = pos[0];
+        Specs specs = parseFilterID(id, pos, true);
+        if (specs == null) {
+            pos[0] = start;
+            return null;
+        }
+
+        // Assemble return results
+        SingleID single = specsToID(specs, FORWARD);
+        single.filter = specs.filter;
+        return single;
+    }
+
+    /**
+     * Parse a single ID, that is, an ID of the general form
+     * "[f1] s1-t1/v1 ([f2] s2-t3/v2)", with the parenthesized element
+     * optional, the filters optional, and the variants optional.
+     * @param id the id to be parsed
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @param dir the direction.  If the direction is REVERSE then the
+     * SingleID is constructed for the reverse direction.
+     * @return a SingleID object or null
+     */
+    public static SingleID parseSingleID(String id, int[] pos, int dir) {
+
+        int start = pos[0];
+
+        // The ID will be of the form A, A(), A(B), or (B), where
+        // A and B are filter IDs.
+        Specs specsA = null;
+        Specs specsB = null;
+        boolean sawParen = false;
+
+        // On the first pass, look for (B) or ().  If this fails, then
+        // on the second pass, look for A, A(B), or A().
+        for (int pass=1; pass<=2; ++pass) {
+            if (pass == 2) {
+                specsA = parseFilterID(id, pos, true);
+                if (specsA == null) {
+                    pos[0] = start;
+                    return null;
+                }
+            }
+            if (Utility.parseChar(id, pos, OPEN_REV)) {
+                sawParen = true;
+                if (!Utility.parseChar(id, pos, CLOSE_REV)) {
+                    specsB = parseFilterID(id, pos, true);
+                    // Must close with a ')'
+                    if (specsB == null || !Utility.parseChar(id, pos, CLOSE_REV)) {
+                        pos[0] = start;
+                        return null;
+                    }
+                }
+                break;
+            }
+        }
+
+        // Assemble return results
+        SingleID single;
+        if (sawParen) {
+            if (dir == FORWARD) {
+                single = specsToID(specsA, FORWARD);
+                single.canonID = single.canonID +
+                    OPEN_REV + specsToID(specsB, FORWARD).canonID + CLOSE_REV;
+                if (specsA != null) {
+                    single.filter = specsA.filter;
+                }
+            } else {
+                single = specsToID(specsB, FORWARD);
+                single.canonID = single.canonID +
+                    OPEN_REV + specsToID(specsA, FORWARD).canonID + CLOSE_REV;
+                if (specsB != null) {
+                    single.filter = specsB.filter;
+                }
+            }
+        } else {
+            // assert(specsA != null);
+            if (dir == FORWARD) {
+                single = specsToID(specsA, FORWARD);
+            } else {
+                single = specsToSpecialInverse(specsA);
+                if (single == null) {
+                    single = specsToID(specsA, REVERSE);
+                }
+            }
+            single.filter = specsA.filter;
+        }
+
+        return single;
+    }
+
+    /**
+     * Parse a global filter of the form "[f]" or "([f])", depending
+     * on 'withParens'.
+     * @param id the pattern the parse
+     * @param pos INPUT-OUTPUT parameter.  On input, the position of
+     * the first character to parse.  On output, the position after
+     * the last character parsed.
+     * @param dir the direction.
+     * @param withParens INPUT-OUTPUT parameter.  On entry, if
+     * withParens[0] is 0, then parens are disallowed.  If it is 1,
+     * then parens are requires.  If it is -1, then parens are
+     * optional, and the return result will be set to 0 or 1.
+     * @param canonID OUTPUT parameter.  The pattern for the filter
+     * added to the canonID, either at the end, if dir is FORWARD, or
+     * at the start, if dir is REVERSE.  The pattern will be enclosed
+     * in parentheses if appropriate, and will be suffixed with an
+     * ID_DELIM character.  May be null.
+     * @return a UnicodeSet object or null.  A non-null results
+     * indicates a successful parse, regardless of whether the filter
+     * applies to the given direction.  The caller should discard it
+     * if withParens != (dir == REVERSE).
+     */
+    public static UnicodeSet parseGlobalFilter(String id, int[] pos, int dir,
+                                               int[] withParens,
+                                               StringBuffer canonID) {
+        UnicodeSet filter = null;
+        int start = pos[0];
+
+        if (withParens[0] == -1) {
+            withParens[0] = Utility.parseChar(id, pos, OPEN_REV) ? 1 : 0;
+        } else if (withParens[0] == 1) {
+            if (!Utility.parseChar(id, pos, OPEN_REV)) {
+                pos[0] = start;
+                return null;
+            }
+        }
+        
+        Utility.skipWhitespace(id, pos);
+
+        if (UnicodeSet.resemblesPattern(id, pos[0])) {
+            ParsePosition ppos = new ParsePosition(pos[0]);
+            try {
+                filter = new UnicodeSet(id, ppos, null);
+            } catch (IllegalArgumentException e) {
+                pos[0] = start;
+                return null;
+            }
+
+            String pattern = id.substring(pos[0], ppos.getIndex());
+            pos[0] = ppos.getIndex();
+
+            if (withParens[0] == 1 && !Utility.parseChar(id, pos, CLOSE_REV)) {
+                pos[0] = start;
+                return null;
+            }
+
+            // In the forward direction, append the pattern to the
+            // canonID.  In the reverse, insert it at zero, and invert
+            // the presence of parens ("A" <-> "(A)").
+            if (canonID != null) {
+                if (dir == FORWARD) {
+                    if (withParens[0] == 1) {
+                        pattern = String.valueOf(OPEN_REV) + pattern + CLOSE_REV;
+                    }
+                    canonID.append(pattern + ID_DELIM);
+                } else {
+                    if (withParens[0] == 0) {
+                        pattern = String.valueOf(OPEN_REV) + pattern + CLOSE_REV;
+                    }
+                    canonID.insert(0, pattern + ID_DELIM);
+                }
+            }
+        }
+
+        return filter;
+    }
+
+    /**
+     * Parse a compound ID, consisting of an optional forward global
+     * filter, a separator, one or more single IDs delimited by
+     * separators, an an optional reverse global filter.  The
+     * separator is a semicolon.  The global filters are UnicodeSet
+     * patterns.  The reverse global filter must be enclosed in
+     * parentheses.
+     * @param id the pattern the parse
+     * @param dir the direction.
+     * @param canonID OUTPUT parameter that receives the canonical ID,
+     * consisting of canonical IDs for all elements, as returned by
+     * parseSingleID(), separated by semicolons.  Previous contents
+     * are discarded.
+     * @param list OUTPUT parameter that receives a list of SingleID
+     * objects representing the parsed IDs.  Previous contents are
+     * discarded.
+     * @param globalFilter OUTPUT parameter that receives a pointer to
+     * a newly created global filter for this ID in this direction, or
+     * null if there is none.
+     * @return true if the parse succeeds, that is, if the entire
+     * id is consumed without syntax error.
+     */
+    public static boolean parseCompoundID(String id, int dir,
+                                          StringBuffer canonID,
+                                          Vector list,
+                                          UnicodeSet[] globalFilter) {
+        int[] pos = new int[] { 0 };
+        int[] withParens = new int[1];
+        list.removeAllElements();
+        UnicodeSet filter;
+        globalFilter[0] = null;
+        canonID.setLength(0);
+
+        // Parse leading global filter, if any
+        withParens[0] = 0; // parens disallowed
+        filter = parseGlobalFilter(id, pos, dir, withParens, canonID);
+        if (filter != null) {
+            if (!Utility.parseChar(id, pos, ID_DELIM)) {
+                // Not a global filter; backup and resume
+                canonID.setLength(0);
+                pos[0] = 0;
+            }
+            if (dir == FORWARD) {
+                globalFilter[0] = filter;
+            }
+        }
+
+        boolean sawDelimiter = true;
+        for (;;) {
+            SingleID single = parseSingleID(id, pos, dir);
+            if (single == null) {
+                break;
+            }
+            if (dir == FORWARD) {
+                list.addElement(single);
+            } else {
+                list.insertElementAt(single, 0);
+            }
+            if (!Utility.parseChar(id, pos, ID_DELIM)) {
+                sawDelimiter = false;
+                break;
+            }
+        }
+
+        if (list.size() == 0) {
+            return false;
+        }
+
+        // Construct canonical ID
+        for (int i=0; i<list.size(); ++i) {
+            SingleID single = (SingleID) list.elementAt(i);
+            canonID.append(single.canonID);
+            if (i != (list.size()-1)) {
+                canonID.append(ID_DELIM);
+            }
+        }
+
+        // Parse trailing global filter, if any, and only if we saw
+        // a trailing delimiter after the IDs.
+        if (sawDelimiter) {
+            withParens[0] = 1; // parens required
+            filter = parseGlobalFilter(id, pos, dir, withParens, canonID);
+            if (filter != null) {
+                // Don't require trailing ';', but parse it if present
+                Utility.parseChar(id, pos, ID_DELIM);
+                
+                if (dir == REVERSE) {
+                    globalFilter[0] = filter;
+                }
+            }
+        }
+
+        // Trailing unparsed text is a syntax error
+        Utility.skipWhitespace(id, pos[0]);
+        if (pos[0] != id.length()) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Convert the elements of the 'list' vector, which are SingleID
+     * objects, into actual Transliterator objects.  In the course of
+     * this, some (or all) entries may be removed.  If all entries
+     * are removed, the Null transliterator will be added.
+     *
+     * Delete entries with empty basicIDs; these are generated by
+     * elements like "(A)" in the forward direction, or "A()" in
+     * the reverse.  THIS MAY RESULT IN AN EMPTY VECTOR.  Convert
+     * SingleID entries to actual transliterators.
+     *
+     * @param list vector of SingleID objects.  On exit, vector
+     * of one or more Transliterators.
+     */
+    public static void instantiateList(Vector list) {
+        Transliterator t;
+        for (int i=0; i<=list.size(); ) { // [sic]: i<=list.size()
+            // We run the loop too long by one, so we can
+            // do an insert after the last element
+            if (i==list.size()) {
+                break;
+            }
+            
+            SingleID single = (SingleID) list.elementAt(i);
+            if (single.basicID.length() == 0) {
+                list.removeElementAt(i);
+            } else {
+                t = single.getInstance();
+                if (t == null) {
+                    t = single.getInstance();
+                    throw new IllegalArgumentException("Illegal ID " + single.canonID);
+                }
+                list.setElementAt(t, i);
+                ++i;
+            }
+        }
+        
+        // An empty list is equivalent to a Null transliterator.
+        if (list.size() == 0) {
+            t = Transliterator.getBasicInstance("Any-Null", null);
+            if (t == null) {
+                // Should never happen
+                throw new IllegalArgumentException("Internal error; cannot instantiate Any-Null");
+            }
+            list.addElement(t);
+        }
+    }
+
+    /**
+     * Parse an ID into pieces.  Take IDs of the form T, T/V, S-T,
+     * S-T/V, or S/V-T.  If the source is missing, return a source of
+     * ANY.
+     * @param id the id string, in any of several forms
+     * @return an array of 4 strings: source, target, variant, and
+     * isSourcePresent.  If the source is not present, ANY will be
+     * given as the source, and isSourcePresent will be null.  Otherwise
+     * isSourcePresent will be non-null.  The target may be empty if the
+     * id is not well-formed.  The variant may be empty.
+     */
+    public static String[] IDtoSTV(String id) {
+        String source = ANY;
+        String target = null;
+        String variant = "";
+        
+        int sep = id.indexOf(TARGET_SEP);
+        int var = id.indexOf(VARIANT_SEP);
+        if (var < 0) {
+            var = id.length();
+        }
+        boolean isSourcePresent = false;
+        
+        if (sep < 0) {
+            // Form: T/V or T (or /V)
+            target = id.substring(0, var);
+            variant = id.substring(var);
+        } else if (sep < var) {
+            // Form: S-T/V or S-T (or -T/V or -T)
+            if (sep > 0) {
+                source = id.substring(0, sep);
+              isSourcePresent = true;
+            }
+            target = id.substring(++sep, var);
+            variant = id.substring(var);
+        } else {
+            // Form: (S/V-T or /V-T)
+            if (var > 0) {
+                source = id.substring(0, var);
+                isSourcePresent = true;
+            }
+            variant = id.substring(var, sep++);
+            target = id.substring(sep);
+        }
+
+        if (variant.length() > 0) {
+            variant = variant.substring(1);
+        }
+        
+        return new String[] { source, target, variant,
+                              isSourcePresent ? "" : null };
+    }
+
+    /**
+     * Given source, target, and variant strings, concatenate them into a
+     * full ID.  If the source is empty, then "Any" will be used for the
+     * source, so the ID will always be of the form s-t/v or s-t.
+     */
+    public static String STVtoID(String source,
+                                 String target,
+                                 String variant) {
+        StringBuffer id = new StringBuffer(source);
+        if (id.length() == 0) {
+            id.append(ANY);
+        }
+        id.append(TARGET_SEP).append(target);
+        if (variant != null && variant.length() != 0) {
+            id.append(VARIANT_SEP).append(variant);
+        }
+        return id.toString();
+    }
+
+    /**
+     * Register two targets as being inverses of one another.  For
+     * example, calling registerSpecialInverse("NFC", "NFD", true) causes
+     * Transliterator to form the following inverse relationships:
+     *
+     * <pre>NFC => NFD
+     * Any-NFC => Any-NFD
+     * NFD => NFC
+     * Any-NFD => Any-NFC</pre>
+     *
+     * (Without the special inverse registration, the inverse of NFC
+     * would be NFC-Any.)  Note that NFD is shorthand for Any-NFD, but
+     * that the presence or absence of "Any-" is preserved.
+     *
+     * <p>The relationship is symmetrical; registering (a, b) is
+     * equivalent to registering (b, a).
+     *
+     * <p>The relevant IDs must still be registered separately as
+     * factories or classes.
+     *
+     * <p>Only the targets are specified.  Special inverses always
+     * have the form Any-Target1 <=> Any-Target2.  The target should
+     * have canonical casing (the casing desired to be produced when
+     * an inverse is formed) and should contain no whitespace or other
+     * extraneous characters.
+     *
+     * @param target the target against which to register the inverse
+     * @param inverseTarget the inverse of target, that is
+     * Any-target.getInverse() => Any-inverseTarget
+     * @param bidirectional if true, register the reverse relation
+     * as well, that is, Any-inverseTarget.getInverse() => Any-target
+     */
+    public static void registerSpecialInverse(String target,
+                                              String inverseTarget,
+                                              boolean bidirectional) {
+        SPECIAL_INVERSES.put(new CaseInsensitiveString(target), inverseTarget);
+        if (bidirectional && !target.equalsIgnoreCase(inverseTarget)) {
+            SPECIAL_INVERSES.put(new CaseInsensitiveString(inverseTarget), target);
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Private implementation
+    //----------------------------------------------------------------
+
+    /**
+     * Parse an ID into component pieces.  Take IDs of the form T,
+     * T/V, S-T, S-T/V, or S/V-T.  If the source is missing, return a
+     * source of ANY.
+     * @param id the id string, in any of several forms
+     * @param pos INPUT-OUTPUT parameter.  On input, pos[0] is the
+     * offset of the first character to parse in id.  On output,
+     * pos[0] is the offset after the last parsed character.  If the
+     * parse failed, pos[0] will be unchanged.
+     * @param allowFilter if true, a UnicodeSet pattern is allowed
+     * at any location between specs or delimiters, and is returned
+     * as the fifth string in the array.
+     * @return a Specs object, or null if the parse failed.  If
+     * neither source nor target was seen in the parsed id, then the
+     * parse fails.  If allowFilter is true, then the parsed filter
+     * pattern is returned in the Specs object, otherwise the returned
+     * filter reference is null.  If the parse fails for any reason
+     * null is returned.
+     */
+    private static Specs parseFilterID(String id, int[] pos,
+                                       boolean allowFilter) {
+        String first = null;
+        String source = null;
+        String target = null;
+        String variant = null;
+        String filter = null;
+        char delimiter = 0;
+        int specCount = 0;
+        int start = pos[0];
+
+        // This loop parses one of the following things with each
+        // pass: a filter, a delimiter character (either '-' or '/'),
+        // or a spec (source, target, or variant).
+        for (;;) {
+            Utility.skipWhitespace(id, pos);
+            if (pos[0] == id.length()) {
+                break;
+            }
+
+            // Parse filters
+            if (allowFilter && filter == null &&
+                UnicodeSet.resemblesPattern(id, pos[0])) {
+
+                ParsePosition ppos = new ParsePosition(pos[0]);
+                // Parse the set to get the position.
+                new UnicodeSet(id, ppos, null);
+                filter = id.substring(pos[0], ppos.getIndex());
+                pos[0] = ppos.getIndex();
+                continue;
+            }
+
+            if (delimiter == 0) {
+                char c = id.charAt(pos[0]);
+                if ((c == TARGET_SEP && target == null) ||
+                    (c == VARIANT_SEP && variant == null)) {
+                    delimiter = c;
+                    ++pos[0];
+                    continue;
+                }
+            }
+
+            // We are about to try to parse a spec with no delimiter
+            // when we can no longer do so (we can only do so at the
+            // start); break.
+            if (delimiter == 0 && specCount > 0) {
+                break;
+            }
+
+            String spec = Utility.parseUnicodeIdentifier(id, pos);
+            if (spec == null) {
+                // Note that if there was a trailing delimiter, we
+                // consume it.  So Foo-, Foo/, Foo-Bar/, and Foo/Bar-
+                // are legal.
+                break;
+            }
+
+            switch (delimiter) {
+            case 0:
+                first = spec;
+                break;
+            case TARGET_SEP:
+                target = spec;
+                break;
+            case VARIANT_SEP:
+                variant = spec;
+                break;
+            }
+            ++specCount;
+            delimiter = 0;
+        }
+
+        // A spec with no prior character is either source or target,
+        // depending on whether an explicit "-target" was seen.
+        if (first != null) {
+            if (target == null) {
+                target = first;
+            } else {
+                source = first;
+            }
+        }
+
+        // Must have either source or target
+        if (source == null && target == null) {
+            pos[0] = start;
+            return null;
+        }
+
+        // Empty source or target defaults to ANY
+        boolean sawSource = true;
+        if (source == null) {
+            source = ANY;
+            sawSource = false;
+        }
+        if (target == null) {
+            target = ANY;
+        }
+
+        return new Specs(source, target, variant, sawSource, filter);
+    }
+
+    /**
+     * Givens a Spec object, convert it to a SingleID object.  The
+     * Spec object is a more unprocessed parse result.  The SingleID
+     * object contains information about canonical and basic IDs.
+     * @return a SingleID; never returns null.  Returned object always
+     * has 'filter' field of null.
+     */
+    private static SingleID specsToID(Specs specs, int dir) {
+        String canonID = "";
+        String basicID = "";
+        String basicPrefix = "";
+        if (specs != null) {
+            StringBuffer buf = new StringBuffer();
+            if (dir == FORWARD) {
+                if (specs.sawSource) {
+                    buf.append(specs.source).append(TARGET_SEP);
+                } else {
+                    basicPrefix = specs.source + TARGET_SEP;
+                }
+                buf.append(specs.target);
+            } else {
+                buf.append(specs.target).append(TARGET_SEP).append(specs.source);
+            }
+            if (specs.variant != null) {
+                buf.append(VARIANT_SEP).append(specs.variant);
+            }
+            basicID = basicPrefix + buf.toString();
+            if (specs.filter != null) {
+                buf.insert(0, specs.filter);
+            }
+            canonID = buf.toString();
+        }
+        return new SingleID(canonID, basicID);
+    }
+
+    /**
+     * Given a Specs object, return a SingleID representing the
+     * special inverse of that ID.  If there is no special inverse
+     * then return null.
+     * @return a SingleID or null.  Returned object always has
+     * 'filter' field of null.
+     */
+    private static SingleID specsToSpecialInverse(Specs specs) {
+        if (!specs.source.equalsIgnoreCase(ANY)) {
+            return null;
+        }
+        String inverseTarget = (String) SPECIAL_INVERSES.get(
+            new CaseInsensitiveString(specs.target));
+        if (inverseTarget != null) {
+            // If the original ID contained "Any-" then make the
+            // special inverse "Any-Foo"; otherwise make it "Foo".
+            // So "Any-NFC" => "Any-NFD" but "NFC" => "NFD".
+            StringBuffer buf = new StringBuffer();
+            if (specs.filter != null) {
+                buf.append(specs.filter);
+            }
+            if (specs.sawSource) {
+                buf.append(ANY).append(TARGET_SEP);
+            }
+            buf.append(inverseTarget);
+
+            String basicID = ANY + TARGET_SEP + inverseTarget;
+
+            if (specs.variant != null) {
+                buf.append(VARIANT_SEP).append(specs.variant);
+                basicID = basicID + VARIANT_SEP + specs.variant;
+            }
+            return new SingleID(buf.toString(), basicID);
+        }
+        return null;
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/TransliteratorParser.java b/src/com/ibm/icu/text/TransliteratorParser.java
new file mode 100644
index 0000000..6bce271
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorParser.java
@@ -0,0 +1,1541 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Utility;
+import java.util.Vector;
+import java.util.Hashtable;
+import java.text.ParsePosition;
+import com.ibm.icu.lang.*;
+import com.ibm.icu.impl.UCharacterProperty;
+
+class TransliteratorParser {
+
+    //----------------------------------------------------------------------
+    // Data members
+    //----------------------------------------------------------------------
+
+    /**
+     * PUBLIC data member.
+     * A Vector of RuleBasedTransliterator.Data objects, one for each discrete group
+     * of rules in the rule set
+     */
+    public Vector dataVector;
+
+    /**
+     * PUBLIC data member.
+     * A Vector of Strings containing all of the ID blocks in the rule set
+     */
+    public Vector idBlockVector;
+
+    /**
+     * The current data object for which we are parsing rules
+     */
+    private RuleBasedTransliterator.Data curData;
+
+    /**
+     * PUBLIC data member containing the parsed compound filter, if any.
+     */
+    public UnicodeSet compoundFilter;
+
+
+    private int direction;
+
+    /**
+     * Temporary symbol table used during parsing.
+     */
+    private ParseData parseData;
+
+    /**
+     * Temporary vector of set variables.  When parsing is complete, this
+     * is copied into the array data.variables.  As with data.variables,
+     * element 0 corresponds to character data.variablesBase.
+     */
+    private Vector variablesVector;
+
+    /**
+     * Temporary table of variable names.  When parsing is complete, this is
+     * copied into data.variableNames.
+     */
+    private Hashtable variableNames;
+
+    /**
+     * String of standins for segments.  Used during the parsing of a single
+     * rule.  segmentStandins.charAt(0) is the standin for "$1" and corresponds
+     * to StringMatcher object segmentObjects.elementAt(0), etc.
+     */
+    private StringBuffer segmentStandins;
+
+    /**
+     * Vector of StringMatcher objects for segments.  Used during the
+     * parsing of a single rule.  
+     * segmentStandins.charAt(0) is the standin for "$1" and corresponds
+     * to StringMatcher object segmentObjects.elementAt(0), etc.
+     */
+    private Vector segmentObjects;
+
+    /**
+     * The next available stand-in for variables.  This starts at some point in
+     * the private use area (discovered dynamically) and increments up toward
+     * <code>variableLimit</code>.  At any point during parsing, available
+     * variables are <code>variableNext..variableLimit-1</code>.
+     */
+    private char variableNext;
+
+    /**
+     * The last available stand-in for variables.  This is discovered
+     * dynamically.  At any point during parsing, available variables are
+     * <code>variableNext..variableLimit-1</code>.  During variable definition
+     * we use the special value variableLimit-1 as a placeholder.
+     */
+    private char variableLimit;
+
+    /**
+     * When we encounter an undefined variable, we do not immediately signal
+     * an error, in case we are defining this variable, e.g., "$a = [a-z];".
+     * Instead, we save the name of the undefined variable, and substitute
+     * in the placeholder char variableLimit - 1, and decrement
+     * variableLimit.
+     */
+    private String undefinedVariableName;
+
+    /**
+     * The stand-in character for the 'dot' set, represented by '.' in
+     * patterns.  This is allocated the first time it is needed, and
+     * reused thereafter.
+     */
+    private int dotStandIn = -1;
+
+    //----------------------------------------------------------------------
+    // Constants
+    //----------------------------------------------------------------------
+
+    // Indicator for ID blocks
+    private static final String ID_TOKEN = "::";
+    private static final int ID_TOKEN_LEN = 2;
+
+/*
+(reserved for future expansion)
+    // markers for beginning and end of rule groups
+    private static final String BEGIN_TOKEN = "BEGIN";
+    private static final String END_TOKEN = "END";
+*/
+
+    // Operators
+    private static final char VARIABLE_DEF_OP   = '=';
+    private static final char FORWARD_RULE_OP   = '>';
+    private static final char REVERSE_RULE_OP   = '<';
+    private static final char FWDREV_RULE_OP    = '~'; // internal rep of <> op
+
+    private static final String OPERATORS = "=><\u2190\u2192\u2194";
+    private static final String HALF_ENDERS = "=><\u2190\u2192\u2194;";
+
+    // Other special characters
+    private static final char QUOTE               = '\'';
+    private static final char ESCAPE              = '\\';
+    private static final char END_OF_RULE         = ';';
+    private static final char RULE_COMMENT_CHAR   = '#';
+
+    private static final char CONTEXT_ANTE        = '{'; // ante{key
+    private static final char CONTEXT_POST        = '}'; // key}post
+    private static final char CURSOR_POS          = '|';
+    private static final char CURSOR_OFFSET       = '@';
+    private static final char ANCHOR_START        = '^';
+
+    private static final char KLEENE_STAR         = '*';
+    private static final char ONE_OR_MORE         = '+';
+    private static final char ZERO_OR_ONE         = '?';
+
+    private static final char DOT                 = '.';
+    private static final String DOT_SET           = "[^[:Zp:][:Zl:]\\r\\n$]";
+
+    // By definition, the ANCHOR_END special character is a
+    // trailing SymbolTable.SYMBOL_REF character.
+    // private static final char ANCHOR_END       = '$';
+
+    // Segments of the input string are delimited by "(" and ")".  In the
+    // output string these segments are referenced as "$1", "$2", etc.
+    private static final char SEGMENT_OPEN        = '(';
+    private static final char SEGMENT_CLOSE       = ')';
+
+    // A function is denoted &Source-Target/Variant(text)
+    private static final char FUNCTION            = '&';
+
+    // Aliases for some of the syntax characters. These are provided so
+    // transliteration rules can be expressed in XML without clashing with
+    // XML syntax characters '<', '>', and '&'.
+    private static final char ALT_REVERSE_RULE_OP = '\u2190'; // Left Arrow
+    private static final char ALT_FORWARD_RULE_OP = '\u2192'; // Right Arrow
+    private static final char ALT_FWDREV_RULE_OP  = '\u2194'; // Left Right Arrow
+    private static final char ALT_FUNCTION        = '\u2206'; // Increment (~Greek Capital Delta)
+    
+    // Special characters disallowed at the top level
+    private static UnicodeSet ILLEGAL_TOP = new UnicodeSet("[\\)]");
+
+    // Special characters disallowed within a segment
+    private static UnicodeSet ILLEGAL_SEG = new UnicodeSet("[\\{\\}\\|\\@]");
+
+    // Special characters disallowed within a function argument
+    private static UnicodeSet ILLEGAL_FUNC = new UnicodeSet("[\\^\\(\\.\\*\\+\\?\\{\\}\\|\\@]");
+
+    //----------------------------------------------------------------------
+    // class ParseData
+    //----------------------------------------------------------------------
+
+    /**
+     * This class implements the SymbolTable interface.  It is used
+     * during parsing to give UnicodeSet access to variables that
+     * have been defined so far.  Note that it uses variablesVector,
+     * _not_ data.variables.
+     */
+    private class ParseData implements SymbolTable {
+
+        /**
+         * Implement SymbolTable API.
+         */
+        public char[] lookup(String name) {
+            return (char[]) variableNames.get(name);
+        }
+
+        /**
+         * Implement SymbolTable API.
+         */
+        public UnicodeMatcher lookupMatcher(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - curData.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return (UnicodeMatcher) variablesVector.elementAt(i);
+            }
+            return null;
+        }
+
+        /**
+         * Implement SymbolTable API.  Parse out a symbol reference
+         * name.
+         */
+        public String parseReference(String text, ParsePosition pos, int limit) {
+            int start = pos.getIndex();
+            int i = start;
+            while (i < limit) {
+                char c = text.charAt(i);
+                if ((i==start && !UCharacter.isUnicodeIdentifierStart(c)) ||
+                    !UCharacter.isUnicodeIdentifierPart(c)) {
+                    break;
+                }
+                ++i;
+            }
+            if (i == start) { // No valid name chars
+                return null;
+            }
+            pos.setIndex(i);
+            return text.substring(start, i);
+        }
+
+        /**
+         * Return true if the given character is a matcher standin or a plain
+         * character (non standin).
+         */
+        public boolean isMatcher(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - curData.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return variablesVector.elementAt(i) instanceof UnicodeMatcher;
+            }
+            return true;
+        }
+
+        /**
+         * Return true if the given character is a replacer standin or a plain
+         * character (non standin).
+         */
+        public boolean isReplacer(int ch) {
+            // Note that we cannot use data.lookup() because the
+            // set array has not been constructed yet.
+            int i = ch - curData.variablesBase;
+            if (i >= 0 && i < variablesVector.size()) {
+                return variablesVector.elementAt(i) instanceof UnicodeReplacer;
+            }
+            return true;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // classes RuleBody, RuleArray, and RuleReader
+    //----------------------------------------------------------------------
+
+    /**
+     * A private abstract class representing the interface to rule
+     * source code that is broken up into lines.  Handles the
+     * folding of lines terminated by a backslash.  This folding
+     * is limited; it does not account for comments, quotes, or
+     * escapes, so its use to be limited.
+     */
+    private static abstract class RuleBody {
+
+        /**
+         * Retrieve the next line of the source, or return null if
+         * none.  Folds lines terminated by a backslash into the
+         * next line, without regard for comments, quotes, or
+         * escapes.
+         */
+        String nextLine() {
+            String s = handleNextLine();
+            if (s != null &&
+                s.length() > 0 &&
+                s.charAt(s.length() - 1) == '\\') {
+
+                StringBuffer b = new StringBuffer(s);
+                do {
+                    b.deleteCharAt(b.length()-1);
+                    s = handleNextLine();
+                    if (s == null) {
+                        break;
+                    }
+                    b.append(s);
+                } while (s.length() > 0 &&
+                         s.charAt(s.length() - 1) == '\\');
+
+                s = b.toString();
+            }
+            return s;
+        }
+
+        /**
+         * Reset to the first line of the source.
+         */
+        abstract void reset();
+
+        /**
+         * Subclass method to return the next line of the source.
+         */
+        abstract String handleNextLine();
+    }
+
+    /**
+     * RuleBody subclass for a String[] array.
+     */
+    private static class RuleArray extends RuleBody {
+        String[] array;
+        int i;
+        public RuleArray(String[] array) { this.array = array; i = 0; }
+        public String handleNextLine() {
+            return (i < array.length) ? array[i++] : null;
+        }
+        public void reset() {
+            i = 0;
+        }
+    }
+
+    /*
+     * RuleBody subclass for a ResourceReader.
+     */
+/*    private static class RuleReader extends RuleBody {
+        ResourceReader reader;
+        public RuleReader(ResourceReader reader) { this.reader = reader; }
+        public String handleNextLine() {
+            try {
+                return reader.readLine();
+            } catch (java.io.IOException e) {}
+            return null;
+        }
+        public void reset() {
+            reader.reset();
+        }
+    }*/
+
+    //----------------------------------------------------------------------
+    // class RuleHalf
+    //----------------------------------------------------------------------
+
+    /**
+     * A class representing one side of a rule.  This class knows how to
+     * parse half of a rule.  It is tightly coupled to the method
+     * TransliteratorParser.parseRule().
+     */
+    private static class RuleHalf {
+
+        public String text;
+
+        public int cursor = -1; // position of cursor in text
+        public int ante = -1;   // position of ante context marker '{' in text
+        public int post = -1;   // position of post context marker '}' in text
+
+        // Record the offset to the cursor either to the left or to the
+        // right of the key.  This is indicated by characters on the output
+        // side that allow the cursor to be positioned arbitrarily within
+        // the matching text.  For example, abc{def} > | @@@ xyz; changes
+        // def to xyz and moves the cursor to before abc.  Offset characters
+        // must be at the start or end, and they cannot move the cursor past
+        // the ante- or postcontext text.  Placeholders are only valid in
+        // output text.  The length of the ante and post context is
+        // determined at runtime, because of supplementals and quantifiers.
+        public int cursorOffset = 0; // only nonzero on output side
+
+        // Position of first CURSOR_OFFSET on _right_.  This will be -1
+        // for |@, -2 for |@@, etc., and 1 for @|, 2 for @@|, etc.
+        private int cursorOffsetPos = 0;
+
+        public boolean anchorStart = false;
+        public boolean anchorEnd   = false;
+
+        /**
+         * The segment number from 1..n of the next '(' we see
+         * during parsing; 1-based.
+         */
+        private int nextSegmentNumber = 1;
+
+        /**
+         * Parse one side of a rule, stopping at either the limit,
+         * the END_OF_RULE character, or an operator.
+         * @return the index after the terminating character, or
+         * if limit was reached, limit
+         */
+        public int parse(String rule, int pos, int limit,
+                         TransliteratorParser parser) {
+            int start = pos;
+            StringBuffer buf = new StringBuffer();
+            pos = parseSection(rule, pos, limit, parser, buf, ILLEGAL_TOP, false);
+            text = buf.toString();
+
+            if (cursorOffset > 0 && cursor != cursorOffsetPos) {
+                syntaxError("Misplaced " + CURSOR_POS, rule, start);
+            }
+
+            return pos;
+        }
+
+        /**
+         * Parse a section of one side of a rule, stopping at either
+         * the limit, the END_OF_RULE character, an operator, or a
+         * segment close character.  This method parses both a
+         * top-level rule half and a segment within such a rule half.
+         * It calls itself recursively to parse segments and nested
+         * segments.
+         * @param buf buffer into which to accumulate the rule pattern
+         * characters, either literal characters from the rule or
+         * standins for UnicodeMatcher objects including segments.
+         * @param illegal the set of special characters that is illegal during
+         * this parse.
+         * @param isSegment if true, then we've already seen a '(' and
+         * pos on entry points right after it.  Accumulate everything
+         * up to the closing ')', put it in a segment matcher object,
+         * generate a standin for it, and add the standin to buf.  As
+         * a side effect, update the segments vector with a reference
+         * to the segment matcher.  This works recursively for nested
+         * segments.  If isSegment is false, just accumulate
+         * characters into buf.
+         * @return the index after the terminating character, or
+         * if limit was reached, limit
+         */
+        private int parseSection(String rule, int pos, int limit,
+                                 TransliteratorParser parser,
+                                 StringBuffer buf,
+                                 UnicodeSet illegal,
+                                 boolean isSegment) {
+            int start = pos;
+            ParsePosition pp = null;
+            int quoteStart = -1; // Most recent 'single quoted string'
+            int quoteLimit = -1;
+            int varStart = -1; // Most recent $variableReference
+            int varLimit = -1;
+            int[] iref = new int[1];
+            int bufStart = buf.length();
+
+        main:
+            while (pos < limit) {
+                // Since all syntax characters are in the BMP, fetching
+                // 16-bit code units suffices here.
+                char c = rule.charAt(pos++);
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    continue;
+                }
+                // HALF_ENDERS is all chars that end a rule half: "<>=;"
+                if (HALF_ENDERS.indexOf(c) >= 0) {
+                    if (isSegment) {
+                        syntaxError("Unclosed segment", rule, start);
+                    }
+                    break main;
+                }
+                if (anchorEnd) {
+                    // Text after a presumed end anchor is a syntax err
+                    syntaxError("Malformed variable reference", rule, start);
+                }
+                if (UnicodeSet.resemblesPattern(rule, pos-1)) {
+                    if (pp == null) {
+                        pp = new ParsePosition(0);
+                    }
+                    pp.setIndex(pos-1); // Backup to opening '['
+                    buf.append(parser.parseSet(rule, pp));
+                    pos = pp.getIndex();                    
+                    continue;
+                }
+                // Handle escapes
+                if (c == ESCAPE) {
+                    if (pos == limit) {
+                        syntaxError("Trailing backslash", rule, start);
+                    }
+                    iref[0] = pos;
+                    int escaped = Utility.unescapeAt(rule, iref);
+                    pos = iref[0];
+                    if (escaped == -1) {
+                        syntaxError("Malformed escape", rule, start);
+                    }
+                    parser.checkVariableRange(escaped, rule, start);
+                    UTF16.append(buf, escaped);
+                    continue;
+                }
+                // Handle quoted matter
+                if (c == QUOTE) {
+                    int iq = rule.indexOf(QUOTE, pos);
+                    if (iq == pos) {
+                        buf.append(c); // Parse [''] outside quotes as [']
+                        ++pos;
+                    } else {
+                        /* This loop picks up a run of quoted text of the
+                         * form 'aaaa' each time through.  If this run
+                         * hasn't really ended ('aaaa''bbbb') then it keeps
+                         * looping, each time adding on a new run.  When it
+                         * reaches the final quote it breaks.
+                         */
+                        quoteStart = buf.length();
+                        for (;;) {
+                            if (iq < 0) {
+                                syntaxError("Unterminated quote", rule, start);
+                            }
+                            buf.append(rule.substring(pos, iq));
+                            pos = iq+1;
+                            if (pos < limit && rule.charAt(pos) == QUOTE) {
+                            // Parse [''] inside quotes as [']
+                                iq = rule.indexOf(QUOTE, pos+1);
+                            // Continue looping
+                            } else {
+                                break;
+                            }
+                        }
+                        quoteLimit = buf.length();
+                        
+                        for (iq=quoteStart; iq<quoteLimit; ++iq) {
+                            parser.checkVariableRange(buf.charAt(iq), rule, start);
+                        }
+                    }
+                    continue;
+                }
+
+                parser.checkVariableRange(c, rule, start);
+
+                if (illegal.contains(c)) {
+                    syntaxError("Illegal character '" + c + '\'', rule, start);
+                }
+
+                switch (c) {
+                    
+                //------------------------------------------------------
+                // Elements allowed within and out of segments
+                //------------------------------------------------------
+                case ANCHOR_START:
+                    if (buf.length() == 0 && !anchorStart) {
+                        anchorStart = true;
+                    } else {
+                        syntaxError("Misplaced anchor start",
+                                    rule, start);
+                    }
+                    break;
+                case SEGMENT_OPEN:
+                    {
+                        // bufSegStart is the offset in buf to the first
+                        // character of the segment we are parsing.
+                        int bufSegStart = buf.length();
+
+                        // Record segment number now, since nextSegmentNumber
+                        // will be incremented during the call to parseSection
+                        // if there are nested segments.
+                        int segmentNumber = nextSegmentNumber++; // 1-based
+
+                        // Parse the segment
+                        pos = parseSection(rule, pos, limit, parser, buf, ILLEGAL_SEG, true);
+
+                        // After parsing a segment, the relevant characters are
+                        // in buf, starting at offset bufSegStart.  Extract them
+                        // into a string matcher, and replace them with a
+                        // standin for that matcher.
+                        StringMatcher m =
+                            new StringMatcher(buf.substring(bufSegStart),
+                                              segmentNumber, parser.curData);
+
+                        // Record and associate object and segment number
+                        parser.setSegmentObject(segmentNumber, m);
+                        buf.setLength(bufSegStart);
+                        buf.append(parser.getSegmentStandin(segmentNumber));
+                    }
+                    break;
+                case FUNCTION:
+                case ALT_FUNCTION:
+                    {
+                        iref[0] = pos;
+                        TransliteratorIDParser.SingleID single = TransliteratorIDParser.parseFilterID(rule, iref);
+                        // The next character MUST be a segment open
+                        if (single == null ||
+                            !Utility.parseChar(rule, iref, SEGMENT_OPEN)) {
+                            syntaxError("Invalid function", rule, start);
+                        }
+
+                        Transliterator t = single.getInstance();
+                        if (t == null) {
+                            syntaxError("Invalid function ID", rule, start);
+                        }
+
+                        // bufSegStart is the offset in buf to the first
+                        // character of the segment we are parsing.
+                        int bufSegStart = buf.length();
+
+                        // Parse the segment
+                        pos = parseSection(rule, iref[0], limit, parser, buf, ILLEGAL_FUNC, true);
+
+                        // After parsing a segment, the relevant characters are
+                        // in buf, starting at offset bufSegStart.
+                        FunctionReplacer r =
+                            new FunctionReplacer(t,
+                                new StringReplacer(buf.substring(bufSegStart), parser.curData));
+
+                        // Replace the buffer contents with a stand-in
+                        buf.setLength(bufSegStart);
+                        buf.append(parser.generateStandInFor(r));
+                    }
+                    break;
+                case SymbolTable.SYMBOL_REF:
+                    // Handle variable references and segment references "$1" .. "$9"
+                    {
+                        // A variable reference must be followed immediately
+                        // by a Unicode identifier start and zero or more
+                        // Unicode identifier part characters, or by a digit
+                        // 1..9 if it is a segment reference.
+                        if (pos == limit) {
+                            // A variable ref character at the end acts as
+                            // an anchor to the context limit, as in perl.
+                            anchorEnd = true;
+                            break;
+                        }
+                        // Parse "$1" "$2" .. "$9" .. (no upper limit)
+                        c = rule.charAt(pos);
+                        int r = UCharacter.digit(c, 10);
+                        if (r >= 1 && r <= 9) {
+                            iref[0] = pos;
+                            r = Utility.parseNumber(rule, iref, 10);
+                            if (r < 0) {
+                                syntaxError("Undefined segment reference",
+                                            rule, start);
+                            }
+                            pos = iref[0];
+                            buf.append(parser.getSegmentStandin(r));
+                        } else {
+                            if (pp == null) { // Lazy create
+                                pp = new ParsePosition(0);
+                            }
+                            pp.setIndex(pos);
+                            String name = parser.parseData.
+                                parseReference(rule, pp, limit);
+                            if (name == null) {
+                                // This means the '$' was not followed by a
+                                // valid name.  Try to interpret it as an
+                                // end anchor then.  If this also doesn't work
+                                // (if we see a following character) then signal
+                                // an error.
+                                anchorEnd = true;
+                                break;
+                            }
+                            pos = pp.getIndex();
+                            // If this is a variable definition statement,
+                            // then the LHS variable will be undefined.  In
+                            // that case appendVariableDef() will append the
+                            // special placeholder char variableLimit-1.
+                            varStart = buf.length();
+                            parser.appendVariableDef(name, buf);
+                            varLimit = buf.length();
+                        }
+                    }
+                    break;
+                case DOT:
+                    buf.append(parser.getDotStandIn());
+                    break;
+                case KLEENE_STAR:
+                case ONE_OR_MORE:
+                case ZERO_OR_ONE:
+                    // Quantifiers.  We handle single characters, quoted strings,
+                    // variable references, and segments.
+                    //  a+      matches  aaa
+                    //  'foo'+  matches  foofoofoo
+                    //  $v+     matches  xyxyxy if $v == xy
+                    //  (seg)+  matches  segsegseg
+                    {
+                        if (isSegment && buf.length() == bufStart) {
+                            // The */+ immediately follows '('
+                            syntaxError("Misplaced quantifier", rule, start);
+                            break;
+                        } 
+ 
+                        int qstart, qlimit;
+                        // The */+ follows an isolated character or quote
+                        // or variable reference
+                        if (buf.length() == quoteLimit) {
+                            // The */+ follows a 'quoted string'
+                            qstart = quoteStart;
+                            qlimit = quoteLimit;
+                        } else if (buf.length() == varLimit) {
+                            // The */+ follows a $variableReference
+                            qstart = varStart;
+                            qlimit = varLimit;
+                        } else {
+                            // The */+ follows a single character, possibly
+                            // a segment standin
+                            qstart = buf.length() - 1;
+                            qlimit = qstart + 1;
+                        }
+
+                        UnicodeMatcher m;
+                        try {
+                            m = new StringMatcher(buf.toString(), qstart, qlimit,
+                                              0, parser.curData);
+                        } catch (RuntimeException e) {
+                            throw new IllegalArgumentException("Failure in rule: " + rule.substring(pos, limit));
+                        }
+                        int min = 0;
+                        int max = Quantifier.MAX;
+                        switch (c) {
+                        case ONE_OR_MORE:
+                            min = 1;
+                            break;
+                        case ZERO_OR_ONE:
+                            min = 0;
+                            max = 1;
+                            break;
+                            // case KLEENE_STAR:
+                            //    do nothing -- min, max already set
+                        }
+                        m = new Quantifier(m, min, max);
+                        buf.setLength(qstart);
+                        buf.append(parser.generateStandInFor(m));
+                    }
+                    break;
+
+                //------------------------------------------------------
+                // Elements allowed ONLY WITHIN segments
+                //------------------------------------------------------
+                case SEGMENT_CLOSE:
+                    // assert(isSegment);
+                    // We're done parsing a segment.
+                    break main;
+
+                //------------------------------------------------------
+                // Elements allowed ONLY OUTSIDE segments
+                //------------------------------------------------------
+                case CONTEXT_ANTE:
+                    if (ante >= 0) {
+                        syntaxError("Multiple ante contexts", rule, start);
+                    }
+                    ante = buf.length();
+                    break;
+                case CONTEXT_POST:
+                    if (post >= 0) {
+                        syntaxError("Multiple post contexts", rule, start);
+                    }
+                    post = buf.length();
+                    break;
+                case CURSOR_POS:
+                    if (cursor >= 0) {
+                        syntaxError("Multiple cursors", rule, start);
+                    }
+                    cursor = buf.length();
+                    break;
+                case CURSOR_OFFSET:
+                    if (cursorOffset < 0) {
+                        if (buf.length() > 0) {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                        --cursorOffset;
+                    } else if (cursorOffset > 0) {
+                        if (buf.length() != cursorOffsetPos || cursor >= 0) {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                        ++cursorOffset;
+                    } else {
+                        if (cursor == 0 && buf.length() == 0) {
+                            cursorOffset = -1;
+                        } else if (cursor < 0) {
+                            cursorOffsetPos = buf.length();
+                            cursorOffset = 1;
+                        } else {
+                            syntaxError("Misplaced " + c, rule, start);
+                        }
+                    }
+                    break;
+
+                //------------------------------------------------------
+                // Non-special characters
+                //------------------------------------------------------
+                default:
+                    // Disallow unquoted characters other than [0-9A-Za-z]
+                    // in the printable ASCII range.  These characters are
+                    // reserved for possible future use.
+                    if (c >= 0x0021 && c <= 0x007E &&
+                        !((c >= '0' && c <= '9') ||
+                          (c >= 'A' && c <= 'Z') ||
+                          (c >= 'a' && c <= 'z'))) {
+                        syntaxError("Unquoted " + c, rule, start);
+                    }
+                    buf.append(c);
+                    break;
+                }
+            }
+            return pos;
+        }
+
+        /**
+         * Remove context.
+         */
+        void removeContext() {
+            text = text.substring(ante < 0 ? 0 : ante,
+                                  post < 0 ? text.length() : post);
+            ante = post = -1;
+            anchorStart = anchorEnd = false;
+        }
+
+        /**
+         * Return true if this half looks like valid output, that is, does not
+         * contain quantifiers or other special input-only elements.
+         */
+        public boolean isValidOutput(TransliteratorParser parser) {
+            for (int i=0; i<text.length(); ) {
+                int c = UTF16.charAt(text, i);
+                i += UTF16.getCharCount(c);
+                if (!parser.parseData.isReplacer(c)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        /**
+         * Return true if this half looks like valid input, that is, does not
+         * contain functions or other special output-only elements.
+         */
+        public boolean isValidInput(TransliteratorParser parser) {
+            for (int i=0; i<text.length(); ) {
+                int c = UTF16.charAt(text, i);
+                i += UTF16.getCharCount(c);
+                if (!parser.parseData.isMatcher(c)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // PUBLIC methods
+    //----------------------------------------------------------------------
+
+    /**
+     * Constructor.
+     */
+    public TransliteratorParser() {
+    }
+
+    /**
+     * Parse a set of rules.  After the parse completes, examine the public
+     * data members for results.
+     */
+    public void parse(String rules, int dir) {
+        parseRules(new RuleArray(new String[] { rules }), dir);
+    }
+   
+    /*
+     * Parse a set of rules.  After the parse completes, examine the public
+     * data members for results.
+     */
+/*    public void parse(ResourceReader rules, int direction) {
+        parseRules(new RuleReader(rules), direction);
+    }*/
+
+    //----------------------------------------------------------------------
+    // PRIVATE methods
+    //----------------------------------------------------------------------
+
+    /**
+     * Parse an array of zero or more rules.  The strings in the array are
+     * treated as if they were concatenated together, with rule terminators
+     * inserted between array elements if not present already.
+     *
+     * Any previous rules are discarded.  Typically this method is called exactly
+     * once, during construction.
+     *
+     * The member this.data will be set to null if there are no rules.
+     *
+     * @exception IllegalArgumentException if there is a syntax error in the
+     * rules
+     */
+    void parseRules(RuleBody ruleArray, int dir) {
+        boolean parsingIDs = true;
+        int ruleCount = 0;
+
+        dataVector = new Vector();
+        idBlockVector = new Vector();
+        curData = null;
+        direction = dir;
+        compoundFilter = null;
+        variablesVector = new Vector();
+        variableNames = new Hashtable();
+        parseData = new ParseData();
+
+        StringBuffer errors = null;
+        int errorCount = 0;
+
+        ruleArray.reset();
+
+        StringBuffer idBlockResult = new StringBuffer();
+
+        // The compound filter offset is an index into idBlockResult.
+        // If it is 0, then the compound filter occurred at the start,
+        // and it is the offset to the _start_ of the compound filter
+        // pattern.  Otherwise it is the offset to the _limit_ of the
+        // compound filter pattern within idBlockResult.
+        this.compoundFilter = null;
+        int compoundFilterOffset = -1;
+
+    main:
+        for (;;) {
+            String rule = ruleArray.nextLine();
+            if (rule == null) {
+                break;
+            }
+            int pos = 0;
+            int limit = rule.length();
+            while (pos < limit) {
+                char c = rule.charAt(pos++);
+                if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                    continue;
+                }
+                // Skip lines starting with the comment character
+                if (c == RULE_COMMENT_CHAR) {
+                    pos = rule.indexOf("\n", pos) + 1;
+                    if (pos == 0) {
+                        break; // No "\n" found; rest of rule is a commnet
+                    }
+                    continue; // Either fall out or restart with next line
+                }
+
+                // skip empty rules
+                if (c == END_OF_RULE)
+                    continue;
+
+                // Often a rule file contains multiple errors.  It's
+                // convenient to the rule author if these are all reported
+                // at once.  We keep parsing rules even after a failure, up
+                // to a specified limit, and report all errors at once.
+                try {
+                    ++ruleCount;
+
+                    // We've found the start of a rule or ID.  c is its first
+                    // character, and pos points past c.
+                    --pos;
+                    // Look for an ID token.  Must have at least ID_TOKEN_LEN + 1
+                    // chars left.
+                    if ((pos + ID_TOKEN_LEN + 1) <= limit &&
+                            rule.regionMatches(pos, ID_TOKEN, 0, ID_TOKEN_LEN)) {
+                        pos += ID_TOKEN_LEN;
+                        c = rule.charAt(pos);
+                        while (UCharacterProperty.isRuleWhiteSpace(c) && pos < limit) {
+                            ++pos;
+                            c = rule.charAt(pos);
+                        }
+                        int[] p = new int[] { pos };
+
+                        if (!parsingIDs) {
+                            if (curData != null) {
+                                if (direction == Transliterator.FORWARD)
+                                    dataVector.add(curData);
+                                else
+                                    dataVector.insertElementAt(curData, 0);
+                                curData = null;
+                            }
+                            parsingIDs = true;
+                        }
+
+                        TransliteratorIDParser.SingleID id =
+                            TransliteratorIDParser.parseSingleID(
+                                          rule, p, direction);
+                        if (p[0] != pos && Utility.parseChar(rule, p, END_OF_RULE)) {
+                            // Successful ::ID parse.
+
+                            if (direction == Transliterator.FORWARD) {
+                                idBlockResult.append(id.canonID).append(END_OF_RULE);
+                            } else {
+                                idBlockResult.insert(0, id.canonID + END_OF_RULE);
+                            }
+
+                        } else {
+                            // Couldn't parse an ID.  Try to parse a global filter
+                            int[] withParens = new int[] { -1 };
+                            UnicodeSet f = TransliteratorIDParser.parseGlobalFilter(rule, p, direction, withParens, null);
+                            if (f != null && Utility.parseChar(rule, p, END_OF_RULE)) {
+                                if ((direction == Transliterator.FORWARD) ==
+                                    (withParens[0] == 0)) {
+                                    if (compoundFilter != null) {
+                                        // Multiple compound filters
+                                        syntaxError("Multiple global filters", rule, pos);
+                                    }
+                                    compoundFilter = f;
+                                    compoundFilterOffset = ruleCount;
+                               }
+                            } else {
+                                // Invalid ::id
+                                // Can be parsed as neither an ID nor a global filter
+                                syntaxError("Invalid ::ID", rule, pos);
+                            }
+                        }
+
+                        pos = p[0];
+                    } else {
+                        if (parsingIDs) {
+                            if (direction == Transliterator.FORWARD)
+                                idBlockVector.add(idBlockResult.toString());
+                            else
+                                idBlockVector.insertElementAt(idBlockResult.toString(), 0);
+                            idBlockResult.delete(0, idBlockResult.length());
+                            parsingIDs = false;
+                            curData = new RuleBasedTransliterator.Data();
+
+                            // By default, rules use part of the private use area
+                            // E000..F8FF for variables and other stand-ins.  Currently
+                            // the range F000..F8FF is typically sufficient.  The 'use
+                            // variable range' pragma allows rule sets to modify this.
+                            setVariableRange(0xF000, 0xF8FF);
+                        }
+
+                        if (resemblesPragma(rule, pos, limit)) {
+                            int ppp = parsePragma(rule, pos, limit);
+                            if (ppp < 0) {
+                                syntaxError("Unrecognized pragma", rule, pos);
+                            }
+                            pos = ppp;
+                        // Parse a rule
+                        } else {
+                            pos = parseRule(rule, pos, limit);
+                        }
+                    }
+                } catch (IllegalArgumentException e) {
+                    if (errorCount == 30) {
+                        errors.append("\nMore than 30 errors; further messages squelched");
+                        break main;
+                    }
+                    if (errors == null) {
+                        errors = new StringBuffer(e.getMessage());
+                    } else {
+                        errors.append("\n" + e.getMessage());
+                    }
+                    ++errorCount;
+                    pos = ruleEnd(rule, pos, limit) + 1; // +1 advances past ';'
+                }
+            }
+        }
+        if (parsingIDs && idBlockResult.length() > 0) {
+            if (direction == Transliterator.FORWARD)
+                idBlockVector.add(idBlockResult.toString());
+            else
+                idBlockVector.insertElementAt(idBlockResult.toString(), 0);
+        }
+        else if (!parsingIDs && curData != null) {
+            if (direction == Transliterator.FORWARD)
+                dataVector.add(curData);
+            else
+                dataVector.insertElementAt(curData, 0);
+        }
+
+        // Convert the set vector to an array
+        for (int i = 0; i < dataVector.size(); i++) {
+            RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)dataVector.get(i);
+            data.variables = new Object[variablesVector.size()];
+            variablesVector.copyInto(data.variables);
+            data.variableNames = new Hashtable();
+            data.variableNames.putAll(variableNames);
+        }
+        variablesVector = null;
+
+        // Do more syntax checking and index the rules
+        try {
+            if (compoundFilter != null) {
+                if ((direction == Transliterator.FORWARD &&
+                     compoundFilterOffset != 1) ||
+                    (direction == Transliterator.REVERSE &&
+                     compoundFilterOffset != ruleCount)) {
+                    throw new IllegalArgumentException("Compound filters misplaced");
+                }
+            }
+
+            for (int i = 0; i < dataVector.size(); i++) {
+                RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)dataVector.get(i);
+                data.ruleSet.freeze();
+            }
+
+            if (idBlockVector.size() == 1 && ((String)idBlockVector.get(0)).length() == 0)
+                idBlockVector.remove(0);
+
+        } catch (IllegalArgumentException e) {
+            if (errors == null) {
+                errors = new StringBuffer(e.getMessage());
+            } else {
+                errors.append("\n").append(e.getMessage());
+            }
+        }
+
+        if (errors != null) {
+            throw new IllegalArgumentException(errors.toString());
+        }
+    }
+
+    /**
+     * MAIN PARSER.  Parse the next rule in the given rule string, starting
+     * at pos.  Return the index after the last character parsed.  Do not
+     * parse characters at or after limit.
+     *
+     * Important:  The character at pos must be a non-whitespace character
+     * that is not the comment character.
+     *
+     * This method handles quoting, escaping, and whitespace removal.  It
+     * parses the end-of-rule character.  It recognizes context and cursor
+     * indicators.  Once it does a lexical breakdown of the rule at pos, it
+     * creates a rule object and adds it to our rule list.
+     *
+     * This method is tightly coupled to the inner class RuleHalf.
+     */
+    private int parseRule(String rule, int pos, int limit) {
+        // Locate the left side, operator, and right side
+        int start = pos;
+        char operator = 0;
+
+        // Set up segments data
+        segmentStandins = new StringBuffer();
+        segmentObjects = new Vector();
+
+        RuleHalf left  = new RuleHalf();
+        RuleHalf right = new RuleHalf();
+
+        undefinedVariableName = null;
+        pos = left.parse(rule, pos, limit, this);
+
+        if (pos == limit ||
+            OPERATORS.indexOf(operator = rule.charAt(--pos)) < 0) {
+            syntaxError("No operator pos=" + pos, rule, start);
+        }
+        ++pos;
+
+        // Found an operator char.  Check for forward-reverse operator.
+        if (operator == REVERSE_RULE_OP &&
+            (pos < limit && rule.charAt(pos) == FORWARD_RULE_OP)) {
+            ++pos;
+            operator = FWDREV_RULE_OP;
+        }
+
+        // Translate alternate op characters.
+        switch (operator) {
+        case ALT_FORWARD_RULE_OP:
+            operator = FORWARD_RULE_OP;
+            break;
+        case ALT_REVERSE_RULE_OP:
+            operator = REVERSE_RULE_OP;
+            break;
+        case ALT_FWDREV_RULE_OP:
+            operator = FWDREV_RULE_OP;
+            break;
+        }
+
+        pos = right.parse(rule, pos, limit, this);
+
+        if (pos < limit) {
+            if (rule.charAt(--pos) == END_OF_RULE) {
+                ++pos;
+            } else {
+                // RuleHalf parser must have terminated at an operator
+                syntaxError("Unquoted operator", rule, start);
+            }
+        }
+
+        if (operator == VARIABLE_DEF_OP) {
+            // LHS is the name.  RHS is a single character, either a literal
+            // or a set (already parsed).  If RHS is longer than one
+            // character, it is either a multi-character string, or multiple
+            // sets, or a mixture of chars and sets -- syntax error.
+
+            // We expect to see a single undefined variable (the one being
+            // defined).
+            if (undefinedVariableName == null) {
+                syntaxError("Missing '$' or duplicate definition", rule, start);
+            }
+            if (left.text.length() != 1 || left.text.charAt(0) != variableLimit) {
+                syntaxError("Malformed LHS", rule, start);
+            }
+            if (left.anchorStart || left.anchorEnd ||
+                right.anchorStart || right.anchorEnd) {
+                syntaxError("Malformed variable def", rule, start);
+            }
+            // We allow anything on the right, including an empty string.
+            int n = right.text.length();
+            char[] value = new char[n];
+            right.text.getChars(0, n, value, 0);
+            variableNames.put(undefinedVariableName, value);
+
+            ++variableLimit;
+            return pos;
+        }
+
+        // If this is not a variable definition rule, we shouldn't have
+        // any undefined variable names.
+        if (undefinedVariableName != null) {
+            syntaxError("Undefined variable $" + undefinedVariableName,
+                        rule, start);
+        }
+
+        // Verify segments
+        if (segmentStandins.length() > segmentObjects.size()) {
+            syntaxError("Undefined segment reference", rule, start);
+        }
+        for (int i=0; i<segmentStandins.length(); ++i) {
+            if (segmentStandins.charAt(i) == 0) {
+                syntaxError("Internal error", rule, start); // will never happen
+            }
+        }
+        for (int i=0; i<segmentObjects.size(); ++i) {
+            if (segmentObjects.elementAt(i) == null) {
+                syntaxError("Internal error", rule, start); // will never happen
+            }
+        }
+
+        // If the direction we want doesn't match the rule
+        // direction, do nothing.
+        if (operator != FWDREV_RULE_OP &&
+            ((direction == Transliterator.FORWARD) != (operator == FORWARD_RULE_OP))) {
+            return pos;
+        }
+
+        // Transform the rule into a forward rule by swapping the
+        // sides if necessary.
+        if (direction == Transliterator.REVERSE) {
+            RuleHalf temp = left;
+            left = right;
+            right = temp;
+        }
+
+        // Remove non-applicable elements in forward-reverse
+        // rules.  Bidirectional rules ignore elements that do not
+        // apply.
+        if (operator == FWDREV_RULE_OP) {
+            right.removeContext();
+            left.cursor = -1;
+            left.cursorOffset = 0;
+        }
+
+        // Normalize context
+        if (left.ante < 0) {
+            left.ante = 0;
+        }
+        if (left.post < 0) {
+            left.post = left.text.length();
+        }
+
+        // Context is only allowed on the input side.  Cursors are only
+        // allowed on the output side.  Segment delimiters can only appear
+        // on the left, and references on the right.  Cursor offset
+        // cannot appear without an explicit cursor.  Cursor offset
+        // cannot place the cursor outside the limits of the context.
+        // Anchors are only allowed on the input side.
+        if (right.ante >= 0 || right.post >= 0 || left.cursor >= 0 ||
+            (right.cursorOffset != 0 && right.cursor < 0) ||
+            // - The following two checks were used to ensure that the
+            // - the cursor offset stayed within the ante- or postcontext.
+            // - However, with the addition of quantifiers, we have to
+            // - allow arbitrary cursor offsets and do runtime checking.
+            //(right.cursorOffset > (left.text.length() - left.post)) ||
+            //(-right.cursorOffset > left.ante) ||
+            right.anchorStart || right.anchorEnd ||
+            !left.isValidInput(this) || !right.isValidOutput(this) ||
+            left.ante > left.post) {
+            syntaxError("Malformed rule", rule, start);
+        }
+
+        // Flatten segment objects vector to an array
+        UnicodeMatcher[] segmentsArray = null;
+        if (segmentObjects.size() > 0) {
+            segmentsArray = new UnicodeMatcher[segmentObjects.size()];
+            segmentObjects.toArray(segmentsArray);
+        }
+
+        curData.ruleSet.addRule(new TransliterationRule(
+                                     left.text, left.ante, left.post,
+                                     right.text, right.cursor, right.cursorOffset,
+                                     segmentsArray,
+                                     left.anchorStart, left.anchorEnd,
+                                     curData));
+
+        return pos;
+    }
+
+    /**
+     * Set the variable range to [start, end] (inclusive).
+     */
+    private void setVariableRange(int start, int end) {
+        if (start > end || start < 0 || end > 0xFFFF) {
+            throw new IllegalArgumentException("Invalid variable range " + start + ", " + end);
+        }
+        
+        curData.variablesBase = (char) start; // first private use
+
+        if (dataVector.size() == 0) {
+            variableNext = (char) start;
+            variableLimit = (char) (end + 1);
+        }
+    }
+
+    /**
+     * Assert that the given character is NOT within the variable range.
+     * If it is, signal an error.  This is neccesary to ensure that the
+     * variable range does not overlap characters used in a rule.
+     */
+    private void checkVariableRange(int ch, String rule, int start) {
+        if (ch >= curData.variablesBase && ch < variableLimit) {
+            syntaxError("Variable range character in rule", rule, start);
+        }
+    }
+
+    // (The following method is part of an unimplemented feature.
+    // Remove this clover pragma after the feature is implemented.
+    // 2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * Set the maximum backup to 'backup', in response to a pragma
+     * statement.
+     */
+    private void pragmaMaximumBackup(int backup) {
+        //TODO Finish
+        throw new IllegalArgumentException("use maximum backup pragma not implemented yet");
+    }
+    ///CLOVER:ON
+
+    // (The following method is part of an unimplemented feature.
+    // Remove this clover pragma after the feature is implemented.
+    // 2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * Begin normalizing all rules using the given mode, in response
+     * to a pragma statement.
+     */
+    private void pragmaNormalizeRules(Normalizer.Mode mode) {
+        //TODO Finish
+        throw new IllegalArgumentException("use normalize rules pragma not implemented yet");
+    }
+    ///CLOVER:ON
+
+    /**
+     * Return true if the given rule looks like a pragma.
+     * @param pos offset to the first non-whitespace character
+     * of the rule.
+     * @param limit pointer past the last character of the rule.
+     */
+    static boolean resemblesPragma(String rule, int pos, int limit) {
+        // Must start with /use\s/i
+        return Utility.parsePattern(rule, pos, limit, "use ", null) >= 0;
+    }
+
+    /**
+     * Parse a pragma.  This method assumes resemblesPragma() has
+     * already returned true.
+     * @param pos offset to the first non-whitespace character
+     * of the rule.
+     * @param limit pointer past the last character of the rule.
+     * @return the position index after the final ';' of the pragma,
+     * or -1 on failure.
+     */
+    private int parsePragma(String rule, int pos, int limit) {
+        int[] array = new int[2];
+
+        // resemblesPragma() has already returned true, so we
+        // know that pos points to /use\s/i; we can skip 4 characters
+        // immediately
+        pos += 4;
+        
+        // Here are the pragmas we recognize:
+        // use variable range 0xE000 0xEFFF;
+        // use maximum backup 16;
+        // use nfd rules;
+        int p = Utility.parsePattern(rule, pos, limit, "~variable range # #~;", array);
+        if (p >= 0) {
+            setVariableRange(array[0], array[1]);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~maximum backup #~;", array);
+        if (p >= 0) {
+            pragmaMaximumBackup(array[0]);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~nfd rules~;", null);
+        if (p >= 0) {
+            pragmaNormalizeRules(Normalizer.NFD);
+            return p;
+        }
+
+        p = Utility.parsePattern(rule, pos, limit, "~nfc rules~;", null);
+        if (p >= 0) {
+            pragmaNormalizeRules(Normalizer.NFC);
+            return p;
+        }
+
+        // Syntax error: unable to parse pragma
+        return -1;
+    }
+
+    /**
+     * Throw an exception indicating a syntax error.  Search the rule string
+     * for the probable end of the rule.  Of course, if the error is that
+     * the end of rule marker is missing, then the rule end will not be found.
+     * In any case the rule start will be correctly reported.
+     * @param msg error description
+     * @param rule pattern string
+     * @param start position of first character of current rule
+     */
+    static final void syntaxError(String msg, String rule, int start) {
+        int end = ruleEnd(rule, start, rule.length());
+        throw new IllegalArgumentException(msg + " in \"" +
+                                           Utility.escape(rule.substring(start, end)) + '"');
+    }
+
+    static final int ruleEnd(String rule, int start, int limit) {
+        int end = Utility.quotedIndexOf(rule, start, limit, ";");
+        if (end < 0) {
+            end = limit;
+        }
+        return end;
+    }
+
+    /**
+     * Parse a UnicodeSet out, store it, and return the stand-in character
+     * used to represent it.
+     */
+    private final char parseSet(String rule, ParsePosition pos) {
+        UnicodeSet set = new UnicodeSet(rule, pos, parseData);
+        if (variableNext >= variableLimit) {
+            throw new RuntimeException("Private use variables exhausted");
+        }
+        set.compact();
+        return generateStandInFor(set);
+    }
+
+    /**
+     * Generate and return a stand-in for a new UnicodeMatcher or UnicodeReplacer.
+     * Store the object.
+     */
+    char generateStandInFor(Object obj) {
+        // assert(obj != null);
+
+        // Look up previous stand-in, if any.  This is a short list
+        // (typical n is 0, 1, or 2); linear search is optimal.
+        for (int i=0; i<variablesVector.size(); ++i) {
+            if (variablesVector.elementAt(i) == obj) { // [sic] pointer comparison
+                return (char) (curData.variablesBase + i);
+            }
+        }
+
+        if (variableNext >= variableLimit) {
+            throw new RuntimeException("Variable range exhausted");
+        }
+        variablesVector.addElement(obj);
+        return variableNext++;
+    }
+
+    /**
+     * Return the standin for segment seg (1-based).
+     */
+    public char getSegmentStandin(int seg) {
+        if (segmentStandins.length() < seg) {
+            segmentStandins.setLength(seg);
+        }
+        char c = segmentStandins.charAt(seg-1);
+        if (c == 0) {
+            if (variableNext >= variableLimit) {
+                throw new RuntimeException("Variable range exhausted");
+            }
+            c = variableNext++;
+            // Set a placeholder in the master variables vector that will be
+            // filled in later by setSegmentObject().  We know that we will get
+            // called first because setSegmentObject() will call us.
+            variablesVector.addElement(null);
+            segmentStandins.setCharAt(seg-1, c);
+        }
+        return c;
+    }
+    
+    /**
+     * Set the object for segment seg (1-based).
+     */
+    public void setSegmentObject(int seg, StringMatcher obj) {
+        // Since we call parseSection() recursively, nested
+        // segments will result in segment i+1 getting parsed
+        // and stored before segment i; be careful with the
+        // vector handling here.
+        if (segmentObjects.size() < seg) {
+            segmentObjects.setSize(seg);
+        }
+        int index = getSegmentStandin(seg) - curData.variablesBase;
+        if (segmentObjects.elementAt(seg-1) != null ||
+            variablesVector.elementAt(index) != null) {
+            throw new RuntimeException(); // should never happen
+        }
+        segmentObjects.setElementAt(obj, seg-1);
+        variablesVector.setElementAt(obj, index);
+    }
+
+    /**
+     * Return the stand-in for the dot set.  It is allocated the first
+     * time and reused thereafter.
+     */
+    char getDotStandIn() {
+        if (dotStandIn == -1) {
+            dotStandIn = generateStandInFor(new UnicodeSet(DOT_SET));
+        }
+        return (char) dotStandIn;
+    }
+
+    /**
+     * Append the value of the given variable name to the given
+     * StringBuffer.
+     * @exception IllegalArgumentException if the name is unknown.
+     */
+    private void appendVariableDef(String name, StringBuffer buf) {
+        char[] ch = (char[]) variableNames.get(name);
+        if (ch == null) {
+            // We allow one undefined variable so that variable definition
+            // statements work.  For the first undefined variable we return
+            // the special placeholder variableLimit-1, and save the variable
+            // name.
+            if (undefinedVariableName == null) {
+                undefinedVariableName = name;
+                if (variableNext >= variableLimit) {
+                    throw new RuntimeException("Private use variables exhausted");
+                }
+                buf.append((char) --variableLimit);
+            } else {
+                throw new IllegalArgumentException("Undefined variable $"
+                                                   + name);
+            }
+        } else {
+            buf.append(ch);
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/TransliteratorRegistry.java b/src/com/ibm/icu/text/TransliteratorRegistry.java
new file mode 100644
index 0000000..ac8417c
--- /dev/null
+++ b/src/com/ibm/icu/text/TransliteratorRegistry.java
@@ -0,0 +1,893 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2005, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   08/19/2001  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+//import com.ibm.icu.impl.ICULocaleData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+class TransliteratorRegistry {
+
+    // char constants
+    private static final char LOCALE_SEP  = '_';
+
+    // String constants
+    private static final String NO_VARIANT = ""; // empty string
+    private static final String ANY = "Any";
+
+    /**
+     * Dynamic registry mapping full IDs to Entry objects.  This
+     * contains both public and internal entities.  The visibility is
+     * controlled by whether an entry is listed in availableIDs and
+     * specDAG or not.
+     *
+     * Keys are CaseInsensitiveString objects.
+     * Values are objects of class Class (subclass of Transliterator),
+     * RuleBasedTransliterator.Data, Transliterator.Factory, or one
+     * of the entry classes defined here (AliasEntry or ResourceEntry).
+     */
+    private Hashtable registry;
+
+    /**
+     * DAG of visible IDs by spec.  Hashtable: source => (Hashtable:
+     * target => (Vector: variant)) The Vector of variants is never
+     * empty.  For a source-target with no variant, the special
+     * variant NO_VARIANT (the empty string) is stored in slot zero of
+     * the UVector.
+     *
+     * Keys are CaseInsensitiveString objects.
+     * Values are Hashtable of (CaseInsensitiveString -> Vector of
+     * CaseInsensitiveString)
+     */
+    private Hashtable specDAG;
+
+    /**
+     * Vector of public full IDs (CaseInsensitiveString objects).
+     */
+    private Vector availableIDs;
+
+    //----------------------------------------------------------------------
+    // class Spec
+    //----------------------------------------------------------------------
+
+    /**
+     * A Spec is a string specifying either a source or a target.  In more
+     * general terms, it may also specify a variant, but we only use the
+     * Spec class for sources and targets.
+     *
+     * A Spec may be a locale or a script.  If it is a locale, it has a
+     * fallback chain that goes xx_YY_ZZZ -> xx_YY -> xx -> ssss, where
+     * ssss is the script mapping of xx_YY_ZZZ.  The Spec API methods
+     * hasFallback(), next(), and reset() iterate over this fallback
+     * sequence.
+     *
+     * The Spec class canonicalizes itself, so the locale is put into
+     * canonical form, or the script is transformed from an abbreviation
+     * to a full name.
+     */
+    static class Spec {
+
+        private String top;        // top spec
+        private String spec;       // current spec
+        private String nextSpec;   // next spec
+        private String scriptName; // script name equivalent of top, if != top
+        private boolean isSpecLocale; // TRUE if spec is a locale
+        private boolean isNextLocale; // TRUE if nextSpec is a locale
+        private ICUResourceBundle res;
+
+        public Spec(String theSpec) {
+            top = theSpec;
+            spec = null;
+            scriptName = null;
+            try{
+                // Canonicalize script name.  If top is a script name then
+                // script != UScript.INVALID_CODE.
+                int script = UScript.getCodeFromName(top);
+
+                // Canonicalize script name -or- do locale->script mapping
+                int[] s = UScript.getCode(top);
+                if (s != null) {
+                    scriptName = UScript.getName(s[0]);
+                    // If the script name is the same as top then it's redundant
+                    if (scriptName.equalsIgnoreCase(top)) {
+                        scriptName = null;
+                    }
+                }
+
+                isSpecLocale = false;
+                res = null;
+                // If 'top' is not a script name, try a locale lookup
+                if (script == UScript.INVALID_CODE) {
+                    Locale toploc = LocaleUtility.getLocaleFromName(top);
+                    res  = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_TRANSLIT_BASE_NAME,toploc);
+                    // Make sure we got the bundle we wanted; otherwise, don't use it
+                    if (res!=null && LocaleUtility.isFallbackOf(res.getULocale().toString(), top)) {
+                        isSpecLocale = true;
+                    }
+                }
+            }catch(MissingResourceException e){
+                scriptName = null;
+            }
+            // assert(spec != top);
+            reset();
+        }
+
+        public boolean hasFallback() {
+            return nextSpec != null;
+        }
+
+        public void reset() {
+            if (spec != top) { // [sic] pointer comparison
+                spec = top;
+                isSpecLocale = (res != null);
+                setupNext();
+            }
+        }
+
+        private void setupNext() {
+            isNextLocale = false;
+            if (isSpecLocale) {
+                nextSpec = spec;
+                int i = nextSpec.lastIndexOf(LOCALE_SEP);
+                // If i == 0 then we have _FOO, so we fall through
+                // to the scriptName.
+                if (i > 0) {
+                    nextSpec = spec.substring(0, i);
+                    isNextLocale = true;
+                } else {
+                    nextSpec = scriptName; // scriptName may be null
+                }
+            } else {
+                // Fallback to the script, which may be null
+                if (nextSpec != scriptName) {
+                    nextSpec = scriptName;
+                } else {
+                    nextSpec = null;
+                }
+            }
+        }
+
+        // Protocol:
+        // for(String& s(spec.get());
+        //     spec.hasFallback(); s(spec.next())) { ...
+
+        public String next() {
+            spec = nextSpec;
+            isSpecLocale = isNextLocale;
+            setupNext();
+            return spec;
+        }
+
+        public String get() {
+            return spec;
+        }
+
+        public boolean isLocale() {
+            return isSpecLocale;
+        }
+
+        /**
+         * Return the ResourceBundle for this spec, at the current
+         * level of iteration.  The level of iteration goes from
+         * aa_BB_CCC to aa_BB to aa.  If the bundle does not
+         * correspond to the current level of iteration, return null.
+         * If isLocale() is false, always return null.
+         */
+        public ResourceBundle getBundle() {
+            if (res != null &&
+                res.getULocale().toString().equals(spec)) {
+                return res;
+            }
+            return null;
+        }
+
+        public String getTop() {
+            return top;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // Entry classes
+    //----------------------------------------------------------------------
+
+    static class ResourceEntry {
+        public String resource;
+        public String encoding;
+        public int direction;
+        public ResourceEntry(String n, String enc, int d) {
+            resource = n;
+            encoding = enc;
+            direction = d;
+        }
+    }
+
+    // An entry representing a rule in a locale resource bundle
+    static class LocaleEntry {
+        public String rule;
+        public int direction;
+        public LocaleEntry(String r, int d) {
+            rule = r;
+            direction = d;
+        }
+    }
+
+    static class AliasEntry {
+        public String alias;
+        public AliasEntry(String a) {
+            alias = a;
+        }
+    }
+
+    static class CompoundRBTEntry {
+        private String ID;
+        private Vector idBlockVector;
+        private Vector dataVector;
+        private UnicodeSet compoundFilter;
+
+        public CompoundRBTEntry(String theID, Vector theIDBlockVector,
+                                Vector theDataVector,
+                                UnicodeSet theCompoundFilter) {
+            ID = theID;
+            idBlockVector = theIDBlockVector;
+            dataVector = theDataVector;
+            compoundFilter = theCompoundFilter;
+        }
+
+        public Transliterator getInstance() {
+            Vector transliterators = new Vector();
+            int passNumber = 1;
+
+            int limit = Math.max(idBlockVector.size(), dataVector.size());
+            for (int i = 0; i < limit; i++) {
+                if (i < idBlockVector.size()) {
+                    String idBlock = (String)idBlockVector.get(i);
+                    if (idBlock.length() > 0)
+                        transliterators.add(Transliterator.getInstance(idBlock));
+                }
+                if (i < dataVector.size()) {
+                    RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)dataVector.get(i);
+                    transliterators.add(new RuleBasedTransliterator("%Pass" + passNumber++, data, null));
+                }
+            }
+
+            Transliterator t = new CompoundTransliterator(transliterators, passNumber - 1);
+            t.setID(ID);
+            if (compoundFilter != null) {
+                t.setFilter(compoundFilter);
+            }
+            return t;
+        }
+    }
+
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: Basic public API
+    //----------------------------------------------------------------------
+
+    public TransliteratorRegistry() {
+        registry = new Hashtable();
+        specDAG = new Hashtable();
+        availableIDs = new Vector();
+    }
+
+    /**
+     * Given a simple ID (forward direction, no inline filter, not
+     * compound) attempt to instantiate it from the registry.  Return
+     * 0 on failure.
+     *
+     * Return a non-empty aliasReturn value if the ID points to an alias.
+     * We cannot instantiate it ourselves because the alias may contain
+     * filters or compounds, which we do not understand.  Caller should
+     * make aliasReturn empty before calling.
+     */
+    public Transliterator get(String ID,
+                              StringBuffer aliasReturn) {
+        Object[] entry = find(ID);
+        return (entry == null) ? null
+            : instantiateEntry(ID, entry, aliasReturn);
+    }
+
+    /**
+     * Register a class.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Class transliteratorSubclass,
+                    boolean visible) {
+        registerEntry(ID, transliteratorSubclass, visible);
+    }
+
+    /**
+     * Register an ID and a factory function pointer.  This adds an
+     * entry to the dynamic store, or replaces an existing entry.  Any
+     * entry in the underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Transliterator.Factory factory,
+                    boolean visible) {
+        registerEntry(ID, factory, visible);
+    }
+
+    /**
+     * Register an ID and a resource name.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    String resourceName,
+                    String encoding,
+                    int dir,
+                    boolean visible) {
+        registerEntry(ID, new ResourceEntry(resourceName, encoding, dir), visible);
+    }
+
+    /**
+     * Register an ID and an alias ID.  This adds an entry to the
+     * dynamic store, or replaces an existing entry.  Any entry in the
+     * underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    String alias,
+                    boolean visible) {
+        registerEntry(ID, new AliasEntry(alias), visible);
+    }
+
+    /**
+     * Register an ID and a Transliterator object.  This adds an entry
+     * to the dynamic store, or replaces an existing entry.  Any entry
+     * in the underlying static locale resource store is masked.
+     */
+    public void put(String ID,
+                    Transliterator trans,
+                    boolean visible) {
+        registerEntry(ID, trans, visible);
+    }
+
+    /**
+     * Unregister an ID.  This removes an entry from the dynamic store
+     * if there is one.  The static locale resource store is
+     * unaffected.
+     */
+    public void remove(String ID) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        // Only need to do this if ID.indexOf('-') < 0
+        String id = TransliteratorIDParser.STVtoID(stv[0], stv[1], stv[2]);
+        registry.remove(new CaseInsensitiveString(id));
+        removeSTV(stv[0], stv[1], stv[2]);
+        availableIDs.removeElement(new CaseInsensitiveString(id));
+    }
+
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: Public ID and spec management
+    //----------------------------------------------------------------------
+
+    /**
+     * An internal class that adapts an enumeration over
+     * CaseInsensitiveStrings to an enumeration over Strings.
+     */
+    private static class IDEnumeration implements Enumeration {
+        Enumeration en;
+
+        public IDEnumeration(Enumeration e) {
+            en = e;
+        }
+
+        public boolean hasMoreElements() {
+            return en != null && en.hasMoreElements();
+        }
+
+        public Object nextElement() {
+            return ((CaseInsensitiveString) en.nextElement()).getString();
+        }
+    }
+
+    /**
+     * Returns an enumeration over the programmatic names of visible
+     * registered transliterators.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableIDs() {
+        // Since the cache contains CaseInsensitiveString objects, but
+        // the caller expects Strings, we have to use an intermediary.
+        return new IDEnumeration(availableIDs.elements());
+    }
+
+    /**
+     * Returns an enumeration over all visible source names.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableSources() {
+        return new IDEnumeration(specDAG.keys());
+    }
+
+    /**
+     * Returns an enumeration over visible target names for the given
+     * source.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableTargets(String source) {
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return new IDEnumeration(null);
+        }
+        return new IDEnumeration(targets.keys());
+    }
+
+    /**
+     * Returns an enumeration over visible variant names for the given
+     * source and target.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     */
+    public Enumeration getAvailableVariants(String source, String target) {
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return new IDEnumeration(null);
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            return new IDEnumeration(null);
+        }
+        return new IDEnumeration(variants.elements());
+    }
+
+    //----------------------------------------------------------------------
+    // class TransliteratorRegistry: internal
+    //----------------------------------------------------------------------
+
+    /**
+     * Convenience method.  Calls 6-arg registerEntry().
+     */
+    private void registerEntry(String source,
+                               String target,
+                               String variant,
+                               Object entry,
+                               boolean visible) {
+        String s = source;
+        if (s.length() == 0) {
+            s = ANY;
+        }
+        String ID = TransliteratorIDParser.STVtoID(source, target, variant);
+        registerEntry(ID, s, target, variant, entry, visible);
+    }
+
+    /**
+     * Convenience method.  Calls 6-arg registerEntry().
+     */
+    private void registerEntry(String ID,
+                               Object entry,
+                               boolean visible) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        // Only need to do this if ID.indexOf('-') < 0
+        String id = TransliteratorIDParser.STVtoID(stv[0], stv[1], stv[2]);
+        registerEntry(id, stv[0], stv[1], stv[2], entry, visible);
+    }
+
+    /**
+     * Register an entry object (adopted) with the given ID, source,
+     * target, and variant strings.
+     */
+    private void registerEntry(String ID,
+                               String source,
+                               String target,
+                               String variant,
+                               Object entry,
+                               boolean visible) {
+        CaseInsensitiveString ciID = new CaseInsensitiveString(ID);
+
+        // Store the entry within an array so it can be modified later
+        if (!(entry instanceof Object[])) {
+            entry = new Object[] { entry };
+        }
+
+        registry.put(ciID, entry);
+        if (visible) {
+            registerSTV(source, target, variant);
+            if (!availableIDs.contains(ciID)) {
+                availableIDs.addElement(ciID);
+            }
+        } else {
+            removeSTV(source, target, variant);
+            availableIDs.removeElement(ciID);
+        }
+    }
+
+    /**
+     * Register a source-target/variant in the specDAG.  Variant may be
+     * empty, but source and target must not be.  If variant is empty then
+     * the special variant NO_VARIANT is stored in slot zero of the
+     * UVector of variants.
+     */
+    private void registerSTV(String source,
+                             String target,
+                             String variant) {
+        // assert(source.length() > 0);
+        // assert(target.length() > 0);
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        CaseInsensitiveString civar = new CaseInsensitiveString(variant);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            targets = new Hashtable();
+            specDAG.put(cisrc, targets);
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            variants = new Vector();
+            targets.put(citrg, variants);
+        }
+        // assert(NO_VARIANT == "");
+        // We add the variant string.  If it is the special "no variant"
+        // string, that is, the empty string, we add it at position zero.
+        if (!variants.contains(civar)) {
+            if (variant.length() > 0) {
+                variants.addElement(civar);
+            } else {
+                variants.insertElementAt(civar, 0);
+            }
+        }
+    }
+
+    /**
+     * Remove a source-target/variant from the specDAG.
+     */
+    private void removeSTV(String source,
+                           String target,
+                           String variant) {
+        // assert(source.length() > 0);
+        // assert(target.length() > 0);
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        CaseInsensitiveString civar = new CaseInsensitiveString(variant);
+        Hashtable targets = (Hashtable) specDAG.get(cisrc);
+        if (targets == null) {
+            return; // should never happen for valid s-t/v
+        }
+        Vector variants = (Vector) targets.get(citrg);
+        if (variants == null) {
+            return; // should never happen for valid s-t/v
+        }
+        variants.removeElement(civar);
+        if (variants.size() == 0) {
+            targets.remove(citrg); // should delete variants
+            if (targets.size() == 0) {
+                specDAG.remove(cisrc); // should delete targets
+            }
+        }
+    }
+
+    private static final boolean DEBUG = false;
+
+    /**
+     * Attempt to find a source-target/variant in the dynamic registry
+     * store.  Return 0 on failure.
+     */
+    private Object[] findInDynamicStore(Spec src,
+                                      Spec trg,
+                                      String variant) {
+        String ID = TransliteratorIDParser.STVtoID(src.get(), trg.get(), variant);
+        if (DEBUG) {
+            System.out.println("TransliteratorRegistry.findInDynamicStore:" +
+                               ID);
+        }
+        return (Object[]) registry.get(new CaseInsensitiveString(ID));
+    }
+
+    /**
+     * Attempt to find a source-target/variant in the static locale
+     * resource store.  Do not perform fallback.  Return 0 on failure.
+     *
+     * On success, create a new entry object, register it in the dynamic
+     * store, and return a pointer to it, but do not make it public --
+     * just because someone requested something, we do not expand the
+     * available ID list (or spec DAG).
+     */
+    private Object[] findInStaticStore(Spec src,
+                                     Spec trg,
+                                     String variant) {
+        if (DEBUG) {
+            String ID = TransliteratorIDParser.STVtoID(src.get(), trg.get(), variant);
+            System.out.println("TransliteratorRegistry.findInStaticStore:" +
+                               ID);
+        }
+        Object[] entry = null;
+        if (src.isLocale()) {
+            entry = findInBundle(src, trg, variant, Transliterator.FORWARD);
+        } else if (trg.isLocale()) {
+            entry = findInBundle(trg, src, variant, Transliterator.REVERSE);
+        }
+
+        // If we found an entry, store it in the Hashtable for next
+        // time.
+        if (entry != null) {
+            registerEntry(src.getTop(), trg.getTop(), variant, entry, false);
+        }
+
+        return entry;
+    }
+
+    /**
+     * Attempt to find an entry in a single resource bundle.  This is
+     * a one-sided lookup.  findInStaticStore() performs up to two such
+     * lookups, one for the source, and one for the target.
+     *
+     * Do not perform fallback.  Return 0 on failure.
+     *
+     * On success, create a new Entry object, populate it, and return it.
+     * The caller owns the returned object.
+     */
+    private Object[] findInBundle(Spec specToOpen,
+                                  Spec specToFind,
+                                  String variant,
+                                  int direction) {
+        // assert(specToOpen.isLocale());
+        ResourceBundle res = specToOpen.getBundle();
+
+        if (res == null) {
+            // This means that the bundle's locale does not match
+            // the current level of iteration for the spec.
+            return null;
+        }
+
+        for (int pass=0; pass<2; ++pass) {
+            StringBuffer tag = new StringBuffer();
+            // First try either TransliteratorTo_xxx or
+            // TransliterateFrom_xxx, then try the bidirectional
+            // Transliterate_xxx.  This precedence order is arbitrary
+            // but must be consistent and documented.
+            if (pass == 0) {
+                tag.append(direction == Transliterator.FORWARD ?
+                           "TransliterateTo" : "TransliterateFrom");
+            } else {
+                tag.append("Transliterate");
+            }
+            tag.append(specToFind.get().toUpperCase());
+
+            try {
+                // The Transliterate*_xxx resource is an array of
+                // strings of the format { <v0>, <r0>, ... }.  Each
+                // <vi> is a variant name, and each <ri> is a rule.
+                String[] subres = res.getStringArray(tag.toString());
+
+                // assert(subres != null);
+                // assert(subres.length % 2 == 0);
+                int i = 0;
+                if (variant.length() != 0) {
+                    for (i=0; i<subres.length; i+= 2) {
+                        if (subres[i].equalsIgnoreCase(variant)) {
+                            break;
+                        }
+                    }
+                }
+
+                if (i < subres.length) {
+                    // We have a match, or there is no variant and i == 0.
+                    // We have succeeded in loading a string from the
+                    // locale resources.  Return the rule string which
+                    // will itself become the registry entry.
+
+                    // The direction is always forward for the
+                    // TransliterateTo_xxx and TransliterateFrom_xxx
+                    // items; those are unidirectional forward rules.
+                    // For the bidirectional Transliterate_xxx items,
+                    // the direction is the value passed in to this
+                    // function.
+                    int dir = (pass == 0) ? Transliterator.FORWARD : direction;
+                    return new Object[] { new LocaleEntry(subres[i+1], dir) };
+                }
+
+            } catch (MissingResourceException e) {
+                if (DEBUG) System.out.println("missing resource: " + e);
+            }
+        }
+
+        // If we get here we had a missing resource exception or we
+        // failed to find a desired variant.
+        return null;
+    }
+
+    /**
+     * Convenience method.  Calls 3-arg find().
+     */
+    private Object[] find(String ID) {
+        String[] stv = TransliteratorIDParser.IDtoSTV(ID);
+        return find(stv[0], stv[1], stv[2]);
+    }
+
+    /**
+     * Top-level find method.  Attempt to find a source-target/variant in
+     * either the dynamic or the static (locale resource) store.  Perform
+     * fallback.
+     *
+     * Lookup sequence for ss_SS_SSS-tt_TT_TTT/v:
+     *
+     *   ss_SS_SSS-tt_TT_TTT/v -- in hashtable
+     *   ss_SS_SSS-tt_TT_TTT/v -- in ss_SS_SSS (no fallback)
+     *
+     *     repeat with t = tt_TT_TTT, tt_TT, tt, and tscript
+     *
+     *     ss_SS_SSS-t/*
+     *     ss_SS-t/*
+     *     ss-t/*
+     *     sscript-t/*
+     *
+     * Here * matches the first variant listed.
+     *
+     * Caller does NOT own returned object.  Return 0 on failure.
+     */
+    private Object[] find(String source,
+                          String target,
+                          String variant) {
+
+        Spec src = new Spec(source);
+        Spec trg = new Spec(target);
+        Object[] entry = null;
+
+        if (variant.length() != 0) {
+
+            // Seek exact match in hashtable
+            entry = findInDynamicStore(src, trg, variant);
+            if (entry != null) {
+                return entry;
+            }
+
+            // Seek exact match in locale resources
+            entry = findInStaticStore(src, trg, variant);
+            if (entry != null) {
+                return entry;
+            }
+        }
+
+        for (;;) {
+            src.reset();
+            for (;;) {
+                // Seek match in hashtable
+                entry = findInDynamicStore(src, trg, NO_VARIANT);
+                if (entry != null) {
+                    return entry;
+                }
+
+                // Seek match in locale resources
+                entry = findInStaticStore(src, trg, NO_VARIANT);
+                if (entry != null) {
+                    return entry;
+                }
+                if (!src.hasFallback()) {
+                    break;
+                }
+                src.next();
+            }
+            if (!trg.hasFallback()) {
+                break;
+            }
+            trg.next();
+        }
+
+        return null;
+    }
+
+    /**
+     * Given an Entry object, instantiate it.  Caller owns result.  Return
+     * 0 on failure.
+     *
+     * Return a non-empty aliasReturn value if the ID points to an alias.
+     * We cannot instantiate it ourselves because the alias may contain
+     * filters or compounds, which we do not understand.  Caller should
+     * make aliasReturn empty before calling.
+     *
+     * The entry object is assumed to reside in the dynamic store.  It may be
+     * modified.
+     */
+    private Transliterator instantiateEntry(String ID,
+                                            Object[] entryWrapper,
+                                            StringBuffer aliasReturn) {
+        // We actually modify the entry object in some cases.  If it
+        // is a string, we may partially parse it and turn it into a
+        // more processed precursor.  This makes the next
+        // instantiation faster and allows sharing of immutable
+        // components like the RuleBasedTransliterator.Data objects.
+        // For this reason, the entry object is an Object[] of length
+        // 1.
+
+        for (;;) {
+            Object entry = entryWrapper[0];
+
+            if (entry instanceof RuleBasedTransliterator.Data) {
+                RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data) entry;
+                return new RuleBasedTransliterator(ID, data, null);
+            } else if (entry instanceof Class) {
+                try {
+                    return (Transliterator) ((Class) entry).newInstance();
+                } catch (InstantiationException e) {
+                } catch (IllegalAccessException e2) {}
+                return null;
+            } else if (entry instanceof AliasEntry) {
+                aliasReturn.append(((AliasEntry) entry).alias);
+                return null;
+            } else if (entry instanceof Transliterator.Factory) {
+                return ((Transliterator.Factory) entry).getInstance(ID);
+            } else if (entry instanceof CompoundRBTEntry) {
+                return ((CompoundRBTEntry) entry).getInstance();
+            } else if (entry instanceof Transliterator) {
+                return (Transliterator) entry;
+            }
+
+            // At this point entry type must be either RULES_FORWARD or
+            // RULES_REVERSE.  We process the rule data into a
+            // TransliteratorRuleData object, and possibly also into an
+            // .id header and/or footer.  Then we modify the registry with
+            // the parsed data and retry.
+
+            TransliteratorParser parser = new TransliteratorParser();
+
+            try {
+               
+                ResourceEntry re = (ResourceEntry) entry;
+                parser.parse(re.resource, re.direction);
+                
+            } catch (ClassCastException e) {
+                // If we pull a rule from a locale resource bundle it will
+                // be a LocaleEntry.
+                LocaleEntry le = (LocaleEntry) entry;
+                parser.parse(le.rule, le.direction);
+            }
+
+            // Reset entry to something that we process at the
+            // top of the loop, then loop back to the top.  As long as we
+            // do this, we only loop through twice at most.
+            // NOTE: The logic here matches that in
+            // Transliterator.createFromRules().
+            if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 0) {
+                // No idBlock, no data -- this is just an
+                // alias for Null
+                entryWrapper[0] = new AliasEntry(NullTransliterator._ID);
+            }
+            else if (parser.idBlockVector.size() == 0 && parser.dataVector.size() == 1) {
+                // No idBlock, data != 0 -- this is an
+                // ordinary RBT_DATA
+                entryWrapper[0] = parser.dataVector.get(0);
+            }
+            else if (parser.idBlockVector.size() == 1 && parser.dataVector.size() == 0) {
+                // idBlock, no data -- this is an alias.  The ID has
+                // been munged from reverse into forward mode, if
+                // necessary, so instantiate the ID in the forward
+                // direction.
+                if (parser.compoundFilter != null)
+                    entryWrapper[0] = new AliasEntry(parser.compoundFilter.toPattern(false) + ";"
+                            + (String)parser.idBlockVector.get(0));
+                else
+                    entryWrapper[0] = new AliasEntry((String)parser.idBlockVector.get(0));
+            }
+            else {
+                entryWrapper[0] = new CompoundRBTEntry(ID, parser.idBlockVector, parser.dataVector,
+                        parser.compoundFilter);
+            }
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UCharacterIterator.java b/src/com/ibm/icu/text/UCharacterIterator.java
new file mode 100644
index 0000000..5408532
--- /dev/null
+++ b/src/com/ibm/icu/text/UCharacterIterator.java
@@ -0,0 +1,409 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+
+import java.text.CharacterIterator;
+
+import com.ibm.icu.impl.CharacterIteratorWrapper;
+import com.ibm.icu.impl.ReplaceableUCharacterIterator;
+import com.ibm.icu.impl.UCharArrayIterator;
+import com.ibm.icu.impl.UCharacterIteratorWrapper;
+import com.ibm.icu.impl.UCharacterProperty;
+
+
+/**
+ * Abstract class that defines an API for iteration on text objects.This is an 
+ * interface for forward and backward iteration and random access into a text 
+ * object. Forward iteration is done with post-increment and backward iteration 
+ * is done with pre-decrement semantics, while the 
+ * <code>java.text.CharacterIterator</code> interface methods provided forward 
+ * iteration with "pre-increment" and backward iteration with pre-decrement 
+ * semantics. This API is more efficient for forward iteration over code points.
+ * The other major difference is that this API can do both code unit and code point 
+ * iteration, <code>java.text.CharacterIterator</code> can only iterate over 
+ * code units and is limited to BMP (0 - 0xFFFF)
+ * @author Ram
+ * @stable ICU 2.4
+ */
+public abstract class UCharacterIterator 
+                      implements Cloneable,UForwardCharacterIterator {
+
+    /**
+     * Protected default constructor for the subclasses
+     * @stable ICU 2.4
+     */
+    protected UCharacterIterator(){
+    }
+    
+    // static final methods ----------------------------------------------------
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * <code>Replaceable</code> object.
+     * @param source a valid source as a <code>Replaceable</code> object
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(Replaceable source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source string.
+     * @param source a string
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(String source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source character array.
+     * @param source an array of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(char[] source){
+        return getInstance(source,0,source.length);
+    }
+    
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source character array.
+     * @param source an array of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(char[] source, int start, int limit){
+        return new UCharArrayIterator(source,start,limit);
+    }
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * source StringBuffer.
+     * @param source an string buffer of UTF-16 code units
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */
+    public static final UCharacterIterator getInstance(StringBuffer source){
+        return new ReplaceableUCharacterIterator(source);
+    }
+
+    /**
+     * Returns a <code>UCharacterIterator</code> object given a 
+     * CharacterIterator.
+     * @param source a valid CharacterIterator object.
+     * @return UCharacterIterator object
+     * @exception IllegalArgumentException if the argument is null
+     * @stable ICU 2.4
+     */    
+    public static final UCharacterIterator getInstance(CharacterIterator source){
+        return new CharacterIteratorWrapper(source);
+    }
+       
+    // public methods ----------------------------------------------------------
+    /**
+     * Returns a <code>java.text.CharacterIterator</code> object for
+     * the underlying text of this iterator.  The returned iterator is
+     * independent of this iterator.
+     * @return java.text.CharacterIterator object
+     * @stable ICU 2.4 
+     */
+    public CharacterIterator getCharacterIterator(){
+        return new UCharacterIteratorWrapper(this);
+    }    
+   
+    /**
+     * Returns the code unit at the current index.  If index is out
+     * of range, returns DONE.  Index is not changed.
+     * @return current code unit
+     * @stable ICU 2.4
+     */
+    public abstract int current();
+    
+    /**
+     * Returns the codepoint at the current index.
+     * If the current index is invalid, DONE is returned.
+     * If the current index points to a lead surrogate, and there is a following
+     * trail surrogate, then the code point is returned.  Otherwise, the code
+     * unit at index is returned.  Index is not changed. 
+     * @return current codepoint
+     * @stable ICU 2.4
+     */
+    public int currentCodePoint(){
+        int ch = current();
+        if(UTF16.isLeadSurrogate((char)ch)){
+            // advance the index to get the
+            // next code point
+            next();
+            // due to post increment semantics
+            // current() after next() actually
+            // returns the char we want
+            int ch2 = current();
+            // current should never change
+            // the current index so back off
+            previous();
+            
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                // we found a surrogate pair 
+                // return the codepoint
+                return UCharacterProperty.getRawSupplementary(
+                                                          (char)ch,(char)ch2
+                                                             );
+            }
+        }
+        return ch;
+    }
+    
+    /**
+     * Returns the length of the text
+     * @return length of the text
+     * @stable ICU 2.4
+     */
+    public abstract int getLength();
+
+    
+    /**
+     * Gets the current index in text.
+     * @return current index in text.
+     * @stable ICU 2.4
+     */
+    public abstract int getIndex();
+
+
+    /**
+     * Returns the UTF16 code unit at index, and increments to the next
+     * code unit (post-increment semantics).  If index is out of
+     * range, DONE is returned, and the iterator is reset to the limit
+     * of the text.
+     * @return the next UTF16 code unit, or DONE if the index is at the limit
+     *         of the text.
+     * @stable ICU 2.4  
+     */
+    public abstract int next();
+
+    /**
+     * Returns the code point at index, and increments to the next code
+     * point (post-increment semantics).  If index does not point to a
+     * valid surrogate pair, the behavior is the same as
+     * <code>next()<code>.  Otherwise the iterator is incremented past
+     * the surrogate pair, and the code point represented by the pair
+     * is returned.
+     * @return the next codepoint in text, or DONE if the index is at
+     *         the limit of the text.
+     * @stable ICU 2.4  
+     */
+    public int nextCodePoint(){
+        int ch1 = next();
+        if(UTF16.isLeadSurrogate((char)ch1)){
+            int ch2 = next();
+            if(UTF16.isTrailSurrogate((char)ch2)){
+                return UCharacterProperty.getRawSupplementary((char)ch1,
+                                                              (char)ch2);
+            }else if (ch2 != DONE) {
+                // unmatched surrogate so back out
+                previous();
+            }
+        }
+        return ch1;
+    }
+
+    /**
+     * Decrement to the position of the previous code unit in the
+     * text, and return it (pre-decrement semantics).  If the
+     * resulting index is less than 0, the index is reset to 0 and
+     * DONE is returned.
+     * @return the previous code unit in the text, or DONE if the new
+     *         index is before the start of the text.
+     * @stable ICU 2.4  
+     */
+    public abstract int previous();
+
+    
+    /**
+     * Retreat to the start of the previous code point in the text,
+     * and return it (pre-decrement semantics).  If the index is not
+     * preceeded by a valid surrogate pair, the behavior is the same
+     * as <code>previous()</code>.  Otherwise the iterator is
+     * decremented to the start of the surrogate pair, and the code
+     * point represented by the pair is returned.
+     * @return the previous code point in the text, or DONE if the new
+     *         index is before the start of the text.
+     * @stable ICU 2.4  
+     */
+    public int previousCodePoint(){
+        int ch1 = previous();
+        if(UTF16.isTrailSurrogate((char)ch1)){
+            int ch2 = previous();
+            if(UTF16.isLeadSurrogate((char)ch2)){
+                return UCharacterProperty.getRawSupplementary((char)ch2,
+                                                              (char)ch1);
+            }else if (ch2 != DONE) {
+                //unmatched trail surrogate so back out
+                next();
+            }   
+        }
+        return ch1;
+    }
+
+    /**
+     * Sets the index to the specified index in the text.
+     * @param index the index within the text. 
+     * @exception IndexOutOfBoundsException is thrown if an invalid index is 
+     *            supplied
+     * @stable ICU 2.4
+     */
+    public abstract void setIndex(int index);
+
+    /**
+     * Sets the current index to the limit.
+     * @stable ICU 2.4
+     */
+    public void setToLimit() {
+        setIndex(getLength());
+    }
+    
+    /**
+     * Sets the current index to the start.
+     * @stable ICU 2.4
+     */
+    public void setToStart() {
+        setIndex(0);
+    }
+
+    /**
+     * Fills the buffer with the underlying text storage of the iterator
+     * If the buffer capacity is not enough a exception is thrown. The capacity
+     * of the fill in buffer should at least be equal to length of text in the 
+     * iterator obtained by calling <code>getLength()</code).
+     * <b>Usage:</b>
+     * 
+     * <code>
+     * <pre>
+     *         UChacterIterator iter = new UCharacterIterator.getInstance(text);
+     *         char[] buf = new char[iter.getLength()];
+     *         iter.getText(buf);
+     *         
+     *         OR
+     *         char[] buf= new char[1];
+     *         int len = 0;
+     *         for(;;){
+     *             try{
+     *                 len = iter.getText(buf);
+     *                 break;
+     *             }catch(IndexOutOfBoundsException e){
+     *                 buf = new char[iter.getLength()];
+     *             }
+     *         }
+     * </pre>
+     * </code>
+     *             
+     * @param fillIn an array of chars to fill with the underlying UTF-16 code 
+     *         units.
+     * @param offset the position within the array to start putting the data.
+     * @return the number of code units added to fillIn, as a convenience
+     * @exception IndexOutOfBounds exception if there is not enough
+     *            room after offset in the array, or if offset < 0.
+     * @stable ICU 2.4  
+     */
+    public abstract int getText(char[] fillIn, int offset); 
+
+    /**
+     * Convenience override for <code>getText(char[], int)>/code> that provides
+     * an offset of 0.
+     * @param fillIn an array of chars to fill with the underlying UTF-16 code 
+     *         units.
+     * @return the number of code units added to fillIn, as a convenience
+     * @exception IndexOutOfBounds exception if there is not enough
+     *            room in the array.
+     * @stable ICU 2.4  
+     */
+    public final int getText(char[] fillIn) {
+        return getText(fillIn, 0);
+    }
+         
+    /**
+     * Convenience method for returning the underlying text storage as as string
+     * @return the underlying text storage in the iterator as a string
+     * @stable ICU 2.4
+     */
+    public String getText() {
+        char[] text = new char[getLength()];
+        getText(text);
+        return new String(text);
+    }
+       
+    /**
+     * Moves the current position by the number of code units
+     * specified, either forward or backward depending on the sign
+     * of delta (positive or negative respectively).  If the resulting
+     * index would be less than zero, the index is set to zero, and if
+     * the resulting index would be greater than limit, the index is
+     * set to limit.
+     *
+     * @param delta the number of code units to move the current
+     *              index.
+     * @return the new index.
+     * @exception IndexOutOfBoundsException is thrown if an invalid index is 
+     *            supplied 
+     * @stable ICU 2.4 
+     * 
+     */
+    public int moveIndex(int delta) {
+        int x = Math.max(0, Math.min(getIndex() + delta, getLength()));
+        setIndex(x);
+        return x;
+    }
+
+    /**
+     * Moves the current position by the number of code points
+     * specified, either forward or backward depending on the sign of
+     * delta (positive or negative respectively). If the current index
+     * is at a trail surrogate then the first adjustment is by code
+     * unit, and the remaining adjustments are by code points.  If the
+     * resulting index would be less than zero, the index is set to
+     * zero, and if the resulting index would be greater than limit,
+     * the index is set to limit.
+     * @param delta the number of code units to move the current index.
+     * @return the new index  
+     * @exception IndexOutOfBoundsException is thrown if an invalid delta is 
+     *            supplied
+     * @stable ICU 2.4
+     */
+    public int moveCodePointIndex(int delta){
+        if(delta>0){
+            while(delta>0 && nextCodePoint() != DONE){delta--;}
+        }else{
+            while(delta<0 && previousCodePoint() != DONE){delta++;}
+        }
+        if(delta!=0){
+            throw new IndexOutOfBoundsException();
+        }
+          
+        return getIndex();
+    }
+
+    /**
+     * Creates a copy of this iterator, independent from other iterators.
+     * If it is not possible to clone the iterator, returns null.
+     * @return copy of this iterator
+     * @stable ICU 2.4
+     */
+    public Object clone() throws CloneNotSupportedException{
+        return super.clone();
+    }   
+    
+}
+
diff --git a/src/com/ibm/icu/text/UFormat.java b/src/com/ibm/icu/text/UFormat.java
new file mode 100644
index 0000000..e730b8d
--- /dev/null
+++ b/src/com/ibm/icu/text/UFormat.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.Format;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * An abstract class that extends {@link java.text.Format} to provide
+ * additional ICU protocol, specifically, the <tt>getLocale()</tt>
+ * API.  All ICU format classes are subclasses of this class.
+ *
+ * @see com.ibm.icu.util.ULocale
+ * @author weiv
+ * @author Alan Liu
+ * @draft ICU 2.8 (retain)
+ * @provisional This API might change or be removed in a future release.
+ */
+public abstract class UFormat extends Format {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -4964390515840164416L;
+
+    /**
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public UFormat() {}
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+}
diff --git a/src/com/ibm/icu/text/UForwardCharacterIterator.java b/src/com/ibm/icu/text/UForwardCharacterIterator.java
new file mode 100644
index 0000000..26ae00f
--- /dev/null
+++ b/src/com/ibm/icu/text/UForwardCharacterIterator.java
@@ -0,0 +1,91 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * Interface that defines an API for forward-only iteration
+ * on text objects.
+ * This is a minimal interface for iteration without random access
+ * or backwards iteration. It is especially useful for wrapping
+ * streams with converters into an object for collation or
+ * normalization.
+ *
+ * <p>Characters can be accessed in two ways: as code units or as
+ * code points.
+ * Unicode code points are 21-bit integers and are the scalar values
+ * of Unicode characters. ICU uses the type <code>int</code> for them.
+ * Unicode code units are the storage units of a given
+ * Unicode/UCS Transformation Format (a character encoding scheme).
+ * With UTF-16, all code points can be represented with either one
+ * or two code units ("surrogates").
+ * String storage is typically based on code units, while properties
+ * of characters are typically determined using code point values.
+ * Some processes may be designed to work with sequences of code units,
+ * or it may be known that all characters that are important to an
+ * algorithm can be represented with single code units.
+ * Other processes will need to use the code point access functions.</p>
+ *
+ * <p>ForwardCharacterIterator provides next() to access
+ * a code unit and advance an internal position into the text object,
+ * similar to a <code>return text[position++]</code>.<br>
+ * It provides nextCodePoint() to access a code point and advance an internal
+ * position.</p>
+ *
+ * <p>nextCodePoint() assumes that the current position is that of
+ * the beginning of a code point, i.e., of its first code unit.
+ * After nextCodePoint(), this will be true again.
+ * In general, access to code units and code points in the same
+ * iteration loop should not be mixed. In UTF-16, if the current position
+ * is on a second code unit (Low Surrogate), then only that code unit
+ * is returned even by nextCodePoint().</p>
+ *
+ * Usage:
+ * <code> 
+ *  public void function1(UForwardCharacterIterator it) {
+ *     int c;
+ *     while((c=it.next())!=UForwardCharacterIterator.DONE) {
+ *         // use c
+ *      }
+ *  }
+ * </code>
+ * </p>
+ * @stable ICU 2.4
+ *
+ */
+
+public interface UForwardCharacterIterator {
+      
+    /**
+     * Indicator that we have reached the ends of the UTF16 text.
+     * @stable ICU 2.4
+     */
+    public static final int DONE = -1;
+    /**
+     * Returns the UTF16 code unit at index, and increments to the next
+     * code unit (post-increment semantics).  If index is out of
+     * range, DONE is returned, and the iterator is reset to the limit
+     * of the text.
+     * @return the next UTF16 code unit, or DONE if the index is at the limit
+     *         of the text.
+     * @stable ICU 2.4  
+     */
+    public int next();
+
+    /**
+     * Returns the code point at index, and increments to the next code
+     * point (post-increment semantics).  If index does not point to a
+     * valid surrogate pair, the behavior is the same as
+     * <code>next()<code>.  Otherwise the iterator is incremented past
+     * the surrogate pair, and the code point represented by the pair
+     * is returned.
+     * @return the next codepoint in text, or DONE if the index is at
+     *         the limit of the text.
+     * @stable ICU 2.4  
+     */
+    public int nextCodePoint();
+
+}
diff --git a/src/com/ibm/icu/text/UTF16.java b/src/com/ibm/icu/text/UTF16.java
new file mode 100644
index 0000000..b1fd699
--- /dev/null
+++ b/src/com/ibm/icu/text/UTF16.java
@@ -0,0 +1,2858 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.NormalizerImpl;
+
+/**
+ * <p>
+ * Standalone utility class providing UTF16 character conversions and indexing conversions.
+ * </p>
+ * <p>
+ * Code that uses strings alone rarely need modification. By design, UTF-16 does not allow overlap,
+ * so searching for strings is a safe operation. Similarly, concatenation is always safe.
+ * Substringing is safe if the start and end are both on UTF-32 boundaries. In normal code, the
+ * values for start and end are on those boundaries, since they arose from operations like
+ * searching. If not, the nearest UTF-32 boundaries can be determined using <code>bounds()</code>.
+ * </p>
+ * <strong>Examples:</strong>
+ * <p>
+ * The following examples illustrate use of some of these methods.
+ * 
+ * <pre>
+ * // iteration forwards: Original
+ * for (int i = 0; i &lt; s.length(); ++i) {
+ *     char ch = s.charAt(i);
+ *     doSomethingWith(ch);
+ * }
+ * 
+ * // iteration forwards: Changes for UTF-32
+ * int ch;
+ * for (int i = 0; i &lt; s.length(); i += UTF16.getCharCount(ch)) {
+ *     ch = UTF16.charAt(s, i);
+ *     doSomethingWith(ch);
+ * }
+ * 
+ * // iteration backwards: Original
+ * for (int i = s.length() - 1; i &gt;= 0; --i) {
+ *     char ch = s.charAt(i);
+ *     doSomethingWith(ch);
+ * }
+ * 
+ * // iteration backwards: Changes for UTF-32
+ * int ch;
+ * for (int i = s.length() - 1; i &gt; 0; i -= UTF16.getCharCount(ch)) {
+ *     ch = UTF16.charAt(s, i);
+ *     doSomethingWith(ch);
+ * }
+ * </pre>
+ * 
+ * <strong>Notes:</strong>
+ * <ul>
+ * <li> <strong>Naming:</strong> For clarity, High and Low surrogates are called <code>Lead</code>
+ * and <code>Trail</code> in the API, which gives a better sense of their ordering in a string.
+ * <code>offset16</code> and <code>offset32</code> are used to distinguish offsets to UTF-16
+ * boundaries vs offsets to UTF-32 boundaries. <code>int char32</code> is used to contain UTF-32
+ * characters, as opposed to <code>char16</code>, which is a UTF-16 code unit. </li>
+ * <li> <strong>Roundtripping Offsets:</strong> You can always roundtrip from a UTF-32 offset to a
+ * UTF-16 offset and back. Because of the difference in structure, you can roundtrip from a UTF-16
+ * offset to a UTF-32 offset and back if and only if <code>bounds(string, offset16) != TRAIL</code>.
+ * </li>
+ * <li> <strong>Exceptions:</strong> The error checking will throw an exception if indices are out
+ * of bounds. Other than than that, all methods will behave reasonably, even if unmatched surrogates
+ * or out-of-bounds UTF-32 values are present. <code>UCharacter.isLegal()</code> can be used to
+ * check for validity if desired. </li>
+ * <li> <strong>Unmatched Surrogates:</strong> If the string contains unmatched surrogates, then
+ * these are counted as one UTF-32 value. This matches their iteration behavior, which is vital. It
+ * also matches common display practice as missing glyphs (see the Unicode Standard Section 5.4,
+ * 5.5). </li>
+ * <li> <strong>Optimization:</strong> The method implementations may need optimization if the
+ * compiler doesn't fold static final methods. Since surrogate pairs will form an exceeding small
+ * percentage of all the text in the world, the singleton case should always be optimized for. </li>
+ * </ul>
+ * 
+ * @author Mark Davis, with help from Markus Scherer
+ * @stable ICU 2.1
+ */
+
+public final class UTF16 {
+    // public variables ---------------------------------------------------
+
+    /**
+     * Value returned in <code><a href="#bounds(java.lang.String, int)">
+     * bounds()</a></code>.
+     * These values are chosen specifically so that it actually represents the position of the
+     * character [offset16 - (value >> 2), offset16 + (value & 3)]
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int SINGLE_CHAR_BOUNDARY = 1, LEAD_SURROGATE_BOUNDARY = 2,
+            TRAIL_SURROGATE_BOUNDARY = 5;
+
+    /**
+     * The lowest Unicode code point value.
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int CODEPOINT_MIN_VALUE = 0;
+
+    /**
+     * The highest Unicode code point value (scalar value) according to the Unicode Standard.
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int CODEPOINT_MAX_VALUE = 0x10ffff;
+
+    /**
+     * The minimum value for Supplementary code points
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int SUPPLEMENTARY_MIN_VALUE = 0x10000;
+
+    /**
+     * Lead surrogate minimum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int LEAD_SURROGATE_MIN_VALUE = 0xD800;
+
+    /**
+     * Trail surrogate minimum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int TRAIL_SURROGATE_MIN_VALUE = 0xDC00;
+
+    /**
+     * Lead surrogate maximum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int LEAD_SURROGATE_MAX_VALUE = 0xDBFF;
+
+    /**
+     * Trail surrogate maximum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int TRAIL_SURROGATE_MAX_VALUE = 0xDFFF;
+
+    /**
+     * Surrogate minimum value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int SURROGATE_MIN_VALUE = LEAD_SURROGATE_MIN_VALUE;
+
+    /**
+     * Maximum surrogate value
+     * 
+     * @stable ICU 2.1
+     */
+    public static final int SURROGATE_MAX_VALUE = TRAIL_SURROGATE_MAX_VALUE;
+
+    /**
+     * Lead surrogate bitmask
+     */
+    private static final int LEAD_SURROGATE_BITMASK = 0xFFFFFC00;
+
+    /**
+     * Trail surrogate bitmask
+     */
+    private static final int TRAIL_SURROGATE_BITMASK = 0xFFFFFC00;
+
+    /**
+     * Surrogate bitmask
+     */
+    private static final int SURROGATE_BITMASK = 0xFFFFF800;
+
+    /**
+     * Lead surrogate bits
+     */
+    private static final int LEAD_SURROGATE_BITS = 0xD800;
+
+    /**
+     * Trail surrogate bits
+     */
+    private static final int TRAIL_SURROGATE_BITS = 0xDC00;
+
+    /**
+     * Surrogate bits
+     */
+    private static final int SURROGATE_BITS = 0xD800;
+
+    // constructor --------------------------------------------------------
+
+    // /CLOVER:OFF
+    /**
+     * Prevent instance from being created.
+     */
+    private UTF16() {
+    }
+
+    // /CLOVER:ON
+    // public method ------------------------------------------------------
+
+    /**
+     * Extract a single UTF-32 value from a string. Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">
+     * UCharacter.isLegal()</a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            array of UTF-16 chars
+     * @param offset16
+     *            UTF-16 offset to the start of the character.
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int charAt(String source, int offset16) {
+        char single = source.charAt(offset16);
+        if (single < LEAD_SURROGATE_MIN_VALUE) {
+            return single;
+        }
+        return _charAt(source, offset16, single);
+    }
+
+    private static int _charAt(String source, int offset16, char single) {
+        if (single > TRAIL_SURROGATE_MAX_VALUE) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            ++offset16;
+            if (source.length() != offset16) {
+                char trail = source.charAt(offset16);
+                if (trail >= TRAIL_SURROGATE_MIN_VALUE && trail <= TRAIL_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(single, trail);
+                }
+            }
+        } else {
+            --offset16;
+            if (offset16 >= 0) {
+                // single is a trail surrogate so
+                char lead = source.charAt(offset16);
+                if (lead >= LEAD_SURROGATE_MIN_VALUE && lead <= LEAD_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(lead, single);
+                }
+            }
+        }
+        return single; // return unmatched surrogate
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Extract a single UTF-32 value from a string. Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">
+     * UCharacter.isLegal()</a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            array of UTF-16 chars
+     * @param offset16
+     *            UTF-16 offset to the start of the character.
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int charAt(CharSequence source, int offset16) {
+        char single = source.charAt(offset16);
+        if (single < UTF16.LEAD_SURROGATE_MIN_VALUE) {
+            return single;
+        }
+        return _charAt(source, offset16, single);
+    }
+
+    private static int _charAt(CharSequence source, int offset16, char single) {
+        if (single > UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+
+        if (single <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+            ++offset16;
+            if (source.length() != offset16) {
+                char trail = source.charAt(offset16);
+                if (trail >= UTF16.TRAIL_SURROGATE_MIN_VALUE
+                        && trail <= UTF16.TRAIL_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(single, trail);
+                }
+            }
+        } else {
+            --offset16;
+            if (offset16 >= 0) {
+                // single is a trail surrogate so
+                char lead = source.charAt(offset16);
+                if (lead >= UTF16.LEAD_SURROGATE_MIN_VALUE
+                        && lead <= UTF16.LEAD_SURROGATE_MAX_VALUE) {
+                    return UCharacterProperty.getRawSupplementary(lead, single);
+                }
+            }
+        }
+        return single; // return unmatched surrogate
+    }
+
+//#endif
+
+    /**
+     * Extract a single UTF-32 value from a string. Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">UCharacter.isLegal()
+     * </a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            UTF-16 chars string buffer
+     * @param offset16
+     *            UTF-16 offset to the start of the character.
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int charAt(StringBuffer source, int offset16) {
+        if (offset16 < 0 || offset16 >= source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        char single = source.charAt(offset16);
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            ++offset16;
+            if (source.length() != offset16) {
+                char trail = source.charAt(offset16);
+                if (isTrailSurrogate(trail))
+                    return UCharacterProperty.getRawSupplementary(single, trail);
+            }
+        } else {
+            --offset16;
+            if (offset16 >= 0) {
+                // single is a trail surrogate so
+                char lead = source.charAt(offset16);
+                if (isLeadSurrogate(lead)) {
+                    return UCharacterProperty.getRawSupplementary(lead, single);
+                }
+            }
+        }
+        return single; // return unmatched surrogate
+    }
+
+    /**
+     * Extract a single UTF-32 value from a substring. Used when iterating forwards or backwards
+     * (with <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">UCharacter.isLegal()
+     * </a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            array of UTF-16 chars
+     * @param start
+     *            offset to substring in the source array for analyzing
+     * @param limit
+     *            offset to substring in the source array for analyzing
+     * @param offset16
+     *            UTF-16 offset relative to start
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is not within the range of start and limit.
+     * @stable ICU 2.1
+     */
+    public static int charAt(char source[], int start, int limit, int offset16) {
+        offset16 += start;
+        if (offset16 < start || offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+
+        char single = source[offset16];
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            offset16++;
+            if (offset16 >= limit) {
+                return single;
+            }
+            char trail = source[offset16];
+            if (isTrailSurrogate(trail)) {
+                return UCharacterProperty.getRawSupplementary(single, trail);
+            }
+        } else { // isTrailSurrogate(single), so
+            if (offset16 == start) {
+                return single;
+            }
+            offset16--;
+            char lead = source[offset16];
+            if (isLeadSurrogate(lead))
+                return UCharacterProperty.getRawSupplementary(lead, single);
+        }
+        return single; // return unmatched surrogate
+    }
+
+    /**
+     * Extract a single UTF-32 value from a string. Used when iterating forwards or backwards (with
+     * <code>UTF16.getCharCount()</code>, as well as random access. If a validity check is
+     * required, use <code><a href="../lang/UCharacter.html#isLegal(char)">UCharacter.isLegal()
+     * </a></code>
+     * on the return value. If the char retrieved is part of a surrogate pair, its supplementary
+     * character will be returned. If a complete supplementary character is not found the incomplete
+     * character will be returned
+     * 
+     * @param source
+     *            UTF-16 chars string buffer
+     * @param offset16
+     *            UTF-16 offset to the start of the character.
+     * @return UTF-32 value for the UTF-32 value that contains the char at offset16. The boundaries
+     *         of that codepoint are the same as in <code>bounds32()</code>.
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int charAt(Replaceable source, int offset16) {
+        if (offset16 < 0 || offset16 >= source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        char single = source.charAt(offset16);
+        if (!isSurrogate(single)) {
+            return single;
+        }
+
+        // Convert the UTF-16 surrogate pair if necessary.
+        // For simplicity in usage, and because the frequency of pairs is
+        // low, look both directions.
+
+        if (single <= LEAD_SURROGATE_MAX_VALUE) {
+            ++offset16;
+            if (source.length() != offset16) {
+                char trail = source.charAt(offset16);
+                if (isTrailSurrogate(trail))
+                    return UCharacterProperty.getRawSupplementary(single, trail);
+            }
+        } else {
+            --offset16;
+            if (offset16 >= 0) {
+                // single is a trail surrogate so
+                char lead = source.charAt(offset16);
+                if (isLeadSurrogate(lead)) {
+                    return UCharacterProperty.getRawSupplementary(lead, single);
+                }
+            }
+        }
+        return single; // return unmatched surrogate
+    }
+
+    /**
+     * Determines how many chars this char32 requires. If a validity check is required, use <code>
+     * <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code>
+     * on char32 before calling.
+     * 
+     * @param char32
+     *            the input codepoint.
+     * @return 2 if is in supplementary space, otherwise 1.
+     * @stable ICU 2.1
+     */
+    public static int getCharCount(int char32) {
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            return 1;
+        }
+        return 2;
+    }
+
+    /**
+     * Returns the type of the boundaries around the char at offset16. Used for random access.
+     * 
+     * @param source
+     *            text to analyse
+     * @param offset16
+     *            UTF-16 offset
+     * @return
+     *            <ul>
+     *            <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are [offset16, offset16+1]
+     *            <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at offset16; the bounds
+     *            are [offset16, offset16 + 2]
+     *            <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at offset16 - 1; the
+     *            bounds are [offset16 - 1, offset16 + 1]
+     *            </ul>
+     *            For bit-twiddlers, the return values for these are chosen so that the boundaries
+     *            can be gotten by: [offset16 - (value >> 2), offset16 + (value & 3)].
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int bounds(String source, int offset16) {
+        char ch = source.charAt(offset16);
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) {
+                if (++offset16 < source.length() && isTrailSurrogate(source.charAt(offset16))) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } else {
+                // isTrailSurrogate(ch), so
+                --offset16;
+                if (offset16 >= 0 && isLeadSurrogate(source.charAt(offset16))) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;
+    }
+
+    /**
+     * Returns the type of the boundaries around the char at offset16. Used for random access.
+     * 
+     * @param source
+     *            string buffer to analyse
+     * @param offset16
+     *            UTF16 offset
+     * @return
+     *            <ul>
+     *            <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are [offset16, offset16 + 1]
+     *            <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at offset16; the bounds
+     *            are [offset16, offset16 + 2]
+     *            <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at offset16 - 1; the
+     *            bounds are [offset16 - 1, offset16 + 1]
+     *            </ul>
+     *            For bit-twiddlers, the return values for these are chosen so that the boundaries
+     *            can be gotten by: [offset16 - (value >> 2), offset16 + (value & 3)].
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int bounds(StringBuffer source, int offset16) {
+        char ch = source.charAt(offset16);
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) {
+                if (++offset16 < source.length() && isTrailSurrogate(source.charAt(offset16))) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } else {
+                // isTrailSurrogate(ch), so
+                --offset16;
+                if (offset16 >= 0 && isLeadSurrogate(source.charAt(offset16))) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;
+    }
+
+    /**
+     * Returns the type of the boundaries around the char at offset16. Used for random access. Note
+     * that the boundaries are determined with respect to the subarray, hence the char array
+     * {0xD800, 0xDC00} has the result SINGLE_CHAR_BOUNDARY for start = offset16 = 0 and limit = 1.
+     * 
+     * @param source
+     *            char array to analyse
+     * @param start
+     *            offset to substring in the source array for analyzing
+     * @param limit
+     *            offset to substring in the source array for analyzing
+     * @param offset16
+     *            UTF16 offset relative to start
+     * @return
+     *            <ul>
+     *            <li> SINGLE_CHAR_BOUNDARY : a single char; the bounds are
+     *            <li> LEAD_SURROGATE_BOUNDARY : a surrogate pair starting at offset16; the bounds
+     *            are [offset16, offset16 + 2]
+     *            <li> TRAIL_SURROGATE_BOUNDARY : a surrogate pair starting at offset16 - 1; the
+     *            bounds are [offset16 - 1, offset16 + 1]
+     *            </ul>
+     *            For bit-twiddlers, the boundary values for these are chosen so that the boundaries
+     *            can be gotten by: [offset16 - (boundvalue >> 2), offset16 + (boundvalue & 3)].
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is not within the range of start and limit.
+     * @stable ICU 2.1
+     */
+    public static int bounds(char source[], int start, int limit, int offset16) {
+        offset16 += start;
+        if (offset16 < start || offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+        char ch = source[offset16];
+        if (isSurrogate(ch)) {
+            if (isLeadSurrogate(ch)) {
+                ++offset16;
+                if (offset16 < limit && isTrailSurrogate(source[offset16])) {
+                    return LEAD_SURROGATE_BOUNDARY;
+                }
+            } else { // isTrailSurrogate(ch), so
+                --offset16;
+                if (offset16 >= start && isLeadSurrogate(source[offset16])) {
+                    return TRAIL_SURROGATE_BOUNDARY;
+                }
+            }
+        }
+        return SINGLE_CHAR_BOUNDARY;
+    }
+
+    /**
+     * Determines whether the code value is a surrogate.
+     * 
+     * @param char16
+     *            the input character.
+     * @return true iff the input character is a surrogate.
+     * @stable ICU 2.1
+     */
+    public static boolean isSurrogate(char char16) {
+        return (char16 & SURROGATE_BITMASK) == SURROGATE_BITS;
+    }
+
+    /**
+     * Determines whether the character is a trail surrogate.
+     * 
+     * @param char16
+     *            the input character.
+     * @return true iff the input character is a trail surrogate.
+     * @stable ICU 2.1
+     */
+    public static boolean isTrailSurrogate(char char16) {
+        return (char16 & TRAIL_SURROGATE_BITMASK) == TRAIL_SURROGATE_BITS;
+    }
+
+    /**
+     * Determines whether the character is a lead surrogate.
+     * 
+     * @param char16
+     *            the input character.
+     * @return true iff the input character is a lead surrogate
+     * @stable ICU 2.1
+     */
+    public static boolean isLeadSurrogate(char char16) {
+        return (char16 & LEAD_SURROGATE_BITMASK) == LEAD_SURROGATE_BITS;
+    }
+
+    /**
+     * Returns the lead surrogate. If a validity check is required, use
+     * <code><a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on char32
+     * before calling.
+     * 
+     * @param char32
+     *            the input character.
+     * @return lead surrogate if the getCharCount(ch) is 2; <br>
+     *         and 0 otherwise (note: 0 is not a valid lead surrogate).
+     * @stable ICU 2.1
+     */
+    public static char getLeadSurrogate(int char32) {
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+            return (char) (LEAD_SURROGATE_OFFSET_ + (char32 >> LEAD_SURROGATE_SHIFT_));
+        }
+        return 0;
+    }
+
+    /**
+     * Returns the trail surrogate. If a validity check is required, use
+     * <code><a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on char32
+     * before calling.
+     * 
+     * @param char32
+     *            the input character.
+     * @return the trail surrogate if the getCharCount(ch) is 2; <br>
+     *         otherwise the character itself
+     * @stable ICU 2.1
+     */
+    public static char getTrailSurrogate(int char32) {
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+            return (char) (TRAIL_SURROGATE_MIN_VALUE + (char32 & TRAIL_SURROGATE_MASK_));
+        }
+        return (char) char32;
+    }
+
+    /**
+     * Convenience method corresponding to String.valueOf(char). Returns a one or two char string
+     * containing the UTF-32 value in UTF16 format. If a validity check is required, use <a
+     * href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on char32 before calling.
+     * 
+     * @param char32
+     *            the input character.
+     * @return string value of char32 in UTF16 format
+     * @exception IllegalArgumentException
+     *                thrown if char32 is a invalid codepoint.
+     * @stable ICU 2.1
+     */
+    public static String valueOf(int char32) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Illegal codepoint");
+        }
+        return toString(char32);
+    }
+
+    /**
+     * Convenience method corresponding to String.valueOf(codepoint at offset16). Returns a one or
+     * two char string containing the UTF-32 value in UTF16 format. If offset16 indexes a surrogate
+     * character, the whole supplementary codepoint will be returned. If a validity check is
+     * required, use <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on the
+     * codepoint at offset16 before calling. The result returned will be a newly created String
+     * obtained by calling source.substring(..) with the appropriate indexes.
+     * 
+     * @param source
+     *            the input string.
+     * @param offset16
+     *            the UTF16 index to the codepoint in source
+     * @return string value of char32 in UTF16 format
+     * @stable ICU 2.1
+     */
+    public static String valueOf(String source, int offset16) {
+        switch (bounds(source, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            return source.substring(offset16, offset16 + 2);
+        case TRAIL_SURROGATE_BOUNDARY:
+            return source.substring(offset16 - 1, offset16 + 1);
+        default:
+            return source.substring(offset16, offset16 + 1);
+        }
+    }
+
+    /**
+     * Convenience method corresponding to StringBuffer.valueOf(codepoint at offset16). Returns a
+     * one or two char string containing the UTF-32 value in UTF16 format. If offset16 indexes a
+     * surrogate character, the whole supplementary codepoint will be returned. If a validity check
+     * is required, use <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on
+     * the codepoint at offset16 before calling. The result returned will be a newly created String
+     * obtained by calling source.substring(..) with the appropriate indexes.
+     * 
+     * @param source
+     *            the input string buffer.
+     * @param offset16
+     *            the UTF16 index to the codepoint in source
+     * @return string value of char32 in UTF16 format
+     * @stable ICU 2.1
+     */
+    public static String valueOf(StringBuffer source, int offset16) {
+        switch (bounds(source, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            return source.substring(offset16, offset16 + 2);
+        case TRAIL_SURROGATE_BOUNDARY:
+            return source.substring(offset16 - 1, offset16 + 1);
+        default:
+            return source.substring(offset16, offset16 + 1);
+        }
+    }
+
+    /**
+     * Convenience method. Returns a one or two char string containing the UTF-32 value in UTF16
+     * format. If offset16 indexes a surrogate character, the whole supplementary codepoint will be
+     * returned, except when either the leading or trailing surrogate character lies out of the
+     * specified subarray. In the latter case, only the surrogate character within bounds will be
+     * returned. If a validity check is required, use <a
+     * href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on the codepoint at
+     * offset16 before calling. The result returned will be a newly created String containing the
+     * relevant characters.
+     * 
+     * @param source
+     *            the input char array.
+     * @param start
+     *            start index of the subarray
+     * @param limit
+     *            end index of the subarray
+     * @param offset16
+     *            the UTF16 index to the codepoint in source relative to start
+     * @return string value of char32 in UTF16 format
+     * @stable ICU 2.1
+     */
+    public static String valueOf(char source[], int start, int limit, int offset16) {
+        switch (bounds(source, start, limit, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            return new String(source, start + offset16, 2);
+        case TRAIL_SURROGATE_BOUNDARY:
+            return new String(source, start + offset16 - 1, 2);
+        }
+        return new String(source, start + offset16, 1);
+    }
+
+    /**
+     * Returns the UTF-16 offset that corresponds to a UTF-32 offset. Used for random access. See
+     * the <a name="_top_">class description</a> for notes on roundtripping.
+     * 
+     * @param source
+     *            the UTF-16 string
+     * @param offset32
+     *            UTF-32 offset
+     * @return UTF-16 offset
+     * @exception IndexOutOfBoundsException
+     *                if offset32 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findOffsetFromCodePoint(String source, int offset32) {
+        char ch;
+        int size = source.length(), result = 0, count = offset32;
+        if (offset32 < 0 || offset32 > size) {
+            throw new StringIndexOutOfBoundsException(offset32);
+        }
+        while (result < size && count > 0) {
+            ch = source.charAt(result);
+            if (isLeadSurrogate(ch) && ((result + 1) < size)
+                    && isTrailSurrogate(source.charAt(result + 1))) {
+                result++;
+            }
+
+            count--;
+            result++;
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(offset32);
+        }
+        return result;
+    }
+
+    /**
+     * Returns the UTF-16 offset that corresponds to a UTF-32 offset. Used for random access. See
+     * the <a name="_top_">class description</a> for notes on roundtripping.
+     * 
+     * @param source
+     *            the UTF-16 string buffer
+     * @param offset32
+     *            UTF-32 offset
+     * @return UTF-16 offset
+     * @exception IndexOutOfBoundsException
+     *                if offset32 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findOffsetFromCodePoint(StringBuffer source, int offset32) {
+        char ch;
+        int size = source.length(), result = 0, count = offset32;
+        if (offset32 < 0 || offset32 > size) {
+            throw new StringIndexOutOfBoundsException(offset32);
+        }
+        while (result < size && count > 0) {
+            ch = source.charAt(result);
+            if (isLeadSurrogate(ch) && ((result + 1) < size)
+                    && isTrailSurrogate(source.charAt(result + 1))) {
+                result++;
+            }
+
+            count--;
+            result++;
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(offset32);
+        }
+        return result;
+    }
+
+    /**
+     * Returns the UTF-16 offset that corresponds to a UTF-32 offset. Used for random access. See
+     * the <a name="_top_">class description</a> for notes on roundtripping.
+     * 
+     * @param source
+     *            the UTF-16 char array whose substring is to be analysed
+     * @param start
+     *            offset of the substring to be analysed
+     * @param limit
+     *            offset of the substring to be analysed
+     * @param offset32
+     *            UTF-32 offset relative to start
+     * @return UTF-16 offset relative to start
+     * @exception IndexOutOfBoundsException
+     *                if offset32 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findOffsetFromCodePoint(char source[], int start, int limit, int offset32) {
+        char ch;
+        int result = start, count = offset32;
+        if (offset32 > limit - start) {
+            throw new ArrayIndexOutOfBoundsException(offset32);
+        }
+        while (result < limit && count > 0) {
+            ch = source[result];
+            if (isLeadSurrogate(ch) && ((result + 1) < limit)
+                    && isTrailSurrogate(source[result + 1])) {
+                result++;
+            }
+
+            count--;
+            result++;
+        }
+        if (count != 0) {
+            throw new ArrayIndexOutOfBoundsException(offset32);
+        }
+        return result - start;
+    }
+
+    /**
+     * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at or after the given
+     * UTF-16 offset. Used for random access. See the <a name="_top_">class description</a> for
+     * notes on roundtripping.<br>
+     * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, then the UTF-32 offset
+     * of the <strong>lead</strong> of the pair is returned. </i>
+     * <p>
+     * To find the UTF-32 length of a string, use:
+     * 
+     * <pre>
+     * len32 = countCodePoint(source, source.length());
+     * </pre>
+     * 
+     * </p>
+     * <p>
+     * 
+     * @param source
+     *            text to analyse
+     * @param offset16
+     *            UTF-16 offset < source text length.
+     * @return UTF-32 offset
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findCodePointOffset(String source, int offset16) {
+        if (offset16 < 0 || offset16 > source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+
+        for (int i = 0; i < offset16; ++i) {
+            ch = source.charAt(i);
+            if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+                hadLeadSurrogate = false; // count valid trail as zero
+            } else {
+                hadLeadSurrogate = isLeadSurrogate(ch);
+                ++result; // count others as 1
+            }
+        }
+
+        if (offset16 == source.length()) {
+            return result;
+        }
+
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source.charAt(offset16)))) {
+            result--;
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at the given UTF-16
+     * offset. Used for random access. See the <a name="_top_">class description</a> for notes on
+     * roundtripping.<br>
+     * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, then the UTF-32 offset
+     * of the <strong>lead</strong> of the pair is returned. </i>
+     * <p>
+     * To find the UTF-32 length of a string, use:
+     * 
+     * <pre>
+     * len32 = countCodePoint(source);
+     * </pre>
+     * 
+     * </p>
+     * <p>
+     * 
+     * @param source
+     *            text to analyse
+     * @param offset16
+     *            UTF-16 offset < source text length.
+     * @return UTF-32 offset
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int findCodePointOffset(StringBuffer source, int offset16) {
+        if (offset16 < 0 || offset16 > source.length()) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+
+        for (int i = 0; i < offset16; ++i) {
+            ch = source.charAt(i);
+            if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+                hadLeadSurrogate = false; // count valid trail as zero
+            } else {
+                hadLeadSurrogate = isLeadSurrogate(ch);
+                ++result; // count others as 1
+            }
+        }
+
+        if (offset16 == source.length()) {
+            return result;
+        }
+
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source.charAt(offset16)))) {
+            result--;
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns the UTF-32 offset corresponding to the first UTF-32 boundary at the given UTF-16
+     * offset. Used for random access. See the <a name="_top_">class description</a> for notes on
+     * roundtripping.<br>
+     * <i>Note: If the UTF-16 offset is into the middle of a surrogate pair, then the UTF-32 offset
+     * of the <strong>lead</strong> of the pair is returned. </i>
+     * <p>
+     * To find the UTF-32 length of a substring, use:
+     * 
+     * <pre>
+     * len32 = countCodePoint(source, start, limit);
+     * </pre>
+     * 
+     * </p>
+     * <p>
+     * 
+     * @param source
+     *            text to analyse
+     * @param start
+     *            offset of the substring
+     * @param limit
+     *            offset of the substring
+     * @param offset16
+     *            UTF-16 relative to start
+     * @return UTF-32 offset relative to start
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is not within the range of start and limit.
+     * @stable ICU 2.1
+     */
+    public static int findCodePointOffset(char source[], int start, int limit, int offset16) {
+        offset16 += start;
+        if (offset16 > limit) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+
+        int result = 0;
+        char ch;
+        boolean hadLeadSurrogate = false;
+
+        for (int i = start; i < offset16; ++i) {
+            ch = source[i];
+            if (hadLeadSurrogate && isTrailSurrogate(ch)) {
+                hadLeadSurrogate = false; // count valid trail as zero
+            } else {
+                hadLeadSurrogate = isLeadSurrogate(ch);
+                ++result; // count others as 1
+            }
+        }
+
+        if (offset16 == limit) {
+            return result;
+        }
+
+        // end of source being the less significant surrogate character
+        // shift result back to the start of the supplementary character
+        if (hadLeadSurrogate && (isTrailSurrogate(source[offset16]))) {
+            result--;
+        }
+
+        return result;
+    }
+
+    /**
+     * Append a single UTF-32 value to the end of a StringBuffer. If a validity check is required,
+     * use <a href="../lang/UCharacter.html#isLegal(char)">isLegal()</a></code> on char32 before
+     * calling.
+     * 
+     * @param target
+     *            the buffer to append to
+     * @param char32
+     *            value to append.
+     * @return the updated StringBuffer
+     * @exception IllegalArgumentException
+     *                thrown when char32 does not lie within the range of the Unicode codepoints
+     * @stable ICU 2.1
+     */
+    public static StringBuffer append(StringBuffer target, int char32) {
+        // Check for irregular values
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Illegal codepoint: " + Integer.toHexString(char32));
+        }
+
+        // Write the UTF-16 values
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+            target.append(getLeadSurrogate(char32));
+            target.append(getTrailSurrogate(char32));
+        } else {
+            target.append((char) char32);
+        }
+        return target;
+    }
+
+    /**
+     * Cover JDK 1.5 APIs. Append the code point to the buffer and return the buffer as a
+     * convenience.
+     * 
+     * @param target
+     *            the buffer to append to
+     * @param cp
+     *            the code point to append
+     * @return the updated StringBuffer
+     * @throws IllegalArgumentException
+     *             if cp is not a valid code point
+     * @stable ICU 3.0
+     */
+    public static StringBuffer appendCodePoint(StringBuffer target, int cp) {
+        return append(target, cp);
+    }
+
+    /**
+     * Adds a codepoint to offset16 position of the argument char array.
+     * 
+     * @param target
+     *            char array to be append with the new code point
+     * @param limit
+     *            UTF16 offset which the codepoint will be appended.
+     * @param char32
+     *            code point to be appended
+     * @return offset after char32 in the array.
+     * @exception IllegalArgumentException
+     *                thrown if there is not enough space for the append, or when char32 does not
+     *                lie within the range of the Unicode codepoints.
+     * @stable ICU 2.1
+     */
+    public static int append(char[] target, int limit, int char32) {
+        // Check for irregular values
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Illegal codepoint");
+        }
+        // Write the UTF-16 values
+        if (char32 >= SUPPLEMENTARY_MIN_VALUE) {
+            target[limit++] = getLeadSurrogate(char32);
+            target[limit++] = getTrailSurrogate(char32);
+        } else {
+            target[limit++] = (char) char32;
+        }
+        return limit;
+    }
+
+    /**
+     * Number of codepoints in a UTF16 String
+     * 
+     * @param source
+     *            UTF16 string
+     * @return number of codepoint in string
+     * @stable ICU 2.1
+     */
+    public static int countCodePoint(String source) {
+        if (source == null || source.length() == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, source.length());
+    }
+
+    /**
+     * Number of codepoints in a UTF16 String buffer
+     * 
+     * @param source
+     *            UTF16 string buffer
+     * @return number of codepoint in string
+     * @stable ICU 2.1
+     */
+    public static int countCodePoint(StringBuffer source) {
+        if (source == null || source.length() == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, source.length());
+    }
+
+    /**
+     * Number of codepoints in a UTF16 char array substring
+     * 
+     * @param source
+     *            UTF16 char array
+     * @param start
+     *            offset of the substring
+     * @param limit
+     *            offset of the substring
+     * @return number of codepoint in the substring
+     * @exception IndexOutOfBoundsException
+     *                if start and limit are not valid.
+     * @stable ICU 2.1
+     */
+    public static int countCodePoint(char source[], int start, int limit) {
+        if (source == null || source.length == 0) {
+            return 0;
+        }
+        return findCodePointOffset(source, start, limit, limit - start);
+    }
+
+    /**
+     * Set a code point into a UTF16 position. Adjusts target according if we are replacing a
+     * non-supplementary codepoint with a supplementary and vice versa.
+     * 
+     * @param target
+     *            stringbuffer
+     * @param offset16
+     *            UTF16 position to insert into
+     * @param char32
+     *            code point
+     * @stable ICU 2.1
+     */
+    public static void setCharAt(StringBuffer target, int offset16, int char32) {
+        int count = 1;
+        char single = target.charAt(offset16);
+
+        if (isSurrogate(single)) {
+            // pairs of the surrogate with offset16 at the lead char found
+            if (isLeadSurrogate(single) && (target.length() > offset16 + 1)
+                    && isTrailSurrogate(target.charAt(offset16 + 1))) {
+                count++;
+            } else {
+                // pairs of the surrogate with offset16 at the trail char
+                // found
+                if (isTrailSurrogate(single) && (offset16 > 0)
+                        && isLeadSurrogate(target.charAt(offset16 - 1))) {
+                    offset16--;
+                    count++;
+                }
+            }
+        }
+        target.replace(offset16, offset16 + count, valueOf(char32));
+    }
+
+    /**
+     * Set a code point into a UTF16 position in a char array. Adjusts target according if we are
+     * replacing a non-supplementary codepoint with a supplementary and vice versa.
+     * 
+     * @param target
+     *            char array
+     * @param limit
+     *            numbers of valid chars in target, different from target.length. limit counts the
+     *            number of chars in target that represents a string, not the size of array target.
+     * @param offset16
+     *            UTF16 position to insert into
+     * @param char32
+     *            code point
+     * @return new number of chars in target that represents a string
+     * @exception IndexOutOfBoundsException
+     *                if offset16 is out of range
+     * @stable ICU 2.1
+     */
+    public static int setCharAt(char target[], int limit, int offset16, int char32) {
+        if (offset16 >= limit) {
+            throw new ArrayIndexOutOfBoundsException(offset16);
+        }
+        int count = 1;
+        char single = target[offset16];
+
+        if (isSurrogate(single)) {
+            // pairs of the surrogate with offset16 at the lead char found
+            if (isLeadSurrogate(single) && (target.length > offset16 + 1)
+                    && isTrailSurrogate(target[offset16 + 1])) {
+                count++;
+            } else {
+                // pairs of the surrogate with offset16 at the trail char
+                // found
+                if (isTrailSurrogate(single) && (offset16 > 0)
+                        && isLeadSurrogate(target[offset16 - 1])) {
+                    offset16--;
+                    count++;
+                }
+            }
+        }
+
+        String str = valueOf(char32);
+        int result = limit;
+        int strlength = str.length();
+        target[offset16] = str.charAt(0);
+        if (count == strlength) {
+            if (count == 2) {
+                target[offset16 + 1] = str.charAt(1);
+            }
+        } else {
+            // this is not exact match in space, we'll have to do some
+            // shifting
+            System.arraycopy(target, offset16 + count, target, offset16 + strlength, limit
+                    - (offset16 + count));
+            if (count < strlength) {
+                // char32 is a supplementary character trying to squeeze into
+                // a non-supplementary space
+                target[offset16 + 1] = str.charAt(1);
+                result++;
+                if (result < target.length) {
+                    target[result] = 0;
+                }
+            } else {
+                // char32 is a non-supplementary character trying to fill
+                // into a supplementary space
+                result--;
+                target[result] = 0;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Shifts offset16 by the argument number of codepoints
+     * 
+     * @param source
+     *            string
+     * @param offset16
+     *            UTF16 position to shift
+     * @param shift32
+     *            number of codepoints to shift
+     * @return new shifted offset16
+     * @exception IndexOutOfBoundsException
+     *                if the new offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int moveCodePointOffset(String source, int offset16, int shift32) {
+        int result = offset16;
+        int size = source.length();
+        int count;
+        char ch;
+        if (offset16 < 0 || offset16 > size) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        if (shift32 > 0) {
+            if (shift32 + offset16 > size) {
+                throw new StringIndexOutOfBoundsException(offset16);
+            }
+            count = shift32;
+            while (result < size && count > 0) {
+                ch = source.charAt(result);
+                if (isLeadSurrogate(ch) && ((result + 1) < size)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    result++;
+                }
+                count--;
+                result++;
+            }
+        } else {
+            if (offset16 + shift32 < 0) {
+                throw new StringIndexOutOfBoundsException(offset16);
+            }
+            for (count = -shift32; count > 0; count--) {
+                result--;
+                if (result < 0) {
+                    break;
+                }
+                ch = source.charAt(result);
+                if (isTrailSurrogate(ch) && result > 0
+                        && isLeadSurrogate(source.charAt(result - 1))) {
+                    result--;
+                }
+            }
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        return result;
+    }
+
+    /**
+     * Shifts offset16 by the argument number of codepoints
+     * 
+     * @param source
+     *            string buffer
+     * @param offset16
+     *            UTF16 position to shift
+     * @param shift32
+     *            number of codepoints to shift
+     * @return new shifted offset16
+     * @exception IndexOutOfBoundsException
+     *                if the new offset16 is out of bounds.
+     * @stable ICU 2.1
+     */
+    public static int moveCodePointOffset(StringBuffer source, int offset16, int shift32) {
+        int result = offset16;
+        int size = source.length();
+        int count;
+        char ch;
+        if (offset16 < 0 || offset16 > size) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        if (shift32 > 0) {
+            if (shift32 + offset16 > size) {
+                throw new StringIndexOutOfBoundsException(offset16);
+            }
+            count = shift32;
+            while (result < size && count > 0) {
+                ch = source.charAt(result);
+                if (isLeadSurrogate(ch) && ((result + 1) < size)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    result++;
+                }
+                count--;
+                result++;
+            }
+        } else {
+            if (offset16 + shift32 < 0) {
+                throw new StringIndexOutOfBoundsException(offset16);
+            }
+            for (count = -shift32; count > 0; count--) {
+                result--;
+                if (result < 0) {
+                    break;
+                }
+                ch = source.charAt(result);
+                if (isTrailSurrogate(ch) && result > 0
+                        && isLeadSurrogate(source.charAt(result - 1))) {
+                    result--;
+                }
+            }
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        return result;
+    }
+
+    /**
+     * Shifts offset16 by the argument number of codepoints within a subarray.
+     * 
+     * @param source
+     *            char array
+     * @param start
+     *            position of the subarray to be performed on
+     * @param limit
+     *            position of the subarray to be performed on
+     * @param offset16
+     *            UTF16 position to shift relative to start
+     * @param shift32
+     *            number of codepoints to shift
+     * @return new shifted offset16 relative to start
+     * @exception IndexOutOfBoundsException
+     *                if the new offset16 is out of bounds with respect to the subarray or the
+     *                subarray bounds are out of range.
+     * @stable ICU 2.1
+     */
+    public static int moveCodePointOffset(char source[], int start, int limit, int offset16,
+            int shift32) {
+        int size = source.length;
+        int count;
+        char ch;
+        int result = offset16 + start;
+        if (start < 0 || limit < start) {
+            throw new StringIndexOutOfBoundsException(start);
+        }
+        if (limit > size) {
+            throw new StringIndexOutOfBoundsException(limit);
+        }
+        if (offset16 < 0 || result > limit) {
+            throw new StringIndexOutOfBoundsException(offset16);
+        }
+        if (shift32 > 0) {
+            if (shift32 + result > size) {
+                throw new StringIndexOutOfBoundsException(result);
+            }
+            count = shift32;
+            while (result < limit && count > 0) {
+                ch = source[result];
+                if (isLeadSurrogate(ch) && (result + 1 < limit)
+                        && isTrailSurrogate(source[result + 1])) {
+                    result++;
+                }
+                count--;
+                result++;
+            }
+        } else {
+            if (result + shift32 < start) {
+                throw new StringIndexOutOfBoundsException(result);
+            }
+            for (count = -shift32; count > 0; count--) {
+                result--;
+                if (result < start) {
+                    break;
+                }
+                ch = source[result];
+                if (isTrailSurrogate(ch) && result > start && isLeadSurrogate(source[result - 1])) {
+                    result--;
+                }
+            }
+        }
+        if (count != 0) {
+            throw new StringIndexOutOfBoundsException(shift32);
+        }
+        result -= start;
+        return result;
+    }
+
+    /**
+     * Inserts char32 codepoint into target at the argument offset16. If the offset16 is in the
+     * middle of a supplementary codepoint, char32 will be inserted after the supplementary
+     * codepoint. The length of target increases by one if codepoint is non-supplementary, 2
+     * otherwise.
+     * <p>
+     * The overall effect is exactly as if the argument were converted to a string by the method
+     * valueOf(char) and the characters in that string were then inserted into target at the
+     * position indicated by offset16.
+     * </p>
+     * <p>
+     * The offset argument must be greater than or equal to 0, and less than or equal to the length
+     * of source.
+     * 
+     * @param target
+     *            string buffer to insert to
+     * @param offset16
+     *            offset which char32 will be inserted in
+     * @param char32
+     *            codepoint to be inserted
+     * @return a reference to target
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is invalid.
+     * @stable ICU 2.1
+     */
+    public static StringBuffer insert(StringBuffer target, int offset16, int char32) {
+        String str = valueOf(char32);
+        if (offset16 != target.length() && bounds(target, offset16) == TRAIL_SURROGATE_BOUNDARY) {
+            offset16++;
+        }
+        target.insert(offset16, str);
+        return target;
+    }
+
+    /**
+     * Inserts char32 codepoint into target at the argument offset16. If the offset16 is in the
+     * middle of a supplementary codepoint, char32 will be inserted after the supplementary
+     * codepoint. Limit increases by one if codepoint is non-supplementary, 2 otherwise.
+     * <p>
+     * The overall effect is exactly as if the argument were converted to a string by the method
+     * valueOf(char) and the characters in that string were then inserted into target at the
+     * position indicated by offset16.
+     * </p>
+     * <p>
+     * The offset argument must be greater than or equal to 0, and less than or equal to the limit.
+     * 
+     * @param target
+     *            char array to insert to
+     * @param limit
+     *            end index of the char array, limit <= target.length
+     * @param offset16
+     *            offset which char32 will be inserted in
+     * @param char32
+     *            codepoint to be inserted
+     * @return new limit size
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is invalid.
+     * @stable ICU 2.1
+     */
+    public static int insert(char target[], int limit, int offset16, int char32) {
+        String str = valueOf(char32);
+        if (offset16 != limit && bounds(target, 0, limit, offset16) == TRAIL_SURROGATE_BOUNDARY) {
+            offset16++;
+        }
+        int size = str.length();
+        if (limit + size > target.length) {
+            throw new ArrayIndexOutOfBoundsException(offset16 + size);
+        }
+        System.arraycopy(target, offset16, target, offset16 + size, limit - offset16);
+        target[offset16] = str.charAt(0);
+        if (size == 2) {
+            target[offset16 + 1] = str.charAt(1);
+        }
+        return limit + size;
+    }
+
+    /**
+     * Removes the codepoint at the specified position in this target (shortening target by 1
+     * character if the codepoint is a non-supplementary, 2 otherwise).
+     * 
+     * @param target
+     *            string buffer to remove codepoint from
+     * @param offset16
+     *            offset which the codepoint will be removed
+     * @return a reference to target
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is invalid.
+     * @stable ICU 2.1
+     */
+    public static StringBuffer delete(StringBuffer target, int offset16) {
+        int count = 1;
+        switch (bounds(target, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            count++;
+            break;
+        case TRAIL_SURROGATE_BOUNDARY:
+            count++;
+            offset16--;
+            break;
+        }
+        target.delete(offset16, offset16 + count);
+        return target;
+    }
+
+    /**
+     * Removes the codepoint at the specified position in this target (shortening target by 1
+     * character if the codepoint is a non-supplementary, 2 otherwise).
+     * 
+     * @param target
+     *            string buffer to remove codepoint from
+     * @param limit
+     *            end index of the char array, limit <= target.length
+     * @param offset16
+     *            offset which the codepoint will be removed
+     * @return a new limit size
+     * @exception IndexOutOfBoundsException
+     *                thrown if offset16 is invalid.
+     * @stable ICU 2.1
+     */
+    public static int delete(char target[], int limit, int offset16) {
+        int count = 1;
+        switch (bounds(target, 0, limit, offset16)) {
+        case LEAD_SURROGATE_BOUNDARY:
+            count++;
+            break;
+        case TRAIL_SURROGATE_BOUNDARY:
+            count++;
+            offset16--;
+            break;
+        }
+        System.arraycopy(target, offset16 + count, target, offset16, limit - (offset16 + count));
+        target[limit - count] = 0;
+        return limit - count;
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the first occurrence of
+     * the argument codepoint. I.e., the smallest index <code>i</code> such that
+     * <code>UTF16.charAt(source, i) ==
+     * char32</code> is true.
+     * <p>
+     * If no such character occurs in this string, then -1 is returned.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.indexOf("abc", 'a') returns 0<br>
+     * UTF16.indexOf("abc\ud800\udc00", 0x10000) returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param char32
+     *            codepoint to search for
+     * @return the index of the first occurrence of the codepoint in the argument Unicode string, or
+     *         -1 if the codepoint does not occur.
+     * @stable ICU 2.6
+     */
+    public static int indexOf(String source, int char32) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE
+                || (char32 > TRAIL_SURROGATE_MAX_VALUE && char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.indexOf((char) char32);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.indexOf((char) char32);
+            if (result >= 0) {
+                if (isLeadSurrogate((char) char32) && (result < source.length() - 1)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    return indexOf(source, char32, result + 1);
+                }
+                // trail surrogate
+                if (result > 0 && isLeadSurrogate(source.charAt(result - 1))) {
+                    return indexOf(source, char32, result + 1);
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.indexOf(char32str);
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the first occurrence of
+     * the argument string str. This method is implemented based on codepoints, hence a "lead
+     * surrogate character + trail surrogate character" is treated as one entity.e Hence if the str
+     * starts with trail surrogate character at index 0, a source with a leading a surrogate
+     * character before str found at in source will not have a valid match. Vice versa for lead
+     * surrogates that ends str. See example below.
+     * <p>
+     * If no such string str occurs in this source, then -1 is returned.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.indexOf("abc", "ab") returns 0<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00") returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800") returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param str
+     *            UTF16 format Unicode string to search for
+     * @return the index of the first occurrence of the codepoint in the argument Unicode string, or
+     *         -1 if the codepoint does not occur.
+     * @stable ICU 2.6
+     */
+    public static int indexOf(String source, String str) {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.indexOf(str);
+        }
+
+        int result = source.indexOf(str);
+        int resultEnd = result + strLength;
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && (result < source.length() - 1)
+                    && isTrailSurrogate(source.charAt(resultEnd + 1))) {
+                return indexOf(source, str, resultEnd + 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0
+                    && isLeadSurrogate(source.charAt(result - 1))) {
+                return indexOf(source, str, resultEnd + 1);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the first occurrence of
+     * the argument codepoint. I.e., the smallest index i such that: <br>
+     * (UTF16.charAt(source, i) == char32 && i >= fromIndex) is true.
+     * <p>
+     * If no such character occurs in this string, then -1 is returned.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.indexOf("abc", 'a', 1) returns -1<br>
+     * UTF16.indexOf("abc\ud800\udc00", 0x10000, 1) returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", 0xd800, 1) returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param char32
+     *            codepoint to search for
+     * @param fromIndex
+     *            the index to start the search from.
+     * @return the index of the first occurrence of the codepoint in the argument Unicode string at
+     *         or after fromIndex, or -1 if the codepoint does not occur.
+     * @stable ICU 2.6
+     */
+    public static int indexOf(String source, int char32, int fromIndex) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE
+                || (char32 > TRAIL_SURROGATE_MAX_VALUE && char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.indexOf((char) char32, fromIndex);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.indexOf((char) char32, fromIndex);
+            if (result >= 0) {
+                if (isLeadSurrogate((char) char32) && (result < source.length() - 1)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    return indexOf(source, char32, result + 1);
+                }
+                // trail surrogate
+                if (result > 0 && isLeadSurrogate(source.charAt(result - 1))) {
+                    return indexOf(source, char32, result + 1);
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.indexOf(char32str, fromIndex);
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the first occurrence of
+     * the argument string str. This method is implemented based on codepoints, hence a "lead
+     * surrogate character + trail surrogate character" is treated as one entity.e Hence if the str
+     * starts with trail surrogate character at index 0, a source with a leading a surrogate
+     * character before str found at in source will not have a valid match. Vice versa for lead
+     * surrogates that ends str. See example below.
+     * <p>
+     * If no such string str occurs in this source, then -1 is returned.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.indexOf("abc", "ab", 0) returns 0<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00", 0) returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800\udc00", 2) returns 3<br>
+     * UTF16.indexOf("abc\ud800\udc00", "\ud800", 0) returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param str
+     *            UTF16 format Unicode string to search for
+     * @param fromIndex
+     *            the index to start the search from.
+     * @return the index of the first occurrence of the codepoint in the argument Unicode string, or
+     *         -1 if the codepoint does not occur.
+     * @stable ICU 2.6
+     */
+    public static int indexOf(String source, String str, int fromIndex) {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.indexOf(str, fromIndex);
+        }
+
+        int result = source.indexOf(str, fromIndex);
+        int resultEnd = result + strLength;
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && (result < source.length() - 1)
+                    && isTrailSurrogate(source.charAt(resultEnd))) {
+                return indexOf(source, str, resultEnd + 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0
+                    && isLeadSurrogate(source.charAt(result - 1))) {
+                return indexOf(source, str, resultEnd + 1);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the last occurrence of
+     * the argument codepoint. I.e., the index returned is the largest value i such that:
+     * UTF16.charAt(source, i) == char32 is true.
+     * <p>
+     * Examples:<br>
+     * UTF16.lastIndexOf("abc", 'a') returns 0<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+     * </p>
+     * <p>
+     * source is searched backwards starting at the last character.
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param char32
+     *            codepoint to search for
+     * @return the index of the last occurrence of the codepoint in source, or -1 if the codepoint
+     *         does not occur.
+     * @stable ICU 2.6
+     */
+    public static int lastIndexOf(String source, int char32) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE
+                || (char32 > TRAIL_SURROGATE_MAX_VALUE && char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.lastIndexOf((char) char32);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.lastIndexOf((char) char32);
+            if (result >= 0) {
+                if (isLeadSurrogate((char) char32) && (result < source.length() - 1)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    return lastIndexOf(source, char32, result - 1);
+                }
+                // trail surrogate
+                if (result > 0 && isLeadSurrogate(source.charAt(result - 1))) {
+                    return lastIndexOf(source, char32, result - 1);
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.lastIndexOf(char32str);
+    }
+
+    /**
+     * Returns the index within the argument UTF16 format Unicode string of the last occurrence of
+     * the argument string str. This method is implemented based on codepoints, hence a "lead
+     * surrogate character + trail surrogate character" is treated as one entity.e Hence if the str
+     * starts with trail surrogate character at index 0, a source with a leading a surrogate
+     * character before str found at in source will not have a valid match. Vice versa for lead
+     * surrogates that ends str. See example below.
+     * <p>
+     * Examples:<br>
+     * UTF16.lastIndexOf("abc", "a") returns 0<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00") returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800") returns -1<br>
+     * </p>
+     * <p>
+     * source is searched backwards starting at the last character.
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param str
+     *            UTF16 format Unicode string to search for
+     * @return the index of the last occurrence of the codepoint in source, or -1 if the codepoint
+     *         does not occur.
+     * @stable ICU 2.6
+     */
+    public static int lastIndexOf(String source, String str) {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.lastIndexOf(str);
+        }
+
+        int result = source.lastIndexOf(str);
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && (result < source.length() - 1)
+                    && isTrailSurrogate(source.charAt(result + strLength + 1))) {
+                return lastIndexOf(source, str, result - 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0
+                    && isLeadSurrogate(source.charAt(result - 1))) {
+                return lastIndexOf(source, str, result - 1);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * <p>
+     * Returns the index within the argument UTF16 format Unicode string of the last occurrence of
+     * the argument codepoint, where the result is less than or equals to fromIndex.
+     * </p>
+     * <p>
+     * This method is implemented based on codepoints, hence a single surrogate character will not
+     * match a supplementary character.
+     * </p>
+     * <p>
+     * source is searched backwards starting at the last character starting at the specified index.
+     * </p>
+     * <p>
+     * Examples:<br>
+     * UTF16.lastIndexOf("abc", 'c', 2) returns 2<br>
+     * UTF16.lastIndexOf("abc", 'c', 1) returns -1<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000, 5) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0x10000, 3) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", 0xd800) returns -1<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param char32
+     *            codepoint to search for
+     * @param fromIndex
+     *            the index to start the search from. There is no restriction on the value of
+     *            fromIndex. If it is greater than or equal to the length of this string, it has the
+     *            same effect as if it were equal to one less than the length of this string: this
+     *            entire string may be searched. If it is negative, it has the same effect as if it
+     *            were -1: -1 is returned.
+     * @return the index of the last occurrence of the codepoint in source, or -1 if the codepoint
+     *         does not occur.
+     * @stable ICU 2.6
+     */
+    public static int lastIndexOf(String source, int char32, int fromIndex) {
+        if (char32 < CODEPOINT_MIN_VALUE || char32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument char32 is not a valid codepoint");
+        }
+        // non-surrogate bmp
+        if (char32 < LEAD_SURROGATE_MIN_VALUE
+                || (char32 > TRAIL_SURROGATE_MAX_VALUE && char32 < SUPPLEMENTARY_MIN_VALUE)) {
+            return source.lastIndexOf((char) char32, fromIndex);
+        }
+        // surrogate
+        if (char32 < SUPPLEMENTARY_MIN_VALUE) {
+            int result = source.lastIndexOf((char) char32, fromIndex);
+            if (result >= 0) {
+                if (isLeadSurrogate((char) char32) && (result < source.length() - 1)
+                        && isTrailSurrogate(source.charAt(result + 1))) {
+                    return lastIndexOf(source, char32, result - 1);
+                }
+                // trail surrogate
+                if (result > 0 && isLeadSurrogate(source.charAt(result - 1))) {
+                    return lastIndexOf(source, char32, result - 1);
+                }
+            }
+            return result;
+        }
+        // supplementary
+        String char32str = toString(char32);
+        return source.lastIndexOf(char32str, fromIndex);
+    }
+
+    /**
+     * <p>
+     * Returns the index within the argument UTF16 format Unicode string of the last occurrence of
+     * the argument string str, where the result is less than or equals to fromIndex.
+     * </p>
+     * <p>
+     * This method is implemented based on codepoints, hence a "lead surrogate character + trail
+     * surrogate character" is treated as one entity. Hence if the str starts with trail surrogate
+     * character at index 0, a source with a leading a surrogate character before str found at in
+     * source will not have a valid match. Vice versa for lead surrogates that ends str.
+     * </p>
+     * See example below.
+     * <p>
+     * Examples:<br>
+     * UTF16.lastIndexOf("abc", "c", 2) returns 2<br>
+     * UTF16.lastIndexOf("abc", "c", 1) returns -1<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00", 5) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800\udc00", 3) returns 3<br>
+     * UTF16.lastIndexOf("abc\ud800\udc00", "\ud800", 4) returns -1<br>
+     * </p>
+     * <p>
+     * source is searched backwards starting at the last character.
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string that will be searched
+     * @param str
+     *            UTF16 format Unicode string to search for
+     * @param fromIndex
+     *            the index to start the search from. There is no restriction on the value of
+     *            fromIndex. If it is greater than or equal to the length of this string, it has the
+     *            same effect as if it were equal to one less than the length of this string: this
+     *            entire string may be searched. If it is negative, it has the same effect as if it
+     *            were -1: -1 is returned.
+     * @return the index of the last occurrence of the codepoint in source, or -1 if the codepoint
+     *         does not occur.
+     * @stable ICU 2.6
+     */
+    public static int lastIndexOf(String source, String str, int fromIndex) {
+        int strLength = str.length();
+        // non-surrogate ends
+        if (!isTrailSurrogate(str.charAt(0)) && !isLeadSurrogate(str.charAt(strLength - 1))) {
+            return source.lastIndexOf(str, fromIndex);
+        }
+
+        int result = source.lastIndexOf(str, fromIndex);
+        if (result >= 0) {
+            // check last character
+            if (isLeadSurrogate(str.charAt(strLength - 1)) && (result < source.length() - 1)
+                    && isTrailSurrogate(source.charAt(result + strLength))) {
+                return lastIndexOf(source, str, result - 1);
+            }
+            // check first character which is a trail surrogate
+            if (isTrailSurrogate(str.charAt(0)) && result > 0
+                    && isLeadSurrogate(source.charAt(result - 1))) {
+                return lastIndexOf(source, str, result - 1);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns a new UTF16 format Unicode string resulting from replacing all occurrences of
+     * oldChar32 in source with newChar32. If the character oldChar32 does not occur in the UTF16
+     * format Unicode string source, then source will be returned. Otherwise, a new String object is
+     * created that represents a codepoint sequence identical to the codepoint sequence represented
+     * by source, except that every occurrence of oldChar32 is replaced by an occurrence of
+     * newChar32.
+     * <p>
+     * Examples: <br>
+     * UTF16.replace("mesquite in your cellar", 'e', 'o');<br>
+     * returns "mosquito in your collar"<br>
+     * UTF16.replace("JonL", 'q', 'x');<br>
+     * returns "JonL" (no change)<br>
+     * UTF16.replace("Supplementary character \ud800\udc00", 0x10000, '!'); <br>
+     * returns "Supplementary character !"<br>
+     * UTF16.replace("Supplementary character \ud800\udc00", 0xd800, '!'); <br>
+     * returns "Supplementary character \ud800\udc00"<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string which the codepoint replacements will be based on.
+     * @param oldChar32
+     *            non-zero old codepoint to be replaced.
+     * @param newChar32
+     *            the new codepoint to replace oldChar32
+     * @return new String derived from source by replacing every occurrence of oldChar32 with
+     *         newChar32, unless when no oldChar32 is found in source then source will be returned.
+     * @stable ICU 2.6
+     */
+    public static String replace(String source, int oldChar32, int newChar32) {
+        if (oldChar32 <= 0 || oldChar32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument oldChar32 is not a valid codepoint");
+        }
+        if (newChar32 <= 0 || newChar32 > CODEPOINT_MAX_VALUE) {
+            throw new IllegalArgumentException("Argument newChar32 is not a valid codepoint");
+        }
+
+        int index = indexOf(source, oldChar32);
+        if (index == -1) {
+            return source;
+        }
+        String newChar32Str = toString(newChar32);
+        int oldChar32Size = 1;
+        int newChar32Size = newChar32Str.length();
+        StringBuffer result = new StringBuffer(source);
+        int resultIndex = index;
+
+        if (oldChar32 >= SUPPLEMENTARY_MIN_VALUE) {
+            oldChar32Size = 2;
+        }
+
+        while (index != -1) {
+            int endResultIndex = resultIndex + oldChar32Size;
+            result.replace(resultIndex, endResultIndex, newChar32Str);
+            int lastEndIndex = index + oldChar32Size;
+            index = indexOf(source, oldChar32, lastEndIndex);
+            resultIndex += newChar32Size + index - lastEndIndex;
+        }
+        return result.toString();
+    }
+
+    /**
+     * Returns a new UTF16 format Unicode string resulting from replacing all occurrences of oldStr
+     * in source with newStr. If the string oldStr does not occur in the UTF16 format Unicode string
+     * source, then source will be returned. Otherwise, a new String object is created that
+     * represents a codepoint sequence identical to the codepoint sequence represented by source,
+     * except that every occurrence of oldStr is replaced by an occurrence of newStr.
+     * <p>
+     * Examples: <br>
+     * UTF16.replace("mesquite in your cellar", "e", "o");<br>
+     * returns "mosquito in your collar"<br>
+     * UTF16.replace("mesquite in your cellar", "mesquite", "cat");<br>
+     * returns "cat in your cellar"<br>
+     * UTF16.replace("JonL", "q", "x");<br>
+     * returns "JonL" (no change)<br>
+     * UTF16.replace("Supplementary character \ud800\udc00", "\ud800\udc00", '!'); <br>
+     * returns "Supplementary character !"<br>
+     * UTF16.replace("Supplementary character \ud800\udc00", "\ud800", '!'); <br>
+     * returns "Supplementary character \ud800\udc00"<br>
+     * </p>
+     * Note this method is provided as support to jdk 1.3, which does not support supplementary
+     * characters to its fullest.
+     * 
+     * @param source
+     *            UTF16 format Unicode string which the replacements will be based on.
+     * @param oldStr
+     *            non-zero-length string to be replaced.
+     * @param newStr
+     *            the new string to replace oldStr
+     * @return new String derived from source by replacing every occurrence of oldStr with newStr.
+     *         When no oldStr is found in source, then source will be returned.
+     * @stable ICU 2.6
+     */
+    public static String replace(String source, String oldStr, String newStr) {
+        int index = indexOf(source, oldStr);
+        if (index == -1) {
+            return source;
+        }
+        int oldStrSize = oldStr.length();
+        int newStrSize = newStr.length();
+        StringBuffer result = new StringBuffer(source);
+        int resultIndex = index;
+
+        while (index != -1) {
+            int endResultIndex = resultIndex + oldStrSize;
+            result.replace(resultIndex, endResultIndex, newStr);
+            int lastEndIndex = index + oldStrSize;
+            index = indexOf(source, oldStr, lastEndIndex);
+            resultIndex += newStrSize + index - lastEndIndex;
+        }
+        return result.toString();
+    }
+
+    /**
+     * Reverses a UTF16 format Unicode string and replaces source's content with it. This method
+     * will reverse surrogate characters correctly, instead of blindly reversing every character.
+     * <p>
+     * Examples:<br>
+     * UTF16.reverse(new StringBuffer( "Supplementary characters \ud800\udc00\ud801\udc01"))<br>
+     * returns "\ud801\udc01\ud800\udc00 sretcarahc yratnemelppuS".
+     * 
+     * @param source
+     *            the source StringBuffer that contains UTF16 format Unicode string to be reversed
+     * @return a modified source with reversed UTF16 format Unicode string.
+     * @stable ICU 2.6
+     */
+    public static StringBuffer reverse(StringBuffer source) {
+        int length = source.length();
+        StringBuffer result = new StringBuffer(length);
+        for (int i = length; i-- > 0;) {
+            char ch = source.charAt(i);
+            if (isTrailSurrogate(ch) && i > 0) {
+                char ch2 = source.charAt(i - 1);
+                if (isLeadSurrogate(ch2)) {
+                    result.append(ch2);
+                    result.append(ch);
+                    --i;
+                    continue;
+                }
+            }
+            result.append(ch);
+        }
+        return result;
+    }
+
+    /**
+     * Check if the string contains more Unicode code points than a certain number. This is more
+     * efficient than counting all code points in the entire string and comparing that number with a
+     * threshold. This function may not need to scan the string at all if the length is within a
+     * certain range, and never needs to count more than 'number + 1' code points. Logically
+     * equivalent to (countCodePoint(s) > number). A Unicode code point may occupy either one or two
+     * code units.
+     * 
+     * @param source
+     *            The input string.
+     * @param number
+     *            The number of code points in the string is compared against the 'number'
+     *            parameter.
+     * @return boolean value for whether the string contains more Unicode code points than 'number'.
+     * @stable ICU 2.4
+     */
+    public static boolean hasMoreCodePointsThan(String source, int number) {
+        if (number < 0) {
+            return true;
+        }
+        if (source == null) {
+            return false;
+        }
+        int length = source.length();
+
+        // length >= 0 known
+        // source contains at least (length + 1) / 2 code points: <= 2
+        // chars per cp
+        if (((length + 1) >> 1) > number) {
+            return true;
+        }
+
+        // check if source does not even contain enough chars
+        int maxsupplementary = length - number;
+        if (maxsupplementary <= 0) {
+            return false;
+        }
+
+        // there are maxsupplementary = length - number more chars than
+        // asked-for code points
+
+        // count code points until they exceed and also check that there are
+        // no more than maxsupplementary supplementary code points (char pairs)
+        int start = 0;
+        while (true) {
+            if (length == 0) {
+                return false;
+            }
+            if (number == 0) {
+                return true;
+            }
+            if (isLeadSurrogate(source.charAt(start++)) && start != length
+                    && isTrailSurrogate(source.charAt(start))) {
+                start++;
+                if (--maxsupplementary <= 0) {
+                    // too many pairs - too few code points
+                    return false;
+                }
+            }
+            --number;
+        }
+    }
+
+    /**
+     * Check if the sub-range of char array, from argument start to limit, contains more Unicode
+     * code points than a certain number. This is more efficient than counting all code points in
+     * the entire char array range and comparing that number with a threshold. This function may not
+     * need to scan the char array at all if start and limit is within a certain range, and never
+     * needs to count more than 'number + 1' code points. Logically equivalent to
+     * (countCodePoint(source, start, limit) > number). A Unicode code point may occupy either one
+     * or two code units.
+     * 
+     * @param source
+     *            array of UTF-16 chars
+     * @param start
+     *            offset to substring in the source array for analyzing
+     * @param limit
+     *            offset to substring in the source array for analyzing
+     * @param number
+     *            The number of code points in the string is compared against the 'number'
+     *            parameter.
+     * @return boolean value for whether the string contains more Unicode code points than 'number'.
+     * @exception IndexOutOfBoundsException
+     *                thrown when limit &lt; start
+     * @stable ICU 2.4
+     */
+    public static boolean hasMoreCodePointsThan(char source[], int start, int limit, int number) {
+        int length = limit - start;
+        if (length < 0 || start < 0 || limit < 0) {
+            throw new IndexOutOfBoundsException(
+                    "Start and limit indexes should be non-negative and start <= limit");
+        }
+        if (number < 0) {
+            return true;
+        }
+        if (source == null) {
+            return false;
+        }
+
+        // length >= 0 known
+        // source contains at least (length + 1) / 2 code points: <= 2
+        // chars per cp
+        if (((length + 1) >> 1) > number) {
+            return true;
+        }
+
+        // check if source does not even contain enough chars
+        int maxsupplementary = length - number;
+        if (maxsupplementary <= 0) {
+            return false;
+        }
+
+        // there are maxsupplementary = length - number more chars than
+        // asked-for code points
+
+        // count code points until they exceed and also check that there are
+        // no more than maxsupplementary supplementary code points (char pairs)
+        while (true) {
+            if (length == 0) {
+                return false;
+            }
+            if (number == 0) {
+                return true;
+            }
+            if (isLeadSurrogate(source[start++]) && start != limit
+                    && isTrailSurrogate(source[start])) {
+                start++;
+                if (--maxsupplementary <= 0) {
+                    // too many pairs - too few code points
+                    return false;
+                }
+            }
+            --number;
+        }
+    }
+
+    /**
+     * Check if the string buffer contains more Unicode code points than a certain number. This is
+     * more efficient than counting all code points in the entire string buffer and comparing that
+     * number with a threshold. This function may not need to scan the string buffer at all if the
+     * length is within a certain range, and never needs to count more than 'number + 1' code
+     * points. Logically equivalent to (countCodePoint(s) > number). A Unicode code point may occupy
+     * either one or two code units.
+     * 
+     * @param source
+     *            The input string buffer.
+     * @param number
+     *            The number of code points in the string buffer is compared against the 'number'
+     *            parameter.
+     * @return boolean value for whether the string buffer contains more Unicode code points than
+     *         'number'.
+     * @stable ICU 2.4
+     */
+    public static boolean hasMoreCodePointsThan(StringBuffer source, int number) {
+        if (number < 0) {
+            return true;
+        }
+        if (source == null) {
+            return false;
+        }
+        int length = source.length();
+
+        // length >= 0 known
+        // source contains at least (length + 1) / 2 code points: <= 2
+        // chars per cp
+        if (((length + 1) >> 1) > number) {
+            return true;
+        }
+
+        // check if source does not even contain enough chars
+        int maxsupplementary = length - number;
+        if (maxsupplementary <= 0) {
+            return false;
+        }
+
+        // there are maxsupplementary = length - number more chars than
+        // asked-for code points
+
+        // count code points until they exceed and also check that there are
+        // no more than maxsupplementary supplementary code points (char pairs)
+        int start = 0;
+        while (true) {
+            if (length == 0) {
+                return false;
+            }
+            if (number == 0) {
+                return true;
+            }
+            if (isLeadSurrogate(source.charAt(start++)) && start != length
+                    && isTrailSurrogate(source.charAt(start))) {
+                start++;
+                if (--maxsupplementary <= 0) {
+                    // too many pairs - too few code points
+                    return false;
+                }
+            }
+            --number;
+        }
+    }
+
+    /**
+     * Cover JDK 1.5 API. Create a String from an array of codePoints.
+     * 
+     * @param codePoints
+     *            the code array
+     * @param offset
+     *            the start of the text in the code point array
+     * @param count
+     *            the number of code points
+     * @return a String representing the code points between offset and count
+     * @throws IllegalArgumentException
+     *             if an invalid code point is encountered
+     * @throws IndexOutOfBoundsException
+     *             if the offset or count are out of bounds.
+     * @stable ICU 3.0
+     */
+    public static String newString(int[] codePoints, int offset, int count) {
+        if (count < 0) {
+            throw new IllegalArgumentException();
+        }
+        char[] chars = new char[count];
+        int w = 0;
+        for (int r = offset, e = offset + count; r < e; ++r) {
+            int cp = codePoints[r];
+            if (cp < 0 || cp > 0x10ffff) {
+                throw new IllegalArgumentException();
+            }
+            while (true) {
+                try {
+                    if (cp < 0x010000) {
+                        chars[w] = (char) cp;
+                        w++;
+                    } else {
+                        chars[w] = (char) (LEAD_SURROGATE_OFFSET_ + (cp >> LEAD_SURROGATE_SHIFT_));
+                        chars[w + 1] = (char) (TRAIL_SURROGATE_MIN_VALUE + (cp & TRAIL_SURROGATE_MASK_));
+                        w += 2;
+                    }
+                    break;
+                } catch (IndexOutOfBoundsException ex) {
+                    int newlen = (int) (Math.ceil((double) codePoints.length * (w + 2)
+                            / (r - offset + 1)));
+                    char[] temp = new char[newlen];
+                    System.arraycopy(chars, 0, temp, 0, w);
+                    chars = temp;
+                }
+            }
+        }
+        return new String(chars, 0, w);
+    }
+
+    /**
+     * <p>
+     * UTF16 string comparator class. Allows UTF16 string comparison to be done with the various
+     * modes
+     * </p>
+     * <ul>
+     * <li> Code point comparison or code unit comparison
+     * <li> Case sensitive comparison, case insensitive comparison or case insensitive comparison
+     * with special handling for character 'i'.
+     * </ul>
+     * <p>
+     * The code unit or code point comparison differ only when comparing supplementary code points
+     * (&#92;u10000..&#92;u10ffff) to BMP code points near the end of the BMP (i.e.,
+     * &#92;ue000..&#92;uffff). In code unit comparison, high BMP code points sort after
+     * supplementary code points because they are stored as pairs of surrogates which are at
+     * &#92;ud800..&#92;udfff.
+     * </p>
+     * 
+     * @see #FOLD_CASE_DEFAULT
+     * @see #FOLD_CASE_EXCLUDE_SPECIAL_I
+     * @stable ICU 2.1
+     */
+    public static final class StringComparator implements java.util.Comparator {
+        // public constructor ------------------------------------------------
+
+        /**
+         * Default constructor that does code unit comparison and case sensitive comparison.
+         * 
+         * @stable ICU 2.1
+         */
+        public StringComparator() {
+            this(false, false, FOLD_CASE_DEFAULT);
+        }
+
+        /**
+         * Constructor that does comparison based on the argument options.
+         * 
+         * @param codepointcompare
+         *            flag to indicate true for code point comparison or false for code unit
+         *            comparison.
+         * @param ignorecase
+         *            false for case sensitive comparison, true for case-insensitive comparison
+         * @param foldcaseoption
+         *            FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I. This option is used only
+         *            when ignorecase is set to true. If ignorecase is false, this option is
+         *            ignored.
+         * @see #FOLD_CASE_DEFAULT
+         * @see #FOLD_CASE_EXCLUDE_SPECIAL_I
+         * @throws IllegalArgumentException
+         *             if foldcaseoption is out of range
+         * @stable ICU 2.4
+         */
+        public StringComparator(boolean codepointcompare, boolean ignorecase, int foldcaseoption) {
+            setCodePointCompare(codepointcompare);
+            m_ignoreCase_ = ignorecase;
+            if (foldcaseoption < FOLD_CASE_DEFAULT || foldcaseoption > FOLD_CASE_EXCLUDE_SPECIAL_I) {
+                throw new IllegalArgumentException("Invalid fold case option");
+            }
+            m_foldCase_ = foldcaseoption;
+        }
+
+        // public data member ------------------------------------------------
+
+        /**
+         * <p>
+         * Option value for case folding comparison:
+         * </p>
+         * <p>
+         * Comparison is case insensitive, strings are folded using default mappings defined in
+         * Unicode data file CaseFolding.txt, before comparison.
+         * </p>
+         * 
+         * @stable ICU 2.4
+         */
+        public static final int FOLD_CASE_DEFAULT = 0;
+
+        /**
+         * <p>
+         * Option value for case folding comparison:
+         * </p>
+         * <p>
+         * Comparison is case insensitive, strings are folded using modified mappings defined in
+         * Unicode data file CaseFolding.txt, before comparison.
+         * </p>
+         * <p>
+         * The modified set of mappings is provided in a Unicode data file CaseFolding.txt to handle
+         * dotted I and dotless i appropriately for Turkic languages (tr, az).
+         * </p>
+         * <p>
+         * Before Unicode 3.2, CaseFolding.txt contains mappings marked with 'I' that are to be
+         * included for default mappings and excluded for the Turkic-specific mappings.
+         * </p>
+         * <p>
+         * Unicode 3.2 CaseFolding.txt instead contains mappings marked with 'T' that are to be
+         * excluded for default mappings and included for the Turkic-specific mappings.
+         * </p>
+         * 
+         * @stable ICU 2.4
+         */
+        public static final int FOLD_CASE_EXCLUDE_SPECIAL_I = 1;
+
+        // public methods ----------------------------------------------------
+
+        // public setters ----------------------------------------------------
+
+        /**
+         * Sets the comparison mode to code point compare if flag is true. Otherwise comparison mode
+         * is set to code unit compare
+         * 
+         * @param flag
+         *            true for code point compare, false for code unit compare
+         * @stable ICU 2.4
+         */
+        public void setCodePointCompare(boolean flag) {
+            if (flag) {
+                m_codePointCompare_ = Normalizer.COMPARE_CODE_POINT_ORDER;
+            } else {
+                m_codePointCompare_ = 0;
+            }
+        }
+
+        /**
+         * Sets the Comparator to case-insensitive comparison mode if argument is true, otherwise
+         * case sensitive comparison mode if set to false.
+         * 
+         * @param ignorecase
+         *            true for case-insitive comparison, false for case sensitive comparison
+         * @param foldcaseoption
+         *            FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I. This option is used only
+         *            when ignorecase is set to true. If ignorecase is false, this option is
+         *            ignored.
+         * @see #FOLD_CASE_DEFAULT
+         * @see #FOLD_CASE_EXCLUDE_SPECIAL_I
+         * @stable ICU 2.4
+         */
+        public void setIgnoreCase(boolean ignorecase, int foldcaseoption) {
+            m_ignoreCase_ = ignorecase;
+            if (foldcaseoption < FOLD_CASE_DEFAULT || foldcaseoption > FOLD_CASE_EXCLUDE_SPECIAL_I) {
+                throw new IllegalArgumentException("Invalid fold case option");
+            }
+            m_foldCase_ = foldcaseoption;
+        }
+
+        // public getters ----------------------------------------------------
+
+        /**
+         * Checks if the comparison mode is code point compare.
+         * 
+         * @return true for code point compare, false for code unit compare
+         * @stable ICU 2.4
+         */
+        public boolean getCodePointCompare() {
+            return m_codePointCompare_ == Normalizer.COMPARE_CODE_POINT_ORDER;
+        }
+
+        /**
+         * Checks if Comparator is in the case insensitive mode.
+         * 
+         * @return true if Comparator performs case insensitive comparison, false otherwise
+         * @stable ICU 2.4
+         */
+        public boolean getIgnoreCase() {
+            return m_ignoreCase_;
+        }
+
+        /**
+         * Gets the fold case options set in Comparator to be used with case insensitive comparison.
+         * 
+         * @return either FOLD_CASE_DEFAULT or FOLD_CASE_EXCLUDE_SPECIAL_I
+         * @see #FOLD_CASE_DEFAULT
+         * @see #FOLD_CASE_EXCLUDE_SPECIAL_I
+         * @stable ICU 2.4
+         */
+        public int getIgnoreCaseOption() {
+            return m_foldCase_;
+        }
+
+        // public other methods ----------------------------------------------
+
+        /**
+         * Compare two strings depending on the options selected during construction.
+         * 
+         * @param a
+         *            first source string.
+         * @param b
+         *            second source string.
+         * @return 0 returned if a == b. If a < b, a negative value is returned. Otherwise if a > b,
+         *         a positive value is returned.
+         * @exception ClassCastException
+         *                thrown when either a or b is not a String object
+         * @stable ICU 2.4
+         */
+        public int compare(Object a, Object b) {
+            String str1 = (String) a;
+            String str2 = (String) b;
+
+            if (str1 == str2) {
+                return 0;
+            }
+            if (str1 == null) {
+                return -1;
+            }
+            if (str2 == null) {
+                return 1;
+            }
+
+            if (m_ignoreCase_) {
+                return compareCaseInsensitive(str1, str2);
+            }
+            return compareCaseSensitive(str1, str2);
+        }
+
+        // private data member ----------------------------------------------
+
+        /**
+         * Code unit comparison flag. True if code unit comparison is required. False if code point
+         * comparison is required.
+         */
+        private int m_codePointCompare_;
+
+        /**
+         * Fold case comparison option.
+         */
+        private int m_foldCase_;
+
+        /**
+         * Flag indicator if ignore case is to be used during comparison
+         */
+        private boolean m_ignoreCase_;
+
+        /**
+         * Code point order offset for surrogate characters
+         */
+        private static final int CODE_POINT_COMPARE_SURROGATE_OFFSET_ = 0x2800;
+
+        // private method ---------------------------------------------------
+
+        /**
+         * Compares case insensitive. This is a direct port of ICU4C, to make maintainence life
+         * easier.
+         * 
+         * @param s1
+         *            first string to compare
+         * @param s2
+         *            second string to compare
+         * @return -1 is s1 &lt; s2, 0 if equals,
+         */
+        private int compareCaseInsensitive(String s1, String s2) {
+            return NormalizerImpl.cmpEquivFold(s1, s2, m_foldCase_ | m_codePointCompare_
+                    | Normalizer.COMPARE_IGNORE_CASE);
+        }
+
+        /**
+         * Compares case sensitive. This is a direct port of ICU4C, to make maintainence life
+         * easier.
+         * 
+         * @param s1
+         *            first string to compare
+         * @param s2
+         *            second string to compare
+         * @return -1 is s1 &lt; s2, 0 if equals,
+         */
+        private int compareCaseSensitive(String s1, String s2) {
+            // compare identical prefixes - they do not need to be fixed up
+            // limit1 = start1 + min(lenght1, length2)
+            int length1 = s1.length();
+            int length2 = s2.length();
+            int minlength = length1;
+            int result = 0;
+            if (length1 < length2) {
+                result = -1;
+            } else if (length1 > length2) {
+                result = 1;
+                minlength = length2;
+            }
+
+            char c1 = 0;
+            char c2 = 0;
+            int index = 0;
+            for (; index < minlength; index++) {
+                c1 = s1.charAt(index);
+                c2 = s2.charAt(index);
+                // check pseudo-limit
+                if (c1 != c2) {
+                    break;
+                }
+            }
+
+            if (index == minlength) {
+                return result;
+            }
+
+            boolean codepointcompare = m_codePointCompare_ == Normalizer.COMPARE_CODE_POINT_ORDER;
+            // if both values are in or above the surrogate range, fix them up
+            if (c1 >= LEAD_SURROGATE_MIN_VALUE && c2 >= LEAD_SURROGATE_MIN_VALUE
+                    && codepointcompare) {
+                // subtract 0x2800 from BMP code points to make them smaller
+                // than supplementary ones
+                if ((c1 <= LEAD_SURROGATE_MAX_VALUE && (index + 1) != length1 && isTrailSurrogate(s1.charAt(index + 1)))
+                        || (isTrailSurrogate(c1) && index != 0 && isLeadSurrogate(s1.charAt(index - 1)))) {
+                    // part of a surrogate pair, leave >=d800
+                } else {
+                    // BMP code point - may be surrogate code point - make
+                    // < d800
+                    c1 -= CODE_POINT_COMPARE_SURROGATE_OFFSET_;
+                }
+
+                if ((c2 <= LEAD_SURROGATE_MAX_VALUE && (index + 1) != length2 && isTrailSurrogate(s2.charAt(index + 1)))
+                        || (isTrailSurrogate(c2) && index != 0 && isLeadSurrogate(s2.charAt(index - 1)))) {
+                    // part of a surrogate pair, leave >=d800
+                } else {
+                    // BMP code point - may be surrogate code point - make <d800
+                    c2 -= CODE_POINT_COMPARE_SURROGATE_OFFSET_;
+                }
+            }
+
+            // now c1 and c2 are in UTF-32-compatible order
+            return c1 - c2;
+        }
+    }
+
+    // private data members -------------------------------------------------
+
+    /**
+     * Shift value for lead surrogate to form a supplementary character.
+     */
+    private static final int LEAD_SURROGATE_SHIFT_ = 10;
+
+    /**
+     * Mask to retrieve the significant value from a trail surrogate.
+     */
+    private static final int TRAIL_SURROGATE_MASK_ = 0x3FF;
+
+    /**
+     * Value that all lead surrogate starts with
+     */
+    private static final int LEAD_SURROGATE_OFFSET_ = LEAD_SURROGATE_MIN_VALUE
+            - (SUPPLEMENTARY_MIN_VALUE >> LEAD_SURROGATE_SHIFT_);
+
+    // private methods ------------------------------------------------------
+
+    /**
+     * <p>
+     * Converts argument code point and returns a String object representing the code point's value
+     * in UTF16 format.
+     * </p>
+     * <p>
+     * This method does not check for the validity of the codepoint, the results are not guaranteed
+     * if a invalid codepoint is passed as argument.
+     * </p>
+     * <p>
+     * The result is a string whose length is 1 for non-supplementary code points, 2 otherwise.
+     * </p>
+     * 
+     * @param ch
+     *            code point
+     * @return string representation of the code point
+     */
+    private static String toString(int ch) {
+        if (ch < SUPPLEMENTARY_MIN_VALUE) {
+            return String.valueOf((char) ch);
+        }
+
+        StringBuffer result = new StringBuffer();
+        result.append(getLeadSurrogate(ch));
+        result.append(getTrailSurrogate(ch));
+        return result.toString();
+    }
+}
+// eof
diff --git a/src/com/ibm/icu/text/UnescapeTransliterator.java b/src/com/ibm/icu/text/UnescapeTransliterator.java
new file mode 100644
index 0000000..b914d1e
--- /dev/null
+++ b/src/com/ibm/icu/text/UnescapeTransliterator.java
@@ -0,0 +1,251 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/19/2001  aliu        Creation.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+
+/**
+ * A transliterator that converts Unicode escape forms to the
+ * characters they represent.  Escape forms have a prefix, a suffix, a
+ * radix, and minimum and maximum digit counts.
+ *
+ * <p>This class is package private.  It registers several standard
+ * variants with the system which are then accessed via their IDs.
+ *
+ * @author Alan Liu
+ */
+class UnescapeTransliterator extends Transliterator {
+
+    /**
+     * The encoded pattern specification.  The pattern consists of
+     * zero or more forms.  Each form consists of a prefix, suffix,
+     * radix, minimum digit count, and maximum digit count.  These
+     * values are stored as a five character header.  That is, their
+     * numeric values are cast to 16-bit characters and stored in the
+     * string.  Following these five characters, the prefix
+     * characters, then suffix characters are stored.  Each form thus
+     * takes n+5 characters, where n is the total length of the prefix
+     * and suffix.  The end is marked by a header of length one
+     * consisting of the character END.
+     */
+    private char spec[];
+
+    /**
+     * Special character marking the end of the spec[] array.
+     */
+    private static final char END = 0xFFFF;
+
+    /**
+     * Registers standard variants with the system.  Called by
+     * Transliterator during initialization.
+     */
+    static void register() {
+        // Unicode: "U+10FFFF" hex, min=4, max=6
+        Transliterator.registerFactory("Hex-Any/Unicode", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Unicode", new char[] {
+                    2, 0, 16, 4, 6, 'U', '+',
+                    END
+                });
+            }
+        });
+        
+        // Java: "\\uFFFF" hex, min=4, max=4
+        Transliterator.registerFactory("Hex-Any/Java", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Java", new char[] {
+                    2, 0, 16, 4, 4, '\\', 'u',
+                    END
+                });
+            }
+        });
+        
+        // C: "\\uFFFF" hex, min=4, max=4; \\U0010FFFF hex, min=8, max=8
+        Transliterator.registerFactory("Hex-Any/C", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/C", new char[] {
+                    2, 0, 16, 4, 4, '\\', 'u',
+                    2, 0, 16, 8, 8, '\\', 'U',
+                    END
+                });
+            }
+        });
+        
+        // XML: "&#x10FFFF;" hex, min=1, max=6
+        Transliterator.registerFactory("Hex-Any/XML", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/XML", new char[] {
+                    3, 1, 16, 1, 6, '&', '#', 'x', ';',
+                    END
+                });
+            }
+        });
+
+        // XML10: "&1114111;" dec, min=1, max=7 (not really "Hex-Any")
+        Transliterator.registerFactory("Hex-Any/XML10", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/XML10", new char[] {
+                    2, 1, 10, 1, 7, '&', '#', ';',
+                    END
+                });
+            }
+        });
+
+        // Perl: "\\x{263A}" hex, min=1, max=6
+        Transliterator.registerFactory("Hex-Any/Perl", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any/Perl", new char[] {
+                    3, 1, 16, 1, 6, '\\', 'x', '{', '}',
+                    END
+                });
+            }
+        });
+
+        // All: Java, C, Perl, XML, XML10, Unicode
+        Transliterator.registerFactory("Hex-Any", new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnescapeTransliterator("Hex-Any", new char[] {
+                    2, 0, 16, 4, 6, 'U', '+',            // Unicode
+                    2, 0, 16, 4, 4, '\\', 'u',           // Java
+                    2, 0, 16, 8, 8, '\\', 'U',           // C (surrogates)
+                    3, 1, 16, 1, 6, '&', '#', 'x', ';',  // XML
+                    2, 1, 10, 1, 7, '&', '#', ';',       // XML10
+                    3, 1, 16, 1, 6, '\\', 'x', '{', '}', // Perl
+                    END
+                });
+            }
+        });
+    }
+
+    /**
+     * Package private constructor.  Takes the encoded spec array.
+     */
+    UnescapeTransliterator(String ID, char spec[]) {
+        super(ID, null);
+        this.spec = spec;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position pos, boolean isIncremental) {
+        int start = pos.start;
+        int limit = pos.limit;
+        int i, j, ipat;
+
+      loop:
+        while (start < limit) {
+            // Loop over the forms in spec[].  Exit this loop when we
+            // match one of the specs.  Exit the outer loop if a
+            // partial match is detected and isIncremental is true.
+            for (j=0, ipat=0; spec[ipat] != END; ++j) {
+
+                // Read the header
+                int prefixLen = spec[ipat++];
+                int suffixLen = spec[ipat++];
+                int radix     = spec[ipat++];
+                int minDigits = spec[ipat++];
+                int maxDigits = spec[ipat++];
+
+                // s is a copy of start that is advanced over the
+                // characters as we parse them.
+                int s = start;
+                boolean match = true;
+
+                for (i=0; i<prefixLen; ++i) {
+                    if (s >= limit) {
+                        if (i > 0) {
+                            // We've already matched a character.  This is
+                            // a partial match, so we return if in
+                            // incremental mode.  In non-incremental mode,
+                            // go to the next spec.
+                            if (isIncremental) {
+                                break loop;
+                            }
+                            match = false;
+                            break;
+                        }
+                    }
+                    char c = text.charAt(s++);
+                    if (c != spec[ipat + i]) {
+                        match = false;
+                        break;
+                    }
+                }
+
+                if (match) {
+                    int u = 0;
+                    int digitCount = 0;
+                    for (;;) {
+                        if (s >= limit) {
+                            // Check for partial match in incremental mode.
+                            if (s > start && isIncremental) {
+                                break loop;
+                            }
+                            break;
+                        }
+                        int ch = text.char32At(s);
+                        int digit = UCharacter.digit(ch, radix);
+                        if (digit < 0) {
+                            break;
+                        }
+                        s += UTF16.getCharCount(ch);
+                        u = (u * radix) + digit;
+                        if (++digitCount == maxDigits) {
+                            break;
+                        }
+                    }
+
+                    match = (digitCount >= minDigits);
+
+                    if (match) {
+                        for (i=0; i<suffixLen; ++i) {
+                            if (s >= limit) {
+                                // Check for partial match in incremental mode.
+                                if (s > start && isIncremental) {
+                                    break loop;
+                                }
+                                match = false;
+                                break;
+                            }
+                            char c = text.charAt(s++);
+                            if (c != spec[ipat + prefixLen + i]) {
+                                match = false;
+                                break;
+                            }
+                        }
+
+                        if (match) {
+                            // At this point, we have a match
+                            String str = UTF16.valueOf(u);
+                            text.replace(start, s, str);
+                            limit -= s - start - str.length();
+                            // The following break statement leaves the
+                            // loop that is traversing the forms in
+                            // spec[].  We then parse the next input
+                            // character.
+                            break;
+                        }
+                    }
+                }
+
+                ipat += prefixLen + suffixLen;
+            }
+
+            if (start < limit) {
+                start += UTF16.getCharCount(text.char32At(start));
+            }
+        }
+
+        pos.contextLimit += limit - pos.limit;
+        pos.limit = limit;
+        pos.start = start;
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeCompressor.java b/src/com/ibm/icu/text/UnicodeCompressor.java
new file mode 100644
index 0000000..bb1b2fb
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeCompressor.java
@@ -0,0 +1,1006 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+* A compression engine implementing the Standard Compression Scheme
+* for Unicode (SCSU) as outlined in <A
+* HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+* Report #6</A>.
+*
+* <P>The SCSU works by using dynamically positioned <EM>windows</EM>
+* consisting of 128 consecutive characters in Unicode.  During compression, 
+* characters within a window are encoded in the compressed stream as the bytes 
+* <TT>0x7F - 0xFF</TT>. The SCSU provides transparency for the characters 
+* (bytes) between <TT>U+0000 - U+00FF</TT>.  The SCSU approximates the 
+* storage size of traditional character sets, for example 1 byte per
+* character for ASCII or Latin-1 text, and 2 bytes per character for CJK
+* ideographs.</P>
+*
+* <P><STRONG>USAGE</STRONG></P>
+*
+* <P>The static methods on <TT>UnicodeCompressor</TT> may be used in a
+* straightforward manner to compress simple strings:</P>
+*
+* <PRE>
+*  String s = ... ; // get string from somewhere
+*  byte [] compressed = UnicodeCompressor.compress(s);
+* </PRE>
+*
+* <P>The static methods have a fairly large memory footprint.
+* For finer-grained control over memory usage, 
+* <TT>UnicodeCompressor</TT> offers more powerful APIs allowing
+* iterative compression:</P>
+*
+* <PRE>
+*  // Compress an array "chars" of length "len" using a buffer of 512 bytes
+*  // to the OutputStream "out"
+*
+*  UnicodeCompressor myCompressor         = new UnicodeCompressor();
+*  final static int  BUFSIZE              = 512;
+*  byte []           byteBuffer           = new byte [ BUFSIZE ];
+*  int               bytesWritten         = 0;
+*  int []            unicharsRead         = new int [1];
+*  int               totalCharsCompressed = 0;
+*  int               totalBytesWritten    = 0;
+*
+*  do {
+*    // do the compression
+*    bytesWritten = myCompressor.compress(chars, totalCharsCompressed, 
+*                                         len, unicharsRead,
+*                                         byteBuffer, 0, BUFSIZE);
+*
+*    // do something with the current set of bytes
+*    out.write(byteBuffer, 0, bytesWritten);
+*
+*    // update the no. of characters compressed
+*    totalCharsCompressed += unicharsRead[0];
+*
+*    // update the no. of bytes written
+*    totalBytesWritten += bytesWritten;
+*
+*  } while(totalCharsCompressed < len);
+*
+*  myCompressor.reset(); // reuse compressor
+* </PRE>
+*
+* @see UnicodeDecompressor
+*
+* @author Stephen F. Booth
+* @stable ICU 2.4
+*/
+
+/*
+*
+* COMPRESSION STRATEGY
+*
+* Single Byte Mode
+*
+* There are three relevant cases.
+* If the character is in the current window or is Latin-1 (U+0000,
+* U+0009, U+000A, U+000D, U+0020 - U+007F), the character is placed
+* directly in the stream as a single byte.
+*
+*  1. Current character is in defined, inactive window.
+*  2. Current character is in undefined window.
+*  3. Current character is uncompressible Unicode (U+3400 - U+DFFF).
+* 
+*  1. Current character is in defined, inactive window
+*    A. Look ahead two characters
+*    B. If both following characters in same window as current character, 
+*       switch to defined window
+*    C. If only next character is in same window as current character, 
+*       quote defined window
+*    D. If neither of following characters is in same window as current, 
+*       quote defined window
+*   
+*  2. Current character is in undefined window
+*    A. Look ahead two characters
+*    B. If both following characters in same window as current character, 
+*       define new window
+*    C. If only next character in same window as current character, 
+*       switch to Unicode mode
+*       NOTE: This costs us one extra byte.  However, 
+*        since we have a limited number of windows to work with, it is 
+*        assumed the cost will pay off later in savings from a window with
+*        more characters in it.
+*    D. If neither of following characters in same window as current, 
+*       switch to Unicode mode.  Alternative to above: just quote 
+*       Unicode (same byte cost)
+*   
+*  3. Current character is uncompressible Unicode (U+3400 - U+DFFF)
+*    A. Look ahead one character
+*    B. If next character in non-compressible region, switch to 
+*       Unicode mode
+*    C. If next character not in non-compressible region, quote Unicode
+*   
+*
+* The following chart illustrates the bytes required for encoding characters
+* in each possible way
+*
+* 
+*                                   SINGLE BYTE MODE
+*                                       Characters in a row with same index
+*               tag encountered             1       2       3       4
+*               ---------------------------------------------------------------
+*               none (in current window)    1       2       3       4
+*
+*               quote Unicode               3       6       9       12
+*
+*   window not  switch to Unicode           3       5       7       9     byte
+*   defined     define window               3       4       5       6     cost
+*      
+*   window      switch to window            2       3       4       5
+*   defined     quote window                2       4       6       8
+*
+*  Unicode Mode
+*
+* There are two relevant cases.
+* If the character is in the non-compressible region
+* (U+3400 - U+DFFF), the character is simply written to the
+* stream as a pair of bytes.
+*
+* 1. Current character is in defined, inactive window.
+* 2. Current character is in undefined window.
+*
+*  1.Current character is in defined, inactive window
+*    A. Look ahead one character
+*    B. If next character has same index as current character, 
+*       switch to defined window (and switch to single-byte mode)
+*    C. If not, just put bytes in stream
+*   
+*  
+*  2. Current character is in undefined window
+*    A. Look ahead two characters
+*    B. If both in same window as current character, define window 
+*       (and switch to single-byte mode)
+*    C. If only next character in same window, just put bytes in stream
+*        NOTE: This costs us one extra byte.  However, 
+*        since we have a limited number of windows to work with, it is 
+*        assumed the cost will pay off later in savings from a window with 
+*        more characters in it.
+*    D. If neither in same window, put bytes in stream
+*   
+*
+* The following chart illustrates the bytes required for encoding characters
+* in each possible way
+*
+* 
+*                                   UNICODE MODE
+*                                       Characters in a row with same index
+*               tag encountered             1       2       3       4
+*               ---------------------------------------------------------------
+*               none                        2       4       6       8
+*
+*               quote Unicode               3       6       9       12
+*
+*   window not  define window               3       4       5       6     byte
+*   defined                                                               cost
+*   window      switch to window            2       3       4       5
+*   defined
+*/
+public final class UnicodeCompressor implements SCSU
+{
+    //==========================
+    // Class variables
+    //==========================
+
+    /** For quick identification of a byte as a single-byte mode tag */
+    private static boolean [] sSingleTagTable = {
+        // table generated by CompressionTableGenerator
+        false, true, true, true, true, true, true, true, true, false,
+    false, true, true, false, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true,
+    true, true, false, false, false, false, false, false,false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false   
+    };
+
+    /** For quick identification of a byte as a unicode mode tag */
+    private static boolean [] sUnicodeTagTable = {
+        // table generated by CompressionTableGenerator
+        false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false, false, false, false, false, false, false, true,
+    true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, false, false,
+    false, false, false, false, false, false, false, false, false,
+    false, false 
+    };
+
+    //==========================
+    // Instance variables
+    //==========================
+    
+    /** Alias to current dynamic window */
+    private int       fCurrentWindow   = 0;
+
+    /** Dynamic compression window offsets */
+    private int []    fOffsets         = new int [ NUMWINDOWS ];
+
+    /** Current compression mode */
+    private int       fMode            = SINGLEBYTEMODE;
+
+    /** Keeps count of times character indices are encountered */
+    private int []    fIndexCount      = new int [ MAXINDEX + 1 ];
+
+    /** The time stamps indicate when a window was last defined */
+    private int []    fTimeStamps      = new int [ NUMWINDOWS ];
+    
+    /** The current time stamp */
+    private int       fTimeStamp       = 0;
+    
+
+    /**
+     * Create a UnicodeCompressor.
+     * Sets all windows to their default values.
+     * @see #reset
+     * @stable ICU 2.4
+     */
+    public UnicodeCompressor()
+    {
+    reset();              // initialize to defaults
+    }
+
+    /**
+     * Compress a string into a byte array.
+     * @param buffer The string to compress.
+     * @return A byte array containing the compressed characters.
+     * @see #compress(char [], int, int)
+     * @stable ICU 2.4
+     */
+    public static byte [] compress(String buffer)
+    {
+    return compress(buffer.toCharArray(), 0, buffer.length());
+    }
+
+    /**
+     * Compress a Unicode character array into a byte array.
+     * @param buffer The character buffer to compress.
+     * @param start The start of the character run to compress.
+     * @param limit The limit of the character run to compress.
+     * @return A byte array containing the compressed characters.
+     * @see #compress(String)
+     * @stable ICU 2.4
+     */
+    public static byte [] compress(char [] buffer,
+                   int start,
+                   int limit)
+    {
+    UnicodeCompressor comp = new UnicodeCompressor();
+
+    // use a buffer that we know will never overflow
+    // in the worst case, each character will take 3 bytes
+    // to encode: UQU, hibyte, lobyte.  In this case, the
+    // compressed data will look like: SCU, UQU, hibyte, lobyte, ...
+    // buffer must be at least 4 bytes in size
+    int len = Math.max(4, 3 * (limit - start) + 1);
+    byte [] temp = new byte [len];
+
+    int byteCount = comp.compress(buffer, start, limit, null, 
+                      temp, 0, len);
+
+    byte [] result = new byte [byteCount];
+    System.arraycopy(temp, 0, result, 0, byteCount);
+    return result;
+    }
+
+    /**
+     * Compress a Unicode character array into a byte array.
+     *
+     * This function will only consume input that can be completely
+     * output.
+     *
+     * @param charBuffer The character buffer to compress.
+     * @param charBufferStart The start of the character run to compress.
+     * @param charBufferLimit The limit of the character run to compress.
+     * @param charsRead A one-element array.  If not null, on return 
+     * the number of characters read from charBuffer.
+     * @param byteBuffer A buffer to receive the compressed data.  This 
+     * buffer must be at minimum four bytes in size.
+     * @param byteBufferStart The starting offset to which to write 
+     * compressed data.
+     * @param byteBufferLimit The limiting offset for writing compressed data.
+     * @return The number of bytes written to byteBuffer.
+     * @stable ICU 2.4
+     */
+    public int compress(char []     charBuffer,
+            int         charBufferStart,
+            int         charBufferLimit,
+            int []      charsRead,
+            byte []     byteBuffer,
+            int         byteBufferStart,
+            int         byteBufferLimit)
+    {
+        // the current position in the target byte buffer
+    int     bytePos       = byteBufferStart;
+    
+    // the current position in the source unicode character buffer
+    int     ucPos         = charBufferStart;
+    
+    // the current unicode character from the source buffer
+    int     curUC         = INVALIDCHAR;
+    
+    // the index for the current character
+        int     curIndex      = -1;
+        
+    // look ahead
+    int     nextUC        = INVALIDCHAR;
+    int     forwardUC     = INVALIDCHAR;
+    
+        // temporary for window searching
+    int     whichWindow   = 0;
+    
+    // high and low bytes of the current unicode character
+    int     hiByte        = 0;
+    int     loByte        = 0;
+
+
+    // byteBuffer must be at least 4 bytes in size
+    if(byteBuffer.length < 4 || (byteBufferLimit - byteBufferStart) < 4)
+        throw new IllegalArgumentException("byteBuffer.length < 4");
+
+    mainLoop:
+    while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+        switch(fMode) {
+        // main single byte mode compression loop
+        case SINGLEBYTEMODE:
+        singleByteModeLoop:
+        while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+        // get current char
+        curUC = charBuffer[ucPos++];
+
+        // get next char
+        if(ucPos < charBufferLimit) 
+            nextUC = charBuffer[ucPos];
+        else
+            nextUC = INVALIDCHAR;
+        
+        // chars less than 0x0080 (excluding tags) go straight
+        // in stream
+        if(curUC < 0x0080) {
+            loByte = curUC & 0xFF;
+
+            // we need to check and make sure we don't
+            // accidentally write a single byte mode tag to
+            // the stream unless it's quoted
+            if(sSingleTagTable[loByte]) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if( (bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // since we know the byte is less than 0x80, SQUOTE0
+            // will use static window 0, or ASCII
+            byteBuffer[bytePos++] = (byte) SQUOTE0;
+            }
+
+            byteBuffer[bytePos++] = (byte) loByte;
+        }
+
+        // if the char belongs to current window, convert it
+        // to a byte by adding the generic compression offset
+        // and subtracting the window's offset
+        else if(inDynamicWindow(curUC, fCurrentWindow) ) {
+            byteBuffer[bytePos++] = (byte) 
+            (curUC - fOffsets[ fCurrentWindow ] 
+             + COMPRESSIONOFFSET);
+        }
+        
+        // if char is not in compressible range, either switch to or
+        // quote from unicode
+        else if( ! isCompressible(curUC) ) {
+            // only check next character if it is valid
+            if(nextUC != INVALIDCHAR && isCompressible(nextUC)) {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+            if( (bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) SQUOTEU;
+            byteBuffer[bytePos++] = (byte) (curUC >>> 8);
+            byteBuffer[bytePos++] = (byte) (curUC & 0xFF);
+            }
+            else {
+                                // make sure there is enough room to
+                                // write all four bytes if not, rewind
+                                // the source stream and break out
+            if((bytePos + 3) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) SCHANGEU;
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[hiByte])
+                // add quote Unicode tag
+                byteBuffer[bytePos++]   = (byte) UQUOTEU;    
+
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+                
+            fMode = UNICODEMODE;
+            break singleByteModeLoop;
+            }
+        }
+
+        // if the char is in a currently defined dynamic
+        // window, figure out which one, and either switch to
+        // it or quote from it
+        else if((whichWindow = findDynamicWindow(curUC)) 
+            != INVALIDWINDOW ) {
+            // look ahead
+            if( (ucPos + 1) < charBufferLimit )
+            forwardUC = charBuffer[ucPos + 1];
+            else
+            forwardUC = INVALIDCHAR;
+            
+            // all three chars in same window, switch to that
+            // window inDynamicWindow will return false for
+            // INVALIDCHAR
+            if(inDynamicWindow(nextUC, whichWindow) 
+               && inDynamicWindow(forwardUC, whichWindow)) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if( (bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte)(SCHANGE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - fOffsets[whichWindow] 
+                 + COMPRESSIONOFFSET);
+            fTimeStamps [ whichWindow ] = ++fTimeStamp;
+            fCurrentWindow = whichWindow;
+            }
+            
+            // either only next char or neither in same
+            // window, so quote
+            else {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if((bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) (SQUOTE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - fOffsets[whichWindow] 
+                 + COMPRESSIONOFFSET);
+            }
+        }
+
+        // if a static window is defined, and the following
+        // character is not in that static window, quote from
+        // the static window Note: to quote from a static
+        // window, don't add 0x80
+        else if((whichWindow = findStaticWindow(curUC)) 
+            != INVALIDWINDOW 
+            && ! inStaticWindow(nextUC, whichWindow) ) {
+            // make sure there is enough room to write both
+            // bytes if not, rewind the source stream and
+            // break out
+            if((bytePos + 1) >= byteBufferLimit) 
+            { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) (SQUOTE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) 
+            (curUC - sOffsets[whichWindow]);
+        }
+        
+        // if a window is not defined, decide if we want to
+        // define a new one or switch to unicode mode
+        else {
+            // determine index for current char (char is compressible)
+            curIndex = makeIndex(curUC);
+            fIndexCount[curIndex]++;
+
+            // look ahead
+            if((ucPos + 1) < charBufferLimit)
+            forwardUC = charBuffer[ucPos + 1];
+            else
+            forwardUC = INVALIDCHAR;
+
+            // if we have encountered this index at least once
+            // before, define a new window
+            // OR
+            // three chars in a row with same index, define a
+            // new window (makeIndex will return RESERVEDINDEX
+            // for INVALIDCHAR)
+            if((fIndexCount[curIndex] > 1) ||
+               (curIndex == makeIndex(nextUC) 
+            && curIndex == makeIndex(forwardUC))) {
+            // make sure there is enough room to write all
+            // three bytes if not, rewind the source
+            // stream and break out
+            if( (bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // get least recently defined window
+            whichWindow = getLRDefinedWindow();
+
+            byteBuffer[bytePos++] = (byte)(SDEFINE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) curIndex;
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - sOffsetTable[curIndex] 
+                 + COMPRESSIONOFFSET);
+
+            fOffsets[whichWindow] = sOffsetTable[curIndex];
+            fCurrentWindow = whichWindow;
+            fTimeStamps [whichWindow] = ++fTimeStamp;
+            }
+
+            // only two chars in a row with same index, so
+            // switch to unicode mode (makeIndex will return
+            // RESERVEDINDEX for INVALIDCHAR)
+            // OR
+            // three chars have different indices, so switch
+            // to unicode mode
+            else {
+            // make sure there is enough room to write all
+            // four bytes if not, rewind the source stream
+            // and break out
+            if((bytePos + 3) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte) SCHANGEU;
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[hiByte])
+                // add quote Unicode tag
+                byteBuffer[bytePos++] = (byte) UQUOTEU; 
+
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+
+            fMode = UNICODEMODE;
+            break singleByteModeLoop;
+            }
+        }
+        }
+        break;
+
+        case UNICODEMODE:
+        // main unicode mode compression loop
+        unicodeModeLoop:
+        while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+        // get current char
+        curUC = charBuffer[ucPos++];    
+
+        // get next char
+        if( ucPos < charBufferLimit )
+            nextUC = charBuffer[ucPos];
+        else
+            nextUC = INVALIDCHAR;
+
+        // if we have two uncompressible chars in a row,
+        // put the current char's bytes in the stream
+        if( ! isCompressible(curUC) 
+            || (nextUC != INVALIDCHAR && ! isCompressible(nextUC))) {
+            // make sure there is enough room to write all three bytes
+            // if not, rewind the source stream and break out
+            if( (bytePos + 2) >= byteBufferLimit) 
+            { --ucPos; break mainLoop; }
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[ hiByte ])
+            // add quote Unicode tag
+            byteBuffer[bytePos++] = (byte) UQUOTEU;
+                
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+        }
+        
+        // bytes less than 0x80 can go straight in the stream,
+        // but in single-byte mode
+        else if(curUC < 0x0080) {
+            loByte = curUC & 0xFF;
+
+            // if two chars in a row below 0x80 and the
+            // current char is not a single-byte mode tag,
+            // switch to single-byte mode
+            if(nextUC != INVALIDCHAR 
+               && nextUC < 0x0080 && ! sSingleTagTable[ loByte ] ) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if( (bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // use the last-active window
+            whichWindow = fCurrentWindow;
+            byteBuffer[bytePos++] = (byte)(UCHANGE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) loByte;
+
+            //fCurrentWindow = 0;
+            fTimeStamps [whichWindow] = ++fTimeStamp;
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            }
+
+            // otherwise, just write the bytes to the stream
+            // (this will cover the case of only 1 char less than 0x80
+            // and single-byte mode tags)
+            else {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if((bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // since the character is less than 0x80, the
+            // high byte is always 0x00 - no need for
+            // (curUC >>> 8)
+            byteBuffer[bytePos++] = (byte) 0x00;
+            byteBuffer[bytePos++] = (byte) loByte;
+            }
+        }
+
+        // figure out if the current char is in a defined window
+        else if((whichWindow = findDynamicWindow(curUC)) 
+            != INVALIDWINDOW ) {
+            // if two chars in a row in the same window,
+            // switch to that window and go to single-byte mode
+            // inDynamicWindow will return false for INVALIDCHAR
+            if(inDynamicWindow(nextUC, whichWindow)) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+            if((bytePos + 1) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            byteBuffer[bytePos++] = (byte)(UCHANGE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - fOffsets[whichWindow] 
+                 + COMPRESSIONOFFSET);
+
+            fTimeStamps [ whichWindow ] = ++fTimeStamp;
+            fCurrentWindow = whichWindow;
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            }
+
+            // otherwise, just quote the unicode for the char
+            else {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+            if((bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[ hiByte ])
+                // add quote Unicode tag
+                byteBuffer[bytePos++] = (byte) UQUOTEU;
+
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+            }
+        }
+        
+        // char is not in a defined window
+        else {
+            // determine index for current char (char is compressible)
+            curIndex = makeIndex(curUC);
+            fIndexCount[curIndex]++;
+            
+            // look ahead
+            if( (ucPos + 1) < charBufferLimit )
+            forwardUC = charBuffer[ucPos + 1];
+            else
+            forwardUC = INVALIDCHAR;
+            
+            // if we have encountered this index at least once
+            // before, define a new window for it that hasn't
+            // previously been redefined
+            // OR
+            // if three chars in a row with the same index,
+            // define a new window (makeIndex will return
+            // RESERVEDINDEX for INVALIDCHAR)
+            if((fIndexCount[curIndex] > 1) ||
+               (curIndex == makeIndex(nextUC) 
+            && curIndex == makeIndex(forwardUC))) {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+            if((bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            // get least recently defined window
+            whichWindow = getLRDefinedWindow();
+
+            byteBuffer[bytePos++] = (byte)(UDEFINE0 + whichWindow);
+            byteBuffer[bytePos++] = (byte) curIndex;
+            byteBuffer[bytePos++] = (byte) 
+                (curUC - sOffsetTable[curIndex] 
+                 + COMPRESSIONOFFSET);
+            
+            fOffsets[whichWindow] = sOffsetTable[curIndex];
+            fCurrentWindow = whichWindow;
+            fTimeStamps [whichWindow] = ++fTimeStamp;
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            }
+            
+            // otherwise just quote the unicode, and save our
+            // windows for longer runs
+            else {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+            if((bytePos + 2) >= byteBufferLimit) 
+                { --ucPos; break mainLoop; }
+
+            hiByte = curUC >>> 8;
+            loByte = curUC & 0xFF;
+
+            if(sUnicodeTagTable[ hiByte ])
+                // add quote Unicode tag
+                byteBuffer[bytePos++] = (byte) UQUOTEU;  
+            
+            byteBuffer[bytePos++] = (byte) hiByte;
+            byteBuffer[bytePos++] = (byte) loByte;
+            }
+        }
+        }
+        }  // end switch
+    }
+    
+        // fill in output parameter
+    if(charsRead != null)
+        charsRead [0] = (ucPos - charBufferStart);
+        
+        // return # of bytes written
+        return (bytePos - byteBufferStart);
+    }
+
+    /** 
+     * Reset the compressor to its initial state.
+     * @stable ICU 2.4
+     */
+    public void reset()
+    {
+    int i;
+
+        // reset dynamic windows
+        fOffsets[0] = 0x0080;    // Latin-1
+        fOffsets[1] = 0x00C0;    // Latin-1 Supplement + Latin Extended-A
+        fOffsets[2] = 0x0400;    // Cyrillic
+        fOffsets[3] = 0x0600;    // Arabic
+        fOffsets[4] = 0x0900;    // Devanagari
+        fOffsets[5] = 0x3040;    // Hiragana
+        fOffsets[6] = 0x30A0;    // Katakana
+        fOffsets[7] = 0xFF00;    // Fullwidth ASCII
+
+
+        // reset time stamps
+        for(i = 0; i < NUMWINDOWS; i++) {
+            fTimeStamps[i]          = 0;
+        }
+
+        // reset count of seen indices
+        for(i = 0; i <= MAXINDEX; i++ ) {
+            fIndexCount[i] = 0;
+        }
+
+        fTimeStamp      = 0;                // Reset current time stamp
+        fCurrentWindow  = 0;                // Make current window Latin-1
+        fMode           = SINGLEBYTEMODE;   // Always start in single-byte mode
+    }
+
+    //==========================
+    // Determine the index for a character
+    //==========================
+
+    /**
+     * Create the index value for a character.
+     * For more information on this function, refer to table X-3
+     * <A HREF="http://www.unicode.org/unicode/reports/tr6">UTR6</A>.
+     * @param c The character in question.
+     * @return An index for c
+     */
+    private static int makeIndex(int c)
+    {
+        // check the predefined indices
+        if(c >= 0x00C0 && c < 0x0140)
+            return LATININDEX;
+        else if(c >= 0x0250 && c < 0x02D0)
+            return IPAEXTENSIONINDEX;
+        else if(c >= 0x0370 && c < 0x03F0)
+            return GREEKINDEX;
+        else if(c >= 0x0530 && c < 0x0590)
+            return ARMENIANINDEX;
+        else if(c >= 0x3040 && c < 0x30A0)
+            return HIRAGANAINDEX;
+        else if(c >= 0x30A0 && c < 0x3120)
+            return KATAKANAINDEX;
+        else if(c >= 0xFF60 && c < 0xFF9F)
+            return HALFWIDTHKATAKANAINDEX;
+
+        // calculate index
+        else if(c >= 0x0080 && c < 0x3400)
+            return (c / 0x80) & 0xFF;
+        else if(c >= 0xE000 && c <= 0xFFFF)
+            return ((c - 0xAC00) / 0x80) & 0xFF;
+            
+        // should never happen
+        else {
+            return RESERVEDINDEX;
+        }
+    }
+
+    //==========================
+    // Check if a given character fits in a window
+    //==========================
+
+    /**
+    * Determine if a character is in a dynamic window.
+    * @param c The character to test
+    * @param whichWindow The dynamic window the test
+    * @return true if <TT>c</TT> will fit in <TT>whichWindow</TT>, 
+    * false otherwise.
+    */
+    private boolean inDynamicWindow(int c, 
+                    int whichWindow)
+    {
+        return (c >= fOffsets[whichWindow] 
+        && c < (fOffsets[whichWindow] + 0x80));
+    }
+
+    /**
+     * Determine if a character is in a static window.
+    * @param c The character to test
+    * @param whichWindow The static window the test
+    * @return true if <TT>c</TT> will fit in <TT>whichWindow</TT>, 
+    * false otherwise.
+    */
+    private static boolean inStaticWindow(int c, 
+                      int whichWindow)
+    {
+        return (c >= sOffsets[whichWindow]
+        && c < (sOffsets[whichWindow] + 0x80));
+    }
+
+    //==========================
+    // Check if a given character is compressible
+    //==========================
+
+    /**
+    * Determine if a character is compressible.
+    * @param c The character to test.
+    * @return true if the <TT>c</TT> is compressible, false otherwise.
+    */
+    private static boolean isCompressible(int c)
+    {
+        return (c < 0x3400 || c >= 0xE000);
+    }
+
+    //==========================
+    // Check if a window is defined for a given character
+    //==========================
+
+    /**
+     * Determine if a dynamic window for a certain character is defined
+     * @param c The character in question
+     * @return The dynamic window containing <TT>c</TT>, or 
+     * INVALIDWINDOW if not defined.
+     */
+    private int findDynamicWindow(int c)
+    {
+    // supposedly faster to count down
+        //for(int i = 0; i < NUMWINDOWS; i++) {
+    for(int i = NUMWINDOWS - 1; i >= 0; --i) {
+        if(inDynamicWindow(c, i)) {
+        ++fTimeStamps[i];
+                return i;
+        }
+    }
+        
+        return INVALIDWINDOW;
+    }
+
+    /**
+     * Determine if a static window for a certain character is defined
+     * @param c The character in question
+     * @return The static window containing <TT>c</TT>, or 
+     * INVALIDWINDOW if not defined.
+     */
+    private static int findStaticWindow(int c)
+    {
+    // supposedly faster to count down
+        //for(int i = 0; i < NUMSTATICWINDOWS; i++) {
+    for(int i = NUMSTATICWINDOWS - 1; i >= 0; --i) {
+        if(inStaticWindow(c, i)) {
+                return i;
+        }
+    }
+    
+        return INVALIDWINDOW;
+    }
+    
+    //==========================
+    // Find the least-recently used window
+    //==========================
+
+    /** Find the least-recently defined window */
+    private int getLRDefinedWindow()
+    {
+        int leastRU         = Integer.MAX_VALUE;
+        int whichWindow     = INVALIDWINDOW;
+
+        // find least recently used window
+        // supposedly faster to count down
+        //for( int i = 0; i < NUMWINDOWS; i++ ) {
+        for(int i = NUMWINDOWS - 1; i >= 0; --i ) {
+            if( fTimeStamps[i] < leastRU ) {
+                leastRU   = fTimeStamps[i];
+                whichWindow  = i;
+            }
+        }
+
+        return whichWindow;
+    }
+    
+}
diff --git a/src/com/ibm/icu/text/UnicodeDecompressor.java b/src/com/ibm/icu/text/UnicodeDecompressor.java
new file mode 100644
index 0000000..0e6dbca
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeDecompressor.java
@@ -0,0 +1,562 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+* A decompression engine implementing the Standard Compression Scheme
+* for Unicode (SCSU) as outlined in <A
+* HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+* Report #6</A>.
+*
+* <P><STRONG>USAGE</STRONG></P>
+*
+* <P>The static methods on <TT>UnicodeDecompressor</TT> may be used in a
+* straightforward manner to decompress simple strings:</P>
+*
+* <PRE>
+*  byte [] compressed = ... ; // get compressed bytes from somewhere
+*  String result = UnicodeDecompressor.decompress(compressed);
+* </PRE>
+*
+* <P>The static methods have a fairly large memory footprint.
+* For finer-grained control over memory usage, 
+* <TT>UnicodeDecompressor</TT> offers more powerful APIs allowing
+* iterative decompression:</P>
+*
+* <PRE>
+*  // Decompress an array "bytes" of length "len" using a buffer of 512 chars
+*  // to the Writer "out"
+*
+*  UnicodeDecompressor myDecompressor         = new UnicodeDecompressor();
+*  final static int    BUFSIZE                = 512;
+*  char []             charBuffer             = new char [ BUFSIZE ];
+*  int                 charsWritten           = 0;
+*  int []              bytesRead              = new int [1];
+*  int                 totalBytesDecompressed = 0;
+*  int                 totalCharsWritten      = 0;
+*
+*  do {
+*    // do the decompression
+*    charsWritten = myDecompressor.decompress(bytes, totalBytesDecompressed, 
+*                                             len, bytesRead,
+*                                             charBuffer, 0, BUFSIZE);
+*
+*    // do something with the current set of chars
+*    out.write(charBuffer, 0, charsWritten);
+*
+*    // update the no. of bytes decompressed
+*    totalBytesDecompressed += bytesRead[0];
+*
+*    // update the no. of chars written
+*    totalCharsWritten += charsWritten;
+*
+*  } while(totalBytesDecompressed < len);
+*
+*  myDecompressor.reset(); // reuse decompressor
+* </PRE>
+*
+* <P>Decompression is performed according to the standard set forth in 
+* <A HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical 
+* Report #6</A></P>
+*
+* @see UnicodeCompressor
+*
+* @author Stephen F. Booth
+* @stable ICU 2.4
+*/
+public final class UnicodeDecompressor implements SCSU
+{
+    //==========================
+    // Instance variables
+    //==========================
+    
+    /** Alias to current dynamic window */
+    private int       fCurrentWindow   = 0;
+
+    /** Dynamic compression window offsets */
+    private int []    fOffsets         = new int [ NUMWINDOWS ];
+
+    /** Current compression mode */
+    private int       fMode            = SINGLEBYTEMODE;
+
+    /** Size of our internal buffer */
+    private final static int BUFSIZE   = 3;
+
+    /** Internal buffer for saving state */
+    private byte []   fBuffer          = new byte [BUFSIZE];
+
+    /** Number of characters in our internal buffer */
+    private int       fBufferLength    = 0;
+    
+
+    /**
+     * Create a UnicodeDecompressor.
+     * Sets all windows to their default values.
+     * @see #reset
+     * @stable ICU 2.4
+     */
+    public UnicodeDecompressor()
+    {
+    reset();              // initialize to defaults
+    }
+
+    /**
+     * Decompress a byte array into a String.
+     * @param buffer The byte array to decompress.
+     * @return A String containing the decompressed characters.
+     * @see #decompress(byte [], int, int)
+     * @stable ICU 2.4
+     */
+    public static String decompress(byte [] buffer)
+    {
+    char [] buf = decompress(buffer, 0, buffer.length);
+    return new String(buf);
+    }
+
+    /**
+     * Decompress a byte array into a Unicode character array.
+     * @param buffer The byte array to decompress.
+     * @param start The start of the byte run to decompress.
+     * @param limit The limit of the byte run to decompress.
+     * @return A character array containing the decompressed bytes.
+     * @see #decompress(byte [])
+     * @stable ICU 2.4
+     */
+    public static char [] decompress(byte [] buffer,
+                     int start,
+                     int limit)
+    {
+    UnicodeDecompressor comp = new UnicodeDecompressor();
+
+    // use a buffer we know will never overflow
+    // in the worst case, each byte will decompress
+    // to a surrogate pair (buffer must be at least 2 chars)
+    int len = Math.max(2, 2 * (limit - start));
+    char [] temp = new char [len];
+
+    int charCount = comp.decompress(buffer, start, limit, null, 
+                    temp, 0, len);
+
+    char [] result = new char [charCount];
+    System.arraycopy(temp, 0, result, 0, charCount);
+    return result;
+    }
+    
+    /**
+     * Decompress a byte array into a Unicode character array.
+     *
+     * This function will either completely fill the output buffer, 
+     * or consume the entire input.  
+     *
+     * @param byteBuffer The byte buffer to decompress.
+     * @param byteBufferStart The start of the byte run to decompress.
+     * @param byteBufferLimit The limit of the byte run to decompress.
+     * @param bytesRead A one-element array.  If not null, on return
+     * the number of bytes read from byteBuffer.
+     * @param charBuffer A buffer to receive the decompressed data. 
+     * This buffer must be at minimum two characters in size.
+     * @param charBufferStart The starting offset to which to write 
+     * decompressed data.
+     * @param charBufferLimit The limiting offset for writing 
+     * decompressed data.
+     * @return The number of Unicode characters written to charBuffer.
+     * @stable ICU 2.4
+     */
+    public int decompress(byte []    byteBuffer,
+              int        byteBufferStart,
+              int        byteBufferLimit,
+              int []     bytesRead,
+              char []    charBuffer,
+              int        charBufferStart,
+              int        charBufferLimit)
+    {
+    // the current position in the source byte buffer
+    int bytePos      = byteBufferStart;
+    
+    // the current position in the target char buffer
+    int ucPos        = charBufferStart;
+        
+        // the current byte from the source buffer
+    int aByte        = 0x00;
+
+
+    // charBuffer must be at least 2 chars in size
+    if(charBuffer.length < 2 || (charBufferLimit - charBufferStart) < 2)
+        throw new IllegalArgumentException("charBuffer.length < 2");
+    
+    // if our internal buffer isn't empty, flush its contents
+    // to the output buffer before doing any more decompression
+    if(fBufferLength > 0) {
+
+        int newBytes = 0;
+
+        // fill the buffer completely, to guarantee one full character
+        if(fBufferLength != BUFSIZE) {
+        newBytes = fBuffer.length - fBufferLength;
+
+        // verify there are newBytes bytes in byteBuffer
+        if(byteBufferLimit - byteBufferStart < newBytes)
+            newBytes = byteBufferLimit - byteBufferStart;
+
+        System.arraycopy(byteBuffer, byteBufferStart, 
+                 fBuffer, fBufferLength, newBytes);
+        }
+
+        // reset buffer length to 0 before recursive call
+        fBufferLength = 0;
+
+        // call self recursively to decompress the buffer
+        int count = decompress(fBuffer, 0, fBuffer.length, null,
+                   charBuffer, charBufferStart, 
+                   charBufferLimit);
+
+        // update the positions into the arrays
+        ucPos += count;
+        bytePos += newBytes;
+    }
+
+        // the main decompression loop
+    mainLoop:
+    while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+        switch(fMode) {  
+        case SINGLEBYTEMODE:
+        // single-byte mode decompression loop
+        singleByteModeLoop:
+        while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+        aByte = byteBuffer[bytePos++] & 0xFF;
+        switch(aByte) {
+            // All bytes from 0x80 through 0xFF are remapped
+            // to chars or surrogate pairs according to the
+            // currently active window
+        case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: 
+        case 0x85: case 0x86: case 0x87: case 0x88: case 0x89:
+        case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E:
+        case 0x8F: case 0x90: case 0x91: case 0x92: case 0x93:
+        case 0x94: case 0x95: case 0x96: case 0x97: case 0x98:
+        case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D:
+        case 0x9E: case 0x9F: case 0xA0: case 0xA1: case 0xA2:
+        case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7:
+        case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC:
+        case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1:
+        case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6:
+        case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB:
+        case 0xBC: case 0xBD: case 0xBE: case 0xBF: case 0xC0:
+        case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5:
+        case 0xC6: case 0xC7: case 0xC8: case 0xC9: case 0xCA:
+        case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF:
+        case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4:
+        case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9:
+        case 0xDA: case 0xDB: case 0xDC: case 0xDD: case 0xDE:
+        case 0xDF: case 0xE0: case 0xE1: case 0xE2: case 0xE3:
+        case 0xE4: case 0xE5: case 0xE6: case 0xE7: case 0xE8:
+        case 0xE9: case 0xEA: case 0xEB: case 0xEC: case 0xED:
+        case 0xEE: case 0xEF: case 0xF0: case 0xF1: case 0xF2:
+        case 0xF3: case 0xF4: case 0xF5: case 0xF6: case 0xF7:
+        case 0xF8: case 0xF9: case 0xFA: case 0xFB: case 0xFC:
+        case 0xFD: case 0xFE: case 0xFF: 
+            // For offsets <= 0xFFFF, convert to a single char
+            // by adding the window's offset and subtracting
+            // the generic compression offset
+            if(fOffsets[ fCurrentWindow ] <= 0xFFFF) {
+            charBuffer[ucPos++] = (char) 
+                (aByte + fOffsets[ fCurrentWindow ] 
+                 - COMPRESSIONOFFSET);
+            }
+            // For offsets > 0x10000, convert to a surrogate pair by 
+            // normBase = window's offset - 0x10000
+            // high surr. = 0xD800 + (normBase >> 10)
+            // low  surr. = 0xDC00 + (normBase & 0x3FF) + (byte & 0x7F)
+            else {
+            // make sure there is enough room to write
+            // both characters 
+            // if not, save state and break out
+            if((ucPos + 1) >= charBufferLimit) {
+                --bytePos;
+                System.arraycopy(byteBuffer, bytePos,
+                         fBuffer, 0, 
+                         byteBufferLimit - bytePos);
+                fBufferLength = byteBufferLimit - bytePos;
+                bytePos += fBufferLength;
+                break mainLoop; 
+            }
+            
+            int normalizedBase = fOffsets[ fCurrentWindow ] 
+                - 0x10000;
+            charBuffer[ucPos++] = (char) 
+                (0xD800 + (normalizedBase >> 10));
+            charBuffer[ucPos++] = (char) 
+                (0xDC00 + (normalizedBase & 0x3FF)+(aByte & 0x7F));
+            }
+            break;
+
+            // bytes from 0x20 through 0x7F are treated as ASCII and
+            // are remapped to chars by padding the high byte
+            // (this is the same as quoting from static window 0)
+            // NUL (0x00), HT (0x09), CR (0x0A), LF (0x0D) 
+            // are treated as ASCII as well
+        case 0x00: case 0x09: case 0x0A: case 0x0D:
+        case 0x20: case 0x21: case 0x22: case 0x23: case 0x24:
+        case 0x25: case 0x26: case 0x27: case 0x28: case 0x29:
+        case 0x2A: case 0x2B: case 0x2C: case 0x2D: case 0x2E:
+        case 0x2F: case 0x30: case 0x31: case 0x32: case 0x33:
+        case 0x34: case 0x35: case 0x36: case 0x37: case 0x38:
+        case 0x39: case 0x3A: case 0x3B: case 0x3C: case 0x3D:
+        case 0x3E: case 0x3F: case 0x40: case 0x41: case 0x42:
+        case 0x43: case 0x44: case 0x45: case 0x46: case 0x47:
+        case 0x48: case 0x49: case 0x4A: case 0x4B: case 0x4C:
+        case 0x4D: case 0x4E: case 0x4F: case 0x50: case 0x51:
+        case 0x52: case 0x53: case 0x54: case 0x55: case 0x56:
+        case 0x57: case 0x58: case 0x59: case 0x5A: case 0x5B:
+        case 0x5C: case 0x5D: case 0x5E: case 0x5F: case 0x60:
+        case 0x61: case 0x62: case 0x63: case 0x64: case 0x65:
+        case 0x66: case 0x67: case 0x68: case 0x69: case 0x6A:
+        case 0x6B: case 0x6C: case 0x6D: case 0x6E: case 0x6F:
+        case 0x70: case 0x71: case 0x72: case 0x73: case 0x74:
+        case 0x75: case 0x76: case 0x77: case 0x78: case 0x79:
+        case 0x7A: case 0x7B: case 0x7C: case 0x7D: case 0x7E:
+        case 0x7F: 
+            charBuffer[ucPos++] = (char) aByte;
+            break;
+
+            // quote unicode
+        case SQUOTEU:
+            // verify we have two bytes following tag
+            // if not, save state and break out
+            if( (bytePos + 1) >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            aByte = byteBuffer[bytePos++];
+            charBuffer[ucPos++] = (char)
+            (aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+            break;
+
+            // switch to Unicode mode
+        case SCHANGEU:
+            fMode = UNICODEMODE;
+            break singleByteModeLoop;
+            //break;
+
+            // handle all quote tags
+        case SQUOTE0: case SQUOTE1: case SQUOTE2: case SQUOTE3:
+        case SQUOTE4: case SQUOTE5: case SQUOTE6: case SQUOTE7:
+            // verify there is a byte following the tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            // if the byte is in the range 0x00 - 0x7F, use
+            // static window n otherwise, use dynamic window n
+            int dByte = byteBuffer[bytePos++] & 0xFF;
+            charBuffer[ucPos++] = (char) 
+            (dByte+ (dByte >= 0x00 && dByte < 0x80 
+                 ? sOffsets[aByte - SQUOTE0] 
+                 : (fOffsets[aByte - SQUOTE0] 
+                    - COMPRESSIONOFFSET))); 
+            break;
+
+            // handle all change tags
+        case SCHANGE0: case SCHANGE1: case SCHANGE2: case SCHANGE3:
+        case SCHANGE4: case SCHANGE5: case SCHANGE6: case SCHANGE7:
+            fCurrentWindow = aByte - SCHANGE0;
+            break;
+
+            // handle all define tags
+        case SDEFINE0: case SDEFINE1: case SDEFINE2: case SDEFINE3:
+        case SDEFINE4: case SDEFINE5: case SDEFINE6: case SDEFINE7:
+            // verify there is a byte following the tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+
+            fCurrentWindow = aByte - SDEFINE0;
+            fOffsets[fCurrentWindow] = 
+            sOffsetTable[byteBuffer[bytePos++] & 0xFF];
+            break;
+
+            // handle define extended tag
+        case SDEFINEX:
+            // verify we have two bytes following tag
+            // if not, save state and break out
+            if((bytePos + 1) >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            aByte = byteBuffer[bytePos++] & 0xFF;
+            fCurrentWindow = (aByte & 0xE0) >> 5;
+            fOffsets[fCurrentWindow] = 0x10000 + 
+            (0x80 * (((aByte & 0x1F) << 8) 
+                 | (byteBuffer[bytePos++] & 0xFF)));
+            break;
+                            
+            // reserved, shouldn't happen
+        case SRESERVED:
+            break;
+
+        } // end switch
+        } // end while
+        break;
+
+        case UNICODEMODE:
+        // unicode mode decompression loop
+        unicodeModeLoop:
+        while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+        aByte = byteBuffer[bytePos++] & 0xFF;
+        switch(aByte) {
+            // handle all define tags
+        case UDEFINE0: case UDEFINE1: case UDEFINE2: case UDEFINE3:
+        case UDEFINE4: case UDEFINE5: case UDEFINE6: case UDEFINE7:
+            // verify there is a byte following tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            fCurrentWindow = aByte - UDEFINE0;
+            fOffsets[fCurrentWindow] = 
+            sOffsetTable[byteBuffer[bytePos++] & 0xFF];
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            //break;
+
+            // handle define extended tag
+        case UDEFINEX:
+            // verify we have two bytes following tag
+            // if not, save state and break out
+            if((bytePos + 1) >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+            
+            aByte = byteBuffer[bytePos++] & 0xFF;
+            fCurrentWindow = (aByte & 0xE0) >> 5;
+            fOffsets[fCurrentWindow] = 0x10000 + 
+            (0x80 * (((aByte & 0x1F) << 8) 
+                 | (byteBuffer[bytePos++] & 0xFF)));
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            //break;
+
+            // handle all change tags
+        case UCHANGE0: case UCHANGE1: case UCHANGE2: case UCHANGE3:
+        case UCHANGE4: case UCHANGE5: case UCHANGE6: case UCHANGE7:
+            fCurrentWindow = aByte - UCHANGE0;
+            fMode = SINGLEBYTEMODE;
+            break unicodeModeLoop;
+            //break;
+
+            // quote unicode
+        case UQUOTEU:
+            // verify we have two bytes following tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit  - 1) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+                
+            aByte = byteBuffer[bytePos++];
+            charBuffer[ucPos++] = (char) 
+            (aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+            break;
+
+        default:
+            // verify there is a byte following tag
+            // if not, save state and break out
+            if(bytePos >= byteBufferLimit ) {
+            --bytePos;
+            System.arraycopy(byteBuffer, bytePos,
+                     fBuffer, 0, 
+                     byteBufferLimit - bytePos);
+            fBufferLength = byteBufferLimit - bytePos;
+            bytePos += fBufferLength;
+            break mainLoop; 
+            }
+
+            charBuffer[ucPos++] = (char) 
+            (aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+            break;
+
+        } // end switch
+        } // end while
+        break;
+        
+        } // end switch( fMode )
+    } // end while
+
+        // fill in output parameter
+    if(bytesRead != null)
+        bytesRead [0] = (bytePos - byteBufferStart);
+
+        // return # of chars written
+    return (ucPos - charBufferStart);
+    }
+
+    /** 
+     * Reset the decompressor to its initial state. 
+     * @stable ICU 2.4
+     */
+    public void reset()
+    {
+        // reset dynamic windows
+        fOffsets[0] = 0x0080;    // Latin-1
+        fOffsets[1] = 0x00C0;    // Latin-1 Supplement + Latin Extended-A
+        fOffsets[2] = 0x0400;    // Cyrillic
+        fOffsets[3] = 0x0600;    // Arabic
+        fOffsets[4] = 0x0900;    // Devanagari
+        fOffsets[5] = 0x3040;    // Hiragana
+        fOffsets[6] = 0x30A0;    // Katakana
+        fOffsets[7] = 0xFF00;    // Fullwidth ASCII
+
+
+        fCurrentWindow  = 0;                // Make current window Latin-1
+        fMode           = SINGLEBYTEMODE;   // Always start in single-byte mode
+    fBufferLength   = 0;                // Empty buffer
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeFilter.java b/src/com/ibm/icu/text/UnicodeFilter.java
new file mode 100644
index 0000000..ac52b5f
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeFilter.java
@@ -0,0 +1,70 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeFilter</code> defines a protocol for selecting a
+ * subset of the full range (U+0000 to U+FFFF) of Unicode characters.
+ * Currently, filters are used in conjunction with classes like {@link
+ * Transliterator} to only process selected characters through a
+ * transformation.
+ * @stable ICU 2.0
+ */
+public abstract class UnicodeFilter implements UnicodeMatcher {
+
+    /**
+     * Returns <tt>true</tt> for characters that are in the selected
+     * subset.  In other words, if a character is <b>to be
+     * filtered</b>, then <tt>contains()</tt> returns
+     * <b><tt>false</tt></b>.
+     * @stable ICU 2.0
+     */
+    public abstract boolean contains(int c);
+
+    /**
+     * Default implementation of UnicodeMatcher::matches() for Unicode
+     * filters.  Matches a single 16-bit code unit at offset.
+     * @stable ICU 2.0
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+        int c;
+        if (offset[0] < limit &&
+            contains(c = text.char32At(offset[0]))) {
+            offset[0] += UTF16.getCharCount(c);
+            return U_MATCH;
+        }
+        if (offset[0] > limit &&
+            contains(c = text.char32At(offset[0]))) {
+            // Backup offset by 1, unless the preceding character is a
+            // surrogate pair -- then backup by 2 (keep offset pointing at
+            // the lead surrogate).
+            --offset[0];
+            if (offset[0] >= 0) {
+                offset[0] -= UTF16.getCharCount(text.char32At(offset[0])) - 1;
+            }
+            return U_MATCH;
+        }
+        if (incremental && offset[0] == limit) {
+            return U_PARTIAL_MATCH;
+        }
+        return U_MISMATCH;
+    }
+
+    /**
+     * (This should not be here; it is declared to make CheckTags
+     * happy.  Java inserts a synthetic constructor and CheckTags
+     * can't tell that it's synthetic.)
+     *
+     * TODO Remove this when the JDK property implements MemberDoc.isSynthetic
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected UnicodeFilter() {}
+}
diff --git a/src/com/ibm/icu/text/UnicodeMatcher.java b/src/com/ibm/icu/text/UnicodeMatcher.java
new file mode 100644
index 0000000..a82359a
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeMatcher.java
@@ -0,0 +1,138 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeMatcher</code> defines a protocol for objects that can
+ * match a range of characters in a Replaceable string.
+ * @stable ICU 2.0
+ */
+public interface UnicodeMatcher {
+
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * mismatch between the text and this matcher.  The text contains
+     * a character which does not match, or the text does not contain
+     * all desired characters for a non-incremental match.
+     * @stable ICU 2.0
+     */
+    public static final int U_MISMATCH = 0;
+
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * partial match between the text and this matcher.  This value is
+     * only returned for incremental match operations.  All characters
+     * of the text match, but more characters are required for a
+     * complete match.  Alternatively, for variable-length matchers,
+     * all characters of the text match, and if more characters were
+     * supplied at limit, they might also match.
+     * @stable ICU 2.0
+     */
+    public static final int U_PARTIAL_MATCH = 1;
+
+    /**
+     * Constant returned by <code>matches()</code> indicating a
+     * complete match between the text and this matcher.  For an
+     * incremental variable-length match, this value is returned if
+     * the given text matches, and it is known that additional
+     * characters would not alter the extent of the match.
+     * @stable ICU 2.0
+     */
+    public static final int U_MATCH = 2;
+
+    /**
+     * The character at index i, where i < contextStart || i >= contextLimit,
+     * is ETHER.  This allows explicit matching by rules and UnicodeSets
+     * of text outside the context.  In traditional terms, this allows anchoring
+     * at the start and/or end.
+     * @stable ICU 2.0
+     */
+    static final char ETHER = '\uFFFF';
+
+    /**
+     * Return a UMatchDegree value indicating the degree of match for
+     * the given text at the given offset.  Zero, one, or more
+     * characters may be matched.
+     *
+     * Matching in the forward direction is indicated by limit >
+     * offset.  Characters from offset forwards to limit-1 will be
+     * considered for matching.
+     *
+     * Matching in the reverse direction is indicated by limit <
+     * offset.  Characters from offset backwards to limit+1 will be
+     * considered for matching.
+     *
+     * If limit == offset then the only match possible is a zero
+     * character match (which subclasses may implement if desired).
+     *
+     * If U_MATCH is returned, then as a side effect, advance the
+     * offset parameter to the limit of the matched substring.  In the
+     * forward direction, this will be the index of the last matched
+     * character plus one.  In the reverse direction, this will be the
+     * index of the last matched character minus one.
+     *
+     * @param text the text to be matched
+     * @param offset on input, the index into text at which to begin
+     * matching.  On output, the limit of the matched text.  The
+     * number of matched characters is the output value of offset
+     * minus the input value.  Offset should always point to the
+     * HIGH SURROGATE (leading code unit) of a pair of surrogates,
+     * both on entry and upon return.
+     * @param limit the limit index of text to be matched.  Greater
+     * than offset for a forward direction match, less than offset for
+     * a backward direction match.  The last character to be
+     * considered for matching will be text.charAt(limit-1) in the
+     * forward direction or text.charAt(limit+1) in the backward
+     * direction.
+     * @param incremental if TRUE, then assume further characters may
+     * be inserted at limit and check for partial matching.  Otherwise
+     * assume the text as given is complete.
+     * @return a match degree value indicating a full match, a partial
+     * match, or a mismatch.  If incremental is FALSE then
+     * U_PARTIAL_MATCH should never be returned.
+     * @stable ICU 2.0
+     */
+    public abstract int matches(Replaceable text,
+                                int[] offset,
+                                int limit,
+                                boolean incremental);
+
+    /**
+     * Returns a string representation of this matcher.  If the result of
+     * calling this function is passed to the appropriate parser, it
+     * will produce another matcher that is equal to this one.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are those other than
+     * U+000A, U+0020..U+007E.
+     * @stable ICU 2.0
+     */
+    public abstract String toPattern(boolean escapeUnprintable);
+
+    /**
+     * Returns TRUE if this matcher will match a character c, where c
+     * & 0xFF == v, at offset, in the forward direction (with limit >
+     * offset).  This is used by <tt>RuleBasedTransliterator</tt> for
+     * indexing.
+     *
+     * <p>Note:  This API uses an int even though the value will be
+     * restricted to 8 bits in order to avoid complications with
+     * signedness (bytes convert to ints in the range -128..127).
+     * @stable ICU 2.0
+     */
+    public abstract boolean matchesIndexValue(int v);
+
+    /**
+     * Union the set of all characters that may be matched by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the source characters
+     * @stable ICU 2.2
+     */
+    public abstract void addMatchSetTo(UnicodeSet toUnionTo);
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UnicodeNameTransliterator.java b/src/com/ibm/icu/text/UnicodeNameTransliterator.java
new file mode 100644
index 0000000..60fe496
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeNameTransliterator.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 1996-2004, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ */
+package com.ibm.icu.text;
+import com.ibm.icu.lang.*;
+
+/**
+ * A transliterator that performs character to name mapping.
+ * It generates the Perl syntax \N{name}.
+ * @author Alan Liu
+ */
+class UnicodeNameTransliterator extends Transliterator {
+
+    static final String _ID = "Any-Name";
+
+    static final String OPEN_DELIM = "\\N{";
+    static final char CLOSE_DELIM = '}';
+    static final int OPEN_DELIM_LEN = 3;
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UnicodeNameTransliterator(null);
+            }
+        });
+    }
+
+    /**
+     * Constructs a transliterator.
+     */
+    public UnicodeNameTransliterator(UnicodeFilter filter) {
+        super(_ID, filter);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+        int cursor = offsets.start;
+        int limit = offsets.limit;
+        
+        StringBuffer str = new StringBuffer();
+        str.append(OPEN_DELIM);
+        int len;
+        String name;
+        
+        while (cursor < limit) {
+            int c = text.char32At(cursor);
+            if ((name=UCharacter.getExtendedName(c)) != null) {
+                
+                str.setLength(OPEN_DELIM_LEN);
+                str.append(name).append(CLOSE_DELIM);
+
+                int clen = UTF16.getCharCount(c);
+                text.replace(cursor, cursor+clen, str.toString());
+                len = str.length();
+                cursor += len; // advance cursor by 1 and adjust for new text
+                limit += len-clen; // change in length
+            } else {
+                ++cursor;
+            }
+        }
+
+        offsets.contextLimit += limit - offsets.limit;
+        offsets.limit = limit;
+        offsets.start = cursor;
+    }
+}
diff --git a/src/com/ibm/icu/text/UnicodeReplacer.java b/src/com/ibm/icu/text/UnicodeReplacer.java
new file mode 100644
index 0000000..49c4c37
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeReplacer.java
@@ -0,0 +1,64 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+/**
+ * <code>UnicodeReplacer</code> defines a protocol for objects that
+ * replace a range of characters in a Replaceable string with output
+ * text.  The replacement is done via the Replaceable API so as to
+ * preserve out-of-band data.
+ * @author Alan Liu
+ */
+interface UnicodeReplacer {
+
+    /**
+     * Replace characters in 'text' from 'start' to 'limit' with the
+     * output text of this object.  Update the 'cursor' parameter to
+     * give the cursor position and return the length of the
+     * replacement text.
+     *
+     * @param text the text to be matched
+     * @param start inclusive start index of text to be replaced
+     * @param limit exclusive end index of text to be replaced;
+     * must be greater than or equal to start
+     * @param cursor output parameter for the cursor position.
+     * Not all replacer objects will update this, but in a complete
+     * tree of replacer objects, representing the entire output side
+     * of a transliteration rule, at least one must update it.
+     * @return the number of 16-bit code units in the text replacing
+     * the characters at offsets start..(limit-1) in text
+     */
+    public abstract int replace(Replaceable text,
+                                int start,
+                                int limit,
+                                int[] cursor);
+
+    /**
+     * Returns a string representation of this replacer.  If the
+     * result of calling this function is passed to the appropriate
+     * parser, typically TransliteratorParser, it will produce another
+     * replacer that is equal to this one.
+     * @param escapeUnprintable if TRUE then convert unprintable
+     * character to their hex escape representations, \\uxxxx or
+     * \\Uxxxxxxxx.  Unprintable characters are defined by
+     * Utility.isUnprintable().
+     */
+    public abstract String toReplacerPattern(boolean escapeUnprintable);
+
+    /**
+     * Union the set of all characters that may output by this object
+     * into the given set.
+     * @param toUnionTo the set into which to union the output characters
+     */
+    public abstract void addReplacementSetTo(UnicodeSet toUnionTo);
+}
+
+//eof
diff --git a/src/com/ibm/icu/text/UnicodeSet.java b/src/com/ibm/icu/text/UnicodeSet.java
new file mode 100644
index 0000000..1641d08
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeSet.java
@@ -0,0 +1,3756 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.*;
+import com.ibm.icu.lang.*;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.UPropertyAliases;
+import com.ibm.icu.impl.SortedSetRelation;
+import com.ibm.icu.impl.RuleCharacterIterator;
+
+import com.ibm.icu.util.Freezable;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+
+import com.ibm.icu.text.BreakIterator;
+
+import java.util.MissingResourceException;
+import java.util.TreeSet;
+import java.util.Iterator;
+import java.util.Collection;
+
+/**
+ * A mutable set of Unicode characters and multicharacter strings.  Objects of this class
+ * represent <em>character classes</em> used in regular expressions.
+ * A character specifies a subset of Unicode code points.  Legal
+ * code points are U+0000 to U+10FFFF, inclusive.
+ *
+ * <p>The UnicodeSet class is not designed to be subclassed.
+ *
+ * <p><code>UnicodeSet</code> supports two APIs. The first is the
+ * <em>operand</em> API that allows the caller to modify the value of
+ * a <code>UnicodeSet</code> object. It conforms to Java 2's
+ * <code>java.util.Set</code> interface, although
+ * <code>UnicodeSet</code> does not actually implement that
+ * interface. All methods of <code>Set</code> are supported, with the
+ * modification that they take a character range or single character
+ * instead of an <code>Object</code>, and they take a
+ * <code>UnicodeSet</code> instead of a <code>Collection</code>.  The
+ * operand API may be thought of in terms of boolean logic: a boolean
+ * OR is implemented by <code>add</code>, a boolean AND is implemented
+ * by <code>retain</code>, a boolean XOR is implemented by
+ * <code>complement</code> taking an argument, and a boolean NOT is
+ * implemented by <code>complement</code> with no argument.  In terms
+ * of traditional set theory function names, <code>add</code> is a
+ * union, <code>retain</code> is an intersection, <code>remove</code>
+ * is an asymmetric difference, and <code>complement</code> with no
+ * argument is a set complement with respect to the superset range
+ * <code>MIN_VALUE-MAX_VALUE</code>
+ *
+ * <p>The second API is the
+ * <code>applyPattern()</code>/<code>toPattern()</code> API from the
+ * <code>java.text.Format</code>-derived classes.  Unlike the
+ * methods that add characters, add categories, and control the logic
+ * of the set, the method <code>applyPattern()</code> sets all
+ * attributes of a <code>UnicodeSet</code> at once, based on a
+ * string pattern.
+ *
+ * <p><b>Pattern syntax</b></p>
+ *
+ * Patterns are accepted by the constructors and the
+ * <code>applyPattern()</code> methods and returned by the
+ * <code>toPattern()</code> method.  These patterns follow a syntax
+ * similar to that employed by version 8 regular expression character
+ * classes.  Here are some simple examples:
+ *
+ * <blockquote>
+ *   <table>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="left"><code>[]</code></td>
+ *       <td valign="top">No characters</td>
+ *     </tr><tr align="top">
+ *       <td nowrap valign="top" align="left"><code>[a]</code></td>
+ *       <td valign="top">The character 'a'</td>
+ *     </tr><tr align="top">
+ *       <td nowrap valign="top" align="left"><code>[ae]</code></td>
+ *       <td valign="top">The characters 'a' and 'e'</td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="left"><code>[a-e]</code></td>
+ *       <td valign="top">The characters 'a' through 'e' inclusive, in Unicode code
+ *       point order</td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="left"><code>[\\u4E01]</code></td>
+ *       <td valign="top">The character U+4E01</td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="left"><code>[a{ab}{ac}]</code></td>
+ *       <td valign="top">The character 'a' and the multicharacter strings &quot;ab&quot; and
+ *       &quot;ac&quot;</td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="left"><code>[\p{Lu}]</code></td>
+ *       <td valign="top">All characters in the general category Uppercase Letter</td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ *
+ * Any character may be preceded by a backslash in order to remove any special
+ * meaning.  White space characters, as defined by UCharacterProperty.isRuleWhiteSpace(), are
+ * ignored, unless they are escaped.
+ *
+ * <p>Property patterns specify a set of characters having a certain
+ * property as defined by the Unicode standard.  Both the POSIX-like
+ * "[:Lu:]" and the Perl-like syntax "\p{Lu}" are recognized.  For a
+ * complete list of supported property patterns, see the User's Guide
+ * for UnicodeSet at
+ * <a href="http://www.icu-project.org/userguide/unicodeSet.html">
+ * http://www.icu-project.org/userguide/unicodeSet.html</a>.
+ * Actual determination of property data is defined by the underlying
+ * Unicode database as implemented by UCharacter.
+ *
+ * <p>Patterns specify individual characters, ranges of characters, and
+ * Unicode property sets.  When elements are concatenated, they
+ * specify their union.  To complement a set, place a '^' immediately
+ * after the opening '['.  Property patterns are inverted by modifying
+ * their delimiters; "[:^foo]" and "\P{foo}".  In any other location,
+ * '^' has no special meaning.
+ *
+ * <p>Ranges are indicated by placing two a '-' between two
+ * characters, as in "a-z".  This specifies the range of all
+ * characters from the left to the right, in Unicode order.  If the
+ * left character is greater than or equal to the
+ * right character it is a syntax error.  If a '-' occurs as the first
+ * character after the opening '[' or '[^', or if it occurs as the
+ * last character before the closing ']', then it is taken as a
+ * literal.  Thus "[a\\-b]", "[-ab]", and "[ab-]" all indicate the same
+ * set of three characters, 'a', 'b', and '-'.
+ *
+ * <p>Sets may be intersected using the '&' operator or the asymmetric
+ * set difference may be taken using the '-' operator, for example,
+ * "[[:L:]&[\\u0000-\\u0FFF]]" indicates the set of all Unicode letters
+ * with values less than 4096.  Operators ('&' and '|') have equal
+ * precedence and bind left-to-right.  Thus
+ * "[[:L:]-[a-z]-[\\u0100-\\u01FF]]" is equivalent to
+ * "[[[:L:]-[a-z]]-[\\u0100-\\u01FF]]".  This only really matters for
+ * difference; intersection is commutative.
+ *
+ * <table>
+ * <tr valign=top><td nowrap><code>[a]</code><td>The set containing 'a'
+ * <tr valign=top><td nowrap><code>[a-z]</code><td>The set containing 'a'
+ * through 'z' and all letters in between, in Unicode order
+ * <tr valign=top><td nowrap><code>[^a-z]</code><td>The set containing
+ * all characters but 'a' through 'z',
+ * that is, U+0000 through 'a'-1 and 'z'+1 through U+10FFFF
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>][<em>pat2</em>]]</code>
+ * <td>The union of sets specified by <em>pat1</em> and <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]&[<em>pat2</em>]]</code>
+ * <td>The intersection of sets specified by <em>pat1</em> and <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]-[<em>pat2</em>]]</code>
+ * <td>The asymmetric difference of sets specified by <em>pat1</em> and
+ * <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[:Lu:] or \p{Lu}</code>
+ * <td>The set of characters having the specified
+ * Unicode property; in
+ * this case, Unicode uppercase letters
+ * <tr valign=top><td nowrap><code>[:^Lu:] or \P{Lu}</code>
+ * <td>The set of characters <em>not</em> having the given
+ * Unicode property
+ * </table>
+ *
+ * <p><b>Warning</b>: you cannot add an empty string ("") to a UnicodeSet.</p>
+ *
+ * <p><b>Formal syntax</b></p>
+ *
+ * <blockquote>
+ *   <table>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>pattern :=&nbsp; </code></td>
+ *       <td valign="top"><code>('[' '^'? item* ']') |
+ *       property</code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>item :=&nbsp; </code></td>
+ *       <td valign="top"><code>char | (char '-' char) | pattern-expr<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>pattern-expr :=&nbsp; </code></td>
+ *       <td valign="top"><code>pattern | pattern-expr pattern |
+ *       pattern-expr op pattern<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>op :=&nbsp; </code></td>
+ *       <td valign="top"><code>'&amp;' | '-'<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>special :=&nbsp; </code></td>
+ *       <td valign="top"><code>'[' | ']' | '-'<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>char :=&nbsp; </code></td>
+ *       <td valign="top"><em>any character that is not</em><code> special<br>
+ *       | ('\\' </code><em>any character</em><code>)<br>
+ *       | ('&#92;u' hex hex hex hex)<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>hex :=&nbsp; </code></td>
+ *       <td valign="top"><em>any character for which
+ *       </em><code>Character.digit(c, 16)</code><em>
+ *       returns a non-negative result</em></td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="right"><code>property :=&nbsp; </code></td>
+ *       <td valign="top"><em>a Unicode property set pattern</td>
+ *     </tr>
+ *   </table>
+ *   <br>
+ *   <table border="1">
+ *     <tr>
+ *       <td>Legend: <table>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a := b</code></td>
+ *           <td width="20" valign="top">&nbsp; </td>
+ *           <td valign="top"><code>a</code> may be replaced by <code>b</code> </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a?</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">zero or one instance of <code>a</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a*</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">one or more instances of <code>a</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a | b</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">either <code>a</code> or <code>b</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>'a'</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">the literal string between the quotes </td>
+ *         </tr>
+ *       </table>
+ *       </td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ * <p>To iterate over contents of UnicodeSet, use UnicodeSetIterator class.
+ *
+ * @author Alan Liu
+ * @stable ICU 2.0
+ * @see UnicodeSetIterator
+ */
+public class UnicodeSet extends UnicodeFilter implements Freezable {
+
+    private static final int LOW = 0x000000; // LOW <= all valid values. ZERO for codepoints
+    private static final int HIGH = 0x110000; // HIGH > all valid values. 10000 for code units.
+                                             // 110000 for codepoints
+
+    /**
+     * Minimum value that can be stored in a UnicodeSet.
+     * @stable ICU 2.0
+     */
+    public static final int MIN_VALUE = LOW;
+
+    /**
+     * Maximum value that can be stored in a UnicodeSet.
+     * @stable ICU 2.0
+     */
+    public static final int MAX_VALUE = HIGH - 1;
+
+    private int len;      // length used; list may be longer to minimize reallocs
+    private int[] list;   // MUST be terminated with HIGH
+    private int[] rangeList; // internal buffer
+    private int[] buffer; // internal buffer
+
+    // NOTE: normally the field should be of type SortedSet; but that is missing a public clone!!
+    // is not private so that UnicodeSetIterator can get access
+    TreeSet strings = new TreeSet();
+
+    /**
+     * The pattern representation of this set.  This may not be the
+     * most economical pattern.  It is the pattern supplied to
+     * applyPattern(), with variables substituted and whitespace
+     * removed.  For sets constructed without applyPattern(), or
+     * modified using the non-pattern API, this string will be null,
+     * indicating that toPattern() must generate a pattern
+     * representation from the inversion list.
+     */
+    private String pat = null;
+
+    private static final int START_EXTRA = 16;         // initial storage. Must be >= 0
+    private static final int GROW_EXTRA = START_EXTRA; // extra amount for growth. Must be >= 0
+
+    // Special property set IDs
+    private static final String ANY_ID   = "ANY";   // [\u0000-\U0010FFFF]
+    private static final String ASCII_ID = "ASCII"; // [\u0000-\u007F]
+    private static final String ASSIGNED = "Assigned"; // [:^Cn:]
+
+    /**
+     * A set of all characters _except_ the second through last characters of
+     * certain ranges.  These ranges are ranges of characters whose
+     * properties are all exactly alike, e.g. CJK Ideographs from
+     * U+4E00 to U+9FA5.
+     */
+    private static UnicodeSet INCLUSIONS[] = null;
+
+    //----------------------------------------------------------------
+    // Public API
+    //----------------------------------------------------------------
+
+    /**
+     * Constructs an empty set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet() {
+        list = new int[1 + START_EXTRA];
+        list[len++] = HIGH;
+    }
+
+    /**
+     * Constructs a copy of an existing set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(UnicodeSet other) {
+        set(other);
+    }
+
+    /**
+     * Constructs a set containing the given range. If <code>end >
+     * start</code> then an empty set is created.
+     *
+     * @param start first character, inclusive, of range
+     * @param end last character, inclusive, of range
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(int start, int end) {
+        this();
+        complement(start, end);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.  Whitespace is ignored.
+     * @param pattern a string specifying what characters are in the set
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(String pattern) {
+        this();
+        applyPattern(pattern, null, null, IGNORE_SPACE);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param ignoreWhitespace if true, ignore characters for which
+     * UCharacterProperty.isRuleWhiteSpace() returns true
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(String pattern, boolean ignoreWhitespace) {
+        this();
+        applyPattern(pattern, null, null, ignoreWhitespace ? IGNORE_SPACE : 0);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param options a bitmask indicating which options to apply.
+     * Valid options are IGNORE_SPACE and CASE.
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     * @stable ICU 3.8
+     */
+    public UnicodeSet(String pattern, int options) {
+        this();
+        applyPattern(pattern, null, null, options);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param pos on input, the position in pattern at which to start parsing.
+     * On output, the position after the last character parsed.
+     * @param symbols a symbol table mapping variables to char[] arrays
+     * and chars to UnicodeSets
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet(String pattern, ParsePosition pos, SymbolTable symbols) {
+        this();
+        applyPattern(pattern, pos, symbols, IGNORE_SPACE);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param pos on input, the position in pattern at which to start parsing.
+     * On output, the position after the last character parsed.
+     * @param symbols a symbol table mapping variables to char[] arrays
+     * and chars to UnicodeSets
+     * @param options a bitmask indicating which options to apply.
+     * Valid options are IGNORE_SPACE and CASE.
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 3.2
+     */
+    public UnicodeSet(String pattern, ParsePosition pos, SymbolTable symbols, int options) {
+        this();
+        applyPattern(pattern, pos, symbols, options);
+    }
+
+
+    /**
+     * Return a new set that is equivalent to this one.
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        UnicodeSet result = new UnicodeSet(this);
+        result.frozen = this.frozen;
+        return result;
+    }
+
+    /**
+     * Make this object represent the range <code>start - end</code>.
+     * If <code>end > start</code> then this object is set to an
+     * an empty range.
+     *
+     * @param start first character in the set, inclusive
+     * @param end last character in the set, inclusive
+     * @stable ICU 2.0
+     */
+    public UnicodeSet set(int start, int end) {
+        checkFrozen();
+        clear();
+        complement(start, end);
+        return this;
+    }
+
+    /**
+     * Make this object represent the same set as <code>other</code>.
+     * @param other a <code>UnicodeSet</code> whose value will be
+     * copied to this object
+     * @stable ICU 2.0
+     */
+    public UnicodeSet set(UnicodeSet other) {
+        checkFrozen();
+        list = (int[]) other.list.clone();
+        len = other.len;
+        pat = other.pat;
+        strings = (TreeSet)other.strings.clone();
+        return this;
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern.
+     * See the class description for the syntax of the pattern language.
+     * Whitespace is ignored.
+     * @param pattern a string specifying what characters are in the set
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet applyPattern(String pattern) {
+        checkFrozen();
+        return applyPattern(pattern, null, null, IGNORE_SPACE);
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern,
+     * optionally ignoring whitespace.
+     * See the class description for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param ignoreWhitespace if true then characters for which
+     * UCharacterProperty.isRuleWhiteSpace() returns true are ignored
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet applyPattern(String pattern, boolean ignoreWhitespace) {
+        checkFrozen();
+        return applyPattern(pattern, null, null, ignoreWhitespace ? IGNORE_SPACE : 0);
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern,
+     * optionally ignoring whitespace.
+     * See the class description for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param options a bitmask indicating which options to apply.
+     * Valid options are IGNORE_SPACE and CASE.
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     * @stable ICU 3.8
+     */
+    public UnicodeSet applyPattern(String pattern, int options) {
+        checkFrozen();
+        return applyPattern(pattern, null, null, options);
+    }
+
+    /**
+     * Return true if the given position, in the given pattern, appears
+     * to be the start of a UnicodeSet pattern.
+     * @stable ICU 2.0
+     */
+    public static boolean resemblesPattern(String pattern, int pos) {
+        return ((pos+1) < pattern.length() &&
+                pattern.charAt(pos) == '[') ||
+            resemblesPropertyPattern(pattern, pos);
+    }
+
+    /**
+     * Append the <code>toPattern()</code> representation of a
+     * string to the given <code>StringBuffer</code>.
+     */
+    private static void _appendToPat(StringBuffer buf, String s, boolean escapeUnprintable) {
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(i)) {
+            _appendToPat(buf, UTF16.charAt(s, i), escapeUnprintable);
+        }
+    }
+
+    /**
+     * Append the <code>toPattern()</code> representation of a
+     * character to the given <code>StringBuffer</code>.
+     */
+    private static void _appendToPat(StringBuffer buf, int c, boolean escapeUnprintable) {
+        if (escapeUnprintable && Utility.isUnprintable(c)) {
+            // Use hex escape notation (<backslash>uxxxx or <backslash>Uxxxxxxxx) for anything
+            // unprintable
+            if (Utility.escapeUnprintable(buf, c)) {
+                return;
+            }
+        }
+        // Okay to let ':' pass through
+        switch (c) {
+        case '[': // SET_OPEN:
+        case ']': // SET_CLOSE:
+        case '-': // HYPHEN:
+        case '^': // COMPLEMENT:
+        case '&': // INTERSECTION:
+        case '\\': //BACKSLASH:
+        case '{':
+        case '}':
+        case '$':
+        case ':':
+            buf.append('\\');
+            break;
+        default:
+            // Escape whitespace
+            if (UCharacterProperty.isRuleWhiteSpace(c)) {
+                buf.append('\\');
+            }
+            break;
+        }
+        UTF16.append(buf, c);
+    }
+
+    /**
+     * Returns a string representation of this set.  If the result of
+     * calling this function is passed to a UnicodeSet constructor, it
+     * will produce another set that is equal to this one.
+     * @stable ICU 2.0
+     */
+    public String toPattern(boolean escapeUnprintable) {
+        StringBuffer result = new StringBuffer();
+        return _toPattern(result, escapeUnprintable).toString();
+    }
+
+    /**
+     * Append a string representation of this set to result.  This will be
+     * a cleaned version of the string passed to applyPattern(), if there
+     * is one.  Otherwise it will be generated.
+     */
+    private StringBuffer _toPattern(StringBuffer result,
+                                    boolean escapeUnprintable) {
+        if (pat != null) {
+            int i;
+            int backslashCount = 0;
+            for (i=0; i<pat.length(); ) {
+                int c = UTF16.charAt(pat, i);
+                i += UTF16.getCharCount(c);
+                if (escapeUnprintable && Utility.isUnprintable(c)) {
+                    // If the unprintable character is preceded by an odd
+                    // number of backslashes, then it has been escaped.
+                    // Before unescaping it, we delete the final
+                    // backslash.
+                    if ((backslashCount % 2) == 1) {
+                        result.setLength(result.length() - 1);
+                    }
+                    Utility.escapeUnprintable(result, c);
+                    backslashCount = 0;
+                } else {
+                    UTF16.append(result, c);
+                    if (c == '\\') {
+                        ++backslashCount;
+                    } else {
+                        backslashCount = 0;
+                    }
+                }
+            }
+            return result;
+        }
+
+        return _generatePattern(result, escapeUnprintable, true);
+    }
+
+    /**
+     * Generate and append a string representation of this set to result.
+     * This does not use this.pat, the cleaned up copy of the string
+     * passed to applyPattern().
+     * @param result the buffer into which to generate the pattern
+     * @param escapeUnprintable escape unprintable characters if true
+     * @stable ICU 2.0
+     */
+    public StringBuffer _generatePattern(StringBuffer result, boolean escapeUnprintable) {
+        return _generatePattern(result, escapeUnprintable, true);
+    }
+
+    /**
+     * Generate and append a string representation of this set to result.
+     * This does not use this.pat, the cleaned up copy of the string
+     * passed to applyPattern().
+     * @param includeStrings if false, doesn't include the strings.
+     * @stable ICU 3.8
+     */
+    public StringBuffer _generatePattern(StringBuffer result,
+                                         boolean escapeUnprintable, boolean includeStrings) {
+        result.append('[');
+
+//      // Check against the predefined categories.  We implicitly build
+//      // up ALL category sets the first time toPattern() is called.
+//      for (int cat=0; cat<CATEGORY_COUNT; ++cat) {
+//          if (this.equals(getCategorySet(cat))) {
+//              result.append(':');
+//              result.append(CATEGORY_NAMES.substring(cat*2, cat*2+2));
+//              return result.append(":]");
+//          }
+//      }
+
+        int count = getRangeCount();
+
+        // If the set contains at least 2 intervals and includes both
+        // MIN_VALUE and MAX_VALUE, then the inverse representation will
+        // be more economical.
+        if (count > 1 &&
+            getRangeStart(0) == MIN_VALUE &&
+            getRangeEnd(count-1) == MAX_VALUE) {
+
+            // Emit the inverse
+            result.append('^');
+
+            for (int i = 1; i < count; ++i) {
+                int start = getRangeEnd(i-1)+1;
+                int end = getRangeStart(i)-1;
+                _appendToPat(result, start, escapeUnprintable);
+                if (start != end) {
+                    if ((start+1) != end) {
+                        result.append('-');
+                    }
+                    _appendToPat(result, end, escapeUnprintable);
+                }
+            }
+        }
+
+        // Default; emit the ranges as pairs
+        else {
+            for (int i = 0; i < count; ++i) {
+                int start = getRangeStart(i);
+                int end = getRangeEnd(i);
+                _appendToPat(result, start, escapeUnprintable);
+                if (start != end) {
+                    if ((start+1) != end) {
+                        result.append('-');
+                    }
+                    _appendToPat(result, end, escapeUnprintable);
+                }
+            }
+        }
+
+        if (includeStrings && strings.size() > 0) {
+            Iterator it = strings.iterator();
+            while (it.hasNext()) {
+                result.append('{');
+                _appendToPat(result, (String) it.next(), escapeUnprintable);
+                result.append('}');
+            }
+        }
+        return result.append(']');
+    }
+
+    /**
+     * Returns the number of elements in this set (its cardinality)
+     * Note than the elements of a set may include both individual
+     * codepoints and strings.
+     *
+     * @return the number of elements in this set (its cardinality).
+     * @stable ICU 2.0
+     */
+    public int size() {
+        int n = 0;
+        int count = getRangeCount();
+        for (int i = 0; i < count; ++i) {
+            n += getRangeEnd(i) - getRangeStart(i) + 1;
+        }
+        return n + strings.size();
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains no elements.
+     *
+     * @return <tt>true</tt> if this set contains no elements.
+     * @stable ICU 2.0
+     */
+    public boolean isEmpty() {
+        return len == 1 && strings.size() == 0;
+    }
+
+    /**
+     * Implementation of UnicodeMatcher API.  Returns <tt>true</tt> if
+     * this set contains any character whose low byte is the given
+     * value.  This is used by <tt>RuleBasedTransliterator</tt> for
+     * indexing.
+     * @stable ICU 2.0
+     */
+    public boolean matchesIndexValue(int v) {
+        /* The index value v, in the range [0,255], is contained in this set if
+         * it is contained in any pair of this set.  Pairs either have the high
+         * bytes equal, or unequal.  If the high bytes are equal, then we have
+         * aaxx..aayy, where aa is the high byte.  Then v is contained if xx <=
+         * v <= yy.  If the high bytes are unequal we have aaxx..bbyy, bb>aa.
+         * Then v is contained if xx <= v || v <= yy.  (This is identical to the
+         * time zone month containment logic.)
+         */
+        for (int i=0; i<getRangeCount(); ++i) {
+            int low = getRangeStart(i);
+            int high = getRangeEnd(i);
+            if ((low & ~0xFF) == (high & ~0xFF)) {
+                if ((low & 0xFF) <= v && v <= (high & 0xFF)) {
+                    return true;
+                }
+            } else if ((low & 0xFF) <= v || v <= (high & 0xFF)) {
+                return true;
+            }
+        }
+        if (strings.size() != 0) {
+            Iterator it = strings.iterator();
+            while (it.hasNext()) {
+                String s = (String) it.next();
+                //if (s.length() == 0) {
+                //    // Empty strings match everything
+                //    return true;
+                //}
+                // assert(s.length() != 0); // We enforce this elsewhere
+                int c = UTF16.charAt(s, 0);
+                if ((c & 0xFF) == v) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Implementation of UnicodeMatcher.matches().  Always matches the
+     * longest possible multichar string.
+     * @stable ICU 2.0
+     */
+    public int matches(Replaceable text,
+                       int[] offset,
+                       int limit,
+                       boolean incremental) {
+
+        if (offset[0] == limit) {
+            // Strings, if any, have length != 0, so we don't worry
+            // about them here.  If we ever allow zero-length strings
+            // we much check for them here.
+            if (contains(UnicodeMatcher.ETHER)) {
+                return incremental ? U_PARTIAL_MATCH : U_MATCH;
+            } else {
+                return U_MISMATCH;
+            }
+        } else {
+            if (strings.size() != 0) { // try strings first
+
+                // might separate forward and backward loops later
+                // for now they are combined
+
+                // TODO Improve efficiency of this, at least in the forward
+                // direction, if not in both.  In the forward direction we
+                // can assume the strings are sorted.
+
+                Iterator it = strings.iterator();
+                boolean forward = offset[0] < limit;
+
+                // firstChar is the leftmost char to match in the
+                // forward direction or the rightmost char to match in
+                // the reverse direction.
+                char firstChar = text.charAt(offset[0]);
+
+                // If there are multiple strings that can match we
+                // return the longest match.
+                int highWaterLength = 0;
+
+                while (it.hasNext()) {
+                    String trial = (String) it.next();
+
+                    //if (trial.length() == 0) {
+                    //    return U_MATCH; // null-string always matches
+                    //}
+                    // assert(trial.length() != 0); // We ensure this elsewhere
+
+                    char c = trial.charAt(forward ? 0 : trial.length() - 1);
+
+                    // Strings are sorted, so we can optimize in the
+                    // forward direction.
+                    if (forward && c > firstChar) break;
+                    if (c != firstChar) continue;
+
+                    int length = matchRest(text, offset[0], limit, trial);
+
+                    if (incremental) {
+                        int maxLen = forward ? limit-offset[0] : offset[0]-limit;
+                        if (length == maxLen) {
+                            // We have successfully matched but only up to limit.
+                            return U_PARTIAL_MATCH;
+                        }
+                    }
+
+                    if (length == trial.length()) {
+                        // We have successfully matched the whole string.
+                        if (length > highWaterLength) {
+                            highWaterLength = length;
+                        }
+                        // In the forward direction we know strings
+                        // are sorted so we can bail early.
+                        if (forward && length < highWaterLength) {
+                            break;
+                        }
+                        continue;
+                    }
+                }
+
+                // We've checked all strings without a partial match.
+                // If we have full matches, return the longest one.
+                if (highWaterLength != 0) {
+                    offset[0] += forward ? highWaterLength : -highWaterLength;
+                    return U_MATCH;
+                }
+            }
+            return super.matches(text, offset, limit, incremental);
+        }
+    }
+
+    /**
+     * Returns the longest match for s in text at the given position.
+     * If limit > start then match forward from start+1 to limit
+     * matching all characters except s.charAt(0).  If limit < start,
+     * go backward starting from start-1 matching all characters
+     * except s.charAt(s.length()-1).  This method assumes that the
+     * first character, text.charAt(start), matches s, so it does not
+     * check it.
+     * @param text the text to match
+     * @param start the first character to match.  In the forward
+     * direction, text.charAt(start) is matched against s.charAt(0).
+     * In the reverse direction, it is matched against
+     * s.charAt(s.length()-1).
+     * @param limit the limit offset for matching, either last+1 in
+     * the forward direction, or last-1 in the reverse direction,
+     * where last is the index of the last character to match.
+     * @return If part of s matches up to the limit, return |limit -
+     * start|.  If all of s matches before reaching the limit, return
+     * s.length().  If there is a mismatch between s and text, return
+     * 0
+     */
+    private static int matchRest (Replaceable text, int start, int limit, String s) {
+        int maxLen;
+        int slen = s.length();
+        if (start < limit) {
+            maxLen = limit - start;
+            if (maxLen > slen) maxLen = slen;
+            for (int i = 1; i < maxLen; ++i) {
+                if (text.charAt(start + i) != s.charAt(i)) return 0;
+            }
+        } else {
+            maxLen = start - limit;
+            if (maxLen > slen) maxLen = slen;
+            --slen; // <=> slen = s.length() - 1;
+            for (int i = 1; i < maxLen; ++i) {
+                if (text.charAt(start - i) != s.charAt(slen - i)) return 0;
+            }
+        }
+        return maxLen;
+    }
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//#else
+    /**
+     * Tests whether the text matches at the offset. If so, returns the end of the longest substring that it matches. If not, returns -1. 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public int matchesAt(CharSequence text, int offset) {
+        int lastLen = -1;
+        strings:
+        if (strings.size() != 0) {
+            char firstChar = text.charAt(offset);
+            String trial = null;
+            // find the first string starting with firstChar
+            Iterator it = strings.iterator();
+            while (it.hasNext()) {
+                trial = (String) it.next();
+                char firstStringChar = trial.charAt(0);
+                if (firstStringChar < firstChar) continue;
+                if (firstStringChar > firstChar) break strings;
+            }
+            // now keep checking string until we get the longest one
+            for (;;) {
+                int tempLen = matchesAt(text, offset, trial);
+                if (lastLen > tempLen) break strings;
+                lastLen = tempLen;
+                if (!it.hasNext()) break;
+                trial = (String) it.next();
+            }
+        }
+        if (lastLen < 2) {
+            int cp = UTF16.charAt(text, offset);
+            if (contains(cp)) {
+                lastLen = UTF16.getCharCount(cp);
+            }
+        }
+        return offset+lastLen;
+    }
+
+    /**
+     * Does one string contain another, starting at a specific offset?
+     * @param text
+     * @param offset
+     * @param other
+     * @return
+     */
+    // Note: This method was moved from CollectionUtilities
+    private static int matchesAt(CharSequence text, int offset, CharSequence other) {
+        int len = other.length();
+        int i = 0;
+        int j = offset;
+        for (; i < len; ++i, ++j) {
+            char pc = other.charAt(i);
+            char tc = text.charAt(j);
+            if (pc != tc) return -1;
+        }
+        return i;
+    }
+//#endif
+
+    /**
+     * Implementation of UnicodeMatcher API.  Union the set of all
+     * characters that may be matched by this object into the given
+     * set.
+     * @param toUnionTo the set into which to union the source characters
+     * @stable ICU 2.2
+     */
+    public void addMatchSetTo(UnicodeSet toUnionTo) {
+        toUnionTo.addAll(this);
+    }
+
+    /**
+     * Returns the index of the given character within this set, where
+     * the set is ordered by ascending code point.  If the character
+     * is not in this set, return -1.  The inverse of this method is
+     * <code>charAt()</code>.
+     * @return an index from 0..size()-1, or -1
+     * @stable ICU 2.0
+     */
+    public int indexOf(int c) {
+        if (c < MIN_VALUE || c > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(c, 6));
+        }
+        int i = 0;
+        int n = 0;
+        for (;;) {
+            int start = list[i++];
+            if (c < start) {
+                return -1;
+            }
+            int limit = list[i++];
+            if (c < limit) {
+                return n + c - start;
+            }
+            n += limit - start;
+        }
+    }
+
+    /**
+     * Returns the character at the given index within this set, where
+     * the set is ordered by ascending code point.  If the index is
+     * out of range, return -1.  The inverse of this method is
+     * <code>indexOf()</code>.
+     * @param index an index from 0..size()-1
+     * @return the character at the given index, or -1.
+     * @stable ICU 2.0
+     */
+    public int charAt(int index) {
+        if (index >= 0) {
+            // len2 is the largest even integer <= len, that is, it is len
+            // for even values and len-1 for odd values.  With odd values
+            // the last entry is UNICODESET_HIGH.
+            int len2 = len & ~1;
+            for (int i=0; i < len2;) {
+                int start = list[i++];
+                int count = list[i++] - start;
+                if (index < count) {
+                    return start + index;
+                }
+                index -= count;
+            }
+        }
+        return -1;
+    }
+
+    /**
+     * Adds the specified range to this set if it is not already
+     * present.  If this set already contains the specified range,
+     * the call leaves this set unchanged.  If <code>end > start</code>
+     * then an empty range is added, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be added
+     * to this set.
+     * @param end last character, inclusive, of range to be added
+     * to this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet add(int start, int end) {
+        checkFrozen();
+        return add_unchecked(start, end);
+    }
+    
+    // for internal use, after checkFrozen has been called
+    private UnicodeSet add_unchecked(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start < end) {
+            add(range(start, end), 2, 0);
+        } else if (start == end) {
+            add(start);
+        }
+        return this;
+    }
+
+//    /**
+//     * Format out the inversion list as a string, for debugging.  Uncomment when
+//     * needed.
+//     */
+//    public final String dump() {
+//        StringBuffer buf = new StringBuffer("[");
+//        for (int i=0; i<len; ++i) {
+//            if (i != 0) buf.append(", ");
+//            int c = list[i];
+//            //if (c <= 0x7F && c != '\n' && c != '\r' && c != '\t' && c != ' ') {
+//            //    buf.append((char) c);
+//            //} else {
+//                buf.append("U+").append(Utility.hex(c, (c<0x10000)?4:6));
+//            //}
+//        }
+//        buf.append("]");
+//        return buf.toString();
+//    }
+
+    /**
+     * Adds the specified character to this set if it is not already
+     * present.  If this set already contains the specified character,
+     * the call leaves this set unchanged.
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet add(int c) {
+        checkFrozen();
+        return add_unchecked(c);
+    }
+    
+    // for internal use only, after checkFrozen has been called
+    private final UnicodeSet add_unchecked(int c) {
+        if (c < MIN_VALUE || c > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(c, 6));
+        }
+
+        // find smallest i such that c < list[i]
+        // if odd, then it is IN the set
+        // if even, then it is OUT of the set
+        int i = findCodePoint(c);
+
+        // already in set?
+        if ((i & 1) != 0) return this;
+
+        // HIGH is 0x110000
+        // assert(list[len-1] == HIGH);
+
+        // empty = [HIGH]
+        // [start_0, limit_0, start_1, limit_1, HIGH]
+
+        // [..., start_k-1, limit_k-1, start_k, limit_k, ..., HIGH]
+        //                             ^
+        //                             list[i]
+
+        // i == 0 means c is before the first range
+
+        if (c == list[i]-1) {
+            // c is before start of next range
+            list[i] = c;
+            // if we touched the HIGH mark, then add a new one
+            if (c == MAX_VALUE) {
+                ensureCapacity(len+1);
+                list[len++] = HIGH;
+            }
+            if (i > 0 && c == list[i-1]) {
+                // collapse adjacent ranges
+
+                // [..., start_k-1, c, c, limit_k, ..., HIGH]
+                //                     ^
+                //                     list[i]
+                System.arraycopy(list, i+1, list, i-1, len-i-1);
+                len -= 2;
+            }
+        }
+
+        else if (i > 0 && c == list[i-1]) {
+            // c is after end of prior range
+            list[i-1]++;
+            // no need to chcek for collapse here
+        }
+
+        else {
+            // At this point we know the new char is not adjacent to
+            // any existing ranges, and it is not 10FFFF.
+
+
+            // [..., start_k-1, limit_k-1, start_k, limit_k, ..., HIGH]
+            //                             ^
+            //                             list[i]
+
+            // [..., start_k-1, limit_k-1, c, c+1, start_k, limit_k, ..., HIGH]
+            //                             ^
+            //                             list[i]
+
+            // Don't use ensureCapacity() to save on copying.
+            // NOTE: This has no measurable impact on performance,
+            // but it might help in some usage patterns.
+            if (len+2 > list.length) {
+                int[] temp = new int[len + 2 + GROW_EXTRA];
+                if (i != 0) System.arraycopy(list, 0, temp, 0, i);
+                System.arraycopy(list, i, temp, i+2, len-i);
+                list = temp;
+            } else {
+                System.arraycopy(list, i, list, i+2, len-i);
+            }
+
+            list[i] = c;
+            list[i+1] = c+1;
+            len += 2;
+        }
+
+        pat = null;
+        return this;
+    }
+
+    /**
+     * Adds the specified multicharacter to this set if it is not already
+     * present.  If this set already contains the multicharacter,
+     * the call leaves this set unchanged.
+     * Thus "ch" => {"ch"}
+     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet add(String s) {
+        checkFrozen();
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            strings.add(s);
+            pat = null;
+        } else {
+            add_unchecked(cp, cp);
+        }
+        return this;
+    }
+    
+    /**
+     * @return a code point IF the string consists of a single one.
+     * otherwise returns -1.
+     * @param string to test
+     */
+    private static int getSingleCP(String s) {
+        if (s.length() < 1) {
+            throw new IllegalArgumentException("Can't use zero-length strings in UnicodeSet");
+        }
+        if (s.length() > 2) return -1;
+        if (s.length() == 1) return s.charAt(0);
+
+        // at this point, len = 2
+        int cp = UTF16.charAt(s, 0);
+        if (cp > 0xFFFF) { // is surrogate pair
+            return cp;
+        }
+        return -1;
+    }
+
+    /**
+     * Adds each of the characters in this string to the set. Thus "ch" => {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet addAll(String s) {
+        checkFrozen();
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            add_unchecked(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Retains EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet retainAll(String s) {
+        return retainAll(fromAll(s));
+    }
+
+    /**
+     * Complement EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet complementAll(String s) {
+        return complementAll(fromAll(s));
+    }
+
+    /**
+     * Remove EACH of the characters in this string. Note: "ch" == {"c", "h"}
+     * If this set already any particular character, it has no effect on that character.
+     * @param s the source string
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet removeAll(String s) {
+        return removeAll(fromAll(s));
+    }
+
+    /**
+     * Makes a set from a multicharacter string. Thus "ch" => {"ch"}
+     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the source string
+     * @return a newly created set containing the given string
+     * @stable ICU 2.0
+     */
+    public static UnicodeSet from(String s) {
+        return new UnicodeSet().add(s);
+    }
+
+
+    /**
+     * Makes a set from each of the characters in the string. Thus "ch" => {"c", "h"}
+     * @param s the source string
+     * @return a newly created set containing the given characters
+     * @stable ICU 2.0
+     */
+    public static UnicodeSet fromAll(String s) {
+        return new UnicodeSet().addAll(s);
+    }
+
+
+    /**
+     * Retain only the elements in this set that are contained in the
+     * specified range.  If <code>end > start</code> then an empty range is
+     * retained, leaving the set empty.
+     *
+     * @param start first character, inclusive, of range to be retained
+     * to this set.
+     * @param end last character, inclusive, of range to be retained
+     * to this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet retain(int start, int end) {
+        checkFrozen();
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            retain(range(start, end), 2, 0);
+        } else {
+            clear();
+        }
+        return this;
+    }
+
+    /**
+     * Retain the specified character from this set if it is present.
+     * Upon return this set will be empty if it did not contain c, or
+     * will only contain c if it did contain c.
+     * @param c the character to be retained
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet retain(int c) {
+        return retain(c, c);
+    }
+
+    /**
+     * Retain the specified string in this set if it is present.
+     * Upon return this set will be empty if it did not contain s, or
+     * will only contain s if it did contain s.
+     * @param s the string to be retained
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet retain(String s) {
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            boolean isIn = strings.contains(s);
+            if (isIn && size() == 1) {
+                return this;
+            }
+            clear();
+            strings.add(s);
+            pat = null;
+        } else {
+            retain(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Removes the specified range from this set if it is present.
+     * The set will not contain the specified range once the call
+     * returns.  If <code>end > start</code> then an empty range is
+     * removed, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be removed
+     * from this set.
+     * @param end last character, inclusive, of range to be removed
+     * from this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet remove(int start, int end) {
+        checkFrozen();
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            retain(range(start, end), 2, 2);
+        }
+        return this;
+    }
+
+    /**
+     * Removes the specified character from this set if it is present.
+     * The set will not contain the specified character once the call
+     * returns.
+     * @param c the character to be removed
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet remove(int c) {
+        return remove(c, c);
+    }
+
+    /**
+     * Removes the specified string from this set if it is present.
+     * The set will not contain the specified string once the call
+     * returns.
+     * @param s the string to be removed
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet remove(String s) {
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            strings.remove(s);
+            pat = null;
+        } else {
+            remove(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Complements the specified range in this set.  Any character in
+     * the range will be removed if it is in this set, or will be
+     * added if it is not in this set.  If <code>end > start</code>
+     * then an empty range is complemented, leaving the set unchanged.
+     *
+     * @param start first character, inclusive, of range to be removed
+     * from this set.
+     * @param end last character, inclusive, of range to be removed
+     * from this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet complement(int start, int end) {
+        checkFrozen();
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        if (start <= end) {
+            xor(range(start, end), 2, 0);
+        }
+        pat = null;
+        return this;
+    }
+
+    /**
+     * Complements the specified character in this set.  The character
+     * will be removed if it is in this set, or will be added if it is
+     * not in this set.
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet complement(int c) {
+        return complement(c, c);
+    }
+
+    /**
+     * This is equivalent to
+     * <code>complement(MIN_VALUE, MAX_VALUE)</code>.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet complement() {
+        checkFrozen();
+        if (list[0] == LOW) {
+            System.arraycopy(list, 1, list, 0, len-1);
+            --len;
+        } else {
+            ensureCapacity(len+1);
+            System.arraycopy(list, 0, list, 1, len);
+            list[0] = LOW;
+            ++len;
+        }
+        pat = null;
+        return this;
+    }
+
+    /**
+     * Complement the specified string in this set.
+     * The set will not contain the specified string once the call
+     * returns.
+     * <br><b>Warning: you cannot add an empty string ("") to a UnicodeSet.</b>
+     * @param s the string to complement
+     * @return this object, for chaining
+     * @stable ICU 2.0
+     */
+    public final UnicodeSet complement(String s) {
+        checkFrozen();
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            if (strings.contains(s)) strings.remove(s);
+            else strings.add(s);
+            pat = null;
+        } else {
+            complement(cp, cp);
+        }
+        return this;
+    }
+
+    /**
+     * Returns true if this set contains the given character.
+     * @param c character to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean contains(int c) {
+        if (c < MIN_VALUE || c > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(c, 6));
+        }
+
+        /*
+        // Set i to the index of the start item greater than ch
+        // We know we will terminate without length test!
+        int i = -1;
+        while (true) {
+            if (c < list[++i]) break;
+        }
+        */
+
+        int i = findCodePoint(c);
+
+        return ((i & 1) != 0); // return true if odd
+    }
+
+    /**
+     * Returns the smallest value i such that c < list[i].  Caller
+     * must ensure that c is a legal value or this method will enter
+     * an infinite loop.  This method performs a binary search.
+     * @param c a character in the range MIN_VALUE..MAX_VALUE
+     * inclusive
+     * @return the smallest integer i in the range 0..len-1,
+     * inclusive, such that c < list[i]
+     */
+    private final int findCodePoint(int c) {
+        /* Examples:
+                                           findCodePoint(c)
+           set              list[]         c=0 1 3 4 7 8
+           ===              ==============   ===========
+           []               [110000]         0 0 0 0 0 0
+           [\u0000-\u0003]  [0, 4, 110000]   1 1 1 2 2 2
+           [\u0004-\u0007]  [4, 8, 110000]   0 0 0 1 1 2
+           [:all:]          [0, 110000]      1 1 1 1 1 1
+         */
+
+        // Return the smallest i such that c < list[i].  Assume
+        // list[len - 1] == HIGH and that c is legal (0..HIGH-1).
+        if (c < list[0]) return 0;
+        // High runner test.  c is often after the last range, so an
+        // initial check for this condition pays off.
+        if (len >= 2 && c >= list[len-2]) return len-1;
+        int lo = 0;
+        int hi = len - 1;
+        // invariant: c >= list[lo]
+        // invariant: c < list[hi]
+        for (;;) {
+            int i = (lo + hi) >>> 1;
+            if (i == lo) return hi;
+            if (c < list[i]) {
+                hi = i;
+            } else {
+                lo = i;
+            }
+        }
+    }
+
+//    //----------------------------------------------------------------
+//    // Unrolled binary search
+//    //----------------------------------------------------------------
+//
+//    private int validLen = -1; // validated value of len
+//    private int topOfLow;
+//    private int topOfHigh;
+//    private int power;
+//    private int deltaStart;
+//
+//    private void validate() {
+//        if (len <= 1) {
+//            throw new IllegalArgumentException("list.len==" + len + "; must be >1");
+//        }
+//
+//        // find greatest power of 2 less than or equal to len
+//        for (power = exp2.length-1; power > 0 && exp2[power] > len; power--) {}
+//
+//        // assert(exp2[power] <= len);
+//
+//        // determine the starting points
+//        topOfLow = exp2[power] - 1;
+//        topOfHigh = len - 1;
+//        deltaStart = exp2[power-1];
+//        validLen = len;
+//    }
+//
+//    private static final int exp2[] = {
+//        0x1, 0x2, 0x4, 0x8,
+//        0x10, 0x20, 0x40, 0x80,
+//        0x100, 0x200, 0x400, 0x800,
+//        0x1000, 0x2000, 0x4000, 0x8000,
+//        0x10000, 0x20000, 0x40000, 0x80000,
+//        0x100000, 0x200000, 0x400000, 0x800000,
+//        0x1000000, 0x2000000, 0x4000000, 0x8000000,
+//        0x10000000, 0x20000000 // , 0x40000000 // no unsigned int in Java
+//    };
+//
+//    /**
+//     * Unrolled lowest index GT.
+//     */
+//    private final int leastIndexGT(int searchValue) {
+//
+//        if (len != validLen) {
+//            if (len == 1) return 0;
+//            validate();
+//        }
+//        int temp;
+//
+//        // set up initial range to search. Each subrange is a power of two in length
+//        int high = searchValue < list[topOfLow] ? topOfLow : topOfHigh;
+//
+//        // Completely unrolled binary search, folhighing "Programming Pearls"
+//        // Each case deliberately falls through to the next
+//        // Logically, list[-1] < all_search_values && list[count] > all_search_values
+//        // although the values -1 and count are never actually touched.
+//
+//        // The bounds at each point are low & high,
+//        // where low == high - delta*2
+//        // so high - delta is the midpoint
+//
+//        // The invariant AFTER each line is that list[low] < searchValue <= list[high]
+//
+//        switch (power) {
+//        //case 31: if (searchValue < list[temp = high-0x40000000]) high = temp; // no unsigned int in Java
+//        case 30: if (searchValue < list[temp = high-0x20000000]) high = temp;
+//        case 29: if (searchValue < list[temp = high-0x10000000]) high = temp;
+//
+//        case 28: if (searchValue < list[temp = high- 0x8000000]) high = temp;
+//        case 27: if (searchValue < list[temp = high- 0x4000000]) high = temp;
+//        case 26: if (searchValue < list[temp = high- 0x2000000]) high = temp;
+//        case 25: if (searchValue < list[temp = high- 0x1000000]) high = temp;
+//
+//        case 24: if (searchValue < list[temp = high-  0x800000]) high = temp;
+//        case 23: if (searchValue < list[temp = high-  0x400000]) high = temp;
+//        case 22: if (searchValue < list[temp = high-  0x200000]) high = temp;
+//        case 21: if (searchValue < list[temp = high-  0x100000]) high = temp;
+//
+//        case 20: if (searchValue < list[temp = high-   0x80000]) high = temp;
+//        case 19: if (searchValue < list[temp = high-   0x40000]) high = temp;
+//        case 18: if (searchValue < list[temp = high-   0x20000]) high = temp;
+//        case 17: if (searchValue < list[temp = high-   0x10000]) high = temp;
+//
+//        case 16: if (searchValue < list[temp = high-    0x8000]) high = temp;
+//        case 15: if (searchValue < list[temp = high-    0x4000]) high = temp;
+//        case 14: if (searchValue < list[temp = high-    0x2000]) high = temp;
+//        case 13: if (searchValue < list[temp = high-    0x1000]) high = temp;
+//
+//        case 12: if (searchValue < list[temp = high-     0x800]) high = temp;
+//        case 11: if (searchValue < list[temp = high-     0x400]) high = temp;
+//        case 10: if (searchValue < list[temp = high-     0x200]) high = temp;
+//        case  9: if (searchValue < list[temp = high-     0x100]) high = temp;
+//
+//        case  8: if (searchValue < list[temp = high-      0x80]) high = temp;
+//        case  7: if (searchValue < list[temp = high-      0x40]) high = temp;
+//        case  6: if (searchValue < list[temp = high-      0x20]) high = temp;
+//        case  5: if (searchValue < list[temp = high-      0x10]) high = temp;
+//
+//        case  4: if (searchValue < list[temp = high-       0x8]) high = temp;
+//        case  3: if (searchValue < list[temp = high-       0x4]) high = temp;
+//        case  2: if (searchValue < list[temp = high-       0x2]) high = temp;
+//        case  1: if (searchValue < list[temp = high-       0x1]) high = temp;
+//        }
+//
+//        return high;
+//    }
+//
+//    // For debugging only
+//    public int len() {
+//        return len;
+//    }
+//
+//    //----------------------------------------------------------------
+//    //----------------------------------------------------------------
+
+    /**
+     * Returns true if this set contains every character
+     * of the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean contains(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        //int i = -1;
+        //while (true) {
+        //    if (start < list[++i]) break;
+        //}
+        int i = findCodePoint(start);
+        return ((i & 1) != 0 && end < list[i]);
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains the given
+     * multicharacter string.
+     * @param s string to be checked for containment
+     * @return <tt>true</tt> if this set contains the specified string
+     * @stable ICU 2.0
+     */
+    public final boolean contains(String s) {
+
+        int cp = getSingleCP(s);
+        if (cp < 0) {
+            return strings.contains(s);
+        } else {
+            return contains(cp);
+        }
+    }
+
+    /**
+     * Returns true if this set contains all the characters and strings
+     * of the given set.
+     * @param b set to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean containsAll(UnicodeSet b) {
+      // The specified set is a subset if all of its pairs are contained in
+      // this set. This implementation accesses the lists directly for speed.
+      // TODO: this could be faster if size() were cached. But that would affect building speed
+      // so it needs investigation.
+      int[] listB = b.list;
+      boolean needA = true;
+      boolean needB = true;
+      int aPtr = 0;
+      int bPtr = 0;
+      int aLen = len - 1;
+      int bLen = b.len - 1;
+      int startA = 0, startB = 0, limitA = 0, limitB = 0;
+      while (true) {
+        // double iterations are such a pain...
+        if (needA) {
+          if (aPtr >= aLen) {
+            // ran out of A. If B is also exhausted, then break;
+            if (needB && bPtr >= bLen) {
+              break;
+            }
+            return false;
+          }
+          startA = list[aPtr++];
+          limitA = list[aPtr++];
+        }
+        if (needB) {
+          if (bPtr >= bLen) {
+            // ran out of B. Since we got this far, we have an A and we are ok so far
+            break;
+          }
+          startB = listB[bPtr++];
+          limitB = listB[bPtr++];
+        }
+        // if B doesn't overlap and is greater than A, get new A
+        if (startB >= limitA) {
+          needA = true;
+          needB = false;
+          continue;
+        }
+        // if B is wholy contained in A, then get a new B
+        if (startB >= startA && limitB <= limitA) {
+          needA = false;
+          needB = true;
+          continue;
+        }
+        // all other combinations mean we fail
+        return false;
+      }
+
+      if (!strings.containsAll(b.strings)) return false;
+      return true;
+  }
+
+//    /**
+//     * Returns true if this set contains all the characters and strings
+//     * of the given set.
+//     * @param c set to be checked for containment
+//     * @return true if the test condition is met
+//     * @stable ICU 2.0
+//     */
+//    public boolean containsAllOld(UnicodeSet c) {
+//        // The specified set is a subset if all of its pairs are contained in
+//        // this set.  It's possible to code this more efficiently in terms of
+//        // direct manipulation of the inversion lists if the need arises.
+//        int n = c.getRangeCount();
+//        for (int i=0; i<n; ++i) {
+//            if (!contains(c.getRangeStart(i), c.getRangeEnd(i))) {
+//                return false;
+//            }
+//        }
+//        if (!strings.containsAll(c.strings)) return false;
+//        return true;
+//    }
+
+    /**
+     * Returns true if there is a partition of the string such that this set contains each of the partitioned strings.
+     * For example, for the Unicode set [a{bc}{cd}]<br>
+     * containsAll is true for each of: "a", "bc", ""cdbca"<br>
+     * containsAll is false for each of: "acb", "bcda", "bcx"<br>
+     * @param s string containing characters to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+     public boolean containsAll(String s) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (!contains(cp))  {
+                if (strings.size() == 0) {
+                    return false;
+                }
+                return containsAll(s, 0);
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Recursive routine called if we fail to find a match in containsAll, and there are strings
+     * @param s source string
+     * @param i point to match to the end on
+     * @return true if ok
+     */
+    private boolean containsAll(String s, int i) {
+        if (i >= s.length()) {
+            return true;
+        }
+        int  cp= UTF16.charAt(s, i);
+        if (contains(cp) && containsAll(s, i+UTF16.getCharCount(cp))) {
+            return true;
+        }
+        
+        Iterator it = strings.iterator();
+        while (it.hasNext()) {
+            String setStr = (String)it.next();
+            if (s.startsWith(setStr, i) &&  containsAll(s, i+setStr.length())) {
+                return true;
+            }
+        }
+        return false;
+        
+    }
+
+    /**
+     * Get the Regex equivalent for this UnicodeSet
+     * @return regex pattern equivalent to this UnicodeSet
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public String getRegexEquivalent() {
+        if (strings.size() == 0) return toString();
+        StringBuffer result = new StringBuffer("(?:");
+        _generatePattern(result, true, false);
+        Iterator it = strings.iterator();
+        while (it.hasNext()) {
+            result.append('|');
+            _appendToPat(result, (String) it.next(), true);
+        }
+        return result.append(")").toString();
+    }
+
+    /**
+     * Returns true if this set contains none of the characters
+     * of the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean containsNone(int start, int end) {
+        if (start < MIN_VALUE || start > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(start, 6));
+        }
+        if (end < MIN_VALUE || end > MAX_VALUE) {
+            throw new IllegalArgumentException("Invalid code point U+" + Utility.hex(end, 6));
+        }
+        int i = -1;
+        while (true) {
+            if (start < list[++i]) break;
+        }
+        return ((i & 1) == 0 && end < list[i]);
+    }
+
+    /**
+     * Returns true if none of the characters or strings in this UnicodeSet appears in the string.
+     * For example, for the Unicode set [a{bc}{cd}]<br>
+     * containsNone is true for: "xy", "cb"<br>
+     * containsNone is false for: "a", "bc", "bcd"<br>
+     * @param b set to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean containsNone(UnicodeSet b) {
+      // The specified set is a subset if some of its pairs overlap with some of this set's pairs.
+      // This implementation accesses the lists directly for speed.
+      int[] listB = b.list;
+      boolean needA = true;
+      boolean needB = true;
+      int aPtr = 0;
+      int bPtr = 0;
+      int aLen = len - 1;
+      int bLen = b.len - 1;
+      int startA = 0, startB = 0, limitA = 0, limitB = 0;
+      while (true) {
+        // double iterations are such a pain...
+        if (needA) {
+          if (aPtr >= aLen) {
+            // ran out of A: break so we test strings
+            break;
+          }
+          startA = list[aPtr++];
+          limitA = list[aPtr++];
+        }
+        if (needB) {
+          if (bPtr >= bLen) {
+            // ran out of B: break so we test strings
+            break;
+          }
+          startB = listB[bPtr++];
+          limitB = listB[bPtr++];
+        }
+        // if B is higher than any part of A, get new A
+        if (startB >= limitA) {
+          needA = true;
+          needB = false;
+          continue;
+        }
+        // if A is higher than any part of B, get new B
+        if (startA >= limitB) {
+          needA = false;
+          needB = true;
+          continue;
+        }
+        // all other combinations mean we fail
+        return false;
+      }
+
+      if (!SortedSetRelation.hasRelation(strings, SortedSetRelation.DISJOINT, b.strings)) return false;
+      return true;
+  }
+
+//    /**
+//     * Returns true if none of the characters or strings in this UnicodeSet appears in the string.
+//     * For example, for the Unicode set [a{bc}{cd}]<br>
+//     * containsNone is true for: "xy", "cb"<br>
+//     * containsNone is false for: "a", "bc", "bcd"<br>
+//     * @param c set to be checked for containment
+//     * @return true if the test condition is met
+//     * @stable ICU 2.0
+//     */
+//    public boolean containsNoneOld(UnicodeSet c) {
+//        // The specified set is a subset if all of its pairs are contained in
+//        // this set.  It's possible to code this more efficiently in terms of
+//        // direct manipulation of the inversion lists if the need arises.
+//        int n = c.getRangeCount();
+//        for (int i=0; i<n; ++i) {
+//            if (!containsNone(c.getRangeStart(i), c.getRangeEnd(i))) {
+//                return false;
+//            }
+//        }
+//        if (!SortedSetRelation.hasRelation(strings, SortedSetRelation.DISJOINT, c.strings)) return false;
+//        return true;
+//    }
+
+    /**
+     * Returns true if this set contains none of the characters
+     * of the given string.
+     * @param s string containing characters to be checked for containment
+     * @return true if the test condition is met
+     * @stable ICU 2.0
+     */
+    public boolean containsNone(String s) {
+        int cp;
+        for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(s, i);
+            if (contains(cp)) return false;
+        }
+        if (strings.size() == 0) return true;
+        // do a last check to make sure no strings are in.
+        for (Iterator it = strings.iterator(); it.hasNext();) {
+            String item = (String)it.next();
+            if (s.indexOf(item) >= 0) return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns true if this set contains one or more of the characters
+     * in the given range.
+     * @param start first character, inclusive, of the range
+     * @param end last character, inclusive, of the range
+     * @return true if the condition is met
+     * @stable ICU 2.0
+     */
+    public final boolean containsSome(int start, int end) {
+        return !containsNone(start, end);
+    }
+
+    /**
+     * Returns true if this set contains one or more of the characters
+     * and strings of the given set.
+     * @param s set to be checked for containment
+     * @return true if the condition is met
+     * @stable ICU 2.0
+     */
+    public final boolean containsSome(UnicodeSet s) {
+        return !containsNone(s);
+    }
+
+    /**
+     * Returns true if this set contains one or more of the characters
+     * of the given string.
+     * @param s string containing characters to be checked for containment
+     * @return true if the condition is met
+     * @stable ICU 2.0
+     */
+    public final boolean containsSome(String s) {
+        return !containsNone(s);
+    }
+
+
+    /**
+     * Adds all of the elements in the specified set to this set if
+     * they're not already present.  This operation effectively
+     * modifies this set so that its value is the <i>union</i> of the two
+     * sets.  The behavior of this operation is unspecified if the specified
+     * collection is modified while the operation is in progress.
+     *
+     * @param c set whose elements are to be added to this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet addAll(UnicodeSet c) {
+        checkFrozen();
+        add(c.list, c.len, 0);
+        strings.addAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Retains only the elements in this set that are contained in the
+     * specified set.  In other words, removes from this set all of
+     * its elements that are not contained in the specified set.  This
+     * operation effectively modifies this set so that its value is
+     * the <i>intersection</i> of the two sets.
+     *
+     * @param c set that defines which elements this set will retain.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet retainAll(UnicodeSet c) {
+        checkFrozen();
+        retain(c.list, c.len, 0);
+        strings.retainAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Removes from this set all of its elements that are contained in the
+     * specified set.  This operation effectively modifies this
+     * set so that its value is the <i>asymmetric set difference</i> of
+     * the two sets.
+     *
+     * @param c set that defines which elements will be removed from
+     *          this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet removeAll(UnicodeSet c) {
+        checkFrozen();
+        retain(c.list, c.len, 2);
+        strings.removeAll(c.strings);
+        return this;
+    }
+
+    /**
+     * Complements in this set all elements contained in the specified
+     * set.  Any character in the other set will be removed if it is
+     * in this set, or will be added if it is not in this set.
+     *
+     * @param c set that defines which elements will be complemented from
+     *          this set.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet complementAll(UnicodeSet c) {
+        checkFrozen();
+        xor(c.list, c.len, 0);
+        SortedSetRelation.doOperation(strings, SortedSetRelation.COMPLEMENTALL, c.strings);
+        return this;
+    }
+
+    /**
+     * Removes all of the elements from this set.  This set will be
+     * empty after this call returns.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet clear() {
+        checkFrozen();
+        list[0] = HIGH;
+        len = 1;
+        pat = null;
+        strings.clear();
+        return this;
+    }
+
+    /**
+     * Iteration method that returns the number of ranges contained in
+     * this set.
+     * @see #getRangeStart
+     * @see #getRangeEnd
+     * @stable ICU 2.0
+     */
+    public int getRangeCount() {
+        return len/2;
+    }
+
+    /**
+     * Iteration method that returns the first character in the
+     * specified range of this set.
+     * @exception ArrayIndexOutOfBoundsException if index is outside
+     * the range <code>0..getRangeCount()-1</code>
+     * @see #getRangeCount
+     * @see #getRangeEnd
+     * @stable ICU 2.0
+     */
+    public int getRangeStart(int index) {
+        return list[index*2];
+    }
+
+    /**
+     * Iteration method that returns the last character in the
+     * specified range of this set.
+     * @exception ArrayIndexOutOfBoundsException if index is outside
+     * the range <code>0..getRangeCount()-1</code>
+     * @see #getRangeStart
+     * @see #getRangeEnd
+     * @stable ICU 2.0
+     */
+    public int getRangeEnd(int index) {
+        return (list[index*2 + 1] - 1);
+    }
+
+    /**
+     * Reallocate this objects internal structures to take up the least
+     * possible space, without changing this object's value.
+     * @stable ICU 2.0
+     */
+    public UnicodeSet compact() {
+        checkFrozen();
+        if (len != list.length) {
+            int[] temp = new int[len];
+            System.arraycopy(list, 0, temp, 0, len);
+            list = temp;
+        }
+        rangeList = null;
+        buffer = null;
+        return this;
+    }
+
+    /**
+     * Compares the specified object with this set for equality.  Returns
+     * <tt>true</tt> if the specified object is also a set, the two sets
+     * have the same size, and every member of the specified set is
+     * contained in this set (or equivalently, every member of this set is
+     * contained in the specified set).
+     *
+     * @param o Object to be compared for equality with this set.
+     * @return <tt>true</tt> if the specified Object is equal to this set.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object o) {
+        try {
+            UnicodeSet that = (UnicodeSet) o;
+            if (len != that.len) return false;
+            for (int i = 0; i < len; ++i) {
+                if (list[i] != that.list[i]) return false;
+            }
+            if (!strings.equals(that.strings)) return false;
+        } catch (Exception e) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns the hash code value for this set.
+     *
+     * @return the hash code value for this set.
+     * @see java.lang.Object#hashCode()
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        int result = len;
+        for (int i = 0; i < len; ++i) {
+            result *= 1000003;
+            result += list[i];
+        }
+        return result;
+    }
+
+    /**
+     * Return a programmer-readable string representation of this object.
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        return toPattern(true);
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Pattern parsing
+    //----------------------------------------------------------------
+
+    /**
+     * Parses the given pattern, starting at the given position.  The character
+     * at pattern.charAt(pos.getIndex()) must be '[', or the parse fails.
+     * Parsing continues until the corresponding closing ']'.  If a syntax error
+     * is encountered between the opening and closing brace, the parse fails.
+     * Upon return from a successful parse, the ParsePosition is updated to
+     * point to the character following the closing ']', and an inversion
+     * list for the parsed pattern is returned.  This method
+     * calls itself recursively to parse embedded subpatterns.
+     *
+     * @param pattern the string containing the pattern to be parsed.  The
+     * portion of the string from pos.getIndex(), which must be a '[', to the
+     * corresponding closing ']', is parsed.
+     * @param pos upon entry, the position at which to being parsing.  The
+     * character at pattern.charAt(pos.getIndex()) must be a '['.  Upon return
+     * from a successful parse, pos.getIndex() is either the character after the
+     * closing ']' of the parsed pattern, or pattern.length() if the closing ']'
+     * is the last character of the pattern string.
+     * @return an inversion list for the parsed substring
+     * of <code>pattern</code>
+     * @exception java.lang.IllegalArgumentException if the parse fails.
+     */
+    UnicodeSet applyPattern(String pattern,
+                      ParsePosition pos,
+                      SymbolTable symbols,
+                      int options) {
+
+        // Need to build the pattern in a temporary string because
+        // _applyPattern calls add() etc., which set pat to empty.
+        boolean parsePositionWasNull = pos == null;
+        if (parsePositionWasNull) {
+            pos = new ParsePosition(0);
+        }
+
+        StringBuffer rebuiltPat = new StringBuffer();
+        RuleCharacterIterator chars =
+            new RuleCharacterIterator(pattern, symbols, pos);
+        applyPattern(chars, symbols, rebuiltPat, options);
+        if (chars.inVariable()) {
+            syntaxError(chars, "Extra chars in variable value");
+        }
+        pat = rebuiltPat.toString();
+        if (parsePositionWasNull) {
+            int i = pos.getIndex();
+
+            // Skip over trailing whitespace
+            if ((options & IGNORE_SPACE) != 0) {
+                i = Utility.skipWhitespace(pattern, i);
+            }
+
+            if (i != pattern.length()) {
+                throw new IllegalArgumentException("Parse of \"" + pattern +
+                                                   "\" failed at " + i);
+            }
+        }
+        return this;
+    }
+
+    /**
+     * Parse the pattern from the given RuleCharacterIterator.  The
+     * iterator is advanced over the parsed pattern.
+     * @param chars iterator over the pattern characters.  Upon return
+     * it will be advanced to the first character after the parsed
+     * pattern, or the end of the iteration if all characters are
+     * parsed.
+     * @param symbols symbol table to use to parse and dereference
+     * variables, or null if none.
+     * @param rebuiltPat the pattern that was parsed, rebuilt or
+     * copied from the input pattern, as appropriate.
+     * @param options a bit mask of zero or more of the following:
+     * IGNORE_SPACE, CASE.
+     */
+    void applyPattern(RuleCharacterIterator chars, SymbolTable symbols,
+                      StringBuffer rebuiltPat, int options) {
+
+        // Syntax characters: [ ] ^ - & { }
+
+        // Recognized special forms for chars, sets: c-c s-s s&s
+
+        int opts = RuleCharacterIterator.PARSE_VARIABLES |
+                   RuleCharacterIterator.PARSE_ESCAPES;
+        if ((options & IGNORE_SPACE) != 0) {
+            opts |= RuleCharacterIterator.SKIP_WHITESPACE;
+        }
+
+        StringBuffer patBuf = new StringBuffer(), buf = null;
+        boolean usePat = false;
+        UnicodeSet scratch = null;
+        Object backup = null;
+
+        // mode: 0=before [, 1=between [...], 2=after ]
+        // lastItem: 0=none, 1=char, 2=set
+        int lastItem = 0, lastChar = 0, mode = 0;
+        char op = 0;
+
+        boolean invert = false;
+
+        clear();
+
+        while (mode != 2 && !chars.atEnd()) {
+            if (false) {
+                // Debugging assertion
+                if (!((lastItem == 0 && op == 0) ||
+                      (lastItem == 1 && (op == 0 || op == '-')) ||
+                      (lastItem == 2 && (op == 0 || op == '-' || op == '&')))) {
+                    throw new IllegalArgumentException();
+                }
+            }
+
+            int c = 0;
+            boolean literal = false;
+            UnicodeSet nested = null;
+
+            // -------- Check for property pattern
+
+            // setMode: 0=none, 1=unicodeset, 2=propertypat, 3=preparsed
+            int setMode = 0;
+            if (resemblesPropertyPattern(chars, opts)) {
+                setMode = 2;
+            }
+
+            // -------- Parse '[' of opening delimiter OR nested set.
+            // If there is a nested set, use `setMode' to define how
+            // the set should be parsed.  If the '[' is part of the
+            // opening delimiter for this pattern, parse special
+            // strings "[", "[^", "[-", and "[^-".  Check for stand-in
+            // characters representing a nested set in the symbol
+            // table.
+
+            else {
+                // Prepare to backup if necessary
+                backup = chars.getPos(backup);
+                c = chars.next(opts);
+                literal = chars.isEscaped();
+
+                if (c == '[' && !literal) {
+                    if (mode == 1) {
+                        chars.setPos(backup); // backup
+                        setMode = 1;
+                    } else {
+                        // Handle opening '[' delimiter
+                        mode = 1;
+                        patBuf.append('[');
+                        backup = chars.getPos(backup); // prepare to backup
+                        c = chars.next(opts);
+                        literal = chars.isEscaped();
+                        if (c == '^' && !literal) {
+                            invert = true;
+                            patBuf.append('^');
+                            backup = chars.getPos(backup); // prepare to backup
+                            c = chars.next(opts);
+                            literal = chars.isEscaped();
+                        }
+                        // Fall through to handle special leading '-';
+                        // otherwise restart loop for nested [], \p{}, etc.
+                        if (c == '-') {
+                            literal = true;
+                            // Fall through to handle literal '-' below
+                        } else {
+                            chars.setPos(backup); // backup
+                            continue;
+                        }
+                    }
+                } else if (symbols != null) {
+                     UnicodeMatcher m = symbols.lookupMatcher(c); // may be null
+                     if (m != null) {
+                         try {
+                             nested = (UnicodeSet) m;
+                             setMode = 3;
+                         } catch (ClassCastException e) {
+                             syntaxError(chars, "Syntax error");
+                         }
+                     }
+                }
+            }
+
+            // -------- Handle a nested set.  This either is inline in
+            // the pattern or represented by a stand-in that has
+            // previously been parsed and was looked up in the symbol
+            // table.
+
+            if (setMode != 0) {
+                if (lastItem == 1) {
+                    if (op != 0) {
+                        syntaxError(chars, "Char expected after operator");
+                    }
+                    add_unchecked(lastChar, lastChar);
+                    _appendToPat(patBuf, lastChar, false);
+                    lastItem = op = 0;
+                }
+
+                if (op == '-' || op == '&') {
+                    patBuf.append(op);
+                }
+
+                if (nested == null) {
+                    if (scratch == null) scratch = new UnicodeSet();
+                    nested = scratch;
+                }
+                switch (setMode) {
+                case 1:
+                    nested.applyPattern(chars, symbols, patBuf, options);
+                    break;
+                case 2:
+                    chars.skipIgnored(opts);
+                    nested.applyPropertyPattern(chars, patBuf, symbols);
+                    break;
+                case 3: // `nested' already parsed
+                    nested._toPattern(patBuf, false);
+                    break;
+                }
+
+                usePat = true;
+
+                if (mode == 0) {
+                    // Entire pattern is a category; leave parse loop
+                    set(nested);
+                    mode = 2;
+                    break;
+                }
+
+                switch (op) {
+                case '-':
+                    removeAll(nested);
+                    break;
+                case '&':
+                    retainAll(nested);
+                    break;
+                case 0:
+                    addAll(nested);
+                    break;
+                }
+
+                op = 0;
+                lastItem = 2;
+
+                continue;
+            }
+
+            if (mode == 0) {
+                syntaxError(chars, "Missing '['");
+            }
+
+            // -------- Parse special (syntax) characters.  If the
+            // current character is not special, or if it is escaped,
+            // then fall through and handle it below.
+
+            if (!literal) {
+                switch (c) {
+                case ']':
+                    if (lastItem == 1) {
+                        add_unchecked(lastChar, lastChar);
+                        _appendToPat(patBuf, lastChar, false);
+                    }
+                    // Treat final trailing '-' as a literal
+                    if (op == '-') {
+                        add_unchecked(op, op);
+                        patBuf.append(op);
+                    } else if (op == '&') {
+                        syntaxError(chars, "Trailing '&'");
+                    }
+                    patBuf.append(']');
+                    mode = 2;
+                    continue;
+                case '-':
+                    if (op == 0) {
+                        if (lastItem != 0) {
+                            op = (char) c;
+                            continue;
+                        } else {
+                            // Treat final trailing '-' as a literal
+                            add_unchecked(c, c);
+                            c = chars.next(opts);
+                            literal = chars.isEscaped();
+                            if (c == ']' && !literal) {
+                                patBuf.append("-]");
+                                mode = 2;
+                                continue;
+                            }
+                        }
+                    }
+                    syntaxError(chars, "'-' not after char or set");
+                case '&':
+                    if (lastItem == 2 && op == 0) {
+                        op = (char) c;
+                        continue;
+                    }
+                    syntaxError(chars, "'&' not after set");
+                case '^':
+                    syntaxError(chars, "'^' not after '['");
+                case '{':
+                    if (op != 0) {
+                        syntaxError(chars, "Missing operand after operator");
+                    }
+                    if (lastItem == 1) {
+                        add_unchecked(lastChar, lastChar);
+                        _appendToPat(patBuf, lastChar, false);
+                    }
+                    lastItem = 0;
+                    if (buf == null) {
+                        buf = new StringBuffer();
+                    } else {
+                        buf.setLength(0);
+                    }
+                    boolean ok = false;
+                    while (!chars.atEnd()) {
+                        c = chars.next(opts);
+                        literal = chars.isEscaped();
+                        if (c == '}' && !literal) {
+                            ok = true;
+                            break;
+                        }
+                        UTF16.append(buf, c);
+                    }
+                    if (buf.length() < 1 || !ok) {
+                        syntaxError(chars, "Invalid multicharacter string");
+                    }
+                    // We have new string. Add it to set and continue;
+                    // we don't need to drop through to the further
+                    // processing
+                    add(buf.toString());
+                    patBuf.append('{');
+                    _appendToPat(patBuf, buf.toString(), false);
+                    patBuf.append('}');
+                    continue;
+                case SymbolTable.SYMBOL_REF:
+                    //         symbols  nosymbols
+                    // [a-$]   error    error (ambiguous)
+                    // [a$]    anchor   anchor
+                    // [a-$x]  var "x"* literal '$'
+                    // [a-$.]  error    literal '$'
+                    // *We won't get here in the case of var "x"
+                    backup = chars.getPos(backup);
+                    c = chars.next(opts);
+                    literal = chars.isEscaped();
+                    boolean anchor = (c == ']' && !literal);
+                    if (symbols == null && !anchor) {
+                        c = SymbolTable.SYMBOL_REF;
+                        chars.setPos(backup);
+                        break; // literal '$'
+                    }
+                    if (anchor && op == 0) {
+                        if (lastItem == 1) {
+                            add_unchecked(lastChar, lastChar);
+                            _appendToPat(patBuf, lastChar, false);
+                        }
+                        add_unchecked(UnicodeMatcher.ETHER);
+                        usePat = true;
+                        patBuf.append(SymbolTable.SYMBOL_REF).append(']');
+                        mode = 2;
+                        continue;
+                    }
+                    syntaxError(chars, "Unquoted '$'");
+                default:
+                    break;
+                }
+            }
+
+            // -------- Parse literal characters.  This includes both
+            // escaped chars ("\u4E01") and non-syntax characters
+            // ("a").
+
+            switch (lastItem) {
+            case 0:
+                lastItem = 1;
+                lastChar = c;
+                break;
+            case 1:
+                if (op == '-') {
+                    if (lastChar >= c) {
+                        // Don't allow redundant (a-a) or empty (b-a) ranges;
+                        // these are most likely typos.
+                        syntaxError(chars, "Invalid range");
+                    }
+                    add_unchecked(lastChar, c);
+                    _appendToPat(patBuf, lastChar, false);
+                    patBuf.append(op);
+                    _appendToPat(patBuf, c, false);
+                    lastItem = op = 0;
+                } else {
+                    add_unchecked(lastChar, lastChar);
+                    _appendToPat(patBuf, lastChar, false);
+                    lastChar = c;
+                }
+                break;
+            case 2:
+                if (op != 0) {
+                    syntaxError(chars, "Set expected after operator");
+                }
+                lastChar = c;
+                lastItem = 1;
+                break;
+            }
+        }
+
+        if (mode != 2) {
+            syntaxError(chars, "Missing ']'");
+        }
+
+        chars.skipIgnored(opts);
+
+        /**
+         * Handle global flags (invert, case insensitivity).  If this
+         * pattern should be compiled case-insensitive, then we need
+         * to close over case BEFORE COMPLEMENTING.  This makes
+         * patterns like /[^abc]/i work.
+         */
+        if ((options & CASE) != 0) {
+            closeOver(CASE);
+        }
+        if (invert) {
+            complement();
+        }
+
+        // Use the rebuilt pattern (pat) only if necessary.  Prefer the
+        // generated pattern.
+        if (usePat) {
+            rebuiltPat.append(patBuf.toString());
+        } else {
+            _generatePattern(rebuiltPat, false, true);
+        }
+    }
+
+    private static void syntaxError(RuleCharacterIterator chars, String msg) {
+        throw new IllegalArgumentException("Error: " + msg + " at \"" +
+                                           Utility.escape(chars.toString()) +
+                                           '"');
+    }
+
+    /**
+     * Add the contents of the UnicodeSet (as strings) into a collection.
+     * @param target collection to add into
+     * @stable ICU 2.8
+     */
+    public void addAllTo(Collection target) {
+        UnicodeSetIterator it = new UnicodeSetIterator(this);
+        while (it.next()) {
+            target.add(it.getString());
+        }
+    }
+
+    /**
+     * Add the contents of the collection (as strings) into this UnicodeSet.
+     * @param source the collection to add
+     * @stable ICU 2.8
+     */
+    public void addAll(Collection source) {
+        checkFrozen();
+        Iterator it = source.iterator();
+        while (it.hasNext()) {
+            add(it.next().toString());
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Utility methods
+    //----------------------------------------------------------------
+
+    private void ensureCapacity(int newLen) {
+        if (newLen <= list.length) return;
+        int[] temp = new int[newLen + GROW_EXTRA];
+        System.arraycopy(list, 0, temp, 0, len);
+        list = temp;
+    }
+
+    private void ensureBufferCapacity(int newLen) {
+        if (buffer != null && newLen <= buffer.length) return;
+        buffer = new int[newLen + GROW_EXTRA];
+    }
+
+    /**
+     * Assumes start <= end.
+     */
+    private int[] range(int start, int end) {
+        if (rangeList == null) {
+            rangeList = new int[] { start, end+1, HIGH };
+        } else {
+            rangeList[0] = start;
+            rangeList[1] = end+1;
+        }
+        return rangeList;
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Fundamental operations
+    //----------------------------------------------------------------
+
+    // polarity = 0, 3 is normal: x xor y
+    // polarity = 1, 2: x xor ~y == x === y
+
+    private UnicodeSet xor(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b;
+        if (polarity == 1 || polarity == 2) {
+            b = LOW;
+            if (other[j] == LOW) { // skip base if already LOW
+                ++j;
+                b = other[j];
+            }
+        } else {
+            b = other[j++];
+        }
+        // simplest of all the routines
+        // sort the values, discarding identicals!
+        while (true) {
+            if (a < b) {
+                buffer[k++] = a;
+                a = list[i++];
+            } else if (b < a) {
+                buffer[k++] = b;
+                b = other[j++];
+            } else if (a != HIGH) { // at this point, a == b
+                // discard both values!
+                a = list[i++];
+                b = other[j++];
+            } else { // DONE!
+                buffer[k++] = HIGH;
+                len = k;
+                break;
+            }
+        }
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    // polarity = 0 is normal: x union y
+    // polarity = 2: x union ~y
+    // polarity = 1: ~x union y
+    // polarity = 3: ~x union ~y
+
+    private UnicodeSet add(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b = other[j++];
+        // change from xor is that we have to check overlapping pairs
+        // polarity bit 1 means a is second, bit 2 means b is.
+        main:
+        while (true) {
+            switch (polarity) {
+              case 0: // both first; take lower if unequal
+                if (a < b) { // take a
+                    // Back up over overlapping ranges in buffer[]
+                    if (k > 0 && a <= buffer[k-1]) {
+                        // Pick latter end value in buffer[] vs. list[]
+                        a = max(list[i], buffer[--k]);
+                    } else {
+                        // No overlap
+                        buffer[k++] = a;
+                        a = list[i];
+                    }
+                    i++; // Common if/else code factored out
+                    polarity ^= 1;
+                } else if (b < a) { // take b
+                    if (k > 0 && b <= buffer[k-1]) {
+                        b = max(other[j], buffer[--k]);
+                    } else {
+                        buffer[k++] = b;
+                        b = other[j];
+                    }
+                    j++;
+                    polarity ^= 2;
+                } else { // a == b, take a, drop b
+                    if (a == HIGH) break main;
+                    // This is symmetrical; it doesn't matter if
+                    // we backtrack with a or b. - liu
+                    if (k > 0 && a <= buffer[k-1]) {
+                        a = max(list[i], buffer[--k]);
+                    } else {
+                        // No overlap
+                        buffer[k++] = a;
+                        a = list[i];
+                    }
+                    i++;
+                    polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 3: // both second; take higher if unequal, and drop other
+                if (b <= a) { // take a
+                    if (a == HIGH) break main;
+                    buffer[k++] = a;
+                } else { // take b
+                    if (b == HIGH) break main;
+                    buffer[k++] = b;
+                }
+                a = list[i++]; polarity ^= 1;   // factored common code
+                b = other[j++]; polarity ^= 2;
+                break;
+              case 1: // a second, b first; if b < a, overlap
+                if (a < b) { // no overlap, take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // OVERLAP, drop b
+                    b = other[j++]; polarity ^= 2;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 2: // a first, b second; if a < b, overlap
+                if (b < a) { // no overlap, take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else  if (a < b) { // OVERLAP, drop a
+                    a = list[i++]; polarity ^= 1;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+            }
+        }
+        buffer[k++] = HIGH;    // terminate
+        len = k;
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    // polarity = 0 is normal: x intersect y
+    // polarity = 2: x intersect ~y == set-minus
+    // polarity = 1: ~x intersect y
+    // polarity = 3: ~x intersect ~y
+
+    private UnicodeSet retain(int[] other, int otherLen, int polarity) {
+        ensureBufferCapacity(len + otherLen);
+        int i = 0, j = 0, k = 0;
+        int a = list[i++];
+        int b = other[j++];
+        // change from xor is that we have to check overlapping pairs
+        // polarity bit 1 means a is second, bit 2 means b is.
+        main:
+        while (true) {
+            switch (polarity) {
+              case 0: // both first; drop the smaller
+                if (a < b) { // drop a
+                    a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // drop b
+                    b = other[j++]; polarity ^= 2;
+                } else { // a == b, take one, drop other
+                    if (a == HIGH) break main;
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 3: // both second; take lower if unequal
+                if (a < b) { // take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else { // a == b, take one, drop other
+                    if (a == HIGH) break main;
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 1: // a second, b first;
+                if (a < b) { // NO OVERLAP, drop a
+                    a = list[i++]; polarity ^= 1;
+                } else if (b < a) { // OVERLAP, take b
+                    buffer[k++] = b; b = other[j++]; polarity ^= 2;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+              case 2: // a first, b second; if a < b, overlap
+                if (b < a) { // no overlap, drop b
+                    b = other[j++]; polarity ^= 2;
+                } else  if (a < b) { // OVERLAP, take a
+                    buffer[k++] = a; a = list[i++]; polarity ^= 1;
+                } else { // a == b, drop both!
+                    if (a == HIGH) break main;
+                    a = list[i++]; polarity ^= 1;
+                    b = other[j++]; polarity ^= 2;
+                }
+                break;
+            }
+        }
+        buffer[k++] = HIGH;    // terminate
+        len = k;
+        // swap list and buffer
+        int[] temp = list;
+        list = buffer;
+        buffer = temp;
+        pat = null;
+        return this;
+    }
+
+    private static final int max(int a, int b) {
+        return (a > b) ? a : b;
+    }
+
+    //----------------------------------------------------------------
+    // Generic filter-based scanning code
+    //----------------------------------------------------------------
+
+    private static interface Filter {
+        boolean contains(int codePoint);
+    }
+
+    private static class NumericValueFilter implements Filter {
+        double value;
+        NumericValueFilter(double value) { this.value = value; }
+        public boolean contains(int ch) {
+            return UCharacter.getUnicodeNumericValue(ch) == value;
+        }
+    }
+
+    private static class GeneralCategoryMaskFilter implements Filter {
+        int mask;
+        GeneralCategoryMaskFilter(int mask) { this.mask = mask; }
+        public boolean contains(int ch) {
+            return ((1 << UCharacter.getType(ch)) & mask) != 0;
+        }
+    }
+
+    private static class IntPropertyFilter implements Filter {
+        int prop;
+        int value;
+        IntPropertyFilter(int prop, int value) {
+            this.prop = prop;
+            this.value = value;
+        }
+        public boolean contains(int ch) {
+            return UCharacter.getIntPropertyValue(ch, prop) == value;
+        }
+    }
+
+    // VersionInfo for unassigned characters
+    static final VersionInfo NO_VERSION = VersionInfo.getInstance(0, 0, 0, 0);
+
+    private static class VersionFilter implements Filter {
+        VersionInfo version;
+        VersionFilter(VersionInfo version) { this.version = version; }
+        public boolean contains(int ch) {
+            VersionInfo v = UCharacter.getAge(ch);
+            // Reference comparison ok; VersionInfo caches and reuses
+            // unique objects.
+            return v != NO_VERSION &&
+                   v.compareTo(version) <= 0;
+        }
+    }
+
+    private static synchronized UnicodeSet getInclusions(int src) {
+        if (INCLUSIONS == null) {
+            INCLUSIONS = new UnicodeSet[UCharacterProperty.SRC_COUNT];
+        }
+        if(INCLUSIONS[src] == null) {
+            UnicodeSet incl = new UnicodeSet();
+            switch(src) {
+            case UCharacterProperty.SRC_CHAR:
+                UCharacterProperty.getInstance().addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_PROPSVEC:
+                UCharacterProperty.getInstance().upropsvec_addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_CHAR_AND_PROPSVEC:
+                UCharacterProperty.getInstance().addPropertyStarts(incl);
+                UCharacterProperty.getInstance().upropsvec_addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_HST:
+                UCharacterProperty.getInstance().uhst_addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_NORM:
+                NormalizerImpl.addPropertyStarts(incl);
+                break;
+            case UCharacterProperty.SRC_CASE:
+                try {
+                    UCaseProps.getSingleton().addPropertyStarts(incl);
+                } catch(IOException e) {
+                    throw new MissingResourceException(e.getMessage(),"","");
+                }
+                break;
+            case UCharacterProperty.SRC_BIDI:
+                try {
+                    UBiDiProps.getSingleton().addPropertyStarts(incl);
+                } catch(IOException e) {
+                    throw new MissingResourceException(e.getMessage(),"","");
+                }
+                break;
+            default:
+                throw new IllegalStateException("UnicodeSet.getInclusions(unknown src "+src+")");
+            }
+            INCLUSIONS[src] = incl;
+        }
+        return INCLUSIONS[src];
+    }
+
+    /**
+     * Generic filter-based scanning code for UCD property UnicodeSets.
+     */
+    private UnicodeSet applyFilter(Filter filter, int src) {
+        // Walk through all Unicode characters, noting the start
+        // and end of each range for which filter.contain(c) is
+        // true.  Add each range to a set.
+        //
+        // To improve performance, use the INCLUSIONS set, which
+        // encodes information about character ranges that are known
+        // to have identical properties, such as the CJK Ideographs
+        // from U+4E00 to U+9FA5.  INCLUSIONS contains all characters
+        // except the first characters of such ranges.
+        //
+        // TODO Where possible, instead of scanning over code points,
+        // use internal property data to initialize UnicodeSets for
+        // those properties.  Scanning code points is slow.
+
+        clear();
+
+        int startHasProperty = -1;
+        UnicodeSet inclusions = getInclusions(src);
+        int limitRange = inclusions.getRangeCount();
+
+        for (int j=0; j<limitRange; ++j) {
+            // get current range
+            int start = inclusions.getRangeStart(j);
+            int end = inclusions.getRangeEnd(j);
+
+            // for all the code points in the range, process
+            for (int ch = start; ch <= end; ++ch) {
+                // only add to the unicodeset on inflection points --
+                // where the hasProperty value changes to false
+                if (filter.contains(ch)) {
+                    if (startHasProperty < 0) {
+                        startHasProperty = ch;
+                    }
+                } else if (startHasProperty >= 0) {
+                    add_unchecked(startHasProperty, ch-1);
+                    startHasProperty = -1;
+                }
+            }
+        }
+        if (startHasProperty >= 0) {
+            add_unchecked(startHasProperty, 0x10FFFF);
+        }
+
+        return this;
+    }
+
+
+    /**
+     * Remove leading and trailing rule white space and compress
+     * internal rule white space to a single space character.
+     *
+     * @see UCharacterProperty#isRuleWhiteSpace
+     */
+    private static String mungeCharName(String source) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<source.length(); ) {
+            int ch = UTF16.charAt(source, i);
+            i += UTF16.getCharCount(ch);
+            if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                if (buf.length() == 0 ||
+                    buf.charAt(buf.length() - 1) == ' ') {
+                    continue;
+                }
+                ch = ' '; // convert to ' '
+            }
+            UTF16.append(buf, ch);
+        }
+        if (buf.length() != 0 &&
+            buf.charAt(buf.length() - 1) == ' ') {
+            buf.setLength(buf.length() - 1);
+        }
+        return buf.toString();
+    }
+
+    //----------------------------------------------------------------
+    // Property set API
+    //----------------------------------------------------------------
+
+    /**
+     * Modifies this set to contain those code points which have the
+     * given value for the given binary or enumerated property, as
+     * returned by UCharacter.getIntPropertyValue.  Prior contents of
+     * this set are lost.
+     *
+     * @param prop a property in the range
+     * UProperty.BIN_START..UProperty.BIN_LIMIT-1 or
+     * UProperty.INT_START..UProperty.INT_LIMIT-1 or.
+     * UProperty.MASK_START..UProperty.MASK_LIMIT-1.
+     *
+     * @param value a value in the range
+     * UCharacter.getIntPropertyMinValue(prop)..
+     * UCharacter.getIntPropertyMaxValue(prop), with one exception.
+     * If prop is UProperty.GENERAL_CATEGORY_MASK, then value should not be
+     * a UCharacter.getType() result, but rather a mask value produced
+     * by logically ORing (1 << UCharacter.getType()) values together.
+     * This allows grouped categories such as [:L:] to be represented.
+     *
+     * @return a reference to this set
+     *
+     * @stable ICU 2.4
+     */
+    public UnicodeSet applyIntPropertyValue(int prop, int value) {
+        checkFrozen();
+        if (prop == UProperty.GENERAL_CATEGORY_MASK) {
+            applyFilter(new GeneralCategoryMaskFilter(value), UCharacterProperty.SRC_CHAR);
+        } else {
+            applyFilter(new IntPropertyFilter(prop, value), UCharacterProperty.getInstance().getSource(prop));
+        }
+        return this;
+    }
+
+
+
+    /**
+     * Modifies this set to contain those code points which have the
+     * given value for the given property.  Prior contents of this
+     * set are lost.
+     *
+     * @param propertyAlias a property alias, either short or long.
+     * The name is matched loosely.  See PropertyAliases.txt for names
+     * and a description of loose matching.  If the value string is
+     * empty, then this string is interpreted as either a
+     * General_Category value alias, a Script value alias, a binary
+     * property alias, or a special ID.  Special IDs are matched
+     * loosely and correspond to the following sets:
+     *
+     * "ANY" = [\u0000-\U0010FFFF],
+     * "ASCII" = [\u0000-\u007F].
+     *
+     * @param valueAlias a value alias, either short or long.  The
+     * name is matched loosely.  See PropertyValueAliases.txt for
+     * names and a description of loose matching.  In addition to
+     * aliases listed, numeric values and canonical combining classes
+     * may be expressed numerically, e.g., ("nv", "0.5") or ("ccc",
+     * "220").  The value string may also be empty.
+     *
+     * @return a reference to this set
+     *
+     * @stable ICU 2.4
+     */
+    public UnicodeSet applyPropertyAlias(String propertyAlias, String valueAlias) {
+        return applyPropertyAlias(propertyAlias, valueAlias, null);
+    }
+
+    /**
+     * Modifies this set to contain those code points which have the
+     * given value for the given property.  Prior contents of this
+     * set are lost.
+     * @param propertyAlias
+     * @param valueAlias
+     * @param symbols if not null, then symbols are first called to see if a property
+     * is available. If true, then everything else is skipped.
+     * @return this set
+     * @stable ICU 3.2
+     */
+    public UnicodeSet applyPropertyAlias(String propertyAlias,
+                                         String valueAlias, SymbolTable symbols) {
+        checkFrozen();
+        int p;
+        int v;
+        boolean mustNotBeEmpty = false, invert = false;
+
+        if (symbols != null
+                && (symbols instanceof XSymbolTable)
+                && ((XSymbolTable)symbols).applyPropertyAlias(propertyAlias, valueAlias, this)) {
+                return this;
+        }
+
+        if (valueAlias.length() > 0) {
+            p = UCharacter.getPropertyEnum(propertyAlias);
+
+            // Treat gc as gcm
+            if (p == UProperty.GENERAL_CATEGORY) {
+                p = UProperty.GENERAL_CATEGORY_MASK;
+            }
+
+            if ((p >= UProperty.BINARY_START && p < UProperty.BINARY_LIMIT) ||
+                (p >= UProperty.INT_START && p < UProperty.INT_LIMIT) ||
+                (p >= UProperty.MASK_START && p < UProperty.MASK_LIMIT)) {
+                try {
+                    v = UCharacter.getPropertyValueEnum(p, valueAlias);
+                } catch (IllegalArgumentException e) {
+                    // Handle numeric CCC
+                    if (p == UProperty.CANONICAL_COMBINING_CLASS ||
+                        p == UProperty.LEAD_CANONICAL_COMBINING_CLASS ||
+                        p == UProperty.TRAIL_CANONICAL_COMBINING_CLASS) {
+                        v = Integer.parseInt(Utility.deleteRuleWhiteSpace(valueAlias));
+                        // If the resultant set is empty then the numeric value
+                        // was invalid.
+                        //mustNotBeEmpty = true;
+                        // old code was wrong; anything between 0 and 255 is valid even if unused.
+                        if (v < 0 || v > 255) throw e;
+                    } else {
+                        throw e;
+                    }
+                }
+            }
+
+            else {
+
+                switch (p) {
+                case UProperty.NUMERIC_VALUE:
+                    {
+                        double value = Double.parseDouble(Utility.deleteRuleWhiteSpace(valueAlias));
+                        applyFilter(new NumericValueFilter(value), UCharacterProperty.SRC_CHAR);
+                        return this;
+                    }
+                case UProperty.NAME:
+                case UProperty.UNICODE_1_NAME:
+                    {
+                        // Must munge name, since
+                        // UCharacter.charFromName() does not do
+                        // 'loose' matching.
+                        String buf = mungeCharName(valueAlias);
+                        int ch =
+                            (p == UProperty.NAME) ?
+                            UCharacter.getCharFromExtendedName(buf) :
+                            UCharacter.getCharFromName1_0(buf);
+                        if (ch == -1) {
+                            throw new IllegalArgumentException("Invalid character name");
+                        }
+                        clear();
+                        add_unchecked(ch);
+                        return this;
+                    }
+                case UProperty.AGE:
+                    {
+                        // Must munge name, since
+                        // VersionInfo.getInstance() does not do
+                        // 'loose' matching.
+                        VersionInfo version = VersionInfo.getInstance(mungeCharName(valueAlias));
+                        applyFilter(new VersionFilter(version), UCharacterProperty.SRC_PROPSVEC);
+                        return this;
+                    }
+                }
+
+                // p is a non-binary, non-enumerated property that we
+                // don't support (yet).
+                throw new IllegalArgumentException("Unsupported property");
+            }
+        }
+
+        else {
+            // valueAlias is empty.  Interpret as General Category, Script,
+            // Binary property, or ANY or ASCII.  Upon success, p and v will
+            // be set.
+            try {
+                p = UProperty.GENERAL_CATEGORY_MASK;
+                v = UCharacter.getPropertyValueEnum(p, propertyAlias);
+            } catch (IllegalArgumentException e) {
+                try {
+                    p = UProperty.SCRIPT;
+                    v = UCharacter.getPropertyValueEnum(p, propertyAlias);
+                } catch (IllegalArgumentException e2) {
+                    try {
+                        p = UCharacter.getPropertyEnum(propertyAlias);
+                    } catch (IllegalArgumentException e3) {
+                        p = -1;
+                    }
+                    if (p >= UProperty.BINARY_START && p < UProperty.BINARY_LIMIT) {
+                        v = 1;
+                    } else if (p == -1) {
+                        if (0 == UPropertyAliases.compare(ANY_ID, propertyAlias)) {
+                            set(MIN_VALUE, MAX_VALUE);
+                            return this;
+                        } else if (0 == UPropertyAliases.compare(ASCII_ID, propertyAlias)) {
+                            set(0, 0x7F);
+                            return this;
+                        } else if (0 == UPropertyAliases.compare(ASSIGNED, propertyAlias)) {
+                            // [:Assigned:]=[:^Cn:]
+                            p = UProperty.GENERAL_CATEGORY_MASK;
+                            v = (1<<UCharacter.UNASSIGNED);
+                            invert = true;
+                        } else {
+                            // Property name was never matched.
+                            throw new IllegalArgumentException("Invalid property alias: " + propertyAlias + "=" + valueAlias);
+                        }
+                    } else {
+                        // Valid propery name, but it isn't binary, so the value
+                        // must be supplied.
+                        throw new IllegalArgumentException("Missing property value");
+                    }
+                }
+            }
+        }
+
+        applyIntPropertyValue(p, v);
+        if(invert) {
+            complement();
+        }
+
+        if (mustNotBeEmpty && isEmpty()) {
+            // mustNotBeEmpty is set to true if an empty set indicates
+            // invalid input.
+            throw new IllegalArgumentException("Invalid property value");
+        }
+
+        return this;
+    }
+
+    //----------------------------------------------------------------
+    // Property set patterns
+    //----------------------------------------------------------------
+
+    /**
+     * Return true if the given position, in the given pattern, appears
+     * to be the start of a property set pattern.
+     */
+    private static boolean resemblesPropertyPattern(String pattern, int pos) {
+        // Patterns are at least 5 characters long
+        if ((pos+5) > pattern.length()) {
+            return false;
+        }
+
+        // Look for an opening [:, [:^, \p, or \P
+        return pattern.regionMatches(pos, "[:", 0, 2) ||
+            pattern.regionMatches(true, pos, "\\p", 0, 2) ||
+            pattern.regionMatches(pos, "\\N", 0, 2);
+    }
+
+    /**
+     * Return true if the given iterator appears to point at a
+     * property pattern.  Regardless of the result, return with the
+     * iterator unchanged.
+     * @param chars iterator over the pattern characters.  Upon return
+     * it will be unchanged.
+     * @param iterOpts RuleCharacterIterator options
+     */
+    private static boolean resemblesPropertyPattern(RuleCharacterIterator chars,
+                                                    int iterOpts) {
+        boolean result = false;
+        iterOpts &= ~RuleCharacterIterator.PARSE_ESCAPES;
+        Object pos = chars.getPos(null);
+        int c = chars.next(iterOpts);
+        if (c == '[' || c == '\\') {
+            int d = chars.next(iterOpts & ~RuleCharacterIterator.SKIP_WHITESPACE);
+            result = (c == '[') ? (d == ':') :
+                     (d == 'N' || d == 'p' || d == 'P');
+        }
+        chars.setPos(pos);
+        return result;
+    }
+
+    /**
+     * Parse the given property pattern at the given parse position.
+     * @param symbols TODO
+     */
+    private UnicodeSet applyPropertyPattern(String pattern, ParsePosition ppos, SymbolTable symbols) {
+        int pos = ppos.getIndex();
+
+        // On entry, ppos should point to one of the following locations:
+
+        // Minimum length is 5 characters, e.g. \p{L}
+        if ((pos+5) > pattern.length()) {
+            return null;
+        }
+
+        boolean posix = false; // true for [:pat:], false for \p{pat} \P{pat} \N{pat}
+        boolean isName = false; // true for \N{pat}, o/w false
+        boolean invert = false;
+
+        // Look for an opening [:, [:^, \p, or \P
+        if (pattern.regionMatches(pos, "[:", 0, 2)) {
+            posix = true;
+            pos = Utility.skipWhitespace(pattern, pos+2);
+            if (pos < pattern.length() && pattern.charAt(pos) == '^') {
+                ++pos;
+                invert = true;
+            }
+        } else if (pattern.regionMatches(true, pos, "\\p", 0, 2) ||
+                   pattern.regionMatches(pos, "\\N", 0, 2)) {
+            char c = pattern.charAt(pos+1);
+            invert = (c == 'P');
+            isName = (c == 'N');
+            pos = Utility.skipWhitespace(pattern, pos+2);
+            if (pos == pattern.length() || pattern.charAt(pos++) != '{') {
+                // Syntax error; "\p" or "\P" not followed by "{"
+                return null;
+            }
+        } else {
+            // Open delimiter not seen
+            return null;
+        }
+
+        // Look for the matching close delimiter, either :] or }
+        int close = pattern.indexOf(posix ? ":]" : "}", pos);
+        if (close < 0) {
+            // Syntax error; close delimiter missing
+            return null;
+        }
+
+        // Look for an '=' sign.  If this is present, we will parse a
+        // medium \p{gc=Cf} or long \p{GeneralCategory=Format}
+        // pattern.
+        int equals = pattern.indexOf('=', pos);
+        String propName, valueName;
+        if (equals >= 0 && equals < close && !isName) {
+            // Equals seen; parse medium/long pattern
+            propName = pattern.substring(pos, equals);
+            valueName = pattern.substring(equals+1, close);
+        }
+
+        else {
+            // Handle case where no '=' is seen, and \N{}
+            propName = pattern.substring(pos, close);
+            valueName = "";
+
+            // Handle \N{name}
+            if (isName) {
+                // This is a little inefficient since it means we have to
+                // parse "na" back to UProperty.NAME even though we already
+                // know it's UProperty.NAME.  If we refactor the API to
+                // support args of (int, String) then we can remove
+                // "na" and make this a little more efficient.
+                valueName = propName;
+                propName = "na";
+            }
+        }
+
+        applyPropertyAlias(propName, valueName, symbols);
+
+        if (invert) {
+            complement();
+        }
+
+        // Move to the limit position after the close delimiter
+        ppos.setIndex(close + (posix ? 2 : 1));
+
+        return this;
+    }
+
+    /**
+     * Parse a property pattern.
+     * @param chars iterator over the pattern characters.  Upon return
+     * it will be advanced to the first character after the parsed
+     * pattern, or the end of the iteration if all characters are
+     * parsed.
+     * @param rebuiltPat the pattern that was parsed, rebuilt or
+     * copied from the input pattern, as appropriate.
+     * @param symbols TODO
+     */
+    private void applyPropertyPattern(RuleCharacterIterator chars,
+                                      StringBuffer rebuiltPat, SymbolTable symbols) {
+        String patStr = chars.lookahead();
+        ParsePosition pos = new ParsePosition(0);
+        applyPropertyPattern(patStr, pos, symbols);
+        if (pos.getIndex() == 0) {
+            syntaxError(chars, "Invalid property pattern");
+        }
+        chars.jumpahead(pos.getIndex());
+        rebuiltPat.append(patStr.substring(0, pos.getIndex()));
+    }
+
+    //----------------------------------------------------------------
+    // Case folding API
+    //----------------------------------------------------------------
+
+    /**
+     * Bitmask for constructor and applyPattern() indicating that
+     * white space should be ignored.  If set, ignore characters for
+     * which UCharacterProperty.isRuleWhiteSpace() returns true,
+     * unless they are quoted or escaped.  This may be ORed together
+     * with other selectors.
+     * @stable ICU 3.8
+     */
+    public static final int IGNORE_SPACE = 1;
+
+    /**
+     * Bitmask for constructor, applyPattern(), and closeOver()
+     * indicating letter case.  This may be ORed together with other
+     * selectors.
+     *
+     * Enable case insensitive matching.  E.g., "[ab]" with this flag
+     * will match 'a', 'A', 'b', and 'B'.  "[^ab]" with this flag will
+     * match all except 'a', 'A', 'b', and 'B'. This performs a full
+     * closure over case mappings, e.g. U+017F for s.
+     *
+     * The resulting set is a superset of the input for the code points but
+     * not for the strings.
+     * It performs a case mapping closure of the code points and adds
+     * full case folding strings for the code points, and reduces strings of
+     * the original set to their full case folding equivalents.
+     *
+     * This is designed for case-insensitive matches, for example
+     * in regular expressions. The full code point case closure allows checking of
+     * an input character directly against the closure set.
+     * Strings are matched by comparing the case-folded form from the closure
+     * set with an incremental case folding of the string in question.
+     *
+     * The closure set will also contain single code points if the original
+     * set contained case-equivalent strings (like U+00DF for "ss" or "Ss" etc.).
+     * This is not necessary (that is, redundant) for the above matching method
+     * but results in the same closure sets regardless of whether the original
+     * set contained the code point or a string.
+     * @stable ICU 3.8
+     */
+    public static final int CASE = 2;
+
+    /**
+     * Alias for UnicodeSet.CASE, for ease of porting from C++ where ICU4C
+     * also has both USET_CASE and USET_CASE_INSENSITIVE (see uset.h).
+     * @see #CASE
+     * @stable ICU 3.4
+     */
+    public static final int CASE_INSENSITIVE = 2;
+
+    /**
+     * Bitmask for constructor, applyPattern(), and closeOver()
+     * indicating letter case.  This may be ORed together with other
+     * selectors.
+     *
+     * Enable case insensitive matching.  E.g., "[ab]" with this flag
+     * will match 'a', 'A', 'b', and 'B'.  "[^ab]" with this flag will
+     * match all except 'a', 'A', 'b', and 'B'. This adds the lower-,
+     * title-, and uppercase mappings as well as the case folding
+     * of each existing element in the set.
+     * @stable ICU 3.4
+     */
+    public static final int ADD_CASE_MAPPINGS = 4;
+
+    //  add the result of a full case mapping to the set
+    //  use str as a temporary string to avoid constructing one
+    private static final void addCaseMapping(UnicodeSet set, int result, StringBuffer full) {
+        if(result >= 0) {
+            if(result > UCaseProps.MAX_STRING_LENGTH) {
+                // add a single-code point case mapping
+                set.add(result);
+            } else {
+                // add a string case mapping from full with length result
+                set.add(full.toString());
+                full.setLength(0);
+            }
+        }
+        // result < 0: the code point mapped to itself, no need to add it
+        // see UCaseProps
+    }
+
+    /**
+     * Close this set over the given attribute.  For the attribute
+     * CASE, the result is to modify this set so that:
+     *
+     * 1. For each character or string 'a' in this set, all strings
+     * 'b' such that foldCase(a) == foldCase(b) are added to this set.
+     * (For most 'a' that are single characters, 'b' will have
+     * b.length() == 1.)
+     *
+     * 2. For each string 'e' in the resulting set, if e !=
+     * foldCase(e), 'e' will be removed.
+     *
+     * Example: [aq\u00DF{Bc}{bC}{Fi}] => [aAqQ\u00DF\uFB01{ss}{bc}{fi}]
+     *
+     * (Here foldCase(x) refers to the operation
+     * UCharacter.foldCase(x, true), and a == b actually denotes
+     * a.equals(b), not pointer comparison.)
+     *
+     * @param attribute bitmask for attributes to close over.
+     * Currently only the CASE bit is supported.  Any undefined bits
+     * are ignored.
+     * @return a reference to this set.
+     * @stable ICU 3.8
+     */
+    public UnicodeSet closeOver(int attribute) {
+        checkFrozen();
+        if ((attribute & (CASE | ADD_CASE_MAPPINGS)) != 0) {
+            UCaseProps csp;
+            try {
+                csp = UCaseProps.getSingleton();
+            } catch(IOException e) {
+                return this;
+            }
+            UnicodeSet foldSet = new UnicodeSet(this);
+            ULocale root = ULocale.ROOT;
+
+            // start with input set to guarantee inclusion
+            // CASE: remove strings because the strings will actually be reduced (folded);
+            //       therefore, start with no strings and add only those needed
+            if((attribute & CASE) != 0) {
+                foldSet.strings.clear();
+            }
+
+            int n = getRangeCount();
+            int result;
+            StringBuffer full = new StringBuffer();
+            int locCache[] = new int[1];
+
+            for (int i=0; i<n; ++i) {
+                int start = getRangeStart(i);
+                int end   = getRangeEnd(i);
+
+                if((attribute & CASE) != 0) {
+                    // full case closure
+                    for (int cp=start; cp<=end; ++cp) {
+                        csp.addCaseClosure(cp, foldSet);
+                    }
+                } else {
+                    // add case mappings
+                    // (does not add long s for regular s, or Kelvin for k, for example)
+                    for (int cp=start; cp<=end; ++cp) {
+                        result = csp.toFullLower(cp, null, full, root, locCache);
+                        addCaseMapping(foldSet, result, full);
+
+                        result = csp.toFullTitle(cp, null, full, root, locCache);
+                        addCaseMapping(foldSet, result, full);
+
+                        result = csp.toFullUpper(cp, null, full, root, locCache);
+                        addCaseMapping(foldSet, result, full);
+
+                        result = csp.toFullFolding(cp, full, 0);
+                        addCaseMapping(foldSet, result, full);
+                    }
+                }
+            }
+            if (!strings.isEmpty()) {
+                String str;
+                if ((attribute & CASE) != 0) {
+                    Iterator it = strings.iterator();
+                    while (it.hasNext()) {
+                        str = UCharacter.foldCase((String)it.next(), 0);
+                        if(!csp.addStringCaseClosure(str, foldSet)) {
+                            foldSet.add(str); // does not map to code points: add the folded string itself
+                        }
+                    }
+                } else {
+                    BreakIterator bi = BreakIterator.getWordInstance(root);
+                    Iterator it = strings.iterator();
+                    while (it.hasNext()) {
+                        str = (String)it.next();
+                        foldSet.add(UCharacter.toLowerCase(root, str));
+                        foldSet.add(UCharacter.toTitleCase(root, str, bi));
+                        foldSet.add(UCharacter.toUpperCase(root, str));
+                        foldSet.add(UCharacter.foldCase(str, 0));
+                    }
+                }
+            }
+            set(foldSet);
+        }
+        return this;
+    }
+
+    /**
+     * Internal class for customizing UnicodeSet parsing of properties.
+     * TODO: extend to allow customizing of codepoint ranges
+     * @draft ICU3.8
+     * @provisional This API might change or be removed in a future release.
+     * @author medavis
+     */
+    abstract public static class XSymbolTable implements SymbolTable {
+        /**
+         * Default constructor
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        public XSymbolTable(){}
+        /**
+         * Supplies default implementation for SymbolTable (no action).
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        public UnicodeMatcher lookupMatcher(int i) {
+            return null;
+        }
+        /**
+         * Apply a new property alias. Is called when parsing [:xxx=yyy:]. Results are to put into result.
+         * @param propertyName the xxx in [:xxx=yyy:]
+         * @param propertyValue the yyy in [:xxx=yyy:]
+         * @param result where the result is placed
+         * @return true if handled
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        public boolean applyPropertyAlias(String propertyName, String propertyValue, UnicodeSet result) {
+            return false;
+        }
+        /**
+         * Supplies default implementation for SymbolTable (no action).
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+            */
+        public char[] lookup(String s) {
+            return null;
+        }
+        /**
+         * Supplies default implementation for SymbolTable (no action).
+         * @draft ICU3.8
+         * @provisional This API might change or be removed in a future release.
+         */
+        public String parseReference(String text, ParsePosition pos, int limit) {
+            return null;
+        }
+    }
+
+    private boolean frozen;
+    
+    /**
+     * Is this frozen, according to the Freezable interface?
+     * @return value
+     * @stable ICU 3.8
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+
+    /**
+     * Freeze this class, according to the Freezable interface.
+     * @return this
+     * @stable ICU 3.8
+     */
+    public Object freeze() {
+        frozen = true;
+        return this;
+    }
+    
+    /**
+     * Clone a thawed version of this class, according to the Freezable interface.
+     * @return this
+     * @stable ICU 3.8
+     */
+    public Object cloneAsThawed() {
+        UnicodeSet result = (UnicodeSet) clone();
+        result.frozen = false;
+        return result;
+    }
+    
+    // internal function
+    private void checkFrozen() {
+        if (frozen) {
+            throw new UnsupportedOperationException("Attempt to modify frozen object");
+        }
+    }
+}
+//eof
diff --git a/src/com/ibm/icu/text/UnicodeSetIterator.java b/src/com/ibm/icu/text/UnicodeSetIterator.java
new file mode 100644
index 0000000..3eb3460
--- /dev/null
+++ b/src/com/ibm/icu/text/UnicodeSetIterator.java
@@ -0,0 +1,248 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.*;
+
+/**
+ * UnicodeSetIterator iterates over the contents of a UnicodeSet.  It
+ * iterates over either code points or code point ranges.  After all
+ * code points or ranges have been returned, it returns the
+ * multicharacter strings of the UnicodSet, if any.
+ *
+ * <p>To iterate over code points and multicharacter strings,
+ * use a loop like this:
+ * <pre>
+ * for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
+ *   processString(it.getString());
+ * }
+ * </pre>
+ *
+ * <p>To iterate over code point ranges, use a loop like this:
+ * <pre>
+ * for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.nextRange();) {
+ *   if (it.codepoint != UnicodeSetIterator.IS_STRING) {
+ *     processCodepointRange(it.codepoint, it.codepointEnd);
+ *   } else {
+ *     processString(it.getString());
+ *   }
+ * }
+ * </pre>
+ * @author M. Davis
+ * @stable ICU 2.0
+ */
+public class UnicodeSetIterator {
+    
+    /**
+     * Value of <tt>codepoint</tt> if the iterator points to a string.
+     * If <tt>codepoint == IS_STRING</tt>, then examine
+     * <tt>string</tt> for the current iteration result.
+     * @stable ICU 2.0
+     */
+    public static int IS_STRING = -1;
+    
+    /**
+     * Current code point, or the special value <tt>IS_STRING</tt>, if
+     * the iterator points to a string.
+     * @stable ICU 2.0
+     */
+    public int codepoint;
+
+    /**
+     * When iterating over ranges using <tt>nextRange()</tt>,
+     * <tt>codepointEnd</tt> contains the inclusive end of the
+     * iteration range, if <tt>codepoint != IS_STRING</tt>.  If
+     * iterating over code points using <tt>next()</tt>, or if
+     * <tt>codepoint == IS_STRING</tt>, then the value of
+     * <tt>codepointEnd</tt> is undefined.
+     * @stable ICU 2.0
+     */
+    public int codepointEnd;
+
+    /**
+     * If <tt>codepoint == IS_STRING</tt>, then <tt>string</tt> points
+     * to the current string.  If <tt>codepoint != IS_STRING</tt>, the
+     * value of <tt>string</tt> is undefined.
+     * @stable ICU 2.0
+     */
+    public String string;
+
+    /**
+     * Create an iterator over the given set.
+     * @param set set to iterate over
+     * @stable ICU 2.0
+     */
+    public UnicodeSetIterator(UnicodeSet set) {
+        reset(set);
+    }
+        
+    /**
+     * Create an iterator over nothing.  <tt>next()</tt> and
+     * <tt>nextRange()</tt> return false. This is a convenience
+     * constructor allowing the target to be set later.
+     * @stable ICU 2.0
+     */
+    public UnicodeSetIterator() {
+        reset(new UnicodeSet());
+    }
+        
+    /**
+     * Returns the next element in the set, either a single code point
+     * or a string.  If there are no more elements in the set, return
+     * false.  If <tt>codepoint == IS_STRING</tt>, the value is a
+     * string in the <tt>string</tt> field.  Otherwise the value is a
+     * single code point in the <tt>codepoint</tt> field.
+     * 
+     * <p>The order of iteration is all code points in sorted order,
+     * followed by all strings sorted order.  <tt>codepointEnd</tt> is
+     * undefined after calling this method.  <tt>string</tt> is
+     * undefined unless <tt>codepoint == IS_STRING</tt>.  Do not mix
+     * calls to <tt>next()</tt> and <tt>nextRange()</tt> without
+     * calling <tt>reset()</tt> between them.  The results of doing so
+     * are undefined.
+     *
+     * @return true if there was another element in the set and this
+     * object contains the element.
+     * @stable ICU 2.0
+     */
+    public boolean next() {
+        if (nextElement <= endElement) {
+            codepoint = codepointEnd = nextElement++;
+            return true;
+        }
+        if (range < endRange) {
+            loadRange(++range);
+            codepoint = codepointEnd = nextElement++;
+            return true;
+        }
+        
+        // stringIterator == null iff there are no string elements remaining
+        
+        if (stringIterator == null) return false;
+        codepoint = IS_STRING; // signal that value is actually a string
+        string = (String)stringIterator.next();
+        if (!stringIterator.hasNext()) stringIterator = null;
+        return true;
+    }
+        
+    /**
+     * Returns the next element in the set, either a code point range
+     * or a string.  If there are no more elements in the set, return
+     * false.  If <tt>codepoint == IS_STRING</tt>, the value is a
+     * string in the <tt>string</tt> field.  Otherwise the value is a
+     * range of one or more code points from <tt>codepoint</tt> to
+     * <tt>codepointeEnd</tt> inclusive.
+     * 
+     * <p>The order of iteration is all code points ranges in sorted
+     * order, followed by all strings sorted order.  Ranges are
+     * disjoint and non-contiguous.  <tt>string</tt> is undefined
+     * unless <tt>codepoint == IS_STRING</tt>.  Do not mix calls to
+     * <tt>next()</tt> and <tt>nextRange()</tt> without calling
+     * <tt>reset()</tt> between them.  The results of doing so are
+     * undefined.
+     *
+     * @return true if there was another element in the set and this
+     * object contains the element.
+     * @stable ICU 2.0
+     */
+    public boolean nextRange() {
+        if (nextElement <= endElement) {
+            codepointEnd = endElement;
+            codepoint = nextElement;
+            nextElement = endElement+1;
+            return true;
+        }
+        if (range < endRange) {
+            loadRange(++range);
+            codepointEnd = endElement;
+            codepoint = nextElement;
+            nextElement = endElement+1;
+            return true;
+        }
+        
+        // stringIterator == null iff there are no string elements remaining
+        
+        if (stringIterator == null) return false;
+        codepoint = IS_STRING; // signal that value is actually a string
+        string = (String)stringIterator.next();
+        if (!stringIterator.hasNext()) stringIterator = null;
+        return true;
+    }
+        
+    /**
+     * Sets this iterator to visit the elements of the given set and
+     * resets it to the start of that set.  The iterator is valid only
+     * so long as <tt>set</tt> is valid.
+     * @param uset the set to iterate over.
+     * @stable ICU 2.0
+     */
+    public void reset(UnicodeSet uset) {
+        set = uset;
+        reset();
+    }
+        
+    /**
+     * Resets this iterator to the start of the set.
+     * @stable ICU 2.0
+     */
+    public void reset() {
+        endRange = set.getRangeCount() - 1;
+        range = 0;
+        endElement = -1;
+        nextElement = 0;            
+        if (endRange >= 0) {
+            loadRange(range);
+        }
+        stringIterator = null;
+        if (set.strings != null) {
+            stringIterator = set.strings.iterator();
+            if (!stringIterator.hasNext()) stringIterator = null;
+        }
+    }
+    
+    /**
+     * Gets the current string from the iterator. Only use after calling next(), not nextRange().
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getString() {
+        if (codepoint != IS_STRING) {
+            return UTF16.valueOf(codepoint);
+        }
+        return string;
+    }
+    
+    // ======================= PRIVATES ===========================
+    
+    private UnicodeSet set;
+    private int endRange = 0;
+    private int range = 0;
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int endElement;
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int nextElement;
+    private Iterator stringIterator = null;
+    
+    /**
+     * Invariant: stringIterator is null when there are no (more) strings remaining
+     */
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void loadRange(int aRange) {
+        nextElement = set.getRangeStart(aRange);
+        endElement = set.getRangeEnd(aRange);
+    }
+}
diff --git a/src/com/ibm/icu/text/UppercaseTransliterator.java b/src/com/ibm/icu/text/UppercaseTransliterator.java
new file mode 100644
index 0000000..1d3317e
--- /dev/null
+++ b/src/com/ibm/icu/text/UppercaseTransliterator.java
@@ -0,0 +1,117 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCaseProps;
+
+import com.ibm.icu.util.ULocale;
+
+import com.ibm.icu.text.ReplaceableContextIterator;
+
+/**
+ * A transliterator that performs locale-sensitive toUpper()
+ * case mapping.
+ */
+class UppercaseTransliterator extends Transliterator {
+
+    /**
+     * Package accessible ID.
+     */
+    static final String _ID = "Any-Upper";
+    // TODO: Add variants for tr, az, lt, default = default locale
+
+    /**
+     * System registration hook.
+     */
+    static void register() {
+        Transliterator.registerFactory(_ID, new Transliterator.Factory() {
+            public Transliterator getInstance(String ID) {
+                return new UppercaseTransliterator(ULocale.US);
+            }
+        });
+    }
+
+    private ULocale locale;
+
+    private UCaseProps csp;
+    private ReplaceableContextIterator iter;
+    private StringBuffer result;
+    private int[] locCache;
+
+    /**
+     * Constructs a transliterator.
+     */
+    public UppercaseTransliterator(ULocale loc) {
+        super(_ID, null);
+        locale = loc;
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch (IOException e) {
+            csp=null;
+        }
+        iter=new ReplaceableContextIterator();
+        result = new StringBuffer();
+        locCache = new int[1];
+        locCache[0]=0;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean isIncremental) {
+    if(csp==null) {
+        return;
+    }
+
+    if(offsets.start >= offsets.limit) {
+        return;
+    } 
+
+    iter.setText(text);
+    result.setLength(0);
+    int c, delta;
+
+    // Walk through original string
+    // If there is a case change, modify corresponding position in replaceable
+
+    iter.setIndex(offsets.start);
+    iter.setLimit(offsets.limit);
+    iter.setContextLimits(offsets.contextStart, offsets.contextLimit);
+    while((c=iter.nextCaseMapCP())>=0) {
+        c=csp.toFullUpper(c, iter, result, locale, locCache);
+
+        if(iter.didReachLimit() && isIncremental) {
+            // the case mapping function tried to look beyond the context limit
+            // wait for more input
+            offsets.start=iter.getCaseMapCPStart();
+            return;
+        }
+
+        /* decode the result */
+        if(c<0) {
+            /* c mapped to itself, no change */
+            continue;
+        } else if(c<=UCaseProps.MAX_STRING_LENGTH) {
+            /* replace by the mapping string */
+            delta=iter.replace(result.toString());
+            result.setLength(0);
+        } else {
+            /* replace by single-code point mapping */
+                delta=iter.replace(UTF16.valueOf(c));
+            }
+
+            if(delta!=0) {
+                offsets.limit += delta;
+                offsets.contextLimit += delta;
+            }
+        }
+        offsets.start = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/icu/text/package.html b/src/com/ibm/icu/text/package.html
new file mode 100644
index 0000000..6bd070d
--- /dev/null
+++ b/src/com/ibm/icu/text/package.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+Extensions and enhancements to java.text to support unicode transforms, UnicodeSet, surrogate char utilities, UCA collation, normalization, break iteration (rule and dictionary based), enhanced number format, international string searching, and arabic shaping.</p>
+
+<ul>
+<li>Unicode Transforms (Transliteration) convert between different representations of unicode text.</li>
+<li>UnicodeSet provides set operations on unicode characters and strings, and are representable as compact expressions.</li>
+<li>Surrogate character utilities (UTF16) provides indexing and substring operations on text containing surrogates.</li>
+<li>UCA collation implements the current Unicode Collation Algorithm.  Data for many locale-specific collations is provided.</li>
+<li>Normalization supports standard Unicode normalization forms as well as FCD.</li>
+<li>Break iteration supports character, word, line, sentences, and title case breaks.</li>
+<li>Enhanced number format to 'spell out' numbers, padding and rounding control.</li>
+<li>Internationally sensitive string searching, uses collation.</li>
+<li>Arabic shaping converts between shaped and unshaped arabic characters and digits.</li>
+</ul>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/icu/util/AnnualTimeZoneRule.java b/src/com/ibm/icu/util/AnnualTimeZoneRule.java
new file mode 100644
index 0000000..9fba9d3
--- /dev/null
+++ b/src/com/ibm/icu/util/AnnualTimeZoneRule.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import java.util.Date;
+
+import com.ibm.icu.impl.Grego;
+
+
+/**
+ * <code>AnnualTimeZoneRule</code> is a class used for representing a time zone
+ * rule which takes effect annually.  Years used in this class are
+ * all Gregorian calendar years.
+ * 
+ * @stable ICU 3.8
+ */
+public class AnnualTimeZoneRule extends TimeZoneRule {
+
+    private static final long serialVersionUID = -8870666707791230688L;
+
+    /**
+     * The constant representing the maximum year used for designating a rule is permanent.
+     * @stable ICU 3.8
+     */
+    public static final int MAX_YEAR = Integer.MAX_VALUE;
+
+    private final DateTimeRule dateTimeRule;
+    private final int startYear;
+    private final int endYear;
+
+    /**
+     * Constructs a <code>AnnualTimeZoneRule</code> with the name, the GMT offset of its
+     * standard time, the amount of daylight saving offset adjustment,
+     * the annual start time rule and the start/until years.
+     * 
+     * @param name          The time zone name.
+     * @param rawOffset     The GMT offset of its standard time in milliseconds.
+     * @param dstSavings    The amount of daylight saving offset adjustment in
+     *                      milliseconds.  If this ia a rule for standard time,
+     *                      the value of this argument is 0.
+     * @param dateTimeRule  The start date/time rule repeated annually.
+     * @param startYear     The first year when this rule takes effect.
+     * @param endYear       The last year when this rule takes effect.  If this
+     *                      rule is effective forever in future, specify MAX_YEAR.
+     * 
+     * @stable ICU 3.8
+     */
+    public AnnualTimeZoneRule(String name, int rawOffset, int dstSavings,
+            DateTimeRule dateTimeRule, int startYear, int endYear) {
+        super(name, rawOffset, dstSavings);
+        this.dateTimeRule = dateTimeRule;
+        this.startYear = startYear;
+        this.endYear = endYear > MAX_YEAR ? MAX_YEAR : endYear;
+    }
+
+    /**
+     * Gets the start date/time rule associated used by this rule.
+     * 
+     * @return  An <code>AnnualDateTimeRule</code> which represents the start date/time
+     *          rule used by this time zone rule.
+     * 
+     * @stable ICU 3.8
+     */
+    public DateTimeRule getRule() {
+        return dateTimeRule;
+    }
+
+    /**
+     * Gets the first year when this rule takes effect.
+     * 
+     * @return  The start year of this rule.  The year is in Gregorian calendar
+     *          with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getStartYear() {
+        return startYear;
+    }
+
+    /**
+     * Gets the end year when this rule takes effect.
+     * 
+     * @return  The end year of this rule (inclusive). The year is in Gregorian calendar
+     *          with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getEndYear() {
+        return endYear;
+    }
+
+    /**
+     * Gets the time when this rule takes effect in the given year.
+     * 
+     * @param year              The Gregorian year, with 0 == 1 BCE, -1 == 2 BCE, etc.
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time.
+     * 
+     * @return  The time when this rule takes effect in the year, or
+     *          null if this rule is not applicable in the year.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getStartInYear(int year, int prevRawOffset, int prevDSTSavings) {
+        if (year < startYear || year > endYear) {
+            return null;
+        }
+
+        long ruleDay;
+        int type = dateTimeRule.getDateRuleType();
+
+        if (type == DateTimeRule.DOM) {
+            ruleDay = Grego.fieldsToDay(year, dateTimeRule.getRuleMonth(), dateTimeRule.getRuleDayOfMonth());
+        } else {
+            boolean after = true;
+            if (type == DateTimeRule.DOW) {
+                int weeks = dateTimeRule.getRuleWeekInMonth();
+                if (weeks > 0) {
+                    ruleDay = Grego.fieldsToDay(year, dateTimeRule.getRuleMonth(), 1);
+                    ruleDay += 7 * (weeks - 1);
+                } else {
+                    after = false;
+                    ruleDay = Grego.fieldsToDay(year, dateTimeRule.getRuleMonth(), 
+                            Grego.monthLength(year, dateTimeRule.getRuleMonth()));
+                    ruleDay += 7 * (weeks + 1);
+                }
+            } else {
+                int month = dateTimeRule.getRuleMonth();
+                int dom = dateTimeRule.getRuleDayOfMonth();
+                if (type == DateTimeRule.DOW_LEQ_DOM) {
+                    after = false;
+                    // Handle Feb <=29
+                    if (month == Calendar.FEBRUARY && dom == 29 && !Grego.isLeapYear(year)) {
+                        dom--;
+                    }
+                }
+                ruleDay = Grego.fieldsToDay(year, month, dom);
+            }
+
+            int dow = Grego.dayOfWeek(ruleDay);
+            int delta = dateTimeRule.getRuleDayOfWeek() - dow;
+            if (after) {
+                delta = delta < 0 ? delta + 7 : delta;
+            } else {
+                delta = delta > 0 ? delta - 7 : delta;
+            }
+            ruleDay += delta;
+        }
+
+        long ruleTime = ruleDay * Grego.MILLIS_PER_DAY + dateTimeRule.getRuleMillisInDay();
+        if (dateTimeRule.getTimeRuleType() != DateTimeRule.UTC_TIME) {
+            ruleTime -= prevRawOffset;
+        }
+        if (dateTimeRule.getTimeRuleType() == DateTimeRule.WALL_TIME) {
+            ruleTime -= prevDSTSavings;
+        }
+        return new Date(ruleTime);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getFirstStart(int prevRawOffset, int prevDSTSavings) {
+        return getStartInYear(startYear, prevRawOffset, prevDSTSavings);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getFinalStart(int prevRawOffset, int prevDSTSavings) {
+        if (endYear == MAX_YEAR) {
+            return null;
+        }
+        return getStartInYear(endYear, prevRawOffset, prevDSTSavings);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getNextStart(long base, int prevRawOffset, int prevDSTSavings, boolean inclusive) {
+        int[] fields = Grego.timeToFields(base, null);
+        int year = fields[0];
+        if (year < startYear) {
+            return getFirstStart(prevRawOffset, prevDSTSavings);
+        }
+        Date d = getStartInYear(year, prevRawOffset, prevDSTSavings);
+        if (d != null && (d.getTime() < base || (!inclusive && (d.getTime() == base)))) {
+            d = getStartInYear(year + 1, prevRawOffset, prevDSTSavings);
+        }
+        return d;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getPreviousStart(long base, int prevRawOffset, int prevDSTSavings, boolean inclusive) {
+        int[] fields = Grego.timeToFields(base, null);
+        int year = fields[0];
+        if (year > endYear) {
+            return getFinalStart(prevRawOffset, prevDSTSavings);
+        }
+        Date d = getStartInYear(year, prevRawOffset, prevDSTSavings);
+        if (d != null && (d.getTime() > base || (!inclusive && (d.getTime() == base)))) {
+            d = getStartInYear(year - 1, prevRawOffset, prevDSTSavings);
+        }
+        return d;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean isEquivalentTo(TimeZoneRule other) {
+        if (!(other instanceof AnnualTimeZoneRule)) {
+            return false;
+        }
+        AnnualTimeZoneRule otherRule = (AnnualTimeZoneRule)other;
+        if (startYear == otherRule.startYear
+                && endYear == otherRule.endYear
+                && dateTimeRule.equals(otherRule.dateTimeRule)) {
+            return super.isEquivalentTo(other);
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>AnnualTimeZoneRule</code> always returns true.
+     * @stable ICU 3.8
+     */
+    public boolean isTransitionRule() {
+        return true;
+    }
+
+    /**
+     * Returns a <code>String</code> representation of this <code>AnnualTimeZoneRule</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * 
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append(super.toString());
+        buf.append(", rule={" + dateTimeRule + "}");
+        buf.append(", startYear=" + startYear);
+        buf.append(", endYear=");
+        if (endYear == MAX_YEAR) {
+            buf.append("max");
+        } else {
+            buf.append(endYear);
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/BasicTimeZone.java b/src/com/ibm/icu/util/BasicTimeZone.java
new file mode 100644
index 0000000..bf3c57a
--- /dev/null
+++ b/src/com/ibm/icu/util/BasicTimeZone.java
@@ -0,0 +1,563 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.BitSet;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+import com.ibm.icu.impl.Grego;
+
+/**
+ * <code>BasicTimeZone</code> is an abstract class extending <code>TimeZone</code>.
+ * This class provides some additional methods to access time zone transitions
+ * and rules.  All ICU <code>TimeZone</code> concrete subclasses extend this
+ * class.
+ * 
+ * @see com.ibm.icu.util.TimeZoneRule
+ * @see com.ibm.icu.util.TimeZoneTransition
+ * 
+ * @stable ICU 3.8
+ */
+public abstract class BasicTimeZone extends TimeZone {
+
+    private static final long serialVersionUID = -3204278532246180932L;
+
+    private static final long MILLIS_PER_YEAR = 365*24*60*60*1000L;
+
+    /**
+     * Gets the first time zone transition after the base time.
+     * 
+     * @param base      The base time.
+     * @param inclusive Whether the base time is inclusive or not.
+     *               
+     * @return  A <code>Date</code> holding the first time zone transition time
+     *          after the given base time, or null if no time zone transitions
+     *          are available after the base time.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract TimeZoneTransition getNextTransition(long base, boolean inclusive);
+
+    /**
+     * Gets the last time zone transition before the base time.
+     * 
+     * @param base      The base time.
+     * @param inclusive Whether the base time is inclusive or not.
+     *               
+     * @return  A <code>Date</code> holding the last time zone transition time
+     *          before the given base time, or null if no time zone transitions
+     *          are available before the base time.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract TimeZoneTransition getPreviousTransition(long base, boolean inclusive);
+
+    /**
+     * Checks if the time zone has equivalent transitions in the time range.
+     * This method returns true when all of transition times, from/to standard
+     * offsets and DST savings used by this time zone match the other in the
+     * time range.
+     * 
+     * @param tz    The instance of <code>TimeZone</code>
+     * @param start The start time of the evaluated time range (inclusive)
+     * @param end   The end time of the evaluated time range (inclusive)
+     * 
+     * @return true if the other time zone has the equivalent transitions in the
+     * time range.  When tz is not a <code>BasicTimeZone</code>, this method
+     * returns false.
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean hasEquivalentTransitions(TimeZone tz, long start, long end) {
+        return hasEquivalentTransitions(tz, start, end, false);
+    }
+
+    /**
+     * Checks if the time zone has equivalent transitions in the time range.
+     * This method returns true when all of transition times, from/to standard
+     * offsets and DST savings used by this time zone match the other in the
+     * time range.
+     * 
+     * @param tz    The instance of <code>TimeZone</code>
+     * @param start The start time of the evaluated time range (inclusive)
+     * @param end   The end time of the evaluated time range (inclusive)
+     * @param ignoreDstAmount
+     *              When true, any transitions with only daylight saving amount
+     *              changes will be ignored, except either of them is zero.
+     *              For example, a transition from rawoffset 3:00/dstsavings 1:00
+     *              to rawoffset 2:00/dstsavings 2:00 is excluded from the comparison,
+     *              but a transtion from rawoffset 2:00/dstsavings 1:00 to
+     *              rawoffset 3:00/dstsavings 0:00 is included.
+     * 
+     * @return true if the other time zone has the equivalent transitions in the
+     * time range.  When tz is not a <code>BasicTimeZone</code>, this method
+     * returns false.
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean hasEquivalentTransitions(TimeZone tz, long start, long end, boolean ignoreDstAmount) {
+        if (hasSameRules(tz)) {
+            return true;
+        }
+        if (!(tz instanceof BasicTimeZone)) {
+            return false;
+        }
+
+        // Check the offsets at the start time
+        int[] offsets1 = new int[2];
+        int[] offsets2 = new int[2];
+
+        getOffset(start, false, offsets1);
+        tz.getOffset(start, false, offsets2);
+
+        if (ignoreDstAmount) {
+            if ((offsets1[0] + offsets1[1] != offsets2[0] + offsets2[1])
+                || (offsets1[1] != 0 && offsets2[1] == 0)
+                || (offsets1[1] == 0 && offsets2[1] != 0)) {
+                return false;
+            }
+        } else {
+            if (offsets1[0] != offsets2[0] || offsets1[1] != offsets2[1]) {
+                return false;
+            }            
+        }
+
+        // Check transitions in the range
+        long time = start;
+        while (true) {
+            TimeZoneTransition tr1 = getNextTransition(time, false);
+            TimeZoneTransition tr2 = ((BasicTimeZone)tz).getNextTransition(time, false);
+
+            if (ignoreDstAmount) {
+                // Skip a transition which only differ the amount of DST savings
+                if (tr1 != null
+                        && (tr1.getFrom().getRawOffset() + tr1.getFrom().getDSTSavings()
+                                == tr1.getTo().getRawOffset() + tr1.getTo().getDSTSavings())
+                        && (tr1.getFrom().getDSTSavings() != 0 && tr1.getTo().getDSTSavings() != 0)) {
+                    tr1 = getNextTransition(tr1.getTime(), false);
+                }
+                if (tr2 != null
+                        && (tr2.getFrom().getRawOffset() + tr2.getFrom().getDSTSavings()
+                                == tr2.getTo().getRawOffset() + tr2.getTo().getDSTSavings())
+                        && (tr2.getFrom().getDSTSavings() != 0 && tr2.getTo().getDSTSavings() != 0)) {
+                    tr2 = getNextTransition(tr2.getTime(), false);
+                }
+            }
+
+            boolean inRange1 = false;
+            boolean inRange2 = false;
+            if (tr1 != null) {
+                if (tr1.getTime() <= end) {
+                    inRange1 = true;
+                }
+            }
+            if (tr2 != null) {
+                if (tr2.getTime() <= end) {
+                    inRange2 = true;
+                }
+            }
+            if (!inRange1 && !inRange2) {
+                // No more transition in the range
+                break;
+            }
+            if (!inRange1 || !inRange2) {
+                return false;
+            }
+            if (tr1.getTime() != tr2.getTime()) {
+                return false;
+            }
+            if (ignoreDstAmount) {
+                if (tr1.getTo().getRawOffset() + tr1.getTo().getDSTSavings()
+                            != tr2.getTo().getRawOffset() + tr2.getTo().getDSTSavings()
+                        || tr1.getTo().getDSTSavings() != 0 &&  tr2.getTo().getDSTSavings() == 0
+                        || tr1.getTo().getDSTSavings() == 0 &&  tr2.getTo().getDSTSavings() != 0) {
+                    return false;
+                }
+            } else {
+                if (tr1.getTo().getRawOffset() != tr2.getTo().getRawOffset() ||
+                    tr1.getTo().getDSTSavings() != tr2.getTo().getDSTSavings()) {
+                    return false;
+                }
+            }
+            time = tr1.getTime();
+        }
+        return true;
+    }
+
+    /**
+     * Gets the array of <code>TimeZoneRule</code> which represents the rule
+     * of this time zone object.  The first element in the result array will
+     * be the <code>InitialTimeZoneRule</code> instance for the initial rule.
+     * The rest will be either <code>AnnualTimeZoneRule</code> or
+     * <code>TimeArrayTimeZoneRule</code> instances representing transitions.
+     * 
+     * @return  The array of <code>TimeZoneRule</code> which represents this
+     *          time zone.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract TimeZoneRule[] getTimeZoneRules();
+
+    /**
+     * Gets the array of <code>TimeZoneRule</code> which represents the rule
+     * of this time zone object since the specified start time.  The first
+     * element in the result array will be the <code>InitialTimeZoneRule</code>
+     * instance for the initial rule.  The rest will be either
+     * <code>AnnualTimeZoneRule</code> or <code>TimeArrayTimeZoneRule</code>
+     * instances representing transitions.
+     * 
+     * @param start The start time (inclusive).
+     * @return  The array of <code>TimeZoneRule</code> which represents this
+     *          time zone since the start time.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules(long start) {
+        TimeZoneRule[] all = getTimeZoneRules();
+        TimeZoneTransition tzt = getPreviousTransition(start, true);
+        if (tzt == null) {
+            // No need to filter out rules only applicable to time before the start
+            return all;
+        }
+
+        BitSet isProcessed = new BitSet(all.length);
+        List filteredRules = new LinkedList();
+
+        // Create initial rule
+        TimeZoneRule initial = new InitialTimeZoneRule(tzt.getTo().getName(),
+                tzt.getTo().getRawOffset(), tzt.getTo().getDSTSavings());
+        filteredRules.add(initial);
+        isProcessed.set(0);
+
+        // Mark rules which does not need to be processed
+        for (int i = 1; i < all.length; i++) {
+            Date d = all[i].getNextStart(start, initial.getRawOffset(),
+                    initial.getDSTSavings(), false);
+            if (d == null) {
+                isProcessed.set(i);
+            }
+        }
+
+        long time = start;
+        boolean bFinalStd = false, bFinalDst = false;
+        while(!bFinalStd || !bFinalDst) {
+            tzt = getNextTransition(time, false);
+            if (tzt == null) {
+                break;
+            }
+            time = tzt.getTime();
+
+            TimeZoneRule toRule = tzt.getTo();
+            int ruleIdx = 1;
+            for (; ruleIdx < all.length; ruleIdx++) {
+                if (all[ruleIdx].equals(toRule)) {
+                    break;
+                }
+            }
+            if (ruleIdx >= all.length) {
+                throw new IllegalStateException("The rule was not found");
+            }
+            if (isProcessed.get(ruleIdx)) {
+                continue;
+            }
+            if (toRule instanceof TimeArrayTimeZoneRule) {
+                TimeArrayTimeZoneRule tar = (TimeArrayTimeZoneRule)toRule;
+
+                // Get the previous raw offset and DST savings before the very first start time
+                long t = start;
+                while(true) {
+                    tzt = getNextTransition(t, false);
+                    if (tzt == null) {
+                        break;
+                    }
+                    if (tzt.getTo().equals(tar)) {
+                        break;
+                    }
+                    t = tzt.getTime();
+                }
+                if (tzt != null) {
+                    // Check if the entire start times to be added
+                    Date firstStart = tar.getFirstStart(tzt.getFrom().getRawOffset(),
+                            tzt.getFrom().getDSTSavings());
+                    if (firstStart.getTime() > start) {
+                        // Just add the rule as is
+                        filteredRules.add(tar);
+                    } else {
+                        // Collect transitions after the start time
+                        long[] times = tar.getStartTimes();
+                        int timeType = tar.getTimeType();
+                        int idx;
+                        for (idx = 0; idx < times.length; idx++) {
+                            t = times[idx];
+                            if (timeType == DateTimeRule.STANDARD_TIME) {
+                                t -= tzt.getFrom().getRawOffset();
+                            }
+                            if (timeType == DateTimeRule.WALL_TIME) {
+                                t -= tzt.getFrom().getDSTSavings();
+                            }
+                            if (t > start) {
+                                break;
+                            }
+                        }
+                        int asize = times.length - idx;
+                        if (asize > 0) {
+                            long[] newtimes = new long[asize];
+                            System.arraycopy(times, idx, newtimes, 0, asize);
+                            TimeArrayTimeZoneRule newtar = new TimeArrayTimeZoneRule(
+                                    tar.getName(), tar.getRawOffset(), tar.getDSTSavings(),
+                                    newtimes, tar.getTimeType());
+                            filteredRules.add(newtar);
+                        }
+                    }
+                }
+            } else if (toRule instanceof AnnualTimeZoneRule) {
+                AnnualTimeZoneRule ar = (AnnualTimeZoneRule)toRule;
+                Date firstStart = ar.getFirstStart(tzt.getFrom().getRawOffset(),
+                        tzt.getFrom().getDSTSavings());
+                if (firstStart.getTime() == tzt.getTime()) {
+                    // Just add the rule as is
+                    filteredRules.add(ar);
+                } else {
+                    // Calculate the transition year
+                    int[] dfields = new int[6];
+                    Grego.timeToFields(tzt.getTime(), dfields);
+                    // Recreate the rule
+                    AnnualTimeZoneRule newar = new AnnualTimeZoneRule(ar.getName(),
+                            ar.getRawOffset(), ar.getDSTSavings(),
+                            ar.getRule(), dfields[0], ar.getEndYear());
+                    filteredRules.add(newar);
+                }
+                // Check if this is a final rule
+                if (ar.getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+                    // After both final standard and dst rule are processed,
+                    // exit this while loop.
+                    if (ar.getDSTSavings() == 0) {
+                        bFinalStd = true;
+                    } else {
+                        bFinalDst = true;
+                    }
+                }
+            }
+            isProcessed.set(ruleIdx);
+        }
+        TimeZoneRule[] rules = new TimeZoneRule[filteredRules.size()];
+        filteredRules.toArray(rules);
+        return rules;
+    }
+
+    /**
+     * Gets the array of <code>TimeZoneRule</code> which represents the rule of
+     * this time zone object near the specified date.  Some applications are not
+     * capable to handle historic time zone rule changes.  Also some applications
+     * can only handle certain type of rule definitions.  This method returns
+     * either a single <code>InitialTimeZoneRule</code> if this time zone does not
+     * have any daylight saving time within 1 year from the specified time, or a
+     * pair of <code>AnnualTimeZoneRule</code> whose rule type is
+     * <code>DateTimeRule.DOW</code> for date and <code>DateTimeRule.WALL_TIME</code>
+     * for time with a single <code>InitialTimeZoneRule</code> representing the
+     * initial time, when this time zone observes daylight saving time near the
+     * specified date.  Thus, the result may be only valid for dates around the
+     * specified date.
+     *
+     * @param date The date to be used for <code>TimeZoneRule</code> extraction.
+     * @return The array of <code>TimeZoneRule</code>, either a single
+     * <code>InitialTimeZoneRule</code> object, or a pair of <code>AnnualTimeZoneRule</code>
+     * with a single <code>InitialTimeZoneRule</code>.  The first element in the
+     * array is always a <code>InitialTimeZoneRule</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getSimpleTimeZoneRulesNear(long date) {
+        AnnualTimeZoneRule[] annualRules = null;
+        TimeZoneRule initialRule = null;
+        // Get the next transition
+        TimeZoneTransition tr = getNextTransition(date, false);
+        if (tr != null) {
+            String initialName = tr.getFrom().getName();
+            int initialRaw = tr.getFrom().getRawOffset();
+            int initialDst = tr.getFrom().getDSTSavings();
+
+            // Check if the next transition is either DST->STD or STD->DST and
+            // within roughly 1 year from the specified date
+            long nextTransitionTime = tr.getTime();
+            if (((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0)
+                    || (tr.getFrom().getDSTSavings() != 0 && tr.getTo().getDSTSavings() == 0))
+                        && date + MILLIS_PER_YEAR > nextTransitionTime) {
+                // Get the next next transition
+                annualRules = new AnnualTimeZoneRule[2];
+                // Get local wall time for the transition time
+                int dtfields[] = Grego.timeToFields(nextTransitionTime
+                        + tr.getFrom().getRawOffset() + tr.getFrom().getDSTSavings(), null);
+                int weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]);
+                // Create DOW rule
+                DateTimeRule dtr = new DateTimeRule(dtfields[1], weekInMonth, dtfields[3],
+                        dtfields[5], DateTimeRule.WALL_TIME);
+                annualRules[0] = new AnnualTimeZoneRule(tr.getTo().getName(),
+                        tr.getTo().getRawOffset(), tr.getTo().getDSTSavings(),
+                        dtr, dtfields[0], AnnualTimeZoneRule.MAX_YEAR);
+
+                tr = getNextTransition(nextTransitionTime, false);
+                AnnualTimeZoneRule secondRule = null;
+                if (tr != null) {
+                    // Check if the next next transition is either DST->STD or STD->DST
+                    // and within roughly 1 year from the next transition
+                    if (((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0)
+                            || (tr.getFrom().getDSTSavings() != 0 && tr.getTo().getDSTSavings() == 0))
+                                && nextTransitionTime + MILLIS_PER_YEAR > tr.getTime()) {
+                        // Generate another DOW rule
+                        dtfields = Grego.timeToFields(tr.getTime()
+                                + tr.getFrom().getRawOffset() + tr.getFrom().getDSTSavings(), dtfields);
+                        weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]);
+                        dtr = new DateTimeRule(dtfields[1], weekInMonth, dtfields[3], dtfields[5],
+                                DateTimeRule.WALL_TIME);
+                        secondRule = new AnnualTimeZoneRule(tr.getTo().getName(),
+                                tr.getTo().getRawOffset(), tr.getTo().getDSTSavings(),
+                                dtr, dtfields[0] - 1, AnnualTimeZoneRule.MAX_YEAR);
+                        // Make sure this rule can be applied to the specified date
+                        Date d = secondRule.getPreviousStart(date, tr.getFrom().getRawOffset(),
+                                tr.getFrom().getDSTSavings(), true);
+                        if (d != null && d.getTime() <= date
+                                && initialRaw == tr.getTo().getRawOffset()
+                                && initialDst == tr.getTo().getDSTSavings()) {
+                            // We can use this rule as the second transition rule
+                            annualRules[1] = secondRule;
+                        }
+                    }
+                }
+                if (annualRules[1] == null) {
+                    // Try previous transition
+                    tr = getPreviousTransition(date, true);
+                    if (tr != null) {
+                        // Check if the previous transition is either DST->STD or STD->DST.
+                        // The actual transition time does not matter here.
+                        if ((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0)
+                                || (tr.getFrom().getDSTSavings() != 0 && tr.getTo().getDSTSavings() == 0)) {
+                            // Generate another DOW rule
+                            dtfields = Grego.timeToFields(tr.getTime()
+                                    + tr.getFrom().getRawOffset() + tr.getFrom().getDSTSavings(), dtfields);
+                            weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]);
+                            dtr = new DateTimeRule(dtfields[1], weekInMonth, dtfields[3], dtfields[5],
+                                    DateTimeRule.WALL_TIME);
+                            secondRule = new AnnualTimeZoneRule(tr.getTo().getName(),
+                                    tr.getTo().getRawOffset(), tr.getTo().getDSTSavings(),
+                                    dtr, annualRules[0].getStartYear() - 1, AnnualTimeZoneRule.MAX_YEAR);
+                            // Check if this rule start after the first rule after the specified date
+                            Date d = secondRule.getNextStart(date,
+                                    tr.getFrom().getRawOffset(), tr.getFrom().getDSTSavings(), false);
+                            if (d.getTime() > nextTransitionTime) {
+                                // We can use this rule as the second transition rule
+                                annualRules[1] = secondRule;
+                            }
+                        }
+                    }
+                }
+                if (annualRules[1] == null) {
+                    // Cannot generate a good pair of AnnualTimeZoneRule
+                    annualRules = null;
+                } else {
+                    // The initial rule should represent the rule before the previous transition
+                    initialName = annualRules[0].getName();
+                    initialRaw = annualRules[0].getRawOffset();
+                    initialDst = annualRules[0].getDSTSavings();
+                }
+            }
+            initialRule = new InitialTimeZoneRule(initialName, initialRaw, initialDst);
+        } else {
+            // Try the previous one
+            tr = getPreviousTransition(date, true);
+            if (tr != null) {
+                initialRule = new InitialTimeZoneRule(tr.getTo().getName(),
+                        tr.getTo().getRawOffset(), tr.getTo().getDSTSavings());
+            } else {
+                // No transitions in the past.  Just use the current offsets
+                int[] offsets = new int[2];
+                getOffset(date, false, offsets);
+                initialRule = new InitialTimeZoneRule(getID(), offsets[0], offsets[1]);
+            }
+        }
+
+        TimeZoneRule[] result = null;
+        if (annualRules == null) {
+            result = new TimeZoneRule[1];
+            result[0] = initialRule;
+        } else {
+            result = new TimeZoneRule[3];
+            result[0] = initialRule;
+            result[1] = annualRules[0];
+            result[2] = annualRules[1];
+        }
+
+        return result;
+    }
+
+    /**
+     * The time type option for standard time used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int LOCAL_STD = 0x01;
+
+    /**
+     * The time type option for daylight saving time used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int LOCAL_DST = 0x03;
+
+    /**
+     * The option designate former time to be used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int LOCAL_FORMER = 0x04;
+
+    /**
+     * The option designate latter time to be used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int LOCAL_LATTER = 0x0C;
+
+    /**
+     * The bit mask for the time type option used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected static final int STD_DST_MASK = 0x03;
+
+    /**
+     * The bit mask for the former/latter option used by
+     * {@link #getOffsetFromLocal(long, int, int, int[])}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected static final int FORMER_LATTER_MASK = 0x0C;
+
+    /**
+     * Get time zone offsets from local wall time.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        throw new IllegalStateException("Not implemented");
+    }
+
+    /**
+     * Protected no arg constructor.
+     * @stable ICU 3.8
+     */
+    protected BasicTimeZone() {
+    }
+}
diff --git a/src/com/ibm/icu/util/BuddhistCalendar.java b/src/com/ibm/icu/util/BuddhistCalendar.java
new file mode 100644
index 0000000..bd7fcda
--- /dev/null
+++ b/src/com/ibm/icu/util/BuddhistCalendar.java
@@ -0,0 +1,247 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>BuddhistCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years since the birth of the Buddha.  This is the civil calendar
+ * in some predominantly Buddhist countries such as Thailand, and it is used for
+ * religious purposes elsewhere.
+ * <p>
+ * The Buddhist calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  Years are numbered since the birth of the
+ * Buddha in 543 BC (Gregorian), so that 1 AD (Gregorian) is equivalent to 544
+ * BE (Buddhist Era) and 1998 AD is 2541 BE.
+ * <p>
+ * The Buddhist Calendar has only one allowable era: <code>BE</code>.  If the
+ * calendar is not in lenient mode (see <code>setLenient</code>), dates before
+ * 1/1/1 BE are rejected with an <code>IllegalArgumentException</code>.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * BuddhistCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=buddhist"</code>.</p>
+ * 
+ * @see com.ibm.icu.util.Calendar
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class BuddhistCalendar extends GregorianCalendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 2583005278132380631L;
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constant for the Buddhist Era.  This is the only allowable <code>ERA</code>
+     * value for the Buddhist calendar.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     * @stable ICU 2.8
+     */
+    public static final int BE = 0;
+    
+    /**
+     * Constructs a <code>BuddhistCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone the given time zone.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public BuddhistCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public BuddhistCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(Date date) {
+        this();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a BuddhistCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 2.8
+     */
+    public BuddhistCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // The only practical difference from a Gregorian calendar is that years
+    // are numbered since the birth of the Buddha.  A couple of overrides will
+    // take care of that....
+    //-------------------------------------------------------------------------
+    
+    // Starts in -543 AD, ie 544 BC
+    private static final int BUDDHIST_ERA_START = -543;
+
+    // Use 1970 as the default value of EXTENDED_YEAR
+    private static final int GREGORIAN_EPOCH = 1970;
+
+    /**
+     * @stable ICU 2.8
+     */    
+    protected int handleGetExtendedYear() {
+        // EXTENDED_YEAR in BuddhistCalendar is a Gregorian year
+        // The default value of EXTENDED_YEAR is 1970 (Buddhist 2513)
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, GREGORIAN_EPOCH);
+        } else {
+            year = internalGet(YEAR, GREGORIAN_EPOCH - BUDDHIST_ERA_START)
+                    + BUDDHIST_ERA_START;
+        }
+        return year;
+    }
+
+    // Return JD of start of given month/year
+    /**
+     * @stable ICU 2.8
+     */    
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+        return super.handleComputeMonthStart(eyear, month, useMonth);
+    }
+
+    /**
+     * @stable ICU 2.8
+     */    
+    protected void handleComputeFields(int julianDay) {
+        super.handleComputeFields(julianDay);
+        int y = internalGet(EXTENDED_YEAR) - BUDDHIST_ERA_START;
+        internalSet(ERA, 0);
+        internalSet(YEAR, y);
+    }
+
+    /**
+     * Override GregorianCalendar.  There is only one Buddhist ERA.  We
+     * should really handle YEAR, YEAR_WOY, and EXTENDED_YEAR here too to
+     * implement the 1..5000000 range, but it's not critical.
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        if (field == ERA) {
+            return BE;
+        }
+        return super.handleGetLimit(field, limitType);
+    }
+    
+    /**
+     * Return the current Calendar type.
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "buddhist";
+    }
+}
diff --git a/src/com/ibm/icu/util/ByteArrayWrapper.java b/src/com/ibm/icu/util/ByteArrayWrapper.java
new file mode 100644
index 0000000..9dbd039
--- /dev/null
+++ b/src/com/ibm/icu/util/ByteArrayWrapper.java
@@ -0,0 +1,288 @@
+//##header J2SE15
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+//#if defined(FOUNDATION10) || defined(J2SE13)
+//##import com.ibm.icu.impl.ByteBuffer;
+//#else
+import java.nio.ByteBuffer;
+//#endif
+import com.ibm.icu.impl.Utility;
+
+/**
+ * <p>
+ * A simple utility class to wrap a byte array.
+ * </p>
+ * <p>
+ * Generally passed as an argument object into a method. The method takes
+ * responsibility of writing into the internal byte array and increasing its
+ * size when necessary.
+ * </p> 
+ * @author syn wee
+ * @stable ICU 2.8
+ */
+public class ByteArrayWrapper implements Comparable
+{
+    // public data member ------------------------------------------------
+    
+    /**
+     * Internal byte array.
+     * @stable ICU 2.8
+     */
+    public byte[] bytes;
+
+    /**
+     * Size of the internal byte array used. 
+     * Different from bytes.length, size will be &lt;= bytes.length. 
+     * Semantics of size is similar to java.util.Vector.size().
+     * @stable ICU 2.8
+     */
+    public int size;
+    
+    // public constructor ------------------------------------------------
+
+    /** 
+     * Construct a new ByteArrayWrapper with no data.
+     * @stable ICU 2.8
+     */
+    public ByteArrayWrapper() {
+        // leave bytes null, don't allocate twice
+    }
+
+    /**
+     * Construct a new ByteArrayWrapper from a byte array and size
+     * @param bytesToAdopt the byte array to adopt
+     * @param size the length of valid data in the byte array
+     * @throws IndexOutOfBoundsException if bytesToAdopt == null and size != 0, or
+     * size < 0, or size > bytesToAdopt.length.
+     * @stable ICU 3.2
+     */
+    public ByteArrayWrapper(byte[] bytesToAdopt, int size) {
+        if ((bytesToAdopt == null && size != 0) || size < 0 || size > bytesToAdopt.length) {
+            throw new IndexOutOfBoundsException("illegal size: " + size);
+        }
+        this.bytes = bytesToAdopt;
+        this.size = size;
+    }
+
+    /**
+     * Construct a new ByteArrayWrapper from the contents of a ByteBuffer.
+     * @param source the ByteBuffer from which to get the data.
+     * @stable ICU 3.2
+     */
+    public ByteArrayWrapper(ByteBuffer source) {
+        size = source.limit();
+        bytes = new byte[size];
+        source.get(bytes,0,size);
+    }
+
+    /**
+     * Create from ByteBuffer
+     * @param byteBuffer
+    public ByteArrayWrapper(ByteArrayWrapper source) {
+        size = source.size;
+        bytes = new byte[size];
+        copyBytes(source.bytes, 0, bytes, 0, size);
+    }
+     */
+
+    /**
+     * create from byte buffer
+     * @param src
+     * @param start
+     * @param limit
+    public ByteArrayWrapper(byte[] src, int start, int limit) {
+        size = limit - start;
+        bytes = new byte[size];
+        copyBytes(src, start, bytes, 0, size);
+    }
+     */
+
+    // public methods ----------------------------------------------------
+
+    /**
+     * Ensure that the internal byte array is at least of length capacity.     
+     * If the byte array is null or its length is less than capacity, a new 
+     * byte array of length capacity will be allocated.  
+     * The contents of the array (between 0 and size) remain unchanged. 
+     * @param capacity minimum length of internal byte array.
+     * @return this ByteArrayWrapper
+     * @stable ICU 3.2
+     */
+    public ByteArrayWrapper ensureCapacity(int capacity) 
+    {
+        if (bytes == null || bytes.length < capacity) {
+            byte[] newbytes = new byte[capacity];
+            copyBytes(bytes, 0, newbytes, 0, size);
+            bytes = newbytes;
+        }
+        return this;
+    }
+    
+    /**
+     * Set the internal byte array from offset 0 to (limit - start) with the 
+     * contents of src from offset start to limit. If the byte array is null or its length is less than capacity, a new 
+     * byte array of length (limit - start) will be allocated.  
+     * This resets the size of the internal byte array to (limit - start).
+     * @param src source byte array to copy from
+     * @param start start offset of src to copy from
+     * @param limit end + 1 offset of src to copy from
+     * @return this ByteArrayWrapper
+     * @stable ICU 3.2
+     */
+    public final ByteArrayWrapper set(byte[] src, int start, int limit) 
+    {
+        size = 0;
+        append(src, start, limit);
+        return this;
+    }
+    
+    /*
+    public final ByteArrayWrapper get(byte[] target, int start, int limit) 
+    {
+        int len = limit - start;
+        if (len > size) throw new IllegalArgumentException("limit too long");
+        copyBytes(bytes, 0, target, start, len);
+        return this;
+    }
+    */
+
+    /**
+     * Appends the internal byte array from offset size with the 
+     * contents of src from offset start to limit. This increases the size of
+     * the internal byte array to (size + limit - start).
+     * @param src source byte array to copy from
+     * @param start start offset of src to copy from
+     * @param limit end + 1 offset of src to copy from
+     * @return this ByteArrayWrapper
+     * @stable ICU 3.2
+     */
+    public final ByteArrayWrapper append(byte[] src, int start, int limit) 
+    {
+        int len = limit - start;
+        ensureCapacity(size + len);
+        copyBytes(src, start, bytes, size, len);
+        size += len;
+        return this;
+    }
+
+    /*
+    public final ByteArrayWrapper append(ByteArrayWrapper other) 
+    {
+        return append(other.bytes, 0, other.size);
+    }
+    */
+
+    /**
+     * Releases the internal byte array to the caller, resets the internal
+     * byte array to null and its size to 0.
+     * @return internal byte array.
+     * @stable ICU 2.8
+     */
+    public final byte[] releaseBytes()
+    {
+        byte result[] = bytes;
+        bytes = null;
+        size = 0;
+        return result;
+    }
+    
+    // Boilerplate ----------------------------------------------------
+    
+    /**
+     * Returns string value for debugging
+     * @stable ICU 3.2
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < size; ++i) {
+            if (i != 0) result.append(" ");
+            result.append(Utility.hex(bytes[i]&0xFF,2));
+        }
+        return result.toString();
+    }
+
+    /**
+     * Return true if the bytes in each wrapper are equal.
+     * @param other the object to compare to.
+     * @return true if the two objects are equal.
+     * @stable ICU 3.2
+     */
+    public boolean equals(Object other) {
+        if (this == other) return true;
+        if (other == null) return false;
+        try {
+            ByteArrayWrapper that = (ByteArrayWrapper)other;
+            if (size != that.size) return false;
+            for (int i = 0; i < size; ++i) {
+                if (bytes[i] != that.bytes[i]) return false;
+            }
+            return true;
+        }
+        catch (ClassCastException e) {
+        }
+        return false;
+    }
+
+    /**
+     * Return the hashcode.
+     * @return the hashcode.
+     * @stable ICU 3.2
+     */
+    public int hashCode() {
+        int result = bytes.length;
+        for (int i = 0; i < size; ++i) {
+            result = 37*result + bytes[i];
+        }
+        return result;
+    }
+
+    /**
+     * Compare this object to another ByteArrayWrapper, which must not be null.
+     * @param other the object to compare to.
+     * @return a value <0, 0, or >0 as this compares less than, equal to, or
+     * greater than other.
+     * @throws ClassCastException if the other object is not a ByteArrayWrapper
+     * @stable ICU 3.2
+     */
+    public int compareTo(Object other) {
+        if (this == other) return 0;
+        ByteArrayWrapper that = (ByteArrayWrapper) other;
+        int minSize = size < that.size ? size : that.size;
+        for (int i = 0; i < minSize; ++i) {
+            if (bytes[i] != that.bytes[i]) {
+                return (bytes[i] & 0xFF) - (that.bytes[i] & 0xFF);
+            }
+        }
+        return size - that.size;
+    }
+    
+    // private methods -----------------------------------------------------
+    
+    /**
+     * Copies the contents of src byte array from offset srcoff to the 
+     * target of tgt byte array at the offset tgtoff.
+     * @param src source byte array to copy from
+     * @param srcoff start offset of src to copy from
+     * @param tgt target byte array to copy to
+     * @param tgtoff start offset of tgt to copy to
+     * @param length size of contents to copy
+     */
+    private static final void copyBytes(byte[] src, int srcoff, byte[] tgt, 
+                                       int tgtoff, int length) {
+        if (length < 64) {
+            for (int i = srcoff, n = tgtoff; -- length >= 0; ++ i, ++ n) {
+                tgt[n] = src[i];
+            }
+        } 
+        else {
+            System.arraycopy(src, srcoff, tgt, tgtoff, length);
+        }
+    }      
+}
diff --git a/src/com/ibm/icu/util/CECalendar.java b/src/com/ibm/icu/util/CECalendar.java
new file mode 100644
index 0000000..697106a
--- /dev/null
+++ b/src/com/ibm/icu/util/CECalendar.java
@@ -0,0 +1,235 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Base class for EthiopicCalendar and CopticCalendar.
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+abstract class CECalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -999547623066414271L;
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       1,       1 }, // ERA
+        {        1,        1, 5000000, 5000000 }, // YEAR
+        {        0,        0,      12,      12 }, // MONTH
+        {        1,        1,      52,      53 }, // WEEK_OF_YEAR
+        {/*                                  */}, // WEEK_OF_MONTH
+        {        1,        1,       5,      30 }, // DAY_OF_MONTH
+        {        1,        1,     365,     366 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       1,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000000, -5000000, 5000000, 5000000 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>CECalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    protected CECalendar() {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     */
+    protected CECalendar(TimeZone zone) {
+        this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     */
+    protected CECalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale The locale for the new calendar.
+     */
+    protected CECalendar(ULocale locale) {
+        this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param aLocale The locale for the new calendar.
+     */
+    protected CECalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param locale The locale for the new calendar.
+     */
+    protected CECalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     */
+    protected CECalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(year, month, date);
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    protected CECalendar(Date date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>CECalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     */
+    protected CECalendar(int year, int month, int date, int hour,
+                         int minute, int second)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(year, month, date, hour, minute, second);
+    }
+
+    //-------------------------------------------------------------------------
+    // Calendar framework
+    //-------------------------------------------------------------------------
+
+    /**
+     * The Coptic and Ethiopic calendars differ only in their epochs.
+     * This method must be implemented by CECalendar subclasses to
+     * return the date offset from Julian.
+     */
+    abstract protected int getJDEpochOffset();
+
+    /**
+     * Return JD of start of given month/extended year
+     */
+    protected int handleComputeMonthStart(int eyear,
+                                          int emonth,
+                                          boolean useMonth) {
+        return ceToJD(eyear, emonth, 0, getJDEpochOffset());
+    }
+
+    /**
+     * Calculate the limit for a specified type of limit and field
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    //-------------------------------------------------------------------------
+    // Calendar framework
+    //-------------------------------------------------------------------------
+
+    /**
+     * Convert an Coptic/Ethiopic year, month and day to a Julian day
+     * @param year the extended year
+     * @param month the month
+     * @param day the day
+     * @return Julian day
+     */
+    public static int ceToJD(long year, int month, int day, int jdEpochOffset) {
+
+        // Julian<->Ethiopic algorithms from:
+        // "Calendars in Ethiopia", Berhanu Beyene, Manfred Kudlek, International Conference
+        // of Ethiopian Studies XV, Hamburg, 2003
+
+        return (int) (
+            (jdEpochOffset+365)     // difference from Julian epoch to 1,1,1
+            + 365 * (year - 1)      // number of days from years
+            + floorDivide(year, 4)  // extra day of leap year
+            + 30 * (month + 1)      // number of days from months
+            + day                   // number of days for present month
+            - 31                    // slack?
+            );
+    }
+
+    /**
+     * Convert a Julian day to an Coptic/Ethiopic year, month and day
+     */
+    public static void jdToCE(int julianDay, int jdEpochOffset, int[] fields) {
+        int c4; // number of 4 year cycle (1461 days)
+        int[] r4 = new int[1]; // remainder of 4 year cycle, always positive
+
+        c4 = floorDivide(julianDay - jdEpochOffset, 1461, r4);
+
+        // exteded year
+        fields[0] = 4 * c4 + (r4[0]/365 - r4[0]/1460); // 4 * <number of 4year cycle> + <years within the last cycle>
+
+        int doy = (r4[0] == 1460) ? 365 : (r4[0] % 365); // days in present year
+
+        // month
+        fields[1] = doy / 30; // 30 -> Coptic/Ethiopic month length up to 12th month
+        // day
+        fields[2] = (doy % 30) + 1; // 1-based days in a month
+    }
+}
diff --git a/src/com/ibm/icu/util/Calendar.java b/src/com/ibm/icu/util/Calendar.java
new file mode 100644
index 0000000..f5cae1a
--- /dev/null
+++ b/src/com/ibm/icu/util/Calendar.java
@@ -0,0 +1,5367 @@
+/*
+*   Copyright (C) 1996-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.util;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.LinkedList;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DateFormatSymbols;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+
+/**
+ * <code>Calendar</code> is an abstract base class for converting between
+ * a <code>Date</code> object and a set of integer fields such as
+ * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
+ * and so on. (A <code>Date</code> object represents a specific instant in
+ * time with millisecond precision. See
+ * {@link Date}
+ * for information about the <code>Date</code> class.)
+ *
+ * <p><b>Note:</b>  This class is similar, but not identical, to the class
+ * <code>java.util.Calendar</code>.  Changes are detailed below.
+ *
+ * <p>
+ * Subclasses of <code>Calendar</code> interpret a <code>Date</code>
+ * according to the rules of a specific calendar system.  ICU4J contains
+ * several subclasses implementing different international calendar systems.
+ *
+ * <p>
+ * Like other locale-sensitive classes, <code>Calendar</code> provides a
+ * class method, <code>getInstance</code>, for getting a generally useful
+ * object of this type. <code>Calendar</code>'s <code>getInstance</code> method
+ * returns a calendar of a type appropriate to the locale, whose
+ * time fields have been initialized with the current date and time:
+ * <blockquote>
+ * <pre>Calendar rightNow = Calendar.getInstance()</pre>
+ * </blockquote>
+ *
+ * <p>When a <code>ULocale</code> is used by <code>getInstance</code>, its
+ * '<code>calendar</code>' tag and value are retrieved if present.  If a recognized
+ * value is supplied, a calendar is provided and configured as appropriate.
+ * Currently recognized tags are "buddhist", "chinese", "coptic", "ethiopic", 
+ * "gregorian", "hebrew", "islamic", "islamic-civil", "japanese", and "roc".  For
+ * example: <blockquote>
+ * <pre>Calendar cal = Calendar.getInstance(new ULocale("en_US@calendar=japanese"));</pre>
+ * </blockquote> will return an instance of JapaneseCalendar (using en_US conventions for
+ * minimum days in first week, start day of week, et cetera).
+ *
+ * <p>A <code>Calendar</code> object can produce all the time field values
+ * needed to implement the date-time formatting for a particular language and
+ * calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
+ * <code>Calendar</code> defines the range of values returned by certain fields,
+ * as well as their meaning.  For example, the first month of the year has value
+ * <code>MONTH</code> == <code>JANUARY</code> for all calendars.  Other values
+ * are defined by the concrete subclass, such as <code>ERA</code> and
+ * <code>YEAR</code>.  See individual field documentation and subclass
+ * documentation for details.
+ *
+ * <p>When a <code>Calendar</code> is <em>lenient</em>, it accepts a wider range
+ * of field values than it produces.  For example, a lenient
+ * <code>GregorianCalendar</code> interprets <code>MONTH</code> ==
+ * <code>JANUARY</code>, <code>DAY_OF_MONTH</code> == 32 as February 1.  A
+ * non-lenient <code>GregorianCalendar</code> throws an exception when given
+ * out-of-range field settings.  When calendars recompute field values for
+ * return by <code>get()</code>, they normalize them.  For example, a
+ * <code>GregorianCalendar</code> always produces <code>DAY_OF_MONTH</code>
+ * values between 1 and the length of the month.
+ *
+ * <p><code>Calendar</code> defines a locale-specific seven day week using two
+ * parameters: the first day of the week and the minimal days in first week
+ * (from 1 to 7).  These numbers are taken from the locale resource data when a
+ * <code>Calendar</code> is constructed.  They may also be specified explicitly
+ * through the API.
+ *
+ * <p>When setting or getting the <code>WEEK_OF_MONTH</code> or
+ * <code>WEEK_OF_YEAR</code> fields, <code>Calendar</code> must determine the
+ * first week of the month or year as a reference point.  The first week of a
+ * month or year is defined as the earliest seven day period beginning on
+ * <code>getFirstDayOfWeek()</code> and containing at least
+ * <code>getMinimalDaysInFirstWeek()</code> days of that month or year.  Weeks
+ * numbered ..., -1, 0 precede the first week; weeks numbered 2, 3,... follow
+ * it.  Note that the normalized numbering returned by <code>get()</code> may be
+ * different.  For example, a specific <code>Calendar</code> subclass may
+ * designate the week before week 1 of a year as week <em>n</em> of the previous
+ * year.
+ *
+ * <p> When computing a <code>Date</code> from time fields, two special
+ * circumstances may arise: there may be insufficient information to compute the
+ * <code>Date</code> (such as only year and month but no day in the month), or
+ * there may be inconsistent information (such as "Tuesday, July 15, 1996" --
+ * July 15, 1996 is actually a Monday).
+ *
+ * <p>
+ * <strong>Insufficient information.</strong> The calendar will use default
+ * information to specify the missing fields. This may vary by calendar; for
+ * the Gregorian calendar, the default for a field is the same as that of the
+ * start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc.
+ *
+ * <p>
+ * <strong>Inconsistent information.</strong> If fields conflict, the calendar
+ * will give preference to fields set more recently. For example, when
+ * determining the day, the calendar will look for one of the following
+ * combinations of fields.  The most recent combination, as determined by the
+ * most recently set single field, will be used.
+ *
+ * <blockquote>
+ * <pre>
+ * MONTH + DAY_OF_MONTH
+ * MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
+ * MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
+ * DAY_OF_YEAR
+ * DAY_OF_WEEK + WEEK_OF_YEAR</pre>
+ * </blockquote>
+ *
+ * For the time of day:
+ *
+ * <blockquote>
+ * <pre>
+ * HOUR_OF_DAY
+ * AM_PM + HOUR</pre>
+ * </blockquote>
+ *
+ * <p>
+ * <strong>Note:</strong> for some non-Gregorian calendars, different
+ * fields may be necessary for complete disambiguation. For example, a full
+ * specification of the historial Arabic astronomical calendar requires year,
+ * month, day-of-month <em>and</em> day-of-week in some cases.
+ *
+ * <p>
+ * <strong>Note:</strong> There are certain possible ambiguities in
+ * interpretation of certain singular times, which are resolved in the
+ * following ways:
+ * <ol>
+ *     <li> 24:00:00 "belongs" to the following day. That is,
+ *          23:59 on Dec 31, 1969 &lt; 24:00 on Jan 1, 1970 &lt; 24:01:00 on Jan 1, 1970
+ *
+ *     <li> Although historically not precise, midnight also belongs to "am",
+ *          and noon belongs to "pm", so on the same day,
+ *          12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm
+ * </ol>
+ *
+ * <p>
+ * The date or time format strings are not part of the definition of a
+ * calendar, as those must be modifiable or overridable by the user at
+ * runtime. Use {@link DateFormat}
+ * to format dates.
+ *
+ * <p><strong>Field manipulation methods</strong></p>
+ *
+ * <p><code>Calendar</code> fields can be changed using three methods:
+ * <code>set()</code>, <code>add()</code>, and <code>roll()</code>.</p>
+ *
+ * <p><strong><code>set(f, value)</code></strong> changes field
+ * <code>f</code> to <code>value</code>.  In addition, it sets an
+ * internal member variable to indicate that field <code>f</code> has
+ * been changed. Although field <code>f</code> is changed immediately,
+ * the calendar's milliseconds is not recomputed until the next call to
+ * <code>get()</code>, <code>getTime()</code>, or
+ * <code>getTimeInMillis()</code> is made. Thus, multiple calls to
+ * <code>set()</code> do not trigger multiple, unnecessary
+ * computations. As a result of changing a field using
+ * <code>set()</code>, other fields may also change, depending on the
+ * field, the field value, and the calendar system. In addition,
+ * <code>get(f)</code> will not necessarily return <code>value</code>
+ * after the fields have been recomputed. The specifics are determined by
+ * the concrete calendar class.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>set(Calendar.MONTH,
+ * Calendar.SEPTEMBER)</code> sets the calendar to September 31,
+ * 1999. This is a temporary internal representation that resolves to
+ * October 1, 1999 if <code>getTime()</code>is then called. However, a
+ * call to <code>set(Calendar.DAY_OF_MONTH, 30)</code> before the call to
+ * <code>getTime()</code> sets the calendar to September 30, 1999, since
+ * no recomputation occurs after <code>set()</code> itself.</p>
+ *
+ * <p><strong><code>add(f, delta)</code></strong> adds <code>delta</code>
+ * to field <code>f</code>.  This is equivalent to calling <code>set(f,
+ * get(f) + delta)</code> with two adjustments:</p>
+ *
+ * <blockquote>
+ *   <p><strong>Add rule 1</strong>. The value of field <code>f</code>
+ *   after the call minus the value of field <code>f</code> before the
+ *   call is <code>delta</code>, modulo any overflow that has occurred in
+ *   field <code>f</code>. Overflow occurs when a field value exceeds its
+ *   range and, as a result, the next larger field is incremented or
+ *   decremented and the field value is adjusted back into its range.</p>
+ *
+ *   <p><strong>Add rule 2</strong>. If a smaller field is expected to be
+ *   invariant, but &nbsp; it is impossible for it to be equal to its
+ *   prior value because of changes in its minimum or maximum after field
+ *   <code>f</code> is changed, then its value is adjusted to be as close
+ *   as possible to its expected value. A smaller field represents a
+ *   smaller unit of time. <code>HOUR</code> is a smaller field than
+ *   <code>DAY_OF_MONTH</code>. No adjustment is made to smaller fields
+ *   that are not expected to be invariant. The calendar system
+ *   determines what fields are expected to be invariant.</p>
+ * </blockquote>
+ *
+ * <p>In addition, unlike <code>set()</code>, <code>add()</code> forces
+ * an immediate recomputation of the calendar's milliseconds and all
+ * fields.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>add(Calendar.MONTH,
+ * 13)</code> sets the calendar to September 30, 2000. <strong>Add rule
+ * 1</strong> sets the <code>MONTH</code> field to September, since
+ * adding 13 months to August gives September of the next year. Since
+ * <code>DAY_OF_MONTH</code> cannot be 31 in September in a
+ * <code>GregorianCalendar</code>, <strong>add rule 2</strong> sets the
+ * <code>DAY_OF_MONTH</code> to 30, the closest possible value. Although
+ * it is a smaller field, <code>DAY_OF_WEEK</code> is not adjusted by
+ * rule 2, since it is expected to change when the month changes in a
+ * <code>GregorianCalendar</code>.</p>
+ *
+ * <p><strong><code>roll(f, delta)</code></strong> adds
+ * <code>delta</code> to field <code>f</code> without changing larger
+ * fields. This is equivalent to calling <code>add(f, delta)</code> with
+ * the following adjustment:</p>
+ *
+ * <blockquote>
+ *   <p><strong>Roll rule</strong>. Larger fields are unchanged after the
+ *   call. A larger field represents a larger unit of
+ *   time. <code>DAY_OF_MONTH</code> is a larger field than
+ *   <code>HOUR</code>.</p>
+ * </blockquote>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to August 31, 1999. Calling <code>roll(Calendar.MONTH,
+ * 8)</code> sets the calendar to April 30, <strong>1999</strong>.  Add
+ * rule 1 sets the <code>MONTH</code> field to April. Using a
+ * <code>GregorianCalendar</code>, the <code>DAY_OF_MONTH</code> cannot
+ * be 31 in the month April. Add rule 2 sets it to the closest possible
+ * value, 30. Finally, the <strong>roll rule</strong> maintains the
+ * <code>YEAR</code> field value of 1999.</p>
+ *
+ * <p><em>Example</em>: Consider a <code>GregorianCalendar</code>
+ * originally set to Sunday June 6, 1999. Calling
+ * <code>roll(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Tuesday June 1, 1999, whereas calling
+ * <code>add(Calendar.WEEK_OF_MONTH, -1)</code> sets the calendar to
+ * Sunday May 30, 1999. This is because the roll rule imposes an
+ * additional constraint: The <code>MONTH</code> must not change when the
+ * <code>WEEK_OF_MONTH</code> is rolled. Taken together with add rule 1,
+ * the resultant date must be between Tuesday June 1 and Saturday June
+ * 5. According to add rule 2, the <code>DAY_OF_WEEK</code>, an invariant
+ * when changing the <code>WEEK_OF_MONTH</code>, is set to Tuesday, the
+ * closest possible value to Sunday (where Sunday is the first day of the
+ * week).</p>
+ *
+ * <p><strong>Usage model</strong>. To motivate the behavior of
+ * <code>add()</code> and <code>roll()</code>, consider a user interface
+ * component with increment and decrement buttons for the month, day, and
+ * year, and an underlying <code>GregorianCalendar</code>. If the
+ * interface reads January 31, 1999 and the user presses the month
+ * increment button, what should it read? If the underlying
+ * implementation uses <code>set()</code>, it might read March 3, 1999. A
+ * better result would be February 28, 1999. Furthermore, if the user
+ * presses the month increment button again, it should read March 31,
+ * 1999, not March 28, 1999. By saving the original date and using either
+ * <code>add()</code> or <code>roll()</code>, depending on whether larger
+ * fields should be affected, the user interface can behave as most users
+ * will intuitively expect.</p>
+ *
+ * <p><b>Note:</b> You should always use {@link #roll roll} and {@link #add add} rather
+ * than attempting to perform arithmetic operations directly on the fields
+ * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+ * to have fields with non-linear behavior, for example missing months
+ * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+ * methods will take this into account, while simple arithmetic manipulations
+ * may give invalid results.
+ *
+ * <p><big><big><b>Calendar Architecture in ICU4J</b></big></big></p>
+ *
+ * <p>Recently the implementation of <code>Calendar</code> has changed
+ * significantly in order to better support subclassing. The original
+ * <code>Calendar</code> class was designed to support subclassing, but
+ * it had only one implemented subclass, <code>GregorianCalendar</code>.
+ * With the implementation of several new calendar subclasses, including
+ * the <code>BuddhistCalendar</code>, <code>ChineseCalendar</code>,
+ * <code>HebrewCalendar</code>, <code>IslamicCalendar</code>, and
+ * <code>JapaneseCalendar</code>, the subclassing API has been reworked
+ * thoroughly. This section details the new subclassing API and other
+ * ways in which <code>com.ibm.icu.util.Calendar</code> differs from
+ * <code>java.util.Calendar</code>.
+ * </p>
+ *
+ * <p><big><b>Changes</b></big></p>
+ *
+ * <p>Overview of changes between the classic <code>Calendar</code>
+ * architecture and the new architecture.
+ *
+ * <ul>
+ *
+ *   <li>The <code>fields[]</code> array is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses must access it
+ *     using the methods {@link #internalSet} and
+ *     {@link #internalGet}.  <b>Motivation:</b> Subclasses should
+ *     not directly access data members.</li>
+ *
+ *   <li>The <code>time</code> long word is <code>private</code> now
+ *     instead of <code>protected</code>.  Subclasses may access it using
+ *     the method {@link #internalGetTimeInMillis}, which does not
+ *     provoke an update. <b>Motivation:</b> Subclasses should not
+ *     directly access data members.</li>
+ *
+ *   <li>The scope of responsibility of subclasses has been drastically
+ *     reduced. As much functionality as possible is implemented in the
+ *     <code>Calendar</code> base class. As a result, it is much easier
+ *     to subclass <code>Calendar</code>. <b>Motivation:</b> Subclasses
+ *     should not have to reimplement common code. Certain behaviors are
+ *     common across calendar systems: The definition and behavior of
+ *     week-related fields and time fields, the arithmetic
+ *     ({@link #add(int, int) add} and {@link #roll(int, int) roll}) behavior of many
+ *     fields, and the field validation system.</li>
+ *
+ *   <li>The subclassing API has been completely redesigned.</li>
+ *
+ *   <li>The <code>Calendar</code> base class contains some Gregorian
+ *     calendar algorithmic support that subclasses can use (specifically
+ *     in {@link #handleComputeFields}).  Subclasses can use the
+ *     methods <code>getGregorianXxx()</code> to obtain precomputed
+ *     values. <b>Motivation:</b> This is required by all
+ *     <code>Calendar</code> subclasses in order to implement consistent
+ *     time zone behavior, and Gregorian-derived systems can use the
+ *     already computed data.</li>
+ *
+ *   <li>The <code>FIELD_COUNT</code> constant has been removed. Use
+ *     {@link #getFieldCount}.  In addition, framework API has been
+ *     added to allow subclasses to define additional fields.
+ *     <b>Motivation: </b>The number of fields is not constant across
+ *     calendar systems.</li>
+ *
+ *   <li>The range of handled dates has been narrowed from +/-
+ *     ~300,000,000 years to +/- ~5,000,000 years. In practical terms
+ *     this should not affect clients. However, it does mean that client
+ *     code cannot be guaranteed well-behaved results with dates such as
+ *     <code>Date(Long.MIN_VALUE)</code> or
+ *     <code>Date(Long.MAX_VALUE)</code>. Instead, the
+ *     <code>Calendar</code> constants {@link #MIN_DATE},
+ *     {@link #MAX_DATE}, {@link #MIN_MILLIS},
+ *     {@link #MAX_MILLIS}, {@link #MIN_JULIAN}, and
+ *     {@link #MAX_JULIAN} should be used. <b>Motivation:</b> With
+ *     the addition of the {@link #JULIAN_DAY} field, Julian day
+ *     numbers must be restricted to a 32-bit <code>int</code>.  This
+ *     restricts the overall supported range. Furthermore, restricting
+ *     the supported range simplifies the computations by removing
+ *     special case code that was used to accomodate arithmetic overflow
+ *     at millis near <code>Long.MIN_VALUE</code> and
+ *     <code>Long.MAX_VALUE</code>.</li>
+ *
+ *   <li>New fields are implemented: {@link #JULIAN_DAY} defines
+ *     single-field specification of the
+ *     date. {@link #MILLISECONDS_IN_DAY} defines a single-field
+ *     specification of the wall time. {@link #DOW_LOCAL} and
+ *     {@link #YEAR_WOY} implement localized day-of-week and
+ *     week-of-year behavior.</li>
+ *
+ *   <li>Subclasses can access millisecond constants
+ *     {@link #ONE_SECOND}, {@link #ONE_MINUTE},
+ *     {@link #ONE_HOUR}, {@link #ONE_DAY}, and
+ *     {@link #ONE_WEEK} defined in <code>Calendar</code>.</li>
+ *
+ *   <li>New API has been added to suport calendar-specific subclasses
+ *     of <code>DateFormat</code>.</li>
+ *
+ *   <li>Several subclasses have been implemented, representing
+ *     various international calendar systems.</li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Subclass API</b></big></p>
+ *
+ * <p>The original <code>Calendar</code> API was based on the experience
+ * of implementing a only a single subclass,
+ * <code>GregorianCalendar</code>. As a result, all of the subclassing
+ * kinks had not been worked out. The new subclassing API has been
+ * refined based on several implemented subclasses. This includes methods
+ * that must be overridden and methods for subclasses to call. Subclasses
+ * no longer have direct access to <code>fields</code> and
+ * <code>stamp</code>. Instead, they have new API to access
+ * these. Subclasses are able to allocate the <code>fields</code> array
+ * through a protected framework method; this allows subclasses to
+ * specify additional fields. </p>
+ *
+ * <p>More functionality has been moved into the base class. The base
+ * class now contains much of the computational machinery to support the
+ * Gregorian calendar. This is based on two things: (1) Many calendars
+ * are based on the Gregorian calendar (such as the Buddhist and Japanese
+ * imperial calendars). (2) <em>All</em> calendars require basic
+ * Gregorian support in order to handle timezone computations. </p>
+ *
+ * <p>Common computations have been moved into
+ * <code>Calendar</code>. Subclasses no longer compute the week related
+ * fields and the time related fields. These are commonly handled for all
+ * calendars by the base class. </p>
+ *
+ * <p><b>Subclass computation of time <tt>=&gt;</tt> fields</b>
+ *
+ * <p>The {@link #ERA}, {@link #YEAR},
+ * {@link #EXTENDED_YEAR}, {@link #MONTH},
+ * {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields are
+ * computed by the subclass, based on the Julian day. All other fields
+ * are computed by <code>Calendar</code>.
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleComputeFields}
+ *     to compute the {@link #ERA}, {@link #YEAR},
+ *     {@link #EXTENDED_YEAR}, {@link #MONTH},
+ *     {@link #DAY_OF_MONTH}, and {@link #DAY_OF_YEAR} fields,
+ *     based on the value of the {@link #JULIAN_DAY} field. If there
+ *     are calendar-specific fields not defined by <code>Calendar</code>,
+ *     they must also be computed. These are the only fields that the
+ *     subclass should compute. All other fields are computed by the base
+ *     class, so time and week fields behave in a consistent way across
+ *     all calendars. The default version of this method in
+ *     <code>Calendar</code> implements a proleptic Gregorian
+ *     calendar. Within this method, subclasses may call
+ *     <code>getGregorianXxx()</code> to obtain the Gregorian calendar
+ *     month, day of month, and extended year for the given date.</li>
+ *
+ * </ul>
+ *
+ * <p><b>Subclass computation of fields <tt>=&gt;</tt> time</b>
+ *
+ * <p>The interpretation of most field values is handled entirely by
+ * <code>Calendar</code>. <code>Calendar</code> determines which fields
+ * are set, which are not, which are set more recently, and so on. In
+ * addition, <code>Calendar</code> handles the computation of the time
+ * from the time fields and handles the week-related fields. The only
+ * thing the subclass must do is determine the extended year, based on
+ * the year fields, and then, given an extended year and a month, it must
+ * return a Julian day number.
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleGetExtendedYear}
+ *     to return the extended year for this calendar system, based on the
+ *     {@link #YEAR}, {@link #EXTENDED_YEAR}, and any fields that
+ *     the calendar system uses that are larger than a year, such as
+ *     {@link #ERA}.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleComputeMonthStart}
+ *     to return the Julian day number
+ *     associated with a month and extended year. This is the Julian day
+ *     number of the day before the first day of the month. The month
+ *     number is zero-based. This computation should not depend on any
+ *     field values.</li>
+ *
+ * </ul>
+ *
+ * <p><b>Other methods</b>
+ *
+ * <ul>
+ *
+ *   <li>Subclasses should implement {@link #handleGetMonthLength}
+ *     to return the number of days in a
+ *     given month of a given extended year. The month number, as always,
+ *     is zero-based.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleGetYearLength}
+ *     to return the number of days in the given
+ *     extended year. This method is used by
+ *     <tt>computeWeekFields</tt> to compute the
+ *     {@link #WEEK_OF_YEAR} and {@link #YEAR_WOY} fields.</li>
+ *
+ *   <li>Subclasses should implement {@link #handleGetLimit}
+ *     to return the {@link #MINIMUM},
+ *     {@link #GREATEST_MINIMUM}, {@link #LEAST_MAXIMUM}, or
+ *     {@link #MAXIMUM} of a field, depending on the value of
+ *     <code>limitType</code>. This method only needs to handle the
+ *     fields {@link #ERA}, {@link #YEAR}, {@link #MONTH},
+ *     {@link #WEEK_OF_YEAR}, {@link #WEEK_OF_MONTH},
+ *     {@link #DAY_OF_MONTH}, {@link #DAY_OF_YEAR},
+ *     {@link #DAY_OF_WEEK_IN_MONTH}, {@link #YEAR_WOY}, and
+ *     {@link #EXTENDED_YEAR}.  Other fields are invariant (with
+ *     respect to calendar system) and are handled by the base
+ *     class.</li>
+ *
+ *   <li>Optionally, subclasses may override {@link #validateField}
+ *     to check any subclass-specific fields. If the
+ *     field's value is out of range, the method should throw an
+ *     <code>IllegalArgumentException</code>. The method may call
+ *     <code>super.validateField(field)</code> to handle fields in a
+ *     generic way, that is, to compare them to the range
+ *     <code>getMinimum(field)</code>..<code>getMaximum(field)</code>.</li>
+ *
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleCreateFields} to create an <code>int[]</code>
+ *     array large enough to hold the calendar's fields. This is only
+ *     necessary if the calendar defines additional fields beyond those
+ *     defined by <code>Calendar</code>. The length of the result must be
+ *     at least {@link #BASE_FIELD_COUNT} and no more than
+ *     {@link #MAX_FIELD_COUNT}.</li>
+ *
+ *   <li>Optionally, subclasses may override
+ *     {@link #handleGetDateFormat} to create a
+ *     <code>DateFormat</code> appropriate to this calendar. This is only
+ *     required if a calendar subclass redefines the use of a field (for
+ *     example, changes the {@link #ERA} field from a symbolic field
+ *     to a numeric one) or defines an additional field.</li>
+ *
+ *   <li>Optionally, subclasses may override {@link #roll roll} and
+ *     {@link #add add} to handle fields that are discontinuous. For
+ *     example, in the Hebrew calendar the month &quot;Adar I&quot; only
+ *     occurs in leap years; in other years the calendar jumps from
+ *     Shevat (month #4) to Adar (month #6). The {@link
+ *     HebrewCalendar#add HebrewCalendar.add} and {@link
+ *     HebrewCalendar#roll HebrewCalendar.roll} methods take this into
+ *     account, so that adding 1 month to Shevat gives the proper result
+ *     (Adar) in a non-leap year. The protected utility method {@link
+ *     #pinField pinField} is often useful when implementing these two
+ *     methods. </li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Normalized behavior</b></big>
+ *
+ * <p>The behavior of certain fields has been made consistent across all
+ * calendar systems and implemented in <code>Calendar</code>.
+ *
+ * <ul>
+ *
+ *   <li>Time is normalized. Even though some calendar systems transition
+ *     between days at sunset or at other times, all ICU4J calendars
+ *     transition between days at <em>local zone midnight</em>.  This
+ *     allows ICU4J to centralize the time computations in
+ *     <code>Calendar</code> and to maintain basic correpsondences
+ *     between calendar systems. Affected fields: {@link #AM_PM},
+ *     {@link #HOUR}, {@link #HOUR_OF_DAY}, {@link #MINUTE},
+ *     {@link #SECOND}, {@link #MILLISECOND},
+ *     {@link #ZONE_OFFSET}, and {@link #DST_OFFSET}.</li>
+ *
+ *   <li>DST behavior is normalized. Daylight savings time behavior is
+ *     computed the same for all calendar systems, and depends on the
+ *     value of several <code>GregorianCalendar</code> fields: the
+ *     {@link #YEAR}, {@link #MONTH}, and
+ *     {@link #DAY_OF_MONTH}. As a result, <code>Calendar</code>
+ *     always computes these fields, even for non-Gregorian calendar
+ *     systems. These fields are available to subclasses.</li>
+ *
+ *   <li>Weeks are normalized. Although locales define the week
+ *     differently, in terms of the day on which it starts, and the
+ *     designation of week number one of a month or year, they all use a
+ *     common mechanism. Furthermore, the day of the week has a simple
+ *     and consistent definition throughout history. For example,
+ *     although the Gregorian calendar introduced a discontinuity when
+ *     first instituted, the day of week was not disrupted. For this
+ *     reason, the fields {@link #DAY_OF_WEEK}, <code>WEEK_OF_YEAR,
+ *     WEEK_OF_MONTH</code>, {@link #DAY_OF_WEEK_IN_MONTH},
+ *     {@link #DOW_LOCAL}, {@link #YEAR_WOY} are all computed in
+ *     a consistent way in the base class, based on the
+ *     {@link #EXTENDED_YEAR}, {@link #DAY_OF_YEAR},
+ *     {@link #MONTH}, and {@link #DAY_OF_MONTH}, which are
+ *     computed by the subclass.</li>
+ *
+ * </ul>
+ *
+ * <p><big><b>Supported range</b></big>
+ *
+ * <p>The allowable range of <code>Calendar</code> has been
+ * narrowed. <code>GregorianCalendar</code> used to attempt to support
+ * the range of dates with millisecond values from
+ * <code>Long.MIN_VALUE</code> to <code>Long.MAX_VALUE</code>. This
+ * introduced awkward constructions (hacks) which slowed down
+ * performance. It also introduced non-uniform behavior at the
+ * boundaries. The new <code>Calendar</code> protocol specifies the
+ * maximum range of supportable dates as those having Julian day numbers
+ * of <code>-0x7F000000</code> to <code>+0x7F000000</code>. This
+ * corresponds to years from ~5,000,000 BCE to ~5,000,000 CE. Programmers
+ * should use the constants {@link #MIN_DATE} (or
+ * {@link #MIN_MILLIS} or {@link #MIN_JULIAN}) and
+ * {@link #MAX_DATE} (or {@link #MAX_MILLIS} or
+ * {@link #MAX_JULIAN}) in <code>Calendar</code> to specify an
+ * extremely early or extremely late date.</p>
+ *
+ * <p><big><b>General notes</b></big>
+ *
+ * <ul>
+ *
+ *   <li>Calendars implementations are <em>proleptic</em>. For example,
+ *     even though the Gregorian calendar was not instituted until the
+ *     16th century, the <code>GregorianCalendar</code> class supports
+ *     dates before the historical onset of the calendar by extending the
+ *     calendar system backward in time. Similarly, the
+ *     <code>HebrewCalendar</code> extends backward before the start of
+ *     its epoch into zero and negative years. Subclasses do not throw
+ *     exceptions because a date precedes the historical start of a
+ *     calendar system. Instead, they implement
+ *     {@link #handleGetLimit} to return appropriate limits on
+ *     {@link #YEAR}, {@link #ERA}, etc. fields. Then, if the
+ *     calendar is set to not be lenient, out-of-range field values will
+ *     trigger an exception.</li>
+ *
+ *   <li>Calendar system subclasses compute a <em>extended
+ *     year</em>. This differs from the {@link #YEAR} field in that
+ *     it ranges over all integer values, including zero and negative
+ *     values, and it encapsulates the information of the
+ *     {@link #YEAR} field and all larger fields.  Thus, for the
+ *     Gregorian calendar, the {@link #EXTENDED_YEAR} is computed as
+ *     <code>ERA==AD ? YEAR : 1-YEAR</code>. Another example is the Mayan
+ *     long count, which has years (<code>KUN</code>) and nested cycles
+ *     of years (<code>KATUN</code> and <code>BAKTUN</code>). The Mayan
+ *     {@link #EXTENDED_YEAR} is computed as <code>TUN + 20 * (KATUN
+ *     + 20 * BAKTUN)</code>. The <code>Calendar</code> base class uses
+ *     the {@link #EXTENDED_YEAR} field to compute the week-related
+ *     fields.</li>
+ *
+ * </ul>
+ *
+ * @see          Date
+ * @see          GregorianCalendar
+ * @see          TimeZone
+ * @see          DateFormat
+ * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu, Laura Werner
+ * @stable ICU 2.0
+ */
+public abstract class Calendar implements Serializable, Cloneable, Comparable {
+
+    // Data flow in Calendar
+    // ---------------------
+
+    // The current time is represented in two ways by Calendar: as UTC
+    // milliseconds from the epoch start (1 January 1970 0:00 UTC), and as local
+    // fields such as MONTH, HOUR, AM_PM, etc.  It is possible to compute the
+    // millis from the fields, and vice versa.  The data needed to do this
+    // conversion is encapsulated by a TimeZone object owned by the Calendar.
+    // The data provided by the TimeZone object may also be overridden if the
+    // user sets the ZONE_OFFSET and/or DST_OFFSET fields directly. The class
+    // keeps track of what information was most recently set by the caller, and
+    // uses that to compute any other information as needed.
+
+    // If the user sets the fields using set(), the data flow is as follows.
+    // This is implemented by the Calendar subclass's computeTime() method.
+    // During this process, certain fields may be ignored.  The disambiguation
+    // algorithm for resolving which fields to pay attention to is described
+    // above.
+
+    //   local fields (YEAR, MONTH, DATE, HOUR, MINUTE, etc.)
+    //           |
+    //           | Using Calendar-specific algorithm
+    //           V
+    //   local standard millis
+    //           |
+    //           | Using TimeZone or user-set ZONE_OFFSET / DST_OFFSET
+    //           V
+    //   UTC millis (in time data member)
+
+    // If the user sets the UTC millis using setTime(), the data flow is as
+    // follows.  This is implemented by the Calendar subclass's computeFields()
+    // method.
+
+    //   UTC millis (in time data member)
+    //           |
+    //           | Using TimeZone getOffset()
+    //           V
+    //   local standard millis
+    //           |
+    //           | Using Calendar-specific algorithm
+    //           V
+    //   local fields (YEAR, MONTH, DATE, HOUR, MINUTE, etc.)
+
+    // In general, a round trip from fields, through local and UTC millis, and
+    // back out to fields is made when necessary.  This is implemented by the
+    // complete() method.  Resolving a partial set of fields into a UTC millis
+    // value allows all remaining fields to be generated from that value.  If
+    // the Calendar is lenient, the fields are also renormalized to standard
+    // ranges when they are regenerated.
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * era, e.g., AD or BC in the Julian calendar. This is a calendar-specific
+     * value; see subclass documentation.
+     * @see GregorianCalendar#AD
+     * @see GregorianCalendar#BC
+     * @stable ICU 2.0
+     */
+    public final static int ERA = 0;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * year. This is a calendar-specific value; see subclass documentation.
+     * @stable ICU 2.0
+     */
+    public final static int YEAR = 1;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * month. This is a calendar-specific value. The first month of the year is
+     * <code>JANUARY</code>; the last depends on the number of months in a year.
+     * @see #JANUARY
+     * @see #FEBRUARY
+     * @see #MARCH
+     * @see #APRIL
+     * @see #MAY
+     * @see #JUNE
+     * @see #JULY
+     * @see #AUGUST
+     * @see #SEPTEMBER
+     * @see #OCTOBER
+     * @see #NOVEMBER
+     * @see #DECEMBER
+     * @see #UNDECIMBER
+     * @stable ICU 2.0
+     */
+    public final static int MONTH = 2;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current year.  The first week of the year, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_YEAR</code> for days before the first week of
+     * the year.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_YEAR = 3;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * week number within the current month.  The first week of the month, as
+     * defined by <code>getFirstDayOfWeek()</code> and
+     * <code>getMinimalDaysInFirstWeek()</code>, has value 1.  Subclasses define
+     * the value of <code>WEEK_OF_MONTH</code> for days before the first week of
+     * the month.
+     * @see #getFirstDayOfWeek
+     * @see #getMinimalDaysInFirstWeek
+     * @stable ICU 2.0
+     */
+    public final static int WEEK_OF_MONTH = 4;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DAY_OF_MONTH</code>.
+     * The first day of the month has value 1.
+     * @see #DAY_OF_MONTH
+     * @stable ICU 2.0
+     */
+    public final static int DATE = 5;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * day of the month. This is a synonym for <code>DATE</code>.
+     * The first day of the month has value 1.
+     * @see #DATE
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_MONTH = 5;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * number within the current year.  The first day of the year has value 1.
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_YEAR = 6;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the day
+     * of the week.  This field takes values <code>SUNDAY</code>,
+     * <code>MONDAY</code>, <code>TUESDAY</code>, <code>WEDNESDAY</code>,
+     * <code>THURSDAY</code>, <code>FRIDAY</code>, and <code>SATURDAY</code>.
+     * @see #SUNDAY
+     * @see #MONDAY
+     * @see #TUESDAY
+     * @see #WEDNESDAY
+     * @see #THURSDAY
+     * @see #FRIDAY
+     * @see #SATURDAY
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK = 7;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * ordinal number of the day of the week within the current month. Together
+     * with the <code>DAY_OF_WEEK</code> field, this uniquely specifies a day
+     * within a month.  Unlike <code>WEEK_OF_MONTH</code> and
+     * <code>WEEK_OF_YEAR</code>, this field's value does <em>not</em> depend on
+     * <code>getFirstDayOfWeek()</code> or
+     * <code>getMinimalDaysInFirstWeek()</code>.  <code>DAY_OF_MONTH 1</code>
+     * through <code>7</code> always correspond to <code>DAY_OF_WEEK_IN_MONTH
+     * 1</code>; <code>8</code> through <code>15</code> correspond to
+     * <code>DAY_OF_WEEK_IN_MONTH 2</code>, and so on.
+     * <code>DAY_OF_WEEK_IN_MONTH 0</code> indicates the week before
+     * <code>DAY_OF_WEEK_IN_MONTH 1</code>.  Negative values count back from the
+     * end of the month, so the last Sunday of a month is specified as
+     * <code>DAY_OF_WEEK = SUNDAY, DAY_OF_WEEK_IN_MONTH = -1</code>.  Because
+     * negative values count backward they will usually be aligned differently
+     * within the month than positive values.  For example, if a month has 31
+     * days, <code>DAY_OF_WEEK_IN_MONTH -1</code> will overlap
+     * <code>DAY_OF_WEEK_IN_MONTH 5</code> and the end of <code>4</code>.
+     * @see #DAY_OF_WEEK
+     * @see #WEEK_OF_MONTH
+     * @stable ICU 2.0
+     */
+    public final static int DAY_OF_WEEK_IN_MONTH = 8;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating
+     * whether the <code>HOUR</code> is before or after noon.
+     * E.g., at 10:04:15.250 PM the <code>AM_PM</code> is <code>PM</code>.
+     * @see #AM
+     * @see #PM
+     * @see #HOUR
+     * @stable ICU 2.0
+     */
+    public final static int AM_PM = 9;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the morning or afternoon. <code>HOUR</code> is used for the 12-hour
+     * clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR</code> is 10.
+     * @see #AM_PM
+     * @see #HOUR_OF_DAY
+     * @stable ICU 2.0
+     */
+    public final static int HOUR = 10;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * hour of the day. <code>HOUR_OF_DAY</code> is used for the 24-hour clock.
+     * E.g., at 10:04:15.250 PM the <code>HOUR_OF_DAY</code> is 22.
+     * @see #HOUR
+     * @stable ICU 2.0
+     */
+    public final static int HOUR_OF_DAY = 11;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * minute within the hour.
+     * E.g., at 10:04:15.250 PM the <code>MINUTE</code> is 4.
+     * @stable ICU 2.0
+     */
+    public final static int MINUTE = 12;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * second within the minute.
+     * E.g., at 10:04:15.250 PM the <code>SECOND</code> is 15.
+     * @stable ICU 2.0
+     */
+    public final static int SECOND = 13;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * millisecond within the second.
+     * E.g., at 10:04:15.250 PM the <code>MILLISECOND</code> is 250.
+     * @stable ICU 2.0
+     */
+    public final static int MILLISECOND = 14;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * raw offset from GMT in milliseconds.
+     * @stable ICU 2.0
+     */
+    public final static int ZONE_OFFSET = 15;
+
+    /**
+     * Field number for <code>get</code> and <code>set</code> indicating the
+     * daylight savings offset in milliseconds.
+     * @stable ICU 2.0
+     */
+    public final static int DST_OFFSET = 16;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year corresponding to the
+     * <code>WEEK_OF_YEAR</code> field.  This may be one greater or less
+     * than the value of <code>EXTENDED_YEAR</code>.
+     * @stable ICU 2.0
+     */
+    public static final int YEAR_WOY = 17;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the localized day of week.  This will be a value from 1
+     * to 7 inclusive, with 1 being the localized first day of the week.
+     * @stable ICU 2.0
+     */
+    public static final int DOW_LOCAL = 18;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the extended year.  This is a single number designating
+     * the year of this calendar system, encompassing all supra-year
+     * fields.  For example, for the Julian calendar system, year numbers
+     * are positive, with an era of BCE or CE.  An extended year value for
+     * the Julian calendar system assigns positive values to CE years and
+     * negative values to BCE years, with 1 BCE being year 0.
+     * @stable ICU 2.0
+     */
+    public static final int EXTENDED_YEAR = 19;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the modified Julian day number.  This is different from
+     * the conventional Julian day number in two regards.  First, it
+     * demarcates days at local zone midnight, rather than noon GMT.
+     * Second, it is a local number; that is, it depends on the local time
+     * zone.  It can be thought of as a single number that encompasses all
+     * the date-related fields.
+     * @stable ICU 2.0
+     */
+    public static final int JULIAN_DAY = 20;
+
+    /**
+     * Field number for <code>get()</code> and <code>set()</code>
+     * indicating the milliseconds in the day.  This ranges from 0 to
+     * 23:59:59.999 (regardless of DST).  This field behaves
+     * <em>exactly</em> like a composite of all time-related fields, not
+     * including the zone fields.  As such, it also reflects
+     * discontinuities of those fields on DST transition days.  On a day of
+     * DST onset, it will jump forward.  On a day of DST cessation, it will
+     * jump backward.  This reflects the fact that is must be combined with
+     * the DST_OFFSET field to obtain a unique local time value.
+     * @stable ICU 2.0
+     */
+    public static final int MILLISECONDS_IN_DAY = 21;
+
+    /**
+     * The number of fields defined by this class.  Subclasses may define
+     * addition fields starting with this number.
+     * @stable ICU 2.0
+     */
+    protected static final int BASE_FIELD_COUNT = 22;
+
+    /**
+     * The maximum number of fields possible.  Subclasses must not define
+     * more total fields than this number.
+     * @stable ICU 2.0
+     */
+    protected static final int MAX_FIELD_COUNT = 32;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Sunday.
+     * @stable ICU 2.0
+     */
+    public final static int SUNDAY = 1;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Monday.
+     * @stable ICU 2.0
+     */
+    public final static int MONDAY = 2;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Tuesday.
+     * @stable ICU 2.0
+     */
+    public final static int TUESDAY = 3;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Wednesday.
+     * @stable ICU 2.0
+     */
+    public final static int WEDNESDAY = 4;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Thursday.
+     * @stable ICU 2.0
+     */
+    public final static int THURSDAY = 5;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Friday.
+     * @stable ICU 2.0
+     */
+    public final static int FRIDAY = 6;
+
+    /**
+     * Value of the <code>DAY_OF_WEEK</code> field indicating
+     * Saturday.
+     * @stable ICU 2.0
+     */
+    public final static int SATURDAY = 7;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * first month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JANUARY = 0;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * second month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int FEBRUARY = 1;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * third month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int MARCH = 2;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fourth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int APRIL = 3;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * fifth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int MAY = 4;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * sixth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JUNE = 5;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * seventh month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int JULY = 6;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eighth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int AUGUST = 7;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * ninth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int SEPTEMBER = 8;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * tenth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int OCTOBER = 9;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * eleventh month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int NOVEMBER = 10;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * twelfth month of the year.
+     * @stable ICU 2.0
+     */
+    public final static int DECEMBER = 11;
+
+    /**
+     * Value of the <code>MONTH</code> field indicating the
+     * thirteenth month of the year. Although <code>GregorianCalendar</code>
+     * does not use this value, lunar calendars do.
+     * @stable ICU 2.0
+     */
+    public final static int UNDECIMBER = 12;
+
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from midnight to just before noon.
+     * @stable ICU 2.0
+     */
+    public final static int AM = 0;
+
+    /**
+     * Value of the <code>AM_PM</code> field indicating the
+     * period of the day from noon to just before midnight.
+     * @stable ICU 2.0
+     */
+    public final static int PM = 1;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekday.
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKDAY = 0;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * weekend day.
+     * @see #WEEKDAY
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND = 1;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as a weekday and transitions to the weekend.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND_ONSET = 2;
+
+    /**
+     * Value returned by getDayOfWeekType(int dayOfWeek) to indicate a
+     * day that starts as the weekend and transitions to a weekday.
+     * Call getWeekendTransition() to get the point of transition.
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #getDayOfWeekType
+     * @stable ICU 2.0
+     */
+    public static final int WEEKEND_CEASE = 3;
+
+    /**
+     * The number of milliseconds in one second.
+     * @stable ICU 2.0
+     */
+    protected static final int  ONE_SECOND = 1000;
+
+    /**
+     * The number of milliseconds in one minute.
+     * @stable ICU 2.0
+     */
+    protected static final int  ONE_MINUTE = 60*ONE_SECOND;
+
+    /**
+     * The number of milliseconds in one hour.
+     * @stable ICU 2.0
+     */
+    protected static final int  ONE_HOUR   = 60*ONE_MINUTE;
+
+    /**
+     * The number of milliseconds in one day.  Although ONE_DAY and
+     * ONE_WEEK can fit into ints, they must be longs in order to prevent
+     * arithmetic overflow when performing (bug 4173516).
+     * @stable ICU 2.0
+     */
+    protected static final long ONE_DAY    = 24*ONE_HOUR;
+
+    /**
+     * The number of milliseconds in one week.  Although ONE_DAY and
+     * ONE_WEEK can fit into ints, they must be longs in order to prevent
+     * arithmetic overflow when performing (bug 4173516).
+     * @stable ICU 2.0
+     */
+    protected static final long ONE_WEEK   = 7*ONE_DAY;
+
+    /**
+     * The Julian day of the Gregorian epoch, that is, January 1, 1 on the
+     * Gregorian calendar.
+     * @stable ICU 2.0
+     */
+    protected static final int JAN_1_1_JULIAN_DAY = 1721426;
+
+    /**
+     * The Julian day of the epoch, that is, January 1, 1970 on the
+     * Gregorian calendar.
+     * @stable ICU 2.0
+     */
+    protected static final int EPOCH_JULIAN_DAY   = 2440588;
+
+    /**
+     * The minimum supported Julian day.  This value is equivalent to
+     * <code>MIN_MILLIS</code> and <code>MIN_DATE</code>.
+     * @see #JULIAN_DAY
+     * @stable ICU 2.0
+     */
+    protected static final int MIN_JULIAN = -0x7F000000;
+
+    /**
+     * The minimum supported epoch milliseconds.  This value is equivalent
+     * to <code>MIN_JULIAN</code> and <code>MIN_DATE</code>.
+     * @stable ICU 2.0
+     */
+    protected static final long MIN_MILLIS = -184303902528000000L;
+
+    // Get around bug in jikes 1.12 for now.  Later, use:
+    //protected static final long MIN_MILLIS = (MIN_JULIAN - EPOCH_JULIAN_DAY) * ONE_DAY;
+
+    /**
+     * The minimum supported <code>Date</code>.  This value is equivalent
+     * to <code>MIN_JULIAN</code> and <code>MIN_MILLIS</code>.
+     * @stable ICU 2.0
+     */
+    protected static final Date MIN_DATE = new Date(MIN_MILLIS);
+
+    /**
+     * The maximum supported Julian day.  This value is equivalent to
+     * <code>MAX_MILLIS</code> and <code>MAX_DATE</code>.
+     * @see #JULIAN_DAY
+     * @stable ICU 2.0
+     */
+    protected static final int MAX_JULIAN = +0x7F000000;
+
+    /**
+     * The maximum supported epoch milliseconds.  This value is equivalent
+     * to <code>MAX_JULIAN</code> and <code>MAX_DATE</code>.
+     * @stable ICU 2.0
+     */
+    protected static final long MAX_MILLIS = (MAX_JULIAN - EPOCH_JULIAN_DAY) * ONE_DAY;
+
+    /**
+     * The maximum supported <code>Date</code>.  This value is equivalent
+     * to <code>MAX_JULIAN</code> and <code>MAX_MILLIS</code>.
+     * @stable ICU 2.0
+     */
+    protected static final Date MAX_DATE = new Date(MAX_MILLIS);
+
+    // Internal notes:
+    // Calendar contains two kinds of time representations: current "time" in
+    // milliseconds, and a set of time "fields" representing the current time.
+    // The two representations are usually in sync, but can get out of sync
+    // as follows.
+    // 1. Initially, no fields are set, and the time is invalid.
+    // 2. If the time is set, all fields are computed and in sync.
+    // 3. If a single field is set, the time is invalid.
+    // Recomputation of the time and fields happens when the object needs
+    // to return a result to the user, or use a result for a computation.
+
+    /**
+     * The field values for the currently set time for this calendar.
+     * This is an array of at least <code>BASE_FIELD_COUNT</code> integers.
+     * @see #handleCreateFields
+     * @serial
+     */
+    private transient int           fields[];
+
+    /**
+     * Pseudo-time-stamps which specify when each field was set. There
+     * are two special values, UNSET and INTERNALLY_SET. Values from
+     * MINIMUM_USER_SET to Integer.MAX_VALUE are legal user set values.
+     */
+    private transient int           stamp[];
+
+    /**
+     * The currently set time for this calendar, expressed in milliseconds after
+     * January 1, 1970, 0:00:00 GMT.
+     * @see <tt>isTimeSet</tt>
+     * @serial
+     */
+    private long          time;
+
+    /**
+     * True if then the value of <code>time</code> is valid.
+     * The time is made invalid by a change to an item of <code>field[]</code>.
+     * @see #time
+     * @serial
+     */
+    private transient boolean       isTimeSet;
+
+    /**
+     * True if <code>fields[]</code> are in sync with the currently set time.
+     * If false, then the next attempt to get the value of a field will
+     * force a recomputation of all fields from the current value of
+     * <code>time</code>.
+     * @serial
+     */
+    private transient boolean       areFieldsSet;
+
+    /**
+     * True if all fields have been set.  This is only false in a few
+     * situations: In a newly created, partially constructed object.  After
+     * a call to clear().  In an object just read from a stream using
+     * readObject().  Once computeFields() has been called this is set to
+     * true and stays true until one of the above situations recurs.
+     * @serial
+     */
+    private transient boolean       areAllFieldsSet;
+
+    /**
+     * True if all fields have been virtually set, but have not yet been
+     * computed.  This occurs only in setTimeInMillis(), or after readObject().
+     * A calendar set to this state will compute all fields from the time if it
+     * becomes necessary, but otherwise will delay such computation.
+     */
+    private transient boolean areFieldsVirtuallySet;
+
+    /**
+     * True if this calendar allows out-of-range field values during computation
+     * of <code>time</code> from <code>fields[]</code>.
+     * @see #setLenient
+     * @serial
+     */
+    private boolean         lenient = true;
+
+    /**
+     * The <code>TimeZone</code> used by this calendar. </code>Calendar</code>
+     * uses the time zone data to translate between locale and GMT time.
+     * @serial
+     */
+    private TimeZone        zone;
+
+    /**
+     * The first day of the week, with possible values <code>SUNDAY</code>,
+     * <code>MONDAY</code>, etc.  This is a locale-dependent value.
+     * @serial
+     */
+    private int             firstDayOfWeek;
+
+    /**
+     * The number of days required for the first week in a month or year,
+     * with possible values from 1 to 7.  This is a locale-dependent value.
+     * @serial
+     */
+    private int             minimalDaysInFirstWeek;
+
+    /**
+     * First day of the weekend in this calendar's locale.  Must be in
+     * the range SUNDAY...SATURDAY (1..7).  The weekend starts at
+     * weekendOnsetMillis milliseconds after midnight on that day of
+     * the week.  This value is taken from locale resource data.
+     */
+    private int weekendOnset;
+
+    /**
+     * Milliseconds after midnight at which the weekend starts on the
+     * day of the week weekendOnset.  Times that are greater than or
+     * equal to weekendOnsetMillis are considered part of the weekend.
+     * Must be in the range 0..24*60*60*1000-1.  This value is taken
+     * from locale resource data.
+     */
+    private int weekendOnsetMillis;
+
+    /**
+     * Day of the week when the weekend stops in this calendar's
+     * locale.  Must be in the range SUNDAY...SATURDAY (1..7).  The
+     * weekend stops at weekendCeaseMillis milliseconds after midnight
+     * on that day of the week.  This value is taken from locale
+     * resource data.
+     */
+    private int weekendCease;
+
+    /**
+     * Milliseconds after midnight at which the weekend stops on the
+     * day of the week weekendCease.  Times that are greater than or
+     * equal to weekendCeaseMillis are considered not to be the
+     * weekend.  Must be in the range 0..24*60*60*1000-1.  This value
+     * is taken from locale resource data.
+     */
+    private int weekendCeaseMillis;
+
+    /**
+     * Cache to hold the firstDayOfWeek and minimalDaysInFirstWeek
+     * of a Locale.
+     */
+    private static Hashtable cachedLocaleData = new Hashtable(3);
+
+    /**
+     * Value of the time stamp <code>stamp[]</code> indicating that
+     * a field has not been set since the last call to <code>clear()</code>.
+     * @see #INTERNALLY_SET
+     * @see #MINIMUM_USER_STAMP
+     * @stable ICU 2.0
+     */
+    protected static final int UNSET = 0;
+
+    /**
+     * Value of the time stamp <code>stamp[]</code> indicating that a field
+     * has been set via computations from the time or from other fields.
+     * @see #UNSET
+     * @see #MINIMUM_USER_STAMP
+     * @stable ICU 2.0
+     */
+    protected static final int INTERNALLY_SET = 1;
+
+    /**
+     * If the time stamp <code>stamp[]</code> has a value greater than or
+     * equal to <code>MINIMUM_USER_SET</code> then it has been set by the
+     * user via a call to <code>set()</code>.
+     * @see #UNSET
+     * @see #INTERNALLY_SET
+     * @stable ICU 2.0
+     */
+    protected static final int MINIMUM_USER_STAMP = 2;
+
+    /**
+     * The next available value for <code>stamp[]</code>, an internal array.
+     * @serial
+     */
+    private transient int             nextStamp = MINIMUM_USER_STAMP;
+
+    // the internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.5
+    // - 1 for version from JDK 1.1.6, which writes a correct 'time' value
+    //     as well as compatible values for other fields.  This is a
+    //     transitional format.
+    // - 2 (not implemented yet) a future version, in which fields[],
+    //     areFieldsSet, and isTimeSet become transient, and isSet[] is
+    //     removed. In JDK 1.1.6 we write a format compatible with version 2.
+    // static final int        currentSerialVersion = 1;
+
+    /**
+     * The version of the serialized data on the stream.  Possible values:
+     * <dl>
+     * <dt><b>0</b> or not present on stream</dt>
+     * <dd>
+     * JDK 1.1.5 or earlier.
+     * </dd>
+     * <dt><b>1</b></dt>
+     * <dd>
+     * JDK 1.1.6 or later.  Writes a correct 'time' value
+     * as well as compatible values for other fields.  This is a
+     * transitional format.
+     * </dd>
+     * </dl>
+     * When streaming out this class, the most recent format
+     * and the highest allowable <code>serialVersionOnStream</code>
+     * is written.
+     * @serial
+     * @since JDK1.1.6
+     */
+    // private int             serialVersionOnStream = currentSerialVersion;
+
+    // Proclaim serialization compatibility with JDK 1.1
+    // static final long       serialVersionUID = -1807547505821590642L;
+    
+    // haven't been compatible for awhile, no longer try
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 6222646104888790989L;
+
+    /**
+     * Bitmask for internalSet() defining which fields may legally be set
+     * by subclasses.  Any attempt to set a field not in this bitmask
+     * results in an exception, because such fields must be set by the base
+     * class.
+     */
+    private transient int internalSetMask;
+
+    /**
+     * The Gregorian year, as computed by computeGregorianFields() and
+     * returned by getGregorianYear().
+     */
+    private transient int gregorianYear;
+
+    /**
+     * The Gregorian month, as computed by computeGregorianFields() and
+     * returned by getGregorianMonth().
+     */
+    private transient int gregorianMonth;
+
+    /**
+     * The Gregorian day of the year, as computed by
+     * computeGregorianFields() and returned by getGregorianDayOfYear().
+     */
+    private transient int gregorianDayOfYear;
+
+    /**
+     * The Gregorian day of the month, as computed by
+     * computeGregorianFields() and returned by getGregorianDayOfMonth().
+     */
+    private transient int gregorianDayOfMonth;
+
+    /**
+     * Constructs a Calendar with the default time zone
+     * and locale.
+     * @see     TimeZone#getDefault
+     * @stable ICU 2.0
+     */
+    protected Calendar()
+    {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param aLocale the locale for the week data
+     * @stable ICU 2.0
+     */
+    protected Calendar(TimeZone zone, Locale aLocale)
+    {
+        this(zone, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Constructs a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param locale the ulocale for the week data
+     * @stable ICU 3.2
+     */
+    protected Calendar(TimeZone zone, ULocale locale)
+    {
+        this.zone = zone;
+        setWeekData(locale);
+        initInternal();
+    }
+
+    private void initInternal()
+    {
+        // Allocate fields through the framework method.  Subclasses
+        // may override this to define additional fields.
+        fields = handleCreateFields();
+        ///CLOVER:OFF
+        // todo: fix, difficult to test without subclassing
+        if (fields == null || fields.length < BASE_FIELD_COUNT ||
+            fields.length > MAX_FIELD_COUNT) {
+            throw new IllegalStateException("Invalid fields[]");
+        }
+        ///CLOVER:ON
+        stamp = new int[fields.length];
+        int mask = (1 << ERA) |
+            (1 << YEAR) |
+            (1 << MONTH) |
+            (1 << DAY_OF_MONTH) |
+            (1 << DAY_OF_YEAR) |
+            (1 << EXTENDED_YEAR);
+        for (int i=BASE_FIELD_COUNT; i<fields.length; ++i) {
+            mask |= (1 << i);
+        }
+        internalSetMask = mask;
+    }
+
+    /**
+     * Gets a calendar using the default time zone and locale.
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance()
+    {
+        return getInstanceInternal(null, null);
+    }
+
+    /**
+     * Gets a calendar using the specified time zone and default locale.
+     * @param zone the time zone to use
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(TimeZone zone)
+    {
+        return getInstanceInternal(zone, null);
+    }
+
+    /**
+     * Gets a calendar using the default time zone and specified locale.
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(Locale aLocale)
+    {
+        return getInstanceInternal(null, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets a calendar using the default time zone and specified locale.  
+     * @param locale the ulocale for the week data
+     * @return a Calendar.
+     * @stable ICU 3.2
+     */
+    public static synchronized Calendar getInstance(ULocale locale)
+    {
+        return getInstanceInternal(null, locale);
+    }
+
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param aLocale the locale for the week data
+     * @return a Calendar.
+     * @stable ICU 2.0
+     */
+    public static synchronized Calendar getInstance(TimeZone zone,
+                                                    Locale aLocale) {
+        return getInstanceInternal(zone, ULocale.forLocale(aLocale));
+    }
+
+    /**
+     * Gets a calendar with the specified time zone and locale.
+     * @param zone the time zone to use
+     * @param locale the ulocale for the week data
+     * @return a Calendar.
+     * @stable ICU 3.2
+     */
+    public static synchronized Calendar getInstance(TimeZone zone,
+                                                    ULocale locale) {
+        return getInstanceInternal(zone, locale);
+    }
+
+    /*
+     * All getInstance implementations call this private method to create a new
+     * Calendar instance.
+     */ 
+    private static Calendar getInstanceInternal(TimeZone tz, ULocale locale) {
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        if (tz == null) {
+            tz = TimeZone.getDefault();
+        }
+        Calendar cal = getShim().createInstance(locale);
+        cal.setTimeZone(tz);
+        cal.setTimeInMillis(System.currentTimeMillis());
+        return cal;
+    }
+
+    private static final int BUDDHIST = 0;
+    private static final int CHINESE = 1;
+    private static final int COPTIC = 2;
+    private static final int ETHIOPIC = 3;
+    private static final int GREGORIAN = 4;
+    private static final int HEBREW = 5;
+    private static final int INDIAN = 6;
+    private static final int ISLAMIC = 7;
+    private static final int ISLAMIC_CIVIL = 8;
+    private static final int JAPANESE = 9;
+    private static final int TAIWAN = 10;
+    private static final int ETHIOPIC_AMETE_ALEM = 11;
+
+    private static final String[] calTypes = {
+        "buddhist", "chinese", "coptic", "ethiopic", "gregorian", "hebrew", 
+        "indian", "islamic", "islamic-civil", "japanese", "roc", "ethiopic-amete-alem"
+    };
+
+    private static int getCalendarType(ULocale l) {
+        String s = l.getKeywordValue("calendar");
+        if (s == null) {
+            l = ICUResourceBundle.getFunctionalEquivalent(
+                ICUResourceBundle.ICU_BASE_NAME, "calendar", "calendar", l, null, false);
+            s = l.getKeywordValue("calendar");
+        }
+        return getCalendarType(s);
+    }
+
+    private static int getCalendarType(String s) {
+        if (s != null) {
+            s = s.toLowerCase();
+            for (int i = 0; i < calTypes.length; ++i) {
+                if (s.equals(calTypes[i])) {
+                    return i;
+                }
+            }
+        }
+        return GREGORIAN;
+    }
+
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     * @stable ICU 2.0
+     */
+    public static Locale[] getAvailableLocales()
+    {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return getShim().getAvailableLocales();
+    }
+
+    /**
+     * Gets the list of locales for which Calendars are installed.
+     * @return the list of locales for which Calendars are installed.
+     * @draft ICU 3.2 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales()
+    {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return getShim().getAvailableULocales();
+    }
+
+    // ==== Factory Stuff ====
+    /**
+     * A CalendarFactory is used to register new calendar implementation.
+     * The factory should be able to create a calendar instance for the
+     * specified locale.
+     *
+     * @prototype
+     */
+    /* public */ static abstract class CalendarFactory {
+        public boolean visible() {
+            return true;
+        }
+
+        public abstract Set getSupportedLocaleNames();
+
+        public Calendar createCalendar(ULocale loc) {
+            return null;
+        }
+
+        protected CalendarFactory() {
+        }
+    }
+
+    //  shim so we can build without service code
+    static abstract class CalendarShim {
+        abstract Locale[] getAvailableLocales();
+        abstract ULocale[] getAvailableULocales();
+        abstract Object registerFactory(CalendarFactory factory);
+        abstract boolean unregister(Object k);
+        abstract Calendar createInstance(ULocale l);
+    }
+
+    private static CalendarShim shim;
+    private static CalendarShim getShim() {
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.util.CalendarServiceShim");
+                shim = (CalendarShim)cls.newInstance();
+            }
+            catch (MissingResourceException e) {
+                throw e;
+            }
+            catch (Exception e) {
+                throw new RuntimeException(e.getMessage());
+            }
+        }
+        return shim;
+    }
+
+    static Calendar createInstance(ULocale locale) {
+        int calType = getCalendarType(locale);
+        TimeZone zone = TimeZone.getDefault();
+
+        switch (calType) {
+        case BUDDHIST:
+            return new BuddhistCalendar(zone, locale);
+        case CHINESE:
+            return new ChineseCalendar(zone, locale);
+        case COPTIC:
+            return new CopticCalendar(zone, locale);
+        case ETHIOPIC:
+            return new EthiopicCalendar(zone, locale);
+        case ETHIOPIC_AMETE_ALEM:
+            EthiopicCalendar ethiopicAA = new EthiopicCalendar(zone, locale);
+            ethiopicAA.setAmeteAlemEra(true);
+            return ethiopicAA;
+        case GREGORIAN:
+            return new GregorianCalendar(zone, locale);
+        case HEBREW:
+            return new HebrewCalendar(zone, locale);
+        case ISLAMIC:
+        case ISLAMIC_CIVIL: {
+            IslamicCalendar result = new IslamicCalendar(zone, locale);
+            result.setCivil(calType == ISLAMIC_CIVIL);
+            return result;
+        }
+        case JAPANESE:
+            return new JapaneseCalendar(zone, locale);
+        case TAIWAN:
+            return new TaiwanCalendar(zone, locale);
+        case INDIAN:
+            return new IndianCalendar(zone, locale);
+        default:
+            throw new IllegalStateException();
+        }
+    }
+
+    ///CLOVER:OFF
+    /**
+     * Register a new CalendarFactory.  getInstance(TimeZone, ULocale, String) will
+     * try to locate a registered factories matching the factoryName.  Only registered
+     * factories will be found.
+     * @prototype
+     */
+    /* public */ static Object registerFactory(CalendarFactory factory) {
+        if (factory == null) {
+            throw new IllegalArgumentException("factory must not be null");
+        }
+        return getShim().registerFactory(factory);
+    }
+
+    /**
+     * Unregister the CalendarFactory associated with this key
+     * (obtained from register).
+     * @prototype
+     */
+    /* public */ static boolean unregister(Object registryKey) {
+        if (registryKey == null) {
+            throw new IllegalArgumentException("registryKey must not be null");
+        }
+
+        if (shim == null) {
+            return false;
+        }
+
+        return shim.unregister(registryKey);
+    }
+
+    ///CLOVER:ON
+    // ==== End of factory Stuff ====
+
+    /**
+     * Gets this Calendar's current time.
+     * @return the current time.
+     * @stable ICU 2.0
+     */
+    public final Date getTime() {
+        return new Date( getTimeInMillis() );
+    }
+
+    /**
+     * Sets this Calendar's current time with the given Date.
+     * <p>
+     * Note: Calling <code>setTime()</code> with
+     * <code>Date(Long.MAX_VALUE)</code> or <code>Date(Long.MIN_VALUE)</code>
+     * may yield incorrect field values from <code>get()</code>.
+     * @param date the given Date.
+     * @stable ICU 2.0
+     */
+    public final void setTime(Date date) {
+        setTimeInMillis( date.getTime() );
+    }
+
+    /**
+     * Gets this Calendar's current time as a long.
+     * @return the current time as UTC milliseconds from the epoch.
+     * @stable ICU 2.0
+     */
+    public long getTimeInMillis() {
+        if (!isTimeSet) updateTime();
+        return time;
+    }
+
+    /**
+     * Sets this Calendar's current time from the given long value.
+     * @param millis the new time in UTC milliseconds from the epoch.
+     * @stable ICU 2.0
+     */
+    public void setTimeInMillis( long millis ) {
+        if (millis > MAX_MILLIS) {
+            millis = MAX_MILLIS;
+        } else if (millis < MIN_MILLIS) {
+            millis = MIN_MILLIS;
+        }
+        time = millis;
+        areFieldsSet = areAllFieldsSet = false;
+        isTimeSet = areFieldsVirtuallySet = true;
+    }
+
+    /**
+     * Gets the value for a given time field.
+     * @param field the given time field.
+     * @return the value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int get(int field)
+    {
+        complete();
+        return fields[field];
+    }
+
+    /**
+     * Gets the value for a given time field.  This is an internal method
+     * for subclasses that does <em>not</em> trigger any calculations.
+     * @param field the given time field.
+     * @return the value for the given time field.
+     * @stable ICU 2.0
+     */
+    protected final int internalGet(int field)
+    {
+        return fields[field];
+    }
+
+    /**
+     * Get the value for a given time field, or return the given default
+     * value if the field is not set.  This is an internal method for
+     * subclasses that does <em>not</em> trigger any calculations.
+     * @param field the given time field.
+     * @param defaultValue value to return if field is not set
+     * @return the value for the given time field of defaultValue if the
+     * field is unset
+     * @stable ICU 2.0
+     */
+    protected final int internalGet(int field, int defaultValue) {
+        return (stamp[field] > UNSET) ? fields[field] : defaultValue;
+    }
+
+    /**
+     * Sets the time field with the given value.
+     * @param field the given time field.
+     * @param value the value to be set for the given time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int field, int value)
+    {
+        if (areFieldsVirtuallySet) {
+            computeFields();
+        }
+        fields[field] = value;
+        stamp[field] = nextStamp++;
+        isTimeSet = areFieldsSet = areFieldsVirtuallySet = false;
+    }
+
+    /**
+     * Sets the values for the fields year, month, and date.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+    }
+
+    /**
+     * Sets the values for the fields year, month, date, hour, and minute.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date, int hour, int minute)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+    }
+
+    /**
+     * Sets the values for the fields year, month, date, hour, minute, and second.
+     * Previous values of other fields are retained.  If this is not desired,
+     * call <code>clear</code> first.
+     * @param year the value used to set the YEAR time field.
+     * @param month the value used to set the MONTH time field.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field.
+     * @param hour the value used to set the HOUR_OF_DAY time field.
+     * @param minute the value used to set the MINUTE time field.
+     * @param second the value used to set the SECOND time field.
+     * @stable ICU 2.0
+     */
+    public final void set(int year, int month, int date, int hour, int minute,
+                          int second)
+    {
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+        set(SECOND, second);
+    }
+
+    /**
+     * Clears the values of all the time fields.
+     * @stable ICU 2.0
+     */
+    public final void clear()
+    {
+        for (int i=0; i<fields.length; ++i) {
+            fields[i] = stamp[i] = 0; // UNSET == 0
+        }
+        isTimeSet = areFieldsSet = areAllFieldsSet = areFieldsVirtuallySet = false;
+    }
+
+    /**
+     * Clears the value in the given time field.
+     * @param field the time field to be cleared.
+     * @stable ICU 2.0
+     */
+    public final void clear(int field)
+    {
+        if (areFieldsVirtuallySet) {
+            computeFields();
+        }
+        fields[field] = 0;
+        stamp[field] = UNSET;
+        isTimeSet = areFieldsSet = areAllFieldsSet = areFieldsVirtuallySet = false;
+    }
+
+    /**
+     * Determines if the given time field has a value set.
+     * @return true if the given time field has a value set; false otherwise.
+     * @stable ICU 2.0
+     */
+    public final boolean isSet(int field)
+    {
+        return areFieldsVirtuallySet || (stamp[field] != UNSET);
+    }
+
+    /**
+     * Fills in any unset fields in the time field list.
+     * @stable ICU 2.0
+     */
+    protected void complete()
+    {
+        if (!isTimeSet) updateTime();
+        if (!areFieldsSet) {
+            computeFields(); // fills in unset fields
+            areFieldsSet = true;
+            areAllFieldsSet = true;
+        }
+    }
+
+    /**
+     * Compares this calendar to the specified object.
+     * The result is <code>true</code> if and only if the argument is
+     * not <code>null</code> and is a <code>Calendar</code> object that
+     * represents the same calendar as this object.
+     * @param obj the object to compare with.
+     * @return <code>true</code> if the objects are the same;
+     * <code>false</code> otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (this.getClass() != obj.getClass()) {
+            return false;
+        }
+
+        Calendar that = (Calendar) obj;
+
+        return isEquivalentTo(that) &&
+            getTimeInMillis() == that.getTime().getTime();
+    }
+
+    /**
+     * Returns true if the given Calendar object is equivalent to this
+     * one.  An equivalent Calendar will behave exactly as this one
+     * does, but it may be set to a different time.  By contrast, for
+     * the equals() method to return true, the other Calendar must
+     * be set to the same time.
+     *
+     * @param other the Calendar to be compared with this Calendar
+     * @stable ICU 2.4
+     */
+    public boolean isEquivalentTo(Calendar other) {
+        return this.getClass() == other.getClass() &&
+            isLenient() == other.isLenient() &&
+            getFirstDayOfWeek() == other.getFirstDayOfWeek() &&
+            getMinimalDaysInFirstWeek() == other.getMinimalDaysInFirstWeek() &&
+            getTimeZone().equals(other.getTimeZone());
+    }
+
+    /**
+     * Returns a hash code for this calendar.
+     * @return a hash code value for this object.
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        /* Don't include the time because (a) we don't want the hash value to
+         * move around just because a calendar is set to different times, and
+         * (b) we don't want to trigger a time computation just to get a hash.
+         * Note that it is not necessary for unequal objects to always have
+         * unequal hashes, but equal objects must have equal hashes.  */
+        return (lenient ? 1 : 0)
+            | (firstDayOfWeek << 1)
+            | (minimalDaysInFirstWeek << 4)
+            | (zone.hashCode() << 7);
+    }
+
+    /**
+     * Return the difference in milliseconds between the moment this
+     * calendar is set to and the moment the given calendar or Date object
+     * is set to.
+     */
+    private long compare(Object that) {
+        long thatMs;
+        if (that instanceof Calendar) {
+            thatMs = ((Calendar)that).getTimeInMillis();
+        } else if (that instanceof Date) {
+            thatMs = ((Date)that).getTime();
+        } else {
+            throw new IllegalArgumentException(that + "is not a Calendar or Date");
+        }
+        return getTimeInMillis() - thatMs;
+    }
+
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is before
+     * the time of Calendar when; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean before(Object when) {
+        return compare(when) < 0;
+    }
+
+    /**
+     * Compares the time field records.
+     * Equivalent to comparing result of conversion to UTC.
+     * @param when the Calendar to be compared with this Calendar.
+     * @return true if the current time of this Calendar is after
+     * the time of Calendar when; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean after(Object when) {
+        return compare(when) > 0;
+    }
+
+    /**
+     * Return the maximum value that this field could have, given the
+     * current date.  For example, with the Gregorian date February 3, 1997
+     * and the {@link #DAY_OF_MONTH DAY_OF_MONTH} field, the actual maximum
+     * is 28; for February 3, 1996 it is 29.
+     *
+     * <p>The actual maximum computation ignores smaller fields and the
+     * current value of like-sized fields.  For example, the actual maximum
+     * of the DAY_OF_YEAR or MONTH depends only on the year and supra-year
+     * fields.  The actual maximum of the DAY_OF_MONTH depends, in
+     * addition, on the MONTH field and any other fields at that
+     * granularity (such as ChineseCalendar.IS_LEAP_MONTH).  The
+     * DAY_OF_WEEK_IN_MONTH field does not depend on the current
+     * DAY_OF_WEEK; it returns the maximum for any day of week in the
+     * current month.  Likewise for the WEEK_OF_MONTH and WEEK_OF_YEAR
+     * fields.
+     *
+     * @param field the field whose maximum is desired
+     * @return the maximum of the given field for the current date of this calendar
+     * @see #getMaximum
+     * @see #getLeastMaximum
+     * @stable ICU 2.0
+     */
+    public int getActualMaximum(int field) {
+        int result;
+
+        switch (field) {
+        case DAY_OF_MONTH:
+            {
+                Calendar cal = (Calendar) clone();
+                cal.prepareGetActual(field, false);
+                result = handleGetMonthLength(cal.get(EXTENDED_YEAR), cal.get(MONTH));
+            }
+            break;
+
+        case DAY_OF_YEAR:
+            {
+                Calendar cal = (Calendar) clone();
+                cal.prepareGetActual(field, false);
+                result = handleGetYearLength(cal.get(EXTENDED_YEAR));
+            }
+            break;
+
+        case ERA:
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            // These fields all have fixed minima/maxima
+            result = getMaximum(field);
+            break;
+
+        default:
+            // For all other fields, do it the hard way....
+            result = getActualHelper(field, getLeastMaximum(field), getMaximum(field));
+            break;
+        }
+        return result;
+    }
+
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For most fields, this is the same as {@link #getMinimum getMinimum}
+     * and {@link #getGreatestMinimum getGreatestMinimum}.  However, some fields,
+     * especially those related to week number, are more complicated.
+     * <p>
+     * For example, assume {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     * returns 4 and {@link #getFirstDayOfWeek getFirstDayOfWeek} returns SUNDAY.
+     * If the first day of the month is Sunday, Monday, Tuesday, or Wednesday
+     * there will be four or more days in the first week, so it will be week number 1,
+     * and <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 1.  However,
+     * if the first of the month is a Thursday, Friday, or Saturday, there are
+     * <em>not</em> four days in that week, so it is week number 0, and
+     * <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 0.
+     * <p>
+     * @param field the field whose actual minimum value is desired.
+     * @return the minimum of the given field for the current date of this calendar
+     *
+     * @see #getMinimum
+     * @see #getGreatestMinimum
+     * @stable ICU 2.0
+     */
+    public int getActualMinimum(int field) {
+        int result;
+
+        switch (field) {
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            // These fields all have fixed minima/maxima
+            result = getMinimum(field);
+            break;
+
+        default:
+            // For all other fields, do it the hard way....
+            result = getActualHelper(field, getGreatestMinimum(field), getMinimum(field));
+            break;
+        }
+        return result;
+    }
+
+    /**
+     * Prepare this calendar for computing the actual minimum or maximum.
+     * This method modifies this calendar's fields; it is called on a
+     * temporary calendar.
+     *
+     * <p>Rationale: The semantics of getActualXxx() is to return the
+     * maximum or minimum value that the given field can take, taking into
+     * account other relevant fields.  In general these other fields are
+     * larger fields.  For example, when computing the actual maximum
+     * DAY_OF_MONTH, the current value of DAY_OF_MONTH itself is ignored,
+     * as is the value of any field smaller.
+     *
+     * <p>The time fields all have fixed minima and maxima, so we don't
+     * need to worry about them.  This also lets us set the
+     * MILLISECONDS_IN_DAY to zero to erase any effects the time fields
+     * might have when computing date fields.
+     *
+     * <p>DAY_OF_WEEK is adjusted specially for the WEEK_OF_MONTH and
+     * WEEK_OF_YEAR fields to ensure that they are computed correctly.
+     * @stable ICU 2.0
+     */
+    protected void prepareGetActual(int field, boolean isMinimum) {
+        set(MILLISECONDS_IN_DAY, 0);
+
+        switch (field) {
+        case YEAR:
+        case EXTENDED_YEAR:
+            set(DAY_OF_YEAR, getGreatestMinimum(DAY_OF_YEAR));
+            break;
+
+        case YEAR_WOY:
+            set(WEEK_OF_YEAR, getGreatestMinimum(WEEK_OF_YEAR));
+            break;
+
+        case MONTH:
+            set(DAY_OF_MONTH, getGreatestMinimum(DAY_OF_MONTH));
+            break;
+
+        case DAY_OF_WEEK_IN_MONTH:
+            // For dowim, the maximum occurs for the DOW of the first of the
+            // month.
+            set(DAY_OF_MONTH, 1);
+            set(DAY_OF_WEEK, get(DAY_OF_WEEK)); // Make this user set
+            break;
+
+        case WEEK_OF_MONTH:
+        case WEEK_OF_YEAR:
+            // If we're counting weeks, set the day of the week to either the
+            // first or last localized DOW.  We know the last week of a month
+            // or year will contain the first day of the week, and that the
+            // first week will contain the last DOW.
+            {
+                int dow = firstDayOfWeek;
+                if (isMinimum) {
+                    dow = (dow + 6) % 7; // set to last DOW
+                    if (dow < SUNDAY) {
+                        dow += 7;
+                    }
+                }
+                set(DAY_OF_WEEK, dow);
+            }
+            break;
+        }
+
+        // Do this last to give it the newest time stamp
+        set(field, getGreatestMinimum(field));
+    }
+
+    private int getActualHelper(int field, int startValue, int endValue) {
+
+        if (startValue == endValue) {
+            // if we know that the maximum value is always the same, just return it
+            return startValue;
+        }
+
+        final int delta = (endValue > startValue) ? 1 : -1;
+
+        // clone the calendar so we don't mess with the real one, and set it to
+        // accept anything for the field values
+        Calendar work = (Calendar) clone();
+        work.setLenient(true);
+        work.prepareGetActual(field, delta < 0);
+
+        // now try each value from the start to the end one by one until
+        // we get a value that normalizes to another value.  The last value that
+        // normalizes to itself is the actual maximum for the current date
+
+        work.set(field, startValue);
+        // prepareGetActual sets the first day of week in the same week with
+        // the first day of a month.  Unlike WEEK_OF_YEAR, week number for the
+        // which week contains days from both previous and current month is
+        // not unique.  For example, last several days in the previous month
+        // is week 5, and the rest of week is week 1.
+        if (work.get(field) != startValue
+                && field != WEEK_OF_MONTH && delta > 0) {
+            return startValue;
+        }
+        int result = startValue;
+        do {
+            startValue += delta;
+            work.add(field, delta);
+            if (work.get(field) != startValue) {
+                break;
+            }
+            result = startValue;
+        } while (startValue != endValue);
+
+        return result;
+
+    }
+
+    /**
+     * Rolls (up/down) a single unit of time on the given field.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling. For
+     * example, to roll the current date up by one day, you can call:
+     * <p>
+     * <code>roll({@link #DATE}, true)</code>
+     * <p>
+     * When rolling on the {@link #YEAR} field, it will roll the year
+     * value in the range between 1 and the value returned by calling
+     * {@link #getMaximum getMaximum}({@link #YEAR}).
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the <code>MONTH</code> field
+     * for the Gregorian date 1/31/96 upward, the <code>DAY_OF_MONTH</code> field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * <b>Note:</b> Calling <tt>roll(field, true)</tt> N times is <em>not</em>
+     * necessarily equivalent to calling <tt>roll(field, N)</tt>.  For example,
+     * imagine that you start with the date Gregorian date January 31, 1995.  If you call
+     * <tt>roll(Calendar.MONTH, 2)</tt>, the result will be March 31, 1995.
+     * But if you call <tt>roll(Calendar.MONTH, true)</tt>, the result will be
+     * February 28, 1995.  Calling it one more time will give March 28, 1995, which
+     * is usually not the desired result.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * @param field the calendar field to roll.
+     *
+     * @param up    indicates if the value of the specified time field is to be
+     *              rolled up or rolled down. Use <code>true</code> if rolling up,
+     *              <code>false</code> otherwise.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @see #add
+     * @stable ICU 2.0
+     */
+    public final void roll(int field, boolean up)
+    {
+        roll(field, up ? +1 : -1);
+    }
+
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Gregorian calendar set to 4/25/96 will result in the date 4/5/96.
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96 by +1, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>roll</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and {@link #getActualMaximum getActualMaximum}.
+     * For most such fields, simple addition, subtraction, and modulus operations
+     * are sufficient to perform the roll.  For week-related fields,
+     * the results of {@link #getFirstDayOfWeek getFirstDayOfWeek} and
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} are also necessary.
+     * Subclasses can override these two methods if their values differ from the defaults.
+     * <p>
+     * Subclasses that have fields for which the assumption of continuity breaks
+     * down must overide <code>roll</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The
+     * {@link HebrewCalendar#roll HebrewCalendar.roll} method takes this into account,
+     * so that rolling the month of Shevat by one gives the proper result (Adar) in a
+     * non-leap year.
+     * <p>
+     * @param field     the calendar field to roll.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, boolean)
+     * @see #add
+     * @stable ICU 2.0
+     */
+    public void roll(int field, int amount) {
+
+        if (amount == 0) {
+            return; // Nothing to do
+        }
+
+        complete();
+
+        switch (field) {
+        case DAY_OF_MONTH:
+        case AM_PM:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case MILLISECONDS_IN_DAY:
+        case ERA:
+            // These are the standard roll instructions.  These work for all
+            // simple cases, that is, cases in which the limits are fixed, such
+            // as the hour, the day of the month, and the era.
+            {
+                int min = getActualMinimum(field);
+                int max = getActualMaximum(field);
+                int gap = max - min + 1;
+
+                int value = internalGet(field) + amount;
+                value = (value - min) % gap;
+                if (value < 0) {
+                    value += gap;
+                }
+                value += min;
+
+                set(field, value);
+                return;
+            }
+
+        case HOUR:
+        case HOUR_OF_DAY:
+            // Rolling the hour is difficult on the ONSET and CEASE days of
+            // daylight savings.  For example, if the change occurs at
+            // 2 AM, we have the following progression:
+            // ONSET: 12 Std -> 1 Std -> 3 Dst -> 4 Dst
+            // CEASE: 12 Dst -> 1 Dst -> 1 Std -> 2 Std
+            // To get around this problem we don't use fields; we manipulate
+            // the time in millis directly.
+            {
+                // Assume min == 0 in calculations below
+                long start = getTimeInMillis();
+                int oldHour = internalGet(field);
+                int max = getMaximum(field);
+                int newHour = (oldHour + amount) % (max + 1);
+                if (newHour < 0) {
+                    newHour += max + 1;
+                }
+                setTimeInMillis(start + ONE_HOUR * (newHour - oldHour));
+                return;
+            }
+
+        case MONTH:
+            // Rolling the month involves both pinning the final value
+            // and adjusting the DAY_OF_MONTH if necessary.  We only adjust the
+            // DAY_OF_MONTH if, after updating the MONTH field, it is illegal.
+            // E.g., <jan31>.roll(MONTH, 1) -> <feb28> or <feb29>.
+            {
+                int max = getActualMaximum(MONTH);
+                int mon = (internalGet(MONTH) + amount) % (max+1);
+
+                if (mon < 0) {
+                    mon += (max + 1);
+                }
+                set(MONTH, mon);
+
+                // Keep the day of month in range.  We don't want to spill over
+                // into the next month; e.g., we don't want jan31 + 1 mo -> feb31 ->
+                // mar3.
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+
+        case YEAR:
+        case YEAR_WOY:
+        case EXTENDED_YEAR:
+            // Rolling the year can involve pinning the DAY_OF_MONTH.
+            set(field, internalGet(field) + amount);
+            pinField(MONTH);
+            pinField(DAY_OF_MONTH);
+            return;
+
+        case WEEK_OF_MONTH:
+            {
+                // This is tricky, because during the roll we may have to shift
+                // to a different day of the week.  For example:
+
+                //    s  m  t  w  r  f  s
+                //          1  2  3  4  5
+                //    6  7  8  9 10 11 12
+
+                // When rolling from the 6th or 7th back one week, we go to the
+                // 1st (assuming that the first partial week counts).  The same
+                // thing happens at the end of the month.
+
+                // The other tricky thing is that we have to figure out whether
+                // the first partial week actually counts or not, based on the
+                // minimal first days in the week.  And we have to use the
+                // correct first day of the week to delineate the week
+                // boundaries.
+
+                // Here's our algorithm.  First, we find the real boundaries of
+                // the month.  Then we discard the first partial week if it
+                // doesn't count in this locale.  Then we fill in the ends with
+                // phantom days, so that the first partial week and the last
+                // partial week are full weeks.  We then have a nice square
+                // block of weeks.  We do the usual rolling within this block,
+                // as is done elsewhere in this method.  If we wind up on one of
+                // the phantom days that we added, we recognize this and pin to
+                // the first or the last day of the month.  Easy, eh?
+
+                // Normalize the DAY_OF_WEEK so that 0 is the first day of the week
+                // in this locale.  We have dow in 0..6.
+                int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (dow < 0) dow += 7;
+
+                // Find the day of the week (normalized for locale) for the first
+                // of the month.
+                int fdm = (dow - internalGet(DAY_OF_MONTH) + 1) % 7;
+                if (fdm < 0) fdm += 7;
+
+                // Get the first day of the first full week of the month,
+                // including phantom days, if any.  Figure out if the first week
+                // counts or not; if it counts, then fill in phantom days.  If
+                // not, advance to the first real full week (skip the partial week).
+                int start;
+                if ((7 - fdm) < getMinimalDaysInFirstWeek())
+                    start = 8 - fdm; // Skip the first partial week
+                else
+                    start = 1 - fdm; // This may be zero or negative
+
+                // Get the day of the week (normalized for locale) for the last
+                // day of the month.
+                int monthLen = getActualMaximum(DAY_OF_MONTH);
+                int ldm = (monthLen - internalGet(DAY_OF_MONTH) + dow) % 7;
+                // We know monthLen >= DAY_OF_MONTH so we skip the += 7 step here.
+
+                // Get the limit day for the blocked-off rectangular month; that
+                // is, the day which is one past the last day of the month,
+                // after the month has already been filled in with phantom days
+                // to fill out the last week.  This day has a normalized DOW of 0.
+                int limit = monthLen + 7 - ldm;
+
+                // Now roll between start and (limit - 1).
+                int gap = limit - start;
+                int day_of_month = (internalGet(DAY_OF_MONTH) + amount*7 -
+                                    start) % gap;
+                if (day_of_month < 0) day_of_month += gap;
+                day_of_month += start;
+
+                // Finally, pin to the real start and end of the month.
+                if (day_of_month < 1) day_of_month = 1;
+                if (day_of_month > monthLen) day_of_month = monthLen;
+
+                // Set the DAY_OF_MONTH.  We rely on the fact that this field
+                // takes precedence over everything else (since all other fields
+                // are also set at this point).  If this fact changes (if the
+                // disambiguation algorithm changes) then we will have to unset
+                // the appropriate fields here so that DAY_OF_MONTH is attended
+                // to.
+                set(DAY_OF_MONTH, day_of_month);
+                return;
+            }
+        case WEEK_OF_YEAR:
+            {
+                // This follows the outline of WEEK_OF_MONTH, except it applies
+                // to the whole year.  Please see the comment for WEEK_OF_MONTH
+                // for general notes.
+
+                // Normalize the DAY_OF_WEEK so that 0 is the first day of the week
+                // in this locale.  We have dow in 0..6.
+                int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (dow < 0) dow += 7;
+
+                // Find the day of the week (normalized for locale) for the first
+                // of the year.
+                int fdy = (dow - internalGet(DAY_OF_YEAR) + 1) % 7;
+                if (fdy < 0) fdy += 7;
+
+                // Get the first day of the first full week of the year,
+                // including phantom days, if any.  Figure out if the first week
+                // counts or not; if it counts, then fill in phantom days.  If
+                // not, advance to the first real full week (skip the partial week).
+                int start;
+                if ((7 - fdy) < getMinimalDaysInFirstWeek())
+                    start = 8 - fdy; // Skip the first partial week
+                else
+                    start = 1 - fdy; // This may be zero or negative
+
+                // Get the day of the week (normalized for locale) for the last
+                // day of the year.
+                int yearLen = getActualMaximum(DAY_OF_YEAR);
+                int ldy = (yearLen - internalGet(DAY_OF_YEAR) + dow) % 7;
+                // We know yearLen >= DAY_OF_YEAR so we skip the += 7 step here.
+
+                // Get the limit day for the blocked-off rectangular year; that
+                // is, the day which is one past the last day of the year,
+                // after the year has already been filled in with phantom days
+                // to fill out the last week.  This day has a normalized DOW of 0.
+                int limit = yearLen + 7 - ldy;
+
+                // Now roll between start and (limit - 1).
+                int gap = limit - start;
+                int day_of_year = (internalGet(DAY_OF_YEAR) + amount*7 -
+                                    start) % gap;
+                if (day_of_year < 0) day_of_year += gap;
+                day_of_year += start;
+
+                // Finally, pin to the real start and end of the month.
+                if (day_of_year < 1) day_of_year = 1;
+                if (day_of_year > yearLen) day_of_year = yearLen;
+
+                // Make sure that the year and day of year are attended to by
+                // clearing other fields which would normally take precedence.
+                // If the disambiguation algorithm is changed, this section will
+                // have to be updated as well.
+                set(DAY_OF_YEAR, day_of_year);
+                clear(MONTH);
+                return;
+            }
+        case DAY_OF_YEAR:
+            {
+                // Roll the day of year using millis.  Compute the millis for
+                // the start of the year, and get the length of the year.
+                long delta = amount * ONE_DAY; // Scale up from days to millis
+                long min2 = time - (internalGet(DAY_OF_YEAR) - 1) * ONE_DAY;
+                int yearLength = getActualMaximum(DAY_OF_YEAR);
+                time = (time + delta - min2) % (yearLength*ONE_DAY);
+                if (time < 0) time += yearLength*ONE_DAY;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case DAY_OF_WEEK:
+        case DOW_LOCAL:
+            {
+                // Roll the day of week using millis.  Compute the millis for
+                // the start of the week, using the first day of week setting.
+                // Restrict the millis to [start, start+7days).
+                long delta = amount * ONE_DAY; // Scale up from days to millis
+                // Compute the number of days before the current day in this
+                // week.  This will be a value 0..6.
+                int leadDays = internalGet(field);
+                leadDays -= (field == DAY_OF_WEEK) ? getFirstDayOfWeek() : 1;
+                if (leadDays < 0) leadDays += 7;
+                long min2 = time - leadDays * ONE_DAY;
+                time = (time + delta - min2) % ONE_WEEK;
+                if (time < 0) time += ONE_WEEK;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case DAY_OF_WEEK_IN_MONTH:
+            {
+                // Roll the day of week in the month using millis.  Determine
+                // the first day of the week in the month, and then the last,
+                // and then roll within that range.
+                long delta = amount * ONE_WEEK; // Scale up from weeks to millis
+                // Find the number of same days of the week before this one
+                // in this month.
+                int preWeeks = (internalGet(DAY_OF_MONTH) - 1) / 7;
+                // Find the number of same days of the week after this one
+                // in this month.
+                int postWeeks = (getActualMaximum(DAY_OF_MONTH) -
+                                 internalGet(DAY_OF_MONTH)) / 7;
+                // From these compute the min and gap millis for rolling.
+                long min2 = time - preWeeks * ONE_WEEK;
+                long gap2 = ONE_WEEK * (preWeeks + postWeeks + 1); // Must add 1!
+                // Roll within this range
+                time = (time + delta - min2) % gap2;
+                if (time < 0) time += gap2;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case JULIAN_DAY:
+            set(field, internalGet(field) + amount);
+            return;
+        default:
+            // Other fields cannot be rolled by this method
+            throw new IllegalArgumentException("Calendar.roll(" + fieldName(field) +
+                                               ") not supported");
+        }
+    }
+
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>.
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>com.ibm.icu.util.Calendar</code> implementation of this method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>add</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>add</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum}.
+     * For such fields, simple arithmetic operations are sufficient to
+     * perform the add.
+     * <p>
+     * Subclasses that have fields for which this assumption of continuity breaks
+     * down must overide <code>add</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The
+     * {@link HebrewCalendar#add HebrewCalendar.add} method takes this into account,
+     * so that adding one month
+     * to a date in Shevat gives the proper result (Adar) in a non-leap year.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @stable ICU 2.0
+     */
+    public void add(int field, int amount) {
+
+        if (amount == 0) {
+            return;   // Do nothing!
+        }
+
+        // We handle most fields in the same way.  The algorithm is to add
+        // a computed amount of millis to the current millis.  The only
+        // wrinkle is with DST -- for some fields, like the DAY_OF_MONTH,
+        // we don't want the HOUR to shift due to changes in DST.  If the
+        // result of the add operation is to move from DST to Standard, or
+        // vice versa, we need to adjust by an hour forward or back,
+        // respectively.  For such fields we set keepHourInvariant to true.
+
+        // We only adjust the DST for fields larger than an hour.  For
+        // fields smaller than an hour, we cannot adjust for DST without
+        // causing problems.  for instance, if you add one hour to April 5,
+        // 1998, 1:00 AM, in PST, the time becomes "2:00 AM PDT" (an
+        // illegal value), but then the adjustment sees the change and
+        // compensates by subtracting an hour.  As a result the time
+        // doesn't advance at all.
+
+        // For some fields larger than a day, such as a MONTH, we pin the
+        // DAY_OF_MONTH.  This allows <March 31>.add(MONTH, 1) to be
+        // <April 30>, rather than <April 31> => <May 1>.
+
+        long delta = amount; // delta in ms
+        boolean keepHourInvariant = true;
+
+        switch (field) {
+        case ERA:
+            set(field, get(field) + amount);
+            pinField(ERA);
+            return;
+
+        case YEAR:
+        case EXTENDED_YEAR:
+        case YEAR_WOY:
+        case MONTH:
+            set(field, get(field) + amount);
+            pinField(DAY_OF_MONTH);
+            return;
+
+        case WEEK_OF_YEAR:
+        case WEEK_OF_MONTH:
+        case DAY_OF_WEEK_IN_MONTH:
+            delta *= ONE_WEEK;
+            break;
+
+        case AM_PM:
+            delta *= 12 * ONE_HOUR;
+            break;
+
+        case DAY_OF_MONTH:
+        case DAY_OF_YEAR:
+        case DAY_OF_WEEK:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+            delta *= ONE_DAY;
+            break;
+
+        case HOUR_OF_DAY:
+        case HOUR:
+            delta *= ONE_HOUR;
+            keepHourInvariant = false;
+            break;
+
+        case MINUTE:
+            delta *= ONE_MINUTE;
+            keepHourInvariant = false;
+            break;
+
+        case SECOND:
+            delta *= ONE_SECOND;
+            keepHourInvariant = false;
+            break;
+
+        case MILLISECOND:
+        case MILLISECONDS_IN_DAY:
+            keepHourInvariant = false;
+            break;
+
+        default:
+            throw new IllegalArgumentException("Calendar.add(" + fieldName(field) +
+                                               ") not supported");
+        }
+
+        // In order to keep the hour invariant (for fields where this is
+        // appropriate), record the DST_OFFSET before and after the add()
+        // operation.  If it has changed, then adjust the millis to
+        // compensate.
+        int dst = 0;
+        int hour = 0;
+        if (keepHourInvariant) {
+            dst = get(DST_OFFSET);
+            hour = internalGet(HOUR_OF_DAY);
+        }
+
+        setTimeInMillis(getTimeInMillis() + delta);
+
+        if (keepHourInvariant) {
+            dst -= get(DST_OFFSET);
+            if (dst != 0) {
+                // We have done an hour-invariant adjustment but the
+                // DST offset has altered.  We adjust millis to keep
+                // the hour constant.  In cases such as midnight after
+                // a DST change which occurs at midnight, there is the
+                // danger of adjusting into a different day.  To avoid
+                // this we make the adjustment only if it actually
+                // maintains the hour.
+                long t = time;
+                setTimeInMillis(time + dst);
+                if (get(HOUR_OF_DAY) != hour) {
+                    setTimeInMillis(t);
+                }
+            }
+        }
+    }
+
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     * @stable ICU 2.0
+     */
+    public String getDisplayName(Locale loc) {
+        return this.getClass().getName();
+    }
+
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     * @stable ICU 3.2
+     */
+    public String getDisplayName(ULocale loc) {
+        return this.getClass().getName();
+    }
+
+    /**
+     * Compares the times (in millis) represented by two
+     * <code>Calendar</code> objects.
+     *
+     * @param that the <code>Calendar</code> to compare to this.
+     * @return <code>0</code> if the time represented by 
+     * this <code>Calendar</code> is equal to the time represented 
+     * by that <code>Calendar</code>, a value less than 
+     * <code>0</code> if the time represented by this is before
+     * the time represented by that, and a value greater than
+     * <code>0</code> if the time represented by this
+     * is after the time represented by that.
+     * @throws NullPointerException if that 
+     * <code>Calendar</code> is null.
+     * @throws IllegalArgumentException if the time of that 
+     * <code>Calendar</code> can't be obtained because of invalid
+     * calendar values.
+     * @stable ICU 3.4
+     */
+    public int compareTo(Calendar that) {
+        long v = getTimeInMillis() - that.getTimeInMillis();
+        return v < 0 ? -1 : (v > 0 ? 1 : 0);
+    }
+
+    /**
+     * Implement comparable API as a convenience override of
+     * {@link #compareTo(Calendar)}.
+     * @stable ICU 3.4
+     */
+    public int compareTo(Object that) {
+        return compareTo((Calendar)that);
+    }
+
+    //-------------------------------------------------------------------------
+    // Interface for creating custon DateFormats for different types of Calendars
+    //-------------------------------------------------------------------------
+
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * Subclasses wishing to specialize this behavior should override
+     * <code>handleGetDateFormat()</code>
+     * @see #handleGetDateFormat
+     * @stable ICU 2.0
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, Locale loc) {
+        return formatHelper(this, ULocale.forLocale(loc), dateStyle, timeStyle);
+    }
+
+    /**
+     * Return a <code>DateFormat</code> appropriate to this calendar.
+     * Subclasses wishing to specialize this behavior should override
+     * <code>handleGetDateFormat()</code>
+     * @see #handleGetDateFormat
+     * @stable ICU 3.2
+     */
+    public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, ULocale loc) {
+        return formatHelper(this, loc, dateStyle, timeStyle);
+    }
+
+    /**
+     * Create a <code>DateFormat</code> appropriate to this calendar.
+     * This is a framework method for subclasses to override.  This method
+     * is responsible for creating the calendar-specific DateFormat and
+     * DateFormatSymbols objects as needed.
+     * @param pattern the pattern, specific to the <code>DateFormat</code>
+     * subclass
+     * @param locale the locale for which the symbols should be drawn
+     * @return a <code>DateFormat</code> appropriate to this calendar
+     * @stable ICU 2.0
+     */
+    protected DateFormat handleGetDateFormat(String pattern, Locale locale) {
+        return handleGetDateFormat(pattern, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Create a <code>DateFormat</code> appropriate to this calendar.
+     * This is a framework method for subclasses to override.  This method
+     * is responsible for creating the calendar-specific DateFormat and
+     * DateFormatSymbols objects as needed.
+     * @param pattern the pattern, specific to the <code>DateFormat</code>
+     * subclass
+     * @param locale the locale for which the symbols should be drawn
+     * @return a <code>DateFormat</code> appropriate to this calendar
+     * @draft ICU 3.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat handleGetDateFormat(String pattern, ULocale locale) {
+        FormatConfiguration fmtConfig = new FormatConfiguration();
+        fmtConfig.pattern = pattern;
+        fmtConfig.formatData = new DateFormatSymbols(this, locale);
+        fmtConfig.loc = locale;
+        fmtConfig.cal = this;
+
+        return SimpleDateFormat.getInstance(fmtConfig);
+    }
+
+    // date format pattern cache
+    private static final ICUCache PATTERN_CACHE = new SimpleCache();
+    // final fallback patterns
+    private static final String[] DEFAULT_PATTERNS = {
+        "HH:mm:ss z",
+        "HH:mm:ss z",
+        "HH:mm:ss",
+        "HH:mm",
+        "EEEE, yyyy MMMM dd",
+        "yyyy MMMM d",
+        "yyyy MMM d",
+        "yy/MM/dd",
+        "{1} {0}"
+    };
+
+    static private DateFormat formatHelper(Calendar cal, ULocale loc, int dateStyle, int timeStyle) {
+        // First, try to get a pattern from PATTERN_CACHE
+        String key = loc.toString() + cal.getType();
+        String[] patterns = (String[])PATTERN_CACHE.get(key);
+        if (patterns == null) {
+            // Cache missed.  Get one from bundle
+            try {
+                CalendarData calData = new CalendarData(loc, cal.getType());
+                patterns = calData.get("DateTimePatterns").getStringArray();
+            } catch (MissingResourceException e) {
+                patterns = DEFAULT_PATTERNS;
+            }
+            PATTERN_CACHE.put(key, patterns);
+        }
+        // Resolve a pattern for the date/time style
+        String pattern = null;
+        if ((timeStyle >= 0) && (dateStyle >= 0)) {
+            pattern = MessageFormat.format(patterns[8],
+                    new Object[] {patterns[timeStyle], patterns[dateStyle + 4]});
+        } else if (timeStyle >= 0) {
+            pattern = patterns[timeStyle];
+        } else if (dateStyle >= 0) {
+            pattern = patterns[dateStyle + 4];
+        } else {
+            throw new IllegalArgumentException("No date or time style specified");
+        }
+        DateFormat result = cal.handleGetDateFormat(pattern, loc);
+        result.setCalendar(cal);
+        return result;
+    }
+
+    /**
+     * An instance of FormatConfiguration represents calendar specific
+     * date format configuration and used for calling the ICU private
+     * SimpleDateFormat factory method.
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static class FormatConfiguration {
+        private String pattern;
+        private DateFormatSymbols formatData;
+        private Calendar cal;
+        private ULocale loc;
+
+        // Only Calendar can instantiate
+        private FormatConfiguration() {
+        }
+
+        /**
+         * Gets the pattern string
+         * @return the format pattern string
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public String getPatternString() {
+            return pattern;
+        }
+
+        /**
+         * Gets the calendar
+         * @return the calendar
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public Calendar getCalendar() {
+            return cal;
+        }
+
+        /**
+         * Gets the locale
+         * @return the locale
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public ULocale getLocale() {
+            return loc;
+        }
+
+        /**
+         * Gets the format symbols
+         * @return the format symbols
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public DateFormatSymbols getDateFormatSymbols() {
+            return formatData;
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    // Protected utility methods for use by subclasses.  These are very handy
+    // for implementing add, roll, and computeFields.
+    //-------------------------------------------------------------------------
+
+    /**
+     * Adjust the specified field so that it is within
+     * the allowable range for the date to which this calendar is set.
+     * For example, in a Gregorian calendar pinning the {@link #DAY_OF_MONTH DAY_OF_MONTH}
+     * field for a calendar set to April 31 would cause it to be set
+     * to April 30.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This utility method is intended for use by subclasses that need to implement
+     * their own overrides of {@link #roll roll} and {@link #add add}.
+     * <p>
+     * <b>Note:</b>
+     * <code>pinField</code> is implemented in terms of
+     * {@link #getActualMinimum getActualMinimum}
+     * and {@link #getActualMaximum getActualMaximum}.  If either of those methods uses
+     * a slow, iterative algorithm for a particular field, it would be
+     * unwise to attempt to call <code>pinField</code> for that field.  If you
+     * really do need to do so, you should override this method to do
+     * something more efficient for that field.
+     * <p>
+     * @param field The calendar field whose value should be pinned.
+     *
+     * @see #getActualMinimum
+     * @see #getActualMaximum
+     * @stable ICU 2.0
+     */
+    protected void pinField(int field) {
+        int max = getActualMaximum(field);
+        int min = getActualMinimum(field);
+
+        if (fields[field] > max) {
+            set(field, max);
+        } else if (fields[field] < min) {
+            set(field, min);
+        }
+    }
+
+    /**
+     * Return the week number of a day, within a period. This may be the week number in
+     * a year or the week number in a month. Usually this will be a value >= 1, but if
+     * some initial days of the period are excluded from week 1, because
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} is > 1, then
+     * the week number will be zero for those
+     * initial days. This method requires the day number and day of week for some
+     * known date in the period in order to determine the day of week
+     * on the desired day.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This method is intended for use by subclasses in implementing their
+     * {@link #computeTime computeTime} and/or {@link #computeFields computeFields} methods.
+     * It is often useful in {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum} as well.
+     * <p>
+     * This variant is handy for computing the week number of some other
+     * day of a period (often the first or last day of the period) when its day
+     * of the week is not known but the day number and day of week for some other
+     * day in the period (e.g. the current date) <em>is</em> known.
+     * <p>
+     * @param desiredDay    The {@link #DAY_OF_YEAR DAY_OF_YEAR} or
+     *              {@link #DAY_OF_MONTH DAY_OF_MONTH} whose week number is desired.
+     *              Should be 1 for the first day of the period.
+     *
+     * @param dayOfPeriod   The {@link #DAY_OF_YEAR DAY_OF_YEAR}
+     *              or {@link #DAY_OF_MONTH DAY_OF_MONTH} for a day in the period whose
+     *              {@link #DAY_OF_WEEK DAY_OF_WEEK} is specified by the
+     *              <code>dayOfWeek</code> parameter.
+     *              Should be 1 for first day of period.
+     *
+     * @param dayOfWeek  The {@link #DAY_OF_WEEK DAY_OF_WEEK} for the day
+     *              corresponding to the <code>dayOfPeriod</code> parameter.
+     *              1-based with 1=Sunday.
+     *
+     * @return      The week number (one-based), or zero if the day falls before
+     *              the first week because
+     *              {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     *              is more than one.
+     * @stable ICU 2.0
+     */
+    protected int weekNumber(int desiredDay, int dayOfPeriod, int dayOfWeek)
+    {
+        // Determine the day of the week of the first day of the period
+        // in question (either a year or a month).  Zero represents the
+        // first day of the week on this calendar.
+        int periodStartDayOfWeek = (dayOfWeek - getFirstDayOfWeek() - dayOfPeriod + 1) % 7;
+        if (periodStartDayOfWeek < 0) periodStartDayOfWeek += 7;
+
+        // Compute the week number.  Initially, ignore the first week, which
+        // may be fractional (or may not be).  We add periodStartDayOfWeek in
+        // order to fill out the first week, if it is fractional.
+        int weekNo = (desiredDay + periodStartDayOfWeek - 1)/7;
+
+        // If the first week is long enough, then count it.  If
+        // the minimal days in the first week is one, or if the period start
+        // is zero, we always increment weekNo.
+        if ((7 - periodStartDayOfWeek) >= getMinimalDaysInFirstWeek()) ++weekNo;
+
+        return weekNo;
+    }
+
+    /**
+     * Return the week number of a day, within a period. This may be the week number in
+     * a year, or the week number in a month. Usually this will be a value >= 1, but if
+     * some initial days of the period are excluded from week 1, because
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} is > 1,
+     * then the week number will be zero for those
+     * initial days. This method requires the day of week for the given date in order to
+     * determine the result.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This method is intended for use by subclasses in implementing their
+     * {@link #computeTime computeTime} and/or {@link #computeFields computeFields} methods.
+     * It is often useful in {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum} as well.
+     * <p>
+     * @param dayOfPeriod   The {@link #DAY_OF_YEAR DAY_OF_YEAR} or
+     *                      {@link #DAY_OF_MONTH DAY_OF_MONTH} whose week number is desired.
+     *                      Should be 1 for the first day of the period.
+     *
+     * @param dayOfWeek     The {@link #DAY_OF_WEEK DAY_OF_WEEK} for the day
+     *                      corresponding to the <code>dayOfPeriod</code> parameter.
+     *                      1-based with 1=Sunday.
+     *
+     * @return      The week number (one-based), or zero if the day falls before
+     *              the first week because
+     *              {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     *              is more than one.
+     * @stable ICU 2.0
+     */
+    protected final int weekNumber(int dayOfPeriod, int dayOfWeek)
+    {
+        return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);
+    }
+
+    //-------------------------------------------------------------------------
+    // Constants
+    //-------------------------------------------------------------------------
+
+    /**
+     * [NEW]
+     * Return the difference between the given time and the time this
+     * calendar object is set to.  If this calendar is set
+     * <em>before</em> the given time, the returned value will be
+     * positive.  If this calendar is set <em>after</em> the given
+     * time, the returned value will be negative.  The
+     * <code>field</code> parameter specifies the units of the return
+     * value.  For example, if <code>fieldDifference(when,
+     * Calendar.MONTH)</code> returns 3, then this calendar is set to
+     * 3 months before <code>when</code>, and possibly some additional
+     * time less than one month.
+     *
+     * <p>As a side effect of this call, this calendar is advanced
+     * toward <code>when</code> by the given amount.  That is, calling
+     * this method has the side effect of calling <code>add(field,
+     * n)</code>, where <code>n</code> is the return value.
+     *
+     * <p>Usage: To use this method, call it first with the largest
+     * field of interest, then with progressively smaller fields.  For
+     * example:
+     *
+     * <pre>
+     * int y = cal.fieldDifference(when, Calendar.YEAR);
+     * int m = cal.fieldDifference(when, Calendar.MONTH);
+     * int d = cal.fieldDifference(when, Calendar.DATE);</pre>
+     *
+     * computes the difference between <code>cal</code> and
+     * <code>when</code> in years, months, and days.
+     *
+     * <p>Note: <code>fieldDifference()</code> is
+     * <em>asymmetrical</em>.  That is, in the following code:
+     *
+     * <pre>
+     * cal.setTime(date1);
+     * int m1 = cal.fieldDifference(date2, Calendar.MONTH);
+     * int d1 = cal.fieldDifference(date2, Calendar.DATE);
+     * cal.setTime(date2);
+     * int m2 = cal.fieldDifference(date1, Calendar.MONTH);
+     * int d2 = cal.fieldDifference(date1, Calendar.DATE);</pre>
+     *
+     * one might expect that <code>m1 == -m2 && d1 == -d2</code>.
+     * However, this is not generally the case, because of
+     * irregularities in the underlying calendar system (e.g., the
+     * Gregorian calendar has a varying number of days per month).
+     *
+     * @param when the date to compare this calendar's time to
+     * @param field the field in which to compute the result
+     * @return the difference, either positive or negative, between
+     * this calendar's time and <code>when</code>, in terms of
+     * <code>field</code>.
+     * @stable ICU 2.0
+     */
+    public int fieldDifference(Date when, int field) {
+        int min = 0;
+        long startMs = getTimeInMillis();
+        long targetMs = when.getTime();
+        // Always add from the start millis.  This accomodates
+        // operations like adding years from February 29, 2000 up to
+        // February 29, 2004.  If 1, 1, 1, 1 is added to the year
+        // field, the DOM gets pinned to 28 and stays there, giving an
+        // incorrect DOM difference of 1.  We have to add 1, reset, 2,
+        // reset, 3, reset, 4.
+        if (startMs < targetMs) {
+            int max = 1;
+            // Find a value that is too large
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms > targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max < 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((max - min) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms > targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        } else if (startMs > targetMs) {
+            if (false) {
+                // This works, and makes the code smaller, but costs
+                // an extra object creation and an extra couple cycles
+                // of calendar computation.
+                setTimeInMillis(targetMs);
+                min = -fieldDifference(new Date(startMs), field);
+            }
+            int max = -1;
+            // Find a value that is too small
+            for (;;) {
+                setTimeInMillis(startMs);
+                add(field, max);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return max;
+                } else if (ms < targetMs) {
+                    break;
+                } else {
+                    max <<= 1;
+                    if (max == 0) {
+                        // Field difference too large to fit into int
+                        throw new RuntimeException();
+                    }
+                }
+            }
+            // Do a binary search
+            while ((min - max) > 1) {
+                int t = (min + max) / 2;
+                setTimeInMillis(startMs);
+                add(field, t);
+                long ms = getTimeInMillis();
+                if (ms == targetMs) {
+                    return t;
+                } else if (ms < targetMs) {
+                    max = t;
+                } else {
+                    min = t;
+                }
+            }
+        }
+        // Set calendar to end point
+        setTimeInMillis(startMs);
+        add(field, min);
+        return min;
+    }
+
+    /**
+     * Sets the time zone with the given time zone value.
+     * @param value the given time zone.
+     * @stable ICU 2.0
+     */
+    public void setTimeZone(TimeZone value)
+    {
+        zone = value;
+        /* Recompute the fields from the time using the new zone.  This also
+         * works if isTimeSet is false (after a call to set()).  In that case
+         * the time will be computed from the fields using the new zone, then
+         * the fields will get recomputed from that.  Consider the sequence of
+         * calls: cal.setTimeZone(EST); cal.set(HOUR, 1); cal.setTimeZone(PST).
+         * Is cal set to 1 o'clock EST or 1 o'clock PST?  Answer: PST.  More
+         * generally, a call to setTimeZone() affects calls to set() BEFORE AND
+         * AFTER it up to the next call to complete().
+         */
+        areFieldsSet = false;
+    }
+
+    /**
+     * Gets the time zone.
+     * @return the time zone object associated with this calendar.
+     * @stable ICU 2.0
+     */
+    public TimeZone getTimeZone()
+    {
+        return zone;
+    }
+
+    /**
+     * Specify whether or not date/time interpretation is to be lenient.  With
+     * lenient interpretation, a date such as "February 942, 1996" will be
+     * treated as being equivalent to the 941st day after February 1, 1996.
+     * With strict interpretation, such dates will cause an exception to be
+     * thrown.
+     *
+     * @see DateFormat#setLenient
+     * @stable ICU 2.0
+     */
+    public void setLenient(boolean lenient)
+    {
+        this.lenient = lenient;
+    }
+
+    /**
+     * Tell whether date/time interpretation is to be lenient.
+     * @stable ICU 2.0
+     */
+    public boolean isLenient()
+    {
+        return lenient;
+    }
+
+    /**
+     * Sets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @param value the given first day of the week.
+     * @stable ICU 2.0
+     */
+    public void setFirstDayOfWeek(int value)
+    {
+        if (firstDayOfWeek != value) {
+            if (value < SUNDAY || value > SATURDAY) {
+                throw new IllegalArgumentException("Invalid day of week");
+            }
+            firstDayOfWeek = value;
+            areFieldsSet = false;
+        }
+    }
+
+    /**
+     * Gets what the first day of the week is; e.g., Sunday in US,
+     * Monday in France.
+     * @return the first day of the week.
+     * @stable ICU 2.0
+     */
+    public int getFirstDayOfWeek()
+    {
+        return firstDayOfWeek;
+    }
+
+    /**
+     * Sets what the minimal days required in the first week of the year are.
+     * For example, if the first week is defined as one that contains the first
+     * day of the first month of a year, call the method with value 1. If it
+     * must be a full week, use value 7.
+     * @param value the given minimal days required in the first week
+     * of the year.
+     * @stable ICU 2.0
+     */
+    public void setMinimalDaysInFirstWeek(int value)
+    {
+        // Values less than 1 have the same effect as 1; values greater
+        // than 7 have the same effect as 7. However, we normalize values
+        // so operator== and so forth work.
+        if (value < 1) {
+            value = 1;
+        } else if (value > 7) {
+            value = 7;
+        }
+        if (minimalDaysInFirstWeek != value) {
+            minimalDaysInFirstWeek = value;
+            areFieldsSet = false;
+        }
+    }
+
+    /**
+     * Gets what the minimal days required in the first week of the year are;
+     * e.g., if the first week is defined as one that contains the first day
+     * of the first month of a year, getMinimalDaysInFirstWeek returns 1. If
+     * the minimal days required must be a full week, getMinimalDaysInFirstWeek
+     * returns 7.
+     * @return the minimal days required in the first week of the year.
+     * @stable ICU 2.0
+     */
+    public int getMinimalDaysInFirstWeek()
+    {
+        return minimalDaysInFirstWeek;
+    }
+
+    private static final int LIMITS[][] = {
+        //    Minimum  Greatest min      Least max   Greatest max
+        {/*                                                      */}, // ERA
+        {/*                                                      */}, // YEAR
+        {/*                                                      */}, // MONTH
+        {/*                                                      */}, // WEEK_OF_YEAR
+        {/*                                                      */}, // WEEK_OF_MONTH
+        {/*                                                      */}, // DAY_OF_MONTH
+        {/*                                                      */}, // DAY_OF_YEAR
+        {           1,            1,             7,             7  }, // DAY_OF_WEEK
+        {/*                                                      */}, // DAY_OF_WEEK_IN_MONTH
+        {           0,            0,             1,             1  }, // AM_PM
+        {           0,            0,            11,            11  }, // HOUR
+        {           0,            0,            23,            23  }, // HOUR_OF_DAY
+        {           0,            0,            59,            59  }, // MINUTE
+        {           0,            0,            59,            59  }, // SECOND
+        {           0,            0,           999,           999  }, // MILLISECOND
+        {-12*ONE_HOUR, -12*ONE_HOUR,   12*ONE_HOUR,   12*ONE_HOUR  }, // ZONE_OFFSET
+        {           0,            0,    1*ONE_HOUR,    1*ONE_HOUR  }, // DST_OFFSET
+        {/*                                                      */}, // YEAR_WOY
+        {           1,            1,             7,             7  }, // DOW_LOCAL
+        {/*                                                      */}, // EXTENDED_YEAR
+        { -0x7F000000,  -0x7F000000,    0x7F000000,    0x7F000000  }, // JULIAN_DAY
+        {           0,            0, 24*ONE_HOUR-1, 24*ONE_HOUR-1  }, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * Subclass API for defining limits of different types.
+     * Subclasses must implement this method to return limits for the
+     * following fields:
+     *
+     * <pre>ERA
+     * YEAR
+     * MONTH
+     * WEEK_OF_YEAR
+     * WEEK_OF_MONTH
+     * DAY_OF_MONTH
+     * DAY_OF_YEAR
+     * DAY_OF_WEEK_IN_MONTH
+     * YEAR_WOY
+     * EXTENDED_YEAR</pre>
+     *
+     * @param field one of the above field numbers
+     * @param limitType one of <code>MINIMUM</code>, <code>GREATEST_MINIMUM</code>,
+     * <code>LEAST_MAXIMUM</code>, or <code>MAXIMUM</code>
+     * @stable ICU 2.0
+     */
+    abstract protected int handleGetLimit(int field, int limitType);
+
+    /**
+     * Return a limit for a field.
+     * @param field the field, from 0..</code>getFieldCount()-1</code>
+     * @param limitType the type specifier for the limit
+     * @see #MINIMUM
+     * @see #GREATEST_MINIMUM
+     * @see #LEAST_MAXIMUM
+     * @see #MAXIMUM
+     * @stable ICU 2.0
+     */
+    protected int getLimit(int field, int limitType) {
+        switch (field) {
+        case DAY_OF_WEEK:
+        case AM_PM:
+        case HOUR:
+        case HOUR_OF_DAY:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+        case ZONE_OFFSET:
+        case DST_OFFSET:
+        case DOW_LOCAL:
+        case JULIAN_DAY:
+        case MILLISECONDS_IN_DAY:
+            return LIMITS[field][limitType];
+
+        case WEEK_OF_MONTH:
+        {
+            int limit;
+            if (limitType == MINIMUM) {
+                limit = getMinimalDaysInFirstWeek() == 1 ? 1 : 0;
+            } else if (limitType == GREATEST_MINIMUM){
+                limit = 1;
+            } else {
+                int minDaysInFirst = getMinimalDaysInFirstWeek();
+                int daysInMonth = handleGetLimit(DAY_OF_MONTH, limitType);
+                if (limitType == LEAST_MAXIMUM) {
+                    limit = (daysInMonth + (7 - minDaysInFirst)) / 7;
+                } else { // limitType == MAXIMUM
+                    limit = (daysInMonth + 6 + (7 - minDaysInFirst)) / 7;
+                }
+            }
+            return limit;
+        }
+
+        }
+        return handleGetLimit(field, limitType);
+    }
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the minimum value that a field can take (least minimum).
+     * @see #getLimit
+     * @see #handleGetLimit
+     * @stable ICU 2.0
+     */
+    protected static final int MINIMUM = 0;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the greatest minimum value that a field can take.
+     * @see #getLimit
+     * @see #handleGetLimit
+     * @stable ICU 2.0
+     */
+    protected static final int GREATEST_MINIMUM = 1;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the least maximum value that a field can take.
+     * @see #getLimit
+     * @see #handleGetLimit
+     * @stable ICU 2.0
+     */
+    protected static final int LEAST_MAXIMUM = 2;
+
+    /**
+     * Limit type for <code>getLimit()</code> and <code>handleGetLimit()</code>
+     * indicating the maximum value that a field can take (greatest maximum).
+     * @see #getLimit
+     * @see #handleGetLimit
+     * @stable ICU 2.0
+     */
+    protected static final int MAXIMUM = 3;
+
+    /**
+     * Gets the minimum value for the given time field.
+     * e.g., for Gregorian DAY_OF_MONTH, 1.
+     * @param field the given time field.
+     * @return the minimum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getMinimum(int field) {
+        return getLimit(field, MINIMUM);
+    }
+
+    /**
+     * Gets the maximum value for the given time field.
+     * e.g. for Gregorian DAY_OF_MONTH, 31.
+     * @param field the given time field.
+     * @return the maximum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getMaximum(int field) {
+        return getLimit(field, MAXIMUM);
+    }
+
+    /**
+     * Gets the highest minimum value for the given field if varies.
+     * Otherwise same as getMinimum(). For Gregorian, no difference.
+     * @param field the given time field.
+     * @return the highest minimum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getGreatestMinimum(int field) {
+        return getLimit(field, GREATEST_MINIMUM);
+    }
+
+    /**
+     * Gets the lowest maximum value for the given field if varies.
+     * Otherwise same as getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
+     * @param field the given time field.
+     * @return the lowest maximum value for the given time field.
+     * @stable ICU 2.0
+     */
+    public final int getLeastMaximum(int field) {
+        return getLimit(field, LEAST_MAXIMUM);
+    }
+
+    //-------------------------------------------------------------------------
+    // Weekend support -- determining which days of the week are the weekend
+    // in a given locale
+    //-------------------------------------------------------------------------
+
+    /**
+     * Return whether the given day of the week is a weekday, a
+     * weekend day, or a day that transitions from one to the other,
+     * in this calendar system.  If a transition occurs at midnight,
+     * then the days before and after the transition will have the
+     * type WEEKDAY or WEEKEND.  If a transition occurs at a time
+     * other than midnight, then the day of the transition will have
+     * the type WEEKEND_ONSET or WEEKEND_CEASE.  In this case, the
+     * method getWeekendTransition() will return the point of
+     * transition.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return either WEEKDAY, WEEKEND, WEEKEND_ONSET, or
+     * WEEKEND_CEASE
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * between SUNDAY and SATURDAY, inclusive
+     * @see #WEEKDAY
+     * @see #WEEKEND
+     * @see #WEEKEND_ONSET
+     * @see #WEEKEND_CEASE
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public int getDayOfWeekType(int dayOfWeek) {
+        if (dayOfWeek < SUNDAY || dayOfWeek > SATURDAY) {
+            throw new IllegalArgumentException("Invalid day of week");
+        }
+        if (weekendOnset < weekendCease) {
+            if (dayOfWeek < weekendOnset || dayOfWeek > weekendCease) {
+                return WEEKDAY;
+            }
+        } else {
+            if (dayOfWeek > weekendCease && dayOfWeek < weekendOnset) {
+                return WEEKDAY;
+            }
+        }
+        if (dayOfWeek == weekendOnset) {
+            return (weekendOnsetMillis == 0) ? WEEKEND : WEEKEND_ONSET;
+        }
+        if (dayOfWeek == weekendCease) {
+            return (weekendCeaseMillis == 0) ? WEEKDAY : WEEKEND_CEASE;
+        }
+        return WEEKEND;
+    }
+
+    /**
+     * Return the time during the day at which the weekend begins or end in
+     * this calendar system.  If getDayOfWeekType(dayOfWeek) ==
+     * WEEKEND_ONSET return the time at which the weekend begins.  If
+     * getDayOfWeekType(dayOfWeek) == WEEKEND_CEASE return the time at
+     * which the weekend ends.  If getDayOfWeekType(dayOfWeek) has some
+     * other value, then throw an exception.
+     * @param dayOfWeek either SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
+     * THURSDAY, FRIDAY, or SATURDAY
+     * @return the milliseconds after midnight at which the
+     * weekend begins or ends
+     * @exception IllegalArgumentException if dayOfWeek is not
+     * WEEKEND_ONSET or WEEKEND_CEASE
+     * @see #getDayOfWeekType
+     * @see #isWeekend(Date)
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public int getWeekendTransition(int dayOfWeek) {
+        if (dayOfWeek == weekendOnset) {
+            return weekendOnsetMillis;
+        } else if (dayOfWeek == weekendCease) {
+            return weekendCeaseMillis;
+        }
+        throw new IllegalArgumentException("Not weekend transition day");
+    }
+
+    /**
+     * Return true if the given date and time is in the weekend in
+     * this calendar system.  Equivalent to calling setTime() followed
+     * by isWeekend().  Note: This method changes the time this
+     * calendar is set to.
+     * @param date the date and time
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend()
+     * @stable ICU 2.0
+     */
+    public boolean isWeekend(Date date) {
+        setTime(date);
+        return isWeekend();
+    }
+
+    /**
+     * Return true if this Calendar's current date and time is in the
+     * weekend in this calendar system.
+     * @return true if the given date and time is part of the
+     * weekend
+     * @see #getDayOfWeekType
+     * @see #getWeekendTransition
+     * @see #isWeekend(Date)
+     * @stable ICU 2.0
+     */
+    public boolean isWeekend() {
+        int dow =  get(DAY_OF_WEEK);
+        int dowt = getDayOfWeekType(dow);
+        switch (dowt) {
+        case WEEKDAY:
+            return false;
+        case WEEKEND:
+            return true;
+        default: // That is, WEEKEND_ONSET or WEEKEND_CEASE
+            // Use internalGet() because the above call to get() populated
+            // all fields.
+            // [Note: There should be a better way to get millis in day.
+            //  For ICU4J, submit request for a MILLIS_IN_DAY field
+            //  and a DAY_NUMBER field (could be Julian day #). - aliu]
+            int millisInDay = internalGet(MILLISECOND) + 1000 * (internalGet(SECOND) +
+                60 * (internalGet(MINUTE) + 60 * internalGet(HOUR_OF_DAY)));
+            int transition = getWeekendTransition(dow);
+            return (dowt == WEEKEND_ONSET)
+                ? (millisInDay >= transition)
+                : (millisInDay <  transition);
+        }
+        // (We can never reach this point.)
+    }
+
+    //-------------------------------------------------------------------------
+    // End of weekend support
+    //-------------------------------------------------------------------------
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone()
+    {
+        try {
+            Calendar other = (Calendar) super.clone();
+
+            other.fields = new int[fields.length];
+            other.stamp = new int[fields.length];
+            System.arraycopy(this.fields, 0, other.fields, 0, fields.length);
+            System.arraycopy(this.stamp, 0, other.stamp, 0, fields.length);
+
+            other.zone = (TimeZone) zone.clone();
+            return other;
+        }
+        catch (CloneNotSupportedException e) {
+            // this shouldn't happen, since we are Cloneable
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Return a string representation of this calendar. This method
+     * is intended to be used only for debugging purposes, and the
+     * format of the returned string may vary between implementations.
+     * The returned string may be empty but may not be <code>null</code>.
+     *
+     * @return  a string representation of this calendar.
+     * @stable ICU 2.0
+     */
+    public String toString() {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append(getClass().getName());
+        buffer.append("[time=");
+        buffer.append(isTimeSet ? String.valueOf(time) : "?");
+        buffer.append(",areFieldsSet=");
+        buffer.append(areFieldsSet);
+        buffer.append(",areAllFieldsSet=");
+        buffer.append(areAllFieldsSet);
+        buffer.append(",lenient=");
+        buffer.append(lenient);
+        buffer.append(",zone=");
+        buffer.append(zone);
+        buffer.append(",firstDayOfWeek=");
+        buffer.append(firstDayOfWeek);
+        buffer.append(",minimalDaysInFirstWeek=");
+        buffer.append(minimalDaysInFirstWeek);
+        for (int i=0; i<fields.length; ++i) {
+            buffer.append(',').append(fieldName(i)).append('=');
+            buffer.append(isSet(i) ? String.valueOf(fields[i]) : "?");
+        }
+        buffer.append(']');
+        return buffer.toString();
+    }
+
+    // =======================privates===============================
+
+    /**
+     * Internal class that holds cached locale data.
+     */
+    private static class WeekData {
+        public int firstDayOfWeek;
+        public int minimalDaysInFirstWeek;
+        public int weekendOnset;
+        public int weekendOnsetMillis;
+        public int weekendCease;
+        public int weekendCeaseMillis;
+        public ULocale actualLocale;
+        public WeekData(int fdow, int mdifw,
+                        int weekendOnset, int weekendOnsetMillis,
+                        int weekendCease, int weekendCeaseMillis,
+                        ULocale actualLoc) {
+            this.firstDayOfWeek = fdow;
+            this.minimalDaysInFirstWeek = mdifw;
+            this.actualLocale = actualLoc;
+            this.weekendOnset = weekendOnset;
+            this.weekendOnsetMillis = weekendOnsetMillis;
+            this.weekendCease = weekendCease;
+            this.weekendCeaseMillis = weekendCeaseMillis;
+        }
+    }
+    
+    /**
+     * Set this calendar to contain week and weekend data for the given
+     * locale.
+     * @param locale the locale
+     */
+    private void setWeekData(ULocale locale)
+    {
+        /* try to get the Locale data from the cache */
+        WeekData data = (WeekData) cachedLocaleData.get(locale);
+        
+        if (data == null) {  /* cache miss */
+
+            CalendarData calData = new CalendarData(locale, getType());
+            int[] dateTimeElements = calData.get("DateTimeElements").getIntVector();
+            int[] weekend = calData.get("weekend").getIntVector();
+            data = new WeekData(dateTimeElements[0],dateTimeElements[1],
+                                weekend[0],
+                                weekend[1],
+                                weekend[2],
+                                weekend[3],
+                                calData.getULocale());
+            /* cache update */
+            cachedLocaleData.put(locale, data);
+        }
+        setFirstDayOfWeek(data.firstDayOfWeek);
+        setMinimalDaysInFirstWeek(data.minimalDaysInFirstWeek);
+        weekendOnset       = data.weekendOnset;
+        weekendOnsetMillis = data.weekendOnsetMillis;
+        weekendCease       = data.weekendCease;
+        weekendCeaseMillis = data.weekendCeaseMillis;
+
+        // TODO: determine the actual/valid locale
+        ULocale uloc = data.actualLocale;
+        setLocale(uloc, uloc);
+    }
+
+    /**
+     * Recompute the time and update the status fields isTimeSet
+     * and areFieldsSet.  Callers should check isTimeSet and only
+     * call this method if isTimeSet is false.
+     */
+    private void updateTime() {
+        computeTime();
+        // If we are lenient, we need to recompute the fields to normalize
+        // the values.  Also, if we haven't set all the fields yet (i.e.,
+        // in a newly-created object), we need to fill in the fields. [LIU]
+        if (isLenient() || !areAllFieldsSet) areFieldsSet = false;
+        isTimeSet = true;
+        areFieldsVirtuallySet = false;
+    }
+
+    /**
+     * Save the state of this object to a stream (i.e., serialize it).
+     */
+    private void writeObject(ObjectOutputStream stream)
+         throws IOException
+    {
+        // Try to compute the time correctly, for the future (stream
+        // version 2) in which we don't write out fields[] or isSet[].
+        if (!isTimeSet) {
+            try {
+                updateTime();
+            }
+            catch (IllegalArgumentException e) {}
+        }
+
+        // Write out the 1.1 FCS object.
+        stream.defaultWriteObject();
+    }
+
+    /**
+     * Reconstitute this object from a stream (i.e., deserialize it).
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+
+        stream.defaultReadObject();
+
+        initInternal();
+
+        isTimeSet = true;
+        areFieldsSet = areAllFieldsSet = false;
+        areFieldsVirtuallySet = true; // cause fields to be recalculated if requested.
+        nextStamp = MINIMUM_USER_STAMP;
+    }
+
+
+    //----------------------------------------------------------------------
+    // Time -> Fields
+    //----------------------------------------------------------------------
+
+    /**
+     * Converts the current millisecond time value <code>time</code> to
+     * field values in <code>fields[]</code>.  This synchronizes the time
+     * field values with a new time that is set for the calendar.  The time
+     * is <em>not</em> recomputed first; to recompute the time, then the
+     * fields, call the <code>complete</code> method.
+     * @see #complete
+     * @stable ICU 2.0
+     */
+    protected void computeFields() {
+        int offsets[] = new int[2];
+        getTimeZone().getOffset(time, false, offsets);
+        long localMillis = time + offsets[0] + offsets[1];
+
+        // Mark fields as set.  Do this before calling handleComputeFields().
+        int mask = internalSetMask;
+        for (int i=0; i<fields.length; ++i) {
+            if ((mask & 1) == 0) {
+                stamp[i] = INTERNALLY_SET;
+            } else {
+                stamp[i] = UNSET;
+            }
+            mask >>= 1;
+        }
+
+        // We used to check for and correct extreme millis values (near
+        // Long.MIN_VALUE or Long.MAX_VALUE) here.  Such values would cause
+        // overflows from positive to negative (or vice versa) and had to
+        // be manually tweaked.  We no longer need to do this because we
+        // have limited the range of supported dates to those that have a
+        // Julian day that fits into an int.  This allows us to implement a
+        // JULIAN_DAY field and also removes some inelegant code. - Liu
+        // 11/6/00
+
+        long days = floorDivide(localMillis, ONE_DAY);
+
+        fields[JULIAN_DAY] = (int) days + EPOCH_JULIAN_DAY;
+
+        computeGregorianAndDOWFields(fields[JULIAN_DAY]);
+
+        // Call framework method to have subclass compute its fields.
+        // These must include, at a minimum, MONTH, DAY_OF_MONTH,
+        // EXTENDED_YEAR, YEAR, DAY_OF_YEAR.  This method will call internalSet(),
+        // which will update stamp[].
+        handleComputeFields(fields[JULIAN_DAY]);
+
+        // Compute week-related fields, based on the subclass-computed
+        // fields computed by handleComputeFields().
+        computeWeekFields();
+
+        // Compute time-related fields.  These are indepent of the date and
+        // of the subclass algorithm.  They depend only on the local zone
+        // wall milliseconds in day.
+        int millisInDay = (int) (localMillis - (days * ONE_DAY));
+        fields[MILLISECONDS_IN_DAY] = millisInDay;
+        fields[MILLISECOND] = millisInDay % 1000;
+        millisInDay /= 1000;
+        fields[SECOND] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[MINUTE] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[HOUR_OF_DAY] = millisInDay;
+        fields[AM_PM] = millisInDay / 12; // Assume AM == 0
+        fields[HOUR] = millisInDay % 12;
+        fields[ZONE_OFFSET] = offsets[0];
+        fields[DST_OFFSET] = offsets[1];
+    }
+
+    /**
+     * Compute the Gregorian calendar year, month, and day of month from
+     * the given Julian day.  These values are not stored in fields, but in
+     * member variables gregorianXxx.  Also compute the DAY_OF_WEEK and
+     * DOW_LOCAL fields.
+     */
+    private final void computeGregorianAndDOWFields(int julianDay) {
+        computeGregorianFields(julianDay);
+
+        // Compute day of week: JD 0 = Monday
+        int dow = fields[DAY_OF_WEEK] = julianDayToDayOfWeek(julianDay);
+
+        // Calculate 1-based localized day of week
+        int dowLocal = dow - getFirstDayOfWeek() + 1;
+        if (dowLocal < 1) {
+            dowLocal += 7;
+        }
+        fields[DOW_LOCAL] = dowLocal;
+    }
+
+    /**
+     * Compute the Gregorian calendar year, month, and day of month from the
+     * Julian day.  These values are not stored in fields, but in member
+     * variables gregorianXxx.  They are used for time zone computations and by
+     * subclasses that are Gregorian derivatives.  Subclasses may call this
+     * method to perform a Gregorian calendar millis->fields computation.
+     * To perform a Gregorian calendar fields->millis computation, call
+     * computeGregorianMonthStart().
+     * @see #computeGregorianMonthStart
+     * @stable ICU 2.0
+     */
+    protected final void computeGregorianFields(int julianDay) {
+        int year, month, dayOfMonth, dayOfYear;
+
+        // The Gregorian epoch day is zero for Monday January 1, year 1.
+        long gregorianEpochDay = julianDay - JAN_1_1_JULIAN_DAY;
+
+        // Here we convert from the day number to the multiple radix
+        // representation.  We use 400-year, 100-year, and 4-year cycles.
+        // For example, the 4-year cycle has 4 years + 1 leap day; giving
+        // 1461 == 365*4 + 1 days.
+        int[] rem = new int[1];
+        int n400 = floorDivide(gregorianEpochDay, 146097, rem); // 400-year cycle length
+        int n100 = floorDivide(rem[0], 36524, rem); // 100-year cycle length
+        int n4 = floorDivide(rem[0], 1461, rem); // 4-year cycle length
+        int n1 = floorDivide(rem[0], 365, rem);
+        year = 400*n400 + 100*n100 + 4*n4 + n1;
+        dayOfYear = rem[0]; // zero-based day of year
+        if (n100 == 4 || n1 == 4) {
+            dayOfYear = 365; // Dec 31 at end of 4- or 400-yr cycle
+        } else {
+            ++year;
+        }
+
+        boolean isLeap = ((year&0x3) == 0) && // equiv. to (year%4 == 0)
+            (year%100 != 0 || year%400 == 0);
+
+        int correction = 0;
+        int march1 = isLeap ? 60 : 59; // zero-based DOY for March 1
+        if (dayOfYear >= march1) correction = isLeap ? 1 : 2;
+        month = (12 * (dayOfYear + correction) + 6) / 367; // zero-based month
+        dayOfMonth = dayOfYear -
+            GREGORIAN_MONTH_COUNT[month][isLeap?3:2] + 1; // one-based DOM
+
+        gregorianYear = year;
+        gregorianMonth = month; // 0-based already
+        gregorianDayOfMonth = dayOfMonth; // 1-based already
+        gregorianDayOfYear = dayOfYear + 1; // Convert from 0-based to 1-based
+    }
+
+    /**
+     * Compute the fields WEEK_OF_YEAR, YEAR_WOY, WEEK_OF_MONTH,
+     * DAY_OF_WEEK_IN_MONTH, and DOW_LOCAL from EXTENDED_YEAR, YEAR,
+     * DAY_OF_WEEK, and DAY_OF_YEAR.  The latter fields are computed by the
+     * subclass based on the calendar system.
+     *
+     * <p>The YEAR_WOY field is computed simplistically.  It is equal to YEAR
+     * most of the time, but at the year boundary it may be adjusted to YEAR-1
+     * or YEAR+1 to reflect the overlap of a week into an adjacent year.  In
+     * this case, a simple increment or decrement is performed on YEAR, even
+     * though this may yield an invalid YEAR value.  For instance, if the YEAR
+     * is part of a calendar system with an N-year cycle field CYCLE, then
+     * incrementing the YEAR may involve incrementing CYCLE and setting YEAR
+     * back to 0 or 1.  This is not handled by this code, and in fact cannot be
+     * simply handled without having subclasses define an entire parallel set of
+     * fields for fields larger than or equal to a year.  This additional
+     * complexity is not warranted, since the intention of the YEAR_WOY field is
+     * to support ISO 8601 notation, so it will typically be used with a
+     * proleptic Gregorian calendar, which has no field larger than a year.
+     */
+    private final void computeWeekFields() {
+        int eyear = fields[EXTENDED_YEAR];
+        int dayOfWeek = fields[DAY_OF_WEEK];
+        int dayOfYear = fields[DAY_OF_YEAR];
+
+        // WEEK_OF_YEAR start
+        // Compute the week of the year.  For the Gregorian calendar, valid week
+        // numbers run from 1 to 52 or 53, depending on the year, the first day
+        // of the week, and the minimal days in the first week.  For other
+        // calendars, the valid range may be different -- it depends on the year
+        // length.  Days at the start of the year may fall into the last week of
+        // the previous year; days at the end of the year may fall into the
+        // first week of the next year.  ASSUME that the year length is less than
+        // 7000 days.
+        int yearOfWeekOfYear = eyear;
+        int relDow = (dayOfWeek + 7 - getFirstDayOfWeek()) % 7; // 0..6
+        int relDowJan1 = (dayOfWeek - dayOfYear + 7001 - getFirstDayOfWeek()) % 7; // 0..6
+        int woy = (dayOfYear - 1 + relDowJan1) / 7; // 0..53
+        if ((7 - relDowJan1) >= getMinimalDaysInFirstWeek()) {
+            ++woy;
+        }
+
+        // Adjust for weeks at the year end that overlap into the previous or
+        // next calendar year.
+        if (woy == 0) {
+            // We are the last week of the previous year.
+            // Check to see if we are in the last week; if so, we need
+            // to handle the case in which we are the first week of the
+            // next year.
+
+            int prevDoy = dayOfYear + handleGetYearLength(eyear - 1);
+            woy = weekNumber(prevDoy, dayOfWeek);
+            yearOfWeekOfYear--;
+        } else {
+            int lastDoy = handleGetYearLength(eyear);
+            // Fast check: For it to be week 1 of the next year, the DOY
+            // must be on or after L-5, where L is yearLength(), then it
+            // cannot possibly be week 1 of the next year:
+            //          L-5                  L
+            // doy: 359 360 361 362 363 364 365 001
+            // dow:      1   2   3   4   5   6   7
+            if (dayOfYear >= (lastDoy - 5)) {
+                int lastRelDow = (relDow + lastDoy - dayOfYear) % 7;
+                if (lastRelDow < 0) {
+                    lastRelDow += 7;
+                }
+                if (((6 - lastRelDow) >= getMinimalDaysInFirstWeek()) &&
+                    ((dayOfYear + 7 - relDow) > lastDoy)) {
+                    woy = 1;
+                    yearOfWeekOfYear++;
+                }
+            }
+        }
+        fields[WEEK_OF_YEAR] = woy;
+        fields[YEAR_WOY] = yearOfWeekOfYear;
+        // WEEK_OF_YEAR end
+
+        int dayOfMonth = fields[DAY_OF_MONTH];
+        fields[WEEK_OF_MONTH] = weekNumber(dayOfMonth, dayOfWeek);
+        fields[DAY_OF_WEEK_IN_MONTH] = (dayOfMonth-1) / 7 + 1;
+    }
+
+    //----------------------------------------------------------------------
+    // Fields -> Time
+    //----------------------------------------------------------------------
+
+    /**
+     * Value to OR against resolve table field values for remapping.
+     * @see #resolveFields
+     * @stable ICU 2.0
+     */
+    protected static final int RESOLVE_REMAP = 32;
+    // A power of 2 greater than or equal to MAX_FIELD_COUNT
+
+    // Default table for day in year
+    static final int[][][] DATE_PRECEDENCE = {
+        {
+            { DAY_OF_MONTH },
+            { WEEK_OF_YEAR, DAY_OF_WEEK },
+            { WEEK_OF_MONTH, DAY_OF_WEEK },
+            { DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { WEEK_OF_YEAR, DOW_LOCAL },
+            { WEEK_OF_MONTH, DOW_LOCAL },
+            { DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+            { DAY_OF_YEAR },
+        },
+        {
+            { WEEK_OF_YEAR },
+            { WEEK_OF_MONTH },
+            { DAY_OF_WEEK_IN_MONTH },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+        },
+    };
+
+    static final int[][][] DOW_PRECEDENCE = {
+        {
+            { DAY_OF_WEEK },
+            { DOW_LOCAL },
+        },
+    };
+
+    /**
+     * Given a precedence table, return the newest field combination in
+     * the table, or -1 if none is found.
+     *
+     * <p>The precedence table is a 3-dimensional array of integers.  It
+     * may be thought of as an array of groups.  Each group is an array of
+     * lines.  Each line is an array of field numbers.  Within a line, if
+     * all fields are set, then the time stamp of the line is taken to be
+     * the stamp of the most recently set field.  If any field of a line is
+     * unset, then the line fails to match.  Within a group, the line with
+     * the newest time stamp is selected.  The first field of the line is
+     * returned to indicate which line matched.
+     *
+     * <p>In some cases, it may be desirable to map a line to field that
+     * whose stamp is NOT examined.  For example, if the best field is
+     * DAY_OF_WEEK then the DAY_OF_WEEK_IN_MONTH algorithm may be used.  In
+     * order to do this, insert the value <code>REMAP_RESOLVE | F</code> at
+     * the start of the line, where <code>F</code> is the desired return
+     * field value.  This field will NOT be examined; it only determines
+     * the return value if the other fields in the line are the newest.
+     *
+     * <p>If all lines of a group contain at least one unset field, then no
+     * line will match, and the group as a whole will fail to match.  In
+     * that case, the next group will be processed.  If all groups fail to
+     * match, then -1 is returned.
+     * @stable ICU 2.0
+     */
+    protected int resolveFields(int[][][] precedenceTable) {
+        int bestField = -1;
+        for (int g=0; g<precedenceTable.length && bestField < 0; ++g) {
+            int[][] group = precedenceTable[g];
+            int bestStamp = UNSET;
+        linesInGroup:
+            for (int l=0; l<group.length; ++l) {
+                int[] line= group[l];
+                int lineStamp = UNSET;
+                // Skip over first entry if it is negative
+                for (int i=(line[0]>=RESOLVE_REMAP)?1:0; i<line.length; ++i) {
+                    int s = stamp[line[i]];
+                    // If any field is unset then don't use this line
+                    if (s == UNSET) {
+                        continue linesInGroup;
+                    } else {
+                        lineStamp = Math.max(lineStamp, s);
+                    }
+                }
+                // Record new maximum stamp & field no.
+                if (lineStamp > bestStamp) {
+                    bestStamp = lineStamp;
+                    bestField = line[0]; // First field refers to entire line
+                }
+            }
+        }
+        return (bestField>=RESOLVE_REMAP)?(bestField&(RESOLVE_REMAP-1)):bestField;
+    }
+
+    /**
+     * Return the newest stamp of a given range of fields.
+     * @stable ICU 2.0
+     */
+    protected int newestStamp(int first, int last, int bestStampSoFar) {
+        int bestStamp = bestStampSoFar;
+        for (int i=first; i<=last; ++i) {
+            if (stamp[i] > bestStamp) {
+                bestStamp = stamp[i];
+            }
+        }
+        return bestStamp;
+    }
+
+    /**
+     * Return the timestamp of a field.
+     * @stable ICU 2.0
+     */
+    protected final int getStamp(int field) {
+        return stamp[field];
+    }
+
+    /**
+     * Return the field that is newer, either defaultField, or
+     * alternateField.  If neither is newer or neither is set, return defaultField.
+     * @stable ICU 2.0
+     */
+    protected int newerField(int defaultField, int alternateField) {
+        if (stamp[alternateField] > stamp[defaultField]) {
+            return alternateField;
+        }
+        return defaultField;
+    }
+
+    /**
+     * Ensure that each field is within its valid range by calling {@link
+     * #validateField(int)} on each field that has been set.  This method
+     * should only be called if this calendar is not lenient.
+     * @see #isLenient
+     * @see #validateField(int)
+     * @stable ICU 2.0
+     */
+    protected void validateFields() {
+        for (int field = 0; field < fields.length; field++) {
+            if (isSet(field)) {
+                validateField(field);
+            }
+        }
+    }
+
+    /**
+     * Validate a single field of this calendar.  Subclasses should
+     * override this method to validate any calendar-specific fields.
+     * Generic fields can be handled by
+     * <code>Calendar.validateField()</code>.
+     * @see #validateField(int, int, int)
+     * @stable ICU 2.0
+     */
+    protected void validateField(int field) {
+        int y;
+        switch (field) {
+        case DAY_OF_MONTH:
+            y = handleGetExtendedYear();
+            validateField(field, 1, handleGetMonthLength(y, internalGet(MONTH)));
+            break;
+        case DAY_OF_YEAR:
+            y = handleGetExtendedYear();
+            validateField(field, 1, handleGetYearLength(y));
+            break;
+        case DAY_OF_WEEK_IN_MONTH:
+            if (internalGet(field) == 0) {
+                throw new IllegalArgumentException("DAY_OF_WEEK_IN_MONTH cannot be zero");
+            }
+            validateField(field, getMinimum(field), getMaximum(field));
+            break;
+        default:
+            validateField(field, getMinimum(field), getMaximum(field));
+            break;
+        }
+    }
+
+    /**
+     * Validate a single field of this calendar given its minimum and
+     * maximum allowed value.  If the field is out of range, throw a
+     * descriptive <code>IllegalArgumentException</code>.  Subclasses may
+     * use this method in their implementation of {@link
+     * #validateField(int)}.
+     * @stable ICU 2.0
+     */
+    protected final void validateField(int field, int min, int max) {
+        int value = fields[field];
+        if (value < min || value > max) {
+            throw new IllegalArgumentException(fieldName(field) +
+                                               '=' + value + ", valid range=" +
+                                               min + ".." + max);
+        }
+    }
+
+    /**
+     * Converts the current field values in <code>fields[]</code> to the
+     * millisecond time value <code>time</code>.
+     * @stable ICU 2.0
+     */
+   protected void computeTime() {
+        if (!isLenient()) {
+            validateFields();
+        }
+
+        // Compute the Julian day
+        int julianDay = computeJulianDay();
+
+        long millis = julianDayToMillis(julianDay);
+
+        int millisInDay;
+
+        // We only use MILLISECONDS_IN_DAY if it has been set by the user.
+        // This makes it possible for the caller to set the calendar to a
+        // time and call clear(MONTH) to reset the MONTH to January.  This
+        // is legacy behavior.  Without this, clear(MONTH) has no effect,
+        // since the internally set JULIAN_DAY is used.
+        if (stamp[MILLISECONDS_IN_DAY] >= MINIMUM_USER_STAMP &&
+            newestStamp(AM_PM, MILLISECOND, UNSET) <= stamp[MILLISECONDS_IN_DAY]) {
+            millisInDay = internalGet(MILLISECONDS_IN_DAY);
+        } else {
+            millisInDay = computeMillisInDay();
+        }
+
+        // Compute the time zone offset and DST offset.  There are two potential
+        // ambiguities here.  We'll assume a 2:00 am (wall time) switchover time
+        // for discussion purposes here.
+        // 1. The transition into DST.  Here, a designated time of 2:00 am - 2:59 am
+        //    can be in standard or in DST depending.  However, 2:00 am is an invalid
+        //    representation (the representation jumps from 1:59:59 am Std to 3:00:00 am DST).
+        //    We assume standard time, that is, 2:30 am is interpreted as 3:30 am DST.
+        // 2. The transition out of DST.  Here, a designated time of 1:00 am - 1:59 am
+        //    can be in standard or DST.  Both are valid representations (the rep
+        //    jumps from 1:59:59 DST to 1:00:00 Std).
+        //    Again, we assume standard time, that is, 1:30 am is interpreted as 1:30 am Std.
+        // We use the TimeZone object, unless the user has explicitly set the ZONE_OFFSET
+        // or DST_OFFSET fields; then we use those fields.
+        if (stamp[ZONE_OFFSET] >= MINIMUM_USER_STAMP ||
+            stamp[DST_OFFSET] >= MINIMUM_USER_STAMP) {
+            millisInDay -= internalGet(ZONE_OFFSET) + internalGet(DST_OFFSET);
+        } else {
+            millisInDay -= computeZoneOffset(millis, millisInDay);
+        }
+
+        time = millis + millisInDay;
+    }
+
+    /**
+     * Compute the milliseconds in the day from the fields.  This is a
+     * value from 0 to 23:59:59.999 inclusive, unless fields are out of
+     * range, in which case it can be an arbitrary value.  This value
+     * reflects local zone wall time.
+     * @stable ICU 2.0
+     */
+    protected int computeMillisInDay() {
+        // Do the time portion of the conversion.
+
+        int millisInDay = 0;
+
+        // Find the best set of fields specifying the time of day.  There
+        // are only two possibilities here; the HOUR_OF_DAY or the
+        // AM_PM and the HOUR.
+        int hourOfDayStamp = stamp[HOUR_OF_DAY];
+        int hourStamp = Math.max(stamp[HOUR], stamp[AM_PM]);
+        int bestStamp = (hourStamp > hourOfDayStamp) ? hourStamp : hourOfDayStamp;
+
+        // Hours
+        if (bestStamp != UNSET) {
+            if (bestStamp == hourOfDayStamp) {
+                // Don't normalize here; let overflow bump into the next period.
+                // This is consistent with how we handle other fields.
+                millisInDay += internalGet(HOUR_OF_DAY);
+            } else {
+                // Don't normalize here; let overflow bump into the next period.
+                // This is consistent with how we handle other fields.
+                millisInDay += internalGet(HOUR);
+                millisInDay += 12 * internalGet(AM_PM); // Default works for unset AM_PM
+            }
+        }
+
+        // We use the fact that unset == 0; we start with millisInDay
+        // == HOUR_OF_DAY.
+        millisInDay *= 60;
+        millisInDay += internalGet(MINUTE); // now have minutes
+        millisInDay *= 60;
+        millisInDay += internalGet(SECOND); // now have seconds
+        millisInDay *= 1000;
+        millisInDay += internalGet(MILLISECOND); // now have millis
+
+        return millisInDay;
+    }
+
+    /**
+     * This method can assume EXTENDED_YEAR has been set.
+     * @param millis milliseconds of the date fields (local midnight millis)
+     * @param millisInDay milliseconds of the time fields; may be out
+     * or range.
+     * @return total zone offset (raw + DST) for the given moment
+     * @stable ICU 2.0
+     */
+    protected int computeZoneOffset(long millis, int millisInDay) {
+        int offsets[] = new int[2];
+        zone.getOffset(millis + millisInDay, true, offsets);
+        return offsets[0] + offsets[1];
+
+        // Note: Because we pass in wall millisInDay, rather than
+        // standard millisInDay, we interpret "1:00 am" on the day
+        // of cessation of DST as "1:00 am Std" (assuming the time
+        // of cessation is 2:00 am).
+    }
+
+    /**
+     * Compute the Julian day number as specified by this calendar's fields.
+     * @stable ICU 2.0
+     */
+    protected int computeJulianDay() {
+
+        // We want to see if any of the date fields is newer than the
+        // JULIAN_DAY.  If not, then we use JULIAN_DAY.  If so, then we do
+        // the normal resolution.  We only use JULIAN_DAY if it has been
+        // set by the user.  This makes it possible for the caller to set
+        // the calendar to a time and call clear(MONTH) to reset the MONTH
+        // to January.  This is legacy behavior.  Without this,
+        // clear(MONTH) has no effect, since the internally set JULIAN_DAY
+        // is used.
+        if (stamp[JULIAN_DAY] >= MINIMUM_USER_STAMP) {
+            int bestStamp = newestStamp(ERA, DAY_OF_WEEK_IN_MONTH, UNSET);
+            bestStamp = newestStamp(YEAR_WOY, EXTENDED_YEAR, bestStamp);
+            if (bestStamp <= stamp[JULIAN_DAY]) {
+                return internalGet(JULIAN_DAY);
+            }
+        }
+
+        int bestField = resolveFields(getFieldResolutionTable());
+        if (bestField < 0) {
+            bestField = DAY_OF_MONTH;
+        }
+
+        return handleComputeJulianDay(bestField);
+    }
+
+    /**
+     * Return the field resolution array for this calendar.  Calendars that
+     * define additional fields or change the semantics of existing fields
+     * should override this method to adjust the field resolution semantics
+     * accordingly.  Other subclasses should not override this method.
+     * @see #resolveFields
+     * @stable ICU 2.0
+     */
+    protected int[][][] getFieldResolutionTable() {
+        return DATE_PRECEDENCE;
+    }
+
+    /**
+     * Return the Julian day number of day before the first day of the
+     * given month in the given extended year.  Subclasses should override
+     * this method to implement their calendar system.
+     * @param eyear the extended year
+     * @param month the zero-based month, or 0 if useMonth is false
+     * @param useMonth if false, compute the day before the first day of
+     * the given year, otherwise, compute the day before the first day of
+     * the given month
+     * @return the Julian day number of the day before the first
+     * day of the given month and year
+     * @stable ICU 2.0
+     */
+    abstract protected int handleComputeMonthStart(int eyear, int month,
+                                                   boolean useMonth);
+
+    /**
+     * Return the extended year defined by the current fields.  This will
+     * use the EXTENDED_YEAR field or the YEAR and supra-year fields (such
+     * as ERA) specific to the calendar system, depending on which set of
+     * fields is newer.
+     * @return the extended year
+     * @stable ICU 2.0
+     */
+    abstract protected int handleGetExtendedYear();
+
+    // (The following method is not called because all existing subclasses
+    // override it.  2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * Return the number of days in the given month of the given extended
+     * year of this calendar system.  Subclasses should override this
+     * method if they can provide a more correct or more efficient
+     * implementation than the default implementation in Calendar.
+     * @stable ICU 2.0
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        return handleComputeMonthStart(extendedYear, month+1, true) -
+               handleComputeMonthStart(extendedYear, month, true);
+    }
+    ///CLOVER:ON
+
+    /**
+     * Return the number of days in the given extended year of this
+     * calendar system.  Subclasses should override this method if they can
+     * provide a more correct or more efficient implementation than the
+     * default implementation in Calendar.
+     * @stable ICU 2.0
+     */
+    protected int handleGetYearLength(int eyear) {
+        return handleComputeMonthStart(eyear+1, 0, false) -
+               handleComputeMonthStart(eyear, 0, false);
+    }
+
+    /**
+     * Subclasses that use additional fields beyond those defined in
+     * <code>Calendar</code> should override this method to return an
+     * <code>int[]</code> array of the appropriate length.  The length
+     * must be at least <code>BASE_FIELD_COUNT</code> and no more than
+     * <code>MAX_FIELD_COUNT</code>.
+     * @stable ICU 2.0
+     */
+    protected int[] handleCreateFields() {
+        return new int[BASE_FIELD_COUNT];
+    }
+    
+    /**
+     * Subclasses may override this. 
+     * Called by handleComputeJulianDay.  Returns the default month (0-based) for the year,
+     * taking year and era into account.  Defaults to 0 (JANUARY) for Gregorian.
+     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
+     * @return the default month
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     * @see #MONTH
+     */
+    protected int getDefaultMonthInYear(int extendedYear) {
+        return Calendar.JANUARY;
+    }
+
+    /**
+     * Subclasses may override this. 
+     * Called by handleComputeJulianDay.  Returns the default day (1-based) for the month,
+     * taking currently-set year and era into account.  Defaults to 1 for Gregorian.
+     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
+     * @param month the month, as returned by getDefaultMonthInYear
+     * @return the default day of the month
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     * @see #DAY_OF_MONTH
+     */
+    protected int getDefaultDayInMonth(int extendedYear, int month) {
+        return 1;
+    }
+
+
+    /**
+     * Subclasses may override this.  This method calls
+     * handleGetMonthLength() to obtain the calendar-specific month
+     * length.
+     * @stable ICU 2.0
+     */
+    protected int handleComputeJulianDay(int bestField) {
+
+        boolean useMonth = (bestField == DAY_OF_MONTH ||
+                            bestField == WEEK_OF_MONTH ||
+                            bestField == DAY_OF_WEEK_IN_MONTH);
+
+        int year;
+
+        if (bestField == WEEK_OF_YEAR) {
+            // Nota Bene!  It is critical that YEAR_WOY be used as the year here, if it is set.
+            // Otherwise, when WOY is the best field, the year may be wrong at the extreme limits of the year.
+            // If YEAR_WOY is not set then it will fall back.
+            // TODO: Should resolveField(YEAR_PRECEDENCE) be brought to bear? 
+            year = internalGet(YEAR_WOY, handleGetExtendedYear());
+        } else {
+            year = handleGetExtendedYear();
+        }
+
+        internalSet(EXTENDED_YEAR, year);
+
+        int month = useMonth ? internalGet(MONTH, getDefaultMonthInYear(year)) : 0;
+        
+        // Get the Julian day of the day BEFORE the start of this year.
+        // If useMonth is true, get the day before the start of the month.
+        int julianDay = handleComputeMonthStart(year, month, useMonth);
+
+        if (bestField == DAY_OF_MONTH) {
+            if(isSet(DAY_OF_MONTH)) {
+                return julianDay + internalGet(DAY_OF_MONTH, getDefaultDayInMonth(year, month));
+            } else {
+                return julianDay + getDefaultDayInMonth(year, month);
+            }
+        }
+
+        if (bestField == DAY_OF_YEAR) {
+            return julianDay + internalGet(DAY_OF_YEAR);
+        }
+
+        int firstDOW = getFirstDayOfWeek(); // Localized fdw
+
+        // At this point julianDay is the 0-based day BEFORE the first day of
+        // January 1, year 1 of the given calendar.  If julianDay == 0, it
+        // specifies (Jan. 1, 1) - 1, in whatever calendar we are using (Julian
+        // or Gregorian).
+
+        // At this point we need to process the WEEK_OF_MONTH or
+        // WEEK_OF_YEAR, which are similar, or the DAY_OF_WEEK_IN_MONTH.
+        // First, perform initial shared computations.  These locate the
+        // first week of the period.
+
+        // Get the 0-based localized DOW of day one of the month or year.
+        // Valid range 0..6.
+        int first = julianDayToDayOfWeek(julianDay + 1) - firstDOW;
+        if (first < 0) {
+            first += 7;
+        }
+
+        // Get zero-based localized DOW, valid range 0..6.  This is the DOW
+        // we are looking for.
+        int dowLocal = 0;
+        switch (resolveFields(DOW_PRECEDENCE)) {
+        case DAY_OF_WEEK:
+            dowLocal = internalGet(DAY_OF_WEEK) - firstDOW;
+            break;
+        case DOW_LOCAL:
+            dowLocal = internalGet(DOW_LOCAL) - 1;
+            break;
+        }
+        dowLocal = dowLocal % 7;
+        if (dowLocal < 0) {
+            dowLocal += 7;
+        }
+
+        // Find the first target DOW (dowLocal) in the month or year.
+        // Actually, it may be just before the first of the month or year.
+        // It will be an integer from -5..7.
+        int date = 1 - first + dowLocal;
+
+        if (bestField == DAY_OF_WEEK_IN_MONTH) {
+
+            // Adjust the target DOW to be in the month or year.
+            if (date < 1) {
+                date += 7;
+            }
+
+            // The only trickiness occurs if the day-of-week-in-month is
+            // negative.
+            int dim = internalGet(DAY_OF_WEEK_IN_MONTH, 1);
+            if (dim >= 0) {
+                date += 7*(dim - 1);
+
+            } else {
+                // Move date to the last of this day-of-week in this month,
+                // then back up as needed.  If dim==-1, we don't back up at
+                // all.  If dim==-2, we back up once, etc.  Don't back up
+                // past the first of the given day-of-week in this month.
+                // Note that we handle -2, -3, etc. correctly, even though
+                // values < -1 are technically disallowed.
+                int m = internalGet(MONTH, JANUARY);
+                int monthLength = handleGetMonthLength(year, m);
+                date += ((monthLength - date) / 7 + dim + 1) * 7;
+            }
+        } else {
+            // assert(bestField == WEEK_OF_MONTH || bestField == WEEK_OF_YEAR)
+
+            // Adjust for minimal days in first week
+            if ((7 - first) < getMinimalDaysInFirstWeek()) {
+                date += 7;
+            }
+
+            // Now adjust for the week number.
+            date += 7 * (internalGet(bestField) - 1);
+        }
+
+        return julianDay + date;
+    }
+
+    /**
+     * Compute the Julian day of a month of the Gregorian calendar.
+     * Subclasses may call this method to perform a Gregorian calendar
+     * fields->millis computation.  To perform a Gregorian calendar
+     * millis->fields computation, call computeGregorianFields().
+     * @param year extended Gregorian year
+     * @param month zero-based Gregorian month
+     * @return the Julian day number of the day before the first
+     * day of the given month in the given extended year
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected int computeGregorianMonthStart(int year, int month) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            year += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        boolean isLeap = (year%4 == 0) && ((year%100 != 0) || (year%400 == 0));
+        int y = year - 1;
+        // This computation is actually ... + (JAN_1_1_JULIAN_DAY - 3) + 2.
+        // Add 2 because Gregorian calendar starts 2 days after Julian
+        // calendar.
+        int julianDay = 365*y + floorDivide(y, 4) - floorDivide(y, 100) +
+            floorDivide(y, 400) + JAN_1_1_JULIAN_DAY - 1;
+
+        // At this point julianDay indicates the day BEFORE the first day
+        // of January 1, <eyear> of the Gregorian calendar.
+        if (month != 0) {
+            julianDay += GREGORIAN_MONTH_COUNT[month][isLeap?3:2];
+        }
+
+        return julianDay;
+    }
+
+    //----------------------------------------------------------------------
+    // Subclass API
+    // For subclasses to override
+    //----------------------------------------------------------------------
+
+    // (The following method is not called because all existing subclasses
+    // override it.  2003-06-11 ICU 2.6 Alan)
+    ///CLOVER:OFF
+    /**
+     * Subclasses may override this method to compute several fields
+     * specific to each calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     *
+     * Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields, which
+     * will be set when this method is called.  Subclasses can also call
+     * the getGregorianXxx() methods to obtain Gregorian calendar
+     * equivalents for the given Julian day.
+     *
+     * <p>In addition, subclasses should compute any subclass-specific
+     * fields, that is, fields from BASE_FIELD_COUNT to
+     * getFieldCount() - 1.
+     *
+     * <p>The default implementation in <code>Calendar</code> implements
+     * a pure proleptic Gregorian calendar.
+     * @stable ICU 2.0
+     */
+    protected void handleComputeFields(int julianDay) {
+        internalSet(MONTH, getGregorianMonth());
+        internalSet(DAY_OF_MONTH, getGregorianDayOfMonth());
+        internalSet(DAY_OF_YEAR, getGregorianDayOfYear());
+        int eyear = getGregorianYear();
+        internalSet(EXTENDED_YEAR, eyear);
+        int era = GregorianCalendar.AD;
+        if (eyear < 1) {
+            era = GregorianCalendar.BC;
+            eyear = 1 - eyear;
+        }
+        internalSet(ERA, era);
+        internalSet(YEAR, eyear);
+    }
+    ///CLOVER:ON
+
+    //----------------------------------------------------------------------
+    // Subclass API
+    // For subclasses to call
+    //----------------------------------------------------------------------
+
+    /**
+     * Return the extended year on the Gregorian calendar as computed by
+     * <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected final int getGregorianYear() {
+        return gregorianYear;
+    }
+
+    /**
+     * Return the month (0-based) on the Gregorian calendar as computed by
+     * <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected final int getGregorianMonth() {
+        return gregorianMonth;
+    }
+
+    /**
+     * Return the day of year (1-based) on the Gregorian calendar as
+     * computed by <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected final int getGregorianDayOfYear() {
+        return gregorianDayOfYear;
+    }
+
+    /**
+     * Return the day of month (1-based) on the Gregorian calendar as
+     * computed by <code>computeGregorianFields()</code>.
+     * @see #computeGregorianFields
+     * @stable ICU 2.0
+     */
+    protected final int getGregorianDayOfMonth() {
+        return gregorianDayOfMonth;
+    }
+
+    /**
+     * Return the number of fields defined by this calendar.  Valid field
+     * arguments to <code>set()</code> and <code>get()</code> are
+     * <code>0..getFieldCount()-1</code>.
+     * @stable ICU 2.0
+     */
+    public final int getFieldCount() {
+        return fields.length;
+    }
+
+    /**
+     * Set a field to a value.  Subclasses should use this method when
+     * computing fields.  It sets the time stamp in the
+     * <code>stamp[]</code> array to <code>INTERNALLY_SET</code>.  If a
+     * field that may not be set by subclasses is passed in, an
+     * <code>IllegalArgumentException</code> is thrown.  This prevents
+     * subclasses from modifying fields that are intended to be
+     * calendar-system invariant.
+     * @stable ICU 2.0
+     */
+    protected final void internalSet(int field, int value) {
+        if (((1 << field) & internalSetMask) == 0) {
+            throw new IllegalStateException("Subclass cannot set " +
+                                            fieldName(field));
+        }
+        fields[field] = value;
+        stamp[field] = INTERNALLY_SET;
+    }
+
+    private static final int[][] GREGORIAN_MONTH_COUNT = {
+        //len len2   st  st2
+        {  31,  31,   0,   0 }, // Jan
+        {  28,  29,  31,  31 }, // Feb
+        {  31,  31,  59,  60 }, // Mar
+        {  30,  30,  90,  91 }, // Apr
+        {  31,  31, 120, 121 }, // May
+        {  30,  30, 151, 152 }, // Jun
+        {  31,  31, 181, 182 }, // Jul
+        {  31,  31, 212, 213 }, // Aug
+        {  30,  30, 243, 244 }, // Sep
+        {  31,  31, 273, 274 }, // Oct
+        {  30,  30, 304, 305 }, // Nov
+        {  31,  31, 334, 335 }  // Dec
+        // len  length of month
+        // len2 length of month in a leap year
+        // st   days in year before start of month
+        // st2  days in year before month in leap year
+    };
+
+    /**
+     * Determines if the given year is a leap year. Returns true if the
+     * given year is a leap year.
+     * @param year the given year.
+     * @return true if the given year is a leap year; false otherwise.
+     * @stable ICU 2.0
+     */
+    protected static final boolean isGregorianLeapYear(int year) {
+        return (year%4 == 0) && ((year%100 != 0) || (year%400 == 0));
+    }
+
+    /**
+     * Return the length of a month of the Gregorian calendar.
+     * @param y the extended year
+     * @param m the 0-based month number
+     * @return the number of days in the given month
+     * @stable ICU 2.0
+     */
+    protected static final int gregorianMonthLength(int y, int m) {
+        return GREGORIAN_MONTH_COUNT[m][isGregorianLeapYear(y)?1:0];
+    }
+
+    /**
+     * Return the length of a previous month of the Gregorian calendar.
+     * @param y the extended year
+     * @param m the 0-based month number
+     * @return the number of days in the month previous to the given month
+     * @stable ICU 2.0
+     */
+    protected static final int gregorianPreviousMonthLength(int y, int m) {
+        return (m > 0) ? gregorianMonthLength(y, m-1) : 31;
+    }
+
+    /**
+     * Divide two long integers, returning the floor of the quotient.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0
+     * but <code>floorDivide(-1,4)</code> => -1.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @return the floor of the quotient.
+     * @stable ICU 2.0
+     */
+    protected static final long floorDivide(long numerator, long denominator) {
+        // We do this computation in order to handle
+        // a numerator of Long.MIN_VALUE correctly
+        return (numerator >= 0) ?
+            numerator / denominator :
+            ((numerator + 1) / denominator) - 1;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0
+     * but <code>floorDivide(-1,4)</code> => -1.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @return the floor of the quotient.
+     * @stable ICU 2.0
+     */
+    protected static final int floorDivide(int numerator, int denominator) {
+        // We do this computation in order to handle
+        // a numerator of Integer.MIN_VALUE correctly
+        return (numerator >= 0) ?
+            numerator / denominator :
+            ((numerator + 1) / denominator) - 1;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient, and
+     * the modulus remainder.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0 and <code>-1%4</code> => -1,
+     * but <code>floorDivide(-1,4)</code> => -1 with <code>remainder[0]</code> => 3.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @param remainder an array of at least one element in which the value
+     * <code>numerator mod denominator</code> is returned. Unlike <code>numerator
+     * % denominator</code>, this will always be non-negative.
+     * @return the floor of the quotient.
+     * @stable ICU 2.0
+     */
+    protected static final int floorDivide(int numerator, int denominator, int[] remainder) {
+        if (numerator >= 0) {
+            remainder[0] = numerator % denominator;
+            return numerator / denominator;
+        }
+    int quotient = ((numerator + 1) / denominator) - 1;
+        remainder[0] = numerator - (quotient * denominator);
+        return quotient;
+    }
+
+    /**
+     * Divide two integers, returning the floor of the quotient, and
+     * the modulus remainder.
+     * <p>
+     * Unlike the built-in division, this is mathematically well-behaved.
+     * E.g., <code>-1/4</code> => 0 and <code>-1%4</code> => -1,
+     * but <code>floorDivide(-1,4)</code> => -1 with <code>remainder[0]</code> => 3.
+     * @param numerator the numerator
+     * @param denominator a divisor which must be > 0
+     * @param remainder an array of at least one element in which the value
+     * <code>numerator mod denominator</code> is returned. Unlike <code>numerator
+     * % denominator</code>, this will always be non-negative.
+     * @return the floor of the quotient.
+     * @stable ICU 2.0
+     */
+    protected static final int floorDivide(long numerator, int denominator, int[] remainder) {
+        if (numerator >= 0) {
+            remainder[0] = (int)(numerator % denominator);
+            return (int)(numerator / denominator);
+        }
+        int quotient = (int)(((numerator + 1) / denominator) - 1);
+        remainder[0] = (int)(numerator - (quotient * denominator));
+        return quotient;
+    }
+
+    private static final String[] FIELD_NAME = {
+        "ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH",
+        "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK",
+        "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY",
+        "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET",
+        "DST_OFFSET", "YEAR_WOY", "DOW_LOCAL", "EXTENDED_YEAR",
+        "JULIAN_DAY", "MILLISECONDS_IN_DAY",
+    };
+
+    /**
+     * Return a string name for a field, for debugging and exceptions.
+     * @stable ICU 2.0
+     */
+    protected String fieldName(int field) {
+        try {
+            return FIELD_NAME[field];
+        } catch (ArrayIndexOutOfBoundsException e) {
+            return "Field " + field;
+        }
+    }
+
+    /**
+     * Converts time as milliseconds to Julian day.
+     * @param millis the given milliseconds.
+     * @return the Julian day number.
+     * @stable ICU 2.0
+     */
+    protected static final int millisToJulianDay(long millis) {
+        return (int) (EPOCH_JULIAN_DAY + floorDivide(millis, ONE_DAY));
+    }
+
+    /**
+     * Converts Julian day to time as milliseconds.
+     * @param julian the given Julian day number.
+     * @return time as milliseconds.
+     * @stable ICU 2.0
+     */
+    protected static final long julianDayToMillis(int julian) {
+        return (julian - EPOCH_JULIAN_DAY) * ONE_DAY;
+    }
+
+    /**
+     * Return the day of week, from SUNDAY to SATURDAY, given a Julian day.
+     * @stable ICU 2.0
+     */
+    protected static final int julianDayToDayOfWeek(int julian) {
+        // If julian is negative, then julian%7 will be negative, so we adjust
+        // accordingly.  Julian day 0 is Monday.
+        int dayOfWeek = (julian + MONDAY) % 7;
+        if (dayOfWeek < SUNDAY) {
+            dayOfWeek += 7;
+        }
+        return dayOfWeek;
+    }
+
+    /**
+     * Return the current milliseconds without recomputing.
+     * @stable ICU 2.0
+     */
+    protected final long internalGetTimeInMillis() {
+        return time;
+    }
+    
+    /**
+     * Return the current Calendar type.
+     * Note, in 3.0 this function will return 'gregorian' in Calendar to emulate legacy behavior
+     * @return type of calendar (gregorian, etc)
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "gregorian";
+    }
+    
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be implemented in ICU 3.0; ICU 2.8
+     * contains a partial preview implementation.  The * <i>actual</i>
+     * locale is returned correctly, but the <i>valid</i> locale is
+     * not, in most cases.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        return type == ULocale.ACTUAL_LOCALE ?
+            this.actualLocale : this.validLocale;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /**
+     * The most specific locale containing any resource data, or null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale validLocale;
+
+    /**
+     * The locale containing data used to construct this object, or
+     * null.
+     * @see com.ibm.icu.util.ULocale
+     * @internal
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+    
+    private static final String calendarValues[][]={
+        {"japanese","JP"},
+        {"islamic-civil","AE", "BH", "DJ", "DZ", "EG", "EH", "ER", "IL", "IQ", "JO", "KM", "KW",
+            "LB", "LY", "MA", "MR", "OM", "PS", "QA", "SA", "SD", "SY", "TD", "TN", "YE", "AF", "IR"},
+        {"islamic","AE", "BH", "DJ", "DZ", "EG", "EH", "ER", "IL", "IQ", "JO", "KM", "KW",
+            "LB", "LY", "MA", "MR", "OM", "PS", "QA", "SA", "SD", "SY", "TD", "TN", "YE", "AF", "IR"},
+        {"chinese","CN", "CX", "HK", "MO", "SG", "TW"},
+        {"hebrew","IL"},
+        {"buddhist","TH"},
+        {"coptic","EG"},
+        {"persian","AF", "IR"},
+        {"ethiopic","ET"},
+        {"indian","IN"},
+        {"roc","TW"}
+    };
+    
+    /**
+     * Given a keyword and a locale, returns an array of string values in a preferred order that would make a difference. 
+     * These are all and only those values where the open (creation) of the service with the locale
+     * formed from the input locale plus input keyword and that value has different behavior than
+     * creation with the input locale alone. For example, calling this with "de", "collation" returns {"phonebook","standard"}
+     * @param keyword one of the keyword {"collation", "calendar", "currency"}
+     * @param locLD input ULocale
+     * @param commonlyUsed if set to true it will return commonly used values with the given locale else all the available values
+     * @return an array of string values for a given keyword and locale
+     * @draft ICU 4.2
+     */
+    public static final String[] getKeywordValues(String keyword, ULocale locID, boolean commonlyUsed) {
+        ICUResourceBundle r = null;
+        String baseName,resName;
+        baseName = ICUResourceBundle.ICU_BASE_NAME;
+        resName = "calendarData";
+        String kwVal = locID.getKeywordValue(keyword);
+        Enumeration e;
+        //HashSet set = new HashSet();
+        LinkedList set = new LinkedList();
+        String gregorian = "gregorian"; 
+        ArrayList countryCodes = new ArrayList();
+        
+        if(commonlyUsed && kwVal != null){
+            set.add(kwVal);
+            return (String[]) set.toArray(new String[set.size()]);
+        }
+        
+        String countryName = locID.getCountry();
+        if(commonlyUsed && countryName.equals("")){
+            ULocale newLoc = ULocale.addLikelySubtags(locID);
+            countryName = newLoc.getCountry();
+        }
+        
+        if(commonlyUsed){
+            set.add(gregorian); // Gregorian should always be added
+            for(int i=0;i<calendarValues.length;i++){
+                for(int j=1;j<calendarValues[i].length;j++){
+                    countryCodes.add(calendarValues[i][j]);
+                }
+                if(countryCodes.contains(countryName)){
+                    set.add(calendarValues[i][0]);
+                    countryCodes.clear();
+                }
+            }
+            return (String[]) set.toArray(new String[set.size()]);
+        }
+        
+        r = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(baseName, "supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        ICUResourceBundle irb = (ICUResourceBundle)r.get(resName);
+        e= irb.getKeys();
+        while(e.hasMoreElements()){
+            set.add(e.nextElement());
+        }
+        
+        return (String[]) set.toArray(new String[set.size()]);
+    }
+}
+
diff --git a/src/com/ibm/icu/util/CalendarServiceShim.java b/src/com/ibm/icu/util/CalendarServiceShim.java
new file mode 100644
index 0000000..46a4214
--- /dev/null
+++ b/src/com/ibm/icu/util/CalendarServiceShim.java
@@ -0,0 +1,107 @@
+/*
+*   Copyright (C) 2007-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.util;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.ICULocaleService;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKey;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICUService.Key;
+import com.ibm.icu.util.Calendar.CalendarFactory;
+
+class CalendarServiceShim extends Calendar.CalendarShim {
+
+    Locale[] getAvailableLocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableULocales();
+    }
+
+    private static final class CalFactory extends LocaleKeyFactory {
+        private CalendarFactory delegate;
+        CalFactory(CalendarFactory delegate) {
+            super(delegate.visible() ? VISIBLE : INVISIBLE);
+            this.delegate = delegate;
+        }
+
+        public Object create(Key key, ICUService srvc) {
+            if (handlesKey(key)) {
+                LocaleKey lkey = (LocaleKey)key;
+                ULocale loc = lkey.canonicalLocale();
+                Object result = delegate.createCalendar(loc);
+                if (result == null) {
+                    result = srvc.getKey(key, null, this);
+                }
+                return result;
+            }
+            return null;
+        }
+
+        protected Set getSupportedIDs() {
+            return delegate.getSupportedLocaleNames();
+        }
+    }
+
+    Calendar createInstance(ULocale desiredLocale) {
+        ULocale[] actualLoc = new ULocale[1];
+        if (desiredLocale.equals(ULocale.ROOT)) {
+            desiredLocale = ULocale.ROOT;
+        }
+        Calendar cal = (Calendar)service.get(desiredLocale, actualLoc);
+        if (cal == null) {
+            throw new MissingResourceException("Unable to construct Calendar", "", "");
+        }
+        cal = (Calendar)cal.clone();
+
+        /* !!! TODO !!! actualLoc returned by service is not properly set.
+         * When this Calendar object is being created, cal.setLocale is called
+         * and proper actual locale is set at that time.  Revisit this later.
+         * -yoshito
+         */
+        /*
+        ULocale uloc = actualLoc[0];
+        cal.setLocale(uloc, uloc); // service make no distinction between actual and valid
+        */
+        return cal;
+    }
+
+    Object registerFactory(CalendarFactory factory) {
+        return service.registerFactory(new CalFactory(factory));
+    }
+
+    boolean unregister(Object k) {
+        return service.unregisterFactory((Factory)k);
+    }
+
+    private static class CalService extends ICULocaleService {
+        CalService() {
+            super("Calendar");
+            class RBCalendarFactory extends ICUResourceBundleFactory {
+                protected Object handleCreate(ULocale loc, int kind, ICUService sercice) {
+                    return Calendar.createInstance(loc);
+                }
+            }
+            this.registerFactory(new RBCalendarFactory());
+            markDefault();
+        }
+    }
+    
+    private static ICULocaleService service = new CalService();
+}
diff --git a/src/com/ibm/icu/util/CaseInsensitiveString.java b/src/com/ibm/icu/util/CaseInsensitiveString.java
new file mode 100644
index 0000000..a0818da
--- /dev/null
+++ b/src/com/ibm/icu/util/CaseInsensitiveString.java
@@ -0,0 +1,100 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * A string used as a key in java.util.Hashtable and other
+ * collections.  It retains case information, but its equals() and
+ * hashCode() methods ignore case.
+ * @stable ICU 2.0
+ */
+public class CaseInsensitiveString {
+    
+    private String string;
+
+    private int hash = 0;
+    
+    private String folded = null;
+    
+    private static String foldCase(String foldee)
+    {
+        return UCharacter.foldCase(foldee, true);
+    }
+    
+    private void getFolded()
+    {
+        if (folded == null) {
+            folded = foldCase(string);
+        }
+    }
+    
+    /**
+     * Constructs an CaseInsentiveString object from the given string
+     * @param s The string to construct this object from 
+     * @stable ICU 2.0
+     */
+    public CaseInsensitiveString(String s) {
+        string = s;
+    }
+    /**
+     * returns the underlying string 
+     * @return String
+     * @stable ICU 2.0
+     */
+    public String getString() {
+        return string;
+    }
+    /**
+     * Compare the object with this 
+     * @param o Object to compare this object with 
+     * @stable ICU 2.0
+     */
+    public boolean equals(Object o) {
+        getFolded();
+        
+        try {
+            CaseInsensitiveString cis = (CaseInsensitiveString) o;
+            
+            cis.getFolded();
+            
+            return folded.equals(cis.folded);
+        } catch (ClassCastException e) {
+            try {
+                String s = (String) o;
+                
+                return folded.equals(foldCase(s));
+            } catch (ClassCastException e2) {
+                return false;
+            }
+        }
+    }
+    
+    /**
+     * Returns the hashCode of this object
+     * @return int hashcode
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        getFolded();
+        
+        if (hash == 0) {
+            hash = folded.hashCode();
+        }
+        
+        return hash;
+    }
+    
+    /**
+     * Overrides superclass method
+     * @stable ICU 3.6
+     */
+    public String toString() {
+        return string;
+    }
+}
diff --git a/src/com/ibm/icu/util/ChineseCalendar.java b/src/com/ibm/icu/util/ChineseCalendar.java
new file mode 100644
index 0000000..d0e1deb
--- /dev/null
+++ b/src/com/ibm/icu/util/ChineseCalendar.java
@@ -0,0 +1,991 @@
+/*********************************************************************
+ * Copyright (C) 2000-2008, International Business Machines
+ * Corporation and others. All Rights Reserved.
+ *********************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.CalendarAstronomer;
+import com.ibm.icu.impl.CalendarCache;
+import com.ibm.icu.text.ChineseDateFormat;
+import com.ibm.icu.text.DateFormat;
+
+/**
+ * <code>ChineseCalendar</code> is a concrete subclass of {@link Calendar}
+ * that implements a traditional Chinese calendar.  The traditional Chinese
+ * calendar is a lunisolar calendar: Each month starts on a new moon, and
+ * the months are numbered according to solar events, specifically, to
+ * guarantee that month 11 always contains the winter solstice.  In order
+ * to accomplish this, leap months are inserted in certain years.  Leap
+ * months are numbered the same as the month they follow.  The decision of
+ * which month is a leap month depends on the relative movements of the sun
+ * and moon.
+ *
+ * <p>This class defines one addition field beyond those defined by
+ * <code>Calendar</code>: The <code>IS_LEAP_MONTH</code> field takes the
+ * value of 0 for normal months, or 1 for leap months.
+ *
+ * <p>All astronomical computations are performed with respect to a time
+ * zone of GMT+8:00 and a longitude of 120 degrees east.  Although some
+ * calendars implement a historically more accurate convention of using
+ * Beijing's local longitude (116 degrees 25 minutes east) and time zone
+ * (GMT+7:45:40) for dates before 1929, we do not implement this here.
+ *
+ * <p>Years are counted in two different ways in the Chinese calendar.  The
+ * first method is by sequential numbering from the 61st year of the reign
+ * of Huang Di, 2637 BCE, which is designated year 1 on the Chinese
+ * calendar.  The second method uses 60-year cycles from the same starting
+ * point, which is designated year 1 of cycle 1.  In this class, the
+ * <code>EXTENDED_YEAR</code> field contains the sequential year count.
+ * The <code>ERA</code> field contains the cycle number, and the
+ * <code>YEAR</code> field contains the year of the cycle, a value between
+ * 1 and 60.
+ *
+ * <p>There is some variation in what is considered the starting point of
+ * the calendar, with some sources starting in the first year of the reign
+ * of Huang Di, rather than the 61st.  This gives continuous year numbers
+ * 60 years greater and cycle numbers one greater than what this class
+ * implements.
+ *
+ * <p>Because <code>ChineseCalendar</code> defines an additional field and
+ * redefines the way the <code>ERA</code> field is used, it requires a new
+ * format class, <code>ChineseDateFormat</code>.  As always, use the
+ * methods <code>DateFormat.getXxxInstance(Calendar cal,...)</code> to
+ * obtain a formatter for this calendar.
+ *
+ * <p>References:<ul>
+ * 
+ * <li>Dershowitz and Reingold, <i>Calendrical Calculations</i>,
+ * Cambridge University Press, 1997</li>
+ * 
+ * <li>Helmer Aslaksen's
+ * <a href="http://www.math.nus.edu.sg/aslaksen/calendar/chinese.shtml">
+ * Chinese Calendar page</a></li>
+ *
+ * <li>The <a href="http://www.tondering.dk/claus/calendar.html">
+ * Calendar FAQ</a></li>
+ *
+ * </ul>
+ *
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * ChineseCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=chinese"</code>.</p>
+ *
+ * @see com.ibm.icu.text.ChineseDateFormat
+ * @see com.ibm.icu.util.Calendar
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class ChineseCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 7312110751940929420L;
+
+    //------------------------------------------------------------------
+    // Developer Notes
+    // 
+    // Time is represented as a scalar in two ways in this class.  One is
+    // the usual UTC epoch millis, that is, milliseconds after January 1,
+    // 1970 Gregorian, 0:00:00.000 UTC.  The other is in terms of 'local
+    // days.'  This is the number of days after January 1, 1970 Gregorian,
+    // local to Beijing, China (since all computations of the Chinese
+    // calendar are done in Beijing).  That is, 0 represents January 1,
+    // 1970 0:00 Asia/Shanghai.  Conversion of local days to and from
+    // standard epoch milliseconds is accomplished by the daysToMillis()
+    // and millisToDays() methods.
+    // 
+    // Several methods use caches to improve performance.  Caches are at
+    // the object, not class level, under the assumption that typical
+    // usage will be to have one instance of ChineseCalendar at a time.
+ 
+    /**
+     * We have one instance per object, and we don't synchronize it because
+     * Calendar doesn't support multithreaded execution in the first place.
+     */
+    private transient CalendarAstronomer astro = new CalendarAstronomer();
+
+    /**
+     * Cache that maps Gregorian year to local days of winter solstice.
+     * @see #winterSolstice
+     */
+    private transient CalendarCache winterSolsticeCache = new CalendarCache();
+
+    /**
+     * Cache that maps Gregorian year to local days of Chinese new year.
+     * @see #newYear
+     */
+    private transient CalendarCache newYearCache = new CalendarCache();
+
+    /**
+     * True if the current year is a leap year.  Updated with each time to
+     * fields resolution.
+     * @see #computeChineseFields
+     */
+    private transient boolean isLeapYear;
+
+    //------------------------------------------------------------------
+    // Constructors
+    //------------------------------------------------------------------
+
+    /**
+     * Construct a <code>ChineseCalendar</code> with the default time zone and locale.
+     * @stable ICU 2.8
+     */
+    public ChineseCalendar() {
+        super();
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Construct a <code>ChineseCalendar</code> with the give date set in the default time zone
+     * with the default locale.
+     * @param date The date to which the new calendar is set.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(Date date) {
+        super();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>ChineseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     * @param isLeapMonth The value used to set the Chiense calendar's (@link #IS_LEAP_MONTH)
+     *                  time field.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(int year, int month, int isLeapMonth, int date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+
+        // We need to set the current time once to initialize the ChineseCalendar's
+        // ERA field to be the current era.
+        setTimeInMillis(System.currentTimeMillis());
+        // Then we need to clean up time fields
+        this.set(MILLISECONDS_IN_DAY, 0);
+
+        // Then set the given field values.
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(IS_LEAP_MONTH, isLeapMonth);
+        this.set(DATE, date);
+    }
+
+    /**
+     * Constructs a <code>ChineseCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year  the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for January.
+     * @param isLeapMonth the value used to set the {@link #IS_LEAP_MONTH} time field
+     *              in the calendar.
+     * @param date  the value used to set the {@link #DATE DATE} time field in the calendar.
+     * @param hour  the value used to set the {@link #HOUR_OF_DAY HOUR_OF_DAY} time field
+     *              in the calendar.
+     * @param minute the value used to set the {@link #MINUTE MINUTE} time field
+     *              in the calendar.
+     * @param second the value used to set the {@link #SECOND SECOND} time field
+     *              in the calendar.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(int year, int month, int isLeapMonth, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+
+        // We need to set the current time once to initialize the ChineseCalendar's
+        // ERA field to be the current era.
+        setTimeInMillis(System.currentTimeMillis());
+        // Then set 0 to millisecond field
+        this.set(MILLISECOND, 0);
+
+        // Then, set the given field values.
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(IS_LEAP_MONTH, isLeapMonth);
+        this.set(DATE, date);
+        this.set(HOUR_OF_DAY, hour);
+        this.set(MINUTE, minute);
+        this.set(SECOND, second);
+    }
+
+    /**
+     * Constructs a <code>ChineseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale The given locale
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Construct a <code>ChineseCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(TimeZone zone) {
+        super(zone, ULocale.getDefault());
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Construct a <code>ChineseCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     * @param zone the given time zone
+     * @param aLocale the given locale
+     * @stable ICU 2.8
+     */
+    public ChineseCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>ChineseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ChineseCalendar(ULocale locale) {
+        this(TimeZone.getDefault(), locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Construct a <code>ChineseCalendar</code>  based on the current time
+     * with the given time zone with the given locale.
+     * @param zone the given time zone
+     * @param locale the given ulocale
+     * @stable ICU 3.2
+     */
+    public ChineseCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    //------------------------------------------------------------------
+    // Public constants
+    //------------------------------------------------------------------
+
+    /**
+     * Field indicating whether or not the current month is a leap month.
+     * Should have a value of 0 for non-leap months, and 1 for leap months.
+     * @stable ICU 2.8
+     */
+    public static int IS_LEAP_MONTH = BASE_FIELD_COUNT;
+
+    /**
+     * Count of fields in this class.
+     */
+    private static final int FIELD_COUNT = IS_LEAP_MONTH + 1;
+
+    //------------------------------------------------------------------
+    // Calendar framework
+    //------------------------------------------------------------------
+
+    /**
+     * Override Calendar to allocate our additional field.
+     * @stable ICU 2.8
+     */
+    protected int[] handleCreateFields() {
+        return new int[FIELD_COUNT];
+    }
+
+    /**
+     * Array defining the limits of field values for this class.  Field
+     * limits which are invariant with respect to calendar system and
+     * defined by Calendar are left blank.
+     *
+     * Notes:
+     *
+     * ERA 5000000 / 60 = 83333.
+     *
+     * MONTH There are 12 or 13 lunar months in a year.  However, we always
+     * number them 0..11, with an intercalated, identically numbered leap
+     * month, when necessary.
+     *
+     * DAY_OF_YEAR In a non-leap year there are 353, 354, or 355 days.  In
+     * a leap year there are 383, 384, or 385 days.
+     *
+     * WEEK_OF_YEAR The least maximum occurs if there are 353 days in the
+     * year, and the first 6 are the last week of the previous year.  Then
+     * we have 49 full weeks and 4 days in the last week: 6 + 49*7 + 4 =
+     * 353.  So the least maximum is 50.  The maximum occurs if there are
+     * 385 days in the year, and WOY 1 extends 6 days into the prior year.
+     * Then there are 54 full weeks, and 6 days in the last week: 1 + 54*7
+     * + 6 = 385.  The 6 days of the last week will fall into WOY 1 of the
+     * next year.  Maximum is 55.
+     *
+     * WEEK_OF_MONTH In a 29 day month, if the first 7 days make up week 1
+     * that leaves 3 full weeks and 1 day at the end.  The least maximum is
+     * thus 5.  In a 30 days month, if the previous 6 days belong WOM 1 of
+     * this month, we have 4 full weeks and 1 days at the end (which
+     * technically will be WOM 1 of the next month, but will be reported by
+     * time->fields and hence by getActualMaximum as WOM 6 of this month).
+     * Maximum is 6.
+     *
+     * DAY_OF_WEEK_IN_MONTH In a 29 or 30 day month, there are 4 full weeks
+     * plus 1 or 2 days at the end, so the maximum is always 5.
+     */
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        1,        1,   83333,   83333 }, // ERA
+        {        1,        1,      60,      60 }, // YEAR
+        {        0,        0,      11,      11 }, // MONTH
+        {        1,        1,      50,      55 }, // WEEK_OF_YEAR
+        {/*                                  */}, // WEEK_OF_MONTH
+        {        1,        1,      29,      30 }, // DAY_OF_MONTH
+        {        1,        1,     353,     385 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       5,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000000, -5000000, 5000000, 5000000 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+        {        0,        0,       1,       1 }, // IS_LEAP_MONTH
+    };
+
+    /**
+     * Override Calendar to return the limit value for the given field.
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    /**
+     * Implement abstract Calendar method to return the extended year
+     * defined by the current fields.  This will use either the ERA and
+     * YEAR field as the cycle and year-of-cycle, or the EXTENDED_YEAR
+     * field as the continuous year count, depending on which is newer.
+     * @stable ICU 2.8
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newestStamp(ERA, YEAR, UNSET) <= getStamp(EXTENDED_YEAR)) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            int cycle = internalGet(ERA, 1) - 1; // 0-based cycle
+            year = cycle * 60 + internalGet(YEAR, 1);
+        }
+        return year;
+    }
+
+    /**
+     * Override Calendar method to return the number of days in the given
+     * extended year and month.
+     *
+     * <p>Note: This method also reads the IS_LEAP_MONTH field to determine
+     * whether or not the given month is a leap month.
+     * @stable ICU 2.8
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        int thisStart = handleComputeMonthStart(extendedYear, month, true) -
+            EPOCH_JULIAN_DAY + 1; // Julian day -> local days
+        int nextStart = newMoonNear(thisStart + SYNODIC_GAP, true);
+        return nextStart - thisStart;
+    }
+
+    /**
+     * Framework method to create a calendar-specific DateFormat object
+     * using the the given pattern.  This method is responsible for
+     * creating the calendar- specific DateFormat and DateFormatSymbols
+     * objects as needed.
+     * @stable ICU 2.8
+     */
+    protected DateFormat handleGetDateFormat(String pattern, ULocale locale) {
+        return new ChineseDateFormat(pattern, locale);
+    }
+
+    /**
+     * Field resolution table that incorporates IS_LEAP_MONTH.
+     */
+    static final int[][][] CHINESE_DATE_PRECEDENCE = {
+        {
+            { DAY_OF_MONTH },
+            { WEEK_OF_YEAR, DAY_OF_WEEK },
+            { WEEK_OF_MONTH, DAY_OF_WEEK },
+            { DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { WEEK_OF_YEAR, DOW_LOCAL },
+            { WEEK_OF_MONTH, DOW_LOCAL },
+            { DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+            { DAY_OF_YEAR },
+            { RESOLVE_REMAP | DAY_OF_MONTH, IS_LEAP_MONTH },
+        },
+        {
+            { WEEK_OF_YEAR },
+            { WEEK_OF_MONTH },
+            { DAY_OF_WEEK_IN_MONTH },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DAY_OF_WEEK },
+            { RESOLVE_REMAP | DAY_OF_WEEK_IN_MONTH, DOW_LOCAL },
+        },
+    };
+
+    /**
+     * Override Calendar to add IS_LEAP_MONTH to the field resolution
+     * table.
+     * @stable ICU 2.8
+     */
+    protected int[][][] getFieldResolutionTable() {
+        return CHINESE_DATE_PRECEDENCE;
+    }
+
+    /**
+     * Adjust this calendar to be delta months before or after a given
+     * start position, pinning the day of month if necessary.  The start
+     * position is given as a local days number for the start of the month
+     * and a day-of-month.  Used by add() and roll().
+     * @param newMoon the local days of the first day of the month of the
+     * start position (days after January 1, 1970 0:00 Asia/Shanghai)
+     * @param dom the 1-based day-of-month of the start position
+     * @param delta the number of months to move forward or backward from
+     * the start position
+     */
+    private void offsetMonth(int newMoon, int dom, int delta) {
+        // Move to the middle of the month before our target month.
+        newMoon += (int) (CalendarAstronomer.SYNODIC_MONTH * (delta - 0.5));
+
+        // Search forward to the target month's new moon
+        newMoon = newMoonNear(newMoon, true);
+
+        // Find the target dom
+        int jd = newMoon + EPOCH_JULIAN_DAY - 1 + dom;
+
+        // Pin the dom.  In this calendar all months are 29 or 30 days
+        // so pinning just means handling dom 30.
+        if (dom > 29) {
+            set(JULIAN_DAY, jd-1);
+            // TODO Fix this.  We really shouldn't ever have to
+            // explicitly call complete().  This is either a bug in
+            // this method, in ChineseCalendar, or in
+            // Calendar.getActualMaximum().  I suspect the last.
+            complete();
+            if (getActualMaximum(DAY_OF_MONTH) >= dom) {
+                set(JULIAN_DAY, jd);
+            }
+        } else {
+            set(JULIAN_DAY, jd);
+        }
+    }
+
+    /**
+     * Override Calendar to handle leap months properly.
+     * @stable ICU 2.8
+     */
+    public void add(int field, int amount) {
+        switch (field) {
+        case MONTH:
+            if (amount != 0) {
+                int dom = get(DAY_OF_MONTH);
+                int day = get(JULIAN_DAY) - EPOCH_JULIAN_DAY; // Get local day
+                int moon = day - dom + 1; // New moon 
+                offsetMonth(moon, dom, amount);
+            }
+            break;
+        default:
+            super.add(field, amount);
+            break;
+        }
+    }
+
+    /**
+     * Override Calendar to handle leap months properly.
+     * @stable ICU 2.8
+     */
+    public void roll(int field, int amount) {
+        switch (field) {
+        case MONTH:
+            if (amount != 0) {
+                int dom = get(DAY_OF_MONTH);
+                int day = get(JULIAN_DAY) - EPOCH_JULIAN_DAY; // Get local day
+                int moon = day - dom + 1; // New moon (start of this month)
+
+                // Note throughout the following:  Months 12 and 1 are never
+                // followed by a leap month (D&R p. 185).
+
+                // Compute the adjusted month number m.  This is zero-based
+                // value from 0..11 in a non-leap year, and from 0..12 in a
+                // leap year.
+                int m = get(MONTH); // 0-based month
+                if (isLeapYear) { // (member variable)
+                    if (get(IS_LEAP_MONTH) == 1) {
+                        ++m;
+                    } else {
+                        // Check for a prior leap month.  (In the
+                        // following, month 0 is the first month of the
+                        // year.)  Month 0 is never followed by a leap
+                        // month, and we know month m is not a leap month.
+                        // moon1 will be the start of month 0 if there is
+                        // no leap month between month 0 and month m;
+                        // otherwise it will be the start of month 1.
+                        int moon1 = moon -
+                            (int) (CalendarAstronomer.SYNODIC_MONTH * (m - 0.5));
+                        moon1 = newMoonNear(moon1, true);
+                        if (isLeapMonthBetween(moon1, moon)) {
+                            ++m;
+                        }
+                    }
+                }
+
+                // Now do the standard roll computation on m, with the
+                // allowed range of 0..n-1, where n is 12 or 13.
+                int n = isLeapYear ? 13 : 12; // Months in this year
+                int newM = (m + amount) % n;
+                if (newM < 0) {
+                    newM += n;
+                }
+
+                if (newM != m) {
+                    offsetMonth(moon, dom, newM - m);
+                }
+            }
+            break;
+        default:
+            super.roll(field, amount);
+            break;
+        }
+    }
+
+    //------------------------------------------------------------------
+    // Support methods and constants
+    //------------------------------------------------------------------
+   
+    /**
+     * The start year of the Chinese calendar, the 61st year of the reign
+     * of Huang Di.  Some sources use the first year of his reign,
+     * resulting in EXTENDED_YEAR values 60 years greater and ERA (cycle)
+     * values one greater.
+     */
+    private static final int CHINESE_EPOCH_YEAR = -2636; // Gregorian year
+
+    /**
+     * The offset from GMT in milliseconds at which we perform astronomical
+     * computations.  Some sources use a different historically accurate
+     * offset of GMT+7:45:40 for years before 1929; we do not do this.
+     */
+    private static final long CHINA_OFFSET = 8*ONE_HOUR;
+
+    /**
+     * Value to be added or subtracted from the local days of a new moon to
+     * get close to the next or prior new moon, but not cross it.  Must be
+     * >= 1 and < CalendarAstronomer.SYNODIC_MONTH.
+     */
+    private static final int SYNODIC_GAP = 25;
+
+    /**
+     * Convert local days to UTC epoch milliseconds.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     * @return milliseconds after January 1, 1970 0:00 GMT
+     */
+    private static final long daysToMillis(int days) {
+        return (days * ONE_DAY) - CHINA_OFFSET;
+    }
+
+    /**
+     * Convert UTC epoch milliseconds to local days.
+     * @param millis milliseconds after January 1, 1970 0:00 GMT
+     * @return days after January 1, 1970 0:00 Asia/Shanghai
+     */
+    private static final int millisToDays(long millis) {
+        return (int) floorDivide(millis + CHINA_OFFSET, ONE_DAY);
+    }
+
+    //------------------------------------------------------------------
+    // Astronomical computations
+    //------------------------------------------------------------------
+    
+    /**
+     * Return the major solar term on or after December 15 of the given
+     * Gregorian year, that is, the winter solstice of the given year.
+     * Computations are relative to Asia/Shanghai time zone.
+     * @param gyear a Gregorian year
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the
+     * winter solstice of the given year
+     */
+    private int winterSolstice(int gyear) {
+
+        long cacheValue = winterSolsticeCache.get(gyear);
+
+        if (cacheValue == CalendarCache.EMPTY) {
+            // In books December 15 is used, but it fails for some years
+            // using our algorithms, e.g.: 1298 1391 1492 1553 1560.  That
+            // is, winterSolstice(1298) starts search at Dec 14 08:00:00
+            // PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
+            long ms = daysToMillis(computeGregorianMonthStart(gyear, DECEMBER) +
+                                   1 - EPOCH_JULIAN_DAY);
+            astro.setTime(ms);
+            
+            // Winter solstice is 270 degrees solar longitude aka Dongzhi
+            long solarLong = astro.getSunTime(CalendarAstronomer.WINTER_SOLSTICE,
+                                              true);
+            cacheValue = millisToDays(solarLong);
+            winterSolsticeCache.put(gyear, cacheValue);
+        }
+        return (int) cacheValue;
+    }
+
+    /**
+     * Return the closest new moon to the given date, searching either
+     * forward or backward in time.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     * @param after if true, search for a new moon on or after the given
+     * date; otherwise, search for a new moon before it
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the nearest
+     * new moon after or before <code>days</code>
+     */
+    private int newMoonNear(int days, boolean after) {
+        
+        astro.setTime(daysToMillis(days));
+        long newMoon = astro.getMoonTime(CalendarAstronomer.NEW_MOON, after);
+        
+        return millisToDays(newMoon);
+    }
+
+    /**
+     * Return the nearest integer number of synodic months between
+     * two dates.
+     * @param day1 days after January 1, 1970 0:00 Asia/Shanghai
+     * @param day2 days after January 1, 1970 0:00 Asia/Shanghai
+     * @return the nearest integer number of months between day1 and day2
+     */
+    private int synodicMonthsBetween(int day1, int day2) {
+        return (int) Math.round((day2 - day1) / CalendarAstronomer.SYNODIC_MONTH);
+    }
+
+    /**
+     * Return the major solar term on or before a given date.  This
+     * will be an integer from 1..12, with 1 corresponding to 330 degrees,
+     * 2 to 0 degrees, 3 to 30 degrees,..., and 12 to 300 degrees.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai
+     */
+    private int majorSolarTerm(int days) {
+        
+        astro.setTime(daysToMillis(days));
+
+        // Compute (floor(solarLongitude / (pi/6)) + 2) % 12
+        int term = ((int) Math.floor(6 * astro.getSunLongitude() / Math.PI) + 2) % 12;
+        if (term < 1) {
+            term += 12;
+        }
+        return term;
+    }
+
+    /**
+     * Return true if the given month lacks a major solar term.
+     * @param newMoon days after January 1, 1970 0:00 Asia/Shanghai of a new
+     * moon
+     */
+    private boolean hasNoMajorSolarTerm(int newMoon) {
+        
+        int mst = majorSolarTerm(newMoon);
+        int nmn = newMoonNear(newMoon + SYNODIC_GAP, true);
+        int mstt = majorSolarTerm(nmn);
+        return mst == mstt;
+        /*
+        return majorSolarTerm(newMoon) ==
+            majorSolarTerm(newMoonNear(newMoon + SYNODIC_GAP, true));
+        */
+    }
+
+    //------------------------------------------------------------------
+    // Time to fields
+    //------------------------------------------------------------------
+    
+    /**
+     * Return true if there is a leap month on or after month newMoon1 and
+     * at or before month newMoon2.
+     * @param newMoon1 days after January 1, 1970 0:00 Asia/Shanghai of a
+     * new moon
+     * @param newMoon2 days after January 1, 1970 0:00 Asia/Shanghai of a
+     * new moon
+     */
+    private boolean isLeapMonthBetween(int newMoon1, int newMoon2) {
+
+        // This is only needed to debug the timeOfAngle divergence bug.
+        // Remove this later. Liu 11/9/00
+        // DEBUG
+        if (synodicMonthsBetween(newMoon1, newMoon2) >= 50) {
+            throw new IllegalArgumentException("isLeapMonthBetween(" + newMoon1 +
+                                               ", " + newMoon2 +
+                                               "): Invalid parameters");
+        }
+
+        return (newMoon2 >= newMoon1) &&
+            (isLeapMonthBetween(newMoon1, newMoonNear(newMoon2 - SYNODIC_GAP, false)) ||
+             hasNoMajorSolarTerm(newMoon2));
+    }
+
+    /**
+     * Override Calendar to compute several fields specific to the Chinese
+     * calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
+     * method is called.  The getGregorianXxx() methods return Gregorian
+     * calendar equivalents for the given Julian day.
+     *
+     * <p>Compute the ChineseCalendar-specific field IS_LEAP_MONTH.
+     * @stable ICU 2.8
+     */
+    protected void handleComputeFields(int julianDay) {
+
+        computeChineseFields(julianDay - EPOCH_JULIAN_DAY, // local days
+                             getGregorianYear(), getGregorianMonth(),
+                             true); // set all fields
+    }
+
+    /**
+     * Compute fields for the Chinese calendar system.  This method can
+     * either set all relevant fields, as required by
+     * <code>handleComputeFields()</code>, or it can just set the MONTH and
+     * IS_LEAP_MONTH fields, as required by
+     * <code>handleComputeMonthStart()</code>.
+     *
+     * <p>As a side effect, this method sets {@link #isLeapYear}.
+     * @param days days after January 1, 1970 0:00 Asia/Shanghai of the
+     * date to compute fields for
+     * @param gyear the Gregorian year of the given date
+     * @param gmonth the Gregorian month of the given date
+     * @param setAllFields if true, set the EXTENDED_YEAR, ERA, YEAR,
+     * DAY_OF_MONTH, and DAY_OF_YEAR fields.  In either case set the MONTH
+     * and IS_LEAP_MONTH fields.
+     */
+    private void computeChineseFields(int days, int gyear, int gmonth,
+                                      boolean setAllFields) {
+
+        // Find the winter solstices before and after the target date.
+        // These define the boundaries of this Chinese year, specifically,
+        // the position of month 11, which always contains the solstice.
+        // We want solsticeBefore <= date < solsticeAfter.
+        int solsticeBefore;
+        int solsticeAfter = winterSolstice(gyear);
+        if (days < solsticeAfter) {
+            solsticeBefore = winterSolstice(gyear - 1);
+        } else {
+            solsticeBefore = solsticeAfter;
+            solsticeAfter = winterSolstice(gyear + 1);
+        }
+
+        // Find the start of the month after month 11.  This will be either
+        // the prior month 12 or leap month 11 (very rare).  Also find the
+        // start of the following month 11.
+        int firstMoon = newMoonNear(solsticeBefore + 1, true);
+        int lastMoon = newMoonNear(solsticeAfter + 1, false);
+        int thisMoon = newMoonNear(days + 1, false); // Start of this month
+        // Note: isLeapYear is a member variable
+        isLeapYear = synodicMonthsBetween(firstMoon, lastMoon) == 12;
+
+        int month = synodicMonthsBetween(firstMoon, thisMoon);
+        if (isLeapYear && isLeapMonthBetween(firstMoon, thisMoon)) {
+            month--;
+        }
+        if (month < 1) {
+            month += 12;
+        }
+
+        boolean isLeapMonth = isLeapYear &&
+            hasNoMajorSolarTerm(thisMoon) &&
+            !isLeapMonthBetween(firstMoon, newMoonNear(thisMoon - SYNODIC_GAP, false));
+
+        internalSet(MONTH, month-1); // Convert from 1-based to 0-based
+        internalSet(IS_LEAP_MONTH, isLeapMonth?1:0);
+
+        if (setAllFields) {
+
+            int year = gyear - CHINESE_EPOCH_YEAR;
+            if (month < 11 ||
+                gmonth >= JULY) {
+                year++;
+            }
+            int dayOfMonth = days - thisMoon + 1;
+
+            internalSet(EXTENDED_YEAR, year);
+
+            // 0->0,60  1->1,1  60->1,60  61->2,1  etc.
+            int[] yearOfCycle = new int[1];
+            int cycle = floorDivide(year-1, 60, yearOfCycle);
+            internalSet(ERA, cycle+1);
+            internalSet(YEAR, yearOfCycle[0]+1);
+
+            internalSet(DAY_OF_MONTH, dayOfMonth);
+
+            // Days will be before the first new year we compute if this
+            // date is in month 11, leap 11, 12.  There is never a leap 12.
+            // New year computations are cached so this should be cheap in
+            // the long run.
+            int newYear = newYear(gyear);
+            if (days < newYear) {
+                newYear = newYear(gyear-1);
+            }
+            internalSet(DAY_OF_YEAR, days - newYear + 1);
+        }
+    }
+
+    //------------------------------------------------------------------
+    // Fields to time
+    //------------------------------------------------------------------
+    
+    /**
+     * Return the Chinese new year of the given Gregorian year.
+     * @param gyear a Gregorian year
+     * @return days after January 1, 1970 0:00 Asia/Shanghai of the
+     * Chinese new year of the given year (this will be a new moon)
+     */
+    private int newYear(int gyear) {
+
+        long cacheValue = newYearCache.get(gyear);
+
+        if (cacheValue == CalendarCache.EMPTY) {
+
+            int solsticeBefore= winterSolstice(gyear - 1);
+            int solsticeAfter = winterSolstice(gyear);
+            int newMoon1 = newMoonNear(solsticeBefore + 1, true);
+            int newMoon2 = newMoonNear(newMoon1 + SYNODIC_GAP, true);
+            int newMoon11 = newMoonNear(solsticeAfter + 1, false);
+            
+            if (synodicMonthsBetween(newMoon1, newMoon11) == 12 &&
+                (hasNoMajorSolarTerm(newMoon1) || hasNoMajorSolarTerm(newMoon2))) {
+                cacheValue = newMoonNear(newMoon2 + SYNODIC_GAP, true);
+            } else {
+                cacheValue = newMoon2;
+            }
+
+            newYearCache.put(gyear, cacheValue);
+        }
+        return (int) cacheValue;
+    }
+
+    /**
+     * Return the Julian day number of day before the first day of the
+     * given month in the given extended year.
+     * 
+     * <p>Note: This method reads the IS_LEAP_MONTH field to determine
+     * whether the given month is a leap month.
+     * @param eyear the extended year
+     * @param month the zero-based month.  The month is also determined
+     * by reading the IS_LEAP_MONTH field.
+     * @return the Julian day number of the day before the first
+     * day of the given month and year
+     * @stable ICU 2.8
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            eyear += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        int gyear = eyear + CHINESE_EPOCH_YEAR - 1; // Gregorian year
+        int newYear = newYear(gyear);
+        int newMoon = newMoonNear(newYear + month * 29, true);
+        
+        int julianDay = newMoon + EPOCH_JULIAN_DAY;
+
+        // Save fields for later restoration
+        int saveMonth = internalGet(MONTH);
+        int saveIsLeapMonth = internalGet(IS_LEAP_MONTH);
+
+        // Ignore IS_LEAP_MONTH field if useMonth is false
+        int isLeapMonth = useMonth ? saveIsLeapMonth : 0;
+
+        computeGregorianFields(julianDay);
+        
+        // This will modify the MONTH and IS_LEAP_MONTH fields (only)
+        computeChineseFields(newMoon, getGregorianYear(),
+                             getGregorianMonth(), false);        
+
+        if (month != internalGet(MONTH) ||
+            isLeapMonth != internalGet(IS_LEAP_MONTH)) {
+            newMoon = newMoonNear(newMoon + SYNODIC_GAP, true);
+            julianDay = newMoon + EPOCH_JULIAN_DAY;
+        }
+
+        internalSet(MONTH, saveMonth);
+        internalSet(IS_LEAP_MONTH, saveIsLeapMonth);
+
+        return julianDay - 1;
+    }
+
+    /**
+     * Return the current Calendar type.
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "chinese";
+    }
+
+    /**
+     * Override readObject.
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        
+        /* set up the transient caches... */
+        astro = new CalendarAstronomer();
+        winterSolsticeCache = new CalendarCache();
+        newYearCache = new CalendarCache();
+    }
+    
+    /*
+    private static CalendarFactory factory;
+    public static CalendarFactory factory() {
+        if (factory == null) {
+            factory = new CalendarFactory() {
+                public Calendar create(TimeZone tz, ULocale loc) {
+                    return new ChineseCalendar(tz, loc);
+                }
+
+                public String factoryName() {
+                    return "Chinese";
+                }
+            };
+        }
+        return factory;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/util/CompactByteArray.java b/src/com/ibm/icu/util/CompactByteArray.java
new file mode 100644
index 0000000..e65064d
--- /dev/null
+++ b/src/com/ibm/icu/util/CompactByteArray.java
@@ -0,0 +1,384 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.impl.Utility;
+
+/**
+ * class CompactATypeArray : use only on primitive data types
+ * Provides a compact way to store information that is indexed by Unicode
+ * values, such as character properties, types, keyboard values, etc.This
+ * is very useful when you have a block of Unicode data that contains
+ * significant values while the rest of the Unicode data is unused in the
+ * application or when you have a lot of redundance, such as where all 21,000
+ * Han ideographs have the same value.  However, lookup is much faster than a
+ * hash table.
+ * A compact array of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * A compact array is composed of a index array and value array.  The index
+ * array contains the indicies of Unicode characters to the value array.
+ *
+ * @see                CompactCharArray
+ * @author             Helena Shih
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public final class CompactByteArray implements Cloneable {
+
+    /**
+     * The total number of Unicode characters.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static  final int UNICODECOUNT =65536;
+
+    /**
+     * Default constructor for CompactByteArray, the default value of the
+     * compact array is 0.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactByteArray()
+    {
+        this((byte)0);
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param defaultValue the default value of the compact array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactByteArray(byte defaultValue)
+    {
+        int i;
+        values = new byte[UNICODECOUNT];
+        indices = new char[INDEXCOUNT];
+        hashes = new int[INDEXCOUNT];
+        for (i = 0; i < UNICODECOUNT; ++i) {
+            values[i] = defaultValue;
+        }
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            indices[i] = (char)(i<<BLOCKSHIFT);
+            hashes[i] = 0;
+        }
+        isCompact = false;
+
+        this.defaultValue = defaultValue;
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param indexArray the indicies of the compact array.
+     * @param newValues the values of the compact array.
+     * @exception IllegalArgumentException If the index is out of range.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactByteArray(char indexArray[],
+                            byte newValues[])
+    {
+        int i;
+        if (indexArray.length != INDEXCOUNT)
+            throw new IllegalArgumentException("Index out of bounds.");
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            char index = indexArray[i];
+            if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
+                throw new IllegalArgumentException("Index out of bounds.");
+        }
+        indices = indexArray;
+        values = newValues;
+        isCompact = true;
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     *
+     * @param indexArray the RLE-encoded indicies of the compact array.
+     * @param valueArray the RLE-encoded values of the compact array.
+     *
+     * @throws IllegalArgumentException if the index or value array is
+     *          the wrong size.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactByteArray(String indexArray,
+                            String valueArray)
+    {
+        this( Utility.RLEStringToCharArray(indexArray),
+              Utility.RLEStringToByteArray(valueArray));
+    }
+
+    /**
+     * Get the mapped value of a Unicode character.
+     * @param index the character to get the mapped value with
+     * @return the mapped value of the given character
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public byte elementAt(char index)
+    {
+        return (values[(indices[index >> BLOCKSHIFT] & 0xFFFF)
+                       + (index & BLOCKMASK)]);
+    }
+
+    /**
+     * Set a new value for a Unicode character.
+     * Set automatically expands the array if it is compacted.
+     * @param index the character to set the mapped value with
+     * @param value the new mapped value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void setElementAt(char index, byte value)
+    {
+        if (isCompact)
+            expand();
+        values[(int)index] = value;
+        touchBlock(index >> BLOCKSHIFT, value);
+    }
+
+    /**
+     * Set new values for a range of Unicode character.
+     *
+     * @param start the starting offset of the range
+     * @param end the ending offset of the range
+     * @param value the new mapped value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void setElementAt(char start, char end, byte value)
+    {
+        int i;
+        if (isCompact) {
+            expand();
+        }
+        for (i = start; i <= end; ++i) {
+            values[i] = value;
+            touchBlock(i >> BLOCKSHIFT, value);
+        }
+    }
+    /**
+     * Compact the array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void compact() {
+        compact(false);
+    }
+
+    /**
+     * Compact the array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void compact(boolean exhaustive)
+    {
+        if (!isCompact) {
+            int limitCompacted = 0;
+            int iBlockStart = 0;
+            char iUntouched = 0xFFFF;
+
+            for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
+                indices[i] = 0xFFFF;
+                boolean touched = blockTouched(i);
+                if (!touched && iUntouched != 0xFFFF) {
+                    // If no values in this block were set, we can just set its
+                    // index to be the same as some other block with no values
+                    // set, assuming we've seen one yet.
+                    indices[i] = iUntouched;
+                } else {
+                    int jBlockStart = 0;
+                    int j = 0;
+                    for (j = 0; j < limitCompacted;
+                            ++j, jBlockStart += BLOCKCOUNT) {
+                        if (hashes[i] == hashes[j] &&
+                                arrayRegionMatches(values, iBlockStart,
+                                values, jBlockStart, BLOCKCOUNT)) {
+                            indices[i] = (char)jBlockStart;
+                            break;
+                        }
+                    }
+                    if (indices[i] == 0xFFFF) {
+                        // we didn't match, so copy & update
+                        System.arraycopy(values, iBlockStart,
+                            values, jBlockStart, BLOCKCOUNT);
+                        indices[i] = (char)jBlockStart;
+                        hashes[j] = hashes[i];
+                        ++limitCompacted;
+
+                        if (!touched) {
+                            // If this is the first untouched block we've seen,
+                            // remember its index.
+                            iUntouched = (char)jBlockStart;
+                        }
+                    }
+                }
+            }
+            // we are done compacting, so now make the array shorter
+            int newSize = limitCompacted*BLOCKCOUNT;
+            byte[] result = new byte[newSize];
+            System.arraycopy(values, 0, result, 0, newSize);
+            values = result;
+            isCompact = true;
+            hashes = null;
+        }
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    final static boolean arrayRegionMatches(byte[] source, int sourceStart,
+                                            byte[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Remember that a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final void touchBlock(int i, int value) {
+        hashes[i] = (hashes[i] + (value<<1)) | 1;
+    }
+
+    /**
+     * Query whether a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final boolean blockTouched(int i) {
+        return hashes[i] != 0;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public char[] getIndexArray()
+    {
+        return indices;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public byte[] getValueArray()
+    {
+        return values;
+    }
+
+    /**
+     * Overrides Cloneable
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Object clone()
+    {
+        try {
+            CompactByteArray other = (CompactByteArray) super.clone();
+            other.values = (byte[])values.clone();
+            other.indices = (char[])indices.clone();
+            if (hashes != null) other.hashes = (int[])hashes.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Compares the equality of two compact array objects.
+     * @param obj the compact array object to be compared with this.
+     * @return true if the current compact array object is the same
+     * as the compact array object obj; false otherwise.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)                      // quick check
+            return true;
+        if (getClass() != obj.getClass())         // same class?
+            return false;
+        CompactByteArray other = (CompactByteArray) obj;
+        for (int i = 0; i < UNICODECOUNT; i++) {
+            // could be sped up later
+            if (elementAt((char)i) != other.elementAt((char)i))
+                return false;
+        }
+        return true; // we made it through the guantlet.
+    }
+
+    /**
+     * Generates the hash code for the compact array object
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public int hashCode() {
+        int result = 0;
+        int increment = Math.min(3, values.length/16);
+        for (int i = 0; i < values.length; i+= increment) {
+            result = result * 37 + values[i];
+        }
+        return result;
+    }
+
+    // --------------------------------------------------------------
+    // private
+    // --------------------------------------------------------------
+
+    /**
+     * Expanding takes the array back to a 65536 element array.
+     */
+    private void expand()
+    {
+        int i;
+        if (isCompact) {
+            byte[]  tempArray;
+            hashes = new int[INDEXCOUNT];
+            tempArray = new byte[UNICODECOUNT];
+            for (i = 0; i < UNICODECOUNT; ++i) {
+                byte value = elementAt((char)i);
+                tempArray[i] = value;
+                touchBlock(i >> BLOCKSHIFT, value);
+            }
+            for (i = 0; i < INDEXCOUNT; ++i) {
+                indices[i] = (char)(i<<BLOCKSHIFT);
+            }
+            values = null;
+            values = tempArray;
+            isCompact = false;
+        }
+    }
+
+    private static  final int BLOCKSHIFT =7;
+    private static  final int BLOCKCOUNT =(1<<BLOCKSHIFT);
+    private static  final int INDEXSHIFT =(16-BLOCKSHIFT);
+    private static  final int INDEXCOUNT =(1<<INDEXSHIFT);
+    private static  final int BLOCKMASK = BLOCKCOUNT - 1;
+
+    private byte[] values;
+    private char indices[];
+    private int[] hashes;
+    private boolean isCompact;
+    byte defaultValue;
+}
diff --git a/src/com/ibm/icu/util/CompactCharArray.java b/src/com/ibm/icu/util/CompactCharArray.java
new file mode 100644
index 0000000..cc3c6a1
--- /dev/null
+++ b/src/com/ibm/icu/util/CompactCharArray.java
@@ -0,0 +1,410 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.impl.Utility;
+
+/**
+ * class CompactATypeArray : use only on primitive data types
+ * Provides a compact way to store information that is indexed by Unicode
+ * values, such as character properties, types, keyboard values, etc.This
+ * is very useful when you have a block of Unicode data that contains
+ * significant values while the rest of the Unicode data is unused in the
+ * application or when you have a lot of redundance, such as where all 21,000
+ * Han ideographs have the same value.  However, lookup is much faster than a
+ * hash table.
+ * A compact array of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * A compact array is composed of a index array and value array.  The index
+ * array contains the indicies of Unicode characters to the value array.
+ * @see                CompactByteArray
+ * @author             Helena Shih
+ * @internal
+ * @deprecated This API is ICU internal only.
+ */
+public final class CompactCharArray implements Cloneable {
+
+    /**
+     * The total number of Unicode characters.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static  final int UNICODECOUNT = 65536;
+
+    /**
+     * Default constructor for CompactCharArray, the default value of the
+     * compact array is 0.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactCharArray()
+    {
+        this((char)0);
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     * @param defaultValue the default value of the compact array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactCharArray(char defaultValue)
+    {
+        int i;
+        values = new char[UNICODECOUNT];
+        indices = new char[INDEXCOUNT];
+        hashes = new int[INDEXCOUNT];
+        for (i = 0; i < UNICODECOUNT; ++i) {
+            values[i] = defaultValue;
+        }
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            indices[i] = (char)(i<<BLOCKSHIFT);
+            hashes[i] = 0;
+        }
+        isCompact = false;
+
+        this.defaultValue = defaultValue;
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     * @param indexArray the indicies of the compact array.
+     * @param newValues the values of the compact array.
+     * @exception IllegalArgumentException If the index is out of range.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactCharArray(char indexArray[],
+                             char newValues[])
+    {
+        int i;
+        if (indexArray.length != INDEXCOUNT)
+            throw new IllegalArgumentException("Index out of bounds.");
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            char index = indexArray[i];
+            if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
+                throw new IllegalArgumentException("Index out of bounds.");
+        }
+        indices = indexArray;
+        values = newValues;
+        isCompact = true;
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     *
+     * @param indexArray the RLE-encoded indicies of the compact array.
+     * @param valueArray the RLE-encoded values of the compact array.
+     *
+     * @throws IllegalArgumentException if the index or value array is
+     *          the wrong size.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public CompactCharArray(String indexArray,
+                String valueArray)
+    {
+        this( Utility.RLEStringToCharArray(indexArray),
+              Utility.RLEStringToCharArray(valueArray));
+    }
+
+    /**
+     * Get the mapped value of a Unicode character.
+     * @param index the character to get the mapped value with
+     * @return the mapped value of the given character
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public char elementAt(char index)
+    {
+    int ix = (indices[index >> BLOCKSHIFT] & 0xFFFF)
+        + (index & BLOCKMASK);
+    return ix >= values.length ? defaultValue : values[ix];
+    }
+
+    /**
+     * Set a new value for a Unicode character.
+     * Set automatically expands the array if it is compacted.
+     * @param index the character to set the mapped value with
+     * @param value the new mapped value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void setElementAt(char index, char value)
+    {
+        if (isCompact)
+            expand();
+         values[(int)index] = value;
+        touchBlock(index >> BLOCKSHIFT, value);
+    }
+
+    /**
+     * Set new values for a range of Unicode character.
+     *
+     * @param start the starting offset of the range
+     * @param end the ending offset of the range
+     * @param value the new mapped value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void setElementAt(char start, char end, char value)
+    {
+        int i;
+        if (isCompact) {
+            expand();
+        }
+        for (i = start; i <= end; ++i) {
+            values[i] = value;
+            touchBlock(i >> BLOCKSHIFT, value);
+        }
+    }
+    /**
+     * Compact the array
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void compact() {
+        compact(true);
+    }
+
+    /**
+     * Compact the array.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void compact(boolean exhaustive)
+    {
+        if (!isCompact) {
+            int iBlockStart = 0;
+            char iUntouched = 0xFFFF;
+            int newSize = 0;
+
+            char[] target = exhaustive ? new char[UNICODECOUNT] : values;
+
+            for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
+                indices[i] = 0xFFFF;
+                boolean touched = blockTouched(i);
+                if (!touched && iUntouched != 0xFFFF) {
+                    // If no values in this block were set, we can just set its
+                    // index to be the same as some other block with no values
+                    // set, assuming we've seen one yet.
+                    indices[i] = iUntouched;
+                } else {
+                    int jBlockStart = 0;
+                    // See if we can find a previously compacted block that's identical
+                    for (int j = 0; j < i; ++j, jBlockStart += BLOCKCOUNT) {
+                        if (hashes[i] == hashes[j] &&
+                                arrayRegionMatches(values, iBlockStart,
+                                                   values, jBlockStart, BLOCKCOUNT)) {
+                            indices[i] = indices[j];
+                        }
+                    }
+                    if (indices[i] == 0xFFFF) {
+                        int dest;   // Where to copy
+                        if (exhaustive) {
+                            // See if we can find some overlap with another block
+                            dest = FindOverlappingPosition(iBlockStart, target,
+                                                            newSize);
+                        } else {
+                            // Just copy to the end; it's quicker
+                            dest = newSize;
+                        }
+                        int limit = dest + BLOCKCOUNT;
+                        if (limit > newSize) {
+                            for (int j = newSize; j < limit; ++j) {
+                                target[j] = values[iBlockStart + j - dest];
+                            }
+                            newSize = limit;
+                        }
+                        indices[i] = (char)dest;
+                        if (!touched) {
+                            // If this is the first untouched block we've seen,
+                            // remember its index.
+                            iUntouched = (char)jBlockStart;
+                        }
+                    }
+                }
+            }
+            // we are done compacting, so now make the array shorter
+            char[] result = new char[newSize];
+            System.arraycopy(target, 0, result, 0, newSize);
+            values = result;
+            isCompact = true;
+            hashes = null;
+        }
+    }
+
+    private int FindOverlappingPosition(int start, char[] tempValues, int tempCount)
+    {
+        for (int i = 0; i < tempCount; i += 1) {
+            int currentCount = BLOCKCOUNT;
+            if (i + BLOCKCOUNT > tempCount) {
+                currentCount = tempCount - i;
+            }
+            if (arrayRegionMatches(values, start, tempValues, i, currentCount))
+                return i;
+        }
+        return tempCount;
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    final static boolean arrayRegionMatches(char[] source, int sourceStart,
+                                            char[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Remember that a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final void touchBlock(int i, int value) {
+        hashes[i] = (hashes[i] + (value<<1)) | 1;
+    }
+
+    /**
+     * Query whether a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final boolean blockTouched(int i) {
+        return hashes[i] != 0;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public char[] getIndexArray()
+    {
+        return indices;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public char[] getValueArray()
+    {
+        return values;
+    }
+
+    /**
+     * Overrides Cloneable
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Object clone()
+    {
+        try {
+            CompactCharArray other = (CompactCharArray) super.clone();
+            other.values = (char[])values.clone();
+            other.indices = (char[])indices.clone();
+            if (hashes != null) other.hashes = (int[])hashes.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Compares the equality of two compact array objects.
+     * @param obj the compact array object to be compared with this.
+     * @return true if the current compact array object is the same
+     * as the compact array object obj; false otherwise.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)                      // quick check
+            return true;
+        if (getClass() != obj.getClass())         // same class?
+            return false;
+        CompactCharArray other = (CompactCharArray) obj;
+        for (int i = 0; i < UNICODECOUNT; i++) {
+            // could be sped up later
+            if (elementAt((char)i) != other.elementAt((char)i))
+                return false;
+        }
+        return true; // we made it through the guantlet.
+    }
+
+    /**
+     * Generates the hash code for the compact array object
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public int hashCode() {
+        int result = 0;
+        int increment = Math.min(3, values.length/16);
+        for (int i = 0; i < values.length; i+= increment) {
+            result = result * 37 + values[i];
+        }
+        return result;
+    }
+
+
+    // --------------------------------------------------------------
+    // private
+    // --------------------------------------------------------------
+
+    /**
+     * Expanding takes the array back to a 65536 element array.
+     */
+    private void expand()
+    {
+        int i;
+        if (isCompact) {
+            char[] tempArray;
+            hashes = new int[INDEXCOUNT];
+            tempArray = new char[UNICODECOUNT];
+            for (i = 0; i < UNICODECOUNT; ++i) {
+                tempArray[i] = elementAt((char)i);
+            }
+            for (i = 0; i < INDEXCOUNT; ++i) {
+                indices[i] = (char)(i<<BLOCKSHIFT);
+            }
+            values = null;
+            values = tempArray;
+            isCompact = false;
+        }
+    }
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static  final int BLOCKSHIFT = 5; // NormalizerBuilder needs - liu
+    static  final int BLOCKCOUNT =(1<<BLOCKSHIFT);
+    static  final int INDEXSHIFT =(16-BLOCKSHIFT);
+    static  final int INDEXCOUNT =(1<<INDEXSHIFT);
+    static  final int BLOCKMASK = BLOCKCOUNT - 1;
+
+    private char values[];
+    private char indices[];
+    private int[] hashes;
+    private boolean isCompact;
+    char defaultValue;
+}
diff --git a/src/com/ibm/icu/util/CopticCalendar.java b/src/com/ibm/icu/util/CopticCalendar.java
new file mode 100644
index 0000000..b1db47c
--- /dev/null
+++ b/src/com/ibm/icu/util/CopticCalendar.java
@@ -0,0 +1,321 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Implement the Coptic calendar system.
+ * <p>
+ * CopticCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=coptic"</code>.</p>
+ *
+ * @see com.ibm.icu.util.Calendar
+ * @stable ICU 3.4
+ */
+public final class CopticCalendar extends CECalendar 
+{
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 5903818751846742911L;
+
+    /** 
+     * Constant for &#x03c9;&#x03bf;&#x03b3;&#x03c4;/&#x062a;&#xfeee;&#xfe97;,
+     * the 1st month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TOUT = 0;
+
+    /** 
+     * Constant for &#x03a0;&#x03b1;&#x03bf;&#x03c0;&#x03b9;/&#xfeea;&#xfe91;&#xfe8e;&#xfe91;,
+     * the 2nd month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int BABA = 1;
+
+    /** 
+     * Constant for &#x0391;&#x03b8;&#x03bf;&#x03c1;/&#x0631;&#xfeee;&#xfe97;&#xfe8e;&#xfeeb;,
+     * the 3rd month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int HATOR = 2;
+
+    /** 
+     * Constant for &#x03a7;&#x03bf;&#x03b9;&#x03b1;&#x03ba;/&#xfeda;&#xfeec;&#xfef4;&#xfedb;,
+     * the 4th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int KIAHK = 3;
+
+    /** 
+     * Constant for &#x03a4;&#x03c9;&#x03b2;&#x03b9;/&#x0637;&#xfeee;&#xfe92;&#xfeeb;,
+     * the 5th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TOBA = 4;
+
+    /** 
+     * Constant for &#x039c;&#x03b5;&#x03e3;&#x03b9;&#x03c1;/&#xfeae;&#xfef4;&#xfeb8;&#xfee3;&#x0623;,
+     * the 6th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int AMSHIR = 5;
+
+    /** 
+     * Constant for &#x03a0;&#x03b1;&#x03c1;&#x03b5;&#x03bc;&#x03e9;&#x03b1;&#x03c4;/&#x062a;&#xfe8e;&#xfeec;&#xfee3;&#xfeae;&#xfe91;,
+     * the 7th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int BARAMHAT = 6;
+
+    /** 
+     * Constant for &#x03a6;&#x03b1;&#x03c1;&#x03bc;&#x03bf;&#x03b8;&#x03b9;/&#x0647;&#x062f;&#xfeee;&#xfee3;&#xfeae;&#xfe91;, 
+     * the 8th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int BARAMOUDA = 7;
+
+    /** 
+     * Constant for &#x03a0;&#x03b1;&#x03e3;&#x03b1;&#x03bd;/&#xfeb2;&#xfee8;&#xfeb8;&#xfe91;,
+     * the 9th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int BASHANS = 8;
+
+    /** 
+     * Constant for &#x03a0;&#x03b1;&#x03c9;&#x03bd;&#x03b9;/&#xfeea;&#xfee7;&#x0624;&#xfeee;&#xfe91;,
+     * the 10th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int PAONA = 9;
+
+    /** 
+     * Constant for &#x0395;&#x03c0;&#x03b7;&#x03c0;/&#xfe90;&#xfef4;&#xfe91;&#x0623;,
+     * the 11th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int EPEP = 10;
+
+    /** 
+     * Constant for &#x039c;&#x03b5;&#x03f2;&#x03c9;&#x03c1;&#x03b7;/&#x0649;&#xfeae;&#xfeb4;&#xfee3;,
+     * the 12th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int MESRA = 11;
+
+    /** 
+     * Constant for &#x03a0;&#x03b9;&#x03ba;&#x03bf;&#x03b3;&#x03eb;&#x03b9;
+     * &#x03bc;&#x03b1;&#x03b2;&#x03bf;&#x03c4;/&#xfeae;&#xfef4;&#xfed0;&#xfebc;&#xfedf;&#x0627;
+     * &#xfeae;&#xfeec;&#xfeb8;&#xfedf;&#x0627;,
+     * the 13th month of the Coptic year. 
+     * @stable ICU 3.4
+     */
+    public static final int NASIE = 12;
+  
+    private static final int JD_EPOCH_OFFSET  = 1824665;
+
+    // Eras
+    private static final int BCE = 0;
+    private static final int CE = 1;
+
+    /**
+     * Constructs a default <code>CopticCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale The icu locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+    
+    /**
+     * Constructs a <code>CopticCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @param locale The icu locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+    
+    /**
+     * Constructs a <code>CopticCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tout.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(Date date) {
+        super(date);
+    }
+
+    /**
+     * Constructs a <code>CopticCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tout.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 3.4
+     */
+    public CopticCalendar(int year, int month, int date, int hour,
+                          int minute, int second) {
+        super(year, month, date, hour, minute, second);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "coptic";
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleGetExtendedYear() {
+        int eyear;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            eyear = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            // The year defaults to the epoch start, the era to AD
+            int era = internalGet(ERA, CE);
+            if (era == BCE) {
+                eyear = 1 - internalGet(YEAR, 1); // Convert to extended year
+            } else {
+                eyear = internalGet(YEAR, 1); // Default to year 1
+            }
+        }
+        return eyear;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void handleComputeFields(int julianDay) {
+        int era, year;
+        int[] fields = new int[3];
+        jdToCE(julianDay, getJDEpochOffset(), fields);
+
+        // fields[0] eyear
+        // fields[1] month
+        // fields[2] day
+
+        if (fields[0] <= 0) {
+            era = BCE;
+            year = 1 - fields[0];
+        } else {
+            era = CE;
+            year = fields[0];
+        }
+
+        internalSet(EXTENDED_YEAR, fields[0]);
+        internalSet(ERA, era);
+        internalSet(YEAR, year);
+        internalSet(MONTH, fields[1]);
+        internalSet(DAY_OF_MONTH, fields[2]);
+        internalSet(DAY_OF_YEAR, (30 * fields[1]) + fields[2]);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int getJDEpochOffset() {
+        return JD_EPOCH_OFFSET;
+    }
+
+    /**
+     * Convert an Coptic year, month, and day to a Julian day.
+     *
+     * @param year the year
+     * @param month the month
+     * @param date the day
+     * @draft ICU 3.4 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    // The equivalent operation can be done by public Calendar API.
+    // This API was accidentally marked as @draft, but we have no good
+    // reason to keep this.  For now, we leave it as is, but may be
+    // removed in future.  2008-03-21 yoshito
+    public static int copticToJD(long year, int month, int date) {
+        return ceToJD(year, month, date, JD_EPOCH_OFFSET);
+    }
+}
+
diff --git a/src/com/ibm/icu/util/Currency.java b/src/com/ibm/icu/util/Currency.java
new file mode 100644
index 0000000..db803cf
--- /dev/null
+++ b/src/com/ibm/icu/util/Currency.java
@@ -0,0 +1,1135 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.text.ChoiceFormat;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Vector;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUDebug;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.TextTrieMap;
+
+/**
+ * A class encapsulating a currency, as defined by ISO 4217.  A
+ * <tt>Currency</tt> object can be created given a <tt>Locale</tt> or
+ * given an ISO 4217 code.  Once created, the <tt>Currency</tt> object
+ * can return various data necessary to its proper display:
+ *
+ * <ul><li>A display symbol, for a specific locale
+ * <li>The number of fraction digits to display
+ * <li>A rounding increment
+ * </ul>
+ *
+ * The <tt>DecimalFormat</tt> class uses these data to display
+ * currencies.
+ *
+ * <p>Note: This class deliberately resembles
+ * <tt>java.util.Currency</tt> but it has a completely independent
+ * implementation, and adds features not present in the JDK.
+ * @author Alan Liu
+ * @stable ICU 2.2
+ */
+public class Currency extends MeasureUnit implements Serializable {
+    // using serialver from jdk1.4.2_05
+    private static final long serialVersionUID = -5839973855554750484L;
+    private static final boolean DEBUG = ICUDebug.enabled("currency");
+
+    // Cache to save currency name trie
+    private static ICUCache CURRENCY_NAME_CACHE =  new SimpleCache();
+
+    /**
+     * ISO 4217 3-letter code.
+     */
+    private String isoCode;
+
+    /**
+     * Selector for getName() indicating a symbolic name for a
+     * currency, such as "$" for USD.
+     * @stable ICU 2.6
+     */
+    public static final int SYMBOL_NAME = 0;
+
+    /**
+     * Selector for ucurr_getName indicating the long name for a
+     * currency, such as "US Dollar" for USD.
+     * @stable ICU 2.6
+     */
+    public static final int LONG_NAME = 1;
+   
+    /**
+     * Selector for getName() indicating the plural long name for a 
+     * currency, such as "US dollar" for USD in "1 US dollar", 
+     * and "US dollars" for USD in "2 US dollars".
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int PLURAL_LONG_NAME = 2;
+
+    // begin registry stuff
+
+    // shim for service code
+    /* package */ static abstract class ServiceShim {
+        abstract ULocale[] getAvailableULocales();
+        abstract Locale[] getAvailableLocales();
+        abstract Currency createInstance(ULocale l);
+        abstract Object registerInstance(Currency c, ULocale l);
+        abstract boolean unregister(Object f);
+    }
+
+    private static ServiceShim shim;
+    private static ServiceShim getShim() {
+        // Note: this instantiation is safe on loose-memory-model configurations
+        // despite lack of synchronization, since the shim instance has no state--
+        // it's all in the class init.  The worst problem is we might instantiate
+        // two shim instances, but they'll share the same state so that's ok.
+        if (shim == null) {
+            try {
+                Class cls = Class.forName("com.ibm.icu.util.CurrencyServiceShim");
+                shim = (ServiceShim)cls.newInstance();
+            }
+            catch (Exception e) {
+                if(DEBUG){
+                    e.printStackTrace();
+                }
+                throw new RuntimeException(e.getMessage());
+            }
+        }
+        return shim;
+    }
+
+    /**
+     * Returns a currency object for the default currency in the given
+     * locale.
+     * @param locale the locale
+     * @return the currency object for this locale
+     * @stable ICU 2.2
+     */
+    public static Currency getInstance(Locale locale) {
+        return getInstance(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Returns a currency object for the default currency in the given
+     * locale.
+     * @stable ICU 3.2
+     */
+    public static Currency getInstance(ULocale locale) {
+        String currency = locale.getKeywordValue("currency");
+        if (currency != null) {
+            return getInstance(currency);
+        }
+
+        if (shim == null) {
+            return createCurrency(locale);
+        }
+
+        return shim.createInstance(locale);
+    }
+
+    /**
+     * Returns an array of Strings which contain the currency
+     * identifiers which are valid for the given locale on the 
+     * given date.
+     * @param loc the locale for which to retrieve currency codes.
+     * @param d the date for which to retrieve currency codes for the given locale.
+     * @return The array of ISO currency codes.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String[] getAvailableCurrencyCodes(ULocale loc, Date d) 
+    {
+        // local variables
+        String country = loc.getCountry();
+        long dateL = d.getTime();
+        long mask = 4294967295L;
+
+            Vector currCodeVector = new Vector();
+
+        // Get supplementalData
+        ICUResourceBundle bundle = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,
+            "supplementalData",
+            ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        if (bundle == null)
+        {
+            // no data
+            return null;
+        }
+
+        // Work with the supplementalData
+        try
+        {
+            // Process each currency to see which one is valid for the given date.
+            // Some regions can have more than one current currency in use for
+            // a given date.
+            UResourceBundle cm = bundle.get("CurrencyMap");
+            UResourceBundle countryArray = cm.get(country);
+
+            // Get valid currencies
+            for (int i = 0; i < countryArray.getSize(); i++)
+            {
+                // get the currency resource
+                UResourceBundle currencyReq = countryArray.get(i);
+                String curriso = null;
+                curriso = currencyReq.getString("id");
+
+                // get the from date
+                long fromDate = 0;
+                UResourceBundle fromRes = currencyReq.get("from");
+                int[] fromArray = fromRes.getIntVector();
+                fromDate = (long)fromArray[0] << 32;
+                fromDate |= ((long)fromArray[1] & mask);
+
+                // get the to date and check the date range
+                if (currencyReq.getSize() > 2)
+                {
+                    long toDate = 0;
+                    UResourceBundle toRes = currencyReq.get("to");
+                    int[] toArray = toRes.getIntVector();
+                    toDate = (long)toArray[0] << 32;
+                    toDate |= ((long)toArray[1] & mask);
+
+                    if ((fromDate <= dateL) && (dateL < toDate))
+                    {
+                        currCodeVector.addElement(curriso);
+                    }
+                }
+                else
+                {
+                    if (fromDate <= dateL)
+                    {
+                        currCodeVector.addElement(curriso);
+                    }
+                }
+
+            }  // end For loop
+
+            // return the String array if we have matches
+            currCodeVector.trimToSize();
+            if (currCodeVector.size() != 0)
+            {
+                return ((String[])currCodeVector.toArray(new String[0]));
+            }
+
+        }
+        catch (MissingResourceException ex)
+        {
+            // We don't know about this region.
+            // As of CLDR 1.5.1, the data includes deprecated region history too.
+            // So if we get here, either the region doesn't exist, or the data is really bad.
+            // Deprecated regions should return the last valid currency for that region in the data.
+            // We don't try to resolve it to a new region.
+        }
+
+        // if we get this far, return nothing
+        return null;
+    }
+
+    private static final String EUR_STR = "EUR";
+    /**
+     * Instantiate a currency from a resource bundle found in Locale loc.
+     */
+    /* package */ static Currency createCurrency(ULocale loc) {
+        String country = loc.getCountry();
+        String variant = loc.getVariant();
+        boolean isPreEuro = variant.equals("PREEURO");
+        boolean isEuro = variant.equals("EURO");
+        // TODO: ICU4C has service registration, and the currency is requested from the service here.
+        ICUResourceBundle bundle = (ICUResourceBundle) ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,"supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        if(bundle==null){
+            //throw new MissingResourceException()
+            return null;
+        }
+        try {
+            UResourceBundle cm = bundle.get("CurrencyMap");
+            String curriso = null;
+            UResourceBundle countryArray = cm.get(country);
+            // Some regions can have more than one current currency in use.
+            // The latest default currency is always the first one.
+            UResourceBundle currencyReq = countryArray.get(0);
+            curriso = currencyReq.getString("id");
+            if (isPreEuro && curriso.equals(EUR_STR)) {
+                currencyReq = countryArray.get(1);
+                curriso = currencyReq.getString("id");
+            }
+            else if (isEuro) {
+                curriso = EUR_STR;
+            }
+            if (curriso != null) {
+                return new Currency(curriso);
+            }
+        } catch (MissingResourceException ex) {
+            // We don't know about this region.
+            // As of CLDR 1.5.1, the data includes deprecated region history too.
+            // So if we get here, either the region doesn't exist, or the data is really bad.
+            // Deprecated regions should return the last valid currency for that region in the data.
+            // We don't try to resolve it to a new region.
+        }
+        return null;
+    }
+
+    /**
+     * Returns a currency object given an ISO 4217 3-letter code.
+     * @param theISOCode the iso code
+     * @return the currency for this iso code
+     * @throws NullPoninterException if <code>theISOCode</code> is null.
+     * @throws IllegalArgumentException if <code>theISOCode</code> is not a
+     *         3-letter alpha code.
+     * @stable ICU 2.2
+     */
+    public static Currency getInstance(String theISOCode) {
+        if (theISOCode == null) {
+            throw new NullPointerException("The input currency code is null.");
+        }
+        boolean is3alpha = true;
+        if (theISOCode.length() != 3) {
+            is3alpha = false;
+        } else {
+            for (int i = 0; i < 3; i++) {
+                char ch = theISOCode.charAt(i);
+                if (ch < 'A' || (ch > 'Z' && ch < 'a') || ch > 'z') {
+                    is3alpha = false;
+                    break;
+                }
+            }
+        }
+        if (!is3alpha) {
+            throw new IllegalArgumentException(
+                    "The input currency code is not 3-letter alphabetic code.");
+        }
+        return new Currency(theISOCode.toUpperCase(Locale.US));
+    }
+
+    /**
+     * Registers a new currency for the provided locale.  The returned object
+     * is a key that can be used to unregister this currency object.
+     * @param currency the currency to register
+     * @param locale the ulocale under which to register the currency
+     * @return a registry key that can be used to unregister this currency
+     * @see #unregister
+     * @stable ICU 3.2
+     */
+    public static Object registerInstance(Currency currency, ULocale locale) {
+        return getShim().registerInstance(currency, locale);
+    }
+
+    /**
+     * Unregister the currency associated with this key (obtained from
+     * registerInstance).
+     * @param registryKey the registry key returned from registerInstance
+     * @see #registerInstance
+     * @stable ICU 2.6
+     */
+    public static boolean unregister(Object registryKey) {
+        if (registryKey == null) {
+            throw new IllegalArgumentException("registryKey must not be null");
+        }
+        if (shim == null) {
+            return false;
+        }
+        return shim.unregister(registryKey);
+    }
+
+    /**
+     * Return an array of the locales for which a currency
+     * is defined.
+     * @return an array of the available locales
+     * @stable ICU 2.2
+     */
+    public static Locale[] getAvailableLocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        } else {
+            return shim.getAvailableLocales();
+        }
+    }
+
+    /**
+     * Return an array of the ulocales for which a currency
+     * is defined.
+     * @return an array of the available ulocales
+     * @stable ICU 3.2
+     */
+    public static ULocale[] getAvailableULocales() {
+        if (shim == null) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        } else {
+            return shim.getAvailableULocales();
+        }
+    }
+
+    // end registry stuff
+
+    /**
+     * Return a hashcode for this currency.
+     * @stable ICU 2.2
+     */
+    public int hashCode() {
+        return isoCode.hashCode();
+    }
+
+    /**
+     * Return true if rhs is a Currency instance,
+     * is non-null, and has the same currency code.
+     * @stable ICU 2.2
+     */
+    public boolean equals(Object rhs) {
+        if (rhs == null) return false;
+        if (rhs == this) return true;
+        try {
+            Currency c = (Currency) rhs;
+            return isoCode.equals(c.isoCode);
+        }
+        catch (ClassCastException e) {
+            return false;
+        }
+    }
+
+    /**
+     * Returns the ISO 4217 3-letter code for this currency object.
+     * @stable ICU 2.2
+     */
+    public String getCurrencyCode() {
+        return isoCode;
+    }
+
+    /**
+     * Convenience and compatibility override of getName that
+     * requests the symbol name.
+     * @see #getName
+     * @stable ICU 3.4
+     */
+    public String getSymbol() {
+        return getSymbol(ULocale.getDefault());
+    }
+
+    /**
+     * Convenience and compatibility override of getName that
+     * requests the symbol name.
+     * @param loc the Locale for the symbol
+     * @see #getName
+     * @stable ICU 3.4
+     */
+    public String getSymbol(Locale loc) {
+        return getSymbol(ULocale.forLocale(loc));
+    }
+
+    /**
+     * Convenience and compatibility override of getName that
+     * requests the symbol name.
+     * @param uloc the ULocale for the symbol
+     * @see #getName
+     * @stable ICU 3.4
+     */
+    public String getSymbol(ULocale uloc) {
+        return getName(uloc, SYMBOL_NAME, new boolean[1]);
+    }
+
+    /**
+     * Returns the display name for the given currency in the
+     * given locale.  
+     * This is a convenient method for 
+     * getName(ULocale, int, boolean[]); 
+     * @stable ICU 3.2
+     */
+    public String getName(Locale locale,
+                          int nameStyle,
+                          boolean[] isChoiceFormat) {
+        return getName(ULocale.forLocale(locale), nameStyle, isChoiceFormat);
+    }
+
+    /**
+     * Returns the display name for the given currency in the
+     * given locale.  For example, the display name for the USD
+     * currency object in the en_US locale is "$".
+     * @param locale locale in which to display currency
+     * @param nameStyle selector for which kind of name to return.
+     *                  The nameStyle should be either SYMBOL_NAME or 
+     *                  LONG_NAME. Otherwise, throw IllegalArgumentException.
+     * @param isChoiceFormat fill-in; isChoiceFormat[0] is set to true
+     * if the returned value is a ChoiceFormat pattern; otherwise it
+     * is set to false
+     * @return display string for this currency.  If the resource data
+     * contains no entry for this currency, then the ISO 4217 code is
+     * returned.  If isChoiceFormat[0] is true, then the result is a
+     * ChoiceFormat pattern.  Otherwise it is a static string.
+     * @throws  IllegalArgumentException  if the nameStyle is not SYMBOL_NAME
+     *                                    or LONG_NAME.
+     * @stable ICU 3.2
+     */
+    public String getName(ULocale locale,
+                          int nameStyle,
+                          boolean[] isChoiceFormat) {
+
+        // Look up the Currencies resource for the given locale.  The
+        // Currencies locale data looks like this:
+        //|en {
+        //|  Currencies {
+        //|    USD { "US$", "US Dollar" }
+        //|    CHF { "Sw F", "Swiss Franc" }
+        //|    INR { "=0#Rs|1#Re|1<Rs", "=0#Rupees|1#Rupee|1<Rupees" }
+        //|    //...
+        //|  }
+        //|}
+
+        if (nameStyle < 0 || nameStyle > 1) {
+            throw new IllegalArgumentException();
+        }
+
+        String s = null;
+
+         try {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+            ICUResourceBundle currencies = (ICUResourceBundle)rb.get("Currencies");
+
+            // Fetch resource with multi-level resource inheritance fallback
+            s = currencies.getWithFallback(isoCode).getString(nameStyle);
+        }catch (MissingResourceException e) {
+            //TODO what should be done here?
+        }
+
+        // Determine if this is a ChoiceFormat pattern.  One leading mark
+        // indicates a ChoiceFormat.  Two indicates a static string that
+        // starts with a mark.  In either case, the first mark is ignored,
+        // if present.  Marks in the rest of the string have no special
+        // meaning.
+        isChoiceFormat[0] = false;
+        if (s != null) {
+            int i=0;
+            while (i < s.length() && s.charAt(i) == '=' && i < 2) {
+                ++i;
+            }
+            isChoiceFormat[0]= (i == 1);
+            if (i != 0) {
+                // Skip over first mark
+                s = s.substring(1);
+            }
+            return s;
+        }
+
+        // If we fail to find a match, use the ISO 4217 code
+        return isoCode;
+    }
+
+    /**
+     * Returns the display name for the given currency in the
+     * given locale.  
+     * This is a convenient method of 
+     * getName(ULocale, int, String, boolean[]);
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getName(Locale locale,
+                          int nameStyle,
+                          String pluralCount,
+                          boolean[] isChoiceFormat) {
+        return getName(ULocale.forLocale(locale), nameStyle, 
+                       pluralCount, isChoiceFormat);
+    }
+
+    /**
+     * Returns the display name for the given currency in the
+     * given locale.  For example, the SYMBOL_NAME for the USD
+     * currency object in the en_US locale is "$".
+     * The PLURAL_LONG_NAME for the USD currency object when the currency 
+     * amount is plural is "US dollars", such as in "3.00 US dollars";
+     * while the PLURAL_LONG_NAME for the USD currency object when the currency
+     * amount is singular is "US dollar", such as in "1.00 US dollar".
+     * @param locale locale in which to display currency
+     * @param nameStyle selector for which kind of name to return
+     * @param pluralCount plural count string for this locale
+     * @param isChoiceFormat fill-in; isChoiceFormat[0] is set to true
+     * if the returned value is a ChoiceFormat pattern; otherwise it
+     * is set to false
+     * @return display string for this currency.  If the resource data
+     * contains no entry for this currency, then the ISO 4217 code is
+     * returned.  If isChoiceFormat[0] is true, then the result is a
+     * ChoiceFormat pattern.  Otherwise it is a static string.
+     * @throws  IllegalArgumentException  if the nameStyle is not SYMBOL_NAME
+     *                                    or LONG_NAME, or PLURAL_LONG_NAME.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getName(ULocale locale,
+                          int nameStyle,
+                          String pluralCount,
+                          boolean[] isChoiceFormat) {
+        if (nameStyle != PLURAL_LONG_NAME) {
+            return getName(locale, nameStyle, isChoiceFormat);
+        }
+
+        // Look up the CurrencyPlurals resource for the given locale.  The
+        // CurrencyPlurals locale data looks like this:
+        //|en {
+        //|  CurrencyPlurals {
+        //|    USD{
+        //|      one{"US dollar"}
+        //|      other{"US dollars"}
+        //|    }
+        //|    ...
+        //|  }
+        //|}
+        // 
+        // Algorithm detail: http://unicode.org/reports/tr35/#Currencies
+        // especially the fallback rule.
+        String s = null;
+        ICUResourceBundle isoCodeBundle;
+        // search at run time, not saved in initialization
+        try {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+            // get handles fallback
+            ICUResourceBundle currencies = (ICUResourceBundle)rb.get("CurrencyPlurals");
+
+            // Fetch resource with multi-level resource inheritance fallback
+            isoCodeBundle = currencies.getWithFallback(isoCode);
+        } catch (MissingResourceException e) {
+            // if there is no CurrencyPlurals defined or no plural long names
+            // defined in the locale chain, fall back to long name.
+            return getName(locale, LONG_NAME, isChoiceFormat);
+        }
+        try {
+            s = isoCodeBundle.getStringWithFallback(pluralCount);
+        } catch (MissingResourceException e1) {
+            try {
+                // if there is no name corresponding to 'pluralCount' defined,
+                // fall back to name corresponding to "other".
+                s = isoCodeBundle.getStringWithFallback("other");
+            } catch (MissingResourceException e) {
+                // if there is no name corresponding to plural count "other",
+                // fall back to long name.
+                return getName(locale, LONG_NAME, isChoiceFormat);
+            }
+        }
+        // No support for choice format for getting plural currency names.
+        if (s != null) {
+            return s;
+        }
+        // If we fail to find a match, use the ISO 4217 code
+        return isoCode;
+    }
+
+    /**
+     * Attempt to parse the given string as a currency, either as a
+     * display name in the given locale, or as a 3-letter ISO 4217
+     * code.  If multiple display names match, then the longest one is
+     * selected.  If both a display name and a 3-letter ISO code
+     * match, then the display name is preferred, unless it's length
+     * is less than 3.
+     *
+     * @param locale the locale of the display names to match
+     * @param text the text to parse
+     * @param pos input-output position; on input, the position within
+     * text to match; must have 0 <= pos.getIndex() < text.length();
+     * on output, the position after the last matched character. If
+     * the parse fails, the position in unchanged upon output.
+     * @return the ISO 4217 code, as a string, of the best match, or
+     * null if there is no match
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static String parse(ULocale locale, String text, ParsePosition pos) {
+        TextTrieMap currencyNameTrie = (TextTrieMap)CURRENCY_NAME_CACHE.get(locale);
+        if (currencyNameTrie == null) {
+            currencyNameTrie = new TextTrieMap(true);
+            setupCurrencyNameTrie(locale, currencyNameTrie);
+            CURRENCY_NAME_CACHE.put(locale, currencyNameTrie);
+        }
+        
+        // look for the names
+        CurrencyNameResultHandler handler = new CurrencyNameResultHandler();
+        currencyNameTrie.find(text, pos.getIndex(), handler);
+        List list = handler.getMatchedCurrencyNames();
+        int maxLength = 0;
+        String isoResult = null;
+        if (list != null && list.size() != 0) {
+            Iterator it = list.iterator();
+            while (it.hasNext()) {
+                CurrencyStringInfo info = (CurrencyStringInfo)it.next();
+                String isoCode = info.getISOCode();
+                String currencyString = info.getCurrencyString();
+                if (currencyString.length() > maxLength) {
+                    maxLength = currencyString.length();
+                    isoResult = isoCode;
+                }
+            }
+        }
+
+        int start = pos.getIndex();
+        if (isoResult == null || 
+            maxLength < 3 && (text.length() - start) >= 3) {
+            // If display name parse fails or if it matches fewer than 3
+            // characters, try to parse 3-letter ISO.  Do this after the
+            // display name processing so 3-letter display names are
+            // preferred.  Consider /[A-Z]{3}/ to be valid ISO, and parse
+            // it manually--UnicodeSet/regex are too slow and heavy.
+            boolean valid = true;
+            for (int k=0; k<3; ++k) {
+                char ch = text.charAt(start + k); // 16-bit ok
+                if (ch < 'A' || ch > 'Z') {
+                    valid = false;
+                    break;
+                }
+            }
+            if (valid) {
+                pos.setIndex(pos.getIndex() + 3);
+                return text.substring(start, start+3);
+            }
+        }
+        pos.setIndex(start + maxLength);
+        return isoResult;
+    }
+
+    private static void setupCurrencyNameTrie(ULocale locale, TextTrieMap trie) {
+        // Look up the Currencies resource for the given locale.  The
+        // Currencies locale data looks like this:
+        //|en {
+        //|  Currencies {
+        //|    USD { "US$", "US Dollar" }
+        //|    CHF { "Sw F", "Swiss Franc" }
+        //|    INR { "=0#Rs|1#Re|1<Rs", "=0#Rupees|1#Rupee|1<Rupees" }
+        //|    //...
+        //|  }
+        //|}
+
+        // In the future, resource bundles may implement multi-level
+        // fallback.  That is, if a currency is not found in the en_US
+        // Currencies data, then the en Currencies data will be searched.
+        // Currently, if a Currencies datum exists in en_US and en, the
+        // en_US entry hides that in en.
+
+        // We want multi-level fallback for this resource, so we implement
+        // it manually.
+
+        // Multi-level resource inheritance fallback loop
+
+        /*
+        1. Look at the Currencies array from the locale
+            1a. Iterate through it, and check each row to see if row[1] matches
+                1a1. If row[1] is a pattern, use ChoiceFormat to attempt a parse
+            1b. Upon a match, return the ISO code stored at row[0]
+        2. If there is no match, fall back to "en" and try again
+        3. If there is no match, fall back to root and try again
+        4. If still no match, parse 3-letter ISO {this code is probably unchanged}.
+        */
+        HashSet visited = new HashSet();
+        ULocale parentLocale = locale;
+        while (parentLocale != null) {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,parentLocale);
+            // We can't cast this to String[][]; the cast has to happen later
+            try {
+                UResourceBundle currencies = rb.get("Currencies");
+                // Do a linear search
+                for (int i=0; i<currencies.getSize(); ++i) {
+                    UResourceBundle item = currencies.get(i);
+                    String ISOCode = item.getKey();
+                    if (!visited.contains(ISOCode)) {
+                        CurrencyStringInfo info = new CurrencyStringInfo(ISOCode, ISOCode);
+                        trie.put(ISOCode, info);
+
+                        String name = item.getString(0);
+                        if (name.length() > 1 && name.charAt(0) == '=' &&
+                            name.charAt(1) != '=') {
+                            // handle choice format here
+                            name = name.substring(1);
+                            ChoiceFormat choice = new ChoiceFormat(name);
+                            Object[] names = choice.getFormats();
+                            for (int nameIndex = 0; nameIndex < names.length;
+                                 ++nameIndex) {
+                                info = new CurrencyStringInfo(ISOCode, 
+                                                      (String)names[nameIndex]);
+                                trie.put((String)names[nameIndex], info);
+                            }
+                        } else {
+                            info = new CurrencyStringInfo(ISOCode, name);
+                            trie.put(name, info);
+                        }
+
+                        info = new CurrencyStringInfo(ISOCode, item.getString(1));
+                        trie.put(item.getString(1), info);
+                        visited.add(ISOCode);
+                    }
+                }
+            }
+            catch (MissingResourceException e) {}
+
+            parentLocale = parentLocale.getFallback();
+        }
+        // Look up the CurrencyPlurals resource for the given locale.  The
+        // CurrencyPlurals locale data looks like this:
+        //|en {
+        //|  CurrencyPlurals {
+        //|    USD { 
+        //|      one{"US Dollar"}  
+        //|      other{"US dollars"} 
+        //|    }
+        //|    //...
+        //|  }
+        //|}
+
+        HashMap visitedInMap = new HashMap();
+        parentLocale = locale;
+        while (parentLocale != null) {
+            UResourceBundle rb = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,parentLocale);
+            try {
+                UResourceBundle currencies;
+                currencies = rb.get("CurrencyPlurals");
+                for (int i=0; i<currencies.getSize(); ++i) {
+                    UResourceBundle item = currencies.get(i);
+                    String ISOCode = item.getKey();
+                    HashSet visitPluralCount = (HashSet)visitedInMap.get(ISOCode);
+                    if (visitPluralCount == null) {
+                        visitPluralCount = new HashSet();
+                        visitedInMap.put(ISOCode, visitPluralCount);
+                    }
+                    for (int j=0; j<item.getSize(); ++j) {
+                        String count = item.get(j).getKey();
+                        if (!visitPluralCount.contains(count)) {
+                            CurrencyStringInfo info = new CurrencyStringInfo(ISOCode, item.get(j).getString());
+
+                            trie.put(item.get(j).getString(), info);
+                            visitPluralCount.add(count);
+                        }
+                    }
+                }
+            }
+            catch (MissingResourceException e) {}
+
+            parentLocale = parentLocale.getFallback();
+        }
+    }
+
+    private static final class CurrencyStringInfo {
+        private String isoCode;
+        private String currencyString;
+
+        public CurrencyStringInfo(String isoCode, String currencyString) {
+            this.isoCode = isoCode;
+            this.currencyString = currencyString;
+        }
+
+        private String getISOCode() {
+            return isoCode;
+        }
+
+        private String getCurrencyString() {
+            return currencyString;
+        }
+    }
+
+    private static class CurrencyNameResultHandler implements TextTrieMap.ResultHandler {
+        private ArrayList resultList;
+    
+        public boolean handlePrefixMatch(int matchLength, Iterator values) {
+            if (resultList == null) {
+                resultList = new ArrayList();
+            }
+            while (values.hasNext()) {
+                CurrencyStringInfo item = (CurrencyStringInfo)values.next();
+                if (item == null) {
+                    break;
+                }
+                int i = 0;
+                for (; i < resultList.size(); i++) {
+                    CurrencyStringInfo tmp = (CurrencyStringInfo)resultList.get(i);
+                    if (item.getISOCode() == tmp.getISOCode()) {
+                        if (matchLength > tmp.getCurrencyString().length()) {
+                            resultList.set(i, item);
+                        }
+                        break;
+                    }
+                }
+                if (i == resultList.size()) {
+                    // not found in the current list
+                    resultList.add(item);
+                }
+            }
+            return true;
+        }
+
+        List getMatchedCurrencyNames() {
+            if (resultList == null || resultList.size() == 0) {
+                return null;
+            }
+            return resultList;
+        }
+    }
+
+    /**
+     * Returns the number of the number of fraction digits that should
+     * be displayed for this currency.
+     * @return a non-negative number of fraction digits to be
+     * displayed
+     * @stable ICU 2.2
+     */
+    public int getDefaultFractionDigits() {
+        return (findData())[0];
+    }
+
+    /**
+     * Returns the rounding increment for this currency, or 0.0 if no
+     * rounding is done by this currency.
+     * @return the non-negative rounding increment, or 0.0 if none
+     * @stable ICU 2.2
+     */
+    public double getRoundingIncrement() {
+        int[] data = findData();
+
+        int data1 = data[1]; // rounding increment
+
+        // If there is no rounding return 0.0 to indicate no rounding.
+        // This is the high-runner case, by far.
+        if (data1 == 0) {
+            return 0.0;
+        }
+
+        int data0 = data[0]; // fraction digits
+
+        // If the meta data is invalid, return 0.0 to indicate no rounding.
+        if (data0 < 0 || data0 >= POW10.length) {
+            return 0.0;
+        }
+
+        // Return data[1] / 10^(data[0]).  The only actual rounding data,
+        // as of this writing, is CHF { 2, 25 }.
+        return (double) data1 / POW10[data0];
+    }
+
+    /**
+     * Returns the ISO 4217 code for this currency.
+     * @stable ICU 2.2
+     */
+    public String toString() {
+        return isoCode;
+    }
+
+    /**
+     * Constructs a currency object for the given ISO 4217 3-letter
+     * code.  This constructor assumes that the code is valid.
+     * 
+     * @param theISOCode The iso code used to construct the currency.
+     * @draft ICU 3.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Currency(String theISOCode) {
+        isoCode = theISOCode;
+    }
+
+    /**
+     * Internal function to look up currency data.  Result is an array of
+     * two Integers.  The first is the fraction digits.  The second is the
+     * rounding increment, or 0 if none.  The rounding increment is in
+     * units of 10^(-fraction_digits).
+     */
+    private int[] findData() {
+
+        try {
+            // Get CurrencyMeta resource out of root locale file.  [This may
+            // move out of the root locale file later; if it does, update this
+            // code.]
+            UResourceBundle root = ICUResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle currencyMeta = root.get("CurrencyMeta");
+
+            //Integer[] i = null;
+            //int defaultPos = -1;
+            int[] i = currencyMeta.get(isoCode).getIntVector();
+
+            // Do a linear search for isoCode.  At the same time,
+            // record the position of the DEFAULT meta data.  If the
+            // meta data becomes large, make this faster.
+            /*for (int j=0; j<currencyMeta.length; ++j) {
+                Object[] row = currencyMeta[j];
+                String s = (String) row[0];
+                int c = isoCode.compareToIgnoreCase(s);
+                if (c == 0) {
+                    i = (Integer[]) row[1];
+                    break;
+                }
+                if ("DEFAULT".equalsIgnoreCase(s)) {
+                    defaultPos = j;
+                }
+                if (c < 0 && defaultPos >= 0) {
+                    break;
+                }
+            }
+            */
+            if (i == null) {
+                i = currencyMeta.get("DEFAULT").getIntVector();
+            }
+
+            if (i != null && i.length >= 2) {
+                return i;
+            }
+        }
+        catch (MissingResourceException e) {}
+
+        // Config/build error; return hard-coded defaults
+        return LAST_RESORT_DATA;
+    }
+
+    // Default currency meta data of last resort.  We try to use the
+    // defaults encoded in the meta data resource bundle.  If there is a
+    // configuration/build error and these are not available, we use these
+    // hard-coded defaults (which should be identical).
+    private static final int[] LAST_RESORT_DATA = new int[] { 2, 0 };
+
+    // POW10[i] = 10^i
+    private static final int[] POW10 = { 1, 10, 100, 1000, 10000, 100000,
+                                1000000, 10000000, 100000000, 1000000000 };
+
+    // -------- BEGIN ULocale boilerplate --------
+
+    /**
+     * Return the locale that was used to create this object, or null.
+     * This may may differ from the locale requested at the time of
+     * this object's creation.  For example, if an object is created
+     * for locale <tt>en_US_CALIFORNIA</tt>, the actual data may be
+     * drawn from <tt>en</tt> (the <i>actual</i> locale), and
+     * <tt>en_US</tt> may be the most specific locale that exists (the
+     * <i>valid</i> locale).
+     *
+     * <p>Note: This method will be obsoleted.  The implementation is
+     * no longer locale-specific and so there is no longer a valid or
+     * actual locale associated with the Currency object.  Until
+     * it is removed, this method will return the root locale.
+     * @param type type of information requested, either {@link
+     * com.ibm.icu.util.ULocale#VALID_LOCALE} or {@link
+     * com.ibm.icu.util.ULocale#ACTUAL_LOCALE}.
+     * @return the information specified by <i>type</i>, or null if
+     * this object was not constructed from locale data.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @obsolete ICU 3.2 to be removed
+     * @deprecated This API is obsolete.
+     */
+    public final ULocale getLocale(ULocale.Type type) {
+        ULocale result = (type == ULocale.ACTUAL_LOCALE) ? actualLocale : validLocale;
+        if (result == null) {
+            return ULocale.ROOT;
+        }
+        return result;
+    }
+
+    /**
+     * Set information about the locales that were used to create this
+     * object.  If the object was not constructed from locale data,
+     * both arguments should be set to null.  Otherwise, neither
+     * should be null.  The actual locale must be at the same level or
+     * less specific than the valid locale.  This method is intended
+     * for use by factories or other entities that create objects of
+     * this class.
+     * @param valid the most specific locale containing any resource
+     * data, or null
+     * @param actual the locale containing data used to construct this
+     * object, or null
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    final void setLocale(ULocale valid, ULocale actual) {
+        // Change the following to an assertion later
+        if ((valid == null) != (actual == null)) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException();
+            ///CLOVER:ON
+        }
+        // Another check we could do is that the actual locale is at
+        // the same level or less specific than the valid locale.
+        this.validLocale = valid;
+        this.actualLocale = actual;
+    }
+
+    /*
+     * The most specific locale containing any resource data, or null.
+     */
+    private ULocale validLocale;
+
+    /*
+     * The locale containing data used to construct this object, or null.
+     */
+    private ULocale actualLocale;
+
+    // -------- END ULocale boilerplate --------
+    
+    /**
+     * Given a keyword and a locale, returns an array of string values in a preferred order that would make a difference. 
+     * These are all and only those values where the open (creation) of the service with the locale
+     * formed from the input locale plus input keyword and that value has different behavior than
+     * creation with the input locale alone. For example, calling this with "de", "collation" returns {"phonebook","standard"}
+     * @param keyword one of the keyword {"collation", "calendar", "currency"}
+     * @param locLD input ULocale
+     * @param commonlyUsed if set to true it will return commonly used values with the given locale else all the available values
+     * @return an array of string values for a given keyword and locale
+     * @draft ICU 4.2
+     */
+    public static final String[] getKeywordValues(String keyword, ULocale locID, boolean commonlyUsed) {
+        ICUResourceBundle r = null;
+        String baseName,resName;
+        baseName = ICUResourceBundle.ICU_BASE_NAME;
+        resName = "CurrencyMap";
+        String kwVal = locID.getKeywordValue(keyword);
+        Enumeration e, key;
+        HashSet set = new HashSet();
+        
+        if(commonlyUsed && kwVal != null){
+            set.add(kwVal);
+            return (String[]) set.toArray(new String[set.size()]);
+        }
+        
+        String countryName = locID.getCountry();
+        if(commonlyUsed && countryName.equals("")){
+            ULocale newLoc = ULocale.addLikelySubtags(locID);
+            countryName = newLoc.getCountry();
+        }
+        
+        r = (ICUResourceBundle)ICUResourceBundle.getBundleInstance(baseName, "supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        ICUResourceBundle irb = (ICUResourceBundle)r.get(resName);
+        e= irb.getKeys();
+        while(e.hasMoreElements()){
+            String country = (String)e.nextElement();
+            if(commonlyUsed && !country.equals(countryName)){
+                continue;
+            }
+            ICUResourceBundle countryBundle = (ICUResourceBundle) irb.get(country);
+            for(int i=0;i<countryBundle.getSize();i++){
+                ICUResourceBundle currency = (ICUResourceBundle) countryBundle.get(i);
+                boolean current = true;
+                key = currency.getKeys();
+                while(key.hasMoreElements()){
+                    if(key.nextElement().equals("to")){
+                        current = false;
+                    }
+                }
+                if(current){
+                   for(int j=0;j<currency.getSize();j++){
+                        String currVal = currency.getString("id");
+                        set.add(currVal);
+                    }
+                }
+            }
+        }
+        return (String[]) set.toArray(new String[set.size()]);
+    }
+  
+}
+
+//eof
diff --git a/src/com/ibm/icu/util/CurrencyAmount.java b/src/com/ibm/icu/util/CurrencyAmount.java
new file mode 100644
index 0000000..d7657b8
--- /dev/null
+++ b/src/com/ibm/icu/util/CurrencyAmount.java
@@ -0,0 +1,54 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2006, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 12, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.util;
+
+import java.lang.Number;
+
+/**
+ * An amount of currency, consisting of a Number and a Currency.
+ * CurrencyAmount objects are immutable.
+ *
+ * @see java.lang.Number
+ * @see Currency
+ * @author Alan Liu
+ * @stable ICU 3.0
+ */
+public class CurrencyAmount extends Measure {
+    
+    /**
+     * Constructs a new object given a number and a currency.
+     * @param number the number
+     * @param currency the currency
+     * @stable ICU 3.0
+     */
+    public CurrencyAmount(Number number, Currency currency) {
+        super(number, currency);
+    }
+
+    /**
+     * Constructs a new object given a double value and a currency.
+     * @param number a double value
+     * @param currency the currency
+     * @stable ICU 3.0
+     */
+    public CurrencyAmount(double number, Currency currency) {
+        super(new Double(number), currency);
+    }    
+    
+    /**
+     * Returns the currency of this object.
+     * @return this object's Currency
+     * @stable ICU 3.0
+     */
+    public Currency getCurrency() {
+        return (Currency) getUnit();
+    }
+}
diff --git a/src/com/ibm/icu/util/CurrencyServiceShim.java b/src/com/ibm/icu/util/CurrencyServiceShim.java
new file mode 100644
index 0000000..0de4e3f
--- /dev/null
+++ b/src/com/ibm/icu/util/CurrencyServiceShim.java
@@ -0,0 +1,75 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Locale;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUService;
+import com.ibm.icu.impl.ICUService.Factory;
+import com.ibm.icu.impl.ICULocaleService;
+
+/**
+ * This is a package-access implementation of registration for
+ * currency.  The shim is instantiated by reflection in Currency, all
+ * dependencies on ICUService are located in this file. This structure
+ * is to allow ICU4J to be built without service registration support.  
+ */
+final class CurrencyServiceShim extends Currency.ServiceShim {
+    
+    Locale[] getAvailableLocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_BASE_NAME);
+        }
+        return service.getAvailableULocales();
+    }
+
+    Currency createInstance(ULocale loc) {
+        // TODO: convert to ULocale when service switches over
+
+        if (service.isDefault()) {
+            return Currency.createCurrency(loc);
+        }
+        ULocale[] actualLoc = new ULocale[1];
+    Currency curr = (Currency)service.get(loc, actualLoc);
+        ULocale uloc = actualLoc[0];
+        curr.setLocale(uloc, uloc); // services make no distinction between actual & valid
+        return curr;
+    }
+
+    Object registerInstance(Currency currency, ULocale locale) {
+        return service.registerObject(currency, locale);
+    }
+    
+    boolean unregister(Object registryKey) {
+        return service.unregisterFactory((Factory)registryKey);
+    }
+
+    private static class CFService extends ICULocaleService {
+        CFService() {
+            super("Currency");
+
+            class CurrencyFactory extends ICUResourceBundleFactory {
+                protected Object handleCreate(ULocale loc, int kind, ICUService srvc) {
+                    return Currency.createCurrency(loc);
+                }
+            }
+            
+            registerFactory(new CurrencyFactory());
+            markDefault();
+        }
+    }
+    static final ICULocaleService service = new CFService();
+}
diff --git a/src/com/ibm/icu/util/DateInterval.java b/src/com/ibm/icu/util/DateInterval.java
new file mode 100644
index 0000000..f4ab1a9
--- /dev/null
+++ b/src/com/ibm/icu/util/DateInterval.java
@@ -0,0 +1,92 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2008, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+
+
+/**
+ * This class represents date interval.
+ * It is a pair of long representing from date 1 to date 2.
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+public final class DateInterval implements Serializable {
+
+    private static final long serialVersionUID = 1;
+
+    private final long fromDate;
+    private final long toDate;
+
+    /** 
+     * Constructor given from date and to date.
+     * @param from      The from date in date interval.
+     * @param to        The to date in date interval.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateInterval(long from, long to)
+    {
+        fromDate = from;
+        toDate = to;
+    }
+
+    /** 
+     * Get the from date.
+     * @return  the from date in dateInterval.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public long getFromDate()
+    {
+        return fromDate;
+    }
+
+    /** 
+     * Get the to date.
+     * @return  the to date in dateInterval.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public long getToDate()
+    {
+        return toDate;
+    }
+
+    /**
+     * Override equals
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean equals(Object a) {
+        if ( a instanceof DateInterval ) {
+            DateInterval di = (DateInterval)a;
+            return fromDate == di.fromDate && toDate == di.toDate;
+        }
+        return false;
+    }
+
+    /**
+     * Override hashcode
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int hashCode() {
+        return (int)(fromDate + toDate);
+    }
+
+    /**
+     * Override toString
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toString() {
+        return String.valueOf(fromDate) + " " + String.valueOf(toDate);
+    }
+
+} // end class DateInterval
diff --git a/src/com/ibm/icu/util/DateRule.java b/src/com/ibm/icu/util/DateRule.java
new file mode 100644
index 0000000..35341f9
--- /dev/null
+++ b/src/com/ibm/icu/util/DateRule.java
@@ -0,0 +1,77 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * DateRule is an interface for calculating the date of an event.
+ * It supports both recurring events and those which occur only once.
+ * DateRule is useful for storing information about holidays,
+ * Daylight Savings Time rules, and other events such as meetings.
+ *
+ * @see SimpleDateRule
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public interface DateRule
+{
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    abstract public Date    firstAfter(Date start);
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date and before the given
+     * end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    abstract public Date    firstBetween(Date start, Date end);
+
+    /**
+     * Checks whether this event occurs on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether this event and the given date are on the same day.
+     * This is useful for applications such as determining whether a given
+     * day is a holiday.
+     *
+     * @param date  The date to check.
+     * @return      true if this event occurs on the given date.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    abstract public boolean isOn(Date date);
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    abstract public boolean isBetween(Date start, Date end);
+}
diff --git a/src/com/ibm/icu/util/DateTimeRule.java b/src/com/ibm/icu/util/DateTimeRule.java
new file mode 100644
index 0000000..61a815b
--- /dev/null
+++ b/src/com/ibm/icu/util/DateTimeRule.java
@@ -0,0 +1,327 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+
+/**
+ * <code>DateTimeRule</code> is a class representing a time in a year by
+ * a rule specified by month, day of month, day of week and
+ * time in the day.
+ * 
+ * @stable ICU 3.8
+ */
+public class DateTimeRule implements Serializable {
+
+    private static final long serialVersionUID = 2183055795738051443L;
+
+    /**
+     * Date rule type defined by exact day of month.
+     * For example, March 14.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int DOM = 0;
+
+    /**
+     * Date rule type defined by day of week in month.
+     * For example, 2nd Sunday in March.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int DOW = 1;
+
+    /**
+     * Date rule type defined by first day of week on or
+     * after exact day of month.
+     * For example, 1st Monday on or after March 15.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int DOW_GEQ_DOM = 2;
+
+    /**
+     * Date rule type defined by last day of week on or
+     * before exact day of month.
+     * For example, last Saturday on or before March 15.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int DOW_LEQ_DOM = 3;
+    
+    /**
+     * Time rule type for local wall time.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int WALL_TIME = 0;
+
+    /**
+     * Time rule type for local standard time.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int STANDARD_TIME = 1;
+
+    /**
+     * Time rule type for coordinated universal time.
+     * 
+     * @stable ICU 3.8
+     */
+    public static final int UTC_TIME = 2;
+
+    // private stuff
+    private final int dateRuleType;
+    private final int month;
+    private final int dayOfMonth;
+    private final int dayOfWeek;
+    private final int weekInMonth;
+
+    private final int timeRuleType;
+    private final int millisInDay;
+
+    /**
+     * Constructs a <code>DateTimeRule</code> by the day of month and
+     * the time rule.  The date rule type for an instance created by
+     * this constructor is <code>DOM</code>.
+     * 
+     * @param month         The rule month, for example, <code>Calendar.JANUARY</code>
+     * @param dayOfMonth    The day of month, 1-based.
+     * @param millisInDay   The milliseconds in the rule date.
+     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+     *                      or <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public DateTimeRule(int month, int dayOfMonth,
+            int millisInDay, int timeType) {
+        dateRuleType = DOM;
+        this.month = month;
+        this.dayOfMonth = dayOfMonth;
+
+        this.millisInDay = millisInDay;
+        this.timeRuleType = timeType;
+        
+        // not used by this rule type
+        this.dayOfWeek = 0;
+        this.weekInMonth = 0;
+    }
+
+    /**
+     * Constructs a <code>DateTimeRule</code> by the day of week and its oridinal
+     * number and the time rule.  The date rule type for an instance created
+     * by this constructor is <code>DOW</code>.
+     * 
+     * @param month         The rule month, for example, <code>Calendar.JANUARY</code>.
+     * @param weekInMonth   The ordinal number of the day of week.  Negative number
+     *                      may be used for specifying a rule date counted from the
+     *                      end of the rule month.
+     * @param dayOfWeek     The day of week, for example, <code>Calendar.SUNDAY</code>.
+     * @param millisInDay   The milliseconds in the rule date.
+     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+     *                      or <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public DateTimeRule(int month, int weekInMonth, int dayOfWeek,
+            int millisInDay, int timeType) {
+        dateRuleType = DOW;
+        this.month = month;
+        this.weekInMonth = weekInMonth;
+        this.dayOfWeek = dayOfWeek;
+
+        this.millisInDay = millisInDay;
+        this.timeRuleType = timeType;
+
+        // not used by this rule type
+        this.dayOfMonth = 0;
+    }
+
+    /**
+     * Constructs a <code>DateTimeRule</code> by the first/last day of week
+     * on or after/before the day of month and the time rule.  The date rule
+     * type for an instance created by this constructor is either
+     * <code>DOM_GEQ_DOM</code> or <code>DOM_LEQ_DOM</code>.
+     * 
+     * @param month         The rule month, for example, <code>Calendar.JANUARY</code>
+     * @param dayOfMonth    The day of month, 1-based.
+     * @param dayOfWeek     The day of week, for example, <code>Calendar.SUNDAY</code>.
+     * @param after         true if the rule date is on or after the day of month.
+     * @param millisInDay   The milliseconds in the rule date.
+     * @param timeType      The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+     *                      or <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public DateTimeRule(int month, int dayOfMonth, int dayOfWeek, boolean after,
+            int millisInDay, int timeType) {
+        this.dateRuleType = after ? DOW_GEQ_DOM : DOW_LEQ_DOM;
+        this.month = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek = dayOfWeek;
+
+        this.millisInDay = millisInDay;
+        this.timeRuleType = timeType;
+
+        // not used by this rule type
+        this.weekInMonth = 0;
+    }
+
+    /**
+     * Gets the date rule type, such as <code>DOM</code>
+     * 
+     * @return The date rule type.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getDateRuleType() {
+        return dateRuleType;
+    }
+
+    /**
+     * Gets the rule month.
+     * 
+     * @return The rule month.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleMonth() {
+        return month;
+    }
+
+    /**
+     * Gets the rule day of month.  When the date rule type
+     * is <code>DOW</code>, the value is always 0.
+     * 
+     * @return The rule day of month
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleDayOfMonth() {
+        return dayOfMonth;
+    }
+
+    /**
+     * Gets the rule day of week.  When the date rule type
+     * is <code>DOM</code>, the value is always 0.
+     * 
+     * @return The rule day of week.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleDayOfWeek() {
+        return dayOfWeek;
+    }
+
+    /**
+     * Gets the rule day of week ordinal number in the month.
+     * When the date rule type is not <code>DOW</code>, the value is
+     * always 0.
+     * 
+     * @return The rule day of week ordinal number in the month.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleWeekInMonth() {
+        return weekInMonth;
+    }
+
+    /**
+     * Gets the time rule type
+     * 
+     * @return The time rule type, either <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
+     *         or <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getTimeRuleType() {
+        return timeRuleType;
+    }
+
+    /**
+     * Gets the rule time in the rule day.
+     * 
+     * @return The time in the rule day in milliseconds.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRuleMillisInDay() {
+        return millisInDay;
+    }
+    
+    private static final String[] DOWSTR = {"", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
+    private static final String[] MONSTR = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
+
+    /**
+     * Returns a <code>String</code> representation of this <code>DateTimeRule</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * 
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        String sDate = null;
+        String sTimeRuleType = null;
+
+        switch (dateRuleType) {
+        case DOM:
+            sDate = Integer.toString(dayOfMonth);
+            break;
+        case DOW:
+            sDate = Integer.toString(weekInMonth) + DOWSTR[dayOfWeek];
+            break;
+        case DOW_GEQ_DOM:
+            sDate = DOWSTR[dayOfWeek] + ">=" + Integer.toString(dayOfMonth);
+            break;
+        case DOW_LEQ_DOM:
+            sDate = DOWSTR[dayOfWeek] + "<=" + Integer.toString(dayOfMonth);
+            break;
+        }
+
+        switch (timeRuleType) {
+        case WALL_TIME:
+            sTimeRuleType = "WALL";
+            break;
+        case STANDARD_TIME:
+            sTimeRuleType = "STD";
+            break;
+        case UTC_TIME:
+            sTimeRuleType = "UTC";
+            break;
+        }
+
+        int time = millisInDay;
+        int millis = time % 1000;
+        time /= 1000;
+        int secs = time % 60;
+        time /= 60;
+        int mins = time % 60;
+        int hours = time / 60;
+
+        StringBuffer buf = new StringBuffer();
+        buf.append("month=");
+        buf.append(MONSTR[month]);
+        buf.append(", date=");
+        buf.append(sDate);
+        buf.append(", time=");
+        buf.append(hours);
+        buf.append(":");
+        buf.append(mins/10);
+        buf.append(mins%10);
+        buf.append(":");
+        buf.append(secs/10);
+        buf.append(secs%10);
+        buf.append(".");
+        buf.append(millis/100);
+        buf.append((millis/10)%10);
+        buf.append(millis%10);
+        buf.append("(");
+        buf.append(sTimeRuleType);
+        buf.append(")");
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/EasterHoliday.java b/src/com/ibm/icu/util/EasterHoliday.java
new file mode 100644
index 0000000..5f14e20
--- /dev/null
+++ b/src/com/ibm/icu/util/EasterHoliday.java
@@ -0,0 +1,287 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * A Holiday subclass which represents holidays that occur
+ * a fixed number of days before or after Easter.  Supports both the
+ * Western and Orthodox methods for calculating Easter.
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class EasterHoliday extends Holiday
+{
+    /**
+     * Construct a holiday that falls on Easter Sunday every year
+     *
+     * @param name The name of the holiday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public EasterHoliday(String name)
+    {
+        super(name, new EasterRule(0, false));
+    }
+
+    /**
+     * Construct a holiday that falls a specified number of days before
+     * or after Easter Sunday each year.
+     *
+     * @param daysAfter The number of days before (-) or after (+) Easter
+     * @param name      The name of the holiday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public EasterHoliday(int daysAfter, String name)
+    {
+        super(name, new EasterRule(daysAfter, false));
+    }
+
+    /**
+     * Construct a holiday that falls a specified number of days before
+     * or after Easter Sunday each year, using either the Western
+     * or Orthodox calendar.
+     *
+     * @param daysAfter The number of days before (-) or after (+) Easter
+     * @param orthodox  Use the Orthodox calendar?
+     * @param name      The name of the holiday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public EasterHoliday(int daysAfter, boolean orthodox, String name)
+    {
+        super(name, new EasterRule(daysAfter, orthodox));
+    }
+
+    /**
+     * Shrove Tuesday, aka Mardi Gras, 48 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday SHROVE_TUESDAY  = new EasterHoliday(-48,    "Shrove Tuesday");
+
+    /**
+     * Ash Wednesday, start of Lent, 47 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday ASH_WEDNESDAY   = new EasterHoliday(-47,    "Ash Wednesday");
+
+    /**
+     * Palm Sunday, 7 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday PALM_SUNDAY     = new EasterHoliday( -7,    "Palm Sunday");
+
+    /**
+     * Maundy Thursday, 3 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday MAUNDY_THURSDAY = new EasterHoliday( -3,    "Maundy Thursday");
+
+    /**
+     * Good Friday, 2 days before Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday GOOD_FRIDAY     = new EasterHoliday( -2,    "Good Friday");
+
+    /**
+     * Easter Sunday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday EASTER_SUNDAY   = new EasterHoliday(  0,    "Easter Sunday");
+
+    /**
+     * Easter Monday, 1 day after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday EASTER_MONDAY   = new EasterHoliday(  1,    "Easter Monday");
+
+    /**
+     * Ascension, 39 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday ASCENSION       = new EasterHoliday( 39,    "Ascension");
+
+    /**
+     * Pentecost (aka Whit Sunday), 49 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday PENTECOST       = new EasterHoliday( 49,    "Pentecost");
+
+    /**
+     * Whit Sunday (aka Pentecost), 49 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday WHIT_SUNDAY     = new EasterHoliday( 49,    "Whit Sunday");
+
+    /**
+     * Whit Monday, 50 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday WHIT_MONDAY     = new EasterHoliday( 50,    "Whit Monday");
+
+    /**
+     * Corpus Christi, 60 days after Easter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final EasterHoliday CORPUS_CHRISTI  = new EasterHoliday( 60,    "Corpus Christi");
+}
+
+class EasterRule implements DateRule {
+    public EasterRule(int daysAfterEaster, boolean isOrthodox) {
+        this.daysAfterEaster = daysAfterEaster;
+        if (isOrthodox) {
+            orthodox.setGregorianChange(new Date(Long.MAX_VALUE));
+            calendar = orthodox;
+        }
+    }
+
+    /**
+     * Return the first occurrance of this rule on or after the given date
+     */
+    public Date firstAfter(Date start)
+    {
+        return doFirstBetween(start, null);
+    }
+
+    /**
+     * Return the first occurrance of this rule on or after
+     * the given start date and before the given end date.
+     */
+    public Date firstBetween(Date start, Date end)
+    {
+        return doFirstBetween(start, end);
+    }
+
+    /**
+     * Return true if the given Date is on the same day as Easter
+     */
+    public boolean isOn(Date date)
+    {
+        synchronized(calendar) {
+            calendar.setTime(date);
+            int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
+
+            calendar.setTime(computeInYear(calendar.getTime(), calendar));
+
+            return calendar.get(Calendar.DAY_OF_YEAR) == dayOfYear;
+        }
+    }
+
+    /**
+     * Return true if Easter occurs between the two dates given
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start, end) != null; // TODO: optimize?
+    }
+
+    private Date doFirstBetween(Date start, Date end)
+    {
+        //System.out.println("doFirstBetween: start   = " + start.toString());
+        //System.out.println("doFirstBetween: end     = " + end.toString());
+
+        synchronized(calendar) {
+            // Figure out when this holiday lands in the given year
+            Date result = computeInYear(start, calendar);
+
+         //System.out.println("                result  = " + result.toString());
+
+            // We might have gotten a date that's in the same year as "start", but
+            // earlier in the year.  If so, go to next year
+            if (result.before(start))
+            {
+                calendar.setTime(start);
+                calendar.get(Calendar.YEAR);    // JDK 1.1.2 bug workaround
+                calendar.add(Calendar.YEAR, 1);
+
+                //System.out.println("                Result before start, going to next year: "
+                //                        + calendar.getTime().toString());
+
+                result = computeInYear(calendar.getTime(), calendar);
+                //System.out.println("                result  = " + result.toString());
+            }
+
+            if (end != null && result.after(end)) {
+                //System.out.println("Result after end, returning null");
+                return null;
+            }
+            return result;
+        }
+    }
+
+    /**
+     * Compute the month and date on which this holiday falls in the year
+     * containing the date "date".  First figure out which date Easter
+     * lands on in this year, and then add the offset for this holiday to get
+     * the right date.
+     * <p>
+     * The algorithm here is taken from the
+     * <a href="http://www.faqs.org/faqs/calendars/faq/">Calendar FAQ</a>.
+     */
+    private Date computeInYear(Date date, GregorianCalendar cal)
+    {
+        if (cal == null) cal = calendar;
+
+        synchronized(cal) {
+            cal.setTime(date);
+
+            int year = cal.get(Calendar.YEAR);
+            int g = year % 19;  // "Golden Number" of year - 1
+            int i = 0;          // # of days from 3/21 to the Paschal full moon
+            int j = 0;          // Weekday (0-based) of Paschal full moon
+
+            if (cal.getTime().after( cal.getGregorianChange()))
+            {
+                // We're past the Gregorian switchover, so use the Gregorian rules.
+                int c = year / 100;
+                int h = (c - c/4 - (8*c+13)/25 + 19*g + 15) % 30;
+                i = h - (h/28)*(1 - (h/28)*(29/(h+1))*((21-g)/11));
+                j = (year + year/4 + i + 2 - c + c/4) % 7;
+            }
+            else
+            {
+                // Use the old Julian rules.
+                i = (19*g + 15) % 30;
+                j = (year + year/4 + i) % 7;
+            }
+            int l = i - j;
+            int m = 3 + (l+40)/44;              // 1-based month in which Easter falls
+            int d = l + 28 - 31*(m/4);          // Date of Easter within that month
+
+            cal.clear();
+            cal.set(Calendar.ERA, GregorianCalendar.AD);
+            cal.set(Calendar.YEAR, year);
+            cal.set(Calendar.MONTH, m-1);       // 0-based
+            cal.set(Calendar.DATE, d);
+            cal.getTime();                      // JDK 1.1.2 bug workaround
+            cal.add(Calendar.DATE, daysAfterEaster);
+
+            return cal.getTime();
+        }
+    }
+
+    private static GregorianCalendar gregorian = new GregorianCalendar(/* new SimpleTimeZone(0, "UTC") */);
+    private static GregorianCalendar orthodox = new GregorianCalendar(/* new SimpleTimeZone(0, "UTC") */);
+
+    private int               daysAfterEaster;
+    private GregorianCalendar calendar = gregorian;
+}
diff --git a/src/com/ibm/icu/util/EthiopicCalendar.java b/src/com/ibm/icu/util/EthiopicCalendar.java
new file mode 100644
index 0000000..e33c177
--- /dev/null
+++ b/src/com/ibm/icu/util/EthiopicCalendar.java
@@ -0,0 +1,389 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Implement the Ethiopic calendar system.
+ * <p>
+ * EthiopicCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=ethiopic"</code>.</p>
+ *
+ * @see com.ibm.icu.util.Calendar
+ * @stable ICU 3.4
+ */
+public final class EthiopicCalendar extends CECalendar 
+{
+    //jdk1.4.2 serialver
+    private static final long serialVersionUID = -2438495771339315608L;
+
+    /** 
+     * Constant for &#x1218;&#x1235;&#x12a8;&#x1228;&#x121d;, the 1st month of the Ethiopic year.
+     * @stable ICU 3.4
+     */
+    public static final int MESKEREM = 0;
+
+    /** 
+     * Constant for &#x1325;&#x1245;&#x121d;&#x1275;, the 2nd month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TEKEMT = 1;
+
+    /** 
+     * Constant for &#x1285;&#x12f3;&#x122d;, the 3rd month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int HEDAR = 2;
+
+    /** 
+     * Constant for &#x1273;&#x1285;&#x1223;&#x1225;, the 4th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TAHSAS = 3;
+
+    /** 
+     * Constant for &#x1325;&#x122d;, the 5th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int TER = 4;
+
+    /** 
+     * Constant for &#x12e8;&#x12ab;&#x1272;&#x1275;, the 6th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int YEKATIT = 5;
+
+    /** 
+     * Constant for &#x1218;&#x130b;&#x1262;&#x1275;, the 7th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int MEGABIT = 6;
+
+    /** 
+     * Constant for &#x121a;&#x12eb;&#x12dd;&#x12eb;, the 8th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int MIAZIA = 7;
+
+    /** 
+     * Constant for &#x130d;&#x1295;&#x1266;&#x1275;, the 9th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int GENBOT = 8;
+
+    /** 
+     * Constant for &#x1230;&#x1294;, the 10th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int SENE = 9;
+
+    /** 
+     * Constant for &#x1210;&#x121d;&#x120c;, the 11th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int HAMLE = 10;
+
+    /** 
+     * Constant for &#x1290;&#x1210;&#x1234;, the 12th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int NEHASSE = 11;
+
+    /** 
+     * Constant for &#x1333;&#x1309;&#x121c;&#x1295;, the 13th month of the Ethiopic year. 
+     * @stable ICU 3.4
+     */
+    public static final int PAGUMEN = 12;
+ 
+    // Up until the end of the 19th century the prevailant convention was to
+    // reference the Ethiopic Calendar from the creation of the world, 
+    // \u12d3\u1218\u1270\u1361\u12d3\u1208\u121d
+    // (Amete Alem 5500 BC).  As Ethiopia modernized the reference epoch from
+    // the birth of Christ (\u12d3\u1218\u1270\u1361\u121d\u1215\u1228\u1275) 
+    // began to displace the creation of the
+    // world reference point.  However, years before the birth of Christ are
+    // still referenced in the creation of the world system.   
+    // Thus -100 \u12d3/\u121d
+    // would be rendered as 5400  \u12d3/\u12d3.
+    //
+    // The creation of the world in Ethiopic cannon was 
+    // Meskerem 1, -5500  \u12d3/\u121d 00:00:00
+    // applying the birth of Christ reference and Ethiopian time conventions.  This is
+    // 6 hours less than the Julian epoch reference point (noon).  In Gregorian
+    // the date and time was July 18th -5493 BC 06:00 AM.
+
+    // Julian Days relative to the 
+    // \u12d3\u1218\u1270\u1361\u121d\u1215\u1228\u1275 epoch
+    // Note: we no longer use this constant
+    //private static final int JD_EPOCH_OFFSET_AMETE_ALEM = -285019;
+
+    // Julian Days relative to the 
+    // \u12d3\u1218\u1270\u1361\u12d3\u1208\u121d epoch
+    private static final int JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856;
+
+    // The delta between Amete Alem 1 and Amete Mihret 1
+    // AA 5501 = AM 1
+    private static final int AMETE_MIHRET_DELTA = 5500;
+
+    // Eras
+    private static final int AMETE_ALEM = 0;
+    private static final int AMETE_MIHRET = 1;
+
+    // Era mode.  When eraType is AMETE_ALEM_ERA,
+    // Amete Mihret won't be used for the ERA field.
+    private static final int AMETE_MIHRET_ERA = 0;
+    private static final int AMETE_ALEM_ERA = 1;
+
+    private int eraType = AMETE_MIHRET_ERA;
+
+    /**
+     * Constructs a default <code>EthiopicCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale The icu locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+    
+    /**
+     * Constructs a <code>EthiopicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @param locale The icu locale for the new calendar.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+    
+    /**
+     * Constructs a <code>EthiopicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Meskerem.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(Date date) {
+        super(date);
+    }
+
+    /**
+     * Constructs a <code>EthiopicCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Meskerem.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 3.4
+     */
+    public EthiopicCalendar(int year, int month, int date, int hour,
+                            int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        if (isAmeteAlemEra()) {
+            return "ethiopic-amete-alem";
+        }
+        return "ethiopic";
+    }
+
+    /**
+     * Set Alem or Mihret era.
+     *
+     * @param onOff Set Amete Alem era if true, otherwise set Amete Mihret era.
+     * @stable ICU 3.4
+     */
+    public void setAmeteAlemEra(boolean onOff) {
+        eraType = onOff ? AMETE_ALEM_ERA : AMETE_MIHRET_ERA;
+    }
+    
+    /**
+     * Return true if this calendar is set to the Amete Alem era.
+     *
+     * @return true if set to the Amete Alem era.
+     * @stable ICU 3.4
+     */
+    public boolean isAmeteAlemEra() {
+        return (eraType == AMETE_ALEM_ERA);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleGetExtendedYear() {
+        // Ethiopic calendar uses EXTENDED_YEAR aligned to
+        // Amelete Mihret year always.
+        int eyear;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            eyear = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else if (isAmeteAlemEra()){
+            eyear = internalGet(YEAR, 1 + AMETE_MIHRET_DELTA)
+                    - AMETE_MIHRET_DELTA; // Default to year 1 of Amelete Mihret
+        } else {
+            // The year defaults to the epoch start, the era to AMETE_MIHRET
+            int era = internalGet(ERA, AMETE_MIHRET);
+            if (era == AMETE_MIHRET) {
+                eyear = internalGet(YEAR, 1); // Default to year 1
+            } else {
+                eyear = internalGet(YEAR, 1) - AMETE_MIHRET_DELTA;
+            }
+        }
+        return eyear;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected void handleComputeFields(int julianDay) {
+        int era, year;
+        int[] fields = new int[3];
+        jdToCE(julianDay, getJDEpochOffset(), fields);
+
+        // fields[0] eyear
+        // fields[1] month
+        // fields[2] day
+
+        if (isAmeteAlemEra()) {
+            era = AMETE_ALEM;
+            year = fields[0] + AMETE_MIHRET_DELTA;
+        } else {
+            if (fields[0] > 0) {
+                era = AMETE_MIHRET;
+                year = fields[0];
+            } else {
+                era = AMETE_ALEM;
+                year = fields[0] + AMETE_MIHRET_DELTA;
+            }
+        }
+
+        internalSet(EXTENDED_YEAR, fields[0]);
+        internalSet(ERA, era);
+        internalSet(YEAR, year);
+        internalSet(MONTH, fields[1]);
+        internalSet(DAY_OF_MONTH, fields[2]);
+        internalSet(DAY_OF_YEAR, (30 * fields[1]) + fields[2]);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        if (isAmeteAlemEra() && field == ERA) {
+            return 0; // Only one era in this mode, era is always 0
+        }
+        return super.handleGetLimit(field, limitType);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int getJDEpochOffset() {
+        return JD_EPOCH_OFFSET_AMETE_MIHRET;
+    }
+
+    /**
+     * Convert an Ethiopic year, month, and day to a Julian day.
+     *
+     * @param year the year
+     * @param month the month
+     * @param date the day
+     *
+     * @draft ICU 3.4 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    // The equivalent operation can be done by public Calendar API.
+    // This API was accidentally marked as @draft, but we have no good
+    // reason to keep this.  For now, we leave it as is, but may be
+    // removed in future.  2008-03-21 yoshito
+    public static int EthiopicToJD(long year, int month, int date) {
+        return ceToJD(year, month, date, JD_EPOCH_OFFSET_AMETE_MIHRET);
+    }
+}
+
diff --git a/src/com/ibm/icu/util/Freezable.java b/src/com/ibm/icu/util/Freezable.java
new file mode 100644
index 0000000..b715ac8
--- /dev/null
+++ b/src/com/ibm/icu/util/Freezable.java
@@ -0,0 +1,323 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 200-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+*/
+package com.ibm.icu.util;
+
+/**
+ * Provides a flexible mechanism for controlling access, without requiring that
+ * a class be immutable. Once locked, an object can never be unlocked, so it is
+ * thread-safe from that point onward. The implementation of both methods must
+ * be synchronized. Once the object has been locked, it must guarantee that no
+ * changes can be made to it. Any attempt to alter it must raise an
+ * UnsupportedOperationException exception. This means that when the object
+ * returns internal objects, or if anyone has references to those internal
+ * objects, that those internal objects must either be immutable, or must also
+ * raise exceptions if any attempt to modify them is made. Of course, the object
+ * can return clones of internal objects, since those are safe.
+ * <h2>Background</h2>
+ * <p>
+ * There are often times when you need objects to be objects 'safe', so that
+ * they can't be modified. Examples are when objects need to be thread-safe, or
+ * in writing robust code, or in caches. If you are only creating your own
+ * objects, you can guarantee this, of course -- but only if you don't make a
+ * mistake. If you have objects handed into you, or are creating objects using
+ * others handed into you, it is a different story. It all comes down to whether
+ * you want to take the Blanche Dubois approach (&quot;depend on the kindness of
+ * strangers&quot;) or the Andy Grove approach (&quot;Only the Paranoid
+ * Survive&quot;).
+ * </p>
+ * <p>
+ * For example, suppose we have a simple class:
+ * </p>
+ * 
+ * <pre>
+ * public class A {
+ *      protected Collection b;
+ * 
+ *      protected Collection c;
+ * 
+ *      public Collection get_b() {
+ *              return b;
+ *      }
+ * 
+ *      public Collection get_c() {
+ *              return c;
+ *      }
+ * 
+ *      public A(Collection new_b, Collection new_c) {
+ *              b = new_b;
+ *              c = new_c;
+ *      }
+ * }
+ * </pre>
+ * 
+ * <p>
+ * Since the class doesn't have any setters, someone might think that it is
+ * immutable. You know where this is leading, of course; this class is unsafe in
+ * a number of ways. The following illustrates that.
+ * </p>
+ * 
+ * <pre>
+ *  public test1(SupposedlyImmutableClass x, SafeStorage y) {
+ *   &lt;font color=&quot;#0000FF&quot;&gt;    &lt;b&gt;// unsafe getter&lt;/b&gt;
+ *   &lt;/font&gt;    A a = x.getA();
+ *   Collection col = a.get_b();
+ *   col.add(something);&lt;font color=&quot;#0000FF&quot;&gt; // a has now been changed, and x too
+ *   &lt;/font&gt;
+ *   &lt;font color=&quot;#0000FF&quot;&gt;&lt;b&gt;// unsafe constructor&lt;/b&gt;&lt;/font&gt;
+ *   a = new A(col, col);
+ *   y.store(a);
+ *   col.add(something);&lt;font color=&quot;#0000FF&quot;&gt; // a has now been changed, and y too
+ *  
+ *   &lt;/font&gt;}
+ * </pre>
+ * 
+ * <p>
+ * There are a few different techniques for having safe classes.
+ * </p>
+ * <ol>
+ * <li>Const objects. In C++, you can declare parameters const.</li>
+ * <li>Immutable wrappers. For example, you can put a collection in an
+ * immutable wrapper.</li>
+ * <li>Always-Immutable objects. Java uses this approach, with a few
+ * variations. Examples:
+ * <ol>
+ * <li>Simple. Once a Color is created (eg from R, G, and B integers) it is
+ * immutable.</li>
+ * <li>Builder Class. There is a separate 'builder' class. For example,
+ * modifiable Strings are created using StringBuffer (which doesn't have the
+ * full String API available). Once you want an immutable form, you create one
+ * with toString().</li>
+ * <li>Primitives. These are always safe, since they are copied on input/output
+ * from methods.</li>
+ * </ol>
+ * </li>
+ * <li>Cloning. Where you need an object to be safe, you clone it.</li>
+ * </ol>
+ * <p>
+ * There are advantages and disadvantages of each of these.
+ * </p>
+ * <ol>
+ * <li>Const provides a certain level of protection, but since const can be and
+ * is often cast away, it only protects against most inadvertent mistakes. It
+ * also offers no threading protection, since anyone who has a pointer to the
+ * (unconst) object in another thread can mess you up.</li>
+ * <li>Immutable wrappers are safer than const in that the constness can't be
+ * cast away. But other than that they have all the same problems: not safe if
+ * someone else keeps hold of the original object, or if any of the objects
+ * returned by the class are mutable.</li>
+ * <li>Always-Immutable Objects are safe, but usage can require excessive
+ * object creation.</li>
+ * <li>Cloning is only safe if the object truly has a 'safe' clone; defined as
+ * one that <i>ensures that no change to the clone affects the original</i>.
+ * Unfortunately, many objects don't have a 'safe' clone, and always cloning can
+ * require excessive object creation.</li>
+ * </ol>
+ * <h2>Freezable Model</h2>
+ * <p>
+ * The <code>Freezable</code> model supplements these choices by giving you
+ * the ability to build up an object by calling various methods, then when it is
+ * in a final state, you can <i>make</i> it immutable. Once immutable, an
+ * object cannot <i>ever </i>be modified, and is completely thread-safe: that
+ * is, multiple threads can have references to it without any synchronization.
+ * If someone needs a mutable version of an object, they can use
+ * <code>cloneAsThawed()</code>, and modify the copy. This provides a simple,
+ * effective mechanism for safe classes in circumstances where the alternatives
+ * are insufficient or clumsy. (If an object is shared before it is immutable,
+ * then it is the responsibility of each thread to mutex its usage (as with
+ * other objects).)
+ * </p>
+ * <p>
+ * Here is what needs to be done to implement this interface, depending on the
+ * type of the object.
+ * </p>
+ * <h3><b>Immutable Objects</b></h3>
+ * <p>
+ * These are the easiest. You just use the interface to reflect that, by adding
+ * the following:
+ * </p>
+ * 
+ * <pre>
+ *  public class A implements Freezable {
+ *   ...
+ *   public final boolean isFrozen() {return true;}
+ *   public final Object freeze() {return this;}
+ *   public final Object cloneAsThawed() { return this; }
+ *   }
+ * </pre>
+ * 
+ * <p>
+ * These can be final methods because subclasses of immutable objects must
+ * themselves be immutable. (Note: <code>freeze</code> is returning
+ * <code>this</code> for chaining.)
+ * </p>
+ * <h3><b>Mutable Objects</b></h3>
+ * <p>
+ * Add a protected 'flagging' field:
+ * </p>
+ * 
+ * <pre>
+ * protected boolean immutable;
+ * </pre>
+ * 
+ * <p>
+ * Add the following methods:
+ * </p>
+ * 
+ * <pre>
+ * public final boolean isFrozen() {
+ *      return frozen;
+ * };
+ * 
+ * public Object freeze() {
+ *      frozen = true;
+ *      return this;
+ * }
+ * </pre>
+ * 
+ * <p>
+ * Add a <code>cloneAsThawed()</code> method following the normal pattern for
+ * <code>clone()</code>, except that <code>frozen=false</code> in the new
+ * clone.
+ * </p>
+ * <p>
+ * Then take the setters (that is, any method that can change the internal state
+ * of the object), and add the following as the first statement:
+ * </p>
+ * 
+ * <pre>
+ * if (isFrozen()) {
+ *      throw new UnsupportedOperationException(&quot;Attempt to modify frozen object&quot;);
+ * }
+ * </pre>
+ * 
+ * <h4><b>Subclassing</b></h4>
+ * <p>
+ * Any subclass of a <code>Freezable</code> will just use its superclass's
+ * flagging field. It must override <code>freeze()</code> and
+ * <code>cloneAsThawed()</code> to call the superclass, but normally does not
+ * override <code>isFrozen()</code>. It must then just pay attention to its
+ * own getters, setters and fields.
+ * </p>
+ * <h4><b>Internal Caches</b></h4>
+ * <p>
+ * Internal caches are cases where the object is logically unmodified, but
+ * internal state of the object changes. For example, there are const C++
+ * functions that cast away the const on the &quot;this&quot; pointer in order
+ * to modify an object cache. These cases are handled by mutexing the internal
+ * cache to ensure thread-safety. For example, suppose that UnicodeSet had an
+ * internal marker to the last code point accessed. In this case, the field is
+ * not externally visible, so the only thing you need to do is to synchronize
+ * the field for thread safety.
+ * </p>
+ * <h4>Unsafe Internal Access</h4>
+ * <p>
+ * Internal fields are called <i>safe</i> if they are either
+ * <code>frozen</code> or immutable (such as String or primitives). If you've
+ * never allowed internal access to these, then you are all done. For example,
+ * converting UnicodeSet to be <code>Freezable</code> is just accomplished
+ * with the above steps. But remember that you <i><b>have</b></i> allowed
+ * access to unsafe internals if you have any code like the following, in a
+ * getter, setter, or constructor:
+ * </p>
+ * 
+ * <pre>
+ * Collection getStuff() {
+ *      return stuff;
+ * } // caller could keep reference &amp; modify
+ * 
+ * void setStuff(Collection x) {
+ *      stuff = x;
+ * } // caller could keep reference &amp; modify
+ * 
+ * MyClass(Collection x) {
+ *      stuff = x;
+ * } // caller could keep reference &amp; modify
+ * </pre>
+ * 
+ * <p>
+ * These also illustrated in the code sample in <b>Background</b> above.
+ * </p>
+ * <p>
+ * To deal with unsafe internals, the simplest course of action is to do the
+ * work in the <code>
+ freeze()</code> function. Just make all of your internal
+ * fields frozen, and set the frozen flag. Any subsequent getter/setter will
+ * work properly. Here is an example:
+ * </p>
+ * 
+ * <pre>
+ * public Object freeze() {
+ *      if (!frozen) {
+ *              foo.freeze();
+ *              frozen = true;
+ *      }
+ *      return this;
+ * }
+ * </pre>
+ * 
+ * <p>
+ * If the field is a <code>Collection</code> or <code>Map</code>, then to
+ * make it frozen you have two choices. If you have never allowed access to the
+ * collection from outside your object, then just wrap it to prevent future
+ * modification.
+ * </p>
+ * 
+ * <pre>
+ * zone_to_country = Collections.unmodifiableMap(zone_to_country);
+ * </pre>
+ * 
+ * <p>
+ * If you have <i>ever</i> allowed access, then do a <code>clone()</code>
+ * before wrapping it.
+ * </p>
+ * 
+ * <pre>
+ * zone_to_country = Collections.unmodifiableMap(zone_to_country.clone());
+ * </pre>
+ * 
+ * <p>
+ * If a collection <i>(or any other container of objects)</i> itself can
+ * contain mutable objects, then for a safe clone you need to recurse through it
+ * to make the entire collection immutable. The recursing code should pick the
+ * most specific collection available, to avoid the necessity of later
+ * downcasing.
+ * </p>
+ * <blockquote>
+ * <p>
+ * <b>Note: </b>An annoying flaw in Java is that the generic collections, like
+ * <code>Map</code> or <code>Set</code>, don't have a <code>clone()</code>
+ * operation. When you don't know the type of the collection, the simplest
+ * course is to just create a new collection:
+ * </p>
+ * 
+ * <pre>
+ * zone_to_country = Collections.unmodifiableMap(new HashMap(zone_to_country));
+ * </pre>
+ * 
+ * </blockquote>
+ * @stable ICU 3.8
+ */
+public interface Freezable extends Cloneable {
+    /**
+     * Determines whether the object has been locked or not.
+     * @stable ICU 3.8
+     */
+    public boolean isFrozen();
+
+    /**
+     * Locks the object.
+     * @return the object itself.
+     * @stable ICU 3.8
+     */
+    public Object freeze();
+
+    /**
+     * Provides for the clone operation. Any clone is initially unlocked.
+     * @stable ICU 3.8
+     */
+    public Object cloneAsThawed();
+}
diff --git a/src/com/ibm/icu/util/GlobalizationPreferences.java b/src/com/ibm/icu/util/GlobalizationPreferences.java
new file mode 100644
index 0000000..582f4de
--- /dev/null
+++ b/src/com/ibm/icu/util/GlobalizationPreferences.java
@@ -0,0 +1,1518 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.util;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+
+/**
+ * This convenience class provides a mechanism for bundling together different
+ * globalization preferences. It includes:
+ * <ul>
+ * <li>A list of locales/languages in preference order</li>
+ * <li>A territory</li>
+ * <li>A currency</li>
+ * <li>A timezone</li>
+ * <li>A calendar</li>
+ * <li>A collator (for language-sensitive sorting, searching, and matching).</li>
+ * <li>Explicit overrides for date/time formats, etc.</li>
+ * </ul>
+ * The class will heuristically compute implicit, heuristic values for the above
+ * based on available data if explicit values are not supplied. These implicit
+ * values can be presented to users for confirmation, or replacement if the
+ * values are incorrect.
+ * <p>
+ * To reset any explicit field so that it will get heuristic values, pass in
+ * null. For example, myPreferences.setLocale(null);
+ * <p>
+ * All of the heuristics can be customized by subclasses, by overriding
+ * getTerritory(), guessCollator(), etc.
+ * <p>
+ * The class also supplies display names for languages, scripts, territories,
+ * currencies, timezones, etc. These are computed according to the
+ * locale/language preference list. Thus, if the preference is Breton; French;
+ * English, then the display name for a language will be returned in Breton if
+ * available, otherwise in French if available, otherwise in English.
+ * <p>
+ * The codes used to reference territory, currency, etc. are as defined elsewhere
+ * in ICU, and are taken from CLDR (which reflects RFC 3066bis usage, ISO 4217,
+ * and the TZ Timezone database identifiers).
+ * <p>
+ * <b>This is at a prototype stage, and has not incorporated all the design
+ * changes that we would like yet; further feedback is welcome.</b></p>
+ * Note:
+ * <ul>
+ * <li>to get the display name for the first day of the week, use the calendar +
+ * display names.</li>
+ * <li>to get the work days, ask the calendar (when that is available).</li>
+ * <li>to get papersize / measurement system/bidi-orientation, ask the locale
+ * (when that is available there)</li>
+ * <li>to get the field order in a date, and whether a time is 24hour or not,
+ * ask the DateFormat (when that is available there)</li>
+ * <li>it will support HOST locale when it becomes available (it is a special
+ * locale that will ask the services to use the host platform's values).</li>
+ * </ul>
+ *
+ * @draft ICU 3.6
+ * @provisional This API might change or be removed in a future release.
+ */
+
+//TODO:
+// - Add Holidays
+// - Add convenience to get/take Locale as well as ULocale.
+// - Add Lenient datetime formatting when that is available.
+// - Should this be serializable?
+// - Other utilities?
+
+public class GlobalizationPreferences implements Freezable {
+    
+    /**
+     * Default constructor
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences(){}
+    /**
+     * Number Format type
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int 
+        NF_NUMBER = 0,      // NumberFormat.NUMBERSTYLE
+        NF_CURRENCY = 1,    // NumberFormat.CURRENCYSTYLE
+        NF_PERCENT = 2,     // NumberFormat.PERCENTSTYLE
+        NF_SCIENTIFIC = 3,  // NumberFormat.SCIENTIFICSTYLE
+        NF_INTEGER = 4;     // NumberFormat.INTEGERSTYLE
+
+    private static final int NF_LIMIT = NF_INTEGER + 1;
+
+    /**
+     * Date Format type
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int
+        DF_FULL = DateFormat.FULL,      // 0
+        DF_LONG = DateFormat.LONG,      // 1
+        DF_MEDIUM = DateFormat.MEDIUM,  // 2
+        DF_SHORT = DateFormat.SHORT,    // 3
+        DF_NONE = 4;
+
+    private static final int DF_LIMIT = DF_NONE + 1;
+
+    /**
+     * For selecting a choice of display names
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int
+        ID_LOCALE = 0,
+        ID_LANGUAGE = 1,
+        ID_SCRIPT = 2,
+        ID_TERRITORY = 3,
+        ID_VARIANT = 4, 
+        ID_KEYWORD = 5,
+        ID_KEYWORD_VALUE = 6,
+        ID_CURRENCY = 7,
+        ID_CURRENCY_SYMBOL = 8,
+        ID_TIMEZONE = 9;
+
+    //private static final int ID_LIMIT = ID_TIMEZONE + 1;
+
+    /**
+     * Break iterator type
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int
+        BI_CHARACTER = BreakIterator.KIND_CHARACTER,    // 0
+        BI_WORD = BreakIterator.KIND_WORD,              // 1
+        BI_LINE = BreakIterator.KIND_LINE,              // 2
+        BI_SENTENCE = BreakIterator.KIND_SENTENCE,      // 3
+        BI_TITLE = BreakIterator.KIND_TITLE;            // 4
+
+    private static final int BI_LIMIT = BI_TITLE + 1;
+
+    /**
+     * Sets the language/locale priority list. If other information is
+     * not (yet) available, this is used to to produce a default value
+     * for the appropriate territory, currency, timezone, etc.  The
+     * user should be given the opportunity to correct those defaults
+     * in case they are incorrect.
+     * 
+     * @param inputLocales list of locales in priority order, eg {"be", "fr"} 
+     *     for Breton first, then French if that fails.
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setLocales(List inputLocales) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        locales = processLocales(inputLocales);
+        return this;
+    }
+
+    /**
+     * Get a copy of the language/locale priority list
+     * 
+     * @return a copy of the language/locale priority list.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public List getLocales() {
+        List result;
+        if (locales == null) {
+            result = guessLocales();
+        } else {
+            result = new ArrayList(); 
+            result.addAll(locales);
+        }
+        return result;
+    }
+
+    /**
+     * Convenience function for getting the locales in priority order
+     * @param index The index (0..n) of the desired item.
+     * @return desired item. null if index is out of range
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ULocale getLocale(int index) {
+        List lcls = locales;
+        if (lcls == null) {
+            lcls = guessLocales();
+        }
+        if (index >= 0 && index < lcls.size()) {
+            return (ULocale)lcls.get(index);
+        }
+        return null;
+    }
+
+    /**
+     * Convenience routine for setting the language/locale priority
+     * list from an array.
+     * 
+     * @see #setLocales(List locales)
+     * @param uLocales list of locales in an array
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setLocales(ULocale[] uLocales) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        return setLocales(Arrays.asList(uLocales));
+    }
+
+    /**
+     * Convenience routine for setting the language/locale priority
+     * list from a single locale/language.
+     * 
+     * @see #setLocales(List locales)
+     * @param uLocale single locale
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setLocale(ULocale uLocale) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        return setLocales(new ULocale[]{uLocale});
+    }
+
+    /**
+     * Convenience routine for setting the locale priority list from
+     * an Accept-Language string.
+     * @see #setLocales(List locales)
+     * @param acceptLanguageString Accept-Language list, as defined by 
+     *     Section 14.4 of the RFC 2616 (HTTP 1.1)
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setLocales(String acceptLanguageString) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        ULocale[] acceptLocales = null;
+        try {
+            acceptLocales = ULocale.parseAcceptLanguage(acceptLanguageString, true);
+        } catch (ParseException pe) {
+            //TODO: revisit after 3.8
+            throw new IllegalArgumentException("Invalid Accept-Language string");
+        }
+        return setLocales(acceptLocales);
+    }
+
+    /**
+     * Convenience function to get a ResourceBundle instance using
+     * the specified base name based on the language/locale priority list
+     * stored in this object.
+     *  
+     * @param baseName the base name of the resource bundle, a fully qualified
+     * class name
+     * @return a resource bundle for the given base name and locale based on the
+     * language/locale priority list stored in this object
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ResourceBundle getResourceBundle(String baseName) {
+        return getResourceBundle(baseName, null);
+    }
+
+    /**
+     * Convenience function to get a ResourceBundle instance using
+     * the specified base name and class loader based on the language/locale
+     * priority list stored in this object.
+     *  
+     * @param baseName the base name of the resource bundle, a fully qualified
+     * class name
+     * @param loader the class object from which to load the resource bundle
+     * @return a resource bundle for the given base name and locale based on the
+     * language/locale priority list stored in this object
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public ResourceBundle getResourceBundle(String baseName, ClassLoader loader) {
+        UResourceBundle urb = null;
+        UResourceBundle candidate = null;
+        String actualLocaleName = null;
+        List fallbacks = getLocales();
+        for (int i = 0; i < fallbacks.size(); i++) {
+            String localeName = ((ULocale)fallbacks.get(i)).toString();
+            if (actualLocaleName != null && localeName.equals(actualLocaleName)) {
+                // Actual locale name in the previous round may exactly matches
+                // with the next fallback locale
+                urb = candidate;
+                break;
+            }
+            try {
+                if (loader == null) {
+                    candidate = UResourceBundle.getBundleInstance(baseName, localeName);
+                }
+                else {
+                    candidate = UResourceBundle.getBundleInstance(baseName, localeName, loader);
+                }
+                if (candidate != null) {
+                    actualLocaleName = candidate.getULocale().getName();
+                    if (actualLocaleName.equals(localeName)) {
+                        urb = candidate;
+                        break;
+                    }
+                    if (urb == null) {
+                        // Preserve the available bundle as the last resort
+                        urb = candidate;
+                    }
+                }
+            } catch (MissingResourceException mre) {
+                actualLocaleName = null;
+                continue;
+            }
+        }
+        if (urb == null) {
+            throw new MissingResourceException("Can't find bundle for base name "
+                    + baseName, baseName, "");
+        }
+        return urb;
+    }
+    
+    /**
+     * Sets the territory, which is a valid territory according to for
+     * RFC 3066 (or successor).  If not otherwise set, default
+     * currency and timezone values will be set from this.  The user
+     * should be given the opportunity to correct those defaults in
+     * case they are incorrect.
+     * 
+     * @param territory code
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setTerritory(String territory) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        this.territory = territory; // immutable, so don't need to clone
+        return this;
+    }
+
+    /**
+     * Gets the territory setting. If it wasn't explicitly set, it is
+     * computed from the general locale setting.
+     * 
+     * @return territory code, explicit or implicit.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getTerritory() {
+        if (territory == null) {
+            return guessTerritory();
+        }
+        return territory; // immutable, so don't need to clone
+    }
+
+    /**
+     * Sets the currency code. If this has not been set, uses default for territory.
+     * 
+     * @param currency Valid ISO 4217 currency code.
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setCurrency(Currency currency) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        this.currency = currency; // immutable, so don't need to clone
+        return this;
+    }
+
+    /**
+     * Get a copy of the currency computed according to the settings.
+     * 
+     * @return currency code, explicit or implicit.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Currency getCurrency() {
+        if (currency == null) {
+            return guessCurrency();
+        }
+        return currency; // immutable, so don't have to clone
+    }
+
+    /**
+     * Sets the calendar. If this has not been set, uses default for territory.
+     * 
+     * @param calendar arbitrary calendar
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setCalendar(Calendar calendar) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        this.calendar = (Calendar) calendar.clone(); // clone for safety
+        return this;
+    }
+
+    /**
+     * Get a copy of the calendar according to the settings. 
+     * 
+     * @return calendar explicit or implicit.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Calendar getCalendar() {
+        if (calendar == null) {
+            return guessCalendar();
+        }
+        Calendar temp = (Calendar) calendar.clone(); // clone for safety
+        temp.setTimeZone(getTimeZone());
+        temp.setTimeInMillis(System.currentTimeMillis());
+        return temp;
+    }
+
+    /**
+     * Sets the timezone ID.  If this has not been set, uses default for territory.
+     * 
+     * @param timezone a valid TZID (see UTS#35).
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setTimeZone(TimeZone timezone) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        this.timezone = (TimeZone) timezone.clone(); // clone for safety;
+        return this;
+    }
+
+    /**
+     * Get the timezone. It was either explicitly set, or is
+     * heuristically computed from other settings.
+     * 
+     * @return timezone, either implicitly or explicitly set
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeZone getTimeZone() {
+        if (timezone == null) {
+            return guessTimeZone();
+        }
+        return (TimeZone) timezone.clone(); // clone for safety
+    }
+
+    /**
+     * Get a copy of the collator according to the settings. 
+     * 
+     * @return collator explicit or implicit.
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Collator getCollator() {
+        if (collator == null) {
+            return guessCollator();
+        }
+        try {
+            return (Collator) collator.clone();  // clone for safety
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException("Error in cloning collator");
+        }
+    }
+
+    /**
+     * Explicitly set the collator for this object.
+     * @param collator
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setCollator(Collator collator) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        try {
+            this.collator = (Collator) collator.clone(); // clone for safety         
+        } catch (CloneNotSupportedException e) {
+                throw new IllegalStateException("Error in cloning collator");
+        }
+        return this;
+    }
+
+    /**
+     * Get a copy of the break iterator for the specified type according to the
+     * settings.
+     * 
+     * @param type
+     *          break type - BI_CHARACTER or BI_WORD, BI_LINE, BI_SENTENCE, BI_TITLE
+     * @return break iterator explicit or implicit
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public BreakIterator getBreakIterator(int type) {
+        if (type < BI_CHARACTER || type >= BI_LIMIT) {
+            throw new IllegalArgumentException("Illegal break iterator type");
+        }
+        if (breakIterators == null || breakIterators[type] == null) {
+            return guessBreakIterator(type);
+        }
+        return (BreakIterator) breakIterators[type].clone(); // clone for safety
+    }
+
+    /**
+     * Explicitly set the break iterator for this object.
+     * 
+     * @param type
+     *          break type - BI_CHARACTER or BI_WORD, BI_LINE, BI_SENTENCE, BI_TITLE
+     * @param iterator a break iterator
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setBreakIterator(int type, BreakIterator iterator) {
+        if (type < BI_CHARACTER || type >= BI_LIMIT) {
+            throw new IllegalArgumentException("Illegal break iterator type");
+        }
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        if (breakIterators == null)
+            breakIterators = new BreakIterator[BI_LIMIT];
+        breakIterators[type] = (BreakIterator) iterator.clone(); // clone for safety
+        return this;
+    }
+
+    /**
+     * Get the display name for an ID: language, script, territory, currency, timezone...
+     * Uses the language priority list to do so.
+     * 
+     * @param id language code, script code, ...
+     * @param type specifies the type of the ID: ID_LANGUAGE, etc.
+     * @return the display name
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayName(String id, int type) {
+        String result = id;
+        for (Iterator it = getLocales().iterator(); it.hasNext();) {
+            ULocale locale = (ULocale) it.next();
+            if (!isAvailableLocale(locale, TYPE_GENERIC)) {
+                continue;
+            }
+            switch (type) {
+            case ID_LOCALE:
+                result = ULocale.getDisplayName(id, locale); 
+                break;
+            case ID_LANGUAGE:
+                result = ULocale.getDisplayLanguage(id, locale); 
+                break;
+            case ID_SCRIPT:
+                result = ULocale.getDisplayScript("und-" + id, locale); 
+                break;
+            case ID_TERRITORY:
+                result = ULocale.getDisplayCountry("und-" + id, locale); 
+                break;
+            case ID_VARIANT:
+                // TODO fix variant parsing
+                result = ULocale.getDisplayVariant("und-QQ-" + id, locale); 
+                break;
+            case ID_KEYWORD:
+                result = ULocale.getDisplayKeyword(id, locale); 
+                break;
+            case ID_KEYWORD_VALUE:
+                String[] parts = new String[2];
+                Utility.split(id,'=',parts);
+                result = ULocale.getDisplayKeywordValue("und@"+id, parts[0], locale);
+                // TODO fix to tell when successful
+                if (result.equals(parts[1])) {
+                    continue;
+                }
+                break;
+            case ID_CURRENCY_SYMBOL:
+            case ID_CURRENCY:
+                Currency temp = new Currency(id);
+                result =temp.getName(locale, type==ID_CURRENCY 
+                                     ? Currency.LONG_NAME 
+                                     : Currency.SYMBOL_NAME, new boolean[1]);
+                // TODO: have method that doesn't take parameter. Add
+                // function to determine whether string is choice
+                // format.  
+                // TODO: have method that doesn't require us
+                // to create a currency
+                break;
+            case ID_TIMEZONE:
+                SimpleDateFormat dtf = new SimpleDateFormat("vvvv",locale);
+                dtf.setTimeZone(TimeZone.getTimeZone(id));
+                result = dtf.format(new Date());
+                // TODO, have method that doesn't require us to create a timezone
+                // fix other hacks
+                // hack for couldn't match
+                
+                boolean isBadStr = false;
+                // Matcher badTimeZone = Pattern.compile("[A-Z]{2}|.*\\s\\([A-Z]{2}\\)").matcher("");
+                // badtzstr = badTimeZone.reset(result).matches();
+                String teststr = result;
+                int sidx = result.indexOf('(');
+                int eidx = result.indexOf(')');
+                if (sidx != -1 && eidx != -1 && (eidx - sidx) == 3) {
+                    teststr = result.substring(sidx+1, eidx);
+                }
+                if (teststr.length() == 2) {
+                    isBadStr = true;
+                    for (int i = 0; i < 2; i++) {
+                        char c = teststr.charAt(i);
+                        if (c < 'A' || 'Z' < c) {
+                            isBadStr = false;
+                            break;
+                        }
+                    }
+                }
+                if (isBadStr) {
+                    continue;
+                }
+                break;
+            default:
+                throw new IllegalArgumentException("Unknown type: " + type);
+            }
+
+            // TODO need better way of seeing if we fell back to root!!
+            // This will not work at all for lots of stuff
+            if (!id.equals(result)) {
+                return result;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Set an explicit date format. Overrides the locale priority list for
+     * a particular combination of dateStyle and timeStyle. DF_NONE should
+     * be used if for the style, where only the date or time format individually
+     * is being set.
+     * 
+     * @param dateStyle DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
+     * @param timeStyle DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
+     * @param format The date format
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setDateFormat(int dateStyle, int timeStyle, DateFormat format) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        if (dateFormats == null) {
+            dateFormats = new DateFormat[DF_LIMIT][DF_LIMIT];
+        }
+        dateFormats[dateStyle][timeStyle] = (DateFormat) format.clone(); // for safety
+        return this;
+    }
+
+    /**
+     * Gets a date format according to the current settings. If there
+     * is an explicit (non-null) date/time format set, a copy of that
+     * is returned. Otherwise, the language priority list is used.
+     * DF_NONE should be used for the style, where only the date or
+     * time format individually is being gotten.
+     * 
+     * @param dateStyle DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
+     * @param timeStyle DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
+     * @return a DateFormat, according to the above description
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateFormat getDateFormat(int dateStyle, int timeStyle) {
+        if (dateStyle == DF_NONE && timeStyle == DF_NONE
+                || dateStyle < 0 || dateStyle >= DF_LIMIT
+                || timeStyle < 0 || timeStyle >= DF_LIMIT) {
+            throw new IllegalArgumentException("Illegal date format style arguments");
+        }
+        DateFormat result = null;
+        if (dateFormats != null) {
+            result = dateFormats[dateStyle][timeStyle];
+        }
+        if (result != null) {
+            result = (DateFormat) result.clone(); // clone for safety
+            // Not sure overriding configuration is what we really want...
+            result.setTimeZone(getTimeZone());
+        } else {
+            result = guessDateFormat(dateStyle, timeStyle);
+        }
+        return result;
+    }
+
+    /**
+     * Gets a number format according to the current settings.  If
+     * there is an explicit (non-null) number format set, a copy of
+     * that is returned.  Otherwise, the language priority list is
+     * used.
+     * 
+     * @param style NF_NUMBER, NF_CURRENCY, NF_PERCENT, NF_SCIENTIFIC, NF_INTEGER
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public NumberFormat getNumberFormat(int style) {
+        if (style < 0 || style >= NF_LIMIT) {
+            throw new IllegalArgumentException("Illegal number format type");
+        }
+        NumberFormat result = null;
+        if (numberFormats != null) {
+            result = numberFormats[style];
+        }
+        if (result != null) {
+            result = (NumberFormat) result.clone(); // clone for safety (later optimize)
+        } else {
+            result = guessNumberFormat(style);
+        }
+        return result;
+    }
+
+    /**
+     * Sets a number format explicitly. Overrides the general locale settings.
+     * 
+     * @param style NF_NUMBER, NF_CURRENCY, NF_PERCENT, NF_SCIENTIFIC, NF_INTEGER
+     * @param format The number format
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences setNumberFormat(int style, NumberFormat format) {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        if (numberFormats == null) {
+            numberFormats = new NumberFormat[NF_LIMIT];
+        }
+        numberFormats[style] = (NumberFormat) format.clone(); // for safety
+        return this;
+    }
+
+    /**
+     * Restore the object to the initial state.
+     * 
+     * @return this, for chaining
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences reset() {
+        if (isFrozen()) {
+            throw new UnsupportedOperationException("Attempt to modify immutable object");
+        }
+        locales = null;
+        territory = null;
+        calendar = null;
+        collator = null;
+        breakIterators = null;
+        timezone = null;
+        currency = null;
+        dateFormats = null;
+        numberFormats = null;
+        implicitLocales = null;
+        return this;
+    }
+
+    /**
+     * Process a language/locale priority list specified via <code>setLocales</code>.
+     * The input locale list may be expanded or re-ordered to represent the prioritized
+     * language/locale order actually used by this object by the algorithm explained
+     * below.
+     * <br>
+     * <br>
+     * <b>Step 1</b>: Move later occurrence of more specific locale before earlier
+     * occurrence of less specific locale.
+     * <br>
+     * Before: en, fr_FR, en_US, en_GB
+     * <br>
+     * After: en_US, en_GB, en, fr_FR
+     * <br>
+     * <br>
+     * <b>Step 2</b>: Append a fallback locale to each locale.
+     * <br>
+     * Before: en_US, en_GB, en, fr_FR
+     * <br>
+     * After: en_US, en, en_GB, en, en, fr_FR, fr
+     * <br>
+     * <br>
+     * <b>Step 3</b>: Remove earlier occurrence of duplicated locale entries.
+     * <br>
+     * Before: en_US, en, en_GB, en, en, fr_FR, fr
+     * <br>
+     * After: en_US, en_GB, en, fr_FR, fr
+     * <br> 
+     * <br>
+     * The final locale list is used to produce a default value for the appropriate territory,
+     * currency, timezone, etc.  The list also represents the lookup order used in
+     * <code>getResourceBundle</code> for this object.  A subclass may override this method
+     * to customize the algorithm used for populating the locale list.
+     * 
+     * @param inputLocales The list of input locales
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected List processLocales(List inputLocales) {
+        List result = new ArrayList();
+        /*
+         * Step 1: Relocate later occurrence of more specific locale
+         * before earlier occurrence of less specific locale.
+         *
+         * Example:
+         *   Before - en_US, fr_FR, zh, en_US_Boston, zh_TW, zh_Hant, fr_CA
+         *   After  - en_US_Boston, en_US, fr_FR, zh_TW, zh_Hant, zh, fr_CA
+         */
+        for (int i = 0; i < inputLocales.size(); i++) {
+            ULocale uloc = (ULocale)inputLocales.get(i);
+
+            String language = uloc.getLanguage();
+            String script = uloc.getScript();
+            String country = uloc.getCountry();
+            String variant = uloc.getVariant();
+
+            boolean bInserted = false;
+            for (int j = 0; j < result.size(); j++) {
+                // Check if this locale is more specific
+                // than existing locale entries already inserted
+                // in the destination list
+                ULocale u = (ULocale)result.get(j);
+                if (!u.getLanguage().equals(language)) {
+                    continue;
+                }
+                String s = u.getScript();
+                String c = u.getCountry();
+                String v = u.getVariant();
+                if (!s.equals(script)) {
+                    if (s.length() == 0 && c.length() == 0 && v.length() == 0) {
+                        result.add(j, uloc);
+                        bInserted = true;
+                        break;
+                    } else if (s.length() == 0 && c.equals(country)) {
+                        // We want to see zh_Hant_HK before zh_HK
+                        result.add(j, uloc);
+                        bInserted = true;
+                        break;                      
+                    } else if (script.length() == 0 && country.length() > 0 && c.length() == 0) {
+                        // We want to see zh_HK before zh_Hant
+                        result.add(j, uloc);
+                        bInserted = true;
+                        break;
+                    }
+                    continue;
+                }
+                if (!c.equals(country)) {
+                    if (c.length() == 0 && v.length() == 0) {
+                        result.add(j, uloc);
+                        bInserted = true;
+                        break;
+                    }
+                }
+                if (!v.equals(variant) && v.length() == 0) {
+                    result.add(j, uloc);
+                    bInserted = true;
+                    break;
+                }
+            }
+            if (!bInserted) {
+                // Add this locale at the end of the list
+                result.add(uloc);
+            }
+        }
+
+        // TODO: Locale aliases might be resolved here
+        // For example, zh_Hant_TW = zh_TW
+
+        /*
+         * Step 2: Append fallback locales for each entry
+         *
+         * Example:
+         *   Before - en_US_Boston, en_US, fr_FR, zh_TW, zh_Hant, zh, fr_CA
+         *   After  - en_US_Boston, en_US, en, en_US, en, fr_FR, fr,
+         *            zh_TW, zn, zh_Hant, zh, zh, fr_CA, fr
+         */
+        int index = 0;
+        while (index < result.size()) {
+            ULocale uloc = (ULocale)result.get(index);
+            while (true) {
+                uloc = uloc.getFallback();
+                if (uloc.getLanguage().length() == 0) {
+                    break;
+                }
+                index++;
+                result.add(index, uloc);
+            }
+            index++;
+        }
+
+        /*
+         * Step 3: Remove earlier occurrence of duplicated locales
+         * 
+         * Example:
+         *   Before - en_US_Boston, en_US, en, en_US, en, fr_FR, fr,
+         *            zh_TW, zn, zh_Hant, zh, zh, fr_CA, fr
+         *   After  - en_US_Boston, en_US, en, fr_FR, zh_TW, zh_Hant,
+         *            zh, fr_CA, fr
+         */
+        index = 0;
+        while (index < result.size() - 1) {
+            ULocale uloc = (ULocale)result.get(index);
+            boolean bRemoved = false;
+            for (int i = index + 1; i < result.size(); i++) {
+                if (uloc.equals((ULocale)result.get(i))) {
+                    // Remove earlier one
+                    result.remove(index);
+                    bRemoved = true;
+                    break;
+                }
+            }
+            if (!bRemoved) {
+                index++;
+            }
+        }
+        return result;
+    }
+
+    
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @param dateStyle
+     * @param timeStyle
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat guessDateFormat(int dateStyle, int timeStyle) {
+        DateFormat result;
+        ULocale dfLocale = getAvailableLocale(TYPE_DATEFORMAT);
+        if (dfLocale == null) {
+            dfLocale = ULocale.ROOT;
+        }
+        if (timeStyle == DF_NONE) {
+            result = DateFormat.getDateInstance(getCalendar(), dateStyle, dfLocale);
+        } else if (dateStyle == DF_NONE) {
+            result = DateFormat.getTimeInstance(getCalendar(), timeStyle, dfLocale);
+        } else {
+            result = DateFormat.getDateTimeInstance(getCalendar(), dateStyle, timeStyle, dfLocale);
+        }
+        return result;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @param style
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected NumberFormat guessNumberFormat(int style) {
+        NumberFormat result;
+        ULocale nfLocale = getAvailableLocale(TYPE_NUMBERFORMAT);
+        if (nfLocale == null) {
+            nfLocale = ULocale.ROOT;
+        }
+        switch (style) {
+        case NF_NUMBER:
+            result = NumberFormat.getInstance(nfLocale);
+            break;
+        case NF_SCIENTIFIC:
+            result = NumberFormat.getScientificInstance(nfLocale);
+            break;
+        case NF_INTEGER:
+            result = NumberFormat.getIntegerInstance(nfLocale);
+            break;
+        case NF_PERCENT:
+            result = NumberFormat.getPercentInstance(nfLocale);
+            break;
+        case NF_CURRENCY:
+            result = NumberFormat.getCurrencyInstance(nfLocale);
+            result.setCurrency(getCurrency());
+            break;
+        default:
+            throw new IllegalArgumentException("Unknown number format style");
+        }
+        return result;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected String guessTerritory() {
+        String result;
+        // pass through locales to see if there is a territory.
+        for (Iterator it = getLocales().iterator(); it.hasNext();) {
+            ULocale locale = (ULocale)it.next();
+            result = locale.getCountry();
+            if (result.length() != 0) {
+                return result;
+            }
+        }
+        // if not, guess from the first language tag, or maybe from
+        // intersection of languages, eg nl + fr => BE
+        // TODO: fix using real data
+        // for now, just use fixed values
+        ULocale firstLocale = getLocale(0);
+        String language = firstLocale.getLanguage();
+        String script = firstLocale.getScript();
+        result = null;
+        if (script.length() != 0) {
+            result = (String) language_territory_hack_map.get(language + "_" + script);
+        }
+        if (result == null) {
+            result = (String) language_territory_hack_map.get(language);
+        }
+        if (result == null) {
+            result = "US"; // need *some* default
+        }
+        return result;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Currency guessCurrency() {
+        return Currency.getInstance(new ULocale("und-" + getTerritory()));
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected List guessLocales() {
+        if (implicitLocales == null) {
+            List result = new ArrayList(1);
+            result.add(ULocale.getDefault());
+            implicitLocales = processLocales(result);
+        }
+        return implicitLocales;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Collator guessCollator() {
+        ULocale collLocale = getAvailableLocale(TYPE_COLLATOR);
+        if (collLocale == null) {
+            collLocale = ULocale.ROOT;
+        }
+        return Collator.getInstance(collLocale);
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @param type
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected BreakIterator guessBreakIterator(int type) {
+        BreakIterator bitr = null;
+        ULocale brkLocale = getAvailableLocale(TYPE_BREAKITERATOR);
+        if (brkLocale == null) {
+            brkLocale = ULocale.ROOT;
+        }
+        switch (type) {
+        case BI_CHARACTER:
+            bitr = BreakIterator.getCharacterInstance(brkLocale);
+            break;
+        case BI_TITLE:
+            bitr = BreakIterator.getTitleInstance(brkLocale);
+            break;
+        case BI_WORD:
+            bitr = BreakIterator.getWordInstance(brkLocale);
+            break;
+        case BI_LINE:
+            bitr = BreakIterator.getLineInstance(brkLocale);
+            break;
+        case BI_SENTENCE:
+            bitr = BreakIterator.getSentenceInstance(brkLocale);
+            break;
+        default:
+            throw new IllegalArgumentException("Unknown break iterator type");
+        }
+        return bitr;
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected TimeZone guessTimeZone() {
+        // TODO fix using real data
+        // for single-zone countries, pick that zone
+        // for others, pick the most populous zone
+        // for now, just use fixed value
+        // NOTE: in a few cases can do better by looking at language. 
+        // Eg haw+US should go to Pacific/Honolulu
+        // fr+CA should go to America/Montreal
+        String timezoneString = (String) territory_tzid_hack_map.get(getTerritory());
+        if (timezoneString == null) {
+            String[] attempt = ZoneMeta.getAvailableIDs(getTerritory());
+            if (attempt.length == 0) {
+                timezoneString = "Etc/GMT"; // gotta do something
+            } else {
+                int i;
+                // this all needs to be fixed to use real data. But for now, do slightly better by skipping cruft
+                for (i = 0; i < attempt.length; ++i) {
+                    if (attempt[i].indexOf("/") >= 0) break;
+                }
+                if (i > attempt.length) i = 0;
+                timezoneString = attempt[i];
+            }
+        }
+        return TimeZone.getTimeZone(timezoneString);
+    }
+
+    /**
+     * This function can be overridden by subclasses to use different heuristics.
+     * <b>It MUST return a 'safe' value,
+     * one whose modification will not affect this object.</b>
+     * 
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Calendar guessCalendar() {
+        ULocale calLocale = getAvailableLocale(TYPE_CALENDAR);
+        if (calLocale == null) {
+            calLocale = ULocale.US;
+        }
+        return Calendar.getInstance(getTimeZone(), calLocale);
+    }
+    
+    // PRIVATES
+    
+    private List locales;
+    private String territory;
+    private Currency currency;
+    private TimeZone timezone;
+    private Calendar calendar;
+    private Collator collator;
+    private BreakIterator[] breakIterators;
+    private DateFormat[][] dateFormats;
+    private NumberFormat[] numberFormats;
+    private List implicitLocales;
+    
+    {
+        reset();
+    }
+
+
+    private ULocale getAvailableLocale(int type) {
+        List locs = getLocales();
+        ULocale result = null;
+        for (int i = 0; i < locs.size(); i++) {
+            ULocale l = (ULocale)locs.get(i);
+            if (isAvailableLocale(l, type)) {
+                result = l;
+                break;
+            }
+        }
+        return result;
+    }
+
+    private boolean isAvailableLocale(ULocale loc, int type) {
+        BitSet bits = (BitSet)available_locales.get(loc);
+        if (bits != null && bits.get(type)) {
+            return true;
+        }
+        return false;        
+    }
+    
+    /*
+     * Available locales for service types
+     */
+    private static final HashMap available_locales = new HashMap();
+    private static final int
+        TYPE_GENERIC = 0,
+        TYPE_CALENDAR = 1,
+        TYPE_DATEFORMAT= 2,
+        TYPE_NUMBERFORMAT = 3,
+        TYPE_COLLATOR = 4,
+        TYPE_BREAKITERATOR = 5,
+        TYPE_LIMIT = TYPE_BREAKITERATOR + 1;
+
+    static {
+        BitSet bits;
+        ULocale[] allLocales = ULocale.getAvailableLocales();
+        for (int i = 0; i < allLocales.length; i++) {
+            bits = new BitSet(TYPE_LIMIT);
+            available_locales.put(allLocales[i], bits);
+            bits.set(TYPE_GENERIC);
+        }
+
+        ULocale[] calLocales = Calendar.getAvailableULocales();
+        for (int i = 0; i < calLocales.length; i++) {
+            bits = (BitSet)available_locales.get(calLocales[i]);
+            if (bits == null) {
+                bits = new BitSet(TYPE_LIMIT);
+                available_locales.put(allLocales[i], bits);
+            }
+            bits.set(TYPE_CALENDAR);
+        }
+
+        ULocale[] dateLocales = DateFormat.getAvailableULocales();
+        for (int i = 0; i < dateLocales.length; i++) {
+            bits = (BitSet)available_locales.get(dateLocales[i]);
+            if (bits == null) {
+                bits = new BitSet(TYPE_LIMIT);
+                available_locales.put(allLocales[i], bits);
+            }
+            bits.set(TYPE_DATEFORMAT);
+        }
+
+        ULocale[] numLocales = NumberFormat.getAvailableULocales();
+        for (int i = 0; i < numLocales.length; i++) {
+            bits = (BitSet)available_locales.get(numLocales[i]);
+            if (bits == null) {
+                bits = new BitSet(TYPE_LIMIT);
+                available_locales.put(allLocales[i], bits);
+            }
+            bits.set(TYPE_NUMBERFORMAT);
+        }
+
+        ULocale[] collLocales = Collator.getAvailableULocales();
+        for (int i = 0; i < collLocales.length; i++) {
+            bits = (BitSet)available_locales.get(collLocales[i]);
+            if (bits == null) {
+                bits = new BitSet(TYPE_LIMIT);
+                available_locales.put(allLocales[i], bits);
+            }
+            bits.set(TYPE_COLLATOR);
+        }
+
+        ULocale[] brkLocales = BreakIterator.getAvailableULocales();
+        for (int i = 0; i < brkLocales.length; i++) {
+            bits = (BitSet)available_locales.get(brkLocales[i]);
+            bits.set(TYPE_BREAKITERATOR);
+        }
+    }
+
+    /** WARNING: All of this data is temporary, until we start importing from CLDR!!!
+     * 
+     */
+    private static final Map language_territory_hack_map = new HashMap();
+    private static final String[][] language_territory_hack = {
+        {"af", "ZA"},
+        {"am", "ET"},
+        {"ar", "SA"},
+        {"as", "IN"},
+        {"ay", "PE"},
+        {"az", "AZ"},
+        {"bal", "PK"},
+        {"be", "BY"},
+        {"bg", "BG"},
+        {"bn", "IN"},
+        {"bs", "BA"},
+        {"ca", "ES"},
+        {"ch", "MP"},
+        {"cpe", "SL"},
+        {"cs", "CZ"},
+        {"cy", "GB"},
+        {"da", "DK"},
+        {"de", "DE"},
+        {"dv", "MV"},
+        {"dz", "BT"},
+        {"el", "GR"},
+        {"en", "US"},
+        {"es", "ES"},
+        {"et", "EE"},
+        {"eu", "ES"},
+        {"fa", "IR"},
+        {"fi", "FI"},
+        {"fil", "PH"},
+        {"fj", "FJ"},
+        {"fo", "FO"},
+        {"fr", "FR"},
+        {"ga", "IE"},
+        {"gd", "GB"},
+        {"gl", "ES"},
+        {"gn", "PY"},
+        {"gu", "IN"},
+        {"gv", "GB"},
+        {"ha", "NG"},
+        {"he", "IL"},
+        {"hi", "IN"},
+        {"ho", "PG"},
+        {"hr", "HR"},
+        {"ht", "HT"},
+        {"hu", "HU"},
+        {"hy", "AM"},
+        {"id", "ID"},
+        {"is", "IS"},
+        {"it", "IT"},
+        {"ja", "JP"},
+        {"ka", "GE"},
+        {"kk", "KZ"},
+        {"kl", "GL"},
+        {"km", "KH"},
+        {"kn", "IN"},
+        {"ko", "KR"},
+        {"kok", "IN"},
+        {"ks", "IN"},
+        {"ku", "TR"},
+        {"ky", "KG"},
+        {"la", "VA"},
+        {"lb", "LU"},
+        {"ln", "CG"},
+        {"lo", "LA"},
+        {"lt", "LT"},
+        {"lv", "LV"},
+        {"mai", "IN"},
+        {"men", "GN"},
+        {"mg", "MG"},
+        {"mh", "MH"},
+        {"mk", "MK"},
+        {"ml", "IN"},
+        {"mn", "MN"},
+        {"mni", "IN"},
+        {"mo", "MD"},
+        {"mr", "IN"},
+        {"ms", "MY"},
+        {"mt", "MT"},
+        {"my", "MM"},
+        {"na", "NR"},
+        {"nb", "NO"},
+        {"nd", "ZA"},
+        {"ne", "NP"},
+        {"niu", "NU"},
+        {"nl", "NL"},
+        {"nn", "NO"},
+        {"no", "NO"},
+        {"nr", "ZA"},
+        {"nso", "ZA"},
+        {"ny", "MW"},
+        {"om", "KE"},
+        {"or", "IN"},
+        {"pa", "IN"},
+        {"pau", "PW"},
+        {"pl", "PL"},
+        {"ps", "PK"},
+        {"pt", "BR"},
+        {"qu", "PE"},
+        {"rn", "BI"},
+        {"ro", "RO"},
+        {"ru", "RU"},
+        {"rw", "RW"},
+        {"sd", "IN"},
+        {"sg", "CF"},
+        {"si", "LK"},
+        {"sk", "SK"},
+        {"sl", "SI"},
+        {"sm", "WS"},
+        {"so", "DJ"},
+        {"sq", "CS"},
+        {"sr", "CS"},
+        {"ss", "ZA"},
+        {"st", "ZA"},
+        {"sv", "SE"},
+        {"sw", "KE"},
+        {"ta", "IN"},
+        {"te", "IN"},
+        {"tem", "SL"},
+        {"tet", "TL"},
+        {"th", "TH"},
+        {"ti", "ET"},
+        {"tg", "TJ"},
+        {"tk", "TM"},
+        {"tkl", "TK"},
+        {"tvl", "TV"},
+        {"tl", "PH"},
+        {"tn", "ZA"},
+        {"to", "TO"},
+        {"tpi", "PG"},
+        {"tr", "TR"},
+        {"ts", "ZA"},
+        {"uk", "UA"},
+        {"ur", "IN"},
+        {"uz", "UZ"},
+        {"ve", "ZA"},
+        {"vi", "VN"},
+        {"wo", "SN"},
+        {"xh", "ZA"},
+        {"zh", "CN"},
+        {"zh_Hant", "TW"},
+        {"zu", "ZA"},
+        {"aa", "ET"},
+        {"byn", "ER"},
+        {"eo", "DE"},
+        {"gez", "ET"},
+        {"haw", "US"},
+        {"iu", "CA"},
+        {"kw", "GB"},
+        {"sa", "IN"},
+        {"sh", "HR"},
+        {"sid", "ET"},
+        {"syr", "SY"},
+        {"tig", "ER"},
+        {"tt", "RU"},
+        {"wal", "ET"},  };
+    static {
+        for (int i = 0; i < language_territory_hack.length; ++i) {
+            language_territory_hack_map.put(language_territory_hack[i][0],language_territory_hack[i][1]);
+        }
+    }
+
+    static final Map territory_tzid_hack_map = new HashMap();
+    static final String[][] territory_tzid_hack = {
+        {"AQ", "Antarctica/McMurdo"},
+        {"AR", "America/Buenos_Aires"},
+        {"AU", "Australia/Sydney"},
+        {"BR", "America/Sao_Paulo"},
+        {"CA", "America/Toronto"},
+        {"CD", "Africa/Kinshasa"},
+        {"CL", "America/Santiago"},
+        {"CN", "Asia/Shanghai"},
+        {"EC", "America/Guayaquil"},
+        {"ES", "Europe/Madrid"},
+        {"GB", "Europe/London"},
+        {"GL", "America/Godthab"},
+        {"ID", "Asia/Jakarta"},
+        {"ML", "Africa/Bamako"},
+        {"MX", "America/Mexico_City"},
+        {"MY", "Asia/Kuala_Lumpur"},
+        {"NZ", "Pacific/Auckland"},
+        {"PT", "Europe/Lisbon"},
+        {"RU", "Europe/Moscow"},
+        {"UA", "Europe/Kiev"},
+        {"US", "America/New_York"},
+        {"UZ", "Asia/Tashkent"},
+        {"PF", "Pacific/Tahiti"},
+        {"FM", "Pacific/Kosrae"},
+        {"KI", "Pacific/Tarawa"},
+        {"KZ", "Asia/Almaty"},
+        {"MH", "Pacific/Majuro"},
+        {"MN", "Asia/Ulaanbaatar"},
+        {"SJ", "Arctic/Longyearbyen"},
+        {"UM", "Pacific/Midway"},   
+    };
+    static {
+        for (int i = 0; i < territory_tzid_hack.length; ++i) {
+            territory_tzid_hack_map.put(territory_tzid_hack[i][0],territory_tzid_hack[i][1]);
+        }
+    }
+
+    // Freezable implementation
+    
+    private boolean frozen;
+
+    /**
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+
+    /**
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object freeze() {
+        frozen = true;
+        return this;
+    }
+
+    /**
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Object cloneAsThawed() {
+        try {
+            GlobalizationPreferences result = (GlobalizationPreferences) clone();
+            result.frozen = false;
+            return result;
+        } catch (CloneNotSupportedException e) {
+            // will always work
+            return null;
+        }
+    }
+}
+
diff --git a/src/com/ibm/icu/util/GregorianCalendar.java b/src/com/ibm/icu/util/GregorianCalendar.java
new file mode 100644
index 0000000..4e5edc1
--- /dev/null
+++ b/src/com/ibm/icu/util/GregorianCalendar.java
@@ -0,0 +1,908 @@
+/*
+ * Copyright (C) 1996-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>GregorianCalendar</code> is a concrete subclass of
+ * {@link Calendar}
+ * and provides the standard calendar used by most of the world.
+ *
+ * <p>
+ * The standard (Gregorian) calendar has 2 eras, BC and AD.
+ *
+ * <p>
+ * This implementation handles a single discontinuity, which corresponds by
+ * default to the date the Gregorian calendar was instituted (October 15, 1582
+ * in some countries, later in others).  The cutover date may be changed by the
+ * caller by calling <code>setGregorianChange()</code>.
+ *
+ * <p>
+ * Historically, in those countries which adopted the Gregorian calendar first,
+ * October 4, 1582 was thus followed by October 15, 1582. This calendar models
+ * this correctly.  Before the Gregorian cutover, <code>GregorianCalendar</code>
+ * implements the Julian calendar.  The only difference between the Gregorian
+ * and the Julian calendar is the leap year rule. The Julian calendar specifies
+ * leap years every four years, whereas the Gregorian calendar omits century
+ * years which are not divisible by 400.
+ *
+ * <p>
+ * <code>GregorianCalendar</code> implements <em>proleptic</em> Gregorian and
+ * Julian calendars. That is, dates are computed by extrapolating the current
+ * rules indefinitely far backward and forward in time. As a result,
+ * <code>GregorianCalendar</code> may be used for all years to generate
+ * meaningful and consistent results. However, dates obtained using
+ * <code>GregorianCalendar</code> are historically accurate only from March 1, 4
+ * AD onward, when modern Julian calendar rules were adopted.  Before this date,
+ * leap year rules were applied irregularly, and before 45 BC the Julian
+ * calendar did not even exist.
+ *
+ * <p>
+ * Prior to the institution of the Gregorian calendar, New Year's Day was
+ * March 25. To avoid confusion, this calendar always uses January 1. A manual
+ * adjustment may be made if desired for dates that are prior to the Gregorian
+ * changeover and which fall between January 1 and March 24.
+ *
+ * <p>Values calculated for the <code>WEEK_OF_YEAR</code> field range from 1 to
+ * 53.  Week 1 for a year is the earliest seven day period starting on
+ * <code>getFirstDayOfWeek()</code> that contains at least
+ * <code>getMinimalDaysInFirstWeek()</code> days from that year.  It thus
+ * depends on the values of <code>getMinimalDaysInFirstWeek()</code>,
+ * <code>getFirstDayOfWeek()</code>, and the day of the week of January 1.
+ * Weeks between week 1 of one year and week 1 of the following year are
+ * numbered sequentially from 2 to 52 or 53 (as needed).
+
+ * <p>For example, January 1, 1998 was a Thursday.  If
+ * <code>getFirstDayOfWeek()</code> is <code>MONDAY</code> and
+ * <code>getMinimalDaysInFirstWeek()</code> is 4 (these are the values
+ * reflecting ISO 8601 and many national standards), then week 1 of 1998 starts
+ * on December 29, 1997, and ends on January 4, 1998.  If, however,
+ * <code>getFirstDayOfWeek()</code> is <code>SUNDAY</code>, then week 1 of 1998
+ * starts on January 4, 1998, and ends on January 10, 1998; the first three days
+ * of 1998 then are part of week 53 of 1997.
+ *
+ * <p>Values calculated for the <code>WEEK_OF_MONTH</code> field range from 0 or
+ * 1 to 4 or 5.  Week 1 of a month (the days with <code>WEEK_OF_MONTH =
+ * 1</code>) is the earliest set of at least
+ * <code>getMinimalDaysInFirstWeek()</code> contiguous days in that month,
+ * ending on the day before <code>getFirstDayOfWeek()</code>.  Unlike
+ * week 1 of a year, week 1 of a month may be shorter than 7 days, need
+ * not start on <code>getFirstDayOfWeek()</code>, and will not include days of
+ * the previous month.  Days of a month before week 1 have a
+ * <code>WEEK_OF_MONTH</code> of 0.
+ *
+ * <p>For example, if <code>getFirstDayOfWeek()</code> is <code>SUNDAY</code>
+ * and <code>getMinimalDaysInFirstWeek()</code> is 4, then the first week of
+ * January 1998 is Sunday, January 4 through Saturday, January 10.  These days
+ * have a <code>WEEK_OF_MONTH</code> of 1.  Thursday, January 1 through
+ * Saturday, January 3 have a <code>WEEK_OF_MONTH</code> of 0.  If
+ * <code>getMinimalDaysInFirstWeek()</code> is changed to 3, then January 1
+ * through January 3 have a <code>WEEK_OF_MONTH</code> of 1.
+ *
+ * <p>
+ * <strong>Example:</strong>
+ * <blockquote>
+ * <pre>
+ * // get the supported ids for GMT-08:00 (Pacific Standard Time)
+ * String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
+ * // if no ids were returned, something is wrong. get out.
+ * if (ids.length == 0)
+ *     System.exit(0);
+ *
+ *  // begin output
+ * System.out.println("Current Time");
+ *
+ * // create a Pacific Standard Time time zone
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
+ *
+ * // set up rules for daylight savings time
+ * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+ * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+ *
+ * // create a GregorianCalendar with the Pacific Daylight time zone
+ * // and the current date and time
+ * Calendar calendar = new GregorianCalendar(pdt);
+ * Date trialTime = new Date();
+ * calendar.setTime(trialTime);
+ *
+ * // print out a bunch of interesting things
+ * System.out.println("ERA: " + calendar.get(Calendar.ERA));
+ * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
+ * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
+ * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
+ * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
+ * System.out.println("DATE: " + calendar.get(Calendar.DATE));
+ * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
+ * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
+ * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
+ * System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ *                    + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
+ * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
+ * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
+ * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
+ * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
+ * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
+ * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
+ * System.out.println("ZONE_OFFSET: "
+ *                    + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
+ * System.out.println("DST_OFFSET: "
+ *                    + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
+
+ * System.out.println("Current Time, with hour reset to 3");
+ * calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
+ * calendar.set(Calendar.HOUR, 3);
+ * System.out.println("ERA: " + calendar.get(Calendar.ERA));
+ * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
+ * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
+ * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
+ * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
+ * System.out.println("DATE: " + calendar.get(Calendar.DATE));
+ * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
+ * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
+ * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
+ * System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ *                    + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
+ * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
+ * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
+ * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
+ * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
+ * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
+ * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
+ * System.out.println("ZONE_OFFSET: "
+ *        + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
+ * System.out.println("DST_OFFSET: "
+ *        + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours</pre>
+ * </blockquote>
+ * <p>
+ * GregorianCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=gregorian"</code>.</p>
+
+ * @see          Calendar
+ * @see          TimeZone
+ * @author David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class GregorianCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 9199388694351062137L;
+
+    /*
+     * Implementation Notes
+     *
+     * The Julian day number, as used here, is a modified number which has its
+     * onset at midnight, rather than noon.
+     *
+     * The epoch is the number of days or milliseconds from some defined
+     * starting point. The epoch for java.util.Date is used here; that is,
+     * milliseconds from January 1, 1970 (Gregorian), midnight UTC.  Other
+     * epochs which are used are January 1, year 1 (Gregorian), which is day 1
+     * of the Gregorian calendar, and December 30, year 0 (Gregorian), which is
+     * day 1 of the Julian calendar.
+     *
+     * We implement the proleptic Julian and Gregorian calendars.  This means we
+     * implement the modern definition of the calendar even though the
+     * historical usage differs.  For example, if the Gregorian change is set
+     * to new Date(Long.MIN_VALUE), we have a pure Gregorian calendar which
+     * labels dates preceding the invention of the Gregorian calendar in 1582 as
+     * if the calendar existed then.
+     *
+     * Likewise, with the Julian calendar, we assume a consistent 4-year leap
+     * rule, even though the historical pattern of leap years is irregular,
+     * being every 3 years from 45 BC through 9 BC, then every 4 years from 8 AD
+     * onwards, with no leap years in-between.  Thus date computations and
+     * functions such as isLeapYear() are not intended to be historically
+     * accurate.
+     *
+     * Given that milliseconds are a long, day numbers such as Julian day
+     * numbers, Gregorian or Julian calendar days, or epoch days, are also
+     * longs. Years can fit into an int.
+     */
+
+//////////////////
+// Class Variables
+//////////////////
+
+    /**
+     * Value of the <code>ERA</code> field indicating
+     * the period before the common era (before Christ), also known as BCE.
+     * The sequence of years at the transition from <code>BC</code> to <code>AD</code> is
+     * ..., 2 BC, 1 BC, 1 AD, 2 AD,...
+     * @see Calendar#ERA
+     * @stable ICU 2.0
+     */
+    public static final int BC = 0;
+
+    /**
+     * Value of the <code>ERA</code> field indicating
+     * the common era (Anno Domini), also known as CE.
+     * The sequence of years at the transition from <code>BC</code> to <code>AD</code> is
+     * ..., 2 BC, 1 BC, 1 AD, 2 AD,...
+     * @see Calendar#ERA
+     * @stable ICU 2.0
+     */
+    public static final int AD = 1;
+
+    private static final int EPOCH_YEAR = 1970;
+
+    private static final int[][] MONTH_COUNT = {
+        //len len2   st  st2
+        {  31,  31,   0,   0 }, // Jan
+        {  28,  29,  31,  31 }, // Feb
+        {  31,  31,  59,  60 }, // Mar
+        {  30,  30,  90,  91 }, // Apr
+        {  31,  31, 120, 121 }, // May
+        {  30,  30, 151, 152 }, // Jun
+        {  31,  31, 181, 182 }, // Jul
+        {  31,  31, 212, 213 }, // Aug
+        {  30,  30, 243, 244 }, // Sep
+        {  31,  31, 273, 274 }, // Oct
+        {  30,  30, 304, 305 }, // Nov
+        {  31,  31, 334, 335 }  // Dec
+        // len  length of month
+        // len2 length of month in a leap year
+        // st   days in year before start of month
+        // st2  days in year before month in leap year
+    };
+    
+    /**
+     * Old year limits were least max 292269054, max 292278994.
+     */
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       1,       1 }, // ERA
+        {        1,        1, 5828963, 5838270 }, // YEAR
+        {        0,        0,      11,      11 }, // MONTH
+        {        1,        1,      52,      53 }, // WEEK_OF_YEAR
+        {/*                                  */}, // WEEK_OF_MONTH
+        {        1,        1,      28,      31 }, // DAY_OF_MONTH
+        {        1,        1,     365,     366 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       4,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5838270, -5838270, 5828964, 5838271 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5838269, -5838269, 5828963, 5838270 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+/////////////////////
+// Instance Variables
+/////////////////////
+
+    /**
+     * The point at which the Gregorian calendar rules are used, measured in
+     * milliseconds from the standard epoch.  Default is October 15, 1582
+     * (Gregorian) 00:00:00 UTC or -12219292800000L.  For this value, October 4,
+     * 1582 (Julian) is followed by October 15, 1582 (Gregorian).  This
+     * corresponds to Julian day number 2299161.
+     * @serial
+     */
+    private long gregorianCutover = -12219292800000L;
+
+    /**
+     * Julian day number of the Gregorian cutover.
+     */
+    private transient int cutoverJulianDay = 2299161;
+    
+    /**
+     * The year of the gregorianCutover, with 0 representing
+     * 1 BC, -1 representing 2 BC, etc.
+     */
+    private transient int gregorianCutoverYear = 1582;
+
+    /**
+     * Used by handleComputeJulianDay() and handleComputeMonthStart().
+     * @stable ICU 2.0
+     */
+    transient protected boolean isGregorian;
+
+    /**
+     * Used by handleComputeJulianDay() and handleComputeMonthStart().
+     * @stable ICU 2.0
+     */
+    transient protected boolean invertGregorian;
+
+///////////////
+// Constructors
+///////////////
+
+    /**
+     * Constructs a default GregorianCalendar using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar() {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(TimeZone zone) {
+        this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale the given locale.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the default time zone with the given locale.
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public GregorianCalendar(ULocale locale) {
+        this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the given time zone with the given locale.
+     * @param zone the given time zone.
+     * @param aLocale the given locale.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a GregorianCalendar based on the current time
+     * in the given time zone with the given locale.
+     * @param zone the given time zone.
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public GregorianCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date set
+     * in the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     * @param hour the value used to set the HOUR_OF_DAY time field
+     * in the calendar.
+     * @param minute the value used to set the MINUTE time field
+     * in the calendar.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(int year, int month, int date, int hour,
+                             int minute) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+    }
+
+    /**
+     * Constructs a GregorianCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     * @param year the value used to set the YEAR time field in the calendar.
+     * @param month the value used to set the MONTH time field in the calendar.
+     * Month value is 0-based. e.g., 0 for January.
+     * @param date the value used to set the DATE time field in the calendar.
+     * @param hour the value used to set the HOUR_OF_DAY time field
+     * in the calendar.
+     * @param minute the value used to set the MINUTE time field
+     * in the calendar.
+     * @param second the value used to set the SECOND time field
+     * in the calendar.
+     * @stable ICU 2.0
+     */
+    public GregorianCalendar(int year, int month, int date, int hour,
+                             int minute, int second) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        set(ERA, AD);
+        set(YEAR, year);
+        set(MONTH, month);
+        set(DATE, date);
+        set(HOUR_OF_DAY, hour);
+        set(MINUTE, minute);
+        set(SECOND, second);
+    }
+
+/////////////////
+// Public methods
+/////////////////
+
+    /**
+     * Sets the GregorianCalendar change date. This is the point when the switch
+     * from Julian dates to Gregorian dates occurred. Default is October 15,
+     * 1582. Previous to this, dates will be in the Julian calendar.
+     * <p>
+     * To obtain a pure Julian calendar, set the change date to
+     * <code>Date(Long.MAX_VALUE)</code>.  To obtain a pure Gregorian calendar,
+     * set the change date to <code>Date(Long.MIN_VALUE)</code>.
+     *
+     * @param date the given Gregorian cutover date.
+     * @stable ICU 2.0
+     */
+    public void setGregorianChange(Date date) {
+        gregorianCutover = date.getTime();
+
+        // If the cutover has an extreme value, then create a pure
+        // Gregorian or pure Julian calendar by giving the cutover year and
+        // JD extreme values.
+        if (gregorianCutover <= MIN_MILLIS) {
+            gregorianCutoverYear = cutoverJulianDay = Integer.MIN_VALUE;
+        } else if (gregorianCutover >= MAX_MILLIS) {
+            gregorianCutoverYear = cutoverJulianDay = Integer.MAX_VALUE;
+        } else {
+            // Precompute two internal variables which we use to do the actual
+            // cutover computations.  These are the Julian day of the cutover
+            // and the cutover year.
+            cutoverJulianDay = (int) floorDivide(gregorianCutover, ONE_DAY);
+            
+            // Convert cutover millis to extended year
+            GregorianCalendar cal = new GregorianCalendar(getTimeZone());
+            cal.setTime(date);
+            gregorianCutoverYear = cal.get(EXTENDED_YEAR);
+        }
+    }
+
+    /**
+     * Gets the Gregorian Calendar change date.  This is the point when the
+     * switch from Julian dates to Gregorian dates occurred. Default is
+     * October 15, 1582. Previous to this, dates will be in the Julian
+     * calendar.
+     * @return the Gregorian cutover date for this calendar.
+     * @stable ICU 2.0
+     */
+    public final Date getGregorianChange() {
+        return new Date(gregorianCutover);
+    }
+
+    /**
+     * Determines if the given year is a leap year. Returns true if the
+     * given year is a leap year.
+     * @param year the given year.
+     * @return true if the given year is a leap year; false otherwise.
+     * @stable ICU 2.0
+     */
+    public boolean isLeapYear(int year) {
+        return year >= gregorianCutoverYear ?
+            ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))) : // Gregorian
+            (year%4 == 0); // Julian
+    }
+
+    /**
+     * Returns true if the given Calendar object is equivalent to this
+     * one.  Calendar override.
+     *
+     * @param other the Calendar to be compared with this Calendar   
+     * @stable ICU 2.4
+     */
+    public boolean isEquivalentTo(Calendar other) {
+        return super.isEquivalentTo(other) &&
+            gregorianCutover == ((GregorianCalendar)other).gregorianCutover;
+    }
+
+    /**
+     * Override hashCode.
+     * Generates the hash code for the GregorianCalendar object
+     * @stable ICU 2.0
+     */
+    public int hashCode() {
+        return super.hashCode() ^ (int)gregorianCutover;
+    }
+
+    /**
+     * Roll a field by a signed amount.
+     * @stable ICU 2.0
+     */
+    public void roll(int field, int amount) {
+
+        switch (field) {
+        case WEEK_OF_YEAR:
+            {
+                // Unlike WEEK_OF_MONTH, WEEK_OF_YEAR never shifts the day of the
+                // week.  Also, rolling the week of the year can have seemingly
+                // strange effects simply because the year of the week of year
+                // may be different from the calendar year.  For example, the
+                // date Dec 28, 1997 is the first day of week 1 of 1998 (if
+                // weeks start on Sunday and the minimal days in first week is
+                // <= 3).
+                int woy = get(WEEK_OF_YEAR);
+                // Get the ISO year, which matches the week of year.  This
+                // may be one year before or after the calendar year.
+                int isoYear = get(YEAR_WOY);
+                int isoDoy = internalGet(DAY_OF_YEAR);
+                if (internalGet(MONTH) == Calendar.JANUARY) {
+                    if (woy >= 52) {
+                        isoDoy += handleGetYearLength(isoYear);
+                    }
+                } else {
+                    if (woy == 1) {
+                        isoDoy -= handleGetYearLength(isoYear - 1);
+                    }
+                }
+                woy += amount;
+                // Do fast checks to avoid unnecessary computation:
+                if (woy < 1 || woy > 52) {
+                    // Determine the last week of the ISO year.
+                    // We do this using the standard formula we use
+                    // everywhere in this file.  If we can see that the
+                    // days at the end of the year are going to fall into
+                    // week 1 of the next year, we drop the last week by
+                    // subtracting 7 from the last day of the year.
+                    int lastDoy = handleGetYearLength(isoYear);
+                    int lastRelDow = (lastDoy - isoDoy + internalGet(DAY_OF_WEEK) -
+                                      getFirstDayOfWeek()) % 7;
+                    if (lastRelDow < 0) lastRelDow += 7;
+                    if ((6 - lastRelDow) >= getMinimalDaysInFirstWeek()) lastDoy -= 7;
+                    int lastWoy = weekNumber(lastDoy, lastRelDow + 1);
+                    woy = ((woy + lastWoy - 1) % lastWoy) + 1;
+                }
+                set(WEEK_OF_YEAR, woy);
+                set(YEAR, isoYear); // Why not YEAR_WOY? - Alan 11/6/00
+                return;
+            }
+
+        default:
+            super.roll(field, amount);
+            return;
+        }
+    }
+
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For the Gregorian calendar, this is the same as getMinimum() and getGreatestMinimum().
+     * @stable ICU 2.0
+     */
+    public int getActualMinimum(int field) {
+        return getMinimum(field);
+    }
+
+    /**
+     * Return the maximum value that this field could have, given the current date.
+     * For example, with the date "Feb 3, 1997" and the DAY_OF_MONTH field, the actual
+     * maximum would be 28; for "Feb 3, 1996" it s 29.  Similarly for a Hebrew calendar,
+     * for some years the actual maximum for MONTH is 12, and for others 13.
+     * @stable ICU 2.0
+     */
+    public int getActualMaximum(int field) {
+        /* It is a known limitation that the code here (and in getActualMinimum)
+         * won't behave properly at the extreme limits of GregorianCalendar's
+         * representable range (except for the code that handles the YEAR
+         * field).  That's because the ends of the representable range are at
+         * odd spots in the year.  For calendars with the default Gregorian
+         * cutover, these limits are Sun Dec 02 16:47:04 GMT 292269055 BC to Sun
+         * Aug 17 07:12:55 GMT 292278994 AD, somewhat different for non-GMT
+         * zones.  As a result, if the calendar is set to Aug 1 292278994 AD,
+         * the actual maximum of DAY_OF_MONTH is 17, not 30.  If the date is Mar
+         * 31 in that year, the actual maximum month might be Jul, whereas is
+         * the date is Mar 15, the actual maximum might be Aug -- depending on
+         * the precise semantics that are desired.  Similar considerations
+         * affect all fields.  Nonetheless, this effect is sufficiently arcane
+         * that we permit it, rather than complicating the code to handle such
+         * intricacies. - liu 8/20/98
+
+         * UPDATE: No longer true, since we have pulled in the limit values on
+         * the year. - Liu 11/6/00 */
+
+        switch (field) {
+
+        case YEAR:
+            /* The year computation is no different, in principle, from the
+             * others, however, the range of possible maxima is large.  In
+             * addition, the way we know we've exceeded the range is different.
+             * For these reasons, we use the special case code below to handle
+             * this field.
+             *
+             * The actual maxima for YEAR depend on the type of calendar:
+             *
+             *     Gregorian = May 17, 292275056 BC - Aug 17, 292278994 AD
+             *     Julian    = Dec  2, 292269055 BC - Jan  3, 292272993 AD
+             *     Hybrid    = Dec  2, 292269055 BC - Aug 17, 292278994 AD
+             *
+             * We know we've exceeded the maximum when either the month, date,
+             * time, or era changes in response to setting the year.  We don't
+             * check for month, date, and time here because the year and era are
+             * sufficient to detect an invalid year setting.  NOTE: If code is
+             * added to check the month and date in the future for some reason,
+             * Feb 29 must be allowed to shift to Mar 1 when setting the year.
+             */
+            {
+                Calendar cal = (Calendar) clone();
+                cal.setLenient(true);
+                
+                int era = cal.get(ERA);
+                Date d = cal.getTime();
+
+                /* Perform a binary search, with the invariant that lowGood is a
+                 * valid year, and highBad is an out of range year.
+                 */
+                int lowGood = LIMITS[YEAR][1];
+                int highBad = LIMITS[YEAR][2]+1;
+                while ((lowGood + 1) < highBad) {
+                    int y = (lowGood + highBad) / 2;
+                    cal.set(YEAR, y);
+                    if (cal.get(YEAR) == y && cal.get(ERA) == era) {
+                        lowGood = y;
+                    } else {
+                        highBad = y;
+                        cal.setTime(d); // Restore original fields
+                    }
+                }
+                
+                return lowGood;
+            }
+
+        default:
+            return super.getActualMaximum(field);
+        }
+    }
+
+//////////////////////
+// Proposed public API
+//////////////////////
+
+    /**
+     * Return true if the current time for this Calendar is in Daylignt
+     * Savings Time.
+     */
+    boolean inDaylightTime() {
+        if (!getTimeZone().useDaylightTime()) return false;
+        complete(); // Force update of DST_OFFSET field
+        return internalGet(DST_OFFSET) != 0;
+    }
+
+
+/////////////////////
+// Calendar framework
+/////////////////////
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            extendedYear += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        return MONTH_COUNT[month][isLeapYear(extendedYear)?1:0];
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleGetYearLength(int eyear) {
+        return isLeapYear(eyear) ? 366 : 365;
+    }
+
+/////////////////////////////
+// Time => Fields computation
+/////////////////////////////
+
+    /**
+     * Override Calendar to compute several fields specific to the hybrid
+     * Gregorian-Julian calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * @stable ICU 2.0
+     */
+    protected void handleComputeFields(int julianDay) {
+        int eyear, month, dayOfMonth, dayOfYear;
+
+        if (julianDay >= cutoverJulianDay) {
+            month = getGregorianMonth();
+            dayOfMonth = getGregorianDayOfMonth();
+            dayOfYear = getGregorianDayOfYear();
+            eyear = getGregorianYear();
+        } else {
+            // The Julian epoch day (not the same as Julian Day)
+            // is zero on Saturday December 30, 0 (Gregorian).
+            long julianEpochDay = julianDay - (JAN_1_1_JULIAN_DAY - 2);
+            eyear = (int) floorDivide(4*julianEpochDay + 1464, 1461);
+            
+            // Compute the Julian calendar day number for January 1, eyear
+            long january1 = 365*(eyear-1) + floorDivide(eyear-1, 4);
+            dayOfYear = (int)(julianEpochDay - january1); // 0-based
+            
+            // Julian leap years occurred historically every 4 years starting
+            // with 8 AD.  Before 8 AD the spacing is irregular; every 3 years
+            // from 45 BC to 9 BC, and then none until 8 AD.  However, we don't
+            // implement this historical detail; instead, we implement the
+            // computatinally cleaner proleptic calendar, which assumes
+            // consistent 4-year cycles throughout time.
+            boolean isLeap = ((eyear&0x3) == 0); // equiv. to (eyear%4 == 0)
+            
+            // Common Julian/Gregorian calculation
+            int correction = 0;
+            int march1 = isLeap ? 60 : 59; // zero-based DOY for March 1
+            if (dayOfYear >= march1) {
+                correction = isLeap ? 1 : 2;
+            }
+            month = (12 * (dayOfYear + correction) + 6) / 367; // zero-based month
+            dayOfMonth = dayOfYear - MONTH_COUNT[month][isLeap?3:2] + 1; // one-based DOM
+            ++dayOfYear;
+        }
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);
+        internalSet(EXTENDED_YEAR, eyear);
+        int era = AD;
+        if (eyear < 1) {
+            era = BC;
+            eyear = 1 - eyear;
+        }
+        internalSet(ERA, era);
+        internalSet(YEAR, eyear);
+    }
+
+/////////////////////////////
+// Fields => Time computation
+/////////////////////////////
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, EPOCH_YEAR);
+        } else {
+            // The year defaults to the epoch start, the era to AD
+            int era = internalGet(ERA, AD);
+            if (era == BC) {
+                year = 1 - internalGet(YEAR, 1); // Convert to extended year
+            } else {
+                year = internalGet(YEAR, EPOCH_YEAR);
+            }
+        }
+        return year;
+    }
+
+    /**
+     * @stable ICU 2.0
+     */
+    protected int handleComputeJulianDay(int bestField) {
+
+        invertGregorian = false;
+
+        int jd = super.handleComputeJulianDay(bestField);
+
+        // The following check handles portions of the cutover year BEFORE the
+        // cutover itself happens.
+        if (isGregorian != (jd >= cutoverJulianDay)) {
+            invertGregorian = true;
+            jd = super.handleComputeJulianDay(bestField);
+        }
+        
+        return jd;
+    }
+
+    /**
+     * Return JD of start of given month/year
+     * @stable ICU 2.0
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // If the month is out of range, adjust it into range, and
+        // modify the extended year value accordingly.
+        if (month < 0 || month > 11) {
+            int[] rem = new int[1];
+            eyear += floorDivide(month, 12, rem);
+            month = rem[0];
+        }
+
+        boolean isLeap = eyear%4 == 0;
+        int y = eyear - 1;
+        int julianDay = 365*y + floorDivide(y, 4) + (JAN_1_1_JULIAN_DAY - 3);
+
+        isGregorian = (eyear >= gregorianCutoverYear);
+        if (invertGregorian) {
+            isGregorian = !isGregorian;
+        }
+        if (isGregorian) {
+            isLeap = isLeap && ((eyear%100 != 0) || (eyear%400 == 0));
+            // Add 2 because Gregorian calendar starts 2 days after
+            // Julian calendar
+            julianDay += floorDivide(y, 400) - floorDivide(y, 100) + 2;
+        }
+
+        // At this point julianDay indicates the day BEFORE the first
+        // day of January 1, <eyear> of either the Julian or Gregorian
+        // calendar.
+
+        if (month != 0) {
+            julianDay += MONTH_COUNT[month][isLeap?3:2];
+        }
+
+        return julianDay;
+    }
+
+    /**
+     * Return the current Calendar type.
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "gregorian";
+    }
+
+    /*
+    private static CalendarFactory factory;
+    public static CalendarFactory factory() {
+        if (factory == null) {
+            factory = new CalendarFactory() {
+                public Calendar create(TimeZone tz, ULocale loc) {
+                    return new GregorianCalendar(tz, loc);
+                }
+
+                public String factoryName() {
+                    return "Gregorian";
+                }
+            };
+        }
+        return factory;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/util/HebrewCalendar.java b/src/com/ibm/icu/util/HebrewCalendar.java
new file mode 100644
index 0000000..3ffe8f8
--- /dev/null
+++ b/src/com/ibm/icu/util/HebrewCalendar.java
@@ -0,0 +1,875 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.impl.CalendarCache;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>HebrewCalendar</code> is a subclass of <code>Calendar</code>
+ * that that implements the traditional Hebrew calendar.
+ * This is the civil calendar in Israel and the liturgical calendar
+ * of the Jewish faith worldwide.
+ * <p>
+ * The Hebrew calendar is lunisolar and thus has a number of interesting
+ * properties that distinguish it from the Gregorian.  Months start
+ * on the day of (an arithmetic approximation of) each new moon.  Since the
+ * solar year (approximately 365.24 days) is not an even multiple of
+ * the lunar month (approximately 29.53 days) an extra "leap month" is
+ * inserted in 7 out of every 19 years.  To make matters even more
+ * interesting, the start of a year can be delayed by up to three days
+ * in order to prevent certain holidays from falling on the Sabbath and
+ * to prevent certain illegal year lengths.  Finally, the lengths of certain
+ * months can vary depending on the number of days in the year.
+ * <p>
+ * The leap month is known as "Adar 1" and is inserted between the
+ * months of Shevat and Adar in leap years.  Since the leap month does
+ * not come at the end of the year, calculations involving
+ * month numbers are particularly complex.  Users of this class should
+ * make sure to use the {@link #roll roll} and {@link #add add} methods
+ * rather than attempting to perform date arithmetic by manipulating
+ * the fields directly.
+ * <p>
+ * <b>Note:</b> In the traditional Hebrew calendar, days start at sunset.
+ * However, in order to keep the time fields in this class
+ * synchronized with those of the other calendars and with local clock time,
+ * we treat days and months as beginning at midnight,
+ * roughly 6 hours after the corresponding sunset.
+ * <p>
+ * If you are interested in more information on the rules behind the Hebrew
+ * calendar, see one of the following references:
+ * <ul>
+ * <li>"<a href="http://www.amazon.com/exec/obidos/ASIN/0521564743">Calendrical Calculations</a>",
+ *      by Nachum Dershowitz & Edward Reingold, Cambridge University Press, 1997, pages 85-91.
+ *
+ * <li>Hebrew Calendar Science and Myths,
+ *      <a href="http://www.geocities.com/Athens/1584/">
+ *      http://www.geocities.com/Athens/1584/</a>
+ *
+ * <li>The Calendar FAQ,
+ *      <a href="http://www.faqs.org/faqs/calendars/faq/">
+ *      http://www.faqs.org/faqs/calendars/faq/</a>
+ * </ul>
+ *
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * HebrewCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=hebrew"</code>.</p>
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ * @see com.ibm.icu.util.Calendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class HebrewCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -1952524560588825816L;
+
+    //-------------------------------------------------------------------------
+    // Tons o' Constants...
+    //-------------------------------------------------------------------------
+
+
+    /** 
+     * Constant for Tishri, the 1st month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int TISHRI = 0;
+
+    /**
+     * Constant for Heshvan, the 2nd month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int HESHVAN = 1;
+
+    /**
+     * Constant for Kislev, the 3rd month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int KISLEV = 2;
+
+    /**
+     * Constant for Tevet, the 4th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int TEVET = 3;
+
+    /**
+     * Constant for Shevat, the 5th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SHEVAT = 4;
+
+    /**
+     * Constant for Adar I, the 6th month of the Hebrew year
+     * (present in leap years only). In non-leap years, the calendar
+     * jumps from Shevat (5th month) to Adar (7th month).
+     * @stable ICU 2.8
+     */
+    public static final int ADAR_1 = 5;
+
+    /** 
+     * Constant for the Adar, the 7th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int ADAR = 6;
+
+    /**
+     * Constant for Nisan, the 8th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int NISAN = 7;
+
+    /**
+     * Constant for Iyar, the 9th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int IYAR = 8;
+
+    /**
+     * Constant for Sivan, the 10th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SIVAN = 9;
+
+    /**
+     * Constant for Tammuz, the 11th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int TAMUZ = 10;
+
+    /**
+     * Constant for Av, the 12th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int AV = 11;
+
+    /**
+     * Constant for Elul, the 13th month of the Hebrew year. 
+     * @stable ICU 2.8 
+     */
+    public static final int ELUL = 12;
+
+    /**
+     * The absolute date, in milliseconds since 1/1/1970 AD, Gregorian,
+     * of the start of the Hebrew calendar.  In order to keep this calendar's
+     * time of day in sync with that of the Gregorian calendar, we use
+     * midnight, rather than sunset the day before.
+     */
+    //private static final long EPOCH_MILLIS = -180799862400000L; // 1/1/1 HY
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest    Least  Maximum
+        //           Minimum  Maximum
+        {        0,        0,       0,       0 }, // ERA
+        { -5000000, -5000000, 5000000, 5000000 }, // YEAR
+        {        0,        0,      12,      12 }, // MONTH
+        {        1,        1,      51,      56 }, // WEEK_OF_YEAR
+        {/*                                  */}, // WEEK_OF_MONTH
+        {        1,        1,      29,      30 }, // DAY_OF_MONTH
+        {        1,        1,     353,     385 }, // DAY_OF_YEAR
+        {/*                                  */}, // DAY_OF_WEEK
+        {       -1,       -1,       5,       5 }, // DAY_OF_WEEK_IN_MONTH
+        {/*                                  */}, // AM_PM
+        {/*                                  */}, // HOUR
+        {/*                                  */}, // HOUR_OF_DAY
+        {/*                                  */}, // MINUTE
+        {/*                                  */}, // SECOND
+        {/*                                  */}, // MILLISECOND
+        {/*                                  */}, // ZONE_OFFSET
+        {/*                                  */}, // DST_OFFSET
+        { -5000000, -5000000, 5000000, 5000000 }, // YEAR_WOY
+        {/*                                  */}, // DOW_LOCAL
+        { -5000000, -5000000, 5000000, 5000000 }, // EXTENDED_YEAR
+        {/*                                  */}, // JULIAN_DAY
+        {/*                                  */}, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * The lengths of the Hebrew months.  This is complicated, because there
+     * are three different types of years, or six if you count leap years.
+     * Due to the rules for postponing the start of the year to avoid having
+     * certain holidays fall on the sabbath, the year can end up being three
+     * different lengths, called "deficient", "normal", and "complete".
+     */
+    private static final int MONTH_LENGTH[][] = {
+        // Deficient  Normal     Complete
+        {   30,         30,         30     },           //Tishri
+        {   29,         29,         30     },           //Heshvan
+        {   29,         30,         30     },           //Kislev
+        {   29,         29,         29     },           //Tevet
+        {   30,         30,         30     },           //Shevat
+        {   30,         30,         30     },           //Adar I (leap years only)
+        {   29,         29,         29     },           //Adar
+        {   30,         30,         30     },           //Nisan
+        {   29,         29,         29     },           //Iyar
+        {   30,         30,         30     },           //Sivan
+        {   29,         29,         29     },           //Tammuz
+        {   30,         30,         30     },           //Av
+        {   29,         29,         29     },           //Elul
+    };
+
+    /**
+     * The cumulative # of days to the end of each month in a non-leap year
+     * Although this can be calculated from the MONTH_LENGTH table,
+     * keeping it around separately makes some calculations a lot faster
+     */
+    private static final int MONTH_START[][] = {
+        // Deficient  Normal     Complete
+        {    0,          0,          0  },          // (placeholder)
+        {   30,         30,         30  },          // Tishri
+        {   59,         59,         60  },          // Heshvan
+        {   88,         89,         90  },          // Kislev
+        {  117,        118,        119  },          // Tevet
+        {  147,        148,        149  },          // Shevat
+        {  147,        148,        149  },          // (Adar I placeholder)
+        {  176,        177,        178  },          // Adar
+        {  206,        207,        208  },          // Nisan
+        {  235,        236,        237  },          // Iyar
+        {  265,        266,        267  },          // Sivan
+        {  294,        295,        296  },          // Tammuz
+        {  324,        325,        326  },          // Av
+        {  353,        354,        355  },          // Elul
+    };
+
+    /**
+     * The cumulative # of days to the end of each month in a leap year
+     */
+    private static final int LEAP_MONTH_START[][] = {
+        // Deficient  Normal     Complete
+        {    0,          0,          0  },          // (placeholder)
+        {   30,         30,         30  },          // Tishri
+        {   59,         59,         60  },          // Heshvan
+        {   88,         89,         90  },          // Kislev
+        {  117,        118,        119  },          // Tevet
+        {  147,        148,        149  },          // Shevat
+        {  177,        178,        179  },          // Adar I
+        {  206,        207,        208  },          // Adar II
+        {  236,        237,        238  },          // Nisan
+        {  265,        266,        267  },          // Iyar
+        {  295,        296,        297  },          // Sivan
+        {  324,        325,        326  },          // Tammuz
+        {  354,        355,        356  },          // Av
+        {  383,        384,        385  },          // Elul
+    };
+
+    //-------------------------------------------------------------------------
+    // Data Members...
+    //-------------------------------------------------------------------------
+
+    private static CalendarCache cache = new CalendarCache();
+    
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>HebrewCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar() {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(TimeZone zone) {
+        this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale The locale for the new calendar.
+     * @stable ICU 3.2
+     */
+    public HebrewCalendar(ULocale locale) {
+        this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param aLocale The locale for the new calendar.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param locale The locale for the new calendar.
+     * @stable ICU 3.2
+     */
+    public HebrewCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(DATE, date);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(Date date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 2.8
+     */
+    public HebrewCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(DATE, date);
+        this.set(HOUR_OF_DAY, hour);
+        this.set(MINUTE, minute);
+        this.set(SECOND, second);
+    }
+
+    //-------------------------------------------------------------------------
+    // Rolling and adding functions overridden from Calendar
+    //
+    // These methods call through to the default implementation in IBMCalendar
+    // for most of the fields and only handle the unusual ones themselves.
+    //-------------------------------------------------------------------------
+
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>. 
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the date "30 Av 5758", the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is "29 Elul 5758" rather than the invalid
+     * "30 Elul 5758".
+     * <p>
+     * This method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.
+     * <p>
+     * <b>Note:</b> You should always use {@link #roll roll} and add rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>HebrewCalendar</tt>.  Since the {@link #MONTH MONTH} field behaves
+     * discontinuously in non-leap years, simple arithmetic can give invalid results.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @stable ICU 2.8
+     */
+    public void add(int field, int amount)
+    {
+        switch (field) {
+        case MONTH: 
+            {
+                // We can't just do a set(MONTH, get(MONTH) + amount).  The
+                // reason is ADAR_1.  Suppose amount is +2 and we land in
+                // ADAR_1 -- then we have to bump to ADAR_2 aka ADAR.  But
+                // if amount is -2 and we land in ADAR_1, then we have to
+                // bump the other way -- down to SHEVAT.  - Alan 11/00
+                int month = get(MONTH);
+                int year = get(YEAR);
+                boolean acrossAdar1;
+                if (amount > 0) {
+                    acrossAdar1 = (month < ADAR_1); // started before ADAR_1?
+                    month += amount;
+                    for (;;) {
+                        if (acrossAdar1 && month>=ADAR_1 && !isLeapYear(year)) {
+                            ++month;
+                        }
+                        if (month <= ELUL) {
+                            break;
+                        }
+                        month -= ELUL+1;
+                        ++year;
+                        acrossAdar1 = true;
+                    }
+                } else {
+                    acrossAdar1 = (month > ADAR_1); // started after ADAR_1?
+                    month += amount;
+                    for (;;) {
+                        if (acrossAdar1 && month<=ADAR_1 && !isLeapYear(year)) {
+                            --month;
+                        }
+                        if (month >= 0) {
+                            break;
+                        }
+                        month += ELUL+1;
+                        --year;
+                        acrossAdar1 = true;
+                    }
+                }
+                set(MONTH, month);
+                set(YEAR, year);
+                pinField(DAY_OF_MONTH);
+                break;
+            }
+            
+        default:
+            super.add(field, amount);
+            break;
+        }
+    }
+
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.  
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Hebrew calendar set to "25 Av 5758" will result in the date "5 Av 5758".
+     * <p>
+     * When rolling certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * upward by one for the date "30 Av 5758", the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is "29 Elul 5758" rather than the invalid
+     * "30 Elul".
+     * <p>
+     * This method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use roll and {@link #add add} rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>HebrewCalendar</tt>.  Since the {@link #MONTH MONTH} field behaves
+     * discontinuously in non-leap years, simple arithmetic can give invalid results.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @stable ICU 2.8
+     */
+    public void roll(int field, int amount)
+    {
+        switch (field) {
+        case MONTH:
+            {
+                int month = get(MONTH);
+                int year = get(YEAR);
+                
+                boolean leapYear = isLeapYear(year);
+                int yearLength = monthsInYear(year);
+                int newMonth = month + (amount % yearLength);
+                //
+                // If it's not a leap year and we're rolling past the missing month
+                // of ADAR_1, we need to roll an extra month to make up for it.
+                //
+                if (!leapYear) {
+                    if (amount > 0 && month < ADAR_1 && newMonth >= ADAR_1) {
+                        newMonth++;
+                    } else if (amount < 0 && month > ADAR_1 && newMonth <= ADAR_1) {
+                        newMonth--;
+                    }
+                }
+                set(MONTH, (newMonth + 13) % 13);
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+        default:
+            super.roll(field, amount);
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    // Support methods
+    //-------------------------------------------------------------------------
+
+    // Hebrew date calculations are performed in terms of days, hours, and
+    // "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.
+    private static final long HOUR_PARTS = 1080;
+    private static final long DAY_PARTS  = 24*HOUR_PARTS;
+    
+    // An approximate value for the length of a lunar month.
+    // It is used to calculate the approximate year and month of a given
+    // absolute date.
+    static private final int  MONTH_DAYS = 29;
+    static private final long MONTH_FRACT = 12*HOUR_PARTS + 793;
+    static private final long MONTH_PARTS = MONTH_DAYS*DAY_PARTS + MONTH_FRACT;
+    
+    // The time of the new moon (in parts) on 1 Tishri, year 1 (the epoch)
+    // counting from noon on the day before.  BAHARAD is an abbreviation of
+    // Bet (Monday), Hey (5 hours from sunset), Resh-Daled (204).
+    static private final long BAHARAD = 11*HOUR_PARTS + 204;
+
+    /**
+     * Finds the day # of the first day in the given Hebrew year.
+     * To do this, we want to calculate the time of the Tishri 1 new moon
+     * in that year.
+     * <p>
+     * The algorithm here is similar to ones described in a number of
+     * references, including:
+     * <ul>
+     * <li>"Calendrical Calculations", by Nachum Dershowitz & Edward Reingold,
+     *     Cambridge University Press, 1997, pages 85-91.
+     *
+     * <li>Hebrew Calendar Science and Myths,
+     *     <a href="http://www.geocities.com/Athens/1584/">
+     *     http://www.geocities.com/Athens/1584/</a>
+     *
+     * <li>The Calendar FAQ,
+     *      <a href="http://www.faqs.org/faqs/calendars/faq/">
+     *      http://www.faqs.org/faqs/calendars/faq/</a>
+     * </ul>
+     */
+    private static long startOfYear(int year)
+    {
+        long day = cache.get(year);
+        
+        if (day == CalendarCache.EMPTY) {
+            int months = (235 * year - 234) / 19;           // # of months before year
+
+            long frac = months * MONTH_FRACT + BAHARAD;     // Fractional part of day #
+            day  = months * 29 + (frac / DAY_PARTS);        // Whole # part of calculation
+            frac = frac % DAY_PARTS;                        // Time of day
+
+            int wd = (int)(day % 7);                        // Day of week (0 == Monday)
+
+            if (wd == 2 || wd == 4 || wd == 6) {
+                // If the 1st is on Sun, Wed, or Fri, postpone to the next day
+                day += 1;
+                wd = (int)(day % 7);
+            }
+            if (wd == 1 && frac > 15*HOUR_PARTS+204 && !isLeapYear(year) ) {
+                // If the new moon falls after 3:11:20am (15h204p from the previous noon)
+                // on a Tuesday and it is not a leap year, postpone by 2 days.
+                // This prevents 356-day years.
+                day += 2;
+            }
+            else if (wd == 0 && frac > 21*HOUR_PARTS+589 && isLeapYear(year-1) ) {
+                // If the new moon falls after 9:32:43 1/3am (21h589p from yesterday noon)
+                // on a Monday and *last* year was a leap year, postpone by 1 day.
+                // Prevents 382-day years.
+                day += 1;
+            }
+            cache.put(year, day);
+        }
+        return day;
+    }
+
+    /*
+     * Find the day of the week for a given day
+     *
+     * @param day   The # of days since the start of the Hebrew calendar,
+     *              1-based (i.e. 1/1/1 AM is day 1).
+     */
+    /*private static int absoluteDayToDayOfWeek(long day)
+    {
+        // We know that 1/1/1 AM is a Monday, which makes the math easy...
+        return (int)(day % 7) + 1;
+    }*/
+
+    /**
+     * Returns the the type of a given year.
+     *  0   "Deficient" year with 353 or 383 days
+     *  1   "Normal"    year with 354 or 384 days
+     *  2   "Complete"  year with 355 or 385 days
+     */
+    private final int yearType(int year)
+    {
+        int yearLength = handleGetYearLength(year);
+
+        if (yearLength > 380) {
+           yearLength -= 30;        // Subtract length of leap month.
+        }
+
+        int type = 0;
+
+        switch (yearLength) {
+            case 353:
+                type = 0; break;
+            case 354:
+                type = 1; break;
+            case 355:
+                type = 2; break;
+            default:
+                throw new IllegalArgumentException("Illegal year length " + yearLength + " in year " + year);
+
+        }
+        return type;
+    }
+
+    /**
+     * Determine whether a given Hebrew year is a leap year
+     *
+     * The rule here is that if (year % 19) == 0, 3, 6, 8, 11, 14, or 17.
+     * The formula below performs the same test, believe it or not.
+     */
+    private static final boolean isLeapYear(int year) {
+        //return (year * 12 + 17) % 19 >= 12;
+        int x = (year*12 + 17) % 19;
+        return x >= ((x < 0) ? -7 : 12);
+    }
+
+    private static int monthsInYear(int year) {
+        return isLeapYear(year) ? 13 : 12;
+    }
+
+    //-------------------------------------------------------------------------
+    // Calendar framework
+    //-------------------------------------------------------------------------
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    /**
+     * Returns the length of the given month in the given year
+     * @stable ICU 2.8
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        // Resolve out-of-range months.  This is necessary in order to
+        // obtain the correct year.  We correct to
+        // a 12- or 13-month year (add/subtract 12 or 13, depending
+        // on the year) but since we _always_ number from 0..12, and
+        // the leap year determines whether or not month 5 (Adar 1)
+        // is present, we allow 0..12 in any given year.
+        while (month < 0) {
+            month += monthsInYear(--extendedYear);
+        }
+        // Careful: allow 0..12 in all years
+        while (month > 12) {
+            month -= monthsInYear(extendedYear++);
+        }
+
+        switch (month) {
+            case HESHVAN:
+            case KISLEV:
+                // These two month lengths can vary
+                return MONTH_LENGTH[month][yearType(extendedYear)];
+                
+            default:
+                // The rest are a fixed length
+                return MONTH_LENGTH[month][0];
+        }
+    }
+
+    /**
+     * Returns the number of days in the given Hebrew year
+     * @stable ICU 2.8
+     */
+    protected int handleGetYearLength(int eyear) {
+        return (int)(startOfYear(eyear+1) - startOfYear(eyear));
+    }
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from milliseconds to field values
+    //-------------------------------------------------------------------------
+
+    /**
+     * Subclasses may override this method to compute several fields
+     * specific to each calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * Subclasses can refer to the DAY_OF_WEEK and DOW_LOCAL fields,
+     * which will be set when this method is called.  Subclasses can
+     * also call the getGregorianXxx() methods to obtain Gregorian
+     * calendar equivalents for the given Julian day.
+     *
+     * <p>In addition, subclasses should compute any subclass-specific
+     * fields, that is, fields from BASE_FIELD_COUNT to
+     * getFieldCount() - 1.
+     * @stable ICU 2.8
+     */
+    protected void handleComputeFields(int julianDay) {
+        long d = julianDay - 347997;
+        long m = (d * DAY_PARTS) / MONTH_PARTS;         // Months (approx)
+        int year = (int)((19 * m + 234) / 235) + 1;     // Years (approx)
+        long ys  = startOfYear(year);                   // 1st day of year
+        int dayOfYear = (int)(d - ys);
+
+        // Because of the postponement rules, it's possible to guess wrong.  Fix it.
+        while (dayOfYear < 1) {
+            year--;
+            ys  = startOfYear(year);
+            dayOfYear = (int)(d - ys);
+        }
+
+        // Now figure out which month we're in, and the date within that month
+        int yearType = yearType(year);
+        int monthStart[][] = isLeapYear(year) ? LEAP_MONTH_START : MONTH_START;
+
+        int month = 0;
+        while (dayOfYear > monthStart[month][yearType]) {
+            month++;
+        }
+        month--;
+        int dayOfMonth = dayOfYear - monthStart[month][yearType];
+
+        internalSet(ERA, 0);
+        internalSet(YEAR, year);
+        internalSet(EXTENDED_YEAR, year);
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);       
+    }
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from field values to milliseconds
+    //-------------------------------------------------------------------------
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            year = internalGet(YEAR, 1); // Default to year 1
+        }
+        return year;
+    }
+
+    /**
+     * Return JD of start of given month/year.
+     * @stable ICU 2.8
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+
+        // Resolve out-of-range months.  This is necessary in order to
+        // obtain the correct year.  We correct to
+        // a 12- or 13-month year (add/subtract 12 or 13, depending
+        // on the year) but since we _always_ number from 0..12, and
+        // the leap year determines whether or not month 5 (Adar 1)
+        // is present, we allow 0..12 in any given year.
+        while (month < 0) {
+            month += monthsInYear(--eyear);
+        }
+        // Careful: allow 0..12 in all years
+        while (month > 12) {
+            month -= monthsInYear(eyear++);
+        }
+
+        long day = startOfYear(eyear);
+
+        if (month != 0) {
+            if (isLeapYear(eyear)) {
+                day += LEAP_MONTH_START[month][yearType(eyear)];
+            } else {
+                day += MONTH_START[month][yearType(eyear)];
+            }
+        }
+
+        return (int) (day + 347997);
+    }
+
+    /**
+     * Return the current Calendar type.
+     * @return type of calendar
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "hebrew";
+    }
+
+    /*
+    private static CalendarFactory factory;
+    public static CalendarFactory factory() {
+        if (factory == null) {
+            factory = new CalendarFactory() {
+                public Calendar create(TimeZone tz, ULocale loc) {
+                    return new HebrewCalendar(tz, loc);
+                }
+
+                public String factoryName() {
+                    return "Hebrew";
+                }
+            };
+        }
+        return factory;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/util/HebrewHoliday.java b/src/com/ibm/icu/util/HebrewHoliday.java
new file mode 100644
index 0000000..01fff4a
--- /dev/null
+++ b/src/com/ibm/icu/util/HebrewHoliday.java
@@ -0,0 +1,182 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+/**
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class HebrewHoliday extends Holiday
+{
+    private static final HebrewCalendar gCalendar = new HebrewCalendar();
+
+    /**
+     * Construct a holiday defined in reference to the Hebrew calendar.
+     *
+     * @param name The name of the holiday
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public HebrewHoliday(int month, int date, String name)
+    {
+        this(month, date, 1, name);
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public HebrewHoliday(int month, int date, int length, String name)
+    {
+        super(name, new SimpleDateRule(month, date, gCalendar));
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday ROSH_HASHANAH   = new HebrewHoliday(HebrewCalendar.TISHRI,  1,  2,  "Rosh Hashanah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday GEDALIAH        = new HebrewHoliday(HebrewCalendar.TISHRI,  3,      "Fast of Gedaliah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_KIPPUR      = new HebrewHoliday(HebrewCalendar.TISHRI, 10,      "Yom Kippur");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SUKKOT          = new HebrewHoliday(HebrewCalendar.TISHRI, 15,  6,  "Sukkot");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday HOSHANAH_RABBAH = new HebrewHoliday(HebrewCalendar.TISHRI, 21,      "Hoshanah Rabbah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SHEMINI_ATZERET = new HebrewHoliday(HebrewCalendar.TISHRI, 22,      "Shemini Atzeret");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SIMCHAT_TORAH   = new HebrewHoliday(HebrewCalendar.TISHRI, 23,      "Simchat Torah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday HANUKKAH        = new HebrewHoliday(HebrewCalendar.KISLEV, 25,      "Hanukkah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday TEVET_10        = new HebrewHoliday(HebrewCalendar.TEVET,  10,      "Fast of Tevet 10");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday TU_BSHEVAT      = new HebrewHoliday(HebrewCalendar.SHEVAT, 15,      "Tu B'Shevat");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday ESTHER          = new HebrewHoliday(HebrewCalendar.ADAR,   13,      "Fast of Esther");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday PURIM           = new HebrewHoliday(HebrewCalendar.ADAR,   14,      "Purim");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SHUSHAN_PURIM   = new HebrewHoliday(HebrewCalendar.ADAR,   15,      "Shushan Purim");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday PASSOVER        = new HebrewHoliday(HebrewCalendar.NISAN,  15,  8,  "Passover");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_HASHOAH     = new HebrewHoliday(HebrewCalendar.NISAN,  27,      "Yom Hashoah");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_HAZIKARON   = new HebrewHoliday(HebrewCalendar.IYAR,    4,      "Yom Hazikaron");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_HAATZMAUT   = new HebrewHoliday(HebrewCalendar.IYAR,    5,      "Yom Ha'Atzmaut");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday PESACH_SHEINI   = new HebrewHoliday(HebrewCalendar.IYAR,   14,      "Pesach Sheini");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday LAG_BOMER       = new HebrewHoliday(HebrewCalendar.IYAR,   18,      "Lab B'Omer");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday YOM_YERUSHALAYIM = new HebrewHoliday(HebrewCalendar.IYAR,   28,      "Yom Yerushalayim");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SHAVUOT         = new HebrewHoliday(HebrewCalendar.SIVAN,   6,  2,  "Shavuot");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday TAMMUZ_17       = new HebrewHoliday(HebrewCalendar.TAMUZ,  17,      "Fast of Tammuz 17");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday TISHA_BAV       = new HebrewHoliday(HebrewCalendar.AV,      9,      "Fast of Tisha B'Av");
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static HebrewHoliday SELIHOT         = new HebrewHoliday(HebrewCalendar.ELUL,   21,      "Selihot");
+}
diff --git a/src/com/ibm/icu/util/Holiday.java b/src/com/ibm/icu/util/Holiday.java
new file mode 100644
index 0000000..0e2b646
--- /dev/null
+++ b/src/com/ibm/icu/util/Holiday.java
@@ -0,0 +1,208 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * An abstract class representing a holiday.
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public abstract class Holiday implements DateRule
+{
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Holiday[] getHolidays()
+    {
+        return getHolidays(ULocale.getDefault());
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Holiday[] getHolidays(Locale locale)
+    {
+        return getHolidays(ULocale.forLocale(locale));
+    }
+
+    /**
+     * @draft ICU 3.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Holiday[] getHolidays(ULocale locale)
+    {
+        Holiday[] result = noHolidays;
+
+        try {
+            ResourceBundle bundle = UResourceBundle.getBundleInstance("com.ibm.icu.impl.data.HolidayBundle", locale);
+
+            result = (Holiday[]) bundle.getObject("holidays");
+        }
+        catch (MissingResourceException e) {
+        }
+        return result;
+    }
+
+    /**
+     * Return the first occurrence of this holiday on or after the given date
+     *
+     * @param start Only holidays on or after this date are returned.
+     *
+     * @return      The date on which this holiday occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstAfter(Date start) {
+        return rule.firstAfter(start);
+    }
+
+    /**
+     * Return the first occurrence of this holiday that is on or after
+     * the given start date and before the given end date.
+     *
+     * @param start Only occurrences on or after this date are returned.
+     * @param end   Only occurrences before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstBetween(Date start, Date end) {
+        return rule.firstBetween(start, end);
+    }
+
+    /**
+     * Checks whether this holiday falls on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether the holiday and the given date are on the same day.
+     *
+     * @param date  The date to check.
+     * @return      true if this holiday occurs on the given date.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isOn(Date date) {
+        //System.out.println(name + ".isOn(" + date.toString() + "):");
+        return rule.isOn(date);
+    }
+
+    /**
+     * Check whether this holiday occurs at least once between the two
+     * dates given.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isBetween(Date start, Date end) {
+        return rule.isBetween(start, end);
+    }
+
+    /**
+     * Construct a new Holiday object.  This is for use by subclasses only.
+     * This constructs a new holiday with the given name and date rules.
+     *
+     * @param name  The name of this holiday.  The getDisplayName method
+     *              uses this string as a key to look up the holiday's name a
+     *              resource bundle object named HolidayBundle.
+     *
+     * @param rule  The date rules used for determining when this holiday
+     *              falls.  Holiday's implementation of the DateRule interface
+     *              simply delegates to this DateRule object.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected Holiday(String name, DateRule rule)
+    {
+        this.name = name;
+        this.rule = rule;
+    }
+
+    /**
+     * Return the name of this holiday in the language of the default locale.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayName() {
+        return getDisplayName(ULocale.getDefault());
+    }
+
+    /**
+     * Return the name of this holiday in the language of the specified locale.
+     * The <code>name</code> parameter passed to this object's constructor is used
+     * as a key to look up the holiday's localized name in a ResourceBundle object
+     * named HolidayBundle.
+     *
+     * @param locale   A locale specifying the language in which the name is desired.
+     *
+     * @see ResourceBundle
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayName(Locale locale)
+    {
+        return getDisplayName(ULocale.forLocale(locale));
+    }
+
+    /**
+     * Return the name of this holiday in the language of the specified locale
+     * The <code>name</code> parameter passed to this object's constructor is used
+     * as a key to look up the holiday's localized name in a ResourceBundle object
+     * named HolidayBundle.
+     *
+     * @param locale   A locale specifying the language in which the name is desired.
+     *
+     * @see ResourceBundle
+     * @draft ICU 3.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayName(ULocale locale)
+    {
+        String dispName = name;
+
+        try {
+            ResourceBundle bundle = UResourceBundle.getBundleInstance("com.ibm.icu.impl.data.HolidayBundle", locale);
+            dispName = bundle.getString(name);
+        }
+        catch (MissingResourceException e) {
+        }
+        return dispName;
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public DateRule getRule() {
+        return rule;
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setRule(DateRule rule) {
+        this.rule = rule;
+    }
+
+    private String      name;
+    private DateRule    rule;
+
+    private static Holiday[] noHolidays = {};
+}
diff --git a/src/com/ibm/icu/util/IndianCalendar.java b/src/com/ibm/icu/util/IndianCalendar.java
new file mode 100644
index 0000000..0320026
--- /dev/null
+++ b/src/com/ibm/icu/util/IndianCalendar.java
@@ -0,0 +1,575 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>IndianCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years since the birth of the Buddha.  This is the civil calendar
+ * which is accepted by government of India as Indian National Calendar. 
+ * The two calendars most widely used in India today are the Vikrama calendar 
+ * followed in North India and the Shalivahana or Saka calendar which is followed 
+ * in South India and Maharashtra.
+
+ * A variant of the Shalivahana Calendar was reformed and standardized as the 
+ * Indian National calendar in 1957.
+ * <p>
+ * Some details of Indian National Calendar (to be implemented) :
+ * The Months
+ * Month          Length      Start date (Gregorian)
+ * =================================================
+ * 1 Chaitra      30/31          March 22*
+ * 2 Vaisakha     31             April 21
+ * 3 Jyaistha     31             May 22
+ * 4 Asadha       31             June 22
+ * 5 Sravana      31             July 23
+ * 6 Bhadra       31             August 23
+ * 7 Asvina       30             September 23
+ * 8 Kartika      30             October 23
+ * 9 Agrahayana   30             November 22
+ * 10 Pausa       30             December 22
+ * 11 Magha       30             January 21
+ * 12 Phalguna    30             February 20
+
+ * In leap years, Chaitra has 31 days and starts on March 21 instead.
+ * The leap years of Gregorian calendar and Indian National Calendar are in synchornization. 
+ * So When its a leap year in Gregorian calendar then Chaitra has 31 days.
+ *
+ * The Years
+ * Years are counted in the Saka Era, which starts its year 0 in 78AD (by gregorian calendar).
+ * So for eg. 9th June 2006 by Gregorian Calendar, is same as 19th of Jyaistha in 1928 of Saka 
+ * era by Indian National Calendar.
+ * <p>
+ * The Indian Calendar has only one allowable era: <code>Saka Era</code>.  If the
+ * calendar is not in lenient mode (see <code>setLenient</code>), dates before
+ * 1/1/1 Saka Era are rejected with an <code>IllegalArgumentException</code>.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * IndianCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=Indian"</code>.</p>
+ * 
+ * @see com.ibm.icu.util.Calendar
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @stable ICU 3.8
+ */
+public class IndianCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 3617859668165014834L;
+
+    /** 
+     * Constant for Chaitra, the 1st month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int CHAITRA = 0;
+
+    /** 
+     * Constant for Vaisakha, the 2nd month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int VAISAKHA = 1;
+
+    /** 
+     * Constant for Jyaistha, the 3rd month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int JYAISTHA = 2;
+
+    /** 
+     * Constant for Asadha, the 4th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int ASADHA = 3; 
+
+    /** 
+     * Constant for Sravana, the 5th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int SRAVANA = 4 ;
+
+    /** 
+     * Constant for Bhadra, the 6th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int BHADRA = 5 ;
+
+    /** 
+     * Constant for Asvina, the 7th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int ASVINA = 6 ;
+
+    /** 
+     * Constant for Kartika, the 8th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int KARTIKA = 7 ;
+
+    /** 
+     * Constant for Agrahayana, the 9th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int AGRAHAYANA = 8 ;
+
+    /** 
+     * Constant for Pausa, the 10th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int PAUSA = 9 ;
+
+    /** 
+     * Constant for Magha, the 11th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int MAGHA = 10;
+
+    /** 
+     * Constant for Phalguna, the 12th month of the Indian year. 
+     * @stable ICU 3.8
+     */
+    public static final int PHALGUNA = 11;
+    
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constant for the Indian Era.  This is the only allowable <code>ERA</code>
+     * value for the Indian calendar.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     * @stable ICU 3.8
+     */
+    public static final int IE = 0;
+    
+    /**
+     * Constructs a <code>IndianCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar() {
+       this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone the given time zone.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(TimeZone zone) {
+       this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(ULocale locale) {
+       this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(Date date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>IndianCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(int year, int month, int date) {
+       super(TimeZone.getDefault(), ULocale.getDefault());
+       this.set(Calendar.YEAR, year);
+       this.set(Calendar.MONTH, month);
+       this.set(Calendar.DATE, date);
+
+    }
+
+    /**
+     * Constructs a IndianCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 3.8
+     */
+    public IndianCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+       super(TimeZone.getDefault(), ULocale.getDefault());
+       this.set(Calendar.YEAR, year);
+       this.set(Calendar.MONTH, month);
+       this.set(Calendar.DATE, date);
+       this.set(Calendar.HOUR_OF_DAY, hour);
+       this.set(Calendar.MINUTE, minute);
+       this.set(Calendar.SECOND, second);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // The only practical difference from a Gregorian calendar is that years
+    // are numbered since the Saka Era.  A couple of overrides will
+    // take care of that....
+    //-------------------------------------------------------------------------
+    
+    // Starts in 78 AD, 
+    private static final int INDIAN_ERA_START = 78;
+    
+    // The Indian year starts 80 days later than the Gregorian year.
+    private static final int INDIAN_YEAR_START = 80;
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1);
+        } else {
+            // Ignore the era, as there is only one
+            year = internalGet(YEAR, 1);
+        }
+        
+        return year;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleGetYearLength(int extendedYear) {
+       return super.handleGetYearLength(extendedYear);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+        if (month < 0 || month > 11) {
+            int[] remainder = new int[1];
+            extendedYear += floorDivide(month, 12, remainder);
+            month = remainder[0];
+        }
+
+        if(isGregorianLeap(extendedYear + INDIAN_ERA_START) && month == 0) {
+            return 31;
+        }
+
+        if(month >= 1 && month <=5) {
+            return 31;
+        }
+
+        return 30;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected void handleComputeFields(int julianDay){
+        double jdAtStartOfGregYear;
+        int leapMonth, IndianYear, yday, IndianMonth, IndianDayOfMonth, mday;
+        int[] gregorianDay;          // Stores gregorian date corresponding to Julian day;
+
+        gregorianDay = jdToGregorian(julianDay);                    // Gregorian date for Julian day
+        IndianYear = gregorianDay[0] - INDIAN_ERA_START;            // Year in Saka era
+        jdAtStartOfGregYear = gregorianToJD(gregorianDay[0], 1, 1); // JD at start of Gregorian year
+        yday = (int)(julianDay - jdAtStartOfGregYear);              // Day number in Gregorian year (starting from 0)
+
+        if (yday < INDIAN_YEAR_START) {
+            //  Day is at the end of the preceding Saka year
+            IndianYear -= 1;
+            leapMonth = isGregorianLeap(gregorianDay[0] - 1) ? 31 : 30; // Days in leapMonth this year, previous Gregorian year
+            yday += leapMonth + (31 * 5) + (30 * 3) + 10;
+        } else {
+            leapMonth = isGregorianLeap(gregorianDay[0]) ? 31 : 30; // Days in leapMonth this year
+            yday -= INDIAN_YEAR_START;
+        }
+
+        if (yday < leapMonth) {
+            IndianMonth = 0;
+            IndianDayOfMonth = yday + 1;
+        } else {
+              mday = yday - leapMonth;
+              if (mday < (31 * 5)) {
+                 IndianMonth = (int)Math.floor(mday / 31) + 1;
+                 IndianDayOfMonth = (mday % 31) + 1;
+              } else {
+                 mday -= 31 * 5;
+                 IndianMonth = (int)Math.floor(mday / 30) + 6;
+                 IndianDayOfMonth = (mday % 30) + 1;
+              }
+        }
+
+        internalSet(ERA, 0);
+        internalSet(EXTENDED_YEAR, IndianYear);
+        internalSet(YEAR, IndianYear);
+        internalSet(MONTH, IndianMonth);
+        internalSet(DAY_OF_MONTH, IndianDayOfMonth );
+        internalSet(DAY_OF_YEAR, yday + 1); // yday is 0-based
+     }
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest     Least    Maximum
+        //           Minimum   Maximum
+        {        0,        0,        0,        0}, // ERA
+        { -5000000, -5000000,  5000000,  5000000}, // YEAR
+        {        0,        0,       11,       11}, // MONTH
+        {        1,        1,       52,       53}, // WEEK_OF_YEAR
+        {/*                                   */}, // WEEK_OF_MONTH
+        {        1,        1,       30,       31}, // DAY_OF_MONTH
+        {        1,        1,      365,      366}, // DAY_OF_YEAR
+        {/*                                   */}, // DAY_OF_WEEK
+        {       -1,       -1,        5,        5}, // DAY_OF_WEEK_IN_MONTH
+        {/*                                   */}, // AM_PM
+        {/*                                   */}, // HOUR
+        {/*                                   */}, // HOUR_OF_DAY
+        {/*                                   */}, // MINUTE
+        {/*                                   */}, // SECOND
+        {/*                                   */}, // MILLISECOND
+        {/*                                   */}, // ZONE_OFFSET
+        {/*                                   */}, // DST_OFFSET
+        { -5000000, -5000000,  5000000,  5000000}, // YEAR_WOY
+        {/*                                   */}, // DOW_LOCAL
+        { -5000000, -5000000,  5000000,  5000000}, // EXTENDED_YEAR
+        {/*                                   */}, // JULIAN_DAY
+        {/*                                   */}, // MILLISECONDS_IN_DAY
+    };
+
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+       return LIMITS[field][limitType];
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected int handleComputeMonthStart(int year, int month, boolean useMonth) {
+
+       //month is 0 based; converting it to 1-based 
+       int imonth;
+       
+       if(month == 12) {
+           imonth = 1;
+       } else {
+           imonth = month +1;  
+       }
+       
+       double jd = IndianToJD(year ,imonth, 1);
+       
+       return (int)jd;
+    }
+
+
+   
+    /*
+     * This routine converts an Indian date to the corresponding Julian date"
+     * @param year   The year in Saka Era according to Indian calendar.
+     * @param month  The month according to Indian calendar (between 1 to 12)
+     * @param date   The date in month 
+     */
+    private static double IndianToJD(int year, int month, int date) {
+       int leapMonth, gyear, m;
+       double start, jd;
+
+       gyear = year + INDIAN_ERA_START;
+
+
+       if(isGregorianLeap(gyear)) {
+          leapMonth = 31;
+          start = gregorianToJD(gyear, 3, 21);
+       } else {
+          leapMonth = 30;
+          start = gregorianToJD(gyear, 3, 22);
+       }
+
+       if (month == 1) {
+          jd = start + (date - 1);
+       } else {
+          jd = start + leapMonth;
+          m = month - 2;
+          m = Math.min(m, 5);
+          jd += m * 31;
+          if (month >= 8) {
+             m = month - 7;
+             jd += m * 30;
+          }
+          jd += date - 1;
+       }
+
+       return jd;
+    }
+    
+    /*
+     * The following function is not needed for basic calendar functioning.
+     * This routine converts a gregorian date to the corresponding Julian date"
+     * @param year   The year in standard Gregorian calendar (AD/BC) .
+     * @param month  The month according to Gregorian calendar (between 0 to 11)
+     * @param date   The date in month 
+     */
+    private static double gregorianToJD(int year, int month, int date) {
+       double JULIAN_EPOCH = 1721425.5;
+       double jd = (JULIAN_EPOCH - 1) +
+          (365 * (year - 1)) +
+          Math.floor((year - 1) / 4) +
+          (-Math.floor((year - 1) / 100)) +
+          Math.floor((year - 1) / 400) +
+          Math.floor((((367 * month) - 362) / 12) +
+                ((month <= 2) ? 0 :
+                 (isGregorianLeap(year) ? -1 : -2)
+                ) +
+                date);
+       
+       return jd;
+    }
+    
+    /*
+     * The following function is not needed for basic calendar functioning.
+     * This routine converts a julian day (jd) to the corresponding date in Gregorian calendar"
+     * @param jd The Julian date in Julian Calendar which is to be converted to Indian date"
+     */
+    private static int[] jdToGregorian(double jd) {
+       double JULIAN_EPOCH = 1721425.5;
+       double wjd, depoch, quadricent, dqc, cent, dcent, quad, dquad, yindex, yearday, leapadj;
+       int year, month, day;
+       
+       wjd = Math.floor(jd - 0.5) + 0.5;
+       depoch = wjd - JULIAN_EPOCH;
+       quadricent = Math.floor(depoch / 146097);
+       dqc = depoch % 146097;
+       cent = Math.floor(dqc / 36524);
+       dcent = dqc % 36524;
+       quad = Math.floor(dcent / 1461);
+       dquad = dcent % 1461;
+       yindex = Math.floor(dquad / 365);
+       year = (int)((quadricent * 400) + (cent * 100) + (quad * 4) + yindex);
+       
+       if (!((cent == 4) || (yindex == 4))) {
+          year++;
+       }
+       
+       yearday = wjd - gregorianToJD(year, 1, 1);
+       leapadj = ((wjd < gregorianToJD(year, 3, 1)) ? 0
+             :
+             (isGregorianLeap(year) ? 1 : 2)
+             );
+       
+       month = (int)Math.floor((((yearday + leapadj) * 12) + 373) / 367);
+       day = (int)(wjd - gregorianToJD(year, month, 1)) + 1;
+
+       int[] julianDate = new int[3];
+       
+       julianDate[0] = year;
+       julianDate[1] = month;
+       julianDate[2] = day;
+       
+       return julianDate;
+    }
+    
+    /*
+     * The following function is not needed for basic calendar functioning.
+     * This routine checks if the Gregorian year is a leap year"
+     * @param year      The year in Gregorian Calendar
+     */
+    private static boolean isGregorianLeap(int year)
+    {
+       return ((year % 4) == 0) &&
+          (!(((year % 100) == 0) && ((year % 400) != 0)));
+    }
+
+    
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "indian";
+    }
+}
diff --git a/src/com/ibm/icu/util/InitialTimeZoneRule.java b/src/com/ibm/icu/util/InitialTimeZoneRule.java
new file mode 100644
index 0000000..f2bf3ed
--- /dev/null
+++ b/src/com/ibm/icu/util/InitialTimeZoneRule.java
@@ -0,0 +1,103 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * <code>InitialTimeZoneRule</code> represents a time zone rule
+ * representing a time zone effective from the beginning and
+ * has no actual start times.
+ * 
+ * @stable ICU 3.8
+ */
+public class InitialTimeZoneRule extends TimeZoneRule {
+
+    private static final long serialVersionUID = 1876594993064051206L;
+
+    /**
+     * Constructs a <code>InitialTimeZoneRule</code> with the name, the GMT offset of its
+     * standard time and the amount of daylight saving offset adjustment.
+     * 
+     * @param name          The time zone name.
+     * @param rawOffset     The UTC offset of its standard time in milliseconds.
+     * @param dstSavings    The amount of daylight saving offset adjustment in milliseconds.
+     *                      If this ia a rule for standard time, the value of this argument is 0.
+     * 
+     * @stable ICU 3.8
+     */
+    public InitialTimeZoneRule(String name, int rawOffset, int dstSavings) {
+        super(name, rawOffset, dstSavings);
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean isEquivalentTo(TimeZoneRule other) {
+        if (other instanceof InitialTimeZoneRule) {
+            return super.isEquivalentTo(other);
+        }
+        return false;
+    }
+    
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns null.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getFinalStart(int prevRawOffset, int prevDSTSavings) {
+        // No start time available
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns null.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getFirstStart(int prevRawOffset, int prevDSTSavings) {
+        // No start time available
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns null.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getNextStart(long base, int prevRawOffset, int prevDSTSavings,
+            boolean inclusive) {
+        // No start time available
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns null.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getPreviousStart(long base, int prevRawOffset,
+            int prevDSTSavings, boolean inclusive) {
+        // No start time available
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>InitialTimeZoneRule</code> always returns false.
+     * @stable ICU 3.8
+     */
+    public boolean isTransitionRule() {
+        return false;
+    }
+}
diff --git a/src/com/ibm/icu/util/IslamicCalendar.java b/src/com/ibm/icu/util/IslamicCalendar.java
new file mode 100644
index 0000000..16d8caf
--- /dev/null
+++ b/src/com/ibm/icu/util/IslamicCalendar.java
@@ -0,0 +1,667 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.impl.CalendarAstronomer;
+import com.ibm.icu.impl.CalendarCache;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>IslamicCalendar</code> is a subclass of <code>Calendar</code>
+ * that that implements the Islamic civil and religious calendars.  It
+ * is used as the civil calendar in most of the Arab world and the
+ * liturgical calendar of the Islamic faith worldwide.  This calendar
+ * is also known as the "Hijri" calendar, since it starts at the time
+ * of Mohammed's emigration (or "hijra") to Medinah on Thursday, 
+ * July 15, 622 AD (Julian).
+ * <p>
+ * The Islamic calendar is strictly lunar, and thus an Islamic year of twelve
+ * lunar months does not correspond to the solar year used by most other
+ * calendar systems, including the Gregorian.  An Islamic year is, on average,
+ * about 354 days long, so each successive Islamic year starts about 11 days
+ * earlier in the corresponding Gregorian year.
+ * <p>
+ * Each month of the calendar starts when the new moon's crescent is visible
+ * at sunset.  However, in order to keep the time fields in this class
+ * synchronized with those of the other calendars and with local clock time,
+ * we treat days and months as beginning at midnight,
+ * roughly 6 hours after the corresponding sunset.
+ * <p>
+ * There are two main variants of the Islamic calendar in existence.  The first
+ * is the <em>civil</em> calendar, which uses a fixed cycle of alternating 29-
+ * and 30-day months, with a leap day added to the last month of 11 out of
+ * every 30 years.  This calendar is easily calculated and thus predictable in
+ * advance, so it is used as the civil calendar in a number of Arab countries.
+ * This is the default behavior of a newly-created <code>IslamicCalendar</code>
+ * object.
+ * <p>
+ * The Islamic <em>religious</em> calendar, however, is based on the <em>observation</em>
+ * of the crescent moon.  It is thus affected by the position at which the
+ * observations are made, seasonal variations in the time of sunset, the
+ * eccentricities of the moon's orbit, and even the weather at the observation
+ * site.  This makes it impossible to calculate in advance, and it causes the
+ * start of a month in the religious calendar to differ from the civil calendar
+ * by up to three days.
+ * <p>
+ * Using astronomical calculations for the position of the sun and moon, the
+ * moon's illumination, and other factors, it is possible to determine the start
+ * of a lunar month with a fairly high degree of certainty.  However, these
+ * calculations are extremely complicated and thus slow, so most algorithms,
+ * including the one used here, are only approximations of the true astronical
+ * calculations.  At present, the approximations used in this class are fairly
+ * simplistic; they will be improved in later versions of the code.
+ * <p>
+ * The {@link #setCivil setCivil} method determines
+ * which approach is used to determine the start of a month.  By default, the
+ * fixed-cycle civil calendar is used.  However, if <code>setCivil(false)</code>
+ * is called, an approximation of the true lunar calendar will be used.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * IslamicCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=islamic"</code> or <code>"@calendar=islamic-civil"</code>.</p>
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ * @see com.ibm.icu.util.Calendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class IslamicCalendar extends Calendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -6253365474073869325L;
+
+    //-------------------------------------------------------------------------
+    // Constants...
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Constant for Muharram, the 1st month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int MUHARRAM = 0;
+
+    /**
+     * Constant for Safar, the 2nd month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SAFAR = 1;
+
+    /**
+     * Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int RABI_1 = 2;
+
+    /**
+     * Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int RABI_2 = 3;
+
+    /**
+     * Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int JUMADA_1 = 4;
+
+    /**
+     * Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int JUMADA_2 = 5;
+
+    /**
+     * Constant for Rajab, the 7th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int RAJAB = 6;
+
+    /**
+     * Constant for Sha'ban, the 8th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SHABAN = 7;
+
+    /**
+     * Constant for Ramadan, the 9th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int RAMADAN = 8;
+
+    /**
+     * Constant for Shawwal, the 10th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int SHAWWAL = 9;
+
+    /**
+     * Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int DHU_AL_QIDAH = 10;
+
+    /**
+     * Constant for Dhu al-Hijjah, the 12th month of the Islamic year. 
+     * @stable ICU 2.8 
+     */
+    public static final int DHU_AL_HIJJAH = 11;
+
+
+    private static final long HIJRA_MILLIS = -42521587200000L;    // 7/16/622 AD 00:00
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>IslamicCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar()
+    {
+        this(TimeZone.getDefault(), ULocale.getDefault());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(TimeZone zone)
+    {
+        this(zone, ULocale.getDefault());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(Locale aLocale)
+    {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public IslamicCalendar(ULocale locale)
+    {
+        this(TimeZone.getDefault(), locale);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(TimeZone zone, Locale aLocale)
+    {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public IslamicCalendar(TimeZone zone, ULocale locale)
+    {
+        super(zone, locale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(Date date) {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for Muharram.
+     * @param date the value used to set the {@link #DATE DATE} time field in the calendar.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(int year, int month, int date)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(Calendar.YEAR, year);
+        this.set(Calendar.MONTH, month);
+        this.set(Calendar.DATE, date);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year  the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for Muharram.
+     * @param date  the value used to set the {@link #DATE DATE} time field in the calendar.
+     * @param hour  the value used to set the {@link #HOUR_OF_DAY HOUR_OF_DAY} time field
+     *              in the calendar.
+     * @param minute the value used to set the {@link #MINUTE MINUTE} time field
+     *              in the calendar.
+     * @param second the value used to set the {@link #SECOND SECOND} time field
+     *              in the calendar.
+     * @stable ICU 2.8
+     */
+    public IslamicCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), ULocale.getDefault());
+        this.set(Calendar.YEAR, year);
+        this.set(Calendar.MONTH, month);
+        this.set(Calendar.DATE, date);
+        this.set(Calendar.HOUR_OF_DAY, hour);
+        this.set(Calendar.MINUTE, minute);
+        this.set(Calendar.SECOND, second);
+    }
+
+    /**
+     * Determines whether this object uses the fixed-cycle Islamic civil calendar
+     * or an approximation of the religious, astronomical calendar.
+     *
+     * @param beCivil   <code>true</code> to use the civil calendar,
+     *                  <code>false</code> to use the astronomical calendar.
+     * @stable ICU 2.8
+     */
+    public void setCivil(boolean beCivil)
+    {
+        if (civil != beCivil) {
+            // The fields of the calendar will become invalid, because the calendar
+            // rules are different
+            long m = getTimeInMillis();
+            civil = beCivil;
+            clear();
+            setTimeInMillis(m);
+        }
+    }
+    
+    /**
+     * Returns <code>true</code> if this object is using the fixed-cycle civil
+     * calendar, or <code>false</code> if using the religious, astronomical
+     * calendar.
+     * @stable ICU 2.8
+     */
+    public boolean isCivil() {
+        return civil;
+    }
+    
+    //-------------------------------------------------------------------------
+    // Minimum / Maximum access functions
+    //-------------------------------------------------------------------------
+
+    // Note: Current IslamicCalendar implementation does not work
+    // well with negative years.
+
+    private static final int LIMITS[][] = {
+        // Minimum  Greatest     Least   Maximum
+        //           Minimum   Maximum
+        {        0,        0,        0,        0}, // ERA
+        {        1,        1,  5000000,  5000000}, // YEAR
+        {        0,        0,       11,       11}, // MONTH
+        {        1,        1,       50,       51}, // WEEK_OF_YEAR
+        {/*                                   */}, // WEEK_OF_MONTH
+        {        1,        1,       29,       30}, // DAY_OF_MONTH
+        {        1,        1,      354,      355}, // DAY_OF_YEAR
+        {/*                                   */}, // DAY_OF_WEEK
+        {       -1,       -1,        5,        5}, // DAY_OF_WEEK_IN_MONTH
+        {/*                                   */}, // AM_PM
+        {/*                                   */}, // HOUR
+        {/*                                   */}, // HOUR_OF_DAY
+        {/*                                   */}, // MINUTE
+        {/*                                   */}, // SECOND
+        {/*                                   */}, // MILLISECOND
+        {/*                                   */}, // ZONE_OFFSET
+        {/*                                   */}, // DST_OFFSET
+        {        1,        1,  5000000,  5000000}, // YEAR_WOY
+        {/*                                   */}, // DOW_LOCAL
+        {        1,        1,  5000000,  5000000}, // EXTENDED_YEAR
+        {/*                                   */}, // JULIAN_DAY
+        {/*                                   */}, // MILLISECONDS_IN_DAY
+    };
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        return LIMITS[field][limitType];
+    }
+
+    //-------------------------------------------------------------------------
+    // Assorted calculation utilities
+    //
+
+// Unused code - Alan 2003-05
+//    /**
+//     * Find the day of the week for a given day
+//     *
+//     * @param day   The # of days since the start of the Islamic calendar.
+//     */
+//    // private and uncalled, perhaps not used yet?
+//    private static final int absoluteDayToDayOfWeek(long day)
+//    {
+//        // Calculate the day of the week.
+//        // This relies on the fact that the epoch was a Thursday.
+//        int dayOfWeek = (int)(day + THURSDAY) % 7 + SUNDAY;
+//        if (dayOfWeek < 0) {
+//            dayOfWeek += 7;
+//        }
+//        return dayOfWeek;
+//    }
+
+    /**
+     * Determine whether a year is a leap year in the Islamic civil calendar
+     */
+    private final static boolean civilLeapYear(int year)
+    {
+        return (14 + 11 * year) % 30 < 11;
+        
+    }
+    
+    /**
+     * Return the day # on which the given year starts.  Days are counted
+     * from the Hijri epoch, origin 0.
+     */
+    private long yearStart(int year) {
+        if (civil) {
+            return (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+        } else {
+            return trueMonthStart(12*(year-1));
+        }
+    }
+    
+    /**
+     * Return the day # on which the given month starts.  Days are counted
+     * from the Hijri epoch, origin 0.
+     *
+     * @param year  The hijri year
+     * @param month  The hijri month, 0-based
+     */
+    private long monthStart(int year, int month) {
+        if (civil) {
+            return (long)Math.ceil(29.5*month)
+                    + (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+        } else {
+            return trueMonthStart(12*(year-1) + month);
+        }
+    }
+    
+    /**
+     * Find the day number on which a particular month of the true/lunar
+     * Islamic calendar starts.
+     *
+     * @param month The month in question, origin 0 from the Hijri epoch
+     *
+     * @return The day number on which the given month starts.
+     */
+    private static final long trueMonthStart(long month)
+    {
+        long start = cache.get(month);
+
+        if (start == CalendarCache.EMPTY)
+        {
+            // Make a guess at when the month started, using the average length
+            long origin = HIJRA_MILLIS 
+                        + (long)Math.floor(month * CalendarAstronomer.SYNODIC_MONTH - 1) * ONE_DAY;
+
+            double age = moonAge(origin);
+
+            if (moonAge(origin) >= 0) {
+                // The month has already started
+                do {
+                    origin -= ONE_DAY;
+                    age = moonAge(origin);
+                } while (age >= 0);
+            }
+            else {
+                // Preceding month has not ended yet.
+                do {
+                    origin += ONE_DAY;
+                    age = moonAge(origin);
+                } while (age < 0);
+            }
+
+            start = (origin - HIJRA_MILLIS) / ONE_DAY + 1;
+            
+            cache.put(month, start);
+        }
+        return start;
+    }
+
+    /**
+     * Return the "age" of the moon at the given time; this is the difference
+     * in ecliptic latitude between the moon and the sun.  This method simply
+     * calls CalendarAstronomer.moonAge, converts to degrees, 
+     * and adjusts the resultto be in the range [-180, 180].
+     *
+     * @param time  The time at which the moon's age is desired,
+     *              in millis since 1/1/1970.
+     */
+    static final double moonAge(long time)
+    {
+        double age = 0;
+        
+        synchronized(astro) {
+            astro.setTime(time);
+            age = astro.getMoonAge();
+        }
+        // Convert to degrees and normalize...
+        age = age * 180 / Math.PI;
+        if (age > 180) {
+            age = age - 360;
+        }
+
+        return age;
+    }
+
+    //-------------------------------------------------------------------------
+    // Internal data....
+    //
+    
+    // And an Astronomer object for the moon age calculations
+    private static CalendarAstronomer astro = new CalendarAstronomer();
+    
+    private static CalendarCache cache = new CalendarCache();
+    
+    /**
+     * <code>true</code> if this object uses the fixed-cycle Islamic civil calendar,
+     * and <code>false</code> if it approximates the true religious calendar using
+     * astronomical calculations for the time of the new moon.
+     *
+     * @serial
+     */
+    private boolean civil = true;
+
+    //----------------------------------------------------------------------
+    // Calendar framework
+    //----------------------------------------------------------------------
+
+    /**
+     * Return the length (in days) of the given month.
+     *
+     * @param extendedYear  The hijri year
+     * @param month The hijri month, 0-based
+     * @stable ICU 2.8
+     */
+    protected int handleGetMonthLength(int extendedYear, int month) {
+
+        int length = 0;
+        
+        if (civil) {
+            length = 29 + (month+1) % 2;
+            if (month == DHU_AL_HIJJAH && civilLeapYear(extendedYear)) {
+                length++;
+            }
+        } else {
+            month = 12*(extendedYear-1) + month;
+            length = (int)( trueMonthStart(month+1) - trueMonthStart(month) );
+        }
+        return length;
+    }
+
+    /**
+     * Return the number of days in the given Islamic year
+     * @stable ICU 2.8
+     */
+    protected int handleGetYearLength(int extendedYear) {
+        if (civil) {
+            return 354 + (civilLeapYear(extendedYear) ? 1 : 0);
+        } else {
+            int month = 12*(extendedYear-1);
+            return (int)(trueMonthStart(month + 12) - trueMonthStart(month));
+        }
+    }
+    
+    //-------------------------------------------------------------------------
+    // Functions for converting from field values to milliseconds....
+    //-------------------------------------------------------------------------
+
+    // Return JD of start of given month/year
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleComputeMonthStart(int eyear, int month, boolean useMonth) {
+        return (int) monthStart(eyear, month) + 1948439;
+    }    
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from milliseconds to field values
+    //-------------------------------------------------------------------------
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetExtendedYear() {
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, 1); // Default to year 1
+        } else {
+            year = internalGet(YEAR, 1); // Default to year 1
+        }
+        return year;
+    }
+
+    /**
+     * Override Calendar to compute several fields specific to the Islamic
+     * calendar system.  These are:
+     *
+     * <ul><li>ERA
+     * <li>YEAR
+     * <li>MONTH
+     * <li>DAY_OF_MONTH
+     * <li>DAY_OF_YEAR
+     * <li>EXTENDED_YEAR</ul>
+     * 
+     * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
+     * method is called. The getGregorianXxx() methods return Gregorian
+     * calendar equivalents for the given Julian day.
+     * @stable ICU 2.8
+     */
+    protected void handleComputeFields(int julianDay) {
+        int year, month, dayOfMonth, dayOfYear;
+        long monthStart;
+        long days = julianDay - 1948440;
+
+        if (civil) {
+            // Use the civil calendar approximation, which is just arithmetic
+            year  = (int)Math.floor( (30 * days + 10646) / 10631.0 );
+            month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
+            month = Math.min(month, 11);
+            monthStart = monthStart(year, month);
+        } else {
+            // Guess at the number of elapsed full months since the epoch
+            int months = (int)Math.floor(days / CalendarAstronomer.SYNODIC_MONTH);
+
+            monthStart = (long)Math.floor(months * CalendarAstronomer.SYNODIC_MONTH - 1);
+
+            if ( days - monthStart >= 28 && moonAge(internalGetTimeInMillis()) > 0) {
+                // If we're near the end of the month, assume next month and search backwards
+                months++;
+            }
+
+            // Find out the last time that the new moon was actually visible at this longitude
+            // This returns midnight the night that the moon was visible at sunset.
+            while ((monthStart = trueMonthStart(months)) > days) {
+                // If it was after the date in question, back up a month and try again
+                months--;
+            }
+
+            year = months / 12 + 1;
+            month = months % 12;
+        }
+
+        dayOfMonth = (int)(days - monthStart(year, month)) + 1;
+
+        // Now figure out the day of the year.
+        dayOfYear = (int)(days - monthStart(year, 0) + 1);
+
+        internalSet(ERA, 0);
+        internalSet(YEAR, year);
+        internalSet(EXTENDED_YEAR, year);
+        internalSet(MONTH, month);
+        internalSet(DAY_OF_MONTH, dayOfMonth);
+        internalSet(DAY_OF_YEAR, dayOfYear);       
+    }    
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "islamic";
+    }
+
+    /*
+    private static CalendarFactory factory;
+    public static CalendarFactory factory() {
+        if (factory == null) {
+            factory = new CalendarFactory() {
+                public Calendar create(TimeZone tz, ULocale loc) {
+                    return new IslamicCalendar(tz, loc);
+                }
+
+                public String factoryName() {
+                    return "Islamic";
+                }
+            };
+        }
+        return factory;
+    }
+    */
+}
diff --git a/src/com/ibm/icu/util/JapaneseCalendar.java b/src/com/ibm/icu/util/JapaneseCalendar.java
new file mode 100644
index 0000000..5c8baef
--- /dev/null
+++ b/src/com/ibm/icu/util/JapaneseCalendar.java
@@ -0,0 +1,664 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * <code>JapaneseCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years and eras based on the reigns of the Japanese emperors.
+ * The Japanese calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  The ascension of each  emperor to the throne
+ * begins a new era, and the years of that era are numbered starting with the
+ * year of ascension as year 1.
+ * <p>
+ * Note that in the year of an imperial ascension, there are two possible sets
+ * of year and era values: that for the old era and for the new.  For example, a
+ * new era began on January 7, 1989 AD.  Strictly speaking, the first six days
+ * of that year were in the Showa era, e.g. "January 6, 64 Showa", while the rest
+ * of the year was in the Heisei era, e.g. "January 7, 1 Heisei".  This class
+ * handles this distinction correctly when computing dates.  However, in lenient
+ * mode either form of date is acceptable as input. 
+ * <p>
+ * In modern times, eras have started on January 8, 1868 AD, Gregorian (Meiji),
+ * July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei).  Constants
+ * for these eras, suitable for use in the <code>ERA</code> field, are provided
+ * in this class.  Note that the <em>number</em> used for each era is more or
+ * less arbitrary.  Currently, the era starting in 1053 AD is era #0; however this
+ * may change in the future as we add more historical data.  Use the predefined
+ * constants rather than using actual, absolute numbers.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * JapaneseCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=japanese"</code>.</p>
+ *
+ * @see com.ibm.icu.util.GregorianCalendar
+ * @see com.ibm.icu.util.Calendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @stable ICU 2.8
+ */
+public class JapaneseCalendar extends GregorianCalendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = -2977189902603704691L;
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>JapaneseCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public JapaneseCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.2
+     */
+    public JapaneseCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(Date date) {
+        this();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param era       The imperial era used to set the calendar's {@link #ERA ERA} field.
+     *                  Eras are numbered starting with the Tenki era, which
+     *                  began in 1053 AD Gregorian, as era zero.  Recent
+     *                  eras can be specified using the constants
+     *                  {@link #MEIJI} (which started in 1868 AD),
+     *                  {@link #TAISHO} (1912 AD),
+     *                  {@link #SHOWA} (1926 AD), and
+     *                  {@link #HEISEI} (1989 AD).
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
+     *                  in terms of the era.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's DATE field.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(int era, int year, int month, int date) {
+        super(year, month, date);
+        set(ERA, era);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
+     *                  in the era Heisei, the most current at the time this
+     *                  class was last updated.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} field.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(int year, int month, int date) {
+        super(year, month, date);
+        set(ERA, CURRENT_ERA);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field,
+     *                  in the era Heisei, the most current at the time of this
+     *                  writing.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 2.8
+     */
+    public JapaneseCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+        set(ERA, CURRENT_ERA);
+    }
+
+    //-------------------------------------------------------------------------
+
+    // Use 1970 as the default value of EXTENDED_YEAR
+    private static final int GREGORIAN_EPOCH = 1970;
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected int handleGetExtendedYear() {
+        // EXTENDED_YEAR in JapaneseCalendar is a Gregorian year
+        // The default value of EXTENDED_YEAR is 1970 (Showa 45)
+        int year;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR &&
+            newerField(EXTENDED_YEAR, ERA) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, GREGORIAN_EPOCH);
+        } else {
+            // extended year is a gregorian year, where 1 = 1AD,  0 = 1BC, -1 = 2BC, etc 
+            year = internalGet(YEAR, 1)                       // pin to minimum of year 1 (first year)
+                    + ERAS[internalGet(ERA, CURRENT_ERA) * 3] // add gregorian starting year
+                    - 1;                                      // Subtract one because year starts at 1
+        }
+        return year;
+    }
+    
+    /**
+     * Called by handleComputeJulianDay.  Returns the default month (0-based) for the year,
+     * taking year and era into account.  Defaults to 0 (JANUARY) for Gregorian.
+     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
+     * @return the default month
+     * @provisional ICU 3.6
+     * @draft ICU 3.6
+     * @see #MONTH
+     */
+    protected int getDefaultMonthInYear(int extendedYear)
+    {
+      int era = internalGet(ERA, CURRENT_ERA);
+      //computeFields(status); // No need to compute fields here - expect the caller already did so.
+
+      // Find out if we are at the edge of an era
+      if(extendedYear == ERAS[era*3]) {
+        return ERAS[(era*3)+1] // month..
+            -1; // return 0-based month
+      } else {
+        return super.getDefaultMonthInYear(extendedYear);
+      }
+    }
+
+    /**
+     * Called by handleComputeJulianDay.  Returns the default day (1-based) for the month,
+     * taking currently-set year and era into account.  Defaults to 1 for Gregorian.
+     * @param extendedYear the extendedYear, as returned by handleGetExtendedYear
+     * @param month the month, as returned by getDefaultMonthInYear
+     * @return the default day of the month
+     * @draft ICU 3.6
+     * @provisional ICU 3.6
+     * @see #DAY_OF_MONTH
+     */
+    protected int getDefaultDayInMonth(int extendedYear, int month) {
+      int era = internalGet(ERA, CURRENT_ERA);
+          
+      if(extendedYear == ERAS[era*3]) { // if it is year 1..
+        if(month == ((ERAS[(era*3)+1])-1)) { // if it is the emperor's first month.. 
+          return ERAS[(era*3)+2]; // return the D_O_M of acession
+        }
+      }
+
+      return super.getDefaultDayInMonth(extendedYear, month);
+    }
+
+    /**
+     * @stable ICU 2.8
+     */
+    protected void handleComputeFields(int julianDay) {
+        super.handleComputeFields(julianDay);
+        int year = internalGet(EXTENDED_YEAR);
+
+        int low = 0;
+
+        // Short circuit for recent years.  Most modern computations will
+        // occur in the current era and won't require the binary search.
+        // Note that if the year is == the current era year, then we use
+        // the binary search to handle the month/dom comparison.
+        if (year > ERAS[ERAS.length - 3]) {
+            low = CURRENT_ERA;
+        } else {
+            // Binary search
+            int high = ERAS.length / 3;
+        
+            while (low < high - 1) {
+                int i = (low + high) / 2;
+                int diff = year - ERAS[i*3];
+
+                // If years are the same, then compare the months, and if those
+                // are the same, compare days of month.  In the ERAS array
+                // months are 1-based for easier maintenance.
+                if (diff == 0) {
+                    diff = internalGet(MONTH) - (ERAS[i*3 + 1] - 1);
+                    if (diff == 0) {
+                        diff = internalGet(DAY_OF_MONTH) - ERAS[i*3 + 2];
+                    }
+                }
+                if (diff >= 0) {
+                    low = i;
+                } else {
+                    high = i;
+                }
+            }
+        }
+
+        // Now we've found the last era that starts before this date, so
+        // adjust the year to count from the start of that era.  Note that
+        // all dates before the first era will fall into the first era by
+        // the algorithm.
+        internalSet(ERA, low);
+        internalSet(YEAR, year - ERAS[low*3] + 1);
+    }
+
+    private static final int[] ERAS = {
+    //  Gregorian date of each emperor's ascension
+    //  Years are AD, months are 1-based.
+    //  Year  Month Day
+         645,    6, 19,     // Taika
+         650,    2, 15,     // Hakuchi
+         672,    1,  1,     // Hakuho
+         686,    7, 20,     // Shucho
+         701,    3, 21,     // Taiho
+         704,    5, 10,     // Keiun
+         708,    1, 11,     // Wado
+         715,    9,  2,     // Reiki
+         717,   11, 17,     // Yoro
+         724,    2,  4,     // Jinki
+         729,    8,  5,     // Tempyo
+         749,    4, 14,     // Tempyo-kampo
+         749,    7,  2,     // Tempyo-shoho
+         757,    8, 18,     // Tempyo-hoji
+         765,    1,  7,     // Tempho-jingo
+         767,    8, 16,     // Jingo-keiun
+         770,   10,  1,     // Hoki
+         781,    1,  1,     // Ten-o
+         782,    8, 19,     // Enryaku
+         806,    5, 18,     // Daido
+         810,    9, 19,     // Konin
+         824,    1,  5,     // Tencho
+         834,    1,  3,     // Showa
+         848,    6, 13,     // Kajo
+         851,    4, 28,     // Ninju
+         854,   11, 30,     // Saiko
+         857,    2, 21,     // Tennan
+         859,    4, 15,     // Jogan
+         877,    4, 16,     // Genkei
+         885,    2, 21,     // Ninna
+         889,    4, 27,     // Kampyo
+         898,    4, 26,     // Shotai
+         901,    7, 15,     // Engi
+         923,    4, 11,     // Encho
+         931,    4, 26,     // Shohei
+         938,    5, 22,     // Tengyo
+         947,    4, 22,     // Tenryaku
+         957,   10, 27,     // Tentoku
+         961,    2, 16,     // Owa
+         964,    7, 10,     // Koho
+         968,    8, 13,     // Anna
+         970,    3, 25,     // Tenroku
+         973,   12, 20,     // Ten-en
+         976,    7, 13,     // Jogen
+         978,   11, 29,     // Tengen
+         983,    4, 15,     // Eikan
+         985,    4, 27,     // Kanna
+         987,    4,  5,     // Ei-en
+         989,    8,  8,     // Eiso
+         990,   11,  7,     // Shoryaku
+         995,    2, 22,     // Chotoku
+         999,    1, 13,     // Choho
+        1004,    7, 20,     // Kanko
+        1012,   12, 25,     // Chowa
+        1017,    4, 23,     // Kannin
+        1021,    2,  2,     // Jian
+        1024,    7, 13,     // Manju
+        1028,    7, 25,     // Chogen
+        1037,    4, 21,     // Choryaku
+        1040,   11, 10,     // Chokyu
+        1044,   11, 24,     // Kantoku
+        1046,    4, 14,     // Eisho
+        1053,    1, 11,     // Tengi
+        1058,    8, 29,     // Kohei
+        1065,    8,  2,     // Jiryaku
+        1069,    4, 13,     // Enkyu
+        1074,    8, 23,     // Shoho
+        1077,   11, 17,     // Shoryaku
+        1081,    2, 10,     // Eiho
+        1084,    2,  7,     // Otoku
+        1087,    4,  7,     // Kanji
+        1094,   12, 15,     // Kaho
+        1096,   12, 17,     // Eicho
+        1097,   11, 21,     // Shotoku
+        1099,    8, 28,     // Kowa
+        1104,    2, 10,     // Choji
+        1106,    4,  9,     // Kasho
+        1108,    8,  3,     // Tennin
+        1110,    7, 13,     // Ten-ei
+        1113,    7, 13,     // Eikyu
+        1118,    4,  3,     // Gen-ei
+        1120,    4, 10,     // Hoan
+        1124,    4,  3,     // Tenji
+        1126,    1, 22,     // Daiji
+        1131,    1, 29,     // Tensho
+        1132,    8, 11,     // Chosho
+        1135,    4, 27,     // Hoen
+        1141,    7, 10,     // Eiji
+        1142,    4, 28,     // Koji
+        1144,    2, 23,     // Tenyo
+        1145,    7, 22,     // Kyuan
+        1151,    1, 26,     // Ninpei
+        1154,   10, 28,     // Kyuju
+        1156,    4, 27,     // Hogen
+        1159,    4, 20,     // Heiji
+        1160,    1, 10,     // Eiryaku
+        1161,    9,  4,     // Oho
+        1163,    3, 29,     // Chokan
+        1165,    6,  5,     // Eiman
+        1166,    8, 27,     // Nin-an
+        1169,    4,  8,     // Kao
+        1171,    4, 21,     // Shoan
+        1175,    7, 28,     // Angen
+        1177,    8,  4,     // Jisho
+        1181,    7, 14,     // Yowa
+        1182,    5, 27,     // Juei
+        1184,    4, 16,     // Genryuku
+        1185,    8, 14,     // Bunji
+        1190,    4, 11,     // Kenkyu
+        1199,    4, 27,     // Shoji
+        1201,    2, 13,     // Kennin
+        1204,    2, 20,     // Genkyu
+        1206,    4, 27,     // Ken-ei
+        1207,   10, 25,     // Shogen
+        1211,    3,  9,     // Kenryaku
+        1213,   12,  6,     // Kenpo
+        1219,    4, 12,     // Shokyu
+        1222,    4, 13,     // Joo
+        1224,   11, 20,     // Gennin
+        1225,    4, 20,     // Karoku
+        1227,   12, 10,     // Antei
+        1229,    3,  5,     // Kanki
+        1232,    4,  2,     // Joei
+        1233,    4, 15,     // Tempuku
+        1234,   11,  5,     // Bunryaku
+        1235,    9, 19,     // Katei
+        1238,   11, 23,     // Ryakunin
+        1239,    2,  7,     // En-o
+        1240,    7, 16,     // Ninji
+        1243,    2, 26,     // Kangen
+        1247,    2, 28,     // Hoji
+        1249,    3, 18,     // Kencho
+        1256,   10,  5,     // Kogen
+        1257,    3, 14,     // Shoka
+        1259,    3, 26,     // Shogen
+        1260,    4, 13,     // Bun-o
+        1261,    2, 20,     // Kocho
+        1264,    2, 28,     // Bun-ei
+        1275,    4, 25,     // Kenji
+        1278,    2, 29,     // Koan
+        1288,    4, 28,     // Shoo
+        1293,    8, 55,     // Einin
+        1299,    4, 25,     // Shoan
+        1302,   11, 21,     // Kengen
+        1303,    8,  5,     // Kagen
+        1306,   12, 14,     // Tokuji
+        1308,   10,  9,     // Enkei
+        1311,    4, 28,     // Ocho
+        1312,    3, 20,     // Showa
+        1317,    2,  3,     // Bunpo
+        1319,    4, 28,     // Geno
+        1321,    2, 23,     // Genkyo
+        1324,   12,  9,     // Shochu
+        1326,    4, 26,     // Kareki
+        1329,    8, 29,     // Gentoku
+        1331,    8,  9,     // Genko
+        1334,    1, 29,     // Kemmu
+        1336,    2, 29,     // Engen
+        1340,    4, 28,     // Kokoku
+        1346,   12,  8,     // Shohei
+        1370,    7, 24,     // Kentoku
+        1372,    4,  1,     // Bunch\u0169
+        1375,    5, 27,     // Tenju
+        1379,    3, 22,     // Koryaku
+        1381,    2, 10,     // Kowa
+        1384,    4, 28,     // Gench\u0169
+        1384,    2, 27,     // Meitoku
+        1387,    8, 23,     // Kakei
+        1389,    2,  9,     // Koo
+        1390,    3, 26,     // Meitoku
+        1394,    7,  5,     // Oei
+        1428,    4, 27,     // Shocho
+        1429,    9,  5,     // Eikyo
+        1441,    2, 17,     // Kakitsu
+        1444,    2,  5,     // Bun-an
+        1449,    7, 28,     // Hotoku
+        1452,    7, 25,     // Kyotoku
+        1455,    7, 25,     // Kosho
+        1457,    9, 28,     // Choroku
+        1460,   12, 21,     // Kansho
+        1466,    2, 28,     // Bunsho
+        1467,    3,  3,     // Onin
+        1469,    4, 28,     // Bunmei
+        1487,    7, 29,     // Chokyo
+        1489,    8, 21,     // Entoku
+        1492,    7, 19,     // Meio
+        1501,    2, 29,     // Bunki
+        1504,    2, 30,     // Eisho
+        1521,    8, 23,     // Taiei
+        1528,    8, 20,     // Kyoroku
+        1532,    7, 29,     // Tenmon
+        1555,   10, 23,     // Koji
+        1558,    2, 28,     // Eiroku
+        1570,    4, 23,     // Genki
+        1573,    7, 28,     // Tensho
+        1592,   12,  8,     // Bunroku
+        1596,   10, 27,     // Keicho
+        1615,    7, 13,     // Genwa
+        1624,    2, 30,     // Kan-ei
+        1644,   12, 16,     // Shoho
+        1648,    2, 15,     // Keian
+        1652,    9, 18,     // Shoo
+        1655,    4, 13,     // Meiryaku
+        1658,    7, 23,     // Manji
+        1661,    4, 25,     // Kanbun
+        1673,    9, 21,     // Enpo
+        1681,    9, 29,     // Tenwa
+        1684,    2, 21,     // Jokyo
+        1688,    9, 30,     // Genroku
+        1704,    3, 13,     // Hoei
+        1711,    4, 25,     // Shotoku
+        1716,    6, 22,     // Kyoho
+        1736,    4, 28,     // Genbun
+        1741,    2, 27,     // Kanpo
+        1744,    2, 21,     // Enkyo
+        1748,    7, 12,     // Kan-en
+        1751,   10, 27,     // Horyaku
+        1764,    6,  2,     // Meiwa
+        1772,   11, 16,     // An-ei
+        1781,    4,  2,     // Tenmei
+        1789,    1, 25,     // Kansei
+        1801,    2,  5,     // Kyowa
+        1804,    2, 11,     // Bunka
+        1818,    4, 22,     // Bunsei
+        1830,   12, 10,     // Tenpo
+        1844,   12,  2,     // Koka
+        1848,    2, 28,     // Kaei
+        1854,   11, 27,     // Ansei
+        1860,    3, 18,     // Man-en
+        1861,    2, 19,     // Bunkyu
+        1864,    2, 20,     // Genji
+        1865,    4,  7,     // Keio
+        1868,    9,  8,     // Meiji
+        1912,    7, 30,     // Taisho
+        1926,   12, 25,     // Showa
+        1989,    1,  8,     // Heisei
+    };
+
+    //-------------------------------------------------------------------------
+    // Public constants for some of the recent eras that folks might use...
+    //-------------------------------------------------------------------------
+
+    // Constant for the current era.  This must be regularly updated.
+    /**
+     * @stable ICU 2.8
+     */
+    static public final int CURRENT_ERA = (ERAS.length / 3) - 1;
+    
+    /** 
+     * Constant for the era starting on Sept. 8, 1868 AD.
+     * @stable  ICU 2.8 
+     */
+    static public final int MEIJI = CURRENT_ERA - 3;
+
+    /** 
+     * Constant for the era starting on July 30, 1912 AD. 
+     * @stable ICU 2.8 
+     */
+    static public final int TAISHO = CURRENT_ERA - 2;
+    
+    /** 
+     * Constant for the era starting on Dec. 25, 1926 AD. 
+     * @stable ICU 2.8 
+     */
+    static public final int SHOWA = CURRENT_ERA - 1;
+
+    /** 
+     * Constant for the era starting on Jan. 7, 1989 AD. 
+     * @stable ICU 2.8 
+     */
+    static public final int HEISEI = CURRENT_ERA;
+
+    /**
+     * Override GregorianCalendar.  We should really handle YEAR_WOY and
+     * EXTENDED_YEAR here too to implement the 1..5000000 range, but it's
+     * not critical.
+     * @stable ICU 2.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        switch (field) {
+        case ERA:
+            if (limitType == MINIMUM || limitType == GREATEST_MINIMUM) {
+                return 1;
+            }
+            return CURRENT_ERA;
+        case YEAR:
+        {
+            switch (limitType) {
+            case MINIMUM:
+            case GREATEST_MINIMUM:
+                return 1;
+            case LEAST_MAXIMUM:
+                return 1;
+            case MAXIMUM:
+                return super.handleGetLimit(field, MAXIMUM) - ERAS[CURRENT_ERA*3];
+            }
+        }
+        default:
+            return super.handleGetLimit(field, limitType);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "japanese";
+    }
+
+    /**
+     * {@inheritDoc}
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getActualMaximum(int field) {
+        if (field == YEAR) {
+            int era = get(Calendar.ERA);
+            if (era == CURRENT_ERA) {
+                // TODO: Investigate what value should be used here - revisit after 4.0.
+                return handleGetLimit(YEAR, MAXIMUM);
+            } else {
+                int nextEraYear = ERAS[(era+1)*3];
+                int nextEraMonth = ERAS[(era+1)*3 + 1];
+                int nextEraDate = ERAS[(era+1)*3 + 2];
+
+                int maxYear = nextEraYear - ERAS[era*3] + 1; // 1-base
+                if (nextEraMonth == 1 && nextEraDate == 1) {
+                    // Substract 1, because the next era starts at Jan 1
+                    maxYear--;
+                }
+                return maxYear;
+            }
+        }
+        return super.getActualMaximum(field);
+    }
+}
diff --git a/src/com/ibm/icu/util/LocaleData.java b/src/com/ibm/icu/util/LocaleData.java
new file mode 100644
index 0000000..4566362
--- /dev/null
+++ b/src/com/ibm/icu/util/LocaleData.java
@@ -0,0 +1,303 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2007, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.util;
+
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * A class for accessing miscelleneous data in the locale bundles
+ * @author ram
+ * @stable ICU 2.8
+ */
+public final class LocaleData {
+    
+    private static final String EXEMPLAR_CHARS      = "ExemplarCharacters";
+    private static final String MEASUREMENT_SYSTEM  = "MeasurementSystem";
+    private static final String PAPER_SIZE          = "PaperSize";
+    private boolean noSubstitute;
+    private ICUResourceBundle bundle;
+
+    /**
+     * EXType for {@link #getExemplarSet(int, int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ES_STANDARD = 0;
+
+    /**
+     * EXType for {@link #getExemplarSet(int, int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ES_AUXILIARY = 1;
+
+    /**
+     * Count of EXTypes for {@link #getExemplarSet(int, int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ES_COUNT = 2;
+    
+    /**
+     * Delimiter type for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int QUOTATION_START = 0;
+
+    /**
+     * Delimiter type for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int QUOTATION_END = 1;
+
+    /**
+     * Delimiter type for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ALT_QUOTATION_START = 2;
+
+    /**
+     * Delimiter type for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int ALT_QUOTATION_END = 3;
+
+    /**
+     * Count of delimiter types for {@link #getDelimiter(int)}.
+     * @stable ICU 3.4
+     */
+    public static final int DELIMITER_COUNT = 4;
+
+    // private constructor to prevent default construction
+    ///CLOVER:OFF
+    private LocaleData(){}
+    ///CLOVER:ON
+
+    /**
+     * Returns the set of exemplar characters for a locale.
+     *
+     * @param locale    Locale for which the exemplar character set
+     *                  is to be retrieved.
+     * @param options   Bitmask for options to apply to the exemplar pattern.
+     *                  Specify zero to retrieve the exemplar set as it is
+     *                  defined in the locale data.  Specify
+     *                  UnicodeSet.CASE to retrieve a case-folded exemplar
+     *                  set.  See {@link UnicodeSet#applyPattern(String,
+     *                  int)} for a complete list of valid options.  The
+     *                  IGNORE_SPACE bit is always set, regardless of the
+     *                  value of 'options'.
+     * @return          The set of exemplar characters for the given locale.
+     * @stable ICU 3.0
+     */
+    public static UnicodeSet getExemplarSet(ULocale locale, int options) {
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        String pattern = bundle.getString(EXEMPLAR_CHARS);
+        return new UnicodeSet(pattern, UnicodeSet.IGNORE_SPACE | options);
+    }
+    
+    /**
+     * Returns the set of exemplar characters for a locale.
+     *
+     * @param options   Bitmask for options to apply to the exemplar pattern.
+     *                  Specify zero to retrieve the exemplar set as it is
+     *                  defined in the locale data.  Specify
+     *                  UnicodeSet.CASE to retrieve a case-folded exemplar
+     *                  set.  See {@link UnicodeSet#applyPattern(String,
+     *                  int)} for a complete list of valid options.  The
+     *                  IGNORE_SPACE bit is always set, regardless of the
+     *                  value of 'options'.
+     * @param extype      The type of exemplar set to be retrieved,
+     *                  ES_STANDARD or ES_AUXILIARY
+     * @return          The set of exemplar characters for the given locale.
+     * @stable ICU 3.4
+     */
+    public UnicodeSet getExemplarSet(int options, int extype) {
+        String [] exemplarSetTypes = { "ExemplarCharacters", "AuxExemplarCharacters" };
+        try{
+            ICUResourceBundle stringBundle = (ICUResourceBundle) bundle.get(exemplarSetTypes[extype]);
+    
+            if ( noSubstitute && (stringBundle.getLoadingStatus() == ICUResourceBundle.FROM_ROOT) )
+               return null;
+    
+            return new UnicodeSet(stringBundle.getString(), UnicodeSet.IGNORE_SPACE | options);
+        }catch(MissingResourceException ex){
+            if(extype==LocaleData.ES_AUXILIARY){
+                return new UnicodeSet();
+            }
+            throw ex;
+        }
+    }
+
+    /**
+     * Gets the LocaleData object associated with the ULocale specified in locale
+     *
+     * @param locale    Locale with thich the locale data object is associated.
+     * @return          A locale data object.
+     * @stable ICU 3.4
+     */
+    public static final LocaleData getInstance(ULocale locale) {
+       LocaleData ld = new LocaleData();
+       ld.bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale );
+       ld.noSubstitute = false;
+       return ld;
+    }
+
+    /**
+     * Gets the LocaleData object associated with the default locale
+     *
+     * @return          A locale data object.
+     * @stable ICU 3.4
+     */
+    public static final LocaleData getInstance() {
+       return LocaleData.getInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Sets the "no substitute" behavior of this locale data object.
+     *
+     * @param setting   Value for the no substitute behavior.  If TRUE,
+     *                  methods of this locale data object will return
+     *                  an error when no data is available for that method,
+     *                  given the locale ID supplied to the constructor.
+     * @stable ICU 3.4
+     */
+    public void setNoSubstitute(boolean setting) {
+       noSubstitute = setting;
+    }
+
+    /**
+     * Gets the "no substitute" behavior of this locale data object.
+     *
+     * @return          Value for the no substitute behavior.  If TRUE,
+     *                  methods of this locale data object will return
+     *                  an error when no data is available for that method,
+     *                  given the locale ID supplied to the constructor.
+     * @stable ICU 3.4
+     */
+    public boolean getNoSubstitute() {
+       return noSubstitute;
+    }
+
+    /**
+     * Retrieves a delimiter string from the locale data.
+     *
+     * @param type      The type of delimiter string desired.  Currently,
+     *                  the valid choices are QUOTATION_START, QUOTATION_END,
+     *                  ALT_QUOTATION_START, or ALT_QUOTATION_END.
+     * @return          The desired delimiter string.
+     * @stable ICU 3.4
+     */
+    public String getDelimiter(int type) {
+        String [] delimiterTypes = { "quotationStart", 
+                                     "quotationEnd", 
+                                     "alternateQuotationStart", 
+                                     "alternateQuotationEnd" };
+
+        ICUResourceBundle stringBundle = (ICUResourceBundle) bundle.get("delimiters").get(delimiterTypes[type]);
+
+        if ( noSubstitute && (stringBundle.getLoadingStatus() == ICUResourceBundle.FROM_ROOT) )
+           return null;
+
+        return new String (stringBundle.getString());
+    }
+
+    /**
+     * Enumeration for representing the measurement systems.
+     * @stable ICU 2.8
+     */
+    public static final class MeasurementSystem{
+        /** 
+         * Measurement system specified by Le Syst&#x00E8;me International d'Unit&#x00E9;s (SI)
+         * otherwise known as Metric system. 
+         * @stable ICU 2.8
+         */
+        public static final MeasurementSystem SI = new MeasurementSystem(0);
+ 
+        /** 
+         * Measurement system followed in the United States of America. 
+         * @stable ICU 2.8
+         */ 
+        public static final MeasurementSystem US = new MeasurementSystem(1);
+    
+        private int systemID;
+        private MeasurementSystem(int id){
+            systemID = id;
+        }
+
+        private boolean equals(int id){
+            return systemID == id;
+        }
+    }
+   
+    /**
+     * Returns the measurement system used in the locale specified by the locale.
+     *
+     * @param locale      The locale for which the measurement system to be retrieved.
+     * @return MeasurementSystem the measurement system used in the locale.
+     * @stable ICU 3.0
+     */
+    public static final MeasurementSystem getMeasurementSystem(ULocale locale){
+        UResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        UResourceBundle sysBundle = bundle.get(MEASUREMENT_SYSTEM);
+        
+        int system = sysBundle.getInt();
+        if(MeasurementSystem.US.equals(system)){
+            return MeasurementSystem.US;
+        }
+        if(MeasurementSystem.SI.equals(system)){
+            return MeasurementSystem.SI;
+        }
+        // return null if the object is null or is not an instance
+        // of integer indicating an error
+        return null;
+    }
+    
+    /**
+     * A class that represents the size of letter head 
+     * used in the country
+     * @stable ICU 2.8
+     */
+    public static final class PaperSize{
+        private int height;
+        private int width;
+        
+        private PaperSize(int h, int w){
+            height = h;
+            width = w;
+        }
+        /** 
+         * Retruns the height of the paper
+         * @return the height 
+         * @stable ICU 2.8
+         */
+        public int getHeight(){
+            return height;
+        }
+        /**
+         * Returns the width of hte paper
+         * @return the width
+         * @stable ICU 2.8
+         */
+        public int getWidth(){
+            return width;
+        }
+    }
+    
+    /**
+     * Returns the size of paper used in the locale. The paper sizes returned are always in 
+     * <em> milli-meters<em>.
+     * @param locale The locale for which the measurement system to be retrieved. 
+     * @return The paper size used in the locale
+     * @stable ICU 3.0
+     */
+    public static final PaperSize getPaperSize(ULocale locale){
+        UResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        UResourceBundle obj = bundle.get(PAPER_SIZE);
+        int[] size = obj.getIntVector();
+        return new PaperSize(size[0], size[1]);
+    }
+}
diff --git a/src/com/ibm/icu/util/Measure.java b/src/com/ibm/icu/util/Measure.java
new file mode 100644
index 0000000..adb1b84
--- /dev/null
+++ b/src/com/ibm/icu/util/Measure.java
@@ -0,0 +1,123 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2008, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 20, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.util;
+
+import java.lang.Number;
+
+/**
+ * An amount of a specified unit, consisting of a Number and a Unit.
+ * For example, a length measure consists of a Number and a length
+ * unit, such as feet or meters.  This is an abstract class.
+ * Subclasses specify a concrete Unit type.
+ *
+ * <p>Measure objects are parsed and formatted by subclasses of
+ * MeasureFormat.
+ *
+ * <p>Measure objects are immutable.
+ *
+ * @see java.lang.Number
+ * @see com.ibm.icu.util.MeasureUnit
+ * @see com.ibm.icu.text.MeasureFormat
+ * @author Alan Liu
+ * @stable ICU 3.0
+ */
+public abstract class Measure {
+    
+    private Number number;
+
+    private MeasureUnit unit;
+
+    /**
+     * Constructs a new object given a number and a unit.
+     * @param number the number
+     * @param unit the unit
+     * @stable ICU 3.0
+     */
+    protected Measure(Number number, MeasureUnit unit) {
+        if (number == null || unit == null) {
+            throw new NullPointerException();
+        }
+        this.number = number;
+        this.unit = unit;
+    }
+    
+    /**
+     * Returns true if the given object is equal to this object.
+     * @return true if this object is equal to the given object
+     * @stable ICU 3.0
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (obj == this) return true;
+        try {
+            Measure m = (Measure) obj;
+            return unit.equals(m.unit) && numbersEqual(number, m.number);
+        } catch (ClassCastException e) {
+            return false;
+        }
+    }
+    
+    /**
+     * See if two numbers are identical or have the same double value.
+     * @param a A number
+     * @param b Another number to be compared with
+     * @return Returns true if two numbers are identical or have the same double value.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    // TODO improve this to catch more cases (two different longs that have same double values, BigDecimals, etc)
+    public static boolean numbersEqual(Number a, Number b) {
+        if (a.equals(b)) {
+            return true;
+        }
+        if (a.doubleValue() == b.doubleValue()) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns a hashcode for this object.
+     * @return a 32-bit hash
+     * @stable ICU 3.0
+     */
+    public int hashCode() {
+        return number.hashCode() ^ unit.hashCode();
+    }
+
+    /**
+     * Returns a string representation of this object.
+     * @return a string representation consisting of the ISO currency
+     * code together with the numeric amount
+     * @stable ICU 3.0
+     */
+    public String toString() {
+        return number.toString() + ' ' + unit.toString();
+    }
+
+    /**
+     * Returns the numeric value of this object.
+     * @return this object's Number
+     * @stable ICU 3.0
+     */
+    public Number getNumber() {
+        return number;
+    }
+
+    /**
+     * Returns the unit of this object.
+     * @return this object's Unit
+     * @stable ICU 3.0
+     */
+    public MeasureUnit getUnit() {
+        return unit;
+    }
+}
diff --git a/src/com/ibm/icu/util/MeasureUnit.java b/src/com/ibm/icu/util/MeasureUnit.java
new file mode 100644
index 0000000..2914750
--- /dev/null
+++ b/src/com/ibm/icu/util/MeasureUnit.java
@@ -0,0 +1,27 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2007, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Alan Liu
+* Created: April 20, 2004
+* Since: ICU 3.0
+**********************************************************************
+*/
+package com.ibm.icu.util;
+
+/**
+ * A unit such as length, mass, volume, currency, etc.  A unit is
+ * coupled with a numeric amount to produce a Measure.
+ *
+ * @see com.ibm.icu.util.Measure
+ * @author Alan Liu
+ * @stable ICU 3.0
+ */
+public abstract class MeasureUnit {
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected MeasureUnit() {}
+}
diff --git a/src/com/ibm/icu/util/OverlayBundle.java b/src/com/ibm/icu/util/OverlayBundle.java
new file mode 100644
index 0000000..aea5438
--- /dev/null
+++ b/src/com/ibm/icu/util/OverlayBundle.java
@@ -0,0 +1,173 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.*;
+
+/**
+ * A ResourceBundle that overlays one hierarchy atop another.  This is
+ * best explained by example.  Suppose one wants to use the
+ * resource hiararchy (in JDK 1.2 and 1.3, but not 1.4) at 
+ * "java.text.resources.LocaleElements", but one wants to use
+ * a modified version of the "NumberPatterns" resource in the
+ * fr_FR locale.  One way to do this is to add special case code
+ * to the lookup operation to check for fr_FR and the key
+ * "NumberPatterns", and in that case, load up custom data.  However,
+ * this becomes unwieldy and places some information about the
+ * effective resource hierarchy into the code.
+ *
+ * The OverlayBundle solves this problem by layering another
+ * hierarchy, e.g, "com.acme.resources.LocaleElements", on top of a
+ * base hierarchy.  When a resource is requested, it is first sought
+ * in the overlay hierarchy, and if not found there, it is sought in
+ * the base hierarchy.  Multiple overlays are supported, but in
+ * practice one is usually sufficient.
+ * 
+ * The OverlayBundle also addresses the problem of country-oriented
+ * data.  To specify the default data for a language, one just sets
+ * the language resource bundle data.  However, specifying the default
+ * data for a country using the standard ResourceBundle mechanism is
+ * impossible.  The OverlayBundle recognizes "wildcard" locales with
+ * the special language code "xx".  When looking up data for a locale
+ * with a non-empty country, if an exact locale match cannot be found,
+ * the OverlayBundle looks for data in the locale xx_YY, where YY is
+ * the country being sought.  This effectively adds another entry in
+ * the fallback sequence for a locale aa_BB: aa_BB, xx_BB, aa, root.
+ * Wildcard locales are not implemented for the base hierarchy, only
+ * for overlays.
+ *
+ * The OverlayBundle is implemented as an array of n ResourceBundle
+ * base names.  The base names are searched from 0 to n-1.  Base name
+ * n-1 is special; it is the base hierarchy.  This should be a
+ * well-populated hierarchy with most of the default data, typically,
+ * the icu or sun core hierarchies.  The base hierarchy is
+ * treated differently from the overlays above it.  It does not get
+ * wildcard resolution, and the getKeys() framework method is
+ * delegated to the base hierarchy bundle.
+ *
+ * Usage: Instantiate an OverlayBundle directly (not via a factory
+ * method as in ResourceBundle).  Instead of specifying a single base
+ * name, pass it an array of 2 or more base names.  After that, use it
+ * exactly as you would use ResourceBundle.
+ *
+ * @see java.util.ResourceBundle
+ * @author Alan Liu
+ * @internal
+ * @deprecated ICU 2.4. This class may be removed or modified.
+ */
+// prepare to deprecate in next release
+///CLOVER:OFF
+public class OverlayBundle extends ResourceBundle {
+
+    /**
+     * The array of base names, with the length-1 entry being the base
+     * hierarchy, typically "sun.text.resources.LocaleElements".
+     */
+    private String[] baseNames;
+
+    /**
+     * The requested locale.
+     */
+    private Locale locale;
+
+    /**
+     * Loaded bundles.  These will be null until they are loaded on
+     * demand.
+     */
+    private ResourceBundle[] bundles;
+
+    /**
+     * Construct an overlay bundle given a sequence of base names and
+     * a locale.
+     * @internal
+     * @deprecated ICU 2.4. This class may be removed or modified.
+     */
+    public OverlayBundle(String[] baseNames,
+                         Locale locale) {
+        this.baseNames = baseNames;
+        this.locale = locale;
+        bundles = new ResourceBundle[baseNames.length];
+    }
+
+    /**
+     * ResourceBundle framework method.  Delegates to
+     * bundles[i].getObject().
+     * @internal
+     * @deprecated ICU 2.4. This class may be removed or modified.
+     */ 
+   protected Object handleGetObject(String key) 
+        throws MissingResourceException {
+
+        Object o = null;
+
+        for (int i=0; i<bundles.length; ++i) {
+            load(i);
+            try {
+                o = bundles[i].getObject(key);
+            } catch (MissingResourceException e) {
+                if (i == bundles.length-1) {
+                    throw e;
+                }
+            }
+            if (o != null) {
+                break;
+            }
+        }
+
+        return o;
+    }
+
+    /**
+     * ResourceBundle framework method.  Delegates to
+     * bundles[bundles.length-1].getKeys().
+     * @internal
+     * @deprecated ICU 2.4. This class may be removed or modified.
+     */
+    public Enumeration getKeys() {
+        // Return the enumeration of the last bundle, which is the base
+        // of our hierarchy stack.
+        int i = bundles.length - 1;
+        load(i);
+        return bundles[i].getKeys();
+    }
+
+    /**
+     * Load the i-th bundle and implement wildcard resolution.
+     */
+    private void load(int i)
+        throws MissingResourceException {
+
+        if (bundles[i] == null) {
+            boolean tryWildcard = false;
+            try {
+                bundles[i] = ResourceBundle.getBundle(baseNames[i], locale);
+                if (bundles[i].getLocale().equals(locale)) {
+                    return;
+                }
+                if (locale.getCountry().length() != 0 && i != bundles.length-1) {
+                    tryWildcard = true;
+                }
+            } catch (MissingResourceException e) {
+                if (i == bundles.length-1) {
+                    throw e;
+                }
+                tryWildcard = true;
+            }
+            if (tryWildcard) {
+                Locale wildcard = new Locale("xx", locale.getCountry(),
+                                             locale.getVariant());
+                try {
+                    bundles[i] = ResourceBundle.getBundle(baseNames[i], wildcard);
+                } catch (MissingResourceException e) {
+                    if (bundles[i] == null) {
+                        throw e;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/icu/util/RangeDateRule.java b/src/com/ibm/icu/util/RangeDateRule.java
new file mode 100644
index 0000000..c93f433
--- /dev/null
+++ b/src/com/ibm/icu/util/RangeDateRule.java
@@ -0,0 +1,168 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import java.util.Vector;
+
+/**
+ * Implementation of DateRule that takes a range.
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class RangeDateRule implements DateRule {
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public RangeDateRule() {
+    }
+
+    /**
+     * @internal
+     */
+    // Range is a package-private class so this should be package-private too, probably
+//    public RangeDateRule(Range[] ranges)
+//    {
+//        for (int i = 0; i < ranges.length; i++) {
+//            this.ranges.addElement(ranges[i]);
+//        }
+//    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void add(DateRule rule) {
+        add(new Date(Long.MIN_VALUE), rule);
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void add(Date start, DateRule rule) {
+        // TODO: Insert in the right place
+        // System.out.println("Add: " + start.toString());
+        ranges.addElement(new Range(start, rule));
+    }
+
+    //-----------------------------------------------------------------------
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstAfter(Date start) {
+        // Find the range that I should look at
+        int index = startIndex(start);
+        if (index == ranges.size()) {
+            index = 0;
+        }
+        Date result = null;
+
+        Range r = rangeAt(index);
+        Range e = rangeAt(index+1);
+
+        if (r != null && r.rule != null)
+        {
+            if (e != null) {
+                result = r.rule.firstBetween(start, e.start);
+            } else {
+                result = r.rule.firstAfter(start);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstBetween(Date start, Date end) {
+        if (end == null) {
+            return firstAfter(start);
+        }
+        
+        // Find the range that I should look at
+        int index = startIndex(start);
+        Date result = null;
+
+        Range next = rangeAt(index);
+
+        while (result == null && next != null && !next.start.after(end))
+        {
+            Range r = next;
+            next = rangeAt(index+1);
+
+            if (r.rule != null) {
+                Date e = (next != null && !next.start.after(end)) ? next.start
+                                                                  : end;
+                result = r.rule.firstBetween(start, e);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isOn(Date date) {
+        Range r = rangeAt(startIndex(date));
+        return r != null && r.rule != null && r.rule.isOn(date);
+    }
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isBetween(Date start, Date end) {
+        return firstBetween(start,end) == null;
+    }
+
+    /*
+     * find the index of the last range whose start date is before "start"
+     * returns an index >= ranges.size() if there is none
+     */
+    private int startIndex(Date start) {
+        int lastIndex = ranges.size();
+
+        for (int i = 0; i < ranges.size(); i++) {
+            Range r = (Range) ranges.elementAt(i);
+            if (start.before(r.start)) {
+                break;
+            }
+            lastIndex = i;
+        }
+        return lastIndex;
+    }
+
+    private Range rangeAt(int index) {
+       return (index < ranges.size()) ? (Range) ranges.elementAt(index)
+                                      : null;
+    }
+
+    Vector ranges = new Vector(2,2);
+}
+
+//-----------------------------------------------------------------------
+// Privates
+//
+
+class Range {
+    public Range(Date start, DateRule rule) {
+        this.start = start;
+        this.rule = rule;
+    }
+    public Date     start;
+    public DateRule rule;
+}
+
diff --git a/src/com/ibm/icu/util/RangeValueIterator.java b/src/com/ibm/icu/util/RangeValueIterator.java
new file mode 100644
index 0000000..28744c1
--- /dev/null
+++ b/src/com/ibm/icu/util/RangeValueIterator.java
@@ -0,0 +1,110 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+/**
+ * <p>Interface for enabling iteration over sets of <int index, int value>, 
+ * where index is the sorted integer index in ascending order and value, its 
+ * associated integer value.</p>
+ * <p>The result for each iteration is the consecutive range of 
+ * <int index, int value> with the same value. Result is represented by 
+ * <start, limit, value> where</p>
+ * <ul>
+ * <li> start is the starting integer of the result range
+ * <li> limit is 1 after the maximum integer that follows start, such that
+ *      all integers between start and (limit - 1), inclusive, have the same 
+ *      associated integer value.
+ * <li> value is the integer value that all integers from start to (limit - 1) 
+ *      share in common.
+ * </ul>
+ * <p>
+ * Hence value(start) = value(start + 1) = .... = value(start + n) = .... =
+ * value(limit - 1). However value(start -1) != value(start) and 
+ * value(limit) != value(start).
+ * </p>
+ * <p>Most implementations will be created by factory methods, such as the
+ * character type iterator in UCharacter.getTypeIterator. See example below.
+ * </p>
+ * Example of use:<br>
+ * <pre>
+ * RangeValueIterator iterator = UCharacter.getTypeIterator();
+ * RangeValueIterator.Element result = new RangeValueIterator.Element();
+ * while (iterator.next(result)) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(result.start) + 
+ *                        " to codepoint \\u" +
+ *                        Integer.toHexString(result.limit - 1) + 
+ *                        " has the character type " + result.value);
+ * }
+ * </pre>
+ * @author synwee
+ * @stable ICU 2.6
+ */
+public interface RangeValueIterator
+{
+    // public inner class ---------------------------------------------
+    
+    /**
+    * Return result wrapper for com.ibm.icu.util.RangeValueIterator.
+    * Stores the start and limit of the continous result range and the
+    * common value all integers between [start, limit - 1] has.
+    * @stable ICU 2.6
+    */
+    public class Element
+    {
+        // public data member ---------------------------------------------
+        
+        /**
+        * Starting integer of the continuous result range that has the same 
+        * value
+        * @stable ICU 2.6
+        */
+        public int start;
+        /**
+        * (End + 1) integer of continuous result range that has the same 
+        * value
+        * @stable ICU 2.6
+        */
+        public int limit;
+        /**
+        * Gets the common value of the continous result range
+        * @stable ICU 2.6
+        */ 
+        public int value;
+        
+        // public constructor --------------------------------------------
+        
+        /**
+         * Empty default constructor to make javadoc happy
+         * @stable ICU 2.4
+         */
+        public Element() 
+        {
+        }
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Gets the next maximal result range with a common value and returns 
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result range and value
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    * @stable ICU 2.6
+    */
+    public boolean next(Element element);
+    
+    /**
+    * Resets the iterator to the beginning of the iteration.
+    * @stable ICU 2.6
+    */
+    public void reset();
+}
diff --git a/src/com/ibm/icu/util/RuleBasedTimeZone.java b/src/com/ibm/icu/util/RuleBasedTimeZone.java
new file mode 100644
index 0000000..207ca97
--- /dev/null
+++ b/src/com/ibm/icu/util/RuleBasedTimeZone.java
@@ -0,0 +1,695 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import com.ibm.icu.impl.Grego;
+
+/**
+ * <code>RuleBasedTimeZone</code> is a concrete subclass of <code>TimeZone</code> that allows users to define
+ * custom historic time transition rules.
+ * 
+ * @see com.ibm.icu.util.TimeZoneRule
+ * 
+ * @stable ICU 3.8
+ */
+public class RuleBasedTimeZone extends BasicTimeZone {
+
+    private static final long serialVersionUID = 7580833058949327935L;
+
+    private final InitialTimeZoneRule initialRule;
+    private List historicRules;
+    private AnnualTimeZoneRule[] finalRules;
+
+    private transient List historicTransitions;
+    private transient boolean upToDate;
+
+    /**
+     * Constructs a <code>RuleBasedTimeZone</code> object with the ID and the
+     * <code>InitialTimeZoneRule</code>
+     * 
+     * @param id                The time zone ID.
+     * @param initialRule       The initial time zone rule.
+     * 
+     * @stable ICU 3.8
+     */
+    public RuleBasedTimeZone(String id, InitialTimeZoneRule initialRule) {
+        super.setID(id);
+        this.initialRule = initialRule;
+    }
+
+    /**
+     * Adds the <code>TimeZoneRule</code> which represents time transitions.
+     * The <code>TimeZoneRule</code> must have start times, that is, the result
+     * of {@link com.ibm.icu.util.TimeZoneRule#isTransitionRule()} must be true.
+     * Otherwise, <code>IllegalArgumentException</code> is thrown.
+     * 
+     * @param rule The <code>TimeZoneRule</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public void addTransitionRule(TimeZoneRule rule) {
+        if (!rule.isTransitionRule()) {
+            throw new IllegalArgumentException("Rule must be a transition rule");
+        }
+        if (rule instanceof AnnualTimeZoneRule
+                && ((AnnualTimeZoneRule)rule).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+            // One of the final rules applicable in future forever
+            if (finalRules == null) {
+                finalRules = new AnnualTimeZoneRule[2];
+                finalRules[0] = (AnnualTimeZoneRule)rule;
+            } else if (finalRules[1] == null) {
+                finalRules[1] = (AnnualTimeZoneRule)rule;
+            } else {
+                // Only a pair of AnnualTimeZoneRule is allowed.
+                throw new IllegalStateException("Too many final rules");
+            }
+        } else {
+            // If this is not a final rule, add it to the historic rule list 
+            if (historicRules == null) {
+                historicRules = new ArrayList();
+            }
+            historicRules.add(rule);
+        }
+        // Mark dirty, so transitions are recalculated when offset information is
+        // accessed next time.
+        upToDate = false;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek,
+            int milliseconds) {
+        if (era == GregorianCalendar.BC) {
+            // Convert to extended year
+            year = 1 - year;
+        }
+        long time = Grego.fieldsToDay(year, month, day) * Grego.MILLIS_PER_DAY + milliseconds;
+        int[] offsets = new int[2];
+        getOffset(time, true, LOCAL_DST, LOCAL_STD, offsets);
+        return (offsets[0] + offsets[1]);
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public void getOffset(long time, boolean local, int[] offsets) {
+        getOffset(time, local, LOCAL_FORMER, LOCAL_LATTER, offsets);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        getOffset(date, true, nonExistingTimeOpt, duplicatedTimeOpt, offsets);
+    }
+    
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRawOffset() {
+        // Note: This implementation returns standard GMT offset
+        // as of current time.
+        long now = System.currentTimeMillis();
+        int[] offsets = new int[2];
+        getOffset(now, false, offsets);
+        return offsets[0];
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean inDaylightTime(Date date) {
+        int[] offsets = new int[2];
+        getOffset(date.getTime(), false, offsets);
+        return (offsets[1] != 0);
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    ///CLOVER:OFF
+    public void setRawOffset(int offsetMillis) {
+        // TODO: Do nothing for now..
+        throw new UnsupportedOperationException("setRawOffset in RuleBasedTimeZone is not supported.");
+    }
+    ///CLOVER:ON
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean useDaylightTime() {
+        // Note: This implementation returns true when
+        // daylight saving time is used as of now or
+        // after the next transition.
+        long now = System.currentTimeMillis();
+        int[] offsets = new int[2];
+        getOffset(now, false, offsets);
+        if (offsets[1] != 0) {
+            return true;
+        }
+        // If DST is not used now, check if DST is used after the next transition
+        TimeZoneTransition tt = getNextTransition(now, false);
+        if (tt != null && tt.getTo().getDSTSavings() != 0) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean hasSameRules(TimeZone other) {
+        if (!(other instanceof RuleBasedTimeZone)) {
+            // We cannot reasonably compare rules in different types
+            return false;
+        }
+        RuleBasedTimeZone otherRBTZ = (RuleBasedTimeZone)other;
+
+        // initial rule
+        if (!initialRule.isEquivalentTo(otherRBTZ.initialRule)) {
+            return false;
+        }
+
+        // final rules
+        if (finalRules != null && otherRBTZ.finalRules != null) {
+            for (int i = 0; i < finalRules.length; i++) {
+                if (finalRules[i] == null && otherRBTZ.finalRules[i] == null) {
+                    continue;
+                }
+                if (finalRules[i] != null && otherRBTZ.finalRules[i] != null
+                        && finalRules[i].isEquivalentTo(otherRBTZ.finalRules[i])) {
+                    continue;
+                    
+                }
+                return false;
+            }
+        } else if (finalRules != null || otherRBTZ.finalRules != null) {
+            return false;
+        }
+
+        // historic rules
+        if (historicRules != null && otherRBTZ.historicRules != null) {
+            if (historicRules.size() != otherRBTZ.historicRules.size()) {
+                return false;
+            }
+            Iterator it = historicRules.iterator();
+            while (it.hasNext()) {
+                TimeZoneRule rule = (TimeZoneRule)it.next();
+                Iterator oit = otherRBTZ.historicRules.iterator();
+                boolean foundSameRule = false;
+                while (oit.hasNext()) {
+                    TimeZoneRule orule = (TimeZoneRule)oit.next();
+                    if (rule.isEquivalentTo(orule)) {
+                        foundSameRule = true;
+                        break;
+                    }
+                }
+                if (!foundSameRule) {
+                    return false;
+                }
+            }
+        } else if (historicRules != null || otherRBTZ.historicRules != null) {
+            return false;
+        }
+        return true;
+    }
+
+    // BasicTimeZone methods
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules() {
+        int size = 1;
+        if (historicRules != null) {
+            size += historicRules.size();
+        }
+
+        if (finalRules != null) {
+            if (finalRules[1] != null) {
+                size += 2;
+            } else {
+                size++;
+            }
+        }
+        TimeZoneRule[] rules = new TimeZoneRule[size];
+        rules[0] = initialRule;
+        
+        int idx = 1;
+        if (historicRules != null) {
+            for (; idx < historicRules.size() + 1; idx++) {
+                rules[idx] = (TimeZoneRule)historicRules.get(idx - 1);
+            }
+        }
+        if (finalRules != null) {
+            rules[idx++] = finalRules[0];
+            if (finalRules[1] != null) {
+                rules[idx] = finalRules[1];
+            }
+        }
+        return rules;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getNextTransition(long base, boolean inclusive) {
+        complete();
+        if (historicTransitions == null) {
+            return null;
+        }
+        boolean isFinal = false;
+        TimeZoneTransition result = null;
+        TimeZoneTransition tzt = (TimeZoneTransition)historicTransitions.get(0);
+        long tt = tzt.getTime();
+        if (tt > base || (inclusive && tt == base)) {
+            result = tzt;
+        } else {
+            int idx = historicTransitions.size() - 1;        
+            tzt = (TimeZoneTransition)historicTransitions.get(idx);
+            tt = tzt.getTime();
+            if (inclusive && tt == base) {
+                result = tzt;
+            } else if (tt <= base) {
+                if (finalRules != null) {
+                    // Find a transion time with finalRules
+                    Date start0 = finalRules[0].getNextStart(base,
+                            finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(), inclusive);
+                    Date start1 = finalRules[1].getNextStart(base,
+                            finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(), inclusive);
+
+                    if (start1.after(start0)) {
+                        tzt = new TimeZoneTransition(start0.getTime(), finalRules[1], finalRules[0]);
+                    } else {
+                        tzt = new TimeZoneTransition(start1.getTime(), finalRules[0], finalRules[1]);
+                    }
+                    result = tzt;
+                    isFinal = true;
+                } else {
+                    return null;
+                }
+            } else {
+                // Find a transition within the historic transitions
+                idx--;
+                TimeZoneTransition prev = tzt;
+                while (idx > 0) {
+                    tzt = (TimeZoneTransition)historicTransitions.get(idx);
+                    tt = tzt.getTime();
+                    if (tt < base || (!inclusive && tt == base)) {
+                        break;
+                    }
+                    idx--;
+                    prev = tzt;
+                }
+                result = prev;
+            }
+        }
+        if (result != null) {
+            // For now, this implementation ignore transitions with only zone name changes.
+            TimeZoneRule from = result.getFrom();
+            TimeZoneRule to = result.getTo();
+            if (from.getRawOffset() == to.getRawOffset()
+                    && from.getDSTSavings() == to.getDSTSavings()) {
+                // No offset changes.  Try next one if not final
+                if (isFinal) {
+                    return null;
+                } else {
+                    result = getNextTransition(result.getTime(), false /* always exclusive */);
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getPreviousTransition(long base, boolean inclusive) {
+        complete();
+        if (historicTransitions == null) {
+            return null;
+        }
+        TimeZoneTransition result = null;
+        TimeZoneTransition tzt = (TimeZoneTransition)historicTransitions.get(0);
+        long tt = tzt.getTime();
+        if (inclusive && tt == base) {
+            result = tzt;
+        } else if (tt >= base) {
+            return null;
+        } else {
+            int idx = historicTransitions.size() - 1;        
+            tzt = (TimeZoneTransition)historicTransitions.get(idx);
+            tt = tzt.getTime();
+            if (inclusive && tt == base) {
+                result = tzt;
+            } else if (tt < base) {
+                if (finalRules != null) {
+                    // Find a transion time with finalRules
+                    Date start0 = finalRules[0].getPreviousStart(base,
+                            finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(), inclusive);
+                    Date start1 = finalRules[1].getPreviousStart(base,
+                            finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(), inclusive);
+
+                    if (start1.before(start0)) {
+                        tzt = new TimeZoneTransition(start0.getTime(), finalRules[1], finalRules[0]);
+                    } else {
+                        tzt = new TimeZoneTransition(start1.getTime(), finalRules[0], finalRules[1]);
+                    }
+                }
+                result = tzt;
+            } else {
+                // Find a transition within the historic transitions
+                idx--;
+                while (idx >= 0) {
+                    tzt = (TimeZoneTransition)historicTransitions.get(idx);
+                    tt = tzt.getTime();
+                    if (tt < base || (inclusive && tt == base)) {
+                        break;
+                    }
+                    idx--;
+                }
+                result = tzt;                
+            }
+        }
+        if (result != null) {
+            // For now, this implementation ignore transitions with only zone name changes.
+            TimeZoneRule from = result.getFrom();
+            TimeZoneRule to = result.getTo();
+            if (from.getRawOffset() == to.getRawOffset()
+                    && from.getDSTSavings() == to.getDSTSavings()) {
+                // No offset changes.  Try previous one
+                result = getPreviousTransition(result.getTime(), false /* always exclusive */);
+            }
+        }
+        return result;
+    }
+    
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Object clone() {
+        RuleBasedTimeZone other = (RuleBasedTimeZone)super.clone();
+        if (historicRules != null) {
+            other.historicRules = (List)((ArrayList)historicRules).clone(); // rules are immutable
+        }
+        if (finalRules != null) {
+            other.finalRules = (AnnualTimeZoneRule[])finalRules.clone();
+        }
+        return other;
+    }
+
+    // private stuff
+
+    /*
+     * Resolve historic transition times and update fields used for offset
+     * calculation.
+     */
+    private void complete() {
+        if (upToDate) {
+            // No rules were added since last time.
+            return;
+        }
+
+        // Make sure either no final rules or a pair of AnnualTimeZoneRules
+        // are available.
+        if (finalRules != null && finalRules[1] == null) {
+            throw new IllegalStateException("Incomplete final rules");
+        }
+
+        // Create a TimezoneTransition and add to the list
+        if (historicRules != null || finalRules != null) {
+            TimeZoneRule curRule = initialRule;
+            long lastTransitionTime = Grego.MIN_MILLIS;
+
+            // Build the transition array which represents historical time zone
+            // transitions.
+            if (historicRules != null) {
+                BitSet done = new BitSet(historicRules.size()); // for skipping rules already processed
+
+                while (true) {
+                    int curStdOffset = curRule.getRawOffset();
+                    int curDstSavings = curRule.getDSTSavings();
+                    long nextTransitionTime = Grego.MAX_MILLIS;
+                    TimeZoneRule nextRule = null;
+                    Date d;
+                    long tt;
+
+                    for (int i = 0; i < historicRules.size(); i++) {
+                        if (done.get(i)) {
+                            continue;
+                        }
+                        TimeZoneRule r = (TimeZoneRule)historicRules.get(i);
+                        d = r.getNextStart(lastTransitionTime, curStdOffset, curDstSavings, false);
+                        if (d == null) {
+                            // No more transitions from this rule - skip this rule next time
+                            done.set(i);
+                        } else {
+                            if (r == curRule ||
+                                    (r.getName().equals(curRule.getName())
+                                            && r.getRawOffset() == curRule.getRawOffset()
+                                            && r.getDSTSavings() == curRule.getDSTSavings())) {
+                                continue;
+                            }
+                            tt = d.getTime();
+                            if (tt < nextTransitionTime) {
+                                nextTransitionTime = tt;
+                                nextRule = r;
+                            }
+                        }
+                    }
+
+                    if (nextRule ==  null) {
+                        // Check if all historic rules are done
+                        boolean bDoneAll = true;
+                        for (int j = 0; j < historicRules.size(); j++) {
+                            if (!done.get(j)) {
+                                bDoneAll = false;
+                                break;
+                            }
+                        }
+                        if (bDoneAll) {
+                            break;
+                        }
+                    }
+
+                    if (finalRules != null) {
+                        // Check if one of final rules has earlier transition date
+                        for (int i = 0; i < 2 /* finalRules.length */; i++) {
+                            if (finalRules[i] == curRule) {
+                                continue;
+                            }
+                            d = finalRules[i].getNextStart(lastTransitionTime, curStdOffset, curDstSavings, false);
+                            if (d != null) {
+                                tt = d.getTime();
+                                if (tt < nextTransitionTime) {
+                                    nextTransitionTime = tt;
+                                    nextRule = finalRules[i];
+                                }
+                            }
+                        }
+                    }
+
+                    if (nextRule == null) {
+                        // Nothing more
+                        break;
+                    }
+
+                    if (historicTransitions == null) {
+                        historicTransitions = new ArrayList();
+                    }
+                    historicTransitions.add(new TimeZoneTransition(nextTransitionTime, curRule, nextRule));
+                    lastTransitionTime = nextTransitionTime;
+                    curRule = nextRule;
+                }
+            }
+            if (finalRules != null) {
+                if (historicTransitions == null) {
+                    historicTransitions = new ArrayList();
+                }
+                // Append the first transition for each
+                Date d0 = finalRules[0].getNextStart(lastTransitionTime, curRule.getRawOffset(), curRule.getDSTSavings(), false);
+                Date d1 = finalRules[1].getNextStart(lastTransitionTime, curRule.getRawOffset(), curRule.getDSTSavings(), false);
+                if (d1.after(d0)) {
+                    historicTransitions.add(new TimeZoneTransition(d0.getTime(), curRule, finalRules[0]));
+                    d1 = finalRules[1].getNextStart(d0.getTime(), finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(), false);
+                    historicTransitions.add(new TimeZoneTransition(d1.getTime(), finalRules[0], finalRules[1]));
+                } else {
+                    historicTransitions.add(new TimeZoneTransition(d1.getTime(), curRule, finalRules[1]));
+                    d0 = finalRules[0].getNextStart(d1.getTime(), finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(), false);
+                    historicTransitions.add(new TimeZoneTransition(d0.getTime(), finalRules[1], finalRules[0]));
+                }
+            }
+        }
+        upToDate = true;
+    }
+
+    /*
+     * getOffset internal implementation
+     */
+    private void getOffset(long time, boolean local, int NonExistingTimeOpt, int DuplicatedTimeOpt, int[] offsets) {
+        complete();
+        TimeZoneRule rule;
+        if (historicTransitions == null) {
+            rule = initialRule;
+        } else {
+            long tstart = getTransitionTime((TimeZoneTransition)historicTransitions.get(0),
+                    local, NonExistingTimeOpt, DuplicatedTimeOpt);
+            if (time < tstart) {
+                rule = initialRule;
+            } else {
+                int idx = historicTransitions.size() - 1;
+                long tend = getTransitionTime((TimeZoneTransition)historicTransitions.get(idx),
+                        local, NonExistingTimeOpt, DuplicatedTimeOpt);
+                if (time > tend) {
+                    if (finalRules != null) {
+                        rule = findRuleInFinal(time, local, NonExistingTimeOpt, DuplicatedTimeOpt);
+                    } else {
+                        // no final rule, use the last rule
+                        rule = ((TimeZoneTransition)historicTransitions.get(idx)).getTo();
+                    }
+                } else {
+                    // Find a historical transition
+                    while (idx >= 0) {
+                        if (time >= getTransitionTime((TimeZoneTransition)historicTransitions.get(idx),
+                                local, NonExistingTimeOpt, DuplicatedTimeOpt)) {
+                            break;
+                        }
+                        idx--;
+                    }
+                    rule = ((TimeZoneTransition)historicTransitions.get(idx)).getTo();
+                }
+            }
+        }
+        offsets[0] = rule.getRawOffset();
+        offsets[1] = rule.getDSTSavings();
+    }
+    
+    /*
+     * Find a time zone rule applicable to the specified time
+     */
+    private TimeZoneRule findRuleInFinal(long time, boolean local, int NonExistingTimeOpt, int DuplicatedTimeOpt) {
+        if (finalRules == null || finalRules.length != 2 || finalRules[0] == null || finalRules[1] == null) {
+            return null;
+        }
+
+        Date start0, start1;
+        long base;
+        int localDelta;
+
+        base = time;
+        if (local) {
+            localDelta = getLocalDelta(finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(),
+                    finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(),
+                    NonExistingTimeOpt, DuplicatedTimeOpt);
+            base -= localDelta;
+        }
+        start0 = finalRules[0].getPreviousStart(base, finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(), true);
+
+        base = time;
+        if (local) {
+            localDelta = getLocalDelta(finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(),
+                    finalRules[1].getRawOffset(), finalRules[1].getDSTSavings(),
+                    NonExistingTimeOpt, DuplicatedTimeOpt);
+            base -= localDelta;
+        }
+        start1 = finalRules[1].getPreviousStart(base, finalRules[0].getRawOffset(), finalRules[0].getDSTSavings(), true);
+
+        return start0.after(start1) ? finalRules[0] : finalRules[1];
+    }
+
+    /*
+     * Get the transition time in local wall clock
+     */
+    private static long getTransitionTime(TimeZoneTransition tzt, boolean local,
+            int NonExistingTimeOpt, int DuplicatedTimeOpt) {
+        long time = tzt.getTime();
+        if (local) {
+            time += getLocalDelta(tzt.getFrom().getRawOffset(), tzt.getFrom().getDSTSavings(),
+                                tzt.getTo().getRawOffset(), tzt.getTo().getDSTSavings(),
+                                NonExistingTimeOpt, DuplicatedTimeOpt);
+        }
+        return time;
+    }
+
+    /*
+     * Returns amount of local time adjustment used for checking rule transitions
+     */
+    private static int getLocalDelta(int rawBefore, int dstBefore, int rawAfter, int dstAfter,
+            int NonExistingTimeOpt, int DuplicatedTimeOpt) {
+        int delta = 0;
+
+        int offsetBefore = rawBefore + dstBefore;
+        int offsetAfter = rawAfter + dstAfter;
+
+        boolean dstToStd = (dstBefore != 0) && (dstAfter == 0);
+        boolean stdToDst = (dstBefore == 0) && (dstAfter != 0);
+
+        if (offsetAfter - offsetBefore >= 0) {
+            // Positive transition, which makes a non-existing local time range
+            if (((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD && dstToStd)
+                    || ((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_DST && stdToDst)) {
+                delta = offsetBefore;
+            } else if (((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD && stdToDst)
+                    || ((NonExistingTimeOpt & STD_DST_MASK) == LOCAL_DST && dstToStd)) {
+                delta = offsetAfter;
+            } else if ((NonExistingTimeOpt & FORMER_LATTER_MASK) == LOCAL_LATTER) {
+                delta = offsetBefore;
+            } else {
+                // Interprets the time with rule before the transition,
+                // default for non-existing time range
+                delta = offsetAfter;
+            }
+        } else {
+            // Negative transition, which makes a duplicated local time range
+            if (((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_STD && dstToStd)
+                    || ((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST && stdToDst)) {
+                delta = offsetAfter;
+            } else if (((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_STD && stdToDst)
+                    || ((DuplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST && dstToStd)) {
+                delta = offsetBefore;
+            } else if ((DuplicatedTimeOpt & FORMER_LATTER_MASK) == LOCAL_FORMER) {
+                delta = offsetBefore;
+            } else {
+                // Interprets the time with rule after the transition,
+                // default for duplicated local time range
+                delta = offsetAfter;
+            }
+        }
+        return delta;
+    }
+}
+
diff --git a/src/com/ibm/icu/util/STZInfo.java b/src/com/ibm/icu/util/STZInfo.java
new file mode 100644
index 0000000..ac5340e
--- /dev/null
+++ b/src/com/ibm/icu/util/STZInfo.java
@@ -0,0 +1,88 @@
+/*
+ *   Copyright (C) 2005-2006, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+
+/**
+ * @internal
+ */
+final class STZInfo implements Serializable {
+    private static final long serialVersionUID = -7849612037842370168L;
+
+    void setStart(int sm, int sdwm, int sdw, int st, int sdm, boolean sa) {
+        this.sm = sm;
+        this.sdwm = sdwm;
+        this.sdw = sdw;
+        this.st = st;
+        this.sdm = sdm;
+        this.sa = sa;
+    }
+
+    void setEnd(int em, int edwm, int edw, int et, int edm, boolean ea) {
+        this.em = em;
+        this.edwm = edwm;
+        this.edw = edw;
+        this.et = et;
+        this.edm = edm;
+        this.ea = ea;
+    }
+
+    /*void applyTo(java.util.SimpleTimeZone stz) {
+        if (sy != -1) {
+            stz.setStartYear(sy);
+        }
+        if (sm != -1) {
+            if (sdm == -1) {
+                stz.setStartRule(sm, sdwm, sdw, st);
+            } else if (sdw == -1) {
+                stz.setStartRule(sm, sdm, st);
+            } else {
+                stz.setStartRule(sm, sdm, sdw, st, sa);
+            }
+        }
+        if (em != -1) {
+            if (edm == -1) {
+                stz.setEndRule(em, edwm, edw, et);
+            } else if (edw == -1) {
+                stz.setEndRule(em, edm, et);
+            } else {
+                stz.setEndRule(em, edm, edw, et, ea);
+            }
+        }
+    }*/
+    
+    void applyTo(com.ibm.icu.util.SimpleTimeZone stz) {
+        if (sy != -1) {
+            stz.setStartYear(sy);
+        }
+        if (sm != -1) {
+            if (sdm == -1) {
+                stz.setStartRule(sm, sdwm, sdw, st);
+            } else if (sdw == -1) {
+                stz.setStartRule(sm, sdm, st);
+            } else {
+                stz.setStartRule(sm, sdm, sdw, st, sa);
+            }
+        }
+        if (em != -1) {
+            if (edm == -1) {
+                stz.setEndRule(em, edwm, edw, et);
+            } else if (edw == -1) {
+                stz.setEndRule(em, edm, et);
+            } else {
+                stz.setEndRule(em, edm, edw, et, ea);
+            }
+        }
+    }
+    
+    int sy = -1;
+    int sm = -1, sdwm, sdw, st, sdm;
+    boolean sa;
+    int em = -1, edwm, edw, et, edm;
+    boolean ea;
+}
+
diff --git a/src/com/ibm/icu/util/SimpleDateRule.java b/src/com/ibm/icu/util/SimpleDateRule.java
new file mode 100644
index 0000000..82d6158
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleDateRule.java
@@ -0,0 +1,226 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+
+/**
+ * Simple implementation of DateRule.
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class SimpleDateRule implements DateRule
+{
+    /**
+     * Construct a rule for a fixed date within a month
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleDateRule(int month, int dayOfMonth)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = 0;
+    }
+
+    // temporary
+    /* package */SimpleDateRule(int month, int dayOfMonth, Calendar cal)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = 0;
+        this.calendar   = cal;
+    }
+
+    /**
+     * Construct a rule for a weekday within a month, e.g. the first Monday.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param after         If true, this rule selects the first dayOfWeek
+     *                      on or after dayOfMonth.  If false, the rule selects
+     *                      the first dayOfWeek on or before dayOfMonth.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleDateRule(int month, int dayOfMonth, int dayOfWeek, boolean after)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = after ? dayOfWeek : -dayOfWeek;
+    }
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstAfter(Date start)
+    {
+        return doFirstBetween(start, null);
+    }
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date and before the given
+     * end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Date firstBetween(Date start, Date end)
+    {
+        // Pin to the min/max dates for this rule
+        return doFirstBetween(start, end);
+    }
+
+    /**
+     * Checks whether this event occurs on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether this event and the given date are on the same day.
+     * This is useful for applications such as determining whether a given
+     * day is a holiday.
+     *
+     * @param date  The date to check.
+     * @return      true if this event occurs on the given date.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isOn(Date date)
+    {
+        Calendar c = calendar;
+
+        synchronized(c) {
+            c.setTime(date);
+
+            int dayOfYear = c.get(Calendar.DAY_OF_YEAR);
+
+            c.setTime(computeInYear(c.get(Calendar.YEAR), c));
+
+//              System.out.println("  isOn: dayOfYear = " + dayOfYear);
+//              System.out.println("        holiday   = " + c.get(Calendar.DAY_OF_YEAR));
+
+            return c.get(Calendar.DAY_OF_YEAR) == dayOfYear;
+        }
+    }
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start, end) != null; // TODO: optimize?
+    }
+
+    private Date doFirstBetween(Date start, Date end)
+    {
+        Calendar c = calendar;
+
+        synchronized(c) {
+            c.setTime(start);
+
+            int year = c.get(Calendar.YEAR);
+            int mon = c.get(Calendar.MONTH);
+
+            // If the rule is earlier in the year than the start date
+            // we have to go to the next year.
+            if (mon > this.month) {
+                year++;
+            }
+
+            // Figure out when the rule lands in the given year
+            Date result = computeInYear(year, c);
+
+            // If the rule is in the same month as the start date, it's possible
+            // to get a result that's before the start.  If so, go to next year.
+            if (mon == this.month && result.before(start)) {
+                result = computeInYear(year+1, c);
+            }
+
+            if (end != null && result.after(end)) {
+                return null;
+            }
+            return result;
+        }
+    }
+
+    private Date computeInYear(int year, Calendar c)
+    {
+        synchronized(c) {
+            c.clear();
+            c.set(Calendar.ERA, c.getMaximum(Calendar.ERA));
+            c.set(Calendar.YEAR, year);
+            c.set(Calendar.MONTH, month);
+            c.set(Calendar.DATE, dayOfMonth);
+
+            //System.out.println("     computeInYear: start at " + c.getTime().toString());
+
+            if (dayOfWeek != 0) {
+                c.setTime(c.getTime());        // JDK 1.1.2 workaround
+                int weekday = c.get(Calendar.DAY_OF_WEEK);
+
+                //System.out.println("                    weekday = " + weekday);
+                //System.out.println("                    dayOfYear = " + c.get(Calendar.DAY_OF_YEAR));
+
+                int delta = 0;
+                if (dayOfWeek > 0) {
+                    // We want the first occurrance of the given day of the week
+                    // on or after the specified date in the month.
+                    delta = (dayOfWeek - weekday + 7) % 7;
+                }
+                else {
+                    // We want the first occurrance of the (-dayOfWeek)
+                    // on or before the specified date in the month.
+                    delta = -((dayOfWeek + weekday + 7) % 7);
+                }
+                //System.out.println("                    adding " + delta + " days");
+                c.add(Calendar.DATE, delta);
+            }
+
+            return c.getTime();
+        }
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+//    public void setCalendar(Calendar c) {
+//        calendar = c;
+//    }
+
+    private static GregorianCalendar gCalendar = new GregorianCalendar();
+
+    private Calendar calendar = gCalendar;
+
+    private int     month;
+    private int     dayOfMonth;
+    private int     dayOfWeek;
+}
diff --git a/src/com/ibm/icu/util/SimpleHoliday.java b/src/com/ibm/icu/util/SimpleHoliday.java
new file mode 100644
index 0000000..e4176b8
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleHoliday.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Date;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+
+/**
+ * A holiday whose date can be represented by a month, day, and optionally day of week
+ * in the Gregorian calendar.
+ *
+ * @draft ICU 2.8 (retainAll)
+ * @provisional This API might change or be removed in a future release.
+ */
+public class SimpleHoliday extends Holiday {
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see Holiday#getDisplayName(java.util.Locale)
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name)
+    {
+        super(name, new SimpleDateRule(month, dayOfMonth));
+    }
+
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see Holiday#getDisplayName(java.util.Locale)
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name,
+                            int startYear)
+    {
+        super(name, rangeRule(startYear, 0, new SimpleDateRule(month, dayOfMonth)));
+    }
+
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see Holiday#getDisplayName(java.util.Locale)
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name,
+                            int startYear, int endYear)
+    {
+        super(name, rangeRule(startYear, endYear, new SimpleDateRule(month, dayOfMonth)));
+    }
+
+    /** // TODO: remove
+     * Construct an object representing a holiday
+     *
+     * @param month The month in which this holiday occurs (0-based)
+     *
+     * @param dayOfMonth A date within the month (1-based).  The
+     *      interpretation of this parameter depends on the value of
+     *      <code>dayOfWeek</code>.
+     *
+     * @param dayOfWeek The day of the week on which this holiday occurs.
+     *      The following values are legal: <ul>
+     *      <li>dayOfWeek == 0 - use dayOfMonth only
+     *      <li>dayOfWeek < 0  - use last -dayOfWeek before or on dayOfMonth
+     *      <li>dayOfWeek > 0  - use first dayOfWeek after or on dayOfMonth
+     *      </ul>
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see Holiday#getDisplayName(java.util.Locale)
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name)
+    {
+        super(name, new SimpleDateRule(month, dayOfMonth,
+                                        dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                        dayOfWeek > 0));
+    }
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
+                        int startYear)
+    {
+        super(name, rangeRule(startYear, 0, 
+                              new SimpleDateRule(month, dayOfMonth,
+                                                 dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                                 dayOfWeek > 0)));
+    }
+
+
+    /**
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
+                        int startYear, int endYear)
+    {
+        super(name, rangeRule(startYear, endYear, 
+                              new SimpleDateRule(month, dayOfMonth,
+                                                 dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                                 dayOfWeek > 0)));
+    }
+
+    private static DateRule rangeRule(int startYear, int endYear, DateRule rule)
+    {
+        if (startYear == 0 && endYear == 0) {
+            return rule;
+        }
+
+        RangeDateRule rangeRule = new RangeDateRule();
+
+        if (startYear != 0) {
+            Calendar start = new GregorianCalendar(startYear, Calendar.JANUARY, 1);
+            rangeRule.add(start.getTime(), rule);
+        } else {
+            rangeRule.add(rule);
+        }
+        if (endYear != 0) {
+            Date end = new GregorianCalendar(endYear, Calendar.DECEMBER, 31).getTime();
+            rangeRule.add(end, null);
+        }
+
+        return rangeRule;
+    }
+
+    /* Constants for holidays that are common throughout the Western
+     * and Christian worlds.... */
+
+    /**
+     * New Year's Day - January 1st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday NEW_YEARS_DAY =
+        new SimpleHoliday(Calendar.JANUARY,    1,  "New Year's Day");
+
+    /**
+     * Epiphany, January 6th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday EPIPHANY =
+        new SimpleHoliday(Calendar.JANUARY,    6,  "Epiphany");
+
+    /**
+     * May Day, May 1st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday MAY_DAY =
+        new SimpleHoliday(Calendar.MAY,        1,  "May Day");
+
+    /**
+     * Assumption, August 15th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday ASSUMPTION =
+        new SimpleHoliday(Calendar.AUGUST,    15,  "Assumption");
+
+    /**
+     * All Saints' Day, November 1st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday ALL_SAINTS_DAY =
+        new SimpleHoliday(Calendar.NOVEMBER,   1,  "All Saints' Day");
+
+    /**
+     * All Souls' Day, November 1st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday ALL_SOULS_DAY =
+        new SimpleHoliday(Calendar.NOVEMBER,   2,  "All Souls' Day");
+
+    /**
+     * Immaculate Conception, December 8th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday IMMACULATE_CONCEPTION =
+        new SimpleHoliday(Calendar.DECEMBER,   8,  "Immaculate Conception");
+
+    /**
+     * Christmas Eve, December 24th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday CHRISTMAS_EVE =
+        new SimpleHoliday(Calendar.DECEMBER,  24,  "Christmas Eve");
+
+    /**
+     * Christmas, December 25th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday CHRISTMAS =
+        new SimpleHoliday(Calendar.DECEMBER,  25,  "Christmas");
+
+    /**
+     * Boxing Day, December 26th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday BOXING_DAY =
+        new SimpleHoliday(Calendar.DECEMBER,  26,  "Boxing Day");
+
+    /**
+     * Saint Stephen's Day, December 26th
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday ST_STEPHENS_DAY =
+        new SimpleHoliday(Calendar.DECEMBER,  26,  "St. Stephen's Day");
+
+    /**
+     * New Year's Eve, December 31st
+     * @draft ICU 2.8
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final SimpleHoliday NEW_YEARS_EVE =
+        new SimpleHoliday(Calendar.DECEMBER,  31,  "New Year's Eve");
+
+}
diff --git a/src/com/ibm/icu/util/SimpleTimeZone.java b/src/com/ibm/icu/util/SimpleTimeZone.java
new file mode 100644
index 0000000..4260f29
--- /dev/null
+++ b/src/com/ibm/icu/util/SimpleTimeZone.java
@@ -0,0 +1,1326 @@
+ /*
+*   Copyright (C) 1996-2009, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.util;
+
+import java.io.IOException;
+import java.util.Date;
+
+import com.ibm.icu.impl.Grego;
+
+/**
+ * <code>SimpleTimeZone</code> is a concrete subclass of <code>TimeZone</code>
+ * that represents a time zone for use with a Gregorian calendar. This
+ * class does not handle historical changes.
+ *
+ * <P>
+ * Use a negative value for <code>dayOfWeekInMonth</code> to indicate that
+ * <code>SimpleTimeZone</code> should count from the end of the month backwards.
+ * For example, Daylight Savings Time ends at the last
+ * (dayOfWeekInMonth = -1) Sunday in October, at 2 AM in standard time.
+ *
+ * @see      Calendar
+ * @see      GregorianCalendar
+ * @see      TimeZone
+ * @author   David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+public class SimpleTimeZone extends BasicTimeZone {
+    private static final long serialVersionUID = -7034676239311322769L;
+
+    /**
+     * Constant for a mode of start or end time specified as local wall time.
+     * @stable ICU 3.8
+     */
+    public static final int WALL_TIME = 0;
+
+    /**
+     * Constant for a mode of start or end time specified as local standard time.
+     * @stable ICU 3.8
+     */
+    public static final int STANDARD_TIME = 1;
+
+    /**
+     * Constant for a mode of start or end time specified as UTC.
+     * @stable ICU 3.8
+     */
+    public static final int UTC_TIME = 2;
+
+    /**
+     * Constructs a SimpleTimeZone with the given base time zone offset from GMT
+     * and time zone ID. Timezone IDs can be obtained from
+     * TimeZone.getAvailableIDs. Normally you should use TimeZone.getDefault to
+     * construct a TimeZone.
+     *
+     * @param rawOffset  The given base time zone offset to GMT.
+     * @param ID         The time zone ID which is obtained from
+     *                   TimeZone.getAvailableIDs.
+     * @stable ICU 2.0
+     */
+    public SimpleTimeZone(int rawOffset, String ID) {
+        construct(rawOffset, 0, 0, 0,
+                0, WALL_TIME,
+                0, 0, 0,
+                0, WALL_TIME,
+                Grego.MILLIS_PER_HOUR);
+        super.setID(ID);
+    }
+
+    /**
+     * Construct a SimpleTimeZone with the given base time zone offset from
+     * GMT, time zone ID, time to start and end the daylight time. Timezone IDs
+     * can be obtained from TimeZone.getAvailableIDs. Normally you should use
+     * TimeZone.getDefault to create a TimeZone. For a time zone that does not
+     * use daylight saving time, do not use this constructor; instead you should
+     * use SimpleTimeZone(rawOffset, ID).
+     *
+     * By default, this constructor specifies day-of-week-in-month rules. That
+     * is, if the startDay is 1, and the startDayOfWeek is SUNDAY, then this
+     * indicates the first Sunday in the startMonth. A startDay of -1 likewise
+     * indicates the last Sunday. However, by using negative or zero values for
+     * certain parameters, other types of rules can be specified.
+     *
+     * Day of month. To specify an exact day of the month, such as March 1, set
+     * startDayOfWeek to zero.
+     *
+     * Day of week after day of month. To specify the first day of the week
+     * occurring on or after an exact day of the month, make the day of the week
+     * negative. For example, if startDay is 5 and startDayOfWeek is -MONDAY,
+     * this indicates the first Monday on or after the 5th day of the
+     * startMonth.
+     *
+     * Day of week before day of month. To specify the last day of the week
+     * occurring on or before an exact day of the month, make the day of the
+     * week and the day of the month negative. For example, if startDay is -21
+     * and startDayOfWeek is -WEDNESDAY, this indicates the last Wednesday on or
+     * before the 21st of the startMonth.
+     *
+     * The above examples refer to the startMonth, startDay, and startDayOfWeek;
+     * the same applies for the endMonth, endDay, and endDayOfWeek.
+     *
+     * @param rawOffset       The given base time zone offset to GMT.
+     * @param ID              The time zone ID which is obtained from
+     *                        TimeZone.getAvailableIDs.
+     * @param startMonth      The daylight savings starting month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param startDay        The daylight savings starting
+     *                        day-of-week-in-month. Please see the member
+     *                        description for an example.
+     * @param startDayOfWeek  The daylight savings starting day-of-week. Please
+     *                        see the member description for an example.
+     * @param startTime       The daylight savings starting time in local wall
+     *                        time, which is standard time in this case. Please see the
+     *                        member description for an example.
+     * @param endMonth        The daylight savings ending month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param endDay          The daylight savings ending day-of-week-in-month.
+     *                        Please see the member description for an example.
+     * @param endDayOfWeek    The daylight savings ending day-of-week. Please
+     *                        see the member description for an example.
+     * @param endTime         The daylight savings ending time in local wall time,
+     *                        which is daylight time in this case. Please see the
+     *                        member description for an example.
+     * @exception IllegalArgumentException the month, day, dayOfWeek, or time
+     * parameters are out of range for the start or end rule
+     * @stable ICU 2.0
+     */
+    public SimpleTimeZone(int rawOffset, String ID,
+                          int startMonth, int startDay, int startDayOfWeek, int startTime,
+                          int endMonth, int endDay, int endDayOfWeek, int endTime) {
+        construct(rawOffset,
+                startMonth, startDay, startDayOfWeek,
+                startTime, WALL_TIME,
+                endMonth, endDay, endDayOfWeek,
+                endTime, WALL_TIME,
+                Grego.MILLIS_PER_HOUR);
+        super.setID(ID);
+    }
+
+    /**
+     * Construct a SimpleTimeZone with the given base time zone offset from
+     * GMT, time zone ID, time and its mode to start and end the daylight time.
+     * The mode specifies either {@link #WALL_TIME} or {@link #STANDARD_TIME}
+     * or {@link #UTC_TIME}.
+     * 
+     * @param rawOffset       The given base time zone offset to GMT.
+     * @param ID              The time zone ID which is obtained from
+     *                        TimeZone.getAvailableIDs.
+     * @param startMonth      The daylight savings starting month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param startDay        The daylight savings starting
+     *                        day-of-week-in-month. Please see the member
+     *                        description for an example.
+     * @param startDayOfWeek  The daylight savings starting day-of-week. Please
+     *                        see the member description for an example.
+     * @param startTime       The daylight savings starting time in local wall
+     *                        time, which is standard time in this case. Please see the
+     *                        member description for an example.
+     * @param startTimeMode   The mode of the start time specified by startTime.
+     * @param endMonth        The daylight savings ending month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param endDay          The daylight savings ending day-of-week-in-month.
+     *                        Please see the member description for an example.
+     * @param endDayOfWeek    The daylight savings ending day-of-week. Please
+     *                        see the member description for an example.
+     * @param endTime         The daylight savings ending time in local wall time,
+     *                        which is daylight time in this case. Please see the
+     *                        member description for an example.
+     * @param endTimeMode     The mode of the end time specified by endTime.
+     * @param dstSavings      The amount of time in ms saved during DST.
+     * @exception IllegalArgumentException the month, day, dayOfWeek, or time
+     * parameters are out of range for the start or end rule
+     * @stable ICU 3.8
+     */
+    public SimpleTimeZone(int rawOffset,  String ID,
+                          int startMonth, int startDay,
+                          int startDayOfWeek, int startTime,
+                          int startTimeMode,
+                          int endMonth, int endDay,
+                          int endDayOfWeek, int endTime,
+                          int endTimeMode,int dstSavings){
+        construct(rawOffset,
+                  startMonth, startDay, startDayOfWeek,
+                  startTime, startTimeMode,
+                  endMonth, endDay, endDayOfWeek,
+                  endTime, endTimeMode,
+                  dstSavings);
+        super.setID(ID);
+    }
+
+    /**
+     * Constructor.  This constructor is identical to the 10-argument
+     * constructor, but also takes a dstSavings parameter.
+     * @param rawOffset       The given base time zone offset to GMT.
+     * @param ID              The time zone ID which is obtained from
+     *                        TimeZone.getAvailableIDs.
+     * @param startMonth      The daylight savings starting month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param startDay        The daylight savings starting
+     *                        day-of-week-in-month. Please see the member
+     *                        description for an example.
+     * @param startDayOfWeek  The daylight savings starting day-of-week. Please
+     *                        see the member description for an example.
+     * @param startTime       The daylight savings starting time in local wall
+     *                        time, which is standard time in this case. Please see the
+     *                        member description for an example.
+     * @param endMonth        The daylight savings ending month. Month is
+     *                        0-based. eg, 0 for January.
+     * @param endDay          The daylight savings ending day-of-week-in-month.
+     *                        Please see the member description for an example.
+     * @param endDayOfWeek    The daylight savings ending day-of-week. Please
+     *                        see the member description for an example.
+     * @param endTime         The daylight savings ending time in local wall time,
+     *                        which is daylight time in this case. Please see the
+     *                        member description for an example.
+     * @param dstSavings      The amount of time in ms saved during DST.
+     * @exception IllegalArgumentException the month, day, dayOfWeek, or time
+     * parameters are out of range for the start or end rule
+     * @stable ICU 2.0
+     */
+    public SimpleTimeZone(int rawOffset, String ID,
+                          int startMonth, int startDay, int startDayOfWeek, int startTime,
+                          int endMonth, int endDay, int endDayOfWeek, int endTime,
+                          int dstSavings) {
+        construct(rawOffset,
+                startMonth, startDay, startDayOfWeek,
+                startTime, WALL_TIME,
+                endMonth, endDay, endDayOfWeek,
+                endTime, WALL_TIME,
+                dstSavings); 
+        super.setID(ID);
+    }
+    
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    public void setID(String ID) {
+        super.setID(ID);
+
+        transitionRulesInitialized = false;
+    }
+
+    /**
+     * Overrides TimeZone
+     * Sets the base time zone offset to GMT.
+     * This is the offset to add "to" UTC to get local time.
+     * @param offsetMillis the raw offset of the time zone
+     * @stable ICU 2.0
+     */
+    public void setRawOffset(int offsetMillis) {
+        raw = offsetMillis;
+
+        transitionRulesInitialized = false;
+    }
+  
+    /**
+     * Overrides TimeZone
+     * Gets the GMT offset for this time zone.
+     * @return the raw offset
+     * @stable ICU 2.0
+     */
+    public int getRawOffset() {
+        return raw;
+    }
+
+    /**
+     * Sets the daylight savings starting year.
+     *
+     * @param year  The daylight savings starting year.
+     * @stable ICU 2.0
+     */
+    public void setStartYear(int year) {
+        //unwrapSTZ().setStartYear(year);
+
+        getSTZInfo().sy = year;
+        this.startYear = year;
+
+        transitionRulesInitialized = false;
+    }
+
+    /**
+     * Sets the daylight savings starting rule. For example, Daylight Savings
+     * Time starts at the first Sunday in April, at 2 AM in standard time.
+     * Therefore, you can set the start rule by calling:
+     * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000);
+     *
+     * @param month             The daylight savings starting month. Month is
+     *                          0-based. eg, 0 for January.
+     * @param dayOfWeekInMonth  The daylight savings starting
+     *                          day-of-week-in-month. Please see the member
+     *                          description for an example.
+     * @param dayOfWeek         The daylight savings starting day-of-week.
+     *                          Please see the member description for an
+     *                          example.
+     * @param time              The daylight savings starting time in local wall
+     *                          time, which is standard time in this case. Please see
+     *                          the member description for an example.
+     * @exception IllegalArgumentException the month, dayOfWeekInMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setStartRule(int month, int dayOfWeekInMonth, int dayOfWeek,
+                             int time) {
+        getSTZInfo().setStart(month, dayOfWeekInMonth, dayOfWeek, time, -1, false);
+        setStartRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME);
+    }
+    /**
+     * Sets the daylight savings starting rule. For example, in the U.S., Daylight Savings
+     * Time starts at the first Sunday in April, at 2 AM in standard time.
+     * Therefore, you can set the start rule by calling:
+     * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000);
+     * The dayOfWeekInMonth and dayOfWeek parameters together specify how to calculate
+     * the exact starting date.  Their exact meaning depend on their respective signs,
+     * allowing various types of rules to be constructed, as follows:<ul>
+     *   <li>If both dayOfWeekInMonth and dayOfWeek are positive, they specify the
+     *       day of week in the month (e.g., (2, WEDNESDAY) is the second Wednesday
+     *       of the month).
+     *   <li>If dayOfWeek is positive and dayOfWeekInMonth is negative, they specify
+     *       the day of week in the month counting backward from the end of the month.
+     *       (e.g., (-1, MONDAY) is the last Monday in the month)
+     *   <li>If dayOfWeek is zero and dayOfWeekInMonth is positive, dayOfWeekInMonth
+     *       specifies the day of the month, regardless of what day of the week it is.
+     *       (e.g., (10, 0) is the tenth day of the month)
+     *   <li>If dayOfWeek is zero and dayOfWeekInMonth is negative, dayOfWeekInMonth
+     *       specifies the day of the month counting backward from the end of the
+     *       month, regardless of what day of the week it is (e.g., (-2, 0) is the
+     *       next-to-last day of the month).
+     *   <li>If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the
+     *       first specified day of the week on or after the specfied day of the month.
+     *       (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month
+     *       [or the 15th itself if the 15th is a Sunday].)
+     *   <li>If dayOfWeek and DayOfWeekInMonth are both negative, they specify the
+     *       last specified day of the week on or before the specified day of the month.
+     *       (e.g., (-20, -TUESDAY) is the last Tuesday before the 20th of the month
+     *       [or the 20th itself if the 20th is a Tuesday].)</ul>
+     * @param month the daylight savings starting month. Month is 0-based.
+     * eg, 0 for January.
+     * @param dayOfWeekInMonth the daylight savings starting
+     * day-of-week-in-month. Please see the member description for an example.
+     * @param dayOfWeek the daylight savings starting day-of-week. Please see
+     * the member description for an example.
+     * @param time the daylight savings starting time. Please see the member
+     * description for an example.
+     */
+     
+    private void setStartRule(int month, int dayOfWeekInMonth, int dayOfWeek, int time, int mode)
+    {
+        startMonth     =  month;
+        startDay       = dayOfWeekInMonth;
+        startDayOfWeek = dayOfWeek;
+        startTime      = time;
+        startTimeMode  = mode;
+        decodeStartRule();
+
+        transitionRulesInitialized = false;
+    }
+    /**
+     * Sets the DST start rule to a fixed date within a month.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST takes effect in local wall time, which is
+     *                      standard time in this case.
+     * @exception IllegalArgumentException the month,
+     * dayOfMonth, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setStartRule(int month, int dayOfMonth, int time) {
+       // unwrapSTZ().setStartRule(month, dayOfMonth, time);
+
+        getSTZInfo().setStart(month, -1, -1, time, dayOfMonth, false);
+        setStartRule(month, dayOfMonth, 0, time, WALL_TIME);
+    }
+
+    /**
+     * Sets the DST start rule to a weekday before or after a give date within
+     * a month, e.g., the first Monday on or after the 8th.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST takes effect in local wall time, which is
+     *                      standard time in this case.
+     * @param after         If true, this rule selects the first dayOfWeek on
+     *                      or after dayOfMonth.  If false, this rule selects
+     *                      the last dayOfWeek on or before dayOfMonth.
+     * @exception IllegalArgumentException the month, dayOfMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setStartRule(int month, int dayOfMonth, int dayOfWeek, int time, boolean after) {
+        getSTZInfo().setStart(month, -1, dayOfWeek, time, dayOfMonth, after);
+        setStartRule(month, after ? dayOfMonth : -dayOfMonth,
+                -dayOfWeek, time, WALL_TIME);
+    }
+
+    /**
+     * Sets the daylight savings ending rule. For example, Daylight Savings Time
+     * ends at the last (-1) Sunday in October, at 2 AM in standard time.
+     * Therefore, you can set the end rule by calling:
+     * setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
+     *
+     * @param month             The daylight savings ending month. Month is
+     *                          0-based. eg, 0 for January.
+     * @param dayOfWeekInMonth  The daylight savings ending
+     *                          day-of-week-in-month. Please see the member
+     *                          description for an example.
+     * @param dayOfWeek         The daylight savings ending day-of-week. Please
+     *                          see the member description for an example.
+     * @param time              The daylight savings ending time in local wall time,
+     *                          which is daylight time in this case. Please see the
+     *                          member description for an example.
+     * @exception IllegalArgumentException the month, dayOfWeekInMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setEndRule(int month, int dayOfWeekInMonth, int dayOfWeek, int time) {
+        getSTZInfo().setEnd(month, dayOfWeekInMonth, dayOfWeek, time, -1, false);
+        setEndRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME);        
+    }
+
+    /**
+     * Sets the DST end rule to a fixed date within a month.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST ends in local wall time, which is daylight
+     *                      time in this case.
+     * @exception IllegalArgumentException the month,
+     * dayOfMonth, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setEndRule(int month, int dayOfMonth, int time) {
+        getSTZInfo().setEnd(month, -1, -1, time, dayOfMonth, false);
+        setEndRule(month, dayOfMonth, WALL_TIME, time);
+    }
+
+    /**
+     * Sets the DST end rule to a weekday before or after a give date within
+     * a month, e.g., the first Monday on or after the 8th.
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param time          The time of that day (number of millis after midnight)
+     *                      when DST ends in local wall time, which is daylight
+     *                      time in this case.
+     * @param after         If true, this rule selects the first dayOfWeek on
+     *                      or after dayOfMonth.  If false, this rule selects
+     *                      the last dayOfWeek on or before dayOfMonth.
+     * @exception IllegalArgumentException the month, dayOfMonth,
+     * dayOfWeek, or time parameters are out of range
+     * @stable ICU 2.0
+     */
+    public void setEndRule(int month, int dayOfMonth, int dayOfWeek, int time, boolean after) {
+        getSTZInfo().setEnd(month, -1, dayOfWeek, time, dayOfMonth, after);
+        setEndRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after);
+    }
+    private void setEndRule(int month, int dayOfMonth, int dayOfWeek, 
+                                                int time, int mode, boolean after){
+        setEndRule(month, after ? dayOfMonth : -dayOfMonth, -dayOfWeek, time, mode);
+    }
+    /**
+     * Sets the daylight savings ending rule. For example, in the U.S., Daylight
+     * Savings Time ends at the last (-1) Sunday in October, at 2 AM in standard time.
+     * Therefore, you can set the end rule by calling:
+     * setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
+     * Various other types of rules can be specified by manipulating the dayOfWeek
+     * and dayOfWeekInMonth parameters.  For complete details, see the documentation
+     * for setStartRule().
+     * @param month the daylight savings ending month. Month is 0-based.
+     * eg, 0 for January.
+     * @param dayOfWeekInMonth the daylight savings ending
+     * day-of-week-in-month. See setStartRule() for a complete explanation.
+     * @param dayOfWeek the daylight savings ending day-of-week. See setStartRule()
+     * for a complete explanation.
+     * @param time the daylight savings ending time. Please see the member
+     * description for an example.
+     */
+    private void setEndRule(int month, int dayOfWeekInMonth, int dayOfWeek, int time, int mode){
+        endMonth     = month;
+        endDay       = dayOfWeekInMonth;
+        endDayOfWeek = dayOfWeek;
+        endTime      = time;
+        endTimeMode  = mode;
+        decodeEndRule();
+
+        transitionRulesInitialized = false;
+    }
+    /**
+     * Sets the amount of time in ms that the clock is advanced during DST.
+     * @param millisSavedDuringDST the number of milliseconds the time is
+     * advanced with respect to standard time when the daylight savings rules
+     * are in effect. A positive number, typically one hour (3600000).
+     * @stable ICU 2.0
+     */
+    public void setDSTSavings(int millisSavedDuringDST) {
+        if (millisSavedDuringDST <= 0) {
+            throw new IllegalArgumentException();
+        }
+        dst = millisSavedDuringDST;
+
+        transitionRulesInitialized = false;
+    }
+
+    /**
+     * Returns the amount of time in ms that the clock is advanced during DST.
+     * @return the number of milliseconds the time is
+     * advanced with respect to standard time when the daylight savings rules
+     * are in effect. A positive number, typically one hour (3600000).
+     * @stable ICU 2.0
+     */
+    public int getDSTSavings() {
+        return dst;
+    }
+
+    /**
+     * Returns the java.util.SimpleTimeZone that this class wraps.
+     *
+    java.util.SimpleTimeZone unwrapSTZ() {
+        return (java.util.SimpleTimeZone) unwrap();
+    }
+    */
+    // on JDK 1.4 and later, can't deserialize a SimpleTimeZone as a SimpleTimeZone...
+    private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+        /*
+        String id = getID();
+        if (id!=null && !(zone instanceof java.util.SimpleTimeZone && zone.getID().equals(id))) {
+            // System.out.println("*** readjust " + zone.getClass().getName() + " " + zone.getID() + " ***");
+            java.util.SimpleTimeZone stz = 
+                new java.util.SimpleTimeZone(raw, id);
+            if (dst != 0) {
+                stz.setDSTSavings(dst);
+                // if it is 0, then there shouldn't be start/end rules and the default
+                // behavior should be no dst
+            }
+
+            if (xinfo != null) {
+                xinfo.applyTo(stz);
+            }
+            zoneJDK = stz;
+        }
+        */
+        /* set all instance variables in this object
+         * to the values in zone 
+         */            
+         if (xinfo != null) {
+             xinfo.applyTo(this);
+         }
+        
+    }
+    /**
+     * Returns a string representation of this object.
+     * @return  a string representation of this object
+     * @stable ICU 3.6
+     */
+    public String toString() {
+        return "SimpleTimeZone: " + getID();
+    }
+
+    private STZInfo getSTZInfo() {
+        if (xinfo == null) {
+            xinfo = new STZInfo();
+        }
+        return xinfo;
+    }
+
+    //  Use only for decodeStartRule() and decodeEndRule() where the year is not
+    //  available. Set February to 29 days to accomodate rules with that date
+    //  and day-of-week-on-or-before-that-date mode (DOW_LE_DOM_MODE).
+    //  The compareToRule() method adjusts to February 28 in non-leap years.
+    //
+    //  For actual getOffset() calculations, use TimeZone::monthLength() and
+    //  TimeZone::previousMonthLength() which take leap years into account.
+    //  We handle leap years assuming always
+    //  Gregorian, since we know they didn't have daylight time when
+    //  Gregorian calendar started.
+    private final static byte staticMonthLength[] = {31,29,31,30,31,30,31,31,30,31,30,31};
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 2.0
+     */
+    public int getOffset(int era, int year, int month, int day,
+                         int dayOfWeek, int millis) 
+    {
+        // Check the month before calling Grego.monthLength(). This
+        // duplicates the test that occurs in the 7-argument getOffset(),
+        // however, this is unavoidable. We don't mind because this method, in
+        // fact, should not be called; internal code should always call the
+        // 7-argument getOffset(), and outside code should use Calendar.get(int
+        // field) with fields ZONE_OFFSET and DST_OFFSET. We can't get rid of
+        // this method because it's public API. - liu 8/10/98
+        if(month < Calendar.JANUARY || month > Calendar.DECEMBER) {
+            throw new IllegalArgumentException();
+        }
+
+        return getOffset(era, year, month, day, dayOfWeek, millis, Grego.monthLength(year, month));
+    }
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public int getOffset(int era, int year, int month, int day,
+                              int dayOfWeek, int millis, 
+                              int monthLength)  {
+        // Check the month before calling Grego.monthLength(). This
+        // duplicates a test that occurs in the 9-argument getOffset(),
+        // however, this is unavoidable. We don't mind because this method, in
+        // fact, should not be called; internal code should always call the
+        // 9-argument getOffset(), and outside code should use Calendar.get(int
+        // field) with fields ZONE_OFFSET and DST_OFFSET. We can't get rid of
+        // this method because it's public API. - liu 8/10/98
+        if(month < Calendar.JANUARY || month > Calendar.DECEMBER) {
+            throw new IllegalArgumentException();
+        }
+        
+        return getOffset(era, year, month, day, dayOfWeek, millis,
+                         Grego.monthLength(year, month), Grego.previousMonthLength(year, month));
+    }
+
+    int getOffset(int era, int year, int month, int day,
+                  int dayOfWeek, int millis, 
+                  int monthLength, int prevMonthLength ){
+
+        if (true) {
+            /* Use this parameter checking code for normal operation.  Only one
+             * of these two blocks should actually get compiled into the class
+             * file.  */
+            if ((era != GregorianCalendar.AD && era != GregorianCalendar.BC)
+                || month < Calendar.JANUARY
+                || month > Calendar.DECEMBER
+                || day < 1
+                || day > monthLength
+                || dayOfWeek < Calendar.SUNDAY
+                || dayOfWeek > Calendar.SATURDAY
+                || millis < 0
+                || millis >= Grego.MILLIS_PER_DAY
+                || monthLength < 28
+                || monthLength > 31
+                || prevMonthLength < 28
+                || prevMonthLength > 31) {
+                throw new IllegalArgumentException();
+            }
+        } else {
+            /* This parameter checking code is better for debugging, but
+             * overkill for normal operation.  Only one of these two blocks
+             * should actually get compiled into the class file.  */
+            if (era != GregorianCalendar.AD && era != GregorianCalendar.BC) {
+                throw new IllegalArgumentException("Illegal era " + era);
+            }
+            if (month < Calendar.JANUARY
+                || month > Calendar.DECEMBER) {
+                throw new IllegalArgumentException("Illegal month " + month);
+            }
+            if (day < 1
+                || day > monthLength) {
+                throw new IllegalArgumentException("Illegal day " + day+" max month len: "+monthLength);
+            }
+            if (dayOfWeek < Calendar.SUNDAY
+                || dayOfWeek > Calendar.SATURDAY) {
+                throw new IllegalArgumentException("Illegal day of week " + dayOfWeek);
+            }
+            if (millis < 0
+                || millis >= Grego.MILLIS_PER_DAY) {
+                throw new IllegalArgumentException("Illegal millis " + millis);
+            }
+            if (monthLength < 28
+                || monthLength > 31) {
+                throw new IllegalArgumentException("Illegal month length " + monthLength);
+            }
+            if (prevMonthLength < 28
+                || prevMonthLength > 31) {
+                throw new IllegalArgumentException("Illegal previous month length " + prevMonthLength);
+            }
+        }
+
+        int result = raw;
+
+        // Bail out if we are before the onset of daylight savings time
+        if (!useDaylight || year < startYear || era != GregorianCalendar.AD) return result;
+
+        // Check for southern hemisphere.  We assume that the start and end
+        // month are different.
+        boolean southern = (startMonth > endMonth);
+
+        // Compare the date to the starting and ending rules.+1 = date>rule, -1
+        // = date<rule, 0 = date==rule.
+        int startCompare = compareToRule(month, monthLength, prevMonthLength,
+                                         day, dayOfWeek, millis,
+                                         startTimeMode == UTC_TIME ? -raw : 0,
+                                         startMode, startMonth, startDayOfWeek,
+                                         startDay, startTime);
+        int endCompare = 0;
+
+        /* We don't always have to compute endCompare.  For many instances,
+         * startCompare is enough to determine if we are in DST or not.  In the
+         * northern hemisphere, if we are before the start rule, we can't have
+         * DST.  In the southern hemisphere, if we are after the start rule, we
+         * must have DST.  This is reflected in the way the next if statement
+         * (not the one immediately following) short circuits. */
+        if (southern != (startCompare >= 0)) {
+            /* For the ending rule comparison, we add the dstSavings to the millis
+             * passed in to convert them from standard to wall time.  We then must
+             * normalize the millis to the range 0..millisPerDay-1. */
+            endCompare = compareToRule(month, monthLength, prevMonthLength,
+                                       day, dayOfWeek, millis,
+                                       endTimeMode == WALL_TIME ? dst :
+                                        (endTimeMode == UTC_TIME ? -raw : 0),
+                                       endMode, endMonth, endDayOfWeek,
+                                       endDay, endTime);
+        }
+
+        // Check for both the northern and southern hemisphere cases.  We
+        // assume that in the northern hemisphere, the start rule is before the
+        // end rule within the calendar year, and vice versa for the southern
+        // hemisphere.
+        if ((!southern && (startCompare >= 0 && endCompare < 0)) ||
+            (southern && (startCompare >= 0 || endCompare < 0)))
+            result += dst;
+
+        return result;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        offsets[0] = getRawOffset();
+        int fields[] = new int[6];
+        Grego.timeToFields(date, fields);
+        offsets[1] = getOffset(GregorianCalendar.AD,
+              fields[0], fields[1], fields[2],
+              fields[3], fields[5]) - offsets[0];        
+
+        boolean recalc = false;
+
+        // Now, we need some adjustment
+        if (offsets[1] > 0) {
+            if ((nonExistingTimeOpt & STD_DST_MASK) == LOCAL_STD
+                || (nonExistingTimeOpt & STD_DST_MASK) != LOCAL_DST && (nonExistingTimeOpt & FORMER_LATTER_MASK) != LOCAL_LATTER) {
+                date -= getDSTSavings();
+                recalc = true;
+            }
+        } else {
+            if ((duplicatedTimeOpt & STD_DST_MASK) == LOCAL_DST
+                    || (duplicatedTimeOpt & STD_DST_MASK) != LOCAL_STD && (duplicatedTimeOpt & FORMER_LATTER_MASK) == LOCAL_FORMER) {
+                date -= getDSTSavings();
+                recalc = true;
+            }
+        }
+
+        if (recalc) {
+            Grego.timeToFields(date, fields);
+            offsets[1] = getOffset(GregorianCalendar.AD,
+                    fields[0], fields[1], fields[2],
+                    fields[3], fields[5]) - offsets[0];        
+        }
+    }
+
+    private static final int
+        DOM_MODE = 1,
+        DOW_IN_MONTH_MODE=2,
+        DOW_GE_DOM_MODE=3,
+        DOW_LE_DOM_MODE=4;
+
+    /**
+     * Compare a given date in the year to a rule. Return 1, 0, or -1, depending
+     * on whether the date is after, equal to, or before the rule date. The
+     * millis are compared directly against the ruleMillis, so any
+     * standard-daylight adjustments must be handled by the caller.
+     *
+     * @return  1 if the date is after the rule date, -1 if the date is before
+     *          the rule date, or 0 if the date is equal to the rule date.
+     */
+    private int compareToRule(int month, int monthLen, int prevMonthLen,
+                                  int dayOfMonth,
+                                  int dayOfWeek, int millis, int millisDelta,
+                                  int ruleMode, int ruleMonth, int ruleDayOfWeek,
+                                  int ruleDay, int ruleMillis)
+    {
+        // Make adjustments for startTimeMode and endTimeMode
+        
+        millis += millisDelta;
+        
+        while (millis >= Grego.MILLIS_PER_DAY) {
+            millis -= Grego.MILLIS_PER_DAY;
+            ++dayOfMonth;
+            dayOfWeek = 1 + (dayOfWeek % 7); // dayOfWeek is one-based
+            if (dayOfMonth > monthLen) {
+                dayOfMonth = 1;
+                /* When incrementing the month, it is desirable to overflow
+                 * from DECEMBER to DECEMBER+1, since we use the result to
+                 * compare against a real month. Wraparound of the value
+                 * leads to bug 4173604. */
+                ++month;
+            }
+        }
+        /*
+         * For some reasons, Sun Java 6 on Solaris/Linux has a problem with
+         * the while loop below (at least Java 6 up to build 1.6.0_02-b08).
+         * It looks the JRE messes up the variable 'millis' while executing
+         * the code in the while block.  The problem is not reproduced with
+         * JVM option -Xint, that is, it is likely a bug of the HotSpot
+         * adaptive compiler.  Moving 'millis += Grego.MILLIS_PER_DAY'
+         * to the end of this while block seems to resolve the problem.
+         * See ticket#5887 about the problem in detail.
+         */
+        while (millis < 0) {
+            //millis += Grego.MILLIS_PER_DAY;
+            --dayOfMonth;
+            dayOfWeek = 1 + ((dayOfWeek+5) % 7); // dayOfWeek is one-based
+            if (dayOfMonth < 1) {
+                dayOfMonth = prevMonthLen;
+                --month;
+            }
+            millis += Grego.MILLIS_PER_DAY;
+        }
+        
+        if (month < ruleMonth) return -1;
+        else if (month > ruleMonth) return 1;
+
+        int ruleDayOfMonth = 0;
+
+        // Adjust the ruleDay to the monthLen, for non-leap year February 29 rule days.
+        if (ruleDay > monthLen) {
+            ruleDay = monthLen;
+        }
+
+        switch (ruleMode)
+        {
+        case DOM_MODE:
+            ruleDayOfMonth = ruleDay;
+            break;
+        case DOW_IN_MONTH_MODE:
+            // In this case ruleDay is the day-of-week-in-month
+            if (ruleDay > 0)
+                ruleDayOfMonth = 1 + (ruleDay - 1) * 7 +
+                    (7 + ruleDayOfWeek - (dayOfWeek - dayOfMonth + 1)) % 7;
+            else // Assume ruleDay < 0 here
+            {
+                ruleDayOfMonth = monthLen + (ruleDay + 1) * 7 -
+                    (7 + (dayOfWeek + monthLen - dayOfMonth) - ruleDayOfWeek) % 7;
+            }
+            break;
+        case DOW_GE_DOM_MODE:
+            ruleDayOfMonth = ruleDay +
+                (49 + ruleDayOfWeek - ruleDay - dayOfWeek + dayOfMonth) % 7;
+            break;
+        case DOW_LE_DOM_MODE:
+            ruleDayOfMonth = ruleDay -
+                (49 - ruleDayOfWeek + ruleDay + dayOfWeek - dayOfMonth) % 7;
+            // Note at this point ruleDayOfMonth may be <1, although it will
+            // be >=1 for well-formed rules.
+            break;
+        }
+
+        if (dayOfMonth < ruleDayOfMonth) return -1;
+        else if (dayOfMonth > ruleDayOfMonth) return 1;
+
+        if (millis < ruleMillis){
+                return -1;
+        }else if (millis > ruleMillis){
+                return 1;
+        }else{
+                return 0;
+        }
+    }
+
+    // data needed for streaming mutated SimpleTimeZones in JDK14
+    private int raw;// the TimeZone's raw GMT offset 
+    private int dst = 3600000;
+    private STZInfo xinfo = null;
+    private int startMonth, startDay, startDayOfWeek;   // the month, day, DOW, and time DST starts
+    private int startTime;
+    private int startTimeMode, endTimeMode; // Mode for startTime, endTime; see TimeMode
+    private int endMonth, endDay, endDayOfWeek; // the month, day, DOW, and time DST ends
+    private int endTime;
+    private int startYear;  // the year these DST rules took effect 
+    private boolean useDaylight; // flag indicating whether this TimeZone uses DST
+    private int startMode, endMode;   // flags indicating what kind of rules the DST rules are
+    
+    /**
+     * Overrides TimeZone
+     * Queries if this time zone uses Daylight Saving Time.
+     * @stable ICU 2.0
+     */
+    public boolean useDaylightTime(){
+        return useDaylight;
+    }
+
+    /**
+     * Overrides TimeZone
+     * Queries if the give date is in Daylight Saving Time.
+     * @stable ICU 2.0
+     */
+    public boolean inDaylightTime(Date date){
+        GregorianCalendar gc = new GregorianCalendar(this);
+        gc.setTime(date);
+        return gc.inDaylightTime();
+    }
+
+    /**
+     * Internal construction method.
+     */
+    private void construct(int _raw,
+                           int _startMonth,
+                           int _startDay,
+                           int _startDayOfWeek,
+                           int _startTime,
+                           int _startTimeMode,
+                           int _endMonth,
+                           int _endDay,
+                           int _endDayOfWeek,
+                           int _endTime,
+                           int _endTimeMode,
+                           int _dst) {
+        raw            = _raw;
+        startMonth     = _startMonth;
+        startDay       = _startDay;
+        startDayOfWeek = _startDayOfWeek;
+        startTime      = _startTime;
+        startTimeMode  = _startTimeMode;
+        endMonth       = _endMonth;
+        endDay         = _endDay;
+        endDayOfWeek   = _endDayOfWeek;
+        endTime        = _endTime;
+        endTimeMode    = _endTimeMode;
+        dst            = _dst;
+        startYear      = 0;
+        startMode      = DOM_MODE;
+        endMode        = DOM_MODE;
+
+        decodeRules();
+
+        if (_dst <= 0) {
+            throw new IllegalArgumentException();
+        }
+    }
+    private void decodeRules(){
+        decodeStartRule();
+        decodeEndRule();
+    }
+
+    /**
+     * Decode the start rule and validate the parameters.  The parameters are
+     * expected to be in encoded form, which represents the various rule modes
+     * by negating or zeroing certain values.  Representation formats are:
+     * <p>
+     * <pre>
+     *            DOW_IN_MONTH  DOM    DOW>=DOM  DOW<=DOM  no DST
+     *            ------------  -----  --------  --------  ----------
+     * month       0..11        same    same      same     don't care
+     * day        -5..5         1..31   1..31    -1..-31   0
+     * dayOfWeek   1..7         0      -1..-7    -1..-7    don't care
+     * time        0..ONEDAY    same    same      same     don't care
+     * </pre>
+     * The range for month does not include UNDECIMBER since this class is
+     * really specific to GregorianCalendar, which does not use that month.
+     * The range for time includes ONEDAY (vs. ending at ONEDAY-1) because the
+     * end rule is an exclusive limit point.  That is, the range of times that
+     * are in DST include those >= the start and < the end.  For this reason,
+     * it should be possible to specify an end of ONEDAY in order to include the
+     * entire day.  Although this is equivalent to time 0 of the following day,
+     * it's not always possible to specify that, for example, on December 31.
+     * While arguably the start range should still be 0..ONEDAY-1, we keep
+     * the start and end ranges the same for consistency.
+     */
+    private void decodeStartRule() {
+
+        useDaylight = (boolean)((startDay != 0) && (endDay != 0) ? true : false  );
+        if (useDaylight && dst == 0) {
+            dst = Grego.MILLIS_PER_DAY;
+        }
+        if (startDay != 0) {
+            if (startMonth < Calendar.JANUARY || startMonth > Calendar.DECEMBER) {
+                throw new IllegalArgumentException();
+            }
+            if (startTime < 0 || startTime >= Grego.MILLIS_PER_DAY ||
+                startTimeMode < WALL_TIME || startTimeMode > UTC_TIME) {
+                throw new IllegalArgumentException();
+            }
+            if (startDayOfWeek == 0) {
+                startMode = DOM_MODE;
+            } else {
+                if (startDayOfWeek > 0) {
+                    startMode = DOW_IN_MONTH_MODE;
+                } else {
+                    startDayOfWeek = (int)-startDayOfWeek;
+                    if (startDay > 0) {
+                        startMode = DOW_GE_DOM_MODE;
+                    } else {
+                        startDay = (int)-startDay;
+                        startMode = DOW_LE_DOM_MODE;
+                    }
+                }
+                if (startDayOfWeek > Calendar.SATURDAY) {
+                    throw new IllegalArgumentException();
+                }
+            }
+            if (startMode == DOW_IN_MONTH_MODE) {
+                if (startDay < -5 || startDay > 5) {
+                    throw new IllegalArgumentException();
+                }
+            } else if (startDay < 1 || startDay > staticMonthLength[startMonth]) {
+                throw new IllegalArgumentException();
+            }
+        }
+    }
+
+    /**
+     * Decode the end rule and validate the parameters.  This method is exactly
+     * analogous to decodeStartRule().
+     * @see #decodeStartRule
+     */
+    private void decodeEndRule() {
+        useDaylight = (boolean)((startDay != 0) && (endDay != 0) ? true : false);
+        if (useDaylight && dst == 0) {
+            dst = Grego.MILLIS_PER_DAY;
+        }
+        if (endDay != 0) {
+            if (endMonth < Calendar.JANUARY || endMonth > Calendar.DECEMBER) {
+                throw new IllegalArgumentException();
+            }
+            if (endTime < 0 || endTime > Grego.MILLIS_PER_DAY ||
+                endTimeMode < WALL_TIME || endTimeMode > UTC_TIME) {
+                throw new IllegalArgumentException();
+            }
+            if (endDayOfWeek == 0) {
+                endMode = DOM_MODE;
+            } else {
+                if (endDayOfWeek > 0) {
+                    endMode = DOW_IN_MONTH_MODE;
+                } else {
+                    endDayOfWeek = (int)-endDayOfWeek;
+                    if (endDay > 0) {
+                        endMode = DOW_GE_DOM_MODE;
+                    } else {
+                        endDay = (int)-endDay;
+                        endMode = DOW_LE_DOM_MODE;
+                    }
+                }
+                if (endDayOfWeek > Calendar.SATURDAY) {
+                    throw new IllegalArgumentException();
+                }
+            }
+            if (endMode == DOW_IN_MONTH_MODE) {
+                if (endDay < -5 || endDay > 5) {
+                    throw new IllegalArgumentException();
+                }
+            } else if (endDay<1 || endDay > staticMonthLength[endMonth]) {
+                throw new IllegalArgumentException();
+            }
+        }
+    }
+
+    /**
+     * Return true if obj is a SimpleTimeZone equivalent to this.
+     * @return true if obj is a SimpleTimeZone equivalent to this
+     * @stable ICU 3.6
+     */
+    public boolean equals(Object obj){
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        SimpleTimeZone that = (SimpleTimeZone) obj;
+        return raw     == that.raw &&
+            useDaylight     == that.useDaylight &&
+            idEquals(getID(),that.getID()) &&
+            (!useDaylight
+             // Only check rules if using DST
+             || (dst            == that.dst &&
+                 startMode      == that.startMode &&
+                 startMonth     == that.startMonth &&
+                 startDay       == that.startDay &&
+                 startDayOfWeek == that.startDayOfWeek &&
+                 startTime      == that.startTime &&
+                 startTimeMode  == that.startTimeMode &&
+                 endMode        == that.endMode &&
+                 endMonth       == that.endMonth &&
+                 endDay         == that.endDay &&
+                 endDayOfWeek   == that.endDayOfWeek &&
+                 endTime        == that.endTime &&
+                 endTimeMode    == that.endTimeMode &&
+                 startYear      == that.startYear ));
+
+    }
+    private boolean idEquals(String id1, String id2){
+        if(id1==null && id2==null){
+            return true;
+        }
+        if(id1!=null && id2!=null){
+            return id1.equals(id2);
+        }
+        return false;
+    }
+
+    /**
+     * Return the hash code.
+     * @return the hash code
+     * @stable ICU 3.6
+     */
+    public int hashCode(){
+        int ret = (int)( super.hashCode() +
+                                         raw ^ (raw>>>8) +
+                                         (useDaylight?0:1));
+        if(!useDaylight){
+                ret += (int)(dst ^ (dst>>>10) +
+                                startMode ^ (startMode>>>11) +
+                                startMonth ^ (startMonth>>>12) +
+                                startDay ^ (startDay>>>13) +
+                                startDayOfWeek ^ (startDayOfWeek>>>14) +
+                                startTime ^ (startTime>>>15) +
+                                startTimeMode ^ (startTimeMode>>>16) +
+                                endMode ^ (endMode>>>17) +
+                                endMonth ^ (endMonth>>>18) +
+                                endDay ^ (endDay>>>19) +
+                                endDayOfWeek ^ (endDayOfWeek>>>20) +
+                                endTime ^ (endTime>>>21) +
+                                endTimeMode ^ (endTimeMode>>>22) +
+                                startYear ^ (startYear>>>23));
+        }
+                return ret;
+    }
+
+    /**
+     * Return a clone of this time zone.
+     * @return a clone of this time zone
+     * @stable ICU 3.6
+     */
+    public Object clone() {
+        return super.clone();
+    }
+
+    /**
+     * Return true if this zone has the same rules and offset as another zone.
+     * @param othr the TimeZone object to be compared with
+     * @return true if the given zone has the same rules and offset as this one
+     * @stable ICU 2.0
+     */
+    public boolean hasSameRules(TimeZone othr) {
+        if(!(othr instanceof SimpleTimeZone)){
+                return false;
+        }
+        SimpleTimeZone other = (SimpleTimeZone)othr;
+        return other != null &&
+        raw     == other.raw &&
+        useDaylight     == other.useDaylight &&
+        (!useDaylight
+         // Only check rules if using DST
+         || (dst     == other.dst &&
+             startMode      == other.startMode &&
+             startMonth     == other.startMonth &&
+             startDay       == other.startDay &&
+             startDayOfWeek == other.startDayOfWeek &&
+             startTime      == other.startTime &&
+             startTimeMode  == other.startTimeMode &&
+             endMode        == other.endMode &&
+             endMonth       == other.endMonth &&
+             endDay         == other.endDay &&
+             endDayOfWeek   == other.endDayOfWeek &&
+             endTime        == other.endTime &&
+             endTimeMode    == other.endTimeMode &&
+             startYear      == other.startYear));
+    }
+
+    // BasicTimeZone methods
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getNextTransition(long base, boolean inclusive) {
+        if (!useDaylight) {
+            return null;
+        }
+
+        initTransitionRules();
+        long firstTransitionTime = firstTransition.getTime();
+        if (base < firstTransitionTime || (inclusive && base == firstTransitionTime)) {
+            return firstTransition;
+        }
+        Date stdDate = stdRule.getNextStart(base, dstRule.getRawOffset(), dstRule.getDSTSavings(), inclusive);
+        Date dstDate = dstRule.getNextStart(base, stdRule.getRawOffset(), stdRule.getDSTSavings(), inclusive);
+        if (stdDate != null && (dstDate == null || stdDate.before(dstDate))) {
+            return new TimeZoneTransition(stdDate.getTime(), dstRule, stdRule);
+        }
+        if (dstDate != null && (stdDate == null || dstDate.before(stdDate))) {
+            return new TimeZoneTransition(dstDate.getTime(), stdRule, dstRule);
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getPreviousTransition(long base, boolean inclusive) {
+        if (!useDaylight) {
+            return null;
+        }
+
+        initTransitionRules();
+        long firstTransitionTime = firstTransition.getTime();
+        if (base < firstTransitionTime || (!inclusive && base == firstTransitionTime)) {
+            return null;
+        }
+        Date stdDate = stdRule.getPreviousStart(base, dstRule.getRawOffset(), dstRule.getDSTSavings(), inclusive);
+        Date dstDate = dstRule.getPreviousStart(base, stdRule.getRawOffset(), stdRule.getDSTSavings(), inclusive);
+        if (stdDate != null && (dstDate == null || stdDate.after(dstDate))) {
+            return new TimeZoneTransition(stdDate.getTime(), dstRule, stdRule);
+        }
+        if (dstDate != null && (stdDate == null || dstDate.after(stdDate))) {
+            return new TimeZoneTransition(dstDate.getTime(), stdRule, dstRule);            
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules() {
+        initTransitionRules();
+
+        int size = useDaylight ? 3 : 1;
+        TimeZoneRule[] rules = new TimeZoneRule[size];
+        rules[0] = initialRule;
+        if (useDaylight) {
+            rules[1] = stdRule;
+            rules[2] = dstRule;
+        }
+        return rules;
+    }
+
+    private transient boolean transitionRulesInitialized;
+    private transient InitialTimeZoneRule initialRule;
+    private transient TimeZoneTransition firstTransition;
+    private transient AnnualTimeZoneRule stdRule;
+    private transient AnnualTimeZoneRule dstRule;
+
+    private synchronized void initTransitionRules() {
+        if (transitionRulesInitialized) {
+            return;
+        }
+        if (useDaylight) {
+            DateTimeRule dtRule = null;
+            int timeRuleType;
+            long firstStdStart, firstDstStart;
+
+            // Create a TimeZoneRule for daylight saving time
+            timeRuleType = (startTimeMode == STANDARD_TIME) ? DateTimeRule.STANDARD_TIME :
+                ((startTimeMode == UTC_TIME) ? DateTimeRule.UTC_TIME : DateTimeRule.WALL_TIME);
+            switch (startMode) {
+            case DOM_MODE:
+             dtRule = new DateTimeRule(startMonth, startDay, startTime, timeRuleType);
+             break;
+            case DOW_IN_MONTH_MODE:
+             dtRule = new DateTimeRule(startMonth, startDay, startDayOfWeek, startTime, timeRuleType);
+             break;
+            case DOW_GE_DOM_MODE:
+             dtRule = new DateTimeRule(startMonth, startDay, startDayOfWeek, true, startTime, timeRuleType);
+             break;
+            case DOW_LE_DOM_MODE:
+             dtRule = new DateTimeRule(startMonth, startDay, startDayOfWeek, false, startTime, timeRuleType);
+             break;
+            }
+            // For now, use ID + "(DST)" as the name
+            dstRule = new AnnualTimeZoneRule(getID() + "(DST)", getRawOffset(), getDSTSavings(),
+                 dtRule, startYear, AnnualTimeZoneRule.MAX_YEAR);
+     
+            // Calculate the first DST start time
+            firstDstStart = dstRule.getFirstStart(getRawOffset(), 0).getTime();
+
+            // Create a TimeZoneRule for standard time
+            timeRuleType = (endTimeMode == STANDARD_TIME) ? DateTimeRule.STANDARD_TIME :
+                ((endTimeMode == UTC_TIME) ? DateTimeRule.UTC_TIME : DateTimeRule.WALL_TIME);
+            switch (endMode) {
+            case DOM_MODE:
+                dtRule = new DateTimeRule(endMonth, endDay, endTime, timeRuleType);
+                break;
+            case DOW_IN_MONTH_MODE:
+                dtRule = new DateTimeRule(endMonth, endDay, endDayOfWeek, endTime, timeRuleType);
+                break;
+            case DOW_GE_DOM_MODE:
+                dtRule = new DateTimeRule(endMonth, endDay, endDayOfWeek, true, endTime, timeRuleType);
+                break;
+            case DOW_LE_DOM_MODE:
+                dtRule = new DateTimeRule(endMonth, endDay, endDayOfWeek, false, endTime, timeRuleType);
+                break;
+            }
+            // For now, use ID + "(STD)" as the name
+            stdRule = new AnnualTimeZoneRule(getID() + "(STD)", getRawOffset(), 0,
+                    dtRule, startYear, AnnualTimeZoneRule.MAX_YEAR);
+
+            // Calculate the first STD start time
+            firstStdStart = stdRule.getFirstStart(getRawOffset(), dstRule.getDSTSavings()).getTime();
+
+            // Create a TimeZoneRule for initial time
+            if (firstStdStart < firstDstStart) {
+                initialRule = new InitialTimeZoneRule(getID() + "(DST)", getRawOffset(), dstRule.getDSTSavings());                
+                firstTransition = new TimeZoneTransition(firstStdStart, initialRule, stdRule);
+            } else {
+                initialRule = new InitialTimeZoneRule(getID() + "(STD)", getRawOffset(), 0);
+                firstTransition = new TimeZoneTransition(firstDstStart, initialRule, dstRule);
+            }
+            
+        } else {
+            // Create a TimeZoneRule for initial time
+            initialRule = new InitialTimeZoneRule(getID(), getRawOffset(), 0);
+        }
+        transitionRulesInitialized = true;
+    }
+}
+
diff --git a/src/com/ibm/icu/util/StringTokenizer.java b/src/com/ibm/icu/util/StringTokenizer.java
new file mode 100644
index 0000000..1d043dc
--- /dev/null
+++ b/src/com/ibm/icu/util/StringTokenizer.java
@@ -0,0 +1,688 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2006, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * <p>The string tokenizer class allows an application to break a string 
+ * into tokens by performing code point comparison. 
+ * The <code>StringTokenizer</code> methods do not distinguish 
+ * among identifiers, numbers, and quoted strings, nor do they recognize 
+ * and skip comments.</p>
+ * <p>
+ * The set of delimiters (the codepoints that separate tokens) may be 
+ * specified either at creation time or on a per-token basis. 
+ * </p>
+ * <p>
+ * An instance of <code>StringTokenizer</code> behaves in one of three ways, 
+ * depending on whether it was created with the <code>returnDelims</code> 
+ * and <code>coalesceDelims</code>
+ * flags having the value <code>true</code> or <code>false</code>: 
+ * <ul>
+ * <li>If returnDelims is <code>false</code>, delimiter code points serve to 
+ * separate tokens. A token is a maximal sequence of consecutive 
+ * code points that are not delimiters. 
+ * <li>If returnDelims is <code>true</code>, delimiter code points are 
+ * themselves considered to be tokens. In this case, if coalesceDelims is
+ * <code>true</code>, such tokens will be the maximal sequence of consecutive
+ * code points that <em>are</em> delimiters.  If coalesceDelims is false,
+ * a token will be received for each delimiter code point.
+ * </ul>
+ * <p>A token is thus either one 
+ * delimiter code point, a maximal sequence of consecutive code points that
+ * are delimiters, or a maximal sequence of consecutive code 
+ * points that are not delimiters.
+ * </p>
+ * <p>
+ * A <tt>StringTokenizer</tt> object internally maintains a current 
+ * position within the string to be tokenized. Some operations advance this 
+ * current position past the code point processed.
+ * </p>
+ * <p>
+ * A token is returned by taking a substring of the string that was used to 
+ * create the <tt>StringTokenizer</tt> object.
+ * </p>
+ * <p>
+ * Example of the use of the default delimiter tokenizer.
+ * <blockquote><pre>
+ * StringTokenizer st = new StringTokenizer("this is a test");
+ * while (st.hasMoreTokens()) {
+ *     println(st.nextToken());
+ *     }
+ * </pre></blockquote>
+ * </p>
+ * <p>
+ * prints the following output:
+ * <blockquote><pre>
+ *     this
+ *     is
+ *     a
+ *     test
+ * </pre></blockquote>
+ * </p>
+ * <p>
+ * Example of the use of the tokenizer with user specified delimiter.
+ * <blockquote><pre>
+ *     StringTokenizer st = new StringTokenizer(
+ *     "this is a test with supplementary characters &#92;ud800&#92;ud800&#92;udc00&#92;udc00",
+ *         " &#92;ud800&#92;udc00");
+ *     while (st.hasMoreTokens()) {
+ *         println(st.nextToken());
+ *     }
+ * </pre></blockquote>
+ * </p>
+ * <p>
+ * prints the following output:
+ * <blockquote><pre>
+ *     this
+ *     is
+ *     a
+ *     test
+ *     with
+ *     supplementary
+ *     characters
+ *     &#92;ud800
+ *     &#92;udc00
+ * </pre></blockquote>
+ * </p>
+ * @author syn wee
+ * @stable ICU 2.4
+ */
+public final class StringTokenizer implements Enumeration 
+{
+    // public constructors ---------------------------------------------
+     
+    /**
+     * <p>Constructs a string tokenizer for the specified string. All 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>If the returnDelims flag is false, the delimiter characters are 
+     * skipped and only serve as separators between tokens.</p>
+     * <p>If the returnDelims flag is true, then the delimiter characters 
+     * are also returned as tokens, one per delimiter.
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @param returndelims flag indicating whether to return the delimiters 
+     *        as tokens.
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str, UnicodeSet delim, boolean returndelims)
+    {
+        this(str, delim, returndelims, false);
+    }
+
+    /**
+     * <p>Constructs a string tokenizer for the specified string. All 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>If the returnDelims flag is false, the delimiter characters are 
+     * skipped and only serve as separators between tokens.</p>
+     * <p>If the returnDelims flag is true, then the delimiter characters 
+     * are also returned as tokens.  If coalescedelims is true, one token
+     * is returned for each run of delimiter characters, otherwise one
+     * token is returned per delimiter.  Since surrogate pairs can be
+     * delimiters, the returned token might be two chars in length.</p>
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @param returndelims flag indicating whether to return the delimiters 
+     *        as tokens.
+     * @param coalescedelims flag indicating whether to return a run of 
+     *        delimiters as a single token or as one token per delimiter.  
+     *        This only takes effect if returndelims is true.
+     * @exception throws a NullPointerException if str is null
+     * @internal ICU 3.4.3
+     * @deprecated This API is ICU internal only.
+     */
+    public StringTokenizer(String str, UnicodeSet delim, boolean returndelims, boolean coalescedelims)
+    {
+        m_source_ = str;
+        m_length_ = str.length();
+        if (delim == null) {
+            m_delimiters_ = EMPTY_DELIMITER_;
+        }
+        else {
+            m_delimiters_ = delim;   
+        }
+        m_returnDelimiters_ = returndelims;
+        m_coalesceDelimiters_ = coalescedelims;
+        m_tokenOffset_ = -1;
+        m_tokenSize_ = -1;
+        if (m_length_ == 0) {
+            // string length 0, no tokens
+            m_nextOffset_ = -1;
+        }
+        else {
+            m_nextOffset_ = 0;
+            if (!returndelims) {
+                m_nextOffset_ = getNextNonDelimiter(0);
+            }
+        }
+    }
+    
+    /**
+     * <p>Constructs a string tokenizer for the specified string. The 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>Delimiter characters themselves will not be treated as tokens.</p>
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str, UnicodeSet delim)
+    {
+        this(str, delim, false, false);
+    }
+       
+    /**
+     * <p>Constructs a string tokenizer for the specified string. All 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>If the returnDelims flag is false, the delimiter characters are 
+     * skipped and only serve as separators between tokens.</p>
+     * <p>If the returnDelims flag is true, then the delimiter characters 
+     * are also returned as tokens, one per delimiter.
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @param returndelims flag indicating whether to return the delimiters 
+     *        as tokens.
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str, String delim, boolean returndelims)
+    {
+        this(str, delim, returndelims, false); // java default behavior
+    }
+
+    /**
+     * <p>Constructs a string tokenizer for the specified string. All 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>If the returnDelims flag is false, the delimiter characters are 
+     * skipped and only serve as separators between tokens.</p>
+     * <p>If the returnDelims flag is true, then the delimiter characters 
+     * are also returned as tokens.  If coalescedelims is true, one token
+     * is returned for each run of delimiter characters, otherwise one
+     * token is returned per delimiter.  Since surrogate pairs can be
+     * delimiters, the returned token might be two chars in length.</p>
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @param returndelims flag indicating whether to return the delimiters 
+     *        as tokens.
+     * @param coalescedelims flag indicating whether to return a run of 
+     *        delimiters as a single token or as one token per delimiter.  
+     *        This only takes effect if returndelims is true.
+     * @exception throws a NullPointerException if str is null
+     * @internal ICU 3.4.3
+     * @deprecated This API is ICU internal only.
+     */
+    public StringTokenizer(String str, String delim, boolean returndelims, boolean coalescedelims)
+    {
+        // don't ignore whitespace
+        m_delimiters_ = EMPTY_DELIMITER_;
+        if (delim != null && delim.length() > 0) {
+            m_delimiters_ = new UnicodeSet();
+            m_delimiters_.addAll(delim);
+            checkDelimiters();
+        }
+        m_coalesceDelimiters_ = coalescedelims;
+        m_source_ = str;
+        m_length_ = str.length();
+        m_returnDelimiters_ = returndelims;
+        m_tokenOffset_ = -1;
+        m_tokenSize_ = -1;
+        if (m_length_ == 0) {
+            // string length 0, no tokens
+            m_nextOffset_ = -1;
+        }
+        else {
+            m_nextOffset_ = 0;
+            if (!returndelims) {
+                m_nextOffset_ = getNextNonDelimiter(0);
+            }
+        }
+    }
+    
+    /**
+     * <p>Constructs a string tokenizer for the specified string. The 
+     * characters in the delim argument are the delimiters for separating 
+     * tokens.</p> 
+     * <p>Delimiter characters themselves will not be treated as tokens.</p>
+     * @param str a string to be parsed.
+     * @param delim the delimiters.
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str, String delim)
+    {
+        // don't ignore whitespace
+        this(str, delim, false, false);
+    }
+
+    /**
+     * <p>Constructs a string tokenizer for the specified string. 
+     * The tokenizer uses the default delimiter set, which is 
+     * " &#92;t&#92;n&#92;r&#92;f": 
+     * the space character, the tab character, the newline character, the 
+     * carriage-return character, and the form-feed character.</p> 
+     * <p>Delimiter characters themselves will not be treated as tokens.</p>
+     * @param str a string to be parsed
+     * @exception throws a NullPointerException if str is null
+     * @stable ICU 2.4
+     */
+    public StringTokenizer(String str) 
+    {
+        this(str, DEFAULT_DELIMITERS_, false, false);
+    }
+    
+    // public methods --------------------------------------------------
+    
+    /**
+     * Tests if there are more tokens available from this tokenizer's 
+     * string. 
+     * If this method returns <tt>true</tt>, then a subsequent call to 
+     * <tt>nextToken</tt> with no argument will successfully return a token.
+     * @return <code>true</code> if and only if there is at least one token 
+     *         in the string after the current position; <code>false</code> 
+     *         otherwise.
+     * @stable ICU 2.4
+     */
+    public boolean hasMoreTokens() 
+    {
+        return m_nextOffset_ >= 0;
+    }
+    
+    /**
+     * Returns the next token from this string tokenizer.
+     * @return the next token from this string tokenizer.
+     * @exception NoSuchElementException if there are no more tokens in 
+     *            this tokenizer's string.
+     * @stable ICU 2.4
+     */
+    public String nextToken() 
+    {
+        if (m_tokenOffset_ < 0) {
+            if (m_nextOffset_ < 0) {
+                throw new NoSuchElementException("No more tokens in String");   
+            }
+            // pre-calculations of tokens not done
+            if (m_returnDelimiters_) {
+                int tokenlimit = 0;
+                int c = UTF16.charAt(m_source_, m_nextOffset_);
+                boolean contains = delims == null 
+                    ? m_delimiters_.contains(c) 
+                    : c < delims.length && delims[c];
+                if (contains) {
+                     if (m_coalesceDelimiters_) {
+                        tokenlimit = getNextNonDelimiter(m_nextOffset_);
+                     } else {
+                        tokenlimit = m_nextOffset_ + UTF16.getCharCount(c);
+                        if (tokenlimit == m_length_) {
+                            tokenlimit = -1;
+                        }
+                     }
+                }
+                else {
+                    tokenlimit = getNextDelimiter(m_nextOffset_);
+                }
+                String result;
+                if (tokenlimit < 0) {
+                    result = m_source_.substring(m_nextOffset_);
+                }
+                else {
+                    result = m_source_.substring(m_nextOffset_, tokenlimit);
+                }
+                m_nextOffset_ = tokenlimit;
+                return result;
+            }
+            else {
+                int tokenlimit = getNextDelimiter(m_nextOffset_);
+                String result;
+                if (tokenlimit < 0) {
+                    result = m_source_.substring(m_nextOffset_);
+                    m_nextOffset_ = tokenlimit;
+                }
+                else {
+                    result = m_source_.substring(m_nextOffset_, tokenlimit);
+                    m_nextOffset_ = getNextNonDelimiter(tokenlimit);
+                }
+                
+                return result;
+            }
+        }
+        // count was called before and we have all the tokens
+        if (m_tokenOffset_ >= m_tokenSize_) {
+            throw new NoSuchElementException("No more tokens in String");
+        }
+        String result;
+        if (m_tokenLimit_[m_tokenOffset_] >= 0) {
+            result = m_source_.substring(m_tokenStart_[m_tokenOffset_],
+                                         m_tokenLimit_[m_tokenOffset_]);
+        }
+        else {
+            result = m_source_.substring(m_tokenStart_[m_tokenOffset_]);
+        }
+        m_tokenOffset_ ++;
+        m_nextOffset_ = -1;
+        if (m_tokenOffset_ < m_tokenSize_) {
+            m_nextOffset_ = m_tokenStart_[m_tokenOffset_];
+        }
+        return result;
+    }
+    
+    /**
+     * Returns the next token in this string tokenizer's string. First, 
+     * the set of characters considered to be delimiters by this 
+     * <tt>StringTokenizer</tt> object is changed to be the characters in 
+     * the string <tt>delim</tt>. Then the next token in the string
+     * after the current position is returned. The current position is 
+     * advanced beyond the recognized token.  The new delimiter set 
+     * remains the default after this call. 
+     * @param delim the new delimiters.
+     * @return the next token, after switching to the new delimiter set.
+     * @exception NoSuchElementException if there are no more tokens in 
+     *            this tokenizer's string.
+     * @stable ICU 2.4
+     */
+    public String nextToken(String delim) 
+    {
+        m_delimiters_ = EMPTY_DELIMITER_;
+        if (delim != null && delim.length() > 0) {
+            m_delimiters_ = new UnicodeSet();
+            m_delimiters_.addAll(delim);
+        }
+        return nextToken(m_delimiters_);
+    }
+    
+    /**
+     * Returns the next token in this string tokenizer's string. First, 
+     * the set of characters considered to be delimiters by this 
+     * <tt>StringTokenizer</tt> object is changed to be the characters in 
+     * the string <tt>delim</tt>. Then the next token in the string
+     * after the current position is returned. The current position is 
+     * advanced beyond the recognized token.  The new delimiter set 
+     * remains the default after this call. 
+     * @param delim the new delimiters.
+     * @return the next token, after switching to the new delimiter set.
+     * @exception NoSuchElementException if there are no more tokens in 
+     *            this tokenizer's string.
+     * @stable ICU 2.4
+     */
+    public String nextToken(UnicodeSet delim) 
+    {
+        m_delimiters_ = delim;
+        checkDelimiters();
+        m_tokenOffset_ = -1;
+        m_tokenSize_ = -1;
+        if (!m_returnDelimiters_) {
+            m_nextOffset_ = getNextNonDelimiter(m_nextOffset_);
+        }
+        return nextToken();
+    }
+    
+    /**
+     * Returns the same value as the <code>hasMoreTokens</code> method. 
+     * It exists so that this class can implement the 
+     * <code>Enumeration</code> interface. 
+     * @return <code>true</code> if there are more tokens;
+     *         <code>false</code> otherwise.
+     * @see #hasMoreTokens()
+     * @stable ICU 2.4
+     */
+    public boolean hasMoreElements() 
+    {
+        return hasMoreTokens();
+    }
+    
+    /**
+     * Returns the same value as the <code>nextToken</code> method, except 
+     * that its declared return value is <code>Object</code> rather than 
+     * <code>String</code>. It exists so that this class can implement the 
+     * <code>Enumeration</code> interface. 
+     * @return the next token in the string.
+     * @exception NoSuchElementException if there are no more tokens in 
+     *            this tokenizer's string.
+     * @see #nextToken()
+     * @stable ICU 2.4
+     */
+    public Object nextElement() 
+    {
+        return nextToken();
+    }
+    
+    /**
+     * Calculates the number of times that this tokenizer's 
+     * <code>nextToken</code> method can be called before it generates an 
+     * exception. The current position is not advanced.
+     * @return the number of tokens remaining in the string using the 
+     *         current delimiter set.
+     * @see #nextToken()
+     * @stable ICU 2.4
+     */
+    public int countTokens() 
+    {
+        int result = 0;
+        if (hasMoreTokens()) {
+            if (m_tokenOffset_ >= 0) {
+                return m_tokenSize_ - m_tokenOffset_;
+            }
+            if (m_tokenStart_ == null) {
+                m_tokenStart_ = new int[TOKEN_SIZE_];
+                m_tokenLimit_ = new int[TOKEN_SIZE_];
+            }
+            do {
+                if (m_tokenStart_.length == result) {
+                    int temptokenindex[] = m_tokenStart_;
+                    int temptokensize[] = m_tokenLimit_;
+                    int originalsize = temptokenindex.length;
+                    int newsize = originalsize + TOKEN_SIZE_;
+                    m_tokenStart_ = new int[newsize];
+                    m_tokenLimit_ = new int[newsize];
+                    System.arraycopy(temptokenindex, 0, m_tokenStart_, 0, 
+                                     originalsize);
+                    System.arraycopy(temptokensize, 0, m_tokenLimit_, 0, 
+                                     originalsize);
+                }
+                m_tokenStart_[result] = m_nextOffset_;
+                if (m_returnDelimiters_) {
+                    int c = UTF16.charAt(m_source_, m_nextOffset_);
+                    boolean contains = delims == null 
+                        ? m_delimiters_.contains(c) 
+                        : c < delims.length && delims[c];
+                    if (contains) {
+                        if (m_coalesceDelimiters_) {
+                            m_tokenLimit_[result] = getNextNonDelimiter(
+                                                                m_nextOffset_);
+                        } else {
+                            int p = m_nextOffset_ + 1;
+                            if (p == m_length_) {
+                                p = -1;
+                            }
+                            m_tokenLimit_[result] = p;
+
+                        }
+                    }
+                    else {
+                        m_tokenLimit_[result] = getNextDelimiter(m_nextOffset_);
+                    }
+                    m_nextOffset_ = m_tokenLimit_[result];
+                }
+                else {
+                    m_tokenLimit_[result] = getNextDelimiter(m_nextOffset_);
+                    m_nextOffset_ = getNextNonDelimiter(m_tokenLimit_[result]);
+                }
+                result ++;
+            } while (m_nextOffset_ >= 0);
+            m_tokenOffset_ = 0;
+            m_tokenSize_ = result;
+            m_nextOffset_ = m_tokenStart_[0];
+        }
+        return result;
+    }
+    
+    // private data members -------------------------------------------------
+    
+    /**
+     * Current offset to the token array. If the array token is not set up yet,
+     * this value is a -1
+     */
+    private int m_tokenOffset_;
+    /**
+     * Size of the token array. If the array token is not set up yet,
+     * this value is a -1
+     */
+    private int m_tokenSize_;
+    /**
+     * Array of pre-calculated tokens start indexes in source string terminated 
+     * by -1.
+     * This is only set up during countTokens() and only stores the remaining
+     * tokens, not all tokens including parsed ones
+     */
+    private int m_tokenStart_[];
+    /**
+     * Array of pre-calculated tokens limit indexes in source string.
+     * This is only set up during countTokens() and only stores the remaining
+     * tokens, not all tokens including parsed ones
+     */
+    private int m_tokenLimit_[];
+    /**
+     * UnicodeSet containing delimiters
+     */
+    private UnicodeSet m_delimiters_;
+    /**
+     * String to parse for tokens
+     */
+    private String m_source_;
+    /**
+     * Length of m_source_
+     */
+    private int m_length_;
+    /**
+     * Current position in string to parse for tokens
+     */
+    private int m_nextOffset_;
+    /**
+     * Flag indicator if delimiters are to be treated as tokens too
+     */
+    private boolean m_returnDelimiters_;
+
+    /**
+     * Flag indicating whether to coalesce runs of delimiters into single tokens
+     */
+    private boolean m_coalesceDelimiters_;
+
+    /**
+     * Default set of delimiters &#92;t&#92;n&#92;r&#92;f
+     */
+    private static final UnicodeSet DEFAULT_DELIMITERS_ 
+                                        = new UnicodeSet("[ \t\n\r\f]", false);
+    /**
+     * Array size increments
+     */
+    private static final int TOKEN_SIZE_ = 100;
+    /**
+     * A empty delimiter UnicodeSet, used when user specified null delimiters
+     */
+    private static final UnicodeSet EMPTY_DELIMITER_ = new UnicodeSet();
+    
+    // private methods ------------------------------------------------------
+    
+    /**
+     * Gets the index of the next delimiter after offset
+     * @param offset to the source string
+     * @return offset of the immediate next delimiter, otherwise 
+     *         (- source string length - 1) if there
+     *         are no more delimiters after m_nextOffset
+     */
+    private int getNextDelimiter(int offset)
+    {
+        if (offset >= 0) {
+            int result = offset; 
+            int c = 0;
+            if (delims == null) {
+                do {
+                    c = UTF16.charAt(m_source_, result);
+                    if (m_delimiters_.contains(c)) {
+                        break;
+                    }
+                    result ++;
+                } while (result < m_length_);
+            } else {
+                do {
+                    c = UTF16.charAt(m_source_, result);
+                    if (c < delims.length && delims[c]) {
+                        break;
+                    }
+                    result ++;
+                } while (result < m_length_);
+            }                
+            if (result < m_length_) {
+                return result;
+            }
+        }
+        return -1 - m_length_;
+    }
+    
+    /**
+     * Gets the index of the next non-delimiter after m_nextOffset_
+     * @param offset to the source string
+     * @return offset of the immediate next non-delimiter, otherwise 
+     *         (- source string length - 1) if there
+     *         are no more delimiters after m_nextOffset
+     */
+    private int getNextNonDelimiter(int offset)
+    {
+        if (offset >= 0) {
+            int result = offset; 
+            int c = 0;
+            if (delims == null) {
+                do {
+                    c = UTF16.charAt(m_source_, result);
+                    if (!m_delimiters_.contains(c)) {
+                        break;
+                    }
+                    result ++;
+                } while (result < m_length_);
+            } else {
+                do {
+                    c = UTF16.charAt(m_source_, result);
+                    if (!(c < delims.length && delims[c])) {
+                        break;
+                    }
+                    result ++;
+                } while (result < m_length_);
+            }
+            if (result < m_length_) {
+                return result;
+            }
+        }
+        return -1 - m_length_;
+    }
+
+    void checkDelimiters() {
+        if (m_delimiters_ == null || m_delimiters_.size() == 0) {
+            delims = new boolean[0];
+        } else {
+            int maxChar = m_delimiters_.getRangeEnd(m_delimiters_.getRangeCount()-1);
+            if (maxChar < 0x7f) {
+                delims = new boolean[maxChar+1];
+                for (int i = 0, ch; -1 != (ch = m_delimiters_.charAt(i)); ++i) {
+                    delims[ch] = true;
+                }
+            } else {
+                delims = null;
+            }
+        }
+    }
+    private boolean[] delims;
+}
diff --git a/src/com/ibm/icu/util/TaiwanCalendar.java b/src/com/ibm/icu/util/TaiwanCalendar.java
new file mode 100644
index 0000000..2fef659
--- /dev/null
+++ b/src/com/ibm/icu/util/TaiwanCalendar.java
@@ -0,0 +1,253 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.util.TimeZone;
+import java.util.Date;
+import java.util.Locale;
+
+/** 
+ * <code>TaiwanCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years since 1912. 
+ * <p>
+ * The Taiwan calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  Years are numbered since 1912 AD (Gregorian).
+ * <p>
+ * The Taiwan Calendar has one era: <code>MINGUO</code>.
+ * <p>
+ * This class should not be subclassed.</p>
+ * <p>
+ * TaiwanCalendar usually should be instantiated using 
+ * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code>
+ * with the tag <code>"@calendar=roc"</code>.</p>
+ * 
+ * @see com.ibm.icu.util.Calendar
+ * @see com.ibm.icu.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @author Alan Liu
+ * @author Steven R. Loomis
+ * @stable ICU 3.8
+ */
+public class TaiwanCalendar extends GregorianCalendar {
+    // jdk1.4.2 serialver
+    private static final long serialVersionUID = 2583005278132380631L;
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constant for the Taiwan Era for years before Minguo 1.
+     * Brefore Minuo 1 is Gregorian 1911, Before Minguo 2 is Gregorian 1910
+     * and so on.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     * @stable ICU 3.8
+     */
+    public static final int BEFORE_MINGUO = 0;
+
+    /**
+     * Constant for the Taiwan Era for Minguo.  Minguo 1 is 1912 in
+     * Gregorian calendar.
+     *
+     * @see com.ibm.icu.util.Calendar#ERA
+     * @stable ICU 3.8
+     */
+    public static final int MINGUO = 1;
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone the given time zone.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param locale the given ulocale.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(ULocale locale) {
+        super(locale);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     * @param locale the given ulocale.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(TimeZone zone, ULocale locale) {
+        super(zone, locale);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(Date date) {
+        this();
+        setTime(date);
+    }
+
+    /**
+     * Constructs a <code>TaiwanCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a TaiwanCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     * @stable ICU 3.8
+     */
+    public TaiwanCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // The only practical difference from a Gregorian calendar is that years
+    // are numbered since 1912, inclusive.  A couple of overrides will
+    // take care of that....
+    //-------------------------------------------------------------------------
+    
+    private static final int Taiwan_ERA_START = 1911; // 0=1911, 1=1912
+
+    // Use 1970 as the default value of EXTENDED_YEAR
+    private static final int GREGORIAN_EPOCH = 1970;
+
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */    
+    protected int handleGetExtendedYear() {
+        // EXTENDED_YEAR in TaiwanCalendar is a Gregorian year
+        // The default value of EXTENDED_YEAR is 1970 (Minguo 59)
+        int year = GREGORIAN_EPOCH;
+        if (newerField(EXTENDED_YEAR, YEAR) == EXTENDED_YEAR
+                && newerField(EXTENDED_YEAR, ERA) == EXTENDED_YEAR) {
+            year = internalGet(EXTENDED_YEAR, GREGORIAN_EPOCH);
+        } else {
+            int era = internalGet(ERA, MINGUO);
+            if (era == MINGUO) {
+                year = internalGet(YEAR, 1) + Taiwan_ERA_START;
+            } else {
+                year = 1 - internalGet(YEAR, 1) + Taiwan_ERA_START;
+            }
+        }
+        return year;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    protected void handleComputeFields(int julianDay) {
+        super.handleComputeFields(julianDay);
+        int y = internalGet(EXTENDED_YEAR) - Taiwan_ERA_START;
+        if (y > 0) {
+            internalSet(ERA, MINGUO);
+            internalSet(YEAR, y);
+        } else {
+            internalSet(ERA, BEFORE_MINGUO);
+            internalSet(YEAR, 1- y);
+        }
+    }
+
+    /**
+     * Override GregorianCalendar.  There is only one Taiwan ERA.  We
+     * should really handle YEAR, YEAR_WOY, and EXTENDED_YEAR here too to
+     * implement the 1..5000000 range, but it's not critical.
+     * @stable ICU 3.8
+     */
+    protected int handleGetLimit(int field, int limitType) {
+        if (field == ERA) {
+            if (limitType == MINIMUM || limitType == GREATEST_MINIMUM) {
+                return BEFORE_MINGUO;
+            } else {
+                return MINGUO;
+            }
+        }
+        return super.handleGetLimit(field, limitType);
+    }
+    
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "roc";
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java b/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
new file mode 100644
index 0000000..2660614
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
@@ -0,0 +1,182 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+import java.util.Arrays;
+import java.util.Date;
+
+/**
+ * <code>TimeArrayTimeZoneRule</code> represents a time zone rule whose start times are
+ * defined by an array of milliseconds since the standard base time.
+ * 
+ * @stable ICU 3.8
+ */
+public class TimeArrayTimeZoneRule extends TimeZoneRule {
+
+    private static final long serialVersionUID = -1117109130077415245L;
+
+    private final long[] startTimes;
+    private final int timeType;
+
+    /**
+     * Constructs a <code>TimeArrayTimeZoneRule</code> with the name, the GMT offset of its
+     * standard time, the amount of daylight saving offset adjustment and
+     * the array of times when this rule takes effect.
+     * 
+     * @param name          The time zone name.
+     * @param rawOffset     The UTC offset of its standard time in milliseconds.
+     * @param dstSavings    The amount of daylight saving offset adjustment in
+     *                      milliseconds.  If this ia a rule for standard time,
+     *                      the value of this argument is 0.
+     * @param startTimes    The start times in milliseconds since the base time
+     *                      (January 1, 1970, 00:00:00).
+     * @param timeType      The time type of the start times, which is one of
+     *                      <code>DataTimeRule.WALL_TIME</code>, <code>STANDARD_TIME</code>
+     *                      and <code>UTC_TIME</code>.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeArrayTimeZoneRule(String name, int rawOffset, int dstSavings, long[] startTimes, int timeType) {
+        super(name, rawOffset, dstSavings);
+        if (startTimes == null || startTimes.length == 0) {
+            throw new IllegalArgumentException("No start times are specified.");
+        } else {
+            this.startTimes = (long[])startTimes.clone();
+            Arrays.sort(this.startTimes);
+        }
+        this.timeType = timeType;
+    }
+
+    /**
+     * Gets the array of start times used by this rule.
+     * 
+     * @return  An array of the start times in milliseconds since the base time
+     *          (January 1, 1970, 00:00:00 GMT).
+     * @stable ICU 3.8
+     */
+    public long[] getStartTimes() {
+        return (long[])startTimes.clone();
+    }
+
+    /**
+     * Gets the time type of the start times used by this rule.  The return value
+     * is either <code>DateTimeRule.WALL_TIME</code> or <code>DateTimeRule.STANDARD_TIME</code>
+     * or <code>DateTimeRule.UTC_TIME</code>.
+     * 
+     * @return The time type used of the start times used by this rule.
+     * @stable ICU 3.8
+     */
+    public int getTimeType() {
+        return timeType;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getFirstStart(int prevRawOffset, int prevDSTSavings) {
+        return new Date(getUTC(startTimes[0], prevRawOffset, prevDSTSavings));
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getFinalStart(int prevRawOffset, int prevDSTSavings) {
+        return new Date(getUTC(startTimes[startTimes.length - 1], prevRawOffset, prevDSTSavings));
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getNextStart(long base, int prevOffset, int prevDSTSavings, boolean inclusive) {
+        int i = startTimes.length - 1;
+        for (; i >= 0; i--) {
+            long time = getUTC(startTimes[i], prevOffset, prevDSTSavings);
+            if (time < base || (!inclusive && time == base)) {
+                break;
+            }
+        }
+        if (i == startTimes.length - 1) {
+            return null;
+        }
+        return new Date(getUTC(startTimes[i + 1], prevOffset, prevDSTSavings));
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Date getPreviousStart(long base, int prevOffset, int prevDSTSavings, boolean inclusive) {
+        int i = startTimes.length - 1;
+        for (; i >= 0; i--) {
+            long time = getUTC(startTimes[i], prevOffset, prevDSTSavings);
+            if (time < base || (inclusive && time == base)) {
+                return new Date(time);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean isEquivalentTo(TimeZoneRule other) {
+        if (!(other instanceof TimeArrayTimeZoneRule)) {
+            return false;
+        }
+        if (timeType == ((TimeArrayTimeZoneRule)other).timeType
+                && Arrays.equals(startTimes, ((TimeArrayTimeZoneRule)other).startTimes)) {
+            return super.isEquivalentTo(other);
+        }
+        return false;
+    }
+
+    /**
+     * {@inheritDoc}<br><br>
+     * Note: This method in <code>TimeArrayTimeZoneRule</code> always returns true.
+     * @stable ICU 3.8
+     */
+    public boolean isTransitionRule() {
+        return true;
+    }
+
+    /* Get UTC of the time with the raw/dst offset */
+    private long getUTC(long time, int raw, int dst) {
+        if (timeType != DateTimeRule.UTC_TIME) {
+            time -= raw;
+        }
+        if (timeType == DateTimeRule.WALL_TIME) {
+            time -= dst;
+        }
+        return time;
+    }
+
+    /**
+     * Returns a <code>String</code> representation of this <code>TimeArrayTimeZoneRule</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * 
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append(super.toString());
+        buf.append(", timeType=");
+        buf.append(timeType);
+        buf.append(", startTimes=[");
+        for (int i = 0; i < startTimes.length; i++) {
+            if (i != 0) {
+                buf.append(", ");
+            }
+            buf.append(Long.toString(startTimes[i]));
+        }
+        buf.append("]");
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeUnit.java b/src/com/ibm/icu/util/TimeUnit.java
new file mode 100644
index 0000000..cbec7ea
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeUnit.java
@@ -0,0 +1,64 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+/**
+ * Measurement unit for time units.
+ * @see TimeUnitAmount
+ * @see TimeUnit
+ * @author markdavis
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+public class TimeUnit extends MeasureUnit {
+    /** 
+     * Supports selected time duration units
+     */
+    private String name;
+
+    private static TimeUnit[] values = new TimeUnit[7]; // adjust count if new items are added
+    private static int valueCount = 0;
+
+    /** 
+     * Constant value for supported time unit.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static TimeUnit
+    SECOND = new TimeUnit("second"),
+    MINUTE = new TimeUnit("minute"),
+    HOUR = new TimeUnit("hour"),
+    DAY = new TimeUnit("day"),
+    WEEK = new TimeUnit("week"),
+    MONTH = new TimeUnit("month"),
+    YEAR = new TimeUnit("year");
+
+    private TimeUnit(String name) {
+        this.name = name;
+        values[valueCount++] = this; // store in values array
+    }
+
+    /**
+     * @return the available values
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static TimeUnit[] values() {
+        return (TimeUnit[])values.clone();
+    }
+
+    /**
+     * A string representation for debugging.
+     * It is for debugging purpose. The value might change.
+     * Please do not count on the value.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toString() {
+        return name;
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeUnitAmount.java b/src/com/ibm/icu/util/TimeUnitAmount.java
new file mode 100644
index 0000000..54f53d7
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeUnitAmount.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008, Google, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+/**
+ * Express a duration as a time unit and number. Patterned after Currency.
+ * <p>Immutable.
+ * @see TimeUnitAmount
+ * @see com.ibm.icu.text.TimeUnitFormat
+ * @author markdavis
+ * @draft ICU 4.0
+ * @provisional This API might change or be removed in a future release.
+ */
+public class TimeUnitAmount extends Measure {
+
+    /**
+     * Create from a number and unit.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitAmount(Number number, TimeUnit unit) {
+        super(number, unit);
+    }
+
+    /**
+     * Create from a number and unit.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnitAmount(double number, TimeUnit unit) {
+        super(new Double(number), unit);
+    }
+
+    /**
+     * Get the unit (convenience to avoid cast).
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public TimeUnit getTimeUnit() {
+        return (TimeUnit) getUnit();
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeZone.java b/src/com/ibm/icu/util/TimeZone.java
new file mode 100644
index 0000000..f585bc9
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZone.java
@@ -0,0 +1,887 @@
+/*
+ * @(#)TimeZone.java    1.51 00/01/19
+ *
+ * Copyright (C) 1996-2008, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ */
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.Grego;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUConfig;
+import com.ibm.icu.impl.JavaTimeZone;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.impl.TimeZoneAdapter;
+import com.ibm.icu.impl.ZoneMeta;
+import com.ibm.icu.text.SimpleDateFormat;
+
+/**
+ * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
+ * savings.
+ *
+ * <p>
+ * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
+ * which creates a <code>TimeZone</code> based on the time zone where the program
+ * is running. For example, for a program running in Japan, <code>getDefault</code>
+ * creates a <code>TimeZone</code> object based on Japanese Standard Time.
+ *
+ * <p>
+ * You can also get a <code>TimeZone</code> using <code>getTimeZone</code>
+ * along with a time zone ID. For instance, the time zone ID for the
+ * U.S. Pacific Time zone is "America/Los_Angeles". So, you can get a
+ * U.S. Pacific Time <code>TimeZone</code> object with:
+ * <blockquote>
+ * <pre>
+ * TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+ * </pre>
+ * </blockquote>
+ * You can use <code>getAvailableIDs</code> method to iterate through
+ * all the supported time zone IDs. You can then choose a
+ * supported ID to get a <code>TimeZone</code>.
+ * If the time zone you want is not represented by one of the
+ * supported IDs, then you can create a custom time zone ID with
+ * the following syntax:
+ *
+ * <blockquote>
+ * <pre>
+ * GMT[+|-]hh[[:]mm]
+ * </pre>
+ * </blockquote>
+ *
+ * For example, you might specify GMT+14:00 as a custom
+ * time zone ID.  The <code>TimeZone</code> that is returned
+ * when you specify a custom time zone ID does not include
+ * daylight savings time.
+ * <p>
+ * For compatibility with JDK 1.1.x, some other three-letter time zone IDs
+ * (such as "PST", "CTT", "AST") are also supported. However, <strong>their
+ * use is deprecated</strong> because the same abbreviation is often used
+ * for multiple time zones (for example, "CST" could be U.S. "Central Standard
+ * Time" and "China Standard Time"), and the Java platform can then only
+ * recognize one of them.
+ *
+ * <p><strong>Note:</strong> Starting from ICU4J 4.0, you can optionally choose
+ * JDK <code>TimeZone</code> as the time zone implementation.  The TimeZone factory
+ * method <code>getTimeZone</code> creates an instance of ICU's own <code>TimeZone</code>
+ * subclass by default.  If you want to use the JDK implementation always, you can
+ * set the default time zone implementation type by the new method
+ * <code>setDefaultTimeZoneType</code>.  Alternatively, you can change the initial
+ * default implementation type by setting a property below.
+ * 
+ * <blockquote>
+ * <pre>
+ * #
+ * # The default TimeZone implementation type used by the ICU TimeZone
+ * # factory method. [ ICU | JDK ]
+ * #
+ * com.ibm.icu.util.TimeZone.DefaultTimeZoneType = ICU
+ * </pre>
+ * </blockquote>
+ *
+ * <p>This property is included in ICUConfig.properties in com.ibm.icu package.
+ * When <code>TimeZone</code> class is loaded, the intialization code checks
+ * if the property <code>com.ibm.icu.util.TimeZone.DefaultTimeZoneType=xxx</code>
+ * is defined by the system properties.  If not available, then it loads ICUConfig.properties
+ * to get the default time zone implementation type.  The property setting is
+ * only used for the initial default value and you can change the default type
+ * by <code>setDefaultTimeZoneType</code> at runtime.
+ *
+ * @see          Calendar
+ * @see          GregorianCalendar
+ * @see          SimpleTimeZone
+ * @author       Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu
+ * @stable ICU 2.0
+ */
+abstract public class TimeZone implements Serializable, Cloneable {
+    // using serialver from jdk1.4.2_05
+    private static final long serialVersionUID = -744942128318337471L;
+
+    /**
+     * Default constructor.  (For invocation by subclass constructors,
+     * typically implicit.)
+     * @stable ICU 2.8
+     */
+    public TimeZone() {
+    }
+
+    /**
+     * A time zone implementation type indicating ICU's own TimeZone used by
+     * <code>getTimeZone</code>, <code>setDefaultTimeZoneType</code>
+     * and <code>getDefaultTimeZoneType</code>.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int TIMEZONE_ICU = 0;
+    /**
+     * A time zone implementation type indicating JDK TimeZone used by
+     * <code>getTimeZone</code>, <code>setDefaultTimeZoneType</code>
+     * and <code>getDefaultTimeZoneType</code>.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int TIMEZONE_JDK = 1;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a short name, such as "PST."
+     * @see #LONG
+     * @stable ICU 2.0
+     */
+    public static final int SHORT = 0;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a long name, such as "Pacific Standard Time."
+     * @see #SHORT
+     * @stable ICU 2.0
+     */
+    public static final int LONG  = 1;
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+/*
+    private static final int SHORT_GENERIC = 2;
+*/
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    private static final int LONG_GENERIC = 3;
+
+    /**
+     * Cache to hold the SimpleDateFormat objects for a Locale.
+     */
+    private static ICUCache cachedLocaleData = new SimpleCache();
+
+    /**
+     * Gets the time zone offset, for current date, modified in case of
+     * daylight savings. This is the offset to add *to* UTC to get local time.
+     * @param era the era of the given date.
+     * @param year the year in the given date.
+     * @param month the month in the given date.
+     * Month is 0-based. e.g., 0 for January.
+     * @param day the day-in-month of the given date.
+     * @param dayOfWeek the day-of-week of the given date.
+     * @param milliseconds the millis in day in <em>standard</em> local time.
+     * @return the offset to add *to* GMT to get local time.
+     * @stable ICU 2.0
+     */
+    abstract public int getOffset(int era, int year, int month, int day,
+                                  int dayOfWeek, int milliseconds);
+
+
+    /**
+     * Returns the offset of this time zone from UTC at the specified
+     * date. If Daylight Saving Time is in effect at the specified
+     * date, the offset value is adjusted with the amount of daylight
+     * saving.
+     *
+     * @param date the date represented in milliseconds since January 1, 1970 00:00:00 GMT
+     * @return the amount of time in milliseconds to add to UTC to get local time.
+     *
+     * @see Calendar#ZONE_OFFSET
+     * @see Calendar#DST_OFFSET
+     * @see #getOffset(long, boolean, int[])
+     * @stable ICU 2.8
+     */
+    public int getOffset(long date) {
+        int[] result = new int[2];
+        getOffset(date, false, result);
+        return result[0]+result[1];
+    }
+
+    /**
+     * Returns the time zone raw and GMT offset for the given moment
+     * in time.  Upon return, local-millis = GMT-millis + rawOffset +
+     * dstOffset.  All computations are performed in the proleptic
+     * Gregorian calendar.  The default implementation in the TimeZone
+     * class delegates to the 8-argument getOffset().
+     *
+     * @param date moment in time for which to return offsets, in
+     * units of milliseconds from January 1, 1970 0:00 GMT, either GMT
+     * time or local wall time, depending on `local'.
+     * @param local if true, `date' is local wall time; otherwise it
+     * is in GMT time.
+     * @param offsets output parameter to receive the raw offset, that
+     * is, the offset not including DST adjustments, in offsets[0],
+     * and the DST offset, that is, the offset to be added to
+     * `rawOffset' to obtain the total offset between local and GMT
+     * time, in offsets[1]. If DST is not in effect, the DST offset is
+     * zero; otherwise it is a positive value, typically one hour.
+     *
+     * @stable ICU 2.8
+     */
+    public void getOffset(long date, boolean local, int[] offsets) {
+        offsets[0] = getRawOffset();
+        if (!local) {
+            date += offsets[0]; // now in local standard millis
+        }
+
+        // When local == true, date might not be in local standard
+        // millis.  getOffset taking 6 parameters used here assume
+        // the given time in day is local standard time.
+        // At STD->DST transition, there is a range of time which
+        // does not exist.  When 'date' is in this time range
+        // (and local == true), this method interprets the specified
+        // local time as DST.  At DST->STD transition, there is a
+        // range of time which occurs twice.  In this case, this
+        // method interprets the specified local time as STD.
+        // To support the behavior above, we need to call getOffset
+        // (with 6 args) twice when local == true and DST is
+        // detected in the initial call.
+        int fields[] = new int[6];
+        for (int pass = 0; ; pass++) {
+            Grego.timeToFields(date, fields);
+            offsets[1] = getOffset(GregorianCalendar.AD,
+                                    fields[0], fields[1], fields[2],
+                                    fields[3], fields[5]) - offsets[0];
+
+            if (pass != 0 || !local || offsets[1] == 0) {
+                break;
+            }
+            // adjust to local standard millis
+            date -= offsets[1];
+        }
+    }
+
+    /**
+     * Sets the base time zone offset to GMT.
+     * This is the offset to add *to* UTC to get local time.
+     * @param offsetMillis the given base time zone offset to GMT.
+     * @stable ICU 2.0
+     */
+    abstract public void setRawOffset(int offsetMillis);
+
+    /**
+     * Gets unmodified offset, NOT modified in case of daylight savings.
+     * This is the offset to add *to* UTC to get local time.
+     * @return the unmodified offset to add *to* UTC to get local time.
+     * @stable ICU 2.0
+     */
+    abstract public int getRawOffset();
+
+    /**
+     * Gets the ID of this time zone.
+     * @return the ID of this time zone.
+     * @stable ICU 2.0
+     */
+    public String getID() {
+        return ID;
+    }
+
+    /**
+     * Sets the time zone ID. This does not change any other data in
+     * the time zone object.
+     * @param ID the new time zone ID.
+     * @stable ICU 2.0
+     */
+    public void setID(String ID) {
+        if (ID == null) {
+            throw new NullPointerException();
+        }
+        this.ID = ID;
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * This method returns the long generic name.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @return the human-readable name of this time zone in the default locale.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName() {
+        return _getDisplayName(false, LONG_GENERIC, ULocale.getDefault());
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long generic name.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName(Locale locale) {
+        return _getDisplayName(false, LONG_GENERIC, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * This method returns the long name, not including daylight savings.
+     * If the display name is not available for the locale,
+     * a fallback based on the country, city, or time zone id will be used.
+     * @param locale the ulocale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default ulocale if the given ulocale is not recognized.
+     * @stable ICU 3.2
+     */
+    public final String getDisplayName(ULocale locale) {
+        return _getDisplayName(false, LONG_GENERIC, locale);
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the default locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @return the human-readable name of this time zone in the default locale.
+     * @stable ICU 2.0
+     */
+    public final String getDisplayName(boolean daylight, int style) {
+        return getDisplayName(daylight, style, ULocale.getDefault());
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @stable ICU 2.0
+     */
+    public String getDisplayName(boolean daylight, int style, Locale locale) {
+        return getDisplayName(daylight, style, ULocale.forLocale(locale));
+    }
+
+    /**
+     * Returns a name of this time zone suitable for presentation to the user
+     * in the specified locale.
+     * If the display name is not available for the locale,
+     * then this method returns a string in the format
+     * <code>GMT[+-]hh:mm</code>.
+     * @param daylight if true, return the daylight savings name.
+     * @param style either <code>LONG</code> or <code>SHORT</code>
+     * @param locale the locale in which to supply the display name.
+     * @return the human-readable name of this time zone in the given locale
+     * or in the default locale if the given locale is not recognized.
+     * @exception IllegalArgumentException style is invalid.
+     * @stable ICU 3.2
+     */
+    public String getDisplayName(boolean daylight, int style, ULocale locale) {
+        if (style != SHORT && style != LONG) {
+            throw new IllegalArgumentException("Illegal style: " + style);
+        }
+        return _getDisplayName(daylight, style, locale);
+    }
+
+    /**
+     * The public version of this API only accepts LONG/SHORT, the
+     * internal version (which this calls) also accepts LONG_GENERIC/SHORT_GENERIC.
+     */
+    private synchronized String _getDisplayName(boolean daylight, int style, ULocale locale) {
+        if (locale == null) {
+            throw new NullPointerException("locale is null");
+        }
+
+        /* NOTES:
+         * (1) We use SimpleDateFormat for simplicity; we could do this
+         * more efficiently but it would duplicate the SimpleDateFormat code
+         * here, which is undesirable.
+         * (2) Attempts to move the code from SimpleDateFormat to here also run
+         * around because this requires SimpleDateFormat to keep a Locale
+         * object around, which it currently doesn't; to synthesize such a
+         * locale upon resurrection; and to somehow handle the special case of
+         * construction from a DateFormatSymbols object.
+         */
+
+        // We keep a cache, indexed by locale.  The cache contains a
+        // SimpleDateFormat object, which we create on demand.
+        SimpleDateFormat format = (SimpleDateFormat)cachedLocaleData.get(locale);
+        if (format == null) {
+            format = new SimpleDateFormat(null, locale);
+            cachedLocaleData.put(locale, format);
+        }
+
+        String[] patterns = { "z", "zzzz", "v", "vvvv" };
+        format.applyPattern(patterns[style]);
+        format.setTimeZone(this);
+        Date d = new Date();
+        if (style >= 2) {
+            // Generic names may change time to time even for a single time zone.
+            // This method returns the one used for the zone now.
+            return format.format(d);
+        } else {
+            int[] offsets = new int[2];
+            getOffset(d.getTime(), false, offsets);
+            if ((daylight && offsets[1] != 0) || (!daylight && offsets[1] == 0)) {
+                return format.format(d);
+            }
+
+            // Create a new SimpleTimeZone as a stand-in for this zone; the stand-in
+            // will have no DST, or DST during July, but the same ID and offset,
+            // and hence the same display name.  We don't cache these because
+            // they're small and cheap to create.
+            SimpleTimeZone tz;
+            if (daylight && useDaylightTime()) {
+                // The display name for daylight saving time was requested, but currently not in DST
+
+                // Set a fixed date (July 1) in this Gregorian year
+                GregorianCalendar cal = new GregorianCalendar(this);
+                cal.set(Calendar.MONTH, Calendar.JULY);
+                cal.set(Calendar.DATE, 1);
+
+                // Get July 1 date
+                d = cal.getTime();
+
+                // Check if it is in DST
+                if (cal.get(Calendar.DST_OFFSET) == 0) {
+                    // We need to create a fake time zone
+                    tz = new SimpleTimeZone(offsets[0], getID(),
+                            Calendar.JUNE, 1, 0, 0,
+                            Calendar.AUGUST, 1, 0, 0,
+                            getDSTSavings());
+                    format.setTimeZone(tz);
+                }
+            } else {
+                // The display name for standard time was requested, but currently in DST
+                tz = new SimpleTimeZone(offsets[0], getID());
+                format.setTimeZone(tz);
+            }
+            return format.format(d);
+        }
+    }
+
+    /**
+     * Returns the amount of time to be added to local standard time
+     * to get local wall clock time.
+     * <p>
+     * The default implementation always returns 3600000 milliseconds
+     * (i.e., one hour) if this time zone observes Daylight Saving
+     * Time. Otherwise, 0 (zero) is returned.
+     * <p>
+     * If an underlying TimeZone implementation subclass supports
+     * historical Daylight Saving Time changes, this method returns
+     * the known latest daylight saving value.
+     *
+     * @return the amount of saving time in milliseconds
+     * @stable ICU 2.8
+     */
+    public int getDSTSavings() {
+        if (useDaylightTime()) {
+            return 3600000;
+        }
+        return 0;
+    }
+
+    /**
+     * Queries if this time zone uses daylight savings time.
+     * @return true if this time zone uses daylight savings time,
+     * false, otherwise.
+     * @stable ICU 2.0
+     */
+    abstract public boolean useDaylightTime();
+
+    /**
+     * Queries if the given date is in daylight savings time in
+     * this time zone.
+     * @param date the given Date.
+     * @return true if the given date is in daylight savings time,
+     * false, otherwise.
+     * @stable ICU 2.0
+     */
+    abstract public boolean inDaylightTime(Date date);
+
+    /**
+     * Gets the <code>TimeZone</code> for the given ID.
+     *
+     * @param ID the ID for a <code>TimeZone</code>, either an abbreviation
+     * such as "PST", a full name such as "America/Los_Angeles", or a custom
+     * ID such as "GMT-8:00". Note that the support of abbreviations is
+     * for JDK 1.1.x compatibility only and full names should be used.
+     *
+     * @return the specified <code>TimeZone</code>, or the GMT zone if the given ID
+     * cannot be understood.
+     * @stable ICU 2.0
+     */
+    public static synchronized TimeZone getTimeZone(String ID) {
+        return getTimeZone(ID, TZ_IMPL);
+    }
+
+    /**
+     * Gets the <code>TimeZone</code> for the given ID and the timezone type.
+     * @param ID the ID for a <code>TimeZone</code>, either an abbreviation
+     * such as "PST", a full name such as "America/Los_Angeles", or a custom
+     * ID such as "GMT-8:00". Note that the support of abbreviations is
+     * for JDK 1.1.x compatibility only and full names should be used.
+     * @param type Timezone type, either <code>TIMEZONE_ICU</code> or <code>TIMEZONE_JDK</code>.
+     * @return the specified <code>TimeZone</code>, or the GMT zone if the given ID
+     * cannot be understood.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static synchronized TimeZone getTimeZone(String ID, int type) {
+        TimeZone result;
+        if (type == TIMEZONE_JDK) {
+            result = new JavaTimeZone(ID);
+        } else {
+            /* We first try to lookup the zone ID in our system list.  If this
+             * fails, we try to parse it as a custom string GMT[+-]hh:mm.  If
+             * all else fails, we return GMT, which is probably not what the
+             * user wants, but at least is a functioning TimeZone object.
+             *
+             * We cannot return NULL, because that would break compatibility
+             * with the JDK.
+             */
+            if(ID==null){
+                throw new NullPointerException();
+            }
+            result = ZoneMeta.getSystemTimeZone(ID);
+
+            if (result == null) {
+                result = ZoneMeta.getCustomTimeZone(ID);
+            }
+            if (result == null) {
+                result = ZoneMeta.getGMT();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Sets the default timezone type used by <code>getTimeZone</code>.
+     * @param type Timezone type, either <code>TIMEZONE_ICU</code> or <code>TIMEZONE_JDK</code>.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static synchronized void setDefaultTimeZoneType(int type) {
+        if (type != TIMEZONE_ICU && type != TIMEZONE_JDK) {
+            throw new IllegalArgumentException("Invalid timezone type");
+        }
+        TZ_IMPL = type;
+    }
+
+    /**
+     * Returns the default timezone type currently used.
+     * @return The default timezone type, either <code>TIMEZONE_ICU</code> or <code>TIMEZONE_JDK</code>.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int getDefaultTimeZoneType() {
+        return TZ_IMPL;
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * with the given raw offset from GMT.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param rawOffset the offset in milliseconds from GMT
+     * @return an array of IDs for system TimeZones with the given
+     * raw offset.  If there are none, return a zero-length array.
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs(int rawOffset) {
+        return ZoneMeta.getAvailableIDs(rawOffset);
+
+    }
+
+
+    /**
+     * Return a new String array containing all system TimeZone IDs
+     * associated with the given country.  These IDs may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @param country a two-letter ISO 3166 country code, or <code>null</code>
+     * to return zones not associated with any country
+     * @return an array of IDs for system TimeZones in the given
+     * country.  If there are none, return a zero-length array.
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs(String country) {
+        return ZoneMeta.getAvailableIDs(country);
+    }
+
+    /**
+     * Return a new String array containing all system TimeZone IDs.
+     * These IDs (and only these IDs) may be passed to
+     * <code>get()</code> to construct the corresponding TimeZone
+     * object.
+     * @return an array of all system TimeZone IDs
+     * @stable ICU 2.0
+     */
+    public static String[] getAvailableIDs() {
+        return ZoneMeta.getAvailableIDs();
+    }
+    
+    /**
+     * Returns the number of IDs in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that have the same GMT offset and rules.
+     *
+     * <p>The returned count includes the given ID; it is always >= 1
+     * for valid IDs.  The given ID must be a system time zone.  If it
+     * is not, returns zero.
+     * @param id a system time zone ID
+     * @return the number of zones in the equivalency group containing
+     * 'id', or zero if 'id' is not a valid system ID
+     * @see #getEquivalentID
+     * @stable ICU 2.0
+     */
+    public static int countEquivalentIDs(String id) {
+        return ZoneMeta.countEquivalentIDs(id);
+    }
+
+    /**
+     * Returns an ID in the equivalency group that
+     * includes the given ID.  An equivalency group contains zones
+     * that have the same GMT offset and rules.
+     *
+     * <p>The given index must be in the range 0..n-1, where n is the
+     * value returned by <code>countEquivalentIDs(id)</code>.  For
+     * some value of 'index', the returned value will be equal to the
+     * given id.  If the given id is not a valid system time zone, or
+     * if 'index' is out of range, then returns an empty string.
+     * @param id a system time zone ID
+     * @param index a value from 0 to n-1, where n is the value
+     * returned by <code>countEquivalentIDs(id)</code>
+     * @return the ID of the index-th zone in the equivalency group
+     * containing 'id', or an empty string if 'id' is not a valid
+     * system ID or 'index' is out of range
+     * @see #countEquivalentIDs
+     * @stable ICU 2.0
+     */
+    public static String getEquivalentID(String id, int index) {
+        return ZoneMeta.getEquivalentID(id, index);
+    }
+
+    /**
+     * Gets the default <code>TimeZone</code> for this host.
+     * The source of the default <code>TimeZone</code> 
+     * may vary with implementation.
+     * @return a default <code>TimeZone</code>.
+     * @stable ICU 2.0
+     */
+    public static synchronized TimeZone getDefault() {
+        if (defaultZone == null) {
+            if (TZ_IMPL == TIMEZONE_JDK) {
+                defaultZone = new JavaTimeZone();
+            } else {
+                java.util.TimeZone temp = java.util.TimeZone.getDefault();
+                defaultZone = getTimeZone(temp.getID());
+            }
+        }
+        return (TimeZone) defaultZone.clone();
+    }
+
+    /**
+     * Sets the <code>TimeZone</code> that is
+     * returned by the <code>getDefault</code> method.  If <code>zone</code>
+     * is null, reset the default to the value it had originally when the
+     * VM first started.
+     * @param tz the new default time zone
+     * @stable ICU 2.0
+     */
+    public static synchronized void setDefault(TimeZone tz) {
+        defaultZone = tz;
+        java.util.TimeZone jdkZone = null;
+        if (defaultZone instanceof JavaTimeZone) {
+            jdkZone = ((JavaTimeZone)defaultZone).unwrap();
+        } else {
+            // Keep java.util.TimeZone default in sync so java.util.Date
+            // can interoperate with com.ibm.icu.util classes.
+
+            if (tz != null) {
+                if (tz instanceof com.ibm.icu.impl.OlsonTimeZone) {
+                    // Because of the lack of APIs supporting historic
+                    // zone offset/dst saving in JDK TimeZone,
+                    // wrapping ICU TimeZone with JDK TimeZone will
+                    // cause historic offset calculation in Calendar/Date.
+                    // JDK calendar implementation calls getRawOffset() and
+                    // getDSTSavings() when the instance of JDK TimeZone
+                    // is not an instance of JDK internal TimeZone subclass
+                    // (sun.util.calendar.ZoneInfo).  Ticket#6459
+                    String icuID = tz.getID();
+                    jdkZone = java.util.TimeZone.getTimeZone(icuID);
+                    if (!icuID.equals(jdkZone.getID())) {
+                        // JDK does not know the ID..
+                        jdkZone = null;
+                    }
+                }
+                if (jdkZone == null) {
+                    jdkZone = TimeZoneAdapter.wrap(tz);
+                }
+            }
+        }
+        java.util.TimeZone.setDefault(jdkZone);
+    }
+
+    /**
+     * Returns true if this zone has the same rule and offset as another zone.
+     * That is, if this zone differs only in ID, if at all.  Returns false
+     * if the other zone is null.
+     * @param other the <code>TimeZone</code> object to be compared with
+     * @return true if the other zone is not null and is the same as this one,
+     * with the possible exception of the ID
+     * @stable ICU 2.0
+     */
+    public boolean hasSameRules(TimeZone other) {
+        return other != null &&
+            getRawOffset() == other.getRawOffset() &&
+            useDaylightTime() == other.useDaylightTime();
+    }
+
+    /**
+     * Overrides Cloneable
+     * @stable ICU 2.0
+     */
+    public Object clone() {
+        try {
+            TimeZone other = (TimeZone) super.clone();
+            other.ID = ID;
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalStateException();
+        }
+    }
+
+    /**
+     * Return true if obj is a TimeZone with the same class and ID as this.
+     * @return true if obj is a TimeZone with the same class and ID as this
+     * @param obj the object to compare against
+     * @stable ICU 3.6
+     */
+    public boolean equals(Object obj){
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        return (ID.equals(((TimeZone)obj).ID));
+    }
+
+    /**
+     * Return the hash code.
+     * @return the hash code
+     * @stable ICU 3.6
+     */
+    public int hashCode(){
+        return ID.hashCode();
+    }
+
+    /**
+     * Returns the timezone data version currently used by ICU.
+     * 
+     * @return the version string, such as "2007f"
+     * @throws MissingResourceException if ICU timezone resource bundle
+     * is missing or the version information is not available.
+     * 
+     * @stable ICU 3.8
+     */
+    public static synchronized String getTZDataVersion() {
+        if (TZDATA_VERSION == null) {
+            UResourceBundle tzbundle = UResourceBundle.getBundleInstance(
+                    "com/ibm/icu/impl/data/icudt" + VersionInfo.ICU_DATA_VERSION, "zoneinfo");
+            TZDATA_VERSION = tzbundle.getString("TZVersion");
+        }
+        return TZDATA_VERSION;
+    }
+
+    /**
+     * Returns the canonical system timezone ID or the normalized
+     * custom time zone ID for the given time zone ID.
+     * @param id The input timezone ID to be canonicalized.
+     * @return The canonical system timezone ID or the custom timezone ID
+     * in normalized format for the given timezone ID.  When the given timezone ID
+     * is neither a known system time zone ID nor a valid custom timezone ID,
+     * null is returned.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String getCanonicalID(String id) {
+        return getCanonicalID(id, null);
+    }
+
+    /**
+     * Returns the canonical system timezone ID or the normalized
+     * custom time zone ID for the given time zone ID.
+     * @param id The input timezone ID to be canonicalized.
+     * @param isSystemID When non-null boolean array is specified and
+     * the given ID is a known system timezone ID, true is set to <code>isSystemID[0]</code>
+     * @return The canonical system timezone ID or the custom timezone ID
+     * in normalized format for the given timezone ID.  When the given timezone ID
+     * is neither a known system time zone ID nor a valid custom timezone ID,
+     * null is returned.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String getCanonicalID(String id, boolean[] isSystemID) {
+        String canonicalID = null;
+        boolean systemTzid = false;
+        if (id != null && id.length() != 0) {
+            canonicalID = ZoneMeta.getCanonicalSystemID(id);
+            if (canonicalID != null) {
+                systemTzid = true;
+            } else {
+                canonicalID = ZoneMeta.getCustomID(id);
+            }
+        }
+        if (isSystemID != null) {
+            isSystemID[0] = systemTzid;
+        }
+        return canonicalID;
+    }
+
+    // =======================privates===============================
+
+    /**
+     * The string identifier of this <code>TimeZone</code>.  This is a
+     * programmatic identifier used internally to look up <code>TimeZone</code>
+     * objects from the system table and also to map them to their localized
+     * display names.  <code>ID</code> values are unique in the system
+     * table but may not be for dynamically created zones.
+     * @serial
+     */
+    private String           ID;
+
+    /**
+     * The default time zone, or null if not set.
+     */
+    private static TimeZone  defaultZone = null;
+
+    /**
+     * The tzdata version
+     */
+    private static String TZDATA_VERSION = null;
+
+    /**
+     * TimeZone implementation type
+     */
+    private static int TZ_IMPL = TIMEZONE_ICU;
+
+    /**
+     * TimeZone implementation type initialization
+     */
+    private static final String TZIMPL_CONFIG_KEY = "com.ibm.icu.util.TimeZone.DefaultTimeZoneType";
+    private static final String TZIMPL_CONFIG_ICU = "ICU";
+    private static final String TZIMPL_CONFIG_JDK = "JDK";
+
+    static {
+        String type = ICUConfig.get(TZIMPL_CONFIG_KEY, TZIMPL_CONFIG_ICU);
+        if (type.equalsIgnoreCase(TZIMPL_CONFIG_JDK)) {
+            TZ_IMPL = TIMEZONE_JDK;
+        }
+    }
+}
+
+//eof
diff --git a/src/com/ibm/icu/util/TimeZoneRule.java b/src/com/ibm/icu/util/TimeZoneRule.java
new file mode 100644
index 0000000..8688a95
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZoneRule.java
@@ -0,0 +1,184 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <code>TimeZoneRule</code> is an abstract class representing a rule for time zone.
+ * <code>TimeZoneRule</code> has a set of time zone attributes, such as zone name,
+ * raw offset (UTC offset for standard time) and daylight saving time offset.
+ * 
+ * @see com.ibm.icu.util.TimeZoneTransition
+ * @see com.ibm.icu.util.RuleBasedTimeZone
+ * 
+ * @stable ICU 3.8
+ */
+public abstract class TimeZoneRule implements Serializable {
+
+    private static final long serialVersionUID = 6374143828553768100L;
+
+    private final String name;
+    private final int rawOffset;
+    private final int dstSavings;
+
+    /**
+     * Constructs a <code>TimeZoneRule</code> with the name, the GMT offset of its
+     * standard time and the amount of daylight saving offset adjustment.
+     * 
+     * @param name          The time zone name.
+     * @param rawOffset     The UTC offset of its standard time in milliseconds.
+     * @param dstSavings    The amount of daylight saving offset adjustment in milliseconds.
+     *                      If this is a rule for standard time, the value of this argument is 0.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule(String name, int rawOffset, int dstSavings) {
+        this.name = name;
+        this.rawOffset = rawOffset;
+        this.dstSavings = dstSavings;
+    }
+
+    /**
+     * Gets the name of this time zone.
+     * 
+     * @return The name of this time zone.
+     * 
+     * @stable ICU 3.8
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Gets the standard time offset.
+     * 
+     * @return The standard time offset from UTC in milliseconds.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getRawOffset() {
+        return rawOffset;
+    }
+
+    /**
+     * Gets the amount of daylight saving delta time from the standard time.
+     * 
+     * @return  The amount of daylight saving offset used by this rule
+     *          in milliseconds.
+     * 
+     * @stable ICU 3.8
+     */
+    public int getDSTSavings() {
+        return dstSavings;
+    }
+
+    /**
+     * Returns if this rule represents the same rule and offsets as another.
+     * When two <code>TimeZoneRule</code> objects differ only its names, this method returns
+     * true.
+     *
+     * @param other The <code>TimeZoneRule</code> object to be compared with.
+     * @return true if the other <code>TimeZoneRule</code> is the same as this one.
+     * 
+     * @stable ICU 3.8
+     */
+    public boolean isEquivalentTo(TimeZoneRule other) {
+        if (rawOffset == other.rawOffset && dstSavings == other.dstSavings) {
+            return true;
+        }
+        return false;
+    }
+ 
+    /**
+     * Gets the very first time when this rule takes effect.
+     * 
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time. 
+     * 
+     * @return  The very first time when this rule takes effect.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract Date getFirstStart(int prevRawOffset, int prevDSTSavings);
+
+    /**
+     * Gets the final time when this rule takes effect.
+     * 
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time. 
+     * 
+     * @return  The very last time when this rule takes effect,
+     *          or null if this rule is applied for future dates infinitely.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract Date getFinalStart(int prevRawOffset, int prevDSTSavings);
+
+    /**
+     * Gets the first time when this rule takes effect after the specified time.
+     * 
+     * @param base              The first time after this time is returned.
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time. 
+     * @param inclusive         Whether the base time is inclusive or not.
+     * 
+     * @return  The first time when this rule takes effect after the specified time,
+     *          or null when this rule never takes effect after the specified time.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract Date getNextStart(long base, int prevRawOffset, int prevDSTSavings, boolean inclusive);
+
+    /**
+     * Gets the most recent time when this rule takes effect before the specified time.
+     * 
+     * @param base              The most recent time when this rule takes effect before
+     *                          this time is returned.
+     * @param prevRawOffset     The standard time offset from UTC before this rule
+     *                          takes effect in milliseconds.
+     * @param prevDSTSavings    The amount of daylight saving offset from the
+     *                          standard time. 
+     * @param inclusive         Whether the base time is inclusive or not.
+     * 
+     * @return  The most recent time when this rule takes effect before the specified time,
+     *          or null when this rule never takes effect before the specified time.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract Date getPreviousStart(long base, int prevRawOffset, int prevDSTSavings, boolean inclusive);
+
+    /**
+     * Returns if this <code>TimeZoneRule</code> has one or more start times.
+     * 
+     * @return true if this <TimeZoneRule</code> has one or more start times.
+     * 
+     * @stable ICU 3.8
+     */
+    public abstract boolean isTransitionRule();
+
+    /**
+     * Returns a <code>String</code> representation of this <code>TimeZoneRule</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append("name=" + name);
+        buf.append(", stdOffset=" + rawOffset);
+        buf.append(", dstSaving=" + dstSavings);
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/TimeZoneTransition.java b/src/com/ibm/icu/util/TimeZoneTransition.java
new file mode 100644
index 0000000..1a7f304
--- /dev/null
+++ b/src/com/ibm/icu/util/TimeZoneTransition.java
@@ -0,0 +1,83 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+/**
+ * <code>TimeZoneTransition</code> is a class representing a time zone transition.
+ * An instance has a time of transition and rules for both before and
+ * after the transition.
+ * 
+ * @stable ICU 3.8
+ */
+public class TimeZoneTransition {
+    private final TimeZoneRule from;
+    private final TimeZoneRule to;
+    private final long time;
+
+    /**
+     * Constructs a <code>TimeZoneTransition</code> with the time and the rules before/after
+     * the transition.
+     * 
+     * @param time  The time of transition in milliseconds since the base time.
+     * @param from  The time zone rule used before the transition.
+     * @param to    The time zone rule used after the transition.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition(long time, TimeZoneRule from, TimeZoneRule to) {
+        this.time = time;
+        this.from = from;
+        this.to = to;
+    }
+
+    /**
+     * Returns the time of transition in milliseconds since the base time.
+     * 
+     * @return The time of the transition in milliseconds since the base time.
+     * 
+     * @stable ICU 3.8
+     */
+    public long getTime() {
+        return time;
+    }
+
+    /**
+     * Returns the rule used after the transition.
+     * 
+     * @return The time zone rule used after the transition.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule getTo() {
+        return to;
+    }
+
+    /**
+     * Returns the rule used before the transition.
+     * 
+     * @return The time zone rule used after the transition.
+     * 
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule getFrom() {
+        return from;
+    }
+
+    /**
+     * Returns a <code>String</code> representation of this <code>TimeZoneTransition</code> object.
+     * This method is used for debugging purpose only.  The string representation can be changed
+     * in future version of ICU without any notice.
+     * 
+     * @stable ICU 3.8
+     */
+    public String toString() {
+        StringBuffer buf = new StringBuffer();
+        buf.append("time=" + time);
+        buf.append(", from={" + from + "}");
+        buf.append(", to={" + to + "}");
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/ULocale.java b/src/com/ibm/icu/util/ULocale.java
new file mode 100644
index 0000000..d174f3d
--- /dev/null
+++ b/src/com/ibm/icu/util/ULocale.java
@@ -0,0 +1,3742 @@
+/*
+******************************************************************************
+* Copyright (C) 2003-2009, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.TreeMap;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.SimpleCache;
+
+/**
+ * A class analogous to {@link java.util.Locale} that provides additional
+ * support for ICU protocol.  In ICU 3.0 this class is enhanced to support
+ * RFC 3066 language identifiers.
+ *
+ * <p>Many classes and services in ICU follow a factory idiom, in
+ * which a factory method or object responds to a client request with
+ * an object.  The request includes a locale (the <i>requested</i>
+ * locale), and the returned object is constructed using data for that
+ * locale.  The system may lack data for the requested locale, in
+ * which case the locale fallback mechanism will be invoked until a
+ * populated locale is found (the <i>valid</i> locale).  Furthermore,
+ * even when a populated locale is found (the <i>valid</i> locale),
+ * further fallback may be required to reach a locale containing the
+ * specific data required by the service (the <i>actual</i> locale).
+ *
+ * <p>ULocale performs <b>'normalization'</b> and <b>'canonicalization'</b> of locale ids.
+ * Normalization 'cleans up' ICU locale ids as follows:
+ * <ul>
+ * <li>language, script, country, variant, and keywords are properly cased<br>
+ * (lower, title, upper, upper, and lower case respectively)</li>
+ * <li>hyphens used as separators are converted to underscores</li>
+ * <li>three-letter language and country ids are converted to two-letter
+ * equivalents where available</li>
+ * <li>surrounding spaces are removed from keywords and values</li>
+ * <li>if there are multiple keywords, they are put in sorted order</li>
+ * </ul>
+ * Canonicalization additionally performs the following:
+ * <ul>
+ * <li>POSIX ids are converted to ICU format IDs</li>
+ * <li>'grandfathered' 3066 ids are converted to ICU standard form</li>
+ * <li>'PREEURO' and 'EURO' variants are converted to currency keyword form, with the currency
+ * id appropriate to the country of the locale (for PREEURO) or EUR (for EURO).
+ * </ul>
+ * All ULocale constructors automatically normalize the locale id.  To handle
+ * POSIX ids, <code>canonicalize</code> can be called to convert the id
+ * to canonical form, or the <code>canonicalInstance</code> factory method
+ * can be called.</p>
+ *
+ * <p>This class provides selectors {@link #VALID_LOCALE} and {@link
+ * #ACTUAL_LOCALE} intended for use in methods named
+ * <tt>getLocale()</tt>.  These methods exist in several ICU classes,
+ * including {@link com.ibm.icu.util.Calendar}, {@link
+ * com.ibm.icu.util.Currency}, {@link com.ibm.icu.text.UFormat},
+ * {@link com.ibm.icu.text.BreakIterator}, {@link
+ * com.ibm.icu.text.Collator}, {@link
+ * com.ibm.icu.text.DateFormatSymbols}, and {@link
+ * com.ibm.icu.text.DecimalFormatSymbols} and their subclasses, if
+ * any.  Once an object of one of these classes has been created,
+ * <tt>getLocale()</tt> may be called on it to determine the valid and
+ * actual locale arrived at during the object's construction.
+ *
+ * <p>Note: The <tt>getLocale()</tt> method will be implemented in ICU
+ * 3.0; ICU 2.8 contains a partial preview implementation.  The
+ * <i>actual</i> locale is returned correctly, but the <i>valid</i>
+ * locale is not, in most cases.
+ *
+ * @see java.util.Locale
+ * @author weiv
+ * @author Alan Liu
+ * @author Ram Viswanadha
+ * @stable ICU 2.8 
+ */
+public final class ULocale implements Serializable {
+    // using serialver from jdk1.4.2_05
+    private static final long serialVersionUID = 3715177670352309217L;
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ENGLISH = new ULocale("en", Locale.ENGLISH);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale FRENCH = new ULocale("fr", Locale.FRENCH);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale GERMAN = new ULocale("de", Locale.GERMAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ITALIAN = new ULocale("it", Locale.ITALIAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale JAPANESE = new ULocale("ja", Locale.JAPANESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale KOREAN = new ULocale("ko", Locale.KOREAN);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CHINESE = new ULocale("zh", Locale.CHINESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale SIMPLIFIED_CHINESE = new ULocale("zh_Hans", Locale.CHINESE);
+
+    /** 
+     * Useful constant for language.
+     * @stable ICU 3.0
+     */
+    public static final ULocale TRADITIONAL_CHINESE = new ULocale("zh_Hant", Locale.CHINESE);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale FRANCE = new ULocale("fr_FR", Locale.FRANCE);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale GERMANY = new ULocale("de_DE", Locale.GERMANY);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale ITALY = new ULocale("it_IT", Locale.ITALY);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale JAPAN = new ULocale("ja_JP", Locale.JAPAN);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale KOREA = new ULocale("ko_KR", Locale.KOREA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CHINA = new ULocale("zh_Hans_CN", Locale.CHINA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale PRC = CHINA;
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale TAIWAN = new ULocale("zh_Hant_TW", Locale.TAIWAN);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale UK = new ULocale("en_GB", Locale.UK);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale US = new ULocale("en_US", Locale.US);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CANADA = new ULocale("en_CA", Locale.CANADA);
+
+    /** 
+     * Useful constant for country/region.
+     * @stable ICU 3.0
+     */
+    public static final ULocale CANADA_FRENCH = new ULocale("fr_CA", Locale.CANADA_FRENCH);
+
+    /**
+     * Handy constant.
+     */
+    private static final String EMPTY_STRING = "";
+
+    // Used in both ULocale and IDParser, so moved up here.
+    private static final char UNDERSCORE            = '_';
+
+    // default empty locale
+    private static final Locale EMPTY_LOCALE = new Locale("", "");
+
+    /**
+     * The root ULocale.
+     * @stable ICU 2.8
+     */ 
+    public static final ULocale ROOT = new ULocale("root", EMPTY_LOCALE);
+    
+    private static final SimpleCache CACHE = new SimpleCache();
+
+    /**
+     * Cache the locale.
+     */
+    private transient Locale locale;
+
+    /**
+     * The raw localeID that we were passed in.
+     */
+    private String localeID;
+
+    /**
+     * Tables used in normalizing portions of the id.
+     */
+    /* tables updated per http://lcweb.loc.gov/standards/iso639-2/ 
+       to include the revisions up to 2001/7/27 *CWB*/
+    /* The 3 character codes are the terminology codes like RFC 3066.  
+       This is compatible with prior ICU codes */
+    /* "in" "iw" "ji" "jw" & "sh" have been withdrawn but are still in 
+       the table but now at the end of the table because 
+       3 character codes are duplicates.  This avoids bad searches
+       going from 3 to 2 character codes.*/
+    /* The range qaa-qtz is reserved for local use. */
+
+    private static String[] _languages;
+    private static String[] _replacementLanguages;
+    private static String[] _obsoleteLanguages;
+    private static String[] _languages3;
+    private static String[] _obsoleteLanguages3;
+
+    // Avoid initializing languages tables unless we have to.
+    private static void initLanguageTables() {
+        if (_languages == null) {
+
+            /* This list MUST be in sorted order, and MUST contain the two-letter codes
+               if one exists otherwise use the three letter code */
+            String[] tempLanguages = {
+                "aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "af",  "afa",
+                "afh", "ak",  "akk", "ale", "alg", "am",  "an",  "ang", "apa",
+                "ar",  "arc", "arn", "arp", "art", "arw", "as",  "ast",
+                "ath", "aus", "av",  "awa", "ay",  "az",  "ba",  "bad",
+                "bai", "bal", "ban", "bas", "bat", "be",  "bej",
+                "bem", "ber", "bg",  "bh",  "bho", "bi",  "bik", "bin",
+                "bla", "bm",  "bn",  "bnt", "bo",  "br",  "bra", "bs",
+                "btk", "bua", "bug", "byn", "ca",  "cad", "cai", "car", "cau",
+                "ce",  "ceb", "cel", "ch",  "chb", "chg", "chk", "chm",
+                "chn", "cho", "chp", "chr", "chy", "cmc", "co",  "cop",
+                "cpe", "cpf", "cpp", "cr",  "crh", "crp", "cs",  "csb", "cu",  "cus",
+                "cv",  "cy",  "da",  "dak", "dar", "day", "de",  "del", "den",
+                "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv",  "dyu",
+                "dz",  "ee",  "efi", "egy", "eka", "el",  "elx", "en",
+                "enm", "eo",  "es",  "et",  "eu",  "ewo", "fa",
+                "fan", "fat", "ff",  "fi",  "fiu", "fj",  "fo",  "fon",
+                "fr",  "frm", "fro", "fur", "fy",  "ga",  "gaa", "gay",
+                "gba", "gd",  "gem", "gez", "gil", "gl",  "gmh", "gn",
+                "goh", "gon", "gor", "got", "grb", "grc", "gu",  "gv",
+                "gwi", "ha",  "hai", "haw", "he",  "hi",  "hil", "him",
+                "hit", "hmn", "ho",  "hr",  "hsb", "ht",  "hu",  "hup", "hy",  "hz",
+                "ia",  "iba", "id",  "ie",  "ig",  "ii",  "ijo", "ik",
+                "ilo", "inc", "ine", "inh", "io",  "ira", "iro", "is",  "it",
+                "iu",  "ja",  "jbo", "jpr", "jrb", "jv",  "ka",  "kaa", "kab",
+                "kac", "kam", "kar", "kaw", "kbd", "kg",  "kha", "khi",
+                "kho", "ki",  "kj",  "kk",  "kl",  "km",  "kmb", "kn",
+                "ko",  "kok", "kos", "kpe", "kr",  "krc", "kro", "kru", "ks",
+                "ku",  "kum", "kut", "kv",  "kw",  "ky",  "la",  "lad",
+                "lah", "lam", "lb",  "lez", "lg",  "li",  "ln",  "lo",  "lol",
+                "loz", "lt",  "lu",  "lua", "lui", "lun", "luo", "lus",
+                "lv",  "mad", "mag", "mai", "mak", "man", "map", "mas",
+                "mdf", "mdr", "men", "mg",  "mga", "mh",  "mi",  "mic", "min",
+                "mis", "mk",  "mkh", "ml",  "mn",  "mnc", "mni", "mno",
+                "mo",  "moh", "mos", "mr",  "ms",  "mt",  "mul", "mun",
+                "mus", "mwr", "my",  "myn", "myv", "na",  "nah", "nai", "nap",
+                "nb",  "nd",  "nds", "ne",  "new", "ng",  "nia", "nic",
+                "niu", "nl",  "nn",  "no",  "nog", "non", "nr",  "nso", "nub",
+                "nv",  "nwc", "ny",  "nym", "nyn", "nyo", "nzi", "oc",  "oj",
+                "om",  "or",  "os",  "osa", "ota", "oto", "pa",  "paa",
+                "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",
+                "pi",  "pl",  "pon", "pra", "pro", "ps",  "pt",  "qu",
+                "raj", "rap", "rar", "rm",  "rn",  "ro",  "roa", "rom",
+                "ru",  "rup", "rw",  "sa",  "sad", "sah", "sai", "sal", "sam",
+                "sas", "sat", "sc",  "sco", "sd",  "se",  "sel", "sem",
+                "sg",  "sga", "sgn", "shn", "si",  "sid", "sio", "sit",
+                "sk",  "sl",  "sla", "sm",  "sma", "smi", "smj", "smn",
+                "sms", "sn",  "snk", "so",  "sog", "son", "sq",  "sr",
+                "srr", "ss",  "ssa", "st",  "su",  "suk", "sus", "sux",
+                "sv",  "sw",  "syr", "ta",  "tai", "te",  "tem", "ter",
+                "tet", "tg",  "th",  "ti",  "tig", "tiv", "tk",  "tkl",
+                "tl",  "tlh", "tli", "tmh", "tn",  "to",  "tog", "tpi", "tr",
+                "ts",  "tsi", "tt",  "tum", "tup", "tut", "tvl", "tw",
+                "ty",  "tyv", "udm", "ug",  "uga", "uk",  "umb", "und", "ur",
+                "uz",  "vai", "ve",  "vi",  "vo",  "vot", "wa",  "wak",
+                "wal", "war", "was", "wen", "wo",  "xal", "xh",  "yao", "yap",
+                "yi",  "yo",  "ypk", "za",  "zap", "zen", "zh",  "znd",
+                "zu",  "zun", 
+            };
+
+            String[] tempReplacementLanguages = {
+                "id", "he", "yi", "jv", "sr", "nb",/* replacement language codes */
+            };
+
+            String[] tempObsoleteLanguages = {
+                "in", "iw", "ji", "jw", "sh", "no",    /* obsolete language codes */         
+            };
+
+            /* This list MUST contain a three-letter code for every two-letter code in the
+               list above, and they MUST ne in the same order (i.e., the same language must
+               be in the same place in both lists)! */
+            String[] tempLanguages3 = {
+                /*"aa",  "ab",  "ace", "ach", "ada", "ady", "ae",  "af",  "afa",    */
+                "aar", "abk", "ace", "ach", "ada", "ady", "ave", "afr", "afa",
+                /*"afh", "ak",  "akk", "ale", "alg", "am",  "an",  "ang", "apa",    */
+                "afh", "aka", "akk", "ale", "alg", "amh", "arg", "ang", "apa",
+                /*"ar",  "arc", "arn", "arp", "art", "arw", "as",  "ast",    */
+                "ara", "arc", "arn", "arp", "art", "arw", "asm", "ast",
+                /*"ath", "aus", "av",  "awa", "ay",  "az",  "ba",  "bad",    */
+                "ath", "aus", "ava", "awa", "aym", "aze", "bak", "bad",
+                /*"bai", "bal", "ban", "bas", "bat", "be",  "bej",    */
+                "bai", "bal", "ban", "bas", "bat", "bel", "bej",
+                /*"bem", "ber", "bg",  "bh",  "bho", "bi",  "bik", "bin",    */
+                "bem", "ber", "bul", "bih", "bho", "bis", "bik", "bin",
+                /*"bla", "bm",  "bn",  "bnt", "bo",  "br",  "bra", "bs",     */
+                "bla", "bam",  "ben", "bnt", "bod", "bre", "bra", "bos",
+                /*"btk", "bua", "bug", "byn", "ca",  "cad", "cai", "car", "cau",    */
+                "btk", "bua", "bug", "byn", "cat", "cad", "cai", "car", "cau",
+                /*"ce",  "ceb", "cel", "ch",  "chb", "chg", "chk", "chm",    */
+                "che", "ceb", "cel", "cha", "chb", "chg", "chk", "chm",
+                /*"chn", "cho", "chp", "chr", "chy", "cmc", "co",  "cop",    */
+                "chn", "cho", "chp", "chr", "chy", "cmc", "cos", "cop",
+                /*"cpe", "cpf", "cpp", "cr",  "crh", "crp", "cs",  "csb", "cu",  "cus",    */
+                "cpe", "cpf", "cpp", "cre", "crh", "crp", "ces", "csb", "chu", "cus",
+                /*"cv",  "cy",  "da",  "dak", "dar", "day", "de",  "del", "den",    */
+                "chv", "cym", "dan", "dak", "dar", "day", "deu", "del", "den",
+                /*"dgr", "din", "doi", "dra", "dsb", "dua", "dum", "dv",  "dyu",    */
+                "dgr", "din", "doi", "dra", "dsb", "dua", "dum", "div", "dyu",
+                /*"dz",  "ee",  "efi", "egy", "eka", "el",  "elx", "en",     */
+                "dzo", "ewe", "efi", "egy", "eka", "ell", "elx", "eng",
+                /*"enm", "eo",  "es",  "et",  "eu",  "ewo", "fa",     */
+                "enm", "epo", "spa", "est", "eus", "ewo", "fas",
+                /*"fan", "fat", "ff",  "fi",  "fiu", "fj",  "fo",  "fon",    */
+                "fan", "fat", "ful", "fin", "fiu", "fij", "fao", "fon",
+                /*"fr",  "frm", "fro", "fur", "fy",  "ga",  "gaa", "gay",    */
+                "fra", "frm", "fro", "fur", "fry", "gle", "gaa", "gay",
+                /*"gba", "gd",  "gem", "gez", "gil", "gl",  "gmh", "gn",     */
+                "gba", "gla", "gem", "gez", "gil", "glg", "gmh", "grn",
+                /*"goh", "gon", "gor", "got", "grb", "grc", "gu",  "gv",     */
+                "goh", "gon", "gor", "got", "grb", "grc", "guj", "glv",
+                /*"gwi", "ha",  "hai", "haw", "he",  "hi",  "hil", "him",    */
+                "gwi", "hau", "hai", "haw", "heb", "hin", "hil", "him",
+                /*"hit", "hmn", "ho",  "hr",  "hsb", "ht",  "hu",  "hup", "hy",  "hz",     */
+                "hit", "hmn", "hmo", "hrv", "hsb", "hat", "hun", "hup", "hye", "her",
+                /*"ia",  "iba", "id",  "ie",  "ig",  "ii",  "ijo", "ik",     */
+                "ina", "iba", "ind", "ile", "ibo", "iii", "ijo", "ipk",
+                /*"ilo", "inc", "ine", "inh", "io",  "ira", "iro", "is",  "it",      */
+                "ilo", "inc", "ine", "inh", "ido", "ira", "iro", "isl", "ita",
+                /*"iu",  "ja",  "jbo", "jpr", "jrb", "jv",  "ka",  "kaa", "kab",   */
+                "iku", "jpn", "jbo", "jpr", "jrb", "jaw", "kat", "kaa", "kab",
+                /*"kac", "kam", "kar", "kaw", "kbd", "kg",  "kha", "khi",    */
+                "kac", "kam", "kar", "kaw", "kbd", "kon", "kha", "khi",
+                /*"kho", "ki",  "kj",  "kk",  "kl",  "km",  "kmb", "kn",     */
+                "kho", "kik", "kua", "kaz", "kal", "khm", "kmb", "kan",
+                /*"ko",  "kok", "kos", "kpe", "kr",  "krc", "kro", "kru", "ks",     */
+                "kor", "kok", "kos", "kpe", "kau", "krc", "kro", "kru", "kas",
+                /*"ku",  "kum", "kut", "kv",  "kw",  "ky",  "la",  "lad",    */
+                "kur", "kum", "kut", "kom", "cor", "kir", "lat", "lad",
+                /*"lah", "lam", "lb",  "lez", "lg",  "li",  "ln",  "lo",  "lol",    */
+                "lah", "lam", "ltz", "lez", "lug", "lim", "lin", "lao", "lol",
+                /*"loz", "lt",  "lu",  "lua", "lui", "lun", "luo", "lus",    */
+                "loz", "lit", "lub", "lua", "lui", "lun", "luo", "lus",
+                /*"lv",  "mad", "mag", "mai", "mak", "man", "map", "mas",    */
+                "lav", "mad", "mag", "mai", "mak", "man", "map", "mas",
+                /*"mdf", "mdr", "men", "mg",  "mga", "mh",  "mi",  "mic", "min",    */
+                "mdf", "mdr", "men", "mlg", "mga", "mah", "mri", "mic", "min",
+                /*"mis", "mk",  "mkh", "ml",  "mn",  "mnc", "mni", "mno",    */
+                "mis", "mkd", "mkh", "mal", "mon", "mnc", "mni", "mno",
+                /*"mo",  "moh", "mos", "mr",  "ms",  "mt",  "mul", "mun",    */
+                "mol", "moh", "mos", "mar", "msa", "mlt", "mul", "mun",
+                /*"mus", "mwr", "my",  "myn", "myv", "na",  "nah", "nai", "nap",    */
+                "mus", "mwr", "mya", "myn", "myv", "nau", "nah", "nai", "nap",
+                /*"nb",  "nd",  "nds", "ne",  "new", "ng",  "nia", "nic",    */
+                "nob", "nde", "nds", "nep", "new", "ndo", "nia", "nic",
+                /*"niu", "nl",  "nn",  "no",  "nog", "non", "nr",  "nso", "nub",    */
+                "niu", "nld", "nno", "nor", "nog", "non", "nbl", "nso", "nub",
+                /*"nv",  "nwc", "ny",  "nym", "nyn", "nyo", "nzi", "oc",  "oj",     */
+                "nav", "nwc", "nya", "nym", "nyn", "nyo", "nzi", "oci", "oji",
+                /*"om",  "or",  "os",  "osa", "ota", "oto", "pa",  "paa",    */
+                "orm", "ori", "oss", "osa", "ota", "oto", "pan", "paa",
+                /*"pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",    */
+                "pag", "pal", "pam", "pap", "pau", "peo", "phi", "phn",
+                /*"pi",  "pl",  "pon", "pra", "pro", "ps",  "pt",  "qu",     */
+                "pli", "pol", "pon", "pra", "pro", "pus", "por", "que",
+                /*"raj", "rap", "rar", "rm",  "rn",  "ro",  "roa", "rom",    */
+                "raj", "rap", "rar", "roh", "run", "ron", "roa", "rom",
+                /*"ru",  "rup", "rw",  "sa",  "sad", "sah", "sai", "sal", "sam",    */
+                "rus", "rup", "kin", "san", "sad", "sah", "sai", "sal", "sam",
+                /*"sas", "sat", "sc",  "sco", "sd",  "se",  "sel", "sem",    */
+                "sas", "sat", "srd", "sco", "snd", "sme", "sel", "sem",
+                /*"sg",  "sga", "sgn", "shn", "si",  "sid", "sio", "sit",    */
+                "sag", "sga", "sgn", "shn", "sin", "sid", "sio", "sit",
+                /*"sk",  "sl",  "sla", "sm",  "sma", "smi", "smj", "smn",    */
+                "slk", "slv", "sla", "smo", "sma", "smi", "smj", "smn",
+                /*"sms", "sn",  "snk", "so",  "sog", "son", "sq",  "sr",     */
+                "sms", "sna", "snk", "som", "sog", "son", "sqi", "srp",
+                /*"srr", "ss",  "ssa", "st",  "su",  "suk", "sus", "sux",    */
+                "srr", "ssw", "ssa", "sot", "sun", "suk", "sus", "sux",
+                /*"sv",  "sw",  "syr", "ta",  "tai", "te",  "tem", "ter",    */
+                "swe", "swa", "syr", "tam", "tai", "tel", "tem", "ter",
+                /*"tet", "tg",  "th",  "ti",  "tig", "tiv", "tk",  "tkl",    */
+                "tet", "tgk", "tha", "tir", "tig", "tiv", "tuk", "tkl",
+                /*"tl",  "tlh", "tli", "tmh", "tn",  "to",  "tog", "tpi", "tr",     */
+                "tgl", "tlh", "tli", "tmh", "tsn", "ton", "tog", "tpi", "tur",
+                /*"ts",  "tsi", "tt",  "tum", "tup", "tut", "tvl", "tw",     */
+                "tso", "tsi", "tat", "tum", "tup", "tut", "tvl", "twi",
+                /*"ty",  "tyv", "udm", "ug",  "uga", "uk",  "umb", "und", "ur",     */
+                "tah", "tyv", "udm", "uig", "uga", "ukr", "umb", "und", "urd",
+                /*"uz",  "vai", "ve",  "vi",  "vo",  "vot", "wa",  "wak",    */
+                "uzb", "vai", "ven", "vie", "vol", "vot", "wln", "wak",
+                /*"wal", "war", "was", "wen", "wo",  "xal", "xh",  "yao", "yap",    */
+                "wal", "war", "was", "wen", "wol", "xal", "xho", "yao", "yap",
+                /*"yi",  "yo",  "ypk", "za",  "zap", "zen", "zh",  "znd",    */
+                "yid", "yor", "ypk", "zha", "zap", "zen", "zho", "znd",
+                /*"zu",  "zun",                                              */
+                "zul", "zun",  
+            };
+    
+            String[] tempObsoleteLanguages3 = {
+                /* "in",  "iw",  "ji",  "jw",  "sh", */
+                "ind", "heb", "yid", "jaw", "srp", 
+            };
+
+            synchronized (ULocale.class) {
+                if (_languages == null) {
+                    _languages = tempLanguages;
+                    _replacementLanguages = tempReplacementLanguages;
+                    _obsoleteLanguages = tempObsoleteLanguages;
+                    _languages3 = tempLanguages3;
+                    _obsoleteLanguages3 = tempObsoleteLanguages3;
+                }
+            }
+        }
+    }
+
+    private static String[] _countries;
+    private static String[] _deprecatedCountries;
+    private static String[] _replacementCountries;
+    private static String[] _obsoleteCountries;
+    private static String[] _countries3;
+    private static String[] _obsoleteCountries3;  
+
+    // Avoid initializing country tables unless we have to.
+    private static void initCountryTables() {    
+        if (_countries == null) {
+            /* ZR(ZAR) is now CD(COD) and FX(FXX) is PS(PSE) as per
+               http://www.evertype.com/standards/iso3166/iso3166-1-en.html 
+               added new codes keeping the old ones for compatibility
+               updated to include 1999/12/03 revisions *CWB*/
+    
+            /* RO(ROM) is now RO(ROU) according to 
+               http://www.iso.org/iso/en/prods-services/iso3166ma/03updates-on-iso-3166/nlv3e-rou.html
+            */
+    
+            /* This list MUST be in sorted order, and MUST contain only two-letter codes! */
+            String[] tempCountries = {
+                "AD",  "AE",  "AF",  "AG",  "AI",  "AL",  "AM",  "AN",
+                "AO",  "AQ",  "AR",  "AS",  "AT",  "AU",  "AW",  "AX",  "AZ",
+                "BA",  "BB",  "BD",  "BE",  "BF",  "BG",  "BH",  "BI",
+                "BJ",  "BL",  "BM",  "BN",  "BO",  "BR",  "BS",  "BT",  "BV",
+                "BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",
+                "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",
+                "CU",  "CV",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",
+                "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",
+                "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",
+                "GA",  "GB",  "GD",  "GE",  "GF",  "GG",  "GH",  "GI",  "GL",
+                "GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",
+                "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",
+                "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS",
+                "IT",  "JE",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",
+                "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",
+                "LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",
+                "LV",  "LY",  "MA",  "MC",  "MD",  "ME",  "MF",  "MG",  "MH",  "MK",
+                "ML",  "MM",  "MN",  "MO",  "MP",  "MQ",  "MR",  "MS",
+                "MT",  "MU",  "MV",  "MW",  "MX",  "MY",  "MZ",  "NA",
+                "NC",  "NE",  "NF",  "NG",  "NI",  "NL",  "NO",  "NP",
+                "NR",  "NU",  "NZ",  "OM",  "PA",  "PE",  "PF",  "PG",
+                "PH",  "PK",  "PL",  "PM",  "PN",  "PR",  "PS",  "PT",
+                "PW",  "PY",  "QA",  "RE",  "RO",  "RS",  "RU",  "RW",  "SA",
+                "SB",  "SC",  "SD",  "SE",  "SG",  "SH",  "SI",  "SJ",
+                "SK",  "SL",  "SM",  "SN",  "SO",  "SR",  "ST",  "SV",
+                "SY",  "SZ",  "TC",  "TD",  "TF",  "TG",  "TH",  "TJ",
+                "TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",
+                "TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",
+                "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",
+                "WS",  "YE",  "YT",  "ZA",  "ZM",  "ZW",
+            };
+
+            /* this table is used for 3 letter codes */
+            String[] tempObsoleteCountries = {
+                "FX",  "CS",  "RO",  "TP",  "YU",  "ZR",  /* obsolete country codes */      
+            };
+            
+            String[] tempDeprecatedCountries = {
+               "BU", "CS", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" /* deprecated country list */
+            };
+            String[] tempReplacementCountries = {
+           /*  "BU", "CS", "DY", "FX", "HV", "NH", "RH", "TP", "YU", "ZR" */
+               "MM", "RS", "BJ", "FR", "BF", "VU", "ZW", "TL", "RS", "CD",   /* replacement country codes */      
+            };
+    
+            /* This list MUST contain a three-letter code for every two-letter code in
+               the above list, and they MUST be listed in the same order! */
+            String[] tempCountries3 = {
+                /*  "AD",  "AE",  "AF",  "AG",  "AI",  "AL",  "AM",  "AN",     */
+                    "AND", "ARE", "AFG", "ATG", "AIA", "ALB", "ARM", "ANT",
+                /*  "AO",  "AQ",  "AR",  "AS",  "AT",  "AU",  "AW",  "AX",  "AZ",     */
+                    "AGO", "ATA", "ARG", "ASM", "AUT", "AUS", "ABW", "ALA", "AZE",
+                /*  "BA",  "BB",  "BD",  "BE",  "BF",  "BG",  "BH",  "BI",     */
+                    "BIH", "BRB", "BGD", "BEL", "BFA", "BGR", "BHR", "BDI",
+                /*  "BJ",  "BL",  "BM",  "BN",  "BO",  "BR",  "BS",  "BT",  "BV",     */
+                    "BEN", "BLM", "BMU", "BRN", "BOL", "BRA", "BHS", "BTN", "BVT",
+                /*  "BW",  "BY",  "BZ",  "CA",  "CC",  "CD",  "CF",  "CG",     */
+                    "BWA", "BLR", "BLZ", "CAN", "CCK", "COD", "CAF", "COG",
+                /*  "CH",  "CI",  "CK",  "CL",  "CM",  "CN",  "CO",  "CR",     */
+                    "CHE", "CIV", "COK", "CHL", "CMR", "CHN", "COL", "CRI",
+                /*  "CU",  "CV",  "CX",  "CY",  "CZ",  "DE",  "DJ",  "DK",     */
+                    "CUB", "CPV", "CXR", "CYP", "CZE", "DEU", "DJI", "DNK",
+                /*  "DM",  "DO",  "DZ",  "EC",  "EE",  "EG",  "EH",  "ER",     */
+                    "DMA", "DOM", "DZA", "ECU", "EST", "EGY", "ESH", "ERI",
+                /*  "ES",  "ET",  "FI",  "FJ",  "FK",  "FM",  "FO",  "FR",     */
+                    "ESP", "ETH", "FIN", "FJI", "FLK", "FSM", "FRO", "FRA",
+                /*  "GA",  "GB",  "GD",  "GE",  "GF",  "GG",  "GH",  "GI",  "GL",     */
+                    "GAB", "GBR", "GRD", "GEO", "GUF", "GGY", "GHA", "GIB", "GRL",
+                /*  "GM",  "GN",  "GP",  "GQ",  "GR",  "GS",  "GT",  "GU",     */
+                    "GMB", "GIN", "GLP", "GNQ", "GRC", "SGS", "GTM", "GUM",
+                /*  "GW",  "GY",  "HK",  "HM",  "HN",  "HR",  "HT",  "HU",     */
+                    "GNB", "GUY", "HKG", "HMD", "HND", "HRV", "HTI", "HUN",
+                /*  "ID",  "IE",  "IL",  "IM",  "IN",  "IO",  "IQ",  "IR",  "IS" */
+                    "IDN", "IRL", "ISR", "IMN", "IND", "IOT", "IRQ", "IRN", "ISL",
+                /*  "IT",  "JE",  "JM",  "JO",  "JP",  "KE",  "KG",  "KH",  "KI",     */
+                    "ITA", "JEY", "JAM", "JOR", "JPN", "KEN", "KGZ", "KHM", "KIR",
+                /*  "KM",  "KN",  "KP",  "KR",  "KW",  "KY",  "KZ",  "LA",     */
+                    "COM", "KNA", "PRK", "KOR", "KWT", "CYM", "KAZ", "LAO",
+                /*  "LB",  "LC",  "LI",  "LK",  "LR",  "LS",  "LT",  "LU",     */
+                    "LBN", "LCA", "LIE", "LKA", "LBR", "LSO", "LTU", "LUX",
+                /*  "LV",  "LY",  "MA",  "MC",  "MD",  "ME",  "MF",  "MG",  "MH",  "MK",     */
+                    "LVA", "LBY", "MAR", "MCO", "MDA", "MNE", "MAF", "MDG", "MHL", "MKD",
+                /*  "ML",  "MM",  "MN",  "MO",  "MP",  "MQ",  "MR",  "MS",     */
+                    "MLI", "MMR", "MNG", "MAC", "MNP", "MTQ", "MRT", "MSR",
+                /*  "MT",  "MU",  "MV",  "MW",  "MX",  "MY",  "MZ",  "NA",     */
+                    "MLT", "MUS", "MDV", "MWI", "MEX", "MYS", "MOZ", "NAM",
+                /*  "NC",  "NE",  "NF",  "NG",  "NI",  "NL",  "NO",  "NP",     */
+                    "NCL", "NER", "NFK", "NGA", "NIC", "NLD", "NOR", "NPL",
+                /*  "NR",  "NU",  "NZ",  "OM",  "PA",  "PE",  "PF",  "PG",     */
+                    "NRU", "NIU", "NZL", "OMN", "PAN", "PER", "PYF", "PNG",
+                /*  "PH",  "PK",  "PL",  "PM",  "PN",  "PR",  "PS",  "PT",     */
+                    "PHL", "PAK", "POL", "SPM", "PCN", "PRI", "PSE", "PRT",
+                /*  "PW",  "PY",  "QA",  "RE",  "RO",  "RS",  "RU",  "RW",  "SA",     */
+                    "PLW", "PRY", "QAT", "REU", "ROU", "SRB", "RUS", "RWA", "SAU",
+                /*  "SB",  "SC",  "SD",  "SE",  "SG",  "SH",  "SI",  "SJ",     */
+                    "SLB", "SYC", "SDN", "SWE", "SGP", "SHN", "SVN", "SJM",
+                /*  "SK",  "SL",  "SM",  "SN",  "SO",  "SR",  "ST",  "SV",     */
+                    "SVK", "SLE", "SMR", "SEN", "SOM", "SUR", "STP", "SLV",
+                /*  "SY",  "SZ",  "TC",  "TD",  "TF",  "TG",  "TH",  "TJ",     */
+                    "SYR", "SWZ", "TCA", "TCD", "ATF", "TGO", "THA", "TJK",
+                /*  "TK",  "TL",  "TM",  "TN",  "TO",  "TR",  "TT",  "TV",     */
+                    "TKL", "TLS", "TKM", "TUN", "TON", "TUR", "TTO", "TUV",
+                /*  "TW",  "TZ",  "UA",  "UG",  "UM",  "US",  "UY",  "UZ",     */
+                    "TWN", "TZA", "UKR", "UGA", "UMI", "USA", "URY", "UZB",
+                /*  "VA",  "VC",  "VE",  "VG",  "VI",  "VN",  "VU",  "WF",     */
+                    "VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF",
+                /*  "WS",  "YE",  "YT",  "ZA",  "ZM",  "ZW"          */
+                    "WSM", "YEM", "MYT", "ZAF", "ZMB", "ZWE",
+            };
+    
+            String[] tempObsoleteCountries3 = {
+                /*"FX",  "CS",  "RO",  "TP",  "YU",  "ZR",   */
+                "FXX", "SCG", "ROM", "TMP", "YUG", "ZAR",    
+            };
+
+            synchronized (ULocale.class) {
+                if (_countries == null) {
+                    _countries = tempCountries;
+                    _deprecatedCountries = tempDeprecatedCountries;
+                    _replacementCountries = tempReplacementCountries;
+                    _obsoleteCountries = tempObsoleteCountries;
+                    _countries3 = tempCountries3;
+                    _obsoleteCountries3 = tempObsoleteCountries3;
+                }
+            }
+        }
+    }
+
+    private static String[][] CANONICALIZE_MAP;
+    private static String[][] variantsToKeywords;
+
+    private static void initCANONICALIZE_MAP() {
+        if (CANONICALIZE_MAP == null) {
+            /**
+             * This table lists pairs of locale ids for canonicalization.  The
+             * The 1st item is the normalized id. The 2nd item is the
+             * canonicalized id. The 3rd is the keyword. The 4th is the keyword value.
+             */
+            String[][] tempCANONICALIZE_MAP = {
+//              { EMPTY_STRING,     "en_US_POSIX", null, null }, /* .NET name */
+                { "C",              "en_US_POSIX", null, null }, /* POSIX name */
+                { "art_LOJBAN",     "jbo", null, null }, /* registered name */
+                { "az_AZ_CYRL",     "az_Cyrl_AZ", null, null }, /* .NET name */
+                { "az_AZ_LATN",     "az_Latn_AZ", null, null }, /* .NET name */
+                { "ca_ES_PREEURO",  "ca_ES", "currency", "ESP" },
+                { "cel_GAULISH",    "cel__GAULISH", null, null }, /* registered name */
+                { "de_1901",        "de__1901", null, null }, /* registered name */
+                { "de_1906",        "de__1906", null, null }, /* registered name */
+                { "de__PHONEBOOK",  "de", "collation", "phonebook" }, /* Old ICU name */
+                { "de_AT_PREEURO",  "de_AT", "currency", "ATS" },
+                { "de_DE_PREEURO",  "de_DE", "currency", "DEM" },
+                { "de_LU_PREEURO",  "de_LU", "currency", "EUR" },
+                { "el_GR_PREEURO",  "el_GR", "currency", "GRD" },
+                { "en_BOONT",       "en__BOONT", null, null }, /* registered name */
+                { "en_SCOUSE",      "en__SCOUSE", null, null }, /* registered name */
+                { "en_BE_PREEURO",  "en_BE", "currency", "BEF" },
+                { "en_IE_PREEURO",  "en_IE", "currency", "IEP" },
+                { "es__TRADITIONAL", "es", "collation", "traditional" }, /* Old ICU name */
+                { "es_ES_PREEURO",  "es_ES", "currency", "ESP" },
+                { "eu_ES_PREEURO",  "eu_ES", "currency", "ESP" },
+                { "fi_FI_PREEURO",  "fi_FI", "currency", "FIM" },
+                { "fr_BE_PREEURO",  "fr_BE", "currency", "BEF" },
+                { "fr_FR_PREEURO",  "fr_FR", "currency", "FRF" },
+                { "fr_LU_PREEURO",  "fr_LU", "currency", "LUF" },
+                { "ga_IE_PREEURO",  "ga_IE", "currency", "IEP" },
+                { "gl_ES_PREEURO",  "gl_ES", "currency", "ESP" },
+                { "hi__DIRECT",     "hi", "collation", "direct" }, /* Old ICU name */
+                { "it_IT_PREEURO",  "it_IT", "currency", "ITL" },
+                { "ja_JP_TRADITIONAL", "ja_JP", "calendar", "japanese" },
+//              { "nb_NO_NY",       "nn_NO", null, null },
+                { "nl_BE_PREEURO",  "nl_BE", "currency", "BEF" },
+                { "nl_NL_PREEURO",  "nl_NL", "currency", "NLG" },
+                { "pt_PT_PREEURO",  "pt_PT", "currency", "PTE" },
+                { "sl_ROZAJ",       "sl__ROZAJ", null, null }, /* registered name */
+                { "sr_SP_CYRL",     "sr_Cyrl_RS", null, null }, /* .NET name */
+                { "sr_SP_LATN",     "sr_Latn_RS", null, null }, /* .NET name */
+                { "sr_YU_CYRILLIC", "sr_Cyrl_RS", null, null }, /* Linux name */
+                { "th_TH_TRADITIONAL", "th_TH", "calendar", "buddhist" }, /* Old ICU name */
+                { "uz_UZ_CYRILLIC", "uz_Cyrl_UZ", null, null }, /* Linux name */
+                { "uz_UZ_CYRL",     "uz_Cyrl_UZ", null, null }, /* .NET name */
+                { "uz_UZ_LATN",     "uz_Latn_UZ", null, null }, /* .NET name */
+                { "zh_CHS",         "zh_Hans", null, null }, /* .NET name */
+                { "zh_CHT",         "zh_Hant", null, null }, /* .NET name */
+                { "zh_GAN",         "zh__GAN", null, null }, /* registered name */
+                { "zh_GUOYU",       "zh", null, null }, /* registered name */
+                { "zh_HAKKA",       "zh__HAKKA", null, null }, /* registered name */
+                { "zh_MIN",         "zh__MIN", null, null }, /* registered name */
+                { "zh_MIN_NAN",     "zh__MINNAN", null, null }, /* registered name */
+                { "zh_WUU",         "zh__WUU", null, null }, /* registered name */
+                { "zh_XIANG",       "zh__XIANG", null, null }, /* registered name */
+                { "zh_YUE",         "zh__YUE", null, null } /* registered name */
+            };
+    
+            synchronized (ULocale.class) {
+                if (CANONICALIZE_MAP == null) {
+                    CANONICALIZE_MAP = tempCANONICALIZE_MAP;
+                }
+            }
+        }
+        if (variantsToKeywords == null) {
+            /**
+             * This table lists pairs of locale ids for canonicalization.  The
+             * The first item is the normalized variant id.
+             */
+            String[][] tempVariantsToKeywords = {
+                    { "EURO",   "currency", "EUR" },
+                    { "PINYIN", "collation", "pinyin" }, /* Solaris variant */
+                    { "STROKE", "collation", "stroke" }  /* Solaris variant */
+            };
+    
+            synchronized (ULocale.class) {
+                if (variantsToKeywords == null) {
+                    variantsToKeywords = tempVariantsToKeywords;
+                }
+            }
+        }
+    }
+
+    /*
+     * This table is used for mapping between ICU and special Java
+     * locales.  When an ICU locale matches <minumum base> with
+     * <keyword>/<value>, the ICU locale is mapped to <Java> locale.
+     * For example, both ja_JP@calendar=japanese and ja@calendar=japanese
+     * are mapped to Java locale "ja_JP_JP".  ICU locale "nn" is mapped
+     * to Java locale "no_NO_NY".
+     */
+    private static final String[][] _javaLocaleMap = {
+    //  { <Java>,       <ICU base>, <keyword>,  <value>,    <minimum base>
+        { "ja_JP_JP",   "ja_JP",    "calendar", "japanese", "ja"},
+        { "no_NO_NY",   "nn_NO",    null,       null,       "nn"},
+    //  { "th_TH_TH",   "th_TH",    ??,         ??,         "th"} //TODO
+    };
+
+    /**
+     * Private constructor used by static initializers.
+     */
+    private ULocale(String localeID, Locale locale) {
+        this.localeID = localeID;
+        this.locale = locale;
+    }
+
+    /**
+     * Construct a ULocale object from a {@link java.util.Locale}.
+     * @param loc a JDK locale
+     * @stable ICU 2.8
+     * @internal
+     */
+    private ULocale(Locale loc) {
+        this.localeID = getName(forLocale(loc).toString());
+        this.locale = loc;
+    }
+
+    /**
+     * Return a ULocale object for a {@link java.util.Locale}.
+     * The ULocale is canonicalized.
+     * @param loc a JDK locale
+     * @stable ICU 3.2
+     */
+    public static ULocale forLocale(Locale loc) {
+        if (loc == null) {
+            return null;
+        }
+        ULocale result = (ULocale)CACHE.get(loc);
+        if (result == null) {
+            if (defaultULocale != null && loc == defaultULocale.locale) {
+            result = defaultULocale;
+        } else {
+                String locStr = loc.toString();
+                if (locStr.length() == 0) {
+                    result = ROOT;
+                } else {
+                    for (int i = 0; i < _javaLocaleMap.length; i++) {
+                        if (_javaLocaleMap[i][0].equals(locStr)) {
+                            IDParser p = new IDParser(_javaLocaleMap[i][1]);
+                            p.setKeywordValue(_javaLocaleMap[i][2], _javaLocaleMap[i][3]);
+                            locStr = p.getName();
+                            break;
+                        }
+                    }
+                    result = new ULocale(locStr, loc);
+                }
+            }
+            CACHE.put(loc, result);
+        }
+        return result;
+    }
+
+    /**
+     * Construct a ULocale from a RFC 3066 locale ID. The locale ID consists
+     * of optional language, script, country, and variant fields in that order, 
+     * separated by underscores, followed by an optional keyword list.  The
+     * script, if present, is four characters long-- this distinguishes it
+     * from a country code, which is two characters long.  Other fields
+     * are distinguished by position as indicated by the underscores.  The
+     * start of the keyword list is indicated by '@', and consists of two
+     * or more keyword/value pairs separated by semicolons(';').
+     * <p>
+     * This constructor does not canonicalize the localeID.  So, for
+     * example, "zh__pinyin" remains unchanged instead of converting
+     * to "zh@collation=pinyin".  By default ICU only recognizes the
+     * latter as specifying pinyin collation.  Use {@link #createCanonical}
+     * or {@link #canonicalize} if you need to canonicalize the localeID.
+     * 
+     * @param localeID string representation of the locale, e.g:
+     * "en_US", "sy_Cyrl_YU", "zh__pinyin", "es_ES@currency=EUR;collation=traditional"
+     * @stable ICU 2.8
+     */ 
+    public ULocale(String localeID) {
+        this.localeID = getName(localeID);
+    }
+
+    /**
+     * Convenience overload of ULocale(String, String, String) for 
+     * compatibility with java.util.Locale.
+     * @see #ULocale(String, String, String)
+     * @stable ICU 3.4
+     */
+    public ULocale(String a, String b) {
+        this(a, b, null);
+    }
+
+    /**
+     * Construct a ULocale from a localeID constructed from the three 'fields' a, b, and c.  These
+     * fields are concatenated using underscores to form a localeID of
+     * the form a_b_c, which is then handled like the localeID passed
+     * to <code>ULocale(String localeID)</code>.  
+     *
+     * <p>Java locale strings consisting of language, country, and
+     * variant will be handled by this form, since the country code
+     * (being shorter than four letters long) will not be interpreted
+     * as a script code.  If a script code is present, the final
+     * argument ('c') will be interpreted as the country code.  It is
+     * recommended that this constructor only be used to ease porting,
+     * and that clients instead use the single-argument constructor
+     * when constructing a ULocale from a localeID.
+     * @param a first component of the locale id
+     * @param b second component of the locale id
+     * @param c third component of the locale id
+     * @see #ULocale(String)
+     * @stable ICU 3.0 
+     */
+    public ULocale(String a, String b, String c) {
+        localeID = getName(lscvToID(a, b, c, EMPTY_STRING));
+    }
+
+    /**
+     * Create a ULocale from the id by first canonicalizing the id.
+     * @param nonCanonicalID the locale id to canonicalize
+     * @return the locale created from the canonical version of the ID.
+     * @stable ICU 3.0
+     */
+    public static ULocale createCanonical(String nonCanonicalID) {
+        return new ULocale(canonicalize(nonCanonicalID), (Locale)null);
+    }
+
+    private static String lscvToID(String lang, String script, String country, String variant) {
+        StringBuffer buf = new StringBuffer();
+     
+        if (lang != null && lang.length() > 0) {
+            buf.append(lang);
+        }
+        if (script != null && script.length() > 0) {
+            buf.append(UNDERSCORE);
+            buf.append(script);
+        }
+        if (country != null && country.length() > 0) {
+            buf.append(UNDERSCORE);
+            buf.append(country);
+        }
+        if (variant != null && variant.length() > 0) {
+            if (country == null || country.length() == 0) {
+                buf.append(UNDERSCORE);
+            }
+            buf.append(UNDERSCORE);
+            buf.append(variant);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Convert this ULocale object to a {@link java.util.Locale}.
+     * @return a JDK locale that either exactly represents this object
+     * or is the closest approximation.
+     * @stable ICU 2.8
+     */
+    public Locale toLocale() {
+        if (locale == null) {
+            IDParser p = new IDParser(localeID);
+            String base = p.getBaseName();
+            for (int i = 0; i < _javaLocaleMap.length; i++) {
+                if (base.equals(_javaLocaleMap[i][1]) || base.equals(_javaLocaleMap[i][4])) {
+                    if (_javaLocaleMap[i][2] != null) {
+                        String val = p.getKeywordValue(_javaLocaleMap[i][2]);
+                        if (val != null && val.equals(_javaLocaleMap[i][3])) {
+                            p = new IDParser(_javaLocaleMap[i][0]);
+                            break;
+                        }
+                    } else {
+                        p = new IDParser(_javaLocaleMap[i][0]);
+                        break;
+                    }
+                }
+            }
+            String[] names = p.getLanguageScriptCountryVariant();
+            locale = new Locale(names[0], names[2], names[3]);
+        }
+        return locale;
+    }
+
+    private static ICUCache nameCache = new SimpleCache();
+    /**
+     * Keep our own default ULocale.
+     */
+    private static Locale defaultLocale = Locale.getDefault();
+    private static ULocale defaultULocale = new ULocale(defaultLocale);
+
+    /**
+     * Returns the current default ULocale.
+     * @stable ICU 2.8
+     */ 
+    public static ULocale getDefault() {
+        synchronized (ULocale.class) {
+            Locale currentDefault = Locale.getDefault();
+            if (!defaultLocale.equals(currentDefault)) {
+                defaultLocale = currentDefault;
+                defaultULocale = new ULocale(defaultLocale);
+            }
+            return defaultULocale;
+        }
+    }
+
+    /**
+     * Sets the default ULocale.  This also sets the default Locale.
+     * If the caller does not have write permission to the
+     * user.language property, a security exception will be thrown,
+     * and the default ULocale will remain unchanged.
+     * @param newLocale the new default locale
+     * @throws SecurityException
+     *        if a security manager exists and its
+     *        <code>checkPermission</code> method doesn't allow the operation.
+     * @throws NullPointerException if <code>newLocale</code> is null
+     * @see SecurityManager#checkPermission(java.security.Permission)
+     * @see java.util.PropertyPermission
+     * @stable ICU 3.0 
+     */
+    public static synchronized void setDefault(ULocale newLocale){
+        Locale.setDefault(newLocale.toLocale());
+        defaultULocale = newLocale;
+    }
+    
+    /**
+     * This is for compatibility with Locale-- in actuality, since ULocale is
+     * immutable, there is no reason to clone it, so this API returns 'this'.
+     * @stable ICU 3.0
+     */
+    public Object clone() {
+        return this;
+    }
+
+    /**
+     * Returns the hashCode.
+     * @stable ICU 3.0
+     */
+    public int hashCode() {
+        return localeID.hashCode();
+    }
+    
+    /**
+     * Returns true if the other object is another ULocale with the
+     * same full name, or is a String localeID that matches the full name.
+     * Note that since names are not canonicalized, two ULocales that
+     * function identically might not compare equal.
+     *
+     * @return true if this Locale is equal to the specified object.
+     * @stable ICU 3.0 
+     */
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof String) {
+            return localeID.equals((String)obj);   
+        }
+        if (obj instanceof ULocale) {
+            return localeID.equals(((ULocale)obj).localeID);
+        }
+        return false;
+    }
+    
+    /**
+     * Returns a list of all installed locales.
+     * @stable ICU 3.0
+     */
+    public static ULocale[] getAvailableLocales() {
+        return ICUResourceBundle.getAvailableULocales();
+    }
+
+    /**
+     * Returns a list of all 2-letter country codes defined in ISO 3166.
+     * Can be used to create Locales.
+     * @stable ICU 3.0
+     */
+    public static String[] getISOCountries() {
+        initCountryTables();
+        return (String[])_countries.clone();
+    }
+
+    /**
+     * Returns a list of all 2-letter language codes defined in ISO 639.
+     * Can be used to create Locales.
+     * [NOTE:  ISO 639 is not a stable standard-- some languages' codes have changed.
+     * The list this function returns includes both the new and the old codes for the
+     * languages whose codes have changed.]
+     * @stable ICU 3.0
+     */
+    public static String[] getISOLanguages() {
+        initLanguageTables();
+        return (String[])_languages.clone();
+    }
+
+    /**
+     * Returns the language code for this locale, which will either be the empty string
+     * or a lowercase ISO 639 code.
+     * @see #getDisplayLanguage()
+     * @see #getDisplayLanguage(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getLanguage() {
+        return getLanguage(localeID);
+    }
+    
+    /**
+     * Returns the language code for the locale ID,
+     * which will either be the empty string
+     * or a lowercase ISO 639 code.
+     * @see #getDisplayLanguage()
+     * @see #getDisplayLanguage(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getLanguage(String localeID) {
+        return new IDParser(localeID).getLanguage();
+    }
+     
+    /**
+     * Returns the script code for this locale, which might be the empty string.
+     * @see #getDisplayScript()
+     * @see #getDisplayScript(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getScript() {
+        return getScript(localeID);
+    }
+
+    /**
+     * Returns the script code for the specified locale, which might be the empty string.
+     * @see #getDisplayScript()
+     * @see #getDisplayScript(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getScript(String localeID) {
+        return new IDParser(localeID).getScript();
+    }
+    
+    /**
+     * Returns the country/region code for this locale, which will either be the empty string
+     * or an uppercase ISO 3166 2-letter code.
+     * @see #getDisplayCountry()
+     * @see #getDisplayCountry(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getCountry() {
+        return getCountry(localeID);
+    }
+
+    /**
+     * Returns the country/region code for this locale, which will either be the empty string
+     * or an uppercase ISO 3166 2-letter code.
+     * @param localeID
+     * @see #getDisplayCountry()
+     * @see #getDisplayCountry(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getCountry(String localeID) {
+        return new IDParser(localeID).getCountry();
+    }
+    
+    /**
+     * Returns the variant code for this locale, which might be the empty string.
+     * @see #getDisplayVariant()
+     * @see #getDisplayVariant(ULocale)
+     * @stable ICU 3.0
+     */
+    public String getVariant() {
+        return getVariant(localeID);
+    }
+
+    /**
+     * Returns the variant code for the specified locale, which might be the empty string.
+     * @see #getDisplayVariant()
+     * @see #getDisplayVariant(ULocale)
+     * @stable ICU 3.0
+     */
+    public static String getVariant(String localeID) {
+        return new IDParser(localeID).getVariant();
+    }
+
+    /**
+     * Returns the fallback locale for the specified locale, which might be the empty string.
+     * @stable ICU 3.2
+     */
+    public static String getFallback(String localeID) {
+        return getFallbackString(getName(localeID));
+    }
+
+    /**
+     * Returns the fallback locale for this locale.  If this locale is root, returns null.
+     * @stable ICU 3.2
+     */
+    public ULocale getFallback() {
+        if (localeID.length() == 0 || localeID.charAt(0) == '@') {
+            return null;
+        }
+        return new ULocale(getFallbackString(localeID), (Locale)null);
+    }
+
+    /**
+     * Return the given (canonical) locale id minus the last part before the tags.
+     */
+    private static String getFallbackString(String fallback) {
+        int limit = fallback.indexOf('@');
+        if (limit == -1) {
+            limit = fallback.length();
+        }
+        int start = fallback.lastIndexOf('_', limit);
+        if (start == -1) {
+            start = 0;
+        }
+        return fallback.substring(0, start) + fallback.substring(limit);
+    }
+
+    /**
+     * Returns the (normalized) base name for this locale.
+     * @return the base name as a String.
+     * @stable ICU 3.0
+     */
+    public String getBaseName() {
+        return getBaseName(localeID);
+    }
+    
+    /**
+     * Returns the (normalized) base name for the specified locale.
+     * @param localeID the locale ID as a string
+     * @return the base name as a String.
+     * @stable ICU 3.0
+     */
+    public static String getBaseName(String localeID){
+        if (localeID.indexOf('@') == -1) {
+            return localeID;
+        }
+        return new IDParser(localeID).getBaseName();
+    }
+
+    /**
+     * Returns the (normalized) full name for this locale.
+     *
+     * @return String the full name of the localeID
+     * @stable ICU 3.0
+     */ 
+    public String getName() {
+        return localeID; // always normalized
+    }
+
+    /**
+     * Returns the (normalized) full name for the specified locale.
+     *
+     * @param localeID the localeID as a string
+     * @return String the full name of the localeID
+     * @stable ICU 3.0
+     */
+    public static String getName(String localeID){
+        String name = (String)nameCache.get(localeID);
+        if (name == null) {
+            name = new IDParser(localeID).getName();
+            nameCache.put(localeID, name);
+        }
+        return name;
+    }
+
+    /**
+     * Returns a string representation of this object.
+     * @stable ICU 3.0
+     */
+    public String toString() {
+        return localeID;
+    }
+
+    /**
+     * Returns an iterator over keywords for this locale.  If there 
+     * are no keywords, returns null.
+     * @return iterator over keywords, or null if there are no keywords.
+     * @stable ICU 3.0
+     */
+    public Iterator getKeywords() {
+        return getKeywords(localeID);
+    }
+
+    /**
+     * Returns an iterator over keywords for the specified locale.  If there 
+     * are no keywords, returns null.
+     * @return an iterator over the keywords in the specified locale, or null
+     * if there are no keywords.
+     * @stable ICU 3.0
+     */
+    public static Iterator getKeywords(String localeID){
+        return new IDParser(localeID).getKeywords();
+    }
+
+    /**
+     * Returns the value for a keyword in this locale. If the keyword is not defined, returns null.
+     * @param keywordName name of the keyword whose value is desired. Case insensitive.
+     * @return the value of the keyword, or null.
+     * @stable ICU 3.0
+     */
+    public String getKeywordValue(String keywordName){
+        return getKeywordValue(localeID, keywordName);
+    }
+    
+    /**
+     * Returns the value for a keyword in the specified locale. If the keyword is not defined, returns null. 
+     * The locale name does not need to be normalized.
+     * @param keywordName name of the keyword whose value is desired. Case insensitive.
+     * @return String the value of the keyword as a string
+     * @stable ICU 3.0
+     */
+    public static String getKeywordValue(String localeID, String keywordName) {
+        return new IDParser(localeID).getKeywordValue(keywordName);
+    }
+
+    /**
+     * Utility class to parse and normalize locale ids (including POSIX style)
+     */
+    private static final class IDParser {
+        private char[] id;
+        private int index;
+        private char[] buffer;
+        private int blen;
+        // um, don't handle POSIX ids unless we request it.  why not?  well... because.
+        private boolean canonicalize;
+        private boolean hadCountry;
+
+        // used when canonicalizing
+        Map keywords;
+        String baseName;
+
+        /**
+         * Parsing constants.
+         */
+        private static final char KEYWORD_SEPARATOR     = '@';
+        private static final char HYPHEN                = '-';
+        private static final char KEYWORD_ASSIGN        = '=';
+        private static final char COMMA                 = ',';
+        private static final char ITEM_SEPARATOR        = ';';
+        private static final char DOT                   = '.';
+
+        private IDParser(String localeID) {
+            this(localeID, false);
+        }
+
+        private IDParser(String localeID, boolean canonicalize) {
+            id = localeID.toCharArray();
+            index = 0;
+            buffer = new char[id.length + 5];
+            blen = 0;
+            this.canonicalize = canonicalize;
+        }
+
+        private void reset() {
+            index = blen = 0;
+        }
+
+        // utilities for working on text in the buffer
+
+        /**
+         * Append c to the buffer.
+         */
+        private void append(char c) {
+            try {
+                buffer[blen] = c;
+            }
+            catch (IndexOutOfBoundsException e) {
+                if (buffer.length > 512) {
+                    // something is seriously wrong, let this go
+                    throw e;
+                }
+                char[] nbuffer = new char[buffer.length * 2];
+                System.arraycopy(buffer, 0, nbuffer, 0, buffer.length);
+                nbuffer[blen] = c;
+                buffer = nbuffer;
+            }
+            ++blen;
+        }
+
+        private void addSeparator() {
+            append(UNDERSCORE);
+        }
+
+        /**
+         * Returns the text in the buffer from start to blen as a String.
+         */
+        private String getString(int start) {
+            if (start == blen) {
+                return EMPTY_STRING;
+            }
+            return new String(buffer, start, blen-start);
+        }
+
+        /**
+         * Set the length of the buffer to pos, then append the string.
+         */
+        private void set(int pos, String s) {
+            this.blen = pos; // no safety
+            append(s);
+        }
+
+        /**
+         * Append the string to the buffer.
+         */
+        private void append(String s) {
+            for (int i = 0; i < s.length(); ++i) {
+                append(s.charAt(i));
+            }
+        }
+
+        // utilities for parsing text out of the id
+
+        /**
+         * Character to indicate no more text is available in the id.
+         */
+        private static final char DONE = '\uffff';
+
+        /**
+         * Returns the character at index in the id, and advance index.  The returned character
+         * is DONE if index was at the limit of the buffer.  The index is advanced regardless
+         * so that decrementing the index will always 'unget' the last character returned.
+         */
+        private char next() {
+            if (index == id.length) {
+                index++;
+                return DONE; 
+            }
+
+            return id[index++];
+        }
+
+        /**
+         * Advance index until the next terminator or id separator, and leave it there.
+         */
+        private void skipUntilTerminatorOrIDSeparator() {
+            while (!isTerminatorOrIDSeparator(next())) {
+            }
+            --index;
+        }
+
+        /**
+         * Returns true if the character at index in the id is a terminator.
+         */
+        private boolean atTerminator() {
+            return index >= id.length || isTerminator(id[index]);
+        }
+
+        /*
+         * Returns true if the character is an id separator (underscore or hyphen).
+         */
+/*        private boolean isIDSeparator(char c) {
+            return c == UNDERSCORE || c == HYPHEN;
+        }*/
+
+        /**
+         * Returns true if the character is a terminator (keyword separator, dot, or DONE).
+         * Dot is a terminator because of the POSIX form, where dot precedes the codepage.
+         */
+        private boolean isTerminator(char c) {
+            // always terminate at DOT, even if not handling POSIX.  It's an error...
+            return c == KEYWORD_SEPARATOR || c == DONE || c == DOT;
+        }
+
+        /**
+         * Returns true if the character is a terminator or id separator.
+         */
+        private boolean isTerminatorOrIDSeparator(char c) {
+            return c == KEYWORD_SEPARATOR || c == UNDERSCORE || c == HYPHEN || 
+                c == DONE || c == DOT;   
+        }
+
+        /**
+         * Returns true if the start of the buffer has an experimental or private language 
+         * prefix, the pattern '[ixIX][-_].' shows the syntax checked.
+         */
+        private boolean haveExperimentalLanguagePrefix() {
+            if (id.length > 2) {
+                char c = id[1];
+                if (c == HYPHEN || c == UNDERSCORE) {
+                    c = id[0];
+                    return c == 'x' || c == 'X' || c == 'i' || c == 'I';
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Returns true if a value separator occurs at or after index.
+         */
+        private boolean haveKeywordAssign() {
+            // assume it is safe to start from index
+            for (int i = index; i < id.length; ++i) {
+                if (id[i] == KEYWORD_ASSIGN) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Advance index past language, and accumulate normalized language code in buffer.
+         * Index must be at 0 when this is called.  Index is left at a terminator or id 
+         * separator.  Returns the start of the language code in the buffer.
+         */
+        private int parseLanguage() {
+            if (haveExperimentalLanguagePrefix()) {
+                append(Character.toLowerCase(id[0]));
+                append(HYPHEN);
+                index = 2;
+            }
+        
+            char c;
+            while(!isTerminatorOrIDSeparator(c = next())) {
+                append(Character.toLowerCase(c));
+            }
+            --index; // unget
+
+            if (blen == 3) {
+                initLanguageTables();
+
+                /* convert 3 character code to 2 character code if possible *CWB*/
+                String lang = getString(0);
+                int offset = findIndex(_languages3, lang);
+                if (offset >= 0) {
+                    set(0, _languages[offset]);
+                } else {
+                    offset = findIndex(_obsoleteLanguages3, lang);
+                    if (offset >= 0) {
+                        set(0, _obsoleteLanguages[offset]);
+                    }
+                }
+            }
+
+            return 0;
+        }
+
+        /**
+         * Advance index past language.  Index must be at 0 when this is called.  Index
+         * is left at a terminator or id separator.
+         */
+        private void skipLanguage() {
+            if (haveExperimentalLanguagePrefix()) {
+                index = 2;
+            }
+            skipUntilTerminatorOrIDSeparator();
+        }
+
+        /**
+         * Advance index past script, and accumulate normalized script in buffer.
+         * Index must be immediately after the language.
+         * If the item at this position is not a script (is not four characters
+         * long) leave index and buffer unchanged.  Otherwise index is left at
+         * a terminator or id separator.  Returns the start of the script code
+         * in the buffer (this may be equal to the buffer length, if there is no
+         * script).
+         */
+        private int parseScript() {
+            if (!atTerminator()) {
+                int oldIndex = index; // save original index
+                ++index;
+
+                int oldBlen = blen; // get before append hyphen, if we truncate everything is undone
+                char c;
+                while(!isTerminatorOrIDSeparator(c = next())) {
+                    if (blen == oldBlen) { // first pass
+                        addSeparator();
+                        append(Character.toUpperCase(c));
+                    } else {
+                        append(Character.toLowerCase(c));
+                    }
+                }
+                --index; // unget
+
+                /* If it's not exactly 4 characters long, then it's not a script. */
+                if (index - oldIndex != 5) { // +1 to account for separator
+                    index = oldIndex;
+                    blen = oldBlen;
+                } else {
+                    oldBlen++; // index past hyphen, for clients who want to extract just the script
+                }
+
+                return oldBlen;
+            }
+            return blen;
+        }
+
+        /**
+         * Advance index past script.
+         * Index must be immediately after the language and IDSeparator.
+         * If the item at this position is not a script (is not four characters
+         * long) leave index.  Otherwise index is left at a terminator or
+         * id separator.
+         */
+        private void skipScript() {
+            if (!atTerminator()) {
+                int oldIndex = index;
+                ++index;
+
+                skipUntilTerminatorOrIDSeparator();
+                if (index - oldIndex != 5) { // +1 to account for separator
+                    index = oldIndex;
+                }
+            }
+        }
+
+        /**
+         * Advance index past country, and accumulate normalized country in buffer.
+         * Index must be immediately after the script (if there is one, else language)
+         * and IDSeparator.  Return the start of the country code in the buffer.
+         */
+        private int parseCountry() {
+            if (!atTerminator()) {
+                int oldIndex = index;
+                ++index;
+
+                int oldBlen = blen;
+                char c;
+                while (!isTerminatorOrIDSeparator(c = next())) {
+                    if (oldBlen == blen) { // first, add hyphen
+                        hadCountry = true; // we have a country, let variant parsing know
+                        addSeparator();
+                        ++oldBlen; // increment past hyphen
+                    }
+                    append(Character.toUpperCase(c));
+                }
+                --index; // unget
+
+                int charsAppended = blen - oldBlen;
+
+                if (charsAppended == 0) {
+                    // Do nothing.
+                }
+                else if (charsAppended < 2 || charsAppended > 3) {
+                    // It's not a country, so return index and blen to
+                    // their previous values.
+                    index = oldIndex;
+                    --oldBlen;
+                    blen = oldBlen;
+                    hadCountry = false;
+                }
+                else if (charsAppended == 3) {
+                    initCountryTables();
+
+                    /* convert 3 character code to 2 character code if possible *CWB*/
+                    int offset = findIndex(_countries3, getString(oldBlen));
+                    if (offset >= 0) {
+                        set(oldBlen, _countries[offset]);
+                    } else {
+                        offset = findIndex(_obsoleteCountries3, getString(oldBlen));
+                        if (offset >= 0) {
+                            set(oldBlen, _obsoleteCountries[offset]);
+                        }
+                    }
+                }
+
+                return oldBlen;
+            }
+
+            return blen;
+        }  
+
+        /**
+         * Advance index past country.
+         * Index must be immediately after the script (if there is one, else language)
+         * and IDSeparator.
+         */
+        private void skipCountry() {
+            if (!atTerminator()) {
+                ++index;
+                /* 
+                 * Save the index point after the separator, since the format
+                 * requires two separators if the country is not present.
+                 */
+                int oldIndex = index;
+
+                skipUntilTerminatorOrIDSeparator();
+                int charsSkipped = index - oldIndex;
+                if (charsSkipped < 2 || charsSkipped > 3) {
+                    index = oldIndex;
+                }
+            }
+        }
+
+        /**
+         * Advance index past variant, and accumulate normalized variant in buffer.  This ignores
+         * the codepage information from POSIX ids.  Index must be immediately after the country
+         * or script.  Index is left at the keyword separator or at the end of the text.  Return
+         * the start of the variant code in the buffer.
+         *
+         * In standard form, we can have the following forms:
+         * ll__VVVV
+         * ll_CC_VVVV
+         * ll_Ssss_VVVV
+         * ll_Ssss_CC_VVVV
+         *
+         * This also handles POSIX ids, which can have the following forms (pppp is code page id):
+         * ll_CC.pppp          --> ll_CC
+         * ll_CC.pppp@VVVV     --> ll_CC_VVVV
+         * ll_CC@VVVV          --> ll_CC_VVVV
+         *
+         * We identify this use of '@' in POSIX ids by looking for an '=' following
+         * the '@'.  If there is one, we consider '@' to start a keyword list, instead of
+         * being part of a POSIX id.
+         *
+         * Note:  since it was decided that we want an option to not handle POSIX ids, this
+         * becomes a bit more complex.
+         */
+        private int parseVariant() {
+            int oldBlen = blen;
+
+            boolean start = true;
+            boolean needSeparator = true;
+            boolean skipping = false;
+            char c;
+            while ((c = next()) != DONE) {
+                if (c == DOT) {
+                    start = false;
+                    skipping = true;
+                } else if (c == KEYWORD_SEPARATOR) {
+                    if (haveKeywordAssign()) {
+                        break;
+                    }
+                    skipping = false;
+                    start = false;
+                    needSeparator = true; // add another underscore if we have more text
+                } else if (start) {
+                    start = false;
+                } else if (!skipping) {
+                    if (needSeparator) {
+                        boolean incOldBlen = blen == oldBlen; // need to skip separators
+                        needSeparator = false;
+                        if (incOldBlen && !hadCountry) { // no country, we'll need two
+                            addSeparator();
+                            ++oldBlen; // for sure
+                        }
+                        addSeparator();
+                        if (incOldBlen) { // only for the first separator
+                            ++oldBlen;
+                        }
+                    }
+                    c = Character.toUpperCase(c);
+                    if (c == HYPHEN || c == COMMA) {
+                        c = UNDERSCORE;
+                    }
+                    append(c);
+                }
+            }
+            --index; // unget
+            
+            return oldBlen;
+        }
+
+        // no need for skipvariant, to get the keywords we'll just scan directly for 
+        // the keyword separator
+
+        /**
+         * Returns the normalized language id, or the empty string.
+         */
+        public String getLanguage() {
+            reset();
+            return getString(parseLanguage());
+        }
+   
+        /**
+         * Returns the normalized script id, or the empty string.
+         */
+        public String getScript() {
+            reset();
+            skipLanguage();
+            return getString(parseScript());
+        }
+    
+        /**
+         * return the normalized country id, or the empty string.
+         */
+        public String getCountry() {
+            reset();
+            skipLanguage();
+            skipScript();
+            return getString(parseCountry());
+        }
+
+        /**
+         * Returns the normalized variant id, or the empty string.
+         */
+        public String getVariant() {
+            reset();
+            skipLanguage();
+            skipScript();
+            skipCountry();
+            return getString(parseVariant());
+        }
+
+        /**
+         * Returns the language, script, country, and variant as separate strings.
+         */
+        public String[] getLanguageScriptCountryVariant() {
+            reset();
+            return new String[] {
+                getString(parseLanguage()),
+                getString(parseScript()),
+                getString(parseCountry()),
+                getString(parseVariant())
+            };
+        }
+
+        public void setBaseName(String baseName) {
+            this.baseName = baseName;
+        }
+
+        public void parseBaseName() {
+            if (baseName != null) {
+                set(0, baseName);
+            } else {
+                reset();
+                parseLanguage();
+                parseScript();
+                parseCountry();
+                parseVariant();
+            
+                // catch unwanted trailing underscore after country if there was no variant
+                if (blen > 1 && buffer[blen-1] == UNDERSCORE) {
+                    --blen;
+                }
+            }
+        }
+
+        /**
+         * Returns the normalized base form of the locale id.  The base
+         * form does not include keywords.
+         */
+        public String getBaseName() {
+            if (baseName != null) {
+                return baseName;
+            }
+            parseBaseName();
+            return getString(0);
+        }
+
+        /**
+         * Returns the normalized full form of the locale id.  The full
+         * form includes keywords if they are present.
+         */
+        public String getName() {
+            parseBaseName();
+            parseKeywords();
+            return getString(0);
+        }
+
+        // keyword utilities
+
+        /**
+         * If we have keywords, advance index to the start of the keywords and return true, 
+         * otherwise return false.
+         */
+        private boolean setToKeywordStart() {
+            for (int i = index; i < id.length; ++i) {
+                if (id[i] == KEYWORD_SEPARATOR) {
+                    if (canonicalize) {
+                        for (int j = ++i; j < id.length; ++j) { // increment i past separator for return
+                            if (id[j] == KEYWORD_ASSIGN) {
+                                index = i;
+                                return true;
+                            }
+                        }
+                    } else {
+                        if (++i < id.length) {
+                            index = i;
+                            return true;
+                        }
+                    }
+                    break;
+                }
+            }
+            return false;
+        }
+        
+        private static boolean isDoneOrKeywordAssign(char c) {
+            return c == DONE || c == KEYWORD_ASSIGN;
+        }
+
+        private static boolean isDoneOrItemSeparator(char c) {
+            return c == DONE || c == ITEM_SEPARATOR;
+        }
+
+        private String getKeyword() {
+            int start = index;
+            while (!isDoneOrKeywordAssign(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim().toLowerCase();
+        }
+
+        private String getValue() {
+            int start = index;
+            while (!isDoneOrItemSeparator(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim(); // leave case alone
+        }
+
+        private Comparator getKeyComparator() {
+            final Comparator comp = new Comparator() {
+                    public int compare(Object lhs, Object rhs) {
+                        return ((String)lhs).compareTo((String)rhs);
+                    }
+                };
+            return comp;
+        }
+
+        /**
+         * Returns a map of the keywords and values, or null if there are none.
+         */
+        private Map getKeywordMap() {
+            if (keywords == null) {
+                TreeMap m = null;
+                if (setToKeywordStart()) {
+                    // trim spaces and convert to lower case, both keywords and values.
+                    do {
+                        String key = getKeyword();
+                        if (key.length() == 0) {
+                            break;
+                        }
+                        char c = next();
+                        if (c != KEYWORD_ASSIGN) {
+                            // throw new IllegalArgumentException("key '" + key + "' missing a value.");
+                            if (c == DONE) {
+                                break;
+                            } else {
+                                continue;
+                            }
+                        }
+                        String value = getValue();
+                        if (value.length() == 0) {
+                            // throw new IllegalArgumentException("key '" + key + "' missing a value.");
+                            continue;
+                        }
+                        if (m == null) {
+                            m = new TreeMap(getKeyComparator());
+                        } else if (m.containsKey(key)) {
+                            // throw new IllegalArgumentException("key '" + key + "' already has a value.");
+                            continue;
+                        }
+                        m.put(key, value);
+                    } while (next() == ITEM_SEPARATOR);
+                }               
+                keywords = m != null ? m : Collections.EMPTY_MAP;
+            }
+
+            return keywords;
+        }
+
+        /**
+         * Parse the keywords and return start of the string in the buffer.
+         */
+        private int parseKeywords() {
+            int oldBlen = blen;
+            Map m = getKeywordMap();
+            if (!m.isEmpty()) {
+                Iterator iter = m.entrySet().iterator();
+                boolean first = true;
+                while (iter.hasNext()) {
+                    append(first ? KEYWORD_SEPARATOR : ITEM_SEPARATOR);
+                    first = false;
+                    Map.Entry e = (Map.Entry)iter.next();
+                    append((String)e.getKey());
+                    append(KEYWORD_ASSIGN);
+                    append((String)e.getValue());
+                }
+                if (blen != oldBlen) {
+                    ++oldBlen;
+                }
+            }
+            return oldBlen;
+        }
+
+        /**
+         * Returns an iterator over the keywords, or null if we have an empty map.
+         */
+        public Iterator getKeywords() {
+            Map m = getKeywordMap();
+            return m.isEmpty() ? null : m.keySet().iterator();
+        }
+
+        /**
+         * Returns the value for the named keyword, or null if the keyword is not
+         * present.
+         */
+        public String getKeywordValue(String keywordName) {
+            Map m = getKeywordMap();
+            return m.isEmpty() ? null : (String)m.get(keywordName.trim().toLowerCase());
+        }
+
+        /**
+         * Set the keyword value only if it is not already set to something else.
+         */
+        public void defaultKeywordValue(String keywordName, String value) {
+            setKeywordValue(keywordName, value, false);
+        }
+            
+        /**
+         * Set the value for the named keyword, or unset it if value is null.  If
+         * keywordName itself is null, unset all keywords.  If keywordName is not null,
+         * value must not be null.
+         */
+        public void setKeywordValue(String keywordName, String value) {
+            setKeywordValue(keywordName, value, true);
+        }
+
+        /**
+         * Set the value for the named keyword, or unset it if value is null.  If
+         * keywordName itself is null, unset all keywords.  If keywordName is not null,
+         * value must not be null.  If reset is true, ignore any previous value for 
+         * the keyword, otherwise do not change the keyword (including removal of
+         * one or all keywords).
+         */
+        private void setKeywordValue(String keywordName, String value, boolean reset) {
+            if (keywordName == null) {
+                if (reset) {
+                    // force new map, ignore value
+                    keywords = Collections.EMPTY_MAP;
+                }
+            } else {
+                keywordName = keywordName.trim().toLowerCase();
+                if (keywordName.length() == 0) {
+                    throw new IllegalArgumentException("keyword must not be empty");
+                }
+                if (value != null) {
+                    value = value.trim();
+                    if (value.length() == 0) {
+                        throw new IllegalArgumentException("value must not be empty");
+                    }
+                }
+                Map m = getKeywordMap();
+                if (m.isEmpty()) { // it is EMPTY_MAP
+                    if (value != null) {
+                        // force new map
+                        keywords = new TreeMap(getKeyComparator());
+                        keywords.put(keywordName, value.trim());
+                    }
+                } else {
+                    if (reset || !m.containsKey(keywordName)) {
+                        if (value != null) {
+                            m.put(keywordName, value);
+                        } else {
+                            m.remove(keywordName);
+                            if (m.isEmpty()) {
+                                // force new map
+                                keywords = Collections.EMPTY_MAP;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * linear search of the string array. the arrays are unfortunately ordered by the
+     * two-letter target code, not the three-letter search code, which seems backwards.
+     */
+    private static int findIndex(String[] array, String target){
+        for (int i = 0; i < array.length; i++) {
+            if (target.equals(array[i])) {
+                return i;
+            }
+        }
+        return -1;
+    }    
+
+    /**
+     * Returns the canonical name for the specified locale ID.  This is used to convert POSIX
+     * and other grandfathered IDs to standard ICU form.
+     * @param localeID the locale id
+     * @return the canonicalized id
+     * @stable ICU 3.0
+     */
+    public static String canonicalize(String localeID){
+        IDParser parser = new IDParser(localeID, true);
+        String baseName = parser.getBaseName();
+        boolean foundVariant = false;
+      
+        // formerly, we always set to en_US_POSIX if the basename was empty, but
+        // now we require that the entire id be empty, so that "@foo=bar"
+        // will pass through unchanged.
+        // {dlf} I'd rather keep "" unchanged.
+        if (localeID.equals("")) {
+            return "";
+//              return "en_US_POSIX";
+        }
+
+        // we have an ID in the form xx_Yyyy_ZZ_KKKKK
+
+        initCANONICALIZE_MAP();
+
+        /* convert the variants to appropriate ID */
+        for (int i = 0; i < variantsToKeywords.length; i++) {
+            String[] vals = variantsToKeywords[i];
+            int idx = baseName.lastIndexOf("_" + vals[0]);
+            if (idx > -1) {
+                foundVariant = true;
+
+                baseName = baseName.substring(0, idx);
+                if (baseName.endsWith("_")) {
+                    baseName = baseName.substring(0, --idx);
+                }
+                parser.setBaseName(baseName);
+                parser.defaultKeywordValue(vals[1], vals[2]);
+                break;
+            }
+        }
+
+        /* See if this is an already known locale */
+        for (int i = 0; i < CANONICALIZE_MAP.length; i++) {
+            if (CANONICALIZE_MAP[i][0].equals(baseName)) {
+                foundVariant = true;
+
+                String[] vals = CANONICALIZE_MAP[i];
+                parser.setBaseName(vals[1]);
+                if (vals[2] != null) {
+                    parser.defaultKeywordValue(vals[2], vals[3]);
+                }
+                break;
+            }
+        }
+
+        /* total mondo hack for Norwegian, fortunately the main NY case is handled earlier */
+        if (!foundVariant) {
+            if (parser.getLanguage().equals("nb") && parser.getVariant().equals("NY")) {
+                parser.setBaseName(lscvToID("nn", parser.getScript(), parser.getCountry(), null));
+            }
+        }
+
+        return parser.getName();
+    }
+    
+    /**
+     * Given a keyword and a value, return a new locale with an updated
+     * keyword and value.  If keyword is null, this removes all keywords from the locale id.
+     * Otherwise, if the value is null, this removes the value for this keyword from the
+     * locale id.  Otherwise, this adds/replaces the value for this keyword in the locale id.
+     * The keyword and value must not be empty.
+     * @param keyword the keyword to add/remove, or null to remove all keywords.
+     * @param value the value to add/set, or null to remove this particular keyword.
+     * @return the updated locale
+     * @stable ICU 3.2
+     */
+    public ULocale setKeywordValue(String keyword, String value) {
+        return new ULocale(setKeywordValue(localeID, keyword, value), (Locale)null);
+    }
+
+    /**
+     * Given a locale id, a keyword, and a value, return a new locale id with an updated
+     * keyword and value.  If keyword is null, this removes all keywords from the locale id.
+     * Otherwise, if the value is null, this removes the value for this keyword from the
+     * locale id.  Otherwise, this adds/replaces the value for this keyword in the locale id.
+     * The keyword and value must not be empty.
+     * @param localeID the locale id to modify
+     * @param keyword the keyword to add/remove, or null to remove all keywords.
+     * @param value the value to add/set, or null to remove this particular keyword.
+     * @return the updated locale id
+     * @stable ICU 3.2
+     */
+    public static String setKeywordValue(String localeID, String keyword, String value) {
+        IDParser parser = new IDParser(localeID);
+        parser.setKeywordValue(keyword, value);
+        return parser.getName();
+    }
+
+    /*
+     * Given a locale id, a keyword, and a value, return a new locale id with an updated
+     * keyword and value, if the keyword does not already have a value.  The keyword and
+     * value must not be null or empty.
+     * @param localeID the locale id to modify
+     * @param keyword the keyword to add, if not already present
+     * @param value the value to add, if not already present
+     * @return the updated locale id
+     * @internal
+     */
+/*    private static String defaultKeywordValue(String localeID, String keyword, String value) {
+        IDParser parser = new IDParser(localeID);
+        parser.defaultKeywordValue(keyword, value);
+        return parser.getName();
+    }*/
+
+    /**
+     * Returns a three-letter abbreviation for this locale's language.  If the locale
+     * doesn't specify a language, returns the empty string.  Otherwise, returns
+     * a lowercase ISO 639-2/T language code.
+     * The ISO 639-2 language codes can be found on-line at
+     *   <a href="ftp://dkuug.dk/i18n/iso-639-2.txt"><code>ftp://dkuug.dk/i18n/iso-639-2.txt</code></a>
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter language abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public String getISO3Language(){
+        return getISO3Language(localeID);
+    }
+
+    /**
+     * Returns a three-letter abbreviation for this locale's language.  If the locale
+     * doesn't specify a language, returns the empty string.  Otherwise, returns
+     * a lowercase ISO 639-2/T language code.
+     * The ISO 639-2 language codes can be found on-line at
+     *   <a href="ftp://dkuug.dk/i18n/iso-639-2.txt"><code>ftp://dkuug.dk/i18n/iso-639-2.txt</code></a>
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter language abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public static String getISO3Language(String localeID){
+        initLanguageTables();
+
+        String language = getLanguage(localeID);
+        int offset = findIndex(_languages, language);
+        if(offset>=0){
+            return _languages3[offset];
+        } else {
+            offset = findIndex(_obsoleteLanguages, language);
+            if (offset >= 0) {
+                return _obsoleteLanguages3[offset];
+            }
+        }
+        return EMPTY_STRING;
+    }
+    
+    /**
+     * Returns a three-letter abbreviation for this locale's country/region.  If the locale
+     * doesn't specify a country, returns the empty string.  Otherwise, returns
+     * an uppercase ISO 3166 3-letter country code.
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter country abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public String getISO3Country(){
+        return getISO3Country(localeID);
+    }
+    /**
+     * Returns a three-letter abbreviation for this locale's country/region.  If the locale
+     * doesn't specify a country, returns the empty string.  Otherwise, returns
+     * an uppercase ISO 3166 3-letter country code.
+     * @exception MissingResourceException Throws MissingResourceException if the
+     * three-letter country abbreviation is not available for this locale.
+     * @stable ICU 3.0
+     */
+    public static String getISO3Country(String localeID){
+        initCountryTables();
+
+        String country = getCountry(localeID);
+        int offset = findIndex(_countries, country);
+        if(offset>=0){
+            return _countries3[offset];
+        }else{
+            offset = findIndex(_obsoleteCountries, country);
+            if(offset>=0){
+                return _obsoleteCountries3[offset];   
+            }
+        }
+        return EMPTY_STRING;
+    }
+    
+    // display names
+
+    /**
+     * Utility to fetch locale display data from resource bundle tables.
+     */
+    private static String getTableString(String tableName, String subtableName, String item, String displayLocaleID) {
+        if (item.length() > 0) {
+            try {
+                ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.
+                  getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, displayLocaleID);
+                return getTableString(tableName, subtableName, item, bundle);
+            } catch (Exception e) {
+//              System.out.println("gtsu: " + e.getMessage());
+            }
+        }
+        return item;
+    }
+        
+    /**
+     * Utility to fetch locale display data from resource bundle tables.
+     */
+    private static String getTableString(String tableName, String subtableName, String item, ICUResourceBundle bundle) {
+//      System.out.println("gts table: " + tableName + 
+//                         " subtable: " + subtableName +
+//                         " item: " + item +
+//                         " bundle: " + bundle.getULocale());
+        try {
+            for (;;) {
+                // special case currency
+                if ("currency".equals(subtableName)) {
+                    ICUResourceBundle table = bundle.getWithFallback("Currencies");
+                    table = table.getWithFallback(item);
+                    return table.getString(1);
+                } else {
+                    ICUResourceBundle table = bundle.getWithFallback(tableName);
+                    try {
+                        if (subtableName != null) {
+                            table = table.getWithFallback(subtableName);
+                        }
+                        return table.getStringWithFallback(item);
+                    }
+                    catch (MissingResourceException e) {
+                        
+                        if(subtableName==null){
+                            try{
+                                // may be a deprecated code
+                                String currentName = null;
+                                if(tableName.equals("Countries")){
+                                    currentName = getCurrentCountryID(item);
+                                }else if(tableName.equals("Languages")){
+                                    currentName = getCurrentLanguageID(item);
+                                }
+                                return table.getStringWithFallback(currentName);
+                            }catch (MissingResourceException ex){/* fall through*/}
+                        }
+                        
+                        // still can't figure out ?.. try the fallback mechanism
+                        String fallbackLocale = table.getWithFallback("Fallback").getString();
+                        if (fallbackLocale.length() == 0) {
+                            fallbackLocale = "root";
+                        }
+//                      System.out.println("bundle: " + bundle.getULocale() + " fallback: " + fallbackLocale);
+                        if(fallbackLocale.equals(table.getULocale().localeID)){
+                            return item;
+                        }
+                        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, 
+                                                                                      fallbackLocale);
+//                          System.out.println("fallback from " + table.getULocale() + " to " + fallbackLocale + 
+//                                             ", got bundle " + bundle.getULocale());                      
+                    }
+                }
+            }
+        }
+        catch (Exception e) {
+//          System.out.println("gtsi: " + e.getMessage());
+        }
+        return item;
+    }
+
+    /**
+     * Returns this locale's language localized for display in the default locale.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayLanguage() {
+        return getDisplayLanguageInternal(localeID, getDefault().localeID);
+    }
+
+    /**
+     * Returns this locale's language localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayLanguage(ULocale displayLocale) {
+        return getDisplayLanguageInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose language will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayLanguage(String localeID, String displayLocaleID) {
+        return getDisplayLanguageInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose language will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayLanguage(String localeID, ULocale displayLocale) {
+        return getDisplayLanguageInternal(localeID, displayLocale.localeID);
+    } 
+
+    static String getCurrentCountryID(String oldID){
+        initCountryTables();
+        int offset = findIndex(_deprecatedCountries, oldID);
+        if (offset >= 0) {
+            return _replacementCountries[offset];
+        }
+        return oldID;
+    }
+    static String getCurrentLanguageID(String oldID){
+        initLanguageTables();
+        int offset = findIndex(_obsoleteLanguages, oldID);
+        if (offset >= 0) {
+            return _replacementLanguages[offset];
+        }
+        return oldID;        
+    }
+
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayLanguageInternal(String localeID, String displayLocaleID) {
+        return getTableString("Languages", null, new IDParser(localeID).getLanguage(), displayLocaleID);
+    }
+ 
+    /**
+     * Returns this locale's script localized for display in the default locale.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayScript() {
+        return getDisplayScriptInternal(localeID, getDefault().localeID);
+    }
+
+    /**
+     * Returns this locale's script localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayScript(ULocale displayLocale) {
+        return getDisplayScriptInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns a locale's script localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose script will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayScript(String localeID, String displayLocaleID) {
+        return getDisplayScriptInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's script localized for display in the provided locale.
+     * @param localeID the id of the locale whose script will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized script name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayScript(String localeID, ULocale displayLocale) {
+        return getDisplayScriptInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayScriptInternal(String localeID, String displayLocaleID) {
+        return getTableString("Scripts", null, new IDParser(localeID).getScript(), displayLocaleID);
+    }
+
+    /**
+     * Returns this locale's country localized for display in the default locale.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayCountry() {
+        return getDisplayCountryInternal(localeID, getDefault().localeID);
+    }
+    
+    /**
+     * Returns this locale's country localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayCountry(ULocale displayLocale){
+        return getDisplayCountryInternal(localeID, displayLocale.localeID);   
+    }
+    
+    /**
+     * Returns a locale's country localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose country will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayCountry(String localeID, String displayLocaleID) {
+        return getDisplayCountryInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a locale's country localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose country will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized country name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayCountry(String localeID, ULocale displayLocale) {
+        return getDisplayCountryInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayCountryInternal(String localeID, String displayLocaleID) {
+        return getTableString("Countries", null,  new IDParser(localeID).getCountry(), displayLocaleID);
+    }
+    
+    /**
+     * Returns this locale's variant localized for display in the default locale.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayVariant() {
+        return getDisplayVariantInternal(localeID, getDefault().localeID);   
+    }
+
+    /**
+     * Returns this locale's variant localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayVariant(ULocale displayLocale) {
+        return getDisplayVariantInternal(localeID, displayLocale.localeID);   
+    }
+    
+    /**
+     * Returns a locale's variant localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose variant will be displayed
+     * @param displayLocaleID the id of the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayVariant(String localeID, String displayLocaleID){
+        return getDisplayVariantInternal(localeID, getName(displayLocaleID));
+    }
+    
+    /**
+     * Returns a locale's variant localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose variant will be displayed.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized variant name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayVariant(String localeID, ULocale displayLocale) {
+        return getDisplayVariantInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayVariantInternal(String localeID, String displayLocaleID) {
+        return getTableString("Variants", null, new IDParser(localeID).getVariant(), displayLocaleID);
+    }
+
+    /**
+     * Returns a keyword localized for display in the default locale.
+     * @param keyword the keyword to be displayed.
+     * @return the localized keyword name.
+     * @see #getKeywords()
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword) {
+        return getDisplayKeywordInternal(keyword, getDefault().localeID);   
+    }
+    
+    /**
+     * Returns a keyword localized for display in the specified locale.
+     * @param keyword the keyword to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the keyword.
+     * @return the localized keyword name.
+     * @see #getKeywords(String)
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword, String displayLocaleID) {
+        return getDisplayKeywordInternal(keyword, getName(displayLocaleID));   
+    }
+
+    /**
+     * Returns a keyword localized for display in the specified locale.
+     * @param keyword the keyword to be displayed.
+     * @param displayLocale the locale in which to display the keyword.
+     * @return the localized keyword name.
+     * @see #getKeywords(String)
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeyword(String keyword, ULocale displayLocale) {
+        return getDisplayKeywordInternal(keyword, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayKeywordInternal(String keyword, String displayLocaleID) {
+        return getTableString("Keys", null, keyword.trim().toLowerCase(), displayLocaleID);
+    }
+
+    /**
+     * Returns a keyword value localized for display in the default locale.
+     * @param keyword the keyword whose value is to be displayed.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayKeywordValue(String keyword) {
+        return getDisplayKeywordValueInternal(localeID, keyword, getDefault().localeID);
+    }
+    
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocale the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayKeywordValue(String keyword, ULocale displayLocale) {
+        return getDisplayKeywordValueInternal(localeID, keyword, displayLocale.localeID);   
+    }
+
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose keyword value is to be displayed.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeywordValue(String localeID, String keyword, String displayLocaleID) {
+        return getDisplayKeywordValueInternal(localeID, keyword, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns a keyword value localized for display in the specified locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the id of the locale whose keyword value is to be displayed.
+     * @param keyword the keyword whose value is to be displayed.
+     * @param displayLocale the id of the locale in which to display the value.
+     * @return the localized value name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayKeywordValue(String localeID, String keyword, ULocale displayLocale) {
+        return getDisplayKeywordValueInternal(localeID, keyword, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayKeywordValueInternal(String localeID, String keyword, String displayLocaleID) {
+        keyword = keyword.trim().toLowerCase();
+        String value = new IDParser(localeID).getKeywordValue(keyword);
+        return getTableString("Types", keyword, value, displayLocaleID);
+    }
+    
+    /**
+     * Returns this locale name localized for display in the default locale.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayName() {
+        return getDisplayNameInternal(localeID, getDefault().localeID);
+    }
+    
+    /**
+     * Returns this locale name localized for display in the provided locale.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public String getDisplayName(ULocale displayLocale) {
+        return getDisplayNameInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the locale whose name is to be displayed.
+     * @param displayLocaleID the id of the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayName(String localeID, String displayLocaleID) {
+        return getDisplayNameInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * This is a cover for the ICU4C API.
+     * @param localeID the locale whose name is to be displayed.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @stable ICU 3.0
+     */
+    public static String getDisplayName(String localeID, ULocale displayLocale) {
+        return getDisplayNameInternal(localeID, displayLocale.localeID);
+    }
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayNameInternal(String localeID, String displayLocaleID) {
+        // lang
+        // lang (script, country, variant, keyword=value, ...)
+        // script, country, variant, keyword=value, ...
+
+        final String[] tableNames = { "Languages", "Scripts", "Countries", "Variants" };
+
+        ICUResourceBundle bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, displayLocaleID);
+
+        StringBuffer buf = new StringBuffer();
+
+        IDParser parser = new IDParser(localeID);
+        String[] names = parser.getLanguageScriptCountryVariant();
+
+        boolean haveLanguage = names[0].length() > 0;
+        boolean openParen = false;
+        for (int i = 0; i < names.length; ++i) {
+            String name = names[i];
+            if (name.length() > 0) {
+                name = getTableString(tableNames[i], null, name, bundle);
+                if (buf.length() > 0) { // need a separator
+                    if (haveLanguage & !openParen) {
+                        buf.append(" (");
+                        openParen = true;
+                    } else {
+                        buf.append(", ");
+                    }
+                }
+                buf.append(name);
+            }
+        }
+
+        Map m = parser.getKeywordMap();
+        if (!m.isEmpty()) {
+            Iterator keys = m.entrySet().iterator();
+            while (keys.hasNext()) {
+                if (buf.length() > 0) {
+                    if (haveLanguage & !openParen) {
+                        buf.append(" (");
+                        openParen = true;
+                    } else {
+                        buf.append(", ");
+                    }
+                }
+                Map.Entry e = (Map.Entry)keys.next();
+                String key = (String)e.getKey();
+                String val = (String)e.getValue();
+                buf.append(getTableString("Keys", null, key, bundle));
+                buf.append("=");
+                buf.append(getTableString("Types", key, val, bundle));
+            }
+        }
+
+        if (openParen) {
+            buf.append(")");
+        }
+            
+        return buf.toString();
+    }
+
+    /**
+     * Returns this locale's layout orientation for characters.  The possible
+     * values are "left-to-right", "right-to-left", "top-to-bottom" or
+     * "bottom-to-top".
+     * @return The locale's layout orientation for characters.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getCharacterOrientation() {
+        return getTableString("layout", null, "characters", getName());
+    }
+
+    /**
+     * Returns this locale's layout orientation for lines.  The possible
+     * values are "left-to-right", "right-to-left", "top-to-bottom" or
+     * "bottom-to-top".
+     * @return The locale's layout orientation for lines.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getLineOrientation() {
+        return getTableString("layout", null, "lines", getName());
+    }
+
+    /** 
+     * Selector for <tt>getLocale()</tt> indicating the locale of the
+     * resource containing the data.  This is always at or above the
+     * valid locale.  If the valid locale does not contain the
+     * specific data being requested, then the actual locale will be
+     * above the valid locale.  If the object was not constructed from
+     * locale data, then the valid locale is <i>null</i>.
+     *
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static Type ACTUAL_LOCALE = new Type();
+
+    /** 
+     * Selector for <tt>getLocale()</tt> indicating the most specific
+     * locale for which any data exists.  This is always at or above
+     * the requested locale, and at or below the actual locale.  If
+     * the requested locale does not correspond to any resource data,
+     * then the valid locale will be above the requested locale.  If
+     * the object was not constructed from locale data, then the
+     * actual locale is <i>null</i>.
+     *
+     * <p>Note: The valid locale will be returned correctly in ICU
+     * 3.0 or later.  In ICU 2.8, it is not returned correctly.
+     * @draft ICU 2.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */ 
+    public static Type VALID_LOCALE = new Type();
+
+    /**
+     * Opaque selector enum for <tt>getLocale()</tt>.
+     * @see com.ibm.icu.util.ULocale
+     * @see com.ibm.icu.util.ULocale#ACTUAL_LOCALE
+     * @see com.ibm.icu.util.ULocale#VALID_LOCALE
+     * @draft ICU 2.8 (retainAll)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final class Type {
+        private Type() {}
+    }
+
+  /**
+    * Based on a HTTP formatted list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * @param acceptLanguageList list in HTTP "Accept-Language:" format of acceptable locales
+    * @param availableLocales list of available locales. One of these will be returned.
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the availableLocales list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(String acceptLanguageList, ULocale[] availableLocales, 
+                                         boolean[] fallback) {
+        if (acceptLanguageList == null) {
+            throw new NullPointerException();
+        }
+        ULocale acceptList[] = null;
+        try {
+            acceptList = parseAcceptLanguage(acceptLanguageList, true);
+        } catch (ParseException pe) {
+            acceptList = null;
+        }
+        if (acceptList == null) {
+            return null;
+        }
+        return acceptLanguage(acceptList, availableLocales, fallback);
+    }
+
+    /**
+    * Based on a list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * @param acceptLanguageList list of acceptable locales
+    * @param availableLocales list of available locales. One of these will be returned.
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the availableLocales list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(ULocale[] acceptLanguageList, ULocale[]
+    availableLocales, boolean[] fallback) {
+        // fallbacklist
+        int i,j;
+        if(fallback != null) {
+            fallback[0]=true;
+        }
+        for(i=0;i<acceptLanguageList.length;i++) {
+            ULocale aLocale = acceptLanguageList[i];
+            boolean[] setFallback = fallback;
+            do {
+                for(j=0;j<availableLocales.length;j++) {
+                    if(availableLocales[j].equals(aLocale)) {
+                        if(setFallback != null) {
+                            setFallback[0]=false; // first time with this locale - not a fallback.
+                        }
+                        return availableLocales[j];
+                    }
+                }
+                Locale loc = aLocale.toLocale();
+                Locale parent = LocaleUtility.fallback(loc);
+                if(parent != null) {
+                    aLocale = new ULocale(parent);
+                } else {
+                    aLocale = null;
+                }
+                setFallback = null; // Do not set fallback in later iterations
+            } while (aLocale != null);
+        }
+        return null;
+    }
+
+   /**
+    * Based on a HTTP formatted list of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * This function will choose a locale from the ULocale.getAvailableLocales() list as available.
+    * @param acceptLanguageList list in HTTP "Accept-Language:" format of acceptable locales
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the ULocale.getAvailableLocales() list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(String acceptLanguageList, boolean[] fallback) {
+        return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(),
+                                fallback);
+    }
+
+   /**
+    * Based on an ordered array of acceptable locales, determine an available locale for the user.
+    * NullPointerException is thrown if acceptLanguageList or availableLocales is
+    * null.  If fallback is non-null, it will contain true if a fallback locale (one
+    * not in the acceptLanguageList) was returned.  The value on entry is ignored. 
+    * ULocale will be one of the locales in availableLocales, or the ROOT ULocale if
+    * if a ROOT locale was used as a fallback (because nothing else in
+    * availableLocales matched).  No ULocale array element should be null; behavior
+    * is undefined if this is the case.
+    * This function will choose a locale from the ULocale.getAvailableLocales() list as available.
+    * @param acceptLanguageList ordered array of acceptable locales (preferred are listed first)
+    * @param fallback if non-null, a 1-element array containing a boolean to be set with the fallback status
+    * @return one of the locales from the ULocale.getAvailableLocales() list, or null if none match
+    * @stable ICU 3.4
+    */
+
+    public static ULocale acceptLanguage(ULocale[] acceptLanguageList, boolean[]
+                                         fallback) {
+        return acceptLanguage(acceptLanguageList, ULocale.getAvailableLocales(),
+                fallback);
+    }
+
+    /**
+     * Package local method used for parsing Accept-Language string
+     * @internal ICU 3.8
+     */
+    static ULocale[] parseAcceptLanguage(String acceptLanguage, boolean isLenient) throws ParseException {
+        /**
+         * @internal ICU 3.4
+         */
+        class ULocaleAcceptLanguageQ implements Comparable {
+            private double q;
+            private double serial;
+            public ULocaleAcceptLanguageQ(double theq, int theserial) {
+                q = theq;
+                serial = theserial;
+            }
+            public int compareTo(Object o) {
+                ULocaleAcceptLanguageQ other = (ULocaleAcceptLanguageQ) o;
+                if (q > other.q) { // reverse - to sort in descending order
+                    return -1;
+                } else if (q < other.q) {
+                    return 1;
+                }
+                if (serial < other.serial) {
+                    return -1;
+                } else if (serial > other.serial) {
+                    return 1;
+                } else {
+                    return 0; // same object
+                }
+            }
+        }
+
+        // parse out the acceptLanguage into an array
+        TreeMap map = new TreeMap();
+        StringBuffer languageRangeBuf = new StringBuffer();
+        StringBuffer qvalBuf = new StringBuffer();
+        int state = 0;
+        acceptLanguage += ","; // append comma to simplify the parsing code
+        int n;
+        boolean subTag = false;
+        boolean q1 = false;
+        for (n = 0; n < acceptLanguage.length(); n++) {
+            boolean gotLanguageQ = false;
+            char c = acceptLanguage.charAt(n);
+            switch (state) {
+            case 0: // before language-range start
+                if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
+                    // in language-range
+                    languageRangeBuf.append(c);
+                    state = 1;
+                    subTag = false;
+                } else if (c == '*') {
+                    languageRangeBuf.append(c);
+                    state = 2;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid character
+                    state = -1;
+                }
+                break;
+            case 1: // in language-range
+                if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')) {
+                    languageRangeBuf.append(c);
+                } else if (c == '-') {
+                    subTag = true;
+                    languageRangeBuf.append(c);
+                } else if (c == '_') {
+                    if (isLenient) {
+                        subTag = true;
+                        languageRangeBuf.append(c);
+                    } else {
+                        state = -1;
+                    }
+                } else if ('0' <= c && c <= '9') {
+                    if (subTag) {
+                        languageRangeBuf.append(c);                        
+                    } else {
+                        // DIGIT is allowed only in language sub tag
+                        state = -1;
+                    }
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // language-range end
+                    state = 3;
+                } else if (c == ';') {
+                    // before q
+                    state = 4;
+                } else {
+                    // invalid character for language-range
+                    state = -1;
+                }
+                break;
+            case 2: // saw wild card range
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // language-range end
+                    state = 3;
+                } else if (c == ';') {
+                    // before q
+                    state = 4;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 3: // language-range end
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ';') {
+                    // before q
+                    state =4;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 4: // before q
+                if (c == 'q') {
+                    // before equal
+                    state = 5;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 5: // before equal
+                if (c == '=') {
+                    // before q value
+                    state = 6;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 6: // before q value
+                if (c == '0') {
+                    // q value start with 0
+                    q1 = false;
+                    qvalBuf.append(c);
+                    state = 7;
+                } else if (c == '1') {
+                    // q value start with 1
+                    qvalBuf.append(c);
+                    state = 7;
+                } else if (c == '.') {
+                    if (isLenient) {
+                        qvalBuf.append(c);
+                        state = 8;
+                    } else {
+                        state = -1;
+                    }
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 7: // q value start
+                if (c == '.') {
+                    // before q value fraction part
+                    qvalBuf.append(c);
+                    state = 8;
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // after q value
+                    state = 10;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 8: // before q value fraction part
+                if ('0' <= c || c <= '9') {
+                    if (q1 && c != '0' && !isLenient) {
+                        // if q value starts with 1, the fraction part must be 0
+                        state = -1;
+                    } else {
+                        // in q value fraction part
+                        qvalBuf.append(c);
+                        state = 9;
+                    }
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 9: // in q value fraction part
+                if ('0' <= c && c <= '9') {
+                    if (q1 && c != '0') {
+                        // if q value starts with 1, the fraction part must be 0
+                        state = -1;
+                    } else {
+                        qvalBuf.append(c);
+                    }
+                } else if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c == ' ' || c == '\t') {
+                    // after q value
+                    state = 10;
+                } else {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            case 10: // after q value
+                if (c == ',') {
+                    // language-q end
+                    gotLanguageQ = true;
+                } else if (c != ' ' && c != '\t') {
+                    // invalid
+                    state = -1;
+                }
+                break;
+            }
+            if (state == -1) {
+                // error state
+                throw new ParseException("Invalid Accept-Language", n);
+            }
+            if (gotLanguageQ) {
+                double q = 1.0;
+                if (qvalBuf.length() != 0) {
+                    try {
+                        q = Double.parseDouble(qvalBuf.toString());
+                    } catch (NumberFormatException nfe) {
+                        // Already validated, so it should never happen
+                        q = 1.0;
+                    }
+                    if (q > 1.0) {
+                        q = 1.0;
+                    }
+                }
+                if (languageRangeBuf.charAt(0) != '*') {
+                    int serial = map.size();
+                    ULocaleAcceptLanguageQ entry = new ULocaleAcceptLanguageQ(q, serial);
+                    map.put(entry, new ULocale(canonicalize(languageRangeBuf.toString()))); // sort in reverse order..   1.0, 0.9, 0.8 .. etc                    
+                }
+
+                // reset buffer and parse state
+                languageRangeBuf.setLength(0);
+                qvalBuf.setLength(0);
+                state = 0;
+            }
+        }
+        if (state != 0) {
+            // Well, the parser should handle all cases.  So just in case.
+            throw new ParseException("Invalid AcceptlLanguage", n);
+        }
+
+        // pull out the map 
+        ULocale acceptList[] = (ULocale[])map.values().toArray(new ULocale[map.size()]);
+        return acceptList;
+    }
+
+    private static final String UNDEFINED_LANGUAGE = "und";
+    private static final String UNDEFINED_SCRIPT = "Zzzz";
+    private static final String UNDEFINED_REGION = "ZZ";
+
+    /**
+     * Supply most likely subtags to the given locale
+     * @param loc The input locale
+     * @return A ULocale with most likely subtags filled in.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static ULocale addLikelySubtag(ULocale loc) {
+        return addLikelySubtags(loc);
+    }
+
+    /**
+     * Add the likely subtags for a provided locale ID, per the algorithm described
+     * in the following CLDR technical report:
+     *
+     *   http://www.unicode.org/reports/tr35/#Likely_Subtags
+     *
+     * If the provided ULocale instance is already in the maximal form, or there is no
+     * data available available for maximization, it will be returned.  For example,
+     * "und-Zzzz" cannot be maximized, since there is no reasonable maximization.
+     * Otherwise, a new ULocale instance with the maximal form is returned.
+     * 
+     * Examples:
+     *
+     * "en" maximizes to "en_Latn_US"
+     *
+     * "de" maximizes to "de_Latn_US"
+     *
+     * "sr" maximizes to "sr_Cyrl_RS"
+     *
+     * "sh" maximizes to "sr_Latn_RS" (Note this will not reverse.)
+     *
+     * "zh_Hani" maximizes to "zh_Hans_CN" (Note this will not reverse.)
+     *
+     * @param loc The ULocale to maximize
+     * @return The maximized ULocale instance.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale
+    addLikelySubtags(ULocale loc)
+    {
+        String[] tags = new String[3];
+        String trailing = null;
+  
+        int trailingIndex = parseTagString(
+            loc.localeID,
+            tags);
+
+        if (trailingIndex < loc.localeID.length()) {
+            trailing = loc.localeID.substring(trailingIndex);
+        }
+
+        String newLocaleID =
+            createLikelySubtagsString(
+                (String)tags[0],
+                (String)tags[1],
+                (String)tags[2],
+                trailing);
+
+        return newLocaleID == null ? loc : new ULocale(newLocaleID);
+    }
+
+    /**
+     * Minimize the subtags for a provided locale ID, per the algorithm described
+     * in the following CLDR technical report:
+     *
+     *   http://www.unicode.org/reports/tr35/#Likely_Subtags
+     *
+     * If the provided ULocale instance is already in the minimal form, or there
+     * is no data available for minimization, it will be returned.  Since the
+     * minimization algorithm relies on proper maximization, see the comments
+     * for addLikelySubtags for reasons why there might not be any data.
+     *
+     * Examples:
+     *
+     * "en_Latn_US" minimizes to "en"
+     *
+     * "de_Latn_US" minimizes to "de"
+     *
+     * "sr_Cyrl_RS" minimizes to "sr"
+     *
+     * "zh_Hant_TW" minimizes to "zh_TW" (The region is preferred to the
+     * script, and minimizing to "zh" would imply "zh_Hans_CN".)
+     *
+     * @param loc The ULocale to minimize
+     * @return The minimized ULocale instance.
+     * @draft ICU 4.0
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale
+    minimizeSubtags(ULocale loc)
+    {
+        String[] tags = new String[3];
+
+        int trailingIndex = parseTagString(
+                loc.localeID,
+                tags);
+
+        String originalLang = (String)tags[0];
+        String originalScript = (String)tags[1];
+        String originalRegion = (String)tags[2];
+        String originalTrailing = null;
+
+        if (trailingIndex < loc.localeID.length()) {
+            /*
+             * Create a String that contains everything
+             * after the language, script, and region.
+             */
+            originalTrailing = loc.localeID.substring(trailingIndex);
+        }
+
+        /**
+         * First, we need to first get the maximization
+         * by adding any likely subtags.
+         **/
+        String maximizedLocaleID =
+            createLikelySubtagsString(
+                originalLang,
+                originalScript,
+                originalRegion,
+                null);
+
+        /**
+         * If maximization fails, there's nothing
+         * we can do.
+         **/
+        if (isEmptyString(maximizedLocaleID)) {
+            return loc;
+        }
+        else {
+            /**
+             * Start first with just the language.
+             **/
+            String tag =
+                createLikelySubtagsString(
+                    originalLang,
+                    null,
+                    null,
+                    null);
+
+            if (tag.equals(maximizedLocaleID)) {
+                String newLocaleID =
+                    createTagString(
+                        originalLang,
+                        null,
+                        null,
+                        originalTrailing);
+
+                return new ULocale(newLocaleID);
+            }
+        }
+
+        /**
+         * Next, try the language and region.
+         **/
+        if (originalRegion.length() != 0) {
+
+            String tag =
+                createLikelySubtagsString(
+                    originalLang,
+                    null,
+                    originalRegion,
+                    null);
+
+            if (tag.equals(maximizedLocaleID)) {
+                String newLocaleID =
+                    createTagString(
+                        originalLang,
+                        null,
+                        originalRegion,
+                        originalTrailing);
+
+                return new ULocale(newLocaleID);
+            }
+        }
+
+        /**
+         * Finally, try the language and script.  This is our last chance,
+         * since trying with all three subtags would only yield the
+         * maximal version that we already have.
+         **/
+        if (originalRegion.length() != 0 &&
+            originalScript.length() != 0) {
+
+            String tag =
+                createLikelySubtagsString(
+                    originalLang,
+                    originalScript,
+                    null,
+                    null);
+
+            if (tag.equals(maximizedLocaleID)) {
+                String newLocaleID =
+                    createTagString(
+                        originalLang,
+                        originalScript,
+                        null,
+                        originalTrailing);
+
+                return new ULocale(newLocaleID);
+            }
+        }
+
+        return loc;
+    }
+
+    /**
+     * A trivial utility function that checks for a null
+     * reference or checks the length of the supplied String.
+     *
+     *   @param string The string to check
+     *
+     *   @return true if the String is empty, or if the reference is null.
+     */
+    private static boolean isEmptyString(String string) {
+      return string == null || string.length() == 0;
+    }
+    
+    /**
+     * Append a tag to a StringBuffer, adding the separator if necessary.The tag must
+     * not be a zero-length string.
+     *
+     * @param tag The tag to add.
+     * @param buffer The output buffer.
+     **/
+    private static void
+    appendTag(
+        String tag,
+        StringBuffer buffer) {
+    
+        if (buffer.length() != 0) {
+            buffer.append(UNDERSCORE);
+        }
+    
+        buffer.append(tag);
+    }
+    
+    /**
+     * Create a tag string from the supplied parameters.  The lang, script and region
+     * parameters may be null references.
+     *
+     * If any of the language, script or region parameters are empty, and the alternateTags
+     * parameter is not null, it will be parsed for potential language, script and region tags
+     * to be used when constructing the new tag.  If the alternateTags parameter is null, or
+     * it contains no language tag, the default tag for the unknown language is used.
+     *
+     * @param lang The language tag to use.
+     * @param script The script tag to use.
+     * @param region The region tag to use.
+     * @param trailing Any trailing data to append to the new tag.
+     * @param alternateTags A string containing any alternate tags.
+     * @return The new tag string.
+     **/
+    private static String
+    createTagString(
+        String lang,
+        String script,
+        String region,
+        String trailing,
+        String alternateTags) {
+
+        IDParser parser = null;
+        boolean regionAppended = false;
+
+        StringBuffer tag = new StringBuffer();
+    
+        if (!isEmptyString(lang)) {
+            appendTag(
+                lang,
+                tag);
+        }
+        else if (isEmptyString(alternateTags)) {
+            /*
+             * Append the value for an unknown language, if
+             * we found no language.
+             */
+            appendTag(
+                UNDEFINED_LANGUAGE,
+                tag);
+        }
+        else {
+            parser = new IDParser(alternateTags);
+    
+            String alternateLang = parser.getLanguage();
+    
+            /*
+             * Append the value for an unknown language, if
+             * we found no language.
+             */
+            appendTag(
+                !isEmptyString(alternateLang) ? alternateLang : UNDEFINED_LANGUAGE,
+                tag);
+        }
+    
+        if (!isEmptyString(script)) {
+            appendTag(
+                script,
+                tag);
+        }
+        else if (!isEmptyString(alternateTags)) {
+            /*
+             * Parse the alternateTags string for the script.
+             */
+            if (parser == null) {
+                parser = new IDParser(alternateTags);
+            }
+    
+            String alternateScript = parser.getScript();
+    
+            if (!isEmptyString(alternateScript)) {
+                appendTag(
+                    alternateScript,
+                    tag);
+            }
+        }
+    
+        if (!isEmptyString(region)) {
+            appendTag(
+                region,
+                tag);
+
+            regionAppended = true;
+        }
+        else if (!isEmptyString(alternateTags)) {
+            /*
+             * Parse the alternateTags string for the region.
+             */
+            if (parser == null) {
+                parser = new IDParser(alternateTags);
+            }
+    
+            String alternateRegion = parser.getCountry();
+    
+            if (!isEmptyString(alternateRegion)) {
+                appendTag(
+                    alternateRegion,
+                    tag);
+
+                regionAppended = true;
+            }
+        }
+    
+        if (trailing != null && trailing.length() > 1) {
+            /*
+             * The current ICU format expects two underscores
+             * will separate the variant from the preceeding
+             * parts of the tag, if there is no region.
+             */
+            int separators = 0;
+
+            if (trailing.charAt(0) == UNDERSCORE) { 
+                if (trailing.charAt(1) == UNDERSCORE) {
+                    separators = 2;
+                }
+                }
+                else {
+                    separators = 1;
+                }
+
+            if (regionAppended) {
+                /*
+                 * If we appended a region, we may need to strip
+                 * the extra separator from the variant portion.
+                 */
+                if (separators == 2) {
+                    tag.append(trailing.substring(1));
+                }
+                else {
+                    tag.append(trailing);
+                }
+            }
+            else {
+                /*
+                 * If we did not append a region, we may need to add
+                 * an extra separator to the variant portion.
+                 */
+                if (separators == 1) {
+                    tag.append(UNDERSCORE);
+                }
+                tag.append(trailing);
+            }
+        }
+    
+        return tag.toString();
+    }
+    
+    /**
+     * Create a tag string from the supplied parameters.  The lang, script and region
+     * parameters may be null references.If the lang parameter is an empty string, the
+     * default value for an unknown language is written to the output buffer.
+     *
+     * @param lang The language tag to use.
+     * @param script The script tag to use.
+     * @param region The region tag to use.
+     * @param trailing Any trailing data to append to the new tag.
+     * @return The new String.
+     **/
+    static String
+    createTagString(
+            String lang,
+            String script,
+            String region,
+            String trailing) {
+    
+        return createTagString(
+                    lang,
+                    script,
+                    region,
+                    trailing,
+                    null);
+    }
+    
+    /**
+     * Parse the language, script, and region subtags from a tag string, and return the results.
+     *
+     * This function does not return the canonical strings for the unknown script and region.
+     *
+     * @param localeID The locale ID to parse.
+     * @param tags An array of three String references to return the subtag strings.
+     * @return The number of chars of the localeID parameter consumed.
+     **/
+    private static int
+    parseTagString(
+        String localeID,
+        String tags[])
+    {
+        IDParser parser = new IDParser(localeID);
+    
+        String lang = parser.getLanguage();
+        String script = parser.getScript();
+        String region = parser.getCountry();
+    
+        if (isEmptyString(lang)) {
+            tags[0] = UNDEFINED_LANGUAGE;
+        }
+        else {
+            tags[0] = lang;
+        }
+    
+        if (script.equals(UNDEFINED_SCRIPT)) {
+            tags[1] = "";
+        }
+        else {
+            tags[1] = script;
+        }
+        
+        if (region.equals(UNDEFINED_REGION)) {
+            tags[2] = "";
+        }
+        else {
+            tags[2] = region;
+        }
+    
+        /*
+         * Search for the variant.  If there is one, then return the index of
+         * the preceeding separator.
+         * If there's no variant, search for the keyword delimiter,
+         * and return its index.  Otherwise, return the length of the
+         * string.
+         * 
+         * $TOTO(dbertoni) we need to take into account that we might
+         * find a part of the language as the variant, since it can
+         * can have a variant portion that is long enough to contain
+         * the same characters as the variant. 
+         */
+        String variant = parser.getVariant();
+    
+        if (!isEmptyString(variant)){
+            int index = localeID.indexOf(variant); 
+
+            
+            return  index > 0 ? index - 1 : index;
+        }
+        else
+        {
+            int index = localeID.indexOf('@');
+    
+            return index == -1 ? localeID.length() : index;
+        }
+    }
+    
+    private static String
+    lookupLikelySubtags(String localeId) {
+        UResourceBundle bundle =
+            UResourceBundle.getBundleInstance(
+                    ICUResourceBundle.ICU_BASE_NAME, "likelySubtags");
+        try {
+            return bundle.getString(localeId);
+        }
+        catch(MissingResourceException e) {
+            return null;
+        }
+    }
+
+    private static String
+    createLikelySubtagsString(
+        String lang,
+        String script,
+        String region,
+        String variants) {
+    
+        /**
+         * Try the language with the script and region first.
+         **/
+        if (!isEmptyString(script) && !isEmptyString(region)) {
+    
+            String searchTag =
+                createTagString(
+                    lang,
+                    script,
+                    region,
+                    null);
+    
+            String likelySubtags = lookupLikelySubtags(searchTag);
+
+            /*
+            if (likelySubtags == null) {
+                if (likelySubtags2 != null) {
+                    System.err.println("Tag mismatch: \"(null)\" \"" + likelySubtags2 + "\"");
+                }
+            }
+            else if (likelySubtags2 == null) {
+                System.err.println("Tag mismatch: \"" + likelySubtags + "\" \"(null)\"");
+            }
+            else if (!likelySubtags.equals(likelySubtags2)) {
+                System.err.println("Tag mismatch: \"" + likelySubtags + "\" \"" + likelySubtags2 + "\"");
+            }
+            */
+            if (likelySubtags != null) {
+                // Always use the language tag from the
+                // maximal string, since it may be more
+                // specific than the one provided.
+                return createTagString(
+                            null,
+                            null,
+                            null,
+                            variants,
+                            likelySubtags);
+            }
+        }
+    
+        /**
+         * Try the language with just the script.
+         **/
+        if (!isEmptyString(script)) {
+    
+            String searchTag =
+                createTagString(
+                    lang,
+                    script,
+                    null,
+                    null);
+    
+            String likelySubtags = lookupLikelySubtags(searchTag);    
+            if (likelySubtags != null) {
+                // Always use the language tag from the
+                // maximal string, since it may be more
+                // specific than the one provided.
+                return createTagString(
+                            null,
+                            null,
+                            region,
+                            variants,
+                            likelySubtags);
+            }
+        }
+    
+        /**
+         * Try the language with just the region.
+         **/
+        if (!isEmptyString(region)) {
+    
+            String searchTag =
+                createTagString(
+                    lang,
+                    null,
+                    region,
+                    null);
+    
+            String likelySubtags = lookupLikelySubtags(searchTag);    
+    
+            if (likelySubtags != null) {
+                // Always use the language tag from the
+                // maximal string, since it may be more
+                // specific than the one provided.
+                return createTagString(
+                            null,
+                            script,
+                            null,
+                            variants,
+                            likelySubtags);
+            }
+        }
+    
+        /**
+         * Finally, try just the language.
+         **/
+        {
+            String searchTag =
+                createTagString(
+                    lang,
+                    null,
+                    null,
+                    null);
+    
+            String likelySubtags = lookupLikelySubtags(searchTag);    
+  
+            if (likelySubtags != null) {
+                // Always use the language tag from the
+                // maximal string, since it may be more
+                // specific than the one provided.
+                return createTagString(
+                            null,
+                            script,
+                            region,
+                            variants,
+                            likelySubtags);
+            }
+        }
+    
+        return null;
+    }
+}
diff --git a/src/com/ibm/icu/util/UResourceBundle.java b/src/com/ibm/icu/util/UResourceBundle.java
new file mode 100644
index 0000000..243b047
--- /dev/null
+++ b/src/com/ibm/icu/util/UResourceBundle.java
@@ -0,0 +1,1028 @@
+//##header J2SE15
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.lang.ref.SoftReference;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ICUResourceBundleReader;
+import com.ibm.icu.impl.ResourceBundleWrapper;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.util.ULocale;
+
+//#if defined(FOUNDATION10) || defined(J2SE13) || defined(ECLIPSE_FRAGMENT)
+//##import com.ibm.icu.impl.ByteBuffer;
+//#else
+import java.nio.ByteBuffer;
+//#endif
+
+/**
+ * A class representing a collection of resource information pertaining to a given
+ * locale. A resource bundle provides a way of accessing locale- specific information in
+ * a data file. You create a resource bundle that manages the resources for a given
+ * locale and then ask it for individual resources.
+ * <P>
+ * In ResourceBundle class, an object is created
+ * and the sub items are fetched using getString, getObject methods.
+ * In UResourceBundle,each individual element of a resource is a resource by itself.
+ *
+ * <P>
+ * Resource bundles in ICU are currently defined using text files which conform to the following
+ * <a href="http://source.icu-project.org/repos/icu/icuhtml/trunk/design/bnf_rb.txt">BNF definition</a>.
+ * More on resource bundle concepts and syntax can be found in the
+ * <a href="http://www.icu-project.org/userguide/ResourceManagement.html">Users Guide</a>.
+ * <P>
+ *
+ * The packaging of ICU *.res files can be of two types
+ * ICU4C:
+ * <pre>
+ *       root.res
+ *         |
+ *      --------
+ *     |        |
+ *   fr.res  en.res
+ *     |
+ *   --------
+ *  |        |
+ * fr_CA.res fr_FR.res
+ * </pre>
+ * JAVA/JDK:
+ * <pre>
+ *    LocaleElements.res
+ *         |
+ *      -------------------
+ *     |                   |
+ * LocaleElements_fr.res  LocaleElements_en.res
+ *     |
+ *   ---------------------------
+ *  |                            |
+ * LocaleElements_fr_CA.res   LocaleElements_fr_FR.res
+ * </pre>
+ * Depending on the organization of your resources, the syntax to getBundleInstance will change.
+ * To open ICU style organization use:
+ * <pre>
+ *      UResourceBundle bundle = UResourceBundle.getBundleInstance("com/mycompany/resources", "en_US", myClassLoader);
+ * </pre>
+ * To open Java/JDK style organization use:
+ * <pre>
+ *      UResourceBundle bundle = UResourceBundle.getBundleInstance("com.mycompany.resources.LocaleElements", "en_US", myClassLoader);
+ * </pre>
+ * <note>
+ * Please use pass a class loader for loading non-ICU resources. Java security does not
+ * allow loading of resources across jar files. You must provide your class loader
+ * to load the resources
+ * </note>
+ * @stable ICU 3.0
+ * @author ram
+ */
+public abstract class UResourceBundle extends ResourceBundle{
+
+
+    /**
+     * Creates a resource bundle using the specified base name and locale.
+     * ICU_DATA_CLASS is used as the default root.
+     * @param baseName the base name of the resource bundle, a fully qualified class name
+     * @param localeName the locale for which a resource bundle is desired
+     * @exception MissingResourceException
+     *     if no resource bundle for the specified base name can be found
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(String baseName, String localeName){
+        return getBundleInstance(baseName, localeName, ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a resource bundle using the specified base name, locale, and class root.
+     *
+     * @param baseName the base name of the resource bundle, a fully qualified class name
+     * @param localeName the locale for which a resource bundle is desired
+     * @param root the class object from which to load the resource bundle
+     * @exception MissingResourceException
+     *     if no resource bundle for the specified base name can be found
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(String baseName, String localeName, ClassLoader root){
+        return getBundleInstance(baseName, localeName, root, false);
+    }
+
+    /**
+     * Creates a resource bundle using the specified base name, locale, and class root.
+     *
+     * @param baseName the base name of the resource bundle, a fully qualified class name
+     * @param localeName the locale for which a resource bundle is desired
+     * @param root the class object from which to load the resource bundle
+     * @param disableFallback Option to disable locale inheritence.
+     *                          If true the fallback chain will not be built.
+     * @exception MissingResourceException
+     *     if no resource bundle for the specified base name can be found
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     *
+     */
+    protected static UResourceBundle getBundleInstance(String baseName, String localeName, ClassLoader root, boolean disableFallback) {
+        return instantiateBundle(baseName, localeName, root, disableFallback);
+    }
+
+    /**
+     * Sole constructor.  (For invocation by subclass constructors, typically
+     * implicit.)  This is public for compatibility with Java, whose compiler
+     * will generate public default constructors for an abstract class.
+     * @stable ICU 3.0
+     */
+    public UResourceBundle() {
+    }
+
+    /**
+     * Creates a UResourceBundle for the locale specified, from which users can extract resources by using
+     * their corresponding keys.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @return a resource bundle for the given locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(ULocale locale) {
+        if (locale==null) {
+            locale = ULocale.getDefault();
+        }
+        return getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale.toString(), ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a UResourceBundle for the default locale and specified base name,
+     * from which users can extract resources by using their corresponding keys.
+     * @param baseName  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @return a resource bundle for the given base name and default locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(String baseName) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        ULocale uloc = ULocale.getDefault();
+        return getBundleInstance(baseName, uloc.toString(), ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a UResourceBundle for the specified locale and specified base name,
+     * from which users can extract resources by using their corresponding keys.
+     * @param baseName  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+
+    public static UResourceBundle getBundleInstance(String baseName, Locale locale) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        ULocale uloc = locale == null ? ULocale.getDefault() : ULocale.forLocale(locale);
+
+        return getBundleInstance(baseName, uloc.toString(), ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a UResourceBundle, from which users can extract resources by using
+     * their corresponding keys.
+     * @param baseName string containing the name of the data package.
+     *                    If null the default ICU package name is used.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+    public static UResourceBundle getBundleInstance(String baseName, ULocale locale) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        return getBundleInstance(baseName, locale.toString(), ICUResourceBundle.ICU_DATA_CLASS_LOADER, false);
+    }
+
+    /**
+     * Creates a UResourceBundle for the specified locale and specified base name,
+     * from which users can extract resources by using their corresponding keys.
+     * @param baseName  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @param loader  the loader to use
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.8
+     */
+    public static UResourceBundle getBundleInstance(String baseName, Locale locale, ClassLoader loader) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        ULocale uloc = locale == null ? ULocale.getDefault() : ULocale.forLocale(locale);
+        return getBundleInstance(baseName, uloc.toString(), loader, false);
+    }
+
+    /**
+     * Creates a UResourceBundle, from which users can extract resources by using
+     * their corresponding keys.<br><br>
+     * Note: Please use this API for loading non-ICU resources. Java security does not
+     * allow loading of resources across jar files. You must provide your class loader
+     * to load the resources
+     * @param baseName string containing the name of the data package.
+     *                    If null the default ICU package name is used.
+     * @param locale  specifies the locale for which we want to open the resource.
+     *                If null the bundle for default locale is opened.
+     * @param loader  the loader to use
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.8
+     */
+    public static UResourceBundle getBundleInstance(String baseName, ULocale locale, ClassLoader loader) {
+        if (baseName == null) {
+            baseName = ICUResourceBundle.ICU_BASE_NAME;
+        }
+        if (locale == null) {
+            locale = ULocale.getDefault();
+        }
+        return getBundleInstance(baseName, locale.toString(), loader, false);
+    }
+
+    /**
+     * Returns the RFC 3066 conformant locale id of this resource bundle.
+     * This method can be used after a call to getBundleInstance() to
+     * determine whether the resource bundle returned really
+     * corresponds to the requested locale or is a fallback.
+     *
+     * @return the locale of this resource bundle
+     * @stable ICU 3.0
+     */
+    public abstract ULocale getULocale();
+
+    /**
+     * Gets the localeID
+     * @return The string representation of the localeID
+     * @stable ICU 3.0
+     */
+    protected abstract String getLocaleID();
+    /**
+     * Gets the base name of the resource bundle
+     * @return The string representation of the base name
+     * @stable ICU 3.0
+     */
+    protected abstract String getBaseName();
+
+    /**
+     * Gets the parent bundle
+     * @return The parent bundle
+     * @stable ICU 3.0
+     */
+    protected abstract UResourceBundle getParent();
+
+
+    /**
+     * Get the locale of this bundle
+     * @return the locale of this resource bundle
+     * @stable ICU 3.0
+     */
+    public Locale getLocale(){
+        return getULocale().toLocale();
+    }
+
+    // Cache for ResourceBundle instantiation
+    private static ICUCache BUNDLE_CACHE = new SimpleCache();
+
+    /**
+     * @internal
+     */
+    public static void resetBundleCache()
+    {
+        /*
+         * A HACK!!!!!
+         * Currently if a resourcebundle with fallback turned ON is added to the cache
+         * and then a getBundleInstance() is called for a bundle with fallback turned OFF
+         * it will actually search the cache for any bundle of the same locale
+         * regaurdless of fallback status. This method has been created so that if
+         * The calling method KNOWS that instances of the other fallback state may be in the 
+         * cache, the calling method may call this method to clear out the cache.
+         *
+         */
+        //TODO figure a way around this method(see method comment)
+        BUNDLE_CACHE = new SimpleCache();
+    }
+    
+    private static void addToCache(ResourceCacheKey key, UResourceBundle b) {
+        BUNDLE_CACHE.put(key, b);
+    }
+
+    /**
+     * Method used by subclasses to add the a particular resource bundle object to the managed cache
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    protected static void addToCache(ClassLoader cl, String fullName, ULocale defaultLocale,  UResourceBundle b){
+        synchronized(cacheKey){
+            cacheKey.setKeyValues(cl, fullName, defaultLocale);
+            addToCache((ResourceCacheKey)cacheKey.clone(), b);
+        }
+    }
+    /**
+     * Method used by sub classes to load a resource bundle object from the managed cache
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    protected static UResourceBundle loadFromCache(ClassLoader cl, String fullName, ULocale defaultLocale){
+        synchronized(cacheKey){
+            cacheKey.setKeyValues(cl, fullName, defaultLocale);
+            return loadFromCache(cacheKey);
+        }
+    }
+    private static UResourceBundle loadFromCache(ResourceCacheKey key) {
+        return (UResourceBundle)BUNDLE_CACHE.get(key);
+    }
+
+    /**
+     * Key used for cached resource bundles.  The key checks
+     * the resource name, the class root, and the default
+     * locale to determine if the resource is a match to the
+     * requested one. The root may be null, but the
+     * searchName and the default locale must have a non-null value.
+     * Note that the default locale may change over time, and
+     * lookup should always be based on the current default
+     * locale (if at all).
+     */
+    private static final class ResourceCacheKey implements Cloneable {
+        private SoftReference loaderRef;
+        private String searchName;
+        private ULocale defaultLocale;
+        private int hashCodeCache;
+        ///CLOVER:OFF
+        public boolean equals(Object other) {
+            if (this == other) {
+                return true;
+            }
+            try {
+                final ResourceCacheKey otherEntry = (ResourceCacheKey) other;
+                //quick check to see if they are not equal
+                if (hashCodeCache != otherEntry.hashCodeCache) {
+                    return false;
+                }
+                //are the names the same?
+                if (!searchName.equals(otherEntry.searchName)) {
+                    return false;
+                }
+                // are the default locales the same?
+                if (defaultLocale == null) {
+                    if (otherEntry.defaultLocale != null) {
+                        return false;
+                    }
+                } else {
+                    if (!defaultLocale.equals(otherEntry.defaultLocale)) {
+                        return false;
+                    }
+                }
+                //are refs (both non-null) or (both null)?
+                if (loaderRef == null) {
+                    return otherEntry.loaderRef == null;
+                } else {
+                    return (otherEntry.loaderRef != null)
+                            && (loaderRef.get() == otherEntry.loaderRef.get());
+                }
+            } catch (NullPointerException e) {
+                return false;
+            } catch (ClassCastException e) {
+                return false;
+            }
+        }
+        public int hashCode() {
+            return hashCodeCache;
+        }
+        public Object clone() {
+            try {
+                return super.clone();
+            } catch (CloneNotSupportedException e) {
+                //this should never happen
+                throw new IllegalStateException();
+            }
+        }
+        ///CLOVER:ON
+        private synchronized void setKeyValues(ClassLoader root, String searchName, ULocale defaultLocale) {
+            this.searchName = searchName;
+            hashCodeCache = searchName.hashCode();
+            this.defaultLocale = defaultLocale;
+            if (defaultLocale != null) {
+                hashCodeCache ^= defaultLocale.hashCode();
+            }
+            if (root == null) {
+                this.loaderRef = null;
+            } else {
+                loaderRef = new SoftReference(root);
+                hashCodeCache ^= root.hashCode();
+            }
+        }
+        /*private void clear() {
+            setKeyValues(null, "", null);
+        }*/
+    }
+
+    private static final ResourceCacheKey cacheKey = new ResourceCacheKey();
+
+    private static final int ROOT_MISSING = 0;
+    private static final int ROOT_ICU = 1;
+    private static final int ROOT_JAVA = 2;
+
+    private static SoftReference ROOT_CACHE;
+
+    private static int getRootType(String baseName, ClassLoader root)
+    {
+        Map m = null;
+        Integer rootType;
+
+        if (ROOT_CACHE != null) {
+            m = (Map) ROOT_CACHE.get();
+        }
+
+        if (m == null) {
+            m = new HashMap();
+            ROOT_CACHE = new SoftReference(m);
+        }
+
+        rootType = (Integer) m.get(baseName);
+
+        if (rootType == null) {
+            String rootLocale = (baseName.indexOf('.')==-1) ? "root" : "";
+            int rt = ROOT_MISSING; // value set on success
+            try{
+                ICUResourceBundle.getBundleInstance(baseName, rootLocale, root, true);
+                rt = ROOT_ICU;
+            }catch(MissingResourceException ex){
+                try{
+                    ResourceBundleWrapper.getBundleInstance(baseName, rootLocale, root, true);
+                    rt = ROOT_JAVA;
+                }catch(MissingResourceException e){
+                    //throw away the exception
+                }
+            }
+
+            rootType = new Integer(rt);
+            m.put(baseName, rootType);
+        }
+
+        return rootType.intValue();
+    }
+
+    private static void setRootType(String baseName, int rootType)
+    {
+        Integer rt = new Integer(rootType);
+        Map m = null;
+
+        if (ROOT_CACHE != null) {
+            m = (Map) ROOT_CACHE.get();
+        } else {
+            m = new HashMap();
+            ROOT_CACHE = new SoftReference(m);
+        }
+
+        m.put(baseName, rt);
+    }
+
+    /**
+     * Loads a new resource bundle for the give base name, locale and class loader.
+     * Optionally will disable loading of fallback bundles.
+     * @param baseName the base name of the resource bundle, a fully qualified class name
+     * @param localeName the locale for which a resource bundle is desired
+     * @param root the class object from which to load the resource bundle
+     * @param disableFallback disables loading of fallback lookup chain
+     * @exception MissingResourceException
+     *     if no resource bundle for the specified base name can be found
+     * @return a resource bundle for the given base name and locale
+     * @stable ICU 3.0
+     */
+    protected static UResourceBundle instantiateBundle(String baseName, String localeName,
+                                                       ClassLoader root, boolean disableFallback){
+        UResourceBundle b = null;
+        int rootType = getRootType(baseName, root);
+
+        ULocale defaultLocale = ULocale.getDefault();
+
+        switch (rootType)
+        {
+        case ROOT_ICU:
+            if(disableFallback) {
+                String fullName = ICUResourceBundleReader.getFullName(baseName, localeName);
+                synchronized(cacheKey){
+                    cacheKey.setKeyValues(root, fullName, defaultLocale);
+                    b = loadFromCache(cacheKey);
+                }
+
+                if (b == null) {
+                    b = ICUResourceBundle.getBundleInstance(baseName, localeName, root, disableFallback);
+                    //cacheKey.setKeyValues(root, fullName, defaultLocale);
+                    addToCache(cacheKey, b);
+                }
+            } else {
+                b = ICUResourceBundle.getBundleInstance(baseName, localeName, root, disableFallback);
+            }
+
+            return b;
+
+        case ROOT_JAVA:
+            return ResourceBundleWrapper.getBundleInstance(baseName, localeName, root, disableFallback);
+
+        default:
+            try{
+                b = ICUResourceBundle.getBundleInstance(baseName, localeName, root, disableFallback);
+                setRootType(baseName, ROOT_ICU);
+            }catch(MissingResourceException ex){
+                b = ResourceBundleWrapper.getBundleInstance(baseName, localeName, root, disableFallback);
+                setRootType(baseName, ROOT_JAVA);
+            }
+            return b;
+        }
+    }
+
+
+    /**
+     * Returns a binary data from a binary resource.
+     *
+     * @return a pointer to a chuck of unsigned bytes which live in a memory mapped/DLL file.
+     * @see #getIntVector
+     * @see #getInt
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public ByteBuffer getBinary() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a string from a string resource type
+     *
+     * @return a string
+     * @see #getBinary()
+     * @see #getIntVector
+     * @see #getInt
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public String getString() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a string array from a array resource type
+     *
+     * @return a string
+     * @see #getString()
+     * @see #getIntVector
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public String[] getStringArray() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a binary data from a binary resource.
+     *
+     * @param ba  The byte array to write the bytes to. A null variable is OK.
+     * @return an array bytes containing the binary data from the resource.
+     * @see #getIntVector
+     * @see #getInt
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public byte[] getBinary(byte[] ba) {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a 32 bit integer array from a resource.
+     *
+     * @return a pointer to a chunk of unsigned bytes which live in a memory mapped/DLL file.
+     * @see #getBinary()
+     * @see #getInt
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public int[] getIntVector() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a signed integer from a resource.
+     *
+     * @return an integer value
+     * @see #getIntVector
+     * @see #getBinary()
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public int getInt() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a unsigned integer from a resource.
+     * This integer is originally 28 bit and the sign gets propagated.
+     *
+     * @return an integer value
+     * @see #getIntVector
+     * @see #getBinary()
+     * @throws MissingResourceException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public int getUInt() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a resource in a given resource that has a given key.
+     *
+     * @param aKey               a key associated with the wanted resource
+     * @return                  a resource bundle object representing the resource
+     * @throws MissingResourceException
+     * @stable ICU 3.8
+     */
+    public UResourceBundle get(String aKey) {
+        UResourceBundle obj = handleGet(aKey, null, this);
+        if (obj == null) {
+            UResourceBundle res = this;
+            while ((res = res.getParent()) != null && obj == null) {
+                //call the get method to recursively fetch the resource
+                obj = res.handleGet(aKey, null, this);
+            }
+            if (obj == null) {
+                String fullName = ICUResourceBundleReader.getFullName(
+                        getBaseName(), getLocaleID());
+                throw new MissingResourceException(
+                        "Can't find resource for bundle " + fullName + ", key "
+                                + aKey, this.getClass().getName(), aKey);
+            }
+        }
+        ((ICUResourceBundle)obj).setLoadingStatus(getLocaleID());
+        return obj;
+    }
+
+    /**
+     * Returns the string in a given resource at the specified index.
+     *
+     * @param index            an index to the wanted string.
+     * @return                  a string which lives in the resource.
+     * @throws IndexOutOfBoundsException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public String getString(int index) {
+        ICUResourceBundle temp = (ICUResourceBundle)get(index);
+        if (temp.getType() == STRING) {
+            return temp.getString();
+        }
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns the resource in a given resource at the specified index.
+     *
+     * @param index             an index to the wanted resource.
+     * @return                  the sub resource UResourceBundle object
+     * @throws IndexOutOfBoundsException
+     * @throws MissingResourceException
+     * @stable ICU 3.8
+     */
+    public UResourceBundle get(int index) {
+        UResourceBundle obj = handleGet(index, null, this);
+        if (obj == null) {
+            obj = (ICUResourceBundle) getParent();
+            if (obj != null) {
+                obj = obj.get(index);
+            }
+            if (obj == null)
+                throw new MissingResourceException(
+                        "Can't find resource for bundle "
+                                + this.getClass().getName() + ", key "
+                                + getKey(), this.getClass().getName(), getKey());
+        }
+        ((ICUResourceBundle)obj).setLoadingStatus(getLocaleID());
+        return obj;
+    }
+    /**
+     * Returns the keys in this bundle as an enumeration
+     * @return an enumeration containing key strings
+     * @stable ICU 3.8
+     */
+    public Enumeration getKeys() {
+        initKeysVector();
+        return keys.elements();
+    }
+
+    private Vector keys = null;
+    private synchronized void initKeysVector(){
+        if(keys!=null){
+            return;
+        }
+        //ICUResourceBundle current = this;
+        keys = new Vector();
+        Enumeration e = this.handleGetKeys();
+        while(e.hasMoreElements()){
+            String elem = (String)e.nextElement();
+            if(!keys.contains(elem)){
+                keys.add(elem);
+            }
+        }
+    }
+
+    /**
+     * Returns the size of a resource. Size for scalar types is always 1,
+     * and for vector/table types is the number of child resources.
+     * <br><b><font color='red'>Warning: </font></b> Integer array is treated as a scalar type. There are no
+     *          APIs to access individual members of an integer array. It
+     *          is always returned as a whole.
+     * @return number of resources in a given resource.
+     * @stable ICU 3.8
+     */
+    public int getSize() {
+        return size;
+    }
+
+    /**
+     * Returns the type of a resource.
+     * Available types are {@link #INT INT}, {@link #ARRAY ARRAY},
+     * {@link #BINARY BINARY}, {@link #INT_VECTOR INT_VECTOR},
+     * {@link #STRING STRING}, {@link #TABLE TABLE}.
+     *
+     * @return type of the given resource.
+     * @stable ICU 3.8
+     */
+    public int getType() {
+        int type = ICUResourceBundle.RES_GET_TYPE(resource);
+        if(type==TABLE32){
+            return TABLE; //Mask the table32's real type
+        }
+        return type;
+    }
+
+    /**
+     * Return the version number associated with this UResourceBundle as an
+     * VersionInfo object.
+     * @return VersionInfo object containing the version of the bundle
+     * @stable ICU 3.8
+     */
+    public VersionInfo getVersion() {
+        return null;
+    }
+
+    /**
+     * Returns the iterator which iterates over this
+     * resource bundle
+     * @return UResourceBundleIterator that iterates over the resources in the bundle
+     * @stable ICU 3.8
+     */
+    public UResourceBundleIterator getIterator() {
+        return new UResourceBundleIterator(this);
+    }
+    /**
+     * Returns the key associated with a given resource. Not all the resources have a key - only
+     * those that are members of a table.
+     * @return a key associated to this resource, or null if it doesn't have a key
+     * @stable ICU 3.8
+     */
+    public String getKey() {
+        return key;
+    }
+    /**
+     * Resource type constant for "no resource".
+     * @stable ICU 3.8
+     */
+    public static final int NONE = -1;
+
+    /**
+     * Resource type constant for strings.
+     * @stable ICU 3.8
+     */
+    public static final int STRING = 0;
+
+    /**
+     * Resource type constant for binary data.
+     * @stable ICU 3.8
+     */
+    public static final int BINARY = 1;
+
+    /**
+     * Resource type constant for tables of key-value pairs.
+     * @stable ICU 3.8
+     */
+    public static final int TABLE = 2;
+
+    /**
+     * Resource type constant for aliases;
+     * internally stores a string which identifies the actual resource
+     * storing the data (can be in a different resource bundle).
+     * Resolved internally before delivering the actual resource through the API.
+     * @internal ICU 3.8
+     * @deprecated This API is ICU internal only.
+     */
+    protected static final int ALIAS = 3;
+
+    /**
+     * Internal use only.
+     * Alternative resource type constant for tables of key-value pairs.
+     * Never returned by getType().
+     * @internal ICU 3.8
+     * @deprecated This API is ICU internal only.
+     */
+    protected static final int TABLE32 = 4;
+
+    /**
+     * Resource type constant for a single 28-bit integer, interpreted as
+     * signed or unsigned by the getInt() function.
+     * @see #getInt
+     * @stable ICU 3.8
+     */
+    public static final int INT = 7;
+
+    /**
+     * Resource type constant for arrays of resources.
+     * @stable ICU 3.8
+     */
+    public static final int ARRAY = 8;
+
+    /**
+     * Resource type constant for vectors of 32-bit integers.
+     * @see #getIntVector
+     * @stable ICU 3.8
+     */
+    public static final int INT_VECTOR = 14;
+
+    //====== protected members ==============
+    /**
+     * Data member where the subclasses store the key
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected String key;
+    /**
+     * Data member where the subclasses store the size of resources
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int size = 1;
+    /**
+     * Data member where the subclasses store the offset within resource data
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected long resource = RES_BOGUS;
+    /**
+     * Data member where the subclasses store whether the resource is top level
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected boolean isTopLevel = false;
+
+    private static final long RES_BOGUS = 0xffffffff;
+
+    /**
+     * Actual worker method for fetching a resource based on the given key.
+     * Sub classes must override this method if they support resources with keys.
+     * @param aKey the key string of the resource to be fetched
+     * @param table hashtable object to hold references of resources already seen
+     * @param requested the original resource bundle object on which the get method was invoked.
+     *                  The requested bundle and the bundle on which this method is invoked
+     *                  are the same, except in the cases where aliases are involved.
+     * @return UResourceBundle a resource associated with the key
+     * @stable ICU 3.8
+     */
+    protected UResourceBundle handleGet(String aKey, HashMap table, UResourceBundle requested) {
+        return null;
+    }
+
+    /**
+     * Actual worker method for fetching a resource based on the given index.
+     * Sub classes must override this method if they support arrays of resources.
+     * @param index the index of the resource to be fetched
+     * @param table hashtable object to hold references of resources already seen
+     * @param requested the original resource bundle object on which the get method was invoked.
+     *                  The requested bundle and the bundle on which this method is invoked
+     *                  are the same, except in the cases where aliases are involved.
+     * @return UResourceBundle a resource associated with the index
+     * @stable ICU 3.8
+     */
+    protected UResourceBundle handleGet(int index, HashMap table, UResourceBundle requested) {
+        return null;
+    }
+
+    /**
+     * Actual worker method for fetching the array of strings in a resource.
+     * Sub classes must override this method if they support arrays of strings.
+     * @return String[] An array of strings containing strings
+     * @stable ICU 3.8
+     */
+    protected String[] handleGetStringArray() {
+        return null;
+    }
+
+    /**
+     * Actual worker method for fetching the keys of resources contained in the resource.
+     * Sub classes must override this method if they support keys and associated resources.
+     *
+     * @return Enumeration An enumeration of all the keys in this resource.
+     * @stable ICU 3.8
+     */
+    protected Enumeration handleGetKeys(){
+        Vector resKeys = new Vector();
+        UResourceBundle item = null;
+        for (int i = 0; i < size; i++) {
+            item = get(i);
+            resKeys.add(item.getKey());
+        }
+        return resKeys.elements();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    // this method is declared in ResourceBundle class
+    // so cannot change the signature
+    // Override this method
+    protected Object handleGetObject(String aKey) {
+        return handleGetObjectImpl(aKey, this);
+    }
+
+    /**
+     * Override the superclass method
+     */
+    // To facilitate XPath style aliases we need a way to pass the reference
+    // to requested locale. The only way I could figure out is to implement
+    // the look up logic here. This has a disadvantage that if the client
+    // loads an ICUResourceBundle, calls ResourceBundle.getObject method
+    // with a key that does not exist in the bundle then the lookup is
+    // done twice before throwing a MissingResourceExpection.
+    private Object handleGetObjectImpl(String aKey, UResourceBundle requested) {
+        Object obj = resolveObject(aKey, requested);
+        if (obj == null) {
+            UResourceBundle parentBundle = getParent();
+            if (parentBundle != null) {
+                obj = parentBundle.handleGetObjectImpl(aKey, requested);
+            }
+            if (obj == null)
+                throw new MissingResourceException(
+                    "Can't find resource for bundle "
+                    + this.getClass().getName() + ", key " + aKey,
+                    this.getClass().getName(), aKey);
+        }
+        return obj;
+    }
+
+    // Routine for figuring out the type of object to be returned
+    // string or string array
+    private Object resolveObject(String aKey, UResourceBundle requested) {
+        if (getType() == STRING) {
+            return getString();
+        }
+        UResourceBundle obj = handleGet(aKey, null, requested);
+        if (obj != null) {
+            if (obj.getType() == STRING) {
+                return obj.getString();
+            }
+            try {
+                if (obj.getType() == ARRAY) {
+                    return obj.handleGetStringArray();
+                }
+            } catch (UResourceTypeMismatchException ex) {
+                return obj;
+            }
+        }
+        return obj;
+    }
+
+    /**
+     * This method is for setting the loading status of the resource.
+     * The status is analogous to the warning status in ICU4C.
+     * @internal ICU 3.8
+     * @deprecated This API is ICU internal only.
+     */
+    protected abstract void setLoadingStatus(int newStatus);
+}
diff --git a/src/com/ibm/icu/util/UResourceBundleIterator.java b/src/com/ibm/icu/util/UResourceBundleIterator.java
new file mode 100644
index 0000000..1028226
--- /dev/null
+++ b/src/com/ibm/icu/util/UResourceBundleIterator.java
@@ -0,0 +1,95 @@
+/*
+******************************************************************************
+* Copyright (C) 2004-2008, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+import java.util.NoSuchElementException;
+
+/**
+ * <p>Class for enabling iteration over UResourceBundle objects.
+ * Example of use:<br>
+ * <pre>
+ * ICUResourceBundleIterator iterator = resB.getIterator();
+ * ICUResourceBundle temp;
+ * while (iterator.hasNext()) {
+ *    temp = iterartor.next();  
+ *    int type = temp.getType();
+ *    switch(type){
+ *      case UResourceBundle.STRING:
+ *          str = temp.getString();
+ *          break;
+ *      case UResourceBundle.INT:
+ *          integer = temp.getInt();
+ *          break;
+ *     .....
+ *    }
+ *   // do something interesting with data collected
+ * }
+ * </pre>
+ * @author ram
+ * @stable ICU 3.8
+ */
+public class UResourceBundleIterator{
+    private UResourceBundle bundle;
+    private int index = 0;
+    private int size = 0;
+    /**
+     * Construct a resource bundle iterator for the
+     * given resource bundle
+     * 
+     * @param bndl The resource bundle to iterate over
+     * @stable ICU 3.8
+     */
+    public UResourceBundleIterator(UResourceBundle bndl){
+        bundle = bndl;   
+        size = bundle.getSize();
+    }
+
+    /**
+     * Returns the next element of this iterator if this iterator object has at least one more element to provide
+     * @return the UResourceBundle object
+     * @throws NoSuchElementException
+     * @stable ICU 3.8
+     */
+    public UResourceBundle next()throws NoSuchElementException{
+        if(index<size){
+            return bundle.get(index++);
+        }
+        throw new NoSuchElementException();
+    }
+    /**
+     * Returns the next String of this iterator if this iterator object has at least one more element to provide
+     * @return the UResourceBundle object
+     * @throws NoSuchElementException
+     * @throws UResourceTypeMismatchException
+     * @stable ICU 3.8
+     */
+    public String nextString()throws NoSuchElementException, UResourceTypeMismatchException{
+        if(index<size){
+            return bundle.getString(index++);
+        }  
+        throw new NoSuchElementException();
+    }
+    
+    /**
+     * Resets the internal context of a resource so that iteration starts from the first element.
+     * @stable ICU 3.8
+     */
+    public void reset(){
+        //reset the internal context   
+        index = 0;
+    }
+    
+    /**
+     * Checks whether the given resource has another element to iterate over.
+     * @return TRUE if there are more elements, FALSE if there is no more elements
+     * @stable ICU 3.8
+     */
+    public boolean hasNext(){
+        return index < size;   
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/icu/util/UResourceTypeMismatchException.java b/src/com/ibm/icu/util/UResourceTypeMismatchException.java
new file mode 100644
index 0000000..8f2810b
--- /dev/null
+++ b/src/com/ibm/icu/util/UResourceTypeMismatchException.java
@@ -0,0 +1,28 @@
+/*
+******************************************************************************
+* Copyright (C) 2004-2006, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+/**
+ * Exception thrown when the requested resource type 
+ * is not the same type as the available resource
+ * @author ram
+ * @stable ICU 3.0
+ */
+public class UResourceTypeMismatchException extends RuntimeException {
+    // Generated by serialver from JDK 1.4.1_01
+    static final long serialVersionUID = 1286569061095434541L;
+    
+    /**
+     * Constuct the exception with the given message
+     * @param msg the error message for this exception
+     * @stable ICU 3.0
+     */
+    public UResourceTypeMismatchException(String msg){
+        super(msg);       
+    }
+}
diff --git a/src/com/ibm/icu/util/UniversalTimeScale.java b/src/com/ibm/icu/util/UniversalTimeScale.java
new file mode 100644
index 0000000..f297e21
--- /dev/null
+++ b/src/com/ibm/icu/util/UniversalTimeScale.java
@@ -0,0 +1,661 @@
+/*
+ *********************************************************************************
+ * Copyright (C) 2004-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                  *
+ *********************************************************************************
+ *
+ */
+
+package com.ibm.icu.util;
+
+import com.ibm.icu.math.BigDecimal;
+import java.lang.IllegalArgumentException;
+
+/** 
+ * There are quite a few different conventions for binary datetime, depending on different
+ * platforms and protocols. Some of these have severe drawbacks. For example, people using
+ * Unix time (seconds since Jan 1, 1970, usually in a 32-bit integer)
+ * think that they are safe until near the year 2038.
+ * But cases can and do arise where arithmetic manipulations causes serious problems. Consider
+ * the computation of the average of two datetimes, for example: if one calculates them with
+ * <code>averageTime = (time1 + time2)/2</code>, there will be overflow even with dates
+ * beginning in 2004. Moreover, even if these problems don't occur, there is the issue of
+ * conversion back and forth between different systems.
+ *
+ * <p>Binary datetimes differ in a number of ways: the datatype, the unit,
+ * and the epoch (origin). We refer to these as time scales.</p>
+ *
+ * <p>ICU implements a universal time scale that is similar to the
+ * .NET framework's System.DateTime. The universal time scale is a
+ * 64-bit integer that holds ticks since midnight, January 1st, 0001.
+ * (One tick is 100 nanoseconds.)
+ * Negative values are supported. This has enough range to guarantee that
+ * calculations involving dates around the present are safe.</p>
+ *
+ * <p>The universal time scale always measures time according to the
+ * proleptic Gregorian calendar. That is, the Gregorian calendar's
+ * leap year rules are used for all times, even before 1582 when it was
+ * introduced. (This is different from the default ICU calendar which
+ * switches from the Julian to the Gregorian calendar in 1582.
+ * See GregorianCalendar.setGregorianChange() and ucal_setGregorianChange().)</p>
+ *
+ * ICU provides conversion functions to and from all other major time
+ * scales, allowing datetimes in any time scale to be converted to the
+ * universal time scale, safely manipulated, and converted back to any other
+ * datetime time scale.</p>
+ *
+ * <p>For more details and background, see the
+ * <a href="http://www.icu-project.org/userguide/universalTimeScale.html">Universal Time Scale</a>
+ * chapter in the ICU User Guide.</p>
+ *
+ * @stable ICU 3.2
+ */
+
+public final class UniversalTimeScale
+{
+    /**
+     * Used in the JDK. Data is a <code>long</code>. Value
+     * is milliseconds since January 1, 1970.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int JAVA_TIME = 0;
+
+    /**
+     * Used in Unix systems. Data is an <code>int</code> or a <code>long</code>. Value
+     * is seconds since January 1, 1970.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int UNIX_TIME = 1;
+
+    /**
+     * Used in the ICU4C. Data is a <code>double</code>. Value
+     * is milliseconds since January 1, 1970.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int ICU4C_TIME = 2;
+
+    /**
+     * Used in Windows for file times. Data is a <code>long</code>. Value
+     * is ticks (1 tick == 100 nanoseconds) since January 1, 1601.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int WINDOWS_FILE_TIME = 3;
+
+    /**
+     * Used in the .NET framework's <code>System.DateTime</code> structure.
+     * Data is a <code>long</code>. Value is ticks (1 tick == 100 nanoseconds) since January 1, 0001.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int DOTNET_DATE_TIME = 4;
+
+    /**
+     * Used in older Macintosh systems. Data is an <code>int</code>. Value
+     * is seconds since January 1, 1904.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int MAC_OLD_TIME = 5;
+
+    /**
+     * Used in the JDK. Data is a <code>double</code>. Value
+     * is milliseconds since January 1, 2001.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int MAC_TIME = 6;
+
+    /**
+     * Used in Excel. Data is a <code>?unknown?</code>. Value
+     * is days since December 31, 1899.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int EXCEL_TIME = 7;
+
+    /**
+     * Used in DB2. Data is a <code>?unknown?</code>. Value
+     * is days since December 31, 1899.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int DB2_TIME = 8;
+
+    /**
+     * Data is a <code>long</code>. Value is microseconds since January 1, 1970.
+     * Similar to Unix time (linear value from 1970) and struct timeval
+     * (microseconds resolution).
+     *
+     * @stable ICU 3.8
+     */
+    public static final int UNIX_MICROSECONDS_TIME = 9;
+    
+    /**
+     * This is the first unused time scale value.
+     *
+     * @stable ICU 3.2
+     */
+    public static final int MAX_SCALE = 10;
+    
+    /**
+     * The constant used to select the units value
+     * for a time scale.
+     * 
+     *
+     * @stable ICU 3.2
+     */
+    public static final int UNITS_VALUE = 0;
+    
+    /**
+     * The constant used to select the epoch offset value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int EPOCH_OFFSET_VALUE = 1;
+    
+    /**
+     * The constant used to select the minimum from value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int FROM_MIN_VALUE = 2;
+    
+    /**
+     * The constant used to select the maximum from value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int FROM_MAX_VALUE = 3;
+    
+    /**
+     * The constant used to select the minimum to value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int TO_MIN_VALUE = 4;
+    
+    /**
+     * The constant used to select the maximum to value
+     * for a time scale.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int TO_MAX_VALUE = 5;
+    
+    /**
+     * The constant used to select the epoch plus one value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT. May not
+     * actually be equal to the epoch offset value plus one.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @stable ICU 3.2
+     */
+    public static final int EPOCH_OFFSET_PLUS_1_VALUE = 6;
+    
+    /**
+     * The constant used to select the epoch offset minus one value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT. May not
+     * actually be equal to the epoch offset value minus one.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int EPOCH_OFFSET_MINUS_1_VALUE = 7;
+    
+    /**
+     * The constant used to select the units round value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int UNITS_ROUND_VALUE = 8;
+    
+    /**
+     * The constant used to select the minimum safe rounding value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int MIN_ROUND_VALUE = 9;
+    
+    /**
+     * The constant used to select the maximum safe rounding value
+     * for a time scale.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int MAX_ROUND_VALUE = 10;
+    
+    /**
+     * The number of time scale values.
+     * 
+     * NOTE: This is an internal value. DO NOT USE IT.
+     * 
+     * @see #getTimeScaleValue
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int MAX_SCALE_VALUE = 11;
+    
+    private static final long ticks        = 1;
+    private static final long microseconds = ticks * 10;
+    private static final long milliseconds = microseconds * 1000;
+    private static final long seconds      = milliseconds * 1000;
+    private static final long minutes      = seconds * 60;
+    private static final long hours        = minutes * 60;
+    private static final long days         = hours * 24;
+    
+    /**
+     * This class holds the data that describes a particular
+     * time scale.
+     *
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    private static final class TimeScaleData
+    {
+        TimeScaleData(long theUnits, long theEpochOffset,
+                       long theToMin, long theToMax,
+                       long theFromMin, long theFromMax)
+        {
+            units      = theUnits;
+            unitsRound = theUnits / 2;
+            
+            minRound = Long.MIN_VALUE + unitsRound;
+            maxRound = Long.MAX_VALUE - unitsRound;
+                        
+            epochOffset   = theEpochOffset / theUnits;
+            
+            if (theUnits == 1) {
+                epochOffsetP1 = epochOffsetM1 = epochOffset;
+            } else {
+                epochOffsetP1 = epochOffset + 1;
+                epochOffsetM1 = epochOffset - 1;
+            }
+            
+            toMin = theToMin;
+            toMax = theToMax;
+            
+            fromMin = theFromMin;
+            fromMax = theFromMax;
+        }
+        
+        long units;
+        long epochOffset;
+        long fromMin;
+        long fromMax;
+        long toMin;
+        long toMax;
+        
+        long epochOffsetP1;
+        long epochOffsetM1;
+        long unitsRound;
+        long minRound;
+        long maxRound;
+    }
+    
+    private static final TimeScaleData[] timeScaleTable = {
+        new TimeScaleData(milliseconds, 621355968000000000L, -9223372036854774999L, 9223372036854774999L, -984472800485477L,         860201606885477L), // JAVA_TIME
+        new TimeScaleData(seconds,      621355968000000000L, -9223372036854775808L, 9223372036854775807L, -984472800485L,               860201606885L), // UNIX_TIME
+        new TimeScaleData(milliseconds, 621355968000000000L, -9223372036854774999L, 9223372036854774999L, -984472800485477L,         860201606885477L), // ICU4C_TIME
+        new TimeScaleData(ticks,        504911232000000000L, -8718460804854775808L, 9223372036854775807L, -9223372036854775808L, 8718460804854775807L), // WINDOWS_FILE_TIME
+        new TimeScaleData(ticks,        000000000000000000L, -9223372036854775808L, 9223372036854775807L, -9223372036854775808L, 9223372036854775807L), // DOTNET_DATE_TIME
+        new TimeScaleData(seconds,      600527520000000000L, -9223372036854775808L, 9223372036854775807L, -982389955685L,               862284451685L), // MAC_OLD_TIME
+        new TimeScaleData(seconds,      631139040000000000L, -9223372036854775808L, 9223372036854775807L, -985451107685L,               859223299685L), // MAC_TIME
+        new TimeScaleData(days,         599265216000000000L, -9223372036854775808L, 9223372036854775807L, -11368793L,                        9981605L), // EXCEL_TIME
+        new TimeScaleData(days,         599265216000000000L, -9223372036854775808L, 9223372036854775807L, -11368793L,                        9981605L), // DB2_TIME
+        new TimeScaleData(microseconds, 621355968000000000L, -9223372036854775804L, 9223372036854775804L, -984472800485477580L,   860201606885477580L)  // UNIX_MICROSECONDS_TIME
+    };
+    
+    
+    /*
+     * Prevent construction of this class.
+     */
+    ///CLOVER:OFF
+    private UniversalTimeScale()
+    {
+        // nothing to do
+    }
+    ///CLOVER:ON
+    
+    /**
+     * Convert a <code>long</code> datetime from the given time scale to the universal time scale.
+     *
+     * @param otherTime The <code>long</code> datetime
+     * @param timeScale The time scale to convert from
+     * 
+     * @return The datetime converted to the universal time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static long from(long otherTime, int timeScale)
+    {
+        TimeScaleData data = fromRangeCheck(otherTime, timeScale);
+                
+        return (otherTime + data.epochOffset) * data.units;
+    }
+
+    /**
+     * Convert a <code>double</code> datetime from the given time scale to the universal time scale.
+     * All calculations are done using <code>BigDecimal</code> to guarantee that the value
+     * does not go out of range.
+     *
+     * @param otherTime The <code>double</code> datetime
+     * @param timeScale The time scale to convert from
+     * 
+     * @return The datetime converted to the universal time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal bigDecimalFrom(double otherTime, int timeScale)
+    {
+        TimeScaleData data     = getTimeScaleData(timeScale);
+        BigDecimal other       = new BigDecimal(String.valueOf(otherTime));
+        BigDecimal units       = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return other.add(epochOffset).multiply(units);
+    }
+
+    /**
+     * Convert a <code>long</code> datetime from the given time scale to the universal time scale.
+     * All calculations are done using <code>BigDecimal</code> to guarantee that the value
+     * does not go out of range.
+     *
+     * @param otherTime The <code>long</code> datetime
+     * @param timeScale The time scale to convert from
+     * 
+     * @return The datetime converted to the universal time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal bigDecimalFrom(long otherTime, int timeScale)
+    {
+        TimeScaleData data     = getTimeScaleData(timeScale);
+        BigDecimal other       = new BigDecimal(otherTime);
+        BigDecimal units       = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return other.add(epochOffset).multiply(units);
+    }
+
+    /**
+     * Convert a <code>BigDecimal</code> datetime from the given time scale to the universal time scale.
+     * All calculations are done using <code>BigDecimal</code> to guarantee that the value
+     * does not go out of range.
+     *
+     * @param otherTime The <code>BigDecimal</code> datetime
+     * @param timeScale The time scale to convert from
+     * 
+     * @return The datetime converted to the universal time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal bigDecimalFrom(BigDecimal otherTime, int timeScale)
+    {
+        TimeScaleData data = getTimeScaleData(timeScale);
+        
+        BigDecimal units = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return otherTime.add(epochOffset).multiply(units);
+    }
+
+    /**
+     * Convert a datetime from the universal time scale stored as a <code>BigDecimal</code> to a
+     * <code>long</code> in the given time scale.
+     *
+     * Since this calculation requires a divide, we must round. The straight forward
+     * way to round by adding half of the divisor will push the sum out of range for values
+     * within have the divisor of the limits of the precision of a <code>long</code>. To get around this, we do
+     * the rounding like this:
+     * 
+     * <p><code>
+     * (universalTime - units + units/2) / units + 1
+     * </code>
+     * 
+     * <p>
+     * (i.e. we subtract units first to guarantee that we'll still be in range when we
+     * add <code>units/2</code>. We then need to add one to the quotent to make up for the extra subtraction.
+     * This simplifies to:
+     * 
+     * <p><code>
+     * (universalTime - units/2) / units - 1
+     * </code>
+     * 
+     * <p>
+     * For negative values to round away from zero, we need to flip the signs:
+     * 
+     * <p><code>
+     * (universalTime + units/2) / units + 1
+     * </code>
+     * 
+     * <p>
+     * Since we also need to subtract the epochOffset, we fold the <code>+/- 1</code>
+     * into the offset value. (i.e. <code>epochOffsetP1</code>, <code>epochOffsetM1</code>.)
+     * 
+     * @param universalTime The datetime in the universal time scale
+     * @param timeScale The time scale to convert to
+     * 
+     * @return The datetime converted to the given time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static long toLong(long universalTime, int timeScale)
+    {
+        TimeScaleData data = toRangeCheck(universalTime, timeScale);
+        
+        if (universalTime < 0) {
+            if (universalTime < data.minRound) {
+                return (universalTime + data.unitsRound) / data.units - data.epochOffsetP1;
+            }
+            
+            return (universalTime - data.unitsRound) / data.units - data.epochOffset;
+        }
+        
+        if (universalTime > data.maxRound) {
+            return (universalTime - data.unitsRound) / data.units - data.epochOffsetM1;
+        }
+        
+        return (universalTime + data.unitsRound) / data.units - data.epochOffset;
+    }
+    
+    /**
+     * Convert a datetime from the universal time scale to a <code>BigDecimal</code> in the given time scale.
+     *
+     * @param universalTime The datetime in the universal time scale
+     * @param timeScale The time scale to convert to
+     * 
+     * @return The datetime converted to the given time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal toBigDecimal(long universalTime, int timeScale)
+    {
+        TimeScaleData data     = getTimeScaleData(timeScale);
+        BigDecimal universal   = new BigDecimal(universalTime);
+        BigDecimal units       = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return universal.divide(units, BigDecimal.ROUND_HALF_UP).subtract(epochOffset);
+    }
+    
+    /**
+     * Convert a datetime from the universal time scale to a <code>BigDecimal</code> in the given time scale.
+     *
+     * @param universalTime The datetime in the universal time scale
+     * @param timeScale The time scale to convert to
+     * 
+     * @return The datetime converted to the given time scale
+     *
+     * @stable ICU 3.2
+     */
+    public static BigDecimal toBigDecimal(BigDecimal universalTime, int timeScale)
+    {
+        TimeScaleData data     = getTimeScaleData(timeScale);
+        BigDecimal units       = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return universalTime.divide(units, BigDecimal.ROUND_HALF_UP).subtract(epochOffset);
+    }
+    
+    /**
+     * Return the <code>TimeScaleData</code> object for the given time
+     * scale.
+     * 
+     * @param scale - the time scale
+     * 
+     * @return the <code>TimeScaleData</code> object for the given time scale
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    private static TimeScaleData getTimeScaleData(int scale)
+    {
+        if (scale < 0 || scale >= MAX_SCALE) {
+            throw new IllegalArgumentException("scale out of range: " + scale);
+        }
+        
+        return timeScaleTable[scale];
+    }
+    
+    /**
+     * Get a value associated with a particular time scale.
+     * 
+     * @param scale - the time scale
+     * @param value - a constant representing the value to get
+     * 
+     * @return - the value.
+     * 
+     * @stable ICU 3.2
+     */
+    public static long getTimeScaleValue(int scale, int value)
+    {
+        TimeScaleData data = getTimeScaleData(scale);
+        
+        switch (value)
+        {
+        case UNITS_VALUE:
+            return data.units;
+            
+        case EPOCH_OFFSET_VALUE:
+            return data.epochOffset;
+        
+        case FROM_MIN_VALUE:
+            return data.fromMin;
+            
+        case FROM_MAX_VALUE:
+            return data.fromMax;
+            
+        case TO_MIN_VALUE:
+            return data.toMin;
+            
+        case TO_MAX_VALUE:
+            return data.toMax;
+            
+        case EPOCH_OFFSET_PLUS_1_VALUE:
+            return data.epochOffsetP1;
+            
+        case EPOCH_OFFSET_MINUS_1_VALUE:
+            return data.epochOffsetM1;
+            
+        case UNITS_ROUND_VALUE:
+            return data.unitsRound;
+        
+        case MIN_ROUND_VALUE:
+            return data.minRound;
+            
+        case MAX_ROUND_VALUE:
+            return data.maxRound;
+            
+        default:
+            throw new IllegalArgumentException("value out of range: " + value);
+        }
+    }
+    
+    private static TimeScaleData toRangeCheck(long universalTime, int scale)
+    {
+        TimeScaleData data = getTimeScaleData(scale);
+          
+        if (universalTime >= data.toMin && universalTime <= data.toMax) {
+            return data;
+        }
+        
+        throw new IllegalArgumentException("universalTime out of range:" + universalTime);
+    }
+    
+    private static TimeScaleData fromRangeCheck(long otherTime, int scale)
+    {
+        TimeScaleData data = getTimeScaleData(scale);
+          
+        if (otherTime >= data.fromMin && otherTime <= data.fromMax) {
+            return data;
+        }
+        
+        throw new IllegalArgumentException("otherTime out of range:" + otherTime);
+    }
+    
+    /**
+     * Convert a time in the Universal Time Scale into another time
+     * scale. The division used to do the conversion rounds down.
+     * 
+     * NOTE: This is an internal routine used by the tool that
+     * generates the to and from limits. Use it at your own risk.
+     * 
+     * @param universalTime the time in the Universal Time scale
+     * @param timeScale the time scale to convert to
+     * @return the time in the given time scale
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static BigDecimal toBigDecimalTrunc(BigDecimal universalTime, int timeScale)
+    {
+        TimeScaleData data = getTimeScaleData(timeScale);
+        BigDecimal units = new BigDecimal(data.units);
+        BigDecimal epochOffset = new BigDecimal(data.epochOffset);
+        
+        return universalTime.divide(units, BigDecimal.ROUND_DOWN).subtract(epochOffset);
+    }
+}
diff --git a/src/com/ibm/icu/util/VTimeZone.java b/src/com/ibm/icu/util/VTimeZone.java
new file mode 100644
index 0000000..fef583d
--- /dev/null
+++ b/src/com/ibm/icu/util/VTimeZone.java
@@ -0,0 +1,2032 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.Grego;
+import com.ibm.icu.util.DateTimeRule;
+
+/**
+ * <code>VTimeZone</code> is a class implementing RFC2445 VTIMEZONE.  You can create a
+ * <code>VTimeZone</code> instance from a time zone ID supported by <code>TimeZone</code>.
+ * With the <code>VTimeZone</code> instance created from the ID, you can write out the rule
+ * in RFC2445 VTIMEZONE format.  Also, you can create a <code>VTimeZone</code> instance
+ * from RFC2445 VTIMEZONE data stream, which allows you to calculate time
+ * zone offset by the rules defined by the data.<br><br>
+ * 
+ * Note: The consumer of this class reading or writing VTIMEZONE data is responsible to
+ * decode or encode Non-ASCII text.  Methods reading/writing VTIMEZONE data in this class
+ * do nothing with MIME encoding.
+ * 
+ * @stable ICU 3.8
+ */
+public class VTimeZone extends BasicTimeZone {
+
+    private static final long serialVersionUID = -6851467294127795902L;
+
+    /**
+     * Create a <code>VTimeZone</code> instance by the time zone ID.
+     * 
+     * @param tzid The time zone ID, such as America/New_York
+     * @return A <code>VTimeZone</code> initialized by the time zone ID, or null
+     * when the ID is unknown.
+     * 
+     * @stable ICU 3.8
+     */
+    public static VTimeZone create(String tzid) {
+        VTimeZone vtz = new VTimeZone();
+        vtz.tz = (BasicTimeZone)TimeZone.getTimeZone(tzid, TimeZone.TIMEZONE_ICU);
+        vtz.olsonzid = vtz.tz.getID();
+        vtz.setID(tzid);
+
+        return vtz;
+    }
+    
+    /**
+     * Create a <code>VTimeZone</code> instance by RFC2445 VTIMEZONE data.
+     * 
+     * @param reader The Reader for VTIMEZONE data input stream
+     * @return A <code>VTimeZone</code> initialized by the VTIMEZONE data or
+     * null if failed to load the rule from the VTIMEZONE data.
+     * 
+     * @stable ICU 3.8
+     */
+    public static VTimeZone create(Reader reader) {
+        VTimeZone vtz = new VTimeZone();
+        if (vtz.load(reader)) {
+            return vtz;
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public int getOffset(int era, int year, int month, int day, int dayOfWeek,
+            int milliseconds) {
+        return tz.getOffset(era, year, month, day, dayOfWeek, milliseconds);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public void getOffset(long date, boolean local, int[] offsets) {
+        tz.getOffset(date, local, offsets);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public void getOffsetFromLocal(long date,
+            int nonExistingTimeOpt, int duplicatedTimeOpt, int[] offsets) {
+        tz.getOffsetFromLocal(date, nonExistingTimeOpt, duplicatedTimeOpt, offsets);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public int getRawOffset() {
+        return tz.getRawOffset();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean inDaylightTime(Date date) {
+        return tz.inDaylightTime(date);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public void setRawOffset(int offsetMillis) {
+        tz.setRawOffset(offsetMillis);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean useDaylightTime() {
+        return tz.useDaylightTime();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean hasSameRules(TimeZone other) {
+        return tz.hasSameRules(other);
+    }
+
+    /**
+     * Gets the RFC2445 TZURL property value.  When a <code>VTimeZone</code> instance was created from
+     * VTIMEZONE data, the value is set by the TZURL property value in the data.  Otherwise,
+     * the initial value is null.
+     * 
+     * @return The RFC2445 TZURL property value
+     * 
+     * @stable ICU 3.8
+     */
+    public String getTZURL() {
+        return tzurl;
+    }
+
+    /**
+     * Sets the RFC2445 TZURL property value.
+     * 
+     * @param url The TZURL property value.
+     * 
+     * @stable ICU 3.8
+     */
+    public void setTZURL(String url) {
+        tzurl = url;
+    }
+
+    /**
+     * Gets the RFC2445 LAST-MODIFIED property value.  When a <code>VTimeZone</code> instance was created
+     * from VTIMEZONE data, the value is set by the LAST-MODIFIED property value in the data.
+     * Otherwise, the initial value is null.
+     * 
+     * @return The Date represents the RFC2445 LAST-MODIFIED date.
+     * 
+     * @stable ICU 3.8
+     */
+    public Date getLastModified() {
+        return lastmod;
+    }
+
+    /**
+     * Sets the date used for RFC2445 LAST-MODIFIED property value.
+     * 
+     * @param date The <code>Date</code> object represents the date for RFC2445 LAST-MODIFIED property value.
+     * 
+     * @stable ICU 3.8
+     */
+    public void setLastModified(Date date) {
+        lastmod = date;
+    }
+
+    /**
+     * Writes RFC2445 VTIMEZONE data for this time zone
+     * 
+     * @param writer A <code>Writer</code> used for the output
+     * @throws IOException
+     * 
+     * @stable ICU 3.8
+     */
+    public void write(Writer writer) throws IOException {
+        BufferedWriter bw = new BufferedWriter(writer);
+        if (vtzlines != null) {
+            Iterator it = vtzlines.iterator();
+            while (it.hasNext()) {
+                String line = (String)it.next();
+                if (line.startsWith(ICAL_TZURL + COLON)) {
+                    if (tzurl != null) {
+                        bw.write(ICAL_TZURL);
+                        bw.write(COLON);
+                        bw.write(tzurl);
+                        bw.write(NEWLINE);
+                    }
+                } else if (line.startsWith(ICAL_LASTMOD + COLON)) {
+                    if (lastmod != null) {
+                        bw.write(ICAL_LASTMOD);
+                        bw.write(COLON);
+                        bw.write(getUTCDateTimeString(lastmod.getTime()));
+                        bw.write(NEWLINE);
+                    }
+                } else {
+                    bw.write(line);
+                    bw.write(NEWLINE);
+                }
+            }
+            bw.flush();
+        } else {
+            String[] customProperties = null;
+            if (olsonzid != null && ICU_TZVERSION != null) {
+                customProperties = new String[1];
+                customProperties[0] = ICU_TZINFO_PROP + COLON + olsonzid + "[" + ICU_TZVERSION + "]";
+            }
+            writeZone(writer, tz, customProperties);
+        }
+    }
+
+    /**
+     * Writes RFC2445 VTIMEZONE data applicable for dates after
+     * the specified start time.
+     * 
+     * @param writer    The <code>Writer</code> used for the output
+     * @param start     The start time
+     * 
+     * @throws IOException
+     * 
+     * @stable ICU 3.8
+     */
+    public void write(Writer writer, long start) throws IOException {
+        // Extract rules applicable to dates after the start time
+        TimeZoneRule[] rules = tz.getTimeZoneRules(start);
+
+        // Create a RuleBasedTimeZone with the subset rule
+        RuleBasedTimeZone rbtz = new RuleBasedTimeZone(tz.getID(), (InitialTimeZoneRule)rules[0]);
+        for (int i = 1; i < rules.length; i++) {
+            rbtz.addTransitionRule(rules[i]);
+        }
+        String[] customProperties = null;
+        if (olsonzid != null && ICU_TZVERSION != null) {
+            customProperties = new String[1];
+            customProperties[0] = ICU_TZINFO_PROP + COLON + olsonzid + "[" + ICU_TZVERSION + 
+                "/Partial@" + start + "]";
+        }
+        writeZone(writer, rbtz, customProperties);
+    }
+
+    /**
+     * Writes RFC2445 VTIMEZONE data applicable near the specified date.
+     * Some common iCalendar implementations can only handle a single time
+     * zone property or a pair of standard and daylight time properties using
+     * BYDAY rule with day of week (such as BYDAY=1SUN).  This method produce
+     * the VTIMEZONE data which can be handled these implementations.  The rules
+     * produced by this method can be used only for calculating time zone offset
+     * around the specified date.
+     * 
+     * @param writer    The <code>Writer</code> used for the output
+     * @param time      The date
+     * 
+     * @throws IOException
+     * 
+     * @stable ICU 3.8
+     */
+    public void writeSimple(Writer writer, long time) throws IOException {
+        // Extract simple rules
+        TimeZoneRule[] rules = tz.getSimpleTimeZoneRulesNear(time);
+
+        // Create a RuleBasedTimeZone with the subset rule
+        RuleBasedTimeZone rbtz = new RuleBasedTimeZone(tz.getID(), (InitialTimeZoneRule)rules[0]);
+        for (int i = 1; i < rules.length; i++) {
+            rbtz.addTransitionRule(rules[i]);
+        }
+        String[] customProperties = null;
+        if (olsonzid != null && ICU_TZVERSION != null) {
+            customProperties = new String[1];
+            customProperties[0] = ICU_TZINFO_PROP + COLON + olsonzid + "[" + ICU_TZVERSION + 
+                "/Simple@" + time + "]";
+        }
+        writeZone(writer, rbtz, customProperties);
+    }
+
+    // BasicTimeZone methods
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getNextTransition(long base, boolean inclusive) {
+        return tz.getNextTransition(base, inclusive);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneTransition getPreviousTransition(long base, boolean inclusive) {
+        return tz.getPreviousTransition(base, inclusive);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public boolean hasEquivalentTransitions(TimeZone other, long start, long end) {
+        return tz.hasEquivalentTransitions(other, start, end);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules() {
+        return tz.getTimeZoneRules();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public TimeZoneRule[] getTimeZoneRules(long start) {
+        return tz.getTimeZoneRules(start);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public Object clone() {
+        VTimeZone other = (VTimeZone)super.clone();
+        other.tz = (BasicTimeZone)tz.clone();
+        return other;
+    }
+
+    // private stuff ------------------------------------------------------
+
+    private BasicTimeZone tz;
+    private List vtzlines;
+    private String olsonzid = null;
+    private String tzurl = null;
+    private Date lastmod = null;
+
+    private static String ICU_TZVERSION;
+    private static final String ICU_TZINFO_PROP = "X-TZINFO";
+
+    // Default DST savings
+    private static final int DEF_DSTSAVINGS = 60*60*1000; // 1 hour
+    
+    // Default time start
+    private static final long DEF_TZSTARTTIME = 0;
+
+    // minimum/max
+    private static final long MIN_TIME = Long.MIN_VALUE;
+    private static final long MAX_TIME = Long.MAX_VALUE;
+
+    // Symbol characters used by RFC2445 VTIMEZONE
+    private static final String COLON = ":";
+    private static final String SEMICOLON = ";";
+    private static final String EQUALS_SIGN = "=";
+    private static final String COMMA = ",";
+    private static final String NEWLINE = "\r\n";   // CRLF
+
+    // RFC2445 VTIMEZONE tokens
+    private static final String ICAL_BEGIN_VTIMEZONE = "BEGIN:VTIMEZONE";
+    private static final String ICAL_END_VTIMEZONE = "END:VTIMEZONE";
+    private static final String ICAL_BEGIN = "BEGIN";
+    private static final String ICAL_END = "END";
+    private static final String ICAL_VTIMEZONE = "VTIMEZONE";
+    private static final String ICAL_TZID = "TZID";
+    private static final String ICAL_STANDARD = "STANDARD";
+    private static final String ICAL_DAYLIGHT = "DAYLIGHT";
+    private static final String ICAL_DTSTART = "DTSTART";
+    private static final String ICAL_TZOFFSETFROM = "TZOFFSETFROM";
+    private static final String ICAL_TZOFFSETTO = "TZOFFSETTO";
+    private static final String ICAL_RDATE = "RDATE";
+    private static final String ICAL_RRULE = "RRULE";
+    private static final String ICAL_TZNAME = "TZNAME";
+    private static final String ICAL_TZURL = "TZURL";
+    private static final String ICAL_LASTMOD = "LAST-MODIFIED";
+
+    private static final String ICAL_FREQ = "FREQ";
+    private static final String ICAL_UNTIL = "UNTIL";
+    private static final String ICAL_YEARLY = "YEARLY";
+    private static final String ICAL_BYMONTH = "BYMONTH";
+    private static final String ICAL_BYDAY = "BYDAY";
+    private static final String ICAL_BYMONTHDAY = "BYMONTHDAY";
+
+    private static final String[] ICAL_DOW_NAMES = 
+    {"SU", "MO", "TU", "WE", "TH", "FR", "SA"};
+
+    // Month length in regular year
+    private static final int[] MONTHLENGTH = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+
+    static {
+        // Initialize ICU_TZVERSION
+        try {
+            UResourceBundle tzbundle = UResourceBundle.getBundleInstance(
+                    "com/ibm/icu/impl/data/icudt" + VersionInfo.ICU_DATA_VERSION, "zoneinfo");
+                ICU_TZVERSION = tzbundle.getString("TZVersion");
+        } catch (MissingResourceException e) {
+            ///CLOVER:OFF
+            ICU_TZVERSION = null;
+            ///CLOVER:ON
+        }
+    }
+    
+    /* Hide the constructor */
+    private VTimeZone() {
+    }
+
+    /*
+     * Read the input stream to locate the VTIMEZONE block and
+     * parse the contents to initialize this VTimeZone object.
+     * The reader skips other RFC2445 message headers.  After
+     * the parse is completed, the reader points at the beginning
+     * of the header field just after the end of VTIMEZONE block.
+     * When VTIMEZONE block is found and this object is successfully
+     * initialized by the rules described in the data, this method
+     * returns true.  Otherwise, returns false.
+     */
+    private boolean load(Reader reader) {
+        // Read VTIMEZONE block into string array
+        try {
+            vtzlines = new LinkedList();
+            boolean eol = false;
+            boolean start = false;
+            boolean success = false;
+            StringBuffer line = new StringBuffer();
+            while (true) {
+                int ch = reader.read();
+                if (ch == -1) {
+                    // end of file
+                    if (start && line.toString().startsWith(ICAL_END_VTIMEZONE)) {
+                        vtzlines.add(line.toString());
+                        success = true;
+                    }
+                    break;
+                }
+                if (ch == 0x0D) {
+                    // CR, must be followed by LF by the definition in RFC2445
+                    continue;
+                }
+
+                if (eol) {
+                    if (ch != 0x09 && ch != 0x20) {
+                        // NOT followed by TAB/SP -> new line
+                        if (start) {
+                            if (line.length() > 0) {
+                                vtzlines.add(line.toString());
+                            }
+                        }
+                        line.setLength(0);
+                        if (ch != 0x0A) {
+                            line.append((char)ch);
+                        }
+                    }
+                    eol = false;
+                } else {
+                    if (ch == 0x0A) {
+                        // LF
+                        eol = true;
+                        if (start) {
+                            if (line.toString().startsWith(ICAL_END_VTIMEZONE)) {
+                                vtzlines.add(line.toString());
+                                success = true;
+                                break;
+                            }
+                        } else {
+                            if (line.toString().startsWith(ICAL_BEGIN_VTIMEZONE)) {
+                                vtzlines.add(line.toString());
+                                line.setLength(0);
+                                start = true;
+                                eol = false;
+                            }
+                        }
+                    } else {
+                        line.append((char)ch);
+                    }
+                }
+            }
+            if (!success) {
+                return false;
+            }
+        } catch (IOException ioe) {
+            ///CLOVER:OFF
+            return false;
+            ///CLOVER:ON
+        }
+        return parse();
+    }
+
+    // parser state
+    private static final int INI = 0;   // Initial state
+    private static final int VTZ = 1;   // In VTIMEZONE
+    private static final int TZI = 2;   // In STANDARD or DAYLIGHT
+    private static final int ERR = 3;   // Error state
+
+    /*
+     * Parse VTIMEZONE data and create a RuleBasedTimeZone
+     */
+    private boolean parse() {
+        ///CLOVER:OFF
+        if (vtzlines == null || vtzlines.size() == 0) {
+            return false;
+        }
+        ///CLOVER:ON
+
+        // timezone ID
+        String tzid = null;
+
+        int state = INI;
+        boolean dst = false;    // current zone type
+        String from = null;     // current zone from offset
+        String to = null;       // current zone offset
+        String tzname = null;   // current zone name
+        String dtstart = null;  // current zone starts
+        boolean isRRULE = false;// true if the rule is described by RRULE
+        List dates = null;      // list of RDATE or RRULE strings
+        List rules = new LinkedList();   // rule list
+        int initialRawOffset = 0;  // initial offset
+        int initialDSTSavings = 0;  // initial offset
+        long firstStart = MAX_TIME; // the earliest rule start time
+
+        Iterator it = vtzlines.iterator();
+
+        while (it.hasNext()) {
+            String line = (String)it.next();
+
+            int valueSep = line.indexOf(COLON);
+            if (valueSep < 0) {
+                continue;
+            }
+            String name = line.substring(0, valueSep);
+            String value = line.substring(valueSep + 1);
+
+            switch (state) {
+            case INI:
+                if (name.equals(ICAL_BEGIN) && value.equals(ICAL_VTIMEZONE)) {
+                    state = VTZ;
+                }
+                break;
+            case VTZ:
+                if (name.equals(ICAL_TZID)) {
+                    tzid = value;
+                } else if (name.equals(ICAL_TZURL)) {
+                    tzurl = value;
+                } else if (name.equals(ICAL_LASTMOD)) {
+                    // Always in 'Z' format, so the offset argument for the parse method
+                    // can be any value.
+                    lastmod = new Date(parseDateTimeString(value, 0));
+                } else if (name.equals(ICAL_BEGIN)) {
+                    boolean isDST = value.equals(ICAL_DAYLIGHT);
+                    if (value.equals(ICAL_STANDARD) || isDST) {
+                        // tzid must be ready at this point
+                        if (tzid == null) {
+                            state = ERR;
+                            break;
+                        }
+                        // initialize current zone properties
+                        dates = null;
+                        isRRULE = false;
+                        from = null;
+                        to = null;
+                        tzname = null;
+                        dst = isDST;
+                        state = TZI;
+                    } else {
+                        // BEGIN property other than STANDARD/DAYLIGHT
+                        // must not be there.
+                        state = ERR;
+                        break;
+                    }
+                } else if (name.equals(ICAL_END) /* && value.equals(ICAL_VTIMEZONE) */) {
+                    break;
+                }
+                break;
+
+            case TZI:
+                if (name.equals(ICAL_DTSTART)) {
+                    dtstart = value;
+                } else if (name.equals(ICAL_TZNAME)) {
+                    tzname = value;
+                } else if (name.equals(ICAL_TZOFFSETFROM)) {
+                    from = value;
+                } else if (name.equals(ICAL_TZOFFSETTO)) {
+                    to = value;
+                } else if (name.equals(ICAL_RDATE)) {
+                    // RDATE mixed with RRULE is not supported
+                    if (isRRULE) {
+                        state = ERR;
+                        break;
+                    }
+                    if (dates == null) {
+                        dates = new LinkedList();
+                    }
+                    // RDATE value may contain multiple date delimited
+                    // by comma
+                    StringTokenizer st = new StringTokenizer(value, COMMA);
+                    while (st.hasMoreTokens()) {
+                        String date = st.nextToken();
+                        dates.add(date);
+                    }
+                } else if (name.equals(ICAL_RRULE)) {
+                    // RRULE mixed with RDATE is not supported
+                    if (!isRRULE && dates != null) {
+                        state = ERR;
+                        break;
+                    } else if (dates == null) {
+                        dates = new LinkedList();
+                    }
+                    isRRULE = true;
+                    dates.add(value);
+                } else if (name.equals(ICAL_END)) {
+                    // Mandatory properties
+                    if (dtstart == null || from == null || to == null) {
+                        state = ERR;
+                        break;
+                    }
+                    // if tzname is not available, create one from tzid
+                    if (tzname == null) {
+                        tzname = getDefaultTZName(tzid, dst);
+                    }
+
+                    // create a time zone rule
+                    TimeZoneRule rule = null;
+                    int fromOffset = 0;
+                    int toOffset = 0;
+                    int rawOffset = 0;
+                    int dstSavings = 0;
+                    long start = 0;
+                    try {
+                        // Parse TZOFFSETFROM/TZOFFSETTO
+                        fromOffset = offsetStrToMillis(from);
+                        toOffset = offsetStrToMillis(to);
+
+                        if (dst) {
+                            // If daylight, use the previous offset as rawoffset if positive
+                            if (toOffset - fromOffset > 0) {
+                                rawOffset = fromOffset;
+                                dstSavings = toOffset - fromOffset;
+                            } else {
+                                // This is rare case..  just use 1 hour DST savings
+                                rawOffset = toOffset - DEF_DSTSAVINGS;
+                                dstSavings = DEF_DSTSAVINGS;                                
+                            }
+                        } else {
+                            rawOffset = toOffset;
+                            dstSavings = 0;
+                        }
+
+                        // start time
+                        start = parseDateTimeString(dtstart, fromOffset);
+
+                        // Create the rule
+                        Date actualStart = null;
+                        if (isRRULE) {
+                            rule = createRuleByRRULE(tzname, rawOffset, dstSavings, start, dates, fromOffset);
+                        } else {
+                            rule = createRuleByRDATE(tzname, rawOffset, dstSavings, start, dates, fromOffset);
+                        }
+                        if (rule != null) {
+                            actualStart = rule.getFirstStart(fromOffset, 0);
+                            if (actualStart.getTime() < firstStart) {
+                                // save from offset information for the earliest rule
+                                firstStart = actualStart.getTime();
+                                // If this is STD, assume the time before this transtion
+                                // is DST when the difference is 1 hour.  This might not be
+                                // accurate, but VTIMEZONE data does not have such info.
+                                if (dstSavings > 0) {
+                                    initialRawOffset = fromOffset;
+                                    initialDSTSavings = 0;
+                                } else {
+                                    if (fromOffset - toOffset == DEF_DSTSAVINGS) {
+                                        initialRawOffset = fromOffset - DEF_DSTSAVINGS;
+                                        initialDSTSavings = DEF_DSTSAVINGS;
+                                    } else {
+                                        initialRawOffset = fromOffset;
+                                        initialDSTSavings = 0;
+                                    }
+                                }
+                            }
+                        }
+                    } catch (IllegalArgumentException iae) {
+                        // bad format - rule == null..
+                    }
+
+                    if (rule == null) {
+                        state = ERR;
+                        break;
+                    }
+                    rules.add(rule);
+                    state = VTZ;
+                }
+                break;
+            }
+
+            if (state == ERR) {
+                vtzlines = null;
+                return false;
+            }
+        }
+
+        // Must have at least one rule
+        if (rules.size() == 0) {
+            return false;
+        }
+
+        // Create a initial rule
+        InitialTimeZoneRule initialRule = new InitialTimeZoneRule(getDefaultTZName(tzid, false),
+                initialRawOffset, initialDSTSavings);
+
+        // Finally, create the RuleBasedTimeZone
+        RuleBasedTimeZone rbtz = new RuleBasedTimeZone(tzid, initialRule);
+
+        int finalRuleIdx = -1;
+        int finalRuleCount = 0;
+        for (int i = 0; i < rules.size(); i++) {
+            TimeZoneRule r = (TimeZoneRule)rules.get(i);
+            if (r instanceof AnnualTimeZoneRule) {
+                if (((AnnualTimeZoneRule)r).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+                    finalRuleCount++;
+                    finalRuleIdx = i;
+                }
+            }
+        }
+        if (finalRuleCount > 2) {
+            // Too many final rules
+            return false;
+        }
+
+        if (finalRuleCount == 1) {
+            if (rules.size() == 1) {
+                // Only one final rule, only governs the initial rule,
+                // which is already initialized, thus, we do not need to
+                // add this transition rule
+                rules.clear();
+            } else {
+                // Normalize the final rule
+                AnnualTimeZoneRule finalRule = (AnnualTimeZoneRule)rules.get(finalRuleIdx);
+                int tmpRaw = finalRule.getRawOffset();
+                int tmpDST = finalRule.getDSTSavings();
+    
+                // Find the last non-final rule
+                Date finalStart = finalRule.getFirstStart(initialRawOffset, initialDSTSavings);
+                Date start = finalStart;
+                for (int i = 0; i < rules.size(); i++) {
+                    if (finalRuleIdx == i) {
+                        continue;
+                    }
+                    TimeZoneRule r = (TimeZoneRule)rules.get(i);
+                    Date lastStart = r.getFinalStart(tmpRaw, tmpDST);
+                    if (lastStart.after(start)) {
+                        start = finalRule.getNextStart(lastStart.getTime(),
+                                r.getRawOffset(),
+                                r.getDSTSavings(),
+                                false);
+                    }
+                }
+                TimeZoneRule newRule;
+                if (start == finalStart) {
+                    // Transform this into a single transition
+                    newRule = new TimeArrayTimeZoneRule(
+                            finalRule.getName(),
+                            finalRule.getRawOffset(),
+                            finalRule.getDSTSavings(),
+                            new long[] {finalStart.getTime()},
+                            DateTimeRule.UTC_TIME);
+                } else {
+                    // Update the end year
+                    int fields[] = Grego.timeToFields(start.getTime(), null);
+                    newRule = new AnnualTimeZoneRule(
+                            finalRule.getName(),
+                            finalRule.getRawOffset(),
+                            finalRule.getDSTSavings(),
+                            finalRule.getRule(),
+                            finalRule.getStartYear(),
+                            fields[0]);
+                }
+                rules.set(finalRuleIdx, newRule);
+            }
+        }
+
+        Iterator rit = rules.iterator();
+        while(rit.hasNext()) {
+            rbtz.addTransitionRule((TimeZoneRule)rit.next());
+        }
+        tz = rbtz;
+        setID(tzid);
+        return true;
+    }
+
+    /*
+     * Create a default TZNAME from TZID
+     */
+    private static String getDefaultTZName(String tzid, boolean isDST) {
+        if (isDST) {
+            return tzid + "(DST)";
+        }
+        return tzid + "(STD)";
+    }
+
+    /*
+     * Create a TimeZoneRule by the RRULE definition
+     */
+    private static TimeZoneRule createRuleByRRULE(String tzname,
+            int rawOffset, int dstSavings, long start, List dates, int fromOffset) {
+        if (dates == null || dates.size() == 0) {
+            return null;
+        }
+        // Parse the first rule
+        String rrule = (String)dates.get(0);
+
+        long until[] = new long[1];
+        int[] ruleFields = parseRRULE(rrule, until);
+        if (ruleFields == null) {
+            // Invalid RRULE
+            return null;
+        }
+
+        int month = ruleFields[0];
+        int dayOfWeek = ruleFields[1];
+        int nthDayOfWeek = ruleFields[2];
+        int dayOfMonth = ruleFields[3];
+
+        if (dates.size() == 1) {
+            // No more rules
+            if (ruleFields.length > 4) {
+                // Multiple BYMONTHDAY values
+
+                if (ruleFields.length != 10 || month == -1 || dayOfWeek == 0) {
+                    // Only support the rule using 7 continuous days
+                    // BYMONTH and BYDAY must be set at the same time
+                    return null;
+                }
+                int firstDay = 31; // max possible number of dates in a month
+                int days[] = new int[7];
+                for (int i = 0; i < 7; i++) {
+                    days[i] = ruleFields[3 + i];
+                    // Resolve negative day numbers.  A negative day number should
+                    // not be used in February, but if we see such case, we use 28
+                    // as the base.
+                    days[i] = days[i] > 0 ? days[i] : MONTHLENGTH[month] + days[i] + 1;
+                    firstDay = days[i] < firstDay ? days[i] : firstDay;
+                }
+                // Make sure days are continuous
+                for (int i = 1; i < 7; i++) {
+                    boolean found = false;
+                    for (int j = 0; j < 7; j++) {
+                        if (days[j] == firstDay + i) {
+                            found = true;
+                            break;
+                        }
+                    }
+                    if (!found) {
+                        // days are not continuous
+                        return null;
+                    }
+                }
+                // Use DOW_GEQ_DOM rule with firstDay as the start date
+                dayOfMonth = firstDay;
+            }
+        } else {
+            // Check if BYMONTH + BYMONTHDAY + BYDAY rule with multiple RRULE lines.
+            // Otherwise, not supported.
+            if (month == -1 || dayOfWeek == 0 || dayOfMonth == 0) {
+                // This is not the case
+                return null;
+            }
+            // Parse the rest of rules if number of rules is not exceeding 7.
+            // We can only support 7 continuous days starting from a day of month.
+            if (dates.size() > 7) {
+                return null;
+            }
+
+            // Note: To check valid date range across multiple rule is a little
+            // bit complicated.  For now, this code is not doing strict range
+            // checking across month boundary
+
+            int earliestMonth = month;
+            int daysCount = ruleFields.length - 3;
+            int earliestDay = 31;
+            for (int i = 0; i < daysCount; i++) {
+                int dom = ruleFields[3 + i];
+                dom = dom > 0 ? dom : MONTHLENGTH[month] + dom + 1;
+                earliestDay = dom < earliestDay ? dom : earliestDay;
+            }
+
+            int anotherMonth = -1;
+            for (int i = 1; i < dates.size(); i++) {
+                rrule = (String)dates.get(i);
+                long[] unt = new long[1];
+                int[] fields = parseRRULE(rrule, unt);
+
+                // If UNTIL is newer than previous one, use the one
+                if (unt[0] > until[0]) {
+                    until = unt;
+                }
+                
+                // Check if BYMONTH + BYMONTHDAY + BYDAY rule
+                if (fields[0] == -1 || fields[1] == 0 || fields[3] == 0) {
+                    return null;
+                }
+                // Count number of BYMONTHDAY
+                int count = fields.length - 3;
+                if (daysCount + count > 7) {
+                    // We cannot support BYMONTHDAY more than 7
+                    return null;
+                }
+                // Check if the same BYDAY is used.  Otherwise, we cannot
+                // support the rule
+                if (fields[1] != dayOfWeek) {
+                    return null;
+                }
+                // Check if the month is same or right next to the primary month
+                if (fields[0] != month) {
+                    if (anotherMonth == -1) {
+                        int diff = fields[0] - month;
+                        if (diff == -11 || diff == -1) {
+                            // Previous month
+                            anotherMonth = fields[0];
+                            earliestMonth = anotherMonth;
+                            // Reset earliest day
+                            earliestDay = 31;
+                        } else if (diff == 11 || diff == 1) {
+                            // Next month
+                            anotherMonth = fields[0];
+                        } else {
+                            // The day range cannot exceed more than 2 months
+                            return null;
+                        }
+                    } else if (fields[0] != month && fields[0] != anotherMonth) {
+                        // The day range cannot exceed more than 2 months
+                        return null;
+                    }
+                }
+                // If ealier month, go through days to find the earliest day
+                if (fields[0] == earliestMonth) {
+                    for (int j = 0; j < count; j++) {
+                        int dom = fields[3 + j];
+                        dom = dom > 0 ? dom : MONTHLENGTH[fields[0]] + dom + 1;
+                        earliestDay = dom < earliestDay ? dom : earliestDay;
+                    }
+                }
+                daysCount += count;
+            }
+            if (daysCount != 7) {
+                // Number of BYMONTHDAY entries must be 7
+                return null;
+            }
+            month = earliestMonth;
+            dayOfMonth = earliestDay;
+        }
+
+        // Calculate start/end year and missing fields
+        int[] dfields = Grego.timeToFields(start + fromOffset, null);
+        int startYear = dfields[0];
+        if (month == -1) {
+            // If MYMONTH is not set, use the month of DTSTART
+            month = dfields[1];
+        }
+        if (dayOfWeek == 0 && nthDayOfWeek == 0 && dayOfMonth == 0) {
+            // If only YEARLY is set, use the day of DTSTART as BYMONTHDAY
+            dayOfMonth = dfields[2];
+        }
+        int timeInDay = dfields[5];
+
+        int endYear = AnnualTimeZoneRule.MAX_YEAR;
+        if (until[0] != MIN_TIME) {
+            Grego.timeToFields(until[0], dfields);
+            endYear = dfields[0];
+        }
+
+        // Create the AnnualDateTimeRule
+        DateTimeRule adtr = null;
+        if (dayOfWeek == 0 && nthDayOfWeek == 0 && dayOfMonth != 0) {
+            // Day in month rule, for example, 15th day in the month
+            adtr = new DateTimeRule(month, dayOfMonth, timeInDay, DateTimeRule.WALL_TIME);
+        } else if (dayOfWeek != 0 && nthDayOfWeek != 0 && dayOfMonth == 0) {
+            // Nth day of week rule, for example, last Sunday
+            adtr = new DateTimeRule(month, nthDayOfWeek, dayOfWeek, timeInDay, DateTimeRule.WALL_TIME);
+        } else if (dayOfWeek != 0 && nthDayOfWeek == 0 && dayOfMonth != 0) {
+            // First day of week after day of month rule, for example,
+            // first Sunday after 15th day in the month
+            adtr = new DateTimeRule(month, dayOfMonth, dayOfWeek, true, timeInDay, DateTimeRule.WALL_TIME);
+        } else {
+            // RRULE attributes are insufficient
+            return null;
+        }
+
+        return new AnnualTimeZoneRule(tzname, rawOffset, dstSavings, adtr, startYear, endYear);
+    }
+
+    /*
+     * Parse individual RRULE
+     * 
+     * On return -
+     * 
+     * int[0] month calculated by BYMONTH - 1, or -1 when not found
+     * int[1] day of week in BYDAY, or 0 when not found
+     * int[2] day of week ordinal number in BYDAY, or 0 when not found
+     * int[i >= 3] day of month, which could be multiple values, or 0 when not found
+     * 
+     *  or
+     * 
+     * null on any error cases, for exmaple, FREQ=YEARLY is not available
+     * 
+     * When UNTIL attribute is available, the time will be set to until[0],
+     * otherwise, MIN_TIME
+     */
+    private static int[] parseRRULE(String rrule, long[] until) {
+        int month = -1;
+        int dayOfWeek = 0;
+        int nthDayOfWeek = 0;
+        int[] dayOfMonth = null;
+
+        long untilTime = MIN_TIME;
+        boolean yearly = false;
+        boolean parseError = false;
+        StringTokenizer st= new StringTokenizer(rrule, SEMICOLON);
+
+        while (st.hasMoreTokens()) {
+            String attr, value;
+            String prop = st.nextToken();
+            int sep = prop.indexOf(EQUALS_SIGN);
+            if (sep != -1) {
+                attr = prop.substring(0, sep);
+                value = prop.substring(sep + 1);
+            } else {
+                parseError = true;
+                break;
+            }
+
+            if (attr.equals(ICAL_FREQ)) {
+                // only support YEARLY frequency type
+                if (value.equals(ICAL_YEARLY)) {
+                    yearly = true;
+                } else {
+                    parseError = true;
+                    break;                        
+                }
+            } else if (attr.equals(ICAL_UNTIL)) {
+                // ISO8601 UTC format, for example, "20060315T020000Z"
+                try {
+                    untilTime = parseDateTimeString(value, 0);
+                } catch (IllegalArgumentException iae) {
+                    parseError = true;
+                    break;
+                }
+            } else if (attr.equals(ICAL_BYMONTH)) {
+                // Note: BYMONTH may contain multiple months, but only single month make sense for
+                // VTIMEZONE property.
+                if (value.length() > 2) {
+                    parseError = true;
+                    break;
+                }
+                try {
+                    month = Integer.parseInt(value) - 1;
+                    if (month < 0 || month >= 12) {
+                        parseError = true;
+                        break;
+                    }
+                } catch (NumberFormatException nfe) {
+                    parseError = true;
+                    break;
+                }
+            } else if (attr.equals(ICAL_BYDAY)) {
+                // Note: BYDAY may contain multiple day of week separated by comma.  It is unlikely used for
+                // VTIMEZONE property.  We do not support the case.
+
+                // 2-letter format is used just for representing a day of week, for example, "SU" for Sunday
+                // 3 or 4-letter format is used for represeinging Nth day of week, for example, "-1SA" for last Saturday
+                int length = value.length();
+                if (length < 2 || length > 4) {
+                    parseError = true;
+                    break;
+                }
+                if (length > 2) {
+                    // Nth day of week
+                    int sign = 1;
+                    if (value.charAt(0) == '+') {
+                        sign = 1;
+                    } else if (value.charAt(0) == '-') {
+                        sign = -1;
+                    } else if (length == 4) {
+                        parseError = true;
+                        break;
+                    }
+                    try {
+                        int n = Integer.parseInt(value.substring(length - 3, length - 2));
+                        if (n == 0 || n > 4) {
+                            parseError = true;
+                            break;
+                        }
+                        nthDayOfWeek = n * sign;
+                    } catch(NumberFormatException nfe) {
+                        parseError = true;
+                        break;
+                    }
+                    value = value.substring(length - 2);
+                }
+                int wday;
+                for (wday = 0; wday < ICAL_DOW_NAMES.length; wday++) {
+                    if (value.equals(ICAL_DOW_NAMES[wday])) {
+                        break;
+                    }
+                }
+                if (wday < ICAL_DOW_NAMES.length) {
+                    // Sunday(1) - Saturday(7)
+                    dayOfWeek = wday + 1;
+                } else {
+                    parseError = true;
+                    break;
+                }
+            } else if (attr.equals(ICAL_BYMONTHDAY)) {
+                // Note: BYMONTHDAY may contain multiple days delimited by comma
+                //
+                // A value of BYMONTHDAY could be negative, for example, -1 means
+                // the last day in a month
+                StringTokenizer days = new StringTokenizer(value, COMMA);
+                int count = days.countTokens();
+                dayOfMonth = new int[count];
+                int index = 0;
+                while(days.hasMoreTokens()) {
+                    try {
+                        dayOfMonth[index++] = Integer.parseInt(days.nextToken());
+                    } catch (NumberFormatException nfe) {
+                        parseError = true;
+                        break;
+                    }
+                }
+            }
+        }
+
+        if (parseError) {
+            return null;
+        }
+        if (!yearly) {
+            // FREQ=YEARLY must be set
+            return null;
+        }
+
+        until[0] = untilTime;
+
+        int[] results;
+        if (dayOfMonth == null) {
+            results = new int[4];
+            results[3] = 0;
+        } else {
+            results = new int[3 + dayOfMonth.length];
+            for (int i = 0; i < dayOfMonth.length; i++) {
+                results[3 + i] = dayOfMonth[i];
+            }
+        }
+        results[0] = month;
+        results[1] = dayOfWeek;
+        results[2] = nthDayOfWeek;
+        return results;
+    }
+    
+    /*
+     * Create a TimeZoneRule by the RDATE definition
+     */
+    private static TimeZoneRule createRuleByRDATE(String tzname,
+            int rawOffset, int dstSavings, long start, List dates, int fromOffset) {
+        // Create an array of transition times
+        long[] times;
+        if (dates == null || dates.size() == 0) {
+            // When no RDATE line is provided, use start (DTSTART)
+            // as the transition time
+            times = new long[1];
+            times[0] = start;
+        } else {
+            times = new long[dates.size()];
+            Iterator it = dates.iterator();
+            int idx = 0;
+            try {
+                while(it.hasNext()) {
+                    times[idx++] = parseDateTimeString((String)it.next(), fromOffset);
+                }
+            } catch (IllegalArgumentException iae) {
+                return null;
+            }
+        }
+        return new TimeArrayTimeZoneRule(tzname, rawOffset, dstSavings, times, DateTimeRule.UTC_TIME);
+    }
+
+    /*
+     * Write the time zone rules in RFC2445 VTIMEZONE format
+     */
+    private void writeZone(Writer w, BasicTimeZone basictz, String[] customProperties) throws IOException {
+        // Write the header
+        writeHeader(w);
+
+        if (customProperties != null && customProperties.length > 0) {
+            for (int i = 0; i < customProperties.length; i++) {
+                if (customProperties[i] != null) {
+                    w.write(customProperties[i]);
+                    w.write(NEWLINE);
+                }
+            }
+        }
+
+        long t = MIN_TIME;
+        String dstName = null;
+        int dstFromOffset = 0;
+        int dstFromDSTSavings = 0;
+        int dstToOffset = 0;
+        int dstStartYear = 0;
+        int dstMonth = 0;
+        int dstDayOfWeek = 0;
+        int dstWeekInMonth = 0;
+        int dstMillisInDay = 0;
+        long dstStartTime = 0;
+        long dstUntilTime = 0;
+        int dstCount = 0;
+        AnnualTimeZoneRule finalDstRule = null;
+
+        String stdName = null;
+        int stdFromOffset = 0;
+        int stdFromDSTSavings = 0;
+        int stdToOffset = 0;
+        int stdStartYear = 0;
+        int stdMonth = 0;
+        int stdDayOfWeek = 0;
+        int stdWeekInMonth = 0;
+        int stdMillisInDay = 0;
+        long stdStartTime = 0;
+        long stdUntilTime = 0;
+        int stdCount = 0;
+        AnnualTimeZoneRule finalStdRule = null;
+
+        int[] dtfields = new int[6];
+        boolean hasTransitions = false;
+
+        // Going through all transitions
+        while(true) {
+            TimeZoneTransition tzt = basictz.getNextTransition(t, false);
+            if (tzt == null) {
+                break;
+            }
+            hasTransitions = true;
+            t = tzt.getTime();
+            String name = tzt.getTo().getName();
+            boolean isDst = (tzt.getTo().getDSTSavings() != 0);
+            int fromOffset = tzt.getFrom().getRawOffset() + tzt.getFrom().getDSTSavings();
+            int fromDSTSavings = tzt.getFrom().getDSTSavings();
+            int toOffset = tzt.getTo().getRawOffset() + tzt.getTo().getDSTSavings();
+            Grego.timeToFields(tzt.getTime() + fromOffset, dtfields);
+            int weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]);
+            int year = dtfields[0];
+            boolean sameRule = false;
+            if (isDst) {
+                if (finalDstRule == null && tzt.getTo() instanceof AnnualTimeZoneRule) {
+                    if (((AnnualTimeZoneRule)tzt.getTo()).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+                        finalDstRule = (AnnualTimeZoneRule)tzt.getTo();
+                    }
+                }
+                if (dstCount > 0) {
+                    if (year == dstStartYear + dstCount
+                            && name.equals(dstName)
+                            && dstFromOffset == fromOffset
+                            && dstToOffset == toOffset
+                            && dstMonth == dtfields[1]
+                            && dstDayOfWeek == dtfields[3]
+                            && dstWeekInMonth == weekInMonth
+                            && dstMillisInDay == dtfields[5]) {
+                        // Update until time
+                        dstUntilTime = t;
+                        dstCount++;
+                        sameRule = true;
+                    }
+                    if (!sameRule) {
+                        if (dstCount == 1) {
+                            writeZonePropsByTime(w, true, dstName, dstFromOffset, dstToOffset,
+                                    dstStartTime, true);
+                        } else {
+                            writeZonePropsByDOW(w, true, dstName, dstFromOffset, dstToOffset,
+                                    dstMonth, dstWeekInMonth, dstDayOfWeek, dstStartTime, dstUntilTime);
+                        }
+                    }
+                } 
+                if (!sameRule) {
+                    // Reset this DST information
+                    dstName = name;
+                    dstFromOffset = fromOffset;
+                    dstFromDSTSavings = fromDSTSavings;
+                    dstToOffset = toOffset;
+                    dstStartYear = year;
+                    dstMonth = dtfields[1];
+                    dstDayOfWeek = dtfields[3];
+                    dstWeekInMonth = weekInMonth;
+                    dstMillisInDay = dtfields[5];
+                    dstStartTime = dstUntilTime = t;
+                    dstCount = 1;
+                }
+                if (finalStdRule != null && finalDstRule != null) {
+                    break;
+                }
+            } else {
+                if (finalStdRule == null && tzt.getTo() instanceof AnnualTimeZoneRule) {
+                    if (((AnnualTimeZoneRule)tzt.getTo()).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) {
+                        finalStdRule = (AnnualTimeZoneRule)tzt.getTo();
+                    }
+                }
+                if (stdCount > 0) {
+                    if (year == stdStartYear + stdCount
+                            && name.equals(stdName)
+                            && stdFromOffset == fromOffset
+                            && stdToOffset == toOffset
+                            && stdMonth == dtfields[1]
+                            && stdDayOfWeek == dtfields[3]
+                            && stdWeekInMonth == weekInMonth
+                            && stdMillisInDay == dtfields[5]) {
+                        // Update until time
+                        stdUntilTime = t;
+                        stdCount++;
+                        sameRule = true;
+                    }
+                    if (!sameRule) {
+                        if (stdCount == 1) {
+                            writeZonePropsByTime(w, false, stdName, stdFromOffset, stdToOffset,
+                                    stdStartTime, true);
+                        } else {
+                            writeZonePropsByDOW(w, false, stdName, stdFromOffset, stdToOffset,
+                                    stdMonth, stdWeekInMonth, stdDayOfWeek, stdStartTime, stdUntilTime);
+                        }
+                    }
+                }
+                if (!sameRule) {
+                    // Reset this STD information
+                    stdName = name;
+                    stdFromOffset = fromOffset;
+                    stdFromDSTSavings = fromDSTSavings;
+                    stdToOffset = toOffset;
+                    stdStartYear = year;
+                    stdMonth = dtfields[1];
+                    stdDayOfWeek = dtfields[3];
+                    stdWeekInMonth = weekInMonth;
+                    stdMillisInDay = dtfields[5];
+                    stdStartTime = stdUntilTime = t;
+                    stdCount = 1;
+                }
+                if (finalStdRule != null && finalDstRule != null) {
+                    break;
+                }
+            }
+        }
+        if (!hasTransitions) {
+            // No transition - put a single non transition RDATE
+            int offset = basictz.getOffset(0 /* any time */);
+            boolean isDst = (offset != basictz.getRawOffset());
+            writeZonePropsByTime(w, isDst, getDefaultTZName(basictz.getID(), isDst),
+                    offset, offset, DEF_TZSTARTTIME - offset, false);                
+        } else {
+            if (dstCount > 0) {
+                if (finalDstRule == null) {
+                    if (dstCount == 1) {
+                        writeZonePropsByTime(w, true, dstName, dstFromOffset, dstToOffset,
+                                dstStartTime, true);
+                    } else {
+                        writeZonePropsByDOW(w, true, dstName, dstFromOffset, dstToOffset,
+                                dstMonth, dstWeekInMonth, dstDayOfWeek, dstStartTime, dstUntilTime);
+                    }
+                } else {
+                    if (dstCount == 1) {
+                        writeFinalRule(w, true, finalDstRule,
+                                dstFromOffset - dstFromDSTSavings, dstFromDSTSavings, dstStartTime);
+                    } else {
+                        // Use a single rule if possible
+                        if (isEquivalentDateRule(dstMonth, dstWeekInMonth, dstDayOfWeek, finalDstRule.getRule())) {
+                            writeZonePropsByDOW(w, true, dstName, dstFromOffset, dstToOffset,
+                                    dstMonth, dstWeekInMonth, dstDayOfWeek, dstStartTime, MAX_TIME);
+                        } else {
+                            // Not equivalent rule - write out two different rules
+                            writeZonePropsByDOW(w, true, dstName, dstFromOffset, dstToOffset,
+                                    dstMonth, dstWeekInMonth, dstDayOfWeek, dstStartTime, dstUntilTime);
+                            writeFinalRule(w, true, finalDstRule,
+                                    dstFromOffset - dstFromDSTSavings, dstFromDSTSavings, dstStartTime);
+                        }
+                    }
+                }
+            }
+            if (stdCount > 0) {
+                if (finalStdRule == null) {
+                    if (stdCount == 1) {
+                        writeZonePropsByTime(w, false, stdName, stdFromOffset, stdToOffset,
+                                stdStartTime, true);
+                    } else {
+                        writeZonePropsByDOW(w, false, stdName, stdFromOffset, stdToOffset,
+                                stdMonth, stdWeekInMonth, stdDayOfWeek, stdStartTime, stdUntilTime);
+                    }
+                } else {
+                    if (stdCount == 1) {
+                        writeFinalRule(w, false, finalStdRule,
+                                stdFromOffset - stdFromDSTSavings, stdFromDSTSavings, stdStartTime);
+                    } else {
+                        // Use a single rule if possible
+                        if (isEquivalentDateRule(stdMonth, stdWeekInMonth, stdDayOfWeek, finalStdRule.getRule())) {
+                            writeZonePropsByDOW(w, false, stdName, stdFromOffset, stdToOffset,
+                                    stdMonth, stdWeekInMonth, stdDayOfWeek, stdStartTime, MAX_TIME);                            
+                        } else {
+                            // Not equivalent rule - write out two different rules
+                            writeZonePropsByDOW(w, false, stdName, stdFromOffset, stdToOffset,
+                                    stdMonth, stdWeekInMonth, stdDayOfWeek, stdStartTime, stdUntilTime);
+                            writeFinalRule(w, false, finalStdRule,
+                                    stdFromOffset - stdFromDSTSavings, stdFromDSTSavings, stdStartTime);
+                        }
+                    }
+                }
+            }            
+        }
+        writeFooter(w);
+    }
+
+    /*
+     * Check if the DOW rule specified by month, weekInMonth and dayOfWeek is equivalent
+     * to the DateTimerule.
+     */
+    private static boolean isEquivalentDateRule(int month, int weekInMonth, int dayOfWeek, DateTimeRule dtrule) {
+        if (month != dtrule.getRuleMonth() || dayOfWeek != dtrule.getRuleDayOfWeek()) {
+            return false;
+        }
+        if (dtrule.getTimeRuleType() != DateTimeRule.WALL_TIME) {
+            // Do not try to do more intelligent comparison for now.
+            return false;
+        }
+        if (dtrule.getDateRuleType() == DateTimeRule.DOW
+                && dtrule.getRuleWeekInMonth() == weekInMonth) {
+            return true;
+        }
+        int ruleDOM = dtrule.getRuleDayOfMonth();
+        if (dtrule.getDateRuleType() == DateTimeRule.DOW_GEQ_DOM) {
+            if (ruleDOM%7 == 1 && (ruleDOM + 6)/7 == weekInMonth) {
+                return true;
+            }
+            if (month != Calendar.FEBRUARY && (MONTHLENGTH[month] - ruleDOM)%7 == 6
+                    && weekInMonth == -1*((MONTHLENGTH[month]-ruleDOM+1)/7)) {
+                return true;
+            }
+        }
+        if (dtrule.getDateRuleType() == DateTimeRule.DOW_LEQ_DOM) {
+            if (ruleDOM%7 == 0 && ruleDOM/7 == weekInMonth) {
+                return true;
+            }
+            if (month != Calendar.FEBRUARY && (MONTHLENGTH[month] - ruleDOM)%7 == 0
+                    && weekInMonth == -1*((MONTHLENGTH[month] - ruleDOM)/7 + 1)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /*
+     * Write a single start time
+     */
+    private static void writeZonePropsByTime(Writer writer, boolean isDst, String tzname,
+            int fromOffset, int toOffset, long time, boolean withRDATE) throws IOException {
+        beginZoneProps(writer, isDst, tzname, fromOffset, toOffset, time);
+        if (withRDATE) {
+            writer.write(ICAL_RDATE);
+            writer.write(COLON);
+            writer.write(getDateTimeString(time + fromOffset));
+            writer.write(NEWLINE);
+        }
+        endZoneProps(writer, isDst);
+    }
+
+    /*
+     * Write start times defined by a DOM rule using VTIMEZONE RRULE
+     */
+    private static void writeZonePropsByDOM(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset,
+            int month, int dayOfMonth, long startTime, long untilTime) throws IOException {
+        beginZoneProps(writer, isDst, tzname, fromOffset, toOffset, startTime);
+
+        beginRRULE(writer, month);
+        writer.write(ICAL_BYMONTHDAY);
+        writer.write(EQUALS_SIGN);
+        writer.write(Integer.toString(dayOfMonth));
+
+        if (untilTime != MAX_TIME) {
+            appendUNTIL(writer, getDateTimeString(untilTime + fromOffset));
+        }
+        writer.write(NEWLINE);
+
+        endZoneProps(writer, isDst);
+    }
+
+    /*
+     * Write start times defined by a DOW rule using VTIMEZONE RRULE
+     */
+    private static void writeZonePropsByDOW(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset,
+            int month, int weekInMonth, int dayOfWeek, long startTime, long untilTime) throws IOException {
+        beginZoneProps(writer, isDst, tzname, fromOffset, toOffset, startTime);
+
+        beginRRULE(writer, month);
+        writer.write(ICAL_BYDAY);
+        writer.write(EQUALS_SIGN);
+        writer.write(Integer.toString(weekInMonth));    // -4, -3, -2, -1, 1, 2, 3, 4
+        writer.write(ICAL_DOW_NAMES[dayOfWeek - 1]);    // SU, MO, TU...
+
+        if (untilTime != MAX_TIME) {
+            appendUNTIL(writer, getDateTimeString(untilTime + fromOffset));
+        }
+        writer.write(NEWLINE);
+
+        endZoneProps(writer, isDst);
+    }
+
+    /*
+     * Write start times defined by a DOW_GEQ_DOM rule using VTIMEZONE RRULE
+     */
+    private static void writeZonePropsByDOW_GEQ_DOM(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset,
+            int month, int dayOfMonth, int dayOfWeek, long startTime, long untilTime) throws IOException {
+        // Check if this rule can be converted to DOW rule
+        if (dayOfMonth%7 == 1) {
+            // Can be represented by DOW rule
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    month, (dayOfMonth + 6)/7, dayOfWeek, startTime, untilTime);
+        } else if (month != Calendar.FEBRUARY && (MONTHLENGTH[month] - dayOfMonth)%7 == 6) {
+            // Can be represented by DOW rule with negative week number
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    month, -1*((MONTHLENGTH[month] - dayOfMonth + 1)/7), dayOfWeek, startTime, untilTime);
+        } else {
+            // Otherwise, use BYMONTHDAY to include all possible dates
+            beginZoneProps(writer, isDst, tzname, fromOffset, toOffset, startTime);
+
+            // Check if all days are in the same month
+            int startDay = dayOfMonth;
+            int currentMonthDays = 7;
+        
+            if (dayOfMonth <= 0) {
+                // The start day is in previous month
+                int prevMonthDays = 1 - dayOfMonth;
+                currentMonthDays -= prevMonthDays;
+
+                int prevMonth = (month - 1) < 0 ? 11 : month - 1;
+
+                // Note: When a rule is separated into two, UNTIL attribute needs to be
+                // calculated for each of them.  For now, we skip this, because we basically use this method
+                // only for final rules, which does not have the UNTIL attribute
+                writeZonePropsByDOW_GEQ_DOM_sub(writer, prevMonth, -prevMonthDays, dayOfWeek, prevMonthDays, MAX_TIME /* Do not use UNTIL */, fromOffset);
+
+                // Start from 1 for the rest
+                startDay = 1;
+            } else if (dayOfMonth + 6 > MONTHLENGTH[month]) {
+                // Note: This code does not actually work well in February.  For now, days in month in
+                // non-leap year.
+                int nextMonthDays = dayOfMonth + 6 - MONTHLENGTH[month];
+                currentMonthDays -= nextMonthDays;
+
+                int nextMonth = (month + 1) > 11 ? 0 : month + 1;
+                
+                writeZonePropsByDOW_GEQ_DOM_sub(writer, nextMonth, 1, dayOfWeek, nextMonthDays, MAX_TIME /* Do not use UNTIL */, fromOffset);
+            }
+            writeZonePropsByDOW_GEQ_DOM_sub(writer, month, startDay, dayOfWeek, currentMonthDays, untilTime, fromOffset);
+            endZoneProps(writer, isDst);
+        }
+    }
+ 
+    /*
+     * Called from writeZonePropsByDOW_GEQ_DOM
+     */
+    private static void writeZonePropsByDOW_GEQ_DOM_sub(Writer writer, int month,
+            int dayOfMonth, int dayOfWeek, int numDays, long untilTime, int fromOffset) throws IOException {
+
+        int startDayNum = dayOfMonth;
+        boolean isFeb = (month == Calendar.FEBRUARY);
+        if (dayOfMonth < 0 && !isFeb) {
+            // Use positive number if possible
+            startDayNum = MONTHLENGTH[month] + dayOfMonth + 1;
+        }
+        beginRRULE(writer, month);
+        writer.write(ICAL_BYDAY);
+        writer.write(EQUALS_SIGN);
+        writer.write(ICAL_DOW_NAMES[dayOfWeek - 1]);    // SU, MO, TU...
+        writer.write(SEMICOLON);
+        writer.write(ICAL_BYMONTHDAY);
+        writer.write(EQUALS_SIGN);
+
+        writer.write(Integer.toString(startDayNum));
+        for (int i = 1; i < numDays; i++) {
+            writer.write(COMMA);
+            writer.write(Integer.toString(startDayNum + i));
+        }
+
+        if (untilTime != MAX_TIME) {
+            appendUNTIL(writer, getDateTimeString(untilTime + fromOffset));
+        }
+        writer.write(NEWLINE);
+    }
+
+    /*
+     * Write start times defined by a DOW_LEQ_DOM rule using VTIMEZONE RRULE
+     */
+    private static void writeZonePropsByDOW_LEQ_DOM(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset,
+            int month, int dayOfMonth, int dayOfWeek, long startTime, long untilTime) throws IOException {
+        // Check if this rule can be converted to DOW rule
+        if (dayOfMonth%7 == 0) {
+            // Can be represented by DOW rule
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    month, dayOfMonth/7, dayOfWeek, startTime, untilTime);
+        } else if (month != Calendar.FEBRUARY && (MONTHLENGTH[month] - dayOfMonth)%7 == 0){
+            // Can be represented by DOW rule with negative week number
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    month, -1*((MONTHLENGTH[month] - dayOfMonth)/7 + 1), dayOfWeek, startTime, untilTime);
+        } else if (month == Calendar.FEBRUARY && dayOfMonth == 29) {
+            // Specical case for February
+            writeZonePropsByDOW(writer, isDst, tzname, fromOffset, toOffset,
+                    Calendar.FEBRUARY, -1, dayOfWeek, startTime, untilTime);
+        } else {
+            // Otherwise, convert this to DOW_GEQ_DOM rule
+            writeZonePropsByDOW_GEQ_DOM(writer, isDst, tzname, fromOffset, toOffset,
+                    month, dayOfMonth - 6, dayOfWeek, startTime, untilTime);
+        }
+    }
+
+    /*
+     * Write the final time zone rule using RRULE, with no UNTIL attribute
+     */
+    private static void writeFinalRule(Writer writer, boolean isDst, AnnualTimeZoneRule rule,
+            int fromRawOffset, int fromDSTSavings, long startTime) throws IOException{
+        DateTimeRule dtrule = toWallTimeRule(rule.getRule(), fromRawOffset, fromDSTSavings);
+        int toOffset = rule.getRawOffset() + rule.getDSTSavings();
+        switch (dtrule.getDateRuleType()) {
+        case DateTimeRule.DOM:
+            writeZonePropsByDOM(writer, isDst, rule.getName(), fromRawOffset + fromDSTSavings, toOffset,
+                    dtrule.getRuleMonth(), dtrule.getRuleDayOfMonth(), startTime, MAX_TIME);
+            break;
+        case DateTimeRule.DOW:
+            writeZonePropsByDOW(writer, isDst, rule.getName(), fromRawOffset + fromDSTSavings, toOffset,
+                    dtrule.getRuleMonth(), dtrule.getRuleWeekInMonth(), dtrule.getRuleDayOfWeek(), startTime, MAX_TIME);
+            break;
+        case DateTimeRule.DOW_GEQ_DOM:
+            writeZonePropsByDOW_GEQ_DOM(writer, isDst, rule.getName(), fromRawOffset + fromDSTSavings, toOffset,
+                    dtrule.getRuleMonth(), dtrule.getRuleDayOfMonth(), dtrule.getRuleDayOfWeek(), startTime, MAX_TIME);
+            break;
+        case DateTimeRule.DOW_LEQ_DOM:
+            writeZonePropsByDOW_LEQ_DOM(writer, isDst, rule.getName(), fromRawOffset + fromDSTSavings, toOffset,
+                    dtrule.getRuleMonth(), dtrule.getRuleDayOfMonth(), dtrule.getRuleDayOfWeek(), startTime, MAX_TIME);
+            break;
+        }
+    }
+
+    /*
+     * Convert the rule to its equivalent rule using WALL_TIME mode
+     */
+    private static DateTimeRule toWallTimeRule(DateTimeRule rule, int rawOffset, int dstSavings) {
+        if (rule.getTimeRuleType() == DateTimeRule.WALL_TIME) {
+            return rule;
+        }
+        int wallt = rule.getRuleMillisInDay();
+        if (rule.getTimeRuleType() == DateTimeRule.UTC_TIME) {
+            wallt += (rawOffset + dstSavings);
+        } else if (rule.getTimeRuleType() == DateTimeRule.STANDARD_TIME) {
+            wallt += dstSavings;
+        }
+
+        int month = -1, dom = 0, dow = 0, dtype = -1;
+        int dshift = 0;
+        if (wallt < 0) {
+            dshift = -1;
+            wallt += Grego.MILLIS_PER_DAY;
+        } else if (wallt >= Grego.MILLIS_PER_DAY) {
+            dshift = 1;
+            wallt -= Grego.MILLIS_PER_DAY;
+        }
+
+        month = rule.getRuleMonth();
+        dom = rule.getRuleDayOfMonth();
+        dow = rule.getRuleDayOfWeek();
+        dtype = rule.getDateRuleType();
+
+        if (dshift != 0) {
+            if (dtype == DateTimeRule.DOW) {
+                // Convert to DOW_GEW_DOM or DOW_LEQ_DOM rule first
+                int wim = rule.getRuleWeekInMonth();
+                if (wim > 0) {
+                    dtype = DateTimeRule.DOW_GEQ_DOM;
+                    dom = 7 * (wim - 1) + 1;
+                } else {
+                    dtype = DateTimeRule.DOW_LEQ_DOM;
+                    dom = MONTHLENGTH[month] + 7 * (wim + 1);
+                }
+
+            }
+            // Shift one day before or after
+            dom += dshift;
+            if (dom == 0) {
+                month--;
+                month = month < Calendar.JANUARY ? Calendar.DECEMBER : month;
+                dom = MONTHLENGTH[month];
+            } else if (dom > MONTHLENGTH[month]) {
+                month++;
+                month = month > Calendar.DECEMBER ? Calendar.JANUARY : month;
+                dom = 1;
+            }
+            if (dtype != DateTimeRule.DOM) {
+                // Adjust day of week
+                dow += dshift;
+                if (dow < Calendar.SUNDAY) {
+                    dow = Calendar.SATURDAY;
+                } else if (dow > Calendar.SATURDAY) {
+                    dow = Calendar.SUNDAY;
+                }
+            }
+        }
+        // Create a new rule
+        DateTimeRule modifiedRule;
+        if (dtype == DateTimeRule.DOM) {
+            modifiedRule = new DateTimeRule(month, dom, wallt, DateTimeRule.WALL_TIME);
+        } else {
+            modifiedRule = new DateTimeRule(month, dom, dow,
+                    (dtype == DateTimeRule.DOW_GEQ_DOM), wallt, DateTimeRule.WALL_TIME);
+        }
+        return modifiedRule;
+    }
+
+    /*
+     * Write the opening section of zone properties
+     */
+    private static void beginZoneProps(Writer writer, boolean isDst, String tzname, int fromOffset, int toOffset, long startTime) throws IOException {
+        writer.write(ICAL_BEGIN);
+        writer.write(COLON);
+        if (isDst) {
+            writer.write(ICAL_DAYLIGHT);
+        } else {
+            writer.write(ICAL_STANDARD);
+        }
+        writer.write(NEWLINE);
+
+        // TZOFFSETTO
+        writer.write(ICAL_TZOFFSETTO);
+        writer.write(COLON);
+        writer.write(millisToOffset(toOffset));
+        writer.write(NEWLINE);
+
+        // TZOFFSETFROM
+        writer.write(ICAL_TZOFFSETFROM);
+        writer.write(COLON);
+        writer.write(millisToOffset(fromOffset));
+        writer.write(NEWLINE);
+
+        // TZNAME
+        writer.write(ICAL_TZNAME);
+        writer.write(COLON);
+        writer.write(tzname);
+        writer.write(NEWLINE);
+        
+        // DTSTART
+        writer.write(ICAL_DTSTART);
+        writer.write(COLON);
+        writer.write(getDateTimeString(startTime + fromOffset));
+        writer.write(NEWLINE);        
+    }
+
+    /*
+     * Writes the closing section of zone properties
+     */
+    private static void endZoneProps(Writer writer, boolean isDst) throws IOException{
+        // END:STANDARD or END:DAYLIGHT
+        writer.write(ICAL_END);
+        writer.write(COLON);
+        if (isDst) {
+            writer.write(ICAL_DAYLIGHT);
+        } else {
+            writer.write(ICAL_STANDARD);
+        }
+        writer.write(NEWLINE);
+    }
+
+    /*
+     * Write the beginning part of RRULE line
+     */
+    private static void beginRRULE(Writer writer, int month) throws IOException {
+        writer.write(ICAL_RRULE);
+        writer.write(COLON);
+        writer.write(ICAL_FREQ);
+        writer.write(EQUALS_SIGN);
+        writer.write(ICAL_YEARLY);
+        writer.write(SEMICOLON);
+        writer.write(ICAL_BYMONTH);
+        writer.write(EQUALS_SIGN);
+        writer.write(Integer.toString(month + 1));
+        writer.write(SEMICOLON);
+    }
+
+    /*
+     * Append the UNTIL attribute after RRULE line
+     */
+    private static void appendUNTIL(Writer writer, String until) throws IOException {
+        if (until != null) {
+            writer.write(SEMICOLON);
+            writer.write(ICAL_UNTIL);
+            writer.write(EQUALS_SIGN);
+            writer.write(until);
+        }
+    }
+
+    /*
+     * Write the opening section of the VTIMEZONE block
+     */
+    private void writeHeader(Writer writer)throws IOException {
+        writer.write(ICAL_BEGIN);
+        writer.write(COLON);
+        writer.write(ICAL_VTIMEZONE);
+        writer.write(NEWLINE);
+        writer.write(ICAL_TZID);
+        writer.write(COLON);
+        writer.write(tz.getID());
+        writer.write(NEWLINE);
+        if (tzurl != null) {
+            writer.write(ICAL_TZURL);
+            writer.write(COLON);
+            writer.write(tzurl);
+            writer.write(NEWLINE);
+        }
+        if (lastmod != null) {
+            writer.write(ICAL_LASTMOD);
+            writer.write(COLON);
+            writer.write(getUTCDateTimeString(lastmod.getTime()));
+            writer.write(NEWLINE);
+        }
+    }
+
+    /*
+     * Write the closing section of the VTIMEZONE definition block
+     */
+    private static void writeFooter(Writer writer) throws IOException {
+        writer.write(ICAL_END);
+        writer.write(COLON);
+        writer.write(ICAL_VTIMEZONE);
+        writer.write(NEWLINE);
+    }
+
+    /*
+     * Convert date/time to RFC2445 Date-Time form #1 DATE WITH LOCAL TIME
+     */
+    private static String getDateTimeString(long time) {
+        int[] fields = Grego.timeToFields(time, null);
+        StringBuffer sb = new StringBuffer(15);
+        sb.append(numToString(fields[0], 4));
+        sb.append(numToString(fields[1] + 1, 2));
+        sb.append(numToString(fields[2], 2));
+        sb.append('T');
+
+        int t = fields[5];
+        int hour = t / Grego.MILLIS_PER_HOUR;
+        t %= Grego.MILLIS_PER_HOUR;
+        int min = t / Grego.MILLIS_PER_MINUTE;
+        t %= Grego.MILLIS_PER_MINUTE;
+        int sec = t / Grego.MILLIS_PER_SECOND;
+        
+        sb.append(numToString(hour, 2));
+        sb.append(numToString(min, 2));
+        sb.append(numToString(sec, 2));
+        return sb.toString();
+    }
+
+    /*
+     * Convert date/time to RFC2445 Date-Time form #2 DATE WITH UTC TIME
+     */
+    private static String getUTCDateTimeString(long time) {
+        return getDateTimeString(time) + "Z";
+    }
+
+    /*
+     * Parse RFC2445 Date-Time form #1 DATE WITH LOCAL TIME and
+     * #2 DATE WITH UTC TIME
+     */
+    private static long parseDateTimeString(String str, int offset) {
+        int year = 0, month = 0, day = 0, hour = 0, min = 0, sec = 0;
+        boolean isUTC = false;
+        boolean isValid = false;
+        do {
+            if (str == null) {
+                break;
+            }
+
+            int length = str.length();
+            if (length != 15 && length != 16) {
+                // FORM#1 15 characters, such as "20060317T142115"
+                // FORM#2 16 characters, such as "20060317T142115Z"
+                break;
+            }
+            if (str.charAt(8) != 'T') {
+                // charcter "T" must be used for separating date and time
+                break;
+            }
+            if (length == 16) {
+                if (str.charAt(15) != 'Z') {
+                    // invalid format
+                    break;
+                }
+                isUTC = true;
+            }
+
+            try {
+                year = Integer.parseInt(str.substring(0, 4));
+                month = Integer.parseInt(str.substring(4, 6)) - 1;  // 0-based
+                day = Integer.parseInt(str.substring(6, 8));
+                hour = Integer.parseInt(str.substring(9, 11));
+                min = Integer.parseInt(str.substring(11, 13));
+                sec = Integer.parseInt(str.substring(13, 15));
+            } catch (NumberFormatException nfe) {
+                break;
+            }
+
+            // check valid range
+            int maxDayOfMonth = Grego.monthLength(year, month);
+            if (year < 0 || month < 0 || month > 11 || day < 1 || day > maxDayOfMonth ||
+                    hour < 0 || hour >= 24 || min < 0 || min >= 60 || sec < 0 || sec >= 60) {
+                break;
+            }
+
+            isValid = true;
+        } while(false);
+
+        if (!isValid) {
+            throw new IllegalArgumentException("Invalid date time string format");
+        }
+        // Calculate the time
+        long time = Grego.fieldsToDay(year, month, day) * Grego.MILLIS_PER_DAY;
+        time += (hour*Grego.MILLIS_PER_HOUR + min*Grego.MILLIS_PER_MINUTE + sec*Grego.MILLIS_PER_SECOND);
+        if (!isUTC) {
+            time -= offset;
+        }
+        return time;
+    }
+
+    /*
+     * Convert RFC2445 utc-offset string to milliseconds
+     */
+    private static int offsetStrToMillis(String str) {
+        boolean isValid = false;
+        int sign = 0, hour = 0, min = 0, sec = 0;
+
+        do {
+            if (str == null) {
+                break;
+            }
+            int length = str.length();
+            if (length != 5 && length != 7) {
+                // utf-offset must be 5 or 7 characters
+                break;
+            }
+            // sign
+            char s = str.charAt(0);
+            if (s == '+') {
+                sign = 1;
+            } else if (s == '-') {
+                sign = -1;
+            } else {
+                // utf-offset must start with "+" or "-"
+                break;
+            }
+
+            try {
+                hour = Integer.parseInt(str.substring(1, 3));
+                min = Integer.parseInt(str.substring(3, 5));
+                if (length == 7) {
+                    sec = Integer.parseInt(str.substring(5, 7));
+                }
+            } catch (NumberFormatException nfe) {
+                break;
+            }
+            isValid = true;
+        } while(false);
+
+        if (!isValid) {
+            throw new IllegalArgumentException("Bad offset string");
+        }
+        int millis = sign * ((hour * 60 + min) * 60 + sec) * 1000;
+        return millis;
+    }
+
+    /*
+     * Convert milliseconds to RFC2445 utc-offset string
+     */
+    private static String millisToOffset(int millis) {
+        StringBuffer sb = new StringBuffer(7);
+        if (millis >= 0) {
+            sb.append('+');
+        } else {
+            sb.append('-');
+            millis = -millis;
+        }
+        int hour, min, sec;
+        int t = millis / 1000;
+
+        sec = t % 60;
+        t = (t - sec) / 60;
+        min = t % 60;
+        hour = t / 60;
+
+        sb.append(numToString(hour, 2));
+        sb.append(numToString(min, 2));
+        sb.append(numToString(sec, 2));
+
+        return sb.toString();
+    }
+
+    /*
+     * Format integer number
+     */
+    private static String numToString(int num, int width) {
+        String str = Integer.toString(num);
+        int len = str.length();
+        if (len >= width) {
+            return str.substring(len - width, len);
+        }
+        StringBuffer sb = new StringBuffer(width);
+        for (int i = len; i < width; i++) {
+            sb.append('0');
+        }
+        sb.append(str);
+        return sb.toString();
+    }
+}
diff --git a/src/com/ibm/icu/util/ValueIterator.java b/src/com/ibm/icu/util/ValueIterator.java
new file mode 100644
index 0000000..fa3c719
--- /dev/null
+++ b/src/com/ibm/icu/util/ValueIterator.java
@@ -0,0 +1,109 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2004, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.util;
+
+/**
+ * <p>Interface for enabling iteration over sets of <int, Object>, where
+ * int is the sorted integer index in ascending order and Object, its 
+ * associated value.</p>
+ * <p>The ValueIterator allows iterations over integer indexes in the range 
+ * of Integer.MIN_VALUE to Integer.MAX_VALUE inclusive. Implementations of 
+ * ValueIterator should specify their own maximum subrange within the above 
+ * range that is meaningful to its applications.</p>
+ * <p>Most implementations will be created by factory methods, such as the
+ * character name iterator in UCharacter.getNameIterator. See example below.
+ * </p>
+ * Example of use:<br>
+ * <pre>
+ * ValueIterator iterator = UCharacter.getNameIterator();
+ * ValueIterator.Element result = new ValueIterator.Element();
+ * iterator.setRange(UCharacter.MIN_VALUE, UCharacter.MAX_VALUE);
+ * while (iterator.next(result)) {
+ *     System.out.println("Codepoint \\u" + 
+ *                        Integer.toHexString(result.integer) + 
+ *                        " has the character name " + (String)result.value);
+ * }
+ * </pre>
+ * @author synwee
+ * @stable ICU 2.6
+ */
+public interface ValueIterator
+{
+    // public inner class ---------------------------------------------
+    
+    /**
+    * <p>The return result container of each iteration. Stores the next 
+    * integer index and its associated value Object.</p> 
+    * @stable ICU 2.6
+    */
+    public static final class Element
+    {
+        // public data members ----------------------------------------
+        
+        /**
+        * Integer index of the current iteration
+        * @stable ICU 2.6
+        */
+        public int integer;
+        /**
+        * Gets the Object value associated with the integer index.
+        * @stable ICU 2.6
+        */ 
+        public Object value;
+        
+        // public constructor ------------------------------------------
+        
+        /**
+         * Empty default constructor to make javadoc happy
+         * @stable ICU 2.4
+         */
+        public Element()
+        {
+        }
+    }
+    
+    // public methods -------------------------------------------------
+    
+    /**
+    * <p>Gets the next result for this iteration and returns 
+    * true if we are not at the end of the iteration, false otherwise.</p>
+    * <p>If the return boolean is a false, the contents of elements will not
+    * be updated.</p>
+    * @param element for storing the result index and value
+    * @return true if we are not at the end of the iteration, false otherwise.
+    * @see Element
+    * @stable ICU 2.6
+    */
+    public boolean next(Element element);
+    
+    /**
+    * <p>Resets the iterator to start iterating from the integer index 
+    * Integer.MIN_VALUE or X if a setRange(X, Y) has been called previously.
+    * </p>
+    * @stable ICU 2.6
+    */
+    public void reset();
+    
+    /**
+     * <p>Restricts the range of integers to iterate and resets the iteration 
+     * to begin at the index argument start.</p>
+     * <p>If setRange(start, end) is not performed before next(element) is 
+     * called, the iteration will start from the integer index 
+     * Integer.MIN_VALUE and end at Integer.MAX_VALUE.</p>
+     * <p>
+     * If this range is set outside the meaningful range specified by the 
+     * implementation, next(element) will always return false.
+     * </p>
+     * @param start first integer in the range to iterate
+     * @param limit one more than the last integer in the range 
+     * @exception IllegalArgumentException thrown when attempting to set an 
+     *            illegal range. E.g limit <= start
+     * @stable ICU 2.6
+     */
+    public void setRange(int start, int limit);
+}
diff --git a/src/com/ibm/icu/util/VersionInfo.java b/src/com/ibm/icu/util/VersionInfo.java
new file mode 100644
index 0000000..0112529
--- /dev/null
+++ b/src/com/ibm/icu/util/VersionInfo.java
@@ -0,0 +1,492 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2008, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.HashMap;
+
+/**
+ * Class to store version numbers of the form major.minor.milli.micro.
+ * @author synwee
+ * @stable ICU 2.6
+ */
+public final class VersionInfo implements Comparable
+{
+    // public data members -------------------------------------------------
+
+    /**
+     * Unicode 1.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_1_0;
+    /**
+     * Unicode 1.0.1 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_1_0_1;
+    /**
+     * Unicode 1.1.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_1_1_0;
+    /**
+     * Unicode 1.1.5 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_1_1_5;
+    /**
+     * Unicode 2.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_0;
+    /**
+     * Unicode 2.1.2 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_1_2;
+    /**
+     * Unicode 2.1.5 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_1_5;
+    /**
+     * Unicode 2.1.8 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_1_8;
+    /**
+     * Unicode 2.1.9 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_2_1_9;
+    /**
+     * Unicode 3.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_0;
+    /**
+     * Unicode 3.0.1 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_0_1;
+    /**
+     * Unicode 3.1.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_1_0;
+    /**
+     * Unicode 3.1.1 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_1_1;
+    /**
+     * Unicode 3.2 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_3_2;
+
+    /**
+     * Unicode 4.0 version
+     * @stable ICU 2.6
+     */
+    public static final VersionInfo UNICODE_4_0;
+
+    /**
+     * Unicode 4.0.1 version
+     * @stable ICU 3.4
+     */
+    public static final VersionInfo UNICODE_4_0_1;
+
+    /**
+     * Unicode 4.1 version
+     * @stable ICU 3.4
+     */
+    public static final VersionInfo UNICODE_4_1;
+
+    /**
+     * Unicode 5.0 version
+     * @stable ICU 3.4
+     */
+    public static final VersionInfo UNICODE_5_0;
+
+    /**
+     * ICU4J current release version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo ICU_VERSION;
+
+    /**
+     * Data version string for ICU's internal data
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final String ICU_DATA_VERSION = "41b";
+
+    /**
+     * ICU4J collator runtime version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo UCOL_RUNTIME_VERSION;
+
+    /**
+     * ICU4J collator builder version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo UCOL_BUILDER_VERSION;
+
+    /**
+     * ICU4J collator tailorings version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo UCOL_TAILORINGS_VERSION;
+
+
+    // public methods ------------------------------------------------------
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * @param version version String in the format of "major.minor.milli.micro"
+     *                or "major.minor.milli" or "major.minor" or "major",
+     *                where major, minor, milli, micro are non-negative numbers
+     *                <= 255. If the trailing version numbers are
+     *                not specified they are taken as 0s. E.g. Version "3.1" is
+     *                equivalent to "3.1.0.0".
+     * @return an instance of VersionInfo with the argument version.
+     * @exception throws an IllegalArgumentException when the argument version
+     *                is not in the right format
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(String version)
+    {
+        int length  = version.length();
+        int array[] = {0, 0, 0, 0};
+        int count   = 0;
+        int index   = 0;
+
+        while (count < 4 && index < length) {
+            char c = version.charAt(index);
+            if (c == '.') {
+                count ++;
+            }
+            else {
+                c -= '0';
+                if (c < 0 || c > 9) {
+                    throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+                }
+                array[count] *= 10;
+                array[count] += c;
+            }
+            index ++;
+        }
+        if (index != length) {
+            throw new IllegalArgumentException(
+                                               "Invalid version number: String '" + version + "' exceeds version format");
+        }
+        for (int i = 0; i < 4; i ++) {
+            if (array[i] < 0 || array[i] > 255) {
+                throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+            }
+        }
+
+        return getInstance(array[0], array[1], array[2], array[3]);
+    }
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @param milli milli version, non-negative number <= 255.
+     * @param micro micro version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(int major, int minor, int milli,
+                                          int micro)
+    {
+        // checks if it is in the hashmap
+        // else
+        if (major < 0 || major > 255 || minor < 0 || minor > 255 ||
+            milli < 0 || milli > 255 || micro < 0 || micro > 255) {
+            throw new IllegalArgumentException(INVALID_VERSION_NUMBER_);
+        }
+        int     version = getInt(major, minor, milli, micro);
+        Integer key     = new Integer(version);
+        Object  result  = MAP_.get(key);
+        if (result == null) {
+            result = new VersionInfo(version);
+            MAP_.put(key, result);
+        }
+        return (VersionInfo)result;
+    }
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, minor, milli, 0).
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @param milli milli version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(int major, int minor, int milli)
+    {
+        return getInstance(major, minor, milli, 0);
+    }
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, minor, 0, 0).
+     * @param major major version, non-negative number <= 255.
+     * @param minor minor version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(int major, int minor)
+    {
+        return getInstance(major, minor, 0, 0);
+    }
+
+    /**
+     * Returns an instance of VersionInfo with the argument version.
+     * Equivalent to getInstance(major, 0, 0, 0).
+     * @param major major version, non-negative number <= 255.
+     * @exception throws an IllegalArgumentException when either arguments are
+     *                                     negative or > 255
+     * @stable ICU 2.6
+     */
+    public static VersionInfo getInstance(int major)
+    {
+        return getInstance(major, 0, 0, 0);
+    }
+
+    private static VersionInfo javaVersion;
+
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static VersionInfo javaVersion() {
+        if (javaVersion == null) {
+            String s = System.getProperty("java.version");
+            // clean string
+            // preserve only digits, separated by single '.'
+            // ignore over 4 digit sequences
+            // does not test < 255, very odd...
+
+            char[] chars = s.toCharArray();
+            int r = 0, w = 0, count = 0;
+            boolean numeric = false; // ignore leading non-numerics
+            while (r < chars.length) {
+                char c = chars[r++];
+                if (c < '0' || c > '9') {
+                    if (numeric) {
+                        if (count == 3) {
+                            // only four digit strings allowed
+                            break;
+                        }
+                        numeric = false;
+                        chars[w++] = '.';
+                        ++count;
+                    }
+                } else {
+                    numeric = true;
+                    chars[w++] = c;
+                }
+            }
+            while (w > 0 && chars[w-1] == '.') {
+                --w;
+            }
+
+            String vs = new String(chars, 0, w);
+
+            javaVersion = VersionInfo.getInstance(vs);
+        }
+        return javaVersion;
+    }
+
+    /**
+     * Returns the String representative of VersionInfo in the format of
+     * "major.minor.milli.micro"
+     * @return String representative of VersionInfo
+     * @stable ICU 2.6
+     */
+    public String toString()
+    {
+        StringBuffer result = new StringBuffer(7);
+        result.append(getMajor());
+        result.append('.');
+        result.append(getMinor());
+        result.append('.');
+        result.append(getMilli());
+        result.append('.');
+        result.append(getMicro());
+        return result.toString();
+    }
+
+    /**
+     * Returns the major version number
+     * @return the major version number
+     * @stable ICU 2.6
+     */
+    public int getMajor()
+    {
+        return (m_version_ >> 24) & LAST_BYTE_MASK_ ;
+    }
+
+    /**
+     * Returns the minor version number
+     * @return the minor version number
+     * @stable ICU 2.6
+     */
+    public int getMinor()
+    {
+        return (m_version_ >> 16) & LAST_BYTE_MASK_ ;
+    }
+
+    /**
+     * Returns the milli version number
+     * @return the milli version number
+     * @stable ICU 2.6
+     */
+    public int getMilli()
+    {
+        return (m_version_ >> 8) & LAST_BYTE_MASK_ ;
+    }
+
+    /**
+     * Returns the micro version number
+     * @return the micro version number
+     * @stable ICU 2.6
+     */
+    public int getMicro()
+    {
+        return m_version_ & LAST_BYTE_MASK_ ;
+    }
+
+    /**
+     * Checks if this version information is equals to the argument version
+     * @param other object to be compared
+     * @return true if other is equals to this object's version information,
+     *         false otherwise
+     * @stable ICU 2.6
+     */
+    public boolean equals(Object other)
+    {
+        return other == this;
+    }
+
+    /**
+     * Compares other with this VersionInfo.
+     * @param other VersionInfo to be compared
+     * @return 0 if the argument is a VersionInfo object that has version
+     *           information equals to this object.
+     *           Less than 0 if the argument is a VersionInfo object that has
+     *           version information greater than this object.
+     *           Greater than 0 if the argument is a VersionInfo object that
+     *           has version information less than this object.
+     * @stable ICU 2.6
+     */
+    public int compareTo(VersionInfo other)
+    {
+        return m_version_ - other.m_version_;
+    }
+
+    /**
+     * Compares other with this VersionInfo.
+     * @param other VersionInfo to be compared. Throws ClassCastException if not a VersionInfo.
+     * @return 0 if the argument is a VersionInfo object that has version
+     *           information equals to this object.
+     *           Less than 0 if the argument is a VersionInfo object that has
+     *           version information greater than this object.
+     *           Greater than 0 if the argument is a VersionInfo object that
+     *           has version information less than this object.
+     * @draft ICU 4.2
+     */
+    public int compareTo(Object other) {
+        return compareTo((VersionInfo)other);
+    }
+
+    // private data members ----------------------------------------------
+
+    /**
+     * Version number stored as a byte for each of the major, minor, milli and
+     * micro numbers in the 32 bit int.
+     * Most significant for the major and the least significant contains the
+     * micro numbers.
+     */
+    private int m_version_;
+    /**
+     * Map of singletons
+     */
+    private static final HashMap MAP_ = new HashMap();
+    /**
+     * Last byte mask
+     */
+    private static final int LAST_BYTE_MASK_ = 0xFF;
+    /**
+     * Error statement string
+     */
+    private static final String INVALID_VERSION_NUMBER_ =
+        "Invalid version number: Version number may be negative or greater than 255";
+
+    // static declaration ------------------------------------------------
+
+    /**
+     * Initialize versions only after MAP_ has been created
+     */
+    static {
+        UNICODE_1_0   = getInstance(1, 0, 0, 0);
+        UNICODE_1_0_1 = getInstance(1, 0, 1, 0);
+        UNICODE_1_1_0 = getInstance(1, 1, 0, 0);
+        UNICODE_1_1_5 = getInstance(1, 1, 5, 0);
+        UNICODE_2_0   = getInstance(2, 0, 0, 0);
+        UNICODE_2_1_2 = getInstance(2, 1, 2, 0);
+        UNICODE_2_1_5 = getInstance(2, 1, 5, 0);
+        UNICODE_2_1_8 = getInstance(2, 1, 8, 0);
+        UNICODE_2_1_9 = getInstance(2, 1, 9, 0);
+        UNICODE_3_0   = getInstance(3, 0, 0, 0);
+        UNICODE_3_0_1 = getInstance(3, 0, 1, 0);
+        UNICODE_3_1_0 = getInstance(3, 1, 0, 0);
+        UNICODE_3_1_1 = getInstance(3, 1, 1, 0);
+        UNICODE_3_2   = getInstance(3, 2, 0, 0);
+        UNICODE_4_0   = getInstance(4, 0, 0, 0);
+        UNICODE_4_0_1 = getInstance(4, 0, 1, 0);
+        UNICODE_4_1   = getInstance(4, 1, 0, 0);
+        UNICODE_5_0   = getInstance(4, 1, 0, 0);
+        ICU_VERSION   = getInstance(4, 1, 2, 0);
+        UCOL_RUNTIME_VERSION = getInstance(6);
+        UCOL_BUILDER_VERSION = getInstance(7);
+        UCOL_TAILORINGS_VERSION = getInstance(1);
+    }
+
+    // private constructor -----------------------------------------------
+
+    /**
+     * Constructor with int
+     * @param compactversion a 32 bit int with each byte representing a number
+     */
+    private VersionInfo(int compactversion)
+    {
+        m_version_ = compactversion;
+    }
+
+    /**
+     * Gets the int from the version numbers
+     * @param major non-negative version number
+     * @param minor non-negativeversion number
+     * @param milli non-negativeversion number
+     * @param micro non-negativeversion number
+     */
+    private static int getInt(int major, int minor, int milli, int micro)
+    {
+        return (major << 24) | (minor << 16) | (milli << 8) | micro;
+    }
+
+}
diff --git a/src/com/ibm/icu/util/package.html b/src/com/ibm/icu/util/package.html
new file mode 100644
index 0000000..2dc06c7
--- /dev/null
+++ b/src/com/ibm/icu/util/package.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+
+-->
+</head>
+<body bgcolor="white">
+International calendars and other utility classes.
+</body>
+</html>
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/AwtMenuBuilder.java b/src/com/ibm/richtext/awtui/AwtMenuBuilder.java
new file mode 100644
index 0000000..7e649d3
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/AwtMenuBuilder.java
@@ -0,0 +1,236 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Window;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.uiimpl.*;
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+// TO DO:  Don't hard-code menu configurations.  Instead, specify them with
+// strings somehow.  This is an improvement over what we had, and it'll do
+// for now.
+
+/**
+ * AwtMenuBuilder creates a set of AWT menus for interacting
+ * with an MTextPanel.  Future versions of this class may allow
+ * clients to control the menu contents.
+ * @see MTextPanel
+ */
+public final class AwtMenuBuilder extends MenuBuilder {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final AwtMenuBuilder INSTANCE = new AwtMenuBuilder();
+    
+    /**
+     * Id for an Edit menu.  The Edit menu has the following items:
+     * <ul>
+     * <li><b>Undo</b> - invoke undo() on the MTextPanel</li>
+     * <li><b>Redo</b> - invoke redo() on the MTextPanel</li>
+     * <li><b>Cut</b> - invoke cut() on the MTextPanel</li>
+     * <li><b>Copy</b> - invoke copy() on the MTextPanel</li>
+     * <li><b>Paste</b> - invoke paste() on the MTextPanel</li>
+     * <li><b>Clear</b> - invoke clear() on the MTextPanel</li>
+     * <li><b>Select All</b> - invoke selectAll() on the MTextPanel</li>
+     * </ul>
+     */
+    public static final int EDIT = MenuBuilder.EDIT;
+    /**
+     * Id for the point sizes menu.  The menu has items that set the size of a character
+     * in a typeface.
+     */
+    public static final int SIZE = MenuBuilder.SIZE;
+    /**
+     * Id for a Style menu.  The Style menu has the following items:
+     * <ul>
+     * <li><b>Plain</b> - remove <code>WEIGHT</code>,
+     *                    <code>POSTURE</code>,
+     *                    <code>UNDERLINE</code> and
+     *                    <code>STRIKETHROUGH</code> attributes from the
+     * current selection</li>
+     * <li><b>Bold</b> - add <code>{WEIGHT,WEIGHT_BOLD}</code> to
+     * the current selection</li>
+     * <li><b>Italic</b> - add <code>{POSTURE,POSTURE_ITALIC}</code> to
+     * the current selection</li>
+     * <li><b>Underline</b> - add <code>{UNDERLINE,UNDERLINE_ON}</code> to
+     * the current selection</li>
+     * <li><b>Strikethrough</b> - add <code>{STRIKETHROUGH,STRIKETHROUGH_ON}</code>
+     * to the current selection</li>
+     * <li><b>Font...</b> - display a dialog allowing the user to
+     * select a typeface (font family) for the current selection</li>
+     * <li><b>Forecolor...</b> - display a dialog allowing the user to
+     * select a foreground color for the current selection</li>
+     * <li><b>Backcolor...</b> - display a dialog allowing the user to
+     * select a background color for the current selection</li>
+     * </ul>
+     */
+    public static final int STYLE = MenuBuilder.STYLE;
+    /**
+     * Id for a paragraph alignment menu.  The menu has the following items:
+     * <ul>
+     * <li><b>Leading</b> - give selected paragraph(s) LEADING flush</li>
+     * <li><b>Center</b> - give selected paragraph(s) CENTER flush</li>
+     * <li><b>Trailing</b> - give selected paragraph(s) TRAILING flush</li>
+     * <li><b>Justified</b> - give selected paragraph(s) full justification</li>
+     * </ul>
+     */
+    public static final int FLUSH = MenuBuilder.FLUSH;
+    /**
+     * Id for a menu that sets the KeyRemap
+     * on an MTextPanel.  The menu has the following items:
+     * <ul>
+     * <li><b>Default</b> - set KeyRemap to identity remap</li>
+     * <li><b>Arabic</b> - set KeyRemap to Arabic transliteration</li>
+     * <li><b>Hebrew</b> - set KeyRemap to Hebrew transliteration</li>
+     * <li><b>Israel Nikud</b> - set KeyRemap to Israel Nikud</li>
+     * <li><b>Thai Ketmanee</b> - set KeyRemap to Thai Ketmanee</li>
+     * </ul>
+     */
+    public static final int KEYMAP = MenuBuilder.KEYMAP;
+    /**
+     * Id for a menu that sets
+     * the primary run direction for a paragraph.  Run direction can be left-to-right,
+     * right-to-left, or can use the default run direction from the Unicode bidi algorithm.
+     */
+    public static final int BIDI = MenuBuilder.BIDI;
+    /**
+     * Id for a menu with an <b>About</b> item.  When selected, 
+     * the item displays a Frame containing some
+     * self-promotional text.
+     */
+    public static final int ABOUT = MenuBuilder.ABOUT;
+    
+    /**
+     * Return an instance of AwtMenuBuilder.
+     */
+    public static AwtMenuBuilder getInstance() {
+        
+        return INSTANCE;
+    }
+    
+    private MenuBar fMenuBar;
+    
+    private AwtMenuBuilder() {
+    }
+    
+    /**
+     * Add a standard set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     */
+    public void createMenus(MenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame) {
+        
+        createMenus(menuBar, textPanel, frame, defaultMenus);
+    }
+    
+    /**
+     * Add a set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     * @param menus an array of integer menu id's.  Each element of the
+     *   array must be one of this class's menu id constants.  If null,
+     *   the default menus are created.
+     */
+    public void createMenus(MenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame,
+                            int[] menus) {
+        
+        if (menus == null) {
+            menus = defaultMenus;
+        }
+        
+        synchronized (MItem.LOCK) {
+            
+            fMenuBar = menuBar;
+            doCreateMenus(textPanel, frame, menus);
+            fMenuBar = null;
+        }
+    }
+    
+    protected void handleAddMenu(String key) {
+        
+        Menu menu = new Menu(ResourceUtils.getResourceString(key));
+        fMenuBar.add(menu);
+        MItem.setItemFactory(new AwtMenuFactory(menu));
+    }
+
+    protected DialogFactory createObjectDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character,
+                                                      final String[] names,
+                                                      final Object[] values) {
+        
+        final Frame dialogParent = fDialogParent;
+
+        return new DialogFactory() {    
+            public Window createDialog(MTextPanel textPanel) {
+                return new ObjectDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        names,
+                                        values);
+            }
+        };
+    }
+    
+    protected DialogFactory createNumberDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character) {
+        
+        final Frame dialogParent = fDialogParent;
+            
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                return new NumberDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        1);
+            }
+        };
+    }    
+    
+    protected DialogFactory createAboutDialogFactory() {
+        
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                String title = ResourceUtils.getResourceString(FrameResources.ABOUT_TITLE);
+                return new MessageDialog(title, AboutText.getAboutText());
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/AwtMenuFactory.java b/src/com/ibm/richtext/awtui/AwtMenuFactory.java
new file mode 100644
index 0000000..f7f8f58
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/AwtMenuFactory.java
@@ -0,0 +1,114 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.CheckboxMenuItem;
+import java.awt.Menu;
+import java.awt.MenuItem;
+import java.awt.MenuShortcut;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+import com.ibm.richtext.uiimpl.MItem;
+import com.ibm.richtext.uiimpl.MItem.ItemFactory;
+
+final class AwtMenuFactory implements ItemFactory {
+        
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class AwtMItem extends MItem {
+        
+        private MenuItem fItem;
+        
+        AwtMItem(MenuItem item) {
+            
+            fItem = item;
+            try {
+                CheckboxMenuItem chItem = (CheckboxMenuItem) fItem;
+                chItem.addItemListener(new ItemListener() {
+                    public void itemStateChanged(ItemEvent e) {
+                        handleSelected();
+                    }
+                });
+            }
+            catch(ClassCastException e) {
+                item.addActionListener(new ActionListener() {
+                    public void actionPerformed(ActionEvent evt) {
+                        handleSelected();
+                    }
+                });
+            }
+        }
+        
+        // Ack - how do you do this from inner classes??
+        protected void handleSelected() {
+            
+            super.handleSelected();
+        }
+        
+        public final void setEnabled(boolean enabled) {
+            
+            fItem.setEnabled(enabled);
+        }
+        
+        public void setState(boolean checked) {
+            
+            try {
+                CheckboxMenuItem item = (CheckboxMenuItem) fItem;
+                item.setState(checked);
+            }
+            catch(ClassCastException e) {
+                throw new Error("Cannot perform setChecked on non-checkbox item");
+            }
+        }
+    }
+    
+    private Menu fMenu;
+        
+    AwtMenuFactory(Menu menu) {
+            
+        fMenu = menu;
+    }
+    
+    private MItem handleCreate(MenuItem item,
+                               MenuData menuData) {
+
+        if (menuData.hasShortcut()) {
+            item.setShortcut(new MenuShortcut(menuData.getShortcutChar()));
+        }
+        
+        fMenu.add(item);
+        
+        return new AwtMItem(item);
+    }
+        
+    public MItem createItem(MenuData menuData) {
+        
+        return handleCreate(new MenuItem(menuData.getName()), menuData);
+    }        
+
+    public MItem createCheckboxItem(MenuData menuData) {
+        
+        return handleCreate(new CheckboxMenuItem(menuData.getName()), menuData);
+    }
+    
+    public void createSeparator() {
+        
+        fMenu.add(new MenuItem("-"));
+    }
+}
+    
diff --git a/src/com/ibm/richtext/awtui/MTabRulerComponent.java b/src/com/ibm/richtext/awtui/MTabRulerComponent.java
new file mode 100644
index 0000000..f1d2734
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/MTabRulerComponent.java
@@ -0,0 +1,90 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+ * MTabRulerComponent is implemented by components which provide a tab-ruler
+ * interface for interacting with an MTextPanel.
+ * <p>
+ * Users interact with MTabRulerComponent implementations as follows:
+ * <ul>
+ * <li>The leading margin can be set by dragging the bottom half
+ * of the leftmost triangle.  The first-line indent will "stick" with
+ * the leading margin.</li>
+ * <li>The first-line indent can be set by dragging the top half of the
+ * leftmost triangle.  The first-line indent applies to the first line of
+ * a paragraph.</li>
+ * <li>The trailing margin can be set by dragging the rightmost triangle.</li>
+ * <li>Tabs can be added to the ruler by clicking the mouse on the ruler with the
+ * control key pressed.  Four kinds of tabs are provided:  leading, trailing, center,
+ * and decimal.  The type of a tab can be changed by double-clicking the tab.</li>
+ * <li>Tabs can be repositioned by dragging them with the mouse.</li>
+ * </ul>
+ * <p>
+ * MTabRulerComponent's appearance will reflect the paragraph styles in the
+ * first selected paragraph.  Style changes performed with an 
+ * MTabRulerComponent will apply to all selected paragraphs.
+ */
+public interface MTabRulerComponent {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel);
+
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor();
+
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor);
+
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler();
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin();
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent();
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public int getTrailingMargin();
+}
diff --git a/src/com/ibm/richtext/awtui/MessageDialog.java b/src/com/ibm/richtext/awtui/MessageDialog.java
new file mode 100644
index 0000000..9364b0d
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/MessageDialog.java
@@ -0,0 +1,70 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.CardLayout;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+/**
+ * MessageDialog is a simple Frame which displays a styled
+ * text message in a TextPanel.
+ * The text in the message is not selectable or editable.
+ * @see MConstText
+ * @see TextPanel
+ */
+public final class MessageDialog extends Frame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -2328512662551827628L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Create a new MessageDialog.
+    * @param title the dialog's title
+    * @param message the text which will appear in the dialog
+    */
+    public MessageDialog(String title, MConstText message)
+    {
+        super(title);
+
+        setLayout(new CardLayout());
+        TextPanelSettings settings = TextPanel.getDefaultSettings();
+        settings.setScrollable(false);
+        settings.setSelectable(false);
+        TextPanel panel = new TextPanel(settings, message, null);
+
+        panel.setBackground(Color.black);
+        add("Center", panel);
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                setVisible(false);
+                dispose();
+            }
+        });
+
+        setSize(450,320);
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/NumberDialog.java b/src/com/ibm/richtext/awtui/NumberDialog.java
new file mode 100644
index 0000000..bba4962
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/NumberDialog.java
@@ -0,0 +1,157 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.FlowLayout;
+import java.awt.Dialog;
+import java.awt.TextField;
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.Panel;
+import java.awt.Label;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+* Simple dialog which gets a number, and sends an appropriate command
+*/
+final class NumberDialog extends Dialog implements ActionListener
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -2181405364377952745L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MTextPanel fTextPanel;
+    private TextField fInput = null;
+    private Button fOKButton = null;
+    private Button fCancelButton = null;
+    private boolean fCharacter;
+    private Object fKey;
+    private float fMultiplier; 
+
+    /**
+     * @param multiplier the factor by which to multiply the user's
+     *        selection before creating the attribute value.   This
+     *        is useful for subscripting.
+     */
+    NumberDialog(Frame parent,
+                 String title,
+                 String message,
+                 MTextPanel textPanel,
+                 Object key,
+                 boolean character,
+                 float multiplier) {
+
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        fMultiplier = multiplier;
+        setLayout(new java.awt.GridLayout(2,1));
+
+        Panel panel = new Panel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 15));
+        fInput = new TextField(5);
+        panel.add(new Label(message));
+        panel.add(fInput);
+        add("Center", panel);
+
+        fCancelButton = new Button(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new Button(ResourceUtils.getResourceString(FrameResources.OK));
+        Panel p = new Panel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+
+        int num = 0;
+        if (sendAction) {
+            try {
+                String text = fInput.getText();
+                num = NumberFormat.getInstance().parse(text).intValue();
+            }
+            catch (ParseException exception) {
+                sendAction = false;
+            }
+        }
+
+        if (sendAction) {
+            sendAction(num);
+        }
+
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param the number the user typed in
+    */
+    private void sendAction(int number) {
+        float num = number * fMultiplier;
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                                fKey,
+                                                new Float(num));
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/ObjectDialog.java b/src/com/ibm/richtext/awtui/ObjectDialog.java
new file mode 100644
index 0000000..71afbde
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/ObjectDialog.java
@@ -0,0 +1,170 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import java.awt.Dialog;
+import java.awt.Frame;
+import java.awt.Button;
+import java.awt.Choice;
+import java.awt.Label;
+import java.awt.FlowLayout;
+import java.awt.Panel;
+import java.awt.GridLayout;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+/**
+* Simple dialog which gets a color
+*/
+final class ObjectDialog extends Dialog implements ActionListener
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8667616278985420231L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final MTextPanel fTextPanel;
+    private final Object fKey;
+    private boolean fCharacter;
+
+    private final Button fOKButton;
+    private final Button fCancelButton;
+    private final Choice fItems;
+    private final Hashtable fNameToValueMap;
+    /**
+    * Construct a new ColorDialog.
+    * @param parent the dialog's parent frame
+    * @param title the dialogs title
+    * @param message the message displayed next to the input box
+    */
+    ObjectDialog(Frame parent, 
+                 String title, 
+                 String message, 
+                 MTextPanel textPanel,
+                 Object key,
+                 boolean character,
+                 String[] names,
+                 Object[] values) {
+                    
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        
+        setLayout(new GridLayout(2, 1));
+
+        Panel panel = new Panel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
+        fItems = new Choice();
+
+        if (names.length != values.length) {
+            throw new IllegalArgumentException("Must have same number of names and values.");
+        }
+
+        fNameToValueMap = new Hashtable(names.length);
+        
+        for (int i=0; i < names.length; i++) {
+            fItems.add(names[i]);
+            if (values[i] != null) {
+                fNameToValueMap.put(names[i], values[i]);
+            }
+        }
+
+        panel.add(new Label(message));        
+        panel.add(fItems);
+        
+        add("North", panel);
+
+        fCancelButton = new Button(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new Button(ResourceUtils.getResourceString(FrameResources.OK));
+        Panel p = new Panel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+        if (sendAction) {
+            Object value = fNameToValueMap.get(fItems.getSelectedItem());
+            sendAction(value);
+        }
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param obj the value object
+    */
+    private void sendAction(Object value) {
+
+        StyleModifier modifier;
+        if (value != null) {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+        else {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+        
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/TabRuler.java b/src/com/ibm/richtext/awtui/TabRuler.java
new file mode 100644
index 0000000..6eff7db
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/TabRuler.java
@@ -0,0 +1,133 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Graphics;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.TabRulerImpl;
+import com.ibm.richtext.styledtext.MTabRuler;
+
+/**
+ * TabRuler is an implementation of MTabRulerComponent in an AWT component.
+ */
+public final class TabRuler extends Component implements MTabRulerComponent {
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -8418099860214866635L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TabRulerImpl fImpl;
+    
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public TabRuler(int baseline, int origin, MTextPanel textPanel) {
+        
+        fImpl = new TabRulerImpl(baseline, origin, textPanel, this);
+    }
+    
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fImpl.listenToTextPanel(textPanel);
+    }
+    
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fImpl.getBackColor();
+    }
+    
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        fImpl.setBackColor(backColor);
+    }
+    
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler() {
+        
+        return fImpl.getRuler();
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin() {
+        
+        return fImpl.getLeadingMargin();
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent() {
+        
+        return fImpl.getFirstLineIndent();
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin() {
+        
+        return fImpl.getTrailingMargin();
+    }
+    
+    // The following are Component methods which need to be delegated to
+    // the implementation:
+    
+    public void paint(Graphics g) {
+        
+        fImpl.paint(g);
+    }
+    
+    public Dimension getPreferredSize() {
+        
+        return fImpl.getPreferredSize();
+    }
+
+    public Dimension getMinimumSize() {
+        
+        return fImpl.getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/awtui/TextFrame.java b/src/com/ibm/richtext/awtui/TextFrame.java
new file mode 100644
index 0000000..d150a24
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/TextFrame.java
@@ -0,0 +1,126 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.awtui;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.styledtext.MConstText;
+
+import java.awt.BorderLayout;
+import java.awt.Frame;
+import java.awt.MenuBar;
+import java.awt.Toolkit;
+
+import java.awt.datatransfer.Clipboard;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+/**
+ * TextFrame is a Frame containing an editable TextPanel, a set of standard
+ * menus, and a TabRuler.  This class can be used as-is, but is
+ * primarily intended to be a simple example of how to use the other classes
+ * in this package.
+ * @see com.ibm.richtext.textpanel.TextPanel
+ * @see AwtMenuBuilder
+ * @see TabRuler
+ */
+public final class TextFrame extends Frame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8436822743736641732L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextPanel fTextPanel;
+
+    /**
+     * Create a new TextFrame with no text and no title.
+     */
+    public TextFrame() {
+        
+        super();
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new TextFrame with no text and the given title.
+     * @param title the title of this Frame
+     */
+    public TextFrame(String title) {
+        
+        super(title);
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new TextFrame with the given text and title, whose
+     * TextPanel will use the given clipboard.
+     * @param text the initial text in the TextPanel.  If null the
+     *      TextPanel will initially be empty
+     * @param title the title of this Frame
+     * @param clipboard the Clipboard which the TextPanel will use.
+     *      If null the TextPanel will use a private Clipboard
+     */
+    public TextFrame(MConstText text,
+                     String title,
+                     Clipboard clipboard) {
+
+        super(title);
+        init(text, clipboard);
+    }
+
+    private void init(MConstText text, Clipboard clipboard) {
+        
+        fTextPanel = new TextPanel(text, clipboard);
+
+        TabRuler tabRuler = new TabRuler(14, 10, fTextPanel);
+
+        createMenus();
+
+        setLayout(new BorderLayout());
+        add(fTextPanel, "Center");
+        add(tabRuler, "North");
+        pack();
+    }
+
+    private void createMenus() {
+
+        MenuBar menuBar = new MenuBar();
+
+        AwtMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this);
+
+        setMenuBar(menuBar);
+    }
+
+    /**
+     * Return the MTextPanel in this frame.
+     */
+    public MTextPanel getTextPanel() {
+
+        return fTextPanel;
+    }
+    
+    public static void main(String[] args) {
+        
+        TextFrame frame = new TextFrame();
+        frame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        frame.setSize(550, 700);
+        frame.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/awtui/package.html b/src/com/ibm/richtext/awtui/package.html
new file mode 100644
index 0000000..1d16df5
--- /dev/null
+++ b/src/com/ibm/richtext/awtui/package.html
@@ -0,0 +1,13 @@
+<!--
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<html>
+<body bgcolor="white">
+Provides classes for building an AWT-based user interface for a TextPanel.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/demo/AwtDocumentWindow.java b/src/com/ibm/richtext/demo/AwtDocumentWindow.java
new file mode 100644
index 0000000..007ceec
--- /dev/null
+++ b/src/com/ibm/richtext/demo/AwtDocumentWindow.java
@@ -0,0 +1,362 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import com.ibm.richtext.awtui.TabRuler;
+
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+import com.ibm.richtext.awtui.AwtMenuBuilder;
+
+import com.ibm.richtext.print.PrintingUtils;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Dialog;
+import java.awt.FileDialog;
+import java.awt.GridLayout;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.Label;
+import java.awt.Panel;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+
+import java.text.MessageFormat;
+
+/**
+ * AwtDocumentWindow is a Frame containing a TextPanel, with a document
+ * for storing the text in the TextPanel.
+ */
+public final class AwtDocumentWindow extends Frame implements DocumentWindow {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -8075495366541764458L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private TextPanel fTextPanel;
+    private EditApplication fApplication;
+    private TextDocument fDocument;
+
+    /**
+     * Create a new AwtDocumentWindow.
+     * @param application the application that owns this document
+     * @param clipboard the clipboard to use
+     * @param document the document to show in this AwtDocumentWindow
+     */
+    AwtDocumentWindow(EditApplication application,
+                   TextDocument document,
+                   TextPanelSettings textPanelSettings,
+                   boolean useTabRuler,
+                   TextPanelListener listener,
+                   boolean supportStyledText,
+                   boolean supportPlainText,
+                   int[] menus) {
+
+        fApplication = application;
+        
+        fTextPanel = new TextPanel(textPanelSettings, null, application.getClipboard());
+        if (listener != null) {
+            fTextPanel.addListener(listener);
+        }
+        setDocument(document);
+
+        addMenuBar(supportStyledText, supportPlainText, menus);
+
+        setLayout(new BorderLayout());
+
+        if (useTabRuler) {
+            TabRuler tabRuler = new TabRuler(14, 10, fTextPanel);
+            add(tabRuler, "North");
+        }
+        
+        add(fTextPanel, "Center");
+        pack();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                doClose();
+            }
+        });
+    }
+
+    private void addMenuBar(boolean supportStyledText, 
+                            boolean supportPlainText,
+                            int[] menus) {
+        
+        MenuBar menuBar = new MenuBar();
+        String menuTitle = ResourceUtils.getString(EditorResources.FILE);
+        Menu menu = new Menu(menuTitle);
+        new AwtFileMenuManager(menu, fApplication, this,
+                                supportStyledText, supportPlainText);
+        menuBar.add(menu);
+
+        AwtMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this, menus);
+        setMenuBar(menuBar);
+    }
+    
+    /**
+     * Return true if it is OK to set the document text and file to
+     * something different.
+     */
+    private boolean canChangeDocuments() {
+
+        // If the text is modified, give the user a chance to
+        // save it.  Otherwise return true.
+
+        if (fDocument.isModified()) {
+            byte save = askSave(this, getTitle());
+            if (save == YES) {
+                return doSave();
+            }
+            else {
+                return save == NO;
+            }
+        }
+        else {
+            return true;
+        }
+    }
+
+    private void setDocument(TextDocument document) {
+
+        fDocument = document;
+        fDocument.setTextPanel(fTextPanel);
+        setTitle(fDocument.getTitle());
+    }
+
+    /**
+     * Set the document to empty text with no associated file.  If
+     * the document text is not saved, prompt the user to save the
+     * the text first.  If this operation is canceled, the document
+     * is unchanged.
+     */
+    public void doNew() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+        
+        setDocument(fApplication.createNewDocument());
+    }
+
+    /**
+     * Prompt the user for a file from which to load a text document.
+     * If the current text is not saved, first prompt the user to
+     * save.  If either operation is canceled or fails, the document
+     * is unchanged.
+     */
+    public void doOpen() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+
+        TextDocument document = fApplication.openDocument(this);
+
+        if (document != null) {
+            setDocument(document);
+        }
+    }
+
+    /**
+     * Prompt the user for a file in which to save the document text.
+     * If this operation is not canceled, save the text in the file.
+     * The file becomes this document's file.
+     */
+    public boolean doSaveAs(int format) {
+
+        String title = ResourceUtils.getString(EditorResources.SAVE_TITLE);
+        File file = getFileFromDialog(fDocument.getFile(), title, this, FileDialog.SAVE);
+        
+        if (file == null) {
+            return false;
+        }
+        
+        fDocument.setFile(file);
+        setTitle(fDocument.getTitle());
+
+        fDocument.setFormat(format);
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Save the text in this document.  If there is no file associated
+     * with the text, this is equivalent to <code>doSaveAs</code>.
+     * This method returns true if the document was successfully saved.
+     */
+    public boolean doSave() {
+
+        if (fDocument.getFile() == null) {
+            return doSaveAs(fDocument.getFormat());
+        }
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Print the contents of this window.
+     */
+    public void doPrint() {
+
+        PrintingUtils.userPrintText(fDocument.getText(),
+                                    fTextPanel.getDefaultValues(),
+                                    this,
+                                    this.getTitle());
+    }
+
+    /**
+     * Attempt to close this window.  If the text has not been saved,
+     * give the user a chance to save the text before closing the
+     * window.  If the user cancels this operation, this method returns
+     * false and the window is not closed;  otherwise this method
+     * returns true and the window is closed.
+     */
+    public boolean doClose() {
+
+        if (canChangeDocuments()) {
+            setVisible(false);
+            dispose();
+            fApplication.removeDocumentWindow(this);
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Retrieve a file from a dialog.  If the user does not
+     * select a file in the dialog this method returns null.
+     * @param kind either FileDialog.LOAD or FileDialog.SAVE.
+     */
+    public static File getFileFromDialog(File origFile,
+                                         String dialogTitle, 
+                                         Frame owner,
+                                         int kind) {
+        
+        FileDialog dialog = new FileDialog(owner, 
+                                           dialogTitle,
+                                           kind);
+        if (origFile != null) {
+            dialog.setDirectory(origFile.getParent());
+            dialog.setFile(origFile.getName());
+        }
+        dialog.show();
+        String fileStr = dialog.getFile();
+        String dirStr = dialog.getDirectory();
+        
+        File file = null;
+        
+        if (fileStr != null) {
+            file = new File(dirStr, fileStr);
+        }
+        
+        return file;
+    }
+    
+    private static final byte YES = 0;
+    private static final byte NO = 1;
+    private static final byte CANCEL = 2;
+
+    private static final class DialogListener implements ActionListener {
+
+        Dialog fDialog;
+        Button fYes, fNo, fCancel;
+        byte fState;
+
+        DialogListener(Dialog dialog,
+                       Button yes,
+                       Button no,
+                       Button cancel) {
+
+            fDialog = dialog;
+            fYes = yes;
+            fNo = no;
+            fCancel = cancel;
+            fYes.addActionListener(this);
+            fNo.addActionListener(this);
+            fCancel.addActionListener(this);
+            fState = -1;
+        }
+
+        public void actionPerformed(ActionEvent event) {
+
+            Object source = event.getSource();
+            if (source == fYes) {
+                fState = YES;
+            }
+            else if (source == fNo) {
+                fState = NO;
+            }
+            else if (source == fCancel) {
+                fState = CANCEL;
+            }
+            else {
+                return;
+            }
+
+            fDialog.dispose();
+        }
+
+        byte getState() {
+
+            return fState;
+        }
+    }
+
+    /**
+     * Display a dialog that asks whether the user wants to
+     * save a document.  Possible reponses are Yes, No, and
+     * Cancel.  The returned value indicates which response
+     * was chosen.
+     */
+    private static byte askSave(Frame parent, String fileName) {
+
+        Dialog dialog = new Dialog(parent, true);
+        dialog.setLayout(new GridLayout(0, 1));
+        
+        String pattern = ResourceUtils.getString(EditorResources.SAVE_MSG);
+        String text = MessageFormat.format(pattern, new Object[] {fileName});
+        dialog.add(new Label(text, Label.CENTER));
+        
+        Button yes = new Button(ResourceUtils.getString(EditorResources.YES));
+        Button no = new Button(ResourceUtils.getString(EditorResources.NO));
+        Button cancel = new Button(ResourceUtils.getString(EditorResources.CANCEL));
+
+        Panel panel = new Panel();
+        panel.add(yes);
+        panel.add(no);
+        panel.add(cancel);
+        dialog.add(panel);
+
+        DialogListener listener = new DialogListener(dialog, yes, no, cancel);
+
+        dialog.setSize(220, 130);
+        dialog.show();
+
+        return listener.getState();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/AwtFileMenuManager.java b/src/com/ibm/richtext/demo/AwtFileMenuManager.java
new file mode 100644
index 0000000..37d80053
--- /dev/null
+++ b/src/com/ibm/richtext/demo/AwtFileMenuManager.java
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.Menu;
+import java.awt.MenuItem;
+
+final class AwtFileMenuManager extends FileMenuManager {
+
+    private Menu fMenu;
+    
+    public AwtFileMenuManager(Menu menu,
+                              EditApplication application, 
+                              DocumentWindow document,
+                              boolean supportStyledFormat,
+                              boolean supportPlainFormat) {
+                          
+        super(application, document);
+        
+        fMenu = menu;
+        createItems(supportStyledFormat, supportPlainFormat);
+        fMenu = null;
+    }
+    
+    protected Object addMenuItem(String key) {
+
+        MenuItem item = ResourceUtils.createMenuItem(key);
+        item.addActionListener(this);
+        fMenu.add(item);
+        return item;
+    }
+    
+    protected void addSeparator() {
+    
+        fMenu.add(new MenuItem("-"));
+    }
+}
diff --git a/src/com/ibm/richtext/demo/CodeEdit.java b/src/com/ibm/richtext/demo/CodeEdit.java
new file mode 100644
index 0000000..aedf2ee
--- /dev/null
+++ b/src/com/ibm/richtext/demo/CodeEdit.java
@@ -0,0 +1,119 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.awt.Toolkit;
+
+import java.io.File;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+import com.ibm.richtext.awtui.AwtMenuBuilder;
+
+public class CodeEdit extends EditApplication {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    protected final TextPanelSettings fSettings;
+    
+    public static synchronized void main(String[] args) {
+
+        if (args.length > 0 && args[0].equals("-swing")) {
+            new com.ibm.richtext.swingdemo.SwingCodeEdit(args,1);
+        }
+        else {
+            new CodeEdit(args, 0);
+        }
+    }
+
+    protected CodeEdit(String[] args, int start) {
+
+        super(Toolkit.getDefaultToolkit().getSystemClipboard(),
+              TextDocument.PLAIN_TEXT);
+
+        AttributeMap defaultStyle = new AttributeMap(TextAttribute.SIZE, new Float(12))
+                                       .addAttribute(TextAttribute.FAMILY, "Monospaced");
+                                       
+        fSettings = TextPanel.getDefaultSettings();
+        fSettings.setWraps(false);
+        fSettings.addDefaultValues(defaultStyle);
+        
+        if (args.length == start) {
+            doNewWindow();
+        }
+        else {
+            boolean openedADocument = false;
+            for (int i=start; i < args.length; i++) {
+
+                File file = new File(args[i]);
+                TextDocument document = null;
+                Throwable error = null;
+                try {
+                    document = TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+                }
+                catch(Exception e) {
+                    error = e;
+                }
+                
+                if (error != null) {
+                    error.printStackTrace();
+                }
+                else {
+                    addDocument(document);
+                    openedADocument = true;
+                }
+            }
+            if (!openedADocument) {
+                quit();
+            }
+        }
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new AwtDocumentWindow(this, 
+                                  document,
+                                  fSettings,
+                                  false,
+                                  new SyntaxColorer(),
+                                  false,
+                                  true,
+                                  menus);
+    }
+    
+    protected static final int[] menus = { AwtMenuBuilder.EDIT, 
+                                           AwtMenuBuilder.BIDI,
+                                           AwtMenuBuilder.ABOUT };
+
+    public TextDocument openDocument(Frame dialogParent) {
+    
+        String title = ResourceUtils.getString(EditorResources.OPEN_TITLE);
+        
+        File file = AwtDocumentWindow.getFileFromDialog(null, title, dialogParent, FileDialog.LOAD);
+        if (file != null) {
+            try {
+                return TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+            }
+            catch(Exception e) {
+                System.out.print("");
+            }
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/DocumentWindow.java b/src/com/ibm/richtext/demo/DocumentWindow.java
new file mode 100644
index 0000000..bc69f02
--- /dev/null
+++ b/src/com/ibm/richtext/demo/DocumentWindow.java
@@ -0,0 +1,32 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+public interface DocumentWindow {
+
+    public void doNew();
+    
+    public void doOpen();
+    
+    public boolean doClose();
+    
+    public boolean doSave();
+    
+    public boolean doSaveAs(int format);
+    
+    public void doPrint();
+    
+    public void setSize(int wd, int ht);
+    
+    public void show();
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/EditApplication.java b/src/com/ibm/richtext/demo/EditApplication.java
new file mode 100644
index 0000000..b3630e4
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditApplication.java
@@ -0,0 +1,119 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.Frame;
+import java.awt.datatransfer.Clipboard;
+
+import java.text.MessageFormat;
+
+import java.util.Vector;
+
+public abstract class EditApplication {
+
+    private Clipboard fClipboard;
+    private int fDefaultFormat;
+    private Vector fWindows = new Vector();
+    private int fUntitledCount = 0;
+    
+    protected EditApplication(Clipboard clipboard, int defaultFormat) {
+        
+        fClipboard = clipboard;
+        fDefaultFormat = defaultFormat;
+    }
+    
+    /**
+     * New documents are named "Untitled 1", "Untitled 2", etc.  This
+     * method returns the appropriate name for the next new document.
+     * @return the next new document name
+     */
+    private String getNextNewName() {
+
+        fUntitledCount += 1;
+        String pattern = ResourceUtils.getString(EditorResources.UNTITLED_MSG);
+        return MessageFormat.format(pattern,
+                                    new Object[]{new Integer(fUntitledCount)});
+    }
+    
+    public final Clipboard getClipboard() {
+        
+        return fClipboard;
+    }
+
+    protected abstract DocumentWindow createDocumentWindow(TextDocument document);
+    
+    public abstract TextDocument openDocument(Frame dialogParent);
+    
+    public final TextDocument createNewDocument() {
+    
+        String name = getNextNewName();
+        int format = fDefaultFormat;
+        return TextDocument.createEmpty(name, format);
+    }
+    
+    public final void doNewWindow() {
+        
+        addDocument(TextDocument.createEmpty(getNextNewName(), fDefaultFormat));
+    }
+    
+    public final void addDocument(TextDocument document) {
+        
+        final DocumentWindow window = createDocumentWindow(document);
+
+        window.setSize(500, 400);
+        window.show();
+        fWindows.addElement(window);
+    }
+    
+    /**
+     * Remove document from list of documents.  Quit application if list
+     * length falls to zero.
+     * @param window window of the document to remove
+     */
+    public final void removeDocumentWindow(DocumentWindow window) {
+
+        fWindows.removeElement(window);
+        if (fWindows.isEmpty()) {
+            quit();
+        }
+    }
+
+    /**
+     * Go through list of documents and attempt to close each document.
+     * If all documents close successfully, then exit.
+     */
+    public final void doExit() {
+
+        // Clone fWindows since it can get modified while being traversed.
+        Vector windows = (Vector) fWindows.clone();
+
+        int size = windows.size();
+        for (int i=0; i < size; i++) {
+            DocumentWindow window = (DocumentWindow) windows.elementAt(i);
+            if (!window.doClose()) {
+                return;
+            }
+        }
+
+        // quit will be called when last document removes itself
+    }
+
+    /**
+     * Called when last document window closes.  Default implementation
+     * calls System.exit.
+     */
+    protected void quit() {
+
+        System.exit(0);
+    }
+}
diff --git a/src/com/ibm/richtext/demo/EditDemo.java b/src/com/ibm/richtext/demo/EditDemo.java
new file mode 100644
index 0000000..f572aea
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditDemo.java
@@ -0,0 +1,126 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.awt.Toolkit;
+
+import java.io.File;
+import java.io.StreamCorruptedException;
+import com.ibm.richtext.textpanel.TextPanel;
+
+/**
+ * EditDemo is the main class for a simple, multiple-document
+ * styled text editor, built with the classes in the textpanel
+ * and textframe packages.
+ * <p>
+ * To run EditDemo, type:
+ * <blockquote><pre>
+ * java com.ibm.richtext.demo.EditDemo [file1] [file2] [...]
+ * </pre></blockquote>
+ * where the filenames are files saved with this demo.
+ */
+public class EditDemo extends EditApplication {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    public static synchronized void main(String[] args) {
+
+        if (args.length > 0 && args[0].equals("-swing")) {
+            new com.ibm.richtext.swingdemo.SwingEditDemo(args,1);
+        }
+        else {
+            new EditDemo(args, 0);
+        }
+    }
+
+    protected EditDemo(String[] args, int start) {
+
+        super(Toolkit.getDefaultToolkit().getSystemClipboard(), 
+              TextDocument.STYLED_TEXT);
+
+        if (args.length == start) {
+            doNewWindow();
+        }
+        else {
+            boolean openedADocument = false;
+            for (int i=start; i < args.length; i++) {
+
+                File file = new File(args[i]);
+                TextDocument document = getDocumentFromFile(file);
+                
+                if (document != null) {
+                    addDocument(document);
+                    openedADocument = true;
+                }
+            }
+            if (!openedADocument) {
+                quit();
+            }
+        }
+    }
+    
+    public static TextDocument getDocumentFromFile(File file) {
+    
+        Exception exception = null;
+        
+        try {
+            return TextDocument.createFromFile(file, TextDocument.STYLED_TEXT);
+        }
+        catch(StreamCorruptedException e) {
+            try {
+                return TextDocument.createFromFile(file, TextDocument.PLAIN_TEXT);
+            }
+            catch(Exception e2) {
+                exception = e2;
+            }
+        }
+        catch(Exception e) {
+            exception = e;
+        }
+        
+        System.err.println("Exception opening file.");
+        exception.printStackTrace();
+        
+        return null;
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+        
+        return new AwtDocumentWindow(this, 
+                                     document,
+                                     TextPanel.getDefaultSettings(),
+                                     true,
+                                     null,
+                                     true,
+                                     true,
+                                     null);
+    }
+    
+    public TextDocument openDocument(Frame dialogParent) {
+    
+        String title = ResourceUtils.getString(EditorResources.OPEN_TITLE);
+        File file = AwtDocumentWindow.getFileFromDialog(null,
+                                                     title,
+                                                     dialogParent,
+                                                     FileDialog.LOAD);
+        if (file != null) {
+            return getDocumentFromFile(file);
+        }
+        else {
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/EditorResources.java b/src/com/ibm/richtext/demo/EditorResources.java
new file mode 100644
index 0000000..d95fdece
--- /dev/null
+++ b/src/com/ibm/richtext/demo/EditorResources.java
@@ -0,0 +1,105 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.util.ListResourceBundle;
+import java.awt.event.KeyEvent;
+
+public final class EditorResources extends ListResourceBundle {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // menu names - values are Strings
+    public static final String FILE = "File";
+
+    // file menu items - values are MenuData instances
+    public static final String NEW = "New";
+    public static final String NEW_WINDOW = "New Window";
+    public static final String OPEN = "Open...";
+    public static final String SAVE = "Save";
+    public static final String SAVE_AS = "Save As...";
+    public static final String SAVE_AS_STYLED = "Save As Styled Text...";
+    public static final String SAVE_AS_TEXT = "Save As Plain Text...";
+    public static final String CLOSE = "Close";
+    public static final String PRINT = "Print";
+    public static final String EXIT = "Exit";
+
+    // button labels - values are Strings
+    public static final String YES = "Yes";
+    public static final String NO = "No";
+    public static final String CANCEL = "Cancel";
+
+    // message strings - values are Strings
+    public static final String SAVE_MSG = "Save {0} before closing?";
+    public static final String UNTITLED_MSG = "Untitled {0}";
+
+    // window and dialog titles - values are Strings
+    public static final String OPEN_TITLE = "Open Document";
+    public static final String SAVE_TITLE = "Save As";
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array.  The first element is name, the
+     * second is a MenuData instance with the given
+     * shortcut.
+     */
+    private static Object[] makeEntry(String name,
+                                      char shortCut,
+                                      int keyCode) {
+
+        return new Object[] { name, new MenuData(name, shortCut, keyCode) };
+    }
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array.  The first element is name, the
+     * second is a MenuData instance.
+     */
+    private static Object[] makeEntry(String name) {
+
+        return new Object[] { name, new MenuData(name) };
+    }
+
+    /**
+     * Convenience method that returns a two-element
+     * Object array in which both elements are obj.
+     */
+    private static Object[] duplicate(Object obj) {
+
+        return new Object[] { obj, obj };
+    }
+
+    protected Object[][] getContents() {
+
+        return new Object[][] {
+            duplicate(FILE),
+            duplicate(YES),
+            duplicate(NO),
+            duplicate(CANCEL),
+            duplicate(SAVE_MSG),
+            duplicate(SAVE_TITLE),
+            duplicate(OPEN_TITLE),
+            duplicate(UNTITLED_MSG),
+            makeEntry(NEW, 'n', KeyEvent.VK_N),
+            makeEntry(NEW_WINDOW),
+            makeEntry(OPEN, 'o', KeyEvent.VK_O),
+            makeEntry(SAVE, 's', KeyEvent.VK_S),
+            makeEntry(SAVE_AS),
+            makeEntry(SAVE_AS_STYLED),
+            makeEntry(SAVE_AS_TEXT),
+            makeEntry(CLOSE),
+            makeEntry(PRINT),
+            makeEntry(EXIT),
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/demo/FileMenuManager.java b/src/com/ibm/richtext/demo/FileMenuManager.java
new file mode 100644
index 0000000..a70cf02
--- /dev/null
+++ b/src/com/ibm/richtext/demo/FileMenuManager.java
@@ -0,0 +1,114 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+/**
+ * This class creates a File menu and manages user interactions
+ * with the menu.
+ */
+public abstract class FileMenuManager implements ActionListener {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private EditApplication fApplication;
+    private DocumentWindow fDocumentWindow;
+    private Object fNew, fNewWindow, fOpen, fSave;
+    private Object fSaveAsStyled, fSaveAsText, fClose, fPrint, fExit;
+
+    protected FileMenuManager(EditApplication application, 
+                              DocumentWindow document) {
+
+        fApplication = application;
+        fDocumentWindow = document;
+    }
+    
+    protected final void createItems(boolean supportStyledFormat,
+                                     boolean supportPlainFormat) {
+        
+        if (!supportStyledFormat && !supportPlainFormat) {
+            throw new IllegalArgumentException("Must support at least one format.");
+        }
+        
+        fNew = addMenuItem(EditorResources.NEW);
+        fNewWindow = addMenuItem(EditorResources.NEW_WINDOW);
+        
+        addSeparator();
+
+        fOpen = addMenuItem(EditorResources.OPEN);
+
+        fSave = addMenuItem(EditorResources.SAVE);
+        
+        if (supportStyledFormat) {
+            if (supportPlainFormat) {
+                fSaveAsStyled = addMenuItem(EditorResources.SAVE_AS_STYLED);
+                fSaveAsText = addMenuItem(EditorResources.SAVE_AS_TEXT);
+            }
+            else {
+                fSaveAsStyled = addMenuItem(EditorResources.SAVE_AS);
+            }
+        }
+        else {
+            fSaveAsText = addMenuItem(EditorResources.SAVE_AS);
+        }
+        
+        addSeparator();
+        fClose = addMenuItem(EditorResources.CLOSE);
+        addSeparator();
+        fPrint = addMenuItem(EditorResources.PRINT);
+        addSeparator();
+        fExit = addMenuItem(EditorResources.EXIT);
+    }
+    
+    protected abstract Object addMenuItem(String key);
+
+    protected abstract void addSeparator();
+    
+    public final void actionPerformed(ActionEvent event) {
+
+        Object source = event.getSource();
+
+        if (source == fNew) {
+            fDocumentWindow.doNew();
+        }
+        else if (source == fNewWindow) {
+            fApplication.doNewWindow();
+        }
+        else if (source == fOpen) {
+            fDocumentWindow.doOpen();
+        }
+        else if (source == fClose) {
+            fDocumentWindow.doClose();
+        }
+        else if (source == fSave) {
+            fDocumentWindow.doSave();
+        }
+        else if (source == fSaveAsStyled) {
+            fDocumentWindow.doSaveAs(TextDocument.STYLED_TEXT);
+        }
+        else if (source == fSaveAsText) {
+            fDocumentWindow.doSaveAs(TextDocument.PLAIN_TEXT);
+        }
+        else if (source == fPrint) {
+            fDocumentWindow.doPrint();
+        }
+        else if (source == fExit) {
+            fApplication.doExit();
+        }
+        else {
+            throw new Error("Unknown event source: " + source);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/MenuData.java b/src/com/ibm/richtext/demo/MenuData.java
new file mode 100644
index 0000000..7d3459c
--- /dev/null
+++ b/src/com/ibm/richtext/demo/MenuData.java
@@ -0,0 +1,60 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+public final class MenuData {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private String fName;
+    private boolean fHasShortcut;
+    private char fShortcut;
+    private int fShortcutKeyCode;
+
+    public MenuData(String name) {
+
+        fName = name;
+        fHasShortcut = false;
+    }
+
+    public MenuData(String name, char ch, int keyCode) {
+
+        fName = name;
+        fHasShortcut = true;
+        fShortcut = ch;
+        fShortcutKeyCode = keyCode;
+    }
+
+    public String getName() {
+
+        return fName;
+    }
+
+    public char getShortcut() {
+
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fShortcut;
+    }
+    
+    public int getShortcutKeyCode() {
+    
+        return fShortcutKeyCode;
+    }
+
+    public boolean hasShortcut() {
+
+        return fHasShortcut;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/ResourceUtils.java b/src/com/ibm/richtext/demo/ResourceUtils.java
new file mode 100644
index 0000000..317a662
--- /dev/null
+++ b/src/com/ibm/richtext/demo/ResourceUtils.java
@@ -0,0 +1,73 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.awt.MenuItem;
+import java.awt.MenuShortcut;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Utility class for dealing with resource data.
+ */
+public final class ResourceUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static ResourceBundle BUNDLE;
+    static {
+        String bundleName = "com.ibm.richtext.demo.EditorResources";
+        try {
+            BUNDLE = ResourceBundle.getBundle(bundleName);
+        }
+        catch(MissingResourceException e) {
+            System.out.println("Couldn't load " + bundleName +
+                               ";  Exception: " + e);
+            BUNDLE = new EditorResources();
+        }
+    }
+
+    public static String getString(String key) {
+
+        try {
+            return BUNDLE.getString(key);
+        }
+        catch(MissingResourceException e) {
+            return key;
+        }
+    }
+
+    public static MenuData getMenuData(String key) {
+    
+        try {
+            return (MenuData) BUNDLE.getObject(key);
+        }
+        catch(MissingResourceException e) {
+            return new MenuData(key);
+        }
+    }
+        
+    public static MenuItem createMenuItem(String key) {
+
+        MenuData menuData = getMenuData(key);
+
+        if (menuData.hasShortcut()) {
+            MenuShortcut shortcut = new MenuShortcut(menuData.getShortcut());
+            return new MenuItem(menuData.getName(), shortcut);
+        }
+        else {
+            return new MenuItem(menuData.getName());
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/SyntaxColorer.java b/src/com/ibm/richtext/demo/SyntaxColorer.java
new file mode 100644
index 0000000..e8aa8f7
--- /dev/null
+++ b/src/com/ibm/richtext/demo/SyntaxColorer.java
@@ -0,0 +1,286 @@
+/*
+ * (C) Copyright IBM Corp. 1999-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+
+package com.ibm.richtext.demo;
+
+import com.ibm.richtext.awtui.TextFrame;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import java.awt.Color;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+import java.text.CollationKey;
+import java.text.Collator;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * SyntaxColorer is a TextPanelListener that applies a style
+ * to a set of words in the TextPanel.
+ */
+public final class SyntaxColorer implements TextPanelListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    private static final class Colorer {
+        
+        static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private int fStart;
+        private Hashtable fStyleMap;
+        private Collator fCollator = Collator.getInstance();
+        private BreakIterator fBreakIter = BreakIterator.getWordInstance();
+
+        private String fText;
+        private int fCurrentStart;
+        private int fCurrentLimit;
+        private AttributeMap fCurrentStyle;
+        
+        Colorer(Hashtable styles) {
+
+            fStyleMap = new Hashtable(styles.size());
+
+            Enumeration e = styles.keys();
+            while (e.hasMoreElements()) {
+                String k = (String) e.nextElement();
+                fStyleMap.put(fCollator.getCollationKey(k), styles.get(k));
+            }
+        }
+        
+        void set(CharacterIterator text, int start, int limit) {
+            
+            fStart = start;
+
+            StringBuffer sb = new StringBuffer(limit-start);
+            for (char c=text.setIndex(start); text.getIndex() != limit; c=text.next()) {
+                sb.append(c);
+            }
+            fText = sb.toString();
+            fCurrentStart = fCurrentLimit = 0;
+            fCurrentStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+            
+            fBreakIter.setText(fText);
+            fBreakIter.first();
+        }
+            
+        boolean next() {
+            
+            if (fCurrentLimit == fText.length()) {
+                fText = null;
+                return false;
+            }
+
+            fCurrentStart = fCurrentLimit;
+            fCurrentLimit = fBreakIter.next();
+            
+            String word = fText.substring(fCurrentStart, fCurrentLimit);
+            CollationKey ck = fCollator.getCollationKey(word);
+            fCurrentStyle = (AttributeMap) fStyleMap.get(ck);
+            if (fCurrentStyle == null) {
+                fCurrentStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+            }
+            
+            return true;
+        }
+            
+        int currentStart() {
+            return fCurrentStart + fStart;
+        }
+        
+        int currentLimit() {
+            return fCurrentLimit + fStart;
+        }
+        
+        AttributeMap currentStyle() {
+            return fCurrentStyle;
+        }
+    }
+
+    private BreakIterator fBreakIter = BreakIterator.getWordInstance();
+    private Colorer fColorer;
+    private boolean fModifying = false;
+    private AttributeMap fDefaultKeywordStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    private Hashtable fModifierCache;
+    
+    public SyntaxColorer() {
+        
+        this(null);
+    }
+    
+    public SyntaxColorer(MTextPanel panel) {
+        
+        Hashtable ht = new Hashtable();
+
+        //Uncomment this to make keywords appear right-to-left!
+        //fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.BIDI_EMBEDDING, 
+        //                                                         new Integer(-1));
+        
+        fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.UNDERLINE,
+                                                                 TextAttribute.UNDERLINE_ON);
+        fDefaultKeywordStyle = fDefaultKeywordStyle.addAttribute(TextAttribute.FOREGROUND, 
+                                                                 Color.blue);
+        
+        String[] javaWords = {"abstract" , "boolean", "break", "byte",
+                              "byvalue", "case", "cast", "default",
+                              "do", "double", "else", "extends", 
+                              "false", "final", "goto", "if",
+                              "implements", "import", "inner", "instanceof",
+                              "int", "operator", "outer", "package",
+                              "private", "protected", "public", "rest",
+                              "synchronized", "this", "throw", "throws",
+                              "transient", "true", "try",
+                              "catch", "char", "const", "continue",
+                              "finally", "float", "for", "future",
+                              "generic", "interface", "long", "native",
+                              "new", "null", "return", "short",
+                              "static", "super", "switch", "var",
+                              "void", "volatile", "while", "class"};
+
+        for (int i=0; i < javaWords.length; i++) {
+            ht.put(javaWords[i], fDefaultKeywordStyle);
+        }
+        
+        fColorer = new Colorer(ht);
+        
+        if (panel != null) {
+            MConstText text = panel.getText();
+            colorRange(0, text.length(), text.createCharacterIterator(), panel);
+        }
+        
+        fModifierCache = new Hashtable(2);
+        fModifierCache.put(fDefaultKeywordStyle, 
+                           StyleModifier.createReplaceModifier(fDefaultKeywordStyle));
+        fModifierCache.put(AttributeMap.EMPTY_ATTRIBUTE_MAP, 
+                           StyleModifier.createReplaceModifier(AttributeMap.EMPTY_ATTRIBUTE_MAP));
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.TEXT_CHANGED;
+    }
+    
+    public void textEventOccurred(TextPanelEvent e) {
+
+        if (fModifying) {
+            return;
+        }
+        
+        MTextPanel panel = (MTextPanel) e.getSource();
+        
+        final MConstText text = panel.getText();
+        int start = text.damagedRangeStart();
+        int limit = text.damagedRangeLimit();
+        if (start > limit) {
+            return;
+        }
+        
+        CharacterIterator textIter = text.createCharacterIterator();
+        
+        fBreakIter.setText(textIter);
+        if (start > 0) {
+            if (start == text.length()) {
+                fBreakIter.last();
+            }
+            else {
+                fBreakIter.following(start-1);
+            }
+            start = fBreakIter.previous();
+        }
+        if (limit < text.length()) {
+            fBreakIter.following(limit);
+            //int l;
+            if ((fBreakIter.previous()) <= limit) {
+                limit = fBreakIter.next();
+            }
+        }
+        
+        fModifying = true;
+        colorRange(start, limit, textIter, panel);
+        fModifying = false;
+    }
+    
+    private void colorRange(final int start, 
+                            final int limit, 
+                            CharacterIterator textIter,
+                            MTextPanel panel) {
+        
+        fColorer.set(textIter, start, limit);
+
+        MConstText oldText = panel.getText();
+        MText newText = null;
+        
+        while (fColorer.next()) {
+
+            int rangeStart = fColorer.currentStart();
+            int rangeLimit = fColorer.currentLimit();
+            
+            AttributeMap style = fColorer.currentStyle();
+            
+            if (oldText.characterStyleLimit(rangeStart) < rangeLimit ||
+                    oldText.characterStyleAt(rangeStart) != style) {
+            
+                int cstart = rangeStart-start;
+                int climit = rangeLimit-start;
+                if (newText == null) {
+                    newText = new StyledText(oldText, start, limit);
+                }
+                StyleModifier mod = (StyleModifier) fModifierCache.get(style);
+                newText.modifyCharacterStyles(cstart, climit, mod);
+            }
+        }
+        
+        if (newText != null) {
+        
+            int oldStart = panel.getSelectionStart();
+            int oldLimit = panel.getSelectionEnd();
+            
+            panel.replaceRange(newText, start, limit);            
+    
+            panel.select(oldStart, oldLimit);
+            if (oldStart == oldLimit) {
+                StyleModifier mod = (StyleModifier) fModifierCache.get(AttributeMap.EMPTY_ATTRIBUTE_MAP);                
+                panel.modifyCharacterStyleOnSelection(mod);
+            }
+        }
+    }
+    
+    public static void main(String[] args) {
+        
+        TextFrame f = new TextFrame();
+        f.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        f.setSize(400, 300);
+        MTextPanel panel = f.getTextPanel();
+        panel.addListener(new SyntaxColorer(panel));
+        f.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/TextDocument.java b/src/com/ibm/richtext/demo/TextDocument.java
new file mode 100644
index 0000000..85be3b9
--- /dev/null
+++ b/src/com/ibm/richtext/demo/TextDocument.java
@@ -0,0 +1,349 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.demo;
+
+import java.io.*;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+ * A TextDocument handles the association between a file on disk
+ * and a TextPanel.
+ */
+public final class TextDocument {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int BUF_SIZE = 1024;
+    
+    private String fTitle;
+    private MConstText fText;
+    private File fFile;
+    private MTextPanel fTextPanel = null;
+    private boolean isModified = false;
+    private int fFormat = STYLED_TEXT;
+    
+    private TextDocument(String title,
+                         MConstText text,
+                         File file,
+                         int format) {
+        
+        fTitle = title;
+        fText = text;
+        fFile = file;
+        setFormat(format);
+    }
+    
+    public static final int STYLED_TEXT = 0;
+    public static final int PLAIN_TEXT = 1;
+    
+    /** 
+     * Return a new TextDocument with no associated file and
+     * empty text.
+     */
+    public static TextDocument createEmpty(String title, int format) {
+        
+        return new TextDocument(title, new StyledText(), null, format);
+    }
+    
+    /**
+     * Return a TextDocument created from the contents of the given
+     * file.  This method may throw an exception if the file cannot
+     * be read.  In particular, if the format is given as STYLED_TEXT
+     * but the file does not contain a serialized MConstText, 
+     * this method will throw StreamCorruptedException.
+     */
+    public static TextDocument createFromFile(File file, int format) throws Exception {
+        
+        if (format != STYLED_TEXT && format != PLAIN_TEXT) {
+            throw new IllegalArgumentException("Invalid format");
+        }
+        
+        MConstText text;
+        if (format == STYLED_TEXT) {
+            text = readMText(file);
+        }
+        else {
+            text = readMTextFromTextFile(file);
+        }
+        
+        TextDocument document = new TextDocument(file.getName(), 
+                                                 text,
+                                                 file,
+                                                 format);
+        return document;
+    }
+    
+    /**
+     * Return true if this document's text differs from the contents
+     * of its file.
+     */
+    public boolean isModified() {
+        
+        if (fTextPanel == null) {
+            return isModified;
+        }
+        else {
+            return fTextPanel.isModified();
+        }
+    }
+    
+    /**
+     * Set the MTextPanel that will be used to edit the document's
+     * text.  The document's text becomes the contents of the
+     * MTextPanel.
+     */
+    public void setTextPanel(MTextPanel textPanel) {
+
+        if (fTextPanel != null) {
+            fText = fTextPanel.getText();
+            isModified = fTextPanel.isModified();
+        }
+        
+        fTextPanel = textPanel;
+        
+        if (fTextPanel != null) {
+            fTextPanel.setText(fText);
+            fText = null;
+            fTextPanel.setModified(isModified);
+            fTextPanel.clearCommandLog();
+        }
+    }
+    
+    public File getFile() {
+    
+        return fFile;
+    }
+    
+    /**
+     * Set this document's file.  The document's title will
+     * change to the file name.  The file cannot be null.
+     */
+    public void setFile(File file) {
+        
+        fFile = file;
+        fTitle = file.getName();
+    }
+    
+    /**
+     * Set the format of this document.  The format determines
+     * whether the document will be written to files as styled
+     * text or plain characters.
+     */
+    public void setFormat(int format) {
+        
+        if (format != STYLED_TEXT && format != PLAIN_TEXT) {
+            throw new IllegalArgumentException("Invalid format");
+        }
+        fFormat = format;
+    }
+    
+    /**
+     * Return the format of this document.
+     */
+    public int getFormat() {
+        
+        return fFormat;
+    }
+    
+    /**
+     * Write the document's text to its file.  If the document does
+     * not have an associated file then this method is equivalent to
+     * saveAs.  This method returns true if the save operation succeeds.
+     */
+    public boolean save() {
+
+        if (fFile == null) {
+            throw new RuntimeException("Can't save without a file.");
+        }
+                
+        MConstText text = getText();
+        boolean success = fFormat==STYLED_TEXT? writeMText(fFile, text) :
+                                                writePlainMText(fFile, text);
+        if (success && fTextPanel != null) {
+            fTextPanel.setModified(false);
+        }
+        return success;
+    }
+    
+    /** 
+     * Return this document's styled text.
+     */
+    public MConstText getText() {
+        
+        if (fTextPanel == null) {
+            return fText;
+        }
+        else {
+            return fTextPanel.getText();
+        }
+    }
+    
+    /**
+     * Return the title of this document.
+     */
+    public String getTitle() {
+        
+        return fTitle;
+    }
+    
+    /**
+     * Return the MText serialized in the given file.
+     * In case of an error return null.
+     */
+    private static MConstText readMText(File file) throws Exception {
+
+        FileInputStream inStream = null;
+        
+        try {
+            inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            return (MConstText) objStream.readObject();
+        }
+        finally {
+            if (inStream != null) {
+                try {
+                    inStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+    }
+    
+    /**
+     * Read the given file as a plain text file, and return its
+     * contents as an MConstText.  The character and paragraph styles in 
+     * the returned text will be EMPTY_ATTRIBUTE_MAP.
+     */
+    private static MConstText readMTextFromTextFile(File file) throws Exception {
+        
+        InputStreamReader in = null;
+        
+        try {
+            in = new FileReader(file);
+            
+            MText text = new StyledText();
+            
+            char[] buf = new char[BUF_SIZE];
+            int read;
+            while ((read=in.read(buf, 0, buf.length)) != -1) {
+                int len = text.length();
+                text.replace(len, len, buf, 0, read, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            }
+            return text;
+        }
+        finally {
+            if (in != null) {
+                try {
+                    in.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+    }
+
+    /**
+     * Attempt to save the given text in the given file.
+     * @return true if the operation succeeded
+     */
+    private static boolean writeMText(File file, MConstText text) {
+
+        Throwable error = null;
+        OutputStream outStream = null;
+        
+        try {
+            outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(text);
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+        finally {
+            if (outStream != null) {
+                try {
+                    outStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+
+
+        if (error != null) {
+            error.printStackTrace();
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+
+    /**
+     * Write the given MConstText to the given file as plain text.
+     */
+    private static boolean writePlainMText(File file, MConstText text) {
+
+        Throwable error = null;
+        OutputStreamWriter outStream = null;
+        
+        try {
+            outStream = new FileWriter(file);
+            char[] buf = new char[BUF_SIZE];
+            int length = text.length();
+            int start = 0;
+            do {
+                int count = Math.min(length-start, buf.length);
+                text.extractChars(start, start+count, buf, 0);
+                outStream.write(buf, 0, count);
+                start += count;
+            } while (start < length);
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        finally {
+            if (outStream != null) {
+                try {
+                    outStream.close();
+                }
+                catch(IOException e) {
+                    System.out.print("");
+                }
+            }
+        }
+
+
+        if (error != null) {
+            error.printStackTrace();
+            return false;
+        }
+        else {
+            return true;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/demo/package.html b/src/com/ibm/richtext/demo/package.html
new file mode 100644
index 0000000..b67ce8a
--- /dev/null
+++ b/src/com/ibm/richtext/demo/package.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2002, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .lang Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Provides EditDemo, a simple, multiple-document styled text editor, built with the richtext classes in the textpanel and textframe packages.</p>
+
+<p>To run the demo, type: 
+<tt><blockquote>  java -classpath classes com.ibm.richtext.demo.EditDemo [-swing] [file]*</blockquote>
+It will use a Swing GUI if <code>-swing</code> is present, otherwise it will use an AWT GUI.  One or more <code>file</code> arguments can be present, these must be files that have been created with the EditDemo.  A separate window will be opened for each file.</p>
+
+<p>Other classes in this package are supporting classes for the EditDemo.</p>
+</body>
+</html>
diff --git a/src/com/ibm/richtext/manifest.stub b/src/com/ibm/richtext/manifest.stub
new file mode 100644
index 0000000..2da7201
--- /dev/null
+++ b/src/com/ibm/richtext/manifest.stub
@@ -0,0 +1,13 @@
+Main-Class: com.ibm.richtext.demo.EditDemo
+Manifest-Version: 1.0
+Specification-Title: ICU for Java RichEdit
+Specification-Version: 2.6
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java RichEdit
+Implementation-Version: 2.6
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+
+Name: com/ibm/richtext
+
+
diff --git a/src/com/ibm/richtext/print/MConstTextPrintable.java b/src/com/ibm/richtext/print/MConstTextPrintable.java
new file mode 100644
index 0000000..b2bc10c
--- /dev/null
+++ b/src/com/ibm/richtext/print/MConstTextPrintable.java
@@ -0,0 +1,160 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import java.util.Vector;
+
+/**
+ * This class's interface is very close to that of the JDK 1.2 Printable 
+ * interface, but can execute on JDK 1.1.  On 1.2, this class is wrapped
+ * in a real Printable.  On 1.1, the PrintContext class uses this class
+ * and a PrintJob for printing.
+ *
+ * Note that this class paginates the text in the first call to print,
+ * or to getPageCount.
+ * After construction, its page size is essentially fixed.  This is not 
+ * as flexible as the 1.2 classes allow, but it should suffice.
+ */
+final class MConstTextPrintable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static final int PAGE_EXISTS = 0;
+    static final int NO_SUCH_PAGE = 1;
+    
+    private MConstText fText;
+    private AttributeMap fDefaultStyles;
+    private Rectangle fPageRect;
+    
+    // If these two fields are null the text has not been paginated.
+    private MFormatter fFormatter;
+    private Vector fPageStarts;
+
+    /**
+     * Construct an MConstTextPrintable to print the given text.  Each page will fit
+     * into pageRect.
+     */
+    MConstTextPrintable(MConstText text, 
+                        AttributeMap defaultStyles,
+                        Rectangle pageRect) {
+
+        fText = text;
+        fDefaultStyles = defaultStyles;
+        fPageRect = new Rectangle(pageRect);
+    }
+    
+    private static boolean emptyParagraphAtEndOfText(MConstText text) {
+
+        if (text.length() > 0) {
+            char ch = text.at(text.length()-1);
+            return ch == '\n' || ch == '\u2029';
+        }
+        else {
+            return false;
+        }
+    }
+
+    private void paginate(Graphics graphics) {
+        
+        if (fPageStarts == null) {
+
+            fFormatter = MFormatter.createFormatter(fText,
+                                                    fDefaultStyles,
+                                                    fPageRect.width,
+                                                    true,
+                                                    graphics);
+ 
+            fFormatter.formatToHeight(Integer.MAX_VALUE);
+            fFormatter.stopBackgroundFormatting();
+
+            fPageStarts = new Vector();
+            
+            int lineCount = fFormatter.getLineCount();
+            if (emptyParagraphAtEndOfText(fText)) {
+                lineCount -= 1;
+            }
+
+            int startLine = 0;
+            fPageStarts.addElement(new Integer(startLine));
+            int startHeight = 0;
+            final int pageHeight = fPageRect.height;
+
+            while (startLine < lineCount) {
+
+                int nextStart = fFormatter.lineAtHeight(startHeight + pageHeight);
+                fPageStarts.addElement(new Integer(nextStart));
+                startHeight = fFormatter.lineGraphicStart(nextStart);
+                startLine = nextStart;
+            }
+        }
+    }
+
+    /**
+     * Print the given page in the given graphics.  Page numbers are
+     * 0-based.  The the return value indicates whether
+     * the page number is valid (as in JDK 1.2).  Since you can get the page count
+     * directly, there's really no excuse for passing in an invalid page
+     * index.
+     * @param graphics the Graphics to print to
+     * @param pageNumber the 0-based page number.  Should be nonnegative and
+     * less than getPageCount()
+     * @return PAGE_EXISTS if the page number is valid, or 
+     *         NO_SUCH_PAGE otherwise
+     */
+    int print(Graphics graphics, int pageNumber) {
+        
+        paginate(graphics);
+        
+        if (pageNumber < getPageCount(graphics) && pageNumber >= 0) {
+            graphics.setColor(Color.black); // workaround for 1.2 printing bug
+            int startLine = ((Integer)fPageStarts.elementAt(pageNumber)).intValue();
+            int limitLine = ((Integer)fPageStarts.elementAt(pageNumber+1)).intValue();
+
+            int topOfPage = fFormatter.lineGraphicStart(startLine);
+            int pageHeight = fFormatter.lineGraphicStart(limitLine) - topOfPage;
+
+            Point origin = new Point(fPageRect.x, fPageRect.y - topOfPage);
+            Rectangle drawRect = new Rectangle(fPageRect);
+            drawRect.height = pageHeight;
+            
+            fFormatter.draw(graphics, drawRect, origin);
+            return PAGE_EXISTS;
+        }
+        else {
+            return NO_SUCH_PAGE;
+        }
+    }
+    
+    /**
+     * Return the number of pages that can be printed.
+     * @param graphics a Graphics instance representative of those 
+     * which will be printed into
+     */
+    int getPageCount(Graphics graphics) {
+        
+        paginate(graphics);
+        return fPageStarts.size() - 1;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/print/PrintContext.java b/src/com/ibm/richtext/print/PrintContext.java
new file mode 100644
index 0000000..c81af9c
--- /dev/null
+++ b/src/com/ibm/richtext/print/PrintContext.java
@@ -0,0 +1,79 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterJob;
+import java.awt.print.PrinterException;
+
+final class PrintContext implements Printable {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private MConstTextPrintable fPrintable;
+    
+    PrintContext(MConstText text, AttributeMap defaultStyles, PageFormat pf) {
+        
+        int width = (int) Math.round(pf.getImageableWidth());
+        int height = (int) Math.round(pf.getImageableHeight());
+        int left = (((int)Math.round(pf.getWidth())) - width) / 2;
+        int top = (((int)Math.round(pf.getHeight())) - height) / 2;
+        
+        Rectangle pageRect = new Rectangle(left, top, width, height);
+        fPrintable = new MConstTextPrintable(text, defaultStyles, pageRect);
+    }
+    
+    public int print(Graphics graphics,
+                     PageFormat format,
+                     int pageIndex) throws PrinterException {
+        
+        if (false)
+            throw new PrinterException("save trees");
+            
+        if (fPrintable.print(graphics, pageIndex) == MConstTextPrintable.PAGE_EXISTS) {
+            return PAGE_EXISTS;
+        }
+        else {
+            return NO_SUCH_PAGE;
+        }
+    }
+    
+    static void userPrintText(MConstText text,
+                              AttributeMap defaultStyles,
+                              Frame frame,
+                              String jobTitle) {
+
+        PrinterJob job = PrinterJob.getPrinterJob();
+        job.setJobName(jobTitle);
+        if (job.printDialog()) {
+            job.setPrintable(new PrintContext(text, defaultStyles, job.defaultPage()));
+            try {
+                job.print();
+            }
+            catch(PrinterException e) {
+                System.out.println("Printer exception: " + e);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/print/PrintingUtils.java b/src/com/ibm/richtext/print/PrintingUtils.java
new file mode 100644
index 0000000..185d086
--- /dev/null
+++ b/src/com/ibm/richtext/print/PrintingUtils.java
@@ -0,0 +1,49 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.print;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.Frame;
+
+/**
+ * PrintingUtils contains a static method for printing styled text.
+ * @see com.ibm.richtext.styledtext.MConstText
+ */
+public final class PrintingUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    // Keep it out of Javadoc...
+    private PrintingUtils() {
+    }
+    
+    /**
+     * Print the given text.  A Print dialog is presented to the user;
+     * unless the user cancels, the text is printed.
+     * @param text the text to print
+     * @param defaultStyles default values for unspecified attributes
+     * @param frame the parent of the Print dialog
+     * @param jobTitle the title of the PrintJob
+     */
+    public static void userPrintText(MConstText text,
+                                     AttributeMap defaultStyles,
+                                     Frame frame,
+                                     String jobTitle) {
+
+        PrintContext.userPrintText(text, defaultStyles, frame, jobTitle);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/print/package.html b/src/com/ibm/richtext/print/package.html
new file mode 100644
index 0000000..d906eda
--- /dev/null
+++ b/src/com/ibm/richtext/print/package.html
@@ -0,0 +1,13 @@
+<!-- 
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<html>
+<body bgcolor="white">
+Provides printing for styled text.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/styledtext/CharBuffer.java b/src/com/ibm/richtext/styledtext/CharBuffer.java
new file mode 100644
index 0000000..187ee3d
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/CharBuffer.java
@@ -0,0 +1,377 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/** An implementation of MCharBuffer that stores chars in an array with an insertion gap. */
+/*
+    Change history
+    072396 jf   - fixed a bug in replace(int, int, char[], int, int) so that it correctly
+                inserted into the middle of the buffer.
+    080296 jf   - added timestamp.  This is strictly a debugging device to help catch
+                stale iterators.
+
+    082296 jbr  added check for 0-length iterator in replace
+*/
+
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import java.text.CharacterIterator;
+
+final class CharBuffer
+    extends MCharBuffer implements Externalizable
+{
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+  private static final int kGrowSize = 0x80; // small size for testing
+  private static final int CURRENT_VERSION = 1; // version code for streaming
+  private static final long serialVersionUID = 563174;
+
+  transient Validation fValidation = null;
+  private char[] fArray;
+  transient private int fArraySize;
+  transient private int fGap;
+
+  /** Create an empty char buffer. */
+  public CharBuffer()
+  {
+  }
+
+  /** Create a char buffer that can hold at least capacity chars. */
+
+  public CharBuffer(int capacity)
+  {
+    fArray = allocate(capacity);
+  }
+
+  public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+    if (in.readInt() != CURRENT_VERSION) {
+        throw new IOException("Invalid version of CharBuffer");
+    }
+
+    fArray = (char[]) in.readObject();
+    if (fArray != null) {
+        fArraySize = fArray.length;
+        fGap = fArraySize;
+    }
+    else {
+        fArraySize = 0;
+        fGap = 0;
+    }
+  }
+
+  public void writeExternal(ObjectOutput out) throws IOException {
+
+    compress();
+    out.writeInt(CURRENT_VERSION);
+    out.writeObject(fArray);
+  }
+
+  private void invalidate() {
+
+    if (fValidation != null) {
+        fValidation.invalidate();
+        fValidation = null;
+    }
+  }
+
+  // not ThreadSafe - could end up with two Validations
+  // being generated
+  private Validation getValidation() {
+
+    if (fValidation == null) {
+        fValidation = new Validation();
+    }
+    return fValidation;
+  }
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcBuffer. */
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcChars.
+  * This is the core routine for manipulating the buffer.
+  */
+  public void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int dstLength = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (dstLength < 0 || srcLength < 0) {
+        throw new IllegalArgumentException("replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)");
+    }
+
+    int gapAlloc = 0;
+    if (srcChars == null) {
+        gapAlloc = srcLength;
+        srcLength = 0;
+    }
+
+    int newSize = fArraySize - dstLength + srcLength;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit)");
+        }
+        if (newSize + gapAlloc > 0) {
+            fArray = allocate(newSize + gapAlloc);
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, fArray, 0, srcLength);
+                fArraySize = srcLength;
+                fGap = srcLength;
+            }
+        }
+    } else {
+        int newGap = start + srcLength;
+        int gapLimit = fArray.length - fArraySize + fGap;
+
+        if (newSize + gapAlloc > fArray.length) {
+            char[] temp = allocate(newSize + gapAlloc);
+
+            //move stuff at beginning that we aren't writing over
+            if (start > 0) {
+                at(0, start, temp, 0);
+            }
+            //move stuff from src array that we are copying
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, temp, start, srcLength);
+            }
+            //move stuff at end that we aren't copying over
+            if (limit < fArraySize) {
+                at(limit, fArraySize, temp, temp.length - newSize + newGap);
+            //change 7-23-96
+            //    at(limit, fArraySize - limit, temp, temp.length - newSize + newGap);
+            }
+
+            fArray = temp;
+        } else {
+            if (start > fGap) {
+                System.arraycopy(fArray, gapLimit, fArray, fGap, start - fGap);
+            }
+            if (limit < fGap) {
+                System.arraycopy(fArray, limit, fArray, fArray.length - newSize + newGap, fGap - limit);
+            }
+            if (srcLength > 0) {
+                System.arraycopy(srcChars, srcStart, fArray, start, srcLength);
+            }
+        }
+
+        fArraySize = newSize;
+        fGap = newGap;
+    }
+  }
+
+  /** Replace the chars from start to limit with the chars from srcStart to srcLimit in srcString. */
+
+  /* This implements optimizations for null text or inserting text that fits at the gap,
+     and defaults to call the core replace routine if these optimizations fail. */
+
+  public void replace(int start, int limit, String srcString, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int length = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, String srcString, int srcStart, int srcLimit)");
+        }
+        if (srcLength > 0) {
+            fArray = allocate(srcLength);
+            srcString.getChars(srcStart, srcLimit, fArray, 0);
+            fArraySize = srcLength;
+            fGap = srcLength;
+        }
+    } else {
+        if (start == fGap && fArray.length >= fArraySize - length + srcLength) {
+            if (srcLimit > 0) {
+                srcString.getChars(srcStart, srcLimit, fArray, fGap);
+                fGap += srcLength;
+            }
+            fArraySize += srcLength - length;
+        } else {
+            replace(start, limit, srcString != null ? srcString.toCharArray() : null, srcStart, srcLimit);
+        }
+    }
+  }
+
+  public void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit)
+  {
+    invalidate();
+    int length = limit - start;
+    int srcLength = srcLimit - srcStart;
+
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, String srcString, int srcStart, int srcLimit)");
+        }
+        if (srcLength > 0) {
+            fArray = allocate(srcLength);
+            srcText.extractChars(srcStart, srcLimit, fArray, 0);
+            fArraySize = srcLength;
+            fGap = srcLength;
+        }
+    } else {
+        if (start == fGap && fArray.length >= fArraySize - length + srcLength) {
+            if (srcLimit > 0) {
+                srcText.extractChars(srcStart, srcLimit, fArray, fGap);
+                fGap += srcLength;
+            }
+            fArraySize += srcLength - length;
+        } else {
+            char[] temp = srcLength == 0? null : new char[srcLength];
+            if (temp != null) {
+                srcText.extractChars(srcStart, srcLimit, temp, 0);
+            }
+            replace(start, limit, temp, 0, srcLimit - srcStart);
+        }
+    }
+  }
+
+  /** Replace the chars from start to limit with srcChar. */
+
+  /* This implements optimizations for null text or replacing a character that fits into the gap,
+     and defaults to call the core replace routine if these optimizations fail. */
+
+  public void replace(int start, int limit, char srcChar)
+  {
+    invalidate();
+    if (fArray == null) {
+        if (start != 0 || limit != 0) {
+            throw new IllegalArgumentException("replace(int start, int limit, char srcChar)");
+        }
+        fArray = allocate(1);
+        fArray[0] = srcChar;
+        fArraySize = 1;
+        fGap = 1;
+    } else {
+        int length = limit - start;
+        if (start == fGap && fArray.length > fArraySize - length) {
+            fArray[fGap] = srcChar;
+            fGap += 1;
+            fArraySize += 1 - length;
+        } else {
+            replace(start, limit, new char[] { srcChar} , 0, 1);
+        }
+    }
+  }
+
+  /** Return the char at pos. */
+
+  public char at(int pos)
+  {
+    if (pos < 0 || pos >= fArraySize) {
+      throw new IllegalArgumentException();
+    }
+    return pos < fGap ? fArray[pos] : fArray[fArray.length - fArraySize + pos];
+  }
+
+  /** Copy the chars from start to limit to dst starting at dstStart. */
+
+  public void at(int start, int limit, char[] dst, int dstStart)
+  {
+    int length = limit - start;
+
+    if (start < 0 || limit < start || limit > fArraySize) {
+        throw new IllegalArgumentException();
+    }
+
+    if (limit <= fGap) {
+        System.arraycopy(fArray, start, dst, dstStart, length);
+    } else if (start >= fGap) {
+        System.arraycopy(fArray, fArray.length - fArraySize + start, dst, dstStart, length);
+    } else {
+        System.arraycopy(fArray, start, dst, dstStart, fGap - start);
+        System.arraycopy(fArray, fArray.length - fArraySize + fGap, dst, dstStart + fGap - start, limit - fGap);
+    }
+  }
+
+  /** Return the number of chars in the buffer. */
+
+  public final int length()
+  {
+    return fArraySize;
+  }
+
+  /** Return the number of chars the buffer can hold before it must reallocate. */
+
+  public final int capacity()
+  {
+    return fArray != null ? fArray.length : 0;
+  }
+
+  /** Reserve capacity chars at start. Utility to optimize a sequence of operations at start. */
+
+  public void reserveCapacity(int start, int capacity)
+  {
+    replace(start, start, (char[])null, 0, capacity);
+  }
+
+  /** Minimize the storage used by the buffer. */
+
+  public void compress()
+  {
+    invalidate();
+    if (fArraySize == 0) {
+        fArray = null;
+        fGap = 0;
+    } else if (fArraySize != fArray.length) {
+        char[] temp = new char[fArraySize];
+        at(0, fArraySize, temp, 0);
+        fArray = temp;
+        fGap = fArraySize;
+    }
+  }
+
+  /** Display the buffer. */
+
+  public String toString()
+  {
+    if (fArray != null) {
+        return new StringBuffer()
+        .append("limit: ").append(fArray.length)
+        .append(", size: ").append(fArraySize)
+        .append(", gap: ").append(fGap)
+        .append(", ").append(fArray, 0, fGap)
+        .append(fArray, fArray.length - fArraySize + fGap, fArraySize - fGap)
+        .toString();
+    } else {
+        return new String("The buffer is empty.");
+    }
+  }
+
+  public CharacterIterator createCharacterIterator(int start, int limit) {
+
+    Validation val = getValidation();
+    return new CharBufferIterator(start, limit, fArray, fArraySize, fGap, val);
+  }
+
+  /** The resizing algorithm. Return a value >= minSize. */
+
+  protected int allocation(int minSize)
+  {
+    //    return (minSize + kGrowSize) & ~(kGrowSize - 1);
+    return minSize < kGrowSize ? kGrowSize : (minSize * 2 + kGrowSize) & ~(kGrowSize - 1);
+  }
+
+  /** Allocate a new character array of limit >= minSize. */
+
+  protected char[] allocate(int minSize)
+  {
+    return new char[allocation(minSize)];
+  }
+}
diff --git a/src/com/ibm/richtext/styledtext/CharBufferIterator.java b/src/com/ibm/richtext/styledtext/CharBufferIterator.java
new file mode 100644
index 0000000..e58d055
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/CharBufferIterator.java
@@ -0,0 +1,129 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.text.CharacterIterator;
+
+final class CharBufferIterator implements CharacterIterator,
+                                          Cloneable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fRangeStart;
+    private int fRangeLimit;
+    private int fCurrentIndex;
+    private char fStorage[];
+    private int fGap;
+    private int fGapLength;
+    private Validation fValidation;
+
+    CharBufferIterator(int start,
+                       int limit,
+                       char[] storage,
+                       int length,
+                       int gap,
+                       Validation validation) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("start > limit");
+        }
+        fRangeStart = start;
+        fRangeLimit = limit;
+        fCurrentIndex = fRangeStart;
+        fStorage = storage;
+        fGap = gap;
+        fGapLength = (storage==null? 0 : storage.length) - length;
+        fValidation = validation;
+    }
+
+    private void checkValidation() {
+
+        if (!fValidation.isValid()) {
+            throw new Error("Iterator is no longer valid");
+        }
+    }
+
+    public char first()
+    {
+        return setIndex(fRangeStart);
+    }
+
+    public char last()
+    {
+        return setIndex(fRangeLimit - 1);
+    }
+
+    public char current()
+    {
+        checkValidation();
+        if (fCurrentIndex < fRangeStart || fCurrentIndex >= fRangeLimit)
+            return DONE;
+        int i = (fCurrentIndex < fGap) ? fCurrentIndex : (fCurrentIndex + fGapLength);
+        return fStorage[i];
+    }
+
+    public char next()
+    {
+        checkValidation();
+        fCurrentIndex++;
+        if (fCurrentIndex >= fRangeLimit)
+        {
+            fCurrentIndex = fRangeLimit;
+            return DONE;
+        }
+        int i = (fCurrentIndex < fGap) ? fCurrentIndex : (fCurrentIndex + fGapLength);
+        return fStorage[i];
+    }
+
+    public char previous()
+    {
+        fCurrentIndex--;
+        if (fCurrentIndex >= fRangeStart)
+            return current();
+        fCurrentIndex = fRangeStart;
+        return DONE;
+    }
+
+    public char setIndex(int i)
+    {
+        if (i < fRangeStart || i > fRangeLimit)
+            throw new IllegalArgumentException("Invalid position");
+        fCurrentIndex = i;
+        return current();
+    }
+
+    public int getBeginIndex()
+    {
+        return fRangeStart;
+    }
+
+    public int getEndIndex()
+    {
+        return fRangeLimit;
+    }
+
+    public int getIndex()
+    {
+        return fCurrentIndex;
+    }
+
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            return null;
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java b/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java
new file mode 100644
index 0000000..c993e297
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/FastIntBinarySearch.java
@@ -0,0 +1,115 @@
+/*
+*   Copyright (C) 1996-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+/*
+    7/29/96
+        Modified to search portions of an integer array.  Should be retested.
+*/
+
+package com.ibm.richtext.styledtext;
+
+/**
+ * This class searches a segment of an array of integers.  The segment
+ * must be sorted in ascending order (but this class does not verify this).
+ * Also, this class aliases the array;  if the array is modified later the
+ * search results are undefined.
+ */
+final class FastIntBinarySearch
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int dataArray[];
+    private int auxStart;
+    private int power;
+
+    private int fFirstIndex;
+
+    private static final int exp2[] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072 };
+
+    public FastIntBinarySearch(int data[])
+    {
+        this(data, 0, data.length);
+    }
+
+    public FastIntBinarySearch(int data[], int firstValidIndex, int validLength)
+    {
+        setData(data, firstValidIndex, validLength);
+    }
+    
+    public void setData(int data[]) {
+        
+        setData(data, 0, data.length);
+    }
+    
+    public void setData(int data[], int firstValidIndex, int validLength) {
+
+        if (data.length < 1) throw new IllegalArgumentException();
+        if (data.length >= exp2[exp2.length-1]) throw new IllegalArgumentException();
+
+        dataArray = data;
+        fFirstIndex = firstValidIndex;
+
+        for (power = exp2.length-1; power > 0 && validLength < exp2[power]; power--) {}
+
+        // at this point, array.length >= 2^power
+
+        auxStart = validLength - exp2[power];
+    }
+    
+    /**
+     * Return the index in the array of the first element which is at least
+     * as large as <tt>value</tt>.  If value is larger than the largest
+     * element in the array the last valid index in the array is returned.
+     */
+    public int findIndex(int value)
+    {
+        int index = exp2[power]-1 + fFirstIndex;
+        if (value >= dataArray[auxStart + fFirstIndex]) {
+            index += auxStart;
+        }
+
+        // at this point, index is the "upper limit" of the search
+
+        switch (power) {
+        case 17:
+            if (value < dataArray[index-65536]) index -= 65536;
+        case 16:
+            if (value < dataArray[index-32768]) index -= 32768;
+        case 15:
+            if (value < dataArray[index-16384]) index -= 16384;
+        case 14:
+            if (value < dataArray[index-8192]) index -= 8192;
+        case 13:
+            if (value < dataArray[index-4096]) index -= 4096;
+        case 12:
+            if (value < dataArray[index-2048]) index -= 2048;
+        case 11:
+            if (value < dataArray[index-1024]) index -= 1024;
+        case 10:
+            if (value < dataArray[index-512]) index -= 512;
+        case 9:
+            if (value < dataArray[index-256]) index -= 256;
+        case 8:
+            if (value < dataArray[index-128]) index -= 128;
+        case 7:
+            if (value < dataArray[index-64]) index -= 64;
+        case 6:
+            if (value < dataArray[index-32]) index -= 32;
+        case 5:
+            if (value < dataArray[index-16]) index -= 16;
+        case 4:
+            if (value < dataArray[index-8]) index -= 8;
+        case 3:
+            if (value < dataArray[index-4]) index -= 4;
+        case 2:
+            if (value < dataArray[index-2]) index -= 2;
+        case 1:
+            if (value < dataArray[index-1]) index -= 1;
+        case 0:
+            if (value < dataArray[index]) index -= 1;
+        }
+        return index;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/MCharBuffer.java b/src/com/ibm/richtext/styledtext/MCharBuffer.java
new file mode 100644
index 0000000..43abf71
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MCharBuffer.java
@@ -0,0 +1,36 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+import java.text.CharacterIterator;
+
+/** A dynamic character array optimized for sequences of insert
+    or delete operations in a local region. */
+
+abstract class MCharBuffer
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    abstract void replace(int start, int limit, MConstText text, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, String srcString, int srcStart, int srcLimit);
+    abstract void replace(int start, int limit, char srcChar);
+    abstract CharacterIterator createCharacterIterator(int start, int limit);
+    abstract char at(int pos);
+    abstract void at(int start, int limit, char[] dst, int dstStart);
+
+    abstract int  length();
+
+    abstract int  capacity();
+    abstract void reserveCapacity(int pos, int length);
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MConstText.java b/src/com/ibm/richtext/styledtext/MConstText.java
new file mode 100644
index 0000000..7018d09
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MConstText.java
@@ -0,0 +1,323 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import java.text.CharacterIterator;
+import java.awt.datatransfer.DataFlavor;
+
+/**
+ * MConstText is a base class for text with multiple character and
+ * paragraph styles.  The text is a sequence of Unicode characters,
+ * represented by <code>char</code>.  Character and paragraph
+ * styles are represented by the <code>AttributeMap</code> class.
+ * <p>
+ * Characters in the text are accessed with an integer index using the
+ * <code>at</code> method.
+ * Valid indices are between 0 and (length-1), where length is the number
+ * of characters in the text.  Additionally, the
+ * characters in the text may be accessed through a
+ * <code>java.text.CharacterIterator</code>.
+ * <p>
+ * Every character in the text has a character style associated with it,
+ * represented by the <code>AttributeMap</code> class.  The character
+ * style for a particular character can be obtained using the
+ * <code>characterStyleAt</code> method.
+ * <p>
+ * Each character in the text is contained in a paragraph.  A paragraph
+ * is a range of text including and terminated by a
+ * paragraph separator (either <code>\n</code> or <code>U+2029</code>).
+ * Every
+ * paragraph has a paragraph style associated with it, represented
+ * by the <code>AttributeMap</code> class.  Paragraph boundaries and
+ * styles can be obtained from the MConstText.
+ * <p>
+ * This class does not have methods for modifying the text or styles.
+ * However, subclasses may add this capability, so it is not safe to
+ * assume that an MConstText instance is immutable.  In particular,
+ * the MText class adds modification protocol to this class.  Clients
+ * can detect whether an MConstText has changed by keeping track of its
+ * timestamp.
+ * <p>
+ * A DataFlavor for clipboard content is defined in this class.  Using
+ * this DataFlavor insures that all clients will recognize MConstText
+ * content on the clipboard.
+ * @see MText
+ * @see AttributeMap
+ * @see java.text.CharacterIterator
+ * @see java.awt.datatransfer.DataFlavor
+ */
+public abstract class MConstText {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * The DataFlavor for MConstText clipboard content.  Used to
+     * indicate that clipboard data has an MConstText representation.
+     */
+    public static final DataFlavor styledTextFlavor =
+                            new DataFlavor(MConstText.class, "Styled Text");
+
+    protected MConstText() {
+    }
+
+//========================================================
+// CHARACTER ACCESS
+//========================================================
+/**
+* Return the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the character at offset <code>pos</code>
+*/
+    public abstract char at(int pos);
+
+/**
+* Copy the characters in the range [<code>start</code>, <code>limit</code>)
+* into the array <code>dst</code>, beginning at <code>dstStart</code>.
+* @param start offset of first character which will be copied into the array
+* @param limit offset immediately after the last character which will be copied into the array
+* @param dst array in which to copy characters.  The length of <code>dst</code> must be at least
+* (<code>dstStart + limit - start</code>).
+*/
+    public abstract void extractChars(int start, int limit, char[] dst, int dstStart);
+
+/**
+* Create an MConstText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public abstract MConstText extract(int start, int limit);
+
+/**
+* Create a <code>java.text.CharacterIterator</code> over all
+* of the characters in the text.  Default implementation calls
+* <code>createCharacterIterator(0, length())</code>
+* @return a <code>java.text.CharacterIterator</code> over all
+*      of the characters in the text
+*/
+    public CharacterIterator createCharacterIterator() {
+
+        return createCharacterIterator(0, length());
+    }
+
+/**
+* Create a <code>java.text.CharacterIterator</code> over the
+* given range of characters in the text.
+* @param start the first index in the iteration range
+* @param limit the index after the last character in the iteration range
+* @return a <code>java.text.CharacterIterator</code> over the
+*     given range
+*/
+    public abstract CharacterIterator createCharacterIterator(int start,
+                                                              int limit);
+
+
+//========================================================
+// SIZE/CAPACITY
+//========================================================
+/**
+* Return the length of the MConstText object.  The length is the number of characters in the text.
+* @return the length of the MConstText object
+*/
+    public abstract int length();
+
+//========================================================
+// Character styles
+//========================================================
+
+/**
+* Return the index of the first character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public abstract int characterStyleStart(int pos);
+
+/**
+* Return the index after the last character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public abstract int characterStyleLimit(int pos);
+
+/**
+* Return the style applied to the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the style at offset <code>pos</code>
+*/
+    public abstract AttributeMap characterStyleAt(int pos);
+
+//========================================================
+// PARAGRAPH BOUNDARIES
+//========================================================
+/**
+* Return the start of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the start of the paragraph containing the character at offset <code>pos</code>
+*/
+    public abstract int paragraphStart(int pos);
+
+/**
+* Return the limit of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the limit of the paragraph containing the character at offset <code>pos</code>
+*/
+    public abstract int paragraphLimit(int pos);
+
+/**
+* Return the paragraph style applied to the paragraph containing offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the paragraph style in effect at <code>pos</code>
+*/
+    public abstract AttributeMap paragraphStyleAt(int pos);
+
+/**
+* Return the current time stamp.  The time stamp is
+* incremented whenever the contents of the MConstText changes.
+* @return the current paragraph style time stamp
+*/
+    public abstract int getTimeStamp();
+
+/**
+* Return the start of the damaged range.  If the start is not less
+* than the the limit of the damaged range, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeLimit
+* @see MText#resetDamagedRange
+*/
+    public abstract int damagedRangeStart();
+
+/**
+* Return the limit of the damaged range.  If the start is not less
+* than the the limit of the damaged range, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeStart
+* @see MText#resetDamagedRange
+*/
+    public abstract int damagedRangeLimit();
+
+//========================================================
+// Equality and hashCode
+//========================================================
+/**
+* Compare this to another Object for equality.  This is
+* equal to rhs if rhs is an MConstText which is equal
+* to this.
+* @param rhs Object to compare to
+* @return true if this equals <code>rhs</code>
+*/
+    public final boolean equals(Object rhs) {
+
+        MConstText otherText;
+
+        try {
+            otherText = (MConstText) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return equals(otherText);
+    }
+
+/**
+* Compare this to another MConstText for equality.  This is
+* equal to rhs if the characters and styles in rhs are the
+* same as this.  Subclasses may override this implementation
+* for efficiency, but they should preserve these semantics.
+* Determining that two MConstText instances are equal may be
+* an expensive operation, since every character and style must
+* be compared.
+* @param rhs Object to compare to
+* @return true if this equals <code>rhs</code>
+*/
+    public boolean equals(MConstText rhs) {
+
+        if (rhs == null) {
+            return false;
+        }
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (hashCode() != rhs.hashCode()) {
+            return false;
+        }
+
+        int length = length();
+        if (length != rhs.length()) {
+            return false;
+        }
+
+        for (int i=0; i < length; i++) {
+            if (i < length && at(i) != rhs.at(i)) {
+                return false;
+            }
+        }
+
+        for (int start = 0; start < length;) {
+            if (!characterStyleAt(start).equals(rhs.characterStyleAt(start))) {
+                return false;
+            }
+            int limit = characterStyleLimit(start);
+            if (limit != rhs.characterStyleLimit(start)) {
+                return false;
+            }
+            start = limit;
+        }
+
+        for (int start = 0; start < length;) {
+
+            if (!paragraphStyleAt(start).equals(rhs.paragraphStyleAt(start))) {
+                return false;
+            }
+            start = paragraphLimit(start);
+        }
+
+        return paragraphStyleAt(length).equals(rhs.paragraphStyleAt(length));
+    }
+
+    /**
+     * Return the hashCode for this MConstText.  An empty MConstText
+     * has hashCode 0;  a nonempty MConstText's hashCode is
+     * <blockquote><pre>
+     *       at(0) +
+     *       at(length/2)*31^1 +
+     *       at(length-1)*31^2 +
+     *       characterStyleAt(0).hashCode()*31^3 +
+     *       paragraphStyleAt(length-1).hashCode()*31^4
+     * </pre></blockquote>
+     * where <code>^</code> is exponentiation (not bitwise XOR).
+     */
+    public final int hashCode() {
+
+        int hashCode = 0;
+        int length = length();
+
+        if (length > 0) {
+            hashCode = paragraphStyleAt(length-1).hashCode();
+            hashCode = hashCode*31 + characterStyleAt(0).hashCode();
+            hashCode = hashCode*31 + at(length-1);
+            hashCode = hashCode*31 + at(length/2);
+            hashCode = hashCode*31 + at(0);
+        }
+
+        return hashCode;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/MParagraphBuffer.java b/src/com/ibm/richtext/styledtext/MParagraphBuffer.java
new file mode 100644
index 0000000..ea901e0
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MParagraphBuffer.java
@@ -0,0 +1,91 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+abstract class MParagraphBuffer
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+/**
+* Returns the start of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract int paragraphStart(int pos);
+
+/**
+* Returns the limit of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract int paragraphLimit(int pos);
+
+/**
+* Returns the style of the paragraph containing offset <tt>pos</tt>.
+*/
+    abstract AttributeMap paragraphStyleAt(int offset);
+
+/**
+* Process a character insertion at offset <tt>start</tt>.
+* If a paragraph break was inserted, propogate paragraph style at
+* <tt>start</tt> to new paragraph.
+*/
+    abstract void insertText(int start, char insertedChar);
+
+/**
+* Process character insertion at offset <tt>start</tt>.
+* Each new paragraph gets paragraph style at
+* <tt>start</tt>.
+*/
+    abstract void insertText(int start,
+                             char[] srcChars,
+                             int srcStart,
+                             int srcLimit);
+
+/**
+* Process deletion by removing paragraph breaks contained in
+* deleted range.  Propogate paragraph styles backward, if necessary.
+*/
+    abstract void deleteText(int start,
+                             int limit,
+                             int[] damagedRange);
+
+/*
+* Replace paragraph breaks/styles between start and limit with paragraph breaks/styles
+* from <tt>srcText</tt>.
+* @param start an offset into the text
+* @param limit the index after the last character to replace
+* @param srcText the text from which new paragraphs are taken
+* @param srcStart the start of the range in <code>srcText</code> to copy
+* @param srcLimit the first index after the range in <code>srcText</code> to copy
+*/
+    abstract void replace(int start,
+                          int limit,
+                          MConstText srcText,
+                          int srcStart,
+                          int srcLimit,
+                          int[] damagedRange);
+
+/**
+* Set the style of all paragraphs containing offsets in the range [start, limit) to
+* <tt>style</tt>.
+*/
+    abstract boolean modifyParagraphStyles(int start,
+                                           int limit,
+                                           StyleModifier modifier,
+                                           int[] damagedRange);
+
+/**
+* Minimize the amount of memory used by this object.
+*/
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MStyleBuffer.java b/src/com/ibm/richtext/styledtext/MStyleBuffer.java
new file mode 100644
index 0000000..8629e57
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MStyleBuffer.java
@@ -0,0 +1,110 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    8/1/96
+        Style -> ResolvedStyle
+    8/7/96 jf
+        added countStyles and getStyles protocol
+    8/13/96
+        ResolvedStyle->Style
+    8/22/96 jf
+        Removed the setIterator methods.
+*/
+/*
+* MStyleBuffer is the abstract interface for a class which maintains
+* style runs in an <tt>MText</tt>.  A "style run" consists of a
+* style and the interval on which the style applies.
+* <p>
+* MStyleBuffer includes methods to call when text is inserted into
+* or deleted from the <tt>MText</tt>.  These methods update the
+* style runs in accordance with the commonly accepted behavior for
+* style runs.
+* <p>
+* Additionally, MStyleBuffer provides methods for replacing the style runs on a
+* text range with another set of style runs.  MStyleBuffer does not do style "combining" (for
+* example, adding the bold attribute to text which is italicized);  clients are
+* responsible for computing the combined styles, and passing these styles into
+* MStyleBuffer.
+* <p>
+* MStyleBuffer supplies a method for replacing the style runs on a text range with the runs
+* represented in an <tt>MStyleRunIterator</tt>.  This is useful for implementing paste
+* operations, in which the style runs on a range of text are replaced by style runs
+* from an external source.
+* <p>
+*
+* @author John Raley
+*
+* @see AttributeMap
+* @see MText
+*/
+abstract class MStyleBuffer
+{
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+/**
+* Respond to an insertion in the text.  The length of the last style run which
+* begins before <tt>start</tt> is increased by <tt>limit-start</tt>.
+* @param start the offset where the insertion began
+* @param limit the offset where the insertion ended
+*/
+    abstract void insertText(int start, int limit);
+
+/**
+* Respond to a deletion in the text.  The last style run before
+* <tt>start</tt> is truncated to end at <tt>start</tt>.  The
+* style run containing (<tt>start</tt>+<tt>length</tt>) is set to begin
+* at (<tt>start</tt>+<tt>length</tt>).  Runs in between are deleted.
+* If the deletion occurs entirely within one style run, the length of the style
+* run is reduced by <tt>length</tt>.
+* @param start the offset where the deletion began
+* @param length the offset where the deletion ended
+*/
+    abstract void deleteText(int start, int limit);
+
+/*
+* Replace style runs between offsets <tt>start</tt> and <tt>limit</tt> with styles in
+* <tt>iter</tt>.  This method can be used to perform a "paste" operation.
+* @param start the offset where the replacement begins
+* @param limit the offset where the replacement ends
+* @param iter an <tt>MStyleRunIterator</tt> containing style runs which will replace old
+* style runs.
+*/
+    abstract void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit);
+
+    abstract int styleStart(int pos);
+    abstract int styleLimit(int pos);
+
+/**
+* Return style at location <tt>pos</tt>.
+* @param pos an offset into the text
+* @returns the style of the character at <tt>offset</tt>
+*/
+    abstract AttributeMap styleAt(int pos);
+
+/**
+ * Return true if styles were modified.
+ */
+    abstract boolean modifyStyles(int start,
+                                  int limit,
+                                  StyleModifier modifier,
+                                  int[] damagedRange);
+
+/**
+* Minimize the amount of memory used by this object.
+*/
+    abstract void compress();
+}
diff --git a/src/com/ibm/richtext/styledtext/MTabRuler.java b/src/com/ibm/richtext/styledtext/MTabRuler.java
new file mode 100644
index 0000000..c421f72
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MTabRuler.java
@@ -0,0 +1,111 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+/**
+ * This interface represents a sequence of TabStops, ordered by position.
+ * The first
+ * TabStop in the ruler can be obtained with the <code>firstTab</code>
+ * method;  subsequent TabStops are obtained with the <code>nextTab</code>
+ * method.
+ * <p>
+ * If a TabStop with type <code>TabStop.kAuto</code> is returned, all tabs
+ * after that TabStop will also have type <code>TabStop.kAuto</code>, and
+ * their positions will be multiples of <code>autoSpacing</code>.
+ * @see TabStop
+ */
+public abstract class MTabRuler
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Return first tab in the ruler.  If an autoTab, it is at position zero, and
+     * all subsequent tabs will be autotabs at autoSpacing intervals.
+     */
+    public abstract TabStop firstTab();
+
+    /**
+     * Return the first tab in the ruler with fPosition > position.  If it is an
+     * autotab, it is at an increment of autoSpacing, and all subsequent tabs will be
+     * autotabs at autoSpacing intervals.
+     */
+    public abstract TabStop nextTab(int position);
+
+    /**
+     * Return the interval for autotabs.
+     */
+    public abstract int autoSpacing();
+
+    /**
+     * Compute the hashCode for this ruler.  The hashCode is the
+     * hashCode of the first tab multiplied by the autoSpacing
+     * interval.
+     */
+    public final int hashCode() {
+
+        return firstTab().hashCode() * autoSpacing();
+    }
+
+    /**
+     * Return true if this tab ruler contains the given tab.
+     * @param tabToTest the tab to search for
+     * @return true if this tab ruler contains <code>tabToTest</code>
+     */
+    public boolean containsTab(TabStop tabToTest) {
+
+        for (TabStop tab = firstTab();
+                        tab.getType() != TabStop.kAuto;
+                        tab = nextTab(tab.getPosition())) {
+            if (tab.getPosition() >= tabToTest.getPosition()) {
+                return tabToTest.equals(tab);
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Return a tab ruler identical to this ruler, except with the
+     * given tab added.  This ruler is not modified.
+     * @param tabToAdd the tab to add to the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler addTab(TabStop tabToAdd) {
+
+        return StandardTabRuler.addTabToRuler(this, tabToAdd);
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * tab at the given position removed.  This ruler is not modified.
+     * @param position the position of the tab to remove from the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler removeTab(int position) {
+
+        return StandardTabRuler.removeTabFromRuler(this, position);
+    }
+
+    /**
+     * Return a tab ruler identical to this ruler, except with the
+     * tab at position <code>fromPosition</code> moved to position
+     * <code>toPosition</code>.  This ruler is not modified.
+     * @param fromPosition the position of the tab to move
+     * @param toPosition the new position of the tab
+     * @return an MTabRuler resulting from this operation
+     */
+    public MTabRuler moveTab(int fromPosition, int toPosition) {
+
+        return StandardTabRuler.moveTabOnRuler(this, fromPosition, toPosition);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/MText.java b/src/com/ibm/richtext/styledtext/MText.java
new file mode 100644
index 0000000..37c39fb
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/MText.java
@@ -0,0 +1,241 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    Change history:
+
+    10/29/96 jef    split the character and paragraph style access functions
+    8/14/96 sfb     eliminated StyleSheetIterator
+    8/21/96 jef        completed abstract interface (changed iterator classes etc.)
+    1/30/97 rtg     cleaned up interface, brought in functions from SimpleTextView
+    7/31/98 jbr switched from Style to AttributeMap
+
+*/
+
+/**
+ * This class is a mutable extension of MConstText.  It has methods for
+ * inserting, appending, replacing, and removing styled text.  Additionally,
+ * it has methods for modifying paragraph and character styles.
+ * <p>
+ * Styled characters (from another <code>MConstText</code> instance) added
+ * to the text retain their original character styles.  The style of plain characters
+ * (specified as a <code>char</code> or <code>char[]</code>) is always
+ * specified explicitly when they are added to the text.  MText does not do
+ * character style "propagation", where unstyled characters take on the
+ * style of previous characters.  Clients can implement this behavior by
+ * specifying the styles to propagate.
+ * <p>
+ * When unstyled characters are added to the text, their paragraph style
+ * is the paragraph style in effect immediately after the last new character.
+ * If the characters contain paragraph separators, then every new paragraph
+ * will have the same paragraph style.  When styled characters are added
+ * to the text, their resulting paragraph style is determined by the
+ * following rule:
+ * <blockquote>
+ * The paragraph styles in the new text
+ * become the paragraph styles in the target text, with the exception of the
+ * last paragraph in the new text, which takes on the paragraph style in
+ * effect immediately after the inserted text.
+ * If the new text is added at the end of the target text, the new text's
+ * paragraph styles take effect in any paragraph affected by the addition.
+ * </blockquote>
+ * For example, suppose there is a single paragraph of text with style 'A',
+ * delimited with a paragraph separator 'P':
+ * <blockquote>
+ * AAAAAAP
+ * </blockquote>
+ * Suppose the following styled paragraphs are inserted into the above text
+ * after the fourth character:
+ * <blockquote>
+ * BBBBPCCCPDDD
+ * </blockquote>
+ * Then the original paragraph style of each character is:
+ * <blockquote>
+ * AAAABBBBPCCCPDDDAAP
+ * </blockquote>
+ * The resulting paragraph styles are:
+ * <blockquote>
+ * BBBBBBBBPCCCPAAAAAP
+ * </blockquote>
+ * Similarly, if characters are deleted, the paragraph style immediately
+ * after the deletion takes effect on the paragraph containing the deletion.
+ * So, if characters 4-16 were deleted in the example above, the paragraph
+ * styles would be:
+ * <blockquote>
+ * AAAAAAP
+ * </blockquote>
+ * This paragraph-style propagation policy is sometimes referred to as <strong>
+ * following styles win</strong>, since styles at the end of the paragraph
+ * become the style for the entire paragraph.
+ * <p>
+ * This class can accumulate a <strong>damaged range</strong> - an interval in
+ * which characters, character styles, or paragraph styles have changed.  This is
+ * useful for clients such as text editors which reformat and draw text after
+ * changes.  Usually the damaged range is exactly the range of characters
+ * operated upon;  however, larger ranges may be damaged if paragraph styles
+ * change.
+ * @see StyleModifier
+ */
+
+public abstract class MText extends MConstText
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected MText() {
+    }
+
+//==================================================
+// MAIN CHARACTER MODIFICATION FUNCTIONS
+//==================================================
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param srcText the source for the new characters and styles
+* @param srcStart the offset into <code>srcText</code> where new characters and styles will be obtained
+* @param srcLimit the offset into <code>srcText</code> where the new characters and styles end
+*/
+    public abstract void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit);
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code>.  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param text the source for the new characters and styles
+*/
+    public abstract void replace(int start, int limit, MConstText text);
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the characters
+* in <code>srcChars</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  New characters take on the style
+* <code>charsStyle</code>.
+* <code>srcChars</code> is not modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChars the source for the new characters
+* @param srcStart the offset into <code>srcChars</code> where new characters will be obtained
+* @param srcLimit the offset into <code>srcChars</code> where the new characters end
+* @param charsStyle the style of the new characters
+*/
+    public abstract void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit, AttributeMap charsStyle);
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the character <code>srcChar</code>.
+* The new character takes on the style <code>charStyle</code>
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChar the new character
+* @param charStyle the style of the new character
+*/
+    public abstract void replace(int start, int limit, char srcChar, AttributeMap charStyle);
+
+/**
+* Replace the entire contents of this MText (both characters and styles) with
+* the contents of <code>srcText</code>.
+* @param srcText the source for the new characters and styles
+*/
+    public abstract void replaceAll(MConstText srcText);
+
+/**
+* Insert the contents of <code>srcText</code> (both characters and styles) into this
+* MText at the position specified by <code>pos</code>.
+* @param pos The character offset where the new text is to be inserted.
+* @param srcText The text to insert. */
+    public abstract void insert(int pos, MConstText srcText);
+
+/**
+* Append the contents of <code>srcText</code> (both characters and styles) to the
+* end of this MText.
+* @param srcText The text to append. */
+    public abstract void append(MConstText srcText);
+
+/**
+* Delete the specified range of characters (and styles).
+* @param start Offset of the first character to delete.
+* @param limit Offset of the first character after the range to delete. */
+    public abstract void remove(int start, int limit);
+
+/**
+* Delete all characters and styles.
+*/
+    public abstract void remove();
+
+/**
+* Create an MText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public abstract MText extractWritable(int start, int limit);
+
+
+//==================================================
+// STORAGE MANAGEMENT
+//==================================================
+
+/**
+* Minimize the amount of memory used by the MText object.
+*/
+    public abstract void compress();
+
+//==================================================
+// STYLE MODIFICATION
+//==================================================
+
+/**
+* Set the character style of all characters in the MText object to
+* <code>AttributeMap.EMPTY_ATTRIBUTE_MAP</code>.
+*/
+    public abstract void removeCharacterStyles();
+
+/**
+* Invoke the given modifier on all character styles from start to limit.
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public abstract void modifyCharacterStyles(int start, int limit, StyleModifier modifier);
+
+/**
+* Invoke the given modifier on all paragraph styles in paragraphs
+* containing characters in the range [start, limit).
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public abstract void modifyParagraphStyles(int start, int limit, StyleModifier modifier);
+
+//==================================================
+// DAMAGED RANGE
+//==================================================
+/**
+* Reset the damaged range to an empty interval, and begin accumulating the damaged
+* range.  The damaged range includes every index where a character, character style,
+* or paragraph style has changed.
+* @see #damagedRangeStart
+* @see #damagedRangeLimit
+*/
+    public abstract void resetDamagedRange();
+}
diff --git a/src/com/ibm/richtext/styledtext/ParagraphBuffer.java b/src/com/ibm/richtext/styledtext/ParagraphBuffer.java
new file mode 100644
index 0000000..e9e6809
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/ParagraphBuffer.java
@@ -0,0 +1,714 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    Right now, you have to construct this class with a charBuffer.  That's pretty ugly... */
+
+/*
+    8/8/96
+        Added replace method, which reads styles from a ParagraphIterator.
+        Also, added a constructor which takes a ParagraphIterator.
+        These methods are for copy/paste support.
+
+    8/22/96
+        Replace method (which takes an iterator as an argument) tests for a
+        0-length iterator.
+
+    9/30/96
+        {jbr} modified paragraphLimit();
+
+    10/23/96
+        This class now maintains paragraph styles.  Also has a timestamp.
+
+    10/25/96
+        Holds on to Style instead of Style.
+
+    7/31/98 Switched to AttributeMap
+
+*/
+
+/**
+* This class stores offsets where paragraph breaks occur, and the style applied to
+* each paragraph.
+*
+* The offsets where paragraph breaks occur are stored in a RunArray object.  This is
+* not strictly necessary, but it makes scanning the text for paragraph breaks unnecessary.
+* However, it makes determining where paragraphs start a little confusing.  If there is a
+* paragraph break at offset p, then there will be a paragraph start at offset p+1.
+* If the last character in the text is a paragraph break, there will be a run array entry
+* for that character (and also a paragraph style for that paragraph, even though the
+* style does not apply to any text).
+*
+* The style of the first paragraph in the text is in the fFirstStyle member.  Other
+* paragraph styles are stored in the fStyleTable array, in the following manner:  the
+* paragraph with begins at offset fRunArray.fRunStart[i]+1 has style fStyleTable[i].
+* The style table's "gap range" is kept in sync with the RunArray.
+*
+* This class propogates paragraph styles in the "Microsoft Word" fashion:  styles
+* propogate backward from paragraph breaks.
+*
+* This class maintains a time stamp, which changes every time extra formatting (formatting
+* on a range other than the current selection) is needed;  for example, when a paragraph
+* break is removed.
+*/
+
+
+final class ParagraphBuffer extends MParagraphBuffer implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int kInitialSize = 10;
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private RunArray fRunArray;
+    private AttributeMap[] fStyleTable;
+    private AttributeMap fFirstStyle;
+
+    private static final boolean isParagraphBreak(char c) {
+
+        return c =='\u2029' || c == '\n';
+    }
+
+/**
+* Construct a new paragraph buffer from the characters in <tt>charBuffer</tt>.
+*/
+    ParagraphBuffer(MCharBuffer charBuffer) {
+
+        this(charBuffer.length());
+
+        // scan text for paragraph boundaries
+
+        int textLength = fRunArray.getCurTextLength();
+
+        for (int pos=0; pos < textLength; pos++) {
+
+            if (isParagraphBreak(charBuffer.at(pos))) {
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+                fRunArray.fRunStart[++fRunArray.fPosEnd] = pos;
+                fStyleTable[fRunArray.fPosEnd] = fFirstStyle;
+            }
+        }
+
+    }
+
+/**
+* Private constructor.
+*/
+    private ParagraphBuffer(int initialLength) {
+
+        fRunArray = new RunArray(kInitialSize, initialLength);
+        fStyleTable = new AttributeMap[fRunArray.getArrayLength()];
+
+        fFirstStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public ParagraphBuffer() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        compress();
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunArray);
+        out.writeObject(fStyleTable);
+        out.writeObject(fFirstStyle);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                                ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of ParagraphBuffer");
+        }
+        fRunArray = (RunArray) in.readObject();
+        fStyleTable = (AttributeMap[]) in.readObject();
+        fFirstStyle = (AttributeMap) in.readObject();
+    }
+
+/**
+* Shift table such that the last positive run starts before pos.
+*/
+    private void shiftTableTo(int pos) {
+
+        int oldNegStart = fRunArray.fNegStart;
+        int oldPosEnd = fRunArray.fPosEnd;
+
+        fRunArray.shiftTableTo(pos);
+
+        if (oldPosEnd > fRunArray.fPosEnd)
+            System.arraycopy(fStyleTable, fRunArray.fPosEnd+1,
+                             fStyleTable, fRunArray.fNegStart,
+                             oldPosEnd-fRunArray.fPosEnd);
+        else if (oldNegStart < fRunArray.fNegStart)
+            System.arraycopy(fStyleTable, oldNegStart,
+                             fStyleTable, oldPosEnd+1,
+                             fRunArray.fNegStart-oldNegStart);
+    }
+
+/**
+* Update the style table to reflect a change in the RunArray's size.
+*/
+    private void handleArrayResize(int oldNegStart) {
+
+        AttributeMap newStyleTable[] = new AttributeMap[fRunArray.getArrayLength()];
+        System.arraycopy(fStyleTable, 0, newStyleTable, 0, fRunArray.fPosEnd+1);
+        System.arraycopy(fStyleTable, oldNegStart, newStyleTable, fRunArray.fNegStart, (fRunArray.getArrayLength()-fRunArray.fNegStart));
+        fStyleTable = newStyleTable;
+    }
+
+    void compress() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.compress();
+        if (fRunArray.fNegStart != oldNegStart) {
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/**
+* Make more room in run/style tables.
+*/
+    private void expandStyleTable() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.expandRunTable();
+        handleArrayResize(oldNegStart);
+    }
+
+/**
+* Process a character insertion at offset <tt>start</tt>.
+* If a paragraph break was inserted, propogate paragraph style at
+* <tt>start</tt> to new paragraph.
+*/
+    public void insertText(int start, char insertedChar) {
+
+        shiftTableTo(start);
+        if (isParagraphBreak(insertedChar)) {
+            if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                expandStyleTable();
+            fRunArray.fRunStart[++fRunArray.fPosEnd] = start;
+            fStyleTable[fRunArray.fPosEnd] =
+                (fRunArray.fPosEnd == 0)? fFirstStyle : fStyleTable[fRunArray.fPosEnd-1];
+            fRunArray.runStartsChanged();
+        }
+
+        //fRunArray.fCurTextLength++;
+        fRunArray.addToCurTextLength(1);
+    }
+
+/**
+* Process character insertion at offset <tt>start</tt>.
+* Each new paragraph gets paragraph style at
+* <tt>start</tt>.
+*/
+    public void insertText(int start, char srcChars[], int srcStart, int srcLimit) {
+
+        shiftTableTo(start);
+
+        int adjust = start - srcStart;
+
+        for (int i=srcStart;  i < srcLimit; i++)
+            if (isParagraphBreak(srcChars[i])) {
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+                fRunArray.fRunStart[++fRunArray.fPosEnd] = adjust + i;
+                fStyleTable[fRunArray.fPosEnd] =
+                    (fRunArray.fPosEnd == 0)? fFirstStyle : fStyleTable[fRunArray.fPosEnd-1];
+                fRunArray.runStartsChanged();
+            }
+
+        //fRunArray.fCurTextLength += (srcLimit-srcStart);
+        fRunArray.addToCurTextLength(srcLimit-srcStart);
+    }
+
+/**
+* Process deletion by removing paragraph breaks contained in
+* deleted range.  Propogate paragraph styles backward, if necessary.
+*/
+    public void deleteText(int start, int limit, int[] damagedRange) {
+
+        int length = limit - start;
+        if (length < 0) {
+            throw new IllegalArgumentException("Invalid range");
+        }
+
+        shiftTableTo(limit);
+
+        int newEnd = fRunArray.findRunContaining(start-1);
+
+        if (newEnd != fRunArray.fPosEnd) {
+
+            AttributeMap propStyle = fStyleTable[fRunArray.fPosEnd];
+            boolean propogated;
+
+            if (newEnd == -1) {
+                propogated = !propStyle.equals(fFirstStyle);
+                fFirstStyle = propStyle;
+            }
+            else {
+                propogated = !propStyle.equals(fStyleTable[newEnd]);
+                fStyleTable[newEnd] = propStyle;
+            }
+
+            if (propogated) {
+                int pStart = (newEnd==-1)? 0 : fRunArray.fRunStart[newEnd] + 1;
+                damagedRange[0] = Math.min(damagedRange[0], pStart);
+            }
+
+            fRunArray.fPosEnd = newEnd;
+        }
+
+        fRunArray.addToCurTextLength(-length);
+
+        fRunArray.runStartsChanged();
+    }
+
+/**
+* Returns the start of the paragraph containing offset <tt>pos</tt>.
+*/
+    public int paragraphStart(int pos) {
+
+        int run = fRunArray.findRunContaining(pos-1);
+        if (run == -1) {
+            return 0;
+        }
+        else {
+            return fRunArray.getLogicalRunStart(run) + 1;
+        }
+    }
+
+/**
+* Returns the limit of the paragraph containing offset <tt>pos</tt>.
+*/
+    public int paragraphLimit(int pos) {
+
+        int run = fRunArray.findRunContaining(pos-1);
+
+        if (run == fRunArray.fPosEnd)
+            run = fRunArray.fNegStart;
+        else
+            run++;
+
+        if (run == fRunArray.getArrayLength()) {
+            return fRunArray.getCurTextLength();
+        }
+
+        int start = fRunArray.getLogicalRunStart(run);
+
+        return start+1;
+    }
+
+/**
+* Returns the style of the paragraph containing offset <tt>pos</tt>.
+*/
+    public AttributeMap paragraphStyleAt(int offset) {
+
+        int run = fRunArray.findRunContaining(offset-1);
+        if (run < 0)
+            return fFirstStyle;
+        else
+            return fStyleTable[run];
+    }
+
+/**
+* Create paragraph iterator.
+*/
+/*
+    public MParagraphIterator createParagraphIterator(int start, int limit) {
+
+        return new ParagraphIterator(start, limit);
+    }
+*/
+
+/**
+* Called by iterator to get run info.
+*/
+    private void setIterator(int pos, ParagraphIterator iter) {
+
+        if ((pos < 0) || (pos >= fRunArray.getCurTextLength())) {
+            iter.set(0, 0, kNoRun, null);
+            return;
+        }
+
+        int run;
+
+        if (pos > 0)
+            run = fRunArray.findRunContaining(pos-1);
+        else
+            run = -1;
+
+        setIteratorUsingRun(run, iter);
+    }
+
+/**
+* Called by iterator to get run info.
+*/
+    private void setIteratorUsingRun(int run, ParagraphIterator iter) {
+
+        int lastValidRun = fRunArray.lastRun();
+
+        if (run < -1 || run > lastValidRun) {
+            iter.set(0, 0, kNoRun, null);
+            return;
+        }
+
+        if (run == fRunArray.fPosEnd+1)
+            run = fRunArray.fNegStart;
+        else if (run == fRunArray.fNegStart-1)
+            run = fRunArray.fPosEnd;
+
+        int runStart;
+        AttributeMap style;
+
+        if (run < 0) {
+            runStart = 0;
+            style = fFirstStyle;
+        }
+        else {
+            runStart = fRunArray.fRunStart[run];
+            style = fStyleTable[run];
+            if (runStart < 0)
+                runStart += fRunArray.getCurTextLength();
+            runStart++;
+        }
+
+        int nextRun;
+
+        if (run == fRunArray.fPosEnd)
+            nextRun = fRunArray.fNegStart;
+        else
+            nextRun = run + 1;
+
+        int runLimit;
+
+        if (nextRun >= fRunArray.getArrayLength())
+            runLimit = fRunArray.getCurTextLength();
+        else {
+            runLimit = fRunArray.fRunStart[nextRun];
+            if (runLimit < 0)
+                runLimit += fRunArray.getCurTextLength();
+            runLimit++;
+            }
+
+        iter.set(runStart, runLimit, run, style);
+    }
+
+/**
+* Replace paragraph breaks/styles between start and length with paragraph breaks/styles
+* from <tt>srcText</tt>.
+* @param start an offset into the text
+* @param limit the index after the last character to replace
+* @param srcText the text from which new paragraphs are taken
+* @param srcStart the start of the range in <code>srcText</code> to copy
+* @param srcLimit the first index after the range in <code>srcText</code> to copy
+*/
+    public void replace(int start,
+                        int limit,
+                        MConstText srcText,
+                        int srcStart,
+                        int srcLimit,
+                        int[] damagedRange) {
+
+        final int insLength = srcLimit - srcStart;
+        if (insLength < 0) {
+            throw new Error("invalid range");
+        }
+        final int origLength = fRunArray.getCurTextLength();
+        deleteText(start, limit, damagedRange);
+
+        if (insLength == 0)
+            return;
+
+        final int oldPosEnd = fRunArray.fPosEnd;
+        AttributeMap origStyle;
+        if (limit < origLength) {
+            origStyle = (fRunArray.fPosEnd>=0)? fStyleTable[fRunArray.fPosEnd] : fFirstStyle;
+        }
+        else {
+            origStyle = srcText.paragraphStyleAt(srcLimit);
+        }
+
+        int paragraphStart = srcStart;
+        int lastPLimit = srcText.paragraphStart(srcLimit);
+        boolean separatorAtEnd = lastPLimit > srcStart && isParagraphBreak(srcText.at(lastPLimit-1));
+
+        if (limit == origLength && lastPLimit == paragraphStart) {
+            if (fRunArray.fPosEnd > 0) {
+                fStyleTable[fRunArray.fPosEnd] = origStyle;
+            }
+            else {
+                fFirstStyle = origStyle;
+            }
+        }
+        else {
+            boolean firstPass = true;
+            while (paragraphStart < lastPLimit) {
+
+                AttributeMap style = srcText.paragraphStyleAt(paragraphStart);
+                int paragraphLimit = srcText.paragraphLimit(paragraphStart);
+
+                if (fRunArray.fPosEnd+1 >= fRunArray.fNegStart)
+                    expandStyleTable();
+
+                if (fRunArray.fPosEnd >= 0) {
+                    if (!style.equals(fStyleTable[fRunArray.fPosEnd])) {
+                        fStyleTable[fRunArray.fPosEnd] = style;
+                        if (firstPass) {
+                            int pStart = fRunArray.fRunStart[fRunArray.fPosEnd]+1;
+                            damagedRange[0] = Math.min(damagedRange[0], pStart);
+                        }
+                    }
+                }
+                else if (!style.equals(fFirstStyle)) {
+                    fFirstStyle = style;
+                    damagedRange[0] = 0;
+                }
+
+                firstPass = false;
+
+                if (paragraphLimit < lastPLimit || separatorAtEnd) {
+                    fRunArray.fRunStart[++fRunArray.fPosEnd] = paragraphLimit - 1 + start - srcStart;
+                }
+                paragraphStart = paragraphLimit;
+            }
+            if (fRunArray.fPosEnd != oldPosEnd) {
+                fStyleTable[fRunArray.fPosEnd] = origStyle;
+            }
+        }
+
+        fRunArray.addToCurTextLength(insLength);
+    }
+
+/**
+* Modify the style of all paragraphs containing offsets in the range [start, limit) to
+* <tt>style</tt>.
+*/
+    public boolean modifyParagraphStyles(int start,
+                                         int limit,
+                                         StyleModifier modifier,
+                                         int[] damagedRange)  {
+
+        int run = fRunArray.findRunContaining(start-1);
+        int currentPStart;
+        if (run == -1) {
+            currentPStart = 0;
+        }
+        else {
+            currentPStart = fRunArray.getLogicalRunStart(run) + 1;
+        }
+
+        boolean modifiedAnywhere = false;
+
+        for (;;) {
+
+            boolean modified = false;
+
+            if (run < 0) {
+
+                AttributeMap newStyle = modifier.modifyStyle(fFirstStyle);
+
+                if (!newStyle.equals(fFirstStyle)) {
+                    fFirstStyle = newStyle;
+                    modified = true;
+                }
+            }
+            else {
+
+                AttributeMap newStyle = modifier.modifyStyle(fStyleTable[run]);
+
+                if (!fStyleTable[run].equals(newStyle)) {
+                    fStyleTable[run] = newStyle;
+                    modified = true;
+                }
+            }
+
+            if (run == fRunArray.fPosEnd) {
+                run = fRunArray.fNegStart;
+            }
+            else {
+                run++;
+            }
+
+            int nextPStart;
+            if (run == fRunArray.getArrayLength()) {
+                nextPStart = fRunArray.getCurTextLength();
+            }
+            else {
+                nextPStart = fRunArray.getLogicalRunStart(run) + 1;
+            }
+
+            if (modified) {
+                modifiedAnywhere = true;
+                damagedRange[0] = Math.min(damagedRange[0], currentPStart);
+                damagedRange[1] = Math.max(damagedRange[1], nextPStart);
+            }
+
+            if (limit <= nextPStart) {
+                break;
+            }
+            else {
+                currentPStart = nextPStart;
+            }
+        }
+
+        return modifiedAnywhere;
+    }
+
+//    private static void dumpParagraphStarts(ParagraphBuffer st) {
+//
+//        System.out.println("fRunArray.fPosEnd="+st.fRunArray.fPosEnd+", fRunArray.fNegStart="+st.fRunArray.fNegStart+
+//                            ", fRunArray.getArrayLength()="+st.fRunArray.getArrayLength()+", fRunArray.getCurTextLength()="+st.fRunArray.getCurTextLength());
+//
+//        int i;
+//        System.out.print("Positives: ");
+//        for (i=0; i<=st.fRunArray.fPosEnd; i++)
+//            System.out.print(st.fRunArray.fRunStart[i]+" ");
+//
+//        System.out.print("   Negatives: ");
+//        for (i=st.fRunArray.fNegStart; i<st.fRunArray.getArrayLength(); i++)
+//            System.out.print(st.fRunArray.fRunStart[i]+" ");
+//
+//        System.out.println(" ");
+//    }
+
+    private static final int kNoRun = -42; // iterator use
+
+    private final class ParagraphIterator /*implements MParagraphIterator*/
+    {
+        ParagraphIterator(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void reset(int start, int limit, int pos)
+        {
+            fStart = start;
+            fLimit = limit;
+            setIterator(fStart, this);
+        }
+
+        public boolean isValid()
+        {
+            return fCurrentRun != kNoRun;
+        }
+
+        public void next()
+        {
+            if (fRunLimit < fLimit) {
+                fCurrentRun++;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(0, 0, kNoRun, null);
+        }
+
+        public void prev()
+        {
+            if (fRunStart > fStart) {
+                fCurrentRun--;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(0, 0, kNoRun, null);
+        }
+
+        public void set(int pos)
+        {
+            if (pos >= fStart && pos < fLimit) {
+                setIterator(pos, this);
+            } else {
+                set(0, 0, kNoRun, null);
+            }
+        }
+
+        // ParagraphBuffer calls back on this to set iterators
+        void set(int start, int limit, int currentRun, AttributeMap style)
+        {
+            fRunStart = start < fStart ? fStart : start;
+            fRunLimit = limit > fLimit ? fLimit : limit;
+            fCurrentRun = currentRun;
+            fStyle = style;
+        }
+
+        public void reset(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void first()
+        {
+            set(fStart);
+        }
+
+        public void last()
+        {
+            set(fLimit - 1);
+        }
+
+        public int rangeStart()
+        {
+            return fStart;
+        }
+
+        public int rangeLimit()
+        {
+            return fLimit;
+        }
+
+        public int rangeLength()
+        {
+            return fLimit - fStart;
+        }
+
+        public int runStart()
+        {
+            return fRunStart;
+        }
+
+        public int runLimit()
+        {
+            return fRunLimit;
+        }
+
+        public int runLength()
+        {
+            return fRunLimit - fRunStart;
+        }
+
+        public AttributeMap style() {
+
+            return fStyle;
+        }
+
+        private int fStart;
+        private int fLimit;
+        private int fRunStart;
+        private int fRunLimit;
+        private int fCurrentRun;
+        private AttributeMap fStyle;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/RunArray.java b/src/com/ibm/richtext/styledtext/RunArray.java
new file mode 100644
index 0000000..1627976
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/RunArray.java
@@ -0,0 +1,280 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/**
+* This class maintains intervals within a piece of text.  Interval boundaries
+* are stored in the fRunStart array.  Interval boundaries may have a
+* positive or negative representation.  A positive boundary is given as an offset
+* from 0.  A negative boundary is given as a negative offset from the ned of the text.
+* The RunArray stores positive boundaries in the entries [0, fPosEnd], and negative
+* boundaries in the entries [fNegStart, fLength).  New boundaries may be inserted into
+* the undefined middle of the RunArray.  If fPosEnd < 0, there are no positive entries.
+* If fNegStart >= fRunArray.length, there are no negative netries.  It's possible to have
+* a runarray with neither positive or negative entries.
+*
+* As an example of how the RunArray works, consider a piece of text with 5 intervals,
+* where each interval is 3 characters in length.  The RunArray for this text could
+* look like:
+*    fCurTextLength = 15, fPosEnd = 5, fNegStart = 10,
+*    fRunStart = { 0, 3, 6, 9, 12, U, U, U, U, U };
+* where U is an undefined array element.
+
+* An equivalent representation would be:
+*    fCurTextLength = 15, fPosEnd = 3, fNegStart = 8,
+*    fRunStart = { 0, 3, 6, U, U, U, U, U, -6, -3 };
+*
+* The RunArray class is used in the StyleBuffer and the ParagraphBuffer.  In the StyleBuffer,
+* the entries in fRunStart give the offsets where style runs begin.  In the
+* ParagraphBuffer, the fRunStart entries store offsets of paragraph breaks.
+*
+* This class provides methods for shifting the run table to a particular position, expanding the
+* run table, and returning the index of the run containing a particular offset in the text.  All
+* other functionality is implemented in the RunArray clients.
+*
+* RunArray uses FastIntBinarySearch for searches.  The searches are constructed on demand in
+* the findRunContaining method.  The searches are invalidated when the run array is shifted;
+* however, the RunArray can be modified by other classes.  Thus, if another class modifies
+* the entries in fRunArray, or modifies fPosEnd or fNegStart, it is responsible for
+* calling runStartsChanged.
+*/
+
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+final class RunArray implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final long serialVersionUID = 22356934;
+
+    int[] fRunStart;
+    private int fCurTextLength;
+    int fPosEnd, fNegStart;
+    
+    transient private FastIntBinarySearch fPosSearch;
+    transient private boolean fPosSearchValid;
+    transient private FastIntBinarySearch fNegSearch;
+    transient private boolean fNegSearchValid;
+
+    private static final int CURRENT_VERSION = 1;
+
+    RunArray(int initialSize, int curTextLength) {
+
+        fRunStart = new int[initialSize];
+        fCurTextLength = curTextLength;
+        fPosEnd = -1;
+        fNegStart = initialSize;
+        
+        fPosSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fNegSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public RunArray() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunStart);
+        out.writeInt(fCurTextLength);
+        out.writeInt(fPosEnd);
+        out.writeInt(fNegStart);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of RunArray");
+        }
+        fRunStart = (int[]) in.readObject();
+        fCurTextLength = in.readInt();
+        fPosEnd = in.readInt();
+        fNegStart = in.readInt();
+        
+        fPosSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fNegSearch = new FastIntBinarySearch(fRunStart, 0, 1);
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+    public int getCurTextLength() {
+
+        return fCurTextLength;
+    }
+
+    public void setCurTextLength(int curTextLength) {
+
+        fCurTextLength = curTextLength;
+    }
+
+    public void addToCurTextLength(int delta) {
+
+        fCurTextLength += delta;
+    }
+
+    public void runStartsChanged() {
+
+        fPosSearchValid = fNegSearchValid = false;
+    }
+
+/**
+* Returns the index of the last valid run.
+*/
+    int lastRun() {
+
+        return (fNegStart == fRunStart.length)? fPosEnd : fRunStart.length-1;
+    }
+
+/**
+* Returns the length of the run array.  Replaces old fLength member.
+*/
+    int getArrayLength() {
+
+        return fRunStart.length;
+    }
+
+/**
+* Shifts style table such that the last positive run
+* starts before pos.
+*/
+    void shiftTableTo(int pos) {
+
+        int oldPosEnd = fPosEnd;
+
+        while (fPosEnd >= 0 && fRunStart[fPosEnd] >= pos) {
+
+            fNegStart--;
+            fRunStart[fNegStart] = fRunStart[fPosEnd] - fCurTextLength;
+            fPosEnd--;
+
+        }
+
+        pos -= fCurTextLength;
+
+        while (fNegStart<fRunStart.length && fRunStart[fNegStart] < pos) {
+
+            fPosEnd++;
+            fRunStart[fPosEnd] = fRunStart[fNegStart] + fCurTextLength;
+            fNegStart++;
+        }
+
+        if (oldPosEnd != fPosEnd) {
+            fPosSearchValid = fNegSearchValid = false;
+        }
+    }
+
+/**
+* Returns index of style run containing pos.  If first style run starts before
+* pos, -1 is returned.  If pos is greater than text length, lastrun is returned.
+*/
+    int findRunContaining(int pos) {
+
+        FastIntBinarySearch search;
+        final int length = fRunStart.length;
+
+        if (fNegStart < length && (pos-fCurTextLength >= fRunStart[fNegStart])) {
+
+            pos -= fCurTextLength;
+
+            if (!fNegSearchValid) {
+                fNegSearch.setData(fRunStart, fNegStart, length-fNegStart);
+            }
+            search = fNegSearch;
+        }
+        else if (fPosEnd >= 0) {
+
+            if (!fPosSearchValid) {
+                fPosSearch.setData(fRunStart, 0, fPosEnd+1);
+            }
+            search = fPosSearch;
+        }
+        else
+            return -1;
+
+        int run = search.findIndex(pos);
+
+        return run;
+    }
+
+    int getLogicalRunStart(int run) {
+
+        if (run == -1) {
+            return 0;
+        }
+        else if (run == fRunStart.length) {
+            return fCurTextLength;
+        }
+        else {
+            if (run <= fPosEnd) {
+                return fRunStart[run];
+            }
+            else if (run >= fNegStart) {
+                return fRunStart[run] + fCurTextLength;
+            }
+            else {
+                throw new IllegalArgumentException("Illegal run");
+            }
+        }
+    }
+
+/**
+* Increases size of run table.  Current implementation doubles the run table's size.
+*/
+    void expandRunTable() {
+
+        resizeRunTable(fRunStart.length * 2);
+    }
+
+/**
+* Return the minimum number of elements possible in fRunStart.
+*/
+    private int getMinSize() {
+
+        return Math.max(fPosEnd + (fRunStart.length-fNegStart) + 1, 1);
+    }
+
+    void compress() {
+
+        int minSize = getMinSize();
+        if (fRunStart.length > minSize) {
+            resizeRunTable(minSize);
+        }
+    }
+
+    private void resizeRunTable(int newSize) {
+
+        if (newSize < getMinSize()) {
+            throw new IllegalArgumentException("Attempt to make RunArray too small.");
+        }
+
+        final int oldLength = fRunStart.length;
+
+        int newRunStart[] = new int[newSize];
+        System.arraycopy(fRunStart, 0, newRunStart, 0, fPosEnd+1);
+        int newNegStart = newRunStart.length - (oldLength-fNegStart);
+        System.arraycopy(fRunStart, fNegStart, newRunStart, newNegStart, (oldLength-fNegStart));
+
+        fNegStart = newNegStart;
+        fRunStart = newRunStart;
+
+        fPosSearchValid = fNegSearchValid = false;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/StandardTabRuler.java b/src/com/ibm/richtext/styledtext/StandardTabRuler.java
new file mode 100644
index 0000000..6128f58
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StandardTabRuler.java
@@ -0,0 +1,372 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.util.Vector;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+/**
+ * This class is a standard implementation of MTabRuler.
+ * It can have a finite number of client-specified TabStops.  After
+ * the client-specified TabStops, all TabStops have type
+ * <code>TabStop.kAuto</code> and are at the autospace intervals.
+ * @see TabStop
+ */
+public final class StandardTabRuler extends MTabRuler
+                                    implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private static final TabStop AUTO_ZERO = new TabStop(0, TabStop.kAuto);
+
+    private TabStop[] fTabs = null;
+    private int fAutoSpacing = 36; // every 1/2 inch.
+
+    /**
+     * Create a StandardTabRuler with only auto tabs, with spacing of 36.
+     */
+    public StandardTabRuler()
+    {
+    }
+
+    /**
+     * Create a StandardTabRuler with only auto tabs, with the
+     * given autoSpacing.
+     * @param autoSpacing the autoSpacing for this tab ruler
+     */
+    public StandardTabRuler(int autoSpacing)
+    {
+        fAutoSpacing = autoSpacing;
+    }
+
+    /**
+     * Create a StandardTabRuler.  The first TabStops on the ruler will be
+     * the TabStops in the <code>tabs</code> array.  After these tabs all
+     * tabs are auto tabs.
+     * @param tabs an array of TabStops.  The TabStops in the array must
+     *    be in strictly increasing order (of positions), and cannot have
+     *    type <code>TabStop.kAuto</code>.
+     * @param autoSpacing the autoSpacing interval to use after the last
+     *    client-specified tab.
+     */
+    public StandardTabRuler(TabStop[] tabs, int autoSpacing)
+    {
+        if (tabs.length > 0) {
+            validateTabArray(tabs);
+            fTabs = (TabStop[]) tabs.clone();
+        }
+        else {
+            fTabs = null;
+        }
+        fAutoSpacing = autoSpacing;
+    }
+
+    /** Tabs as provided, then autoSpacing after the last tab to eternity.  Use this constructor when
+        munging a ruler, it does no validation on the tabs in the vector. Vector may not be null. */
+
+    /*public*/ StandardTabRuler(Vector v, int autoSpacing)
+    {
+        fTabs = tabArrayFromVector(v);
+        fAutoSpacing = autoSpacing;
+    }
+
+    /** Construct from another ruler. No validation. Ruler may not be null. */
+
+    /*public*/ StandardTabRuler(MTabRuler ruler)
+    {
+        if (ruler == null) {
+            throw new IllegalArgumentException("ruler may not be null");
+        }
+
+        fTabs = tabArrayFromVector(vectorFromTabRuler(ruler));
+        fAutoSpacing = ruler.autoSpacing();
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyledText: " + version);
+        }
+        fTabs = (TabStop[]) in.readObject();
+        fAutoSpacing = in.readInt();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fTabs);
+        out.writeInt(fAutoSpacing);
+    }
+
+    /**
+     * Return first tab in the ruler.  If an autoTab, it is at position zero, and
+     * all subsequent tabs will be autotabs at autoSpacing intervals.
+     */
+    public TabStop firstTab()
+    {
+        if (fTabs != null && fTabs.length > 0) {
+            return fTabs[0];
+        }
+
+        return AUTO_ZERO;
+    }
+
+    /**
+     * Return the first tab in the ruler with fPosition > position.  If it is an
+     * autotab, it is at an increment of autoSpacing, and all subsequent tabs will be
+     * autotabs at autoSpacing intervals.
+     * @param position the position of the TabStop returned will be greater than this parameter
+     */
+    public TabStop nextTab(int position)
+    {
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                if (position < fTabs[i].getPosition())
+                    return fTabs[i];
+            }
+        }
+
+        if (position >= 4000) { // debug: sanity check
+            System.out.println("auto tab past 4000");
+        }
+
+        return new TabStop(((position / fAutoSpacing) + 1) * fAutoSpacing, TabStop.kAuto);
+    }
+
+    /**
+     * Return the interval for autotabs.
+     */
+    public int autoSpacing()
+    {
+        return fAutoSpacing;
+    }
+
+    /**
+     * Compare this to another Object. Returns true if the object
+     * is an MTabRuler with the same autoSpacing and tabs.
+     */
+    public boolean equals(Object o)
+    {
+        if (o == this) {
+            return true;
+        }
+        else if (o == null) {
+            return false;
+        }
+        
+        MTabRuler rhs;
+        try {
+            rhs = (MTabRuler)o;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        if (fAutoSpacing != rhs.autoSpacing())
+            return false;
+
+        TabStop rhsTab = rhs.firstTab();
+
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                if (!fTabs[i].equals(rhsTab))
+                    return false;
+
+                rhsTab = rhs.nextTab(rhsTab.getPosition());
+            }
+        }
+
+        return rhsTab.getType() == TabStop.kAuto;
+    }
+
+    /**
+     * Return debug information about this tab ruler.
+     */
+    public String toString()
+    {
+        StringBuffer buffer = new StringBuffer(super.toString());
+        buffer.append(" auto: ");
+        buffer.append(Integer.toString(fAutoSpacing));
+
+        if (fTabs != null) {
+            for (int i = 0; i < fTabs.length; ++i) {
+                buffer.append(fTabs[i].toString());
+            }
+        }
+
+        return buffer.toString();
+    }
+
+    /** Utility to convert a vector of tabs to an array. */
+
+    private static TabStop[] tabArrayFromVector(Vector v)
+    {
+        int count = v.size();
+        TabStop[] tabs = new TabStop[count];
+        for (int i = 0; i < count; ++i) {
+            tabs[i] = (TabStop)v.elementAt(i);
+        }
+
+        return tabs;
+    }
+
+    /** Utility to convert a ruler to a vector of tabs, for munging. */
+
+    private static Vector vectorFromTabRuler(MTabRuler ruler)
+    {
+        Vector v = new Vector();
+        for (TabStop tab = ruler.firstTab(); tab != null && tab.getType() != TabStop.kAuto; tab = ruler.nextTab(tab.getPosition())) {
+            v.addElement(tab);
+        }
+
+        return v;
+    }
+
+    /** Utility to validate an array of tabs.  The array must not be null, must not contain null
+        entries, must not be kAuto, and positions must in increasing order. */
+
+    private static void validateTabArray(TabStop[] tabs)
+    {
+        int pos = Integer.MIN_VALUE;
+        for (int i = 0; i < tabs.length; ++i) {
+            if (tabs[i].getType() == TabStop.kAuto) {
+                throw new IllegalArgumentException("can't explicitly specify an auto tab.");
+            }
+            int nextpos = tabs[i].getPosition();
+            if (nextpos <= pos) {
+                throw new IllegalArgumentException("tab positions must be in increasing order.");
+            }
+            pos = nextpos;
+        }
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * given tab added.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the additional tab.  <code>ruler</code> is not modified.
+     * @param tabToAdd the tab to add to the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler addTabToRuler(MTabRuler ruler, TabStop tabToAdd)
+    {
+        if (ruler == null || tabToAdd == null)
+            throw new IllegalArgumentException("ruler and tabToAdd may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean added = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!added && pos >= tabToAdd.getPosition()) {
+                if (pos == tabToAdd.getPosition())
+                    tab = null;
+                vector.addElement(tabToAdd);
+                added = true;
+            }
+
+            if (tab != null)
+                vector.addElement(tab);
+        }
+        if (!added)
+            vector.addElement(tabToAdd);
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * given tab removed.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the removed tab.  <code>ruler</code> is not modified.
+     * @param position the position of the tab to remove from the new tab ruler
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler removeTabFromRuler(MTabRuler ruler, int position)
+    {
+        if (ruler == null)
+            throw new IllegalArgumentException("ruler may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean removed = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!removed && pos >= position) {
+                if (pos == position) {
+                    removed = true;
+                    continue; // skip this tab and continue with the remainder
+                }
+                break; // we didn't remove a tab, but skipped position, so don't bother with the rest
+            }
+
+            vector.addElement(tab);
+        }
+        if (!removed) // no change
+            return ruler;
+
+        if (vector.size() == 0)
+            return new StandardTabRuler(ruler.autoSpacing());
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+    /**
+     * Return a tab ruler identical to the given ruler, except with the
+     * tab at position <code>fromPosition</code> moved to position
+     * <code>toPosition</code>.
+     * @param ruler the original ruler.  The MTabRuler will be the same as
+     *   this except for the moved tab.  <code>ruler</code> is not modified.
+     * @param fromPosition the position of the tab to move
+     * @param toPosition the new position of the tab
+     * @return an MTabRuler resulting from this operation
+     */
+    /*public*/ static MTabRuler moveTabOnRuler(MTabRuler ruler, int fromPosition, int toPosition)
+    {
+        if (ruler == null)
+            throw new IllegalArgumentException("ruler may not be null");
+
+        Vector vector = new Vector();
+
+        int pos = 0;
+        boolean moved = false;
+        for (TabStop tab = ruler.firstTab(); tab.getType() != TabStop.kAuto; tab = ruler.nextTab(pos)) {
+            pos = tab.getPosition();
+
+            if (!moved && pos == fromPosition) {
+                moved = true;
+                tab = new TabStop(toPosition, tab.getType()); // copy it
+            }
+
+            vector.addElement(tab);
+        }
+        if (!moved) // no change
+            return ruler;
+
+        return new StandardTabRuler(vector, ruler.autoSpacing());
+    }
+
+}
diff --git a/src/com/ibm/richtext/styledtext/StyleBuffer.java b/src/com/ibm/richtext/styledtext/StyleBuffer.java
new file mode 100644
index 0000000..fd5aca9
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyleBuffer.java
@@ -0,0 +1,669 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/*
+    8/2/96
+        Added setIteratorUsingRun method
+
+    8/5/96
+        No longer has to be constructed with an MText.
+
+    8/8/96
+        Added replace method, which reads styles from a StyleRunIterator.
+        Also, added a constructor which takes a StyleRunIterator.
+        These methods are for copy/paste support.
+    8/16/96
+        StyleBuffer now takes MConstText instead of MText where possible.
+
+    10/23/96
+        Some old commented-out code removed for aesthetic reasons.
+
+    7/31/98 Switched to AttributeMap
+*/
+
+/**
+* StyleBuffer implements <tt>MStyleBuffer</tt>.  It maintains
+* <tt>AttributeMap</tt> objects to apply to the text in an <tt>MText</tt> object,
+* and the
+* intervals on which those styles apply.
+* <p>
+* StyleBuffer stores the intervals on which styles apply in a <tt>RunArray</tt>
+* object (see <tt>RunArray</tt> for more information).  The styles are stored in
+* an array of <tt>AttributeMap</tt> objects.
+* <p>
+* <tt>RunArray</tt> maintains an array of integers which represent offsets into text.
+* The array has a "positive" region in which offsets are given as positive distances
+* from the start of the text, and a "negative" region in which offsets are given as
+* negative distances from the end of the text.  Between the positive and negative regions
+* is a gap, into which new offsets may be inserted.  This storage scheme allows for
+* efficient response to a series of editing operations which occur in the same area of the
+* text.
+* <p>
+* StyleBuffer uses the offsets in <tt>RunArray</tt> as the boundaries of style runs.
+* A style run begins at each offset in <tt>RunArray</tt>, and each style run continues to
+* the next offset.  The style array is kept in sync with the array of offsets in <tt>RunArray</tt>;
+* that is, the style which begins at RunArray[i] is stored in StyleArray[i].
+* <p>
+* The first entry in the <tt>RunArray</tt> is always 0.
+*
+* @author John Raley
+*
+* @see AttributeMap
+* @see MText
+* @see RunArray
+*/
+
+final class StyleBuffer extends MStyleBuffer implements Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Creates a new style buffer with length equal to the length of <tt>text</tt>,
+    * and with a single run of <tt>defaultStyle</tt>.
+    */
+    private static final long serialVersionUID = 22356934;
+
+    private static final int CURRENT_VERSION = 1;
+    private static final int kInitialSize = 10;
+    private RunArray fRunArray;
+
+    private AttributeMap fStyleTable[];
+
+    StyleBuffer(MConstText text, AttributeMap initialStyle) {
+
+        this(text.length(), initialStyle);
+    }
+
+    /**
+    * Creates a new style buffer with length <tt>initialLength</tt> and with a
+    * single run of <tt>defaultStyle</tt>.
+    */
+
+    StyleBuffer(int initialLength, AttributeMap initialStyle) {
+
+        fRunArray = new RunArray(kInitialSize, initialLength);
+        fRunArray.fPosEnd = 0;
+        fRunArray.fRunStart[0] = 0;
+
+        fStyleTable = new AttributeMap[kInitialSize]; // do I really want to do this???
+
+        fStyleTable[0] = initialStyle;
+    }
+
+    /**
+     * Note: this constructor is ONLY for use by the Serialization
+     * mechanism.  It does not leave this object in a valid state!
+     */
+    public StyleBuffer() {
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        compress();
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fRunArray);
+        out.writeObject(fStyleTable);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                                ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyleBuffer");
+        }
+        fRunArray = (RunArray) in.readObject();
+        fStyleTable = (AttributeMap[]) in.readObject();
+    }
+
+/**
+* Shift style and run tables such that the last positive run begins before the given position.
+* Since there is always a run start at 0, this method ensures that the first run will not be shifted.
+* This is called by: <tt>insertText</tt> and <tt>deleteText</tt>.
+* @param pos a position in the text.
+*/
+
+    private void shiftTableTo(int pos) {
+
+        if (pos == 0)
+            pos = 1;
+
+        int oldNegStart = fRunArray.fNegStart;
+        int oldPosEnd = fRunArray.fPosEnd;
+
+        fRunArray.shiftTableTo(pos);
+
+        if (oldPosEnd > fRunArray.fPosEnd)
+            System.arraycopy(fStyleTable, fRunArray.fPosEnd+1,
+                             fStyleTable, fRunArray.fNegStart,
+                             oldPosEnd-fRunArray.fPosEnd);
+        else if (oldNegStart < fRunArray.fNegStart)
+            System.arraycopy(fStyleTable, oldNegStart,
+                             fStyleTable, oldPosEnd+1,
+                             fRunArray.fNegStart-oldNegStart);
+    }
+
+/**
+* Update the style table to reflect a change in the RunArray's size.
+*/
+    private void handleArrayResize(int oldNegStart) {
+
+        AttributeMap newStyleTable[] = new AttributeMap[fRunArray.getArrayLength()];
+        System.arraycopy(fStyleTable, 0, newStyleTable, 0, fRunArray.fPosEnd+1);
+        System.arraycopy(fStyleTable, oldNegStart, newStyleTable, fRunArray.fNegStart, (fRunArray.getArrayLength()-fRunArray.fNegStart));
+        fStyleTable = newStyleTable;
+    }
+
+/**
+* Minimize the amount of storage used by this object.
+*/
+    void compress() {
+
+        int oldNegStart = fRunArray.fNegStart;
+        fRunArray.compress();
+        if (fRunArray.fNegStart != oldNegStart) {
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/**
+* Increase the storage capacity of the style and run tables if no room remains.
+*/
+    private void expandStyleTableIfFull() {
+
+        if (fRunArray.fPosEnd + 1 == fRunArray.fNegStart) {
+
+            int oldNegStart = fRunArray.fNegStart;
+            fRunArray.expandRunTable();
+            handleArrayResize(oldNegStart);
+        }
+    }
+
+/*
+    public MStyleRunIterator createStyleRunIterator(int start, int limit) {
+
+        return new StyleRunIterator(start, limit);
+    }
+*/
+/**
+* Respond to an insertion in the text.  The length of the last style run which
+* begins before <tt>start</tt> is increased by <tt>length</tt>.  The run table
+* is shifted such that the run into which text was inserted is the last positive run.
+* This implementation assumes that all styles propogate.
+* @param start the offset where the insertion began
+* @param length the number of characters inserted
+*/
+    public void insertText(int start, int limit) {
+
+        shiftTableTo(start);
+        fRunArray.addToCurTextLength(limit - start);
+    }
+
+/**
+* Respond to a deletion in the text.  The last style run before
+* <tt>start</tt> is truncated to end at <tt>start</tt>.  The
+* style run containing (<tt>start</tt>+<tt>length</tt>) is set to begin
+* at (<tt>start</tt>+<tt>length</tt>).  Runs in between are deleted.
+* If the deletion occurs entirely within one style run, the length of the style
+* run is reduced by <tt>length</tt>.
+* This implementation assumes that all styles propogate.
+* This method shifts the run table such that the run in which the delete began
+* is the last positive run.  Other methods depend on this "side effect".
+* @param start the offset where the deletion began
+* @param length the offset where the deletion stopped
+*/
+    public void deleteText(int start, int limit) {
+
+        int length = limit - start;
+
+        // An optimization - if a whole run wasn't deleted we don't
+        // need to check for run merging, which could be expensive.
+        boolean wholeRunDeleted = false;
+
+        shiftTableTo(start);
+
+        int firstRunLimit = fRunArray.getCurTextLength();
+        if (fRunArray.fNegStart < fRunArray.getArrayLength())
+            firstRunLimit += fRunArray.fRunStart[fRunArray.fNegStart];
+
+        if (limit == fRunArray.getCurTextLength()) {
+            fRunArray.fNegStart = fRunArray.getArrayLength();
+        }
+        else if (limit >= firstRunLimit) {
+
+            int end = fRunArray.findRunContaining(limit);
+            if (end != fRunArray.fPosEnd) {
+                fRunArray.fRunStart[end] = limit - fRunArray.getCurTextLength();
+                fRunArray.fNegStart = end;
+                wholeRunDeleted = true;
+            }
+        }
+
+        if (fRunArray.fNegStart != fRunArray.getArrayLength()) {
+            if (start == 0 && limit >= firstRunLimit) {
+                // the first style run was deleted;  move first "negative" run into
+                // first position
+                fStyleTable[0] = fStyleTable[fRunArray.fNegStart++];
+            }
+            else if (wholeRunDeleted) {
+                if (fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd])) {
+                    // merge style runs
+                    fRunArray.fNegStart++;
+                }
+            }
+        }
+
+        fRunArray.addToCurTextLength(-length);
+
+        fRunArray.runStartsChanged();
+        //System.out.println("In deleteText:  number of style runs = " + numRuns(this));
+    }
+
+/**
+* Arrange style table so that old styles in the provided range are removed, and
+* new styles can be inserted into the insertion gap.
+* After calling this method, new style starts and styles may be placed
+* in the insertion gaps of fRunArray.fStyleStart and fStyleTable.
+* @param start offset in the text where insertion operation begins
+* @param limit offset in the text where previous styles resume
+*/
+    private void prepareStyleInsert(int start) {
+
+        if (start == 0) {
+
+            // fRunArray.fPosEnd should be 0 if we're in this branch.
+
+            if (fRunArray.getCurTextLength() > 0) {
+
+                /* Move first existing style run to negative end of buffer.
+                   Don't do this if length==0;  that is, if there is no real
+                   style run at 0.
+                 */
+
+                fRunArray.fNegStart--;
+                fStyleTable[fRunArray.fNegStart] = fStyleTable[0];
+                fRunArray.fRunStart[fRunArray.fNegStart] = -fRunArray.getCurTextLength();
+            }
+
+            fRunArray.fPosEnd = -1;
+        }
+        else {
+
+            // consistency check: start should be in current gap
+            if (fRunArray.fRunStart[fRunArray.fPosEnd] >= start) {
+                throw new Error("Inconsistent state!  Start should be within insertion gap.");
+            }
+
+            int endOfInsertionGap = fRunArray.getCurTextLength();
+            if (fRunArray.fNegStart < fRunArray.getArrayLength()) {
+                endOfInsertionGap += fRunArray.fRunStart[fRunArray.fNegStart];
+            }
+
+            if (endOfInsertionGap < start) {
+                throw new Error("Inconsistent state!  Start should be within insertion gap.");
+            }
+
+            // if no break at start (on negative end of buffer) make one
+
+            if (endOfInsertionGap != start) {
+
+                // split style run in insertion gap
+
+                expandStyleTableIfFull();
+
+                fRunArray.fNegStart--;
+                fStyleTable[fRunArray.fNegStart] = fStyleTable[fRunArray.fPosEnd];
+                fRunArray.fRunStart[fRunArray.fNegStart] = start - fRunArray.getCurTextLength();
+
+                //System.out.println("splitting run.");
+            }
+        }
+    }
+
+    public boolean modifyStyles(int start,
+                                int limit,
+                                StyleModifier modifier,
+                                int[] damagedRange) {
+
+        if (limit == start) {
+            return false;
+        }
+
+        shiftTableTo(start);
+
+        int currentRunStart = start;
+        AttributeMap oldStyle;
+        AttributeMap mergeStyle = fStyleTable[fRunArray.fPosEnd];
+
+        if (fRunArray.fNegStart < fRunArray.getArrayLength() &&
+                fRunArray.fRunStart[fRunArray.fNegStart]+fRunArray.getCurTextLength() == start) {
+
+            oldStyle = fStyleTable[fRunArray.fNegStart];
+            ++fRunArray.fNegStart;
+        }
+        else {
+            oldStyle = mergeStyle;
+        }
+
+        boolean modifiedAnywhere = false;
+        for(;;) {
+
+            boolean modified = false;
+
+            // push new style into gap on positive side
+            AttributeMap newStyle = modifier.modifyStyle(oldStyle);
+            if (damagedRange != null && !newStyle.equals(oldStyle)) {
+                modified = modifiedAnywhere = true;
+                damagedRange[0] = Math.min(currentRunStart, damagedRange[0]);
+            }
+
+            if (!newStyle.equals(mergeStyle)) {
+
+                if (currentRunStart != 0) {
+                    expandStyleTableIfFull();
+                    ++fRunArray.fPosEnd;
+                }
+
+                fStyleTable[fRunArray.fPosEnd] = newStyle;
+                fRunArray.fRunStart[fRunArray.fPosEnd] = currentRunStart;
+            }
+
+            mergeStyle = newStyle;
+
+            int nextRunStart = fRunArray.getLogicalRunStart(fRunArray.fNegStart);
+
+            if (limit > nextRunStart) {
+                oldStyle = fStyleTable[fRunArray.fNegStart];
+                currentRunStart = nextRunStart;
+                if (modified) {
+                    damagedRange[1] = Math.max(currentRunStart, damagedRange[1]);
+                }
+                ++fRunArray.fNegStart;
+            }
+            else {
+                if (limit < nextRunStart && !oldStyle.equals(mergeStyle)) {
+                    expandStyleTableIfFull();
+                    ++fRunArray.fPosEnd;
+                    fStyleTable[fRunArray.fPosEnd] = oldStyle;
+                    fRunArray.fRunStart[fRunArray.fPosEnd] = limit;
+                }
+                if (modified) {
+                    damagedRange[1] = Math.max(limit, damagedRange[1]);
+                }
+                break;
+            }
+        }
+
+        // merge last run if needed
+        if ((fRunArray.fNegStart < fRunArray.getArrayLength()) &&
+                    (fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd]))) {
+            fRunArray.fNegStart++;
+        }
+
+        fRunArray.runStartsChanged();
+
+        return modifiedAnywhere;
+    }
+
+    public int styleStart(int pos) {
+
+        if (pos == fRunArray.getCurTextLength()) {
+            return pos;
+        }
+
+        return fRunArray.getLogicalRunStart(fRunArray.findRunContaining(pos));
+    }
+
+    public int styleLimit(int pos) {
+
+        if (pos == fRunArray.getCurTextLength()) {
+            return pos;
+        }
+
+        int run = fRunArray.findRunContaining(pos);
+
+        if (run == fRunArray.fPosEnd) {
+            run = fRunArray.fNegStart;
+        }
+        else {
+            ++run;
+        }
+
+        return fRunArray.getLogicalRunStart(run);
+    }
+
+/**
+* Return style at location <tt>pos</tt>.
+* @param pos an offset into the text
+* @returns the style of the character at <tt>offset</tt>
+*/
+    public AttributeMap styleAt(int pos) {
+
+        return fStyleTable[ fRunArray.findRunContaining(pos) ];
+    }
+
+/*
+* Set run start, run length, and run value in an iterator.  This method is
+* only called by a <tt>StyleRunIterator</tt>.
+* @param pos an offset into the text.  The iterator's run start and run limit are
+* set to the run containing <tt>pos</tt>.
+* @param iter the iterator to set
+*/
+    void setIterator(int pos, StyleRunIterator iter) {
+
+        if ((pos < 0) || (pos > fRunArray.getCurTextLength())) {
+
+            iter.set(null, 0, 0, kNoRun);
+            return;
+        }
+
+        int run = fRunArray.findRunContaining(pos);
+
+        setIteratorUsingRun(run, iter);
+    }
+
+/**
+* Set run start, run length, and run value in an iterator.  This method is
+* only called by a <tt>StyleRunIterator</tt>.
+* @param run the index of the run to which the iterator should be set
+* @param iter the iterator to set
+*/
+    private void setIteratorUsingRun(int run, StyleRunIterator iter) {
+
+        int lastValidRun = fRunArray.lastRun();
+
+        if (run < 0 || run > lastValidRun) {
+
+            iter.set(null, 0, 0, kNoRun);
+            return;
+        }
+
+        if (run == fRunArray.fPosEnd+1)
+            run = fRunArray.fNegStart;
+        else if (run == fRunArray.fNegStart-1)
+            run = fRunArray.fPosEnd;
+
+        int runStart = fRunArray.fRunStart[run];
+        if (runStart < 0)
+            runStart += fRunArray.getCurTextLength();
+
+        AttributeMap style = fStyleTable[run];
+
+        int nextRun;
+
+        if (run == fRunArray.fPosEnd)
+            nextRun = fRunArray.fNegStart;
+        else
+            nextRun = run + 1;
+
+        int runLimit;
+
+        if (nextRun >= fRunArray.getArrayLength())
+            runLimit = fRunArray.getCurTextLength();
+        else {
+            runLimit = fRunArray.fRunStart[nextRun];
+            if (runLimit < 0)
+                runLimit += fRunArray.getCurTextLength();
+        }
+
+        //System.out.println("setIterator: pos="+pos+", runStart="+runStart+", runLimit="+runLimit+
+        //                  ", run="+run+", fPosEnd="+fPosEnd);
+
+        iter.set(style, runStart, runLimit, run);
+    }
+
+    public void replace(int start, int limit, MConstText srcText, int srcStart, int srcLimit)
+    {
+        deleteText(start, limit);
+        if (srcStart == srcLimit)
+            return;
+        prepareStyleInsert(start);
+        for (int j2 = srcStart; j2 < srcLimit; j2 = srcText.characterStyleLimit(j2))
+        {
+            AttributeMap attributeMap = srcText.characterStyleAt(j2);
+            if (fRunArray.fPosEnd < 0 || !fStyleTable[fRunArray.fPosEnd].equals(attributeMap))
+            {
+                expandStyleTableIfFull();
+                fRunArray.fPosEnd++;
+                fRunArray.fRunStart[fRunArray.fPosEnd] = j2 - srcStart + start;
+                fStyleTable[fRunArray.fPosEnd] = attributeMap;
+            }
+        }
+        fRunArray.addToCurTextLength(srcLimit - srcStart);
+        if (fRunArray.fNegStart < fRunArray.getArrayLength() && fStyleTable[fRunArray.fNegStart].equals(fStyleTable[fRunArray.fPosEnd]))
+            fRunArray.fNegStart++;
+    }
+
+    private  static final int kNoRun = -42; // iterator use
+
+    private final class StyleRunIterator /*implements MStyleRunIterator*/ {
+
+        StyleRunIterator(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void reset(int start, int limit, int pos)
+        {
+            fStart = start;
+            fLimit = limit;
+            setIterator(fStart, this);
+        }
+
+        public boolean isValid()
+        {
+            return fStyle != null;
+        }
+
+        public void next()
+        {
+            if (fRunLimit < fLimit) {
+                fCurrentRun++;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(null, 0, 0, kNoRun);
+        }
+
+        public void prev()
+        {
+            if (fRunStart > fStart) {
+                fCurrentRun--;
+                setIteratorUsingRun(fCurrentRun, this);
+            }
+            else
+                set(null, 0, 0, kNoRun);
+        }
+
+        public void set(int pos)
+        {
+            if (pos >= fStart && pos < fLimit) {
+                setIterator(pos, this);
+            } else {
+                set(null, 0, 0, kNoRun);
+            }
+        }
+
+        void set(AttributeMap style, int start, int limit, int currentRun)
+        {
+            fStyle = style;
+            fCurrentRun = currentRun;
+            fRunStart = start < fStart ? fStart : start;
+            fRunLimit = limit > fLimit ? fLimit : limit;
+        }
+
+        public void reset(int start, int limit)
+        {
+            reset(start, limit, start);
+        }
+
+        public void first()
+        {
+            set(fStart);
+        }
+
+        public void last()
+        {
+            set(fLimit - 1);
+        }
+
+        public int rangeStart()
+        {
+            return fStart;
+        }
+
+        public int rangeLimit()
+        {
+            return fLimit;
+        }
+
+        public int rangeLength()
+        {
+            return fLimit - fStart;
+        }
+
+        public AttributeMap style()
+        {
+            return fStyle;
+        }
+
+        public int runStart()
+        {
+            return fRunStart;
+        }
+
+        public int runLimit()
+        {
+            return fRunLimit;
+        }
+
+        public int runLength()
+        {
+            return fRunLimit - fRunStart;
+        }
+
+        private int fStart;
+        private int fLimit;
+        private AttributeMap fStyle;
+        private int fRunStart;
+        private int fRunLimit;
+        private int fCurrentRun;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/StyleModifier.java b/src/com/ibm/richtext/styledtext/StyleModifier.java
new file mode 100644
index 0000000..0160245
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyleModifier.java
@@ -0,0 +1,190 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+
+/**
+ * StyleModifier is the base class for operations on AttributeMap.  To implement
+ * an operation on AttributeMap, subclass StyleModifier and override
+ * <code>modifyStyle</code>.  StyleModifiers are used by MText.
+ * <p>
+ * For convenience, this class contains factory methods which will create a
+ * StyleModifier for
+ * certain common operations: attribute union, attribute removal, and AttributeMap
+ * replacement.
+ * @see AttributeMap
+ * @see AttributeSet
+ * @see MText
+ */
+/*
+ * {jbr} StyleModifier is not the best name for this class - styles are immutable and never
+ * really modified.
+ */
+public class StyleModifier
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Create a StyleModifier.
+     */
+    protected StyleModifier() {
+    }
+
+    /**
+     * Return the result of this StyleModifier's operation on the given style.
+     * Default implementation just returns the given style.
+     * @param style the AttributeMap to perform the operation on
+     */
+    public AttributeMap modifyStyle(AttributeMap style)
+    {
+        return style;
+    }
+
+    /**
+     * A StyleModifier which simply returns the given style.
+     */
+    public static final StyleModifier IDENTITY = new StyleModifier();
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.addAttributes(s)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param s the AttributeMap to union with
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createAddModifier(AttributeMap s) {
+
+        return new StyleAddModifier(s);
+    }
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.addAttribute(key, value)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param key the key to add
+     * @param value the value to add
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createAddModifier(Object key,
+                                                  Object value) {
+
+        return new AttributeAddModifier(key, value);
+    }
+
+    /**
+     * Create a StyleModifier whose operation returns <code>s</code>,
+     * ignoring the parameter to <code>modifyStyle</code>.
+     * @param s the AttributeMap which will replace any other AttributeMap
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createReplaceModifier(AttributeMap s) {
+
+        return new StyleReplaceModifier(s);
+    }
+
+    /**
+     * Create a StyleModifier whose operation is
+     * <code>style.removeAttributes(s)</code>,
+     * where <code>style</code> is the AttributeMap passed to
+     * <code>modifyStyle</code>.
+     * @param s the AttributeSet of attributes to remove
+     * @return a StyleModifier for this operation
+     */
+    public static StyleModifier createRemoveModifier(AttributeSet s) {
+
+        return new StyleRemoveModifier(s);
+    }
+
+    static final class AttributeAddModifier extends StyleModifier {
+
+        private Object fKey;
+        private Object fValue;
+
+        public AttributeAddModifier(Object key, Object value) {
+
+            fKey = key;
+            fValue = value;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.addAttribute(fKey, fValue);
+        }
+    }
+
+    /**
+     * Create this with the styles to add.  These styles will add to and override any already
+     * present in the style passed to modifyStyle.
+     */
+    static final class StyleAddModifier extends StyleModifier
+    {
+        private AttributeMap fStyle;
+
+        public StyleAddModifier(AttributeMap style)
+        {
+            if (style == null) {
+                throw new IllegalArgumentException("style is null");
+            }
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style)
+        {
+            return style.addAttributes(fStyle);
+        }
+    }
+
+    /**
+     * Create this with the styles to replace.  All style runs will have only these
+     * styles.
+     */
+    static final class StyleReplaceModifier extends StyleModifier
+    {
+        private AttributeMap fStyle;
+
+        public StyleReplaceModifier(AttributeMap style)
+        {
+            if (style == null) {
+                throw new IllegalArgumentException("style is null");
+            }
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style)
+        {
+            return fStyle;
+        }
+    }
+
+    static final class StyleRemoveModifier extends StyleModifier {
+
+        private AttributeSet fRemoveSet;
+
+        public StyleRemoveModifier(AttributeSet removeSet) {
+
+            if (removeSet == null) {
+                throw new IllegalArgumentException("set is null");
+            }
+            fRemoveSet = removeSet;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.removeAttributes(fRemoveSet);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/StyledText.java b/src/com/ibm/richtext/styledtext/StyledText.java
new file mode 100644
index 0000000..7de6f57
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/StyledText.java
@@ -0,0 +1,684 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+import java.text.CharacterIterator;
+
+/**
+ * This class is an implementation of MText, a modifyable, styled text
+ * storage model.  Additionally, it supports persistance through the
+ * Externalizable interface.
+ * @see MText
+ */
+
+/*
+    10/28/96 {jf} - split the character and paragraph style access and setter function around...
+            just to keep things interesting.
+    8/7/96 {jf} - moved paragraph break implementation from AbstractText into Style text.
+            - added countStyles, getStyles, and ReplaceStyles implementation.
+
+    8/14/96 sfb  eliminated StyleSheetIterator
+
+    8/29/96 {jbr} changed iter-based replace method - doesn't call at() unless it is safe to do so
+            Also, added checkStartAndLimit for debugging
+
+    7/31/98 Switched from Style to AttributeMap
+
+*/
+
+public final class StyledText extends MText implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    /* unicode storage */
+    private MCharBuffer         fCharBuffer;
+    /* character style storage */
+    private MStyleBuffer        fStyleBuffer;
+    /* paragraph style storage */
+    private MParagraphBuffer    fParagraphBuffer;
+
+    private transient int fTimeStamp = 0;
+    private transient int[] fDamagedRange = { Integer.MAX_VALUE,
+                                              Integer.MIN_VALUE };
+
+    private static class ForceModifier extends StyleModifier {
+
+        private AttributeMap fStyle = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+        void setStyle(AttributeMap style) {
+
+            fStyle = style;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return fStyle;
+        }
+    }
+
+    // Keep this around foruse in replaceCharStylesWith.  OK since
+    // this class isn't threadsafe anyway.
+    private transient ForceModifier forceModifier = null;
+
+    //======================================================
+    // CONSTRUCTORS
+    //======================================================
+    /**
+     * Create an empty text object.
+     */
+    public StyledText()
+    {
+        this(0);
+    }
+
+    /**
+     * Create an empty text object ready to hold at least capacity chars.
+     * @param capacity the minimum capacity of the internal text buffer
+     */
+    public StyledText(int capacity)
+    {
+        fCharBuffer         = capacity>0? new CharBuffer(capacity) : new CharBuffer();
+        fStyleBuffer        = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fParagraphBuffer    = new ParagraphBuffer(fCharBuffer);
+    }
+
+    /**
+     * Create a text object with the characters in the string,
+     * in the given style.
+     * @param string the initial contents
+     * @param initialStyle the style of the initial text
+     */
+    public StyledText(String string, AttributeMap initialStyle)
+    {
+        fCharBuffer = new CharBuffer(string.length());
+        fCharBuffer.replace(0, 0, string, 0, string.length());
+
+        fStyleBuffer = new StyleBuffer(this, initialStyle);
+        fParagraphBuffer = new ParagraphBuffer(fCharBuffer);
+    }
+
+    /**
+     * Create a text object from the given source.
+     * @param source the text to copy
+     */
+    public StyledText(MConstText source) {
+        this();
+        append(source);
+    }
+    
+    /**
+     * Create a text object from a subrange of the given source.
+     * @param source the text to copy from
+     * @param srcStart the index of the first character to copy
+     * @param srcLimit the index after the last character to copy
+     */
+    public StyledText(MConstText source, int srcStart, int srcLimit) {
+        this();
+        replace(0, 0, source, srcStart, srcLimit);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeObject(fCharBuffer);
+        out.writeObject(fStyleBuffer);
+        out.writeObject(fParagraphBuffer);
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyledText: " + version);
+        }
+        fCharBuffer = (MCharBuffer) in.readObject();
+        fStyleBuffer = (MStyleBuffer) in.readObject();
+        fParagraphBuffer = (MParagraphBuffer) in.readObject();
+
+        resetDamagedRange();
+    }
+
+    //======================================================
+    // MConstText INTERFACES
+    //======================================================
+
+    //--------------------------------------------------------
+    // character access
+    //--------------------------------------------------------
+/**
+* Return the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the character at offset <code>pos</code>
+*/
+    public char at(int pos)
+    {
+        return fCharBuffer.at(pos);
+    }
+
+/**
+* Copy the characters in the range [<code>start</code>, <code>limit</code>)
+* into the array <code>dst</code>, beginning at <code>dstStart</code>.
+* @param start offset of first character which will be copied into the array
+* @param limit offset immediately after the last character which will be copied into the array
+* @param dst array in which to copy characters.  The length of <code>dst</code> must be at least
+* (<code>dstStart + limit - start</code>).
+*/
+    public void extractChars(int start, int limit, char[] dst, int dstStart)
+    {
+        fCharBuffer.at(start, limit, dst, dstStart);
+    }
+
+    //-------------------------------------------------------
+    // text model creation
+    //-------------------------------------------------------
+/**
+* Create an MConstText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public MConstText extract(int start, int limit)
+    {
+        return extractWritable(start, limit);
+    }
+
+/**
+* Create an MText containing the characters and styles in the range
+* [<code>start</code>, <code>limit</code>).
+* @param start offset of first character in the new text
+* @param limit offset immediately after the last character in the new text
+* @return an MConstText object containing the characters and styles in the given range
+*/
+    public MText extractWritable(int start, int limit)
+    {
+        MText text = new StyledText();
+        text.replace(0, 0, this, start, limit);
+        text.resetDamagedRange();
+        return text;
+    }
+
+    //--------------------------------------------------------
+    // size/capacity
+    //--------------------------------------------------------
+/**
+* Return the length of the MConstText object.  The length is the number of characters in the text.
+* @return the length of the MConstText object
+*/
+    public int length()
+    {
+        return fCharBuffer.length();
+    }
+
+/**
+* Create a <code>CharacterIterator</code> over the range [<code>start</code>, <code>limit</code>).
+* @param start the beginning of the iterator's range
+* @param limit the limit of the iterator's range
+* @return a valid <code>CharacterIterator</code> over the specified range
+* @see java.text.CharacterIterator
+*/
+    public CharacterIterator createCharacterIterator(int start, int limit)
+    {
+        return fCharBuffer.createCharacterIterator(start, limit);
+    }
+
+    //--------------------------------------------------------
+    // character styles
+    //--------------------------------------------------------
+
+/**
+* Return the index of the first character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public int characterStyleStart(int pos) {
+
+        checkPos(pos, LESS_THAN_LENGTH);
+        return fStyleBuffer.styleStart(pos);
+    }
+
+/**
+* Return the index after the last character in the character style run
+* containing pos.  All characters in a style run have the same character
+* style.
+* @return the style at offset <code>pos</code>
+*/
+    public int characterStyleLimit(int pos) {
+
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fStyleBuffer.styleLimit(pos);
+    }
+
+/**
+* Return the style applied to the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the style at offset <code>pos</code>
+*/
+    public AttributeMap characterStyleAt(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fStyleBuffer.styleAt(pos);
+    }
+
+    //--------------------------------------------------------
+    // paragraph boundaries and styles
+    //--------------------------------------------------------
+/**
+* Return the start of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the start of the paragraph containing the character at offset <code>pos</code>
+*/
+    public int paragraphStart(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphStart(pos);
+    }
+
+/**
+* Return the limit of the paragraph containing the character at offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the limit of the paragraph containing the character at offset <code>pos</code>
+*/
+    public int paragraphLimit(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphLimit(pos);
+    }
+
+/**
+* Return the paragraph style applied to the paragraph containing offset <code>pos</code>.
+* @param pos a valid offset into the text
+* @return the paragraph style in effect at <code>pos</code>
+*/
+    public AttributeMap paragraphStyleAt(int pos)
+    {
+        checkPos(pos, NOT_GREATER_THAN_LENGTH);
+        return fParagraphBuffer.paragraphStyleAt(pos);
+    }
+
+/**
+* Return the current time stamp.  The time stamp is
+* incremented whenever the contents of the MConstText changes.
+* @return the current paragraph style time stamp
+*/
+    public int getTimeStamp() {
+
+        return fTimeStamp;
+    }
+
+    //======================================================
+    // MText INTERFACES
+    //======================================================
+    //--------------------------------------------------------
+    // character modfication functions
+    //--------------------------------------------------------
+
+    private void updateDamagedRange(int deleteStart,
+                                    int deleteLimit,
+                                    int insertLength) {
+
+        fDamagedRange[0] = Math.min(fDamagedRange[0], deleteStart);
+
+        if (fDamagedRange[1] >= deleteLimit) {
+            int lengthChange = insertLength - (deleteLimit-deleteStart);
+            fDamagedRange[1] += lengthChange;
+        }
+        else {
+            fDamagedRange[1] = deleteStart + insertLength;
+        }
+    }
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param text the source for the new characters and styles
+* @param srcStart the offset into <code>srcText</code> where new characters and styles will be obtained
+* @param srcLimit the offset into <code>srcText</code> where the new characters and styles end
+*/
+    public void replace(int start, int limit, MConstText text, int srcStart, int srcLimit)
+    {
+        if (text == this) {
+            text = new StyledText(text);
+        }
+
+        if (start == limit && srcStart == srcLimit) {
+            return;
+        }
+
+        checkStartLimit(start, limit);
+
+        updateDamagedRange(start, limit, srcLimit-srcStart);
+
+        fCharBuffer.replace(start, limit, text, srcStart, srcLimit);
+        fStyleBuffer.replace(start, limit, text, srcStart, srcLimit);
+        fParagraphBuffer.replace(start, limit, text, srcStart, srcLimit, fDamagedRange);
+        fTimeStamp += 1;
+    }
+
+/**
+* Replace the characters and styles in the range [<code>start</code>, <code>limit</code>) with the characters
+* and styles in <code>srcText</code>.  <code>srcText</code> is not
+* modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character and style at
+* <code>limit</code> is not modified.
+* @param text the source for the new characters and styles
+*/
+    public void replace(int start, int limit, MConstText text) {
+
+        replace(start, limit, text, 0, text.length());
+    }
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the characters
+* in <code>srcChars</code> in the range [<code>srcStart</code>, <code>srcLimit</code>).  New characters take on the style
+* <code>charsStyle</code>.
+* <code>srcChars</code> is not modified.
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChars the source for the new characters
+* @param srcStart the offset into <code>srcChars</code> where new characters will be obtained
+* @param srcLimit the offset into <code>srcChars</code> where the new characters end
+* @param charsStyle the style of the new characters
+*/
+    public void replace(int start, int limit, char[] srcChars, int srcStart, int srcLimit, AttributeMap charsStyle)
+    {
+        checkStartLimit(start, limit);
+
+        if (start == limit && srcStart == srcLimit) {
+            return;
+        }
+
+        updateDamagedRange(start, limit, srcLimit-srcStart);
+
+        fCharBuffer.replace(start, limit, srcChars, srcStart, srcLimit);
+
+        replaceCharStylesWith(start, limit, start + (srcLimit-srcStart), charsStyle);
+
+        fParagraphBuffer.deleteText(start, limit, fDamagedRange);
+        fParagraphBuffer.insertText(start, srcChars, srcStart, srcLimit);
+
+        fTimeStamp += 1;
+    }
+
+    private void replaceCharStylesWith(int start, int oldLimit, int newLimit, AttributeMap style) {
+
+        if (start < oldLimit) {
+            fStyleBuffer.deleteText(start, oldLimit);
+        }
+        if (start < newLimit) {
+            if (forceModifier == null) {
+                forceModifier = new ForceModifier();
+            }
+            forceModifier.setStyle(style);
+            fStyleBuffer.insertText(start, newLimit);
+            fStyleBuffer.modifyStyles(start, newLimit, forceModifier, null);
+        }
+    }
+
+/**
+* Replace the characters in the range [<code>start</code>, <code>limit</code>) with the character <code>srcChar</code>.
+* The new character takes on the style <code>charStyle</code>
+* @param start the offset at which the replace operation begins
+* @param limit the offset at which the replace operation ends.  The character at
+* <code>limit</code> is not modified.
+* @param srcChar the new character
+* @param charStyle the style of the new character
+*/
+    public void replace(int start, int limit, char srcChar, AttributeMap charStyle)
+    {
+        checkStartLimit(start, limit);
+
+        updateDamagedRange(start, limit, 1);
+
+        fCharBuffer.replace(start, limit, srcChar);
+
+        replaceCharStylesWith(start, limit, start + 1, charStyle);
+
+        if (start < limit) {
+            fParagraphBuffer.deleteText(start, limit, fDamagedRange);
+        }
+
+        fParagraphBuffer.insertText(start, srcChar);
+
+        fTimeStamp += 1;
+    }
+
+/**
+* Replace the entire contents of this MText (both characters and styles) with
+* the contents of <code>srcText</code>.
+* @param srcText the source for the new characters and styles
+*/
+    public void replaceAll(MConstText srcText)
+    {
+        replace(0, length(), srcText, 0, srcText.length());
+    }
+
+/**
+* Insert the contents of <code>srcText</code> (both characters and styles) into this
+* MText at the position specified by <code>pos</code>.
+* @param pos The character offset where the new text is to be inserted.
+* @param srcText The text to insert.
+*/
+    public void insert(int pos, MConstText srcText)
+    {
+        replace(pos, pos, srcText, 0, srcText.length());
+    }
+
+/**
+* Append the contents of <code>srcText</code> (both characters and styles) to the
+* end of this MText.
+* @param srcText The text to append.
+*/
+    public void append(MConstText srcText)
+    {
+        replace(length(), length(), srcText, 0, srcText.length());
+    }
+
+/**
+* Delete the specified range of characters (and styles).
+* @param start Offset of the first character to delete.
+* @param limit Offset of the first character after the range to delete.
+*/
+    public void remove(int start, int limit)
+    {
+        replace(start, limit, (char[])null, 0, 0, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+    }
+
+/**
+* Delete all characters and styles.  Always increments time stamp.
+*/
+    public void remove()
+    {
+        // rather than going through replace(), just reinitialize the StyledText,
+        // letting the old data structures fall on the floor
+        fCharBuffer = new CharBuffer();
+        fStyleBuffer = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fParagraphBuffer = new ParagraphBuffer(fCharBuffer);
+        fTimeStamp += 1;
+        fDamagedRange[0] = fDamagedRange[1] = 0;
+    }
+
+    //--------------------------------------------------------
+    // storage management
+    //--------------------------------------------------------
+
+/**
+* Minimize the amount of memory used by the MText object.
+*/
+    public void compress() {
+
+        fCharBuffer.compress();
+        fStyleBuffer.compress();
+        fParagraphBuffer.compress();
+    }
+
+    //--------------------------------------------------------
+    // style modification
+    //--------------------------------------------------------
+
+/**
+* Set the style of all characters in the MText object to
+* <code>AttributeMap.EMPTY_ATTRIBUTE_MAP</code>.
+*/
+    public void removeCharacterStyles() {
+
+        fStyleBuffer = new StyleBuffer(this, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        fTimeStamp += 1;
+        fDamagedRange[0] = 0;
+        fDamagedRange[1] = length();
+    }
+
+/**
+* Invoke the given modifier on all character styles from start to limit.
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public void modifyCharacterStyles(int start, int limit, StyleModifier modifier) {
+
+        checkStartLimit(start, limit);
+        boolean modified = fStyleBuffer.modifyStyles(start,
+                                                     limit,
+                                                     modifier,
+                                                     fDamagedRange);
+        if (modified) {
+            fTimeStamp += 1;
+        }
+    }
+
+/**
+* Invoke the given modifier on all paragraph styles in paragraphs
+* containing characters in the range [start, limit).
+* @param modifier the modifier to apply to the range.
+* @param start the start of the range of text to modify.
+* @param limit the limit of the range of text to modify.
+*/
+    public void modifyParagraphStyles(int start, int limit, StyleModifier modifier) {
+
+        checkStartLimit(start, limit);
+        boolean modified = fParagraphBuffer.modifyParagraphStyles(start,
+                                                                  limit,
+                                                                  modifier,
+                                                                  fDamagedRange);
+        if (modified) {
+            fTimeStamp += 1;
+        }
+    }
+
+/**
+* Reset the damaged range to an empty interval, and begin accumulating the damaged
+* range.  The damaged range includes every index where a character, character style,
+* or paragraph style has changed.
+* @see #damagedRangeStart
+* @see #damagedRangeLimit
+*/
+    public void resetDamagedRange() {
+
+        fDamagedRange[0] = Integer.MAX_VALUE;
+        fDamagedRange[1] = Integer.MIN_VALUE;
+    }
+
+/**
+* Return the start of the damaged range.
+* If the start is
+* <code>Integer.MAX_VALUE</code> and the limit is
+* <code>Integer.MIN_VALUE</code>, then the damaged range
+* is empty.
+* @return the start of the damaged range
+* @see #damagedRangeLimit
+* @see #resetDamagedRange
+*/
+    public int damagedRangeStart() {
+
+        return fDamagedRange[0];
+    }
+
+/**
+* Return the limit of the damaged range.
+* If the start is
+* <code>Integer.MAX_VALUE</code> and the limit is
+* <code>Integer.MIN_VALUE</code>, then the damaged range
+* is empty.
+* @return the limit of the damaged range
+* @see #damagedRangeStart
+* @see #resetDamagedRange
+*/
+    public int damagedRangeLimit() {
+
+        return fDamagedRange[1];
+    }
+
+    public String toString()
+    {
+        String result ="";
+        for (int i = 0; i < length(); i++) {
+            result += at(i);
+        }
+        return result;
+    }
+
+    //======================================================
+    // IMPLEMENTATION
+    //======================================================
+
+    /* check a range to see if it is well formed and within the bounds of the text */
+    private void checkStartLimit(int start, int limit)
+    {
+        if (start > limit) {
+            //System.out.println("Start is less than limit. start:"+start+"; limit:"+limit);
+            throw new IllegalArgumentException("Start is greater than limit. start:"+start+"; limit:"+limit);
+        }
+
+        if (start < 0) {
+            //System.out.println("Start is negative. start:"+start);
+            throw new IllegalArgumentException("Start is negative. start:"+start);
+        }
+
+        if (limit > length()) {
+            //System.out.println("Limit is greater than length.  limit:"+limit);
+            throw new IllegalArgumentException("Limit is greater than length.  limit:"+limit);
+        }
+    }
+
+    private static final boolean LESS_THAN_LENGTH = false;
+    private static final boolean NOT_GREATER_THAN_LENGTH = true;
+
+    private void checkPos(int pos, boolean endAllowed) {
+
+        int lastValidPos = length();
+        if (endAllowed == LESS_THAN_LENGTH) {
+            --lastValidPos;
+        }
+
+        if (pos < 0 || pos > lastValidPos) {
+            throw new IllegalArgumentException("Position is out of range.");
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/TabStop.java b/src/com/ibm/richtext/styledtext/TabStop.java
new file mode 100644
index 0000000..766ae56
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/TabStop.java
@@ -0,0 +1,183 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+/**
+ * TabStop represents a position on a tab ruler.  Each tab stop has a
+ * position, giving its location on the ruler, and one of several
+ * types.  The type determines how a segment controled by this TabStop
+ * is positioned on a line:
+ * <ul>
+ * <li><code>kLeading</code> - the leading edge of the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kCenter</code> - the segment is centered on this TabStop's
+ *     position</li>
+ * <li><code>kTrailing</code> - the trailing edge of the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kDecimal</code> - the first decimal in the segment is aligned to
+ *     the TabStop's position</li>
+ * <li><code>kAuto</code> - semantically the same as <code>kLeading</code>.
+ *     Used by tab rulers to indicate that all subsequent tab stops
+ *     will be at autospaced intervals.</li>
+ * </ul>
+ * @see MTabRuler
+ */
+public final class TabStop implements Externalizable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+    private static final long serialVersionUID = 22356934;
+
+    private byte fType;    // left, center, right, decimal
+    private int fPosition; // tab stop position from line origin.
+
+    /**
+     * A TabStop with this type aligns its segment's leading edge
+     * to the TabStop's position.
+     */
+    public static final byte kLeading = 0;
+
+    /**
+     * A TabStop with this type aligns its segment's center
+     * to the TabStop's position.
+     */
+    public static final byte kCenter = 1;
+
+    /**
+     * A TabStop with this type aligns its segment's trailing edge
+     * to the TabStop's position.
+     */
+    public static final byte kTrailing = 2;
+
+    /**
+     * A TabStop with this type aligns its segment's first decimal
+     * to the TabStop's position.
+     */
+    public static final byte kDecimal = 3;
+
+    /**
+     * A TabStop with this type aligns its segment's leading edge
+     * to the TabStop's position.  After a TabStop of this type,
+     * all tabs are at autospace intervals.  Usually, clients will
+     * not construct TabStops with this type.
+     */
+    public static final byte kAuto = 4;
+
+    /**
+     * Create a TabStop with position 0 and type <code>kLeading</code>.
+     */
+    public TabStop() {
+
+       this(0, kLeading);
+    }
+
+    /**
+     * Create a TabStop with the given position and type.
+     * @param position the TabStop's position
+     * @param type the TabStop's type.  Must be one of constants
+     *      in this class.
+     */
+    public TabStop(int position, byte type) {
+
+        if (type < kLeading || type > kAuto) {
+            throw new IllegalArgumentException("Invalid tab type");
+        }
+
+        fPosition = position;
+        fType = type;
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        int version = in.readInt();
+        if (version != CURRENT_VERSION) {
+            throw new IOException("Invalid version of TabStop.");
+        }
+        fPosition = in.readInt();
+        fType = in.readByte();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeInt(fPosition);
+        out.writeByte(fType);
+    }
+
+    /**
+     * Compare this to another Object.  TabStops are equal if
+     * their position and type are the same.
+     */
+    public boolean equals(Object rhs)
+    {
+        if (rhs == null) {
+            return false;
+        }
+
+        TabStop rhsTab;
+        try {
+            rhsTab = (TabStop) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return fType == rhsTab.fType && fPosition == rhsTab.fPosition;
+    }
+
+    /**
+     * Return the hash code for this TabStop.  The hash code is
+     * <code>position << type</code>.
+     */
+    public int hashCode() {
+
+        return fPosition << fType;
+    }
+
+    public String toString()
+    {
+        char typeChar;
+        switch (fType) {
+            case kLeading: typeChar = 'L'; break;
+            case kCenter: typeChar = 'C'; break;
+            case kTrailing: typeChar = 'R'; break;
+            case kDecimal: typeChar = 'D'; break;
+            case kAuto: typeChar = 'A'; break;
+            default: typeChar = '?'; break;
+        }
+        return "TabStop[" + Integer.toString(fPosition) + typeChar + ']';
+    }
+
+    /**
+     * Return the type of this TabStop.  Will be one of the constants
+     * in this class.
+     */
+    public byte getType() {
+        return fType;
+    }
+
+    /**
+     * Return the position of this TabStop.
+     */
+    public int getPosition() {
+        return fPosition;
+    }
+}
+
diff --git a/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java b/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java
new file mode 100644
index 0000000..a15e844
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/TestFastIntBinarySearch.java
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+final class TestFastIntBinarySearch {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+        boolean result = new TestFastIntBinarySearch().test();
+        System.out.println(result? "PASSED" : "FAILED");
+    }
+
+    public boolean test() {
+
+        boolean result = true;
+        int[] test = {-5, -3, 0, 2, 5};
+        FastIntBinarySearch fibs = new FastIntBinarySearch(test);
+
+        for (int i=0; i < 2; i++) {
+            int beforeAny = fibs.findIndex(-6);
+            if (beforeAny != -1) {
+                result = false;
+            }
+            
+            int atEnd = fibs.findIndex(5);
+            if (atEnd != test.length-1) {
+                result = false;
+            }
+            
+            int afterAny = fibs.findIndex(6);
+            if (afterAny != test.length-1) {
+                result = false;
+            }
+            
+            int exactly = fibs.findIndex(-3);
+            if (exactly != 1) {
+                result = false;
+            }
+            
+            fibs = new FastIntBinarySearch(new int[] {20, 40});
+            fibs.setData(test);
+        }
+        
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/styledtext/Validation.java b/src/com/ibm/richtext/styledtext/Validation.java
new file mode 100644
index 0000000..901b04a
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/Validation.java
@@ -0,0 +1,37 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.styledtext;
+
+/**
+ * Iterators use this class to keep from getting out of sync with
+ * their underlying data.  When created, the iterator gets a
+ * Validation instance.  If the underlying data changes, the Validation
+ * becomes invalid.  Usually iterators will throw exceptions if accessed
+ * after becoming invalid.
+ */
+final class Validation {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private boolean fIsValid = true;
+
+    boolean isValid() {
+
+        return fIsValid;
+    }
+
+    void invalidate() {
+
+        fIsValid = false;
+    }
+}
diff --git a/src/com/ibm/richtext/styledtext/package.html b/src/com/ibm/richtext/styledtext/package.html
new file mode 100644
index 0000000..659bed4
--- /dev/null
+++ b/src/com/ibm/richtext/styledtext/package.html
@@ -0,0 +1,13 @@
+<!-- 
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<html>
+<body bgcolor="white">
+Provides styled text storage and related classes.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java b/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java
new file mode 100644
index 0000000..295dca3
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingCodeEdit.java
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.demo.CodeEdit;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.SyntaxColorer;
+import com.ibm.richtext.demo.TextDocument;
+
+public class SwingCodeEdit extends CodeEdit {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) {
+    
+        new SwingCodeEdit(args, 0);
+    }
+    
+    public SwingCodeEdit(String[] args, int start) {
+    
+        super(args, start);
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new SwingDocumentWindow(this, 
+                                       document,
+                                       fSettings,
+                                       false,
+                                       new SyntaxColorer(),
+                                       false,
+                                       true,
+                                       menus);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java b/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java
new file mode 100644
index 0000000..63cabc2
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingDocumentWindow.java
@@ -0,0 +1,275 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+import com.ibm.richtext.swingui.JTabRuler;
+import com.ibm.richtext.swingui.SwingMenuBuilder;
+
+import com.ibm.richtext.print.PrintingUtils;
+
+import com.ibm.richtext.demo.AwtDocumentWindow;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.EditApplication;
+import com.ibm.richtext.demo.EditorResources;
+import com.ibm.richtext.demo.ResourceUtils;
+import com.ibm.richtext.demo.TextDocument;
+
+import java.awt.BorderLayout;
+import java.awt.FileDialog;
+
+import javax.swing.JFrame;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JOptionPane;
+import javax.swing.WindowConstants;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+
+import java.text.MessageFormat;
+
+/**
+ * AwtDocumentWindow is a Frame containing a TextPanel, with a document
+ * for storing the text in the TextPanel.
+ */
+final class SwingDocumentWindow extends JFrame implements DocumentWindow {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -1514405707157485775L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private JTextPanel fTextPanel;
+    private EditApplication fApplication;
+    private TextDocument fDocument;
+
+    /**
+     * Create a new AwtDocumentWindow.
+     * @param application the application that owns this document
+     * @param document the document to show in this AwtDocumentWindow
+     */
+    SwingDocumentWindow(EditApplication application,
+                        TextDocument document,
+                        TextPanelSettings textPanelSettings,
+                        boolean useTabRuler,
+                        TextPanelListener listener,
+                        boolean supportStyledText,
+                        boolean supportPlainText,
+                        int[] menus) {
+
+        fApplication = application;
+        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+        
+        fTextPanel = new JTextPanel(textPanelSettings, null, application.getClipboard());
+        if (listener != null) {
+            fTextPanel.addListener(listener);
+        }
+        setDocument(document);
+
+        addMenuBar(supportStyledText, supportPlainText, menus);
+
+        getContentPane().setLayout(new BorderLayout());
+
+        if (useTabRuler) {
+            JTabRuler tabRuler = new JTabRuler(14, 10, fTextPanel);
+            getContentPane().add(tabRuler, "North");
+        }
+        
+        getContentPane().add(fTextPanel, "Center");
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                doClose();
+            }
+        });
+    }
+
+    private void addMenuBar(boolean supportStyledText, 
+                            boolean supportPlainText,
+                            int[] menus) {
+        
+        JMenuBar menuBar = new JMenuBar();
+        String menuTitle = ResourceUtils.getString(EditorResources.FILE);
+        JMenu menu = new JMenu(menuTitle);
+        new SwingFileMenuManager(menu, fApplication, this,
+                                 supportStyledText, supportPlainText);
+        menuBar.add(menu);
+
+        SwingMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this, menus);
+        setJMenuBar(menuBar);
+    }
+    
+    /**
+     * Return true if it is OK to set the document text and file to
+     * something different.
+     */
+    private boolean canChangeDocuments() {
+
+        // If the text is modified, give the user a chance to
+        // save it.  Otherwise return true.
+
+        if (fDocument.isModified()) {
+            int save = askSave();
+            if (save == JOptionPane.YES_OPTION) {
+                return doSave();
+            }
+            else {
+                return save == JOptionPane.NO_OPTION;
+            }
+        }
+        else {
+            return true;
+        }
+    }
+
+    private void setDocument(TextDocument document) {
+
+        fDocument = document;
+        fDocument.setTextPanel(fTextPanel);
+        setTitle(fDocument.getTitle());
+    }
+
+    /**
+     * Set the document to empty text with no associated file.  If
+     * the document text is not saved, prompt the user to save the
+     * the text first.  If this operation is canceled, the document
+     * is unchanged.
+     */
+    public void doNew() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+        
+        setDocument(fApplication.createNewDocument());
+    }
+
+    /**
+     * Prompt the user for a file from which to load a text document.
+     * If the current text is not saved, first prompt the user to
+     * save.  If either operation is canceled or fails, the document
+     * is unchanged.
+     */
+    public void doOpen() {
+
+        if (!canChangeDocuments()) {
+            return;
+        }
+
+        TextDocument document = fApplication.openDocument(this);
+
+        if (document != null) {
+            setDocument(document);
+        }
+    }
+
+    /**
+     * Prompt the user for a file in which to save the document text.
+     * If this operation is not canceled, save the text in the file.
+     * The file becomes this document's file.
+     */
+    public boolean doSaveAs(int format) {
+
+        String title = ResourceUtils.getString(EditorResources.SAVE_TITLE);
+        File file = AwtDocumentWindow.getFileFromDialog(fDocument.getFile(), title, this, FileDialog.SAVE);
+        
+        if (file == null) {
+            return false;
+        }
+        
+        fDocument.setFile(file);
+        setTitle(fDocument.getTitle());
+
+        fDocument.setFormat(format);
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Save the text in this document.  If there is no file associated
+     * with the text, this is equivalent to <code>doSaveAs</code>.
+     * This method returns true if the document was successfully saved.
+     */
+    public boolean doSave() {
+
+        if (fDocument.getFile() == null) {
+            return doSaveAs(fDocument.getFormat());
+        }
+        
+        return fDocument.save();
+    }
+
+    /**
+     * Print the contents of this window.
+     */
+    public void doPrint() {
+
+        PrintingUtils.userPrintText(fDocument.getText(),
+                                    fTextPanel.getDefaultValues(),
+                                    this,
+                                    this.getTitle());
+    }
+
+    /**
+     * Attempt to close this window.  If the text has not been saved,
+     * give the user a chance to save the text before closing the
+     * window.  If the user cancels this operation, this method returns
+     * false and the window is not closed;  otherwise this method
+     * returns true and the window is closed.
+     */
+    public boolean doClose() {
+
+        if (canChangeDocuments()) {
+            setVisible(false);
+            dispose();
+            fApplication.removeDocumentWindow(this);
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Display a dialog that asks whether the user wants to
+     * save a document.  The returned value will be YES_OPTION,
+     * NO_OPTION, or CANCEL_OPTION from JOptionPane.
+     */
+    private int askSave() {
+
+        String pattern = ResourceUtils.getString(EditorResources.SAVE_MSG);
+        String message = MessageFormat.format(pattern, new Object[] {getTitle()});
+        
+        String yes = ResourceUtils.getString(EditorResources.YES);
+        String no = ResourceUtils.getString(EditorResources.NO);
+        String cancel = ResourceUtils.getString(EditorResources.CANCEL);
+
+        return JOptionPane.showOptionDialog(this,
+                                            message,
+                                            "",
+                                            JOptionPane.YES_NO_CANCEL_OPTION,
+                                            JOptionPane.QUESTION_MESSAGE,
+                                            null,
+                                            new Object[]{yes,no,cancel},
+                                            yes);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingEditDemo.java b/src/com/ibm/richtext/swingdemo/SwingEditDemo.java
new file mode 100644
index 0000000..76f9922
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingEditDemo.java
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import com.ibm.richtext.demo.EditDemo;
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.TextDocument;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+
+public class SwingEditDemo extends EditDemo {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) {
+    
+        new SwingCodeEdit(args, 0);
+    }
+    
+    public SwingEditDemo(String[] args, int start) {
+    
+        super(args, start);
+    }
+    
+    protected DocumentWindow createDocumentWindow(TextDocument document) {
+
+        return new SwingDocumentWindow(this, 
+                                       document,
+                                       JTextPanel.getDefaultSettings(),
+                                       true,
+                                       null,
+                                       true,
+                                       true,
+                                       null);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java b/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java
new file mode 100644
index 0000000..292d683
--- /dev/null
+++ b/src/com/ibm/richtext/swingdemo/SwingFileMenuManager.java
@@ -0,0 +1,63 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingdemo;
+
+import java.awt.Event;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JSeparator;
+import javax.swing.KeyStroke;
+
+import com.ibm.richtext.demo.DocumentWindow;
+import com.ibm.richtext.demo.EditApplication;
+import com.ibm.richtext.demo.FileMenuManager;
+import com.ibm.richtext.demo.MenuData;
+import com.ibm.richtext.demo.ResourceUtils;
+
+final class SwingFileMenuManager extends FileMenuManager {
+
+    private JMenu fMenu;
+    
+    public SwingFileMenuManager(JMenu menu,
+                                EditApplication application, 
+                                DocumentWindow document,
+                                boolean supportStyledFormat,
+                                boolean supportPlainFormat) {
+                          
+        super(application, document);
+        
+        fMenu = menu;
+        createItems(supportStyledFormat, supportPlainFormat);
+        fMenu = null;
+    }
+    
+    protected Object addMenuItem(String key) {
+
+        MenuData menuData = ResourceUtils.getMenuData(key);
+        JMenuItem item = new JMenuItem(menuData.getName());
+        if (menuData.hasShortcut()) {
+            KeyStroke ks = KeyStroke.getKeyStroke(menuData.getShortcutKeyCode(),
+                                                  Event.CTRL_MASK);
+            item.setAccelerator(ks);
+        }
+        item.addActionListener(this);
+        fMenu.add(item);
+        return item;
+    }
+    
+    protected void addSeparator() {
+    
+        fMenu.add(new JSeparator());
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JMessageDialog.java b/src/com/ibm/richtext/swingui/JMessageDialog.java
new file mode 100644
index 0000000..6349cb6
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JMessageDialog.java
@@ -0,0 +1,73 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.CardLayout;
+
+import javax.swing.JFrame;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.textpanel.TextPanelSettings;
+
+/**
+ * MessageDialog is a simple Frame which displays a styled
+ * text message in a TextPanel.
+ * The text in the message is not selectable or editable.
+ * @see MConstText
+ * @see JTextPanel
+ */
+public final class JMessageDialog extends JFrame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 5012952859760456427L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Create a new MessageDialog.
+    * @param title the dialog's title
+    * @param message the text which will appear in the dialog
+    */
+    public JMessageDialog(String title, MConstText message)
+    {
+        super(title);
+
+        Container content = getContentPane();
+        content.setLayout(new CardLayout());
+        TextPanelSettings settings = JTextPanel.getDefaultSettings();
+        settings.setScrollable(false);
+        settings.setSelectable(false);
+        JTextPanel panel = new JTextPanel(settings, message, null);
+
+        panel.setBackground(Color.black);
+        content.add("Center", panel);
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                setVisible(false);
+                dispose();
+            }
+        });
+
+        setSize(450,320);
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JNumberDialog.java b/src/com/ibm/richtext/swingui/JNumberDialog.java
new file mode 100644
index 0000000..f08ca1f
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JNumberDialog.java
@@ -0,0 +1,164 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+
+/**
+* Simple dialog which gets a number, and sends an appropriate command
+*/
+final class JNumberDialog extends JDialog implements ActionListener
+{
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8948601172508147011L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MTextPanel fTextPanel;
+    private JTextField fInput = null;
+
+    private JButton fOKButton = null;
+    private JButton fCancelButton = null;
+    private boolean fCharacter;
+    private Object fKey;
+    private float fMultiplier; 
+
+    /**
+     * @param multiplier the factor by which to multiply the user's
+     *        selection before creating the attribute value.   This
+     *        is useful for subscripting.
+     */
+    JNumberDialog(Frame parent,
+                  String title,
+                  String message,
+                  MTextPanel textPanel,
+                  Object key,
+                  boolean character,
+                  float multiplier) {
+
+        super(parent, title, false);
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        fMultiplier = multiplier;
+        
+        Container content = getContentPane();
+        
+        content.setLayout(new java.awt.GridLayout(2,1));
+
+        JPanel panel = new JPanel();
+        panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 15));
+        fInput = new JTextField(5);
+
+        panel.add(new JLabel(message));
+        panel.add(fInput);
+        content.add("Center", panel);
+
+        fCancelButton = new JButton(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new JButton(ResourceUtils.getResourceString(FrameResources.OK));
+        JPanel p = new JPanel();
+        p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        p.add(fCancelButton);
+        p.add(fOKButton);
+        content.add("South", p);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        fOKButton.addActionListener(this);
+        fCancelButton.addActionListener(this);
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+
+        int num = 0;
+        if (sendAction) {
+            try {
+                String text = fInput.getText();
+                num = NumberFormat.getInstance().parse(text).intValue();
+            }
+            catch (ParseException exception) {
+                sendAction = false;
+            }
+        }
+
+        if (sendAction) {
+            sendAction(num);
+        }
+
+        dispose();
+    }
+
+    public void actionPerformed(ActionEvent e) {
+
+        Object source = e.getSource();
+
+        if (source == fOKButton) {
+            closeWindow(true);
+        }
+        else if (source == fCancelButton) {
+            closeWindow(false);
+        }
+        else {
+            throw new IllegalArgumentException("Invalid ActionEvent!");
+        }
+    }
+
+    /**
+    * Handle the user input
+    * @param number The number the user typed in
+    */
+    private void sendAction(int number) {
+        float num = number * fMultiplier;
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                                fKey,
+                                                new Float(num));
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JObjectDialog.java b/src/com/ibm/richtext/swingui/JObjectDialog.java
new file mode 100644
index 0000000..0a4f1ea
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JObjectDialog.java
@@ -0,0 +1,280 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.util.Hashtable;
+
+import javax.swing.Box;
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JButton;
+import javax.swing.JList;
+import javax.swing.JLabel;
+import javax.swing.ListSelectionModel;
+
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.FlowLayout;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.MenuItemSet;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.ResourceUtils;
+
+/**
+* Simple dialog that sets an attribute.
+*/
+final class JObjectDialog extends JDialog {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -9183651131772308979L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final MTextPanel fTextPanel;
+    private final Object fKey;
+    private boolean fCharacter;
+    private Hashtable fNameToValueMap;
+    
+    private final JButton fOKButton;
+    private final JButton fCancelButton;
+    private final JList fItems;
+    
+    /**
+    * Construct a new JObjectDialog.
+    * @param parent the dialog's parent frame
+    * @param title the dialogs title
+    * @param message the message displayed next to the input box
+    */
+    JObjectDialog(Frame parent,
+                  String title, 
+                  String message, 
+                  MTextPanel textPanel,
+                  Object key,
+                  boolean character,
+                  String[] names,
+                  Object[] values) {
+                    
+        super(parent, title, false);
+
+        setupMap(names, values);
+        
+        Dimension size = new Dimension(250, 200);
+        
+        fTextPanel = textPanel;
+        fKey = key;
+        fCharacter = character;
+        
+        fItems = new JList(names);
+        fItems.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+        
+        fItems.addMouseListener(new MouseAdapter() {
+            public void mouseClicked(MouseEvent e) {
+                if (e.getClickCount() == 2) {
+                    closeWindow(true);
+                }
+            }
+        });
+        
+        JScrollPane listScroller = new JScrollPane(fItems);
+        listScroller.setPreferredSize(size);
+        listScroller.setPreferredSize(size);
+        listScroller.setAlignmentX(LEFT_ALIGNMENT);
+
+        JLabel label = new JLabel(message);
+        label.setLabelFor(fItems);
+        
+        JPanel itemPanel = new JPanel();
+        itemPanel.add(label);
+        itemPanel.add(Box.createRigidArea(new Dimension(0,5)));
+        itemPanel.add(listScroller);
+        itemPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
+        
+        itemPanel.setLayout(new BoxLayout(itemPanel, BoxLayout.Y_AXIS));
+        
+        fCancelButton = new JButton(ResourceUtils.getResourceString(FrameResources.CANCEL));
+        fOKButton = new JButton(ResourceUtils.getResourceString(FrameResources.OK));
+        
+        JPanel buttonPanel = new JPanel();
+        buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
+        buttonPanel.add(fCancelButton);
+        buttonPanel.add(fOKButton);
+        
+        Container content = getContentPane();
+        content.add(itemPanel, BorderLayout.CENTER);
+        content.add(buttonPanel, BorderLayout.SOUTH);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                closeWindow(false);
+            }
+        });
+        
+        ActionListener listener = new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+            
+                Object source = e.getSource();
+                if (source == fOKButton) {
+                    closeWindow(true);
+                }
+                else if (source == fCancelButton) {
+                    closeWindow(false);
+                }
+            }
+        };
+        
+        fOKButton.addActionListener(listener);
+        fCancelButton.addActionListener(listener);
+        
+        selectStyles(values);
+    }
+    
+    private void setupMap(String[] names, Object[] values) {
+    
+        if (names.length != values.length) {
+            throw new IllegalArgumentException("Must have same number of names and values.");
+        }
+        
+        fNameToValueMap = new Hashtable(names.length);
+        
+        for (int i=0; i < names.length; i++) {
+            if (values[i] != null) {
+                fNameToValueMap.put(names[i], values[i]);
+            }
+        }
+
+    }
+
+    private void closeWindow(boolean sendAction) {
+
+        setVisible(false);
+        
+        if (sendAction && fItems.getMinSelectionIndex() != fItems.getMaxSelectionIndex()) {
+            sendAction = false;
+        }
+        
+        if (sendAction) {
+            Object value = fNameToValueMap.get(fItems.getSelectedValue());
+            sendAction(value);
+        }
+        dispose();
+    }
+
+    /**
+    * Handle the user input
+    * @param value The value object
+    */
+    private void sendAction(Object value) {
+
+        StyleModifier modifier;
+        if (value != null) {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+        else {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+
+        if (fCharacter == MenuItemSet.CHARACTER) {
+            fTextPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+    
+    private void selectValue(Object value, Object[] values) {
+    
+        for (int i=0; i < values.length; i++) {
+        
+            if ((value != null && value.equals(values[i])) || (value == null && values[i] == null)) {
+                fItems.addSelectionInterval(i, i);
+                fItems.ensureIndexIsVisible(i);
+                return;
+            }
+        }
+    }
+    
+    private void selectStyles(Object[] values) {
+    
+        Object value;
+ 
+        if (fCharacter) {
+            value = fTextPanel.getCharacterStyleOverSelection(fKey);
+        }
+        else {
+            value = fTextPanel.getParagraphStyleOverSelection(fKey);
+        }
+        
+        if (value != MTextPanel.MULTIPLE_VALUES) {
+            selectValue(value, values);
+        }
+        else {
+            fOKButton.setEnabled(false);
+            
+            int selLimit = fTextPanel.getSelectionEnd();
+            MConstText text = fTextPanel.getText();
+            for (int runStart = fTextPanel.getSelectionStart(); runStart <= selLimit;
+                    runStart = fCharacter? text.characterStyleLimit(runStart) : 
+                                           text.paragraphLimit(runStart)) {
+            
+                Object runVal;
+                if (fCharacter) {
+                    runVal = text.characterStyleAt(runStart).get(fKey);
+                }
+                else {
+                    runVal = text.paragraphStyleAt(runStart).get(fKey);
+                }
+                if (runVal == null) {
+                    runVal = fTextPanel.getDefaultValues().get(fKey);
+                }
+                
+                selectValue(runVal, values);
+                if (runStart == text.length()) {
+                    break;
+                }
+            }
+        }
+        
+        fItems.addListSelectionListener(new ListSelectionListener() {
+            public void valueChanged(ListSelectionEvent e) {
+                fItems.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+                fOKButton.setEnabled(true);
+                fItems.removeListSelectionListener(this);
+            }
+        });
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JTabRuler.java b/src/com/ibm/richtext/swingui/JTabRuler.java
new file mode 100644
index 0000000..3fdb1af
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JTabRuler.java
@@ -0,0 +1,136 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+
+import javax.swing.JComponent;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.styledtext.MTabRuler;
+
+import com.ibm.richtext.uiimpl.TabRulerImpl;
+import com.ibm.richtext.awtui.MTabRulerComponent;
+
+/**
+ * JTabRuler is an implementation of MTabRulerComponent in a Swing component.
+ */
+public final class JTabRuler extends JComponent implements MTabRulerComponent {
+    
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 8547581956295504028L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TabRulerImpl fImpl;
+    
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public JTabRuler(int baseline, int origin, MTextPanel textPanel) {
+        
+        fImpl = new TabRulerImpl(baseline, origin, textPanel, this);
+    }
+    
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fImpl.listenToTextPanel(textPanel);
+    }
+    
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fImpl.getBackColor();
+    }
+    
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        fImpl.setBackColor(backColor);
+    }
+    
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler() {
+        
+        return fImpl.getRuler();
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin() {
+        
+        return fImpl.getLeadingMargin();
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent() {
+        
+        return fImpl.getFirstLineIndent();
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin() {
+        
+        return fImpl.getTrailingMargin();
+    }
+    
+    // The following are Component methods which need to be delegated to
+    // the implementation:
+    
+    public void paint(Graphics g) {
+        
+        fImpl.paint(g);
+    }
+    
+    public Dimension getPreferredSize() {
+        
+        return fImpl.getPreferredSize();
+    }
+
+    public Dimension getMinimumSize() {
+        
+        return fImpl.getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/JTextFrame.java b/src/com/ibm/richtext/swingui/JTextFrame.java
new file mode 100644
index 0000000..e552a84
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/JTextFrame.java
@@ -0,0 +1,145 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.JTextPanel;
+import com.ibm.richtext.styledtext.MConstText;
+
+import java.awt.BorderLayout;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JFrame;
+import javax.swing.JMenuBar;
+import javax.swing.UIManager;
+
+import java.awt.Container;
+
+/**
+ * JTextFrame is a JFrame containing an editable JTextPanel, a set of standard
+ * menus, and a JTabRuler.  This class can be used as-is, but is
+ * primarily intended to be a simple example of how to use the other classes
+ * in this package.
+ * @see com.ibm.richtext.textpanel.JTextPanel
+ * @see SwingMenuBuilder
+ * @see JTabRuler
+ */
+public final class JTextFrame extends JFrame {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = -1026126723995559230L;
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private JTextPanel fTextPanel;
+
+    /**
+     * Create a new JTextFrame with no text, no title, 
+     * and a private clipboard.
+     */
+    public JTextFrame() {
+        
+        super();
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new JTextFrame with no text and the given title.
+     * The JTextPanel will use a private clipboard.
+     * @param title the title of this Frame
+     */
+    public JTextFrame(String title) {
+        
+        super(title);
+        init(null, Toolkit.getDefaultToolkit().getSystemClipboard());
+    }
+    
+    /**
+     * Create a new JTextFrame with the given text and title, whose
+     * TextPanel will use the given clipboard.
+     * @param text the initial text in the TextPanel.  If null the
+     *      TextPanel will initially be empty
+     * @param title the title of this Frame
+     * @param clipboard the Clipboard which the TextPanel will use.
+     *      If null the TextPanel will use a private Clipboard
+     */
+    public JTextFrame(MConstText text,
+                     String title,
+                     Clipboard clipboard) {
+
+        super(title);
+        init(text, clipboard);
+    }
+
+    private void init(MConstText text, Clipboard clipboard) {
+        
+        fTextPanel = new JTextPanel(text, clipboard);
+
+        JTabRuler tabRuler = new JTabRuler(14, 10, fTextPanel);
+
+        createMenus();
+
+        Container contentPane = getContentPane();
+        contentPane.setLayout(new BorderLayout());
+        contentPane.add(fTextPanel, "Center");
+        contentPane.add(tabRuler, "North");
+        pack();
+    }
+
+    private void createMenus() {
+
+        JMenuBar menuBar = new JMenuBar();
+
+        SwingMenuBuilder.getInstance().createMenus(menuBar, fTextPanel, this);
+        
+        setJMenuBar(menuBar);
+    }
+
+    /**
+     * Return the MTextPanel in this frame.
+     */
+    public MTextPanel getTextPanel() {
+
+        return fTextPanel;
+    }
+    
+    public static void main(String[] args) {
+        
+        String laf = UIManager.getSystemLookAndFeelClassName();
+        if (args.length == 1) {
+            if (args[0].equals("cp")) {
+                laf = UIManager.getCrossPlatformLookAndFeelClassName();
+            }
+        }
+                
+        try {
+            UIManager.setLookAndFeel(laf);
+        }
+        catch(Throwable th) {
+            th.printStackTrace();
+        }
+        JTextFrame frame = new JTextFrame();
+        frame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        frame.setSize(550, 700);
+        frame.show();
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/SwingMenuBuilder.java b/src/com/ibm/richtext/swingui/SwingMenuBuilder.java
new file mode 100644
index 0000000..87607eb
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/SwingMenuBuilder.java
@@ -0,0 +1,234 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Frame;
+import java.awt.Window;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.uiimpl.*;
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+/**
+ * SwingMenuBuilder provides a method for creating a set of Swing menus for interacting
+ * with an MTextPanel.  Future versions of this class may provide greater control
+ * over the menu contents.
+ * @see MTextPanel
+ */
+public final class SwingMenuBuilder extends MenuBuilder {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final SwingMenuBuilder INSTANCE = new SwingMenuBuilder();
+    
+    /**
+     * Id for an Edit menu.  The Edit menu has the following items:
+     * <ul>
+     * <li><b>Undo</b> - invoke undo() on the MTextPanel</li>
+     * <li><b>Redo</b> - invoke redo() on the MTextPanel</li>
+     * <li><b>Cut</b> - invoke cut() on the MTextPanel</li>
+     * <li><b>Copy</b> - invoke copy() on the MTextPanel</li>
+     * <li><b>Paste</b> - invoke paste() on the MTextPanel</li>
+     * <li><b>Clear</b> - invoke clear() on the MTextPanel</li>
+     * <li><b>Select All</b> - invoke selectAll() on the MTextPanel</li>
+     * </ul>
+     */
+    public static final int EDIT = MenuBuilder.EDIT;
+    /**
+     * Id for the point sizes menu.  The menu has items that set the size of a character
+     * in a typeface.
+     */
+    public static final int SIZE = MenuBuilder.SIZE;
+    /**
+     * Id for a Style menu.  The Style menu has the following items:
+     * <ul>
+     * <li><b>Plain</b> - remove <code>WEIGHT</code>,
+     *                    <code>POSTURE</code>,
+     *                    <code>UNDERLINE</code> and
+     *                    <code>STRIKETHROUGH</code> attributes from the
+     * current selection</li>
+     * <li><b>Bold</b> - add <code>{WEIGHT,WEIGHT_BOLD}</code> to
+     * the current selection</li>
+     * <li><b>Italic</b> - add <code>{POSTURE,POSTURE_ITALIC}</code> to
+     * the current selection</li>
+     * <li><b>Underline</b> - add <code>{UNDERLINE,UNDERLINE_ON}</code> to
+     * the current selection</li>
+     * <li><b>Strikethrough</b> - add <code>{STRIKETHROUGH,STRIKETHROUGH_ON}</code>
+     * to the current selection</li>
+     * <li><b>Font...</b> - display a dialog allowing the user to
+     * select a typeface (font family) for the current selection</li>
+     * <li><b>Forecolor...</b> - display a dialog allowing the user to
+     * select a foreground color for the current selection</li>
+     * <li><b>Backcolor...</b> - display a dialog allowing the user to
+     * select a background color for the current selection</li>
+     * </ul>
+     */
+    public static final int STYLE = MenuBuilder.STYLE;
+    /**
+     * Id for a paragraph alignment menu.  The menu has the following items:
+     * <ul>
+     * <li><b>Leading</b> - give selected paragraph(s) LEADING flush</li>
+     * <li><b>Center</b> - give selected paragraph(s) CENTER flush</li>
+     * <li><b>Trailing</b> - give selected paragraph(s) TRAILING flush</li>
+     * <li><b>Justified</b> - give selected paragraph(s) full justification</li>
+     * </ul>
+     */
+    public static final int FLUSH = MenuBuilder.FLUSH;
+    /**
+     * Id for a menu that sets the KeyRemap
+     * on an MTextPanel.  The menu has the following items:
+     * <ul>
+     * <li><b>Default</b> - set KeyRemap to identity remap</li>
+     * <li><b>Arabic</b> - set KeyRemap to Arabic transliteration</li>
+     * <li><b>Hebrew</b> - set KeyRemap to Hebrew transliteration</li>
+     * <li><b>Israel Nikud</b> - set KeyRemap to Israel Nikud</li>
+     * <li><b>Thai Ketmanee</b> - set KeyRemap to Thai Ketmanee</li>
+     * </ul>
+     */
+    public static final int KEYMAP = MenuBuilder.KEYMAP;
+    /**
+     * Id for a menu that sets
+     * the primary run direction for a paragraph.  Run direction can be left-to-right,
+     * right-to-left, or can use the default run direction from the Unicode bidi algorithm.
+     */
+    public static final int BIDI = MenuBuilder.BIDI;
+    /**
+     * Id for a menu with an <b>About</b> item.  When selected, 
+     * the item displays a Frame containing some
+     * self-promotional text.
+     */
+    public static final int ABOUT = MenuBuilder.ABOUT;
+    /**
+     * Return an instance of SwingMenuBuilder.
+     */
+     
+    public static SwingMenuBuilder getInstance() {
+        
+        return INSTANCE;
+    }
+    
+    private JMenuBar fMenuBar;
+    
+    private SwingMenuBuilder() {
+    }
+    
+    /**
+     * Add a standard set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     */
+    public void createMenus(JMenuBar menuBar, 
+                            MTextPanel textPanel,
+                            Frame frame) {
+
+        createMenus(menuBar, textPanel, frame, defaultMenus);
+    }
+    
+    /**
+     * Add a set of menus to the given menu bar.  The menus 
+     * will interact with the given MTextPanel.
+     * @param menuBar the MenuBar to which menus are added
+     * @param textPanel the MTextPanel with which the menus interact
+     * @param frame a Frame to use as the parent of any dialogs created by a 
+     *   a menu item.  If null, menu items which create dialogs will be omitted.
+     * @param menus an array of integer menu id's.  Each element of the
+     *   array must be one of this class's menu id constants.  If null,
+     *   the default menus are created.
+     */
+    public void createMenus(JMenuBar menuBar,
+                            MTextPanel textPanel,
+                            Frame frame,
+                            int[] menus) {
+        
+        if (menus == null) {
+            menus = defaultMenus;
+        }
+        
+        synchronized (MItem.LOCK) {
+            
+            fMenuBar = menuBar;
+            doCreateMenus(textPanel, frame, menus);
+            fMenuBar = null;
+        }
+    }
+    
+    protected void handleAddMenu(String key) {
+        
+        JMenu menu = new JMenu(ResourceUtils.getResourceString(key));
+        fMenuBar.add(menu);
+        MItem.setItemFactory(new SwingMenuFactory(menu));
+    }
+
+    protected DialogFactory createObjectDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character,
+                                                      final String[] names,
+                                                      final Object[] values) {
+        
+        final Frame dialogParent = fDialogParent;
+
+        return new DialogFactory() {    
+            public Window createDialog(MTextPanel textPanel) {
+                return new JObjectDialog(dialogParent,
+                                        dialogTitle,
+                                        dialogMessage,
+                                        textPanel,
+                                        key,
+                                        character,
+                                        names,
+                                        values);
+            }
+        };
+    }
+    
+    protected DialogFactory createNumberDialogFactory(final String dialogTitle,
+                                                      final String dialogMessage,
+                                                      final Object key,
+                                                      final boolean character) {
+        
+        final Frame dialogParent = fDialogParent;
+        // variable not used final MTextPanel textPanel = fTextPanel;
+            
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel fTxtPanel) {
+                return new JNumberDialog(dialogParent,
+                                         dialogTitle,
+                                         dialogMessage,
+                                         fTxtPanel,
+                                         key,
+                                         character,
+                                         1);
+            }
+        };
+    }    
+    
+    protected DialogFactory createAboutDialogFactory() {
+        
+        return new DialogFactory() {
+            public Window createDialog(MTextPanel textPanel) {
+                String title = ResourceUtils.getResourceString(FrameResources.ABOUT_TITLE);
+                return new JMessageDialog(title, AboutText.getAboutText());
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/swingui/SwingMenuFactory.java b/src/com/ibm/richtext/swingui/SwingMenuFactory.java
new file mode 100644
index 0000000..cd618ed
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/SwingMenuFactory.java
@@ -0,0 +1,105 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.swingui;
+
+import java.awt.Event;
+
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JSeparator;
+import javax.swing.KeyStroke;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+import com.ibm.richtext.uiimpl.MItem;
+import com.ibm.richtext.uiimpl.MItem.ItemFactory;
+
+final class SwingMenuFactory implements ItemFactory {
+        
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class SwingMItem extends MItem {
+        
+        private JMenuItem fItem;
+        
+        SwingMItem(JMenuItem item) {
+            
+            fItem = item;
+            item.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    handleSelected();
+                }
+            });
+        }
+        
+        protected void handleSelected() {
+            
+            super.handleSelected();
+        }
+        
+        public final void setEnabled(boolean enabled) {
+            
+            fItem.setEnabled(enabled);
+        }
+        
+        public void setState(boolean checked) {
+            
+            try {
+                JCheckBoxMenuItem item = (JCheckBoxMenuItem) fItem;
+                item.setState(checked);
+            }
+            catch(ClassCastException e) {
+                throw new Error("Cannot perform setChecked on non-checkbox item");
+            }
+        }
+    }
+    
+    private JMenu fMenu;
+        
+    SwingMenuFactory(JMenu menu) {
+            
+        fMenu = menu;
+    }
+    
+    private MItem handleCreate(JMenuItem item,
+                               MenuData menuData) {
+
+        if (menuData.hasShortcut()) {
+            KeyStroke ks = KeyStroke.getKeyStroke(menuData.getShortcutKeyCode(),
+                                                  Event.CTRL_MASK);
+            item.setAccelerator(ks);
+        }
+        
+        fMenu.add(item);
+        
+        return new SwingMItem(item);
+    }
+        
+    public MItem createItem(MenuData menuData) {
+        
+        return handleCreate(new JMenuItem(menuData.getName()), menuData);
+    }        
+
+    public MItem createCheckboxItem(MenuData menuData) {
+        
+        return handleCreate(new JCheckBoxMenuItem(menuData.getName()), menuData);
+    }
+    
+    public void createSeparator() {
+        
+        fMenu.add(new JSeparator());
+    }
+}
diff --git a/src/com/ibm/richtext/swingui/package.html b/src/com/ibm/richtext/swingui/package.html
new file mode 100644
index 0000000..2ce42ef
--- /dev/null
+++ b/src/com/ibm/richtext/swingui/package.html
@@ -0,0 +1,13 @@
+<!--
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+-->
+<html>
+<body bgcolor="white">
+Provides classes for building a Swing-based user interface for a TextPanel.
+</body>
+</html>
diff --git a/src/com/ibm/richtext/test/Declaration.java b/src/com/ibm/richtext/test/Declaration.java
new file mode 100644
index 0000000..715fc5a
--- /dev/null
+++ b/src/com/ibm/richtext/test/Declaration.java
@@ -0,0 +1,42 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+ * This class contains the first four paragraphs of the Declaration
+ * of Independence, as both styled and unstyled text.  The views
+ * expressed therein are not necessarily those of the programmer or of
+ * his/her employer.  No criticism of any monarchy, oligarchy, dictatorship,
+ * autocracy, plutocracy, theocracy, anarchist territory, colonial power,
+ * or any other nondemocratic form of government is intended.  This document
+ * is provided "as-is" without any warranty expressed or implied.
+ */
+public final class Declaration {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static final String fgDeclarationStr = "In Congress, July 4, 1776, THE UNANIMOUS DECLARATION OF THE THIRTEEN UNITED STATES OF AMERICA\n" +
+        "\n" +
+        "When in the Course of human Events, it becomes necessary for one People to dissolve the Political Bands which have connected them with another, and to assume among the Powers of the Earth, the separate and equal Station to which the Laws of Nature and of Nature's God entitle them, a decent Respect to the Opinions of Mankind requires that they should declare the causes which impel them to the Separation.\n" +
+        "\n" +
+        "We hold these Truths to be self-evident, that all Men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty, and the Pursuit of Happiness.\n" +
+        "\n" +
+        "That to secure these Rights, Governments are instituted among Men, deriving their just Powers from the Consent of the Governed, that whenever any Form of Government becomes destructive of these Ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its Foundation on such Principles, and organizing its Powers in such Form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient Causes; and accordingly all Experience hath shewn, that Mankind are more disposed to suffer, while Evils are sufferable, than to right themselves by abolishing the Forms to which they are accustomed. But when a long Train of Abuses and Usurpations, pursuing invariably the same Object, evinces a Design to reduce them under absolute Despotism, it is their Right, it is their Duty, to throw off such Government, and to provide new Guards for their future Security.\n" +
+        "\n";
+
+    public static final MConstText fgDeclaration = new StyledText(fgDeclarationStr, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+}
diff --git a/src/com/ibm/richtext/test/ITestTextPanel.java b/src/com/ibm/richtext/test/ITestTextPanel.java
new file mode 100644
index 0000000..3538355
--- /dev/null
+++ b/src/com/ibm/richtext/test/ITestTextPanel.java
@@ -0,0 +1,216 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import java.awt.Button;
+import java.awt.Frame;
+import java.awt.GridLayout;
+import java.awt.datatransfer.Clipboard;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowAdapter;
+
+import java.util.Date;
+import java.text.DateFormat;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.awtui.TextFrame;
+
+public class ITestTextPanel extends Frame implements ActionListener {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 4776220202735727574L;
+
+    //static final String COPYRIGHT =
+    //            "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static long fgOpCount = 0;
+
+    private TestTextPanel fTest;
+    
+    private MTextPanel fTextPanel;
+    private Frame fTextFrame;
+    private Clipboard fClipboard;
+    private Button fExersize, fStressTest;
+
+    public static void main(String[] args) {
+
+        Date startDate = new Date();
+
+        try {
+            Clipboard clipboard = new Clipboard("ITextTestPanel");
+            TextFrame frame = new TextFrame(null, "Interactive Test", clipboard);
+            MTextPanel panel = frame.getTextPanel();
+
+            new ITestTextPanel(panel, frame, clipboard).show();
+        }
+        finally {
+            DateFormat df = DateFormat.getDateTimeInstance();
+            System.out.println("Start time: " + df.format(startDate));
+            System.out.println("End Time: " + df.format(new Date()));
+            System.out.println("Op count: " + fgOpCount);
+        }
+    }
+
+    public ITestTextPanel(MTextPanel panel,
+                          Frame frame,
+                          Clipboard clipboard) {
+
+        fTextPanel = panel;
+        fTest = new TestTextPanel(fTextPanel);
+        fClipboard = clipboard;
+
+        setLayout(new GridLayout(0, 1));
+
+        fTextFrame = frame;
+        fTextFrame.setSize(350, 500);
+        fTextFrame.show();
+
+        // initialize UI:
+        fExersize = new Button("Exercise");
+        fExersize.addActionListener(this);
+        add(fExersize);
+
+        fStressTest = new Button("Stress Test");
+        fStressTest.addActionListener(this);
+        add(fStressTest);
+
+        pack();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowActivated(WindowEvent e) {
+                //activateTextFrame();
+            }
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+
+        setSize(280, 150);
+    }
+
+    private void activateTextFrame() {
+
+        fTextFrame.toFront();
+    }
+
+    public void actionPerformed(ActionEvent event) {
+
+        Object source = event.getSource();
+        activateTextFrame();
+        Date startDate = new Date();
+        boolean exitedNormally = false;
+
+        try {
+            if (source == fExersize) {
+                fTest.incRandSeed();
+                for (int i=0; i < 100; i++) {
+                    selectOperation(fTextFrame, fClipboard);
+                }
+            }
+            else if (source == fStressTest) {
+                fTest.incRandSeed();
+                while (true) {
+                    selectOperation(fTextFrame, fClipboard);
+                }
+            }
+            exitedNormally = true;
+        }
+        finally {
+            if (!exitedNormally) {
+                DateFormat df = DateFormat.getDateTimeInstance();
+                System.out.println("Start time: " + df.format(startDate));
+                System.out.println("End Time: " + df.format(new Date()));
+                System.out.println("Rand seed: " + fTest.getRandSeed());
+                System.out.println("Op count: " + fgOpCount);
+            }
+        }
+    }
+
+    /**
+     * Perform a random operation on the MTextPanel.  Frame can
+     * be null.
+     */
+    private static final int OP_COUNT = 15;
+
+    public void selectOperation(Frame frame,
+                                Clipboard clipboard) {
+
+        int op = fTest.randInt(OP_COUNT);
+
+        switch (op) {
+
+            case 0:
+                fTest._testSetSelection();
+                break;
+
+            case 1:
+                fTest._testModifications(TestTextPanel.MOD_TEXT,
+                                        true);
+                break;
+
+            case 2:
+                fTest._testEditMenuOperations(clipboard);
+                break;
+
+            case 3:
+                fTest._testModFlag(fTextPanel.getCommandLogSize());
+                break;
+
+            case 4:
+                fTest.applyCharacterStyle();
+                break;
+
+            case 5:
+                fTest.applyParagraphStyle();
+                break;
+
+            case 6:
+            case 7:
+            case 8:
+            case 9:
+                fTest.typeKeys();
+                break;
+
+            case 10:
+                fTest.selectText();
+                break;
+
+            case 11:
+                fTest.undoRedo();
+                break;
+
+            case 12:
+                //if (frame != null) {
+                //    fTest.resizeFrame(frame);
+                //    break;
+                //}
+
+            case 13:
+                fTest.applyKeyRemap();
+                break;
+
+            case 14:
+                fTest._testCommandLogControl();
+                break;
+
+            default:
+                throw new Error("OP_COUNT is incorrect");
+        }
+        fgOpCount++;
+    }
+
+
+}
diff --git a/src/com/ibm/richtext/test/TestTextPanel.java b/src/com/ibm/richtext/test/TestTextPanel.java
new file mode 100644
index 0000000..79d7cd9
--- /dev/null
+++ b/src/com/ibm/richtext/test/TestTextPanel.java
@@ -0,0 +1,843 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+
+package com.ibm.richtext.test;
+
+import java.util.Random;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.event.KeyEvent;
+
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+
+import com.ibm.richtext.textpanel.KeyRemap;
+import com.ibm.richtext.textpanel.KeyEventForwarder;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+
+// Note:  this used to be a TestFmwk test.  If you add
+// more tests to it, be sure to add them to 
+// com.ibm.richtext.test.unit.FmwkTestTextPanel.test() -
+// otherwise they won't get run!
+
+public class TestTextPanel /*extends TestFmwk*/ {
+
+    private final class TestListener implements TextPanelListener {
+        
+        private int NO_WAY = 0;
+        private int DEFINITELY = 1;
+        private int MAYBE = 2;
+        
+        private final int[] status;
+        
+        TestListener(MTextPanel textPanel) {
+            
+            int length = TextPanelEvent.TEXT_PANEL_LAST -
+                         TextPanelEvent.TEXT_PANEL_FIRST + 1;
+            status = new int[length];
+            textPanel.addListener(this);
+            allowAll();
+        }
+        
+        void refuseAll() {
+            
+            for (int i=0; i < status.length; i++) {
+                status[i] = NO_WAY;
+            }
+        }
+        
+        void allowAll() {
+            
+            for (int i=0; i < status.length; i++) {
+                status[i] = MAYBE;
+            }
+        }
+        
+        void expectEvent(int type) {
+            
+            int index = type - TextPanelEvent.TEXT_PANEL_FIRST;
+            status[index] = DEFINITELY;
+        }
+        
+        void allowEvent(int type) {
+            int index = type - TextPanelEvent.TEXT_PANEL_FIRST;
+            status[index] = MAYBE;
+        }
+        
+        void assertNotExpectingEvents() {
+            assertNotExpectingEvents(false, 0, false);
+        }
+        
+        void assertNotExpectingEvents(int iterCount, boolean exp) {
+            assertNotExpectingEvents(true, iterCount, exp);
+        }
+        
+        private void assertNotExpectingEvents(boolean logDetails, int iterCount, boolean exp) {
+            
+            boolean e = false;
+            for (int i=0; i < status.length; i++) {
+                if (status[i] == DEFINITELY) {
+                    if (logDetails) {
+                        logMessage("Expecting event " +
+                                        (i+TextPanelEvent.TEXT_PANEL_FIRST));
+                        logMessage("iterationCount="+iterCount+";  expexting="+exp);
+                    }
+                    e = true;
+                }
+            }
+            if (e) {
+                reportError("Some events pending");
+            }
+        }
+        
+        public void textEventOccurred(TextPanelEvent event) {
+            
+            int index = event.getID() - TextPanelEvent.TEXT_PANEL_FIRST;
+            if (status[index] == NO_WAY) {
+                reportError("Unexpected event: " + event);
+            }
+            else if (status[index] == DEFINITELY) {
+                status[index] = NO_WAY;
+            }
+        }
+        
+        public boolean respondsToEventType(int type) {
+            
+            return true;
+        }
+    }
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final String STRING_CONTENT = "Some content";
+    private static final int TEST_ITERS = 2;
+    public static final MConstText MOD_TEXT =
+                new StyledText("Styled", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+    private Clipboard fClipboard;
+    private MTextPanel fTextPanel = null;
+    private TestListener fListener = null;
+    private int fRandSeed = 0;
+    private Random rand;
+    
+    private static final int BIG_COMMAND_LOG_SIZE = 40;
+    private static final int SMALL_COMMAND_LOG_SIZE = 8;
+
+    private static final StyleModifier[] paraMods = {
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_LEADING)),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_CENTER),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FLUSH_TRAILING),
+        StyleModifier.createAddModifier(TextAttribute.LINE_FLUSH,
+                                 TextAttribute.FULLY_JUSTIFIED),
+        StyleModifier.createAddModifier(TextAttribute.RUN_DIRECTION,
+                                 TextAttribute.RUN_DIRECTION_RTL),
+        StyleModifier.createAddModifier(TextAttribute.RUN_DIRECTION,
+                                 TextAttribute.RUN_DIRECTION_LTR),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(TextAttribute.LINE_FLUSH)),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(TextAttribute.RUN_DIRECTION))
+    };
+
+    private static final int SELECT = 0;
+    private static final int SET_CARET_POS = 1;
+    private static final int SET_START = 2;
+    private static final int SET_END = 3;
+
+    // using both styles of add modifier: AttributeMap and
+    // key-value, just for variety...
+    private static final StyleModifier[] charMods = {
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.WEIGHT,
+                                 TextAttribute.WEIGHT_BOLD)),
+        StyleModifier.createAddModifier(TextAttribute.FOREGROUND,
+                                 Color.green),
+        StyleModifier.createAddModifier(
+                new AttributeMap(TextAttribute.UNDERLINE,
+                                 TextAttribute.UNDERLINE_ON).addAttributes(
+                new AttributeMap(TextAttribute.SIZE, new Float(6)))),
+        StyleModifier.createReplaceModifier(
+                new AttributeMap(TextAttribute.FAMILY, "Dialog")),
+        StyleModifier.createRemoveModifier(
+                new AttributeSet(
+                new Object[] { TextAttribute.WEIGHT,
+                           TextAttribute.POSTURE,
+                           TextAttribute.UNDERLINE,
+                           TextAttribute.STRIKETHROUGH,
+                           TextAttribute.SUPERSCRIPT })),
+        StyleModifier.IDENTITY
+    };
+
+    private static final char[] TYPED_CHARS = new char[128 - ' ' + 3];
+    static {
+        TYPED_CHARS[0] = 8; // backspace
+        TYPED_CHARS[1] = '\t';
+        TYPED_CHARS[2] = '\n';
+        for (int i=3; i < TYPED_CHARS.length; i++) {
+            TYPED_CHARS[i] = (char) (' ' + i - 3);
+        }
+    }
+
+    public TestTextPanel() {
+
+        fClipboard = new Clipboard("TestTextPanel");
+        incRandSeed();
+    }
+
+    protected void reportError(String message) {
+    
+        System.err.println(message);
+        throw new RuntimeException(message);
+        //super.errln(message);
+    }
+    
+    protected void logMessage(String message) {
+    
+        System.err.println(message);
+        //super.logMessage(message);
+    }
+    
+    public TestTextPanel(MTextPanel panel) {
+        
+        this();
+        setTextPanel(panel);
+    }
+    
+    void incRandSeed() {
+        
+        rand = new Random(++fRandSeed);
+    }
+    
+    int getRandSeed() {
+        
+        return fRandSeed;
+    }
+
+    int randInt(int limit) {
+
+        return randInt(0, limit);
+    }
+
+    int randInt(int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range is 0-length.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    public void test() {
+
+        AttributeMap bold = new AttributeMap(TextAttribute.WEIGHT,
+                                             TextAttribute.WEIGHT_BOLD);
+        MConstText text1 = new StyledText("Test contents. 1234\nHow about it?",
+                                              AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        MConstText text2 = new StyledText("Another test string.", bold);
+
+        _testWithText(text1);
+        _testWithText(text2);
+        _testWithText(new StyledText());
+
+        StyledText big1 = new StyledText();
+        for (int i=0; i < 50; i++) {
+            big1.append(text1);
+        }
+
+        _testWithText(big1);
+        StyledText big2 = new StyledText(text1);
+        for (int i=0; i < 80; i++) {
+            big2.append(text2);
+        }
+
+        _testWithText(big2);
+    }
+    
+    private void setTextPanel(MTextPanel panel) {
+        
+        fTextPanel = panel;
+        fListener = new TestListener(panel);
+    }
+    
+    private void _testWithText(MConstText text) {
+
+        setTextPanel(new TextPanel(text, fClipboard));
+
+        for (int i=0; i < TEST_ITERS; i++) {
+            _testSetSelection();
+            _testModifications(MOD_TEXT, true);
+            _testEditMenuOperations(fClipboard);
+            _testModFlag(fTextPanel.getCommandLogSize());
+            _testCommandLogControl();
+        }
+    }
+
+    private void _testSelection(int function, 
+                               final int aStart,
+                               final int aLimit) {
+
+        int oldStart = fTextPanel.getSelectionStart();
+        int oldLimit = fTextPanel.getSelectionEnd();
+
+        final int length = fTextPanel.getTextLength();
+        
+        int start = aStart;
+        int limit = aLimit;
+        
+        if (start < 0) {
+            start = 0;
+        }
+        else if (start > length) {
+            start = length;
+        }
+
+        if (limit < start) {
+            limit = start;
+        }
+        else if (limit > length) {
+            limit = length;
+        }
+        
+        fListener.refuseAll();
+        
+        if (oldStart != start || oldLimit != limit) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            fListener.allowEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        }
+        if ((oldStart==oldLimit) != (start==limit)) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        if (oldStart==oldLimit) {
+            fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+
+        switch(function) {
+            case SELECT:
+                fTextPanel.select(aStart, aLimit);
+                break;
+            case SET_CARET_POS:
+                fTextPanel.setCaretPosition(aStart);
+                break;
+            case SET_START:
+                fTextPanel.setSelectionStart(aStart);
+                break;
+            case SET_END:
+                fTextPanel.setSelectionEnd(aLimit);
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid function");
+        }
+        
+        if (fTextPanel.getSelectionStart() != start) {
+            reportError("getSelectionStart is incorrect after set");
+        }
+        if (fTextPanel.getSelectionEnd() != limit) {
+            reportError("getSelectionEnd is incorrect after set");
+        }
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    private void setAndTestSelection(int start, int limit) {
+        
+        _testSelection(SELECT, start, limit);
+    }
+
+    private void setAndTestCaret(int caretPos) {
+
+        _testSelection(SET_CARET_POS, caretPos, caretPos);
+    }
+
+    private void setAndTestSelectionStart(int selStart) {
+
+        int limit = fTextPanel.getSelectionEnd();
+        _testSelection(SET_START, selStart, limit);
+    }
+
+    private void setAndTestSelectionEnd(int selEnd) {
+
+        int start = fTextPanel.getSelectionStart();
+        _testSelection(SET_END, start, selEnd);
+    }
+
+    public void _testSetSelection() {
+
+        int textLength = fTextPanel.getTextLength();
+        if (textLength != fTextPanel.getText().length()) {
+            reportError("Text panel length is not correct");
+        }
+
+        setAndTestSelection(0, textLength / 2);
+        setAndTestSelection(textLength / 2, textLength);
+        setAndTestSelection(0, textLength);
+        setAndTestSelection(-1, textLength+1);
+        if (textLength > 0) {
+            setAndTestSelection(0, textLength - 1);
+            setAndTestSelection(0, 1);
+        }
+
+        final int incAmount = Math.max(1, textLength/5);
+        for (int index = 0; index <= textLength; index += incAmount) {
+
+            setAndTestCaret(index);
+            setAndTestSelectionStart(textLength-index);
+            setAndTestSelectionEnd(textLength);
+            setAndTestSelectionStart(0);
+            setAndTestSelectionEnd(textLength-index);
+        }
+    }
+
+    /**
+     * Text must be editable to pass this test.
+     */
+    public void _testModifications(MConstText insertionText,
+                                   boolean restoreOldText) {
+
+        MConstText oldText = new StyledText(fTextPanel.getText());
+        final int insLength = insertionText.length();
+
+        fListener.allowAll();
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fTextPanel.append(insertionText);
+        fListener.assertNotExpectingEvents();
+        
+        if (fTextPanel.getSelectionStart() != oldText.length() + insLength) {
+            reportError("Append didn't result in correct selection");
+        }
+
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fTextPanel.insert(insertionText, 0);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+        
+        if (fTextPanel.getSelectionStart() != insLength) {
+            reportError("Insert didn't result in correct selection");
+        }
+
+        fTextPanel.replaceRange(insertionText, insLength, insLength+oldText.length());
+        if (fTextPanel.getSelectionStart() != insLength*2) {
+            reportError("Replace didn't result in correct selection");
+        }
+        if (fTextPanel.getSelectionEnd() != insLength*2) {
+            reportError("Replace didn't result in correct selection");
+        }
+        if (fTextPanel.getTextLength() != insLength*3) {
+            reportError("textLength is incorrect");
+        }
+
+        if (restoreOldText) {
+            fTextPanel.setText(oldText);
+            if (fTextPanel.getSelectionStart() != oldText.length()) {
+                reportError("setText didn't result in correct selection");
+            }
+            if (fTextPanel.getTextLength() != oldText.length()) {
+                reportError("length incorrect after setText");
+            }
+        }
+        
+        fListener.allowAll();
+    }
+
+    private static int iterationCount = 0;
+    public void _testCommandLogControl() {
+
+        fListener.refuseAll();
+        iterationCount++;
+        boolean exp = false;
+        if (fTextPanel.canRedo() || BIG_COMMAND_LOG_SIZE==0) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            exp = true;
+        }
+        //try {
+            fTextPanel.setCommandLogSize(BIG_COMMAND_LOG_SIZE);
+            
+            if (fTextPanel.canRedo()) {
+                reportError("canRedo after setCommandLogSize");
+            }
+            fListener.assertNotExpectingEvents(iterationCount, exp);
+        //}
+        //catch(Error e) {
+        //    logMessage("iterationCount="+iterationCount+";  expexting="+exp);
+        //    throw e;
+        //}
+
+        MConstText insText = new StyledText("7",
+                                AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        final int origLength = fTextPanel.getTextLength();
+        int start = origLength / 3;
+        
+        fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fListener.allowEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+        for (int i=start; i < BIG_COMMAND_LOG_SIZE+start; i++) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+                fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+            }
+            fTextPanel.insert(insText, i);
+            fListener.assertNotExpectingEvents();
+        }
+
+        fListener.allowEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        
+        for (int i=0; i < BIG_COMMAND_LOG_SIZE-1; i++) {
+            fListener.expectEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            fTextPanel.undo();
+            fListener.assertNotExpectingEvents();
+        }
+        if (!fTextPanel.canUndo()) {
+            reportError("Command log is too small");
+        }
+        
+        fListener.allowAll();
+        fTextPanel.undo();
+        if (fTextPanel.canUndo()) {
+            reportError("Command log is too large");
+        }
+
+        if (fTextPanel.getTextLength() != origLength * insText.length()) {
+            reportError("Text length was not restored");
+        }
+
+        for (int i=0; i < BIG_COMMAND_LOG_SIZE; i++) {
+            fTextPanel.redo();
+        }
+
+        if (fTextPanel.getTextLength() != origLength+BIG_COMMAND_LOG_SIZE) {
+            reportError("Text length was not restored after redo");
+        }
+
+        if (fTextPanel.canRedo()) {
+            reportError("Should not be able to redo");
+        }
+
+        fTextPanel.undo();
+
+        fTextPanel.setCommandLogSize(SMALL_COMMAND_LOG_SIZE);
+
+        if (fTextPanel.canRedo()) {
+            reportError("canRedo after setCommandLogSize(small)");
+        }
+
+        for (int i=0; i < SMALL_COMMAND_LOG_SIZE; i++) {
+            if (!fTextPanel.canUndo()) {
+                reportError("should be able to undo");
+            }
+            fTextPanel.undo();
+        }
+        if (fTextPanel.canUndo()) {
+            reportError("should not be able to undo after setCommandLogSize(small)");
+        }
+        if (!fTextPanel.canRedo()) {
+            reportError("why can't this redo???");
+        }
+        fTextPanel.redo();
+
+        fTextPanel.clearCommandLog();
+
+        if (fTextPanel.canUndo() || fTextPanel.canRedo()) {
+            reportError("Command log wasn't cleared");
+        }
+    }
+
+    /**
+     * Test cut, copy, paste, undo, redo, clear, canUndo, canRedo.
+     * Text must be editable to pass this test.
+     */
+    public void _testEditMenuOperations(Clipboard clipboard) {
+        
+        if (clipboard != null) {
+            // test paste and undo / redo
+            Transferable tr = new StringSelection(STRING_CONTENT);
+            clipboard.setContents(tr, new ClipboardOwner() {
+                public void lostOwnership(Clipboard c, Transferable t) {
+                }
+            });
+            if (!fTextPanel.clipboardNotEmpty()) {
+                reportError("MTextPanel doesn't recognize string content.");
+            }
+
+            fTextPanel.setCaretPosition(fTextPanel.getSelectionStart());
+            int oldLength = fTextPanel.getTextLength();
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != oldLength + STRING_CONTENT.length()) {
+                reportError("Text length is wrong after paste.");
+            }
+
+            if (!fTextPanel.canUndo()) {
+                reportError("canUndo should be true");
+            }
+            fTextPanel.undo();
+            if (fTextPanel.getTextLength() != oldLength) {
+                reportError("Length is wrong after undo");
+            }
+            if (!fTextPanel.canRedo()) {
+                reportError("canRedo should be true");
+            }
+            fTextPanel.redo();
+            if (fTextPanel.getTextLength() != oldLength + STRING_CONTENT.length()) {
+                reportError("Text length is wrong after redo.");
+            }
+        }
+
+        int origLength = fTextPanel.getTextLength();
+        fTextPanel.selectAll();
+        fTextPanel.clear();
+        if (fTextPanel.getTextLength() != 0) {
+            reportError("Length is nonzero after clear");
+        }
+        if (!fTextPanel.canUndo()) {
+            reportError("canUndo should be true");
+        }
+        fTextPanel.undo();
+        if (fTextPanel.getTextLength() != origLength) {
+            reportError("Old text not restored");
+        }
+
+        if (origLength > 0) {
+
+            fTextPanel.select(0, 1);
+            fTextPanel.cut();
+            if (fTextPanel.getTextLength() != origLength-1) {
+                reportError("Length wrong after cut");
+            }
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != origLength) {
+                reportError("Length wrong after paste");
+            }
+            fTextPanel.select(0, origLength);
+            fTextPanel.copy();
+            fTextPanel.setCaretPosition(0);
+            fTextPanel.paste();
+            if (fTextPanel.getTextLength() != 2*origLength) {
+                reportError("Length wrong after paste");
+            }
+            fTextPanel.undo();
+            if (fTextPanel.getTextLength() != origLength) {
+                reportError("Length wrong after undo");
+            }
+        }
+    }
+
+    private void setAndTestModFlag(final int depth,
+                                   boolean modified) {
+
+        fTextPanel.setModified(modified);
+        for (int i=0; i < depth; i++) {
+            if (!fTextPanel.canUndo()) {
+                reportError("Panel cannot undo at valid depth.  Depth=" + i);
+            }
+            fTextPanel.undo();
+            fTextPanel.setModified(modified);
+        }
+
+        // check that all mod flags are false:
+        if (fTextPanel.isModified() != modified) {
+            reportError("isModified is not correct");
+        }
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.redo();
+            if (fTextPanel.isModified() != modified) {
+                reportError("isModified is not correct");
+            }
+        }
+    }
+
+    /**
+     * Make <code>depth</code> modifications to the text in textfTextPanel.
+     * Set the modified flag on each operation, and then retrieve its
+     * value.  Finally, undo the modifications.
+     */
+    public void _testModFlag(final int depth) {
+
+        final int oldLength = fTextPanel.getTextLength();
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.insert(MOD_TEXT, 0);
+        }
+
+        setAndTestModFlag(depth, false);
+        setAndTestModFlag(depth, true);
+
+        for (int i=0; i < depth; i++) {
+            fTextPanel.undo();
+        }
+
+        if (fTextPanel.getTextLength() != oldLength) {
+            reportError("Undo did not restore old text.");
+        }
+    }
+
+    void applyCharacterStyle() {
+
+        StyleModifier stMod = charMods[randInt(charMods.length)];
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+            fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+            fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        }
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        fTextPanel.modifyCharacterStyleOnSelection(stMod);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+
+    void applyParagraphStyle() {
+
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.SELECTION_STYLES_CHANGED);
+        fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        StyleModifier stMod = paraMods[randInt(paraMods.length)];
+        fTextPanel.modifyParagraphStyleOnSelection(stMod);
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    void applyKeyRemap() {
+
+        fListener.refuseAll();
+        fListener.expectEvent(TextPanelEvent.KEYREMAP_CHANGED);
+        int op = randInt(5);
+        switch (op) {
+
+            case 0:
+                fTextPanel.setKeyRemap(KeyRemap.getIdentityRemap());
+                break;
+
+            case 1:
+                fTextPanel.setKeyRemap(KeyRemap.getArabicTransliteration());
+                break;
+
+            case 2:
+                fTextPanel.setKeyRemap(KeyRemap.getHebrewTransliteration());
+                break;
+
+            case 3:
+                fTextPanel.setKeyRemap(KeyRemap.getIsraelNikud());
+                break;
+            
+            case 4:
+                //fTextPanel.setKeyRemap(KeyRemap.getThaiKetmanee());
+                fTextPanel.setKeyRemap(KeyRemap.getIsraelNikud());
+                break;
+            
+            default:
+                reportError("Invalid operation!");
+        }
+        fListener.assertNotExpectingEvents();
+        fListener.allowAll();
+    }
+
+    void resizeFrame(Frame frame) {
+
+        fListener.refuseAll();
+        fListener.allowEvent(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+        int wd = randInt(50, 1000);
+        int ht = randInt(20, 800);
+
+        frame.setSize(wd, ht);
+        fListener.allowAll();
+    }
+
+    void selectText() {
+
+        int selStart = randInt(-10, fTextPanel.getTextLength());
+        int selLimit = randInt(0, fTextPanel.getTextLength() + 10);
+        _testSelection(SELECT, selStart, selLimit);
+    }
+
+    void undoRedo() {
+
+        final int opCount = randInt(-10, 15);
+
+        for (int i=opCount; i <= 0; i++) {
+            fTextPanel.redo();
+        }
+        for (int i=0; i < opCount; i++) {
+            fTextPanel.undo();
+        }
+    }
+    
+    void typeKeys() {
+
+        final int keyCount = randInt(1, 100);
+        TextPanel textPanel = (TextPanel) fTextPanel;
+        
+        KeyEventForwarder forwarder = new KeyEventForwarder(textPanel);
+        
+        fListener.refuseAll();
+        fListener.allowEvent(TextPanelEvent.UNDO_STATE_CHANGED);
+        
+        if (fTextPanel.getSelectionStart() != fTextPanel.getSelectionEnd()) {
+            fListener.expectEvent(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        
+        for (int i=0; i < keyCount; i++) {
+            char typedChar = TYPED_CHARS[randInt(TYPED_CHARS.length)];
+            KeyEvent event = new KeyEvent(textPanel,
+                                          KeyEvent.KEY_TYPED,
+                                          0,
+                                          0,
+                                          KeyEvent.VK_UNDEFINED,
+                                          typedChar);
+            if (typedChar == 8 || typedChar == 0x7f) {
+                fListener.allowEvent(TextPanelEvent.TEXT_CHANGED);
+                fListener.allowEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            }
+            else {
+                fListener.expectEvent(TextPanelEvent.TEXT_CHANGED);
+                fListener.expectEvent(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            }
+            forwarder.handleKeyEvent(event);
+            //try {
+                fListener.assertNotExpectingEvents(i, false);
+            //}
+            //catch(Error e) {
+            //    logMessage("i="+i+"; typedChar="+Integer.toHexString(typedChar));
+            //    throw e;
+            //}
+        }
+        fListener.allowAll();
+    }
+}
diff --git a/src/com/ibm/richtext/test/TypingPerfTest.java b/src/com/ibm/richtext/test/TypingPerfTest.java
new file mode 100644
index 0000000..9c8a518
--- /dev/null
+++ b/src/com/ibm/richtext/test/TypingPerfTest.java
@@ -0,0 +1,223 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test;
+
+import java.awt.Button;
+import java.awt.GridLayout;
+import java.awt.Frame;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import java.io.File;
+import java.io.PrintWriter;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+import com.ibm.richtext.textpanel.KeyEventForwarder;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.awtui.TextFrame;
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.demo.EditDemo;
+import com.ibm.richtext.demo.TextDocument;
+
+public class TypingPerfTest implements ActionListener {
+    private TextFrame fTextFrame;
+    private KeyEventForwarder fKeyEventForwarder;
+    private PrintWriter fOut;
+
+    //private static final String fgAtStartCommand = "Insert at start";
+    //private static final String fgAtEndCommand = "Insert at end";
+    private static final String fgFwdDelete = "Forward delete";
+    private static final String fgBackspace = "Backspace";
+    private static final String fgAtCurrentPosCommand = "Insert at current position";
+    private static final String fgLotsOfTextCommand = "Insert a lot of text";
+
+    private static final String USAGE = "Usage: java com.ibm.richtext.test.TypingPerfTest [file] [-insertionText text]";
+    private char[] fInsText;
+
+    public static void main(String[] args) {
+
+        // not used OutputStream outStream = null;
+        PrintWriter writer = new PrintWriter(System.out);
+
+        MConstText text = Declaration.fgDeclaration;
+        char[] insText = "The quick brown fox jumps over the lazy dog. The end. ".toCharArray();
+        
+        int index = 0;
+        while (index < args.length) {
+            if (args[index].equals("-insertionText")) {
+                if (args.length == ++index) {
+                    throw new Error(USAGE);
+                }
+                insText = args[index++].toCharArray();
+            }
+            else {
+                // This will try MConstText first, then plain text.
+                TextDocument doc = EditDemo.getDocumentFromFile(new File(args[index++]));
+                if (doc == null) {
+                    throw new Error("Couldn't open file "+args[index-1]);
+                }
+                text = doc.getText();
+            }
+        }
+        
+        if (index != args.length) {
+            throw new Error(USAGE);
+        }
+        
+        new TypingPerfTest(writer, text, insText);
+    }
+
+    public TypingPerfTest(PrintWriter out, MConstText text, char[] insText) {
+
+        fInsText = insText;
+        fTextFrame = new TextFrame(text, "", null);
+        TextPanel textPanel = (TextPanel) fTextFrame.getTextPanel();
+        fKeyEventForwarder = new KeyEventForwarder(textPanel);
+        fOut = out;
+
+        DateFormat df = DateFormat.getDateTimeInstance();
+        out.println("Test date: " + df.format(new Date()));
+
+        fTextFrame.setSize(500, 700);
+        fTextFrame.show();
+
+        Frame f = new Frame("Typing Perf Test");
+        f.setLayout(new GridLayout(0, 1));
+        Button b;
+/*
+        b = new Button(fgAtStartCmd);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgAtEndCmd);
+        b.addActionListener(this);
+        f.add(b);
+*/
+        b = new Button(fgAtCurrentPosCommand);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgLotsOfTextCommand);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgFwdDelete);
+        b.addActionListener(this);
+        f.add(b);
+
+        b = new Button(fgBackspace);
+        b.addActionListener(this);
+        f.add(b);
+
+        f.doLayout();
+        WindowAdapter closer = new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                fOut.close();
+                System.exit(0);
+            }
+        };
+        
+        f.addWindowListener(closer);
+        fTextFrame.addWindowListener(closer);
+        
+        f.setSize(200, 80);
+        f.show();
+    }
+
+    public void actionPerformed(ActionEvent evt) {
+        if (evt.getActionCommand().equals(fgAtCurrentPosCommand)) {
+            insertAtCurrentPos(1);
+        }
+        else if (evt.getActionCommand().equals(fgLotsOfTextCommand)) {
+            insertAtCurrentPos(8);
+        }
+        else if (evt.getActionCommand().equals(fgFwdDelete)) {
+            forwardDelete(1);
+        }
+        else if (evt.getActionCommand().equals(fgBackspace)) {
+            backspace(1);
+        }
+    }
+
+    private void insertAtCurrentPos(final int times) {
+
+        fTextFrame.toFront();
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, KeyEvent.KEY_TYPED, 0, 0, 0, fInsText[i]);
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+
+    private void forwardDelete(final int times) {
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, 0, 0, 0, KeyEvent.VK_DELETE, '\u00FF');
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+
+    private void backspace(final int times) {
+
+        System.gc();
+
+        long startTime = System.currentTimeMillis();
+
+        for (int t=0; t < times; t++) {
+            for (int i=0; i < fInsText.length; i++) {
+
+                KeyEvent event = new KeyEvent(fTextFrame, 0, 0, 0, KeyEvent.VK_BACK_SPACE, '\u0010');
+                fKeyEventForwarder.handleKeyEvent(event);
+            }
+        }
+
+        long time = System.currentTimeMillis() - startTime;
+
+        fOut.println("Total time: " + time);
+        fOut.println("Millis per character: " + (time / (fInsText.length*times)));
+        fOut.flush();
+    }
+}
diff --git a/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java b/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java
new file mode 100644
index 0000000..589b162
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/FmwkTestTextPanel.java
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.richtext.test.TestTextPanel;
+
+public final class FmwkTestTextPanel extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+    
+        new FmwkTestTextPanel().run(args);
+    }
+    
+    private TTP ttp;
+    
+    public FmwkTestTextPanel() {
+    
+        ttp = new TTP();
+    }
+    
+    public void test() {
+    
+        ttp.test();
+        // If TestTextPanel gets more tests, add them here
+    }
+
+    private final class TTP extends TestTextPanel {
+    
+        protected void reportError(String message) {
+        
+            errln(message);
+        }
+        
+        protected void logMessage(String message) {
+        
+            logln(message);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestAll.java b/src/com/ibm/richtext/test/unit/TestAll.java
new file mode 100644
index 0000000..735ee53
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAll.java
@@ -0,0 +1,38 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+public class TestAll extends TestGroup {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+    
+    public TestAll() {
+        super(new String[] {
+            "TestAttributeSet",
+            "TestAttributeMap",
+            "TestFormatter",
+            "TestMText",
+            "TestParagraphStyles",
+            "TestMTextStreaming",
+            "FmwkTestTextPanel",
+        },
+              "Richtext Unit Tests");
+    }
+}
diff --git a/src/com/ibm/richtext/test/unit/TestAttributeMap.java b/src/com/ibm/richtext/test/unit/TestAttributeMap.java
new file mode 100644
index 0000000..ed33768
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAttributeMap.java
@@ -0,0 +1,415 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import java.util.Enumeration;
+
+// Java2 imports
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Map.Entry;
+
+
+public class TestAttributeMap extends TestFmwk  {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+
+    // There are JDK 1.1 versions of AttributeMap and AttributeSet.
+    // Some of the tests in this class require Java 2 API's.  I have
+    // tried to isolate these tests by conditionalizing them on
+    // this static variable.  If you are back-porting to 1.1, remove
+    // the Java 2 tests ONLY.
+    private static final boolean gJDK11 = false;
+
+    public static void main(String[] args) throws Exception {
+
+        new TestAttributeMap().run(args);
+    }
+
+    private AttributeSet maps;  // A Set of AttributeMaps
+    private AttributeSet sets;  // A Set of Sets
+
+    private static final class TestAttribute extends TextAttribute {
+
+        /**
+         * For serialization
+         */
+        private static final long serialVersionUID = 2092805803764400714L;
+
+        TestAttribute(String name) {
+            super(name);
+        }
+    }
+
+    private static final TestAttribute[] attributes = {
+        new TestAttribute("0"), new TestAttribute("1"), new TestAttribute("2")
+    };
+
+    private static final Object[] values = {
+        "Hello world", new Float(-42), new Object(), new AttributeMap(new TestAttribute("3"), "HH")
+    };
+
+    /**
+     * Returns lhs.equals(rhs) - but also checks for symmetry, and
+     * consistency with hashCode().
+     */
+    private boolean equalMaps(AttributeMap lhs, Object rhs) {
+
+        boolean equal = lhs.equals(rhs);
+        if (equal != (rhs.equals(lhs))) {
+            errln("AttributeMap.equals is not symetric");
+        }
+        if (equal) {
+            if (lhs.hashCode() != rhs.hashCode()) {
+                errln("AttributeMaps are equal but hashCodes differ");
+            }
+        }
+        return equal;
+    }
+
+    public TestAttributeMap() {
+
+        maps = AttributeSet.EMPTY_SET;
+        maps = maps.addElement(AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        maps.addElement(new AttributeMap(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB));
+        maps.addElement(new AttributeMap(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER));
+
+        for (int i=0; i < attributes.length; i++) {
+            for (int j=0; j < values.length; j++) {
+                maps = maps.addElement(new AttributeMap(attributes[i], values[j]));
+            }
+        }
+
+        AttributeMap bigMap = new AttributeMap(new TestAttribute("4"), "value");
+        for (int i=0; i < Math.min(attributes.length, values.length); i++) {
+            bigMap = bigMap.addAttribute(attributes[i], values[values.length-i-1]);
+        }
+        maps = maps.addElement(bigMap);
+
+        sets = AttributeSet.EMPTY_SET;
+
+        sets = new AttributeSet(AttributeSet.EMPTY_SET);
+
+        for (int i=0; i < attributes.length; i++) {
+            AttributeSet newSet = new AttributeSet(attributes[i]);
+            sets = sets.addElement(newSet);
+        }
+
+        AttributeSet allAttrs = AttributeSet.EMPTY_SET;
+        for (int i=0; i < attributes.length; i++) {
+            allAttrs = allAttrs.addElement(attributes[i]);
+        }
+
+        sets = sets.addElement(allAttrs);
+    }
+
+    /**
+     * Run tests on AttributeMap.  If a test fails an exception will propogate out
+     * of this method.
+     */
+    public void test() {
+
+        easyTests();
+
+        Enumeration mapIter = maps.elements();
+        while (mapIter.hasMoreElements()) {
+
+            AttributeMap testMap = (AttributeMap) mapIter.nextElement();
+
+            _testModifiers(testMap);
+            _testViews(testMap);
+
+            Enumeration unionIter = maps.elements();
+            while (unionIter.hasMoreElements()) {
+                _testUnionWith(testMap, (AttributeMap) unionIter.nextElement());
+            }
+
+            Enumeration setIter = sets.elements();
+            while (setIter.hasMoreElements()) {
+                AttributeSet testSet = (AttributeSet) setIter.nextElement();
+                _testIntersectWith(testMap, testSet);
+                _testRemoveAttributes(testMap, testSet);
+            }
+        }
+    }
+
+    /**
+     * Invoke modifiers on map.  All should throw
+     * UnsupportedOperationException, and leave map unmodified.
+     */
+    void _testModifiers(AttributeMap map) {
+
+        if (gJDK11) {
+            return;
+        }
+        
+        AttributeMap originalMap = new AttributeMap(map);
+
+        try {
+            map.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+            errln("Put should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            Object key = TextAttribute.WEIGHT;
+            Iterator iter = map.keySet().iterator();
+            if (iter.hasNext()) {
+                key = iter.next();
+            }
+            map.remove(key);
+            errln("Set should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            map.putAll(map);
+            errln("putAll should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        try {
+            map.clear();
+            errln("clear should throw UnsupportedOperationException.");
+        }
+        catch(UnsupportedOperationException e) {
+            System.out.print("");
+        }
+
+        if (!originalMap.equals(map)) {
+            errln("Modifiers changed map.");
+        }
+    }
+
+    /**
+     * Ensure that map.addAttributes(addMap) is equivalent to calling
+     * map.add on all of addMap's entries.
+     */
+    void _testUnionWith(AttributeMap map, AttributeMap addMap) {
+
+        AttributeMap lhs = map.addAttributes(addMap);
+
+        AttributeMap rhs = map;
+
+        Enumeration iter = addMap.getKeySet().elements();
+        while (iter.hasMoreElements()) {
+            Object attr = iter.nextElement();
+            Object value = addMap.get(attr);
+            rhs = rhs.addAttribute(attr, value);
+        }
+
+        if (!equalMaps(lhs, rhs)) {
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that map.removeAttributes(remove) is equivalent to calling
+     * map.removeAttribute on remove's elements.
+     */
+    void _testRemoveAttributes(AttributeMap map, AttributeSet remove) {
+
+        AttributeMap lhs = map.removeAttributes(remove);
+
+        AttributeMap rhs = map;
+
+        Enumeration iter = remove.elements();
+        while (iter.hasMoreElements()) {
+            Object attr = iter.nextElement();
+            rhs = rhs.removeAttribute(attr);
+        }
+
+        if (!equalMaps(lhs, rhs)) {
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that map.intersectWith(intersect) is equivalent to
+     * map.removeAttributes(map.keySet() - intersect);
+     */
+    void _testIntersectWith(AttributeMap map, AttributeSet intersect) {
+
+        AttributeMap lhs = map.intersectWith(intersect);
+
+        AttributeSet keySet = map.getKeySet();
+        AttributeSet removeSet = keySet.subtract(intersect);
+        AttributeMap rhs = map.removeAttributes(removeSet);
+
+        if (!equalMaps(lhs, rhs)) {
+            map.intersectWith(intersect);
+            logln("intersect: " + intersect);
+            logln("keySet: " + keySet);
+            logln("removeSet: " + removeSet);
+            logln("map: " + map);
+            logln("lhs: " + lhs);
+            logln("rhs: " + rhs);
+            errln("Maps are not equal.");
+        }
+    }
+
+    /**
+     * Ensure that:
+     *    map, map.keySet(), and map.entrySet() are the same size;
+     *    map.containsKey() is true for every key in keySet();
+     *    map.containsValue() is true for every value in values;
+     *    every entry key is in keySet, every entry value is in map.values();
+     *    map.get() is consistent with entry's key, value;
+     *    sum of hashcodes of entries equals map.hashCode().
+     */
+    void _testViews(AttributeMap map) {
+
+        AttributeSet keySet = map.getKeySet();
+
+        Enumeration keyIter = keySet.elements();
+        while (keyIter.hasMoreElements()) {
+            if (!map.containsKey(keyIter.nextElement())) {
+                errln("keySet contains key not in map");
+            }
+        }
+
+        if (gJDK11) {
+            return;
+        }
+        
+        Collection vals = map.values();
+        Set entrySet = map.entrySet();
+
+        if (keySet.size() != map.size() || entrySet.size() != map.size()) {
+            errln("Set sizes are inconsistent with map size.");
+        }
+
+        int hashCode = 0;
+
+        Iterator valueIter = vals.iterator();
+        while (valueIter.hasNext()) {
+            if (!map.containsValue(valueIter.next())) {
+                errln("value set contains value not in map");
+            }
+        }
+
+        Iterator entryIter = entrySet.iterator();
+        while (entryIter.hasNext()) {
+
+            Entry entry = (Entry) entryIter.next();
+
+            Object key = entry.getKey();
+            if (!keySet.contains(key)) {
+                errln("Entry key is not in key set.");
+            }
+
+            Object value = map.get(entry.getKey());
+            if (!vals.contains(value)) {
+                errln("Entry value is not in value set.");
+            }
+
+            if (map.get(key) != value) {
+                errln("map.get did not return entry value.");
+            }
+
+            hashCode += entry.hashCode();
+        }
+
+        if (hashCode != map.hashCode()) {
+            errln("map hashcode is not sum of entry hashcodes.");
+        }
+    }
+
+    /**
+     * Look for correct behavior in obvious cases.
+     */
+    void easyTests() {
+
+        AttributeMap map = new AttributeMap();
+        if (!map.equals(AttributeMap.EMPTY_ATTRIBUTE_MAP)) {
+            errln("Default-constructed map is not equal to empty map.");
+        }
+
+        map = map.addAttribute(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        Object otherMap = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        if (!map.equals(otherMap)) {
+            errln("Maps are inconsistent after map.add");
+        }
+
+        otherMap = map.addAttributes(map);
+        if (!equalMaps(map,otherMap)) {
+            errln("Maps are inconsistent after addAttributes");
+        }
+
+        map = map.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
+
+        if (map.size() != 2) {
+            errln("Map size is wrong.  map="+map);
+        }
+
+        if (equalMaps(map,otherMap)) {
+            errln("Maps should not be equal");
+        }
+
+        Object posture = new Float(0);
+        map = map.addAttribute(TextAttribute.POSTURE, posture);
+
+        if (map.size() != 2) {
+            errln("Map size is wrong");
+        }
+
+        if (!map.get(TextAttribute.POSTURE).equals(posture)) {
+            errln("Map element is wrong");
+        }
+
+        map = map.removeAttribute(TextAttribute.UNDERLINE);
+
+        if (map.size() != 1) {
+            errln("Map size is wrong");
+        }
+
+        if (map.get(TextAttribute.UNDERLINE) != null) {
+            errln("Map should not have element");
+        }
+
+        // map has POSTURE_REGULAR.  If we addAttributes a map with
+        // POSTURE_ITALIC the new map should have POSTURE_ITALIC
+
+        map = map.addAttributes(new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE));
+        if (map.get(TextAttribute.POSTURE) != TextAttribute.POSTURE_OBLIQUE) {
+            errln("Map element is wrong");
+        }
+
+        _testModifiers(map);
+        _testViews(map);
+
+        Enumeration mapIter = maps.elements();
+        while (mapIter.hasMoreElements()) {
+            AttributeMap testMap = (AttributeMap) mapIter.nextElement();
+            Object newValue = new Object();
+            AttributeMap newMap = testMap.addAttribute(attributes[0], newValue);
+            if (newMap.get(attributes[0]) != newValue) {
+                errln("Did not get expected value back.  map=" + map);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestAttributeSet.java b/src/com/ibm/richtext/test/unit/TestAttributeSet.java
new file mode 100644
index 0000000..847daad
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestAttributeSet.java
@@ -0,0 +1,89 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import java.util.Enumeration;
+
+public class TestAttributeSet extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestAttributeSet().run(args);
+    }
+
+    public void test() {
+
+        final Object elem1 = new Object();
+        final Object elem2 = new Float(4);
+        final Object elem3 = "String";
+        final Object elem4 = Boolean.FALSE;
+
+        AttributeSet set1 = new AttributeSet(new Object[] {elem1, elem2, elem3});
+        if (set1.size() != 3) {
+            errln("Size is wrong.");
+        }
+
+        if (set1.contains(elem4)){
+            errln("Set contents are wrong.");
+        }
+
+        if (!set1.contains(elem1)) {
+            errln("Set contents are wrong.");
+        }
+
+        AttributeSet set2 = new AttributeSet(elem4);
+
+        if (set2.size() != 1) {
+            errln("Size is wrong.");
+        }
+
+        if (!set2.contains(elem4)){
+            errln("Set contents are wrong.");
+        }
+
+        if (set2.contains(elem1)) {
+            errln("Set contents are wrong.");
+        }
+
+        Enumeration iter = set2.elements();
+        if (!iter.nextElement().equals(elem4)) {
+            errln("Invalid object in iterator.");
+        }
+
+        AttributeSet union = set2.unionWith(set1);
+        if (!set1.unionWith(set2).equals(union)) {
+            errln("unionWith is not commutative.");
+        }
+
+        if (!union.contains(elem1) || !union.contains(elem4)) {
+            errln("Set contents are wrong.");
+        }
+
+        if (!set1.addElement(elem4).equals(union)) {
+            errln("addElement is wrong.");
+        }
+
+        if (!union.intersectWith(set1).equals(set1)) {
+            errln("intersectWith is wrong.");
+        }
+
+        if (!union.subtract(set1).equals(set2)) {
+            errln("subtract is wrong.");
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestFormatter.java b/src/com/ibm/richtext/test/unit/TestFormatter.java
new file mode 100644
index 0000000..ee419a1
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestFormatter.java
@@ -0,0 +1,245 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.StyledText;
+
+import com.ibm.richtext.textformat.TextOffset;
+import com.ibm.richtext.textformat.MFormatter;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.image.BufferedImage;
+
+import java.util.Hashtable;
+
+public final class TestFormatter extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) throws Exception {
+
+        new TestFormatter().run(args);
+    }
+
+    private static final Point ORIGIN = new Point(0, 0);
+
+    private static final AttributeMap DEFAULTS;
+    static {
+        final Float floatZero = new Float(0.0f);
+
+        Hashtable defaults = new Hashtable();
+        defaults.put(TextAttribute.FAMILY, "Serif");
+        defaults.put(TextAttribute.WEIGHT, new Float(1.0f));
+        defaults.put(TextAttribute.POSTURE, floatZero);
+        defaults.put(TextAttribute.SIZE, new Float(18.0f));
+        defaults.put(TextAttribute.SUPERSCRIPT, new Integer(0));
+        defaults.put(TextAttribute.FOREGROUND, Color.black);
+        defaults.put(TextAttribute.UNDERLINE, new Integer(-1));
+        defaults.put(TextAttribute.STRIKETHROUGH, Boolean.FALSE);
+
+        defaults.put(TextAttribute.EXTRA_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.FIRST_LINE_INDENT, floatZero);
+        defaults.put(TextAttribute.MIN_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_LEADING);
+        defaults.put(TextAttribute.LEADING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TRAILING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TAB_RULER, new StandardTabRuler());
+
+        DEFAULTS = new AttributeMap(defaults);
+    }
+    
+    // arg to testLineExceptions
+    private static final int UNKNOWN = -1;
+
+    private Graphics fGraphics;
+
+    public TestFormatter() {
+
+        fGraphics = new BufferedImage(100, 100, BufferedImage.TYPE_3BYTE_BGR).getGraphics();
+        
+        //JDK 1.1:
+        //Frame f = new Frame();
+        //f.show();
+        //fGraphics = f.getGraphics();
+    }
+
+    private String fiveLines = "a\nb\nc\nd\ne";
+    private String twelveLines = fiveLines + "\n" + fiveLines + "\nf\n";
+    AttributeMap PLAIN = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+    public void test() {
+
+        MConstText text = new StyledText(fiveLines, PLAIN);
+        _testLineExceptions(makeFormatter(text, 100, true), 5);
+        _testLineAccess(makeFormatter(text, 100, true), 5);
+
+        text = new StyledText(twelveLines, PLAIN);
+        _testLineExceptions(makeFormatter(text, 3, false), 12);
+        _testLineAccess(makeFormatter(text, 100, true), 12);
+
+        _testWithModification();
+    }
+
+    private void _testWithModification() {
+
+        MText text = new StyledText(fiveLines, PLAIN);
+        MFormatter formatter = makeFormatter(text, 100, true);
+        Rectangle viewRect = new Rectangle(0, 0, 100, Integer.MAX_VALUE);
+
+        formatter.stopBackgroundFormatting();
+        text.append(new StyledText("\n", PLAIN));
+        formatter.updateFormat(text.length()-1, 1, viewRect, ORIGIN);
+
+        _testLineAccess(formatter, 6);
+
+        formatter.stopBackgroundFormatting();
+        text.append(new StyledText("ad", PLAIN));
+        formatter.updateFormat(text.length()-2, 2, viewRect, ORIGIN);
+        _testLineAccess(formatter, 6);
+        _testLineExceptions(formatter, 6);
+
+        formatter.stopBackgroundFormatting();
+        text.remove(0, 1);
+        formatter.updateFormat(0, 0, viewRect, ORIGIN);
+        _testLineAccess(formatter, 6);
+        _testLineExceptions(formatter, 6);
+    }
+
+
+    private MFormatter makeFormatter(MConstText text,
+                                     int lineBound,
+                                     boolean wrap) {
+
+        return MFormatter.createFormatter(text, 
+                                          DEFAULTS,
+                                          lineBound,
+                                          wrap,
+                                          fGraphics);
+    }
+
+    private void _testLineExceptions(MFormatter formatter,
+                                    int numLines) {
+
+        if (numLines == UNKNOWN) {
+            numLines = formatter.getLineCount();
+        }
+
+        boolean caught = false;
+
+        try {
+            formatter.lineRangeLow(numLines);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+
+        try {
+            formatter.lineRangeLimit(numLines);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+
+        try {
+            formatter.lineGraphicStart(numLines+1);
+        }
+        catch(IllegalArgumentException e) {
+            caught = true;
+        }
+
+        if (!caught) {
+            errln("Didn't get exception");
+        }
+        caught = false;
+    }
+
+    private void _testLineAccess(MFormatter formatter,
+                                 int numLines) {
+
+        if (numLines == UNKNOWN) {
+            numLines = formatter.getLineCount();
+        }
+
+        if (formatter.lineGraphicStart(0) != 0) {
+            errln("Line 0 doesn't start at height 0");
+        }
+        if (formatter.lineRangeLow(0) != 0) {
+            errln("Line 0 doesn't start at character 0");
+        }
+
+        int lastLimit = formatter.lineRangeLimit(0);
+        final int lineBound = formatter.lineBound();
+        int[] hitX = new int[] { -1, 1, lineBound + 2 };
+
+        TextOffset offset = new TextOffset();
+
+        for (int i=1; i < numLines; i++) {
+
+            int height = formatter.lineGraphicStart(i);
+            if (lastLimit != formatter.lineRangeLow(i)) {
+                errln("lastLine limit is not current line start");
+            }
+            int limit = formatter.lineRangeLimit(i);
+
+            if (limit < lastLimit || (limit == lastLimit && i != numLines-1)) {
+                errln("line has negative or 0 length");
+            }
+
+            int nextHeight = formatter.lineGraphicStart(i+1);
+            if (nextHeight <= height) {
+                errln("0-height line");
+            }
+            int incAmount = Math.max((nextHeight-height)/4, 1);
+            for (int hitY = height; hitY < nextHeight; hitY += incAmount) {
+
+                if (formatter.lineAtHeight(hitY) != i) {
+                    errln("lineAtHeight is wrong");
+                }
+
+                for (int j=0; j < hitX.length; j++) {
+                    offset = formatter.pointToTextOffset(offset,
+                                        hitX[j], hitY, ORIGIN, null, false);
+                    if (offset.fOffset < lastLimit || offset.fOffset > limit) {
+                        errln("Inconsistent offset from pointToTextOffset");
+                    }
+                    //if (formatter.lineContaining(offset) != i) {
+                    //    int debug = formatter.lineContaining(offset);
+                    //    errln("lineContaining is incorrect");
+                    //}
+                }
+            }
+
+            lastLimit = limit;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestMText.java b/src/com/ibm/richtext/test/unit/TestMText.java
new file mode 100644
index 0000000..b06fe26
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestMText.java
@@ -0,0 +1,718 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import java.text.CharacterIterator;
+import java.util.Random;
+
+import java.io.*;
+
+public class TestMText extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) throws Exception {
+
+        new TestMText().run(args);
+    }
+    
+    private static final int TEST_ITERATIONS = 5000;
+    private static final int STYLE_TEST_ITERATIONS = 5000;
+    private static final long RAND_SEED = 598436;
+
+    private static final int NOT_IN_MONKEY_TEST = -5000;
+    private int testIteration = NOT_IN_MONKEY_TEST;
+    private int theCase = NOT_IN_MONKEY_TEST;
+    
+    private static StyleModifier createMinusModifier(final Object attr) {
+        return new StyleModifier() {
+            public AttributeMap modifyStyle(AttributeMap style) {
+                return style.removeAttribute(attr);
+            }
+        };
+    }
+
+    public void test() {
+    
+        simpleTest();
+        styleTest();
+        monkeyTest(true);
+    }
+    
+    public void simpleTest() {
+
+        AttributeMap boldStyle = new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+        AttributeMap italicStyle = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+
+        MConstText allBold = new StyledText("bbbbb", boldStyle);
+        MConstText allItalic = new StyledText("iii", italicStyle);
+        MConstText plain = new StyledText("pppppp", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        {
+            MText buf = new StyledText();
+            int ts = buf.getTimeStamp();
+            buf.append(allBold);
+            buf.append(allItalic);
+
+            if (ts == buf.getTimeStamp()) {
+                errln("Time stamp not incremented");
+            }
+
+            // should be bbbbbiii now
+
+            if (buf.length() != allBold.length() + allItalic.length()) {
+                errln("Length is wrong.");
+            }
+
+            for (int i=0; i < buf.length(); i++) {
+
+                char rightChar;
+                AttributeMap rightStyle;
+
+                if (i < allBold.length()) {
+                    rightChar = allBold.at(0);
+                    rightStyle = boldStyle;
+                }
+                else {
+                    rightChar = allItalic.at(0);
+                    rightStyle = italicStyle;
+                }
+
+                if (buf.at(i) != rightChar) {
+                    errln("Character is wrong.");
+                }
+                if (!buf.characterStyleAt(i).equals(rightStyle)) {
+                    errln("Style is wrong.");
+                }
+            }
+
+            int pos = 0;
+
+            if (!buf.characterStyleAt(pos).equals(boldStyle)) {
+                errln("First style is wrong.");
+            }
+            if (buf.characterStyleLimit(pos) != allBold.length()) {
+                errln("Run length is wrong.");
+            }
+
+            pos = allBold.length();
+
+            if (!buf.characterStyleAt(pos).equals(italicStyle)) {
+                errln("Second style is wrong.");
+            }
+            if (buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run length is wrong.");
+            }
+
+            {
+                buf.resetDamagedRange();
+                int oldLength = buf.length();
+                buf.replace(buf.length(), buf.length(), allBold, 0, allBold.length());
+                // bbbbbiiibbbbb
+
+                if (buf.damagedRangeStart() != oldLength) {
+                    errln("Damaged range start is incorrect");
+                }
+                if (buf.damagedRangeLimit() != buf.length()) {
+                    errln("Damaged range limit is incorrect");
+                }
+            }
+
+            int start = allBold.length();
+            int limit = start + allItalic.length();
+            buf.remove(start, limit);
+            // bbbbbbbbbb
+
+            if (buf.length() != 2 * allBold.length()) {
+                errln("Text should be twice the length of bold text.");
+            }
+
+            pos = buf.length() / 2;
+            if (buf.characterStyleStart(pos) != 0 ||
+                            buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run range is wrong.");
+            }
+            if (!buf.characterStyleAt(pos).equals(boldStyle)) {
+                errln("Run style is wrong.");
+            }
+
+            ts = buf.getTimeStamp();
+            CharacterIterator cIter = buf.createCharacterIterator();
+            for (char ch = cIter.first(); ch != CharacterIterator.DONE; ch = cIter.next()) {
+                if (ch != allBold.at(0)) {
+                    errln("Character is wrong.");
+                }
+            }
+
+            if (ts != buf.getTimeStamp()) {
+                errln("Time stamp should not have changed");
+            }
+
+            buf.replace(0, 1, plain, 0, plain.length());
+
+            if (ts == buf.getTimeStamp()) {
+                errln("Time stamp not incremented");
+            }
+
+            // ppppppbbbbbbbbb
+            buf.replace(plain.length(), buf.length(), allItalic, 0, allItalic.length());
+            // ppppppiii
+
+            if (buf.length() != allItalic.length()+plain.length()) {
+                errln("Length is wrong.");
+            }
+
+            pos = 0;
+            if (buf.characterStyleLimit(pos) != plain.length()) {
+                errln("Run limit is wrong.");
+            }
+
+            pos = plain.length();
+            if (buf.characterStyleLimit(pos) != buf.length()) {
+                errln("Run limit is wrong.");
+            }
+
+            buf.replace(plain.length(), plain.length(), allBold, 0, allBold.length());
+            // ppppppbbbbbiii
+
+            AttributeMap st = buf.characterStyleAt(1);
+            if (!st.equals(AttributeMap.EMPTY_ATTRIBUTE_MAP)) {
+                errln("Style is wrong.");
+            }
+            if (buf.characterStyleStart(1) != 0 || buf.characterStyleLimit(1) != plain.length()) {
+                errln("Style start is wrong.");
+            }
+
+            st = buf.characterStyleAt(buf.length() - 1);
+            if (!st.equals(italicStyle)) {
+                errln("Style is wrong.");
+            }
+            if (buf.characterStyleStart(buf.length() - 1) != plain.length()+allBold.length()) {
+                errln("Style start is wrong.");
+            }
+
+            if (buf.characterStyleLimit(buf.length() - 1) != buf.length()) {
+                errln("Style limit is wrong.");
+            }
+        }
+    }
+
+    private static int randInt(Random rand, int limit) {
+
+        return randInt(rand, 0, limit);
+    }
+
+    private static int randInt(Random rand, int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range length is negative.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    public void styleTest() {
+
+        MText text = new StyledText("0123456789", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        AttributeMap[] styles = new AttributeMap[text.length()];
+        for (int i=0; i < styles.length; i++) {
+            styles[i] = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        }
+        AttributeMap[] oldStyles = new AttributeMap[styles.length];
+        System.arraycopy(styles, 0, oldStyles, 0, styles.length);
+
+        AttributeMap bigStyle = new AttributeMap(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON).
+                                                    addAttribute(TextAttribute.SIZE, new Float(23.0f));
+
+        StyleModifier[] modifiers = {
+            StyleModifier.createReplaceModifier(new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD)),
+            StyleModifier.createAddModifier(new AttributeMap(TextAttribute.WEIGHT, new Float(1.0f))),
+            createMinusModifier(TextAttribute.WEIGHT),
+
+            StyleModifier.createAddModifier(new AttributeMap(TextAttribute.POSTURE, new Float(0.0f))),
+            StyleModifier.createReplaceModifier(new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE)),
+            createMinusModifier(TextAttribute.POSTURE),
+
+            StyleModifier.createAddModifier(bigStyle),
+            StyleModifier.createReplaceModifier(bigStyle),
+            createMinusModifier(bigStyle.getKeySet())
+        };
+
+        Random rand = new Random(RAND_SEED);
+        final int stopAt = 4;
+
+        for (int testItr=0; testItr < STYLE_TEST_ITERATIONS + 1; testItr++) {
+
+            System.arraycopy(styles, 0, oldStyles, 0, styles.length);
+
+            int startingAt = Integer.MAX_VALUE;
+            int endingAt = Integer.MIN_VALUE;
+            int oldTs = text.getTimeStamp();
+
+            // hack way to do an invariant check before starting...
+            if (testItr != 0) {
+                // modify styles
+                text.resetDamagedRange();
+                startingAt = randInt(rand, styles.length+1);
+                endingAt = randInt(rand, startingAt, styles.length+1);
+                StyleModifier modifier = modifiers[randInt(rand, modifiers.length)];
+
+                if (testItr == stopAt) {
+                    testItr = stopAt;
+                }
+                text.modifyCharacterStyles(startingAt, endingAt, modifier);
+
+                for (int j=startingAt; j < endingAt; j++) {
+                    styles[j] = modifier.modifyStyle(styles[j]);
+                }
+            }
+
+            // check invariants
+            AttributeMap oldStyle = null;
+            int textLength = text.length();
+            for (int runStart = 0; runStart < textLength;) {
+
+                AttributeMap currentStyle = text.characterStyleAt(runStart);
+                int runLimit = text.characterStyleLimit(runStart);
+                if (runStart >= runLimit) {
+                    errln("Run length is not positive");
+                }
+                if (currentStyle.equals(oldStyle)) {
+                    errln("Styles didn't merge");
+                }
+
+                for (int pos=runStart; pos < runLimit; pos++) {
+                    AttributeMap charStyleAtPos = text.characterStyleAt(pos);
+                    if (currentStyle != charStyleAtPos) {
+                        errln("Iterator style is not equal to text style at " + pos + ".");
+                    }
+                    AttributeMap expected = styles[pos];
+                    if (!currentStyle.equals(expected)) {
+                        errln("Iterator style doesn't match expected style at " + pos + ".");
+                    }
+                    if (!(text.characterStyleStart(pos) == runStart) ||
+                            !(text.characterStyleLimit(pos) == runLimit)) {
+                        errln("style run start / limit is not consistent");
+                    }
+                }
+                runStart = runLimit;
+            }
+            if (textLength > 0) {
+                if (text.characterStyleAt(textLength) !=
+                            text.characterStyleAt(textLength-1)) {
+                    errln("Character styles at end aren't the same");
+                }
+            }
+
+            // check damaged range:
+            int damageStart = Integer.MAX_VALUE;
+            int damageLimit = Integer.MIN_VALUE;
+            for (int i=0; i < textLength; i++) {
+                if (!styles[i].equals(oldStyles[i])) {
+                    damageStart = Math.min(i, damageStart);
+                    damageLimit = Math.max(i+1, damageLimit);
+                }
+            }
+            if (damageStart != text.damagedRangeStart() ||
+                            damageLimit != text.damagedRangeLimit()) {
+                logln("Test iteration: " + testItr);
+                logln("startingAt: " + startingAt + ";  endingAt: " + endingAt);
+                logln("damageStart: " + damageStart + ";  damageLimit: " + damageLimit);
+                logln("text.rangeStart: " + text.damagedRangeStart() +
+                                   "text.rangeLimit: " + text.damagedRangeLimit());
+                errln("Damage range start or limit is not expected value");
+            }
+
+            if ((damageLimit == Integer.MIN_VALUE) != (oldTs == text.getTimeStamp())) {
+
+                errln("timeStamp is incorrect");
+            }
+        }
+    }
+
+    public void msg(String message, int level, boolean incCount, boolean newln) {
+        if (level == ERR && testIteration != NOT_IN_MONKEY_TEST) {
+            message = "testIteration="+testIteration+"; testCase="+theCase+message;
+        }
+        super.msg(message, level, incCount, newln);
+    }
+    
+    /**
+    * Perform a random series of operations on an MText and
+    * check the result of each operation against a set of invariants.
+    */
+    public void monkeyTest(boolean streaming) {
+
+        /*
+            You can add any operation to the switch statement provided it
+            preserves the following invariants:
+            - The String plainText contains the same text as the StyledStringBuffer.
+              Obviously, for the test to be meaningful plainText must be computed
+              independently of the buffer (ie don't write:  plainText = buf.getStyledString().toString()).
+            - Every 'b' is bold, every 'i' is italic, every 'p' is plain, and
+              no other characters appear in the text.
+        */
+
+        AttributeMap boldAttrs = new AttributeMap(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
+        AttributeMap italicAttrs = new AttributeMap(TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE);
+        AttributeMap emptyAttrs = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+
+        final String bold1Str_getString = "b";
+        MConstText bold1Str = new StyledText(bold1Str_getString, boldAttrs);
+
+        final String italic1Str_getString = "i";
+        MConstText italic1Str = new StyledText(italic1Str_getString, italicAttrs);
+
+        final String plain1Str_getString = "p";
+        MConstText plain1Str = new StyledText(plain1Str_getString, emptyAttrs);
+
+        StyledText temp = new StyledText();
+        temp.append(bold1Str);
+        temp.append(italic1Str);
+        final String boldItalicStr_getString = bold1Str_getString.concat(italic1Str_getString);
+        MConstText boldItalicStr = temp;
+
+        temp = new StyledText();
+        temp.append(bold1Str);
+        temp.append(bold1Str);
+        temp.append(bold1Str);
+        final String bold3Str_getString = "bbb";
+        MConstText bold3Str = temp;
+
+        MText buf = new StyledText();
+        String plainText = new String();
+        //int testIteration=0; - now instance variables so errln can report it
+        //int theCase=0;
+
+        final int NUM_CASES = 14;
+        boolean[] casesExecuted = new boolean[NUM_CASES];
+        final int stopAt = -1;
+        Random rand = new Random(RAND_SEED);
+
+        final String ALWAYS_DIFFERENT = "\uFEFF";
+
+            for (testIteration=0; testIteration < TEST_ITERATIONS; testIteration++) {
+
+                theCase = randInt(rand, NUM_CASES);
+
+                casesExecuted[theCase] = true;
+
+                if (testIteration == stopAt) {
+                    testIteration = stopAt;  // Convenient place to put breakpoint
+                }
+
+                int timeStamp = buf.getTimeStamp();
+                String oldPlainText = plainText;
+                if (oldPlainText == null) {
+                    errln("oldPlainText is null!");
+                }
+
+                switch (theCase) {
+
+                    case 0:
+                        // create new string; replace chars at start with different style
+                        buf = new StyledText();
+                        buf.append(bold3Str);
+                        buf.replace(0, 1, italic1Str, 0, italic1Str.length());
+                        buf.replace(0, 0, italic1Str, 0, italic1Str.length());
+
+                        plainText = bold3Str_getString.substring(1, bold3Str.length());
+                        plainText = italic1Str_getString.concat(plainText);
+                        plainText = italic1Str_getString.concat(plainText);
+                        oldPlainText = null;
+                        break;
+
+                    case 1:
+                        // delete the last character from the string
+                        if (buf.length() == 0) {
+                            buf.replace(0, 0, italic1Str, 0, italic1Str.length());
+                            plainText = italic1Str_getString;
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        buf.remove(buf.length()-1, buf.length());
+                        plainText = plainText.substring(0, plainText.length()-1);
+                        break;
+
+                    case 2:
+                        // replace some of the buffer with boldItalicStr
+                        int rStart = randInt(rand, buf.length()+1);
+                        int rStop = randInt(rand, rStart, buf.length()+1);
+                        buf.replace(rStart, rStop, boldItalicStr);
+                        {
+                            String newString = (rStart>0)? plainText.substring(0, rStart) : new String();
+                            newString = newString.concat(boldItalicStr_getString);
+                            if (rStop < plainText.length())
+                                newString = newString.concat(plainText.substring(rStop, plainText.length()));
+                            oldPlainText = ALWAYS_DIFFERENT;
+                            plainText = newString;
+                        }
+                        break;
+
+                    case 3:
+                        // repeatedly insert strings into the center of the buffer
+                        {
+                            int insPos = buf.length() / 2;
+                            String prefix = plainText.substring(0, insPos);
+                            String suffix = plainText.substring(insPos, plainText.length());
+                            String middle = new String();
+                            for (int ii=0; ii<4; ii++) {
+                                MConstText which = (ii%2==0)? boldItalicStr : bold3Str;
+                                String whichString = (ii%2==0)? boldItalicStr_getString : bold3Str_getString;
+                                int tempPos = insPos+middle.length();
+                                buf.insert(tempPos, which);
+                                middle = middle.concat(whichString);
+                            }
+                            plainText = prefix.concat(middle).concat(suffix);
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        break;
+
+                    case 4:
+                    // insert bold1Str at end
+                        buf.append(bold1Str);
+                        plainText = plainText.concat(bold1Str_getString);
+                        break;
+
+                    case 5:
+                    // delete a character from the string
+                        if (buf.length() > 0) {
+                            int delPos = randInt(rand, buf.length()-1);
+                            buf.remove(delPos, delPos+1);
+                            plainText = plainText.substring(0, delPos).concat(plainText.substring(delPos+1));
+                        }
+                        else {
+                            buf.replace(0, 0, plain1Str, 0, plain1Str.length());
+                            plainText = plain1Str_getString;
+                        }
+                        break;
+
+                    case 6:
+                    // replace the contents of the buffer (except the first character) with itself
+                        {
+                            int start = buf.length() > 1? 1 : 0;
+                            buf.replace(start, buf.length(), buf);
+                            plainText = plainText.substring(0, start).concat(plainText);
+                            if (buf.length() > 0) {
+                                oldPlainText = ALWAYS_DIFFERENT;
+                            }
+                        }
+                        break;
+
+                    case 7:
+                    // append the contents of the buffer to itself
+                        {
+                            MConstText content = buf;
+                            buf.insert(buf.length(), content);
+                            plainText = plainText.concat(plainText);
+                        }
+                        break;
+
+                    case 8:
+                    // replace the buffer with boldItalicStr+bold3Str
+                        {
+                            MText replacement = new StyledText();
+                            replacement.append(boldItalicStr);
+                            replacement.append(bold3Str);
+                            buf.replace(0, buf.length(), replacement, 0, replacement.length());
+                            plainText = boldItalicStr_getString.concat(bold3Str_getString);
+                            oldPlainText = ALWAYS_DIFFERENT;
+                        }
+                        break;
+
+                    case 9:
+                    // insert bold1Str at end - same as 4 but uses different API
+                        buf.replace(buf.length(),
+                                    buf.length(),
+                                    bold1Str_getString.toCharArray(),
+                                    0,
+                                    bold1Str_getString.length(),
+                                    boldAttrs);
+                        plainText = plainText.concat(bold1Str_getString);
+                        break;
+
+                    case 10:
+                    // remove all
+                        buf.remove();
+                        plainText = "";
+                        oldPlainText = ALWAYS_DIFFERENT;
+                        break;
+
+                    case 11:
+                    // remove all - different way
+                        buf.remove(0, buf.length());
+                        plainText = "";
+                        break;
+
+                    case 12:
+                        // insert 'i' at 3rd character (or last, if fewer than 3 chars)
+                        {
+                            int insPos = Math.min(buf.length(), 3);
+                            buf.replace(insPos, insPos, 'i', italicAttrs);
+                            plainText = (plainText.substring(0, insPos)).
+                                        concat(italic1Str_getString).
+                                        concat(plainText.substring(insPos));
+                        }
+                        break;
+
+                    case 13:
+                        if (streaming) {
+                            Throwable error = null;
+                            try {
+                                ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+                                ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);
+                                objOut.writeObject(buf);
+
+                                ByteArrayInputStream bytesIn =
+                                                new ByteArrayInputStream(bytesOut.toByteArray());
+                                ObjectInputStream objIn = new ObjectInputStream(bytesIn);
+                                buf = (MText) objIn.readObject();
+                                oldPlainText = null;
+                            }
+                            catch(IOException e) {
+                                error = e;
+                            }
+                            catch(ClassNotFoundException e) {
+                                error = e;
+                            }
+                            if (error != null) {
+                                error.printStackTrace();
+                                errln("Streaming problem: " + error);
+                            }
+                        }
+                        break;
+
+                    default:
+                        errln("Invalid case.");
+                }
+
+                // Check time stamp if oldPlainText != null.
+                // Time stamp should be different iff
+                // oldPlainText == plainText
+                if (oldPlainText != null) {
+                    if ((timeStamp==buf.getTimeStamp()) !=
+                                    oldPlainText.equals(plainText)) {
+                        logln("plainText hashCode: " + plainText.hashCode());
+                        logln("oldPlainText hashCode: " + oldPlainText.hashCode());
+                        errln("Time stamp is incorrect");
+                    }
+                }
+
+                // now check invariants:
+                if (plainText.length() != buf.length()) {
+                    errln("Lengths don't match");
+                }
+
+                for (int j=0; j < buf.length(); j++) {
+                    if (buf.at(j) != plainText.charAt(j)) {
+                        errln("Characters don't match.");
+                    }
+                }
+
+                int start;
+                for (start = 0; start < buf.length();) {
+
+                    if (start != buf.characterStyleStart(start)) {
+                        errln("style start is wrong");
+                    }
+                    int limit = buf.characterStyleLimit(start);
+                    if (start >= limit) {
+                        errln("start >= limit");
+                    }
+                    char current = plainText.charAt(start);
+
+                    AttributeMap comp = null;
+                    if (current == 'p') {
+                        comp = emptyAttrs;
+                    }
+                    else if (current == 'b') {
+                        comp = boldAttrs;
+                    }
+                    else if (current == 'i') {
+                        comp = italicAttrs;
+                    }
+                    else {
+                        errln("An invalid character snuck in!");
+                    }
+
+                    AttributeMap startStyle = buf.characterStyleAt(start);
+                    if (!comp.equals(startStyle)) {
+                        errln("Style is not expected style.");
+                    }
+
+                    for (int j = start; j < limit; j++) {
+                        if (plainText.charAt(j) != current) {
+                            errln("Character doesn't match style.");
+                        }
+                        if (buf.characterStyleAt(j) != startStyle) {
+                            errln("Incorrect style in run");
+                        }
+                    }
+
+                    if (limit < buf.length()) {
+                        if (plainText.charAt(limit) == current) {
+                            errln("Style run ends too soon.");
+                        }
+                    }
+                    start = limit;
+                }
+                if (start != buf.length()) {
+                    errln("Last limit is not buffer length.");
+                }
+
+                // won't try to compute and check damaged range;  however,
+                // if nonempty it should always be within text
+                int damageStart = buf.damagedRangeStart();
+                int damageLimit = buf.damagedRangeLimit();
+                if (damageStart == Integer.MAX_VALUE) {
+                    if (damageLimit != Integer.MIN_VALUE) {
+                        errln("Invalid empty interval");
+                    }
+                }
+                else {
+                    if (damageStart > damageLimit) {
+                        errln("Damage range inverted");
+                    }
+                    if (damageStart < 0 || damageLimit > buf.length()) {
+                        errln("Damage range endpoint out of bounds");
+                    }
+                }
+            }
+
+        testIteration = NOT_IN_MONKEY_TEST;
+        
+        boolean allCasesExecuted = true;
+        for (int index=0; index < NUM_CASES; index++) {
+            allCasesExecuted &= casesExecuted[index];
+            if (casesExecuted[index] == false) {
+                logln("Case " + index + " not executed.");
+            }
+        }
+        //if (allCasesExecuted) {
+        //    logln("All cases executed.");
+        //}
+    }
+}
diff --git a/src/com/ibm/richtext/test/unit/TestMTextStreaming.java b/src/com/ibm/richtext/test/unit/TestMTextStreaming.java
new file mode 100644
index 0000000..1057739
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestMTextStreaming.java
@@ -0,0 +1,160 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import java.io.*;
+import java.awt.Color;
+
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+public class TestMTextStreaming extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestMTextStreaming().run(args);
+    }
+
+    public TestMTextStreaming() {
+    }
+
+    public void test() {
+
+        simpleTest();
+        allAttributesTest();
+    }
+
+    private void simpleTest() {
+
+        AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        MText text = new StyledText("Hello world!", style);
+
+        streamAndCompare(text);
+    }
+
+    private static class TestModifier extends StyleModifier {
+
+        private Object fKey;
+        private Object fValue;
+
+        public AttributeMap modifyStyle(AttributeMap style) {
+
+            return style.addAttribute(fKey, fValue);
+        }
+
+        TestModifier(Object key, Object value) {
+
+            fKey = key;
+            fValue = value;
+        }
+    }
+
+    private void allAttributesTest() {
+
+        AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+        MText text = new StyledText("Hello world!", style);
+
+        int length = text.length();
+
+        final boolean CHARACTER = true;
+        final boolean PARAGRAPH = false;
+
+        addStyle(text, 0, length/2, TextAttribute.FAMILY, "Times", CHARACTER);
+        addStyle(text, length/2, length, TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.POSTURE, TextAttribute.POSTURE_OBLIQUE, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.SIZE, new Float(13.7f), CHARACTER);
+        addStyle(text, length/2, length, TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.FOREGROUND, Color.blue, CHARACTER);
+        addStyle(text, 0, length/2, TextAttribute.BACKGROUND, Color.red, CHARACTER);
+        addStyle(text, 0, length-1, TextAttribute.STRIKETHROUGH, Boolean.TRUE, CHARACTER);
+
+        addStyle(text, 0, length, TextAttribute.EXTRA_LINE_SPACING, new Float(4), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.FIRST_LINE_INDENT, new Float(6), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.MIN_LINE_SPACING, new Float(7), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_TRAILING, PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.LEADING_MARGIN, new Float(9), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.TRAILING_MARGIN, new Float(9), PARAGRAPH);
+        addStyle(text, 0, length, TextAttribute.TAB_RULER, new StandardTabRuler(), PARAGRAPH);
+
+        streamAndCompare(text);
+    }
+
+    private static void addStyle(MText text,
+                                 int start,
+                                 int limit,
+                                 Object key,
+                                 Object value,
+                                 boolean character) {
+
+        StyleModifier modifier = new TestModifier(key, value);
+
+        if (character) {
+            text.modifyCharacterStyles(start, limit, modifier);
+        }
+        else {
+            text.modifyParagraphStyles(start, limit, modifier);
+        }
+    }
+
+    public void streamAndCompare(MText text) {
+
+        Throwable error = null;
+
+        try {
+            ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
+            ObjectOutputStream objOut = new ObjectOutputStream(bytesOut);
+            objOut.writeObject(text);
+
+            ByteArrayInputStream bytesIn =
+                            new ByteArrayInputStream(bytesOut.toByteArray());
+            ObjectInputStream objIn = new ObjectInputStream(bytesIn);
+            MText streamedText = (MText) objIn.readObject();
+            if (!isEqual(text, streamedText)) {
+                isEqual(text, streamedText);
+                errln("Streamed text is not equal");
+            }
+        }
+/*        catch(OptionalDataException e) {
+            error = e;
+        }
+        catch(StreamCorruptedException e) {
+            error = e;
+        }*/
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+
+        if (error != null) {
+            error.printStackTrace();
+            errln("Serialization failed.");
+        }
+    }
+
+    public static boolean isEqual(MText lhs, MText rhs) {
+
+        return lhs.equals(rhs);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/test/unit/TestParagraphStyles.java b/src/com/ibm/richtext/test/unit/TestParagraphStyles.java
new file mode 100644
index 0000000..3dbe19c
--- /dev/null
+++ b/src/com/ibm/richtext/test/unit/TestParagraphStyles.java
@@ -0,0 +1,337 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.test.unit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.styledtext.StyleModifier;
+import java.util.Random;
+
+public final class TestParagraphStyles extends TestFmwk {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static void main(String[] args) throws Exception {
+
+        new TestParagraphStyles().run(args);
+    }
+
+    private static final int RAND_SEED = 1234;
+    private static final int NUM_TESTS = 2500;
+
+    private static final boolean isParagraphBreak(char c) {
+
+        return c =='\u2029' || c == '\n';
+    }
+
+    private static final Object KEY = "KEY";
+    private static final AttributeMap PLAIN = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+    private static final AttributeMap A_STYLE = new AttributeMap(KEY, new Character('a'));
+    private static final StyleModifier A_MOD =
+                            StyleModifier.createReplaceModifier(A_STYLE);
+    private static final AttributeMap B_STYLE = new AttributeMap(KEY, new Character('b'));
+    private static final StyleModifier B_MOD =
+                            StyleModifier.createReplaceModifier(B_STYLE);
+    private static final AttributeMap C_STYLE = new AttributeMap(KEY, new Character('c'));
+    private static final StyleModifier C_MOD =
+                            StyleModifier.createReplaceModifier(C_STYLE);
+    private static final AttributeMap D_STYLE = new AttributeMap(KEY, new Character('d'));
+    private static final StyleModifier D_MOD =
+                            StyleModifier.createReplaceModifier(D_STYLE);
+    private static final AttributeMap E_STYLE = new AttributeMap(KEY, new Character('e'));
+    private static final StyleModifier E_MOD =
+                            StyleModifier.createReplaceModifier(E_STYLE);
+
+    public void test() {
+
+        easyTests();
+        randomTest();
+    }
+
+    private void easyTests() {
+
+        MText text = new StyledText("a\nb\nc\nd\n", PLAIN);
+        text.modifyParagraphStyles(0, text.length(), A_MOD);
+        verifyParagraphCount(text);
+
+        MText src = new StyledText("XXX\nYYY", PLAIN);
+        src.modifyParagraphStyles(0, src.length(), B_MOD);
+        verifyParagraphCount(src);
+
+        MText temp = text.extractWritable(0, text.length());
+        temp.append(src);
+        verifyParagraphCount(temp);
+        for (int i=0; i < text.length(); i++) {
+            if (!temp.paragraphStyleAt(i).equals(text.paragraphStyleAt(i))) {
+                errln("Paragraph styles are wrong");
+            }
+        }
+        for (int i=0; i < src.length(); i++) {
+            if (!temp.paragraphStyleAt(i+text.length()).equals(src.paragraphStyleAt(i))) {
+                errln("Paragraph styles are wrong");
+            }
+        }
+
+        temp = text.extractWritable(0, text.length());
+        temp.replace(0, 1, src, 0, src.length());
+        verifyParagraphCount(temp);
+        if (temp.paragraphLimit(0) != 4) {
+            errln("Paragraph limit is wrong");
+        }
+        if (!temp.paragraphStyleAt(0).equals(B_STYLE)) {
+            errln("First style is wrong");
+        }
+        if (!temp.paragraphStyleAt(4).equals(A_STYLE)) {
+            errln("Style after insert is wrong");
+        }
+
+        // test append
+        MConstText newSrc = src.extract(4, 7);
+        MText initC = new StyledText("cccccc", PLAIN);
+        initC.modifyParagraphStyles(0, initC.length(), C_MOD);
+        initC.append(newSrc);
+        // now initC should be one paragraph with style B
+        if (initC.paragraphLimit(0) != initC.length()) {
+            errln("Should only be one paragraph");
+        }
+        if (initC.paragraphStyleAt(0) != initC.paragraphStyleAt(initC.length())) {
+            errln("Two different paragraph styles");
+        }
+        if (!initC.paragraphStyleAt(initC.length()/2).equals(B_STYLE)) {
+            errln("Incorrect paragraph style");
+        }
+        
+        text = new StyledText("aaa\n", PLAIN);
+        text.modifyParagraphStyles(0, text.length(), A_MOD);
+        text.modifyParagraphStyles(text.length(), text.length(), B_MOD);
+        if (text.paragraphStyleAt(text.length()) != B_STYLE) {
+            errln("0-length paragraph at end has incorrect style");
+        }
+    }
+
+    private static int randInt(Random rand, int limit) {
+
+        return randInt(rand, 0, limit);
+    }
+
+    private static int randInt(Random rand, int start, int limit) {
+
+        if (start > limit) {
+            throw new IllegalArgumentException("Range is 0-length.");
+        }
+        else if (start == limit) {
+            return start;
+        }
+
+        return start + (Math.abs(rand.nextInt())%(limit-start)) ;
+    }
+
+    private void randomTest() {
+
+        MText noParagraph = new StyledText("zzzz", PLAIN);
+        noParagraph.modifyParagraphStyles(0, noParagraph.length(), A_MOD);
+        MText twoParagraphs = new StyledText("aaa\nbbb", PLAIN);
+        twoParagraphs.modifyParagraphStyles(0, twoParagraphs.paragraphLimit(0), B_MOD);
+        MText threeParagraphs = new StyledText("cc\ndd\nee", PLAIN);
+        threeParagraphs.modifyParagraphStyles(0, 3, C_MOD);
+        threeParagraphs.modifyParagraphStyles(3, 6, D_MOD);
+        threeParagraphs.modifyParagraphStyles(6, 8, E_MOD);
+        MText trailingP1 = new StyledText("hhhh\n", PLAIN);
+        trailingP1.modifyParagraphStyles(0, trailingP1.paragraphLimit(0), C_MOD);
+        MText trailingP2 = new StyledText("iii\n", PLAIN);
+        trailingP2.modifyParagraphStyles(0, 0, D_MOD);
+        trailingP2.modifyParagraphStyles(trailingP2.length(), trailingP2.length(), B_MOD);
+
+        if (!trailingP2.paragraphStyleAt(trailingP2.length()-1).equals(D_STYLE)) {
+            errln("Style incorrect in trailingP2");
+        }
+        if (!trailingP2.paragraphStyleAt(trailingP2.length()).equals(B_STYLE)) {
+            errln("Ending style incorrect in trailingP2");
+        }
+
+        MConstText[] tests = { noParagraph, twoParagraphs,
+                                    threeParagraphs, trailingP1, trailingP2 };
+
+        Random random = new Random(RAND_SEED);
+
+        int stopAt = 465;
+        int i = 0;
+        try {
+            for (i=0; i < NUM_TESTS; i++) {
+
+                int srcIndex = randInt(random, tests.length);
+                int targetIndex = randInt(random, tests.length);
+                MText target = new StyledText(tests[targetIndex]);
+                MConstText src = tests[srcIndex];
+
+                int srcStart = randInt(random, src.length());
+                int srcLimit = randInt(random, srcStart, src.length());
+                int start = randInt(random, target.length());
+                int limit = randInt(random, start, target.length());
+
+                if (i == stopAt) {
+                    stopAt = i;
+                }
+
+                insertAndCheck(src, srcStart, srcLimit, target, start, limit);
+            }
+        }
+        finally {
+            if (i < NUM_TESTS) {
+                logln("iteration=" + i);
+            }
+        }
+    }
+
+    private void insertAndCheck(MConstText src, int srcStart, int srcLimit,
+                                MText target, int start, int limit) {
+
+        // p-style after insertion
+        AttributeMap after;
+        if (limit == target.length() && srcLimit > srcStart) {
+            after = src.paragraphStyleAt(srcLimit);
+        }
+        else {
+            after = target.paragraphStyleAt(limit);
+        }
+
+        AttributeMap before;
+        boolean srcHasPBreak = false;
+        for (int i=srcStart; i < srcLimit; i++) {
+            if (isParagraphBreak(src.at(i))) {
+                srcHasPBreak = true;
+                break;
+            }
+        }
+
+        if (start > 0 && isParagraphBreak(target.at(start-1))) {
+            before = target.paragraphStyleAt(start-1);
+        }
+        else {
+            before = srcHasPBreak? src.paragraphStyleAt(srcStart) : after;
+        }
+        boolean stylePropogated = !before.equals(target.paragraphStyleAt(Math.max(0, start-1)));
+
+
+        target.resetDamagedRange();
+        target.replace(start, limit, src, srcStart, srcLimit);
+        final int damageLimit = (start==limit && srcStart==srcLimit)?
+                        Integer.MIN_VALUE : start + (srcLimit-srcStart);
+
+        if (target.damagedRangeLimit() != damageLimit) {
+            logln("limit: " + damageLimit + ";  target.limit: " +
+                                target.damagedRangeLimit());
+            errln("Damaged range limit is incorrect");
+        }
+
+        final int damageStart = (damageLimit==Integer.MIN_VALUE)? Integer.MAX_VALUE :
+                (stylePropogated? target.paragraphStart(Math.max(0, start-1)) : start);
+        if (target.damagedRangeStart() > damageStart) {
+            logln("start: " + damageStart + ";  target.start: " +
+                                target.damagedRangeStart());
+            errln("Damaged range start is incorrect");
+        }
+
+        verifyParagraphCount(target);
+
+        // check endpoints
+        if (!before.equals(target.paragraphStyleAt(Math.max(start-1, 0)))) {
+            errln("Incorrect paragraph style before modified range");
+        }
+
+        int lengthDelta = (srcLimit-srcStart) - (limit-start);
+        int indexAfterInsert = Math.min(target.length(), limit + lengthDelta);
+        if (!after.equals(target.paragraphStyleAt(indexAfterInsert))) {
+            errln("Incorrect paragraph style after modified range");
+        }
+
+        if (srcHasPBreak) {
+            int startP = target.paragraphLimit(start);
+            int limitOfTest = target.paragraphStart(indexAfterInsert);
+
+            int offset = start - srcStart;
+
+            while (startP < limitOfTest) {
+                int limitP = target.paragraphLimit(startP);
+                if (src.paragraphLimit(startP-offset) + offset != limitP) {
+                    errln("paragraph limits are not consistent");
+                }
+                if (!src.paragraphStyleAt(startP-offset)
+                                    .equals(target.paragraphStyleAt(startP))) {
+                    errln("paragraph styles are not consistent");
+                }
+                startP = limitP;
+            }
+        }
+        else {
+            for (int i=start; i < start+(srcLimit-srcStart); i++) {
+                if (!after.equals(target.paragraphStyleAt(i))) {
+                    errln("paragraph style changed unexpectedly");
+                }
+            }
+        }
+    }
+
+    private void verifyParagraphCount(MConstText text) {
+
+        int pCount = 0;
+        int textLength = text.length();
+
+        if (textLength == 0) {
+            pCount = 1;
+        }
+        else {
+            for (int s=0; s < textLength; s = text.paragraphLimit(s)) {
+                pCount++;
+            }
+            if (isParagraphBreak(text.at(textLength-1))) {
+                pCount++;
+            }
+        }
+
+        int sepCount = 0;
+        for (int i=0; i < textLength; i++) {
+            if (isParagraphBreak(text.at(i))) {
+                sepCount++;
+            }
+        }
+
+        if (sepCount + 1 != pCount) {
+            logln("sepCount=" + sepCount + ";  pCount=" + pCount);
+            errln("Paragraph count is not consistent with characters");
+        }
+    }
+
+//    private void checkEndpoint(MConstText text) {
+//
+//        boolean emptyFinalParagraph;
+//        int length = text.length();
+//
+//        if (length != 0) {
+//            char ch = text.at(length-1);
+//            emptyFinalParagraph = isParagraphBreak(ch);
+//        }
+//        else {
+//            emptyFinalParagraph = true;
+//        }
+//
+//        if ((text.paragraphStart(length) == length) != emptyFinalParagraph) {
+//            errln("Final paragraph length is incorrect");
+//        }
+//    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/AppCloser.java b/src/com/ibm/richtext/textapps/AppCloser.java
new file mode 100644
index 0000000..3bc9bea
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/AppCloser.java
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Frame;
+import java.awt.Window;
+
+class AppCloser {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fCount = 0;
+
+    private WindowAdapter fAdapter = new WindowAdapter() {
+
+        public void windowClosing(WindowEvent e) {
+            --fCount;
+            if (fCount == 0) {
+                System.exit(0);
+            }
+            Window w = e.getWindow();
+            w.setVisible(false);
+            w.dispose();
+        }
+    };
+
+    public void listenToFrame(Frame frame) {
+
+        ++fCount;
+        frame.addWindowListener(fAdapter);
+    }
+}
diff --git a/src/com/ibm/richtext/textapps/BidiDemo.java b/src/com/ibm/richtext/textapps/BidiDemo.java
new file mode 100644
index 0000000..eb26ee5
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/BidiDemo.java
@@ -0,0 +1,83 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.awtui.TextFrame;
+
+import java.awt.Toolkit;
+
+import java.io.*;
+import java.net.URL;
+import java.util.ResourceBundle;
+
+public class BidiDemo {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final AppCloser fgListener = new AppCloser();
+
+    private static final String BUNDLE_NAME = "com.ibm.richtext.textapps.resources.Sample";
+    
+    public static void main(String[] args) {
+
+        String docName;
+        
+        if (args.length == 0) {
+            docName = "default";
+        }
+        else {
+            docName = args[0];
+        }
+        
+        openText(docName);
+    }
+
+    private static void openText(String docName) {
+
+        try {
+            ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME);
+
+            Object document = bundle.getObject(docName+".sample");
+            MConstText text;
+            
+            if (document instanceof String) {
+                text = new StyledText((String)document, 
+                                      AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            }
+            else {
+                URL url = (URL) document;
+                ObjectInputStream in = new ObjectInputStream(url.openStream());
+                text = (MConstText) in.readObject();
+            }
+            
+            String name = bundle.getString(docName+".name");
+            
+            makeFrame(text, name);
+        }
+        catch(Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    private static void makeFrame(MConstText text, String title) {
+
+        TextFrame frame = new TextFrame(text, title, 
+                Toolkit.getDefaultToolkit().getSystemClipboard());
+        frame.setSize(550, 700);
+        frame.show();
+        fgListener.listenToFrame(frame);
+    }
+}
diff --git a/src/com/ibm/richtext/textapps/FileUtils.java b/src/com/ibm/richtext/textapps/FileUtils.java
new file mode 100644
index 0000000..baeaf4b
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/FileUtils.java
@@ -0,0 +1,128 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import java.awt.FileDialog;
+import java.awt.Frame;
+import java.io.*;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+
+public class FileUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Present the user with a file dialog, and replace
+     * dest with the MText in the selected file, and return
+     * the file objct.  If any errors occur, return null and
+     * do not modify dest.
+     */
+    public static File userLoadMText(String title, MText dest, Frame owner) {
+
+        FileDialog dialog = new FileDialog(owner, title, FileDialog.LOAD);
+        dialog.show();
+        String fileStr = dialog.getFile();
+        String dirStr = dialog.getDirectory();
+
+        if (fileStr != null) {
+            File rval = new File(dirStr, fileStr);
+            MConstText src = loadMText(rval);
+            if (src != null) {
+                dest.replaceAll(src);
+                return rval;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Return the MText serialized in the given file.
+     * In case of an error return null.
+     */
+    public static MConstText loadMText(File file) {
+
+        Throwable error;
+
+        try {
+            FileInputStream inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            MConstText text = (MConstText) objStream.readObject();
+            inStream.close();
+            return text;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+        return null;
+    }
+
+    /**
+     * Prompt the user for the file if file is null.  Then save the
+     * text in the file, if any.
+     */
+    public static File userSaveMText(File file, String title, MConstText text, Frame owner) {
+
+        if (file == null) {
+
+            FileDialog dialog = new FileDialog(owner, title, FileDialog.SAVE);
+            dialog.show();
+            String fileStr = dialog.getFile();
+            String dirStr = dialog.getDirectory();
+
+            if (fileStr != null) {
+                file = new File(dirStr, fileStr);
+            }
+        }
+
+        if (file != null) {
+
+            saveMText(file, text);
+        }
+
+        return file;
+    }
+
+    public static void saveMText(File file, MConstText text) {
+
+        Throwable error;
+
+        try {
+            OutputStream outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(text);
+            outStream.close();
+            return;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/MTextToString.java b/src/com/ibm/richtext/textapps/MTextToString.java
new file mode 100644
index 0000000..3e09d3d
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/MTextToString.java
@@ -0,0 +1,82 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import java.io.*;
+
+public final class MTextToString {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+
+        if (args.length != 2) {
+            usage();
+        }
+        else {
+            writeMTextAsString(args[0], args[1]);
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: MTextToString inFile outFile");
+        System.out.println("inFile must be a serialized MConstText");
+        System.out.println("On exit, outFile will be a serialized String ");
+        System.out.println("containing the characters in the text.");
+        System.out.println("inFile and outFile must not be the same.");
+        System.exit(1);
+    }
+
+    public static void writeMTextAsString(String inFile, String outFile) {
+
+        File file = new File(inFile);
+        MConstText text = FileUtils.loadMText(file);
+
+        if (text != null) {
+            char[] ch = new char[text.length()];
+            text.extractChars(0, ch.length, ch, 0);
+            String str = new String(ch);
+            writeString(str, outFile);
+        }
+        else {
+            System.out.println("Can't read inFile.");
+        }
+    }
+
+    public static void writeString(String stringToWrite, String outFile) {
+
+        File file = new File(outFile);
+        Throwable error = null;
+
+        try {
+            OutputStream outStream = new FileOutputStream(file);
+            ObjectOutputStream objStream = new ObjectOutputStream(outStream);
+
+            objStream.writeObject(stringToWrite);
+            outStream.close();
+            return;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/StringToMText.java b/src/com/ibm/richtext/textapps/StringToMText.java
new file mode 100644
index 0000000..e6985c1
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/StringToMText.java
@@ -0,0 +1,76 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.io.*;
+
+public final class StringToMText {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+
+        if (args.length != 2 || args[0].equals(args[1])) {
+            usage();
+        }
+        else {
+            String str = loadString(new File(args[0]));
+            if (str == null) {
+                throw new Error("Couldn't load String from file " + args[0]);
+            }
+            MConstText text = new StyledText(str, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+            FileUtils.saveMText(new File(args[1]), text);
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: StringToMText inFile outFile");
+        System.out.println("inFile must be a serialized String");
+        System.out.println("On exit, outFile will be a serialized MText ");
+        System.out.println("containing the characters in the string.");
+        System.out.println("inFile and outFile must not be the same.");
+        System.exit(1);
+    }
+
+    public static String loadString(File file) {
+
+        Throwable error;
+
+        try {
+            FileInputStream inStream = new FileInputStream(file);
+            ObjectInputStream objStream = new ObjectInputStream(inStream);
+
+            String str = (String) objStream.readObject();
+            inStream.close();
+            return str;
+        }
+        catch(IOException e) {
+            error = e;
+        }
+        catch(ClassNotFoundException e) {
+            error = e;
+        }
+        catch(ClassCastException e) {
+            error = e;
+        }
+
+        error.printStackTrace();
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/TestMTextToString.java b/src/com/ibm/richtext/textapps/TestMTextToString.java
new file mode 100644
index 0000000..daba594
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/TestMTextToString.java
@@ -0,0 +1,75 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textapps;
+
+import com.ibm.richtext.styledtext.MConstText;
+import java.io.File;
+
+public final class TestMTextToString {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static void main(String[] args) {
+
+        if (args.length != 2 || args[0].equals(args[1])) {
+            usage();
+        }
+        else {
+            boolean success = testMTextToString(args[0], args[1]);
+            System.out.println(success? "PASSED" : "FAILED");
+        }
+    }
+
+    private static void usage() {
+
+        System.out.println("Usage: TestMTextToString mtextFile stringFile");
+        System.out.println("Compares the characters in mtextFile to the");
+        System.out.println("String in stringFile.");
+        System.exit(0);
+    }
+
+    public static boolean testMTextToString(String mtextFile, String stringFile) {
+
+        boolean success = false;
+
+        File mtext = new File(mtextFile);
+        MConstText text = FileUtils.loadMText(mtext);
+        if (text != null) {
+            String str = StringToMText.loadString(new File(stringFile));
+            if (str != null) {
+                success = compareMTextToString(text, str);
+            }
+            else {
+                System.out.println("Couldn't load String.");
+            }
+        }
+        else {
+            System.out.println("Couldn't load MText.");
+        }
+
+        return success;
+    }
+
+    public static boolean compareMTextToString(MConstText text, String str) {
+
+        if (text.length() != str.length()) {
+            return false;
+        }
+        for (int i=str.length()-1; i >= 0; i--) {
+            if (text.at(i) != str.charAt(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textapps/resources/Sample.java b/src/com/ibm/richtext/textapps/resources/Sample.java
new file mode 100644
index 0000000..6e2fee9
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/resources/Sample.java
@@ -0,0 +1,26 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.richtext.textapps.resources;
+
+import java.util.ListResourceBundle;
+
+public final class Sample extends ListResourceBundle {
+    
+    public Object[][] getContents() {
+
+        /*Object sample =*/ this.getClass().getResource("hagan");
+
+        return new Object[][] {
+            { "default.sample", this.getClass().getResource("unicode.hebrew.red") },
+            { "default.name", "What is Unicode - Hebrew" },
+            { "arabic.sample", this.getClass().getResource("unicode.arabic.red") },
+            { "arabic.name", "What is Unicode - Arabic" },
+            { "japanese.sample", "\u6ce8: {1} \u306e\u30e1\u30bd\u30c3\u30c9 {0} \u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002" },
+            { "japanese.name", "Japanese Message" },
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/textapps/resources/unicode.arabic.red b/src/com/ibm/richtext/textapps/resources/unicode.arabic.red
new file mode 100644
index 0000000..f7d0724
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/resources/unicode.arabic.red
Binary files differ
diff --git a/src/com/ibm/richtext/textapps/resources/unicode.hebrew.red b/src/com/ibm/richtext/textapps/resources/unicode.hebrew.red
new file mode 100644
index 0000000..2607f60
--- /dev/null
+++ b/src/com/ibm/richtext/textapps/resources/unicode.hebrew.red
Binary files differ
diff --git a/src/com/ibm/richtext/textformat/AsyncFormatter.java b/src/com/ibm/richtext/textformat/AsyncFormatter.java
new file mode 100644
index 0000000..e0edaa6
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/AsyncFormatter.java
@@ -0,0 +1,2051 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+// Revision: 70 1.38 richtext/AsyncFormatter.java, richtext, richtext
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Graphics;
+import java.awt.Rectangle;
+import java.awt.Point;
+import java.awt.Color;
+
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+import com.ibm.richtext.textlayout.Graphics2DConversion;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+import java.awt.font.LineBreakMeasurer;
+import java.awt.font.FontRenderContext;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.FontRenderContext;
+JDK11IMPORTS*/
+
+/*
+    Change history:
+
+    7/25/96 -
+
+    8/15/96
+        Fixed bug in textOffsetToPoint (fPixHeight wasn't added to negative heights). {jbr}
+
+    8/19/96
+        Removed references to JustificationStyle constants, and moved them into MFormatter {sfb}
+
+    8/23/96
+        Modified findLineAt and getLineContaining - added optimization in search loop.  Also,
+            they were failing when fLTPosEnd+1 == fLTNegStart.  Fixed.
+
+    8/26/96
+        Moved FormatDaemon stuff into this class.
+
+    9/11/96
+        Shortened line returned from textOffsetToPoint by 1 pixel
+
+    9/23/96
+        textOffsetToPoint line length restored (see above).  drawText() now draws only lines
+        which fall in rectangle param.
+
+    9/26/96
+        whitespace at end of line is used for caret positioning
+
+    10/4/96
+        Added static TextBox method.
+
+    10/8/96
+        Line 1300 - less than changed to less than or equal in textOffsetToPoint.  Watch for
+            hangs in formatText.
+
+    10/9/96
+        Changed sync. model.  fFormatInBackground is used to start/stop bg formatting
+
+    10/17/96
+        Added new flags:  fLineInc, fFillInc for bidi support.  updateFormat, pointToTextOffset, getBoundingRect,
+        and findNewInsertionOffset should now function correctly for non-Roman documents.  Nothing else has been
+        modified to support intl text.
+
+    10/21/96
+        Pushed paragraph formatting and caret positioning into LineLayout.  In process of pushing
+        highlighting into LineLayout.
+
+    10/24/96
+        Now getting paragraph styles from paragraph buffer.
+
+    7/7/97
+        Up-arrow doesn't move to beginning of text if you're on the first line.
+
+    7/1/98
+        No longer intersecting damaged rect with view rect in updateFormat.
+*/
+
+/**
+* This class implements MFormatter.  It maintains a table of
+* <tt>LayoutInfo</tt> instances which contain layout information
+* for each line in the text.  This class formats lines on demand,
+* and creates a low-priority thread to format text in the background.
+* Note that, at times, some text may not have been formatted, especially
+* if the text is large.
+* <p>
+* The line table is an array of <tt>LayoutInfo</tt> objects, which expands as needed to hold
+* all computed lines in the text.  The line table consists of three
+* regions:  a "positive" region, a "gap," and a "negative" region.
+* In the positive region, character and graphics offsets are positive
+* integers, computed from the beginning of the text / display.  In the
+* gap, line table entries are null.  New lines may be inserted into the gap.
+* In the negative region, character and graphics offsets are negative;
+* their absolute values indicate distances from the end of the text / display.
+* The <tt>fLTPosEnd</tt> member gives the index in the line table of the
+* last positive entry.  The <tt>fLTNegStart</tt> gives the index of first
+* negative entry.  If there are no negative entries, <tt>fLTNegStart</tt> is
+* equal to <tt>fLTSize</tt>, the size of the line table.
+* <p>
+* Changes to the line table occur only in the <tt>formatText()</tt> method.
+* This method calls <tt>LineLayout.layout()</tt> for each line to format.
+*
+* @author John Raley
+*
+* @see MFormatter
+* @see LineLayout
+* @see LayoutContext
+* @see LayoutInfo
+*/
+
+final class AsyncFormatter extends MFormatter implements Runnable
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+    * Text to format.
+    */
+    private MConstText fText;
+
+    /**
+    * Default values.
+    */
+    private AttributeMap fDefaultValues;
+    
+    /**
+    * Font resolver.
+    */
+    private FontResolver fFontResolver;
+    
+    /**
+    * Default character metric - used to set height of empty paragraphs
+    */
+    private DefaultCharacterMetric fDefaultCharMetric;
+    
+    /**
+    * Length to which lines are formatted.
+    */
+    private int fLineDim;
+
+    /**
+    * Table of formatted lines.
+    */
+    private LayoutInfo fLineTable[];
+
+    /**
+    * Size of line table.
+    */
+    private int fLTSize = 10; // initial size must be > 0
+
+    /**
+    * Index of last positive entry in line table.
+    */
+    private int fLTPosEnd;
+
+    /**
+    * Index of first negative entry in line table.
+    */
+    private int fLTNegStart;
+
+    /**
+    * Length of text on which negative line offsets are based.
+    * @see #formatText
+    */
+    private int fLTCurTextLen;
+
+    /**
+    * Length of formatted text in fill direction, in pixels.
+    */
+    private int fPixHeight;
+
+    /**
+    * Length of formatted text including pseudoline.
+    */
+    private int fFullPixHeight;
+
+    private int fMinX;
+    private int fMaxX;
+
+    /**
+    * <tt>true</tt> if lines should be formatted to fit line dimension.
+    */
+    private boolean fWrap;
+
+    /**
+    * <tt>true</tt> if characters run horizontally.
+    */
+    private boolean fHLine = true;
+
+    /**
+     * <tt>true</tt> if characters run from from low to high coordinates on line.
+     */
+    private boolean fLineInc = true;
+
+    /**
+     * <tt>true</tt> if lines run from low to high coordinates within page.
+     */
+    private boolean fFillInc = true;
+
+    /**
+    * Value returned from <tt>findLineAt()</tt>
+    * if pixel height precedes topmost line.
+    */
+    private static final int kBeforeFirstLine = -2;
+
+    /**
+    * Value returned from <tt>findLineAt()</tt> and <tt>getLineContaining()</tt>
+    * if offset / pixel height is after all existing lines.
+    */
+    private static final int kAfterLastLine = -1;
+
+    /**
+    * Thread which invokes formatter in the background.
+    */
+    private Thread fDaemon;
+
+    /**
+    * FontRenderContext to measure with.  Currently not settable after
+    * construction.
+    */
+    private FontRenderContext fFontRenderContext;
+
+    /**
+    * Controls whether background formatting can run.
+    */
+    private boolean fBgFormatAllowed = false;
+    
+    /**
+    * Cached line break object.
+    */
+    private BreakIterator fLineBreak = null;
+    
+    /**
+    * Cached LineBreakMeasurer.
+    */
+    private LineBreakMeasurer fCachedMeasurer = null;
+    private int fCachedMeasurerStart;
+    private int fCachedMeasurerLimit;
+    
+    // Some JDK's (Sun's 1.2.2) throw exceptions from 
+    // LineBreakMeasurer.insertChar and deleteChar.  This class
+    // detects this condition and doesn't use these two methods
+    // if they throw exceptions.
+    private static boolean fgCacheMeasurers = true;
+    
+    /**
+    * Current text time stamp.  Used to maintain modification invariant.
+    */
+    private int fCurTimeStamp;
+    
+    /**
+    * Cache of ParagraphRenderers.
+    */
+    private Hashtable fRendererCache = new Hashtable();
+    
+    /**
+    * Draw text inside a rectangle. Does not cache any formatting information.
+    * This is convenient for small amounts of text; comparable to TETextBox on the Mac.
+    * <p>
+    * @param text the text to draw
+    * @param g Graphics on which to draw
+    * @param drawRect rectangle in which text will be drawn
+    * @param fillInc if true, lines run from low to high coordinates in page.
+    * @param hLine if true, characters run horizontally within a line.
+    */
+
+    private static boolean isParagraphSeparator(char ch) {
+
+        return ch == '\n' || ch == '\u2029';
+    }
+
+    /**
+    * Create an <tt>AsyncFormatter</tt>.
+    * @param text the text to format
+    * @param lineBound length to which lines are foramtted
+    * @param wrap <tt>true</tt> if text should be "line wrapped" (formatted to fit destination area)
+    */
+    AsyncFormatter(MConstText text, 
+                   AttributeMap defaultValues,
+                   int lineBound,
+                   boolean wrap,
+                   Graphics g)
+    {
+        fText = text;
+        fDefaultValues = defaultValues;
+        fFontResolver = new FontResolver(fDefaultValues);
+        
+        fLineDim = lineBound;
+        fWrap = wrap;
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+        fFontRenderContext = g2d.getFontRenderContext();
+        
+        fDefaultCharMetric = new DefaultCharacterMetric(fFontResolver, 
+                                                        fFontRenderContext);
+        fLTCurTextLen = text.length();
+        removeAllLines();
+
+        fDaemon = new Thread(this);
+        fDaemon.start();
+    }
+    
+    public AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    public void checkTimeStamp() {
+        String admonition = "Probably, you modified " +
+                            "the text before calling stopBackgroundFormatting().";
+                            
+        if (fText.getTimeStamp() != fCurTimeStamp) {
+            throw new Error("Time stamp is out of sync.  " + admonition);
+        }
+        if (fText.length() != fLTCurTextLen) {
+            throw new Error("Length changed unexpectedly.  " +
+                            "fText.length()="+fText.length()+";  "+
+                            "fLTCurTextLen="+fLTCurTextLen+";  "+
+                            "formatter="+this+";  "+
+                            "text="+fText);
+        }
+    }
+
+    /**
+    * Specify whether to wrap lines using the line dimension.
+    * @param wrap if <tt>true</tt> lines will be wrapped; otherwise new lines will only be
+    * started when a newline is encountered.
+    */
+    public synchronized void setWrap(boolean wrap)
+    {
+        if (wrap != fWrap) {
+            fWrap = wrap;
+            removeAllLines();
+        }
+    }
+
+    /**
+    * Return true if lines are wrapped using the line dimension.
+    * @see #setWrap
+    */
+    public synchronized boolean wrap()
+    {
+        return fWrap;
+    }
+
+    /**
+    * Specify the lineBound in pixels.  If line wrapping is on, lines
+    * will be wrapped to this value.
+    * <p>
+    *
+    * @param lineBound the distance, in pixels, used to wrap lines.
+    */
+    public synchronized void setLineBound(int lineBound)
+    {
+        if (fLineDim != lineBound) {
+            fLineDim = lineBound;                
+            if (fWrap) {
+                removeAllLines();
+            }
+        }
+    }
+
+    /**
+    * Return the number of pixels along the line dimension.
+    */
+    public synchronized int lineBound()
+    {
+        return fLineDim;
+    }
+
+//    /**
+//    * Return <tt>true</tt> if characters run from low to high coordinates on line.
+//    */
+//    private boolean lineInc()
+//    {
+//        return fLineInc;
+//    }
+//
+//    /**
+//    * Return <tt>true</tt> if lines run from low to high coordinates on page.
+//    */
+//    private boolean fillInc()
+//    {
+//        return fFillInc;
+//    }
+
+    /**
+    * Remove all lines in the line table.  Used after an operation that
+    * invalidates all existing lines, such as changing line wrapping or the
+    * line dim.
+    */
+    private synchronized void removeAllLines()
+    {
+        fCurTimeStamp = fText.getTimeStamp();
+        stopBackgroundFormatting();
+
+        fMinX = 0;
+        fMaxX = fLineDim;
+        
+        fLineTable = new LayoutInfo[fLTSize]; // fLTSize must be > 0
+        fLTNegStart = fLTSize;
+        fLTPosEnd = 0;
+
+        fLineTable[0] = pseudoLineInfo(null, 0);
+
+        fPixHeight = fLineTable[0].getHeight(); // ??? or should it be zero?
+        fFullPixHeight = fPixHeight;
+
+        // format at least one line:
+        formatToHeight(fPixHeight + 1);
+
+        enableBGFormat();
+    }
+
+    /**
+     * Fill the layout info with information appropriate to the pseudoline.
+     */
+    private synchronized LayoutInfo pseudoLineInfo(LayoutInfo info, int offset)
+    {
+        AttributeMap st = fText.paragraphStyleAt(fLTCurTextLen); // ??? if text is empty or this is the end of the text, what happens?
+        ParagraphRenderer renderer = getRendererFor(st);
+        info = renderer.layout(fText,
+                               info,
+                               (LineBreakMeasurer)null,
+                               fFontRenderContext,
+                               offset,
+                               offset,
+                               fLineDim,
+                               fLineDim);
+
+        return info;
+    }
+
+    /**
+    * Return the index of the last valid line in the line table.
+    */
+    private int lastLine()
+    {
+        return (fLTNegStart == fLTSize) ? fLTPosEnd : fLTSize - 1;
+    }
+
+    /**
+    * Shift line table such that <tt>lastPos</tt> is the last positive
+    * entry in the table. <b>NOTE: <tt>lastPos</tt> must be a valid line!</b>
+    * <p>
+    * @param lastPos the index of the line which will become the last positive
+    * entry in the line table
+    */
+    private void shiftTableTo(int lastPos)
+    {
+        LayoutInfo li;
+
+        while (lastPos < fLTPosEnd)    { // shift +'s to -'s
+            li = fLineTable[fLTPosEnd];
+            fLineTable[fLTPosEnd--] = null;
+
+            li.makeRelativeToEnd(fLTCurTextLen, fPixHeight);
+
+            fLineTable[--fLTNegStart] = li;
+        }
+
+        while (lastPos >= fLTNegStart) { // shift -'s to +'s
+            li = fLineTable[fLTNegStart];
+            fLineTable[fLTNegStart++] =    null;
+
+            li.makeRelativeToBeginning(fLTCurTextLen, fPixHeight);
+
+            fLineTable[++fLTPosEnd]    = li;
+        }
+    }
+
+    /**
+    * Increase the size of the line table.
+    */
+    private void expandLineTable()
+    {
+        // This just doubles the size of the line table.
+
+        LayoutInfo newLineTable[] = new LayoutInfo[fLineTable.length * 2];
+        int newNegStart = newLineTable.length - (fLineTable.length - fLTNegStart);
+
+        System.arraycopy(fLineTable, 0, newLineTable, 0, fLTPosEnd + 1);
+        System.arraycopy(fLineTable, fLTNegStart, newLineTable, newNegStart, fLTSize - fLTNegStart);
+
+        fLTNegStart = newNegStart;
+        fLTSize = newLineTable.length;
+        fLineTable = newLineTable;
+    }
+
+    /**
+    * Return the index of the line containing the pixel position <tt>fillCoord</tt>.
+    * If fillCoord exceeds the bottom of the text, return kAfterLastLine.
+    * If fillCoord is less than the top of the text, return kBeforeFirstLine.
+    * <p>
+    * @param fillCoord "height" of line to locate.
+    */
+    private int findLineAt(int fillCoord)
+    {
+        int low, high, mid;
+        int lowStart, highStart, midStart;
+
+        if (fillCoord >= fPixHeight)
+            return kAfterLastLine;
+        else if (fillCoord < 0)
+            return kBeforeFirstLine;
+
+        if ((fLTNegStart < fLTSize) && (fillCoord >= fLineTable[fLTNegStart].getGraphicStart(fPixHeight))) {
+            fillCoord -= fPixHeight;
+
+            low = fLTNegStart;
+            high = fLTSize;
+            highStart = 0;
+        }
+        else {
+            low = 0;
+            high = fLTPosEnd + 1;
+            highStart = fLineTable[fLTPosEnd].getGraphicStart(0) + fLineTable[fLTPosEnd].getHeight();
+        }
+        lowStart = fLineTable[low].getGraphicStart(0);
+
+        do {
+            if (lowStart == highStart)
+                return low;
+
+            mid = low + (fillCoord - lowStart) / (highStart - lowStart) * (high - low);
+            midStart = fLineTable[mid].getGraphicStart(0);
+
+            if (midStart > fillCoord) {
+                high = mid;
+                highStart = fLineTable[high].getGraphicStart(0);
+            }
+            else if (midStart + fLineTable[mid].getHeight() <= fillCoord) {
+                low = mid + 1;
+                lowStart = fLineTable[low].getGraphicStart(0);
+            }
+            else
+                return mid;
+
+        } while (low < high);
+
+        return 0;
+    }
+
+    /**
+     * Return the index of the first character in the line.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineCharStartInternal(int line)
+    {
+        return fLineTable[line].getCharStart(fLTCurTextLen);
+    }
+
+    /**
+     * Return the index of the character following the last character in the line.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineCharLimitInternal(int line)
+    {
+        return lineCharStartInternal(line) + fLineTable[line].getCharLength();
+    }
+
+    /**
+     * Return the graphic start of the line, unadjusted for fill direction.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineGraphicStartInternal(int line)
+    {
+        return fLineTable[line].getGraphicStart(fPixHeight);
+    }
+
+    /**
+     * Return the graphic limit of the line, unadjusted for fill direction.
+     * @param line the internal index of the line (direct index into linetable).
+     */
+    private int lineGraphicLimitInternal(int line)
+    {
+        return lineGraphicStartInternal(line) + fLineTable[line].getHeight();
+    }
+
+    /**
+    * Return the offset of the first character which has not been formatted.
+    * If all text has been formatted, return the current text length.
+    */
+    private int lastLineCharStop()
+    {
+        return lineCharLimitInternal(lastLine());
+    }
+
+    /**
+     * Return a 'valid' line containing offset.  This differs from getLineContaining in
+     * this maps kAfterLastLine to lastLine(), so that the result is always a valid
+     * linetable index.
+     */
+    private int getValidLineContaining(TextOffset offset) {
+
+        return getValidLineContaining(offset.fOffset, offset.fPlacement);
+    }
+
+    /**
+     * Return a 'valid' line containing offset.  This differs from getLineContaining in
+     * this maps kAfterLastLine to lastLine(), so that the result is always a valid
+     * linetable index.
+     */
+    private int getValidLineContaining(int insOffset, boolean placement)
+    {
+        int line = getLineContaining(insOffset, placement);
+        if (line == kAfterLastLine)
+            line = lastLine();
+        else if (line == kBeforeFirstLine)
+            throw new IllegalArgumentException("Debug: getLineContaining returned kBeforeFirstLine");
+
+        return line;
+    }
+
+    /**
+    * Return index of line containing <tt>offset</tt>.
+    * ??? If offset is after last formatted line, returns kAfterLastLine.  Is that good?
+    * <p>
+    * @param offset the offset whose line should be located
+    * @returns line containing <tt>offset</tt>
+    */
+    private int getLineContaining(TextOffset offset) {
+
+        return getLineContaining(offset.fOffset, offset.fPlacement);
+    }
+
+    private int getLineContaining(int insOffset, boolean placement)
+    {
+        int pos = insOffset;
+        if (placement == TextOffset.BEFORE_OFFSET && pos > 0)
+            --pos;
+
+        if (pos < 0) {
+            throw new IllegalArgumentException("Debug: getLineContaining offset < 0: " + pos);
+        }
+
+        if (pos >= lastLineCharStop()) {
+            return emptyParagraphAtEndOfText()? kAfterLastLine : lastLine();
+        }
+
+        int low, high, mid;
+        int lowStart, highStart, midStart;
+
+        if ((fLTNegStart < fLTSize) && (pos >= fLineTable[fLTNegStart].getCharStart(fLTCurTextLen))) {
+            pos -= fLTCurTextLen;
+
+            low = fLTNegStart;
+            high = fLTSize;
+            highStart = 0;
+        }
+        else {
+            low = 0;
+            high = fLTPosEnd + 1;
+            highStart = fLineTable[fLTPosEnd].getCharStart(0) + fLineTable[fLTPosEnd].getCharLength();
+        }
+        lowStart = fLineTable[low].getCharStart(0);
+
+        do {
+            if (highStart == lowStart) {
+                return low;
+            }
+
+            mid = low + (pos - lowStart) / (highStart - lowStart) * (high - low);
+            midStart = fLineTable[mid].getCharStart(0);
+
+            if (midStart > pos) {
+                high = mid;
+                highStart = fLineTable[high].getCharStart(0);
+            }
+            else if (midStart + fLineTable[mid].getCharLength() <= pos) {
+                low = mid + 1;
+                lowStart = fLineTable[low].getCharStart(0);
+            }
+            else {
+                return mid;
+            }
+
+        } while (low < high);
+
+        return 0;
+    }
+
+    /**
+    * Display text in drawArea. Does not reformat text.
+    * <p>
+    * @param g the Graphics object in which to draw
+    * @param drawArea the rectangle, in g's coordinate system, in which to draw
+    * @param origin the top-left corner of the text, in g's coordinate system
+    */
+    public synchronized void draw(Graphics g, Rectangle drawArea, Point origin)
+    {
+        draw(g, drawArea, origin, null, null, null);
+    }
+
+    public synchronized void draw(Graphics g, Rectangle drawArea, Point origin,
+                TextOffset selStart, TextOffset selStop, Color highlight) {
+
+        checkTimeStamp();
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+
+        // Get starting and ending fill 'heights.'
+
+        int startFill;
+        int endFill;
+
+        if (fFillInc)
+            startFill = drawArea.y - origin.y;
+        else
+            startFill = origin.y - (drawArea.y + drawArea.height);
+
+        endFill = startFill + drawArea.height;
+
+        // We're drawing one more line than necessary when we update because of a
+        // selection change.  But we're drawing the right amount of lines when we
+        // refresh the whole display.  This affects rendering speed significantly,
+        // and creating a new paragraph renderer for each line doesn't help either.
+        // For now, I'm going to subtract one from the fill height, on the theory
+        // that we're picking up the extra line because of a one-pixel slop.
+        // This seems to work, although perhaps if one pixel of a line at the
+        // bottom should draw, it won't.
+
+        --endFill;
+
+        // Format to ending fill height, so line table is valid for all lines we need to draw.
+
+        formatToHeight(endFill);
+
+        // Get starting and ending lines for fill height.  If the start of the fill is after the last line,
+        // or the end of the fill is before the first line, return.
+
+        int curLine = findLineAt(startFill);
+        if (curLine == kAfterLastLine)
+            return;
+        else if (curLine == kBeforeFirstLine)
+            curLine = 0;
+
+        int lastLine = findLineAt(endFill);
+        if (lastLine == kBeforeFirstLine)
+            return;
+        else if (lastLine == kAfterLastLine)
+            lastLine = lastLine();
+
+        // Get the base coordinates (lineX, lineY) for the starting line.
+
+        int lineX, lineY;
+
+        int gStart = lineGraphicStartInternal(curLine);
+
+        if (fHLine) {
+            if (fLineInc)
+                lineX = origin.x;
+            else
+                lineX = origin.x - fLineDim;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + fLineTable[curLine].getHeight());
+        }
+        else {
+            if (fLineInc)
+                lineY = origin.y;
+            else
+                lineY = origin.y - fLineDim;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + fLineTable[curLine].getHeight());
+        }
+
+        // Iterate through lines, drawing each one and incrementing the base coordinate by the line height.
+
+
+        for (; curLine <= lastLine; curLine++) {
+            // Adjust curLine around gap in line table.
+            if ((curLine > fLTPosEnd) && (curLine < fLTNegStart))
+                curLine = fLTNegStart;
+
+            fLineTable[curLine].renderWithHighlight(fLTCurTextLen, g2d, fLineDim, lineX, lineY, selStart, selStop, highlight);
+
+            // Increment line base for next iteration.
+            int lineInc = fLineTable[curLine].getHeight();
+            if (fFillInc) {
+                if (fHLine)
+                    lineY += lineInc;
+                else
+                    lineX += lineInc;
+            } else {
+                if (fHLine)
+                    lineY -= lineInc;
+                else
+                    lineX -= lineInc;
+            }
+        }
+    }
+
+    /**
+    * Format text to given height.
+    * @param height the height to which text will be formatted.
+    */
+    public synchronized void formatToHeight(int reqHeight)
+    {
+        checkTimeStamp();
+        if (reqHeight <= fPixHeight) // already formatted to this height
+            return;
+
+        if (fText.length() == lastLineCharStop()) // already formatted all the text
+            return;
+
+        // +++ should disable update thread here
+
+        if (fLTNegStart < fLTSize)
+            shiftTableTo(fLTSize - 1);
+
+        formatText(0, 0, reqHeight, false);
+    }
+
+    /**
+     * Format text to given offset.
+     * @param offset the offset to which text will be formatted.
+     */
+     private void formatToOffset(TextOffset offset)
+     {
+        formatToOffset(offset.fOffset, offset.fPlacement);
+     }
+     
+     private synchronized void formatToOffset(int offset, boolean placement) {
+        
+        checkTimeStamp();
+        int llcs = lastLineCharStop();
+        if (llcs < fLTCurTextLen) {
+            int limit = offset;
+            if (placement == TextOffset.AFTER_OFFSET) // format to past character offset is associated with
+                limit++;
+            if (limit >= llcs) { // ??? would '>' be ok instead or '>='?
+                if (limit > fLTCurTextLen)
+                    limit = fLTCurTextLen;
+
+                shiftTableTo(lastLine());
+                formatText(llcs, limit - llcs, Integer.MAX_VALUE, true);
+            }
+        }
+     }
+
+/**
+* Reformat text after a change.
+* After the formatter's text changes, call this method to reformat.  Does
+* not redraw.
+* @param afStart the offset into the text where modification began;  ie, the
+* first character in the text which is "different" in some way.  Does not
+* have to be nonnegative.
+* @param afLength the number of new or changed characters in the text.  Should never
+* be less than 0.
+* @param viewRect the Rectangle in which the text will be displayed.  This is needed for
+* returning the "damaged" area - the area of the screen in which the text must be redrawn.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @returns a <tt>Rectangle</tt> which specifies the area in which text must be
+* redrawn to reflect the change to the text.
+*/
+    public Rectangle updateFormat(final int afStart,
+                                               final int afLength,
+                                               Rectangle viewRect,
+                                               Point origin)
+    {
+        if (afStart < 0) {
+            throw new IllegalArgumentException("Debug: updateFormat afStart < 0: " + afStart);
+        }
+        if (fBgFormatAllowed) {
+            throw new IllegalArgumentException("Background formatting should have been disabled");
+        }
+        fCurTimeStamp = fText.getTimeStamp();
+        
+        int curLine = getValidLineContaining(afStart, TextOffset.AFTER_OFFSET);
+        int lineStartPos = lineCharStartInternal(curLine);
+
+        // optimize by finding out whether change occurred
+        // after first word break on curline
+
+        int firstPossibleBreak;
+
+        if (lineStartPos < fText.length()) {
+
+            if (fLineBreak == null) {
+                fLineBreak = BreakIterator.getLineInstance();
+            }
+            CharacterIterator charIter = fText.createCharacterIterator();
+            charIter.setIndex(lineStartPos);
+            fLineBreak.setText(charIter);
+
+            firstPossibleBreak = fLineBreak.following(lineStartPos);
+        }
+        else
+            firstPossibleBreak = afStart;
+
+        if ((curLine > 0) && (firstPossibleBreak == BreakIterator.DONE || afStart <= firstPossibleBreak)) {
+            curLine--;
+            if (curLine < fLTNegStart && curLine > fLTPosEnd)
+                curLine = fLTPosEnd;
+        }
+
+        shiftTableTo(curLine);
+
+        int pixHeight; // after the formatText call, at least pixHeight text must be formatted
+
+        if (fHLine) {
+            if (fFillInc)
+                pixHeight = viewRect.y + viewRect.height - origin.y;
+            else
+                pixHeight = origin.y - viewRect.y;
+        }
+        else {
+            if (fFillInc)
+                pixHeight = viewRect.x + viewRect.width - origin.x;
+            else
+                pixHeight = origin.x - viewRect.x;
+        }
+
+        Rectangle r = formatText(afStart, afLength, pixHeight, false);
+
+        //dumpLineTable();
+
+        if ((fPixHeight < pixHeight) && (fLTNegStart < fLTSize) && (fLTCurTextLen > lastLineCharStop())) {
+            shiftTableTo(lastLine());
+            Rectangle s = formatText(0, 0, pixHeight, false);
+            r = r.union(s);
+        }
+
+        intlRect(origin, r);
+        //System.out.println("Damaged rect: "+r+"; origin: "+origin);
+
+        // don't need to synchronized here, b/c the daemon shouldn't be running when
+        // this is executing
+
+        if (fText.length() < lastLineCharStop())
+            enableBGFormat();
+        else
+            stopBackgroundFormatting();
+
+        //dumpLineTable();
+
+        return r;
+    }
+    
+    private LineBreakMeasurer makeMeasurer(int paragraphStart, int paragraphLimit) {
+
+        MTextIterator iter = new MTextIterator(fText,
+                                               fFontResolver,
+                                               paragraphStart,
+                                               paragraphLimit);
+        LineBreakMeasurer measurer = new LineBreakMeasurer(iter, fFontRenderContext);
+        if (fgCacheMeasurers) {
+            fCachedMeasurerStart = paragraphStart;
+            fCachedMeasurerLimit = paragraphLimit;
+            fCachedMeasurer = measurer;
+        }
+        return measurer;
+    }        
+
+/**
+* Compute text format.  This method calculates text format;  it can be
+* called for various purposes:  to reformat text after an edit, to
+* format text to a particular height, or to format text up to a
+* particular offset.
+* <p>
+* The calling method must ensure that <tt>fLineTable</tt> has been shifted
+* such that the last positive line is where the formatting operation will
+* begin.
+* <p>
+* Called by: <tt>formatToHeight()</tt>, <tt>updateFormat()</tt>,
+* <tt>textOffsetToPoint()</tt>, <tt>getBoundingRect()</tt>
+* @param afStart the offset of the first character in the text which has changed
+* @param afLength the number of new or changed characters in the text
+* @param reqHeight the pixel height to which text must be formatted.  Ignored
+* if <tt>formatAllNewText</tt> is <tt>true</tt>, or if old lines remain in the
+* line table after all changed text has been formatted.
+* @param seekOffsetAtEnd if <tt>true</tt>, formatting continues until the line
+* containing afStart+afLength has been formatted.  If false, formatting may stop
+* when reqHeight has been reached.  This parameter should be <tt>true</tt> <b>only</b>
+* if the object of the formatting operation is to extend formatting to a particular
+* offset within the text;  it should be <tt>false</tt> everywhere else.
+* @returns a rectangle, relative to the top-left of the text, which encloses the
+* screen area whose appearance has changed due to the reformatting.
+*/
+
+    private Rectangle formatText(int afStart, final int afLength, int reqHeight, boolean seekOffsetAtEnd)
+    {
+    /* assumes line table shifted such that first line to format is
+    last positive line */
+
+        if (afLength < 0) {
+            throw new IllegalArgumentException("afLength < 0.  afLength=" + afLength);
+        }
+
+        int newTextEnd = afStart + afLength;
+
+        final int newCurTextLen = fText.length();
+
+        // variable not used int oldPixHeight = fPixHeight;
+        int oldFullPixHeight = fFullPixHeight;
+        fPixHeight -= fLineTable[fLTPosEnd].getHeight();
+
+        int curGraphicStart = fLineTable[fLTPosEnd].getGraphicStart(fPixHeight);
+        int curLineStart = fLineTable[fLTPosEnd].getCharStart(newCurTextLen);
+        
+        int curParagraphStart = fText.paragraphStart(curLineStart);
+        int curParagraphLimit = Integer.MIN_VALUE; // dummy value
+
+        int damageStart = curGraphicStart;
+
+        ParagraphRenderer renderer = null;
+        LineBreakMeasurer measurer = null;
+        
+        // try to use cached LineBreakMeasurer if possible
+        if (fCachedMeasurer != null && 
+            curParagraphStart == fCachedMeasurerStart) {
+
+            curParagraphLimit = fText.paragraphLimit(curParagraphStart);
+            
+            try {
+                if (newCurTextLen - fLTCurTextLen == 1 && afLength == 1) {
+                    if (curParagraphLimit == fCachedMeasurerLimit+1) {
+                        MTextIterator iter = new MTextIterator(fText,
+                                                               fFontResolver, 
+                                                               curParagraphStart,
+                                                               curParagraphLimit);
+                        fCachedMeasurer.insertChar(iter, afStart);
+                        fCachedMeasurerLimit += 1;
+                        measurer = fCachedMeasurer;
+                    }
+                }
+                else if (fLTCurTextLen - newCurTextLen == 1 && afLength == 0) {
+                    if (fCachedMeasurerLimit > fCachedMeasurerStart + 1 &&
+                                curParagraphLimit == fCachedMeasurerLimit-1) {
+                        MTextIterator iter = new MTextIterator(fText,
+                                                               fFontResolver,
+                                                               curParagraphStart,
+                                                               curParagraphLimit);
+                        fCachedMeasurer.deleteChar(iter, afStart);
+                        fCachedMeasurerLimit -= 1;
+                        measurer = fCachedMeasurer;
+                    }
+                }
+            }
+            catch(ArrayIndexOutOfBoundsException e) {
+                fCachedMeasurer = null;
+                fgCacheMeasurers = false;
+            }
+            
+            if (measurer != null) {
+                // need to set up renderer since the paragraph update in the
+                // formatting loop will not happen
+                AttributeMap style = fText.paragraphStyleAt(curParagraphStart);
+                renderer = getRendererFor(style);
+                measurer.setPosition(curLineStart);
+            }
+        }
+        
+        if (measurer == null) {
+            // trigger paragraph update at start of formatting loop
+            curParagraphLimit = curParagraphStart;
+            curParagraphStart = 0;
+        }
+
+        fLTCurTextLen = newCurTextLen;
+        
+        while (true) {
+            // System.out.println("line: " + fLTPosEnd + ", cls: " + curLineStart);
+
+
+            if (curLineStart >= curParagraphLimit) {
+                curParagraphStart = curParagraphLimit;
+                curParagraphLimit = fText.paragraphLimit(curParagraphStart);
+
+                AttributeMap style = fText.paragraphStyleAt(curParagraphStart);
+                renderer = getRendererFor(style);
+
+                if (curParagraphStart < curParagraphLimit) {
+                    measurer = makeMeasurer(curParagraphStart, curParagraphLimit);
+                    measurer.setPosition(curLineStart);
+                }
+                else {
+                    measurer = null;
+                }
+            }
+
+            {
+                boolean haveOldDirection = fLineTable[fLTPosEnd] != null;
+                boolean oldDirection = false; //  dummy value for compiler
+                if (haveOldDirection) {
+                    oldDirection = fLineTable[fLTPosEnd].isLeftToRight();
+                }
+
+                fLineTable[fLTPosEnd] = renderer.layout(fText,
+                                                        fLineTable[fLTPosEnd],
+                                                        measurer,
+                                                        fFontRenderContext,
+                                                        curParagraphStart,
+                                                        curParagraphLimit,
+                                                        fWrap ? fLineDim : Integer.MAX_VALUE,
+                                                        fLineDim);
+                if (haveOldDirection) {
+                    if (fLineTable[fLTPosEnd].isLeftToRight() != oldDirection) {
+                        newTextEnd = Math.max(newTextEnd, curParagraphLimit);
+                    }
+                }
+            }
+
+            {
+                LayoutInfo theLine = fLineTable[fLTPosEnd];
+
+                theLine.setGraphicStart(curGraphicStart);
+                curGraphicStart += theLine.getHeight();
+
+                fPixHeight += theLine.getHeight();
+                curLineStart += theLine.getCharLength();
+
+                if (!fWrap) {
+                    int lineWidth = theLine.getTotalAdvance() + theLine.getLeadingMargin();
+                    if (theLine.isLeftToRight()) {
+                        if (fMaxX < lineWidth) {
+                            fMaxX = lineWidth;
+                        }
+                    }
+                    else {
+                        if (fLineDim-lineWidth < fMinX) {
+                            fMinX = fLineDim-lineWidth;
+                        }
+                    }
+                }
+            }
+            /*
+                Next, discard obsolete lines.  A line is obsolete if it
+                contains new text or text which has been formatted.
+            */
+
+            while (fLTNegStart < fLTSize) {
+                int linePos = fLineTable[fLTNegStart].getCharStart(newCurTextLen);
+                if (linePos >= curLineStart && linePos >= newTextEnd)
+                    break;
+
+                // System.out.println("delete neg line: " + fLTNegStart);
+                fPixHeight -= fLineTable[fLTNegStart].getHeight();
+                fLineTable[fLTNegStart++] = null;
+            }
+
+            int stopAt;
+            if (fLTNegStart < fLTSize)
+                stopAt = fLineTable[fLTNegStart].getCharStart(newCurTextLen);
+            else
+                stopAt = newCurTextLen;
+
+            /*
+                Now, if exit conditions aren't met, create a new line.
+            */
+
+            if (seekOffsetAtEnd) {
+                if ((curLineStart >= newTextEnd) && (fLTNegStart == fLTSize)) {
+                    // System.out.println("break 1");
+                    break;
+                }
+            }
+            else {
+                if (curLineStart >= stopAt) {
+                    // System.out.println("curLineStart: " + curLineStart + " >= stopAt: " + stopAt);
+                    break;
+                }
+                else if (fLTNegStart==fLTSize && fPixHeight >= reqHeight) {
+                    // System.out.println("break 3");
+                    break;
+                }
+            }
+
+            if (fLTPosEnd + 1 == fLTNegStart)
+                expandLineTable();
+
+            fLineTable[++fLTPosEnd] = null; // will be created by Renderer
+        }
+        //System.out.print("\n");
+
+        if (newCurTextLen == 0) {
+            fLineTable[0] = pseudoLineInfo(fLineTable[0], 0);
+            fPixHeight = fLineTable[0].getHeight();
+        }
+        fFullPixHeight = fPixHeight;
+
+        if (isParaBreakBefore(newCurTextLen)) {
+            fFullPixHeight += lastCharHeight();
+        }
+/*
+        System.out.println("curLineStart: " + curLineStart +
+            ", fLTPosEnd: " + fLTPosEnd +
+            ", fLTNegStart: " + fLTNegStart +
+            ", fLTSize: " + fLTSize);
+
+        System.out.println("oldFullPixHeight: " + oldFullPixHeight + ", newFullPixHeight: " + fFullPixHeight);
+*/
+        int damageLength;
+        if (fFullPixHeight == oldFullPixHeight) {
+            damageLength = fLineTable[fLTPosEnd].getGraphicStart(fPixHeight)
+                            + fLineTable[fLTPosEnd].getHeight() - damageStart;
+        }
+        else {
+            damageLength = Math.max(fFullPixHeight, oldFullPixHeight);
+        }
+
+        return new Rectangle(fMinX, damageStart, fMaxX-fMinX, damageLength);
+    }
+
+//    private void dumpLineTable()
+//    {
+//        int i;
+//
+//        System.out.println("fLTCurTextLen=" + fLTCurTextLen + " " );
+//        for (i=0; i<= fLTPosEnd; i++)
+//            System.out.println("Line " + i + " starts at "
+//                                + fLineTable[i].getCharStart(fLTCurTextLen)
+//                                + " and extends " + fLineTable[i].getCharLength());
+//
+//        for (i=fLTNegStart; i< fLTSize; i++)
+//            System.out.println("Line " + (i-fLTNegStart+fLTPosEnd+1) + " starts at "
+//                                + fLineTable[i].getCharStart(fLTCurTextLen)
+//                                + " and extends " + fLineTable[i].getCharLength());
+//    }
+
+    public synchronized int minX() {
+    
+        return fMinX;
+    }
+    
+    /**
+    * Return the horizontal extent of the text, in pixels.
+    * <p>
+    * This returns an approximation based on the currently formatted text.
+    */
+    public synchronized int maxX()
+    {
+        checkTimeStamp();
+
+        return fMaxX;
+    }
+
+    /**
+    * Return the height of the last character in the text.
+    *
+    * This is used for the 'extra height' needed to display a caret at the end of the text when the
+    * text is empty or ends with a newline.
+    */
+    private int lastCharHeight()
+    {
+        int charIndex = lastLineCharStop() - 1;
+        AttributeMap st = fText.characterStyleAt(charIndex);
+        DefaultCharacterMetric.Metric metric = fDefaultCharMetric.getMetricForStyle(st);
+
+        int height = metric.getAscent();
+        height += metric.getDescent();
+        height += metric.getLeading();
+
+        return height;
+    }
+
+    /**
+     * Return true if the character at pos is a paragraph separator.
+     */
+    private boolean isParaBreakBefore(int pos)
+    {
+        return pos > 0 && (fText.at(pos - 1) == '\u2029' || fText.at(pos - 1) == '\n');
+        // we really need to take look at this and determine what this function
+        // should be doing.  What I've got here right now is a temporary implementation.
+    }
+
+    public synchronized int minY() {
+    
+        return 0;
+    }
+    
+    /**
+    * Return the vertical extent of the text, in pixels.
+    * <p>
+    * This returns an approximation based on the currently formatted text.
+    */
+    public synchronized int maxY()
+    {
+        checkTimeStamp();
+
+        int numChars = lastLineCharStop();
+
+        int pixHeight = fPixHeight;
+        if (numChars == fLTCurTextLen && isParaBreakBefore(fLTCurTextLen)) {
+            pixHeight += lastCharHeight();
+        }
+
+        if (numChars != 0)
+            return pixHeight * fText.length() / numChars;
+        else
+            return 0;
+    }
+
+    /**
+    * Return the actual pixel length of the text which has been formatted.
+    */
+    public synchronized int formattedHeight()
+    {
+        checkTimeStamp();
+        return fPixHeight;
+    }
+
+    /**
+     * There are two modes for dealing with carriage returns at the end of a line.  In the 'infinite width'
+     * mode, the last character is considered to have infinite width.  Thus if the point is past the 'real'
+     * end of the line, the offset is the position before that last character, and the offset is associated
+     * with that character (placement after). In the 'actual width' mode, the offset is positioned after
+     * that character, but still associated with it (placement before).
+     */
+
+    private TextOffset lineDimToOffset(TextOffset result, int line, int lineX, int lineY, TextOffset anchor, boolean infiniteMode)
+    {
+    // temporarily adjust line info to remove the negative char starts used in the line table.
+    // then call through to the paragraph renderer to get the offset.  Don't put line end
+    // optimization here, let the renderer do it (perhaps it does fancy stuff with the margins).
+
+        LayoutInfo lineInfo = fLineTable[line];
+
+        result = lineInfo.pixelToOffset(fLTCurTextLen, result, fLineDim, lineX, lineY);
+
+        if (infiniteMode &&
+            (result.fOffset > lineInfo.getCharStart(fLTCurTextLen)) &&
+            isParaBreakBefore(result.fOffset) &&
+            (anchor == null || anchor.fOffset == result.fOffset - 1)) {
+
+            result.setOffset(result.fOffset - 1, TextOffset.AFTER_OFFSET);
+        }
+
+        return result;
+    }
+
+    /**
+    * Given a screen location p, return the offset of the character in the text nearest to p.
+    */
+    public synchronized TextOffset pointToTextOffset(TextOffset result, int px, int py, Point origin, TextOffset anchor, boolean infiniteMode)
+    {
+        checkTimeStamp();
+        if (result == null)
+            result = new TextOffset();
+
+        int fillD;
+
+        if (fHLine)
+            fillD = py - origin.y;
+        else
+            fillD = px - origin.x;
+
+        if (!fFillInc)
+            fillD = -fillD;
+
+        if (fillD < 0) {
+            result.setOffset(0, TextOffset.AFTER_OFFSET);
+            return result;
+        }
+
+        formatToHeight(fillD);
+
+        if (fillD >= fPixHeight) {
+            boolean bias = fLTCurTextLen==0? TextOffset.AFTER_OFFSET : TextOffset.BEFORE_OFFSET;
+            result.setOffset(fLTCurTextLen, bias);
+            return result;
+        }
+
+        int line = findLineAt(fillD); // always a valid line
+        int gStart = lineGraphicStartInternal(line);
+
+        int lineX, lineY;  // upper-left corner of line
+        if (fHLine) {
+            lineX = origin.x;
+            lineY = fFillInc? origin.y + gStart : origin.y - (gStart + fLineTable[line].getHeight());
+        }
+        else {
+            lineY = origin.y;
+            lineX = fFillInc? origin.x + gStart : origin.x - (gStart + fLineTable[line].getHeight());
+        }
+
+        return lineDimToOffset(result, line, px - lineX, py - lineY, anchor, infiniteMode);
+    }
+
+    private boolean emptyParagraphAtEndOfText() {
+
+        return fLTCurTextLen > 0 &&
+                isParagraphSeparator(fText.at(fLTCurTextLen-1));
+    }
+
+    /**
+     * Return true if the offset designates a point on the pseudoline following a paragraph
+     * separator at the end of text.  This is true if the offset is the end of text
+     * and the last character in the text is a paragraph separator.
+     */
+    private boolean afterLastParagraph(TextOffset offset)
+    {
+        return offset.fOffset == fLTCurTextLen &&
+            emptyParagraphAtEndOfText();
+    }
+
+    /**
+    * Given an offset, return the Rectangle bounding the caret at the offset.
+    * @param offset an offset into the text
+    * @param origin the top-left corner of the text, in the display's coordinate system
+    * @return a Rectangle bounding the caret.
+    */
+    public synchronized Rectangle getCaretRect(TextOffset offset, Point origin) {
+
+        Rectangle r = new Rectangle();
+        getCaretRect(r, offset, origin);
+        return r;
+    }
+    
+    private void getCaretRect(Rectangle r, TextOffset offset, Point origin) {
+        
+        checkTimeStamp();
+        formatToOffset(offset);
+
+        if (afterLastParagraph(offset)) {
+            int pseudoLineHeight = lastCharHeight();
+            if (fHLine) {
+                int lineY = fFillInc ? origin.y + fPixHeight : origin.y - fPixHeight - pseudoLineHeight;
+                r.setBounds(origin.x, lineY, 0, pseudoLineHeight);
+            }
+            else {
+                int lineX = fFillInc? origin.x + fPixHeight : origin.x - fPixHeight - pseudoLineHeight;
+                r.setBounds(lineX, origin.y, pseudoLineHeight, 0);
+            }
+            return;
+        }
+
+        int line = getValidLineContaining(offset);
+
+        int gStart = lineGraphicStartInternal(line);
+
+        int lineX, lineY;
+
+        if (fHLine) {
+            lineX = origin.x;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + fLineTable[line].getHeight());
+        }
+        else {
+            lineY = origin.y;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + fLineTable[line].getHeight());
+        }
+
+        Rectangle bounds = fLineTable[line].caretBounds(fText, fLTCurTextLen, fLineDim, offset.fOffset, lineX, lineY);
+
+        r.setBounds(bounds);
+    }
+
+    /**
+    * Draw the caret(s) associated with the given offset into the given Graphics.
+    * @param g the Graphics to draw into
+    * @param offset the offset in the text for which the caret is drawn
+    * @param origin the top-left corner of the text, in the display's coordinate system
+    * @param strongCaretColor the color of the strong caret
+    * @param weakCaretColor the color of the weak caret (if any)
+    */
+    public synchronized void drawCaret(Graphics g,
+                                       TextOffset offset,
+                                       Point origin,
+                                       Color strongCaretColor,
+                                       Color weakCaretColor) {
+
+        checkTimeStamp();
+        Graphics2D g2d = Graphics2DConversion.getGraphics2D(g);
+        formatToOffset(offset);
+
+        LayoutInfo line;
+        int gStart;
+        
+        if (afterLastParagraph(offset)) {
+            gStart = fPixHeight;
+            line = pseudoLineInfo(null, offset.fOffset);
+        }
+        else {
+            int lineIndex = getValidLineContaining(offset);
+            gStart = lineGraphicStartInternal(lineIndex);
+            line = fLineTable[lineIndex];
+        }
+        
+        int lineX, lineY;
+
+        if (fHLine) {
+            lineX = origin.x;
+            if (fFillInc)
+                lineY = origin.y + gStart;
+            else
+                lineY = origin.y - (gStart + line.getHeight());
+        }
+        else {
+            lineY = origin.y;
+            if (fFillInc)
+                lineX = origin.x + gStart;
+            else
+                lineX = origin.x - (gStart + line.getHeight());
+        }
+
+        line.renderCaret(fText, fLTCurTextLen, g2d, fLineDim, lineX, lineY,
+                                offset.fOffset, strongCaretColor, weakCaretColor);
+    }
+
+/**
+* Given two offsets in the text, return a rectangle which encloses the lines containing the offsets.
+* Offsets do not need to be ordered or nonnegative.
+* @param offset1,offset2 offsets into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @returns a <tt>Rectangle</tt>, relative to <tt>origin</tt>, which encloses the lines containing the offsets
+*/
+    public synchronized Rectangle getBoundingRect(TextOffset offset1,
+                                                  TextOffset offset2,
+                                                  Point origin,
+                                                  boolean tight) {
+
+        Rectangle r = new Rectangle();
+        getBoundingRect(r, offset1, offset2, origin, tight);
+        return r;
+    }
+
+/*
+    Transform r from "text" coordinates to "screen" coordinates.
+*/
+
+    private void intlRect(Point origin, Rectangle r) {
+
+        int lineOrig, fillOrig;
+
+        if (fHLine) {
+            lineOrig = origin.x;
+            fillOrig = origin.y;
+        }
+        else {
+            lineOrig = origin.y;
+            fillOrig = origin.x;
+        }
+
+        if (fLineInc)
+            r.x += lineOrig;
+        else
+            r.x = lineOrig - (r.x + r.width);
+
+        if (fFillInc)
+            r.y += fillOrig;
+        else
+            r.y = fillOrig - (r.y + r.height);
+
+
+        if (!fHLine) {
+            int t = r.x;
+            r.x = r.y;
+            r.y = t;
+            t = r.width;
+            r.width = r.height;
+            r.height = t;
+        }
+    }
+
+
+    public synchronized void getBoundingRect(Rectangle r, 
+                                             TextOffset offset1,
+                                             TextOffset offset2,
+                                             Point origin,
+                                             boolean tight)
+    {
+        checkTimeStamp();
+        if (offset1.equals(offset2)) {
+            getCaretRect(r, offset1, origin);
+            return;
+        }
+        if (offset1.greaterThan(offset2)) {
+            TextOffset t; t = offset1; offset1 = offset2; offset2 = t;
+        }
+
+        formatToOffset(offset2);
+
+        int line = getValidLineContaining(offset1);
+        r.y = lineGraphicStartInternal(line);
+        
+        int gLimit;
+        boolean sameLine = false;
+                
+        if (afterLastParagraph(offset2))
+            gLimit = fPixHeight + lastCharHeight();
+        else {
+            int line2 = getValidLineContaining(offset2);
+            gLimit = lineGraphicLimitInternal(line2);
+            sameLine = (line == line2);
+        }
+
+        r.height = gLimit - r.y;
+
+        if (sameLine && tight==TIGHT) {
+            Rectangle rt = new Rectangle();
+            getCaretRect(rt, offset1, origin);
+            r.setBounds(rt);
+            if (!offset1.equals(offset2)) {
+                getCaretRect(rt, offset2, origin);
+                r.add(rt);
+            }
+        }
+        else {
+            r.x = fMinX;
+            r.width = fMaxX - fMinX;
+            intlRect(origin, r);
+        }
+
+        // System.out.print("gbr: " + r.x + ", " + r.y + ", " + r.width + ", " + r.height);
+
+        // System.out.println(" --> " + r.x + ", " + r.y + ", " + r.width + ", " + r.height);
+    }
+
+    /**
+    * Compute the offset resulting from moving from a previous offset in direction dir.
+    * For arrow keys.
+    * @param result the offset to modify and return.  may be null, if so a new offset is allocated, modified, and returned.
+    * @param previousOffset the insertion offset prior to the arrow key press.
+    * @param direction the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+    * @returns new offset based on direction and previous offset.
+    */
+    public synchronized TextOffset findInsertionOffset(TextOffset result, TextOffset prevOffset, short dir)
+    {
+        return findNewInsertionOffset(result, prevOffset, prevOffset, dir);
+    }
+
+    /**
+     * Transform key direction:  after this step, "left" means previous glyph, "right" means next glyph,
+     *"up" means previous line, "down" means next line
+     */
+    private short remapArrowKey(short dir) {
+
+        if (!fLineInc) {
+            if (dir == eLeft)
+                dir = eRight;
+            else if (dir == eRight)
+                dir = eLeft;
+        }
+
+        if (!fFillInc) {
+            if (dir == eUp)
+                dir = eDown;
+            else if (dir == eDown)
+                dir = eUp;
+        }
+
+        if (!fHLine) {
+            if (dir == eLeft)
+                dir = eUp;
+            else if (dir == eRight)
+                dir = eDown;
+            else if (dir == eUp)
+                dir = eLeft;
+            else if (dir == eDown)
+                dir = eRight;
+        }
+
+        return dir;
+    }
+
+    /**
+    * Compute the offset resulting from moving from a previous offset, starting at an original offset, in direction dir.
+    * For arrow keys.  Use this for "smart" up/down keys.
+    * @param result the offset to modify and return.  May be null, if so a new offset is allocated, modified, and returned.
+    * @param origOffset the offset at which an up-down arrow key sequence began.
+    * @param prevOffset the insertion offset prior to the arrow key press
+    * @param dir the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+    * @returns new offset based on direction, original offset, and previous offset.
+    */
+    public synchronized TextOffset findNewInsertionOffset(TextOffset result, TextOffset origOffset, TextOffset prevOffset, short dir)
+    {
+        checkTimeStamp();
+        if (result == null)
+            result = new TextOffset();
+
+        dir = remapArrowKey(dir);
+
+        // assume that text at origOffset and prevOffset has already been formatted
+
+        if (dir == eLeft || dir == eRight) {
+            formatToOffset(prevOffset);
+            int line = getValidLineContaining(prevOffset);
+
+            result.fPlacement = TextOffset.AFTER_OFFSET;
+            result.fOffset = fLineTable[line].getNextOffset(fLTCurTextLen, prevOffset.fOffset, dir);
+            if (result.fOffset < 0) {
+                result.fOffset = 0;
+            }
+            else if (result.fOffset >= fLTCurTextLen) {
+                result.setOffset(fLTCurTextLen, TextOffset.BEFORE_OFFSET);
+            }
+        }
+        else {
+            int distOnLine;
+
+            if (afterLastParagraph(origOffset))
+                distOnLine = 0;
+            else {
+                int line = getValidLineContaining(origOffset);
+
+                distOnLine = fLineTable[line].strongCaretBaselinePosition(fLTCurTextLen, fLineDim, origOffset.fOffset);
+            }
+
+            // get prevOffset's line
+            int line;
+            if (afterLastParagraph(prevOffset))
+                line = lastLine() + 1;
+            else {
+                line = getLineContaining(prevOffset);
+
+                if (dir == eDown && (line == kAfterLastLine || line == lastLine())
+                        && (lastLineCharStop() < fText.length())) {
+                    shiftTableTo(lastLine());
+                    formatText(lastLineCharStop(), 1, Integer.MAX_VALUE, true);
+                    line = getLineContaining(prevOffset);
+                }
+
+                if (line == kBeforeFirstLine)
+                    line = 0;
+                else if (line == kAfterLastLine)
+                    line = lastLine();
+            }
+
+            if (dir == eUp)
+                line--;
+            else if (dir == eDown)
+                line++;
+            else
+                throw new IllegalArgumentException("Debug: Illegal direction parameter in findNewInsertionOffset");
+
+            if (line < 0) {
+                //result.setOffset(0, TextOffset.AFTER_OFFSET);
+                result.assign(prevOffset);
+            }
+            else if (line > lastLine()) {
+                result.setOffset(fLTCurTextLen, TextOffset.BEFORE_OFFSET);
+            }
+            else {
+                if (fLineTable[line] == null)
+                    line = (dir == eUp)? fLTPosEnd : fLTNegStart;
+
+                // anchor is null since we never want a position after newline.  If we used the real anchor,
+                // we might not ignore the newline even though infiniteMode is true.
+                lineDimToOffset(result, line, distOnLine, 0, null, true);
+            }
+        }
+
+        // System.out.println("fnio prev: " + prevOffset + ", new: " + result);
+
+        return result;
+    }
+
+    public synchronized void stopBackgroundFormatting()
+    {
+        checkTimeStamp();
+        fBgFormatAllowed = false;
+    }
+
+    private synchronized void enableBGFormat()
+    {
+        try {
+            fBgFormatAllowed = true;
+            notify();
+        }
+        catch (IllegalMonitorStateException e) {
+        }
+    }
+
+    private int lineIndexToNumber(int lineIndex) {
+
+        if (lineIndex <= fLTPosEnd) {
+            return lineIndex;
+        }
+        else {
+            return lineIndex - (fLTNegStart-fLTPosEnd-1);
+        }
+    }
+
+    private int lineNumberToIndex(int lineNumber) {
+
+        if (lineNumber <= fLTPosEnd) {
+            return lineNumber;
+        }
+        else {
+            return lineNumber + (fLTNegStart-fLTPosEnd-1);
+        }
+    }
+
+    private void formatToLineNumber(int lineNumber) {
+
+        while (lastLineCharStop() < fLTCurTextLen &&
+                lineNumber >= lineIndexToNumber(fLTSize)) {
+            // could be smarter and choose larger amounts for
+            // larger lines, but probably not worth the effort
+            formatToHeight(fPixHeight + kPixIncrement);
+        }
+    }
+
+    private static final boolean STRICT = true;
+    private static final boolean LENIENT = false;
+
+    /**
+     * Insure that at least lineNumber lines exist, doing
+     * extra formatting if necessary.
+     * Throws exception if lineNumber is not valid.
+     * @param strict if STRICT, only lines [0...maxLineNumber()]
+     *        are permitted.  If LENIENT, maxLineNumber()+1 is
+     *        the greatest valid value.
+     */
+    private void validateLineNumber(int lineNumber, boolean strict) {
+
+        formatToLineNumber(lineNumber);
+
+        int maxNumber = lineIndexToNumber(fLTSize);
+        if (strict == STRICT) {
+            maxNumber -= 1;
+        }
+
+        if (lineNumber > maxNumber+1 ||
+                (lineNumber == maxNumber+1 && !emptyParagraphAtEndOfText())) {
+            throw new IllegalArgumentException("Invalid line number: " + lineNumber);
+        }
+    }
+
+    public synchronized int getLineCount() {
+
+        // format all text:
+        formatToHeight(Integer.MAX_VALUE);
+
+        int lineCount = lineIndexToNumber(fLTSize);
+
+        if (emptyParagraphAtEndOfText()) {
+            lineCount += 1;
+        }
+
+        return lineCount;
+    }
+    
+    public synchronized int lineContaining(int charIndex) {
+        
+        formatToOffset(charIndex, TextOffset.AFTER_OFFSET);
+        
+        boolean placement = TextOffset.AFTER_OFFSET;
+        if (charIndex == fLTCurTextLen && charIndex > 0) {
+            placement = emptyParagraphAtEndOfText()? TextOffset.AFTER_OFFSET :
+                                                     TextOffset.BEFORE_OFFSET;
+        }
+        
+        return lineContaining(charIndex, placement);
+    }
+
+    public synchronized int lineContaining(TextOffset offset) {
+
+        formatToOffset(offset);
+
+        if (afterLastParagraph(offset)) {
+            return lineIndexToNumber(fLTSize);
+        }
+        
+        return lineContaining(offset.fOffset, offset.fPlacement);
+    }
+    
+    private int lineContaining(int off, boolean placement) {
+        
+        int line = off==0? 0 : getLineContaining(off, placement);
+        
+        if (line == kAfterLastLine) {
+            line = fLTSize;
+        }
+        else if (line == kBeforeFirstLine) {
+            throw new Error("lineContaining got invalid result from getLineContaining().");
+        }
+
+        return lineIndexToNumber(line);
+    }
+
+    public synchronized int lineRangeLow(int lineNumber) {
+
+        validateLineNumber(lineNumber, STRICT);
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index == fLTSize) {
+            if (emptyParagraphAtEndOfText()) {
+                return lastLineCharStop();
+            }
+        }
+
+        if (index >= fLTSize) {
+            throw new IllegalArgumentException("lineNumber is invalid.");
+        }
+        else {
+            return lineCharStartInternal(index);
+        }
+    }
+
+    public synchronized int lineRangeLimit(int lineNumber) {
+
+        validateLineNumber(lineNumber, STRICT);
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index == fLTSize) {
+            if (emptyParagraphAtEndOfText()) {
+                return lastLineCharStop();
+            }
+        }
+
+        if (index >= fLTSize) {
+            throw new IllegalArgumentException("lineNumber is invalid.");
+        }
+        else {
+            return lineCharLimitInternal(index);
+        }
+    }
+
+    /**
+     * Return the number of the line at the given graphic height.
+     * If height is greater than full height, return line count.
+     */
+    public synchronized int lineAtHeight(int height) {
+
+        if (height >= fPixHeight) {
+
+            int line = getLineCount();
+            if (height < fFullPixHeight) {
+                line -= 1;
+            }
+            return line;
+        }
+        else if (height < 0) {
+            return -1;
+        }
+        else {
+            return lineIndexToNumber(findLineAt(height));
+        }
+    }
+
+    public synchronized int lineGraphicStart(int lineNumber) {
+
+        checkTimeStamp();
+        validateLineNumber(lineNumber, LENIENT);
+
+        int index = lineNumberToIndex(lineNumber);
+
+        if (index < fLTSize) {
+            return lineGraphicStartInternal(index);
+        }
+        else {
+            if (index == fLTSize+1) {
+                return fFullPixHeight;
+            }
+            else {
+                return fPixHeight;
+            }
+        }
+    }
+
+    public synchronized boolean lineIsLeftToRight(int lineNumber) {
+        
+        validateLineNumber(lineNumber, STRICT);
+        
+        int index = lineNumberToIndex(lineNumber);
+        
+        if (index < fLTSize) {
+            return fLineTable[index].isLeftToRight();
+        }
+        else {
+            AttributeMap st = fText.paragraphStyleAt(fLTCurTextLen);
+            return !TextAttribute.RUN_DIRECTION_RTL.equals(st.get(TextAttribute.RUN_DIRECTION));
+        }
+    }
+
+    /**
+    * Number of pixels by which to advance formatting in the background.
+    */
+    private static final int kPixIncrement = 100;
+
+    /**
+    * Time to sleep between background formatting operations.
+    */
+    private static final int kInterval = 100;
+
+    /**
+    * Perform periodic background formatting.
+    */
+    public void run()
+    {
+        while (true) {
+            synchronized (this) {
+                while(!fBgFormatAllowed) {
+                    try {
+                        wait();
+                    } catch(InterruptedException e) {
+                    }
+                }
+
+                checkTimeStamp();                
+                formatToHeight(fPixHeight + kPixIncrement);
+
+                if (lastLineCharStop() == fLTCurTextLen) {
+                    stopBackgroundFormatting();
+                }
+            }
+
+            try {
+                Thread.sleep(kInterval);
+            }
+            catch(InterruptedException e) {
+            }
+        }
+    }
+
+    private ParagraphRenderer getRendererFor(AttributeMap s) {
+    
+        // Note:  eventually we could let clients put their own renderers
+        // on the text.
+        BidiParagraphRenderer renderer = (BidiParagraphRenderer) fRendererCache.get(s);
+        if (renderer == null) {
+            renderer = new BidiParagraphRenderer(fDefaultValues.addAttributes(s), fDefaultCharMetric);
+            fRendererCache.put(s, renderer);
+        }
+        return renderer;
+    }
+
+}
diff --git a/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java b/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java
new file mode 100644
index 0000000..244637e
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/BidiParagraphRenderer.java
@@ -0,0 +1,1147 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.Shape;
+
+import java.util.Vector;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.styledtext.TabStop;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textlayout.Graphics2DConversion;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+import java.awt.font.LineBreakMeasurer;
+import java.awt.font.TextHitInfo;
+
+import java.awt.geom.AffineTransform;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Rectangle2D;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.TextLayout;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.TextHitInfo;
+
+import com.ibm.richtext.textlayout.AffineTransform;
+import com.ibm.richtext.textlayout.GeneralPath;
+import com.ibm.richtext.textlayout.Rectangle2D;
+JDK11IMPORTS*/
+
+final class BidiParagraphRenderer extends ParagraphRenderer {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final class BidiSegment {
+        TextLayout fLayout;
+        Rectangle2D.Float fBounds;
+        int fDistanceFromLeadingMargin;
+    }
+
+    private final class BidiLayoutInfo extends LayoutInfo
+    {                    
+        int fCharLength;      // number of characters on line (was fLength)
+        int fAscent;
+        int fDescent;
+        int fLeading;
+        int fVisibleAdvance;  // distance along line direction ie width
+        int fTotalAdvance;    // distance along line direction including trailing whitespace
+
+        int fLeadingMargin;   // screen distance from leading margin
+
+        boolean fLeftToRight; // true iff the orientation is left-to-right
+
+        final Vector fSegments = new Vector(); // segments to render, in logical order
+
+        public int getCharLength() {
+            return fCharLength;
+        }
+
+        public int getAscent() {
+            return fAscent;
+        }
+
+        public int getDescent() {
+            return fDescent;
+        }
+
+        public int getLeading() {
+            return fLeading;
+        }
+
+        public int getVisibleAdvance() {
+            return fVisibleAdvance;
+        }
+
+        public int getTotalAdvance() {
+            return fTotalAdvance;
+        }
+
+        public int getLeadingMargin() {
+            return fLeadingMargin;
+        }
+
+        public boolean isLeftToRight() {
+            return fLeftToRight;
+        }
+
+        public int getHeight() {
+            return fAscent + fDescent + fLeading;
+        }
+
+        public String toString()
+        {
+            return "LayoutInfo(charStart: " + getCharStart(0) +
+                ", fCharLength: " + fCharLength +
+                ", fAscent: " + fAscent +
+                ", fDescent: " + fDescent +
+                ", fVisibleAdvance: " + fVisibleAdvance +
+                ", fTotalAdvance: " + fTotalAdvance +
+                ", fLeadingMargin: " + fLeadingMargin +
+                ")";
+        }
+
+        BidiParagraphRenderer fRenderer;
+
+        // just delegate to renderer for now
+
+        public void renderWithHighlight(int lengthBasis,
+                                        Graphics2D g,
+                                        int lineBound,
+                                        int x,
+                                        int y,
+                                        TextOffset selStart,
+                                        TextOffset selStop,
+                                        Color highlightColor) {
+
+            fRenderer.renderWithHighlight(this,
+                                          lengthBasis,
+                                          g,
+                                          lineBound,
+                                          x,
+                                          y,
+                                          selStart,
+                                          selStop,
+                                          highlightColor);
+        }
+
+        public void render(int lengthBasis,
+                           Graphics2D g,
+                           int lineBound,
+                           int x,
+                           int y) {
+            fRenderer.render(this, lengthBasis, g, lineBound, x, y);
+        }
+
+        public void renderCaret(MConstText text,
+                                int lengthBasis,
+                                Graphics2D g,
+                                int lineBound,
+                                int x,
+                                int y,
+                                int charOffset,
+                                Color strongCaretColor,
+                                Color weakCaretColor) {
+            fRenderer.renderCaret(this, text, lengthBasis, g, lineBound, x, y, charOffset,
+                                        strongCaretColor, weakCaretColor);
+        }
+
+        public TextOffset pixelToOffset(int lengthBasis,
+                                        TextOffset result,
+                                        int lineBound,
+                                        int x,
+                                        int y) {
+            return fRenderer.pixelToOffset(this, lengthBasis, result, lineBound, x, y);
+        }
+
+        public Rectangle caretBounds(MConstText text,
+                                     int lengthBasis,
+                                     int lineBound,
+                                     int charOffset,
+                                     int x,
+                                     int y) {
+            return fRenderer.caretBounds(this, text, lengthBasis, lineBound, charOffset, x, y);
+        }
+        
+        public int strongCaretBaselinePosition(int lengthBasis,
+                                               int lineBound,
+                                               int charOffset) {
+
+            return fRenderer.strongCaretBaselinePosition(this, lengthBasis, lineBound, charOffset);
+        }
+
+        public int getNextOffset(int lengthBasis,
+                                 int charOffset,
+                                 short dir) {
+
+            return fRenderer.getNextOffset(this, lengthBasis, charOffset, dir);
+        }
+    }
+
+    //private static final int FLUSH_LEADING = TextAttribute.FLUSH_LEADING.intValue();
+    private static final int FLUSH_CENTER = TextAttribute.FLUSH_CENTER.intValue();
+    private static final int FLUSH_TRAILING = TextAttribute.FLUSH_TRAILING.intValue();
+    private static final int FULLY_JUSTIFIED = TextAttribute.FULLY_JUSTIFIED.intValue();
+
+    private AttributeMap cacheStyle = null;
+
+    private float fLeadingMargin;
+    private float fTrailingMargin;
+    private float fFirstLineIndent;
+    private float fMinLineSpacing;
+    private float fExtraLineSpacing;
+    
+    private int fFlush = -1;
+    private MTabRuler fTabRuler;
+    
+    private boolean fLtrDefault;
+    private DefaultCharacterMetric fDefaultCharMetric;
+    
+    BidiParagraphRenderer(AttributeMap pStyle, DefaultCharacterMetric defaultCharMetric) {
+
+        fDefaultCharMetric = defaultCharMetric;
+        initRenderer(pStyle);
+    }
+
+    private float getFloatValue(Object key, AttributeMap style) {
+        return ((Float)style.get(key)).floatValue();
+    }
+    
+    private int getIntValue(Object key, AttributeMap style) {
+        return ((Integer)style.get(key)).intValue();
+    }
+    
+    /**
+     * NOTE:  it is illegal to initialize a StandardParagraphRenderer for any style
+     * other than the one it was created with.
+     */
+    public void initRenderer(AttributeMap pStyle) {
+
+        if (cacheStyle == null) {
+
+            fLeadingMargin = getFloatValue(TextAttribute.LEADING_MARGIN, pStyle);
+            fTrailingMargin = getFloatValue(TextAttribute.TRAILING_MARGIN, pStyle);
+            fFirstLineIndent = getFloatValue(TextAttribute.FIRST_LINE_INDENT, pStyle);
+            fMinLineSpacing = getFloatValue(TextAttribute.MIN_LINE_SPACING, pStyle);
+            fExtraLineSpacing = getFloatValue(TextAttribute.EXTRA_LINE_SPACING, pStyle);
+
+            fFlush = getIntValue(TextAttribute.LINE_FLUSH, pStyle);
+
+            fTabRuler = (MTabRuler) pStyle.get(TextAttribute.TAB_RULER);
+            
+            Object runDir = pStyle.get(TextAttribute.RUN_DIRECTION);
+            fLtrDefault = !TextAttribute.RUN_DIRECTION_RTL.equals(runDir);
+
+            cacheStyle = pStyle;
+        }
+        else if (pStyle != cacheStyle) {
+            if (!pStyle.equals(cacheStyle)) {
+                throw new Error("Attempt to share BidiParagraphRenderer between styles!");
+            }
+            else {
+                cacheStyle = pStyle;
+            }
+        }
+    }
+
+    private static boolean isTab(char ch) {
+        return ch == '\t';
+    }
+
+    /**
+     * Fill in info with the next line.
+     * @param measurer the LineBreakMeasurer for this paragraph.
+     *  Current position should be the first character on the line.
+     *  If null, a 0-length line is generated.  If measurer is null
+     *  then paragraphStart and paragraphLimit should be equal.
+     */
+    // Usually totalFormatWidth and lineBound will be the same.
+    // totalFormatWidth is used for wrapping, but lineBound is
+    // for flushing.  These may be different for unwrapped text,
+    // for example.
+    public LayoutInfo layout(MConstText text,
+                             LayoutInfo layoutToReuse,
+                             LineBreakMeasurer measurer,
+                             FontRenderContext frc,
+                             int paragraphStart,
+                             int paragraphLimit,
+                             int totalFormatWidth,
+                             int lineBound) {
+
+        if ((measurer==null) != (paragraphStart==paragraphLimit)) {
+            throw new IllegalArgumentException(
+                    "measurer, paragraphStart, paragraphLimit are wrong.");
+        }
+        BidiLayoutInfo line = null;
+
+        try {
+            line = (BidiLayoutInfo) layoutToReuse;
+        }
+        catch(ClassCastException e) {
+        }
+
+        if (line == null) {
+            line = new BidiLayoutInfo();
+        }
+
+        line.fRenderer = this;
+
+        final int lineCharStart = measurer==null? paragraphStart : measurer.getPosition();
+        line.setCharStart(lineCharStart);
+
+        final int lineIndent = (lineCharStart==paragraphStart)? (int) fFirstLineIndent : 0;
+
+        int formatWidth = totalFormatWidth - (int) (fLeadingMargin + fTrailingMargin);
+        computeLineMetrics(text, line, measurer, frc,
+                            paragraphStart, paragraphLimit, formatWidth, lineIndent);
+
+        // position the line according to the line flush
+        if (fFlush == FLUSH_TRAILING || fFlush == FLUSH_CENTER) {
+            int lineArea = lineBound - (int) (fLeadingMargin + fTrailingMargin);
+            int advanceDifference = lineArea - line.fVisibleAdvance;
+
+            if (fFlush == FLUSH_TRAILING) {
+                line.fLeadingMargin = ((int) (fLeadingMargin)) + advanceDifference;
+            }
+            else if (fFlush == FLUSH_CENTER) {
+                line.fLeadingMargin = (int) (fLeadingMargin + advanceDifference/2);
+            }
+        }
+        else {
+            line.fLeadingMargin = (int) fLeadingMargin;
+        }
+
+        return line;
+    }
+
+    /**
+     * Fill in the following fields in line:
+     * fCharLength, fAscent, fDescent, fLeading, fVisibleAdvance,
+     * fTotalAdvance.
+     * Uses: line.fLeadingMargin
+     * @param formatWidth the width to fit the line into.
+     */
+    private void computeLineMetrics(MConstText text,
+                                    BidiLayoutInfo line,
+                                    LineBreakMeasurer measurer,
+                                    FontRenderContext frc,
+                                    final int paragraphStart,
+                                    final int paragraphLimit,
+                                    final int formatWidth,
+                                    final int lineIndent) {
+
+        int segmentCount = 0;
+        /* variable not used boolean firstLine = measurer==null ||
+                            measurer.getPosition() == paragraphStart; */
+
+        if (measurer != null) {
+            computeSegments(text, line, measurer, paragraphLimit, formatWidth, lineIndent);
+
+            // iterate through segments and accumulate ascent, descent,
+            // leading, char length
+            float ascent = 0;
+            float descent = 0;
+            float descentPlusLeading = 0;
+
+            segmentCount = line.fSegments.size();
+            for (int i=0; i < segmentCount; i++) {
+                TextLayout layout = ((BidiSegment)line.fSegments.elementAt(i)).fLayout;
+                ascent = Math.max(ascent, layout.getAscent());
+                float segDescent = layout.getDescent();
+                descent = Math.max(descent, segDescent);
+                descentPlusLeading = Math.max(descentPlusLeading, segDescent+layout.getLeading());
+                line.fCharLength += layout.getCharacterCount();
+            }
+
+            line.fAscent = (int) Math.ceil(ascent);
+            line.fDescent = (int) Math.ceil(descent);
+            line.fLeading = (int) Math.ceil(descentPlusLeading) - line.fDescent;
+        }
+        else {
+            line.fLeftToRight = fLtrDefault;
+            line.fSegments.removeAllElements();
+
+            line.fCharLength = 0;
+
+            AttributeMap style = text.characterStyleAt(paragraphStart);
+            DefaultCharacterMetric.Metric cm = fDefaultCharMetric.getMetricForStyle(style);
+            line.fAscent = cm.getAscent();
+            line.fDescent = cm.getDescent();
+            line.fLeading = cm.getLeading();
+
+            line.fVisibleAdvance = line.fTotalAdvance = 0;
+        }
+
+        if (fExtraLineSpacing != 0) {
+            line.fAscent += (int) Math.ceil(fExtraLineSpacing);
+        }
+
+        if (fMinLineSpacing != 0){
+            int height = line.getHeight();
+            if (height < fMinLineSpacing) {
+                line.fAscent += Math.ceil(fMinLineSpacing - height);
+            }
+        }
+
+        final int lineNaturalAdvance = line.fTotalAdvance;
+
+        line.fTotalAdvance += lineIndent;
+        line.fVisibleAdvance += lineIndent;
+
+        if (measurer != null) {
+            // Now fill in fBounds field of BidiSegments.  fBounds should tile
+            // the line.
+            final float lineHeight = line.getHeight();
+
+            for (int i=1; i < segmentCount; i++) {
+
+                BidiSegment currentSegment = (BidiSegment) line.fSegments.elementAt(i-1);
+                BidiSegment nextSegment = (BidiSegment) line.fSegments.elementAt(i);
+
+                float origin;
+                float width;
+
+                if (line.fLeftToRight) {
+                    origin = 0;
+                    width = nextSegment.fDistanceFromLeadingMargin -
+                                currentSegment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    origin = currentSegment.fDistanceFromLeadingMargin;
+                    origin -= nextSegment.fDistanceFromLeadingMargin;
+                    origin += (float) Math.ceil(nextSegment.fLayout.getAdvance());
+                    width = (float) Math.ceil(currentSegment.fLayout.getAdvance()) - origin;
+                }
+                currentSegment.fBounds = new Rectangle2D.Float(origin, -line.fAscent, width, lineHeight);
+            }
+
+            // set last segment's bounds
+            {
+                BidiSegment currentSegment = (BidiSegment) line.fSegments.elementAt(segmentCount-1);
+                float origin;
+                float width;
+
+                if (line.fLeftToRight) {
+                    origin = 0;
+                    width = lineNaturalAdvance - currentSegment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    origin = currentSegment.fDistanceFromLeadingMargin - lineNaturalAdvance;
+                    width = (float) Math.ceil(currentSegment.fLayout.getAdvance()) - origin;
+                }
+
+                currentSegment.fBounds = new Rectangle2D.Float(origin, -line.fAscent, width, lineHeight);
+            }
+        }
+    }
+
+    /**
+     * Fill in fSegments, fLeftToRight.  measurer must not be null
+     */
+    private void computeSegments(MConstText text,
+                                 BidiLayoutInfo line,
+                                 LineBreakMeasurer measurer,
+                                 final int paragraphLimit,
+                                 final int formatWidth,
+                                 final int lineIndent) {
+
+        // Note on justification:  only the last segment of a line is
+        // justified.  
+        // Also, if a line ends in a tab it will not be justified.
+        // This behavior is consistent with other word processors
+        // I tried (MS Word and Lotus Word Pro).
+        
+        line.fSegments.removeAllElements();
+        line.fCharLength = 0;
+
+        TabStop currentTabStop = new TabStop((int)fLeadingMargin+lineIndent, TabStop.kLeading);
+
+        int segmentLimit = measurer.getPosition();
+        boolean firstSegment = true;
+
+        int advanceFromLeadingMargin = lineIndent;
+
+        boolean computeSegs = true;
+        
+        computeTabbedSegments: do {
+
+            // compute sementLimit:
+            if (segmentLimit <= measurer.getPosition()) {
+                while (segmentLimit < paragraphLimit) {
+                    if (isTab(text.at(segmentLimit++))) {
+                        break;
+                    }
+                }
+            }
+
+            // NOTE:  adjust available width for center tab!!!
+            //System.out.println("Format width: " + (formatWidth-advanceFromLeadingMargin) +
+            //                   ";  segmentLimit: " + segmentLimit);
+
+            int wrappingWidth = Math.max(formatWidth-advanceFromLeadingMargin, 0);
+            TextLayout layout = null;
+            if (firstSegment || wrappingWidth > 0 || segmentLimit > measurer.getPosition()+1) {
+                layout = measurer.nextLayout(wrappingWidth, segmentLimit, !firstSegment);
+            }
+
+            if (layout == null) {
+                if (firstSegment) {
+                    // I doubt this would happen, but check anyway
+                    throw new Error("First layout is null!");
+                }
+                break computeTabbedSegments;
+            }
+            
+            final int measurerPos = measurer.getPosition();
+            if (measurerPos < segmentLimit) {
+                computeSegs = false;
+                if (fFlush == FULLY_JUSTIFIED) {
+                    layout = layout.getJustifiedLayout(wrappingWidth);
+                }
+            }
+            else {
+                computeSegs = !(measurerPos == paragraphLimit);
+            }
+
+            if (firstSegment) {
+                firstSegment = false;
+                // Have to get ltr off of layout.  Not available from measurer,
+                // unfortunately.
+                line.fLeftToRight = layout.isLeftToRight();
+            }
+
+            BidiSegment segment = new BidiSegment();
+            segment.fLayout = layout;
+            int layoutAdvance = (int) Math.ceil(layout.getAdvance());
+
+            // position layout relative to leading margin, update logicalPositionOnLine
+            
+            int relativeTabPosition = currentTabStop.getPosition()-(int)fLeadingMargin;
+            int logicalPositionOfLayout;
+            switch (currentTabStop.getType()) {
+                case TabStop.kTrailing:
+                    logicalPositionOfLayout = Math.max(
+                                    relativeTabPosition-layoutAdvance,
+                                    advanceFromLeadingMargin);
+                    break;
+                case TabStop.kCenter:
+                    logicalPositionOfLayout = Math.max(
+                                    relativeTabPosition-(layoutAdvance/2),
+                                    advanceFromLeadingMargin);
+                    break;
+                default:  // includes decimal tab right now
+                    logicalPositionOfLayout = relativeTabPosition;
+                    break;
+            }
+
+            // position layout in segment
+            if (line.fLeftToRight) {
+                segment.fDistanceFromLeadingMargin = logicalPositionOfLayout;
+            }
+            else {
+                segment.fDistanceFromLeadingMargin = logicalPositionOfLayout+layoutAdvance;
+            }
+
+            // update advanceFromLeadingMargin
+            advanceFromLeadingMargin = logicalPositionOfLayout + layoutAdvance;
+
+            // add segment to segment Vector
+            line.fSegments.addElement(segment);
+
+            // get next tab
+            currentTabStop = fTabRuler.nextTab((int)fLeadingMargin+advanceFromLeadingMargin);
+            if (currentTabStop.getType() == TabStop.kLeading ||
+                            currentTabStop.getType() == TabStop.kAuto)  {
+                advanceFromLeadingMargin = currentTabStop.getPosition();
+                //System.out.println("Advance from leading margin:" + advanceFromLeadingMargin);
+
+            }
+            else {
+               //System.out.println("Non-leading tab, type=" + currentTabStop.getType());
+            }
+
+        } while (computeSegs);
+
+        // Now compute fTotalAdvance, fVisibleAdvance.  These metrics may be affected
+        // by a trailing tab.
+
+        {
+            BidiSegment lastSegment = (BidiSegment) line.fSegments.lastElement();
+            TextLayout lastLayout = lastSegment.fLayout;
+
+            if (line.fLeftToRight) {
+                line.fTotalAdvance = (int) Math.ceil(lastLayout.getAdvance()) +
+                                        lastSegment.fDistanceFromLeadingMargin;
+                line.fVisibleAdvance = (int) Math.ceil(lastLayout.getVisibleAdvance()) +
+                                        lastSegment.fDistanceFromLeadingMargin;
+            }
+            else {
+                line.fTotalAdvance = lastSegment.fDistanceFromLeadingMargin;
+                line.fVisibleAdvance = lastSegment.fDistanceFromLeadingMargin -
+                                        (int) Math.ceil(lastLayout.getAdvance() -
+                                            lastLayout.getVisibleAdvance());
+            }
+
+            if (isTab(text.at(measurer.getPosition()-1))) {
+                line.fTotalAdvance = Math.max(line.fTotalAdvance,
+                                                currentTabStop.getPosition());
+            }
+        }
+    }
+
+    /**
+     * Return the highlight shape for the given character offsets.
+     * The Shape returned is relative to the leftmost point on the
+     * baseline of line.
+     */
+    private Shape getHighlightShape(BidiLayoutInfo line,
+                                    int lengthBasis,
+                                    int lineBound,
+                                    int hlStart,
+                                    int hlLimit) {
+
+        if (hlStart >= hlLimit) {
+            throw new IllegalArgumentException("Highlight range length is not positive.");
+        }
+
+        final int leadingMargin = (line.fLeftToRight)?
+                line.fLeadingMargin : lineBound - line.fLeadingMargin;
+        final int segmentCount = line.fSegments.size();
+
+        Shape rval = null;
+        GeneralPath highlightPath = null;
+
+        int currentLayoutStart = line.getCharStart(lengthBasis);
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+            TextLayout layout = segment.fLayout;
+            int charCount = layout.getCharacterCount();
+            int currentLayoutLimit = currentLayoutStart + charCount;
+            boolean rangesIntersect;
+            if (hlStart <= currentLayoutStart) {
+                rangesIntersect = hlLimit > currentLayoutStart;
+            }
+            else {
+                rangesIntersect = hlStart < currentLayoutLimit;
+            }
+
+            if (rangesIntersect) {
+
+                Shape currentHl = layout.getLogicalHighlightShape(
+                                        Math.max(hlStart-currentLayoutStart, 0),
+                                        Math.min(hlLimit-currentLayoutStart, charCount),
+                                        segment.fBounds);
+
+                float xTranslate;
+                if (line.fLeftToRight) {
+                    xTranslate = leadingMargin +
+                                 segment.fDistanceFromLeadingMargin;
+                }
+                else {
+                    xTranslate = leadingMargin -
+                                 segment.fDistanceFromLeadingMargin;
+                }
+
+                if (xTranslate != 0) {
+                    AffineTransform xform =
+                        AffineTransform.getTranslateInstance(xTranslate, 0);
+                    currentHl = xform.createTransformedShape(currentHl);
+                }
+
+                if (rval == null) {
+                    rval = currentHl;
+                }
+                else {
+                    if (highlightPath == null) {
+                        highlightPath = new GeneralPath();
+                        highlightPath.append(rval, false);
+                        rval = highlightPath;
+                    }
+                    highlightPath.append(currentHl, false);
+                }
+            }
+            currentLayoutStart = currentLayoutLimit;
+        }
+
+        return rval;
+    }
+
+    private void renderWithHighlight(BidiLayoutInfo line,
+                                     int lengthBasis,
+                                     Graphics2D g,
+                                     int lineBound,
+                                     int x,
+                                     int y,
+                                     TextOffset selStart,
+                                     TextOffset selStop,
+                                     Color highlightColor) {
+
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        if (selStart != null && selStop != null && !selStart.equals(selStop) &&
+                line.fCharLength != 0 &&
+                selStart.fOffset < lineCharStart + line.fCharLength &&
+                selStop.fOffset > lineCharStart) {
+
+            Shape highlight = getHighlightShape(line, lengthBasis, lineBound, selStart.fOffset, selStop.fOffset);
+            if (highlight != null) {
+                Graphics2D hl = (Graphics2D) g.create();
+                hl.setColor(highlightColor);
+                hl.translate(x, y + line.fAscent);
+                hl.fill(highlight);
+            }
+        }
+
+        render(line, lengthBasis, g, lineBound, x, y);
+    }
+
+    /**
+     * Draw the line into the graphics.  (x, y) is the upper-left corner
+     * of the line.  The leading edge of a right-aligned line is aligned
+     * to (x + lineBound).
+     */
+    private void render(BidiLayoutInfo line,
+                        int lengthBasis,
+                        Graphics2D g,
+                        int lineBound,
+                        int x,
+                        int y) {
+
+        final int leadingMargin = (line.fLeftToRight)?
+                x + line.fLeadingMargin : x + lineBound - line.fLeadingMargin;
+        final int baseline = y + line.fAscent;
+        final int segmentCount = line.fSegments.size();
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+
+            float drawX;
+            if (line.fLeftToRight) {
+                drawX = leadingMargin + segment.fDistanceFromLeadingMargin;
+            }
+            else {
+                drawX = leadingMargin - segment.fDistanceFromLeadingMargin;
+            }
+
+            segment.fLayout.draw(g, drawX, baseline);
+        }
+    }
+
+    private TextOffset hitTestSegment(TextOffset result,
+                                      int segmentCharStart,
+                                      BidiSegment segment,
+                                      int xInSegment,
+                                      int yInSegment) {
+
+        final TextLayout layout = segment.fLayout;
+        final int charCount = layout.getCharacterCount();
+        final int layoutAdvance = (int) Math.ceil(layout.getAdvance());
+        Rectangle2D bounds = segment.fBounds;
+
+        final boolean ltr = layout.isLeftToRight();
+
+        if (ltr && (xInSegment >= layoutAdvance) || !ltr && (xInSegment <= 0)) {
+
+            // pretend the extra space at the end of the line is a
+            // tab and 'hit-test' it.
+            double tabCenter;
+            if (ltr) {
+                tabCenter = (layoutAdvance+bounds.getMaxX()) / 2;
+            }
+            else {
+                tabCenter = bounds.getX() / 2;
+            }
+
+            if ((xInSegment >= tabCenter) == ltr) {
+                result.fOffset = charCount;
+                result.fPlacement = TextOffset.BEFORE_OFFSET;
+            }
+            else {
+                result.fOffset = charCount-1;
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+        }
+        else {
+            TextHitInfo info = layout.hitTestChar(xInSegment, yInSegment, segment.fBounds);
+            result.fOffset = info.getInsertionIndex();
+            if (result.fOffset == 0) {
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+            else if (result.fOffset == charCount) {
+                result.fPlacement = TextOffset.BEFORE_OFFSET;
+            }
+            else {
+                result.fPlacement = info.isLeadingEdge()?
+                        TextOffset.AFTER_OFFSET : TextOffset.BEFORE_OFFSET;
+            }
+        }
+
+        result.fOffset += segmentCharStart;
+        return result;
+    }
+
+    /**
+     * Return the offset at the point (x, y).  (x, y) is relative to the top-left
+     * of the line.  The leading edge of a right-aligned line is aligned
+     * to lineBound.
+     */
+    private TextOffset pixelToOffset(BidiLayoutInfo line,
+                                     int lengthBasis,
+                                     TextOffset result,
+                                     int lineBound,
+                                     int x,
+                                     int y) {
+
+        if (result == null) {
+            result = new TextOffset();
+        }
+
+        final int yInSegment = y - line.fAscent;
+        final int leadingMargin = (line.fLeftToRight)?
+                line.fLeadingMargin : lineBound - line.fLeadingMargin;
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        // first see if point is before leading edge of line
+        final int segmentCount = line.fSegments.size();
+        {
+            int segLeadingMargin = leadingMargin;
+            if (segmentCount > 0) {
+                BidiSegment firstSeg = (BidiSegment) line.fSegments.elementAt(0);
+                if (line.fLeftToRight) {
+                    segLeadingMargin += firstSeg.fDistanceFromLeadingMargin;
+                }
+                else {
+                    segLeadingMargin -= firstSeg.fDistanceFromLeadingMargin;
+                    segLeadingMargin += (float) firstSeg.fBounds.getMaxX();
+                }
+            }
+            if (line.fLeftToRight == (x <= segLeadingMargin)) {
+                result.fOffset = lineCharStart;
+                result.fPlacement = TextOffset.AFTER_OFFSET;
+                return result;
+            }
+        }
+
+        int segmentCharStart = lineCharStart;
+
+        for (int i=0; i < segmentCount; i++) {
+
+            BidiSegment segment = (BidiSegment) line.fSegments.elementAt(i);
+            int segmentOrigin = line.fLeftToRight?
+                            leadingMargin+segment.fDistanceFromLeadingMargin :
+                            leadingMargin-segment.fDistanceFromLeadingMargin;
+            int xInSegment = x - segmentOrigin;
+            if (line.fLeftToRight) {
+                if (segment.fBounds.getMaxX() > xInSegment) {
+                    return hitTestSegment(result, segmentCharStart, segment, xInSegment, yInSegment);
+                }
+            }
+            else {
+                if (segment.fBounds.getX() < xInSegment) {
+                    return hitTestSegment(result, segmentCharStart, segment, xInSegment, yInSegment);
+                }
+            }
+            segmentCharStart += segment.fLayout.getCharacterCount();
+        }
+
+        result.fOffset = lineCharStart + line.fCharLength;
+        result.fPlacement = TextOffset.BEFORE_OFFSET;
+        return result;
+    }
+
+    private void renderCaret(BidiLayoutInfo line,
+                             MConstText text,
+                             int lengthBasis,
+                             Graphics2D g,
+                             int lineBound,
+                             int x,
+                             int y,
+                             final int charOffset,
+                             Color strongCaretColor,
+                             Color weakCaretColor)
+    {
+        final int segmentCount = line.fSegments.size();
+        final int lineStart = line.getCharStart(lengthBasis);
+
+        int currentStart = lineStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        /*
+            There are two choices here:
+            1. get carets from a TextLayout and render them, or
+            2. make up a caret ourselves and render it.
+            We want to do 2 when:
+                * there is no text on the line, or
+                * the line ends with a tab and we are drawing the last caret on the line
+            Otherwise, we want 1.
+        */
+
+        if (segmentIndex == segmentCount && segmentCount > 0) {
+            // If we get here, line length is not 0, and charOffset is at end of line
+            if (!isTab(text.at(charOffset-1))) {
+                segmentIndex = segmentCount-1;
+                segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+                currentStart = lineStart + line.getCharLength() -
+                                    segment.fLayout.getCharacterCount();
+            }
+        }
+
+        Object savedPaint = Graphics2DConversion.getColorState(g);
+
+        try {
+            if (segmentIndex < segmentCount) {
+                TextLayout layout = segment.fLayout;
+                int offsetInLayout = charOffset - currentStart;
+                Shape[] carets = layout.getCaretShapes(offsetInLayout, segment.fBounds);
+                g.setColor(strongCaretColor);
+                int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+                int layoutX = line.fLeftToRight?
+                        x + layoutPos : x + lineBound - layoutPos;
+                int layoutY = y + line.fAscent;
+
+                // Translating and then clipping doesn't work.  Try this:
+                Rectangle2D.Float clipRect = new Rectangle2D.Float();
+                clipRect.setRect(segment.fBounds);
+                clipRect.x += layoutX;
+                clipRect.y += layoutY;
+                clipRect.width += 1;
+                clipRect.height -= 1;
+
+                Object savedClip = ClipWorkaround.saveClipState(g);
+                try {
+                    ClipWorkaround.translateAndDrawShapeWithClip(g,
+                                                                layoutX,
+                                                                layoutY,
+                                                                clipRect,
+                                                                carets[0]);
+                    if (carets[1] != null) {
+                        g.setColor(weakCaretColor);
+                        ClipWorkaround.translateAndDrawShapeWithClip(g,
+                                                                    layoutX,
+                                                                    layoutY,
+                                                                    clipRect,
+                                                                    carets[1]);
+                    }
+                }
+                finally {
+                    ClipWorkaround.restoreClipState(g, savedClip);
+                }
+            }
+            else {
+                int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+                int endX = line.fLeftToRight? lineEnd : lineBound-lineEnd;
+                endX += x;
+                g.drawLine(endX, y, endX, y+line.getHeight()-1);
+            }
+        }
+        finally {
+            Graphics2DConversion.restoreColorState(g, savedPaint);
+        }
+    }
+
+    private Rectangle caretBounds(BidiLayoutInfo line,
+                                  MConstText text,
+                                  int lengthBasis,
+                                  int lineBound,
+                                  int charOffset,
+                                  int x,
+                                  int y) {
+
+        final int segmentCount = line.fSegments.size();
+        final int lineStart = line.getCharStart(lengthBasis);
+        int currentStart = lineStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        if (segmentIndex == segmentCount && segmentCount > 0) {
+            // If we get here, line length is not 0, and charOffset is at end of line
+            if (!isTab(text.at(charOffset-1))) {
+                segmentIndex = segmentCount-1;
+                segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+                currentStart = lineStart + line.getCharLength() -
+                                    segment.fLayout.getCharacterCount();
+            }
+        }
+
+        Rectangle r;
+        
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            Shape[] carets = layout.getCaretShapes(offsetInLayout, segment.fBounds);
+            r = carets[0].getBounds();
+            if (carets[1] != null) {
+                r.add(carets[1].getBounds());
+            }
+            r.width += 1;
+            
+            int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+            if (line.fLeftToRight) {
+                r.x += layoutPos;
+            }
+            else {
+                r.x += lineBound - layoutPos;
+            }
+            r.y += line.fAscent;
+        }
+        else {
+            r = new Rectangle();
+            r.height = line.getHeight();
+            r.width = 1;
+            int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+            if (line.fLeftToRight) {
+                r.x = lineEnd;
+            }
+            else {
+                r.x = lineBound - lineEnd;
+            }
+        }
+        
+        r.translate(x, y);
+        return r;
+    }
+
+    private int strongCaretBaselinePosition(BidiLayoutInfo line,
+                                            int lengthBasis,
+                                            int lineBound,
+                                            int charOffset) {
+
+        final int segmentCount = line.fSegments.size();
+        int currentStart = line.getCharStart(lengthBasis);
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            TextHitInfo hit = TextHitInfo.afterOffset(offsetInLayout);
+            hit = TextLayout.DEFAULT_CARET_POLICY.getStrongCaret(hit, hit.getOtherHit(), layout);
+            float[] info = layout.getCaretInfo(hit);
+            int layoutPos = line.fLeadingMargin + segment.fDistanceFromLeadingMargin;
+            if (line.fLeftToRight) {
+                return layoutPos + (int) info[0];
+            }
+            else {
+                return lineBound - layoutPos + (int) info[0];
+            }
+        }
+        else {
+            int lineEnd = line.fLeadingMargin + line.fTotalAdvance;
+            if (line.fLeftToRight) {
+                return lineEnd;
+            }
+            else {
+                return lineBound - lineEnd;
+            }
+        }
+    }
+
+    private int getNextOffset(BidiLayoutInfo line,
+                              int lengthBasis,
+                              int charOffset,
+                              short dir) {
+
+        if (dir != MFormatter.eLeft && dir != MFormatter.eRight) {
+            throw new IllegalArgumentException("Invalid direction.");
+        }
+
+        // find segment containing offset:
+        final int segmentCount = line.fSegments.size();
+        final int lineCharStart = line.getCharStart(lengthBasis);
+
+        int currentStart = lineCharStart;
+        BidiSegment segment = null;
+        int segmentIndex;
+
+        for (segmentIndex=0; segmentIndex < segmentCount; segmentIndex++) {
+            segment = (BidiSegment) line.fSegments.elementAt(segmentIndex);
+            int currentEndpoint = currentStart + segment.fLayout.getCharacterCount();
+            if (currentEndpoint > charOffset ||
+                    (segmentIndex == segmentCount-1 && currentEndpoint==charOffset)) {
+                break;
+            }
+            currentStart = currentEndpoint;
+        }
+
+        final boolean logAdvance = (dir==MFormatter.eRight)==(line.fLeftToRight);
+
+        int result;
+
+        if (segmentIndex < segmentCount) {
+            TextLayout layout = segment.fLayout;
+            int offsetInLayout = charOffset - currentStart;
+            TextHitInfo hit = (dir==MFormatter.eLeft)?
+                        layout.getNextLeftHit(offsetInLayout) :
+                        layout.getNextRightHit(offsetInLayout);
+            if (hit == null) {
+                result = logAdvance?
+                    currentStart+layout.getCharacterCount()+1 : currentStart-1;
+            }
+            else {
+                result = hit.getInsertionIndex() + currentStart;
+            }
+        }
+        else {
+            result = logAdvance? lineCharStart + line.fCharLength + 1 :
+                                         lineCharStart - 1;
+        }
+
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textformat/ClipWorkaround.java b/src/com/ibm/richtext/textformat/ClipWorkaround.java
new file mode 100644
index 0000000..0467b32
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/ClipWorkaround.java
@@ -0,0 +1,140 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Shape;
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Line2D;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+import com.ibm.richtext.textlayout.Rectangle2D;
+JDK11IMPORTS*/
+
+/**
+ * This class exists to work around a clipping bug in JDK 1.2.
+ */
+final class ClipWorkaround {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+///*JDK12IMPORTS
+    private static final String excuse =
+        "Sorry, this method is a very limited workaround for a JDK 1.2 bug.";
+//JDK12IMPORTS*/
+    
+    static Object saveClipState(Graphics2D g) {
+///*JDK12IMPORTS
+        return null;
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        return g.getClip();
+JDK11IMPORTS*/
+    }
+    
+    static void restoreClipState(Graphics2D g, Object state) {
+///*JDK12IMPORTS
+        if (state != null) {
+            throw new Error("Invalid clip state for this class.");
+        }
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        g.setClip((Shape)state);
+JDK11IMPORTS*/
+    }
+    
+    /**
+     * Draw the given Shape into the Graphics, translated by (dx, dy)
+     * and clipped to clipRect.
+     */
+    static void translateAndDrawShapeWithClip(Graphics2D g,
+                                              int dx,
+                                              int dy,
+                                              Rectangle2D clipRect,
+                                              Shape shape) {
+///*JDK12IMPORTS
+        // really bogus implementation right now:  basically only
+        // draws carets from a TextLayout.
+        // Oh yeah, it doesn't really clip correctly either...
+
+        PathIterator pathIter = shape.getPathIterator(null);
+        float[] points = new float[6];
+
+        int type = pathIter.currentSegment(points);
+        if (type != PathIterator.SEG_MOVETO) {
+            throw new Error(excuse);
+        }
+        float x1 = points[0] + dx;
+        float y1 = points[1] + dy;
+
+        if (pathIter.isDone()) {
+            throw new Error(excuse);
+        }
+
+        pathIter.next();
+        type = pathIter.currentSegment(points);
+        if (type != PathIterator.SEG_LINETO) {
+            throw new Error(excuse);
+        }
+        float x2 = points[0] + dx;
+        float y2 = points[1] + dy;
+
+        float minY = (float) clipRect.getY();
+        float maxY = (float) clipRect.getMaxY();
+
+        // Now clip within vertical limits in clipRect
+        if (y1 == y2) {
+            if (y1 < minY || y1 >= maxY) {
+                return;
+            }
+        }
+        else {
+            if (y1 > y2) {
+                float t = x1;
+                x1 = x2;
+                x2 = t;
+                t = y1;
+                y1 = y2;
+                y2 = t;
+            }
+
+            float invSlope = (x2-x1) / (y2-y1);
+            if (y1 < minY) {
+                x1 -= (minY-y1) * invSlope;
+                y1 = minY;
+            }
+            if (y2 >= maxY) {
+                x1 += (y2-maxY) * invSlope;
+                y2 = maxY;
+            }
+        }
+
+        g.draw(new Line2D.Float(x1, y1, x2, y2));
+//JDK12IMPORTS*/
+/*JDK11IMPORTS
+        g.setClip(clipRect);
+        g.translate(dx, dy);
+        try {
+            g.draw(shape);
+        }
+        finally {
+            g.translate(-dx, -dy);
+        }
+JDK11IMPORTS*/
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java b/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java
new file mode 100644
index 0000000..73632de
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/DefaultCharacterMetric.java
@@ -0,0 +1,93 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+///*JDK12IMPORTS
+import java.awt.font.FontRenderContext;
+import java.awt.font.TextLayout;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.TextLayout;
+JDK11IMPORTS*/
+
+/**
+ * This class is used by the Formatter to estimate the height
+ * of characters in a particular style.
+ */
+final class DefaultCharacterMetric {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    final class Metric {
+    
+        private float fAscent;
+        private float fDescent;
+        private float fLeading;
+    
+        private Metric(float ascent, float descent, float leading) {
+    
+            fAscent = ascent;
+            fDescent = descent;
+            fLeading = leading;
+        }
+    
+        public int getAscent() {
+            return (int) Math.ceil(fAscent);
+        }
+    
+        public int getDescent() {
+            return (int) Math.ceil(fDescent);
+        }
+    
+        public int getLeading() {
+            return (int) Math.ceil(fLeading);
+        }
+    }
+    
+    private final Hashtable fCache = new Hashtable();
+    private /*final*/ FontResolver fResolver;
+    private /*final*/ FontRenderContext fFrc;
+    
+    public DefaultCharacterMetric(FontResolver resolver,
+                                  FontRenderContext frc) {
+    
+        fResolver = resolver;
+        fFrc = frc;
+    }
+    
+    /**
+     * Get a DefaultCharacterMetric instance for the given style.  The
+     * style is first resolved with FontResolver.
+     */
+    public Metric getMetricForStyle(AttributeMap style) {
+
+        style = fResolver.applyFont(style);
+        Metric metric = (Metric) fCache.get(style);
+        if (metric == null) {
+            TextLayout layout = new TextLayout(" ", style, fFrc);
+            metric = new Metric(layout.getAscent(),
+                                layout.getDescent(),
+                                layout.getLeading());
+            fCache.put(style, metric);
+        }
+        return metric;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textformat/FontResolver.java b/src/com/ibm/richtext/textformat/FontResolver.java
new file mode 100644
index 0000000..c96dee8
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/FontResolver.java
@@ -0,0 +1,83 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.textlayout.FontUtils;
+
+import java.util.Hashtable;
+import java.awt.Font;
+
+final class FontResolver {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static {
+// Even though it violates the Prime Directive I'll conditionalize
+// this anyway, since it is just a 1.2 workaround which I greatly
+// resent.
+///*JDK12IMPORTS
+        java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
+//JDK12IMPORTS*/
+    }
+
+    private Hashtable styleMap;
+    private final AttributeMap fDefaultFontMap;
+
+    public FontResolver(AttributeMap defaults) {
+
+        styleMap = new Hashtable();
+        Hashtable tempMap = new Hashtable();
+        tempMap.put(TextAttribute.FAMILY, defaults.get(TextAttribute.FAMILY));
+        tempMap.put(TextAttribute.WEIGHT, defaults.get(TextAttribute.WEIGHT));
+        tempMap.put(TextAttribute.POSTURE, defaults.get(TextAttribute.POSTURE));
+        tempMap.put(TextAttribute.SIZE, defaults.get(TextAttribute.SIZE));
+        fDefaultFontMap = new AttributeMap(tempMap);
+    }
+
+    /**
+     * Fetch result of resolve(style) from cache, if present.
+     */
+    public AttributeMap applyFont(AttributeMap style) {
+
+        Object cachedMap = styleMap.get(style);
+
+        if (cachedMap == null) {
+            AttributeMap resolvedMap = resolve(style);
+            styleMap.put(style, resolvedMap);
+            return resolvedMap;
+        }
+        else {
+            return (AttributeMap) cachedMap;
+        }
+    }
+
+    /**
+     * Return an AttributeMap containing a Font computed from the
+     * attributes in <tt>style</tt>.
+     */
+    public AttributeMap resolve(AttributeMap style) {
+
+        if (style.get(TextAttribute.FONT) != null) {
+            return style;
+        }
+
+        Font font = FontUtils.getFont(fDefaultFontMap.addAttributes(style));
+
+        return style.addAttribute(TextAttribute.FONT, font);
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/LayoutInfo.java b/src/com/ibm/richtext/textformat/LayoutInfo.java
new file mode 100644
index 0000000..2162f39
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/LayoutInfo.java
@@ -0,0 +1,197 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+/** LayoutInfo
+
+    A line of text, possibly containing tab-segments.
+*/
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+
+///*JDK12IMPORTS
+import java.awt.Graphics2D;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.Graphics2D;
+JDK11IMPORTS*/
+
+import com.ibm.richtext.styledtext.MConstText;
+
+abstract class LayoutInfo
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fCharStart;       // offset in text to start of line (was fStart)
+                                  // neg. values indicate distance from end of text
+    private int fGraphicStart;    // min pixel offset in fill direction
+                                  // negative values indicate distance from bottom of text view
+
+    /*
+        These methods are for storing Layouts in a gap-storage,
+        relative to either the start of end of text.  See AsyncFormatter.
+
+        If you just want absolute (that is, start-relative) char and
+        graphic starts, don't make them end-relative.
+    */
+
+    public final int getCharStart(int lengthBasis) {
+
+        if (fCharStart >= 0) {
+            return fCharStart;
+        }
+        else {
+            return lengthBasis + fCharStart;
+        }
+    }
+
+    public final int getGraphicStart(int graphicBasis) {
+
+        if (fGraphicStart >= 0) {
+            return fGraphicStart;
+        }
+        else {
+            return graphicBasis + fGraphicStart;
+        }
+    }
+
+    public final void setCharStart(int beginningRelativeStart) {
+
+        if (beginningRelativeStart < 0) {
+            throw new IllegalArgumentException("charStart must be nonnegavitve");
+        }
+        fCharStart = beginningRelativeStart;
+    }
+
+    public final void setGraphicStart(int beginningRelativeStart) {
+
+        if (beginningRelativeStart < 0) {
+            throw new IllegalArgumentException("charStart must be nonnegavitve");
+        }
+        fGraphicStart = beginningRelativeStart;
+    }
+
+    public final void makeRelativeToBeginning(int lengthBasis,
+                                              int graphicBasis) {
+
+        if (lengthBasis < 0 || graphicBasis < 0) {
+            throw new IllegalArgumentException("Bases must be positive.");
+        }
+        if (fCharStart >= 0 || fGraphicStart >= 0) {
+            throw new Error("Already start-relative.");
+        }
+
+        fCharStart += lengthBasis;
+        fGraphicStart += graphicBasis;
+    }
+
+    public final void makeRelativeToEnd(int lengthBasis,
+                                        int graphicBasis) {
+
+        if (lengthBasis < 0 || graphicBasis < 0) {
+            throw new IllegalArgumentException("Bases must be positive.");
+        }
+        if (fCharStart < 0 || fGraphicStart < 0) {
+            throw new Error("Already end-relative.");
+        }
+
+        fCharStart -= lengthBasis;
+        fGraphicStart -= graphicBasis;
+    }
+
+
+    public abstract int getCharLength();
+    public abstract int getAscent();
+    public abstract int getDescent();
+    public abstract int getLeading();
+
+    public abstract int getVisibleAdvance();
+    public abstract int getTotalAdvance();
+    public abstract int getLeadingMargin();
+
+    public abstract boolean isLeftToRight();
+
+    public int getHeight() {
+
+        return getAscent()+getDescent()+getLeading();
+    }
+
+    /**
+    * Draws text with highlighting.
+    */
+    public void renderWithHighlight(int lengthBasis,
+                                    Graphics2D g,
+                                    int lineBound,
+                                    int x,
+                                    int y,
+                                    TextOffset selStart,
+                                    TextOffset selStop,
+                                    Color highlightColor)
+    {
+    }
+
+    /** Use layout information to render the line at x, y.*/
+
+    public void render(int lengthBasis,
+                       Graphics2D g,
+                       int lineBound,
+                       int x,
+                       int y)
+    {
+    }
+
+    public void renderCaret(MConstText text,
+                            int lengthBasis,
+                            Graphics2D g,
+                            int lineBound,
+                            int x,
+                            int y,
+                            int charOffset,
+                            Color strongCaretColor,
+                            Color weakCaretColor)
+    {
+    }
+
+    /**
+     * Given a point within this line, return the character offset corresponding to that point.
+     *
+     * @param result.  This may be null, in which case a new TextOffset will be allocated.
+     *        This object is modified in place, and also returned as the function result.
+     * @param text Text to inspect.
+     * @param lineX Position on this line relative to top left corner of this line.
+     * @param lineY Position on this line relative to top left corner of this line.
+     */
+    public abstract TextOffset pixelToOffset(int lengthBasis,
+                                             TextOffset result,
+                                             int lineBound,
+                                             int x,
+                                             int y);
+
+    public abstract int strongCaretBaselinePosition(int lengthBasis,
+                                                    int lineBound,
+                                                    int charOffset);
+
+    public abstract Rectangle caretBounds(MConstText text,
+                                          int lengthBasis,
+                                          int lineBound,
+                                          int charOffset,
+                                          int x,
+                                          int y);
+    
+    public abstract int getNextOffset(int lengthBasis,
+                                      int charOffset,
+                                      short dir);
+}
diff --git a/src/com/ibm/richtext/textformat/MFormatter.java b/src/com/ibm/richtext/textformat/MFormatter.java
new file mode 100644
index 0000000..b61d77d
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/MFormatter.java
@@ -0,0 +1,351 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+
+package com.ibm.richtext.textformat;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+/**
+*
+* This class formats lines of text to a given length.
+* It provides services needed for static text display,
+* and also editable text, including:  displaying text,
+* reformatting text after an edit, converting between
+* screen locations and offsets into the text, calculating
+* areas of the screen for "highlighting,"  and computing
+* offsets into the text resulting from arrow keys.
+* <p>
+* Text clients instantiate this class with an
+* <tt>MConstText</tt> object and a format width.  Text
+* can be formatted such that all lines fit within the
+* format length.  Alternatively, text can be formatted
+* such that lines end only at the end of paragraphs.
+* <p>
+* The format length is specified with the <tt>setLineBound()</tt>
+* method.
+* <p>
+* Methods in the formatter which interact with the graphics
+* system generally take as a paramter a <tt>Point</tt> object
+* which represents the "origin" of the text display.  The
+* origin represents the location, in the graphics system used to display the text, of
+* the top-left corner of the text.
+* <p>
+* To display the text, call <tt>draw()</tt>, passing the
+* a rectangle in which to draw as a parameter.  Only lines
+* of text in the draw rectangle will be drawn.
+* <p>
+* When the formatter's text changes, it is important to first call
+* <tt>stopBackgroundFormatting()</tt> to prevent the Formatter from
+* accessing the text from a background thread.  After modifications are
+* complete,
+* call the <tt>updateFormat()</tt> method before invoking any other
+* methods of the formatter.  <tt>updateFormat()</tt> reformats the
+* new text, formatting no more text than is necessary.
+* <p>
+* The formatter provides services for responding to user input from the
+* mouse and keyboard.  The method <tt>pointToTextOffset()</tt> converts
+* a screen location to an offset in the text.  The method <tt>textOffsetToPoint</tt>
+* converts an offset in the text to an array of two <tt>Point</tt> objects, which can be
+* used to draw a verticle caret, denoting an insertion point.  <tt>highlightArea</tt>
+* accepts two offsets into the text as paramters, and returns an array of <tt>Polygon</tt>
+* objects representing areas where visual highlighting should be applied.
+* <p>
+* Finally, for
+* keyboard handling, the <tt>findNewInsertionOffset()</tt> method accepts an "initial"
+* offset, a "previous" offset, as well as a direction, and returns a new offset.  The direction
+* can be up, down, left, or right.  The previous offset is the insertion point location, before
+* the arrow key is processed.  The initial offset is the offset where an up or down arrow
+* key sequence began.  Using the initial offset allows for "intelligent" handling of up and down
+* arrow keys.
+* <p>
+* Examples of using the MFormatter class
+* are given in the <tt>AsyncFormatter</tt> class
+* documentation.
+* <p>
+* @author John Raley
+*
+* @see com.ibm.richtext.styledtext.MText
+*/
+
+public abstract class MFormatter {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public abstract AttributeMap getDefaultValues();
+
+/**
+* Display text in drawArea, with highlighting.
+* Does not reformat text
+* @param g the Graphics object in which to draw
+* @param drawArea the rectangle, in g's coordinate system, in which to draw
+* @param origin the top-left corner of the text, in g's coordinate system
+* @param selStart the offset where the current selection begins;  pass <tt>null</tt> if no selection
+* @param selStop the offset where the current selection ends
+* @param highlight the color of the highlighting
+*/
+    public abstract void draw(Graphics g, Rectangle drawArea, Point origin,
+            TextOffset selStart, TextOffset selStop, Color highlight);
+
+    public abstract void draw(Graphics g, Rectangle drawArea, Point origin);
+
+/**
+* Specify whether to wrap line at the edge of the destination area.
+* <tt>true</tt> means wrap lines;  <tt>false</tt> means to break lines
+* only when an end-of-line character is reached.
+* @param wrap <tt>true</tt> to break lines at the edge of the destination
+* area;  <tt>false</tt> otherwise.
+*/
+
+    public abstract void setWrap(boolean wrap);
+
+/**
+* Return whether text is wrapped at the edge of the destination area.
+* @see #setWrap
+*/
+    public abstract boolean wrap();
+
+/**
+* Specify the number of pixels along the "line dimension".
+* Lines are formatted to fit within the line dimension.  The
+* line dimension in Roman script is horizontal.
+* @param lineBound the length, in pixels, to which lines will be formatted
+*/
+    public abstract void setLineBound(int lineBound);
+
+/**
+* Return the number of pixels along the line dimension.
+* @return the number of pixels along the line dimension.
+*/
+    public abstract int lineBound();
+    
+/**
+* Format text down to given height.
+* @param height the height to which text will be formatted
+*/
+    public abstract void formatToHeight(int height);
+
+/**
+* Reformat text after a change.
+* After the formatter's text changes, call this method to reformat.  Does
+* not redraw.
+* @param afStart the offset into the text where modification began;  ie, the
+* first character in the text which is "different" in some way.  Does not
+* have to be nonnegative.
+* @param afLength the number of new or changed characters in the text.  Should never
+* be less than 0.
+* @param viewRect the Rectangle in which the text will be displayed.  This is needed for
+* returning the "damaged" area - the area of the screen in which the text must be redrawn.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @return a <tt>Rectangle</tt> which specifies the area in which text must be
+* redrawn to reflect the change to the text.
+*/
+    public abstract Rectangle updateFormat(int afStart,
+                                  int afLength,
+                                  Rectangle viewRect,
+                                  Point origin);
+
+
+    public abstract int minY();
+    
+/**
+ * Return the maximum vertical coordinate of the document area.
+ */
+    public abstract int maxY();
+
+    public abstract int minX();
+
+/**
+ * Return the maximum horizontal coordinate of the document area.
+ */
+    public abstract int maxX();
+
+/**
+* Return the actual pixel length of the text which has been formatted.
+*/
+    public abstract int formattedHeight();
+
+    public static final short eUp = -10, eDown = 10, eLeft = -1, eRight = 1;
+
+/**
+* Given a screen location p, return the offset of the character in the text nearest to p.
+*
+* The offset may or may not include a newline at the end of a line, determined by anchor and infiniteMode.
+* The newline is not included if infiniteMode is true and the anchor is the position before the newline.
+*
+* @param result TextOffset to modify and return.  If null, one will be allocated, modified, and returned.
+* @param px the x component of the point.
+* @param py the y component of the point.
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param anchor the previous offset.  May be null.  Used to determine whether newlines are included.
+* @param infiniteMode if true, treat newlines at end of line as having infinite width.
+*/
+    public abstract TextOffset pointToTextOffset(TextOffset result, int px, int py, Point origin, TextOffset anchor, boolean infiniteMode);
+
+/**
+* Given an offset, return the Rectangle bounding the caret at the offset.
+* @param offset an offset into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @return a Rectangle bounding the caret.
+*/
+    public abstract Rectangle getCaretRect(TextOffset offset, Point origin);
+
+/**
+* Draw the caret(s) associated with the given offset into the given Graphics.
+* @param g the Graphics to draw into
+* @param offset the offset in the text for which the caret is drawn
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param strongCaretColor the color of the strong caret
+* @param weakCaretColor the color of the weak caret (if any)
+*/
+    public abstract void drawCaret(Graphics g,
+                                   TextOffset offset,
+                                   Point origin,
+                                   Color strongCaretColor,
+                                   Color weakCaretColor);
+
+    /**
+     * @see #getBoundingRect
+     */
+    public static final boolean LOOSE = false;
+    /**
+     * @see #getBoundingRect
+     */
+    public static final boolean TIGHT = true;
+
+/**
+* Given two offsets in the text, return a rectangle which encloses the lines containing the offsets.
+* Offsets do not need to be ordered or nonnegative.
+* @param offset1 an offset into the text
+* @param offset2 the other offset into the text
+* @param origin the top-left corner of the text, in the display's coordinate system
+* @param tight if equal to TIGHT, the bounds is as small as possible.  If LOOSE, the width
+* of the bounds is allowed to be wider than necesary.  Loose bounds are easier to compute.
+* @return a <tt>Rectangle</tt>, relative to <tt>origin</tt>, which encloses the lines containing the offsets
+*/
+    public abstract Rectangle getBoundingRect(TextOffset offset1,
+                                              TextOffset offset2, 
+                                              Point origin,
+                                              boolean tight);
+
+    public abstract void getBoundingRect(Rectangle boundingRect,
+                                         TextOffset offset1,
+                                         TextOffset offset2,
+                                         Point origin,
+                                         boolean tight);
+
+/**
+* Compute the offset resulting from moving from a previous offset in direction dir.
+* For arrow keys.
+* @param previousOffset the insertion offset prior to the arrow key press
+* @param direction the direction of the arrow key (eUp, eDown, eLeft, or eRight)
+* @return new offset based on direction and previous offset.
+*/
+    public abstract TextOffset findInsertionOffset(TextOffset result,
+                                          TextOffset previousOffset,
+                                          short direction);
+
+/**
+* Compute the offset resulting from moving from a previous offset, starting at an original offset, in direction dir.
+* For arrow keys.  Use this for "smart" up/down keys.
+* @param result TextOffset to modify and return.  If null, a new TextOffset is created, modified, and returned.
+* @param initialOffset The offset at which an up-down arrow key sequence began.
+* @param previousOffset The insertion offset prior to the arrow key press.
+* @param direction The direction of the arrow key (eUp, eDown, eLeft, or eRight)
+* @return new offset based on direction and previous offset(s).
+*/
+    public abstract TextOffset findNewInsertionOffset(TextOffset result,
+                                             TextOffset initialOffset,
+                                             TextOffset previousOffset,
+                                             short direction);
+
+/**
+* Return the index of the line containing the given character index.
+* This method has complicated semantics, arising from not knowing 
+* which side of the index to check.  The index will be given an
+* implicit AFTER bias, unless the index is the last index in the text,
+* the text length is non-zero, and there is not a paragraph separator
+* at the end of the text.
+*/
+    public abstract int lineContaining(int index);
+    
+/**
+* Return the index of the line containing the given offset.
+*/
+    public abstract int lineContaining(TextOffset offset);
+
+/**
+* Return the number of lines.
+*/
+    public abstract int getLineCount();
+
+/**
+* Return the index of the first character on the given line.
+*/
+    public abstract int lineRangeLow(int lineNumber);
+
+/**
+* Return the index of the first character following the given line.
+*/
+    public abstract int lineRangeLimit(int lineNumber);
+
+/**
+* Tells the formatter to stop accessing the text until updateFormat is called.
+*/
+    public abstract void stopBackgroundFormatting();
+
+/**
+* Return the line number at the given graphic height.  If height is greater than
+* the text height, maxLineNumber + 1 is returned.
+*/
+    public abstract int lineAtHeight(int height);
+
+/**
+* Return the graphic height where the given line begins.  If the lineNumber is
+* maxLineNumber the entire text height is returned.
+*/
+    public abstract int lineGraphicStart(int lineNumber);
+
+/**
+* Return true if the given line is left-to-right.
+* @param lineNumber a valid line
+* @return true if lineNumber is left-to-right
+*/
+    public abstract boolean lineIsLeftToRight(int lineNumber);
+
+/**
+* Return a new <tt>MFormatter</tt>.
+* @param text the text to format
+* @param defaultValues values to use when certain attributes are not specified. 
+*    <tt>defaultValues</tt> must contain values for the following attributes:
+*    <tt>FAMILY</tt>, <tt>WEIGHT</tt>, <tt>POSTURE</tt>, <tt>SIZE</tt>, <tt>SUPERSCRIPT</tt>, 
+*    <tt>FOREGROUND</tt>, <tt>UNDERLINE</tt>, <tt>STRIKETHROUGH</tt>,
+*    <tt>EXTRA_LINE_SPACING</tt>, <tt>FIRST_LINE_INDENT</tt>,<tt>MIN_LINE_SPACING</tt>,
+*    <tt>LINE_FLUSH</tt>, <tt>LEADING_MARGIN</tt>, <tt>TRAILING_MARGIN</tt>, <tt>TAB_RULER</tt>
+* @param lineBound length to which lines are formatted
+* @param wrap <tt>true</tt> if text should be "line wrapped" (formatted to fit destination area)
+*/
+    public static MFormatter createFormatter(MConstText text,
+                                             AttributeMap defaultValues,
+                                             int lineBound, 
+                                             boolean wrap, 
+                                             Graphics g) {
+                                                
+        return new AsyncFormatter(text, defaultValues, lineBound, wrap, g);
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/MTextIterator.java b/src/com/ibm/richtext/textformat/MTextIterator.java
new file mode 100644
index 0000000..121d1d1
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/MTextIterator.java
@@ -0,0 +1,402 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.styledtext.MConstText;
+import java.text.CharacterIterator;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+///*JDK12IMPORTS
+import java.text.AttributedCharacterIterator;
+import java.util.Map;
+import java.util.Set;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.attributes.AttributedCharacterIterator;
+import com.ibm.richtext.textlayout.attributes.AttributedCharacterIterator.Attribute;
+import com.ibm.richtext.textlayout.attributes.Map;
+JDK11IMPORTS*/
+
+/**
+ * An AttributedCharacterIterator over an MConstText.
+ */
+public final class MTextIterator implements AttributedCharacterIterator,
+                                            Cloneable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // memory leak, since this cache is never flushed
+
+    private static class Matcher {
+        
+        boolean matches(Map lhs, Map rhs, Object query) {
+            
+            Object lhsVal = lhs.get(query);
+            Object rhsVal = rhs.get(query);
+            
+            if (lhsVal == null) {
+                return rhsVal == null;
+            }
+            else {
+                return lhsVal.equals(rhsVal);
+            }
+        }
+    }
+    
+    private static final Matcher ATTR_MATCHER = new Matcher();
+    
+    // Not quite optimal.  Could have a matcher that would decompose
+    // a set once for repeated queries.  Of course that would require
+    // allocation...
+///*JDK12IMPORTS
+    private static final Matcher SET_MATCHER = new Matcher() {
+        
+        boolean matches(Map lhs, Map rhs, Object query) {
+            
+            // Not using Iterator to simplify 1.1 port.
+            Object[] elements = ((Set)query).toArray();
+            for (int i=0; i < elements.length; i++) {
+                if (!super.matches(lhs, rhs, elements[i])) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    };
+//JDK12IMPORTS*/
+    
+    private final class StyleCache {
+
+        private int fRunStart = 0;
+        private int fRunLimit = -1;
+        private int fRangeStart;
+        private int fRangeLimit;
+        private AttributeMap fStyle;
+
+        StyleCache(MConstText text, int start, int limit) {
+            fText = text;
+            fRangeStart = start;
+            fRangeLimit = limit;
+            update(start);
+        }
+
+        private void update(int pos) {
+            if (pos < fRunStart || pos >= fRunLimit) {
+                AttributeMap style = AttributeMap.EMPTY_ATTRIBUTE_MAP;
+                if (pos < fRangeStart) {
+                    fRunLimit = fRangeStart;
+                    fRunStart = Integer.MIN_VALUE;
+                }
+                else if (pos > fRangeLimit) {
+                    fRunStart = fRangeLimit;
+                    fRunLimit = Integer.MAX_VALUE;
+                }
+                else {
+                    fRunStart = Math.max(fRangeStart, fText.characterStyleStart(pos));
+                    fRunStart = Math.max(fRunStart, fText.paragraphStart(pos));
+                    
+                    fRunLimit = Math.min(fRangeLimit, fText.characterStyleLimit(pos));
+                    fRunLimit = Math.min(fRunLimit, fText.paragraphLimit(pos));
+                    if (fRunStart < fRunLimit) {
+                        style = fText.paragraphStyleAt(pos);
+                        style = style.addAttributes(fText.characterStyleAt(pos));
+                    }
+                }
+                fStyle = fFontResolver.applyFont(style);
+            }
+        }
+
+        int getRunStart(int pos) {
+            update(pos);
+            return fRunStart;
+        }
+
+        int getRunLimit(int pos) {
+            update(pos);
+            return fRunLimit;
+        }
+
+        Map getStyle(int pos) {
+            update(pos);
+            return fStyle;
+        }
+    }
+
+    private MConstText fText;
+    private CharacterIterator fCharIter;
+    private FontResolver fFontResolver;
+    
+    private StyleCache fStyleCache;
+
+    /**
+     * Create an MTextIterator over the range [start, limit).
+     */
+    public MTextIterator(MConstText text, 
+                         FontResolver resolver,
+                         int start, 
+                         int limit) {
+
+        fText = text;
+        fFontResolver = resolver;
+        fCharIter = text.createCharacterIterator(start, limit);
+
+        fStyleCache = new StyleCache(text, start, limit);
+    }
+
+    /**
+     * Sets the position to getBeginIndex() and returns the character at that
+     * position.
+     * @return the first character in the text, or DONE if the text is empty
+     * @see #getBeginIndex
+     */
+    public char first() {
+        return fCharIter.first();
+    }
+
+    /**
+     * Sets the position to getEndIndex()-1 (getEndIndex() if the text is empty)
+     * and returns the character at that position.
+     * @return the last character in the text, or DONE if the text is empty
+     * @see #getEndIndex
+     */
+    public char last() {
+        return fCharIter.last();
+    }
+
+    /**
+     * Gets the character at the current position (as returned by getIndex()).
+     * @return the character at the current position or DONE if the current
+     * position is off the end of the text.
+     * @see #getIndex
+     */
+    public char current() {
+        return fCharIter.current();
+    }
+
+    /**
+     * Increments the iterator's index by one and returns the character
+     * at the new index.  If the resulting index is greater or equal
+     * to getEndIndex(), the current index is reset to getEndIndex() and
+     * a value of DONE is returned.
+     * @return the character at the new position or DONE if the new
+     * position is off the end of the text range.
+     */
+    public char next() {
+        return fCharIter.next();
+    }
+
+    /**
+     * Decrements the iterator's index by one and returns the character
+     * at the new index. If the current index is getBeginIndex(), the index
+     * remains at getBeginIndex() and a value of DONE is returned.
+     * @return the character at the new position or DONE if the current
+     * position is equal to getBeginIndex().
+     */
+    public char previous() {
+        return fCharIter.previous();
+    }
+
+    /**
+     * Sets the position to the specified position in the text and returns that
+     * character.
+     * @param position the position within the text.  Valid values range from
+     * getBeginIndex() to getEndIndex().  An IllegalArgumentException is thrown
+     * if an invalid value is supplied.
+     * @return the character at the specified position or DONE if the specified position is equal to getEndIndex()
+     */
+    public char setIndex(int position) {
+        return fCharIter.setIndex(position);
+    }
+
+    /**
+     * Returns the start index of the text.
+     * @return the index at which the text begins.
+     */
+    public int getBeginIndex() {
+        return fCharIter.getBeginIndex();
+    }
+
+    /**
+     * Returns the end index of the text.  This index is the index of the first
+     * character following the end of the text.
+     * @return the index after the last character in the text
+     */
+    public int getEndIndex() {
+        return fCharIter.getEndIndex();
+    }
+
+    /**
+     * Returns the current index.
+     * @return the current index.
+     */
+    public int getIndex() {
+        return fCharIter.getIndex();
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to all attributes containing the current character.
+     */
+    public int getRunStart() {
+        return fStyleCache.getRunStart(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attribute containing the current character.
+     */
+    public int getRunStart(Object attribute) {
+
+        return getRunStart(attribute, ATTR_MATCHER);
+    }
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attribute containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunStart(Attribute attribute) {
+
+        return getRunStart(attribute, ATTR_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    /**
+     * Returns the index of the first character of the run
+     * with respect to the given attributes containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunStart(Set attributes) {
+
+        return getRunStart(attributes, SET_MATCHER);
+    }
+//JDK12IMPORTS*/
+    
+    private int getRunStart(Object query, Matcher matcher) {
+
+        int runStart = getRunStart();
+        int rangeStart = getBeginIndex();
+        Map initialStyle = getAttributes();
+        
+        while (runStart > rangeStart) {
+            AttributeMap style = fText.characterStyleAt(runStart-1);
+            if (!matcher.matches(initialStyle, style, query)) {
+                return runStart;
+            }
+            runStart = fText.characterStyleStart(runStart-1);
+        }
+        return rangeStart;
+    }
+    
+    /**
+     * Returns the index of the first character following the run
+     * with respect to all attributes containing the current character.
+     */
+    public int getRunLimit() {
+        return fStyleCache.getRunLimit(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attribute containing the current character.
+     */
+    public int getRunLimit(Object attribute) {
+        
+        return getRunLimit(attribute, ATTR_MATCHER);
+    }
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attribute containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunLimit(Attribute attribute) {
+        
+        return getRunLimit(attribute, ATTR_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    /**
+     * Returns the index of the first character following the run
+     * with respect to the given attributes containing the current character.
+     */
+///*JDK12IMPORTS
+    public int getRunLimit(Set attributes) {
+        
+        return getRunLimit(attributes, SET_MATCHER);
+    }
+//JDK12IMPORTS*/
+
+    private int getRunLimit(Object query, Matcher matcher) {
+
+        int runLimit = getRunLimit();
+        int rangeLimit = getEndIndex();
+        Map initialStyle = getAttributes();
+        
+        while (runLimit < rangeLimit) {
+            AttributeMap style = fText.characterStyleAt(runLimit);
+            if (!matcher.matches(initialStyle, style, query)) {
+                return runLimit;
+            }
+            runLimit = fText.characterStyleLimit(runLimit);
+        }
+        return rangeLimit;
+    }
+    
+    /**
+     * Returns a map with the attributes defined on the current
+     * character.
+     */
+    public Map getAttributes() {
+        return fStyleCache.getStyle(fCharIter.getIndex());
+    }
+
+    /**
+     * Returns the value of the named attribute for the current character.
+     * Returns null if the attribute is not defined.
+     * @param attribute the key of the attribute whose value is requested.
+     */
+    public Object getAttribute(Object attribute) {
+        return getAttributes().get(attribute);
+    }
+
+    /**
+     * Returns the value of the named attribute for the current character.
+     * Returns null if the attribute is not defined.
+     * @param attribute the key of the attribute whose value is requested.
+     */
+    public Object getAttribute(Attribute attribute) {
+        return getAttributes().get(attribute);
+    }
+
+    /**
+     * Returns the keys of all attributes defined on the
+     * iterator's text range. The set is empty if no
+     * attributes are defined.
+     */
+///*JDK12IMPORTS
+    public Set getAllAttributeKeys() {
+        throw new Error("Implement this method!");
+    }
+//JDK12IMPORTS*/
+
+    public Object clone() {
+        return new MTextIterator(fText,
+                                 fFontResolver,
+                                 getBeginIndex(),
+                                 getEndIndex());
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/ParagraphRenderer.java b/src/com/ibm/richtext/textformat/ParagraphRenderer.java
new file mode 100644
index 0000000..32b800c
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/ParagraphRenderer.java
@@ -0,0 +1,79 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+
+///*JDK12IMPORTS
+import java.awt.font.FontRenderContext;
+import java.awt.font.LineBreakMeasurer;
+//JDK12IMPORTS*/
+
+/*JDK11IMPORTS
+import com.ibm.richtext.textlayout.FontRenderContext;
+import com.ibm.richtext.textlayout.LineBreakMeasurer;
+import com.ibm.richtext.textlayout.Graphics2D;
+JDK11IMPORTS*/
+
+/**
+ * ParagraphRenderer is a factory for LayoutInfo objects.
+ */
+abstract class ParagraphRenderer {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // If renderers can ever travel with their styles, then this attribute will denote a
+    // renderer.  For now, renderers are not added as styles so this isn't needed.
+    //static final TextAttribute PARAGRAPH_RENDERER = new TextAttribute("Paragraph_Renderer") {};
+
+    /**
+     * Reset the renderer to use information from this style. Since renderers may be shared, you should
+     * make sure the renderer is initialized for the style you wish to render before you use it.
+     */
+    public void initRenderer(AttributeMap pStyle) {
+    }
+
+    /**
+     * Return a LayoutInfo for the paragraph represented by
+     * measurer.
+     * @param text the text containing the paragraph
+     * @param layoutToReuse clients can pass in a LayoutInfo
+     * which the ParagraphRenderer may choose to reuse
+     * and return.  If null, a new LayoutInfo will be
+     * created and returned.
+     * @param measurer the LineBreakMeasurer for this paragraph.
+     *  Current position should be the first character on the line.
+     *  If null, a 0-length line is generated.  If measurer is null
+     *  then paragraphStart and paragraphLimit should be equal.
+     * @param frc the FontRenderContext used for measurerment
+     * @param paragraphStart the index in the text where the
+     * current paragraph begins
+     * @param paragraphLimit the index of the first character
+     * after the current paragraph
+     * @param totalFormatWidth the width in which the line should fit
+     * @param lineBound where right-aligned lines are aligned
+     */
+    public abstract LayoutInfo layout(MConstText text,
+                                      LayoutInfo layoutToReuse,
+                                      LineBreakMeasurer measurer,
+                                      FontRenderContext frc,
+                                      int paragraphStart,
+                                      int paragraphLimit,
+                                      int totalFormatWidth,
+                                      int lineBound);
+
+}
diff --git a/src/com/ibm/richtext/textformat/TestMTextIterator.java b/src/com/ibm/richtext/textformat/TestMTextIterator.java
new file mode 100644
index 0000000..baf676b
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/TestMTextIterator.java
@@ -0,0 +1,118 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textformat;
+
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.textpanel.TextPanel;
+
+/**
+ * Test for MTextIterator.
+ */
+class TestMTextIterator {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final FontResolver FONT_MAPPER;
+    static {
+        AttributeMap attrs = TextPanel.getDefaultSettings().getDefaultValues();
+        FONT_MAPPER = new FontResolver(attrs);
+    }
+
+    public static void compareIterToText(MTextIterator iter,
+                                         MConstText text) {
+
+        //System.out.println("Text: " + text);
+        final int beginIndex = iter.getBeginIndex();
+        final int endIndex = iter.getEndIndex();
+
+        char ch = iter.setIndex(beginIndex);
+
+        for (int i=beginIndex; i < endIndex; i++) {
+            //System.out.print(ch+ " ");
+            if (ch != text.at(i)) {
+                throw new Error("Characters are not the same.");
+            }
+            ch = iter.next();
+        }
+
+        if (ch != MTextIterator.DONE) {
+            throw new Error("Iterator is not done.");
+        }
+
+        for (int i=endIndex-1; i >= beginIndex; i--) {
+            ch = iter.previous();
+            //System.out.print(ch+ " ");
+            if (ch != text.at(i)) {
+                throw new Error("Backward iteration failed.");
+            }
+        }
+
+        iter.setIndex(beginIndex);
+
+        int runLimit;
+        for (int runStart = beginIndex; runStart < endIndex; runStart = runLimit) {
+
+            runLimit = Math.min(endIndex, text.characterStyleLimit(runStart));
+
+            if (iter.getRunStart() != runStart) {
+                System.out.println(iter.getRunStart() + "; " + runStart);
+                throw new Error("getRunStart is wrong.");
+            }
+            if (iter.getRunLimit() != runLimit) {
+                System.out.println(iter.getRunLimit() + "; " + runLimit);
+                throw new Error("getRunLimit is wrong.");
+            }
+
+            AttributeMap style = text.characterStyleAt(runStart);
+
+            while (iter.getIndex() < runLimit) {
+                AttributeMap resolved = FONT_MAPPER.applyFont(style);
+                if (!iter.getAttributes().equals(resolved)) {
+                    throw new Error("Style is wrong.");
+                }
+                iter.next();
+            }
+        }
+    }
+
+    public void test() {
+
+        AttributeMap bold = new AttributeMap(TextAttribute.WEIGHT,
+                                             TextAttribute.WEIGHT_BOLD);
+        MText text = new StyledText("Hello there!", AttributeMap.EMPTY_ATTRIBUTE_MAP);
+        text.replace(2, 2, 'V', bold);
+
+        MTextIterator iter = new MTextIterator(text, FONT_MAPPER, 0, text.length());
+        compareIterToText(iter, text);
+
+        text.replace(6, 8, new StyledText("ALL_BOLD", bold), 0, 8);
+        iter = new MTextIterator(text, FONT_MAPPER, 1, text.length()-3);
+        compareIterToText(iter, text);
+
+        iter = new MTextIterator(text, FONT_MAPPER, 0, text.length());
+        compareIterToText(iter, text);
+    }
+
+    public static void main(String[] args) {
+
+        new TestMTextIterator().test();
+        System.out.println("PASSED");
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/TextOffset.java b/src/com/ibm/richtext/textformat/TextOffset.java
new file mode 100644
index 0000000..014eb01
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/TextOffset.java
@@ -0,0 +1,196 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Revision: 03 1.16 richtext/TextOffset.java, richtext, richtext
+
+/*
+    9/5/96 {jbr} added set and equals methods
+*/
+
+package com.ibm.richtext.textformat;
+
+/**
+ * A TextOffset indicates both an integer offset into text and a placement
+ * on one of the characters adjacent to the offset.  An offset is a
+ * position between two characters;  offset n
+ * is between character n-1 and character n.  The placement specifies whether
+ * it is associated with the character
+ * after the offset
+ * (character n) or the character before the offset (character n-1).
+ * <p>
+ * Knowing which character the TextOffset is associated with is necessary
+ * when displaying carets.  In bidirectional text, a single offset may
+ * have two distinct carets.  Also, in multiline text, an offset at a line
+ * break has a possible caret on each line.
+ * <p>
+ * Most clients will not be interested in the placement, and will just use
+ * the offset.
+ */
+public final class TextOffset
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Indicates that the TextOffset is associated with character
+     * <code>fOffset - 1</code> - ie the character before its offset.
+     */
+    public final static boolean BEFORE_OFFSET = true;
+
+    /**
+     * Indicates that the TextOffset is associated with character
+     * <code>fOffset</code> - ie the character after its offset.
+     */
+    public final static boolean AFTER_OFFSET = false;
+
+    /**
+     * The offset into the text.
+     */
+    public int fOffset = 0;
+
+    /**
+     * The placement - before or after.
+     */
+    public boolean fPlacement = AFTER_OFFSET;
+
+    /**
+    * Constructs a new TextOffset
+    * @param offset the offset into the text to represent.  Placement is implicitly AFTER_OFFSET.
+    */
+    public TextOffset(int offset)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("Offset is negative in TextOffset constructor.");
+
+        fOffset = offset;
+
+        fPlacement = AFTER_OFFSET;
+    }
+
+    /**
+    * Constructs a new TextOffset at 0, with placement AFTER_OFFSET.
+    */
+    public TextOffset() {
+        this(0);
+    }
+
+    /**
+    * Constructs a new TextOffset with the given offset and placement.
+    * @param offset the offset into the text
+    * @param placement indicates the position of the caret; one of BEFORE_OFFSET or AFTER_OFFSET
+    */
+    public TextOffset(int offset, boolean placement)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("TextOffset constructor offset < 0: " + offset);
+
+        fOffset = offset;
+        fPlacement = placement;
+    }
+
+    /**
+    * Constructs a new TextOffset from an existing one.
+    * @param rhs the TextOffset to copy
+    */
+    public TextOffset(TextOffset rhs) {
+
+        this(rhs.fOffset, rhs.fPlacement);
+    }
+
+    /**
+    * Set the value of the TextOffset
+    * @param offset the offset into the text
+    * @param placement indicates the position of the caret; one of BEFORE_OFFSET or AFTER_OFFSET
+    */
+    public void setOffset(int offset, boolean placement)
+    {
+        if (offset < 0)
+            throw new IllegalArgumentException("TextOffset setOffset offset < 0: " + offset);
+
+        fOffset = offset;
+        fPlacement = placement;
+    }
+
+    /**
+     * Compare this to another Object.
+     */
+    public boolean equals(Object other) {
+
+        try {
+            return equals((TextOffset)other);
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    /**
+    * Return true if offset and placement are the same.
+    *
+    * @param other offset to compare against
+    * @return true if both offsets are equal
+    */
+    public boolean equals(TextOffset other) {
+
+        return fOffset == other.fOffset && fPlacement == other.fPlacement;
+    }
+
+    /**
+     * Return the hashCode for this object.
+     */
+    public int hashCode() {
+
+        return fPlacement==AFTER_OFFSET? fOffset : -fOffset;
+    }
+
+    /**
+    * Return true if this offset is 'greaterThan' other.  If the fOffset fields are equal, the
+    * placement field is considered, and AFTER_OFFSET is considered 'greaterThan' BEFORE_OFFSET.
+    *
+    * @param other the other offset
+    * @return true if this offset appears after other
+    */
+    public boolean greaterThan(TextOffset other)
+    {
+        return fOffset > other.fOffset ||
+            (fOffset == other.fOffset && fPlacement == AFTER_OFFSET && other.fPlacement == BEFORE_OFFSET);
+    }
+
+    /**
+    * Return true if this offset is 'lessThan' other.  If the fOffset fields are equal, the
+    * placement field is considered, and BEFORE_OFFSET is considered 'lessThan' AFTER_OFFSET.
+    *
+    * @param other the other offset
+    * @return true if this offset appears before other
+    */
+    public boolean lessThan(TextOffset other) {
+
+        return fOffset < other.fOffset ||
+            (fOffset == other.fOffset && fPlacement == BEFORE_OFFSET && other.fPlacement == AFTER_OFFSET);
+    }
+
+    /**
+    * Copy the value of another TextOffset into this
+    * @param other the TextOffset to copy
+    */
+    public void assign(TextOffset other) {
+        fOffset = other.fOffset;
+        fPlacement = other.fPlacement;
+    }
+
+    /**
+    * Return a string representation of this object.
+    */
+    public String toString() {
+
+        return "[" + (fPlacement ? "before " : "after ") + fOffset + "]";
+    }
+}
diff --git a/src/com/ibm/richtext/textformat/package.html b/src/com/ibm/richtext/textformat/package.html
new file mode 100644
index 0000000..27f16bb
--- /dev/null
+++ b/src/com/ibm/richtext/textformat/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2002, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .lang Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Classes that format text in a background thread and render the formatted text to a graphics.</p>
+
+</body>
+</html>
diff --git a/src/com/ibm/richtext/textlayout/FontUtils.java b/src/com/ibm/richtext/textlayout/FontUtils.java
new file mode 100644
index 0000000..81099c2
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/FontUtils.java
@@ -0,0 +1,27 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout;
+
+import java.awt.Font;
+
+public final class FontUtils {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static Font getFont(java.util.Map attributes) {
+
+        return Font.getFont(attributes);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/Graphics2DConversion.java b/src/com/ibm/richtext/textlayout/Graphics2DConversion.java
new file mode 100644
index 0000000..1d73988
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/Graphics2DConversion.java
@@ -0,0 +1,54 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout;
+
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Paint;
+
+/**
+ * This class allows JDK 1.1 code to use a "fake" Graphics2D
+ * for source-code compatibility with Java2 code.  On Java2 it's
+ * a trivial class.  The JDK 1.1 version of this class does interesting
+ * work.
+ */ 
+public final class Graphics2DConversion {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    public static Graphics2D getGraphics2D(Graphics g) {
+        return (Graphics2D) g;
+    }
+
+    public static Graphics getGraphics(Graphics2D g) {
+        return g;
+    }
+
+    /**
+     * Will return an instance of Paint.
+     */
+    public static Object getColorState(Graphics2D g) {
+
+        return g.getPaint();
+    }
+
+    /**
+     * State must be an instance of Paint.
+     */
+    public static void restoreColorState(Graphics2D g, Object state) {
+
+        g.setPaint((Paint) state);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java b/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java
new file mode 100644
index 0000000..f0efc73
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeKey.java
@@ -0,0 +1,163 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textlayout.attributes;
+
+import java.io.Serializable;
+
+/**
+ * This class provides a cannonical mapping between fields in TextAttribute
+ * and instances of itself.  It is used by AttributeMap to serialize
+ * and deserialize TextAttribute to preserve uniqueness of TextAttribute
+ * instances (ie so that TextAttribute instances remain singletons),
+ * and to provide compatability between 1.1 and 1.2 versions of
+ * TextAttribute.
+ * <p>
+ * Example use - instead of doing this:
+ * <blockquote><pre>
+ *     out.writeObject(anAttribute);
+ * </pre></blockquote>
+ * do this:
+ * <blockquote><pre>
+ *     out.writeObject(AttributeKey.mapAttributeToKey(anAttribute));
+ * </pre></blockquote>
+ * Similarly, instead of this:
+ * <blockquote><pre>
+ *     anAttribute = in.readObject();
+ * </pre></blockquote>
+ * do this:
+ * <blockquote><pre>
+ *     anAttribute = AttributeKey.mapKeyToAttribute(in.readObject());
+ * </pre></blockquote>
+ * <p>
+ * If anAttribute is not a known TextAttribute, then <code>mapAttributeToKey</code>
+ * will just return its argument.  Similarly, <code>mapKeyToAttribute</code> will
+ * return its argument if the argument is not a known AttributeKey.
+ */
+
+/*public*/ final class AttributeKey implements Serializable {
+
+/*
+    In this implementation, two parallel Vectors are
+    maintained.  TextAttribute(i) maps to AttributeKey(i).
+    For compatability with existing data, this mapping must
+    be maintained in the future!  So, when new attributes
+    are added, add them to the end of the list.
+*/
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final long serialVersionUID = 3772371253277107294L;
+
+    private static Object[] fgTextAttributes;
+    private static Object[] fgAttributeKeys;
+
+    static {
+        fgTextAttributes = new Object[] {
+            TextAttribute.FONT,
+            TextAttribute.FAMILY,
+            TextAttribute.WEIGHT,
+            TextAttribute.POSTURE,
+            TextAttribute.SIZE,
+            TextAttribute.SUPERSCRIPT,
+            TextAttribute.FOREGROUND,
+            TextAttribute.BACKGROUND,
+            TextAttribute.UNDERLINE,
+            TextAttribute.STRIKETHROUGH,
+            TextAttribute.CHAR_REPLACEMENT,
+            TextAttribute.EXTRA_LINE_SPACING,
+            TextAttribute.FIRST_LINE_INDENT,
+            TextAttribute.MIN_LINE_SPACING,
+            TextAttribute.LINE_FLUSH,
+            TextAttribute.LEADING_MARGIN,
+            TextAttribute.TRAILING_MARGIN,
+            TextAttribute.TAB_RULER,
+            TextAttribute.RUN_DIRECTION,
+            TextAttribute.BIDI_EMBEDDING,
+            TextAttribute.JUSTIFICATION,
+        };
+
+        final int attrCount = fgTextAttributes.length;
+        fgAttributeKeys = new Object[attrCount];
+
+        for (int i=0; i < attrCount; i += 1) {
+            fgAttributeKeys[i] = new AttributeKey(i);
+        }
+    }
+
+    /**
+     * Return the TextAttribute corresponding to the given key.
+     * If key is an instance of AttributeKey it will be mapped to
+     * a TextAttribute.  Otherwise, the key is returned.
+     * @param key the key to map to a TextAttribute field
+     * @return the TextAttribute for <code>key</code> if <code>key</code>
+     *    is an AttributeKey; otherwise <code>key</code> is returned
+     */
+    /*public*/ static Object mapKeyToAttribute(Object key) {
+
+        try {
+            AttributeKey aKey = (AttributeKey) key;
+            if (aKey.fId < fgTextAttributes.length) {
+                return fgTextAttributes[aKey.fId];
+            }
+            else {
+                return key;
+            }
+        }
+        catch(ClassCastException e) {
+            return key;
+        }
+    }
+
+    /**
+     * If attribute is a known TextAttribute, return an AttributeKey
+     * for it.  Otherwise the object is returned.
+     * @param attribute the attribute to map to an AttributeKey
+     * @return an AttributeKey for <code>attribute</code>
+     *     if <code>attribute</code> is a known attribute; otherwise
+     *     <code>attribute</code> is returned
+     */
+    /*public*/ static Object mapAttributeToKey(Object attribute) {
+
+        final int attrCount = fgTextAttributes.length;
+        
+        for (int index = 0; index < attrCount; index += 1) {
+            if (fgTextAttributes[index].equals(attribute)) {
+                return fgAttributeKeys[index];
+            }
+        }
+        
+        return attribute;
+    }
+
+
+    private int fId;
+
+    private AttributeKey(int id) {
+
+        fId = id;
+    }
+
+    public boolean equals(Object rhs) {
+
+        try {
+            return ((AttributeKey)rhs).fId == fId;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    public int hashCode() {
+
+        return fId;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java b/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java
new file mode 100644
index 0000000..0e219cc
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeMap.java
@@ -0,0 +1,527 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Set;
+
+import java.io.Externalizable;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.IOException;
+
+
+/**
+ * AttributeMap is an immutable Map.  Additionally, there are
+ * several methods for common operations (union,
+ * remove, intersect);  these methods return new AttributeMap
+ * instances.
+ * <p>
+ * Although any non-null Object can be a key or value in an
+ * AttributeMap, typically the keys are fields of TextAttribute.
+ * @see TextAttribute
+ */
+public final class AttributeMap implements java.util.Map,
+                                com.ibm.richtext.textlayout.attributes.Map,
+                                Externalizable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int CURRENT_VERSION = 1;
+
+    private static final long serialVersionUID = 9510803;
+
+    private static final String errString = "StyleSets are immutable.";
+
+    // This is passed to the Hashtable constructor as the
+    // load factor argument.  It is chosen to avoid resizing
+    // the Hashtable whenever possible.  I think that 1
+    // does this.
+    private static final int LOAD_FACTOR = 1;
+
+    private Hashtable styleTable;
+    private transient AttributeSet cachedKeySet = null;
+    private transient Collection cachedValueCollection = null;
+    private transient Set cachedEntrySet = null;
+
+    /**
+     * An empty AttributeMap.
+     */
+    public static final AttributeMap EMPTY_ATTRIBUTE_MAP = new AttributeMap();
+
+// ==============
+// Constructors
+// ==============
+
+    /**
+     * Create a new, empty AttributeMap.  EMPTY_STYLE_SET can be used
+     * in place of an AttributeMap produced by this constructor.
+     */
+    public AttributeMap() {
+
+        styleTable = new Hashtable(1, LOAD_FACTOR);
+    }
+
+    /**
+     * Create an AttributeMap with the same key-value
+     * entries as the given Map.
+     * @param map a Map whose key-value entries will
+     *      become the entries for this AttributeMap. <code>map</code>
+     *      is not modified, and must not contain null keys or values.
+     */
+    public AttributeMap(java.util.Map map) {
+
+        styleTable = new Hashtable(map.size(), LOAD_FACTOR);
+        styleTable.putAll(map);
+    }
+
+    /**
+     * Create an AttributeMap with the same key-value
+     * entries as the given Hashtable.
+     * @param hashtable a Hashtable whose key-value entries will
+     *      become the entries for this AttributeMap. <code>table</code>
+     *      is not modified.
+     */
+    public AttributeMap(Hashtable hashtable) {
+
+        this((java.util.Map) hashtable);
+    }
+
+    /**
+     * Create an AttributeMap with a single entry of
+     * <code>{attribute, value}</code>.
+     * @param key the key in this AttributeMap's single entry
+     * @param value the value in this AttributeMap's single entry
+     */
+    public AttributeMap(Object key, Object value) {
+
+        styleTable = new Hashtable(1, LOAD_FACTOR);
+
+        // hashtable checks value for null
+        styleTable.put(key, value);
+    }
+
+    // For internal use only.
+    private AttributeMap(Hashtable table, boolean clone) {
+
+        if (clone) {
+            styleTable = (Hashtable) table.clone();
+        }
+        else {
+            this.styleTable = table;
+        }
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+
+        out.writeInt(CURRENT_VERSION);
+        out.writeInt(styleTable.size());
+        Enumeration e = styleTable.keys();
+        while (e.hasMoreElements()) {
+            Object key = e.nextElement();
+            out.writeObject(AttributeKey.mapAttributeToKey(key));
+            out.writeObject(styleTable.get(key));
+        }
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+
+        if (in.readInt() != CURRENT_VERSION) {
+            throw new IOException("Invalid version of StyleBuffer");
+        }
+
+        int count = in.readInt();
+        for (int i=0; i < count; i += 1) {
+            Object key = AttributeKey.mapKeyToAttribute(in.readObject());
+            Object value = in.readObject();
+            styleTable.put(key, value);
+        }
+    }
+
+// ==============
+// Map interface
+// ==============
+
+// queries
+    /**
+     * Return the number of entries in the AttributeMap.
+     * @return the number of entries in the AttributeMap
+     */
+    public int size() {
+
+        return styleTable.size();
+    }
+
+    /**
+     * Return true if the number of entries in the AttributeMap
+     * is 0.
+     * @return true if the number of entries in the AttributeMap
+     * is 0
+     */
+    public boolean isEmpty() {
+
+        return styleTable.isEmpty();
+    }
+
+    /**
+     * Return true if the given key is in this AttributeMap.
+     * @param key the key to test
+     * @return true if <code>key</code> is in this AttributeMap
+     */
+    public boolean containsKey(Object key) {
+
+        return styleTable.containsKey(key);
+    }
+
+    /**
+     * Return true if the given value is in this AttributeMap.
+     * @param value the value to test
+     * @return true if <code>value</code> is in this AttributeMap
+     */
+    public boolean containsValue(Object value) {
+
+        return styleTable.containsValue(value);
+    }
+
+    /**
+     * Return the value associated with the given key.  If the
+     * key is not in this AttributeMap null is returned.
+     * @param key the key to look up
+     * @return the value associated with <code>key</code>, or
+     *     null if <code>key</code> is not in this AttributeMap
+     */
+    public Object get(Object key) {
+
+        return styleTable.get(key);
+    }
+
+// modifiers - all throw exceptions
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addAttribute
+     * @throws UnsupportedOperationException
+     */
+    public Object put(Object key, Object value) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #removeAttributes
+     * @throws UnsupportedOperationException
+     */
+    public Object remove(Object key) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addAttributes
+     * @throws UnsupportedOperationException
+     */
+    public void putAll(java.util.Map t) {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #EMPTY_ATTRIBUTE_MAP
+     * @throws UnsupportedOperationException
+     */
+    public void clear() {
+
+        throw new UnsupportedOperationException(errString);
+    }
+
+// views
+
+    /**
+     * Return an AttributeSet containing every key in this AttributeMap.
+     * @return an AttributeSet containing every key in this AttributeMap
+     */
+    public Set keySet() {
+
+        return getKeySet();
+    }
+
+    /**
+     * Return an AttributeSet containing every key in this AttributeMap.
+     * @return an AttributeSet containing every key in this AttributeMap
+     */
+    public AttributeSet getKeySet() {
+
+        AttributeSet result = cachedKeySet;
+
+        if (result == null) {
+            result = AttributeSet.createKeySet(styleTable);
+            cachedKeySet = result;
+        }
+
+        return result;
+    }
+
+    /**
+     * Return a Collection containing every value in this AttributeMap.
+     * @return a Collection containing every value in this AttributeMap
+     */
+    public Collection values() {
+
+        Collection result = cachedValueCollection;
+
+        if (result == null) {
+            result = Collections.unmodifiableCollection(styleTable.values());
+            cachedValueCollection = result;
+        }
+
+        return result;
+    }
+
+    /**
+     * Return a Set containing all entries in this AttributeMap.
+     */
+    public Set entrySet() {
+
+        Set result = cachedEntrySet;
+
+        if (result == null) {
+            result = Collections.unmodifiableSet(styleTable.entrySet());
+            cachedEntrySet = result;
+        }
+
+        return result;
+    }
+
+    public boolean equals(Object rhs) {
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (rhs == null) {
+            return false;
+        }
+
+        AttributeMap rhsStyleSet = null;
+
+        try {
+            rhsStyleSet = (AttributeMap) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+
+        return styleTable.equals(rhsStyleSet.styleTable);
+    }
+
+    public int hashCode() {
+
+        return styleTable.hashCode();
+    }
+
+    public String toString() {
+
+        return styleTable.toString();
+    }
+
+// ==============
+// Operations
+// ==============
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap,
+     * along with an entry for <attribute, value>.  If attribute
+     * is already present in this AttributeMap its value becomes value.
+     */
+    public AttributeMap addAttribute(Object key, Object value) {
+
+        // try to optimize for case where <key, value> is already there?
+        Hashtable newTable = new Hashtable(styleTable.size() + 1, LOAD_FACTOR);
+        newTable.putAll(styleTable);
+        newTable.put(key, value);
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap
+     * and in rhs.  If an attribute appears in both StyleSets the
+     * value from rhs is used.
+     */
+    public AttributeMap addAttributes(AttributeMap rhs) {
+
+        int thisSize = size();
+
+        if (thisSize == 0) {
+            return rhs;
+        }
+
+        int otherSize = rhs.size();
+
+        if (otherSize == 0) {
+            return this;
+        }
+
+        Hashtable newTable = new Hashtable(thisSize + otherSize, LOAD_FACTOR);
+
+        newTable.putAll(styleTable);
+        newTable.putAll(rhs);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap which contains entries in this AttributeMap
+     * and in rhs.  If an attribute appears in both StyleSets the
+     * value from rhs is used.
+     * The Map's keys and values must be non-null.
+     */
+    public AttributeMap addAttributes(java.util.Map rhs) {
+
+        if (rhs instanceof AttributeMap) {
+            return addAttributes((AttributeMap)rhs);
+        }
+
+        Hashtable newTable = new Hashtable(size() + rhs.size(), LOAD_FACTOR);
+
+        newTable.putAll(styleTable);
+        newTable.putAll(rhs);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap with the entries in this AttributeMap, but
+     * without attribute as a key.
+     */
+    public AttributeMap removeAttribute(Object attribute) {
+
+        if (!containsKey(attribute)) {
+            return this;
+        }
+
+        Hashtable newTable = new Hashtable(styleTable.size(), LOAD_FACTOR);
+        newTable.putAll(styleTable);
+        newTable.remove(attribute);
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Return a AttributeMap with the entries of this AttributeMap whose
+     * attributes are <b>not</b> in the Set.
+     */
+    public AttributeMap removeAttributes(AttributeSet attributes) {
+
+        Set set = attributes;
+        return removeAttributes(set);
+    }
+
+    /**
+     * Return a AttributeMap with the entries of this AttributeMap whose
+     * attributes are <b>not</b> in the Set.
+     */
+    public AttributeMap removeAttributes(Set attributes) {
+
+        // Create newTable on demand;  if null at
+        // end of iteration then return this set.
+        // Should we intersect styleTable.keySet with
+        // attributes instead?
+
+        Hashtable newTable = null;
+        Iterator attrIter = attributes.iterator();
+        while (attrIter.hasNext()) {
+            Object current = attrIter.next();
+            if (current != null && styleTable.containsKey(current)) {
+                if (newTable == null) {
+                    newTable = new Hashtable(styleTable.size(), LOAD_FACTOR);
+                    newTable.putAll(styleTable);
+                }
+                newTable.remove(current);
+            }
+        }
+
+        if (newTable != null) {
+            return new AttributeMap(newTable, false);
+        }
+        else {
+            return this;
+        }
+    }
+
+    /**
+     * Return a AttributeMap with the keys of this AttributeMap which
+     * are also in the Set.  The set must not contain null.
+     */
+    public AttributeMap intersectWith(AttributeSet attributes) {
+
+        Set set = attributes;
+        return intersectWith(set);
+    }
+
+    /**
+     * Return a AttributeMap with the keys of this AttributeMap which
+     * are also in the Set.  The set must not contain null.
+     */
+    public AttributeMap intersectWith(Set attributes) {
+
+        // For now, forget about optimizing for the case when
+        // the return value is equivalent to this set.
+
+        int attrSize = attributes.size();
+        int styleTableSize = styleTable.size();
+        int size = Math.min(attrSize, styleTableSize);
+        Hashtable newTable = new Hashtable(size, LOAD_FACTOR);
+
+        if (attrSize < styleTableSize) {
+            Iterator attrIter = attributes.iterator();
+            while (attrIter.hasNext()) {
+                Object current = attrIter.next();
+                if (current != null) {
+                    Object value = styleTable.get(current);
+                    if (value != null) {
+                        newTable.put(current, value);
+                    }
+                }
+            }
+        }
+        else {
+            Iterator attrIter = keySet().iterator();
+            while (attrIter.hasNext()) {
+                Object current = attrIter.next();
+                if (attributes.contains(current)) {
+                    newTable.put(current, styleTable.get(current));
+                }
+            }
+        }
+
+        return new AttributeMap(newTable, false);
+    }
+
+    /**
+     * Put all entries in this AttributeMap into the given Map.
+     * @param rhs the Map into which entries are placed
+     */
+    public void putAllInto(java.util.Map rhs) {
+
+        rhs.putAll(this);
+    }
+}
diff --git a/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java b/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java
new file mode 100644
index 0000000..9f8060b
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/AttributeSet.java
@@ -0,0 +1,343 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.Collection;
+
+/**
+ * An AttributeSet is an immutable collection of unique Objects.
+ * It has several operations
+ * which return new AttributeSet instances.
+ */
+public final class AttributeSet implements Set {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * An AttributeSet with no members.
+     */
+    public static final AttributeSet EMPTY_SET = new AttributeSet();
+
+    private Hashtable elements;
+
+    private static final String errString = "AttributeSet is immutable.";
+
+    private AttributeSet(Hashtable elements) {
+
+        this.elements = elements;
+    }
+
+    /**
+     * Package only.  For AttributeMap use.
+     */
+    static AttributeSet createKeySet(Hashtable hashtable) {
+
+        Hashtable newElements = new Hashtable();
+
+        Enumeration e = hashtable.keys();
+        while (e.hasMoreElements()) {
+            Object next = e.nextElement();
+            newElements.put(next, next);
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Create a new, empty AttributeSet.  The set is semantically
+     * equivalent to EMPTY_SET.
+     */
+    public AttributeSet() {
+
+        elements = new Hashtable();
+    }
+
+    /**
+     * Create a new AttributeSet with the single element elem.
+     */
+    public AttributeSet(Object elem) {
+
+        elements = new Hashtable(1, 1);
+        elements.put(elem, elem);
+    }
+
+    /**
+     * Create a new AttributeSet containing the items in the array elems.
+     */
+    public AttributeSet(Object[] elems) {
+
+        elements = new Hashtable(elems.length, 1);
+        for (int i=0; i < elems.length; i++) {
+            Object next = elems[i];
+            elements.put(next, next);
+        }
+    }
+
+    /**
+     * Return true if the number of elements in this set is 0.
+     * @return true if the number of elements in this set is 0
+     */
+    public boolean isEmpty() {
+
+        return elements.isEmpty();
+    }
+
+    /**
+     * Return the number of elements in this set.
+     * @return the number of elements in this set
+     */
+    public int size() {
+
+        return elements.size();
+    }
+
+    public boolean equals(Object rhs) {
+
+        try {
+            return equals((AttributeSet) rhs);
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    public boolean equals(AttributeSet rhs) {
+
+        if (rhs == null) {
+            return false;
+        }
+
+        return elements.equals(rhs.elements);
+    }
+
+    /**
+     * Return true if this set contains the given Object
+     * @return true if this set contains <code>o</code>
+     */
+    public boolean contains(Object o) {
+
+        Object value = elements.get(o);
+        return value != null;
+    }
+
+    /**
+     * Return true if this set contains all elements in the given
+     * Collection
+     * @param coll the collection to compare with
+     * @return true if this set contains all elements in the given
+     * Collection
+     */
+    public boolean containsAll(Collection coll) {
+
+        return elements.keySet().containsAll(coll);
+    }
+
+    /**
+     * Return an Enumeration of the elements in this set.
+     * @return an Enumeration of the elements in this set
+     */
+    public Enumeration elements() {
+
+        return elements.keys();
+    }
+
+    /**
+     * Return an Iterator with the elements in this set.
+     * @return an Iterator with the elements in this set.
+     * The Iterator cannot be used to modify this AttributeSet.
+     */
+    public Iterator iterator() {
+
+        return new EnumerationIterator(elements.keys());
+    }
+
+    /**
+     * Fill in the given array with the elements in this set.
+     * @param storage an array to fill with this set's elements.
+     * The array cannot be null.
+     * @return the <tt>storage</tt> array.
+     */
+    public Object[] toArray(Object[] storage) {
+
+        Enumeration keys = elements.keys();
+        int n=0;
+        while (keys.hasMoreElements()) {
+            storage[n++] = keys.nextElement();
+        }
+        return storage;
+    }
+
+    /**
+     * Return an array with the elements in this set.
+     * @return an array with the elements in this set
+     */
+    public Object[] toArray() {
+
+        return toArray(new Object[size()]);
+    }
+    
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #addElement
+     * @throws UnsupportedOperationException
+     */
+    public boolean add(Object o){
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @throws UnsupportedOperationException
+     */
+    public boolean remove(Object o) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #unionWith
+     * @throws UnsupportedOperationException
+     */
+    public boolean addAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #subtract
+     * @throws UnsupportedOperationException
+     */
+    public boolean removeAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #intersectWith
+     * @throws UnsupportedOperationException
+     */
+    public boolean retainAll(Collection coll) {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Throws UnsupportedOperationException.
+     * @see #EMPTY_SET
+     * @throws UnsupportedOperationException
+     */
+    public void clear() {
+        throw new UnsupportedOperationException(errString);
+    }
+
+    /**
+     * Return an AttributeSet containing the elements of this set
+     * and the given element
+     * @param element the element to add
+     * @return an AttributeSet like this one, with <code>element</code>
+     * added
+     */
+    public AttributeSet addElement(Object element) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+        newElements.put(element, element);
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet which is the union of
+     * this set with the given set.
+     * @param s the set to union with
+     * @return an AttributeSet of the elements in this set or
+     * in <code>s</code>
+     */
+    public AttributeSet unionWith(AttributeSet s) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            Object next = iter.next();
+            newElements.put(next, next);
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet which is the intersection of
+     * this set with the given set.
+     * @param s the set to intersect with
+     * @return an AttributeSet of the elements in this set which
+     * are in <code>s</code>
+     */
+    public AttributeSet intersectWith(AttributeSet s) {
+
+        Hashtable newElements = new Hashtable();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            Object next = iter.next();
+            if (elements.get(next) != null) {
+                newElements.put(next, next);
+            }
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    /**
+     * Return an AttributeSet with the elements in this set which
+     * are not in the given set.
+     * @param s the set of elements to exclude
+     * @return an AttributeSet of the elements in this set which
+     * are not in <code>s</code>
+     */
+    public AttributeSet subtract(AttributeSet s) {
+
+        Hashtable newElements = (Hashtable) elements.clone();
+
+        Iterator iter = s.iterator();
+        while (iter.hasNext()) {
+            newElements.remove(iter.next());
+        }
+
+        return new AttributeSet(newElements);
+    }
+
+    private static final class EnumerationIterator implements Iterator {
+
+        private Enumeration e;
+
+        EnumerationIterator(Enumeration e) {
+            this.e = e;
+        }
+
+        public boolean hasNext() {
+            return e.hasMoreElements();
+        }
+
+        public Object next() {
+            return e.nextElement();
+        }
+
+        public void remove() {
+            throw new UnsupportedOperationException(errString);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/Map.java b/src/com/ibm/richtext/textlayout/attributes/Map.java
new file mode 100644
index 0000000..08052a2
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/Map.java
@@ -0,0 +1,49 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+/**
+ * A Map is a collection of key-value pairs (or entries), where each
+ * key in the Map is unique.  This interface is a subset of the
+ * JDK 1.2 Map interface.  It is used by JDK 1.1-compatible code.
+ */
+public interface Map {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Return the number of entries in this Map.
+     * @return the number of entries in this Map
+     */
+    public int size();
+
+    /**
+     * Return true if this Map has no entries.
+     * @return true if this Map has no entries
+     */
+    public boolean isEmpty();
+
+    /**
+     * Return the value of the given key.
+     * @return the value of the given key.  If the key does not have
+     * a value in this Map, null is returned.
+     */
+    public Object get(Object key);
+
+    /**
+     * Return true if this Map contains the given key.
+     * @return true if this Map contains the given key
+     */
+    public boolean containsKey(Object key);
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java b/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java
new file mode 100644
index 0000000..c1e632e
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/TextAttribute.java
@@ -0,0 +1,251 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.textlayout.attributes;
+
+import java.util.Hashtable;
+import java.text.AttributedCharacterIterator.Attribute;
+import java.io.InvalidObjectException;
+
+/**
+ * This class contains a number of keys (or attributes) for specifying text styles
+ * in a Map.  A text style is a collection of key-value pairs, where
+ * the key represents a certain characteristic (such as size) and
+ * the value tells how that characteristic is realized (ie what the
+ * size is).
+ * <p>
+ * All of the attributes in TextAttribute specify a class for their value.
+ * Map does not enforce these class specifications;  however, text rendering code
+ * will tend to fail with a ClassCastException if a key's value
+ * has an unexpected class.
+ * <p>
+ * Some attributes are meaningful for entire paragraphs, not individual
+ * characters.  These attributes are documented as applying to paragraphs.
+ * All other attributes apply to characters.
+ * <p>
+ * Many of the field names and values in this class
+ * are taken from the JDK 1.2
+ * <code>java.awt.font.TextAttribute class</code>.
+ * @see Map
+ */
+public class TextAttribute extends Attribute {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 1831947517687597324L;
+
+    private static final Hashtable instanceMap = new Hashtable(9);
+
+    protected TextAttribute(String name) {
+        super(name);
+        if (this.getClass() == TextAttribute.class) {
+            instanceMap.put(name, this);
+        }
+    }
+
+    protected Object readResolve() throws InvalidObjectException {
+        if (this.getClass() != TextAttribute.class) {
+            throw new InvalidObjectException("subclass didn't correctly implement readResolve");
+        }
+
+        TextAttribute instance = (TextAttribute) instanceMap.get(getName());
+        if (instance != null) {
+            return instance;
+        } else {
+            throw new InvalidObjectException("unknown attribute name");
+        }
+    }
+
+    public static final Object FONT = java.awt.font.TextAttribute.FONT;
+
+    public static final Object FAMILY = java.awt.font.TextAttribute.FAMILY;
+
+    public static final Object WEIGHT = java.awt.font.TextAttribute.WEIGHT;
+    public static final Float WEIGHT_BOLD = java.awt.font.TextAttribute.WEIGHT_BOLD;
+
+    public static final Object POSTURE = java.awt.font.TextAttribute.POSTURE;
+    public static final Float POSTURE_OBLIQUE = java.awt.font.TextAttribute.POSTURE_OBLIQUE;
+
+    public static final Object SIZE = java.awt.font.TextAttribute.SIZE;
+
+    public static final Object SUPERSCRIPT = java.awt.font.TextAttribute.SUPERSCRIPT;
+    public static final Integer SUPERSCRIPT_SUPER = java.awt.font.TextAttribute.SUPERSCRIPT_SUPER;
+    public static final Integer SUPERSCRIPT_SUB = java.awt.font.TextAttribute.SUPERSCRIPT_SUB;
+
+    /**
+     * Attribute key for the foreground and background color adornment.
+     */
+    public static final Object FOREGROUND = java.awt.font.TextAttribute.FOREGROUND;
+    public static final Object BACKGROUND = java.awt.font.TextAttribute.BACKGROUND;
+
+    public static final Object UNDERLINE = java.awt.font.TextAttribute.UNDERLINE;
+    public static final Integer UNDERLINE_ON = java.awt.font.TextAttribute.UNDERLINE_ON;
+
+    public static final Object STRIKETHROUGH = java.awt.font.TextAttribute.STRIKETHROUGH;
+    public static final Boolean STRIKETHROUGH_ON = java.awt.font.TextAttribute.STRIKETHROUGH_ON;
+
+    public static final Object OFFSET = new TextAttribute("offset");
+
+    public static final Object CHAR_REPLACEMENT = java.awt.font.TextAttribute.CHAR_REPLACEMENT;
+// Paragraph Styles
+
+// values are Floats:
+    public static final Object EXTRA_LINE_SPACING = new TextAttribute("extra_line_spacing");
+    public static final Object EXTRA_FIRST_LINE_SPACING = new TextAttribute("extra_first_line_spacing");
+
+    /**
+     * Amount beyond leading margin to indent the first line of a paragraph.
+     */
+    public static final Object FIRST_LINE_INDENT = new TextAttribute("first_line_indent");
+
+    public static final Object MIN_LINE_SPACING = new TextAttribute("min_line_spacing");
+    public static final Object MIN_FIRST_LINE_SPACING = new TextAttribute("min_first_line_spacing");
+
+    /**
+     * Flush lines left, right, or center.
+     */
+    public static final Object LINE_FLUSH = new TextAttribute("line_flush");
+
+    public static final Integer FLUSH_LEADING = new Integer(0);
+    public static final Integer FLUSH_CENTER = new Integer(1);
+    public static final Integer FLUSH_TRAILING = new Integer(2);
+    /**
+     * Value of <code>LINE_FLUSH</code> for full justification.
+     */
+    public static final Integer FULLY_JUSTIFIED = new Integer(3);
+
+    /**
+     * Leading and trailing margin in paragraph.
+     */
+    public static final Object LEADING_MARGIN = new TextAttribute("leading_margin");
+    public static final Object TRAILING_MARGIN = new TextAttribute("trailing_margin");
+
+    /**
+     * Tab ruler.  Values are MTabRuler instances.
+     */
+    public static final Object TAB_RULER = new TextAttribute("tab_ruler");
+    
+    /**
+     * Attribute key for the run direction of the line.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">RUN_DIRECTION</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Boolean</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Constants</TH>
+     * <TD VALIGN="TOP">RUN_DIRECTION_LTR = true, RUN_DIRECTION_RTL = false
+     * </TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">Use the default Unicode base direction from the BIDI 
+     * algorithm.</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP"><P>Specifies which base run direction to use when 
+     * positioning mixed directional runs within a paragraph. If this value is
+     * RUN_DIRECTION_DEFAULT, <code>TextLayout</code> uses the default Unicode
+     * base direction from the BIDI algorithm.</P>
+     * <P><I>This attribute should have the same value over the whole 
+     * paragraph.</I></TD></TR>
+     * </TABLE>
+     */
+    public static final Object RUN_DIRECTION = java.awt.font.TextAttribute.RUN_DIRECTION;
+
+    /**
+     * Left-to-right run direction.
+     * @see #RUN_DIRECTION
+     */
+    public static final Boolean RUN_DIRECTION_LTR = java.awt.font.TextAttribute.RUN_DIRECTION_LTR;
+
+    /**
+     * Right-to-left run direction.
+     * @see #RUN_DIRECTION
+     */
+    public static final Boolean RUN_DIRECTION_RTL = java.awt.font.TextAttribute.RUN_DIRECTION_RTL;
+
+    /**
+     * Attribute key for the embedding level for nested bidirectional runs.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">BIDI_EMBEDDING</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Integer</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Limits</TH>
+     * <TD VALIGN="TOP">Positive values 1 through 15 are <I>embedding</I>
+     * levels, negative values<BR> through -15 are <I>override</I> levels
+     * </TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">Use standard BIDI to compute levels from formatting
+     * characters in the text.</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP">Specifies the bidi embedding level of the character.
+     * When this attribute is present anywhere in a paragraph, then the 
+     * Unicode characters RLO, LRO, RLE, LRE, PDF are disregarded in the BIDI 
+     * analysis of that paragraph. 
+     * See the Unicode Standard v. 2.0, section 3-11.
+     * </TD></TR>
+     * </TABLE>
+     */
+    public static final Object BIDI_EMBEDDING = java.awt.font.TextAttribute.BIDI_EMBEDDING;
+
+    /**
+     * Attribute key for the justification of a paragraph.
+     *
+     * <P><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Key</TH>
+     * <TD VALIGN="TOP">JUSTIFICATION</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Value</TH>
+     * <TD VALIGN="TOP">Float</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Limits</TH>
+     * <TD VALIGN="TOP">0.0 through1.0</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Default</TH>
+     * <TD VALIGN="TOP">1.0</TD></TR>
+     * <TR>
+     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN=RIGHT>Description</TH>
+     * <TD VALIGN="TOP"><P>Specifies which fraction of the extra space to use 
+     * when justification is requested. For example, if the line is 50 points
+     * wide and the margins are 70 points apart, a value of 0.5 means that the
+     * line is padded to reach a width of 60 points.</P>
+     * <P><I>This attribute should have the same value over the whole
+     * paragraph.</I></TD></TR>
+     * </TABLE>
+     */
+    public static final Object JUSTIFICATION = java.awt.font.TextAttribute.JUSTIFICATION;
+
+    /**
+     * Justify the line to the full requested width.
+     * @see #JUSTIFICATION
+     */
+    public static final Float JUSTIFICATION_FULL = java.awt.font.TextAttribute.JUSTIFICATION_FULL;
+
+    /**
+     * Do not allow the line to be justified.
+     * @see #JUSTIFICATION
+     */
+    public static final Float JUSTIFICATION_NONE = java.awt.font.TextAttribute.JUSTIFICATION_NONE;
+}
diff --git a/src/com/ibm/richtext/textlayout/attributes/package.html b/src/com/ibm/richtext/textlayout/attributes/package.html
new file mode 100644
index 0000000..3fca91e
--- /dev/null
+++ b/src/com/ibm/richtext/textlayout/attributes/package.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head><!--  Copyright (C) 2002, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+
+<title>C:ICU4J .lang Package Overview</title>
+</head>
+
+<body bgcolor="white">
+
+<p>Richtext attribute support.  Includes tab, first line indent, and margin attributes.</p>
+
+</body>
+</html>
diff --git a/src/com/ibm/richtext/textpanel/ATextPanelImpl.java b/src/com/ibm/richtext/textpanel/ATextPanelImpl.java
new file mode 100644
index 0000000..02dc81a
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ATextPanelImpl.java
@@ -0,0 +1,751 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Adjustable;
+import java.awt.Component;
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textformat.TextOffset;
+
+/**
+ * Implementation class for TextPanel and JTextPanel.
+ */
+final class ATextPanelImpl {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+                
+    private RunStrategy fRunStrategy = null;
+    private TextComponent fTextComponent = null;
+    private TextSelection fSelection = null;
+    private TextEditBehavior fEditBehavior = null;
+    private MText fText = null;
+
+    private PanelEventBroadcaster fBroadcaster;
+    private KeyRemap fRemap = KeyRemap.getIdentityRemap();
+
+    // This is a little ugly.  TextPanel supports its modified
+    // flag whether or not it is editable, or even selectable.
+    // So if there's no command log to keep track of the flag
+    // state then its done right here in TextPanel.  If the
+    // panel is editable this flag is ignored.
+    private boolean fModified = false;
+
+    static final TextPanelSettings fgDefaultSettings = new TextPanelSettings();
+
+    static TextPanelSettings getDefaultSettings() {
+
+        return (TextPanelSettings) fgDefaultSettings.clone();
+    }
+    
+    ATextPanelImpl(RunStrategy runStrategy,
+                   TextPanelSettings settings,
+                   MConstText initialText,
+                   Clipboard clipboard,
+                   MTextPanel client,
+                   Adjustable horzSb,
+                   Adjustable vertSb) {
+                    
+        fRunStrategy = runStrategy;
+        fBroadcaster = new PanelEventBroadcaster(client);
+
+        Scroller scroller = null;
+        if (settings.getScrollable()) {
+            scroller = new Scroller(horzSb, vertSb);
+        }
+
+        StyledTextClipboard textClipboard =
+                            StyledTextClipboard.getClipboardFor(clipboard);
+
+        fText = new StyledText();
+        if (initialText != null) {
+            fText.append(initialText);
+        }
+
+        fTextComponent = new TextComponent(fText,
+                                           settings.getDefaultValues(),
+                                           settings.getWraps(),
+                                           TextComponent.WINDOW_WIDTH,
+                                           TextComponent.DEFAULT_INSET,
+                                           textClipboard,
+                                           settings.getScrollable(),
+                                           scroller,
+                                           fBroadcaster);
+
+        if (scroller != null) {
+            scroller.setClient(fTextComponent);
+        }
+        
+        // May have to wait until component has host to do this:
+        if (settings.getSelectable()) {
+            fSelection = new TextSelection(fTextComponent, 
+                                           fBroadcaster,
+                                           fRunStrategy);
+            fSelection.addToOwner(fTextComponent);
+            if (settings.getEditable()) {
+                fEditBehavior = new TextEditBehavior(
+                            fTextComponent, fSelection, fBroadcaster, fRemap);
+                fEditBehavior.addToOwner(fTextComponent);
+            }
+        }
+    }
+    
+    FakeComponent getTextComponent() {
+        
+        return fTextComponent;
+    }
+    
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fBroadcaster.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fBroadcaster.removeListener(listener);
+    }
+
+    /**
+     * You know what this does...
+     */
+    private static int pin(int value, int min, int max) {
+
+        if (min > max) {
+            throw new IllegalArgumentException("Invalid range");
+        }
+
+        if (value < min) {
+            value = min;
+        }
+        else if (value > max) {
+            value = max;
+        }
+        return value;
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the TextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        replaceRange(newText, 0, getTextLength());
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        int length = getTextLength();
+        replaceRange(newText, length, length);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        replaceRange(newText, position, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        int length = getTextLength();
+
+        start = pin(start, 0, length);
+        end = pin(end, start, length);
+
+        if (fSelection != null) {
+
+            // If we're selectable, but not editable, we'll temporarily
+            // make ourselves editable to change the text.  A little funny
+            // but there's a lot of code for getting caret stuff right,
+            // and this is not a common operation anyway.
+
+            TextEditBehavior behavior;
+
+            if (fEditBehavior == null) {
+                behavior = new TextEditBehavior(fTextComponent, fSelection, fBroadcaster, fRemap);
+                behavior.addToOwner(fTextComponent);
+            }
+            else {
+                behavior = fEditBehavior;
+            }
+
+            TextOffset newSelection = new TextOffset(start + newText.length(),
+                                                     TextOffset.AFTER_OFFSET);
+
+            TextReplacement replacement = new TextReplacement(start, end,
+                                                              newText,
+                                                              newSelection,
+                                                              newSelection);
+
+            fTextComponent.textControlEventOccurred(Behavior.REPLACE,
+                                                    replacement);
+            if (fEditBehavior == null) {
+                behavior.removeFromOwner();
+            }
+        }
+        else {
+
+            MText oldText = fTextComponent.getModifiableText();
+            fTextComponent.stopBackgroundFormatting();
+            oldText.replaceAll(newText);
+            fTextComponent.reformatAndDrawText(0, newText.length(), null, null, null, null);
+        }
+    }
+
+    /**
+     * Return the length of the text document in the TextPanel.
+     * @return the length of the text document in the TextPanel
+     */
+    public int getTextLength() {
+
+        return fTextComponent.getText().length();
+    }
+
+    /**
+     * Return the text document in the TextPanel.
+     * @return the text document in the TextPanel.
+     */
+    public MConstText getText() {
+
+        return fTextComponent.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        if (fSelection != null) {
+            return fSelection.getStart().fOffset;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        if (fSelection != null) {
+            return fSelection.getEnd().fOffset;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        select(selectionStart, getSelectionEnd());
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        select(getSelectionStart(), selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        select(position, position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        int length = getTextLength();
+
+        selectionStart = pin(selectionStart, 0, length);
+        selectionEnd = pin(selectionEnd, selectionStart, length);
+
+        TextRange range = new TextRange(selectionStart, selectionEnd);
+        fTextComponent.textControlEventOccurred(Behavior.SELECT, range);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        select(0, getTextLength());
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fTextComponent.getFormatWidth();
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fTextComponent.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.canUndo();
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.canRedo();
+        }
+        else {
+            return false;
+        }
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fTextComponent.getClipboard().hasContents();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fTextComponent.getDefaultValues();
+    }
+    
+    private static boolean objectsAreEqual(Object lhs, Object rhs) {
+    
+        if (lhs == null) {
+            return rhs == null;
+        }
+        else {
+            return lhs.equals(rhs);
+        }
+    }
+
+    private static Object consistentCharStyle(MConstText text,
+                                              int start,
+                                              int limit,
+                                              Object key,
+                                              Object defaultValue) {
+
+        if (start >= limit) {
+            throw new IllegalArgumentException("Invalid range.");
+        }
+
+        int runStart = start;
+        Object initialValue = text.characterStyleAt(runStart).get(key);
+
+        if (initialValue == null) {
+            initialValue = defaultValue;
+        }
+
+        for (runStart = text.characterStyleLimit(runStart);
+             runStart < limit;
+             runStart = text.characterStyleLimit(runStart)) {
+
+            Object nextValue = text.characterStyleAt(runStart).get(key);
+
+            if (nextValue == null) {
+                nextValue = defaultValue;
+            }
+
+            if (!objectsAreEqual(initialValue, nextValue)) {
+                return MTextPanel.MULTIPLE_VALUES;
+            }
+        }
+
+        return initialValue;
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point) and returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li>null, if two or more style runs have different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be <tt>defaultStyle</tt>.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @param defaultValue the implicit value of <tt>key</tt> in
+     *     style runs where <tt>key</tt> is not defined
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+
+        TextRange selRange;
+        if (fSelection != null)
+            selRange = fSelection.getSelectionRange();
+        else
+            selRange = new TextRange(0, 0);
+
+        if (selRange.start == selRange.limit) {
+
+            AttributeMap compStyle;
+
+            if (fEditBehavior != null) {
+                compStyle = fEditBehavior.getInsertionPointStyle();
+            }
+            else {
+                compStyle = TextEditBehavior.typingStyleAt(fText, selRange.start, selRange.limit);
+            }
+
+            Object value = compStyle.get(key);
+            return value==null? getDefaultValues().get(key) : value;
+        }
+        else {
+            return consistentCharStyle(fText, 
+                                       selRange.start,
+                                       selRange.limit,
+                                       key,
+                                       getDefaultValues().get(key));
+        }
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point) and returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li>null, if two or more style runs have different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be <tt>defaultStyle</tt>.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @param defaultValue the implicit value of <tt>key</tt> in
+     *     style runs where <tt>key</tt> is not defined
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+
+        TextRange selRange;
+        if (fSelection != null) {
+            selRange = fSelection.getSelectionRange();
+        }
+        else {
+            selRange = new TextRange(0, 0);
+        }
+
+        if (selRange.start == selRange.limit) {
+            AttributeMap pStyle = fText.paragraphStyleAt(selRange.start);
+            Object value = pStyle.get(key);
+            return value==null? getDefaultValues().get(key) : value;
+        }
+        else {
+            int paragraphStart = selRange.start;
+            Object defaultValue = getDefaultValues().get(key);
+            Object initialValue = fText.paragraphStyleAt(paragraphStart).get(key);
+            if (initialValue == null) {
+                initialValue = defaultValue;
+            }
+
+            for (paragraphStart = fText.paragraphLimit(paragraphStart);
+                 paragraphStart < selRange.limit;
+                 paragraphStart = fText.paragraphLimit(paragraphStart)) {
+
+                Object nextValue = fText.paragraphStyleAt(paragraphStart).get(key);
+                if (nextValue == null) {
+                    nextValue = defaultValue;
+                }
+
+                if (!objectsAreEqual(initialValue, nextValue)) {
+                    return MTextPanel.MULTIPLE_VALUES;
+                }
+            }
+
+            return initialValue;
+        }
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fTextComponent.textControlEventOccurred(Behavior.CUT, null);
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fTextComponent.textControlEventOccurred(Behavior.COPY, null);
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fTextComponent.textControlEventOccurred(Behavior.PASTE, null);
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fTextComponent.textControlEventOccurred(Behavior.CLEAR, null);
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fTextComponent.textControlEventOccurred(Behavior.UNDO, null);
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fTextComponent.textControlEventOccurred(Behavior.REDO, null);
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.getCommandLogSize();
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fTextComponent.textControlEventOccurred(Behavior.SET_COMMAND_LOG_SIZE,
+                                                new Integer(size));
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fTextComponent.textControlEventOccurred(Behavior.CLEAR_COMMAND_LOG, null);
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fTextComponent.textControlEventOccurred(Behavior.CHARACTER_STYLE_MOD, modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fTextComponent.textControlEventOccurred(Behavior.PARAGRAPH_STYLE_MOD, modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fRemap;
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        if (remap == null) {
+            throw new NullPointerException("remap can't be null");
+        }
+
+        fRemap = remap;
+        if (fEditBehavior != null) {
+            fEditBehavior.setKeyRemap(remap);
+        }
+
+        fBroadcaster.textStateChanged(TextPanelEvent.KEYREMAP_CHANGED);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        if (fEditBehavior != null) {
+            return fEditBehavior.isModified();
+        }
+        else {
+            return fModified;
+        }
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+
+        boolean handled = fTextComponent.textControlEventOccurred(
+                                    Behavior.SET_MODIFIED,
+                                    modified? Boolean.TRUE : Boolean.FALSE);
+        if (!handled) {
+            fModified = modified;
+        }
+    }
+
+    /**
+     * This method is for perf-testing only!
+     */
+    void handleKeyEvent(java.awt.event.KeyEvent keyEvent) {
+    
+        Component host = fTextComponent.getHost();
+        if (host != null) {
+            host.dispatchEvent(keyEvent);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/ArabicTransliteration.java b/src/com/ibm/richtext/textpanel/ArabicTransliteration.java
new file mode 100644
index 0000000..2356210
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ArabicTransliteration.java
@@ -0,0 +1,178 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/*
+For any incoming character C
+if you can map C using the following FakeArabicTable, return
+FakeArabicTable(C)
+else if C is from A through Z, return FakeArabicTable(lowercase(C))
+else just return C
+
+
+FakeArabicTable is defined by the following mapping
+
+0   0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+1   0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+2   0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+3   0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+4   0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+5   0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+6   0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+7   0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+8   0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+9   0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+
+%   066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+.   066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+,   060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
+-   0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+'   0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;
+"   0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
+;   061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+?   061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+
+a   0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+A   0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+b   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+c   0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+d   062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+D   0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+E   064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
+e   064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
+f   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+g   063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+h   062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+H   0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+I   064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
+i   0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
+j   062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+K   062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+k   0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+l   0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+m   0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+n   0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+o   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+p   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+q   0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+r   0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+s   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+S   0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+t   062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+T   062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+U   064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
+u   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+v   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+w   0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+x   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+y   064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+z   0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+Z   0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+
+*/
+
+/**
+ * This class implements KeyRemap to produce transliterated Arabic
+ * characters from Latin-1 characters.
+ */
+
+final class ArabicTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case '0': return '\u0660'; // ARABIC-INDIC DIGIT ZERO
+            case '1': return '\u0661'; // ARABIC-INDIC DIGIT ONE
+            case '2': return '\u0662'; // ARABIC-INDIC DIGIT TWO
+            case '3': return '\u0663'; // ARABIC-INDIC DIGIT THREE
+            case '4': return '\u0664'; // ARABIC-INDIC DIGIT FOUR
+            case '5': return '\u0665'; // ARABIC-INDIC DIGIT FIVE
+            case '6': return '\u0666'; // ARABIC-INDIC DIGIT SIX
+            case '7': return '\u0667'; // ARABIC-INDIC DIGIT SEVEN
+            case '8': return '\u0668'; // ARABIC-INDIC DIGIT EIGHT
+            case '9': return '\u0669'; // ARABIC-INDIC DIGIT NINE
+
+            case '%': return '\u066A'; // ARABIC PERCENT SIGN
+            // the Traditional Arabic font does not contain this character
+            // case '.': return '\u066B'; // ARABIC DECIMAL SEPARATOR
+            case ',': return '\u060C'; // ARABIC COMMA
+            case '-': return '\u0640'; // ARABIC TATWEEL
+            case '\'': return '\u0652'; // ARABIC SUKUN
+            case '"': return '\u0651'; // ARABIC SHADDA
+            case ';': return '\u061B'; // ARABIC SEMICOLON
+            case '?': return '\u061F'; // ARABIC QUESTION MARK
+
+            case 'a': return '\u0627'; // ARABIC LETTER ALEF
+            case 'A': return '\u0639'; // ARABIC LETTER AIN
+            case 'b': return '\u0628'; // ARABIC LETTER BEH
+            case 'B': return '\u0628'; // ARABIC LETTER BEH
+            case 'c': return '\u0635'; // ARABIC LETTER SAD
+            case 'C': return '\u0635'; // ARABIC LETTER SAD
+            case 'd': return '\u062F'; // ARABIC LETTER DAL
+            case 'D': return '\u0630'; // ARABIC LETTER THAL
+            case 'e': return '\u064E'; // ARABIC FATHA
+            case 'E': return '\u064B'; // ARABIC FATHATAN
+            case 'f': return '\u0641'; // ARABIC LETTER FEH
+            case 'F': return '\u0641'; // ARABIC LETTER FEH
+            case 'g': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'G': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'h': return '\u062D'; // ARABIC LETTER HAH
+            case 'H': return '\u0647'; // ARABIC LETTER HEH
+            case 'i': return '\u0650'; // ARABIC KASRA
+            case 'I': return '\u064D'; // ARABIC KASRATAN
+            case 'j': return '\u062C'; // ARABIC LETTER JEEM
+            case 'J': return '\u062C'; // ARABIC LETTER JEEM
+            case 'k': return '\u0643'; // ARABIC LETTER KAF
+            case 'K': return '\u062E'; // ARABIC LETTER KHAH
+            case 'l': return '\u0644'; // ARABIC LETTER LAM
+            case 'L': return '\u0644'; // ARABIC LETTER LAM
+            case 'm': return '\u0645'; // ARABIC LETTER MEEM
+            case 'M': return '\u0645'; // ARABIC LETTER MEEM
+            case 'n': return '\u0646'; // ARABIC LETTER NOON
+            case 'N': return '\u0646'; // ARABIC LETTER NOON
+            case 'o': return '\u064F'; // ARABIC DAMMA
+            case 'O': return '\u064F'; // ARABIC DAMMA
+            case 'p': return '\u0628'; // ARABIC LETTER BEH
+            case 'P': return '\u0628'; // ARABIC LETTER BEH
+            case 'q': return '\u0642'; // ARABIC LETTER QAF
+            case 'Q': return '\u0642'; // ARABIC LETTER QAF
+            case 'r': return '\u0631'; // ARABIC LETTER REH
+            case 'R': return '\u0631'; // ARABIC LETTER REH
+            case 's': return '\u0633'; // ARABIC LETTER SEEN
+            case 'S': return '\u0634'; // ARABIC LETTER SHEEN
+            case 't': return '\u062A'; // ARABIC LETTER TEH
+            case 'T': return '\u062B'; // ARABIC LETTER THEH
+            case 'U': return '\u064C'; // ARABIC DAMMATAN
+            case 'u': return '\u064F'; // ARABIC DAMMA
+            case 'v': return '\u0641'; // ARABIC LETTER FEH
+            case 'V': return '\u0641'; // ARABIC LETTER FEH
+            case 'w': return '\u0648'; // ARABIC LETTER WAW
+            case 'W': return '\u0648'; // ARABIC LETTER WAW
+            case 'x': return '\u0633'; // ARABIC LETTER SEEN
+            case 'X': return '\u0633'; // ARABIC LETTER SEEN
+            case 'y': return '\u064A'; // ARABIC LETTER YEH
+            case 'Y': return '\u064A'; // ARABIC LETTER YEH
+            case 'z': return '\u0632'; // ARABIC LETTER ZAIN
+            case 'Z': return '\u0638'; // ARABIC LETTER ZAH
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/Behavior.java b/src/com/ibm/richtext/textpanel/Behavior.java
new file mode 100644
index 0000000..44d6625
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Behavior.java
@@ -0,0 +1,201 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+/** A class that handles events for a BehaviorOwner.
+* A behavior enacpsulates some piece of the event-handling logic for a component.
+* This allows the client to separate event-handling logic out into separate classes
+* according to function, or to dynamically change the way a component handles
+* events without adding a lot of special-case code to the panel itself.
+* Behaviors are stored in a linked list, and all behaviors get a crack at an event before
+* the owner gets a crack at them (right now, we rely on objects that implement
+* BehaviorOwner to support these semantics).
+* Behavior provides all the same event-handling functions that Component provides, and
+* they all have exactly the same syntax and semantics. */
+abstract class Behavior {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Behavior fNextBehavior = null;
+    private BehaviorOwner fOwner = null;
+
+    static class EventType {
+
+        EventType() {
+        }
+    }
+
+    // events - should these be in TextPanel (or elsewhere)?
+
+    // This event's WHAT parameter is a TextRange instance
+    static final EventType SELECT = new EventType();
+
+    // No WHAT param for these:
+    static final EventType CUT = new EventType();
+    static final EventType COPY = new EventType();
+    static final EventType PASTE = new EventType();
+    static final EventType CLEAR = new EventType();
+    static final EventType UNDO = new EventType();
+    static final EventType REDO = new EventType();
+    static final EventType CLEAR_COMMAND_LOG = new EventType();
+
+    // WHAT param is a StyleModifier
+    static final EventType CHARACTER_STYLE_MOD = new EventType();
+    static final EventType PARAGRAPH_STYLE_MOD = new EventType();
+
+    // With this event, values of the WHAT parameter are
+    // either Boolean.TRUE or Boolean.FALSE
+    static final EventType SET_MODIFIED = new EventType();
+
+    // WHAT param is a TextReplacement
+    static final EventType REPLACE = new EventType();
+
+    // WHAT param is an Integer
+    static final EventType SET_COMMAND_LOG_SIZE = new EventType();
+
+    public Behavior() {
+    }
+
+    public void addToOwner(BehaviorOwner owner) {
+        removeFromOwner();
+        fOwner = owner;
+        setNextBehavior(owner.getBehavior());
+        owner.setBehavior(this);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.focusGained(e);
+        else
+            return false;
+    }
+
+    public boolean focusLost(FocusEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.focusLost(e);
+        else
+            return false;
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.keyPressed(e);
+        else
+            return false;
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+
+        if (fNextBehavior != null) {
+            return fNextBehavior.keyTyped(e);
+        }
+        else {
+            return false;
+        }
+    }
+
+    public boolean keyReleased(KeyEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.keyReleased(e);
+        else
+            return false;
+    }
+
+    public boolean mouseDragged(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseDragged(e);
+        else
+            return false;
+    }
+
+    public boolean mouseEntered(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseEntered(e);
+        else
+            return false;
+    }
+
+    public boolean mouseExited(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseExited(e);
+        else
+            return false;
+    }
+
+    public boolean mouseMoved(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseMoved(e);
+        else
+            return false;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mousePressed(e);
+        else
+            return false;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+        if (fNextBehavior != null)
+            return fNextBehavior.mouseReleased(e);
+        else
+            return false;
+    }
+
+    public final Behavior nextBehavior() {
+        return fNextBehavior;
+    }
+
+    public boolean paint(Graphics g, Rectangle drawRect) {
+        if (fNextBehavior != null)
+            return fNextBehavior.paint(g, drawRect);
+        else
+            return false;
+    }
+
+    public void removeFromOwner() {
+        if (fOwner != null) {
+            if (fOwner.getBehavior() == this)
+                fOwner.setBehavior(nextBehavior());
+            else {
+                Behavior    current = fOwner.getBehavior();
+
+                while (current != null && current.nextBehavior() != this)
+                    current = current.nextBehavior();
+                if (current != null)
+                    current.setNextBehavior(nextBehavior());
+            }
+            setNextBehavior(null);
+            fOwner = null;
+        }
+    }
+
+    public final void setNextBehavior(Behavior next) {
+        fNextBehavior = next;
+    }
+
+    public boolean textControlEventOccurred(EventType event, Object data) {
+        if (fNextBehavior != null)
+            return fNextBehavior.textControlEventOccurred(event, data);
+        else
+            return false;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/BehaviorOwner.java b/src/com/ibm/richtext/textpanel/BehaviorOwner.java
new file mode 100644
index 0000000..e82fed9
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/BehaviorOwner.java
@@ -0,0 +1,20 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+interface BehaviorOwner {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public Behavior getBehavior();
+    public void setBehavior(Behavior b);
+}
diff --git a/src/com/ibm/richtext/textpanel/Command.java b/src/com/ibm/richtext/textpanel/Command.java
new file mode 100644
index 0000000..0ddd27f
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Command.java
@@ -0,0 +1,53 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+abstract class Command {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Command fPreviousCommand = null;
+
+    // fModified is used to keep a textModified flag for
+    // clients
+    private boolean fModified;
+
+    public Command() {
+        fModified = true;
+    }
+
+    public Command previousCommand() {
+        return fPreviousCommand;
+    }
+
+    public void setPreviousCommand(Command  previousCommand) {
+        fPreviousCommand = previousCommand;
+    }
+
+    public abstract void execute();
+    public abstract void undo();
+
+    public void redo() {
+        execute();
+    }
+
+    public final boolean isModified() {
+
+        return fModified;
+    }
+
+    public final void setModified(boolean modified) {
+
+        fModified = modified;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/FakeComponent.java b/src/com/ibm/richtext/textpanel/FakeComponent.java
new file mode 100644
index 0000000..c38cd88
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/FakeComponent.java
@@ -0,0 +1,30 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Component;
+import java.awt.Graphics;
+
+abstract class FakeComponent {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected Component fHost;
+    
+    abstract void addNotify();
+    abstract void paint(Graphics g);
+    void setHost(Component host) {   
+        fHost = host;
+    }
+    abstract void requestFocus();
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java b/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java
new file mode 100644
index 0000000..12e057f
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/HackArabicTransliteration.java
@@ -0,0 +1,181 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/*
+For any incoming character C
+if you can map C using the following FakeArabicTable, return
+FakeArabicTable(C)
+else if C is from A through Z, return FakeArabicTable(lowercase(C))
+else just return C
+
+
+FakeArabicTable is defined by the following mapping
+
+0   0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+1   0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+2   0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+3   0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+4   0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+5   0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+6   0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+7   0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+8   0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+9   0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+
+%   066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+.   066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+,   060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
+-   0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+'   0652;ARABIC SUKUN;Mn;34;R;;;;;N;;;;;
+"   0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
+;   061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+?   061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+
+a   0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+A   0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+b   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+c   0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+d   062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+D   0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+E   064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
+e   064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
+f   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+g   063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+h   062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+H   0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+I   064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
+i   0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
+j   062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+K   062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+k   0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+l   0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+m   0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+n   0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+o   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+p   0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+q   0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+r   0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+s   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+S   0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+t   062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+T   062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+U   064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
+u   064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+v   0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+w   0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+x   0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+y   064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+z   0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+Z   0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+
+*/
+
+/**
+ * This class implements KeyRemap to produce transliterated Arabic
+ * characters from Latin-1 characters.
+ */
+
+// NOTE: this class eliminates Arabic vowels which look ugly
+// in the font in which we happen to be demo'ing.  It's totally
+// bogus otherwise.
+final class HackArabicTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case '0': return '\u0660'; // ARABIC-INDIC DIGIT ZERO
+            case '1': return '\u0661'; // ARABIC-INDIC DIGIT ONE
+            case '2': return '\u0662'; // ARABIC-INDIC DIGIT TWO
+            case '3': return '\u0663'; // ARABIC-INDIC DIGIT THREE
+            case '4': return '\u0664'; // ARABIC-INDIC DIGIT FOUR
+            case '5': return '\u0665'; // ARABIC-INDIC DIGIT FIVE
+            case '6': return '\u0666'; // ARABIC-INDIC DIGIT SIX
+            case '7': return '\u0667'; // ARABIC-INDIC DIGIT SEVEN
+            case '8': return '\u0668'; // ARABIC-INDIC DIGIT EIGHT
+            case '9': return '\u0669'; // ARABIC-INDIC DIGIT NINE
+
+            case '%': return '\u066A'; // ARABIC PERCENT SIGN
+            // the Traditional Arabic font does not contain this character
+            // case '.': return '\u066B'; // ARABIC DECIMAL SEPARATOR
+            case ',': return '\u060C'; // ARABIC COMMA
+            case '-': return '\u0640'; // ARABIC TATWEEL
+            case '\'': return '\u0652'; // ARABIC SUKUN
+            case '"': return '\u0651'; // ARABIC SHADDA
+            case ';': return '\u061B'; // ARABIC SEMICOLON
+            case '?': return '\u061F'; // ARABIC QUESTION MARK
+
+            case 'a': return '\u0627'; // ARABIC LETTER ALEF
+            case 'A': return '\u0639'; // ARABIC LETTER AIN
+            case 'b': return '\u0628'; // ARABIC LETTER BEH
+            case 'B': return '\u0628'; // ARABIC LETTER BEH
+            case 'c': return '\u0635'; // ARABIC LETTER SAD
+            case 'C': return '\u0635'; // ARABIC LETTER SAD
+            case 'd': return '\u062F'; // ARABIC LETTER DAL
+            case 'D': return '\u0630'; // ARABIC LETTER THAL
+            case 'e': //return '\u064E'; // ARABIC FATHA
+            case 'E': //return '\u064B'; // ARABIC FATHATAN
+            case 'f': return '\u0641'; // ARABIC LETTER FEH
+            case 'F': return '\u0641'; // ARABIC LETTER FEH
+            case 'g': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'G': return '\u063A'; // ARABIC LETTER GHAIN
+            case 'h': return '\u062D'; // ARABIC LETTER HAH
+            case 'H': return '\u0647'; // ARABIC LETTER HEH
+            case 'i': //return '\u0650'; // ARABIC KASRA
+            case 'I': //return '\u064D'; // ARABIC KASRATAN
+            case 'j': return '\u062C'; // ARABIC LETTER JEEM
+            case 'J': return '\u062C'; // ARABIC LETTER JEEM
+            case 'k': return '\u0643'; // ARABIC LETTER KAF
+            case 'K': return '\u062E'; // ARABIC LETTER KHAH
+            case 'l': return '\u0644'; // ARABIC LETTER LAM
+            case 'L': return '\u0644'; // ARABIC LETTER LAM
+            case 'm': return '\u0645'; // ARABIC LETTER MEEM
+            case 'M': return '\u0645'; // ARABIC LETTER MEEM
+            case 'n': return '\u0646'; // ARABIC LETTER NOON
+            case 'N': return '\u0646'; // ARABIC LETTER NOON
+            case 'o': //return '\u064F'; // ARABIC DAMMA
+            case 'O': //return '\u064F'; // ARABIC DAMMA
+            case 'p': return '\u0628'; // ARABIC LETTER BEH
+            case 'P': return '\u0628'; // ARABIC LETTER BEH
+            case 'q': return '\u0642'; // ARABIC LETTER QAF
+            case 'Q': return '\u0642'; // ARABIC LETTER QAF
+            case 'r': return '\u0631'; // ARABIC LETTER REH
+            case 'R': return '\u0631'; // ARABIC LETTER REH
+            case 's': return '\u0633'; // ARABIC LETTER SEEN
+            case 'S': return '\u0634'; // ARABIC LETTER SHEEN
+            case 't': return '\u062A'; // ARABIC LETTER TEH
+            case 'T': return '\u062B'; // ARABIC LETTER THEH
+            case 'U': //return '\u064C'; // ARABIC DAMMATAN
+            case 'u': //return '\u064F'; // ARABIC DAMMA
+            case 'v': return '\u0641'; // ARABIC LETTER FEH
+            case 'V': return '\u0641'; // ARABIC LETTER FEH
+            case 'w': return '\u0648'; // ARABIC LETTER WAW
+            case 'W': return '\u0648'; // ARABIC LETTER WAW
+            case 'x': return '\u0633'; // ARABIC LETTER SEEN
+            case 'X': return '\u0633'; // ARABIC LETTER SEEN
+            case 'y': return '\u064A'; // ARABIC LETTER YEH
+            case 'Y': return '\u064A'; // ARABIC LETTER YEH
+            case 'z': return '\u0632'; // ARABIC LETTER ZAIN
+            case 'Z': return '\u0638'; // ARABIC LETTER ZAH
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/HebrewTransliteration.java b/src/com/ibm/richtext/textpanel/HebrewTransliteration.java
new file mode 100644
index 0000000..b4fe538
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/HebrewTransliteration.java
@@ -0,0 +1,88 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+/**
+ * This class implements KeyRemap to produce transliterated Hebrew
+ * characters from Latin-1 characters.
+ */
+
+final class HebrewTransliteration extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch (c) {
+            case 'a': return '\u05D0'; // HEBREW LETTER ALEF
+            case 'A': return '\u05E2'; // HEBREW LETTER AYIN
+            case 'b': return '\u05D1'; // HEBREW LETTER BET
+            case 'B': return '\u05D1'; // HEBREW LETTER BET
+            case 'c': return '\u05E6'; // HEBREW LETTER TSADI
+            case 'C': return '\u05E5'; // HEBREW LETTER FINAL TSADI
+            case 'd': return '\u05D3'; // HEBREW LETTER DALET
+            case 'D': return '\u05BC'; // HEBREW POINT DAGESH
+            case 'e': return '\u05B5'; // HEBREW POINT TSERE
+            case 'E': return '\u05B6'; // HEBREW POINT SEGOL
+            case 'f': return '\u05E4'; // HEBREW LETTER PE
+            case 'F': return '\u05E4'; // HEBREW LETTER PE
+            case 'g': return '\u05D2'; // HEBREW LETTER GIMEL
+            case 'G': return '\u05D2'; // HEBREW LETTER GIMEL
+            case 'h': return '\u05D4'; // HEBREW LETTER HE
+            case 'H': return '\u05D7'; // HEBREW LETTER HET
+            case 'i': return '\u05D9'; // HEBREW LETTER YOD
+            case 'I': return '\u05B4'; // HEBREW POINT HIRIQ
+            case 'j': return '\u05D9'; // HEBREW LETTER YOD
+            case 'J': return '\u05C1'; // HEBREW POINT SHIN DOT
+            case 'k': return '\u05DB'; // HEBREW LETTER KAF
+            case 'K': return '\u05DA'; // HEBREW LETTER FINAL KAF
+            case 'l': return '\u05DC'; // HEBREW LETTER LAMED
+            case 'L': return '\u05DC'; // HEBREW LETTER LAMED
+            case 'm': return '\u05DE'; // HEBREW LETTER MEM
+            case 'M': return '\u05DD'; // HEBREW LETTER FINAL MEM
+            case 'n': return '\u05E0'; // HEBREW LETTER NUN
+            case 'N': return '\u05DF'; // HEBREW LETTER FINAL NUN
+            case 'o': return '\u05D5'; // HEBREW LETTER VAV
+            case 'O': return '\u05B9'; // HEBREW POINT HOLAM
+            case 'p': return '\u05E4'; // HEBREW LETTER PE
+            case 'P': return '\u05E3'; // HEBREW LETTER FINAL PE
+            case 'q': return '\u05E7'; // HEBREW LETTER QOF
+            case 'Q': return '\u05E7'; // HEBREW LETTER QOF
+            case 'r': return '\u05E8'; // HEBREW LETTER RESH
+            case 'R': return '\u05BF'; // HEBREW POINT RAFE
+            case 's': return '\u05E9'; // HEBREW LETTER SHIN
+            case 'S': return '\u05E1'; // HEBREW LETTER SAMEKH
+            case 't': return '\u05EA'; // HEBREW LETTER TAV
+            case 'T': return '\u05D8'; // HEBREW LETTER TET
+            case 'u': return '\u05D5'; // HEBREW LETTER VAV
+            case 'U': return '\u05BB'; // HEBREW POINT QUBUTS
+            case 'v': return '\u05D5'; // HEBREW LETTER VAV
+            case 'V': return '\u05B7'; // HEBREW POINT PATAH
+            case 'w': return '\u05D5'; // HEBREW LETTER VAV
+            case 'W': return '\u05B8'; // HEBREW POINT QAMATS
+            case 'x': return '\u05E6'; // HEBREW LETTER TSADI
+            case 'X': return '\u05E5'; // HEBREW LETTER FINAL TSADI
+            case 'y': return '\u05D9'; // HEBREW LETTER YOD
+            case 'Y': return '\u05D9'; // HEBREW LETTER YOD
+            case 'z': return '\u05D6'; // HEBREW LETTER ZAYIN
+            case 'Z': return '\u05C2'; // HEBREW POINT SIN DOT
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java b/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java
new file mode 100644
index 0000000..2718d06
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/IsraelNikudKeyboard.java
@@ -0,0 +1,82 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * This class simulates a Nikud keyboard on a US-English
+ * keyboard.  It is very much a work in progress.
+ */
+
+final class IsraelNikudKeyboard extends KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public char remap(char c) {
+
+        switch(c) {
+            case 't': return '\u05D0'; // alef
+            case 'c': return '\u05D1'; // bet
+            case 'd': return '\u05D2'; // gimel
+            case 's': return '\u05D3'; // dalet
+            case 'v': return '\u05D4'; // he
+            case 'u': return '\u05D5'; // vav
+            case 'z': return '\u05D6'; // zayin
+            case 'j': return '\u05D7'; // het
+            case 'y': return '\u05D8'; // tet
+            case 'h': return '\u05D9'; // yod
+            case 'l': return '\u05DA'; // final kaf
+            case 'f': return '\u05DB'; // kaf
+            case 'k': return '\u05DC'; // lamed
+            case 'o': return '\u05DD'; // final mem
+            case 'n': return '\u05DE'; // mem
+            case 'i': return '\u05DF'; // final nun
+            case 'b': return '\u05E0'; // nun
+            case 'x': return '\u05E1'; // samech
+            case 'g': return '\u05E2'; // ayin
+            case ';': return '\u05E3'; // final pe
+            case 'p': return '\u05E4'; // pe
+            case '.': return '\u05E5'; // final tsadi
+            case 'm': return '\u05E6'; // tsadi
+            case 'e': return '\u05E7'; // qof
+            case 'r': return '\u05E8'; // resh
+            case 'a': return '\u05E9'; // shin
+            case ',': return '\u05EA'; // tav
+            case 'w': return ',';
+            case 'q': return '/';
+            case '/': return '.';
+        }
+
+        return c;
+    }
+
+    public char remap(KeyEvent keyEvent) {
+
+        //  Note:  only one ctrl case now (ctrl-/ -> dagesh).
+        //  Better implementation will be needed for more cases.
+
+        if (keyEvent.isControlDown()) {
+            if (keyEvent.getKeyCode() == KeyEvent.VK_SLASH) {
+                return '\u05BC'; // dagesh
+            }
+        }
+
+        return remap(keyEvent.getKeyChar());
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/JTextPanel.java b/src/com/ibm/richtext/textpanel/JTextPanel.java
new file mode 100644
index 0000000..b7cd622
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/JTextPanel.java
@@ -0,0 +1,583 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Adjustable;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.lang.reflect.InvocationTargetException;
+
+import javax.swing.JPanel;
+import javax.swing.JComponent;
+import javax.swing.JScrollBar;
+import javax.swing.SwingUtilities;
+
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * JTextPanel is an implementation of MTextPanel in a Swing JPanel.
+ * @see MTextPanel
+ */
+public final class JTextPanel extends JPanel implements MTextPanel {
+
+    private static final long serialVersionUID = -675600228641043590L;
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private ATextPanelImpl fImpl;
+    
+    /**
+     * Return a TextPanelSettings instance with all settings set
+     * to the default values.  Clients can modify this object;
+     * modifications will not affect the default values.
+     * @return a TextPanelSettings instance set to default values
+     * @see TextPanelSettings
+     */
+    public static TextPanelSettings getDefaultSettings() {
+
+        return ATextPanelImpl.getDefaultSettings();
+    }
+
+    /**
+     * Create a new JTextPanel with the default settings.
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     */
+    public JTextPanel(MConstText initialText,
+                      java.awt.datatransfer.Clipboard clipboard) {
+
+        this(ATextPanelImpl.fgDefaultSettings, initialText, clipboard);
+    }
+
+    /**
+     * Create a new JTextPanel.
+     * @param settings the settings for this JTextPanel
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     * @see TextPanelSettings
+     */
+    public JTextPanel(TextPanelSettings settings,
+                      MConstText initialText,
+                      Clipboard clipboard) {
+        
+        super(false);
+        
+        JScrollBar horzSb = null;
+        JScrollBar vertSb = null;
+        
+        if (settings.getScrollable()) {
+
+            setLayout(new ScrollBarLayout());
+
+            boolean scrollBarsVisible = settings.getScrollBarsVisible();
+
+            if (scrollBarsVisible) {
+                horzSb = new JScrollBar(Adjustable.HORIZONTAL);
+                vertSb = new JScrollBar(Adjustable.VERTICAL);
+                add("South", horzSb);
+                add("East", vertSb);
+            }
+        }
+        else {
+            setLayout(new BorderLayout());
+        }
+        
+        RunStrategy runStrategy = new RunStrategy() {
+            void doIt(Runnable r) {
+                try {
+                    SwingUtilities.invokeAndWait(r);
+                }
+                catch(InterruptedException e) {
+                    // If operation was interrupted, then client
+                    // called wait or sleep (or something similar)
+                    // which is inappropriate for a client of this
+                    // class.  Rethrow error and let client handle it.
+                    e.printStackTrace();
+                    throw new Error("Interrupted in RunStrategy: " + e);
+                }
+                catch(InvocationTargetException e) {
+                    // Who knows how this one happens...
+                    e.printStackTrace();
+                    throw new Error("InvocationTargetException in RunStrategy: " + e);
+                }
+            }
+        };
+        
+        fImpl = new ATextPanelImpl(runStrategy,
+                                   settings,
+                                   initialText,
+                                   clipboard,
+                                   this,
+                                   horzSb,
+                                   vertSb);
+                                   
+        final FakeComponent textComponent = fImpl.getTextComponent();
+        
+        JComponent textHost = new JComponent() {
+            {
+                textComponent.setHost(this);
+            }
+            public void addNotify() {
+                super.addNotify();
+                textComponent.addNotify();
+            }
+            public void paint(Graphics g) {
+                textComponent.paint(g);
+            }
+            private static final long serialVersionUID = 1L;
+        };
+        
+        add("Center", textHost);
+
+        textHost.requestFocus();
+    }
+
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this JTextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fImpl.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this JTextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fImpl.removeListener(listener);
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the JTextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        fImpl.setText(newText);
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        fImpl.append(newText);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        fImpl.insert(newText, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        fImpl.replaceRange(newText, start, end);
+    }
+
+    /**
+     * Return the length of the text document in the JTextPanel.
+     * @return the length of the text document in the JTextPanel
+     */
+    public int getTextLength() {
+
+        return fImpl.getTextLength();
+    }
+
+    /**
+     * Return the text document in the JTextPanel.
+     * @return the text document in the JTextPanel.
+     */
+    public MConstText getText() {
+
+        return fImpl.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        return fImpl.getSelectionStart();
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        return fImpl.getSelectionEnd();
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        fImpl.setSelectionStart(selectionStart);
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionEnd the end of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        fImpl.setSelectionEnd(selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        fImpl.setCaretPosition(position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        fImpl.select(selectionStart, selectionEnd);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        fImpl.selectAll();
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fImpl.getFormatWidth();
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fImpl.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        return fImpl.canUndo();
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        return fImpl.canRedo();
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fImpl.clipboardNotEmpty();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fImpl.getDefaultValues();
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+        
+        return fImpl.getCharacterStyleOverSelection(key);
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+        
+        return fImpl.getParagraphStyleOverSelection(key);
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fImpl.cut();
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fImpl.copy();
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fImpl.paste();
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fImpl.clear();
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fImpl.undo();
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fImpl.redo();
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        return fImpl.getCommandLogSize();
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fImpl.setCommandLogSize(size);
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fImpl.clearCommandLog();
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyCharacterStyleOnSelection(modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyParagraphStyleOnSelection(modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fImpl.getKeyRemap();
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        fImpl.setKeyRemap(remap);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        return fImpl.isModified();
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+        
+        fImpl.setModified(modified);
+    }
+
+    /**
+     * This method is for KeyEventForwarder's use only!
+     */
+    ATextPanelImpl getImpl() {
+        
+        return fImpl;
+    }
+
+    public void setBackground(Color color) {
+        super.setBackground (color);
+        java.awt.Component[] compList = getComponents();
+        for (int i = 0; i < compList.length; i++) {
+            if (!(compList[i] instanceof JScrollBar)) {
+                compList[i].setBackground (color);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/KeyEventForwarder.java b/src/com/ibm/richtext/textpanel/KeyEventForwarder.java
new file mode 100644
index 0000000..e1c82a6
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/KeyEventForwarder.java
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * This class forwards key events to a TextPanel component for
+ * testing purposes.
+ * Its sole reason for existence is to prevent the key-event
+ * API from being public on MTextPanel, and being mistaken for
+ * standard API.  This class is only for testing!  It may be
+ * removed from public API at any time.  Do not depend on this
+ * class.
+ */
+public final class KeyEventForwarder {
+
+    private ATextPanelImpl fPanelImpl;
+
+    public KeyEventForwarder(TextPanel textPanel) {
+
+        fPanelImpl = textPanel.getImpl();
+    }
+    
+    public KeyEventForwarder(JTextPanel textPanel) {
+    
+        fPanelImpl = textPanel.getImpl();
+    }
+
+    public void handleKeyEvent(KeyEvent keyEvent) {
+
+        fPanelImpl.handleKeyEvent(keyEvent);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/KeyRemap.java b/src/com/ibm/richtext/textpanel/KeyRemap.java
new file mode 100644
index 0000000..f1c3cdc
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/KeyRemap.java
@@ -0,0 +1,116 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+ *
+ * (C) Copyright IBM Corp. 1998, All Rights Reserved
+ */
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.KeyEvent;
+
+/**
+ * KeyRemap maps keys on a standard US keyboard to characters
+ * in other alphabets.  Currently, mappings to Arabic, Hebrew
+ * and Thai are supported.  In the future, clients may be
+ * to define their own mappings by subclassing this class.
+ * <P>
+ * @see TextPanel#setKeyRemap
+ */
+
+public class KeyRemap {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Create a new KeyRemap.
+     */
+    protected KeyRemap() {
+    }
+
+    /**
+     * This method returns the character on the simulated keyboard
+     * which is (most likely) generated by typing the character c
+     * on the actual keyboard.  For greater accuracy, use the remap
+     * method which takes a KeyEvent, since it can take modifier
+     * keys into account.
+     * @arg c a character on the actual keyboard
+     * @return the character on the simulated keyboard which would
+     *         result from the key combination which produced the
+     *         given character on the actual keyboard
+     */
+    /*public*/ char remap(char c) {
+
+        return c;
+    }
+
+    /**
+     * Return the character on the simulated keyboard
+     * which keyEvent generates.
+     * @arg keyEvent a key event from the actual keyboard
+     * @return the character on the simulated keyboard generated by
+     *         keyEvent
+     */
+    /*public*/ char remap(KeyEvent keyEvent) {
+
+        return remap(keyEvent.getKeyChar());
+    }
+
+    private static final KeyRemap IDENTITY = new KeyRemap();
+    private static final KeyRemap ARABIC_TRANSLITERATION = new ArabicTransliteration();
+    private static final KeyRemap HEBREW_TRANSLITERATION = new HebrewTransliteration();
+    private static final KeyRemap ISRAEL_NIKUD = new IsraelNikudKeyboard();
+    private static final KeyRemap THAI = new ThaiKeyRemap();
+
+    /**
+     * Return a KeyRemap which maps every character to itself.
+     */
+    public static KeyRemap getIdentityRemap() {
+
+        return IDENTITY;
+    }
+
+    /**
+     * Return a KeyRemap which maps keys to
+     * characters in the Arabic alphabet, using a simple transliteration.
+     */
+    public static KeyRemap getArabicTransliteration() {
+
+        return ARABIC_TRANSLITERATION;
+    }
+
+    /**
+     * Return a KeyRemap which maps keys to
+     * characters in the Hebrew alphabet, using a simple transliteration.
+     */
+    public static KeyRemap getHebrewTransliteration() {
+
+        return HEBREW_TRANSLITERATION;
+    }
+
+    /**
+     * Return a KeyRemap which emulates a standard Hebrew keyboard.
+     */
+    public static KeyRemap getIsraelNikud() {
+
+        return ISRAEL_NIKUD;
+    }
+    
+    /**
+     * Return a KeyRemap which emulates a Thai Ketmanee keyboard.
+     */
+    public static KeyRemap getThaiKetmanee() {
+        
+        return THAI;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/MTextPanel.java b/src/com/ibm/richtext/textpanel/MTextPanel.java
new file mode 100644
index 0000000..5ab1840
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/MTextPanel.java
@@ -0,0 +1,373 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * MTextPanel is implemented by Components which provide selectable
+ * editable styled text.
+ * <p>
+ * Implementations of MTextPanel provide a simple, standard user interface
+ * for text editing.  MTextPanel supplies scrollable display, typing, 
+ * arrow-key support, character selection, word-
+ * and sentence-selection (by double-clicking and triple-clicking, 
+ * respectively), text styles, clipboard operations (cut, copy and paste)
+ * and a log of changes for undo-redo.
+ * <p>
+ * MTextPanel implementations do not provide user interface elements
+ * such as an edit menu or style menu.  This support is provided in
+ * different packages, and is implemented with MTextPanel's API.
+ * MTextPanel includes methods for setting selections and styles on text,
+ * and using the clipboard and command-log functionality.
+ * MTextPanel's API for selection and text handling is similar to that
+ * of <tt>java.awt.TextArea</tt> and
+ * <tt>java.awt.TextComponent</tt>.
+ * <p>
+ * MTextPanel supports bidirectional and complex text.  In bidirectional
+ * text, offsets at direction boundaries have dual carets.  Logical selection
+ * is used, so selections across run directions may not be contiguous in
+ * display.
+ */
+public interface MTextPanel {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    /**
+     * This value is returned from <tt>getCharacterStyleOverSelection</tt>
+     * and <tt>getParagraphStyleOverSelection</tt> to indicate that the
+     * selection range contains multiple values for a key.
+     * <p>
+     * There is no reason for this Object ever to appear in an AttributeMap
+     * as a value.  Obviously, if it does there will be no way to distinguish
+     * between multiple values across the selection and a consistent value of
+     * <tt>MULTIPLE_VALUES</tt> for the key.
+     * @see #getCharacterStyleOverSelection
+     * @see #getParagraphStyleOverSelection
+     */
+    public static final Object MULTIPLE_VALUES = new Object();
+    
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this MTextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener);
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this MTextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener);
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the MTextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText);
+    
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText);
+    
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position);
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end);
+
+    /**
+     * Return the length of the text document in the MTextPanel.
+     * @return the length of the text document in the MTextPanel
+     */
+    public int getTextLength();
+
+    /**
+     * Return the text document in the MTextPanel.
+     * @return the text document in the MTextPanel.
+     */
+    public MConstText getText();
+    
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart();
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd();
+    
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart);
+    
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionEnd the end of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd);
+    
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position);
+    
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd);
+    
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll();
+    
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth();
+    
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset);
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo();
+    
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo();
+    
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty();
+    
+
+//============
+// Styles
+//============
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues();
+    
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see #MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key);
+    
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see #MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key);
+    
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut();
+    
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy();
+    
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste();
+    
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear();
+    
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo();
+    
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo();
+    
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize();
+    
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size);
+    
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog();
+    
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier);
+    
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier);
+    
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap();
+    
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap);
+    
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified();
+    
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified);
+}
diff --git a/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java b/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java
new file mode 100644
index 0000000..f9c76bd
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/OffscreenBufferCache.java
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Image;
+import java.awt.Component;
+
+class OffscreenBufferCache {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Image fOffscreenBuffer = null;
+    private Component fHost;
+
+    OffscreenBufferCache(Component host) {
+
+        fHost = host;
+    }
+
+    private Image makeBuffer(int width, int height) {
+
+        return fHost.createImage(Math.max(width, 1), Math.max(height, 1));
+    }
+
+    Image getBuffer(int width, int height) {
+
+        Image buffer = fOffscreenBuffer;
+
+        if (buffer != null) {
+            if (buffer.getWidth(fHost) >= width &&
+                    buffer.getHeight(fHost) >= height) {
+                return buffer;
+            }
+        }
+
+        buffer = makeBuffer(width, height);
+        fOffscreenBuffer = buffer;
+        return buffer;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java b/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java
new file mode 100644
index 0000000..cb3c846
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/PanelEventBroadcaster.java
@@ -0,0 +1,98 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.util.Vector;
+
+/**
+ * This class listens for text state change notifications
+ * and broadcasts them to all of its listeners.
+ */
+final class PanelEventBroadcaster {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final int FIRST = TextPanelEvent.TEXT_PANEL_FIRST;
+
+    private final Vector[] fListeners;
+    private final TextPanelEvent[] fEvents;
+
+    /**
+     * Construct a new PanelEventBroadcaster.
+     * @param panel the TextPanel for which events are broadcasted
+     */
+    public PanelEventBroadcaster(MTextPanel panel) {
+
+        int count = TextPanelEvent.TEXT_PANEL_LAST - FIRST + 1;
+
+        fEvents = new TextPanelEvent[count];
+        fListeners = new Vector[count];
+        
+        for (int i=0; i < fListeners.length; i++) {
+            fEvents[i] = new TextPanelEvent(panel, i+FIRST);
+            fListeners[i] = new Vector();
+        }
+    }
+
+    /**
+     * Add the given TextPanelListener to the TextPanelListeners to
+     * which notifications are forwarded.
+     * @param listener the listener to add
+     */
+    public synchronized void addListener(TextPanelListener listener) {
+
+        for (int i=FIRST; i <= TextPanelEvent.TEXT_PANEL_LAST; i++) {
+            Vector listeners = fListeners[i-FIRST];
+            if (listener.respondsToEventType(i)) {
+                if (!listeners.contains(listener)) {
+                    listeners.addElement(listener);
+                }
+            }
+        }
+    }
+
+    /**
+     * Remove the given TextPanelListener from the TextPanelListeners to
+     * which notifications are forwarded.
+     * @param listener the listener to remove
+     */
+    public synchronized void removeListener(TextPanelListener listener) {
+
+        for (int i=FIRST; i <= TextPanelEvent.TEXT_PANEL_LAST; i++) {
+            Vector listeners = fListeners[i-FIRST];
+            if (listener.respondsToEventType(i)) {
+                listeners.removeElement(listener);
+            }
+        }
+    }
+
+    /**
+     * Receive a notification and forward it to all listeners.
+     * @changeCode one of the constants in the TextPanelListener class
+     */
+    public synchronized void textStateChanged(int id) {
+
+        int index = id-FIRST;
+        TextPanelEvent event = fEvents[index];
+        Vector listeners = fListeners[index];
+        
+        int size = listeners.size();
+
+        for (int i=0; i < size; i++) {
+
+            TextPanelListener listener =
+                            (TextPanelListener) listeners.elementAt(i);
+            listener.textEventOccurred(event);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/RunStrategy.java b/src/com/ibm/richtext/textpanel/RunStrategy.java
new file mode 100644
index 0000000..3c47147
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/RunStrategy.java
@@ -0,0 +1,20 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+class RunStrategy {
+    
+    void doIt(Runnable r) {
+        r.run();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/textpanel/ScrollBarLayout.java b/src/com/ibm/richtext/textpanel/ScrollBarLayout.java
new file mode 100644
index 0000000..8b5c988
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ScrollBarLayout.java
@@ -0,0 +1,151 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.LayoutManager;
+
+class ScrollBarLayout implements LayoutManager {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    Component   fHorizScrollBar = null;
+    Component   fVertScrollBar = null;
+    Component   fChild = null;
+
+    public ScrollBarLayout() {
+    }
+
+    public void addLayoutComponent(String name, Component comp) {
+
+        if ("Center".equals(name))
+            fChild = comp;
+        else if ("South".equals(name))
+            fHorizScrollBar = comp;
+        else if ("East".equals(name))
+            fVertScrollBar = comp;
+    }
+
+    public void layoutContainer(Container target) {
+
+        Insets      insets = target.getInsets();
+        Dimension   targetSize = target.getSize();
+        int         hsbHeight = (fHorizScrollBar != null) ? fHorizScrollBar.getPreferredSize().
+                            height : 0;
+        int         vsbWidth = (fVertScrollBar != null) ? fVertScrollBar.getPreferredSize().
+                            width : 0;
+
+        if (fHorizScrollBar != null)
+            fHorizScrollBar.setBounds(insets.left, targetSize.height - insets.bottom -
+                                hsbHeight, targetSize.width - vsbWidth, hsbHeight);
+
+        if (fVertScrollBar != null)
+            fVertScrollBar.setBounds(targetSize.width - insets.right - vsbWidth,
+                                insets.top, vsbWidth, targetSize.height - hsbHeight);
+
+        if (fChild != null)
+            fChild.setBounds(insets.left, insets.top, targetSize.width - insets.right - vsbWidth,
+                                targetSize.height - insets.bottom - hsbHeight);
+    }
+
+    public Dimension minimumLayoutSize(Container target) {
+
+        Dimension   returnVal = new Dimension(0, 0);
+        Dimension   hsbSize;
+        Dimension   vsbSize;
+        Dimension   childSize;
+
+        if (fHorizScrollBar != null && fHorizScrollBar.isVisible()) {
+            hsbSize = fHorizScrollBar.getMinimumSize();
+        }
+        else {
+            hsbSize = new Dimension(0, 0);
+        }
+
+        if (fVertScrollBar != null && fVertScrollBar.isVisible()) {
+            vsbSize = fVertScrollBar.getMinimumSize();
+        }
+        else {
+            vsbSize = new Dimension(0, 0);
+        }
+
+        if (fChild != null && fChild.isVisible()) {
+            childSize = fChild.getMinimumSize();
+        }
+        else {
+            childSize = new Dimension(0, 0);
+        }
+
+        returnVal.width = Math.max(childSize.width, hsbSize.width) + vsbSize.width;
+        returnVal.height = Math.max(childSize.height, vsbSize.height) + hsbSize.height;
+
+        Insets  insets = target.getInsets();
+
+        returnVal.width += insets.left + insets.right;
+        returnVal.height += insets.top + insets.bottom;
+
+        return returnVal;
+    }
+
+    public Dimension preferredLayoutSize(Container target) {
+
+        Dimension   returnVal = new Dimension(0, 0);
+        Dimension   hsbSize;
+        Dimension   vsbSize;
+        Dimension   childSize;
+
+        if (fHorizScrollBar != null && fHorizScrollBar.isVisible()) {
+            hsbSize = fHorizScrollBar.getPreferredSize();
+        }
+        else {
+            hsbSize = new Dimension(0, 0);
+        }
+
+        if (fVertScrollBar != null && fVertScrollBar.isVisible()) {
+            vsbSize = fVertScrollBar.getPreferredSize();
+        }
+        else {
+            vsbSize = new Dimension(0, 0);
+        }
+
+        if (fChild != null && fChild.isVisible()) {
+            childSize = fChild.getPreferredSize();
+        }
+        else {
+            childSize = new Dimension(0, 0);
+        }
+
+        returnVal.width = Math.max(childSize.width, hsbSize.width) + vsbSize.width;
+        returnVal.height = Math.max(childSize.height, vsbSize.height) + hsbSize.height;
+
+        Insets  insets = target.getInsets();
+
+        returnVal.width += insets.left + insets.right;
+        returnVal.height += insets.top + insets.bottom;
+
+        return returnVal;
+    }
+
+    public void removeLayoutComponent(Component comp) {
+
+        if (comp == fChild)
+            fChild = null;
+        else if (comp == fHorizScrollBar)
+            fHorizScrollBar = null;
+        else if (comp == fVertScrollBar)
+            fVertScrollBar = null;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/Scroller.java b/src/com/ibm/richtext/textpanel/Scroller.java
new file mode 100644
index 0000000..82ccb27
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/Scroller.java
@@ -0,0 +1,205 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2005.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/*
+    7/9/97 - changed some deprecated methods in Scrollbar
+            Also setting Unit and Block increment values.  Maybe
+            it matters...
+    6/29/98 - reimplemented this class.  Now this class talks to
+              any component which implements Scroller.Client.
+              ScrollHolder is gone, too.
+    2/4/99 - No longer a Panel.  Also, doesn't create Scrollbars,
+             and in fact doesn't even use the Scrollbar class
+             directly.
+*/
+
+import java.awt.Component;
+import java.awt.Rectangle;
+
+import java.awt.event.AdjustmentListener;
+import java.awt.event.AdjustmentEvent;
+import java.awt.Adjustable;
+
+/**
+* This class manages the interaction between a scrollable client
+* and vertical and horizontal scrollbars.  It calls the client's
+* scrollTo method in response to manipulation of the scroll bars.
+*
+* This class used to be a Panel containing the scrollbars and
+* the client panel.  As part of the migration away from direct
+* AWT dependencies, this class is no longer part of the view
+* hierarchy.  Instead it simply keeps a reference to its
+* client and scroll bars.  It is the responsibility of higher-
+* level classes to set up the view hierarchy.
+*/
+final class Scroller implements AdjustmentListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    static interface Client {
+        void scrollTo(int x, int y);
+        Rectangle getScrollSize();
+        Rectangle getBounds();
+    }
+
+    private Adjustable fHorizScrollBar = null;
+    private Adjustable fVertScrollBar = null;
+    private Client fClient = null;
+
+    /**
+     * These are used if the respective Scrollbar is not present.
+     */
+    private int fHorizValue, fVertValue;
+
+    private static final int DEFAULT_UNIT_INC = 10;
+
+    /**
+     * Construct a new Scroller with the given Adjustables,
+     * which really should be scrollbars of some ilk.
+     * Also, the Adjustables are required to be AWT Components,
+     * so the Scroller can enable and disable them.
+     * However, a Scroller can work with either AWT Scrollbars
+     * or JFC JScrollbars.
+     * @param horizScrollBar the horizontal scrollbar.  null if
+     * there is no horizontal scrollbar.
+     * @param vertScrollBar the vertical scrollbar.  null if
+     * there is no vertical scrollbar.
+     */
+    public Scroller(Adjustable horizScrollBar,
+                    Adjustable vertScrollBar) {
+
+        //setLayout(new ScrollBarLayout());
+
+        fHorizScrollBar = horizScrollBar;
+        fVertScrollBar = vertScrollBar;
+
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setUnitIncrement(DEFAULT_UNIT_INC);
+            fVertScrollBar.addAdjustmentListener(this);
+        }
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setUnitIncrement(DEFAULT_UNIT_INC);
+            fHorizScrollBar.addAdjustmentListener(this);
+        }
+    }
+
+    public void setClient(Client client) {
+
+        fClient = client;
+        clientScrollSizeChanged();
+    }
+
+    public void adjustmentValueChanged(AdjustmentEvent event) {
+
+        // variable not used boolean horizontal;
+        if (event.getAdjustable() == fHorizScrollBar) {
+            int vertVal = fVertScrollBar == null? fVertValue :
+                                        fVertScrollBar.getValue();
+            scrollTo(event.getValue(), vertVal);
+        }
+        else {
+            int horizVal = fHorizScrollBar == null? fHorizValue :
+                                        fHorizScrollBar.getValue();
+            scrollTo(horizVal, event.getValue());
+        }
+    }
+
+    private void setValues(Adjustable scrollbar,
+                           int visible,
+                           int minimum,
+                           int height) {
+
+        int maximum = minimum+height;
+        
+        if (scrollbar != null) {
+
+            Component scrollbarToo = (Component) scrollbar;
+
+            if (maximum <= visible) {
+                scrollbarToo.setEnabled(false);
+            }
+            else {
+                scrollbarToo.setEnabled(true);
+            }
+            
+            scrollbar.setMinimum(minimum);
+            scrollbar.setMaximum(maximum);
+            scrollbar.setVisibleAmount(visible);
+        // workaround setBlockIncrement warnings for increments < 1
+        scrollbar.setBlockIncrement(Math.max(1, visible - DEFAULT_UNIT_INC));
+        }
+    }
+
+
+    public void clientScrollSizeChanged()
+    {
+        Rectangle bounds = fClient.getBounds();
+        Rectangle preferredSize = fClient.getScrollSize();
+
+        setValues(fHorizScrollBar, bounds.width, preferredSize.x, preferredSize.width);
+        setValues(fVertScrollBar, bounds.height, preferredSize.y, preferredSize.height);
+    }
+
+    public void setPosition(int x, int y) {
+
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setValue(x);
+        }
+        else {
+            fHorizValue = x;
+        }
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setValue(y);
+        }
+        else {
+            fVertValue = y;
+        }
+    }
+
+    private void scrollTo(int x, int y)
+    {
+        fClient.scrollTo(x, y);
+    }
+
+    public void setHorizLineDistance(int newDistance)
+    {
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setUnitIncrement(newDistance);
+        }
+    }
+
+    public void setHorizPageOverlap(int newOverlap)
+    {
+        if (fHorizScrollBar != null) {
+            fHorizScrollBar.setBlockIncrement( // workaround warnings for values < 1 on unix
+                    Math.max(1, fHorizScrollBar.getVisibleAmount()-newOverlap));
+        }
+    }
+
+    public void setVertLineDistance(int newDistance)
+    {
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setUnitIncrement(newDistance);
+        }
+    }
+
+    public void setVertPageOverlap(int newOverlap)
+    {
+        if (fVertScrollBar != null) {
+            fVertScrollBar.setBlockIncrement( // workaround warnings for values < 1 on unix
+                    Math.max(1, fVertScrollBar.getVisibleAmount()-newOverlap));
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java b/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java
new file mode 100644
index 0000000..59538fd
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/SelectionDragInteractor.java
@@ -0,0 +1,201 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.textformat.TextOffset;
+
+final class SelectionDragInteractor extends Behavior implements Runnable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private RunStrategy fRunStrategy;
+    
+    private TextOffset fAnchorStart; // aliases text offsets - client beware
+    private TextOffset fAnchorEnd;
+    private TextOffset fCurrent;
+
+    private final boolean fWasZeroLength;
+
+    private int fCurrentX;
+    private int fCurrentY;
+    private boolean fMouseOutside;
+
+    private Thread fAutoscrollThread = null;
+    private boolean fThreadRun = true;
+
+    private static final int kScrollSleep = 300;
+
+    public SelectionDragInteractor(TextSelection selection,
+                                   TextComponent textComponent,
+                                   RunStrategy runStrategy,
+                                   TextOffset anchorStart,
+                                   TextOffset anchorEnd,
+                                   TextOffset current,
+                                   int initialX,
+                                   int initialY,
+                                   boolean wasZeroLength) {
+
+        fTextComponent = textComponent;
+        fSelection = selection;
+        fRunStrategy = runStrategy;
+        fAnchorStart = anchorStart;
+        fAnchorEnd = anchorEnd;
+        fCurrent = current;
+
+        fCurrentX = initialX;
+        fCurrentY = initialY;
+        fMouseOutside = false;
+
+        fWasZeroLength = wasZeroLength;
+        
+        setSelection();
+    }
+    
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        return true;
+    }
+
+    public boolean focusGained(FocusEvent event) {
+
+        return true;
+    }
+
+    public boolean focusLost(FocusEvent event) {
+
+        return true;
+    }
+
+    public boolean keyPressed(KeyEvent event) {
+
+        return true;
+    }
+
+    public boolean keyTyped(KeyEvent event) {
+
+        return true;
+    }
+
+    public boolean keyReleased(KeyEvent event) {
+
+        return true;
+    }
+
+    public synchronized boolean mouseDragged(MouseEvent e) {
+
+        int x = e.getX(), y = e.getY();
+        if (fCurrentX != x || fCurrentY != y) {
+            fCurrentX = x;
+            fCurrentY = y;
+            processMouseLocation();
+        }
+        return true;
+    }
+
+    public synchronized boolean mouseEnter(MouseEvent e) {
+
+        fMouseOutside = false;
+        return true;
+    }
+
+    public synchronized boolean mouseExited(MouseEvent e) {
+
+        if (fAutoscrollThread == null) {
+            fAutoscrollThread = new Thread(this);
+            fAutoscrollThread.start();
+        }
+        fMouseOutside = true;
+        notify();
+
+        return true;
+    }
+
+    public synchronized boolean mouseReleased(MouseEvent e) {
+
+        fMouseOutside = false;
+        fThreadRun = false;
+        if (fAutoscrollThread != null) {
+            fAutoscrollThread.interrupt();
+        }
+        
+        removeFromOwner();
+        boolean isZeroLength = TextSelection.rangeIsZeroLength(fAnchorStart,
+                                                               fAnchorEnd,
+                                                               fCurrent);
+        fSelection.mouseReleased(isZeroLength != fWasZeroLength);
+
+        return true;
+    }
+
+    private void processMouseLocation() {
+
+        fTextComponent.scrollToShow(fCurrentX, fCurrentY);
+        fTextComponent.pointToTextOffset(fCurrent, fCurrentX, fCurrentY, null, true);
+        setSelection();
+    }
+
+    private void setSelection() {
+
+        if (fCurrent.greaterThan(fAnchorEnd)) {
+            fSelection.advanceToNextBoundary(fCurrent);
+            fSelection.setSelRangeAndDraw(fAnchorStart, fCurrent, fAnchorStart);
+        }
+        else if (fCurrent.lessThan(fAnchorStart)) {
+            fSelection.advanceToPreviousBoundary(fCurrent);
+            fSelection.setSelRangeAndDraw(fCurrent, fAnchorEnd, fAnchorStart);
+        }
+        else {
+            fCurrent.assign(fAnchorEnd);
+            fSelection.setSelRangeAndDraw(fAnchorStart, fAnchorEnd, fAnchorStart);
+        }
+    }
+
+    public void run() {
+
+        Runnable doMouseLoc = new Runnable() {
+            public void run() {
+                processMouseLocation();
+            }
+        };
+        
+        while (fThreadRun) {
+
+            try {
+                Thread.sleep(kScrollSleep);
+            }
+            catch(InterruptedException e) {
+                return; // just quit scrolling
+            }
+
+            synchronized(this) {
+
+                while (!fMouseOutside) {
+                    try {
+                        wait();
+                    }
+                    catch(InterruptedException e) {
+                        return; // just quit scrolling
+                    }
+                }
+
+                fRunStrategy.doIt(doMouseLoc);
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/SimpleCommandLog.java b/src/com/ibm/richtext/textpanel/SimpleCommandLog.java
new file mode 100644
index 0000000..27d52c4
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/SimpleCommandLog.java
@@ -0,0 +1,175 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+final class SimpleCommandLog {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Command fLastCommand = null;
+    private Command fCurrentCommand = null;
+    private PanelEventBroadcaster fListener;
+
+    private boolean fBaseIsModified;
+
+    private int fLogSize = 14;
+
+    public SimpleCommandLog(PanelEventBroadcaster listener) {
+        fListener = listener;
+        fBaseIsModified = false;
+    }
+
+    /** adds the specfied command to the top of the command stack
+    * (any undone commands on the stack are removed)
+    * This function assumes the command has already been executed (i.e., its execute() method
+    * has been called, or an equivalent action has been taken) */
+    void add(Command newCommand) {
+        // if there are commands on the stack that have been undone, they are
+        // dropped on the floor here
+        newCommand.setPreviousCommand(fCurrentCommand);
+        
+        final Command oldLastCommand = fLastCommand;
+        fLastCommand = null;
+        
+        fCurrentCommand = newCommand;
+        limitCommands(fLogSize);
+        
+        if (oldLastCommand != null) {
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    /**
+     * If the command list is longer than logSize, truncate it.
+     * This method traverses the list each time, and is not a model
+     * of efficiency.  It's a temporary way to plug this memory leak
+     * until I can implement a bounded command log.
+     */
+    private void limitCommands(int logSize) {
+
+        if (logSize == 0) {
+            fCurrentCommand = null;
+        }
+        else {
+            Command currentCommand = fCurrentCommand;
+            int remaining = logSize-1;
+            while (currentCommand != null && remaining > 0) {
+                currentCommand = currentCommand.previousCommand();
+                remaining -= 1;
+            }
+            if (currentCommand != null) {
+                currentCommand.setPreviousCommand(null);
+            }
+        }
+    }
+
+    /** adds the specfied command to the top of the command stack and executes it */
+    void addAndDo(Command newCommand) {
+        add(newCommand);
+        newCommand.execute();
+
+        fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+    }
+
+    /** undoes the command on the top of the command stack, if there is one */
+    void undo() {
+        if (fCurrentCommand != null) {
+            Command current = fCurrentCommand;
+            current.undo();
+
+            fCurrentCommand = current.previousCommand();
+
+            current.setPreviousCommand(fLastCommand);
+            fLastCommand = current;
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    /** redoes the last undone command on the command stack, if there are any */
+    void redo() {
+        if (fLastCommand != null) {
+            Command last = fLastCommand;
+            last.redo();
+
+            fLastCommand = last.previousCommand();
+
+            last.setPreviousCommand(fCurrentCommand);
+            fCurrentCommand = last;
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public boolean canUndo() {
+        return fCurrentCommand != null;
+    }
+
+    public boolean canRedo() {
+        return fLastCommand != null;
+    }
+
+    public boolean isModified() {
+
+        if (fCurrentCommand == null) {
+            return fBaseIsModified;
+        }
+        else {
+            return fCurrentCommand.isModified();
+        }
+    }
+
+    public void setModified(boolean modified) {
+
+        if (fCurrentCommand == null) {
+            fBaseIsModified = modified;
+        }
+        else {
+            fCurrentCommand.setModified(modified);
+        }
+    }
+
+    public void clearLog() {
+
+        if (fCurrentCommand != null) {
+            fBaseIsModified = fCurrentCommand.isModified();
+        }
+        // variable not used boolean changed = fCurrentCommand != null || fLastCommand != null;
+        fCurrentCommand = null;
+        fLastCommand = null;
+        
+        fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+    }
+
+    public void setLogSize(int size) {
+
+        if (size < 0) {
+            throw new IllegalArgumentException("log size cannot be negative");
+        }
+        
+        if (size < fLogSize) {
+            limitCommands(size);
+        }
+        
+        fLogSize = size;
+        
+        if (fLastCommand != null || size == 0) {
+            fLastCommand = null;
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public int getLogSize() {
+
+        return fLogSize;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/StyleChangeCommand.java b/src/com/ibm/richtext/textpanel/StyleChangeCommand.java
new file mode 100644
index 0000000..7e213cb
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/StyleChangeCommand.java
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+class StyleChangeCommand extends TextCommand {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private boolean fCharacter;
+    private StyleModifier fModifier;
+
+    public StyleChangeCommand(TextEditBehavior behavior,
+                              MText originalText,
+                              TextOffset selStartBefore,
+                              TextOffset selEndBefore,
+                              StyleModifier modifier,
+                              boolean character) {
+
+        super(behavior, originalText, selStartBefore.fOffset, selStartBefore, selEndBefore);
+        fModifier = modifier;
+        fCharacter = character;
+    }
+
+    public int affectedRangeEnd() {
+        return fSelEndBefore.fOffset;
+    }
+
+    public void execute() {
+        fBehavior.doModifyStyles(fAffectedRangeStart, fSelEndBefore.fOffset,
+                                 fModifier, fCharacter, fSelStartBefore, fSelEndBefore);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/StyledTextClipboard.java b/src/com/ibm/richtext/textpanel/StyledTextClipboard.java
new file mode 100644
index 0000000..6731fbd
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/StyledTextClipboard.java
@@ -0,0 +1,217 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.awt.Toolkit;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+
+/**
+* Wrapper for java.awt.datatransfer.Clipboard
+* Packages an MConstText in a transferable, and puts it on the clipboard.
+*/
+
+class StyledTextClipboard implements ClipboardOwner {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    // This class has a workaround for a bug in the Windows system clipboard.
+    // The system clipboard will only return String content, even
+    // though it has a reference to the contents.  So if our
+    // clipboard is the system clipboard, we'll keep a reference
+    // to the content and use that instead of what the Clipboard returns.
+
+    private static Clipboard SYSTEM = null;
+    static {
+        try {
+            SYSTEM = Toolkit.getDefaultToolkit().getSystemClipboard();
+        }
+        catch(Throwable th) {
+        }
+    }
+
+    private static StyledTextClipboard fgSystemClipboard = null;
+
+    public static StyledTextClipboard getClipboardFor(Clipboard clipboard) {
+
+        if (clipboard == SYSTEM && SYSTEM != null) {
+            synchronized(SYSTEM) {
+                if (fgSystemClipboard == null) {
+                    fgSystemClipboard = new StyledTextClipboard(SYSTEM, true);
+                }
+            }
+            return fgSystemClipboard;
+        }
+        else {
+            return new StyledTextClipboard(clipboard, false);
+        }
+    }
+
+    private Clipboard fClipboard;
+    private boolean fUseLocalContents;
+    private Transferable fContents = null;
+
+    private StyledTextClipboard(Clipboard clipboard, boolean useLocalContents) {
+
+        if (clipboard == null) {
+            fClipboard = new Clipboard("TextPanel clipboard");
+        }
+        else {
+            fClipboard = clipboard;
+        }
+
+        fUseLocalContents = useLocalContents;
+    }
+
+    public void lostOwnership(Clipboard clipboard,
+                              Transferable contents) {
+        if (contents == fContents) {
+            this.fContents = null;
+        }
+    }
+
+    public void setContents(MConstText newContents) {
+
+        TransferableText contents = new TransferableText(newContents);
+        if (fClipboard == SYSTEM) {
+            fContents = contents;
+        }
+        fClipboard.setContents(contents, this);
+    }
+
+    private Transferable getClipboardContents() {
+
+        if (fUseLocalContents && fContents != null) {
+            return fContents;
+        }
+
+        return fClipboard.getContents(this);
+    }
+
+    /**
+     * Has contents - faster than getContents for finding out whether the
+     * clipboard has text.
+     */
+    public boolean hasContents() {
+
+        Transferable contents = getClipboardContents();
+
+        if (contents == null) {
+            return false;
+        }
+
+        return contents.isDataFlavorSupported(MConstText.styledTextFlavor) ||
+               contents.isDataFlavorSupported(DataFlavor.stringFlavor) ||
+               contents.isDataFlavorSupported(DataFlavor.plainTextFlavor);
+    }
+
+    private String getString(InputStream inStream) throws IOException {
+
+        String value = new String();
+        int bytesRead;
+
+        do {
+            byte inBytes[] = new byte[inStream.available()];
+            bytesRead = inStream.read(inBytes);
+
+            if (bytesRead != -1)
+                value = value + new String(inBytes);
+
+        } while (bytesRead != -1);
+
+        return value;
+    }
+
+    /**
+     * If the Clipboard has text content, return it as an
+     * MConstText.  Otherwise return null.
+     * @param defaultStyle the style to apply to unstyled
+     *      text (such as a String).  If the clipboard
+     *      has styled text this parameter is not used.
+     */
+    public MConstText getContents(AttributeMap defaultStyle) {
+
+        Transferable contents = getClipboardContents();
+
+        if (contents == null) {
+            return null;
+        }
+
+        DataFlavor flavors[] = contents.getTransferDataFlavors();
+
+        // search flavors for our flavor, String flavor and raw text flavor
+
+        Exception ex = null;
+
+        try {
+           int i;
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(MConstText.styledTextFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(MConstText.styledTextFlavor);
+                if (data == null)
+                    System.out.println("Data is null.");
+                return (MConstText) data;
+            }
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(DataFlavor.stringFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(DataFlavor.stringFlavor);
+                return new StyledText((String) data, defaultStyle);
+            }
+
+            for (i=0; i < flavors.length; i++) {
+                if (flavors[i].equals(DataFlavor.plainTextFlavor))
+                    break;
+            }
+
+            if (i < flavors.length) {
+
+                Object data = contents.getTransferData(DataFlavor.plainTextFlavor);
+
+                String textString = getString((InputStream) data);
+                return new StyledText(textString, defaultStyle);
+            }
+        }
+        catch(UnsupportedFlavorException e) {
+            ex = e;
+        }
+        catch(IOException e) {
+            ex = e;
+        }
+
+        System.out.println("Exception when retrieving data.  Exception:" + ex);
+        return null;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextChangeCommand.java b/src/com/ibm/richtext/textpanel/TextChangeCommand.java
new file mode 100644
index 0000000..d337055
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextChangeCommand.java
@@ -0,0 +1,79 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+class TextChangeCommand extends TextCommand {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MConstText fNewText;
+    private TextOffset fSelStartAfter;
+    private TextOffset fSelEndAfter;
+
+    public TextChangeCommand(TextEditBehavior behavior,
+                             MText originalText,
+                             MConstText newText,
+                             int affectedRangeStart,
+                             TextOffset selStartBefore,
+                             TextOffset selEndBefore,
+                             TextOffset selStartAfter,
+                             TextOffset selEndAfter) {
+        super(behavior, originalText, affectedRangeStart, selStartBefore, selEndBefore);
+        fNewText = newText;
+        fSelStartAfter = new TextOffset();
+        fSelStartAfter.assign(selStartAfter);
+        fSelEndAfter = new TextOffset();
+        fSelEndAfter.assign(selEndAfter);
+    }
+
+    public int affectedRangeEnd() {
+        if (fNewText == null)
+            return fAffectedRangeStart;
+        else
+            return fAffectedRangeStart + fNewText.length();
+    }
+
+    public void execute() {
+        fBehavior.doReplaceText(fAffectedRangeStart, fAffectedRangeStart + fOriginalText.length(),
+                            fNewText, fSelStartAfter, fSelEndAfter);
+    }
+
+    public int affectedRangeStart() {
+        return fAffectedRangeStart;
+    }
+
+    public void setNewText(MConstText newText) {
+        fNewText = newText;
+    }
+
+    public void setSelRangeAfter(TextOffset start, TextOffset end) {
+        if (fSelStartAfter == null)
+            fSelStartAfter = new TextOffset();
+        if (fSelEndAfter == null)
+            fSelEndAfter = new TextOffset();
+        fSelStartAfter.assign(start);
+        fSelEndAfter.assign(end);
+    }
+
+    public void prependToOldText(MConstText newText) {
+        fOriginalText.insert(0, newText);
+        fAffectedRangeStart -= newText.length();
+    }
+
+    public void appendToOldText(MConstText newText) {
+        fOriginalText.append(newText);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextCommand.java b/src/com/ibm/richtext/textpanel/TextCommand.java
new file mode 100644
index 0000000..5730d7b
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextCommand.java
@@ -0,0 +1,48 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+abstract class TextCommand extends Command {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected TextEditBehavior fBehavior;
+    protected MText fOriginalText;
+    protected int fAffectedRangeStart;
+    protected TextOffset fSelStartBefore;
+    protected TextOffset fSelEndBefore;
+
+    public TextCommand(TextEditBehavior behavior,
+                       MText originalText,
+                       int affectedRangeStart,
+                       TextOffset selStartBefore,
+                       TextOffset selEndBefore) {
+
+        fBehavior = behavior;
+        fOriginalText = originalText;
+        fAffectedRangeStart = affectedRangeStart;
+        fSelStartBefore = new TextOffset();
+        fSelStartBefore.assign(selStartBefore);
+        fSelEndBefore = new TextOffset();
+        fSelEndBefore.assign(selEndBefore);
+    }
+
+    public abstract int affectedRangeEnd();
+
+    public void undo() {
+        fBehavior.doReplaceText(fAffectedRangeStart, affectedRangeEnd(), fOriginalText,
+                            fSelStartBefore, fSelEndBefore);
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextComponent.java b/src/com/ibm/richtext/textpanel/TextComponent.java
new file mode 100644
index 0000000..83b1e8c
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextComponent.java
@@ -0,0 +1,953 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+
+import java.awt.event.ComponentAdapter;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+
+import java.awt.event.ComponentEvent;
+import java.awt.event.FocusEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+class TextComponent extends FakeComponent
+                    implements BehaviorOwner,
+                    FocusListener,
+                    KeyListener,
+                    MouseListener,
+                    MouseMotionListener,
+                    Scroller.Client {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    public static final int WINDOW_WIDTH = -10;
+    public static final int DEFAULT_INSET = 10;
+
+    private static final Color STRONG_CARET_COLOR = Color.black;
+    private static final Color WEAK_CARET_COLOR = Color.darkGray;
+
+    private Behavior fBehavior;
+    private MText fText;
+    private StyledTextClipboard fClipboard;
+    private boolean fScrolls;
+    private Scroller fScroller;
+
+    private DocumentView fDocumentView = null;
+
+    // sigh - can't create DocumentView until addNotify() is called.
+    // These values hold DocumentView ctor args
+    private AttributeMap fDefaultValues;
+    private boolean fViewWraps;
+    private int fViewWrapWidth;
+    private int fViewInsetAmount;
+    
+    private PanelEventBroadcaster fListener;
+
+    /**
+     * Create a new TextComponent.
+     * @param text the text model.  This model will be used for
+     * the life of the component, even if setText is called
+     * @param wraps if true, the text is wrapped to the specified
+     * wrapping width.  If false, the text wraps only at paragraph breaks.
+     * @param wrapWidth ignored if wraps is false.  Text wraps to this width
+     * unless the width is WINDOW_WIDTH, in which case text wraps to width
+     * of this component. Should not be negative (unless it is WINDOW_WIDTH).
+     * @param insetAmount the size of the margins around the text
+     * @param clipboard the clipboard to use for cut/copy/paste operations.
+     * If null, the component will use its own clipboard.
+     */
+    public TextComponent(MText text,
+                         AttributeMap defaultValues,
+                         boolean wraps,
+                         int wrapWidth,
+                         int insetAmount,
+                         StyledTextClipboard clipboard,
+                         boolean scrolls,
+                         Scroller scroller,
+                         PanelEventBroadcaster listener) {
+
+        fBehavior = null;
+
+        if (text == null) {
+            throw new IllegalArgumentException("Text is null.");
+        }
+
+        fText = text;
+        fDefaultValues = defaultValues;
+        
+        if (clipboard == null) {
+            throw new IllegalArgumentException("Clipboard is null.");
+        }
+        fClipboard = clipboard;
+
+        fScrolls = scrolls;
+
+        fScroller = scroller;
+
+        fDocumentView = null;
+
+        fViewWrapWidth = wrapWidth;
+        fViewWraps = wraps;
+        fViewInsetAmount = insetAmount;
+        fListener = listener;
+    }
+    
+    AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    void setHost(Component component) {
+        
+        super.setHost(component);
+        
+        component.addFocusListener(this);
+        component.addKeyListener(this);
+        component.addMouseListener(this);
+        component.addMouseMotionListener(this);
+        
+        component.addComponentListener(new ComponentAdapter() {        
+            public void componentResized(ComponentEvent e) {
+                if (fDocumentView != null) {
+                    fDocumentView.hostSizeChanged();
+                    scrollToShow(fDocumentView.getDocumentBounds());
+                }
+            }
+        });
+    }
+    
+    /**
+     * ATextPanelImpl's use only!
+     */
+    Component getHost() {
+    
+        return fHost;
+    }
+    
+    // Create document view here.  TextComponent isn't fully constructed
+    // until this is called.
+    // This must be called by host component!
+    void addNotify() {
+
+        Graphics g = getGraphics();
+        if (g == null) {
+            throw new Error("Graphics should be valid here but isn't.");
+        }
+
+        fDocumentView = new DocumentView(this,
+                                         fText,
+                                         fDefaultValues,
+                                         fViewWraps,
+                                         fViewWrapWidth,
+                                         fViewInsetAmount,
+                                         fListener);
+        documentSizeChanged();
+        fListener.textStateChanged(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+    }
+    
+    public Rectangle getBounds() {
+        
+        if (fHost != null) {
+            return fHost.getBounds();
+        }
+        return new Rectangle(0, 0, 0, 0);
+    }
+    
+    Graphics getGraphics() {
+        
+        return (fHost==null)? null : fHost.getGraphics();
+    }
+    
+    void requestFocus() {
+        
+        if (fHost != null) {
+            fHost.requestFocus();
+        }
+    }
+
+    // *** Behavior management ***
+    public Behavior getBehavior() {
+        return fBehavior;
+    }
+
+    public void setBehavior(Behavior b) {
+        fBehavior = b;
+    }
+
+
+    // *** Events - just forward to behavior ***
+    public void focusGained(FocusEvent event) {
+        if (fBehavior != null)
+            fBehavior.focusGained(event);
+    }
+
+    public void focusLost(FocusEvent event) {
+        if (fBehavior != null)
+            fBehavior.focusLost(event);
+    }
+
+    public void keyPressed(KeyEvent event) {
+        if (fBehavior != null)
+            fBehavior.keyPressed(event);
+    }
+
+    public void keyTyped(KeyEvent event) {
+
+        if (fBehavior != null) {
+            fBehavior.keyTyped(event);
+        }
+    }
+
+    public void keyReleased(KeyEvent event) {
+        if (fBehavior != null)
+            fBehavior.keyReleased(event);
+    }
+
+    public void mouseClicked(MouseEvent event) {
+        // no behavior method for this
+    }
+
+    public void mouseDragged(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mouseDragged(event);
+    }
+
+    public void mouseEntered(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseEntered(event);
+    }
+
+    public void mouseExited(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseExited(event);
+    }
+
+    public void mouseMoved(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mouseMoved(event);
+    }
+
+    public void mousePressed(MouseEvent event) {
+        if (fBehavior != null)
+            fBehavior.mousePressed(event);
+    }
+
+    public void mouseReleased(MouseEvent event)  {
+        if (fBehavior != null)
+            fBehavior.mouseReleased(event);
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean handled = false;
+
+        if (fBehavior != null) {
+            handled = fBehavior.textControlEventOccurred(event, what);
+        }
+        return handled;
+    }
+
+
+    // *** Scroll methods - called by Behaviors
+
+    // viewStart, viewLimit is visible bounds of window
+    // targetStart, targetLimit is the region to scroll into view
+    private static int getScrollDifference(int viewStart,
+                                           int viewLimit,
+                                           int targetStart,
+                                           int targetLimit) {
+
+        if (viewStart <= targetStart) {
+            if (viewLimit >= targetLimit) {
+                return 0;
+            }
+            return Math.max(viewStart-targetStart, viewLimit-targetLimit);
+        }
+        else if (viewLimit > targetLimit) {
+
+            return viewLimit - targetLimit;
+        }
+        else {
+            return 0;
+        }
+    }
+
+    void scrollToShow(Rectangle showRect) {
+
+        if (fDocumentView != null) {
+            Rectangle bounds = getBounds();
+
+            int dx = getScrollDifference(showRect.x, showRect.x + showRect.width,
+                                         bounds.x, bounds.x + bounds.width);
+            int dy = getScrollDifference(showRect.y, showRect.y + showRect.height,
+                                         bounds.y, bounds.y + bounds.height);
+
+            scrollSelf(dx, dy);
+        }
+    }
+
+    void scrollToShow(int showX, int showY) {
+
+        if (fDocumentView != null) {
+            int dx = 0, dy = 0;
+
+            Rectangle bounds = getBounds();
+            if (showX < bounds.x) {
+                dx = showX - bounds.x;
+            }
+            else if (showX > bounds.x + bounds.width) {
+                dx = showX - (bounds.x + bounds.width);
+            }
+
+            if (showY < bounds.y) {
+                dy = showY - bounds.y;
+            }
+            else if (showY > bounds.y + bounds.height) {
+                dy = showY - (bounds.y + bounds.height);
+            }
+
+            scrollSelf(dx, dy);
+        }
+    }
+
+    private int pinScrollOffset(int delta,
+                                int contentStart,
+                                int contentLength,
+                                int viewStart,
+                                int viewLength) {
+
+        if (delta > 0) {
+            int viewLimit = viewStart + viewLength;
+            int contentLimit = contentStart + contentLength;
+
+            if (viewLimit + delta > contentLimit) {
+                delta = Math.max(0, contentLimit-viewLimit);
+            }
+        }
+        else {
+            if (viewStart + delta < contentStart) {
+                delta = Math.min(0, contentStart-viewStart);
+            }
+        }
+
+        return delta;
+    }
+
+    private void scrollSelf(int dx, int dy) {
+
+        boolean scrolled = scrollBy(dx, dy);
+
+        if (scrolled && fScroller != null) {
+            Rectangle documentBounds = fDocumentView.getDocumentBounds();
+            fScroller.setPosition(-documentBounds.x,
+                                  -documentBounds.y);
+        }
+    }
+
+    private synchronized boolean scrollBy(int dx, int dy) {
+
+        boolean scrolled = false;
+
+        if (fScrolls) {
+            Rectangle documentBounds = fDocumentView.getDocumentBounds();
+            Rectangle viewBounds = getBounds();
+            
+            // variable not used int oldDx = dx;
+            dx = pinScrollOffset(dx, 
+                                 documentBounds.x,
+                                 documentBounds.width,
+                                 viewBounds.x,
+                                 viewBounds.width);
+            dy = pinScrollOffset(dy, 
+                                 documentBounds.y,
+                                 documentBounds.height,
+                                 viewBounds.y,
+                                 viewBounds.height);
+
+            if (dx != 0 || dy != 0) {
+                scrolled = true;
+                fDocumentView.moveBy(-dx, -dy);
+            }
+        }
+
+        return scrolled;
+    }
+
+    // implementation of Scroller.Client - called by Scroller
+    // they have to be public since they're in an interface
+    // no one else should call these methods
+    public Rectangle getScrollSize() {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getScrollableArea();
+        }
+        return new Rectangle(0, 0, 0, 0);
+    }
+
+    public void scrollTo(int x, int y) {
+
+        if (fDocumentView != null) {
+            scrollBy(x + fDocumentView.getDocX(), y + fDocumentView.getDocY());
+        }
+    }
+
+    // *** Text access ***
+    MConstText getText() {
+        return fText;
+    }
+
+    MText getModifiableText() {
+        return fText;
+    }
+
+    StyledTextClipboard getClipboard() {
+        return fClipboard;
+    }
+
+    public synchronized void paint(Graphics g) {
+
+        if (fDocumentView != null) {
+            fDocumentView.paint(g);
+        }
+    }
+
+
+    // *** Metric info - used by Behaviors
+    Rectangle getCaretRect(TextOffset offset) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getCaretRect(offset);
+        }
+        return new Rectangle(0, 0);
+    }
+
+    TextOffset pointToTextOffset(TextOffset result,
+                                 int x,
+                                 int y,
+                                 TextOffset anchor,
+                                 boolean infiniteMode) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.pointToTextOffset(result, x, y, anchor, infiniteMode);
+        }
+        return new TextOffset();
+    }
+
+    // *** Other stuff used by Behaviors - mostly formatter exports
+    int lineContaining(TextOffset offset) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineContaining(offset);
+        }
+        return 0;
+    }
+
+    int lineRangeLow(int lineNumber) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineRangeLow(lineNumber);
+        }
+        return 0;
+    }
+
+    int lineRangeLimit(int lineNumber) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.lineRangeLimit(lineNumber);
+        }
+        return 0;
+    }
+
+    void stopBackgroundFormatting() {
+
+        if (fDocumentView != null) {
+            fDocumentView.stopBackgroundFormatting();
+        }
+    }
+
+    Rectangle getBoundingRect(TextOffset offset1, TextOffset offset2) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getBoundingRect(offset1, offset2);
+        }
+        return new Rectangle(0, 0, 0, 0);
+    }
+
+    synchronized void reformatAndDrawText(int reformatStart,
+                             int reformatLength,
+                             TextOffset selStart,
+                             TextOffset selEnd,
+                             Rectangle additionalUpdateRect,
+                             Color hiliteColor) {
+
+        if (fDocumentView != null) {
+            fDocumentView.reformatAndDrawText(reformatStart,
+                                              reformatLength,
+                                              selStart,
+                                              selEnd,
+                                              additionalUpdateRect,
+                                              hiliteColor);
+        }
+    }
+
+    TextOffset findNewInsertionOffset(TextOffset result,
+                                      TextOffset initialOffset,
+                                      TextOffset previousOffset,
+                                      short direction) {
+
+        if (fDocumentView != null) {
+            return fDocumentView.findNewInsertionOffset(result, initialOffset, previousOffset, direction);
+        }
+        return new TextOffset(initialOffset);
+    }
+
+    synchronized void drawText(Graphics g,
+                  Rectangle damagedRect,
+                  boolean selectionVisible,
+                  TextOffset selStart,
+                  TextOffset selEnd,
+                  Color hiliteColor) {
+
+        if (fDocumentView != null) {
+            fDocumentView.drawText(g, damagedRect, selectionVisible, selStart, selEnd, hiliteColor);
+        }
+    }
+
+    private void documentSizeChanged() {
+
+        if (fScroller != null) {
+            fScroller.clientScrollSizeChanged();
+        }
+    }
+
+    int getFormatWidth() {
+
+        if (fDocumentView != null) {
+            return fDocumentView.getFormatWidth();
+        }
+        return 0;
+    }
+
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    boolean paragraphIsLeftToRight(int offset) {
+        
+        if (fDocumentView != null) {
+            return fDocumentView.paragraphIsLeftToRight(offset);
+        }
+        return true;
+    }
+    
+    private static final class DocumentView {
+
+        private TextComponent fHost;
+        private boolean fWrapToWindowWidth;
+        private int fInsetAmount;
+        private PanelEventBroadcaster fListener;
+
+        // fBounds is the total scrollable area of the document (including insets)
+        private Rectangle fBounds = new Rectangle();
+        
+        private Point fOrigin;
+
+        private MFormatter fFormatter;
+
+        private OffscreenBufferCache fBufferCache;
+
+        // Note, when this is true the caret won't blink in 1.1.  Looks like an AWT bug.
+        private static boolean fNoOffscreenBuffer =
+                            Boolean.getBoolean("TextComponent.NoOffscreenBuffer");
+
+        // Amount by which to reduce the format width to allow for right-aligned carets.
+        private final int CARET_SLOP = 1;
+
+        DocumentView(TextComponent host,
+                     MConstText text,
+                     AttributeMap defaultValues,
+                     boolean wraps,
+                     int wrapWidth,
+                     int insetAmount,
+                     PanelEventBroadcaster listener) {
+
+            fHost = host;
+            fWrapToWindowWidth = wrapWidth == WINDOW_WIDTH;
+            fInsetAmount = insetAmount;
+            fListener = listener;
+
+            initFormatterAndSize(text, defaultValues, wraps, wrapWidth);
+
+            fBufferCache = new OffscreenBufferCache(host.fHost);
+        }
+        
+        /**
+         * Note: this computes the bounds rectangle relative to fOrigin
+         */
+        private void calcBoundsRect() {
+        
+            final int insetDim = 2 * fInsetAmount;
+
+            final int minX = fFormatter.minX();
+            final int minY = fFormatter.minY();
+
+            fBounds.setBounds(fOrigin.x + minX - fInsetAmount,
+                              fOrigin.y + minY - fInsetAmount,
+                              fFormatter.maxX() - minX + insetDim, 
+                              fFormatter.maxY() - minY + insetDim);
+            //if (minX <= 0) {
+            //    System.out.println("calcBoundsRect: minX="+minX+
+            //                       "; bounds.x="+fBounds.x+"; width="+fBounds.width);
+            //}
+        }
+
+        private void initFormatterAndSize(MConstText text, 
+                                          AttributeMap defaultValues,
+                                          boolean wraps,
+                                          int wrapWidth) {
+
+            Rectangle hostBounds = fHost.getBounds();
+            int formatWidth;
+
+            if (!wraps || fWrapToWindowWidth) {
+                formatWidth = hostBounds.width - 2 * fInsetAmount;
+                if (formatWidth <= CARET_SLOP) {
+                    formatWidth = CARET_SLOP+1;
+                }
+            }
+            else {
+                formatWidth = wrapWidth;
+            }
+
+            fFormatter = MFormatter.createFormatter(text,
+                                                    defaultValues,
+                                                    formatWidth-CARET_SLOP,
+                                                    wraps,
+                                                    fHost.getGraphics());
+
+            fFormatter.formatToHeight(hostBounds.height * 2);
+            fOrigin = new Point(fInsetAmount, fInsetAmount);
+            calcBoundsRect();
+        }
+
+        // notification method called by TextComponent
+        void hostSizeChanged() {
+
+            final boolean wrap = fFormatter.wrap();
+            if (fWrapToWindowWidth || !wrap) {
+
+                Rectangle hostBounds = fHost.getBounds();
+                // variable not used final int insetDim = 2 * fInsetAmount;
+
+                int formatWidth = hostBounds.width - 2*fInsetAmount;
+                if (formatWidth <= CARET_SLOP) {
+                    formatWidth = CARET_SLOP+1;
+                }
+                fFormatter.setLineBound(formatWidth-CARET_SLOP);
+
+                fFormatter.formatToHeight(hostBounds.y + (hostBounds.height*2) - fOrigin.y);
+
+                calcBoundsRect();
+                
+                //System.out.println("Window bounds="+hostBounds+"; document bounds="+fBounds);
+
+                fHost.documentSizeChanged();
+                fListener.textStateChanged(TextPanelEvent.FORMAT_WIDTH_CHANGED);
+                //System.out.println("formatWidth="+formatWidth);
+                //System.out.println("document bounds="+fBounds);
+                //System.out.println();
+            }
+            //dumpWidthInfo();
+        }
+
+        int getFormatWidth() {
+
+            return fFormatter.lineBound();
+        }
+        
+        boolean paragraphIsLeftToRight(int offset) {
+            
+            int lineNumber = fFormatter.lineContaining(offset);
+            return fFormatter.lineIsLeftToRight(lineNumber);
+        }
+
+        private void textSizeMightHaveChanged() {
+
+            boolean changed = false;
+            final int insetDim = 2 * fInsetAmount;
+            
+            int textHeight = fFormatter.maxY() - fFormatter.minY() + insetDim;
+            if (textHeight != fBounds.height) {
+                fBounds.height = textHeight;
+                changed = true;
+            }
+
+            if (!fFormatter.wrap()) {
+                int textWidth = fFormatter.maxX() - fFormatter.minX() + insetDim;
+                if (textWidth != fBounds.width) {
+                    fBounds.width = textWidth;
+                    changed = true;
+                }
+            }
+
+            if (changed) {
+                //System.out.println("Text size changed.  fBounds: " + fBounds);
+                calcBoundsRect();
+                fHost.documentSizeChanged();
+                fHost.scrollToShow(getDocumentBounds());
+            }
+        }
+
+        private void doDrawText(Graphics g,
+                                Rectangle drawRect,
+                                boolean selectionVisible,
+                                TextOffset selStart,
+                                TextOffset selEnd,
+                                Color hiliteColor) {
+
+            Color oldColor = g.getColor();
+            g.setColor(fHost.getHost().getBackground());
+            g.fillRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+            g.setColor(oldColor);
+
+            //            g.clearRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+
+            if (selectionVisible) {
+                fFormatter.draw(g, drawRect, fOrigin, selStart, selEnd, hiliteColor);
+            }
+            else {
+                fFormatter.draw(g, drawRect, fOrigin, null, null, null);
+            }
+
+            if (selStart != null && selStart.equals(selEnd) && selectionVisible) {
+
+                fFormatter.drawCaret(g, selStart, fOrigin,
+                                    STRONG_CARET_COLOR, WEAK_CARET_COLOR);
+            }
+        }
+
+        void drawText(Graphics g,
+                      Rectangle drawRect,
+                      boolean selectionVisible,
+                      TextOffset selStart,
+                      TextOffset selEnd,
+                      Color hiliteColor) {
+
+            if (g != null) {
+                drawRect = drawRect.intersection(fHost.getBounds());
+                //System.out.println("drawText:drawRect: " + drawRect);
+                g.clipRect(drawRect.x, drawRect.y, drawRect.width, drawRect.height);
+                if (fNoOffscreenBuffer) {
+                    doDrawText(g, drawRect, selectionVisible, selStart, selEnd, hiliteColor);
+                }
+                else {
+                    Image offscreenBuffer = fBufferCache.getBuffer(drawRect.width, drawRect.height);
+                    Graphics offscreenGraphics = offscreenBuffer.getGraphics();
+                    offscreenGraphics.translate(-drawRect.x, -drawRect.y);
+    
+                    doDrawText(offscreenGraphics, drawRect, selectionVisible, selStart, selEnd, hiliteColor);
+    
+                    g.drawImage(offscreenBuffer, drawRect.x, drawRect.y, fHost.fHost);
+                }
+            }
+            textSizeMightHaveChanged();
+        }
+
+        void reformatAndDrawText(int reformatStart,
+                                 int reformatLength,
+                                 TextOffset selStart,
+                                 TextOffset selEnd,
+                                 Rectangle additionalUpdateRect,
+                                 Color hiliteColor) {
+
+            Rectangle visibleBounds = fHost.getBounds();
+            Rectangle redrawRect = fFormatter.updateFormat(reformatStart,
+                                                           reformatLength,
+                                                           visibleBounds,
+                                                           fOrigin);
+            //System.out.println("[1] redrawRect: " + redrawRect);
+
+            if (additionalUpdateRect != null) {
+                redrawRect.add(additionalUpdateRect);
+                //System.out.println("[2] redrawRect: " + redrawRect);
+            }
+
+            boolean haveSelection;
+
+            if (selStart != null && selEnd != null) {
+                haveSelection = true;
+                redrawRect.add(fFormatter.getBoundingRect(selStart, selEnd, fOrigin, MFormatter.LOOSE));
+                //System.out.println("[3] redrawRect: " + redrawRect);
+            }
+            else {
+                haveSelection = false;
+            }
+
+            drawText(fHost.getGraphics(), redrawRect, haveSelection, selStart, selEnd, hiliteColor);
+        }
+
+        private void letBehaviorDraw(Graphics g, Rectangle drawRect) {
+
+            boolean result = false;
+
+            if (fHost.fBehavior != null) {
+                result = fHost.fBehavior.paint(g, drawRect);
+            }
+
+            if (!result) {
+                drawText(g, drawRect, false, null, null, null);
+            }
+        }
+
+        void moveBy(int dx, int dy) {
+
+            Rectangle visibleBounds = fHost.getBounds();
+            Graphics g = fHost.getGraphics();
+
+            fBounds.x += dx;
+            fBounds.y += dy;
+            fOrigin.x += dx;
+            fOrigin.y += dy;
+
+            Rectangle refreshRect = new Rectangle(visibleBounds);
+
+            if (dx == 0) {
+                if (g != null) {
+                    g.copyArea(visibleBounds.x, visibleBounds.y, visibleBounds.width, visibleBounds.height, dx, dy);
+                }
+                if (dy < 0) {
+                    refreshRect.y = visibleBounds.y + visibleBounds.height + dy;
+                }
+                refreshRect.height = Math.abs(dy);
+                //System.out.println("refreshRect=" + refreshRect);
+            }
+
+            letBehaviorDraw(g, refreshRect);
+        }
+        
+        private Rectangle getInsetBounds() {
+            
+            int insetDim = 2 * fInsetAmount;
+            return new Rectangle(fBounds.x-fInsetAmount,
+                                 fBounds.y-fInsetAmount,
+                                 fBounds.width+insetDim,
+                                 fBounds.height+insetDim);
+        }
+
+        void paint(Graphics g) {
+
+            Rectangle hostBounds = fHost.getBounds();
+            Rectangle textRefreshRect = hostBounds.intersection(getInsetBounds());
+            letBehaviorDraw(g, textRefreshRect);
+        }
+
+        Rectangle getCaretRect(TextOffset offset) {
+
+            return fFormatter.getCaretRect(offset, fOrigin);
+        }
+
+        TextOffset pointToTextOffset(TextOffset result,
+                                     int x,
+                                     int y,
+                                     TextOffset anchor,
+                                     boolean infiniteMode) {
+
+            return fFormatter.pointToTextOffset(result, x, y, fOrigin, anchor, infiniteMode);
+        }
+
+        Rectangle getScrollableArea() {
+
+            Rectangle area = new Rectangle(fBounds);
+            area.x += fInsetAmount - fOrigin.x;
+            area.y += fInsetAmount - fOrigin.y;
+            return area;
+        }
+
+        /**
+         * Doesn't clone so TextComponent needs to be nice.  TextComponent
+         * is the only class which can access this anyway.
+         */
+        Rectangle getDocumentBounds() {
+
+            return fBounds;
+        }
+        
+        int getDocX() {
+        
+            return fOrigin.x - fInsetAmount;
+        }
+        
+        int getDocY() {
+        
+            return fOrigin.y - fInsetAmount;
+        }
+
+        int lineContaining(TextOffset offset) {
+
+            return fFormatter.lineContaining(offset);
+        }
+
+        int lineRangeLow(int lineNumber) {
+
+            return fFormatter.lineRangeLow(lineNumber);
+        }
+
+        int lineRangeLimit(int lineNumber) {
+
+            return fFormatter.lineRangeLimit(lineNumber);
+        }
+
+        void stopBackgroundFormatting() {
+
+            fFormatter.stopBackgroundFormatting();
+        }
+
+        Rectangle getBoundingRect(TextOffset offset1, TextOffset offset2) {
+
+            Rectangle r = fFormatter.getBoundingRect(offset1, offset2, fOrigin, MFormatter.TIGHT);
+            //r.width += CARET_SLOP;
+            //System.out.println("offset1="+offset1+"; offset2="+offset2);
+            //System.out.println("bounds width="+r.width+"; host width="+(fHost.getBounds().width));
+            return r;
+        }
+
+        TextOffset findNewInsertionOffset(TextOffset result,
+                                          TextOffset initialOffset,
+                                          TextOffset previousOffset,
+                                          short direction) {
+
+            return fFormatter.findNewInsertionOffset(
+                        result, initialOffset, previousOffset, direction);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextEditBehavior.java b/src/com/ibm/richtext/textpanel/TextEditBehavior.java
new file mode 100644
index 0000000..630589c
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextEditBehavior.java
@@ -0,0 +1,481 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Rectangle;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.textformat.TextOffset;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+// All changes to the text should happen in this class, or in
+// its TypingInteractor.
+
+class TextEditBehavior extends Behavior {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private MText fText;
+    private SimpleCommandLog fCommandLog;
+    private PanelEventBroadcaster fListener;
+    private TypingInteractor fTypingInteractor = null;
+    private KeyRemap fRemap;
+    
+    private AttributeMap fSavedTypingStyle = null;
+    private int fSavedInsPt = 0;
+    
+    public TextEditBehavior(TextComponent textComponent,
+                            TextSelection selection,
+                            PanelEventBroadcaster listener,
+                            KeyRemap remap) {
+
+        fTextComponent = textComponent;
+        fSelection = selection;
+        fText = textComponent.getModifiableText();
+        fCommandLog = new SimpleCommandLog(listener);
+        fListener = listener;
+        fRemap = remap;
+    }
+
+    public KeyRemap getKeyRemap() {
+
+        return fRemap;
+    }
+
+    public void setKeyRemap(KeyRemap remap) {
+
+        fRemap = remap;
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean handled = true;
+        
+        if (event == Behavior.CHARACTER_STYLE_MOD ||
+            event == Behavior.PARAGRAPH_STYLE_MOD) {
+            doStyleChange(event, what);
+        }
+        else if (event == Behavior.CUT) {
+            doCut();
+        }
+        else if (event == Behavior.PASTE) {
+            doPaste();
+        }
+        else if (event == Behavior.CLEAR) {
+            doClear();
+        }
+        else if (event == Behavior.REPLACE) {
+            doUndoableReplace((TextReplacement) what);
+        }
+        else if (event == Behavior.UNDO) {
+            fCommandLog.undo();
+        }
+        else if (event == Behavior.REDO) {
+            fCommandLog.redo();
+        }
+        else if (event == Behavior.SET_MODIFIED) {
+            fCommandLog.setModified(what == Boolean.TRUE);
+        }
+        else if (event == Behavior.CLEAR_COMMAND_LOG) {
+            fCommandLog.clearLog();
+        }
+        else if (event == Behavior.SET_COMMAND_LOG_SIZE) {
+            fCommandLog.setLogSize(((Integer)what).intValue());
+        }
+        else {
+            handled = super.textControlEventOccurred(event, what);
+        }
+
+        checkSavedTypingStyle();
+        
+        return handled;
+    }
+
+    /**
+     * It's unfortunate that the text is modified and reformatted in
+     * three different methods.  This method is the "common prologue"
+     * for all text modifications.
+     *
+     * This method should be called before modifying and reformatting
+     * the text.  It does three things:  stops caret blinking, stops
+     * background formatting, and returns the Rectangle containing the
+     * current (soon-to-be obsolete) selection.
+     */
+    private Rectangle prepareForTextEdit() {
+
+        fSelection.stopCaretBlinking();
+        fTextComponent.stopBackgroundFormatting();
+        return fTextComponent.getBoundingRect(fSelection.getStart(), fSelection.getEnd());
+    }
+
+    private void doClear() {
+        TextRange selRange = fSelection.getSelectionRange();
+
+        if (selRange.start == selRange.limit)
+            return;
+
+        doUndoableTextChange(selRange.start, selRange.limit, null, new TextOffset(selRange.
+                            start), new TextOffset(selRange.start));
+    }
+
+    private void doCut() {
+        TextRange selRange = fSelection.getSelectionRange();
+
+        if (selRange.start == selRange.limit)
+            return;
+
+        fTextComponent.getClipboard().setContents(fText.extract(selRange.start, selRange.limit));
+        doUndoableTextChange(selRange.start, selRange.limit, null, new TextOffset(selRange.start), new TextOffset(selRange.start));
+
+        fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+    }
+
+    private void doPaste() {
+        TextRange selRange = fSelection.getSelectionRange();
+        MConstText clipText = fTextComponent.getClipboard().getContents(AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        if (clipText != null) {
+            doUndoableTextChange(selRange.start, selRange.limit, clipText,
+                                new TextOffset(selRange.start + clipText.length()),
+                                new TextOffset(selRange.start + clipText.length()));
+        }
+        else {
+            fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+        }
+    }
+
+    private void doUndoableReplace(TextReplacement replacement) {
+
+        doUndoableTextChange(replacement.getStart(),
+                             replacement.getLimit(),
+                             replacement.getText(),
+                             replacement.getSelectionStart(),
+                             replacement.getSelectionLimit());
+    }
+
+    /**
+     * Only TypingInteractor and TextCommand should call this!
+     */
+    void doReplaceText(int start,
+                       int limit,
+                       MConstText newText,
+                       TextOffset newSelStart,
+                       TextOffset newSelEnd) {
+
+        int textLength;
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        if (newText == null) {
+            textLength = 0;
+            fText.remove(start, limit);
+        }
+        else {
+            textLength = newText.length();
+            fText.replace(start, limit, newText, 0, textLength);
+        }
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(fSelection.getStart(),
+                            fSelection.getEnd(),
+                            oldSelRect);
+    }
+
+    /**
+     * Only the typing interactor should call this!
+     */
+    void doReplaceSelectedText(char ch, AttributeMap charStyle) {
+
+        int start = fSelection.getStart().fOffset;
+        int limit = fSelection.getEnd().fOffset;
+        TextOffset newOffset = new TextOffset(start + 1);
+        doReplaceText(start, limit, ch, charStyle, newOffset, newOffset);
+    }
+
+    private void doReplaceText(int start,
+                               int limit,
+                               char ch,
+                               AttributeMap charStyle,
+                               TextOffset newSelStart,
+                               TextOffset newSelEnd) {
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        fText.replace(start, limit, ch, charStyle);
+
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(fSelection.getStart(),
+                            fSelection.getEnd(),
+                            oldSelRect);
+    }
+
+    private void doStyleChange(Behavior.EventType event, Object what) {
+
+        TextRange selRange = fSelection.getSelectionRange();
+        boolean character = (event == Behavior.CHARACTER_STYLE_MOD);
+
+        if (selRange.start != selRange.limit || !character) {
+            doUndoableStyleChange(what, character);
+        }
+        else {
+            TypingInteractor interactor =
+                new TypingInteractor(fTextComponent, 
+                                     fSelection,
+                                     fSavedTypingStyle,
+                                     this,
+                                     fCommandLog,
+                                     fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.textControlEventOccurred(event, what);
+        }
+    }
+
+    /**
+     * Only text commands should call this method!
+     */
+    void doModifyStyles(int start,
+                        int limit,
+                        StyleModifier modifier,
+                        boolean character,
+                        TextOffset newSelStart,
+                        TextOffset newSelEnd) {
+
+        fText.resetDamagedRange();
+
+        Rectangle oldSelRect = prepareForTextEdit();
+
+        if (character) {
+            fText.modifyCharacterStyles(start, limit, modifier);
+        }
+        else {
+            fText.modifyParagraphStyles(start, limit, modifier);
+        }
+
+        fSelection.setSelectionRange(newSelStart, newSelEnd, newSelStart);
+        reformatAndDrawText(newSelStart,
+                            newSelEnd,
+                            oldSelRect);
+    }
+
+    private void doUndoableStyleChange(Object what,
+                                       boolean character) {
+
+        TextOffset selStart = fSelection.getStart();
+        TextOffset selEnd = fSelection.getEnd();
+
+        MText oldText = fText.extractWritable(selStart.fOffset, selEnd.fOffset);
+        StyleChangeCommand command = new StyleChangeCommand(
+                this, oldText, selStart, selEnd, (StyleModifier) what, character);
+
+        fCommandLog.addAndDo(command);
+
+        fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+    }
+
+    private void doUndoableTextChange(int start,
+                                      int limit,
+                                      MConstText newText,
+                                      TextOffset newSelStart,
+                                      TextOffset newSelEnd) {
+
+        TextChangeCommand command = new TextChangeCommand(this, fText.extractWritable(start, limit),
+                                newText, start, fSelection.getStart(), fSelection.getEnd(),
+                                newSelStart, newSelEnd);
+
+        fCommandLog.addAndDo(command);
+    }
+
+    public boolean canUndo() {
+
+        boolean canUndo = false;
+
+        if (fTypingInteractor != null) {
+            canUndo = fTypingInteractor.hasPendingCommand();
+        }
+
+        if (!canUndo) {
+            canUndo = fCommandLog.canUndo();
+        }
+
+        return canUndo;
+    }
+
+    public boolean canRedo() {
+
+        return fCommandLog.canRedo();
+    }
+
+    public boolean isModified() {
+
+        if (fTypingInteractor != null) {
+            if (fTypingInteractor.hasPendingCommand()) {
+                return true;
+            }
+        }
+        return fCommandLog.isModified();
+    }
+
+    public int getCommandLogSize() {
+
+        return fCommandLog.getLogSize();
+    }
+
+    public AttributeMap getInsertionPointStyle() {
+
+        if (fTypingInteractor != null) {
+            return fTypingInteractor.getTypingStyle();
+        }
+
+        if (fSavedTypingStyle != null) {
+            return fSavedTypingStyle;
+        }
+        
+        TextRange range = fSelection.getSelectionRange();
+        return typingStyleAt(fText, range.start, range.limit);
+    }
+    
+    public boolean keyPressed(KeyEvent e) {
+
+        boolean handled = true;
+        if (TypingInteractor.handledByTypingInteractor(e)) {
+            TypingInteractor interactor = new TypingInteractor(fTextComponent,
+                                                               fSelection,
+                                                               fSavedTypingStyle,
+                                                               this,
+                                                               fCommandLog,
+                                                               fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.keyPressed(e);
+        }
+        else {
+            handled = super.keyPressed(e);
+            checkSavedTypingStyle();
+        }
+        
+        return handled;
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+        
+        boolean handled = true;
+        if (TypingInteractor.handledByTypingInteractor(e)) {
+            TypingInteractor interactor = new TypingInteractor(fTextComponent, 
+                                                               fSelection,
+                                                               fSavedTypingStyle,
+                                                               this,
+                                                               fCommandLog,
+                                                               fListener);
+
+            interactor.addToOwner(fTextComponent);
+            interactor.keyTyped(e);
+        }
+        else {
+            handled = super.keyTyped(e);
+            checkSavedTypingStyle();
+        }
+        
+        return handled;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+        
+        boolean result = super.mouseReleased(e);
+        checkSavedTypingStyle();
+        return result;
+    }
+    
+    private void reformatAndDrawText(TextOffset selStart,
+                                     TextOffset selLimit,
+                                     Rectangle oldSelRect)
+    {
+        if (!fSelection.enabled()) {
+            selStart = selLimit = null;
+        }
+
+        int reformatStart = fText.damagedRangeStart();
+        int reformatLength = fText.damagedRangeLimit() - reformatStart;
+
+        if (reformatStart != Integer.MAX_VALUE) {
+            fTextComponent.reformatAndDrawText(reformatStart,
+                                               reformatLength,
+                                               selStart,
+                                               selLimit,
+                                               oldSelRect,
+                                               fSelection.getHighlightColor());
+        }
+
+        fSelection.scrollToShowSelection();
+        
+        // sometimes this should send SELECTION_STYLES_CHANGED
+        fListener.textStateChanged(TextPanelEvent.TEXT_CHANGED);
+
+        fSelection.restartCaretBlinking(true);
+    }
+
+    /**
+     * Only TypingInteractor should call this.
+     */
+    void setTypingInteractor(TypingInteractor interactor) {
+        fTypingInteractor = interactor;
+    }
+
+    /**
+     * Only TypingInteractor should call this.
+     */
+    void setSavedTypingStyle(AttributeMap style, int insPt) {
+    
+        fSavedTypingStyle = style;
+        fSavedInsPt = insPt;
+    }
+    
+    private void checkSavedTypingStyle() {
+    
+        if (fSavedTypingStyle != null) {
+            int selStart = fSelection.getStart().fOffset;
+            int selLimit = fSelection.getEnd().fOffset;
+            if (selStart != fSavedInsPt || selStart != selLimit) {
+                fSavedTypingStyle = null;
+            }
+        }            
+    }
+    
+    /**
+     * Return the style appropriate for typing on the given selection
+     * range.
+     */
+    public static AttributeMap typingStyleAt(MConstText text, int start, int limit) {
+
+        if (start < limit) {
+            return text.characterStyleAt(start);
+        }
+        else if (start > 0) {
+            return text.characterStyleAt(start - 1);
+        }
+        else {
+            return text.characterStyleAt(0);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanel.java b/src/com/ibm/richtext/textpanel/TextPanel.java
new file mode 100644
index 0000000..4ca4299
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanel.java
@@ -0,0 +1,543 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Graphics;
+import java.awt.Panel;
+import java.awt.Scrollbar;
+
+import java.awt.datatransfer.Clipboard;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * TextPanel is an implementation of MTextPanel in an AWT Panel.
+ * @see MTextPanel
+ */
+public final class TextPanel extends Panel implements MTextPanel {
+
+    private static final long serialVersionUID = -8134791570789588104L;
+
+    private ATextPanelImpl fImpl;
+    
+    /**
+     * Return a TextPanelSettings instance with all settings set
+     * to the default values.  Clients can modify this object;
+     * modifications will not affect the default values.
+     * @return a TextPanelSettings instance set to default values
+     * @see TextPanelSettings
+     */
+    public static TextPanelSettings getDefaultSettings() {
+
+        return ATextPanelImpl.getDefaultSettings();
+    }
+
+    /**
+     * Create a new TextPanel with the default settings.
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     */
+    public TextPanel(MConstText initialText,
+                     Clipboard clipboard) {
+
+        this(ATextPanelImpl.fgDefaultSettings, initialText, clipboard);
+    }
+
+    /**
+     * Create a new TextPanel.
+     * @param settings the settings for this TextPanel
+     * @param initialText the text document.  If null document text is empty.
+     * @param clipboard the clipboard to use for cut, copy, and paste
+     *  operations.  If null this panel will use a private clipboard.
+     * @see TextPanelSettings
+     */
+    public TextPanel(TextPanelSettings settings,
+                     MConstText initialText,
+                     Clipboard clipboard) {
+
+        Scrollbar horzSb = null;
+        Scrollbar vertSb = null;
+        
+        if (settings.getScrollable()) {
+
+            setLayout(new ScrollBarLayout());
+
+            boolean scrollBarsVisible = settings.getScrollBarsVisible();
+
+            if (scrollBarsVisible) {
+                horzSb = new Scrollbar(Scrollbar.HORIZONTAL);
+                vertSb = new Scrollbar(Scrollbar.VERTICAL);
+                add("South", horzSb);
+                add("East", vertSb);
+            }
+        }
+        else {
+            setLayout(new BorderLayout());
+        }
+
+        fImpl = new ATextPanelImpl(new RunStrategy(),
+                                   settings,
+                                   initialText,
+                                   clipboard,
+                                   this,
+                                   horzSb,
+                                   vertSb);
+                                   
+        final FakeComponent textComponent = fImpl.getTextComponent();
+        
+        Component textHost = new Component() {
+            {
+                textComponent.setHost(this);
+            }
+            public void addNotify() {
+                super.addNotify();
+                textComponent.addNotify();
+            }
+            public void paint(Graphics g) {
+                textComponent.paint(g);
+            }
+            private static final long serialVersionUID = 1L;
+        };
+        
+        add("Center", textHost);
+
+        textHost.requestFocus();
+    }
+
+    /**
+     * Add the given TextPanelListener to the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to add
+     */
+    public void addListener(TextPanelListener listener) {
+
+        fImpl.addListener(listener);
+    }
+
+    /**
+     * Remove the given TextPanelListener from the listeners which will
+     * receive update notifications from this TextPanel.
+     * @param listener the listener to remove
+     */
+    public void removeListener(TextPanelListener listener) {
+
+        fImpl.removeListener(listener);
+    }
+
+//============
+// Text Access
+//============
+
+    /**
+     * Set the document to <tt>newText</tt>.  This operation
+     * modifies the text in the TextPanel.  It does not modify or adopt
+     * <tt>newText</tt>.  This method sets the selection an insertion point at
+     * the end of the text.
+     * @param newText the text which will replace the current text.
+     */
+    public void setText(MConstText newText) {
+
+        fImpl.setText(newText);
+    }
+
+    /**
+     * Append the given text to the end of the document.  Equivalent to
+     * <tt>insert(newText, getTextLength())</tt>.
+     * @param newText the text to append to the document
+     */
+    public void append(MConstText newText) {
+
+        fImpl.append(newText);
+    }
+
+    /**
+     * Insert the given text into the document at the given position.
+     * Equivalent to
+     * <tt>replaceRange(newText, position, position)</tt>.
+     * @param newText the text to insert into the document.
+     * @param position the position in the document where the
+     *     text will be inserted
+     */
+    public void insert(MConstText newText, int position) {
+
+        fImpl.insert(newText, position);
+    }
+
+    /**
+     * Replace the given range with <tt>newText</tt>.  After this
+     * operation the selection range is an insertion point at the
+     * end of the new text.
+     * @param newText the text with which to replace the range
+     * @param start the beginning of the range to replace
+     * @param end the end of the range to replace
+     */
+    public void replaceRange(MConstText newText, int start, int end) {
+
+        fImpl.replaceRange(newText, start, end);
+    }
+
+    /**
+     * Return the length of the text document in the TextPanel.
+     * @return the length of the text document in the TextPanel
+     */
+    public int getTextLength() {
+
+        return fImpl.getTextLength();
+    }
+
+    /**
+     * Return the text document in the TextPanel.
+     * @return the text document in the TextPanel.
+     */
+    public MConstText getText() {
+
+        return fImpl.getText();
+    }
+
+//============
+// Selection Access
+//============
+
+    /**
+     * Return the offset of the start of the selection.
+     */
+    public int getSelectionStart() {
+
+        return fImpl.getSelectionStart();
+    }
+
+    /**
+     * Return the offset of the end of the selection.
+     */
+    public int getSelectionEnd() {
+
+        return fImpl.getSelectionEnd();
+    }
+
+    /**
+     * Set the beginning of the selection range.  This is
+     * equivalent to <tt>select(selectionStart, getSelectionEnd())</tt>.
+     * @param selectionStart the start of the new selection range
+     */
+    public void setSelectionStart(int selectionStart) {
+
+        fImpl.setSelectionStart(selectionStart);
+    }
+
+    /**
+     * Set the end of the selection range.  This is
+     * equivalent to <tt>select(getSelectionStart(), selectionEnd)</tt>.
+     * @param selectionEnd the end of the new selection range
+     */
+    public void setSelectionEnd(int selectionEnd) {
+
+        fImpl.setSelectionEnd(selectionEnd);
+    }
+
+    /**
+     * Set the selection range to an insertion point at the given
+     * offset.  This is equivalent to
+     * <tt>select(position, position)</tt>.
+     * @param position the offset of the new insertion point
+     */
+    public void setCaretPosition(int position) {
+
+        fImpl.setCaretPosition(position);
+    }
+
+    /**
+     * Set the selection range to the given range.  The range start
+     * is pinned between 0 and the text length;  the range end is pinned
+     * between the range start and the end of the text.  These semantics
+     * are identical to those of <tt>java.awt.TextComponent</tt>.
+     * This method has no effect if the text is not selectable.
+     * @param selectionStart the beginning of the selection range
+     * @param selectionEnd the end of the selection range
+     */
+    public void select(int selectionStart, int selectionEnd) {
+
+        fImpl.select(selectionStart, selectionEnd);
+    }
+
+    /**
+     * Select all of the text in the document.  This method has no effect if
+     * the text is not selectable.
+     */
+    public void selectAll() {
+
+        fImpl.selectAll();
+    }
+
+
+//============
+// Format Width
+//============
+
+    /**
+     * Return the total format width, in pixels.  The format width is the
+     * width to which text is wrapped.
+     * @return the format width
+     */
+    public int getFormatWidth() {
+
+        return fImpl.getFormatWidth();
+    }
+    
+    /**
+     * Return true if the paragraph at the given offset is left-to-right.
+     * @param offset an offset in the text
+     * @return true if the paragraph at the given offset is left-to-right
+     */
+    public boolean paragraphIsLeftToRight(int offset) {
+        
+        return fImpl.paragraphIsLeftToRight(offset);
+    }
+
+    /**
+     * Return true if there is a change which can be undone.
+     * @return true if there is a change which can be undone.
+     */
+    public boolean canUndo() {
+
+        return fImpl.canUndo();
+    }
+
+    /**
+     * Return true if there is a change which can be redone.
+     * @return true if there is a change which can be redone.
+     */
+    public boolean canRedo() {
+
+        return fImpl.canRedo();
+    }
+
+    /**
+     * Return true if the clipboard contains contents which could be
+     * transfered into the text.
+     * @return true if the clipboard has text content.
+     */
+    public boolean clipboardNotEmpty() {
+
+        return fImpl.clipboardNotEmpty();
+    }
+
+    /**
+     * Return an AttributeMap of keys with default values.  The default
+     * values are used when displaying text for values which are not
+     * specified in the text.
+     * @return an AttributeMap of default key-value pairs
+     */
+    public AttributeMap getDefaultValues() {
+
+        return fImpl.getDefaultValues();
+    }
+
+    /**
+     * This method inspects the character style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have different 
+     * values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getCharacterStyleOverSelection(Object key) {
+        
+        return fImpl.getCharacterStyleOverSelection(key);
+    }
+
+    /**
+     * This method inspects the paragraph style runs in the selection
+     * range (or the typing style at the insertion point).  It returns:
+     * <ul>
+     * <li>The value of <tt>key</tt>, if the value of <tt>key</tt>
+     * is the same in all of the style runs in the selection, or</li>
+     * <li><tt>MULTIPLE_VALUES</tt>, if two or more style runs have 
+     * different values for <tt>key</tt>.</li>
+     * </ul>
+     * If a style run does not contain <tt>key</tt>,
+     * its value is considered to be the default style for <tt>key</tt>,
+     * as defined by the default values AttributeMap.  Note that if
+     * <tt>key</tt> does not have a default value this method may return
+     * null.
+     * This method is useful for configuring style menus.
+     * @param key the key used to retrieve values for comparison
+     * @see MTextPanel#MULTIPLE_VALUES
+     */
+    public Object getParagraphStyleOverSelection(Object key) {
+        
+        return fImpl.getParagraphStyleOverSelection(key);
+    }
+
+    /**
+     * Remove the selected text from the document and place it
+     * on the clipboard.  This method has no effect if the text
+     * is not editable, or if no text is selected.
+     */
+    public void cut() {
+        fImpl.cut();
+    }
+
+    /**
+     * Place the selected text on the clipboard.  This method has
+     * no effect if no text is selected.
+     */
+    public void copy() {
+        fImpl.copy();
+    }
+
+    /**
+     * Replace the currently selected text with the text on the clipboard.
+     * This method has no effect if the text is not editable, or if no
+     * text is on the clipboard.
+     */
+    public void paste() {
+        fImpl.paste();
+    }
+
+    /**
+     * Remove selected text from the document, without altering the clipboard.
+     * This method has no effect if the
+     * text is not editable.
+     */
+    public void clear() {
+        fImpl.clear();
+    }
+
+    /**
+     * Undo the most recent text change.  This method has no effect if
+     * there is no change to undo.
+     */
+    public void undo() {
+        fImpl.undo();
+    }
+
+    /**
+     * Redo the most recent text change.  This method has no effect if
+     * there is no change to redo.
+     */
+    public void redo() {
+        fImpl.redo();
+    }
+
+    /**
+     * Return the number of commands the command log can hold.
+     * @return the number of commands the command log can hold
+     */
+    public int getCommandLogSize() {
+
+        return fImpl.getCommandLogSize();
+    }
+
+    /**
+     * Set the number of commands the command log can hold.  All
+     * redoable commands are removed when this method is called.
+     * @param size the number of commands kept in the command log
+     */
+    public void setCommandLogSize(int size) {
+        fImpl.setCommandLogSize(size);
+    }
+
+    /**
+     * Remove all commands from the command log.
+     */
+    public void clearCommandLog() {
+        fImpl.clearCommandLog();
+    }
+
+    /**
+     * Modify the character styles on the selected characters.  If no characters
+     * are selected, modify the typing style.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyCharacterStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyCharacterStyleOnSelection(modifier);
+    }
+
+    /**
+     * Modify the paragraph styles in paragraphs containing selected characters, or
+     * the paragraph containing the insertion point.
+     * @param modifier the StyleModifier with which to modify the styles
+     */
+    public void modifyParagraphStyleOnSelection(StyleModifier modifier) {
+        fImpl.modifyParagraphStyleOnSelection(modifier);
+    }
+
+    /**
+     * Return the KeyRemap used to process key events.
+     * @return the key remap used to process key events
+     * @see #setKeyRemap
+     */
+    public KeyRemap getKeyRemap() {
+
+        return fImpl.getKeyRemap();
+    }
+
+    /**
+     * Use the given KeyRemap to map key events to characters.
+     * Only key
+     * events are affected by the remap;  other text entering the
+     * control (via the clipboard, for example) is not affected
+     * by the KeyRemap.
+     * <p>
+     * Do not pass <tt>null</tt> to this method to leave key
+     * events unmapped.  Instead, use <tt>KeyRemap.getIdentityRemap()</tt>
+     * @param remap the KeyRemap to use for mapping key events to characters
+     * @exception java.lang.NullPointerException if parameter is null
+     * @see KeyRemap
+     */
+    public void setKeyRemap(KeyRemap remap) {
+
+        fImpl.setKeyRemap(remap);
+    }
+
+    /**
+     * Return the modification flag of the current text change.
+     * @see #setModified
+     */
+    public boolean isModified() {
+
+        return fImpl.isModified();
+    }
+
+    /**
+     * Set the modification flag of the current text change.
+     */
+    public void setModified(boolean modified) {
+        
+        fImpl.setModified(modified);
+    }
+
+    /**
+     * This method is for KeyEventForwarder's use only!
+     */
+    ATextPanelImpl getImpl() {
+        
+        return fImpl;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelEvent.java b/src/com/ibm/richtext/textpanel/TextPanelEvent.java
new file mode 100644
index 0000000..da63a74
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelEvent.java
@@ -0,0 +1,157 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.util.EventObject;
+
+/**
+ * TextPanelEvent is generated by an MTextPanel to notify listeners
+ * of changes.  To receive TextPanelEvents from an MTextPanel, clients
+ * must implement TextPanelListener and add themselves to the MTextPanel's
+ * list of listeners.
+ * <p>
+ * Some event types are special cases of others.  This is intentional - it
+ * allows notifications to be sent less often in certain common cases.  For
+ * example, a change in the selection range generates a SELECTION_RANGE_CHANGED 
+ * event.  This is a very common occurrance, and if many clients listen for this
+ * event, there may be a significant performance penalty.  By
+ * listening for a more specialized event (such as SELECTION_EMPTY_CHANGED), clients
+ * can reduce the number of notifications sent.
+ * 
+ * @see MTextPanel
+ * @see TextPanelListener
+ */
+public final class TextPanelEvent extends EventObject {
+
+    /**
+     * For serialization
+     */
+    private static final long serialVersionUID = 6971512969738427763L;
+
+    /**
+     * The lower bound of TextPanelEvent ID's.
+     */
+    public static final int TEXT_PANEL_FIRST = 11;
+
+    /**
+     * Events of this type indicate a change in the selection range.
+     * This occurs quite often.  Most clients do not need to be 
+     * notified every time the selection range changes.
+     */
+    public static final int SELECTION_RANGE_CHANGED = 11;
+    
+    /**
+     * Events of this type are sent when the selection range becomes
+     * 0-length after not being 0-length, or vice versa.  This event
+     * is a special case of SELECTION_RANGE_CHANGED.
+     */
+    public static final int SELECTION_EMPTY_CHANGED = 12;
+    
+    /**
+     * Events of this type indicate that the text in the TextPanel changed.
+     * This type of event occurs often.
+     */
+    public static final int TEXT_CHANGED = 13;
+    
+    /**
+     * Events of this type are sent when the styles in the current
+     * selection change.
+     */
+    public static final int SELECTION_STYLES_CHANGED = 14;
+     
+    /**
+     * Events of this type are sent when the undo/redo state changes.
+     */
+    public static final int UNDO_STATE_CHANGED = 15;
+    
+    /**
+     * Events of this type are sent when the clipboard state changes.
+     */
+    public static final int CLIPBOARD_CHANGED = 16;
+    
+    /**
+     * Events of this type are sent when 
+     * the wrap width of the text changes.
+     */
+    public static final int FORMAT_WIDTH_CHANGED = 17;
+
+    /**
+     * Events of this type are sent when the key remap changes.
+     */
+    public static final int KEYREMAP_CHANGED = 18;
+
+    /**
+     * The upper bound of TextPanelEvent ID's.
+     */
+    public static final int TEXT_PANEL_LAST = 18;
+
+    private int fId;
+
+    /**
+     * Create a new TextPanelEvent.
+     * @param source the MTextPanel which generated the event
+     * @param id the ID for this event.  Must be within
+     * [TEXT_PANEL_FIRST, TEXT_PANEL_LAST].
+     */
+    TextPanelEvent(MTextPanel source, int id) {
+
+        super(source);
+        if (id < TEXT_PANEL_FIRST || id > TEXT_PANEL_LAST) {
+            throw new IllegalArgumentException("id out of range");
+        }
+        fId = id;
+    }
+
+    /**
+     * Return the event ID for this event.  Event ID's are
+     * one of the class constants.
+     * @return the event ID for this event
+     */
+    public int getID() {
+
+        return fId;
+    }
+    
+    public String toString() {
+        
+        String desc = null;
+        
+        switch(fId) {
+            case SELECTION_RANGE_CHANGED:
+                desc = "SELECTION_RANGE_CHANGED";
+                break;
+            case SELECTION_EMPTY_CHANGED:
+                desc = "SELECTION_EMPTY_CHANGED";
+                break;
+            case TEXT_CHANGED:
+                desc = "TEXT_CHANGED";
+                break;
+            case SELECTION_STYLES_CHANGED:
+                desc = "SELECTION_STYLES_CHANGED";
+                break;
+            case UNDO_STATE_CHANGED:
+                desc = "UNDO_STATE_CHANGED";
+                break;
+            case CLIPBOARD_CHANGED:
+                desc = "CLIPBOARD_CHANGED";
+                break;
+            case FORMAT_WIDTH_CHANGED:
+                desc = "FORMAT_WIDTH_CHANGED";
+                break;
+            case KEYREMAP_CHANGED:
+                desc = "KEYREMAP_CHANGED";
+                break;
+        }
+        return "[TextPanelEvent:"+desc+"]";
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelListener.java b/src/com/ibm/richtext/textpanel/TextPanelListener.java
new file mode 100644
index 0000000..d4c9d41
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelListener.java
@@ -0,0 +1,40 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/**
+ * This interface is implemented by classes which
+ * receive change notifications from an MTextPanel.
+ * @see MTextPanel
+ * @see TextPanelEvent
+ */
+public interface TextPanelListener {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /**
+     * Notify listener of an MTextPanel change.
+     * @param event a TextPanelEvent indicating what happened
+     */
+    public void textEventOccurred(TextPanelEvent event);
+    
+    /**
+     * Return true if listener needs to be notified of 
+     * the given event type.  This allows a text panel to avoid
+     * sending events to uninterested parties.
+     * @param type an event ID from TextPanelEvent
+     * @return true if this listener needs to be notified of
+     * events of the given type
+     */
+    public boolean respondsToEventType(int type);
+}
diff --git a/src/com/ibm/richtext/textpanel/TextPanelSettings.java b/src/com/ibm/richtext/textpanel/TextPanelSettings.java
new file mode 100644
index 0000000..34eb2a3
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextPanelSettings.java
@@ -0,0 +1,284 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2005.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.Color;
+import java.io.Serializable;
+import java.util.Hashtable;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+
+/**
+ * This class contains settings used when constructing an MTextPanel.
+ * The settings controled by this class include:
+ * <ul>
+ * <li>whether the text in the MTextPanel can be scrolled</li>
+ * <li>whether scroll bars in the MTextPanel are visible</li>
+ * <li>whether the text in the MTextPanel can be selected</li>
+ * <li>whether the text in the MTextPanel can be edited</li>
+ * <li>whether lines of text wrap to the MTextPanel's width, or
+ * only end at paragraph separators</li>
+ * <li>the default values for unspecified styles</li>
+ * </ul>
+ * Some settings are dependent on others.  Scroll bars are visible
+ * only if the text is scrollable.  Also, text which is not editable
+ * if it is not selectable.
+ * <p>
+ *
+ * @see MTextPanel
+ */
+public final class TextPanelSettings implements Cloneable, Serializable {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    static final long serialVersionUID = -4089186663018707478L;
+    
+    private static final AttributeMap DEFAULTS;
+    
+    static {
+        final Float floatZero = new Float(0.0f);
+
+        Hashtable defaults = new Hashtable();
+        defaults.put(TextAttribute.FAMILY, "Serif");
+        defaults.put(TextAttribute.WEIGHT, new Float(1.0f));
+        defaults.put(TextAttribute.POSTURE, floatZero);
+        defaults.put(TextAttribute.SIZE, new Float(18.0f));
+        defaults.put(TextAttribute.SUPERSCRIPT, new Integer(0));
+        defaults.put(TextAttribute.FOREGROUND, Color.black);
+        defaults.put(TextAttribute.UNDERLINE, new Integer(-1));
+        defaults.put(TextAttribute.STRIKETHROUGH, Boolean.FALSE);
+
+        defaults.put(TextAttribute.EXTRA_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.FIRST_LINE_INDENT, floatZero);
+        defaults.put(TextAttribute.MIN_LINE_SPACING, floatZero);
+        defaults.put(TextAttribute.LINE_FLUSH, TextAttribute.FLUSH_LEADING);
+        defaults.put(TextAttribute.LEADING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TRAILING_MARGIN, floatZero);
+        defaults.put(TextAttribute.TAB_RULER, new StandardTabRuler());
+
+        DEFAULTS = new AttributeMap(defaults);
+    }
+    
+    private boolean fScrollable = true;
+    private boolean fScrollBarsVisible = true;
+    private boolean fSelectable = true;
+    private boolean fEditable = true;
+    private boolean fWraps = true;
+    private AttributeMap fDefaultValues = DEFAULTS;
+    
+    /**
+     * Create a TextPanelSettings instance with all settings
+     * set to true.
+     */
+    public TextPanelSettings() {
+    }
+
+    /**
+     * Return a new TextPanelSettings instance with the
+     * same settings as this.
+     * @return a new TextPanelSettings instance
+     */
+    public Object clone() {
+
+        TextPanelSettings rhs = new TextPanelSettings();
+
+        rhs.fScrollable = fScrollable;
+        rhs.fScrollBarsVisible = fScrollBarsVisible;
+        rhs.fSelectable = fSelectable;
+        rhs.fEditable = fEditable;
+        rhs.fWraps = fWraps;
+        rhs.fDefaultValues = fDefaultValues;
+        
+        return rhs;
+    }
+
+    /**
+     * Return the scrollable setting, which determines whether text
+     * in an MTextPanel can be scrolled.
+     * @return the scrollable setting
+     */
+    public boolean getScrollable() {
+
+        return fScrollable;
+    }
+
+    /**
+     * Set the scrollable setting.
+     * @param scrollable the scrollable setting.  If false,
+     * the scrollBarsVisible setting is also set to false.
+     */
+    public void setScrollable(boolean scrollable) {
+
+        fScrollable = scrollable;
+        fScrollBarsVisible &= scrollable;
+    }
+
+    /**
+     * Return the scrollBarsVisible setting, which determines whether
+     * scroll bars in an MTextPanel are visible.
+     * @return the scrollBarsVisible setting
+     */
+    public boolean getScrollBarsVisible() {
+
+        return fScrollBarsVisible;
+    }
+
+    /**
+     * Set the scrollBarsVisible setting.
+     * @param vis the scrollBarsVisible setting.  If true,
+     * the scrollable setting is also set to true.
+     */
+    public void setScrollBarsVisible(boolean vis) {
+
+        fScrollBarsVisible = vis;
+        fScrollable |= vis;
+    }
+
+    /**
+     * Return the selectable setting, which determines whether
+     * text in an MTextPanel can be selected.
+     * @return the selectable setting
+     */
+    public boolean getSelectable() {
+
+        return fSelectable;
+    }
+
+    /**
+     * Set the selectable setting.
+     * @param selectable the selectable setting.  If false,
+     * the editable setting is also set to false.
+     */
+    public void setSelectable(boolean selectable) {
+
+        fSelectable = selectable;
+        fEditable &= selectable;
+    }
+
+    /**
+     * Return the editable setting, which determines whether
+     * text in an MTextPanel can be edited.
+     * @return the editable setting
+     */
+    public boolean getEditable() {
+
+        return fEditable;
+    }
+
+    /**
+     * Set the editable setting.
+     * @param editable the editable setting.  If true,
+     * the selectable setting is also set to true.
+     */
+    public void setEditable(boolean editable) {
+
+        fEditable = editable;
+        fSelectable |= editable;
+    }
+
+    /**
+     * Return the wraps setting, which determines whether
+     * lines of text wrap to the length of the MTextPanel,
+     * or only at paragraph separators.
+     * @return the wraps setting
+     */
+    public boolean getWraps() {
+
+        return fWraps;
+    }
+
+    /**
+     * Set the wraps setting.
+     * @param wraps the wraps setting
+     */
+    public void setWraps(boolean wraps) {
+
+        fWraps = wraps;
+    }
+    
+    /**
+     * Return the AttributeMap of default values for certain keys.
+     * When a key in this AttributeMap is not specified, its value
+     * is taken from this AttributeMap.
+     * @return the AttributeMap of default values
+     * @see MTextPanel#getDefaultValues
+     */
+    public AttributeMap getDefaultValues() {
+    
+        return fDefaultValues;
+    }
+    
+    /**
+     * Add the key-value pairs in the given AttributeMap to the
+     * default values.  If a key does not appear in the given
+     * AttributeMap, its value in the default value map is
+     * unchanged.
+     * @param map an AttributeMap containing new default values
+     */
+    public void addDefaultValues(AttributeMap map) {
+    
+        fDefaultValues = fDefaultValues.addAttributes(map);
+    }
+    
+    /**
+     * Compare this to another Object.  This is equal
+     * to another Object if the other Object is a
+     * TextPanelSettings instance with the same
+     * settings as this one.
+     * @param rhs the Object to compare to
+     */
+    public boolean equals(Object rhs) {
+
+        if (rhs == this) {
+            return true;
+        }
+
+        if (rhs == null) {
+            return false;
+        }
+
+        TextPanelSettings other;
+        try {
+            other = (TextPanelSettings) rhs;
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+        
+        return other.fScrollable == this.fScrollable &&
+               other.fScrollBarsVisible == this.fScrollBarsVisible &&
+               other.fSelectable == this.fSelectable &&
+               other.fEditable == this.fEditable &&
+               other.fWraps == this.fWraps &&
+               other.fDefaultValues.equals(this.fDefaultValues);
+    }
+
+    /**
+     * Return the hash code for this Object.
+     * @return the hash code for this Object
+     */
+    public int hashCode() {
+
+        int code = fDefaultValues.hashCode();
+        code = code*2 + (fScrollable? 1:0);
+        code = code*2 + (fScrollBarsVisible? 1:0);
+        code = code*2 + (fSelectable? 1:0);
+        code = code*2 + (fEditable? 1:0);
+        code = code*2 + (fWraps? 1:0);
+
+        return code;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextRange.java b/src/com/ibm/richtext/textpanel/TextRange.java
new file mode 100644
index 0000000..c722e73
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextRange.java
@@ -0,0 +1,45 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+/**
+* A <TT>TextRange</TT> represents a range of text bounded by a
+* start (inclusive), and a limit (exclusive).  [start,limit)
+*/
+final class TextRange
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    /** the start of the range */
+    public int start = 0;
+    /** the end of the range */
+    public int limit = 0;
+
+    /**
+    * Create a text range from two ints.
+    * @param start the start of the run
+    * @param limit the end of the run
+    */
+    public TextRange(int start, int limit)
+    {
+        this.start = start;
+        this.limit = limit;
+    }
+
+    /**
+    * Create a text range of 0, 0.
+    */
+    public TextRange() {
+        this.start = this.limit = 0;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextReplacement.java b/src/com/ibm/richtext/textpanel/TextReplacement.java
new file mode 100644
index 0000000..7b5b794
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextReplacement.java
@@ -0,0 +1,68 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textformat.TextOffset;
+
+/**
+ * This class is used to pass a REPLACE command to Behaviors.
+ */
+final class TextReplacement {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private int fStart;
+    private int fLimit;
+    private MConstText fText;
+    private TextOffset fSelStart;
+    private TextOffset fSelLimit;
+
+    TextReplacement(int start,
+                    int limit,
+                    MConstText text,
+                    TextOffset selStart,
+                    TextOffset selLimit) {
+
+        fStart = start;
+        fLimit = limit;
+        fText = text;
+        fSelStart = selStart;
+        fSelLimit = selLimit;
+    }
+
+    int getStart() {
+
+        return fStart;
+    }
+
+    int getLimit() {
+
+        return fLimit;
+    }
+
+    MConstText getText() {
+
+        return fText;
+    }
+
+    TextOffset getSelectionStart() {
+
+        return fSelStart;
+    }
+
+    TextOffset getSelectionLimit() {
+
+        return fSelLimit;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TextSelection.java b/src/com/ibm/richtext/textpanel/TextSelection.java
new file mode 100644
index 0000000..40dee17
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TextSelection.java
@@ -0,0 +1,922 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2005.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+    7/1/97 - caret blinks
+
+    7/3/97 - fAnchor is no longer restricted to the start or end of the selection. {jbr}
+            Also, removed fVisible - it was identical to enabled().
+*/
+
+package com.ibm.richtext.textpanel;
+
+import java.awt.Graphics;
+import java.awt.Color;
+import java.awt.Rectangle;
+
+import java.text.BreakIterator;
+
+import java.awt.event.MouseEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.FocusEvent;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.textformat.TextOffset;
+
+import com.ibm.richtext.textformat.MFormatter;
+
+class TextSelection extends Behavior implements Runnable {
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    static final Color          HIGHLIGHTCOLOR = Color.pink;
+
+    private TextComponent       fTextComponent;
+    private MConstText          fText;
+    private TextOffset          fStart;
+    private TextOffset          fLimit;
+    private TextOffset          fAnchor;
+    private TextOffset          fUpDownAnchor = null;
+    private BreakIterator       fBoundaries = null;
+    private Color               fHighlightColor = HIGHLIGHTCOLOR;
+    private PanelEventBroadcaster   fListener;
+    private RunStrategy         fRunStrategy;
+    private boolean             fMouseDown = false;
+    private boolean             fHandlingKeyOrCommand = false;
+    
+    private boolean fCaretShouldBlink;
+    private boolean fCaretIsVisible;
+    private int fCaretCount;
+
+    // formerly in base class
+    private boolean fEnabled;
+
+    private MouseEvent fPendingMouseEvent = null;
+
+    private static final int kCaretInterval = 500;
+
+    public void run() {
+
+        final Runnable blinkCaret = new Runnable() {
+            public void run() {
+                fCaretIsVisible = !fCaretIsVisible;
+                Graphics g = fTextComponent.getGraphics();
+                if (g != null) {
+                    //System.out.println("caretIsVisible: " + fCaretIsVisible);
+                    drawSelection(g, fCaretIsVisible);
+                }
+                else {
+                    // Not sure what else to do:
+                    fCaretShouldBlink = false;
+                }
+            }
+        };
+        
+        // blink caret
+        while (true) {
+
+            synchronized(this) {
+
+                while (!fCaretShouldBlink) {
+                    try {
+                        wait();
+                    }
+                    catch(InterruptedException e) {
+                        System.out.println("Caught InterruptedException in caret thread.");
+                    }
+                }
+
+                ++fCaretCount;
+
+                if (fCaretCount % 2 == 0) {
+                    fRunStrategy.doIt(blinkCaret);
+                }
+            }
+
+            try {
+                Thread.sleep(kCaretInterval);
+            }
+            catch(InterruptedException e) {
+            }
+        }
+    }
+
+
+
+    public TextSelection(TextComponent textComponent,
+                         PanelEventBroadcaster listener,
+                         RunStrategy runStrategy) {
+                            
+        fTextComponent = textComponent;
+        fText = textComponent.getText();
+        fListener = listener;
+        fRunStrategy = runStrategy;
+        
+        fStart = new TextOffset();
+        fLimit = new TextOffset();
+        fAnchor = new TextOffset();
+        fMouseDown = false;
+
+        fCaretCount = 0;
+        fCaretIsVisible = true;
+        fCaretShouldBlink = false;
+        setEnabled(false);
+
+        Thread caretThread = new Thread(this);
+        caretThread.setDaemon(true);
+        caretThread.start();
+    }
+
+    boolean enabled() {
+
+        return fEnabled;
+    }
+
+    private void setEnabled(boolean enabled) {
+
+        fEnabled = enabled;
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        boolean result;
+        fHandlingKeyOrCommand = true;
+        
+        if (event == Behavior.SELECT) {
+            select((TextRange) what);
+            result = true;
+        }
+        else if (event == Behavior.COPY) {
+            fTextComponent.getClipboard().setContents(fText.extract(fStart.fOffset, fLimit.fOffset));
+            fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+            result = true;
+        }
+        else {
+            result = false;
+        }
+        
+        fHandlingKeyOrCommand = false;
+        return result;
+    }
+
+    protected void advanceToNextBoundary(TextOffset offset) {
+    
+        // If there's no boundaries object, or if position at the end of the
+        // document, return the offset unchanged
+        if (fBoundaries == null) {
+            return;
+        }
+        
+        int position = offset.fOffset;
+        
+        if (position >= fText.length()) {
+            return;
+        }
+
+        // If position is at a boundary and offset is before position,
+        // leave it unchanged.  Otherwise move to next boundary.
+        int nextPos = fBoundaries.following(position);
+        if (fBoundaries.previous() == position && 
+                offset.fPlacement==TextOffset.BEFORE_OFFSET) {
+            return;
+        }
+        
+        offset.setOffset(nextPos, TextOffset.AFTER_OFFSET);
+    }
+
+    protected void advanceToPreviousBoundary(TextOffset offset) {
+    
+        advanceToPreviousBoundary(offset, false);
+    }
+    
+    private void advanceToPreviousBoundary(TextOffset offset, boolean alwaysMove) {
+        // if there's no boundaries object, or if we're sitting at the beginning
+        // of the document, return the offset unchanged
+        if (fBoundaries == null) {
+            return;
+        }
+        
+        int position = offset.fOffset;
+
+        if (position == 0) {
+            return;
+        }
+        
+        // If position is at a boundary, leave it unchanged.  Otherwise
+        // move to previous boundary.
+        if (position == fText.length()) {
+            fBoundaries.last();
+        }
+        else {
+            fBoundaries.following(position);
+        }
+        
+        int prevPos = fBoundaries.previous();
+        
+        if (prevPos == position) {
+            if (!alwaysMove && offset.fPlacement==TextOffset.AFTER_OFFSET) {
+                return;
+            }
+
+            prevPos = fBoundaries.previous();
+        }
+                
+        // and finally update the real offset with this new position we've found
+        offset.setOffset(prevPos, TextOffset.AFTER_OFFSET);
+    }
+
+    private void doArrowKey(KeyEvent e, int key) {
+
+        // when there's a selection range, the left and up arrow keys place an
+        // insertion point at the beginning of the range, and the right and down
+        // keys place an insertion point at the end of the range (unless the shift
+        // key is down, of course)
+
+        if (!fStart.equals(fLimit) && !e.isShiftDown()) {
+            if (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_UP)
+                setSelRangeAndDraw(fStart, fStart, fStart);
+            else
+                setSelRangeAndDraw(fLimit, fLimit, fLimit);
+        }
+        else {
+            if (!fAnchor.equals(fStart))
+                fAnchor.assign(fLimit);
+
+            TextOffset  liveEnd = (fStart.equals(fAnchor)) ? fLimit : fStart;
+            TextOffset  newPos = new TextOffset();
+
+            // if the control key is down, the left and right arrow keys move by whole
+            // word in the appropriate direction (we use a line break object so that we're
+            // not treating spaces and punctuation as words)
+            if (e.isControlDown() && (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT)) {
+                fUpDownAnchor = null;
+                fBoundaries = BreakIterator.getLineInstance();
+                fBoundaries.setText(fText.createCharacterIterator());
+
+                newPos.assign(liveEnd);
+                if (key == KeyEvent.VK_RIGHT)
+                    advanceToNextBoundary(newPos);
+                else
+                    advanceToPreviousBoundary(newPos, true);
+            }
+
+            // if we get down to here, this is a plain-vanilla insertion-point move,
+            // or the shift key is down and we're extending or shortening the selection
+            else {
+
+                // fUpDownAnchor is used to keep track of the horizontal position
+                // across a run of up or down arrow keys (this prevents accumulated
+                // error from destroying our horizontal position)
+                if (key == KeyEvent.VK_LEFT || key == KeyEvent.VK_RIGHT)
+                    fUpDownAnchor = null;
+                else {
+                    if (fUpDownAnchor == null) {
+                        fUpDownAnchor = new TextOffset(liveEnd);
+                    }
+                }
+
+                short   direction = MFormatter.eRight;  // just to have a default...
+
+                switch (key) {
+                    case KeyEvent.VK_UP: direction = MFormatter.eUp; break;
+                    case KeyEvent.VK_DOWN: direction = MFormatter.eDown; break;
+                    case KeyEvent.VK_LEFT: direction = MFormatter.eLeft; break;
+                    case KeyEvent.VK_RIGHT: direction = MFormatter.eRight; break;
+                }
+
+                // use the formatter to determine the actual effect of the arrow key
+                fTextComponent.findNewInsertionOffset(newPos, fUpDownAnchor, liveEnd, direction);
+            }
+
+            // if the shift key is down, the selection range is from the anchor point
+            // the site of the last insertion point or the beginning point of the last
+            // selection drag operation) to the newly-calculated position; if the
+            // shift key is down, the newly-calculated position is the insertion point position
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(newPos, newPos, newPos);
+            else {
+                if (newPos.lessThan(fAnchor))
+                    setSelRangeAndDraw(newPos, fAnchor, fAnchor);
+                else
+                    setSelRangeAndDraw(fAnchor, newPos, fAnchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+    }
+
+    private void doEndKey(KeyEvent e) {
+        // ctrl-end moves the insertsion point to the end of the document,
+        // ctrl-shift-end extends the selection so that it ends at the end
+        // of the document
+
+        TextOffset activeEnd, anchor;
+
+        if (fAnchor.equals(fStart)) {
+            activeEnd = new TextOffset(fStart);
+            anchor = new TextOffset(fLimit);
+        }
+        else {
+            activeEnd = new TextOffset(fLimit);
+            anchor = new TextOffset(fStart);
+        }
+
+        if (e.isControlDown()) {
+            TextOffset end = new TextOffset(fText.length(), TextOffset.BEFORE_OFFSET);
+
+            if (e.isShiftDown())
+                setSelRangeAndDraw(anchor, end, anchor);
+            else
+                setSelRangeAndDraw(end, end, end);
+        }
+
+        // end moves the insertion point to the end of the line containing
+        // the end of the current selection
+        // shift-end extends the selection to the end of the line containing
+        // the end of the current selection
+
+        else {
+
+            int oldOffset = activeEnd.fOffset;
+
+            activeEnd.fOffset = fTextComponent.lineRangeLimit(fTextComponent.lineContaining(activeEnd));
+            activeEnd.fPlacement = TextOffset.BEFORE_OFFSET;
+
+            if (fText.paragraphLimit(oldOffset) == activeEnd.fOffset &&
+                    activeEnd.fOffset != fText.length() && activeEnd.fOffset > oldOffset) {
+                activeEnd.fOffset--;
+                activeEnd.fPlacement = TextOffset.AFTER_OFFSET;
+            }
+
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(activeEnd, activeEnd, activeEnd);
+            else {
+                if (activeEnd.lessThan(anchor))
+                    setSelRangeAndDraw(activeEnd, anchor, anchor);
+                else
+                    setSelRangeAndDraw(anchor, activeEnd, anchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+        fUpDownAnchor = null;
+    }
+
+    private void doHomeKey(KeyEvent e) {
+        // ctrl-home moves the insertion point to the beginning of the document,
+        // ctrl-shift-home extends the selection so that it begins at the beginning
+        // of the document
+
+        TextOffset activeEnd, anchor;
+
+        if (fAnchor.equals(fStart)) {
+            activeEnd = new TextOffset(fStart);
+            anchor = new TextOffset(fLimit);
+        }
+        else {
+            activeEnd = new TextOffset(fLimit);
+            anchor = new TextOffset(fStart);
+        }
+
+        if (e.isControlDown()) {
+
+            TextOffset start = new TextOffset(0, TextOffset.AFTER_OFFSET);
+            if (e.isShiftDown())
+                setSelRangeAndDraw(start, anchor, anchor);
+            else
+                setSelRangeAndDraw(start, start, start);
+        }
+
+        // home moves the insertion point to the beginning of the line containing
+        // the beginning of the current selection
+        // shift-home extends the selection to the beginning of the line containing
+        // the beginning of the current selection
+
+        else {
+
+            activeEnd.fOffset = fTextComponent.lineRangeLow(fTextComponent.lineContaining(activeEnd));
+            activeEnd.fPlacement = TextOffset.AFTER_OFFSET;
+
+            if (!e.isShiftDown())
+                setSelRangeAndDraw(activeEnd, activeEnd, activeEnd);
+            else {
+                if (activeEnd.lessThan(anchor))
+                    setSelRangeAndDraw(activeEnd, anchor, anchor);
+                else
+                    setSelRangeAndDraw(anchor, activeEnd, anchor);
+            }
+        }
+
+        scrollToShowSelectionEnd();
+        fBoundaries = null;
+        fUpDownAnchor = null;
+    }
+
+    /** draws or erases the current selection
+    * Draws or erases the highlight region or insertion caret for the current selection
+    * range.
+    * @param g The graphics environment to draw into
+    * @param visible If true, draw the selection; if false, erase it
+    */
+    protected void drawSelection(Graphics g, boolean visible) {
+        drawSelectionRange(g, fStart, fLimit, visible);
+    }
+
+    /** draws or erases a selection highlight at the specfied positions
+    * Draws or erases a selection highlight or insertion caret corresponding to
+    * the specified selecion range
+    * @param g The graphics environment to draw into.  If null, this method does nothing.
+    * @param start The beginning of the range to highlight
+    * @param limit The end of the range to highlight
+    * @param visible If true, draw; if false, erase
+    */
+    protected void drawSelectionRange(  Graphics    g,
+                                        TextOffset  start,
+                                        TextOffset  limit,
+                                        boolean     visible) {
+        if (g == null) {
+            return;
+        }
+        Rectangle   selBounds = fTextComponent.getBoundingRect(start, limit);
+
+        selBounds.width = Math.max(1, selBounds.width);
+        selBounds.height = Math.max(1, selBounds.height);
+
+        fTextComponent.drawText(g, selBounds, visible, start, limit, fHighlightColor);
+    }
+
+    protected TextOffset getAnchor() {
+        return fAnchor;
+    }
+
+    public TextOffset getEnd() {
+        return fLimit;
+    }
+
+    public Color getHighlightColor() {
+        return fHighlightColor;
+    }
+
+    public TextOffset getStart() {
+        return fStart;
+    }
+
+    public TextRange getSelectionRange() {
+
+        return new TextRange(fStart.fOffset, fLimit.fOffset);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+
+        setEnabled(true);
+        drawSelection(fTextComponent.getGraphics(), true);
+
+        restartCaretBlinking(true);
+        if (fPendingMouseEvent != null) {
+            mousePressed(fPendingMouseEvent);
+            fPendingMouseEvent = null;
+        }
+        fListener.textStateChanged(TextPanelEvent.CLIPBOARD_CHANGED);
+ 
+        return true;
+    }
+
+    public boolean focusLost(FocusEvent e) {
+        stopCaretBlinking();
+        setEnabled(false);
+        drawSelection(fTextComponent.getGraphics(), false);
+        return true;
+    }
+
+    /**
+     * Return true if the given key event can affect the selection
+     * range.
+     */
+    public static boolean keyAffectsSelection(KeyEvent e) {
+
+        if (e.getID() != KeyEvent.KEY_PRESSED) {
+            return false;
+        }
+
+        int key = e.getKeyCode();
+
+        switch (key) {
+            case KeyEvent.VK_HOME:
+            case KeyEvent.VK_END:
+            case KeyEvent.VK_LEFT:
+            case KeyEvent.VK_RIGHT:
+            case KeyEvent.VK_UP:
+            case KeyEvent.VK_DOWN:
+                return true;
+
+            default:
+                return false;
+        }
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+
+        fHandlingKeyOrCommand = true;
+        int key = e.getKeyCode();
+        boolean result = true;
+        
+        switch (key) {
+            case KeyEvent.VK_HOME:
+                doHomeKey(e);
+                break;
+                
+            case KeyEvent.VK_END:
+                doEndKey(e);
+                break;
+
+            case KeyEvent.VK_LEFT:
+            case KeyEvent.VK_RIGHT:
+            case KeyEvent.VK_UP:
+            case KeyEvent.VK_DOWN:
+                doArrowKey(e, key);
+                break;
+                
+            default:
+                fUpDownAnchor = null;
+                result = false;
+                break;
+        }
+        
+        fHandlingKeyOrCommand = false;
+        return result;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+
+        if (!enabled()) {
+            fPendingMouseEvent = e;
+            fTextComponent.requestFocus();
+            return false;
+        }
+
+        if (fMouseDown)
+            throw new Error("fMouseDown is out of sync with mouse in TextSelection.");
+
+        fMouseDown = true;
+        stopCaretBlinking();
+
+        int x = e.getX(), y = e.getY();
+        boolean wasZeroLength = rangeIsZeroLength(fStart, fLimit, fAnchor);
+        
+        TextOffset current = fTextComponent.pointToTextOffset(null, x, y, null, true);
+        TextOffset anchorStart = new TextOffset();
+        TextOffset anchorEnd = new TextOffset();
+
+        fUpDownAnchor = null;
+
+        // if we're not extending the selection...
+        if (!e.isShiftDown()) {
+
+            // if there are multiple clicks, create the appopriate type of BreakIterator
+            // object for finding text boundaries (single clicks don't use a BreakIterator
+            // object)
+            if (e.getClickCount() == 2)
+                fBoundaries = BreakIterator.getWordInstance();
+            else if (e.getClickCount() == 3)
+                fBoundaries = BreakIterator.getSentenceInstance();
+            else
+                fBoundaries = null;
+
+            // if we're using a BreakIterator object, use it to find the nearest boundaries
+            // on either side of the mouse-click position and make them our anchor range
+            if (fBoundaries != null)
+                fBoundaries.setText(fText.createCharacterIterator());
+
+            anchorStart.assign(current);
+            advanceToPreviousBoundary(anchorStart);
+            anchorEnd.assign(current);
+            advanceToNextBoundary(anchorEnd);
+        }
+
+        // if we _are_ extending the selection, determine our anchor range as follows:
+        // fAnchor is the start of the anchor range;
+        // the next boundary (after fAnchor) is the limit of the anchor range.
+
+        else {
+
+            if (fBoundaries != null)
+                fBoundaries.setText(fText.createCharacterIterator());
+
+            anchorStart.assign(fAnchor);
+            anchorEnd.assign(anchorStart);
+
+            advanceToNextBoundary(anchorEnd);
+        }
+
+        SelectionDragInteractor interactor = new SelectionDragInteractor(this, 
+                                                                         fTextComponent,
+                                                                         fRunStrategy,
+                                                                         anchorStart,
+                                                                         anchorEnd,
+                                                                         current,
+                                                                         x,
+                                                                         y,
+                                                                         wasZeroLength);
+
+        interactor.addToOwner(fTextComponent);
+
+        return true;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+
+        fPendingMouseEvent = null;
+        return false;
+    }
+
+    // drag interactor calls this
+    void mouseReleased(boolean zeroLengthChange) {
+
+        fMouseDown = false;
+
+        if (zeroLengthChange) {
+            fListener.textStateChanged(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+        }
+        fListener.textStateChanged(TextPanelEvent.SELECTION_RANGE_CHANGED);
+        fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+        // if caret drawing during mouse drags is supressed, draw caret now.
+
+        restartCaretBlinking(true);
+    }
+
+
+    /** draws the selection
+    * Provided, of course, that the selection is visible, the adorner is enabled,
+    * and we're calling it to adorn the view it actually belongs to
+    * @param g The graphics environment to draw into
+    * @return true if we actually drew
+    */
+    public boolean paint(Graphics g, Rectangle drawRect) {
+        // don't draw anything unless we're enabled and the selection is visible
+        if (!enabled())
+            return false;
+
+        fTextComponent.drawText(g, drawRect, true, fStart, fLimit, fHighlightColor);
+        return true;
+    }
+
+    /** scrolls the view to reveal the live end of the selection
+    * (i.e., the end that moves if you use the arrow keys with the shift key down)
+    */
+    public void scrollToShowSelection() {
+        Rectangle   selRect = fTextComponent.getBoundingRect(fStart, fLimit);
+
+        fTextComponent.scrollToShow(selRect);
+    }
+
+    /** scrolls the view to reveal the live end of the selection
+    * (i.e., the end that moves if you use the arrow keys with the shift key down)
+    */
+    public void scrollToShowSelectionEnd() {
+        TextOffset  liveEnd;
+        // variable not used Point[]     points;
+        Rectangle   caret;
+
+        if (fAnchor.equals(fStart))
+            liveEnd = fLimit;
+        else
+            liveEnd = fStart;
+
+        //points = fTextComponent.textOffsetToPoint(liveEnd);
+        //caret = new Rectangle(points[0]);
+        //caret = caret.union(new Rectangle(points[1]));
+        caret = fTextComponent.getCaretRect(liveEnd);
+        fTextComponent.scrollToShow(caret);
+    }
+
+    private void select(TextRange range) {
+        // variable not used int textLength = fTextComponent.getText().length();
+
+        TextOffset start = new TextOffset(range.start);
+
+        stopCaretBlinking();
+        setSelRangeAndDraw(start, new TextOffset(range.limit), start);
+        restartCaretBlinking(true);
+    }
+
+    public void setHighlightColor(Color newColor) {
+        fHighlightColor = newColor;
+        if (enabled())
+            drawSelection(fTextComponent.getGraphics(), true);
+    }
+    
+    static boolean rangeIsZeroLength(TextOffset start, TextOffset limit, TextOffset anchor) {
+        
+        return start.fOffset == limit.fOffset && anchor.fOffset == limit.fOffset;
+    }
+
+    // sigh... look out for aliasing
+    public void setSelectionRange(TextOffset newStart, TextOffset newLimit, TextOffset newAnchor) {
+
+        boolean zeroLengthChange = rangeIsZeroLength(newStart, newLimit, newAnchor) != 
+                                    rangeIsZeroLength(fStart, fLimit, fAnchor);
+        TextOffset tempNewAnchor;
+        if (newAnchor == fStart || newAnchor == fLimit) {
+            tempNewAnchor = new TextOffset(newAnchor); // clone in case of aliasing
+        }
+        else {
+            tempNewAnchor = newAnchor;
+        }
+
+        // DEBUG {jbr}
+
+        if (newStart.greaterThan(newLimit))
+            throw new IllegalArgumentException("Selection limit is before selection start.");
+
+        if (newLimit != fStart) {
+            fStart.assign(newStart);
+            fLimit.assign(newLimit);
+        }
+        else {
+            fLimit.assign(newLimit);
+            fStart.assign(newStart);
+        }
+
+        fAnchor.assign(tempNewAnchor);
+
+        if (fStart.fOffset == fLimit.fOffset) {
+            fStart.fPlacement = fAnchor.fPlacement;
+            fLimit.fPlacement = fAnchor.fPlacement;
+        }
+        
+        if (!fMouseDown) {
+            if (zeroLengthChange) {
+                fListener.textStateChanged(TextPanelEvent.SELECTION_EMPTY_CHANGED);
+            }
+            fListener.textStateChanged(TextPanelEvent.SELECTION_RANGE_CHANGED);
+            if (fHandlingKeyOrCommand) {
+                fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+            }
+        }
+    }
+
+    private void sortOffsets(TextOffset offsets[]) {
+
+        int i, j;
+
+        for (i=0; i < offsets.length-1; i++) {
+            for (j=i+1; j < offsets.length; j++) {
+                if (offsets[j].lessThan(offsets[i])) {
+                    TextOffset temp = offsets[j];
+                    offsets[j] = offsets[i];
+                    offsets[i] = temp;
+                }
+            }
+        }
+
+        // DEBUG {jbr}
+        for (i=0; i < offsets.length-1; i++)
+            if (offsets[i].greaterThan(offsets[i+1]))
+                throw new Error("sortOffsets failed!");
+    }
+
+    private Rectangle getSelectionChangeRect(
+                                    TextOffset rangeStart, TextOffset rangeLimit,
+                                    TextOffset oldStart, TextOffset oldLimit,
+                                    TextOffset newStart, TextOffset newLimit,
+                                    boolean drawIfInsPoint) {
+
+        if (!rangeStart.equals(rangeLimit))
+            return fTextComponent.getBoundingRect(rangeStart, rangeLimit);
+
+        // here, rangeStart and rangeLimit are equal
+
+        if (rangeStart.equals(oldLimit)) {
+
+            // range start is OLD insertion point.  Redraw if caret is currently visible.
+
+            if (fCaretIsVisible)
+                return fTextComponent.getBoundingRect(rangeStart, rangeStart);
+        }
+        else if (rangeStart.equals(newLimit)) {
+
+            // range start is NEW insertion point.
+
+            if (drawIfInsPoint)
+                return fTextComponent.getBoundingRect(rangeStart, rangeStart);
+        }
+
+        return null;
+    }
+
+    private static boolean rectanglesOverlapVertically(Rectangle r1, Rectangle r2) {
+        
+        if (r1 == null || r2 == null) {
+            return false;
+        }
+        
+        return r1.y <= r2.y + r2.height || r2.y <= r1.y + r1.height;
+    }
+    
+    // Update to show new selection, redrawing as little as possible
+
+    private void updateSelectionDisplay(
+                            TextOffset oldStart, TextOffset oldLimit,
+                            TextOffset newStart, TextOffset newLimit, boolean drawIfInsPoint) {
+
+        //System.out.println("newStart:" + newStart + "; newLimit:" + newLimit);
+
+        TextOffset off[] = new TextOffset[4];
+
+        off[0] = oldStart;
+        off[1] = oldLimit;
+        off[2] = newStart;
+        off[3] = newLimit;
+
+        sortOffsets(off);
+
+        Rectangle r1 = getSelectionChangeRect(off[0], off[1], oldStart, oldLimit, newStart, newLimit, drawIfInsPoint);
+        Rectangle r2 = getSelectionChangeRect(off[2], off[3], oldStart, oldLimit, newStart, newLimit, drawIfInsPoint);
+
+        boolean drawSelection = drawIfInsPoint || !newStart.equals(newLimit);
+
+        if (rectanglesOverlapVertically(r1, r2)) {
+
+            fTextComponent.drawText(fTextComponent.getGraphics(), r1.union(r2), drawSelection, newStart, newLimit, fHighlightColor);
+        }
+        else {
+            if (r1 != null)
+                fTextComponent.drawText(fTextComponent.getGraphics(), r1, drawSelection, newStart, newLimit, fHighlightColor);
+            if (r2 != null)
+                fTextComponent.drawText(fTextComponent.getGraphics(), r2, drawSelection, newStart, newLimit, fHighlightColor);
+        }
+    }
+
+    public void setSelRangeAndDraw(TextOffset newStart, TextOffset newLimit, TextOffset newAnchor) {
+
+        // if the old and new selection ranges are the same, don't do anything
+        if (fStart.equals(newStart) && fLimit.equals(newLimit) && fAnchor.equals(newAnchor))
+            return;
+
+        if (enabled())
+            stopCaretBlinking();
+
+        // update the selection on screen if we're enabled and visible
+
+        TextOffset oldStart = new TextOffset(fStart), oldLimit = new TextOffset(fLimit);
+
+        setSelectionRange(newStart, newLimit, newAnchor);
+
+        if (enabled()) {
+
+                // To supress drawing a caret during a mouse drag, pass !fMouseDown instead of true:
+                updateSelectionDisplay(oldStart, oldLimit, fStart, fLimit, true);
+        }
+
+        if (!fMouseDown && enabled())
+            restartCaretBlinking(true);
+    }
+
+    public void stopCaretBlinking() {
+
+        synchronized(this) {
+            fCaretShouldBlink = false;
+        }
+    }
+
+/**
+* Resume blinking the caret, if the selection is an insertion point.
+* @param caretIsVisible true if the caret is displayed when this is called.
+* This method relies on the client to display (or not display) the caret.
+*/
+    public void restartCaretBlinking(boolean caretIsVisible) {
+
+        synchronized(this) {
+            fCaretShouldBlink = fStart.equals(fLimit);
+            fCaretCount = 0;
+            fCaretIsVisible = caretIsVisible;
+
+            if (fCaretShouldBlink) {
+                try {
+                    notify();
+                }
+                catch (IllegalMonitorStateException e) {
+                    System.out.println("Caught IllegalMonitorStateException: "+e);
+                }
+            }
+        }
+    }
+
+    public void removeFromOwner() {
+
+        stopCaretBlinking();
+        super.removeFromOwner();
+    }
+
+}
diff --git a/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java b/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java
new file mode 100644
index 0000000..07a279f
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/ThaiKeyRemap.java
@@ -0,0 +1,112 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.richtext.textpanel;
+
+final class ThaiKeyRemap extends KeyRemap {
+
+    public char remap(char c) {
+
+        switch (c) {
+            case '`': return '\u005f';
+            case '~': return '\u0025';
+            case '1': return '\u0e45';
+            case '!': return '\u002b';
+            case '2': return '\u002f';
+            case '@': return '\u0e51';
+            case '3': return '\u002d';
+            case '#': return '\u0e52';
+            case '4': return '\u0e20';
+            case '$': return '\u0e53';
+            case '5': return '\u0e16';
+            case '%': return '\u0e54';
+            case '6': return '\u0e38';
+            case '^': return '\u0e39';
+            case '7': return '\u0e36';
+            case '&': return '\u0e3f';
+            case '8': return '\u0e04';
+            case '*': return '\u0e55';
+            case '9': return '\u0e15';
+            case '(': return '\u0e56';
+            case '0': return '\u0e08';
+            case ')': return '\u0e57';
+            case '-': return '\u0e02';
+            case '_': return '\u0e58';
+            case '=': return '\u0e08';
+            case '+': return '\u0e59';
+            case 'q': return '\u0e46';
+            case 'Q': return '\u0e50';
+            case 'w': return '\u0e44';
+            case 'W': return '\u0022';
+            case 'e': return '\u0e33';
+            case 'E': return '\u0e0e';
+            case 'r': return '\u0e1e';
+            case 'R': return '\u0e11';
+            case 't': return '\u0e30';
+            case 'T': return '\u0e18';
+            case 'y': return '\u0e31';
+            case 'Y': return '\u0e4d';
+            case 'u': return '\u0e35';
+            case 'U': return '\u0e4a';
+            case 'i': return '\u0e23';
+            case 'I': return '\u0e13';
+            case 'o': return '\u0e19';
+            case 'O': return '\u0e2f';
+            case 'p': return '\u0e22';
+            case 'P': return '\u0e0d';
+            case '[': return '\u0e1a';
+            case '{': return '\u0e10';
+            case ']': return '\u0e25';
+            case '}': return '\u002c';
+            case '\\': return '\u0e03';
+            case '|': return '\u0e05';
+            case 'a': return '\u0e1f';
+            case 'A': return '\u0e24';
+            case 's': return '\u0e2b';
+            case 'S': return '\u0e06';
+            case 'd': return '\u0e01';
+            case 'D': return '\u0e0f';
+            case 'f': return '\u0e14';
+            case 'F': return '\u0e42';
+            case 'g': return '\u0e40';
+            case 'G': return '\u0e0c';
+            case 'h': return '\u0e49';
+            case 'H': return '\u0e47';
+            case 'j': return '\u0e48';
+            case 'J': return '\u0e4b';
+            case 'k': return '\u0e32';
+            case 'K': return '\u0e29';
+            case 'l': return '\u0e2a';
+            case 'L': return '\u0e28';
+            case ';': return '\u0e27';
+            case ':': return '\u0e0b';
+            case '\'': return '\u0e07';
+            case '\"': return '\u002e';
+            case 'z': return '\u0e1c';
+            case 'Z': return '\u0028';
+            case 'x': return '\u0e1b';
+            case 'X': return '\u0029';
+            case 'c': return '\u0e41';
+            case 'C': return '\u0e09';
+            case 'v': return '\u0e2d';
+            case 'V': return '\u0e2e';
+            case 'b': return '\u0e34';
+            case 'B': return '\u0e3a';
+            case 'n': return '\u0e37';
+            case 'N': return '\u0e4c';
+            case 'm': return '\u0e17';
+            case 'M': return '\u003f';
+            case ',': return '\u0e21';
+            case '<': return '\u0e12';
+            case '.': return '\u0e43';
+            case '>': return '\u0e2c';
+            case '/': return '\u0e1d';
+            case '?': return '\u0e26';
+        }
+
+        return c;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TransferableText.java b/src/com/ibm/richtext/textpanel/TransferableText.java
new file mode 100644
index 0000000..b6beafc
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TransferableText.java
@@ -0,0 +1,87 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.textpanel;
+
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+
+import com.ibm.richtext.styledtext.MConstText;
+
+/**
+ * This class allows MConstText instances to be the contents
+ * of a Clipboard.  To store an MConstText on the clipboard,
+ * construct a TransferableText from the MConstText, and make
+ * the TransferableText the clipboard contents.
+ *
+ */
+/*
+ * Note:  this class inherits from StringSelection because of
+ * a bug in the 1.1.7 system clipboard implementation.  The
+ * system clipboard won't put text on the OS clipboard unless
+ * the content is a StringSelection.
+ */
+final class TransferableText extends StringSelection
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MConstText fText;
+
+    private static String textToString(MConstText text) {
+        char[] chars = new char[text.length()];
+        text.extractChars(0, chars.length, chars, 0);
+        return new String(chars);
+    }
+
+    /**
+     * Create a TransferableText for the given text.
+     * @param text the text to go on the Clipboard.  The text is
+     *     adopted by this object.
+     */
+    public TransferableText(MConstText text) {
+
+        super(textToString(text));
+
+        fText = text;
+    }
+
+    public DataFlavor[] getTransferDataFlavors() {
+
+        DataFlavor[] flavors = super.getTransferDataFlavors();
+        DataFlavor[] result = new DataFlavor[flavors.length+1];
+        result[0] = MConstText.styledTextFlavor;
+        System.arraycopy(flavors, 0, result, 1, flavors.length);
+        return result;
+    }
+
+    public boolean isDataFlavorSupported(DataFlavor flavor) {
+
+        if (flavor.equals(MConstText.styledTextFlavor)) {
+            return true;
+        }
+        else {
+            return super.isDataFlavorSupported(flavor);
+        }
+    }
+
+    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
+
+        if (flavor.equals(MConstText.styledTextFlavor)) {
+            return fText;
+        }
+        else {
+            return super.getTransferData(flavor);
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/TypingInteractor.java b/src/com/ibm/richtext/textpanel/TypingInteractor.java
new file mode 100644
index 0000000..d31eed9
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/TypingInteractor.java
@@ -0,0 +1,354 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2008.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+/*
+    2/25/99 - Now processing characters from keyTyped method (not keyPressed).
+              This new way is input-method friendly on 1.2, and is generally
+              more correct.
+
+    7/7/97 - the mouseDidSomething methods used to remove the typing interactor.
+            This is definitely wrong, but maybe that made sense at one time.  Anyway,
+            now the mousePressed / mouseReleased methods remove the interactor;  the
+            others do nothing.
+*/
+
+package com.ibm.richtext.textpanel;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.FocusEvent;
+
+import java.text.BreakIterator;
+
+import com.ibm.richtext.styledtext.StyleModifier;
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.MText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.textformat.TextOffset;
+
+final class TypingInteractor extends Behavior {
+
+//    static final String COPYRIGHT =
+//                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final char BACKSPACE = 8;
+    private static final char TAB = '\t';
+    private static final char RETURN = '\r';
+    private static final char LINE_FEED = '\n';
+//    private static final char PARAGRAPH_SEP = '\u2029';
+    
+//    private TextComponent fTextComponent;
+    private TextSelection fSelection;
+    private AttributeMap fTypingStyle;
+    private MConstText fText;
+    private TextEditBehavior fParent;
+    private TextChangeCommand fCommand = null;
+    private SimpleCommandLog fCommandLog;
+    private PanelEventBroadcaster fListener;
+    private BreakIterator fCharBreak = null;
+    
+    /**
+     * Not all characters that come from the keyboard are handled
+     * as input.  For example, ctrl-c is not a typable character.
+     * This method determines whether a particular character from
+     * the keyboard will affect the text.
+     */
+    private static boolean isTypingInteractorChar(char ch) {
+
+        return ch >= ' ' || 
+               ch == LINE_FEED || 
+               ch == RETURN ||
+               ch == TAB || 
+               ch == BACKSPACE;
+    }
+    
+    /**
+     * This method determines whether a TypingInteractor should
+     * handle the given KeyEvent.
+     */
+    static boolean handledByTypingInteractor(KeyEvent event) {
+
+        final int id = event.getID();
+        
+        if (id == KeyEvent.KEY_TYPED) {
+            return isTypingInteractorChar(event.getKeyChar());
+        }
+        else {
+            return (id == KeyEvent.KEY_PRESSED && 
+                    event.getKeyCode() == KeyEvent.VK_DELETE);
+        }
+    }
+
+    public TypingInteractor(TextComponent textComponent,
+                            TextSelection selection,
+                            AttributeMap typingStyle,
+                            TextEditBehavior parent,
+                            SimpleCommandLog commandLog,
+                            PanelEventBroadcaster listener) {
+                            
+//        fTextComponent = textComponent;
+        fText = textComponent.getText();
+        fSelection = selection;
+        fTypingStyle = typingStyle;
+        fParent = parent;
+        fCommandLog = commandLog;
+        fListener = listener;
+
+        fParent.setTypingInteractor(this);
+    }
+
+    private void endInteraction() {
+
+        removeFromOwner();
+        postTextChangeCommand();
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+        fParent.setSavedTypingStyle(selStart==selLimit? fTypingStyle : null, selStart);
+        
+        fParent.setTypingInteractor(null);
+    }
+
+    public boolean textControlEventOccurred(Behavior.EventType event, Object what) {
+
+        if (fCommand == null && event == Behavior.CHARACTER_STYLE_MOD) {
+
+            pickUpTypingStyle();
+            fTypingStyle = ((StyleModifier)what).modifyStyle(fTypingStyle);
+
+            fListener.textStateChanged(TextPanelEvent.SELECTION_STYLES_CHANGED);
+
+            return true;
+        }
+        else {
+            Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+            endInteraction();
+
+            if (next != null)
+                return next.textControlEventOccurred(event, what);
+            else
+                return false;
+        }
+    }
+
+    private void doBackspace() {
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+
+        if (selStart == selLimit) {
+            if (selStart != 0) {
+                fTypingStyle = null;
+                pickUpTypingStyle();
+                makeTextChangeCommand();
+                if (selStart <= fCommand.affectedRangeStart()) {
+                    fCommand.prependToOldText(fText.extract(selStart - 1, selStart));
+                }
+                TextOffset insPt = new TextOffset(selStart - 1);
+                fParent.doReplaceText(selStart - 1, selStart, null, insPt, insPt);
+            }
+        }
+        else {
+            fTypingStyle = null;
+            makeTextChangeCommand();
+            TextOffset insPt = new TextOffset(selStart);
+            fParent.doReplaceText(selStart, selLimit, null, insPt, insPt);
+        }
+    }
+
+    private void doFwdDelete(boolean ignoreCharBreak) {
+
+        int selStart = fSelection.getStart().fOffset;
+        int selLimit = fSelection.getEnd().fOffset;
+
+        TextOffset insPt = new TextOffset(selStart);
+
+        if (selStart == selLimit) {
+            if (selStart != fText.length()) {
+                fTypingStyle = null;
+                makeTextChangeCommand();
+                int numChars;
+                if (ignoreCharBreak) {
+                    numChars = 1;
+                }
+                else {
+                    if (fCharBreak == null) {
+                        fCharBreak = BreakIterator.getCharacterInstance();
+                    }
+                    fCharBreak.setText(fText.createCharacterIterator());
+                    numChars = fCharBreak.following(selStart) - selStart;
+                }
+                fCommand.appendToOldText(fText.extract(selStart, selStart + numChars));
+                fParent.doReplaceText(selStart, selStart + numChars, null, insPt, insPt);
+            }
+        }
+        else {
+            fTypingStyle = null;
+            makeTextChangeCommand();
+            fParent.doReplaceText(selStart, selLimit, null, insPt, insPt);
+        }
+    }
+
+    private void doNormalKey(char ch) {
+
+        // Sigh - 1.1 reports enter key events as return chars, but
+        // 1.2 reports them as linefeeds.
+        if (ch == RETURN) {
+            ch = LINE_FEED;
+        }
+        pickUpTypingStyle();
+        makeTextChangeCommand();
+        fParent.doReplaceSelectedText(ch, fTypingStyle);
+    }
+
+    public boolean focusGained(FocusEvent e) {
+
+        // pass through, but stick around...
+        return super.focusGained(e);
+    }
+
+    public boolean focusLost(FocusEvent e) {
+
+        // pass through, but stick around...
+        return super.focusLost(e);
+    }
+
+    public boolean keyTyped(KeyEvent e) {
+
+        if (e.getKeyChar() == BACKSPACE) {
+            doBackspace();
+        }
+        else {
+            if (isTypingInteractorChar(e.getKeyChar())) {
+                KeyRemap remap = fParent.getKeyRemap();
+                doNormalKey(remap.remap(e));
+            }
+        }
+
+        return true;
+    }
+
+    public boolean keyPressed(KeyEvent e) {
+
+        int key = e.getKeyCode();
+        if (key == KeyEvent.VK_DELETE) {
+            doFwdDelete(e.isShiftDown());
+            return true;
+        }
+
+        Behavior next = nextBehavior();
+
+        if (TextSelection.keyAffectsSelection(e)) {
+
+            endInteraction();
+        }
+
+        return next.keyPressed(e);
+    }
+
+    public boolean keyReleased(KeyEvent e) {
+        return true;
+    }
+
+    private void makeTextChangeCommand() {
+        if (fCommand == null) {
+            TextOffset  selStart = fSelection.getStart();
+            TextOffset  selEnd = fSelection.getEnd();
+
+            MText writableText = new StyledText();
+            writableText.replace(0, 0, fText, selStart.fOffset, selEnd.fOffset);
+            fCommand = new TextChangeCommand(fParent,
+                                writableText,
+                                null, selStart.fOffset, selStart, selEnd,
+                                new TextOffset(), new TextOffset());
+
+            fListener.textStateChanged(TextPanelEvent.UNDO_STATE_CHANGED);
+        }
+    }
+
+    public boolean mouseDragged(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseEntered(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseExited(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mouseMoved(MouseEvent e) {
+
+        return true;
+    }
+
+    public boolean mousePressed(MouseEvent e) {
+
+        Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+        endInteraction();
+
+        if (next != null)
+            return next.mousePressed(e);
+        else
+            return false;
+    }
+
+    public boolean mouseReleased(MouseEvent e) {
+
+        Behavior next = nextBehavior(); // save because removeFromOwner() will trash this
+
+        endInteraction();
+
+        if (next != null)
+            return next.mouseReleased(e);
+        else
+            return false;
+    }
+
+    private void pickUpTypingStyle() {
+        if (fTypingStyle == null) {
+            int selStart = fSelection.getStart().fOffset;
+            int selLimit = fSelection.getEnd().fOffset;
+            fTypingStyle = TextEditBehavior.typingStyleAt(fText, selStart, selLimit);
+        }
+    }
+
+    private void postTextChangeCommand() {
+        if (fCommand != null) {
+            TextOffset  selStart = fSelection.getStart();
+            TextOffset  selEnd = fSelection.getEnd();
+
+            fCommand.setNewText(fText.extract(fCommand.affectedRangeStart(), selStart.fOffset));
+            fCommand.setSelRangeAfter(selStart, selEnd);
+            fCommandLog.add(fCommand);
+        }
+    }
+
+    boolean hasPendingCommand() {
+
+        return fCommand != null;
+    }
+
+    AttributeMap getTypingStyle() {
+
+        pickUpTypingStyle();
+        return fTypingStyle;
+    }
+}
diff --git a/src/com/ibm/richtext/textpanel/package.html b/src/com/ibm/richtext/textpanel/package.html
new file mode 100644
index 0000000..6c86560
--- /dev/null
+++ b/src/com/ibm/richtext/textpanel/package.html
@@ -0,0 +1,11 @@
+<html>
+    <head> <!--  Copyright (C) 2000-2004, International Business Machines Corporation and
+  others. All Rights Reserved.
+-->
+        <title>TextPanel Package Overview</title>
+    </head>
+    <body bgcolor="white">
+        Provides components (for both AWT and Swing) in which styled text is displayed 
+        and edited, and related classes.
+    </body>
+</html>
diff --git a/src/com/ibm/richtext/uiimpl/AboutText.java b/src/com/ibm/richtext/uiimpl/AboutText.java
new file mode 100644
index 0000000..7b78c3b
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/AboutText.java
@@ -0,0 +1,63 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+
+import com.ibm.richtext.styledtext.MConstText;
+import com.ibm.richtext.styledtext.StyledText;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+public final class AboutText {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final Color[] COLORS = {
+        Color.red, Color.blue, Color.white, Color.green
+    };
+    
+    public static MConstText getAboutText() {
+
+        String text = ResourceUtils.getResourceString(FrameResources.ABOUT_TEXT);
+        StyledText styledText = new StyledText(text, AttributeMap.EMPTY_ATTRIBUTE_MAP);
+
+        int length = styledText.length();
+        int i=0;
+
+        for (int paragraphStart = 0, paragraphLimit;
+                    paragraphStart < length;
+                    paragraphStart = paragraphLimit) {
+
+            paragraphLimit = styledText.paragraphLimit(paragraphStart);
+            StyleModifier modifier = StyleModifier.createAddModifier(
+                                             TextAttribute.FOREGROUND,
+                                             COLORS[(i++)%COLORS.length]);
+            styledText.modifyCharacterStyles(paragraphStart,
+                                             paragraphLimit,
+                                             modifier);
+        }
+
+        StyleModifier modifier = StyleModifier.createAddModifier(
+                                            TextAttribute.LINE_FLUSH,
+                                            TextAttribute.FLUSH_CENTER);
+
+        styledText.modifyParagraphStyles(0, text.length(), modifier);
+
+        return styledText;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java b/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java
new file mode 100644
index 0000000..fd64a27
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/BooleanStyleMenuItem.java
@@ -0,0 +1,97 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class BooleanStyleMenuItem extends SingleCheckMenuItem {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private final Object fKey;
+    private final boolean fCharacter;
+
+    private final Object fOnValue;
+    
+    public BooleanStyleMenuItem(Object style,
+                                Object onValue,
+                                MenuData menuData,
+                                boolean character) {
+        
+        super(menuData);
+        if (onValue == null) {
+            throw new IllegalArgumentException("On value cannot be null");
+        }
+
+        fKey = style;
+        fCharacter = character;
+        
+        fOnValue = onValue;
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                StyleModifier modifier;
+                MTextPanel panel = getTextPanel();
+                if (panel == null) {
+                    throw new Error("Menu item is enabled when panel is null!");
+                }
+                if (continuousAndCommand()) {
+                    AttributeSet set = new AttributeSet(fKey);
+                    modifier = StyleModifier.createRemoveModifier(set);
+                }
+                else {
+                    modifier = StyleModifier.createAddModifier(fKey, fOnValue);
+                }
+                
+                if (fCharacter == CHARACTER) {
+                    panel.modifyCharacterStyleOnSelection(modifier);
+                }
+                else {
+                    panel.modifyParagraphStyleOnSelection(modifier);
+                }
+            }
+        });
+    }
+    
+    private boolean continuousAndCommand() {
+        
+        MTextPanel panel = getTextPanel();
+
+        Object value = (fCharacter == CHARACTER)? 
+                            panel.getCharacterStyleOverSelection(fKey) :
+                            panel.getParagraphStyleOverSelection(fKey);
+        return fOnValue.equals(value);
+    }
+    
+    protected void setChecked() {
+        
+        fItem.setState(continuousAndCommand());
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java b/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java
new file mode 100644
index 0000000..5988c91
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/ChoiceMenuItemSet.java
@@ -0,0 +1,90 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import java.util.Hashtable;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class ChoiceMenuItemSet extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private MItem[] fItems;
+    private Hashtable fItemToStyleMap;
+    
+    ChoiceMenuItemSet(Object[] values,
+                      MenuData[] menuData) {
+        
+        if (values.length != menuData.length) {
+            throw new IllegalArgumentException(
+                                "Values and names must have equal length");
+        }
+        
+        fItems = new MItem[menuData.length];
+        fItemToStyleMap = new Hashtable(menuData.length);
+        
+        EventListener listener = new EventListener() {
+            public void eventOccurred(EventObject event) {
+                handleValueSelected(fItemToStyleMap.get(event.getSource()));
+            }
+        };
+        
+        for (int i=0; i < menuData.length; i++) {
+            fItems[i] = MItem.createCheckboxItem(menuData[i]);
+            if (values[i] != null) {
+                fItemToStyleMap.put(fItems[i], values[i]);
+            }
+            fItems[i].addListener(listener);
+            fItems[i].setEnabled(false);
+        }
+    }
+    
+    protected abstract void handleValueSelected(Object item);
+    protected abstract Object getCurrentValue();
+    
+    protected final void setChecked() {
+        
+        Object value = getCurrentValue();
+        
+        for (int i=0; i < fItems.length; i++) {
+            Object itemVal = fItemToStyleMap.get(fItems[i]);
+            if (itemVal == null) {
+                fItems[i].setState(value == null);
+            }
+            else {
+                fItems[i].setState(itemVal.equals(value));
+            }
+        }
+    }
+
+    protected final void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            for (int i=0; i < fItems.length; i++) {
+                fItems[i].setEnabled(false);
+                fItems[i].setState(false);
+            }
+        }
+        else {
+            for (int i=0; i < fItems.length; i++) {
+                fItems[i].setEnabled(true);
+                setChecked();
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/CommandMenuItem.java b/src/com/ibm/richtext/uiimpl/CommandMenuItem.java
new file mode 100644
index 0000000..686d704
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/CommandMenuItem.java
@@ -0,0 +1,193 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class CommandMenuItem extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private /*final*/ MItem fItem;
+    
+    protected abstract boolean isEnabled();
+    protected abstract void performAction();
+
+    protected CommandMenuItem(MenuData data) {
+        
+        this(data, false);
+    }
+    
+    protected CommandMenuItem(MenuData data, boolean enableByDefault) {
+        
+        fItem = MItem.createItem(data);
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                performAction();
+            }
+        });
+        fItem.setEnabled(enableByDefault);
+    }
+    
+    protected void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            fItem.setEnabled(false);
+        }
+        else {
+            fItem.setEnabled(isEnabled());
+        }
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        fItem.setEnabled(isEnabled());
+    }
+    
+    public static final class CutCopyClear extends CommandMenuItem {
+        
+        public static final int CUT = 0;
+        public static final int COPY = 1;
+        public static final int CLEAR = 2;
+
+        private final int fKind;
+        
+        public CutCopyClear(MenuData menuData, int kind) {
+            
+            super(menuData);
+            if (kind != CUT && kind != COPY && kind != CLEAR) {
+                throw new IllegalArgumentException("Invalid menu kind");
+            }
+            fKind = kind;
+        }
+        
+        protected boolean isEnabled() {
+            
+            MTextPanel panel = getTextPanel();
+            return panel.getSelectionStart() != panel.getSelectionEnd();
+        }
+        
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.SELECTION_EMPTY_CHANGED;
+        }
+        
+        protected void performAction() {
+            
+            MTextPanel panel = getTextPanel();
+            switch (fKind) {
+                case CUT:
+                    panel.cut();
+                    break;
+                case COPY:
+                    panel.copy();
+                    break;
+                case CLEAR:
+                    panel.clear();
+                    break;
+            }
+        }
+    }
+    
+    public static final class UndoRedo extends CommandMenuItem {
+        
+        public static final boolean UNDO = true;
+        public static final boolean REDO = false;
+        
+        private boolean fKind;
+        
+        public UndoRedo(MenuData menuData, boolean kind) {
+            
+            super(menuData);
+            fKind = kind;
+        }
+        
+        protected boolean isEnabled() {
+            
+            MTextPanel panel = getTextPanel();
+            if (fKind == UNDO) {
+                return panel.canUndo();
+            }
+            else {
+                return panel.canRedo();
+            }
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.UNDO_STATE_CHANGED;
+        }
+
+        protected void performAction() {
+            
+            MTextPanel panel = getTextPanel();
+            if (fKind == UNDO) {
+                panel.undo();
+            }
+            else {
+                panel.redo();
+            }
+        }
+    }
+
+    public static final class Paste extends CommandMenuItem {
+        
+        public Paste(MenuData menuData) {
+            
+            super(menuData);
+        }
+        
+        protected boolean isEnabled() {
+            
+            return getTextPanel().clipboardNotEmpty();
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.CLIPBOARD_CHANGED;
+        }
+
+        protected void performAction() {
+            
+            getTextPanel().paste();
+        }
+    }
+
+    public static final class SelectAll extends CommandMenuItem {
+        
+        public SelectAll(MenuData menuData) {
+            
+            super(menuData);
+        }
+        
+        protected boolean isEnabled() {
+            
+            return true;
+        }
+
+        public boolean respondsToEventType(int type) {
+            
+            return false;
+        }
+
+        protected void performAction() {
+            
+            getTextPanel().selectAll();
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/DialogItem.java b/src/com/ibm/richtext/uiimpl/DialogItem.java
new file mode 100644
index 0000000..c4d8ebd
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/DialogItem.java
@@ -0,0 +1,71 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Window;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class DialogItem extends CommandMenuItem {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static abstract class DialogFactory {
+        
+        public abstract Window createDialog(MTextPanel textPanel);
+    }
+    
+    private DialogFactory fDialogFactory;
+    private Window fDialog = null;
+    
+    public DialogItem(MenuData menuData,
+                      DialogFactory dialogFactory) {
+        
+        super(menuData, true);
+        fDialogFactory = dialogFactory;
+    }
+    
+    protected void textPanelChanged() {
+        // do nothing
+    }
+        
+    protected boolean isEnabled() {
+            
+        // should never get called...
+        return true;
+    }
+
+    public boolean respondsToEventType(int type) {
+            
+        return false;
+    }
+
+    protected void performAction() {
+
+        if (fDialog == null) {
+            MTextPanel panel = getTextPanel();
+            if (panel != null) {
+                fDialog = fDialogFactory.createDialog(panel);
+                fDialog.addWindowListener(new WindowAdapter() {
+                    public void windowClosed(WindowEvent e) {
+                        fDialog = null;
+                    }
+                });
+            }
+        }
+        fDialog.show();
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/EventListener.java b/src/com/ibm/richtext/uiimpl/EventListener.java
new file mode 100644
index 0000000..226cd64
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/EventListener.java
@@ -0,0 +1,22 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+public interface EventListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public void eventOccurred(EventObject event);
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/FontList.java b/src/com/ibm/richtext/uiimpl/FontList.java
new file mode 100644
index 0000000..5680fbf
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/FontList.java
@@ -0,0 +1,64 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+// Requires Java2
+package com.ibm.richtext.uiimpl;
+
+import java.awt.GraphicsEnvironment;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Vector;
+
+final class FontList {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private static final String[] stripThese = {
+        ".bold", ".bolditalic", ".italic"
+    };
+
+    public static String[] getFontList() {
+
+        String[] names = GraphicsEnvironment.getLocalGraphicsEnvironment()
+                                            .getAvailableFontFamilyNames();
+        Vector v = new Vector(names.length);
+        for (int i=0; i < names.length; i++) {
+            v.addElement(names[i]);
+        }
+
+        Collections.sort(v);
+                
+        String last = "";
+        
+        Iterator iter = v.listIterator();
+        while (iter.hasNext()) {
+            String current = (String) iter.next();
+            testSuffixes: for (int i=0; i < stripThese.length; i++) {
+                if (current.endsWith(stripThese[i])) {
+                    int baseLen = current.length()-stripThese[i].length();
+                    String base = current.substring(0, baseLen);
+                    if (base.equalsIgnoreCase(last)) {
+                        iter.remove();
+                        current = last;
+                        break testSuffixes;
+                    }
+                }
+            }
+            last = current;
+        }
+        
+        String[] result = new String[v.size()];
+        v.copyInto(result);
+        return result;
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java b/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java
new file mode 100644
index 0000000..95f9d68
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/KeymapMenuItemSet.java
@@ -0,0 +1,59 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.KeyRemap;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class KeymapMenuItemSet extends ChoiceMenuItemSet {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public KeymapMenuItemSet(KeyRemap[] values,
+                             MenuData[] menuData) {
+        
+        super(values, menuData);
+    }
+    
+    protected void handleValueSelected(Object value) {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Menu item is enabled when panel is null!");
+        }
+
+        textPanel.setKeyRemap((KeyRemap) value);
+    }
+    
+    protected Object getCurrentValue() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Shouldn't call this without a text panel!");
+        }
+        return textPanel.getKeyRemap();
+    }
+    
+    public void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.KEYREMAP_CHANGED;
+    }
+
+}
diff --git a/src/com/ibm/richtext/uiimpl/MItem.java b/src/com/ibm/richtext/uiimpl/MItem.java
new file mode 100644
index 0000000..090a03d
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MItem.java
@@ -0,0 +1,85 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.Vector;
+import java.util.EventObject;
+
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class MItem {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private Vector fListeners = new Vector(2);
+    private EventObject fEvent = new EventObject(this);
+    
+    public abstract void setEnabled(boolean enabled);
+    public abstract void setState(boolean checked);
+    
+    public final void addListener(EventListener listener) {
+        
+        fListeners.addElement(listener);
+    }
+    
+    public final void removeListener(EventListener listener) {
+        
+        fListeners.removeElement(listener);
+    }
+    
+    protected void handleSelected() {
+            
+        int length = fListeners.size();
+        for (int i=0; i < length; i++) {
+            EventListener l = (EventListener) fListeners.elementAt(i);
+            l.eventOccurred(fEvent);
+        }
+    }
+    
+    // factory stuff
+    
+    /**
+     * Clients should synchronize on LOCK while setting and using
+     * global factory.
+     */
+    public static final Object LOCK = new Object();
+    
+    public static interface ItemFactory {
+        
+        public MItem createItem(MenuData menuData);
+        public MItem createCheckboxItem(MenuData menuData);
+        public void createSeparator();
+    }
+    
+    private static ItemFactory fgFactory;
+    
+    public static MItem createItem(MenuData menuData) {
+        
+        return fgFactory.createItem(menuData);
+    }
+    
+    public static MItem createCheckboxItem(MenuData menuData) {
+        
+        return fgFactory.createCheckboxItem(menuData);
+    }
+    
+    public static void setItemFactory(ItemFactory factory) {
+        
+        fgFactory = factory;
+    }
+    
+    public static ItemFactory getItemFactory() {
+        
+        return fgFactory;
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/MenuBuilder.java b/src/com/ibm/richtext/uiimpl/MenuBuilder.java
new file mode 100644
index 0000000..131647a
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MenuBuilder.java
@@ -0,0 +1,368 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2007.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+import java.awt.Frame;
+
+import java.text.NumberFormat;
+
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.KeyRemap;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+import com.ibm.richtext.uiimpl.DialogItem.DialogFactory;
+
+public abstract class MenuBuilder {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    
+    public static final int EDIT = 0;
+    public static final int SIZE = 1;
+    public static final int STYLE = 2;
+    public static final int FLUSH = 3;
+    public static final int KEYMAP = 4;
+    public static final int BIDI = 5;
+    public static final int ABOUT = 6;
+    
+    private Color[] colors = { Color.black, Color.white, Color.green, Color.blue,
+                                Color.cyan, Color.gray, Color.darkGray, Color.lightGray,
+                                Color.magenta, Color.orange, Color.pink, Color.red,
+                                Color.yellow, null };
+    private String[] colorNames = {
+                        ResourceUtils.getResourceString(FrameResources.BLACK),
+                        ResourceUtils.getResourceString(FrameResources.WHITE),
+                        ResourceUtils.getResourceString(FrameResources.GREEN),
+                        ResourceUtils.getResourceString(FrameResources.BLUE),
+                        ResourceUtils.getResourceString(FrameResources.CYAN),
+                        ResourceUtils.getResourceString(FrameResources.GRAY),
+                        ResourceUtils.getResourceString(FrameResources.DARK_GRAY),
+                        ResourceUtils.getResourceString(FrameResources.LIGHT_GRAY),
+                        ResourceUtils.getResourceString(FrameResources.MAGENTA),
+                        ResourceUtils.getResourceString(FrameResources.ORANGE),
+                        ResourceUtils.getResourceString(FrameResources.PINK),
+                        ResourceUtils.getResourceString(FrameResources.RED),
+                        ResourceUtils.getResourceString(FrameResources.YELLOW),
+                        ResourceUtils.getResourceString(FrameResources.NONE)
+    };
+    
+    protected int[] defaultMenus = { EDIT, 
+                                     SIZE,
+                                     STYLE,
+                                     FLUSH, 
+                                     KEYMAP,
+                                     BIDI,
+                                     ABOUT };
+
+    protected MTextPanel fTextPanel;
+    protected Frame fDialogParent;
+
+    protected MenuBuilder() {
+    }
+    
+    protected final void doCreateMenus(MTextPanel textPanel, Frame frame, int[] menus) {
+    
+        fTextPanel = textPanel;
+        fDialogParent = frame;
+        
+        for (int i=0; i < menus.length; i++) {
+            switch(menus[i]) {
+                case EDIT:
+                    createEditMenu();
+                    break;
+                case SIZE:
+                    createSizeMenu();
+                    break;
+                case STYLE:
+                    createStyleMenu();
+                    break;
+                case FLUSH:
+                    createFlushMenu();
+                    break;
+                case KEYMAP:
+                    createKeymapMenu();
+                    break;
+                case BIDI:
+                    createBidiMenu();
+                    break;
+                case ABOUT:
+                    createAboutMenu();
+                    break;
+                default:
+                    throw new IllegalArgumentException("Illegal menu: " + menus[i]);
+            }
+        }
+                    
+        fTextPanel = null;
+        fDialogParent = null;
+    }
+    
+    protected abstract void handleAddMenu(String key);
+    
+    protected abstract DialogFactory createObjectDialogFactory(String dialogTitle,
+                                                               String dialogText,
+                                                               Object key,
+                                                               boolean character,
+                                                               String[] names,
+                                                               Object[] values);
+
+    protected abstract DialogFactory createNumberDialogFactory(String dialogTitle,
+                                                               String dialogText,
+                                                               Object key,
+                                                               boolean character);
+
+    protected abstract DialogFactory createAboutDialogFactory();
+
+    private void createEditMenu() {
+        
+        handleAddMenu(FrameResources.EDIT);
+        
+        new CommandMenuItem.UndoRedo(ResourceUtils.getMenuData(FrameResources.UNDO),
+                                    CommandMenuItem.UndoRedo.UNDO).setTextPanel(fTextPanel);
+        new CommandMenuItem.UndoRedo(ResourceUtils.getMenuData(FrameResources.REDO),
+                                    CommandMenuItem.UndoRedo.REDO).setTextPanel(fTextPanel);
+        MItem.getItemFactory().createSeparator();
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.CUT),
+                                        CommandMenuItem.CutCopyClear.CUT).setTextPanel(fTextPanel);
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.COPY),
+                                        CommandMenuItem.CutCopyClear.COPY).setTextPanel(fTextPanel);
+        new CommandMenuItem.Paste(ResourceUtils.getMenuData(FrameResources.PASTE)).setTextPanel(fTextPanel);
+        new CommandMenuItem.CutCopyClear(ResourceUtils.getMenuData(FrameResources.CLEAR),
+                                        CommandMenuItem.CutCopyClear.CLEAR).setTextPanel(fTextPanel);
+        MItem.getItemFactory().createSeparator();
+        new CommandMenuItem.SelectAll(ResourceUtils.getMenuData(FrameResources.SELECT_ALL)).setTextPanel(fTextPanel);
+    }
+    
+    private static final float[] DEFAULT_SIZES =
+                                    {9, 10, 12, 14, 18, 24, 36, 48, 72};
+
+    private void createSizeMenu() {
+        
+        createSizeMenu(DEFAULT_SIZES);
+    }
+    
+    private void createSizeMenu(float[] sizes) {
+                
+        handleAddMenu(FrameResources.SIZE);
+
+        if (sizes != DEFAULT_SIZES) {
+
+            sizes = (float[]) sizes.clone();
+            if (sizes.length == 0) {
+                throw new IllegalArgumentException("sizes array has zero length");
+            }
+
+            float lastValue = sizes[0];
+            for (int i=1; i < sizes.length; i++) {
+                if (sizes[i] >= lastValue) {
+                    throw new IllegalArgumentException(
+                                                "sizes array must be increasing");
+                }
+                lastValue = sizes[i];
+            }
+        }
+        
+        Float[] values = new Float[sizes.length];
+        MenuData[] mData = new MenuData[sizes.length];
+        NumberFormat fmt = NumberFormat.getNumberInstance();
+        
+        for (int i=0; i < sizes.length; i++) {
+            values[i] = new Float(sizes[i]);
+            mData[i] = new MenuData(fmt.format(sizes[i]));
+        }
+        
+        new StyleMenuItemSet(TextAttribute.SIZE,
+                                values,
+                                mData,
+                                MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+            
+        if (fDialogParent != null) {
+            String dialogTitle = ResourceUtils.getResourceString(FrameResources.SET_SIZE_TITLE);
+            String dialogText = ResourceUtils.getResourceString(FrameResources.SET_SIZE_LABEL);
+            DialogFactory factory = createNumberDialogFactory(dialogTitle,
+                                                              dialogText,
+                                                              TextAttribute.SIZE,
+                                                              MenuItemSet.CHARACTER);
+                                                              
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.OTHER_DIALOG), 
+                            factory).setTextPanel(fTextPanel);
+        }
+    }
+    
+    private void createStyleMenu() {
+        
+        handleAddMenu(FrameResources.STYLE);
+
+        Object[] keys =    { TextAttribute.WEIGHT,
+                             TextAttribute.POSTURE,
+                             TextAttribute.UNDERLINE,
+                             TextAttribute.STRIKETHROUGH,
+                             TextAttribute.SUPERSCRIPT,
+                             TextAttribute.SUPERSCRIPT};
+        Object[] values =  { TextAttribute.WEIGHT_BOLD,
+                             TextAttribute.POSTURE_OBLIQUE,
+                             TextAttribute.UNDERLINE_ON,
+                             TextAttribute.STRIKETHROUGH_ON, 
+                             new Integer(1),
+                             new Integer(-1)};
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.BOLD),
+                             ResourceUtils.getMenuData(FrameResources.ITALIC),
+                             ResourceUtils.getMenuData(FrameResources.UNDERLINE),
+                             ResourceUtils.getMenuData(FrameResources.STRIKETHROUGH),
+                             ResourceUtils.getMenuData(FrameResources.SUPERSCRIPT),
+                             ResourceUtils.getMenuData(FrameResources.SUBSCRIPT)};
+
+        new SubtractStyleMenuItem(keys, 
+                                    ResourceUtils.getMenuData(FrameResources.PLAIN),
+                                    MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+                                                 
+        for (int i=0; i < keys.length; i++) {
+            new BooleanStyleMenuItem(keys[i],
+                                        values[i],
+                                        mData[i],
+                                        MenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+        }
+            
+        if (fDialogParent != null) {
+            
+            MItem.getItemFactory().createSeparator();
+            
+            String[] fonts = FontList.getFontList();
+            String title = ResourceUtils.getResourceString(FrameResources.SET_FONT_TITLE);
+            String label = ResourceUtils.getResourceString(FrameResources.SET_FONT_LABEL);
+            
+            DialogFactory fontF = createObjectDialogFactory(title, 
+                                                            label,
+                                                            TextAttribute.FAMILY,
+                                                            StyleMenuItemSet.CHARACTER,
+                                                            fonts,
+                                                            fonts);
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.FONT_DIALOG),
+                                    fontF).setTextPanel(fTextPanel);
+
+            DialogFactory foregroundF = createColorDialogFactory(true);
+            DialogFactory backgroundF = createColorDialogFactory(false);
+            
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.FORECOLOR_DIALOG),
+                                    foregroundF).setTextPanel(fTextPanel);
+            new DialogItem(ResourceUtils.getMenuData(FrameResources.BACKCOLOR_DIALOG),
+                                    backgroundF).setTextPanel(fTextPanel);
+            }
+    }
+
+    private DialogFactory createColorDialogFactory(boolean foreground) {
+        
+        String title;
+        String message;
+        Object key;
+        
+        if (foreground) {
+            title = ResourceUtils.getResourceString(FrameResources.SET_FOREGROUND_TITLE);
+            message = ResourceUtils.getResourceString(FrameResources.SET_FOREGROUND_LABEL);
+            key = TextAttribute.FOREGROUND;
+        }
+        else {
+            title = ResourceUtils.getResourceString(FrameResources.SET_BACKGROUND_TITLE);
+            message = ResourceUtils.getResourceString(FrameResources.SET_BACKGROUND_LABEL);
+            key = TextAttribute.BACKGROUND;
+        }
+        return createObjectDialogFactory(title, 
+                                         message,
+                                         key,
+                                         StyleMenuItemSet.CHARACTER,
+                                         colorNames,
+                                         colors);
+    }
+    
+//    private void createFontMenu() {
+//        
+//        handleAddMenu(FrameResources.FONT);
+//        
+//        String[] fonts = FontList.getFontList();
+//        MenuData[] mData = new MenuData[fonts.length];
+//        for (int i=0; i < mData.length; i++) {
+//            mData[i] = new MenuData(fonts[i]);
+//        }
+//        
+//        new StyleMenuItemSet(TextAttribute.FAMILY,
+//                                fonts,
+//                                mData,
+//                                StyleMenuItemSet.CHARACTER).setTextPanel(fTextPanel);
+//    }
+    
+    private void createFlushMenu() {
+        
+        handleAddMenu(FrameResources.FLUSH);
+        
+        Object[] values = {  TextAttribute.FLUSH_LEADING,
+                             TextAttribute.FLUSH_CENTER,
+                             TextAttribute.FLUSH_TRAILING,
+                             TextAttribute.FULLY_JUSTIFIED };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.LEADING),
+                             ResourceUtils.getMenuData(FrameResources.CENTER),
+                             ResourceUtils.getMenuData(FrameResources.TRAILING),
+                             ResourceUtils.getMenuData(FrameResources.JUSTIFIED) };
+        
+        new StyleMenuItemSet(TextAttribute.LINE_FLUSH,
+                                values,
+                                mData,
+                                MenuItemSet.PARAGRAPH).setTextPanel(fTextPanel);
+    }
+    
+    private void createKeymapMenu() {
+        
+        handleAddMenu(FrameResources.KEYMAP);
+        
+        KeyRemap[] values = { KeyRemap.getIdentityRemap(),
+                             KeyRemap.getArabicTransliteration(),
+                             KeyRemap.getHebrewTransliteration(),
+                             KeyRemap.getIsraelNikud(),
+                             KeyRemap.getThaiKetmanee() };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.DEFAULT),
+                             ResourceUtils.getMenuData(FrameResources.ARABIC),
+                             ResourceUtils.getMenuData(FrameResources.HEBREW),
+                             ResourceUtils.getMenuData(FrameResources.ISRAEL_NIKUD),
+                             ResourceUtils.getMenuData(FrameResources.THAI_KETMANEE) };
+        
+        new KeymapMenuItemSet(values, mData).setTextPanel(fTextPanel);
+    }
+    
+    private void createBidiMenu() {
+        
+        handleAddMenu(FrameResources.BIDI);
+        
+        Object[] values = {  null,
+                             TextAttribute.RUN_DIRECTION_LTR,
+                             TextAttribute.RUN_DIRECTION_RTL };
+        MenuData[] mData = { ResourceUtils.getMenuData(FrameResources.DEFAULT_DIRECTION),
+                             ResourceUtils.getMenuData(FrameResources.LTR_DIRECTION),
+                             ResourceUtils.getMenuData(FrameResources.RTL_DIRECTION), };
+
+        new StyleMenuItemSet(TextAttribute.RUN_DIRECTION,
+                                values,
+                                mData,
+                                MenuItemSet.PARAGRAPH).setTextPanel(fTextPanel);
+    }
+    
+    private void createAboutMenu() {
+        
+        handleAddMenu(FrameResources.ABOUT_MENU);
+        
+        new DialogItem(ResourceUtils.getMenuData(FrameResources.ABOUT_ITEM), 
+                       createAboutDialogFactory()).setTextPanel(fTextPanel);
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/MenuItemSet.java b/src/com/ibm/richtext/uiimpl/MenuItemSet.java
new file mode 100644
index 0000000..6ba1388
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/MenuItemSet.java
@@ -0,0 +1,51 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.textpanel.TextPanelListener;
+
+public abstract class MenuItemSet implements TextPanelListener {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    public static final boolean CHARACTER = true;
+    public static final boolean PARAGRAPH = false;
+
+    private MTextPanel fTextPanel = null;
+    
+    public abstract void textEventOccurred(TextPanelEvent event);
+    public abstract boolean respondsToEventType(int type);
+    
+    public final void setTextPanel(MTextPanel textPanel) {
+        
+        if (fTextPanel != null) {
+            fTextPanel.removeListener(this);
+        }
+        fTextPanel = textPanel;
+        if (fTextPanel != null) {
+            fTextPanel.addListener(this);
+        }
+        
+        textPanelChanged();
+    }
+    
+    public final MTextPanel getTextPanel() {
+        
+        return fTextPanel;
+    }
+    
+    protected void textPanelChanged() {
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/ResourceUtils.java b/src/com/ibm/richtext/uiimpl/ResourceUtils.java
new file mode 100644
index 0000000..abb0e5d
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/ResourceUtils.java
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.ResourceBundle;
+import java.util.MissingResourceException;
+
+import com.ibm.richtext.uiimpl.resources.FrameResources;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public class ResourceUtils {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static ResourceBundle BUNDLE;
+    static {
+        try {
+            BUNDLE = ResourceBundle.getBundle("com.ibm.richtext.uiimpl.resources.FrameResources");
+        }
+        catch(MissingResourceException e) {
+            System.out.println("Couldn't load resourceXXX.  " +
+                               "Exception: " + e);
+            BUNDLE = new FrameResources();
+        }
+    }
+
+    public static MenuData getMenuData(String key) {
+        
+        return (MenuData) BUNDLE.getObject(key);
+    }
+    
+    public static String getResourceString(String key) {
+        
+        return BUNDLE.getString(key);
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java b/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java
new file mode 100644
index 0000000..8a677f4
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/SingleCheckMenuItem.java
@@ -0,0 +1,43 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public abstract class SingleCheckMenuItem extends MenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    protected MItem fItem;
+    
+    SingleCheckMenuItem(MenuData menuData) {
+        
+        fItem = MItem.createCheckboxItem(menuData);
+    }
+    
+    abstract void setChecked();
+    
+    protected final void textPanelChanged() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            fItem.setEnabled(false);
+            fItem.setState(false);
+        }
+        else {
+            fItem.setEnabled(true);
+            setChecked();
+        }
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java b/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java
new file mode 100644
index 0000000..576b2a5
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/StyleMenuItemSet.java
@@ -0,0 +1,88 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class StyleMenuItemSet extends ChoiceMenuItemSet {
+    
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+
+    private Object fKey;
+    private boolean fCharacter;
+
+    public StyleMenuItemSet(Object style,
+                            Object[] values,
+                            MenuData[] menuData,
+                            boolean character) {
+        
+        super(values, menuData);
+        fKey = style;
+        fCharacter = character;
+    }
+    
+    protected void handleValueSelected(Object value) {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Menu item is enabled when panel is null!");
+        }
+        
+        StyleModifier modifier;
+        if (value == null) {
+            AttributeSet set = new AttributeSet(fKey);
+            modifier = StyleModifier.createRemoveModifier(set);
+        }
+        else {
+            modifier = StyleModifier.createAddModifier(fKey, value);
+        }
+                    
+        if (fCharacter == CHARACTER) {
+            textPanel.modifyCharacterStyleOnSelection(modifier);
+        }
+        else {
+            textPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+    
+    protected Object getCurrentValue() {
+        
+        MTextPanel textPanel = getTextPanel();
+        if (textPanel == null) {
+            throw new Error("Shouldn't call this without a text panel!");
+        }
+        
+        if (fCharacter == CHARACTER) {
+            return textPanel.getCharacterStyleOverSelection(fKey);
+        }
+        else {
+            return textPanel.getParagraphStyleOverSelection(fKey);
+        }
+    }
+
+    public void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+    
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java b/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java
new file mode 100644
index 0000000..f8af085
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/SubtractStyleMenuItem.java
@@ -0,0 +1,102 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.util.EventObject;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.AttributeSet;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+import com.ibm.richtext.uiimpl.resources.MenuData;
+
+public final class SubtractStyleMenuItem extends SingleCheckMenuItem {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private final Object[] fKeys;
+    
+    private final boolean fCharacter;
+    
+    public SubtractStyleMenuItem(Object[] keys,
+                                 MenuData menuData,
+                                 boolean character) {
+        
+        super(menuData);
+        
+        fKeys = (Object[]) keys.clone();
+        fCharacter = character;
+        
+        AttributeSet keySet = new AttributeSet(keys);
+        final StyleModifier modifier = StyleModifier.createRemoveModifier(keySet);
+        
+        fItem.addListener(new EventListener() {
+            public void eventOccurred(EventObject event) {
+                MTextPanel panel = getTextPanel();
+                if (panel == null) {
+                    throw new Error("Menu item is enabled when panel is null!");
+                }
+
+                if (fCharacter == CHARACTER) {
+                    panel.modifyCharacterStyleOnSelection(modifier);
+                }
+                else {
+                    panel.modifyParagraphStyleOnSelection(modifier);
+                }
+            }
+        });
+    }
+    
+    private static boolean objectsAreEqual(Object lhs, Object rhs) {
+    
+        if (lhs == null) {
+            return rhs == null;
+        }
+        else {
+            return lhs.equals(rhs);
+        }
+    }
+
+    protected void setChecked() {
+
+        MTextPanel panel = getTextPanel();
+        AttributeMap defaults = panel.getDefaultValues();
+        
+        for (int i=0; i < fKeys.length; i++) {
+            Object defaultV = defaults.get(fKeys[i]);
+            
+            Object value = (fCharacter == CHARACTER)? 
+                    panel.getCharacterStyleOverSelection(fKeys[i]) :
+                    panel.getParagraphStyleOverSelection(fKeys[i]);
+                    
+            if (!objectsAreEqual(defaultV, value)) {
+                fItem.setState(false);
+                return;
+            }
+        }
+
+        fItem.setState(true);
+    }
+
+    public boolean respondsToEventType(int type) {
+        
+        return type == TextPanelEvent.SELECTION_STYLES_CHANGED;
+    }
+    
+    public final void textEventOccurred(TextPanelEvent event) {
+        
+        setChecked();
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/TabRulerImpl.java b/src/com/ibm/richtext/uiimpl/TabRulerImpl.java
new file mode 100644
index 0000000..6286a71
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/TabRulerImpl.java
@@ -0,0 +1,903 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Image;
+
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseEvent;
+
+import com.ibm.richtext.textlayout.attributes.AttributeMap;
+import com.ibm.richtext.textlayout.attributes.TextAttribute;
+
+import com.ibm.richtext.styledtext.MTabRuler;
+import com.ibm.richtext.styledtext.StandardTabRuler;
+import com.ibm.richtext.styledtext.TabStop;
+import com.ibm.richtext.styledtext.StyleModifier;
+
+import com.ibm.richtext.textpanel.TextPanelListener;
+import com.ibm.richtext.textpanel.MTextPanel;
+import com.ibm.richtext.textpanel.TextPanel;
+import com.ibm.richtext.textpanel.TextPanelEvent;
+
+/**
+ * TabRuler is a Component which presents a user interface for
+ * setting the leading margin, trailing margin, first line indent,
+ * and tab types and positions.
+ * <p>
+ * TabRuler does not implement TextPanelListener directly;  however,
+ * it can receive updates from a MTextPanel.  To have a TabRuler listen
+ * to a panel, call <code>listenToPanel</code>.  TabRuler responds to
+ * user manipulation by modifying the paragraph styles on its MTextPanel
+ * (if any).
+ */
+public final class TabRulerImpl implements MouseListener, MouseMotionListener
+{
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private static final class TabStopBuffer {
+        public int fPosition;
+        public byte fType;
+
+        TabStopBuffer(int position, byte type) {
+            fPosition = position;
+            fType = type;
+        }
+
+        TabStopBuffer(TabStop tab) {
+            this(tab.getPosition(), tab.getType());
+        }
+
+        TabStop getTabStop() {
+            return new TabStop(fPosition, fType);
+        }
+    }
+
+    private static final class TabRulerModifier extends StyleModifier {
+
+        private TabStop fOldTab; // tab to remove
+        private TabStop fNewTab; // tab to add
+        private AttributeMap fPanelDefaults;
+        
+        TabRulerModifier(TabStop oldTab,
+                         TabStop newTab,
+                         AttributeMap panelDefaults) {
+            fOldTab = oldTab;
+            fNewTab = newTab;
+            fPanelDefaults = panelDefaults;
+        }
+
+        public AttributeMap modifyStyle(AttributeMap oldStyle) {
+
+            MTabRuler oldRuler = (MTabRuler) getWithDefault(TextAttribute.TAB_RULER, 
+                                                            oldStyle, 
+                                                            fPanelDefaults);
+            MTabRuler ruler = oldRuler;
+
+            if (fOldTab != null) {
+                if (ruler.containsTab(fOldTab)) {
+                    ruler = ruler.removeTab(fOldTab.getPosition());
+                }
+            }
+            if (fNewTab != null) {
+                ruler = ruler.addTab(fNewTab);
+            }
+
+            if (ruler != oldRuler) {
+                return oldStyle.addAttribute(TextAttribute.TAB_RULER, ruler);
+            }
+            else {
+                return oldStyle;
+            }
+        }
+    }
+
+    private static final class ImageCache {
+
+        static final String COPYRIGHT =
+                    "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private Image fImage = null;
+        private boolean fIsValid = false;
+        private Component fComponent;   // workaround for compiler bug, 
+                                        // should just be able to say Component.this
+                                        // if this were not a static class
+        
+        ImageCache(Component component) {
+        
+            fComponent = component;
+        }
+
+        Graphics getGraphics(int width, int height) {
+
+            if (width <= 0 || height <= 0) {
+                return null;
+            }
+            
+            Image image = fImage;
+            if (image == null || image.getWidth(fComponent) < width
+                              || image.getHeight(fComponent) < height) {
+        if (!fComponent.isVisible()) { // fix race condition if component not fully initialized
+            return null;
+        }
+                image = fComponent.createImage(width, height);
+            }
+            Graphics g = image.getGraphics();
+            fImage = image;
+            return g;
+        }
+
+        void drawImage(Graphics g, int x, int y, Color color) {
+
+            if (!fIsValid) {
+                throw new Error("Drawing image when not valid");
+            }
+            g.drawImage(fImage, x, y, color, fComponent);
+        }
+
+        boolean isValid() {
+
+            return fIsValid;
+        }
+
+        void setValid(boolean isValid) {
+
+            fIsValid = isValid;
+        }
+    }
+
+    /**
+    * This class listens to a MTextPanel for changes which
+    * affect a TabRuler's appearance, and updates the TabRuler
+    * as necessary.
+    * @see TabRuler
+    * @see com.ibm.richtext.textpanel.MTextPanel
+    */
+    private static final class Updater implements TextPanelListener {
+
+        static final String COPYRIGHT =
+                    "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+        private TabRulerImpl fTabRuler;
+        private MTextPanel fTextPanel;
+
+        /**
+        * Create a new TabRulerUpdater.
+        * @param tabRuler the TabRuler to update when a change occurs
+        *     in the MTextPanel
+        */
+        Updater(TabRulerImpl tabRuler) {
+
+            fTabRuler = tabRuler;
+        }
+
+        /**
+        * Remove self as listener from previous MTextPanel,
+        * set current MTextPanel and listen to it (if not null).
+        */
+        void setTextPanel(MTextPanel textPanel) {
+
+            if (fTextPanel != null) {
+                fTextPanel.removeListener(this);
+            }
+
+            fTextPanel = textPanel;
+
+            if (fTextPanel != null) {
+                fTextPanel.addListener(this);
+                setAll();
+            }
+        }
+
+        private void setAll() {
+
+            int offset = fTextPanel.getSelectionStart();
+            boolean leftToRight = fTextPanel.paragraphIsLeftToRight(offset);
+            AttributeMap style = fTextPanel.getText().paragraphStyleAt(offset);
+            fTabRuler.set(style, false);
+            fTabRuler.setFormatWidth(fTextPanel.getFormatWidth(), false);
+            fTabRuler.setLeftToRight(leftToRight, true);
+        }
+
+        /**
+        * TextPanelListener method.  This class responds to text
+        * changes by updating its TabRuler.
+        */
+        public void textEventOccurred(TextPanelEvent event) {
+
+            int changeCode = event.getID();
+
+            if (changeCode == TextPanelEvent.SELECTION_STYLES_CHANGED ||
+                    changeCode == TextPanelEvent.TEXT_CHANGED) {
+
+                int offset = fTextPanel.getSelectionStart();
+                AttributeMap style = fTextPanel.getText().paragraphStyleAt(offset);
+                boolean leftToRight = fTextPanel.paragraphIsLeftToRight(offset);
+                fTabRuler.set(style, false);
+                fTabRuler.setLeftToRight(leftToRight, true);
+            }
+            else if (changeCode == TextPanelEvent.FORMAT_WIDTH_CHANGED) {
+                
+                fTabRuler.setFormatWidth(fTextPanel.getFormatWidth(), true);
+            }
+        }
+        
+        /**
+        * TextPanelListener method.
+        */
+        public boolean respondsToEventType(int type) {
+            
+            return type == TextPanelEvent.SELECTION_STYLES_CHANGED ||
+                    type == TextPanelEvent.TEXT_CHANGED ||
+                    type == TextPanelEvent.FORMAT_WIDTH_CHANGED;
+        }
+    }
+
+    /**
+     * The default background color for TabRulers.
+     * @see #setBackColor
+     */
+    public static final Color DEFAULT_BACK_COLOR = Color.lightGray;
+
+    private static final int kTrackNone = 0;
+    private static final int kTrackTab = 1;
+    private static final int kTrackLM = 2;
+    private static final int kTrackFLI = 3;
+    private static final int kTrackTM = 4;
+
+    private Component fHost;
+    private MTabRuler fRuler;
+    private int fLeadingMargin;
+    private int fFirstLineIndent;
+    private int fFormatWidth;
+    private int fTrailingMarginPosition; // opposite of actual trailing margin
+    private boolean fLeftToRight;
+    private int fBaseline;
+    private int fOrigin;
+    private Color fBackColor = DEFAULT_BACK_COLOR;
+
+    private int fTrackItem; // 0 - none, 1 - tab, 2 - lm, 3 - fli, 4 - tm
+    private TabStopBuffer fTrackTab;
+    private TabStop fOldTab;
+    private int fTrackDelta;
+    private boolean fTrackVisible;
+    private Updater fUpdater;
+    private MTextPanel fTextPanel = null;
+
+    private ImageCache fImageCache;
+
+    /**
+     * Create a new TabRuler.
+     * @param baseline the y-coordinate of the ruler's baseline
+     * @param origin the x-coordinate in this Component where
+     *     the left margin appears
+     * @param textPanel the MTextPanel to listen to.  This TabRuler
+     *     will reflect the MTextPanel's paragraph styles, and update
+     *     the paragraph styles when manipulated.
+     */
+    public TabRulerImpl(int baseline, 
+                        int origin, 
+                        MTextPanel textPanel,
+                        Component host) {
+
+        fHost = host;
+        fImageCache = new ImageCache(host);
+        fUpdater = new Updater(this);
+        fBaseline = baseline;
+        fOrigin = origin;
+        host.addMouseListener(this);
+        host.addMouseMotionListener(this);
+        if (textPanel != null) {
+            listenToTextPanel(textPanel);
+        }
+        else {
+            fRuler = new StandardTabRuler();
+        }
+    }
+
+    /**
+     * Listen to the given MTextPanel and reflect its changes,
+     * and update its paragraph styles when TabRuler is
+     * manipulated.
+     * @param textPanel the MTextPanel to listen to
+     */
+    public void listenToTextPanel(MTextPanel textPanel) {
+
+        fTextPanel = textPanel;
+        fUpdater.setTextPanel(textPanel);
+    }
+
+    /**
+     * Return the background color of this TabRuler.
+     * @return the background color of this TabRuler
+     */
+    public Color getBackColor() {
+
+        return fBackColor;
+    }
+
+    /**
+     * Set the background color of this TabRuler.
+     * @param backColor the new background color of this TabRuler
+     */
+    public void setBackColor(Color backColor) {
+
+        if (!backColor.equals(fBackColor)) {
+            fBackColor = backColor;
+            Graphics g = fHost.getGraphics();
+            if (g != null) {
+                paint(g);
+            }
+        }
+    }
+
+    private static Object getWithDefault(Object key,
+                                         AttributeMap style,
+                                         AttributeMap defaults) {
+        Object value = style.get(key);
+        if (value == null) {
+            value = defaults.get(key);
+        }
+        return value;
+    }
+
+    private static float getFloatWithDefault(Object key,
+                                             AttributeMap style,
+                                             AttributeMap defaults) {
+        Object value = getWithDefault(key, style, defaults);
+        return ((Float)value).floatValue();
+    }
+    
+    private void setLeftToRight(boolean leftToRight, boolean update) {
+        
+        if (fLeftToRight != leftToRight) {
+            
+            fLeftToRight = leftToRight;
+            redrawSelf(update);
+        }
+    }
+
+    private void setFormatWidth(int formatWidth, boolean update) {
+        
+        if (fFormatWidth != formatWidth) {
+            
+            fTrailingMarginPosition += (formatWidth - fFormatWidth);
+            fFormatWidth = formatWidth;
+            redrawSelf(update);
+        }
+    }
+    
+    /**
+     * Set TabRuler from values in paragraphStyle.  Only TabRulerUpdater
+     * should call this method.
+     * @param paragraphStyle the paragraph style which the TabRuler will
+     *     reflect
+     */
+    private void set(AttributeMap paragraphStyle, boolean update) {
+
+        AttributeMap panelDefaults;
+        
+        if (fTextPanel==null) {
+            panelDefaults = TextPanel.getDefaultSettings().getDefaultValues();
+        }
+        else {
+             panelDefaults = fTextPanel.getDefaultValues();
+        }
+                                                         
+        int leadingMargin =  (int) getFloatWithDefault(TextAttribute.LEADING_MARGIN,
+                                                       paragraphStyle,
+                                                       panelDefaults);
+        int firstLineIndent = (int) getFloatWithDefault(TextAttribute.FIRST_LINE_INDENT,
+                                                        paragraphStyle,
+                                                        panelDefaults);
+        int trailingMargin = (int) getFloatWithDefault(TextAttribute.TRAILING_MARGIN,
+                                                       paragraphStyle,
+                                                       panelDefaults);
+
+        MTabRuler ruler = (MTabRuler) getWithDefault(TextAttribute.TAB_RULER,
+                                                     paragraphStyle,
+                                                     panelDefaults);
+
+        int ourFli = leadingMargin + firstLineIndent;
+        int ourTmp = fFormatWidth - trailingMargin;
+        
+        if (leadingMargin == fLeadingMargin &&
+                fFirstLineIndent == ourFli &&
+                fTrailingMarginPosition == ourTmp &&
+                ruler.equals(fRuler)) {
+            return;
+        }
+        
+        fLeadingMargin = leadingMargin;
+        fFirstLineIndent = ourFli;
+        fTrailingMarginPosition = ourTmp;
+        fRuler = ruler;
+    
+        redrawSelf(update);
+    }
+    
+    private void redrawSelf(boolean drawNow) {
+
+        fImageCache.setValid(false);
+
+        Graphics g = fHost.getGraphics();
+        if (g != null)
+            paint(g);
+    }
+
+    /**
+     * Return debugging info.
+     */
+    public String toString() {
+
+        return "TabRuler{fLeadingMargin="+fLeadingMargin+
+                "}{fFirstLineIndent="+fFirstLineIndent+
+                "}{fFormatWidth="+fFormatWidth+
+                "}{fTrailingMarginPosition="+fTrailingMarginPosition+
+                "}{fRuler="+fRuler+
+                "}";
+    }
+
+    /**
+     * Return the MTabRuler represented by this TabRuler.
+     * @return the MTabRuler represented by this TabRuler
+     */
+    public MTabRuler getRuler()
+    {
+        return fRuler;
+    }
+
+    /**
+     * Return the leading margin of this TabRuler.
+     * @return the leading margin of this TabRuler
+     */
+    public int getLeadingMargin()
+    {
+        return fLeadingMargin;
+    }
+
+    /**
+     * Return the first line indent of this TabRuler.
+     * @return the first line indent of this TabRuler
+     */
+    public int getFirstLineIndent()
+    {
+        return fFirstLineIndent - fLeadingMargin;
+    }
+
+    /**
+     * Return the trailing margin of this TabRuler.
+     * @return the trailing margin of this TabRuler
+     */
+    public final int getTrailingMargin()
+    {
+        return fFormatWidth - fTrailingMarginPosition;
+    }
+    
+    private int visualToRulerPos(int visPos) {
+        
+        if (fLeftToRight) {
+            return visPos - fOrigin;
+        }
+        else {
+            return fOrigin + fFormatWidth - visPos;
+        }
+    }
+    
+    private int rulerToVisualPos(int rulerPos) {
+        
+        if (fLeftToRight) {
+            return fOrigin + rulerPos;
+        }
+        else {
+            return fOrigin + fFormatWidth - rulerPos;
+        }
+    }
+    
+    private int dirMult() {
+        
+        return fLeftToRight? 1 : -1;
+    }
+
+    /**
+     * @param tabPosition the logical (ruler) position of the tab
+     */
+    private void drawTab(Graphics g, int tabPosition, byte tabType, int tabTop, int tabBottom)
+    {
+        int pos = rulerToVisualPos(tabPosition);
+        int wid = 0;
+        switch (tabType) {
+            case TabStop.kLeading: wid = 3; break;
+            case TabStop.kCenter: wid = 0; break;
+            case TabStop.kTrailing: wid = -3; break;
+            case TabStop.kDecimal: wid = 0; break;
+            default: break;
+        }
+        wid *= dirMult();
+        
+        if (tabType != TabStop.kAuto) {
+            g.drawLine(pos, tabTop, pos, tabBottom);
+            if (wid != 0)
+                g.drawLine(pos, tabBottom, pos + wid, tabBottom);
+        }
+        g.drawLine(pos-2, tabTop+2, pos, tabTop);
+        g.drawLine(pos, tabTop, pos+2, tabTop+2);
+        if (tabType == TabStop.kDecimal) {
+            g.drawLine(pos + 3, tabBottom, pos + 4, tabBottom);
+        }
+    }
+
+    private void drawLM(Graphics g)
+    {
+        int pos = rulerToVisualPos(fLeadingMargin);
+        int[] xpts = { pos, pos, pos + (4*dirMult()), pos };
+        int[] ypts = { fBaseline + 12, fBaseline + 7, fBaseline + 7, fBaseline + 12 };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private void drawFLI(Graphics g)
+    {
+        int pos = rulerToVisualPos(fFirstLineIndent);
+        int[] xpts = { pos, pos, pos + (4*dirMult()), pos };
+        int[] ypts = { fBaseline, fBaseline + 5, fBaseline + 5, fBaseline };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private void drawRM(Graphics g)
+    {
+        int pos = rulerToVisualPos(fTrailingMarginPosition);
+        int[] xpts = { pos, pos, pos - (6*dirMult()), pos };
+        int[] ypts = { fBaseline, fBaseline + 12, fBaseline + 6, fBaseline };
+        g.fillPolygon(xpts, ypts, 3);
+        g.drawPolygon(xpts, ypts, 4);
+    }
+
+    private static int alignInt(int value) {
+        
+        return (int)((int)(value / 4.5) * 4.5);
+    }
+
+    private static final int[] fgLengths = { 10, 2, 4, 2, 6, 2, 4, 2 };
+
+    /**
+     * Component method override.
+     */
+    public void paint(Graphics g)
+    {
+        Dimension size = fHost.getSize();
+
+        int width = size.width;
+        int baseline = fBaseline;
+        int baseline2 = baseline + 2;
+        int baseline10 = baseline + 10;
+        int baseline12 = baseline + 12;
+
+        if (!fImageCache.isValid()) {
+
+            Graphics gCache = fImageCache.getGraphics(width, baseline12 + 1);
+            if (gCache == null) {
+                return;
+            }
+            
+            // set background color
+
+            gCache.setColor(fBackColor);
+            gCache.setPaintMode();
+            gCache.fillRect(0, 0, width, baseline12 + 1);
+
+            // paint ticks
+
+            gCache.setColor(Color.black);
+            gCache.drawLine(0, 0, width, 0);
+            gCache.drawLine(0, baseline, width, baseline);
+
+            int[] lengths = fgLengths;
+
+            int index = 0;
+            int inchnum = 0;
+            FontMetrics fm = null;
+            if (!fLeftToRight) {
+                fm = gCache.getFontMetrics();
+            }
+            
+            for (int i = 0; i < fFormatWidth; i += 9) {
+                int len = lengths[index];
+                int pos = rulerToVisualPos(i);
+                gCache.drawLine(pos, baseline, pos, baseline - len);
+
+                if (index == 0) {
+                    String str = Integer.toString(inchnum++);
+                    int drawX;
+                    if (fLeftToRight) {
+                        drawX = pos + 2;
+                    }
+                    else {
+                        drawX = pos - fm.stringWidth(str) - 2;
+                    }
+                        
+                    gCache.drawString(str, drawX, baseline - 2);
+                }
+
+                if (++index == lengths.length)
+                    index = 0;
+            }
+
+            // paint tabs
+            TabStop tab = fRuler.firstTab();
+            while (tab != null && tab.getPosition() < fTrailingMarginPosition) {
+                boolean dodraw = true;
+                if (tab.getType() == TabStop.kAuto) {
+                    if (tab.getPosition() <= Math.max(fLeadingMargin, fFirstLineIndent))
+                        dodraw = false;
+                    else if (tab.getPosition() >= fTrailingMarginPosition)
+                        dodraw = false;
+                }
+
+                if (dodraw)
+                    drawTab(gCache, tab.getPosition(), tab.getType(), baseline2, baseline10);
+
+                tab = fRuler.nextTab(tab.getPosition());
+            }
+
+            gCache.drawLine(0, baseline12, width, baseline12);
+
+            // paint others except for tracked item
+            if (fTrackItem != kTrackLM) drawLM(gCache);
+            if (fTrackItem != kTrackTM) drawRM(gCache);
+            if (fTrackItem != kTrackFLI && fTrackItem != kTrackLM) drawFLI(gCache);
+            fImageCache.setValid(true);
+        }
+
+        fImageCache.drawImage(g, 0, 0, Color.lightGray);
+
+        switch (fTrackItem) {
+            case kTrackTab: if (fTrackVisible) drawTab(g, fTrackTab.fPosition, fTrackTab.fType, baseline2, baseline10); break;
+            case kTrackLM: drawLM(g); drawFLI(g); break;
+            case kTrackTM: drawRM(g); break;
+            case kTrackFLI: drawFLI(g); break;
+            default: break;
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseClicked(MouseEvent e) {}
+    /**
+     * MouseListener method.
+     */
+    public void mouseEntered(MouseEvent e) {}
+    /**
+     * MouseListener method.
+     */
+    public void mouseExited(MouseEvent e) {}
+
+    /**
+     * MouseListener method.
+     */
+    public void mousePressed(MouseEvent e)
+    {
+        // find out if we hit a tabstop
+        int x = visualToRulerPos(e.getX());
+        int y = e.getY();
+
+        if (y > fBaseline && y < fBaseline + 12) {
+            if (y >= fBaseline + 7 && x >= fLeadingMargin - 3 && x <= fLeadingMargin + 3) {
+                fTrackItem = kTrackLM;
+                fTrackDelta = fLeadingMargin - x;
+            } else if (y < fBaseline + 7 && x >= fFirstLineIndent - 3 && x <= fFirstLineIndent + 3) {
+                fTrackItem = kTrackFLI;
+                fTrackDelta = fFirstLineIndent - x;
+            } else if (x >= fTrailingMarginPosition - 3 && x <= fTrailingMarginPosition + 3) {
+                fTrackItem = kTrackTM;
+                fTrackDelta = fTrailingMarginPosition - x;
+            } else if (e.isControlDown()) {
+                fTrackItem = kTrackTab;
+                fTrackTab = new TabStopBuffer(alignInt(x), TabStop.kLeading);
+                fTrackDelta = fTrackTab.fPosition - x;
+                fTrackVisible = true;
+            } else {
+                TabStop tab = fRuler.firstTab();
+                while (tab.getType() != TabStop.kAuto) {
+                    if (x < tab.getPosition() - 3)
+                        break;
+                    if (x < tab.getPosition() + 3) {
+                        fOldTab = tab;
+                        fTrackTab = new TabStopBuffer(tab);
+                        fRuler = fRuler.removeTab(fOldTab.getPosition());
+
+                        if (e.getClickCount() > 1) {
+                            switch (fTrackTab.fType) {
+                                case TabStop.kLeading: fTrackTab.fType = TabStop.kCenter; break;
+                                case TabStop.kCenter: fTrackTab.fType = TabStop.kTrailing; break;
+                                case TabStop.kTrailing: fTrackTab.fType = TabStop.kDecimal; break;
+                                case TabStop.kDecimal: fTrackTab.fType = TabStop.kLeading; break;
+                                default: break;
+                            }
+                        }
+                        fTrackItem = kTrackTab;
+                        fTrackDelta = tab.getPosition() - x;
+                        fTrackVisible = true;
+                        break;
+                    }
+
+                    tab = fRuler.nextTab(tab.getPosition());
+                }
+            }
+
+            if (fTrackItem != kTrackNone) {
+                fImageCache.setValid(false);
+                paint(fHost.getGraphics());
+                return;
+            }
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseDragged(MouseEvent e)
+    {
+        int x = visualToRulerPos(e.getX());
+        int y = e.getY();
+
+        if (fTrackItem != kTrackNone) {
+            boolean repaint = false;
+            boolean inrange = y > fBaseline && y < fBaseline + 12;
+            boolean inbigrange = y > 0 && y < fHost.getSize().height + 20;
+            int newpos = alignInt(x + fTrackDelta);
+            if (newpos < 0)
+                newpos = 0;
+
+            switch (fTrackItem) {
+                case kTrackTab: {
+                    if (inrange) {
+                        repaint = !fTrackVisible;
+                        fTrackVisible = true;
+                        if (newpos != fTrackTab.fPosition) {
+                            fTrackTab.fPosition = newpos;
+                            repaint = true;
+                        }
+                    } else if (fTrackVisible) {
+                        fTrackVisible = false;
+                        repaint = true;
+                    }
+                } break;
+
+/* It would be nice to optionally track the margin 'independently' of the first line indent.
+ Unfortunately this makes for more work when we have multiple paragraph styles selected.
+ Since internally the first line indent is relative to the margin, moving the margin
+ independently so that all affected paragraphs share the same margin but retain first
+ line indents in the 'same' positions means that I need to also adjust the first line
+ indents in each paragraph by some delta. I'm not ready to do that yet. */
+
+                case kTrackLM: {
+                    if (inbigrange && newpos != fLeadingMargin) {
+                        fFirstLineIndent += newpos - fLeadingMargin;
+                        fLeadingMargin = newpos;
+                        repaint = true;
+                    }
+                } break;
+
+                case kTrackFLI: {
+                    if (inbigrange && newpos != fFirstLineIndent) {
+                        fFirstLineIndent = newpos;
+                        repaint = true;
+                    }
+                } break;
+
+                case kTrackTM: {
+                    if (inbigrange && newpos != fTrailingMarginPosition) {
+                        fTrailingMarginPosition = newpos;
+                        repaint = true;
+                    }
+                } break;
+            }
+
+
+            if (repaint)
+                paint(fHost.getGraphics());
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseReleased(MouseEvent e)
+    {
+        if (fTrackItem != kTrackNone) {
+            if (fTrackItem == kTrackTab && fTrackVisible) {
+                fRuler = fRuler.addTab(fTrackTab.getTabStop());
+            } else {
+                fTrackTab = null;
+            }
+
+            notify(fTrackItem);
+
+            fTrackItem = kTrackNone;
+            fTrackTab = null;
+            fOldTab = null;
+
+            fImageCache.setValid(false);
+            paint(fHost.getGraphics());
+        }
+    }
+
+    /**
+     * MouseListener method.
+     */
+    public void mouseMoved(MouseEvent e) {}
+
+    private void notify(int change)
+    {
+        if (fTextPanel != null) {
+
+            StyleModifier modifier;
+
+            if (change == kTrackTab) {
+                TabStop newTab = fTrackTab==null? null : fTrackTab.getTabStop();
+                modifier = new TabRulerModifier(fOldTab, newTab, fTextPanel.getDefaultValues());
+            }
+            else {
+                Object key;
+                Object value;
+
+                switch(change) {
+                    case kTrackLM:
+                        key = TextAttribute.LEADING_MARGIN;
+                        value = new Float(getLeadingMargin());
+                        break;
+
+                    case kTrackTM:
+                        key = TextAttribute.TRAILING_MARGIN;
+                        value = new Float(getTrailingMargin());
+                        break;
+
+                    case kTrackFLI:
+                        key = TextAttribute.FIRST_LINE_INDENT;
+                        value = new Float(getFirstLineIndent());
+                        break;
+
+                    default:
+                        throw new Error("Invalid change code.");
+                }
+
+                modifier = StyleModifier.createAddModifier(key, value);
+            }
+
+            fTextPanel.modifyParagraphStyleOnSelection(modifier);
+        }
+    }
+
+    /**
+     * Component override.
+     */
+    public Dimension getMinimumSize()
+    {
+        return new Dimension(100, fBaseline + 13);
+    }
+
+    /**
+     * Component override.
+     */
+    public Dimension getPreferredSize()
+    {
+        return getMinimumSize();
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/resources/FrameResources.java b/src/com/ibm/richtext/uiimpl/resources/FrameResources.java
new file mode 100644
index 0000000..57c1e94
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/resources/FrameResources.java
@@ -0,0 +1,220 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2004, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************/
+package com.ibm.richtext.uiimpl.resources;
+
+import java.util.ListResourceBundle;
+import java.awt.event.KeyEvent;
+
+public final class FrameResources extends ListResourceBundle {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+/*
+ * These Strings are keys to other String resources.
+ */
+    // Menu names
+    public static final String EDIT = "Edit";
+    public static final String SIZE = "Size";
+    public static final String FONT = "Font";
+    public static final String STYLE = "Style";
+    public static final String FLUSH = "Flush";
+    public static final String KEYMAP = "Keymap";
+    public static final String ABOUT_MENU = "About";
+    public static final String BIDI = "Bidi";
+    
+    // Buttons
+    public static final String OK = "OK";
+    public static final String CANCEL = "Cancel";
+
+    // Colors
+    public static final String BLACK = "Black";
+    public static final String WHITE = "White";
+    public static final String GREEN = "Green";
+    public static final String BLUE = "Blue";
+    public static final String CYAN = "Cyan";
+    public static final String GRAY = "Gray";
+    public static final String DARK_GRAY = "Dark Gray";
+    public static final String LIGHT_GRAY = "Light Gray";
+    public static final String MAGENTA = "Magenta";
+    public static final String ORANGE = "Orange";
+    public static final String PINK = "Pink";
+    public static final String RED = "Red";
+    public static final String YELLOW = "Yellow";
+    public static final String NONE = "None";
+
+    // Dialog titles and messages
+    public static final String SET_SIZE_TITLE = "Set Font Size";
+    public static final String SET_SIZE_LABEL = "Font Size:";
+
+    public static final String SET_SUPERSCRIPT_TITLE = "Set Superscript";
+    public static final String SET_SUPERSCRIPT_LABEL = "Superscript:";
+    public static final String SET_SUBSCRIPT_TITLE = "Set Subscript";
+    public static final String SET_SUBSCRIPT_LABEL = "Subscript:";
+    public static final String SET_FOREGROUND_TITLE = "Set Foreground";
+    public static final String SET_FOREGROUND_LABEL = "Foreground:";
+    public static final String SET_BACKGROUND_TITLE = "Set Background";
+    public static final String SET_BACKGROUND_LABEL = "Background:";
+    public static final String SET_FONT_TITLE = "Set Font";
+    public static final String SET_FONT_LABEL = "Font:";
+
+    public static final String ABOUT_TITLE = "About the RichEdit Control";
+
+    // This is the only String which is not its own value:
+    public static final String ABOUT_TEXT = "About text";
+    private static final String ACTUAL_ABOUT_TEXT =
+        "Copyright (C) IBM Corp. 1996-2002 All rights reserved.\n\n" +
+        "John Raley\n" +
+        "Stephen F. Booth\n" +
+        "Doug Felt\n" +
+        "John Fitzpatrick\n" +
+        "Rich Gillam";
+/*
+ * The following Strings are keys to MenuData resources.  They
+ * also double as the default menu label text.
+ */
+    // Edit menu
+    public static final String UNDO = "Undo";
+    public static final String REDO = "Redo";
+    public static final String CUT = "Cut";
+    public static final String COPY = "Copy";
+    public static final String PASTE = "Paste";
+    public static final String CLEAR = "Clear";
+    public static final String SELECT_ALL = "Select All";
+
+    // Flush menu
+    public static final String LEADING = "Leading";
+    public static final String TRAILING = "Trailing";
+    public static final String CENTER = "Center";
+    public static final String JUSTIFIED = "Justified";
+
+    // About menu
+    public static final String ABOUT_ITEM = "About...";
+
+    // Keymap menu
+    public static final String DEFAULT = "Default";
+    public static final String ARABIC = "Arabic";
+    public static final String HEBREW = "Hebrew";
+    public static final String ISRAEL_NIKUD = "Israel Nikud";
+    public static final String THAI_KETMANEE = "Thai Ketmanee";
+
+    // Style menu
+    public static final String PLAIN = "Plain";
+    public static final String BOLD = "Bold";
+    public static final String ITALIC = "Italic";
+    public static final String UNDERLINE = "Underline";
+    public static final String STRIKETHROUGH = "Strikethrough";
+    public static final String SUPERSCRIPT = "Superscript";
+    public static final String SUBSCRIPT = "Subscript";
+    public static final String SUPERSCRIPT_DIALOG = "Superscript...";
+    public static final String SUBSCRIPT_DIALOG = "Subscript...";
+    public static final String FORECOLOR_DIALOG = "Forecolor...";
+    public static final String BACKCOLOR_DIALOG = "Backcolor...";
+    public static final String FONT_DIALOG = "Font...";
+    
+
+    // Size menu
+    public static final String OTHER_DIALOG = "Other...";
+    
+    // Bidi menu
+    public static final String DEFAULT_DIRECTION = "Default Paragraph Direction";
+    public static final String LTR_DIRECTION = "Left-to-right Paragraph Direction";
+    public static final String RTL_DIRECTION = "Right-to-left Paragraph Direction";
+
+    private static Object[] makeMenuData(String name,
+                                         char shortCutChar,
+                                         int shortCutKey) {
+
+        return new Object[] { name, new MenuData(name, shortCutChar, shortCutKey) };
+    }
+
+    private static Object[] makeMenuData(String name) {
+
+        return new Object[] { name, new MenuData(name) };
+    }
+
+    private static Object[] duplicate(Object obj) {
+
+        return new Object[] { obj, obj };
+    }
+
+    protected Object[][] getContents() {
+
+        return new Object[][] {
+            makeMenuData(UNDO, 'z', KeyEvent.VK_Z),
+            makeMenuData(REDO, 'r', KeyEvent.VK_R),
+            makeMenuData(CUT, 'x', KeyEvent.VK_X),
+            makeMenuData(COPY, 'c', KeyEvent.VK_C),
+            makeMenuData(PASTE, 'v', KeyEvent.VK_V),
+            makeMenuData(CLEAR),
+            makeMenuData(SELECT_ALL),
+            makeMenuData(LEADING),
+            makeMenuData(CENTER),
+            makeMenuData(TRAILING),
+            makeMenuData(JUSTIFIED),
+            makeMenuData(ABOUT_ITEM),
+            makeMenuData(DEFAULT),
+            makeMenuData(HEBREW),
+            makeMenuData(ARABIC),
+            makeMenuData(ISRAEL_NIKUD),
+            makeMenuData(THAI_KETMANEE),
+            makeMenuData(PLAIN),
+            makeMenuData(BOLD, 'b', KeyEvent.VK_B),
+            makeMenuData(ITALIC, 'i', KeyEvent.VK_I), // why doesn't this work in Swing?
+                                                      // this is a Tab in AWT!!!
+            makeMenuData(UNDERLINE, 'u', KeyEvent.VK_U),
+            makeMenuData(STRIKETHROUGH),
+            makeMenuData(SUPERSCRIPT),
+            makeMenuData(SUBSCRIPT),
+            makeMenuData(SUPERSCRIPT_DIALOG),
+            makeMenuData(SUBSCRIPT_DIALOG),
+            makeMenuData(FORECOLOR_DIALOG),
+            makeMenuData(BACKCOLOR_DIALOG),
+            makeMenuData(FONT_DIALOG),
+            makeMenuData(OTHER_DIALOG),
+            makeMenuData(DEFAULT_DIRECTION),
+            makeMenuData(LTR_DIRECTION),
+            makeMenuData(RTL_DIRECTION),
+            duplicate(OK),
+            duplicate(CANCEL),
+            duplicate(BLACK),
+            duplicate(WHITE),
+            duplicate(GREEN),
+            duplicate(BLUE),
+            duplicate(CYAN),
+            duplicate(GRAY),
+            duplicate(DARK_GRAY),
+            duplicate(LIGHT_GRAY),
+            duplicate(MAGENTA),
+            duplicate(ORANGE),
+            duplicate(PINK),
+            duplicate(RED),
+            duplicate(YELLOW),
+            duplicate(NONE),
+            duplicate(SET_SIZE_TITLE),
+            duplicate(SET_SIZE_LABEL),
+            duplicate(SET_SUPERSCRIPT_TITLE),
+            duplicate(SET_SUPERSCRIPT_LABEL),
+            duplicate(SET_SUBSCRIPT_TITLE),
+            duplicate(SET_SUBSCRIPT_LABEL),
+            duplicate(SET_FOREGROUND_TITLE),
+            duplicate(SET_FOREGROUND_LABEL),
+            duplicate(SET_BACKGROUND_TITLE),
+            duplicate(SET_BACKGROUND_LABEL),
+            duplicate(SET_FONT_TITLE),
+            duplicate(SET_FONT_LABEL),
+            duplicate(EDIT),
+            duplicate(SIZE),
+            duplicate(FONT),
+            duplicate(STYLE),
+            duplicate(FLUSH),
+            duplicate(KEYMAP),
+            duplicate(BIDI),
+            duplicate(ABOUT_MENU),
+            duplicate(ABOUT_TITLE),
+            { ABOUT_TEXT, ACTUAL_ABOUT_TEXT }
+        };
+    }
+}
diff --git a/src/com/ibm/richtext/uiimpl/resources/MenuData.java b/src/com/ibm/richtext/uiimpl/resources/MenuData.java
new file mode 100644
index 0000000..1cbf6b0
--- /dev/null
+++ b/src/com/ibm/richtext/uiimpl/resources/MenuData.java
@@ -0,0 +1,66 @@
+/*
+ * (C) Copyright IBM Corp. 1998-2004.  All Rights Reserved.
+ *
+ * The program is provided "as is" without any warranty express or
+ * implied, including the warranty of non-infringement and the implied
+ * warranties of merchantibility and fitness for a particular purpose.
+ * IBM will not be liable for any damages suffered by you as a result
+ * of using the Program. In no event will IBM be liable for any
+ * special, indirect or consequential damages or lost profits even if
+ * IBM has been advised of the possibility of their occurrence. IBM
+ * will not be liable for any third party claims against you.
+ */
+package com.ibm.richtext.uiimpl.resources;
+
+/**
+ * This class is used in resources to represent a Menu.  It is
+ * just a name and an optional shortcut key.
+ */
+public final class MenuData {
+
+    static final String COPYRIGHT =
+                "(C) Copyright IBM Corp. 1998-1999 - All Rights Reserved";
+    private String fName;
+    private boolean fHasShortcut;
+    private char fShortcut;
+    private int fKeyCode;
+
+    public MenuData(String name) {
+
+        fName = name;
+        fHasShortcut = false;
+    }
+
+    public MenuData(String name, char ch, int keyCode) {
+
+        fName = name;
+        fHasShortcut = true;
+        fShortcut = ch;
+        fKeyCode = keyCode;
+    }
+
+    public String getName() {
+
+        return fName;
+    }
+
+    public char getShortcutChar() {
+
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fShortcut;
+    }
+    
+    public int getShortcutKeyCode() {
+        if (!fHasShortcut) {
+            throw new Error("Menu doesn't have shortcut");
+        }
+        return fKeyCode;
+    }
+
+    public boolean hasShortcut() {
+
+        return fHasShortcut;
+    }
+}
\ No newline at end of file
diff --git a/unicode-license.txt b/unicode-license.txt
new file mode 100644
index 0000000..8c4d011
--- /dev/null
+++ b/unicode-license.txt
@@ -0,0 +1,48 @@
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+    Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/ . Unicode Software includes any source code
+published in the Unicode Standard or under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/.
+
+    NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
+("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
+AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU
+DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES
+OR SOFTWARE.
+
+    COPYRIGHT AND PERMISSION NOTICE
+
+    Copyright © 1991-2007 Unicode, Inc. All rights reserved. Distributed under
+the Terms of Use in http://www.unicode.org/copyright.html.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+of the Unicode data files and any associated documentation (the "Data Files") or
+Unicode software and any associated documentation (the "Software") to deal in
+the Data Files or Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files or
+Software are furnished to do so, provided that (a) the above copyright notice(s)
+and this permission notice appear with all copies of the Data Files or Software,
+(b) both the above copyright notice(s) and this permission notice appear in
+associated documentation, and (c) there is clear notice in each modified Data
+File or in the Software as well as in the documentation associated with the Data
+File(s) or Software that the data or software has been modified.
+
+    THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
+PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+SOFTWARE.
+
+    Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in these Data Files or Software without prior written authorization of the
+copyright holder.
\ No newline at end of file
